From 9688653870d5055da51d113e76d92c1cfc33691e Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Sat, 30 Nov 2024 21:50:23 -0800 Subject: [PATCH 001/509] [mojo-lang] Rename `inout` -> `mut` and `borrowed` -> `read` Per extensive discussion over on this public thread: https://github.com/modularml/mojo/issues/3623 We're moving to rename the `inout` argument convention to be called simply `mut`, and renames `borrowed` to `read` which can still be generally elided. This reduces the need to understand references for the basic conventions that many people work with, while providing a more strictly-correct and consistent model. These words are now "soft" keywords instead of "hard" keywords as well. This still maintains support for the `inout` and `borrowed` keywords, though they will eventually be removed. MODULAR_ORIG_COMMIT_REV_ID: e2b41cfb4cb8bb0b2e67ade93d32d7ef8989428e --- docs/changelog-released.md | 4 +- docs/changelog.md | 6 + examples/life/gridv1.mojo | 2 +- examples/life/gridv2.mojo | 2 +- examples/matmul.mojo | 18 +-- examples/nbody.mojo | 6 +- examples/notebooks/RayTracing.ipynb | 8 +- examples/operators/my_complex.mojo | 20 +-- .../algorithm/bench_elementwise.mojo | 2 +- stdlib/benchmarks/builtin/bench_int.mojo | 2 +- stdlib/benchmarks/builtin/bench_sort.mojo | 36 ++--- stdlib/benchmarks/collections/bench_dict.mojo | 6 +- .../benchmarks/collections/bench_string.mojo | 16 +- stdlib/benchmarks/hashlib/bench_hash.mojo | 8 +- stdlib/benchmarks/math/bench_math.mojo | 6 +- stdlib/benchmarks/utils/bench_formatter.mojo | 4 +- stdlib/benchmarks/utils/bench_memmem.mojo | 4 +- stdlib/src/base64/_b64encode.mojo | 2 +- stdlib/src/base64/base64.mojo | 2 +- stdlib/src/builtin/_format_float.mojo | 12 +- stdlib/src/builtin/_location.mojo | 2 +- stdlib/src/builtin/_pybind.mojo | 4 +- stdlib/src/builtin/_stubs.mojo | 4 +- stdlib/src/builtin/bool.mojo | 10 +- stdlib/src/builtin/builtin_list.mojo | 22 +-- stdlib/src/builtin/builtin_slice.mojo | 4 +- stdlib/src/builtin/debug_assert.mojo | 2 +- stdlib/src/builtin/dtype.mojo | 4 +- stdlib/src/builtin/error.mojo | 2 +- stdlib/src/builtin/file.mojo | 6 +- stdlib/src/builtin/file_descriptor.mojo | 4 +- stdlib/src/builtin/float_literal.mojo | 8 +- stdlib/src/builtin/format_int.mojo | 4 +- stdlib/src/builtin/int.mojo | 32 ++-- stdlib/src/builtin/int_literal.mojo | 18 +-- stdlib/src/builtin/none.mojo | 2 +- stdlib/src/builtin/object.mojo | 48 +++--- stdlib/src/builtin/range.mojo | 20 +-- stdlib/src/builtin/simd.mojo | 36 ++--- stdlib/src/builtin/string_literal.mojo | 6 +- stdlib/src/builtin/swap.mojo | 2 +- stdlib/src/builtin/tuple.mojo | 2 +- stdlib/src/builtin/uint.mojo | 28 ++-- stdlib/src/builtin/value.mojo | 2 +- stdlib/src/collections/counter.mojo | 24 +-- stdlib/src/collections/deque.mojo | 39 +++-- stdlib/src/collections/dict.mojo | 48 +++--- stdlib/src/collections/inline_array.mojo | 4 +- stdlib/src/collections/inline_list.mojo | 4 +- stdlib/src/collections/list.mojo | 40 +++-- stdlib/src/collections/optional.mojo | 6 +- stdlib/src/collections/set.mojo | 28 ++-- stdlib/src/collections/string.mojo | 20 +-- stdlib/src/collections/vector.mojo | 10 +- stdlib/src/hashlib/_ahash.mojo | 10 +- stdlib/src/hashlib/_hasher.mojo | 8 +- stdlib/src/math/math.mojo | 4 +- stdlib/src/memory/arc.mojo | 4 +- stdlib/src/memory/maybe_uninitialized.mojo | 16 +- stdlib/src/memory/owned_pointer.mojo | 8 +- stdlib/src/memory/pointer.mojo | 2 +- stdlib/src/memory/unsafe_pointer.mojo | 6 +- stdlib/src/os/atomic.mojo | 18 +-- stdlib/src/os/fstat.mojo | 4 +- stdlib/src/pathlib/path.mojo | 6 +- stdlib/src/pwd/pwd.mojo | 2 +- stdlib/src/python/_bindings.mojo | 18 +-- stdlib/src/python/_cpython.mojo | 150 +++++++++--------- stdlib/src/python/python.mojo | 20 +-- stdlib/src/python/python_object.mojo | 48 +++--- stdlib/src/random/random.mojo | 2 +- stdlib/src/sys/ffi.mojo | 2 +- stdlib/src/tempfile/tempfile.mojo | 10 +- stdlib/src/testing/testing.mojo | 2 +- stdlib/src/utils/format.mojo | 26 ++- stdlib/src/utils/index.mojo | 8 +- stdlib/src/utils/inline_string.mojo | 20 +-- stdlib/src/utils/lock.mojo | 14 +- stdlib/src/utils/span.mojo | 4 +- stdlib/src/utils/static_tuple.mojo | 4 +- stdlib/src/utils/string_slice.mojo | 10 +- stdlib/src/utils/stringref.mojo | 4 +- stdlib/src/utils/variant.mojo | 16 +- stdlib/src/utils/write.mojo | 32 ++-- stdlib/test/builtin/test_debug_assert.mojo | 2 +- stdlib/test/builtin/test_object.mojo | 2 +- stdlib/test/builtin/test_print.mojo | 4 +- stdlib/test/builtin/test_range.mojo | 2 +- stdlib/test/builtin/test_sort.mojo | 6 +- stdlib/test/hashlib/test_hasher.mojo | 18 +-- stdlib/test/python/test_ownership.mojo | 12 +- stdlib/test/python/test_python_info.mojo | 2 +- stdlib/test/python/test_python_interop.mojo | 8 +- stdlib/test/python/test_python_object.mojo | 2 +- stdlib/test/python/test_python_to_mojo.mojo | 2 +- stdlib/test/tempfile/test_tempfile.mojo | 8 +- stdlib/test/utils/test_format.mojo | 2 +- stdlib/test/utils/test_format_to_stdout.mojo | 2 +- 98 files changed, 602 insertions(+), 609 deletions(-) diff --git a/docs/changelog-released.md b/docs/changelog-released.md index 1bb87df302..5b3c84bdcf 100644 --- a/docs/changelog-released.md +++ b/docs/changelog-released.md @@ -6088,7 +6088,7 @@ busy this week. - 📢 The `__clone__` method for copying a value is now named `__copy__` to better follow Python term of art. -- 📢 The `__copy__` method now takes its self argument as a "borrowed" value, +- 📢 The `__copy__` method now takes its self argument as a "read" value, instead of taking it by reference. This makes it easier to write, works for `@register_passable` types, and exposes more optimization opportunities to the early optimizer and dataflow analysis passes. @@ -6153,7 +6153,7 @@ busy this week. Note that `@register_passable` types must use the later style. - 📢 The default argument convention is now the `borrowed` convention. A - "borrowed" argument is passed like a C++ `const&` so it doesn't need to + "read" argument is passed like a C++ `const&` so it doesn't need to invoke the copy constructor (aka the `__clone__` method) when passing a value to the function. There are two differences from C++ `const&`: diff --git a/docs/changelog.md b/docs/changelog.md index 601e9f60d5..640824629c 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -294,6 +294,12 @@ what we publish. ### 🦋 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 diff --git a/examples/life/gridv1.mojo b/examples/life/gridv1.mojo index 9b7ec2e386..b06cb51315 100644 --- a/examples/life/gridv1.mojo +++ b/examples/life/gridv1.mojo @@ -32,7 +32,7 @@ struct Grid(StringableRaising): def __getitem__(self, row: Int, col: Int) -> Int: return self.data[row][col] - def __setitem__(inout self, row: Int, col: Int, value: Int) -> None: + def __setitem__(mut self, row: Int, col: Int, value: Int) -> None: self.data[row][col] = value # ===-------------------------------------------------------------------===# diff --git a/examples/life/gridv2.mojo b/examples/life/gridv2.mojo index 574d41e314..3e43b5988a 100644 --- a/examples/life/gridv2.mojo +++ b/examples/life/gridv2.mojo @@ -71,7 +71,7 @@ struct Grid[rows: Int, cols: Int](StringableRaising): def __getitem__(self, row: Int, col: Int) -> Int8: return (self.data + row * cols + col)[] - def __setitem__(inout self, row: Int, col: Int, value: Int8) -> None: + def __setitem__(mut self, row: Int, col: Int, value: Int8) -> None: (self.data + row * cols + col)[] = value # ===-------------------------------------------------------------------===# diff --git a/examples/matmul.mojo b/examples/matmul.mojo index 1d58d68bb3..ad81185519 100644 --- a/examples/matmul.mojo +++ b/examples/matmul.mojo @@ -70,7 +70,7 @@ struct Matrix[rows: Int, cols: Int]: fn __getitem__(self, y: Int, x: Int) -> Scalar[type]: return self.load(y, x) - fn __setitem__(inout self, y: Int, x: Int, val: Scalar[type]): + fn __setitem__(mut self, y: Int, x: Int, val: Scalar[type]): self.store(y, x, val) fn load[nelts: Int = 1](self, y: Int, x: Int) -> SIMD[type, nelts]: @@ -100,7 +100,7 @@ def run_matmul_numpy() -> Float64: return gflops -fn matmul_naive(inout C: Matrix, A: Matrix, B: Matrix): +fn matmul_naive(mut C: Matrix, A: Matrix, B: Matrix): for m in range(C.rows): for k in range(A.cols): for n in range(C.cols): @@ -108,7 +108,7 @@ fn matmul_naive(inout C: Matrix, A: Matrix, B: Matrix): # Using stdlib vectorize function -fn matmul_vectorized(inout C: Matrix, A: Matrix, B: Matrix): +fn matmul_vectorized(mut C: Matrix, A: Matrix, B: Matrix): for m in range(C.rows): for k in range(A.cols): @@ -123,7 +123,7 @@ fn matmul_vectorized(inout C: Matrix, A: Matrix, B: Matrix): # Parallelize the code by using the builtin parallelize function # num_workers is the number of worker threads to use in parallalize -fn matmul_parallelized(inout C: Matrix, A: Matrix, B: Matrix): +fn matmul_parallelized(mut C: Matrix, A: Matrix, B: Matrix): var num_workers = C.rows @parameter @@ -150,7 +150,7 @@ fn tile[tiled_fn: Tile2DFunc, tile_x: Int, tile_y: Int](end_x: Int, end_y: Int): # Use the above tile function to perform tiled matmul # Also parallelize with num_workers threads -fn matmul_tiled(inout C: Matrix, A: Matrix, B: Matrix): +fn matmul_tiled(mut C: Matrix, A: Matrix, B: Matrix): var num_workers = C.rows @parameter @@ -177,7 +177,7 @@ fn matmul_tiled(inout C: Matrix, A: Matrix, B: Matrix): # Unroll the vectorized loop by a constant factor # Also parallelize with num_workers threads -fn matmul_unrolled[mode: Int](inout C: Matrix, A: Matrix, B: Matrix): +fn matmul_unrolled[mode: Int](mut C: Matrix, A: Matrix, B: Matrix): var num_workers: Int if mode == 1: num_workers = info.num_physical_cores() @@ -232,7 +232,7 @@ fn tile_parallel[ # a global memory location, which can thrash the cache. # Also partially unroll the loop over the reduction dimension (K) # and reorder the reduction inner loop with the row iteration inner loop -fn matmul_reordered(inout C: Matrix, A: Matrix, B: Matrix): +fn matmul_reordered(mut C: Matrix, A: Matrix, B: Matrix): alias tile_m = 32 alias tile_n = 32 alias tile_k = max(4, K // 256) @@ -282,7 +282,7 @@ fn matmul_reordered(inout C: Matrix, A: Matrix, B: Matrix): @always_inline fn bench[ - func: fn (inout Matrix, Matrix, Matrix) -> None, name: StringLiteral + func: fn (mut Matrix, Matrix, Matrix) -> None, name: StringLiteral ](base_gflops: Float64, np_gflops: Float64) raises: var A = Matrix[M, K].rand() var B = Matrix[K, N].rand() @@ -313,7 +313,7 @@ fn bench[ @always_inline fn test_matrix_equal[ - func: fn (inout Matrix, Matrix, Matrix) -> None + func: fn (mut Matrix, Matrix, Matrix) -> None ](C: Matrix, A: Matrix, B: Matrix) raises -> Bool: """Runs a matmul function on A and B and tests the result for equality with C on every element. diff --git a/examples/nbody.mojo b/examples/nbody.mojo index 694f81be68..eedb4150fb 100644 --- a/examples/nbody.mojo +++ b/examples/nbody.mojo @@ -35,7 +35,7 @@ struct Planet: var mass: Float64 fn __init__( - inout self, + mut self, pos: SIMD[DType.float64, 4], velocity: SIMD[DType.float64, 4], mass: Float64, @@ -119,7 +119,7 @@ alias INITIAL_SYSTEM = List[Planet](Sun, Jupiter, Saturn, Uranus, Neptune) @always_inline -fn offset_momentum(inout bodies: List[Planet]): +fn offset_momentum(mut bodies: List[Planet]): var p = SIMD[DType.float64, 4]() for body in bodies: @@ -132,7 +132,7 @@ fn offset_momentum(inout bodies: List[Planet]): @always_inline -fn advance(inout bodies: List[Planet], dt: Float64): +fn advance(mut bodies: List[Planet], dt: Float64): for i in range(len(INITIAL_SYSTEM)): for j in range(len(INITIAL_SYSTEM) - i - 1): var body_i = bodies[i] diff --git a/examples/notebooks/RayTracing.ipynb b/examples/notebooks/RayTracing.ipynb index 1ce972b6b4..66a768da6e 100644 --- a/examples/notebooks/RayTracing.ipynb +++ b/examples/notebooks/RayTracing.ipynb @@ -422,7 +422,7 @@ " var material: Material\n", "\n", " @always_inline\n", - " fn intersects(self, orig: Vec3f, dir: Vec3f, inout dist: Float32) -> Bool:\n", + " fn intersects(self, orig: Vec3f, dir: Vec3f, mut dist: Float32) -> Bool:\n", " \"\"\"This method returns True if a given ray intersects this sphere.\n", " And if it does, it writes in the `dist` parameter the distance to the\n", " origin of the ray.\n", @@ -698,9 +698,9 @@ " orig: Vec3f,\n", " dir: Vec3f,\n", " spheres: List[Sphere],\n", - " inout material: Material,\n", - " inout hit: Vec3f,\n", - " inout N: Vec3f,\n", + " mut material: Material,\n", + " mut hit: Vec3f,\n", + " mut N: Vec3f,\n", ") -> Bool:\n", " var spheres_dist = inf[DType.float32]()\n", "\n", diff --git a/examples/operators/my_complex.mojo b/examples/operators/my_complex.mojo index f13462dc26..bd4d03f275 100644 --- a/examples/operators/my_complex.mojo +++ b/examples/operators/my_complex.mojo @@ -55,7 +55,7 @@ struct Complex( fn __str__(self) -> String: return String.write(self) - fn write_to[W: Writer](self, inout writer: W): + fn write_to[W: Writer](self, mut writer: W): writer.write("(", self.re) if self.im < 0: writer.write(" - ", -self.im) @@ -78,7 +78,7 @@ struct Complex( else: raise "index out of bounds" - fn __setitem__(inout self, idx: Int, value: Float64) raises: + fn __setitem__(mut self, idx: Int, value: Float64) raises: if idx == 0: self.re = value elif idx == 1: @@ -109,11 +109,11 @@ struct Complex( def __radd__(self, lhs: Float64) -> Self: return Self(self.re + lhs, self.im) - def __iadd__(inout self, rhs: Self): + def __iadd__(mut self, rhs: Self): self.re += rhs.re self.im += rhs.im - def __iadd__(inout self, rhs: Float64): + def __iadd__(mut self, rhs: Float64): self.re += rhs def __sub__(self, rhs: Self) -> Self: @@ -125,11 +125,11 @@ struct Complex( def __rsub__(self, lhs: Float64) -> Self: return Self(lhs - self.re, -self.im) - def __isub__(inout self, rhs: Self): + def __isub__(mut self, rhs: Self): self.re -= rhs.re self.im -= rhs.im - def __isub__(inout self, rhs: Float64): + def __isub__(mut self, rhs: Float64): self.re -= rhs def __mul__(self, rhs: Self) -> Self: @@ -144,13 +144,13 @@ struct Complex( def __rmul__(self, lhs: Float64) -> Self: return Self(lhs * self.re, lhs * self.im) - def __imul__(inout self, rhs: Self): + def __imul__(mut self, rhs: Self): new_re = self.re * rhs.re - self.im * rhs.im new_im = self.re * rhs.im + self.im * rhs.re self.re = new_re self.im = new_im - def __imul__(inout self, rhs: Float64): + def __imul__(mut self, rhs: Float64): self.re *= rhs self.im *= rhs @@ -168,14 +168,14 @@ struct Complex( denom = self.squared_norm() return Self((lhs * self.re) / denom, (-lhs * self.im) / denom) - def __itruediv__(inout self, rhs: Self): + def __itruediv__(mut self, rhs: Self): denom = rhs.squared_norm() new_re = (self.re * rhs.re + self.im * rhs.im) / denom new_im = (self.im * rhs.re - self.re * rhs.im) / denom self.re = new_re self.im = new_im - def __itruediv__(inout self, rhs: Float64): + def __itruediv__(mut self, rhs: Float64): self.re /= rhs self.im /= rhs diff --git a/stdlib/benchmarks/algorithm/bench_elementwise.mojo b/stdlib/benchmarks/algorithm/bench_elementwise.mojo index 34130a2c37..322b66ad9c 100644 --- a/stdlib/benchmarks/algorithm/bench_elementwise.mojo +++ b/stdlib/benchmarks/algorithm/bench_elementwise.mojo @@ -27,7 +27,7 @@ from utils.index import Index, IndexList # Benchmark elementwise # ===----------------------------------------------------------------------===# @parameter -fn bench_elementwise[n: Int](inout b: Bencher) raises: +fn bench_elementwise[n: Int](mut b: Bencher) raises: var vector = Buffer[DType.index, n].stack_allocation() for i in range(len(vector)): diff --git a/stdlib/benchmarks/builtin/bench_int.mojo b/stdlib/benchmarks/builtin/bench_int.mojo index 5a469936f8..b65cd5abaf 100644 --- a/stdlib/benchmarks/builtin/bench_int.mojo +++ b/stdlib/benchmarks/builtin/bench_int.mojo @@ -21,7 +21,7 @@ from benchmark import Bench, BenchConfig, Bencher, BenchId # Benchmarks # ===----------------------------------------------------------------------===# @parameter -fn bench_stringify_small_integers(inout b: Bencher) raises: +fn bench_stringify_small_integers(mut b: Bencher) raises: @always_inline @parameter fn call_fn(): diff --git a/stdlib/benchmarks/builtin/bench_sort.mojo b/stdlib/benchmarks/builtin/bench_sort.mojo index 0d482a72cf..0872012f78 100644 --- a/stdlib/benchmarks/builtin/bench_sort.mojo +++ b/stdlib/benchmarks/builtin/bench_sort.mojo @@ -34,7 +34,7 @@ from stdlib.builtin.sort import ( @always_inline fn randomize_list[ dt: DType -](inout list: List[Scalar[dt]], size: Int, max: Scalar[dt] = Scalar[dt].MAX): +](mut list: List[Scalar[dt]], size: Int, max: Scalar[dt] = Scalar[dt].MAX): @parameter if dt.is_integral(): randint(list.data, size, 0, int(max)) @@ -46,7 +46,7 @@ fn randomize_list[ @always_inline -fn insertion_sort[type: DType](inout list: List[Scalar[type]]): +fn insertion_sort[type: DType](mut list: List[Scalar[type]]): @parameter fn _less_than( lhs: _SortWrapper[Scalar[type]], rhs: _SortWrapper[Scalar[type]] @@ -57,7 +57,7 @@ fn insertion_sort[type: DType](inout list: List[Scalar[type]]): @always_inline -fn small_sort[size: Int, type: DType](inout list: List[Scalar[type]]): +fn small_sort[size: Int, type: DType](mut list: List[Scalar[type]]): @parameter fn _less_than( lhs: _SortWrapper[Scalar[type]], rhs: _SortWrapper[Scalar[type]] @@ -68,7 +68,7 @@ fn small_sort[size: Int, type: DType](inout list: List[Scalar[type]]): @always_inline -fn heap_sort[type: DType](inout list: List[Scalar[type]]): +fn heap_sort[type: DType](mut list: List[Scalar[type]]): @parameter fn _less_than( lhs: _SortWrapper[Scalar[type]], rhs: _SortWrapper[Scalar[type]] @@ -83,14 +83,14 @@ fn heap_sort[type: DType](inout list: List[Scalar[type]]): # ===----------------------------------------------------------------------===# -fn bench_tiny_list_sort[type: DType](inout m: Bench) raises: +fn bench_tiny_list_sort[type: DType](mut m: Bench) raises: alias small_list_size = 5 @parameter for count in range(2, small_list_size + 1): @parameter - fn bench_sort_list(inout b: Bencher) raises: + fn bench_sort_list(mut b: Bencher) raises: seed(1) var ptr = UnsafePointer[Scalar[type]].alloc(count) var list = List[Scalar[type]](ptr=ptr, length=count, capacity=count) @@ -109,7 +109,7 @@ fn bench_tiny_list_sort[type: DType](inout m: Bench) raises: _ = list^ @parameter - fn bench_small_sort(inout b: Bencher) raises: + fn bench_small_sort(mut b: Bencher) raises: seed(1) var ptr = UnsafePointer[Scalar[type]].alloc(count) var list = List[Scalar[type]](ptr=ptr, length=count, capacity=count) @@ -128,7 +128,7 @@ fn bench_tiny_list_sort[type: DType](inout m: Bench) raises: _ = list^ @parameter - fn bench_insertion_sort(inout b: Bencher) raises: + fn bench_insertion_sort(mut b: Bencher) raises: seed(1) var ptr = UnsafePointer[Scalar[type]].alloc(count) var list = List[Scalar[type]](ptr=ptr, length=count, capacity=count) @@ -162,9 +162,9 @@ fn bench_tiny_list_sort[type: DType](inout m: Bench) raises: # ===----------------------------------------------------------------------===# -fn bench_small_list_sort[type: DType](inout m: Bench, count: Int) raises: +fn bench_small_list_sort[type: DType](mut m: Bench, count: Int) raises: @parameter - fn bench_sort_list(inout b: Bencher) raises: + fn bench_sort_list(mut b: Bencher) raises: seed(1) var ptr = UnsafePointer[Scalar[type]].alloc(count) var list = List[Scalar[type]](ptr=ptr, length=count, capacity=count) @@ -183,7 +183,7 @@ fn bench_small_list_sort[type: DType](inout m: Bench, count: Int) raises: _ = list^ @parameter - fn bench_insertion_sort(inout b: Bencher) raises: + fn bench_insertion_sort(mut b: Bencher) raises: seed(1) var ptr = UnsafePointer[Scalar[type]].alloc(count) var list = List[Scalar[type]](ptr=ptr, length=count, capacity=count) @@ -214,9 +214,9 @@ fn bench_small_list_sort[type: DType](inout m: Bench, count: Int) raises: # ===----------------------------------------------------------------------===# -fn bench_large_list_sort[type: DType](inout m: Bench, count: Int) raises: +fn bench_large_list_sort[type: DType](mut m: Bench, count: Int) raises: @parameter - fn bench_sort_list(inout b: Bencher) raises: + fn bench_sort_list(mut b: Bencher) raises: seed(1) var ptr = UnsafePointer[Scalar[type]].alloc(count) var list = List[Scalar[type]](ptr=ptr, length=count, capacity=count) @@ -235,7 +235,7 @@ fn bench_large_list_sort[type: DType](inout m: Bench, count: Int) raises: _ = list^ @parameter - fn bench_heap_sort(inout b: Bencher) raises: + fn bench_heap_sort(mut b: Bencher) raises: seed(1) var ptr = UnsafePointer[Scalar[type]].alloc(count) var list = List[Scalar[type]](ptr=ptr, length=count, capacity=count) @@ -267,11 +267,9 @@ fn bench_large_list_sort[type: DType](inout m: Bench, count: Int) raises: # ===----------------------------------------------------------------------===# -fn bench_low_cardinality_list_sort( - inout m: Bench, count: Int, delta: Int -) raises: +fn bench_low_cardinality_list_sort(mut m: Bench, count: Int, delta: Int) raises: @parameter - fn bench_sort_list(inout b: Bencher) raises: + fn bench_sort_list(mut b: Bencher) raises: seed(1) var ptr = UnsafePointer[UInt8].alloc(count) var list = List[UInt8](ptr=ptr, length=count, capacity=count) @@ -290,7 +288,7 @@ fn bench_low_cardinality_list_sort( _ = list^ @parameter - fn bench_heap_sort(inout b: Bencher) raises: + fn bench_heap_sort(mut b: Bencher) raises: seed(1) var ptr = UnsafePointer[UInt8].alloc(count) var list = List[UInt8](ptr=ptr, length=count, capacity=count) diff --git a/stdlib/benchmarks/collections/bench_dict.mojo b/stdlib/benchmarks/collections/bench_dict.mojo index c88c633579..b50d97a98d 100644 --- a/stdlib/benchmarks/collections/bench_dict.mojo +++ b/stdlib/benchmarks/collections/bench_dict.mojo @@ -38,7 +38,7 @@ fn make_dict[size: Int]() -> Dict[Int, Int]: # Benchmark Dict init # ===----------------------------------------------------------------------===# @parameter -fn bench_dict_init(inout b: Bencher) raises: +fn bench_dict_init(mut b: Bencher) raises: @always_inline @parameter fn call_fn(): @@ -54,7 +54,7 @@ fn bench_dict_init(inout b: Bencher) raises: # Benchmark Dict Insert # ===----------------------------------------------------------------------===# @parameter -fn bench_dict_insert[size: Int](inout b: Bencher) raises: +fn bench_dict_insert[size: Int](mut b: Bencher) raises: """Insert 100 new items.""" var items = make_dict[size]() @@ -72,7 +72,7 @@ fn bench_dict_insert[size: Int](inout b: Bencher) raises: # Benchmark Dict Lookup # ===----------------------------------------------------------------------===# @parameter -fn bench_dict_lookup[size: Int](inout b: Bencher) raises: +fn bench_dict_lookup[size: Int](mut b: Bencher) raises: """Lookup 100 items.""" var items = make_dict[size]() var closest_divisor = ceil(100 / size) diff --git a/stdlib/benchmarks/collections/bench_string.mojo b/stdlib/benchmarks/collections/bench_string.mojo index 7a46242714..85ee5050ee 100644 --- a/stdlib/benchmarks/collections/bench_string.mojo +++ b/stdlib/benchmarks/collections/bench_string.mojo @@ -65,7 +65,7 @@ fn make_string[ # Benchmark string init # ===----------------------------------------------------------------------===# @parameter -fn bench_string_init(inout b: Bencher) raises: +fn bench_string_init(mut b: Bencher) raises: @always_inline @parameter fn call_fn(): @@ -84,7 +84,7 @@ fn bench_string_count[ length: UInt = 0, filename: StringLiteral = "UN_charter_EN", sequence: StringLiteral = "a", -](inout b: Bencher) raises: +](mut b: Bencher) raises: var items = make_string[length](filename + ".txt") @always_inline @@ -105,7 +105,7 @@ fn bench_string_split[ length: UInt = 0, filename: StringLiteral = "UN_charter_EN", sequence: Optional[StringLiteral] = None, -](inout b: Bencher) raises: +](mut b: Bencher) raises: var items = make_string[length](filename + ".txt") @always_inline @@ -130,7 +130,7 @@ fn bench_string_split[ @parameter fn bench_string_splitlines[ length: UInt = 0, filename: StringLiteral = "UN_charter_EN" -](inout b: Bencher) raises: +](mut b: Bencher) raises: var items = make_string[length](filename + ".txt") @always_inline @@ -149,7 +149,7 @@ fn bench_string_splitlines[ @parameter fn bench_string_lower[ length: UInt = 0, filename: StringLiteral = "UN_charter_EN" -](inout b: Bencher) raises: +](mut b: Bencher) raises: var items = make_string[length](filename + ".txt") @always_inline @@ -168,7 +168,7 @@ fn bench_string_lower[ @parameter fn bench_string_upper[ length: UInt = 0, filename: StringLiteral = "UN_charter_EN" -](inout b: Bencher) raises: +](mut b: Bencher) raises: var items = make_string[length](filename + ".txt") @always_inline @@ -190,7 +190,7 @@ fn bench_string_replace[ filename: StringLiteral = "UN_charter_EN", old: StringLiteral = "a", new: StringLiteral = "A", -](inout b: Bencher) raises: +](mut b: Bencher) raises: var items = make_string[length](filename + ".txt") @always_inline @@ -209,7 +209,7 @@ fn bench_string_replace[ @parameter fn bench_string_is_valid_utf8[ length: UInt = 0, filename: StringLiteral = "UN_charter_EN" -](inout b: Bencher) raises: +](mut b: Bencher) raises: var items = make_string[length](filename + ".html") @always_inline diff --git a/stdlib/benchmarks/hashlib/bench_hash.mojo b/stdlib/benchmarks/hashlib/bench_hash.mojo index 6ac5e62013..0c6873f109 100644 --- a/stdlib/benchmarks/hashlib/bench_hash.mojo +++ b/stdlib/benchmarks/hashlib/bench_hash.mojo @@ -599,7 +599,7 @@ fn gen_word_pairs[words: String = words_en]() -> List[String]: # Benchmarks # ===----------------------------------------------------------------------===# @parameter -fn bench_small_keys[s: String](inout b: Bencher) raises: +fn bench_small_keys[s: String](mut b: Bencher) raises: var words = gen_word_pairs[s]() @always_inline @@ -613,7 +613,7 @@ fn bench_small_keys[s: String](inout b: Bencher) raises: @parameter -fn bench_small_keys_new_hash_function[s: String](inout b: Bencher) raises: +fn bench_small_keys_new_hash_function[s: String](mut b: Bencher) raises: var words = gen_word_pairs[s]() @always_inline @@ -627,7 +627,7 @@ fn bench_small_keys_new_hash_function[s: String](inout b: Bencher) raises: @parameter -fn bench_long_key[s: String](inout b: Bencher) raises: +fn bench_long_key[s: String](mut b: Bencher) raises: @always_inline @parameter fn call_fn(): @@ -638,7 +638,7 @@ fn bench_long_key[s: String](inout b: Bencher) raises: @parameter -fn bench_long_key_new_hash_function[s: String](inout b: Bencher) raises: +fn bench_long_key_new_hash_function[s: String](mut b: Bencher) raises: @always_inline @parameter fn call_fn(): diff --git a/stdlib/benchmarks/math/bench_math.mojo b/stdlib/benchmarks/math/bench_math.mojo index 1ba4175a74..b7d4c1ae43 100644 --- a/stdlib/benchmarks/math/bench_math.mojo +++ b/stdlib/benchmarks/math/bench_math.mojo @@ -62,7 +62,7 @@ var int_inputs = make_int_inputs(0, 10_000_000, 1_000_000) @parameter fn bench_math[ math_f1p: fn[type: DType, size: Int] (SIMD[type, size]) -> SIMD[type, size] -](inout b: Bencher) raises: +](mut b: Bencher) raises: @always_inline @parameter fn call_fn() raises: @@ -81,7 +81,7 @@ fn bench_math3[ math_f3p: fn[type: DType, size: Int] ( SIMD[type, size], SIMD[type, size], SIMD[type, size] ) -> SIMD[type, size] -](inout b: Bencher) raises: +](mut b: Bencher) raises: @always_inline @parameter fn call_fn() raises: @@ -96,7 +96,7 @@ fn bench_math3[ # Benchmark lcm/gcd # ===----------------------------------------------------------------------===# @parameter -fn bench_math2[math_f2p: fn (Int, Int, /) -> Int](inout b: Bencher) raises: +fn bench_math2[math_f2p: fn (Int, Int, /) -> Int](mut b: Bencher) raises: @always_inline @parameter fn call_fn() raises: diff --git a/stdlib/benchmarks/utils/bench_formatter.mojo b/stdlib/benchmarks/utils/bench_formatter.mojo index 3d22aa92a8..818a0a2cff 100644 --- a/stdlib/benchmarks/utils/bench_formatter.mojo +++ b/stdlib/benchmarks/utils/bench_formatter.mojo @@ -31,7 +31,7 @@ from utils.stringref import _align_down, _memchr, _memmem # Benchmarks # ===----------------------------------------------------------------------===# @parameter -fn bench_writer_int[n: Int](inout b: Bencher) raises: +fn bench_writer_int[n: Int](mut b: Bencher) raises: @always_inline @parameter fn call_fn(): @@ -43,7 +43,7 @@ fn bench_writer_int[n: Int](inout b: Bencher) raises: @parameter -fn bench_writer_simd[n: Int](inout b: Bencher) raises: +fn bench_writer_simd[n: Int](mut b: Bencher) raises: @always_inline @parameter fn call_fn(): diff --git a/stdlib/benchmarks/utils/bench_memmem.mojo b/stdlib/benchmarks/utils/bench_memmem.mojo index 9cca51fc83..97925b2884 100644 --- a/stdlib/benchmarks/utils/bench_memmem.mojo +++ b/stdlib/benchmarks/utils/bench_memmem.mojo @@ -189,7 +189,7 @@ fn _memmem_baseline[ # Benchmarks # ===----------------------------------------------------------------------===# @parameter -fn bench_find_baseline(inout b: Bencher) raises: +fn bench_find_baseline(mut b: Bencher) raises: @always_inline @parameter fn call_fn(): @@ -204,7 +204,7 @@ fn bench_find_baseline(inout b: Bencher) raises: @parameter -fn bench_find_optimized(inout b: Bencher) raises: +fn bench_find_optimized(mut b: Bencher) raises: @always_inline @parameter fn call_fn(): diff --git a/stdlib/src/base64/_b64encode.mojo b/stdlib/src/base64/_b64encode.mojo index f2179b88d0..74b8c31501 100644 --- a/stdlib/src/base64/_b64encode.mojo +++ b/stdlib/src/base64/_b64encode.mojo @@ -213,7 +213,7 @@ fn store_incomplete_simd[ # TODO: Use Span instead of List as input when Span is easier to use @no_inline fn b64encode_with_buffers( - input_bytes: List[UInt8, _], inout result: List[UInt8, _] + input_bytes: List[UInt8, _], mut result: List[UInt8, _] ): alias simd_width = sys.simdbytewidth() alias input_simd_width = simd_width * 3 // 4 diff --git a/stdlib/src/base64/base64.mojo b/stdlib/src/base64/base64.mojo index 0787b01ff2..d9a3f7f71b 100644 --- a/stdlib/src/base64/base64.mojo +++ b/stdlib/src/base64/base64.mojo @@ -65,7 +65,7 @@ fn _ascii_to_value(char: String) -> Int: # TODO: Use Span instead of List as input when Span is easier to use -fn b64encode(input_bytes: List[UInt8, _], inout result: List[UInt8, _]): +fn b64encode(input_bytes: List[UInt8, _], mut result: List[UInt8, _]): """Performs base64 encoding on the input string. Args: diff --git a/stdlib/src/builtin/_format_float.mojo b/stdlib/src/builtin/_format_float.mojo index 7101144eca..b46e9ce306 100644 --- a/stdlib/src/builtin/_format_float.mojo +++ b/stdlib/src/builtin/_format_float.mojo @@ -40,7 +40,7 @@ struct _UInt128: var high: UInt64 var low: UInt64 - fn __iadd__(inout self, n: UInt64): + fn __iadd__(mut self, n: UInt64): var sum = (self.low + n) & UInt64.MAX self.high += 1 if sum < self.low else 0 self.low = sum @@ -89,9 +89,7 @@ struct FP[type: DType, CarrierDType: DType = FPUtils[type].uint_type]: alias small_divisor = pow(10, Self.kappa) -fn _write_float[ - W: Writer, type: DType, // -](inout writer: W, value: Scalar[type]): +fn _write_float[W: Writer, type: DType, //](mut writer: W, value: Scalar[type]): """Write a SIMD float type into a Writer, using the dragonbox algorithm for perfect roundtrip, shortest representable format, and high performance. Paper: https://github.com/jk-jeon/dragonbox/blob/master/other_files/Dragonbox.pdf @@ -228,7 +226,7 @@ fn _write_float[ fn _to_decimal[ CarrierDType: DType, //, type: DType -](inout sig: Scalar[CarrierDType], inout exp: Int): +](mut sig: Scalar[CarrierDType], mut exp: Int): """Transform the raw binary significand to decimal significand, and biased binary exponent into a decimal power of 10 exponent. """ @@ -500,7 +498,7 @@ fn _umul128[ fn _remove_trailing_zeros[ CarrierDType: DType -](inout sig: Scalar[CarrierDType], inout exp: Int): +](mut sig: Scalar[CarrierDType], mut exp: Int): """Fastest alg for removing trailing zeroes: https://github.com/jk-jeon/rtz_benchmark. """ @@ -629,7 +627,7 @@ fn _check_divisibility_and_divide_by_pow10[ CarrierDType: DType, //, carrier_bits: Int, divide_magic_number: StaticTuple[UInt32, 2], -](inout n: Scalar[CarrierDType], N: Int) -> Bool: +](mut n: Scalar[CarrierDType], N: Int) -> Bool: # Make sure the computation for max_n does not overflow. debug_assert(N + 1 <= _floor_log10_pow2(carrier_bits)) diff --git a/stdlib/src/builtin/_location.mojo b/stdlib/src/builtin/_location.mojo index 2816204b62..463cba7b08 100644 --- a/stdlib/src/builtin/_location.mojo +++ b/stdlib/src/builtin/_location.mojo @@ -42,7 +42,7 @@ struct _SourceLocation(Writable, Stringable): """ return "At " + str(self) + ": " + str(msg) - fn write_to[W: Writer](self, inout writer: W): + fn write_to[W: Writer](self, mut writer: W): """ Formats the source location to the provided Writer. diff --git a/stdlib/src/builtin/_pybind.mojo b/stdlib/src/builtin/_pybind.mojo index fd2613961f..24b0fdc619 100644 --- a/stdlib/src/builtin/_pybind.mojo +++ b/stdlib/src/builtin/_pybind.mojo @@ -76,7 +76,7 @@ fn pointer_bitcast[ fn gen_pytype_wrapper[ T: Pythonable, name: StringLiteral, -](inout module: PythonObject) raises: +](mut module: PythonObject) raises: # TODO(MOCO-1301): Add support for member method generation. # TODO(MOCO-1302): Add support for generating member field as computed properties. # TODO(MOCO-1307): Add support for constructor generation. @@ -99,7 +99,7 @@ fn add_wrapper_to_module[ PythonObject, TypedPythonObject["Tuple"] ) raises -> PythonObject, func_name: StringLiteral, -](inout module_obj: PythonObject) raises: +](mut module_obj: PythonObject) raises: var module = TypedPythonObject["Module"](unsafe_unchecked_from=module_obj) Python.add_functions( module, diff --git a/stdlib/src/builtin/_stubs.mojo b/stdlib/src/builtin/_stubs.mojo index 92e661dc00..c116d52408 100644 --- a/stdlib/src/builtin/_stubs.mojo +++ b/stdlib/src/builtin/_stubs.mojo @@ -29,12 +29,12 @@ struct __MLIRType[T: AnyTrivialRegType](Movable, Copyable): trait _IntNext(Copyable): - fn __next__(inout self) -> Int: + fn __next__(mut self) -> Int: ... trait _UIntNext(Copyable): - fn __next__(inout self) -> UInt: + fn __next__(mut self) -> UInt: ... diff --git a/stdlib/src/builtin/bool.mojo b/stdlib/src/builtin/bool.mojo index a877d384ac..e48f1c9f5a 100644 --- a/stdlib/src/builtin/bool.mojo +++ b/stdlib/src/builtin/bool.mojo @@ -155,7 +155,7 @@ struct Bool( @always_inline("nodebug") @implicit - fn __init__[T: ImplicitlyBoolable, //](inout self, value: T): + fn __init__[T: ImplicitlyBoolable, //](mut self, value: T): """Convert an ImplicitlyBoolable value to a Bool. Parameters: @@ -226,7 +226,7 @@ struct Bool( return String.write(self) @no_inline - fn write_to[W: Writer](self, inout writer: W): + fn write_to[W: Writer](self, mut writer: W): """ Formats this boolean to the provided Writer. @@ -404,7 +404,7 @@ struct Bool( return __mlir_op.`pop.and`(self.value, rhs.value) @always_inline("nodebug") - fn __iand__(inout self, rhs: Bool): + fn __iand__(mut self, rhs: Bool): """Computes `self & rhs` and store the result in `self`. Args: @@ -440,7 +440,7 @@ struct Bool( return __mlir_op.`pop.or`(self.value, rhs.value) @always_inline("nodebug") - fn __ior__(inout self, rhs: Bool): + fn __ior__(mut self, rhs: Bool): """Computes `self | rhs` and store the result in `self`. Args: @@ -476,7 +476,7 @@ struct Bool( return __mlir_op.`pop.xor`(self.value, rhs.value) @always_inline("nodebug") - fn __ixor__(inout self, rhs: Bool): + fn __ixor__(mut self, rhs: Bool): """Computes `self ^ rhs` and stores the result in `self`. Args: diff --git a/stdlib/src/builtin/builtin_list.mojo b/stdlib/src/builtin/builtin_list.mojo index c50a2006a5..0272fbc2d6 100644 --- a/stdlib/src/builtin/builtin_list.mojo +++ b/stdlib/src/builtin/builtin_list.mojo @@ -135,7 +135,7 @@ struct _VariadicListIter[type: AnyTrivialRegType]: var index: Int var src: VariadicList[type] - fn __next__(inout self) -> type: + fn __next__(mut self) -> type: self.index += 1 return self.src[self.index - 1] @@ -239,12 +239,12 @@ struct _VariadicListMemIter[ var src: Pointer[Self.variadic_list_type, list_origin] fn __init__( - inout self, index: Int, ref [list_origin]list: Self.variadic_list_type + mut self, index: Int, ref [list_origin]list: Self.variadic_list_type ): self.index = index self.src = Pointer.address_of(list) - fn __next__(inout self) -> Self.variadic_list_type.reference_type: + fn __next__(mut self) -> Self.variadic_list_type.reference_type: self.index += 1 # TODO: Need to make this return a dereferenced reference, not a # reference that must be deref'd by the user. @@ -303,7 +303,7 @@ struct VariadicListMem[ Parameters: elt_is_mutable: True if the elements of the list are mutable for an - inout or owned argument. + mut or owned argument. element_type: The type of the elements in the list. origin: The reference origin of the underlying elements. """ @@ -326,7 +326,7 @@ struct VariadicListMem[ # Life cycle methods # ===-------------------------------------------------------------------===# - # Provide support for borrowed variadic arguments. + # Provide support for read-only variadic arguments. @doc_private @always_inline @implicit @@ -339,9 +339,9 @@ struct VariadicListMem[ self.value = value self._is_owned = False - # Provide support for variadics of *inout* arguments. The reference will + # Provide support for variadics of *mut* arguments. The reference will # automatically be inferred to be mutable, and the !kgen.variadic will have - # convention=inout. + # convention=mut. alias _inout_variadic_type = __mlir_type[ `!kgen.variadic<`, Self._mlir_ref_type, `, inout>` ] @@ -489,7 +489,7 @@ struct VariadicPack[ Parameters: elt_is_mutable: True if the elements of the list are mutable for an - inout or owned argument pack. + mut or owned argument pack. origin: The reference origin of the underlying elements. element_trait: The trait that each element of the pack conforms to. element_types: The list of types held by the argument pack. @@ -519,7 +519,7 @@ struct VariadicPack[ Args: value: The argument to construct the pack with. - is_owned: Whether this is an 'owned' pack or 'inout'/'borrowed'. + is_owned: Whether this is an 'owned' pack or 'mut'/'read-only'. """ self._value = value self._is_owned = is_owned @@ -602,7 +602,7 @@ struct VariadicPack[ """Apply a function to each element of the pack in order. This applies the specified function (which must be parametric on the element type) to each element of the pack, from the first element to the last, passing - in each element as a borrowed argument. + in each element as a read-only argument. Parameters: func: The function to apply to each element. @@ -619,7 +619,7 @@ struct VariadicPack[ """Apply a function to each element of the pack in order. This applies the specified function (which must be parametric on the element type) to each element of the pack, from the first element to the last, passing - in each element as a borrowed argument. + in each element as a read-only argument. Parameters: func: The function to apply to each element. diff --git a/stdlib/src/builtin/builtin_slice.mojo b/stdlib/src/builtin/builtin_slice.mojo index cc5a6d2f1a..0d0fe96750 100644 --- a/stdlib/src/builtin/builtin_slice.mojo +++ b/stdlib/src/builtin/builtin_slice.mojo @@ -66,7 +66,7 @@ struct Slice( @always_inline fn __init__( - inout self, + mut self, start: Optional[Int], end: Optional[Int], step: Optional[Int], @@ -115,7 +115,7 @@ struct Slice( return self.__str__() @no_inline - fn write_to[W: Writer](self, inout writer: W): + fn write_to[W: Writer](self, mut writer: W): """Write Slice string representation to a `Writer`. Parameters: diff --git a/stdlib/src/builtin/debug_assert.mojo b/stdlib/src/builtin/debug_assert.mojo index 25d3d8b4e5..4d0f1bb23a 100644 --- a/stdlib/src/builtin/debug_assert.mojo +++ b/stdlib/src/builtin/debug_assert.mojo @@ -308,7 +308,7 @@ struct _ThreadContext(Writable): self.thread_y = _get_id["thread", "y"]() self.thread_z = _get_id["thread", "z"]() - fn write_to[W: Writer](self, inout writer: W): + fn write_to[W: Writer](self, mut writer: W): writer.write( "block: [", self.block_x, diff --git a/stdlib/src/builtin/dtype.mojo b/stdlib/src/builtin/dtype.mojo index acdd3eba30..1d1c37d16f 100644 --- a/stdlib/src/builtin/dtype.mojo +++ b/stdlib/src/builtin/dtype.mojo @@ -176,7 +176,7 @@ struct DType( return String.write(self) @no_inline - fn write_to[W: Writer](self, inout writer: W): + fn write_to[W: Writer](self, mut writer: W): """ Formats this dtype to the provided Writer. @@ -327,7 +327,7 @@ struct DType( """ return hash(UInt8(self._as_i8())) - fn __hash__[H: _Hasher](self, inout hasher: H): + fn __hash__[H: _Hasher](self, mut hasher: H): """Updates hasher with this `DType` value. Parameters: diff --git a/stdlib/src/builtin/error.mojo b/stdlib/src/builtin/error.mojo index c319e708ea..1d19b5d201 100644 --- a/stdlib/src/builtin/error.mojo +++ b/stdlib/src/builtin/error.mojo @@ -162,7 +162,7 @@ struct Error( return String.write(self) @no_inline - fn write_to[W: Writer](self, inout writer: W): + fn write_to[W: Writer](self, mut writer: W): """ Formats this error to the provided Writer. diff --git a/stdlib/src/builtin/file.mojo b/stdlib/src/builtin/file.mojo index 3185adc6b9..823cbf9348 100644 --- a/stdlib/src/builtin/file.mojo +++ b/stdlib/src/builtin/file.mojo @@ -112,7 +112,7 @@ struct FileHandle: except: pass - fn close(inout self) raises: + fn close(mut self) raises: """Closes the file handle.""" if not self.handle: return @@ -405,7 +405,7 @@ struct FileHandle: return pos @always_inline - fn write_bytes(inout self, bytes: Span[Byte, _]): + fn write_bytes(mut self, bytes: Span[Byte, _]): """ Write a span of bytes to the file. @@ -423,7 +423,7 @@ struct FileHandle: if err_msg: abort(err_msg^.consume_as_error()) - fn write[*Ts: Writable](inout self, *args: *Ts): + fn write[*Ts: Writable](mut self, *args: *Ts): """Write a sequence of Writable arguments to the provided Writer. Parameters: diff --git a/stdlib/src/builtin/file_descriptor.mojo b/stdlib/src/builtin/file_descriptor.mojo index 2843c9dcbf..8f7709d027 100644 --- a/stdlib/src/builtin/file_descriptor.mojo +++ b/stdlib/src/builtin/file_descriptor.mojo @@ -59,7 +59,7 @@ struct FileDescriptor(Writer): self.value = f._get_raw_fd() @always_inline - fn write_bytes(inout self, bytes: Span[Byte, _]): + fn write_bytes(mut self, bytes: Span[Byte, _]): """ Write a span of bytes to the file. @@ -83,7 +83,7 @@ struct FileDescriptor(Writer): written, ) - fn write[*Ts: Writable](inout self, *args: *Ts): + fn write[*Ts: Writable](mut self, *args: *Ts): """Write a sequence of Writable arguments to the provided Writer. Parameters: diff --git a/stdlib/src/builtin/float_literal.mojo b/stdlib/src/builtin/float_literal.mojo index 81308401b5..906e8d40dc 100644 --- a/stdlib/src/builtin/float_literal.mojo +++ b/stdlib/src/builtin/float_literal.mojo @@ -466,7 +466,7 @@ struct FloatLiteral( # ===------------------------------------------------------------------===# @always_inline("nodebug") - fn __iadd__(inout self, rhs: FloatLiteral): + fn __iadd__(mut self, rhs: FloatLiteral): """In-place addition operator. Args: @@ -475,7 +475,7 @@ struct FloatLiteral( self = self + rhs @always_inline("nodebug") - fn __isub__(inout self, rhs: FloatLiteral): + fn __isub__(mut self, rhs: FloatLiteral): """In-place subtraction operator. Args: @@ -484,7 +484,7 @@ struct FloatLiteral( self = self - rhs @always_inline("nodebug") - fn __imul__(inout self, rhs: FloatLiteral): + fn __imul__(mut self, rhs: FloatLiteral): """In-place multiplication operator. Args: @@ -493,7 +493,7 @@ struct FloatLiteral( self = self * rhs @always_inline("nodebug") - fn __itruediv__(inout self, rhs: FloatLiteral): + fn __itruediv__(mut self, rhs: FloatLiteral): """In-place division. Args: diff --git a/stdlib/src/builtin/format_int.mojo b/stdlib/src/builtin/format_int.mojo index efdc0015c5..0239369fbe 100644 --- a/stdlib/src/builtin/format_int.mojo +++ b/stdlib/src/builtin/format_int.mojo @@ -249,7 +249,7 @@ fn _write_int[ type: DType, W: Writer, ]( - inout writer: W, + mut writer: W, value: Scalar[type], /, radix: Int = 10, @@ -268,7 +268,7 @@ fn _try_write_int[ type: DType, W: Writer, ]( - inout writer: W, + mut writer: W, value: Scalar[type], /, radix: Int = 10, diff --git a/stdlib/src/builtin/int.mojo b/stdlib/src/builtin/int.mojo index 4d7e18dbac..61a74df2dc 100644 --- a/stdlib/src/builtin/int.mojo +++ b/stdlib/src/builtin/int.mojo @@ -418,7 +418,7 @@ struct Int( @always_inline("nodebug") @implicit - fn __init__[IndexerTy: Indexer](inout self, value: IndexerTy): + fn __init__[IndexerTy: Indexer](mut self, value: IndexerTy): """Construct Int from the given Indexer value. Parameters: @@ -765,7 +765,7 @@ struct Int( # ===----------------------------------------------------------------------===# @always_inline("nodebug") - fn __iadd__(inout self, rhs: Int): + fn __iadd__(mut self, rhs: Int): """Compute `self + rhs` and save the result in self. Args: @@ -774,7 +774,7 @@ struct Int( self = self + rhs @always_inline("nodebug") - fn __isub__(inout self, rhs: Int): + fn __isub__(mut self, rhs: Int): """Compute `self - rhs` and save the result in self. Args: @@ -783,7 +783,7 @@ struct Int( self = self - rhs @always_inline("nodebug") - fn __imul__(inout self, rhs: Int): + fn __imul__(mut self, rhs: Int): """Compute self*rhs and save the result in self. Args: @@ -791,7 +791,7 @@ struct Int( """ self = self * rhs - fn __itruediv__(inout self, rhs: Int): + fn __itruediv__(mut self, rhs: Int): """Compute `self / rhs`, convert to int, and save the result in self. Since `floor(self / rhs)` is equivalent to `self // rhs`, this yields @@ -803,7 +803,7 @@ struct Int( self = self // rhs @always_inline("nodebug") - fn __ifloordiv__(inout self, rhs: Int): + fn __ifloordiv__(mut self, rhs: Int): """Compute `self // rhs` and save the result in self. Args: @@ -811,7 +811,7 @@ struct Int( """ self = self // rhs - fn __imod__(inout self, rhs: Int): + fn __imod__(mut self, rhs: Int): """Compute `self % rhs` and save the result in self. Args: @@ -820,7 +820,7 @@ struct Int( self = self % rhs @always_inline("nodebug") - fn __ipow__(inout self, rhs: Int): + fn __ipow__(mut self, rhs: Int): """Compute `pow(self, rhs)` and save the result in self. Args: @@ -829,7 +829,7 @@ struct Int( self = self**rhs @always_inline("nodebug") - fn __ilshift__(inout self, rhs: Int): + fn __ilshift__(mut self, rhs: Int): """Compute `self << rhs` and save the result in self. Args: @@ -838,7 +838,7 @@ struct Int( self = self << rhs @always_inline("nodebug") - fn __irshift__(inout self, rhs: Int): + fn __irshift__(mut self, rhs: Int): """Compute `self >> rhs` and save the result in self. Args: @@ -847,7 +847,7 @@ struct Int( self = self >> rhs @always_inline("nodebug") - fn __iand__(inout self, rhs: Int): + fn __iand__(mut self, rhs: Int): """Compute `self & rhs` and save the result in self. Args: @@ -856,7 +856,7 @@ struct Int( self = self & rhs @always_inline("nodebug") - fn __ixor__(inout self, rhs: Int): + fn __ixor__(mut self, rhs: Int): """Compute `self ^ rhs` and save the result in self. Args: @@ -865,7 +865,7 @@ struct Int( self = self ^ rhs @always_inline("nodebug") - fn __ior__(inout self, rhs: Int): + fn __ior__(mut self, rhs: Int): """Compute self|rhs and save the result in self. Args: @@ -1141,7 +1141,7 @@ struct Int( # TODO(MOCO-636): switch to DType.index return _hash_simd(Scalar[DType.int64](self)) - fn __hash__[H: _Hasher](self, inout hasher: H): + fn __hash__[H: _Hasher](self, mut hasher: H): """Updates hasher with this int value. Parameters: @@ -1180,7 +1180,7 @@ struct Int( # Methods # ===-------------------------------------------------------------------===# - fn write_to[W: Writer](self, inout writer: W): + fn write_to[W: Writer](self, mut writer: W): """ Formats this integer to the provided Writer. @@ -1193,7 +1193,7 @@ struct Int( writer.write(Int64(self)) - fn write_padded[W: Writer](self, inout writer: W, width: Int): + fn write_padded[W: Writer](self, mut writer: W, width: Int): """Write the int right-aligned to a set padding. Parameters: diff --git a/stdlib/src/builtin/int_literal.mojo b/stdlib/src/builtin/int_literal.mojo index 0432c933d3..360ed0e9a6 100644 --- a/stdlib/src/builtin/int_literal.mojo +++ b/stdlib/src/builtin/int_literal.mojo @@ -378,7 +378,7 @@ struct IntLiteral( # ===----------------------------------------------------------------------===# @always_inline("nodebug") - fn __iadd__(inout self, rhs: Self): + fn __iadd__(mut self, rhs: Self): """Compute `self + rhs` and save the result in self. Args: @@ -387,7 +387,7 @@ struct IntLiteral( self = self + rhs @always_inline("nodebug") - fn __isub__(inout self, rhs: Self): + fn __isub__(mut self, rhs: Self): """Compute `self - rhs` and save the result in self. Args: @@ -396,7 +396,7 @@ struct IntLiteral( self = self - rhs @always_inline("nodebug") - fn __imul__(inout self, rhs: Self): + fn __imul__(mut self, rhs: Self): """Compute self*rhs and save the result in self. Args: @@ -405,7 +405,7 @@ struct IntLiteral( self = self * rhs @always_inline("nodebug") - fn __ifloordiv__(inout self, rhs: Self): + fn __ifloordiv__(mut self, rhs: Self): """Compute self//rhs and save the result in self. Args: @@ -414,7 +414,7 @@ struct IntLiteral( self = self // rhs @always_inline("nodebug") - fn __ilshift__(inout self, rhs: Self): + fn __ilshift__(mut self, rhs: Self): """Compute `self << rhs` and save the result in self. Args: @@ -423,7 +423,7 @@ struct IntLiteral( self = self << rhs @always_inline("nodebug") - fn __irshift__(inout self, rhs: Self): + fn __irshift__(mut self, rhs: Self): """Compute `self >> rhs` and save the result in self. Args: @@ -432,7 +432,7 @@ struct IntLiteral( self = self >> rhs @always_inline("nodebug") - fn __iand__(inout self, rhs: Self): + fn __iand__(mut self, rhs: Self): """Compute `self & rhs` and save the result in self. Args: @@ -441,7 +441,7 @@ struct IntLiteral( self = self & rhs @always_inline("nodebug") - fn __ixor__(inout self, rhs: Self): + fn __ixor__(mut self, rhs: Self): """Compute `self ^ rhs` and save the result in self. Args: @@ -450,7 +450,7 @@ struct IntLiteral( self = self ^ rhs @always_inline("nodebug") - fn __ior__(inout self, rhs: Self): + fn __ior__(mut self, rhs: Self): """Compute self|rhs and save the result in self. Args: diff --git a/stdlib/src/builtin/none.mojo b/stdlib/src/builtin/none.mojo index 3cfc856b32..2e5dc6ef35 100644 --- a/stdlib/src/builtin/none.mojo +++ b/stdlib/src/builtin/none.mojo @@ -75,7 +75,7 @@ struct NoneType( return "None" @no_inline - fn write_to[W: Writer](self, inout writer: W): + fn write_to[W: Writer](self, mut writer: W): """Write `None` to a writer stream. Parameters: diff --git a/stdlib/src/builtin/object.mojo b/stdlib/src/builtin/object.mojo index 1eb57a4acb..21b345b89d 100644 --- a/stdlib/src/builtin/object.mojo +++ b/stdlib/src/builtin/object.mojo @@ -124,7 +124,7 @@ struct _RefCountedAttrsDict: ) @always_inline - fn set(inout self, key: StringLiteral, value: _ObjectImpl) raises: + fn set(mut self, key: StringLiteral, value: _ObjectImpl) raises: if key in self.impl[]: self.impl[][key].destroy() self.impl[][key] = value @@ -210,7 +210,7 @@ struct _Function(CollectionElement, CollectionElementNew): """The function pointer.""" @always_inline - fn __init__[FnT: AnyTrivialRegType](inout self, value: FnT): + fn __init__[FnT: AnyTrivialRegType](mut self, value: FnT): # FIXME: No "pointer bitcast" for signature function pointers. var f = UnsafePointer[Int16]() UnsafePointer.address_of(f).bitcast[FnT]()[] = value @@ -320,7 +320,7 @@ struct _ObjectImpl( self.value = Self.type(value) @always_inline - fn __init__[dt: DType](inout self, value: SIMD[dt, 1]): + fn __init__[dt: DType](mut self, value: SIMD[dt, 1]): @parameter if dt.is_integral(): self.value = Self.type(value) @@ -517,7 +517,7 @@ struct _ObjectImpl( return self.get_as_int().cast[DType.float64]() @staticmethod - fn coerce_comparison_type(inout lhs: _ObjectImpl, inout rhs: _ObjectImpl): + fn coerce_comparison_type(mut lhs: _ObjectImpl, mut rhs: _ObjectImpl): """Coerces two values of arithmetic type to the appropriate lowest-common denominator type for performing comparisons, in order of increasing priority: bool, int, and then float. @@ -528,7 +528,7 @@ struct _ObjectImpl( return @parameter - fn convert(inout value: _ObjectImpl, id: Int, to: Int): + fn convert(mut value: _ObjectImpl, id: Int, to: Int): if to == Self.int: value = value.convert_bool_to_int() else: @@ -543,7 +543,7 @@ struct _ObjectImpl( convert(lhs, lhsId, rhsId) @staticmethod - fn coerce_arithmetic_type(inout lhs: _ObjectImpl, inout rhs: _ObjectImpl): + fn coerce_arithmetic_type(mut lhs: _ObjectImpl, mut rhs: _ObjectImpl): """Coerces two values of arithmetic type to the appropriate lowest-common denominator type for performing arithmetic operations. Bools are always converted to integers, to match Python's behavior. @@ -560,7 +560,7 @@ struct _ObjectImpl( lhs = lhs.convert_int_to_float() @staticmethod - fn coerce_integral_type(inout lhs: _ObjectImpl, inout rhs: _ObjectImpl): + fn coerce_integral_type(mut lhs: _ObjectImpl, mut rhs: _ObjectImpl): """Coerces two values of integral type to the appropriate lowest-common denominator type for performing bitwise operations. """ @@ -571,7 +571,7 @@ struct _ObjectImpl( else: lhs = lhs.convert_bool_to_int() - fn write_to[W: Writer](self, inout writer: W): + fn write_to[W: Writer](self, mut writer: W): """Performs conversion to string according to Python semantics. """ @@ -785,7 +785,7 @@ struct object( self._value = value @always_inline - fn __init__[dt: DType](inout self, value: SIMD[dt, 1]): + fn __init__[dt: DType](mut self, value: SIMD[dt, 1]): """Initializes the object with a generic scalar value. If the scalar value type is bool, it is converted to a boolean. Otherwise, it is converted to the appropriate integer or floating point type. @@ -842,7 +842,7 @@ struct object( self._value = impl @always_inline - fn __init__[*Ts: CollectionElement](inout self, value: ListLiteral[*Ts]): + fn __init__[*Ts: CollectionElement](mut self, value: ListLiteral[*Ts]): """Initializes the object from a list literal. Parameters: @@ -1003,7 +1003,7 @@ struct object( """ return self.__bool__() - fn write_to[W: Writer](self, inout writer: W): + fn write_to[W: Writer](self, mut writer: W): """Performs conversion to string according to Python semantics. @@ -1537,7 +1537,7 @@ struct object( # ===------------------------------------------------------------------=== # @always_inline - fn __iadd__(inout self, rhs: object) raises: + fn __iadd__(mut self, rhs: object) raises: """In-place addition or concatenation operator. Args: @@ -1546,7 +1546,7 @@ struct object( self = self + rhs @always_inline - fn __isub__(inout self, rhs: object) raises: + fn __isub__(mut self, rhs: object) raises: """In-place subtraction operator. Args: @@ -1555,7 +1555,7 @@ struct object( self = self - rhs @always_inline - fn __imul__(inout self, rhs: object) raises: + fn __imul__(mut self, rhs: object) raises: """In-place multiplication operator. Args: @@ -1564,7 +1564,7 @@ struct object( self = self * rhs @always_inline - fn __ipow__(inout self, rhs: object) raises: + fn __ipow__(mut self, rhs: object) raises: """In-place exponentiation operator. Args: @@ -1573,7 +1573,7 @@ struct object( self = self**rhs @always_inline - fn __imod__(inout self, rhs: object) raises: + fn __imod__(mut self, rhs: object) raises: """In-place modulo operator. Args: @@ -1582,7 +1582,7 @@ struct object( self = self % rhs @always_inline - fn __itruediv__(inout self, rhs: object) raises: + fn __itruediv__(mut self, rhs: object) raises: """In-place true division operator. Args: @@ -1591,7 +1591,7 @@ struct object( self = self / rhs @always_inline - fn __ifloordiv__(inout self, rhs: object) raises: + fn __ifloordiv__(mut self, rhs: object) raises: """In-place floor division operator. Args: @@ -1600,7 +1600,7 @@ struct object( self = self // rhs @always_inline - fn __ilshift__(inout self, rhs: object) raises: + fn __ilshift__(mut self, rhs: object) raises: """In-place left shift operator. Args: @@ -1609,7 +1609,7 @@ struct object( self = self << rhs @always_inline - fn __irshift__(inout self, rhs: object) raises: + fn __irshift__(mut self, rhs: object) raises: """In-place right shift operator. Args: @@ -1618,7 +1618,7 @@ struct object( self = self >> rhs @always_inline - fn __iand__(inout self, rhs: object) raises: + fn __iand__(mut self, rhs: object) raises: """In-place AND operator. Args: @@ -1627,7 +1627,7 @@ struct object( self = self & rhs @always_inline - fn __ior__(inout self, rhs: object) raises: + fn __ior__(mut self, rhs: object) raises: """In-place OR operator. Args: @@ -1636,7 +1636,7 @@ struct object( self = self | rhs @always_inline - fn __ixor__(inout self, rhs: object) raises: + fn __ixor__(mut self, rhs: object) raises: """In-place XOR operator. Args: @@ -1936,7 +1936,7 @@ struct object( return self._value.get_obj_attr(key) @always_inline - fn __setattr__(inout self, key: StringLiteral, value: object) raises: + fn __setattr__(mut self, key: StringLiteral, value: object) raises: """Sets the named attribute. Args: diff --git a/stdlib/src/builtin/range.mojo b/stdlib/src/builtin/range.mojo index 587b859e16..2af6fb942d 100644 --- a/stdlib/src/builtin/range.mojo +++ b/stdlib/src/builtin/range.mojo @@ -60,7 +60,7 @@ struct _ZeroStartingRange(Sized, ReversibleRange, _IntIterable): return self @always_inline - fn __next__(inout self) -> Int: + fn __next__(mut self) -> Int: var curr = self.curr self.curr -= 1 return self.end - curr @@ -94,7 +94,7 @@ struct _SequentialRange(Sized, ReversibleRange, _IntIterable): return self @always_inline - fn __next__(inout self) -> Int: + fn __next__(mut self) -> Int: var start = self.start self.start += 1 return start @@ -134,7 +134,7 @@ struct _StridedRangeIterator(Sized): return 0 @always_inline - fn __next__(inout self) -> Int: + fn __next__(mut self) -> Int: var result = self.start self.start += self.step return result @@ -162,7 +162,7 @@ struct _StridedRange(Sized, ReversibleRange, _StridedIterable): return _StridedRangeIterator(self.start, self.end, self.step) @always_inline - fn __next__(inout self) -> Int: + fn __next__(mut self) -> Int: var result = self.start self.start += self.step return result @@ -337,7 +337,7 @@ struct _UIntZeroStartingRange(UIntSized): return self @always_inline - fn __next__(inout self) -> UInt: + fn __next__(mut self) -> UInt: var curr = self.curr self.curr -= 1 return self.end - curr @@ -368,7 +368,7 @@ struct _UIntStridedRangeIterator(UIntSized): return select(self.start < self.end, self.end - self.start, 0) @always_inline - fn __next__(inout self) -> UInt: + fn __next__(mut self) -> UInt: var result = self.start self.start += self.step return result @@ -406,7 +406,7 @@ struct _UIntStridedRange(UIntSized, _UIntStridedIterable): return _UIntStridedRangeIterator(self.start, self.end, self.step) @always_inline - fn __next__(inout self) -> UInt: + fn __next__(mut self) -> UInt: if self.start >= self.end: return self.end var result = self.start @@ -478,7 +478,7 @@ struct _ZeroStartingScalarRange[type: DType]: return self @always_inline - fn __next__(inout self) -> Scalar[type]: + fn __next__(mut self) -> Scalar[type]: var curr = self.curr self.curr -= 1 return self.end - curr @@ -515,7 +515,7 @@ struct _SequentialScalarRange[type: DType]: return self @always_inline - fn __next__(inout self) -> Scalar[type]: + fn __next__(mut self) -> Scalar[type]: var start = self.start self.start += 1 return start @@ -557,7 +557,7 @@ struct _StridedScalarRangeIterator[type: DType]: return self.end < self.start @always_inline - fn __next__(inout self) -> Scalar[type]: + fn __next__(mut self) -> Scalar[type]: var result = self.start self.start += self.step return result diff --git a/stdlib/src/builtin/simd.mojo b/stdlib/src/builtin/simd.mojo index 332220f11f..a70d660217 100644 --- a/stdlib/src/builtin/simd.mojo +++ b/stdlib/src/builtin/simd.mojo @@ -354,7 +354,7 @@ struct SIMD[type: DType, size: Int]( @always_inline("nodebug") @implicit fn __init__( - inout self, + mut self, value: __mlir_type[`!pop.simd<`, size.value, `, `, type.value, `>`], ): """Initializes the SIMD vector with the underlying mlir value. @@ -588,7 +588,7 @@ struct SIMD[type: DType, size: Int]( fn __init__[ int_type: DType, // - ](inout self, *, from_bits: SIMD[int_type, size]): + ](mut self, *, from_bits: SIMD[int_type, size]): """Initializes the SIMD vector from the bits of an integral SIMD vector. Parameters: @@ -619,7 +619,7 @@ struct SIMD[type: DType, size: Int]( ](self.value, index(idx).value) @always_inline("nodebug") - fn __setitem__(inout self, idx: Int, val: Scalar[type]): + fn __setitem__(mut self, idx: Int, val: Scalar[type]): """Sets an element in the vector. Args: @@ -1076,7 +1076,7 @@ struct SIMD[type: DType, size: Int]( # ===------------------------------------------------------------------=== # @always_inline("nodebug") - fn __iadd__(inout self, rhs: Self): + fn __iadd__(mut self, rhs: Self): """Performs in-place addition. The vector is mutated where each element at position `i` is computed as @@ -1089,7 +1089,7 @@ struct SIMD[type: DType, size: Int]( self = self + rhs @always_inline("nodebug") - fn __isub__(inout self, rhs: Self): + fn __isub__(mut self, rhs: Self): """Performs in-place subtraction. The vector is mutated where each element at position `i` is computed as @@ -1102,7 +1102,7 @@ struct SIMD[type: DType, size: Int]( self = self - rhs @always_inline("nodebug") - fn __imul__(inout self, rhs: Self): + fn __imul__(mut self, rhs: Self): """Performs in-place multiplication. The vector is mutated where each element at position `i` is computed as @@ -1115,7 +1115,7 @@ struct SIMD[type: DType, size: Int]( self = self * rhs @always_inline("nodebug") - fn __itruediv__(inout self, rhs: Self): + fn __itruediv__(mut self, rhs: Self): """In-place true divide operator. The vector is mutated where each element at position `i` is computed as @@ -1128,7 +1128,7 @@ struct SIMD[type: DType, size: Int]( self = self / rhs @always_inline("nodebug") - fn __ifloordiv__(inout self, rhs: Self): + fn __ifloordiv__(mut self, rhs: Self): """In-place flood div operator. The vector is mutated where each element at position `i` is computed as @@ -1141,7 +1141,7 @@ struct SIMD[type: DType, size: Int]( self = self // rhs @always_inline("nodebug") - fn __imod__(inout self, rhs: Self): + fn __imod__(mut self, rhs: Self): """In-place mod operator. The vector is mutated where each element at position `i` is computed as @@ -1154,7 +1154,7 @@ struct SIMD[type: DType, size: Int]( self = self.__mod__(rhs) @always_inline("nodebug") - fn __ipow__(inout self, rhs: Int): + fn __ipow__(mut self, rhs: Int): """In-place pow operator. The vector is mutated where each element at position `i` is computed as @@ -1167,7 +1167,7 @@ struct SIMD[type: DType, size: Int]( self = self.__pow__(rhs) @always_inline("nodebug") - fn __iand__(inout self, rhs: Self): + fn __iand__(mut self, rhs: Self): """Computes `self & rhs` and save the result in `self`. Constraints: @@ -1183,7 +1183,7 @@ struct SIMD[type: DType, size: Int]( self = self & rhs @always_inline("nodebug") - fn __ixor__(inout self, rhs: Self): + fn __ixor__(mut self, rhs: Self): """Computes `self ^ rhs` and save the result in `self`. Constraints: @@ -1199,7 +1199,7 @@ struct SIMD[type: DType, size: Int]( self = self ^ rhs @always_inline("nodebug") - fn __ior__(inout self, rhs: Self): + fn __ior__(mut self, rhs: Self): """Computes `self | rhs` and save the result in `self`. Constraints: @@ -1215,7 +1215,7 @@ struct SIMD[type: DType, size: Int]( self = self | rhs @always_inline("nodebug") - fn __ilshift__(inout self, rhs: Self): + fn __ilshift__(mut self, rhs: Self): """Computes `self << rhs` and save the result in `self`. Constraints: @@ -1228,7 +1228,7 @@ struct SIMD[type: DType, size: Int]( self = self << rhs @always_inline("nodebug") - fn __irshift__(inout self, rhs: Self): + fn __irshift__(mut self, rhs: Self): """Computes `self >> rhs` and save the result in `self`. Constraints: @@ -1643,7 +1643,7 @@ struct SIMD[type: DType, size: Int]( """ return _hash_simd(self) - fn __hash__[H: _Hasher](self, inout hasher: H): + fn __hash__[H: _Hasher](self, mut hasher: H): """Updates hasher with this SIMD value. Parameters: @@ -1782,7 +1782,7 @@ struct SIMD[type: DType, size: Int]( ](self.value) @no_inline - fn write_to[W: Writer](self, inout writer: W): + fn write_to[W: Writer](self, mut writer: W): """ Formats this SIMD value to the provided Writer. @@ -3422,7 +3422,7 @@ fn _floor(x: SIMD) -> __type_of(x): fn _write_scalar[ dtype: DType, W: Writer, //, -](inout writer: W, value: Scalar[dtype]): +](mut writer: W, value: Scalar[dtype]): @parameter if dtype == DType.bool: if value: diff --git a/stdlib/src/builtin/string_literal.mojo b/stdlib/src/builtin/string_literal.mojo index 367047a85c..554ddeddfd 100644 --- a/stdlib/src/builtin/string_literal.mojo +++ b/stdlib/src/builtin/string_literal.mojo @@ -123,7 +123,7 @@ struct StringLiteral( return __mlir_op.`pop.string.concat`(self.value, rhs.value) @always_inline("nodebug") - fn __iadd__(inout self, rhs: StringLiteral): + fn __iadd__(mut self, rhs: StringLiteral): """Concatenate a string literal to an existing one. Can only be evaluated at compile time using the `alias` keyword, which will write the result into the binary. @@ -388,7 +388,7 @@ struct StringLiteral( """ return hash(self.unsafe_ptr(), len(self)) - fn __hash__[H: _Hasher](self, inout hasher: H): + fn __hash__[H: _Hasher](self, mut hasher: H): """Updates hasher with the underlying bytes. Parameters: @@ -551,7 +551,7 @@ struct StringLiteral( """ return _FormatCurlyEntry.format(self, args) - fn write_to[W: Writer](self, inout writer: W): + fn write_to[W: Writer](self, mut writer: W): """ Formats this string literal to the provided Writer. diff --git a/stdlib/src/builtin/swap.mojo b/stdlib/src/builtin/swap.mojo index fed7502fd1..549e71e28b 100644 --- a/stdlib/src/builtin/swap.mojo +++ b/stdlib/src/builtin/swap.mojo @@ -17,7 +17,7 @@ These are Mojo built-ins, so you don't need to import them. @always_inline -fn swap[T: Movable](inout lhs: T, inout rhs: T): +fn swap[T: Movable](mut lhs: T, mut rhs: T): """Swaps the two given arguments. Parameters: diff --git a/stdlib/src/builtin/tuple.mojo b/stdlib/src/builtin/tuple.mojo index 6d7f45a029..50fdf9f708 100644 --- a/stdlib/src/builtin/tuple.mojo +++ b/stdlib/src/builtin/tuple.mojo @@ -59,7 +59,7 @@ struct Tuple[*element_types: CollectionElement](Sized, CollectionElement): @always_inline("nodebug") fn __init__( - inout self, + mut self, *, owned storage: VariadicPack[_, CollectionElement, *element_types], ): diff --git a/stdlib/src/builtin/uint.mojo b/stdlib/src/builtin/uint.mojo index cb3de1bcb5..dad8ed6167 100644 --- a/stdlib/src/builtin/uint.mojo +++ b/stdlib/src/builtin/uint.mojo @@ -130,7 +130,7 @@ struct UInt(IntLike, _HashableWithHasher): return String.write(self) @no_inline - fn write_to[W: Writer](self, inout writer: W): + fn write_to[W: Writer](self, mut writer: W): """Formats this integer to the provided Writer. Parameters: @@ -168,7 +168,7 @@ struct UInt(IntLike, _HashableWithHasher): # TODO(MOCO-636): switch to DType.index return _hash_simd(Scalar[DType.uint64](self)) - fn __hash__[H: _Hasher](self, inout hasher: H): + fn __hash__[H: _Hasher](self, mut hasher: H): """Updates hasher with this uint value. Parameters: @@ -403,7 +403,7 @@ struct UInt(IntLike, _HashableWithHasher): # ===----------------------------------------------------------------------===# @always_inline("nodebug") - fn __iadd__(inout self, rhs: UInt): + fn __iadd__(mut self, rhs: UInt): """Compute `self + rhs` and save the result in self. Args: @@ -412,7 +412,7 @@ struct UInt(IntLike, _HashableWithHasher): self = self + rhs @always_inline("nodebug") - fn __isub__(inout self, rhs: UInt): + fn __isub__(mut self, rhs: UInt): """Compute `self - rhs` and save the result in self. Args: @@ -421,7 +421,7 @@ struct UInt(IntLike, _HashableWithHasher): self = self - rhs @always_inline("nodebug") - fn __imul__(inout self, rhs: UInt): + fn __imul__(mut self, rhs: UInt): """Compute self*rhs and save the result in self. Args: @@ -429,7 +429,7 @@ struct UInt(IntLike, _HashableWithHasher): """ self = self * rhs - fn __itruediv__(inout self, rhs: UInt): + fn __itruediv__(mut self, rhs: UInt): """Compute `self / rhs`, convert to int, and save the result in self. Since `floor(self / rhs)` is equivalent to `self // rhs`, this yields @@ -441,7 +441,7 @@ struct UInt(IntLike, _HashableWithHasher): self = self // rhs @always_inline("nodebug") - fn __ifloordiv__(inout self, rhs: UInt): + fn __ifloordiv__(mut self, rhs: UInt): """Compute `self // rhs` and save the result in self. Args: @@ -449,7 +449,7 @@ struct UInt(IntLike, _HashableWithHasher): """ self = self // rhs - fn __imod__(inout self, rhs: UInt): + fn __imod__(mut self, rhs: UInt): """Compute `self % rhs` and save the result in self. Args: @@ -458,7 +458,7 @@ struct UInt(IntLike, _HashableWithHasher): self = self % rhs @always_inline("nodebug") - fn __ipow__(inout self, rhs: UInt): + fn __ipow__(mut self, rhs: UInt): """Compute `pow(self, rhs)` and save the result in self. Args: @@ -467,7 +467,7 @@ struct UInt(IntLike, _HashableWithHasher): self = self**rhs @always_inline("nodebug") - fn __ilshift__(inout self, rhs: UInt): + fn __ilshift__(mut self, rhs: UInt): """Compute `self << rhs` and save the result in self. Args: @@ -476,7 +476,7 @@ struct UInt(IntLike, _HashableWithHasher): self = self << rhs @always_inline("nodebug") - fn __irshift__(inout self, rhs: UInt): + fn __irshift__(mut self, rhs: UInt): """Compute `self >> rhs` and save the result in self. Args: @@ -485,7 +485,7 @@ struct UInt(IntLike, _HashableWithHasher): self = self >> rhs @always_inline("nodebug") - fn __iand__(inout self, rhs: UInt): + fn __iand__(mut self, rhs: UInt): """Compute `self & rhs` and save the result in self. Args: @@ -494,7 +494,7 @@ struct UInt(IntLike, _HashableWithHasher): self = self & rhs @always_inline("nodebug") - fn __ixor__(inout self, rhs: UInt): + fn __ixor__(mut self, rhs: UInt): """Compute `self ^ rhs` and save the result in self. Args: @@ -503,7 +503,7 @@ struct UInt(IntLike, _HashableWithHasher): self = self ^ rhs @always_inline("nodebug") - fn __ior__(inout self, rhs: UInt): + fn __ior__(mut self, rhs: UInt): """Compute self|rhs and save the result in self. Args: diff --git a/stdlib/src/builtin/value.mojo b/stdlib/src/builtin/value.mojo index fab16a7b44..3dc291c522 100644 --- a/stdlib/src/builtin/value.mojo +++ b/stdlib/src/builtin/value.mojo @@ -109,7 +109,7 @@ trait ExplicitlyCopyable: initializer is called intentionally by the programmer. An explicit copy initializer is just a normal `__init__` method that takes - a `borrowed` argument of `Self`. + a `read-only` argument of `Self`. Example implementing the `ExplicitlyCopyable` trait on `Foo` which requires the `__init__(.., Self)` method: diff --git a/stdlib/src/collections/counter.mojo b/stdlib/src/collections/counter.mojo index a4a2ac1df3..55baedf606 100644 --- a/stdlib/src/collections/counter.mojo +++ b/stdlib/src/collections/counter.mojo @@ -114,7 +114,7 @@ struct Counter[V: KeyElement](Sized, CollectionElement, Boolable): """ return self.get(key, 0) - fn __setitem__(inout self, value: V, count: Int): + fn __setitem__(mut self, value: V, count: Int): """Set a value in the keyword Counter by key. Args: @@ -276,7 +276,7 @@ struct Counter[V: KeyElement](Sized, CollectionElement, Boolable): return +result^ # Remove zero and negative counts - fn __iadd__(inout self, other: Self): + fn __iadd__(mut self, other: Self): """Add counts from another Counter to this Counter. Args: @@ -301,7 +301,7 @@ struct Counter[V: KeyElement](Sized, CollectionElement, Boolable): return +result^ # Remove zero and negative counts - fn __isub__(inout self, other: Self): + fn __isub__(mut self, other: Self): """Subtract counts from another Counter from this Counter. Args: @@ -329,7 +329,7 @@ struct Counter[V: KeyElement](Sized, CollectionElement, Boolable): return result^ - fn __iand__(inout self, other: Self): + fn __iand__(mut self, other: Self): """Intersection: keep common elements with the minimum count. Args: @@ -370,7 +370,7 @@ struct Counter[V: KeyElement](Sized, CollectionElement, Boolable): return result^ - fn __ior__(inout self, other: Self): + fn __ior__(mut self, other: Self): """Union: keep all elements with the maximum count. Args: @@ -382,7 +382,7 @@ struct Counter[V: KeyElement](Sized, CollectionElement, Boolable): if newcount > 0: self[key] = newcount - fn _keep_positive(inout self): + fn _keep_positive(mut self): """Remove zero and negative counts from the Counter.""" for key_ref in self.keys(): var key = key_ref[] @@ -451,7 +451,7 @@ struct Counter[V: KeyElement](Sized, CollectionElement, Boolable): """ return self._data.get(value, default) - fn pop(inout self, value: V) raises -> Int: + fn pop(mut self, value: V) raises -> Int: """Remove a value from the Counter by value. Args: @@ -465,7 +465,7 @@ struct Counter[V: KeyElement](Sized, CollectionElement, Boolable): """ return self._data.pop(value) - fn pop(inout self, value: V, owned default: Int) raises -> Int: + fn pop(mut self, value: V, owned default: Int) raises -> Int: """Remove a value from the Counter by value. Args: @@ -507,11 +507,11 @@ struct Counter[V: KeyElement](Sized, CollectionElement, Boolable): """ return self._data.items() - fn clear(inout self): + fn clear(mut self): """Remove all elements from the Counter.""" self._data.clear() - fn popitem(inout self) raises -> CountTuple[V]: + fn popitem(mut self) raises -> CountTuple[V]: """Remove and return an arbitrary (key, value) pair from the Counter. Returns: @@ -573,7 +573,7 @@ struct Counter[V: KeyElement](Sized, CollectionElement, Boolable): elements.append(item.key) return elements - fn update(inout self, other: Self): + fn update(mut self, other: Self): """Update the Counter, like `dict.update()` but add counts instead of replacing them. @@ -584,7 +584,7 @@ struct Counter[V: KeyElement](Sized, CollectionElement, Boolable): var item = item_ref[] self._data[item.key] = self._data.get(item.key, 0) + item.value - fn subtract(inout self, other: Self): + fn subtract(mut self, other: Self): """Subtract count. Both inputs and outputs may be zero or negative. Args: diff --git a/stdlib/src/collections/deque.mojo b/stdlib/src/collections/deque.mojo index 37ec9d97bf..cdaf52332d 100644 --- a/stdlib/src/collections/deque.mojo +++ b/stdlib/src/collections/deque.mojo @@ -142,7 +142,7 @@ struct Deque[ElementType: CollectionElement]( self = Self(variadic_list=values^) fn __init__( - inout self, *, owned variadic_list: VariadicListMem[ElementType, _] + mut self, *, owned variadic_list: VariadicListMem[ElementType, _] ): """Constructs a deque from the given values. @@ -226,7 +226,7 @@ struct Deque[ElementType: CollectionElement]( new.append(element[]) return new^ - fn __iadd__(inout self, other: Self): + fn __iadd__(mut self, other: Self): """Appends the elements of other deque into self. Args: @@ -257,7 +257,7 @@ struct Deque[ElementType: CollectionElement]( new.append(element[]) return new^ - fn __imul__(inout self, n: Int): + fn __imul__(mut self, n: Int): """Concatenates self `n` times in place. Args: @@ -410,7 +410,7 @@ struct Deque[ElementType: CollectionElement]( fn write_to[ RepresentableElementType: RepresentableCollectionElement, WriterType: Writer, //, - ](self: Deque[RepresentableElementType], inout writer: WriterType): + ](self: Deque[RepresentableElementType], mut writer: WriterType): """Writes `my_deque.__str__()` to a `Writer`. Parameters: @@ -491,7 +491,7 @@ struct Deque[ElementType: CollectionElement]( # Methods # ===-------------------------------------------------------------------===# - fn append(inout self, owned value: ElementType): + fn append(mut self, owned value: ElementType): """Appends a value to the right side of the deque. Args: @@ -508,7 +508,7 @@ struct Deque[ElementType: CollectionElement]( if self._head == self._tail: self._realloc(self._capacity << 1) - fn appendleft(inout self, owned value: ElementType): + fn appendleft(mut self, owned value: ElementType): """Appends a value to the left side of the deque. Args: @@ -525,7 +525,7 @@ struct Deque[ElementType: CollectionElement]( if self._head == self._tail: self._realloc(self._capacity << 1) - fn clear(inout self): + fn clear(mut self): """Removes all elements from the deque leaving it with length 0. Resets the underlying storage capacity to `_min_capacity`. @@ -561,7 +561,7 @@ struct Deque[ElementType: CollectionElement]( count += 1 return count - fn extend(inout self, owned values: List[ElementType]): + fn extend(mut self, owned values: List[ElementType]): """Extends the right side of the deque by consuming elements of the list argument. Args: @@ -593,7 +593,7 @@ struct Deque[ElementType: CollectionElement]( (src + i).move_pointee_into(self._data + self._tail) self._tail = self._physical_index(self._tail + 1) - fn extendleft(inout self, owned values: List[ElementType]): + fn extendleft(mut self, owned values: List[ElementType]): """Extends the left side of the deque by consuming elements from the list argument. Acts as series of left appends resulting in reversed order of elements in the list argument. @@ -676,7 +676,7 @@ struct Deque[ElementType: CollectionElement]( return idx raise "ValueError: Given element is not in deque" - fn insert(inout self, idx: Int, owned value: ElementType) raises: + fn insert(mut self, idx: Int, owned value: ElementType) raises: """Inserts the `value` into the deque at position `idx`. Args: @@ -723,10 +723,7 @@ struct Deque[ElementType: CollectionElement]( fn remove[ EqualityElementType: EqualityComparableCollectionElement, // - ]( - inout self: Deque[EqualityElementType], - value: EqualityElementType, - ) raises: + ](mut self: Deque[EqualityElementType], value: EqualityElementType,) raises: """Removes the first occurrence of the `value`. Parameters: @@ -797,7 +794,7 @@ struct Deque[ElementType: CollectionElement]( return (self._data + self._head)[] - fn pop(inout self) raises -> ElementType as element: + fn pop(mut self) raises -> ElementType as element: """Removes and returns the element from the right side of the deque. Returns: @@ -821,7 +818,7 @@ struct Deque[ElementType: CollectionElement]( return - fn popleft(inout self) raises -> ElementType as element: + fn popleft(mut self) raises -> ElementType as element: """Removes and returns the element from the left side of the deque. Returns: @@ -845,7 +842,7 @@ struct Deque[ElementType: CollectionElement]( return - fn reverse(inout self): + fn reverse(mut self): """Reverses the elements of the deque in-place.""" last = self._head + len(self) - 1 for i in range(len(self) // 2): @@ -855,7 +852,7 @@ struct Deque[ElementType: CollectionElement]( (self._data + src).move_pointee_into(self._data + dst) (self._data + src).init_pointee_move(tmp^) - fn rotate(inout self, n: Int = 1): + fn rotate(mut self, n: Int = 1): """Rotates the deque by `n` steps. If `n` is positive, rotates to the right. @@ -932,7 +929,7 @@ struct Deque[ElementType: CollectionElement]( """ return logical_index & (self._capacity - 1) - fn _prepare_for_new_elements(inout self, n_total: Int, n_retain: Int): + fn _prepare_for_new_elements(mut self, n_total: Int, n_retain: Int): """Prepares the deque’s internal buffer for adding new elements by reallocating memory and retaining the specified number of existing elements. @@ -958,7 +955,7 @@ struct Deque[ElementType: CollectionElement]( self._head = 0 self._tail = n_retain - fn _realloc(inout self, new_capacity: Int): + fn _realloc(mut self, new_capacity: Int): """Relocates data to a new storage buffer. Args: @@ -1018,7 +1015,7 @@ struct _DequeIter[ fn __iter__(self) -> Self: return self - fn __next__(inout self) -> Pointer[ElementType, deque_lifetime]: + fn __next__(mut self) -> Pointer[ElementType, deque_lifetime]: @parameter if forward: self.index += 1 diff --git a/stdlib/src/collections/dict.mojo b/stdlib/src/collections/dict.mojo index 0e545e8a87..d35229a17e 100644 --- a/stdlib/src/collections/dict.mojo +++ b/stdlib/src/collections/dict.mojo @@ -79,7 +79,7 @@ struct _DictEntryIter[ var src: Pointer[Dict[K, V], dict_origin] fn __init__( - inout self, index: Int, seen: Int, ref [dict_origin]dict: Dict[K, V] + mut self, index: Int, seen: Int, ref [dict_origin]dict: Dict[K, V] ): self.index = index self.seen = seen @@ -90,7 +90,7 @@ struct _DictEntryIter[ @always_inline fn __next__( - inout self, + mut self, ) -> Pointer[DictEntry[K, V], __origin_of(self.src[]._entries[0].value())]: while True: var opt_entry_ref = Pointer.address_of( @@ -141,7 +141,7 @@ struct _DictKeyIter[ return self fn __next__( - inout self, + mut self, ) -> Pointer[K, __origin_of(self.iter.__next__()[].key)]: return Pointer.address_of(self.iter.__next__()[].key) @@ -187,7 +187,7 @@ struct _DictValueIter[ ) ) - fn __next__(inout self) -> Self.ref_type: + fn __next__(mut self) -> Self.ref_type: var entry_ref = self.iter.__next__() # Cast through a pointer to grant additional mutability because # _DictEntryIter.next erases it. @@ -331,7 +331,7 @@ struct _DictIndex: var data = self.data.bitcast[Int64]() return int(data.load(slot & (reserved - 1))) - fn set_index(inout self, reserved: Int, slot: Int, value: Int): + fn set_index(mut self, reserved: Int, slot: Int, value: Int): if reserved <= 128: var data = self.data.bitcast[Int8]() return data.store(slot & (reserved - 1), value) @@ -599,7 +599,7 @@ struct Dict[K: KeyElement, V: CollectionElement]( """ return self._find_ref(key) - fn __setitem__(inout self, owned key: K, owned value: V): + fn __setitem__(mut self, owned key: K, owned value: V): """Set a value in the dictionary by key. Args: @@ -650,7 +650,7 @@ struct Dict[K: KeyElement, V: CollectionElement]( result.update(other) return result^ - fn __ior__(inout self, other: Self): + fn __ior__(mut self, other: Self): """Merge self with other in place. Args: @@ -805,7 +805,7 @@ struct Dict[K: KeyElement, V: CollectionElement]( """ return self.find(key).or_else(default) - fn pop(inout self, key: K, owned default: V) -> V: + fn pop(mut self, key: K, owned default: V) -> V: """Remove a value from the dictionary by key. Args: @@ -822,7 +822,7 @@ struct Dict[K: KeyElement, V: CollectionElement]( except: return default - fn pop(inout self, key: K) raises -> V: + fn pop(mut self, key: K) raises -> V: """Remove a value from the dictionary by key. Args: @@ -850,7 +850,7 @@ struct Dict[K: KeyElement, V: CollectionElement]( return entry_value^.reap_value() raise "KeyError" - fn popitem(inout self) raises -> DictEntry[K, V]: + fn popitem(mut self) raises -> DictEntry[K, V]: """Remove and return a (key, value) pair from the dictionary. Pairs are returned in LIFO order. popitem() is useful to destructively iterate over a dictionary, as often used in set algorithms. If the dictionary is empty, calling popitem() raises a KeyError. @@ -916,7 +916,7 @@ struct Dict[K: KeyElement, V: CollectionElement]( """ return _DictEntryIter(0, 0, self) - fn update(inout self, other: Self, /): + fn update(mut self, other: Self, /): """Update the dictionary with the key/value pairs from other, overwriting existing keys. The argument must be positional only. @@ -926,7 +926,7 @@ struct Dict[K: KeyElement, V: CollectionElement]( for entry in other.items(): self[entry[].key] = entry[].value - fn clear(inout self): + fn clear(mut self): """Remove all elements from the dictionary.""" self.size = 0 self._n_entries = 0 @@ -934,7 +934,7 @@ struct Dict[K: KeyElement, V: CollectionElement]( self._index = _DictIndex(self._reserved()) fn setdefault( - inout self, key: K, owned default: V + mut self, key: K, owned default: V ) raises -> ref [self._find_ref(key)] V: """Get a value from the dictionary by key, or set it to a default if it doesn't exist. @@ -960,12 +960,12 @@ struct Dict[K: KeyElement, V: CollectionElement]( entries.append(None) return entries - fn _insert(inout self, owned key: K, owned value: V): + fn _insert(mut self, owned key: K, owned value: V): self._insert(DictEntry[K, V](key^, value^)) fn _insert[ safe_context: Bool = False - ](inout self, owned entry: DictEntry[K, V]): + ](mut self, owned entry: DictEntry[K, V]): @parameter if not safe_context: self._maybe_resize() @@ -983,10 +983,10 @@ struct Dict[K: KeyElement, V: CollectionElement]( fn _get_index(self, slot: Int) -> Int: return self._index.get_index(self._reserved(), slot) - fn _set_index(inout self, slot: Int, index: Int): + fn _set_index(mut self, slot: Int, index: Int): return self._index.set_index(self._reserved(), slot, index) - fn _next_index_slot(self, inout slot: Int, inout perturb: UInt64): + fn _next_index_slot(self, mut slot: Int, mut perturb: UInt64): alias PERTURB_SHIFT = 5 perturb >>= PERTURB_SHIFT slot = ((5 * slot) + int(perturb + 1)) & (self._reserved() - 1) @@ -1023,7 +1023,7 @@ struct Dict[K: KeyElement, V: CollectionElement]( fn _over_compact_factor(self) -> Bool: return 4 * self._n_entries > 3 * self._reserved() - fn _maybe_resize(inout self): + fn _maybe_resize(mut self): if not self._over_load_factor(): if self._over_compact_factor(): self._compact() @@ -1040,7 +1040,7 @@ struct Dict[K: KeyElement, V: CollectionElement]( if entry: self._insert[safe_context=True](entry.unsafe_take()) - fn _compact(inout self): + fn _compact(mut self): self._index = _DictIndex(self._reserved()) var right = 0 for left in range(self.size): @@ -1129,7 +1129,7 @@ struct OwnedKwargsDict[V: CollectionElement]( return self._dict[key] @always_inline - fn __setitem__(inout self, key: Self.key_type, value: V): + fn __setitem__(mut self, key: Self.key_type, value: V): """Set a value in the keyword dictionary by key. Args: @@ -1182,7 +1182,7 @@ struct OwnedKwargsDict[V: CollectionElement]( return self._dict.find(key) @always_inline - fn pop(inout self, key: self.key_type, owned default: V) -> V: + fn pop(mut self, key: self.key_type, owned default: V) -> V: """Remove a value from the dictionary by key. Args: @@ -1197,7 +1197,7 @@ struct OwnedKwargsDict[V: CollectionElement]( return self._dict.pop(key, default^) @always_inline - fn pop(inout self, key: self.key_type) raises -> V: + fn pop(mut self, key: self.key_type) raises -> V: """Remove a value from the dictionary by key. Args: @@ -1270,9 +1270,9 @@ struct OwnedKwargsDict[V: CollectionElement]( return _DictEntryIter(0, 0, self._dict) @always_inline - fn _insert(inout self, owned key: Self.key_type, owned value: V): + fn _insert(mut self, owned key: Self.key_type, owned value: V): self._dict._insert(key^, value^) @always_inline - fn _insert(inout self, key: StringLiteral, owned value: V): + fn _insert(mut self, key: StringLiteral, owned value: V): self._insert(String(key), value^) diff --git a/stdlib/src/collections/inline_array.mojo b/stdlib/src/collections/inline_array.mojo index 9112e51818..bb8809612d 100644 --- a/stdlib/src/collections/inline_array.mojo +++ b/stdlib/src/collections/inline_array.mojo @@ -112,7 +112,7 @@ struct InlineArray[ ]() fn __init__( - inout self, + mut self, *, owned unsafe_assume_initialized: InlineArray[ UnsafeMaybeUninitialized[Self.ElementType], Self.size @@ -171,7 +171,7 @@ struct InlineArray[ @always_inline fn __init__( - inout self, + mut self, *, owned storage: VariadicListMem[Self.ElementType, _], ): diff --git a/stdlib/src/collections/inline_list.mojo b/stdlib/src/collections/inline_list.mojo index 01486e07ed..516be41287 100644 --- a/stdlib/src/collections/inline_list.mojo +++ b/stdlib/src/collections/inline_list.mojo @@ -54,7 +54,7 @@ struct _InlineListIter[ return self fn __next__( - inout self, + mut self, ) -> Pointer[T, __origin_of(self.src[][0])]: @parameter if forward: @@ -243,7 +243,7 @@ struct InlineList[ElementType: CollectionElementNew, capacity: Int = 16](Sized): count += int(rebind[C](e[]) == value) return count - fn append(inout self, owned value: ElementType): + fn append(mut self, owned value: ElementType): """Appends a value to the list. Args: diff --git a/stdlib/src/collections/list.mojo b/stdlib/src/collections/list.mojo index b3442b1228..19b477a47e 100644 --- a/stdlib/src/collections/list.mojo +++ b/stdlib/src/collections/list.mojo @@ -63,7 +63,7 @@ struct _ListIter[ return self fn __next__( - inout self, + mut self, ) -> Pointer[T, list_origin]: @parameter if forward: @@ -178,9 +178,7 @@ struct List[T: CollectionElement, hint_trivial_type: Bool = False]( for value in span: self.append(value[]) - fn __init__( - inout self, *, ptr: UnsafePointer[T], length: Int, capacity: Int - ): + fn __init__(mut self, *, ptr: UnsafePointer[T], length: Int, capacity: Int): """Constructs a list from a pointer, its length, and its capacity. Args: @@ -320,7 +318,7 @@ struct List[T: CollectionElement, hint_trivial_type: Bool = False]( result.__mul(x) return result^ - fn __imul__(inout self, x: Int): + fn __imul__(mut self, x: Int): """Multiplies the list by x in place. Args: @@ -341,7 +339,7 @@ struct List[T: CollectionElement, hint_trivial_type: Bool = False]( result.extend(other^) return result^ - fn __iadd__(inout self, owned other: Self): + fn __iadd__(mut self, owned other: Self): """Appends the elements of other into self. Args: @@ -420,7 +418,7 @@ struct List[T: CollectionElement, hint_trivial_type: Bool = False]( @no_inline fn write_to[ W: Writer, U: RepresentableCollectionElement, // - ](self: List[U, *_], inout writer: W): + ](self: List[U, *_], mut writer: W): """Write `my_list.__str__()` to a `Writer`. Parameters: @@ -477,7 +475,7 @@ struct List[T: CollectionElement, hint_trivial_type: Bool = False]( """ return len(self) * sizeof[T]() - fn _realloc(inout self, new_capacity: Int): + fn _realloc(mut self, new_capacity: Int): var new_data = UnsafePointer[T].alloc(new_capacity) _move_pointee_into_many_elements[hint_trivial_type]( @@ -491,7 +489,7 @@ struct List[T: CollectionElement, hint_trivial_type: Bool = False]( self.data = new_data self.capacity = new_capacity - fn append(inout self, owned value: T): + fn append(mut self, owned value: T): """Appends a value to this list. Args: @@ -502,7 +500,7 @@ struct List[T: CollectionElement, hint_trivial_type: Bool = False]( (self.data + self.size).init_pointee_move(value^) self.size += 1 - fn insert(inout self, i: Int, owned value: T): + fn insert(mut self, i: Int, owned value: T): """Inserts a value to the list at the given index. `a.insert(len(a), value)` is equivalent to `a.append(value)`. @@ -531,7 +529,7 @@ struct List[T: CollectionElement, hint_trivial_type: Bool = False]( earlier_idx -= 1 later_idx -= 1 - fn __mul(inout self, x: Int): + fn __mul(mut self, x: Int): """Appends the original elements of this list x-1 times. ```mojo @@ -550,7 +548,7 @@ struct List[T: CollectionElement, hint_trivial_type: Bool = False]( for i in range(x - 1): self.extend(orig) - fn extend(inout self, owned other: List[T, *_]): + fn extend(mut self, owned other: List[T, *_]): """Extends this list by consuming the elements of `other`. Args: @@ -590,7 +588,7 @@ struct List[T: CollectionElement, hint_trivial_type: Bool = False]( # list. self.size = final_size - fn pop(inout self, i: Int = -1) -> T: + fn pop(mut self, i: Int = -1) -> T: """Pops a value from the list at the given index. Args: @@ -614,7 +612,7 @@ struct List[T: CollectionElement, hint_trivial_type: Bool = False]( self._realloc(self.capacity // 2) return ret_val^ - fn reserve(inout self, new_capacity: Int): + fn reserve(mut self, new_capacity: Int): """Reserves the requested capacity. If the current capacity is greater or equal, this is a no-op. @@ -627,7 +625,7 @@ struct List[T: CollectionElement, hint_trivial_type: Bool = False]( return self._realloc(new_capacity) - fn resize(inout self, new_size: Int, value: T): + fn resize(mut self, new_size: Int, value: T): """Resizes the list to the given new size. If the new size is smaller than the current one, elements at the end @@ -646,7 +644,7 @@ struct List[T: CollectionElement, hint_trivial_type: Bool = False]( (self.data + i).init_pointee_copy(value) self.size = new_size - fn resize(inout self, new_size: Int): + fn resize(mut self, new_size: Int): """Resizes the list to the given new size. With no new value provided, the new size must be smaller than or equal @@ -667,7 +665,7 @@ struct List[T: CollectionElement, hint_trivial_type: Bool = False]( self.size = new_size self.reserve(new_size) - fn reverse(inout self): + fn reverse(mut self): """Reverses the elements of the list.""" var earlier_idx = 0 @@ -744,13 +742,13 @@ struct List[T: CollectionElement, hint_trivial_type: Bool = False]( return i raise "ValueError: Given element is not in list" - fn clear(inout self): + fn clear(mut self): """Clears the elements in the list.""" for i in range(self.size): (self.data + i).destroy_pointee() self.size = 0 - fn steal_data(inout self) -> UnsafePointer[T]: + fn steal_data(mut self) -> UnsafePointer[T]: """Take ownership of the underlying pointer from the list. Returns: @@ -840,7 +838,7 @@ struct List[T: CollectionElement, hint_trivial_type: Bool = False]( return (self.data + idx)[] @always_inline - fn unsafe_set(inout self, idx: Int, owned value: T): + fn unsafe_set(mut self, idx: Int, owned value: T): """Write a value to a given location without checking index bounds. Users should consider using `my_list[idx] = value` instead of this method as it @@ -897,7 +895,7 @@ struct List[T: CollectionElement, hint_trivial_type: Bool = False]( count += 1 return count - fn swap_elements(inout self, elt_idx_1: Int, elt_idx_2: Int): + fn swap_elements(mut self, elt_idx_1: Int, elt_idx_2: Int): """Swaps elements at the specified indexes if they are different. ```mojo diff --git a/stdlib/src/collections/optional.mojo b/stdlib/src/collections/optional.mojo index eb019dd463..95c78a9706 100644 --- a/stdlib/src/collections/optional.mojo +++ b/stdlib/src/collections/optional.mojo @@ -281,7 +281,7 @@ struct Optional[T: CollectionElement]( fn write_to[ W: Writer, U: RepresentableCollectionElement, // - ](self: Optional[U], inout writer: W): + ](self: Optional[U], mut writer: W): """Write Optional string representation to a `Writer`. Parameters: @@ -333,7 +333,7 @@ struct Optional[T: CollectionElement]( debug_assert(self.__bool__(), ".value() on empty Optional") return self._value.unsafe_get[T]() - fn take(inout self) -> T: + fn take(mut self) -> T: """Move the value out of the Optional. The caller takes ownership over the new value, which is moved @@ -351,7 +351,7 @@ struct Optional[T: CollectionElement]( abort(".take() on empty Optional") return self.unsafe_take() - fn unsafe_take(inout self) -> T: + fn unsafe_take(mut self) -> T: """Unsafely move the value out of the Optional. The caller takes ownership over the new value, which is moved diff --git a/stdlib/src/collections/set.mojo b/stdlib/src/collections/set.mojo index 500e4c73b2..9c017dbfe8 100644 --- a/stdlib/src/collections/set.mojo +++ b/stdlib/src/collections/set.mojo @@ -149,7 +149,7 @@ struct Set[T: KeyElement](Sized, Comparable, Hashable, Boolable): """ return self.intersection(other) - fn __iand__(inout self, other: Self): + fn __iand__(mut self, other: Self): """In-place set intersection. Updates the set to contain only the elements which are already in @@ -172,7 +172,7 @@ struct Set[T: KeyElement](Sized, Comparable, Hashable, Boolable): """ return self.union(other) - fn __ior__(inout self, other: Self): + fn __ior__(mut self, other: Self): """In-place set union. Updates the set to contain all elements in the `other` set @@ -195,7 +195,7 @@ struct Set[T: KeyElement](Sized, Comparable, Hashable, Boolable): """ return self.difference(other) - fn __isub__(inout self, other: Self): + fn __isub__(mut self, other: Self): """In-place set subtraction. Updates the set to remove any elements from the `other` set. @@ -260,7 +260,7 @@ struct Set[T: KeyElement](Sized, Comparable, Hashable, Boolable): """ return self.symmetric_difference(other) - fn __ixor__(inout self, other: Self): + fn __ixor__(mut self, other: Self): """Overloads the ^= operator. Works like as `symmetric_difference_update` method. Updates the set with the symmetric difference of itself and another set. @@ -334,7 +334,7 @@ struct Set[T: KeyElement](Sized, Comparable, Hashable, Boolable): fn write_to[ W: Writer, U: RepresentableKeyElement, - ](self: Set[U], inout writer: W): + ](self: Set[U], mut writer: W): """Write Set string representation to a `Writer`. Parameters: @@ -366,7 +366,7 @@ struct Set[T: KeyElement](Sized, Comparable, Hashable, Boolable): # here we rely on Set being a trivial wrapper of a Dict return _DictKeyIter(_DictEntryIter(0, 0, self._data)) - fn add(inout self, t: T): + fn add(mut self, t: T): """Add an element to the set. Args: @@ -374,7 +374,7 @@ struct Set[T: KeyElement](Sized, Comparable, Hashable, Boolable): """ self._data[t] = None - fn remove(inout self, t: T) raises: + fn remove(mut self, t: T) raises: """Remove an element from the set. Args: @@ -385,7 +385,7 @@ struct Set[T: KeyElement](Sized, Comparable, Hashable, Boolable): """ self._data.pop(t) - fn pop(inout self) raises -> T: + fn pop(mut self) raises -> T: """Remove any one item from the set, and return it. As an implementation detail this will remove the first item @@ -454,7 +454,7 @@ struct Set[T: KeyElement](Sized, Comparable, Hashable, Boolable): result.add(e[]) return result^ - fn update(inout self, other: Self): + fn update(mut self, other: Self): """In-place set update. Updates the set to contain all elements in the `other` set @@ -466,7 +466,7 @@ struct Set[T: KeyElement](Sized, Comparable, Hashable, Boolable): for e in other: self.add(e[]) - fn intersection_update(inout self, other: Self): + fn intersection_update(mut self, other: Self): """In-place set intersection update. Updates the set by retaining only elements found in both this set and the `other` set, @@ -479,7 +479,7 @@ struct Set[T: KeyElement](Sized, Comparable, Hashable, Boolable): # careful about concurrent iteration + mutation self.difference_update(self - other) - fn difference_update(inout self, other: Self): + fn difference_update(mut self, other: Self): """In-place set subtraction. Updates the set by removing all elements found in the `other` set, @@ -566,7 +566,7 @@ struct Set[T: KeyElement](Sized, Comparable, Hashable, Boolable): return result^ - fn symmetric_difference_update(inout self, other: Self): + fn symmetric_difference_update(mut self, other: Self): """Updates the set with the symmetric difference of itself and another set. Args: @@ -574,7 +574,7 @@ struct Set[T: KeyElement](Sized, Comparable, Hashable, Boolable): """ self = self.symmetric_difference(other) - fn discard(inout self, value: T): + fn discard(mut self, value: T): """Remove a value from the set if it exists. Pass otherwise. Args: @@ -585,7 +585,7 @@ struct Set[T: KeyElement](Sized, Comparable, Hashable, Boolable): except: pass - fn clear(inout self): + fn clear(mut self): """Removes all elements from the set. This method modifies the set in-place, removing all of its elements. diff --git a/stdlib/src/collections/string.mojo b/stdlib/src/collections/string.mojo index 1b38236b10..d75d2098cd 100644 --- a/stdlib/src/collections/string.mojo +++ b/stdlib/src/collections/string.mojo @@ -904,7 +904,7 @@ struct String( # Factory dunders # ===------------------------------------------------------------------=== # - fn write_bytes(inout self, bytes: Span[Byte, _]): + fn write_bytes(mut self, bytes: Span[Byte, _]): """Write a byte span to this String. Args: @@ -913,7 +913,7 @@ struct String( """ self._iadd[False](bytes) - fn write[*Ts: Writable](inout self, *args: *Ts): + fn write[*Ts: Writable](mut self, *args: *Ts): """Write a sequence of Writable arguments to the provided Writer. Parameters: @@ -1267,7 +1267,7 @@ struct String( """ return Self._add[True](other.as_bytes(), self.as_bytes()) - fn _iadd[has_null: Bool](inout self, other: Span[Byte]): + fn _iadd[has_null: Bool](mut self, other: Span[Byte]): var s_len = self.byte_length() var o_len = len(other) var o_ptr = other.unsafe_ptr() @@ -1288,7 +1288,7 @@ struct String( s_ptr[sum_len] = 0 @always_inline - fn __iadd__(inout self, other: String): + fn __iadd__(mut self, other: String): """Appends another string to this string. Args: @@ -1297,7 +1297,7 @@ struct String( self._iadd[True](other.as_bytes()) @always_inline - fn __iadd__(inout self, other: StringLiteral): + fn __iadd__(mut self, other: StringLiteral): """Appends another string literal to this string. Args: @@ -1306,7 +1306,7 @@ struct String( self._iadd[False](other.as_bytes()) @always_inline - fn __iadd__(inout self, other: StringSlice): + fn __iadd__(mut self, other: StringSlice): """Appends another string slice to this string. Args: @@ -1423,7 +1423,7 @@ struct String( # Methods # ===------------------------------------------------------------------=== # - fn write_to[W: Writer](self, inout writer: W): + fn write_to[W: Writer](self, mut writer: W): """ Formats this string to the provided Writer. @@ -1622,7 +1622,7 @@ struct String( var length = len(self._buffer) return length - int(length > 0) - fn _steal_ptr(inout self) -> UnsafePointer[UInt8]: + fn _steal_ptr(mut self) -> UnsafePointer[UInt8]: """Transfer ownership of pointer to the underlying memory. The caller is responsible for freeing up the memory. @@ -2014,7 +2014,7 @@ struct String( """ return hash(self.as_string_slice()) - fn __hash__[H: _Hasher](self, inout hasher: H): + fn __hash__[H: _Hasher](self, mut hasher: H): """Updates hasher with the underlying bytes. Parameters: @@ -2309,7 +2309,7 @@ struct String( var result = String(buffer) return result^ - fn reserve(inout self, new_capacity: Int): + fn reserve(mut self, new_capacity: Int): """Reserves the requested capacity. Args: diff --git a/stdlib/src/collections/vector.mojo b/stdlib/src/collections/vector.mojo index 1dc60fcc76..1c9385c528 100644 --- a/stdlib/src/collections/vector.mojo +++ b/stdlib/src/collections/vector.mojo @@ -42,7 +42,7 @@ struct _VecIter[ var size: Int var vec: UnsafePointer[vec_type] - fn __next__(inout self) -> type: + fn __next__(mut self) -> type: self.i += 1 return deref(self.vec, self.i - 1) @@ -175,7 +175,7 @@ struct InlinedFixedVector[ self.dynamic_data = UnsafePointer[type]() @always_inline - fn append(inout self, value: type): + fn append(mut self, value: type): """Appends a value to this vector. Args: @@ -225,7 +225,7 @@ struct InlinedFixedVector[ return self.dynamic_data[normalized_idx - Self.static_size] @always_inline - fn __setitem__(inout self, idx: Int, value: type): + fn __setitem__(mut self, idx: Int, value: type): """Sets a vector element at the given index. Args: @@ -245,7 +245,7 @@ struct InlinedFixedVector[ else: self.dynamic_data[normalized_idx - Self.static_size] = value - fn clear(inout self): + fn clear(mut self): """Clears the elements in the vector.""" self.current_size = 0 @@ -255,7 +255,7 @@ struct InlinedFixedVector[ alias _iterator = _VecIter[type, Self, Self._deref_iter_impl] - fn __iter__(inout self) -> Self._iterator: + fn __iter__(mut self) -> Self._iterator: """Iterate over the vector. Returns: diff --git a/stdlib/src/hashlib/_ahash.mojo b/stdlib/src/hashlib/_ahash.mojo index 9adb7d08e0..56488c9a8d 100644 --- a/stdlib/src/hashlib/_ahash.mojo +++ b/stdlib/src/hashlib/_ahash.mojo @@ -110,7 +110,7 @@ struct AHasher[key: U256](_Hasher): self.extra_keys = U128(pi_key[2], pi_key[3]) @always_inline - fn _update(inout self, new_data: UInt64): + fn _update(mut self, new_data: UInt64): """Update the buffer value with new data. Args: @@ -119,7 +119,7 @@ struct AHasher[key: U256](_Hasher): self.buffer = _folded_multiply(new_data ^ self.buffer, MULTIPLE) @always_inline - fn _large_update(inout self, new_data: U128): + fn _large_update(mut self, new_data: U128): """Update the buffer value with new data. Args: @@ -129,7 +129,7 @@ struct AHasher[key: U256](_Hasher): var combined = _folded_multiply(xored[0], xored[1]) self.buffer = rotate_bits_left[ROT]((self.buffer + self.pad) ^ combined) - fn _update_with_bytes(inout self, data: UnsafePointer[UInt8], length: Int): + fn _update_with_bytes(mut self, data: UnsafePointer[UInt8], length: Int): """Consume provided data to update the internal buffer. Args: @@ -160,7 +160,7 @@ struct AHasher[key: U256](_Hasher): var value = _read_small(data, length) self._large_update(value) - fn _update_with_simd(inout self, new_data: SIMD[_, _]): + fn _update_with_simd(mut self, new_data: SIMD[_, _]): """Update the buffer value with new data. Args: @@ -182,7 +182,7 @@ struct AHasher[key: U256](_Hasher): for i in range(0, v64.size, 2): self._large_update(U128(v64[i], v64[i + 1])) - fn update[T: _HashableWithHasher](inout self, value: T): + fn update[T: _HashableWithHasher](mut self, value: T): """Update the buffer value with new hashable value. Args: diff --git a/stdlib/src/hashlib/_hasher.mojo b/stdlib/src/hashlib/_hasher.mojo index e29257a9e0..f30e4de21a 100644 --- a/stdlib/src/hashlib/_hasher.mojo +++ b/stdlib/src/hashlib/_hasher.mojo @@ -17,7 +17,7 @@ from ._ahash import AHasher trait _HashableWithHasher: - fn __hash__[H: _Hasher](self, inout hasher: H): + fn __hash__[H: _Hasher](self, mut hasher: H): ... @@ -25,13 +25,13 @@ trait _Hasher: fn __init__(out self): ... - fn _update_with_bytes(inout self, data: UnsafePointer[UInt8], length: Int): + fn _update_with_bytes(mut self, data: UnsafePointer[UInt8], length: Int): ... - fn _update_with_simd(inout self, value: SIMD[_, _]): + fn _update_with_simd(mut self, value: SIMD[_, _]): ... - fn update[T: _HashableWithHasher](inout self, value: T): + fn update[T: _HashableWithHasher](mut self, value: T): ... fn finish(owned self) -> UInt64: diff --git a/stdlib/src/math/math.mojo b/stdlib/src/math/math.mojo index 98ff2cca07..0c06a6b00a 100644 --- a/stdlib/src/math/math.mojo +++ b/stdlib/src/math/math.mojo @@ -1108,7 +1108,7 @@ fn iota[ buff.store(i, i + offset) -fn iota[type: DType, //](inout v: List[Scalar[type], *_], offset: Int = 0): +fn iota[type: DType, //](mut v: List[Scalar[type], *_], offset: Int = 0): """Fill a list with consecutive numbers starting from the specified offset. Parameters: @@ -1121,7 +1121,7 @@ fn iota[type: DType, //](inout v: List[Scalar[type], *_], offset: Int = 0): iota(v.data, len(v), offset) -fn iota(inout v: List[Int, *_], offset: Int = 0): +fn iota(mut v: List[Int, *_], offset: Int = 0): """Fill a list with consecutive numbers starting from the specified offset. Args: diff --git a/stdlib/src/memory/arc.mojo b/stdlib/src/memory/arc.mojo index 37c03786f7..d7b236af72 100644 --- a/stdlib/src/memory/arc.mojo +++ b/stdlib/src/memory/arc.mojo @@ -60,11 +60,11 @@ struct _ArcPointerInner[T: Movable]: self.refcount = Scalar[DType.uint64](1) self.payload = value^ - fn add_ref(inout self): + fn add_ref(mut self): """Atomically increment the refcount.""" _ = self.refcount.fetch_add(1) - fn drop_ref(inout self) -> Bool: + fn drop_ref(mut self) -> Bool: """Atomically decrement the refcount and return true if the result hits zero.""" return self.refcount.fetch_sub(1) == 1 diff --git a/stdlib/src/memory/maybe_uninitialized.mojo b/stdlib/src/memory/maybe_uninitialized.mojo index 20901a6fff..8d224bdd88 100644 --- a/stdlib/src/memory/maybe_uninitialized.mojo +++ b/stdlib/src/memory/maybe_uninitialized.mojo @@ -62,7 +62,7 @@ struct UnsafeMaybeUninitialized[ElementType: AnyType](CollectionElementNew): fn __init__[ MovableType: Movable ]( - inout self: UnsafeMaybeUninitialized[MovableType], + mut self: UnsafeMaybeUninitialized[MovableType], owned value: MovableType, ): """The memory is now considered initialized. @@ -98,7 +98,7 @@ struct UnsafeMaybeUninitialized[ElementType: AnyType](CollectionElementNew): fn copy_from[ CopyableType: ExplicitlyCopyable ]( - inout self: UnsafeMaybeUninitialized[CopyableType], + mut self: UnsafeMaybeUninitialized[CopyableType], other: UnsafeMaybeUninitialized[CopyableType], ): """Copy another object. @@ -117,7 +117,7 @@ struct UnsafeMaybeUninitialized[ElementType: AnyType](CollectionElementNew): @always_inline fn copy_from[ CopyableType: ExplicitlyCopyable - ](inout self: UnsafeMaybeUninitialized[CopyableType], other: CopyableType): + ](mut self: UnsafeMaybeUninitialized[CopyableType], other: CopyableType): """Copy another object. This function assumes that the current memory is uninitialized. @@ -152,8 +152,8 @@ struct UnsafeMaybeUninitialized[ElementType: AnyType](CollectionElementNew): fn move_from[ MovableType: Movable ]( - inout self: UnsafeMaybeUninitialized[MovableType], - inout other: UnsafeMaybeUninitialized[MovableType], + mut self: UnsafeMaybeUninitialized[MovableType], + mut other: UnsafeMaybeUninitialized[MovableType], ): """Move another object. @@ -174,7 +174,7 @@ struct UnsafeMaybeUninitialized[ElementType: AnyType](CollectionElementNew): fn move_from[ MovableType: Movable ]( - inout self: UnsafeMaybeUninitialized[MovableType], + mut self: UnsafeMaybeUninitialized[MovableType], other: UnsafePointer[MovableType], ): """Move another object. @@ -196,7 +196,7 @@ struct UnsafeMaybeUninitialized[ElementType: AnyType](CollectionElementNew): fn write[ MovableType: Movable ]( - inout self: UnsafeMaybeUninitialized[MovableType], + mut self: UnsafeMaybeUninitialized[MovableType], owned value: MovableType, ): """Write a value into an uninitialized memory location. @@ -235,7 +235,7 @@ struct UnsafeMaybeUninitialized[ElementType: AnyType](CollectionElementNew): return UnsafePointer.address_of(self._array).bitcast[Self.ElementType]() @always_inline - fn assume_initialized_destroy(inout self): + fn assume_initialized_destroy(mut self): """Runs the destructor of the internal value. Calling this method assumes that the memory is initialized. diff --git a/stdlib/src/memory/owned_pointer.mojo b/stdlib/src/memory/owned_pointer.mojo index 4b22f14066..3974daa99f 100644 --- a/stdlib/src/memory/owned_pointer.mojo +++ b/stdlib/src/memory/owned_pointer.mojo @@ -31,7 +31,7 @@ struct OwnedPointer[T: AnyType]: # Life cycle methods # ===-------------------------------------------------------------------===# - fn __init__[T: Movable](inout self: OwnedPointer[T], owned value: T): + fn __init__[T: Movable](mut self: OwnedPointer[T], owned value: T): """Construct a new OwnedPointer[] by moving the passed value into a new backing allocation. Parameters: @@ -45,7 +45,7 @@ struct OwnedPointer[T: AnyType]: fn __init__[ T: ExplicitlyCopyable - ](inout self: OwnedPointer[T], *, copy_value: T): + ](mut self: OwnedPointer[T], *, copy_value: T): """Construct a new OwnedPointer[] by explicitly copying the passed value into a new backing allocation. Parameters: @@ -59,7 +59,7 @@ struct OwnedPointer[T: AnyType]: fn __init__[ T: Copyable, U: NoneType = None - ](inout self: OwnedPointer[T], value: T): + ](mut self: OwnedPointer[T], value: T): """Construct a new OwnedPointer[] by copying the passed value into a new backing allocation. Parameters: @@ -74,7 +74,7 @@ struct OwnedPointer[T: AnyType]: fn __init__[ T: ExplicitlyCopyable - ](inout self: OwnedPointer[T], *, other: OwnedPointer[T],): + ](mut self: OwnedPointer[T], *, other: OwnedPointer[T],): """Construct a new OwnedPointer[] by explicitly copying the value from another OwnedPointer[]. Parameters: diff --git a/stdlib/src/memory/pointer.mojo b/stdlib/src/memory/pointer.mojo index d95a8c1141..4fa37a6e61 100644 --- a/stdlib/src/memory/pointer.mojo +++ b/stdlib/src/memory/pointer.mojo @@ -274,7 +274,7 @@ struct AddressSpace(EqualityComparable, Stringable, Writable): return String.write(self) @always_inline("nodebug") - fn write_to[W: Writer](self, inout writer: W): + fn write_to[W: Writer](self, mut writer: W): """ Formats the address space to the provided Writer. diff --git a/stdlib/src/memory/unsafe_pointer.mojo b/stdlib/src/memory/unsafe_pointer.mojo index 9c1a6eac92..3f8db596af 100644 --- a/stdlib/src/memory/unsafe_pointer.mojo +++ b/stdlib/src/memory/unsafe_pointer.mojo @@ -272,7 +272,7 @@ struct UnsafePointer[ return self + (-1 * Int(offset.__mlir_index__())) @always_inline - fn __iadd__[T: IntLike, //](inout self, offset: T): + fn __iadd__[T: IntLike, //](mut self, offset: T): """Add an offset to this pointer. Parameters: @@ -284,7 +284,7 @@ struct UnsafePointer[ self = self + offset @always_inline - fn __isub__[T: IntLike, //](inout self, offset: T): + fn __isub__[T: IntLike, //](mut self, offset: T): """Subtract an offset from this pointer. Parameters: @@ -420,7 +420,7 @@ struct UnsafePointer[ return hex(int(self)) @no_inline - fn write_to[W: Writer](self, inout writer: W): + fn write_to[W: Writer](self, mut writer: W): """ Formats this pointer address to the provided Writer. diff --git a/stdlib/src/os/atomic.mojo b/stdlib/src/os/atomic.mojo index 28980d33e9..e2b8f1c65e 100644 --- a/stdlib/src/os/atomic.mojo +++ b/stdlib/src/os/atomic.mojo @@ -53,7 +53,7 @@ struct Atomic[type: DType, *, scope: StringLiteral = ""]: self.value = value @always_inline - fn load(inout self) -> Scalar[type]: + fn load(mut self) -> Scalar[type]: """Loads the current value from the atomic. Returns: @@ -92,7 +92,7 @@ struct Atomic[type: DType, *, scope: StringLiteral = ""]: ) @always_inline - fn fetch_add(inout self, rhs: Scalar[type]) -> Scalar[type]: + fn fetch_add(mut self, rhs: Scalar[type]) -> Scalar[type]: """Performs atomic in-place add. Atomically replaces the current value with the result of arithmetic @@ -111,7 +111,7 @@ struct Atomic[type: DType, *, scope: StringLiteral = ""]: return Self._fetch_add(value_addr, rhs) @always_inline - fn __iadd__(inout self, rhs: Scalar[type]): + fn __iadd__(mut self, rhs: Scalar[type]): """Performs atomic in-place add. Atomically replaces the current value with the result of arithmetic @@ -126,7 +126,7 @@ struct Atomic[type: DType, *, scope: StringLiteral = ""]: _ = self.fetch_add(rhs) @always_inline - fn fetch_sub(inout self, rhs: Scalar[type]) -> Scalar[type]: + fn fetch_sub(mut self, rhs: Scalar[type]) -> Scalar[type]: """Performs atomic in-place sub. Atomically replaces the current value with the result of arithmetic @@ -150,7 +150,7 @@ struct Atomic[type: DType, *, scope: StringLiteral = ""]: ](value_addr.address, rhs.value) @always_inline - fn __isub__(inout self, rhs: Scalar[type]): + fn __isub__(mut self, rhs: Scalar[type]): """Performs atomic in-place sub. Atomically replaces the current value with the result of arithmetic @@ -166,7 +166,7 @@ struct Atomic[type: DType, *, scope: StringLiteral = ""]: @always_inline fn compare_exchange_weak( - inout self, inout expected: Scalar[type], desired: Scalar[type] + mut self, mut expected: Scalar[type], desired: Scalar[type] ) -> Bool: """Atomically compares the self value with that of the expected value. If the values are equal, then the self value is replaced with the @@ -224,7 +224,7 @@ struct Atomic[type: DType, *, scope: StringLiteral = ""]: _max_impl[scope=scope](ptr, rhs) @always_inline - fn max(inout self, rhs: Scalar[type]): + fn max(mut self, rhs: Scalar[type]): """Performs atomic in-place max. Atomically replaces the current value with the result of max of the @@ -264,7 +264,7 @@ struct Atomic[type: DType, *, scope: StringLiteral = ""]: _min_impl[scope=scope](ptr, rhs) @always_inline - fn min(inout self, rhs: Scalar[type]): + fn min(mut self, rhs: Scalar[type]): """Performs atomic in-place min. Atomically replaces the current value with the result of min of the @@ -294,7 +294,7 @@ fn _compare_exchange_weak_integral_impl[ type: DType, //, *, scope: StringLiteral ]( value_addr: UnsafePointer[Scalar[type], **_], - inout expected: Scalar[type], + mut expected: Scalar[type], desired: Scalar[type], ) -> Bool: constrained[type.is_integral(), "the input type must be integral"]() diff --git a/stdlib/src/os/fstat.mojo b/stdlib/src/os/fstat.mojo index ba298916d4..83e493bc7a 100644 --- a/stdlib/src/os/fstat.mojo +++ b/stdlib/src/os/fstat.mojo @@ -96,7 +96,7 @@ struct stat_result(Stringable, Writable): """User defined flags for file.""" fn __init__( - inout self, + mut self, /, *, st_mode: Int, @@ -151,7 +151,7 @@ struct stat_result(Stringable, Writable): self.st_flags = st_flags @no_inline - fn write_to[W: Writer](self, inout writer: W): + fn write_to[W: Writer](self, mut writer: W): """ Formats this path to the provided Writer. diff --git a/stdlib/src/pathlib/path.mojo b/stdlib/src/pathlib/path.mojo index 5e47d0d846..c6e9016b5e 100644 --- a/stdlib/src/pathlib/path.mojo +++ b/stdlib/src/pathlib/path.mojo @@ -124,7 +124,7 @@ struct Path( res /= suffix return res - fn __itruediv__(inout self, suffix: String): + fn __itruediv__(mut self, suffix: String): """Joins two paths using the system-defined path separator. Args: @@ -153,7 +153,7 @@ struct Path( """ return self.path.byte_length() > 0 - fn write_to[W: Writer](self, inout writer: W): + fn write_to[W: Writer](self, mut writer: W): """ Formats this path to the provided Writer. @@ -225,7 +225,7 @@ struct Path( return hash(self.path) - fn __hash__[H: _Hasher](self, inout hasher: H): + fn __hash__[H: _Hasher](self, mut hasher: H): """Updates hasher with the path string value. Parameters: diff --git a/stdlib/src/pwd/pwd.mojo b/stdlib/src/pwd/pwd.mojo index a6342d42b4..105b26e7f2 100644 --- a/stdlib/src/pwd/pwd.mojo +++ b/stdlib/src/pwd/pwd.mojo @@ -40,7 +40,7 @@ struct Passwd(Stringable): var pw_shell: String """Shell program.""" - fn write_to[W: Writer](self, inout writer: W): + fn write_to[W: Writer](self, mut writer: W): """Formats this string to the provided Writer. Parameters: diff --git a/stdlib/src/python/_bindings.mojo b/stdlib/src/python/_bindings.mojo index 2921ebb3bd..f5e14cd329 100644 --- a/stdlib/src/python/_bindings.mojo +++ b/stdlib/src/python/_bindings.mojo @@ -33,13 +33,13 @@ from python.python import _get_global_python_itf trait ConvertibleFromPython(CollectionElement): - """Denotes a type that can attempt construction from a borrowed Python + """Denotes a type that can attempt construction from a read-only Python object. """ @staticmethod fn try_from_python(obj: PythonObject) raises -> Self: - """Attempt to construct an instance of this object from a borrowed + """Attempt to construct an instance of this object from a read-only Python value. Args: @@ -113,7 +113,7 @@ fn python_type_object[ basicsize: sizeof[PyMojoObject[T]](), itemsize: 0, flags: Py_TPFLAGS_DEFAULT, - # Note: This pointer is only "borrowed" by PyType_FromSpec. + # Note: This pointer is only "read-only" by PyType_FromSpec. slots: slots.unsafe_ptr(), } @@ -138,7 +138,7 @@ fn python_type_object[ # # The latter is the C function signature that the CPython API expects a # PyObject initializer function to have. The former is an unsafe form of the -# `fn(inout self)` signature that Mojo types with default constructors provide. +# `fn(mut self)` signature that Mojo types with default constructors provide. # # To support CPython calling a Mojo types default constructor, we need to # provide a wrapper function (around the Mojo constructor) that has the @@ -221,22 +221,22 @@ fn py_c_function_wrapper[ # > When a C function is called from Python, it borrows references to its # > arguments from the caller. The caller owns a reference to the object, - # > so the borrowed reference’s lifetime is guaranteed until the function - # > returns. Only when such a borrowed reference must be stored or passed + # > so the read-only reference’s lifetime is guaranteed until the function + # > returns. Only when such a read-only reference must be stored or passed # > on, it must be turned into an owned reference by calling Py_INCREF(). # > # > -- https://docs.python.org/3/extending/extending.html#ownership-rules # SAFETY: # Here we illegally (but carefully) construct _owned_ `PythonObject` - # values from the borrowed object reference arguments. We are careful + # values from the read-only object reference arguments. We are careful # down below to prevent the destructor for these objects from running # so that we do not illegally decrement the reference count of these # objects we do not own. # - # This is valid to do, because these are passed using the `borrowed` + # This is valid to do, because these are passed using the `read-only` # argument convention to `user_func`, so logically they are treated - # as Python borrowed references. + # as Python read-only references. var py_self = PythonObject(py_self_ptr) var args = TypedPythonObject["Tuple"]( unsafe_unchecked_from=PythonObject(args_ptr) diff --git a/stdlib/src/python/_cpython.mojo b/stdlib/src/python/_cpython.mojo index defbd9d4b9..4a28b2d117 100644 --- a/stdlib/src/python/_cpython.mojo +++ b/stdlib/src/python/_cpython.mojo @@ -492,7 +492,7 @@ struct PyObject(Stringable, Representable, Writable): # Methods # ===-------------------------------------------------------------------===# - fn write_to[W: Writer](self, inout writer: W): + fn write_to[W: Writer](self, mut writer: W): """Formats to the provided Writer. Parameters: @@ -580,7 +580,7 @@ struct PyModuleDef_Base(Stringable, Representable, Writable): # Methods # ===-------------------------------------------------------------------===# - fn write_to[W: Writer](self, inout writer: W): + fn write_to[W: Writer](self, mut writer: W): """Formats to the provided Writer. Parameters: @@ -700,7 +700,7 @@ struct PyModuleDef(Stringable, Representable, Writable): # Methods # ===-------------------------------------------------------------------===# - fn write_to[W: Writer](self, inout writer: W): + fn write_to[W: Writer](self, mut writer: W): """Formats to the provided Writer. Parameters: @@ -797,7 +797,7 @@ struct CPython: pass @staticmethod - fn destroy(inout existing: CPython): + fn destroy(mut existing: CPython): if existing.logging_enabled: print("CPython destroy") var remaining_refs = existing.total_ref_count.take_pointee() @@ -861,15 +861,15 @@ struct CPython: # Reference count management # ===-------------------------------------------------------------------===# - fn _inc_total_rc(inout self): + fn _inc_total_rc(mut self): var v = self.total_ref_count.take_pointee() self.total_ref_count.init_pointee_move(v + 1) - fn _dec_total_rc(inout self): + fn _dec_total_rc(mut self): var v = self.total_ref_count.take_pointee() self.total_ref_count.init_pointee_move(v - 1) - fn Py_IncRef(inout self, ptr: PyObjectPtr): + fn Py_IncRef(mut self, ptr: PyObjectPtr): """[Reference]( https://docs.python.org/3/c-api/refcounting.html#c.Py_IncRef). """ @@ -879,7 +879,7 @@ struct CPython: self.lib.call["Py_IncRef"](ptr) self._inc_total_rc() - fn Py_DecRef(inout self, ptr: PyObjectPtr): + fn Py_DecRef(mut self, ptr: PyObjectPtr): """[Reference]( https://docs.python.org/3/c-api/refcounting.html#c.Py_DecRef). """ @@ -893,7 +893,7 @@ struct CPython: # have to always be the case - but often it is and it's convenient for # debugging. We shouldn't rely on this function anywhere - its only purpose # is debugging. - fn _Py_REFCNT(inout self, ptr: PyObjectPtr) -> Int: + fn _Py_REFCNT(mut self, ptr: PyObjectPtr) -> Int: if ptr._get_ptr_as_int() == 0: return -1 # NOTE: @@ -915,19 +915,19 @@ struct CPython: # Python GIL and threading # ===-------------------------------------------------------------------===# - fn PyGILState_Ensure(inout self) -> PyGILState_STATE: + fn PyGILState_Ensure(mut self) -> PyGILState_STATE: """[Reference]( https://docs.python.org/3/c-api/init.html#c.PyGILState_Ensure). """ return self.lib.call["PyGILState_Ensure", PyGILState_STATE]() - fn PyGILState_Release(inout self, state: PyGILState_STATE): + fn PyGILState_Release(mut self, state: PyGILState_STATE): """[Reference]( https://docs.python.org/3/c-api/init.html#c.PyGILState_Release). """ self.lib.call["PyGILState_Release"](state) - fn PyEval_SaveThread(inout self) -> UnsafePointer[PyThreadState]: + fn PyEval_SaveThread(mut self) -> UnsafePointer[PyThreadState]: """[Reference]( https://docs.python.org/3/c-api/init.html#c.PyEval_SaveThread). """ @@ -936,7 +936,7 @@ struct CPython: "PyEval_SaveThread", UnsafePointer[PyThreadState] ]() - fn PyEval_RestoreThread(inout self, state: UnsafePointer[PyThreadState]): + fn PyEval_RestoreThread(mut self, state: UnsafePointer[PyThreadState]): """[Reference]( https://docs.python.org/3/c-api/init.html#c.PyEval_RestoreThread). """ @@ -946,7 +946,7 @@ struct CPython: # Python Dict operations # ===-------------------------------------------------------------------===# - fn PyDict_New(inout self) -> PyObjectPtr: + fn PyDict_New(mut self) -> PyObjectPtr: """[Reference]( https://docs.python.org/3/c-api/dict.html#c.PyDict_New). """ @@ -964,7 +964,7 @@ struct CPython: # int PyDict_SetItem(PyObject *p, PyObject *key, PyObject *val) fn PyDict_SetItem( - inout self, dict_obj: PyObjectPtr, key: PyObjectPtr, value: PyObjectPtr + mut self, dict_obj: PyObjectPtr, key: PyObjectPtr, value: PyObjectPtr ) -> c_int: """[Reference]( https://docs.python.org/3/c-api/dict.html#c.PyDict_SetItem). @@ -982,7 +982,7 @@ struct CPython: return r fn PyDict_GetItemWithError( - inout self, dict_obj: PyObjectPtr, key: PyObjectPtr + mut self, dict_obj: PyObjectPtr, key: PyObjectPtr ) -> PyObjectPtr: """[Reference]( https://docs.python.org/3/c-api/dict.html#c.PyDict_GetItemWithError). @@ -994,7 +994,7 @@ struct CPython: self.log("PyDict_GetItemWithError, key: ", key._get_ptr_as_int()) return r - fn PyDict_Check(inout self, maybe_dict: PyObjectPtr) -> Bool: + fn PyDict_Check(mut self, maybe_dict: PyObjectPtr) -> Bool: """[Reference]( https://docs.python.org/3/c-api/dict.html#c.PyDict_Check). """ @@ -1006,7 +1006,7 @@ struct CPython: self.Py_DecRef(my_type) return result - fn PyDict_Type(inout self) -> PyObjectPtr: + fn PyDict_Type(mut self) -> PyObjectPtr: """[Reference]( https://docs.python.org/3/c-api/dict.html#c.PyDict_Type). """ @@ -1016,7 +1016,7 @@ struct CPython: # int PyDict_Next(PyObject *p, Py_ssize_t *ppos, PyObject **pkey, PyObject **pvalue) fn PyDict_Next( - inout self, dictionary: PyObjectPtr, p: Int + mut self, dictionary: PyObjectPtr, p: Int ) -> PyKeysValuePair: """[Reference]( https://docs.python.org/3/c-api/dict.html#c.PyDict_Next). @@ -1061,7 +1061,7 @@ struct CPython: # ===-------------------------------------------------------------------===# fn PyImport_ImportModule( - inout self, + mut self, name: StringRef, ) -> PyObjectPtr: """[Reference]( @@ -1081,7 +1081,7 @@ struct CPython: self._inc_total_rc() return r - fn PyImport_AddModule(inout self, name: StringRef) -> PyObjectPtr: + fn PyImport_AddModule(mut self, name: StringRef) -> PyObjectPtr: """[Reference]( https://docs.python.org/3/c-api/import.html#c.PyImport_AddModule). """ @@ -1090,7 +1090,7 @@ struct CPython: ) fn PyModule_Create( - inout self, + mut self, name: String, ) -> PyObjectPtr: """[Reference]( @@ -1118,7 +1118,7 @@ struct CPython: ) fn PyModule_AddFunctions( - inout self, + mut self, mod: PyObjectPtr, functions: UnsafePointer[PyMethodDef], ) -> c_int: @@ -1128,7 +1128,7 @@ struct CPython: return self.lib.call["PyModule_AddFunctions", c_int](mod, functions) fn PyModule_AddObjectRef( - inout self, + mut self, module: PyObjectPtr, name: UnsafePointer[c_char], value: PyObjectPtr, @@ -1141,7 +1141,7 @@ struct CPython: module, name, value ) - fn PyModule_GetDict(inout self, name: PyObjectPtr) -> PyObjectPtr: + fn PyModule_GetDict(mut self, name: PyObjectPtr) -> PyObjectPtr: """[Reference]( https://docs.python.org/3/c-api/module.html#c.PyModule_GetDict). """ @@ -1151,7 +1151,7 @@ struct CPython: # Python Type operations # ===-------------------------------------------------------------------===# - fn Py_TYPE(inout self, ob_raw: PyObjectPtr) -> UnsafePointer[PyTypeObject]: + fn Py_TYPE(mut self, ob_raw: PyObjectPtr) -> UnsafePointer[PyTypeObject]: """Get the PyTypeObject field of a Python object.""" # Note: @@ -1165,12 +1165,12 @@ struct CPython: return ob_raw.unsized_obj_ptr[].object_type fn PyType_GetName( - inout self, type: UnsafePointer[PyTypeObject] + mut self, type: UnsafePointer[PyTypeObject] ) -> PyObjectPtr: return self.lib.call["PyType_GetName", PyObjectPtr](type) fn PyType_FromSpec( - inout self, spec: UnsafePointer[PyType_Spec] + mut self, spec: UnsafePointer[PyType_Spec] ) -> PyObjectPtr: """[Reference]( https://docs.python.org/3/c-api/type.html#c.PyType_FromSpec). @@ -1178,7 +1178,7 @@ struct CPython: return self.lib.call["PyType_FromSpec", PyObjectPtr](spec) fn PyType_GenericAlloc( - inout self, + mut self, type: UnsafePointer[PyTypeObject], nitems: Py_ssize_t, ) -> PyObjectPtr: @@ -1188,7 +1188,7 @@ struct CPython: # Python Evaluation # ===-------------------------------------------------------------------===# - fn PyRun_SimpleString(inout self, strref: StringRef) -> Bool: + fn PyRun_SimpleString(mut self, strref: StringRef) -> Bool: """Executes the given Python code. Args: @@ -1207,7 +1207,7 @@ struct CPython: ) fn PyRun_String( - inout self, + mut self, strref: StringRef, globals: PyObjectPtr, locals: PyObjectPtr, @@ -1234,7 +1234,7 @@ struct CPython: return result fn PyEval_EvalCode( - inout self, + mut self, co: PyObjectPtr, globals: PyObjectPtr, locals: PyObjectPtr, @@ -1248,14 +1248,14 @@ struct CPython: self._inc_total_rc() return result - fn PyEval_GetBuiltins(inout self) -> PyObjectPtr: + fn PyEval_GetBuiltins(mut self) -> PyObjectPtr: """[Reference]( https://docs.python.org/3/c-api/reflection.html#c.PyEval_GetBuiltins). """ return self.lib.call["PyEval_GetBuiltins", PyObjectPtr]() fn Py_CompileString( - inout self, + mut self, strref: StringRef, filename: StringRef, compile_mode: Int, @@ -1275,7 +1275,7 @@ struct CPython: # ===-------------------------------------------------------------------===# fn Py_Is( - inout self, + mut self, rhs: PyObjectPtr, lhs: PyObjectPtr, ) -> Bool: @@ -1289,7 +1289,7 @@ struct CPython: else: return rhs == lhs - fn PyObject_Type(inout self, obj: PyObjectPtr) -> PyObjectPtr: + fn PyObject_Type(mut self, obj: PyObjectPtr) -> PyObjectPtr: """[Reference]( https://docs.python.org/3/c-api/object.html#c.PyObject_Type). """ @@ -1298,7 +1298,7 @@ struct CPython: self._inc_total_rc() return p - fn PyObject_Str(inout self, obj: PyObjectPtr) -> PyObjectPtr: + fn PyObject_Str(mut self, obj: PyObjectPtr) -> PyObjectPtr: """[Reference]( https://docs.python.org/3/c-api/object.html#c.PyObject_Str). """ @@ -1308,7 +1308,7 @@ struct CPython: return p fn PyObject_GetItem( - inout self, obj: PyObjectPtr, key: PyObjectPtr + mut self, obj: PyObjectPtr, key: PyObjectPtr ) -> PyObjectPtr: """[Reference]( https://docs.python.org/3/c-api/object.html#c.PyObject_GetItem). @@ -1330,7 +1330,7 @@ struct CPython: return r fn PyObject_SetItem( - inout self, obj: PyObjectPtr, key: PyObjectPtr, value: PyObjectPtr + mut self, obj: PyObjectPtr, key: PyObjectPtr, value: PyObjectPtr ) -> c_int: """[Reference]( https://docs.python.org/3/c-api/object.html#c.PyObject_SetItem). @@ -1352,7 +1352,7 @@ struct CPython: return r fn PyObject_GetAttrString( - inout self, + mut self, obj: PyObjectPtr, name: StringRef, ) -> PyObjectPtr: @@ -1378,7 +1378,7 @@ struct CPython: return r fn PyObject_SetAttrString( - inout self, obj: PyObjectPtr, name: StringRef, new_value: PyObjectPtr + mut self, obj: PyObjectPtr, name: StringRef, new_value: PyObjectPtr ) -> c_int: """[Reference]( https://docs.python.org/3/c-api/object.html#c.PyObject_SetAttrString). @@ -1402,7 +1402,7 @@ struct CPython: return r fn PyObject_CallObject( - inout self, + mut self, callable_obj: PyObjectPtr, args: PyObjectPtr, ) -> PyObjectPtr: @@ -1426,7 +1426,7 @@ struct CPython: return r fn PyObject_Call( - inout self, + mut self, callable_obj: PyObjectPtr, args: PyObjectPtr, kwargs: PyObjectPtr, @@ -1450,26 +1450,26 @@ struct CPython: self._inc_total_rc() return r - fn PyObject_IsTrue(inout self, obj: PyObjectPtr) -> c_int: + fn PyObject_IsTrue(mut self, obj: PyObjectPtr) -> c_int: """[Reference]( https://docs.python.org/3/c-api/object.html#c.PyObject_IsTrue). """ return self.lib.call["PyObject_IsTrue", c_int](obj) - fn PyObject_Length(inout self, obj: PyObjectPtr) -> Int: + fn PyObject_Length(mut self, obj: PyObjectPtr) -> Int: """[Reference]( https://docs.python.org/3/c-api/object.html#c.PyObject_Length). """ return int(self.lib.call["PyObject_Length", Int](obj)) - fn PyObject_Hash(inout self, obj: PyObjectPtr) -> Int: + fn PyObject_Hash(mut self, obj: PyObjectPtr) -> Int: """[Reference]( https://docs.python.org/3/c-api/object.html#c.PyObject_Hash). """ return int(self.lib.call["PyObject_Hash", Int](obj)) fn PyObject_GetIter( - inout self, traversablePyObject: PyObjectPtr + mut self, traversablePyObject: PyObjectPtr ) -> PyObjectPtr: """[Reference]( https://docs.python.org/3/c-api/object.html#c.PyObject_GetIter). @@ -1496,7 +1496,7 @@ struct CPython: # Python Tuple operations # ===-------------------------------------------------------------------===# - fn PyTuple_New(inout self, count: Int) -> PyObjectPtr: + fn PyTuple_New(mut self, count: Int) -> PyObjectPtr: """[Reference]( https://docs.python.org/3/c-api/tuple.html#c.PyTuple_New). """ @@ -1515,7 +1515,7 @@ struct CPython: return r fn PyTuple_GetItem( - inout self, tuple: PyObjectPtr, pos: Py_ssize_t + mut self, tuple: PyObjectPtr, pos: Py_ssize_t ) -> PyObjectPtr: """[Reference]( https://docs.python.org/3/c-api/tuple.html#c.PyTuple_GetItem). @@ -1523,7 +1523,7 @@ struct CPython: return self.lib.call["PyTuple_GetItem", PyObjectPtr](tuple, pos) fn PyTuple_SetItem( - inout self, tuple_obj: PyObjectPtr, index: Int, element: PyObjectPtr + mut self, tuple_obj: PyObjectPtr, index: Int, element: PyObjectPtr ) -> c_int: """[Reference]( https://docs.python.org/3/c-api/tuple.html#c.PyTuple_SetItem). @@ -1540,7 +1540,7 @@ struct CPython: # Python List operations # ===-------------------------------------------------------------------===# - fn PyList_New(inout self, length: Int) -> PyObjectPtr: + fn PyList_New(mut self, length: Int) -> PyObjectPtr: """[Reference]( https://docs.python.org/3/c-api/list.html#c.PyList_New). """ @@ -1559,7 +1559,7 @@ struct CPython: return r fn PyList_SetItem( - inout self, list_obj: PyObjectPtr, index: Int, value: PyObjectPtr + mut self, list_obj: PyObjectPtr, index: Int, value: PyObjectPtr ) -> PyObjectPtr: """[Reference]( https://docs.python.org/3/c-api/list.html#c.PyList_SetItem). @@ -1573,7 +1573,7 @@ struct CPython: ) fn PyList_GetItem( - inout self, list_obj: PyObjectPtr, index: Int + mut self, list_obj: PyObjectPtr, index: Int ) -> PyObjectPtr: """[Reference]( https://docs.python.org/3/c-api/list.html#c.PyList_GetItem). @@ -1585,7 +1585,7 @@ struct CPython: # ref: https://docs.python.org/3/c-api/concrete.html # ===-------------------------------------------------------------------===# - fn Py_None(inout self) -> PyObjectPtr: + fn Py_None(mut self) -> PyObjectPtr: """Get a None value, of type NoneType. [Reference]( https://docs.python.org/3/c-api/none.html#c.Py_None).""" @@ -1607,7 +1607,7 @@ struct CPython: # Boolean Objects # ===-------------------------------------------------------------------===# - fn PyBool_FromLong(inout self, value: c_long) -> PyObjectPtr: + fn PyBool_FromLong(mut self, value: c_long) -> PyObjectPtr: """[Reference]( https://docs.python.org/3/c-api/bool.html#c.PyBool_FromLong). """ @@ -1629,7 +1629,7 @@ struct CPython: # Integer Objects # ===-------------------------------------------------------------------===# - fn PyLong_FromSsize_t(inout self, value: c_ssize_t) -> PyObjectPtr: + fn PyLong_FromSsize_t(mut self, value: c_ssize_t) -> PyObjectPtr: """[Reference]( https://docs.python.org/3/c-api/long.html#c.PyLong_FromSsize_t). """ @@ -1647,7 +1647,7 @@ struct CPython: self._inc_total_rc() return r - fn PyLong_FromSize_t(inout self, value: c_size_t) -> PyObjectPtr: + fn PyLong_FromSize_t(mut self, value: c_size_t) -> PyObjectPtr: """[Reference]( https://docs.python.org/3/c-api/long.html#c.PyLong_FromSize_t). """ @@ -1665,7 +1665,7 @@ struct CPython: self._inc_total_rc() return r - fn PyLong_AsSsize_t(inout self, py_object: PyObjectPtr) -> c_ssize_t: + fn PyLong_AsSsize_t(mut self, py_object: PyObjectPtr) -> c_ssize_t: """[Reference]( https://docs.python.org/3/c-api/long.html#c.PyLong_AsSsize_t). """ @@ -1675,7 +1675,7 @@ struct CPython: # Floating-Point Objects # ===-------------------------------------------------------------------===# - fn PyFloat_FromDouble(inout self, value: Float64) -> PyObjectPtr: + fn PyFloat_FromDouble(mut self, value: Float64) -> PyObjectPtr: """[Reference]( https://docs.python.org/3/c-api/float.html#c.PyFloat_FromDouble). """ @@ -1693,7 +1693,7 @@ struct CPython: self._inc_total_rc() return r - fn PyFloat_AsDouble(inout self, py_object: PyObjectPtr) -> Float64: + fn PyFloat_AsDouble(mut self, py_object: PyObjectPtr) -> Float64: """[Reference]( https://docs.python.org/3/c-api/float.html#c.PyFloat_AsDouble). """ @@ -1703,7 +1703,7 @@ struct CPython: # Unicode Objects # ===-------------------------------------------------------------------===# - fn PyUnicode_DecodeUTF8(inout self, strref: StringRef) -> PyObjectPtr: + fn PyUnicode_DecodeUTF8(mut self, strref: StringRef) -> PyObjectPtr: """[Reference]( https://docs.python.org/3/c-api/unicode.html#c.PyUnicode_DecodeUTF8). """ @@ -1725,7 +1725,7 @@ struct CPython: self._inc_total_rc() return r - fn PyUnicode_DecodeUTF8(inout self, strslice: StringSlice) -> PyObjectPtr: + fn PyUnicode_DecodeUTF8(mut self, strslice: StringSlice) -> PyObjectPtr: """[Reference]( https://docs.python.org/3/c-api/unicode.html#c.PyUnicode_DecodeUTF8). """ @@ -1746,7 +1746,7 @@ struct CPython: self._inc_total_rc() return r - fn PySlice_FromSlice(inout self, slice: Slice) -> PyObjectPtr: + fn PySlice_FromSlice(mut self, slice: Slice) -> PyObjectPtr: # Convert Mojo Slice to Python slice parameters # Note: Deliberately avoid using `span.indices()` here and instead pass # the Slice parameters directly to Python. Python's C implementation @@ -1773,7 +1773,7 @@ struct CPython: return py_slice - fn PyUnicode_AsUTF8AndSize(inout self, py_object: PyObjectPtr) -> StringRef: + fn PyUnicode_AsUTF8AndSize(mut self, py_object: PyObjectPtr) -> StringRef: """[Reference]( https://docs.python.org/3/c-api/unicode.html#c.PyUnicode_AsUTF8AndSize). """ @@ -1788,19 +1788,19 @@ struct CPython: # Python Error operations # ===-------------------------------------------------------------------===# - fn PyErr_Clear(inout self): + fn PyErr_Clear(mut self): """[Reference]( https://docs.python.org/3/c-api/exceptions.html#c.PyErr_Clear). """ self.lib.call["PyErr_Clear"]() - fn PyErr_Occurred(inout self) -> Bool: + fn PyErr_Occurred(mut self) -> Bool: """[Reference]( https://docs.python.org/3/c-api/exceptions.html#c.PyErr_Occurred). """ return not self.lib.call["PyErr_Occurred", PyObjectPtr]().is_null() - fn PyErr_Fetch(inout self) -> PyObjectPtr: + fn PyErr_Fetch(mut self) -> PyObjectPtr: """[Reference]( https://docs.python.org/3/c-api/exceptions.html#c.PyErr_Fetch). """ @@ -1827,14 +1827,14 @@ struct CPython: _ = traceback return r - fn PyErr_SetNone(inout self, type: PyObjectPtr): + fn PyErr_SetNone(mut self, type: PyObjectPtr): """[Reference]( https://docs.python.org/3/c-api/exceptions.html#c.PyErr_SetNone). """ self.lib.call["PyErr_SetNone"](type) fn PyErr_SetString( - inout self, + mut self, type: PyObjectPtr, message: UnsafePointer[c_char], ): @@ -1848,10 +1848,10 @@ struct CPython: # ===-------------------------------------------------------------------===# fn get_error_global( - inout self, + mut self, global_name: StringLiteral, ) -> PyObjectPtr: - """Get a Python borrowed reference to the specified global exception + """Get a Python read-only reference to the specified global exception object. """ @@ -1872,7 +1872,7 @@ struct CPython: # Python Iterator operations # ===-------------------------------------------------------------------===# - fn PyIter_Next(inout self, iterator: PyObjectPtr) -> PyObjectPtr: + fn PyIter_Next(mut self, iterator: PyObjectPtr) -> PyObjectPtr: """[Reference]( https://docs.python.org/3/c-api/iter.html#c.PyIter_Next). """ @@ -1893,13 +1893,13 @@ struct CPython: self._inc_total_rc() return next_obj - fn PyIter_Check(inout self, obj: PyObjectPtr) -> Bool: + fn PyIter_Check(mut self, obj: PyObjectPtr) -> Bool: """[Reference]( https://docs.python.org/3/c-api/iter.html#c.PyIter_Check). """ return self.lib.call["PyIter_Check", c_int](obj) != 0 - fn PySequence_Check(inout self, obj: PyObjectPtr) -> Bool: + fn PySequence_Check(mut self, obj: PyObjectPtr) -> Bool: """[Reference]( https://docs.python.org/3/c-api/sequence.html#c.PySequence_Check). """ @@ -1910,7 +1910,7 @@ struct CPython: # ===-------------------------------------------------------------------===# fn PySlice_New( - inout self, start: PyObjectPtr, stop: PyObjectPtr, step: PyObjectPtr + mut self, start: PyObjectPtr, stop: PyObjectPtr, step: PyObjectPtr ) -> PyObjectPtr: """[Reference]( https://docs.python.org/3/c-api/slice.html#c.PySlice_New). diff --git a/stdlib/src/python/python.mojo b/stdlib/src/python/python.mojo index 80437fc9e2..8771e54c6f 100644 --- a/stdlib/src/python/python.mojo +++ b/stdlib/src/python/python.mojo @@ -47,10 +47,10 @@ fn _init_python_global() -> _PythonGlobal: struct _PythonGlobal: var cpython: CPython - fn __moveinit__(inout self, owned other: Self): + fn __moveinit__(mut self, owned other: Self): self.cpython = other.cpython^ - fn __init__(inout self): + fn __init__(mut self): self.cpython = CPython() fn __del__(owned self): @@ -99,7 +99,7 @@ struct Python: """ self.impl = existing.impl - fn eval(inout self, code: StringRef) -> Bool: + fn eval(mut self, code: StringRef) -> Bool: """Executes the given Python code. Args: @@ -127,7 +127,7 @@ struct Python: `PythonObject` containing the result of the evaluation. """ var cpython = _get_global_python_itf().cpython() - # PyImport_AddModule returns a borrowed reference. + # PyImport_AddModule returns a read-only reference. var module = PythonObject.from_borrowed_ptr( cpython.PyImport_AddModule(name) ) @@ -265,7 +265,7 @@ struct Python: @staticmethod fn add_functions( - inout module: TypedPythonObject["Module"], + mut module: TypedPythonObject["Module"], owned functions: List[PyMethodDef], ) raises: """Adds functions to a PyModule object. @@ -287,7 +287,7 @@ struct Python: @staticmethod fn unsafe_add_methods( - inout module: TypedPythonObject["Module"], + mut module: TypedPythonObject["Module"], functions: UnsafePointer[PyMethodDef], ) raises: """Adds methods to a PyModule object. @@ -314,7 +314,7 @@ struct Python: @staticmethod fn add_object( - inout module: TypedPythonObject["Module"], + mut module: TypedPythonObject["Module"], name: StringLiteral, value: PythonObject, ) raises: @@ -366,7 +366,7 @@ struct Python: return PythonObject([]) @no_inline - fn __str__(inout self, str_obj: PythonObject) -> StringRef: + fn __str__(mut self, str_obj: PythonObject) -> StringRef: """Return a string representing the given Python object. Args: @@ -379,7 +379,7 @@ struct Python: return cpython.PyUnicode_AsUTF8AndSize(str_obj.py_object) @staticmethod - fn throw_python_exception_if_error_state(inout cpython: CPython) raises: + fn throw_python_exception_if_error_state(mut cpython: CPython) raises: """Raise an exception if CPython interpreter is in an error state. Args: @@ -389,7 +389,7 @@ struct Python: raise Python.unsafe_get_python_exception(cpython) @staticmethod - fn unsafe_get_python_exception(inout cpython: CPython) -> Error: + fn unsafe_get_python_exception(mut cpython: CPython) -> Error: """Get the `Error` object corresponding to the current CPython interpreter error state. diff --git a/stdlib/src/python/python_object.mojo b/stdlib/src/python/python_object.mojo index a579696179..4566b11501 100644 --- a/stdlib/src/python/python_object.mojo +++ b/stdlib/src/python/python_object.mojo @@ -87,7 +87,7 @@ struct _PyIter(Sized): # Trait implementations # ===-------------------------------------------------------------------===# - fn __next__(inout self: _PyIter) -> PythonObject: + fn __next__(mut self: _PyIter) -> PythonObject: """Return the next item and update to point to subsequent item. Returns: @@ -222,7 +222,7 @@ struct TypedPythonObject[type_hint: StringLiteral]( raise Python.unsafe_get_python_exception(cpython) # TODO(MSTDL-911): Avoid unnecessary owned reference counts when - # returning borrowed PythonObject values. + # returning read-only PythonObject values. return PythonObject.from_borrowed_ptr(item) @@ -276,7 +276,7 @@ struct PythonObject( @staticmethod fn from_borrowed_ptr(borrowed_ptr: PyObjectPtr) -> Self: - """Initialize this object from a borrowed reference-counted Python + """Initialize this object from a read-only reference-counted Python object pointer. The reference count of the pointee object will be incremented, and @@ -294,7 +294,7 @@ struct PythonObject( pointer returned by 'Borrowed reference'-type objects. Args: - borrowed_ptr: A borrowed reference counted pointer to a Python + borrowed_ptr: A read-only reference counted pointer to a Python object. Returns: @@ -303,7 +303,7 @@ struct PythonObject( var cpython = _get_global_python_itf().cpython() # SAFETY: - # We were passed a Python 'borrowed reference', so for it to be + # We were passed a Python 'read-only reference', so for it to be # safe to store this reference, we must increment the reference # count to convert this to a 'strong reference'. cpython.Py_IncRef(borrowed_ptr) @@ -374,7 +374,7 @@ struct PythonObject( self.py_object = cpython.PyLong_FromSsize_t(integer) @implicit - fn __init__[dt: DType](inout self, value: SIMD[dt, 1]): + fn __init__[dt: DType](mut self, value: SIMD[dt, 1]): """Initialize the object with a generic scalar value. If the scalar value type is bool, it is converted to a boolean. Otherwise, it is converted to the appropriate integer or floating point type. @@ -427,7 +427,7 @@ struct PythonObject( self.py_object = cpython.PyUnicode_DecodeUTF8(string.as_string_slice()) @implicit - fn __init__[*Ts: CollectionElement](inout self, value: ListLiteral[*Ts]): + fn __init__[*Ts: CollectionElement](mut self, value: ListLiteral[*Ts]): """Initialize the object from a list literal. Parameters: @@ -470,7 +470,7 @@ struct PythonObject( _ = cpython.PyList_SetItem(self.py_object, i, obj.py_object) @implicit - fn __init__[*Ts: CollectionElement](inout self, value: Tuple[*Ts]): + fn __init__[*Ts: CollectionElement](mut self, value: Tuple[*Ts]): """Initialize the object from a tuple literal. Parameters: @@ -715,7 +715,7 @@ struct PythonObject( Python.throw_python_exception_if_error_state(cpython) return PythonObject(result) - fn __setitem__(inout self, *args: PythonObject, value: PythonObject) raises: + fn __setitem__(mut self, *args: PythonObject, value: PythonObject) raises: """Set the value with the given key or keys. Args: @@ -782,7 +782,7 @@ struct PythonObject( return PythonObject(result_obj) fn _call_single_arg_inplace_method( - inout self, method_name: StringRef, rhs: PythonObject + mut self, method_name: StringRef, rhs: PythonObject ) raises: var cpython = _get_global_python_itf().cpython() var tuple_obj = cpython.PyTuple_New(1) @@ -831,7 +831,7 @@ struct PythonObject( """ return self._call_single_arg_method("__rmul__", lhs) - fn __imul__(inout self, rhs: PythonObject) raises: + fn __imul__(mut self, rhs: PythonObject) raises: """In-place multiplication. Calls the underlying object's `__imul__` method. @@ -868,7 +868,7 @@ struct PythonObject( """ return self._call_single_arg_method("__radd__", lhs) - fn __iadd__(inout self, rhs: PythonObject) raises: + fn __iadd__(mut self, rhs: PythonObject) raises: """Immediate addition and concatenation. Args: @@ -902,7 +902,7 @@ struct PythonObject( """ return self._call_single_arg_method("__rsub__", lhs) - fn __isub__(inout self, rhs: PythonObject) raises: + fn __isub__(mut self, rhs: PythonObject) raises: """Immediate subtraction. Args: @@ -939,7 +939,7 @@ struct PythonObject( """ return self._call_single_arg_method("__rfloordiv__", lhs) - fn __ifloordiv__(inout self, rhs: PythonObject) raises: + fn __ifloordiv__(mut self, rhs: PythonObject) raises: """Immediate floor division. Args: @@ -973,7 +973,7 @@ struct PythonObject( """ return self._call_single_arg_method("__rtruediv__", lhs) - fn __itruediv__(inout self, rhs: PythonObject) raises: + fn __itruediv__(mut self, rhs: PythonObject) raises: """Immediate division. Args: @@ -1007,7 +1007,7 @@ struct PythonObject( """ return self._call_single_arg_method("__rmod__", lhs) - fn __imod__(inout self, rhs: PythonObject) raises: + fn __imod__(mut self, rhs: PythonObject) raises: """Immediate modulo. Args: @@ -1039,7 +1039,7 @@ struct PythonObject( """ return self._call_single_arg_method("__rxor__", lhs) - fn __ixor__(inout self, rhs: PythonObject) raises: + fn __ixor__(mut self, rhs: PythonObject) raises: """Immediate exclusive OR. Args: @@ -1072,7 +1072,7 @@ struct PythonObject( """ return self._call_single_arg_method("__ror__", lhs) - fn __ior__(inout self, rhs: PythonObject) raises: + fn __ior__(mut self, rhs: PythonObject) raises: """Immediate bitwise OR. Args: @@ -1105,7 +1105,7 @@ struct PythonObject( """ return self._call_single_arg_method("__rand__", lhs) - fn __iand__(inout self, rhs: PythonObject) raises: + fn __iand__(mut self, rhs: PythonObject) raises: """Immediate bitwise AND. Args: @@ -1138,7 +1138,7 @@ struct PythonObject( """ return self._call_single_arg_method("__rrshift__", lhs) - fn __irshift__(inout self, rhs: PythonObject) raises: + fn __irshift__(mut self, rhs: PythonObject) raises: """Immediate bitwise right shift. Args: @@ -1171,7 +1171,7 @@ struct PythonObject( """ return self._call_single_arg_method("__rlshift__", lhs) - fn __ilshift__(inout self, rhs: PythonObject) raises: + fn __ilshift__(mut self, rhs: PythonObject) raises: """Immediate bitwise left shift. Args: @@ -1202,7 +1202,7 @@ struct PythonObject( """ return self._call_single_arg_method("__rpow__", lhs) - fn __ipow__(inout self, rhs: PythonObject) raises: + fn __ipow__(mut self, rhs: PythonObject) raises: """Immediate power of. Args: @@ -1412,7 +1412,7 @@ struct PythonObject( debug_assert(result != -1, "object is not hashable") return result - fn __hash__[H: _Hasher](self, inout hasher: H): + fn __hash__[H: _Hasher](self, mut hasher: H): """Updates hasher with this python object hash value. Parameters: @@ -1480,7 +1480,7 @@ struct PythonObject( _ = python_str return mojo_str - fn write_to[W: Writer](self, inout writer: W): + fn write_to[W: Writer](self, mut writer: W): """ Formats this Python object to the provided Writer. diff --git a/stdlib/src/random/random.mojo b/stdlib/src/random/random.mojo index e536c6f533..8ac75d5a8f 100644 --- a/stdlib/src/random/random.mojo +++ b/stdlib/src/random/random.mojo @@ -224,7 +224,7 @@ fn randn[ return -fn shuffle[T: CollectionElement, //](inout list: List[T]): +fn shuffle[T: CollectionElement, //](mut list: List[T]): """Shuffles the elements of the list randomly. Performs an in-place Fisher-Yates shuffle on the provided list. diff --git a/stdlib/src/sys/ffi.mojo b/stdlib/src/sys/ffi.mojo index fea193e75b..6d65ab7447 100644 --- a/stdlib/src/sys/ffi.mojo +++ b/stdlib/src/sys/ffi.mojo @@ -176,7 +176,7 @@ struct DLHandle(CollectionElement, CollectionElementNew, Boolable): # TODO(#15590): Implement support for windows and remove the always_inline. @always_inline - fn close(inout self): + fn close(mut self): """Delete the DLHandle object unloading the associated dynamic library. """ diff --git a/stdlib/src/tempfile/tempfile.mojo b/stdlib/src/tempfile/tempfile.mojo index 55c3ca42d2..509c234ac9 100644 --- a/stdlib/src/tempfile/tempfile.mojo +++ b/stdlib/src/tempfile/tempfile.mojo @@ -212,7 +212,7 @@ struct TemporaryDirectory: """Whether to ignore cleanup errors.""" fn __init__( - inout self, + mut self, suffix: String = "", prefix: String = "tmp", dir: Optional[String] = None, @@ -290,7 +290,7 @@ struct NamedTemporaryFile: """Name of the file.""" fn __init__( - inout self, + mut self, mode: String = "w", name: Optional[String] = None, suffix: String = "", @@ -345,7 +345,7 @@ struct NamedTemporaryFile: except: pass - fn close(inout self) raises: + fn close(mut self) raises: """Closes the file handle.""" self._file_handle.close() if self._delete: @@ -403,7 +403,7 @@ struct NamedTemporaryFile: """ return self._file_handle.seek(offset, whence) - fn write[*Ts: Writable](inout self, *args: *Ts): + fn write[*Ts: Writable](mut self, *args: *Ts): """Write a sequence of Writable arguments to the provided Writer. Parameters: @@ -416,7 +416,7 @@ struct NamedTemporaryFile: write_buffered[buffer_size=4096](file, args) @always_inline - fn write_bytes(inout self, bytes: Span[Byte, _]): + fn write_bytes(mut self, bytes: Span[Byte, _]): """ Write a span of bytes to the file. diff --git a/stdlib/src/testing/testing.mojo b/stdlib/src/testing/testing.mojo index 38423c9aa4..20173be736 100644 --- a/stdlib/src/testing/testing.mojo +++ b/stdlib/src/testing/testing.mojo @@ -536,7 +536,7 @@ struct assert_raises: @always_inline fn __init__( - inout self, + mut self, *, contains: String, location: Optional[_SourceLocation] = None, diff --git a/stdlib/src/utils/format.mojo b/stdlib/src/utils/format.mojo index eab8549b19..af4bbc8d7c 100644 --- a/stdlib/src/utils/format.mojo +++ b/stdlib/src/utils/format.mojo @@ -80,7 +80,7 @@ struct _FormatCurlyEntry(CollectionElement, CollectionElementNew): self.format_spec = other.format_spec fn __init__( - inout self, + mut self, first_curly: Int, last_curly: Int, field: Self._FieldVariantType, @@ -267,17 +267,17 @@ struct _FormatCurlyEntry(CollectionElement, CollectionElementNew): fn _handle_field_and_break[ T: Stringlike ]( - inout self, + mut self, fmt_src: T, len_pos_args: Int, i: Int, start_value: Int, - inout automatic_indexing_count: Int, - inout raised_automatic_index: Optional[Int], - inout manual_indexing_count: Int, - inout raised_manual_index: Optional[Int], - inout raised_kwarg_field: Optional[String], - inout total_estimated_entry_byte_width: Int, + mut automatic_indexing_count: Int, + mut raised_automatic_index: Optional[Int], + mut manual_indexing_count: Int, + mut raised_manual_index: Optional[Int], + mut raised_kwarg_field: Optional[String], + mut total_estimated_entry_byte_width: Int, ) raises -> Bool: alias S = StringSlice[StaticConstantOrigin] @@ -350,7 +350,7 @@ struct _FormatCurlyEntry(CollectionElement, CollectionElementNew): fn _format_entry[ len_pos_args: Int - ](self, inout res: String, args: Self._args_t, inout auto_idx: Int) raises: + ](self, mut res: String, args: Self._args_t, mut auto_idx: Int) raises: # TODO(#3403 and/or #3252): this function should be able to use # Writer syntax when the type implements it, since it will give great # performance benefits. This also needs to be able to check if the given @@ -603,7 +603,7 @@ struct _FormatSpec: """ fn __init__( - inout self, + mut self, fill: UInt8 = ord(" "), align: UInt8 = 0, sign: UInt8 = ord("-"), @@ -680,7 +680,7 @@ struct _FormatSpec: return None # TODO: this should be in StringSlice.__format__(self, spec: FormatSpec, *, writer: Writer): - fn format(self, inout res: String, item: StringSlice) raises: + fn format(self, mut res: String, item: StringSlice) raises: """Transform a String according to its format specification. Args: @@ -691,9 +691,7 @@ struct _FormatSpec: # TODO: align, fill, etc. res += item - fn format[ - T: _CurlyEntryFormattable - ](self, inout res: String, item: T) raises: + fn format[T: _CurlyEntryFormattable](self, mut res: String, item: T) raises: """Stringify a type according to its format specification. Args: diff --git a/stdlib/src/utils/index.mojo b/stdlib/src/utils/index.mojo index 174cde61a9..0ea645ee88 100644 --- a/stdlib/src/utils/index.mojo +++ b/stdlib/src/utils/index.mojo @@ -404,7 +404,7 @@ struct IndexList[ return int(self.data[idx]) @always_inline("nodebug") - fn __setitem__[index: Int](inout self, val: Int): + fn __setitem__[index: Int](mut self, val: Int): """Sets an element in the tuple at the given static index. Parameters: @@ -416,7 +416,7 @@ struct IndexList[ self.data.__setitem__[index](val) @always_inline("nodebug") - fn __setitem__[index: Int](inout self, val: Self._int_type): + fn __setitem__[index: Int](mut self, val: Self._int_type): """Sets an element in the tuple at the given static index. Parameters: @@ -428,7 +428,7 @@ struct IndexList[ self.data.__setitem__[index](val) @always_inline("nodebug") - fn __setitem__(inout self, idx: Int, val: Int): + fn __setitem__(mut self, idx: Int, val: Int): """Sets an element in the tuple at the given index. Args: @@ -755,7 +755,7 @@ struct IndexList[ return buf^ @no_inline - fn write_to[W: Writer](self, inout writer: W): + fn write_to[W: Writer](self, mut writer: W): """ Formats this int tuple to the provided Writer. diff --git a/stdlib/src/utils/inline_string.mojo b/stdlib/src/utils/inline_string.mojo index 055ad748a8..cf8caafc31 100644 --- a/stdlib/src/utils/inline_string.mojo +++ b/stdlib/src/utils/inline_string.mojo @@ -103,7 +103,7 @@ struct InlineString(Sized, Stringable, CollectionElement, CollectionElementNew): # Operator dunders # ===------------------------------------------------------------------=== # - fn __iadd__(inout self, literal: StringLiteral): + fn __iadd__(mut self, literal: StringLiteral): """Appends another string to this string. Args: @@ -111,7 +111,7 @@ struct InlineString(Sized, Stringable, CollectionElement, CollectionElementNew): """ self.__iadd__(StringRef(literal)) - fn __iadd__(inout self, string: String): + fn __iadd__(mut self, string: String): """Appends another string to this string. Args: @@ -119,7 +119,7 @@ struct InlineString(Sized, Stringable, CollectionElement, CollectionElementNew): """ self.__iadd__(string.as_string_slice()) - fn __iadd__(inout self, str_slice: StringSlice[_]): + fn __iadd__(mut self, str_slice: StringSlice[_]): """Appends another string to this string. Args: @@ -395,7 +395,7 @@ struct _FixedString[CAP: Int]( # Operator dunders # ===------------------------------------------------------------------=== # - fn __iadd__(inout self, literal: StringLiteral) raises: + fn __iadd__(mut self, literal: StringLiteral) raises: """Appends another string to this string. Args: @@ -403,7 +403,7 @@ struct _FixedString[CAP: Int]( """ self.__iadd__(literal.as_string_slice()) - fn __iadd__(inout self, string: String) raises: + fn __iadd__(mut self, string: String) raises: """Appends another string to this string. Args: @@ -412,7 +412,7 @@ struct _FixedString[CAP: Int]( self.__iadd__(string.as_string_slice()) @always_inline - fn __iadd__(inout self, str_slice: StringSlice[_]) raises: + fn __iadd__(mut self, str_slice: StringSlice[_]) raises: """Appends another string to this string. Args: @@ -438,7 +438,7 @@ struct _FixedString[CAP: Int]( # ===------------------------------------------------------------------=== # fn _iadd_non_raising( - inout self, + mut self, bytes: Span[Byte, _], ) -> Optional[Error]: var total_len = len(self) + len(bytes) @@ -467,11 +467,11 @@ struct _FixedString[CAP: Int]( return None - fn write_to[W: Writer](self, inout writer: W): + fn write_to[W: Writer](self, mut writer: W): writer.write_bytes(self.as_bytes()) @always_inline - fn write_bytes(inout self, bytes: Span[Byte, _]): + fn write_bytes(mut self, bytes: Span[Byte, _]): """ Write a byte span to this String. @@ -481,7 +481,7 @@ struct _FixedString[CAP: Int]( """ _ = self._iadd_non_raising(bytes) - fn write[*Ts: Writable](inout self, *args: *Ts): + fn write[*Ts: Writable](mut self, *args: *Ts): """Write a sequence of Writable arguments to the provided Writer. Parameters: diff --git a/stdlib/src/utils/lock.mojo b/stdlib/src/utils/lock.mojo index dbae8c0d63..3916cd92cc 100644 --- a/stdlib/src/utils/lock.mojo +++ b/stdlib/src/utils/lock.mojo @@ -65,7 +65,7 @@ struct BlockingSpinLock: self.counter = Atomic[DType.int64](Self.UNLOCKED) - fn lock(inout self, owner: Int): + fn lock(mut self, owner: Int): """Acquires the lock. Args: @@ -79,7 +79,7 @@ struct BlockingSpinLock: waiter.wait() expected = Self.UNLOCKED - fn unlock(inout self, owner: Int) -> Bool: + fn unlock(mut self, owner: Int) -> Bool: """Releases the lock. Args: @@ -108,7 +108,7 @@ struct BlockingScopedLock: """The underlying lock instance.""" fn __init__( - inout self, + mut self, lock: UnsafePointer[Self.LockType], ): """Primary constructor. @@ -120,8 +120,8 @@ struct BlockingScopedLock: self.lock = lock fn __init__( - inout self, - inout lock: Self.LockType, + mut self, + mut lock: Self.LockType, ): """Secondary constructor. @@ -132,14 +132,14 @@ struct BlockingScopedLock: self.lock = UnsafePointer.address_of(lock) @no_inline - fn __enter__(inout self): + fn __enter__(mut self): """Acquire the lock on entry. This is done by setting the owner of the lock to own address.""" var address = UnsafePointer[Self].address_of(self) self.lock[].lock(int(address)) @no_inline - fn __exit__(inout self): + fn __exit__(mut self): """Release the lock on exit. Reset the address on the underlying lock.""" var address = UnsafePointer[Self].address_of(self) diff --git a/stdlib/src/utils/span.mojo b/stdlib/src/utils/span.mojo index 5a9588d107..3ec2b3030c 100644 --- a/stdlib/src/utils/span.mojo +++ b/stdlib/src/utils/span.mojo @@ -69,7 +69,7 @@ struct _SpanIter[ @always_inline fn __next__( - inout self, + mut self, ) -> Pointer[T, origin]: @parameter if forward: @@ -150,7 +150,7 @@ struct Span[ @always_inline fn __init__[ size: Int, // - ](inout self, ref [origin]array: InlineArray[T, size]): + ](mut self, ref [origin]array: InlineArray[T, size]): """Construct a Span from an InlineArray. Parameters: diff --git a/stdlib/src/utils/static_tuple.mojo b/stdlib/src/utils/static_tuple.mojo index 9a14c36e24..7a907b7ed0 100644 --- a/stdlib/src/utils/static_tuple.mojo +++ b/stdlib/src/utils/static_tuple.mojo @@ -231,7 +231,7 @@ struct StaticTuple[element_type: AnyTrivialRegType, size: Int](Sized): @always_inline("nodebug") fn __setitem__[ IntLike: IntLike, // - ](inout self, idx: IntLike, val: Self.element_type): + ](mut self, idx: IntLike, val: Self.element_type): """Stores a single value into the tuple at the specified dynamic index. Parameters: @@ -252,7 +252,7 @@ struct StaticTuple[element_type: AnyTrivialRegType, size: Int](Sized): self = tmp @always_inline("nodebug") - fn __setitem__[index: Int](inout self, val: Self.element_type): + fn __setitem__[index: Int](mut self, val: Self.element_type): """Stores a single value into the tuple at the specified index. Parameters: diff --git a/stdlib/src/utils/string_slice.mojo b/stdlib/src/utils/string_slice.mojo index 96f6aaeada..48be446549 100644 --- a/stdlib/src/utils/string_slice.mojo +++ b/stdlib/src/utils/string_slice.mojo @@ -190,9 +190,7 @@ struct _StringSliceIter[ var ptr: UnsafePointer[UInt8] var length: Int - fn __init__( - inout self, *, unsafe_pointer: UnsafePointer[UInt8], length: Int - ): + fn __init__(mut self, *, unsafe_pointer: UnsafePointer[UInt8], length: Int): self.index = 0 if forward else length self.ptr = unsafe_pointer self.length = length @@ -203,7 +201,7 @@ struct _StringSliceIter[ fn __iter__(self) -> Self: return self - fn __next__(inout self) -> StringSlice[origin]: + fn __next__(mut self) -> StringSlice[origin]: @parameter if forward: var byte_len = 1 @@ -356,7 +354,7 @@ struct StringSlice[is_mutable: Bool, //, origin: Origin[is_mutable].type,]( @implicit fn __init__[ O: ImmutableOrigin, // - ](inout self: StringSlice[O], ref [O]value: String): + ](mut self: StringSlice[O], ref [O]value: String): """Construct an immutable StringSlice. Parameters: @@ -395,7 +393,7 @@ struct StringSlice[is_mutable: Bool, //, origin: Origin[is_mutable].type,]( var s = S(ptr=self.unsafe_ptr(), length=b_len) return b_len - _count_utf8_continuation_bytes(s) - fn write_to[W: Writer](self, inout writer: W): + fn write_to[W: Writer](self, mut writer: W): """Formats this string slice to the provided `Writer`. Parameters: diff --git a/stdlib/src/utils/stringref.mojo b/stdlib/src/utils/stringref.mojo index 1a19e5788b..e2a0303100 100644 --- a/stdlib/src/utils/stringref.mojo +++ b/stdlib/src/utils/stringref.mojo @@ -357,7 +357,7 @@ struct StringRef( """ return hash(self.data, self.length) - fn __hash__[H: _Hasher](self, inout hasher: H): + fn __hash__[H: _Hasher](self, mut hasher: H): """Updates hasher with the underlying bytes. Parameters: @@ -411,7 +411,7 @@ struct StringRef( return String.write("StringRef(", repr(str(self)), ")") @no_inline - fn write_to[W: Writer](self, inout writer: W): + fn write_to[W: Writer](self, mut writer: W): """ Formats this StringRef to the provided Writer. diff --git a/stdlib/src/utils/variant.mojo b/stdlib/src/utils/variant.mojo index 07dc22da63..6936a3a003 100644 --- a/stdlib/src/utils/variant.mojo +++ b/stdlib/src/utils/variant.mojo @@ -18,7 +18,7 @@ You can use this type to implement variant/sum types. For example: from utils import Variant alias IntOrString = Variant[Int, String] -fn to_string(inout x: IntOrString) -> String: +fn to_string(mut x: IntOrString) -> String: if x.isa[String](): return x[String] # x.isa[Int]() @@ -81,7 +81,7 @@ struct Variant[*Ts: CollectionElement]( ```mojo from utils import Variant alias IntOrString = Variant[Int, String] - fn to_string(inout x: IntOrString) -> String: + fn to_string(mut x: IntOrString) -> String: if x.isa[String](): return x[String] # x.isa[Int]() @@ -124,7 +124,7 @@ struct Variant[*Ts: CollectionElement]( self._impl = __mlir_attr[`#kgen.unknown : `, Self._mlir_type] @implicit - fn __init__[T: CollectionElement](inout self, owned value: T): + fn __init__[T: CollectionElement](mut self, owned value: T): """Create a variant with one of the types. Parameters: @@ -239,7 +239,7 @@ struct Variant[*Ts: CollectionElement]( return UnsafePointer(discr_ptr).bitcast[UInt8]()[] @always_inline - fn take[T: CollectionElement](inout self) -> T: + fn take[T: CollectionElement](mut self) -> T: """Take the current value of the variant with the provided type. The caller takes ownership of the underlying value. @@ -260,7 +260,7 @@ struct Variant[*Ts: CollectionElement]( return self.unsafe_take[T]() @always_inline - fn unsafe_take[T: CollectionElement](inout self) -> T: + fn unsafe_take[T: CollectionElement](mut self) -> T: """Unsafely take the current value of the variant with the provided type. The caller takes ownership of the underlying value. @@ -284,7 +284,7 @@ struct Variant[*Ts: CollectionElement]( @always_inline fn replace[ Tin: CollectionElement, Tout: CollectionElement - ](inout self, owned value: Tin) -> Tout: + ](mut self, owned value: Tin) -> Tout: """Replace the current value of the variant with the provided type. The caller takes ownership of the underlying value. @@ -311,7 +311,7 @@ struct Variant[*Ts: CollectionElement]( @always_inline fn unsafe_replace[ Tin: CollectionElement, Tout: CollectionElement - ](inout self, owned value: Tin) -> Tout: + ](mut self, owned value: Tin) -> Tout: """Unsafely replace the current value of the variant with the provided type. The caller takes ownership of the underlying value. @@ -337,7 +337,7 @@ struct Variant[*Ts: CollectionElement]( self.set[Tin](value^) return x^ - fn set[T: CollectionElement](inout self, owned value: T): + fn set[T: CollectionElement](mut self, owned value: T): """Set the variant value. This will call the destructor on the old value, and update the variant's diff --git a/stdlib/src/utils/write.mojo b/stdlib/src/utils/write.mojo index bbb574670b..2d9351036f 100644 --- a/stdlib/src/utils/write.mojo +++ b/stdlib/src/utils/write.mojo @@ -43,11 +43,11 @@ trait Writer: var s: String # Writer requirement to write a Span of Bytes - fn write_bytes(inout self, bytes: Span[Byte, _]): + fn write_bytes(mut self, bytes: Span[Byte, _]): self.s._iadd[False](bytes) # Writer requirement to take multiple args - fn write[*Ts: Writable](inout self, *args: *Ts): + fn write[*Ts: Writable](mut self, *args: *Ts): @parameter fn write_arg[T: Writable](arg: T): arg.write_to(self) @@ -55,7 +55,7 @@ trait Writer: 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): + fn write_to[W: Writer](self, mut writer: W): writer.write(self.s) @@ -66,7 +66,7 @@ trait Writer: # 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): + fn write_to[W: Writer](self, mut writer: W): writer.write("Point(", self.x, ", ", self.y, ")") # Enable conversion to a String using `str(point)` @@ -90,7 +90,7 @@ trait Writer: """ @always_inline - fn write_bytes(inout self, bytes: Span[Byte, _]): + fn write_bytes(mut self, bytes: Span[Byte, _]): """ Write a `Span[Byte]` to this `Writer`. @@ -100,7 +100,7 @@ trait Writer: """ ... - fn write[*Ts: Writable](inout self, *args: *Ts): + fn write[*Ts: Writable](mut self, *args: *Ts): """Write a sequence of Writable arguments to the provided Writer. Parameters: @@ -135,7 +135,7 @@ trait Writable: var x: Float64 var y: Float64 - fn write_to[W: Writer](self, inout writer: W): + fn write_to[W: Writer](self, mut writer: W): var string = "Point" # Write a single `Span[Byte]`: writer.write_bytes(string.as_bytes()) @@ -144,7 +144,7 @@ trait Writable: ``` """ - fn write_to[W: Writer](self, inout writer: W): + fn write_to[W: Writer](self, mut writer: W): """ Formats the string representation of this type to the provided Writer. @@ -165,7 +165,7 @@ trait Writable: fn write_args[ W: Writer, *Ts: Writable ]( - inout writer: W, + mut writer: W, args: VariadicPack[_, Writable, *Ts], *, sep: StaticString = "", @@ -238,7 +238,7 @@ struct _WriteBufferHeap(Writer): self.data.free() @always_inline - fn write_bytes(inout self, bytes: Span[UInt8, _]): + fn write_bytes(mut self, bytes: Span[UInt8, _]): len_bytes = len(bytes) # If empty then return if len_bytes == 0: @@ -248,7 +248,7 @@ struct _WriteBufferHeap(Writer): self.data[i + self.pos] = ptr[i] self.pos += len_bytes - fn write[*Ts: Writable](inout self, *args: *Ts): + fn write[*Ts: Writable](mut self, *args: *Ts): @parameter fn write_arg[T: Writable](arg: T): arg.write_to(self) @@ -262,10 +262,10 @@ struct _ArgBytes(Writer): fn __init__(out self): self.size = 0 - fn write_bytes(inout self, bytes: Span[UInt8, _]): + fn write_bytes(mut self, bytes: Span[UInt8, _]): self.size += len(bytes) - fn write[*Ts: Writable](inout self, *args: *Ts): + fn write[*Ts: Writable](mut self, *args: *Ts): @parameter fn write_arg[T: Writable](arg: T): arg.write_to(self) @@ -284,7 +284,7 @@ struct _WriteBufferStack[W: MovableWriter, //, capacity: Int](Writer): self.pos = 0 self.writer = writer^ - fn flush(inout self): + fn flush(mut self): self.writer.write_bytes( Span[Byte, ImmutableAnyOrigin]( ptr=self.data.unsafe_ptr(), length=self.pos @@ -292,7 +292,7 @@ struct _WriteBufferStack[W: MovableWriter, //, capacity: Int](Writer): ) self.pos = 0 - fn write_bytes(inout self, bytes: Span[Byte, _]): + fn write_bytes(mut self, bytes: Span[Byte, _]): len_bytes = len(bytes) # If empty then return if len_bytes == 0: @@ -309,7 +309,7 @@ struct _WriteBufferStack[W: MovableWriter, //, capacity: Int](Writer): memcpy(self.data.unsafe_ptr() + self.pos, bytes.unsafe_ptr(), len_bytes) self.pos += len_bytes - fn write[*Ts: Writable](inout self, *args: *Ts): + fn write[*Ts: Writable](mut self, *args: *Ts): @parameter fn write_arg[T: Writable](arg: T): arg.write_to(self) diff --git a/stdlib/test/builtin/test_debug_assert.mojo b/stdlib/test/builtin/test_debug_assert.mojo index 9df1b1e1f3..6d8ceb57f3 100644 --- a/stdlib/test/builtin/test_debug_assert.mojo +++ b/stdlib/test/builtin/test_debug_assert.mojo @@ -52,5 +52,5 @@ def test_debug_assert_writable(): struct WritableOnly: var message: String - fn write_to[W: Writer](self, inout writer: W): + fn write_to[W: Writer](self, mut writer: W): writer.write(self.message) diff --git a/stdlib/test/builtin/test_object.mojo b/stdlib/test/builtin/test_object.mojo index 65c118665a..899c75da17 100644 --- a/stdlib/test/builtin/test_object.mojo +++ b/stdlib/test/builtin/test_object.mojo @@ -183,7 +183,7 @@ def test_function(lhs, rhs) -> object: return lhs + rhs -# These are all marked borrowed because 'object' doesn't support function +# These are all marked read-only because 'object' doesn't support function # types with owned arguments. def test_function_raises(a) -> object: raise Error("Error from function type") diff --git a/stdlib/test/builtin/test_print.mojo b/stdlib/test/builtin/test_print.mojo index a18b7366ff..4ace3a30c1 100644 --- a/stdlib/test/builtin/test_print.mojo +++ b/stdlib/test/builtin/test_print.mojo @@ -63,7 +63,7 @@ struct PrintChecker: fn stream(self) -> FileDescriptor: return self.tmp._file_handle._get_raw_fd() - fn check_line(inout self, expected: String, msg: String = "") raises: + fn check_line(mut self, expected: String, msg: String = "") raises: print(end="", file=self.stream(), flush=True) _ = self.tmp.seek(self.cursor) var result = self.tmp.read()[:-1] @@ -72,7 +72,7 @@ struct PrintChecker: self.cursor += len(result) + 1 fn check_line_starts_with( - inout self, prefix: String, msg: String = "" + mut self, prefix: String, msg: String = "" ) raises: print(end="", file=self.stream(), flush=True) _ = self.tmp.seek(self.cursor) diff --git a/stdlib/test/builtin/test_range.mojo b/stdlib/test/builtin/test_range.mojo index b3a1f62be6..051656d27d 100644 --- a/stdlib/test/builtin/test_range.mojo +++ b/stdlib/test/builtin/test_range.mojo @@ -193,7 +193,7 @@ def test_scalar_range(): assert_equal(r.end, 16) assert_equal(r.step, 4) - fn append_many(inout list: List, *values: list.T): + fn append_many(mut list: List, *values: list.T): for value in values: list.append(value[]) diff --git a/stdlib/test/builtin/test_sort.mojo b/stdlib/test/builtin/test_sort.mojo index 7ff2834d46..3c98be083f 100644 --- a/stdlib/test/builtin/test_sort.mojo +++ b/stdlib/test/builtin/test_sort.mojo @@ -45,7 +45,7 @@ fn random_numbers[ return result -# fn assert_sorted[dtype: DType](inout list: List[Scalar[dtype]]) raises: +# fn assert_sorted[dtype: DType](mut list: List[Scalar[dtype]]) raises: # sort[dtype](list) # for i in range(1, len(list)): # assert_true( @@ -53,7 +53,7 @@ fn random_numbers[ # ) -fn assert_sorted_string(inout list: List[String]) raises: +fn assert_sorted_string(mut list: List[String]) raises: for i in range(1, len(list)): assert_true( list[i] >= list[i - 1], str(list[i - 1]) + " > " + str(list[i]) @@ -62,7 +62,7 @@ fn assert_sorted_string(inout list: List[String]) raises: fn assert_sorted[ type: ComparableCollectionElement -](inout list: List[type]) raises: +](mut list: List[type]) raises: for i in range(1, len(list)): assert_true(list[i] >= list[i - 1], "error at index: " + str(i)) diff --git a/stdlib/test/hashlib/test_hasher.mojo b/stdlib/test/hashlib/test_hasher.mojo index 809d494c7e..4c10ac50a5 100644 --- a/stdlib/test/hashlib/test_hasher.mojo +++ b/stdlib/test/hashlib/test_hasher.mojo @@ -30,14 +30,14 @@ struct DummyHasher(_Hasher): fn __init__(out self): self._dummy_value = 0 - fn _update_with_bytes(inout self, data: UnsafePointer[UInt8], length: Int): + fn _update_with_bytes(mut self, data: UnsafePointer[UInt8], length: Int): for i in range(length): self._dummy_value += data[i].cast[DType.uint64]() - fn _update_with_simd(inout self, value: SIMD[_, _]): + fn _update_with_simd(mut self, value: SIMD[_, _]): self._dummy_value += value.cast[DType.uint64]().reduce_add() - fn update[T: _HashableWithHasher](inout self, value: T): + fn update[T: _HashableWithHasher](mut self, value: T): value.__hash__(self) fn finish(owned self) -> UInt64: @@ -48,7 +48,7 @@ struct DummyHasher(_Hasher): struct SomeHashableStruct(_HashableWithHasher): var _value: Int64 - fn __hash__[H: _Hasher](self, inout hasher: H): + fn __hash__[H: _Hasher](self, mut hasher: H): hasher._update_with_simd(self._value) @@ -69,7 +69,7 @@ struct ComplexeHashableStruct(_HashableWithHasher): var _value1: SomeHashableStruct var _value2: SomeHashableStruct - fn __hash__[H: _Hasher](self, inout hasher: H): + fn __hash__[H: _Hasher](self, mut hasher: H): hasher.update(self._value1) hasher.update(self._value2) @@ -96,10 +96,10 @@ struct ComplexHashableStructWithList(_HashableWithHasher): var _value2: SomeHashableStruct var _value3: List[UInt8] - fn __hash__[H: _Hasher](self, inout hasher: H): + fn __hash__[H: _Hasher](self, mut hasher: H): hasher.update(self._value1) hasher.update(self._value2) - # This is okay because self is passed as borrowed so the pointer will + # This is okay because self is passed as read-only so the pointer will # be valid until at least the end of the function hasher._update_with_bytes( data=self._value3.unsafe_ptr(), @@ -115,10 +115,10 @@ struct ComplexHashableStructWithListAndWideSIMD(_HashableWithHasher): var _value3: List[UInt8] var _value4: SIMD[DType.uint32, 4] - fn __hash__[H: _Hasher](self, inout hasher: H): + fn __hash__[H: _Hasher](self, mut hasher: H): hasher.update(self._value1) hasher.update(self._value2) - # This is okay because self is passed as borrowed so the pointer will + # This is okay because self is passed as read-only so the pointer will # be valid until at least the end of the function hasher._update_with_bytes( data=self._value3.unsafe_ptr(), diff --git a/stdlib/test/python/test_ownership.mojo b/stdlib/test/python/test_ownership.mojo index b2f1203332..ec7a71d89e 100644 --- a/stdlib/test/python/test_ownership.mojo +++ b/stdlib/test/python/test_ownership.mojo @@ -17,42 +17,42 @@ from python import Python, PythonObject from testing import assert_equal -fn test_import(inout python: Python) raises: +fn test_import(mut python: Python) raises: var my_module: PythonObject = Python.import_module("my_module") var py_string = my_module.my_function("Hello") var str = String(python.__str__(py_string)) assert_equal(str, "Formatting the string from Lit with Python: Hello") -fn test_list(inout python: Python) raises: +fn test_list(mut python: Python) raises: var b: PythonObject = Python.import_module("builtins") var my_list = PythonObject([1, 2.34, "False"]) var py_string = str(my_list) assert_equal(py_string, "[1, 2.34, 'False']") -fn test_tuple(inout python: Python) raises: +fn test_tuple(mut python: Python) raises: var b: PythonObject = Python.import_module("builtins") var my_tuple = PythonObject((1, 2.34, "False")) var py_string = str(my_tuple) assert_equal(py_string, "(1, 2.34, 'False')") -fn test_call_ownership(inout python: Python) raises: +fn test_call_ownership(mut python: Python) raises: var obj: PythonObject = [1, "5"] var py_string = str(obj) var string = python.__str__(py_string) assert_equal(string, "[1, '5']") -fn test_getitem_ownership(inout python: Python) raises: +fn test_getitem_ownership(mut python: Python) raises: var obj: PythonObject = [1, "5"] var py_string = str(obj[1]) var string = python.__str__(py_string) assert_equal(string, "5") -fn test_getattr_ownership(inout python: Python) raises: +fn test_getattr_ownership(mut python: Python) raises: var my_module: PythonObject = Python.import_module("my_module") var obj = my_module.Foo(4) var py_string = str(obj.bar) diff --git a/stdlib/test/python/test_python_info.mojo b/stdlib/test/python/test_python_info.mojo index 1728a10c24..b1b7eb29e7 100644 --- a/stdlib/test/python/test_python_info.mojo +++ b/stdlib/test/python/test_python_info.mojo @@ -19,7 +19,7 @@ from python._cpython import PythonVersion from testing import assert_equal -fn test_python_version(inout python: Python) raises: +fn test_python_version(mut python: Python) raises: var version = "3.10.8 (main, Nov 24 2022, 08:08:27) [Clang 14.0.6 ]" var pythonVersion = PythonVersion(version) assert_equal(pythonVersion.major, 3) diff --git a/stdlib/test/python/test_python_interop.mojo b/stdlib/test/python/test_python_interop.mojo index be71cfd2dc..3e1a465628 100644 --- a/stdlib/test/python/test_python_interop.mojo +++ b/stdlib/test/python/test_python_interop.mojo @@ -17,7 +17,7 @@ from python.python import Python, PythonObject, _get_global_python_itf from testing import assert_equal -fn test_execute_python_string(inout python: Python) -> String: +fn test_execute_python_string(mut python: Python) -> String: try: _ = Python.evaluate("print('evaluated by PyRunString')") return str(Python.evaluate("'a' + 'b'")) @@ -25,7 +25,7 @@ fn test_execute_python_string(inout python: Python) -> String: return str(e) -fn test_local_import(inout python: Python) -> String: +fn test_local_import(mut python: Python) -> String: try: var my_module: PythonObject = Python.import_module("my_module") if my_module: @@ -37,7 +37,7 @@ fn test_local_import(inout python: Python) -> String: return str(e) -fn test_dynamic_import(inout python: Python, times: Int = 1) -> String: +fn test_dynamic_import(mut python: Python, times: Int = 1) -> String: alias INLINE_MODULE = """ called_already = False def hello(name): @@ -56,7 +56,7 @@ def hello(name): return str(e) -fn test_call(inout python: Python) -> String: +fn test_call(mut python: Python) -> String: try: var my_module: PythonObject = Python.import_module("my_module") return str( diff --git a/stdlib/test/python/test_python_object.mojo b/stdlib/test/python/test_python_object.mojo index eed042c564..92180fb8d0 100644 --- a/stdlib/test/python/test_python_object.mojo +++ b/stdlib/test/python/test_python_object.mojo @@ -21,7 +21,7 @@ from testing import assert_equal, assert_false, assert_raises, assert_true from utils import StringRef -def test_dunder_methods(inout python: Python): +def test_dunder_methods(mut python: Python): var a = PythonObject(34) var b = PythonObject(10) diff --git a/stdlib/test/python/test_python_to_mojo.mojo b/stdlib/test/python/test_python_to_mojo.mojo index 0fbf502b7a..d621943f9c 100644 --- a/stdlib/test/python/test_python_to_mojo.mojo +++ b/stdlib/test/python/test_python_to_mojo.mojo @@ -17,7 +17,7 @@ from python import Python, PythonObject from testing import assert_equal, assert_false, assert_true -fn test_string_to_python_to_mojo(inout python: Python) raises: +fn test_string_to_python_to_mojo(mut python: Python) raises: var py_string = PythonObject("mojo") var py_string_capitalized = py_string.capitalize() diff --git a/stdlib/test/tempfile/test_tempfile.mojo b/stdlib/test/tempfile/test_tempfile.mojo index c186776e6e..d84ac25554 100644 --- a/stdlib/test/tempfile/test_tempfile.mojo +++ b/stdlib/test/tempfile/test_tempfile.mojo @@ -55,7 +55,7 @@ struct TempEnvWithCleanup: """Function called after the context manager exits if an error occurs.""" fn __init__( - inout self, + mut self, vars_to_set: Dict[String, String], clean_up_function: fn () raises -> None, ): @@ -63,20 +63,20 @@ struct TempEnvWithCleanup: self._vars_back = Dict[String, String]() self.clean_up_function = clean_up_function - def __enter__(inout self): + def __enter__(mut self): for key_value in self.vars_to_set.items(): var key = key_value[].key var value = key_value[].value self._vars_back[key] = os.getenv(key) _ = os.setenv(key, value, overwrite=True) - fn __exit__(inout self): + fn __exit__(mut self): for key_value in self.vars_to_set.items(): var key = key_value[].key var value = key_value[].value _ = os.setenv(key, value, overwrite=True) - def __exit__(inout self, error: Error) -> Bool: + def __exit__(mut self, error: Error) -> Bool: self.__exit__() self.clean_up_function() return False diff --git a/stdlib/test/utils/test_format.mojo b/stdlib/test/utils/test_format.mojo index e15d744a88..975d26464b 100644 --- a/stdlib/test/utils/test_format.mojo +++ b/stdlib/test/utils/test_format.mojo @@ -34,7 +34,7 @@ struct Point(Writable, Stringable): var y: Int @no_inline - fn write_to[W: Writer](self, inout writer: W): + fn write_to[W: Writer](self, mut writer: W): writer.write("Point(", self.x, ", ", self.y, ")") @no_inline diff --git a/stdlib/test/utils/test_format_to_stdout.mojo b/stdlib/test/utils/test_format_to_stdout.mojo index c487ea14db..fed40ec33c 100644 --- a/stdlib/test/utils/test_format_to_stdout.mojo +++ b/stdlib/test/utils/test_format_to_stdout.mojo @@ -26,7 +26,7 @@ struct Point(Writable): var x: Int var y: Int - fn write_to[W: Writer](self, inout writer: W): + fn write_to[W: Writer](self, mut writer: W): writer.write("Point(", self.x, ", ", self.y, ")") From 8c671cb9f6a17bac7b88732a185829043456cada Mon Sep 17 00:00:00 2001 From: abdul dakkak Date: Sun, 1 Dec 2024 07:46:06 -0800 Subject: [PATCH 002/509] [******][GPU Enhance FPUtils to support fnuz float types MODULAR_ORIG_COMMIT_REV_ID: 8a2976ab0b99ec2d63ac2c0136bd89b40782b5ac --- stdlib/src/utils/numerics.mojo | 97 ++++++++++++++++++++++++++-------- 1 file changed, 76 insertions(+), 21 deletions(-) diff --git a/stdlib/src/utils/numerics.mojo b/stdlib/src/utils/numerics.mojo index f9a52a9972..f7d99244fe 100644 --- a/stdlib/src/utils/numerics.mojo +++ b/stdlib/src/utils/numerics.mojo @@ -67,9 +67,9 @@ struct FPUtils[ """ @parameter - if type is DType.float8e4m3: + if type in (DType.float8e4m3, DType.float8e4m3fnuz): return 3 - elif type is DType.float8e5m2: + elif type in (DType.float8e5m2, DType.float8e5m2fnuz): return 2 elif type is DType.float16: return 10 @@ -94,8 +94,12 @@ struct FPUtils[ @parameter if type is DType.float8e4m3: return 7 + elif type is DType.float8e4m3fnuz: + return 8 elif type is DType.float8e5m2: return 15 + elif type is DType.float8e5m2fnuz: + return 16 elif type is DType.float16: return 15 elif type is DType.float32 or type is DType.bfloat16: @@ -114,18 +118,7 @@ struct FPUtils[ The min exponent. """ - @parameter - if type is DType.float8e4m3: - return -6 - elif type is DType.float8e5m2: - return -14 - elif type is DType.float16: - return -14 - elif type is DType.float32 or type is DType.bfloat16: - return -126 - else: - constrained[type is DType.float64, "unsupported float type"]() - return -1022 + return -Self.max_exponent() + 1 @staticmethod @always_inline("nodebug") @@ -137,9 +130,9 @@ struct FPUtils[ """ @parameter - if type is DType.float8e4m3: + if type in (DType.float8e4m3, DType.float8e4m3fnuz): return 4 - elif type is DType.float8e5m2: + elif type in (DType.float8e5m2, DType.float8e5m2fnuz): return 5 elif type is DType.float16: return 5 @@ -537,6 +530,15 @@ fn nan[type: DType]() -> Scalar[type]: value = __mlir_attr[`#pop.simd<"nan"> : !pop.scalar`], ]() ) + elif type is DType.float8e5m2fnuz: + return rebind[__mlir_type[`!pop.scalar<`, type.value, `>`]]( + __mlir_op.`kgen.param.constant`[ + _type = __mlir_type[`!pop.scalar`], + value = __mlir_attr[ + `#pop.simd<"nan"> : !pop.scalar` + ], + ]() + ) elif type is DType.float8e4m3: return rebind[__mlir_type[`!pop.scalar<`, type.value, `>`]]( __mlir_op.`kgen.param.constant`[ @@ -544,6 +546,15 @@ fn nan[type: DType]() -> Scalar[type]: value = __mlir_attr[`#pop.simd<"nan"> : !pop.scalar`], ]() ) + elif type is DType.float8e4m3fnuz: + return rebind[__mlir_type[`!pop.scalar<`, type.value, `>`]]( + __mlir_op.`kgen.param.constant`[ + _type = __mlir_type[`!pop.scalar`], + value = __mlir_attr[ + `#pop.simd<"nan"> : !pop.scalar` + ], + ]() + ) elif type is DType.float16: return rebind[__mlir_type[`!pop.scalar<`, type.value, `>`]]( __mlir_op.`kgen.param.constant`[ @@ -600,7 +611,10 @@ fn isnan[ """ @parameter - if not type.is_floating_point(): + if not type.is_floating_point() or type in ( + DType.float8e4m3fnuz, + DType.float8e5m2fnuz, + ): return False alias int_dtype = _integral_type_of[type]() @@ -654,6 +668,15 @@ fn inf[type: DType]() -> Scalar[type]: value = __mlir_attr[`#pop.simd<"inf"> : !pop.scalar`], ]() ) + elif type is DType.float8e5m2fnuz: + return rebind[__mlir_type[`!pop.scalar<`, type.value, `>`]]( + __mlir_op.`kgen.param.constant`[ + _type = __mlir_type[`!pop.scalar`], + value = __mlir_attr[ + `#pop.simd<"inf"> : !pop.scalar` + ], + ]() + ) elif type is DType.float8e4m3: return rebind[__mlir_type[`!pop.scalar<`, type.value, `>`]]( __mlir_op.`kgen.param.constant`[ @@ -661,6 +684,15 @@ fn inf[type: DType]() -> Scalar[type]: value = __mlir_attr[`#pop.simd<"inf"> : !pop.scalar`], ]() ) + elif type is DType.float8e4m3fnuz: + return rebind[__mlir_type[`!pop.scalar<`, type.value, `>`]]( + __mlir_op.`kgen.param.constant`[ + _type = __mlir_type[`!pop.scalar`], + value = __mlir_attr[ + `#pop.simd<"inf"> : !pop.scalar` + ], + ]() + ) elif type is DType.float16: return rebind[__mlir_type[`!pop.scalar<`, type.value, `>`]]( __mlir_op.`kgen.param.constant`[ @@ -721,6 +753,15 @@ fn neg_inf[type: DType]() -> Scalar[type]: value = __mlir_attr[`#pop.simd<"-inf"> : !pop.scalar`], ]() ) + elif type is DType.float8e5m2fnuz: + return rebind[__mlir_type[`!pop.scalar<`, type.value, `>`]]( + __mlir_op.`kgen.param.constant`[ + _type = __mlir_type[`!pop.scalar`], + value = __mlir_attr[ + `#pop.simd<"-inf"> : !pop.scalar` + ], + ]() + ) elif type is DType.float8e4m3: return rebind[__mlir_type[`!pop.scalar<`, type.value, `>`]]( __mlir_op.`kgen.param.constant`[ @@ -728,6 +769,15 @@ fn neg_inf[type: DType]() -> Scalar[type]: value = __mlir_attr[`#pop.simd<"-inf"> : !pop.scalar`], ]() ) + elif type is DType.float8e4m3fnuz: + return rebind[__mlir_type[`!pop.scalar<`, type.value, `>`]]( + __mlir_op.`kgen.param.constant`[ + _type = __mlir_type[`!pop.scalar`], + value = __mlir_attr[ + `#pop.simd<"-inf"> : !pop.scalar` + ], + ]() + ) elif type is DType.float16: return rebind[__mlir_type[`!pop.scalar<`, type.value, `>`]]( __mlir_op.`kgen.param.constant`[ @@ -801,7 +851,9 @@ fn max_finite[type: DType]() -> Scalar[type]: return 18446744073709551615 elif type is DType.float8e4m3: return 448 - elif type is DType.float8e5m2: + elif type is DType.float8e4m3fnuz: + return 240 + elif type in (DType.float8e5m2, DType.float8e5m2fnuz): return 57344 elif type is DType.float16: return 65504 @@ -932,9 +984,11 @@ fn isinf[ """ @parameter - if not type.is_floating_point(): + if not type.is_floating_point() or type in ( + DType.float8e4m3fnuz, + DType.float8e5m2fnuz, + ): return False - elif type is DType.float8e5m2: # For the float8e5m2 both 7C and FC are infinity. alias int_dtype = _integral_type_of[type]() @@ -1087,10 +1141,11 @@ fn ulp[ constrained[type.is_floating_point(), "the type must be floating point"]() + alias inf_val = SIMD[type, simd_width](inf[type]()) + var nan_mask = isnan(x) var xabs = abs(x) var inf_mask = isinf(xabs) - alias inf_val = SIMD[type, simd_width](inf[type]()) var x2 = nextafter(xabs, inf_val) var x2_inf_mask = isinf(x2) From 782a277e6b94fcc8006ceb949198fdd705dc1377 Mon Sep 17 00:00:00 2001 From: abdul dakkak Date: Sun, 1 Dec 2024 08:16:34 -0800 Subject: [PATCH 003/509] [Stdlib] Simplify the code for powf function, NFC MODULAR_ORIG_COMMIT_REV_ID: 60447a21c51b70796fbc62aa27c2760259703809 --- stdlib/src/builtin/simd.mojo | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/stdlib/src/builtin/simd.mojo b/stdlib/src/builtin/simd.mojo index a70d660217..bacee6e4bf 100644 --- a/stdlib/src/builtin/simd.mojo +++ b/stdlib/src/builtin/simd.mojo @@ -802,7 +802,7 @@ struct SIMD[type: DType, size: Int]( specified exponent value. """ constrained[type.is_numeric(), "the SIMD type must be numeric"]() - return _pow[type, size, DType.index](self, exp) + return _pow(self, SIMD[DType.index, size](exp)) # TODO(#22771): remove this overload. @always_inline("nodebug") @@ -2952,17 +2952,13 @@ fn _tbl1( @always_inline fn _pow[ - BaseTy: DType, simd_width: Int, ExpTy: DType -](base: SIMD[BaseTy, simd_width], exp: SIMD[ExpTy, simd_width]) -> __type_of( - base -): + simd_width: Int +](base: SIMD[_, simd_width], exp: SIMD[_, simd_width]) -> __type_of(base): """Computes the power of the elements of a SIMD vector raised to the corresponding elements of another SIMD vector. Parameters: - BaseTy: The `dtype` of the `base` SIMD vector. simd_width: The width of the input and output SIMD vectors. - ExpTy: The `dtype` of the `exp` SIMD vector. Args: base: Base of the power operation. @@ -2973,9 +2969,9 @@ fn _pow[ """ @parameter - if ExpTy.is_floating_point() and BaseTy == ExpTy: + if exp.type.is_floating_point() and base.type is exp.type: return _powf(base, exp) - elif ExpTy.is_integral(): + elif exp.type.is_integral(): # Common cases if all(exp == 2): return base * base @@ -3030,12 +3026,15 @@ fn _powf[ @always_inline -fn _powi[type: DType](base: Scalar[type], exp: Int32) -> __type_of(base): +fn _powi(base: Scalar, exp: Int32) -> __type_of(base): + alias type = base.type + if type.is_integral() and exp < 0: # Not defined for Integers, this should raise an # exception. debug_assert(False, "exponent < 0 is undefined for integers") return 0 + var a = base var b = abs(exp) if type.is_floating_point() else exp var res: Scalar[type] = 1 From d84ee3223f1a753672f82722502f623bbcce5904 Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Sun, 1 Dec 2024 09:22:56 -0800 Subject: [PATCH 004/509] [mojo-docs] Update the documentation to new keywords This does a big migration of the documentation over to the new argument convention spellings, and also catches some uses of `inout` in inits that moved to `out`. MODULAR_ORIG_COMMIT_REV_ID: b5562aa2bbcd3260a83e354ee97964c3d58920b0 --- docs/manual/basics.mdx | 2 +- docs/manual/errors.mdx | 14 +++--- docs/manual/functions.mdx | 14 +++--- docs/manual/lifecycle/death.mdx | 2 +- docs/manual/lifecycle/life.mdx | 14 +++--- docs/manual/operators.mdx | 28 +++++------ docs/manual/packages.md | 2 +- docs/manual/parameters/index.mdx | 4 +- docs/manual/pointers.mdx | 2 +- docs/manual/structs.mdx | 6 +-- docs/manual/traits.mdx | 2 +- docs/manual/values/lifetimes.mdx | 6 +-- docs/manual/values/ownership.mdx | 64 +++++++++++++------------- docs/manual/values/value-semantics.mdx | 4 +- stdlib/docs/bencher/Bench.md | 18 ++++---- stdlib/docs/bencher/BenchConfig.md | 2 +- stdlib/docs/bencher/BenchId.md | 4 +- stdlib/docs/bencher/Bencher.md | 10 ++-- stdlib/docs/bencher/BenchmarkInfo.md | 2 +- stdlib/docs/style-guide.md | 2 +- 20 files changed, 101 insertions(+), 101 deletions(-) diff --git a/docs/manual/basics.mdx b/docs/manual/basics.mdx index 2253f8c7c9..938701d322 100644 --- a/docs/manual/basics.mdx +++ b/docs/manual/basics.mdx @@ -95,7 +95,7 @@ passed by reference, the short answer is: `def` functions receive arguments The longer short answer is that Mojo allows you to specify for each argument whether it should be passed by value (as `owned`), or whether it should be -passed by reference (as `borrowed` for an immutable reference, or as `inout` +passed by reference (as `read` for an immutable reference, or as `mut` for a mutable reference). This feature is entwined with Mojo's value ownership model, which protects you diff --git a/docs/manual/errors.mdx b/docs/manual/errors.mdx index c87fab7777..47e1a23711 100644 --- a/docs/manual/errors.mdx +++ b/docs/manual/errors.mdx @@ -298,14 +298,14 @@ import time struct Timer: var start_time: Int - fn __init__(inout self): + fn __init__(out self): self.start_time = 0 - fn __enter__(inout self) -> Self: + fn __enter__(mut self) -> Self: self.start_time = time.perf_counter_ns() return self - fn __exit__(inout self): + fn __exit__(mut self): end_time = time.perf_counter_ns() elapsed_time_ms = round(((end_time - self.start_time) / 1e6), 3) print("Elapsed time:", elapsed_time_ms, "milliseconds") @@ -371,19 +371,19 @@ import time struct ConditionalTimer: var start_time: Int - fn __init__(inout self): + fn __init__(out self): self.start_time = 0 - fn __enter__(inout self) -> Self: + fn __enter__(mut self) -> Self: self.start_time = time.perf_counter_ns() return self - fn __exit__(inout self): + fn __exit__(mut self): end_time = time.perf_counter_ns() elapsed_time_ms = round(((end_time - self.start_time) / 1e6), 3) print("Elapsed time:", elapsed_time_ms, "milliseconds") - fn __exit__(inout self, e: Error) raises -> Bool: + fn __exit__(mut self, e: Error) raises -> Bool: if str(e) == "just a warning": print("Suppressing error:", e) self.__exit__() diff --git a/docs/manual/functions.mdx b/docs/manual/functions.mdx index d35c3cad30..19d4c2e067 100644 --- a/docs/manual/functions.mdx +++ b/docs/manual/functions.mdx @@ -51,7 +51,7 @@ Here's everything to know about `fn`: value). * By default, arguments are received as an immutable reference (values are - read-only, using the `borrowed` [argument + read-only, using the `read` [argument convention](/mojo/manual/values/ownership#argument-conventions)). This prevents accidental mutations, and permits the use of non-copyable types @@ -59,7 +59,7 @@ Here's everything to know about `fn`: If you want a local copy, you can simply assign the value to a local variable. Or, you can get a mutable reference to the value by declaring the - `inout` [argument + `mut` [argument convention](/mojo/manual/values/ownership#argument-conventions)). * If the function raises an exception, it must be explicitly declared with the @@ -106,7 +106,7 @@ Here's everything to know about `def`: `def` function doesn't declare a return type of `None`, it's considered to return an `object` by default.) -* Arguments are mutable. Arguments default to using the `borrowed` +* Arguments are mutable. Arguments default to using the `read` [argument convention](/mojo/manual/values/ownership#argument-conventions) like an `fn` function, with a special addition: if the function mutates the argument, it makes a mutable copy. @@ -179,7 +179,7 @@ fn use_defaults(): ``` However, you cannot define a default value for an argument that's declared as -[`inout`](/mojo/manual/values/ownership#mutable-arguments-inout). +[`mut`](/mojo/manual/values/ownership#mutable-arguments-mut). Any optional arguments must appear after any required arguments. [Keyword-only arguments](#positional-only-and-keyword-only-arguments), discussed later, can @@ -280,7 +280,7 @@ of the value itself. You must add an empty subscript operator `[]` to dereference the reference and retrieve the value: ```mojo -def make_worldly(inout *strs: String): +def make_worldly(mut *strs: String): # Requires extra [] to dereference the reference for now. for i in strs: i[] += " world" @@ -291,7 +291,7 @@ Alternately, subscripting into a `VariadicListMem` returns the argument value, and doesn't require any dereferencing: ```mojo -fn make_worldly(inout *strs: String): +fn make_worldly(mut *strs: String): # This "just works" as you'd expect! for i in range(len(strs)): strs[i] += " world" @@ -415,7 +415,7 @@ There are currently a few limitations: ```mojo # Not supported yet. - fn borrowed_var_kwargs(borrowed **kwargs: Int): ... + fn read_var_kwargs(read **kwargs: Int): ... ``` * All the variadic keyword arguments must have the same type, and this diff --git a/docs/manual/lifecycle/death.mdx b/docs/manual/lifecycle/death.mdx index 4494e8b446..2f7ee808f7 100644 --- a/docs/manual/lifecycle/death.mdx +++ b/docs/manual/lifecycle/death.mdx @@ -353,7 +353,7 @@ struct TwoStrings: # self.str1 has been transferred so it is also destroyed now; # `self.__del__()` is not called (avoiding an infinite loop). - fn dump(inout self): + fn dump(mut self): print('str1:', self.str1) print('str2:', self.str2) diff --git a/docs/manual/lifecycle/life.mdx b/docs/manual/lifecycle/life.mdx index 800a81163d..91646caa5f 100644 --- a/docs/manual/lifecycle/life.mdx +++ b/docs/manual/lifecycle/life.mdx @@ -71,7 +71,7 @@ var mine = MyPet("Loki", 4) ``` An instance of `MyPet` can also be -[borrowed](/mojo/manual/values/ownership#borrowed-arguments-borrowed) +[read](/mojo/manual/values/ownership#read-arguments-read) and destroyed, but it currently can't be copied or moved. We believe this is a good default starting point, because there are no built-in @@ -99,8 +99,8 @@ example, you might want a default constructor that sets some default values and takes no arguments, and then additional constructors that accept more arguments. Just be aware that, in order to modify any fields, each constructor must -declare the `self` argument with the [`inout` -convention](/mojo/manual/values/ownership#mutable-arguments-inout). If you +declare the `self` argument with the [`out` +convention](/mojo/manual/values/ownership#mutable-arguments-mut). If you want to call one constructor from another, you simply call upon that constructor as you would externally (you don't need to pass `self`). @@ -287,7 +287,7 @@ mistakes when referring to the current struct name. Also, notice that the `existing` argument in `__copyinit__()` is immutable because the default [argument convention](/mojo/manual/values/ownership#argument-conventions) is -`borrowed`—this is a good thing because this function should not modify the +`read`—this is a good thing because this function should not modify the contents of the value being copied. ::: @@ -337,7 +337,7 @@ struct HeapArray: (self.data + i).destroy_pointee() self.data.free() - fn append(inout self, val: Int): + fn append(mut self, val: Int): # Update the array for demo purposes if self.size < self.cap: (self.data + self.size).init_pointee_copy(val) @@ -478,7 +478,7 @@ struct HeapArray: (self.data + i).destroy_pointee() self.data.free() - fn append(inout self, val: Int): + fn append(mut self, val: Int): # Update the array for demo purposes if self.size < self.cap: (self.data + self.size).init_pointee_copy(val) @@ -529,7 +529,7 @@ values that are expensive to copy. To go further and ensure your type can never be copied, you can make it "move-only" by implementing `__moveinit__()` and *excluding* `__copyinit__()`. A move-only type can be passed to other variables and passed into functions -with any argument convention (`borrowed`, `inout`, and `owned`)—the only catch +with any argument convention (`read`, `mut`, and `owned`)—the only catch is that you must use the `^` transfer sigil to end the lifetime of a move-only type when assigning it to a new variable or when passing it as an `owned` argument. diff --git a/docs/manual/operators.mdx b/docs/manual/operators.mdx index e8a72e4a8c..a11cbd2cd8 100644 --- a/docs/manual/operators.mdx +++ b/docs/manual/operators.mdx @@ -849,10 +849,10 @@ struct MyInt: def __radd__(self, lhs: Int) -> Self: return MyInt(self.value + lhs) - def __iadd__(inout self, rhs: MyInt) -> None: + def __iadd__(mut self, rhs: MyInt) -> None: self.value += rhs.value - def __iadd__(inout self, rhs: Int) -> None: + def __iadd__(mut self, rhs: Int) -> None: self.value += rhs ``` @@ -953,7 +953,7 @@ struct MySeq[type: CollectionElement]: fn __getitem__(self, idx: Int) -> type: # Return element at the given index ... - fn __setitem__(inout self, idx: Int, value: type): + fn __setitem__(mut self, idx: Int, value: type): # Assign the element at the given index the provided value ``` @@ -1116,7 +1116,7 @@ struct Complex( fn __str__(self) -> String: return String.write(self) - fn write_to[W: Writer](self, inout writer: W): + fn write_to[W: Writer](self, mut writer: W): writer.write("(", self.re) if self.im < 0: writer.write(" - ", -self.im) @@ -1169,7 +1169,7 @@ this example. else: raise "index out of bounds" - def __setitem__(inout self, idx: Int, value: Float64) -> None: + def __setitem__(mut self, idx: Int, value: Float64) -> None: if idx == 0: self.re = value elif idx == 1: @@ -1372,44 +1372,44 @@ f1 / c1 = (-0.068665598535133904 - 0.37193865873197529i) Now let's implement support for the in-place assignment operators: `+=`, `-=`, `*=`, and `/=`. These modify the original value, so we need to mark `self` as -being an `inout` argument and update the `re` and `im` fields instead of +being an `mut` argument and update the `re` and `im` fields instead of returning a new `Complex` instance. And once again, we'll overload the definitions to support both a `Complex` and a `Float64` operand. ```mojo # ... - def __iadd__(inout self, rhs: Self) -> None: + def __iadd__(mut self, rhs: Self) -> None: self.re += rhs.re self.im += rhs.im - def __iadd__(inout self, rhs: Float64) -> None: + def __iadd__(mut self, rhs: Float64) -> None: self.re += rhs - def __isub__(inout self, rhs: Self) -> None: + def __isub__(mut self, rhs: Self) -> None: self.re -= rhs.re self.im -= rhs.im - def __isub__(inout self, rhs: Float64) -> None: + def __isub__(mut self, rhs: Float64) -> None: self.re -= rhs - def __imul__(inout self, rhs: Self) -> None: + def __imul__(mut self, rhs: Self) -> None: new_re = self.re * rhs.re - self.im * rhs.im new_im = self.re * rhs.im + self.im * rhs.re self.re = new_re self.im = new_im - def __imul__(inout self, rhs: Float64) -> None: + def __imul__(mut self, rhs: Float64) -> None: self.re *= rhs self.im *= rhs - def __itruediv__(inout self, rhs: Self) -> None: + def __itruediv__(mut self, rhs: Self) -> None: denom = rhs.squared_norm() new_re = (self.re * rhs.re + self.im * rhs.im) / denom new_im = (self.im * rhs.re - self.re * rhs.im) / denom self.re = new_re self.im = new_im - def __itruediv__(inout self, rhs: Float64) -> None: + def __itruediv__(mut self, rhs: Float64) -> None: self.re /= rhs self.im /= rhs ``` diff --git a/docs/manual/packages.md b/docs/manual/packages.md index ec7f1b55ea..1b1b6927e0 100644 --- a/docs/manual/packages.md +++ b/docs/manual/packages.md @@ -23,7 +23,7 @@ struct MyPair: var first: Int var second: Int - fn __init__(inout self, first: Int, second: Int): + fn __init__(out self, first: Int, second: Int): self.first = first self.second = second diff --git a/docs/manual/parameters/index.mdx b/docs/manual/parameters/index.mdx index 788c87977a..be9066c974 100644 --- a/docs/manual/parameters/index.mdx +++ b/docs/manual/parameters/index.mdx @@ -402,7 +402,7 @@ struct MyStruct: fn __init__(out self): pass - fn foo(inout self): + fn foo(mut self): print("calling instance method") @staticmethod @@ -411,7 +411,7 @@ struct MyStruct: fn test_static_overload(): var a = MyStruct() - # `foo(inout self)` takes precedence over a static method. + # `foo(mut self)` takes precedence over a static method. a.foo() ``` diff --git a/docs/manual/pointers.mdx b/docs/manual/pointers.mdx index 37f0a84977..57482a3781 100644 --- a/docs/manual/pointers.mdx +++ b/docs/manual/pointers.mdx @@ -525,6 +525,6 @@ differences from `UnsafePointer` which make it safer: while the pointer exists. The `Pointer` type shouldn't be confused with the immutable and mutable -references used with the `borrowed` and `inout` argument conventions. Those +references used with the `read` and `mut` argument conventions. Those references do not require explicit dereferencing, unlike a `Pointer` or `UnsafePointer`. diff --git a/docs/manual/structs.mdx b/docs/manual/structs.mdx index 59acf95f66..92f0fdc1c0 100644 --- a/docs/manual/structs.mdx +++ b/docs/manual/structs.mdx @@ -50,8 +50,8 @@ struct MyPair: self.second = second ``` -Notice that the first argument in the `__init__()` method is `inout self`. For -now, ignore `inout` (it's an [argument +Notice that the first argument in the `__init__()` method is `out self`. For +now, ignore `out` (it's an [argument convention](/mojo/manual/values/ownership#argument-conventions) that declares `self` as a mutable reference); all you need to know right now is that `self` must be the first argument. It references the current struct instance @@ -310,7 +310,7 @@ When you add the `@value` decorator, Mojo synthesizes each special method above only if it doesn't exist already. That is, you can still implement a custom version of each method. -In addition to the `inout` argument convention you already saw with +In addition to the `out` argument convention you already saw with `__init__()`, this code also introduces `owned`, which is another argument convention that ensures the argument has unique ownership of the value. For more detail, see the section about [value diff --git a/docs/manual/traits.mdx b/docs/manual/traits.mdx index 4e1ae7b321..99da582c4b 100644 --- a/docs/manual/traits.mdx +++ b/docs/manual/traits.mdx @@ -441,7 +441,7 @@ struct Dog(Stringable, Representable, Writable): fn __str__(self) -> String: return String.write(self) - fn write_to[W: Writer](self, inout writer: W) -> None: + fn write_to[W: Writer](self, mut writer: W) -> None: writer.write("Dog(", self.name, ", ", self.age, ")") var dog = Dog("Rex", 5) diff --git a/docs/manual/values/lifetimes.mdx b/docs/manual/values/lifetimes.mdx index 24ff2b7982..39c2402f43 100644 --- a/docs/manual/values/lifetimes.mdx +++ b/docs/manual/values/lifetimes.mdx @@ -205,8 +205,8 @@ You can use the `ref` keyword with arguments and return values to specify a reference with parametric mutability. That is, they can be either mutable or immutable. -From inside the called function, a `ref` argument looks like a `borrowed` or -`inout` argument. +From inside the called function, a `ref` argument looks like a `read` or +`mut` argument. A `ref` return value looks like any other return value to the calling function, but it is a *reference* to an existing value, not a copy. @@ -282,7 +282,7 @@ Mutable: Goodbye ### `ref` return values Like `ref` arguments, `ref` return values allow a function to return a mutable -or immutable reference to a value. Like a `borrowed` or `inout` argument, these +or immutable reference to a value. Like a `read` or `mut` argument, these references don't need to be dereferenced. `ref` return values can be an efficient way to handle updating items in a diff --git a/docs/manual/values/ownership.mdx b/docs/manual/values/ownership.mdx index 5748afe073..d45ecc7c70 100644 --- a/docs/manual/values/ownership.mdx +++ b/docs/manual/values/ownership.mdx @@ -65,11 +65,11 @@ An argument convention specifies whether an argument is mutable or immutable, and whether the function owns the value. Each convention is defined by a keyword at the beginning of an argument declaration: -* `borrowed`: The function receives an **immutable reference**. This means the +* `read`: The function receives an **immutable reference**. This means the function can read the original value (it is *not* a copy), but it cannot mutate (modify) it. `def` functions treat this differently, as described below. -* `inout`: The function receives a **mutable reference**. This means the +* `mut`: The function receives a **mutable reference**. This means the function can read and mutate the original value (it is *not* a copy). * `owned`: The function takes **ownership** of a value. This means the function @@ -80,7 +80,7 @@ keyword at the beginning of an argument declaration: * `ref`: The function gets a reference with an parametric mutability: that is, the reference can be either mutable or immutable. You can think of `ref` - arguments as a generalization of the `borrowed` and `inout` conventions. + arguments as a generalization of the `read` and `mut` conventions. `ref` arguments are an advanced topic, and they're described in more detail in [Lifetimes and references](/mojo/manual/values/lifetimes). @@ -88,7 +88,7 @@ For example, this function has one argument that's a mutable reference and one that's immutable: ```mojo -fn add(inout x: Int, borrowed y: Int): +fn add(mut x: Int, read y: Int): x += y fn main(): @@ -99,14 +99,14 @@ fn main(): ``` You've probably already seen some function arguments that don't declare a -convention. by default, all arguments are `borrowed`. +convention. by default, all arguments are `read`. In the following sections, we'll explain each of these argument conventions in more detail. -## Borrowed arguments (`borrowed`) +## Borrowed arguments (`read`) -The `borrowed` convention is the default for all arguments. But `def` and `fn` -functions treat `borrowed` arguments somewhat differently: +The `read` convention is the default for all arguments. But `def` and `fn` +functions treat `read` arguments somewhat differently: * In a [`def` function](/mojo/manual/functions#def-functions), if you mutate the value in the body of the function, the function receives a mutable copy of @@ -119,7 +119,7 @@ functions treat `borrowed` arguments somewhat differently: assign it to a local variable: ```mojo - var my_copy = borrowed_arg + var my_copy = read_arg ``` In both cases, the original value on the caller side can't be changed by the @@ -142,7 +142,7 @@ print_list(list) [1, 2, 3, 4] ``` -Here the `list` argument to `print_list()` is borrowed and not mutated, so the +Here the `list` argument to `print_list()` is read and not mutated, so the `print_list()` function gets an immutable reference to the original `List`, and doesn't do any copying. @@ -152,9 +152,9 @@ and destructor are not invoked for a borrow. ### Compared to C++ and Rust -Mojo's borrowed argument convention is similar in some ways to passing an +Mojo's read argument convention is similar in some ways to passing an argument by `const&` in C++, which also avoids a copy of the value and disables -mutability in the callee. However, the borrowed convention differs from +mutability in the callee. However, the read convention differs from `const&` in C++ in two important ways: * The Mojo compiler implements a lifetime checker that ensures that values are @@ -174,10 +174,10 @@ passing small values, and Rust defaults to moving values instead of passing them around by borrow. These policy and syntax decisions allow Mojo to provide an easier-to-use programming model. -## Mutable arguments (`inout`) +## Mutable arguments (`mut`) -If you'd like your function to receive a **mutable reference**, add the `inout` -keyword in front of the argument name. You can think of `inout` like this: it +If you'd like your function to receive a **mutable reference**, add the `mut` +keyword in front of the argument name. You can think of `mut` like this: it means any changes to the value *in*side the function are visible *out*side the function. @@ -186,7 +186,7 @@ For example, this `mutate()` function updates the original `list` value: ```mojo from collections import List -def mutate(inout l: List[Int]): +def mutate(mut l: List[Int]): l.append(5) var list = List(1, 2, 3, 4) @@ -217,18 +217,18 @@ print_list(list) [1, 2, 3, 4, 5] ``` -Although the code using `inout` isn't that much shorter, it's more memory +Although the code using `mut` isn't that much shorter, it's more memory efficient because it does not make a copy of the value. -However, remember that the values passed as `inout` must already be mutable. -For example, if you try to take a `borrowed` value and pass it to another -function as `inout`, you'll get a compiler error because Mojo can't form a +However, remember that the values passed as `mut` must already be mutable. +For example, if you try to take a `read` value and pass it to another +function as `mut`, you'll get a compiler error because Mojo can't form a mutable reference from an immutable reference. :::note You cannot define [default -values](/mojo/manual/functions#optional-arguments) for `inout` +values](/mojo/manual/functions#optional-arguments) for `mut` arguments. ::: @@ -236,14 +236,14 @@ arguments. ### Argument exclusivity Mojo enforces *argument exclusivity* for mutable references. This means that if -a function receives a mutable reference to a value (such as an `inout` argument), +a function receives a mutable reference to a value (such as an `mut` argument), it can't receive any other references to the same value—mutable or immutable. That is, a mutable reference can't have any other references that *alias* it. For example, consider the following code example: ```mojo -fn append_twice(inout s: String, other: String): +fn append_twice(mut s: String, other: String): # Mojo knows 's' and 'other' cannot be the same string. s += other s += other @@ -251,8 +251,8 @@ fn append_twice(inout s: String, other: String): fn invalid_access(): var my_string = str("o") - # error: passing `my_string` inout is invalid since it is also passed - # borrowed. + # error: passing `my_string` mut is invalid since it is also passed + # read. append_twice(my_string, my_string) print(my_string) ``` @@ -374,7 +374,7 @@ destroyed at the end of the function. ```mojo from collections import List -def add_to_list(owned name: String, inout list: List[String]): +def add_to_list(owned name: String, mut list: List[String]): list.append(name^) # name is uninitialized, nothing to destroy @@ -429,16 +429,16 @@ function is essentially just sugaring for the `fn` function: [`object`](/mojo/stdlib/builtin/object/object) type (whereas as `fn` requires all types be explicitly declared). -* A `def` function can treat a `borrowed` argument as mutable (in which case it +* A `def` function can treat a `read` argument as mutable (in which case it receives a mutable copy). An `fn` function must make this copy explicitly. For example, these two functions have the exact same behavior. ```mojo -def def_example(a: Int, inout b: Int, owned c): +def def_example(a: Int, mut b: Int, owned c): pass -fn fn_example(a_in: Int, inout b: Int, owned c: object): +fn fn_example(a_in: Int, mut b: Int, owned c: object): var a = a_in pass ``` @@ -450,12 +450,12 @@ copying large numbers of strings.) ### Borrowed versus owned in `def` functions -The difference between `borrowed` and `owned` in a `def` function may be a +The difference between `read` and `owned` in a `def` function may be a little subtle. In both cases, you can end up with a uniquely-owned value that's a copy of the original value. -* The `borrowed` argument always gets an immutable reference or a local copy. - You can't transfer a value into a `borrowed` argument. +* The `read` argument always gets an immutable reference or a local copy. + You can't transfer a value into a `read` argument. * The `owned` argument always gets a uniquely owned value, which may have been copied or transferred from the callee. Using `owned` arguments without the diff --git a/docs/manual/values/value-semantics.mdx b/docs/manual/values/value-semantics.mdx index 403db993b6..58b1896f2c 100644 --- a/docs/manual/values/value-semantics.mdx +++ b/docs/manual/values/value-semantics.mdx @@ -120,9 +120,9 @@ and only make a copy when it's explicitly requested. The arguments above are mutable because a [`def` function](/mojo/manual/functions#def-functions) has special treatment for the default -[`borrowed` argument convention](/mojo/manual/values/ownership#argument-conventions). +[`read` argument convention](/mojo/manual/values/ownership#argument-conventions). -Whereas, `fn` functions always receive `borrowed` arguments as immutable +Whereas, `fn` functions always receive `read` arguments as immutable references. This is a memory optimization to avoid making unnecessary copies. diff --git a/stdlib/docs/bencher/Bench.md b/stdlib/docs/bencher/Bench.md index 1e71a29c53..19133b572f 100644 --- a/stdlib/docs/bencher/Bench.md +++ b/stdlib/docs/bencher/Bench.md @@ -33,7 +33,7 @@ Defines the main Benchmark struct which executes a Benchmark and print result.
```mojo -__init__(inout self: Self, config: Optional[BenchConfig] = #kgen.none, mode: Mode = 0) +__init__(out self: Self, config: Optional[BenchConfig] = #kgen.none, mode: Mode = 0) ```
@@ -56,7 +56,7 @@ Constructs a Benchmark object based on specific configuration and mode.
```mojo -bench_with_input[T: AnyType, bench_fn: fn(inout Bencher, $0) capturing -> None](inout self: Self, bench_id: BenchId, input: T, throughput_elems: Optional[Int] = #kgen.none) +bench_with_input[T: AnyType, bench_fn: fn(mut Bencher, $0) capturing -> None](mut self: Self, bench_id: BenchId, input: T, throughput_elems: Optional[Int] = #kgen.none) ```
@@ -66,7 +66,7 @@ Benchmarks an input function with input args of type AnyType. **Parameters:** - ​T (`AnyType`): Benchmark function input type. -- ​bench_fn (`fn(inout Bencher, $0) capturing -> None`): The function to +- ​bench_fn (`fn(mut Bencher, $0) capturing -> None`): The function to be benchmarked. **Args:** @@ -83,7 +83,7 @@ Benchmarks an input function with input args of type AnyType.
```mojo -bench_with_input[T: AnyTrivialRegType, bench_fn: fn(inout Bencher, $0) capturing -> None](inout self: Self, bench_id: BenchId, input: T, throughput_elems: Optional[Int] = #kgen.none) +bench_with_input[T: AnyTrivialRegType, bench_fn: fn(mut Bencher, $0) capturing -> None](mut self: Self, bench_id: BenchId, input: T, throughput_elems: Optional[Int] = #kgen.none) ```
@@ -93,7 +93,7 @@ Benchmarks an input function with input args of type AnyTrivialRegType. **Parameters:** - ​T (`AnyTrivialRegType`): Benchmark function input type. -- ​bench_fn (`fn(inout Bencher, $0) capturing -> None`): The function to +- ​bench_fn (`fn(mut Bencher, $0) capturing -> None`): The function to be benchmarked. **Args:** @@ -112,7 +112,7 @@ Benchmarks an input function with input args of type AnyTrivialRegType.
```mojo -bench_function[bench_fn: fn(inout Bencher) capturing -> None](inout self: Self, bench_id: BenchId, throughput_elems: Optional[Int] = #kgen.none) +bench_function[bench_fn: fn(mut Bencher) capturing -> None](mut self: Self, bench_id: BenchId, throughput_elems: Optional[Int] = #kgen.none) ```
@@ -121,7 +121,7 @@ Benchmarks or Tests an input function. **Parameters:** -- ​bench_fn (`fn(inout Bencher) capturing -> None`): The function to be +- ​bench_fn (`fn(mut Bencher) capturing -> None`): The function to be benchmarked. **Args:** @@ -137,7 +137,7 @@ Benchmarks or Tests an input function.
```mojo -bench_function[bench_fn: fn(inout Bencher) raises capturing -> None](inout self: Self, bench_id: BenchId, throughput_elems: Optional[Int] = #kgen.none) +bench_function[bench_fn: fn(mut Bencher) raises capturing -> None](mut self: Self, bench_id: BenchId, throughput_elems: Optional[Int] = #kgen.none) ```
@@ -146,7 +146,7 @@ Benchmarks or Tests an input function. **Parameters:** -- ​bench_fn (`fn(inout Bencher) raises capturing -> None`): The function +- ​bench_fn (`fn(mut Bencher) raises capturing -> None`): The function to be benchmarked. **Args:** diff --git a/stdlib/docs/bencher/BenchConfig.md b/stdlib/docs/bencher/BenchConfig.md index cebb46f13f..8a83984d5e 100644 --- a/stdlib/docs/bencher/BenchConfig.md +++ b/stdlib/docs/bencher/BenchConfig.md @@ -48,7 +48,7 @@ frequency.
```mojo -__init__(inout self: out_file: Optional[Path] = None, min_runtime_secs: SIMD[float64, 1] = 1.0, max_runtime_secs: SIMD[float64, 1] = 2.0, min_warmuptime_secs: SIMD[float64, 1] = 1.0, max_batch_size: Int = 0, max_iters: Int = 1000000000, num_repetitions: Int = 1, flush_denormals: Bool = True) +__init__(out self: out_file: Optional[Path] = None, min_runtime_secs: SIMD[float64, 1] = 1.0, max_runtime_secs: SIMD[float64, 1] = 2.0, min_warmuptime_secs: SIMD[float64, 1] = 1.0, max_batch_size: Int = 0, max_iters: Int = 1000000000, num_repetitions: Int = 1, flush_denormals: Bool = True) ```
diff --git a/stdlib/docs/bencher/BenchId.md b/stdlib/docs/bencher/BenchId.md index e305f890fe..0d215bd972 100644 --- a/stdlib/docs/bencher/BenchId.md +++ b/stdlib/docs/bencher/BenchId.md @@ -30,7 +30,7 @@ execution.
-`__init__(inout self: Self, func_name: String, input_id: String)` +`__init__(out self: Self, func_name: String, input_id: String)`
@@ -47,7 +47,7 @@ Constructs a Benchmark Id object from input function name and Id phrase.
-`__init__(inout self: Self, func_name: String)` +`__init__(out self: Self, func_name: String)`
diff --git a/stdlib/docs/bencher/Bencher.md b/stdlib/docs/bencher/Bencher.md index 4270a7a714..91d68e80d8 100644 --- a/stdlib/docs/bencher/Bencher.md +++ b/stdlib/docs/bencher/Bencher.md @@ -30,7 +30,7 @@ Defines a Bencher struct which facilitates the timing of a target function.
-`__init__(inout self: Self, num_iters: Int)` +`__init__(out self: Self, num_iters: Int)`
@@ -48,7 +48,7 @@ Constructs a Bencher object to run and time a function.
-`iter[iter_fn: fn() capturing -> None](inout self: Self)` +`iter[iter_fn: fn() capturing -> None](mut self: Self)`
@@ -65,7 +65,7 @@ of times.
-`iter[iter_fn: fn() raises capturing -> None](inout self: Self)` +`iter[iter_fn: fn() raises capturing -> None](mut self: Self)`
@@ -85,7 +85,7 @@ of times.
-`iter_custom[iter_fn: fn(Int) capturing -> Int](inout self: Self)` +`iter_custom[iter_fn: fn(Int) capturing -> Int](mut self: Self)`
@@ -101,7 +101,7 @@ Times a target function with custom number of iterations.
-`iter_custom[iter_fn: fn(Int) raises capturing -> Int](inout self: Self)` +`iter_custom[iter_fn: fn(Int) raises capturing -> Int](mut self: Self)`
diff --git a/stdlib/docs/bencher/BenchmarkInfo.md b/stdlib/docs/bencher/BenchmarkInfo.md index 88eafec487..52b2922fa0 100644 --- a/stdlib/docs/bencher/BenchmarkInfo.md +++ b/stdlib/docs/bencher/BenchmarkInfo.md @@ -33,7 +33,7 @@ Defines a Benchmark Info struct to record execution Statistics.
-`__init__(inout self: Self, name: String, result: Report, elems: Optional[Int])` +`__init__(out self: Self, name: String, result: Report, elems: Optional[Int])`
diff --git a/stdlib/docs/style-guide.md b/stdlib/docs/style-guide.md index f1c135cf4f..dc07d62088 100644 --- a/stdlib/docs/style-guide.md +++ b/stdlib/docs/style-guide.md @@ -283,7 +283,7 @@ the same type: ```mojo struct MyStruct: # Invoked as `MyStruct(other)` - fn __init__(inout self, other: Self): + fn __init__(out self, other: Self): # do a deep copy of MyStruct ``` From 1341e18488fe0b49a2dc8dca031fe501d0f38393 Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Sun, 1 Dec 2024 09:29:25 -0800 Subject: [PATCH 005/509] [mojo-lang][KGEN] Rename argument convention enums This renames the ArgConvention enums over to follow the new naming in the Mojo source. This also makes a variety of changes to improve consistency in the codebase, cleaning up old remnants of 'inout' etc. MODULAR_ORIG_COMMIT_REV_ID: 117874f7161ed1df3aa1db967cd42678c6e358a2 --- proposals/improved-hash-module.md | 44 ++++++++++++------------- proposals/opt-in-implicit-conversion.md | 2 +- proposals/remove-let-decls.md | 2 +- stdlib/src/builtin/builtin_list.mojo | 4 +-- 4 files changed, 26 insertions(+), 26 deletions(-) diff --git a/proposals/improved-hash-module.md b/proposals/improved-hash-module.md index c2f9c460fb..ee2bd138f5 100644 --- a/proposals/improved-hash-module.md +++ b/proposals/improved-hash-module.md @@ -62,16 +62,16 @@ of the `Hashable` trait. ```mojo trait Hasher: """Trait which every hash function implementer needs to implement.""" - fn __init__(inout self): + fn __init__(out self): """Expects a no argument instantiation.""" ... - fn _update_with_bytes(inout self, bytes: DTypePointer[DType.uint8], n: Int): + fn _update_with_bytes(mut self, bytes: DTypePointer[DType.uint8], n: Int): """Conribute to the hash value based on a sequence of bytes. Use only for complex types which are not just a composition of Hashable types.""" ... - fn _update_with_simd[dt: DType, size: Int](inout self, value: SIMD[dt, size]): + fn _update_with_simd[dt: DType, size: Int](mut self, value: SIMD[dt, size]): """Contribute to the hash value with a compile time know fix size value. Used inside of std lib to avoid runtime branching.""" ... - fn update[T: Hashable](inout self, value: T): + fn update[T: Hashable](mut self, value: T): """Contribute to the hash value with a Hashable value. Should be used by implementors of Hashable types which are a composition of Hashable types.""" ... fn _finish[dt: DType = DType.uint64](owned self) -> Scalar[dt]: @@ -93,13 +93,13 @@ Below you can see a dummy implementation of a `DefaultHasher` struct DefaultHasher(Hasher): var hash: UInt64 - fn __init__(inout self): + fn __init__(out self): self.hash = 42 - fn _update_with_bytes(inout self, bytes: DTypePointer[DType.uint8], n: Int): + fn _update_with_bytes(mut self, bytes: DTypePointer[DType.uint8], n: Int): ... - fn _update_with_simd[dt: DType, size: Int](inout self, value: SIMD[dt, size]): + fn _update_with_simd[dt: DType, size: Int](mut self, value: SIMD[dt, size]): ... - fn update[T: Hashable](inout self, value: T): + fn update[T: Hashable](mut self, value: T): ... fn _finish[dt: DType = DType.uint64](owned self) -> Scalar[dt]: return self.hash.cast[dt]() @@ -112,7 +112,7 @@ data flow paradigm instead of call return. ```mojo trait Hashable: - fn hash_with[H: Hasher](self, inout hasher: H): + fn hash_with[H: Hasher](self, mut hasher: H): ... ``` @@ -128,7 +128,7 @@ struct Person(Hashable): var name: String var age: Int - fn __hash__[H: Hasher](self, inout hasher: H): + fn __hash__[H: Hasher](self, mut hasher: H): hasher.update(self.name) hasher.update(self.age) ``` @@ -155,21 +155,21 @@ from random import random_si64 trait Hashable: """Trait which every hashable type needs to implement.""" - fn __hash__[H: Hasher](self, inout hasher: H): + fn __hash__[H: Hasher](self, mut hasher: H): ... trait Hasher: """Trait which every hash function implementer needs to implement.""" - fn __init__(inout self): + fn __init__(out self): """Expects a no argument instantiation.""" ... - fn _update_with_bytes(inout self, bytes: DTypePointer[DType.uint8], n: Int): + fn _update_with_bytes(mut self, bytes: DTypePointer[DType.uint8], n: Int): """Conribute to the hash value based on a sequence of bytes. Use only for complex types which are not just a composition of Hashable types.""" ... - fn _update_with_simd[dt: DType, size: Int](inout self, value: SIMD[dt, size]): + fn _update_with_simd[dt: DType, size: Int](mut self, value: SIMD[dt, size]): """Contribute to the hash value with a compile time know fix size value. Used inside of std lib to avoid runtime branching.""" ... - fn update[T: Hashable](inout self, value: T): + fn update[T: Hashable](mut self, value: T): """Contribute to the hash value with a Hashable value. Should be used by implementors of Hashable types which are a composition of Hashable types.""" ... fn _finish[dt: DType = DType.uint64](owned self) -> Scalar[dt]: @@ -184,7 +184,7 @@ struct MyInt(Hashable): var value: Int @always_inline - fn __hash__[H: Hasher](self, inout hasher: H): + fn __hash__[H: Hasher](self, mut hasher: H): hasher._update_with_simd(Int64(self.value)) @value @@ -193,7 +193,7 @@ struct MyString(Hashable): var value: StringLiteral @always_inline - fn __hash__[H: Hasher](self, inout hasher: H): + fn __hash__[H: Hasher](self, mut hasher: H): hasher.update(MyInt(len(self.value))) hasher._update_with_bytes(self.value.data().bitcast[DType.uint8](), len(self.value)) @@ -203,7 +203,7 @@ struct Person(Hashable): var name: MyString var age: MyInt - fn __hash__[H: Hasher](self, inout hasher: H): + fn __hash__[H: Hasher](self, mut hasher: H): hasher.update(self.name) hasher.update(self.age) @@ -235,7 +235,7 @@ struct DJBX33A_Hasher[custom_secret: UInt64 = 0](Hasher): var secret: UInt64 @always_inline - fn __init__(inout self): + fn __init__(out self): self.hash_data = 5361 @parameter if custom_secret != 0: @@ -244,13 +244,13 @@ struct DJBX33A_Hasher[custom_secret: UInt64 = 0](Hasher): self.secret = _DJBX33A_SECRET() @always_inline - fn _update_with_bytes(inout self, bytes: DTypePointer[DType.uint8], n: Int): + fn _update_with_bytes(mut self, bytes: DTypePointer[DType.uint8], n: Int): """The algorithm is not optimal.""" for i in range(n): self.hash_data = self.hash_data * 33 + bytes.load(i).cast[DType.uint64]() @always_inline - fn _update_with_simd[dt: DType, size: Int](inout self, value: SIMD[dt, size]): + fn _update_with_simd[dt: DType, size: Int](mut self, value: SIMD[dt, size]): """The algorithm is not optimal.""" alias size_in_bytes = size * dt.sizeof() var bytes = bitcast[DType.uint8, size_in_bytes](value) @@ -259,7 +259,7 @@ struct DJBX33A_Hasher[custom_secret: UInt64 = 0](Hasher): self.hash_data = self.hash_data * 33 + bytes[i].cast[DType.uint64]() @always_inline - fn update[T: Hashable](inout self, value: T): + fn update[T: Hashable](mut self, value: T): value.__hash__(self) @always_inline diff --git a/proposals/opt-in-implicit-conversion.md b/proposals/opt-in-implicit-conversion.md index ea3858da06..e2d7dc7e81 100644 --- a/proposals/opt-in-implicit-conversion.md +++ b/proposals/opt-in-implicit-conversion.md @@ -69,7 +69,7 @@ let foo: Foo = 10 ```python struct Foo: @implicit_conversion - fn __init__(inout self, i: Int): + fn __init__(out self, i: Int): pass var foo: Foo = 10 diff --git a/proposals/remove-let-decls.md b/proposals/remove-let-decls.md index ec09b19359..34f8eb3b7c 100644 --- a/proposals/remove-let-decls.md +++ b/proposals/remove-let-decls.md @@ -68,7 +68,7 @@ a great way to define defaulted field values, e.g.: struct Thing: # This is not actually supported right now, but imagine it were. let field = 42 - fn __init__(inout self): + fn __init__(out self): self.field = 17 # shouldn't be able to overwrite field? ``` diff --git a/stdlib/src/builtin/builtin_list.mojo b/stdlib/src/builtin/builtin_list.mojo index 0272fbc2d6..be5ddaaa05 100644 --- a/stdlib/src/builtin/builtin_list.mojo +++ b/stdlib/src/builtin/builtin_list.mojo @@ -311,7 +311,7 @@ struct VariadicListMem[ alias reference_type = Pointer[element_type, origin] alias _mlir_ref_type = Self.reference_type._mlir_type alias _mlir_type = __mlir_type[ - `!kgen.variadic<`, Self._mlir_ref_type, `, borrow_in_mem>` + `!kgen.variadic<`, Self._mlir_ref_type, `, read_mem>` ] var value: Self._mlir_type @@ -343,7 +343,7 @@ struct VariadicListMem[ # automatically be inferred to be mutable, and the !kgen.variadic will have # convention=mut. alias _inout_variadic_type = __mlir_type[ - `!kgen.variadic<`, Self._mlir_ref_type, `, inout>` + `!kgen.variadic<`, Self._mlir_ref_type, `, mut>` ] @always_inline From 86bc06d463c0724007a79d8c3cead51c5da00e96 Mon Sep 17 00:00:00 2001 From: abdul dakkak Date: Sun, 1 Dec 2024 15:05:58 -0800 Subject: [PATCH 006/509] [******][GPU] Introduce a new GridIdx operation MODULAR_ORIG_COMMIT_REV_ID: 5ffe1df491c0c3f092ed645ffbe0756ebceeec04 --- stdlib/src/math/math.mojo | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/stdlib/src/math/math.mojo b/stdlib/src/math/math.mojo index 0c06a6b00a..2c7ee78a5d 100644 --- a/stdlib/src/math/math.mojo +++ b/stdlib/src/math/math.mojo @@ -1154,6 +1154,23 @@ fn fma(a: Int, b: Int, c: Int) -> Int: return a * b + c +@always_inline +fn fma(a: UInt, b: UInt, c: UInt) -> UInt: + """Performs `fma` (fused multiply-add) on the inputs. + + The result is `(a * b) + c`. + + Args: + a: The first input. + b: The second input. + c: The third input. + + Returns: + `(a * b) + c`. + """ + return a * b + c + + @always_inline("nodebug") fn fma[ type: DType, simd_width: Int From d02bb01500d7d022610e28bbcd65e7c61224daec Mon Sep 17 00:00:00 2001 From: Joe Loser Date: Mon, 2 Dec 2024 13:00:47 -0700 Subject: [PATCH 007/509] [stdlib] Simplify `String.split` with isspace Now that `StringSlice.isspace()` exists, use it in `String.split` to avoid the `str(...)` calls. MODULAR_ORIG_COMMIT_REV_ID: 9cdd0d76aa059456be6bcdf79301e09bcf2730ec --- stdlib/src/collections/string.mojo | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/stdlib/src/collections/string.mojo b/stdlib/src/collections/string.mojo index d75d2098cd..a6051bbb81 100644 --- a/stdlib/src/collections/string.mojo +++ b/stdlib/src/collections/string.mojo @@ -1816,7 +1816,7 @@ struct String( # Python adds all "whitespace chars" as one separator # if no separator was specified for s in self[lhs:]: - if not str(s).isspace(): # TODO: with StringSlice.isspace() + if not s.isspace(): break lhs += s.byte_length() # if it went until the end of the String, then @@ -1830,7 +1830,7 @@ struct String( break rhs = lhs + num_bytes(self.unsafe_ptr()[lhs]) for s in self[lhs + num_bytes(self.unsafe_ptr()[lhs]) :]: - if str(s).isspace(): # TODO: with StringSlice.isspace() + if s.isspace(): break rhs += s.byte_length() From 57f4962e2eb730b6b3a59b18c061fad0e7c1a698 Mon Sep 17 00:00:00 2001 From: martinvuyk <110240700+martinvuyk@users.noreply.github.com> Date: Mon, 2 Dec 2024 12:39:52 -0800 Subject: [PATCH 008/509] [External] [stdlib] Optimize `_StringSliceIter` to not have branching in forward iteration (#51441) [External] [stdlib] Optimize `_StringSliceIter` to not have branching in forward iteration Optimize `_StringSliceIter` to not have branching in forward iteration. This also fixes an error in the iterator's `__len__` logic which assumed it would be called only at the beginning of the iteration Co-authored-by: martinvuyk <110240700+martinvuyk@users.noreply.github.com> Closes modularml/mojo#3546 MODULAR_ORIG_COMMIT_REV_ID: 0919af33312b082a4bac7d1547a193fba378e56f --- stdlib/src/utils/string_slice.mojo | 58 ++++++++++-------------- stdlib/test/collections/test_string.mojo | 30 ++++++------ 2 files changed, 42 insertions(+), 46 deletions(-) diff --git a/stdlib/src/utils/string_slice.mojo b/stdlib/src/utils/string_slice.mojo index 48be446549..666a25c45c 100644 --- a/stdlib/src/utils/string_slice.mojo +++ b/stdlib/src/utils/string_slice.mojo @@ -80,13 +80,9 @@ fn _utf8_first_byte_sequence_length(b: Byte) -> Int: debug_assert( (b & 0b1100_0000) != 0b1000_0000, - ( - "Function `_utf8_first_byte_sequence_length()` does not work" - " correctly if given a continuation byte." - ), + "Function does not work correctly if given a continuation byte.", ) - var flipped = ~b - return int(count_leading_zeros(flipped) + (flipped >> 7)) + return int(count_leading_zeros(~b)) + int(b < 0b1000_0000) fn _shift_unicode_to_utf8(ptr: UnsafePointer[UInt8], c: Int, num_bytes: Int): @@ -186,17 +182,13 @@ struct _StringSliceIter[ """ var index: Int - var continuation_bytes: Int - var ptr: UnsafePointer[UInt8] + var ptr: UnsafePointer[Byte] var length: Int - fn __init__(mut self, *, unsafe_pointer: UnsafePointer[UInt8], length: Int): + fn __init__(mut self, *, unsafe_pointer: UnsafePointer[Byte], length: Int): self.index = 0 if forward else length self.ptr = unsafe_pointer self.length = length - alias S = Span[Byte, StaticConstantOrigin] - var s = S(ptr=self.ptr, length=self.length) - self.continuation_bytes = _count_utf8_continuation_bytes(s) fn __iter__(self) -> Self: return self @@ -204,26 +196,14 @@ struct _StringSliceIter[ fn __next__(mut self) -> StringSlice[origin]: @parameter if forward: - var byte_len = 1 - if self.continuation_bytes > 0: - var byte_type = _utf8_byte_type(self.ptr[self.index]) - if byte_type != 0: - byte_len = int(byte_type) - self.continuation_bytes -= byte_len - 1 + byte_len = _utf8_first_byte_sequence_length(self.ptr[self.index]) + i = self.index self.index += byte_len - return StringSlice[origin]( - ptr=self.ptr + (self.index - byte_len), length=byte_len - ) + return StringSlice[origin](ptr=self.ptr + i, length=byte_len) else: - var byte_len = 1 - if self.continuation_bytes > 0: - var byte_type = _utf8_byte_type(self.ptr[self.index - 1]) - if byte_type != 0: - while byte_type == 1: - byte_len += 1 - var b = self.ptr[self.index - byte_len] - byte_type = _utf8_byte_type(b) - self.continuation_bytes -= byte_len - 1 + byte_len = 1 + while _utf8_byte_type(self.ptr[self.index - byte_len]) == 1: + byte_len += 1 self.index -= byte_len return StringSlice[origin]( ptr=self.ptr + self.index, length=byte_len @@ -231,14 +211,26 @@ struct _StringSliceIter[ @always_inline fn __has_next__(self) -> Bool: - return self.__len__() > 0 + @parameter + if forward: + return self.index < self.length + else: + return self.index > 0 fn __len__(self) -> Int: @parameter if forward: - return self.length - self.index - self.continuation_bytes + remaining = self.length - self.index + cont = _count_utf8_continuation_bytes( + Span[Byte, ImmutableAnyOrigin]( + ptr=self.ptr + self.index, length=remaining + ) + ) + return remaining - cont else: - return self.index - self.continuation_bytes + return self.index - _count_utf8_continuation_bytes( + Span[Byte, ImmutableAnyOrigin](ptr=self.ptr, length=self.index) + ) @value diff --git a/stdlib/test/collections/test_string.mojo b/stdlib/test/collections/test_string.mojo index c70ff3a50c..da23f5d9c7 100644 --- a/stdlib/test/collections/test_string.mojo +++ b/stdlib/test/collections/test_string.mojo @@ -1273,19 +1273,23 @@ def test_string_iter(): var idx = -1 vs = String("mojo🔥") - for item in vs: - idx += 1 - if idx == 0: - assert_equal("m", item) - elif idx == 1: - assert_equal("o", item) - elif idx == 2: - assert_equal("j", item) - elif idx == 3: - assert_equal("o", item) - elif idx == 4: - assert_equal("🔥", item) - assert_equal(4, idx) + var iterator = vs.__iter__() + assert_equal(5, len(iterator)) + var item = iterator.__next__() + assert_equal("m", item) + assert_equal(4, len(iterator)) + item = iterator.__next__() + assert_equal("o", item) + assert_equal(3, len(iterator)) + item = iterator.__next__() + assert_equal("j", item) + assert_equal(2, len(iterator)) + item = iterator.__next__() + assert_equal("o", item) + assert_equal(1, len(iterator)) + item = iterator.__next__() + assert_equal("🔥", item) + assert_equal(0, len(iterator)) var items = List[String]( "mojo🔥", From 4a01dbb17438c851a8d2cc9887a72e611768d28e Mon Sep 17 00:00:00 2001 From: modularbot Date: Tue, 3 Dec 2024 02:01:11 +0000 Subject: [PATCH 009/509] Update lockfiles to point to latest nightly version: 24.6.0.dev2024120221 --- examples/life/magic.lock | 427 ++++++++++++++------------- examples/magic.lock | 427 ++++++++++++++------------- examples/notebooks/magic.lock | 528 +++++++++++++++++----------------- examples/operators/magic.lock | 427 ++++++++++++++------------- magic.lock | 427 ++++++++++++++------------- 5 files changed, 1151 insertions(+), 1085 deletions(-) diff --git a/examples/life/magic.lock b/examples/life/magic.lock index 57221ff76d..8325a74676 100644 --- a/examples/life/magic.lock +++ b/examples/life/magic.lock @@ -8,8 +8,8 @@ environments: linux-64: - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.8-py312h178313f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.9-py312h178313f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/alsa-lib-1.2.13-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_0.conda @@ -26,10 +26,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.1-hab05fe4_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.2-hdeadb07_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h7bd072d_8.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.2-h3a84f74_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.3-h3a84f74_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.1-hf42f96a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-hf42f96a_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.6-h0e61686_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.6-hdec8b0f_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.449-h5558e3c_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.10.0-h113e628_0.conda @@ -84,7 +84,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/httptools-0.6.4-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.2-pyh0610db2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_0.conda @@ -173,12 +173,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.9.4-hcb278e6_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120105-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120105-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120105-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120221-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120221-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120221-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120221-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120221-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/multiprocess-0.70.16-py312h66e93f0_1.conda @@ -228,7 +228,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.18-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python-xxhash-3.5.0-py312h66e93f0_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda @@ -264,8 +264,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.14.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.14.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.14.0-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_0.conda @@ -293,8 +293,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda linux-aarch64: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.8-py312hcc812fe_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.9-py312hcc812fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/alsa-lib-1.2.13-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_0.conda @@ -311,10 +311,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.1-hf4e072c_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.2-h10eb1bc_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h28a5e6a_8.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.2-h29aef15_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.3-h29aef15_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.1-h4c7db1d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h4c7db1d_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.6-h6068a22_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.6-h7939e66_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.449-h7085e57_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-core-cpp-1.14.0-h1887c18_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-identity-cpp-1.10.0-h47b0b28_0.conda @@ -369,7 +369,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/httptools-0.6.4-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.2-pyh0610db2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_0.conda @@ -458,12 +458,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.9.4-hd600fc2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.2-py312h74ce7d3_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120105-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120105-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120105-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120221-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120221-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120221-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120221-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120221-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/multiprocess-0.70.16-py312hb2c0f52_1.conda @@ -513,7 +513,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.18-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-xxhash-3.5.0-py312h52516f5_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.12-5_cp312.conda @@ -549,8 +549,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.14.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.14.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.14.0-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_0.conda @@ -577,8 +577,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstandard-0.23.0-py312hb698573_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.6-h02f22dd_0.conda osx-arm64: - - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.8-py312h998013c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.9-py312h998013c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda @@ -593,10 +593,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.1-hf483d09_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.2-h39f8ad8_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h68a0d7e_8.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.2-h840aca7_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.3-h840aca7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.1-h5d7ee29_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-h5d7ee29_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.6-h8bcca62_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.6-ha226bf8_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.449-h3b64406_4.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.14.0-hd50102c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.10.0-hc602bab_0.conda @@ -649,7 +649,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/httptools-0.6.4-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.2-pyh0610db2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_0.conda @@ -723,12 +723,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.9.4-hb7217d7_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312ha0ccf2a_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120105-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120105-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120105-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120221-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120221-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120221-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120221-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120221-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.16-py312h024a12e_1.conda @@ -777,7 +777,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.18-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-xxhash-3.5.0-py312h024a12e_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-5_cp312.conda @@ -812,8 +812,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.14.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.14.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.14.0-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_0.conda @@ -882,27 +882,27 @@ packages: timestamp: 1650670790230 - kind: conda name: aiohappyeyeballs - version: 2.4.3 + version: 2.4.4 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.3-pyhd8ed1ab_0.conda - sha256: cfa5bed6ad8d00c2bc2c6ccf115e91ef1a9981b73c68537b247f1a964a841cac - md5: ec763b0a58960558ca0ad7255a51a237 + url: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_0.conda + sha256: 4282838f468f75f0c1746cbc6cdd3365b9f6d449bf5af8a74b234e396d847bf0 + md5: 8d6f8a679aa0272ba8d6092ce4824870 depends: - - python >=3.8.0 + - python >=3.9 license: PSF-2.0 license_family: PSF - size: 19271 - timestamp: 1727779893392 + size: 19310 + timestamp: 1733135584059 - kind: conda name: aiohttp - version: 3.11.8 + version: 3.11.9 build: py312h178313f_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.8-py312h178313f_0.conda - sha256: 5a51cfa8c17a1c545f07c8a9bae637b233c803f92f922ce3badb7a81f6e7eba8 - md5: 63eb2bd555d446218c7bbdec2dd746c5 + url: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.9-py312h178313f_0.conda + sha256: 875a8ad0da035b33ba8037c40a2ffc0412b9545bc3d15455a8a75db22a3ee471 + md5: eeaf9831f262132fb12ce3921de09651 depends: - __glibc >=2.17,<3.0.a0 - aiohappyeyeballs >=2.3.0 @@ -917,16 +917,16 @@ packages: - yarl >=1.17.0,<2.0 license: MIT AND Apache-2.0 license_family: Apache - size: 912229 - timestamp: 1732780345490 + size: 912186 + timestamp: 1733125914520 - kind: conda name: aiohttp - version: 3.11.8 + version: 3.11.9 build: py312h998013c_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.8-py312h998013c_0.conda - sha256: 991fccd7387b08127a8398cdd499ebb9be7a16a612b024f7f82d0ecbae456b00 - md5: 8caf80b1f8510c2c626831f463fac611 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.9-py312h998013c_0.conda + sha256: 521b7c97a1122c0a6740a3200163e29bc8aa1d7efa273deb6e4c58a47779114b + md5: 0bb2657d1215a89fb586d387ce9c4daa depends: - __osx >=11.0 - aiohappyeyeballs >=2.3.0 @@ -941,16 +941,16 @@ packages: - yarl >=1.17.0,<2.0 license: MIT AND Apache-2.0 license_family: Apache - size: 873606 - timestamp: 1732780440642 + size: 873089 + timestamp: 1733125044394 - kind: conda name: aiohttp - version: 3.11.8 + version: 3.11.9 build: py312hcc812fe_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.8-py312hcc812fe_0.conda - sha256: 04dc698f291a0580101baa4df07cc12ed99f025c4aab23e184cfe12cf692fa12 - md5: dc9d21c22f3a000083437b0e99e99f31 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.9-py312hcc812fe_0.conda + sha256: e358d2c03b4eceb7ad3d8636705e60aa15bdec81305d9f9e1624fb5a03901147 + md5: 06400e4f6428e6c2ea2b59df702b5b39 depends: - aiohappyeyeballs >=2.3.0 - aiosignal >=1.1.2 @@ -965,8 +965,8 @@ packages: - yarl >=1.17.0,<2.0 license: MIT AND Apache-2.0 license_family: Apache - size: 900671 - timestamp: 1732780496954 + size: 900828 + timestamp: 1733124971238 - kind: conda name: aiosignal version: 1.3.1 @@ -1588,12 +1588,12 @@ packages: timestamp: 1731734668760 - kind: conda name: aws-c-s3 - version: 0.7.2 + version: 0.7.3 build: h29aef15_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.2-h29aef15_0.conda - sha256: 387e4df97529d1849a774082b1fed78c7870effc02ed4c2b45961615a0516b64 - md5: fbf4af2c93ae67f175583c9185be4133 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.3-h29aef15_0.conda + sha256: 57aa8b28890efd82c479e902125ea8a37782b163f13ae0856b259ec527a52879 + md5: e09cd76e50ce09ec14c17109da5c6502 depends: - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.0,<0.8.1.0a0 @@ -1605,16 +1605,16 @@ packages: - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 117212 - timestamp: 1732679211893 + size: 117467 + timestamp: 1733098782199 - kind: conda name: aws-c-s3 - version: 0.7.2 + version: 0.7.3 build: h3a84f74_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.2-h3a84f74_0.conda - sha256: c0ae38eb1f878157323afdd002229e9eeb739f622e028447330805c030c50a9f - md5: a5f883ce16928e898856b5bd8d1bee57 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.3-h3a84f74_0.conda + sha256: db17a15e5e01f19700bf9be961e1c4e002ccf8dc4d9caa3a24a0ab54f00f2c2d + md5: 171850b890600458ae6c990e78f1fa23 depends: - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 @@ -1627,16 +1627,16 @@ packages: - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 113549 - timestamp: 1732679091663 + size: 113536 + timestamp: 1733098705479 - kind: conda name: aws-c-s3 - version: 0.7.2 + version: 0.7.3 build: h840aca7_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.2-h840aca7_0.conda - sha256: 30e4bed9d008fb79f5e84ecbea0f21030ad5d60cb5c55a962df90721aa98fc42 - md5: 63100ff62fdff4a6afcea38841036027 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.3-h840aca7_0.conda + sha256: 18972a91f32f6b0edb58eb71cb2f5b56654183fd6ba611b3b0d6cc484017aeff + md5: 893e668d99fa4b31eef9dc5b19c21b9a depends: - __osx >=11.0 - aws-c-auth >=0.8.0,<0.8.1.0a0 @@ -1647,8 +1647,8 @@ packages: - aws-checksums >=0.2.2,<0.2.3.0a0 license: Apache-2.0 license_family: Apache - size: 97042 - timestamp: 1732679268030 + size: 97145 + timestamp: 1733098874599 - kind: conda name: aws-c-sdkutils version: 0.2.1 @@ -1750,13 +1750,13 @@ packages: - kind: conda name: aws-crt-cpp version: 0.29.6 - build: h0e61686_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.6-h0e61686_0.conda - sha256: b821d0125f8fcb589b880bf3a5e0e1667e285b3006ceb19d96e6d92d049ab787 - md5: 651a6500e5fded51bb7572f4eebcfd7b + build: h7939e66_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.6-h7939e66_1.conda + sha256: 3d0b1996d28a2647ced83ed8052ee331df70b2c1a68fb6db0fe4e743a88be54d + md5: 5e573a52a1cd20f81d7fdf1db4f4583a depends: - - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.0,<0.8.1.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 @@ -1764,23 +1764,25 @@ packages: - aws-c-http >=0.9.1,<0.9.2.0a0 - aws-c-io >=0.15.2,<0.15.3.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - - aws-c-s3 >=0.7.2,<0.7.3.0a0 + - aws-c-s3 >=0.7.3,<0.7.4.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 355169 - timestamp: 1732769507038 + size: 283670 + timestamp: 1733150929992 - kind: conda name: aws-crt-cpp version: 0.29.6 - build: h6068a22_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.6-h6068a22_0.conda - sha256: 45b15e8ecad820f9f80bace92cbb29f81b30e0ba31e25b936a13bdb0360a0637 - md5: 7f8ecd32e9afbbf87438367b551c3a8b + build: ha226bf8_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.6-ha226bf8_1.conda + sha256: f645e2a8015d8e71ed785c81a14a202ebce2f5dcca8982cd7ec5f8000f9be5c3 + md5: 81da0b5f65ab08e3919d6eadf08b5776 depends: + - __osx >=11.0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.0,<0.8.1.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 @@ -1788,24 +1790,24 @@ packages: - aws-c-http >=0.9.1,<0.9.2.0a0 - aws-c-io >=0.15.2,<0.15.3.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - - aws-c-s3 >=0.7.2,<0.7.3.0a0 + - aws-c-s3 >=0.7.3,<0.7.4.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - - libgcc >=13 - - libstdcxx >=13 + - libcxx >=18 license: Apache-2.0 license_family: Apache - size: 283440 - timestamp: 1732769529667 + size: 236505 + timestamp: 1733151090562 - kind: conda name: aws-crt-cpp version: 0.29.6 - build: h8bcca62_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.6-h8bcca62_0.conda - sha256: b6d2ff238a712137afd9b46842235b32a04cac580734873bf86876da6e71dd03 - md5: 8e49f5e86a3e39699b24035fa6d1ad40 + build: hdec8b0f_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.6-hdec8b0f_1.conda + sha256: cd09f1d5d854607ce7acafc76c74e864f296d296e60b54054a10f757ecc3d2dd + md5: 40647232fad98f92be8c6050a7e0c2bd depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.0,<0.8.1.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 @@ -1813,13 +1815,14 @@ packages: - aws-c-http >=0.9.1,<0.9.2.0a0 - aws-c-io >=0.15.2,<0.15.3.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - - aws-c-s3 >=0.7.2,<0.7.3.0a0 + - aws-c-s3 >=0.7.3,<0.7.4.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - - libcxx >=18 + - libgcc >=13 + - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 236490 - timestamp: 1732769764315 + size: 354710 + timestamp: 1733150818238 - kind: conda name: aws-sdk-cpp version: 1.11.449 @@ -3659,13 +3662,13 @@ packages: timestamp: 1732831049776 - kind: conda name: huggingface_hub - version: 0.26.2 - build: pyh0610db2_0 + version: 0.26.3 + build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.2-pyh0610db2_0.conda - sha256: fad5da1b0a0899dfb4d59bb4a4e4b58bade677ad44332beb608020e55f1bea53 - md5: a7344f1612e61d1e1dcc90c758f71f8f + url: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.3-pyhd8ed1ab_0.conda + sha256: 66ffed967463e4a25f1dc4ca699d85dd55d1d150fed214c6380f11a981e0acb7 + md5: 997fc223fbc616c262f2a32a22d433a4 depends: - filelock - fsspec >=2023.5.0 @@ -3677,9 +3680,8 @@ packages: - typing-extensions >=3.7.4.3 - typing_extensions >=3.7.4.3 license: Apache-2.0 - license_family: APACHE - size: 274216 - timestamp: 1730211995421 + size: 274858 + timestamp: 1733170279930 - kind: conda name: hyperframe version: 6.0.1 @@ -4210,6 +4212,7 @@ packages: - parquet-cpp <0.0a0 - apache-arrow-proc =*=cpu license: Apache-2.0 + license_family: APACHE size: 5475725 timestamp: 1732947802614 - kind: conda @@ -4252,6 +4255,7 @@ packages: - arrow-cpp <0.0a0 - parquet-cpp <0.0a0 license: Apache-2.0 + license_family: APACHE size: 8026783 timestamp: 1732950110265 - kind: conda @@ -4330,6 +4334,7 @@ packages: - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 + license_family: APACHE size: 577510 timestamp: 1732950190684 - kind: conda @@ -4346,6 +4351,7 @@ packages: - libarrow 18.1.0 h654e1bb_2_cpu - libcxx >=18 license: Apache-2.0 + license_family: APACHE size: 483362 timestamp: 1732948000606 - kind: conda @@ -4384,6 +4390,7 @@ packages: - libparquet 18.1.0 h23a96eb_2_cpu - libstdcxx >=13 license: Apache-2.0 + license_family: APACHE size: 559143 timestamp: 1732950272727 - kind: conda @@ -4402,6 +4409,7 @@ packages: - libcxx >=18 - libparquet 18.1.0 h5168bdf_2_cpu license: Apache-2.0 + license_family: APACHE size: 489769 timestamp: 1732949732423 - kind: conda @@ -4423,6 +4431,7 @@ packages: - libprotobuf >=5.28.2,<5.28.3.0a0 - libstdcxx >=13 license: Apache-2.0 + license_family: APACHE size: 515352 timestamp: 1732950311471 - kind: conda @@ -4467,6 +4476,7 @@ packages: - libcxx >=18 - libprotobuf >=5.28.2,<5.28.3.0a0 license: Apache-2.0 + license_family: APACHE size: 451127 timestamp: 1732950194322 - kind: conda @@ -6578,6 +6588,7 @@ packages: - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 + license_family: APACHE size: 1115906 timestamp: 1732950250848 - kind: conda @@ -6596,6 +6607,7 @@ packages: - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 + license_family: APACHE size: 872333 timestamp: 1732949558028 - kind: conda @@ -7727,76 +7739,76 @@ packages: timestamp: 1729351534830 - kind: conda name: max - version: 24.6.0.dev2024120105 + version: 24.6.0.dev2024120221 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120105-release.conda - sha256: 7b3ef233f35d3c9d2b2a756b85339f3271f2cac8d4433712fce9dbdc83a56ce3 - md5: 066b95823e3c9cd160c5cbe3a530e658 - depends: - - max-core ==24.6.0.dev2024120105 release - - max-python >=24.6.0.dev2024120105,<25.0a0 - - mojo-jupyter ==24.6.0.dev2024120105 release - - mblack ==24.6.0.dev2024120105 release + url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120221-release.conda + sha256: 71b02d0afbd2dfa49633f0dff4cdc1a94392abc344668636b90656060117384e + md5: fa3d1a799da8e216b9448fd2246655f3 + depends: + - max-core ==24.6.0.dev2024120221 release + - max-python >=24.6.0.dev2024120221,<25.0a0 + - mojo-jupyter ==24.6.0.dev2024120221 release + - mblack ==24.6.0.dev2024120221 release license: LicenseRef-Modular-Proprietary - size: 9922 - timestamp: 1733030528874 + size: 9927 + timestamp: 1733176232456 - kind: conda name: max-core - version: 24.6.0.dev2024120105 + version: 24.6.0.dev2024120221 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120105-release.conda - sha256: cc9c4b332e39efa40ead3e55c67438b82b4f0f74cb64702636168d92da5f986c - md5: c4876829ff25302ed7aaac7e800f9faa + url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120221-release.conda + sha256: e7362f447478b8f8a4ce9f6e4a38c7b519c4fdd81cbcb6cd0bfded3cfb3399eb + md5: 646d3f60af8b7d77a29ea74c80b73abe depends: - - mblack ==24.6.0.dev2024120105 release + - mblack ==24.6.0.dev2024120221 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 254727332 - timestamp: 1733030528873 + size: 254782923 + timestamp: 1733176189897 - kind: conda name: max-core - version: 24.6.0.dev2024120105 + version: 24.6.0.dev2024120221 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120105-release.conda - sha256: d733b0b57191ae17abe55bd5c3cf7fe02e77038c4cf9eb98b3a539d283698f98 - md5: 2f1eb5e1b2e077b3877c4ca7f5670a6c + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120221-release.conda + sha256: 38a17e51fc0bc077d19e9829a0d901dfef581c13a4b3b5238fbc509c5e495119 + md5: 762d1a967090c478c15e8182ee077eac depends: - - mblack ==24.6.0.dev2024120105 release + - mblack ==24.6.0.dev2024120221 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 258393349 - timestamp: 1733030529884 + size: 258409140 + timestamp: 1733176232454 - kind: conda name: max-core - version: 24.6.0.dev2024120105 + version: 24.6.0.dev2024120221 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120105-release.conda - sha256: 625afbae07f7ef017c037f8b81c2de82d344ca1d14becad14d4d804326046204 - md5: 17df9e0840ae14e6f3c9a840e8237f8a + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120221-release.conda + sha256: 81d2491a6299f97cb6f9847169f71eb344e5deec11755819e4124b054ec69c4c + md5: 0b95fc4831992260253ee5e3c83f3382 depends: - - mblack ==24.6.0.dev2024120105 release + - mblack ==24.6.0.dev2024120221 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 220268454 - timestamp: 1733030465063 + size: 220306895 + timestamp: 1733176012956 - kind: conda name: max-python - version: 24.6.0.dev2024120105 + version: 24.6.0.dev2024120221 build: 3.12release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120105-3.12release.conda - sha256: 9f9139e62349d97472d5a7b87575de7669ce099e1f2d4090c22b1d6a7a9b246e - md5: c933f4a6c589fad077ce030b33236724 + url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120221-3.12release.conda + sha256: eff8e0d757d2ff4398c11357f2f6018cd32bfe01b7f7b9a40eb6848b7150eee5 + md5: d11c807bdfab1a9ec1d8d60ae4966f6f depends: - - max-core ==24.6.0.dev2024120105 release + - max-core ==24.6.0.dev2024120221 release - python 3.12.* - pillow - fastapi @@ -7818,18 +7830,18 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 128563671 - timestamp: 1733030528881 + size: 128533716 + timestamp: 1733176189912 - kind: conda name: max-python - version: 24.6.0.dev2024120105 + version: 24.6.0.dev2024120221 build: 3.12release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120105-3.12release.conda - sha256: a5e03fa2abd8453c813a13225e84df4a9781c6b25a05c1b976cfe6f4671d4bbd - md5: 13bbc313863bd5c560a9768165d63be1 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120221-3.12release.conda + sha256: c9314e3c7be3e6913345141b05beb7868e6a35dad199472c64a0b9137bc89aa2 + md5: f7e5f66871aa60909394a02ab2344f64 depends: - - max-core ==24.6.0.dev2024120105 release + - max-core ==24.6.0.dev2024120221 release - python 3.12.* - pillow - fastapi @@ -7851,18 +7863,18 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 132240712 - timestamp: 1733030529893 + size: 132227870 + timestamp: 1733176232462 - kind: conda name: max-python - version: 24.6.0.dev2024120105 + version: 24.6.0.dev2024120221 build: 3.12release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120105-3.12release.conda - sha256: 47b8fb6184f15795d78d408ce2e7f702208af3863adbea9c8a0b1011ac551411 - md5: 5c145a15e58ef93719afa6cc2b472ccf + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120221-3.12release.conda + sha256: 781843479c4ff561f1963df894c76fbc4e623e16dba02ca90a9facdfa2f5d20a + md5: 10517bdbac80736a742077a261e535b6 depends: - - max-core ==24.6.0.dev2024120105 release + - max-core ==24.6.0.dev2024120221 release - python 3.12.* - pillow - fastapi @@ -7884,17 +7896,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 119119907 - timestamp: 1733030465067 + size: 119173532 + timestamp: 1733176012959 - kind: conda name: mblack - version: 24.6.0.dev2024120105 + version: 24.6.0.dev2024120221 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120105-release.conda - sha256: 8b4fdcc9c031e2b16fd48c64767919c6c82b0347d02a606770589b58e659721b - md5: af6b9bb6fed204e9e4ed73c334d24647 + url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120221-release.conda + sha256: 5d3b01c8332faf96e9d95f5ea2bf7ac1f528279326717103d9e3cf0a53a0dd58 + md5: a4660d8dd8037b8c090b028271d18e14 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -7904,8 +7916,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130609 - timestamp: 1733030528877 + size: 130643 + timestamp: 1733176232459 - kind: conda name: mdurl version: 0.1.2 @@ -7923,21 +7935,21 @@ packages: timestamp: 1704317789138 - kind: conda name: mojo-jupyter - version: 24.6.0.dev2024120105 + version: 24.6.0.dev2024120221 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120105-release.conda - sha256: 131b9545efd1c967f7fc0ee3b23c5000fc5481ab5ce1a3117624f70b9db7e9e3 - md5: 2c6472e319310564fa809d3e06b25ba5 + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120221-release.conda + sha256: 93bb896b09ee00dd8aaeb842dc73939e8c990bb14ba71e8c952fca318c235b0a + md5: 9f4dbbf9e29a9fc89154906e388c037b depends: - - max-core ==24.6.0.dev2024120105 release + - max-core ==24.6.0.dev2024120221 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22941 - timestamp: 1733030528878 + size: 22931 + timestamp: 1733176232460 - kind: conda name: mpg123 version: 1.32.9 @@ -9781,20 +9793,19 @@ packages: timestamp: 1677079727691 - kind: conda name: python-multipart - version: 0.0.18 - build: pyhff2d567_1 - build_number: 1 + version: 0.0.19 + build: pyhff2d567_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.18-pyhff2d567_1.conda - sha256: 464e546b789b8e881e1dc6b4995a11007d1e7c3ef2a533b9fb970146e85f7af8 - md5: 8057e4cf29236ea2094cc20fe9ef451e + url: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_0.conda + sha256: ff5964cd5eafc118f9d9a15fd31cd88a7ecc756ef83b6095c69b1891a53e2177 + md5: fe524346d3a9aa0aaf353dc39f7d1715 depends: - python >=3.9 license: Apache-2.0 license_family: Apache - size: 27683 - timestamp: 1732988029649 + size: 27780 + timestamp: 1733062326577 - kind: conda name: python-tzdata version: '2024.2' @@ -11055,33 +11066,35 @@ packages: - kind: conda name: typing-extensions version: 4.12.2 - build: hd8ed1ab_0 + build: hd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_0.conda - sha256: d3b9a8ed6da7c9f9553c5fd8a4fca9c3e0ab712fa5f497859f82337d67533b73 - md5: 52d648bd608f5737b123f510bb5514b5 + url: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda + sha256: c8e9c1c467b5f960b627d7adc1c65fece8e929a3de89967e91ef0f726422fd32 + md5: b6a408c64b78ec7b779a3e5c7a902433 depends: - - typing_extensions 4.12.2 pyha770c72_0 + - typing_extensions 4.12.2 pyha770c72_1 license: PSF-2.0 license_family: PSF - size: 10097 - timestamp: 1717802659025 + size: 10075 + timestamp: 1733188758872 - kind: conda name: typing_extensions version: 4.12.2 - build: pyha770c72_0 + build: pyha770c72_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda - sha256: 0fce54f8ec3e59f5ef3bb7641863be4e1bf1279623e5af3d3fa726e8f7628ddb - md5: ebe6952715e1d5eb567eeebf25250fa7 + url: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + sha256: 337be7af5af8b2817f115b3b68870208b30c31d3439bec07bfb2d8f4823e3568 + md5: d17f13df8b65464ca316cbc000a3cb64 depends: - - python >=3.8 + - python >=3.9 license: PSF-2.0 license_family: PSF - size: 39888 - timestamp: 1717802653893 + size: 39637 + timestamp: 1733188758212 - kind: conda name: tzdata version: 2024b diff --git a/examples/magic.lock b/examples/magic.lock index 59942a7dac..bf0e02fb64 100644 --- a/examples/magic.lock +++ b/examples/magic.lock @@ -8,8 +8,8 @@ environments: linux-64: - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.8-py311h2dc5d0c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.9-py311h2dc5d0c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda @@ -23,10 +23,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.1-hab05fe4_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.2-hdeadb07_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h7bd072d_8.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.2-h3a84f74_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.3-h3a84f74_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.1-hf42f96a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-hf42f96a_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.6-h0e61686_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.6-hdec8b0f_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.449-h5558e3c_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.10.0-h113e628_0.conda @@ -65,7 +65,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/httptools-0.6.4-py311h9ecbd09_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.2-pyh0610db2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-7.0.2-pyha770c72_0.conda @@ -131,12 +131,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.9.4-hcb278e6_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py311h2dc5d0c_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120105-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120105-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120105-3.11release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120221-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120221-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120221-3.11release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120221-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120221-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py311h2dc5d0c_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.16-py311h9ecbd09_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda @@ -178,7 +178,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.18-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python-xxhash-3.5.0-py311h9ecbd09_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.11-5_cp311.conda @@ -208,8 +208,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.14.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.14.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.14.0-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_0.conda @@ -230,8 +230,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda linux-aarch64: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.8-py311h58d527c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.9-py311h58d527c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda @@ -245,10 +245,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.1-hf4e072c_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.2-h10eb1bc_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h28a5e6a_8.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.2-h29aef15_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.3-h29aef15_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.1-h4c7db1d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h4c7db1d_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.6-h6068a22_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.6-h7939e66_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.449-h7085e57_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-core-cpp-1.14.0-h1887c18_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-identity-cpp-1.10.0-h47b0b28_0.conda @@ -287,7 +287,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/httptools-0.6.4-py311ha879c10_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.2-pyh0610db2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_0.conda @@ -354,12 +354,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.9.4-hd600fc2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.2-py311ha09ea12_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120105-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120105-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120105-3.11release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120221-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120221-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120221-3.11release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120221-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120221-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multidict-6.1.0-py311h58d527c_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.16-py311ha879c10_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda @@ -401,7 +401,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.18-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-xxhash-3.5.0-py311h5487e9b_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.11-5_cp311.conda @@ -431,8 +431,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.14.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.14.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.14.0-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_0.conda @@ -452,8 +452,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstandard-0.23.0-py311hd5293d8_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.6-h02f22dd_0.conda osx-arm64: - - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.8-py311h4921393_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.9-py311h4921393_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda @@ -467,10 +467,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.1-hf483d09_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.2-h39f8ad8_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h68a0d7e_8.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.2-h840aca7_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.3-h840aca7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.1-h5d7ee29_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-h5d7ee29_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.6-h8bcca62_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.6-ha226bf8_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.449-h3b64406_4.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.14.0-hd50102c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.10.0-hc602bab_0.conda @@ -509,7 +509,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/httptools-0.6.4-py311h917b07b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.2-pyh0610db2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-7.0.2-pyha770c72_0.conda @@ -567,12 +567,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.9.4-hb7217d7_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py311h56c23cb_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120105-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120105-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120105-3.11release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120221-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120221-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120221-3.11release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120221-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120221-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.16-py311h460d6c5_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda @@ -614,7 +614,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.18-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-xxhash-3.5.0-py311h460d6c5_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.11-5_cp311.conda @@ -643,8 +643,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.14.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.14.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.14.0-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_0.conda @@ -712,27 +712,27 @@ packages: timestamp: 1650670790230 - kind: conda name: aiohappyeyeballs - version: 2.4.3 + version: 2.4.4 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.3-pyhd8ed1ab_0.conda - sha256: cfa5bed6ad8d00c2bc2c6ccf115e91ef1a9981b73c68537b247f1a964a841cac - md5: ec763b0a58960558ca0ad7255a51a237 + url: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_0.conda + sha256: 4282838f468f75f0c1746cbc6cdd3365b9f6d449bf5af8a74b234e396d847bf0 + md5: 8d6f8a679aa0272ba8d6092ce4824870 depends: - - python >=3.8.0 + - python >=3.9 license: PSF-2.0 license_family: PSF - size: 19271 - timestamp: 1727779893392 + size: 19310 + timestamp: 1733135584059 - kind: conda name: aiohttp - version: 3.11.8 + version: 3.11.9 build: py311h2dc5d0c_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.8-py311h2dc5d0c_0.conda - sha256: 754ba9e0286a4daa5b9339e79e55f026f37c40500b382cf9b616bca4e22084cc - md5: c3f865299ddb7f52b7f85bc65ba5df29 + url: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.9-py311h2dc5d0c_0.conda + sha256: 7ad0ca5ba77e058b442f0c39c708c88f2dac53b8769737701ee57964d51bdc46 + md5: 2665cc7da1c554be586963d50d1ad612 depends: - __glibc >=2.17,<3.0.a0 - aiohappyeyeballs >=2.3.0 @@ -747,16 +747,16 @@ packages: - yarl >=1.17.0,<2.0 license: MIT AND Apache-2.0 license_family: Apache - size: 920889 - timestamp: 1732780337315 + size: 920988 + timestamp: 1733124865570 - kind: conda name: aiohttp - version: 3.11.8 + version: 3.11.9 build: py311h4921393_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.8-py311h4921393_0.conda - sha256: f2ac631e80fd55d6ab5e4a7624c4174e74b2b39c73b6e0f131453bf1431ec555 - md5: 6b0f861eaa6c8279b7131e0f7e9627c2 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.9-py311h4921393_0.conda + sha256: 4e57bf5250304eec98769921788c7be76d146f21edf85ed890318991a8d9e2e7 + md5: b7e219c251ece66ccd7058af6d6fda10 depends: - __osx >=11.0 - aiohappyeyeballs >=2.3.0 @@ -771,16 +771,16 @@ packages: - yarl >=1.17.0,<2.0 license: MIT AND Apache-2.0 license_family: Apache - size: 881546 - timestamp: 1732780521684 + size: 880101 + timestamp: 1733124988232 - kind: conda name: aiohttp - version: 3.11.8 + version: 3.11.9 build: py311h58d527c_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.8-py311h58d527c_0.conda - sha256: a27c895653dda4f1571f52bc062a6138a069f6d9cdadc900fd72c30c70b9ae8f - md5: f512010b07013ca24f2aa4c47e087a1f + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.9-py311h58d527c_0.conda + sha256: 67df99e0e0e300f0ae86306f25275bd4728af2e6f852e16f6cc1b7cdb83352ae + md5: 6419796f7b0964c80dd78f523e4deae0 depends: - aiohappyeyeballs >=2.3.0 - aiosignal >=1.1.2 @@ -795,8 +795,8 @@ packages: - yarl >=1.17.0,<2.0 license: MIT AND Apache-2.0 license_family: Apache - size: 912113 - timestamp: 1732780432515 + size: 911710 + timestamp: 1733124981752 - kind: conda name: aiosignal version: 1.3.1 @@ -1314,12 +1314,12 @@ packages: timestamp: 1731734668760 - kind: conda name: aws-c-s3 - version: 0.7.2 + version: 0.7.3 build: h29aef15_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.2-h29aef15_0.conda - sha256: 387e4df97529d1849a774082b1fed78c7870effc02ed4c2b45961615a0516b64 - md5: fbf4af2c93ae67f175583c9185be4133 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.3-h29aef15_0.conda + sha256: 57aa8b28890efd82c479e902125ea8a37782b163f13ae0856b259ec527a52879 + md5: e09cd76e50ce09ec14c17109da5c6502 depends: - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.0,<0.8.1.0a0 @@ -1331,16 +1331,16 @@ packages: - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 117212 - timestamp: 1732679211893 + size: 117467 + timestamp: 1733098782199 - kind: conda name: aws-c-s3 - version: 0.7.2 + version: 0.7.3 build: h3a84f74_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.2-h3a84f74_0.conda - sha256: c0ae38eb1f878157323afdd002229e9eeb739f622e028447330805c030c50a9f - md5: a5f883ce16928e898856b5bd8d1bee57 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.3-h3a84f74_0.conda + sha256: db17a15e5e01f19700bf9be961e1c4e002ccf8dc4d9caa3a24a0ab54f00f2c2d + md5: 171850b890600458ae6c990e78f1fa23 depends: - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 @@ -1353,16 +1353,16 @@ packages: - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 113549 - timestamp: 1732679091663 + size: 113536 + timestamp: 1733098705479 - kind: conda name: aws-c-s3 - version: 0.7.2 + version: 0.7.3 build: h840aca7_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.2-h840aca7_0.conda - sha256: 30e4bed9d008fb79f5e84ecbea0f21030ad5d60cb5c55a962df90721aa98fc42 - md5: 63100ff62fdff4a6afcea38841036027 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.3-h840aca7_0.conda + sha256: 18972a91f32f6b0edb58eb71cb2f5b56654183fd6ba611b3b0d6cc484017aeff + md5: 893e668d99fa4b31eef9dc5b19c21b9a depends: - __osx >=11.0 - aws-c-auth >=0.8.0,<0.8.1.0a0 @@ -1373,8 +1373,8 @@ packages: - aws-checksums >=0.2.2,<0.2.3.0a0 license: Apache-2.0 license_family: Apache - size: 97042 - timestamp: 1732679268030 + size: 97145 + timestamp: 1733098874599 - kind: conda name: aws-c-sdkutils version: 0.2.1 @@ -1476,13 +1476,13 @@ packages: - kind: conda name: aws-crt-cpp version: 0.29.6 - build: h0e61686_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.6-h0e61686_0.conda - sha256: b821d0125f8fcb589b880bf3a5e0e1667e285b3006ceb19d96e6d92d049ab787 - md5: 651a6500e5fded51bb7572f4eebcfd7b + build: h7939e66_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.6-h7939e66_1.conda + sha256: 3d0b1996d28a2647ced83ed8052ee331df70b2c1a68fb6db0fe4e743a88be54d + md5: 5e573a52a1cd20f81d7fdf1db4f4583a depends: - - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.0,<0.8.1.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 @@ -1490,23 +1490,25 @@ packages: - aws-c-http >=0.9.1,<0.9.2.0a0 - aws-c-io >=0.15.2,<0.15.3.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - - aws-c-s3 >=0.7.2,<0.7.3.0a0 + - aws-c-s3 >=0.7.3,<0.7.4.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 355169 - timestamp: 1732769507038 + size: 283670 + timestamp: 1733150929992 - kind: conda name: aws-crt-cpp version: 0.29.6 - build: h6068a22_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.6-h6068a22_0.conda - sha256: 45b15e8ecad820f9f80bace92cbb29f81b30e0ba31e25b936a13bdb0360a0637 - md5: 7f8ecd32e9afbbf87438367b551c3a8b + build: ha226bf8_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.6-ha226bf8_1.conda + sha256: f645e2a8015d8e71ed785c81a14a202ebce2f5dcca8982cd7ec5f8000f9be5c3 + md5: 81da0b5f65ab08e3919d6eadf08b5776 depends: + - __osx >=11.0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.0,<0.8.1.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 @@ -1514,24 +1516,24 @@ packages: - aws-c-http >=0.9.1,<0.9.2.0a0 - aws-c-io >=0.15.2,<0.15.3.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - - aws-c-s3 >=0.7.2,<0.7.3.0a0 + - aws-c-s3 >=0.7.3,<0.7.4.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - - libgcc >=13 - - libstdcxx >=13 + - libcxx >=18 license: Apache-2.0 license_family: Apache - size: 283440 - timestamp: 1732769529667 + size: 236505 + timestamp: 1733151090562 - kind: conda name: aws-crt-cpp version: 0.29.6 - build: h8bcca62_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.6-h8bcca62_0.conda - sha256: b6d2ff238a712137afd9b46842235b32a04cac580734873bf86876da6e71dd03 - md5: 8e49f5e86a3e39699b24035fa6d1ad40 + build: hdec8b0f_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.6-hdec8b0f_1.conda + sha256: cd09f1d5d854607ce7acafc76c74e864f296d296e60b54054a10f757ecc3d2dd + md5: 40647232fad98f92be8c6050a7e0c2bd depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.0,<0.8.1.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 @@ -1539,13 +1541,14 @@ packages: - aws-c-http >=0.9.1,<0.9.2.0a0 - aws-c-io >=0.15.2,<0.15.3.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - - aws-c-s3 >=0.7.2,<0.7.3.0a0 + - aws-c-s3 >=0.7.3,<0.7.4.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - - libcxx >=18 + - libgcc >=13 + - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 236490 - timestamp: 1732769764315 + size: 354710 + timestamp: 1733150818238 - kind: conda name: aws-sdk-cpp version: 1.11.449 @@ -2762,13 +2765,13 @@ packages: timestamp: 1732831049776 - kind: conda name: huggingface_hub - version: 0.26.2 - build: pyh0610db2_0 + version: 0.26.3 + build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.2-pyh0610db2_0.conda - sha256: fad5da1b0a0899dfb4d59bb4a4e4b58bade677ad44332beb608020e55f1bea53 - md5: a7344f1612e61d1e1dcc90c758f71f8f + url: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.3-pyhd8ed1ab_0.conda + sha256: 66ffed967463e4a25f1dc4ca699d85dd55d1d150fed214c6380f11a981e0acb7 + md5: 997fc223fbc616c262f2a32a22d433a4 depends: - filelock - fsspec >=2023.5.0 @@ -2780,9 +2783,8 @@ packages: - typing-extensions >=3.7.4.3 - typing_extensions >=3.7.4.3 license: Apache-2.0 - license_family: APACHE - size: 274216 - timestamp: 1730211995421 + size: 274858 + timestamp: 1733170279930 - kind: conda name: hyperframe version: 6.0.1 @@ -3202,6 +3204,7 @@ packages: - parquet-cpp <0.0a0 - apache-arrow-proc =*=cpu license: Apache-2.0 + license_family: APACHE size: 5475725 timestamp: 1732947802614 - kind: conda @@ -3244,6 +3247,7 @@ packages: - arrow-cpp <0.0a0 - parquet-cpp <0.0a0 license: Apache-2.0 + license_family: APACHE size: 8026783 timestamp: 1732950110265 - kind: conda @@ -3322,6 +3326,7 @@ packages: - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 + license_family: APACHE size: 577510 timestamp: 1732950190684 - kind: conda @@ -3338,6 +3343,7 @@ packages: - libarrow 18.1.0 h654e1bb_2_cpu - libcxx >=18 license: Apache-2.0 + license_family: APACHE size: 483362 timestamp: 1732948000606 - kind: conda @@ -3376,6 +3382,7 @@ packages: - libparquet 18.1.0 h23a96eb_2_cpu - libstdcxx >=13 license: Apache-2.0 + license_family: APACHE size: 559143 timestamp: 1732950272727 - kind: conda @@ -3394,6 +3401,7 @@ packages: - libcxx >=18 - libparquet 18.1.0 h5168bdf_2_cpu license: Apache-2.0 + license_family: APACHE size: 489769 timestamp: 1732949732423 - kind: conda @@ -3415,6 +3423,7 @@ packages: - libprotobuf >=5.28.2,<5.28.3.0a0 - libstdcxx >=13 license: Apache-2.0 + license_family: APACHE size: 515352 timestamp: 1732950311471 - kind: conda @@ -3459,6 +3468,7 @@ packages: - libcxx >=18 - libprotobuf >=5.28.2,<5.28.3.0a0 license: Apache-2.0 + license_family: APACHE size: 451127 timestamp: 1732950194322 - kind: conda @@ -4828,6 +4838,7 @@ packages: - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 + license_family: APACHE size: 1115906 timestamp: 1732950250848 - kind: conda @@ -4846,6 +4857,7 @@ packages: - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 + license_family: APACHE size: 872333 timestamp: 1732949558028 - kind: conda @@ -5828,76 +5840,76 @@ packages: timestamp: 1729352296161 - kind: conda name: max - version: 24.6.0.dev2024120105 + version: 24.6.0.dev2024120221 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120105-release.conda - sha256: 7b3ef233f35d3c9d2b2a756b85339f3271f2cac8d4433712fce9dbdc83a56ce3 - md5: 066b95823e3c9cd160c5cbe3a530e658 - depends: - - max-core ==24.6.0.dev2024120105 release - - max-python >=24.6.0.dev2024120105,<25.0a0 - - mojo-jupyter ==24.6.0.dev2024120105 release - - mblack ==24.6.0.dev2024120105 release + url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120221-release.conda + sha256: 71b02d0afbd2dfa49633f0dff4cdc1a94392abc344668636b90656060117384e + md5: fa3d1a799da8e216b9448fd2246655f3 + depends: + - max-core ==24.6.0.dev2024120221 release + - max-python >=24.6.0.dev2024120221,<25.0a0 + - mojo-jupyter ==24.6.0.dev2024120221 release + - mblack ==24.6.0.dev2024120221 release license: LicenseRef-Modular-Proprietary - size: 9922 - timestamp: 1733030528874 + size: 9927 + timestamp: 1733176232456 - kind: conda name: max-core - version: 24.6.0.dev2024120105 + version: 24.6.0.dev2024120221 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120105-release.conda - sha256: cc9c4b332e39efa40ead3e55c67438b82b4f0f74cb64702636168d92da5f986c - md5: c4876829ff25302ed7aaac7e800f9faa + url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120221-release.conda + sha256: e7362f447478b8f8a4ce9f6e4a38c7b519c4fdd81cbcb6cd0bfded3cfb3399eb + md5: 646d3f60af8b7d77a29ea74c80b73abe depends: - - mblack ==24.6.0.dev2024120105 release + - mblack ==24.6.0.dev2024120221 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 254727332 - timestamp: 1733030528873 + size: 254782923 + timestamp: 1733176189897 - kind: conda name: max-core - version: 24.6.0.dev2024120105 + version: 24.6.0.dev2024120221 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120105-release.conda - sha256: d733b0b57191ae17abe55bd5c3cf7fe02e77038c4cf9eb98b3a539d283698f98 - md5: 2f1eb5e1b2e077b3877c4ca7f5670a6c + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120221-release.conda + sha256: 38a17e51fc0bc077d19e9829a0d901dfef581c13a4b3b5238fbc509c5e495119 + md5: 762d1a967090c478c15e8182ee077eac depends: - - mblack ==24.6.0.dev2024120105 release + - mblack ==24.6.0.dev2024120221 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 258393349 - timestamp: 1733030529884 + size: 258409140 + timestamp: 1733176232454 - kind: conda name: max-core - version: 24.6.0.dev2024120105 + version: 24.6.0.dev2024120221 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120105-release.conda - sha256: 625afbae07f7ef017c037f8b81c2de82d344ca1d14becad14d4d804326046204 - md5: 17df9e0840ae14e6f3c9a840e8237f8a + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120221-release.conda + sha256: 81d2491a6299f97cb6f9847169f71eb344e5deec11755819e4124b054ec69c4c + md5: 0b95fc4831992260253ee5e3c83f3382 depends: - - mblack ==24.6.0.dev2024120105 release + - mblack ==24.6.0.dev2024120221 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 220268454 - timestamp: 1733030465063 + size: 220306895 + timestamp: 1733176012956 - kind: conda name: max-python - version: 24.6.0.dev2024120105 + version: 24.6.0.dev2024120221 build: 3.11release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120105-3.11release.conda - sha256: 7c8631400afb9efb03d005e1ec0276d76bb155b20f5e35a35e1d5d9a2fefd32b - md5: 3a34e5ca2af57200fabe603a6ba0090f + url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120221-3.11release.conda + sha256: 4db5c6b7fa0c54df758b803ddcdabd352bde9a207c6a2747adcd921202637c0b + md5: fd512401071a16a8c24f6c4a4aa01a39 depends: - - max-core ==24.6.0.dev2024120105 release + - max-core ==24.6.0.dev2024120221 release - python 3.11.* - pillow - fastapi @@ -5919,18 +5931,18 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 128532038 - timestamp: 1733030528878 + size: 128540502 + timestamp: 1733176189908 - kind: conda name: max-python - version: 24.6.0.dev2024120105 + version: 24.6.0.dev2024120221 build: 3.11release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120105-3.11release.conda - sha256: af999f8f930d5cd4bb6e3de241e8ae9e1789943f2d34b9712952fa64fed6d885 - md5: 1eb9952e5ab3ee82d3a6b8dd73faf3ad + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120221-3.11release.conda + sha256: 94e7c54833fe42f2c3b2992b3231e1d4bbfeb1d5705da5bd544bad51881f448d + md5: da44758bc2124cab1e00d67ba6c23235 depends: - - max-core ==24.6.0.dev2024120105 release + - max-core ==24.6.0.dev2024120221 release - python 3.11.* - pillow - fastapi @@ -5952,18 +5964,18 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 132257898 - timestamp: 1733030529890 + size: 132240625 + timestamp: 1733176232460 - kind: conda name: max-python - version: 24.6.0.dev2024120105 + version: 24.6.0.dev2024120221 build: 3.11release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120105-3.11release.conda - sha256: 22e4097971fc3deda331baa08b589a37d3c9c838e2eae6d71864d9f5d925505b - md5: 4b0d0ab11c949e5caba2269794b9b3a5 + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120221-3.11release.conda + sha256: fe72ff98e438f7b8d6d6331821de8eab4cc6a97cdb89db0bd68001ba69d1e6ad + md5: c453413d6473cab3e8153f7503ab43f2 depends: - - max-core ==24.6.0.dev2024120105 release + - max-core ==24.6.0.dev2024120221 release - python 3.11.* - pillow - fastapi @@ -5985,17 +5997,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 119120379 - timestamp: 1733030465066 + size: 119198780 + timestamp: 1733176012958 - kind: conda name: mblack - version: 24.6.0.dev2024120105 + version: 24.6.0.dev2024120221 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120105-release.conda - sha256: 8b4fdcc9c031e2b16fd48c64767919c6c82b0347d02a606770589b58e659721b - md5: af6b9bb6fed204e9e4ed73c334d24647 + url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120221-release.conda + sha256: 5d3b01c8332faf96e9d95f5ea2bf7ac1f528279326717103d9e3cf0a53a0dd58 + md5: a4660d8dd8037b8c090b028271d18e14 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -6005,8 +6017,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130609 - timestamp: 1733030528877 + size: 130643 + timestamp: 1733176232459 - kind: conda name: mdurl version: 0.1.2 @@ -6024,21 +6036,21 @@ packages: timestamp: 1704317789138 - kind: conda name: mojo-jupyter - version: 24.6.0.dev2024120105 + version: 24.6.0.dev2024120221 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120105-release.conda - sha256: 131b9545efd1c967f7fc0ee3b23c5000fc5481ab5ce1a3117624f70b9db7e9e3 - md5: 2c6472e319310564fa809d3e06b25ba5 + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120221-release.conda + sha256: 93bb896b09ee00dd8aaeb842dc73939e8c990bb14ba71e8c952fca318c235b0a + md5: 9f4dbbf9e29a9fc89154906e388c037b depends: - - max-core ==24.6.0.dev2024120105 release + - max-core ==24.6.0.dev2024120221 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22941 - timestamp: 1733030528878 + size: 22931 + timestamp: 1733176232460 - kind: conda name: multidict version: 6.1.0 @@ -7468,20 +7480,19 @@ packages: timestamp: 1677079727691 - kind: conda name: python-multipart - version: 0.0.18 - build: pyhff2d567_1 - build_number: 1 + version: 0.0.19 + build: pyhff2d567_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.18-pyhff2d567_1.conda - sha256: 464e546b789b8e881e1dc6b4995a11007d1e7c3ef2a533b9fb970146e85f7af8 - md5: 8057e4cf29236ea2094cc20fe9ef451e + url: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_0.conda + sha256: ff5964cd5eafc118f9d9a15fd31cd88a7ecc756ef83b6095c69b1891a53e2177 + md5: fe524346d3a9aa0aaf353dc39f7d1715 depends: - python >=3.9 license: Apache-2.0 license_family: Apache - size: 27683 - timestamp: 1732988029649 + size: 27780 + timestamp: 1733062326577 - kind: conda name: python-tzdata version: '2024.2' @@ -8417,33 +8428,35 @@ packages: - kind: conda name: typing-extensions version: 4.12.2 - build: hd8ed1ab_0 + build: hd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_0.conda - sha256: d3b9a8ed6da7c9f9553c5fd8a4fca9c3e0ab712fa5f497859f82337d67533b73 - md5: 52d648bd608f5737b123f510bb5514b5 + url: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda + sha256: c8e9c1c467b5f960b627d7adc1c65fece8e929a3de89967e91ef0f726422fd32 + md5: b6a408c64b78ec7b779a3e5c7a902433 depends: - - typing_extensions 4.12.2 pyha770c72_0 + - typing_extensions 4.12.2 pyha770c72_1 license: PSF-2.0 license_family: PSF - size: 10097 - timestamp: 1717802659025 + size: 10075 + timestamp: 1733188758872 - kind: conda name: typing_extensions version: 4.12.2 - build: pyha770c72_0 + build: pyha770c72_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda - sha256: 0fce54f8ec3e59f5ef3bb7641863be4e1bf1279623e5af3d3fa726e8f7628ddb - md5: ebe6952715e1d5eb567eeebf25250fa7 + url: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + sha256: 337be7af5af8b2817f115b3b68870208b30c31d3439bec07bfb2d8f4823e3568 + md5: d17f13df8b65464ca316cbc000a3cb64 depends: - - python >=3.8 + - python >=3.9 license: PSF-2.0 license_family: PSF - size: 39888 - timestamp: 1717802653893 + size: 39637 + timestamp: 1733188758212 - kind: conda name: tzdata version: 2024b diff --git a/examples/notebooks/magic.lock b/examples/notebooks/magic.lock index 7e0ec393ea..b3eba37aed 100644 --- a/examples/notebooks/magic.lock +++ b/examples/notebooks/magic.lock @@ -8,8 +8,8 @@ environments: linux-64: - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.8-py312h178313f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.9-py312h178313f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda @@ -17,7 +17,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/argon2-cffi-bindings-21.2.0-py312h66e93f0_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/asgiref-3.8.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-2.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-hb88c0a9_10.conda @@ -28,10 +28,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.1-hab05fe4_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.2-hdeadb07_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h7bd072d_8.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.2-h3a84f74_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.3-h3a84f74_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.1-hf42f96a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-hf42f96a_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.6-h0e61686_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.6-hdec8b0f_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.449-h5558e3c_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.10.0-h113e628_0.conda @@ -82,7 +82,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/httptools-0.6.4-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.2-pyh0610db2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-7.0.2-pyha770c72_0.conda @@ -166,13 +166,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120105-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120105-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120105-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120221-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120221-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120221-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120221-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.0.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120221-release.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/multiprocess-0.70.16-py312h66e93f0_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda @@ -231,7 +231,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.18-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python-xxhash-3.5.0-py312h66e93f0_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda @@ -272,8 +272,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.14.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.14.0-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20241003-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_0.conda @@ -285,9 +285,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.8.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.8.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.8.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/websockets-14.1-py312h66e93f0_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/wheel-0.45.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/wheel-0.45.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.17.0-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.11-hb9d3cd8_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb9d3cd8_0.conda @@ -301,8 +301,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda linux-aarch64: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.8-py312hcc812fe_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.9-py312hcc812fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda @@ -310,7 +310,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/argon2-cffi-bindings-21.2.0-py312hb2c0f52_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/asgiref-3.8.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-2.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-hac900a4_10.conda @@ -321,10 +321,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.1-hf4e072c_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.2-h10eb1bc_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h28a5e6a_8.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.2-h29aef15_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.3-h29aef15_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.1-h4c7db1d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h4c7db1d_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.6-h6068a22_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.6-h7939e66_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.449-h7085e57_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-core-cpp-1.14.0-h1887c18_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-identity-cpp-1.10.0-h47b0b28_0.conda @@ -375,7 +375,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/httptools-0.6.4-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.2-pyh0610db2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_0.conda @@ -460,13 +460,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.2-py312h74ce7d3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120105-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120105-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120105-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120221-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120221-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120221-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120221-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.0.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120221-release.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/multiprocess-0.70.16-py312hb2c0f52_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda @@ -525,7 +525,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.18-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-xxhash-3.5.0-py312h52516f5_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.12-5_cp312.conda @@ -566,8 +566,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.14.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.14.0-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20241003-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_0.conda @@ -579,9 +579,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.8.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.8.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.8.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/websockets-14.1-py312hb2c0f52_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/wheel-0.45.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/wheel-0.45.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/wrapt-1.17.0-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxau-1.0.11-h86ecc28_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxdmcp-1.1.5-h57736b2_0.conda @@ -594,8 +594,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstandard-0.23.0-py312hb698573_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.6-h02f22dd_0.conda osx-arm64: - - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.8-py312h998013c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.9-py312h998013c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda @@ -604,7 +604,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/argon2-cffi-bindings-21.2.0-py312h024a12e_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/asgiref-3.8.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-2.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-h9b725a8_10.conda @@ -615,10 +615,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.1-hf483d09_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.2-h39f8ad8_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h68a0d7e_8.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.2-h840aca7_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.3-h840aca7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.1-h5d7ee29_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-h5d7ee29_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.6-h8bcca62_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.6-ha226bf8_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.449-h3b64406_4.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.14.0-hd50102c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.10.0-hc602bab_0.conda @@ -669,7 +669,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/httptools-0.6.4-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.2-pyh0610db2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-7.0.2-pyha770c72_0.conda @@ -745,13 +745,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312ha0ccf2a_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120105-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120105-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120105-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120221-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120221-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120221-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120221-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.0.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120221-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.16-py312h024a12e_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda @@ -804,15 +804,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.6.1-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyinstrument-5.0.0-py312h0bf5046_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-core-10.3.1-py312hd24fc31_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-framework-cocoa-10.3.1-py312hd24fc31_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-core-10.3.2-py312hb9d441b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-framework-cocoa-10.3.2-py312hb9d441b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.7-h739c21a_0_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.18-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-xxhash-3.5.0-py312h024a12e_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-5_cp312.conda @@ -852,8 +852,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.14.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.14.0-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20241003-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_0.conda @@ -865,9 +865,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.8.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.8.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.8.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/websockets-14.1-py312hea69d52_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/wheel-0.45.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/wheel-0.45.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/wrapt-1.17.0-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxau-1.0.11-hd74edd7_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxdmcp-1.1.5-hd74edd7_0.conda @@ -928,27 +928,27 @@ packages: timestamp: 1650670790230 - kind: conda name: aiohappyeyeballs - version: 2.4.3 + version: 2.4.4 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.3-pyhd8ed1ab_0.conda - sha256: cfa5bed6ad8d00c2bc2c6ccf115e91ef1a9981b73c68537b247f1a964a841cac - md5: ec763b0a58960558ca0ad7255a51a237 + url: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_0.conda + sha256: 4282838f468f75f0c1746cbc6cdd3365b9f6d449bf5af8a74b234e396d847bf0 + md5: 8d6f8a679aa0272ba8d6092ce4824870 depends: - - python >=3.8.0 + - python >=3.9 license: PSF-2.0 license_family: PSF - size: 19271 - timestamp: 1727779893392 + size: 19310 + timestamp: 1733135584059 - kind: conda name: aiohttp - version: 3.11.8 + version: 3.11.9 build: py312h178313f_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.8-py312h178313f_0.conda - sha256: 5a51cfa8c17a1c545f07c8a9bae637b233c803f92f922ce3badb7a81f6e7eba8 - md5: 63eb2bd555d446218c7bbdec2dd746c5 + url: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.9-py312h178313f_0.conda + sha256: 875a8ad0da035b33ba8037c40a2ffc0412b9545bc3d15455a8a75db22a3ee471 + md5: eeaf9831f262132fb12ce3921de09651 depends: - __glibc >=2.17,<3.0.a0 - aiohappyeyeballs >=2.3.0 @@ -963,16 +963,16 @@ packages: - yarl >=1.17.0,<2.0 license: MIT AND Apache-2.0 license_family: Apache - size: 912229 - timestamp: 1732780345490 + size: 912186 + timestamp: 1733125914520 - kind: conda name: aiohttp - version: 3.11.8 + version: 3.11.9 build: py312h998013c_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.8-py312h998013c_0.conda - sha256: 991fccd7387b08127a8398cdd499ebb9be7a16a612b024f7f82d0ecbae456b00 - md5: 8caf80b1f8510c2c626831f463fac611 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.9-py312h998013c_0.conda + sha256: 521b7c97a1122c0a6740a3200163e29bc8aa1d7efa273deb6e4c58a47779114b + md5: 0bb2657d1215a89fb586d387ce9c4daa depends: - __osx >=11.0 - aiohappyeyeballs >=2.3.0 @@ -987,16 +987,16 @@ packages: - yarl >=1.17.0,<2.0 license: MIT AND Apache-2.0 license_family: Apache - size: 873606 - timestamp: 1732780440642 + size: 873089 + timestamp: 1733125044394 - kind: conda name: aiohttp - version: 3.11.8 + version: 3.11.9 build: py312hcc812fe_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.8-py312hcc812fe_0.conda - sha256: 04dc698f291a0580101baa4df07cc12ed99f025c4aab23e184cfe12cf692fa12 - md5: dc9d21c22f3a000083437b0e99e99f31 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.9-py312hcc812fe_0.conda + sha256: e358d2c03b4eceb7ad3d8636705e60aa15bdec81305d9f9e1624fb5a03901147 + md5: 06400e4f6428e6c2ea2b59df702b5b39 depends: - aiohappyeyeballs >=2.3.0 - aiosignal >=1.1.2 @@ -1011,8 +1011,8 @@ packages: - yarl >=1.17.0,<2.0 license: MIT AND Apache-2.0 license_family: Apache - size: 900671 - timestamp: 1732780496954 + size: 900828 + timestamp: 1733124971238 - kind: conda name: aiosignal version: 1.3.1 @@ -1193,20 +1193,21 @@ packages: timestamp: 1711269034814 - kind: conda name: asttokens - version: 2.4.1 + version: 3.0.0 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/asttokens-2.4.1-pyhd8ed1ab_0.conda - sha256: 708168f026df19a0344983754d27d1f7b28bb21afc7b97a82f02c4798a3d2111 - md5: 5f25798dcefd8252ce5f9dc494d5f571 + url: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_0.conda + sha256: 92072fde775e62c427d05a76784404f6a2d7ccf232aa05a95a33d86c943614b5 + md5: 454950e9fa3a0c59880de0ac7a6bc8c4 depends: - - python >=3.5 - - six >=1.12.0 + - python >=3.8 + constrains: + - astroid >=2,<4 license: Apache-2.0 license_family: Apache - size: 28922 - timestamp: 1698341257884 + size: 28137 + timestamp: 1733175735190 - kind: conda name: async-lru version: 2.0.4 @@ -1670,12 +1671,12 @@ packages: timestamp: 1731734668760 - kind: conda name: aws-c-s3 - version: 0.7.2 + version: 0.7.3 build: h29aef15_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.2-h29aef15_0.conda - sha256: 387e4df97529d1849a774082b1fed78c7870effc02ed4c2b45961615a0516b64 - md5: fbf4af2c93ae67f175583c9185be4133 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.3-h29aef15_0.conda + sha256: 57aa8b28890efd82c479e902125ea8a37782b163f13ae0856b259ec527a52879 + md5: e09cd76e50ce09ec14c17109da5c6502 depends: - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.0,<0.8.1.0a0 @@ -1687,16 +1688,16 @@ packages: - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 117212 - timestamp: 1732679211893 + size: 117467 + timestamp: 1733098782199 - kind: conda name: aws-c-s3 - version: 0.7.2 + version: 0.7.3 build: h3a84f74_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.2-h3a84f74_0.conda - sha256: c0ae38eb1f878157323afdd002229e9eeb739f622e028447330805c030c50a9f - md5: a5f883ce16928e898856b5bd8d1bee57 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.3-h3a84f74_0.conda + sha256: db17a15e5e01f19700bf9be961e1c4e002ccf8dc4d9caa3a24a0ab54f00f2c2d + md5: 171850b890600458ae6c990e78f1fa23 depends: - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 @@ -1709,16 +1710,16 @@ packages: - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 113549 - timestamp: 1732679091663 + size: 113536 + timestamp: 1733098705479 - kind: conda name: aws-c-s3 - version: 0.7.2 + version: 0.7.3 build: h840aca7_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.2-h840aca7_0.conda - sha256: 30e4bed9d008fb79f5e84ecbea0f21030ad5d60cb5c55a962df90721aa98fc42 - md5: 63100ff62fdff4a6afcea38841036027 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.3-h840aca7_0.conda + sha256: 18972a91f32f6b0edb58eb71cb2f5b56654183fd6ba611b3b0d6cc484017aeff + md5: 893e668d99fa4b31eef9dc5b19c21b9a depends: - __osx >=11.0 - aws-c-auth >=0.8.0,<0.8.1.0a0 @@ -1729,8 +1730,8 @@ packages: - aws-checksums >=0.2.2,<0.2.3.0a0 license: Apache-2.0 license_family: Apache - size: 97042 - timestamp: 1732679268030 + size: 97145 + timestamp: 1733098874599 - kind: conda name: aws-c-sdkutils version: 0.2.1 @@ -1832,13 +1833,13 @@ packages: - kind: conda name: aws-crt-cpp version: 0.29.6 - build: h0e61686_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.6-h0e61686_0.conda - sha256: b821d0125f8fcb589b880bf3a5e0e1667e285b3006ceb19d96e6d92d049ab787 - md5: 651a6500e5fded51bb7572f4eebcfd7b + build: h7939e66_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.6-h7939e66_1.conda + sha256: 3d0b1996d28a2647ced83ed8052ee331df70b2c1a68fb6db0fe4e743a88be54d + md5: 5e573a52a1cd20f81d7fdf1db4f4583a depends: - - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.0,<0.8.1.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 @@ -1846,23 +1847,25 @@ packages: - aws-c-http >=0.9.1,<0.9.2.0a0 - aws-c-io >=0.15.2,<0.15.3.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - - aws-c-s3 >=0.7.2,<0.7.3.0a0 + - aws-c-s3 >=0.7.3,<0.7.4.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 355169 - timestamp: 1732769507038 + size: 283670 + timestamp: 1733150929992 - kind: conda name: aws-crt-cpp version: 0.29.6 - build: h6068a22_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.6-h6068a22_0.conda - sha256: 45b15e8ecad820f9f80bace92cbb29f81b30e0ba31e25b936a13bdb0360a0637 - md5: 7f8ecd32e9afbbf87438367b551c3a8b + build: ha226bf8_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.6-ha226bf8_1.conda + sha256: f645e2a8015d8e71ed785c81a14a202ebce2f5dcca8982cd7ec5f8000f9be5c3 + md5: 81da0b5f65ab08e3919d6eadf08b5776 depends: + - __osx >=11.0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.0,<0.8.1.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 @@ -1870,24 +1873,24 @@ packages: - aws-c-http >=0.9.1,<0.9.2.0a0 - aws-c-io >=0.15.2,<0.15.3.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - - aws-c-s3 >=0.7.2,<0.7.3.0a0 + - aws-c-s3 >=0.7.3,<0.7.4.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - - libgcc >=13 - - libstdcxx >=13 + - libcxx >=18 license: Apache-2.0 license_family: Apache - size: 283440 - timestamp: 1732769529667 + size: 236505 + timestamp: 1733151090562 - kind: conda name: aws-crt-cpp version: 0.29.6 - build: h8bcca62_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.6-h8bcca62_0.conda - sha256: b6d2ff238a712137afd9b46842235b32a04cac580734873bf86876da6e71dd03 - md5: 8e49f5e86a3e39699b24035fa6d1ad40 + build: hdec8b0f_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.6-hdec8b0f_1.conda + sha256: cd09f1d5d854607ce7acafc76c74e864f296d296e60b54054a10f757ecc3d2dd + md5: 40647232fad98f92be8c6050a7e0c2bd depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.0,<0.8.1.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 @@ -1895,13 +1898,14 @@ packages: - aws-c-http >=0.9.1,<0.9.2.0a0 - aws-c-io >=0.15.2,<0.15.3.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - - aws-c-s3 >=0.7.2,<0.7.3.0a0 + - aws-c-s3 >=0.7.3,<0.7.4.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - - libcxx >=18 + - libgcc >=13 + - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 236490 - timestamp: 1732769764315 + size: 354710 + timestamp: 1733150818238 - kind: conda name: aws-sdk-cpp version: 1.11.449 @@ -3344,13 +3348,13 @@ packages: timestamp: 1732831049776 - kind: conda name: huggingface_hub - version: 0.26.2 - build: pyh0610db2_0 + version: 0.26.3 + build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.2-pyh0610db2_0.conda - sha256: fad5da1b0a0899dfb4d59bb4a4e4b58bade677ad44332beb608020e55f1bea53 - md5: a7344f1612e61d1e1dcc90c758f71f8f + url: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.3-pyhd8ed1ab_0.conda + sha256: 66ffed967463e4a25f1dc4ca699d85dd55d1d150fed214c6380f11a981e0acb7 + md5: 997fc223fbc616c262f2a32a22d433a4 depends: - filelock - fsspec >=2023.5.0 @@ -3362,9 +3366,8 @@ packages: - typing-extensions >=3.7.4.3 - typing_extensions >=3.7.4.3 license: Apache-2.0 - license_family: APACHE - size: 274216 - timestamp: 1730211995421 + size: 274858 + timestamp: 1733170279930 - kind: conda name: hyperframe version: 6.0.1 @@ -4204,6 +4207,7 @@ packages: - parquet-cpp <0.0a0 - apache-arrow-proc =*=cpu license: Apache-2.0 + license_family: APACHE size: 5475725 timestamp: 1732947802614 - kind: conda @@ -4246,6 +4250,7 @@ packages: - arrow-cpp <0.0a0 - parquet-cpp <0.0a0 license: Apache-2.0 + license_family: APACHE size: 8026783 timestamp: 1732950110265 - kind: conda @@ -4324,6 +4329,7 @@ packages: - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 + license_family: APACHE size: 577510 timestamp: 1732950190684 - kind: conda @@ -4340,6 +4346,7 @@ packages: - libarrow 18.1.0 h654e1bb_2_cpu - libcxx >=18 license: Apache-2.0 + license_family: APACHE size: 483362 timestamp: 1732948000606 - kind: conda @@ -4378,6 +4385,7 @@ packages: - libparquet 18.1.0 h23a96eb_2_cpu - libstdcxx >=13 license: Apache-2.0 + license_family: APACHE size: 559143 timestamp: 1732950272727 - kind: conda @@ -4396,6 +4404,7 @@ packages: - libcxx >=18 - libparquet 18.1.0 h5168bdf_2_cpu license: Apache-2.0 + license_family: APACHE size: 489769 timestamp: 1732949732423 - kind: conda @@ -4417,6 +4426,7 @@ packages: - libprotobuf >=5.28.2,<5.28.3.0a0 - libstdcxx >=13 license: Apache-2.0 + license_family: APACHE size: 515352 timestamp: 1732950311471 - kind: conda @@ -4461,6 +4471,7 @@ packages: - libcxx >=18 - libprotobuf >=5.28.2,<5.28.3.0a0 license: Apache-2.0 + license_family: APACHE size: 451127 timestamp: 1732950194322 - kind: conda @@ -5830,6 +5841,7 @@ packages: - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 + license_family: APACHE size: 1115906 timestamp: 1732950250848 - kind: conda @@ -5848,6 +5860,7 @@ packages: - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 + license_family: APACHE size: 872333 timestamp: 1732949558028 - kind: conda @@ -6846,76 +6859,76 @@ packages: timestamp: 1713250613726 - kind: conda name: max - version: 24.6.0.dev2024120105 + version: 24.6.0.dev2024120221 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120105-release.conda - sha256: 7b3ef233f35d3c9d2b2a756b85339f3271f2cac8d4433712fce9dbdc83a56ce3 - md5: 066b95823e3c9cd160c5cbe3a530e658 + url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120221-release.conda + sha256: 71b02d0afbd2dfa49633f0dff4cdc1a94392abc344668636b90656060117384e + md5: fa3d1a799da8e216b9448fd2246655f3 depends: - - max-core ==24.6.0.dev2024120105 release - - max-python >=24.6.0.dev2024120105,<25.0a0 - - mojo-jupyter ==24.6.0.dev2024120105 release - - mblack ==24.6.0.dev2024120105 release + - max-core ==24.6.0.dev2024120221 release + - max-python >=24.6.0.dev2024120221,<25.0a0 + - mojo-jupyter ==24.6.0.dev2024120221 release + - mblack ==24.6.0.dev2024120221 release license: LicenseRef-Modular-Proprietary - size: 9922 - timestamp: 1733030528874 + size: 9927 + timestamp: 1733176232456 - kind: conda name: max-core - version: 24.6.0.dev2024120105 + version: 24.6.0.dev2024120221 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120105-release.conda - sha256: cc9c4b332e39efa40ead3e55c67438b82b4f0f74cb64702636168d92da5f986c - md5: c4876829ff25302ed7aaac7e800f9faa + url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120221-release.conda + sha256: e7362f447478b8f8a4ce9f6e4a38c7b519c4fdd81cbcb6cd0bfded3cfb3399eb + md5: 646d3f60af8b7d77a29ea74c80b73abe depends: - - mblack ==24.6.0.dev2024120105 release + - mblack ==24.6.0.dev2024120221 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 254727332 - timestamp: 1733030528873 + size: 254782923 + timestamp: 1733176189897 - kind: conda name: max-core - version: 24.6.0.dev2024120105 + version: 24.6.0.dev2024120221 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120105-release.conda - sha256: d733b0b57191ae17abe55bd5c3cf7fe02e77038c4cf9eb98b3a539d283698f98 - md5: 2f1eb5e1b2e077b3877c4ca7f5670a6c + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120221-release.conda + sha256: 38a17e51fc0bc077d19e9829a0d901dfef581c13a4b3b5238fbc509c5e495119 + md5: 762d1a967090c478c15e8182ee077eac depends: - - mblack ==24.6.0.dev2024120105 release + - mblack ==24.6.0.dev2024120221 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 258393349 - timestamp: 1733030529884 + size: 258409140 + timestamp: 1733176232454 - kind: conda name: max-core - version: 24.6.0.dev2024120105 + version: 24.6.0.dev2024120221 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120105-release.conda - sha256: 625afbae07f7ef017c037f8b81c2de82d344ca1d14becad14d4d804326046204 - md5: 17df9e0840ae14e6f3c9a840e8237f8a + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120221-release.conda + sha256: 81d2491a6299f97cb6f9847169f71eb344e5deec11755819e4124b054ec69c4c + md5: 0b95fc4831992260253ee5e3c83f3382 depends: - - mblack ==24.6.0.dev2024120105 release + - mblack ==24.6.0.dev2024120221 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 220268454 - timestamp: 1733030465063 + size: 220306895 + timestamp: 1733176012956 - kind: conda name: max-python - version: 24.6.0.dev2024120105 + version: 24.6.0.dev2024120221 build: 3.12release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120105-3.12release.conda - sha256: 9f9139e62349d97472d5a7b87575de7669ce099e1f2d4090c22b1d6a7a9b246e - md5: c933f4a6c589fad077ce030b33236724 + url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120221-3.12release.conda + sha256: eff8e0d757d2ff4398c11357f2f6018cd32bfe01b7f7b9a40eb6848b7150eee5 + md5: d11c807bdfab1a9ec1d8d60ae4966f6f depends: - - max-core ==24.6.0.dev2024120105 release + - max-core ==24.6.0.dev2024120221 release - python 3.12.* - pillow - fastapi @@ -6937,18 +6950,18 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 128563671 - timestamp: 1733030528881 + size: 128533716 + timestamp: 1733176189912 - kind: conda name: max-python - version: 24.6.0.dev2024120105 + version: 24.6.0.dev2024120221 build: 3.12release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120105-3.12release.conda - sha256: a5e03fa2abd8453c813a13225e84df4a9781c6b25a05c1b976cfe6f4671d4bbd - md5: 13bbc313863bd5c560a9768165d63be1 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120221-3.12release.conda + sha256: c9314e3c7be3e6913345141b05beb7868e6a35dad199472c64a0b9137bc89aa2 + md5: f7e5f66871aa60909394a02ab2344f64 depends: - - max-core ==24.6.0.dev2024120105 release + - max-core ==24.6.0.dev2024120221 release - python 3.12.* - pillow - fastapi @@ -6970,18 +6983,18 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 132240712 - timestamp: 1733030529893 + size: 132227870 + timestamp: 1733176232462 - kind: conda name: max-python - version: 24.6.0.dev2024120105 + version: 24.6.0.dev2024120221 build: 3.12release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120105-3.12release.conda - sha256: 47b8fb6184f15795d78d408ce2e7f702208af3863adbea9c8a0b1011ac551411 - md5: 5c145a15e58ef93719afa6cc2b472ccf + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120221-3.12release.conda + sha256: 781843479c4ff561f1963df894c76fbc4e623e16dba02ca90a9facdfa2f5d20a + md5: 10517bdbac80736a742077a261e535b6 depends: - - max-core ==24.6.0.dev2024120105 release + - max-core ==24.6.0.dev2024120221 release - python 3.12.* - pillow - fastapi @@ -7003,17 +7016,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 119119907 - timestamp: 1733030465067 + size: 119173532 + timestamp: 1733176012959 - kind: conda name: mblack - version: 24.6.0.dev2024120105 + version: 24.6.0.dev2024120221 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120105-release.conda - sha256: 8b4fdcc9c031e2b16fd48c64767919c6c82b0347d02a606770589b58e659721b - md5: af6b9bb6fed204e9e4ed73c334d24647 + url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120221-release.conda + sha256: 5d3b01c8332faf96e9d95f5ea2bf7ac1f528279326717103d9e3cf0a53a0dd58 + md5: a4660d8dd8037b8c090b028271d18e14 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -7023,8 +7036,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130609 - timestamp: 1733030528877 + size: 130643 + timestamp: 1733176232459 - kind: conda name: mdurl version: 0.1.2 @@ -7057,21 +7070,21 @@ packages: timestamp: 1698947249750 - kind: conda name: mojo-jupyter - version: 24.6.0.dev2024120105 + version: 24.6.0.dev2024120221 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120105-release.conda - sha256: 131b9545efd1c967f7fc0ee3b23c5000fc5481ab5ce1a3117624f70b9db7e9e3 - md5: 2c6472e319310564fa809d3e06b25ba5 + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120221-release.conda + sha256: 93bb896b09ee00dd8aaeb842dc73939e8c990bb14ba71e8c952fca318c235b0a + md5: 9f4dbbf9e29a9fc89154906e388c037b depends: - - max-core ==24.6.0.dev2024120105 release + - max-core ==24.6.0.dev2024120221 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22941 - timestamp: 1733030528878 + size: 22931 + timestamp: 1733176232460 - kind: conda name: multidict version: 6.1.0 @@ -8655,13 +8668,12 @@ packages: timestamp: 1728714267954 - kind: conda name: pyobjc-core - version: 10.3.1 - build: py312hd24fc31_1 - build_number: 1 + version: 10.3.2 + build: py312hb9d441b_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-core-10.3.1-py312hd24fc31_1.conda - sha256: e3311a9b7e843e3fb2b814bf0a0a901db8d2c21d72bacf246a95867c2628ca25 - md5: 1533727287f098e669d75f9c54dc1601 + url: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-core-10.3.2-py312hb9d441b_0.conda + sha256: 6c110c64e7cc0a28416414446698ab310a9261525a6aa630b2c4f50891867719 + md5: 663e894deb5a24c8931fd8224f19a1fd depends: - __osx >=11.0 - libffi >=3.4,<4.0a0 @@ -8671,28 +8683,26 @@ packages: - setuptools license: MIT license_family: MIT - size: 490928 - timestamp: 1725739760349 + size: 484571 + timestamp: 1732987487536 - kind: conda name: pyobjc-framework-cocoa - version: 10.3.1 - build: py312hd24fc31_1 - build_number: 1 + version: 10.3.2 + build: py312hb9d441b_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-framework-cocoa-10.3.1-py312hd24fc31_1.conda - sha256: 799aa68d1d9abe00f3574d7763e91f86007a938ab8f5dff63ae3e1f22d0d634d - md5: b1c63f8abafc9530a9259e0d6a70e984 + url: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-framework-cocoa-10.3.2-py312hb9d441b_0.conda + sha256: 5a78f97cb7414cb4b78b777dcfcffb08da42ced866e8ef6455a57c2230908bfe + md5: 41e4f28d545565e48f1f819cf8dac5c7 depends: - __osx >=11.0 - libffi >=3.4,<4.0a0 - - pyobjc-core 10.3.1.* + - pyobjc-core 10.3.2.* - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 license: MIT - license_family: MIT - size: 381079 - timestamp: 1725875188776 + size: 380414 + timestamp: 1733168930888 - kind: conda name: pysocks version: 1.7.1 @@ -8860,20 +8870,19 @@ packages: timestamp: 1677079727691 - kind: conda name: python-multipart - version: 0.0.18 - build: pyhff2d567_1 - build_number: 1 + version: 0.0.19 + build: pyhff2d567_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.18-pyhff2d567_1.conda - sha256: 464e546b789b8e881e1dc6b4995a11007d1e7c3ef2a533b9fb970146e85f7af8 - md5: 8057e4cf29236ea2094cc20fe9ef451e + url: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_0.conda + sha256: ff5964cd5eafc118f9d9a15fd31cd88a7ecc756ef83b6095c69b1891a53e2177 + md5: fe524346d3a9aa0aaf353dc39f7d1715 depends: - python >=3.9 license: Apache-2.0 license_family: Apache - size: 27683 - timestamp: 1732988029649 + size: 27780 + timestamp: 1733062326577 - kind: conda name: python-tzdata version: '2024.2' @@ -9881,6 +9890,7 @@ packages: depends: - python >=3.9 license: MIT + license_family: MIT size: 19129 timestamp: 1732988289555 - kind: conda @@ -10060,33 +10070,35 @@ packages: - kind: conda name: typing-extensions version: 4.12.2 - build: hd8ed1ab_0 + build: hd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_0.conda - sha256: d3b9a8ed6da7c9f9553c5fd8a4fca9c3e0ab712fa5f497859f82337d67533b73 - md5: 52d648bd608f5737b123f510bb5514b5 + url: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda + sha256: c8e9c1c467b5f960b627d7adc1c65fece8e929a3de89967e91ef0f726422fd32 + md5: b6a408c64b78ec7b779a3e5c7a902433 depends: - - typing_extensions 4.12.2 pyha770c72_0 + - typing_extensions 4.12.2 pyha770c72_1 license: PSF-2.0 license_family: PSF - size: 10097 - timestamp: 1717802659025 + size: 10075 + timestamp: 1733188758872 - kind: conda name: typing_extensions version: 4.12.2 - build: pyha770c72_0 + build: pyha770c72_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda - sha256: 0fce54f8ec3e59f5ef3bb7641863be4e1bf1279623e5af3d3fa726e8f7628ddb - md5: ebe6952715e1d5eb567eeebf25250fa7 + url: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + sha256: 337be7af5af8b2817f115b3b68870208b30c31d3439bec07bfb2d8f4823e3568 + md5: d17f13df8b65464ca316cbc000a3cb64 depends: - - python >=3.8 + - python >=3.9 license: PSF-2.0 license_family: PSF - size: 39888 - timestamp: 1717802653893 + size: 39637 + timestamp: 1733188758212 - kind: conda name: typing_utils version: 0.1.0 @@ -10352,18 +10364,19 @@ packages: - kind: conda name: websocket-client version: 1.8.0 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.8.0-pyhd8ed1ab_0.conda - sha256: 44a5e3b97feef24cd719f7851cca9af9799dc9c17d3e0298d5856baab2d682f5 - md5: f372c576b8774922da83cda2b12f9d29 + url: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.8.0-pyhd8ed1ab_1.conda + sha256: 1dd84764424ffc82030c19ad70607e6f9e3b9cb8e633970766d697185652053e + md5: 84f8f77f0a9c6ef401ee96611745da8f depends: - - python >=3.8 + - python >=3.9 license: Apache-2.0 license_family: APACHE - size: 47066 - timestamp: 1713923494501 + size: 46718 + timestamp: 1733157432924 - kind: conda name: websockets version: '14.1' @@ -10418,18 +10431,19 @@ packages: - kind: conda name: wheel version: 0.45.1 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/wheel-0.45.1-pyhd8ed1ab_0.conda - sha256: 24f6851a336a50c53d6b50b142c1654872494a62528d57c3ff40240cbd8b13be - md5: bdb2f437ce62fd2f1fef9119a37a12d9 + url: https://conda.anaconda.org/conda-forge/noarch/wheel-0.45.1-pyhd8ed1ab_1.conda + sha256: 1b34021e815ff89a4d902d879c3bd2040bc1bd6169b32e9427497fa05c55f1ce + md5: 75cb7132eb58d97896e173ef12ac9986 depends: - - python >=3.8 + - python >=3.9 license: MIT license_family: MIT - size: 62998 - timestamp: 1732339880578 + size: 62931 + timestamp: 1733130309598 - kind: conda name: wrapt version: 1.17.0 diff --git a/examples/operators/magic.lock b/examples/operators/magic.lock index febf0ced33..326d51789b 100644 --- a/examples/operators/magic.lock +++ b/examples/operators/magic.lock @@ -8,8 +8,8 @@ environments: linux-64: - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.8-py312h178313f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.9-py312h178313f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda @@ -23,10 +23,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.1-hab05fe4_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.2-hdeadb07_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h7bd072d_8.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.2-h3a84f74_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.3-h3a84f74_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.1-hf42f96a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-hf42f96a_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.6-h0e61686_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.6-hdec8b0f_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.449-h5558e3c_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.10.0-h113e628_0.conda @@ -65,7 +65,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/httptools-0.6.4-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.2-pyh0610db2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-7.0.2-pyha770c72_0.conda @@ -131,12 +131,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.9.4-hcb278e6_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120105-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120105-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120105-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120221-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120221-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120221-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120221-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120221-release.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/multiprocess-0.70.16-py312h66e93f0_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda @@ -178,7 +178,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.18-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python-xxhash-3.5.0-py312h66e93f0_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda @@ -208,8 +208,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.14.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.14.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.14.0-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_0.conda @@ -230,8 +230,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda linux-aarch64: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.8-py312hcc812fe_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.9-py312hcc812fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda @@ -245,10 +245,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.1-hf4e072c_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.2-h10eb1bc_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h28a5e6a_8.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.2-h29aef15_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.3-h29aef15_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.1-h4c7db1d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h4c7db1d_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.6-h6068a22_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.6-h7939e66_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.449-h7085e57_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-core-cpp-1.14.0-h1887c18_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-identity-cpp-1.10.0-h47b0b28_0.conda @@ -287,7 +287,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/httptools-0.6.4-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.2-pyh0610db2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_0.conda @@ -354,12 +354,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.9.4-hd600fc2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.2-py312h74ce7d3_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120105-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120105-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120105-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120221-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120221-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120221-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120221-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120221-release.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/multiprocess-0.70.16-py312hb2c0f52_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda @@ -401,7 +401,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.18-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-xxhash-3.5.0-py312h52516f5_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.12-5_cp312.conda @@ -431,8 +431,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.14.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.14.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.14.0-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_0.conda @@ -452,8 +452,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstandard-0.23.0-py312hb698573_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.6-h02f22dd_0.conda osx-arm64: - - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.8-py312h998013c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.9-py312h998013c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda @@ -467,10 +467,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.1-hf483d09_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.2-h39f8ad8_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h68a0d7e_8.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.2-h840aca7_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.3-h840aca7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.1-h5d7ee29_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-h5d7ee29_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.6-h8bcca62_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.6-ha226bf8_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.449-h3b64406_4.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.14.0-hd50102c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.10.0-hc602bab_0.conda @@ -509,7 +509,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/httptools-0.6.4-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.2-pyh0610db2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-7.0.2-pyha770c72_0.conda @@ -567,12 +567,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.9.4-hb7217d7_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312ha0ccf2a_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120105-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120105-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120105-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120221-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120221-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120221-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120221-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120221-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.16-py312h024a12e_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda @@ -614,7 +614,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.18-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-xxhash-3.5.0-py312h024a12e_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-5_cp312.conda @@ -643,8 +643,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.14.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.14.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.14.0-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_0.conda @@ -712,27 +712,27 @@ packages: timestamp: 1650670790230 - kind: conda name: aiohappyeyeballs - version: 2.4.3 + version: 2.4.4 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.3-pyhd8ed1ab_0.conda - sha256: cfa5bed6ad8d00c2bc2c6ccf115e91ef1a9981b73c68537b247f1a964a841cac - md5: ec763b0a58960558ca0ad7255a51a237 + url: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_0.conda + sha256: 4282838f468f75f0c1746cbc6cdd3365b9f6d449bf5af8a74b234e396d847bf0 + md5: 8d6f8a679aa0272ba8d6092ce4824870 depends: - - python >=3.8.0 + - python >=3.9 license: PSF-2.0 license_family: PSF - size: 19271 - timestamp: 1727779893392 + size: 19310 + timestamp: 1733135584059 - kind: conda name: aiohttp - version: 3.11.8 + version: 3.11.9 build: py312h178313f_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.8-py312h178313f_0.conda - sha256: 5a51cfa8c17a1c545f07c8a9bae637b233c803f92f922ce3badb7a81f6e7eba8 - md5: 63eb2bd555d446218c7bbdec2dd746c5 + url: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.9-py312h178313f_0.conda + sha256: 875a8ad0da035b33ba8037c40a2ffc0412b9545bc3d15455a8a75db22a3ee471 + md5: eeaf9831f262132fb12ce3921de09651 depends: - __glibc >=2.17,<3.0.a0 - aiohappyeyeballs >=2.3.0 @@ -747,16 +747,16 @@ packages: - yarl >=1.17.0,<2.0 license: MIT AND Apache-2.0 license_family: Apache - size: 912229 - timestamp: 1732780345490 + size: 912186 + timestamp: 1733125914520 - kind: conda name: aiohttp - version: 3.11.8 + version: 3.11.9 build: py312h998013c_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.8-py312h998013c_0.conda - sha256: 991fccd7387b08127a8398cdd499ebb9be7a16a612b024f7f82d0ecbae456b00 - md5: 8caf80b1f8510c2c626831f463fac611 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.9-py312h998013c_0.conda + sha256: 521b7c97a1122c0a6740a3200163e29bc8aa1d7efa273deb6e4c58a47779114b + md5: 0bb2657d1215a89fb586d387ce9c4daa depends: - __osx >=11.0 - aiohappyeyeballs >=2.3.0 @@ -771,16 +771,16 @@ packages: - yarl >=1.17.0,<2.0 license: MIT AND Apache-2.0 license_family: Apache - size: 873606 - timestamp: 1732780440642 + size: 873089 + timestamp: 1733125044394 - kind: conda name: aiohttp - version: 3.11.8 + version: 3.11.9 build: py312hcc812fe_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.8-py312hcc812fe_0.conda - sha256: 04dc698f291a0580101baa4df07cc12ed99f025c4aab23e184cfe12cf692fa12 - md5: dc9d21c22f3a000083437b0e99e99f31 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.9-py312hcc812fe_0.conda + sha256: e358d2c03b4eceb7ad3d8636705e60aa15bdec81305d9f9e1624fb5a03901147 + md5: 06400e4f6428e6c2ea2b59df702b5b39 depends: - aiohappyeyeballs >=2.3.0 - aiosignal >=1.1.2 @@ -795,8 +795,8 @@ packages: - yarl >=1.17.0,<2.0 license: MIT AND Apache-2.0 license_family: Apache - size: 900671 - timestamp: 1732780496954 + size: 900828 + timestamp: 1733124971238 - kind: conda name: aiosignal version: 1.3.1 @@ -1314,12 +1314,12 @@ packages: timestamp: 1731734668760 - kind: conda name: aws-c-s3 - version: 0.7.2 + version: 0.7.3 build: h29aef15_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.2-h29aef15_0.conda - sha256: 387e4df97529d1849a774082b1fed78c7870effc02ed4c2b45961615a0516b64 - md5: fbf4af2c93ae67f175583c9185be4133 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.3-h29aef15_0.conda + sha256: 57aa8b28890efd82c479e902125ea8a37782b163f13ae0856b259ec527a52879 + md5: e09cd76e50ce09ec14c17109da5c6502 depends: - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.0,<0.8.1.0a0 @@ -1331,16 +1331,16 @@ packages: - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 117212 - timestamp: 1732679211893 + size: 117467 + timestamp: 1733098782199 - kind: conda name: aws-c-s3 - version: 0.7.2 + version: 0.7.3 build: h3a84f74_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.2-h3a84f74_0.conda - sha256: c0ae38eb1f878157323afdd002229e9eeb739f622e028447330805c030c50a9f - md5: a5f883ce16928e898856b5bd8d1bee57 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.3-h3a84f74_0.conda + sha256: db17a15e5e01f19700bf9be961e1c4e002ccf8dc4d9caa3a24a0ab54f00f2c2d + md5: 171850b890600458ae6c990e78f1fa23 depends: - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 @@ -1353,16 +1353,16 @@ packages: - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 113549 - timestamp: 1732679091663 + size: 113536 + timestamp: 1733098705479 - kind: conda name: aws-c-s3 - version: 0.7.2 + version: 0.7.3 build: h840aca7_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.2-h840aca7_0.conda - sha256: 30e4bed9d008fb79f5e84ecbea0f21030ad5d60cb5c55a962df90721aa98fc42 - md5: 63100ff62fdff4a6afcea38841036027 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.3-h840aca7_0.conda + sha256: 18972a91f32f6b0edb58eb71cb2f5b56654183fd6ba611b3b0d6cc484017aeff + md5: 893e668d99fa4b31eef9dc5b19c21b9a depends: - __osx >=11.0 - aws-c-auth >=0.8.0,<0.8.1.0a0 @@ -1373,8 +1373,8 @@ packages: - aws-checksums >=0.2.2,<0.2.3.0a0 license: Apache-2.0 license_family: Apache - size: 97042 - timestamp: 1732679268030 + size: 97145 + timestamp: 1733098874599 - kind: conda name: aws-c-sdkutils version: 0.2.1 @@ -1476,13 +1476,13 @@ packages: - kind: conda name: aws-crt-cpp version: 0.29.6 - build: h0e61686_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.6-h0e61686_0.conda - sha256: b821d0125f8fcb589b880bf3a5e0e1667e285b3006ceb19d96e6d92d049ab787 - md5: 651a6500e5fded51bb7572f4eebcfd7b + build: h7939e66_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.6-h7939e66_1.conda + sha256: 3d0b1996d28a2647ced83ed8052ee331df70b2c1a68fb6db0fe4e743a88be54d + md5: 5e573a52a1cd20f81d7fdf1db4f4583a depends: - - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.0,<0.8.1.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 @@ -1490,23 +1490,25 @@ packages: - aws-c-http >=0.9.1,<0.9.2.0a0 - aws-c-io >=0.15.2,<0.15.3.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - - aws-c-s3 >=0.7.2,<0.7.3.0a0 + - aws-c-s3 >=0.7.3,<0.7.4.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 355169 - timestamp: 1732769507038 + size: 283670 + timestamp: 1733150929992 - kind: conda name: aws-crt-cpp version: 0.29.6 - build: h6068a22_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.6-h6068a22_0.conda - sha256: 45b15e8ecad820f9f80bace92cbb29f81b30e0ba31e25b936a13bdb0360a0637 - md5: 7f8ecd32e9afbbf87438367b551c3a8b + build: ha226bf8_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.6-ha226bf8_1.conda + sha256: f645e2a8015d8e71ed785c81a14a202ebce2f5dcca8982cd7ec5f8000f9be5c3 + md5: 81da0b5f65ab08e3919d6eadf08b5776 depends: + - __osx >=11.0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.0,<0.8.1.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 @@ -1514,24 +1516,24 @@ packages: - aws-c-http >=0.9.1,<0.9.2.0a0 - aws-c-io >=0.15.2,<0.15.3.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - - aws-c-s3 >=0.7.2,<0.7.3.0a0 + - aws-c-s3 >=0.7.3,<0.7.4.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - - libgcc >=13 - - libstdcxx >=13 + - libcxx >=18 license: Apache-2.0 license_family: Apache - size: 283440 - timestamp: 1732769529667 + size: 236505 + timestamp: 1733151090562 - kind: conda name: aws-crt-cpp version: 0.29.6 - build: h8bcca62_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.6-h8bcca62_0.conda - sha256: b6d2ff238a712137afd9b46842235b32a04cac580734873bf86876da6e71dd03 - md5: 8e49f5e86a3e39699b24035fa6d1ad40 + build: hdec8b0f_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.6-hdec8b0f_1.conda + sha256: cd09f1d5d854607ce7acafc76c74e864f296d296e60b54054a10f757ecc3d2dd + md5: 40647232fad98f92be8c6050a7e0c2bd depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.0,<0.8.1.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 @@ -1539,13 +1541,14 @@ packages: - aws-c-http >=0.9.1,<0.9.2.0a0 - aws-c-io >=0.15.2,<0.15.3.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - - aws-c-s3 >=0.7.2,<0.7.3.0a0 + - aws-c-s3 >=0.7.3,<0.7.4.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - - libcxx >=18 + - libgcc >=13 + - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 236490 - timestamp: 1732769764315 + size: 354710 + timestamp: 1733150818238 - kind: conda name: aws-sdk-cpp version: 1.11.449 @@ -2762,13 +2765,13 @@ packages: timestamp: 1732831049776 - kind: conda name: huggingface_hub - version: 0.26.2 - build: pyh0610db2_0 + version: 0.26.3 + build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.2-pyh0610db2_0.conda - sha256: fad5da1b0a0899dfb4d59bb4a4e4b58bade677ad44332beb608020e55f1bea53 - md5: a7344f1612e61d1e1dcc90c758f71f8f + url: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.3-pyhd8ed1ab_0.conda + sha256: 66ffed967463e4a25f1dc4ca699d85dd55d1d150fed214c6380f11a981e0acb7 + md5: 997fc223fbc616c262f2a32a22d433a4 depends: - filelock - fsspec >=2023.5.0 @@ -2780,9 +2783,8 @@ packages: - typing-extensions >=3.7.4.3 - typing_extensions >=3.7.4.3 license: Apache-2.0 - license_family: APACHE - size: 274216 - timestamp: 1730211995421 + size: 274858 + timestamp: 1733170279930 - kind: conda name: hyperframe version: 6.0.1 @@ -3202,6 +3204,7 @@ packages: - parquet-cpp <0.0a0 - apache-arrow-proc =*=cpu license: Apache-2.0 + license_family: APACHE size: 5475725 timestamp: 1732947802614 - kind: conda @@ -3244,6 +3247,7 @@ packages: - arrow-cpp <0.0a0 - parquet-cpp <0.0a0 license: Apache-2.0 + license_family: APACHE size: 8026783 timestamp: 1732950110265 - kind: conda @@ -3322,6 +3326,7 @@ packages: - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 + license_family: APACHE size: 577510 timestamp: 1732950190684 - kind: conda @@ -3338,6 +3343,7 @@ packages: - libarrow 18.1.0 h654e1bb_2_cpu - libcxx >=18 license: Apache-2.0 + license_family: APACHE size: 483362 timestamp: 1732948000606 - kind: conda @@ -3376,6 +3382,7 @@ packages: - libparquet 18.1.0 h23a96eb_2_cpu - libstdcxx >=13 license: Apache-2.0 + license_family: APACHE size: 559143 timestamp: 1732950272727 - kind: conda @@ -3394,6 +3401,7 @@ packages: - libcxx >=18 - libparquet 18.1.0 h5168bdf_2_cpu license: Apache-2.0 + license_family: APACHE size: 489769 timestamp: 1732949732423 - kind: conda @@ -3415,6 +3423,7 @@ packages: - libprotobuf >=5.28.2,<5.28.3.0a0 - libstdcxx >=13 license: Apache-2.0 + license_family: APACHE size: 515352 timestamp: 1732950311471 - kind: conda @@ -3459,6 +3468,7 @@ packages: - libcxx >=18 - libprotobuf >=5.28.2,<5.28.3.0a0 license: Apache-2.0 + license_family: APACHE size: 451127 timestamp: 1732950194322 - kind: conda @@ -4828,6 +4838,7 @@ packages: - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 + license_family: APACHE size: 1115906 timestamp: 1732950250848 - kind: conda @@ -4846,6 +4857,7 @@ packages: - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 + license_family: APACHE size: 872333 timestamp: 1732949558028 - kind: conda @@ -5828,76 +5840,76 @@ packages: timestamp: 1729351534830 - kind: conda name: max - version: 24.6.0.dev2024120105 + version: 24.6.0.dev2024120221 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120105-release.conda - sha256: 7b3ef233f35d3c9d2b2a756b85339f3271f2cac8d4433712fce9dbdc83a56ce3 - md5: 066b95823e3c9cd160c5cbe3a530e658 - depends: - - max-core ==24.6.0.dev2024120105 release - - max-python >=24.6.0.dev2024120105,<25.0a0 - - mojo-jupyter ==24.6.0.dev2024120105 release - - mblack ==24.6.0.dev2024120105 release + url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120221-release.conda + sha256: 71b02d0afbd2dfa49633f0dff4cdc1a94392abc344668636b90656060117384e + md5: fa3d1a799da8e216b9448fd2246655f3 + depends: + - max-core ==24.6.0.dev2024120221 release + - max-python >=24.6.0.dev2024120221,<25.0a0 + - mojo-jupyter ==24.6.0.dev2024120221 release + - mblack ==24.6.0.dev2024120221 release license: LicenseRef-Modular-Proprietary - size: 9922 - timestamp: 1733030528874 + size: 9927 + timestamp: 1733176232456 - kind: conda name: max-core - version: 24.6.0.dev2024120105 + version: 24.6.0.dev2024120221 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120105-release.conda - sha256: cc9c4b332e39efa40ead3e55c67438b82b4f0f74cb64702636168d92da5f986c - md5: c4876829ff25302ed7aaac7e800f9faa + url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120221-release.conda + sha256: e7362f447478b8f8a4ce9f6e4a38c7b519c4fdd81cbcb6cd0bfded3cfb3399eb + md5: 646d3f60af8b7d77a29ea74c80b73abe depends: - - mblack ==24.6.0.dev2024120105 release + - mblack ==24.6.0.dev2024120221 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 254727332 - timestamp: 1733030528873 + size: 254782923 + timestamp: 1733176189897 - kind: conda name: max-core - version: 24.6.0.dev2024120105 + version: 24.6.0.dev2024120221 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120105-release.conda - sha256: d733b0b57191ae17abe55bd5c3cf7fe02e77038c4cf9eb98b3a539d283698f98 - md5: 2f1eb5e1b2e077b3877c4ca7f5670a6c + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120221-release.conda + sha256: 38a17e51fc0bc077d19e9829a0d901dfef581c13a4b3b5238fbc509c5e495119 + md5: 762d1a967090c478c15e8182ee077eac depends: - - mblack ==24.6.0.dev2024120105 release + - mblack ==24.6.0.dev2024120221 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 258393349 - timestamp: 1733030529884 + size: 258409140 + timestamp: 1733176232454 - kind: conda name: max-core - version: 24.6.0.dev2024120105 + version: 24.6.0.dev2024120221 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120105-release.conda - sha256: 625afbae07f7ef017c037f8b81c2de82d344ca1d14becad14d4d804326046204 - md5: 17df9e0840ae14e6f3c9a840e8237f8a + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120221-release.conda + sha256: 81d2491a6299f97cb6f9847169f71eb344e5deec11755819e4124b054ec69c4c + md5: 0b95fc4831992260253ee5e3c83f3382 depends: - - mblack ==24.6.0.dev2024120105 release + - mblack ==24.6.0.dev2024120221 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 220268454 - timestamp: 1733030465063 + size: 220306895 + timestamp: 1733176012956 - kind: conda name: max-python - version: 24.6.0.dev2024120105 + version: 24.6.0.dev2024120221 build: 3.12release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120105-3.12release.conda - sha256: 9f9139e62349d97472d5a7b87575de7669ce099e1f2d4090c22b1d6a7a9b246e - md5: c933f4a6c589fad077ce030b33236724 + url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120221-3.12release.conda + sha256: eff8e0d757d2ff4398c11357f2f6018cd32bfe01b7f7b9a40eb6848b7150eee5 + md5: d11c807bdfab1a9ec1d8d60ae4966f6f depends: - - max-core ==24.6.0.dev2024120105 release + - max-core ==24.6.0.dev2024120221 release - python 3.12.* - pillow - fastapi @@ -5919,18 +5931,18 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 128563671 - timestamp: 1733030528881 + size: 128533716 + timestamp: 1733176189912 - kind: conda name: max-python - version: 24.6.0.dev2024120105 + version: 24.6.0.dev2024120221 build: 3.12release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120105-3.12release.conda - sha256: a5e03fa2abd8453c813a13225e84df4a9781c6b25a05c1b976cfe6f4671d4bbd - md5: 13bbc313863bd5c560a9768165d63be1 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120221-3.12release.conda + sha256: c9314e3c7be3e6913345141b05beb7868e6a35dad199472c64a0b9137bc89aa2 + md5: f7e5f66871aa60909394a02ab2344f64 depends: - - max-core ==24.6.0.dev2024120105 release + - max-core ==24.6.0.dev2024120221 release - python 3.12.* - pillow - fastapi @@ -5952,18 +5964,18 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 132240712 - timestamp: 1733030529893 + size: 132227870 + timestamp: 1733176232462 - kind: conda name: max-python - version: 24.6.0.dev2024120105 + version: 24.6.0.dev2024120221 build: 3.12release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120105-3.12release.conda - sha256: 47b8fb6184f15795d78d408ce2e7f702208af3863adbea9c8a0b1011ac551411 - md5: 5c145a15e58ef93719afa6cc2b472ccf + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120221-3.12release.conda + sha256: 781843479c4ff561f1963df894c76fbc4e623e16dba02ca90a9facdfa2f5d20a + md5: 10517bdbac80736a742077a261e535b6 depends: - - max-core ==24.6.0.dev2024120105 release + - max-core ==24.6.0.dev2024120221 release - python 3.12.* - pillow - fastapi @@ -5985,17 +5997,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 119119907 - timestamp: 1733030465067 + size: 119173532 + timestamp: 1733176012959 - kind: conda name: mblack - version: 24.6.0.dev2024120105 + version: 24.6.0.dev2024120221 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120105-release.conda - sha256: 8b4fdcc9c031e2b16fd48c64767919c6c82b0347d02a606770589b58e659721b - md5: af6b9bb6fed204e9e4ed73c334d24647 + url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120221-release.conda + sha256: 5d3b01c8332faf96e9d95f5ea2bf7ac1f528279326717103d9e3cf0a53a0dd58 + md5: a4660d8dd8037b8c090b028271d18e14 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -6005,8 +6017,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130609 - timestamp: 1733030528877 + size: 130643 + timestamp: 1733176232459 - kind: conda name: mdurl version: 0.1.2 @@ -6024,21 +6036,21 @@ packages: timestamp: 1704317789138 - kind: conda name: mojo-jupyter - version: 24.6.0.dev2024120105 + version: 24.6.0.dev2024120221 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120105-release.conda - sha256: 131b9545efd1c967f7fc0ee3b23c5000fc5481ab5ce1a3117624f70b9db7e9e3 - md5: 2c6472e319310564fa809d3e06b25ba5 + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120221-release.conda + sha256: 93bb896b09ee00dd8aaeb842dc73939e8c990bb14ba71e8c952fca318c235b0a + md5: 9f4dbbf9e29a9fc89154906e388c037b depends: - - max-core ==24.6.0.dev2024120105 release + - max-core ==24.6.0.dev2024120221 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22941 - timestamp: 1733030528878 + size: 22931 + timestamp: 1733176232460 - kind: conda name: multidict version: 6.1.0 @@ -7465,20 +7477,19 @@ packages: timestamp: 1677079727691 - kind: conda name: python-multipart - version: 0.0.18 - build: pyhff2d567_1 - build_number: 1 + version: 0.0.19 + build: pyhff2d567_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.18-pyhff2d567_1.conda - sha256: 464e546b789b8e881e1dc6b4995a11007d1e7c3ef2a533b9fb970146e85f7af8 - md5: 8057e4cf29236ea2094cc20fe9ef451e + url: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_0.conda + sha256: ff5964cd5eafc118f9d9a15fd31cd88a7ecc756ef83b6095c69b1891a53e2177 + md5: fe524346d3a9aa0aaf353dc39f7d1715 depends: - python >=3.9 license: Apache-2.0 license_family: Apache - size: 27683 - timestamp: 1732988029649 + size: 27780 + timestamp: 1733062326577 - kind: conda name: python-tzdata version: '2024.2' @@ -8414,33 +8425,35 @@ packages: - kind: conda name: typing-extensions version: 4.12.2 - build: hd8ed1ab_0 + build: hd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_0.conda - sha256: d3b9a8ed6da7c9f9553c5fd8a4fca9c3e0ab712fa5f497859f82337d67533b73 - md5: 52d648bd608f5737b123f510bb5514b5 + url: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda + sha256: c8e9c1c467b5f960b627d7adc1c65fece8e929a3de89967e91ef0f726422fd32 + md5: b6a408c64b78ec7b779a3e5c7a902433 depends: - - typing_extensions 4.12.2 pyha770c72_0 + - typing_extensions 4.12.2 pyha770c72_1 license: PSF-2.0 license_family: PSF - size: 10097 - timestamp: 1717802659025 + size: 10075 + timestamp: 1733188758872 - kind: conda name: typing_extensions version: 4.12.2 - build: pyha770c72_0 + build: pyha770c72_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda - sha256: 0fce54f8ec3e59f5ef3bb7641863be4e1bf1279623e5af3d3fa726e8f7628ddb - md5: ebe6952715e1d5eb567eeebf25250fa7 + url: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + sha256: 337be7af5af8b2817f115b3b68870208b30c31d3439bec07bfb2d8f4823e3568 + md5: d17f13df8b65464ca316cbc000a3cb64 depends: - - python >=3.8 + - python >=3.9 license: PSF-2.0 license_family: PSF - size: 39888 - timestamp: 1717802653893 + size: 39637 + timestamp: 1733188758212 - kind: conda name: tzdata version: 2024b diff --git a/magic.lock b/magic.lock index 49204fdacf..db809b41a1 100644 --- a/magic.lock +++ b/magic.lock @@ -8,8 +8,8 @@ environments: linux-64: - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.8-py312h178313f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.9-py312h178313f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda @@ -23,10 +23,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.1-hab05fe4_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.2-hdeadb07_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h7bd072d_8.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.2-h3a84f74_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.3-h3a84f74_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.1-hf42f96a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-hf42f96a_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.6-h0e61686_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.6-hdec8b0f_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.449-h5558e3c_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.10.0-h113e628_0.conda @@ -65,7 +65,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/httptools-0.6.4-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.2-pyh0610db2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-7.0.2-pyha770c72_0.conda @@ -132,12 +132,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.9.4-hcb278e6_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120105-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120105-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120105-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120221-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120221-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120221-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120221-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120221-release.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/multiprocess-0.70.16-py312h66e93f0_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda @@ -179,7 +179,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.18-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python-xxhash-3.5.0-py312h66e93f0_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda @@ -209,8 +209,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.14.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.14.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.14.0-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_0.conda @@ -231,8 +231,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda linux-aarch64: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.8-py312hcc812fe_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.9-py312hcc812fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda @@ -246,10 +246,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.1-hf4e072c_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.2-h10eb1bc_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h28a5e6a_8.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.2-h29aef15_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.3-h29aef15_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.1-h4c7db1d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h4c7db1d_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.6-h6068a22_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.6-h7939e66_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.449-h7085e57_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-core-cpp-1.14.0-h1887c18_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-identity-cpp-1.10.0-h47b0b28_0.conda @@ -288,7 +288,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/httptools-0.6.4-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.2-pyh0610db2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_0.conda @@ -356,12 +356,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.9.4-hd600fc2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.2-py312h74ce7d3_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120105-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120105-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120105-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120221-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120221-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120221-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120221-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120221-release.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/multiprocess-0.70.16-py312hb2c0f52_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda @@ -403,7 +403,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.18-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-xxhash-3.5.0-py312h52516f5_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.12-5_cp312.conda @@ -433,8 +433,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.14.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.14.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.14.0-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_0.conda @@ -454,8 +454,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstandard-0.23.0-py312hb698573_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.6-h02f22dd_0.conda osx-arm64: - - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.8-py312h998013c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.9-py312h998013c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda @@ -469,10 +469,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.1-hf483d09_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.2-h39f8ad8_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h68a0d7e_8.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.2-h840aca7_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.3-h840aca7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.1-h5d7ee29_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-h5d7ee29_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.6-h8bcca62_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.6-ha226bf8_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.449-h3b64406_4.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.14.0-hd50102c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.10.0-hc602bab_0.conda @@ -511,7 +511,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/httptools-0.6.4-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.2-pyh0610db2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-7.0.2-pyha770c72_0.conda @@ -570,12 +570,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.9.4-hb7217d7_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312ha0ccf2a_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120105-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120105-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120105-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120221-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120221-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120221-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120221-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120221-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.16-py312h024a12e_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda @@ -617,7 +617,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.18-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-xxhash-3.5.0-py312h024a12e_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-5_cp312.conda @@ -646,8 +646,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.14.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.14.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.14.0-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_0.conda @@ -715,27 +715,27 @@ packages: timestamp: 1650670790230 - kind: conda name: aiohappyeyeballs - version: 2.4.3 + version: 2.4.4 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.3-pyhd8ed1ab_0.conda - sha256: cfa5bed6ad8d00c2bc2c6ccf115e91ef1a9981b73c68537b247f1a964a841cac - md5: ec763b0a58960558ca0ad7255a51a237 + url: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_0.conda + sha256: 4282838f468f75f0c1746cbc6cdd3365b9f6d449bf5af8a74b234e396d847bf0 + md5: 8d6f8a679aa0272ba8d6092ce4824870 depends: - - python >=3.8.0 + - python >=3.9 license: PSF-2.0 license_family: PSF - size: 19271 - timestamp: 1727779893392 + size: 19310 + timestamp: 1733135584059 - kind: conda name: aiohttp - version: 3.11.8 + version: 3.11.9 build: py312h178313f_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.8-py312h178313f_0.conda - sha256: 5a51cfa8c17a1c545f07c8a9bae637b233c803f92f922ce3badb7a81f6e7eba8 - md5: 63eb2bd555d446218c7bbdec2dd746c5 + url: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.9-py312h178313f_0.conda + sha256: 875a8ad0da035b33ba8037c40a2ffc0412b9545bc3d15455a8a75db22a3ee471 + md5: eeaf9831f262132fb12ce3921de09651 depends: - __glibc >=2.17,<3.0.a0 - aiohappyeyeballs >=2.3.0 @@ -750,16 +750,16 @@ packages: - yarl >=1.17.0,<2.0 license: MIT AND Apache-2.0 license_family: Apache - size: 912229 - timestamp: 1732780345490 + size: 912186 + timestamp: 1733125914520 - kind: conda name: aiohttp - version: 3.11.8 + version: 3.11.9 build: py312h998013c_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.8-py312h998013c_0.conda - sha256: 991fccd7387b08127a8398cdd499ebb9be7a16a612b024f7f82d0ecbae456b00 - md5: 8caf80b1f8510c2c626831f463fac611 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.9-py312h998013c_0.conda + sha256: 521b7c97a1122c0a6740a3200163e29bc8aa1d7efa273deb6e4c58a47779114b + md5: 0bb2657d1215a89fb586d387ce9c4daa depends: - __osx >=11.0 - aiohappyeyeballs >=2.3.0 @@ -774,16 +774,16 @@ packages: - yarl >=1.17.0,<2.0 license: MIT AND Apache-2.0 license_family: Apache - size: 873606 - timestamp: 1732780440642 + size: 873089 + timestamp: 1733125044394 - kind: conda name: aiohttp - version: 3.11.8 + version: 3.11.9 build: py312hcc812fe_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.8-py312hcc812fe_0.conda - sha256: 04dc698f291a0580101baa4df07cc12ed99f025c4aab23e184cfe12cf692fa12 - md5: dc9d21c22f3a000083437b0e99e99f31 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.9-py312hcc812fe_0.conda + sha256: e358d2c03b4eceb7ad3d8636705e60aa15bdec81305d9f9e1624fb5a03901147 + md5: 06400e4f6428e6c2ea2b59df702b5b39 depends: - aiohappyeyeballs >=2.3.0 - aiosignal >=1.1.2 @@ -798,8 +798,8 @@ packages: - yarl >=1.17.0,<2.0 license: MIT AND Apache-2.0 license_family: Apache - size: 900671 - timestamp: 1732780496954 + size: 900828 + timestamp: 1733124971238 - kind: conda name: aiosignal version: 1.3.1 @@ -1317,12 +1317,12 @@ packages: timestamp: 1731734668760 - kind: conda name: aws-c-s3 - version: 0.7.2 + version: 0.7.3 build: h29aef15_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.2-h29aef15_0.conda - sha256: 387e4df97529d1849a774082b1fed78c7870effc02ed4c2b45961615a0516b64 - md5: fbf4af2c93ae67f175583c9185be4133 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.3-h29aef15_0.conda + sha256: 57aa8b28890efd82c479e902125ea8a37782b163f13ae0856b259ec527a52879 + md5: e09cd76e50ce09ec14c17109da5c6502 depends: - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.0,<0.8.1.0a0 @@ -1334,16 +1334,16 @@ packages: - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 117212 - timestamp: 1732679211893 + size: 117467 + timestamp: 1733098782199 - kind: conda name: aws-c-s3 - version: 0.7.2 + version: 0.7.3 build: h3a84f74_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.2-h3a84f74_0.conda - sha256: c0ae38eb1f878157323afdd002229e9eeb739f622e028447330805c030c50a9f - md5: a5f883ce16928e898856b5bd8d1bee57 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.3-h3a84f74_0.conda + sha256: db17a15e5e01f19700bf9be961e1c4e002ccf8dc4d9caa3a24a0ab54f00f2c2d + md5: 171850b890600458ae6c990e78f1fa23 depends: - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 @@ -1356,16 +1356,16 @@ packages: - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 113549 - timestamp: 1732679091663 + size: 113536 + timestamp: 1733098705479 - kind: conda name: aws-c-s3 - version: 0.7.2 + version: 0.7.3 build: h840aca7_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.2-h840aca7_0.conda - sha256: 30e4bed9d008fb79f5e84ecbea0f21030ad5d60cb5c55a962df90721aa98fc42 - md5: 63100ff62fdff4a6afcea38841036027 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.3-h840aca7_0.conda + sha256: 18972a91f32f6b0edb58eb71cb2f5b56654183fd6ba611b3b0d6cc484017aeff + md5: 893e668d99fa4b31eef9dc5b19c21b9a depends: - __osx >=11.0 - aws-c-auth >=0.8.0,<0.8.1.0a0 @@ -1376,8 +1376,8 @@ packages: - aws-checksums >=0.2.2,<0.2.3.0a0 license: Apache-2.0 license_family: Apache - size: 97042 - timestamp: 1732679268030 + size: 97145 + timestamp: 1733098874599 - kind: conda name: aws-c-sdkutils version: 0.2.1 @@ -1479,13 +1479,13 @@ packages: - kind: conda name: aws-crt-cpp version: 0.29.6 - build: h0e61686_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.6-h0e61686_0.conda - sha256: b821d0125f8fcb589b880bf3a5e0e1667e285b3006ceb19d96e6d92d049ab787 - md5: 651a6500e5fded51bb7572f4eebcfd7b + build: h7939e66_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.6-h7939e66_1.conda + sha256: 3d0b1996d28a2647ced83ed8052ee331df70b2c1a68fb6db0fe4e743a88be54d + md5: 5e573a52a1cd20f81d7fdf1db4f4583a depends: - - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.0,<0.8.1.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 @@ -1493,23 +1493,25 @@ packages: - aws-c-http >=0.9.1,<0.9.2.0a0 - aws-c-io >=0.15.2,<0.15.3.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - - aws-c-s3 >=0.7.2,<0.7.3.0a0 + - aws-c-s3 >=0.7.3,<0.7.4.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 355169 - timestamp: 1732769507038 + size: 283670 + timestamp: 1733150929992 - kind: conda name: aws-crt-cpp version: 0.29.6 - build: h6068a22_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.6-h6068a22_0.conda - sha256: 45b15e8ecad820f9f80bace92cbb29f81b30e0ba31e25b936a13bdb0360a0637 - md5: 7f8ecd32e9afbbf87438367b551c3a8b + build: ha226bf8_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.6-ha226bf8_1.conda + sha256: f645e2a8015d8e71ed785c81a14a202ebce2f5dcca8982cd7ec5f8000f9be5c3 + md5: 81da0b5f65ab08e3919d6eadf08b5776 depends: + - __osx >=11.0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.0,<0.8.1.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 @@ -1517,24 +1519,24 @@ packages: - aws-c-http >=0.9.1,<0.9.2.0a0 - aws-c-io >=0.15.2,<0.15.3.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - - aws-c-s3 >=0.7.2,<0.7.3.0a0 + - aws-c-s3 >=0.7.3,<0.7.4.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - - libgcc >=13 - - libstdcxx >=13 + - libcxx >=18 license: Apache-2.0 license_family: Apache - size: 283440 - timestamp: 1732769529667 + size: 236505 + timestamp: 1733151090562 - kind: conda name: aws-crt-cpp version: 0.29.6 - build: h8bcca62_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.6-h8bcca62_0.conda - sha256: b6d2ff238a712137afd9b46842235b32a04cac580734873bf86876da6e71dd03 - md5: 8e49f5e86a3e39699b24035fa6d1ad40 + build: hdec8b0f_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.6-hdec8b0f_1.conda + sha256: cd09f1d5d854607ce7acafc76c74e864f296d296e60b54054a10f757ecc3d2dd + md5: 40647232fad98f92be8c6050a7e0c2bd depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.0,<0.8.1.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 @@ -1542,13 +1544,14 @@ packages: - aws-c-http >=0.9.1,<0.9.2.0a0 - aws-c-io >=0.15.2,<0.15.3.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - - aws-c-s3 >=0.7.2,<0.7.3.0a0 + - aws-c-s3 >=0.7.3,<0.7.4.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - - libcxx >=18 + - libgcc >=13 + - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 236490 - timestamp: 1732769764315 + size: 354710 + timestamp: 1733150818238 - kind: conda name: aws-sdk-cpp version: 1.11.449 @@ -2765,13 +2768,13 @@ packages: timestamp: 1732831049776 - kind: conda name: huggingface_hub - version: 0.26.2 - build: pyh0610db2_0 + version: 0.26.3 + build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.2-pyh0610db2_0.conda - sha256: fad5da1b0a0899dfb4d59bb4a4e4b58bade677ad44332beb608020e55f1bea53 - md5: a7344f1612e61d1e1dcc90c758f71f8f + url: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.3-pyhd8ed1ab_0.conda + sha256: 66ffed967463e4a25f1dc4ca699d85dd55d1d150fed214c6380f11a981e0acb7 + md5: 997fc223fbc616c262f2a32a22d433a4 depends: - filelock - fsspec >=2023.5.0 @@ -2783,9 +2786,8 @@ packages: - typing-extensions >=3.7.4.3 - typing_extensions >=3.7.4.3 license: Apache-2.0 - license_family: APACHE - size: 274216 - timestamp: 1730211995421 + size: 274858 + timestamp: 1733170279930 - kind: conda name: hyperframe version: 6.0.1 @@ -3205,6 +3207,7 @@ packages: - parquet-cpp <0.0a0 - apache-arrow-proc =*=cpu license: Apache-2.0 + license_family: APACHE size: 5475725 timestamp: 1732947802614 - kind: conda @@ -3247,6 +3250,7 @@ packages: - arrow-cpp <0.0a0 - parquet-cpp <0.0a0 license: Apache-2.0 + license_family: APACHE size: 8026783 timestamp: 1732950110265 - kind: conda @@ -3325,6 +3329,7 @@ packages: - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 + license_family: APACHE size: 577510 timestamp: 1732950190684 - kind: conda @@ -3341,6 +3346,7 @@ packages: - libarrow 18.1.0 h654e1bb_2_cpu - libcxx >=18 license: Apache-2.0 + license_family: APACHE size: 483362 timestamp: 1732948000606 - kind: conda @@ -3379,6 +3385,7 @@ packages: - libparquet 18.1.0 h23a96eb_2_cpu - libstdcxx >=13 license: Apache-2.0 + license_family: APACHE size: 559143 timestamp: 1732950272727 - kind: conda @@ -3397,6 +3404,7 @@ packages: - libcxx >=18 - libparquet 18.1.0 h5168bdf_2_cpu license: Apache-2.0 + license_family: APACHE size: 489769 timestamp: 1732949732423 - kind: conda @@ -3418,6 +3426,7 @@ packages: - libprotobuf >=5.28.2,<5.28.3.0a0 - libstdcxx >=13 license: Apache-2.0 + license_family: APACHE size: 515352 timestamp: 1732950311471 - kind: conda @@ -3462,6 +3471,7 @@ packages: - libcxx >=18 - libprotobuf >=5.28.2,<5.28.3.0a0 license: Apache-2.0 + license_family: APACHE size: 451127 timestamp: 1732950194322 - kind: conda @@ -4831,6 +4841,7 @@ packages: - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 + license_family: APACHE size: 1115906 timestamp: 1732950250848 - kind: conda @@ -4849,6 +4860,7 @@ packages: - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 + license_family: APACHE size: 872333 timestamp: 1732949558028 - kind: conda @@ -5847,76 +5859,76 @@ packages: timestamp: 1729351534830 - kind: conda name: max - version: 24.6.0.dev2024120105 + version: 24.6.0.dev2024120221 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120105-release.conda - sha256: 7b3ef233f35d3c9d2b2a756b85339f3271f2cac8d4433712fce9dbdc83a56ce3 - md5: 066b95823e3c9cd160c5cbe3a530e658 - depends: - - max-core ==24.6.0.dev2024120105 release - - max-python >=24.6.0.dev2024120105,<25.0a0 - - mojo-jupyter ==24.6.0.dev2024120105 release - - mblack ==24.6.0.dev2024120105 release + url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120221-release.conda + sha256: 71b02d0afbd2dfa49633f0dff4cdc1a94392abc344668636b90656060117384e + md5: fa3d1a799da8e216b9448fd2246655f3 + depends: + - max-core ==24.6.0.dev2024120221 release + - max-python >=24.6.0.dev2024120221,<25.0a0 + - mojo-jupyter ==24.6.0.dev2024120221 release + - mblack ==24.6.0.dev2024120221 release license: LicenseRef-Modular-Proprietary - size: 9922 - timestamp: 1733030528874 + size: 9927 + timestamp: 1733176232456 - kind: conda name: max-core - version: 24.6.0.dev2024120105 + version: 24.6.0.dev2024120221 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120105-release.conda - sha256: cc9c4b332e39efa40ead3e55c67438b82b4f0f74cb64702636168d92da5f986c - md5: c4876829ff25302ed7aaac7e800f9faa + url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120221-release.conda + sha256: e7362f447478b8f8a4ce9f6e4a38c7b519c4fdd81cbcb6cd0bfded3cfb3399eb + md5: 646d3f60af8b7d77a29ea74c80b73abe depends: - - mblack ==24.6.0.dev2024120105 release + - mblack ==24.6.0.dev2024120221 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 254727332 - timestamp: 1733030528873 + size: 254782923 + timestamp: 1733176189897 - kind: conda name: max-core - version: 24.6.0.dev2024120105 + version: 24.6.0.dev2024120221 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120105-release.conda - sha256: d733b0b57191ae17abe55bd5c3cf7fe02e77038c4cf9eb98b3a539d283698f98 - md5: 2f1eb5e1b2e077b3877c4ca7f5670a6c + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120221-release.conda + sha256: 38a17e51fc0bc077d19e9829a0d901dfef581c13a4b3b5238fbc509c5e495119 + md5: 762d1a967090c478c15e8182ee077eac depends: - - mblack ==24.6.0.dev2024120105 release + - mblack ==24.6.0.dev2024120221 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 258393349 - timestamp: 1733030529884 + size: 258409140 + timestamp: 1733176232454 - kind: conda name: max-core - version: 24.6.0.dev2024120105 + version: 24.6.0.dev2024120221 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120105-release.conda - sha256: 625afbae07f7ef017c037f8b81c2de82d344ca1d14becad14d4d804326046204 - md5: 17df9e0840ae14e6f3c9a840e8237f8a + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120221-release.conda + sha256: 81d2491a6299f97cb6f9847169f71eb344e5deec11755819e4124b054ec69c4c + md5: 0b95fc4831992260253ee5e3c83f3382 depends: - - mblack ==24.6.0.dev2024120105 release + - mblack ==24.6.0.dev2024120221 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 220268454 - timestamp: 1733030465063 + size: 220306895 + timestamp: 1733176012956 - kind: conda name: max-python - version: 24.6.0.dev2024120105 + version: 24.6.0.dev2024120221 build: 3.12release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120105-3.12release.conda - sha256: 9f9139e62349d97472d5a7b87575de7669ce099e1f2d4090c22b1d6a7a9b246e - md5: c933f4a6c589fad077ce030b33236724 + url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120221-3.12release.conda + sha256: eff8e0d757d2ff4398c11357f2f6018cd32bfe01b7f7b9a40eb6848b7150eee5 + md5: d11c807bdfab1a9ec1d8d60ae4966f6f depends: - - max-core ==24.6.0.dev2024120105 release + - max-core ==24.6.0.dev2024120221 release - python 3.12.* - pillow - fastapi @@ -5938,18 +5950,18 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 128563671 - timestamp: 1733030528881 + size: 128533716 + timestamp: 1733176189912 - kind: conda name: max-python - version: 24.6.0.dev2024120105 + version: 24.6.0.dev2024120221 build: 3.12release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120105-3.12release.conda - sha256: a5e03fa2abd8453c813a13225e84df4a9781c6b25a05c1b976cfe6f4671d4bbd - md5: 13bbc313863bd5c560a9768165d63be1 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120221-3.12release.conda + sha256: c9314e3c7be3e6913345141b05beb7868e6a35dad199472c64a0b9137bc89aa2 + md5: f7e5f66871aa60909394a02ab2344f64 depends: - - max-core ==24.6.0.dev2024120105 release + - max-core ==24.6.0.dev2024120221 release - python 3.12.* - pillow - fastapi @@ -5971,18 +5983,18 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 132240712 - timestamp: 1733030529893 + size: 132227870 + timestamp: 1733176232462 - kind: conda name: max-python - version: 24.6.0.dev2024120105 + version: 24.6.0.dev2024120221 build: 3.12release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120105-3.12release.conda - sha256: 47b8fb6184f15795d78d408ce2e7f702208af3863adbea9c8a0b1011ac551411 - md5: 5c145a15e58ef93719afa6cc2b472ccf + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120221-3.12release.conda + sha256: 781843479c4ff561f1963df894c76fbc4e623e16dba02ca90a9facdfa2f5d20a + md5: 10517bdbac80736a742077a261e535b6 depends: - - max-core ==24.6.0.dev2024120105 release + - max-core ==24.6.0.dev2024120221 release - python 3.12.* - pillow - fastapi @@ -6004,17 +6016,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 119119907 - timestamp: 1733030465067 + size: 119173532 + timestamp: 1733176012959 - kind: conda name: mblack - version: 24.6.0.dev2024120105 + version: 24.6.0.dev2024120221 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120105-release.conda - sha256: 8b4fdcc9c031e2b16fd48c64767919c6c82b0347d02a606770589b58e659721b - md5: af6b9bb6fed204e9e4ed73c334d24647 + url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120221-release.conda + sha256: 5d3b01c8332faf96e9d95f5ea2bf7ac1f528279326717103d9e3cf0a53a0dd58 + md5: a4660d8dd8037b8c090b028271d18e14 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -6024,8 +6036,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130609 - timestamp: 1733030528877 + size: 130643 + timestamp: 1733176232459 - kind: conda name: mdurl version: 0.1.2 @@ -6043,21 +6055,21 @@ packages: timestamp: 1704317789138 - kind: conda name: mojo-jupyter - version: 24.6.0.dev2024120105 + version: 24.6.0.dev2024120221 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120105-release.conda - sha256: 131b9545efd1c967f7fc0ee3b23c5000fc5481ab5ce1a3117624f70b9db7e9e3 - md5: 2c6472e319310564fa809d3e06b25ba5 + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120221-release.conda + sha256: 93bb896b09ee00dd8aaeb842dc73939e8c990bb14ba71e8c952fca318c235b0a + md5: 9f4dbbf9e29a9fc89154906e388c037b depends: - - max-core ==24.6.0.dev2024120105 release + - max-core ==24.6.0.dev2024120221 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22941 - timestamp: 1733030528878 + size: 22931 + timestamp: 1733176232460 - kind: conda name: multidict version: 6.1.0 @@ -7484,20 +7496,19 @@ packages: timestamp: 1677079727691 - kind: conda name: python-multipart - version: 0.0.18 - build: pyhff2d567_1 - build_number: 1 + version: 0.0.19 + build: pyhff2d567_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.18-pyhff2d567_1.conda - sha256: 464e546b789b8e881e1dc6b4995a11007d1e7c3ef2a533b9fb970146e85f7af8 - md5: 8057e4cf29236ea2094cc20fe9ef451e + url: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_0.conda + sha256: ff5964cd5eafc118f9d9a15fd31cd88a7ecc756ef83b6095c69b1891a53e2177 + md5: fe524346d3a9aa0aaf353dc39f7d1715 depends: - python >=3.9 license: Apache-2.0 license_family: Apache - size: 27683 - timestamp: 1732988029649 + size: 27780 + timestamp: 1733062326577 - kind: conda name: python-tzdata version: '2024.2' @@ -8433,33 +8444,35 @@ packages: - kind: conda name: typing-extensions version: 4.12.2 - build: hd8ed1ab_0 + build: hd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_0.conda - sha256: d3b9a8ed6da7c9f9553c5fd8a4fca9c3e0ab712fa5f497859f82337d67533b73 - md5: 52d648bd608f5737b123f510bb5514b5 + url: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda + sha256: c8e9c1c467b5f960b627d7adc1c65fece8e929a3de89967e91ef0f726422fd32 + md5: b6a408c64b78ec7b779a3e5c7a902433 depends: - - typing_extensions 4.12.2 pyha770c72_0 + - typing_extensions 4.12.2 pyha770c72_1 license: PSF-2.0 license_family: PSF - size: 10097 - timestamp: 1717802659025 + size: 10075 + timestamp: 1733188758872 - kind: conda name: typing_extensions version: 4.12.2 - build: pyha770c72_0 + build: pyha770c72_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda - sha256: 0fce54f8ec3e59f5ef3bb7641863be4e1bf1279623e5af3d3fa726e8f7628ddb - md5: ebe6952715e1d5eb567eeebf25250fa7 + url: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + sha256: 337be7af5af8b2817f115b3b68870208b30c31d3439bec07bfb2d8f4823e3568 + md5: d17f13df8b65464ca316cbc000a3cb64 depends: - - python >=3.8 + - python >=3.9 license: PSF-2.0 license_family: PSF - size: 39888 - timestamp: 1717802653893 + size: 39637 + timestamp: 1733188758212 - kind: conda name: tzdata version: 2024b From 30fa4c3a3dce868617a3f74bff1f81909563338f Mon Sep 17 00:00:00 2001 From: abdul dakkak Date: Mon, 2 Dec 2024 14:15:19 -0800 Subject: [PATCH 010/509] [******][GPU] Disable print functionality on AMD GPUs MODULAR_ORIG_COMMIT_REV_ID: c167530a4bb665c5176661e38257dcd419203882 --- stdlib/src/builtin/io.mojo | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/stdlib/src/builtin/io.mojo b/stdlib/src/builtin/io.mojo index 259f065987..c0b55f993e 100644 --- a/stdlib/src/builtin/io.mojo +++ b/stdlib/src/builtin/io.mojo @@ -266,6 +266,12 @@ fn print[ flush: If set to true, then the stream is forcibly flushed. file: The output stream. """ + + # TODO(MSTDL-1027): Print on AMD GPUs is not implemented yet. + @parameter + if is_amd_gpu(): + return + write_buffered[buffer_size=4096](file, values, sep=sep, end=end) @parameter From a4f67f16b8f334d7d2a9cd6722f2655a5d9d85e8 Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Mon, 2 Dec 2024 18:33:08 -0800 Subject: [PATCH 011/509] [mojo-stdlib] Minor cleanups for `Tuple`, NFC. These are just minor improvements to `Tuple` from a walkthrough with @VerdagonModular. MODULAR_ORIG_COMMIT_REV_ID: 352c9d3bc6494f4696a405bf3d992cfced5dce89 --- stdlib/src/builtin/tuple.mojo | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/stdlib/src/builtin/tuple.mojo b/stdlib/src/builtin/tuple.mojo index 50fdf9f708..00bede563f 100644 --- a/stdlib/src/builtin/tuple.mojo +++ b/stdlib/src/builtin/tuple.mojo @@ -81,8 +81,10 @@ struct Tuple[*element_types: CollectionElement](Sized, CollectionElement): UnsafePointer.address_of(self[i]) ) - # Mark the elements as destroyed. - storage._is_owned = False + # Do not destroy the elements when 'storage' goes away. + __mlir_op.`lit.ownership.mark_destroyed`( + __get_mvalue_as_litref(storage) + ) fn __del__(owned self): """Destructor that destroys all of the elements.""" @@ -126,6 +128,7 @@ struct Tuple[*element_types: CollectionElement](Sized, CollectionElement): UnsafePointer.address_of(existing[i]).move_pointee_into( UnsafePointer.address_of(self[i]) ) + # Note: The destructor on `existing` is auto-disabled in a moveinit. @always_inline @staticmethod From 9702f27ca6f7ae5d80b702ad22ff2effc8728dfb Mon Sep 17 00:00:00 2001 From: modularbot Date: Tue, 3 Dec 2024 09:38:54 +0000 Subject: [PATCH 012/509] Update lockfiles to point to latest nightly version: 24.6.0.dev2024120306 --- examples/life/magic.lock | 499 ++++++++++++++++---------------- examples/magic.lock | 497 ++++++++++++++++---------------- examples/notebooks/magic.lock | 520 +++++++++++++++++----------------- examples/operators/magic.lock | 499 ++++++++++++++++---------------- magic.lock | 499 ++++++++++++++++---------------- 5 files changed, 1280 insertions(+), 1234 deletions(-) diff --git a/examples/life/magic.lock b/examples/life/magic.lock index 8325a74676..9c78b39352 100644 --- a/examples/life/magic.lock +++ b/examples/life/magic.lock @@ -15,7 +15,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aom-3.9.1-hac33072_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/asgiref-3.8.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/asgiref-3.8.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/attr-2.5.1-h166bdaf_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-hb88c0a9_10.conda @@ -47,15 +47,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-3.1.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/dav1d-1.2.1-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/dbus-1.13.6-h5008d03_3.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.8-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_0.conda + - 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.5-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.5-pyhd8ed1ab_1.conda @@ -70,7 +70,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2 - 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 - - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.9.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gettext-0.22.5-he02047a_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gettext-tools-0.22.5-he02047a_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gflags-2.2.2-h5888daf_1005.conda @@ -87,7 +87,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-7.0.2-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/jack-1.9.22-h7c63dc7_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_0.conda @@ -173,15 +173,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.9.4-hcb278e6_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120221-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120221-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120221-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120221-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120306-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120306-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120306-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120306-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120221-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120306-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/multiprocess-0.70.16-py312h66e93f0_1.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_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-he02047a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda @@ -200,7 +200,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-util-http-0.49b2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/opusfile-0.12-h3358134_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/orc-2.0.3-he039a57_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.3-py312hf9745cd_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.44-hba22ea6_2.conda @@ -216,7 +216,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/pulseaudio-client-17.0-hb77b528_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-18.1.0-py312h7900ff3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-18.1.0-py312h01725c0_0_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.2-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.27.1-py312h12e396e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.6.1-pyh3cfb1c2_0.conda @@ -225,7 +225,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/pyinstrument-5.0.0-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.7-hc5c86c4_0_cpython.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_0.conda @@ -239,7 +239,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/re2-2024.07.02-h77b4e00_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda - 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_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_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 @@ -249,7 +249,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/sdl2_ttf-2.22.0-h08b1b5d_2.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_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-ha2e4443_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.1.3-pyhd8ed1ab_0.conda @@ -267,7 +267,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/uvloop-0.21.0-py312h66e93f0_1.conda @@ -300,7 +300,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aom-3.9.1-hcccb83c_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/asgiref-3.8.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/asgiref-3.8.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/attr-2.5.1-h4e544f5_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-hac900a4_10.conda @@ -332,15 +332,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-3.1.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/dav1d-1.2.1-h31becfc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/dbus-1.13.6-h12b9eeb_3.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.8-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_0.conda + - 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.5-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.5-pyhd8ed1ab_1.conda @@ -355,7 +355,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2 - 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 - - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.9.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gettext-0.22.5-h0a1ffab_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gettext-tools-0.22.5-h0a1ffab_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gflags-2.2.2-h5ad3122_1005.conda @@ -372,7 +372,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-7.0.2-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/jack-1.9.22-h5c6c0ed_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_0.conda @@ -458,15 +458,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.9.4-hd600fc2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.2-py312h74ce7d3_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120221-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120221-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120221-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120221-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120306-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120306-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120306-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120306-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120221-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120306-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/multiprocess-0.70.16-py312hb2c0f52_1.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_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-hcccb83c_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda @@ -485,7 +485,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-util-http-0.49b2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/opusfile-0.12-hf55b2d5_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/orc-2.0.3-h90de224_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pandas-2.2.3-py312ha2895bd_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pcre2-10.44-h070dd5b_2.conda @@ -501,7 +501,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pulseaudio-client-17.0-h729494f_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-18.1.0-py312h8025657_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-18.1.0-py312h66f7834_0_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.2-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pydantic-core-2.27.1-py312h8cbf658_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.6.1-pyh3cfb1c2_0.conda @@ -510,7 +510,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyinstrument-5.0.0-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.7-h5d932e8_0_cpython.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_0.conda @@ -524,7 +524,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/re2-2024.07.02-h2d3a13d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8fc344f_1.conda - 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_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_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 @@ -534,7 +534,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sdl2_ttf-2.22.0-h680d130_2.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_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-h1088aeb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.1.3-pyhd8ed1ab_0.conda @@ -552,7 +552,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/uvloop-0.21.0-py312hb2c0f52_1.conda @@ -583,7 +583,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aom-3.9.1-h7bae524_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/asgiref-3.8.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/asgiref-3.8.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-h9b725a8_10.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.0-h5d7ee29_2.conda @@ -614,14 +614,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-3.1.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/dav1d-1.2.1-hb547adb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.8-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_0.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.5-pyhff2d567_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/filelock-3.16.1-pyhd8ed1ab_0.conda @@ -635,7 +635,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2 - 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 - - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.9.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gettext-0.22.5-h8414b35_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gettext-tools-0.22.5-h8414b35_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gflags-2.2.2-hf9b8971_1005.conda @@ -652,7 +652,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-7.0.2-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_0.conda @@ -723,15 +723,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.9.4-hb7217d7_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312ha0ccf2a_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120221-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120221-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120221-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120221-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120306-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120306-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120306-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120306-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120221-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120306-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.16-py312h024a12e_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_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h7bae524_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda @@ -750,7 +750,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-util-http-0.49b2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/opusfile-0.12-h5643135_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/orc-2.0.3-h121fd32_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.3-py312hcd31e36_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pcre2-10.44-h297a79d_2.conda @@ -765,7 +765,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pthread-stubs-0.4-hd74edd7_1002.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-18.1.0-py312h1f38498_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-18.1.0-py312hc40f475_0_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.2-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.27.1-py312hcd83bfe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.6.1-pyh3cfb1c2_0.conda @@ -774,7 +774,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyinstrument-5.0.0-py312h0bf5046_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.7-h739c21a_0_cpython.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_0.conda @@ -788,7 +788,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/re2-2024.07.02-hcd0e937_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h92ec313_1.conda - 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_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_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.7-hf9b8971_0.conda @@ -797,7 +797,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sdl2_ttf-2.22.0-hda0f12e_2.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_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-hd02b534_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.1.3-pyhd8ed1ab_0.conda @@ -815,7 +815,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/uvloop-0.21.0-py312h0bf5046_1.conda @@ -1098,19 +1098,20 @@ packages: - kind: conda name: asgiref version: 3.8.1 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/asgiref-3.8.1-pyhd8ed1ab_0.conda - sha256: 85fc8f54361b922d744c8728a7a711cab390b78941e18a3570dabfac8169e5f9 - md5: b5c2e1034ccc76fb14031637924880eb + url: https://conda.anaconda.org/conda-forge/noarch/asgiref-3.8.1-pyhd8ed1ab_1.conda + sha256: c8d51a32f3530e3ca176d8f7bf5621c68c7c1c03fe9cc5c3c49d8ba4a1248f43 + md5: 21187c8276f87b6aedfe63c267a6eed7 depends: - - python >=3.8 + - python >=3.9 - typing_extensions >=4 license: BSD-3-Clause license_family: BSD - size: 26347 - timestamp: 1711269034814 + size: 26436 + timestamp: 1733215704904 - kind: conda name: attr version: 2.5.1 @@ -2574,33 +2575,33 @@ packages: timestamp: 1666700778190 - kind: conda name: datasets - version: 3.1.0 - build: pyhff2d567_0 + version: 2.14.4 + build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/datasets-3.1.0-pyhff2d567_0.conda - sha256: c3329f96a797fcec28a0bc42372bb253ce6434cbd6d9b5dc8e8417a247c43027 - md5: cd6278d231cd340f2f0c600037df5a98 + url: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda + sha256: 7e09bd083a609138b780fcc4535924cb96814d2c908a36d4c64a2ba9ee3efe7f + md5: 3e087f072ce03c43a9b60522f5d0ca2f depends: - aiohttp - - dill >=0.3.0,<0.3.9 - - filelock - - fsspec >=2023.1.0,<=2024.9.0 - - huggingface_hub >=0.23.0 - - multiprocess <0.70.17 + - dill >=0.3.0,<0.3.8 + - fsspec >=2021.11.1 + - huggingface_hub >=0.14.0,<1.0.0 + - importlib-metadata + - multiprocess - numpy >=1.17 - packaging - pandas - - pyarrow >=15.0.0 - - python >=3.9 + - pyarrow >=8.0.0 + - python >=3.8.0 - python-xxhash - pyyaml >=5.1 - - requests >=2.32.2 - - tqdm >=4.66.3 + - requests >=2.19.0 + - tqdm >=4.62.1 license: Apache-2.0 license_family: Apache - size: 332680 - timestamp: 1731706749584 + size: 347303 + timestamp: 1691593908658 - kind: conda name: dav1d version: 1.2.1 @@ -2693,19 +2694,19 @@ packages: timestamp: 1731836933516 - kind: conda name: dill - version: 0.3.8 + version: 0.3.7 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.8-pyhd8ed1ab_0.conda - sha256: 482b5b566ca559119b504c53df12b08f3962a5ef8e48061d62fd58a47f8f2ec4 - md5: 78745f157d56877a2c6e7b386f66f3e2 + url: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda + sha256: 4ff20c6be028be2825235631c45d9e4a75bca1de65f8840c02dfb28ea0137c45 + md5: 5e4f3466526c52bc9af2d2353a1460bd depends: - python >=3.7 license: BSD-3-Clause license_family: BSD - size: 88169 - timestamp: 1706434833883 + size: 87553 + timestamp: 1690101185422 - kind: conda name: dnspython version: 2.7.0 @@ -2764,17 +2765,18 @@ packages: - kind: conda name: exceptiongroup version: 1.2.2 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_0.conda - sha256: e0edd30c4b7144406bb4da975e6bb97d6bc9c0e999aa4efe66ae108cada5d5b5 - md5: d02ae936e42063ca46af6cdad2dbd1e0 + url: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda + sha256: cbde2c64ec317118fc06b223c5fd87c8a680255e7348dd60e7b292d2e103e701 + md5: a16662747cdeb9abbac74d0057cc976e depends: - - python >=3.7 + - python >=3.9 license: MIT and PSF-2.0 - size: 20418 - timestamp: 1720869435725 + size: 20486 + timestamp: 1733208916977 - kind: conda name: expat version: 2.6.4 @@ -3172,19 +3174,19 @@ packages: timestamp: 1729699642726 - kind: conda name: fsspec - version: 2024.9.0 + version: 2024.10.0 build: pyhff2d567_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.9.0-pyhff2d567_0.conda - sha256: 8f4e9805b4ec223dea0d99f9e7e57c391d9026455eb9f0d6e0784c5d1a1200dc - md5: ace4329fbff4c69ab0309db6da182987 + url: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhff2d567_0.conda + sha256: 40bb76981dd49d5869b48925a8975bb7bbe4e33e1e40af4ec06f6bf4a62effd7 + md5: 816dbc4679a64e4417cd1385d661bb31 depends: - python >=3.8 license: BSD-3-Clause license_family: BSD - size: 134378 - timestamp: 1725543368393 + size: 134745 + timestamp: 1729608972363 - kind: conda name: gettext version: 0.22.5 @@ -3680,6 +3682,7 @@ packages: - typing-extensions >=3.7.4.3 - typing_extensions >=3.7.4.3 license: Apache-2.0 + license_family: APACHE size: 274858 timestamp: 1733170279930 - kind: conda @@ -3745,18 +3748,19 @@ packages: - kind: conda name: idna version: '3.10' - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_0.conda - sha256: 8c57fd68e6be5eecba4462e983aed7e85761a519aab80e834bbd7794d4b545b2 - md5: 7ba2ede0e7c795ff95088daf0dc59753 + url: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda + sha256: d7a472c9fd479e2e8dcb83fb8d433fce971ea369d704ece380e876f9c3494e87 + md5: 39a4f67be3286c86d696df570b1201b7 depends: - - python >=3.6 + - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 49837 - timestamp: 1726459583613 + size: 49765 + timestamp: 1733211921194 - kind: conda name: importlib-metadata version: 7.0.2 @@ -7739,81 +7743,82 @@ packages: timestamp: 1729351534830 - kind: conda name: max - version: 24.6.0.dev2024120221 + version: 24.6.0.dev2024120306 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120221-release.conda - sha256: 71b02d0afbd2dfa49633f0dff4cdc1a94392abc344668636b90656060117384e - md5: fa3d1a799da8e216b9448fd2246655f3 - depends: - - max-core ==24.6.0.dev2024120221 release - - max-python >=24.6.0.dev2024120221,<25.0a0 - - mojo-jupyter ==24.6.0.dev2024120221 release - - mblack ==24.6.0.dev2024120221 release + url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120306-release.conda + sha256: 2aae2a8286dca29453e8cc8cfe13511aa016a521ac0c9201ceb24d1ba6c4138e + md5: 9c25081ace6ad2c13675cf0123109cb9 + depends: + - max-core ==24.6.0.dev2024120306 release + - max-python >=24.6.0.dev2024120306,<25.0a0 + - mojo-jupyter ==24.6.0.dev2024120306 release + - mblack ==24.6.0.dev2024120306 release license: LicenseRef-Modular-Proprietary - size: 9927 - timestamp: 1733176232456 + size: 9929 + timestamp: 1733209293577 - kind: conda name: max-core - version: 24.6.0.dev2024120221 + version: 24.6.0.dev2024120306 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120221-release.conda - sha256: e7362f447478b8f8a4ce9f6e4a38c7b519c4fdd81cbcb6cd0bfded3cfb3399eb - md5: 646d3f60af8b7d77a29ea74c80b73abe + url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120306-release.conda + sha256: a82534696c6e078fb4e14b4b0f058336ffd0a647f7404e85aaee18eec25be067 + md5: c249d77d8e5885dd0eacd9028131413f depends: - - mblack ==24.6.0.dev2024120221 release + - mblack ==24.6.0.dev2024120306 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 254782923 - timestamp: 1733176189897 + size: 254711372 + timestamp: 1733209193854 - kind: conda name: max-core - version: 24.6.0.dev2024120221 + version: 24.6.0.dev2024120306 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120221-release.conda - sha256: 38a17e51fc0bc077d19e9829a0d901dfef581c13a4b3b5238fbc509c5e495119 - md5: 762d1a967090c478c15e8182ee077eac + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120306-release.conda + sha256: bd0858a3e2069a86cd71370322e7ac26ad3948225e4f0811e4fbf8771d44d0ea + md5: e5b6ae7316dc2b08a52cee8f27b4f484 depends: - - mblack ==24.6.0.dev2024120221 release + - mblack ==24.6.0.dev2024120306 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 258409140 - timestamp: 1733176232454 + size: 258488596 + timestamp: 1733209293575 - kind: conda name: max-core - version: 24.6.0.dev2024120221 + version: 24.6.0.dev2024120306 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120221-release.conda - sha256: 81d2491a6299f97cb6f9847169f71eb344e5deec11755819e4124b054ec69c4c - md5: 0b95fc4831992260253ee5e3c83f3382 + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120306-release.conda + sha256: 88b5f2cbb2724067d33b10515613ec845f134c3758fd063852ac191a276d7812 + md5: 05acbd2d9cf25aa913a979aa9802c194 depends: - - mblack ==24.6.0.dev2024120221 release + - mblack ==24.6.0.dev2024120306 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 220306895 - timestamp: 1733176012956 + size: 220248523 + timestamp: 1733209020078 - kind: conda name: max-python - version: 24.6.0.dev2024120221 + version: 24.6.0.dev2024120306 build: 3.12release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120221-3.12release.conda - sha256: eff8e0d757d2ff4398c11357f2f6018cd32bfe01b7f7b9a40eb6848b7150eee5 - md5: d11c807bdfab1a9ec1d8d60ae4966f6f + url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120306-3.12release.conda + sha256: 78dc00af885799e8c1f92185a505aee022f2ffd7191d24fa94ef428457f53e15 + md5: 4bdce0c1dd562e22566551d578103d2f depends: - - max-core ==24.6.0.dev2024120221 release + - max-core ==24.6.0.dev2024120306 release - python 3.12.* - pillow - fastapi - httpx - numpy >=1.18,<2.0 + - huggingface_hub - opentelemetry-api - opentelemetry-exporter-otlp-proto-http >=1.27.0 - opentelemetry-exporter-prometheus >=0.48b0 @@ -7830,23 +7835,24 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 128533716 - timestamp: 1733176189912 + size: 128537272 + timestamp: 1733209193862 - kind: conda name: max-python - version: 24.6.0.dev2024120221 + version: 24.6.0.dev2024120306 build: 3.12release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120221-3.12release.conda - sha256: c9314e3c7be3e6913345141b05beb7868e6a35dad199472c64a0b9137bc89aa2 - md5: f7e5f66871aa60909394a02ab2344f64 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120306-3.12release.conda + sha256: 3910ceb9135f2258df30dd7a5d87b8f80a284645d6da48daa0e9bb145a49744e + md5: e7d3ebeaaeb2bd99167fda861a7e7aba depends: - - max-core ==24.6.0.dev2024120221 release + - max-core ==24.6.0.dev2024120306 release - python 3.12.* - pillow - fastapi - httpx - numpy >=1.18,<2.0 + - huggingface_hub - opentelemetry-api - opentelemetry-exporter-otlp-proto-http >=1.27.0 - opentelemetry-exporter-prometheus >=0.48b0 @@ -7863,23 +7869,24 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 132227870 - timestamp: 1733176232462 + size: 132223349 + timestamp: 1733209293584 - kind: conda name: max-python - version: 24.6.0.dev2024120221 + version: 24.6.0.dev2024120306 build: 3.12release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120221-3.12release.conda - sha256: 781843479c4ff561f1963df894c76fbc4e623e16dba02ca90a9facdfa2f5d20a - md5: 10517bdbac80736a742077a261e535b6 + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120306-3.12release.conda + sha256: ddafa4f7201fca06f38e8a0232cdbbb918d6a24c03cb25a0137d4fcc0ca9f354 + md5: 9859f8c88c81c18baaddd15be03d259c depends: - - max-core ==24.6.0.dev2024120221 release + - max-core ==24.6.0.dev2024120306 release - python 3.12.* - pillow - fastapi - httpx - numpy >=1.18,<2.0 + - huggingface_hub - opentelemetry-api - opentelemetry-exporter-otlp-proto-http >=1.27.0 - opentelemetry-exporter-prometheus >=0.48b0 @@ -7896,17 +7903,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 119173532 - timestamp: 1733176012959 + size: 119113363 + timestamp: 1733209020082 - kind: conda name: mblack - version: 24.6.0.dev2024120221 + version: 24.6.0.dev2024120306 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120221-release.conda - sha256: 5d3b01c8332faf96e9d95f5ea2bf7ac1f528279326717103d9e3cf0a53a0dd58 - md5: a4660d8dd8037b8c090b028271d18e14 + url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120306-release.conda + sha256: 35b22caab89b65a52b9e7877762a58bba8cd21137ac1383e268b8a2ae45173ac + md5: f77eafd932de3ae309643ea716ba3c3a depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -7916,8 +7923,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130643 - timestamp: 1733176232459 + size: 130649 + timestamp: 1733209293580 - kind: conda name: mdurl version: 0.1.2 @@ -7935,21 +7942,21 @@ packages: timestamp: 1704317789138 - kind: conda name: mojo-jupyter - version: 24.6.0.dev2024120221 + version: 24.6.0.dev2024120306 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120221-release.conda - sha256: 93bb896b09ee00dd8aaeb842dc73939e8c990bb14ba71e8c952fca318c235b0a - md5: 9f4dbbf9e29a9fc89154906e388c037b + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120306-release.conda + sha256: dd1fcd4298ef08be4507931babe70d6b335dc28d5ead602460747edc4f10c2dc + md5: 8bb40dfabe84757d93d3053fdf4b0a58 depends: - - max-core ==24.6.0.dev2024120221 release + - max-core ==24.6.0.dev2024120306 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22931 - timestamp: 1733176232460 + size: 22940 + timestamp: 1733209293581 - kind: conda name: mpg123 version: 1.32.9 @@ -8052,61 +8059,59 @@ packages: timestamp: 1729065664275 - kind: conda name: multiprocess - version: 0.70.16 - build: py312h024a12e_1 + version: 0.70.15 + build: py312h02f2b3b_1 build_number: 1 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/multiprocess-0.70.16-py312h024a12e_1.conda - sha256: d19a1c8b3fd44414657066becba960143e7115a385fb71b941f7e9c74f066a32 - md5: fd83a478d686df79aa394b9db1ad20b5 + url: https://conda.anaconda.org/conda-forge/osx-arm64/multiprocess-0.70.15-py312h02f2b3b_1.conda + sha256: 8041371e3ec3fbc2ca13c71b0180672896e6382e62892d9f6b11a4c5dd675951 + md5: 910ef2223c71902175418d9163152788 depends: - - __osx >=11.0 - - dill >=0.3.8 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython + - dill >=0.3.6 + - python >=3.12.0rc3,<3.13.0a0 + - python >=3.12.0rc3,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 license: BSD-3-Clause license_family: BSD - size: 342831 - timestamp: 1724954807776 + size: 335147 + timestamp: 1695459275360 - kind: conda name: multiprocess - version: 0.70.16 - build: py312h66e93f0_1 + version: 0.70.15 + build: py312h98912ed_1 build_number: 1 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.16-py312h66e93f0_1.conda - sha256: 459092c4e9305e00a0207b764a266c9caa14d82196322b2a74c96028c563a809 - md5: efe4a3f62320156f68579362314009f3 + url: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.15-py312h98912ed_1.conda + sha256: bb612a921fafda6375a2204ffebd8811db8dd3b8f25ac9886cc9bcbff7e3664e + md5: 5a64b9f44790d9a187a85366dd0ffa8d depends: - - __glibc >=2.17,<3.0.a0 - - dill >=0.3.8 - - libgcc >=13 - - python >=3.12,<3.13.0a0 + - dill >=0.3.6 + - libgcc-ng >=12 + - python >=3.12.0rc3,<3.13.0a0 - python_abi 3.12.* *_cp312 license: BSD-3-Clause license_family: BSD - size: 340540 - timestamp: 1724954755987 + size: 335666 + timestamp: 1695459025249 - kind: conda name: multiprocess - version: 0.70.16 - build: py312hb2c0f52_1 + version: 0.70.15 + build: py312hdd3e373_1 build_number: 1 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.16-py312hb2c0f52_1.conda - sha256: f93627c78d1f86f593350196699b462c334542477aa55fe0212edf45392c9ab4 - md5: 642c63b684ce5614f157572b04816983 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.15-py312hdd3e373_1.conda + sha256: c53362cdf346f314e111faddc53061e3fd2ece0ba68ca303f5dd109976df158f + md5: 173a1692d2b3ddc265dc6afd21a869b3 depends: - - dill >=0.3.8 - - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython + - dill >=0.3.6 + - libgcc-ng >=12 + - python >=3.12.0rc3,<3.13.0a0 + - python >=3.12.0rc3,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 license: BSD-3-Clause license_family: BSD - size: 341428 - timestamp: 1724954862644 + size: 336110 + timestamp: 1695459137796 - kind: conda name: mypy_extensions version: 1.0.0 @@ -8653,19 +8658,19 @@ packages: - kind: conda name: packaging version: '24.2' - build: pyhff2d567_1 - build_number: 1 + build: pyhd8ed1ab_2 + build_number: 2 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhff2d567_1.conda - sha256: 74843f871e5cd8a1baf5ed8c406c571139c287141efe532f8ffbdafa3664d244 - md5: 8508b703977f4c4ada34d657d051972c + url: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + sha256: da157b19bcd398b9804c5c52fc000fcb8ab0525bdb9c70f95beaa0bb42f85af1 + md5: 3bfed7e6228ebf2f7b9eaa47f1b4e2aa depends: - python >=3.8 license: Apache-2.0 license_family: APACHE - size: 60380 - timestamp: 1731802602808 + size: 60164 + timestamp: 1733203368787 - kind: conda name: pandas version: 2.2.3 @@ -9383,18 +9388,20 @@ packages: - kind: conda name: pycparser version: '2.22' - build: pyhd8ed1ab_0 + build: pyh29332c3_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda - sha256: 406001ebf017688b1a1554b49127ca3a4ac4626ec0fd51dc75ffa4415b720b64 - md5: 844d9eb3b43095b031874477f7d70088 + url: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda + sha256: 79db7928d13fab2d892592223d7570f5061c192f27b9febd1a418427b719acc6 + md5: 12c566707c80111f9799308d9e265aef depends: - - python >=3.8 + - python >=3.9 + - python license: BSD-3-Clause license_family: BSD - size: 105098 - timestamp: 1711811634025 + size: 110100 + timestamp: 1733195786147 - kind: conda name: pydantic version: 2.10.2 @@ -9748,19 +9755,19 @@ packages: - kind: conda name: python-dateutil version: 2.9.0.post0 - build: pyhff2d567_0 + build: pyhff2d567_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_0.conda - sha256: 3888012c5916efaef45d503e3e544bbcc571b84426c1bb9577799ada9efefb54 - md5: b6dfd90a2141e573e4b6a81630b56df5 + url: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + sha256: a50052536f1ef8516ed11a844f9413661829aa083304dc624c5925298d078d79 + md5: 5ba79d7c71f03c678c8ead841f347d6e depends: - python >=3.9 - six >=1.5 license: Apache-2.0 - license_family: APACHE - size: 221925 - timestamp: 1731919374686 + size: 222505 + timestamp: 1733215763718 - kind: conda name: python-dotenv version: 1.0.1 @@ -10245,24 +10252,24 @@ packages: - kind: conda name: requests version: 2.32.3 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_0.conda - sha256: 5845ffe82a6fa4d437a2eae1e32a1ad308d7ad349f61e337c0a890fe04c513cc - md5: 5ede4753180c7a550a443c430dc8ab52 + url: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda + sha256: d701ca1136197aa121bbbe0e8c18db6b5c94acbd041c2b43c70e5ae104e1d8ad + md5: a9b9368f3701a417eac9edbcae7cb737 depends: - certifi >=2017.4.17 - charset-normalizer >=2,<4 - idna >=2.5,<4 - - python >=3.8 + - python >=3.9 - urllib3 >=1.21.1,<3 constrains: - chardet >=3.0.2,<6 license: Apache-2.0 - license_family: APACHE - size: 58810 - timestamp: 1717057174842 + size: 58723 + timestamp: 1733217126197 - kind: conda name: rich version: 13.9.4 @@ -10639,18 +10646,19 @@ packages: - kind: conda name: six version: 1.16.0 - build: pyh6c4a22f_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 - sha256: a85c38227b446f42c5b90d9b642f2c0567880c15d72492d8da074a59c8f91dd6 - md5: e5f25f8dbc060e9a8d912e432202afc2 + url: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyhd8ed1ab_1.conda + sha256: 761b96fe7bea080b9c35dd2f87f788eb94b61d462645bd16f361e80ae0ff017c + md5: a516da6cfe1ec0a55e49737f017b4965 depends: - - python + - python >=3.9 license: MIT license_family: MIT - size: 14259 - timestamp: 1620240338595 + size: 16385 + timestamp: 1733216901349 - kind: conda name: snappy version: 1.2.1 @@ -11110,22 +11118,23 @@ packages: - kind: conda name: urllib3 version: 2.2.3 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_0.conda - sha256: b6bb34ce41cd93956ad6eeee275ed52390fb3788d6c75e753172ea7ac60b66e5 - md5: 6b55867f385dd762ed99ea687af32a69 + url: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_1.conda + sha256: 416e30a1c3262275f01a3e22e783118d9e9d2872a739a9ed860d06fa9c7593d5 + md5: 4a2d8ef7c37b8808c5b9b750501fffce depends: - brotli-python >=1.0.9 - h2 >=4,<5 - pysocks >=1.5.6,<2.0,!=1.5.7 - - python >=3.8 + - python >=3.9 - zstandard >=0.18.0 license: MIT license_family: MIT - size: 98076 - timestamp: 1726496531769 + size: 98077 + timestamp: 1733206968917 - kind: conda name: uvicorn version: 0.32.1 diff --git a/examples/magic.lock b/examples/magic.lock index bf0e02fb64..2e04f1ffa4 100644 --- a/examples/magic.lock +++ b/examples/magic.lock @@ -13,7 +13,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/asgiref-3.8.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/asgiref-3.8.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-hb88c0a9_10.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.0-hecf86a2_2.conda @@ -43,19 +43,19 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-3.1.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.8-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_0.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.5-pyhff2d567_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/filelock-3.16.1-pyhd8ed1ab_0.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 - - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.9.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gflags-2.2.2-h5888daf_1005.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/glog-0.7.1-hbabe93e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda @@ -67,7 +67,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-7.0.2-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_0.conda @@ -131,14 +131,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.9.4-hcb278e6_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py311h2dc5d0c_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120221-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120221-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120221-3.11release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120221-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120306-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120306-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120306-3.11release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120306-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120221-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120306-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py311h2dc5d0c_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.16-py311h9ecbd09_1.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_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-he02047a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py311h64a7726_0.conda @@ -156,7 +156,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh10f6f8f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-util-http-0.49b2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/orc-2.0.3-he039a57_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.3-py311h7db5c69_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-11.0.0-py311h49e9ac3_0.conda @@ -167,7 +167,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-18.1.0-py311h38be061_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-18.1.0-py311h4854187_0_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.2-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.27.1-py311h9e33e62_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.6.1-pyh3cfb1c2_0.conda @@ -175,7 +175,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/pyinstrument-5.0.0-py311h9ecbd09_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.11.10-hc5c86c4_3_cpython.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_0.conda @@ -188,13 +188,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/re2-2024.07.02-h77b4e00_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda - 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_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_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 - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-ha2e4443_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.1.3-pyhd8ed1ab_0.conda @@ -211,7 +211,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/uvloop-0.21.0-py311h9ecbd09_1.conda @@ -235,7 +235,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/asgiref-3.8.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/asgiref-3.8.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-hac900a4_10.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.0-h35473ba_2.conda @@ -265,19 +265,19 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-3.1.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.8-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_0.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.5-pyhff2d567_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/filelock-3.16.1-pyhd8ed1ab_0.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 - - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.9.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gflags-2.2.2-h5ad3122_1005.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/glog-0.7.1-h468a4a4_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda @@ -290,7 +290,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-7.0.2-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_0.conda @@ -354,14 +354,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.9.4-hd600fc2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.2-py311ha09ea12_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120221-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120221-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120221-3.11release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120221-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120306-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120306-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120306-3.11release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120306-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120221-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120306-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multidict-6.1.0-py311h58d527c_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.16-py311ha879c10_1.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_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-hcccb83c_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py311h69ead2a_0.conda @@ -379,7 +379,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh10f6f8f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-util-http-0.49b2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/orc-2.0.3-h90de224_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pandas-2.2.3-py311h848c333_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pillow-11.0.0-py311hb2a0dd2_0.conda @@ -390,7 +390,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pthread-stubs-0.4-h86ecc28_1002.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-18.1.0-py311hfecb2dc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-18.1.0-py311ha6d2531_0_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.2-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pydantic-core-2.27.1-py311h0ca61a2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.6.1-pyh3cfb1c2_0.conda @@ -398,7 +398,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyinstrument-5.0.0-py311ha879c10_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.11.10-h5d932e8_3_cpython.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_0.conda @@ -411,13 +411,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/re2-2024.07.02-h2d3a13d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8fc344f_1.conda - 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_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_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 - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-h1088aeb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.1.3-pyhd8ed1ab_0.conda @@ -434,7 +434,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/uvloop-0.21.0-py311ha879c10_1.conda @@ -457,7 +457,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/asgiref-3.8.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/asgiref-3.8.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-h9b725a8_10.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.0-h5d7ee29_2.conda @@ -487,19 +487,19 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-3.1.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.8-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_0.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.5-pyhff2d567_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/filelock-3.16.1-pyhd8ed1ab_0.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 - - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.9.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gflags-2.2.2-hf9b8971_1005.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/glog-0.7.1-heb240a5_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda @@ -511,7 +511,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-7.0.2-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_0.conda @@ -567,14 +567,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.9.4-hb7217d7_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py311h56c23cb_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120221-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120221-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120221-3.11release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120221-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120306-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120306-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120306-3.11release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120306-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120221-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120306-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.16-py311h460d6c5_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_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h7bae524_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py311h7125741_0.conda @@ -592,7 +592,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh10f6f8f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-util-http-0.49b2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/orc-2.0.3-h121fd32_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.3-py311h9cb3ce9_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-11.0.0-py311h3894ae9_0.conda @@ -603,7 +603,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pthread-stubs-0.4-hd74edd7_1002.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-18.1.0-py311ha1ab1f8_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-18.1.0-py311he04fa90_0_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.2-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.27.1-py311h3ff9189_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.6.1-pyh3cfb1c2_0.conda @@ -611,7 +611,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyinstrument-5.0.0-py311hae2e1ce_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.11.10-hc51fdd5_3_cpython.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_0.conda @@ -624,12 +624,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/re2-2024.07.02-hcd0e937_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h92ec313_1.conda - 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_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_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_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-hd02b534_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.1.3-pyhd8ed1ab_0.conda @@ -646,7 +646,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/uvloop-0.21.0-py311hae2e1ce_1.conda @@ -854,19 +854,20 @@ packages: - kind: conda name: asgiref version: 3.8.1 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/asgiref-3.8.1-pyhd8ed1ab_0.conda - sha256: 85fc8f54361b922d744c8728a7a711cab390b78941e18a3570dabfac8169e5f9 - md5: b5c2e1034ccc76fb14031637924880eb + url: https://conda.anaconda.org/conda-forge/noarch/asgiref-3.8.1-pyhd8ed1ab_1.conda + sha256: c8d51a32f3530e3ca176d8f7bf5621c68c7c1c03fe9cc5c3c49d8ba4a1248f43 + md5: 21187c8276f87b6aedfe63c267a6eed7 depends: - - python >=3.8 + - python >=3.9 - typing_extensions >=4 license: BSD-3-Clause license_family: BSD - size: 26347 - timestamp: 1711269034814 + size: 26436 + timestamp: 1733215704904 - kind: conda name: attrs version: 24.2.0 @@ -2215,33 +2216,33 @@ packages: timestamp: 1666700778190 - kind: conda name: datasets - version: 3.1.0 - build: pyhff2d567_0 + version: 2.14.4 + build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/datasets-3.1.0-pyhff2d567_0.conda - sha256: c3329f96a797fcec28a0bc42372bb253ce6434cbd6d9b5dc8e8417a247c43027 - md5: cd6278d231cd340f2f0c600037df5a98 + url: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda + sha256: 7e09bd083a609138b780fcc4535924cb96814d2c908a36d4c64a2ba9ee3efe7f + md5: 3e087f072ce03c43a9b60522f5d0ca2f depends: - aiohttp - - dill >=0.3.0,<0.3.9 - - filelock - - fsspec >=2023.1.0,<=2024.9.0 - - huggingface_hub >=0.23.0 - - multiprocess <0.70.17 + - dill >=0.3.0,<0.3.8 + - fsspec >=2021.11.1 + - huggingface_hub >=0.14.0,<1.0.0 + - importlib-metadata + - multiprocess - numpy >=1.17 - packaging - pandas - - pyarrow >=15.0.0 - - python >=3.9 + - pyarrow >=8.0.0 + - python >=3.8.0 - python-xxhash - pyyaml >=5.1 - - requests >=2.32.2 - - tqdm >=4.66.3 + - requests >=2.19.0 + - tqdm >=4.62.1 license: Apache-2.0 license_family: Apache - size: 332680 - timestamp: 1731706749584 + size: 347303 + timestamp: 1691593908658 - kind: conda name: deprecated version: 1.2.15 @@ -2260,19 +2261,19 @@ packages: timestamp: 1731836933516 - kind: conda name: dill - version: 0.3.8 + version: 0.3.7 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.8-pyhd8ed1ab_0.conda - sha256: 482b5b566ca559119b504c53df12b08f3962a5ef8e48061d62fd58a47f8f2ec4 - md5: 78745f157d56877a2c6e7b386f66f3e2 + url: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda + sha256: 4ff20c6be028be2825235631c45d9e4a75bca1de65f8840c02dfb28ea0137c45 + md5: 5e4f3466526c52bc9af2d2353a1460bd depends: - python >=3.7 license: BSD-3-Clause license_family: BSD - size: 88169 - timestamp: 1706434833883 + size: 87553 + timestamp: 1690101185422 - kind: conda name: dnspython version: 2.7.0 @@ -2331,17 +2332,18 @@ packages: - kind: conda name: exceptiongroup version: 1.2.2 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_0.conda - sha256: e0edd30c4b7144406bb4da975e6bb97d6bc9c0e999aa4efe66ae108cada5d5b5 - md5: d02ae936e42063ca46af6cdad2dbd1e0 + url: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda + sha256: cbde2c64ec317118fc06b223c5fd87c8a680255e7348dd60e7b292d2e103e701 + md5: a16662747cdeb9abbac74d0057cc976e depends: - - python >=3.7 + - python >=3.9 license: MIT and PSF-2.0 - size: 20418 - timestamp: 1720869435725 + size: 20486 + timestamp: 1733208916977 - kind: conda name: fastapi version: 0.115.5 @@ -2498,19 +2500,19 @@ packages: timestamp: 1729699703032 - kind: conda name: fsspec - version: 2024.9.0 + version: 2024.10.0 build: pyhff2d567_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.9.0-pyhff2d567_0.conda - sha256: 8f4e9805b4ec223dea0d99f9e7e57c391d9026455eb9f0d6e0784c5d1a1200dc - md5: ace4329fbff4c69ab0309db6da182987 + url: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhff2d567_0.conda + sha256: 40bb76981dd49d5869b48925a8975bb7bbe4e33e1e40af4ec06f6bf4a62effd7 + md5: 816dbc4679a64e4417cd1385d661bb31 depends: - python >=3.8 license: BSD-3-Clause license_family: BSD - size: 134378 - timestamp: 1725543368393 + size: 134745 + timestamp: 1729608972363 - kind: conda name: gflags version: 2.2.2 @@ -2783,6 +2785,7 @@ packages: - typing-extensions >=3.7.4.3 - typing_extensions >=3.7.4.3 license: Apache-2.0 + license_family: APACHE size: 274858 timestamp: 1733170279930 - kind: conda @@ -2818,18 +2821,19 @@ packages: - kind: conda name: idna version: '3.10' - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_0.conda - sha256: 8c57fd68e6be5eecba4462e983aed7e85761a519aab80e834bbd7794d4b545b2 - md5: 7ba2ede0e7c795ff95088daf0dc59753 + url: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda + sha256: d7a472c9fd479e2e8dcb83fb8d433fce971ea369d704ece380e876f9c3494e87 + md5: 39a4f67be3286c86d696df570b1201b7 depends: - - python >=3.6 + - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 49837 - timestamp: 1726459583613 + size: 49765 + timestamp: 1733211921194 - kind: conda name: importlib-metadata version: 7.0.2 @@ -5840,81 +5844,82 @@ packages: timestamp: 1729352296161 - kind: conda name: max - version: 24.6.0.dev2024120221 + version: 24.6.0.dev2024120306 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120221-release.conda - sha256: 71b02d0afbd2dfa49633f0dff4cdc1a94392abc344668636b90656060117384e - md5: fa3d1a799da8e216b9448fd2246655f3 - depends: - - max-core ==24.6.0.dev2024120221 release - - max-python >=24.6.0.dev2024120221,<25.0a0 - - mojo-jupyter ==24.6.0.dev2024120221 release - - mblack ==24.6.0.dev2024120221 release + url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120306-release.conda + sha256: 2aae2a8286dca29453e8cc8cfe13511aa016a521ac0c9201ceb24d1ba6c4138e + md5: 9c25081ace6ad2c13675cf0123109cb9 + depends: + - max-core ==24.6.0.dev2024120306 release + - max-python >=24.6.0.dev2024120306,<25.0a0 + - mojo-jupyter ==24.6.0.dev2024120306 release + - mblack ==24.6.0.dev2024120306 release license: LicenseRef-Modular-Proprietary - size: 9927 - timestamp: 1733176232456 + size: 9929 + timestamp: 1733209293577 - kind: conda name: max-core - version: 24.6.0.dev2024120221 + version: 24.6.0.dev2024120306 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120221-release.conda - sha256: e7362f447478b8f8a4ce9f6e4a38c7b519c4fdd81cbcb6cd0bfded3cfb3399eb - md5: 646d3f60af8b7d77a29ea74c80b73abe + url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120306-release.conda + sha256: a82534696c6e078fb4e14b4b0f058336ffd0a647f7404e85aaee18eec25be067 + md5: c249d77d8e5885dd0eacd9028131413f depends: - - mblack ==24.6.0.dev2024120221 release + - mblack ==24.6.0.dev2024120306 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 254782923 - timestamp: 1733176189897 + size: 254711372 + timestamp: 1733209193854 - kind: conda name: max-core - version: 24.6.0.dev2024120221 + version: 24.6.0.dev2024120306 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120221-release.conda - sha256: 38a17e51fc0bc077d19e9829a0d901dfef581c13a4b3b5238fbc509c5e495119 - md5: 762d1a967090c478c15e8182ee077eac + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120306-release.conda + sha256: bd0858a3e2069a86cd71370322e7ac26ad3948225e4f0811e4fbf8771d44d0ea + md5: e5b6ae7316dc2b08a52cee8f27b4f484 depends: - - mblack ==24.6.0.dev2024120221 release + - mblack ==24.6.0.dev2024120306 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 258409140 - timestamp: 1733176232454 + size: 258488596 + timestamp: 1733209293575 - kind: conda name: max-core - version: 24.6.0.dev2024120221 + version: 24.6.0.dev2024120306 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120221-release.conda - sha256: 81d2491a6299f97cb6f9847169f71eb344e5deec11755819e4124b054ec69c4c - md5: 0b95fc4831992260253ee5e3c83f3382 + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120306-release.conda + sha256: 88b5f2cbb2724067d33b10515613ec845f134c3758fd063852ac191a276d7812 + md5: 05acbd2d9cf25aa913a979aa9802c194 depends: - - mblack ==24.6.0.dev2024120221 release + - mblack ==24.6.0.dev2024120306 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 220306895 - timestamp: 1733176012956 + size: 220248523 + timestamp: 1733209020078 - kind: conda name: max-python - version: 24.6.0.dev2024120221 + version: 24.6.0.dev2024120306 build: 3.11release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120221-3.11release.conda - sha256: 4db5c6b7fa0c54df758b803ddcdabd352bde9a207c6a2747adcd921202637c0b - md5: fd512401071a16a8c24f6c4a4aa01a39 + url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120306-3.11release.conda + sha256: fe78fef13dabb20d1a64aa0a0f1abb668a28ba18221f39a659b73236dbae9a60 + md5: 86e43abaa5b98cfd229e964be3a614ce depends: - - max-core ==24.6.0.dev2024120221 release + - max-core ==24.6.0.dev2024120306 release - python 3.11.* - pillow - fastapi - httpx - numpy >=1.18,<2.0 + - huggingface_hub - opentelemetry-api - opentelemetry-exporter-otlp-proto-http >=1.27.0 - opentelemetry-exporter-prometheus >=0.48b0 @@ -5931,23 +5936,24 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 128540502 - timestamp: 1733176189908 + size: 128574125 + timestamp: 1733209193860 - kind: conda name: max-python - version: 24.6.0.dev2024120221 + version: 24.6.0.dev2024120306 build: 3.11release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120221-3.11release.conda - sha256: 94e7c54833fe42f2c3b2992b3231e1d4bbfeb1d5705da5bd544bad51881f448d - md5: da44758bc2124cab1e00d67ba6c23235 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120306-3.11release.conda + sha256: ba069825f4ef3ee3eb8079b652666d0a4d80ddf76e0cfe12782bb88f630d181a + md5: d6beb27837f451771445062607b45f38 depends: - - max-core ==24.6.0.dev2024120221 release + - max-core ==24.6.0.dev2024120306 release - python 3.11.* - pillow - fastapi - httpx - numpy >=1.18,<2.0 + - huggingface_hub - opentelemetry-api - opentelemetry-exporter-otlp-proto-http >=1.27.0 - opentelemetry-exporter-prometheus >=0.48b0 @@ -5964,23 +5970,24 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 132240625 - timestamp: 1733176232460 + size: 132245621 + timestamp: 1733209293581 - kind: conda name: max-python - version: 24.6.0.dev2024120221 + version: 24.6.0.dev2024120306 build: 3.11release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120221-3.11release.conda - sha256: fe72ff98e438f7b8d6d6331821de8eab4cc6a97cdb89db0bd68001ba69d1e6ad - md5: c453413d6473cab3e8153f7503ab43f2 + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120306-3.11release.conda + sha256: e9ca73474ecae1d88742e3f38067741ad532bea307d92ef8bbc4b03434e71502 + md5: 7cfbd7cb82332bc7e992f1297d0fb9a3 depends: - - max-core ==24.6.0.dev2024120221 release + - max-core ==24.6.0.dev2024120306 release - python 3.11.* - pillow - fastapi - httpx - numpy >=1.18,<2.0 + - huggingface_hub - opentelemetry-api - opentelemetry-exporter-otlp-proto-http >=1.27.0 - opentelemetry-exporter-prometheus >=0.48b0 @@ -5997,17 +6004,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 119198780 - timestamp: 1733176012958 + size: 119124363 + timestamp: 1733209020081 - kind: conda name: mblack - version: 24.6.0.dev2024120221 + version: 24.6.0.dev2024120306 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120221-release.conda - sha256: 5d3b01c8332faf96e9d95f5ea2bf7ac1f528279326717103d9e3cf0a53a0dd58 - md5: a4660d8dd8037b8c090b028271d18e14 + url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120306-release.conda + sha256: 35b22caab89b65a52b9e7877762a58bba8cd21137ac1383e268b8a2ae45173ac + md5: f77eafd932de3ae309643ea716ba3c3a depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -6017,8 +6024,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130643 - timestamp: 1733176232459 + size: 130649 + timestamp: 1733209293580 - kind: conda name: mdurl version: 0.1.2 @@ -6036,21 +6043,21 @@ packages: timestamp: 1704317789138 - kind: conda name: mojo-jupyter - version: 24.6.0.dev2024120221 + version: 24.6.0.dev2024120306 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120221-release.conda - sha256: 93bb896b09ee00dd8aaeb842dc73939e8c990bb14ba71e8c952fca318c235b0a - md5: 9f4dbbf9e29a9fc89154906e388c037b + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120306-release.conda + sha256: dd1fcd4298ef08be4507931babe70d6b335dc28d5ead602460747edc4f10c2dc + md5: 8bb40dfabe84757d93d3053fdf4b0a58 depends: - - max-core ==24.6.0.dev2024120221 release + - max-core ==24.6.0.dev2024120306 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22931 - timestamp: 1733176232460 + size: 22940 + timestamp: 1733209293581 - kind: conda name: multidict version: 6.1.0 @@ -6107,61 +6114,59 @@ packages: timestamp: 1729065776220 - kind: conda name: multiprocess - version: 0.70.16 - build: py311h460d6c5_1 + version: 0.70.15 + build: py311h459d7ec_1 build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/multiprocess-0.70.16-py311h460d6c5_1.conda - sha256: 8cf03e51901ed44f143f1ad380968a547651790e2dbb678a90bc2f49fd5cd405 - md5: 7851a81d1c0c85a4336fcdb886ed0651 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.15-py311h459d7ec_1.conda + sha256: eca27e6fb5fb4ee73f04ae030bce29f5daa46fea3d6abdabb91740646f0d188e + md5: cebd02a02b199549a57e0d70aed7e2dc depends: - - __osx >=11.0 - - dill >=0.3.8 + - dill >=0.3.6 + - libgcc-ng >=12 - python >=3.11,<3.12.0a0 - - python >=3.11,<3.12.0a0 *_cpython - python_abi 3.11.* *_cp311 license: BSD-3-Clause license_family: BSD - size: 347445 - timestamp: 1724954943593 + size: 339543 + timestamp: 1695459055911 - kind: conda name: multiprocess - version: 0.70.16 - build: py311h9ecbd09_1 + version: 0.70.15 + build: py311hcd402e7_1 build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.16-py311h9ecbd09_1.conda - sha256: 54120261b227080f1eee580e7e48aba2951769f8a1735592df9e427cd5c99df0 - md5: 335ef38862ce33e7cd4547c8d698c7ae + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.15-py311hcd402e7_1.conda + sha256: 126190f2f981ea84cbf891a2ff6ff52e1bdd681c48392db40b79da0e9e786af8 + md5: bd07035dd460220466bcab62cefced4d depends: - - __glibc >=2.17,<3.0.a0 - - dill >=0.3.8 - - libgcc >=13 + - dill >=0.3.6 + - libgcc-ng >=12 - python >=3.11,<3.12.0a0 + - python >=3.11,<3.12.0a0 *_cpython - python_abi 3.11.* *_cp311 license: BSD-3-Clause license_family: BSD - size: 348294 - timestamp: 1724954751583 + size: 339518 + timestamp: 1695459050286 - kind: conda name: multiprocess - version: 0.70.16 - build: py311ha879c10_1 + version: 0.70.15 + build: py311heffc1b2_1 build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.16-py311ha879c10_1.conda - sha256: 5ae2f030001fc628a80f8fa0d3229e98e771074d57035307735ae2228f22f8bc - md5: 660b134f348dcc4cc18268b26751a65a + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/multiprocess-0.70.15-py311heffc1b2_1.conda + sha256: 1bf6f7bd6b3515f26fbd977ad26bfb7012516fb3854fe9f2d715a6fbbf28a5de + md5: 68b2ed99d42d6eea3cecd25b6a151cc9 depends: - - dill >=0.3.8 - - libgcc >=13 + - dill >=0.3.6 - python >=3.11,<3.12.0a0 - python >=3.11,<3.12.0a0 *_cpython - python_abi 3.11.* *_cp311 license: BSD-3-Clause license_family: BSD - size: 349109 - timestamp: 1724954811644 + size: 339630 + timestamp: 1695459263809 - kind: conda name: mypy_extensions version: 1.0.0 @@ -6655,19 +6660,19 @@ packages: - kind: conda name: packaging version: '24.2' - build: pyhff2d567_1 - build_number: 1 + build: pyhd8ed1ab_2 + build_number: 2 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhff2d567_1.conda - sha256: 74843f871e5cd8a1baf5ed8c406c571139c287141efe532f8ffbdafa3664d244 - md5: 8508b703977f4c4ada34d657d051972c + url: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + sha256: da157b19bcd398b9804c5c52fc000fcb8ab0525bdb9c70f95beaa0bb42f85af1 + md5: 3bfed7e6228ebf2f7b9eaa47f1b4e2aa depends: - python >=3.8 license: Apache-2.0 license_family: APACHE - size: 60380 - timestamp: 1731802602808 + size: 60164 + timestamp: 1733203368787 - kind: conda name: pandas version: 2.2.3 @@ -7151,18 +7156,20 @@ packages: - kind: conda name: pycparser version: '2.22' - build: pyhd8ed1ab_0 + build: pyh29332c3_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda - sha256: 406001ebf017688b1a1554b49127ca3a4ac4626ec0fd51dc75ffa4415b720b64 - md5: 844d9eb3b43095b031874477f7d70088 + url: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda + sha256: 79db7928d13fab2d892592223d7570f5061c192f27b9febd1a418427b719acc6 + md5: 12c566707c80111f9799308d9e265aef depends: - - python >=3.8 + - python >=3.9 + - python license: BSD-3-Clause license_family: BSD - size: 105098 - timestamp: 1711811634025 + size: 110100 + timestamp: 1733195786147 - kind: conda name: pydantic version: 2.10.2 @@ -7435,19 +7442,19 @@ packages: - kind: conda name: python-dateutil version: 2.9.0.post0 - build: pyhff2d567_0 + build: pyhff2d567_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_0.conda - sha256: 3888012c5916efaef45d503e3e544bbcc571b84426c1bb9577799ada9efefb54 - md5: b6dfd90a2141e573e4b6a81630b56df5 + url: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + sha256: a50052536f1ef8516ed11a844f9413661829aa083304dc624c5925298d078d79 + md5: 5ba79d7c71f03c678c8ead841f347d6e depends: - python >=3.9 - six >=1.5 license: Apache-2.0 - license_family: APACHE - size: 221925 - timestamp: 1731919374686 + size: 222505 + timestamp: 1733215763718 - kind: conda name: python-dotenv version: 1.0.1 @@ -7889,24 +7896,24 @@ packages: - kind: conda name: requests version: 2.32.3 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_0.conda - sha256: 5845ffe82a6fa4d437a2eae1e32a1ad308d7ad349f61e337c0a890fe04c513cc - md5: 5ede4753180c7a550a443c430dc8ab52 + url: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda + sha256: d701ca1136197aa121bbbe0e8c18db6b5c94acbd041c2b43c70e5ae104e1d8ad + md5: a9b9368f3701a417eac9edbcae7cb737 depends: - certifi >=2017.4.17 - charset-normalizer >=2,<4 - idna >=2.5,<4 - - python >=3.8 + - python >=3.9 - urllib3 >=1.21.1,<3 constrains: - chardet >=3.0.2,<6 license: Apache-2.0 - license_family: APACHE - size: 58810 - timestamp: 1717057174842 + size: 58723 + timestamp: 1733217126197 - kind: conda name: rich version: 13.9.4 @@ -8047,18 +8054,19 @@ packages: - kind: conda name: six version: 1.16.0 - build: pyh6c4a22f_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 - sha256: a85c38227b446f42c5b90d9b642f2c0567880c15d72492d8da074a59c8f91dd6 - md5: e5f25f8dbc060e9a8d912e432202afc2 + url: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyhd8ed1ab_1.conda + sha256: 761b96fe7bea080b9c35dd2f87f788eb94b61d462645bd16f361e80ae0ff017c + md5: a516da6cfe1ec0a55e49737f017b4965 depends: - - python + - python >=3.9 license: MIT license_family: MIT - size: 14259 - timestamp: 1620240338595 + size: 16385 + timestamp: 1733216901349 - kind: conda name: snappy version: 1.2.1 @@ -8472,22 +8480,23 @@ packages: - kind: conda name: urllib3 version: 2.2.3 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_0.conda - sha256: b6bb34ce41cd93956ad6eeee275ed52390fb3788d6c75e753172ea7ac60b66e5 - md5: 6b55867f385dd762ed99ea687af32a69 + url: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_1.conda + sha256: 416e30a1c3262275f01a3e22e783118d9e9d2872a739a9ed860d06fa9c7593d5 + md5: 4a2d8ef7c37b8808c5b9b750501fffce depends: - brotli-python >=1.0.9 - h2 >=4,<5 - pysocks >=1.5.6,<2.0,!=1.5.7 - - python >=3.8 + - python >=3.9 - zstandard >=0.18.0 license: MIT license_family: MIT - size: 98076 - timestamp: 1726496531769 + size: 98077 + timestamp: 1733206968917 - kind: conda name: uvicorn version: 0.32.1 diff --git a/examples/notebooks/magic.lock b/examples/notebooks/magic.lock index b3eba37aed..5d068575a5 100644 --- a/examples/notebooks/magic.lock +++ b/examples/notebooks/magic.lock @@ -16,7 +16,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/argon2-cffi-bindings-21.2.0-py312h66e93f0_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/asgiref-3.8.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/asgiref-3.8.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda @@ -54,17 +54,17 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-3.1.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.9-py312h2ec8cdc_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.1.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.8-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/entrypoints-0.4-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_0.conda + - 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_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.5-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.5-pyhd8ed1ab_1.conda @@ -72,7 +72,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_0.tar.bz2 - 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 - - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.9.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gflags-2.2.2-h5888daf_1005.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/glog-0.7.1-hbabe93e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda @@ -84,7 +84,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-7.0.2-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.4.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh3099207_0.conda @@ -166,15 +166,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120221-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120221-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120221-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120221-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120306-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120306-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120306-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120306-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.0.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120221-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120306-release.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/multiprocess-0.70.16-py312h66e93f0_1.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_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.4-pyhd8ed1ab_1.conda @@ -198,7 +198,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-util-http-0.49b2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/orc-2.0.3-he039a57_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.2-py312h1d6d2e6_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_0.conda @@ -219,7 +219,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-18.1.0-py312h7900ff3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-18.1.0-py312h01725c0_0_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.2-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.27.1-py312h12e396e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.6.1-pyh3cfb1c2_0.conda @@ -227,7 +227,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/pyinstrument-5.0.0-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.7-hc5c86c4_0_cpython.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda @@ -235,14 +235,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python-xxhash-3.5.0-py312h66e93f0_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py312h66e93f0_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.0-py312hbf22597_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/re2-2024.07.02-h77b4e00_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.35.1-pyhd8ed1ab_0.conda - 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_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/rfc3339-validator-0.1.4-pyhd8ed1ab_0.tar.bz2 - 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_0.conda @@ -252,7 +252,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh0d859eb_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_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-ha2e4443_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.5-pyhd8ed1ab_1.conda @@ -277,7 +277,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/uvloop-0.21.0-py312h66e93f0_1.conda @@ -309,7 +309,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/argon2-cffi-bindings-21.2.0-py312hb2c0f52_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/asgiref-3.8.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/asgiref-3.8.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda @@ -347,17 +347,17 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-3.1.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/debugpy-1.8.9-py312h6f74592_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.1.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.8-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/entrypoints-0.4-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_0.conda + - 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_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.5-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.5-pyhd8ed1ab_1.conda @@ -365,7 +365,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_0.tar.bz2 - 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 - - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.9.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gflags-2.2.2-h5ad3122_1005.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/glog-0.7.1-h468a4a4_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda @@ -378,7 +378,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-7.0.2-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.4.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh3099207_0.conda @@ -460,15 +460,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.2-py312h74ce7d3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120221-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120221-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120221-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120221-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120306-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120306-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120306-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120306-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.0.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120221-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120306-release.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/multiprocess-0.70.16-py312hb2c0f52_1.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_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.4-pyhd8ed1ab_1.conda @@ -492,7 +492,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-util-http-0.49b2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/orc-2.0.3-h90de224_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pandas-2.2.2-py312h14eacfc_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_0.conda @@ -513,7 +513,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-18.1.0-py312h8025657_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-18.1.0-py312h66f7834_0_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.2-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pydantic-core-2.27.1-py312h8cbf658_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.6.1-pyh3cfb1c2_0.conda @@ -521,7 +521,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyinstrument-5.0.0-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.7-h5d932e8_0_cpython.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda @@ -529,14 +529,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-xxhash-3.5.0-py312h52516f5_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.12-5_cp312.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyyaml-6.0.2-py312hb2c0f52_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyzmq-26.2.0-py312h2427ae1_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/re2-2024.07.02-h2d3a13d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8fc344f_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.35.1-pyhd8ed1ab_0.conda - 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_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/rfc3339-validator-0.1.4-pyhd8ed1ab_0.tar.bz2 - 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_0.conda @@ -546,7 +546,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh0d859eb_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_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-h1088aeb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.5-pyhd8ed1ab_1.conda @@ -571,7 +571,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/uvloop-0.21.0-py312hb2c0f52_1.conda @@ -603,7 +603,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/argon2-cffi-bindings-21.2.0-py312h024a12e_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/asgiref-3.8.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/asgiref-3.8.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda @@ -641,17 +641,17 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-3.1.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/debugpy-1.8.9-py312hd8f9ff3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.1.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.8-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/entrypoints-0.4-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_0.conda + - 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_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.5-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.5-pyhd8ed1ab_1.conda @@ -659,7 +659,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_0.tar.bz2 - 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 - - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.9.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gflags-2.2.2-hf9b8971_1005.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/glog-0.7.1-heb240a5_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda @@ -671,7 +671,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-7.0.2-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.4.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh57ce528_0.conda @@ -745,15 +745,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312ha0ccf2a_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120221-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120221-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120221-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120221-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120306-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120306-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120306-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120306-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.0.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120221-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120306-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.16-py312h024a12e_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_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.4-pyhd8ed1ab_1.conda @@ -777,7 +777,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-util-http-0.49b2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/orc-2.0.3-h121fd32_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.2-py312h8ae5369_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_0.conda @@ -798,7 +798,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-18.1.0-py312h1f38498_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-18.1.0-py312hc40f475_0_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.2-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.27.1-py312hcd83bfe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.6.1-pyh3cfb1c2_0.conda @@ -808,7 +808,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-framework-cocoa-10.3.2-py312hb9d441b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.7-h739c21a_0_cpython.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda @@ -816,14 +816,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-xxhash-3.5.0-py312h024a12e_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-5_cp312.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py312h024a12e_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.0-py312hf8a1cbd_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/re2-2024.07.02-hcd0e937_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h92ec313_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.35.1-pyhd8ed1ab_0.conda - 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_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/rfc3339-validator-0.1.4-pyhd8ed1ab_0.tar.bz2 - 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_0.conda @@ -832,7 +832,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh31c8845_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_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-hd02b534_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.5-pyhd8ed1ab_1.conda @@ -857,7 +857,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/uvloop-0.21.0-py312h0bf5046_1.conda @@ -1178,19 +1178,20 @@ packages: - kind: conda name: asgiref version: 3.8.1 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/asgiref-3.8.1-pyhd8ed1ab_0.conda - sha256: 85fc8f54361b922d744c8728a7a711cab390b78941e18a3570dabfac8169e5f9 - md5: b5c2e1034ccc76fb14031637924880eb + url: https://conda.anaconda.org/conda-forge/noarch/asgiref-3.8.1-pyhd8ed1ab_1.conda + sha256: c8d51a32f3530e3ca176d8f7bf5621c68c7c1c03fe9cc5c3c49d8ba4a1248f43 + md5: 21187c8276f87b6aedfe63c267a6eed7 depends: - - python >=3.8 + - python >=3.9 - typing_extensions >=4 license: BSD-3-Clause license_family: BSD - size: 26347 - timestamp: 1711269034814 + size: 26436 + timestamp: 1733215704904 - kind: conda name: asttokens version: 3.0.0 @@ -2668,33 +2669,33 @@ packages: timestamp: 1710320435158 - kind: conda name: datasets - version: 3.1.0 - build: pyhff2d567_0 + version: 2.14.4 + build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/datasets-3.1.0-pyhff2d567_0.conda - sha256: c3329f96a797fcec28a0bc42372bb253ce6434cbd6d9b5dc8e8417a247c43027 - md5: cd6278d231cd340f2f0c600037df5a98 + url: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda + sha256: 7e09bd083a609138b780fcc4535924cb96814d2c908a36d4c64a2ba9ee3efe7f + md5: 3e087f072ce03c43a9b60522f5d0ca2f depends: - aiohttp - - dill >=0.3.0,<0.3.9 - - filelock - - fsspec >=2023.1.0,<=2024.9.0 - - huggingface_hub >=0.23.0 - - multiprocess <0.70.17 + - dill >=0.3.0,<0.3.8 + - fsspec >=2021.11.1 + - huggingface_hub >=0.14.0,<1.0.0 + - importlib-metadata + - multiprocess - numpy >=1.17 - packaging - pandas - - pyarrow >=15.0.0 - - python >=3.9 + - pyarrow >=8.0.0 + - python >=3.8.0 - python-xxhash - pyyaml >=5.1 - - requests >=2.32.2 - - tqdm >=4.66.3 + - requests >=2.19.0 + - tqdm >=4.62.1 license: Apache-2.0 license_family: Apache - size: 332680 - timestamp: 1731706749584 + size: 347303 + timestamp: 1691593908658 - kind: conda name: debugpy version: 1.8.9 @@ -2797,19 +2798,19 @@ packages: timestamp: 1731836933516 - kind: conda name: dill - version: 0.3.8 + version: 0.3.7 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.8-pyhd8ed1ab_0.conda - sha256: 482b5b566ca559119b504c53df12b08f3962a5ef8e48061d62fd58a47f8f2ec4 - md5: 78745f157d56877a2c6e7b386f66f3e2 + url: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda + sha256: 4ff20c6be028be2825235631c45d9e4a75bca1de65f8840c02dfb28ea0137c45 + md5: 5e4f3466526c52bc9af2d2353a1460bd depends: - python >=3.7 license: BSD-3-Clause license_family: BSD - size: 88169 - timestamp: 1706434833883 + size: 87553 + timestamp: 1690101185422 - kind: conda name: dnspython version: 2.7.0 @@ -2883,17 +2884,18 @@ packages: - kind: conda name: exceptiongroup version: 1.2.2 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_0.conda - sha256: e0edd30c4b7144406bb4da975e6bb97d6bc9c0e999aa4efe66ae108cada5d5b5 - md5: d02ae936e42063ca46af6cdad2dbd1e0 + url: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda + sha256: cbde2c64ec317118fc06b223c5fd87c8a680255e7348dd60e7b292d2e103e701 + md5: a16662747cdeb9abbac74d0057cc976e depends: - - python >=3.7 + - python >=3.9 license: MIT and PSF-2.0 - size: 20418 - timestamp: 1720869435725 + size: 20486 + timestamp: 1733208916977 - kind: conda name: executing version: 2.1.0 @@ -3081,19 +3083,19 @@ packages: timestamp: 1729699642726 - kind: conda name: fsspec - version: 2024.9.0 + version: 2024.10.0 build: pyhff2d567_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.9.0-pyhff2d567_0.conda - sha256: 8f4e9805b4ec223dea0d99f9e7e57c391d9026455eb9f0d6e0784c5d1a1200dc - md5: ace4329fbff4c69ab0309db6da182987 + url: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhff2d567_0.conda + sha256: 40bb76981dd49d5869b48925a8975bb7bbe4e33e1e40af4ec06f6bf4a62effd7 + md5: 816dbc4679a64e4417cd1385d661bb31 depends: - python >=3.8 license: BSD-3-Clause license_family: BSD - size: 134378 - timestamp: 1725543368393 + size: 134745 + timestamp: 1729608972363 - kind: conda name: gflags version: 2.2.2 @@ -3366,6 +3368,7 @@ packages: - typing-extensions >=3.7.4.3 - typing_extensions >=3.7.4.3 license: Apache-2.0 + license_family: APACHE size: 274858 timestamp: 1733170279930 - kind: conda @@ -3401,18 +3404,19 @@ packages: - kind: conda name: idna version: '3.10' - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_0.conda - sha256: 8c57fd68e6be5eecba4462e983aed7e85761a519aab80e834bbd7794d4b545b2 - md5: 7ba2ede0e7c795ff95088daf0dc59753 + url: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda + sha256: d7a472c9fd479e2e8dcb83fb8d433fce971ea369d704ece380e876f9c3494e87 + md5: 39a4f67be3286c86d696df570b1201b7 depends: - - python >=3.6 + - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 49837 - timestamp: 1726459583613 + size: 49765 + timestamp: 1733211921194 - kind: conda name: importlib-metadata version: 7.0.2 @@ -6859,81 +6863,82 @@ packages: timestamp: 1713250613726 - kind: conda name: max - version: 24.6.0.dev2024120221 + version: 24.6.0.dev2024120306 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120221-release.conda - sha256: 71b02d0afbd2dfa49633f0dff4cdc1a94392abc344668636b90656060117384e - md5: fa3d1a799da8e216b9448fd2246655f3 + url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120306-release.conda + sha256: 2aae2a8286dca29453e8cc8cfe13511aa016a521ac0c9201ceb24d1ba6c4138e + md5: 9c25081ace6ad2c13675cf0123109cb9 depends: - - max-core ==24.6.0.dev2024120221 release - - max-python >=24.6.0.dev2024120221,<25.0a0 - - mojo-jupyter ==24.6.0.dev2024120221 release - - mblack ==24.6.0.dev2024120221 release + - max-core ==24.6.0.dev2024120306 release + - max-python >=24.6.0.dev2024120306,<25.0a0 + - mojo-jupyter ==24.6.0.dev2024120306 release + - mblack ==24.6.0.dev2024120306 release license: LicenseRef-Modular-Proprietary - size: 9927 - timestamp: 1733176232456 + size: 9929 + timestamp: 1733209293577 - kind: conda name: max-core - version: 24.6.0.dev2024120221 + version: 24.6.0.dev2024120306 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120221-release.conda - sha256: e7362f447478b8f8a4ce9f6e4a38c7b519c4fdd81cbcb6cd0bfded3cfb3399eb - md5: 646d3f60af8b7d77a29ea74c80b73abe + url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120306-release.conda + sha256: a82534696c6e078fb4e14b4b0f058336ffd0a647f7404e85aaee18eec25be067 + md5: c249d77d8e5885dd0eacd9028131413f depends: - - mblack ==24.6.0.dev2024120221 release + - mblack ==24.6.0.dev2024120306 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 254782923 - timestamp: 1733176189897 + size: 254711372 + timestamp: 1733209193854 - kind: conda name: max-core - version: 24.6.0.dev2024120221 + version: 24.6.0.dev2024120306 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120221-release.conda - sha256: 38a17e51fc0bc077d19e9829a0d901dfef581c13a4b3b5238fbc509c5e495119 - md5: 762d1a967090c478c15e8182ee077eac + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120306-release.conda + sha256: bd0858a3e2069a86cd71370322e7ac26ad3948225e4f0811e4fbf8771d44d0ea + md5: e5b6ae7316dc2b08a52cee8f27b4f484 depends: - - mblack ==24.6.0.dev2024120221 release + - mblack ==24.6.0.dev2024120306 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 258409140 - timestamp: 1733176232454 + size: 258488596 + timestamp: 1733209293575 - kind: conda name: max-core - version: 24.6.0.dev2024120221 + version: 24.6.0.dev2024120306 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120221-release.conda - sha256: 81d2491a6299f97cb6f9847169f71eb344e5deec11755819e4124b054ec69c4c - md5: 0b95fc4831992260253ee5e3c83f3382 + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120306-release.conda + sha256: 88b5f2cbb2724067d33b10515613ec845f134c3758fd063852ac191a276d7812 + md5: 05acbd2d9cf25aa913a979aa9802c194 depends: - - mblack ==24.6.0.dev2024120221 release + - mblack ==24.6.0.dev2024120306 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 220306895 - timestamp: 1733176012956 + size: 220248523 + timestamp: 1733209020078 - kind: conda name: max-python - version: 24.6.0.dev2024120221 + version: 24.6.0.dev2024120306 build: 3.12release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120221-3.12release.conda - sha256: eff8e0d757d2ff4398c11357f2f6018cd32bfe01b7f7b9a40eb6848b7150eee5 - md5: d11c807bdfab1a9ec1d8d60ae4966f6f + url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120306-3.12release.conda + sha256: 78dc00af885799e8c1f92185a505aee022f2ffd7191d24fa94ef428457f53e15 + md5: 4bdce0c1dd562e22566551d578103d2f depends: - - max-core ==24.6.0.dev2024120221 release + - max-core ==24.6.0.dev2024120306 release - python 3.12.* - pillow - fastapi - httpx - numpy >=1.18,<2.0 + - huggingface_hub - opentelemetry-api - opentelemetry-exporter-otlp-proto-http >=1.27.0 - opentelemetry-exporter-prometheus >=0.48b0 @@ -6950,23 +6955,24 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 128533716 - timestamp: 1733176189912 + size: 128537272 + timestamp: 1733209193862 - kind: conda name: max-python - version: 24.6.0.dev2024120221 + version: 24.6.0.dev2024120306 build: 3.12release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120221-3.12release.conda - sha256: c9314e3c7be3e6913345141b05beb7868e6a35dad199472c64a0b9137bc89aa2 - md5: f7e5f66871aa60909394a02ab2344f64 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120306-3.12release.conda + sha256: 3910ceb9135f2258df30dd7a5d87b8f80a284645d6da48daa0e9bb145a49744e + md5: e7d3ebeaaeb2bd99167fda861a7e7aba depends: - - max-core ==24.6.0.dev2024120221 release + - max-core ==24.6.0.dev2024120306 release - python 3.12.* - pillow - fastapi - httpx - numpy >=1.18,<2.0 + - huggingface_hub - opentelemetry-api - opentelemetry-exporter-otlp-proto-http >=1.27.0 - opentelemetry-exporter-prometheus >=0.48b0 @@ -6983,23 +6989,24 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 132227870 - timestamp: 1733176232462 + size: 132223349 + timestamp: 1733209293584 - kind: conda name: max-python - version: 24.6.0.dev2024120221 + version: 24.6.0.dev2024120306 build: 3.12release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120221-3.12release.conda - sha256: 781843479c4ff561f1963df894c76fbc4e623e16dba02ca90a9facdfa2f5d20a - md5: 10517bdbac80736a742077a261e535b6 + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120306-3.12release.conda + sha256: ddafa4f7201fca06f38e8a0232cdbbb918d6a24c03cb25a0137d4fcc0ca9f354 + md5: 9859f8c88c81c18baaddd15be03d259c depends: - - max-core ==24.6.0.dev2024120221 release + - max-core ==24.6.0.dev2024120306 release - python 3.12.* - pillow - fastapi - httpx - numpy >=1.18,<2.0 + - huggingface_hub - opentelemetry-api - opentelemetry-exporter-otlp-proto-http >=1.27.0 - opentelemetry-exporter-prometheus >=0.48b0 @@ -7016,17 +7023,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 119173532 - timestamp: 1733176012959 + size: 119113363 + timestamp: 1733209020082 - kind: conda name: mblack - version: 24.6.0.dev2024120221 + version: 24.6.0.dev2024120306 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120221-release.conda - sha256: 5d3b01c8332faf96e9d95f5ea2bf7ac1f528279326717103d9e3cf0a53a0dd58 - md5: a4660d8dd8037b8c090b028271d18e14 + url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120306-release.conda + sha256: 35b22caab89b65a52b9e7877762a58bba8cd21137ac1383e268b8a2ae45173ac + md5: f77eafd932de3ae309643ea716ba3c3a depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -7036,8 +7043,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130643 - timestamp: 1733176232459 + size: 130649 + timestamp: 1733209293580 - kind: conda name: mdurl version: 0.1.2 @@ -7070,21 +7077,21 @@ packages: timestamp: 1698947249750 - kind: conda name: mojo-jupyter - version: 24.6.0.dev2024120221 + version: 24.6.0.dev2024120306 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120221-release.conda - sha256: 93bb896b09ee00dd8aaeb842dc73939e8c990bb14ba71e8c952fca318c235b0a - md5: 9f4dbbf9e29a9fc89154906e388c037b + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120306-release.conda + sha256: dd1fcd4298ef08be4507931babe70d6b335dc28d5ead602460747edc4f10c2dc + md5: 8bb40dfabe84757d93d3053fdf4b0a58 depends: - - max-core ==24.6.0.dev2024120221 release + - max-core ==24.6.0.dev2024120306 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22931 - timestamp: 1733176232460 + size: 22940 + timestamp: 1733209293581 - kind: conda name: multidict version: 6.1.0 @@ -7141,61 +7148,59 @@ packages: timestamp: 1729065664275 - kind: conda name: multiprocess - version: 0.70.16 - build: py312h024a12e_1 + version: 0.70.15 + build: py312h02f2b3b_1 build_number: 1 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/multiprocess-0.70.16-py312h024a12e_1.conda - sha256: d19a1c8b3fd44414657066becba960143e7115a385fb71b941f7e9c74f066a32 - md5: fd83a478d686df79aa394b9db1ad20b5 + url: https://conda.anaconda.org/conda-forge/osx-arm64/multiprocess-0.70.15-py312h02f2b3b_1.conda + sha256: 8041371e3ec3fbc2ca13c71b0180672896e6382e62892d9f6b11a4c5dd675951 + md5: 910ef2223c71902175418d9163152788 depends: - - __osx >=11.0 - - dill >=0.3.8 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython + - dill >=0.3.6 + - python >=3.12.0rc3,<3.13.0a0 + - python >=3.12.0rc3,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 license: BSD-3-Clause license_family: BSD - size: 342831 - timestamp: 1724954807776 + size: 335147 + timestamp: 1695459275360 - kind: conda name: multiprocess - version: 0.70.16 - build: py312h66e93f0_1 + version: 0.70.15 + build: py312h98912ed_1 build_number: 1 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.16-py312h66e93f0_1.conda - sha256: 459092c4e9305e00a0207b764a266c9caa14d82196322b2a74c96028c563a809 - md5: efe4a3f62320156f68579362314009f3 + url: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.15-py312h98912ed_1.conda + sha256: bb612a921fafda6375a2204ffebd8811db8dd3b8f25ac9886cc9bcbff7e3664e + md5: 5a64b9f44790d9a187a85366dd0ffa8d depends: - - __glibc >=2.17,<3.0.a0 - - dill >=0.3.8 - - libgcc >=13 - - python >=3.12,<3.13.0a0 + - dill >=0.3.6 + - libgcc-ng >=12 + - python >=3.12.0rc3,<3.13.0a0 - python_abi 3.12.* *_cp312 license: BSD-3-Clause license_family: BSD - size: 340540 - timestamp: 1724954755987 + size: 335666 + timestamp: 1695459025249 - kind: conda name: multiprocess - version: 0.70.16 - build: py312hb2c0f52_1 + version: 0.70.15 + build: py312hdd3e373_1 build_number: 1 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.16-py312hb2c0f52_1.conda - sha256: f93627c78d1f86f593350196699b462c334542477aa55fe0212edf45392c9ab4 - md5: 642c63b684ce5614f157572b04816983 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.15-py312hdd3e373_1.conda + sha256: c53362cdf346f314e111faddc53061e3fd2ece0ba68ca303f5dd109976df158f + md5: 173a1692d2b3ddc265dc6afd21a869b3 depends: - - dill >=0.3.8 - - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython + - dill >=0.3.6 + - libgcc-ng >=12 + - python >=3.12.0rc3,<3.13.0a0 + - python >=3.12.0rc3,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 license: BSD-3-Clause license_family: BSD - size: 341428 - timestamp: 1724954862644 + size: 336110 + timestamp: 1695459137796 - kind: conda name: mypy_extensions version: 1.0.0 @@ -7809,19 +7814,19 @@ packages: - kind: conda name: packaging version: '24.2' - build: pyhff2d567_1 - build_number: 1 + build: pyhd8ed1ab_2 + build_number: 2 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhff2d567_1.conda - sha256: 74843f871e5cd8a1baf5ed8c406c571139c287141efe532f8ffbdafa3664d244 - md5: 8508b703977f4c4ada34d657d051972c + url: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + sha256: da157b19bcd398b9804c5c52fc000fcb8ab0525bdb9c70f95beaa0bb42f85af1 + md5: 3bfed7e6228ebf2f7b9eaa47f1b4e2aa depends: - python >=3.8 license: Apache-2.0 license_family: APACHE - size: 60380 - timestamp: 1731802602808 + size: 60164 + timestamp: 1733203368787 - kind: conda name: pandas version: 2.2.2 @@ -8492,18 +8497,20 @@ packages: - kind: conda name: pycparser version: '2.22' - build: pyhd8ed1ab_0 + build: pyh29332c3_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda - sha256: 406001ebf017688b1a1554b49127ca3a4ac4626ec0fd51dc75ffa4415b720b64 - md5: 844d9eb3b43095b031874477f7d70088 + url: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda + sha256: 79db7928d13fab2d892592223d7570f5061c192f27b9febd1a418427b719acc6 + md5: 12c566707c80111f9799308d9e265aef depends: - - python >=3.8 + - python >=3.9 + - python license: BSD-3-Clause license_family: BSD - size: 105098 - timestamp: 1711811634025 + size: 110100 + timestamp: 1733195786147 - kind: conda name: pydantic version: 2.10.2 @@ -8701,6 +8708,7 @@ packages: - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 license: MIT + license_family: MIT size: 380414 timestamp: 1733168930888 - kind: conda @@ -8810,19 +8818,19 @@ packages: - kind: conda name: python-dateutil version: 2.9.0.post0 - build: pyhff2d567_0 + build: pyhff2d567_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_0.conda - sha256: 3888012c5916efaef45d503e3e544bbcc571b84426c1bb9577799ada9efefb54 - md5: b6dfd90a2141e573e4b6a81630b56df5 + url: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + sha256: a50052536f1ef8516ed11a844f9413661829aa083304dc624c5925298d078d79 + md5: 5ba79d7c71f03c678c8ead841f347d6e depends: - python >=3.9 - six >=1.5 license: Apache-2.0 - license_family: APACHE - size: 221925 - timestamp: 1731919374686 + size: 222505 + timestamp: 1733215763718 - kind: conda name: python-dotenv version: 1.0.1 @@ -9002,18 +9010,18 @@ packages: - kind: conda name: pytz version: '2024.2' - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.2-pyhd8ed1ab_0.conda - sha256: 81c16d9183bb4a6780366ce874e567ee5fc903722f85b2f8d1d9479ef1dafcc9 - md5: 260009d03c9d5c0f111904d851f053dc + url: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.2-pyhd8ed1ab_1.conda + sha256: 0a7c706b2eb13f7da5692d9ddf1567209964875710b471de6f2743b33d1ba960 + md5: f26ec986456c30f6dff154b670ae140f depends: - - python >=3.7 + - python >=3.9 license: MIT - license_family: MIT - size: 186995 - timestamp: 1726055625738 + size: 185890 + timestamp: 1733215766006 - kind: conda name: pyyaml version: 6.0.2 @@ -9296,24 +9304,24 @@ packages: - kind: conda name: requests version: 2.32.3 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_0.conda - sha256: 5845ffe82a6fa4d437a2eae1e32a1ad308d7ad349f61e337c0a890fe04c513cc - md5: 5ede4753180c7a550a443c430dc8ab52 + url: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda + sha256: d701ca1136197aa121bbbe0e8c18db6b5c94acbd041c2b43c70e5ae104e1d8ad + md5: a9b9368f3701a417eac9edbcae7cb737 depends: - certifi >=2017.4.17 - charset-normalizer >=2,<4 - idna >=2.5,<4 - - python >=3.8 + - python >=3.9 - urllib3 >=1.21.1,<3 constrains: - chardet >=3.0.2,<6 license: Apache-2.0 - license_family: APACHE - size: 58810 - timestamp: 1717057174842 + size: 58723 + timestamp: 1733217126197 - kind: conda name: rfc3339-validator version: 0.1.4 @@ -9574,18 +9582,19 @@ packages: - kind: conda name: six version: 1.16.0 - build: pyh6c4a22f_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 - sha256: a85c38227b446f42c5b90d9b642f2c0567880c15d72492d8da074a59c8f91dd6 - md5: e5f25f8dbc060e9a8d912e432202afc2 + url: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyhd8ed1ab_1.conda + sha256: 761b96fe7bea080b9c35dd2f87f788eb94b61d462645bd16f361e80ae0ff017c + md5: a516da6cfe1ec0a55e49737f017b4965 depends: - - python + - python >=3.9 license: MIT license_family: MIT - size: 14259 - timestamp: 1620240338595 + size: 16385 + timestamp: 1733216901349 - kind: conda name: snappy version: 1.2.1 @@ -10144,22 +10153,23 @@ packages: - kind: conda name: urllib3 version: 2.2.3 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_0.conda - sha256: b6bb34ce41cd93956ad6eeee275ed52390fb3788d6c75e753172ea7ac60b66e5 - md5: 6b55867f385dd762ed99ea687af32a69 + url: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_1.conda + sha256: 416e30a1c3262275f01a3e22e783118d9e9d2872a739a9ed860d06fa9c7593d5 + md5: 4a2d8ef7c37b8808c5b9b750501fffce depends: - brotli-python >=1.0.9 - h2 >=4,<5 - pysocks >=1.5.6,<2.0,!=1.5.7 - - python >=3.8 + - python >=3.9 - zstandard >=0.18.0 license: MIT license_family: MIT - size: 98076 - timestamp: 1726496531769 + size: 98077 + timestamp: 1733206968917 - kind: conda name: uvicorn version: 0.32.1 diff --git a/examples/operators/magic.lock b/examples/operators/magic.lock index 326d51789b..cdc8aa7faf 100644 --- a/examples/operators/magic.lock +++ b/examples/operators/magic.lock @@ -13,7 +13,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/asgiref-3.8.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/asgiref-3.8.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-hb88c0a9_10.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.0-hecf86a2_2.conda @@ -43,19 +43,19 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-3.1.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.8-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_0.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.5-pyhff2d567_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/filelock-3.16.1-pyhd8ed1ab_0.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 - - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.9.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gflags-2.2.2-h5888daf_1005.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/glog-0.7.1-hbabe93e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda @@ -67,7 +67,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-7.0.2-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_0.conda @@ -131,14 +131,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.9.4-hcb278e6_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120221-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120221-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120221-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120221-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120306-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120306-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120306-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120306-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120221-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120306-release.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/multiprocess-0.70.16-py312h66e93f0_1.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_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-he02047a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda @@ -156,7 +156,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh10f6f8f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-util-http-0.49b2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/orc-2.0.3-he039a57_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.3-py312hf9745cd_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-11.0.0-py312h7b63e92_0.conda @@ -167,7 +167,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-18.1.0-py312h7900ff3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-18.1.0-py312h01725c0_0_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.2-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.27.1-py312h12e396e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.6.1-pyh3cfb1c2_0.conda @@ -175,7 +175,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/pyinstrument-5.0.0-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.7-hc5c86c4_0_cpython.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_0.conda @@ -188,13 +188,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/re2-2024.07.02-h77b4e00_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda - 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_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_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 - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-ha2e4443_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.1.3-pyhd8ed1ab_0.conda @@ -211,7 +211,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/uvloop-0.21.0-py312h66e93f0_1.conda @@ -235,7 +235,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/asgiref-3.8.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/asgiref-3.8.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-hac900a4_10.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.0-h35473ba_2.conda @@ -265,19 +265,19 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-3.1.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.8-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_0.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.5-pyhff2d567_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/filelock-3.16.1-pyhd8ed1ab_0.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 - - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.9.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gflags-2.2.2-h5ad3122_1005.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/glog-0.7.1-h468a4a4_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda @@ -290,7 +290,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-7.0.2-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_0.conda @@ -354,14 +354,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.9.4-hd600fc2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.2-py312h74ce7d3_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120221-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120221-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120221-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120221-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120306-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120306-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120306-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120306-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120221-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120306-release.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/multiprocess-0.70.16-py312hb2c0f52_1.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_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-hcccb83c_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda @@ -379,7 +379,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh10f6f8f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-util-http-0.49b2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/orc-2.0.3-h90de224_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pandas-2.2.3-py312ha2895bd_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pillow-11.0.0-py312h5ab5af3_0.conda @@ -390,7 +390,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pthread-stubs-0.4-h86ecc28_1002.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-18.1.0-py312h8025657_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-18.1.0-py312h66f7834_0_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.2-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pydantic-core-2.27.1-py312h8cbf658_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.6.1-pyh3cfb1c2_0.conda @@ -398,7 +398,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyinstrument-5.0.0-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.7-h5d932e8_0_cpython.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_0.conda @@ -411,13 +411,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/re2-2024.07.02-h2d3a13d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8fc344f_1.conda - 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_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_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 - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-h1088aeb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.1.3-pyhd8ed1ab_0.conda @@ -434,7 +434,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/uvloop-0.21.0-py312hb2c0f52_1.conda @@ -457,7 +457,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/asgiref-3.8.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/asgiref-3.8.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-h9b725a8_10.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.0-h5d7ee29_2.conda @@ -487,19 +487,19 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-3.1.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.8-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_0.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.5-pyhff2d567_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/filelock-3.16.1-pyhd8ed1ab_0.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 - - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.9.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gflags-2.2.2-hf9b8971_1005.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/glog-0.7.1-heb240a5_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda @@ -511,7 +511,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-7.0.2-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_0.conda @@ -567,14 +567,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.9.4-hb7217d7_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312ha0ccf2a_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120221-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120221-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120221-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120221-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120306-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120306-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120306-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120306-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120221-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120306-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.16-py312h024a12e_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_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h7bae524_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda @@ -592,7 +592,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh10f6f8f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-util-http-0.49b2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/orc-2.0.3-h121fd32_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.3-py312hcd31e36_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-11.0.0-py312haf37ca6_0.conda @@ -603,7 +603,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pthread-stubs-0.4-hd74edd7_1002.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-18.1.0-py312h1f38498_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-18.1.0-py312hc40f475_0_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.2-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.27.1-py312hcd83bfe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.6.1-pyh3cfb1c2_0.conda @@ -611,7 +611,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyinstrument-5.0.0-py312h0bf5046_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.7-h739c21a_0_cpython.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_0.conda @@ -624,12 +624,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/re2-2024.07.02-hcd0e937_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h92ec313_1.conda - 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_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_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_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-hd02b534_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.1.3-pyhd8ed1ab_0.conda @@ -646,7 +646,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/uvloop-0.21.0-py312h0bf5046_1.conda @@ -854,19 +854,20 @@ packages: - kind: conda name: asgiref version: 3.8.1 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/asgiref-3.8.1-pyhd8ed1ab_0.conda - sha256: 85fc8f54361b922d744c8728a7a711cab390b78941e18a3570dabfac8169e5f9 - md5: b5c2e1034ccc76fb14031637924880eb + url: https://conda.anaconda.org/conda-forge/noarch/asgiref-3.8.1-pyhd8ed1ab_1.conda + sha256: c8d51a32f3530e3ca176d8f7bf5621c68c7c1c03fe9cc5c3c49d8ba4a1248f43 + md5: 21187c8276f87b6aedfe63c267a6eed7 depends: - - python >=3.8 + - python >=3.9 - typing_extensions >=4 license: BSD-3-Clause license_family: BSD - size: 26347 - timestamp: 1711269034814 + size: 26436 + timestamp: 1733215704904 - kind: conda name: attrs version: 24.2.0 @@ -2215,33 +2216,33 @@ packages: timestamp: 1666700778190 - kind: conda name: datasets - version: 3.1.0 - build: pyhff2d567_0 + version: 2.14.4 + build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/datasets-3.1.0-pyhff2d567_0.conda - sha256: c3329f96a797fcec28a0bc42372bb253ce6434cbd6d9b5dc8e8417a247c43027 - md5: cd6278d231cd340f2f0c600037df5a98 + url: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda + sha256: 7e09bd083a609138b780fcc4535924cb96814d2c908a36d4c64a2ba9ee3efe7f + md5: 3e087f072ce03c43a9b60522f5d0ca2f depends: - aiohttp - - dill >=0.3.0,<0.3.9 - - filelock - - fsspec >=2023.1.0,<=2024.9.0 - - huggingface_hub >=0.23.0 - - multiprocess <0.70.17 + - dill >=0.3.0,<0.3.8 + - fsspec >=2021.11.1 + - huggingface_hub >=0.14.0,<1.0.0 + - importlib-metadata + - multiprocess - numpy >=1.17 - packaging - pandas - - pyarrow >=15.0.0 - - python >=3.9 + - pyarrow >=8.0.0 + - python >=3.8.0 - python-xxhash - pyyaml >=5.1 - - requests >=2.32.2 - - tqdm >=4.66.3 + - requests >=2.19.0 + - tqdm >=4.62.1 license: Apache-2.0 license_family: Apache - size: 332680 - timestamp: 1731706749584 + size: 347303 + timestamp: 1691593908658 - kind: conda name: deprecated version: 1.2.15 @@ -2260,19 +2261,19 @@ packages: timestamp: 1731836933516 - kind: conda name: dill - version: 0.3.8 + version: 0.3.7 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.8-pyhd8ed1ab_0.conda - sha256: 482b5b566ca559119b504c53df12b08f3962a5ef8e48061d62fd58a47f8f2ec4 - md5: 78745f157d56877a2c6e7b386f66f3e2 + url: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda + sha256: 4ff20c6be028be2825235631c45d9e4a75bca1de65f8840c02dfb28ea0137c45 + md5: 5e4f3466526c52bc9af2d2353a1460bd depends: - python >=3.7 license: BSD-3-Clause license_family: BSD - size: 88169 - timestamp: 1706434833883 + size: 87553 + timestamp: 1690101185422 - kind: conda name: dnspython version: 2.7.0 @@ -2331,17 +2332,18 @@ packages: - kind: conda name: exceptiongroup version: 1.2.2 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_0.conda - sha256: e0edd30c4b7144406bb4da975e6bb97d6bc9c0e999aa4efe66ae108cada5d5b5 - md5: d02ae936e42063ca46af6cdad2dbd1e0 + url: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda + sha256: cbde2c64ec317118fc06b223c5fd87c8a680255e7348dd60e7b292d2e103e701 + md5: a16662747cdeb9abbac74d0057cc976e depends: - - python >=3.7 + - python >=3.9 license: MIT and PSF-2.0 - size: 20418 - timestamp: 1720869435725 + size: 20486 + timestamp: 1733208916977 - kind: conda name: fastapi version: 0.115.5 @@ -2498,19 +2500,19 @@ packages: timestamp: 1729699642726 - kind: conda name: fsspec - version: 2024.9.0 + version: 2024.10.0 build: pyhff2d567_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.9.0-pyhff2d567_0.conda - sha256: 8f4e9805b4ec223dea0d99f9e7e57c391d9026455eb9f0d6e0784c5d1a1200dc - md5: ace4329fbff4c69ab0309db6da182987 + url: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhff2d567_0.conda + sha256: 40bb76981dd49d5869b48925a8975bb7bbe4e33e1e40af4ec06f6bf4a62effd7 + md5: 816dbc4679a64e4417cd1385d661bb31 depends: - python >=3.8 license: BSD-3-Clause license_family: BSD - size: 134378 - timestamp: 1725543368393 + size: 134745 + timestamp: 1729608972363 - kind: conda name: gflags version: 2.2.2 @@ -2783,6 +2785,7 @@ packages: - typing-extensions >=3.7.4.3 - typing_extensions >=3.7.4.3 license: Apache-2.0 + license_family: APACHE size: 274858 timestamp: 1733170279930 - kind: conda @@ -2818,18 +2821,19 @@ packages: - kind: conda name: idna version: '3.10' - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_0.conda - sha256: 8c57fd68e6be5eecba4462e983aed7e85761a519aab80e834bbd7794d4b545b2 - md5: 7ba2ede0e7c795ff95088daf0dc59753 + url: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda + sha256: d7a472c9fd479e2e8dcb83fb8d433fce971ea369d704ece380e876f9c3494e87 + md5: 39a4f67be3286c86d696df570b1201b7 depends: - - python >=3.6 + - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 49837 - timestamp: 1726459583613 + size: 49765 + timestamp: 1733211921194 - kind: conda name: importlib-metadata version: 7.0.2 @@ -5840,81 +5844,82 @@ packages: timestamp: 1729351534830 - kind: conda name: max - version: 24.6.0.dev2024120221 + version: 24.6.0.dev2024120306 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120221-release.conda - sha256: 71b02d0afbd2dfa49633f0dff4cdc1a94392abc344668636b90656060117384e - md5: fa3d1a799da8e216b9448fd2246655f3 - depends: - - max-core ==24.6.0.dev2024120221 release - - max-python >=24.6.0.dev2024120221,<25.0a0 - - mojo-jupyter ==24.6.0.dev2024120221 release - - mblack ==24.6.0.dev2024120221 release + url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120306-release.conda + sha256: 2aae2a8286dca29453e8cc8cfe13511aa016a521ac0c9201ceb24d1ba6c4138e + md5: 9c25081ace6ad2c13675cf0123109cb9 + depends: + - max-core ==24.6.0.dev2024120306 release + - max-python >=24.6.0.dev2024120306,<25.0a0 + - mojo-jupyter ==24.6.0.dev2024120306 release + - mblack ==24.6.0.dev2024120306 release license: LicenseRef-Modular-Proprietary - size: 9927 - timestamp: 1733176232456 + size: 9929 + timestamp: 1733209293577 - kind: conda name: max-core - version: 24.6.0.dev2024120221 + version: 24.6.0.dev2024120306 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120221-release.conda - sha256: e7362f447478b8f8a4ce9f6e4a38c7b519c4fdd81cbcb6cd0bfded3cfb3399eb - md5: 646d3f60af8b7d77a29ea74c80b73abe + url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120306-release.conda + sha256: a82534696c6e078fb4e14b4b0f058336ffd0a647f7404e85aaee18eec25be067 + md5: c249d77d8e5885dd0eacd9028131413f depends: - - mblack ==24.6.0.dev2024120221 release + - mblack ==24.6.0.dev2024120306 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 254782923 - timestamp: 1733176189897 + size: 254711372 + timestamp: 1733209193854 - kind: conda name: max-core - version: 24.6.0.dev2024120221 + version: 24.6.0.dev2024120306 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120221-release.conda - sha256: 38a17e51fc0bc077d19e9829a0d901dfef581c13a4b3b5238fbc509c5e495119 - md5: 762d1a967090c478c15e8182ee077eac + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120306-release.conda + sha256: bd0858a3e2069a86cd71370322e7ac26ad3948225e4f0811e4fbf8771d44d0ea + md5: e5b6ae7316dc2b08a52cee8f27b4f484 depends: - - mblack ==24.6.0.dev2024120221 release + - mblack ==24.6.0.dev2024120306 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 258409140 - timestamp: 1733176232454 + size: 258488596 + timestamp: 1733209293575 - kind: conda name: max-core - version: 24.6.0.dev2024120221 + version: 24.6.0.dev2024120306 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120221-release.conda - sha256: 81d2491a6299f97cb6f9847169f71eb344e5deec11755819e4124b054ec69c4c - md5: 0b95fc4831992260253ee5e3c83f3382 + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120306-release.conda + sha256: 88b5f2cbb2724067d33b10515613ec845f134c3758fd063852ac191a276d7812 + md5: 05acbd2d9cf25aa913a979aa9802c194 depends: - - mblack ==24.6.0.dev2024120221 release + - mblack ==24.6.0.dev2024120306 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 220306895 - timestamp: 1733176012956 + size: 220248523 + timestamp: 1733209020078 - kind: conda name: max-python - version: 24.6.0.dev2024120221 + version: 24.6.0.dev2024120306 build: 3.12release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120221-3.12release.conda - sha256: eff8e0d757d2ff4398c11357f2f6018cd32bfe01b7f7b9a40eb6848b7150eee5 - md5: d11c807bdfab1a9ec1d8d60ae4966f6f + url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120306-3.12release.conda + sha256: 78dc00af885799e8c1f92185a505aee022f2ffd7191d24fa94ef428457f53e15 + md5: 4bdce0c1dd562e22566551d578103d2f depends: - - max-core ==24.6.0.dev2024120221 release + - max-core ==24.6.0.dev2024120306 release - python 3.12.* - pillow - fastapi - httpx - numpy >=1.18,<2.0 + - huggingface_hub - opentelemetry-api - opentelemetry-exporter-otlp-proto-http >=1.27.0 - opentelemetry-exporter-prometheus >=0.48b0 @@ -5931,23 +5936,24 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 128533716 - timestamp: 1733176189912 + size: 128537272 + timestamp: 1733209193862 - kind: conda name: max-python - version: 24.6.0.dev2024120221 + version: 24.6.0.dev2024120306 build: 3.12release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120221-3.12release.conda - sha256: c9314e3c7be3e6913345141b05beb7868e6a35dad199472c64a0b9137bc89aa2 - md5: f7e5f66871aa60909394a02ab2344f64 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120306-3.12release.conda + sha256: 3910ceb9135f2258df30dd7a5d87b8f80a284645d6da48daa0e9bb145a49744e + md5: e7d3ebeaaeb2bd99167fda861a7e7aba depends: - - max-core ==24.6.0.dev2024120221 release + - max-core ==24.6.0.dev2024120306 release - python 3.12.* - pillow - fastapi - httpx - numpy >=1.18,<2.0 + - huggingface_hub - opentelemetry-api - opentelemetry-exporter-otlp-proto-http >=1.27.0 - opentelemetry-exporter-prometheus >=0.48b0 @@ -5964,23 +5970,24 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 132227870 - timestamp: 1733176232462 + size: 132223349 + timestamp: 1733209293584 - kind: conda name: max-python - version: 24.6.0.dev2024120221 + version: 24.6.0.dev2024120306 build: 3.12release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120221-3.12release.conda - sha256: 781843479c4ff561f1963df894c76fbc4e623e16dba02ca90a9facdfa2f5d20a - md5: 10517bdbac80736a742077a261e535b6 + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120306-3.12release.conda + sha256: ddafa4f7201fca06f38e8a0232cdbbb918d6a24c03cb25a0137d4fcc0ca9f354 + md5: 9859f8c88c81c18baaddd15be03d259c depends: - - max-core ==24.6.0.dev2024120221 release + - max-core ==24.6.0.dev2024120306 release - python 3.12.* - pillow - fastapi - httpx - numpy >=1.18,<2.0 + - huggingface_hub - opentelemetry-api - opentelemetry-exporter-otlp-proto-http >=1.27.0 - opentelemetry-exporter-prometheus >=0.48b0 @@ -5997,17 +6004,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 119173532 - timestamp: 1733176012959 + size: 119113363 + timestamp: 1733209020082 - kind: conda name: mblack - version: 24.6.0.dev2024120221 + version: 24.6.0.dev2024120306 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120221-release.conda - sha256: 5d3b01c8332faf96e9d95f5ea2bf7ac1f528279326717103d9e3cf0a53a0dd58 - md5: a4660d8dd8037b8c090b028271d18e14 + url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120306-release.conda + sha256: 35b22caab89b65a52b9e7877762a58bba8cd21137ac1383e268b8a2ae45173ac + md5: f77eafd932de3ae309643ea716ba3c3a depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -6017,8 +6024,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130643 - timestamp: 1733176232459 + size: 130649 + timestamp: 1733209293580 - kind: conda name: mdurl version: 0.1.2 @@ -6036,21 +6043,21 @@ packages: timestamp: 1704317789138 - kind: conda name: mojo-jupyter - version: 24.6.0.dev2024120221 + version: 24.6.0.dev2024120306 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120221-release.conda - sha256: 93bb896b09ee00dd8aaeb842dc73939e8c990bb14ba71e8c952fca318c235b0a - md5: 9f4dbbf9e29a9fc89154906e388c037b + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120306-release.conda + sha256: dd1fcd4298ef08be4507931babe70d6b335dc28d5ead602460747edc4f10c2dc + md5: 8bb40dfabe84757d93d3053fdf4b0a58 depends: - - max-core ==24.6.0.dev2024120221 release + - max-core ==24.6.0.dev2024120306 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22931 - timestamp: 1733176232460 + size: 22940 + timestamp: 1733209293581 - kind: conda name: multidict version: 6.1.0 @@ -6107,61 +6114,59 @@ packages: timestamp: 1729065664275 - kind: conda name: multiprocess - version: 0.70.16 - build: py312h024a12e_1 + version: 0.70.15 + build: py312h02f2b3b_1 build_number: 1 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/multiprocess-0.70.16-py312h024a12e_1.conda - sha256: d19a1c8b3fd44414657066becba960143e7115a385fb71b941f7e9c74f066a32 - md5: fd83a478d686df79aa394b9db1ad20b5 + url: https://conda.anaconda.org/conda-forge/osx-arm64/multiprocess-0.70.15-py312h02f2b3b_1.conda + sha256: 8041371e3ec3fbc2ca13c71b0180672896e6382e62892d9f6b11a4c5dd675951 + md5: 910ef2223c71902175418d9163152788 depends: - - __osx >=11.0 - - dill >=0.3.8 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython + - dill >=0.3.6 + - python >=3.12.0rc3,<3.13.0a0 + - python >=3.12.0rc3,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 license: BSD-3-Clause license_family: BSD - size: 342831 - timestamp: 1724954807776 + size: 335147 + timestamp: 1695459275360 - kind: conda name: multiprocess - version: 0.70.16 - build: py312h66e93f0_1 + version: 0.70.15 + build: py312h98912ed_1 build_number: 1 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.16-py312h66e93f0_1.conda - sha256: 459092c4e9305e00a0207b764a266c9caa14d82196322b2a74c96028c563a809 - md5: efe4a3f62320156f68579362314009f3 + url: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.15-py312h98912ed_1.conda + sha256: bb612a921fafda6375a2204ffebd8811db8dd3b8f25ac9886cc9bcbff7e3664e + md5: 5a64b9f44790d9a187a85366dd0ffa8d depends: - - __glibc >=2.17,<3.0.a0 - - dill >=0.3.8 - - libgcc >=13 - - python >=3.12,<3.13.0a0 + - dill >=0.3.6 + - libgcc-ng >=12 + - python >=3.12.0rc3,<3.13.0a0 - python_abi 3.12.* *_cp312 license: BSD-3-Clause license_family: BSD - size: 340540 - timestamp: 1724954755987 + size: 335666 + timestamp: 1695459025249 - kind: conda name: multiprocess - version: 0.70.16 - build: py312hb2c0f52_1 + version: 0.70.15 + build: py312hdd3e373_1 build_number: 1 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.16-py312hb2c0f52_1.conda - sha256: f93627c78d1f86f593350196699b462c334542477aa55fe0212edf45392c9ab4 - md5: 642c63b684ce5614f157572b04816983 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.15-py312hdd3e373_1.conda + sha256: c53362cdf346f314e111faddc53061e3fd2ece0ba68ca303f5dd109976df158f + md5: 173a1692d2b3ddc265dc6afd21a869b3 depends: - - dill >=0.3.8 - - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython + - dill >=0.3.6 + - libgcc-ng >=12 + - python >=3.12.0rc3,<3.13.0a0 + - python >=3.12.0rc3,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 license: BSD-3-Clause license_family: BSD - size: 341428 - timestamp: 1724954862644 + size: 336110 + timestamp: 1695459137796 - kind: conda name: mypy_extensions version: 1.0.0 @@ -6655,19 +6660,19 @@ packages: - kind: conda name: packaging version: '24.2' - build: pyhff2d567_1 - build_number: 1 + build: pyhd8ed1ab_2 + build_number: 2 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhff2d567_1.conda - sha256: 74843f871e5cd8a1baf5ed8c406c571139c287141efe532f8ffbdafa3664d244 - md5: 8508b703977f4c4ada34d657d051972c + url: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + sha256: da157b19bcd398b9804c5c52fc000fcb8ab0525bdb9c70f95beaa0bb42f85af1 + md5: 3bfed7e6228ebf2f7b9eaa47f1b4e2aa depends: - python >=3.8 license: Apache-2.0 license_family: APACHE - size: 60380 - timestamp: 1731802602808 + size: 60164 + timestamp: 1733203368787 - kind: conda name: pandas version: 2.2.3 @@ -7151,18 +7156,20 @@ packages: - kind: conda name: pycparser version: '2.22' - build: pyhd8ed1ab_0 + build: pyh29332c3_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda - sha256: 406001ebf017688b1a1554b49127ca3a4ac4626ec0fd51dc75ffa4415b720b64 - md5: 844d9eb3b43095b031874477f7d70088 + url: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda + sha256: 79db7928d13fab2d892592223d7570f5061c192f27b9febd1a418427b719acc6 + md5: 12c566707c80111f9799308d9e265aef depends: - - python >=3.8 + - python >=3.9 + - python license: BSD-3-Clause license_family: BSD - size: 105098 - timestamp: 1711811634025 + size: 110100 + timestamp: 1733195786147 - kind: conda name: pydantic version: 2.10.2 @@ -7432,19 +7439,19 @@ packages: - kind: conda name: python-dateutil version: 2.9.0.post0 - build: pyhff2d567_0 + build: pyhff2d567_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_0.conda - sha256: 3888012c5916efaef45d503e3e544bbcc571b84426c1bb9577799ada9efefb54 - md5: b6dfd90a2141e573e4b6a81630b56df5 + url: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + sha256: a50052536f1ef8516ed11a844f9413661829aa083304dc624c5925298d078d79 + md5: 5ba79d7c71f03c678c8ead841f347d6e depends: - python >=3.9 - six >=1.5 license: Apache-2.0 - license_family: APACHE - size: 221925 - timestamp: 1731919374686 + size: 222505 + timestamp: 1733215763718 - kind: conda name: python-dotenv version: 1.0.1 @@ -7886,24 +7893,24 @@ packages: - kind: conda name: requests version: 2.32.3 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_0.conda - sha256: 5845ffe82a6fa4d437a2eae1e32a1ad308d7ad349f61e337c0a890fe04c513cc - md5: 5ede4753180c7a550a443c430dc8ab52 + url: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda + sha256: d701ca1136197aa121bbbe0e8c18db6b5c94acbd041c2b43c70e5ae104e1d8ad + md5: a9b9368f3701a417eac9edbcae7cb737 depends: - certifi >=2017.4.17 - charset-normalizer >=2,<4 - idna >=2.5,<4 - - python >=3.8 + - python >=3.9 - urllib3 >=1.21.1,<3 constrains: - chardet >=3.0.2,<6 license: Apache-2.0 - license_family: APACHE - size: 58810 - timestamp: 1717057174842 + size: 58723 + timestamp: 1733217126197 - kind: conda name: rich version: 13.9.4 @@ -8044,18 +8051,19 @@ packages: - kind: conda name: six version: 1.16.0 - build: pyh6c4a22f_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 - sha256: a85c38227b446f42c5b90d9b642f2c0567880c15d72492d8da074a59c8f91dd6 - md5: e5f25f8dbc060e9a8d912e432202afc2 + url: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyhd8ed1ab_1.conda + sha256: 761b96fe7bea080b9c35dd2f87f788eb94b61d462645bd16f361e80ae0ff017c + md5: a516da6cfe1ec0a55e49737f017b4965 depends: - - python + - python >=3.9 license: MIT license_family: MIT - size: 14259 - timestamp: 1620240338595 + size: 16385 + timestamp: 1733216901349 - kind: conda name: snappy version: 1.2.1 @@ -8469,22 +8477,23 @@ packages: - kind: conda name: urllib3 version: 2.2.3 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_0.conda - sha256: b6bb34ce41cd93956ad6eeee275ed52390fb3788d6c75e753172ea7ac60b66e5 - md5: 6b55867f385dd762ed99ea687af32a69 + url: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_1.conda + sha256: 416e30a1c3262275f01a3e22e783118d9e9d2872a739a9ed860d06fa9c7593d5 + md5: 4a2d8ef7c37b8808c5b9b750501fffce depends: - brotli-python >=1.0.9 - h2 >=4,<5 - pysocks >=1.5.6,<2.0,!=1.5.7 - - python >=3.8 + - python >=3.9 - zstandard >=0.18.0 license: MIT license_family: MIT - size: 98076 - timestamp: 1726496531769 + size: 98077 + timestamp: 1733206968917 - kind: conda name: uvicorn version: 0.32.1 diff --git a/magic.lock b/magic.lock index db809b41a1..818c254d76 100644 --- a/magic.lock +++ b/magic.lock @@ -13,7 +13,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/asgiref-3.8.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/asgiref-3.8.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-hb88c0a9_10.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.0-hecf86a2_2.conda @@ -43,19 +43,19 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-3.1.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.8-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_0.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.5-pyhff2d567_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/filelock-3.16.1-pyhd8ed1ab_0.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 - - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.9.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gflags-2.2.2-h5888daf_1005.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/glog-0.7.1-hbabe93e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda @@ -67,7 +67,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-7.0.2-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_0.conda @@ -132,14 +132,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.9.4-hcb278e6_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120221-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120221-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120221-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120221-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120306-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120306-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120306-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120306-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120221-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120306-release.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/multiprocess-0.70.16-py312h66e93f0_1.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_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-he02047a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda @@ -157,7 +157,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh10f6f8f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-util-http-0.49b2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/orc-2.0.3-he039a57_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.3-py312hf9745cd_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-11.0.0-py312h7b63e92_0.conda @@ -168,7 +168,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-18.1.0-py312h7900ff3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-18.1.0-py312h01725c0_0_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.2-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.27.1-py312h12e396e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.6.1-pyh3cfb1c2_0.conda @@ -176,7 +176,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/pyinstrument-5.0.0-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.7-hc5c86c4_0_cpython.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_0.conda @@ -189,13 +189,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/re2-2024.07.02-h77b4e00_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda - 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_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_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 - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-ha2e4443_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.1.3-pyhd8ed1ab_0.conda @@ -212,7 +212,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/uvloop-0.21.0-py312h66e93f0_1.conda @@ -236,7 +236,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/asgiref-3.8.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/asgiref-3.8.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-hac900a4_10.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.0-h35473ba_2.conda @@ -266,19 +266,19 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-3.1.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.8-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_0.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.5-pyhff2d567_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/filelock-3.16.1-pyhd8ed1ab_0.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 - - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.9.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gflags-2.2.2-h5ad3122_1005.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/glog-0.7.1-h468a4a4_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda @@ -291,7 +291,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-7.0.2-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_0.conda @@ -356,14 +356,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.9.4-hd600fc2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.2-py312h74ce7d3_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120221-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120221-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120221-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120221-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120306-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120306-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120306-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120306-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120221-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120306-release.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/multiprocess-0.70.16-py312hb2c0f52_1.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_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-hcccb83c_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda @@ -381,7 +381,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh10f6f8f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-util-http-0.49b2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/orc-2.0.3-h90de224_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pandas-2.2.3-py312ha2895bd_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pillow-11.0.0-py312h5ab5af3_0.conda @@ -392,7 +392,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pthread-stubs-0.4-h86ecc28_1002.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-18.1.0-py312h8025657_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-18.1.0-py312h66f7834_0_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.2-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pydantic-core-2.27.1-py312h8cbf658_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.6.1-pyh3cfb1c2_0.conda @@ -400,7 +400,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyinstrument-5.0.0-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.7-h5d932e8_0_cpython.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_0.conda @@ -413,13 +413,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/re2-2024.07.02-h2d3a13d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8fc344f_1.conda - 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_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_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 - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-h1088aeb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.1.3-pyhd8ed1ab_0.conda @@ -436,7 +436,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/uvloop-0.21.0-py312hb2c0f52_1.conda @@ -459,7 +459,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/asgiref-3.8.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/asgiref-3.8.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-h9b725a8_10.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.0-h5d7ee29_2.conda @@ -489,19 +489,19 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-3.1.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.8-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_0.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.5-pyhff2d567_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/filelock-3.16.1-pyhd8ed1ab_0.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 - - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.9.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gflags-2.2.2-hf9b8971_1005.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/glog-0.7.1-heb240a5_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda @@ -513,7 +513,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-7.0.2-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_0.conda @@ -570,14 +570,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.9.4-hb7217d7_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312ha0ccf2a_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120221-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120221-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120221-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120221-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120306-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120306-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120306-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120306-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120221-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120306-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.16-py312h024a12e_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_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h7bae524_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda @@ -595,7 +595,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh10f6f8f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-util-http-0.49b2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/orc-2.0.3-h121fd32_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.3-py312hcd31e36_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-11.0.0-py312haf37ca6_0.conda @@ -606,7 +606,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pthread-stubs-0.4-hd74edd7_1002.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-18.1.0-py312h1f38498_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-18.1.0-py312hc40f475_0_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.2-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.27.1-py312hcd83bfe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.6.1-pyh3cfb1c2_0.conda @@ -614,7 +614,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyinstrument-5.0.0-py312h0bf5046_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.7-h739c21a_0_cpython.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_0.conda @@ -627,12 +627,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/re2-2024.07.02-hcd0e937_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h92ec313_1.conda - 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_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_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_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-hd02b534_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.1.3-pyhd8ed1ab_0.conda @@ -649,7 +649,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/uvloop-0.21.0-py312h0bf5046_1.conda @@ -857,19 +857,20 @@ packages: - kind: conda name: asgiref version: 3.8.1 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/asgiref-3.8.1-pyhd8ed1ab_0.conda - sha256: 85fc8f54361b922d744c8728a7a711cab390b78941e18a3570dabfac8169e5f9 - md5: b5c2e1034ccc76fb14031637924880eb + url: https://conda.anaconda.org/conda-forge/noarch/asgiref-3.8.1-pyhd8ed1ab_1.conda + sha256: c8d51a32f3530e3ca176d8f7bf5621c68c7c1c03fe9cc5c3c49d8ba4a1248f43 + md5: 21187c8276f87b6aedfe63c267a6eed7 depends: - - python >=3.8 + - python >=3.9 - typing_extensions >=4 license: BSD-3-Clause license_family: BSD - size: 26347 - timestamp: 1711269034814 + size: 26436 + timestamp: 1733215704904 - kind: conda name: attrs version: 24.2.0 @@ -2218,33 +2219,33 @@ packages: timestamp: 1666700778190 - kind: conda name: datasets - version: 3.1.0 - build: pyhff2d567_0 + version: 2.14.4 + build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/datasets-3.1.0-pyhff2d567_0.conda - sha256: c3329f96a797fcec28a0bc42372bb253ce6434cbd6d9b5dc8e8417a247c43027 - md5: cd6278d231cd340f2f0c600037df5a98 + url: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda + sha256: 7e09bd083a609138b780fcc4535924cb96814d2c908a36d4c64a2ba9ee3efe7f + md5: 3e087f072ce03c43a9b60522f5d0ca2f depends: - aiohttp - - dill >=0.3.0,<0.3.9 - - filelock - - fsspec >=2023.1.0,<=2024.9.0 - - huggingface_hub >=0.23.0 - - multiprocess <0.70.17 + - dill >=0.3.0,<0.3.8 + - fsspec >=2021.11.1 + - huggingface_hub >=0.14.0,<1.0.0 + - importlib-metadata + - multiprocess - numpy >=1.17 - packaging - pandas - - pyarrow >=15.0.0 - - python >=3.9 + - pyarrow >=8.0.0 + - python >=3.8.0 - python-xxhash - pyyaml >=5.1 - - requests >=2.32.2 - - tqdm >=4.66.3 + - requests >=2.19.0 + - tqdm >=4.62.1 license: Apache-2.0 license_family: Apache - size: 332680 - timestamp: 1731706749584 + size: 347303 + timestamp: 1691593908658 - kind: conda name: deprecated version: 1.2.15 @@ -2263,19 +2264,19 @@ packages: timestamp: 1731836933516 - kind: conda name: dill - version: 0.3.8 + version: 0.3.7 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.8-pyhd8ed1ab_0.conda - sha256: 482b5b566ca559119b504c53df12b08f3962a5ef8e48061d62fd58a47f8f2ec4 - md5: 78745f157d56877a2c6e7b386f66f3e2 + url: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda + sha256: 4ff20c6be028be2825235631c45d9e4a75bca1de65f8840c02dfb28ea0137c45 + md5: 5e4f3466526c52bc9af2d2353a1460bd depends: - python >=3.7 license: BSD-3-Clause license_family: BSD - size: 88169 - timestamp: 1706434833883 + size: 87553 + timestamp: 1690101185422 - kind: conda name: dnspython version: 2.7.0 @@ -2334,17 +2335,18 @@ packages: - kind: conda name: exceptiongroup version: 1.2.2 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_0.conda - sha256: e0edd30c4b7144406bb4da975e6bb97d6bc9c0e999aa4efe66ae108cada5d5b5 - md5: d02ae936e42063ca46af6cdad2dbd1e0 + url: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda + sha256: cbde2c64ec317118fc06b223c5fd87c8a680255e7348dd60e7b292d2e103e701 + md5: a16662747cdeb9abbac74d0057cc976e depends: - - python >=3.7 + - python >=3.9 license: MIT and PSF-2.0 - size: 20418 - timestamp: 1720869435725 + size: 20486 + timestamp: 1733208916977 - kind: conda name: fastapi version: 0.115.5 @@ -2501,19 +2503,19 @@ packages: timestamp: 1729699642726 - kind: conda name: fsspec - version: 2024.9.0 + version: 2024.10.0 build: pyhff2d567_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.9.0-pyhff2d567_0.conda - sha256: 8f4e9805b4ec223dea0d99f9e7e57c391d9026455eb9f0d6e0784c5d1a1200dc - md5: ace4329fbff4c69ab0309db6da182987 + url: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhff2d567_0.conda + sha256: 40bb76981dd49d5869b48925a8975bb7bbe4e33e1e40af4ec06f6bf4a62effd7 + md5: 816dbc4679a64e4417cd1385d661bb31 depends: - python >=3.8 license: BSD-3-Clause license_family: BSD - size: 134378 - timestamp: 1725543368393 + size: 134745 + timestamp: 1729608972363 - kind: conda name: gflags version: 2.2.2 @@ -2786,6 +2788,7 @@ packages: - typing-extensions >=3.7.4.3 - typing_extensions >=3.7.4.3 license: Apache-2.0 + license_family: APACHE size: 274858 timestamp: 1733170279930 - kind: conda @@ -2821,18 +2824,19 @@ packages: - kind: conda name: idna version: '3.10' - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_0.conda - sha256: 8c57fd68e6be5eecba4462e983aed7e85761a519aab80e834bbd7794d4b545b2 - md5: 7ba2ede0e7c795ff95088daf0dc59753 + url: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda + sha256: d7a472c9fd479e2e8dcb83fb8d433fce971ea369d704ece380e876f9c3494e87 + md5: 39a4f67be3286c86d696df570b1201b7 depends: - - python >=3.6 + - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 49837 - timestamp: 1726459583613 + size: 49765 + timestamp: 1733211921194 - kind: conda name: importlib-metadata version: 7.0.2 @@ -5859,81 +5863,82 @@ packages: timestamp: 1729351534830 - kind: conda name: max - version: 24.6.0.dev2024120221 + version: 24.6.0.dev2024120306 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120221-release.conda - sha256: 71b02d0afbd2dfa49633f0dff4cdc1a94392abc344668636b90656060117384e - md5: fa3d1a799da8e216b9448fd2246655f3 - depends: - - max-core ==24.6.0.dev2024120221 release - - max-python >=24.6.0.dev2024120221,<25.0a0 - - mojo-jupyter ==24.6.0.dev2024120221 release - - mblack ==24.6.0.dev2024120221 release + url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120306-release.conda + sha256: 2aae2a8286dca29453e8cc8cfe13511aa016a521ac0c9201ceb24d1ba6c4138e + md5: 9c25081ace6ad2c13675cf0123109cb9 + depends: + - max-core ==24.6.0.dev2024120306 release + - max-python >=24.6.0.dev2024120306,<25.0a0 + - mojo-jupyter ==24.6.0.dev2024120306 release + - mblack ==24.6.0.dev2024120306 release license: LicenseRef-Modular-Proprietary - size: 9927 - timestamp: 1733176232456 + size: 9929 + timestamp: 1733209293577 - kind: conda name: max-core - version: 24.6.0.dev2024120221 + version: 24.6.0.dev2024120306 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120221-release.conda - sha256: e7362f447478b8f8a4ce9f6e4a38c7b519c4fdd81cbcb6cd0bfded3cfb3399eb - md5: 646d3f60af8b7d77a29ea74c80b73abe + url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120306-release.conda + sha256: a82534696c6e078fb4e14b4b0f058336ffd0a647f7404e85aaee18eec25be067 + md5: c249d77d8e5885dd0eacd9028131413f depends: - - mblack ==24.6.0.dev2024120221 release + - mblack ==24.6.0.dev2024120306 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 254782923 - timestamp: 1733176189897 + size: 254711372 + timestamp: 1733209193854 - kind: conda name: max-core - version: 24.6.0.dev2024120221 + version: 24.6.0.dev2024120306 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120221-release.conda - sha256: 38a17e51fc0bc077d19e9829a0d901dfef581c13a4b3b5238fbc509c5e495119 - md5: 762d1a967090c478c15e8182ee077eac + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120306-release.conda + sha256: bd0858a3e2069a86cd71370322e7ac26ad3948225e4f0811e4fbf8771d44d0ea + md5: e5b6ae7316dc2b08a52cee8f27b4f484 depends: - - mblack ==24.6.0.dev2024120221 release + - mblack ==24.6.0.dev2024120306 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 258409140 - timestamp: 1733176232454 + size: 258488596 + timestamp: 1733209293575 - kind: conda name: max-core - version: 24.6.0.dev2024120221 + version: 24.6.0.dev2024120306 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120221-release.conda - sha256: 81d2491a6299f97cb6f9847169f71eb344e5deec11755819e4124b054ec69c4c - md5: 0b95fc4831992260253ee5e3c83f3382 + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120306-release.conda + sha256: 88b5f2cbb2724067d33b10515613ec845f134c3758fd063852ac191a276d7812 + md5: 05acbd2d9cf25aa913a979aa9802c194 depends: - - mblack ==24.6.0.dev2024120221 release + - mblack ==24.6.0.dev2024120306 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 220306895 - timestamp: 1733176012956 + size: 220248523 + timestamp: 1733209020078 - kind: conda name: max-python - version: 24.6.0.dev2024120221 + version: 24.6.0.dev2024120306 build: 3.12release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120221-3.12release.conda - sha256: eff8e0d757d2ff4398c11357f2f6018cd32bfe01b7f7b9a40eb6848b7150eee5 - md5: d11c807bdfab1a9ec1d8d60ae4966f6f + url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120306-3.12release.conda + sha256: 78dc00af885799e8c1f92185a505aee022f2ffd7191d24fa94ef428457f53e15 + md5: 4bdce0c1dd562e22566551d578103d2f depends: - - max-core ==24.6.0.dev2024120221 release + - max-core ==24.6.0.dev2024120306 release - python 3.12.* - pillow - fastapi - httpx - numpy >=1.18,<2.0 + - huggingface_hub - opentelemetry-api - opentelemetry-exporter-otlp-proto-http >=1.27.0 - opentelemetry-exporter-prometheus >=0.48b0 @@ -5950,23 +5955,24 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 128533716 - timestamp: 1733176189912 + size: 128537272 + timestamp: 1733209193862 - kind: conda name: max-python - version: 24.6.0.dev2024120221 + version: 24.6.0.dev2024120306 build: 3.12release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120221-3.12release.conda - sha256: c9314e3c7be3e6913345141b05beb7868e6a35dad199472c64a0b9137bc89aa2 - md5: f7e5f66871aa60909394a02ab2344f64 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120306-3.12release.conda + sha256: 3910ceb9135f2258df30dd7a5d87b8f80a284645d6da48daa0e9bb145a49744e + md5: e7d3ebeaaeb2bd99167fda861a7e7aba depends: - - max-core ==24.6.0.dev2024120221 release + - max-core ==24.6.0.dev2024120306 release - python 3.12.* - pillow - fastapi - httpx - numpy >=1.18,<2.0 + - huggingface_hub - opentelemetry-api - opentelemetry-exporter-otlp-proto-http >=1.27.0 - opentelemetry-exporter-prometheus >=0.48b0 @@ -5983,23 +5989,24 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 132227870 - timestamp: 1733176232462 + size: 132223349 + timestamp: 1733209293584 - kind: conda name: max-python - version: 24.6.0.dev2024120221 + version: 24.6.0.dev2024120306 build: 3.12release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120221-3.12release.conda - sha256: 781843479c4ff561f1963df894c76fbc4e623e16dba02ca90a9facdfa2f5d20a - md5: 10517bdbac80736a742077a261e535b6 + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120306-3.12release.conda + sha256: ddafa4f7201fca06f38e8a0232cdbbb918d6a24c03cb25a0137d4fcc0ca9f354 + md5: 9859f8c88c81c18baaddd15be03d259c depends: - - max-core ==24.6.0.dev2024120221 release + - max-core ==24.6.0.dev2024120306 release - python 3.12.* - pillow - fastapi - httpx - numpy >=1.18,<2.0 + - huggingface_hub - opentelemetry-api - opentelemetry-exporter-otlp-proto-http >=1.27.0 - opentelemetry-exporter-prometheus >=0.48b0 @@ -6016,17 +6023,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 119173532 - timestamp: 1733176012959 + size: 119113363 + timestamp: 1733209020082 - kind: conda name: mblack - version: 24.6.0.dev2024120221 + version: 24.6.0.dev2024120306 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120221-release.conda - sha256: 5d3b01c8332faf96e9d95f5ea2bf7ac1f528279326717103d9e3cf0a53a0dd58 - md5: a4660d8dd8037b8c090b028271d18e14 + url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120306-release.conda + sha256: 35b22caab89b65a52b9e7877762a58bba8cd21137ac1383e268b8a2ae45173ac + md5: f77eafd932de3ae309643ea716ba3c3a depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -6036,8 +6043,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130643 - timestamp: 1733176232459 + size: 130649 + timestamp: 1733209293580 - kind: conda name: mdurl version: 0.1.2 @@ -6055,21 +6062,21 @@ packages: timestamp: 1704317789138 - kind: conda name: mojo-jupyter - version: 24.6.0.dev2024120221 + version: 24.6.0.dev2024120306 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120221-release.conda - sha256: 93bb896b09ee00dd8aaeb842dc73939e8c990bb14ba71e8c952fca318c235b0a - md5: 9f4dbbf9e29a9fc89154906e388c037b + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120306-release.conda + sha256: dd1fcd4298ef08be4507931babe70d6b335dc28d5ead602460747edc4f10c2dc + md5: 8bb40dfabe84757d93d3053fdf4b0a58 depends: - - max-core ==24.6.0.dev2024120221 release + - max-core ==24.6.0.dev2024120306 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22931 - timestamp: 1733176232460 + size: 22940 + timestamp: 1733209293581 - kind: conda name: multidict version: 6.1.0 @@ -6126,61 +6133,59 @@ packages: timestamp: 1729065664275 - kind: conda name: multiprocess - version: 0.70.16 - build: py312h024a12e_1 + version: 0.70.15 + build: py312h02f2b3b_1 build_number: 1 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/multiprocess-0.70.16-py312h024a12e_1.conda - sha256: d19a1c8b3fd44414657066becba960143e7115a385fb71b941f7e9c74f066a32 - md5: fd83a478d686df79aa394b9db1ad20b5 + url: https://conda.anaconda.org/conda-forge/osx-arm64/multiprocess-0.70.15-py312h02f2b3b_1.conda + sha256: 8041371e3ec3fbc2ca13c71b0180672896e6382e62892d9f6b11a4c5dd675951 + md5: 910ef2223c71902175418d9163152788 depends: - - __osx >=11.0 - - dill >=0.3.8 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython + - dill >=0.3.6 + - python >=3.12.0rc3,<3.13.0a0 + - python >=3.12.0rc3,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 license: BSD-3-Clause license_family: BSD - size: 342831 - timestamp: 1724954807776 + size: 335147 + timestamp: 1695459275360 - kind: conda name: multiprocess - version: 0.70.16 - build: py312h66e93f0_1 + version: 0.70.15 + build: py312h98912ed_1 build_number: 1 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.16-py312h66e93f0_1.conda - sha256: 459092c4e9305e00a0207b764a266c9caa14d82196322b2a74c96028c563a809 - md5: efe4a3f62320156f68579362314009f3 + url: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.15-py312h98912ed_1.conda + sha256: bb612a921fafda6375a2204ffebd8811db8dd3b8f25ac9886cc9bcbff7e3664e + md5: 5a64b9f44790d9a187a85366dd0ffa8d depends: - - __glibc >=2.17,<3.0.a0 - - dill >=0.3.8 - - libgcc >=13 - - python >=3.12,<3.13.0a0 + - dill >=0.3.6 + - libgcc-ng >=12 + - python >=3.12.0rc3,<3.13.0a0 - python_abi 3.12.* *_cp312 license: BSD-3-Clause license_family: BSD - size: 340540 - timestamp: 1724954755987 + size: 335666 + timestamp: 1695459025249 - kind: conda name: multiprocess - version: 0.70.16 - build: py312hb2c0f52_1 + version: 0.70.15 + build: py312hdd3e373_1 build_number: 1 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.16-py312hb2c0f52_1.conda - sha256: f93627c78d1f86f593350196699b462c334542477aa55fe0212edf45392c9ab4 - md5: 642c63b684ce5614f157572b04816983 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.15-py312hdd3e373_1.conda + sha256: c53362cdf346f314e111faddc53061e3fd2ece0ba68ca303f5dd109976df158f + md5: 173a1692d2b3ddc265dc6afd21a869b3 depends: - - dill >=0.3.8 - - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython + - dill >=0.3.6 + - libgcc-ng >=12 + - python >=3.12.0rc3,<3.13.0a0 + - python >=3.12.0rc3,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 license: BSD-3-Clause license_family: BSD - size: 341428 - timestamp: 1724954862644 + size: 336110 + timestamp: 1695459137796 - kind: conda name: mypy_extensions version: 1.0.0 @@ -6674,19 +6679,19 @@ packages: - kind: conda name: packaging version: '24.2' - build: pyhff2d567_1 - build_number: 1 + build: pyhd8ed1ab_2 + build_number: 2 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhff2d567_1.conda - sha256: 74843f871e5cd8a1baf5ed8c406c571139c287141efe532f8ffbdafa3664d244 - md5: 8508b703977f4c4ada34d657d051972c + url: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + sha256: da157b19bcd398b9804c5c52fc000fcb8ab0525bdb9c70f95beaa0bb42f85af1 + md5: 3bfed7e6228ebf2f7b9eaa47f1b4e2aa depends: - python >=3.8 license: Apache-2.0 license_family: APACHE - size: 60380 - timestamp: 1731802602808 + size: 60164 + timestamp: 1733203368787 - kind: conda name: pandas version: 2.2.3 @@ -7170,18 +7175,20 @@ packages: - kind: conda name: pycparser version: '2.22' - build: pyhd8ed1ab_0 + build: pyh29332c3_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda - sha256: 406001ebf017688b1a1554b49127ca3a4ac4626ec0fd51dc75ffa4415b720b64 - md5: 844d9eb3b43095b031874477f7d70088 + url: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda + sha256: 79db7928d13fab2d892592223d7570f5061c192f27b9febd1a418427b719acc6 + md5: 12c566707c80111f9799308d9e265aef depends: - - python >=3.8 + - python >=3.9 + - python license: BSD-3-Clause license_family: BSD - size: 105098 - timestamp: 1711811634025 + size: 110100 + timestamp: 1733195786147 - kind: conda name: pydantic version: 2.10.2 @@ -7451,19 +7458,19 @@ packages: - kind: conda name: python-dateutil version: 2.9.0.post0 - build: pyhff2d567_0 + build: pyhff2d567_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_0.conda - sha256: 3888012c5916efaef45d503e3e544bbcc571b84426c1bb9577799ada9efefb54 - md5: b6dfd90a2141e573e4b6a81630b56df5 + url: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + sha256: a50052536f1ef8516ed11a844f9413661829aa083304dc624c5925298d078d79 + md5: 5ba79d7c71f03c678c8ead841f347d6e depends: - python >=3.9 - six >=1.5 license: Apache-2.0 - license_family: APACHE - size: 221925 - timestamp: 1731919374686 + size: 222505 + timestamp: 1733215763718 - kind: conda name: python-dotenv version: 1.0.1 @@ -7905,24 +7912,24 @@ packages: - kind: conda name: requests version: 2.32.3 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_0.conda - sha256: 5845ffe82a6fa4d437a2eae1e32a1ad308d7ad349f61e337c0a890fe04c513cc - md5: 5ede4753180c7a550a443c430dc8ab52 + url: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda + sha256: d701ca1136197aa121bbbe0e8c18db6b5c94acbd041c2b43c70e5ae104e1d8ad + md5: a9b9368f3701a417eac9edbcae7cb737 depends: - certifi >=2017.4.17 - charset-normalizer >=2,<4 - idna >=2.5,<4 - - python >=3.8 + - python >=3.9 - urllib3 >=1.21.1,<3 constrains: - chardet >=3.0.2,<6 license: Apache-2.0 - license_family: APACHE - size: 58810 - timestamp: 1717057174842 + size: 58723 + timestamp: 1733217126197 - kind: conda name: rich version: 13.9.4 @@ -8063,18 +8070,19 @@ packages: - kind: conda name: six version: 1.16.0 - build: pyh6c4a22f_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 - sha256: a85c38227b446f42c5b90d9b642f2c0567880c15d72492d8da074a59c8f91dd6 - md5: e5f25f8dbc060e9a8d912e432202afc2 + url: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyhd8ed1ab_1.conda + sha256: 761b96fe7bea080b9c35dd2f87f788eb94b61d462645bd16f361e80ae0ff017c + md5: a516da6cfe1ec0a55e49737f017b4965 depends: - - python + - python >=3.9 license: MIT license_family: MIT - size: 14259 - timestamp: 1620240338595 + size: 16385 + timestamp: 1733216901349 - kind: conda name: snappy version: 1.2.1 @@ -8488,22 +8496,23 @@ packages: - kind: conda name: urllib3 version: 2.2.3 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_0.conda - sha256: b6bb34ce41cd93956ad6eeee275ed52390fb3788d6c75e753172ea7ac60b66e5 - md5: 6b55867f385dd762ed99ea687af32a69 + url: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_1.conda + sha256: 416e30a1c3262275f01a3e22e783118d9e9d2872a739a9ed860d06fa9c7593d5 + md5: 4a2d8ef7c37b8808c5b9b750501fffce depends: - brotli-python >=1.0.9 - h2 >=4,<5 - pysocks >=1.5.6,<2.0,!=1.5.7 - - python >=3.8 + - python >=3.9 - zstandard >=0.18.0 license: MIT license_family: MIT - size: 98076 - timestamp: 1726496531769 + size: 98077 + timestamp: 1733206968917 - kind: conda name: uvicorn version: 0.32.1 From afa3873ace056f5cb9324f6d4973e99e19ca9d72 Mon Sep 17 00:00:00 2001 From: abdul dakkak Date: Mon, 2 Dec 2024 23:15:51 -0800 Subject: [PATCH 013/509] [******][GPU] Simplify definition of sleep function, NFC MODULAR_ORIG_COMMIT_REV_ID: 9f1a40a5d1c09bcaf5a9dade8491f28052905d42 --- stdlib/src/time/time.mojo | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/stdlib/src/time/time.mojo b/stdlib/src/time/time.mojo index 7b68624fdf..71eb1e80c2 100644 --- a/stdlib/src/time/time.mojo +++ b/stdlib/src/time/time.mojo @@ -25,6 +25,7 @@ from sys import ( external_call, is_amd_gpu, is_nvidia_gpu, + is_gpu, llvm_intrinsic, os_is_linux, os_is_windows, @@ -383,7 +384,7 @@ fn sleep(sec: Int): """ @parameter - if is_nvidia_gpu() or is_amd_gpu(): + if is_gpu(): return sleep(Float64(sec)) @parameter From 74607e6cc2b290faacab6878c28f58599e5c1151 Mon Sep 17 00:00:00 2001 From: abdul dakkak Date: Tue, 3 Dec 2024 01:16:17 -0800 Subject: [PATCH 014/509] [******] Adjust the section comments MODULAR_ORIG_COMMIT_REV_ID: d1ddd74230122ada93e1237fa6e6e5a495964b16 --- .../algorithm/bench_elementwise.mojo | 4 +- stdlib/benchmarks/builtin/bench_int.mojo | 8 +- stdlib/benchmarks/builtin/bench_sort.mojo | 24 +- stdlib/benchmarks/collections/bench_dict.mojo | 24 +- .../benchmarks/collections/bench_string.mojo | 40 +- stdlib/benchmarks/hashlib/bench_hash.mojo | 600 +++++++++--------- stdlib/benchmarks/math/bench_math.mojo | 20 +- stdlib/benchmarks/utils/bench_formatter.mojo | 12 +- stdlib/benchmarks/utils/bench_memmem.mojo | 16 +- stdlib/docs/style-guide.md | 4 +- stdlib/src/base64/base64.mojo | 20 +- stdlib/src/bit/bit.mojo | 48 +- stdlib/src/builtin/_stubs.mojo | 8 +- stdlib/src/builtin/builtin_list.mojo | 12 +- stdlib/src/builtin/dtype.mojo | 12 +- stdlib/src/builtin/error.mojo | 4 +- stdlib/src/builtin/float_literal.mojo | 4 +- stdlib/src/builtin/format_int.mojo | 16 +- stdlib/src/builtin/int.mojo | 8 +- stdlib/src/builtin/int_literal.mojo | 12 +- stdlib/src/builtin/sort.mojo | 20 +- stdlib/src/builtin/string_literal.mojo | 4 +- stdlib/src/builtin/tuple.mojo | 4 +- stdlib/src/builtin/uint.mojo | 8 +- stdlib/src/collections/deque.mojo | 4 +- stdlib/src/collections/inline_array.mojo | 4 +- stdlib/src/collections/inline_list.mojo | 4 +- stdlib/src/collections/list.mojo | 4 +- stdlib/src/collections/optional.mojo | 8 +- stdlib/src/collections/vector.mojo | 8 +- stdlib/src/math/polynomial.mojo | 8 +- stdlib/src/memory/memory.mojo | 28 +- stdlib/src/memory/pointer.mojo | 8 +- stdlib/src/memory/unsafe.mojo | 4 +- stdlib/src/os/atomic.mojo | 4 +- stdlib/src/sys/_assembly.mojo | 4 +- stdlib/src/sys/_libc.mojo | 16 +- stdlib/src/sys/ffi.mojo | 12 +- stdlib/src/sys/info.mojo | 4 +- stdlib/src/sys/intrinsics.mojo | 36 +- stdlib/src/time/time.mojo | 28 +- stdlib/src/utils/format.mojo | 12 +- stdlib/src/utils/index.mojo | 20 +- stdlib/src/utils/inline_string.mojo | 8 +- stdlib/src/utils/lock.mojo | 4 +- stdlib/src/utils/loop.mojo | 20 +- stdlib/src/utils/static_tuple.mojo | 8 +- stdlib/src/utils/string_slice.mojo | 4 +- stdlib/src/utils/stringref.mojo | 8 +- stdlib/src/utils/write.mojo | 10 +- stdlib/test/collections/test_deque.mojo | 8 +- 51 files changed, 609 insertions(+), 609 deletions(-) diff --git a/stdlib/benchmarks/algorithm/bench_elementwise.mojo b/stdlib/benchmarks/algorithm/bench_elementwise.mojo index 322b66ad9c..2a302ec80f 100644 --- a/stdlib/benchmarks/algorithm/bench_elementwise.mojo +++ b/stdlib/benchmarks/algorithm/bench_elementwise.mojo @@ -23,9 +23,9 @@ from buffer import Buffer from utils.index import Index, IndexList -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Benchmark elementwise -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @parameter fn bench_elementwise[n: Int](mut b: Bencher) raises: var vector = Buffer[DType.index, n].stack_allocation() diff --git a/stdlib/benchmarks/builtin/bench_int.mojo b/stdlib/benchmarks/builtin/bench_int.mojo index b65cd5abaf..2d65c690c3 100644 --- a/stdlib/benchmarks/builtin/bench_int.mojo +++ b/stdlib/benchmarks/builtin/bench_int.mojo @@ -17,9 +17,9 @@ from benchmark import Bench, BenchConfig, Bencher, BenchId -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Benchmarks -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @parameter fn bench_stringify_small_integers(mut b: Bencher) raises: @always_inline @@ -32,9 +32,9 @@ fn bench_stringify_small_integers(mut b: Bencher) raises: b.iter[call_fn]() -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Benchmark Main -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# def main(): var m = Bench(BenchConfig(num_repetitions=1)) m.bench_function[bench_stringify_small_integers]( diff --git a/stdlib/benchmarks/builtin/bench_sort.mojo b/stdlib/benchmarks/builtin/bench_sort.mojo index 0872012f78..a44fc3a150 100644 --- a/stdlib/benchmarks/builtin/bench_sort.mojo +++ b/stdlib/benchmarks/builtin/bench_sort.mojo @@ -26,9 +26,9 @@ from stdlib.builtin.sort import ( sort, ) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Benchmark Utils -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @always_inline @@ -78,9 +78,9 @@ fn heap_sort[type: DType](mut list: List[Scalar[type]]): _heap_sort[_less_than](list) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Benchmark sort functions with a tiny list size -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# fn bench_tiny_list_sort[type: DType](mut m: Bench) raises: @@ -157,9 +157,9 @@ fn bench_tiny_list_sort[type: DType](mut m: Bench) raises: ) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Benchmark sort functions with a small list size -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# fn bench_small_list_sort[type: DType](mut m: Bench, count: Int) raises: @@ -209,9 +209,9 @@ fn bench_small_list_sort[type: DType](mut m: Bench, count: Int) raises: ) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Benchmark sort functions with a large list size -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# fn bench_large_list_sort[type: DType](mut m: Bench, count: Int) raises: @@ -262,9 +262,9 @@ fn bench_large_list_sort[type: DType](mut m: Bench, count: Int) raises: ) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Benchmark sort functions with low delta lists -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# fn bench_low_cardinality_list_sort(mut m: Bench, count: Int, delta: Int) raises: @@ -314,9 +314,9 @@ fn bench_low_cardinality_list_sort(mut m: Bench, count: Int, delta: Int) raises: ) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Benchmark Main -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# def main(): diff --git a/stdlib/benchmarks/collections/bench_dict.mojo b/stdlib/benchmarks/collections/bench_dict.mojo index b50d97a98d..e93406f837 100644 --- a/stdlib/benchmarks/collections/bench_dict.mojo +++ b/stdlib/benchmarks/collections/bench_dict.mojo @@ -24,9 +24,9 @@ from benchmark import Bench, BenchConfig, Bencher, BenchId, Unit, keep, run from bit import bit_ceil -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Benchmark Data -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# fn make_dict[size: Int]() -> Dict[Int, Int]: var d = Dict[Int, Int]() for i in range(0, size): @@ -34,9 +34,9 @@ fn make_dict[size: Int]() -> Dict[Int, Int]: return d -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Benchmark Dict init -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @parameter fn bench_dict_init(mut b: Bencher) raises: @always_inline @@ -50,9 +50,9 @@ fn bench_dict_init(mut b: Bencher) raises: b.iter[call_fn]() -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Benchmark Dict Insert -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @parameter fn bench_dict_insert[size: Int](mut b: Bencher) raises: """Insert 100 new items.""" @@ -68,9 +68,9 @@ fn bench_dict_insert[size: Int](mut b: Bencher) raises: keep(bool(items)) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Benchmark Dict Lookup -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @parameter fn bench_dict_lookup[size: Int](mut b: Bencher) raises: """Lookup 100 items.""" @@ -96,9 +96,9 @@ fn bench_dict_lookup[size: Int](mut b: Bencher) raises: keep(bool(items)) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Benchmark Dict Memory Footprint -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# fn total_bytes_used(items: Dict[Int, Int]) -> Int: @@ -121,9 +121,9 @@ fn total_bytes_used(items: Dict[Int, Int]) -> Int: return amnt_bytes -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Benchmark Main -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# def main(): seed() var m = Bench(BenchConfig(num_repetitions=1)) diff --git a/stdlib/benchmarks/collections/bench_string.mojo b/stdlib/benchmarks/collections/bench_string.mojo index 85ee5050ee..3cee895b73 100644 --- a/stdlib/benchmarks/collections/bench_string.mojo +++ b/stdlib/benchmarks/collections/bench_string.mojo @@ -25,9 +25,9 @@ from benchmark import Bench, BenchConfig, Bencher, BenchId, Unit, keep, run from utils._utf8_validation import _is_valid_utf8 -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Benchmark Data -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# fn make_string[ length: UInt = 0 ](filename: StringLiteral = "UN_charter_EN.txt") -> String: @@ -61,9 +61,9 @@ fn make_string[ return abort[String]() -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Benchmark string init -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @parameter fn bench_string_init(mut b: Bencher) raises: @always_inline @@ -76,9 +76,9 @@ fn bench_string_init(mut b: Bencher) raises: b.iter[call_fn]() -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Benchmark string count -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @parameter fn bench_string_count[ length: UInt = 0, @@ -97,9 +97,9 @@ fn bench_string_count[ keep(bool(items)) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Benchmark string split -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @parameter fn bench_string_split[ length: UInt = 0, @@ -124,9 +124,9 @@ fn bench_string_split[ keep(bool(items)) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Benchmark string splitlines -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @parameter fn bench_string_splitlines[ length: UInt = 0, filename: StringLiteral = "UN_charter_EN" @@ -143,9 +143,9 @@ fn bench_string_splitlines[ keep(bool(items)) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Benchmark string lower -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @parameter fn bench_string_lower[ length: UInt = 0, filename: StringLiteral = "UN_charter_EN" @@ -162,9 +162,9 @@ fn bench_string_lower[ keep(bool(items)) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Benchmark string upper -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @parameter fn bench_string_upper[ length: UInt = 0, filename: StringLiteral = "UN_charter_EN" @@ -181,9 +181,9 @@ fn bench_string_upper[ keep(bool(items)) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Benchmark string replace -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @parameter fn bench_string_replace[ length: UInt = 0, @@ -203,9 +203,9 @@ fn bench_string_replace[ keep(bool(items)) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Benchmark string _is_valid_utf8 -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @parameter fn bench_string_is_valid_utf8[ length: UInt = 0, filename: StringLiteral = "UN_charter_EN" @@ -222,9 +222,9 @@ fn bench_string_is_valid_utf8[ keep(bool(items)) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Benchmark Main -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# def main(): seed() var m = Bench(BenchConfig(num_repetitions=5)) diff --git a/stdlib/benchmarks/hashlib/bench_hash.mojo b/stdlib/benchmarks/hashlib/bench_hash.mojo index 0c6873f109..291701710d 100644 --- a/stdlib/benchmarks/hashlib/bench_hash.mojo +++ b/stdlib/benchmarks/hashlib/bench_hash.mojo @@ -49,7 +49,7 @@ alias words_ar = """ تحت, الأشياء, معه, يريد, أننا, أنظر, لما, اعرف, إلي, ثلاثة, انتظر, الرجال, الذين, حصلت, أني, سعيد, لابد, عزيزتي, الشيء, فكرة, انهم, الله, الباب, سيدى, دائما, رأيت, مشكلة, استطيع, تكن, تذهب, ليلة, شيئ, أظن, طوال, - جميل, وهو, الشرطة, او, دولار, السيارة, وهذا, كبير, مني, بسرعة, النار, الأمور, سمعت, أشعر, يعرف, + جميل, وهو, الشرطة, او, دولار, السيارة, وهذا, كبير, مني, بسرعة, النار, الأمور, سمعت, أشعر, يعرف, أعني, لدى, بهذه, أحب, سنوات, بأس, الأفضل, بالنسبة, أنتم, عظيم, يقول, جميلة, جون, جاك, بسبب, الوحيد, أمر, بل, بالفعل, الشخص, الي, دعني, خارج, اجل, الخير, ــ, حالك, للغاية, فحسب, كانوا, أردت, فتاة, بشأن, يعني, كبيرة, ترى, آسفة, دقيقة, أنهم, يستطيع, احد, بأنك, تعمل, @@ -80,7 +80,7 @@ alias words_ar = """ غدا, ظننت, ولن, المرأة, لهذه, تحرك, يهم, تبقى, الطبيب, اسم, انظري, تبا, أتذكر, فترة, ساعات, تفكر, تحصل, بأي, النقود, لعبة, زوجتي, الكلام, ستفعل, أسف, فهو, الملك, مدينة, بكم, الوحيدة, أمام, عدد, اخرج, بول, سأعود, جئت, لأني, تحدث, السلامة, الماضية, أمك, اعتقدت, مره, مساء, بطريقة, الرب, ابدا, أهذا, وفي, وكل, أتيت, منكم, - انتهى, بوب, بعيدا, ضع, وجود, تعود, زلت, اللعينة, نقوم, كلنا, أحصل, يريدون, تأخذ, المحتمل, الشمس, بدأ, + انتهى, بوب, بعيدا, ضع, وجود, تعود, زلت, اللعينة, نقوم, كلنا, أحصل, يريدون, تأخذ, المحتمل, الشمس, بدأ, ارجوك, المسيح, جاء, كهذا, سنذهب, تعالى, إثنان, فعلا, حتي, سيحدث, الجيد, وشك, القادم, معرفة, صورة, أعود, اسمي, طلب, آنسة, الثانية, فقدت, حفلة, تنظر, مثير, اننى, وصلت, أنتظر, السماء, يقولون, الهراء, معهم, ابي, وعندما, مجموعة, العاهرة, ماري, حسن, الزواج, نحو, دعيني, الجديدة, مهم, أمس, اتصل, ابتعد, هراء, ستة, @@ -91,7 +91,7 @@ alias words_ar = """ الدخول, جين, امرأة, متأكدة, هيه, تخبرني, مدى, إلهى, احب, عما, نرى, بيننا, تعيش, قتلت, الأحمق, تشارلي, بيل, عليكم, سؤال, طلبت, الهواء, وهذه, صوت, انتم, ميلاد, ماكس, - تعتقدين, الحديث, الجانب, صديقك, ذا, خطر, أطلق, الشارع, عملية, ببعض, تتكلم, مختلف, تحمل, مساعدة, + تعتقدين, الحديث, الجانب, صديقك, ذا, خطر, أطلق, الشارع, عملية, ببعض, تتكلم, مختلف, تحمل, مساعدة, بضعة, المناسب, المنطقة, قم, بالداخل, البداية, لأجل, زوجتك, مقابل, يحب, هاري, ممتاز, قريبا, سنكون, فعلته, بتلك, التفكير, أسفل, للعمل, العجوز, امي, الكلب, انتظري, مازال, إننا, اشعر, الجيش, شرطة """ @@ -256,13 +256,13 @@ alias words_he = """ לגרום, המשחק, שרה, לעצמך, במיוחד, המשטרה, צוות, אחזור, שאמרתי, גברים, קורא, בראש, רחוק, למקום, לשלם, להפסיק, מיוחד, הז, שמו, שמחה, כיף, אגיד, למי, ניתן, מאחורי, תמשיך, כיצד, להוציא, מתים, כולכם, אצל, חבל, האישה, לעצמי, גברתי, תוכלי, רואים, דוד, להציל, שצריך, - בעלי, דוקטור, חג, לעבודה, בוודאי, תעשי, הוד, מילה, ברצינות, הארץ, עשינו, לאנשים, רצה, + בעלי, דוקטור, חג, לעבודה, בוודאי, תעשי, הוד, מילה, ברצינות, הארץ, עשינו, לאנשים, רצה, עזוב, יצא, נתן, שניות, בעיר, סי, חשבת, שאלות, אלינו, ידע, תנו, לשים, שאולי, בכך, יכולת, אן, היד, שאוכל, מין, דקה, לדאוג, שמה, תרצה, ראה, הצילו, נוסף, החרא, אופן, כשהוא, צעיר, הפה, עולה, עובדת, שמך, לתפוס, נמצאת, כלבה, האקדח, עדיף, הטלפון, טום, פול, חכו, קר, תלך, במקרה, יעשה, שניכם, הארי, זוז, יקירתי, בהצלחה, לשבת, אנא, דין, מכיוון, יד, הקטנה, לבן, בנו, בעצמי, יין, תוריד, - למישהו, מייק, מול, נזוז, ככל, הלוואי, בעצמך, לרגע, קשור, בשקט, האל, ישנה, מעמד, כזאת, + למישהו, מייק, מול, נזוז, ככל, הלוואי, בעצמך, לרגע, קשור, בשקט, האל, ישנה, מעמד, כזאת, רד, אחורה, איכפת, איתם, ממנה, חם, מבקש, שש, מידע, השנה, אכן, אהבתי, בשעה, בסוף, שקרה, לכו, אליה, לבחור, תחשוב, ספק, המים, הפנים, לכולם, תדאגי, קחי, שתוק, לברוח, מתוק, ארלי, התיק, שים, מישהי, לקרות, לטפל, לחפש, הידיים, ח, במצב, ואל @@ -270,313 +270,313 @@ alias words_he = """ # Source: https://www.101languages.net/latvian/most-common-latvian-words/ alias words_lv = """ - ir, es, un, tu, tas, ka, man, to, vai, ko, ar, kas, par, tā, kā, viņš, uz, no, tev, - mēs, nav, jūs, bet, labi, jā, lai, nē, mani, ja, bija, viņa, esmu, viņu, tevi, esi, - mums, tad, tikai, ne, viņi, kad, jums, arī, viss, nu, kur, pie, jau, tik, tur, te, vēl, - būs, visu, šeit, tagad, kaut, ļoti, pēc, viņam, taču, savu, gan, paldies, būtu, mūsu, - šo, lūdzu, mans, kāpēc, kungs, kāds, varbūt, tās, jūsu, cik, ak, daudz, jo, esam, - zinu, mana, zini, visi, būt, tam, šī, var, līdz, viens, pa, pat, esat, nekad, domāju, - nezinu, vairs, tiešām, tie, vien, kurš, varētu, dievs, neesmu, prom, tieši, kādu, aiziet, - šis, manu, protams, vajag, neko, vienkārši, tāpēc, gribu, varu, nāc, atpakaļ, mūs, - kārtībā, iet, kopā, viņiem, pats, pirms, domā, vienmēr, gribi, nekas, bez, tava, - vienu, ej, viņai, vairāk, notiek, nevaru, pret, tavs, teica, tavu, biju, dēļ, viņas, - laiku, neviens, kādēļ, vari, labāk, patīk, dari, mājās, nebija, cilvēki, ārā, viņus, - ejam, kāda, piedod, laikam, atkal, šķiet, trīs, sevi, ser, laiks, laika, nekā, manis, - iekšā, labs, tāds, darīt, harij, nevar, viena, lieliski, kuru, šīs, sauc, šurp, teicu, - laikā, tos, pagaidi, neesi, tevis, draugs, pārāk, tēvs, šodien, teikt, dienu, visiem, - tātad, notika, hei, zināt, bijis, sveiks, atvainojiet, tika, naudu, varam, savas, citu, - tādu, manas, redzi, šajā, kam, tajā, jābūt, vecīt, tiem, runā, cilvēku, taisnība, saka, - visus, mīlu, lietas, grib, tēt, izskatās, tiek, noteikti, nozīmē, kamēr, divi, it, tāpat, - tāda, ilgi, katru, dēls, noticis, jauki, redzēt, pareizi, lūk, kundze, aiz, iespējams, - pateikt, nebūtu, gandrīz, vīrs, cilvēks, ātri, žēl, pasaules, rokas, liekas, palīdzēt, - līdzi, visas, saki, negribu, vietā, gadus, starp, skaties, tomēr, tūlīt, džek, nevajag, - sev, vajadzētu, būšu, dzīvi, droši, gadu, priekšu, skaidrs, gribēju, nāk, paskaties, mazliet, - tikko, nebūs, augšā, ceru, joprojām, nevis, ātrāk, ļauj, gribētu, liels, zina, vārdu, reizi, - pasaulē, savā, sveiki, dienas, miris, dod, priekšā, galā, klau, cilvēkiem, tavas, patiesībā, - visa, vārds, gatavs, durvis, velns, nedaudz, naudas, redzēju, velna, manā, drīz, pāri, dzīve, - vēlies, nemaz, priekš, bērni, vieta, pāris, darbu, vajadzīgs, tālāk, rīt, roku, klāt, grūti, - beidz, laba, klausies, dara, varat, sveika, biji, vismaz, kopš, redzu, saproti, kura, draugi, - zemes, šovakar, patiešām, kaa, vietu, dieva, vajadzēja, mašīnu, lejā, saku, ceļu, gada, tādēļ, - cauri, runāt, ņem, oh, divas, lieta, tikt, šie, teici, vēlāk, vaļā, nogalināt, redzējis, jāiet, - nespēju, savus, atceries, ūdens, šejienes, labu, diena, mīļā, atvaino, doties, atrast, saprotu, - abi, reiz, jādara, nesaprotu, meitene, darbs, nevari, tai, nedomāju, pilnīgi, nakti, nekādu, - pati, gadiem, vēlos, taa, kādas, cits, ejiet, pirmais, a, būsi, mamma, lietu, slikti, pašu, - acis, diezgan, pasaki, gadā, puiši, asv, sava, nost, cilvēkus, džeks, manuprāt, mājas, o, - bērns, leo, otru, nopietni, vecais, laukā, caur, dzīves, izdarīt, sieviete, vienalga, - nogalināja, dzīvo, kādreiz, čau, sirds, paliec, gribat, vēlreiz, kuras, mazais, vietas, - piedodiet, laipni, palikt, brauc, ei, the, paliek, apkārt, sievietes, tālu, garām, pirmo, - dzīvot, nāciet, runāju, kuri, tiks, jüs, ceļā, nauda, nevienam, māja, vienīgais, īsti, - sapratu, gluži, svarīgi, atvainojos, i, sen, iespēja, tavā, pavisam, nāves, māte, citi, - viegli, zem, notiks, darba, nepatīk, daži, galvu, dienā, hallo, bērnu, neesam, kungi, beidzot, - nedrīkst, vajadzēs, māju, sieva, kādam, puika, kļūst, prieks, esot, iesim, daļa, pasaule, - pietiek, visā, saviem, rīta, pagaidiet, tētis, mājā, mieru, vīru, palīdzību, dzirdēju, - tādas, dzīvs, strādā, tām, vēlas, nakts, īpaši, jūtos, nolādēts, meitenes, pusi, mammu, mees, - aizveries, vispār, dzīvību, kurā, kādā, vārdā, mašīna, būsim, vispirms, vinji, nevienu, šos, - tiksimies, džeik, vinjsh, vaina, turpini, kādi, jaunu, tuvu, atradu, vēlu, varēja, citādi, šim, - satikt, neuztraucies, pārliecināts, liec, diez, liela, doktor, nevaram, palīdzi, uzmanīgi, dažas, - šiem, atgriezies, gribēja, priecājos, parasti, valsts, asinis, tēti, you, mierā, piemēram, - jautājums, atā, bijām, zemē, pasauli, spēlē, blakus, izskaties, pirmā, nomira, paši, šobrīd, - daru, gaida, tādi, iešu, labākais, jauks, maz, pieder, jauns, nezināju, uzmanību, skaista, - prātā, brālis, patiesību, mierīgi, šai, dr, patiesi, jēzus, mārtij, zināju, suns, juus, sievu, - dzirdi, tepat, mamm, tēvu, tēva, frodo, sasodīts, desmit, stundas, tavi, mazā, džon, cita, - vajadzīga, forši, minūtes, mīlestība, nebiju, saprast, izbeidz, šoreiz, labā, dāmas, kurienes, - problēma, šādi, spēj, gadījumā, tiesa, kuģi, pēdējā, tici, esiet, atceros, katrs, nee, palīgā, - mister, liek, likās, domāt, vīri, pēdējo, traks, reizes, vienīgā, tiesības, skolā, turies, beigas, - karš, pīter, uguni, pietiks, vienam, vienā, pakaļ, jauna, zemi, puisis, ziniet, negribi, labrīt, - ap, cilvēka, draugu, atver, nezini, sāra, vēlaties, gadi, dažreiz, rokās, dabūt, nomierinies, - istabā, agrāk, ieroci, savām, meiteni, paņem, meklē, pār, seju, ziņu, dzirdējis, zinām, gatavi, - braukt, sāka, sāk, dievam, neesat, dzirdēt, spēle, bērniem, izdarīja, muļķības, doma, pēdējais, - dīvaini, atdod, ziņas, bankas, darāt, vakar, ceļš, neviena, brāli, otrā, atgriezties, galvas, - pietiekami, gulēt, uzreiz, iespēju, bijusi, karalis, bobij, šrek, tikpat, palīdziet, durvīm, - vecāki, atrodas, smieklīgi, kuģa, bail, godīgi, pēkšņi, nedēļas, māsa, skrien, ceļa, džeims, gars, - lielu, mašīnā, bojā, kurieni, ļaudis, dārgais, vecs, ūdeni, kūper, eju, mašīnas, ideja, kājas, - spēles, galvenais, citiem, jātiek, skaisti, nāvi, vinju, problēmas, vērts, drīkstu, domājat, visur, - bieži, manai, citas, apsolu, zelta, strādāju, dzimšanas, jūtu, naktī, dārgā, atbildi, noticēt, - klājas, izdevās, dok, redzat, gana, divus, ģimene, runa, stāsts, braucam, brīnišķīgi, ģimenes, - kuģis, čārlij, hey, kä, sheit, ved, atrada, mirusi, meita, paklau, nevēlos, bērnus, boss, kaptein, - nekāda, roze, nespēj, vīrietis, brīdi, īsts, dzīvē, tādā, manī, jūras, jaunkundz, iemesls, sakot, - manam, daudzi, varēsi, pateicos, jaunais, policija, pilnībā, nekur, jauka, nedari, kurus, zināms, - jautājumu, seko, re, padomā, pusē, visām, mīļais, dolāru, gadžet, katram, izdarīji, šīm, vienīgi, - mirt, apmēram, spēku, jauno, mr, celies, iepriekš, prātu, vēlētos, četri, lietām, redzēji, nevajadzētu, - donna, jaa, ticu, minūtēm, sievieti, nāve, jūties, nezina, parādi, malā, redz, uh, gredzenu, uzmanies, - kara, drošībā, sapnis, bijāt, grāmatu, slepkava, vinja, paga, pieci, pilsētā, drošs, pateikšu, gāja, - spēli, beigās, hanna, princese, jebkad, dakter, veids, palīdzība, stāstu, izmantot, spēlēt, gaisā, - darīšu, došos, dodas, kreisi, negribēju, mazāk, pastāsti, tak, devās, sirdi, misis, vis, patiesība, - veidā, harijs, cenšos, tuvāk, kurp, klausieties, sāp, ļaujiet, neticami, kungu, sīkais, iedomāties, - daļu, mazs, iedod, mazo, meklēju, parunāt, jādodas, sevis, pārējie, veicas, otra, mīlestību, zēns, - dodies, galam, sem, bīstami, zvēru, iespējas, maza, ellē, virs, nekādas, maniem, skatieties, šonakt, - svēto, kapteinis, iepazīties, pazīstu, turp, gredzens, nepareizi, lieliska, īstais, pagaidām, kājām, - mirklīti, pašlaik, d, poter, saprati, aprunāties, paša, šejieni, interesanti, nevarētu, pašā, paskat, - bailes, skolas, vārdus, aizmirsti, gaismas, kāp, zēni, darīsim, pašam, beidzies, sauca, māti, akmens, + ir, es, un, tu, tas, ka, man, to, vai, ko, ar, kas, par, tā, kā, viņš, uz, no, tev, + mēs, nav, jūs, bet, labi, jā, lai, nē, mani, ja, bija, viņa, esmu, viņu, tevi, esi, + mums, tad, tikai, ne, viņi, kad, jums, arī, viss, nu, kur, pie, jau, tik, tur, te, vēl, + būs, visu, šeit, tagad, kaut, ļoti, pēc, viņam, taču, savu, gan, paldies, būtu, mūsu, + šo, lūdzu, mans, kāpēc, kungs, kāds, varbūt, tās, jūsu, cik, ak, daudz, jo, esam, + zinu, mana, zini, visi, būt, tam, šī, var, līdz, viens, pa, pat, esat, nekad, domāju, + nezinu, vairs, tiešām, tie, vien, kurš, varētu, dievs, neesmu, prom, tieši, kādu, aiziet, + šis, manu, protams, vajag, neko, vienkārši, tāpēc, gribu, varu, nāc, atpakaļ, mūs, + kārtībā, iet, kopā, viņiem, pats, pirms, domā, vienmēr, gribi, nekas, bez, tava, + vienu, ej, viņai, vairāk, notiek, nevaru, pret, tavs, teica, tavu, biju, dēļ, viņas, + laiku, neviens, kādēļ, vari, labāk, patīk, dari, mājās, nebija, cilvēki, ārā, viņus, + ejam, kāda, piedod, laikam, atkal, šķiet, trīs, sevi, ser, laiks, laika, nekā, manis, + iekšā, labs, tāds, darīt, harij, nevar, viena, lieliski, kuru, šīs, sauc, šurp, teicu, + laikā, tos, pagaidi, neesi, tevis, draugs, pārāk, tēvs, šodien, teikt, dienu, visiem, + tātad, notika, hei, zināt, bijis, sveiks, atvainojiet, tika, naudu, varam, savas, citu, + tādu, manas, redzi, šajā, kam, tajā, jābūt, vecīt, tiem, runā, cilvēku, taisnība, saka, + visus, mīlu, lietas, grib, tēt, izskatās, tiek, noteikti, nozīmē, kamēr, divi, it, tāpat, + tāda, ilgi, katru, dēls, noticis, jauki, redzēt, pareizi, lūk, kundze, aiz, iespējams, + pateikt, nebūtu, gandrīz, vīrs, cilvēks, ātri, žēl, pasaules, rokas, liekas, palīdzēt, + līdzi, visas, saki, negribu, vietā, gadus, starp, skaties, tomēr, tūlīt, džek, nevajag, + sev, vajadzētu, būšu, dzīvi, droši, gadu, priekšu, skaidrs, gribēju, nāk, paskaties, mazliet, + tikko, nebūs, augšā, ceru, joprojām, nevis, ātrāk, ļauj, gribētu, liels, zina, vārdu, reizi, + pasaulē, savā, sveiki, dienas, miris, dod, priekšā, galā, klau, cilvēkiem, tavas, patiesībā, + visa, vārds, gatavs, durvis, velns, nedaudz, naudas, redzēju, velna, manā, drīz, pāri, dzīve, + vēlies, nemaz, priekš, bērni, vieta, pāris, darbu, vajadzīgs, tālāk, rīt, roku, klāt, grūti, + beidz, laba, klausies, dara, varat, sveika, biji, vismaz, kopš, redzu, saproti, kura, draugi, + zemes, šovakar, patiešām, kaa, vietu, dieva, vajadzēja, mašīnu, lejā, saku, ceļu, gada, tādēļ, + cauri, runāt, ņem, oh, divas, lieta, tikt, šie, teici, vēlāk, vaļā, nogalināt, redzējis, jāiet, + nespēju, savus, atceries, ūdens, šejienes, labu, diena, mīļā, atvaino, doties, atrast, saprotu, + abi, reiz, jādara, nesaprotu, meitene, darbs, nevari, tai, nedomāju, pilnīgi, nakti, nekādu, + pati, gadiem, vēlos, taa, kādas, cits, ejiet, pirmais, a, būsi, mamma, lietu, slikti, pašu, + acis, diezgan, pasaki, gadā, puiši, asv, sava, nost, cilvēkus, džeks, manuprāt, mājas, o, + bērns, leo, otru, nopietni, vecais, laukā, caur, dzīves, izdarīt, sieviete, vienalga, + nogalināja, dzīvo, kādreiz, čau, sirds, paliec, gribat, vēlreiz, kuras, mazais, vietas, + piedodiet, laipni, palikt, brauc, ei, the, paliek, apkārt, sievietes, tālu, garām, pirmo, + dzīvot, nāciet, runāju, kuri, tiks, jüs, ceļā, nauda, nevienam, māja, vienīgais, īsti, + sapratu, gluži, svarīgi, atvainojos, i, sen, iespēja, tavā, pavisam, nāves, māte, citi, + viegli, zem, notiks, darba, nepatīk, daži, galvu, dienā, hallo, bērnu, neesam, kungi, beidzot, + nedrīkst, vajadzēs, māju, sieva, kādam, puika, kļūst, prieks, esot, iesim, daļa, pasaule, + pietiek, visā, saviem, rīta, pagaidiet, tētis, mājā, mieru, vīru, palīdzību, dzirdēju, + tādas, dzīvs, strādā, tām, vēlas, nakts, īpaši, jūtos, nolādēts, meitenes, pusi, mammu, mees, + aizveries, vispār, dzīvību, kurā, kādā, vārdā, mašīna, būsim, vispirms, vinji, nevienu, šos, + tiksimies, džeik, vinjsh, vaina, turpini, kādi, jaunu, tuvu, atradu, vēlu, varēja, citādi, šim, + satikt, neuztraucies, pārliecināts, liec, diez, liela, doktor, nevaram, palīdzi, uzmanīgi, dažas, + šiem, atgriezies, gribēja, priecājos, parasti, valsts, asinis, tēti, you, mierā, piemēram, + jautājums, atā, bijām, zemē, pasauli, spēlē, blakus, izskaties, pirmā, nomira, paši, šobrīd, + daru, gaida, tādi, iešu, labākais, jauks, maz, pieder, jauns, nezināju, uzmanību, skaista, + prātā, brālis, patiesību, mierīgi, šai, dr, patiesi, jēzus, mārtij, zināju, suns, juus, sievu, + dzirdi, tepat, mamm, tēvu, tēva, frodo, sasodīts, desmit, stundas, tavi, mazā, džon, cita, + vajadzīga, forši, minūtes, mīlestība, nebiju, saprast, izbeidz, šoreiz, labā, dāmas, kurienes, + problēma, šādi, spēj, gadījumā, tiesa, kuģi, pēdējā, tici, esiet, atceros, katrs, nee, palīgā, + mister, liek, likās, domāt, vīri, pēdējo, traks, reizes, vienīgā, tiesības, skolā, turies, beigas, + karš, pīter, uguni, pietiks, vienam, vienā, pakaļ, jauna, zemi, puisis, ziniet, negribi, labrīt, + ap, cilvēka, draugu, atver, nezini, sāra, vēlaties, gadi, dažreiz, rokās, dabūt, nomierinies, + istabā, agrāk, ieroci, savām, meiteni, paņem, meklē, pār, seju, ziņu, dzirdējis, zinām, gatavi, + braukt, sāka, sāk, dievam, neesat, dzirdēt, spēle, bērniem, izdarīja, muļķības, doma, pēdējais, + dīvaini, atdod, ziņas, bankas, darāt, vakar, ceļš, neviena, brāli, otrā, atgriezties, galvas, + pietiekami, gulēt, uzreiz, iespēju, bijusi, karalis, bobij, šrek, tikpat, palīdziet, durvīm, + vecāki, atrodas, smieklīgi, kuģa, bail, godīgi, pēkšņi, nedēļas, māsa, skrien, ceļa, džeims, gars, + lielu, mašīnā, bojā, kurieni, ļaudis, dārgais, vecs, ūdeni, kūper, eju, mašīnas, ideja, kājas, + spēles, galvenais, citiem, jātiek, skaisti, nāvi, vinju, problēmas, vērts, drīkstu, domājat, visur, + bieži, manai, citas, apsolu, zelta, strādāju, dzimšanas, jūtu, naktī, dārgā, atbildi, noticēt, + klājas, izdevās, dok, redzat, gana, divus, ģimene, runa, stāsts, braucam, brīnišķīgi, ģimenes, + kuģis, čārlij, hey, kä, sheit, ved, atrada, mirusi, meita, paklau, nevēlos, bērnus, boss, kaptein, + nekāda, roze, nespēj, vīrietis, brīdi, īsts, dzīvē, tādā, manī, jūras, jaunkundz, iemesls, sakot, + manam, daudzi, varēsi, pateicos, jaunais, policija, pilnībā, nekur, jauka, nedari, kurus, zināms, + jautājumu, seko, re, padomā, pusē, visām, mīļais, dolāru, gadžet, katram, izdarīji, šīm, vienīgi, + mirt, apmēram, spēku, jauno, mr, celies, iepriekš, prātu, vēlētos, četri, lietām, redzēji, nevajadzētu, + donna, jaa, ticu, minūtēm, sievieti, nāve, jūties, nezina, parādi, malā, redz, uh, gredzenu, uzmanies, + kara, drošībā, sapnis, bijāt, grāmatu, slepkava, vinja, paga, pieci, pilsētā, drošs, pateikšu, gāja, + spēli, beigās, hanna, princese, jebkad, dakter, veids, palīdzība, stāstu, izmantot, spēlēt, gaisā, + darīšu, došos, dodas, kreisi, negribēju, mazāk, pastāsti, tak, devās, sirdi, misis, vis, patiesība, + veidā, harijs, cenšos, tuvāk, kurp, klausieties, sāp, ļaujiet, neticami, kungu, sīkais, iedomāties, + daļu, mazs, iedod, mazo, meklēju, parunāt, jādodas, sevis, pārējie, veicas, otra, mīlestību, zēns, + dodies, galam, sem, bīstami, zvēru, iespējas, maza, ellē, virs, nekādas, maniem, skatieties, šonakt, + svēto, kapteinis, iepazīties, pazīstu, turp, gredzens, nepareizi, lieliska, īstais, pagaidām, kājām, + mirklīti, pašlaik, d, poter, saprati, aprunāties, paša, šejieni, interesanti, nevarētu, pašā, paskat, + bailes, skolas, vārdus, aizmirsti, gaismas, kāp, zēni, darīsim, pašam, beidzies, sauca, māti, akmens, grāmatas, diemžēl, tevī, kļūt, endij, patika, nabaga, tuvojas, tēvoci, dienām, plāns """ # Source: https://www.101languages.net/polish/most-common-polish-words/ alias words_pl = """ -nie, to, się, w, na, i, z, co, jest, że, do, tak, jak, o, mnie, a, ale, mi, za, ja, ci, tu, ty, czy, -tym, go, tego, tylko, jestem, po, cię, ma, już, mam, jesteś, może, pan, dla, coś, dobrze, wiem, jeśli, -teraz, proszę, od, wszystko, tam, więc, masz, nic, on, być, gdzie, będzie, są, ten, mogę, ciebie, -bardzo, sobie, kiedy, ze, wiesz, no, jej, jeszcze, pani, był, mój, chcę, było, dlaczego, by, przez, -nas, tutaj, chcesz, jego, ją, ich, nigdy, żeby, też, kto, naprawdę, przepraszam, bo, mamy, porządku, -możesz, dobra, mu, dziękuję, ona, domu, panie, muszę, nawet, chyba, hej, właśnie, prawda, zrobić, te, -zawsze, będę, moja, gdy, je, trochę, nam, moje, cześć, bez, nim, była, tej, jesteśmy, dalej, pana, -dzięki, wszyscy, musisz, twój, lat, tobą, więcej, ktoś, czas, ta, który, chce, powiedzieć, chodź, dobry, -mną, niech, sam, razem, chodzi, czego, boże, stało, musimy, raz, albo, prostu, będziesz, dzień, możemy, -was, myślę, czym, daj, lepiej, czemu, ludzie, ok, przed, życie, ludzi, robisz, my, niż, tych, kim, rzeczy, -myślisz, powiedz, przy, twoja, oni, oczywiście, nikt, siebie, stąd, niego, twoje, miał, jeden, mówi, -powiedział, moim, czasu, u, dziś, im, które, musi, wtedy, taki, aby, pod, dwa, temu, pewnie, takie, cóż, -wszystkie, mojego, dużo, cholera, kurwa, wie, znaczy, wygląda, dzieje, mieć, ile, iść, potem, będziemy, -dzieci, dlatego, cały, byłem, moją, skąd, szybko, jako, kochanie, stary, trzeba, miejsce, myśli, można, -sie, jasne, mojej, wam, swoje, zaraz, wiele, nią, rozumiem, nich, wszystkich, jakieś, jakiś, kocham, idź, -tę, mają, mówię, mówisz, dzisiaj, nad, pomóc, takiego, przestań, tobie, jutro, robić, jaki, mamo, kilka, -przykro, wiedzieć, ojciec, widzisz, zbyt, zobaczyć, która, ani, tyle, trzy, tą, sposób, miałem, tato, niej, -później, pieniądze, robi, kogoś, kiedyś, zanim, widzę, pracy, świetnie, pewno, myślałem, będą, bardziej, -życia, długo, och, sir, ponieważ, aż, dni, nocy, każdy, dnia, znowu, oh, chciałem, taka, swoją, twoim, -widziałem, stanie, powiem, imię, wy, żebyś, nadzieję, twojej, panu, spokój, słuchaj, rację, spójrz, razie, -znam, pierwszy, koniec, chciałbym, we, nami, jakie, posłuchaj, problem, przecież, dobre, nasz, dziecko, drzwi, -nasze, miło, czuję, mógł, żyje, jeżeli, człowiek, powiedziałem, gdyby, roku, dom, sama, potrzebuję, -wszystkim, zostać, wciąż, dokładnie, mama, którzy, mówić, zamknij, mów, twoją, chwilę, zrobił, samo, idziemy, -nadal, jesteście, zabić, były, sobą, kogo, lub, lubię, the, podoba, minut, bym, chciał, bądź, czegoś, gdzieś, -mówiłem, chodźmy, znaleźć, poza, spokojnie, wcześniej, został, rozumiesz, mogą, prawie, wydaje, miała, mały, -byłeś, facet, zrobię, macie, żadnych, razy, noc, ciągle, broń, moich, twojego, końcu, pomocy, czekaj, znasz, -oczy, weź, idę, halo, dość, innego, pomysł, jakby, trzymaj, jedno, ojca, porozmawiać, pamiętasz, lata, -powinieneś, którą, powodu, takim, niczego, powinniśmy, oto, napisy, jednak, świat, pokoju, żebym, sprawy, -dwie, samochód, swój, wystarczy, pewien, źle, pozwól, numer, jedną, miejscu, you, drogi, byłam, dokąd, miłość, -panowie, pieniędzy, którego, matka, rano, dwóch, całe, patrz, rzecz, nowy, idzie, wyglądasz, bóg, byś, życiu, -nimi, nikogo, całą, swojego, świecie, sprawa, dziewczyna, prawo, byli, zostaw, wiedziałem, jedna, widzieć, -swoim, kobiety, uważaj, najpierw, właściwie, dam, również, diabła, chcą, którym, zrób, da, jednego, dać, -musiał, ręce, powinienem, których, znów, powiedziała, wczoraj, czujesz, zaczekaj, sądzę, śmierć, mówił, -podczas, której, całkiem, pracę, żona, pójdę, pamiętam, powiedziałeś, mówią, wiemy, jezu, witam, cholery, -swoich, telefon, wielu, także, poważnie, skoro, miejsca, robię, śmierci, słyszałem, wina, zrobiłem, dobranoc, -parę, prawdę, swojej, serce, inaczej, dziewczyny, kobieta, powiesz, martw, rób, pytanie, pięć, innych, one, -gra, natychmiast, wrócić, szybciej, jednym, cokolwiek, wierzę, wcale, wieczór, ważne, człowieka, wielki, nowa, -dopiero, ziemi, gdybym, tata, poznać, stać, jack, myślałam, witaj, słowa, zrobiłeś, gówno, john, dolarów, -sprawę, inne, idziesz, miałam, wiecie, chciałam, zobaczenia, widziałeś, żyć, każdym, nasza, panią, wspaniale, -chwili, każdego, nowego, nieźle, takich, między, dostać, powinien, dawaj, dopóki, naszych, naszej, świata, -chłopaki, chcemy, poczekaj, jaką, człowieku, czasem, żadnego, inny, przynajmniej, nazywa, super, naszego, -szczęście, potrzebuje, godziny, zabrać, powrotem, syn, lecz, słucham, twoich, udało, boga, pokój, działa, -ogóle, naszym, szkoły, możliwe, wiedział, wyjść, wszystkiego, byłoby, daleko, wieczorem, skarbie, jaka, -mógłbym, ostatni, możecie, cztery, doktorze, zrobimy, mąż, przeciwko, zgadza, zrobisz, czasie, czasami, -brzmi, raczej, ciało, należy, miasta, miałeś, taką, brat, cieszę, rozmawiać, cała, czymś, wybacz, twarz, -mała, chcecie, dr, pojęcia, lubisz, głowę, najbardziej, dziwne, głowy, wody, pół, wiadomość, policja, -strony, l, pl, mogłem, mieli, widzenia, pewna, ruszaj, wracaj, ode, popatrz, końca, plan, kiedykolwiek, -wejść, została, rok, syna, uda, wrócę, zewnątrz, droga, uwierzyć, późno, zostało, zostanie, zły, kapitanie, -potrzebujemy, byliśmy, zobaczymy, gotowy, obchodzi, jechać, rodziny, widziałam, drodze, czeka, środku, film, -spać, człowiekiem, zupełnie, taa, pomóż, mieliśmy, pomoc, słowo, innym, ostatnio, and, zna, mogła, pójść, -chłopcy, wziąć, mógłbyś, tłumaczenie, potrzebujesz, słyszysz, blisko, godzin, miłości, góry, zabił, piękna, -napisów, pokaż, moi, lubi, robota, prawa, ciężko, kimś, dół, rękę, nazywam, wielkie, część, wkrótce, naszą, -jedziemy, zapomnij, prosto, radę, robimy, powinnaś, gdybyś, chociaż, zależy, stronie, wypadek, tydzień, byłaś, -nowe, małe, praca, drogę, chłopak, zrobi, widział, mieście, synu, oznacza, krew, mógłby, krwi, górę, joe, wasza, -robią, tędy, wszędzie, temat, pierwsze, zobacz, ponad, kraju, mało, racja, tymi, cicho, chciała, powiedziałam, -leci, powinno, mówiąc, serca, chciałabym, miasto, george, spotkać, mniej, e, przyjaciel, mówiłeś, kłopoty, -miesięcy, jakąś, żaden, zostań, roboty, zatrzymać, frank, nieważne, głupi, pa, koleś, sprawie, spotkanie, ojcze, -pewnego, spróbuj, drugi, znalazłem, pracować, całym, zostały, złe, niemożliwe, jakoś, zdjęcia, stronę, wiedzą, it, -dziewczynę, zaczyna, mogli, samego, sądzisz, rodzina, razu, trudno, samochodu, okay, boję, szkoda, wami, charlie, -dał, środka, ojcem, piękne, dawno, choć, panem, przykład, nagle, bracie, żadnej, drugiej, przyjaciół, otwórz, -myśleć, doktor, chwileczkę, pracuje, najlepszy, brata, czyż, często, http, powinnam, odejść, trzech, chodźcie, -nazwisko, szansę, ciała, policji, szkole, prawdopodobnie, serio, matki, org, wolno, sami, muszą, zabierz, -słyszałeś, siostra, uspokój, wystarczająco, początku, faceta, problemy, szefie, broni, me, zostawić, czuje, -będziecie, przyszedł, wiedziałam, kilku, inni, b, głowie, historia, według, www, wezmę, nowym, czekać, stój, -mężczyzna, mówiłam, pokazać, około, wracam, wieku, jakaś, pierwsza, niczym, zabiję, zdjęcie, zabawne, rodzice, -musiałem, całkowicie, sprawdzić, mike, przyjdzie, sześć, kupić, dobrym, żonę, dasz, pomoże, nogi, obok, ruszać, -trzymać, zadzwonić, panno, godzinę, boli, oraz, spokoju, walczyć, wróci, tom, wspólnego, zmienić, ostatnie, uwagę, -znać, jednej, dłużej, powie, pogadać, łatwo, większość, nikomu, michael, córka, niedługo, powodzenia, tygodniu, -włosy, niestety, górze, kochasz, prawdziwy, historii, ulicy, musicie, gotowi, chwila, samym, grać, zadzwonię, -strasznie, mieszka, kocha, rady, tyłu, jakim, obiecuję, tysięcy, pomyślałem, pracuję, jedynie, pozwolić, uwaga, +nie, to, się, w, na, i, z, co, jest, że, do, tak, jak, o, mnie, a, ale, mi, za, ja, ci, tu, ty, czy, +tym, go, tego, tylko, jestem, po, cię, ma, już, mam, jesteś, może, pan, dla, coś, dobrze, wiem, jeśli, +teraz, proszę, od, wszystko, tam, więc, masz, nic, on, być, gdzie, będzie, są, ten, mogę, ciebie, +bardzo, sobie, kiedy, ze, wiesz, no, jej, jeszcze, pani, był, mój, chcę, było, dlaczego, by, przez, +nas, tutaj, chcesz, jego, ją, ich, nigdy, żeby, też, kto, naprawdę, przepraszam, bo, mamy, porządku, +możesz, dobra, mu, dziękuję, ona, domu, panie, muszę, nawet, chyba, hej, właśnie, prawda, zrobić, te, +zawsze, będę, moja, gdy, je, trochę, nam, moje, cześć, bez, nim, była, tej, jesteśmy, dalej, pana, +dzięki, wszyscy, musisz, twój, lat, tobą, więcej, ktoś, czas, ta, który, chce, powiedzieć, chodź, dobry, +mną, niech, sam, razem, chodzi, czego, boże, stało, musimy, raz, albo, prostu, będziesz, dzień, możemy, +was, myślę, czym, daj, lepiej, czemu, ludzie, ok, przed, życie, ludzi, robisz, my, niż, tych, kim, rzeczy, +myślisz, powiedz, przy, twoja, oni, oczywiście, nikt, siebie, stąd, niego, twoje, miał, jeden, mówi, +powiedział, moim, czasu, u, dziś, im, które, musi, wtedy, taki, aby, pod, dwa, temu, pewnie, takie, cóż, +wszystkie, mojego, dużo, cholera, kurwa, wie, znaczy, wygląda, dzieje, mieć, ile, iść, potem, będziemy, +dzieci, dlatego, cały, byłem, moją, skąd, szybko, jako, kochanie, stary, trzeba, miejsce, myśli, można, +sie, jasne, mojej, wam, swoje, zaraz, wiele, nią, rozumiem, nich, wszystkich, jakieś, jakiś, kocham, idź, +tę, mają, mówię, mówisz, dzisiaj, nad, pomóc, takiego, przestań, tobie, jutro, robić, jaki, mamo, kilka, +przykro, wiedzieć, ojciec, widzisz, zbyt, zobaczyć, która, ani, tyle, trzy, tą, sposób, miałem, tato, niej, +później, pieniądze, robi, kogoś, kiedyś, zanim, widzę, pracy, świetnie, pewno, myślałem, będą, bardziej, +życia, długo, och, sir, ponieważ, aż, dni, nocy, każdy, dnia, znowu, oh, chciałem, taka, swoją, twoim, +widziałem, stanie, powiem, imię, wy, żebyś, nadzieję, twojej, panu, spokój, słuchaj, rację, spójrz, razie, +znam, pierwszy, koniec, chciałbym, we, nami, jakie, posłuchaj, problem, przecież, dobre, nasz, dziecko, drzwi, +nasze, miło, czuję, mógł, żyje, jeżeli, człowiek, powiedziałem, gdyby, roku, dom, sama, potrzebuję, +wszystkim, zostać, wciąż, dokładnie, mama, którzy, mówić, zamknij, mów, twoją, chwilę, zrobił, samo, idziemy, +nadal, jesteście, zabić, były, sobą, kogo, lub, lubię, the, podoba, minut, bym, chciał, bądź, czegoś, gdzieś, +mówiłem, chodźmy, znaleźć, poza, spokojnie, wcześniej, został, rozumiesz, mogą, prawie, wydaje, miała, mały, +byłeś, facet, zrobię, macie, żadnych, razy, noc, ciągle, broń, moich, twojego, końcu, pomocy, czekaj, znasz, +oczy, weź, idę, halo, dość, innego, pomysł, jakby, trzymaj, jedno, ojca, porozmawiać, pamiętasz, lata, +powinieneś, którą, powodu, takim, niczego, powinniśmy, oto, napisy, jednak, świat, pokoju, żebym, sprawy, +dwie, samochód, swój, wystarczy, pewien, źle, pozwól, numer, jedną, miejscu, you, drogi, byłam, dokąd, miłość, +panowie, pieniędzy, którego, matka, rano, dwóch, całe, patrz, rzecz, nowy, idzie, wyglądasz, bóg, byś, życiu, +nimi, nikogo, całą, swojego, świecie, sprawa, dziewczyna, prawo, byli, zostaw, wiedziałem, jedna, widzieć, +swoim, kobiety, uważaj, najpierw, właściwie, dam, również, diabła, chcą, którym, zrób, da, jednego, dać, +musiał, ręce, powinienem, których, znów, powiedziała, wczoraj, czujesz, zaczekaj, sądzę, śmierć, mówił, +podczas, której, całkiem, pracę, żona, pójdę, pamiętam, powiedziałeś, mówią, wiemy, jezu, witam, cholery, +swoich, telefon, wielu, także, poważnie, skoro, miejsca, robię, śmierci, słyszałem, wina, zrobiłem, dobranoc, +parę, prawdę, swojej, serce, inaczej, dziewczyny, kobieta, powiesz, martw, rób, pytanie, pięć, innych, one, +gra, natychmiast, wrócić, szybciej, jednym, cokolwiek, wierzę, wcale, wieczór, ważne, człowieka, wielki, nowa, +dopiero, ziemi, gdybym, tata, poznać, stać, jack, myślałam, witaj, słowa, zrobiłeś, gówno, john, dolarów, +sprawę, inne, idziesz, miałam, wiecie, chciałam, zobaczenia, widziałeś, żyć, każdym, nasza, panią, wspaniale, +chwili, każdego, nowego, nieźle, takich, między, dostać, powinien, dawaj, dopóki, naszych, naszej, świata, +chłopaki, chcemy, poczekaj, jaką, człowieku, czasem, żadnego, inny, przynajmniej, nazywa, super, naszego, +szczęście, potrzebuje, godziny, zabrać, powrotem, syn, lecz, słucham, twoich, udało, boga, pokój, działa, +ogóle, naszym, szkoły, możliwe, wiedział, wyjść, wszystkiego, byłoby, daleko, wieczorem, skarbie, jaka, +mógłbym, ostatni, możecie, cztery, doktorze, zrobimy, mąż, przeciwko, zgadza, zrobisz, czasie, czasami, +brzmi, raczej, ciało, należy, miasta, miałeś, taką, brat, cieszę, rozmawiać, cała, czymś, wybacz, twarz, +mała, chcecie, dr, pojęcia, lubisz, głowę, najbardziej, dziwne, głowy, wody, pół, wiadomość, policja, +strony, l, pl, mogłem, mieli, widzenia, pewna, ruszaj, wracaj, ode, popatrz, końca, plan, kiedykolwiek, +wejść, została, rok, syna, uda, wrócę, zewnątrz, droga, uwierzyć, późno, zostało, zostanie, zły, kapitanie, +potrzebujemy, byliśmy, zobaczymy, gotowy, obchodzi, jechać, rodziny, widziałam, drodze, czeka, środku, film, +spać, człowiekiem, zupełnie, taa, pomóż, mieliśmy, pomoc, słowo, innym, ostatnio, and, zna, mogła, pójść, +chłopcy, wziąć, mógłbyś, tłumaczenie, potrzebujesz, słyszysz, blisko, godzin, miłości, góry, zabił, piękna, +napisów, pokaż, moi, lubi, robota, prawa, ciężko, kimś, dół, rękę, nazywam, wielkie, część, wkrótce, naszą, +jedziemy, zapomnij, prosto, radę, robimy, powinnaś, gdybyś, chociaż, zależy, stronie, wypadek, tydzień, byłaś, +nowe, małe, praca, drogę, chłopak, zrobi, widział, mieście, synu, oznacza, krew, mógłby, krwi, górę, joe, wasza, +robią, tędy, wszędzie, temat, pierwsze, zobacz, ponad, kraju, mało, racja, tymi, cicho, chciała, powiedziałam, +leci, powinno, mówiąc, serca, chciałabym, miasto, george, spotkać, mniej, e, przyjaciel, mówiłeś, kłopoty, +miesięcy, jakąś, żaden, zostań, roboty, zatrzymać, frank, nieważne, głupi, pa, koleś, sprawie, spotkanie, ojcze, +pewnego, spróbuj, drugi, znalazłem, pracować, całym, zostały, złe, niemożliwe, jakoś, zdjęcia, stronę, wiedzą, it, +dziewczynę, zaczyna, mogli, samego, sądzisz, rodzina, razu, trudno, samochodu, okay, boję, szkoda, wami, charlie, +dał, środka, ojcem, piękne, dawno, choć, panem, przykład, nagle, bracie, żadnej, drugiej, przyjaciół, otwórz, +myśleć, doktor, chwileczkę, pracuje, najlepszy, brata, czyż, często, http, powinnam, odejść, trzech, chodźcie, +nazwisko, szansę, ciała, policji, szkole, prawdopodobnie, serio, matki, org, wolno, sami, muszą, zabierz, +słyszałeś, siostra, uspokój, wystarczająco, początku, faceta, problemy, szefie, broni, me, zostawić, czuje, +będziecie, przyszedł, wiedziałam, kilku, inni, b, głowie, historia, według, www, wezmę, nowym, czekać, stój, +mężczyzna, mówiłam, pokazać, około, wracam, wieku, jakaś, pierwsza, niczym, zabiję, zdjęcie, zabawne, rodzice, +musiałem, całkowicie, sprawdzić, mike, przyjdzie, sześć, kupić, dobrym, żonę, dasz, pomoże, nogi, obok, ruszać, +trzymać, zadzwonić, panno, godzinę, boli, oraz, spokoju, walczyć, wróci, tom, wspólnego, zmienić, ostatnie, uwagę, +znać, jednej, dłużej, powie, pogadać, łatwo, większość, nikomu, michael, córka, niedługo, powodzenia, tygodniu, +włosy, niestety, górze, kochasz, prawdziwy, historii, ulicy, musicie, gotowi, chwila, samym, grać, zadzwonię, +strasznie, mieszka, kocha, rady, tyłu, jakim, obiecuję, tysięcy, pomyślałem, pracuję, jedynie, pozwolić, uwaga, proste, zacząć, myśl, wstawaj, rany, prawdziwe, takiej, jakiegoś, umrzeć, złego, okazji """ # Source: https://www.101languages.net/greek/most-common-greek-words/ alias words_el = """ - να, το, δεν, θα, είναι, και, μου, με, ο, για, την, σου, τα, τον, η, τι, σε, που, του, αυτό, στο, ότι, - από, τη, της, ναι, σας, ένα, εδώ, τους, αν, όχι, μια, μας, είσαι, αλλά, κι, οι, πρέπει, είμαι, ήταν, - πολύ, στην, δε, γιατί, εγώ, τώρα, πως, εντάξει, τις, κάτι, ξέρω, μην, έχει, έχω, εσύ, θέλω, καλά, - έτσι, στη, στον, αυτή, ξέρεις, κάνεις, εκεί, σαν, μόνο, μπορώ, όταν, έχεις, μαζί, πώς, τίποτα, - ευχαριστώ, όλα, κάνω, πάμε, ή, ποτέ, τόσο, πού, αυτά, έλα, στα, μέσα, κάνει, των, μπορεί, κύριε, πιο, - σπίτι, παρακαλώ, λοιπόν, μπορείς, αυτός, υπάρχει, ακόμα, πίσω, λίγο, πάντα, είμαστε, γεια, τότε, - ειναι, μετά, πω, έχουμε, μη, ένας, ποιος, νομίζω, πριν, απλά, δω, δουλειά, παιδιά, οχι, αλήθεια, - όλοι, ίσως, λες, όπως, ας, θέλεις, μα, άλλο, είπε, ζωή, πάω, δύο, ωραία, έναν, καλό, απο, κάνουμε, - έξω, κοίτα, είχε, στις, πάνω, είπα, πες, χρόνια, ούτε, κάτω, είστε, ώρα, θες, σένα, έχουν, γυναίκα, - μένα, μέρα, καλή, φορά, όμως, κανείς, κάθε, ε, οτι, αρέσει, ήμουν, μέχρι, δυο, είχα, μαμά, χωρίς, - καλύτερα, πας, πράγματα, πάει, σήμερα, κάποιος, ήθελα, θέλει, θεέ, έπρεπε, λέει, μία, σωστά, αυτόν, - μπορούμε, συμβαίνει, ακριβώς, έγινε, πόσο, επειδή, λεφτά, πολλά, μόλις, εμένα, λένε, πεις, συγγνώμη, - γρήγορα, ω, έκανε, λυπάμαι, γίνει, παιδί, περίμενε, έκανα, φίλε, βλέπω, μέρος, στιγμή, φαίνεται, + να, το, δεν, θα, είναι, και, μου, με, ο, για, την, σου, τα, τον, η, τι, σε, που, του, αυτό, στο, ότι, + από, τη, της, ναι, σας, ένα, εδώ, τους, αν, όχι, μια, μας, είσαι, αλλά, κι, οι, πρέπει, είμαι, ήταν, + πολύ, στην, δε, γιατί, εγώ, τώρα, πως, εντάξει, τις, κάτι, ξέρω, μην, έχει, έχω, εσύ, θέλω, καλά, + έτσι, στη, στον, αυτή, ξέρεις, κάνεις, εκεί, σαν, μόνο, μπορώ, όταν, έχεις, μαζί, πώς, τίποτα, + ευχαριστώ, όλα, κάνω, πάμε, ή, ποτέ, τόσο, πού, αυτά, έλα, στα, μέσα, κάνει, των, μπορεί, κύριε, πιο, + σπίτι, παρακαλώ, λοιπόν, μπορείς, αυτός, υπάρχει, ακόμα, πίσω, λίγο, πάντα, είμαστε, γεια, τότε, + ειναι, μετά, πω, έχουμε, μη, ένας, ποιος, νομίζω, πριν, απλά, δω, δουλειά, παιδιά, οχι, αλήθεια, + όλοι, ίσως, λες, όπως, ας, θέλεις, μα, άλλο, είπε, ζωή, πάω, δύο, ωραία, έναν, καλό, απο, κάνουμε, + έξω, κοίτα, είχε, στις, πάνω, είπα, πες, χρόνια, ούτε, κάτω, είστε, ώρα, θες, σένα, έχουν, γυναίκα, + μένα, μέρα, καλή, φορά, όμως, κανείς, κάθε, ε, οτι, αρέσει, ήμουν, μέχρι, δυο, είχα, μαμά, χωρίς, + καλύτερα, πας, πράγματα, πάει, σήμερα, κάποιος, ήθελα, θέλει, θεέ, έπρεπε, λέει, μία, σωστά, αυτόν, + μπορούμε, συμβαίνει, ακριβώς, έγινε, πόσο, επειδή, λεφτά, πολλά, μόλις, εμένα, λένε, πεις, συγγνώμη, + γρήγορα, ω, έκανε, λυπάμαι, γίνει, παιδί, περίμενε, έκανα, φίλε, βλέπω, μέρος, στιγμή, φαίνεται, πρόβλημα, άλλη, είπες, φυσικά, κάποιον, όσο, πήγαινε, πάλι, λάθος, ως, έχετε, εσένα, πράγμα, κυρία, - χρόνο, στους, πάρω, μπαμπά, δικό, απ, γίνεται, εσείς, λέω, συγνώμη, όλο, μητέρα, έκανες, πιστεύω, - ήσουν, κάποια, σίγουρα, υπάρχουν, όλη, ενα, αυτο, ξέρει, μωρό, ιδέα, δει, μάλλον, ίδιο, πάρε, είδα, - αύριο, βλέπεις, νέα, κόσμο, νομίζεις, τί, εμείς, σταμάτα, πάρει, αγάπη, πατέρας, όλους, αρκετά, - χρειάζεται, καιρό, φορές, κάνουν, ακόμη, α, πατέρα, προς, αμέσως, πια, ηταν, χαρά, απόψε, όνομα, - μάλιστα, μόνος, μεγάλη, κανένα, ελα, πραγματικά, αυτοί, πει, πότε, εχω, βράδυ, αυτές, θέλετε, κάνετε, - σημαίνει, πρώτη, ποιο, πόλη, μπορούσα, ποια, γαμώτο, ήδη, τελευταία, άνθρωποι, τέλος, απλώς, νόμιζα, - ξέρετε, μέρες, δεις, θέση, αυτούς, καταλαβαίνω, φύγε, χέρια, εκτός, ήξερα, οπότε, λεπτά, μακριά, - κάνε, αμάξι, δική, λεπτό, μεγάλο, μήπως, κορίτσι, μάτια, ελάτε, πρόκειται, πόρτα, δίκιο, βοήθεια, - ήρθε, μιλήσω, δρόμο, εαυτό, καθόλου, ορίστε, βρω, πειράζει, μπορείτε, καλός, πέρα, κοντά, εννοώ, - τέτοιο, μπροστά, έρθει, χρειάζομαι, χέρι, ελπίζω, δώσε, διάολο, φύγω, ιστορία, όπλο, αφού, πρωί, - νύχτα, ωραίο, τύπος, ξανά, θυμάσαι, δούμε, κατά, εννοείς, αγαπώ, κακό, θέμα, εδω, αυτήν, τρόπο, - κεφάλι, είχες, μερικές, μιλάς, φίλος, άνθρωπος, φύγουμε, όλες, σκατά, ανθρώπους, βέβαια, άντρας, - κάποιο, πάνε, αστυνομία, αλλιώς, συνέβη, χαίρομαι, άλλα, περισσότερο, καλύτερο, εκείνη, πάρεις, τo, - νερό, ώρες, σίγουρος, vα, τρεις, εχεις, πρώτα, μπορούσε, σ, οταν, δρ, πιστεύεις, μόνη, ποιός, καμιά, - κανέναν, πέθανε, εχει, ετσι, αγόρι, ανησυχείς, άντρες, δωμάτιο, ομάδα, ίδια, εμπρός, βρούμε, βοηθήσω, - τέτοια, πήρε, τρία, λόγο, μικρό, αντίο, o, πέντε, πήγε, καν, ευκαιρία, είδες, έρχεται, δηλαδή, - αργότερα, ήθελε, πούμε, λέμε, όπου, αλλα, κόρη, κόσμος, γυναίκες, τηλέφωνο, εάν, δώσω, καρδιά, βρήκα, - γραφείο, επίσης, νιώθω, σχέση, θέλουν, ισως, τέλεια, είχαμε, κάπου, μυαλό, ώστε, καλημέρα, σχολείο, - θεός, μικρή, τρέχει, ψέματα, ξέρουμε, οικογένεια, εισαι, θυμάμαι, κ, ενός, φίλοι, πρόσεχε, - καταλαβαίνεις, αργά, ντε, θέλουμε, σύντομα, πήρα, σχεδόν, παιχνίδι, κύριοι, γειά, μήνες, μπαμπάς, - σοβαρά, δολάρια, τουλάχιστον, χρήματα, πείτε, πόδια, αίμα, κοπέλα, φαγητό, ειμαι, ποιον, μερικά, - δύσκολο, μπορούν, βρεις, όμορφη, φύγεις, τύχη, πλάκα, έρθεις, άντρα, κορίτσια, μείνε, αστείο, καμία, - είχαν, χάρη, άλλος, πρεπει, σημασία, φυλακή, νεκρός, συγχωρείτε, φοβάμαι, μπράβο, γύρω, κανένας, μεταξύ, - τ, χθες, πολλές, όνομά, τζακ, ρε, καληνύχτα, πολυ, φύγει, αφήσω, ήθελες, tι, ήρθες, ακούς, πρώτο, γιατι, - ηρέμησε, γι, πάρουμε, πάρα, άλλους, κατάλαβα, έρθω, συνέχεια, έλεγα, γλυκιά, νοιάζει, χριστέ, βιβλίο, - κύριος, μ, χώρα, αρχή, ήρθα, πεθάνει, γη, έτοιμος, εγω, άσχημα, συμβεί, αυτοκίνητο, ζωής, τελικά, φέρω, - τρόπος, κατάσταση, www, περιμένω, σημαντικό, όσα, σκέφτηκα, μιλήσουμε, αφήστε, τωρα, ακούω, γιος, σκοτώσω, - δύναμη, κα, κε, εκείνο, γονείς, μιλάω, σκοτώσει, ολα, μείνει, μείνω, αρέσουν, δεv, υπόθεση, φίλους, όπλα, - υποθέτω, εμάς, ενώ, έξι, σχέδιο, άρεσε, καφέ, σκότωσε, χρειαζόμαστε, φίλο, σωστό, προσπαθώ, κάναμε, - κοιτάξτε, μoυ, κου, ποτό, εσάς, έι, έφυγε, ταινία, μοιάζει, κρεβάτι, εχουμε, περιμένει, νέο, μπορούσες, - μάθω, αφήσεις, περιμένετε, χρειάζεσαι, υπήρχε, μισό, δέκα, αφεντικό, περίπου, άλλοι, λόγος, ξέρουν, κάποτε, - βρήκες, καλύτερη, υπέροχο, τζον, δίπλα, σκάσε, θεού, άκουσα, φύγετε, λέξη, παρά, επόμενη, λέτε, περάσει, - πόσα, γίνεις, σώμα, ν, πήρες, τελείωσε, γιο, ρούχα, σκέφτομαι, εσυ, άλλες, γυρίσω, βάλω, μουσική, ραντεβού, - φωτιά, έδωσε, πάτε, φοβάσαι, βρει, δείξω, γίνω, βοηθήσει, τύπο, σειρά, αξίζει, μείνεις, είπαν, άλλον, - κυρίες, λίγη, πέρασε, κάτσε, πήγα, δείτε, μιας, βδομάδα, έρχομαι, προσοχή, εύκολο, ερώτηση, υπέροχα, - σίγουρη, νοσοκομείο, τρελός, ενας, βάλε, πόλεμο, φέρε, δικά, τιμή, κατάλαβες, ταξίδι, οποίο, δουλεύει, θεό, - μικρέ, μάθεις, βρίσκεται, πολλοί, δες, πάρτε, παντού, πρόσωπο, μήνυμα, αδερφή, μιλάει, παλιά, πουθενά, - κράτα, περίπτωση, φως, επάνω, έλεγε, συμφωνία, οπως, ολοι, πρώτος, δεσποινίς, γιατρός, γνωρίζω, σαμ, - σκέφτεσαι, ει, φίλη, σεξ, έκαναν, προβλήματα, κάπως, ό, τελευταίο, ακούσει, τζο, καλώς, επιλογή, - σταματήστε, τόσα, οτιδήποτε, περισσότερα, άδεια, πάρτι, περίμενα, ακούγεται, gmteam, ήξερες, καιρός, - μαλλιά, καλύτερος, κανεις, φρανκ, μέση, συνέχισε, τίποτε, φωτογραφία, κατι, μεγάλος, περιοχή, άσε, καθώς, - είδε, λόγια, μήνα, μαλακίες, όμορφο, δώρο, στόμα, χάλια, εντελώς, μακάρι, τελειώσει, γνώμη, γιατρέ, ξερω, - πλευρά, μέλλον, θάνατο, νιώθεις, έτοιμοι, κομμάτι, μάθει, μιλάμε, ψηλά, αέρα, ερωτήσεις, αυτού, δώσει, - φεύγω, σημείο, τηλεόραση, κυριε, πραγματικότητα, ανάγκη, βοηθήσεις, προσπάθησε, γύρνα, άφησε, λίγα, κάντε, - είvαι, βλέπετε, αυτη, δείπνο, επιτέλους, κέντρο, περίεργο, ακούστε, πλοίο, κάποιες, δικός, σoυ, οικογένειά, - μιλήσει, πλέον, υπόσχομαι, περιμένεις, ήξερε, σκοτώσεις, ενταξει, δώσεις, εκει, ήμασταν, έρχονται, κώλο, - ρωτήσω, παίρνει, σιγά, σήκω, στοιχεία, αδελφή, βασικά, μένει, άκρη, πηγαίνετε, παίρνεις, tο, περιμένουμε, - συγχωρείς, μικρός, πόδι, δίνει, εκατομμύρια, ξενοδοχείο, αποστολή, ενδιαφέρον, χάρηκα, αεροπλάνο, γάμο, - χιλιάδες, υόρκη, οκ, ευχαριστούμε, καλα, κοιτάς, σα, π, χρόνος, ησυχία, ασφάλεια, εκείνος, a, βρήκε, - τέσσερα, βγάλω, μπες, συχνά, ημέρα, μάνα, εν, αγαπάς, άνθρωπο, γραμμή, φωτογραφίες, προσέχεις, ύπνο, - μυστικό, σχετικά, είδους, σκέψου, χριστούγεννα, κόσμου, τομ, μισώ, σύστημα, δουλειές, τελείως, πεθάνω, - αλλάξει, δεξιά, συνήθως, δουλεύω, μάικλ, εβδομάδα, νούμερο, λείπει, έτοιμη, τμήμα, βγει, ψυχή, έπεσε, - κάθαρμα, ματιά, οποία, πληροφορίες, μονο, κρίμα, τραγούδι, μαγαζί, δουλεύεις, μαζι, τέλειο, κύριο, - λέγεται, τσάρλι, πεθάνεις, σκεφτόμουν, καλησπέρα, συγχαρητήρια, φωνή, εκ, άτομο, παίζεις, σκάφος, - φαίνεσαι, ξαφνικά, παραπάνω, ατύχημα, θελω, ξέχνα, ήρθατε, εναντίον, τραπέζι, γράμμα, μείνετε, αμερική, - βασιλιάς, υπό, μπάνιο, ποτε, ίδιος, προφανώς, μαλάκα, αδερφός, άνδρες, nαι, χρονών, ναί, κλειδί, δις, - γιαγιά, παράξενο, πτώμα, βρήκαμε, μιλήσεις, υποτίθεται, ορκίζομαι, δυνατά, ποιό, θάλασσα, παίρνω, άκουσες, - παρέα, αριστερά, έμαθα, μάχη, μηχανή, σάρα, ζωντανός, όνειρο, παλιό, μπορούσαμε, πάντως, ανάμεσα, έχασα, - νωρίς, κάποιοι, άκου, παίζει, φτάνει, δίνω, βγες, υπέροχη, νόημα, έλεγχο, μέτρα, ξερεις, ζει, δείχνει, + χρόνο, στους, πάρω, μπαμπά, δικό, απ, γίνεται, εσείς, λέω, συγνώμη, όλο, μητέρα, έκανες, πιστεύω, + ήσουν, κάποια, σίγουρα, υπάρχουν, όλη, ενα, αυτο, ξέρει, μωρό, ιδέα, δει, μάλλον, ίδιο, πάρε, είδα, + αύριο, βλέπεις, νέα, κόσμο, νομίζεις, τί, εμείς, σταμάτα, πάρει, αγάπη, πατέρας, όλους, αρκετά, + χρειάζεται, καιρό, φορές, κάνουν, ακόμη, α, πατέρα, προς, αμέσως, πια, ηταν, χαρά, απόψε, όνομα, + μάλιστα, μόνος, μεγάλη, κανένα, ελα, πραγματικά, αυτοί, πει, πότε, εχω, βράδυ, αυτές, θέλετε, κάνετε, + σημαίνει, πρώτη, ποιο, πόλη, μπορούσα, ποια, γαμώτο, ήδη, τελευταία, άνθρωποι, τέλος, απλώς, νόμιζα, + ξέρετε, μέρες, δεις, θέση, αυτούς, καταλαβαίνω, φύγε, χέρια, εκτός, ήξερα, οπότε, λεπτά, μακριά, + κάνε, αμάξι, δική, λεπτό, μεγάλο, μήπως, κορίτσι, μάτια, ελάτε, πρόκειται, πόρτα, δίκιο, βοήθεια, + ήρθε, μιλήσω, δρόμο, εαυτό, καθόλου, ορίστε, βρω, πειράζει, μπορείτε, καλός, πέρα, κοντά, εννοώ, + τέτοιο, μπροστά, έρθει, χρειάζομαι, χέρι, ελπίζω, δώσε, διάολο, φύγω, ιστορία, όπλο, αφού, πρωί, + νύχτα, ωραίο, τύπος, ξανά, θυμάσαι, δούμε, κατά, εννοείς, αγαπώ, κακό, θέμα, εδω, αυτήν, τρόπο, + κεφάλι, είχες, μερικές, μιλάς, φίλος, άνθρωπος, φύγουμε, όλες, σκατά, ανθρώπους, βέβαια, άντρας, + κάποιο, πάνε, αστυνομία, αλλιώς, συνέβη, χαίρομαι, άλλα, περισσότερο, καλύτερο, εκείνη, πάρεις, τo, + νερό, ώρες, σίγουρος, vα, τρεις, εχεις, πρώτα, μπορούσε, σ, οταν, δρ, πιστεύεις, μόνη, ποιός, καμιά, + κανέναν, πέθανε, εχει, ετσι, αγόρι, ανησυχείς, άντρες, δωμάτιο, ομάδα, ίδια, εμπρός, βρούμε, βοηθήσω, + τέτοια, πήρε, τρία, λόγο, μικρό, αντίο, o, πέντε, πήγε, καν, ευκαιρία, είδες, έρχεται, δηλαδή, + αργότερα, ήθελε, πούμε, λέμε, όπου, αλλα, κόρη, κόσμος, γυναίκες, τηλέφωνο, εάν, δώσω, καρδιά, βρήκα, + γραφείο, επίσης, νιώθω, σχέση, θέλουν, ισως, τέλεια, είχαμε, κάπου, μυαλό, ώστε, καλημέρα, σχολείο, + θεός, μικρή, τρέχει, ψέματα, ξέρουμε, οικογένεια, εισαι, θυμάμαι, κ, ενός, φίλοι, πρόσεχε, + καταλαβαίνεις, αργά, ντε, θέλουμε, σύντομα, πήρα, σχεδόν, παιχνίδι, κύριοι, γειά, μήνες, μπαμπάς, + σοβαρά, δολάρια, τουλάχιστον, χρήματα, πείτε, πόδια, αίμα, κοπέλα, φαγητό, ειμαι, ποιον, μερικά, + δύσκολο, μπορούν, βρεις, όμορφη, φύγεις, τύχη, πλάκα, έρθεις, άντρα, κορίτσια, μείνε, αστείο, καμία, + είχαν, χάρη, άλλος, πρεπει, σημασία, φυλακή, νεκρός, συγχωρείτε, φοβάμαι, μπράβο, γύρω, κανένας, μεταξύ, + τ, χθες, πολλές, όνομά, τζακ, ρε, καληνύχτα, πολυ, φύγει, αφήσω, ήθελες, tι, ήρθες, ακούς, πρώτο, γιατι, + ηρέμησε, γι, πάρουμε, πάρα, άλλους, κατάλαβα, έρθω, συνέχεια, έλεγα, γλυκιά, νοιάζει, χριστέ, βιβλίο, + κύριος, μ, χώρα, αρχή, ήρθα, πεθάνει, γη, έτοιμος, εγω, άσχημα, συμβεί, αυτοκίνητο, ζωής, τελικά, φέρω, + τρόπος, κατάσταση, www, περιμένω, σημαντικό, όσα, σκέφτηκα, μιλήσουμε, αφήστε, τωρα, ακούω, γιος, σκοτώσω, + δύναμη, κα, κε, εκείνο, γονείς, μιλάω, σκοτώσει, ολα, μείνει, μείνω, αρέσουν, δεv, υπόθεση, φίλους, όπλα, + υποθέτω, εμάς, ενώ, έξι, σχέδιο, άρεσε, καφέ, σκότωσε, χρειαζόμαστε, φίλο, σωστό, προσπαθώ, κάναμε, + κοιτάξτε, μoυ, κου, ποτό, εσάς, έι, έφυγε, ταινία, μοιάζει, κρεβάτι, εχουμε, περιμένει, νέο, μπορούσες, + μάθω, αφήσεις, περιμένετε, χρειάζεσαι, υπήρχε, μισό, δέκα, αφεντικό, περίπου, άλλοι, λόγος, ξέρουν, κάποτε, + βρήκες, καλύτερη, υπέροχο, τζον, δίπλα, σκάσε, θεού, άκουσα, φύγετε, λέξη, παρά, επόμενη, λέτε, περάσει, + πόσα, γίνεις, σώμα, ν, πήρες, τελείωσε, γιο, ρούχα, σκέφτομαι, εσυ, άλλες, γυρίσω, βάλω, μουσική, ραντεβού, + φωτιά, έδωσε, πάτε, φοβάσαι, βρει, δείξω, γίνω, βοηθήσει, τύπο, σειρά, αξίζει, μείνεις, είπαν, άλλον, + κυρίες, λίγη, πέρασε, κάτσε, πήγα, δείτε, μιας, βδομάδα, έρχομαι, προσοχή, εύκολο, ερώτηση, υπέροχα, + σίγουρη, νοσοκομείο, τρελός, ενας, βάλε, πόλεμο, φέρε, δικά, τιμή, κατάλαβες, ταξίδι, οποίο, δουλεύει, θεό, + μικρέ, μάθεις, βρίσκεται, πολλοί, δες, πάρτε, παντού, πρόσωπο, μήνυμα, αδερφή, μιλάει, παλιά, πουθενά, + κράτα, περίπτωση, φως, επάνω, έλεγε, συμφωνία, οπως, ολοι, πρώτος, δεσποινίς, γιατρός, γνωρίζω, σαμ, + σκέφτεσαι, ει, φίλη, σεξ, έκαναν, προβλήματα, κάπως, ό, τελευταίο, ακούσει, τζο, καλώς, επιλογή, + σταματήστε, τόσα, οτιδήποτε, περισσότερα, άδεια, πάρτι, περίμενα, ακούγεται, gmteam, ήξερες, καιρός, + μαλλιά, καλύτερος, κανεις, φρανκ, μέση, συνέχισε, τίποτε, φωτογραφία, κατι, μεγάλος, περιοχή, άσε, καθώς, + είδε, λόγια, μήνα, μαλακίες, όμορφο, δώρο, στόμα, χάλια, εντελώς, μακάρι, τελειώσει, γνώμη, γιατρέ, ξερω, + πλευρά, μέλλον, θάνατο, νιώθεις, έτοιμοι, κομμάτι, μάθει, μιλάμε, ψηλά, αέρα, ερωτήσεις, αυτού, δώσει, + φεύγω, σημείο, τηλεόραση, κυριε, πραγματικότητα, ανάγκη, βοηθήσεις, προσπάθησε, γύρνα, άφησε, λίγα, κάντε, + είvαι, βλέπετε, αυτη, δείπνο, επιτέλους, κέντρο, περίεργο, ακούστε, πλοίο, κάποιες, δικός, σoυ, οικογένειά, + μιλήσει, πλέον, υπόσχομαι, περιμένεις, ήξερε, σκοτώσεις, ενταξει, δώσεις, εκει, ήμασταν, έρχονται, κώλο, + ρωτήσω, παίρνει, σιγά, σήκω, στοιχεία, αδελφή, βασικά, μένει, άκρη, πηγαίνετε, παίρνεις, tο, περιμένουμε, + συγχωρείς, μικρός, πόδι, δίνει, εκατομμύρια, ξενοδοχείο, αποστολή, ενδιαφέρον, χάρηκα, αεροπλάνο, γάμο, + χιλιάδες, υόρκη, οκ, ευχαριστούμε, καλα, κοιτάς, σα, π, χρόνος, ησυχία, ασφάλεια, εκείνος, a, βρήκε, + τέσσερα, βγάλω, μπες, συχνά, ημέρα, μάνα, εν, αγαπάς, άνθρωπο, γραμμή, φωτογραφίες, προσέχεις, ύπνο, + μυστικό, σχετικά, είδους, σκέψου, χριστούγεννα, κόσμου, τομ, μισώ, σύστημα, δουλειές, τελείως, πεθάνω, + αλλάξει, δεξιά, συνήθως, δουλεύω, μάικλ, εβδομάδα, νούμερο, λείπει, έτοιμη, τμήμα, βγει, ψυχή, έπεσε, + κάθαρμα, ματιά, οποία, πληροφορίες, μονο, κρίμα, τραγούδι, μαγαζί, δουλεύεις, μαζι, τέλειο, κύριο, + λέγεται, τσάρλι, πεθάνεις, σκεφτόμουν, καλησπέρα, συγχαρητήρια, φωνή, εκ, άτομο, παίζεις, σκάφος, + φαίνεσαι, ξαφνικά, παραπάνω, ατύχημα, θελω, ξέχνα, ήρθατε, εναντίον, τραπέζι, γράμμα, μείνετε, αμερική, + βασιλιάς, υπό, μπάνιο, ποτε, ίδιος, προφανώς, μαλάκα, αδερφός, άνδρες, nαι, χρονών, ναί, κλειδί, δις, + γιαγιά, παράξενο, πτώμα, βρήκαμε, μιλήσεις, υποτίθεται, ορκίζομαι, δυνατά, ποιό, θάλασσα, παίρνω, άκουσες, + παρέα, αριστερά, έμαθα, μάχη, μηχανή, σάρα, ζωντανός, όνειρο, παλιό, μπορούσαμε, πάντως, ανάμεσα, έχασα, + νωρίς, κάποιοι, άκου, παίζει, φτάνει, δίνω, βγες, υπέροχη, νόημα, έλεγχο, μέτρα, ξερεις, ζει, δείχνει, βρες, τού """ # Source: https://www.101languages.net/russian/most-common-russian-words/ alias words_ru = """ -я, не, что, в, и, ты, это, на, с, он, вы, как, мы, да, а, мне, меня, у, нет, так, но, то, все, тебя, его, -за, о, она, тебе, если, они, бы, же, ну, здесь, к, из, есть, чтобы, для, хорошо, когда, вас, только, по, -вот, просто, был, знаю, нас, всё, было, от, может, кто, вам, очень, их, там, будет, уже, почему, еще, -быть, где, спасибо, ничего, сейчас, или, могу, хочу, нам, чем, мой, до, надо, этого, ее, теперь, давай, -знаешь, нужно, больше, этом, нибудь, раз, со, была, этот, ему, ладно, эй, время, тоже, даже, хочешь, -сказал, ли, себя, думаю, пока, должен, потому, никогда, ни, тут, ещё, её, пожалуйста, сюда, привет, -тогда, конечно, моя, него, сегодня, один, тобой, правда, лучше, об, были, того, можно, мной, всегда, -сказать, день, сэр, без, можешь, чего, эти, дело, значит, лет, много, во, делать, буду, порядке, должны, -такой, ведь, ним, всего, сделать, хотел, твой, жизнь, ей, мистер, потом, через, себе, них, всех, такое, -им, куда, том, мама, после, человек, люди, слишком, иди, зачем, этим, немного, сколько, этой, знаете, -боже, ней, эту, который, отец, свою, деньги, два, под, твоя, мои, никто, моей, думаешь, друг, жизни, -эта, назад, видел, кажется, точно, вместе, люблю, мог, случилось, сам, нравится, черт, какой, людей, -папа, домой, тот, скажи, которые, должна, три, всем, сделал, возможно, прошу, будем, дома, парень, -снова, говорит, место, отсюда, можем, будешь, пошли, делаешь, совсем, говорил, понимаю, завтра, хочет, -простите, разве, давайте, хотите, отлично, сказала, туда, прямо, времени, вами, лишь, своей, хватит, -думал, можете, дом, дела, знать, дай, понял, помочь, говорить, слушай, свои, поэтому, прости, знает, -именно, знал, тем, кого, смотри, каждый, ваш, похоже, найти, моего, наш, мать, одна, имя, про, говорю, -будут, оно, свой, нельзя, извините, стоит, действительно, зовут, поговорить, доктор, перед, несколько, -нужен, происходит, ко, господи, возьми, мою, тех, нами, вижу, должно, наверное, откуда, понимаешь, верно, -скоро, уж, деле, твои, пусть, всю, хотела, при, более, ребята, нее, быстро, подожди, идти, надеюсь, чём, -работу, видеть, такая, этих, уверен, нужна, года, раньше, такие, руки, видишь, какая, посмотри, сын, -самом, ваша, послушай, равно, наши, другой, ага, мир, извини, минут, против, твоей, пор, жить, ж, жаль, -вообще, могли, хотя, человека, пора, ради, говорят, почти, твою, могут, над, весь, первый, чёрт, слышал, -собой, брат, вещи, дня, скажу, говоришь, нормально, своего, мое, ваше, итак, будь, ночь, хоть, ясно, -плохо, дверь, вопрос, господин, давно, денег, ваши, ка, мисс, одну, глаза, пять, будто, между, пойду, -опять, работа, самое, иногда, детей, этому, рад, здорово, бог, одного, ночи, готов, номер, которая, -машину, любовь, дорогая, виду, одно, прекрасно, вон, своих, быстрее, отца, женщина, достаточно, рядом, -убить, таким, пойдем, смерти, дети, такого, правильно, месте, никаких, сказали, здравствуйте, пару, две, -видела, долго, хороший, ах, кроме, алло, нашей, прав, вчера, вечером, жена, миссис, чтоб, друга, нужны, -кем, какие, те, увидеть, утро, смогу, неё, сама, моему, большой, сразу, работать, сердце, стал, своим, -сначала, могла, вроде, ними, говори, голову, дальше, помнишь, либо, ума, одной, вечер, случае, взять, -проблемы, помощь, добрый, год, думала, делает, скорее, слова, капитан, последний, важно, дней, помню, -ночью, утром, моих, произошло, которую, боюсь, также, вашей, ой, стой, твоего, никого, дорогой, убил, -насчет, друзья, самый, проблема, видели, вперед, дерьмо, понятно, чувствую, наша, будете, тому, имею, -вернуться, придется, пришел, спать, стать, столько, говорила, пойти, иначе, работает, девушка, час, -момент, моим, умер, думаете, доброе, слово, новый, часов, мире, знаем, твое, мальчик, однажды, интересно, -конец, играть, a, заткнись, сделали, посмотреть, идет, узнать, свое, права, хорошая, город, джон, -долларов, парни, идем, говорите, уйти, понять, знала, поздно, нашли, работы, скажите, сделаю, увидимся, -какого, другие, идея, пошел, доме, дочь, имеет, приятно, лицо, наших, обо, понимаете, руку, часть, -смотрите, вся, собираюсь, четыре, прежде, хотят, скажешь, чувак, дайте, сделала, кофе, джек, верю, -ждать, затем, большое, сами, неужели, моё, любит, мужчина, дать, господа, таких, осталось, которой, -далеко, вернусь, сильно, ох, сможешь, кому, вашего, посмотрим, машина, подождите, свет, чуть, серьезно, -пришли, оружие, решил, смысле, видите, тихо, нашел, свидания, путь, той, совершенно, следующий, которого, -места, парня, вдруг, пути, мадам, какое, шанс, сестра, нашего, ужасно, минуту, вокруг, другом, иду, -других, хотели, нем, смерть, подумал, фильм, оставь, делаете, уверена, кровь, говорили, внимание, -помогите, идите, держи, получить, оба, взял, спокойно, обычно, мало, забыл, странно, смотреть, поехали, -дал, часа, прекрати, посмотрите, готовы, вернулся, поверить, позже, милая, женщины, любишь, довольно, -обратно, остаться, думать, та, стороны, полиция, тело, тысяч, делал, машины, угодно, муж, году, неплохо, -бога, некоторые, конце, милый, the, рождения, трудно, добро, любви, больно, невозможно, спокойной, -слышишь, типа, получил, которое, приятель, хуже, никому, честь, успокойся, вашу, маленький, выглядит, -чарли, сына, неделю, i, девочка, делаю, шесть, ноги, история, рассказать, послушайте, часто, кстати, -двух, забудь, которых, следует, знают, пришла, семья, станет, матери, ребенок, план, проблем, например, -сделай, воды, немедленно, мира, сэм, телефон, перестань, правду, второй, прощения, ту, наше, уходи, твоих, -помоги, пол, внутри, нему, смог, десять, нашу, около, бывает, самого, большая, леди, сможем, вниз, легко, -делай, единственный, рада, меньше, волнуйся, хотим, полагаю, мам, иметь, своими, мере, наконец, начала, -минутку, работе, пожаловать, другого, двое, никакого, честно, школе, лучший, умереть, дам, насколько, -всей, малыш, оставить, безопасности, ненавижу, школу, осторожно, сынок, джо, таки, пытался, другое, б, -клянусь, машине, недели, стало, истории, пришлось, выглядишь, чему, сможет, купить, слышала, знали, -настоящий, сих, выйти, людям, замечательно, полиции, огонь, пойдём, спросить, дядя, детка, среди, особенно, -твоим, комнате, шоу, выпить, постоянно, делают, позвольте, родители, письмо, городе, случай, месяцев, мужик, -благодарю, o, ребенка, смешно, ответ, города, образом, любой, полностью, увидел, еду, имени, вместо, -абсолютно, обязательно, улице, твоё, убили, ваших, ехать, крови, решение, вина, поможет, своё, секунду, -обещаю, начать, голос, вещь, друзей, показать, нечего, э, месяц, подарок, приехал, самая, молодец, сделаем, -крайней, женщин, собираешься, конца, страшно, новости, идиот, потерял, спасти, вернуть, узнал, слушайте, -хотелось, сон, поняла, прошло, комнату, семь, погоди, главное, рано, корабль, пытаюсь, игра, умерла, -повезло, всему, возьму, таком, моем, глаз, настолько, идём, удачи, готова, семьи, садись, гарри, держись, -звучит, мило, война, человеком, право, такую, вопросы, представить, работаю, имеешь, красивая, идёт, никакой, -профессор, думает, войны, стала, стали, оттуда, известно, слышу, начал, подумать, позвонить, старый, придётся, -историю, вести, твоему, последнее, хочется, миллионов, нашла, способ, отношения, земле, фрэнк, получится, -говоря, связи, многие, пошёл, пистолет, убью, руках, получилось, президент, остановить, тьi, оставил, одним, -you, утра, боль, хорошие, пришёл, открой, брось, вставай, находится, поговорим, кино, людьми, полицию, покажу, +я, не, что, в, и, ты, это, на, с, он, вы, как, мы, да, а, мне, меня, у, нет, так, но, то, все, тебя, его, +за, о, она, тебе, если, они, бы, же, ну, здесь, к, из, есть, чтобы, для, хорошо, когда, вас, только, по, +вот, просто, был, знаю, нас, всё, было, от, может, кто, вам, очень, их, там, будет, уже, почему, еще, +быть, где, спасибо, ничего, сейчас, или, могу, хочу, нам, чем, мой, до, надо, этого, ее, теперь, давай, +знаешь, нужно, больше, этом, нибудь, раз, со, была, этот, ему, ладно, эй, время, тоже, даже, хочешь, +сказал, ли, себя, думаю, пока, должен, потому, никогда, ни, тут, ещё, её, пожалуйста, сюда, привет, +тогда, конечно, моя, него, сегодня, один, тобой, правда, лучше, об, были, того, можно, мной, всегда, +сказать, день, сэр, без, можешь, чего, эти, дело, значит, лет, много, во, делать, буду, порядке, должны, +такой, ведь, ним, всего, сделать, хотел, твой, жизнь, ей, мистер, потом, через, себе, них, всех, такое, +им, куда, том, мама, после, человек, люди, слишком, иди, зачем, этим, немного, сколько, этой, знаете, +боже, ней, эту, который, отец, свою, деньги, два, под, твоя, мои, никто, моей, думаешь, друг, жизни, +эта, назад, видел, кажется, точно, вместе, люблю, мог, случилось, сам, нравится, черт, какой, людей, +папа, домой, тот, скажи, которые, должна, три, всем, сделал, возможно, прошу, будем, дома, парень, +снова, говорит, место, отсюда, можем, будешь, пошли, делаешь, совсем, говорил, понимаю, завтра, хочет, +простите, разве, давайте, хотите, отлично, сказала, туда, прямо, времени, вами, лишь, своей, хватит, +думал, можете, дом, дела, знать, дай, понял, помочь, говорить, слушай, свои, поэтому, прости, знает, +именно, знал, тем, кого, смотри, каждый, ваш, похоже, найти, моего, наш, мать, одна, имя, про, говорю, +будут, оно, свой, нельзя, извините, стоит, действительно, зовут, поговорить, доктор, перед, несколько, +нужен, происходит, ко, господи, возьми, мою, тех, нами, вижу, должно, наверное, откуда, понимаешь, верно, +скоро, уж, деле, твои, пусть, всю, хотела, при, более, ребята, нее, быстро, подожди, идти, надеюсь, чём, +работу, видеть, такая, этих, уверен, нужна, года, раньше, такие, руки, видишь, какая, посмотри, сын, +самом, ваша, послушай, равно, наши, другой, ага, мир, извини, минут, против, твоей, пор, жить, ж, жаль, +вообще, могли, хотя, человека, пора, ради, говорят, почти, твою, могут, над, весь, первый, чёрт, слышал, +собой, брат, вещи, дня, скажу, говоришь, нормально, своего, мое, ваше, итак, будь, ночь, хоть, ясно, +плохо, дверь, вопрос, господин, давно, денег, ваши, ка, мисс, одну, глаза, пять, будто, между, пойду, +опять, работа, самое, иногда, детей, этому, рад, здорово, бог, одного, ночи, готов, номер, которая, +машину, любовь, дорогая, виду, одно, прекрасно, вон, своих, быстрее, отца, женщина, достаточно, рядом, +убить, таким, пойдем, смерти, дети, такого, правильно, месте, никаких, сказали, здравствуйте, пару, две, +видела, долго, хороший, ах, кроме, алло, нашей, прав, вчера, вечером, жена, миссис, чтоб, друга, нужны, +кем, какие, те, увидеть, утро, смогу, неё, сама, моему, большой, сразу, работать, сердце, стал, своим, +сначала, могла, вроде, ними, говори, голову, дальше, помнишь, либо, ума, одной, вечер, случае, взять, +проблемы, помощь, добрый, год, думала, делает, скорее, слова, капитан, последний, важно, дней, помню, +ночью, утром, моих, произошло, которую, боюсь, также, вашей, ой, стой, твоего, никого, дорогой, убил, +насчет, друзья, самый, проблема, видели, вперед, дерьмо, понятно, чувствую, наша, будете, тому, имею, +вернуться, придется, пришел, спать, стать, столько, говорила, пойти, иначе, работает, девушка, час, +момент, моим, умер, думаете, доброе, слово, новый, часов, мире, знаем, твое, мальчик, однажды, интересно, +конец, играть, a, заткнись, сделали, посмотреть, идет, узнать, свое, права, хорошая, город, джон, +долларов, парни, идем, говорите, уйти, понять, знала, поздно, нашли, работы, скажите, сделаю, увидимся, +какого, другие, идея, пошел, доме, дочь, имеет, приятно, лицо, наших, обо, понимаете, руку, часть, +смотрите, вся, собираюсь, четыре, прежде, хотят, скажешь, чувак, дайте, сделала, кофе, джек, верю, +ждать, затем, большое, сами, неужели, моё, любит, мужчина, дать, господа, таких, осталось, которой, +далеко, вернусь, сильно, ох, сможешь, кому, вашего, посмотрим, машина, подождите, свет, чуть, серьезно, +пришли, оружие, решил, смысле, видите, тихо, нашел, свидания, путь, той, совершенно, следующий, которого, +места, парня, вдруг, пути, мадам, какое, шанс, сестра, нашего, ужасно, минуту, вокруг, другом, иду, +других, хотели, нем, смерть, подумал, фильм, оставь, делаете, уверена, кровь, говорили, внимание, +помогите, идите, держи, получить, оба, взял, спокойно, обычно, мало, забыл, странно, смотреть, поехали, +дал, часа, прекрати, посмотрите, готовы, вернулся, поверить, позже, милая, женщины, любишь, довольно, +обратно, остаться, думать, та, стороны, полиция, тело, тысяч, делал, машины, угодно, муж, году, неплохо, +бога, некоторые, конце, милый, the, рождения, трудно, добро, любви, больно, невозможно, спокойной, +слышишь, типа, получил, которое, приятель, хуже, никому, честь, успокойся, вашу, маленький, выглядит, +чарли, сына, неделю, i, девочка, делаю, шесть, ноги, история, рассказать, послушайте, часто, кстати, +двух, забудь, которых, следует, знают, пришла, семья, станет, матери, ребенок, план, проблем, например, +сделай, воды, немедленно, мира, сэм, телефон, перестань, правду, второй, прощения, ту, наше, уходи, твоих, +помоги, пол, внутри, нему, смог, десять, нашу, около, бывает, самого, большая, леди, сможем, вниз, легко, +делай, единственный, рада, меньше, волнуйся, хотим, полагаю, мам, иметь, своими, мере, наконец, начала, +минутку, работе, пожаловать, другого, двое, никакого, честно, школе, лучший, умереть, дам, насколько, +всей, малыш, оставить, безопасности, ненавижу, школу, осторожно, сынок, джо, таки, пытался, другое, б, +клянусь, машине, недели, стало, истории, пришлось, выглядишь, чему, сможет, купить, слышала, знали, +настоящий, сих, выйти, людям, замечательно, полиции, огонь, пойдём, спросить, дядя, детка, среди, особенно, +твоим, комнате, шоу, выпить, постоянно, делают, позвольте, родители, письмо, городе, случай, месяцев, мужик, +благодарю, o, ребенка, смешно, ответ, города, образом, любой, полностью, увидел, еду, имени, вместо, +абсолютно, обязательно, улице, твоё, убили, ваших, ехать, крови, решение, вина, поможет, своё, секунду, +обещаю, начать, голос, вещь, друзей, показать, нечего, э, месяц, подарок, приехал, самая, молодец, сделаем, +крайней, женщин, собираешься, конца, страшно, новости, идиот, потерял, спасти, вернуть, узнал, слушайте, +хотелось, сон, поняла, прошло, комнату, семь, погоди, главное, рано, корабль, пытаюсь, игра, умерла, +повезло, всему, возьму, таком, моем, глаз, настолько, идём, удачи, готова, семьи, садись, гарри, держись, +звучит, мило, война, человеком, право, такую, вопросы, представить, работаю, имеешь, красивая, идёт, никакой, +профессор, думает, войны, стала, стали, оттуда, известно, слышу, начал, подумать, позвонить, старый, придётся, +историю, вести, твоему, последнее, хочется, миллионов, нашла, способ, отношения, земле, фрэнк, получится, +говоря, связи, многие, пошёл, пистолет, убью, руках, получилось, президент, остановить, тьi, оставил, одним, +you, утра, боль, хорошие, пришёл, открой, брось, вставай, находится, поговорим, кино, людьми, полицию, покажу, волосы, последние, брата, месяца """ @@ -595,9 +595,9 @@ fn gen_word_pairs[words: String = words_en]() -> List[String]: return result -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Benchmarks -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @parameter fn bench_small_keys[s: String](mut b: Bencher) raises: var words = gen_word_pairs[s]() @@ -648,9 +648,9 @@ fn bench_long_key_new_hash_function[s: String](mut b: Bencher) raises: b.iter[call_fn]() -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Benchmark Main -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# def main(): var m = Bench(BenchConfig(num_repetitions=1)) m.bench_function[bench_small_keys[words_ar]](BenchId("bench_small_keys_ar")) diff --git a/stdlib/benchmarks/math/bench_math.mojo b/stdlib/benchmarks/math/bench_math.mojo index b7d4c1ae43..3e17eaf282 100644 --- a/stdlib/benchmarks/math/bench_math.mojo +++ b/stdlib/benchmarks/math/bench_math.mojo @@ -19,9 +19,9 @@ from random import * from benchmark import Bench, BenchConfig, Bencher, BenchId, Unit, keep, run -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Benchmark Data -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# alias input_type = Float32 @@ -54,9 +54,9 @@ fn make_int_inputs(begin: Int, end: Int, num: Int) -> List[Int]: var inputs = make_inputs(0, 10_000, 1_000_000) var int_inputs = make_int_inputs(0, 10_000_000, 1_000_000) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Benchmark math_func -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @parameter @@ -73,9 +73,9 @@ fn bench_math[ b.iter[call_fn]() -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Benchmark fma -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @parameter fn bench_math3[ math_f3p: fn[type: DType, size: Int] ( @@ -92,9 +92,9 @@ fn bench_math3[ b.iter[call_fn]() -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Benchmark lcm/gcd -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @parameter fn bench_math2[math_f2p: fn (Int, Int, /) -> Int](mut b: Bencher) raises: @always_inline @@ -107,9 +107,9 @@ fn bench_math2[math_f2p: fn (Int, Int, /) -> Int](mut b: Bencher) raises: b.iter[call_fn]() -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Benchmark Main -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# def main(): seed() var m = Bench(BenchConfig(num_repetitions=1)) diff --git a/stdlib/benchmarks/utils/bench_formatter.mojo b/stdlib/benchmarks/utils/bench_formatter.mojo index 818a0a2cff..12896f3c91 100644 --- a/stdlib/benchmarks/utils/bench_formatter.mojo +++ b/stdlib/benchmarks/utils/bench_formatter.mojo @@ -22,14 +22,14 @@ from builtin.dtype import _uint_type_of_width from utils.stringref import _align_down, _memchr, _memmem -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Benchmark Data -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Benchmarks -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @parameter fn bench_writer_int[n: Int](mut b: Bencher) raises: @always_inline @@ -54,9 +54,9 @@ fn bench_writer_simd[n: Int](mut b: Bencher) raises: b.iter[call_fn]() -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Benchmark Main -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# def main(): var m = Bench(BenchConfig(num_repetitions=1)) m.bench_function[bench_writer_int[42]](BenchId("bench_writer_int_42")) diff --git a/stdlib/benchmarks/utils/bench_memmem.mojo b/stdlib/benchmarks/utils/bench_memmem.mojo index 97925b2884..777557784e 100644 --- a/stdlib/benchmarks/utils/bench_memmem.mojo +++ b/stdlib/benchmarks/utils/bench_memmem.mojo @@ -23,9 +23,9 @@ from memory import UnsafePointer, bitcast, memcmp, pack_bits from utils.stringref import _align_down, _memchr, _memmem -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Benchmark Data -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# var haystack = """Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer sed dictum est, et finibus ipsum. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nam tincidunt vel lacus vitae pulvinar. Donec ac ligula elementum, mollis purus a, lacinia quam. Maecenas vulputate mauris quis sem euismod sollicitudin. Proin accumsan nulla vel nisl congue varius. Morbi a erat dui. Aliquam maximus interdum orci, vitae pretium lorem bibendum non. Vestibulum eu lacus ullamcorper, egestas dui vel, pharetra ipsum. Pellentesque sagittis, urna a tincidunt sodales, leo sem placerat eros, vitae molestie felis diam at dolor. Donec viverra sem sit amet facilisis laoreet. Morbi semper convallis nisi, vitae congue velit tincidunt vel. Fusce ultrices, libero vel venenatis placerat, justo tellus porttitor massa, at volutpat tortor nunc id dui. Morbi eu ex quis odio porttitor ultricies vel eget massa. Aenean quis luctus nulla. Fusce sit amet leo at quam hendrerit mattis. Morbi sed quam nisl. Quisque purus enim, iaculis sed laoreet vel, pellentesque ut orci. Vivamus risus orci, varius eu pharetra quis, tincidunt non enim. Suspendisse bibendum lacus ex, quis blandit lectus malesuada a. Maecenas iaculis porta lacus, sit amet tristique ante scelerisque non. Proin auctor elit in lacus dictum egestas. Pellentesque tincidunt justo sed vehicula blandit. Pellentesque vehicula facilisis tellus in viverra. @@ -143,9 +143,9 @@ Curabitur auctor volutpat diam vitae vehicula. Vivamus est arcu, efficitur nec i var needle = "school" # a word intentionally not in the test data -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Baseline `_memmem` implementation -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @always_inline fn _memmem_baseline[ type: DType @@ -185,9 +185,9 @@ fn _memmem_baseline[ return UnsafePointer[Scalar[type]]() -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Benchmarks -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @parameter fn bench_find_baseline(mut b: Bencher) raises: @always_inline @@ -218,9 +218,9 @@ fn bench_find_optimized(mut b: Bencher) raises: b.iter[call_fn]() -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Benchmark Main -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# def main(): var m = Bench(BenchConfig(num_repetitions=1)) m.bench_function[bench_find_baseline](BenchId("find_baseline")) diff --git a/stdlib/docs/style-guide.md b/stdlib/docs/style-guide.md index dc07d62088..82002c152c 100644 --- a/stdlib/docs/style-guide.md +++ b/stdlib/docs/style-guide.md @@ -111,9 +111,9 @@ structure of header comments separating the various kinds of methods that can be defined on structs. ```mojo -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # MyStruct -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# struct MyStruct(Sized, Stringable): diff --git a/stdlib/src/base64/base64.mojo b/stdlib/src/base64/base64.mojo index d9a3f7f71b..6a9d585fb5 100644 --- a/stdlib/src/base64/base64.mojo +++ b/stdlib/src/base64/base64.mojo @@ -26,9 +26,9 @@ import bit from ._b64encode import b64encode_with_buffers as _b64encode_with_buffers -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Utilities -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @always_inline @@ -59,9 +59,9 @@ fn _ascii_to_value(char: String) -> Int: return -1 -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # b64encode -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # TODO: Use Span instead of List as input when Span is easier to use @@ -106,9 +106,9 @@ fn b64encode(input_bytes: List[UInt8, _]) -> String: return String(result^) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # b64decode -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @always_inline @@ -153,9 +153,9 @@ fn b64decode(str: String) -> String: return p -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # b16encode -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# fn b16encode(str: String) -> String: @@ -190,9 +190,9 @@ fn b16encode(str: String) -> String: return String(out^) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # b16decode -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @always_inline diff --git a/stdlib/src/bit/bit.mojo b/stdlib/src/bit/bit.mojo index 5405411ab1..74a428d3df 100644 --- a/stdlib/src/bit/bit.mojo +++ b/stdlib/src/bit/bit.mojo @@ -22,9 +22,9 @@ from bit import count_leading_zeros from sys import llvm_intrinsic, sizeof from sys.info import bitwidthof -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # count_leading_zeros -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @always_inline("nodebug") @@ -66,9 +66,9 @@ fn count_leading_zeros[ ) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # count_trailing_zeros -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @always_inline("nodebug") @@ -110,9 +110,9 @@ fn count_trailing_zeros[ ) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # bit_reverse -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @always_inline("nodebug") @@ -154,9 +154,9 @@ fn bit_reverse[ ](val) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # byte_swap -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @always_inline("nodebug") @@ -212,9 +212,9 @@ fn byte_swap[ ) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # pop_count -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @always_inline("nodebug") @@ -256,9 +256,9 @@ fn pop_count[ ) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # bit_not -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @always_inline @@ -286,9 +286,9 @@ fn bit_not[ return __mlir_op.`pop.simd.xor`(val.value, neg_one.value) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # bit_width -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @always_inline @@ -343,9 +343,9 @@ fn bit_width[ return bitwidth - leading_zero -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # is_power_of_two -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # reference: https://en.cppreference.com/w/cpp/numeric/has_single_bit @@ -391,9 +391,9 @@ fn is_power_of_two[ return (val > 0) & (val & (val - 1) == 0) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # bit_ceil -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # reference: https://en.cppreference.com/w/cpp/numeric/bit_ceil @@ -447,9 +447,9 @@ fn bit_ceil[ return (val > 1).select(1 << bit_width(val - ones), ones) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # bit_floor -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # reference: https://en.cppreference.com/w/cpp/numeric/bit_floor @@ -500,9 +500,9 @@ fn bit_floor[ return (val > 0).select(1 << (bit_width(val) - 1), zeros) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # rotate_bits_left -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @always_inline @@ -578,9 +578,9 @@ fn rotate_bits_left[ ) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # rotate_bits_right -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @always_inline diff --git a/stdlib/src/builtin/_stubs.mojo b/stdlib/src/builtin/_stubs.mojo index c116d52408..3b5a12fdac 100644 --- a/stdlib/src/builtin/_stubs.mojo +++ b/stdlib/src/builtin/_stubs.mojo @@ -13,9 +13,9 @@ from builtin.range import _StridedRangeIterator, _UIntStridedRangeIterator -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # __MLIRType -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @register_passable("trivial") @@ -23,9 +23,9 @@ struct __MLIRType[T: AnyTrivialRegType](Movable, Copyable): var value: T -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # parameter_for -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# trait _IntNext(Copyable): diff --git a/stdlib/src/builtin/builtin_list.mojo b/stdlib/src/builtin/builtin_list.mojo index be5ddaaa05..1e44efe5b4 100644 --- a/stdlib/src/builtin/builtin_list.mojo +++ b/stdlib/src/builtin/builtin_list.mojo @@ -17,9 +17,9 @@ These are Mojo built-ins, so you don't need to import them. from memory import Pointer, UnsafePointer -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # ListLiteral -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# struct ListLiteral[*Ts: CollectionElement](Sized, CollectionElement): @@ -119,9 +119,9 @@ struct ListLiteral[*Ts: CollectionElement](Sized, CollectionElement): return value in self.storage -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # VariadicList / VariadicListMem -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @value @@ -469,9 +469,9 @@ struct VariadicListMem[ ](0, self) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # VariadicPack -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# alias _AnyTypeMetaType = __mlir_type[`!lit.anytrait<`, AnyType, `>`] diff --git a/stdlib/src/builtin/dtype.mojo b/stdlib/src/builtin/dtype.mojo index 1d1c37d16f..4ac807acd6 100644 --- a/stdlib/src/builtin/dtype.mojo +++ b/stdlib/src/builtin/dtype.mojo @@ -511,9 +511,9 @@ struct DType( """ return 8 * self.sizeof() - # ===----------------------------------------------------------------------===# + # ===-------------------------------------------------------------------===# # dispatch_integral - # ===----------------------------------------------------------------------===# + # ===-------------------------------------------------------------------===# @always_inline fn dispatch_integral[ @@ -548,9 +548,9 @@ struct DType( else: raise Error("only integral types are supported") - # ===----------------------------------------------------------------------===# + # ===-------------------------------------------------------------------===# # dispatch_floating - # ===----------------------------------------------------------------------===# + # ===-------------------------------------------------------------------===# @always_inline fn dispatch_floating[ @@ -626,9 +626,9 @@ struct DType( "dispatch_custom: dynamic_type does not match any dtype parameters" ) - # ===----------------------------------------------------------------------===# + # ===-------------------------------------------------------------------===# # dispatch_arithmetic - # ===----------------------------------------------------------------------===# + # ===-------------------------------------------------------------------===# @always_inline fn dispatch_arithmetic[ diff --git a/stdlib/src/builtin/error.mojo b/stdlib/src/builtin/error.mojo index 1d19b5d201..e282d56ba0 100644 --- a/stdlib/src/builtin/error.mojo +++ b/stdlib/src/builtin/error.mojo @@ -23,9 +23,9 @@ from memory.memory import _free from utils import StringRef -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Error -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @register_passable diff --git a/stdlib/src/builtin/float_literal.mojo b/stdlib/src/builtin/float_literal.mojo index 906e8d40dc..6cee98bafa 100644 --- a/stdlib/src/builtin/float_literal.mojo +++ b/stdlib/src/builtin/float_literal.mojo @@ -17,9 +17,9 @@ These are Mojo built-ins, so you don't need to import them. from math import Ceilable, CeilDivable, Floorable, Truncable -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # FloatLiteral -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @value diff --git a/stdlib/src/builtin/format_int.mojo b/stdlib/src/builtin/format_int.mojo index 0239369fbe..0598bb816a 100644 --- a/stdlib/src/builtin/format_int.mojo +++ b/stdlib/src/builtin/format_int.mojo @@ -24,9 +24,9 @@ from utils import StaticString, StringSlice alias _DEFAULT_DIGIT_CHARS = "0123456789abcdefghijklmnopqrstuvwxyz" -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # bin -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# fn bin(num: Scalar, /, *, prefix: StaticString = "0b") -> String: @@ -82,9 +82,9 @@ fn bin[T: Indexer, //](num: T, /, *, prefix: StaticString = "0b") -> String: return bin(Scalar[DType.index](index(num)), prefix=prefix) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # hex -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# fn hex(value: Scalar, /, *, prefix: StaticString = "0x") -> String: @@ -144,9 +144,9 @@ fn hex(value: Scalar[DType.bool], /, *, prefix: StaticString = "0x") -> String: return hex(value.cast[DType.int8](), prefix=prefix) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # oct -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# fn oct(value: Scalar, /, *, prefix: StaticString = "0o") -> String: @@ -206,9 +206,9 @@ fn oct(value: Scalar[DType.bool], /, *, prefix: StaticString = "0o") -> String: return oct(value.cast[DType.int8](), prefix=prefix) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Integer formatting utilities -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# fn _try_format_int( diff --git a/stdlib/src/builtin/int.mojo b/stdlib/src/builtin/int.mojo index 61a74df2dc..2c9a13234b 100644 --- a/stdlib/src/builtin/int.mojo +++ b/stdlib/src/builtin/int.mojo @@ -760,9 +760,9 @@ struct Int( """ return __mlir_op.`index.or`(self.value, rhs.value) - # ===----------------------------------------------------------------------===# + # ===-------------------------------------------------------------------===# # In place operations. - # ===----------------------------------------------------------------------===# + # ===-------------------------------------------------------------------===# @always_inline("nodebug") fn __iadd__(mut self, rhs: Int): @@ -873,9 +873,9 @@ struct Int( """ self = self | rhs - # ===----------------------------------------------------------------------===# + # ===-------------------------------------------------------------------===# # Reversed operations - # ===----------------------------------------------------------------------===# + # ===-------------------------------------------------------------------===# @always_inline("nodebug") fn __radd__(self, value: Int) -> Int: diff --git a/stdlib/src/builtin/int_literal.mojo b/stdlib/src/builtin/int_literal.mojo index 360ed0e9a6..3d50918458 100644 --- a/stdlib/src/builtin/int_literal.mojo +++ b/stdlib/src/builtin/int_literal.mojo @@ -373,9 +373,9 @@ struct IntLiteral( ](self.value, rhs.value) ) - # ===----------------------------------------------------------------------===# + # ===-------------------------------------------------------------------===# # In place operations. - # ===----------------------------------------------------------------------===# + # ===-------------------------------------------------------------------===# @always_inline("nodebug") fn __iadd__(mut self, rhs: Self): @@ -458,9 +458,9 @@ struct IntLiteral( """ self = self | rhs - # ===----------------------------------------------------------------------===# + # ===-------------------------------------------------------------------===# # Reversed operations - # ===----------------------------------------------------------------------===# + # ===-------------------------------------------------------------------===# @always_inline("nodebug") fn __radd__(self, value: Self) -> Self: @@ -717,9 +717,9 @@ struct IntLiteral( """ return -(self // -denominator) - # ===----------------------------------------------------------------------===# + # ===-------------------------------------------------------------------===# # Methods - # ===----------------------------------------------------------------------===# + # ===-------------------------------------------------------------------===# @always_inline("nodebug") fn _bit_width(self) -> IntLiteral: diff --git a/stdlib/src/builtin/sort.mojo b/stdlib/src/builtin/sort.mojo index 093cc41914..78447a82fb 100644 --- a/stdlib/src/builtin/sort.mojo +++ b/stdlib/src/builtin/sort.mojo @@ -24,9 +24,9 @@ from memory import UnsafePointer from utils import Span -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # sort -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# alias insertion_sort_threshold = 32 @@ -260,9 +260,9 @@ fn _quicksort[ stack.append(ImmSpan(ptr=ptr, length=pivot)) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # stable sort -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# fn _merge[ @@ -366,9 +366,9 @@ fn _stable_sort[ temp_buff.free() -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # partition -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @always_inline @@ -501,9 +501,9 @@ fn partition[ _partition[_cmp_fn](span, k) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # sort -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Junction from public to private API @@ -686,9 +686,9 @@ fn sort[ sort[_cmp_fn, stable=stable](span) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # sort networks -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @always_inline diff --git a/stdlib/src/builtin/string_literal.mojo b/stdlib/src/builtin/string_literal.mojo index 554ddeddfd..3e889e760a 100644 --- a/stdlib/src/builtin/string_literal.mojo +++ b/stdlib/src/builtin/string_literal.mojo @@ -26,9 +26,9 @@ from utils._visualizers import lldb_formatter_wrapping_type from utils.format import _CurlyEntryFormattable, _FormatCurlyEntry from utils.string_slice import _StringSliceIter, _to_string_list -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # StringLiteral -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @lldb_formatter_wrapping_type diff --git a/stdlib/src/builtin/tuple.mojo b/stdlib/src/builtin/tuple.mojo index 00bede563f..b18221e3b3 100644 --- a/stdlib/src/builtin/tuple.mojo +++ b/stdlib/src/builtin/tuple.mojo @@ -21,9 +21,9 @@ from memory import UnsafePointer from utils._visualizers import lldb_formatter_wrapping_type -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Tuple -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @lldb_formatter_wrapping_type diff --git a/stdlib/src/builtin/uint.mojo b/stdlib/src/builtin/uint.mojo index dad8ed6167..9c3feb155f 100644 --- a/stdlib/src/builtin/uint.mojo +++ b/stdlib/src/builtin/uint.mojo @@ -398,9 +398,9 @@ struct UInt(IntLike, _HashableWithHasher): """ return __mlir_op.`index.ceildivu`(self.value, denominator.value) - # ===----------------------------------------------------------------------===# + # ===-------------------------------------------------------------------===# # In place operations. - # ===----------------------------------------------------------------------===# + # ===-------------------------------------------------------------------===# @always_inline("nodebug") fn __iadd__(mut self, rhs: UInt): @@ -511,9 +511,9 @@ struct UInt(IntLike, _HashableWithHasher): """ self = self | rhs - # ===----------------------------------------------------------------------===# + # ===-------------------------------------------------------------------===# # Reversed operations - # ===----------------------------------------------------------------------===# + # ===-------------------------------------------------------------------===# @always_inline("nodebug") fn __radd__(self, value: Self) -> Self: diff --git a/stdlib/src/collections/deque.mojo b/stdlib/src/collections/deque.mojo index cdaf52332d..c79efe4a30 100644 --- a/stdlib/src/collections/deque.mojo +++ b/stdlib/src/collections/deque.mojo @@ -26,9 +26,9 @@ from collections import Optional from bit import bit_ceil from memory import UnsafePointer -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Deque -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# struct Deque[ElementType: CollectionElement]( diff --git a/stdlib/src/collections/inline_array.mojo b/stdlib/src/collections/inline_array.mojo index bb8809612d..93064e0220 100644 --- a/stdlib/src/collections/inline_array.mojo +++ b/stdlib/src/collections/inline_array.mojo @@ -25,9 +25,9 @@ from sys.intrinsics import _type_is_eq from memory import UnsafePointer from memory.maybe_uninitialized import UnsafeMaybeUninitialized -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Array -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# fn _inline_array_construction_checks[size: Int](): diff --git a/stdlib/src/collections/inline_list.mojo b/stdlib/src/collections/inline_list.mojo index 516be41287..4e2e90349f 100644 --- a/stdlib/src/collections/inline_list.mojo +++ b/stdlib/src/collections/inline_list.mojo @@ -24,9 +24,9 @@ from sys.intrinsics import _type_is_eq from memory.maybe_uninitialized import UnsafeMaybeUninitialized -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # InlineList -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @value struct _InlineListIter[ list_mutability: Bool, //, diff --git a/stdlib/src/collections/list.mojo b/stdlib/src/collections/list.mojo index 19b477a47e..b470023659 100644 --- a/stdlib/src/collections/list.mojo +++ b/stdlib/src/collections/list.mojo @@ -30,9 +30,9 @@ from utils import Span from .optional import Optional -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # List -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @value diff --git a/stdlib/src/collections/optional.mojo b/stdlib/src/collections/optional.mojo index 95c78a9706..73518b55a5 100644 --- a/stdlib/src/collections/optional.mojo +++ b/stdlib/src/collections/optional.mojo @@ -43,9 +43,9 @@ struct _NoneType(CollectionElement, CollectionElementNew): pass -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Optional -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @value @@ -383,9 +383,9 @@ struct Optional[T: CollectionElement]( return default -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # OptionalReg -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @register_passable("trivial") diff --git a/stdlib/src/collections/vector.mojo b/stdlib/src/collections/vector.mojo index 1c9385c528..62196e6a15 100644 --- a/stdlib/src/collections/vector.mojo +++ b/stdlib/src/collections/vector.mojo @@ -25,9 +25,9 @@ from memory import Pointer, UnsafePointer, memcpy from utils import StaticTuple -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # _VecIter -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @value @@ -54,9 +54,9 @@ struct _VecIter[ return self.size - self.i -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # InlinedFixedVector -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @always_inline diff --git a/stdlib/src/math/polynomial.mojo b/stdlib/src/math/polynomial.mojo index 8397218380..35384d33c1 100644 --- a/stdlib/src/math/polynomial.mojo +++ b/stdlib/src/math/polynomial.mojo @@ -21,9 +21,9 @@ from math.polynomial import polynomial_evaluate from collections import List -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # polynomial_evaluate -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @always_inline @@ -49,9 +49,9 @@ fn polynomial_evaluate[ return _horner_evaluate[coefficients](x) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Horner Method -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @always_inline diff --git a/stdlib/src/memory/memory.mojo b/stdlib/src/memory/memory.mojo index 1cbf5c43d3..8d3a525cb4 100644 --- a/stdlib/src/memory/memory.mojo +++ b/stdlib/src/memory/memory.mojo @@ -44,9 +44,9 @@ fn _align_down(value: Int, alignment: Int) -> Int: return value._positive_div(alignment) * alignment -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # memcmp -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @always_inline @@ -146,9 +146,9 @@ fn memcmp[ return _memcmp_impl(s1.bitcast[Byte](), s2.bitcast[Byte](), byte_count) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # memcpy -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @always_inline @@ -259,9 +259,9 @@ fn memcpy[ ) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # memset -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @always_inline("nodebug") @@ -304,9 +304,9 @@ fn memset[ _memset_impl(ptr.bitcast[Byte](), value, count * sizeof[type]()) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # memset_zero -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @always_inline @@ -356,9 +356,9 @@ fn memset_zero[ ptr.store(i, 0) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # stack_allocation -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @always_inline @@ -447,9 +447,9 @@ fn stack_allocation[ ]() -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # malloc -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @always_inline @@ -475,9 +475,9 @@ fn _malloc[ ](alignment.value, size.value) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # aligned_free -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @always_inline diff --git a/stdlib/src/memory/pointer.mojo b/stdlib/src/memory/pointer.mojo index 4fa37a6e61..db7b78bc18 100644 --- a/stdlib/src/memory/pointer.mojo +++ b/stdlib/src/memory/pointer.mojo @@ -20,9 +20,9 @@ from memory import Pointer """ -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # AddressSpace -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @value @@ -290,9 +290,9 @@ struct AddressSpace(EqualityComparable, Stringable, Writable): writer.write("AddressSpace(", self.value(), ")") -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Pointer -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @value diff --git a/stdlib/src/memory/unsafe.mojo b/stdlib/src/memory/unsafe.mojo index 82e995de53..450c18d199 100644 --- a/stdlib/src/memory/unsafe.mojo +++ b/stdlib/src/memory/unsafe.mojo @@ -21,9 +21,9 @@ from memory import bitcast from sys import bitwidthof -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # bitcast -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @always_inline("nodebug") diff --git a/stdlib/src/os/atomic.mojo b/stdlib/src/os/atomic.mojo index e2b8f1c65e..5eaac49644 100644 --- a/stdlib/src/os/atomic.mojo +++ b/stdlib/src/os/atomic.mojo @@ -284,9 +284,9 @@ struct Atomic[type: DType, *, scope: StringLiteral = ""]: Self.min(UnsafePointer.address_of(self.value), rhs) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Utilities -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @always_inline diff --git a/stdlib/src/sys/_assembly.mojo b/stdlib/src/sys/_assembly.mojo index 6cb2123393..2074afde29 100644 --- a/stdlib/src/sys/_assembly.mojo +++ b/stdlib/src/sys/_assembly.mojo @@ -14,9 +14,9 @@ from sys.intrinsics import _mlirtype_is_eq -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # 0-arg -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @always_inline("nodebug") diff --git a/stdlib/src/sys/_libc.mojo b/stdlib/src/sys/_libc.mojo index 6751a60e62..ca0104d19c 100644 --- a/stdlib/src/sys/_libc.mojo +++ b/stdlib/src/sys/_libc.mojo @@ -22,9 +22,9 @@ from sys.ffi import OpaquePointer, c_char, c_int from memory import UnsafePointer -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # stdlib.h — core C standard library operations -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @always_inline @@ -37,9 +37,9 @@ fn exit(status: c_int): external_call["exit", NoneType](status) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # stdio.h — input/output operations -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# alias FILE_ptr = OpaquePointer @@ -74,9 +74,9 @@ fn pclose(stream: FILE_ptr) -> c_int: return external_call["pclose", c_int](stream) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # unistd.h -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @always_inline @@ -86,9 +86,9 @@ fn dup(oldfd: c_int) -> c_int: return external_call[name, c_int](oldfd) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # dlfcn.h — dynamic library operations -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @always_inline diff --git a/stdlib/src/sys/ffi.mojo b/stdlib/src/sys/ffi.mojo index 6d65ab7447..2d6926568d 100644 --- a/stdlib/src/sys/ffi.mojo +++ b/stdlib/src/sys/ffi.mojo @@ -404,9 +404,9 @@ fn _get_dylib_function[ return new_func -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Globals -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# struct _Global[ @@ -462,9 +462,9 @@ fn _get_global_or_null[name: StringLiteral]() -> OpaquePointer: ) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # external_call -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @always_inline("nodebug") @@ -502,9 +502,9 @@ fn external_call[ ) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # _external_call_const -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @always_inline("nodebug") diff --git a/stdlib/src/sys/info.mojo b/stdlib/src/sys/info.mojo index 2fe91f3b99..ccd39c7ee2 100644 --- a/stdlib/src/sys/info.mojo +++ b/stdlib/src/sys/info.mojo @@ -864,9 +864,9 @@ fn _macos_version() raises -> Tuple[Int, Int, Int]: return (major, minor, patch) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Detect GPU on host side -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @always_inline("nodebug") diff --git a/stdlib/src/sys/intrinsics.mojo b/stdlib/src/sys/intrinsics.mojo index dbc833dcc8..3eb81a505a 100644 --- a/stdlib/src/sys/intrinsics.mojo +++ b/stdlib/src/sys/intrinsics.mojo @@ -26,9 +26,9 @@ from memory import AddressSpace, UnsafePointer from ._assembly import inlined_assembly from .info import is_nvidia_gpu, sizeof -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # llvm_intrinsic -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @always_inline("nodebug") @@ -90,9 +90,9 @@ fn llvm_intrinsic[ ](loaded_pack) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # _gather -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # NOTE: Converting from a scalar to a pointer is unsafe! The resulting pointer @@ -176,9 +176,9 @@ fn gather[ return result -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # _scatter -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @always_inline("nodebug") @@ -254,9 +254,9 @@ fn scatter[ _ = base -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # prefetch -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @register_passable("trivial") @@ -500,9 +500,9 @@ fn prefetch[ ) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # masked load -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @always_inline("nodebug") @@ -546,9 +546,9 @@ fn masked_load[ ) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # masked store -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @always_inline("nodebug") @@ -588,9 +588,9 @@ fn masked_store[ ) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # compressed store -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @always_inline("nodebug") @@ -628,9 +628,9 @@ fn compressed_store[ ) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # strided load -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @always_inline("nodebug") @@ -668,9 +668,9 @@ fn strided_load[ return gather(offset, mask, passthrough) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # strided store -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @always_inline("nodebug") diff --git a/stdlib/src/time/time.mojo b/stdlib/src/time/time.mojo index 71eb1e80c2..853c6d2d56 100644 --- a/stdlib/src/time/time.mojo +++ b/stdlib/src/time/time.mojo @@ -34,9 +34,9 @@ from sys._assembly import inlined_assembly from memory import UnsafePointer -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Utilities -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Enums used in time.h 's glibc alias _CLOCK_REALTIME = 0 @@ -169,9 +169,9 @@ fn _thread_cputime_nanoseconds() -> Int: return _gettime_as_nsec_unix(_CLOCK_THREAD_CPUTIME_ID) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # perf_counter -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @always_inline @@ -188,9 +188,9 @@ fn perf_counter() -> Float64: return Float64(_monotonic_nanoseconds()) / _NSEC_PER_SEC -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # perf_counter_ns -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @always_inline @@ -215,9 +215,9 @@ fn perf_counter_ns() -> Int: return _monotonic_nanoseconds() -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # now -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @always_inline @@ -235,9 +235,9 @@ fn now() -> Int: return perf_counter_ns() -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # monotonic -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @always_inline @@ -254,9 +254,9 @@ fn monotonic() -> Int: return perf_counter_ns() -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # time_function -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @always_inline @@ -336,9 +336,9 @@ fn time_function[func: fn () capturing [_] -> None]() -> Int: return abort[Int](err) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # sleep -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# fn sleep(sec: Float64): diff --git a/stdlib/src/utils/format.mojo b/stdlib/src/utils/format.mojo index af4bbc8d7c..5c1dc2cf8b 100644 --- a/stdlib/src/utils/format.mojo +++ b/stdlib/src/utils/format.mojo @@ -22,9 +22,9 @@ from utils.string_slice import Stringlike # people who want to write their own templating engines. This is not yet done # because the implementation is incomplete and we are missing crucial features. -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Formatter -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # NOTE(#3765): an interesting idea would be to allow custom start and end @@ -417,9 +417,9 @@ struct _FormatCurlyEntry(CollectionElement, CollectionElementNew): auto_idx += 1 -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Format Specification -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# trait _CurlyEntryFormattable(Stringable, Representable): @@ -714,6 +714,6 @@ struct _FormatSpec: res += str(item) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Utils -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# diff --git a/stdlib/src/utils/index.mojo b/stdlib/src/utils/index.mojo index 0ea645ee88..b526aa84ff 100644 --- a/stdlib/src/utils/index.mojo +++ b/stdlib/src/utils/index.mojo @@ -29,9 +29,9 @@ from builtin.io import _get_dtype_printf_format, _snprintf from . import unroll from .static_tuple import StaticTuple -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Utilities -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @always_inline @@ -48,10 +48,10 @@ fn _reduce_and_fn(a: Bool, b: Bool) -> Bool: return a and b -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Integer and Bool Tuple Utilities: # Utilities to operate on tuples of integers or tuples of bools. -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @always_inline @@ -147,9 +147,9 @@ fn _bool_tuple_reduce[ return c -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # IndexList: -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# fn _type_of_width[bitwidth: Int, unsigned: Bool]() -> DType: @@ -828,9 +828,9 @@ struct IndexList[ ) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Factory functions for creating index. -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @always_inline fn Index[ T0: Intable, //, @@ -1029,9 +1029,9 @@ fn Index[ return __type_of(result)(int(x), int(y), int(z), int(w), int(v)) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Utils -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @always_inline diff --git a/stdlib/src/utils/inline_string.mojo b/stdlib/src/utils/inline_string.mojo index cf8caafc31..add0e6c7cc 100644 --- a/stdlib/src/utils/inline_string.mojo +++ b/stdlib/src/utils/inline_string.mojo @@ -23,9 +23,9 @@ from memory import UnsafePointer, memcpy from utils import StringSlice, Variant -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # InlineString -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @value @@ -296,9 +296,9 @@ struct InlineString(Sized, Stringable, CollectionElement, CollectionElementNew): ) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # __FixedString -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @value diff --git a/stdlib/src/utils/lock.mojo b/stdlib/src/utils/lock.mojo index 3916cd92cc..6459952b4e 100644 --- a/stdlib/src/utils/lock.mojo +++ b/stdlib/src/utils/lock.mojo @@ -18,9 +18,9 @@ from time import sleep from memory import UnsafePointer -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # SpinWaiter -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# struct SpinWaiter: diff --git a/stdlib/src/utils/loop.mojo b/stdlib/src/utils/loop.mojo index c0a6aa3f5e..1d61112379 100644 --- a/stdlib/src/utils/loop.mojo +++ b/stdlib/src/utils/loop.mojo @@ -23,9 +23,9 @@ from utils import unroll """ -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # unroll -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @always_inline @@ -51,9 +51,9 @@ fn unroll[ func[i, j]() -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # unroll -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @always_inline @@ -84,9 +84,9 @@ fn unroll[ func[i, j, k]() -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # unroll _ZeroStartingRange -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @always_inline @@ -125,9 +125,9 @@ fn unroll[ func[i]() -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # unroll _SequentialRange -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @always_inline fn unroll[ func: fn[idx: Int] () capturing [_] -> None, @@ -164,9 +164,9 @@ fn unroll[ func[i]() -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # unroll _StridedRange -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @always_inline fn unroll[ func: fn[idx: Int] () capturing [_] -> None, diff --git a/stdlib/src/utils/static_tuple.mojo b/stdlib/src/utils/static_tuple.mojo index 7a907b7ed0..6904888e65 100644 --- a/stdlib/src/utils/static_tuple.mojo +++ b/stdlib/src/utils/static_tuple.mojo @@ -21,9 +21,9 @@ from utils import StaticTuple from memory import UnsafePointer -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Utilities -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @always_inline @@ -93,9 +93,9 @@ fn _create_array[ return array -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # StaticTuple -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# fn _static_tuple_construction_checks[size: Int](): diff --git a/stdlib/src/utils/string_slice.mojo b/stdlib/src/utils/string_slice.mojo index 666a25c45c..34a33eb3e6 100644 --- a/stdlib/src/utils/string_slice.mojo +++ b/stdlib/src/utils/string_slice.mojo @@ -1010,9 +1010,9 @@ struct StringSlice[is_mutable: Bool, //, origin: Origin[is_mutable].type,]( return output^ -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Utils -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# trait Stringlike: diff --git a/stdlib/src/utils/stringref.mojo b/stdlib/src/utils/stringref.mojo index e2a0303100..eaf6a285e3 100644 --- a/stdlib/src/utils/stringref.mojo +++ b/stdlib/src/utils/stringref.mojo @@ -35,9 +35,9 @@ fn _align_down(value: Int, alignment: Int) -> Int: return value._positive_div(alignment) * alignment -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # StringRef -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @value @@ -691,9 +691,9 @@ struct StringRef( ) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Utilities -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @always_inline diff --git a/stdlib/src/utils/write.mojo b/stdlib/src/utils/write.mojo index 2d9351036f..4d53f23afd 100644 --- a/stdlib/src/utils/write.mojo +++ b/stdlib/src/utils/write.mojo @@ -20,7 +20,7 @@ from memory import UnsafePointer, memcpy from utils import Span, StaticString -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# trait Writer: @@ -119,9 +119,9 @@ trait Writer: # To only have to implement `write_bytes` to make a type a valid Writer -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Writable -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# trait Writable: @@ -157,9 +157,9 @@ trait Writable: ... -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Utils -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# fn write_args[ diff --git a/stdlib/test/collections/test_deque.mojo b/stdlib/test/collections/test_deque.mojo index 84b759eb91..fd2db54440 100644 --- a/stdlib/test/collections/test_deque.mojo +++ b/stdlib/test/collections/test_deque.mojo @@ -16,9 +16,9 @@ from collections import Deque from testing import assert_equal, assert_false, assert_raises, assert_true -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Implementation tests -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# fn test_impl_init_default() raises: @@ -666,9 +666,9 @@ fn test_impl_imul() raises: assert_equal((q._data + 0)[], 3) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # API Interface tests -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# fn test_init_variadic_list() raises: From fcb15eac9353bd0e7ce8cea78f8a8302a5a6348c Mon Sep 17 00:00:00 2001 From: abdul dakkak Date: Tue, 3 Dec 2024 02:00:57 -0800 Subject: [PATCH 015/509] [Stdlib] Extend StringLiteral import support to work on Stringable MODULAR_ORIG_COMMIT_REV_ID: b4843f75d8d57376b45716189e89a2f0c41b1315 --- docs/changelog.md | 4 +-- stdlib/src/builtin/constrained.mojo | 2 +- stdlib/src/builtin/string_literal.mojo | 27 +++++++++++--------- stdlib/test/builtin/test_string_literal.mojo | 10 ++++++++ stdlib/test/utils/test_string_slice.mojo | 2 +- 5 files changed, 29 insertions(+), 16 deletions(-) diff --git a/docs/changelog.md b/docs/changelog.md index 640824629c..664fe17057 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -288,9 +288,9 @@ what we publish. memory allocation and performance. These options allow for optimized memory usage and reduced buffer reallocations, providing flexibility based on application requirements. -- A new `StringLiteral.from_string[someString]()` method is available. It +- A new `StringLiteral.get[some_stringable]()` method is available. It allows forming a runtime-constant StringLiteral from a compile-time-dynamic - `String` value. + `Stringable` value. ### 🦋 Changed diff --git a/stdlib/src/builtin/constrained.mojo b/stdlib/src/builtin/constrained.mojo index 09d934ff1c..b50ca11e71 100644 --- a/stdlib/src/builtin/constrained.mojo +++ b/stdlib/src/builtin/constrained.mojo @@ -88,4 +88,4 @@ fn constrained[cond: Bool, msg: String](): "at least two cores are required" ]() """ - constrained[cond, StringLiteral.from_string[msg]()]() + constrained[cond, StringLiteral.get[msg]()]() diff --git a/stdlib/src/builtin/string_literal.mojo b/stdlib/src/builtin/string_literal.mojo index 3e889e760a..dc7d05d49a 100644 --- a/stdlib/src/builtin/string_literal.mojo +++ b/stdlib/src/builtin/string_literal.mojo @@ -89,7 +89,7 @@ struct StringLiteral( # for now. @always_inline("nodebug") @staticmethod - fn from_string[value: String]() -> StringLiteral: + fn _from_string[value: String]() -> StringLiteral: """Form a string literal from an arbitrary compile-time String value. Parameters: @@ -106,6 +106,20 @@ struct StringLiteral( `> : !kgen.string`, ] + @always_inline("nodebug") + @staticmethod + fn get[type: Stringable, //, value: type]() -> StringLiteral: + """Form a string literal from an arbitrary compile-time stringable value. + + Parameters: + type: The type of the value. + value: The value to serialize. + + Returns: + The string value as a StringLiteral. + """ + return Self._from_string[str(value)]() + # ===-------------------------------------------------------------------===# # Operator dunders # ===-------------------------------------------------------------------===# @@ -920,14 +934,3 @@ struct StringLiteral( A copy of the string with no leading whitespaces. """ return str(self).lstrip() - - -fn _to_string_literal[val: Int]() -> StringLiteral: - alias s = StringLiteral.from_string[str(val)]() - return s - - -fn _to_string_literal[val: SIMD]() -> StringLiteral: - constrained[val.type.is_integral(), "input type must be integral"]() - alias s = StringLiteral.from_string[str(val)]() - return s diff --git a/stdlib/test/builtin/test_string_literal.mojo b/stdlib/test/builtin/test_string_literal.mojo index 2aaa26e063..28ca91a1af 100644 --- a/stdlib/test/builtin/test_string_literal.mojo +++ b/stdlib/test/builtin/test_string_literal.mojo @@ -474,6 +474,15 @@ def test_float_conversion(): _ = ("not a float").__float__() +def test_string_literal_from_stringable(): + assert_equal(StringLiteral.get["hello"](), "hello") + assert_equal(StringLiteral.get[String("hello")](), "hello") + assert_equal(StringLiteral.get[42](), "42") + assert_equal( + StringLiteral.get[SIMD[DType.int64, 4](1, 2, 3, 4)](), "[1, 2, 3, 4]" + ) + + def main(): test_add() test_iadd() @@ -506,3 +515,4 @@ def main(): test_split() test_splitlines() test_float_conversion() + test_string_literal_from_stringable() diff --git a/stdlib/test/utils/test_string_slice.mojo b/stdlib/test/utils/test_string_slice.mojo index 191d98a7d6..057601c270 100644 --- a/stdlib/test/utils/test_string_slice.mojo +++ b/stdlib/test/utils/test_string_slice.mojo @@ -487,7 +487,7 @@ def test_splitlines(): _assert_equal(s.splitlines(keepends=True), items) -fn main() raises: +def main(): test_string_literal_byte_span() test_string_byte_span() test_heap_string_from_string_slice() From 312784ca3c229069248f4a581c0e244fead2779d Mon Sep 17 00:00:00 2001 From: Connor Gray Date: Tue, 3 Dec 2024 17:07:28 -0600 Subject: [PATCH 016/509] [DRAFT] feat: Use `Origin[..]` instead of `Origin[..].type` in `Span` and `StringSlice` * Change `ImmutableOrigin` and `MutableOrigin` to be aliases for `Origin[False]` and `Origin[True]`, respectively, instead of raw `!lit.origin` MLIR types. MODULAR_ORIG_COMMIT_REV_ID: 62c5102b8ded23f6a5507021f2863d1c1080a383 --- stdlib/src/builtin/builtin_list.mojo | 5 ++++- stdlib/src/builtin/type_aliases.mojo | 4 ++-- stdlib/src/memory/arc.mojo | 2 +- stdlib/src/utils/span.mojo | 16 +++++++++------- stdlib/src/utils/string_slice.mojo | 4 ++-- 5 files changed, 18 insertions(+), 13 deletions(-) diff --git a/stdlib/src/builtin/builtin_list.mojo b/stdlib/src/builtin/builtin_list.mojo index 1e44efe5b4..80047f0343 100644 --- a/stdlib/src/builtin/builtin_list.mojo +++ b/stdlib/src/builtin/builtin_list.mojo @@ -236,7 +236,10 @@ struct _VariadicListMemIter[ alias variadic_list_type = VariadicListMem[elt_type, elt_origin] var index: Int - var src: Pointer[Self.variadic_list_type, list_origin] + var src: Pointer[ + Self.variadic_list_type, + list_origin._mlir_origin, + ] fn __init__( mut self, index: Int, ref [list_origin]list: Self.variadic_list_type diff --git a/stdlib/src/builtin/type_aliases.mojo b/stdlib/src/builtin/type_aliases.mojo index 5bbee8d763..7c7c6ff25b 100644 --- a/stdlib/src/builtin/type_aliases.mojo +++ b/stdlib/src/builtin/type_aliases.mojo @@ -18,10 +18,10 @@ These are Mojo built-ins, so you don't need to import them. alias AnyTrivialRegType = __mlir_type.`!kgen.type` """Represents any register passable Mojo data type.""" -alias ImmutableOrigin = __mlir_type.`!lit.origin<0>` +alias ImmutableOrigin = Origin[False] """Immutable origin reference type.""" -alias MutableOrigin = __mlir_type.`!lit.origin<1>` +alias MutableOrigin = Origin[True] """Mutable origin reference type.""" alias ImmutableAnyOrigin = __mlir_attr.`#lit.any.origin : !lit.origin<0>` diff --git a/stdlib/src/memory/arc.mojo b/stdlib/src/memory/arc.mojo index d7b236af72..ecabe6c9d4 100644 --- a/stdlib/src/memory/arc.mojo +++ b/stdlib/src/memory/arc.mojo @@ -146,7 +146,7 @@ struct ArcPointer[T: Movable]( ]( ref [self_life]self, ) -> ref [ - _lit_mut_cast[self_life, result_mutable=True].result + _lit_mut_cast[self_life._mlir_origin, result_mutable=True].result ] T: """Returns a mutable reference to the managed value. diff --git a/stdlib/src/utils/span.mojo b/stdlib/src/utils/span.mojo index 3ec2b3030c..396744aa4e 100644 --- a/stdlib/src/utils/span.mojo +++ b/stdlib/src/utils/span.mojo @@ -48,7 +48,7 @@ trait AsBytes: struct _SpanIter[ is_mutable: Bool, //, T: CollectionElement, - origin: Origin[is_mutable].type, + origin: Origin[is_mutable], forward: Bool = True, ]: """Iterator for Span. @@ -70,7 +70,7 @@ struct _SpanIter[ @always_inline fn __next__( mut self, - ) -> Pointer[T, origin]: + ) -> Pointer[T, origin._mlir_origin]: @parameter if forward: self.index += 1 @@ -97,7 +97,7 @@ struct _SpanIter[ struct Span[ is_mutable: Bool, //, T: CollectionElement, - origin: Origin[is_mutable].type, + origin: Origin[is_mutable], ](CollectionElementNew): """A non owning view of contiguous data. @@ -259,7 +259,7 @@ struct Span[ return self._data - fn as_ref(self) -> Pointer[T, origin]: + fn as_ref(self) -> Pointer[T, origin._mlir_origin]: """ Gets a Pointer to the first element of this slice. @@ -267,7 +267,7 @@ struct Span[ A Pointer pointing at the first element of this slice. """ - return Pointer[T, origin].address_of(self._data[0]) + return Pointer[T, origin._mlir_origin].address_of(self._data[0]) @always_inline fn copy_from[ @@ -358,13 +358,15 @@ struct Span[ for element in self: element[] = value - fn get_immutable(self) -> Span[T, _lit_mut_cast[origin, False].result]: + fn get_immutable( + self, + ) -> Span[T, _lit_mut_cast[origin._mlir_origin, False].result]: """ Return an immutable version of this span. Returns: A span covering the same elements, but without mutability. """ - return Span[T, _lit_mut_cast[origin, False].result]( + return Span[T, _lit_mut_cast[origin._mlir_origin, False].result]( ptr=self._data, length=self._len ) diff --git a/stdlib/src/utils/string_slice.mojo b/stdlib/src/utils/string_slice.mojo index 34a33eb3e6..394dccf89c 100644 --- a/stdlib/src/utils/string_slice.mojo +++ b/stdlib/src/utils/string_slice.mojo @@ -170,7 +170,7 @@ fn _memrmem[ @value struct _StringSliceIter[ is_mutable: Bool, //, - origin: Origin[is_mutable].type, + origin: Origin[is_mutable], forward: Bool = True, ]: """Iterator for `StringSlice` over unicode characters. @@ -235,7 +235,7 @@ struct _StringSliceIter[ @value @register_passable("trivial") -struct StringSlice[is_mutable: Bool, //, origin: Origin[is_mutable].type,]( +struct StringSlice[is_mutable: Bool, //, origin: Origin[is_mutable]]( Stringable, Sized, Writable, From ecb608453e302b4b5e8a579edad8cf824437a949 Mon Sep 17 00:00:00 2001 From: Connor Gray Date: Tue, 3 Dec 2024 17:39:50 -0600 Subject: [PATCH 017/509] [stdlib] feat: Use `Origin[..]` in `UnsafePointer` parameter MODULAR_ORIG_COMMIT_REV_ID: 229c6c76108284ab19aaa2e3fef02c288a1706ec --- stdlib/src/memory/unsafe_pointer.mojo | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/stdlib/src/memory/unsafe_pointer.mojo b/stdlib/src/memory/unsafe_pointer.mojo index 3f8db596af..cc760f1c01 100644 --- a/stdlib/src/memory/unsafe_pointer.mojo +++ b/stdlib/src/memory/unsafe_pointer.mojo @@ -53,7 +53,7 @@ struct UnsafePointer[ *, address_space: AddressSpace = AddressSpace.GENERIC, alignment: Int = _default_alignment[type](), - origin: Origin[True].type = MutableAnyOrigin, + origin: Origin[True] = MutableAnyOrigin, ]( ImplicitlyBoolable, CollectionElement, @@ -197,7 +197,7 @@ struct UnsafePointer[ """ # We're unsafe, so we can have unsafe things. - alias _ref_type = Pointer[type, origin, address_space] + alias _ref_type = Pointer[type, origin._mlir_origin, address_space] return __get_litref_as_mvalue( __mlir_op.`lit.ref.from_pointer`[_type = _ref_type._mlir_type]( UnsafePointer[ @@ -961,7 +961,7 @@ struct UnsafePointer[ /, address_space: AddressSpace = Self.address_space, alignment: Int = Self.alignment, - origin: Origin[True].type = Self.origin, + origin: Origin[True] = Self.origin, ](self) -> UnsafePointer[ T, address_space=address_space, alignment=alignment, origin=origin ]: From 58891453d6f93c786e2647b297a8e5cad8f62b0a Mon Sep 17 00:00:00 2001 From: Connor Gray Date: Tue, 3 Dec 2024 18:13:10 -0600 Subject: [PATCH 018/509] [stdlib] feat: Use `Origin[..]` in `Pointer` and iterator type parameter (Part 3/X) Also changes `_lit_mut_cast[]` to take an `Origin` as well. MODULAR_ORIG_COMMIT_REV_ID: 1b9b88f28acc46ed2c02b368892c1cddbdf98b7e --- stdlib/src/builtin/builtin_list.mojo | 6 +++--- stdlib/src/collections/deque.mojo | 2 +- stdlib/src/collections/inline_list.mojo | 2 +- stdlib/src/collections/list.mojo | 2 +- stdlib/src/memory/arc.mojo | 2 +- stdlib/src/memory/pointer.mojo | 4 ++-- stdlib/src/memory/unsafe_pointer.mojo | 2 +- stdlib/src/utils/span.mojo | 10 +++++----- 8 files changed, 15 insertions(+), 15 deletions(-) diff --git a/stdlib/src/builtin/builtin_list.mojo b/stdlib/src/builtin/builtin_list.mojo index 80047f0343..fa24d3c55c 100644 --- a/stdlib/src/builtin/builtin_list.mojo +++ b/stdlib/src/builtin/builtin_list.mojo @@ -238,7 +238,7 @@ struct _VariadicListMemIter[ var index: Int var src: Pointer[ Self.variadic_list_type, - list_origin._mlir_origin, + list_origin, ] fn __init__( @@ -283,12 +283,12 @@ struct _lit_origin_union[ struct _lit_mut_cast[ is_mutable: Bool, //, - operand: Origin[is_mutable].type, + operand: Origin[is_mutable], result_mutable: Bool, ]: alias result = __mlir_attr[ `#lit.origin.mutcast<`, - operand, + operand._mlir_origin, `> : !lit.origin<`, +result_mutable.value, `>`, diff --git a/stdlib/src/collections/deque.mojo b/stdlib/src/collections/deque.mojo index c79efe4a30..6d45725350 100644 --- a/stdlib/src/collections/deque.mojo +++ b/stdlib/src/collections/deque.mojo @@ -995,7 +995,7 @@ struct Deque[ElementType: CollectionElement]( struct _DequeIter[ deque_mutability: Bool, //, ElementType: CollectionElement, - deque_lifetime: Origin[deque_mutability].type, + deque_lifetime: Origin[deque_mutability], forward: Bool = True, ]: """Iterator for Deque. diff --git a/stdlib/src/collections/inline_list.mojo b/stdlib/src/collections/inline_list.mojo index 4e2e90349f..f98e307940 100644 --- a/stdlib/src/collections/inline_list.mojo +++ b/stdlib/src/collections/inline_list.mojo @@ -32,7 +32,7 @@ struct _InlineListIter[ list_mutability: Bool, //, T: CollectionElementNew, capacity: Int, - list_origin: Origin[list_mutability].type, + list_origin: Origin[list_mutability], forward: Bool = True, ]: """Iterator for InlineList. diff --git a/stdlib/src/collections/list.mojo b/stdlib/src/collections/list.mojo index b470023659..d4791dd79e 100644 --- a/stdlib/src/collections/list.mojo +++ b/stdlib/src/collections/list.mojo @@ -40,7 +40,7 @@ struct _ListIter[ list_mutability: Bool, //, T: CollectionElement, hint_trivial_type: Bool, - list_origin: Origin[list_mutability].type, + list_origin: Origin[list_mutability], forward: Bool = True, ]: """Iterator for List. diff --git a/stdlib/src/memory/arc.mojo b/stdlib/src/memory/arc.mojo index ecabe6c9d4..d7b236af72 100644 --- a/stdlib/src/memory/arc.mojo +++ b/stdlib/src/memory/arc.mojo @@ -146,7 +146,7 @@ struct ArcPointer[T: Movable]( ]( ref [self_life]self, ) -> ref [ - _lit_mut_cast[self_life._mlir_origin, result_mutable=True].result + _lit_mut_cast[self_life, result_mutable=True].result ] T: """Returns a mutable reference to the managed value. diff --git a/stdlib/src/memory/pointer.mojo b/stdlib/src/memory/pointer.mojo index db7b78bc18..925707a0ea 100644 --- a/stdlib/src/memory/pointer.mojo +++ b/stdlib/src/memory/pointer.mojo @@ -300,7 +300,7 @@ struct AddressSpace(EqualityComparable, Stringable, Writable): struct Pointer[ is_mutable: Bool, //, type: AnyType, - origin: Origin[is_mutable].type, + origin: Origin[is_mutable], address_space: AddressSpace = AddressSpace.GENERIC, ](CollectionElementNew, Stringable): """Defines a non-nullable safe pointer. @@ -316,7 +316,7 @@ struct Pointer[ `!lit.ref<`, type, `, `, - origin, + origin._mlir_origin, `, `, address_space._value.value, `>`, diff --git a/stdlib/src/memory/unsafe_pointer.mojo b/stdlib/src/memory/unsafe_pointer.mojo index cc760f1c01..0d12a44a78 100644 --- a/stdlib/src/memory/unsafe_pointer.mojo +++ b/stdlib/src/memory/unsafe_pointer.mojo @@ -197,7 +197,7 @@ struct UnsafePointer[ """ # We're unsafe, so we can have unsafe things. - alias _ref_type = Pointer[type, origin._mlir_origin, address_space] + 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[ diff --git a/stdlib/src/utils/span.mojo b/stdlib/src/utils/span.mojo index 396744aa4e..38bb86cbe5 100644 --- a/stdlib/src/utils/span.mojo +++ b/stdlib/src/utils/span.mojo @@ -70,7 +70,7 @@ struct _SpanIter[ @always_inline fn __next__( mut self, - ) -> Pointer[T, origin._mlir_origin]: + ) -> Pointer[T, origin]: @parameter if forward: self.index += 1 @@ -259,7 +259,7 @@ struct Span[ return self._data - fn as_ref(self) -> Pointer[T, origin._mlir_origin]: + fn as_ref(self) -> Pointer[T, origin]: """ Gets a Pointer to the first element of this slice. @@ -267,7 +267,7 @@ struct Span[ A Pointer pointing at the first element of this slice. """ - return Pointer[T, origin._mlir_origin].address_of(self._data[0]) + return Pointer[T, origin].address_of(self._data[0]) @always_inline fn copy_from[ @@ -360,13 +360,13 @@ struct Span[ fn get_immutable( self, - ) -> Span[T, _lit_mut_cast[origin._mlir_origin, False].result]: + ) -> Span[T, _lit_mut_cast[origin, False].result]: """ Return an immutable version of this span. Returns: A span covering the same elements, but without mutability. """ - return Span[T, _lit_mut_cast[origin._mlir_origin, False].result]( + return Span[T, _lit_mut_cast[origin, False].result]( ptr=self._data, length=self._len ) From 40c6a2339d4ad36d2801155e6d84bf77ad6bc075 Mon Sep 17 00:00:00 2001 From: Owen Hilyard Date: Tue, 3 Dec 2024 16:21:57 -0800 Subject: [PATCH 019/509] [External] [docs] Stdlib insider documentation (#51673) [External] [docs] Stdlib insider documentation People working on the standard library need to have some more information about the API contracts and behavior of the runtime and compiler builtins in order to be able to write correct and performant code in the stdlib. This is not intended to be high effort documentation or acknowledgement that a feature is stable, but simply communication of enough information for those of us without access to the compiler source and autogenerated mlir documentation to work with them correctly. Co-authored-by: Owen Hilyard Closes modularml/mojo#3793 MODULAR_ORIG_COMMIT_REV_ID: 9f09d235fd6ec0dae76897a38621e779e460fc23 --- proposals/stdlib-insider-docs.md | 136 +++++++++++++++++++++++++++++++ stdlib/docs/internal/README.md | 16 ++++ stdlib/docs/internal/mlir.md | 10 +++ stdlib/docs/internal/runtime.md | 10 +++ 4 files changed, 172 insertions(+) create mode 100644 proposals/stdlib-insider-docs.md create mode 100644 stdlib/docs/internal/README.md create mode 100644 stdlib/docs/internal/mlir.md create mode 100644 stdlib/docs/internal/runtime.md diff --git a/proposals/stdlib-insider-docs.md b/proposals/stdlib-insider-docs.md new file mode 100644 index 0000000000..1bf0abfef2 --- /dev/null +++ b/proposals/stdlib-insider-docs.md @@ -0,0 +1,136 @@ +# Stdlib Insider Docs + +Owen Hilyard, Created November 17, 2024 + +**Status**: Initial Proposal + +## Motivation + +For most languages, people who work on the standard library have the ability +to look inside of the compiler to clarify questions they have about the +semantics of particular operations or compiler builtins. For Mojo, that is +not the case for many people working on the standard library. As a result, +the exact semantics of some important compiler builtins, such as +`lit.ownership.mark_destroyed`, are not fully known to a large number of +people working on the standard library. For example, the fact that +`lit.ownership.mark_destroyed` still runs the destructors of fields was a +surprise to many at the stdlib meeting. This creates issues where Modular +employees have to catch misuses. These language-internal dialects are, like +Mojo itself, subject to enhancements, breaking changes, and even complete +removal. This presents a problem since the stdlib is correctness-critical code, +and when people who don't understand the API contract of a construct use it +in correctness-critical code, issues are bound to happen. + +## Proposal + +In order to help address this, I propose the creation of a "stdlib insider" +document, which contains information on MLIR operations/types, WIP features and +other parts of the language which are either intended to only be used in the +standard library/MAX drivers or language features which are still subject to +change and evolution. This can be substantially less polished than the Mojo +manual, including "X is like Y in C++ but ...", links to academic +papers, links to LLVM docs, pseudocode, and other ways one might explain a +concept to a colleague. This document, likely maintained as a markdown file in +/docs, is intended to be internally facing to core Mojo developers. This means +that a large "everything in here is subject to being totally rewritten in a +bugfix release or security update, do not use outside of the standard library +or MAX" warning, which will hopefully dissuade people from using what is +documented there in ways that will get them stuck on old Mojo versions. + +For MLIR operations, I'd like the following information documented +for each operation used in the standard library; Operation name, +arguments (potentially as Mojo function syntax), a description of the +operation, pre-conditions, post-conditions, and clear hazards. Clear hazards +would ways in which the operation can cause UB (ex: is what happens with a +null pointer well defined?), conditions under which the operation will force +the program to abort or other like "`lit.ownership.mark_destroyed` +still runs the destructors of fields" which may be surprising behavior. + +For MLIR types, information about what a type is intended to do, what +parameters the type has (and their types), the size of the instantiated type +(for alignment), and any non-trivialities in the type (is it ok to copy/move +it?). MLIR attributes should have similar information. + +For features, a short description of what the feature is intended for, and +then syntax examples that show the capabilities of the feature. Ideally, some +differentiation between the design and the current implementation should be +present, slowly moving parts of the documentation over as they are available +on nightly. Documenting known sharp edges or limitations is also helpful, for +instance if trait objects could only represent a single trait (ex: no Movable +\+ Copyable + Formattable trait) or if some part of the implementation has a +high time or space complexity (ex: O(N^2) compile time overhead in the number +of traits in a trait object). + +## Current State + +At present, the majority of MLIR operations are things which I think +are reasonable to explain with a link to LLVM or C++ docs. For example, `pop.max` +is mostly self-explanatory, so unless there are extra semantics I don't +think it really needs more of an explanation than "see C++ std::max". + +What I consider the important things to document: + +### `pop.external_call` + +Lots of people want to call into OpenSSL to get basic HTTPS working, and that +needs to be done correctly. There's also a lot of ABI issues around this, +for instance whether Mojo structs are C layout (for now) or whether we need +a mechanism to force that behavior. + +### `co.*` + +This area is WIP, but some community discussion around the direction would be +helpful. Information about the API of each of the types would also be nice +since it looks like we would need to use MLIR to implement future combinators +like Rust's `FuturesUnordered`. Documentation around synchronization +requirements is also important for correctness as people move towards async io. + +### `#kgen.param.expr LLVM type conversions, +Documenting limitations is also helpful, for instance, can is `@call` ok to +use? Can I directly write phi nodes? I had a lot of difficulty interacting +with anything that returns a `!llvm.struct` or `!llvm.vec`. + +### `pop.inline_asm` + +A lot of CPU functionality doesn't have LLVM intrinsics and we'll need to use +assembly (CPU time stamp counters, poking MSRs for runtime capability +discovery, etc). I personally ran into difficulties doing multiple return +(ex: x86 `cpuid` returns results in 4 registers). Information on the asm +dialect, how to create clobbers and scratch registers, and rules for control +flow (ex: can I implement computed gotos, jump into the middle of a function or +return from the current function?). + +### `!lit.origin.set` + +This is used in Coroutines (presumably to store capture origins), but it looks +like it may be useful for storing collections of references. + +### The backing allocator(s) for `pop.aligned_alloc` and `pop.global_alloc` + +Time spent in GDB has led me to believe this is tcmalloc, but knowing for +sure means we have information like the minimum alignment the allocator will +provide (storing information in the lower bits), what kind of caching it does, +information about how it handles memory overcommit being off (db servers), and +what kind of instrumentation we might have access to. diff --git a/stdlib/docs/internal/README.md b/stdlib/docs/internal/README.md new file mode 100644 index 0000000000..b80fd03dca --- /dev/null +++ b/stdlib/docs/internal/README.md @@ -0,0 +1,16 @@ +## WARNING + +Everything in this file/directory is subject to revision on any bugfix or security +update. We (the stdlib team and contributors), reserve the right to remove, +change the API contracts of, rename, or cause to instantly crash the program, +any operation described in here. These are **PRIVATE** APIs and implementation +details for the Mojo stdlib and for MAX to use. **WE WILL CHANGE IT WHENEVER +WE FIND IT CONVENIENT TO DO SO WITHOUT WARNING OR NOTICE**. + +## Purpose + +This directory contains internal documentation for the implementation details +of the Mojo compiler, runtime, and stdlib. You must always reference the +current version of this documentation on the branch nightly before using the +operations or behavior documented within. Any new files should contain the +above warning. diff --git a/stdlib/docs/internal/mlir.md b/stdlib/docs/internal/mlir.md new file mode 100644 index 0000000000..ca0c174c4b --- /dev/null +++ b/stdlib/docs/internal/mlir.md @@ -0,0 +1,10 @@ +## WARNING + +Everything in this file is subject to revision on any bugfix or security +update. We (the stdlib team and contributors), reserve the right to remove, +change the API contracts of, rename, or cause to instantly crash the program, +any operation described in here. These are **PRIVATE** APIs and implementation +details for the Mojo stdlib and for MAX to use. **WE WILL CHANGE IT WHENEVER +WE FIND IT CONVENIENT TO DO SO WITHOUT WARNING OR NOTICE**. + +## MLIR Documentation diff --git a/stdlib/docs/internal/runtime.md b/stdlib/docs/internal/runtime.md new file mode 100644 index 0000000000..6d4921138b --- /dev/null +++ b/stdlib/docs/internal/runtime.md @@ -0,0 +1,10 @@ +## WARNING + +Everything in this file is subject to revision on any bugfix or security +update. We (the stdlib team and contributors), reserve the right to remove, +change the API contracts of, rename, or cause to instantly crash the program, +any operation described in here. These are **PRIVATE** APIs and implementation +details for the Mojo stdlib and for MAX to use. **WE WILL CHANGE IT WHENEVER +WE FIND IT CONVENIENT TO DO SO WITHOUT WARNING OR NOTICE**. + +## Runtime Documentation From 792299899de4867e5fe2e0bfb45090c6298aae0e Mon Sep 17 00:00:00 2001 From: Connor Gray Date: Tue, 3 Dec 2024 18:48:05 -0600 Subject: [PATCH 020/509] [stdlib] feat: Rename `Origin.type` to `Origin._mlir_type` + migrate ~remaining `.type uses (Part 4/X) * Use Origin in dict.mojo and builtin_list.mojo types This does *not* update `VariadicPack` and `VariadicListMem` yet, which will require more improvements to parameter inference. MODULAR_ORIG_COMMIT_REV_ID: c4d20f6842ce361d124ee2e246431af0b3efcd6a --- stdlib/src/builtin/builtin_list.mojo | 18 ++++++++++-------- stdlib/src/builtin/reversed.mojo | 4 ++-- stdlib/src/builtin/type_aliases.mojo | 6 +++--- stdlib/src/collections/dict.mojo | 6 +++--- 4 files changed, 18 insertions(+), 16 deletions(-) diff --git a/stdlib/src/builtin/builtin_list.mojo b/stdlib/src/builtin/builtin_list.mojo index fa24d3c55c..9e6b5972ea 100644 --- a/stdlib/src/builtin/builtin_list.mojo +++ b/stdlib/src/builtin/builtin_list.mojo @@ -221,7 +221,7 @@ struct VariadicList[type: AnyTrivialRegType](Sized): struct _VariadicListMemIter[ elt_is_mutable: Bool, //, elt_type: AnyType, - elt_origin: Origin[elt_is_mutable].type, + elt_origin: Origin[elt_is_mutable], list_origin: ImmutableOrigin, ]: """Iterator for VariadicListMem. @@ -233,7 +233,9 @@ struct _VariadicListMemIter[ list_origin: The origin of the VariadicListMem. """ - alias variadic_list_type = VariadicListMem[elt_type, elt_origin] + alias variadic_list_type = VariadicListMem[ + elt_type, elt_origin._mlir_origin + ] var index: Int var src: Pointer[ @@ -267,14 +269,14 @@ struct _VariadicListMemIter[ # TODO: parametric aliases would be nice. struct _lit_origin_union[ is_mutable: Bool, //, - a: Origin[is_mutable].type, - b: Origin[is_mutable].type, + a: Origin[is_mutable], + b: Origin[is_mutable], ]: alias result = __mlir_attr[ `#lit.origin.union<`, - a, + a._mlir_origin, `,`, - b, + b._mlir_origin, `> : !lit.origin<`, is_mutable.value, `>`, @@ -298,7 +300,7 @@ struct _lit_mut_cast[ struct VariadicListMem[ elt_is_mutable: Bool, //, element_type: AnyType, - origin: Origin[elt_is_mutable].type, + origin: Origin[elt_is_mutable]._mlir_type, ](Sized): """A utility class to access variadic function arguments of memory-only types that may have ownership. It exposes references to the elements in a @@ -483,7 +485,7 @@ alias _AnyTypeMetaType = __mlir_type[`!lit.anytrait<`, AnyType, `>`] @register_passable struct VariadicPack[ elt_is_mutable: Bool, //, - origin: Origin[elt_is_mutable].type, + origin: Origin[elt_is_mutable]._mlir_type, element_trait: _AnyTypeMetaType, *element_types: element_trait, ](Sized): diff --git a/stdlib/src/builtin/reversed.mojo b/stdlib/src/builtin/reversed.mojo index 352f6d10b4..a1c984e81f 100644 --- a/stdlib/src/builtin/reversed.mojo +++ b/stdlib/src/builtin/reversed.mojo @@ -142,7 +142,7 @@ fn reversed[ K: KeyElement, V: CollectionElement, dict_mutability: Bool, - dict_origin: Origin[dict_mutability].type, + dict_origin: Origin[dict_mutability], ](ref value: _DictValueIter[K, V, dict_origin]) -> _DictValueIter[ K, V, dict_origin, False ]: @@ -169,7 +169,7 @@ fn reversed[ K: KeyElement, V: CollectionElement, dict_mutability: Bool, - dict_origin: Origin[dict_mutability].type, + dict_origin: Origin[dict_mutability], ](ref value: _DictEntryIter[K, V, dict_origin]) -> _DictEntryIter[ K, V, dict_origin, False ]: diff --git a/stdlib/src/builtin/type_aliases.mojo b/stdlib/src/builtin/type_aliases.mojo index 7c7c6ff25b..4139618270 100644 --- a/stdlib/src/builtin/type_aliases.mojo +++ b/stdlib/src/builtin/type_aliases.mojo @@ -51,7 +51,7 @@ struct Origin[is_mutable: Bool]: is_mutable: Whether the origin is mutable. """ - alias type = __mlir_type[ + alias _mlir_type = __mlir_type[ `!lit.origin<`, is_mutable.value, `>`, @@ -61,7 +61,7 @@ struct Origin[is_mutable: Bool]: # Fields # ===-------------------------------------------------------------------===# - var _mlir_origin: Self.type + var _mlir_origin: Self._mlir_type # ===-------------------------------------------------------------------===# # Life cycle methods @@ -73,7 +73,7 @@ struct Origin[is_mutable: Bool]: # Span[Byte, __origin_of(self)] @implicit @always_inline("nodebug") - fn __init__(out self, mlir_origin: Self.type): + fn __init__(out self, mlir_origin: Self._mlir_type): """Initialize an Origin from a raw MLIR `!lit.origin` value. Args: diff --git a/stdlib/src/collections/dict.mojo b/stdlib/src/collections/dict.mojo index d35229a17e..99aa18c45f 100644 --- a/stdlib/src/collections/dict.mojo +++ b/stdlib/src/collections/dict.mojo @@ -61,7 +61,7 @@ struct _DictEntryIter[ dict_mutability: Bool, //, K: KeyElement, V: CollectionElement, - dict_origin: Origin[dict_mutability].type, + dict_origin: Origin[dict_mutability], forward: Bool = True, ]: """Iterator over immutable DictEntry references. @@ -120,7 +120,7 @@ struct _DictKeyIter[ dict_mutability: Bool, //, K: KeyElement, V: CollectionElement, - dict_origin: Origin[dict_mutability].type, + dict_origin: Origin[dict_mutability], forward: Bool = True, ]: """Iterator over immutable Dict key references. @@ -158,7 +158,7 @@ struct _DictValueIter[ dict_mutability: Bool, //, K: KeyElement, V: CollectionElement, - dict_origin: Origin[dict_mutability].type, + dict_origin: Origin[dict_mutability], forward: Bool = True, ]: """Iterator over Dict value references. These are mutable if the dict From 5d690ca5ae8bf436495b092a2736fd50786c5105 Mon Sep 17 00:00:00 2001 From: Jack Clayton Date: Tue, 3 Dec 2024 15:48:15 -1000 Subject: [PATCH 021/509] [stdlib] Align max_exponent with C/Python and clarify terms - Move back to setting the FPUtils.max_exponent() to return the max value disregarding `-inf` and `inf` bitpatterns. The actual max exponent is -1, but this is for consistency with pythons `sys.float_info.max_exp` and C++ constants such as FLT_MAX_EXP. `frexp` returns the real exponent + 1 and normalizes from [1..2] to [0.5..1] so these values align with that function that is shared between C/Python/Mojo, put clarification in the docstring. - Remove FPUtils.min_exponent(), this could mean various things i.e. `min_subnormal_exponent`, `min_normal_exponent`, does it follow `max_exponent` by adding 1 to align with `frexp`? This was only used in _format_float. - Put the correct exponent_bias in for the fnuz types. - Clarify some variable names to say what they actually are. MODULAR_ORIG_COMMIT_REV_ID: 1c72346acc7e5290dc5d76f4d6efa5e2a42faf1a --- stdlib/src/builtin/_format_float.mojo | 11 +++--- stdlib/src/math/math.mojo | 7 +++- stdlib/src/utils/numerics.mojo | 54 +++++++++++---------------- 3 files changed, 31 insertions(+), 41 deletions(-) diff --git a/stdlib/src/builtin/_format_float.mojo b/stdlib/src/builtin/_format_float.mojo index b46e9ce306..4c5fc6797e 100644 --- a/stdlib/src/builtin/_format_float.mojo +++ b/stdlib/src/builtin/_format_float.mojo @@ -71,9 +71,8 @@ struct FP[type: DType, CarrierDType: DType = FPUtils[type].uint_type]: alias carrier_bits = sizeof[Self.CarrierDType]() * 8 alias sig_bits = FPUtils[type].mantissa_width() alias exp_bits = FPUtils[type].exponent_width() - alias min_exponent = FPUtils[type].min_exponent() - alias max_exponent = FPUtils[type].max_exponent() - alias exp_bias = -Self.max_exponent + alias neg_exp_bias = -FPUtils[type].exponent_bias() + alias min_normal_exp = Self.neg_exp_bias + 1 alias cache_bits = 64 if Self.CarrierDType == DType.uint32 else 128 alias min_k = -31 if Self.CarrierDType == DType.uint32 else -292 alias max_k = 46 if Self.CarrierDType == DType.uint32 else 326 @@ -129,7 +128,7 @@ fn _write_float[W: Writer, type: DType, //](mut writer: W, value: Scalar[type]): # - The significand (sig) is the raw binary fraction # - The exponent (exp) is still in biased form var sig = FPUtils.get_mantissa_uint(casted) - var exp = FPUtils.get_exponent_without_bias(casted) + var exp = FPUtils.get_exponent_biased(casted) var sign = FPUtils.get_sign(casted) if isinf(value): @@ -235,7 +234,7 @@ fn _to_decimal[ # For normal numbers if binary_exp != 0: - binary_exp += FP[type].exp_bias - FP[type].sig_bits + binary_exp += FP[type].neg_exp_bias - FP[type].sig_bits if two_fc == 0: var minus_k = (binary_exp * 631305 - 261663) >> 21 var beta = binary_exp + _floor_log2_pow10(-minus_k) @@ -293,7 +292,7 @@ fn _to_decimal[ two_fc |= Scalar[CarrierDType](1) << (FP[type].sig_bits + 1) else: # For subnormal numbers - binary_exp = FP[type].min_exponent - FP[type].sig_bits + binary_exp = FP[type].min_normal_exp - FP[type].sig_bits ########################################## # Step 1: Schubfach multiplier calculation diff --git a/stdlib/src/math/math.mojo b/stdlib/src/math/math.mojo index 2c7ee78a5d..7b998c7220 100644 --- a/stdlib/src/math/math.mojo +++ b/stdlib/src/math/math.mojo @@ -645,6 +645,8 @@ fn frexp[ type: DType, simd_width: Int, // ](x: SIMD[type, simd_width]) -> StaticTuple[SIMD[type, simd_width], 2]: """Breaks floating point values into a fractional part and an exponent part. + This follows C and Python in increasing the exponent by 1 and normalizing the + fraction from 0.5 to 1.0 instead of 1.0 to 2.0. Constraints: The input must be a floating-point type. @@ -664,14 +666,15 @@ fn frexp[ constrained[type.is_floating_point(), "must be a floating point value"]() alias T = SIMD[type, simd_width] alias zero = T(0) - alias max_exponent = FPUtils[type].max_exponent() - 1 + # Add one to the resulting exponent up by subtracting 1 from the bias + alias exponent_bias = FPUtils[type].exponent_bias() - 1 alias mantissa_width = FPUtils[type].mantissa_width() var mask1 = _frexp_mask1[simd_width, type]() var mask2 = _frexp_mask2[simd_width, type]() var x_int = x.to_bits() var selector = x != zero var exp = selector.select( - (((mask1 & x_int) >> mantissa_width) - max_exponent).cast[type](), + (((mask1 & x_int) >> mantissa_width) - exponent_bias).cast[type](), zero, ) var frac = selector.select(T(from_bits=x_int & ~mask1 | mask2), zero) diff --git a/stdlib/src/utils/numerics.mojo b/stdlib/src/utils/numerics.mojo index f7d99244fe..e1ec498345 100644 --- a/stdlib/src/utils/numerics.mojo +++ b/stdlib/src/utils/numerics.mojo @@ -84,41 +84,25 @@ struct FPUtils[ @staticmethod @always_inline("nodebug") fn max_exponent() -> IntLiteral: - """Returns the max exponent of a floating point type, taking into - account special reserved cases such infinity and nan. + """Returns the max exponent of a floating point type without accounting + for inf representations. This is not + the maximum representable exponent, which is generally equal to + the exponent_bias. Returns: The max exponent. """ @parameter - if type is DType.float8e4m3: - return 7 - elif type is DType.float8e4m3fnuz: + if type in (DType.float8e4m3, DType.float8e4m3fnuz): return 8 - elif type is DType.float8e5m2: - return 15 - elif type is DType.float8e5m2fnuz: + elif type in (DType.float8e5m2, DType.float8e5m2fnuz, DType.float16): return 16 - elif type is DType.float16: - return 15 - elif type is DType.float32 or type is DType.bfloat16: - return 127 + elif type in (DType.bfloat16, DType.float32): + return 128 else: constrained[type is DType.float64, "unsupported float type"]() - return 1023 - - @staticmethod - @always_inline("nodebug") - fn min_exponent() -> IntLiteral: - """Returns the min exponent of a floating point type, taking into - account special reserved cases such as infinity and nan. - - Returns: - The min exponent. - """ - - return -Self.max_exponent() + 1 + return 1024 @staticmethod @always_inline("nodebug") @@ -132,11 +116,9 @@ struct FPUtils[ @parameter if type in (DType.float8e4m3, DType.float8e4m3fnuz): return 4 - elif type in (DType.float8e5m2, DType.float8e5m2fnuz): + elif type in (DType.float8e5m2, DType.float8e5m2fnuz, DType.float16): return 5 - elif type is DType.float16: - return 5 - elif type is DType.float32 or type is DType.bfloat16: + elif type in (DType.float32, DType.bfloat16): return 8 else: constrained[type is DType.float64, "unsupported float type"]() @@ -160,7 +142,12 @@ struct FPUtils[ Returns: The exponent bias. """ - return Self.max_exponent() + + @parameter + if type in (DType.float8e4m3fnuz, DType.float8e5m2fnuz): + return Self.max_exponent() + else: + return Self.max_exponent() - 1 @staticmethod @always_inline @@ -306,14 +293,15 @@ struct FPUtils[ @staticmethod @always_inline - fn get_exponent_without_bias(value: Scalar[type]) -> Int: - """Returns the exponent bits of the floating-point value. + fn get_exponent_biased(value: Scalar[type]) -> Int: + """Returns the biased exponent of the floating-point value as an Int, + this is how the value is stored before subtracting the exponent bias. Args: value: The floating-point value. Returns: - Returns the exponent bits. + The biased exponent as an Int. """ return int( Self.bitcast_to_uint(value) >> Self.mantissa_width() From 6f26bd84abc73a293d0f86221befde07e615e85c Mon Sep 17 00:00:00 2001 From: Jack Clayton Date: Tue, 3 Dec 2024 18:39:38 -1000 Subject: [PATCH 022/509] [stdlib] Clarify the differences for the float8 types These types have confusing differences, clarify the naming and exactly how they're different in the doc strings. MODULAR_ORIG_COMMIT_REV_ID: 80525ac525b1538664a33ae6d053addc0f95fcac --- stdlib/src/builtin/dtype.mojo | 58 ++++++++++++++++++++++++++++++----- stdlib/src/builtin/simd.mojo | 58 ++++++++++++++++++++++++++++++----- 2 files changed, 100 insertions(+), 16 deletions(-) diff --git a/stdlib/src/builtin/dtype.mojo b/stdlib/src/builtin/dtype.mojo index 4ac807acd6..1ed5dd09c6 100644 --- a/stdlib/src/builtin/dtype.mojo +++ b/stdlib/src/builtin/dtype.mojo @@ -66,23 +66,65 @@ struct DType( alias float8e5m2 = DType( __mlir_attr.`#kgen.dtype.constant : !kgen.dtype` ) - """Represents a FP8E5M2 floating point format whose bitwidth is 8.""" + """Represents a FP8E5M2 floating point format from the [OFP8 + standard](https://www.opencompute.org/documents/ocp-8-bit-floating-point-specification-ofp8-revision-1-0-2023-12-01-pdf-1). + + The 8 bits are encoded as `seeeeemm`: + - (s)ign: 1 bit + - (e)xponent: 5 bits + - (m)antissa: 2 bits + - exponent bias: 15 + - nan: {0,1}11111{01,10,11} + - inf: 01111100 + - -inf: 11111100 + - -0: 10000000 + """ alias float8e5m2fnuz = DType( __mlir_attr.`#kgen.dtype.constant : !kgen.dtype` ) - """Represents a FP8E5M2FNUZ floating point format for AMD GPU whose bitwdith is 8. - This dtype only supports finite and NaN values. NaN is when sign bit is - set and all other exponent and mantissa bits are 0.""" + """Represents a FP8E5M2FNUZ floating point format. + + The 8 bits are encoded as `seeeeemm`: + - (s)ign: 1 bit + - (e)xponent: 5 bits + - (m)antissa: 2 bits + - exponent bias: 16 + - nan: 10000000 + - fn: finite (no inf or -inf encodings) + - uz: unsigned zero (no -0 encoding) + """ alias float8e4m3 = DType( __mlir_attr.`#kgen.dtype.constant : !kgen.dtype` ) - """Represents a FP8E4M3 floating point format whose bitwidth is 8.""" + """Represents a FP8E4M3 floating point format from the [OFP8 + standard](https://www.opencompute.org/documents/ocp-8-bit-floating-point-specification-ofp8-revision-1-0-2023-12-01-pdf-1). + + This type is named `float8_e4m3fn` (the "fn" stands for "finite") in some + frameworks, as it does not encode -inf or inf. + + The 8 bits are encoded as `seeeemmm`: + - (s)ign: 1 bit + - (e)xponent: 4 bits + - (m)antissa: 3 bits + - exponent bias: 7 + - nan: 01111111, 11111111 + - -0: 10000000 + - fn: finite (no inf or -inf encodings) + """ alias float8e4m3fnuz = DType( __mlir_attr.`#kgen.dtype.constant : !kgen.dtype` ) - """Represents a FP8E4M3FNUZ floating point format for AMD GPU whose bitwdith is 8. - This dtype only supports finite and NaN values. NaN is when sign bit is - set and all other exponent and mantissa bits are 0.""" + """Represents a FP8E4M3FNUZ floating point format. + + The 8 bits are encoded as `seeeemmm`: + - (s)ign: 1 bit + - (e)xponent: 4 bits + - (m)antissa: 3 bits + - exponent bias: 8 + - nan: 10000000 + - fn: finite (no inf or -inf encodings) + - uz: unsigned zero (no -0 encoding) + """ alias bfloat16 = DType( __mlir_attr.`#kgen.dtype.constant : !kgen.dtype` ) diff --git a/stdlib/src/builtin/simd.mojo b/stdlib/src/builtin/simd.mojo index bacee6e4bf..350eda13d0 100644 --- a/stdlib/src/builtin/simd.mojo +++ b/stdlib/src/builtin/simd.mojo @@ -94,17 +94,59 @@ alias UInt64 = Scalar[DType.uint64] """Represents a 64-bit unsigned scalar integer.""" alias Float8e5m2 = Scalar[DType.float8e5m2] -"""Represents a FP8E5M2 floating point format whose bitwidth is 8.""" +"""Represents a FP8E5M2 floating point format from the [OFP8 +standard](https://www.opencompute.org/documents/ocp-8-bit-floating-point-specification-ofp8-revision-1-0-2023-12-01-pdf-1). + +The 8 bits are encoded as `seeeeemm`: +- (s)ign: 1 bit +- (e)xponent: 5 bits +- (m)antissa: 2 bits +- exponent bias: 15 +- nan: {0,1}11111{01,10,11} +- inf: 01111100 +- -inf: 11111100 +- -0: 10000000 +""" alias Float8e5m2fnuz = Scalar[DType.float8e5m2fnuz] -"""Represents a FP8E5M2FNUZ floating point format for AMD GPU whose bitwdith is 8. - This dtype only supports finite and NaN values. NaN is when sign bit is set and - all other exponent and mantissa bits are 0.""" +"""Represents a FP8E5M2FNUZ floating point format. + +The 8 bits are encoded as `seeeeemm`: +- (s)ign: 1 bit +- (e)xponent: 5 bits +- (m)antissa: 2 bits +- exponent bias: 16 +- nan: 10000000 +- fn: finite (no inf or -inf encodings) +- uz: unsigned zero (no -0 encoding) +""" alias Float8e4m3 = Scalar[DType.float8e4m3] -"""Represents a FP8E4M3 floating point format whose bitwidth is 8.""" +"""Represents a FP8E4M3 floating point format from the [OFP8 +standard](https://www.opencompute.org/documents/ocp-8-bit-floating-point-specification-ofp8-revision-1-0-2023-12-01-pdf-1). + +This type is named `float8_e4m3fn` (the "fn" stands for "finite") in some +frameworks, as it does not encode -inf or inf. + +The 8 bits are encoded as `seeeemmm`: +- (s)ign: 1 bit +- (e)xponent: 4 bits +- (m)antissa: 3 bits +- exponent bias: 7 +- nan: 01111111, 11111111 +- -0: 10000000 +- fn: finite (no inf or -inf encodings) +""" alias Float8e4m3fnuz = Scalar[DType.float8e4m3fnuz] -"""Represents a FP8E4M3FNUZ floating point format for AMD GPU whose bitwdith is 8. - This dtype only supports finite and NaN values. NaN is when sign bit is set and - all other exponent and mantissa bits are 0.""" +"""Represents a FP8E4M3FNUZ floating point format. + +The 8 bits are encoded as `seeeemmm`: +- (s)ign: 1 bit +- (e)xponent: 4 bits +- (m)antissa: 3 bits +- exponent bias: 8 +- nan: 10000000 +- fn: finite (no inf or -inf encodings) +- uz: unsigned zero (no -0 encoding) +""" alias BFloat16 = Scalar[DType.bfloat16] """Represents a 16-bit brain floating point value.""" alias Float16 = Scalar[DType.float16] From 43a2506183a91ef657faeeb0b1273af255d55032 Mon Sep 17 00:00:00 2001 From: Gustas <37534529+PunkPun@users.noreply.github.com> Date: Tue, 3 Dec 2024 21:00:08 -0800 Subject: [PATCH 023/509] [External] [Docs] Update the notebook tutorial (#52029) [External] [Docs] Update the notebook tutorial And add more clarification to end users not familiar with conda .yml files #3803 --------- Co-authored-by: Gustas <37534529+PunkPun@users.noreply.github.com> Co-authored-by: Arthur Evans Closes modularml/mojo#3834 MODULAR_ORIG_COMMIT_REV_ID: db24078163bb662924f5bf0ae744c1c41cd008c0 --- examples/notebooks/README.md | 33 +++++++++++++++++++++++++++++---- 1 file changed, 29 insertions(+), 4 deletions(-) diff --git a/examples/notebooks/README.md b/examples/notebooks/README.md index 4ee3854595..d94bb7bf4b 100644 --- a/examples/notebooks/README.md +++ b/examples/notebooks/README.md @@ -4,9 +4,7 @@ Mojo supports programming in [Jupyter notebooks](https://jupyter.org/), just like Python. This page explains how to get started with Mojo notebooks, and this repo -directory contains notebooks that demonstrate some of Mojo's features -(most of which we originally published on the [Mojo -Playground](https://playground.modular.com/)). +directory contains notebooks that demonstrate some of Mojo's features. If you're not familiar with Jupyter notebooks, they're files that allow you to create documents with live code, equations, visualizations, and explanatory @@ -67,6 +65,7 @@ If you have [`magic`](https://docs.modular.com/magic) you can run the following command to launch JupyterLab from this directory: ```sh +# Run from an active conda or magic shell environment magic run jupyter lab ``` @@ -74,7 +73,20 @@ After a moment, it will open a browser window with JupterLab running. #### Using conda -Create a Conda environment, activate that enviroment, and install JupyterLab. +Conda allows you to export environments in `.yml` format. (For more +information, see +[Managing environments](https://docs.conda.io/projects/conda/en/latest/user-guide/tasks/manage-environments.html) +in the Conda documentation.) + +If you already have a working Jupyter environment on a different computer and +server you can export it using the following command. + +```sh +# Example of exporting environment.yml from a conda environment named `your-env` +conda env export --name your_env > environment.yml +``` + +To create a Conda environment, activate that environment, and install JupyterLab. ``` sh # Create a Conda environment if you don't have one @@ -87,6 +99,19 @@ conda run -n mojo-repo jupyter lab After a moment, it will open a browser window with JupterLab running. +#### Using more magic + +Magic allows you to create an environment from a Conda `environment.yml`. + +```sh +# Create a magic environment if you don't have one +magic init mojo-repo --import environment.yml +# Activate the environment +cd mojo-repo && magic shell +# run JupyterLab +magic run jupyter lab +``` + ### 2. Run the .ipynb notebooks The left nav bar should show all the notebooks in this directory. From ec3dad7a2768396a509482d04c566f505be8deef Mon Sep 17 00:00:00 2001 From: modularbot Date: Wed, 4 Dec 2024 19:15:26 +0000 Subject: [PATCH 024/509] Update lockfiles to point to latest nightly version: 24.6.0.dev2024120416 --- examples/life/magic.lock | 1627 +++++++++++++------------- examples/magic.lock | 1403 ++++++++++++---------- examples/notebooks/magic.lock | 2079 ++++++++++++++++++--------------- examples/operators/magic.lock | 1403 ++++++++++++---------- magic.lock | 1424 +++++++++++----------- 5 files changed, 4220 insertions(+), 3716 deletions(-) diff --git a/examples/life/magic.lock b/examples/life/magic.lock index 9c78b39352..c962798beb 100644 --- a/examples/life/magic.lock +++ b/examples/life/magic.lock @@ -8,14 +8,13 @@ environments: linux-64: - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.9-py312h178313f_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/alsa-lib-1.2.13-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aom-3.9.1-hac33072_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/asgiref-3.8.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/attr-2.5.1-h166bdaf_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-hb88c0a9_10.conda @@ -26,10 +25,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.1-hab05fe4_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.2-hdeadb07_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h7bd072d_8.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.3-h3a84f74_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.4-h3a84f74_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.1-hf42f96a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-hf42f96a_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.6-hdec8b0f_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.6-h159bff8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.449-h5558e3c_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.10.0-h113e628_0.conda @@ -44,22 +43,22 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.0-hebfffa5_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.8.30-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py312h06ac9bb_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/dav1d-1.2.1-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/dbus-1.13.6-h5008d03_3.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda + - 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/linux-64/expat-2.6.4-h5888daf_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.5-pyhff2d567_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/filelock-3.16.1-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 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 @@ -77,20 +76,20 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/glog-0.7.1-hbabe93e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.13-h59595ed_1003.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-9.0.0-hda332d3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/httptools-0.6.4-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-7.0.2-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/jack-1.9.22-h7c63dc7_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 @@ -111,7 +110,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.1.0-hb9d3cd8_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libcap-2.69-h0f662aa_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcap-2.71-h39aace5_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-25_linux64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libcrc32c-1.1.2-h9c3ff4c_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.10.1-hbbe4b11_0.conda @@ -125,10 +124,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libflac-1.4.3-h59595ed_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h77fa898_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcrypt-1.11.0-ha770c72_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcrypt-devel-1.11.0-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcrypt-lib-1.11.0-hb9d3cd8_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcrypt-tools-1.11.0-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgettextpo-0.22.5-he02047a_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgettextpo-devel-0.22.5-he02047a_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_1.conda @@ -142,6 +138,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-hd590300_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-25_linux64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.3-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-devel-5.6.3-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libmad-0.15.1b-h0b41bf4_1001.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda @@ -158,7 +156,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hf672d98_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-hc0a3c3a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libsystemd0-256.7-h2774228_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsystemd0-256.9-h2774228_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libthrift-0.21.0-h0e7cc3e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-he137b08_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.8.0-hf23e847_1.conda @@ -171,18 +169,18 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.5-hb346dea_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.9.4-hcb278e6_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120306-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120306-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120306-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120306-release.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120306-release.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.dev2024120416-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120416-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120416-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120416-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.dev2024120416-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/multiprocess-0.70.15-py312h98912ed_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.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 - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.2-h488ebb8_0.conda @@ -191,25 +189,21 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.28.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-prometheus-1.12.0rc1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-0.49b2-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-asgi-0.49b2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-fastapi-0.49b2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh10f6f8f_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-util-http-0.49b2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/opusfile-0.12-h3358134_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/orc-2.0.3-he039a57_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.3-py312hf9745cd_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.44-hba22ea6_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-11.0.0-py312h7b63e92_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.43.2-h59595ed_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/portaudio-19.6.0-h7c63dc7_9.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/portmidi-2.0.4-h7c63dc7_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.0-py312h66e93f0_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/protobuf-5.28.2-py312h2ec8cdc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda @@ -217,19 +211,19 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-18.1.0-py312h7900ff3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-18.1.0-py312h01725c0_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.2-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.3-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.27.1-py312h12e396e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.6.1-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pygame-2.6.1-py312h4fcb14b_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyinstrument-5.0.0-py312h66e93f0_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.7-hc5c86c4_0_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python-xxhash-3.5.0-py312h66e93f0_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda @@ -248,10 +242,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/sdl2_mixer-2.6.3-h8830914_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/sdl2_ttf-2.22.0-h08b1b5d_2.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_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-ha2e4443_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.1.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyh7900ff3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/svt-av1-2.3.0-h5888daf_0.conda @@ -261,29 +255,31 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.46.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.14.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.14.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.14.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.0-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/uvloop-0.21.0-py312h66e93f0_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/watchfiles-1.0.0-py312h12e396e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/websockets-14.1-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.17.0-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libice-1.1.1-hb9d3cd8_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libsm-1.2.4-he73a12e_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libx11-1.8.10-h4f16b4b_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libx11-1.8.10-h4f16b4b_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.11-hb9d3cd8_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxext-1.3.6-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrender-0.9.11-hb9d3cd8_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-xorgproto-2024.1-hb9d3cd8_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xxhash-0.8.2-hd590300_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-5.2.6-h166bdaf_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-5.6.3-hbcc6ac9_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-gpl-tools-5.6.3-hbcc6ac9_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-tools-5.6.3-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.18.0-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda @@ -293,14 +289,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda linux-aarch64: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.9-py312hcc812fe_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/alsa-lib-1.2.13-h86ecc28_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aom-3.9.1-hcccb83c_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/asgiref-3.8.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/attr-2.5.1-h4e544f5_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-hac900a4_10.conda @@ -311,10 +306,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.1-hf4e072c_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.2-h10eb1bc_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h28a5e6a_8.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.3-h29aef15_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.4-h29aef15_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.1-h4c7db1d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h4c7db1d_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.6-h7939e66_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.6-hffbb33f_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.449-h7085e57_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-core-cpp-1.14.0-h1887c18_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-identity-cpp-1.10.0-h47b0b28_0.conda @@ -329,22 +324,22 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cairo-1.18.0-hdb1a16f_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.8.30-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cffi-1.17.1-py312hac81daf_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/dav1d-1.2.1-h31becfc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/dbus-1.13.6-h12b9eeb_3.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda + - 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/linux-aarch64/expat-2.6.4-h5ad3122_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.5-pyhff2d567_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/filelock-3.16.1-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 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 @@ -362,20 +357,20 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/glog-0.7.1-h468a4a4_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/graphite2-1.3.13-h2f0025b_1003.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/harfbuzz-9.0.0-hbf49d6b_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/httptools-0.6.4-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-7.0.2-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/jack-1.9.22-h5c6c0ed_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/keyutils-1.6.1-h4e544f5_0.tar.bz2 @@ -396,7 +391,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlicommon-1.1.0-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlidec-1.1.0-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlienc-1.1.0-h86ecc28_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcap-2.69-h883460d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcap-2.71-h51d75a7_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-25_linuxaarch64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcrc32c-1.1.2-h01db608_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcurl-8.10.1-h3ec0cbf_0.conda @@ -410,10 +405,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libflac-1.4.3-h2f0025b_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-14.2.0-he277a41_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-14.2.0-he9431aa_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcrypt-1.11.0-h8af1aa0_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcrypt-devel-1.11.0-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcrypt-lib-1.11.0-h86ecc28_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcrypt-tools-1.11.0-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgettextpo-0.22.5-h0a1ffab_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgettextpo-devel-0.22.5-h0a1ffab_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_1.conda @@ -427,6 +419,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libiconv-1.17-h31becfc_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libjpeg-turbo-3.0.0-h31becfc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-25_linuxaarch64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.3-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-devel-5.6.3-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libmad-0.15.1b-hb4cce97_1001.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnghttp2-1.64.0-hc8609a4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda @@ -443,7 +437,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libssh2-1.11.1-ha41c0db_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsystemd0-256.7-hd54d049_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsystemd0-256.9-hd54d049_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libthrift-0.21.0-h154c74f_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.0-hec21d91_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.9.0-h86ecc28_1.conda @@ -456,18 +450,18 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.5-hf4efe5d_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.9.4-hd600fc2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.2-py312h74ce7d3_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120306-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120306-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120306-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120306-release.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120306-release.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.dev2024120416-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120416-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120416-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120416-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.dev2024120416-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/multiprocess-0.70.15-py312hdd3e373_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.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 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openjpeg-2.5.2-h0d9d63b_0.conda @@ -476,25 +470,21 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.28.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-prometheus-1.12.0rc1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-0.49b2-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-asgi-0.49b2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-fastapi-0.49b2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh10f6f8f_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-util-http-0.49b2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/opusfile-0.12-hf55b2d5_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/orc-2.0.3-h90de224_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pandas-2.2.3-py312ha2895bd_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pcre2-10.44-h070dd5b_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pillow-11.0.0-py312h5ab5af3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pixman-0.43.4-h2f0025b_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/portaudio-19.6.0-h5c6c0ed_9.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/portmidi-2.0.4-h5c6c0ed_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.2.0-py312hb2c0f52_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/protobuf-5.28.2-py312h6f74592_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pthread-stubs-0.4-h86ecc28_1002.conda @@ -502,19 +492,19 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-18.1.0-py312h8025657_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-18.1.0-py312h66f7834_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.2-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.3-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pydantic-core-2.27.1-py312h8cbf658_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.6.1-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pygame-2.6.1-py312hb2c8110_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyinstrument-5.0.0-py312hb2c0f52_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.7-h5d932e8_0_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-xxhash-3.5.0-py312h52516f5_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.12-5_cp312.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda @@ -533,10 +523,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sdl2_mixer-2.6.3-h422cae6_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sdl2_ttf-2.22.0-h680d130_2.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_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-h1088aeb_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.1.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyh7900ff3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/svt-av1-2.3.0-h5ad3122_0.conda @@ -546,29 +536,31 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.46.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.14.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.14.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.14.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.0-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/uvloop-0.21.0-py312hb2c0f52_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/watchfiles-1.0.0-py312h8cbf658_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/websockets-14.1-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/wrapt-1.17.0-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libice-1.1.1-h57736b2_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libsm-1.2.4-hbac51e1_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libx11-1.8.9-he755bbd_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libx11-1.8.10-hca56bd8_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxau-1.0.11-h86ecc28_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxdmcp-1.1.5-h57736b2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxext-1.3.6-h57736b2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxrender-0.9.11-h57736b2_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-xorgproto-2024.1-h86ecc28_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xxhash-0.8.2-h31becfc_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-5.2.6-h9cdd2b7_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-5.6.3-h2dbfc1b_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-gpl-tools-5.6.3-h2dbfc1b_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-tools-5.6.3-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yaml-0.2.5-hf897c2e_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.18.0-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zeromq-4.3.5-h5efb499_7.conda @@ -577,13 +569,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstandard-0.23.0-py312hb698573_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.6-h02f22dd_0.conda osx-arm64: - - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.9-py312h998013c_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aom-3.9.1-h7bae524_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/asgiref-3.8.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-h9b725a8_10.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.0-h5d7ee29_2.conda @@ -593,10 +584,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.1-hf483d09_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.2-h39f8ad8_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h68a0d7e_8.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.3-h840aca7_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.4-h840aca7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.1-h5d7ee29_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-h5d7ee29_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.6-ha226bf8_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.6-h8474b10_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.449-h3b64406_4.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.14.0-hd50102c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.10.0-hc602bab_0.conda @@ -611,20 +602,20 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cairo-1.18.0-hb4a6bf7_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.8.30-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.1-py312h0fad829_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/dav1d-1.2.1-hb547adb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda + - 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.5-pyhff2d567_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/filelock-3.16.1-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 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 @@ -642,19 +633,19 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/glog-0.7.1-heb240a5_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/graphite2-1.3.13-hebf3989_1003.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/harfbuzz-9.0.0-h997cde5_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/httptools-0.6.4-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-7.0.2-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda @@ -676,7 +667,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-25_osxarm64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcrc32c-1.1.2-hbdafb3b_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.10.1-h13a7ad3_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.4-ha82da77_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.5-ha82da77_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.22-hd74edd7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20191231-hc8eb9b7_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libev-4.33-h93a5062_2.conda @@ -697,6 +688,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libintl-devel-0.22.5-h8414b35_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.0.0-hb547adb_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-25_osxarm64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.3-h39f12f2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-devel-5.6.3-h39f12f2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libmad-0.15.1b-h1a8c8d9_1001.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.64.0-h6d7220d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libogg-1.3.5-h99b78c6_0.conda @@ -721,18 +714,18 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.4-hdb05f8b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.9.4-hb7217d7_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312ha0ccf2a_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120306-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120306-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120306-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120306-release.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120306-release.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.dev2024120416-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120416-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120416-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120416-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.dev2024120416-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 - - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h7bae524_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openjpeg-2.5.2-h9f1df11_0.conda @@ -741,44 +734,40 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.28.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-prometheus-1.12.0rc1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-0.49b2-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-asgi-0.49b2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-fastapi-0.49b2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh10f6f8f_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-util-http-0.49b2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/opusfile-0.12-h5643135_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/orc-2.0.3-h121fd32_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.3-py312hcd31e36_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pcre2-10.44-h297a79d_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-11.0.0-py312haf37ca6_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pixman-0.43.4-hebf3989_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/portaudio-19.6.0-h13dd4ca_9.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/portmidi-2.0.4-h13dd4ca_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.0-py312h024a12e_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/protobuf-5.28.2-py312hf02c72a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pthread-stubs-0.4-hd74edd7_1002.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-18.1.0-py312h1f38498_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-18.1.0-py312hc40f475_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.2-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.3-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.27.1-py312hcd83bfe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.6.1-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pygame-2.6.1-py312hb14fe3b_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyinstrument-5.0.0-py312h0bf5046_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.7-h739c21a_0_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-xxhash-3.5.0-py312h024a12e_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-5_cp312.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda @@ -796,10 +785,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sdl2_mixer-2.6.3-h4fe3bdc_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sdl2_ttf-2.22.0-hda0f12e_2.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_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-hd02b534_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.1.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyh7900ff3_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/svt-av1-2.3.0-hf24288c_0.conda @@ -809,15 +798,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.46.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.14.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.14.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.14.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.0-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/uvloop-0.21.0-py312h0bf5046_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/watchfiles-1.0.0-py312hcd83bfe_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/websockets-14.1-py312hea69d52_0.conda @@ -825,7 +814,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxau-1.0.11-hd74edd7_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxdmcp-1.1.5-hd74edd7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xxhash-0.8.2-hb547adb_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xz-5.2.6-h57fd34a_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xz-5.6.3-h9a6d368_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xz-gpl-tools-5.6.3-h9a6d368_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xz-tools-5.6.3-h39f12f2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.18.0-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda @@ -883,18 +874,18 @@ packages: - kind: conda name: aiohappyeyeballs version: 2.4.4 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_0.conda - sha256: 4282838f468f75f0c1746cbc6cdd3365b9f6d449bf5af8a74b234e396d847bf0 - md5: 8d6f8a679aa0272ba8d6092ce4824870 + url: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_1.conda + sha256: 95d4713e49ea92ae50cf42393683ede706b7875af5f7cb14c253438180afa732 + md5: 296b403617bafa89df4971567af79013 depends: - python >=3.9 license: PSF-2.0 - license_family: PSF - size: 19310 - timestamp: 1733135584059 + size: 19351 + timestamp: 1733332029649 - kind: conda name: aiohttp version: 3.11.9 @@ -970,19 +961,19 @@ packages: - kind: conda name: aiosignal version: 1.3.1 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_0.tar.bz2 - sha256: 575c742e14c86575986dc867463582a970463da50b77264cdf54df74f5563783 - md5: d1e1eb7e21a9e2c74279d87dafb68156 + url: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_1.conda + sha256: 9c7b639ea0cc796ef46c57fa104ec1f2ed53cd11c063518869a5a9d7d3b0b2db + md5: d736bd1b8904d7593dce4893e58a7881 depends: - frozenlist >=1.1.0 - - python >=3.7 + - python >=3.9 license: Apache-2.0 - license_family: APACHE - size: 12730 - timestamp: 1667935912504 + size: 13157 + timestamp: 1733332198143 - kind: conda name: alsa-lib version: 1.2.13 @@ -1015,19 +1006,20 @@ packages: - kind: conda name: annotated-types version: 0.7.0 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_0.conda - sha256: 668f0825b6c18e4012ca24a0070562b6ec801ebc7008228a428eb52b4038873f - md5: 7e9f4612544c8edbfd6afad17f1bd045 + url: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda + sha256: e0ea1ba78fbb64f17062601edda82097fcf815012cf52bb704150a2668110d48 + md5: 2934f256a8acfe48f6ebb4fce6cde29c depends: - - python >=3.7 + - python >=3.9 - typing-extensions >=4.0.0 license: MIT license_family: MIT - size: 18235 - timestamp: 1716290348421 + size: 18074 + timestamp: 1733247158254 - kind: conda name: anyio version: 4.6.2.post1 @@ -1095,23 +1087,6 @@ packages: license_family: BSD size: 3250813 timestamp: 1718551360260 -- kind: conda - name: asgiref - version: 3.8.1 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/asgiref-3.8.1-pyhd8ed1ab_1.conda - sha256: c8d51a32f3530e3ca176d8f7bf5621c68c7c1c03fe9cc5c3c49d8ba4a1248f43 - md5: 21187c8276f87b6aedfe63c267a6eed7 - depends: - - python >=3.9 - - typing_extensions >=4 - license: BSD-3-Clause - license_family: BSD - size: 26436 - timestamp: 1733215704904 - kind: conda name: attr version: 2.5.1 @@ -1589,12 +1564,12 @@ packages: timestamp: 1731734668760 - kind: conda name: aws-c-s3 - version: 0.7.3 + version: 0.7.4 build: h29aef15_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.3-h29aef15_0.conda - sha256: 57aa8b28890efd82c479e902125ea8a37782b163f13ae0856b259ec527a52879 - md5: e09cd76e50ce09ec14c17109da5c6502 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.4-h29aef15_0.conda + sha256: 396517aca6bdbe2e3d8a6275b33865eeb0d09f0dd379c3cc55c36f6004b17f2a + md5: 1046cf15a47f06a0af07f674e477d807 depends: - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.0,<0.8.1.0a0 @@ -1606,16 +1581,16 @@ packages: - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 117467 - timestamp: 1733098782199 + size: 117398 + timestamp: 1733299233564 - kind: conda name: aws-c-s3 - version: 0.7.3 + version: 0.7.4 build: h3a84f74_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.3-h3a84f74_0.conda - sha256: db17a15e5e01f19700bf9be961e1c4e002ccf8dc4d9caa3a24a0ab54f00f2c2d - md5: 171850b890600458ae6c990e78f1fa23 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.4-h3a84f74_0.conda + sha256: 91c6f7aa3dd230bcefe2654469b0704c2bdb2574e6d0d7c56cf9e9071f44cc26 + md5: 7d029b9aa9decf4c0fb8a9a8940c9906 depends: - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 @@ -1628,16 +1603,16 @@ packages: - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 113536 - timestamp: 1733098705479 + size: 113660 + timestamp: 1733299194447 - kind: conda name: aws-c-s3 - version: 0.7.3 + version: 0.7.4 build: h840aca7_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.3-h840aca7_0.conda - sha256: 18972a91f32f6b0edb58eb71cb2f5b56654183fd6ba611b3b0d6cc484017aeff - md5: 893e668d99fa4b31eef9dc5b19c21b9a + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.4-h840aca7_0.conda + sha256: 564bbb781c1aebfcdda43a0e82f447e34de1764c57ebc1733fe6437248f5b7c9 + md5: 02f78a084e101dee30c794f963549de4 depends: - __osx >=11.0 - aws-c-auth >=0.8.0,<0.8.1.0a0 @@ -1648,8 +1623,8 @@ packages: - aws-checksums >=0.2.2,<0.2.3.0a0 license: Apache-2.0 license_family: Apache - size: 97145 - timestamp: 1733098874599 + size: 97136 + timestamp: 1733299356527 - kind: conda name: aws-c-sdkutils version: 0.2.1 @@ -1751,13 +1726,14 @@ packages: - kind: conda name: aws-crt-cpp version: 0.29.6 - build: h7939e66_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.6-h7939e66_1.conda - sha256: 3d0b1996d28a2647ced83ed8052ee331df70b2c1a68fb6db0fe4e743a88be54d - md5: 5e573a52a1cd20f81d7fdf1db4f4583a + build: h159bff8_2 + build_number: 2 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.6-h159bff8_2.conda + sha256: 04ca62caa764bb95f304af8486c1af7c4f76d4ad5204c494edcf86af653d2ad0 + md5: c498e6490834aacf7835c96403862881 depends: + - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.0,<0.8.1.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 @@ -1765,23 +1741,23 @@ packages: - aws-c-http >=0.9.1,<0.9.2.0a0 - aws-c-io >=0.15.2,<0.15.3.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - - aws-c-s3 >=0.7.3,<0.7.4.0a0 + - aws-c-s3 >=0.7.4,<0.7.5.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 283670 - timestamp: 1733150929992 + size: 354822 + timestamp: 1733333950713 - kind: conda name: aws-crt-cpp version: 0.29.6 - build: ha226bf8_1 - build_number: 1 + build: h8474b10_2 + build_number: 2 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.6-ha226bf8_1.conda - sha256: f645e2a8015d8e71ed785c81a14a202ebce2f5dcca8982cd7ec5f8000f9be5c3 - md5: 81da0b5f65ab08e3919d6eadf08b5776 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.6-h8474b10_2.conda + sha256: 5ca9df9516583076ea40129e71b103efaca21ca02f40b59d69485823613cbfba + md5: 54c898f166bcfbe06c2b7ac36360f371 depends: - __osx >=11.0 - aws-c-auth >=0.8.0,<0.8.1.0a0 @@ -1791,24 +1767,23 @@ packages: - aws-c-http >=0.9.1,<0.9.2.0a0 - aws-c-io >=0.15.2,<0.15.3.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - - aws-c-s3 >=0.7.3,<0.7.4.0a0 + - aws-c-s3 >=0.7.4,<0.7.5.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - libcxx >=18 license: Apache-2.0 license_family: Apache - size: 236505 - timestamp: 1733151090562 + size: 235829 + timestamp: 1733334077172 - kind: conda name: aws-crt-cpp version: 0.29.6 - build: hdec8b0f_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.6-hdec8b0f_1.conda - sha256: cd09f1d5d854607ce7acafc76c74e864f296d296e60b54054a10f757ecc3d2dd - md5: 40647232fad98f92be8c6050a7e0c2bd + build: hffbb33f_2 + build_number: 2 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.6-hffbb33f_2.conda + sha256: 5f9490edaddde550cf05861626175b648da73c84bcde61ac2a6a1bf1a8fd6982 + md5: fb8be2af168b63e0b77076a1dc6baa85 depends: - - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.0,<0.8.1.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 @@ -1816,14 +1791,14 @@ packages: - aws-c-http >=0.9.1,<0.9.2.0a0 - aws-c-io >=0.15.2,<0.15.3.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - - aws-c-s3 >=0.7.3,<0.7.4.0a0 + - aws-c-s3 >=0.7.4,<0.7.5.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 354710 - timestamp: 1733150818238 + size: 284031 + timestamp: 1733333955728 - kind: conda name: aws-sdk-cpp version: 1.11.449 @@ -2530,49 +2505,52 @@ packages: - kind: conda name: charset-normalizer version: 3.4.0 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_0.conda - sha256: 1873ac45ea61f95750cb0b4e5e675d1c5b3def937e80c7eebb19297f76810be8 - md5: a374efa97290b8799046df7c5ca17164 + url: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_1.conda + sha256: 63022ee2c6a157a9f980250a66f54bdcdf5abee817348d0f9a74c2441a6fbf0e + md5: 6581a17bba6b948bb60130026404a9d6 depends: - - python >=3.7 + - python >=3.9 license: MIT license_family: MIT - size: 47314 - timestamp: 1728479405343 + size: 47533 + timestamp: 1733218182393 - kind: conda name: click version: 8.1.7 - build: unix_pyh707e725_0 + build: unix_pyh707e725_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_0.conda - sha256: f0016cbab6ac4138a429e28dbcb904a90305b34b3fe41a9b89d697c90401caec - md5: f3ad426304898027fc619827ff428eca + url: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_1.conda + sha256: 1cd5fc6ccdd5141378e51252a7a3810b07fd5a7e6934a5b4a7eccba66566224b + md5: cb8e52f28f5e592598190c562e7b5bf1 depends: - __unix - - python >=3.8 + - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 84437 - timestamp: 1692311973840 + size: 84513 + timestamp: 1733221925078 - kind: conda name: colorama version: 0.4.6 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 - sha256: 2c1b2e9755ce3102bca8d69e8f26e4f087ece73f50418186aee7c74bef8e1698 - md5: 3faab06a954c2a04039983f2c4a50d99 + url: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + sha256: ab29d57dc70786c1269633ba3dff20288b81664d3ff8d21af995742e2bb03287 + md5: 962b9857ee8e7018c22f2776ffa0b2d7 depends: - - python >=3.7 + - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 25170 - timestamp: 1666700778190 + size: 27011 + timestamp: 1733218222191 - kind: conda name: datasets version: 2.14.4 @@ -2710,58 +2688,61 @@ packages: - kind: conda name: dnspython version: 2.7.0 - build: pyhff2d567_0 + build: pyhff2d567_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_0.conda - sha256: 3e2ea1bfd90969e0e1f152bb1f969c56661278ad6bfaa3272027b1ff0d9a1a23 - md5: 0adf8f63d500d20418656289249533f9 + url: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda + sha256: 3ec40ccf63f2450c5e6c7dd579e42fc2e97caf0d8cd4ba24aa434e6fc264eda0 + md5: 5fbd60d61d21b4bd2f9d7a48fe100418 depends: - - python >=3.9.0,<4.0.0 + - python >=3.9,<4.0.0 - sniffio constrains: - - cryptography >=43 + - aioquic >=1.0.0 - wmi >=1.5.1 - - h2 >=4.1.0 + - httpx >=0.26.0 - trio >=0.23 + - cryptography >=43 - httpcore >=1.0.0 - - aioquic >=1.0.0 - - httpx >=0.26.0 - idna >=3.7 + - h2 >=4.1.0 license: ISC license_family: OTHER - size: 172740 - timestamp: 1728178868478 + size: 172172 + timestamp: 1733256829961 - kind: conda name: email-validator version: 2.2.0 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_0.conda - sha256: ea9e936ed7c49ea6d66fa3554afe31ba311f2a3d5e384d8c38925fda9e37bdb9 - md5: 3067adf57ee658ddf5bfad47b0041ce4 + url: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda + sha256: b91a19eb78edfc2dbb36de9a67f74ee2416f1b5273dd7327abe53f2dbf864736 + md5: da16dd3b0b71339060cd44cb7110ddf9 depends: - dnspython >=2.0.0 - idna >=2.0.0 - - python >=3.7 + - python >=3.9 license: Unlicense - size: 44157 - timestamp: 1718984716782 + size: 44401 + timestamp: 1733300827551 - kind: conda name: email_validator version: 2.2.0 - build: hd8ed1ab_0 + build: hd8ed1ab_1 + build_number: 1 subdir: noarch noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_0.conda - sha256: 2cbbbe9e0f3872214227c27b8b775dd2296a435c90ef50a7cc69934c329b6c65 - md5: 0214a004f7cf5ac28fc10a390dfc47ee + url: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_1.conda + sha256: e0d0fdf587aa0ed0ff08b2bce3ab355f46687b87b0775bfba01cc80a859ee6a2 + md5: 0794f8807ff2c6f020422cacb1bd7bfa depends: - email-validator >=2.2.0,<2.2.1.0a0 license: Unlicense - size: 6690 - timestamp: 1718984720419 + size: 6552 + timestamp: 1733300828176 - kind: conda name: exceptiongroup version: 1.2.2 @@ -2853,17 +2834,18 @@ packages: - kind: conda name: filelock version: 3.16.1 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_0.conda - sha256: 1da766da9dba05091af87977922fe60dc7464091a9ccffb3765d403189d39be4 - md5: 916f8ec5dd4128cd5f207a3c4c07b2c6 + url: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_1.conda + sha256: 18dca6e2194732df7ebf824abaefe999e4765ebe8e8a061269406ab88fc418b9 + md5: d692e9ba6f92dc51484bf3477e36ce7c depends: - - python >=3.7 + - python >=3.9 license: Unlicense - size: 17357 - timestamp: 1726613593584 + size: 17441 + timestamp: 1733240909987 - kind: conda name: fluidsynth version: 2.3.7 @@ -3462,36 +3444,38 @@ packages: - kind: conda name: h11 version: 0.14.0 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_0.tar.bz2 - sha256: 817d2c77d53afe3f3d9cf7f6eb8745cdd8ea76c7adaa9d7ced75c455a2c2c085 - md5: b21ed0883505ba1910994f1df031a428 + url: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda + sha256: 622516185a7c740d5c7f27016d0c15b45782c1501e5611deec63fd70344ce7c8 + md5: 7ee49e89531c0dcbba9466f6d115d585 depends: - - python >=3 + - python >=3.9 - typing_extensions license: MIT license_family: MIT - size: 48251 - timestamp: 1664132995560 + size: 51846 + timestamp: 1733327599467 - kind: conda name: h2 version: 4.1.0 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2 - sha256: bfc6a23849953647f4e255c782e74a0e18fe16f7e25c7bb0bc57b83bb6762c7a - md5: b748fbf7060927a6e82df7cb5ee8f097 + url: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_1.conda + sha256: 843ddad410c370672a8250470697027618f104153612439076d4d7b91eeb7b5c + md5: 825927dc7b0f287ef8d4d0011bb113b1 depends: - hpack >=4.0,<5 - hyperframe >=6.0,<7 - - python >=3.6.1 + - python >=3.9 license: MIT license_family: MIT - size: 46754 - timestamp: 1634280590080 + size: 52000 + timestamp: 1733298867359 - kind: conda name: harfbuzz version: 9.0.0 @@ -3559,18 +3543,19 @@ packages: - kind: conda name: hpack version: 4.0.0 - build: pyh9f0ad1d_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2 - sha256: 5dec948932c4f740674b1afb551223ada0c55103f4c7bf86a110454da3d27cb8 - md5: 914d6646c4dbb1fd3ff539830a12fd71 + url: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda + sha256: ec89b7e5b8aa2f0219f666084446e1fb7b54545861e9caa892acb24d125761b5 + md5: 2aa5ff7fa34a81b9196532c84c10d865 depends: - - python + - python >=3.9 license: MIT license_family: MIT - size: 25341 - timestamp: 1598856368685 + size: 29412 + timestamp: 1733299296857 - kind: conda name: httpcore version: 1.0.7 @@ -3688,18 +3673,19 @@ packages: - kind: conda name: hyperframe version: 6.0.1 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 - sha256: e374a9d0f53149328134a8d86f5d72bca4c6dcebed3c0ecfa968c02996289330 - md5: 9f765cbfab6870c8435b9eefecd7a1f4 + url: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda + sha256: e91c6ef09d076e1d9a02819cd00fa7ee18ecf30cdd667605c853980216584d1b + md5: 566e75c90c1d0c8c459eb0ad9833dc7a depends: - - python >=3.6 + - python >=3.9 license: MIT license_family: MIT - size: 14646 - timestamp: 1619110249723 + size: 17239 + timestamp: 1733298862681 - kind: conda name: icu version: '75.1' @@ -3818,19 +3804,20 @@ packages: - kind: conda name: jinja2 version: 3.1.4 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_0.conda - sha256: 27380d870d42d00350d2d52598cddaf02f9505fb24be09488da0c9b8d1428f2d - md5: 7b86ecb7d3557821c649b3c31e3eb9f2 + url: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_1.conda + sha256: 85a7169c078b8065bd9d121b0e7b99c8b88c42a411314b6ae5fcd81c48c4710a + md5: 08cce3151bde4ecad7885bd9fb647532 depends: - markupsafe >=2.0 - - python >=3.7 + - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 111565 - timestamp: 1715127275924 + size: 110963 + timestamp: 1733217424408 - kind: conda name: jupyter_client version: 8.6.3 @@ -4842,34 +4829,35 @@ packages: timestamp: 1725268003553 - kind: conda name: libcap - version: '2.69' - build: h0f662aa_0 + version: '2.71' + build: h39aace5_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libcap-2.69-h0f662aa_0.conda - sha256: 942f9564b4228609f017b6617425d29a74c43b8a030e12239fa4458e5cb6323c - md5: 25cb5999faa414e5ccb2c1388f62d3d5 + url: https://conda.anaconda.org/conda-forge/linux-64/libcap-2.71-h39aace5_0.conda + sha256: 2bbefac94f4ab8ff7c64dc843238b6c8edcc9ff1f2b5a0a48407a904dc7ccfb2 + md5: dd19e4e3043f6948bd7454b946ee0983 depends: + - __glibc >=2.17,<3.0.a0 - attr >=2.5.1,<2.6.0a0 - - libgcc-ng >=12 + - libgcc >=13 license: BSD-3-Clause license_family: BSD - size: 100582 - timestamp: 1684162447012 + size: 102268 + timestamp: 1729940917945 - kind: conda name: libcap - version: '2.69' - build: h883460d_0 + version: '2.71' + build: h51d75a7_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libcap-2.69-h883460d_0.conda - sha256: c0944a372d2d2d961cb86726fad17950219f10837bed281ac22127cb3889b06d - md5: fd395b538afc08d28c0db275a42c8078 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libcap-2.71-h51d75a7_0.conda + sha256: 2b66e66e6a0768e833e7edc764649679881ec0a6b37d9bf254b1ceb3b8b434ef + md5: 29f6092b6e938516ca0b042837e64fa5 depends: - attr >=2.5.1,<2.6.0a0 - - libgcc-ng >=12 + - libgcc >=13 license: BSD-3-Clause license_family: BSD - size: 103105 - timestamp: 1684162437148 + size: 106877 + timestamp: 1729940936697 - kind: conda name: libcblas version: 3.9.0 @@ -5034,18 +5022,18 @@ packages: timestamp: 1726659794676 - kind: conda name: libcxx - version: 19.1.4 + version: 19.1.5 build: ha82da77_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.4-ha82da77_0.conda - sha256: 342896ebc1d6acbf022ca6df006a936b9a472579e91e3c502cb1f52f218b78e9 - md5: a2d3d484d95889fccdd09498d8f6bf9a + url: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.5-ha82da77_0.conda + sha256: 7918cc0bb7a6554cdd3eee634c3dc414a1ab8ec49faeca1567367bb92118f9d7 + md5: 3c7be0df28ccda1d193ea6de56dcb5ff depends: - __osx >=11.0 license: Apache-2.0 WITH LLVM-exception license_family: Apache - size: 520678 - timestamp: 1732060258949 + size: 519819 + timestamp: 1733291654212 - kind: conda name: libdb version: 6.2.32 @@ -5468,69 +5456,6 @@ packages: license_family: GPL size: 54104 timestamp: 1729089444587 -- kind: conda - name: libgcrypt - version: 1.11.0 - build: h8af1aa0_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcrypt-1.11.0-h8af1aa0_2.conda - sha256: 21bfc7b12d374f613929f639c481bb7320470bc32210aaff0d7608c251777e90 - md5: 024bf127a7fd791500446d7a70296d00 - depends: - - libgcrypt-devel 1.11.0 h86ecc28_2 - - libgcrypt-lib 1.11.0 h86ecc28_2 - - libgcrypt-tools 1.11.0 h86ecc28_2 - license: LGPL-2.1-or-later AND GPL-2.0-or-later - size: 6233 - timestamp: 1732523338946 -- kind: conda - name: libgcrypt - version: 1.11.0 - build: ha770c72_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libgcrypt-1.11.0-ha770c72_2.conda - sha256: 2a6e2416db13816609541fd3fa680f1ff41dccb968ef22de2b0168e32e5902f2 - md5: 92aaf7c067a5e63ac7f035bbd8864415 - depends: - - libgcrypt-devel 1.11.0 hb9d3cd8_2 - - libgcrypt-lib 1.11.0 hb9d3cd8_2 - - libgcrypt-tools 1.11.0 hb9d3cd8_2 - license: LGPL-2.1-or-later AND GPL-2.0-or-later - size: 6177 - timestamp: 1732523212730 -- kind: conda - name: libgcrypt-devel - version: 1.11.0 - build: h86ecc28_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcrypt-devel-1.11.0-h86ecc28_2.conda - sha256: cee9c75b3b25b4fddc8fc62089285109d90a8ecc7198f1fce437051a224c0642 - md5: 2b22f46eedf64d42060359f4c9c635bf - depends: - - libgcc >=13 - - libgcrypt-lib 1.11.0 h86ecc28_2 - license: LGPL-2.1-or-later - size: 106573 - timestamp: 1732523326670 -- kind: conda - name: libgcrypt-devel - version: 1.11.0 - build: hb9d3cd8_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libgcrypt-devel-1.11.0-hb9d3cd8_2.conda - sha256: 5e066ca7a3dc6b44ecfee25b92a6941e38393f5ee82528b76ff299963f16c66a - md5: bf888b6a37286e9ae3749a114f878a6e - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libgcrypt-lib 1.11.0 hb9d3cd8_2 - license: LGPL-2.1-or-later - size: 106099 - timestamp: 1732523199857 - kind: conda name: libgcrypt-lib version: 1.11.0 @@ -5562,41 +5487,6 @@ packages: license: LGPL-2.1-or-later size: 586185 timestamp: 1732523190369 -- kind: conda - name: libgcrypt-tools - version: 1.11.0 - build: h86ecc28_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcrypt-tools-1.11.0-h86ecc28_2.conda - sha256: 4c9af6dade7b1216d5765fbe368b67963e88c60e05a56a43e3ebcae69cbc47f5 - md5: 9db2cfeedb9eff8f1ff1bae1cd014ba2 - depends: - - libgcc >=13 - - libgcrypt-lib 1.11.0 h86ecc28_2 - - libgpg-error >=1.51,<2.0a0 - license: GPL-2.0-or-later - license_family: GPL - size: 35981 - timestamp: 1732523336202 -- kind: conda - name: libgcrypt-tools - version: 1.11.0 - build: hb9d3cd8_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libgcrypt-tools-1.11.0-hb9d3cd8_2.conda - sha256: 6adba58f3f4eb3f2ba07d5f309748499989f71f55ba46acdf7f643f8da18ed9d - md5: 342389a8c9eef45fd8bb144b7522e28d - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libgcrypt-lib 1.11.0 hb9d3cd8_2 - - libgpg-error >=1.51,<2.0a0 - license: GPL-2.0-or-later - license_family: GPL - size: 33257 - timestamp: 1732523208992 - kind: conda name: libgettextpo version: 0.22.5 @@ -6300,6 +6190,89 @@ packages: license_family: BSD size: 15823 timestamp: 1729643275943 +- kind: conda + name: liblzma + version: 5.6.3 + build: h39f12f2_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.3-h39f12f2_0.conda + sha256: de00d627e41636591d05407c666de957a9ddd3c0f633340c016725695569b049 + md5: faa0ab222b9d12a52a8ebc655c9236f3 + depends: + - __osx >=11.0 + license: 0BSD + size: 98836 + timestamp: 1733321533638 +- kind: conda + name: liblzma + version: 5.6.3 + build: h86ecc28_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.3-h86ecc28_0.conda + sha256: 004785e427d255da8cf713b4722f8330bf496ce6fc665a0b21d007d377ffee5f + md5: 83d366f7bf01fc2d7781b4cc113fc9d3 + depends: + - libgcc >=13 + license: 0BSD + size: 124115 + timestamp: 1733323693681 +- kind: conda + name: liblzma + version: 5.6.3 + build: hb9d3cd8_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.3-hb9d3cd8_0.conda + sha256: 31637db828ec67ab8697de324e6074af5a36cbeddc37202d8d31e2fb397619e8 + md5: 137c535dddd880f844f33ed91b8abdba + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + license: 0BSD + size: 111223 + timestamp: 1733321312512 +- kind: conda + name: liblzma-devel + version: 5.6.3 + build: h39f12f2_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-devel-5.6.3-h39f12f2_0.conda + sha256: 2e5a9fb298bd8c01ceed8db386bfb0a125d74cef2c5ee615b4f9695b2808f7e0 + md5: 89955d2470cbacea3d5e069d67c94f44 + depends: + - __osx >=11.0 + - liblzma 5.6.3 h39f12f2_0 + license: 0BSD + size: 112941 + timestamp: 1733321552604 +- kind: conda + name: liblzma-devel + version: 5.6.3 + build: h86ecc28_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-devel-5.6.3-h86ecc28_0.conda + sha256: 740b3f1ffa57ad5f0eec0c868e23d4e1f811871c6685a04af57f1943cde1a575 + md5: 27995ae8bc93eeb949315655daa19d3c + depends: + - libgcc >=13 + - liblzma 5.6.3 h86ecc28_0 + license: 0BSD + size: 376767 + timestamp: 1733323860026 +- kind: conda + name: liblzma-devel + version: 5.6.3 + build: hb9d3cd8_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/liblzma-devel-5.6.3-hb9d3cd8_0.conda + sha256: 98020d4b4cc6c728d2e6dc1174cb2548cf03ce5098cd17c37b32f06e896a943a + md5: 7069f4de645461447f1ab7736c94db26 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - liblzma 5.6.3 hb9d3cd8_0 + license: 0BSD + size: 375452 + timestamp: 1733321322415 - kind: conda name: libmad version: 0.15.1b @@ -7053,43 +7026,41 @@ packages: timestamp: 1729089498541 - kind: conda name: libsystemd0 - version: '256.7' - build: h2774228_1 - build_number: 1 + version: '256.9' + build: h2774228_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libsystemd0-256.7-h2774228_1.conda - sha256: fa9cfbacaa2f14072b07ff9c832a8750627755346a1472f116a94aecea28f08e - md5: ad328c530a12a8798776e5f03942090f + url: https://conda.anaconda.org/conda-forge/linux-64/libsystemd0-256.9-h2774228_0.conda + sha256: a93e45c12c2954942a994ff3ffc8b9a144261288032da834ed80a6210708ad49 + md5: 7b283ff97a87409a884bc11283855c17 depends: - __glibc >=2.17,<3.0.a0 - - libcap >=2.69,<2.70.0a0 + - libcap >=2.71,<2.72.0a0 - libgcc >=13 - - libgcrypt >=1.11.0,<2.0a0 + - libgcrypt-lib >=1.11.0,<2.0a0 - lz4-c >=1.9.3,<1.10.0a0 - xz >=5.2.6,<6.0a0 - zstd >=1.5.6,<1.6.0a0 license: LGPL-2.1-or-later - size: 411535 - timestamp: 1729786797378 + size: 410424 + timestamp: 1733312416327 - kind: conda name: libsystemd0 - version: '256.7' - build: hd54d049_1 - build_number: 1 + version: '256.9' + build: hd54d049_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libsystemd0-256.7-hd54d049_1.conda - sha256: 6deceabf4a4109293aacba77a61a83d5bdef028b879b29d3b819937c80de8909 - md5: c44e82f6be3d65cf0589f1182e162ce8 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libsystemd0-256.9-hd54d049_0.conda + sha256: d04ea4fa1b3282029039ec28054f53b0c5b3ef044303450e5684e2a690e7aa52 + md5: 9ee06ecb3e342bf03e163af5080acd9f depends: - - libcap >=2.69,<2.70.0a0 + - libcap >=2.71,<2.72.0a0 - libgcc >=13 - - libgcrypt >=1.11.0,<2.0a0 + - libgcrypt-lib >=1.11.0,<2.0a0 - lz4-c >=1.9.3,<1.10.0a0 - xz >=5.2.6,<6.0a0 - zstd >=1.5.6,<1.6.0a0 license: LGPL-2.1-or-later - size: 430774 - timestamp: 1729786916983 + size: 430930 + timestamp: 1733311785480 - kind: conda name: libthrift version: 0.21.0 @@ -7672,27 +7643,29 @@ packages: - kind: conda name: markdown-it-py version: 3.0.0 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - sha256: c041b0eaf7a6af3344d5dd452815cdc148d6284fec25a4fa3f4263b3a021e962 - md5: 93a8e71256479c62074356ef6ebf501b + url: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_1.conda + sha256: 0fbacdfb31e55964152b24d5567e9a9996e1e7902fb08eb7d91b5fd6ce60803a + md5: fee3164ac23dfca50cfcc8b85ddefb81 depends: - mdurl >=0.1,<1 - - python >=3.8 + - python >=3.9 license: MIT license_family: MIT - size: 64356 - timestamp: 1686175179621 + size: 64430 + timestamp: 1733250550053 - kind: conda name: markupsafe version: 3.0.2 - build: py312h178313f_0 + build: py312h178313f_1 + build_number: 1 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_0.conda - sha256: 15f14ab429c846aacd47fada0dc4f341d64491e097782830f0906d00cb7b48b6 - md5: a755704ea0e2503f8c227d84829a8e81 + url: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_1.conda + sha256: 4a6bf68d2a2b669fecc9a4a009abd1cf8e72c2289522ff00d81b5a6e51ae78f5 + md5: eb227c3e0bf58f5bd69c0532b157975b depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -7702,16 +7675,17 @@ packages: - jinja2 >=3.0.0 license: BSD-3-Clause license_family: BSD - size: 24878 - timestamp: 1729351558563 + size: 24604 + timestamp: 1733219911494 - kind: conda name: markupsafe version: 3.0.2 - build: py312h74ce7d3_0 + build: py312h74ce7d3_1 + build_number: 1 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.2-py312h74ce7d3_0.conda - sha256: 997baf7f46bce112f6e0390efaa7fbb892b8f31567d3c554f08ac636774d74f7 - md5: 8992b90e8374193d53118f7651db0b73 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.2-py312h74ce7d3_1.conda + sha256: 1d500158262f30b9c23e37d1c861fe76e127a3926d69b3b38c25d20d3faa6f9f + md5: bc8607ab678073a0441808a31465f4fb depends: - libgcc >=13 - python >=3.12,<3.13.0a0 @@ -7720,16 +7694,17 @@ packages: - jinja2 >=3.0.0 license: BSD-3-Clause license_family: BSD - size: 25013 - timestamp: 1729352489213 + size: 25079 + timestamp: 1733220639175 - kind: conda name: markupsafe version: 3.0.2 - build: py312ha0ccf2a_0 + build: py312h998013c_1 + build_number: 1 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312ha0ccf2a_0.conda - sha256: 360e958055f35e5087942b9c499eaafae984a951b84cf354ef7481a2806f340d - md5: c6ff9f291d011c9d4f0b840f49435c64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312h998013c_1.conda + sha256: 4aa997b244014d3707eeef54ab0ee497d12c0d0d184018960cce096169758283 + md5: 46e547061080fddf9cf95a0327e8aba6 depends: - __osx >=11.0 - python >=3.12,<3.13.0a0 @@ -7739,80 +7714,80 @@ packages: - jinja2 >=3.0.0 license: BSD-3-Clause license_family: BSD - size: 24495 - timestamp: 1729351534830 + size: 24048 + timestamp: 1733219945697 - kind: conda name: max - version: 24.6.0.dev2024120306 + version: 24.6.0.dev2024120416 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120306-release.conda - sha256: 2aae2a8286dca29453e8cc8cfe13511aa016a521ac0c9201ceb24d1ba6c4138e - md5: 9c25081ace6ad2c13675cf0123109cb9 - depends: - - max-core ==24.6.0.dev2024120306 release - - max-python >=24.6.0.dev2024120306,<25.0a0 - - mojo-jupyter ==24.6.0.dev2024120306 release - - mblack ==24.6.0.dev2024120306 release + url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120416-release.conda + sha256: 956c006755158839ee6f8de7d91360cd1990024868d867482a62885241c9794f + md5: 09947b7aa3a3c35b413b7c0d118126e3 + depends: + - max-core ==24.6.0.dev2024120416 release + - max-python >=24.6.0.dev2024120416,<25.0a0 + - mojo-jupyter ==24.6.0.dev2024120416 release + - mblack ==24.6.0.dev2024120416 release license: LicenseRef-Modular-Proprietary - size: 9929 - timestamp: 1733209293577 + size: 9925 + timestamp: 1733332193356 - kind: conda name: max-core - version: 24.6.0.dev2024120306 + version: 24.6.0.dev2024120416 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120306-release.conda - sha256: a82534696c6e078fb4e14b4b0f058336ffd0a647f7404e85aaee18eec25be067 - md5: c249d77d8e5885dd0eacd9028131413f + url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120416-release.conda + sha256: e73a6e3abebc4516d56d39b85d10e98883885218273b2ef19c7cfe4d3df7a4ef + md5: 43a976936171480fe7dbc2fed1224312 depends: - - mblack ==24.6.0.dev2024120306 release + - mblack ==24.6.0.dev2024120416 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 254711372 - timestamp: 1733209193854 + size: 245904359 + timestamp: 1733332193354 - kind: conda name: max-core - version: 24.6.0.dev2024120306 + version: 24.6.0.dev2024120416 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120306-release.conda - sha256: bd0858a3e2069a86cd71370322e7ac26ad3948225e4f0811e4fbf8771d44d0ea - md5: e5b6ae7316dc2b08a52cee8f27b4f484 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120416-release.conda + sha256: e32ebc6b7f589881f14caec8df02b65c40839a0210ef6a87d85243b61b5fc7d8 + md5: 15cac805514c6a381a9a50ee3a86de25 depends: - - mblack ==24.6.0.dev2024120306 release + - mblack ==24.6.0.dev2024120416 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 258488596 - timestamp: 1733209293575 + size: 249618446 + timestamp: 1733332472125 - kind: conda name: max-core - version: 24.6.0.dev2024120306 + version: 24.6.0.dev2024120416 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120306-release.conda - sha256: 88b5f2cbb2724067d33b10515613ec845f134c3758fd063852ac191a276d7812 - md5: 05acbd2d9cf25aa913a979aa9802c194 + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120416-release.conda + sha256: bc27468be85cc7fd207ec44a4a0b1b11aa54792737a20fcf8355a2f2e7a215d5 + md5: c27c6f67be3abffbf559bfd50852b493 depends: - - mblack ==24.6.0.dev2024120306 release + - mblack ==24.6.0.dev2024120416 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 220248523 - timestamp: 1733209020078 + size: 210212276 + timestamp: 1733332258535 - kind: conda name: max-python - version: 24.6.0.dev2024120306 + version: 24.6.0.dev2024120416 build: 3.12release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120306-3.12release.conda - sha256: 78dc00af885799e8c1f92185a505aee022f2ffd7191d24fa94ef428457f53e15 - md5: 4bdce0c1dd562e22566551d578103d2f + url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120416-3.12release.conda + sha256: 48e30a62cdee247e87b9f07d465ae91c75d47f292eeba5d2ca9c2d86d30e8875 + md5: 78af7733b4858c1bd882279a45e98795 depends: - - max-core ==24.6.0.dev2024120306 release + - max-core ==24.6.0.dev2024120416 release - python 3.12.* - pillow - fastapi @@ -7822,7 +7797,6 @@ packages: - opentelemetry-api - opentelemetry-exporter-otlp-proto-http >=1.27.0 - opentelemetry-exporter-prometheus >=0.48b0 - - opentelemetry-instrumentation-fastapi - opentelemetry-sdk >=1.27.0 - pydantic-settings >=2.4.0,<3 - pydantic >=2.4.0,<3 @@ -7835,18 +7809,18 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 128537272 - timestamp: 1733209193862 + size: 122878721 + timestamp: 1733332193368 - kind: conda name: max-python - version: 24.6.0.dev2024120306 + version: 24.6.0.dev2024120416 build: 3.12release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120306-3.12release.conda - sha256: 3910ceb9135f2258df30dd7a5d87b8f80a284645d6da48daa0e9bb145a49744e - md5: e7d3ebeaaeb2bd99167fda861a7e7aba + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120416-3.12release.conda + sha256: ffff206620d5bd2cd90830467d4234e3a606143811006e67203899a9b8512938 + md5: 55ff43da6401cdd96073ae044b428afd depends: - - max-core ==24.6.0.dev2024120306 release + - max-core ==24.6.0.dev2024120416 release - python 3.12.* - pillow - fastapi @@ -7856,7 +7830,6 @@ packages: - opentelemetry-api - opentelemetry-exporter-otlp-proto-http >=1.27.0 - opentelemetry-exporter-prometheus >=0.48b0 - - opentelemetry-instrumentation-fastapi - opentelemetry-sdk >=1.27.0 - pydantic-settings >=2.4.0,<3 - pydantic >=2.4.0,<3 @@ -7869,18 +7842,18 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 132223349 - timestamp: 1733209293584 + size: 126526187 + timestamp: 1733332472138 - kind: conda name: max-python - version: 24.6.0.dev2024120306 + version: 24.6.0.dev2024120416 build: 3.12release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120306-3.12release.conda - sha256: ddafa4f7201fca06f38e8a0232cdbbb918d6a24c03cb25a0137d4fcc0ca9f354 - md5: 9859f8c88c81c18baaddd15be03d259c + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120416-3.12release.conda + sha256: e5aaaba32cd939f3c6ba27b916851174eec6c3913a8e5ebd00b5590f026a2e16 + md5: b84b205dbce4660cdea5b0e3cda227e9 depends: - - max-core ==24.6.0.dev2024120306 release + - max-core ==24.6.0.dev2024120416 release - python 3.12.* - pillow - fastapi @@ -7890,7 +7863,6 @@ packages: - opentelemetry-api - opentelemetry-exporter-otlp-proto-http >=1.27.0 - opentelemetry-exporter-prometheus >=0.48b0 - - opentelemetry-instrumentation-fastapi - opentelemetry-sdk >=1.27.0 - pydantic-settings >=2.4.0,<3 - pydantic >=2.4.0,<3 @@ -7903,17 +7875,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 119113363 - timestamp: 1733209020082 + size: 111629688 + timestamp: 1733332258538 - kind: conda name: mblack - version: 24.6.0.dev2024120306 + version: 24.6.0.dev2024120416 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120306-release.conda - sha256: 35b22caab89b65a52b9e7877762a58bba8cd21137ac1383e268b8a2ae45173ac - md5: f77eafd932de3ae309643ea716ba3c3a + url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120416-release.conda + sha256: 374f5d8dfed89bf7098a0f7d8c6fd40c9dab11c4d760a03e05835e82f1b00cb9 + md5: 85c700946ce4a5ce8d11f5ee66b477cf depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -7923,40 +7895,41 @@ packages: - platformdirs >=2 - python license: MIT - size: 130649 - timestamp: 1733209293580 + size: 130641 + timestamp: 1733332193362 - kind: conda name: mdurl version: 0.1.2 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - sha256: 64073dfb6bb429d52fff30891877b48c7ec0f89625b1bf844905b66a81cce6e1 - md5: 776a8dd9e824f77abac30e6ef43a8f7a + url: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda + sha256: 78c1bbe1723449c52b7a9df1af2ee5f005209f67e40b6e1d3c7619127c43b1c7 + md5: 592132998493b3ff25fd7479396e8351 depends: - - python >=3.6 + - python >=3.9 license: MIT license_family: MIT - size: 14680 - timestamp: 1704317789138 + size: 14465 + timestamp: 1733255681319 - kind: conda name: mojo-jupyter - version: 24.6.0.dev2024120306 + version: 24.6.0.dev2024120416 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120306-release.conda - sha256: dd1fcd4298ef08be4507931babe70d6b335dc28d5ead602460747edc4f10c2dc - md5: 8bb40dfabe84757d93d3053fdf4b0a58 + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120416-release.conda + sha256: 181250d3bbe6523e4ac02e40004b6e77c04cfee2d9512dbeb584f51351df9448 + md5: 411a1d159867c56043991824d1ee88d9 depends: - - max-core ==24.6.0.dev2024120306 release + - max-core ==24.6.0.dev2024120416 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22940 - timestamp: 1733209293581 + size: 22946 + timestamp: 1733332193363 - kind: conda name: mpg123 version: 1.32.9 @@ -8115,18 +8088,19 @@ packages: - kind: conda name: mypy_extensions version: 1.0.0 - build: pyha770c72_0 + build: pyha770c72_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda - sha256: f240217476e148e825420c6bc3a0c0efb08c0718b7042fae960400c02af858a3 - md5: 4eccaeba205f0aed9ac3a9ea58568ca3 + url: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda + sha256: 1895f47b7d68581a6facde5cb13ab8c2764c2e53a76bd746f8f98910dc4e08fe + md5: 29097e7ea634a45cc5386b95cac6568f depends: - - python >=3.5 + - python >=3.9 license: MIT license_family: MIT - size: 10492 - timestamp: 1675543414256 + size: 10854 + timestamp: 1733230986902 - kind: conda name: ncurses version: '6.5' @@ -8411,66 +8385,6 @@ packages: license_family: APACHE size: 14721 timestamp: 1695214221489 -- kind: conda - name: opentelemetry-instrumentation - version: 0.49b2 - build: pyhff2d567_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-0.49b2-pyhff2d567_0.conda - sha256: ee20ad159bc040642fcbce1b25f8a9fc1d788b53c6bf593a0891bf7887ec7c5f - md5: 13d714acd504cd0141688c908521c0b9 - depends: - - opentelemetry-api ~=1.4 - - opentelemetry-semantic-conventions 0.49b2 - - packaging >=18.0 - - python >=3.9 - - setuptools >=16.0 - - wrapt <2.0.0,>=1.0.0 - license: Apache-2.0 - license_family: APACHE - size: 31616 - timestamp: 1732070359772 -- kind: conda - name: opentelemetry-instrumentation-asgi - version: 0.49b2 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-asgi-0.49b2-pyhd8ed1ab_0.conda - sha256: 7b2b4da037baa506a82c5e3e711905f34448441e069a6e3affb0e4917b3ee5e0 - md5: 482ad6cdc507689d5c33eb22aa16d83e - depends: - - asgiref ~=3.0 - - opentelemetry-api ~=1.12 - - opentelemetry-instrumentation 0.49b2 - - opentelemetry-semantic-conventions 0.49b2 - - opentelemetry-util-http 0.49b2 - - python >=3.7 - license: Apache-2.0 - license_family: APACHE - size: 23749 - timestamp: 1732086813641 -- kind: conda - name: opentelemetry-instrumentation-fastapi - version: 0.49b2 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-fastapi-0.49b2-pyhd8ed1ab_0.conda - sha256: e853f62b4c56e308f349a3f360cf4d6aa814a9dc926e727c25effcf4121af68c - md5: 59c01fcead989ba58c5dc79e3ac3aab3 - depends: - - opentelemetry-api ~=1.12 - - opentelemetry-instrumentation 0.49b2 - - opentelemetry-instrumentation-asgi 0.49b2 - - opentelemetry-semantic-conventions 0.49b2 - - opentelemetry-util-http 0.49b2 - - python >=3.7 - license: Apache-2.0 - license_family: APACHE - size: 20288 - timestamp: 1732093785486 - kind: conda name: opentelemetry-proto version: 1.28.2 @@ -8523,21 +8437,6 @@ packages: license_family: APACHE size: 81534 timestamp: 1732067304518 -- kind: conda - name: opentelemetry-util-http - version: 0.49b2 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-util-http-0.49b2-pyhd8ed1ab_0.conda - sha256: 73bb1cbb640b0732c1a04764a9704bb048ab77d6cb9c6439eb50ec0ecf926ede - md5: f267c60fc629a9bd1aa388f6ed8ea0ab - depends: - - python >=3.8 - license: Apache-2.0 - license_family: APACHE - size: 19241 - timestamp: 1732081026829 - kind: conda name: opusfile version: '0.12' @@ -8746,18 +8645,19 @@ packages: - kind: conda name: pathspec version: 0.12.1 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_0.conda - sha256: 4e534e66bfe8b1e035d2169d0e5b185450546b17e36764272863e22e0370be4d - md5: 17064acba08d3686f1135b5ec1b32b12 + url: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + sha256: 9f64009cdf5b8e529995f18e03665b03f5d07c0b17445b8badef45bde76249ee + md5: 617f15191456cc6a13db418a275435e5 depends: - - python >=3.7 + - python >=3.9 license: MPL-2.0 license_family: MOZILLA - size: 41173 - timestamp: 1702250135032 + size: 41075 + timestamp: 1733233471940 - kind: conda name: pcre2 version: '10.44' @@ -8931,18 +8831,19 @@ packages: - kind: conda name: platformdirs version: 4.3.6 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_0.conda - sha256: c81bdeadc4adcda216b2c7b373f0335f5c78cc480d1d55d10f21823590d7e46f - md5: fd8f2b18b65bbf62e8f653100690c8d2 + url: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + sha256: bb50f6499e8bc1d1a26f17716c97984671121608dc0c3ecd34858112bce59a27 + md5: 577852c7e53901ddccc7e6a9959ddebe depends: - - python >=3.8 + - python >=3.9 license: MIT license_family: MIT - size: 20625 - timestamp: 1726613611845 + size: 20448 + timestamp: 1733232756001 - kind: conda name: portaudio version: 19.6.0 @@ -9043,19 +8944,19 @@ packages: timestamp: 1693881734349 - kind: conda name: prometheus_client - version: 0.21.0 + version: 0.21.1 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.0-pyhd8ed1ab_0.conda - sha256: 01f0c3dd00081637ed920a922b17bcc8ed49608404ee466ced806856e671f6b9 - md5: 07e9550ddff45150bfc7da146268e165 + url: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda + sha256: bc8f00d5155deb7b47702cb8370f233935704100dbc23e30747c161d1b6cf3ab + md5: 3e01e386307acc60b2f89af0b2e161aa depends: - - python >=3.8 + - python >=3.9 license: Apache-2.0 license_family: Apache - size: 49024 - timestamp: 1726902073034 + size: 49002 + timestamp: 1733327434163 - kind: conda name: propcache version: 0.2.0 @@ -9404,13 +9305,13 @@ packages: timestamp: 1733195786147 - kind: conda name: pydantic - version: 2.10.2 + version: 2.10.3 build: pyh3cfb1c2_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.2-pyh3cfb1c2_0.conda - sha256: 47368f0eeb63b2dd4c9c54ff35b216d01ae1c27b90d3c7a2066ef8e005f32103 - md5: e661b732b4d7514ace55a01873f03201 + url: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.3-pyh3cfb1c2_0.conda + sha256: cac9eebd3d5f8d8a497a9025d756257ddc75b8b3393e6737cb45077bd744d4f8 + md5: 194ef7f91286978521350f171b117f01 depends: - annotated-types >=0.6.0 - pydantic-core 2.27.1 @@ -9419,8 +9320,8 @@ packages: - typing_extensions >=4.12.2 license: MIT license_family: MIT - size: 316818 - timestamp: 1732689481710 + size: 317037 + timestamp: 1733316963547 - kind: conda name: pydantic-core version: 2.27.1 @@ -9585,18 +9486,19 @@ packages: - kind: conda name: pygments version: 2.18.0 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_0.conda - sha256: 78267adf4e76d0d64ea2ffab008c501156c108bb08fecb703816fb63e279780b - md5: b7f5c092b8f9800150d998a71b76d5a1 + url: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_1.conda + sha256: 0d6133545f268b2b89c2617c196fc791f365b538d4057ecd636d658c3b1e885d + md5: b38dc0206e2a530e5c2cf11dc086b31a depends: - - python >=3.8 + - python >=3.9 license: BSD-2-Clause license_family: BSD - size: 879295 - timestamp: 1714846885370 + size: 876700 + timestamp: 1733221731178 - kind: conda name: pyinstrument version: 5.0.0 @@ -9651,20 +9553,20 @@ packages: - kind: conda name: pysocks version: 1.7.1 - build: pyha2e5f31_6 - build_number: 6 + build: pyha55dd90_7 + build_number: 7 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2 - sha256: a42f826e958a8d22e65b3394f437af7332610e43ee313393d1cf143f0a2d274b - md5: 2a7de29fb590ca14b5243c4c812c8025 + url: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda + sha256: ba3b032fa52709ce0d9fd388f63d330a026754587a2f461117cac9ab73d8d0d8 + md5: 461219d1a5bd61342293efa2c0c90eac depends: - __unix - - python >=3.8 + - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 18981 - timestamp: 1661604969727 + size: 21085 + timestamp: 1733217331982 - kind: conda name: python version: 3.12.7 @@ -9766,23 +9668,25 @@ packages: - python >=3.9 - six >=1.5 license: Apache-2.0 + license_family: APACHE size: 222505 timestamp: 1733215763718 - kind: conda name: python-dotenv version: 1.0.1 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_0.conda - sha256: 2d4c80364f03315d606a50eddd493dbacc078e21412c2462c0f781eec49b572c - md5: c2997ea9360ac4e015658804a7a84f94 + url: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda + sha256: 99713f6b534fef94995c6c16fd21d59f3548784e9111775d692bdc7c44678f02 + md5: e5c6ed218664802d305e79cc2d4491de depends: - - python >=3.8 + - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 24278 - timestamp: 1706018281544 + size: 24215 + timestamp: 1733243277223 - kind: conda name: python-json-logger version: 2.0.7 @@ -9801,33 +9705,35 @@ packages: - kind: conda name: python-multipart version: 0.0.19 - build: pyhff2d567_0 + build: pyhff2d567_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_0.conda - sha256: ff5964cd5eafc118f9d9a15fd31cd88a7ecc756ef83b6095c69b1891a53e2177 - md5: fe524346d3a9aa0aaf353dc39f7d1715 + url: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_1.conda + sha256: e6f6bc3d2a51f45ca26d556c5a416efdacf49a918fefcd0b7c340121e608aa5f + md5: c74333aa447ed2b94d49e5db23da5de6 depends: - python >=3.9 license: Apache-2.0 license_family: Apache - size: 27780 - timestamp: 1733062326577 + size: 27768 + timestamp: 1733323160772 - kind: conda name: python-tzdata version: '2024.2' - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_0.conda - sha256: fe3f62ce2bc714bdaa222ab3f0344a2815ad9e853c6df38d15c9f25de8a3a6d4 - md5: 986287f89929b2d629bd6ef6497dc307 + url: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_1.conda + sha256: 57c9a02ec25926fb48edca59b9ede107823e5d5c473b94a0e05cc0b9a193a642 + md5: c0def296b2f6d2dd7b030c2a7f66bb1f depends: - - python >=3.6 + - python >=3.9 license: Apache-2.0 license_family: APACHE - size: 142527 - timestamp: 1727140688093 + size: 142235 + timestamp: 1733235414217 - kind: conda name: python-xxhash version: 3.5.0 @@ -10268,6 +10174,7 @@ packages: constrains: - chardet >=3.0.2,<6 license: Apache-2.0 + license_family: APACHE size: 58723 timestamp: 1733217126197 - kind: conda @@ -10631,18 +10538,19 @@ packages: - kind: conda name: shellingham version: 1.5.4 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_0.conda - sha256: 3c49a0a101c41b7cf6ac05a1872d7a1f91f1b6d02eecb4a36b605a19517862bb - md5: d08db09a552699ee9e7eec56b4eb3899 + url: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda + sha256: 0557c090913aa63cdbe821dbdfa038a321b488e22bc80196c4b3b1aace4914ef + md5: 7c3c2a0f3ebdea2bbc35538d162b43bf depends: - - python >=3.7 + - python >=3.9 license: MIT license_family: MIT - size: 14568 - timestamp: 1698144516278 + size: 14462 + timestamp: 1733301007770 - kind: conda name: six version: 1.16.0 @@ -10707,18 +10615,19 @@ packages: - kind: conda name: sniffio version: 1.3.1 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_0.conda - sha256: bc12100b2d8836b93c55068b463190505b8064d0fc7d025e89f20ebf22fe6c2b - md5: 490730480d76cf9c8f8f2849719c6e2b + url: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda + sha256: c2248418c310bdd1719b186796ae50a8a77ce555228b6acd32768e2543a15012 + md5: bf7a226e58dfb8346c70df36065d86c9 depends: - - python >=3.7 + - python >=3.9 license: Apache-2.0 license_family: Apache - size: 15064 - timestamp: 1708953086199 + size: 15019 + timestamp: 1733244175724 - kind: conda name: sse-starlette version: 2.1.3 @@ -11019,58 +10928,58 @@ packages: timestamp: 1731981383171 - kind: conda name: typer - version: 0.14.0 + version: 0.15.0 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/typer-0.14.0-pyhd8ed1ab_0.conda - sha256: 4d7f1c77b928a66ae3b0089e288e7fdeb826bf0dabba9799488017e6a9b84f38 - md5: 9eb8a3f5d36ca3e7f686e7a5d85aff72 + url: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.0-pyhd8ed1ab_0.conda + sha256: 90503b2a518434fb554d621cc4e1c533dc524ef1c0f63fde39fdf4328163a0c8 + md5: cf9393f5733c7277b1a5f79145f8485b depends: - python >=3.9 - - typer-slim-standard 0.14.0 hd8ed1ab_0 + - typer-slim-standard 0.15.0 hd8ed1ab_0 license: MIT license_family: MIT - size: 54637 - timestamp: 1732848384457 + size: 56455 + timestamp: 1733279871129 - kind: conda name: typer-slim - version: 0.14.0 + version: 0.15.0 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.14.0-pyhd8ed1ab_0.conda - sha256: 883969c10b9837bb18a340ffb01a984ef6b4655fc72ff05aeb7bc659c9a1229d - md5: 3674a4cd7fd8e8a7277af2b30965925d + url: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.0-pyhd8ed1ab_0.conda + sha256: f6a85917292aaea0577792090ac74dbdb0280a656934746f715bfa9feaa9b2dc + md5: 629fef89115de5a907fb9765cdd45b26 depends: - click >=8.0.0 - python >=3.9 - typing_extensions >=3.7.4.3 constrains: + - typer >=0.15.0,<0.15.1.0a0 - shellingham >=1.3.0 - rich >=10.11.0 - - typer >=0.14.0,<0.14.1.0a0 license: MIT license_family: MIT - size: 43504 - timestamp: 1732848371202 + size: 43480 + timestamp: 1733279858535 - kind: conda name: typer-slim-standard - version: 0.14.0 + version: 0.15.0 build: hd8ed1ab_0 subdir: noarch noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.14.0-hd8ed1ab_0.conda - sha256: 0e09e393e75028a0e827c7177e0fb1a070c87756e47b5ae6418423e22b10dfac - md5: 9e1e1f9c84add9637ca715f8fb71a83f + url: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.0-hd8ed1ab_0.conda + sha256: df52ddd24439aff384a82d00a751947b12127ab571f4aa674a1053c703ce8ed0 + md5: a4746fc9efbff02c1a288d8fcd8ffba9 depends: - rich - shellingham - - typer-slim 0.14.0 pyhd8ed1ab_0 + - typer-slim 0.15.0 pyhd8ed1ab_0 license: MIT license_family: MIT - size: 49180 - timestamp: 1732848371718 + size: 50259 + timestamp: 1733279859017 - kind: conda name: typing-extensions version: 4.12.2 @@ -11138,44 +11047,46 @@ packages: - kind: conda name: uvicorn version: 0.32.1 - build: pyh31011fe_0 + build: pyh31011fe_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_0.conda - sha256: a310c494c817a9f6c985fc6d2772acb953a20170d03b0eabfae0e9d8c76c97ee - md5: fa77fc8110207b3bfc5ccc9d316744f4 + url: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_1.conda + sha256: ad1d8470c629679ea3db52351a522ae44eee0111d8d8b254e8c863c4a292e5c4 + md5: 7832640e5e302059e844d56f410487a6 depends: - __unix - click >=7.0 - h11 >=0.8 - - python >=3.8 + - python >=3.9 - typing_extensions >=4.0 license: BSD-3-Clause license_family: BSD - size: 49393 - timestamp: 1732185242260 + size: 49340 + timestamp: 1733332048141 - kind: conda name: uvicorn-standard version: 0.32.1 - build: h31011fe_0 + build: h31011fe_1 + build_number: 1 subdir: noarch noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_0.conda - sha256: 52545f7c88a7c779376900de5f9d81ce36738cd8770b543e89592ad7d1003c40 - md5: 49c2820e0f39cb710becd856ff14d683 + url: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_1.conda + sha256: 378903c51b2b1136fa48b01c0a2a8dd4634136d038a4a56561c0856fdcbfcabe + md5: 0c233d5c71d398cf01d0281e72194005 depends: - __unix - httptools >=0.5.0 - python-dotenv >=0.13 - pyyaml >=5.1 - - uvicorn 0.32.1 pyh31011fe_0 + - uvicorn 0.32.1 pyh31011fe_1 - uvloop >=0.14.0,!=0.15.0,!=0.15.1 - watchfiles >=0.13 - websockets >=10.4 license: BSD-3-Clause license_family: BSD - size: 7136 - timestamp: 1732185243035 + size: 7094 + timestamp: 1733332049165 - kind: conda name: uvloop version: 0.21.0 @@ -11460,38 +11371,37 @@ packages: timestamp: 1727634669421 - kind: conda name: xorg-libx11 - version: 1.8.9 - build: he755bbd_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libx11-1.8.9-he755bbd_2.conda - sha256: bcd9ebdd7ca25d8ab1eb4f3f919113e264a8ad84fa713c48e737e9167a82fb4b - md5: 7acc45f80415e6ec352b729105dc0375 + version: 1.8.10 + build: h4f16b4b_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/xorg-libx11-1.8.10-h4f16b4b_1.conda + sha256: f53994d54f0604df881c4e984279b3cf6a1648a22d4b2113e2c89829968784c9 + md5: 125f34a17d7b4bea418a83904ea82ea6 depends: + - __glibc >=2.17,<3.0.a0 - libgcc >=13 - libxcb >=1.17.0,<2.0a0 - - xorg-xorgproto license: MIT license_family: MIT - size: 863528 - timestamp: 1727352755656 + size: 837524 + timestamp: 1733324962639 - kind: conda name: xorg-libx11 version: 1.8.10 - build: h4f16b4b_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/xorg-libx11-1.8.10-h4f16b4b_0.conda - sha256: c4650634607864630fb03696474a0535f6fce5fda7d81a6462346e071b53dfa7 - md5: 0b666058a179b744a622d0a4a0c56353 + build: hca56bd8_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libx11-1.8.10-hca56bd8_1.conda + sha256: 5604f295906dfc496a4590e8ec19f775ccb40c5d503e6dfbac0781b5446b5391 + md5: 6e3e980940b26a060e553266ae0181a9 depends: - - __glibc >=2.17,<3.0.a0 - libgcc >=13 - libxcb >=1.17.0,<2.0a0 - - xorg-xorgproto license: MIT license_family: MIT - size: 838308 - timestamp: 1727356837875 + size: 858427 + timestamp: 1733325062374 - kind: conda name: xorg-libxau version: 1.0.11 @@ -11720,41 +11630,142 @@ packages: timestamp: 1689951608120 - kind: conda name: xz - version: 5.2.6 - build: h166bdaf_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/xz-5.2.6-h166bdaf_0.tar.bz2 - sha256: 03a6d28ded42af8a347345f82f3eebdd6807a08526d47899a42d62d319609162 - md5: 2161070d867d1b1204ea749c8eec4ef0 + version: 5.6.3 + build: h2dbfc1b_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-5.6.3-h2dbfc1b_0.conda + sha256: 65df445d131d1695c45a95d102b8ffaaed5a387b4f97e209ba7d8fa0b7599dec + md5: da081cb850e57b0a0a242bab9087fbeb depends: - - libgcc-ng >=12 - license: LGPL-2.1 and GPL-2.0 - size: 418368 - timestamp: 1660346797927 + - libgcc >=13 + - liblzma 5.6.3 h86ecc28_0 + - liblzma-devel 5.6.3 h86ecc28_0 + - xz-gpl-tools 5.6.3 h2dbfc1b_0 + - xz-tools 5.6.3 h86ecc28_0 + license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later + size: 23448 + timestamp: 1733324353894 - kind: conda name: xz - version: 5.2.6 - build: h57fd34a_0 + version: 5.6.3 + build: h9a6d368_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/xz-5.2.6-h57fd34a_0.tar.bz2 - sha256: 59d78af0c3e071021cfe82dc40134c19dab8cdf804324b62940f5c8cd71803ec - md5: 39c6b54e94014701dd157f4f576ed211 - license: LGPL-2.1 and GPL-2.0 - size: 235693 - timestamp: 1660346961024 + url: https://conda.anaconda.org/conda-forge/osx-arm64/xz-5.6.3-h9a6d368_0.conda + sha256: 25d515d97f9a147240933b7529dbe10f3ee1c87425cfa3d5faa5115f78ebfe70 + md5: 86674fa432df20be6feea4bd8fec0668 + depends: + - __osx >=11.0 + - liblzma 5.6.3 h39f12f2_0 + - liblzma-devel 5.6.3 h39f12f2_0 + - xz-gpl-tools 5.6.3 h9a6d368_0 + - xz-tools 5.6.3 h39f12f2_0 + license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later + size: 23570 + timestamp: 1733321627935 - kind: conda name: xz - version: 5.2.6 - build: h9cdd2b7_0 + version: 5.6.3 + build: hbcc6ac9_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/xz-5.6.3-hbcc6ac9_0.conda + sha256: 32cd43b293f1e6498831c499195afc5693c2bd604244a08fe8dd7107a20757d2 + md5: 504333561007fbf0af129f0cee4f5652 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - liblzma 5.6.3 hb9d3cd8_0 + - liblzma-devel 5.6.3 hb9d3cd8_0 + - xz-gpl-tools 5.6.3 hbcc6ac9_0 + - xz-tools 5.6.3 hb9d3cd8_0 + license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later + size: 23435 + timestamp: 1733321352996 +- kind: conda + name: xz-gpl-tools + version: 5.6.3 + build: h2dbfc1b_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-5.2.6-h9cdd2b7_0.tar.bz2 - sha256: 93f58a7b393adf41fa007ac8c55978765e957e90cd31877ece1e5a343cb98220 - md5: 83baad393a31d59c20b63ba4da6592df + url: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-gpl-tools-5.6.3-h2dbfc1b_0.conda + sha256: d99ba29095b47891e3c63d04832768c3bfe4ad49e7bb4e163ca18962b8b3f5ca + md5: b0245c3aad4592510bb0c19212c1bded depends: - - libgcc-ng >=12 - license: LGPL-2.1 and GPL-2.0 - size: 440555 - timestamp: 1660348056328 + - libgcc >=13 + - liblzma 5.6.3 h86ecc28_0 + license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later + size: 33355 + timestamp: 1733324193303 +- kind: conda + name: xz-gpl-tools + version: 5.6.3 + build: h9a6d368_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/xz-gpl-tools-5.6.3-h9a6d368_0.conda + sha256: 44a0738b66573d0e7def712ef2aa98f628b17ee4d1034ffe71c3ff36f68d12dd + md5: 9e4519aef300966683764ccbbaa89da4 + depends: + - __osx >=11.0 + - liblzma 5.6.3 h39f12f2_0 + license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later + size: 33343 + timestamp: 1733321610703 +- kind: conda + name: xz-gpl-tools + version: 5.6.3 + build: hbcc6ac9_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/xz-gpl-tools-5.6.3-hbcc6ac9_0.conda + sha256: e9829eb1207239198f03eba61d17d0f946bbaa7602f7ee019efe72ccb26525db + md5: e4f1e59ca2971e8d0fdde0928c3f7b7f + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - liblzma 5.6.3 hb9d3cd8_0 + license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later + size: 33299 + timestamp: 1733321343126 +- kind: conda + name: xz-tools + version: 5.6.3 + build: h39f12f2_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/xz-tools-5.6.3-h39f12f2_0.conda + sha256: be3c74ffe4a7a5852108dafe40ef41858ca1ea911c62b08b5e4dd8f641d23f22 + md5: 10855380caa384c8388b93ef29c7bd04 + depends: + - __osx >=11.0 + - liblzma 5.6.3 h39f12f2_0 + license: 0BSD AND LGPL-2.1-or-later + size: 81129 + timestamp: 1733321582233 +- kind: conda + name: xz-tools + version: 5.6.3 + build: h86ecc28_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-tools-5.6.3-h86ecc28_0.conda + sha256: 1d82a745cd60e674d18a0ce30ba13d72616261b1831530f480599ffc991c8476 + md5: 0136c7aa78b4d887c9fb6dbf39749778 + depends: + - libgcc >=13 + - liblzma 5.6.3 h86ecc28_0 + license: 0BSD AND LGPL-2.1-or-later + size: 95353 + timestamp: 1733324033407 +- kind: conda + name: xz-tools + version: 5.6.3 + build: hb9d3cd8_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/xz-tools-5.6.3-hb9d3cd8_0.conda + sha256: 7d03d4c0d18dbac0ebb9550890fddeb4d21a375709339a6bdedd0104bc4f4967 + md5: 40270c1e058fd1d31caee8bf2c68fc3a + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - liblzma 5.6.3 hb9d3cd8_0 + license: 0BSD AND LGPL-2.1-or-later + size: 89832 + timestamp: 1733321333192 - kind: conda name: yaml version: 0.2.5 diff --git a/examples/magic.lock b/examples/magic.lock index 2e04f1ffa4..ed40f02b5d 100644 --- a/examples/magic.lock +++ b/examples/magic.lock @@ -8,12 +8,11 @@ environments: linux-64: - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.9-py311h2dc5d0c_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/asgiref-3.8.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-hb88c0a9_10.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.0-hecf86a2_2.conda @@ -23,10 +22,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.1-hab05fe4_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.2-hdeadb07_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h7bd072d_8.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.3-h3a84f74_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.4-h3a84f74_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.1-hf42f96a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-hf42f96a_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.6-hdec8b0f_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.6-h159bff8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.449-h5558e3c_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.10.0-h113e628_0.conda @@ -40,36 +39,36 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2024.8.30-hbcca054_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.8.30-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py311hf29c0ef_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda + - 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.5-pyhff2d567_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/filelock-3.16.1-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 - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gflags-2.2.2-h5888daf_1005.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/glog-0.7.1-hbabe93e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/httptools-0.6.4-py311h9ecbd09_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-7.0.2-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 @@ -106,6 +105,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-hd590300_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-25_linux64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.3-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-devel-5.6.3-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.28-pthreads_h94d23a6_1.conda @@ -129,17 +130,17 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.5-h064dc61_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.9.4-hcb278e6_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py311h2dc5d0c_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120306-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120306-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120306-3.11release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120306-release.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120306-release.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.dev2024120416-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120416-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120416-3.11release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120416-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.dev2024120416-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py311h2dc5d0c_1.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_0.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 - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py311h64a7726_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.2-h488ebb8_0.conda @@ -148,38 +149,34 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.28.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-prometheus-1.12.0rc1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-0.49b2-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-asgi-0.49b2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-fastapi-0.49b2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh10f6f8f_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-util-http-0.49b2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/orc-2.0.3-he039a57_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.3-py311h7db5c69_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-11.0.0-py311h49e9ac3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.0-py311h9ecbd09_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/protobuf-5.28.2-py311hfdbb021_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-18.1.0-py311h38be061_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-18.1.0-py311h4854187_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.2-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.3-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.27.1-py311h9e33e62_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.6.1-pyh3cfb1c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyinstrument-5.0.0-py311h9ecbd09_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.11.10-hc5c86c4_3_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python-xxhash-3.5.0-py311h9ecbd09_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.11-5_cp311.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda @@ -193,10 +190,10 @@ environments: - 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 - - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-ha2e4443_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.1.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyh7900ff3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda @@ -205,15 +202,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.46.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.14.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.14.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.14.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.0-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/uvloop-0.21.0-py311h9ecbd09_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/watchfiles-1.0.0-py311h9e33e62_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/websockets-14.1-py311h9ecbd09_0.conda @@ -221,7 +218,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.11-hb9d3cd8_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xxhash-0.8.2-hd590300_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-5.2.6-h166bdaf_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-5.6.3-hbcc6ac9_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-gpl-tools-5.6.3-hbcc6ac9_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-tools-5.6.3-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.18.0-py311h9ecbd09_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda @@ -230,12 +229,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda linux-aarch64: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.9-py311h58d527c_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/asgiref-3.8.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-hac900a4_10.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.0-h35473ba_2.conda @@ -245,10 +243,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.1-hf4e072c_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.2-h10eb1bc_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h28a5e6a_8.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.3-h29aef15_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.4-h29aef15_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.1-h4c7db1d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h4c7db1d_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.6-h7939e66_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.6-hffbb33f_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.449-h7085e57_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-core-cpp-1.14.0-h1887c18_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-identity-cpp-1.10.0-h47b0b28_0.conda @@ -262,37 +260,37 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2024.8.30-hcefe29a_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.8.30-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cffi-1.17.1-py311h14e8bb7_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda + - 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.5-pyhff2d567_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/filelock-3.16.1-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 - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gflags-2.2.2-h5ad3122_1005.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/glog-0.7.1-h468a4a4_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/httptools-0.6.4-py311ha879c10_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-7.0.2-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/keyutils-1.6.1-h4e544f5_0.tar.bz2 @@ -329,6 +327,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libiconv-1.17-h31becfc_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libjpeg-turbo-3.0.0-h31becfc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-25_linuxaarch64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.3-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-devel-5.6.3-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnghttp2-1.64.0-hc8609a4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.28-pthreads_h9d3fd7e_1.conda @@ -352,17 +352,17 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.5-hf4efe5d_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.9.4-hd600fc2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.2-py311ha09ea12_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120306-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120306-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120306-3.11release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120306-release.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120306-release.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.dev2024120416-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120416-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120416-3.11release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120416-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.dev2024120416-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multidict-6.1.0-py311h58d527c_1.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_0.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 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py311h69ead2a_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openjpeg-2.5.2-h0d9d63b_0.conda @@ -371,38 +371,34 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.28.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-prometheus-1.12.0rc1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-0.49b2-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-asgi-0.49b2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-fastapi-0.49b2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh10f6f8f_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-util-http-0.49b2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/orc-2.0.3-h90de224_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pandas-2.2.3-py311h848c333_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pillow-11.0.0-py311hb2a0dd2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.2.0-py311ha879c10_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/protobuf-5.28.2-py311h89d996e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pthread-stubs-0.4-h86ecc28_1002.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-18.1.0-py311hfecb2dc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-18.1.0-py311ha6d2531_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.2-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.3-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pydantic-core-2.27.1-py311h0ca61a2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.6.1-pyh3cfb1c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyinstrument-5.0.0-py311ha879c10_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.11.10-h5d932e8_3_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-xxhash-3.5.0-py311h5487e9b_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.11-5_cp311.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda @@ -416,10 +412,10 @@ environments: - 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 - - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-h1088aeb_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.1.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyh7900ff3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda @@ -428,15 +424,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.46.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.14.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.14.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.14.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.0-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/uvloop-0.21.0-py311ha879c10_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/watchfiles-1.0.0-py311h0ca61a2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/websockets-14.1-py311ha879c10_0.conda @@ -444,7 +440,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxau-1.0.11-h86ecc28_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxdmcp-1.1.5-h57736b2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xxhash-0.8.2-h31becfc_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-5.2.6-h9cdd2b7_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-5.6.3-h2dbfc1b_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-gpl-tools-5.6.3-h2dbfc1b_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-tools-5.6.3-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yaml-0.2.5-hf897c2e_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.18.0-py311ha879c10_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zeromq-4.3.5-h5efb499_7.conda @@ -452,12 +450,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstandard-0.23.0-py311hd5293d8_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.6-h02f22dd_0.conda osx-arm64: - - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.9-py311h4921393_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/asgiref-3.8.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-h9b725a8_10.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.0-h5d7ee29_2.conda @@ -467,10 +464,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.1-hf483d09_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.2-h39f8ad8_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h68a0d7e_8.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.3-h840aca7_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.4-h840aca7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.1-h5d7ee29_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-h5d7ee29_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.6-ha226bf8_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.6-h8474b10_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.449-h3b64406_4.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.14.0-hd50102c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.10.0-hc602bab_0.conda @@ -484,36 +481,36 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2024.8.30-hf0a4a13_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.8.30-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.1-py311h3a79f62_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda + - 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.5-pyhff2d567_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/filelock-3.16.1-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 - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gflags-2.2.2-hf9b8971_1005.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/glog-0.7.1-heb240a5_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/httptools-0.6.4-py311h917b07b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-7.0.2-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda @@ -531,7 +528,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-25_osxarm64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcrc32c-1.1.2-hbdafb3b_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.10.1-h13a7ad3_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.4-ha82da77_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.5-ha82da77_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.22-hd74edd7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20191231-hc8eb9b7_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libev-4.33-h93a5062_2.conda @@ -546,6 +543,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.17-h0d3ecfb_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.0.0-hb547adb_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-25_osxarm64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.3-h39f12f2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-devel-5.6.3-h39f12f2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.64.0-h6d7220d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.28-openmp_hf332438_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-h5168bdf_2_cpu.conda @@ -565,17 +564,17 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.4-hdb05f8b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.9.4-hb7217d7_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py311h56c23cb_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120306-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120306-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120306-3.11release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120306-release.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120306-release.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.dev2024120416-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120416-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120416-3.11release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120416-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.dev2024120416-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_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h7bae524_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py311h7125741_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openjpeg-2.5.2-h9f1df11_0.conda @@ -584,38 +583,34 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.28.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-prometheus-1.12.0rc1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-0.49b2-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-asgi-0.49b2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-fastapi-0.49b2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh10f6f8f_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-util-http-0.49b2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/orc-2.0.3-h121fd32_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.3-py311h9cb3ce9_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-11.0.0-py311h3894ae9_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.0-py311h460d6c5_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/protobuf-5.28.2-py311h6885ffc_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pthread-stubs-0.4-hd74edd7_1002.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-18.1.0-py311ha1ab1f8_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-18.1.0-py311he04fa90_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.2-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.3-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.27.1-py311h3ff9189_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.6.1-pyh3cfb1c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyinstrument-5.0.0-py311hae2e1ce_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.11.10-hc51fdd5_3_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-xxhash-3.5.0-py311h460d6c5_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.11-5_cp311.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda @@ -628,10 +623,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_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_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-hd02b534_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.1.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyh7900ff3_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda @@ -640,15 +635,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.46.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.14.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.14.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.14.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.0-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/uvloop-0.21.0-py311hae2e1ce_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/watchfiles-1.0.0-py311h3ff9189_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/websockets-14.1-py311h917b07b_0.conda @@ -656,7 +651,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxau-1.0.11-hd74edd7_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxdmcp-1.1.5-hd74edd7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xxhash-0.8.2-hb547adb_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xz-5.2.6-h57fd34a_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xz-5.6.3-h9a6d368_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xz-gpl-tools-5.6.3-h9a6d368_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xz-tools-5.6.3-h39f12f2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.18.0-py311h917b07b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda @@ -713,18 +710,18 @@ packages: - kind: conda name: aiohappyeyeballs version: 2.4.4 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_0.conda - sha256: 4282838f468f75f0c1746cbc6cdd3365b9f6d449bf5af8a74b234e396d847bf0 - md5: 8d6f8a679aa0272ba8d6092ce4824870 + url: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_1.conda + sha256: 95d4713e49ea92ae50cf42393683ede706b7875af5f7cb14c253438180afa732 + md5: 296b403617bafa89df4971567af79013 depends: - python >=3.9 license: PSF-2.0 - license_family: PSF - size: 19310 - timestamp: 1733135584059 + size: 19351 + timestamp: 1733332029649 - kind: conda name: aiohttp version: 3.11.9 @@ -800,35 +797,36 @@ packages: - kind: conda name: aiosignal version: 1.3.1 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_0.tar.bz2 - sha256: 575c742e14c86575986dc867463582a970463da50b77264cdf54df74f5563783 - md5: d1e1eb7e21a9e2c74279d87dafb68156 + url: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_1.conda + sha256: 9c7b639ea0cc796ef46c57fa104ec1f2ed53cd11c063518869a5a9d7d3b0b2db + md5: d736bd1b8904d7593dce4893e58a7881 depends: - frozenlist >=1.1.0 - - python >=3.7 + - python >=3.9 license: Apache-2.0 - license_family: APACHE - size: 12730 - timestamp: 1667935912504 + size: 13157 + timestamp: 1733332198143 - kind: conda name: annotated-types version: 0.7.0 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_0.conda - sha256: 668f0825b6c18e4012ca24a0070562b6ec801ebc7008228a428eb52b4038873f - md5: 7e9f4612544c8edbfd6afad17f1bd045 + url: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda + sha256: e0ea1ba78fbb64f17062601edda82097fcf815012cf52bb704150a2668110d48 + md5: 2934f256a8acfe48f6ebb4fce6cde29c depends: - - python >=3.7 + - python >=3.9 - typing-extensions >=4.0.0 license: MIT license_family: MIT - size: 18235 - timestamp: 1716290348421 + size: 18074 + timestamp: 1733247158254 - kind: conda name: anyio version: 4.6.2.post1 @@ -851,23 +849,6 @@ packages: license_family: MIT size: 109864 timestamp: 1728935803440 -- kind: conda - name: asgiref - version: 3.8.1 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/asgiref-3.8.1-pyhd8ed1ab_1.conda - sha256: c8d51a32f3530e3ca176d8f7bf5621c68c7c1c03fe9cc5c3c49d8ba4a1248f43 - md5: 21187c8276f87b6aedfe63c267a6eed7 - depends: - - python >=3.9 - - typing_extensions >=4 - license: BSD-3-Clause - license_family: BSD - size: 26436 - timestamp: 1733215704904 - kind: conda name: attrs version: 24.2.0 @@ -1315,12 +1296,12 @@ packages: timestamp: 1731734668760 - kind: conda name: aws-c-s3 - version: 0.7.3 + version: 0.7.4 build: h29aef15_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.3-h29aef15_0.conda - sha256: 57aa8b28890efd82c479e902125ea8a37782b163f13ae0856b259ec527a52879 - md5: e09cd76e50ce09ec14c17109da5c6502 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.4-h29aef15_0.conda + sha256: 396517aca6bdbe2e3d8a6275b33865eeb0d09f0dd379c3cc55c36f6004b17f2a + md5: 1046cf15a47f06a0af07f674e477d807 depends: - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.0,<0.8.1.0a0 @@ -1332,16 +1313,16 @@ packages: - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 117467 - timestamp: 1733098782199 + size: 117398 + timestamp: 1733299233564 - kind: conda name: aws-c-s3 - version: 0.7.3 + version: 0.7.4 build: h3a84f74_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.3-h3a84f74_0.conda - sha256: db17a15e5e01f19700bf9be961e1c4e002ccf8dc4d9caa3a24a0ab54f00f2c2d - md5: 171850b890600458ae6c990e78f1fa23 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.4-h3a84f74_0.conda + sha256: 91c6f7aa3dd230bcefe2654469b0704c2bdb2574e6d0d7c56cf9e9071f44cc26 + md5: 7d029b9aa9decf4c0fb8a9a8940c9906 depends: - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 @@ -1354,16 +1335,16 @@ packages: - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 113536 - timestamp: 1733098705479 + size: 113660 + timestamp: 1733299194447 - kind: conda name: aws-c-s3 - version: 0.7.3 + version: 0.7.4 build: h840aca7_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.3-h840aca7_0.conda - sha256: 18972a91f32f6b0edb58eb71cb2f5b56654183fd6ba611b3b0d6cc484017aeff - md5: 893e668d99fa4b31eef9dc5b19c21b9a + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.4-h840aca7_0.conda + sha256: 564bbb781c1aebfcdda43a0e82f447e34de1764c57ebc1733fe6437248f5b7c9 + md5: 02f78a084e101dee30c794f963549de4 depends: - __osx >=11.0 - aws-c-auth >=0.8.0,<0.8.1.0a0 @@ -1374,8 +1355,8 @@ packages: - aws-checksums >=0.2.2,<0.2.3.0a0 license: Apache-2.0 license_family: Apache - size: 97145 - timestamp: 1733098874599 + size: 97136 + timestamp: 1733299356527 - kind: conda name: aws-c-sdkutils version: 0.2.1 @@ -1477,13 +1458,14 @@ packages: - kind: conda name: aws-crt-cpp version: 0.29.6 - build: h7939e66_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.6-h7939e66_1.conda - sha256: 3d0b1996d28a2647ced83ed8052ee331df70b2c1a68fb6db0fe4e743a88be54d - md5: 5e573a52a1cd20f81d7fdf1db4f4583a + build: h159bff8_2 + build_number: 2 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.6-h159bff8_2.conda + sha256: 04ca62caa764bb95f304af8486c1af7c4f76d4ad5204c494edcf86af653d2ad0 + md5: c498e6490834aacf7835c96403862881 depends: + - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.0,<0.8.1.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 @@ -1491,23 +1473,23 @@ packages: - aws-c-http >=0.9.1,<0.9.2.0a0 - aws-c-io >=0.15.2,<0.15.3.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - - aws-c-s3 >=0.7.3,<0.7.4.0a0 + - aws-c-s3 >=0.7.4,<0.7.5.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 283670 - timestamp: 1733150929992 + size: 354822 + timestamp: 1733333950713 - kind: conda name: aws-crt-cpp version: 0.29.6 - build: ha226bf8_1 - build_number: 1 + build: h8474b10_2 + build_number: 2 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.6-ha226bf8_1.conda - sha256: f645e2a8015d8e71ed785c81a14a202ebce2f5dcca8982cd7ec5f8000f9be5c3 - md5: 81da0b5f65ab08e3919d6eadf08b5776 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.6-h8474b10_2.conda + sha256: 5ca9df9516583076ea40129e71b103efaca21ca02f40b59d69485823613cbfba + md5: 54c898f166bcfbe06c2b7ac36360f371 depends: - __osx >=11.0 - aws-c-auth >=0.8.0,<0.8.1.0a0 @@ -1517,24 +1499,23 @@ packages: - aws-c-http >=0.9.1,<0.9.2.0a0 - aws-c-io >=0.15.2,<0.15.3.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - - aws-c-s3 >=0.7.3,<0.7.4.0a0 + - aws-c-s3 >=0.7.4,<0.7.5.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - libcxx >=18 license: Apache-2.0 license_family: Apache - size: 236505 - timestamp: 1733151090562 + size: 235829 + timestamp: 1733334077172 - kind: conda name: aws-crt-cpp version: 0.29.6 - build: hdec8b0f_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.6-hdec8b0f_1.conda - sha256: cd09f1d5d854607ce7acafc76c74e864f296d296e60b54054a10f757ecc3d2dd - md5: 40647232fad98f92be8c6050a7e0c2bd + build: hffbb33f_2 + build_number: 2 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.6-hffbb33f_2.conda + sha256: 5f9490edaddde550cf05861626175b648da73c84bcde61ac2a6a1bf1a8fd6982 + md5: fb8be2af168b63e0b77076a1dc6baa85 depends: - - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.0,<0.8.1.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 @@ -1542,14 +1523,14 @@ packages: - aws-c-http >=0.9.1,<0.9.2.0a0 - aws-c-io >=0.15.2,<0.15.3.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - - aws-c-s3 >=0.7.3,<0.7.4.0a0 + - aws-c-s3 >=0.7.4,<0.7.5.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 354710 - timestamp: 1733150818238 + size: 284031 + timestamp: 1733333955728 - kind: conda name: aws-sdk-cpp version: 1.11.449 @@ -2171,49 +2152,52 @@ packages: - kind: conda name: charset-normalizer version: 3.4.0 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_0.conda - sha256: 1873ac45ea61f95750cb0b4e5e675d1c5b3def937e80c7eebb19297f76810be8 - md5: a374efa97290b8799046df7c5ca17164 + url: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_1.conda + sha256: 63022ee2c6a157a9f980250a66f54bdcdf5abee817348d0f9a74c2441a6fbf0e + md5: 6581a17bba6b948bb60130026404a9d6 depends: - - python >=3.7 + - python >=3.9 license: MIT license_family: MIT - size: 47314 - timestamp: 1728479405343 + size: 47533 + timestamp: 1733218182393 - kind: conda name: click version: 8.1.7 - build: unix_pyh707e725_0 + build: unix_pyh707e725_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_0.conda - sha256: f0016cbab6ac4138a429e28dbcb904a90305b34b3fe41a9b89d697c90401caec - md5: f3ad426304898027fc619827ff428eca + url: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_1.conda + sha256: 1cd5fc6ccdd5141378e51252a7a3810b07fd5a7e6934a5b4a7eccba66566224b + md5: cb8e52f28f5e592598190c562e7b5bf1 depends: - __unix - - python >=3.8 + - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 84437 - timestamp: 1692311973840 + size: 84513 + timestamp: 1733221925078 - kind: conda name: colorama version: 0.4.6 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 - sha256: 2c1b2e9755ce3102bca8d69e8f26e4f087ece73f50418186aee7c74bef8e1698 - md5: 3faab06a954c2a04039983f2c4a50d99 + url: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + sha256: ab29d57dc70786c1269633ba3dff20288b81664d3ff8d21af995742e2bb03287 + md5: 962b9857ee8e7018c22f2776ffa0b2d7 depends: - - python >=3.7 + - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 25170 - timestamp: 1666700778190 + size: 27011 + timestamp: 1733218222191 - kind: conda name: datasets version: 2.14.4 @@ -2277,58 +2261,61 @@ packages: - kind: conda name: dnspython version: 2.7.0 - build: pyhff2d567_0 + build: pyhff2d567_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_0.conda - sha256: 3e2ea1bfd90969e0e1f152bb1f969c56661278ad6bfaa3272027b1ff0d9a1a23 - md5: 0adf8f63d500d20418656289249533f9 + url: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda + sha256: 3ec40ccf63f2450c5e6c7dd579e42fc2e97caf0d8cd4ba24aa434e6fc264eda0 + md5: 5fbd60d61d21b4bd2f9d7a48fe100418 depends: - - python >=3.9.0,<4.0.0 + - python >=3.9,<4.0.0 - sniffio constrains: - - cryptography >=43 + - aioquic >=1.0.0 - wmi >=1.5.1 - - h2 >=4.1.0 + - httpx >=0.26.0 - trio >=0.23 + - cryptography >=43 - httpcore >=1.0.0 - - aioquic >=1.0.0 - - httpx >=0.26.0 - idna >=3.7 + - h2 >=4.1.0 license: ISC license_family: OTHER - size: 172740 - timestamp: 1728178868478 + size: 172172 + timestamp: 1733256829961 - kind: conda name: email-validator version: 2.2.0 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_0.conda - sha256: ea9e936ed7c49ea6d66fa3554afe31ba311f2a3d5e384d8c38925fda9e37bdb9 - md5: 3067adf57ee658ddf5bfad47b0041ce4 + url: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda + sha256: b91a19eb78edfc2dbb36de9a67f74ee2416f1b5273dd7327abe53f2dbf864736 + md5: da16dd3b0b71339060cd44cb7110ddf9 depends: - dnspython >=2.0.0 - idna >=2.0.0 - - python >=3.7 + - python >=3.9 license: Unlicense - size: 44157 - timestamp: 1718984716782 + size: 44401 + timestamp: 1733300827551 - kind: conda name: email_validator version: 2.2.0 - build: hd8ed1ab_0 + build: hd8ed1ab_1 + build_number: 1 subdir: noarch noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_0.conda - sha256: 2cbbbe9e0f3872214227c27b8b775dd2296a435c90ef50a7cc69934c329b6c65 - md5: 0214a004f7cf5ac28fc10a390dfc47ee + url: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_1.conda + sha256: e0d0fdf587aa0ed0ff08b2bce3ab355f46687b87b0775bfba01cc80a859ee6a2 + md5: 0794f8807ff2c6f020422cacb1bd7bfa depends: - email-validator >=2.2.0,<2.2.1.0a0 license: Unlicense - size: 6690 - timestamp: 1718984720419 + size: 6552 + timestamp: 1733300828176 - kind: conda name: exceptiongroup version: 1.2.2 @@ -2389,17 +2376,18 @@ packages: - kind: conda name: filelock version: 3.16.1 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_0.conda - sha256: 1da766da9dba05091af87977922fe60dc7464091a9ccffb3765d403189d39be4 - md5: 916f8ec5dd4128cd5f207a3c4c07b2c6 + url: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_1.conda + sha256: 18dca6e2194732df7ebf824abaefe999e4765ebe8e8a061269406ab88fc418b9 + md5: d692e9ba6f92dc51484bf3477e36ce7c depends: - - python >=3.7 + - python >=3.9 license: Unlicense - size: 17357 - timestamp: 1726613593584 + size: 17441 + timestamp: 1733240909987 - kind: conda name: freetype version: 2.12.1 @@ -2629,51 +2617,54 @@ packages: - kind: conda name: h11 version: 0.14.0 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_0.tar.bz2 - sha256: 817d2c77d53afe3f3d9cf7f6eb8745cdd8ea76c7adaa9d7ced75c455a2c2c085 - md5: b21ed0883505ba1910994f1df031a428 + url: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda + sha256: 622516185a7c740d5c7f27016d0c15b45782c1501e5611deec63fd70344ce7c8 + md5: 7ee49e89531c0dcbba9466f6d115d585 depends: - - python >=3 + - python >=3.9 - typing_extensions license: MIT license_family: MIT - size: 48251 - timestamp: 1664132995560 + size: 51846 + timestamp: 1733327599467 - kind: conda name: h2 version: 4.1.0 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2 - sha256: bfc6a23849953647f4e255c782e74a0e18fe16f7e25c7bb0bc57b83bb6762c7a - md5: b748fbf7060927a6e82df7cb5ee8f097 + url: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_1.conda + sha256: 843ddad410c370672a8250470697027618f104153612439076d4d7b91eeb7b5c + md5: 825927dc7b0f287ef8d4d0011bb113b1 depends: - hpack >=4.0,<5 - hyperframe >=6.0,<7 - - python >=3.6.1 + - python >=3.9 license: MIT license_family: MIT - size: 46754 - timestamp: 1634280590080 + size: 52000 + timestamp: 1733298867359 - kind: conda name: hpack version: 4.0.0 - build: pyh9f0ad1d_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2 - sha256: 5dec948932c4f740674b1afb551223ada0c55103f4c7bf86a110454da3d27cb8 - md5: 914d6646c4dbb1fd3ff539830a12fd71 + url: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda + sha256: ec89b7e5b8aa2f0219f666084446e1fb7b54545861e9caa892acb24d125761b5 + md5: 2aa5ff7fa34a81b9196532c84c10d865 depends: - - python + - python >=3.9 license: MIT license_family: MIT - size: 25341 - timestamp: 1598856368685 + size: 29412 + timestamp: 1733299296857 - kind: conda name: httpcore version: 1.0.7 @@ -2791,18 +2782,19 @@ packages: - kind: conda name: hyperframe version: 6.0.1 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 - sha256: e374a9d0f53149328134a8d86f5d72bca4c6dcebed3c0ecfa968c02996289330 - md5: 9f765cbfab6870c8435b9eefecd7a1f4 + url: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda + sha256: e91c6ef09d076e1d9a02819cd00fa7ee18ecf30cdd667605c853980216584d1b + md5: 566e75c90c1d0c8c459eb0ad9833dc7a depends: - - python >=3.6 + - python >=3.9 license: MIT license_family: MIT - size: 14646 - timestamp: 1619110249723 + size: 17239 + timestamp: 1733298862681 - kind: conda name: icu version: '75.1' @@ -2853,19 +2845,20 @@ packages: - kind: conda name: jinja2 version: 3.1.4 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_0.conda - sha256: 27380d870d42d00350d2d52598cddaf02f9505fb24be09488da0c9b8d1428f2d - md5: 7b86ecb7d3557821c649b3c31e3eb9f2 + url: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_1.conda + sha256: 85a7169c078b8065bd9d121b0e7b99c8b88c42a411314b6ae5fcd81c48c4710a + md5: 08cce3151bde4ecad7885bd9fb647532 depends: - markupsafe >=2.0 - - python >=3.7 + - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 111565 - timestamp: 1715127275924 + size: 110963 + timestamp: 1733217424408 - kind: conda name: jupyter_client version: 8.6.3 @@ -3846,18 +3839,18 @@ packages: timestamp: 1726659794676 - kind: conda name: libcxx - version: 19.1.4 + version: 19.1.5 build: ha82da77_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.4-ha82da77_0.conda - sha256: 342896ebc1d6acbf022ca6df006a936b9a472579e91e3c502cb1f52f218b78e9 - md5: a2d3d484d95889fccdd09498d8f6bf9a + url: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.5-ha82da77_0.conda + sha256: 7918cc0bb7a6554cdd3eee634c3dc414a1ab8ec49faeca1567367bb92118f9d7 + md5: 3c7be0df28ccda1d193ea6de56dcb5ff depends: - __osx >=11.0 license: Apache-2.0 WITH LLVM-exception license_family: Apache - size: 520678 - timestamp: 1732060258949 + size: 519819 + timestamp: 1733291654212 - kind: conda name: libdeflate version: '1.22' @@ -4678,6 +4671,89 @@ packages: license_family: BSD size: 15823 timestamp: 1729643275943 +- kind: conda + name: liblzma + version: 5.6.3 + build: h39f12f2_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.3-h39f12f2_0.conda + sha256: de00d627e41636591d05407c666de957a9ddd3c0f633340c016725695569b049 + md5: faa0ab222b9d12a52a8ebc655c9236f3 + depends: + - __osx >=11.0 + license: 0BSD + size: 98836 + timestamp: 1733321533638 +- kind: conda + name: liblzma + version: 5.6.3 + build: h86ecc28_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.3-h86ecc28_0.conda + sha256: 004785e427d255da8cf713b4722f8330bf496ce6fc665a0b21d007d377ffee5f + md5: 83d366f7bf01fc2d7781b4cc113fc9d3 + depends: + - libgcc >=13 + license: 0BSD + size: 124115 + timestamp: 1733323693681 +- kind: conda + name: liblzma + version: 5.6.3 + build: hb9d3cd8_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.3-hb9d3cd8_0.conda + sha256: 31637db828ec67ab8697de324e6074af5a36cbeddc37202d8d31e2fb397619e8 + md5: 137c535dddd880f844f33ed91b8abdba + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + license: 0BSD + size: 111223 + timestamp: 1733321312512 +- kind: conda + name: liblzma-devel + version: 5.6.3 + build: h39f12f2_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-devel-5.6.3-h39f12f2_0.conda + sha256: 2e5a9fb298bd8c01ceed8db386bfb0a125d74cef2c5ee615b4f9695b2808f7e0 + md5: 89955d2470cbacea3d5e069d67c94f44 + depends: + - __osx >=11.0 + - liblzma 5.6.3 h39f12f2_0 + license: 0BSD + size: 112941 + timestamp: 1733321552604 +- kind: conda + name: liblzma-devel + version: 5.6.3 + build: h86ecc28_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-devel-5.6.3-h86ecc28_0.conda + sha256: 740b3f1ffa57ad5f0eec0c868e23d4e1f811871c6685a04af57f1943cde1a575 + md5: 27995ae8bc93eeb949315655daa19d3c + depends: + - libgcc >=13 + - liblzma 5.6.3 h86ecc28_0 + license: 0BSD + size: 376767 + timestamp: 1733323860026 +- kind: conda + name: liblzma-devel + version: 5.6.3 + build: hb9d3cd8_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/liblzma-devel-5.6.3-hb9d3cd8_0.conda + sha256: 98020d4b4cc6c728d2e6dc1174cb2548cf03ce5098cd17c37b32f06e896a943a + md5: 7069f4de645461447f1ab7736c94db26 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - liblzma 5.6.3 hb9d3cd8_0 + license: 0BSD + size: 375452 + timestamp: 1733321322415 - kind: conda name: libnghttp2 version: 1.64.0 @@ -5773,27 +5849,29 @@ packages: - kind: conda name: markdown-it-py version: 3.0.0 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - sha256: c041b0eaf7a6af3344d5dd452815cdc148d6284fec25a4fa3f4263b3a021e962 - md5: 93a8e71256479c62074356ef6ebf501b + url: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_1.conda + sha256: 0fbacdfb31e55964152b24d5567e9a9996e1e7902fb08eb7d91b5fd6ce60803a + md5: fee3164ac23dfca50cfcc8b85ddefb81 depends: - mdurl >=0.1,<1 - - python >=3.8 + - python >=3.9 license: MIT license_family: MIT - size: 64356 - timestamp: 1686175179621 + size: 64430 + timestamp: 1733250550053 - kind: conda name: markupsafe version: 3.0.2 - build: py311h2dc5d0c_0 + build: py311h2dc5d0c_1 + build_number: 1 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py311h2dc5d0c_0.conda - sha256: 364a0d55abc4c60bc575c81a4acc9e98ea27565147d4d4dc672bad4b2d069710 - md5: 15e4dadd59e93baad7275249f10b9472 + url: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py311h2dc5d0c_1.conda + sha256: 0291d90706ac6d3eea73e66cd290ef6d805da3fad388d1d476b8536ec92ca9a8 + md5: 6565a715337ae279e351d0abd8ffe88a depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -5803,16 +5881,17 @@ packages: - jinja2 >=3.0.0 license: BSD-3-Clause license_family: BSD - size: 25591 - timestamp: 1729351519326 + size: 25354 + timestamp: 1733219879408 - kind: conda name: markupsafe version: 3.0.2 - build: py311h56c23cb_0 + build: py311h4921393_1 + build_number: 1 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py311h56c23cb_0.conda - sha256: 74bbdf6dbfe561026fed5c7d5c1a123e6dff0fedc5bc7ed0c6e9037c95ca96d7 - md5: be48a4cc178a91af3b1ccd58c14efde2 + url: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py311h4921393_1.conda + sha256: 4f738a7c80e34e5e5d558e946b06d08e7c40e3cc4bdf08140bf782c359845501 + md5: 249e2f6f5393bb6b36b3d3a3eebdcdf9 depends: - __osx >=11.0 - python >=3.11,<3.12.0a0 @@ -5822,16 +5901,17 @@ packages: - jinja2 >=3.0.0 license: BSD-3-Clause license_family: BSD - size: 25180 - timestamp: 1729351536390 + size: 24976 + timestamp: 1733219849253 - kind: conda name: markupsafe version: 3.0.2 - build: py311ha09ea12_0 + build: py311ha09ea12_1 + build_number: 1 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.2-py311ha09ea12_0.conda - sha256: 8714908e7190f362bc04636e6ff28ae8a3c008bbc92b126839ce7130c0c975f5 - md5: f40833364f9c3e847cc35a94c055f5c2 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.2-py311ha09ea12_1.conda + sha256: 0af0d9357e309876adf6ca61fa574afee74741fb1628755ce1f36028d294e854 + md5: eb3611be0cc15845bf6e5075adc520ee depends: - libgcc >=13 - python >=3.11,<3.12.0a0 @@ -5840,80 +5920,80 @@ packages: - jinja2 >=3.0.0 license: BSD-3-Clause license_family: BSD - size: 25805 - timestamp: 1729352296161 + size: 25787 + timestamp: 1733220925299 - kind: conda name: max - version: 24.6.0.dev2024120306 + version: 24.6.0.dev2024120416 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120306-release.conda - sha256: 2aae2a8286dca29453e8cc8cfe13511aa016a521ac0c9201ceb24d1ba6c4138e - md5: 9c25081ace6ad2c13675cf0123109cb9 - depends: - - max-core ==24.6.0.dev2024120306 release - - max-python >=24.6.0.dev2024120306,<25.0a0 - - mojo-jupyter ==24.6.0.dev2024120306 release - - mblack ==24.6.0.dev2024120306 release + url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120416-release.conda + sha256: 956c006755158839ee6f8de7d91360cd1990024868d867482a62885241c9794f + md5: 09947b7aa3a3c35b413b7c0d118126e3 + depends: + - max-core ==24.6.0.dev2024120416 release + - max-python >=24.6.0.dev2024120416,<25.0a0 + - mojo-jupyter ==24.6.0.dev2024120416 release + - mblack ==24.6.0.dev2024120416 release license: LicenseRef-Modular-Proprietary - size: 9929 - timestamp: 1733209293577 + size: 9925 + timestamp: 1733332193356 - kind: conda name: max-core - version: 24.6.0.dev2024120306 + version: 24.6.0.dev2024120416 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120306-release.conda - sha256: a82534696c6e078fb4e14b4b0f058336ffd0a647f7404e85aaee18eec25be067 - md5: c249d77d8e5885dd0eacd9028131413f + url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120416-release.conda + sha256: e73a6e3abebc4516d56d39b85d10e98883885218273b2ef19c7cfe4d3df7a4ef + md5: 43a976936171480fe7dbc2fed1224312 depends: - - mblack ==24.6.0.dev2024120306 release + - mblack ==24.6.0.dev2024120416 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 254711372 - timestamp: 1733209193854 + size: 245904359 + timestamp: 1733332193354 - kind: conda name: max-core - version: 24.6.0.dev2024120306 + version: 24.6.0.dev2024120416 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120306-release.conda - sha256: bd0858a3e2069a86cd71370322e7ac26ad3948225e4f0811e4fbf8771d44d0ea - md5: e5b6ae7316dc2b08a52cee8f27b4f484 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120416-release.conda + sha256: e32ebc6b7f589881f14caec8df02b65c40839a0210ef6a87d85243b61b5fc7d8 + md5: 15cac805514c6a381a9a50ee3a86de25 depends: - - mblack ==24.6.0.dev2024120306 release + - mblack ==24.6.0.dev2024120416 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 258488596 - timestamp: 1733209293575 + size: 249618446 + timestamp: 1733332472125 - kind: conda name: max-core - version: 24.6.0.dev2024120306 + version: 24.6.0.dev2024120416 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120306-release.conda - sha256: 88b5f2cbb2724067d33b10515613ec845f134c3758fd063852ac191a276d7812 - md5: 05acbd2d9cf25aa913a979aa9802c194 + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120416-release.conda + sha256: bc27468be85cc7fd207ec44a4a0b1b11aa54792737a20fcf8355a2f2e7a215d5 + md5: c27c6f67be3abffbf559bfd50852b493 depends: - - mblack ==24.6.0.dev2024120306 release + - mblack ==24.6.0.dev2024120416 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 220248523 - timestamp: 1733209020078 + size: 210212276 + timestamp: 1733332258535 - kind: conda name: max-python - version: 24.6.0.dev2024120306 + version: 24.6.0.dev2024120416 build: 3.11release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120306-3.11release.conda - sha256: fe78fef13dabb20d1a64aa0a0f1abb668a28ba18221f39a659b73236dbae9a60 - md5: 86e43abaa5b98cfd229e964be3a614ce + url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120416-3.11release.conda + sha256: 0f547380f5fba946ea66d441a4ff39914e3795922b9c13c0258c18667ecfd67e + md5: 6279cbb54248de909cc3056f610bf086 depends: - - max-core ==24.6.0.dev2024120306 release + - max-core ==24.6.0.dev2024120416 release - python 3.11.* - pillow - fastapi @@ -5923,7 +6003,6 @@ packages: - opentelemetry-api - opentelemetry-exporter-otlp-proto-http >=1.27.0 - opentelemetry-exporter-prometheus >=0.48b0 - - opentelemetry-instrumentation-fastapi - opentelemetry-sdk >=1.27.0 - pydantic-settings >=2.4.0,<3 - pydantic >=2.4.0,<3 @@ -5936,18 +6015,18 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 128574125 - timestamp: 1733209193860 + size: 122937776 + timestamp: 1733332193364 - kind: conda name: max-python - version: 24.6.0.dev2024120306 + version: 24.6.0.dev2024120416 build: 3.11release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120306-3.11release.conda - sha256: ba069825f4ef3ee3eb8079b652666d0a4d80ddf76e0cfe12782bb88f630d181a - md5: d6beb27837f451771445062607b45f38 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120416-3.11release.conda + sha256: efc9949779b7999d5245f8de5759efcb8beaef95f36fcf9ab3d91562dffc7584 + md5: bb9bf7a056bc2d8e72a8d060c01f93f7 depends: - - max-core ==24.6.0.dev2024120306 release + - max-core ==24.6.0.dev2024120416 release - python 3.11.* - pillow - fastapi @@ -5957,7 +6036,6 @@ packages: - opentelemetry-api - opentelemetry-exporter-otlp-proto-http >=1.27.0 - opentelemetry-exporter-prometheus >=0.48b0 - - opentelemetry-instrumentation-fastapi - opentelemetry-sdk >=1.27.0 - pydantic-settings >=2.4.0,<3 - pydantic >=2.4.0,<3 @@ -5970,18 +6048,18 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 132245621 - timestamp: 1733209293581 + size: 126566383 + timestamp: 1733332472134 - kind: conda name: max-python - version: 24.6.0.dev2024120306 + version: 24.6.0.dev2024120416 build: 3.11release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120306-3.11release.conda - sha256: e9ca73474ecae1d88742e3f38067741ad532bea307d92ef8bbc4b03434e71502 - md5: 7cfbd7cb82332bc7e992f1297d0fb9a3 + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120416-3.11release.conda + sha256: 572567eda8da043e5de45a0cbbe778f13f5fc441eece20a0ff60a7a4638fee21 + md5: 809b87bc94c23925ee4c36636ce5bdce depends: - - max-core ==24.6.0.dev2024120306 release + - max-core ==24.6.0.dev2024120416 release - python 3.11.* - pillow - fastapi @@ -5991,7 +6069,6 @@ packages: - opentelemetry-api - opentelemetry-exporter-otlp-proto-http >=1.27.0 - opentelemetry-exporter-prometheus >=0.48b0 - - opentelemetry-instrumentation-fastapi - opentelemetry-sdk >=1.27.0 - pydantic-settings >=2.4.0,<3 - pydantic >=2.4.0,<3 @@ -6004,17 +6081,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 119124363 - timestamp: 1733209020081 + size: 111633050 + timestamp: 1733332258537 - kind: conda name: mblack - version: 24.6.0.dev2024120306 + version: 24.6.0.dev2024120416 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120306-release.conda - sha256: 35b22caab89b65a52b9e7877762a58bba8cd21137ac1383e268b8a2ae45173ac - md5: f77eafd932de3ae309643ea716ba3c3a + url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120416-release.conda + sha256: 374f5d8dfed89bf7098a0f7d8c6fd40c9dab11c4d760a03e05835e82f1b00cb9 + md5: 85c700946ce4a5ce8d11f5ee66b477cf depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -6024,40 +6101,41 @@ packages: - platformdirs >=2 - python license: MIT - size: 130649 - timestamp: 1733209293580 + size: 130641 + timestamp: 1733332193362 - kind: conda name: mdurl version: 0.1.2 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - sha256: 64073dfb6bb429d52fff30891877b48c7ec0f89625b1bf844905b66a81cce6e1 - md5: 776a8dd9e824f77abac30e6ef43a8f7a + url: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda + sha256: 78c1bbe1723449c52b7a9df1af2ee5f005209f67e40b6e1d3c7619127c43b1c7 + md5: 592132998493b3ff25fd7479396e8351 depends: - - python >=3.6 + - python >=3.9 license: MIT license_family: MIT - size: 14680 - timestamp: 1704317789138 + size: 14465 + timestamp: 1733255681319 - kind: conda name: mojo-jupyter - version: 24.6.0.dev2024120306 + version: 24.6.0.dev2024120416 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120306-release.conda - sha256: dd1fcd4298ef08be4507931babe70d6b335dc28d5ead602460747edc4f10c2dc - md5: 8bb40dfabe84757d93d3053fdf4b0a58 + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120416-release.conda + sha256: 181250d3bbe6523e4ac02e40004b6e77c04cfee2d9512dbeb584f51351df9448 + md5: 411a1d159867c56043991824d1ee88d9 depends: - - max-core ==24.6.0.dev2024120306 release + - max-core ==24.6.0.dev2024120416 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22940 - timestamp: 1733209293581 + size: 22946 + timestamp: 1733332193363 - kind: conda name: multidict version: 6.1.0 @@ -6170,18 +6248,19 @@ packages: - kind: conda name: mypy_extensions version: 1.0.0 - build: pyha770c72_0 + build: pyha770c72_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda - sha256: f240217476e148e825420c6bc3a0c0efb08c0718b7042fae960400c02af858a3 - md5: 4eccaeba205f0aed9ac3a9ea58568ca3 + url: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda + sha256: 1895f47b7d68581a6facde5cb13ab8c2764c2e53a76bd746f8f98910dc4e08fe + md5: 29097e7ea634a45cc5386b95cac6568f depends: - - python >=3.5 + - python >=3.9 license: MIT license_family: MIT - size: 10492 - timestamp: 1675543414256 + size: 10854 + timestamp: 1733230986902 - kind: conda name: ncurses version: '6.5' @@ -6466,66 +6545,6 @@ packages: license_family: APACHE size: 14721 timestamp: 1695214221489 -- kind: conda - name: opentelemetry-instrumentation - version: 0.49b2 - build: pyhff2d567_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-0.49b2-pyhff2d567_0.conda - sha256: ee20ad159bc040642fcbce1b25f8a9fc1d788b53c6bf593a0891bf7887ec7c5f - md5: 13d714acd504cd0141688c908521c0b9 - depends: - - opentelemetry-api ~=1.4 - - opentelemetry-semantic-conventions 0.49b2 - - packaging >=18.0 - - python >=3.9 - - setuptools >=16.0 - - wrapt <2.0.0,>=1.0.0 - license: Apache-2.0 - license_family: APACHE - size: 31616 - timestamp: 1732070359772 -- kind: conda - name: opentelemetry-instrumentation-asgi - version: 0.49b2 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-asgi-0.49b2-pyhd8ed1ab_0.conda - sha256: 7b2b4da037baa506a82c5e3e711905f34448441e069a6e3affb0e4917b3ee5e0 - md5: 482ad6cdc507689d5c33eb22aa16d83e - depends: - - asgiref ~=3.0 - - opentelemetry-api ~=1.12 - - opentelemetry-instrumentation 0.49b2 - - opentelemetry-semantic-conventions 0.49b2 - - opentelemetry-util-http 0.49b2 - - python >=3.7 - license: Apache-2.0 - license_family: APACHE - size: 23749 - timestamp: 1732086813641 -- kind: conda - name: opentelemetry-instrumentation-fastapi - version: 0.49b2 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-fastapi-0.49b2-pyhd8ed1ab_0.conda - sha256: e853f62b4c56e308f349a3f360cf4d6aa814a9dc926e727c25effcf4121af68c - md5: 59c01fcead989ba58c5dc79e3ac3aab3 - depends: - - opentelemetry-api ~=1.12 - - opentelemetry-instrumentation 0.49b2 - - opentelemetry-instrumentation-asgi 0.49b2 - - opentelemetry-semantic-conventions 0.49b2 - - opentelemetry-util-http 0.49b2 - - python >=3.7 - license: Apache-2.0 - license_family: APACHE - size: 20288 - timestamp: 1732093785486 - kind: conda name: opentelemetry-proto version: 1.28.2 @@ -6578,21 +6597,6 @@ packages: license_family: APACHE size: 81534 timestamp: 1732067304518 -- kind: conda - name: opentelemetry-util-http - version: 0.49b2 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-util-http-0.49b2-pyhd8ed1ab_0.conda - sha256: 73bb1cbb640b0732c1a04764a9704bb048ab77d6cb9c6439eb50ec0ecf926ede - md5: f267c60fc629a9bd1aa388f6ed8ea0ab - depends: - - python >=3.8 - license: Apache-2.0 - license_family: APACHE - size: 19241 - timestamp: 1732081026829 - kind: conda name: orc version: 2.0.3 @@ -6748,18 +6752,19 @@ packages: - kind: conda name: pathspec version: 0.12.1 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_0.conda - sha256: 4e534e66bfe8b1e035d2169d0e5b185450546b17e36764272863e22e0370be4d - md5: 17064acba08d3686f1135b5ec1b32b12 + url: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + sha256: 9f64009cdf5b8e529995f18e03665b03f5d07c0b17445b8badef45bde76249ee + md5: 617f15191456cc6a13db418a275435e5 depends: - - python >=3.7 + - python >=3.9 license: MPL-2.0 license_family: MOZILLA - size: 41173 - timestamp: 1702250135032 + size: 41075 + timestamp: 1733233471940 - kind: conda name: pillow version: 11.0.0 @@ -6837,33 +6842,34 @@ packages: - kind: conda name: platformdirs version: 4.3.6 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_0.conda - sha256: c81bdeadc4adcda216b2c7b373f0335f5c78cc480d1d55d10f21823590d7e46f - md5: fd8f2b18b65bbf62e8f653100690c8d2 + url: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + sha256: bb50f6499e8bc1d1a26f17716c97984671121608dc0c3ecd34858112bce59a27 + md5: 577852c7e53901ddccc7e6a9959ddebe depends: - - python >=3.8 + - python >=3.9 license: MIT license_family: MIT - size: 20625 - timestamp: 1726613611845 + size: 20448 + timestamp: 1733232756001 - kind: conda name: prometheus_client - version: 0.21.0 + version: 0.21.1 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.0-pyhd8ed1ab_0.conda - sha256: 01f0c3dd00081637ed920a922b17bcc8ed49608404ee466ced806856e671f6b9 - md5: 07e9550ddff45150bfc7da146268e165 + url: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda + sha256: bc8f00d5155deb7b47702cb8370f233935704100dbc23e30747c161d1b6cf3ab + md5: 3e01e386307acc60b2f89af0b2e161aa depends: - - python >=3.8 + - python >=3.9 license: Apache-2.0 license_family: Apache - size: 49024 - timestamp: 1726902073034 + size: 49002 + timestamp: 1733327434163 - kind: conda name: propcache version: 0.2.0 @@ -7172,13 +7178,13 @@ packages: timestamp: 1733195786147 - kind: conda name: pydantic - version: 2.10.2 + version: 2.10.3 build: pyh3cfb1c2_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.2-pyh3cfb1c2_0.conda - sha256: 47368f0eeb63b2dd4c9c54ff35b216d01ae1c27b90d3c7a2066ef8e005f32103 - md5: e661b732b4d7514ace55a01873f03201 + url: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.3-pyh3cfb1c2_0.conda + sha256: cac9eebd3d5f8d8a497a9025d756257ddc75b8b3393e6737cb45077bd744d4f8 + md5: 194ef7f91286978521350f171b117f01 depends: - annotated-types >=0.6.0 - pydantic-core 2.27.1 @@ -7187,8 +7193,8 @@ packages: - typing_extensions >=4.12.2 license: MIT license_family: MIT - size: 316818 - timestamp: 1732689481710 + size: 317037 + timestamp: 1733316963547 - kind: conda name: pydantic-core version: 2.27.1 @@ -7269,18 +7275,19 @@ packages: - kind: conda name: pygments version: 2.18.0 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_0.conda - sha256: 78267adf4e76d0d64ea2ffab008c501156c108bb08fecb703816fb63e279780b - md5: b7f5c092b8f9800150d998a71b76d5a1 + url: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_1.conda + sha256: 0d6133545f268b2b89c2617c196fc791f365b538d4057ecd636d658c3b1e885d + md5: b38dc0206e2a530e5c2cf11dc086b31a depends: - - python >=3.8 + - python >=3.9 license: BSD-2-Clause license_family: BSD - size: 879295 - timestamp: 1714846885370 + size: 876700 + timestamp: 1733221731178 - kind: conda name: pyinstrument version: 5.0.0 @@ -7335,20 +7342,20 @@ packages: - kind: conda name: pysocks version: 1.7.1 - build: pyha2e5f31_6 - build_number: 6 + build: pyha55dd90_7 + build_number: 7 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2 - sha256: a42f826e958a8d22e65b3394f437af7332610e43ee313393d1cf143f0a2d274b - md5: 2a7de29fb590ca14b5243c4c812c8025 + url: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda + sha256: ba3b032fa52709ce0d9fd388f63d330a026754587a2f461117cac9ab73d8d0d8 + md5: 461219d1a5bd61342293efa2c0c90eac depends: - __unix - - python >=3.8 + - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 18981 - timestamp: 1661604969727 + size: 21085 + timestamp: 1733217331982 - kind: conda name: python version: 3.11.10 @@ -7453,23 +7460,25 @@ packages: - python >=3.9 - six >=1.5 license: Apache-2.0 + license_family: APACHE size: 222505 timestamp: 1733215763718 - kind: conda name: python-dotenv version: 1.0.1 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_0.conda - sha256: 2d4c80364f03315d606a50eddd493dbacc078e21412c2462c0f781eec49b572c - md5: c2997ea9360ac4e015658804a7a84f94 + url: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda + sha256: 99713f6b534fef94995c6c16fd21d59f3548784e9111775d692bdc7c44678f02 + md5: e5c6ed218664802d305e79cc2d4491de depends: - - python >=3.8 + - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 24278 - timestamp: 1706018281544 + size: 24215 + timestamp: 1733243277223 - kind: conda name: python-json-logger version: 2.0.7 @@ -7488,33 +7497,35 @@ packages: - kind: conda name: python-multipart version: 0.0.19 - build: pyhff2d567_0 + build: pyhff2d567_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_0.conda - sha256: ff5964cd5eafc118f9d9a15fd31cd88a7ecc756ef83b6095c69b1891a53e2177 - md5: fe524346d3a9aa0aaf353dc39f7d1715 + url: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_1.conda + sha256: e6f6bc3d2a51f45ca26d556c5a416efdacf49a918fefcd0b7c340121e608aa5f + md5: c74333aa447ed2b94d49e5db23da5de6 depends: - python >=3.9 license: Apache-2.0 license_family: Apache - size: 27780 - timestamp: 1733062326577 + size: 27768 + timestamp: 1733323160772 - kind: conda name: python-tzdata version: '2024.2' - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_0.conda - sha256: fe3f62ce2bc714bdaa222ab3f0344a2815ad9e853c6df38d15c9f25de8a3a6d4 - md5: 986287f89929b2d629bd6ef6497dc307 + url: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_1.conda + sha256: 57c9a02ec25926fb48edca59b9ede107823e5d5c473b94a0e05cc0b9a193a642 + md5: c0def296b2f6d2dd7b030c2a7f66bb1f depends: - - python >=3.6 + - python >=3.9 license: Apache-2.0 license_family: APACHE - size: 142527 - timestamp: 1727140688093 + size: 142235 + timestamp: 1733235414217 - kind: conda name: python-xxhash version: 3.5.0 @@ -7912,6 +7923,7 @@ packages: constrains: - chardet >=3.0.2,<6 license: Apache-2.0 + license_family: APACHE size: 58723 timestamp: 1733217126197 - kind: conda @@ -8039,18 +8051,19 @@ packages: - kind: conda name: shellingham version: 1.5.4 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_0.conda - sha256: 3c49a0a101c41b7cf6ac05a1872d7a1f91f1b6d02eecb4a36b605a19517862bb - md5: d08db09a552699ee9e7eec56b4eb3899 + url: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda + sha256: 0557c090913aa63cdbe821dbdfa038a321b488e22bc80196c4b3b1aace4914ef + md5: 7c3c2a0f3ebdea2bbc35538d162b43bf depends: - - python >=3.7 + - python >=3.9 license: MIT license_family: MIT - size: 14568 - timestamp: 1698144516278 + size: 14462 + timestamp: 1733301007770 - kind: conda name: six version: 1.16.0 @@ -8115,18 +8128,19 @@ packages: - kind: conda name: sniffio version: 1.3.1 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_0.conda - sha256: bc12100b2d8836b93c55068b463190505b8064d0fc7d025e89f20ebf22fe6c2b - md5: 490730480d76cf9c8f8f2849719c6e2b + url: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda + sha256: c2248418c310bdd1719b186796ae50a8a77ce555228b6acd32768e2543a15012 + md5: bf7a226e58dfb8346c70df36065d86c9 depends: - - python >=3.7 + - python >=3.9 license: Apache-2.0 license_family: Apache - size: 15064 - timestamp: 1708953086199 + size: 15019 + timestamp: 1733244175724 - kind: conda name: sse-starlette version: 2.1.3 @@ -8381,58 +8395,58 @@ packages: timestamp: 1731981383171 - kind: conda name: typer - version: 0.14.0 + version: 0.15.0 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/typer-0.14.0-pyhd8ed1ab_0.conda - sha256: 4d7f1c77b928a66ae3b0089e288e7fdeb826bf0dabba9799488017e6a9b84f38 - md5: 9eb8a3f5d36ca3e7f686e7a5d85aff72 + url: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.0-pyhd8ed1ab_0.conda + sha256: 90503b2a518434fb554d621cc4e1c533dc524ef1c0f63fde39fdf4328163a0c8 + md5: cf9393f5733c7277b1a5f79145f8485b depends: - python >=3.9 - - typer-slim-standard 0.14.0 hd8ed1ab_0 + - typer-slim-standard 0.15.0 hd8ed1ab_0 license: MIT license_family: MIT - size: 54637 - timestamp: 1732848384457 + size: 56455 + timestamp: 1733279871129 - kind: conda name: typer-slim - version: 0.14.0 + version: 0.15.0 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.14.0-pyhd8ed1ab_0.conda - sha256: 883969c10b9837bb18a340ffb01a984ef6b4655fc72ff05aeb7bc659c9a1229d - md5: 3674a4cd7fd8e8a7277af2b30965925d + url: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.0-pyhd8ed1ab_0.conda + sha256: f6a85917292aaea0577792090ac74dbdb0280a656934746f715bfa9feaa9b2dc + md5: 629fef89115de5a907fb9765cdd45b26 depends: - click >=8.0.0 - python >=3.9 - typing_extensions >=3.7.4.3 constrains: + - typer >=0.15.0,<0.15.1.0a0 - shellingham >=1.3.0 - rich >=10.11.0 - - typer >=0.14.0,<0.14.1.0a0 license: MIT license_family: MIT - size: 43504 - timestamp: 1732848371202 + size: 43480 + timestamp: 1733279858535 - kind: conda name: typer-slim-standard - version: 0.14.0 + version: 0.15.0 build: hd8ed1ab_0 subdir: noarch noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.14.0-hd8ed1ab_0.conda - sha256: 0e09e393e75028a0e827c7177e0fb1a070c87756e47b5ae6418423e22b10dfac - md5: 9e1e1f9c84add9637ca715f8fb71a83f + url: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.0-hd8ed1ab_0.conda + sha256: df52ddd24439aff384a82d00a751947b12127ab571f4aa674a1053c703ce8ed0 + md5: a4746fc9efbff02c1a288d8fcd8ffba9 depends: - rich - shellingham - - typer-slim 0.14.0 pyhd8ed1ab_0 + - typer-slim 0.15.0 pyhd8ed1ab_0 license: MIT license_family: MIT - size: 49180 - timestamp: 1732848371718 + size: 50259 + timestamp: 1733279859017 - kind: conda name: typing-extensions version: 4.12.2 @@ -8500,44 +8514,46 @@ packages: - kind: conda name: uvicorn version: 0.32.1 - build: pyh31011fe_0 + build: pyh31011fe_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_0.conda - sha256: a310c494c817a9f6c985fc6d2772acb953a20170d03b0eabfae0e9d8c76c97ee - md5: fa77fc8110207b3bfc5ccc9d316744f4 + url: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_1.conda + sha256: ad1d8470c629679ea3db52351a522ae44eee0111d8d8b254e8c863c4a292e5c4 + md5: 7832640e5e302059e844d56f410487a6 depends: - __unix - click >=7.0 - h11 >=0.8 - - python >=3.8 + - python >=3.9 - typing_extensions >=4.0 license: BSD-3-Clause license_family: BSD - size: 49393 - timestamp: 1732185242260 + size: 49340 + timestamp: 1733332048141 - kind: conda name: uvicorn-standard version: 0.32.1 - build: h31011fe_0 + build: h31011fe_1 + build_number: 1 subdir: noarch noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_0.conda - sha256: 52545f7c88a7c779376900de5f9d81ce36738cd8770b543e89592ad7d1003c40 - md5: 49c2820e0f39cb710becd856ff14d683 + url: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_1.conda + sha256: 378903c51b2b1136fa48b01c0a2a8dd4634136d038a4a56561c0856fdcbfcabe + md5: 0c233d5c71d398cf01d0281e72194005 depends: - __unix - httptools >=0.5.0 - python-dotenv >=0.13 - pyyaml >=5.1 - - uvicorn 0.32.1 pyh31011fe_0 + - uvicorn 0.32.1 pyh31011fe_1 - uvloop >=0.14.0,!=0.15.0,!=0.15.1 - watchfiles >=0.13 - websockets >=10.4 license: BSD-3-Clause license_family: BSD - size: 7136 - timestamp: 1732185243035 + size: 7094 + timestamp: 1733332049165 - kind: conda name: uvloop version: 0.21.0 @@ -8885,41 +8901,142 @@ packages: timestamp: 1689951608120 - kind: conda name: xz - version: 5.2.6 - build: h166bdaf_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/xz-5.2.6-h166bdaf_0.tar.bz2 - sha256: 03a6d28ded42af8a347345f82f3eebdd6807a08526d47899a42d62d319609162 - md5: 2161070d867d1b1204ea749c8eec4ef0 + version: 5.6.3 + build: h2dbfc1b_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-5.6.3-h2dbfc1b_0.conda + sha256: 65df445d131d1695c45a95d102b8ffaaed5a387b4f97e209ba7d8fa0b7599dec + md5: da081cb850e57b0a0a242bab9087fbeb depends: - - libgcc-ng >=12 - license: LGPL-2.1 and GPL-2.0 - size: 418368 - timestamp: 1660346797927 + - libgcc >=13 + - liblzma 5.6.3 h86ecc28_0 + - liblzma-devel 5.6.3 h86ecc28_0 + - xz-gpl-tools 5.6.3 h2dbfc1b_0 + - xz-tools 5.6.3 h86ecc28_0 + license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later + size: 23448 + timestamp: 1733324353894 - kind: conda name: xz - version: 5.2.6 - build: h57fd34a_0 + version: 5.6.3 + build: h9a6d368_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/xz-5.2.6-h57fd34a_0.tar.bz2 - sha256: 59d78af0c3e071021cfe82dc40134c19dab8cdf804324b62940f5c8cd71803ec - md5: 39c6b54e94014701dd157f4f576ed211 - license: LGPL-2.1 and GPL-2.0 - size: 235693 - timestamp: 1660346961024 + url: https://conda.anaconda.org/conda-forge/osx-arm64/xz-5.6.3-h9a6d368_0.conda + sha256: 25d515d97f9a147240933b7529dbe10f3ee1c87425cfa3d5faa5115f78ebfe70 + md5: 86674fa432df20be6feea4bd8fec0668 + depends: + - __osx >=11.0 + - liblzma 5.6.3 h39f12f2_0 + - liblzma-devel 5.6.3 h39f12f2_0 + - xz-gpl-tools 5.6.3 h9a6d368_0 + - xz-tools 5.6.3 h39f12f2_0 + license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later + size: 23570 + timestamp: 1733321627935 - kind: conda name: xz - version: 5.2.6 - build: h9cdd2b7_0 + version: 5.6.3 + build: hbcc6ac9_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/xz-5.6.3-hbcc6ac9_0.conda + sha256: 32cd43b293f1e6498831c499195afc5693c2bd604244a08fe8dd7107a20757d2 + md5: 504333561007fbf0af129f0cee4f5652 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - liblzma 5.6.3 hb9d3cd8_0 + - liblzma-devel 5.6.3 hb9d3cd8_0 + - xz-gpl-tools 5.6.3 hbcc6ac9_0 + - xz-tools 5.6.3 hb9d3cd8_0 + license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later + size: 23435 + timestamp: 1733321352996 +- kind: conda + name: xz-gpl-tools + version: 5.6.3 + build: h2dbfc1b_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-5.2.6-h9cdd2b7_0.tar.bz2 - sha256: 93f58a7b393adf41fa007ac8c55978765e957e90cd31877ece1e5a343cb98220 - md5: 83baad393a31d59c20b63ba4da6592df + url: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-gpl-tools-5.6.3-h2dbfc1b_0.conda + sha256: d99ba29095b47891e3c63d04832768c3bfe4ad49e7bb4e163ca18962b8b3f5ca + md5: b0245c3aad4592510bb0c19212c1bded depends: - - libgcc-ng >=12 - license: LGPL-2.1 and GPL-2.0 - size: 440555 - timestamp: 1660348056328 + - libgcc >=13 + - liblzma 5.6.3 h86ecc28_0 + license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later + size: 33355 + timestamp: 1733324193303 +- kind: conda + name: xz-gpl-tools + version: 5.6.3 + build: h9a6d368_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/xz-gpl-tools-5.6.3-h9a6d368_0.conda + sha256: 44a0738b66573d0e7def712ef2aa98f628b17ee4d1034ffe71c3ff36f68d12dd + md5: 9e4519aef300966683764ccbbaa89da4 + depends: + - __osx >=11.0 + - liblzma 5.6.3 h39f12f2_0 + license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later + size: 33343 + timestamp: 1733321610703 +- kind: conda + name: xz-gpl-tools + version: 5.6.3 + build: hbcc6ac9_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/xz-gpl-tools-5.6.3-hbcc6ac9_0.conda + sha256: e9829eb1207239198f03eba61d17d0f946bbaa7602f7ee019efe72ccb26525db + md5: e4f1e59ca2971e8d0fdde0928c3f7b7f + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - liblzma 5.6.3 hb9d3cd8_0 + license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later + size: 33299 + timestamp: 1733321343126 +- kind: conda + name: xz-tools + version: 5.6.3 + build: h39f12f2_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/xz-tools-5.6.3-h39f12f2_0.conda + sha256: be3c74ffe4a7a5852108dafe40ef41858ca1ea911c62b08b5e4dd8f641d23f22 + md5: 10855380caa384c8388b93ef29c7bd04 + depends: + - __osx >=11.0 + - liblzma 5.6.3 h39f12f2_0 + license: 0BSD AND LGPL-2.1-or-later + size: 81129 + timestamp: 1733321582233 +- kind: conda + name: xz-tools + version: 5.6.3 + build: h86ecc28_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-tools-5.6.3-h86ecc28_0.conda + sha256: 1d82a745cd60e674d18a0ce30ba13d72616261b1831530f480599ffc991c8476 + md5: 0136c7aa78b4d887c9fb6dbf39749778 + depends: + - libgcc >=13 + - liblzma 5.6.3 h86ecc28_0 + license: 0BSD AND LGPL-2.1-or-later + size: 95353 + timestamp: 1733324033407 +- kind: conda + name: xz-tools + version: 5.6.3 + build: hb9d3cd8_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/xz-tools-5.6.3-hb9d3cd8_0.conda + sha256: 7d03d4c0d18dbac0ebb9550890fddeb4d21a375709339a6bdedd0104bc4f4967 + md5: 40270c1e058fd1d31caee8bf2c68fc3a + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - liblzma 5.6.3 hb9d3cd8_0 + license: 0BSD AND LGPL-2.1-or-later + size: 89832 + timestamp: 1733321333192 - kind: conda name: yaml version: 0.2.5 diff --git a/examples/notebooks/magic.lock b/examples/notebooks/magic.lock index 5d068575a5..acfb589cf2 100644 --- a/examples/notebooks/magic.lock +++ b/examples/notebooks/magic.lock @@ -8,16 +8,15 @@ environments: linux-64: - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.9-py312h178313f_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/argon2-cffi-bindings-21.2.0-py312h66e93f0_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/asgiref-3.8.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-hb88c0a9_10.conda @@ -28,20 +27,20 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.1-hab05fe4_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.2-hdeadb07_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h7bd072d_8.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.3-h3a84f74_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.4-h3a84f74_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.1-hf42f96a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-hf42f96a_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.6-hdec8b0f_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.6-h159bff8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.449-h5558e3c_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.10.0-h113e628_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.13.0-h3cf044e_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-common-cpp-12.8.0-h736e048_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-files-datalake-cpp-12.12.0-ha633028_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.16.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.16.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/backoff-2.2.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.12.3-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.12.3-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py312h2ec8cdc_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.3-hb9d3cd8_1.conda @@ -50,49 +49,49 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.8.30-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py312h06ac9bb_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.9-py312h2ec8cdc_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.1.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.1.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/entrypoints-0.4-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/entrypoints-0.4-pyhd8ed1ab_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/executing-2.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.5-pyhff2d567_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/filelock-3.16.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_0.tar.bz2 + - 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 - conda: https://conda.anaconda.org/conda-forge/linux-64/frozenlist-1.5.0-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gflags-2.2.2-h5888daf_1005.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/glog-0.7.1-hbabe93e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/httptools-0.6.4-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-7.0.2-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.4.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.4.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh3099207_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-8.30.0-pyh707e725_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.10.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.10.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/jsonpointer-3.0.0-py312h7900ff3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2024.10.1-pyhd8ed1ab_0.conda @@ -103,8 +102,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.10.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.14.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.3.1-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.3.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda @@ -140,6 +139,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-hd590300_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-25_linux64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.3-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-devel-5.6.3-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.28-pthreads_h94d23a6_1.conda @@ -163,24 +164,24 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.5-h064dc61_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.9.4-hcb278e6_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_0.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.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120306-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120306-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120306-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120306-release.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.0.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120306-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120416-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120416-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120416-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120416-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.dev2024120416-release.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/multiprocess-0.70.15-py312h98912ed_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.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 - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-he02047a_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.2-h488ebb8_0.conda @@ -189,50 +190,46 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.28.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-prometheus-1.12.0rc1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-0.49b2-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-asgi-0.49b2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-fastapi-0.49b2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh10f6f8f_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-util-http-0.49b2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/orc-2.0.3-he039a57_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.2-py312h1d6d2e6_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-py_1003.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-11.0.0-py312h7b63e92_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pip-24.3.1-pyh8b19718_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.48-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.48-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.0-py312h66e93f0_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/protobuf-5.28.2-py312h2ec8cdc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/psutil-6.1.0-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd3deb0d_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-18.1.0-py312h7900ff3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-18.1.0-py312h01725c0_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.2-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.3-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.27.1-py312h12e396e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.6.1-pyh3cfb1c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyinstrument-5.0.0-py312h66e93f0_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.7-hc5c86c4_0_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python-xxhash-3.5.0-py312h66e93f0_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.2-pyhd8ed1ab_1.conda @@ -246,15 +243,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_0.tar.bz2 - 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_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.21.0-py312h12e396e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.22.1-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 - - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh0d859eb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh0d859eb_1.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_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-ha2e4443_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.1.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.2-pyhd8ed1ab_0.conda @@ -263,28 +260,28 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.20.4-py312h8360d73_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.46.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.14.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.14.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.14.0-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20241003-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20241003-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/uvloop-0.21.0-py312h66e93f0_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/watchfiles-1.0.0-py312h12e396e_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.8.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.8.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.8.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/websockets-14.1-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wheel-0.45.1-pyhd8ed1ab_1.conda @@ -292,7 +289,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.11-hb9d3cd8_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xxhash-0.8.2-hd590300_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-5.2.6-h166bdaf_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-5.6.3-hbcc6ac9_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-gpl-tools-5.6.3-hbcc6ac9_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-tools-5.6.3-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.18.0-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda @@ -301,16 +300,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda linux-aarch64: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.9-py312hcc812fe_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/argon2-cffi-bindings-21.2.0-py312hb2c0f52_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/asgiref-3.8.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-hac900a4_10.conda @@ -321,20 +319,20 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.1-hf4e072c_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.2-h10eb1bc_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h28a5e6a_8.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.3-h29aef15_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.4-h29aef15_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.1-h4c7db1d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h4c7db1d_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.6-h7939e66_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.6-hffbb33f_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.449-h7085e57_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-core-cpp-1.14.0-h1887c18_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-identity-cpp-1.10.0-h47b0b28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-blobs-cpp-12.13.0-h185ecfd_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-common-cpp-12.8.0-h1b94036_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-files-datalake-cpp-12.12.0-h37d6d07_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.16.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.16.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/backoff-2.2.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.12.3-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.12.3-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/brotli-python-1.1.0-py312h6f74592_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h68df207_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/c-ares-1.34.3-h86ecc28_1.conda @@ -343,50 +341,50 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.8.30-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cffi-1.17.1-py312hac81daf_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/debugpy-1.8.9-py312h6f74592_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.1.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.1.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/entrypoints-0.4-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/entrypoints-0.4-pyhd8ed1ab_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/executing-2.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.5-pyhff2d567_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/filelock-3.16.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_0.tar.bz2 + - 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 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/frozenlist-1.5.0-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gflags-2.2.2-h5ad3122_1005.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/glog-0.7.1-h468a4a4_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/httptools-0.6.4-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-7.0.2-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.4.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.4.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh3099207_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-8.30.0-pyh707e725_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.10.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.10.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/jsonpointer-3.0.0-py312h996f985_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2024.10.1-pyhd8ed1ab_0.conda @@ -397,8 +395,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.10.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.14.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.3.1-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.3.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/keyutils-1.6.1-h4e544f5_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/krb5-1.21.3-h50a48e9_0.conda @@ -434,6 +432,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libiconv-1.17-h31becfc_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libjpeg-turbo-3.0.0-h31becfc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-25_linuxaarch64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.3-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-devel-5.6.3-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnghttp2-1.64.0-hc8609a4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.28-pthreads_h9d3fd7e_1.conda @@ -457,24 +457,24 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.5-hf4efe5d_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.9.4-hd600fc2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.2-py312h74ce7d3_0.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.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120306-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120306-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120306-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120306-release.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.0.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120306-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120416-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120416-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120416-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120416-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.dev2024120416-release.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/multiprocess-0.70.15-py312hdd3e373_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.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 - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-hcccb83c_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openjpeg-2.5.2-h0d9d63b_0.conda @@ -483,50 +483,46 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.28.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-prometheus-1.12.0rc1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-0.49b2-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-asgi-0.49b2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-fastapi-0.49b2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh10f6f8f_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-util-http-0.49b2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/orc-2.0.3-h90de224_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pandas-2.2.2-py312h14eacfc_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-py_1003.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pillow-11.0.0-py312h5ab5af3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pip-24.3.1-pyh8b19718_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.48-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.48-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.2.0-py312hb2c0f52_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/protobuf-5.28.2-py312h6f74592_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/psutil-6.1.0-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pthread-stubs-0.4-h86ecc28_1002.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd3deb0d_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-18.1.0-py312h8025657_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-18.1.0-py312h66f7834_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.2-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.3-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pydantic-core-2.27.1-py312h8cbf658_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.6.1-pyh3cfb1c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyinstrument-5.0.0-py312hb2c0f52_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.7-h5d932e8_0_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-xxhash-3.5.0-py312h52516f5_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.12-5_cp312.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.2-pyhd8ed1ab_1.conda @@ -540,15 +536,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_0.tar.bz2 - 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_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/rpds-py-0.21.0-py312ha4e36d7_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/rpds-py-0.22.1-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 - - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh0d859eb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh0d859eb_1.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_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-h1088aeb_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.1.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.2-pyhd8ed1ab_0.conda @@ -557,28 +553,28 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.20.4-py312ha0d6ea1_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py312h52516f5_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.46.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.14.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.14.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.14.0-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20241003-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20241003-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/uvloop-0.21.0-py312hb2c0f52_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/watchfiles-1.0.0-py312h8cbf658_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.8.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.8.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.8.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/websockets-14.1-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wheel-0.45.1-pyhd8ed1ab_1.conda @@ -586,7 +582,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxau-1.0.11-h86ecc28_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxdmcp-1.1.5-h57736b2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xxhash-0.8.2-h31becfc_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-5.2.6-h9cdd2b7_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-5.6.3-h2dbfc1b_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-gpl-tools-5.6.3-h2dbfc1b_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-tools-5.6.3-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yaml-0.2.5-hf897c2e_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.18.0-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zeromq-4.3.5-h5efb499_7.conda @@ -594,17 +592,16 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstandard-0.23.0-py312hb698573_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.6-h02f22dd_0.conda osx-arm64: - - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.9-py312h998013c_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/appnope-0.1.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/appnope-0.1.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/argon2-cffi-bindings-21.2.0-py312h024a12e_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/asgiref-3.8.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-h9b725a8_10.conda @@ -615,20 +612,20 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.1-hf483d09_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.2-h39f8ad8_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h68a0d7e_8.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.3-h840aca7_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.4-h840aca7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.1-h5d7ee29_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-h5d7ee29_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.6-ha226bf8_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.6-h8474b10_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.449-h3b64406_4.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.14.0-hd50102c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.10.0-hc602bab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-blobs-cpp-12.13.0-h7585a09_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-common-cpp-12.8.0-h9ca1f76_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-files-datalake-cpp-12.12.0-hcdd55da_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.16.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.16.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/backoff-2.2.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.12.3-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.12.3-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py312hde4cb15_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.3-h5505292_1.conda @@ -637,49 +634,49 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.8.30-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.1-py312h0fad829_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/debugpy-1.8.9-py312hd8f9ff3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.1.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.1.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/entrypoints-0.4-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/entrypoints-0.4-pyhd8ed1ab_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/executing-2.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.5-pyhff2d567_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/filelock-3.16.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_0.tar.bz2 + - 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 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/frozenlist-1.5.0-py312h0bf5046_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gflags-2.2.2-hf9b8971_1005.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/glog-0.7.1-heb240a5_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/httptools-0.6.4-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-7.0.2-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.4.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.4.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh57ce528_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-8.30.0-pyh707e725_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.10.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.10.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/jsonpointer-3.0.0-py312h81bd7bf_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2024.10.1-pyhd8ed1ab_0.conda @@ -690,8 +687,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.10.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.14.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.3.1-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.3.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.16-ha0e7c42_0.conda @@ -708,7 +705,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-25_osxarm64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcrc32c-1.1.2-hbdafb3b_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.10.1-h13a7ad3_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.4-ha82da77_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.5-ha82da77_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.22-hd74edd7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20191231-hc8eb9b7_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libev-4.33-h93a5062_2.conda @@ -723,6 +720,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.17-h0d3ecfb_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.0.0-hb547adb_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-25_osxarm64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.3-h39f12f2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-devel-5.6.3-h39f12f2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.64.0-h6d7220d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.28-openmp_hf332438_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-h5168bdf_2_cpu.conda @@ -742,24 +741,24 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.4-hdb05f8b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.9.4-hb7217d7_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312ha0ccf2a_0.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.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120306-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120306-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120306-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120306-release.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.0.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120306-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120416-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120416-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120416-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120416-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.dev2024120416-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_0.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 - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h7bae524_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openjpeg-2.5.2-h9f1df11_0.conda @@ -768,52 +767,48 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.28.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-prometheus-1.12.0rc1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-0.49b2-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-asgi-0.49b2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-fastapi-0.49b2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh10f6f8f_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-util-http-0.49b2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/orc-2.0.3-h121fd32_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.2-py312h8ae5369_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-py_1003.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-11.0.0-py312haf37ca6_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pip-24.3.1-pyh8b19718_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.48-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.48-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.0-py312h024a12e_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/protobuf-5.28.2-py312hf02c72a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/psutil-6.1.0-py312h0bf5046_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pthread-stubs-0.4-hd74edd7_1002.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd3deb0d_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-18.1.0-py312h1f38498_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-18.1.0-py312hc40f475_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.2-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.3-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.27.1-py312hcd83bfe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.6.1-pyh3cfb1c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyinstrument-5.0.0-py312h0bf5046_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-core-10.3.2-py312hb9d441b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-framework-cocoa-10.3.2-py312hb9d441b_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.7-h739c21a_0_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-xxhash-3.5.0-py312h024a12e_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-5_cp312.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.2-pyhd8ed1ab_1.conda @@ -827,14 +822,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_0.tar.bz2 - 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_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/rpds-py-0.21.0-py312hcd83bfe_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/rpds-py-0.22.1-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_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh31c8845_1.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_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-hd02b534_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.1.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.2-pyhd8ed1ab_0.conda @@ -843,28 +838,28 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.20.4-py312hf3e4074_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.46.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.14.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.14.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.14.0-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20241003-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20241003-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/uvloop-0.21.0-py312h0bf5046_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/watchfiles-1.0.0-py312hcd83bfe_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.8.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.8.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.8.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/websockets-14.1-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wheel-0.45.1-pyhd8ed1ab_1.conda @@ -872,7 +867,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxau-1.0.11-hd74edd7_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxdmcp-1.1.5-hd74edd7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xxhash-0.8.2-hb547adb_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xz-5.2.6-h57fd34a_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xz-5.6.3-h9a6d368_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xz-gpl-tools-5.6.3-h9a6d368_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xz-tools-5.6.3-h39f12f2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.18.0-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda @@ -929,18 +926,18 @@ packages: - kind: conda name: aiohappyeyeballs version: 2.4.4 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_0.conda - sha256: 4282838f468f75f0c1746cbc6cdd3365b9f6d449bf5af8a74b234e396d847bf0 - md5: 8d6f8a679aa0272ba8d6092ce4824870 + url: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_1.conda + sha256: 95d4713e49ea92ae50cf42393683ede706b7875af5f7cb14c253438180afa732 + md5: 296b403617bafa89df4971567af79013 depends: - python >=3.9 license: PSF-2.0 - license_family: PSF - size: 19310 - timestamp: 1733135584059 + size: 19351 + timestamp: 1733332029649 - kind: conda name: aiohttp version: 3.11.9 @@ -1016,35 +1013,36 @@ packages: - kind: conda name: aiosignal version: 1.3.1 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_0.tar.bz2 - sha256: 575c742e14c86575986dc867463582a970463da50b77264cdf54df74f5563783 - md5: d1e1eb7e21a9e2c74279d87dafb68156 + url: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_1.conda + sha256: 9c7b639ea0cc796ef46c57fa104ec1f2ed53cd11c063518869a5a9d7d3b0b2db + md5: d736bd1b8904d7593dce4893e58a7881 depends: - frozenlist >=1.1.0 - - python >=3.7 + - python >=3.9 license: Apache-2.0 - license_family: APACHE - size: 12730 - timestamp: 1667935912504 + size: 13157 + timestamp: 1733332198143 - kind: conda name: annotated-types version: 0.7.0 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_0.conda - sha256: 668f0825b6c18e4012ca24a0070562b6ec801ebc7008228a428eb52b4038873f - md5: 7e9f4612544c8edbfd6afad17f1bd045 + url: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda + sha256: e0ea1ba78fbb64f17062601edda82097fcf815012cf52bb704150a2668110d48 + md5: 2934f256a8acfe48f6ebb4fce6cde29c depends: - - python >=3.7 + - python >=3.9 - typing-extensions >=4.0.0 license: MIT license_family: MIT - size: 18235 - timestamp: 1716290348421 + size: 18074 + timestamp: 1733247158254 - kind: conda name: anyio version: 4.6.2.post1 @@ -1070,37 +1068,39 @@ packages: - kind: conda name: appnope version: 0.1.4 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/appnope-0.1.4-pyhd8ed1ab_0.conda - sha256: 45ae2d41f4a4dcf8707633d3d7ae376fc62f0c09b1d063c3049c3f6f8c911670 - md5: cc4834a9ee7cc49ce8d25177c47b10d8 + url: https://conda.anaconda.org/conda-forge/noarch/appnope-0.1.4-pyhd8ed1ab_1.conda + sha256: 8f032b140ea4159806e4969a68b4a3c0a7cab1ad936eb958a2b5ffe5335e19bf + md5: 54898d0f524c9dee622d44bbb081a8ab depends: - - python >=3.7 + - python >=3.9 license: BSD-2-Clause license_family: BSD - size: 10241 - timestamp: 1707233195627 + size: 10076 + timestamp: 1733332433806 - kind: conda name: argon2-cffi version: 23.1.0 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_0.conda - sha256: 130766446f5507bd44df957b6b5c898a8bd98f024bb426ed6cb9ff1ad67fc677 - md5: 3afef1f55a1366b4d3b6a0d92e2235e4 + url: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_1.conda + sha256: 7af62339394986bc470a7a231c7f37ad0173ffb41f6bc0e8e31b0be9e3b9d20f + md5: a7ee488b71c30ada51c48468337b85ba depends: - argon2-cffi-bindings - - python >=3.7 + - python >=3.9 - typing-extensions constrains: - argon2_cffi ==999 license: MIT license_family: MIT - size: 18602 - timestamp: 1692818472638 + size: 18594 + timestamp: 1733311166338 - kind: conda name: argon2-cffi-bindings version: 21.2.0 @@ -1176,39 +1176,23 @@ packages: size: 100096 timestamp: 1696129131844 - kind: conda - name: asgiref - version: 3.8.1 + name: asttokens + version: 3.0.0 build: pyhd8ed1ab_1 build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/asgiref-3.8.1-pyhd8ed1ab_1.conda - sha256: c8d51a32f3530e3ca176d8f7bf5621c68c7c1c03fe9cc5c3c49d8ba4a1248f43 - md5: 21187c8276f87b6aedfe63c267a6eed7 + url: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda + sha256: 93b14414b3b3ed91e286e1cbe4e7a60c4e1b1c730b0814d1e452a8ac4b9af593 + md5: 8f587de4bcf981e26228f268df374a9b depends: - python >=3.9 - - typing_extensions >=4 - license: BSD-3-Clause - license_family: BSD - size: 26436 - timestamp: 1733215704904 -- kind: conda - name: asttokens - version: 3.0.0 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_0.conda - sha256: 92072fde775e62c427d05a76784404f6a2d7ccf232aa05a95a33d86c943614b5 - md5: 454950e9fa3a0c59880de0ac7a6bc8c4 - depends: - - python >=3.8 constrains: - astroid >=2,<4 license: Apache-2.0 license_family: Apache - size: 28137 - timestamp: 1733175735190 + size: 28206 + timestamp: 1733250564754 - kind: conda name: async-lru version: 2.0.4 @@ -1672,12 +1656,12 @@ packages: timestamp: 1731734668760 - kind: conda name: aws-c-s3 - version: 0.7.3 + version: 0.7.4 build: h29aef15_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.3-h29aef15_0.conda - sha256: 57aa8b28890efd82c479e902125ea8a37782b163f13ae0856b259ec527a52879 - md5: e09cd76e50ce09ec14c17109da5c6502 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.4-h29aef15_0.conda + sha256: 396517aca6bdbe2e3d8a6275b33865eeb0d09f0dd379c3cc55c36f6004b17f2a + md5: 1046cf15a47f06a0af07f674e477d807 depends: - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.0,<0.8.1.0a0 @@ -1689,16 +1673,16 @@ packages: - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 117467 - timestamp: 1733098782199 + size: 117398 + timestamp: 1733299233564 - kind: conda name: aws-c-s3 - version: 0.7.3 + version: 0.7.4 build: h3a84f74_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.3-h3a84f74_0.conda - sha256: db17a15e5e01f19700bf9be961e1c4e002ccf8dc4d9caa3a24a0ab54f00f2c2d - md5: 171850b890600458ae6c990e78f1fa23 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.4-h3a84f74_0.conda + sha256: 91c6f7aa3dd230bcefe2654469b0704c2bdb2574e6d0d7c56cf9e9071f44cc26 + md5: 7d029b9aa9decf4c0fb8a9a8940c9906 depends: - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 @@ -1711,16 +1695,16 @@ packages: - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 113536 - timestamp: 1733098705479 + size: 113660 + timestamp: 1733299194447 - kind: conda name: aws-c-s3 - version: 0.7.3 + version: 0.7.4 build: h840aca7_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.3-h840aca7_0.conda - sha256: 18972a91f32f6b0edb58eb71cb2f5b56654183fd6ba611b3b0d6cc484017aeff - md5: 893e668d99fa4b31eef9dc5b19c21b9a + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.4-h840aca7_0.conda + sha256: 564bbb781c1aebfcdda43a0e82f447e34de1764c57ebc1733fe6437248f5b7c9 + md5: 02f78a084e101dee30c794f963549de4 depends: - __osx >=11.0 - aws-c-auth >=0.8.0,<0.8.1.0a0 @@ -1731,8 +1715,8 @@ packages: - aws-checksums >=0.2.2,<0.2.3.0a0 license: Apache-2.0 license_family: Apache - size: 97145 - timestamp: 1733098874599 + size: 97136 + timestamp: 1733299356527 - kind: conda name: aws-c-sdkutils version: 0.2.1 @@ -1834,13 +1818,14 @@ packages: - kind: conda name: aws-crt-cpp version: 0.29.6 - build: h7939e66_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.6-h7939e66_1.conda - sha256: 3d0b1996d28a2647ced83ed8052ee331df70b2c1a68fb6db0fe4e743a88be54d - md5: 5e573a52a1cd20f81d7fdf1db4f4583a + build: h159bff8_2 + build_number: 2 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.6-h159bff8_2.conda + sha256: 04ca62caa764bb95f304af8486c1af7c4f76d4ad5204c494edcf86af653d2ad0 + md5: c498e6490834aacf7835c96403862881 depends: + - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.0,<0.8.1.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 @@ -1848,23 +1833,23 @@ packages: - aws-c-http >=0.9.1,<0.9.2.0a0 - aws-c-io >=0.15.2,<0.15.3.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - - aws-c-s3 >=0.7.3,<0.7.4.0a0 + - aws-c-s3 >=0.7.4,<0.7.5.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 283670 - timestamp: 1733150929992 + size: 354822 + timestamp: 1733333950713 - kind: conda name: aws-crt-cpp version: 0.29.6 - build: ha226bf8_1 - build_number: 1 + build: h8474b10_2 + build_number: 2 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.6-ha226bf8_1.conda - sha256: f645e2a8015d8e71ed785c81a14a202ebce2f5dcca8982cd7ec5f8000f9be5c3 - md5: 81da0b5f65ab08e3919d6eadf08b5776 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.6-h8474b10_2.conda + sha256: 5ca9df9516583076ea40129e71b103efaca21ca02f40b59d69485823613cbfba + md5: 54c898f166bcfbe06c2b7ac36360f371 depends: - __osx >=11.0 - aws-c-auth >=0.8.0,<0.8.1.0a0 @@ -1874,24 +1859,23 @@ packages: - aws-c-http >=0.9.1,<0.9.2.0a0 - aws-c-io >=0.15.2,<0.15.3.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - - aws-c-s3 >=0.7.3,<0.7.4.0a0 + - aws-c-s3 >=0.7.4,<0.7.5.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - libcxx >=18 license: Apache-2.0 license_family: Apache - size: 236505 - timestamp: 1733151090562 + size: 235829 + timestamp: 1733334077172 - kind: conda name: aws-crt-cpp version: 0.29.6 - build: hdec8b0f_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.6-hdec8b0f_1.conda - sha256: cd09f1d5d854607ce7acafc76c74e864f296d296e60b54054a10f757ecc3d2dd - md5: 40647232fad98f92be8c6050a7e0c2bd + build: hffbb33f_2 + build_number: 2 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.6-hffbb33f_2.conda + sha256: 5f9490edaddde550cf05861626175b648da73c84bcde61ac2a6a1bf1a8fd6982 + md5: fb8be2af168b63e0b77076a1dc6baa85 depends: - - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.0,<0.8.1.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 @@ -1899,14 +1883,14 @@ packages: - aws-c-http >=0.9.1,<0.9.2.0a0 - aws-c-io >=0.15.2,<0.15.3.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - - aws-c-s3 >=0.7.3,<0.7.4.0a0 + - aws-c-s3 >=0.7.4,<0.7.5.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 354710 - timestamp: 1733150818238 + size: 284031 + timestamp: 1733333955728 - kind: conda name: aws-sdk-cpp version: 1.11.449 @@ -2255,19 +2239,20 @@ packages: - kind: conda name: babel version: 2.16.0 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/babel-2.16.0-pyhd8ed1ab_0.conda - sha256: fce1d78e42665bb26d3f2b45ce9cacf0d9dbe4c1b2db3879a384eadee53c6231 - md5: 6d4e9ecca8d88977147e109fc7053184 + url: https://conda.anaconda.org/conda-forge/noarch/babel-2.16.0-pyhd8ed1ab_1.conda + sha256: f6205d3a62e87447e06e98d911559be0208d824976d77ab092796c9176611fcb + md5: 3e23f7db93ec14c80525257d8affac28 depends: - - python >=3.8 + - python >=3.9 - pytz >=2015.7 license: BSD-3-Clause license_family: BSD - size: 6525614 - timestamp: 1730878929589 + size: 6551057 + timestamp: 1733236466015 - kind: conda name: backoff version: 2.2.1 @@ -2286,35 +2271,37 @@ packages: - kind: conda name: beautifulsoup4 version: 4.12.3 - build: pyha770c72_0 + build: pyha770c72_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.12.3-pyha770c72_0.conda - sha256: 7b05b2d0669029326c623b9df7a29fa49d1982a9e7e31b2fea34b4c9a4a72317 - md5: 332493000404d8411859539a5a630865 + url: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.12.3-pyha770c72_1.conda + sha256: fca842ab7be052eea1037ebee17ac25cc79c626382dd2187b5c6e007b9d9f65f + md5: d48f7e9fdec44baf6d1da416fe402b04 depends: - - python >=3.6 + - python >=3.9 - soupsieve >=1.2 license: MIT license_family: MIT - size: 118200 - timestamp: 1705564819537 + size: 118042 + timestamp: 1733230951790 - kind: conda name: bleach version: 6.2.0 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyhd8ed1ab_0.conda - sha256: 01be7fb5163e7c31356a18c259ddc19a5431b8b974dc65e2427b88c2d30034f3 - md5: 461bcfab8e65c166e297222ae919a2d4 + url: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyhd8ed1ab_1.conda + sha256: ffc8e4e53cd92aec0f0ea0bc9e28f5fd1b1e67bde46b0b298170e6fb78eecce1 + md5: 707af59db75b066217403a8f00c1d826 depends: - python >=3.9 - webencodings license: Apache-2.0 AND MIT license_family: Apache - size: 132652 - timestamp: 1730286301829 + size: 132933 + timestamp: 1733302409510 - kind: conda name: brotli-python version: 1.1.0 @@ -2608,49 +2595,52 @@ packages: - kind: conda name: charset-normalizer version: 3.4.0 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_0.conda - sha256: 1873ac45ea61f95750cb0b4e5e675d1c5b3def937e80c7eebb19297f76810be8 - md5: a374efa97290b8799046df7c5ca17164 + url: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_1.conda + sha256: 63022ee2c6a157a9f980250a66f54bdcdf5abee817348d0f9a74c2441a6fbf0e + md5: 6581a17bba6b948bb60130026404a9d6 depends: - - python >=3.7 + - python >=3.9 license: MIT license_family: MIT - size: 47314 - timestamp: 1728479405343 + size: 47533 + timestamp: 1733218182393 - kind: conda name: click version: 8.1.7 - build: unix_pyh707e725_0 + build: unix_pyh707e725_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_0.conda - sha256: f0016cbab6ac4138a429e28dbcb904a90305b34b3fe41a9b89d697c90401caec - md5: f3ad426304898027fc619827ff428eca + url: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_1.conda + sha256: 1cd5fc6ccdd5141378e51252a7a3810b07fd5a7e6934a5b4a7eccba66566224b + md5: cb8e52f28f5e592598190c562e7b5bf1 depends: - __unix - - python >=3.8 + - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 84437 - timestamp: 1692311973840 + size: 84513 + timestamp: 1733221925078 - kind: conda name: colorama version: 0.4.6 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 - sha256: 2c1b2e9755ce3102bca8d69e8f26e4f087ece73f50418186aee7c74bef8e1698 - md5: 3faab06a954c2a04039983f2c4a50d99 + url: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + sha256: ab29d57dc70786c1269633ba3dff20288b81664d3ff8d21af995742e2bb03287 + md5: 962b9857ee8e7018c22f2776ffa0b2d7 depends: - - python >=3.7 + - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 25170 - timestamp: 1666700778190 + size: 27011 + timestamp: 1733218222191 - kind: conda name: comm version: 0.2.2 @@ -2753,18 +2743,19 @@ packages: - kind: conda name: decorator version: 5.1.1 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/decorator-5.1.1-pyhd8ed1ab_0.tar.bz2 - sha256: 328a6a379f9bdfd0230e51de291ce858e6479411ea4b0545fb377c71662ef3e2 - md5: 43afe5ab04e35e17ba28649471dd7364 + url: https://conda.anaconda.org/conda-forge/noarch/decorator-5.1.1-pyhd8ed1ab_1.conda + sha256: 84e5120c97502a3785e8c3241c3bf51f64b4d445f13b4d2445db00d9816fe479 + md5: d622d8d7ee8868870f9cbe259f381181 depends: - - python >=3.5 + - python >=3.9 license: BSD-2-Clause license_family: BSD - size: 12072 - timestamp: 1641555714315 + size: 14068 + timestamp: 1733236549190 - kind: conda name: defusedxml version: 0.7.1 @@ -2814,73 +2805,77 @@ packages: - kind: conda name: dnspython version: 2.7.0 - build: pyhff2d567_0 + build: pyhff2d567_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_0.conda - sha256: 3e2ea1bfd90969e0e1f152bb1f969c56661278ad6bfaa3272027b1ff0d9a1a23 - md5: 0adf8f63d500d20418656289249533f9 + url: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda + sha256: 3ec40ccf63f2450c5e6c7dd579e42fc2e97caf0d8cd4ba24aa434e6fc264eda0 + md5: 5fbd60d61d21b4bd2f9d7a48fe100418 depends: - - python >=3.9.0,<4.0.0 + - python >=3.9,<4.0.0 - sniffio constrains: - - cryptography >=43 + - aioquic >=1.0.0 - wmi >=1.5.1 - - h2 >=4.1.0 + - httpx >=0.26.0 - trio >=0.23 + - cryptography >=43 - httpcore >=1.0.0 - - aioquic >=1.0.0 - - httpx >=0.26.0 - idna >=3.7 + - h2 >=4.1.0 license: ISC license_family: OTHER - size: 172740 - timestamp: 1728178868478 + size: 172172 + timestamp: 1733256829961 - kind: conda name: email-validator version: 2.2.0 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_0.conda - sha256: ea9e936ed7c49ea6d66fa3554afe31ba311f2a3d5e384d8c38925fda9e37bdb9 - md5: 3067adf57ee658ddf5bfad47b0041ce4 + url: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda + sha256: b91a19eb78edfc2dbb36de9a67f74ee2416f1b5273dd7327abe53f2dbf864736 + md5: da16dd3b0b71339060cd44cb7110ddf9 depends: - dnspython >=2.0.0 - idna >=2.0.0 - - python >=3.7 + - python >=3.9 license: Unlicense - size: 44157 - timestamp: 1718984716782 + size: 44401 + timestamp: 1733300827551 - kind: conda name: email_validator version: 2.2.0 - build: hd8ed1ab_0 + build: hd8ed1ab_1 + build_number: 1 subdir: noarch noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_0.conda - sha256: 2cbbbe9e0f3872214227c27b8b775dd2296a435c90ef50a7cc69934c329b6c65 - md5: 0214a004f7cf5ac28fc10a390dfc47ee + url: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_1.conda + sha256: e0d0fdf587aa0ed0ff08b2bce3ab355f46687b87b0775bfba01cc80a859ee6a2 + md5: 0794f8807ff2c6f020422cacb1bd7bfa depends: - email-validator >=2.2.0,<2.2.1.0a0 license: Unlicense - size: 6690 - timestamp: 1718984720419 + size: 6552 + timestamp: 1733300828176 - kind: conda name: entrypoints version: '0.4' - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/entrypoints-0.4-pyhd8ed1ab_0.tar.bz2 - sha256: 2ec4a0900a4a9f42615fc04d0fb3286b796abe56590e8e042f6ec25e102dd5af - md5: 3cf04868fee0a029769bd41f4b2fbf2d + url: https://conda.anaconda.org/conda-forge/noarch/entrypoints-0.4-pyhd8ed1ab_1.conda + sha256: 80f579bfc71b3dab5bef74114b89e26c85cb0df8caf4c27ab5ffc16363d57ee7 + md5: 3366592d3c219f2731721f11bc93755c depends: - - python >=3.6 + - python >=3.9 license: MIT license_family: MIT - size: 9199 - timestamp: 1643888357950 + size: 11259 + timestamp: 1733327239578 - kind: conda name: exceptiongroup version: 1.2.2 @@ -2956,33 +2951,35 @@ packages: - kind: conda name: filelock version: 3.16.1 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_0.conda - sha256: 1da766da9dba05091af87977922fe60dc7464091a9ccffb3765d403189d39be4 - md5: 916f8ec5dd4128cd5f207a3c4c07b2c6 + url: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_1.conda + sha256: 18dca6e2194732df7ebf824abaefe999e4765ebe8e8a061269406ab88fc418b9 + md5: d692e9ba6f92dc51484bf3477e36ce7c depends: - - python >=3.7 + - python >=3.9 license: Unlicense - size: 17357 - timestamp: 1726613593584 + size: 17441 + timestamp: 1733240909987 - kind: conda name: fqdn version: 1.5.1 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_0.tar.bz2 - sha256: 6cfd1f9bcd2358a69fb571f4b3af049b630d52647d906822dbedac03e84e4f63 - md5: 642d35437078749ef23a5dca2c9bb1f3 + url: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_1.conda + sha256: 2509992ec2fd38ab27c7cdb42cf6cadc566a1cc0d1021a2673475d9fa87c6276 + md5: d3549fd50d450b6d9e7dddff25dd2110 depends: - cached-property >=1.3.0 - - python >=2.7,<4 + - python >=3.9,<4 license: MPL-2.0 license_family: MOZILLA - size: 14395 - timestamp: 1638810388635 + size: 16705 + timestamp: 1733327494780 - kind: conda name: freetype version: 2.12.1 @@ -3212,51 +3209,54 @@ packages: - kind: conda name: h11 version: 0.14.0 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_0.tar.bz2 - sha256: 817d2c77d53afe3f3d9cf7f6eb8745cdd8ea76c7adaa9d7ced75c455a2c2c085 - md5: b21ed0883505ba1910994f1df031a428 + url: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda + sha256: 622516185a7c740d5c7f27016d0c15b45782c1501e5611deec63fd70344ce7c8 + md5: 7ee49e89531c0dcbba9466f6d115d585 depends: - - python >=3 + - python >=3.9 - typing_extensions license: MIT license_family: MIT - size: 48251 - timestamp: 1664132995560 + size: 51846 + timestamp: 1733327599467 - kind: conda name: h2 version: 4.1.0 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2 - sha256: bfc6a23849953647f4e255c782e74a0e18fe16f7e25c7bb0bc57b83bb6762c7a - md5: b748fbf7060927a6e82df7cb5ee8f097 + url: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_1.conda + sha256: 843ddad410c370672a8250470697027618f104153612439076d4d7b91eeb7b5c + md5: 825927dc7b0f287ef8d4d0011bb113b1 depends: - hpack >=4.0,<5 - hyperframe >=6.0,<7 - - python >=3.6.1 + - python >=3.9 license: MIT license_family: MIT - size: 46754 - timestamp: 1634280590080 + size: 52000 + timestamp: 1733298867359 - kind: conda name: hpack version: 4.0.0 - build: pyh9f0ad1d_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2 - sha256: 5dec948932c4f740674b1afb551223ada0c55103f4c7bf86a110454da3d27cb8 - md5: 914d6646c4dbb1fd3ff539830a12fd71 + url: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda + sha256: ec89b7e5b8aa2f0219f666084446e1fb7b54545861e9caa892acb24d125761b5 + md5: 2aa5ff7fa34a81b9196532c84c10d865 depends: - - python + - python >=3.9 license: MIT license_family: MIT - size: 25341 - timestamp: 1598856368685 + size: 29412 + timestamp: 1733299296857 - kind: conda name: httpcore version: 1.0.7 @@ -3374,18 +3374,19 @@ packages: - kind: conda name: hyperframe version: 6.0.1 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 - sha256: e374a9d0f53149328134a8d86f5d72bca4c6dcebed3c0ecfa968c02996289330 - md5: 9f765cbfab6870c8435b9eefecd7a1f4 + url: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda + sha256: e91c6ef09d076e1d9a02819cd00fa7ee18ecf30cdd667605c853980216584d1b + md5: 566e75c90c1d0c8c459eb0ad9833dc7a depends: - - python >=3.6 + - python >=3.9 license: MIT license_family: MIT - size: 14646 - timestamp: 1619110249723 + size: 17239 + timestamp: 1733298862681 - kind: conda name: icu version: '75.1' @@ -3436,21 +3437,22 @@ packages: - kind: conda name: importlib_resources version: 6.4.5 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.4.5-pyhd8ed1ab_0.conda - sha256: 2cb9db3e40033c3df72d3defc678a012840378fd55a67e4351363d4b321a0dc1 - md5: c808991d29b9838fb4d96ce8267ec9ec + url: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.4.5-pyhd8ed1ab_1.conda + sha256: 461199e429a3db01f0a673f8beaac5e0be75b88895952fb9183f2ab01c5c3c24 + md5: 15798fa69312d433af690c8c42b3fb36 depends: - - python >=3.8 + - python >=3.9 - zipp >=3.1.0 constrains: - importlib-resources >=6.4.5,<6.4.6.0a0 license: Apache-2.0 license_family: APACHE - size: 32725 - timestamp: 1725921462405 + size: 32701 + timestamp: 1733231441973 - kind: conda name: ipykernel version: 6.29.5 @@ -3554,49 +3556,52 @@ packages: - kind: conda name: jedi version: 0.19.2 - build: pyhff2d567_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhff2d567_0.conda - sha256: d37dad14c00d06d33bfb99c378d0abd7645224a9491c433af5028f24863341ab - md5: 11ead81b00e0f7cc901fceb7ccfb92c1 + url: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda + sha256: 92c4d217e2dc68983f724aa983cca5464dcb929c566627b26a2511159667dba8 + md5: a4f4c5dc9b80bc50e0d3dc4e6e8f1bd9 depends: - parso >=0.8.3,<0.9.0 - python >=3.9 license: Apache-2.0 AND MIT - size: 842916 - timestamp: 1731317305873 + size: 843646 + timestamp: 1733300981994 - kind: conda name: jinja2 version: 3.1.4 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_0.conda - sha256: 27380d870d42d00350d2d52598cddaf02f9505fb24be09488da0c9b8d1428f2d - md5: 7b86ecb7d3557821c649b3c31e3eb9f2 + url: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_1.conda + sha256: 85a7169c078b8065bd9d121b0e7b99c8b88c42a411314b6ae5fcd81c48c4710a + md5: 08cce3151bde4ecad7885bd9fb647532 depends: - markupsafe >=2.0 - - python >=3.7 + - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 111565 - timestamp: 1715127275924 + size: 110963 + timestamp: 1733217424408 - kind: conda name: json5 version: 0.10.0 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/json5-0.10.0-pyhd8ed1ab_0.conda - sha256: df01c5253bb5f8c68526c8bad92b8e832ed58a0d4c40d08a65c81c51821bc23d - md5: 165cbd1d80be88dafadeabfaae6fa588 + url: https://conda.anaconda.org/conda-forge/noarch/json5-0.10.0-pyhd8ed1ab_1.conda + sha256: 61bca2dac194c44603446944745566d7b4e55407280f6f6cea8bbe4de26b558f + md5: cd170f82d8e5b355dfdea6adab23e4af depends: - python >=3.9 license: Apache-2.0 license_family: APACHE - size: 32030 - timestamp: 1732666224221 + size: 31573 + timestamp: 1733272196759 - kind: conda name: jsonpointer version: 3.0.0 @@ -3837,16 +3842,16 @@ packages: timestamp: 1710262791393 - kind: conda name: jupyterlab - version: 4.3.1 - build: pyhff2d567_0 + version: 4.3.2 + build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.3.1-pyhff2d567_0.conda - sha256: ff1035eb0020dbaf4e332ef4b81a7068b595dfc57dde3313e9c4a37583772644 - md5: b4f3d579fc21a44518d52c52507461b4 + url: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.3.2-pyhd8ed1ab_0.conda + sha256: e806f753fe91faaffbad3d1d3aab7ceee785ae01bf0d758a82f1466164d727d6 + md5: 5f0d3b774cae26dd785e443a0e1623ae depends: - async-lru >=1.0.0 - - httpx >=0.25.0 + - httpx >=0.28.0,<0.29.0 - importlib-metadata >=4.8.3 - ipykernel >=6.5.0 - jinja2 >=3.0.3 @@ -3857,33 +3862,33 @@ packages: - notebook-shim >=0.2 - packaging - python >=3.9 - - setuptools >=40.1.0 + - setuptools >=40.8.0 - tomli >=1.2.2 - tornado >=6.2.0 - traitlets license: BSD-3-Clause license_family: BSD - size: 7101932 - timestamp: 1731776859245 + size: 7396800 + timestamp: 1733261150800 - kind: conda name: jupyterlab_pygments version: 0.3.0 - build: pyhd8ed1ab_1 - build_number: 1 + build: pyhd8ed1ab_2 + build_number: 2 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_1.conda - sha256: 4aa622bbcf97e44cd1adf0100b7ff71b7e20268f043bdf6feae4d16152f1f242 - md5: afcd1b53bcac8844540358e33f33d28f + url: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda + sha256: dc24b900742fdaf1e077d9a3458fd865711de80bca95fe3c6d46610c532c6ef0 + md5: fd312693df06da3578383232528c468d depends: - pygments >=2.4.1,<3 - - python >=3.7 + - python >=3.9 constrains: - jupyterlab >=4.0.8,<5.0.0 license: BSD-3-Clause license_family: BSD - size: 18776 - timestamp: 1707149279640 + size: 18711 + timestamp: 1733328194037 - kind: conda name: jupyterlab_server version: 2.27.3 @@ -4849,18 +4854,18 @@ packages: timestamp: 1726659794676 - kind: conda name: libcxx - version: 19.1.4 + version: 19.1.5 build: ha82da77_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.4-ha82da77_0.conda - sha256: 342896ebc1d6acbf022ca6df006a936b9a472579e91e3c502cb1f52f218b78e9 - md5: a2d3d484d95889fccdd09498d8f6bf9a + url: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.5-ha82da77_0.conda + sha256: 7918cc0bb7a6554cdd3eee634c3dc414a1ab8ec49faeca1567367bb92118f9d7 + md5: 3c7be0df28ccda1d193ea6de56dcb5ff depends: - __osx >=11.0 license: Apache-2.0 WITH LLVM-exception license_family: Apache - size: 520678 - timestamp: 1732060258949 + size: 519819 + timestamp: 1733291654212 - kind: conda name: libdeflate version: '1.22' @@ -5681,6 +5686,89 @@ packages: license_family: BSD size: 15823 timestamp: 1729643275943 +- kind: conda + name: liblzma + version: 5.6.3 + build: h39f12f2_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.3-h39f12f2_0.conda + sha256: de00d627e41636591d05407c666de957a9ddd3c0f633340c016725695569b049 + md5: faa0ab222b9d12a52a8ebc655c9236f3 + depends: + - __osx >=11.0 + license: 0BSD + size: 98836 + timestamp: 1733321533638 +- kind: conda + name: liblzma + version: 5.6.3 + build: h86ecc28_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.3-h86ecc28_0.conda + sha256: 004785e427d255da8cf713b4722f8330bf496ce6fc665a0b21d007d377ffee5f + md5: 83d366f7bf01fc2d7781b4cc113fc9d3 + depends: + - libgcc >=13 + license: 0BSD + size: 124115 + timestamp: 1733323693681 +- kind: conda + name: liblzma + version: 5.6.3 + build: hb9d3cd8_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.3-hb9d3cd8_0.conda + sha256: 31637db828ec67ab8697de324e6074af5a36cbeddc37202d8d31e2fb397619e8 + md5: 137c535dddd880f844f33ed91b8abdba + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + license: 0BSD + size: 111223 + timestamp: 1733321312512 +- kind: conda + name: liblzma-devel + version: 5.6.3 + build: h39f12f2_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-devel-5.6.3-h39f12f2_0.conda + sha256: 2e5a9fb298bd8c01ceed8db386bfb0a125d74cef2c5ee615b4f9695b2808f7e0 + md5: 89955d2470cbacea3d5e069d67c94f44 + depends: + - __osx >=11.0 + - liblzma 5.6.3 h39f12f2_0 + license: 0BSD + size: 112941 + timestamp: 1733321552604 +- kind: conda + name: liblzma-devel + version: 5.6.3 + build: h86ecc28_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-devel-5.6.3-h86ecc28_0.conda + sha256: 740b3f1ffa57ad5f0eec0c868e23d4e1f811871c6685a04af57f1943cde1a575 + md5: 27995ae8bc93eeb949315655daa19d3c + depends: + - libgcc >=13 + - liblzma 5.6.3 h86ecc28_0 + license: 0BSD + size: 376767 + timestamp: 1733323860026 +- kind: conda + name: liblzma-devel + version: 5.6.3 + build: hb9d3cd8_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/liblzma-devel-5.6.3-hb9d3cd8_0.conda + sha256: 98020d4b4cc6c728d2e6dc1174cb2548cf03ce5098cd17c37b32f06e896a943a + md5: 7069f4de645461447f1ab7736c94db26 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - liblzma 5.6.3 hb9d3cd8_0 + license: 0BSD + size: 375452 + timestamp: 1733321322415 - kind: conda name: libnghttp2 version: 1.64.0 @@ -6776,27 +6864,29 @@ packages: - kind: conda name: markdown-it-py version: 3.0.0 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - sha256: c041b0eaf7a6af3344d5dd452815cdc148d6284fec25a4fa3f4263b3a021e962 - md5: 93a8e71256479c62074356ef6ebf501b + url: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_1.conda + sha256: 0fbacdfb31e55964152b24d5567e9a9996e1e7902fb08eb7d91b5fd6ce60803a + md5: fee3164ac23dfca50cfcc8b85ddefb81 depends: - mdurl >=0.1,<1 - - python >=3.8 + - python >=3.9 license: MIT license_family: MIT - size: 64356 - timestamp: 1686175179621 + size: 64430 + timestamp: 1733250550053 - kind: conda name: markupsafe version: 3.0.2 - build: py312h178313f_0 + build: py312h178313f_1 + build_number: 1 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_0.conda - sha256: 15f14ab429c846aacd47fada0dc4f341d64491e097782830f0906d00cb7b48b6 - md5: a755704ea0e2503f8c227d84829a8e81 + url: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_1.conda + sha256: 4a6bf68d2a2b669fecc9a4a009abd1cf8e72c2289522ff00d81b5a6e51ae78f5 + md5: eb227c3e0bf58f5bd69c0532b157975b depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -6806,16 +6896,17 @@ packages: - jinja2 >=3.0.0 license: BSD-3-Clause license_family: BSD - size: 24878 - timestamp: 1729351558563 + size: 24604 + timestamp: 1733219911494 - kind: conda name: markupsafe version: 3.0.2 - build: py312h74ce7d3_0 + build: py312h74ce7d3_1 + build_number: 1 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.2-py312h74ce7d3_0.conda - sha256: 997baf7f46bce112f6e0390efaa7fbb892b8f31567d3c554f08ac636774d74f7 - md5: 8992b90e8374193d53118f7651db0b73 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.2-py312h74ce7d3_1.conda + sha256: 1d500158262f30b9c23e37d1c861fe76e127a3926d69b3b38c25d20d3faa6f9f + md5: bc8607ab678073a0441808a31465f4fb depends: - libgcc >=13 - python >=3.12,<3.13.0a0 @@ -6824,16 +6915,17 @@ packages: - jinja2 >=3.0.0 license: BSD-3-Clause license_family: BSD - size: 25013 - timestamp: 1729352489213 + size: 25079 + timestamp: 1733220639175 - kind: conda name: markupsafe version: 3.0.2 - build: py312ha0ccf2a_0 + build: py312h998013c_1 + build_number: 1 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312ha0ccf2a_0.conda - sha256: 360e958055f35e5087942b9c499eaafae984a951b84cf354ef7481a2806f340d - md5: c6ff9f291d011c9d4f0b840f49435c64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312h998013c_1.conda + sha256: 4aa997b244014d3707eeef54ab0ee497d12c0d0d184018960cce096169758283 + md5: 46e547061080fddf9cf95a0327e8aba6 depends: - __osx >=11.0 - python >=3.12,<3.13.0a0 @@ -6843,8 +6935,8 @@ packages: - jinja2 >=3.0.0 license: BSD-3-Clause license_family: BSD - size: 24495 - timestamp: 1729351534830 + size: 24048 + timestamp: 1733219945697 - kind: conda name: matplotlib-inline version: 0.1.7 @@ -6863,76 +6955,76 @@ packages: timestamp: 1713250613726 - kind: conda name: max - version: 24.6.0.dev2024120306 + version: 24.6.0.dev2024120416 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120306-release.conda - sha256: 2aae2a8286dca29453e8cc8cfe13511aa016a521ac0c9201ceb24d1ba6c4138e - md5: 9c25081ace6ad2c13675cf0123109cb9 + url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120416-release.conda + sha256: 956c006755158839ee6f8de7d91360cd1990024868d867482a62885241c9794f + md5: 09947b7aa3a3c35b413b7c0d118126e3 depends: - - max-core ==24.6.0.dev2024120306 release - - max-python >=24.6.0.dev2024120306,<25.0a0 - - mojo-jupyter ==24.6.0.dev2024120306 release - - mblack ==24.6.0.dev2024120306 release + - max-core ==24.6.0.dev2024120416 release + - max-python >=24.6.0.dev2024120416,<25.0a0 + - mojo-jupyter ==24.6.0.dev2024120416 release + - mblack ==24.6.0.dev2024120416 release license: LicenseRef-Modular-Proprietary - size: 9929 - timestamp: 1733209293577 + size: 9925 + timestamp: 1733332193356 - kind: conda name: max-core - version: 24.6.0.dev2024120306 + version: 24.6.0.dev2024120416 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120306-release.conda - sha256: a82534696c6e078fb4e14b4b0f058336ffd0a647f7404e85aaee18eec25be067 - md5: c249d77d8e5885dd0eacd9028131413f + url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120416-release.conda + sha256: e73a6e3abebc4516d56d39b85d10e98883885218273b2ef19c7cfe4d3df7a4ef + md5: 43a976936171480fe7dbc2fed1224312 depends: - - mblack ==24.6.0.dev2024120306 release + - mblack ==24.6.0.dev2024120416 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 254711372 - timestamp: 1733209193854 + size: 245904359 + timestamp: 1733332193354 - kind: conda name: max-core - version: 24.6.0.dev2024120306 + version: 24.6.0.dev2024120416 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120306-release.conda - sha256: bd0858a3e2069a86cd71370322e7ac26ad3948225e4f0811e4fbf8771d44d0ea - md5: e5b6ae7316dc2b08a52cee8f27b4f484 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120416-release.conda + sha256: e32ebc6b7f589881f14caec8df02b65c40839a0210ef6a87d85243b61b5fc7d8 + md5: 15cac805514c6a381a9a50ee3a86de25 depends: - - mblack ==24.6.0.dev2024120306 release + - mblack ==24.6.0.dev2024120416 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 258488596 - timestamp: 1733209293575 + size: 249618446 + timestamp: 1733332472125 - kind: conda name: max-core - version: 24.6.0.dev2024120306 + version: 24.6.0.dev2024120416 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120306-release.conda - sha256: 88b5f2cbb2724067d33b10515613ec845f134c3758fd063852ac191a276d7812 - md5: 05acbd2d9cf25aa913a979aa9802c194 + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120416-release.conda + sha256: bc27468be85cc7fd207ec44a4a0b1b11aa54792737a20fcf8355a2f2e7a215d5 + md5: c27c6f67be3abffbf559bfd50852b493 depends: - - mblack ==24.6.0.dev2024120306 release + - mblack ==24.6.0.dev2024120416 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 220248523 - timestamp: 1733209020078 + size: 210212276 + timestamp: 1733332258535 - kind: conda name: max-python - version: 24.6.0.dev2024120306 + version: 24.6.0.dev2024120416 build: 3.12release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120306-3.12release.conda - sha256: 78dc00af885799e8c1f92185a505aee022f2ffd7191d24fa94ef428457f53e15 - md5: 4bdce0c1dd562e22566551d578103d2f + url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120416-3.12release.conda + sha256: 48e30a62cdee247e87b9f07d465ae91c75d47f292eeba5d2ca9c2d86d30e8875 + md5: 78af7733b4858c1bd882279a45e98795 depends: - - max-core ==24.6.0.dev2024120306 release + - max-core ==24.6.0.dev2024120416 release - python 3.12.* - pillow - fastapi @@ -6942,7 +7034,6 @@ packages: - opentelemetry-api - opentelemetry-exporter-otlp-proto-http >=1.27.0 - opentelemetry-exporter-prometheus >=0.48b0 - - opentelemetry-instrumentation-fastapi - opentelemetry-sdk >=1.27.0 - pydantic-settings >=2.4.0,<3 - pydantic >=2.4.0,<3 @@ -6955,18 +7046,18 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 128537272 - timestamp: 1733209193862 + size: 122878721 + timestamp: 1733332193368 - kind: conda name: max-python - version: 24.6.0.dev2024120306 + version: 24.6.0.dev2024120416 build: 3.12release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120306-3.12release.conda - sha256: 3910ceb9135f2258df30dd7a5d87b8f80a284645d6da48daa0e9bb145a49744e - md5: e7d3ebeaaeb2bd99167fda861a7e7aba + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120416-3.12release.conda + sha256: ffff206620d5bd2cd90830467d4234e3a606143811006e67203899a9b8512938 + md5: 55ff43da6401cdd96073ae044b428afd depends: - - max-core ==24.6.0.dev2024120306 release + - max-core ==24.6.0.dev2024120416 release - python 3.12.* - pillow - fastapi @@ -6976,7 +7067,6 @@ packages: - opentelemetry-api - opentelemetry-exporter-otlp-proto-http >=1.27.0 - opentelemetry-exporter-prometheus >=0.48b0 - - opentelemetry-instrumentation-fastapi - opentelemetry-sdk >=1.27.0 - pydantic-settings >=2.4.0,<3 - pydantic >=2.4.0,<3 @@ -6989,18 +7079,18 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 132223349 - timestamp: 1733209293584 + size: 126526187 + timestamp: 1733332472138 - kind: conda name: max-python - version: 24.6.0.dev2024120306 + version: 24.6.0.dev2024120416 build: 3.12release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120306-3.12release.conda - sha256: ddafa4f7201fca06f38e8a0232cdbbb918d6a24c03cb25a0137d4fcc0ca9f354 - md5: 9859f8c88c81c18baaddd15be03d259c + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120416-3.12release.conda + sha256: e5aaaba32cd939f3c6ba27b916851174eec6c3913a8e5ebd00b5590f026a2e16 + md5: b84b205dbce4660cdea5b0e3cda227e9 depends: - - max-core ==24.6.0.dev2024120306 release + - max-core ==24.6.0.dev2024120416 release - python 3.12.* - pillow - fastapi @@ -7010,7 +7100,6 @@ packages: - opentelemetry-api - opentelemetry-exporter-otlp-proto-http >=1.27.0 - opentelemetry-exporter-prometheus >=0.48b0 - - opentelemetry-instrumentation-fastapi - opentelemetry-sdk >=1.27.0 - pydantic-settings >=2.4.0,<3 - pydantic >=2.4.0,<3 @@ -7023,17 +7112,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 119113363 - timestamp: 1733209020082 + size: 111629688 + timestamp: 1733332258538 - kind: conda name: mblack - version: 24.6.0.dev2024120306 + version: 24.6.0.dev2024120416 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120306-release.conda - sha256: 35b22caab89b65a52b9e7877762a58bba8cd21137ac1383e268b8a2ae45173ac - md5: f77eafd932de3ae309643ea716ba3c3a + url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120416-release.conda + sha256: 374f5d8dfed89bf7098a0f7d8c6fd40c9dab11c4d760a03e05835e82f1b00cb9 + md5: 85c700946ce4a5ce8d11f5ee66b477cf depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -7043,55 +7132,57 @@ packages: - platformdirs >=2 - python license: MIT - size: 130649 - timestamp: 1733209293580 + size: 130641 + timestamp: 1733332193362 - kind: conda name: mdurl version: 0.1.2 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - sha256: 64073dfb6bb429d52fff30891877b48c7ec0f89625b1bf844905b66a81cce6e1 - md5: 776a8dd9e824f77abac30e6ef43a8f7a + url: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda + sha256: 78c1bbe1723449c52b7a9df1af2ee5f005209f67e40b6e1d3c7619127c43b1c7 + md5: 592132998493b3ff25fd7479396e8351 depends: - - python >=3.6 + - python >=3.9 license: MIT license_family: MIT - size: 14680 - timestamp: 1704317789138 + size: 14465 + timestamp: 1733255681319 - kind: conda name: mistune version: 3.0.2 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/mistune-3.0.2-pyhd8ed1ab_0.conda - sha256: f95cb70007e3cc2ba44e17c29a056b499e6dadf08746706d0c817c8e2f47e05c - md5: 5cbee699846772cc939bef23a0d524ed + url: https://conda.anaconda.org/conda-forge/noarch/mistune-3.0.2-pyhd8ed1ab_1.conda + sha256: 0a9faaf1692b74f321cedbd37a44f108a1ec3f5d9638bc5bbf860cb3b6ff6db4 + md5: c46df05cae629e55426773ac1f85d68f depends: - - python >=3.7 + - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 66022 - timestamp: 1698947249750 + size: 65901 + timestamp: 1733258822603 - kind: conda name: mojo-jupyter - version: 24.6.0.dev2024120306 + version: 24.6.0.dev2024120416 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120306-release.conda - sha256: dd1fcd4298ef08be4507931babe70d6b335dc28d5ead602460747edc4f10c2dc - md5: 8bb40dfabe84757d93d3053fdf4b0a58 + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120416-release.conda + sha256: 181250d3bbe6523e4ac02e40004b6e77c04cfee2d9512dbeb584f51351df9448 + md5: 411a1d159867c56043991824d1ee88d9 depends: - - max-core ==24.6.0.dev2024120306 release + - max-core ==24.6.0.dev2024120416 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22940 - timestamp: 1733209293581 + size: 22946 + timestamp: 1733332193363 - kind: conda name: multidict version: 6.1.0 @@ -7204,18 +7295,19 @@ packages: - kind: conda name: mypy_extensions version: 1.0.0 - build: pyha770c72_0 + build: pyha770c72_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda - sha256: f240217476e148e825420c6bc3a0c0efb08c0718b7042fae960400c02af858a3 - md5: 4eccaeba205f0aed9ac3a9ea58568ca3 + url: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda + sha256: 1895f47b7d68581a6facde5cb13ab8c2764c2e53a76bd746f8f98910dc4e08fe + md5: 29097e7ea634a45cc5386b95cac6568f depends: - - python >=3.5 + - python >=3.9 license: MIT license_family: MIT - size: 10492 - timestamp: 1675543414256 + size: 10854 + timestamp: 1733230986902 - kind: conda name: nbclient version: 0.10.1 @@ -7335,18 +7427,19 @@ packages: - kind: conda name: nest-asyncio version: 1.6.0 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_0.conda - sha256: 30db21d1f7e59b3408b831a7e0417b83b53ee6223afae56482c5f26da3ceb49a - md5: 6598c056f64dc8800d40add25e4e2c34 + url: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda + sha256: bb7b21d7fd0445ddc0631f64e66d91a179de4ba920b8381f29b9d006a42788c0 + md5: 598fd7d4d0de2455fb74f56063969a97 depends: - - python >=3.5 + - python >=3.9 license: BSD-2-Clause license_family: BSD - size: 11638 - timestamp: 1705850780510 + size: 11543 + timestamp: 1733325673691 - kind: conda name: notebook-shim version: 0.2.4 @@ -7604,66 +7697,6 @@ packages: license_family: APACHE size: 14721 timestamp: 1695214221489 -- kind: conda - name: opentelemetry-instrumentation - version: 0.49b2 - build: pyhff2d567_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-0.49b2-pyhff2d567_0.conda - sha256: ee20ad159bc040642fcbce1b25f8a9fc1d788b53c6bf593a0891bf7887ec7c5f - md5: 13d714acd504cd0141688c908521c0b9 - depends: - - opentelemetry-api ~=1.4 - - opentelemetry-semantic-conventions 0.49b2 - - packaging >=18.0 - - python >=3.9 - - setuptools >=16.0 - - wrapt <2.0.0,>=1.0.0 - license: Apache-2.0 - license_family: APACHE - size: 31616 - timestamp: 1732070359772 -- kind: conda - name: opentelemetry-instrumentation-asgi - version: 0.49b2 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-asgi-0.49b2-pyhd8ed1ab_0.conda - sha256: 7b2b4da037baa506a82c5e3e711905f34448441e069a6e3affb0e4917b3ee5e0 - md5: 482ad6cdc507689d5c33eb22aa16d83e - depends: - - asgiref ~=3.0 - - opentelemetry-api ~=1.12 - - opentelemetry-instrumentation 0.49b2 - - opentelemetry-semantic-conventions 0.49b2 - - opentelemetry-util-http 0.49b2 - - python >=3.7 - license: Apache-2.0 - license_family: APACHE - size: 23749 - timestamp: 1732086813641 -- kind: conda - name: opentelemetry-instrumentation-fastapi - version: 0.49b2 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-fastapi-0.49b2-pyhd8ed1ab_0.conda - sha256: e853f62b4c56e308f349a3f360cf4d6aa814a9dc926e727c25effcf4121af68c - md5: 59c01fcead989ba58c5dc79e3ac3aab3 - depends: - - opentelemetry-api ~=1.12 - - opentelemetry-instrumentation 0.49b2 - - opentelemetry-instrumentation-asgi 0.49b2 - - opentelemetry-semantic-conventions 0.49b2 - - opentelemetry-util-http 0.49b2 - - python >=3.7 - license: Apache-2.0 - license_family: APACHE - size: 20288 - timestamp: 1732093785486 - kind: conda name: opentelemetry-proto version: 1.28.2 @@ -7716,21 +7749,6 @@ packages: license_family: APACHE size: 81534 timestamp: 1732067304518 -- kind: conda - name: opentelemetry-util-http - version: 0.49b2 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-util-http-0.49b2-pyhd8ed1ab_0.conda - sha256: 73bb1cbb640b0732c1a04764a9704bb048ab77d6cb9c6439eb50ec0ecf926ede - md5: f267c60fc629a9bd1aa388f6ed8ea0ab - depends: - - python >=3.8 - license: Apache-2.0 - license_family: APACHE - size: 19241 - timestamp: 1732081026829 - kind: conda name: orc version: 2.0.3 @@ -7913,64 +7931,67 @@ packages: - kind: conda name: parso version: 0.8.4 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_0.conda - sha256: bfe404eebb930cc41782d34f8fc04c0388ea692eeebe2c5fc28df8ec8d4d61ae - md5: 81534b420deb77da8833f2289b8d47ac + url: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda + sha256: 17131120c10401a99205fc6fe436e7903c0fa092f1b3e80452927ab377239bcc + md5: 5c092057b6badd30f75b06244ecd01c9 depends: - - python >=3.6 + - python >=3.9 license: MIT license_family: MIT - size: 75191 - timestamp: 1712320447201 + size: 75295 + timestamp: 1733271352153 - kind: conda name: pathspec version: 0.12.1 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_0.conda - sha256: 4e534e66bfe8b1e035d2169d0e5b185450546b17e36764272863e22e0370be4d - md5: 17064acba08d3686f1135b5ec1b32b12 + url: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + sha256: 9f64009cdf5b8e529995f18e03665b03f5d07c0b17445b8badef45bde76249ee + md5: 617f15191456cc6a13db418a275435e5 depends: - - python >=3.7 + - python >=3.9 license: MPL-2.0 license_family: MOZILLA - size: 41173 - timestamp: 1702250135032 + size: 41075 + timestamp: 1733233471940 - kind: conda name: pexpect version: 4.9.0 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_0.conda - sha256: 90a09d134a4a43911b716d4d6eb9d169238aff2349056f7323d9db613812667e - md5: 629f3203c99b32e0988910c93e77f3b6 + url: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda + sha256: 202af1de83b585d36445dc1fda94266697341994d1a3328fabde4989e1b3d07a + md5: d0d408b1f18883a944376da5cf8101ea depends: - ptyprocess >=0.5 - - python >=3.7 + - python >=3.9 license: ISC - size: 53600 - timestamp: 1706113273252 + size: 53561 + timestamp: 1733302019362 - kind: conda name: pickleshare version: 0.7.5 - build: py_1003 - build_number: 1003 + build: pyhd8ed1ab_1004 + build_number: 1004 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-py_1003.tar.bz2 - sha256: a1ed1a094dd0d1b94a09ed85c283a0eb28943f2e6f22161fb45e128d35229738 - md5: 415f0ebb6198cc2801c73438a9fb5761 + url: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda + sha256: e2ac3d66c367dada209fc6da43e645672364b9fd5f9d28b9f016e24b81af475b + md5: 11a9d1d09a3615fc07c3faf79bc0b943 depends: - - python >=3 + - python >=3.9 license: MIT license_family: MIT - size: 9332 - timestamp: 1602536313357 + size: 11748 + timestamp: 1733327448200 - kind: conda name: pillow version: 11.0.0 @@ -8080,51 +8101,53 @@ packages: - kind: conda name: platformdirs version: 4.3.6 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_0.conda - sha256: c81bdeadc4adcda216b2c7b373f0335f5c78cc480d1d55d10f21823590d7e46f - md5: fd8f2b18b65bbf62e8f653100690c8d2 + url: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + sha256: bb50f6499e8bc1d1a26f17716c97984671121608dc0c3ecd34858112bce59a27 + md5: 577852c7e53901ddccc7e6a9959ddebe depends: - - python >=3.8 + - python >=3.9 license: MIT license_family: MIT - size: 20625 - timestamp: 1726613611845 + size: 20448 + timestamp: 1733232756001 - kind: conda name: prometheus_client - version: 0.21.0 + version: 0.21.1 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.0-pyhd8ed1ab_0.conda - sha256: 01f0c3dd00081637ed920a922b17bcc8ed49608404ee466ced806856e671f6b9 - md5: 07e9550ddff45150bfc7da146268e165 + url: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda + sha256: bc8f00d5155deb7b47702cb8370f233935704100dbc23e30747c161d1b6cf3ab + md5: 3e01e386307acc60b2f89af0b2e161aa depends: - - python >=3.8 + - python >=3.9 license: Apache-2.0 license_family: Apache - size: 49024 - timestamp: 1726902073034 + size: 49002 + timestamp: 1733327434163 - kind: conda name: prompt-toolkit version: 3.0.48 - build: pyha770c72_0 + build: pyha770c72_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.48-pyha770c72_0.conda - sha256: 44e4e6108d425a666856a52d1523e5d70890256a8920bb0dcd3d55cc750f3207 - md5: 4c05134c48b6a74f33bbb9938e4a115e + url: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.48-pyha770c72_1.conda + sha256: 79fb7d1eeb490d4cc1b79f781bb59fe302ae38cf0a30907ecde75a7d399796cc + md5: 368d4aa48358439e07a97ae237491785 depends: - - python >=3.7 + - python >=3.9 - wcwidth constrains: - prompt_toolkit 3.0.48 license: BSD-3-Clause license_family: BSD - size: 270271 - timestamp: 1727341744544 + size: 269848 + timestamp: 1733302634979 - kind: conda name: propcache version: 0.2.0 @@ -8339,17 +8362,18 @@ packages: - kind: conda name: ptyprocess version: 0.7.0 - build: pyhd3deb0d_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd3deb0d_0.tar.bz2 - sha256: fb31e006a25eb2e18f3440eb8d17be44c8ccfae559499199f73584566d0a444a - md5: 359eeb6536da0e687af562ed265ec263 + url: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda + sha256: a7713dfe30faf17508ec359e0bc7e0983f5d94682492469bd462cdaae9c64d83 + md5: 7d9daffbb8d8e0af0f769dbbcd173a54 depends: - - python + - python >=3.9 license: ISC - size: 16546 - timestamp: 1609419417991 + size: 19457 + timestamp: 1733302371990 - kind: conda name: pure_eval version: 0.2.3 @@ -8513,13 +8537,13 @@ packages: timestamp: 1733195786147 - kind: conda name: pydantic - version: 2.10.2 + version: 2.10.3 build: pyh3cfb1c2_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.2-pyh3cfb1c2_0.conda - sha256: 47368f0eeb63b2dd4c9c54ff35b216d01ae1c27b90d3c7a2066ef8e005f32103 - md5: e661b732b4d7514ace55a01873f03201 + url: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.3-pyh3cfb1c2_0.conda + sha256: cac9eebd3d5f8d8a497a9025d756257ddc75b8b3393e6737cb45077bd744d4f8 + md5: 194ef7f91286978521350f171b117f01 depends: - annotated-types >=0.6.0 - pydantic-core 2.27.1 @@ -8528,8 +8552,8 @@ packages: - typing_extensions >=4.12.2 license: MIT license_family: MIT - size: 316818 - timestamp: 1732689481710 + size: 317037 + timestamp: 1733316963547 - kind: conda name: pydantic-core version: 2.27.1 @@ -8610,18 +8634,19 @@ packages: - kind: conda name: pygments version: 2.18.0 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_0.conda - sha256: 78267adf4e76d0d64ea2ffab008c501156c108bb08fecb703816fb63e279780b - md5: b7f5c092b8f9800150d998a71b76d5a1 + url: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_1.conda + sha256: 0d6133545f268b2b89c2617c196fc791f365b538d4057ecd636d658c3b1e885d + md5: b38dc0206e2a530e5c2cf11dc086b31a depends: - - python >=3.8 + - python >=3.9 license: BSD-2-Clause license_family: BSD - size: 879295 - timestamp: 1714846885370 + size: 876700 + timestamp: 1733221731178 - kind: conda name: pyinstrument version: 5.0.0 @@ -8714,20 +8739,20 @@ packages: - kind: conda name: pysocks version: 1.7.1 - build: pyha2e5f31_6 - build_number: 6 + build: pyha55dd90_7 + build_number: 7 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2 - sha256: a42f826e958a8d22e65b3394f437af7332610e43ee313393d1cf143f0a2d274b - md5: 2a7de29fb590ca14b5243c4c812c8025 + url: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda + sha256: ba3b032fa52709ce0d9fd388f63d330a026754587a2f461117cac9ab73d8d0d8 + md5: 461219d1a5bd61342293efa2c0c90eac depends: - __unix - - python >=3.8 + - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 18981 - timestamp: 1661604969727 + size: 21085 + timestamp: 1733217331982 - kind: conda name: python version: 3.12.7 @@ -8829,38 +8854,40 @@ packages: - python >=3.9 - six >=1.5 license: Apache-2.0 + license_family: APACHE size: 222505 timestamp: 1733215763718 - kind: conda name: python-dotenv version: 1.0.1 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_0.conda - sha256: 2d4c80364f03315d606a50eddd493dbacc078e21412c2462c0f781eec49b572c - md5: c2997ea9360ac4e015658804a7a84f94 + url: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda + sha256: 99713f6b534fef94995c6c16fd21d59f3548784e9111775d692bdc7c44678f02 + md5: e5c6ed218664802d305e79cc2d4491de depends: - - python >=3.8 + - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 24278 - timestamp: 1706018281544 + size: 24215 + timestamp: 1733243277223 - kind: conda name: python-fastjsonschema - version: 2.21.0 + version: 2.21.1 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.0-pyhd8ed1ab_0.conda - sha256: 09ae0acccbfc325b9b65946795c0055e0a40374e4e73b264f3b7e8cd8ae0a95a - md5: 4c849126120d1b3d61cf0eac8120ea70 + url: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda + sha256: 1b09a28093071c1874862422696429d0d35bd0b8420698003ac004746c5e82a2 + md5: 38e34d2d1d9dca4fb2b9a0a04f604e2c depends: - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 225949 - timestamp: 1732805566866 + size: 226259 + timestamp: 1733236073335 - kind: conda name: python-json-logger version: 2.0.7 @@ -8879,33 +8906,35 @@ packages: - kind: conda name: python-multipart version: 0.0.19 - build: pyhff2d567_0 + build: pyhff2d567_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_0.conda - sha256: ff5964cd5eafc118f9d9a15fd31cd88a7ecc756ef83b6095c69b1891a53e2177 - md5: fe524346d3a9aa0aaf353dc39f7d1715 + url: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_1.conda + sha256: e6f6bc3d2a51f45ca26d556c5a416efdacf49a918fefcd0b7c340121e608aa5f + md5: c74333aa447ed2b94d49e5db23da5de6 depends: - python >=3.9 license: Apache-2.0 license_family: Apache - size: 27780 - timestamp: 1733062326577 + size: 27768 + timestamp: 1733323160772 - kind: conda name: python-tzdata version: '2024.2' - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_0.conda - sha256: fe3f62ce2bc714bdaa222ab3f0344a2815ad9e853c6df38d15c9f25de8a3a6d4 - md5: 986287f89929b2d629bd6ef6497dc307 + url: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_1.conda + sha256: 57c9a02ec25926fb48edca59b9ede107823e5d5c473b94a0e05cc0b9a193a642 + md5: c0def296b2f6d2dd7b030c2a7f66bb1f depends: - - python >=3.6 + - python >=3.9 license: Apache-2.0 license_family: APACHE - size: 142527 - timestamp: 1727140688093 + size: 142235 + timestamp: 1733235414217 - kind: conda name: python-xxhash version: 3.5.0 @@ -9020,6 +9049,7 @@ packages: depends: - python >=3.9 license: MIT + license_family: MIT size: 185890 timestamp: 1733215766006 - kind: conda @@ -9320,6 +9350,7 @@ packages: constrains: - chardet >=3.0.2,<6 license: Apache-2.0 + license_family: APACHE size: 58723 timestamp: 1733217126197 - kind: conda @@ -9373,12 +9404,12 @@ packages: timestamp: 1730592349978 - kind: conda name: rpds-py - version: 0.21.0 + version: 0.22.1 build: py312h12e396e_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.21.0-py312h12e396e_0.conda - sha256: 6a2c3808b0922e453b450cc092f5e5da9d2466f48acce224da90432a94146c12 - md5: 37f4ad7cb4214c799f32e5f411c6c69f + url: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.22.1-py312h12e396e_0.conda + sha256: 26f29cd937e9a28ea9ac6a32b3669e0cabe815343df43ce19c0ca076861e1c8e + md5: db784e4ddb4c55c95cc15a7572802ef1 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -9388,16 +9419,16 @@ packages: - __glibc >=2.17 license: MIT license_family: MIT - size: 336759 - timestamp: 1730922756033 + size: 355539 + timestamp: 1733275174505 - kind: conda name: rpds-py - version: 0.21.0 + version: 0.22.1 build: py312ha4e36d7_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/rpds-py-0.21.0-py312ha4e36d7_0.conda - sha256: 5573bd19cd90ddb1b446ecd5a3b2c52923d030c91581fe2e63b014d47973a86c - md5: b5758e481b8a8e6f8342836f66fb0bdf + url: https://conda.anaconda.org/conda-forge/linux-aarch64/rpds-py-0.22.1-py312ha4e36d7_0.conda + sha256: efa181de72c022ef3c763d69dc6886cf2e7b8dcbd99e4226954a05d08001dcd8 + md5: ed1137158174c5b8f09f05feb7b66313 depends: - libgcc >=13 - python >=3.12,<3.13.0a0 @@ -9406,16 +9437,16 @@ packages: - __glibc >=2.17 license: MIT license_family: MIT - size: 340149 - timestamp: 1730924593615 + size: 348239 + timestamp: 1733277204922 - kind: conda name: rpds-py - version: 0.21.0 + version: 0.22.1 build: py312hcd83bfe_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/rpds-py-0.21.0-py312hcd83bfe_0.conda - sha256: a3d885b49b03259ff7306855466933f9ba06e3f4c327cd0122e9a43b68910555 - md5: 8ea53395d5403ae5ec1adabb1a74719a + url: https://conda.anaconda.org/conda-forge/osx-arm64/rpds-py-0.22.1-py312hcd83bfe_0.conda + sha256: bcfa291e5ef9d2015f15d9d0007f5bfbda64de1ae9bf8f3849827be4839949bd + md5: 1db30d93318545c64c4db230cba68f16 depends: - __osx >=11.0 - python >=3.12,<3.13.0a0 @@ -9425,8 +9456,8 @@ packages: - __osx >=11.0 license: MIT license_family: MIT - size: 295817 - timestamp: 1730922974629 + size: 318035 + timestamp: 1733275269664 - kind: conda name: s2n version: 1.5.9 @@ -9518,36 +9549,38 @@ packages: - kind: conda name: send2trash version: 1.8.3 - build: pyh0d859eb_0 + build: pyh0d859eb_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh0d859eb_0.conda - sha256: c4401b071e86ddfa0ea4f34b85308db2516b6aeca50053535996864cfdee7b3f - md5: 778594b20097b5a948c59e50ae42482a + url: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh0d859eb_1.conda + sha256: 00926652bbb8924e265caefdb1db100f86a479e8f1066efe395d5552dde54d02 + md5: 938c8de6b9de091997145b3bf25cdbf9 depends: - __linux - - python >=3.7 + - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 22868 - timestamp: 1712585140895 + size: 22736 + timestamp: 1733322148326 - kind: conda name: send2trash version: 1.8.3 - build: pyh31c8845_0 + build: pyh31c8845_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh31c8845_0.conda - sha256: f911307db932c92510da6c3c15b461aef935720776643a1fbf3683f61001068b - md5: c3cb67fc72fb38020fe7923dbbcf69b0 + url: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh31c8845_1.conda + sha256: 5282eb5b462502c38df8cb37cd1542c5bbe26af2453a18a0a0602d084ca39f53 + md5: e67b1b1fa7a79ff9e8e326d0caf55854 depends: - __osx - pyobjc-framework-cocoa - - python >=3.7 + - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 23165 - timestamp: 1712585504123 + size: 23100 + timestamp: 1733322309409 - kind: conda name: setuptools version: 75.6.0 @@ -9567,18 +9600,19 @@ packages: - kind: conda name: shellingham version: 1.5.4 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_0.conda - sha256: 3c49a0a101c41b7cf6ac05a1872d7a1f91f1b6d02eecb4a36b605a19517862bb - md5: d08db09a552699ee9e7eec56b4eb3899 + url: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda + sha256: 0557c090913aa63cdbe821dbdfa038a321b488e22bc80196c4b3b1aace4914ef + md5: 7c3c2a0f3ebdea2bbc35538d162b43bf depends: - - python >=3.7 + - python >=3.9 license: MIT license_family: MIT - size: 14568 - timestamp: 1698144516278 + size: 14462 + timestamp: 1733301007770 - kind: conda name: six version: 1.16.0 @@ -9643,18 +9677,19 @@ packages: - kind: conda name: sniffio version: 1.3.1 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_0.conda - sha256: bc12100b2d8836b93c55068b463190505b8064d0fc7d025e89f20ebf22fe6c2b - md5: 490730480d76cf9c8f8f2849719c6e2b + url: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda + sha256: c2248418c310bdd1719b186796ae50a8a77ce555228b6acd32768e2543a15012 + md5: bf7a226e58dfb8346c70df36065d86c9 depends: - - python >=3.7 + - python >=3.9 license: Apache-2.0 license_family: Apache - size: 15064 - timestamp: 1708953086199 + size: 15019 + timestamp: 1733244175724 - kind: conda name: soupsieve version: '2.5' @@ -9890,18 +9925,19 @@ packages: - kind: conda name: tomli version: 2.2.1 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_0.conda - sha256: 706f35327a1b433fb57bb99e9fef878e90317fd6ea8cbcd454fb4af1a2e3f035 - md5: ee8ab0fe4c8dfc5a6319f7f8246022fc + url: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda + sha256: 18636339a79656962723077df9a56c0ac7b8a864329eb8f847ee3d38495b863e + md5: ac944244f1fed2eb49bae07193ae8215 depends: - python >=3.9 license: MIT license_family: MIT - size: 19129 - timestamp: 1732988289555 + size: 19167 + timestamp: 1733256819729 - kind: conda name: tornado version: 6.4.2 @@ -10010,72 +10046,73 @@ packages: timestamp: 1731981383171 - kind: conda name: typer - version: 0.14.0 + version: 0.15.0 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/typer-0.14.0-pyhd8ed1ab_0.conda - sha256: 4d7f1c77b928a66ae3b0089e288e7fdeb826bf0dabba9799488017e6a9b84f38 - md5: 9eb8a3f5d36ca3e7f686e7a5d85aff72 + url: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.0-pyhd8ed1ab_0.conda + sha256: 90503b2a518434fb554d621cc4e1c533dc524ef1c0f63fde39fdf4328163a0c8 + md5: cf9393f5733c7277b1a5f79145f8485b depends: - python >=3.9 - - typer-slim-standard 0.14.0 hd8ed1ab_0 + - typer-slim-standard 0.15.0 hd8ed1ab_0 license: MIT license_family: MIT - size: 54637 - timestamp: 1732848384457 + size: 56455 + timestamp: 1733279871129 - kind: conda name: typer-slim - version: 0.14.0 + version: 0.15.0 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.14.0-pyhd8ed1ab_0.conda - sha256: 883969c10b9837bb18a340ffb01a984ef6b4655fc72ff05aeb7bc659c9a1229d - md5: 3674a4cd7fd8e8a7277af2b30965925d + url: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.0-pyhd8ed1ab_0.conda + sha256: f6a85917292aaea0577792090ac74dbdb0280a656934746f715bfa9feaa9b2dc + md5: 629fef89115de5a907fb9765cdd45b26 depends: - click >=8.0.0 - python >=3.9 - typing_extensions >=3.7.4.3 constrains: + - typer >=0.15.0,<0.15.1.0a0 - shellingham >=1.3.0 - rich >=10.11.0 - - typer >=0.14.0,<0.14.1.0a0 license: MIT license_family: MIT - size: 43504 - timestamp: 1732848371202 + size: 43480 + timestamp: 1733279858535 - kind: conda name: typer-slim-standard - version: 0.14.0 + version: 0.15.0 build: hd8ed1ab_0 subdir: noarch noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.14.0-hd8ed1ab_0.conda - sha256: 0e09e393e75028a0e827c7177e0fb1a070c87756e47b5ae6418423e22b10dfac - md5: 9e1e1f9c84add9637ca715f8fb71a83f + url: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.0-hd8ed1ab_0.conda + sha256: df52ddd24439aff384a82d00a751947b12127ab571f4aa674a1053c703ce8ed0 + md5: a4746fc9efbff02c1a288d8fcd8ffba9 depends: - rich - shellingham - - typer-slim 0.14.0 pyhd8ed1ab_0 + - typer-slim 0.15.0 pyhd8ed1ab_0 license: MIT license_family: MIT - size: 49180 - timestamp: 1732848371718 + size: 50259 + timestamp: 1733279859017 - kind: conda name: types-python-dateutil version: 2.9.0.20241003 - build: pyhff2d567_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20241003-pyhff2d567_0.conda - sha256: 8489af986daebfbcd13d3748ba55431259206e37f184ab42a57e107fecd85e02 - md5: 3d326f8a2aa2d14d51d8c513426b5def + url: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20241003-pyhd8ed1ab_1.conda + sha256: 78538b566f1f1cd1e309bba8361875523c69db1a25db292a54977603c5ea1421 + md5: cb0e8ce6fe1198a058040619a09bc424 depends: - - python >=3.6 + - python >=3.9 license: Apache-2.0 AND MIT - size: 21765 - timestamp: 1727940339297 + size: 21850 + timestamp: 1733279726734 - kind: conda name: typing-extensions version: 4.12.2 @@ -10111,18 +10148,18 @@ packages: - kind: conda name: typing_utils version: 0.1.0 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_0.tar.bz2 - sha256: 9e3758b620397f56fb709f796969de436d63b7117897159619b87938e1f78739 - md5: eb67e3cace64c66233e2d35949e20f92 + url: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda + sha256: 3088d5d873411a56bf988eee774559335749aed6f6c28e07bf933256afb9eb6c + md5: f6d7aa696c67756a650e91e15e88223c depends: - - python >=3.6.1 + - python >=3.9 license: Apache-2.0 - license_family: APACHE - size: 13829 - timestamp: 1622899345711 + size: 15183 + timestamp: 1733331395943 - kind: conda name: tzdata version: 2024b @@ -10138,18 +10175,19 @@ packages: - kind: conda name: uri-template version: 1.3.0 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_0.conda - sha256: b76904b53721dc88a46352324c79d2b077c2f74a9f7208ad2c4249892669ae94 - md5: 0944dc65cb4a9b5b68522c3bb585d41c + url: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda + sha256: e0eb6c8daf892b3056f08416a96d68b0a358b7c46b99c8a50481b22631a4dfc0 + md5: e7cb0f5745e4c5035a460248334af7eb depends: - - python >=3.7 + - python >=3.9 license: MIT license_family: MIT - size: 23999 - timestamp: 1688655976471 + size: 23990 + timestamp: 1733323714454 - kind: conda name: urllib3 version: 2.2.3 @@ -10173,44 +10211,46 @@ packages: - kind: conda name: uvicorn version: 0.32.1 - build: pyh31011fe_0 + build: pyh31011fe_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_0.conda - sha256: a310c494c817a9f6c985fc6d2772acb953a20170d03b0eabfae0e9d8c76c97ee - md5: fa77fc8110207b3bfc5ccc9d316744f4 + url: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_1.conda + sha256: ad1d8470c629679ea3db52351a522ae44eee0111d8d8b254e8c863c4a292e5c4 + md5: 7832640e5e302059e844d56f410487a6 depends: - __unix - click >=7.0 - h11 >=0.8 - - python >=3.8 + - python >=3.9 - typing_extensions >=4.0 license: BSD-3-Clause license_family: BSD - size: 49393 - timestamp: 1732185242260 + size: 49340 + timestamp: 1733332048141 - kind: conda name: uvicorn-standard version: 0.32.1 - build: h31011fe_0 + build: h31011fe_1 + build_number: 1 subdir: noarch noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_0.conda - sha256: 52545f7c88a7c779376900de5f9d81ce36738cd8770b543e89592ad7d1003c40 - md5: 49c2820e0f39cb710becd856ff14d683 + url: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_1.conda + sha256: 378903c51b2b1136fa48b01c0a2a8dd4634136d038a4a56561c0856fdcbfcabe + md5: 0c233d5c71d398cf01d0281e72194005 depends: - __unix - httptools >=0.5.0 - python-dotenv >=0.13 - pyyaml >=5.1 - - uvicorn 0.32.1 pyh31011fe_0 + - uvicorn 0.32.1 pyh31011fe_1 - uvloop >=0.14.0,!=0.15.0,!=0.15.1 - watchfiles >=0.13 - websockets >=10.4 license: BSD-3-Clause license_family: BSD - size: 7136 - timestamp: 1732185243035 + size: 7094 + timestamp: 1733332049165 - kind: conda name: uvloop version: 0.21.0 @@ -10328,49 +10368,51 @@ packages: - kind: conda name: wcwidth version: 0.2.13 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_0.conda - sha256: b6cd2fee7e728e620ec736d8dfee29c6c9e2adbd4e695a31f1d8f834a83e57e3 - md5: 68f0738df502a14213624b288c60c9ad + url: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda + sha256: f21e63e8f7346f9074fd00ca3b079bd3d2fa4d71f1f89d5b6934bf31446dc2a5 + md5: b68980f2495d096e71c7fd9d7ccf63e6 depends: - - python >=3.8 + - python >=3.9 license: MIT license_family: MIT - size: 32709 - timestamp: 1704731373922 + size: 32581 + timestamp: 1733231433877 - kind: conda name: webcolors version: 24.8.0 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.8.0-pyhd8ed1ab_0.conda - sha256: ec71f97c332a7d328ae038990b8090cbfa772f82845b5d2233defd167b7cc5ac - md5: eb48b812eb4fbb9ff238a6651fdbbcae + url: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.8.0-pyhd8ed1ab_1.conda + sha256: b0f2e15fe5c141d0900e03179f5fc04a20d2e70592d070fd4ce016ae33c7068a + md5: 5bfc9a98cfe3ddbf10624d6a78077639 depends: - - python >=3.5 + - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 18378 - timestamp: 1723294800217 + size: 18514 + timestamp: 1733312181508 - kind: conda name: webencodings version: 0.5.1 - build: pyhd8ed1ab_2 - build_number: 2 + build: pyhd8ed1ab_3 + build_number: 3 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_2.conda - sha256: 2adf9bd5482802837bc8814cbe28d7b2a4cbd2e2c52e381329eaa283b3ed1944 - md5: daf5160ff9cde3a468556965329085b9 + url: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda + sha256: 19ff205e138bb056a46f9e3839935a2e60bd1cf01c8241a5e172a422fed4f9c6 + md5: 2841eb5bfc75ce15e9a0054b98dcd64d depends: - - python >=2.6 + - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 15600 - timestamp: 1694681458271 + size: 15496 + timestamp: 1733236131358 - kind: conda name: websocket-client version: 1.8.0 @@ -10636,41 +10678,142 @@ packages: timestamp: 1689951608120 - kind: conda name: xz - version: 5.2.6 - build: h166bdaf_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/xz-5.2.6-h166bdaf_0.tar.bz2 - sha256: 03a6d28ded42af8a347345f82f3eebdd6807a08526d47899a42d62d319609162 - md5: 2161070d867d1b1204ea749c8eec4ef0 + version: 5.6.3 + build: h2dbfc1b_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-5.6.3-h2dbfc1b_0.conda + sha256: 65df445d131d1695c45a95d102b8ffaaed5a387b4f97e209ba7d8fa0b7599dec + md5: da081cb850e57b0a0a242bab9087fbeb depends: - - libgcc-ng >=12 - license: LGPL-2.1 and GPL-2.0 - size: 418368 - timestamp: 1660346797927 + - libgcc >=13 + - liblzma 5.6.3 h86ecc28_0 + - liblzma-devel 5.6.3 h86ecc28_0 + - xz-gpl-tools 5.6.3 h2dbfc1b_0 + - xz-tools 5.6.3 h86ecc28_0 + license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later + size: 23448 + timestamp: 1733324353894 - kind: conda name: xz - version: 5.2.6 - build: h57fd34a_0 + version: 5.6.3 + build: h9a6d368_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/xz-5.2.6-h57fd34a_0.tar.bz2 - sha256: 59d78af0c3e071021cfe82dc40134c19dab8cdf804324b62940f5c8cd71803ec - md5: 39c6b54e94014701dd157f4f576ed211 - license: LGPL-2.1 and GPL-2.0 - size: 235693 - timestamp: 1660346961024 + url: https://conda.anaconda.org/conda-forge/osx-arm64/xz-5.6.3-h9a6d368_0.conda + sha256: 25d515d97f9a147240933b7529dbe10f3ee1c87425cfa3d5faa5115f78ebfe70 + md5: 86674fa432df20be6feea4bd8fec0668 + depends: + - __osx >=11.0 + - liblzma 5.6.3 h39f12f2_0 + - liblzma-devel 5.6.3 h39f12f2_0 + - xz-gpl-tools 5.6.3 h9a6d368_0 + - xz-tools 5.6.3 h39f12f2_0 + license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later + size: 23570 + timestamp: 1733321627935 - kind: conda name: xz - version: 5.2.6 - build: h9cdd2b7_0 + version: 5.6.3 + build: hbcc6ac9_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/xz-5.6.3-hbcc6ac9_0.conda + sha256: 32cd43b293f1e6498831c499195afc5693c2bd604244a08fe8dd7107a20757d2 + md5: 504333561007fbf0af129f0cee4f5652 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - liblzma 5.6.3 hb9d3cd8_0 + - liblzma-devel 5.6.3 hb9d3cd8_0 + - xz-gpl-tools 5.6.3 hbcc6ac9_0 + - xz-tools 5.6.3 hb9d3cd8_0 + license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later + size: 23435 + timestamp: 1733321352996 +- kind: conda + name: xz-gpl-tools + version: 5.6.3 + build: h2dbfc1b_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-5.2.6-h9cdd2b7_0.tar.bz2 - sha256: 93f58a7b393adf41fa007ac8c55978765e957e90cd31877ece1e5a343cb98220 - md5: 83baad393a31d59c20b63ba4da6592df + url: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-gpl-tools-5.6.3-h2dbfc1b_0.conda + sha256: d99ba29095b47891e3c63d04832768c3bfe4ad49e7bb4e163ca18962b8b3f5ca + md5: b0245c3aad4592510bb0c19212c1bded depends: - - libgcc-ng >=12 - license: LGPL-2.1 and GPL-2.0 - size: 440555 - timestamp: 1660348056328 + - libgcc >=13 + - liblzma 5.6.3 h86ecc28_0 + license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later + size: 33355 + timestamp: 1733324193303 +- kind: conda + name: xz-gpl-tools + version: 5.6.3 + build: h9a6d368_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/xz-gpl-tools-5.6.3-h9a6d368_0.conda + sha256: 44a0738b66573d0e7def712ef2aa98f628b17ee4d1034ffe71c3ff36f68d12dd + md5: 9e4519aef300966683764ccbbaa89da4 + depends: + - __osx >=11.0 + - liblzma 5.6.3 h39f12f2_0 + license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later + size: 33343 + timestamp: 1733321610703 +- kind: conda + name: xz-gpl-tools + version: 5.6.3 + build: hbcc6ac9_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/xz-gpl-tools-5.6.3-hbcc6ac9_0.conda + sha256: e9829eb1207239198f03eba61d17d0f946bbaa7602f7ee019efe72ccb26525db + md5: e4f1e59ca2971e8d0fdde0928c3f7b7f + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - liblzma 5.6.3 hb9d3cd8_0 + license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later + size: 33299 + timestamp: 1733321343126 +- kind: conda + name: xz-tools + version: 5.6.3 + build: h39f12f2_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/xz-tools-5.6.3-h39f12f2_0.conda + sha256: be3c74ffe4a7a5852108dafe40ef41858ca1ea911c62b08b5e4dd8f641d23f22 + md5: 10855380caa384c8388b93ef29c7bd04 + depends: + - __osx >=11.0 + - liblzma 5.6.3 h39f12f2_0 + license: 0BSD AND LGPL-2.1-or-later + size: 81129 + timestamp: 1733321582233 +- kind: conda + name: xz-tools + version: 5.6.3 + build: h86ecc28_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-tools-5.6.3-h86ecc28_0.conda + sha256: 1d82a745cd60e674d18a0ce30ba13d72616261b1831530f480599ffc991c8476 + md5: 0136c7aa78b4d887c9fb6dbf39749778 + depends: + - libgcc >=13 + - liblzma 5.6.3 h86ecc28_0 + license: 0BSD AND LGPL-2.1-or-later + size: 95353 + timestamp: 1733324033407 +- kind: conda + name: xz-tools + version: 5.6.3 + build: hb9d3cd8_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/xz-tools-5.6.3-hb9d3cd8_0.conda + sha256: 7d03d4c0d18dbac0ebb9550890fddeb4d21a375709339a6bdedd0104bc4f4967 + md5: 40270c1e058fd1d31caee8bf2c68fc3a + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - liblzma 5.6.3 hb9d3cd8_0 + license: 0BSD AND LGPL-2.1-or-later + size: 89832 + timestamp: 1733321333192 - kind: conda name: yaml version: 0.2.5 diff --git a/examples/operators/magic.lock b/examples/operators/magic.lock index cdc8aa7faf..ce04d5e3a6 100644 --- a/examples/operators/magic.lock +++ b/examples/operators/magic.lock @@ -8,12 +8,11 @@ environments: linux-64: - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.9-py312h178313f_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/asgiref-3.8.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-hb88c0a9_10.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.0-hecf86a2_2.conda @@ -23,10 +22,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.1-hab05fe4_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.2-hdeadb07_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h7bd072d_8.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.3-h3a84f74_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.4-h3a84f74_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.1-hf42f96a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-hf42f96a_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.6-hdec8b0f_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.6-h159bff8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.449-h5558e3c_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.10.0-h113e628_0.conda @@ -40,36 +39,36 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2024.8.30-hbcca054_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.8.30-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py312h06ac9bb_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda + - 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.5-pyhff2d567_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/filelock-3.16.1-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 - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gflags-2.2.2-h5888daf_1005.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/glog-0.7.1-hbabe93e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/httptools-0.6.4-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-7.0.2-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 @@ -106,6 +105,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-hd590300_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-25_linux64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.3-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-devel-5.6.3-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.28-pthreads_h94d23a6_1.conda @@ -129,17 +130,17 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.5-h064dc61_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.9.4-hcb278e6_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120306-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120306-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120306-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120306-release.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120306-release.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.dev2024120416-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120416-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120416-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120416-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.dev2024120416-release.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/multiprocess-0.70.15-py312h98912ed_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.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 - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.2-h488ebb8_0.conda @@ -148,38 +149,34 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.28.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-prometheus-1.12.0rc1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-0.49b2-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-asgi-0.49b2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-fastapi-0.49b2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh10f6f8f_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-util-http-0.49b2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/orc-2.0.3-he039a57_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.3-py312hf9745cd_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-11.0.0-py312h7b63e92_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.0-py312h66e93f0_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/protobuf-5.28.2-py312h2ec8cdc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-18.1.0-py312h7900ff3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-18.1.0-py312h01725c0_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.2-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.3-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.27.1-py312h12e396e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.6.1-pyh3cfb1c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyinstrument-5.0.0-py312h66e93f0_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.7-hc5c86c4_0_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python-xxhash-3.5.0-py312h66e93f0_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda @@ -193,10 +190,10 @@ environments: - 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 - - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-ha2e4443_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.1.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyh7900ff3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda @@ -205,15 +202,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.46.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.14.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.14.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.14.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.0-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/uvloop-0.21.0-py312h66e93f0_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/watchfiles-1.0.0-py312h12e396e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/websockets-14.1-py312h66e93f0_0.conda @@ -221,7 +218,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.11-hb9d3cd8_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xxhash-0.8.2-hd590300_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-5.2.6-h166bdaf_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-5.6.3-hbcc6ac9_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-gpl-tools-5.6.3-hbcc6ac9_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-tools-5.6.3-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.18.0-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda @@ -230,12 +229,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda linux-aarch64: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.9-py312hcc812fe_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/asgiref-3.8.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-hac900a4_10.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.0-h35473ba_2.conda @@ -245,10 +243,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.1-hf4e072c_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.2-h10eb1bc_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h28a5e6a_8.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.3-h29aef15_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.4-h29aef15_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.1-h4c7db1d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h4c7db1d_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.6-h7939e66_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.6-hffbb33f_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.449-h7085e57_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-core-cpp-1.14.0-h1887c18_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-identity-cpp-1.10.0-h47b0b28_0.conda @@ -262,37 +260,37 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2024.8.30-hcefe29a_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.8.30-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cffi-1.17.1-py312hac81daf_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda + - 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.5-pyhff2d567_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/filelock-3.16.1-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 - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gflags-2.2.2-h5ad3122_1005.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/glog-0.7.1-h468a4a4_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/httptools-0.6.4-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-7.0.2-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/keyutils-1.6.1-h4e544f5_0.tar.bz2 @@ -329,6 +327,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libiconv-1.17-h31becfc_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libjpeg-turbo-3.0.0-h31becfc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-25_linuxaarch64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.3-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-devel-5.6.3-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnghttp2-1.64.0-hc8609a4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.28-pthreads_h9d3fd7e_1.conda @@ -352,17 +352,17 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.5-hf4efe5d_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.9.4-hd600fc2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.2-py312h74ce7d3_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120306-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120306-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120306-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120306-release.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120306-release.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.dev2024120416-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120416-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120416-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120416-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.dev2024120416-release.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/multiprocess-0.70.15-py312hdd3e373_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.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 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openjpeg-2.5.2-h0d9d63b_0.conda @@ -371,38 +371,34 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.28.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-prometheus-1.12.0rc1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-0.49b2-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-asgi-0.49b2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-fastapi-0.49b2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh10f6f8f_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-util-http-0.49b2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/orc-2.0.3-h90de224_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pandas-2.2.3-py312ha2895bd_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pillow-11.0.0-py312h5ab5af3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.2.0-py312hb2c0f52_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/protobuf-5.28.2-py312h6f74592_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pthread-stubs-0.4-h86ecc28_1002.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-18.1.0-py312h8025657_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-18.1.0-py312h66f7834_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.2-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.3-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pydantic-core-2.27.1-py312h8cbf658_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.6.1-pyh3cfb1c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyinstrument-5.0.0-py312hb2c0f52_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.7-h5d932e8_0_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-xxhash-3.5.0-py312h52516f5_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.12-5_cp312.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda @@ -416,10 +412,10 @@ environments: - 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 - - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-h1088aeb_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.1.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyh7900ff3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda @@ -428,15 +424,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.46.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.14.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.14.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.14.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.0-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/uvloop-0.21.0-py312hb2c0f52_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/watchfiles-1.0.0-py312h8cbf658_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/websockets-14.1-py312hb2c0f52_0.conda @@ -444,7 +440,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxau-1.0.11-h86ecc28_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxdmcp-1.1.5-h57736b2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xxhash-0.8.2-h31becfc_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-5.2.6-h9cdd2b7_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-5.6.3-h2dbfc1b_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-gpl-tools-5.6.3-h2dbfc1b_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-tools-5.6.3-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yaml-0.2.5-hf897c2e_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.18.0-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zeromq-4.3.5-h5efb499_7.conda @@ -452,12 +450,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstandard-0.23.0-py312hb698573_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.6-h02f22dd_0.conda osx-arm64: - - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.9-py312h998013c_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/asgiref-3.8.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-h9b725a8_10.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.0-h5d7ee29_2.conda @@ -467,10 +464,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.1-hf483d09_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.2-h39f8ad8_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h68a0d7e_8.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.3-h840aca7_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.4-h840aca7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.1-h5d7ee29_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-h5d7ee29_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.6-ha226bf8_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.6-h8474b10_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.449-h3b64406_4.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.14.0-hd50102c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.10.0-hc602bab_0.conda @@ -484,36 +481,36 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2024.8.30-hf0a4a13_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.8.30-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.1-py312h0fad829_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda + - 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.5-pyhff2d567_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/filelock-3.16.1-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 - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gflags-2.2.2-hf9b8971_1005.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/glog-0.7.1-heb240a5_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/httptools-0.6.4-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-7.0.2-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda @@ -531,7 +528,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-25_osxarm64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcrc32c-1.1.2-hbdafb3b_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.10.1-h13a7ad3_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.4-ha82da77_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.5-ha82da77_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.22-hd74edd7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20191231-hc8eb9b7_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libev-4.33-h93a5062_2.conda @@ -546,6 +543,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.17-h0d3ecfb_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.0.0-hb547adb_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-25_osxarm64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.3-h39f12f2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-devel-5.6.3-h39f12f2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.64.0-h6d7220d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.28-openmp_hf332438_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-h5168bdf_2_cpu.conda @@ -565,17 +564,17 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.4-hdb05f8b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.9.4-hb7217d7_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312ha0ccf2a_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120306-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120306-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120306-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120306-release.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120306-release.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.dev2024120416-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120416-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120416-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120416-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.dev2024120416-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_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h7bae524_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openjpeg-2.5.2-h9f1df11_0.conda @@ -584,38 +583,34 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.28.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-prometheus-1.12.0rc1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-0.49b2-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-asgi-0.49b2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-fastapi-0.49b2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh10f6f8f_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-util-http-0.49b2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/orc-2.0.3-h121fd32_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.3-py312hcd31e36_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-11.0.0-py312haf37ca6_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.0-py312h024a12e_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/protobuf-5.28.2-py312hf02c72a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pthread-stubs-0.4-hd74edd7_1002.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-18.1.0-py312h1f38498_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-18.1.0-py312hc40f475_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.2-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.3-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.27.1-py312hcd83bfe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.6.1-pyh3cfb1c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyinstrument-5.0.0-py312h0bf5046_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.7-h739c21a_0_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-xxhash-3.5.0-py312h024a12e_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-5_cp312.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda @@ -628,10 +623,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_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_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-hd02b534_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.1.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyh7900ff3_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda @@ -640,15 +635,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.46.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.14.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.14.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.14.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.0-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/uvloop-0.21.0-py312h0bf5046_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/watchfiles-1.0.0-py312hcd83bfe_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/websockets-14.1-py312hea69d52_0.conda @@ -656,7 +651,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxau-1.0.11-hd74edd7_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxdmcp-1.1.5-hd74edd7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xxhash-0.8.2-hb547adb_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xz-5.2.6-h57fd34a_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xz-5.6.3-h9a6d368_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xz-gpl-tools-5.6.3-h9a6d368_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xz-tools-5.6.3-h39f12f2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.18.0-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda @@ -713,18 +710,18 @@ packages: - kind: conda name: aiohappyeyeballs version: 2.4.4 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_0.conda - sha256: 4282838f468f75f0c1746cbc6cdd3365b9f6d449bf5af8a74b234e396d847bf0 - md5: 8d6f8a679aa0272ba8d6092ce4824870 + url: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_1.conda + sha256: 95d4713e49ea92ae50cf42393683ede706b7875af5f7cb14c253438180afa732 + md5: 296b403617bafa89df4971567af79013 depends: - python >=3.9 license: PSF-2.0 - license_family: PSF - size: 19310 - timestamp: 1733135584059 + size: 19351 + timestamp: 1733332029649 - kind: conda name: aiohttp version: 3.11.9 @@ -800,35 +797,36 @@ packages: - kind: conda name: aiosignal version: 1.3.1 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_0.tar.bz2 - sha256: 575c742e14c86575986dc867463582a970463da50b77264cdf54df74f5563783 - md5: d1e1eb7e21a9e2c74279d87dafb68156 + url: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_1.conda + sha256: 9c7b639ea0cc796ef46c57fa104ec1f2ed53cd11c063518869a5a9d7d3b0b2db + md5: d736bd1b8904d7593dce4893e58a7881 depends: - frozenlist >=1.1.0 - - python >=3.7 + - python >=3.9 license: Apache-2.0 - license_family: APACHE - size: 12730 - timestamp: 1667935912504 + size: 13157 + timestamp: 1733332198143 - kind: conda name: annotated-types version: 0.7.0 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_0.conda - sha256: 668f0825b6c18e4012ca24a0070562b6ec801ebc7008228a428eb52b4038873f - md5: 7e9f4612544c8edbfd6afad17f1bd045 + url: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda + sha256: e0ea1ba78fbb64f17062601edda82097fcf815012cf52bb704150a2668110d48 + md5: 2934f256a8acfe48f6ebb4fce6cde29c depends: - - python >=3.7 + - python >=3.9 - typing-extensions >=4.0.0 license: MIT license_family: MIT - size: 18235 - timestamp: 1716290348421 + size: 18074 + timestamp: 1733247158254 - kind: conda name: anyio version: 4.6.2.post1 @@ -851,23 +849,6 @@ packages: license_family: MIT size: 109864 timestamp: 1728935803440 -- kind: conda - name: asgiref - version: 3.8.1 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/asgiref-3.8.1-pyhd8ed1ab_1.conda - sha256: c8d51a32f3530e3ca176d8f7bf5621c68c7c1c03fe9cc5c3c49d8ba4a1248f43 - md5: 21187c8276f87b6aedfe63c267a6eed7 - depends: - - python >=3.9 - - typing_extensions >=4 - license: BSD-3-Clause - license_family: BSD - size: 26436 - timestamp: 1733215704904 - kind: conda name: attrs version: 24.2.0 @@ -1315,12 +1296,12 @@ packages: timestamp: 1731734668760 - kind: conda name: aws-c-s3 - version: 0.7.3 + version: 0.7.4 build: h29aef15_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.3-h29aef15_0.conda - sha256: 57aa8b28890efd82c479e902125ea8a37782b163f13ae0856b259ec527a52879 - md5: e09cd76e50ce09ec14c17109da5c6502 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.4-h29aef15_0.conda + sha256: 396517aca6bdbe2e3d8a6275b33865eeb0d09f0dd379c3cc55c36f6004b17f2a + md5: 1046cf15a47f06a0af07f674e477d807 depends: - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.0,<0.8.1.0a0 @@ -1332,16 +1313,16 @@ packages: - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 117467 - timestamp: 1733098782199 + size: 117398 + timestamp: 1733299233564 - kind: conda name: aws-c-s3 - version: 0.7.3 + version: 0.7.4 build: h3a84f74_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.3-h3a84f74_0.conda - sha256: db17a15e5e01f19700bf9be961e1c4e002ccf8dc4d9caa3a24a0ab54f00f2c2d - md5: 171850b890600458ae6c990e78f1fa23 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.4-h3a84f74_0.conda + sha256: 91c6f7aa3dd230bcefe2654469b0704c2bdb2574e6d0d7c56cf9e9071f44cc26 + md5: 7d029b9aa9decf4c0fb8a9a8940c9906 depends: - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 @@ -1354,16 +1335,16 @@ packages: - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 113536 - timestamp: 1733098705479 + size: 113660 + timestamp: 1733299194447 - kind: conda name: aws-c-s3 - version: 0.7.3 + version: 0.7.4 build: h840aca7_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.3-h840aca7_0.conda - sha256: 18972a91f32f6b0edb58eb71cb2f5b56654183fd6ba611b3b0d6cc484017aeff - md5: 893e668d99fa4b31eef9dc5b19c21b9a + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.4-h840aca7_0.conda + sha256: 564bbb781c1aebfcdda43a0e82f447e34de1764c57ebc1733fe6437248f5b7c9 + md5: 02f78a084e101dee30c794f963549de4 depends: - __osx >=11.0 - aws-c-auth >=0.8.0,<0.8.1.0a0 @@ -1374,8 +1355,8 @@ packages: - aws-checksums >=0.2.2,<0.2.3.0a0 license: Apache-2.0 license_family: Apache - size: 97145 - timestamp: 1733098874599 + size: 97136 + timestamp: 1733299356527 - kind: conda name: aws-c-sdkutils version: 0.2.1 @@ -1477,13 +1458,14 @@ packages: - kind: conda name: aws-crt-cpp version: 0.29.6 - build: h7939e66_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.6-h7939e66_1.conda - sha256: 3d0b1996d28a2647ced83ed8052ee331df70b2c1a68fb6db0fe4e743a88be54d - md5: 5e573a52a1cd20f81d7fdf1db4f4583a + build: h159bff8_2 + build_number: 2 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.6-h159bff8_2.conda + sha256: 04ca62caa764bb95f304af8486c1af7c4f76d4ad5204c494edcf86af653d2ad0 + md5: c498e6490834aacf7835c96403862881 depends: + - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.0,<0.8.1.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 @@ -1491,23 +1473,23 @@ packages: - aws-c-http >=0.9.1,<0.9.2.0a0 - aws-c-io >=0.15.2,<0.15.3.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - - aws-c-s3 >=0.7.3,<0.7.4.0a0 + - aws-c-s3 >=0.7.4,<0.7.5.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 283670 - timestamp: 1733150929992 + size: 354822 + timestamp: 1733333950713 - kind: conda name: aws-crt-cpp version: 0.29.6 - build: ha226bf8_1 - build_number: 1 + build: h8474b10_2 + build_number: 2 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.6-ha226bf8_1.conda - sha256: f645e2a8015d8e71ed785c81a14a202ebce2f5dcca8982cd7ec5f8000f9be5c3 - md5: 81da0b5f65ab08e3919d6eadf08b5776 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.6-h8474b10_2.conda + sha256: 5ca9df9516583076ea40129e71b103efaca21ca02f40b59d69485823613cbfba + md5: 54c898f166bcfbe06c2b7ac36360f371 depends: - __osx >=11.0 - aws-c-auth >=0.8.0,<0.8.1.0a0 @@ -1517,24 +1499,23 @@ packages: - aws-c-http >=0.9.1,<0.9.2.0a0 - aws-c-io >=0.15.2,<0.15.3.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - - aws-c-s3 >=0.7.3,<0.7.4.0a0 + - aws-c-s3 >=0.7.4,<0.7.5.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - libcxx >=18 license: Apache-2.0 license_family: Apache - size: 236505 - timestamp: 1733151090562 + size: 235829 + timestamp: 1733334077172 - kind: conda name: aws-crt-cpp version: 0.29.6 - build: hdec8b0f_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.6-hdec8b0f_1.conda - sha256: cd09f1d5d854607ce7acafc76c74e864f296d296e60b54054a10f757ecc3d2dd - md5: 40647232fad98f92be8c6050a7e0c2bd + build: hffbb33f_2 + build_number: 2 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.6-hffbb33f_2.conda + sha256: 5f9490edaddde550cf05861626175b648da73c84bcde61ac2a6a1bf1a8fd6982 + md5: fb8be2af168b63e0b77076a1dc6baa85 depends: - - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.0,<0.8.1.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 @@ -1542,14 +1523,14 @@ packages: - aws-c-http >=0.9.1,<0.9.2.0a0 - aws-c-io >=0.15.2,<0.15.3.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - - aws-c-s3 >=0.7.3,<0.7.4.0a0 + - aws-c-s3 >=0.7.4,<0.7.5.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 354710 - timestamp: 1733150818238 + size: 284031 + timestamp: 1733333955728 - kind: conda name: aws-sdk-cpp version: 1.11.449 @@ -2171,49 +2152,52 @@ packages: - kind: conda name: charset-normalizer version: 3.4.0 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_0.conda - sha256: 1873ac45ea61f95750cb0b4e5e675d1c5b3def937e80c7eebb19297f76810be8 - md5: a374efa97290b8799046df7c5ca17164 + url: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_1.conda + sha256: 63022ee2c6a157a9f980250a66f54bdcdf5abee817348d0f9a74c2441a6fbf0e + md5: 6581a17bba6b948bb60130026404a9d6 depends: - - python >=3.7 + - python >=3.9 license: MIT license_family: MIT - size: 47314 - timestamp: 1728479405343 + size: 47533 + timestamp: 1733218182393 - kind: conda name: click version: 8.1.7 - build: unix_pyh707e725_0 + build: unix_pyh707e725_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_0.conda - sha256: f0016cbab6ac4138a429e28dbcb904a90305b34b3fe41a9b89d697c90401caec - md5: f3ad426304898027fc619827ff428eca + url: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_1.conda + sha256: 1cd5fc6ccdd5141378e51252a7a3810b07fd5a7e6934a5b4a7eccba66566224b + md5: cb8e52f28f5e592598190c562e7b5bf1 depends: - __unix - - python >=3.8 + - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 84437 - timestamp: 1692311973840 + size: 84513 + timestamp: 1733221925078 - kind: conda name: colorama version: 0.4.6 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 - sha256: 2c1b2e9755ce3102bca8d69e8f26e4f087ece73f50418186aee7c74bef8e1698 - md5: 3faab06a954c2a04039983f2c4a50d99 + url: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + sha256: ab29d57dc70786c1269633ba3dff20288b81664d3ff8d21af995742e2bb03287 + md5: 962b9857ee8e7018c22f2776ffa0b2d7 depends: - - python >=3.7 + - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 25170 - timestamp: 1666700778190 + size: 27011 + timestamp: 1733218222191 - kind: conda name: datasets version: 2.14.4 @@ -2277,58 +2261,61 @@ packages: - kind: conda name: dnspython version: 2.7.0 - build: pyhff2d567_0 + build: pyhff2d567_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_0.conda - sha256: 3e2ea1bfd90969e0e1f152bb1f969c56661278ad6bfaa3272027b1ff0d9a1a23 - md5: 0adf8f63d500d20418656289249533f9 + url: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda + sha256: 3ec40ccf63f2450c5e6c7dd579e42fc2e97caf0d8cd4ba24aa434e6fc264eda0 + md5: 5fbd60d61d21b4bd2f9d7a48fe100418 depends: - - python >=3.9.0,<4.0.0 + - python >=3.9,<4.0.0 - sniffio constrains: - - cryptography >=43 + - aioquic >=1.0.0 - wmi >=1.5.1 - - h2 >=4.1.0 + - httpx >=0.26.0 - trio >=0.23 + - cryptography >=43 - httpcore >=1.0.0 - - aioquic >=1.0.0 - - httpx >=0.26.0 - idna >=3.7 + - h2 >=4.1.0 license: ISC license_family: OTHER - size: 172740 - timestamp: 1728178868478 + size: 172172 + timestamp: 1733256829961 - kind: conda name: email-validator version: 2.2.0 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_0.conda - sha256: ea9e936ed7c49ea6d66fa3554afe31ba311f2a3d5e384d8c38925fda9e37bdb9 - md5: 3067adf57ee658ddf5bfad47b0041ce4 + url: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda + sha256: b91a19eb78edfc2dbb36de9a67f74ee2416f1b5273dd7327abe53f2dbf864736 + md5: da16dd3b0b71339060cd44cb7110ddf9 depends: - dnspython >=2.0.0 - idna >=2.0.0 - - python >=3.7 + - python >=3.9 license: Unlicense - size: 44157 - timestamp: 1718984716782 + size: 44401 + timestamp: 1733300827551 - kind: conda name: email_validator version: 2.2.0 - build: hd8ed1ab_0 + build: hd8ed1ab_1 + build_number: 1 subdir: noarch noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_0.conda - sha256: 2cbbbe9e0f3872214227c27b8b775dd2296a435c90ef50a7cc69934c329b6c65 - md5: 0214a004f7cf5ac28fc10a390dfc47ee + url: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_1.conda + sha256: e0d0fdf587aa0ed0ff08b2bce3ab355f46687b87b0775bfba01cc80a859ee6a2 + md5: 0794f8807ff2c6f020422cacb1bd7bfa depends: - email-validator >=2.2.0,<2.2.1.0a0 license: Unlicense - size: 6690 - timestamp: 1718984720419 + size: 6552 + timestamp: 1733300828176 - kind: conda name: exceptiongroup version: 1.2.2 @@ -2389,17 +2376,18 @@ packages: - kind: conda name: filelock version: 3.16.1 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_0.conda - sha256: 1da766da9dba05091af87977922fe60dc7464091a9ccffb3765d403189d39be4 - md5: 916f8ec5dd4128cd5f207a3c4c07b2c6 + url: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_1.conda + sha256: 18dca6e2194732df7ebf824abaefe999e4765ebe8e8a061269406ab88fc418b9 + md5: d692e9ba6f92dc51484bf3477e36ce7c depends: - - python >=3.7 + - python >=3.9 license: Unlicense - size: 17357 - timestamp: 1726613593584 + size: 17441 + timestamp: 1733240909987 - kind: conda name: freetype version: 2.12.1 @@ -2629,51 +2617,54 @@ packages: - kind: conda name: h11 version: 0.14.0 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_0.tar.bz2 - sha256: 817d2c77d53afe3f3d9cf7f6eb8745cdd8ea76c7adaa9d7ced75c455a2c2c085 - md5: b21ed0883505ba1910994f1df031a428 + url: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda + sha256: 622516185a7c740d5c7f27016d0c15b45782c1501e5611deec63fd70344ce7c8 + md5: 7ee49e89531c0dcbba9466f6d115d585 depends: - - python >=3 + - python >=3.9 - typing_extensions license: MIT license_family: MIT - size: 48251 - timestamp: 1664132995560 + size: 51846 + timestamp: 1733327599467 - kind: conda name: h2 version: 4.1.0 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2 - sha256: bfc6a23849953647f4e255c782e74a0e18fe16f7e25c7bb0bc57b83bb6762c7a - md5: b748fbf7060927a6e82df7cb5ee8f097 + url: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_1.conda + sha256: 843ddad410c370672a8250470697027618f104153612439076d4d7b91eeb7b5c + md5: 825927dc7b0f287ef8d4d0011bb113b1 depends: - hpack >=4.0,<5 - hyperframe >=6.0,<7 - - python >=3.6.1 + - python >=3.9 license: MIT license_family: MIT - size: 46754 - timestamp: 1634280590080 + size: 52000 + timestamp: 1733298867359 - kind: conda name: hpack version: 4.0.0 - build: pyh9f0ad1d_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2 - sha256: 5dec948932c4f740674b1afb551223ada0c55103f4c7bf86a110454da3d27cb8 - md5: 914d6646c4dbb1fd3ff539830a12fd71 + url: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda + sha256: ec89b7e5b8aa2f0219f666084446e1fb7b54545861e9caa892acb24d125761b5 + md5: 2aa5ff7fa34a81b9196532c84c10d865 depends: - - python + - python >=3.9 license: MIT license_family: MIT - size: 25341 - timestamp: 1598856368685 + size: 29412 + timestamp: 1733299296857 - kind: conda name: httpcore version: 1.0.7 @@ -2791,18 +2782,19 @@ packages: - kind: conda name: hyperframe version: 6.0.1 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 - sha256: e374a9d0f53149328134a8d86f5d72bca4c6dcebed3c0ecfa968c02996289330 - md5: 9f765cbfab6870c8435b9eefecd7a1f4 + url: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda + sha256: e91c6ef09d076e1d9a02819cd00fa7ee18ecf30cdd667605c853980216584d1b + md5: 566e75c90c1d0c8c459eb0ad9833dc7a depends: - - python >=3.6 + - python >=3.9 license: MIT license_family: MIT - size: 14646 - timestamp: 1619110249723 + size: 17239 + timestamp: 1733298862681 - kind: conda name: icu version: '75.1' @@ -2853,19 +2845,20 @@ packages: - kind: conda name: jinja2 version: 3.1.4 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_0.conda - sha256: 27380d870d42d00350d2d52598cddaf02f9505fb24be09488da0c9b8d1428f2d - md5: 7b86ecb7d3557821c649b3c31e3eb9f2 + url: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_1.conda + sha256: 85a7169c078b8065bd9d121b0e7b99c8b88c42a411314b6ae5fcd81c48c4710a + md5: 08cce3151bde4ecad7885bd9fb647532 depends: - markupsafe >=2.0 - - python >=3.7 + - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 111565 - timestamp: 1715127275924 + size: 110963 + timestamp: 1733217424408 - kind: conda name: jupyter_client version: 8.6.3 @@ -3846,18 +3839,18 @@ packages: timestamp: 1726659794676 - kind: conda name: libcxx - version: 19.1.4 + version: 19.1.5 build: ha82da77_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.4-ha82da77_0.conda - sha256: 342896ebc1d6acbf022ca6df006a936b9a472579e91e3c502cb1f52f218b78e9 - md5: a2d3d484d95889fccdd09498d8f6bf9a + url: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.5-ha82da77_0.conda + sha256: 7918cc0bb7a6554cdd3eee634c3dc414a1ab8ec49faeca1567367bb92118f9d7 + md5: 3c7be0df28ccda1d193ea6de56dcb5ff depends: - __osx >=11.0 license: Apache-2.0 WITH LLVM-exception license_family: Apache - size: 520678 - timestamp: 1732060258949 + size: 519819 + timestamp: 1733291654212 - kind: conda name: libdeflate version: '1.22' @@ -4678,6 +4671,89 @@ packages: license_family: BSD size: 15823 timestamp: 1729643275943 +- kind: conda + name: liblzma + version: 5.6.3 + build: h39f12f2_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.3-h39f12f2_0.conda + sha256: de00d627e41636591d05407c666de957a9ddd3c0f633340c016725695569b049 + md5: faa0ab222b9d12a52a8ebc655c9236f3 + depends: + - __osx >=11.0 + license: 0BSD + size: 98836 + timestamp: 1733321533638 +- kind: conda + name: liblzma + version: 5.6.3 + build: h86ecc28_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.3-h86ecc28_0.conda + sha256: 004785e427d255da8cf713b4722f8330bf496ce6fc665a0b21d007d377ffee5f + md5: 83d366f7bf01fc2d7781b4cc113fc9d3 + depends: + - libgcc >=13 + license: 0BSD + size: 124115 + timestamp: 1733323693681 +- kind: conda + name: liblzma + version: 5.6.3 + build: hb9d3cd8_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.3-hb9d3cd8_0.conda + sha256: 31637db828ec67ab8697de324e6074af5a36cbeddc37202d8d31e2fb397619e8 + md5: 137c535dddd880f844f33ed91b8abdba + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + license: 0BSD + size: 111223 + timestamp: 1733321312512 +- kind: conda + name: liblzma-devel + version: 5.6.3 + build: h39f12f2_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-devel-5.6.3-h39f12f2_0.conda + sha256: 2e5a9fb298bd8c01ceed8db386bfb0a125d74cef2c5ee615b4f9695b2808f7e0 + md5: 89955d2470cbacea3d5e069d67c94f44 + depends: + - __osx >=11.0 + - liblzma 5.6.3 h39f12f2_0 + license: 0BSD + size: 112941 + timestamp: 1733321552604 +- kind: conda + name: liblzma-devel + version: 5.6.3 + build: h86ecc28_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-devel-5.6.3-h86ecc28_0.conda + sha256: 740b3f1ffa57ad5f0eec0c868e23d4e1f811871c6685a04af57f1943cde1a575 + md5: 27995ae8bc93eeb949315655daa19d3c + depends: + - libgcc >=13 + - liblzma 5.6.3 h86ecc28_0 + license: 0BSD + size: 376767 + timestamp: 1733323860026 +- kind: conda + name: liblzma-devel + version: 5.6.3 + build: hb9d3cd8_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/liblzma-devel-5.6.3-hb9d3cd8_0.conda + sha256: 98020d4b4cc6c728d2e6dc1174cb2548cf03ce5098cd17c37b32f06e896a943a + md5: 7069f4de645461447f1ab7736c94db26 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - liblzma 5.6.3 hb9d3cd8_0 + license: 0BSD + size: 375452 + timestamp: 1733321322415 - kind: conda name: libnghttp2 version: 1.64.0 @@ -5773,27 +5849,29 @@ packages: - kind: conda name: markdown-it-py version: 3.0.0 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - sha256: c041b0eaf7a6af3344d5dd452815cdc148d6284fec25a4fa3f4263b3a021e962 - md5: 93a8e71256479c62074356ef6ebf501b + url: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_1.conda + sha256: 0fbacdfb31e55964152b24d5567e9a9996e1e7902fb08eb7d91b5fd6ce60803a + md5: fee3164ac23dfca50cfcc8b85ddefb81 depends: - mdurl >=0.1,<1 - - python >=3.8 + - python >=3.9 license: MIT license_family: MIT - size: 64356 - timestamp: 1686175179621 + size: 64430 + timestamp: 1733250550053 - kind: conda name: markupsafe version: 3.0.2 - build: py312h178313f_0 + build: py312h178313f_1 + build_number: 1 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_0.conda - sha256: 15f14ab429c846aacd47fada0dc4f341d64491e097782830f0906d00cb7b48b6 - md5: a755704ea0e2503f8c227d84829a8e81 + url: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_1.conda + sha256: 4a6bf68d2a2b669fecc9a4a009abd1cf8e72c2289522ff00d81b5a6e51ae78f5 + md5: eb227c3e0bf58f5bd69c0532b157975b depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -5803,16 +5881,17 @@ packages: - jinja2 >=3.0.0 license: BSD-3-Clause license_family: BSD - size: 24878 - timestamp: 1729351558563 + size: 24604 + timestamp: 1733219911494 - kind: conda name: markupsafe version: 3.0.2 - build: py312h74ce7d3_0 + build: py312h74ce7d3_1 + build_number: 1 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.2-py312h74ce7d3_0.conda - sha256: 997baf7f46bce112f6e0390efaa7fbb892b8f31567d3c554f08ac636774d74f7 - md5: 8992b90e8374193d53118f7651db0b73 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.2-py312h74ce7d3_1.conda + sha256: 1d500158262f30b9c23e37d1c861fe76e127a3926d69b3b38c25d20d3faa6f9f + md5: bc8607ab678073a0441808a31465f4fb depends: - libgcc >=13 - python >=3.12,<3.13.0a0 @@ -5821,16 +5900,17 @@ packages: - jinja2 >=3.0.0 license: BSD-3-Clause license_family: BSD - size: 25013 - timestamp: 1729352489213 + size: 25079 + timestamp: 1733220639175 - kind: conda name: markupsafe version: 3.0.2 - build: py312ha0ccf2a_0 + build: py312h998013c_1 + build_number: 1 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312ha0ccf2a_0.conda - sha256: 360e958055f35e5087942b9c499eaafae984a951b84cf354ef7481a2806f340d - md5: c6ff9f291d011c9d4f0b840f49435c64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312h998013c_1.conda + sha256: 4aa997b244014d3707eeef54ab0ee497d12c0d0d184018960cce096169758283 + md5: 46e547061080fddf9cf95a0327e8aba6 depends: - __osx >=11.0 - python >=3.12,<3.13.0a0 @@ -5840,80 +5920,80 @@ packages: - jinja2 >=3.0.0 license: BSD-3-Clause license_family: BSD - size: 24495 - timestamp: 1729351534830 + size: 24048 + timestamp: 1733219945697 - kind: conda name: max - version: 24.6.0.dev2024120306 + version: 24.6.0.dev2024120416 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120306-release.conda - sha256: 2aae2a8286dca29453e8cc8cfe13511aa016a521ac0c9201ceb24d1ba6c4138e - md5: 9c25081ace6ad2c13675cf0123109cb9 - depends: - - max-core ==24.6.0.dev2024120306 release - - max-python >=24.6.0.dev2024120306,<25.0a0 - - mojo-jupyter ==24.6.0.dev2024120306 release - - mblack ==24.6.0.dev2024120306 release + url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120416-release.conda + sha256: 956c006755158839ee6f8de7d91360cd1990024868d867482a62885241c9794f + md5: 09947b7aa3a3c35b413b7c0d118126e3 + depends: + - max-core ==24.6.0.dev2024120416 release + - max-python >=24.6.0.dev2024120416,<25.0a0 + - mojo-jupyter ==24.6.0.dev2024120416 release + - mblack ==24.6.0.dev2024120416 release license: LicenseRef-Modular-Proprietary - size: 9929 - timestamp: 1733209293577 + size: 9925 + timestamp: 1733332193356 - kind: conda name: max-core - version: 24.6.0.dev2024120306 + version: 24.6.0.dev2024120416 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120306-release.conda - sha256: a82534696c6e078fb4e14b4b0f058336ffd0a647f7404e85aaee18eec25be067 - md5: c249d77d8e5885dd0eacd9028131413f + url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120416-release.conda + sha256: e73a6e3abebc4516d56d39b85d10e98883885218273b2ef19c7cfe4d3df7a4ef + md5: 43a976936171480fe7dbc2fed1224312 depends: - - mblack ==24.6.0.dev2024120306 release + - mblack ==24.6.0.dev2024120416 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 254711372 - timestamp: 1733209193854 + size: 245904359 + timestamp: 1733332193354 - kind: conda name: max-core - version: 24.6.0.dev2024120306 + version: 24.6.0.dev2024120416 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120306-release.conda - sha256: bd0858a3e2069a86cd71370322e7ac26ad3948225e4f0811e4fbf8771d44d0ea - md5: e5b6ae7316dc2b08a52cee8f27b4f484 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120416-release.conda + sha256: e32ebc6b7f589881f14caec8df02b65c40839a0210ef6a87d85243b61b5fc7d8 + md5: 15cac805514c6a381a9a50ee3a86de25 depends: - - mblack ==24.6.0.dev2024120306 release + - mblack ==24.6.0.dev2024120416 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 258488596 - timestamp: 1733209293575 + size: 249618446 + timestamp: 1733332472125 - kind: conda name: max-core - version: 24.6.0.dev2024120306 + version: 24.6.0.dev2024120416 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120306-release.conda - sha256: 88b5f2cbb2724067d33b10515613ec845f134c3758fd063852ac191a276d7812 - md5: 05acbd2d9cf25aa913a979aa9802c194 + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120416-release.conda + sha256: bc27468be85cc7fd207ec44a4a0b1b11aa54792737a20fcf8355a2f2e7a215d5 + md5: c27c6f67be3abffbf559bfd50852b493 depends: - - mblack ==24.6.0.dev2024120306 release + - mblack ==24.6.0.dev2024120416 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 220248523 - timestamp: 1733209020078 + size: 210212276 + timestamp: 1733332258535 - kind: conda name: max-python - version: 24.6.0.dev2024120306 + version: 24.6.0.dev2024120416 build: 3.12release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120306-3.12release.conda - sha256: 78dc00af885799e8c1f92185a505aee022f2ffd7191d24fa94ef428457f53e15 - md5: 4bdce0c1dd562e22566551d578103d2f + url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120416-3.12release.conda + sha256: 48e30a62cdee247e87b9f07d465ae91c75d47f292eeba5d2ca9c2d86d30e8875 + md5: 78af7733b4858c1bd882279a45e98795 depends: - - max-core ==24.6.0.dev2024120306 release + - max-core ==24.6.0.dev2024120416 release - python 3.12.* - pillow - fastapi @@ -5923,7 +6003,6 @@ packages: - opentelemetry-api - opentelemetry-exporter-otlp-proto-http >=1.27.0 - opentelemetry-exporter-prometheus >=0.48b0 - - opentelemetry-instrumentation-fastapi - opentelemetry-sdk >=1.27.0 - pydantic-settings >=2.4.0,<3 - pydantic >=2.4.0,<3 @@ -5936,18 +6015,18 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 128537272 - timestamp: 1733209193862 + size: 122878721 + timestamp: 1733332193368 - kind: conda name: max-python - version: 24.6.0.dev2024120306 + version: 24.6.0.dev2024120416 build: 3.12release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120306-3.12release.conda - sha256: 3910ceb9135f2258df30dd7a5d87b8f80a284645d6da48daa0e9bb145a49744e - md5: e7d3ebeaaeb2bd99167fda861a7e7aba + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120416-3.12release.conda + sha256: ffff206620d5bd2cd90830467d4234e3a606143811006e67203899a9b8512938 + md5: 55ff43da6401cdd96073ae044b428afd depends: - - max-core ==24.6.0.dev2024120306 release + - max-core ==24.6.0.dev2024120416 release - python 3.12.* - pillow - fastapi @@ -5957,7 +6036,6 @@ packages: - opentelemetry-api - opentelemetry-exporter-otlp-proto-http >=1.27.0 - opentelemetry-exporter-prometheus >=0.48b0 - - opentelemetry-instrumentation-fastapi - opentelemetry-sdk >=1.27.0 - pydantic-settings >=2.4.0,<3 - pydantic >=2.4.0,<3 @@ -5970,18 +6048,18 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 132223349 - timestamp: 1733209293584 + size: 126526187 + timestamp: 1733332472138 - kind: conda name: max-python - version: 24.6.0.dev2024120306 + version: 24.6.0.dev2024120416 build: 3.12release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120306-3.12release.conda - sha256: ddafa4f7201fca06f38e8a0232cdbbb918d6a24c03cb25a0137d4fcc0ca9f354 - md5: 9859f8c88c81c18baaddd15be03d259c + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120416-3.12release.conda + sha256: e5aaaba32cd939f3c6ba27b916851174eec6c3913a8e5ebd00b5590f026a2e16 + md5: b84b205dbce4660cdea5b0e3cda227e9 depends: - - max-core ==24.6.0.dev2024120306 release + - max-core ==24.6.0.dev2024120416 release - python 3.12.* - pillow - fastapi @@ -5991,7 +6069,6 @@ packages: - opentelemetry-api - opentelemetry-exporter-otlp-proto-http >=1.27.0 - opentelemetry-exporter-prometheus >=0.48b0 - - opentelemetry-instrumentation-fastapi - opentelemetry-sdk >=1.27.0 - pydantic-settings >=2.4.0,<3 - pydantic >=2.4.0,<3 @@ -6004,17 +6081,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 119113363 - timestamp: 1733209020082 + size: 111629688 + timestamp: 1733332258538 - kind: conda name: mblack - version: 24.6.0.dev2024120306 + version: 24.6.0.dev2024120416 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120306-release.conda - sha256: 35b22caab89b65a52b9e7877762a58bba8cd21137ac1383e268b8a2ae45173ac - md5: f77eafd932de3ae309643ea716ba3c3a + url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120416-release.conda + sha256: 374f5d8dfed89bf7098a0f7d8c6fd40c9dab11c4d760a03e05835e82f1b00cb9 + md5: 85c700946ce4a5ce8d11f5ee66b477cf depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -6024,40 +6101,41 @@ packages: - platformdirs >=2 - python license: MIT - size: 130649 - timestamp: 1733209293580 + size: 130641 + timestamp: 1733332193362 - kind: conda name: mdurl version: 0.1.2 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - sha256: 64073dfb6bb429d52fff30891877b48c7ec0f89625b1bf844905b66a81cce6e1 - md5: 776a8dd9e824f77abac30e6ef43a8f7a + url: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda + sha256: 78c1bbe1723449c52b7a9df1af2ee5f005209f67e40b6e1d3c7619127c43b1c7 + md5: 592132998493b3ff25fd7479396e8351 depends: - - python >=3.6 + - python >=3.9 license: MIT license_family: MIT - size: 14680 - timestamp: 1704317789138 + size: 14465 + timestamp: 1733255681319 - kind: conda name: mojo-jupyter - version: 24.6.0.dev2024120306 + version: 24.6.0.dev2024120416 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120306-release.conda - sha256: dd1fcd4298ef08be4507931babe70d6b335dc28d5ead602460747edc4f10c2dc - md5: 8bb40dfabe84757d93d3053fdf4b0a58 + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120416-release.conda + sha256: 181250d3bbe6523e4ac02e40004b6e77c04cfee2d9512dbeb584f51351df9448 + md5: 411a1d159867c56043991824d1ee88d9 depends: - - max-core ==24.6.0.dev2024120306 release + - max-core ==24.6.0.dev2024120416 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22940 - timestamp: 1733209293581 + size: 22946 + timestamp: 1733332193363 - kind: conda name: multidict version: 6.1.0 @@ -6170,18 +6248,19 @@ packages: - kind: conda name: mypy_extensions version: 1.0.0 - build: pyha770c72_0 + build: pyha770c72_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda - sha256: f240217476e148e825420c6bc3a0c0efb08c0718b7042fae960400c02af858a3 - md5: 4eccaeba205f0aed9ac3a9ea58568ca3 + url: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda + sha256: 1895f47b7d68581a6facde5cb13ab8c2764c2e53a76bd746f8f98910dc4e08fe + md5: 29097e7ea634a45cc5386b95cac6568f depends: - - python >=3.5 + - python >=3.9 license: MIT license_family: MIT - size: 10492 - timestamp: 1675543414256 + size: 10854 + timestamp: 1733230986902 - kind: conda name: ncurses version: '6.5' @@ -6466,66 +6545,6 @@ packages: license_family: APACHE size: 14721 timestamp: 1695214221489 -- kind: conda - name: opentelemetry-instrumentation - version: 0.49b2 - build: pyhff2d567_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-0.49b2-pyhff2d567_0.conda - sha256: ee20ad159bc040642fcbce1b25f8a9fc1d788b53c6bf593a0891bf7887ec7c5f - md5: 13d714acd504cd0141688c908521c0b9 - depends: - - opentelemetry-api ~=1.4 - - opentelemetry-semantic-conventions 0.49b2 - - packaging >=18.0 - - python >=3.9 - - setuptools >=16.0 - - wrapt <2.0.0,>=1.0.0 - license: Apache-2.0 - license_family: APACHE - size: 31616 - timestamp: 1732070359772 -- kind: conda - name: opentelemetry-instrumentation-asgi - version: 0.49b2 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-asgi-0.49b2-pyhd8ed1ab_0.conda - sha256: 7b2b4da037baa506a82c5e3e711905f34448441e069a6e3affb0e4917b3ee5e0 - md5: 482ad6cdc507689d5c33eb22aa16d83e - depends: - - asgiref ~=3.0 - - opentelemetry-api ~=1.12 - - opentelemetry-instrumentation 0.49b2 - - opentelemetry-semantic-conventions 0.49b2 - - opentelemetry-util-http 0.49b2 - - python >=3.7 - license: Apache-2.0 - license_family: APACHE - size: 23749 - timestamp: 1732086813641 -- kind: conda - name: opentelemetry-instrumentation-fastapi - version: 0.49b2 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-fastapi-0.49b2-pyhd8ed1ab_0.conda - sha256: e853f62b4c56e308f349a3f360cf4d6aa814a9dc926e727c25effcf4121af68c - md5: 59c01fcead989ba58c5dc79e3ac3aab3 - depends: - - opentelemetry-api ~=1.12 - - opentelemetry-instrumentation 0.49b2 - - opentelemetry-instrumentation-asgi 0.49b2 - - opentelemetry-semantic-conventions 0.49b2 - - opentelemetry-util-http 0.49b2 - - python >=3.7 - license: Apache-2.0 - license_family: APACHE - size: 20288 - timestamp: 1732093785486 - kind: conda name: opentelemetry-proto version: 1.28.2 @@ -6578,21 +6597,6 @@ packages: license_family: APACHE size: 81534 timestamp: 1732067304518 -- kind: conda - name: opentelemetry-util-http - version: 0.49b2 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-util-http-0.49b2-pyhd8ed1ab_0.conda - sha256: 73bb1cbb640b0732c1a04764a9704bb048ab77d6cb9c6439eb50ec0ecf926ede - md5: f267c60fc629a9bd1aa388f6ed8ea0ab - depends: - - python >=3.8 - license: Apache-2.0 - license_family: APACHE - size: 19241 - timestamp: 1732081026829 - kind: conda name: orc version: 2.0.3 @@ -6748,18 +6752,19 @@ packages: - kind: conda name: pathspec version: 0.12.1 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_0.conda - sha256: 4e534e66bfe8b1e035d2169d0e5b185450546b17e36764272863e22e0370be4d - md5: 17064acba08d3686f1135b5ec1b32b12 + url: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + sha256: 9f64009cdf5b8e529995f18e03665b03f5d07c0b17445b8badef45bde76249ee + md5: 617f15191456cc6a13db418a275435e5 depends: - - python >=3.7 + - python >=3.9 license: MPL-2.0 license_family: MOZILLA - size: 41173 - timestamp: 1702250135032 + size: 41075 + timestamp: 1733233471940 - kind: conda name: pillow version: 11.0.0 @@ -6837,33 +6842,34 @@ packages: - kind: conda name: platformdirs version: 4.3.6 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_0.conda - sha256: c81bdeadc4adcda216b2c7b373f0335f5c78cc480d1d55d10f21823590d7e46f - md5: fd8f2b18b65bbf62e8f653100690c8d2 + url: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + sha256: bb50f6499e8bc1d1a26f17716c97984671121608dc0c3ecd34858112bce59a27 + md5: 577852c7e53901ddccc7e6a9959ddebe depends: - - python >=3.8 + - python >=3.9 license: MIT license_family: MIT - size: 20625 - timestamp: 1726613611845 + size: 20448 + timestamp: 1733232756001 - kind: conda name: prometheus_client - version: 0.21.0 + version: 0.21.1 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.0-pyhd8ed1ab_0.conda - sha256: 01f0c3dd00081637ed920a922b17bcc8ed49608404ee466ced806856e671f6b9 - md5: 07e9550ddff45150bfc7da146268e165 + url: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda + sha256: bc8f00d5155deb7b47702cb8370f233935704100dbc23e30747c161d1b6cf3ab + md5: 3e01e386307acc60b2f89af0b2e161aa depends: - - python >=3.8 + - python >=3.9 license: Apache-2.0 license_family: Apache - size: 49024 - timestamp: 1726902073034 + size: 49002 + timestamp: 1733327434163 - kind: conda name: propcache version: 0.2.0 @@ -7172,13 +7178,13 @@ packages: timestamp: 1733195786147 - kind: conda name: pydantic - version: 2.10.2 + version: 2.10.3 build: pyh3cfb1c2_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.2-pyh3cfb1c2_0.conda - sha256: 47368f0eeb63b2dd4c9c54ff35b216d01ae1c27b90d3c7a2066ef8e005f32103 - md5: e661b732b4d7514ace55a01873f03201 + url: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.3-pyh3cfb1c2_0.conda + sha256: cac9eebd3d5f8d8a497a9025d756257ddc75b8b3393e6737cb45077bd744d4f8 + md5: 194ef7f91286978521350f171b117f01 depends: - annotated-types >=0.6.0 - pydantic-core 2.27.1 @@ -7187,8 +7193,8 @@ packages: - typing_extensions >=4.12.2 license: MIT license_family: MIT - size: 316818 - timestamp: 1732689481710 + size: 317037 + timestamp: 1733316963547 - kind: conda name: pydantic-core version: 2.27.1 @@ -7269,18 +7275,19 @@ packages: - kind: conda name: pygments version: 2.18.0 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_0.conda - sha256: 78267adf4e76d0d64ea2ffab008c501156c108bb08fecb703816fb63e279780b - md5: b7f5c092b8f9800150d998a71b76d5a1 + url: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_1.conda + sha256: 0d6133545f268b2b89c2617c196fc791f365b538d4057ecd636d658c3b1e885d + md5: b38dc0206e2a530e5c2cf11dc086b31a depends: - - python >=3.8 + - python >=3.9 license: BSD-2-Clause license_family: BSD - size: 879295 - timestamp: 1714846885370 + size: 876700 + timestamp: 1733221731178 - kind: conda name: pyinstrument version: 5.0.0 @@ -7335,20 +7342,20 @@ packages: - kind: conda name: pysocks version: 1.7.1 - build: pyha2e5f31_6 - build_number: 6 + build: pyha55dd90_7 + build_number: 7 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2 - sha256: a42f826e958a8d22e65b3394f437af7332610e43ee313393d1cf143f0a2d274b - md5: 2a7de29fb590ca14b5243c4c812c8025 + url: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda + sha256: ba3b032fa52709ce0d9fd388f63d330a026754587a2f461117cac9ab73d8d0d8 + md5: 461219d1a5bd61342293efa2c0c90eac depends: - __unix - - python >=3.8 + - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 18981 - timestamp: 1661604969727 + size: 21085 + timestamp: 1733217331982 - kind: conda name: python version: 3.12.7 @@ -7450,23 +7457,25 @@ packages: - python >=3.9 - six >=1.5 license: Apache-2.0 + license_family: APACHE size: 222505 timestamp: 1733215763718 - kind: conda name: python-dotenv version: 1.0.1 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_0.conda - sha256: 2d4c80364f03315d606a50eddd493dbacc078e21412c2462c0f781eec49b572c - md5: c2997ea9360ac4e015658804a7a84f94 + url: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda + sha256: 99713f6b534fef94995c6c16fd21d59f3548784e9111775d692bdc7c44678f02 + md5: e5c6ed218664802d305e79cc2d4491de depends: - - python >=3.8 + - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 24278 - timestamp: 1706018281544 + size: 24215 + timestamp: 1733243277223 - kind: conda name: python-json-logger version: 2.0.7 @@ -7485,33 +7494,35 @@ packages: - kind: conda name: python-multipart version: 0.0.19 - build: pyhff2d567_0 + build: pyhff2d567_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_0.conda - sha256: ff5964cd5eafc118f9d9a15fd31cd88a7ecc756ef83b6095c69b1891a53e2177 - md5: fe524346d3a9aa0aaf353dc39f7d1715 + url: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_1.conda + sha256: e6f6bc3d2a51f45ca26d556c5a416efdacf49a918fefcd0b7c340121e608aa5f + md5: c74333aa447ed2b94d49e5db23da5de6 depends: - python >=3.9 license: Apache-2.0 license_family: Apache - size: 27780 - timestamp: 1733062326577 + size: 27768 + timestamp: 1733323160772 - kind: conda name: python-tzdata version: '2024.2' - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_0.conda - sha256: fe3f62ce2bc714bdaa222ab3f0344a2815ad9e853c6df38d15c9f25de8a3a6d4 - md5: 986287f89929b2d629bd6ef6497dc307 + url: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_1.conda + sha256: 57c9a02ec25926fb48edca59b9ede107823e5d5c473b94a0e05cc0b9a193a642 + md5: c0def296b2f6d2dd7b030c2a7f66bb1f depends: - - python >=3.6 + - python >=3.9 license: Apache-2.0 license_family: APACHE - size: 142527 - timestamp: 1727140688093 + size: 142235 + timestamp: 1733235414217 - kind: conda name: python-xxhash version: 3.5.0 @@ -7909,6 +7920,7 @@ packages: constrains: - chardet >=3.0.2,<6 license: Apache-2.0 + license_family: APACHE size: 58723 timestamp: 1733217126197 - kind: conda @@ -8036,18 +8048,19 @@ packages: - kind: conda name: shellingham version: 1.5.4 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_0.conda - sha256: 3c49a0a101c41b7cf6ac05a1872d7a1f91f1b6d02eecb4a36b605a19517862bb - md5: d08db09a552699ee9e7eec56b4eb3899 + url: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda + sha256: 0557c090913aa63cdbe821dbdfa038a321b488e22bc80196c4b3b1aace4914ef + md5: 7c3c2a0f3ebdea2bbc35538d162b43bf depends: - - python >=3.7 + - python >=3.9 license: MIT license_family: MIT - size: 14568 - timestamp: 1698144516278 + size: 14462 + timestamp: 1733301007770 - kind: conda name: six version: 1.16.0 @@ -8112,18 +8125,19 @@ packages: - kind: conda name: sniffio version: 1.3.1 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_0.conda - sha256: bc12100b2d8836b93c55068b463190505b8064d0fc7d025e89f20ebf22fe6c2b - md5: 490730480d76cf9c8f8f2849719c6e2b + url: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda + sha256: c2248418c310bdd1719b186796ae50a8a77ce555228b6acd32768e2543a15012 + md5: bf7a226e58dfb8346c70df36065d86c9 depends: - - python >=3.7 + - python >=3.9 license: Apache-2.0 license_family: Apache - size: 15064 - timestamp: 1708953086199 + size: 15019 + timestamp: 1733244175724 - kind: conda name: sse-starlette version: 2.1.3 @@ -8378,58 +8392,58 @@ packages: timestamp: 1731981383171 - kind: conda name: typer - version: 0.14.0 + version: 0.15.0 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/typer-0.14.0-pyhd8ed1ab_0.conda - sha256: 4d7f1c77b928a66ae3b0089e288e7fdeb826bf0dabba9799488017e6a9b84f38 - md5: 9eb8a3f5d36ca3e7f686e7a5d85aff72 + url: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.0-pyhd8ed1ab_0.conda + sha256: 90503b2a518434fb554d621cc4e1c533dc524ef1c0f63fde39fdf4328163a0c8 + md5: cf9393f5733c7277b1a5f79145f8485b depends: - python >=3.9 - - typer-slim-standard 0.14.0 hd8ed1ab_0 + - typer-slim-standard 0.15.0 hd8ed1ab_0 license: MIT license_family: MIT - size: 54637 - timestamp: 1732848384457 + size: 56455 + timestamp: 1733279871129 - kind: conda name: typer-slim - version: 0.14.0 + version: 0.15.0 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.14.0-pyhd8ed1ab_0.conda - sha256: 883969c10b9837bb18a340ffb01a984ef6b4655fc72ff05aeb7bc659c9a1229d - md5: 3674a4cd7fd8e8a7277af2b30965925d + url: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.0-pyhd8ed1ab_0.conda + sha256: f6a85917292aaea0577792090ac74dbdb0280a656934746f715bfa9feaa9b2dc + md5: 629fef89115de5a907fb9765cdd45b26 depends: - click >=8.0.0 - python >=3.9 - typing_extensions >=3.7.4.3 constrains: + - typer >=0.15.0,<0.15.1.0a0 - shellingham >=1.3.0 - rich >=10.11.0 - - typer >=0.14.0,<0.14.1.0a0 license: MIT license_family: MIT - size: 43504 - timestamp: 1732848371202 + size: 43480 + timestamp: 1733279858535 - kind: conda name: typer-slim-standard - version: 0.14.0 + version: 0.15.0 build: hd8ed1ab_0 subdir: noarch noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.14.0-hd8ed1ab_0.conda - sha256: 0e09e393e75028a0e827c7177e0fb1a070c87756e47b5ae6418423e22b10dfac - md5: 9e1e1f9c84add9637ca715f8fb71a83f + url: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.0-hd8ed1ab_0.conda + sha256: df52ddd24439aff384a82d00a751947b12127ab571f4aa674a1053c703ce8ed0 + md5: a4746fc9efbff02c1a288d8fcd8ffba9 depends: - rich - shellingham - - typer-slim 0.14.0 pyhd8ed1ab_0 + - typer-slim 0.15.0 pyhd8ed1ab_0 license: MIT license_family: MIT - size: 49180 - timestamp: 1732848371718 + size: 50259 + timestamp: 1733279859017 - kind: conda name: typing-extensions version: 4.12.2 @@ -8497,44 +8511,46 @@ packages: - kind: conda name: uvicorn version: 0.32.1 - build: pyh31011fe_0 + build: pyh31011fe_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_0.conda - sha256: a310c494c817a9f6c985fc6d2772acb953a20170d03b0eabfae0e9d8c76c97ee - md5: fa77fc8110207b3bfc5ccc9d316744f4 + url: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_1.conda + sha256: ad1d8470c629679ea3db52351a522ae44eee0111d8d8b254e8c863c4a292e5c4 + md5: 7832640e5e302059e844d56f410487a6 depends: - __unix - click >=7.0 - h11 >=0.8 - - python >=3.8 + - python >=3.9 - typing_extensions >=4.0 license: BSD-3-Clause license_family: BSD - size: 49393 - timestamp: 1732185242260 + size: 49340 + timestamp: 1733332048141 - kind: conda name: uvicorn-standard version: 0.32.1 - build: h31011fe_0 + build: h31011fe_1 + build_number: 1 subdir: noarch noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_0.conda - sha256: 52545f7c88a7c779376900de5f9d81ce36738cd8770b543e89592ad7d1003c40 - md5: 49c2820e0f39cb710becd856ff14d683 + url: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_1.conda + sha256: 378903c51b2b1136fa48b01c0a2a8dd4634136d038a4a56561c0856fdcbfcabe + md5: 0c233d5c71d398cf01d0281e72194005 depends: - __unix - httptools >=0.5.0 - python-dotenv >=0.13 - pyyaml >=5.1 - - uvicorn 0.32.1 pyh31011fe_0 + - uvicorn 0.32.1 pyh31011fe_1 - uvloop >=0.14.0,!=0.15.0,!=0.15.1 - watchfiles >=0.13 - websockets >=10.4 license: BSD-3-Clause license_family: BSD - size: 7136 - timestamp: 1732185243035 + size: 7094 + timestamp: 1733332049165 - kind: conda name: uvloop version: 0.21.0 @@ -8882,41 +8898,142 @@ packages: timestamp: 1689951608120 - kind: conda name: xz - version: 5.2.6 - build: h166bdaf_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/xz-5.2.6-h166bdaf_0.tar.bz2 - sha256: 03a6d28ded42af8a347345f82f3eebdd6807a08526d47899a42d62d319609162 - md5: 2161070d867d1b1204ea749c8eec4ef0 + version: 5.6.3 + build: h2dbfc1b_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-5.6.3-h2dbfc1b_0.conda + sha256: 65df445d131d1695c45a95d102b8ffaaed5a387b4f97e209ba7d8fa0b7599dec + md5: da081cb850e57b0a0a242bab9087fbeb depends: - - libgcc-ng >=12 - license: LGPL-2.1 and GPL-2.0 - size: 418368 - timestamp: 1660346797927 + - libgcc >=13 + - liblzma 5.6.3 h86ecc28_0 + - liblzma-devel 5.6.3 h86ecc28_0 + - xz-gpl-tools 5.6.3 h2dbfc1b_0 + - xz-tools 5.6.3 h86ecc28_0 + license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later + size: 23448 + timestamp: 1733324353894 - kind: conda name: xz - version: 5.2.6 - build: h57fd34a_0 + version: 5.6.3 + build: h9a6d368_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/xz-5.2.6-h57fd34a_0.tar.bz2 - sha256: 59d78af0c3e071021cfe82dc40134c19dab8cdf804324b62940f5c8cd71803ec - md5: 39c6b54e94014701dd157f4f576ed211 - license: LGPL-2.1 and GPL-2.0 - size: 235693 - timestamp: 1660346961024 + url: https://conda.anaconda.org/conda-forge/osx-arm64/xz-5.6.3-h9a6d368_0.conda + sha256: 25d515d97f9a147240933b7529dbe10f3ee1c87425cfa3d5faa5115f78ebfe70 + md5: 86674fa432df20be6feea4bd8fec0668 + depends: + - __osx >=11.0 + - liblzma 5.6.3 h39f12f2_0 + - liblzma-devel 5.6.3 h39f12f2_0 + - xz-gpl-tools 5.6.3 h9a6d368_0 + - xz-tools 5.6.3 h39f12f2_0 + license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later + size: 23570 + timestamp: 1733321627935 - kind: conda name: xz - version: 5.2.6 - build: h9cdd2b7_0 + version: 5.6.3 + build: hbcc6ac9_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/xz-5.6.3-hbcc6ac9_0.conda + sha256: 32cd43b293f1e6498831c499195afc5693c2bd604244a08fe8dd7107a20757d2 + md5: 504333561007fbf0af129f0cee4f5652 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - liblzma 5.6.3 hb9d3cd8_0 + - liblzma-devel 5.6.3 hb9d3cd8_0 + - xz-gpl-tools 5.6.3 hbcc6ac9_0 + - xz-tools 5.6.3 hb9d3cd8_0 + license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later + size: 23435 + timestamp: 1733321352996 +- kind: conda + name: xz-gpl-tools + version: 5.6.3 + build: h2dbfc1b_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-5.2.6-h9cdd2b7_0.tar.bz2 - sha256: 93f58a7b393adf41fa007ac8c55978765e957e90cd31877ece1e5a343cb98220 - md5: 83baad393a31d59c20b63ba4da6592df + url: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-gpl-tools-5.6.3-h2dbfc1b_0.conda + sha256: d99ba29095b47891e3c63d04832768c3bfe4ad49e7bb4e163ca18962b8b3f5ca + md5: b0245c3aad4592510bb0c19212c1bded depends: - - libgcc-ng >=12 - license: LGPL-2.1 and GPL-2.0 - size: 440555 - timestamp: 1660348056328 + - libgcc >=13 + - liblzma 5.6.3 h86ecc28_0 + license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later + size: 33355 + timestamp: 1733324193303 +- kind: conda + name: xz-gpl-tools + version: 5.6.3 + build: h9a6d368_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/xz-gpl-tools-5.6.3-h9a6d368_0.conda + sha256: 44a0738b66573d0e7def712ef2aa98f628b17ee4d1034ffe71c3ff36f68d12dd + md5: 9e4519aef300966683764ccbbaa89da4 + depends: + - __osx >=11.0 + - liblzma 5.6.3 h39f12f2_0 + license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later + size: 33343 + timestamp: 1733321610703 +- kind: conda + name: xz-gpl-tools + version: 5.6.3 + build: hbcc6ac9_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/xz-gpl-tools-5.6.3-hbcc6ac9_0.conda + sha256: e9829eb1207239198f03eba61d17d0f946bbaa7602f7ee019efe72ccb26525db + md5: e4f1e59ca2971e8d0fdde0928c3f7b7f + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - liblzma 5.6.3 hb9d3cd8_0 + license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later + size: 33299 + timestamp: 1733321343126 +- kind: conda + name: xz-tools + version: 5.6.3 + build: h39f12f2_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/xz-tools-5.6.3-h39f12f2_0.conda + sha256: be3c74ffe4a7a5852108dafe40ef41858ca1ea911c62b08b5e4dd8f641d23f22 + md5: 10855380caa384c8388b93ef29c7bd04 + depends: + - __osx >=11.0 + - liblzma 5.6.3 h39f12f2_0 + license: 0BSD AND LGPL-2.1-or-later + size: 81129 + timestamp: 1733321582233 +- kind: conda + name: xz-tools + version: 5.6.3 + build: h86ecc28_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-tools-5.6.3-h86ecc28_0.conda + sha256: 1d82a745cd60e674d18a0ce30ba13d72616261b1831530f480599ffc991c8476 + md5: 0136c7aa78b4d887c9fb6dbf39749778 + depends: + - libgcc >=13 + - liblzma 5.6.3 h86ecc28_0 + license: 0BSD AND LGPL-2.1-or-later + size: 95353 + timestamp: 1733324033407 +- kind: conda + name: xz-tools + version: 5.6.3 + build: hb9d3cd8_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/xz-tools-5.6.3-hb9d3cd8_0.conda + sha256: 7d03d4c0d18dbac0ebb9550890fddeb4d21a375709339a6bdedd0104bc4f4967 + md5: 40270c1e058fd1d31caee8bf2c68fc3a + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - liblzma 5.6.3 hb9d3cd8_0 + license: 0BSD AND LGPL-2.1-or-later + size: 89832 + timestamp: 1733321333192 - kind: conda name: yaml version: 0.2.5 diff --git a/magic.lock b/magic.lock index 818c254d76..461f5937a3 100644 --- a/magic.lock +++ b/magic.lock @@ -8,12 +8,11 @@ environments: linux-64: - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.9-py312h178313f_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/asgiref-3.8.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-hb88c0a9_10.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.0-hecf86a2_2.conda @@ -23,10 +22,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.1-hab05fe4_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.2-hdeadb07_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h7bd072d_8.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.3-h3a84f74_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.4-h3a84f74_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.1-hf42f96a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-hf42f96a_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.6-hdec8b0f_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.6-h159bff8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.449-h5558e3c_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.10.0-h113e628_0.conda @@ -40,36 +39,36 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2024.8.30-hbcca054_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.8.30-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py312h06ac9bb_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda + - 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.5-pyhff2d567_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/filelock-3.16.1-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 - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gflags-2.2.2-h5888daf_1005.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/glog-0.7.1-hbabe93e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/httptools-0.6.4-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-7.0.2-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 @@ -106,6 +105,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-hd590300_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-25_linux64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.3-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-devel-5.6.3-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.28-pthreads_h94d23a6_1.conda @@ -128,19 +129,19 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.5-h064dc61_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/lit-19.1.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/lit-19.1.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.9.4-hcb278e6_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120306-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120306-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120306-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120306-release.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120306-release.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.dev2024120416-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120416-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120416-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120416-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.dev2024120416-release.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/multiprocess-0.70.15-py312h98912ed_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.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 - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.2-h488ebb8_0.conda @@ -149,38 +150,34 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.28.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-prometheus-1.12.0rc1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-0.49b2-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-asgi-0.49b2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-fastapi-0.49b2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh10f6f8f_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-util-http-0.49b2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/orc-2.0.3-he039a57_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.3-py312hf9745cd_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-11.0.0-py312h7b63e92_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.0-py312h66e93f0_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/protobuf-5.28.2-py312h2ec8cdc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-18.1.0-py312h7900ff3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-18.1.0-py312h01725c0_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.2-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.3-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.27.1-py312h12e396e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.6.1-pyh3cfb1c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyinstrument-5.0.0-py312h66e93f0_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.7-hc5c86c4_0_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python-xxhash-3.5.0-py312h66e93f0_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda @@ -194,10 +191,10 @@ environments: - 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 - - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-ha2e4443_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.1.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyh7900ff3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda @@ -206,15 +203,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.46.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.14.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.14.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.14.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.0-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/uvloop-0.21.0-py312h66e93f0_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/watchfiles-1.0.0-py312h12e396e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/websockets-14.1-py312h66e93f0_0.conda @@ -222,7 +219,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.11-hb9d3cd8_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xxhash-0.8.2-hd590300_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-5.2.6-h166bdaf_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-5.6.3-hbcc6ac9_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-gpl-tools-5.6.3-hbcc6ac9_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-tools-5.6.3-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.18.0-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda @@ -231,12 +230,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda linux-aarch64: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.9-py312hcc812fe_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/asgiref-3.8.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-hac900a4_10.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.0-h35473ba_2.conda @@ -246,10 +244,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.1-hf4e072c_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.2-h10eb1bc_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h28a5e6a_8.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.3-h29aef15_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.4-h29aef15_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.1-h4c7db1d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h4c7db1d_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.6-h7939e66_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.6-hffbb33f_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.449-h7085e57_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-core-cpp-1.14.0-h1887c18_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-identity-cpp-1.10.0-h47b0b28_0.conda @@ -263,37 +261,37 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2024.8.30-hcefe29a_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.8.30-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cffi-1.17.1-py312hac81daf_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda + - 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.5-pyhff2d567_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/filelock-3.16.1-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 - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gflags-2.2.2-h5ad3122_1005.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/glog-0.7.1-h468a4a4_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/httptools-0.6.4-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-7.0.2-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/keyutils-1.6.1-h4e544f5_0.tar.bz2 @@ -330,6 +328,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libiconv-1.17-h31becfc_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libjpeg-turbo-3.0.0-h31becfc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-25_linuxaarch64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.3-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-devel-5.6.3-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnghttp2-1.64.0-hc8609a4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.28-pthreads_h9d3fd7e_1.conda @@ -352,19 +352,19 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.5-hf4efe5d_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/lit-19.1.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/lit-19.1.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.9.4-hd600fc2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.2-py312h74ce7d3_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120306-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120306-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120306-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120306-release.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120306-release.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.dev2024120416-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120416-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120416-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120416-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.dev2024120416-release.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/multiprocess-0.70.15-py312hdd3e373_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.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 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openjpeg-2.5.2-h0d9d63b_0.conda @@ -373,38 +373,34 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.28.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-prometheus-1.12.0rc1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-0.49b2-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-asgi-0.49b2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-fastapi-0.49b2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh10f6f8f_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-util-http-0.49b2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/orc-2.0.3-h90de224_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pandas-2.2.3-py312ha2895bd_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pillow-11.0.0-py312h5ab5af3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.2.0-py312hb2c0f52_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/protobuf-5.28.2-py312h6f74592_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pthread-stubs-0.4-h86ecc28_1002.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-18.1.0-py312h8025657_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-18.1.0-py312h66f7834_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.2-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.3-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pydantic-core-2.27.1-py312h8cbf658_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.6.1-pyh3cfb1c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyinstrument-5.0.0-py312hb2c0f52_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.7-h5d932e8_0_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-xxhash-3.5.0-py312h52516f5_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.12-5_cp312.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda @@ -418,10 +414,10 @@ environments: - 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 - - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-h1088aeb_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.1.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyh7900ff3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda @@ -430,15 +426,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.46.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.14.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.14.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.14.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.0-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/uvloop-0.21.0-py312hb2c0f52_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/watchfiles-1.0.0-py312h8cbf658_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/websockets-14.1-py312hb2c0f52_0.conda @@ -446,7 +442,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxau-1.0.11-h86ecc28_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxdmcp-1.1.5-h57736b2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xxhash-0.8.2-h31becfc_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-5.2.6-h9cdd2b7_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-5.6.3-h2dbfc1b_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-gpl-tools-5.6.3-h2dbfc1b_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-tools-5.6.3-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yaml-0.2.5-hf897c2e_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.18.0-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zeromq-4.3.5-h5efb499_7.conda @@ -454,12 +452,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstandard-0.23.0-py312hb698573_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.6-h02f22dd_0.conda osx-arm64: - - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.9-py312h998013c_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/asgiref-3.8.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-h9b725a8_10.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.0-h5d7ee29_2.conda @@ -469,10 +466,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.1-hf483d09_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.2-h39f8ad8_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h68a0d7e_8.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.3-h840aca7_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.4-h840aca7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.1-h5d7ee29_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-h5d7ee29_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.6-ha226bf8_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.6-h8474b10_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.449-h3b64406_4.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.14.0-hd50102c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.10.0-hc602bab_0.conda @@ -486,36 +483,36 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2024.8.30-hf0a4a13_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.8.30-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.1-py312h0fad829_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda + - 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.5-pyhff2d567_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/filelock-3.16.1-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 - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gflags-2.2.2-hf9b8971_1005.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/glog-0.7.1-heb240a5_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/httptools-0.6.4-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-7.0.2-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda @@ -533,7 +530,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-25_osxarm64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcrc32c-1.1.2-hbdafb3b_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.10.1-h13a7ad3_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.4-ha82da77_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.5-ha82da77_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.22-hd74edd7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20191231-hc8eb9b7_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libev-4.33-h93a5062_2.conda @@ -548,6 +545,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.17-h0d3ecfb_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.0.0-hb547adb_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-25_osxarm64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.3-h39f12f2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-devel-5.6.3-h39f12f2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.64.0-h6d7220d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.28-openmp_hf332438_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-h5168bdf_2_cpu.conda @@ -565,20 +564,20 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxcb-1.17.0-hdb1d25a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.5-h376fa9f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/lit-19.1.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/lit-19.1.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.4-hdb05f8b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.9.4-hb7217d7_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312ha0ccf2a_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120306-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120306-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120306-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120306-release.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120306-release.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.dev2024120416-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120416-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120416-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120416-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.dev2024120416-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_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h7bae524_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openjpeg-2.5.2-h9f1df11_0.conda @@ -587,38 +586,34 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.28.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-prometheus-1.12.0rc1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-0.49b2-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-asgi-0.49b2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-fastapi-0.49b2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh10f6f8f_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-util-http-0.49b2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/orc-2.0.3-h121fd32_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.3-py312hcd31e36_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-11.0.0-py312haf37ca6_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.0-py312h024a12e_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/protobuf-5.28.2-py312hf02c72a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pthread-stubs-0.4-hd74edd7_1002.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-18.1.0-py312h1f38498_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-18.1.0-py312hc40f475_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.2-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.3-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.27.1-py312hcd83bfe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.6.1-pyh3cfb1c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyinstrument-5.0.0-py312h0bf5046_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.7-h739c21a_0_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-xxhash-3.5.0-py312h024a12e_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-5_cp312.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda @@ -631,10 +626,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_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_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-hd02b534_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.1.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyh7900ff3_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda @@ -643,15 +638,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.46.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.14.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.14.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.14.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.0-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/uvloop-0.21.0-py312h0bf5046_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/watchfiles-1.0.0-py312hcd83bfe_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/websockets-14.1-py312hea69d52_0.conda @@ -659,7 +654,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxau-1.0.11-hd74edd7_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxdmcp-1.1.5-hd74edd7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xxhash-0.8.2-hb547adb_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xz-5.2.6-h57fd34a_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xz-5.6.3-h9a6d368_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xz-gpl-tools-5.6.3-h9a6d368_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xz-tools-5.6.3-h39f12f2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.18.0-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda @@ -716,18 +713,18 @@ packages: - kind: conda name: aiohappyeyeballs version: 2.4.4 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_0.conda - sha256: 4282838f468f75f0c1746cbc6cdd3365b9f6d449bf5af8a74b234e396d847bf0 - md5: 8d6f8a679aa0272ba8d6092ce4824870 + url: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_1.conda + sha256: 95d4713e49ea92ae50cf42393683ede706b7875af5f7cb14c253438180afa732 + md5: 296b403617bafa89df4971567af79013 depends: - python >=3.9 license: PSF-2.0 - license_family: PSF - size: 19310 - timestamp: 1733135584059 + size: 19351 + timestamp: 1733332029649 - kind: conda name: aiohttp version: 3.11.9 @@ -803,35 +800,36 @@ packages: - kind: conda name: aiosignal version: 1.3.1 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_0.tar.bz2 - sha256: 575c742e14c86575986dc867463582a970463da50b77264cdf54df74f5563783 - md5: d1e1eb7e21a9e2c74279d87dafb68156 + url: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_1.conda + sha256: 9c7b639ea0cc796ef46c57fa104ec1f2ed53cd11c063518869a5a9d7d3b0b2db + md5: d736bd1b8904d7593dce4893e58a7881 depends: - frozenlist >=1.1.0 - - python >=3.7 + - python >=3.9 license: Apache-2.0 - license_family: APACHE - size: 12730 - timestamp: 1667935912504 + size: 13157 + timestamp: 1733332198143 - kind: conda name: annotated-types version: 0.7.0 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_0.conda - sha256: 668f0825b6c18e4012ca24a0070562b6ec801ebc7008228a428eb52b4038873f - md5: 7e9f4612544c8edbfd6afad17f1bd045 + url: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda + sha256: e0ea1ba78fbb64f17062601edda82097fcf815012cf52bb704150a2668110d48 + md5: 2934f256a8acfe48f6ebb4fce6cde29c depends: - - python >=3.7 + - python >=3.9 - typing-extensions >=4.0.0 license: MIT license_family: MIT - size: 18235 - timestamp: 1716290348421 + size: 18074 + timestamp: 1733247158254 - kind: conda name: anyio version: 4.6.2.post1 @@ -854,23 +852,6 @@ packages: license_family: MIT size: 109864 timestamp: 1728935803440 -- kind: conda - name: asgiref - version: 3.8.1 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/asgiref-3.8.1-pyhd8ed1ab_1.conda - sha256: c8d51a32f3530e3ca176d8f7bf5621c68c7c1c03fe9cc5c3c49d8ba4a1248f43 - md5: 21187c8276f87b6aedfe63c267a6eed7 - depends: - - python >=3.9 - - typing_extensions >=4 - license: BSD-3-Clause - license_family: BSD - size: 26436 - timestamp: 1733215704904 - kind: conda name: attrs version: 24.2.0 @@ -1318,12 +1299,12 @@ packages: timestamp: 1731734668760 - kind: conda name: aws-c-s3 - version: 0.7.3 + version: 0.7.4 build: h29aef15_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.3-h29aef15_0.conda - sha256: 57aa8b28890efd82c479e902125ea8a37782b163f13ae0856b259ec527a52879 - md5: e09cd76e50ce09ec14c17109da5c6502 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.4-h29aef15_0.conda + sha256: 396517aca6bdbe2e3d8a6275b33865eeb0d09f0dd379c3cc55c36f6004b17f2a + md5: 1046cf15a47f06a0af07f674e477d807 depends: - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.0,<0.8.1.0a0 @@ -1335,16 +1316,16 @@ packages: - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 117467 - timestamp: 1733098782199 + size: 117398 + timestamp: 1733299233564 - kind: conda name: aws-c-s3 - version: 0.7.3 + version: 0.7.4 build: h3a84f74_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.3-h3a84f74_0.conda - sha256: db17a15e5e01f19700bf9be961e1c4e002ccf8dc4d9caa3a24a0ab54f00f2c2d - md5: 171850b890600458ae6c990e78f1fa23 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.4-h3a84f74_0.conda + sha256: 91c6f7aa3dd230bcefe2654469b0704c2bdb2574e6d0d7c56cf9e9071f44cc26 + md5: 7d029b9aa9decf4c0fb8a9a8940c9906 depends: - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 @@ -1357,16 +1338,16 @@ packages: - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 113536 - timestamp: 1733098705479 + size: 113660 + timestamp: 1733299194447 - kind: conda name: aws-c-s3 - version: 0.7.3 + version: 0.7.4 build: h840aca7_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.3-h840aca7_0.conda - sha256: 18972a91f32f6b0edb58eb71cb2f5b56654183fd6ba611b3b0d6cc484017aeff - md5: 893e668d99fa4b31eef9dc5b19c21b9a + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.4-h840aca7_0.conda + sha256: 564bbb781c1aebfcdda43a0e82f447e34de1764c57ebc1733fe6437248f5b7c9 + md5: 02f78a084e101dee30c794f963549de4 depends: - __osx >=11.0 - aws-c-auth >=0.8.0,<0.8.1.0a0 @@ -1377,8 +1358,8 @@ packages: - aws-checksums >=0.2.2,<0.2.3.0a0 license: Apache-2.0 license_family: Apache - size: 97145 - timestamp: 1733098874599 + size: 97136 + timestamp: 1733299356527 - kind: conda name: aws-c-sdkutils version: 0.2.1 @@ -1480,13 +1461,14 @@ packages: - kind: conda name: aws-crt-cpp version: 0.29.6 - build: h7939e66_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.6-h7939e66_1.conda - sha256: 3d0b1996d28a2647ced83ed8052ee331df70b2c1a68fb6db0fe4e743a88be54d - md5: 5e573a52a1cd20f81d7fdf1db4f4583a + build: h159bff8_2 + build_number: 2 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.6-h159bff8_2.conda + sha256: 04ca62caa764bb95f304af8486c1af7c4f76d4ad5204c494edcf86af653d2ad0 + md5: c498e6490834aacf7835c96403862881 depends: + - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.0,<0.8.1.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 @@ -1494,23 +1476,23 @@ packages: - aws-c-http >=0.9.1,<0.9.2.0a0 - aws-c-io >=0.15.2,<0.15.3.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - - aws-c-s3 >=0.7.3,<0.7.4.0a0 + - aws-c-s3 >=0.7.4,<0.7.5.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 283670 - timestamp: 1733150929992 + size: 354822 + timestamp: 1733333950713 - kind: conda name: aws-crt-cpp version: 0.29.6 - build: ha226bf8_1 - build_number: 1 + build: h8474b10_2 + build_number: 2 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.6-ha226bf8_1.conda - sha256: f645e2a8015d8e71ed785c81a14a202ebce2f5dcca8982cd7ec5f8000f9be5c3 - md5: 81da0b5f65ab08e3919d6eadf08b5776 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.6-h8474b10_2.conda + sha256: 5ca9df9516583076ea40129e71b103efaca21ca02f40b59d69485823613cbfba + md5: 54c898f166bcfbe06c2b7ac36360f371 depends: - __osx >=11.0 - aws-c-auth >=0.8.0,<0.8.1.0a0 @@ -1520,24 +1502,23 @@ packages: - aws-c-http >=0.9.1,<0.9.2.0a0 - aws-c-io >=0.15.2,<0.15.3.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - - aws-c-s3 >=0.7.3,<0.7.4.0a0 + - aws-c-s3 >=0.7.4,<0.7.5.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - libcxx >=18 license: Apache-2.0 license_family: Apache - size: 236505 - timestamp: 1733151090562 + size: 235829 + timestamp: 1733334077172 - kind: conda name: aws-crt-cpp version: 0.29.6 - build: hdec8b0f_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.6-hdec8b0f_1.conda - sha256: cd09f1d5d854607ce7acafc76c74e864f296d296e60b54054a10f757ecc3d2dd - md5: 40647232fad98f92be8c6050a7e0c2bd + build: hffbb33f_2 + build_number: 2 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.6-hffbb33f_2.conda + sha256: 5f9490edaddde550cf05861626175b648da73c84bcde61ac2a6a1bf1a8fd6982 + md5: fb8be2af168b63e0b77076a1dc6baa85 depends: - - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.0,<0.8.1.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 @@ -1545,14 +1526,14 @@ packages: - aws-c-http >=0.9.1,<0.9.2.0a0 - aws-c-io >=0.15.2,<0.15.3.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - - aws-c-s3 >=0.7.3,<0.7.4.0a0 + - aws-c-s3 >=0.7.4,<0.7.5.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 354710 - timestamp: 1733150818238 + size: 284031 + timestamp: 1733333955728 - kind: conda name: aws-sdk-cpp version: 1.11.449 @@ -2174,49 +2155,52 @@ packages: - kind: conda name: charset-normalizer version: 3.4.0 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_0.conda - sha256: 1873ac45ea61f95750cb0b4e5e675d1c5b3def937e80c7eebb19297f76810be8 - md5: a374efa97290b8799046df7c5ca17164 + url: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_1.conda + sha256: 63022ee2c6a157a9f980250a66f54bdcdf5abee817348d0f9a74c2441a6fbf0e + md5: 6581a17bba6b948bb60130026404a9d6 depends: - - python >=3.7 + - python >=3.9 license: MIT license_family: MIT - size: 47314 - timestamp: 1728479405343 + size: 47533 + timestamp: 1733218182393 - kind: conda name: click version: 8.1.7 - build: unix_pyh707e725_0 + build: unix_pyh707e725_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_0.conda - sha256: f0016cbab6ac4138a429e28dbcb904a90305b34b3fe41a9b89d697c90401caec - md5: f3ad426304898027fc619827ff428eca + url: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_1.conda + sha256: 1cd5fc6ccdd5141378e51252a7a3810b07fd5a7e6934a5b4a7eccba66566224b + md5: cb8e52f28f5e592598190c562e7b5bf1 depends: - __unix - - python >=3.8 + - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 84437 - timestamp: 1692311973840 + size: 84513 + timestamp: 1733221925078 - kind: conda name: colorama version: 0.4.6 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 - sha256: 2c1b2e9755ce3102bca8d69e8f26e4f087ece73f50418186aee7c74bef8e1698 - md5: 3faab06a954c2a04039983f2c4a50d99 + url: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + sha256: ab29d57dc70786c1269633ba3dff20288b81664d3ff8d21af995742e2bb03287 + md5: 962b9857ee8e7018c22f2776ffa0b2d7 depends: - - python >=3.7 + - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 25170 - timestamp: 1666700778190 + size: 27011 + timestamp: 1733218222191 - kind: conda name: datasets version: 2.14.4 @@ -2280,58 +2264,61 @@ packages: - kind: conda name: dnspython version: 2.7.0 - build: pyhff2d567_0 + build: pyhff2d567_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_0.conda - sha256: 3e2ea1bfd90969e0e1f152bb1f969c56661278ad6bfaa3272027b1ff0d9a1a23 - md5: 0adf8f63d500d20418656289249533f9 + url: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda + sha256: 3ec40ccf63f2450c5e6c7dd579e42fc2e97caf0d8cd4ba24aa434e6fc264eda0 + md5: 5fbd60d61d21b4bd2f9d7a48fe100418 depends: - - python >=3.9.0,<4.0.0 + - python >=3.9,<4.0.0 - sniffio constrains: - - cryptography >=43 + - aioquic >=1.0.0 - wmi >=1.5.1 - - h2 >=4.1.0 + - httpx >=0.26.0 - trio >=0.23 + - cryptography >=43 - httpcore >=1.0.0 - - aioquic >=1.0.0 - - httpx >=0.26.0 - idna >=3.7 + - h2 >=4.1.0 license: ISC license_family: OTHER - size: 172740 - timestamp: 1728178868478 + size: 172172 + timestamp: 1733256829961 - kind: conda name: email-validator version: 2.2.0 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_0.conda - sha256: ea9e936ed7c49ea6d66fa3554afe31ba311f2a3d5e384d8c38925fda9e37bdb9 - md5: 3067adf57ee658ddf5bfad47b0041ce4 + url: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda + sha256: b91a19eb78edfc2dbb36de9a67f74ee2416f1b5273dd7327abe53f2dbf864736 + md5: da16dd3b0b71339060cd44cb7110ddf9 depends: - dnspython >=2.0.0 - idna >=2.0.0 - - python >=3.7 + - python >=3.9 license: Unlicense - size: 44157 - timestamp: 1718984716782 + size: 44401 + timestamp: 1733300827551 - kind: conda name: email_validator version: 2.2.0 - build: hd8ed1ab_0 + build: hd8ed1ab_1 + build_number: 1 subdir: noarch noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_0.conda - sha256: 2cbbbe9e0f3872214227c27b8b775dd2296a435c90ef50a7cc69934c329b6c65 - md5: 0214a004f7cf5ac28fc10a390dfc47ee + url: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_1.conda + sha256: e0d0fdf587aa0ed0ff08b2bce3ab355f46687b87b0775bfba01cc80a859ee6a2 + md5: 0794f8807ff2c6f020422cacb1bd7bfa depends: - email-validator >=2.2.0,<2.2.1.0a0 license: Unlicense - size: 6690 - timestamp: 1718984720419 + size: 6552 + timestamp: 1733300828176 - kind: conda name: exceptiongroup version: 1.2.2 @@ -2392,17 +2379,18 @@ packages: - kind: conda name: filelock version: 3.16.1 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_0.conda - sha256: 1da766da9dba05091af87977922fe60dc7464091a9ccffb3765d403189d39be4 - md5: 916f8ec5dd4128cd5f207a3c4c07b2c6 + url: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_1.conda + sha256: 18dca6e2194732df7ebf824abaefe999e4765ebe8e8a061269406ab88fc418b9 + md5: d692e9ba6f92dc51484bf3477e36ce7c depends: - - python >=3.7 + - python >=3.9 license: Unlicense - size: 17357 - timestamp: 1726613593584 + size: 17441 + timestamp: 1733240909987 - kind: conda name: freetype version: 2.12.1 @@ -2632,51 +2620,54 @@ packages: - kind: conda name: h11 version: 0.14.0 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_0.tar.bz2 - sha256: 817d2c77d53afe3f3d9cf7f6eb8745cdd8ea76c7adaa9d7ced75c455a2c2c085 - md5: b21ed0883505ba1910994f1df031a428 + url: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda + sha256: 622516185a7c740d5c7f27016d0c15b45782c1501e5611deec63fd70344ce7c8 + md5: 7ee49e89531c0dcbba9466f6d115d585 depends: - - python >=3 + - python >=3.9 - typing_extensions license: MIT license_family: MIT - size: 48251 - timestamp: 1664132995560 + size: 51846 + timestamp: 1733327599467 - kind: conda name: h2 version: 4.1.0 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2 - sha256: bfc6a23849953647f4e255c782e74a0e18fe16f7e25c7bb0bc57b83bb6762c7a - md5: b748fbf7060927a6e82df7cb5ee8f097 + url: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_1.conda + sha256: 843ddad410c370672a8250470697027618f104153612439076d4d7b91eeb7b5c + md5: 825927dc7b0f287ef8d4d0011bb113b1 depends: - hpack >=4.0,<5 - hyperframe >=6.0,<7 - - python >=3.6.1 + - python >=3.9 license: MIT license_family: MIT - size: 46754 - timestamp: 1634280590080 + size: 52000 + timestamp: 1733298867359 - kind: conda name: hpack version: 4.0.0 - build: pyh9f0ad1d_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2 - sha256: 5dec948932c4f740674b1afb551223ada0c55103f4c7bf86a110454da3d27cb8 - md5: 914d6646c4dbb1fd3ff539830a12fd71 + url: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda + sha256: ec89b7e5b8aa2f0219f666084446e1fb7b54545861e9caa892acb24d125761b5 + md5: 2aa5ff7fa34a81b9196532c84c10d865 depends: - - python + - python >=3.9 license: MIT license_family: MIT - size: 25341 - timestamp: 1598856368685 + size: 29412 + timestamp: 1733299296857 - kind: conda name: httpcore version: 1.0.7 @@ -2794,18 +2785,19 @@ packages: - kind: conda name: hyperframe version: 6.0.1 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 - sha256: e374a9d0f53149328134a8d86f5d72bca4c6dcebed3c0ecfa968c02996289330 - md5: 9f765cbfab6870c8435b9eefecd7a1f4 + url: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda + sha256: e91c6ef09d076e1d9a02819cd00fa7ee18ecf30cdd667605c853980216584d1b + md5: 566e75c90c1d0c8c459eb0ad9833dc7a depends: - - python >=3.6 + - python >=3.9 license: MIT license_family: MIT - size: 14646 - timestamp: 1619110249723 + size: 17239 + timestamp: 1733298862681 - kind: conda name: icu version: '75.1' @@ -2856,19 +2848,20 @@ packages: - kind: conda name: jinja2 version: 3.1.4 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_0.conda - sha256: 27380d870d42d00350d2d52598cddaf02f9505fb24be09488da0c9b8d1428f2d - md5: 7b86ecb7d3557821c649b3c31e3eb9f2 + url: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_1.conda + sha256: 85a7169c078b8065bd9d121b0e7b99c8b88c42a411314b6ae5fcd81c48c4710a + md5: 08cce3151bde4ecad7885bd9fb647532 depends: - markupsafe >=2.0 - - python >=3.7 + - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 111565 - timestamp: 1715127275924 + size: 110963 + timestamp: 1733217424408 - kind: conda name: jupyter_client version: 8.6.3 @@ -3849,18 +3842,18 @@ packages: timestamp: 1726659794676 - kind: conda name: libcxx - version: 19.1.4 + version: 19.1.5 build: ha82da77_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.4-ha82da77_0.conda - sha256: 342896ebc1d6acbf022ca6df006a936b9a472579e91e3c502cb1f52f218b78e9 - md5: a2d3d484d95889fccdd09498d8f6bf9a + url: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.5-ha82da77_0.conda + sha256: 7918cc0bb7a6554cdd3eee634c3dc414a1ab8ec49faeca1567367bb92118f9d7 + md5: 3c7be0df28ccda1d193ea6de56dcb5ff depends: - __osx >=11.0 license: Apache-2.0 WITH LLVM-exception license_family: Apache - size: 520678 - timestamp: 1732060258949 + size: 519819 + timestamp: 1733291654212 - kind: conda name: libdeflate version: '1.22' @@ -4681,6 +4674,89 @@ packages: license_family: BSD size: 15823 timestamp: 1729643275943 +- kind: conda + name: liblzma + version: 5.6.3 + build: h39f12f2_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.3-h39f12f2_0.conda + sha256: de00d627e41636591d05407c666de957a9ddd3c0f633340c016725695569b049 + md5: faa0ab222b9d12a52a8ebc655c9236f3 + depends: + - __osx >=11.0 + license: 0BSD + size: 98836 + timestamp: 1733321533638 +- kind: conda + name: liblzma + version: 5.6.3 + build: h86ecc28_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.3-h86ecc28_0.conda + sha256: 004785e427d255da8cf713b4722f8330bf496ce6fc665a0b21d007d377ffee5f + md5: 83d366f7bf01fc2d7781b4cc113fc9d3 + depends: + - libgcc >=13 + license: 0BSD + size: 124115 + timestamp: 1733323693681 +- kind: conda + name: liblzma + version: 5.6.3 + build: hb9d3cd8_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.3-hb9d3cd8_0.conda + sha256: 31637db828ec67ab8697de324e6074af5a36cbeddc37202d8d31e2fb397619e8 + md5: 137c535dddd880f844f33ed91b8abdba + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + license: 0BSD + size: 111223 + timestamp: 1733321312512 +- kind: conda + name: liblzma-devel + version: 5.6.3 + build: h39f12f2_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-devel-5.6.3-h39f12f2_0.conda + sha256: 2e5a9fb298bd8c01ceed8db386bfb0a125d74cef2c5ee615b4f9695b2808f7e0 + md5: 89955d2470cbacea3d5e069d67c94f44 + depends: + - __osx >=11.0 + - liblzma 5.6.3 h39f12f2_0 + license: 0BSD + size: 112941 + timestamp: 1733321552604 +- kind: conda + name: liblzma-devel + version: 5.6.3 + build: h86ecc28_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-devel-5.6.3-h86ecc28_0.conda + sha256: 740b3f1ffa57ad5f0eec0c868e23d4e1f811871c6685a04af57f1943cde1a575 + md5: 27995ae8bc93eeb949315655daa19d3c + depends: + - libgcc >=13 + - liblzma 5.6.3 h86ecc28_0 + license: 0BSD + size: 376767 + timestamp: 1733323860026 +- kind: conda + name: liblzma-devel + version: 5.6.3 + build: hb9d3cd8_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/liblzma-devel-5.6.3-hb9d3cd8_0.conda + sha256: 98020d4b4cc6c728d2e6dc1174cb2548cf03ce5098cd17c37b32f06e896a943a + md5: 7069f4de645461447f1ab7736c94db26 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - liblzma 5.6.3 hb9d3cd8_0 + license: 0BSD + size: 375452 + timestamp: 1733321322415 - kind: conda name: libnghttp2 version: 1.64.0 @@ -5715,20 +5791,19 @@ packages: timestamp: 1727963148474 - kind: conda name: lit - version: 19.1.4 - build: pyhd8ed1ab_1 - build_number: 1 + version: 19.1.5 + build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/lit-19.1.4-pyhd8ed1ab_1.conda - sha256: 52614f2f02b16c07759a69cf7b3f7f0794428b811df28fdc672eed1cc498454c - md5: 2b74a4939cd6f0fe32e61dd9617506b9 + url: https://conda.anaconda.org/conda-forge/noarch/lit-19.1.5-pyhd8ed1ab_0.conda + sha256: 07854df4ab39a333155b4813338caf8e0f6fe5a9abc84518d9409aa5cd91f94c + md5: ad3f4f4e25b666610c281c6fb92f06f9 depends: - python >=3 license: Apache-2.0 WITH LLVM-exception license_family: Apache - size: 128390 - timestamp: 1732691055432 + size: 128621 + timestamp: 1733310809397 - kind: conda name: llvm-openmp version: 19.1.4 @@ -5792,27 +5867,29 @@ packages: - kind: conda name: markdown-it-py version: 3.0.0 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - sha256: c041b0eaf7a6af3344d5dd452815cdc148d6284fec25a4fa3f4263b3a021e962 - md5: 93a8e71256479c62074356ef6ebf501b + url: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_1.conda + sha256: 0fbacdfb31e55964152b24d5567e9a9996e1e7902fb08eb7d91b5fd6ce60803a + md5: fee3164ac23dfca50cfcc8b85ddefb81 depends: - mdurl >=0.1,<1 - - python >=3.8 + - python >=3.9 license: MIT license_family: MIT - size: 64356 - timestamp: 1686175179621 + size: 64430 + timestamp: 1733250550053 - kind: conda name: markupsafe version: 3.0.2 - build: py312h178313f_0 + build: py312h178313f_1 + build_number: 1 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_0.conda - sha256: 15f14ab429c846aacd47fada0dc4f341d64491e097782830f0906d00cb7b48b6 - md5: a755704ea0e2503f8c227d84829a8e81 + url: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_1.conda + sha256: 4a6bf68d2a2b669fecc9a4a009abd1cf8e72c2289522ff00d81b5a6e51ae78f5 + md5: eb227c3e0bf58f5bd69c0532b157975b depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -5822,16 +5899,17 @@ packages: - jinja2 >=3.0.0 license: BSD-3-Clause license_family: BSD - size: 24878 - timestamp: 1729351558563 + size: 24604 + timestamp: 1733219911494 - kind: conda name: markupsafe version: 3.0.2 - build: py312h74ce7d3_0 + build: py312h74ce7d3_1 + build_number: 1 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.2-py312h74ce7d3_0.conda - sha256: 997baf7f46bce112f6e0390efaa7fbb892b8f31567d3c554f08ac636774d74f7 - md5: 8992b90e8374193d53118f7651db0b73 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.2-py312h74ce7d3_1.conda + sha256: 1d500158262f30b9c23e37d1c861fe76e127a3926d69b3b38c25d20d3faa6f9f + md5: bc8607ab678073a0441808a31465f4fb depends: - libgcc >=13 - python >=3.12,<3.13.0a0 @@ -5840,16 +5918,17 @@ packages: - jinja2 >=3.0.0 license: BSD-3-Clause license_family: BSD - size: 25013 - timestamp: 1729352489213 + size: 25079 + timestamp: 1733220639175 - kind: conda name: markupsafe version: 3.0.2 - build: py312ha0ccf2a_0 + build: py312h998013c_1 + build_number: 1 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312ha0ccf2a_0.conda - sha256: 360e958055f35e5087942b9c499eaafae984a951b84cf354ef7481a2806f340d - md5: c6ff9f291d011c9d4f0b840f49435c64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312h998013c_1.conda + sha256: 4aa997b244014d3707eeef54ab0ee497d12c0d0d184018960cce096169758283 + md5: 46e547061080fddf9cf95a0327e8aba6 depends: - __osx >=11.0 - python >=3.12,<3.13.0a0 @@ -5859,80 +5938,80 @@ packages: - jinja2 >=3.0.0 license: BSD-3-Clause license_family: BSD - size: 24495 - timestamp: 1729351534830 + size: 24048 + timestamp: 1733219945697 - kind: conda name: max - version: 24.6.0.dev2024120306 + version: 24.6.0.dev2024120416 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120306-release.conda - sha256: 2aae2a8286dca29453e8cc8cfe13511aa016a521ac0c9201ceb24d1ba6c4138e - md5: 9c25081ace6ad2c13675cf0123109cb9 - depends: - - max-core ==24.6.0.dev2024120306 release - - max-python >=24.6.0.dev2024120306,<25.0a0 - - mojo-jupyter ==24.6.0.dev2024120306 release - - mblack ==24.6.0.dev2024120306 release + url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120416-release.conda + sha256: 956c006755158839ee6f8de7d91360cd1990024868d867482a62885241c9794f + md5: 09947b7aa3a3c35b413b7c0d118126e3 + depends: + - max-core ==24.6.0.dev2024120416 release + - max-python >=24.6.0.dev2024120416,<25.0a0 + - mojo-jupyter ==24.6.0.dev2024120416 release + - mblack ==24.6.0.dev2024120416 release license: LicenseRef-Modular-Proprietary - size: 9929 - timestamp: 1733209293577 + size: 9925 + timestamp: 1733332193356 - kind: conda name: max-core - version: 24.6.0.dev2024120306 + version: 24.6.0.dev2024120416 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120306-release.conda - sha256: a82534696c6e078fb4e14b4b0f058336ffd0a647f7404e85aaee18eec25be067 - md5: c249d77d8e5885dd0eacd9028131413f + url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120416-release.conda + sha256: e73a6e3abebc4516d56d39b85d10e98883885218273b2ef19c7cfe4d3df7a4ef + md5: 43a976936171480fe7dbc2fed1224312 depends: - - mblack ==24.6.0.dev2024120306 release + - mblack ==24.6.0.dev2024120416 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 254711372 - timestamp: 1733209193854 + size: 245904359 + timestamp: 1733332193354 - kind: conda name: max-core - version: 24.6.0.dev2024120306 + version: 24.6.0.dev2024120416 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120306-release.conda - sha256: bd0858a3e2069a86cd71370322e7ac26ad3948225e4f0811e4fbf8771d44d0ea - md5: e5b6ae7316dc2b08a52cee8f27b4f484 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120416-release.conda + sha256: e32ebc6b7f589881f14caec8df02b65c40839a0210ef6a87d85243b61b5fc7d8 + md5: 15cac805514c6a381a9a50ee3a86de25 depends: - - mblack ==24.6.0.dev2024120306 release + - mblack ==24.6.0.dev2024120416 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 258488596 - timestamp: 1733209293575 + size: 249618446 + timestamp: 1733332472125 - kind: conda name: max-core - version: 24.6.0.dev2024120306 + version: 24.6.0.dev2024120416 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120306-release.conda - sha256: 88b5f2cbb2724067d33b10515613ec845f134c3758fd063852ac191a276d7812 - md5: 05acbd2d9cf25aa913a979aa9802c194 + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120416-release.conda + sha256: bc27468be85cc7fd207ec44a4a0b1b11aa54792737a20fcf8355a2f2e7a215d5 + md5: c27c6f67be3abffbf559bfd50852b493 depends: - - mblack ==24.6.0.dev2024120306 release + - mblack ==24.6.0.dev2024120416 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 220248523 - timestamp: 1733209020078 + size: 210212276 + timestamp: 1733332258535 - kind: conda name: max-python - version: 24.6.0.dev2024120306 + version: 24.6.0.dev2024120416 build: 3.12release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120306-3.12release.conda - sha256: 78dc00af885799e8c1f92185a505aee022f2ffd7191d24fa94ef428457f53e15 - md5: 4bdce0c1dd562e22566551d578103d2f + url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120416-3.12release.conda + sha256: 48e30a62cdee247e87b9f07d465ae91c75d47f292eeba5d2ca9c2d86d30e8875 + md5: 78af7733b4858c1bd882279a45e98795 depends: - - max-core ==24.6.0.dev2024120306 release + - max-core ==24.6.0.dev2024120416 release - python 3.12.* - pillow - fastapi @@ -5942,7 +6021,6 @@ packages: - opentelemetry-api - opentelemetry-exporter-otlp-proto-http >=1.27.0 - opentelemetry-exporter-prometheus >=0.48b0 - - opentelemetry-instrumentation-fastapi - opentelemetry-sdk >=1.27.0 - pydantic-settings >=2.4.0,<3 - pydantic >=2.4.0,<3 @@ -5955,18 +6033,18 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 128537272 - timestamp: 1733209193862 + size: 122878721 + timestamp: 1733332193368 - kind: conda name: max-python - version: 24.6.0.dev2024120306 + version: 24.6.0.dev2024120416 build: 3.12release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120306-3.12release.conda - sha256: 3910ceb9135f2258df30dd7a5d87b8f80a284645d6da48daa0e9bb145a49744e - md5: e7d3ebeaaeb2bd99167fda861a7e7aba + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120416-3.12release.conda + sha256: ffff206620d5bd2cd90830467d4234e3a606143811006e67203899a9b8512938 + md5: 55ff43da6401cdd96073ae044b428afd depends: - - max-core ==24.6.0.dev2024120306 release + - max-core ==24.6.0.dev2024120416 release - python 3.12.* - pillow - fastapi @@ -5976,7 +6054,6 @@ packages: - opentelemetry-api - opentelemetry-exporter-otlp-proto-http >=1.27.0 - opentelemetry-exporter-prometheus >=0.48b0 - - opentelemetry-instrumentation-fastapi - opentelemetry-sdk >=1.27.0 - pydantic-settings >=2.4.0,<3 - pydantic >=2.4.0,<3 @@ -5989,18 +6066,18 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 132223349 - timestamp: 1733209293584 + size: 126526187 + timestamp: 1733332472138 - kind: conda name: max-python - version: 24.6.0.dev2024120306 + version: 24.6.0.dev2024120416 build: 3.12release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120306-3.12release.conda - sha256: ddafa4f7201fca06f38e8a0232cdbbb918d6a24c03cb25a0137d4fcc0ca9f354 - md5: 9859f8c88c81c18baaddd15be03d259c + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120416-3.12release.conda + sha256: e5aaaba32cd939f3c6ba27b916851174eec6c3913a8e5ebd00b5590f026a2e16 + md5: b84b205dbce4660cdea5b0e3cda227e9 depends: - - max-core ==24.6.0.dev2024120306 release + - max-core ==24.6.0.dev2024120416 release - python 3.12.* - pillow - fastapi @@ -6010,7 +6087,6 @@ packages: - opentelemetry-api - opentelemetry-exporter-otlp-proto-http >=1.27.0 - opentelemetry-exporter-prometheus >=0.48b0 - - opentelemetry-instrumentation-fastapi - opentelemetry-sdk >=1.27.0 - pydantic-settings >=2.4.0,<3 - pydantic >=2.4.0,<3 @@ -6023,17 +6099,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 119113363 - timestamp: 1733209020082 + size: 111629688 + timestamp: 1733332258538 - kind: conda name: mblack - version: 24.6.0.dev2024120306 + version: 24.6.0.dev2024120416 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120306-release.conda - sha256: 35b22caab89b65a52b9e7877762a58bba8cd21137ac1383e268b8a2ae45173ac - md5: f77eafd932de3ae309643ea716ba3c3a + url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120416-release.conda + sha256: 374f5d8dfed89bf7098a0f7d8c6fd40c9dab11c4d760a03e05835e82f1b00cb9 + md5: 85c700946ce4a5ce8d11f5ee66b477cf depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -6043,40 +6119,41 @@ packages: - platformdirs >=2 - python license: MIT - size: 130649 - timestamp: 1733209293580 + size: 130641 + timestamp: 1733332193362 - kind: conda name: mdurl version: 0.1.2 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - sha256: 64073dfb6bb429d52fff30891877b48c7ec0f89625b1bf844905b66a81cce6e1 - md5: 776a8dd9e824f77abac30e6ef43a8f7a + url: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda + sha256: 78c1bbe1723449c52b7a9df1af2ee5f005209f67e40b6e1d3c7619127c43b1c7 + md5: 592132998493b3ff25fd7479396e8351 depends: - - python >=3.6 + - python >=3.9 license: MIT license_family: MIT - size: 14680 - timestamp: 1704317789138 + size: 14465 + timestamp: 1733255681319 - kind: conda name: mojo-jupyter - version: 24.6.0.dev2024120306 + version: 24.6.0.dev2024120416 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120306-release.conda - sha256: dd1fcd4298ef08be4507931babe70d6b335dc28d5ead602460747edc4f10c2dc - md5: 8bb40dfabe84757d93d3053fdf4b0a58 + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120416-release.conda + sha256: 181250d3bbe6523e4ac02e40004b6e77c04cfee2d9512dbeb584f51351df9448 + md5: 411a1d159867c56043991824d1ee88d9 depends: - - max-core ==24.6.0.dev2024120306 release + - max-core ==24.6.0.dev2024120416 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22940 - timestamp: 1733209293581 + size: 22946 + timestamp: 1733332193363 - kind: conda name: multidict version: 6.1.0 @@ -6189,18 +6266,19 @@ packages: - kind: conda name: mypy_extensions version: 1.0.0 - build: pyha770c72_0 + build: pyha770c72_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda - sha256: f240217476e148e825420c6bc3a0c0efb08c0718b7042fae960400c02af858a3 - md5: 4eccaeba205f0aed9ac3a9ea58568ca3 + url: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda + sha256: 1895f47b7d68581a6facde5cb13ab8c2764c2e53a76bd746f8f98910dc4e08fe + md5: 29097e7ea634a45cc5386b95cac6568f depends: - - python >=3.5 + - python >=3.9 license: MIT license_family: MIT - size: 10492 - timestamp: 1675543414256 + size: 10854 + timestamp: 1733230986902 - kind: conda name: ncurses version: '6.5' @@ -6485,66 +6563,6 @@ packages: license_family: APACHE size: 14721 timestamp: 1695214221489 -- kind: conda - name: opentelemetry-instrumentation - version: 0.49b2 - build: pyhff2d567_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-0.49b2-pyhff2d567_0.conda - sha256: ee20ad159bc040642fcbce1b25f8a9fc1d788b53c6bf593a0891bf7887ec7c5f - md5: 13d714acd504cd0141688c908521c0b9 - depends: - - opentelemetry-api ~=1.4 - - opentelemetry-semantic-conventions 0.49b2 - - packaging >=18.0 - - python >=3.9 - - setuptools >=16.0 - - wrapt <2.0.0,>=1.0.0 - license: Apache-2.0 - license_family: APACHE - size: 31616 - timestamp: 1732070359772 -- kind: conda - name: opentelemetry-instrumentation-asgi - version: 0.49b2 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-asgi-0.49b2-pyhd8ed1ab_0.conda - sha256: 7b2b4da037baa506a82c5e3e711905f34448441e069a6e3affb0e4917b3ee5e0 - md5: 482ad6cdc507689d5c33eb22aa16d83e - depends: - - asgiref ~=3.0 - - opentelemetry-api ~=1.12 - - opentelemetry-instrumentation 0.49b2 - - opentelemetry-semantic-conventions 0.49b2 - - opentelemetry-util-http 0.49b2 - - python >=3.7 - license: Apache-2.0 - license_family: APACHE - size: 23749 - timestamp: 1732086813641 -- kind: conda - name: opentelemetry-instrumentation-fastapi - version: 0.49b2 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-fastapi-0.49b2-pyhd8ed1ab_0.conda - sha256: e853f62b4c56e308f349a3f360cf4d6aa814a9dc926e727c25effcf4121af68c - md5: 59c01fcead989ba58c5dc79e3ac3aab3 - depends: - - opentelemetry-api ~=1.12 - - opentelemetry-instrumentation 0.49b2 - - opentelemetry-instrumentation-asgi 0.49b2 - - opentelemetry-semantic-conventions 0.49b2 - - opentelemetry-util-http 0.49b2 - - python >=3.7 - license: Apache-2.0 - license_family: APACHE - size: 20288 - timestamp: 1732093785486 - kind: conda name: opentelemetry-proto version: 1.28.2 @@ -6597,21 +6615,6 @@ packages: license_family: APACHE size: 81534 timestamp: 1732067304518 -- kind: conda - name: opentelemetry-util-http - version: 0.49b2 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-util-http-0.49b2-pyhd8ed1ab_0.conda - sha256: 73bb1cbb640b0732c1a04764a9704bb048ab77d6cb9c6439eb50ec0ecf926ede - md5: f267c60fc629a9bd1aa388f6ed8ea0ab - depends: - - python >=3.8 - license: Apache-2.0 - license_family: APACHE - size: 19241 - timestamp: 1732081026829 - kind: conda name: orc version: 2.0.3 @@ -6767,18 +6770,19 @@ packages: - kind: conda name: pathspec version: 0.12.1 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_0.conda - sha256: 4e534e66bfe8b1e035d2169d0e5b185450546b17e36764272863e22e0370be4d - md5: 17064acba08d3686f1135b5ec1b32b12 + url: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + sha256: 9f64009cdf5b8e529995f18e03665b03f5d07c0b17445b8badef45bde76249ee + md5: 617f15191456cc6a13db418a275435e5 depends: - - python >=3.7 + - python >=3.9 license: MPL-2.0 license_family: MOZILLA - size: 41173 - timestamp: 1702250135032 + size: 41075 + timestamp: 1733233471940 - kind: conda name: pillow version: 11.0.0 @@ -6856,33 +6860,34 @@ packages: - kind: conda name: platformdirs version: 4.3.6 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_0.conda - sha256: c81bdeadc4adcda216b2c7b373f0335f5c78cc480d1d55d10f21823590d7e46f - md5: fd8f2b18b65bbf62e8f653100690c8d2 + url: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + sha256: bb50f6499e8bc1d1a26f17716c97984671121608dc0c3ecd34858112bce59a27 + md5: 577852c7e53901ddccc7e6a9959ddebe depends: - - python >=3.8 + - python >=3.9 license: MIT license_family: MIT - size: 20625 - timestamp: 1726613611845 + size: 20448 + timestamp: 1733232756001 - kind: conda name: prometheus_client - version: 0.21.0 + version: 0.21.1 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.0-pyhd8ed1ab_0.conda - sha256: 01f0c3dd00081637ed920a922b17bcc8ed49608404ee466ced806856e671f6b9 - md5: 07e9550ddff45150bfc7da146268e165 + url: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda + sha256: bc8f00d5155deb7b47702cb8370f233935704100dbc23e30747c161d1b6cf3ab + md5: 3e01e386307acc60b2f89af0b2e161aa depends: - - python >=3.8 + - python >=3.9 license: Apache-2.0 license_family: Apache - size: 49024 - timestamp: 1726902073034 + size: 49002 + timestamp: 1733327434163 - kind: conda name: propcache version: 0.2.0 @@ -7191,13 +7196,13 @@ packages: timestamp: 1733195786147 - kind: conda name: pydantic - version: 2.10.2 + version: 2.10.3 build: pyh3cfb1c2_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.2-pyh3cfb1c2_0.conda - sha256: 47368f0eeb63b2dd4c9c54ff35b216d01ae1c27b90d3c7a2066ef8e005f32103 - md5: e661b732b4d7514ace55a01873f03201 + url: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.3-pyh3cfb1c2_0.conda + sha256: cac9eebd3d5f8d8a497a9025d756257ddc75b8b3393e6737cb45077bd744d4f8 + md5: 194ef7f91286978521350f171b117f01 depends: - annotated-types >=0.6.0 - pydantic-core 2.27.1 @@ -7206,8 +7211,8 @@ packages: - typing_extensions >=4.12.2 license: MIT license_family: MIT - size: 316818 - timestamp: 1732689481710 + size: 317037 + timestamp: 1733316963547 - kind: conda name: pydantic-core version: 2.27.1 @@ -7288,18 +7293,19 @@ packages: - kind: conda name: pygments version: 2.18.0 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_0.conda - sha256: 78267adf4e76d0d64ea2ffab008c501156c108bb08fecb703816fb63e279780b - md5: b7f5c092b8f9800150d998a71b76d5a1 + url: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_1.conda + sha256: 0d6133545f268b2b89c2617c196fc791f365b538d4057ecd636d658c3b1e885d + md5: b38dc0206e2a530e5c2cf11dc086b31a depends: - - python >=3.8 + - python >=3.9 license: BSD-2-Clause license_family: BSD - size: 879295 - timestamp: 1714846885370 + size: 876700 + timestamp: 1733221731178 - kind: conda name: pyinstrument version: 5.0.0 @@ -7354,20 +7360,20 @@ packages: - kind: conda name: pysocks version: 1.7.1 - build: pyha2e5f31_6 - build_number: 6 + build: pyha55dd90_7 + build_number: 7 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2 - sha256: a42f826e958a8d22e65b3394f437af7332610e43ee313393d1cf143f0a2d274b - md5: 2a7de29fb590ca14b5243c4c812c8025 + url: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda + sha256: ba3b032fa52709ce0d9fd388f63d330a026754587a2f461117cac9ab73d8d0d8 + md5: 461219d1a5bd61342293efa2c0c90eac depends: - __unix - - python >=3.8 + - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 18981 - timestamp: 1661604969727 + size: 21085 + timestamp: 1733217331982 - kind: conda name: python version: 3.12.7 @@ -7469,23 +7475,25 @@ packages: - python >=3.9 - six >=1.5 license: Apache-2.0 + license_family: APACHE size: 222505 timestamp: 1733215763718 - kind: conda name: python-dotenv version: 1.0.1 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_0.conda - sha256: 2d4c80364f03315d606a50eddd493dbacc078e21412c2462c0f781eec49b572c - md5: c2997ea9360ac4e015658804a7a84f94 + url: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda + sha256: 99713f6b534fef94995c6c16fd21d59f3548784e9111775d692bdc7c44678f02 + md5: e5c6ed218664802d305e79cc2d4491de depends: - - python >=3.8 + - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 24278 - timestamp: 1706018281544 + size: 24215 + timestamp: 1733243277223 - kind: conda name: python-json-logger version: 2.0.7 @@ -7504,33 +7512,35 @@ packages: - kind: conda name: python-multipart version: 0.0.19 - build: pyhff2d567_0 + build: pyhff2d567_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_0.conda - sha256: ff5964cd5eafc118f9d9a15fd31cd88a7ecc756ef83b6095c69b1891a53e2177 - md5: fe524346d3a9aa0aaf353dc39f7d1715 + url: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_1.conda + sha256: e6f6bc3d2a51f45ca26d556c5a416efdacf49a918fefcd0b7c340121e608aa5f + md5: c74333aa447ed2b94d49e5db23da5de6 depends: - python >=3.9 license: Apache-2.0 license_family: Apache - size: 27780 - timestamp: 1733062326577 + size: 27768 + timestamp: 1733323160772 - kind: conda name: python-tzdata version: '2024.2' - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_0.conda - sha256: fe3f62ce2bc714bdaa222ab3f0344a2815ad9e853c6df38d15c9f25de8a3a6d4 - md5: 986287f89929b2d629bd6ef6497dc307 + url: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_1.conda + sha256: 57c9a02ec25926fb48edca59b9ede107823e5d5c473b94a0e05cc0b9a193a642 + md5: c0def296b2f6d2dd7b030c2a7f66bb1f depends: - - python >=3.6 + - python >=3.9 license: Apache-2.0 license_family: APACHE - size: 142527 - timestamp: 1727140688093 + size: 142235 + timestamp: 1733235414217 - kind: conda name: python-xxhash version: 3.5.0 @@ -7928,6 +7938,7 @@ packages: constrains: - chardet >=3.0.2,<6 license: Apache-2.0 + license_family: APACHE size: 58723 timestamp: 1733217126197 - kind: conda @@ -8055,18 +8066,19 @@ packages: - kind: conda name: shellingham version: 1.5.4 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_0.conda - sha256: 3c49a0a101c41b7cf6ac05a1872d7a1f91f1b6d02eecb4a36b605a19517862bb - md5: d08db09a552699ee9e7eec56b4eb3899 + url: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda + sha256: 0557c090913aa63cdbe821dbdfa038a321b488e22bc80196c4b3b1aace4914ef + md5: 7c3c2a0f3ebdea2bbc35538d162b43bf depends: - - python >=3.7 + - python >=3.9 license: MIT license_family: MIT - size: 14568 - timestamp: 1698144516278 + size: 14462 + timestamp: 1733301007770 - kind: conda name: six version: 1.16.0 @@ -8131,18 +8143,19 @@ packages: - kind: conda name: sniffio version: 1.3.1 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_0.conda - sha256: bc12100b2d8836b93c55068b463190505b8064d0fc7d025e89f20ebf22fe6c2b - md5: 490730480d76cf9c8f8f2849719c6e2b + url: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda + sha256: c2248418c310bdd1719b186796ae50a8a77ce555228b6acd32768e2543a15012 + md5: bf7a226e58dfb8346c70df36065d86c9 depends: - - python >=3.7 + - python >=3.9 license: Apache-2.0 license_family: Apache - size: 15064 - timestamp: 1708953086199 + size: 15019 + timestamp: 1733244175724 - kind: conda name: sse-starlette version: 2.1.3 @@ -8397,58 +8410,58 @@ packages: timestamp: 1731981383171 - kind: conda name: typer - version: 0.14.0 + version: 0.15.0 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/typer-0.14.0-pyhd8ed1ab_0.conda - sha256: 4d7f1c77b928a66ae3b0089e288e7fdeb826bf0dabba9799488017e6a9b84f38 - md5: 9eb8a3f5d36ca3e7f686e7a5d85aff72 + url: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.0-pyhd8ed1ab_0.conda + sha256: 90503b2a518434fb554d621cc4e1c533dc524ef1c0f63fde39fdf4328163a0c8 + md5: cf9393f5733c7277b1a5f79145f8485b depends: - python >=3.9 - - typer-slim-standard 0.14.0 hd8ed1ab_0 + - typer-slim-standard 0.15.0 hd8ed1ab_0 license: MIT license_family: MIT - size: 54637 - timestamp: 1732848384457 + size: 56455 + timestamp: 1733279871129 - kind: conda name: typer-slim - version: 0.14.0 + version: 0.15.0 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.14.0-pyhd8ed1ab_0.conda - sha256: 883969c10b9837bb18a340ffb01a984ef6b4655fc72ff05aeb7bc659c9a1229d - md5: 3674a4cd7fd8e8a7277af2b30965925d + url: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.0-pyhd8ed1ab_0.conda + sha256: f6a85917292aaea0577792090ac74dbdb0280a656934746f715bfa9feaa9b2dc + md5: 629fef89115de5a907fb9765cdd45b26 depends: - click >=8.0.0 - python >=3.9 - typing_extensions >=3.7.4.3 constrains: + - typer >=0.15.0,<0.15.1.0a0 - shellingham >=1.3.0 - rich >=10.11.0 - - typer >=0.14.0,<0.14.1.0a0 license: MIT license_family: MIT - size: 43504 - timestamp: 1732848371202 + size: 43480 + timestamp: 1733279858535 - kind: conda name: typer-slim-standard - version: 0.14.0 + version: 0.15.0 build: hd8ed1ab_0 subdir: noarch noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.14.0-hd8ed1ab_0.conda - sha256: 0e09e393e75028a0e827c7177e0fb1a070c87756e47b5ae6418423e22b10dfac - md5: 9e1e1f9c84add9637ca715f8fb71a83f + url: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.0-hd8ed1ab_0.conda + sha256: df52ddd24439aff384a82d00a751947b12127ab571f4aa674a1053c703ce8ed0 + md5: a4746fc9efbff02c1a288d8fcd8ffba9 depends: - rich - shellingham - - typer-slim 0.14.0 pyhd8ed1ab_0 + - typer-slim 0.15.0 pyhd8ed1ab_0 license: MIT license_family: MIT - size: 49180 - timestamp: 1732848371718 + size: 50259 + timestamp: 1733279859017 - kind: conda name: typing-extensions version: 4.12.2 @@ -8516,44 +8529,46 @@ packages: - kind: conda name: uvicorn version: 0.32.1 - build: pyh31011fe_0 + build: pyh31011fe_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_0.conda - sha256: a310c494c817a9f6c985fc6d2772acb953a20170d03b0eabfae0e9d8c76c97ee - md5: fa77fc8110207b3bfc5ccc9d316744f4 + url: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_1.conda + sha256: ad1d8470c629679ea3db52351a522ae44eee0111d8d8b254e8c863c4a292e5c4 + md5: 7832640e5e302059e844d56f410487a6 depends: - __unix - click >=7.0 - h11 >=0.8 - - python >=3.8 + - python >=3.9 - typing_extensions >=4.0 license: BSD-3-Clause license_family: BSD - size: 49393 - timestamp: 1732185242260 + size: 49340 + timestamp: 1733332048141 - kind: conda name: uvicorn-standard version: 0.32.1 - build: h31011fe_0 + build: h31011fe_1 + build_number: 1 subdir: noarch noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_0.conda - sha256: 52545f7c88a7c779376900de5f9d81ce36738cd8770b543e89592ad7d1003c40 - md5: 49c2820e0f39cb710becd856ff14d683 + url: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_1.conda + sha256: 378903c51b2b1136fa48b01c0a2a8dd4634136d038a4a56561c0856fdcbfcabe + md5: 0c233d5c71d398cf01d0281e72194005 depends: - __unix - httptools >=0.5.0 - python-dotenv >=0.13 - pyyaml >=5.1 - - uvicorn 0.32.1 pyh31011fe_0 + - uvicorn 0.32.1 pyh31011fe_1 - uvloop >=0.14.0,!=0.15.0,!=0.15.1 - watchfiles >=0.13 - websockets >=10.4 license: BSD-3-Clause license_family: BSD - size: 7136 - timestamp: 1732185243035 + size: 7094 + timestamp: 1733332049165 - kind: conda name: uvloop version: 0.21.0 @@ -8901,41 +8916,142 @@ packages: timestamp: 1689951608120 - kind: conda name: xz - version: 5.2.6 - build: h166bdaf_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/xz-5.2.6-h166bdaf_0.tar.bz2 - sha256: 03a6d28ded42af8a347345f82f3eebdd6807a08526d47899a42d62d319609162 - md5: 2161070d867d1b1204ea749c8eec4ef0 + version: 5.6.3 + build: h2dbfc1b_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-5.6.3-h2dbfc1b_0.conda + sha256: 65df445d131d1695c45a95d102b8ffaaed5a387b4f97e209ba7d8fa0b7599dec + md5: da081cb850e57b0a0a242bab9087fbeb depends: - - libgcc-ng >=12 - license: LGPL-2.1 and GPL-2.0 - size: 418368 - timestamp: 1660346797927 + - libgcc >=13 + - liblzma 5.6.3 h86ecc28_0 + - liblzma-devel 5.6.3 h86ecc28_0 + - xz-gpl-tools 5.6.3 h2dbfc1b_0 + - xz-tools 5.6.3 h86ecc28_0 + license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later + size: 23448 + timestamp: 1733324353894 - kind: conda name: xz - version: 5.2.6 - build: h57fd34a_0 + version: 5.6.3 + build: h9a6d368_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/xz-5.2.6-h57fd34a_0.tar.bz2 - sha256: 59d78af0c3e071021cfe82dc40134c19dab8cdf804324b62940f5c8cd71803ec - md5: 39c6b54e94014701dd157f4f576ed211 - license: LGPL-2.1 and GPL-2.0 - size: 235693 - timestamp: 1660346961024 + url: https://conda.anaconda.org/conda-forge/osx-arm64/xz-5.6.3-h9a6d368_0.conda + sha256: 25d515d97f9a147240933b7529dbe10f3ee1c87425cfa3d5faa5115f78ebfe70 + md5: 86674fa432df20be6feea4bd8fec0668 + depends: + - __osx >=11.0 + - liblzma 5.6.3 h39f12f2_0 + - liblzma-devel 5.6.3 h39f12f2_0 + - xz-gpl-tools 5.6.3 h9a6d368_0 + - xz-tools 5.6.3 h39f12f2_0 + license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later + size: 23570 + timestamp: 1733321627935 - kind: conda name: xz - version: 5.2.6 - build: h9cdd2b7_0 + version: 5.6.3 + build: hbcc6ac9_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/xz-5.6.3-hbcc6ac9_0.conda + sha256: 32cd43b293f1e6498831c499195afc5693c2bd604244a08fe8dd7107a20757d2 + md5: 504333561007fbf0af129f0cee4f5652 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - liblzma 5.6.3 hb9d3cd8_0 + - liblzma-devel 5.6.3 hb9d3cd8_0 + - xz-gpl-tools 5.6.3 hbcc6ac9_0 + - xz-tools 5.6.3 hb9d3cd8_0 + license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later + size: 23435 + timestamp: 1733321352996 +- kind: conda + name: xz-gpl-tools + version: 5.6.3 + build: h2dbfc1b_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-5.2.6-h9cdd2b7_0.tar.bz2 - sha256: 93f58a7b393adf41fa007ac8c55978765e957e90cd31877ece1e5a343cb98220 - md5: 83baad393a31d59c20b63ba4da6592df + url: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-gpl-tools-5.6.3-h2dbfc1b_0.conda + sha256: d99ba29095b47891e3c63d04832768c3bfe4ad49e7bb4e163ca18962b8b3f5ca + md5: b0245c3aad4592510bb0c19212c1bded depends: - - libgcc-ng >=12 - license: LGPL-2.1 and GPL-2.0 - size: 440555 - timestamp: 1660348056328 + - libgcc >=13 + - liblzma 5.6.3 h86ecc28_0 + license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later + size: 33355 + timestamp: 1733324193303 +- kind: conda + name: xz-gpl-tools + version: 5.6.3 + build: h9a6d368_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/xz-gpl-tools-5.6.3-h9a6d368_0.conda + sha256: 44a0738b66573d0e7def712ef2aa98f628b17ee4d1034ffe71c3ff36f68d12dd + md5: 9e4519aef300966683764ccbbaa89da4 + depends: + - __osx >=11.0 + - liblzma 5.6.3 h39f12f2_0 + license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later + size: 33343 + timestamp: 1733321610703 +- kind: conda + name: xz-gpl-tools + version: 5.6.3 + build: hbcc6ac9_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/xz-gpl-tools-5.6.3-hbcc6ac9_0.conda + sha256: e9829eb1207239198f03eba61d17d0f946bbaa7602f7ee019efe72ccb26525db + md5: e4f1e59ca2971e8d0fdde0928c3f7b7f + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - liblzma 5.6.3 hb9d3cd8_0 + license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later + size: 33299 + timestamp: 1733321343126 +- kind: conda + name: xz-tools + version: 5.6.3 + build: h39f12f2_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/xz-tools-5.6.3-h39f12f2_0.conda + sha256: be3c74ffe4a7a5852108dafe40ef41858ca1ea911c62b08b5e4dd8f641d23f22 + md5: 10855380caa384c8388b93ef29c7bd04 + depends: + - __osx >=11.0 + - liblzma 5.6.3 h39f12f2_0 + license: 0BSD AND LGPL-2.1-or-later + size: 81129 + timestamp: 1733321582233 +- kind: conda + name: xz-tools + version: 5.6.3 + build: h86ecc28_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-tools-5.6.3-h86ecc28_0.conda + sha256: 1d82a745cd60e674d18a0ce30ba13d72616261b1831530f480599ffc991c8476 + md5: 0136c7aa78b4d887c9fb6dbf39749778 + depends: + - libgcc >=13 + - liblzma 5.6.3 h86ecc28_0 + license: 0BSD AND LGPL-2.1-or-later + size: 95353 + timestamp: 1733324033407 +- kind: conda + name: xz-tools + version: 5.6.3 + build: hb9d3cd8_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/xz-tools-5.6.3-hb9d3cd8_0.conda + sha256: 7d03d4c0d18dbac0ebb9550890fddeb4d21a375709339a6bdedd0104bc4f4967 + md5: 40270c1e058fd1d31caee8bf2c68fc3a + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - liblzma 5.6.3 hb9d3cd8_0 + license: 0BSD AND LGPL-2.1-or-later + size: 89832 + timestamp: 1733321333192 - kind: conda name: yaml version: 0.2.5 From 6c4ff36a91458a8a3d061c8d8ff3a3bb10fc396c Mon Sep 17 00:00:00 2001 From: Arthur Evans Date: Wed, 4 Dec 2024 10:34:29 -0800 Subject: [PATCH 025/509] [Docs] Several small tweaks to parameter docs. - Document **_ syntax for unbinding keyword parameters. - Document that infer-only parameters can be bound by keyword. (Maybe they should be infer-mostly parameters?). - Document automatically parameterized parameter lists. MODULAR_ORIG_COMMIT_REV_ID: 23ab820cebbc7895413a4962acb661849866a6c6 --- docs/manual/parameters/index.mdx | 139 +++++++++++++++++++++++-------- 1 file changed, 102 insertions(+), 37 deletions(-) diff --git a/docs/manual/parameters/index.mdx b/docs/manual/parameters/index.mdx index be9066c974..9b3ba3250f 100644 --- a/docs/manual/parameters/index.mdx +++ b/docs/manual/parameters/index.mdx @@ -3,11 +3,24 @@ title: "Parameterization: compile-time metaprogramming" description: An introduction to parameters and compile-time metaprogramming. --- -Many languages have facilities for *metaprogramming*: that is, for writing code that generates or modifies code. Python has facilities for dynamic metaprogramming: features like decorators, metaclasses, and many more. These features make Python very flexible and productive, but since they're dynamic, they come with runtime overhead. Other languages have static or compile-time metaprogramming features, like C preprocessor macros and C++ templates. These can be limiting and hard to use. - -To support Modular's work in AI, Mojo aims to provide powerful, easy-to-use metaprogramming with zero runtime cost. This compile-time metaprogramming uses the same language as runtime programs, so you don't have to learn a new language—just a few new features. - -The main new feature is *parameters*. You can think of a parameter as a compile-time variable that becomes a runtime constant. This usage of "parameter" is probably different from what you're used to from other languages, where "parameter" and "argument" are often used interchangeably. In Mojo, "parameter" and "parameter expression" refer to compile-time values, and "argument" and "expression" refer to runtime values. +Many languages have facilities for *metaprogramming*: that is, for writing code that +generates or modifies code. Python has facilities for dynamic metaprogramming: features +like decorators, metaclasses, and many more. These features make Python very flexible +and productive, but since they're dynamic, they come with runtime overhead. Other +languages have static or compile-time metaprogramming features, like C preprocessor +macros and C++ templates. These can be limiting and hard to use. + +To support Modular's work in AI, Mojo aims to provide powerful, easy-to-use +metaprogramming with zero runtime cost. This compile-time metaprogramming uses the same +language as runtime programs, so you don't have to learn a new language—just a few new +features. + +The main new feature is *parameters*. You can think of a parameter as a +compile-time variable that becomes a runtime constant. This usage of "parameter" +is probably different from what you're used to from other languages, where +"parameter" and "argument" are often used interchangeably. In Mojo, "parameter" +and "parameter expression" refer to compile-time values, and "argument" and +"expression" refer to runtime values. In Mojo, you can add parameters to a struct or function. You can also define named parameter expressions—aliases—that you can use as runtime constants. @@ -104,9 +117,9 @@ repeat[count=2](42) This updated function takes any `Stringable` type, so you can pass it an `Int`, `String`, or `Bool` value. -You can't pass the `count` as a positional keyword without also specifying `MsgType`. -You can put `//` after `MsgType` to specify that it's always inferred by the argument. Now -you can pass the following parameter `count` positionally: +You can't pass the `count` as a positional keyword without also specifying +`MsgType`. You can put `//` after `MsgType` to specify that it's always inferred +by the argument. Now you can pass the following parameter `count` positionally: ```mojo fn repeat[MsgType: Stringable, //, count: Int](msg: MsgType): @@ -173,8 +186,8 @@ use a parameterized struct. In this case, when you create an instance of passing in this case is a *type*. That's OK: a Mojo type is a valid compile-time value.) -You'll see that `ElementType` is used throughout the struct where you'd usually see a -type name. For example, as the formal type for the `elements` in the +You'll see that `ElementType` is used throughout the struct where you'd usually +see a type name. For example, as the formal type for the `elements` in the constructor, and the return type of the `__getitem__()` method. Here's an example of using `GenericArray`: @@ -216,10 +229,10 @@ The method returns an instance of `GenericArray[Float64]`. When creating a generic struct, you might want to define some methods that require extra features. For example, consider a collection like `GenericArray` -that holds instances of `CollectionElement`. The `CollectionElement` trait -only requires that the stored data type be copyable and movable. This -imposes a lot of limitations: you can't implement a `sort()` method because -you can't guarantee that the stored type supports the comparison operators; you can't +that holds instances of `CollectionElement`. The `CollectionElement` trait only +requires that the stored data type be copyable and movable. This imposes a lot +of limitations: you can't implement a `sort()` method because you can't +guarantee that the stored type supports the comparison operators; you can't write a useful `__str__()` or `__repr__()` dunder method because you can't guarantee that the stored type supports conversion to a string. @@ -293,9 +306,9 @@ floating point numbers, so it's not practical to define all of the possible SIMD variations. Mojo's [`SIMD`](/mojo/stdlib/builtin/simd/SIMD) type (defined as a struct) -exposes the common SIMD operations through its methods, and makes the SIMD data type -and size values parametric. This allows you to directly map your data to the -SIMD vectors on any hardware. +exposes the common SIMD operations through its methods, and makes the SIMD data +type and size values parametric. This allows you to directly map your data to +the SIMD vectors on any hardware. Here's a cut-down (non-functional) version of Mojo's `SIMD` type definition: @@ -590,8 +603,8 @@ fn use_defaults() raises: ``` Recall that when a parametric function is called, Mojo can infer the parameter values. -That is, it can use the parameter values attached to an argument value (see the `sqrt[]()` -example above). If the parametric function also has a default value defined, +That is, it can use the parameter values attached to an argument value (see the +`sqrt[]()` example above). If the parametric function also has a default value defined, then the inferred parameter type takes precedence. For example, in the following code, we update the parametric `speak[]()` function @@ -661,9 +674,9 @@ you can't leave it out of the parameter list and let Mojo infer it from `value`: dependent_type[Float64(2.2)]() # Error! ``` -Infer-only parameters are a special class of parameters that are **always** -inferred from context. Infer-only parameters are placed at the **beginning** of -the parameter list, set off from other parameters by the `//` sigil: +Infer-only parameters are a special class of parameters that are **always** either +inferred from context or specified by keyword. Infer-only parameters are placed at the +**beginning** of the parameter list, set off from other parameters by the `//` sigil: ```mojo fn example[type: CollectionElement, //, list: List[type]]() @@ -688,8 +701,25 @@ Because infer-only parameters are declared at the beginning of the parameter list, other parameters can depend on them, and the compiler will always attempt to infer the infer-only values from bound parameters or arguments. -If the compiler can't infer the value of an infer-only parameter, compilation -fails. +There are sometimes cases where it's useful to specify an infer-only parameter by +keyword. For example, the [`StringSlice`](/mojo/stdlib/utils/string_slice/StringSlice) +type is parametric on [origin](/mojo/manual/values/lifetimes): + +```mojo +struct StringSlice[is_mutable: Bool, //, origin: Origin[is_mutable]]: ... +``` + +Here, the `StringSlice` `is_mutable` parameter is infer-only. The value is usually +inferred when you create an instance of `StringSlice`. Binding the `is_mutable` +parameter by keyword lets you define a new type that's constrained to an +immutable origin: + +```mojo +alias ImmutableStringSlice = StringSlice[is_mutable=False] +``` + +If the compiler can't infer the value of an infer-only parameter, and it's not +specified by keyword, compilation fails. ## Variadic parameters @@ -757,7 +787,8 @@ print('result type:', x.element_type, 'length:', len(x)) result type: float32 length: 4 ``` -Note that the resulting length is the sum of the input vector lengths, and this is expressed with a simple `+` operation. +Note that the resulting length is the sum of the input vector lengths, and this is +expressed with a simple `+` operation. ### Powerful compile-time programming @@ -797,11 +828,11 @@ print("Elements sum:", reduce_add(x)) Elements sum: 10 ``` -This makes use of the [`@parameter`](/mojo/manual/decorators/parameter) decorator to create a parametric if condition, which is an `if` statement that -runs at compile-time. It requires that its condition be a valid parameter -expression, and ensures that only the live branch of the `if` statement is -compiled into the program. (This is similar to use of the `@parameter` decorator -with a `for` loop shown earlier.) +This makes use of the [`@parameter`](/mojo/manual/decorators/parameter) decorator to +create a parametric if condition, which is an `if` statement that runs at compile-time. +It requires that its condition be a valid parameter expression, and ensures that only +the live branch of the `if` statement is compiled into the program. (This is similar to +use of the `@parameter` decorator with a `for` loop shown earlier.) ## Mojo types are just parameter expressions @@ -960,9 +991,27 @@ MyType["Hello", *_] MyType["Hello", _, _, _] ``` -When a parameter is explicitly unbound with the `_` or `*_` expression, you -**must** specify a value for that parameter to use the type. Any default value -from the original type declaration is ignored. +The `*_` expression specifically matches any parameters that can be specified by +position (positional-only or positional-or-keyword). To unbind keyword-only parameters, +use the double-star-underscore expression, `**_`, which matches any parameters that can +be specified by keyword (positional-or-keyword or keyword-only). + +```mojo +@value +struct KeyWordStruct[pos_or_kw: Int, *, kw_only: Int = 10]: + pass + +# Unbind both pos_or_kw and kw_only parameters +fn use_kw_struct(k: KeyWordStruct[**_]): + pass + +def main(): + use_kw_struct(KeyWordStruct[10, kw_only=11]()) +``` + +When a parameter is explicitly unbound with the `_`, `*_`, or `**_` expressions, you +**must** specify a value for that parameter to use the type. Any default value from the +original type declaration is ignored. Partially-bound and unbound parametric types can be used in some contexts where the missing (unbound) parameters will be supplied later—such as in @@ -1025,11 +1074,11 @@ parameterized. The `vec` argument takes an argument of type `SIMD[*_]`. This is an [unbound parameterized type](#fully-bound-partially-bound-and-unbound-types)—that is, it doesn't specify any parameter values for the type. Mojo treats the unbound parameters -on `vec` as implicit parameters on the function. This is roughly equivalent to -the following code, which includes *explicit* input parameters: +on `vec` as infer-only parameters on the function. This is roughly equivalent to +the following codes: ```mojo -fn print_params[t: DType, s: Int](vec: SIMD[t, s]): +fn print_params[t: DType, s: Int, //](vec: SIMD[t, s]): print(vec.type) print(vec.size) ``` @@ -1084,7 +1133,23 @@ print(c) [1, 0, 2, 0, 3, 0, 4, 0] ``` -As shown in the example, you can use the magic `__type_of(x)` call if you just want to match the type of an argument. In this case, it's more convenient and compact that writing the equivalent `SIMD[v1.type, v1.size]`. +As shown in the example, you can use the magic `__type_of(x)` call if you just want to +match the type of an argument. In this case, it's more convenient and compact that +writing the equivalent `SIMD[v1.type, v1.size]`. + +### Automatic parameterization of parameters + +You can also take advantage of automatic parameterization in a function's +parameter list. For example: + +```mojo +fn foo[value: SIMD](): + pass + +# Equivalent to: +fn foo[type: DType, size: Int, //, value: SIMD[type, size]](): + pass +``` ### Automatic parameterization with partially-bound types From bac9f13523e8b8d6eff800f18a9debe5425664a3 Mon Sep 17 00:00:00 2001 From: Connor Gray Date: Wed, 4 Dec 2024 13:05:03 -0600 Subject: [PATCH 026/509] [stdlib] polish: Expose `_lit_mut_cast` as `Origin.cast_from` alias This obviates the need to import the obscure `_lit_mut_cast` parametric alias hack, and instead more closely associates this operation as a "method" on Origin. MODULAR_ORIG_COMMIT_REV_ID: 6d07f58832f984f3ef68bc1f0e19f6877ca3e91a --- stdlib/src/builtin/builtin_list.mojo | 16 +--------------- stdlib/src/builtin/type_aliases.mojo | 26 ++++++++++++++++++++++++++ stdlib/src/memory/arc.mojo | 3 +-- stdlib/src/utils/span.mojo | 5 ++--- 4 files changed, 30 insertions(+), 20 deletions(-) diff --git a/stdlib/src/builtin/builtin_list.mojo b/stdlib/src/builtin/builtin_list.mojo index 9e6b5972ea..d736c55aa6 100644 --- a/stdlib/src/builtin/builtin_list.mojo +++ b/stdlib/src/builtin/builtin_list.mojo @@ -283,20 +283,6 @@ struct _lit_origin_union[ ] -struct _lit_mut_cast[ - is_mutable: Bool, //, - operand: Origin[is_mutable], - result_mutable: Bool, -]: - alias result = __mlir_attr[ - `#lit.origin.mutcast<`, - operand._mlir_origin, - `> : !lit.origin<`, - +result_mutable.value, - `>`, - ] - - struct VariadicListMem[ elt_is_mutable: Bool, //, element_type: AnyType, @@ -443,7 +429,7 @@ struct VariadicListMem[ # cast mutability of self to match the mutability of the element, # since that is what we want to use in the ultimate reference and # the union overall doesn't matter. - _lit_mut_cast[__origin_of(self), elt_is_mutable].result, + Origin[elt_is_mutable].cast_from[__origin_of(self)].result, ].result ] element_type: """Gets a single element on the variadic list. diff --git a/stdlib/src/builtin/type_aliases.mojo b/stdlib/src/builtin/type_aliases.mojo index 4139618270..b3358188b5 100644 --- a/stdlib/src/builtin/type_aliases.mojo +++ b/stdlib/src/builtin/type_aliases.mojo @@ -57,6 +57,18 @@ struct Origin[is_mutable: Bool]: `>`, ] + alias cast_from = _lit_mut_cast[result_mutable=is_mutable] + """Cast an existing Origin to be of the specified mutability. + + This is a low-level way to coerce Origin mutability. This should be used + rarely, typically when building low-level fundamental abstractions. Strongly + consider alternatives before reaching for this "escape hatch". + + Safety: + This is an UNSAFE operation if used to cast an immutable origin to + a mutable origin. + """ + # ===-------------------------------------------------------------------===# # Fields # ===-------------------------------------------------------------------===# @@ -79,3 +91,17 @@ struct Origin[is_mutable: Bool]: Args: mlir_origin: The raw MLIR origin value.""" self._mlir_origin = mlir_origin + + +struct _lit_mut_cast[ + is_mutable: Bool, //, + result_mutable: Bool, + operand: Origin[is_mutable], +]: + alias result = __mlir_attr[ + `#lit.origin.mutcast<`, + operand._mlir_origin, + `> : !lit.origin<`, + result_mutable.value, + `>`, + ] diff --git a/stdlib/src/memory/arc.mojo b/stdlib/src/memory/arc.mojo index d7b236af72..feb4c42711 100644 --- a/stdlib/src/memory/arc.mojo +++ b/stdlib/src/memory/arc.mojo @@ -46,7 +46,6 @@ print(ArcPointer(String("ok"))[]) from os.atomic import Atomic -from builtin.builtin_list import _lit_mut_cast from memory import UnsafePointer, stack_allocation @@ -146,7 +145,7 @@ struct ArcPointer[T: Movable]( ]( ref [self_life]self, ) -> ref [ - _lit_mut_cast[self_life, result_mutable=True].result + MutableOrigin.cast_from[self_life].result ] T: """Returns a mutable reference to the managed value. diff --git a/stdlib/src/utils/span.mojo b/stdlib/src/utils/span.mojo index 38bb86cbe5..282a3bc229 100644 --- a/stdlib/src/utils/span.mojo +++ b/stdlib/src/utils/span.mojo @@ -22,7 +22,6 @@ from utils import Span from collections import InlineArray -from builtin.builtin_list import _lit_mut_cast from memory import Pointer, UnsafePointer @@ -360,13 +359,13 @@ struct Span[ fn get_immutable( self, - ) -> Span[T, _lit_mut_cast[origin, False].result]: + ) -> Span[T, ImmutableOrigin.cast_from[origin].result]: """ Return an immutable version of this span. Returns: A span covering the same elements, but without mutability. """ - return Span[T, _lit_mut_cast[origin, False].result]( + return Span[T, ImmutableOrigin.cast_from[origin].result]( ptr=self._data, length=self._len ) From dfc8f49c472d79b6141e9baf0431953ede97a05e Mon Sep 17 00:00:00 2001 From: Arthur Evans Date: Wed, 4 Dec 2024 11:19:04 -0800 Subject: [PATCH 027/509] [Docs] Add Intro to pointers doc. Also includes some improvements to the existing API docs. MODULAR_ORIG_COMMIT_REV_ID: de875f1b71f56ec072111cde4936a45b0ed2968f --- docs/changelog-released.md | 6 +- .../images/owned-pointer-diagram-dark.png | Bin 0 -> 26898 bytes docs/manual/images/owned-pointer-diagram.png | Bin 0 -> 26431 bytes docs/manual/index.md | 3 +- docs/manual/pointers/index.mdx | 272 ++++++++++++++++++ .../unsafe-pointers.mdx} | 86 ++---- examples/notebooks/environment.yml | 14 + stdlib/src/memory/arc.mojo | 78 ++--- stdlib/src/memory/owned_pointer.mojo | 3 + stdlib/src/memory/pointer.mojo | 3 + stdlib/src/memory/unsafe_pointer.mojo | 18 +- 11 files changed, 383 insertions(+), 100 deletions(-) create mode 100644 docs/manual/images/owned-pointer-diagram-dark.png create mode 100644 docs/manual/images/owned-pointer-diagram.png create mode 100644 docs/manual/pointers/index.mdx rename docs/manual/{pointers.mdx => pointers/unsafe-pointers.mdx} (85%) create mode 100644 examples/notebooks/environment.yml diff --git a/docs/changelog-released.md b/docs/changelog-released.md index 5b3c84bdcf..79b64934eb 100644 --- a/docs/changelog-released.md +++ b/docs/changelog-released.md @@ -60,7 +60,7 @@ detailed information in the following sections: [`UnsafePointer`](/mojo/stdlib/memory/unsafe_pointer/UnsafePointer) instead. Functions that previously took a `DTypePointer` now take an equivalent `UnsafePointer`. For more information on using pointers, see [Unsafe - pointers](/mojo/manual/pointers) in the Mojo Manual. + pointers](/mojo/manual/pointers/unsafe-pointers) in the Mojo Manual. - There are many new standard library APIs, with new features for strings, collections, and interacting with the filesystem and environment. Changes are @@ -518,7 +518,7 @@ detailed information in the following sections: - `DTypePointer`, `LegacyPointer`, and `Pointer` have been removed. Use [`UnsafePointer`](/mojo/stdlib/memory/unsafe_pointer/UnsafePointer) instead. For more information on using pointers, see [Unsafe - pointers](/mojo/manual/pointers) in the Mojo Manual. + pointers](/mojo/manual/pointers/unsafe-pointers) in the Mojo Manual. Functions that previously took a `DTypePointer` now take an equivalent `UnsafePointer`. A quick rule for conversion from `DTypePointer` to @@ -1013,7 +1013,7 @@ Big themes for this release: - New Mojo Manual pages on [Control flow](/mojo/manual/control-flow), [Testing](/mojo/tools/testing) and using - [unsafe pointers](/mojo/manual/pointers). + [unsafe pointers](/mojo/manual/pointers/unsafe-pointers). ### Language changes diff --git a/docs/manual/images/owned-pointer-diagram-dark.png b/docs/manual/images/owned-pointer-diagram-dark.png new file mode 100644 index 0000000000000000000000000000000000000000..db8049790a34506ee083088c53719e484b639666 GIT binary patch literal 26898 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 Wr`&WenkzuSpUW2wv`RH?BmNgQU0g^2 literal 0 HcmV?d00001 diff --git a/docs/manual/images/owned-pointer-diagram.png b/docs/manual/images/owned-pointer-diagram.png new file mode 100644 index 0000000000000000000000000000000000000000..ef82f349bf314b1c630b2337a85d37ed84db301e GIT binary patch literal 26431 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

o>o;{?T)kl46hzWf+B2Va#1#Xj1zQKNHH3^ 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 literal 0 HcmV?d00001 diff --git a/docs/manual/index.md b/docs/manual/index.md index ba52bcd6c4..7d152a1b2b 100644 --- a/docs/manual/index.md +++ b/docs/manual/index.md @@ -56,7 +56,8 @@ feedback](https://www.modular.com/community). - **Pointers** - - [Unsafe pointers](/mojo/manual/pointers) + - [Intro to pointers](/mojo/manual/pointers/) + - [Unsafe pointers](/mojo/manual/pointers/unsafe-pointers) - **Python** diff --git a/docs/manual/pointers/index.mdx b/docs/manual/pointers/index.mdx new file mode 100644 index 0000000000..075fa33ea5 --- /dev/null +++ b/docs/manual/pointers/index.mdx @@ -0,0 +1,272 @@ +--- +title: Intro to pointers +sidebar_position: 1 +description: An overview of accessing memory using Mojo's pointer types. +--- + +A pointer is an indirect reference to one or more values stored in memory. The +pointer is a value that holds an address to memory, and provides APIs to store +and retrieve values to that memory. The value pointed to by a pointer is also +known as a _pointee_. + +The Mojo standard library includes several types of pointers, which provide +different sets of features. All of these pointer types are _generic_—they can +point to any type of value, and the value type is specified as a parameter. For +example, the following code creates an `OwnedPointer` that points to an `Int` +value: + +```mojo +var ptr: OwnedPointer[Int] +ptr = OwnedPointer(100) +``` + +The `ptr` variable has a value of type `OwnedPointer[Int]`. The pointer *points +to* a value of type `Int`, as shown in Figure 1. + + +

+ +![](../images/owned-pointer-diagram.png#light) +![](../images/owned-pointer-diagram-dark.png#dark) + +
Figure 1. Pointer and pointee
+
+ +Accessing the memory—to retrieve or update a value—is called +_dereferencing_ the pointer. You can dereference a pointer by following the +variable name with an empty pair of square brackets: + +```mojo +# Update an initialized value +ptr[] += 10 +# Access an initialized value +print(ptr[]) +``` + +## Pointer terminology + +Before we jump into the pointer types, here are a few terms you’ll run across. Some +of them may already be familiar to you. + +- **Safe pointers**: are designed to prevent memory errors. Unless you use one + of the APIs that are specially designated as unsafe, you can use these + pointers without worrying about memory issues like double-free or + use-after-free. + +- **Nullable pointers**: can point to an invalid memory location (typically 0, +or a “null pointer”). Safe pointers aren’t nullable. + +- **Smart pointers**: own their pointees, which means that the value they point + to may be deallocated when the pointer itself is destroyed. Non-owning + pointers may point to values owned elsewhere, or may require some manual + management of the value lifecycle. + +- **Memory allocation**: some pointer types can allocate memory to store their + pointees, while other pointers can only point to pre-existing values. Memory + allocation can either be implicit (that is, performed automatically when + initializing a pointer with a value) or explicit. + +- **Uninitialized memory**: refers to memory locations that haven’t been + initialized with a value, which may therefore contain random data. + Newly-allocated memory is uninitialized. The safe pointer types don’t allow + users to access memory that’s uninitialized. Unsafe pointers can allocate a + block of uninitialized memory locations and then initialize them one at a time. + Being able to access uninitialized memory is unsafe by definition. + +- **Copyable types**: can be copied implicitly (for example, by assigning a + value to a variable). Also called *implicitly copyable types*. + + ```mojo + copied_ptr = ptr + ``` + + *Explicitly copyable* types require the user to request a copy, using a + constructor with a keyword argument: + + ```mojo + copied_owned_ptr = OwnedPointer(other=owned_ptr) + ``` + +## Pointer types + +The Mojo standard library includes several pointer types with different +characteristics: + +- [`Pointer`](/mojo/stdlib/memory/pointer/Pointer) is a safe pointer that points + to a single value that it doesn’t own. + +- [`OwnedPointer`](/mojo/stdlib/memory/owned_pointer/OwnedPointer) is a smart + pointer that points to a single value, and maintains exclusive ownership of + that value. + +- [`ArcPointer`](/mojo/stdlib/memory/arc/ArcPointer) is a reference-counted + smart pointer that points to an owned value with ownership potentially shared + with other instances of `ArcPointer`. + +- [`UnsafePointer`](/mojo/stdlib/memory/unsafe_pointer/UnsafePointer) points to + one or more consecutive memory locations, and can refer to uninitialized + memory. + +Table 1 summarizes the different types of pointers: + +
+ +| | `Pointer` | `OwnedPointer` | `ArcPointer` | `UnsafePointer` | +| --- | --- | --- | --- | --- | +| Safe | Yes | Yes | Yes | No | +| Allocates memory | No | Implicitly 1 | Implicitly 1 | Explicitly | +| Owns pointee(s) | No | Yes | Yes | No 2 | +| Copyable | Yes | No 3 | Yes | Yes | +| Nullable | No | No | No | Yes | +| Can point to uninitialized memory | No | No | No | Yes | +| Can point to multiple values (array-like access) | No | No | No | Yes | + +
Table 1. Pointer types
+
+ +1 `OwnedPointer` and `ArcPointer` implicitly allocate memory when you +initialize the pointer with a value. + +2 `UnsafePointer` provides unsafe methods for initializing and +destroying instances of the stored type. The user is responsible for managing +the lifecycle of stored values. + +3 `OwnedPointer` is explicitly copyable, but explicitly copying an +`OwnedPointer` copies the *stored value* into a new `OwnedPointer`. + +The following sections provide more details on each pointer type. + +## `Pointer` + +The [`Pointer`](/mojo/stdlib/memory/pointer/Pointer) type is a safe pointer that +points to a initialized value that it doesn’t own. Some example use cases for a +`Pointer` include: + +- Storing a reference to a related type. For example, a list’s iterator object +might hold a `Pointer` back to the original list. + +- Passing the memory location for a single value to external code via +`external_call()`. + +- Where you need an API to return a long-lived reference to a value. (Currently +the iterators for standard library collection types like `List` return +pointers.) + +You can construct a `Pointer` using the `address_of()` static method: + +```python +ptr = Pointer.address_of(some_value) +``` + +You can also create a `Pointer` by copying an existing `Pointer`. + +A `Pointer` carries an [`origin`](/mojo/manual/values/lifetimes) for the stored +value, so Mojo can track the lifetime of the referenced value. + +## `OwnedPointer` + +The [`OwnedPointer`](/mojo/stdlib/memory/owned_pointer/OwnedPointer) type is a +smart pointer designed for cases where there is single ownership of the +underlying data. An `OwnedPointer` points to a single item, which is passed in +when you initialize the `OwnedPointer`. The `OwnedPointer` allocates memory and +moves or copies the value into the reserved memory. + +```python +o_ptr = OwnedPointer(some_big_struct) +``` + +An owned pointer can hold almost any type of item, but the stored item must be +either `Movable`, `Copyable`, or `ExplicitlyCopyable`. + +Since an `OwnedPointer` is designed to enforce single ownership, the pointer +itself can be moved, but not copied. + +Note: Currently, you can’t create an `Optional[OwnedPointer[T]]` because the +`Optional` type only works with types that are both movable and copyable. This +restricts some use cases that would otherwise be a natural fit +for`OwnedPointer`, including self-referential data structures like linked lists +and trees. (Until this use case is supported for `OwnedPointer`, it’s possible +to use`ArcPointer` where you need a smart pointer that can be `Optional`.) + +## `ArcPointer` + +An [`ArcPointer`](/mojo/stdlib/memory/arc/ArcPointer) is a reference-counted +smart pointer, ideal for shared resources where the last owner for a given value +may not be clear. Like an `OwnedPointer`, it points to a single value, and it +allocates memory when you initialize the `ArcPointer` with a value: + +```python +attributesDict = Dict[String, String]() +attributes = ArcPointer(attributesDict) +``` + +Unlike an `OwnedPointer`, an `ArcPointer` can be freely copied. All instances +of a given `ArcPointer` share a reference count, which is incremented whenever +the `ArcPointer` is copied and decremented whenever an instance is destroyed. +When the reference count reaches zero, the stored value is destroyed and the +allocated memory is freed. + +You can use `ArcPointer` to implement safe reference-semantic types. For +example, in the following code snippet `SharedDict` uses an `ArcPointer` to +store a dictionary. Copying an instance of `SharedDict` only copies the +`ArcPointer`, not the dictionary, which is shared between all of the copies. + +```python +from memory import ArcPointer +from collections import Dict + +struct SharedDict: + var attributes: ArcPointer[Dict[String, String]] + + fn __init__(out self): + attributesDict = Dict[String, String]() + self.attributes = ArcPointer(attributesDict) + + fn __copyinit__(out self, other: Self): + self.attributes = other.attributes + + def __setitem__(inout self, key: String, value: String): + self.attributes[][key] = value + + def __getitem__(self, key: String) -> String: + return self.attributes[].get(key, default="") + +def main(): + thing1 = SharedDict() + thing2 = thing1 + thing1["Flip"] = "Flop" + print(thing2["Flip"]) +``` + +Note: The reference count is stored using an +[`Atomic`]([/mojo/stdlib/os/atomic/Atomic](https://docs.modular-staging.com/mojo/stdlib/os/atomic/Atomic)) +value to ensure that updates to the reference count are thread-safe. However, +Mojo doesn’t currently enforce exclusive access across thread boundaries, so +it’s possible to form race conditions. + +## UnsafePointer + +[`UnsafePointer`](/mojo/stdlib/memory/unsafe_pointer/UnsafePointer) is a +low-level pointer that can access a block of contiguous memory locations, which +might be uninitialized. It’s analogous to a raw pointer in the C and C++ +programming languages. `UnsafePointer` provides unsafe methods for initializing +and destroying stored values, as well as for accessing the values once they’re +initialized. + +As the name suggests, `UnsafePointer` doesn’t provide any memory safety +guarantees, so you should reserve it for cases when none of the other pointer +types will do the job. Here are some use cases where you might want to use an +`UnsafePointer`: + +- Building a high-performance array-like structure, such as `List` or `Tensor`. + A single `UnsafePointer` can access many values, and gives you a lot of + control over how you allocate, use, and deallocate memory. Being able to + access uninitialized memory means that you can preallocate a block of memory, + and initialize values incrementally as they are added to the collection. + +- Interacting with external libraries including C++ and Python. You can + use`UnsafePointer` to pass a buffer full of data to or from an external + library. + +For more information, see [Unsafe +pointers](/mojo/manual/pointers/unsafe-pointers). diff --git a/docs/manual/pointers.mdx b/docs/manual/pointers/unsafe-pointers.mdx similarity index 85% rename from docs/manual/pointers.mdx rename to docs/manual/pointers/unsafe-pointers.mdx index 57482a3781..a2a5f04acd 100644 --- a/docs/manual/pointers.mdx +++ b/docs/manual/pointers/unsafe-pointers.mdx @@ -3,26 +3,24 @@ title: Unsafe pointers description: Using unsafe pointers to access dynamically-allocated memory. --- -The [`UnsafePointer`](/mojo/stdlib/memory/unsafe_pointer/UnsafePointer) type -creates an indirect reference to a location in memory. +The [`UnsafePointer`](/mojo/stdlib/memory/unsafe_pointer/UnsafePointer) type is +one of several pointer types available in the standard library to indirectly +reference locations in memory. + You can use an `UnsafePointer` to dynamically allocate and free memory, or to point to memory allocated by some other piece of code. You can use these pointers to write code that interacts with low-level interfaces, to interface -with other programming languages, or to build certain kinds of data structures. +with other programming languages, or to build array-like data structures. But as the name suggests, they're inherently *unsafe*. For example, when using unsafe pointers, you're responsible for ensuring that memory gets allocated and freed correctly. -:::note - -In addition to unsafe pointers, Mojo supports a safe -[`Pointer`](/mojo/stdlib/memory/pointer/Pointer) type. See -[`UnsafePointer` and `Pointer`](#unsafepointer-and-pointer) for a brief -comparison of the types. +In general, you should prefer safe pointer types when possible, reserving +`UnsafePointer` for those use cases where no other pointer type works. +For a comparison of standard library pointer types, see [Intro to +pointers](/mojo/manual/pointers/). -::: - -## What is a pointer? +## Unsafe pointer basics An `UnsafePointer` is a type that holds an address to memory. You can store and retrieve values in that memory. The `UnsafePointer` type is *generic*—it can @@ -40,8 +38,8 @@ ptr.init_pointee_copy(100)
-![](./images/pointer-diagram.png#light) -![](./images/pointer-diagram-dark.png#dark) +![](../images/pointer-diagram.png#light) +![](../images/pointer-diagram-dark.png#dark)
Figure 1. Pointer and pointee
@@ -69,20 +67,20 @@ structures. For details, see At any given time, a pointer can be in one of several states: -* Uninitialized. Just like any variable, a variable of type `UnsafePointer` can +- Uninitialized. Just like any variable, a variable of type `UnsafePointer` can be declared but uninitialized. ```mojo var ptr: UnsafePointer[Int] ``` -* Null. A null pointer has an address of 0, indicating an invalid pointer. +- Null. A null pointer has an address of 0, indicating an invalid pointer. ```mojo ptr = UnsafePointer[Int]() ``` -* Pointing to allocated, uninitialized memory. The `alloc()` static method +- Pointing to allocated, uninitialized memory. The `alloc()` static method returns a pointer to a newly-allocated block of memory with space for the specified number of elements of the pointee's type. @@ -93,7 +91,7 @@ At any given time, a pointer can be in one of several states: Trying to dereference a pointer to uninitialized memory results in undefined behavior. -* Pointing to initialized memory. You can initialize an allocated, uninitialized +- Pointing to initialized memory. You can initialize an allocated, uninitialized pointer by moving or copying an existing value into the memory. Or you can use the `address_of()` static method to get a pointer to an existing value. @@ -113,7 +111,7 @@ At any given time, a pointer can be in one of several states: ptr[] = newValue ``` -* Dangling. When you free the pointer's allocated memory, you're left with a +- Dangling. When you free the pointer's allocated memory, you're left with a *dangling pointer*. The address still points to its previous location, but the memory is no longer allocated to this pointer. Trying to dereference the pointer, or calling any method that would access the memory location results @@ -127,8 +125,8 @@ The following diagram shows the lifecycle of an `UnsafePointer`:
-![](./images/pointer-lifecycle.png#light) -![](./images/pointer-lifecycle-dark.png#dark) +![](../images/pointer-lifecycle.png#light) +![](../images/pointer-lifecycle-dark.png#dark)
Figure 2. Lifecycle of an UnsafePointer
@@ -293,8 +291,8 @@ ptr += 1
-![](./images/pointer-offset.png#light) -![](./images/pointer-offset-dark.png#dark) +![](../images/pointer-offset.png#light) +![](../images/pointer-offset-dark.png#dark)
Figure 3. Pointer arithmetic
@@ -353,7 +351,7 @@ from memory import UnsafePointer def share_array(): np = Python.import_module("numpy") arr = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9]) - ptr = arr.__array_interface__["data"][0].unsafe_get_as_pointer[DType.int64]() + ptr = arr.ctypes.data.unsafe_get_as_pointer[DType.int64]() for i in range(9): print(ptr[i], end=", ") @@ -364,11 +362,10 @@ share_array() 1, 2, 3, 4, 5, 6, 7, 8, 9, ``` -NumPy arrays implement the -[array interface protocol](https://numpy.org/doc/stable/reference/arrays.interface.html), -which defines the `__array_interface__` object used in the example, where -`__array_interface__["data"][0]` is a Python integer holding the address of the -underlying data. The `unsafe_get_as_pointer()` method constructs an +This example uses the NumPy +[`ndarray.ctype`](https://numpy.org/doc/stable/reference/generated/numpy.ndarray.ctypes.html#numpy.ndarray.ctypes) +attribute to access the raw pointer to the underlying storage +(`ndarray.ctype.data`). The `unsafe_get_as_pointer()` method constructs an `UnsafePointer` to this address. ### Working with C/C++ pointers @@ -459,8 +456,8 @@ you want to access just the red values, you can use a strided load or store.
-![](./images/strided-load-storage.png#light) -![](./images/strided-load-storage-dark.png#dark) +![](../images/strided-load-storage.png#light) +![](../images/strided-load-storage-dark.png#dark)
Figure 4. Strided load
@@ -496,35 +493,14 @@ from (pointer address) + offset[n]. Unsafe pointers are unsafe for several reasons: -* Memory management is up to the user. You need to manually allocate +- Memory management is up to the user. You need to manually allocate and free memory, and be aware of when other APIs are allocating or freeing memory for you. -* `UnsafePointer` values are *nullable*—that is, the pointer +- `UnsafePointer` values are *nullable*—that is, the pointer is not guaranteed to point to anything. And even when a pointer points to allocated memory, that memory may not be *initialized*. -* Mojo doesn't track lifetimes for the data pointed to by an `UnsafePointer`. +- Mojo doesn't track lifetimes for the data pointed to by an `UnsafePointer`. When you use an `UnsafePointer`, managing memory and knowing when to destroy objects is your responsibility. - -## `UnsafePointer` and `Pointer` - -The [`Pointer`](/mojo/stdlib/memory/pointer/Pointer) type is essentially a -safe pointer type. Like a pointer, you can derference a `Pointer` using the -dereference operator, `[]`. However, the `Pointer` type has several -differences from `UnsafePointer` which make it safer: - -* A `Pointer` is *non-nullable*: it always points to something. -* You can't allocate or free memory using a `Pointer`—only point to an - existing value. -* A `Pointer` only refers to a single value. You can't do pointer arithmetic - with a `Pointer`. -* A `Pointer` has an associated *origin*, which connects it back to an - original, owned value. The origin ensures that the value won't be destroyed - while the pointer exists. - -The `Pointer` type shouldn't be confused with the immutable and mutable -references used with the `read` and `mut` argument conventions. Those -references do not require explicit dereferencing, unlike a `Pointer` or -`UnsafePointer`. diff --git a/examples/notebooks/environment.yml b/examples/notebooks/environment.yml new file mode 100644 index 0000000000..45a48799ef --- /dev/null +++ b/examples/notebooks/environment.yml @@ -0,0 +1,14 @@ +name: mojo-notebooks +channels: + - pytorch + - https://conda.modular.com/max/ + - conda-forge + - defaults +dependencies: + - python>=3.11,<3.12 + - max>=24.4.0dev6 + - max = "*" +pip = ">=24.0,<25" +jupyterlab = ">=4.2.5,<5" +matplotlib = ">=3.9.2,<4" +numpy = ">=1.26.4,<2" diff --git a/stdlib/src/memory/arc.mojo b/stdlib/src/memory/arc.mojo index feb4c42711..8680d06560 100644 --- a/stdlib/src/memory/arc.mojo +++ b/stdlib/src/memory/arc.mojo @@ -10,38 +10,13 @@ # See the License for the specific language governing permissions and # limitations under the License. # ===----------------------------------------------------------------------=== # -"""Pointer-counted smart pointers. +"""Reference-counted smart pointers. -Example usage: +You can import these APIs from the `memory` package. For example: ```mojo from memory import ArcPointer -var p = ArcPointer(4) -var p2 = p -p2[]=3 -print(3 == p[]) ``` - -Subscripting(`[]`) is done by `Pointer`, -in order to ensure that the underlying `ArcPointer` outlive the operation. - -It is highly DISCOURAGED to manipulate an `ArcPointer` through `UnsafePointer`. -Mojo's ASAP deletion policy ensure values are destroyed at last use. -Do not unsafely dereference the `ArcPointer` inner `UnsafePointer` field. -See [Lifecycle](https://docs.modular.com/mojo/manual/lifecycle/). - -```mojo -# Illustration of what NOT to do, in order to understand: -print(ArcPointer(String("ok"))._inner[].payload) -#........................^ASAP ^already freed -``` - -Always use `Pointer` subscripting (`[]`): - -```mojo -print(ArcPointer(String("ok"))[]) -``` - """ from os.atomic import Atomic @@ -79,9 +54,34 @@ struct ArcPointer[T: Movable]( This pointer is copyable, including across threads, maintaining a reference count to the underlying data. + When you initialize an `ArcPointer` with a value, it allocates memory and + moves the value into the allocated memory. Copying an instance of an + `ArcPointer` increments the reference count. Destroying an instance + decrements the reference count. When the reference count reaches zero, + `ArcPointer` destroys the value and frees its memory. + This pointer itself is thread-safe using atomic accesses to reference count the underlying data, but references returned to the underlying data are not - thread safe. + thread-safe. + + Subscripting an `ArcPointer` (`ptr[]`) returns a mutable reference to the + stored value. This is the only safe way to access the stored value. Other + methods, such as using the `unsafe_ptr()` method to retrieve an unsafe + pointer to the stored value, or accessing the private fields of an + `ArcPointer`, are unsafe and may result in memory errors. + + For a comparison with other pointer types, see [Intro to + pointers](/mojo/manual/pointers/) in the Mojo Manual. + + Examples: + + ```mojo + from memory import ArcPointer + var p = ArcPointer(4) + var p2 = p + p2[]=3 + print(3 == p[]) + ``` Parameters: T: The type of the stored value. @@ -126,9 +126,9 @@ struct ArcPointer[T: Movable]( @no_inline fn __del__(owned self): - """Delete the smart pointer reference. + """Delete the smart pointer. - Decrement the ref count for the reference. If there are no more + Decrement the reference count for the stored value. If there are no more references, delete the object and free its memory.""" if self._inner[].drop_ref(): # Call inner destructor, then free the memory. @@ -161,7 +161,7 @@ struct ArcPointer[T: Movable]( """Retrieves a pointer to the underlying memory. Returns: - The UnsafePointer to the underlying memory. + The `UnsafePointer` to the pointee. """ # TODO: consider removing this method. return UnsafePointer.address_of(self._inner[].payload) @@ -175,23 +175,27 @@ struct ArcPointer[T: Movable]( return self._inner[].refcount.load() fn __is__(self, rhs: Self) -> Bool: - """Returns True if the two ArcPointers point at the same object. + """Returns True if the two `ArcPointer` instances point at the same + object. Args: - rhs: The other ArcPointer. + rhs: The other `ArcPointer`. Returns: - True if the two ArcPointers point at the same object and False otherwise. + True if the two `ArcPointers` instances point at the same object and + False otherwise. """ return self._inner == rhs._inner fn __isnot__(self, rhs: Self) -> Bool: - """Returns True if the two ArcPointers point at different objects. + """Returns True if the two `ArcPointer` instances point at different + objects. Args: - rhs: The other ArcPointer. + rhs: The other `ArcPointer`. Returns: - True if the two ArcPointers point at different objects and False otherwise. + True if the two `ArcPointer` instances point at different objects + and False otherwise. """ return self._inner != rhs._inner diff --git a/stdlib/src/memory/owned_pointer.mojo b/stdlib/src/memory/owned_pointer.mojo index 3974daa99f..5d1ddb367d 100644 --- a/stdlib/src/memory/owned_pointer.mojo +++ b/stdlib/src/memory/owned_pointer.mojo @@ -21,6 +21,9 @@ struct OwnedPointer[T: AnyType]: system such that no more than one mutable alias for the underlying data may exist. + For a comparison with other pointer types, see [Intro to + pointers](/mojo/manual/pointers/) in the Mojo Manual. + Parameters: T: The type to be stored in the OwnedPointer[]. """ diff --git a/stdlib/src/memory/pointer.mojo b/stdlib/src/memory/pointer.mojo index 925707a0ea..16a4eadd29 100644 --- a/stdlib/src/memory/pointer.mojo +++ b/stdlib/src/memory/pointer.mojo @@ -305,6 +305,9 @@ struct Pointer[ ](CollectionElementNew, Stringable): """Defines a non-nullable safe pointer. + For a comparison with other pointer types, see [Intro to + pointers](/mojo/manual/pointers/) in the Mojo Manual. + Parameters: is_mutable: Whether the pointee data may be mutated through this. type: Type of the underlying data. diff --git a/stdlib/src/memory/unsafe_pointer.mojo b/stdlib/src/memory/unsafe_pointer.mojo index 0d12a44a78..f4971c68af 100644 --- a/stdlib/src/memory/unsafe_pointer.mojo +++ b/stdlib/src/memory/unsafe_pointer.mojo @@ -63,7 +63,17 @@ struct UnsafePointer[ Intable, Comparable, ): - """This is a pointer type that can point to any generic value that is movable. + """UnsafePointer[T] represents an indirect reference to one or more values of + type T consecutively in memory, and can refer to uninitialized memory. + + Because it supports referring to uninitialized memory, it provides unsafe + methods for initializing and destroying instances of T, as well as methods + for accessing the values once they are initialized. + + For more information see [Unsafe + pointers](/mojo/manual/pointers/unsafe-pointers) in the Mojo Manual. For a + comparison with other pointer types, see [Intro to + pointers](/mojo/manual/pointers/). Parameters: type: The type the pointer points to. @@ -84,12 +94,12 @@ struct UnsafePointer[ address_space._value.value, `>`, ] + """The underlying pointer type.""" # ===-------------------------------------------------------------------===# # Fields # ===-------------------------------------------------------------------===# - """The underlying pointer type.""" var address: Self._mlir_type """The underlying pointer.""" @@ -106,7 +116,7 @@ struct UnsafePointer[ @always_inline @implicit fn __init__(out self, value: Self._mlir_type): - """Create a pointer with the input value. + """Create a pointer from a low-level pointer primitive. Args: value: The MLIR value of the pointer to construct with. @@ -129,7 +139,7 @@ struct UnsafePointer[ @always_inline fn __init__(out self, *, other: Self): - """Copy the object. + """Copy an existing pointer. Args: other: The value to copy. From c0c2161c8037006663715773fc45ece9d5fa44cc Mon Sep 17 00:00:00 2001 From: Joe Loser Date: Wed, 4 Dec 2024 12:24:01 -0700 Subject: [PATCH 028/509] [stdlib] Remove copies in `StaticTuple.getitem` Remove the copies of the internal array before getting an element in `StaticTuple`. There is no need to create a copy before calling `pop.array.gep` as seen by the use in `InlineArray`. We'll look into the `setitem` copies in a follow-up as they are causing some errors still that need investigation. MODULAR_ORIG_COMMIT_REV_ID: 214bff889d1299f766dae591ef5ce86fbb2f1999 --- stdlib/src/utils/static_tuple.mojo | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/stdlib/src/utils/static_tuple.mojo b/stdlib/src/utils/static_tuple.mojo index 6904888e65..ff745bedec 100644 --- a/stdlib/src/utils/static_tuple.mojo +++ b/stdlib/src/utils/static_tuple.mojo @@ -218,15 +218,10 @@ struct StaticTuple[element_type: AnyTrivialRegType, size: Int](Sized): debug_assert( int(idx.__mlir_index__()) < size, "index must be within bounds" ) - # Copy the array so we can get its address, because we can't take the - # address of 'self' in a non-mutating method. - var arrayCopy = self.array var ptr = __mlir_op.`pop.array.gep`( - UnsafePointer.address_of(arrayCopy).address, idx.__mlir_index__() + UnsafePointer.address_of(self.array).address, idx.__mlir_index__() ) - var result = UnsafePointer(ptr)[] - _ = arrayCopy - return result + return UnsafePointer(ptr)[] @always_inline("nodebug") fn __setitem__[ From 996fc97e74aec49ae7d9e8e97a5661d9c82410d5 Mon Sep 17 00:00:00 2001 From: rd4com <144297616+rd4com@users.noreply.github.com> Date: Wed, 4 Dec 2024 11:41:12 -0800 Subject: [PATCH 029/509] [External] [Stdlib] Add `PythonObject.__contains__` (#51430) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [External] [Stdlib] Add `PythonObject.__contains__` Simple and small implementation, Improving the `🐍 Python` experience ! Example usage: ```mojo x = PythonObject([1,2,3]) if 1 in x: print("1 in x") ``` That method should be replaced by a `c-python` function if possible. Co-authored-by: rd4com <144297616+rd4com@users.noreply.github.com> Closes modularml/mojo#3101 MODULAR_ORIG_COMMIT_REV_ID: d08c1f856feda307b8da58ec0cf3442553b3acc7 --- docs/changelog.md | 10 +++ stdlib/src/python/_cpython.mojo | 9 +++ stdlib/src/python/python_object.mojo | 21 ++++++ ..._for_test_python_object_dunder_contains.py | 40 +++++++++++ stdlib/test/python/test_python_cpython.mojo | 40 +++++++++++ stdlib/test/python/test_python_object.mojo | 26 +++++++ .../test_python_object_dunder_contains.mojo | 70 +++++++++++++++++++ 7 files changed, 216 insertions(+) create mode 100644 stdlib/test/python/module_for_test_python_object_dunder_contains.py create mode 100644 stdlib/test/python/test_python_cpython.mojo create mode 100644 stdlib/test/python/test_python_object_dunder_contains.mojo diff --git a/docs/changelog.md b/docs/changelog.md index 664fe17057..b101a22608 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -566,6 +566,16 @@ what we publish. 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") + ### ❌ Removed - The `UnsafePointer.bitcast` overload for `DType` has been removed. Wrap your diff --git a/stdlib/src/python/_cpython.mojo b/stdlib/src/python/_cpython.mojo index 4a28b2d117..05426aa8eb 100644 --- a/stdlib/src/python/_cpython.mojo +++ b/stdlib/src/python/_cpython.mojo @@ -1348,7 +1348,16 @@ struct CPython: ", parent obj:", obj._get_ptr_as_int(), ) + return r + fn PyObject_HasAttrString( + mut self, + obj: PyObjectPtr, + name: StringRef, + ) -> Int: + var r = self.lib.get_function[ + fn (PyObjectPtr, UnsafePointer[UInt8]) -> Int + ]("PyObject_HasAttrString")(obj, name.data) return r fn PyObject_GetAttrString( diff --git a/stdlib/src/python/python_object.mojo b/stdlib/src/python/python_object.mojo index 4566b11501..a6b3a8a45f 100644 --- a/stdlib/src/python/python_object.mojo +++ b/stdlib/src/python/python_object.mojo @@ -1325,6 +1325,27 @@ struct PythonObject( """ return self._call_zero_arg_method("__invert__") + fn __contains__(self, rhs: PythonObject) raises -> Bool: + """Contains dunder. + + Calls the underlying object's `__contains__` method. + + Args: + rhs: Right hand value. + + Returns: + True if rhs is in self. + """ + # TODO: replace/optimize with c-python function. + # TODO: implement __getitem__ step for cpython membership test operator. + var cpython = _get_global_python_itf().cpython() + if cpython.PyObject_HasAttrString(self.py_object, "__contains__"): + return self._call_single_arg_method("__contains__", rhs).__bool__() + for v in self: + if v == rhs: + return True + return False + # see https://github.com/python/cpython/blob/main/Objects/call.c # for decrement rules fn __call__( diff --git a/stdlib/test/python/module_for_test_python_object_dunder_contains.py b/stdlib/test/python/module_for_test_python_object_dunder_contains.py new file mode 100644 index 0000000000..40ec598dee --- /dev/null +++ b/stdlib/test/python/module_for_test_python_object_dunder_contains.py @@ -0,0 +1,40 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2024, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + + +class Class_no_iterable_no_contains: + x = 1 + + +class Class_no_iterable_but_contains: + x = 123 + + def __contains__(self, rhs): + return rhs == self.x + + +class Class_iterable_no_contains: + def __init__(self): + self.data = [123, 456] + + def __iter__(self): + self.i = 0 + return self + + def __next__(self): + if self.i >= len(self.data): + raise StopIteration + else: + tmp = self.data[self.i] + self.i += 1 + return tmp diff --git a/stdlib/test/python/test_python_cpython.mojo b/stdlib/test/python/test_python_cpython.mojo new file mode 100644 index 0000000000..77d4bfdb59 --- /dev/null +++ b/stdlib/test/python/test_python_cpython.mojo @@ -0,0 +1,40 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2024, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # +# XFAIL: asan && !system-darwin +# RUN: %mojo %s + +from python import Python, PythonObject +from testing import assert_equal, assert_false, assert_raises, assert_true + + +def test_PyObject_HasAttrString(mut python: Python): + var Cpython_env = python.impl._cpython + + var the_object = PythonObject(0) + var result = Cpython_env[].PyObject_HasAttrString( + the_object.py_object, "__contains__" + ) + assert_equal(0, result) + + the_object = PythonObject([1, 2, 3]) + result = Cpython_env[].PyObject_HasAttrString( + the_object.py_object, "__contains__" + ) + assert_equal(1, result) + _ = the_object + + +def main(): + # initializing Python instance calls init_python + var python = Python() + test_PyObject_HasAttrString(python) diff --git a/stdlib/test/python/test_python_object.mojo b/stdlib/test/python/test_python_object.mojo index 92180fb8d0..b1c6799157 100644 --- a/stdlib/test/python/test_python_object.mojo +++ b/stdlib/test/python/test_python_object.mojo @@ -576,6 +576,31 @@ fn test_py_slice() raises: _ = with_2d[0:1][4] +def test_contains_dunder(): + with assert_raises(contains="'int' object is not iterable"): + var z = PythonObject(0) + _ = 5 in z + + var x = PythonObject([1.1, 2.2]) + assert_true(1.1 in x) + assert_false(3.3 in x) + + x = PythonObject(["Hello", "World"]) + assert_true("World" in x) + + x = PythonObject((1.5, 2)) + assert_true(1.5 in x) + assert_false(3.5 in x) + + var y = Dict[PythonObject, PythonObject]() + y["A"] = "A" + y["B"] = 5 + x = PythonObject(y) + assert_true("A" in x) + assert_false("C" in x) + assert_true("B" in x) + + def main(): # initializing Python instance calls init_python var python = Python() @@ -593,3 +618,4 @@ def main(): test_getitem_raises() test_setitem_raises() test_py_slice() + test_contains_dunder() diff --git a/stdlib/test/python/test_python_object_dunder_contains.mojo b/stdlib/test/python/test_python_object_dunder_contains.mojo new file mode 100644 index 0000000000..5d4c722278 --- /dev/null +++ b/stdlib/test/python/test_python_object_dunder_contains.mojo @@ -0,0 +1,70 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2024, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # +# XFAIL: asan && !system-darwin +# RUN: %mojo %s + +from python import Python, PythonObject +from testing import assert_equal, assert_false, assert_raises, assert_true +from collections import Dict + + +def test_contains_dunder(mut python: Python): + with assert_raises(contains="'int' object is not iterable"): + var z = PythonObject(0) + _ = 5 in z + + var x = PythonObject([1.1, 2.2]) + assert_true(1.1 in x) + assert_false(3.3 in x) + + x = PythonObject(["Hello", "World"]) + assert_true("World" in x) + + x = PythonObject((1.5, 2)) + assert_true(1.5 in x) + assert_false(3.5 in x) + + var y = Dict[PythonObject, PythonObject]() + y["A"] = "A" + y["B"] = 5 + x = PythonObject(y) + assert_true("A" in x) + assert_false("C" in x) + assert_true("B" in x) + + # tests with python modules: + module = python.import_module( + "module_for_test_python_object_dunder_contains" + ) + + x = module.Class_no_iterable_but_contains() + assert_true(123 in x) + + x = module.Class_no_iterable_no_contains() + with assert_raises( + contains="'Class_no_iterable_no_contains' object is not iterable" + ): + _ = 123 in x + + x = module.Class_iterable_no_contains() + assert_true(123 in x) + assert_true(456 in x) + assert_false(234 in x) + x.data.append(234) + assert_true(234 in x) + + +def main(): + # initializing Python instance calls init_python + var python = Python() + test_contains_dunder(python) From 31daaaaf5743191bd40dcfdc0e25d132c1214bf9 Mon Sep 17 00:00:00 2001 From: Lukas Hermann <1734032+lsh@users.noreply.github.com> Date: Wed, 4 Dec 2024 15:22:00 -0500 Subject: [PATCH 030/509] [stdlib] Add `__reversed__` to `Span` All the machinery is already in place, so this just wires up `reversed()` for `Span`. MODULAR_ORIG_COMMIT_REV_ID: 91b588f3e0d91f27d9bc643c1e081cc27b52600e --- docs/changelog.md | 4 ++++ stdlib/src/builtin/reversed.mojo | 21 +++++++++++++++++++++ stdlib/src/utils/span.mojo | 13 +++++++++++-- stdlib/test/utils/test_span.mojo | 11 +++++++++++ 4 files changed, 47 insertions(+), 2 deletions(-) diff --git a/docs/changelog.md b/docs/changelog.md index b101a22608..177c2bbd9f 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -292,6 +292,10 @@ what we publish. 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]`. + ### 🦋 Changed - The `inout` and `borrowed` argument conventions have been renamed to the `mut` diff --git a/stdlib/src/builtin/reversed.mojo b/stdlib/src/builtin/reversed.mojo index a1c984e81f..e01947a3fb 100644 --- a/stdlib/src/builtin/reversed.mojo +++ b/stdlib/src/builtin/reversed.mojo @@ -19,6 +19,7 @@ from collections import Deque, Dict from collections.deque import _DequeIter from collections.dict import _DictEntryIter, _DictKeyIter, _DictValueIter from collections.list import _ListIter +from utils.span import Span, _SpanIter from .range import _StridedRange @@ -193,3 +194,23 @@ fn reversed[ return _DictEntryIter[K, V, dict_origin, False]( src[]._reserved() - 1, 0, src ) + + +@always_inline +fn reversed[ + T: CollectionElement +](value: Span[T]) -> _SpanIter[T, value.origin, forward=False]: + """Get a reversed iterator of the input Span. + + **Note**: iterators are currently non-raising. + + Parameters: + T: The type of the elements in the Span. + + Args: + value: The Span to get the reversed iterator of. + + Returns: + The reversed iterator of the Span. + """ + return value.__reversed__() diff --git a/stdlib/src/utils/span.mojo b/stdlib/src/utils/span.mojo index 282a3bc229..5aa2fb4cf7 100644 --- a/stdlib/src/utils/span.mojo +++ b/stdlib/src/utils/span.mojo @@ -224,13 +224,22 @@ struct Span[ @always_inline fn __iter__(self) -> _SpanIter[T, origin]: - """Get an iterator over the elements of the span. + """Get an iterator over the elements of the Span. Returns: - An iterator over the elements of the span. + An iterator over the elements of the Span. """ return _SpanIter(0, self) + @always_inline + fn __reversed__(self) -> _SpanIter[T, origin, forward=False]: + """Iterate backwards over the Span. + + Returns: + A reversed iterator of the Span elements. + """ + return _SpanIter[forward=False](len(self), self) + # ===------------------------------------------------------------------===# # Trait implementations # ===------------------------------------------------------------------===# diff --git a/stdlib/test/utils/test_span.mojo b/stdlib/test/utils/test_span.mojo index ebf04f8157..a666788354 100644 --- a/stdlib/test/utils/test_span.mojo +++ b/stdlib/test/utils/test_span.mojo @@ -204,6 +204,16 @@ def test_ref(): assert_true(s.as_ref() == Pointer.address_of(l.unsafe_ptr()[])) +def test_reversed(): + var forward = InlineArray[Int, 3](1, 2, 3) + var backward = InlineArray[Int, 3](3, 2, 1) + var s = Span[Int](forward) + var i = 0 + for num in reversed(s): + assert_equal(num[], backward[i]) + i += 1 + + def main(): test_span_list_int() test_span_list_str() @@ -215,3 +225,4 @@ def main(): test_bool() test_fill() test_ref() + test_reversed() From ba8c566c8e7c586ae5ad302efd5e343b85ea39df Mon Sep 17 00:00:00 2001 From: Joe Loser Date: Wed, 4 Dec 2024 15:54:54 -0700 Subject: [PATCH 031/509] [stdlib] Clean up setting `_is_owned` for destroying packs Use `lit.ownership.mark_destroyed` instead of setting the private member of `_is_owned` of `VariadicListMem` when used in downstream collections. MODULAR_ORIG_COMMIT_REV_ID: a5503dce64c34fe17044834d9808a888417a944d --- stdlib/src/collections/deque.mojo | 18 +++++++++--------- stdlib/src/collections/inline_array.mojo | 6 ++++-- stdlib/src/collections/list.mojo | 16 +++++++++------- 3 files changed, 22 insertions(+), 18 deletions(-) diff --git a/stdlib/src/collections/deque.mojo b/stdlib/src/collections/deque.mojo index 6d45725350..a0bb3cd262 100644 --- a/stdlib/src/collections/deque.mojo +++ b/stdlib/src/collections/deque.mojo @@ -139,17 +139,15 @@ struct Deque[ElementType: CollectionElement]( Args: values: The values to populate the deque with. """ - self = Self(variadic_list=values^) + self = Self(elements=values^) - fn __init__( - mut self, *, owned variadic_list: VariadicListMem[ElementType, _] - ): + fn __init__(mut self, *, owned elements: VariadicListMem[ElementType, _]): """Constructs a deque from the given values. Args: - variadic_list: The values to populate the deque with. + elements: The values to populate the deque with. """ - args_length = len(variadic_list) + args_length = len(elements) if args_length < self.default_capacity: capacity = self.default_capacity @@ -159,12 +157,14 @@ struct Deque[ElementType: CollectionElement]( self = Self(capacity=capacity) for i in range(args_length): - src = UnsafePointer.address_of(variadic_list[i]) + src = UnsafePointer.address_of(elements[i]) dst = self._data + i src.move_pointee_into(dst) - # Mark the elements as unowned to avoid del'ing uninitialized objects. - variadic_list._is_owned = False + # Do not destroy the elements when their backing storage goes away. + __mlir_op.`lit.ownership.mark_destroyed`( + __get_mvalue_as_litref(elements) + ) self._tail = args_length diff --git a/stdlib/src/collections/inline_array.mojo b/stdlib/src/collections/inline_array.mojo index 93064e0220..6901ed1327 100644 --- a/stdlib/src/collections/inline_array.mojo +++ b/stdlib/src/collections/inline_array.mojo @@ -194,8 +194,10 @@ struct InlineArray[ var eltptr = UnsafePointer.address_of(self.unsafe_get(i)) UnsafePointer.address_of(storage[i]).move_pointee_into(eltptr) - # Mark the elements as already destroyed. - storage._is_owned = False + # Do not destroy the elements when their backing storage goes away. + __mlir_op.`lit.ownership.mark_destroyed`( + __get_mvalue_as_litref(storage) + ) fn __init__(out self, *, other: Self): """Explicitly copy the provided value. diff --git a/stdlib/src/collections/list.mojo b/stdlib/src/collections/list.mojo index d4791dd79e..033ceeb464 100644 --- a/stdlib/src/collections/list.mojo +++ b/stdlib/src/collections/list.mojo @@ -144,26 +144,28 @@ struct List[T: CollectionElement, hint_trivial_type: Bool = False]( Args: values: The values to populate the list with. """ - self = Self(variadic_list=values^) + self = Self(elements=values^) - fn __init__(out self, *, owned variadic_list: VariadicListMem[T, _]): + fn __init__(out self, *, owned elements: VariadicListMem[T, _]): """Constructs a list from the given values. Args: - variadic_list: The values to populate the list with. + elements: The values to populate the list with. """ - var length = len(variadic_list) + var length = len(elements) self = Self(capacity=length) for i in range(length): - var src = UnsafePointer.address_of(variadic_list[i]) + var src = UnsafePointer.address_of(elements[i]) var dest = self.data + i src.move_pointee_into(dest) - # Mark the elements as unowned to avoid del'ing uninitialized objects. - variadic_list._is_owned = False + # Do not destroy the elements when their backing storage goes away. + __mlir_op.`lit.ownership.mark_destroyed`( + __get_mvalue_as_litref(elements) + ) self.size = length From c49ccbd6698d857de2618ccd006a8473ac73909e Mon Sep 17 00:00:00 2001 From: Joe Loser Date: Wed, 4 Dec 2024 16:14:26 -0700 Subject: [PATCH 032/509] [stdlib] Add tests for `StaticTuple.setitem` Move the existing `getitem` tests from `test_tuple.mojo` and start a separate test file for `StaticTuple`. Add tests for `setitem` as we are can use it to figure out why we do the copying in `setitem` and `getitem` before the gep. MODULAR_ORIG_COMMIT_REV_ID: c0ab1928aa8da0045a96f27cbe808d287f02c2a7 --- stdlib/test/utils/test_static_tuple.mojo | 52 ++++++++++++++++++++++++ stdlib/test/utils/test_tuple.mojo | 18 -------- 2 files changed, 52 insertions(+), 18 deletions(-) create mode 100644 stdlib/test/utils/test_static_tuple.mojo diff --git a/stdlib/test/utils/test_static_tuple.mojo b/stdlib/test/utils/test_static_tuple.mojo new file mode 100644 index 0000000000..67f3fbc0e8 --- /dev/null +++ b/stdlib/test/utils/test_static_tuple.mojo @@ -0,0 +1,52 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2024, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # +# RUN: %mojo %s + +from testing import assert_equal +from utils import StaticTuple + + +def test_getitem(): + # Should be constructible from a single element + # as well as a variadic list of elements. + var tup1 = StaticTuple[Int, 1](1) + assert_equal(tup1[0], 1) + + var tup2 = StaticTuple[Int, 2](1, 1) + assert_equal(tup2[0], 1) + assert_equal(tup2[1], 1) + + var tup3 = StaticTuple[Int, 3](1, 2, 3) + assert_equal(tup3[0], 1) + assert_equal(tup3[1], 2) + assert_equal(tup3[2], 3) + + assert_equal(tup1[Int(0)], 1) + + +def test_setitem(): + var t = StaticTuple[Int, 3](1, 2, 3) + + t[0] = 100 + assert_equal(t[0], 100) + + t[1] = 200 + assert_equal(t[1], 200) + + t[2] = 300 + assert_equal(t[2], 300) + + +def main(): + test_getitem() + test_setitem() diff --git a/stdlib/test/utils/test_tuple.mojo b/stdlib/test/utils/test_tuple.mojo index f6ccb2ce3a..0748552be0 100644 --- a/stdlib/test/utils/test_tuple.mojo +++ b/stdlib/test/utils/test_tuple.mojo @@ -19,23 +19,6 @@ from testing import assert_equal, assert_false, assert_true from utils import IndexList, StaticTuple -def test_static_tuple(): - var tup1 = StaticTuple[Int, 1](1) - assert_equal(tup1[0], 1) - - var tup2 = StaticTuple[Int, 2](1, 1) - assert_equal(tup2[0], 1) - assert_equal(tup2[1], 1) - - var tup3 = StaticTuple[Int, 3](1, 2, 3) - assert_equal(tup3[0], 1) - assert_equal(tup3[1], 2) - assert_equal(tup3[2], 3) - - assert_equal(tup3[0], 1) - assert_equal(tup3[Int(0)], 1) - - def test_static_int_tuple(): assert_equal(str(IndexList[1](1)), "(1,)") @@ -72,6 +55,5 @@ def test_tuple_literal(): def main(): - test_static_tuple() test_static_int_tuple() test_tuple_literal() From aeb7a1fe7231461551739f65a7596a847e3c347b Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Wed, 4 Dec 2024 17:48:23 -0800 Subject: [PATCH 033/509] [mojo-lang] Fix a bad error message. This fixes https://github.com/modularml/mojo/issues/3829 MODULAR_ORIG_COMMIT_REV_ID: ce65257270bfe6443b2f91dae96590fe4a1c2528 --- docs/changelog.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/docs/changelog.md b/docs/changelog.md index 177c2bbd9f..e781cf6279 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -620,6 +620,9 @@ what we publish. - [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 + - The VS Code extension now auto-updates its private copy of the MAX SDK. - The variadic initializer for `SIMD` now works in parameter expressions. From 8942c27059d659c26c6f46ec1523cd6778007143 Mon Sep 17 00:00:00 2001 From: abdul dakkak Date: Wed, 4 Dec 2024 20:16:52 -0800 Subject: [PATCH 034/509] [******][GPU] Extend the time operations to be GPU generic MODULAR_ORIG_COMMIT_REV_ID: 9acc0eef450d97eccca0550b5f6f1eabda7e0023 --- stdlib/src/time/time.mojo | 33 +++++++++++++-------------------- 1 file changed, 13 insertions(+), 20 deletions(-) diff --git a/stdlib/src/time/time.mojo b/stdlib/src/time/time.mojo index 853c6d2d56..936ca89459 100644 --- a/stdlib/src/time/time.mojo +++ b/stdlib/src/time/time.mojo @@ -126,6 +126,13 @@ fn _gettime_as_nsec_unix(clockid: Int) -> Int: ) +@always_inline +fn _gpu_clock() -> Int: + """Returns a 64-bit unsigned cycle counter.""" + alias asm = "llvm.nvvm.read.ptx.sreg.clock64" if is_nvidia_gpu() else "llvm.amdgcn.s.memtime" + return int(llvm_intrinsic[asm, Int64]()) + + @always_inline fn _realtime_nanoseconds() -> Int: """Returns the current realtime time in nanoseconds""" @@ -137,7 +144,9 @@ fn _monotonic_nanoseconds() -> Int: """Returns the current monotonic time in nanoseconds""" @parameter - if os_is_windows(): + if is_gpu(): + return _gpu_clock() + elif os_is_windows(): var ft = _FILETIME() external_call["GetSystemTimePreciseAsFileTime", NoneType]( Pointer.address_of(ft) @@ -151,7 +160,6 @@ fn _monotonic_nanoseconds() -> Int: @always_inline fn _monotonic_raw_nanoseconds() -> Int: """Returns the current monotonic time in nanoseconds""" - return _gettime_as_nsec_unix(_CLOCK_MONOTONIC_RAW) @@ -204,14 +212,6 @@ fn perf_counter_ns() -> Int: Returns: The current time in ns. """ - - @parameter - if is_nvidia_gpu(): - return int( - inlined_assembly[ - "mov.u64 $0, %globaltimer;", UInt64, constraints="=l" - ]() - ) return _monotonic_nanoseconds() @@ -349,17 +349,10 @@ fn sleep(sec: Float64): """ @parameter - if is_nvidia_gpu(): - var nsec = sec * 1.0e9 - llvm_intrinsic["llvm.nvvm.nanosleep", NoneType]( - nsec.cast[DType.int32]() - ) - return - elif is_amd_gpu(): + if is_gpu(): var nsec = sec * 1.0e9 - llvm_intrinsic["llvm.amdgcn.s.sleep", NoneType]( - nsec.cast[DType.int32]() - ) + alias intrinsic = "llvm.nvvm.nanosleep" if is_nvidia_gpu() else "llvm.amdgcn.s.sleep" + llvm_intrinsic[intrinsic, NoneType](nsec.cast[DType.int32]()) return alias NANOSECONDS_IN_SECOND = 1_000_000_000 From b0094d3d9dfc6e38154393862098c22a0c1dec89 Mon Sep 17 00:00:00 2001 From: Lukas Hermann <1734032+lsh@users.noreply.github.com> Date: Wed, 4 Dec 2024 23:45:56 -0500 Subject: [PATCH 035/509] [stdlib] Move `strip`,`lstrip`,`rstrip` onto StringSlice (#52118) MODULAR_ORIG_COMMIT_REV_ID: 72291fc94933188ec12d2dae10c011023b026a75 --- docs/changelog.md | 2 + stdlib/benchmarks/hashlib/bench_hash.mojo | 2 +- stdlib/src/collections/string.mojo | 48 ++------ stdlib/src/os/path/path.mojo | 16 ++- stdlib/src/utils/string_slice.mojo | 136 +++++++++++++++++++--- stdlib/test/hashlib/test_ahash.mojo | 2 +- stdlib/test/utils/test_string_slice.mojo | 99 ++++++++++++++++ 7 files changed, 243 insertions(+), 62 deletions(-) diff --git a/docs/changelog.md b/docs/changelog.md index e781cf6279..788d1e9c95 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -296,6 +296,8 @@ what we publish. 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`. + ### 🦋 Changed - The `inout` and `borrowed` argument conventions have been renamed to the `mut` diff --git a/stdlib/benchmarks/hashlib/bench_hash.mojo b/stdlib/benchmarks/hashlib/bench_hash.mojo index 291701710d..6d2ba54044 100644 --- a/stdlib/benchmarks/hashlib/bench_hash.mojo +++ b/stdlib/benchmarks/hashlib/bench_hash.mojo @@ -586,7 +586,7 @@ fn gen_word_pairs[words: String = words_en]() -> List[String]: try: var list = words.split(",") for w in list: - var w1 = w[].strip() + var w1 = str(w[].strip()) for w in list: var w2 = w[].strip() result.append(w1 + " " + w2) diff --git a/stdlib/src/collections/string.mojo b/stdlib/src/collections/string.mojo index a6051bbb81..47f06707c2 100644 --- a/stdlib/src/collections/string.mojo +++ b/stdlib/src/collections/string.mojo @@ -1916,7 +1916,7 @@ struct String( res.append(0) return String(res^) - fn strip(self, chars: String) -> String: + fn strip(self, chars: StringSlice) -> StringSlice[__origin_of(self)]: """Return a copy of the string with leading and trailing characters removed. @@ -1929,7 +1929,7 @@ struct String( return self.lstrip(chars).rstrip(chars) - fn strip(self) -> String: + fn strip(self) -> StringSlice[__origin_of(self)]: """Return a copy of the string with leading and trailing whitespaces removed. @@ -1938,7 +1938,7 @@ struct String( """ return self.lstrip().rstrip() - fn rstrip(self, chars: String) -> String: + fn rstrip(self, chars: StringSlice) -> StringSlice[__origin_of(self)]: """Return a copy of the string with trailing characters removed. Args: @@ -1948,29 +1948,17 @@ struct String( A copy of the string with no trailing characters. """ - var r_idx = self.byte_length() - while r_idx > 0 and self[r_idx - 1] in chars: - r_idx -= 1 + return self.as_string_slice().rstrip(chars) - return self[:r_idx] - - fn rstrip(self) -> String: + fn rstrip(self) -> StringSlice[__origin_of(self)]: """Return a copy of the string with trailing whitespaces removed. Returns: A copy of the string with no trailing whitespaces. """ - var r_idx = self.byte_length() - # TODO (#933): should use this once llvm intrinsics can be used at comp time - # for s in self.__reversed__(): - # if not s.isspace(): - # break - # r_idx -= 1 - while r_idx > 0 and _isspace(self._buffer.unsafe_get(r_idx - 1)): - r_idx -= 1 - return self[:r_idx] - - fn lstrip(self, chars: String) -> String: + return self.as_string_slice().rstrip() + + fn lstrip(self, chars: StringSlice) -> StringSlice[__origin_of(self)]: """Return a copy of the string with leading characters removed. Args: @@ -1980,29 +1968,15 @@ struct String( A copy of the string with no leading characters. """ - var l_idx = 0 - while l_idx < self.byte_length() and self[l_idx] in chars: - l_idx += 1 + return self.as_string_slice().lstrip(chars) - return self[l_idx:] - - fn lstrip(self) -> String: + fn lstrip(self) -> StringSlice[__origin_of(self)]: """Return a copy of the string with leading whitespaces removed. Returns: A copy of the string with no leading whitespaces. """ - var l_idx = 0 - # TODO (#933): should use this once llvm intrinsics can be used at comp time - # for s in self: - # if not s.isspace(): - # break - # l_idx += 1 - while l_idx < self.byte_length() and _isspace( - self._buffer.unsafe_get(l_idx) - ): - l_idx += 1 - return self[l_idx:] + return self.as_string_slice().lstrip() fn __hash__(self) -> UInt: """Hash the underlying buffer using builtin hash. diff --git a/stdlib/src/os/path/path.mojo b/stdlib/src/os/path/path.mojo index 3840a97fac..64edffce5e 100644 --- a/stdlib/src/os/path/path.mojo +++ b/stdlib/src/os/path/path.mojo @@ -229,11 +229,10 @@ fn dirname[PathLike: os.PathLike, //](path: PathLike) -> String: The directory component of a pathname. """ var fspath = path.__fspath__() - alias sep = str(os.sep) - var i = fspath.rfind(sep) + 1 + var i = fspath.rfind(os.sep) + 1 var head = fspath[:i] - if head and head != sep * len(head): - return head.rstrip(sep) + if head and head != os.sep * len(head): + return head.rstrip(os.sep) return head @@ -365,7 +364,7 @@ def split[PathLike: os.PathLike, //](path: PathLike) -> (String, String): i = fspath.rfind(os.sep) + 1 head, tail = fspath[:i], fspath[i:] if head and head != str(os.sep) * len(head): - head = head.rstrip(sep) + head = str(head.rstrip(sep)) return head, tail @@ -386,11 +385,10 @@ fn basename[PathLike: os.PathLike, //](path: PathLike) -> String: The basename from the path. """ var fspath = path.__fspath__() - alias sep = str(os.sep) - var i = fspath.rfind(sep) + 1 + var i = fspath.rfind(os.sep) + 1 var head = fspath[i:] - if head and head != sep * len(head): - return head.rstrip(sep) + if head and head != os.sep * len(head): + return head.rstrip(os.sep) return head diff --git a/stdlib/src/utils/string_slice.mojo b/stdlib/src/utils/string_slice.mojo index 394dccf89c..b6f9daa45a 100644 --- a/stdlib/src/utils/string_slice.mojo +++ b/stdlib/src/utils/string_slice.mojo @@ -616,13 +616,33 @@ struct StringSlice[is_mutable: Bool, //, origin: Origin[is_mutable]]( # ===------------------------------------------------------------------===# @always_inline - fn strip(self) -> StringSlice[origin]: - """Gets a StringRef with leading and trailing whitespaces removed. - This only takes ASCII whitespace into account: - `" \\t\\n\\v\\f\\r\\x1c\\x1d\\x1e"`. + fn strip(self, chars: StringSlice) -> Self: + """Return a copy of the string with leading and trailing characters + removed. + + Args: + chars: A set of characters to be removed. Defaults to whitespace. Returns: - A StringRef with leading and trailing whitespaces removed. + A copy of the string with no leading or trailing characters. + + Examples: + + ```mojo + print("himojohi".strip("hi")) # "mojo" + ``` + . + """ + + return self.lstrip(chars).rstrip(chars) + + @always_inline + fn strip(self) -> Self: + """Return a copy of the string with leading and trailing whitespaces + removed. + + Returns: + A copy of the string with no leading or trailing whitespaces. Examples: @@ -631,15 +651,103 @@ struct StringSlice[is_mutable: Bool, //, origin: Origin[is_mutable]]( ``` . """ - # FIXME: this can already do full isspace support with iterator - var start: Int = 0 - var end: Int = len(self) - var ptr = self.unsafe_ptr() - while start < end and _isspace(ptr[start]): - start += 1 - while end > start and _isspace(ptr[end - 1]): - end -= 1 - return StringSlice[origin](ptr=ptr + start, length=end - start) + return self.lstrip().rstrip() + + @always_inline + fn rstrip(self, chars: StringSlice) -> Self: + """Return a copy of the string with trailing characters removed. + + Args: + chars: A set of characters to be removed. Defaults to whitespace. + + Returns: + A copy of the string with no trailing characters. + + Examples: + + ```mojo + print("mojohi".strip("hi")) # "mojo" + ``` + . + """ + + var r_idx = self.byte_length() + while r_idx > 0 and self[r_idx - 1] in chars: + r_idx -= 1 + + return Self(unsafe_from_utf8=self.as_bytes()[:r_idx]) + + @always_inline + fn rstrip(self) -> Self: + """Return a copy of the string with trailing whitespaces removed. + + Returns: + A copy of the string with no trailing whitespaces. + + Examples: + + ```mojo + print("mojo ".strip()) # "mojo" + ``` + . + """ + var r_idx = self.byte_length() + # TODO (#933): should use this once llvm intrinsics can be used at comp time + # for s in self.__reversed__(): + # if not s.isspace(): + # break + # r_idx -= 1 + while r_idx > 0 and _isspace(self.as_bytes()[r_idx - 1]): + r_idx -= 1 + return Self(unsafe_from_utf8=self.as_bytes()[:r_idx]) + + @always_inline + fn lstrip(self, chars: StringSlice) -> Self: + """Return a copy of the string with leading characters removed. + + Args: + chars: A set of characters to be removed. Defaults to whitespace. + + Returns: + A copy of the string with no leading characters. + + Examples: + + ```mojo + print("himojo".strip("hi")) # "mojo" + ``` + . + """ + + var l_idx = 0 + while l_idx < self.byte_length() and self[l_idx] in chars: + l_idx += 1 + + return Self(unsafe_from_utf8=self.as_bytes()[l_idx:]) + + @always_inline + fn lstrip(self) -> Self: + """Return a copy of the string with leading whitespaces removed. + + Returns: + A copy of the string with no leading whitespaces. + + Examples: + + ```mojo + print(" mojo".strip()) # "mojo" + ``` + . + """ + var l_idx = 0 + # TODO (#933): should use this once llvm intrinsics can be used at comp time + # for s in self: + # if not s.isspace(): + # break + # l_idx += 1 + while l_idx < self.byte_length() and _isspace(self.as_bytes()[l_idx]): + l_idx += 1 + return Self(unsafe_from_utf8=self.as_bytes()[l_idx:]) @always_inline fn as_bytes(self) -> Span[Byte, origin]: diff --git a/stdlib/test/hashlib/test_ahash.mojo b/stdlib/test/hashlib/test_ahash.mojo index f1fdc69a62..e696b32c76 100644 --- a/stdlib/test/hashlib/test_ahash.mojo +++ b/stdlib/test/hashlib/test_ahash.mojo @@ -580,7 +580,7 @@ fn gen_word_pairs[words: String = words_en]() -> List[String]: try: var list = words.split(", ") for w in list: - var w1 = w[].strip() + var w1 = str(w[].strip()) for w in list: var w2 = w[].strip() result.append(w1 + " " + w2) diff --git a/stdlib/test/utils/test_string_slice.mojo b/stdlib/test/utils/test_string_slice.mojo index 057601c270..7ef357692b 100644 --- a/stdlib/test/utils/test_string_slice.mojo +++ b/stdlib/test/utils/test_string_slice.mojo @@ -487,6 +487,102 @@ def test_splitlines(): _assert_equal(s.splitlines(keepends=True), items) +def test_rstrip(): + # with default rstrip chars + var empty_string = "".as_string_slice() + assert_true(empty_string.rstrip() == "") + + var space_string = " \t\n\r\v\f ".as_string_slice() + assert_true(space_string.rstrip() == "") + + var str0 = " n ".as_string_slice() + assert_true(str0.rstrip() == " n") + + var str1 = "string".as_string_slice() + assert_true(str1.rstrip() == "string") + + var str2 = "something \t\n\t\v\f".as_string_slice() + assert_true(str2.rstrip() == "something") + + # with custom chars for rstrip + var str3 = "mississippi".as_string_slice() + assert_true(str3.rstrip("sip") == "m") + + var str4 = "mississippimississippi \n ".as_string_slice() + assert_true(str4.rstrip("sip ") == "mississippimississippi \n") + assert_true(str4.rstrip("sip \n") == "mississippim") + + +def test_lstrip(): + # with default lstrip chars + var empty_string = "".as_string_slice() + assert_true(empty_string.lstrip() == "") + + var space_string = " \t\n\r\v\f ".as_string_slice() + assert_true(space_string.lstrip() == "") + + var str0 = " n ".as_string_slice() + assert_true(str0.lstrip() == "n ") + + var str1 = "string".as_string_slice() + assert_true(str1.lstrip() == "string") + + var str2 = " \t\n\t\v\fsomething".as_string_slice() + assert_true(str2.lstrip() == "something") + + # with custom chars for lstrip + var str3 = "mississippi".as_string_slice() + assert_true(str3.lstrip("mis") == "ppi") + + var str4 = " \n mississippimississippi".as_string_slice() + assert_true(str4.lstrip("mis ") == "\n mississippimississippi") + assert_true(str4.lstrip("mis \n") == "ppimississippi") + + +def test_strip(): + # with default strip chars + var empty_string = "".as_string_slice() + assert_true(empty_string.strip() == "") + alias comp_empty_string_stripped = "".as_string_slice().strip() + assert_true(comp_empty_string_stripped == "") + + var space_string = " \t\n\r\v\f ".as_string_slice() + assert_true(space_string.strip() == "") + alias comp_space_string_stripped = " \t\n\r\v\f ".as_string_slice().strip() + assert_true(comp_space_string_stripped == "") + + var str0 = " n ".as_string_slice() + assert_true(str0.strip() == "n") + alias comp_str0_stripped = " n ".as_string_slice().strip() + assert_true(comp_str0_stripped == "n") + + var str1 = "string".as_string_slice() + assert_true(str1.strip() == "string") + alias comp_str1_stripped = ("string").strip() + assert_true(comp_str1_stripped == "string") + + var str2 = " \t\n\t\v\fsomething \t\n\t\v\f".as_string_slice() + alias comp_str2_stripped = (" \t\n\t\v\fsomething \t\n\t\v\f").strip() + assert_true(str2.strip() == "something") + assert_true(comp_str2_stripped == "something") + + # with custom strip chars + var str3 = "mississippi".as_string_slice() + assert_true(str3.strip("mips") == "") + assert_true(str3.strip("mip") == "ssiss") + alias comp_str3_stripped = "mississippi".as_string_slice().strip("mips") + assert_true(comp_str3_stripped == "") + + var str4 = " \n mississippimississippi \n ".as_string_slice() + assert_true(str4.strip(" ") == "\n mississippimississippi \n") + assert_true(str4.strip("\nmip ") == "ssissippimississ") + + alias comp_str4_stripped = ( + " \n mississippimississippi \n ".as_string_slice().strip(" ") + ) + assert_true(comp_str4_stripped == "\n mississippimississippi \n") + + def main(): test_string_literal_byte_span() test_string_byte_span() @@ -505,3 +601,6 @@ def main(): test_combination_10_good_10_bad_utf8_sequences() test_count_utf8_continuation_bytes() test_splitlines() + test_rstrip() + test_lstrip() + test_strip() From 4598da1d9f8d6bcb1c5753be181f88f3addf773f Mon Sep 17 00:00:00 2001 From: abdul dakkak Date: Wed, 4 Dec 2024 20:52:56 -0800 Subject: [PATCH 036/509] [Stdlib] Make time functions return the value as UInt MODULAR_ORIG_COMMIT_REV_ID: 55cac07ab34491dca8faf99109c5acaa8e8fbef5 --- stdlib/src/time/time.mojo | 36 ++++++++++++++++----------------- stdlib/test/time/test_time.mojo | 4 ++-- 2 files changed, 20 insertions(+), 20 deletions(-) diff --git a/stdlib/src/time/time.mojo b/stdlib/src/time/time.mojo index 936ca89459..7364d85324 100644 --- a/stdlib/src/time/time.mojo +++ b/stdlib/src/time/time.mojo @@ -47,7 +47,7 @@ alias _CLOCK_MONOTONIC_RAW = 4 # Constants alias _NSEC_PER_USEC = 1000 -alias _NSEC_PER_MSEC = 1000000 +alias _NSEC_PER_MSEC = 1_000_000 alias _USEC_PER_MSEC = 1000 alias _MSEC_PER_SEC = 1000 alias _NSEC_PER_SEC = _NSEC_PER_USEC * _USEC_PER_MSEC * _MSEC_PER_SEC @@ -69,7 +69,7 @@ struct _CTimeSpec(Stringable): self.tv_sec = 0 self.tv_subsec = 0 - fn as_nanoseconds(self) -> Int: + fn as_nanoseconds(self) -> UInt: @parameter if os_is_linux(): return self.tv_sec * _NSEC_PER_SEC + self.tv_subsec @@ -91,7 +91,7 @@ struct _FILETIME: self.dwLowDateTime = 0 self.dwHighDateTime = 0 - fn as_nanoseconds(self) -> Int: + fn as_nanoseconds(self) -> UInt: # AFTER subtracting windows offset the return value fits in a signed int64 # BEFORE subtracting windows offset the return value does not fit in a signed int64 # Taken from https://github.com/microsoft/STL/blob/c8d1efb6d504f6392acf8f6d01fd703f7c8826c0/stl/src/xtime.cpp#L50 @@ -116,7 +116,7 @@ fn _clock_gettime(clockid: Int) -> _CTimeSpec: @always_inline -fn _gettime_as_nsec_unix(clockid: Int) -> Int: +fn _gettime_as_nsec_unix(clockid: Int) -> UInt: if os_is_linux(): var ts = _clock_gettime(clockid) return ts.as_nanoseconds() @@ -127,20 +127,20 @@ fn _gettime_as_nsec_unix(clockid: Int) -> Int: @always_inline -fn _gpu_clock() -> Int: +fn _gpu_clock() -> UInt: """Returns a 64-bit unsigned cycle counter.""" alias asm = "llvm.nvvm.read.ptx.sreg.clock64" if is_nvidia_gpu() else "llvm.amdgcn.s.memtime" return int(llvm_intrinsic[asm, Int64]()) @always_inline -fn _realtime_nanoseconds() -> Int: +fn _realtime_nanoseconds() -> UInt: """Returns the current realtime time in nanoseconds""" return _gettime_as_nsec_unix(_CLOCK_REALTIME) @always_inline -fn _monotonic_nanoseconds() -> Int: +fn _monotonic_nanoseconds() -> UInt: """Returns the current monotonic time in nanoseconds""" @parameter @@ -158,20 +158,20 @@ fn _monotonic_nanoseconds() -> Int: @always_inline -fn _monotonic_raw_nanoseconds() -> Int: +fn _monotonic_raw_nanoseconds() -> UInt: """Returns the current monotonic time in nanoseconds""" return _gettime_as_nsec_unix(_CLOCK_MONOTONIC_RAW) @always_inline -fn _process_cputime_nanoseconds() -> Int: +fn _process_cputime_nanoseconds() -> UInt: """Returns the high-resolution per-process timer from the CPU""" return _gettime_as_nsec_unix(_CLOCK_PROCESS_CPUTIME_ID) @always_inline -fn _thread_cputime_nanoseconds() -> Int: +fn _thread_cputime_nanoseconds() -> UInt: """Returns the thread-specific CPU-time clock""" return _gettime_as_nsec_unix(_CLOCK_THREAD_CPUTIME_ID) @@ -202,7 +202,7 @@ fn perf_counter() -> Float64: @always_inline -fn perf_counter_ns() -> Int: +fn perf_counter_ns() -> UInt: """Return the value (in nanoseconds) of a performance counter, i.e. a clock with the highest available resolution to measure a short duration. It does include time elapsed during sleep and is system-wide. The reference @@ -221,7 +221,7 @@ fn perf_counter_ns() -> Int: @always_inline -fn now() -> Int: +fn now() -> UInt: """Deprecated: Please use time.perf_counter_ns instead. Returns the current monotonic time time in nanoseconds. This function @@ -241,7 +241,7 @@ fn now() -> Int: @always_inline -fn monotonic() -> Int: +fn monotonic() -> UInt: """ Returns the current monotonic time time in nanoseconds. This function queries the current platform's monotonic clock, making it useful for @@ -263,7 +263,7 @@ fn monotonic() -> Int: @parameter fn _time_function_windows[ func: fn () raises capturing [_] -> None -]() raises -> Int: +]() raises -> UInt: """Calculates elapsed time in Windows""" var ticks_per_sec: _WINDOWS_LARGE_INTEGER = 0 @@ -294,7 +294,7 @@ fn _time_function_windows[ @always_inline @parameter -fn time_function[func: fn () raises capturing [_] -> None]() raises -> Int: +fn time_function[func: fn () raises capturing [_] -> None]() raises -> UInt: """Measures the time spent in the function. Parameters: @@ -316,7 +316,7 @@ fn time_function[func: fn () raises capturing [_] -> None]() raises -> Int: @always_inline @parameter -fn time_function[func: fn () capturing [_] -> None]() -> Int: +fn time_function[func: fn () capturing [_] -> None]() -> UInt: """Measures the time spent in the function. Parameters: @@ -333,7 +333,7 @@ fn time_function[func: fn () capturing [_] -> None]() -> Int: try: return time_function[raising_func]() except err: - return abort[Int](err) + return abort[UInt](err) # ===-----------------------------------------------------------------------===# @@ -369,7 +369,7 @@ fn sleep(sec: Float64): _ = rem -fn sleep(sec: Int): +fn sleep(sec: UInt): """Suspends the current thread for the seconds specified. Args: diff --git a/stdlib/test/time/test_time.mojo b/stdlib/test/time/test_time.mojo index 985a0ec9f6..342e453774 100644 --- a/stdlib/test/time/test_time.mojo +++ b/stdlib/test/time/test_time.mojo @@ -28,7 +28,7 @@ from testing import assert_true @always_inline @parameter fn time_me(): - sleep(1) + sleep(1.0) @always_inline @@ -50,7 +50,7 @@ fn time_templated_function[ fn time_capturing_function(iters: Int) -> Int: @parameter fn time_fn(): - sleep(1) + sleep(1.0) return time_function[time_fn]() From 1f1151c33b47d5565f52e635563d78d8c451c558 Mon Sep 17 00:00:00 2001 From: abdul dakkak Date: Wed, 4 Dec 2024 23:43:34 -0800 Subject: [PATCH 037/509] [Stdlib] Add string overload for StringLiteral.get, NFC MODULAR_ORIG_COMMIT_REV_ID: 2aa197a5b091954efe63da52515e1aade752ed2a --- stdlib/src/builtin/string_literal.mojo | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/stdlib/src/builtin/string_literal.mojo b/stdlib/src/builtin/string_literal.mojo index dc7d05d49a..7b1598b481 100644 --- a/stdlib/src/builtin/string_literal.mojo +++ b/stdlib/src/builtin/string_literal.mojo @@ -106,6 +106,19 @@ struct StringLiteral( `> : !kgen.string`, ] + @always_inline("nodebug") + @staticmethod + fn get[value: String]() -> StringLiteral: + """Form a string literal from an arbitrary compile-time String value. + + Parameters: + value: The value to convert to StringLiteral. + + Returns: + The string value as a StringLiteral. + """ + return Self._from_string[value]() + @always_inline("nodebug") @staticmethod fn get[type: Stringable, //, value: type]() -> StringLiteral: From b0458f998d70ead300c055aa56515df917bd0fc9 Mon Sep 17 00:00:00 2001 From: Austin Doolittle Date: Thu, 5 Dec 2024 08:22:01 -0800 Subject: [PATCH 038/509] [******] Extend math.min to support boolean Extends our min function to support boolean values MODULAR_ORIG_COMMIT_REV_ID: 141e7e80532f1ad91a113d001ee2a185855de2b1 --- stdlib/src/builtin/math.mojo | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/stdlib/src/builtin/math.mojo b/stdlib/src/builtin/math.mojo index eb1b088242..7293e16db2 100644 --- a/stdlib/src/builtin/math.mojo +++ b/stdlib/src/builtin/math.mojo @@ -236,7 +236,7 @@ fn min(x: SIMD, y: __type_of(x), /) -> __type_of(x): corresponding elements in x and y. Constraints: - The type of the inputs must be numeric. + The type of the inputs must be numeric or boolean. Args: x: First SIMD vector. @@ -245,8 +245,16 @@ fn min(x: SIMD, y: __type_of(x), /) -> __type_of(x): Returns: A SIMD vector containing the elementwise minimum of x and y. """ - constrained[x.type.is_numeric(), "the SIMD type must be numeric"]() - return __mlir_op.`pop.min`(x.value, y.value) + + @parameter + if x.type is DType.bool: + return min(x.cast[DType.uint8](), y.cast[DType.uint8]()).cast[x.type]() + else: + constrained[ + x.type.is_numeric(), "the SIMD type must be numeric or boolean" + ]() + + return __mlir_op.`pop.min`(x.value, y.value) # ===----------------------------------------------------------------------=== # From d3fb32dc0c3836ddd7c74a10eb7a23eae7ac488a Mon Sep 17 00:00:00 2001 From: Joe Loser Date: Thu, 5 Dec 2024 09:46:11 -0700 Subject: [PATCH 039/509] [stdlib] Move `Span` from `utils` to `memory` `Span` is no longer a util, but is a common vocabulary type used throughout stdlib APIs. As such, promote it to `memory` module. MODULAR_ORIG_COMMIT_REV_ID: 33bae4c7dcc8191118d669985405f31599de386c --- docs/changelog.md | 4 +++- stdlib/src/builtin/_format_float.mojo | 4 ++-- stdlib/src/builtin/debug_assert.mojo | 3 +-- stdlib/src/builtin/file.mojo | 4 ++-- stdlib/src/builtin/file_descriptor.mojo | 4 +--- stdlib/src/builtin/io.mojo | 1 - stdlib/src/builtin/reversed.mojo | 2 +- stdlib/src/builtin/simd.mojo | 4 ++-- stdlib/src/builtin/sort.mojo | 4 +--- stdlib/src/builtin/string_literal.mojo | 4 ++-- stdlib/src/collections/list.mojo | 4 +--- stdlib/src/collections/string.mojo | 3 +-- stdlib/src/math/math.mojo | 3 +-- stdlib/src/memory/__init__.mojo | 1 + stdlib/src/{utils => memory}/span.mojo | 4 ++-- stdlib/src/os/path/path.mojo | 3 ++- stdlib/src/prelude/__init__.mojo | 3 ++- stdlib/src/tempfile/tempfile.mojo | 3 ++- stdlib/src/utils/__init__.mojo | 1 - stdlib/src/utils/_utf8_validation.mojo | 2 +- stdlib/src/utils/inline_string.mojo | 2 +- stdlib/src/utils/string_slice.mojo | 3 +-- stdlib/src/utils/stringref.mojo | 2 +- stdlib/src/utils/write.mojo | 7 +++---- stdlib/test/builtin/test_sort_issue_1018.mojo | 4 +--- stdlib/test/collections/test_list.mojo | 4 +--- stdlib/test/hashlib/test_ahash.mojo | 4 +--- stdlib/test/{utils => memory}/test_span.mojo | 4 +--- stdlib/test/utils/test_string_slice.mojo | 3 ++- 29 files changed, 40 insertions(+), 54 deletions(-) rename stdlib/src/{utils => memory}/span.mojo (99%) rename stdlib/test/{utils => memory}/test_span.mojo (98%) diff --git a/docs/changelog.md b/docs/changelog.md index 788d1e9c95..d5ab2b45a1 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -363,7 +363,7 @@ what we publish. `String.write`. Here's an example of using all the changes: ```mojo - from utils import Span + from memory import Span @value struct NewString(Writer, Writable): @@ -582,6 +582,8 @@ what we publish. if 1 in x: print("1 in x") +- `Span` has moved from the `utils` module to the `memory` module. + ### ❌ Removed - The `UnsafePointer.bitcast` overload for `DType` has been removed. Wrap your diff --git a/stdlib/src/builtin/_format_float.mojo b/stdlib/src/builtin/_format_float.mojo index 4c5fc6797e..95d7e8a30e 100644 --- a/stdlib/src/builtin/_format_float.mojo +++ b/stdlib/src/builtin/_format_float.mojo @@ -28,9 +28,9 @@ from math import log2 from sys.info import sizeof from builtin.io import _printf -from memory import bitcast +from memory import bitcast, Span -from utils import Span, StaticTuple +from utils import StaticTuple from utils.numerics import FPUtils, isinf, isnan diff --git a/stdlib/src/builtin/debug_assert.mojo b/stdlib/src/builtin/debug_assert.mojo index 4d0f1bb23a..e66c968189 100644 --- a/stdlib/src/builtin/debug_assert.mojo +++ b/stdlib/src/builtin/debug_assert.mojo @@ -23,9 +23,8 @@ from sys.ffi import c_char, c_size_t, c_uint, external_call from sys.param_env import env_get_string from builtin._location import __call_location, _SourceLocation -from memory import UnsafePointer +from memory import UnsafePointer, Span -from utils import Span from utils.write import ( _ArgBytes, _WriteBufferHeap, diff --git a/stdlib/src/builtin/file.mojo b/stdlib/src/builtin/file.mojo index 823cbf9348..f5f4e6e5f6 100644 --- a/stdlib/src/builtin/file.mojo +++ b/stdlib/src/builtin/file.mojo @@ -35,9 +35,9 @@ from os import PathLike, abort from sys import external_call, sizeof from sys.ffi import OpaquePointer -from memory import AddressSpace, UnsafePointer +from memory import AddressSpace, UnsafePointer, Span -from utils import Span, StringRef, StringSlice, write_buffered +from utils import StringRef, StringSlice, write_buffered @register_passable diff --git a/stdlib/src/builtin/file_descriptor.mojo b/stdlib/src/builtin/file_descriptor.mojo index 8f7709d027..fef115e471 100644 --- a/stdlib/src/builtin/file_descriptor.mojo +++ b/stdlib/src/builtin/file_descriptor.mojo @@ -27,9 +27,7 @@ from sys.ffi import external_call from sys.info import is_gpu from builtin.io import _printf -from memory import UnsafePointer - -from utils import Span +from memory import UnsafePointer, Span @value diff --git a/stdlib/src/builtin/io.mojo b/stdlib/src/builtin/io.mojo index c0b55f993e..bb15718f20 100644 --- a/stdlib/src/builtin/io.mojo +++ b/stdlib/src/builtin/io.mojo @@ -33,7 +33,6 @@ from builtin.file_descriptor import FileDescriptor from memory import UnsafePointer, memcpy from utils import ( - Span, StaticString, StringRef, StringSlice, diff --git a/stdlib/src/builtin/reversed.mojo b/stdlib/src/builtin/reversed.mojo index e01947a3fb..9e1d778299 100644 --- a/stdlib/src/builtin/reversed.mojo +++ b/stdlib/src/builtin/reversed.mojo @@ -19,7 +19,7 @@ from collections import Deque, Dict from collections.deque import _DequeIter from collections.dict import _DictEntryIter, _DictKeyIter, _DictValueIter from collections.list import _ListIter -from utils.span import Span, _SpanIter +from memory.span import Span, _SpanIter from .range import _StridedRange diff --git a/stdlib/src/builtin/simd.mojo b/stdlib/src/builtin/simd.mojo index 350eda13d0..2471fbf58a 100644 --- a/stdlib/src/builtin/simd.mojo +++ b/stdlib/src/builtin/simd.mojo @@ -50,9 +50,9 @@ from builtin.dtype import _uint_type_of_width from builtin.format_int import _try_write_int from builtin.io import _snprintf from documentation import doc_private -from memory import UnsafePointer, bitcast +from memory import UnsafePointer, bitcast, Span -from utils import IndexList, Span, StaticTuple, StringSlice +from utils import IndexList, StaticTuple, StringSlice from utils._visualizers import lldb_formatter_wrapping_type from utils.numerics import FPUtils from utils.numerics import isnan as _isnan diff --git a/stdlib/src/builtin/sort.mojo b/stdlib/src/builtin/sort.mojo index 78447a82fb..23429d9b4f 100644 --- a/stdlib/src/builtin/sort.mojo +++ b/stdlib/src/builtin/sort.mojo @@ -20,9 +20,7 @@ from math import ceil from sys import bitwidthof from bit import count_leading_zeros -from memory import UnsafePointer - -from utils import Span +from memory import UnsafePointer, Span # ===-----------------------------------------------------------------------===# # sort diff --git a/stdlib/src/builtin/string_literal.mojo b/stdlib/src/builtin/string_literal.mojo index 7b1598b481..377173470f 100644 --- a/stdlib/src/builtin/string_literal.mojo +++ b/stdlib/src/builtin/string_literal.mojo @@ -19,9 +19,9 @@ from collections import List from hashlib._hasher import _HashableWithHasher, _Hasher from sys.ffi import c_char -from memory import UnsafePointer, memcpy +from memory import UnsafePointer, memcpy, Span -from utils import Span, StaticString, StringRef, StringSlice, Writable, Writer +from utils import StaticString, StringRef, StringSlice, Writable, Writer from utils._visualizers import lldb_formatter_wrapping_type from utils.format import _CurlyEntryFormattable, _FormatCurlyEntry from utils.string_slice import _StringSliceIter, _to_string_list diff --git a/stdlib/src/collections/list.mojo b/stdlib/src/collections/list.mojo index 033ceeb464..13ee261638 100644 --- a/stdlib/src/collections/list.mojo +++ b/stdlib/src/collections/list.mojo @@ -24,9 +24,7 @@ from os import abort from sys import sizeof from sys.intrinsics import _type_is_eq -from memory import Pointer, UnsafePointer, memcpy - -from utils import Span +from memory import Pointer, UnsafePointer, memcpy, Span from .optional import Optional diff --git a/stdlib/src/collections/string.mojo b/stdlib/src/collections/string.mojo index 47f06707c2..90ed9b5cd1 100644 --- a/stdlib/src/collections/string.mojo +++ b/stdlib/src/collections/string.mojo @@ -23,12 +23,11 @@ from sys.ffi import c_char from sys.intrinsics import _type_is_eq from bit import count_leading_zeros -from memory import UnsafePointer, memcmp, memcpy +from memory import UnsafePointer, memcmp, memcpy, Span from python import PythonObject from utils import ( IndexList, - Span, StaticString, StringRef, StringSlice, diff --git a/stdlib/src/math/math.mojo b/stdlib/src/math/math.mojo index 7b998c7220..9d5f53e0e4 100644 --- a/stdlib/src/math/math.mojo +++ b/stdlib/src/math/math.mojo @@ -36,9 +36,8 @@ from sys.info import _current_arch from bit import count_trailing_zeros from builtin.dtype import _integral_type_of from builtin.simd import _modf, _simd_apply -from memory import UnsafePointer +from memory import UnsafePointer, Span -from utils import Span from utils.index import IndexList from utils.numerics import FPUtils, isnan, nan from utils.static_tuple import StaticTuple diff --git a/stdlib/src/memory/__init__.mojo b/stdlib/src/memory/__init__.mojo index b2faf4890a..2717a5127a 100644 --- a/stdlib/src/memory/__init__.mojo +++ b/stdlib/src/memory/__init__.mojo @@ -16,5 +16,6 @@ from .arc import ArcPointer from .memory import memcmp, memcpy, memset, memset_zero, stack_allocation from .owned_pointer import OwnedPointer from .pointer import AddressSpace, Pointer +from .span import AsBytes, Span from .unsafe import bitcast, pack_bits from .unsafe_pointer import UnsafePointer diff --git a/stdlib/src/utils/span.mojo b/stdlib/src/memory/span.mojo similarity index 99% rename from stdlib/src/utils/span.mojo rename to stdlib/src/memory/span.mojo index 5aa2fb4cf7..cc5ebbb298 100644 --- a/stdlib/src/utils/span.mojo +++ b/stdlib/src/memory/span.mojo @@ -13,10 +13,10 @@ """Implements the Span type. -You can import these APIs from the `utils.span` module. For example: +You can import these APIs from the `memory` module. For example: ```mojo -from utils import Span +from memory import Span ``` """ diff --git a/stdlib/src/os/path/path.mojo b/stdlib/src/os/path/path.mojo index 64edffce5e..4e65dfbf34 100644 --- a/stdlib/src/os/path/path.mojo +++ b/stdlib/src/os/path/path.mojo @@ -24,7 +24,8 @@ from pwd import getpwuid from stat import S_ISDIR, S_ISLNK, S_ISREG from sys import has_neon, os_is_linux, os_is_macos, os_is_windows -from utils import Span, StringSlice +from memory import Span +from utils import StringSlice from .. import PathLike from .._linux_aarch64 import _lstat as _lstat_linux_arm diff --git a/stdlib/src/prelude/__init__.mojo b/stdlib/src/prelude/__init__.mojo index 5551b826ee..3cb066f0d4 100644 --- a/stdlib/src/prelude/__init__.mojo +++ b/stdlib/src/prelude/__init__.mojo @@ -136,4 +136,5 @@ from builtin.value import ( from documentation import doc_private from memory import AddressSpace, Pointer -from utils import AsBytes, Writable, Writer +from memory.span import AsBytes +from utils import Writable, Writer diff --git a/stdlib/src/tempfile/tempfile.mojo b/stdlib/src/tempfile/tempfile.mojo index 509c234ac9..48ccb1ddcd 100644 --- a/stdlib/src/tempfile/tempfile.mojo +++ b/stdlib/src/tempfile/tempfile.mojo @@ -24,7 +24,8 @@ import sys from collections import List, Optional from pathlib import Path -from utils import Span, write_buffered +from memory import Span +from utils import write_buffered alias TMP_MAX = 10_000 diff --git a/stdlib/src/utils/__init__.mojo b/stdlib/src/utils/__init__.mojo index 0f3b95ced0..fa6129cc1c 100644 --- a/stdlib/src/utils/__init__.mojo +++ b/stdlib/src/utils/__init__.mojo @@ -16,7 +16,6 @@ from .index import Index, IndexList, product from .inline_string import InlineString from .lock import BlockingScopedLock, BlockingSpinLock, SpinWaiter from .loop import unroll -from .span import AsBytes, Span from .static_tuple import StaticTuple from .string_slice import StaticString, StringSlice from .stringref import StringRef diff --git a/stdlib/src/utils/_utf8_validation.mojo b/stdlib/src/utils/_utf8_validation.mojo index e7ca5a5e3b..eb514733ca 100644 --- a/stdlib/src/utils/_utf8_validation.mojo +++ b/stdlib/src/utils/_utf8_validation.mojo @@ -28,7 +28,7 @@ https://github.com/simdutf/SimdUnicode/blob/main/src/UTF8.cs from base64._b64encode import _sub_with_saturation from sys.intrinsics import llvm_intrinsic -from memory import UnsafePointer +from memory import UnsafePointer, Span alias TOO_SHORT: UInt8 = 1 << 0 alias TOO_LONG: UInt8 = 1 << 1 diff --git a/stdlib/src/utils/inline_string.mojo b/stdlib/src/utils/inline_string.mojo index add0e6c7cc..8c6cfb3166 100644 --- a/stdlib/src/utils/inline_string.mojo +++ b/stdlib/src/utils/inline_string.mojo @@ -19,7 +19,7 @@ from collections import InlineArray, Optional from os import abort from sys import sizeof -from memory import UnsafePointer, memcpy +from memory import UnsafePointer, memcpy, Span from utils import StringSlice, Variant diff --git a/stdlib/src/utils/string_slice.mojo b/stdlib/src/utils/string_slice.mojo index b6f9daa45a..504b058954 100644 --- a/stdlib/src/utils/string_slice.mojo +++ b/stdlib/src/utils/string_slice.mojo @@ -27,10 +27,9 @@ from sys import bitwidthof, simdwidthof from sys.intrinsics import unlikely from bit import count_leading_zeros -from memory import UnsafePointer, memcmp, memcpy +from memory import UnsafePointer, memcmp, memcpy, Span from memory.memory import _memcmp_impl_unconstrained -from utils import Span from utils.format import _CurlyEntryFormattable, _FormatCurlyEntry from ._utf8_validation import _is_valid_utf8 diff --git a/stdlib/src/utils/stringref.mojo b/stdlib/src/utils/stringref.mojo index eaf6a285e3..75e864b405 100644 --- a/stdlib/src/utils/stringref.mojo +++ b/stdlib/src/utils/stringref.mojo @@ -20,7 +20,7 @@ from sys.ffi import c_char from bit import count_trailing_zeros from builtin.dtype import _uint_type_of_width -from memory import UnsafePointer, memcmp, pack_bits +from memory import UnsafePointer, memcmp, pack_bits, Span from memory.memory import _memcmp_impl_unconstrained from utils import StringSlice diff --git a/stdlib/src/utils/write.mojo b/stdlib/src/utils/write.mojo index 4d53f23afd..6d68951b9b 100644 --- a/stdlib/src/utils/write.mojo +++ b/stdlib/src/utils/write.mojo @@ -15,10 +15,9 @@ from collections import InlineArray from sys.info import is_gpu -from builtin.io import _printf -from memory import UnsafePointer, memcpy +from memory import UnsafePointer, memcpy, Span -from utils import Span, StaticString +from utils import StaticString # ===-----------------------------------------------------------------------===# @@ -36,7 +35,7 @@ trait Writer: Example: ```mojo - from utils import Span + from memory import Span @value struct NewString(Writer, Writable): diff --git a/stdlib/test/builtin/test_sort_issue_1018.mojo b/stdlib/test/builtin/test_sort_issue_1018.mojo index e8cfb4e1f0..af50f5b896 100644 --- a/stdlib/test/builtin/test_sort_issue_1018.mojo +++ b/stdlib/test/builtin/test_sort_issue_1018.mojo @@ -15,9 +15,7 @@ from random import rand -from memory import UnsafePointer - -from utils import Span +from memory import UnsafePointer, Span fn sort_test[D: DType, name: StringLiteral](size: Int, max: Int) raises: diff --git a/stdlib/test/collections/test_list.mojo b/stdlib/test/collections/test_list.mojo index cd173fc66c..1def6849ea 100644 --- a/stdlib/test/collections/test_list.mojo +++ b/stdlib/test/collections/test_list.mojo @@ -15,12 +15,10 @@ from collections import List from sys.info import sizeof -from memory import UnsafePointer +from memory import UnsafePointer, Span from test_utils import CopyCounter, MoveCounter from testing import assert_equal, assert_false, assert_raises, assert_true -from utils import Span - def test_mojo_issue_698(): var list = List[Float64]() diff --git a/stdlib/test/hashlib/test_ahash.mojo b/stdlib/test/hashlib/test_ahash.mojo index e696b32c76..4545e947cb 100644 --- a/stdlib/test/hashlib/test_ahash.mojo +++ b/stdlib/test/hashlib/test_ahash.mojo @@ -19,11 +19,9 @@ from time import now from bit import pop_count from builtin._location import __call_location -from memory import memset_zero, stack_allocation +from memory import memset_zero, stack_allocation, Span from testing import assert_equal, assert_not_equal, assert_true -from utils import Span - # Source: https://www.101languages.net/arabic/most-common-arabic-words/ alias words_ar = """ لا, من, هذا, أن, في, أنا, على, ما, هل, diff --git a/stdlib/test/utils/test_span.mojo b/stdlib/test/memory/test_span.mojo similarity index 98% rename from stdlib/test/utils/test_span.mojo rename to stdlib/test/memory/test_span.mojo index a666788354..b8bde201e9 100644 --- a/stdlib/test/utils/test_span.mojo +++ b/stdlib/test/memory/test_span.mojo @@ -14,11 +14,9 @@ from collections import InlineArray, List -from memory import UnsafePointer +from memory import UnsafePointer, Span from testing import assert_equal, assert_true -from utils import Span - def test_span_list_int(): var l = List[Int](1, 2, 3, 4, 5, 6, 7) diff --git a/stdlib/test/utils/test_string_slice.mojo b/stdlib/test/utils/test_string_slice.mojo index 7ef357692b..dfeb37b12f 100644 --- a/stdlib/test/utils/test_string_slice.mojo +++ b/stdlib/test/utils/test_string_slice.mojo @@ -14,7 +14,8 @@ from testing import assert_equal, assert_false, assert_true -from utils import Span, StringSlice +from memory import Span +from utils import StringSlice from utils._utf8_validation import _is_valid_utf8 from utils.string_slice import _count_utf8_continuation_bytes From daef3ce726ea0ad8ac022c3ee900f486b45afcd4 Mon Sep 17 00:00:00 2001 From: Austin Doolittle Date: Thu, 5 Dec 2024 08:52:40 -0800 Subject: [PATCH 040/509] [******] Extend math.max to support boolean Extends our max function to support boolean values MODULAR_ORIG_COMMIT_REV_ID: 51703fa8024d127eadd538055fee920053aafe11 --- stdlib/src/builtin/math.mojo | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/stdlib/src/builtin/math.mojo b/stdlib/src/builtin/math.mojo index 7293e16db2..428407f857 100644 --- a/stdlib/src/builtin/math.mojo +++ b/stdlib/src/builtin/math.mojo @@ -182,7 +182,7 @@ fn max(x: SIMD, y: __type_of(x), /) -> __type_of(x): corresponding elements in x and y. Constraints: - The type of the inputs must be numeric. + The type of the inputs must be numeric or boolean. Args: x: First SIMD vector. @@ -191,8 +191,16 @@ fn max(x: SIMD, y: __type_of(x), /) -> __type_of(x): Returns: A SIMD vector containing the elementwise maximum of x and y. """ - constrained[x.type.is_numeric(), "the SIMD type must be numeric"]() - return __mlir_op.`pop.max`(x.value, y.value) + + @parameter + if x.type is DType.bool: + return max(x.cast[DType.uint8](), y.cast[DType.uint8]()).cast[x.type]() + else: + constrained[ + x.type.is_numeric(), "the SIMD type must be numeric or boolean" + ]() + + return __mlir_op.`pop.max`(x.value, y.value) # ===----------------------------------------------------------------------=== # From 71b098fdd818724b0a175b9479dd11d8e5d96154 Mon Sep 17 00:00:00 2001 From: Connor Gray Date: Thu, 5 Dec 2024 13:47:55 -0600 Subject: [PATCH 041/509] [stdlib] cleanup: Remove `_lit_origin_union`; use `__origin_of(a, b)` instead This is a low-level operation that was only used in one place in practice. With the recent change to support using `__origin_of(a, b)` as a way to form origin unions, `_lit_origin_union` is no longer strictly necessary, so let's remove it. MODULAR_ORIG_COMMIT_REV_ID: 3128b8776cea534b0b58525368f2865805b57237 --- stdlib/src/builtin/builtin_list.mojo | 31 ++++++---------------------- 1 file changed, 6 insertions(+), 25 deletions(-) diff --git a/stdlib/src/builtin/builtin_list.mojo b/stdlib/src/builtin/builtin_list.mojo index d736c55aa6..e74b93cad3 100644 --- a/stdlib/src/builtin/builtin_list.mojo +++ b/stdlib/src/builtin/builtin_list.mojo @@ -265,24 +265,6 @@ struct _VariadicListMemIter[ return len(self.src[]) - self.index -# Helper to compute the union of two origins: -# TODO: parametric aliases would be nice. -struct _lit_origin_union[ - is_mutable: Bool, //, - a: Origin[is_mutable], - b: Origin[is_mutable], -]: - alias result = __mlir_attr[ - `#lit.origin.union<`, - a._mlir_origin, - `,`, - b._mlir_origin, - `> : !lit.origin<`, - is_mutable.value, - `>`, - ] - - struct VariadicListMem[ elt_is_mutable: Bool, //, element_type: AnyType, @@ -424,13 +406,12 @@ struct VariadicListMem[ fn __getitem__( self, idx: Int ) -> ref [ - _lit_origin_union[ - origin, - # cast mutability of self to match the mutability of the element, - # since that is what we want to use in the ultimate reference and - # the union overall doesn't matter. - Origin[elt_is_mutable].cast_from[__origin_of(self)].result, - ].result + # cast mutability of self to match the mutability of the element, + # since that is what we want to use in the ultimate reference and + # the union overall doesn't matter. + Origin[elt_is_mutable] + .cast_from[__origin_of(origin, self)] + .result ] element_type: """Gets a single element on the variadic list. From 760b991898e4efaf75366a9986d17486d886f021 Mon Sep 17 00:00:00 2001 From: Lukas Hermann <1734032+lsh@users.noreply.github.com> Date: Thu, 5 Dec 2024 17:42:27 -0500 Subject: [PATCH 042/509] [stdlib] Revert negative step slicing on Span. (#52196) MODULAR_ORIG_COMMIT_REV_ID: 0a0c51d90464c4cceeda1896f20f16e757cfd2bf --- stdlib/src/memory/span.mojo | 13 +++---------- stdlib/test/memory/test_span.mojo | 13 ------------- 2 files changed, 3 insertions(+), 23 deletions(-) diff --git a/stdlib/src/memory/span.mojo b/stdlib/src/memory/span.mojo index cc5ebbb298..497a084c88 100644 --- a/stdlib/src/memory/span.mojo +++ b/stdlib/src/memory/span.mojo @@ -205,16 +205,9 @@ struct Span[ var step: Int start, end, step = slc.indices(len(self)) - if step < 0: - step = -step - var new_len = (start - end + step - 1) // step - var buff = UnsafePointer[T].alloc(new_len) - i = 0 - while start > end: - buff[i] = self._data[start] - start -= step - i += 1 - return Span[T, origin](ptr=buff, length=new_len) + debug_assert( + step == 1, "Slice must be within bounds and step must be 1" + ) var res = Self( ptr=(self._data + start), length=len(range(start, end, step)) diff --git a/stdlib/test/memory/test_span.mojo b/stdlib/test/memory/test_span.mojo index b8bde201e9..92c49210c6 100644 --- a/stdlib/test/memory/test_span.mojo +++ b/stdlib/test/memory/test_span.mojo @@ -136,19 +136,6 @@ def test_span_slice(): assert_equal(res[0], 2) assert_equal(res[1], 3) assert_equal(res[2], 4) - # Test slicing with negative step - res = s[1::-1] - assert_equal(res[0], 2) - assert_equal(res[1], 1) - res.unsafe_ptr().free() - res = s[2:1:-1] - assert_equal(res[0], 3) - assert_equal(len(res), 1) - res.unsafe_ptr().free() - res = s[5:1:-2] - assert_equal(res[0], 5) - assert_equal(res[1], 3) - res.unsafe_ptr().free() def test_copy_from(): From 6acac62142cd570cbda3e9ed667acc74ff5f34d7 Mon Sep 17 00:00:00 2001 From: Connor Gray Date: Thu, 5 Dec 2024 17:26:09 -0600 Subject: [PATCH 043/509] [stdlib] cleanup: Remove `Stringlike` in favor of using `StringSlice` The requirements of `Stringlike` are largely the same as what `StringSlice` provides. So it's simpler and avoids extra monomorphizations if we make this code concrete instead of generic on `Stringlike`. `StringSlice` is already the common denominator of all the string types. MODULAR_ORIG_COMMIT_REV_ID: cf12cfa3455f00b1e0f06431856086a0e3a4f6bc --- stdlib/src/utils/format.mojo | 18 +++++++----------- stdlib/src/utils/string_slice.mojo | 24 ------------------------ 2 files changed, 7 insertions(+), 35 deletions(-) diff --git a/stdlib/src/utils/format.mojo b/stdlib/src/utils/format.mojo index 5c1dc2cf8b..752a34898d 100644 --- a/stdlib/src/utils/format.mojo +++ b/stdlib/src/utils/format.mojo @@ -16,8 +16,6 @@ from collections import Optional from memory import UnsafePointer -from utils.string_slice import Stringlike - # TODO: _FormatCurlyEntry and _FormatSpec should be public in the future for # people who want to write their own templating engines. This is not yet done # because the implementation is incomplete and we are missing crucial features. @@ -36,7 +34,7 @@ from utils.string_slice import Stringlike # a trait that all format specifications conform to) @value struct _FormatCurlyEntry(CollectionElement, CollectionElementNew): - """The struct that handles `Stringlike` formatting by curly braces entries. + """The struct that handles string formatting by curly braces entries. This is internal for the types: `String`, `StringLiteral` and `StringSlice`. """ @@ -141,7 +139,7 @@ struct _FormatCurlyEntry(CollectionElement, CollectionElementNew): return self.field.isa[Int]() @staticmethod - fn format[T: Stringlike](fmt_src: T, args: Self._args_t) raises -> String: + fn format(fmt_src: StringSlice, args: Self._args_t) raises -> String: """Format the entries. Args: @@ -177,9 +175,9 @@ struct _FormatCurlyEntry(CollectionElement, CollectionElementNew): return res^ @staticmethod - fn _create_entries[ - T: Stringlike - ](fmt_src: T, len_pos_args: Int) raises -> (List[Self], Int): + fn _create_entries( + fmt_src: StringSlice, len_pos_args: Int + ) raises -> (List[Self], Int): """Returns a list of entries and its total estimated entry byte width. """ var manual_indexing_count = 0 @@ -264,11 +262,9 @@ struct _FormatCurlyEntry(CollectionElement, CollectionElementNew): raise Error(l_err) return entries^, total_estimated_entry_byte_width - fn _handle_field_and_break[ - T: Stringlike - ]( + fn _handle_field_and_break( mut self, - fmt_src: T, + fmt_src: StringSlice, len_pos_args: Int, i: Int, start_value: Int, diff --git a/stdlib/src/utils/string_slice.mojo b/stdlib/src/utils/string_slice.mojo index 504b058954..e572747d4e 100644 --- a/stdlib/src/utils/string_slice.mojo +++ b/stdlib/src/utils/string_slice.mojo @@ -1122,30 +1122,6 @@ struct StringSlice[is_mutable: Bool, //, origin: Origin[is_mutable]]( # ===-----------------------------------------------------------------------===# -trait Stringlike: - """Trait intended to be used only with `String`, `StringLiteral` and - `StringSlice`.""" - - fn byte_length(self) -> Int: - """Get the string length in bytes. - - Returns: - The length of this string in bytes. - - Notes: - This does not include the trailing null terminator in the count. - """ - ... - - fn unsafe_ptr(self) -> UnsafePointer[UInt8]: - """Get raw pointer to the underlying data. - - Returns: - The raw pointer to the data. - """ - ... - - fn _to_string_list[ T: CollectionElement, # TODO(MOCO-1446): Make `T` parameter inferred len_fn: fn (T) -> Int, From ccd2e8116545da11771b2bf0f65ac8a315e0ef9f Mon Sep 17 00:00:00 2001 From: abdul dakkak Date: Fri, 6 Dec 2024 05:51:58 -0800 Subject: [PATCH 044/509] [******][GPU] Rename has_nvidia/amd to include accelerator MODULAR_ORIG_COMMIT_REV_ID: 32397c88a4cd6f805e69ec1c5383564c9c76deb3 --- stdlib/src/sys/__init__.mojo | 4 ++-- stdlib/src/sys/info.mojo | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/stdlib/src/sys/__init__.mojo b/stdlib/src/sys/__init__.mojo index baf2af6fa7..e469d501b5 100644 --- a/stdlib/src/sys/__init__.mojo +++ b/stdlib/src/sys/__init__.mojo @@ -19,7 +19,7 @@ from .ffi import DEFAULT_RTLD, RTLD, DLHandle, external_call from .info import ( alignof, bitwidthof, - has_amd_gpu, + has_amd_gpu_accelerator, has_avx, has_avx2, has_avx512f, @@ -28,7 +28,7 @@ from .info import ( has_neon, has_neon_int8_dotprod, has_neon_int8_matmul, - has_nvidia_gpu, + has_nvidia_gpu_accelerator, has_sse4, has_vnni, is_amd_gpu, diff --git a/stdlib/src/sys/info.mojo b/stdlib/src/sys/info.mojo index ccd39c7ee2..3cb4b2787a 100644 --- a/stdlib/src/sys/info.mojo +++ b/stdlib/src/sys/info.mojo @@ -870,7 +870,7 @@ fn _macos_version() raises -> Tuple[Int, Int, Int]: @always_inline("nodebug") -fn has_amd_gpu() -> Bool: +fn has_amd_gpu_accelerator() -> Bool: """Returns True if the host system has an AMD GPU and False otherwise. Returns: @@ -880,7 +880,7 @@ fn has_amd_gpu() -> Bool: @always_inline("nodebug") -fn has_nvidia_gpu() -> Bool: +fn has_nvidia_gpu_accelerator() -> Bool: """Returns True if the host system has an NVIDIA GPU and False otherwise. Returns: From 1bebfaf99d20d4e201baa76006d08746417f02b7 Mon Sep 17 00:00:00 2001 From: abdul dakkak Date: Fri, 6 Dec 2024 06:02:03 -0800 Subject: [PATCH 045/509] [Stdlib] Remove the time.now function MODULAR_ORIG_COMMIT_REV_ID: 189e758f6f3a147fad07afd382c09146a470a168 --- examples/reduce.mojo | 1 - stdlib/src/time/__init__.mojo | 1 - stdlib/src/time/time.mojo | 22 +--------------------- stdlib/test/hashlib/test_ahash.mojo | 1 - stdlib/test/time/test_time.mojo | 2 -- 5 files changed, 1 insertion(+), 26 deletions(-) diff --git a/examples/reduce.mojo b/examples/reduce.mojo index 8e213c6b86..9babfd91a0 100644 --- a/examples/reduce.mojo +++ b/examples/reduce.mojo @@ -17,7 +17,6 @@ # Reductions and scans are common algorithm patterns in parallel computing. from random import rand -from time import now from algorithm import sum from benchmark import Unit, benchmark, keep diff --git a/stdlib/src/time/__init__.mojo b/stdlib/src/time/__init__.mojo index 5d01e75fdf..6e5097653a 100644 --- a/stdlib/src/time/__init__.mojo +++ b/stdlib/src/time/__init__.mojo @@ -14,7 +14,6 @@ from .time import ( monotonic, - now, perf_counter, perf_counter_ns, sleep, diff --git a/stdlib/src/time/time.mojo b/stdlib/src/time/time.mojo index 7364d85324..0167c26548 100644 --- a/stdlib/src/time/time.mojo +++ b/stdlib/src/time/time.mojo @@ -15,7 +15,7 @@ You can import these APIs from the `time` package. For example: ```mojo -from time import now +from time import perf_counter_ns ``` """ @@ -215,26 +215,6 @@ fn perf_counter_ns() -> UInt: return _monotonic_nanoseconds() -# ===-----------------------------------------------------------------------===# -# now -# ===-----------------------------------------------------------------------===# - - -@always_inline -fn now() -> UInt: - """Deprecated: Please use time.perf_counter_ns instead. - - Returns the current monotonic time time in nanoseconds. This function - queries the current platform's monotonic clock, making it useful for - measuring time differences, but the significance of the returned value - varies depending on the underlying implementation. - - Returns: - The current time in ns. - """ - return perf_counter_ns() - - # ===-----------------------------------------------------------------------===# # monotonic # ===-----------------------------------------------------------------------===# diff --git a/stdlib/test/hashlib/test_ahash.mojo b/stdlib/test/hashlib/test_ahash.mojo index 4545e947cb..c9f01c3a14 100644 --- a/stdlib/test/hashlib/test_ahash.mojo +++ b/stdlib/test/hashlib/test_ahash.mojo @@ -15,7 +15,6 @@ from hashlib._ahash import AHasher from hashlib._hasher import _hash_with_hasher as hash from hashlib.hash import hash as old_hash -from time import now from bit import pop_count from builtin._location import __call_location diff --git a/stdlib/test/time/test_time.mojo b/stdlib/test/time/test_time.mojo index 342e453774..0148bfeeef 100644 --- a/stdlib/test/time/test_time.mojo +++ b/stdlib/test/time/test_time.mojo @@ -15,7 +15,6 @@ from sys import os_is_windows from time import ( monotonic, - now, perf_counter, perf_counter_ns, sleep, @@ -60,7 +59,6 @@ fn test_time() raises: assert_true(perf_counter() > 0) assert_true(perf_counter_ns() > 0) - assert_true(now() > 0) assert_true(monotonic() > 0) var t1 = time_function[time_me]() From ce50e8af79b2959711c0c76d29eb149db55502ed Mon Sep 17 00:00:00 2001 From: abdul dakkak Date: Fri, 6 Dec 2024 06:25:21 -0800 Subject: [PATCH 046/509] [Stdlib] Add new has_accelerator helper function, NFC MODULAR_ORIG_COMMIT_REV_ID: dc9c60cda00ff29c9b6dc11d8fbabdccd146953e --- stdlib/src/sys/__init__.mojo | 1 + stdlib/src/sys/info.mojo | 10 ++++++++++ 2 files changed, 11 insertions(+) diff --git a/stdlib/src/sys/__init__.mojo b/stdlib/src/sys/__init__.mojo index e469d501b5..b0777f5c6e 100644 --- a/stdlib/src/sys/__init__.mojo +++ b/stdlib/src/sys/__init__.mojo @@ -19,6 +19,7 @@ from .ffi import DEFAULT_RTLD, RTLD, DLHandle, external_call from .info import ( alignof, bitwidthof, + has_accelerator, has_amd_gpu_accelerator, has_avx, has_avx2, diff --git a/stdlib/src/sys/info.mojo b/stdlib/src/sys/info.mojo index 3cb4b2787a..ee149ca72a 100644 --- a/stdlib/src/sys/info.mojo +++ b/stdlib/src/sys/info.mojo @@ -869,6 +869,16 @@ fn _macos_version() raises -> Tuple[Int, Int, Int]: # ===-----------------------------------------------------------------------===# +@always_inline("nodebug") +fn has_accelerator() -> Bool: + """Returns True if the host system has an accelerator and False otherwise. + + Returns: + True if the host system has an accelerator. + """ + return _accelerator_arch() != "" + + @always_inline("nodebug") fn has_amd_gpu_accelerator() -> Bool: """Returns True if the host system has an AMD GPU and False otherwise. From fd5cd6e79d483025b2f7342572c4cbdfb5d79561 Mon Sep 17 00:00:00 2001 From: modularbot Date: Fri, 6 Dec 2024 17:36:42 +0000 Subject: [PATCH 047/509] Update lockfiles to point to latest nightly version: 24.6.0.dev2024120616 --- examples/life/magic.lock | 1513 +++++++++++++------------- examples/magic.lock | 1490 ++++++++++++-------------- examples/notebooks/magic.lock | 1886 +++++++++++++++------------------ examples/operators/magic.lock | 1501 ++++++++++++-------------- magic.lock | 1501 ++++++++++++-------------- 5 files changed, 3556 insertions(+), 4335 deletions(-) diff --git a/examples/life/magic.lock b/examples/life/magic.lock index c962798beb..8a7706a5c8 100644 --- a/examples/life/magic.lock +++ b/examples/life/magic.lock @@ -29,7 +29,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.1-hf42f96a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-hf42f96a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.6-h159bff8_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.449-h5558e3c_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-h5558e3c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.10.0-h113e628_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.13.0-h3cf044e_1.conda @@ -56,7 +56,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/linux-64/expat-2.6.4-h5888daf_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.5-pyhff2d567_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/filelock-3.16.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/fluidsynth-2.3.7-hd992666_0.conda @@ -69,7 +69,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2 - 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 - - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gettext-0.22.5-he02047a_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gettext-tools-0.22.5-he02047a_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gflags-2.2.2-h5888daf_1005.conda @@ -82,7 +82,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/httptools-0.6.4-py312h66e93f0_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda @@ -90,7 +90,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-7.0.2-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/jack-1.9.22-h7c63dc7_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda @@ -99,10 +99,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_h5888daf_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-he15abb1_1_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-h5888daf_1_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-h5888daf_1_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-h5c8f2c3_1_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-hcf3f2e3_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-h36004a0_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-h36004a0_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-h56a123c_3_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libasprintf-0.22.5-he8f35ee_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libasprintf-devel-0.22.5-he8f35ee_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libavif16-1.1.1-h1909e37_2.conda @@ -138,15 +138,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-hd590300_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-25_linux64_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.3-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-devel-5.6.3-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.3-hb9d3cd8_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-devel-5.6.3-hb9d3cd8_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libmad-0.15.1b-h0b41bf4_1001.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libogg-1.3.5-h4ab18f5_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.28-pthreads_h94d23a6_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopus-1.3.1-h7f98852_1.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-h6bd9018_1_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-hbdb145b_3_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.44-hadc24fc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.2-h5b01275_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_1.conda @@ -158,25 +158,25 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsystemd0-256.9-h2774228_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libthrift-0.21.0-h0e7cc3e_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-he137b08_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.8.0-hf23e847_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hc4654cb_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.9.0-hb9d3cd8_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.49.2-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libvorbis-1.3.7-h9c3ff4c_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.4.0-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.5-hb346dea_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.5-h8d12d68_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.9.4-hcb278e6_0.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.dev2024120416-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120416-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120416-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120416-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120616-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120616-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120616-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120616-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.dev2024120416-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120616-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/multiprocess-0.70.15-py312h98912ed_1.conda @@ -204,7 +204,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/portaudio-19.6.0-h7c63dc7_9.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/portmidi-2.0.4-h7c63dc7_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.0-py312h66e93f0_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.1-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/protobuf-5.28.2-py312h2ec8cdc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pulseaudio-client-17.0-hb77b528_0.conda @@ -218,7 +218,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyinstrument-5.0.0-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.7-hc5c86c4_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.8-h9e4cc4f_1_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda @@ -234,7 +234,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda - 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_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_1.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.7-h3ed165c_0.conda @@ -243,21 +243,21 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/sdl2_ttf-2.22.0-h08b1b5d_2.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 - - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-ha2e4443_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-h8bd8927_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.1.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyh7900ff3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/svt-av1-2.3.0-h5888daf_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.20.4-py312h8360d73_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.46.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda @@ -277,11 +277,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrender-0.9.11-hb9d3cd8_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-xorgproto-2024.1-hb9d3cd8_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xxhash-0.8.2-hd590300_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-5.6.3-hbcc6ac9_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-gpl-tools-5.6.3-hbcc6ac9_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-tools-5.6.3-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-5.6.3-hbcc6ac9_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-gpl-tools-5.6.3-hbcc6ac9_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-tools-5.6.3-hb9d3cd8_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.18.0-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.18.3-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.1-hb9d3cd8_2.conda @@ -310,7 +310,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.1-h4c7db1d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h4c7db1d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.6-hffbb33f_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.449-h7085e57_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h7085e57_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-core-cpp-1.14.0-h1887c18_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-identity-cpp-1.10.0-h47b0b28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-blobs-cpp-12.13.0-h185ecfd_1.conda @@ -337,7 +337,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/linux-aarch64/expat-2.6.4-h5ad3122_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.5-pyhff2d567_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/filelock-3.16.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/fluidsynth-2.3.7-h4f58cef_0.conda @@ -350,7 +350,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2 - 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 - - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gettext-0.22.5-h0a1ffab_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gettext-tools-0.22.5-h0a1ffab_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gflags-2.2.2-h5ad3122_1005.conda @@ -363,7 +363,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/httptools-0.6.4-py312hb2c0f52_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda @@ -371,7 +371,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-7.0.2-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/jack-1.9.22-h5c6c0ed_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/keyutils-1.6.1-h4e544f5_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/krb5-1.21.3-h50a48e9_0.conda @@ -380,10 +380,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.0.0-h4de3ea5_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h5ad3122_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-hc7b0e1d_2_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h5ad3122_2_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h5ad3122_2_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h14ec2bd_2_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-hb63acf4_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-he2e0623_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-he2e0623_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-hc52ba39_3_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libasprintf-0.22.5-h87f4aca_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libasprintf-devel-0.22.5-h87f4aca_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libavif16-1.1.1-h3b0c220_2.conda @@ -419,15 +419,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libiconv-1.17-h31becfc_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libjpeg-turbo-3.0.0-h31becfc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-25_linuxaarch64_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.3-h86ecc28_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-devel-5.6.3-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.3-h86ecc28_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-devel-5.6.3-h86ecc28_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libmad-0.15.1b-hb4cce97_1001.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnghttp2-1.64.0-hc8609a4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libogg-1.3.5-h0b9eccb_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.28-pthreads_h9d3fd7e_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopus-1.3.1-hf897c2e_1.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-h23a96eb_2_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-h553aec1_3_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.44-hc4a20ef_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.2-h029595c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_1.conda @@ -439,7 +439,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsystemd0-256.9-hd54d049_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libthrift-0.21.0-h154c74f_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.0-hec21d91_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.0-hca96517_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.9.0-h86ecc28_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuv-1.49.2-h86ecc28_0.conda @@ -447,17 +447,17 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libwebp-base-1.4.0-h31becfc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcb-1.17.0-h262b8f6_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.5-hf4efe5d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.5-h2e0c361_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.9.4-hd600fc2_0.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.dev2024120416-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120416-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120416-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120416-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120616-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120616-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120616-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120616-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.dev2024120416-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120616-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/multiprocess-0.70.15-py312hdd3e373_1.conda @@ -485,7 +485,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/portaudio-19.6.0-h5c6c0ed_9.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/portmidi-2.0.4-h5c6c0ed_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.2.0-py312hb2c0f52_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.2.1-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/protobuf-5.28.2-py312h6f74592_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pthread-stubs-0.4-h86ecc28_1002.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pulseaudio-client-17.0-h729494f_0.conda @@ -499,7 +499,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyinstrument-5.0.0-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.7-h5d932e8_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.8-h1683364_1_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda @@ -515,7 +515,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8fc344f_1.conda - 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_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_1.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.7-h2a74887_0.conda @@ -524,21 +524,21 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sdl2_ttf-2.22.0-h680d130_2.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 - - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-h1088aeb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-hd4fb6f5_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.1.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyh7900ff3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/svt-av1-2.3.0-h5ad3122_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.20.4-py312ha0d6ea1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py312h52516f5_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.46.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda @@ -558,11 +558,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxrender-0.9.11-h57736b2_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-xorgproto-2024.1-h86ecc28_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xxhash-0.8.2-h31becfc_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-5.6.3-h2dbfc1b_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-gpl-tools-5.6.3-h2dbfc1b_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-tools-5.6.3-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-5.6.3-h2dbfc1b_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-gpl-tools-5.6.3-h2dbfc1b_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-tools-5.6.3-h86ecc28_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yaml-0.2.5-hf897c2e_2.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.18.0-py312hb2c0f52_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.18.3-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zeromq-4.3.5-h5efb499_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zlib-1.3.1-h86ecc28_2.conda @@ -588,7 +588,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.1-h5d7ee29_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-h5d7ee29_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.6-h8474b10_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.449-h3b64406_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-h3b64406_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.14.0-hd50102c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.10.0-hc602bab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-blobs-cpp-12.13.0-h7585a09_1.conda @@ -613,7 +613,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda - 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.5-pyhff2d567_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/filelock-3.16.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/fluidsynth-2.3.7-h80fea77_0.conda @@ -626,7 +626,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2 - 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 - - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gettext-0.22.5-h8414b35_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gettext-tools-0.22.5-h8414b35_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gflags-2.2.2-hf9b8971_1005.conda @@ -639,24 +639,24 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/httptools-0.6.4-py312hea69d52_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-7.0.2-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lame-3.100-h1a8c8d9_1003.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.16-ha0e7c42_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_hf9b8971_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-h654e1bb_2_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-h605b82c_2_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-h605b82c_2_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-h9b432b6_2_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-h5affd47_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-haafc02e_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-haafc02e_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-h4c1644f_3_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libasprintf-0.22.5-h8414b35_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libasprintf-devel-0.22.5-h8414b35_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libavif16-1.1.1-h45b7238_2.conda @@ -688,14 +688,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libintl-devel-0.22.5-h8414b35_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.0.0-hb547adb_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-25_osxarm64_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.3-h39f12f2_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-devel-5.6.3-h39f12f2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.3-h39f12f2_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libmad-0.15.1b-h1a8c8d9_1001.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.64.0-h6d7220d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libogg-1.3.5-h99b78c6_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.28-openmp_hf332438_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopus-1.3.1-h27ca646_1.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-h5168bdf_2_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-h3a603ae_3_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.44-hc14010f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.2-h8f0b736_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h2348fd5_1.conda @@ -704,24 +703,24 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.47.0-hbaaea75_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.1-h9cc3647_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libthrift-0.21.0-h64651cc_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-hfce79cd_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-ha962b0a_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.9.0-h5505292_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libuv-1.49.2-h7ab814d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libvorbis-1.3.7-h9f76cd9_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.4.0-h93a5062_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxcb-1.17.0-hdb1d25a_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.5-hbbdcc80_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.5-h178c5d8_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.4-hdb05f8b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.5-hdb05f8b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.9.4-hb7217d7_0.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.dev2024120416-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120416-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120416-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120416-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120616-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120616-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120616-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120616-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.dev2024120416-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120616-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 @@ -749,7 +748,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/portaudio-19.6.0-h13dd4ca_9.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/portmidi-2.0.4-h13dd4ca_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.0-py312h024a12e_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.1-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/protobuf-5.28.2-py312hf02c72a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pthread-stubs-0.4-hd74edd7_1002.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-18.1.0-py312h1f38498_0.conda @@ -762,7 +761,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyinstrument-5.0.0-py312h0bf5046_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.7-h739c21a_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.8-hc22306f_1_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda @@ -778,7 +777,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h92ec313_1.conda - 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_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_1.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.7-hf9b8971_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sdl2_image-2.8.2-h376e2e1_1.conda @@ -786,21 +785,21 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sdl2_ttf-2.22.0-hda0f12e_2.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 - - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-hd02b534_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-h98b9ce2_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.1.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyh7900ff3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/svt-av1-2.3.0-hf24288c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.20.4-py312hf3e4074_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.46.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda @@ -814,11 +813,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxau-1.0.11-hd74edd7_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxdmcp-1.1.5-hd74edd7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xxhash-0.8.2-hb547adb_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xz-5.6.3-h9a6d368_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xz-gpl-tools-5.6.3-h9a6d368_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xz-tools-5.6.3-h39f12f2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.18.0-py312hea69d52_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.18.3-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zlib-1.3.1-h8359307_2.conda @@ -884,6 +880,7 @@ packages: depends: - python >=3.9 license: PSF-2.0 + license_family: PSF size: 19351 timestamp: 1733332029649 - kind: conda @@ -972,6 +969,7 @@ packages: - frozenlist >=1.1.0 - python >=3.9 license: Apache-2.0 + license_family: APACHE size: 13157 timestamp: 1733332198143 - kind: conda @@ -1801,13 +1799,12 @@ packages: timestamp: 1733333955728 - kind: conda name: aws-sdk-cpp - version: 1.11.449 - build: h3b64406_4 - build_number: 4 + version: 1.11.458 + build: h3b64406_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.449-h3b64406_4.conda - sha256: 10ce9c203d31229432421a841d8d135d3e942637571aae4bb2d3c7d5242e7f05 - md5: f9e46a4bb5a04cbca08355f166ce87c8 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-h3b64406_0.conda + sha256: ded5412750f5c29bdf8ef6bc5ab26e443dc4943bd69c9098a791d8a2bf9b184e + md5: 9a8d3ba158ff8ea08e17de366c238706 depends: - __osx >=11.0 - aws-c-common >=0.10.3,<0.10.4.0a0 @@ -1820,17 +1817,16 @@ packages: - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 2722689 - timestamp: 1732812825640 + size: 2853609 + timestamp: 1733389337912 - kind: conda name: aws-sdk-cpp - version: 1.11.449 - build: h5558e3c_4 - build_number: 4 + version: 1.11.458 + build: h5558e3c_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.449-h5558e3c_4.conda - sha256: 4881f7b4f5e3c797332cffb990df246a422346b220a9c16014f274beb2a276f5 - md5: ba7abdc93b0ade11d774b47aaab84737 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-h5558e3c_0.conda + sha256: 7eab747a5a3e1a46b9c85c591c30ca2d4e90c2cebeaec95c4fe016846efdfa14 + md5: b1919becd17fe224aacf708114231fda depends: - __glibc >=2.17,<3.0.a0 - aws-c-common >=0.10.3,<0.10.4.0a0 @@ -1844,17 +1840,16 @@ packages: - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 2945541 - timestamp: 1732812288219 + size: 3059100 + timestamp: 1733388777418 - kind: conda name: aws-sdk-cpp - version: 1.11.449 - build: h7085e57_4 - build_number: 4 + version: 1.11.458 + build: h7085e57_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.449-h7085e57_4.conda - sha256: 0908a82e7c50c51d5ee0ca543dbe70cbe1963e6e8f80ffa58ea6d26e5c68251e - md5: feec198cb18a5e90aa36c97328567d63 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h7085e57_0.conda + sha256: 6d5327305721d18d650a3f8a377dc30e65600f59bd33fd4fcad106965b09b6b8 + md5: 005e0cc687a2421a4ad493e5b7058abe depends: - aws-c-common >=0.10.3,<0.10.4.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 @@ -1867,8 +1862,8 @@ packages: - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 2813856 - timestamp: 1732812337182 + size: 2903434 + timestamp: 1733388870289 - kind: conda name: azure-core-cpp version: 1.14.0 @@ -2791,13 +2786,13 @@ packages: timestamp: 1730967212801 - kind: conda name: fastapi - version: 0.115.5 - build: pyhff2d567_0 + version: 0.115.6 + build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.5-pyhff2d567_0.conda - sha256: da2833cc2ea5789abc2a6899be02ba0a769386d4913ff182bd1a9458bea40c34 - md5: cfe0f8cd904ab19c36ba50eb5179ebe0 + url: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.6-pyhd8ed1ab_0.conda + sha256: d7826d537c667093c9de96411a09585a8d620c84a830a0195e58e9a0df45f018 + md5: 1b1e0c97830cdf75f1f371bd467ab657 depends: - email_validator >=2.0.0 - fastapi-cli >=0.0.5 @@ -2811,8 +2806,8 @@ packages: - uvicorn-standard >=0.12.0 license: MIT license_family: MIT - size: 73541 - timestamp: 1731452895466 + size: 73084 + timestamp: 1733362427885 - kind: conda name: fastapi-cli version: 0.0.5 @@ -3157,18 +3152,18 @@ packages: - kind: conda name: fsspec version: 2024.10.0 - build: pyhff2d567_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhff2d567_0.conda - sha256: 40bb76981dd49d5869b48925a8975bb7bbe4e33e1e40af4ec06f6bf4a62effd7 - md5: 816dbc4679a64e4417cd1385d661bb31 + url: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhd8ed1ab_1.conda + sha256: 790a50b4f94042951518f911a914a886a837c926094c6a14ed1d9d03ce336807 + md5: 906fe13095e734cb413b57a49116cdc8 depends: - - python >=3.8 + - python >=3.9 license: BSD-3-Clause - license_family: BSD - size: 134745 - timestamp: 1729608972363 + size: 134726 + timestamp: 1733493445080 - kind: conda name: gettext version: 0.22.5 @@ -3631,12 +3626,13 @@ packages: - kind: conda name: httpx version: 0.28.0 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_0.conda - sha256: cb7895446cd93091300accea6afbc8d9811a3c5899922ccfeeff97d9b55909dc - md5: 22878824a87f1af2ad48665f9d5bfcc8 + url: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_1.conda + sha256: 0b864abaa9f1443fc42368b4d2a4f4efb9971a53f961d1fe30fabd7fbdd76b27 + md5: 8a4a83ba566c6b5c718dd0531a362d01 depends: - anyio - certifi @@ -3645,8 +3641,8 @@ packages: - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 63183 - timestamp: 1732831049776 + size: 63203 + timestamp: 1733501478172 - kind: conda name: huggingface_hub version: 0.26.3 @@ -3821,24 +3817,25 @@ packages: - kind: conda name: jupyter_client version: 8.6.3 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_0.conda - sha256: 4419c85e209a715f551a5c9bead746f29ee9d0fc41e772a76db3868622795671 - md5: a14218cfb29662b4a19ceb04e93e298e + url: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + sha256: 19d8bd5bb2fde910ec59e081eeb59529491995ce0d653a5209366611023a0b3a + md5: 4ebae00eae9705b0c3d6d1018a81d047 depends: - importlib-metadata >=4.8.3 - jupyter_core >=4.12,!=5.0.* - - python >=3.8 + - python >=3.9 - python-dateutil >=2.8.2 - pyzmq >=23.0 - tornado >=6.2 - traitlets >=5.3 license: BSD-3-Clause license_family: BSD - size: 106055 - timestamp: 1726610805505 + size: 106342 + timestamp: 1733441040958 - kind: conda name: jupyter_core version: 5.7.2 @@ -4167,16 +4164,16 @@ packages: - kind: conda name: libarrow version: 18.1.0 - build: h654e1bb_2_cpu - build_number: 2 + build: h5affd47_3_cpu + build_number: 3 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-h654e1bb_2_cpu.conda - sha256: 925dcb034f36536eed21d9323f096bf2ebf1111d14c61e1ae0b90e5de131f1e1 - md5: e69934ff9dd8745fea8927028d1603ee + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-h5affd47_3_cpu.conda + sha256: 9dac7f7b96972a3c18549d8669269233ae9e7b25da56161bd85a86b98ca61f76 + md5: 3dc73b42851e6096542458eaf2c074ca depends: - __osx >=11.0 - aws-crt-cpp >=0.29.6,<0.29.7.0a0 - - aws-sdk-cpp >=1.11.449,<1.11.450.0a0 + - aws-sdk-cpp >=1.11.458,<1.11.459.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-identity-cpp >=1.10.0,<1.10.1.0a0 - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 @@ -4200,24 +4197,23 @@ packages: - zstd >=1.5.6,<1.6.0a0 constrains: - arrow-cpp <0.0a0 - - parquet-cpp <0.0a0 - apache-arrow-proc =*=cpu + - parquet-cpp <0.0a0 license: Apache-2.0 - license_family: APACHE - size: 5475725 - timestamp: 1732947802614 + size: 5487846 + timestamp: 1733450423101 - kind: conda name: libarrow version: 18.1.0 - build: hc7b0e1d_2_cpu - build_number: 2 + build: hb63acf4_3_cpu + build_number: 3 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-hc7b0e1d_2_cpu.conda - sha256: 3201944d1f97b9207e566ccf388c8376bb2ce7e461534cda63a28975b6790901 - md5: 4a46bd0be8e7f56a217d26b79d290a0e + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-hb63acf4_3_cpu.conda + sha256: e972904b472008f902df9e584f59ff7716fc22efc1124d1dfc41c931852acc75 + md5: d98a11c3ba32554873aeb6a071baceaa depends: - aws-crt-cpp >=0.29.6,<0.29.7.0a0 - - aws-sdk-cpp >=1.11.449,<1.11.450.0a0 + - aws-sdk-cpp >=1.11.458,<1.11.459.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-identity-cpp >=1.10.0,<1.10.1.0a0 - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 @@ -4242,26 +4238,25 @@ packages: - snappy >=1.2.1,<1.3.0a0 - zstd >=1.5.6,<1.6.0a0 constrains: + - parquet-cpp <0.0a0 - apache-arrow-proc =*=cpu - arrow-cpp <0.0a0 - - parquet-cpp <0.0a0 license: Apache-2.0 - license_family: APACHE - size: 8026783 - timestamp: 1732950110265 + size: 8048003 + timestamp: 1733452700958 - kind: conda name: libarrow version: 18.1.0 - build: he15abb1_1_cpu - build_number: 1 + build: hcf3f2e3_3_cpu + build_number: 3 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-he15abb1_1_cpu.conda - sha256: afc81af2e533cc35295aebae4fb382e770310d9b1ac31837456b440d35c54cf7 - md5: bd3e35a6f3f869b4777488452f315008 + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-hcf3f2e3_3_cpu.conda + sha256: a82f66f0a37ed3132e6b9faff9285d7ccbe950ccfe84edd6378fdee70ef2743e + md5: 196823c7752608cb6b5d5a7a33b17410 depends: - __glibc >=2.17,<3.0.a0 - aws-crt-cpp >=0.29.6,<0.29.7.0a0 - - aws-sdk-cpp >=1.11.449,<1.11.450.0a0 + - aws-sdk-cpp >=1.11.458,<1.11.459.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-identity-cpp >=1.10.0,<1.10.1.0a0 - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 @@ -4278,7 +4273,7 @@ packages: - libgoogle-cloud-storage >=2.31.0,<2.32.0a0 - libre2-11 >=2024.7.2 - libstdcxx >=13 - - libutf8proc >=2.8.0,<2.9.0a0 + - libutf8proc >=2.9.0,<2.10.0a0 - libzlib >=1.3.1,<2.0a0 - lz4-c >=1.9.3,<1.10.0a0 - orc >=2.0.3,<2.0.4.0a0 @@ -4286,190 +4281,180 @@ packages: - snappy >=1.2.1,<1.3.0a0 - zstd >=1.5.6,<1.6.0a0 constrains: + - apache-arrow-proc =*=cpu - parquet-cpp <0.0a0 - arrow-cpp <0.0a0 - - apache-arrow-proc =*=cpu license: Apache-2.0 - license_family: APACHE - size: 8780597 - timestamp: 1732863546099 + size: 8796519 + timestamp: 1733453489520 - kind: conda name: libarrow-acero version: 18.1.0 - build: h5888daf_1_cpu - build_number: 1 + build: h36004a0_3_cpu + build_number: 3 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-h5888daf_1_cpu.conda - sha256: 3de5719a7035baad7e665116dce7bb3d069f0c1916e163c553e2e491bbe8b614 - md5: 6197dcb930f6254e9b2fdc416be56b71 + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-h36004a0_3_cpu.conda + sha256: 0733a303b2dd5998489099d6c258ee442d3f8243379d339f57700554d696fe41 + md5: 6d8f74ac97166e09cdf02109ed9905ce depends: - __glibc >=2.17,<3.0.a0 - - libarrow 18.1.0 he15abb1_1_cpu + - libarrow 18.1.0 hcf3f2e3_3_cpu - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 - license_family: APACHE - size: 611272 - timestamp: 1732863586114 + size: 612773 + timestamp: 1733453636002 - kind: conda name: libarrow-acero version: 18.1.0 - build: h5ad3122_2_cpu - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h5ad3122_2_cpu.conda - sha256: e6c8988d1d79163d6d13dda21f9e401f5df4b3af7e0d221718522c600894adcf - md5: 14fede66c995f3cf958797e9fb567e22 - depends: - - libarrow 18.1.0 hc7b0e1d_2_cpu - - libgcc >=13 - - libstdcxx >=13 - license: Apache-2.0 - license_family: APACHE - size: 577510 - timestamp: 1732950190684 -- kind: conda - name: libarrow-acero - version: 18.1.0 - build: h605b82c_2_cpu - build_number: 2 + build: haafc02e_3_cpu + build_number: 3 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-h605b82c_2_cpu.conda - sha256: cfe32f1b0712b77d2c792a839fe4ea2790cabd99d47cd8e1b20ba2d3c8b113b2 - md5: 60351279d7dfd7c254c46aabf9aa35a6 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-haafc02e_3_cpu.conda + sha256: 214df0ac0f44dd792193d11c84dbf79a42ed0f663c7b1a06aa5ab755b93c1948 + md5: f3a050129b5012bd5fc381693f6eb2cd depends: - __osx >=11.0 - - libarrow 18.1.0 h654e1bb_2_cpu + - libarrow 18.1.0 h5affd47_3_cpu - libcxx >=18 license: Apache-2.0 - license_family: APACHE - size: 483362 - timestamp: 1732948000606 + size: 483753 + timestamp: 1733450627207 - kind: conda - name: libarrow-dataset + name: libarrow-acero version: 18.1.0 - build: h5888daf_1_cpu - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-h5888daf_1_cpu.conda - sha256: 7b3db3d5a7e411f8897e8d74403c1d871f3054300f5009c4bdf75da011bc3f42 - md5: 77501831a2aabbaabac55e8cb3b6900a + build: he2e0623_3_cpu + build_number: 3 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-he2e0623_3_cpu.conda + sha256: 1560efabce824155dd841219c299c71352594b5e237dce0879c2d8f50c16047a + md5: fa54002b982019ecc0e93cb4b2c493e9 depends: - - __glibc >=2.17,<3.0.a0 - - libarrow 18.1.0 he15abb1_1_cpu - - libarrow-acero 18.1.0 h5888daf_1_cpu + - libarrow 18.1.0 hb63acf4_3_cpu - libgcc >=13 - - libparquet 18.1.0 h6bd9018_1_cpu - libstdcxx >=13 license: Apache-2.0 - license_family: APACHE - size: 585458 - timestamp: 1732863686753 + size: 578323 + timestamp: 1733452783322 - kind: conda name: libarrow-dataset version: 18.1.0 - build: h5ad3122_2_cpu - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h5ad3122_2_cpu.conda - sha256: 53cdae2150c22ef9b5d6de8d0ee8ac52eeacc50fdfa2fa3ea644b52436d1eeb1 - md5: c54d83f012a40fef8a2dc4856e4340a0 + build: h36004a0_3_cpu + build_number: 3 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-h36004a0_3_cpu.conda + sha256: d5a0b4a2129a540548b0232df23e6940fe73d54e5ace5a31f5419d96a059f317 + md5: e9eac639d83b1c35f7743845b922d61a depends: - - libarrow 18.1.0 hc7b0e1d_2_cpu - - libarrow-acero 18.1.0 h5ad3122_2_cpu + - __glibc >=2.17,<3.0.a0 + - libarrow 18.1.0 hcf3f2e3_3_cpu + - libarrow-acero 18.1.0 h36004a0_3_cpu - libgcc >=13 - - libparquet 18.1.0 h23a96eb_2_cpu + - libparquet 18.1.0 hbdb145b_3_cpu - libstdcxx >=13 license: Apache-2.0 - license_family: APACHE - size: 559143 - timestamp: 1732950272727 + size: 585416 + timestamp: 1733454137952 - kind: conda name: libarrow-dataset version: 18.1.0 - build: h605b82c_2_cpu - build_number: 2 + build: haafc02e_3_cpu + build_number: 3 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-h605b82c_2_cpu.conda - sha256: eeae9e8d382c482076f4739455b53f16851d7f99be219b6f96dd4e765132b446 - md5: b5fcaddabf47aa15e50feff072a55ada + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-haafc02e_3_cpu.conda + sha256: 7b105d363d5f71db88454b304e44166c17b2970ddb0297b482f3d8b39fb39308 + md5: 8c57e5a50f865a16cafd92f5a32c9faa depends: - __osx >=11.0 - - libarrow 18.1.0 h654e1bb_2_cpu - - libarrow-acero 18.1.0 h605b82c_2_cpu + - libarrow 18.1.0 h5affd47_3_cpu + - libarrow-acero 18.1.0 haafc02e_3_cpu - libcxx >=18 - - libparquet 18.1.0 h5168bdf_2_cpu + - libparquet 18.1.0 h3a603ae_3_cpu license: Apache-2.0 - license_family: APACHE - size: 489769 - timestamp: 1732949732423 + size: 489900 + timestamp: 1733452479126 - kind: conda - name: libarrow-substrait + name: libarrow-dataset version: 18.1.0 - build: h14ec2bd_2_cpu - build_number: 2 + build: he2e0623_3_cpu + build_number: 3 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h14ec2bd_2_cpu.conda - sha256: e8923d62cfaadc4a8af1735e717fd4980cad693419e63aed04380566d9fd46df - md5: 4fd0103449cf40214fd348643aa78fff + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-he2e0623_3_cpu.conda + sha256: b26a03f529a4b87dcf523b012f9ccdac124b65f41801da7eb489192916e447ff + md5: 048f04da68a40e9e5e1e66ff9502b237 depends: + - libarrow 18.1.0 hb63acf4_3_cpu + - libarrow-acero 18.1.0 he2e0623_3_cpu + - libgcc >=13 + - libparquet 18.1.0 h553aec1_3_cpu + - libstdcxx >=13 + license: Apache-2.0 + size: 559844 + timestamp: 1733453065157 +- kind: conda + name: libarrow-substrait + version: 18.1.0 + build: h4c1644f_3_cpu + build_number: 3 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-h4c1644f_3_cpu.conda + sha256: 562c344d57b718aa838ccc01acae240d9ab33dd2da7db40dbe75d1db6b441e71 + md5: 7ba2783c26a0008307e2a1e637c2930f + depends: + - __osx >=11.0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.1.0 hc7b0e1d_2_cpu - - libarrow-acero 18.1.0 h5ad3122_2_cpu - - libarrow-dataset 18.1.0 h5ad3122_2_cpu - - libgcc >=13 + - libarrow 18.1.0 h5affd47_3_cpu + - libarrow-acero 18.1.0 haafc02e_3_cpu + - libarrow-dataset 18.1.0 haafc02e_3_cpu + - libcxx >=18 - libprotobuf >=5.28.2,<5.28.3.0a0 - - libstdcxx >=13 license: Apache-2.0 - license_family: APACHE - size: 515352 - timestamp: 1732950311471 + size: 451428 + timestamp: 1733453012619 - kind: conda name: libarrow-substrait version: 18.1.0 - build: h5c8f2c3_1_cpu - build_number: 1 + build: h56a123c_3_cpu + build_number: 3 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-h5c8f2c3_1_cpu.conda - sha256: e77a354bfc0ba7b04c856f1bb16e7b08950bcde54026087bafec46090380fcc1 - md5: 5d47bd2674afd104dbe2f2f3534594b0 + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-h56a123c_3_cpu.conda + sha256: 139104d80048382c48718a65721b24fa4d69abd6c2052ee1ab20f32b7d48228d + md5: 306bb541b83a83b66d5c1e6880302886 depends: - __glibc >=2.17,<3.0.a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.1.0 he15abb1_1_cpu - - libarrow-acero 18.1.0 h5888daf_1_cpu - - libarrow-dataset 18.1.0 h5888daf_1_cpu + - libarrow 18.1.0 hcf3f2e3_3_cpu + - libarrow-acero 18.1.0 h36004a0_3_cpu + - libarrow-dataset 18.1.0 h36004a0_3_cpu - libgcc >=13 - libprotobuf >=5.28.2,<5.28.3.0a0 - libstdcxx >=13 license: Apache-2.0 - license_family: APACHE - size: 520681 - timestamp: 1732863726954 + size: 520740 + timestamp: 1733454379083 - kind: conda name: libarrow-substrait version: 18.1.0 - build: h9b432b6_2_cpu - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-h9b432b6_2_cpu.conda - sha256: 6dde802134bd2e78581eb838c049b2e7e378899706b471f7072222a6b1284b90 - md5: 49e7c0460532a73f34bd127fff009224 + build: hc52ba39_3_cpu + build_number: 3 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-hc52ba39_3_cpu.conda + sha256: 66f2c06ad10d8886e53661420c5b73de217a088ee4693186deec7df292f9c766 + md5: 7a8e305f1689687ed063bb4553c1a7a5 depends: - - __osx >=11.0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.1.0 h654e1bb_2_cpu - - libarrow-acero 18.1.0 h605b82c_2_cpu - - libarrow-dataset 18.1.0 h605b82c_2_cpu - - libcxx >=18 + - libarrow 18.1.0 hb63acf4_3_cpu + - libarrow-acero 18.1.0 he2e0623_3_cpu + - libarrow-dataset 18.1.0 he2e0623_3_cpu + - libgcc >=13 - libprotobuf >=5.28.2,<5.28.3.0a0 + - libstdcxx >=13 license: Apache-2.0 - license_family: APACHE - size: 451127 - timestamp: 1732950194322 + size: 515638 + timestamp: 1733453200561 - kind: conda name: libasprintf version: 0.22.5 @@ -6193,86 +6178,77 @@ packages: - kind: conda name: liblzma version: 5.6.3 - build: h39f12f2_0 + build: h39f12f2_1 + build_number: 1 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.3-h39f12f2_0.conda - sha256: de00d627e41636591d05407c666de957a9ddd3c0f633340c016725695569b049 - md5: faa0ab222b9d12a52a8ebc655c9236f3 + url: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.3-h39f12f2_1.conda + sha256: d863b8257406918ffdc50ae65502f2b2d6cede29404d09a094f59509d6a0aaf1 + md5: b2553114a7f5e20ccd02378a77d836aa depends: - __osx >=11.0 license: 0BSD - size: 98836 - timestamp: 1733321533638 + size: 99129 + timestamp: 1733407496073 - kind: conda name: liblzma version: 5.6.3 - build: h86ecc28_0 + build: h86ecc28_1 + build_number: 1 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.3-h86ecc28_0.conda - sha256: 004785e427d255da8cf713b4722f8330bf496ce6fc665a0b21d007d377ffee5f - md5: 83d366f7bf01fc2d7781b4cc113fc9d3 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.3-h86ecc28_1.conda + sha256: d1cce0b7d62d1e54e2164d3e0667ee808efc6c3870256e5b47a150cd0bf46824 + md5: eb08b903681f9f2432c320e8ed626723 depends: - libgcc >=13 license: 0BSD - size: 124115 - timestamp: 1733323693681 + size: 124138 + timestamp: 1733409137214 - kind: conda name: liblzma version: 5.6.3 - build: hb9d3cd8_0 + build: hb9d3cd8_1 + build_number: 1 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.3-hb9d3cd8_0.conda - sha256: 31637db828ec67ab8697de324e6074af5a36cbeddc37202d8d31e2fb397619e8 - md5: 137c535dddd880f844f33ed91b8abdba + url: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.3-hb9d3cd8_1.conda + sha256: e6e425252f3839e2756e4af1ea2074dffd3396c161bf460629f9dfd6a65f15c6 + md5: 2ecf2f1c7e4e21fcfe6423a51a992d84 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 license: 0BSD - size: 111223 - timestamp: 1733321312512 -- kind: conda - name: liblzma-devel - version: 5.6.3 - build: h39f12f2_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-devel-5.6.3-h39f12f2_0.conda - sha256: 2e5a9fb298bd8c01ceed8db386bfb0a125d74cef2c5ee615b4f9695b2808f7e0 - md5: 89955d2470cbacea3d5e069d67c94f44 - depends: - - __osx >=11.0 - - liblzma 5.6.3 h39f12f2_0 - license: 0BSD - size: 112941 - timestamp: 1733321552604 + size: 111132 + timestamp: 1733407410083 - kind: conda name: liblzma-devel version: 5.6.3 - build: h86ecc28_0 + build: h86ecc28_1 + build_number: 1 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-devel-5.6.3-h86ecc28_0.conda - sha256: 740b3f1ffa57ad5f0eec0c868e23d4e1f811871c6685a04af57f1943cde1a575 - md5: 27995ae8bc93eeb949315655daa19d3c + url: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-devel-5.6.3-h86ecc28_1.conda + sha256: 6e9ca2041f89c7df63d7ceba31a46b8f9ab28e88ce39f9f5c30b1fd0c629111c + md5: ca1606232471b17724ab99904cf90195 depends: - libgcc >=13 - - liblzma 5.6.3 h86ecc28_0 + - liblzma 5.6.3 h86ecc28_1 license: 0BSD - size: 376767 - timestamp: 1733323860026 + size: 376914 + timestamp: 1733409269260 - kind: conda name: liblzma-devel version: 5.6.3 - build: hb9d3cd8_0 + build: hb9d3cd8_1 + build_number: 1 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/liblzma-devel-5.6.3-hb9d3cd8_0.conda - sha256: 98020d4b4cc6c728d2e6dc1174cb2548cf03ce5098cd17c37b32f06e896a943a - md5: 7069f4de645461447f1ab7736c94db26 + url: https://conda.anaconda.org/conda-forge/linux-64/liblzma-devel-5.6.3-hb9d3cd8_1.conda + sha256: ca17f037a0a7137874597866a171166677e4812a9a8a853007f0f582e3ff6d1d + md5: cc4687e1814ed459f3bd6d8e05251ab2 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - - liblzma 5.6.3 hb9d3cd8_0 + - liblzma 5.6.3 hb9d3cd8_1 license: 0BSD - size: 375452 - timestamp: 1733321322415 + size: 376794 + timestamp: 1733407421190 - kind: conda name: libmad version: 0.15.1b @@ -6552,61 +6528,58 @@ packages: - kind: conda name: libparquet version: 18.1.0 - build: h23a96eb_2_cpu - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-h23a96eb_2_cpu.conda - sha256: 83b8fa4a90e214fcd6018f890947666f055f79563fff2b7c3d5f37d894f3a000 - md5: ce205782960a580fa43cfcccca22ad8d + build: h3a603ae_3_cpu + build_number: 3 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-h3a603ae_3_cpu.conda + sha256: 89f40f0f4e706392b082ee4910fedd2442b57abbf6cbbfb16a00b5aa89beb41d + md5: 78d2f729e26788a3660cee9906f440e7 depends: - - libarrow 18.1.0 hc7b0e1d_2_cpu - - libgcc >=13 - - libstdcxx >=13 + - __osx >=11.0 + - libarrow 18.1.0 h5affd47_3_cpu + - libcxx >=18 - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 - license_family: APACHE - size: 1115906 - timestamp: 1732950250848 + size: 873697 + timestamp: 1733452286970 - kind: conda name: libparquet version: 18.1.0 - build: h5168bdf_2_cpu - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-h5168bdf_2_cpu.conda - sha256: 454487d113974b923b4214a65aab780fd90c4914390d0b1f4640b1bf60537bff - md5: f995df7ee206617a3e858fd932d7bd2d + build: h553aec1_3_cpu + build_number: 3 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-h553aec1_3_cpu.conda + sha256: 965940abe9e49ae7b3adee19bf458f866a0ef35a3cf29d627b2d52c77a96a96b + md5: 46c6783e8b46449a9baabef57c69f30a depends: - - __osx >=11.0 - - libarrow 18.1.0 h654e1bb_2_cpu - - libcxx >=18 + - libarrow 18.1.0 hb63acf4_3_cpu + - libgcc >=13 + - libstdcxx >=13 - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 - license_family: APACHE - size: 872333 - timestamp: 1732949558028 + size: 1116941 + timestamp: 1733452997475 - kind: conda name: libparquet version: 18.1.0 - build: h6bd9018_1_cpu - build_number: 1 + build: hbdb145b_3_cpu + build_number: 3 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-h6bd9018_1_cpu.conda - sha256: 0df119f4c1a2387d910e132c670b29ee5b29dd79384549de6f1a43067515c8ba - md5: 1054909202f86e38bbbb7ca1131b8471 + url: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-hbdb145b_3_cpu.conda + sha256: 034086f71824a3ea77a9bd21029fd4c4ef25b3a95fc77933704b8b49ff55c7f3 + md5: cb249762e1e65941b559d436c60e520d depends: - __glibc >=2.17,<3.0.a0 - - libarrow 18.1.0 he15abb1_1_cpu + - libarrow 18.1.0 hcf3f2e3_3_cpu - libgcc >=13 - libstdcxx >=13 - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 - license_family: APACHE - size: 1203523 - timestamp: 1732863665743 + size: 1204740 + timestamp: 1733454014411 - kind: conda name: libpng version: 1.6.44 @@ -7119,86 +7092,70 @@ packages: - kind: conda name: libtiff version: 4.7.0 - build: he137b08_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-he137b08_1.conda - sha256: 9890121db85f6ef463fe12eb04ef1471176e3ef3b5e2d62e8d6dac713df00df4 - md5: 63872517c98aa305da58a757c443698e + build: ha962b0a_2 + build_number: 2 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-ha962b0a_2.conda + sha256: d9e6835fd189b85eb90dbfdcc51f5375decbf5bb53130042f49bbd6bfb0b24be + md5: 8e14b5225c593f099a21971568e6d7b4 depends: - - __glibc >=2.17,<3.0.a0 + - __osx >=11.0 - lerc >=4.0.0,<5.0a0 + - libcxx >=18 - libdeflate >=1.22,<1.23.0a0 - - libgcc >=13 - libjpeg-turbo >=3.0.0,<4.0a0 - - libstdcxx >=13 + - liblzma >=5.6.3,<6.0a0 - libwebp-base >=1.4.0,<2.0a0 - libzlib >=1.3.1,<2.0a0 - - xz >=5.2.6,<6.0a0 - zstd >=1.5.6,<1.6.0a0 license: HPND - size: 428156 - timestamp: 1728232228989 + size: 370387 + timestamp: 1733443310502 - kind: conda name: libtiff version: 4.7.0 - build: hec21d91_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.0-hec21d91_1.conda - sha256: 14ecb9e129b1b5ffd6d4bee48de95cd2cd0973c712e1b965d3ef977cca23936d - md5: 1f80061f5ba6956fcdc381f34618cd8d + build: hc4654cb_2 + build_number: 2 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hc4654cb_2.conda + sha256: 18653b4a5c73e19c5e86ff72dab9bf59f5cc43d7f404a6be705d152dfd5e0660 + md5: be54fb40ea32e8fe9dbaa94d4528b57e depends: + - __glibc >=2.17,<3.0.a0 - lerc >=4.0.0,<5.0a0 - libdeflate >=1.22,<1.23.0a0 - libgcc >=13 - libjpeg-turbo >=3.0.0,<4.0a0 + - liblzma >=5.6.3,<6.0a0 - libstdcxx >=13 - libwebp-base >=1.4.0,<2.0a0 - libzlib >=1.3.1,<2.0a0 - - xz >=5.2.6,<6.0a0 - zstd >=1.5.6,<1.6.0a0 license: HPND - size: 464938 - timestamp: 1728232266969 + size: 429018 + timestamp: 1733443013288 - kind: conda name: libtiff version: 4.7.0 - build: hfce79cd_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-hfce79cd_1.conda - sha256: 97ba24c74750b6e731b3fe0d2a751cda6148b4937d2cc3f72d43bf7b3885c39d - md5: b9abf45f7c64caf3303725f1aa0e9a4d + build: hca96517_2 + build_number: 2 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.0-hca96517_2.conda + sha256: d736d840d1f2446234195adfcb51b132c85797730b6f42ebf058d350fa9d20e8 + md5: 278dcef6d1ea28c04109c3f5dea126cb depends: - - __osx >=11.0 - lerc >=4.0.0,<5.0a0 - - libcxx >=17 - libdeflate >=1.22,<1.23.0a0 + - libgcc >=13 - libjpeg-turbo >=3.0.0,<4.0a0 + - liblzma >=5.6.3,<6.0a0 + - libstdcxx >=13 - libwebp-base >=1.4.0,<2.0a0 - libzlib >=1.3.1,<2.0a0 - - xz >=5.2.6,<6.0a0 - zstd >=1.5.6,<1.6.0a0 license: HPND - size: 366323 - timestamp: 1728232400072 -- kind: conda - name: libutf8proc - version: 2.8.0 - build: hf23e847_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.8.0-hf23e847_1.conda - sha256: 104cf5b427fc914fec63e55f685a39480abeb4beb34bdbc77dea084c8f5a55cb - md5: b1aa0faa95017bca11369bd080487ec4 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - license: MIT - license_family: MIT - size: 80852 - timestamp: 1732829699583 + size: 464857 + timestamp: 1733443105529 - kind: conda name: libutf8proc version: 2.9.0 @@ -7229,6 +7186,22 @@ packages: license_family: MIT size: 81526 timestamp: 1732868466862 +- kind: conda + name: libutf8proc + version: 2.9.0 + build: hb9d3cd8_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.9.0-hb9d3cd8_1.conda + sha256: 9794e6388e780c3310d46f773bbc924d4053375c3fcdb07a704b57f4616db928 + md5: 1e936bd23d737aac62a18e9a1e7f8b18 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + license: MIT + license_family: MIT + size: 81500 + timestamp: 1732868419835 - kind: conda name: libuuid version: 2.38.1 @@ -7476,58 +7449,61 @@ packages: - kind: conda name: libxml2 version: 2.13.5 - build: hb346dea_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.5-hb346dea_0.conda - sha256: 8c9d6a3a421ac5bf965af495d1b0a08c6fb2245ba156550bc064a7b4f8fc7bd8 - md5: c81a9f1118541aaa418ccb22190c817e + build: h178c5d8_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.5-h178c5d8_1.conda + sha256: d7af3f25a4cece170502acd38f2dafbea4521f373f46dcb28a37fbe6ac2da544 + md5: 3dc3cff0eca1640a6acbbfab2f78139e depends: - - __glibc >=2.17,<3.0.a0 + - __osx >=11.0 - icu >=75.1,<76.0a0 - - libgcc >=13 - libiconv >=1.17,<2.0a0 + - liblzma >=5.6.3,<6.0a0 - libzlib >=1.3.1,<2.0a0 - - xz >=5.2.6,<6.0a0 license: MIT license_family: MIT - size: 689626 - timestamp: 1731489608971 + size: 582898 + timestamp: 1733443841584 - kind: conda name: libxml2 version: 2.13.5 - build: hbbdcc80_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.5-hbbdcc80_0.conda - sha256: 936de9c0e91cb6f178c48ea14313cf6c79bdb1f474c785c117c41492b0407a98 - md5: 967d4a9dadd710415ee008d862a07c99 + build: h2e0c361_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.5-h2e0c361_1.conda + sha256: dc0e86d35a836af6e99d18f50c6551fc64c53ed3a3da5a9fea90e78763cf14b4 + md5: 63410f85031930cde371dfe0ee89109a depends: - - __osx >=11.0 - icu >=75.1,<76.0a0 + - libgcc >=13 - libiconv >=1.17,<2.0a0 + - liblzma >=5.6.3,<6.0a0 - libzlib >=1.3.1,<2.0a0 - - xz >=5.2.6,<6.0a0 license: MIT license_family: MIT - size: 583082 - timestamp: 1731489765442 + size: 732155 + timestamp: 1733443825814 - kind: conda name: libxml2 version: 2.13.5 - build: hf4efe5d_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.5-hf4efe5d_0.conda - sha256: bb5033bd79371e82886f9e83ef86babae8e0f50b77d7f9302210345b9205d939 - md5: 5650ac8a6ed680c032bdabe40ad19ee0 + build: h8d12d68_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.5-h8d12d68_1.conda + sha256: c3b05bdc40d27a9249f0bb60f3f71718f94104b8bcd200163a6c9d4ade7aa052 + md5: 1a21e49e190d1ffe58531a81b6e400e1 depends: + - __glibc >=2.17,<3.0.a0 - icu >=75.1,<76.0a0 - libgcc >=13 - libiconv >=1.17,<2.0a0 + - liblzma >=5.6.3,<6.0a0 - libzlib >=1.3.1,<2.0a0 - - xz >=5.2.6,<6.0a0 license: MIT license_family: MIT - size: 734453 - timestamp: 1731489860751 + size: 690589 + timestamp: 1733443667823 - kind: conda name: libzlib version: 1.3.1 @@ -7582,20 +7558,20 @@ packages: timestamp: 1727963148474 - kind: conda name: llvm-openmp - version: 19.1.4 + version: 19.1.5 build: hdb05f8b_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.4-hdb05f8b_0.conda - sha256: dfdcd8de37899d984326f9734b28f46f80b88c068e44c562933a8b3117f2401a - md5: 76ca179ec970bea6e275e2fa477c2d3c + url: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.5-hdb05f8b_0.conda + sha256: e7ba0d8b718925efdcf1309f5e776e3264cc172d3af8d4048b39627c50a1abc0 + md5: f2c2e187a1d2637d282e34dc92021a70 depends: - __osx >=11.0 constrains: - - openmp 19.1.4|19.1.4.* + - openmp 19.1.5|19.1.5.* license: Apache-2.0 WITH LLVM-exception license_family: APACHE - size: 281554 - timestamp: 1732102484807 + size: 281120 + timestamp: 1733376089600 - kind: conda name: lz4-c version: 1.9.4 @@ -7718,76 +7694,76 @@ packages: timestamp: 1733219945697 - kind: conda name: max - version: 24.6.0.dev2024120416 + version: 24.6.0.dev2024120616 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120416-release.conda - sha256: 956c006755158839ee6f8de7d91360cd1990024868d867482a62885241c9794f - md5: 09947b7aa3a3c35b413b7c0d118126e3 - depends: - - max-core ==24.6.0.dev2024120416 release - - max-python >=24.6.0.dev2024120416,<25.0a0 - - mojo-jupyter ==24.6.0.dev2024120416 release - - mblack ==24.6.0.dev2024120416 release + url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120616-release.conda + sha256: 2338e4ad8e940eee4cf31d6ccfb9605bc3aaa0e2331e3c0f40c1063a0d6f4c58 + md5: 562c33b920321a676acb3fc49c2ddb11 + depends: + - max-core ==24.6.0.dev2024120616 release + - max-python >=24.6.0.dev2024120616,<25.0a0 + - mojo-jupyter ==24.6.0.dev2024120616 release + - mblack ==24.6.0.dev2024120616 release license: LicenseRef-Modular-Proprietary - size: 9925 - timestamp: 1733332193356 + size: 9919 + timestamp: 1733502206770 - kind: conda name: max-core - version: 24.6.0.dev2024120416 + version: 24.6.0.dev2024120616 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120416-release.conda - sha256: e73a6e3abebc4516d56d39b85d10e98883885218273b2ef19c7cfe4d3df7a4ef - md5: 43a976936171480fe7dbc2fed1224312 + url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120616-release.conda + sha256: 626f40a00b28c6958272a368b31944d9d62bd57a931910b1e4520d7501c57b61 + md5: 88e589273bf2ae77f80f879adacd234a depends: - - mblack ==24.6.0.dev2024120416 release + - mblack ==24.6.0.dev2024120616 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 245904359 - timestamp: 1733332193354 + size: 247418489 + timestamp: 1733502146971 - kind: conda name: max-core - version: 24.6.0.dev2024120416 + version: 24.6.0.dev2024120616 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120416-release.conda - sha256: e32ebc6b7f589881f14caec8df02b65c40839a0210ef6a87d85243b61b5fc7d8 - md5: 15cac805514c6a381a9a50ee3a86de25 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120616-release.conda + sha256: af5fcd915dd10f9a72d936fee1b4a32127725a072fb6df41b7a3f43997f3ac3b + md5: 5243c455575512a6061067e3b5d67e0f depends: - - mblack ==24.6.0.dev2024120416 release + - mblack ==24.6.0.dev2024120616 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 249618446 - timestamp: 1733332472125 + size: 251333959 + timestamp: 1733502206769 - kind: conda name: max-core - version: 24.6.0.dev2024120416 + version: 24.6.0.dev2024120616 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120416-release.conda - sha256: bc27468be85cc7fd207ec44a4a0b1b11aa54792737a20fcf8355a2f2e7a215d5 - md5: c27c6f67be3abffbf559bfd50852b493 + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120616-release.conda + sha256: 9f051d29fdebf2c33eaa96659e75b06bf2befb17ac6992dc526b71eb4b959fc2 + md5: 99f131bbf681d02fe75d5f9e7dc0ab57 depends: - - mblack ==24.6.0.dev2024120416 release + - mblack ==24.6.0.dev2024120616 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 210212276 - timestamp: 1733332258535 + size: 211890615 + timestamp: 1733502249826 - kind: conda name: max-python - version: 24.6.0.dev2024120416 + version: 24.6.0.dev2024120616 build: 3.12release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120416-3.12release.conda - sha256: 48e30a62cdee247e87b9f07d465ae91c75d47f292eeba5d2ca9c2d86d30e8875 - md5: 78af7733b4858c1bd882279a45e98795 + url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120616-3.12release.conda + sha256: 619cfdba895fe1062b94e9e04109d5c321995c14ce80dd695937fedaeed1430b + md5: aa4c20f7f7f821d9b736c319b9b9d89a depends: - - max-core ==24.6.0.dev2024120416 release + - max-core ==24.6.0.dev2024120616 release - python 3.12.* - pillow - fastapi @@ -7809,18 +7785,18 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 122878721 - timestamp: 1733332193368 + size: 123619079 + timestamp: 1733502146987 - kind: conda name: max-python - version: 24.6.0.dev2024120416 + version: 24.6.0.dev2024120616 build: 3.12release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120416-3.12release.conda - sha256: ffff206620d5bd2cd90830467d4234e3a606143811006e67203899a9b8512938 - md5: 55ff43da6401cdd96073ae044b428afd + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120616-3.12release.conda + sha256: 1703b8f5e847917b04cc353ea6ce6fdfb4f0e5b053515b0e481b0bed93117a4f + md5: df25189682c30a5259b1ffada686cef2 depends: - - max-core ==24.6.0.dev2024120416 release + - max-core ==24.6.0.dev2024120616 release - python 3.12.* - pillow - fastapi @@ -7842,18 +7818,18 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 126526187 - timestamp: 1733332472138 + size: 127361426 + timestamp: 1733502206780 - kind: conda name: max-python - version: 24.6.0.dev2024120416 + version: 24.6.0.dev2024120616 build: 3.12release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120416-3.12release.conda - sha256: e5aaaba32cd939f3c6ba27b916851174eec6c3913a8e5ebd00b5590f026a2e16 - md5: b84b205dbce4660cdea5b0e3cda227e9 + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120616-3.12release.conda + sha256: 55e016fd1747baa8f15e358d8fe16953282a08b60c64ad6a98cbfdf0229f9d1b + md5: f03ead2bca51c2cd060703fe64ee40da depends: - - max-core ==24.6.0.dev2024120416 release + - max-core ==24.6.0.dev2024120616 release - python 3.12.* - pillow - fastapi @@ -7875,17 +7851,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 111629688 - timestamp: 1733332258538 + size: 112339857 + timestamp: 1733502249829 - kind: conda name: mblack - version: 24.6.0.dev2024120416 + version: 24.6.0.dev2024120616 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120416-release.conda - sha256: 374f5d8dfed89bf7098a0f7d8c6fd40c9dab11c4d760a03e05835e82f1b00cb9 - md5: 85c700946ce4a5ce8d11f5ee66b477cf + url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120616-release.conda + sha256: ccab714a4e70220ff559e9d0e56232964981196851bf77eeac1c3bf53ab0beb2 + md5: dec7dbfe11abd34b171d290d38adea24 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -7895,8 +7871,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130641 - timestamp: 1733332193362 + size: 130704 + timestamp: 1733502206776 - kind: conda name: mdurl version: 0.1.2 @@ -7915,21 +7891,21 @@ packages: timestamp: 1733255681319 - kind: conda name: mojo-jupyter - version: 24.6.0.dev2024120416 + version: 24.6.0.dev2024120616 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120416-release.conda - sha256: 181250d3bbe6523e4ac02e40004b6e77c04cfee2d9512dbeb584f51351df9448 - md5: 411a1d159867c56043991824d1ee88d9 + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120616-release.conda + sha256: d886857cf3c3a53c8a44433bec9b60fc90f9e43b169319bca36ca9daf0369901 + md5: 1420c233cedc5e554c728d5f8b2b1657 depends: - - max-core ==24.6.0.dev2024120416 release + - max-core ==24.6.0.dev2024120616 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22946 - timestamp: 1733332193363 + size: 11371 + timestamp: 1733502206776 - kind: conda name: mpg123 version: 1.32.9 @@ -8959,58 +8935,55 @@ packages: timestamp: 1733327434163 - kind: conda name: propcache - version: 0.2.0 - build: py312h024a12e_2 - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.0-py312h024a12e_2.conda - sha256: 0f3a04675c6c473398f0aaa95c259e0a085d5ec106b4fa89a7efeb7cc73d5dd2 - md5: 6693e523bc43c38508efe14ab3374f0c + version: 0.2.1 + build: py312h66e93f0_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.1-py312h66e93f0_0.conda + sha256: 5771311fb5ded614ca349c92579a0b752af55a310f40b71fc533e20625965391 + md5: 55d5742a696d7da1c1262e99b6217ceb depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 license: Apache-2.0 license_family: APACHE - size: 47796 - timestamp: 1728545963127 + size: 52747 + timestamp: 1733391916349 - kind: conda name: propcache - version: 0.2.0 - build: py312h66e93f0_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.0-py312h66e93f0_2.conda - sha256: be7aa0056680dd6e528b7992169a20dd525b94f62d37c8ba0fbf69bd4e8df57d - md5: 2c6c0c68f310bc33972e7c83264d7786 + version: 0.2.1 + build: py312hb2c0f52_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.2.1-py312hb2c0f52_0.conda + sha256: c7f62c11ed929ccf1f3d4a1e200e28be01e8d0e0786bf8f76c5893f2ea681e1b + md5: 50ab8953e7ff1333a4a47cda32e68123 depends: - - __glibc >=2.17,<3.0.a0 - libgcc >=13 - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 license: Apache-2.0 license_family: APACHE - size: 53498 - timestamp: 1728545927816 + size: 52484 + timestamp: 1733391993461 - kind: conda name: propcache - version: 0.2.0 - build: py312hb2c0f52_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.2.0-py312hb2c0f52_2.conda - sha256: 50dad7604b6c20440baf081700b5d6829097121e65f34fd1a15508b20fbecc07 - md5: 8a258196d6f79ad32d3ea4dd4572f721 + version: 0.2.1 + build: py312hea69d52_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.1-py312hea69d52_0.conda + sha256: f8c266c494aa1e4cfb8bf0b6fca060044b2f3d65afe4c5062ebeea382e77aa6d + md5: c84e3dd97fe25a17322c4a0f670c6750 depends: - - libgcc >=13 + - __osx >=11.0 - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 license: Apache-2.0 license_family: APACHE - size: 53507 - timestamp: 1728546155066 + size: 48225 + timestamp: 1733392308901 - kind: conda name: protobuf version: 5.28.2 @@ -9569,91 +9542,94 @@ packages: timestamp: 1733217331982 - kind: conda name: python - version: 3.12.7 - build: h5d932e8_0_cpython + version: 3.12.8 + build: h1683364_1_cpython + build_number: 1 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.7-h5d932e8_0_cpython.conda - sha256: 25570873d92d4d9490c6db780cc85e6c28bd3ff61dc1ece79f602cf82bc73bc1 - md5: e6cab21bb5787270388939cf41cc5f43 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.8-h1683364_1_cpython.conda + sha256: 85573582d5b0f79923fed0a8365d3d74d21eee9f0a5fa1b9345f191e006363ab + md5: 09ec612ea05370989eaa3d81abf0f369 depends: - bzip2 >=1.0.8,<2.0a0 - ld_impl_linux-aarch64 >=2.36.1 - - libexpat >=2.6.3,<3.0a0 + - libexpat >=2.6.4,<3.0a0 - libffi >=3.4,<4.0a0 - libgcc >=13 + - liblzma >=5.6.3,<6.0a0 - libnsl >=2.0.1,<2.1.0a0 - - libsqlite >=3.46.1,<4.0a0 + - libsqlite >=3.47.0,<4.0a0 - libuuid >=2.38.1,<3.0a0 - libxcrypt >=4.4.36 - libzlib >=1.3.1,<2.0a0 - ncurses >=6.5,<7.0a0 - - openssl >=3.3.2,<4.0a0 + - openssl >=3.4.0,<4.0a0 - readline >=8.2,<9.0a0 - tk >=8.6.13,<8.7.0a0 - tzdata - - xz >=5.2.6,<6.0a0 constrains: - python_abi 3.12.* *_cp312 license: Python-2.0 - size: 13762126 - timestamp: 1728057461028 + size: 13760816 + timestamp: 1733407890896 - kind: conda name: python - version: 3.12.7 - build: h739c21a_0_cpython - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.7-h739c21a_0_cpython.conda - sha256: 45d7ca2074aa92594bd2f91a9003b338cc1df8a46b9492b7fc8167110783c3ef - md5: e0d82e57ebb456077565e6d82cd4a323 + version: 3.12.8 + build: h9e4cc4f_1_cpython + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.8-h9e4cc4f_1_cpython.conda + sha256: 3f0e0518c992d8ccfe62b189125721309836fe48a010dc424240583e157f9ff0 + md5: 7fd2fd79436d9b473812f14e86746844 depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 - bzip2 >=1.0.8,<2.0a0 - - libexpat >=2.6.3,<3.0a0 + - ld_impl_linux-64 >=2.36.1 + - libexpat >=2.6.4,<3.0a0 - libffi >=3.4,<4.0a0 - - libsqlite >=3.46.1,<4.0a0 + - libgcc >=13 + - liblzma >=5.6.3,<6.0a0 + - libnsl >=2.0.1,<2.1.0a0 + - libsqlite >=3.47.0,<4.0a0 + - libuuid >=2.38.1,<3.0a0 + - libxcrypt >=4.4.36 - libzlib >=1.3.1,<2.0a0 - ncurses >=6.5,<7.0a0 - - openssl >=3.3.2,<4.0a0 + - openssl >=3.4.0,<4.0a0 - readline >=8.2,<9.0a0 - tk >=8.6.13,<8.7.0a0 - tzdata - - xz >=5.2.6,<6.0a0 constrains: - python_abi 3.12.* *_cp312 license: Python-2.0 - size: 12975439 - timestamp: 1728057819519 + size: 31565686 + timestamp: 1733410597922 - kind: conda name: python - version: 3.12.7 - build: hc5c86c4_0_cpython - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.7-hc5c86c4_0_cpython.conda - sha256: 674be31ff152d9f0e0fe16959a45e3803a730fc4f54d87df6a9ac4e6a698c41d - md5: 0515111a9cdf69f83278f7c197db9807 + version: 3.12.8 + build: hc22306f_1_cpython + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.8-hc22306f_1_cpython.conda + sha256: 7586a711b1b08a9df8864e26efdc06980bdfb0e18d5ac4651d0fee30a8d3e3a0 + md5: 54ca5b5d92ef3a3ba61e195ee882a518 depends: - - __glibc >=2.17,<3.0.a0 + - __osx >=11.0 - bzip2 >=1.0.8,<2.0a0 - - ld_impl_linux-64 >=2.36.1 - - libexpat >=2.6.3,<3.0a0 + - libexpat >=2.6.4,<3.0a0 - libffi >=3.4,<4.0a0 - - libgcc >=13 - - libnsl >=2.0.1,<2.1.0a0 - - libsqlite >=3.46.1,<4.0a0 - - libuuid >=2.38.1,<3.0a0 - - libxcrypt >=4.4.36 + - liblzma >=5.6.3,<6.0a0 + - libsqlite >=3.47.0,<4.0a0 - libzlib >=1.3.1,<2.0a0 - ncurses >=6.5,<7.0a0 - - openssl >=3.3.2,<4.0a0 + - openssl >=3.4.0,<4.0a0 - readline >=8.2,<9.0a0 - tk >=8.6.13,<8.7.0a0 - tzdata - - xz >=5.2.6,<6.0a0 constrains: - python_abi 3.12.* *_cp312 license: Python-2.0 - size: 31574780 - timestamp: 1728059777603 + size: 12998673 + timestamp: 1733408900971 - kind: conda name: python-dateutil version: 2.9.0.post0 @@ -10180,21 +10156,22 @@ packages: - kind: conda name: rich version: 13.9.4 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_0.conda - sha256: c009488fc07fd5557434c9c1ad32ab1dd50241d6a766e4b2b4125cd6498585a8 - md5: bcf8cc8924b5d20ead3d122130b8320b + url: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_1.conda + sha256: 06a760c5ae572e72e865d5a87e9fe3cc171e1a9c996e63daf3db52ff1a0b4457 + md5: 7aed65d4ff222bfb7335997aa40b7da5 depends: - markdown-it-py >=2.2.0 - pygments >=2.13.0,<3.0.0 - - python >=3.8 + - python >=3.9 - typing_extensions >=4.0.0,<5.0.0 license: MIT license_family: MIT - size: 185481 - timestamp: 1730592349978 + size: 185646 + timestamp: 1733342347277 - kind: conda name: s2n version: 1.5.9 @@ -10553,65 +10530,68 @@ packages: timestamp: 1733301007770 - kind: conda name: six - version: 1.16.0 - build: pyhd8ed1ab_1 - build_number: 1 + version: 1.17.0 + build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyhd8ed1ab_1.conda - sha256: 761b96fe7bea080b9c35dd2f87f788eb94b61d462645bd16f361e80ae0ff017c - md5: a516da6cfe1ec0a55e49737f017b4965 + url: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + sha256: 41db0180680cc67c3fa76544ffd48d6a5679d96f4b71d7498a759e94edc9a2db + md5: a451d576819089b0d672f18768be0f65 depends: - python >=3.9 license: MIT license_family: MIT size: 16385 - timestamp: 1733216901349 + timestamp: 1733381032766 - kind: conda name: snappy version: 1.2.1 - build: h1088aeb_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-h1088aeb_0.conda - sha256: 79f5d0a9098acf2ed16e6ecc4c11472b50ccf59feea37a7d585fd43888d7e41f - md5: e4ed5b015f525b56f95c26d85a4ea208 + build: h8bd8927_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-h8bd8927_1.conda + sha256: ec91e86eeb2c6bbf09d51351b851e945185d70661d2ada67204c9a6419d282d3 + md5: 3b3e64af585eadfb52bb90b553db5edf depends: - - libgcc-ng >=12 - - libstdcxx-ng >=12 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 license: BSD-3-Clause license_family: BSD - size: 42888 - timestamp: 1720003817527 + size: 42739 + timestamp: 1733501881851 - kind: conda name: snappy version: 1.2.1 - build: ha2e4443_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-ha2e4443_0.conda - sha256: dc7c8e0e8c3e8702aae81c52d940bfaabe756953ee51b1f1757e891bab62cf7f - md5: 6b7dcc7349efd123d493d2dbe85a045f + build: h98b9ce2_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-h98b9ce2_1.conda + sha256: 4242f95b215127a006eb664fe26ed5a82df87e90cbdbc7ce7ff4971f0720997f + md5: ded86dee325290da2967a3fea3800eb5 depends: - - libgcc-ng >=12 - - libstdcxx-ng >=12 + - __osx >=11.0 + - libcxx >=18 license: BSD-3-Clause license_family: BSD - size: 42465 - timestamp: 1720003704360 + size: 35857 + timestamp: 1733502172664 - kind: conda name: snappy version: 1.2.1 - build: hd02b534_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-hd02b534_0.conda - sha256: cb7a9440241c6092e0f1c795fdca149c4767023e783eaf9cfebc501f906b4897 - md5: 69d0f9694f3294418ee935da3d5f7272 + build: hd4fb6f5_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-hd4fb6f5_1.conda + sha256: c4a07ae5def8d55128f25a567a296ef9d7bf99a3bc79d46bd5160c076a5f50af + md5: 2fcc6cd1e5550deb509073fd2e6693e1 depends: - - __osx >=11.0 - - libcxx >=16 + - libgcc >=13 + - libstdcxx >=13 license: BSD-3-Clause license_family: BSD - size: 35708 - timestamp: 1720003794374 + size: 43032 + timestamp: 1733501964775 - kind: conda name: sniffio version: 1.3.1 @@ -10649,20 +10629,21 @@ packages: - kind: conda name: starlette version: 0.41.3 - build: pyh7900ff3_0 + build: pyha770c72_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyh7900ff3_0.conda - sha256: 33986032cb0515f7e9f6647d07006b7dc49b3f373b73d5a1826e6979c661b27a - md5: 0889c5a3e95d8c382cff7556757aedb0 + url: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyha770c72_1.conda + sha256: b74fc76107487eb26624c01fc55bfab7eed03ae82e003333c86d8a1eeac53672 + md5: 0207dac04ae2200701fab697f0aaaac4 depends: - anyio >=3.4.0,<5 - python >=3.9 - typing_extensions >=3.10.0 license: BSD-3-Clause license_family: BSD - size: 59069 - timestamp: 1732037161800 + size: 58838 + timestamp: 1733344472634 - kind: conda name: svt-av1 version: 2.3.0 @@ -10888,18 +10869,19 @@ packages: - kind: conda name: traitlets version: 5.14.3 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda - sha256: 8a64fa0f19022828513667c2c7176cfd125001f3f4b9bc00d33732e627dd2592 - md5: 3df84416a021220d8b5700c613af2dc5 + url: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + sha256: f39a5620c6e8e9e98357507262a7869de2ae8cc07da8b7f84e517c9fd6c2b959 + md5: 019a7385be9af33791c989871317e1ed depends: - - python >=3.8 + - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 110187 - timestamp: 1713535244513 + size: 110051 + timestamp: 1733367480074 - kind: conda name: transformers version: 4.46.3 @@ -10928,58 +10910,58 @@ packages: timestamp: 1731981383171 - kind: conda name: typer - version: 0.15.0 + version: 0.15.1 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.0-pyhd8ed1ab_0.conda - sha256: 90503b2a518434fb554d621cc4e1c533dc524ef1c0f63fde39fdf4328163a0c8 - md5: cf9393f5733c7277b1a5f79145f8485b + url: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda + sha256: ef695490e895c2ad552c77ec497b899b09fd4ad4ab07edcf5649f5994cf92a35 + md5: 170a0398946d8f5b454e592672b6fc20 depends: - python >=3.9 - - typer-slim-standard 0.15.0 hd8ed1ab_0 + - typer-slim-standard 0.15.1 hd8ed1ab_0 license: MIT license_family: MIT - size: 56455 - timestamp: 1733279871129 + size: 56175 + timestamp: 1733408582623 - kind: conda name: typer-slim - version: 0.15.0 + version: 0.15.1 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.0-pyhd8ed1ab_0.conda - sha256: f6a85917292aaea0577792090ac74dbdb0280a656934746f715bfa9feaa9b2dc - md5: 629fef89115de5a907fb9765cdd45b26 + url: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda + sha256: d4965516f35e0805199de6596c4ac76c4ad3d6b012be35e532102f9e53ecb860 + md5: 0218b16f5a1dd569e575a7a6415489db depends: - click >=8.0.0 - python >=3.9 - typing_extensions >=3.7.4.3 constrains: - - typer >=0.15.0,<0.15.1.0a0 - - shellingham >=1.3.0 - rich >=10.11.0 + - typer >=0.15.1,<0.15.2.0a0 + - shellingham >=1.3.0 license: MIT license_family: MIT - size: 43480 - timestamp: 1733279858535 + size: 43592 + timestamp: 1733408569554 - kind: conda name: typer-slim-standard - version: 0.15.0 + version: 0.15.1 build: hd8ed1ab_0 subdir: noarch noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.0-hd8ed1ab_0.conda - sha256: df52ddd24439aff384a82d00a751947b12127ab571f4aa674a1053c703ce8ed0 - md5: a4746fc9efbff02c1a288d8fcd8ffba9 + url: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda + sha256: f31c56fe98315da8b9ce848256c17e0b9f87896b41a6ccf0c9cc74644dcef20f + md5: 4e603c43bfdfc7b533be087c3e070cc9 depends: - rich - shellingham - - typer-slim 0.15.0 pyhd8ed1ab_0 + - typer-slim 0.15.1 pyhd8ed1ab_0 license: MIT license_family: MIT - size: 50259 - timestamp: 1733279859017 + size: 49531 + timestamp: 1733408570063 - kind: conda name: typing-extensions version: 4.12.2 @@ -11631,141 +11613,102 @@ packages: - kind: conda name: xz version: 5.6.3 - build: h2dbfc1b_0 + build: h2dbfc1b_1 + build_number: 1 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-5.6.3-h2dbfc1b_0.conda - sha256: 65df445d131d1695c45a95d102b8ffaaed5a387b4f97e209ba7d8fa0b7599dec - md5: da081cb850e57b0a0a242bab9087fbeb + url: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-5.6.3-h2dbfc1b_1.conda + sha256: b497245803e6753a9d4fe4014eb71fcb94e3fe1c7be9cc54aefcd0d02266b67f + md5: 0ed81af8ecd07369f2ce2533fd904a25 depends: - libgcc >=13 - - liblzma 5.6.3 h86ecc28_0 - - liblzma-devel 5.6.3 h86ecc28_0 - - xz-gpl-tools 5.6.3 h2dbfc1b_0 - - xz-tools 5.6.3 h86ecc28_0 + - liblzma 5.6.3 h86ecc28_1 + - liblzma-devel 5.6.3 h86ecc28_1 + - xz-gpl-tools 5.6.3 h2dbfc1b_1 + - xz-tools 5.6.3 h86ecc28_1 license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later - size: 23448 - timestamp: 1733324353894 + size: 23495 + timestamp: 1733409682598 - kind: conda name: xz version: 5.6.3 - build: h9a6d368_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/xz-5.6.3-h9a6d368_0.conda - sha256: 25d515d97f9a147240933b7529dbe10f3ee1c87425cfa3d5faa5115f78ebfe70 - md5: 86674fa432df20be6feea4bd8fec0668 - depends: - - __osx >=11.0 - - liblzma 5.6.3 h39f12f2_0 - - liblzma-devel 5.6.3 h39f12f2_0 - - xz-gpl-tools 5.6.3 h9a6d368_0 - - xz-tools 5.6.3 h39f12f2_0 - license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later - size: 23570 - timestamp: 1733321627935 -- kind: conda - name: xz - version: 5.6.3 - build: hbcc6ac9_0 + build: hbcc6ac9_1 + build_number: 1 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/xz-5.6.3-hbcc6ac9_0.conda - sha256: 32cd43b293f1e6498831c499195afc5693c2bd604244a08fe8dd7107a20757d2 - md5: 504333561007fbf0af129f0cee4f5652 + url: https://conda.anaconda.org/conda-forge/linux-64/xz-5.6.3-hbcc6ac9_1.conda + sha256: 9cef529dcff25222427c9d90b9fc376888a59e138794b4336bbcd3331a5eea22 + md5: 62aae173382a8aae284726353c6a6a24 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - - liblzma 5.6.3 hb9d3cd8_0 - - liblzma-devel 5.6.3 hb9d3cd8_0 - - xz-gpl-tools 5.6.3 hbcc6ac9_0 - - xz-tools 5.6.3 hb9d3cd8_0 + - liblzma 5.6.3 hb9d3cd8_1 + - liblzma-devel 5.6.3 hb9d3cd8_1 + - xz-gpl-tools 5.6.3 hbcc6ac9_1 + - xz-tools 5.6.3 hb9d3cd8_1 license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later - size: 23435 - timestamp: 1733321352996 + size: 23477 + timestamp: 1733407455801 - kind: conda name: xz-gpl-tools version: 5.6.3 - build: h2dbfc1b_0 + build: h2dbfc1b_1 + build_number: 1 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-gpl-tools-5.6.3-h2dbfc1b_0.conda - sha256: d99ba29095b47891e3c63d04832768c3bfe4ad49e7bb4e163ca18962b8b3f5ca - md5: b0245c3aad4592510bb0c19212c1bded + url: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-gpl-tools-5.6.3-h2dbfc1b_1.conda + sha256: 025f53e2f269b55ab46a627afa47e7288e5199c9d6752ac079c91c22d2a18c07 + md5: 5987f52add76f6fe246fcb2a554ee206 depends: - libgcc >=13 - - liblzma 5.6.3 h86ecc28_0 - license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later - size: 33355 - timestamp: 1733324193303 -- kind: conda - name: xz-gpl-tools - version: 5.6.3 - build: h9a6d368_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/xz-gpl-tools-5.6.3-h9a6d368_0.conda - sha256: 44a0738b66573d0e7def712ef2aa98f628b17ee4d1034ffe71c3ff36f68d12dd - md5: 9e4519aef300966683764ccbbaa89da4 - depends: - - __osx >=11.0 - - liblzma 5.6.3 h39f12f2_0 + - liblzma 5.6.3 h86ecc28_1 license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later - size: 33343 - timestamp: 1733321610703 + size: 33218 + timestamp: 1733409548701 - kind: conda name: xz-gpl-tools version: 5.6.3 - build: hbcc6ac9_0 + build: hbcc6ac9_1 + build_number: 1 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/xz-gpl-tools-5.6.3-hbcc6ac9_0.conda - sha256: e9829eb1207239198f03eba61d17d0f946bbaa7602f7ee019efe72ccb26525db - md5: e4f1e59ca2971e8d0fdde0928c3f7b7f + url: https://conda.anaconda.org/conda-forge/linux-64/xz-gpl-tools-5.6.3-hbcc6ac9_1.conda + sha256: 4e104b7c75c2f26a96032a1c6cda51430da1dea318c74f9e3568902b2f5030e1 + md5: f529917bab7862aaad6867bf2ea47a99 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - - liblzma 5.6.3 hb9d3cd8_0 + - liblzma 5.6.3 hb9d3cd8_1 license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later - size: 33299 - timestamp: 1733321343126 + size: 33354 + timestamp: 1733407444641 - kind: conda name: xz-tools version: 5.6.3 - build: h39f12f2_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/xz-tools-5.6.3-h39f12f2_0.conda - sha256: be3c74ffe4a7a5852108dafe40ef41858ca1ea911c62b08b5e4dd8f641d23f22 - md5: 10855380caa384c8388b93ef29c7bd04 - depends: - - __osx >=11.0 - - liblzma 5.6.3 h39f12f2_0 - license: 0BSD AND LGPL-2.1-or-later - size: 81129 - timestamp: 1733321582233 -- kind: conda - name: xz-tools - version: 5.6.3 - build: h86ecc28_0 + build: h86ecc28_1 + build_number: 1 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-tools-5.6.3-h86ecc28_0.conda - sha256: 1d82a745cd60e674d18a0ce30ba13d72616261b1831530f480599ffc991c8476 - md5: 0136c7aa78b4d887c9fb6dbf39749778 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-tools-5.6.3-h86ecc28_1.conda + sha256: c4d136b10ba6d2afe133bc5bc2c6db6ec336793932b6ff1e166b5b1790abe1c5 + md5: 5d1bedf30d9b471b6f880351cec41bf0 depends: - libgcc >=13 - - liblzma 5.6.3 h86ecc28_0 + - liblzma 5.6.3 h86ecc28_1 license: 0BSD AND LGPL-2.1-or-later - size: 95353 - timestamp: 1733324033407 + size: 95924 + timestamp: 1733409414633 - kind: conda name: xz-tools version: 5.6.3 - build: hb9d3cd8_0 + build: hb9d3cd8_1 + build_number: 1 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/xz-tools-5.6.3-hb9d3cd8_0.conda - sha256: 7d03d4c0d18dbac0ebb9550890fddeb4d21a375709339a6bdedd0104bc4f4967 - md5: 40270c1e058fd1d31caee8bf2c68fc3a + url: https://conda.anaconda.org/conda-forge/linux-64/xz-tools-5.6.3-hb9d3cd8_1.conda + sha256: 6e80f838096345c35e8755b827814c083dd0274594006d6f76bff71bc969c3b8 + md5: de3f31a6eed01bc2b8c7dcad07ad9034 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - - liblzma 5.6.3 hb9d3cd8_0 + - liblzma 5.6.3 hb9d3cd8_1 license: 0BSD AND LGPL-2.1-or-later - size: 89832 - timestamp: 1733321333192 + size: 90354 + timestamp: 1733407433418 - kind: conda name: yaml version: 0.2.5 @@ -11811,64 +11754,64 @@ packages: timestamp: 1641347626613 - kind: conda name: yarl - version: 1.18.0 + version: 1.18.3 build: py312h66e93f0_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.18.0-py312h66e93f0_0.conda - sha256: 8a1e51303ecac64f10dd0ec548d472c49954c3e2f38023ef28899191580795e1 - md5: 601d2b19a54fd9346ba18c07c2516339 + url: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.18.3-py312h66e93f0_0.conda + sha256: a0d93c3bef723e384cff8a29a82a2c6b7a73b39328088f3a2d97c901f56e9a63 + md5: 91df2efaa08730416bec2a4502309275 depends: - __glibc >=2.17,<3.0.a0 - idna >=2.0 - libgcc >=13 - multidict >=4.0 - - propcache >=0.2.0 + - propcache >=0.2.1 - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 license: Apache-2.0 license_family: Apache - size: 151247 - timestamp: 1732220988648 + size: 151393 + timestamp: 1733428897813 - kind: conda name: yarl - version: 1.18.0 + version: 1.18.3 build: py312hb2c0f52_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.18.0-py312hb2c0f52_0.conda - sha256: 2ead24d5c50a2edd6348be5888677100b12b98921d1b6fe2f4cd980b0b85ffb2 - md5: 7dbbd950a7f762c2c8ab835932b12001 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.18.3-py312hb2c0f52_0.conda + sha256: 470b5b0f3ac89acd143095281167dc2ac1a56d4fa22e1794bd8f3b00bb604540 + md5: 0b3c640697bca798d0ab428f530ed24c depends: - idna >=2.0 - libgcc >=13 - multidict >=4.0 - - propcache >=0.2.0 + - propcache >=0.2.1 - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 license: Apache-2.0 license_family: Apache - size: 149149 - timestamp: 1732221057827 + size: 150004 + timestamp: 1733429056665 - kind: conda name: yarl - version: 1.18.0 + version: 1.18.3 build: py312hea69d52_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.18.0-py312hea69d52_0.conda - sha256: 4c90de12b1569f85126a12dbbb89f3dc10cee5838335b9c9993ead8bf1594cd3 - md5: f538709098e1642d50f4a01707e7dfdb + url: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.18.3-py312hea69d52_0.conda + sha256: 69c7863809e11bc90c0d935c16e7f151dcc925add08b3894f06059263a8cb9ba + md5: f32f9b16361866a62d6e061fcd7eb400 depends: - __osx >=11.0 - idna >=2.0 - multidict >=4.0 - - propcache >=0.2.0 + - propcache >=0.2.1 - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 license: Apache-2.0 license_family: Apache - size: 141452 - timestamp: 1732221306526 + size: 141556 + timestamp: 1733429104990 - kind: conda name: zeromq version: 4.3.5 diff --git a/examples/magic.lock b/examples/magic.lock index ed40f02b5d..cb06dce375 100644 --- a/examples/magic.lock +++ b/examples/magic.lock @@ -26,7 +26,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.1-hf42f96a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-hf42f96a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.6-h159bff8_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.449-h5558e3c_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-h5558e3c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.10.0-h113e628_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.13.0-h3cf044e_1.conda @@ -49,12 +49,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda - 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.5-pyhff2d567_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/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 - - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gflags-2.2.2-h5888daf_1005.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/glog-0.7.1-hbabe93e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda @@ -63,13 +63,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/httptools-0.6.4-py311h9ecbd09_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-7.0.2-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda @@ -77,10 +77,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_h5888daf_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-he15abb1_1_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-h5888daf_1_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-h5888daf_1_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-h5c8f2c3_1_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-hcf3f2e3_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-h36004a0_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-h36004a0_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-h56a123c_3_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-25_linux64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hb9d3cd8_2.conda @@ -105,12 +105,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-hd590300_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-25_linux64_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.3-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-devel-5.6.3-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.3-hb9d3cd8_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.28-pthreads_h94d23a6_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-h6bd9018_1_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-hbdb145b_3_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.44-hadc24fc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.2-h5b01275_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_1.conda @@ -120,24 +119,24 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-hc0a3c3a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libthrift-0.21.0-h0e7cc3e_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-he137b08_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.8.0-hf23e847_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hc4654cb_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.9.0-hb9d3cd8_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.49.2-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.4.0-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.5-h064dc61_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.5-h0d44e9d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.9.4-hcb278e6_0.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.dev2024120416-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120416-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120416-3.11release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120416-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120616-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120616-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120616-3.11release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120616-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.dev2024120416-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120616-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py311h2dc5d0c_1.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 @@ -159,7 +158,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-11.0.0-py311h49e9ac3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.0-py311h9ecbd09_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.1-py311h9ecbd09_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/protobuf-5.28.2-py311hfdbb021_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-18.1.0-py311h38be061_0.conda @@ -171,7 +170,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyinstrument-5.0.0-py311h9ecbd09_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.11.10-hc5c86c4_3_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.11.11-h9e4cc4f_1_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda @@ -186,25 +185,25 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda - 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_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_1.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 - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-ha2e4443_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-h8bd8927_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.1.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyh7900ff3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.20.4-py311h182c674_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py311h9ecbd09_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.46.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda @@ -218,11 +217,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.11-hb9d3cd8_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xxhash-0.8.2-hd590300_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-5.6.3-hbcc6ac9_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-gpl-tools-5.6.3-hbcc6ac9_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-tools-5.6.3-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.18.0-py311h9ecbd09_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.18.3-py311h9ecbd09_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py311hbc35293_1.conda @@ -247,7 +243,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.1-h4c7db1d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h4c7db1d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.6-hffbb33f_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.449-h7085e57_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h7085e57_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-core-cpp-1.14.0-h1887c18_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-identity-cpp-1.10.0-h47b0b28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-blobs-cpp-12.13.0-h185ecfd_1.conda @@ -270,12 +266,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda - 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.5-pyhff2d567_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/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 - - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gflags-2.2.2-h5ad3122_1005.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/glog-0.7.1-h468a4a4_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda @@ -284,14 +280,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/httptools-0.6.4-py311ha879c10_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-7.0.2-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/keyutils-1.6.1-h4e544f5_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/krb5-1.21.3-h50a48e9_0.conda @@ -299,10 +295,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.0.0-h4de3ea5_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h5ad3122_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-hc7b0e1d_2_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h5ad3122_2_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h5ad3122_2_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h14ec2bd_2_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-hb63acf4_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-he2e0623_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-he2e0623_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-hc52ba39_3_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-25_linuxaarch64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlicommon-1.1.0-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlidec-1.1.0-h86ecc28_2.conda @@ -327,12 +323,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libiconv-1.17-h31becfc_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libjpeg-turbo-3.0.0-h31becfc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-25_linuxaarch64_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.3-h86ecc28_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-devel-5.6.3-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.3-h86ecc28_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnghttp2-1.64.0-hc8609a4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.28-pthreads_h9d3fd7e_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-h23a96eb_2_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-h553aec1_3_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.44-hc4a20ef_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.2-h029595c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_1.conda @@ -342,24 +337,24 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libthrift-0.21.0-h154c74f_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.0-hec21d91_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.0-hca96517_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.9.0-h86ecc28_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuv-1.49.2-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libwebp-base-1.4.0-h31becfc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcb-1.17.0-h262b8f6_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.5-hf4efe5d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.5-h2e0c361_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.9.4-hd600fc2_0.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.dev2024120416-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120416-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120416-3.11release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120416-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120616-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120616-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120616-3.11release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120616-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.dev2024120416-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120616-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multidict-6.1.0-py311h58d527c_1.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 @@ -381,7 +376,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pillow-11.0.0-py311hb2a0dd2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.2.0-py311ha879c10_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.2.1-py311ha879c10_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/protobuf-5.28.2-py311h89d996e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pthread-stubs-0.4-h86ecc28_1002.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-18.1.0-py311hfecb2dc_0.conda @@ -393,7 +388,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyinstrument-5.0.0-py311ha879c10_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.11.10-h5d932e8_3_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.11.11-h1683364_1_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda @@ -408,25 +403,25 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8fc344f_1.conda - 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_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_1.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 - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-h1088aeb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-hd4fb6f5_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.1.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyh7900ff3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.20.4-py311h5e37e04_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py311h5487e9b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.46.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda @@ -440,11 +435,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxau-1.0.11-h86ecc28_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxdmcp-1.1.5-h57736b2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xxhash-0.8.2-h31becfc_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-5.6.3-h2dbfc1b_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-gpl-tools-5.6.3-h2dbfc1b_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-tools-5.6.3-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yaml-0.2.5-hf897c2e_2.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.18.0-py311ha879c10_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.18.3-py311ha879c10_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zeromq-4.3.5-h5efb499_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstandard-0.23.0-py311hd5293d8_1.conda @@ -468,7 +460,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.1-h5d7ee29_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-h5d7ee29_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.6-h8474b10_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.449-h3b64406_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-h3b64406_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.14.0-hd50102c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.10.0-hc602bab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-blobs-cpp-12.13.0-h7585a09_1.conda @@ -491,12 +483,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda - 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.5-pyhff2d567_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/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 - - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gflags-2.2.2-hf9b8971_1005.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/glog-0.7.1-heb240a5_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda @@ -505,22 +497,23 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/httptools-0.6.4-py311h917b07b_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-7.0.2-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.16-ha0e7c42_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_hf9b8971_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-h654e1bb_2_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-h605b82c_2_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-h605b82c_2_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-h9b432b6_2_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-h5affd47_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-haafc02e_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-haafc02e_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-h4c1644f_3_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-25_osxarm64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.1.0-hd74edd7_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.1.0-hd74edd7_2.conda @@ -543,11 +536,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.17-h0d3ecfb_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.0.0-hb547adb_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-25_osxarm64_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.3-h39f12f2_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-devel-5.6.3-h39f12f2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.3-h39f12f2_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.64.0-h6d7220d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.28-openmp_hf332438_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-h5168bdf_2_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-h3a603ae_3_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.44-hc14010f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.2-h8f0b736_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h2348fd5_1.conda @@ -555,23 +547,23 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.47.0-hbaaea75_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.1-h9cc3647_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libthrift-0.21.0-h64651cc_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-hfce79cd_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-ha962b0a_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.9.0-h5505292_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libuv-1.49.2-h7ab814d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.4.0-h93a5062_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxcb-1.17.0-hdb1d25a_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.5-h376fa9f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.5-h178c5d8_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.4-hdb05f8b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.5-hdb05f8b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.9.4-hb7217d7_0.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.dev2024120416-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120416-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120416-3.11release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120416-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120616-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120616-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120616-3.11release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120616-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.dev2024120416-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120616-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 @@ -593,7 +585,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-11.0.0-py311h3894ae9_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.0-py311h460d6c5_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.1-py311h917b07b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/protobuf-5.28.2-py311h6885ffc_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pthread-stubs-0.4-hd74edd7_1002.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-18.1.0-py311ha1ab1f8_0.conda @@ -605,7 +597,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyinstrument-5.0.0-py311hae2e1ce_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.11.10-hc51fdd5_3_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.11.11-hc22306f_1_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda @@ -620,24 +612,24 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h92ec313_1.conda - 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_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_1.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 - - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-hd02b534_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-h98b9ce2_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.1.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyh7900ff3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.20.4-py311h82b0fb8_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py311h917b07b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.46.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda @@ -651,11 +643,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxau-1.0.11-hd74edd7_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxdmcp-1.1.5-hd74edd7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xxhash-0.8.2-hb547adb_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xz-5.6.3-h9a6d368_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xz-gpl-tools-5.6.3-h9a6d368_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xz-tools-5.6.3-h39f12f2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.18.0-py311h917b07b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.18.3-py311h917b07b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py311ha60cc69_1.conda @@ -720,6 +709,7 @@ packages: depends: - python >=3.9 license: PSF-2.0 + license_family: PSF size: 19351 timestamp: 1733332029649 - kind: conda @@ -808,6 +798,7 @@ packages: - frozenlist >=1.1.0 - python >=3.9 license: Apache-2.0 + license_family: APACHE size: 13157 timestamp: 1733332198143 - kind: conda @@ -1533,13 +1524,12 @@ packages: timestamp: 1733333955728 - kind: conda name: aws-sdk-cpp - version: 1.11.449 - build: h3b64406_4 - build_number: 4 + version: 1.11.458 + build: h3b64406_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.449-h3b64406_4.conda - sha256: 10ce9c203d31229432421a841d8d135d3e942637571aae4bb2d3c7d5242e7f05 - md5: f9e46a4bb5a04cbca08355f166ce87c8 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-h3b64406_0.conda + sha256: ded5412750f5c29bdf8ef6bc5ab26e443dc4943bd69c9098a791d8a2bf9b184e + md5: 9a8d3ba158ff8ea08e17de366c238706 depends: - __osx >=11.0 - aws-c-common >=0.10.3,<0.10.4.0a0 @@ -1552,17 +1542,16 @@ packages: - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 2722689 - timestamp: 1732812825640 + size: 2853609 + timestamp: 1733389337912 - kind: conda name: aws-sdk-cpp - version: 1.11.449 - build: h5558e3c_4 - build_number: 4 + version: 1.11.458 + build: h5558e3c_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.449-h5558e3c_4.conda - sha256: 4881f7b4f5e3c797332cffb990df246a422346b220a9c16014f274beb2a276f5 - md5: ba7abdc93b0ade11d774b47aaab84737 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-h5558e3c_0.conda + sha256: 7eab747a5a3e1a46b9c85c591c30ca2d4e90c2cebeaec95c4fe016846efdfa14 + md5: b1919becd17fe224aacf708114231fda depends: - __glibc >=2.17,<3.0.a0 - aws-c-common >=0.10.3,<0.10.4.0a0 @@ -1576,17 +1565,16 @@ packages: - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 2945541 - timestamp: 1732812288219 + size: 3059100 + timestamp: 1733388777418 - kind: conda name: aws-sdk-cpp - version: 1.11.449 - build: h7085e57_4 - build_number: 4 + version: 1.11.458 + build: h7085e57_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.449-h7085e57_4.conda - sha256: 0908a82e7c50c51d5ee0ca543dbe70cbe1963e6e8f80ffa58ea6d26e5c68251e - md5: feec198cb18a5e90aa36c97328567d63 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h7085e57_0.conda + sha256: 6d5327305721d18d650a3f8a377dc30e65600f59bd33fd4fcad106965b09b6b8 + md5: 005e0cc687a2421a4ad493e5b7058abe depends: - aws-c-common >=0.10.3,<0.10.4.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 @@ -1599,8 +1587,8 @@ packages: - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 2813856 - timestamp: 1732812337182 + size: 2903434 + timestamp: 1733388870289 - kind: conda name: azure-core-cpp version: 1.14.0 @@ -2333,13 +2321,13 @@ packages: timestamp: 1733208916977 - kind: conda name: fastapi - version: 0.115.5 - build: pyhff2d567_0 + version: 0.115.6 + build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.5-pyhff2d567_0.conda - sha256: da2833cc2ea5789abc2a6899be02ba0a769386d4913ff182bd1a9458bea40c34 - md5: cfe0f8cd904ab19c36ba50eb5179ebe0 + url: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.6-pyhd8ed1ab_0.conda + sha256: d7826d537c667093c9de96411a09585a8d620c84a830a0195e58e9a0df45f018 + md5: 1b1e0c97830cdf75f1f371bd467ab657 depends: - email_validator >=2.0.0 - fastapi-cli >=0.0.5 @@ -2353,8 +2341,8 @@ packages: - uvicorn-standard >=0.12.0 license: MIT license_family: MIT - size: 73541 - timestamp: 1731452895466 + size: 73084 + timestamp: 1733362427885 - kind: conda name: fastapi-cli version: 0.0.5 @@ -2489,18 +2477,18 @@ packages: - kind: conda name: fsspec version: 2024.10.0 - build: pyhff2d567_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhff2d567_0.conda - sha256: 40bb76981dd49d5869b48925a8975bb7bbe4e33e1e40af4ec06f6bf4a62effd7 - md5: 816dbc4679a64e4417cd1385d661bb31 + url: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhd8ed1ab_1.conda + sha256: 790a50b4f94042951518f911a914a886a837c926094c6a14ed1d9d03ce336807 + md5: 906fe13095e734cb413b57a49116cdc8 depends: - - python >=3.8 + - python >=3.9 license: BSD-3-Clause - license_family: BSD - size: 134745 - timestamp: 1729608972363 + size: 134726 + timestamp: 1733493445080 - kind: conda name: gflags version: 2.2.2 @@ -2740,12 +2728,13 @@ packages: - kind: conda name: httpx version: 0.28.0 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_0.conda - sha256: cb7895446cd93091300accea6afbc8d9811a3c5899922ccfeeff97d9b55909dc - md5: 22878824a87f1af2ad48665f9d5bfcc8 + url: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_1.conda + sha256: 0b864abaa9f1443fc42368b4d2a4f4efb9971a53f961d1fe30fabd7fbdd76b27 + md5: 8a4a83ba566c6b5c718dd0531a362d01 depends: - anyio - certifi @@ -2754,8 +2743,8 @@ packages: - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 63183 - timestamp: 1732831049776 + size: 63203 + timestamp: 1733501478172 - kind: conda name: huggingface_hub version: 0.26.3 @@ -2810,6 +2799,20 @@ packages: license_family: MIT size: 12282786 timestamp: 1720853454991 +- kind: conda + name: icu + version: '75.1' + build: hfee45f7_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda + sha256: 9ba12c93406f3df5ab0a43db8a4b4ef67a5871dfd401010fbe29b218b2cbe620 + md5: 5eb22c1d7b3fc4abb50d92d621583137 + depends: + - __osx >=11.0 + license: MIT + license_family: MIT + size: 11857802 + timestamp: 1720853997952 - kind: conda name: idna version: '3.10' @@ -2862,24 +2865,25 @@ packages: - kind: conda name: jupyter_client version: 8.6.3 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_0.conda - sha256: 4419c85e209a715f551a5c9bead746f29ee9d0fc41e772a76db3868622795671 - md5: a14218cfb29662b4a19ceb04e93e298e + url: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + sha256: 19d8bd5bb2fde910ec59e081eeb59529491995ce0d653a5209366611023a0b3a + md5: 4ebae00eae9705b0c3d6d1018a81d047 depends: - importlib-metadata >=4.8.3 - jupyter_core >=4.12,!=5.0.* - - python >=3.8 + - python >=3.9 - python-dateutil >=2.8.2 - pyzmq >=23.0 - tornado >=6.2 - traitlets >=5.3 license: BSD-3-Clause license_family: BSD - size: 106055 - timestamp: 1726610805505 + size: 106342 + timestamp: 1733441040958 - kind: conda name: jupyter_core version: 5.7.2 @@ -3165,16 +3169,16 @@ packages: - kind: conda name: libarrow version: 18.1.0 - build: h654e1bb_2_cpu - build_number: 2 + build: h5affd47_3_cpu + build_number: 3 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-h654e1bb_2_cpu.conda - sha256: 925dcb034f36536eed21d9323f096bf2ebf1111d14c61e1ae0b90e5de131f1e1 - md5: e69934ff9dd8745fea8927028d1603ee + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-h5affd47_3_cpu.conda + sha256: 9dac7f7b96972a3c18549d8669269233ae9e7b25da56161bd85a86b98ca61f76 + md5: 3dc73b42851e6096542458eaf2c074ca depends: - __osx >=11.0 - aws-crt-cpp >=0.29.6,<0.29.7.0a0 - - aws-sdk-cpp >=1.11.449,<1.11.450.0a0 + - aws-sdk-cpp >=1.11.458,<1.11.459.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-identity-cpp >=1.10.0,<1.10.1.0a0 - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 @@ -3198,24 +3202,23 @@ packages: - zstd >=1.5.6,<1.6.0a0 constrains: - arrow-cpp <0.0a0 - - parquet-cpp <0.0a0 - apache-arrow-proc =*=cpu + - parquet-cpp <0.0a0 license: Apache-2.0 - license_family: APACHE - size: 5475725 - timestamp: 1732947802614 + size: 5487846 + timestamp: 1733450423101 - kind: conda name: libarrow version: 18.1.0 - build: hc7b0e1d_2_cpu - build_number: 2 + build: hb63acf4_3_cpu + build_number: 3 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-hc7b0e1d_2_cpu.conda - sha256: 3201944d1f97b9207e566ccf388c8376bb2ce7e461534cda63a28975b6790901 - md5: 4a46bd0be8e7f56a217d26b79d290a0e + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-hb63acf4_3_cpu.conda + sha256: e972904b472008f902df9e584f59ff7716fc22efc1124d1dfc41c931852acc75 + md5: d98a11c3ba32554873aeb6a071baceaa depends: - aws-crt-cpp >=0.29.6,<0.29.7.0a0 - - aws-sdk-cpp >=1.11.449,<1.11.450.0a0 + - aws-sdk-cpp >=1.11.458,<1.11.459.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-identity-cpp >=1.10.0,<1.10.1.0a0 - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 @@ -3240,26 +3243,25 @@ packages: - snappy >=1.2.1,<1.3.0a0 - zstd >=1.5.6,<1.6.0a0 constrains: + - parquet-cpp <0.0a0 - apache-arrow-proc =*=cpu - arrow-cpp <0.0a0 - - parquet-cpp <0.0a0 license: Apache-2.0 - license_family: APACHE - size: 8026783 - timestamp: 1732950110265 + size: 8048003 + timestamp: 1733452700958 - kind: conda name: libarrow version: 18.1.0 - build: he15abb1_1_cpu - build_number: 1 + build: hcf3f2e3_3_cpu + build_number: 3 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-he15abb1_1_cpu.conda - sha256: afc81af2e533cc35295aebae4fb382e770310d9b1ac31837456b440d35c54cf7 - md5: bd3e35a6f3f869b4777488452f315008 + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-hcf3f2e3_3_cpu.conda + sha256: a82f66f0a37ed3132e6b9faff9285d7ccbe950ccfe84edd6378fdee70ef2743e + md5: 196823c7752608cb6b5d5a7a33b17410 depends: - __glibc >=2.17,<3.0.a0 - aws-crt-cpp >=0.29.6,<0.29.7.0a0 - - aws-sdk-cpp >=1.11.449,<1.11.450.0a0 + - aws-sdk-cpp >=1.11.458,<1.11.459.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-identity-cpp >=1.10.0,<1.10.1.0a0 - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 @@ -3276,7 +3278,7 @@ packages: - libgoogle-cloud-storage >=2.31.0,<2.32.0a0 - libre2-11 >=2024.7.2 - libstdcxx >=13 - - libutf8proc >=2.8.0,<2.9.0a0 + - libutf8proc >=2.9.0,<2.10.0a0 - libzlib >=1.3.1,<2.0a0 - lz4-c >=1.9.3,<1.10.0a0 - orc >=2.0.3,<2.0.4.0a0 @@ -3284,190 +3286,180 @@ packages: - snappy >=1.2.1,<1.3.0a0 - zstd >=1.5.6,<1.6.0a0 constrains: + - apache-arrow-proc =*=cpu - parquet-cpp <0.0a0 - arrow-cpp <0.0a0 - - apache-arrow-proc =*=cpu license: Apache-2.0 - license_family: APACHE - size: 8780597 - timestamp: 1732863546099 + size: 8796519 + timestamp: 1733453489520 - kind: conda name: libarrow-acero version: 18.1.0 - build: h5888daf_1_cpu - build_number: 1 + build: h36004a0_3_cpu + build_number: 3 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-h5888daf_1_cpu.conda - sha256: 3de5719a7035baad7e665116dce7bb3d069f0c1916e163c553e2e491bbe8b614 - md5: 6197dcb930f6254e9b2fdc416be56b71 + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-h36004a0_3_cpu.conda + sha256: 0733a303b2dd5998489099d6c258ee442d3f8243379d339f57700554d696fe41 + md5: 6d8f74ac97166e09cdf02109ed9905ce depends: - __glibc >=2.17,<3.0.a0 - - libarrow 18.1.0 he15abb1_1_cpu + - libarrow 18.1.0 hcf3f2e3_3_cpu - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 - license_family: APACHE - size: 611272 - timestamp: 1732863586114 + size: 612773 + timestamp: 1733453636002 - kind: conda name: libarrow-acero version: 18.1.0 - build: h5ad3122_2_cpu - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h5ad3122_2_cpu.conda - sha256: e6c8988d1d79163d6d13dda21f9e401f5df4b3af7e0d221718522c600894adcf - md5: 14fede66c995f3cf958797e9fb567e22 - depends: - - libarrow 18.1.0 hc7b0e1d_2_cpu - - libgcc >=13 - - libstdcxx >=13 - license: Apache-2.0 - license_family: APACHE - size: 577510 - timestamp: 1732950190684 -- kind: conda - name: libarrow-acero - version: 18.1.0 - build: h605b82c_2_cpu - build_number: 2 + build: haafc02e_3_cpu + build_number: 3 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-h605b82c_2_cpu.conda - sha256: cfe32f1b0712b77d2c792a839fe4ea2790cabd99d47cd8e1b20ba2d3c8b113b2 - md5: 60351279d7dfd7c254c46aabf9aa35a6 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-haafc02e_3_cpu.conda + sha256: 214df0ac0f44dd792193d11c84dbf79a42ed0f663c7b1a06aa5ab755b93c1948 + md5: f3a050129b5012bd5fc381693f6eb2cd depends: - __osx >=11.0 - - libarrow 18.1.0 h654e1bb_2_cpu + - libarrow 18.1.0 h5affd47_3_cpu - libcxx >=18 license: Apache-2.0 - license_family: APACHE - size: 483362 - timestamp: 1732948000606 + size: 483753 + timestamp: 1733450627207 - kind: conda - name: libarrow-dataset + name: libarrow-acero version: 18.1.0 - build: h5888daf_1_cpu - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-h5888daf_1_cpu.conda - sha256: 7b3db3d5a7e411f8897e8d74403c1d871f3054300f5009c4bdf75da011bc3f42 - md5: 77501831a2aabbaabac55e8cb3b6900a + build: he2e0623_3_cpu + build_number: 3 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-he2e0623_3_cpu.conda + sha256: 1560efabce824155dd841219c299c71352594b5e237dce0879c2d8f50c16047a + md5: fa54002b982019ecc0e93cb4b2c493e9 depends: - - __glibc >=2.17,<3.0.a0 - - libarrow 18.1.0 he15abb1_1_cpu - - libarrow-acero 18.1.0 h5888daf_1_cpu + - libarrow 18.1.0 hb63acf4_3_cpu - libgcc >=13 - - libparquet 18.1.0 h6bd9018_1_cpu - libstdcxx >=13 license: Apache-2.0 - license_family: APACHE - size: 585458 - timestamp: 1732863686753 + size: 578323 + timestamp: 1733452783322 - kind: conda name: libarrow-dataset version: 18.1.0 - build: h5ad3122_2_cpu - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h5ad3122_2_cpu.conda - sha256: 53cdae2150c22ef9b5d6de8d0ee8ac52eeacc50fdfa2fa3ea644b52436d1eeb1 - md5: c54d83f012a40fef8a2dc4856e4340a0 + build: h36004a0_3_cpu + build_number: 3 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-h36004a0_3_cpu.conda + sha256: d5a0b4a2129a540548b0232df23e6940fe73d54e5ace5a31f5419d96a059f317 + md5: e9eac639d83b1c35f7743845b922d61a depends: - - libarrow 18.1.0 hc7b0e1d_2_cpu - - libarrow-acero 18.1.0 h5ad3122_2_cpu + - __glibc >=2.17,<3.0.a0 + - libarrow 18.1.0 hcf3f2e3_3_cpu + - libarrow-acero 18.1.0 h36004a0_3_cpu - libgcc >=13 - - libparquet 18.1.0 h23a96eb_2_cpu + - libparquet 18.1.0 hbdb145b_3_cpu - libstdcxx >=13 license: Apache-2.0 - license_family: APACHE - size: 559143 - timestamp: 1732950272727 + size: 585416 + timestamp: 1733454137952 - kind: conda name: libarrow-dataset version: 18.1.0 - build: h605b82c_2_cpu - build_number: 2 + build: haafc02e_3_cpu + build_number: 3 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-h605b82c_2_cpu.conda - sha256: eeae9e8d382c482076f4739455b53f16851d7f99be219b6f96dd4e765132b446 - md5: b5fcaddabf47aa15e50feff072a55ada + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-haafc02e_3_cpu.conda + sha256: 7b105d363d5f71db88454b304e44166c17b2970ddb0297b482f3d8b39fb39308 + md5: 8c57e5a50f865a16cafd92f5a32c9faa depends: - __osx >=11.0 - - libarrow 18.1.0 h654e1bb_2_cpu - - libarrow-acero 18.1.0 h605b82c_2_cpu + - libarrow 18.1.0 h5affd47_3_cpu + - libarrow-acero 18.1.0 haafc02e_3_cpu - libcxx >=18 - - libparquet 18.1.0 h5168bdf_2_cpu + - libparquet 18.1.0 h3a603ae_3_cpu license: Apache-2.0 - license_family: APACHE - size: 489769 - timestamp: 1732949732423 + size: 489900 + timestamp: 1733452479126 - kind: conda - name: libarrow-substrait + name: libarrow-dataset version: 18.1.0 - build: h14ec2bd_2_cpu - build_number: 2 + build: he2e0623_3_cpu + build_number: 3 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h14ec2bd_2_cpu.conda - sha256: e8923d62cfaadc4a8af1735e717fd4980cad693419e63aed04380566d9fd46df - md5: 4fd0103449cf40214fd348643aa78fff + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-he2e0623_3_cpu.conda + sha256: b26a03f529a4b87dcf523b012f9ccdac124b65f41801da7eb489192916e447ff + md5: 048f04da68a40e9e5e1e66ff9502b237 depends: + - libarrow 18.1.0 hb63acf4_3_cpu + - libarrow-acero 18.1.0 he2e0623_3_cpu + - libgcc >=13 + - libparquet 18.1.0 h553aec1_3_cpu + - libstdcxx >=13 + license: Apache-2.0 + size: 559844 + timestamp: 1733453065157 +- kind: conda + name: libarrow-substrait + version: 18.1.0 + build: h4c1644f_3_cpu + build_number: 3 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-h4c1644f_3_cpu.conda + sha256: 562c344d57b718aa838ccc01acae240d9ab33dd2da7db40dbe75d1db6b441e71 + md5: 7ba2783c26a0008307e2a1e637c2930f + depends: + - __osx >=11.0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.1.0 hc7b0e1d_2_cpu - - libarrow-acero 18.1.0 h5ad3122_2_cpu - - libarrow-dataset 18.1.0 h5ad3122_2_cpu - - libgcc >=13 + - libarrow 18.1.0 h5affd47_3_cpu + - libarrow-acero 18.1.0 haafc02e_3_cpu + - libarrow-dataset 18.1.0 haafc02e_3_cpu + - libcxx >=18 - libprotobuf >=5.28.2,<5.28.3.0a0 - - libstdcxx >=13 license: Apache-2.0 - license_family: APACHE - size: 515352 - timestamp: 1732950311471 + size: 451428 + timestamp: 1733453012619 - kind: conda name: libarrow-substrait version: 18.1.0 - build: h5c8f2c3_1_cpu - build_number: 1 + build: h56a123c_3_cpu + build_number: 3 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-h5c8f2c3_1_cpu.conda - sha256: e77a354bfc0ba7b04c856f1bb16e7b08950bcde54026087bafec46090380fcc1 - md5: 5d47bd2674afd104dbe2f2f3534594b0 + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-h56a123c_3_cpu.conda + sha256: 139104d80048382c48718a65721b24fa4d69abd6c2052ee1ab20f32b7d48228d + md5: 306bb541b83a83b66d5c1e6880302886 depends: - __glibc >=2.17,<3.0.a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.1.0 he15abb1_1_cpu - - libarrow-acero 18.1.0 h5888daf_1_cpu - - libarrow-dataset 18.1.0 h5888daf_1_cpu + - libarrow 18.1.0 hcf3f2e3_3_cpu + - libarrow-acero 18.1.0 h36004a0_3_cpu + - libarrow-dataset 18.1.0 h36004a0_3_cpu - libgcc >=13 - libprotobuf >=5.28.2,<5.28.3.0a0 - libstdcxx >=13 license: Apache-2.0 - license_family: APACHE - size: 520681 - timestamp: 1732863726954 + size: 520740 + timestamp: 1733454379083 - kind: conda name: libarrow-substrait version: 18.1.0 - build: h9b432b6_2_cpu - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-h9b432b6_2_cpu.conda - sha256: 6dde802134bd2e78581eb838c049b2e7e378899706b471f7072222a6b1284b90 - md5: 49e7c0460532a73f34bd127fff009224 + build: hc52ba39_3_cpu + build_number: 3 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-hc52ba39_3_cpu.conda + sha256: 66f2c06ad10d8886e53661420c5b73de217a088ee4693186deec7df292f9c766 + md5: 7a8e305f1689687ed063bb4553c1a7a5 depends: - - __osx >=11.0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.1.0 h654e1bb_2_cpu - - libarrow-acero 18.1.0 h605b82c_2_cpu - - libarrow-dataset 18.1.0 h605b82c_2_cpu - - libcxx >=18 + - libarrow 18.1.0 hb63acf4_3_cpu + - libarrow-acero 18.1.0 he2e0623_3_cpu + - libarrow-dataset 18.1.0 he2e0623_3_cpu + - libgcc >=13 - libprotobuf >=5.28.2,<5.28.3.0a0 + - libstdcxx >=13 license: Apache-2.0 - license_family: APACHE - size: 451127 - timestamp: 1732950194322 + size: 515638 + timestamp: 1733453200561 - kind: conda name: libblas version: 3.9.0 @@ -4674,86 +4666,46 @@ packages: - kind: conda name: liblzma version: 5.6.3 - build: h39f12f2_0 + build: h39f12f2_1 + build_number: 1 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.3-h39f12f2_0.conda - sha256: de00d627e41636591d05407c666de957a9ddd3c0f633340c016725695569b049 - md5: faa0ab222b9d12a52a8ebc655c9236f3 + url: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.3-h39f12f2_1.conda + sha256: d863b8257406918ffdc50ae65502f2b2d6cede29404d09a094f59509d6a0aaf1 + md5: b2553114a7f5e20ccd02378a77d836aa depends: - __osx >=11.0 license: 0BSD - size: 98836 - timestamp: 1733321533638 + size: 99129 + timestamp: 1733407496073 - kind: conda name: liblzma version: 5.6.3 - build: h86ecc28_0 + build: h86ecc28_1 + build_number: 1 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.3-h86ecc28_0.conda - sha256: 004785e427d255da8cf713b4722f8330bf496ce6fc665a0b21d007d377ffee5f - md5: 83d366f7bf01fc2d7781b4cc113fc9d3 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.3-h86ecc28_1.conda + sha256: d1cce0b7d62d1e54e2164d3e0667ee808efc6c3870256e5b47a150cd0bf46824 + md5: eb08b903681f9f2432c320e8ed626723 depends: - libgcc >=13 license: 0BSD - size: 124115 - timestamp: 1733323693681 + size: 124138 + timestamp: 1733409137214 - kind: conda name: liblzma version: 5.6.3 - build: hb9d3cd8_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.3-hb9d3cd8_0.conda - sha256: 31637db828ec67ab8697de324e6074af5a36cbeddc37202d8d31e2fb397619e8 - md5: 137c535dddd880f844f33ed91b8abdba - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - license: 0BSD - size: 111223 - timestamp: 1733321312512 -- kind: conda - name: liblzma-devel - version: 5.6.3 - build: h39f12f2_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-devel-5.6.3-h39f12f2_0.conda - sha256: 2e5a9fb298bd8c01ceed8db386bfb0a125d74cef2c5ee615b4f9695b2808f7e0 - md5: 89955d2470cbacea3d5e069d67c94f44 - depends: - - __osx >=11.0 - - liblzma 5.6.3 h39f12f2_0 - license: 0BSD - size: 112941 - timestamp: 1733321552604 -- kind: conda - name: liblzma-devel - version: 5.6.3 - build: h86ecc28_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-devel-5.6.3-h86ecc28_0.conda - sha256: 740b3f1ffa57ad5f0eec0c868e23d4e1f811871c6685a04af57f1943cde1a575 - md5: 27995ae8bc93eeb949315655daa19d3c - depends: - - libgcc >=13 - - liblzma 5.6.3 h86ecc28_0 - license: 0BSD - size: 376767 - timestamp: 1733323860026 -- kind: conda - name: liblzma-devel - version: 5.6.3 - build: hb9d3cd8_0 + build: hb9d3cd8_1 + build_number: 1 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/liblzma-devel-5.6.3-hb9d3cd8_0.conda - sha256: 98020d4b4cc6c728d2e6dc1174cb2548cf03ce5098cd17c37b32f06e896a943a - md5: 7069f4de645461447f1ab7736c94db26 + url: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.3-hb9d3cd8_1.conda + sha256: e6e425252f3839e2756e4af1ea2074dffd3396c161bf460629f9dfd6a65f15c6 + md5: 2ecf2f1c7e4e21fcfe6423a51a992d84 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - - liblzma 5.6.3 hb9d3cd8_0 license: 0BSD - size: 375452 - timestamp: 1733321322415 + size: 111132 + timestamp: 1733407410083 - kind: conda name: libnghttp2 version: 1.64.0 @@ -4905,61 +4857,58 @@ packages: - kind: conda name: libparquet version: 18.1.0 - build: h23a96eb_2_cpu - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-h23a96eb_2_cpu.conda - sha256: 83b8fa4a90e214fcd6018f890947666f055f79563fff2b7c3d5f37d894f3a000 - md5: ce205782960a580fa43cfcccca22ad8d + build: h3a603ae_3_cpu + build_number: 3 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-h3a603ae_3_cpu.conda + sha256: 89f40f0f4e706392b082ee4910fedd2442b57abbf6cbbfb16a00b5aa89beb41d + md5: 78d2f729e26788a3660cee9906f440e7 depends: - - libarrow 18.1.0 hc7b0e1d_2_cpu - - libgcc >=13 - - libstdcxx >=13 + - __osx >=11.0 + - libarrow 18.1.0 h5affd47_3_cpu + - libcxx >=18 - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 - license_family: APACHE - size: 1115906 - timestamp: 1732950250848 + size: 873697 + timestamp: 1733452286970 - kind: conda name: libparquet version: 18.1.0 - build: h5168bdf_2_cpu - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-h5168bdf_2_cpu.conda - sha256: 454487d113974b923b4214a65aab780fd90c4914390d0b1f4640b1bf60537bff - md5: f995df7ee206617a3e858fd932d7bd2d + build: h553aec1_3_cpu + build_number: 3 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-h553aec1_3_cpu.conda + sha256: 965940abe9e49ae7b3adee19bf458f866a0ef35a3cf29d627b2d52c77a96a96b + md5: 46c6783e8b46449a9baabef57c69f30a depends: - - __osx >=11.0 - - libarrow 18.1.0 h654e1bb_2_cpu - - libcxx >=18 + - libarrow 18.1.0 hb63acf4_3_cpu + - libgcc >=13 + - libstdcxx >=13 - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 - license_family: APACHE - size: 872333 - timestamp: 1732949558028 + size: 1116941 + timestamp: 1733452997475 - kind: conda name: libparquet version: 18.1.0 - build: h6bd9018_1_cpu - build_number: 1 + build: hbdb145b_3_cpu + build_number: 3 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-h6bd9018_1_cpu.conda - sha256: 0df119f4c1a2387d910e132c670b29ee5b29dd79384549de6f1a43067515c8ba - md5: 1054909202f86e38bbbb7ca1131b8471 + url: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-hbdb145b_3_cpu.conda + sha256: 034086f71824a3ea77a9bd21029fd4c4ef25b3a95fc77933704b8b49ff55c7f3 + md5: cb249762e1e65941b559d436c60e520d depends: - __glibc >=2.17,<3.0.a0 - - libarrow 18.1.0 he15abb1_1_cpu + - libarrow 18.1.0 hcf3f2e3_3_cpu - libgcc >=13 - libstdcxx >=13 - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 - license_family: APACHE - size: 1203523 - timestamp: 1732863665743 + size: 1204740 + timestamp: 1733454014411 - kind: conda name: libpng version: 1.6.44 @@ -5370,86 +5319,70 @@ packages: - kind: conda name: libtiff version: 4.7.0 - build: he137b08_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-he137b08_1.conda - sha256: 9890121db85f6ef463fe12eb04ef1471176e3ef3b5e2d62e8d6dac713df00df4 - md5: 63872517c98aa305da58a757c443698e + build: ha962b0a_2 + build_number: 2 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-ha962b0a_2.conda + sha256: d9e6835fd189b85eb90dbfdcc51f5375decbf5bb53130042f49bbd6bfb0b24be + md5: 8e14b5225c593f099a21971568e6d7b4 depends: - - __glibc >=2.17,<3.0.a0 + - __osx >=11.0 - lerc >=4.0.0,<5.0a0 + - libcxx >=18 - libdeflate >=1.22,<1.23.0a0 - - libgcc >=13 - libjpeg-turbo >=3.0.0,<4.0a0 - - libstdcxx >=13 + - liblzma >=5.6.3,<6.0a0 - libwebp-base >=1.4.0,<2.0a0 - libzlib >=1.3.1,<2.0a0 - - xz >=5.2.6,<6.0a0 - zstd >=1.5.6,<1.6.0a0 license: HPND - size: 428156 - timestamp: 1728232228989 + size: 370387 + timestamp: 1733443310502 - kind: conda name: libtiff version: 4.7.0 - build: hec21d91_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.0-hec21d91_1.conda - sha256: 14ecb9e129b1b5ffd6d4bee48de95cd2cd0973c712e1b965d3ef977cca23936d - md5: 1f80061f5ba6956fcdc381f34618cd8d + build: hc4654cb_2 + build_number: 2 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hc4654cb_2.conda + sha256: 18653b4a5c73e19c5e86ff72dab9bf59f5cc43d7f404a6be705d152dfd5e0660 + md5: be54fb40ea32e8fe9dbaa94d4528b57e depends: + - __glibc >=2.17,<3.0.a0 - lerc >=4.0.0,<5.0a0 - libdeflate >=1.22,<1.23.0a0 - libgcc >=13 - libjpeg-turbo >=3.0.0,<4.0a0 + - liblzma >=5.6.3,<6.0a0 - libstdcxx >=13 - libwebp-base >=1.4.0,<2.0a0 - libzlib >=1.3.1,<2.0a0 - - xz >=5.2.6,<6.0a0 - zstd >=1.5.6,<1.6.0a0 license: HPND - size: 464938 - timestamp: 1728232266969 + size: 429018 + timestamp: 1733443013288 - kind: conda name: libtiff version: 4.7.0 - build: hfce79cd_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-hfce79cd_1.conda - sha256: 97ba24c74750b6e731b3fe0d2a751cda6148b4937d2cc3f72d43bf7b3885c39d - md5: b9abf45f7c64caf3303725f1aa0e9a4d + build: hca96517_2 + build_number: 2 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.0-hca96517_2.conda + sha256: d736d840d1f2446234195adfcb51b132c85797730b6f42ebf058d350fa9d20e8 + md5: 278dcef6d1ea28c04109c3f5dea126cb depends: - - __osx >=11.0 - lerc >=4.0.0,<5.0a0 - - libcxx >=17 - libdeflate >=1.22,<1.23.0a0 + - libgcc >=13 - libjpeg-turbo >=3.0.0,<4.0a0 + - liblzma >=5.6.3,<6.0a0 + - libstdcxx >=13 - libwebp-base >=1.4.0,<2.0a0 - libzlib >=1.3.1,<2.0a0 - - xz >=5.2.6,<6.0a0 - zstd >=1.5.6,<1.6.0a0 license: HPND - size: 366323 - timestamp: 1728232400072 -- kind: conda - name: libutf8proc - version: 2.8.0 - build: hf23e847_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.8.0-hf23e847_1.conda - sha256: 104cf5b427fc914fec63e55f685a39480abeb4beb34bdbc77dea084c8f5a55cb - md5: b1aa0faa95017bca11369bd080487ec4 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - license: MIT - license_family: MIT - size: 80852 - timestamp: 1732829699583 + size: 464857 + timestamp: 1733443105529 - kind: conda name: libutf8proc version: 2.9.0 @@ -5480,6 +5413,22 @@ packages: license_family: MIT size: 81526 timestamp: 1732868466862 +- kind: conda + name: libutf8proc + version: 2.9.0 + build: hb9d3cd8_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.9.0-hb9d3cd8_1.conda + sha256: 9794e6388e780c3310d46f773bbc924d4053375c3fcdb07a704b57f4616db928 + md5: 1e936bd23d737aac62a18e9a1e7f8b18 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + license: MIT + license_family: MIT + size: 81500 + timestamp: 1732868419835 - kind: conda name: libuuid version: 2.38.1 @@ -5680,60 +5629,62 @@ packages: - kind: conda name: libxml2 version: 2.13.5 - build: h064dc61_0 + build: h0d44e9d_1 + build_number: 1 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.5-h064dc61_0.conda - sha256: 7ab7fb45a0014981d35247cd5b09057fc8ed3c07378086a6c7ad552915928647 - md5: fb16b85a5be1328ac1c44b098b74c570 + url: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.5-h0d44e9d_1.conda + sha256: 306e18aa647d8208ad2cd0e62d84933222b2fbe93d2d53cd5283d2256b1d54de + md5: f5b05674697ae7d2c5932766695945e1 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - libiconv >=1.17,<2.0a0 + - liblzma >=5.6.3,<6.0a0 - libzlib >=1.3.1,<2.0a0 - - xz >=5.2.6,<6.0a0 constrains: - icu <0.0a0 license: MIT license_family: MIT - size: 689363 - timestamp: 1731489619071 + size: 689993 + timestamp: 1733443678322 - kind: conda name: libxml2 version: 2.13.5 - build: h376fa9f_0 + build: h178c5d8_1 + build_number: 1 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.5-h376fa9f_0.conda - sha256: d443703d324f3dbd628d58ea498ab0e474c06d5771e7f55baf215fdbc11ceb87 - md5: adea92805465ed3dcf0776b428e34744 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.5-h178c5d8_1.conda + sha256: d7af3f25a4cece170502acd38f2dafbea4521f373f46dcb28a37fbe6ac2da544 + md5: 3dc3cff0eca1640a6acbbfab2f78139e depends: - __osx >=11.0 + - icu >=75.1,<76.0a0 - libiconv >=1.17,<2.0a0 + - liblzma >=5.6.3,<6.0a0 - libzlib >=1.3.1,<2.0a0 - - xz >=5.2.6,<6.0a0 - constrains: - - icu <0.0a0 license: MIT license_family: MIT - size: 582076 - timestamp: 1731489850179 + size: 582898 + timestamp: 1733443841584 - kind: conda name: libxml2 version: 2.13.5 - build: hf4efe5d_0 + build: h2e0c361_1 + build_number: 1 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.5-hf4efe5d_0.conda - sha256: bb5033bd79371e82886f9e83ef86babae8e0f50b77d7f9302210345b9205d939 - md5: 5650ac8a6ed680c032bdabe40ad19ee0 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.5-h2e0c361_1.conda + sha256: dc0e86d35a836af6e99d18f50c6551fc64c53ed3a3da5a9fea90e78763cf14b4 + md5: 63410f85031930cde371dfe0ee89109a depends: - icu >=75.1,<76.0a0 - libgcc >=13 - libiconv >=1.17,<2.0a0 + - liblzma >=5.6.3,<6.0a0 - libzlib >=1.3.1,<2.0a0 - - xz >=5.2.6,<6.0a0 license: MIT license_family: MIT - size: 734453 - timestamp: 1731489860751 + size: 732155 + timestamp: 1733443825814 - kind: conda name: libzlib version: 1.3.1 @@ -5788,20 +5739,20 @@ packages: timestamp: 1727963148474 - kind: conda name: llvm-openmp - version: 19.1.4 + version: 19.1.5 build: hdb05f8b_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.4-hdb05f8b_0.conda - sha256: dfdcd8de37899d984326f9734b28f46f80b88c068e44c562933a8b3117f2401a - md5: 76ca179ec970bea6e275e2fa477c2d3c + url: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.5-hdb05f8b_0.conda + sha256: e7ba0d8b718925efdcf1309f5e776e3264cc172d3af8d4048b39627c50a1abc0 + md5: f2c2e187a1d2637d282e34dc92021a70 depends: - __osx >=11.0 constrains: - - openmp 19.1.4|19.1.4.* + - openmp 19.1.5|19.1.5.* license: Apache-2.0 WITH LLVM-exception license_family: APACHE - size: 281554 - timestamp: 1732102484807 + size: 281120 + timestamp: 1733376089600 - kind: conda name: lz4-c version: 1.9.4 @@ -5924,76 +5875,76 @@ packages: timestamp: 1733220925299 - kind: conda name: max - version: 24.6.0.dev2024120416 + version: 24.6.0.dev2024120616 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120416-release.conda - sha256: 956c006755158839ee6f8de7d91360cd1990024868d867482a62885241c9794f - md5: 09947b7aa3a3c35b413b7c0d118126e3 - depends: - - max-core ==24.6.0.dev2024120416 release - - max-python >=24.6.0.dev2024120416,<25.0a0 - - mojo-jupyter ==24.6.0.dev2024120416 release - - mblack ==24.6.0.dev2024120416 release + url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120616-release.conda + sha256: 2338e4ad8e940eee4cf31d6ccfb9605bc3aaa0e2331e3c0f40c1063a0d6f4c58 + md5: 562c33b920321a676acb3fc49c2ddb11 + depends: + - max-core ==24.6.0.dev2024120616 release + - max-python >=24.6.0.dev2024120616,<25.0a0 + - mojo-jupyter ==24.6.0.dev2024120616 release + - mblack ==24.6.0.dev2024120616 release license: LicenseRef-Modular-Proprietary - size: 9925 - timestamp: 1733332193356 + size: 9919 + timestamp: 1733502206770 - kind: conda name: max-core - version: 24.6.0.dev2024120416 + version: 24.6.0.dev2024120616 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120416-release.conda - sha256: e73a6e3abebc4516d56d39b85d10e98883885218273b2ef19c7cfe4d3df7a4ef - md5: 43a976936171480fe7dbc2fed1224312 + url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120616-release.conda + sha256: 626f40a00b28c6958272a368b31944d9d62bd57a931910b1e4520d7501c57b61 + md5: 88e589273bf2ae77f80f879adacd234a depends: - - mblack ==24.6.0.dev2024120416 release + - mblack ==24.6.0.dev2024120616 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 245904359 - timestamp: 1733332193354 + size: 247418489 + timestamp: 1733502146971 - kind: conda name: max-core - version: 24.6.0.dev2024120416 + version: 24.6.0.dev2024120616 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120416-release.conda - sha256: e32ebc6b7f589881f14caec8df02b65c40839a0210ef6a87d85243b61b5fc7d8 - md5: 15cac805514c6a381a9a50ee3a86de25 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120616-release.conda + sha256: af5fcd915dd10f9a72d936fee1b4a32127725a072fb6df41b7a3f43997f3ac3b + md5: 5243c455575512a6061067e3b5d67e0f depends: - - mblack ==24.6.0.dev2024120416 release + - mblack ==24.6.0.dev2024120616 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 249618446 - timestamp: 1733332472125 + size: 251333959 + timestamp: 1733502206769 - kind: conda name: max-core - version: 24.6.0.dev2024120416 + version: 24.6.0.dev2024120616 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120416-release.conda - sha256: bc27468be85cc7fd207ec44a4a0b1b11aa54792737a20fcf8355a2f2e7a215d5 - md5: c27c6f67be3abffbf559bfd50852b493 + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120616-release.conda + sha256: 9f051d29fdebf2c33eaa96659e75b06bf2befb17ac6992dc526b71eb4b959fc2 + md5: 99f131bbf681d02fe75d5f9e7dc0ab57 depends: - - mblack ==24.6.0.dev2024120416 release + - mblack ==24.6.0.dev2024120616 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 210212276 - timestamp: 1733332258535 + size: 211890615 + timestamp: 1733502249826 - kind: conda name: max-python - version: 24.6.0.dev2024120416 + version: 24.6.0.dev2024120616 build: 3.11release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120416-3.11release.conda - sha256: 0f547380f5fba946ea66d441a4ff39914e3795922b9c13c0258c18667ecfd67e - md5: 6279cbb54248de909cc3056f610bf086 + url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120616-3.11release.conda + sha256: 22aabb8990184fa786008b44a27aae62833283ffd998420c7cc6750f919c9372 + md5: 4b34a9cdfb4598249c9e585f4cce4a8a depends: - - max-core ==24.6.0.dev2024120416 release + - max-core ==24.6.0.dev2024120616 release - python 3.11.* - pillow - fastapi @@ -6015,18 +5966,18 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 122937776 - timestamp: 1733332193364 + size: 123644414 + timestamp: 1733502146982 - kind: conda name: max-python - version: 24.6.0.dev2024120416 + version: 24.6.0.dev2024120616 build: 3.11release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120416-3.11release.conda - sha256: efc9949779b7999d5245f8de5759efcb8beaef95f36fcf9ab3d91562dffc7584 - md5: bb9bf7a056bc2d8e72a8d060c01f93f7 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120616-3.11release.conda + sha256: bb9bf09fc5437061b9ab2383ee6a3a1cc4457ed4c32eaeb2a5a78f28c8a77c8e + md5: 73d121cddb702feb967db7b16e41d88a depends: - - max-core ==24.6.0.dev2024120416 release + - max-core ==24.6.0.dev2024120616 release - python 3.11.* - pillow - fastapi @@ -6048,18 +5999,18 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 126566383 - timestamp: 1733332472134 + size: 127348291 + timestamp: 1733502206778 - kind: conda name: max-python - version: 24.6.0.dev2024120416 + version: 24.6.0.dev2024120616 build: 3.11release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120416-3.11release.conda - sha256: 572567eda8da043e5de45a0cbbe778f13f5fc441eece20a0ff60a7a4638fee21 - md5: 809b87bc94c23925ee4c36636ce5bdce + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120616-3.11release.conda + sha256: 29bb82ce4814de2684c3c9a587a2fca7ad3f3047059421be52e8e2b660ef3c31 + md5: 84a362f87f885e22d0e7e1c7649df4c3 depends: - - max-core ==24.6.0.dev2024120416 release + - max-core ==24.6.0.dev2024120616 release - python 3.11.* - pillow - fastapi @@ -6081,17 +6032,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 111633050 - timestamp: 1733332258537 + size: 112341940 + timestamp: 1733502249828 - kind: conda name: mblack - version: 24.6.0.dev2024120416 + version: 24.6.0.dev2024120616 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120416-release.conda - sha256: 374f5d8dfed89bf7098a0f7d8c6fd40c9dab11c4d760a03e05835e82f1b00cb9 - md5: 85c700946ce4a5ce8d11f5ee66b477cf + url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120616-release.conda + sha256: ccab714a4e70220ff559e9d0e56232964981196851bf77eeac1c3bf53ab0beb2 + md5: dec7dbfe11abd34b171d290d38adea24 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -6101,8 +6052,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130641 - timestamp: 1733332193362 + size: 130704 + timestamp: 1733502206776 - kind: conda name: mdurl version: 0.1.2 @@ -6121,21 +6072,21 @@ packages: timestamp: 1733255681319 - kind: conda name: mojo-jupyter - version: 24.6.0.dev2024120416 + version: 24.6.0.dev2024120616 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120416-release.conda - sha256: 181250d3bbe6523e4ac02e40004b6e77c04cfee2d9512dbeb584f51351df9448 - md5: 411a1d159867c56043991824d1ee88d9 + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120616-release.conda + sha256: d886857cf3c3a53c8a44433bec9b60fc90f9e43b169319bca36ca9daf0369901 + md5: 1420c233cedc5e554c728d5f8b2b1657 depends: - - max-core ==24.6.0.dev2024120416 release + - max-core ==24.6.0.dev2024120616 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22946 - timestamp: 1733332193363 + size: 11371 + timestamp: 1733502206776 - kind: conda name: multidict version: 6.1.0 @@ -6872,13 +6823,12 @@ packages: timestamp: 1733327434163 - kind: conda name: propcache - version: 0.2.0 - build: py311h460d6c5_2 - build_number: 2 + version: 0.2.1 + build: py311h917b07b_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.0-py311h460d6c5_2.conda - sha256: 7e6a656b09d494f0623c8bd0969195d1cd3f62a2ab5a2474a667c88e21cca971 - md5: 8fb75727dfbab541ece9542718cc30f4 + url: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.1-py311h917b07b_0.conda + sha256: 7d4185519514a4d357348e7a31974afb713ab6e0d7ea3a9f27a36f3b6515b638 + md5: f0599cb37e2cf8710eaae4b4d85f7759 depends: - __osx >=11.0 - python >=3.11,<3.12.0a0 @@ -6886,17 +6836,16 @@ packages: - python_abi 3.11.* *_cp311 license: Apache-2.0 license_family: APACHE - size: 48222 - timestamp: 1728546126843 + size: 48002 + timestamp: 1733392010497 - kind: conda name: propcache - version: 0.2.0 - build: py311h9ecbd09_2 - build_number: 2 + version: 0.2.1 + build: py311h9ecbd09_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.0-py311h9ecbd09_2.conda - sha256: bc2fbbc3f494884b62f288db2f6d53f57a9a1129cc95138780abdb783c487bc4 - md5: 85a56dd3b692fb5435de1e901354b5b8 + url: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.1-py311h9ecbd09_0.conda + sha256: 3323f2ed707a9fe89ee142c9ea1adef0cf8f75fb005ec414b50e8cc0381b57f4 + md5: 20d1c4ad24ac50f0941c63e81e4a86b7 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -6904,17 +6853,16 @@ packages: - python_abi 3.11.* *_cp311 license: Apache-2.0 license_family: APACHE - size: 53716 - timestamp: 1728545855994 + size: 53315 + timestamp: 1733391912538 - kind: conda name: propcache - version: 0.2.0 - build: py311ha879c10_2 - build_number: 2 + version: 0.2.1 + build: py311ha879c10_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.2.0-py311ha879c10_2.conda - sha256: a572848e9540b4d57064adb3db05c6b89deb0d99dab90b82c5cbc7f4f45811fe - md5: 5e6f032fcfccdafc6b2cb5cd87f4d361 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.2.1-py311ha879c10_0.conda + sha256: 9d6ed4a29efa5ea64b50097c450429944f116d06d883d23e5b5493eab0c68393 + md5: 15d3518828453960069fd7874fe88468 depends: - libgcc >=13 - python >=3.11,<3.12.0a0 @@ -6922,8 +6870,8 @@ packages: - python_abi 3.11.* *_cp311 license: Apache-2.0 license_family: APACHE - size: 53090 - timestamp: 1728546060903 + size: 52970 + timestamp: 1733392060312 - kind: conda name: protobuf version: 5.28.2 @@ -7358,94 +7306,94 @@ packages: timestamp: 1733217331982 - kind: conda name: python - version: 3.11.10 - build: h5d932e8_3_cpython - build_number: 3 + version: 3.11.11 + build: h1683364_1_cpython + build_number: 1 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.11.10-h5d932e8_3_cpython.conda - sha256: 59e53e0773660c6e02209f7efc4e2e7918110153a3a11ae0660b4c2c898ac700 - md5: ce35c787630db2ac26327d64c15943e1 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.11.11-h1683364_1_cpython.conda + sha256: b39a2253510b26213093cb29e27722cb33782aec213c020dfd17cd74d58f68e7 + md5: 7e8786cbe7b83e7011e681a4780c9b7f depends: - bzip2 >=1.0.8,<2.0a0 - ld_impl_linux-aarch64 >=2.36.1 - - libexpat >=2.6.3,<3.0a0 + - libexpat >=2.6.4,<3.0a0 - libffi >=3.4,<4.0a0 - libgcc >=13 + - liblzma >=5.6.3,<6.0a0 - libnsl >=2.0.1,<2.1.0a0 - - libsqlite >=3.46.1,<4.0a0 + - libsqlite >=3.47.0,<4.0a0 - libuuid >=2.38.1,<3.0a0 - libxcrypt >=4.4.36 - libzlib >=1.3.1,<2.0a0 - ncurses >=6.5,<7.0a0 - - openssl >=3.3.2,<4.0a0 + - openssl >=3.4.0,<4.0a0 - readline >=8.2,<9.0a0 - tk >=8.6.13,<8.7.0a0 - tzdata - - xz >=5.2.6,<6.0a0 constrains: - python_abi 3.11.* *_cp311 license: Python-2.0 - size: 15359622 - timestamp: 1729041715586 + size: 15234582 + timestamp: 1733407838276 - kind: conda name: python - version: 3.11.10 - build: hc51fdd5_3_cpython - build_number: 3 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.11.10-hc51fdd5_3_cpython.conda - sha256: 95a2c487176867ded825e23eab1e581398f75c5323da0cb7577c3cff3d2f955b - md5: 2a47a0061d7d3030e45b66d23f01d101 + version: 3.11.11 + build: h9e4cc4f_1_cpython + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/python-3.11.11-h9e4cc4f_1_cpython.conda + sha256: b29ce0836fce55bdff8d5c5b71c4921a23f87d3b950aea89a9e75784120b06b0 + md5: 8387070aa413ce9a8cc35a509fae938b depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 - bzip2 >=1.0.8,<2.0a0 - - libexpat >=2.6.3,<3.0a0 + - ld_impl_linux-64 >=2.36.1 + - libexpat >=2.6.4,<3.0a0 - libffi >=3.4,<4.0a0 - - libsqlite >=3.46.1,<4.0a0 + - libgcc >=13 + - liblzma >=5.6.3,<6.0a0 + - libnsl >=2.0.1,<2.1.0a0 + - libsqlite >=3.47.0,<4.0a0 + - libuuid >=2.38.1,<3.0a0 + - libxcrypt >=4.4.36 - libzlib >=1.3.1,<2.0a0 - ncurses >=6.5,<7.0a0 - - openssl >=3.3.2,<4.0a0 + - openssl >=3.4.0,<4.0a0 - readline >=8.2,<9.0a0 - tk >=8.6.13,<8.7.0a0 - tzdata - - xz >=5.2.6,<6.0a0 constrains: - python_abi 3.11.* *_cp311 license: Python-2.0 - size: 14598065 - timestamp: 1729042279642 + size: 30624804 + timestamp: 1733409665928 - kind: conda name: python - version: 3.11.10 - build: hc5c86c4_3_cpython - build_number: 3 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/python-3.11.10-hc5c86c4_3_cpython.conda - sha256: b7fa3bd48e3a3d30f65608e07759cefd27885c6388b3f612af85ce40282e6936 - md5: 9e1ad55c87368e662177661a998feed5 + version: 3.11.11 + build: hc22306f_1_cpython + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.11.11-hc22306f_1_cpython.conda + sha256: 94e198f6a5affa1431401fca7e3b27fda68c59f5ee726083288bff1f6bed8c7f + md5: 8d81dcd0be5bdcdd98e0f2482bf63784 depends: - - __glibc >=2.17,<3.0.a0 + - __osx >=11.0 - bzip2 >=1.0.8,<2.0a0 - - ld_impl_linux-64 >=2.36.1 - - libexpat >=2.6.3,<3.0a0 + - libexpat >=2.6.4,<3.0a0 - libffi >=3.4,<4.0a0 - - libgcc >=13 - - libnsl >=2.0.1,<2.1.0a0 - - libsqlite >=3.46.1,<4.0a0 - - libuuid >=2.38.1,<3.0a0 - - libxcrypt >=4.4.36 + - liblzma >=5.6.3,<6.0a0 + - libsqlite >=3.47.0,<4.0a0 - libzlib >=1.3.1,<2.0a0 - ncurses >=6.5,<7.0a0 - - openssl >=3.3.2,<4.0a0 + - openssl >=3.4.0,<4.0a0 - readline >=8.2,<9.0a0 - tk >=8.6.13,<8.7.0a0 - tzdata - - xz >=5.2.6,<6.0a0 constrains: - python_abi 3.11.* *_cp311 license: Python-2.0 - size: 30543977 - timestamp: 1729043512711 + size: 14647146 + timestamp: 1733409012105 - kind: conda name: python-dateutil version: 2.9.0.post0 @@ -7929,21 +7877,22 @@ packages: - kind: conda name: rich version: 13.9.4 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_0.conda - sha256: c009488fc07fd5557434c9c1ad32ab1dd50241d6a766e4b2b4125cd6498585a8 - md5: bcf8cc8924b5d20ead3d122130b8320b + url: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_1.conda + sha256: 06a760c5ae572e72e865d5a87e9fe3cc171e1a9c996e63daf3db52ff1a0b4457 + md5: 7aed65d4ff222bfb7335997aa40b7da5 depends: - markdown-it-py >=2.2.0 - pygments >=2.13.0,<3.0.0 - - python >=3.8 + - python >=3.9 - typing_extensions >=4.0.0,<5.0.0 license: MIT license_family: MIT - size: 185481 - timestamp: 1730592349978 + size: 185646 + timestamp: 1733342347277 - kind: conda name: s2n version: 1.5.9 @@ -8066,65 +8015,68 @@ packages: timestamp: 1733301007770 - kind: conda name: six - version: 1.16.0 - build: pyhd8ed1ab_1 - build_number: 1 + version: 1.17.0 + build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyhd8ed1ab_1.conda - sha256: 761b96fe7bea080b9c35dd2f87f788eb94b61d462645bd16f361e80ae0ff017c - md5: a516da6cfe1ec0a55e49737f017b4965 + url: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + sha256: 41db0180680cc67c3fa76544ffd48d6a5679d96f4b71d7498a759e94edc9a2db + md5: a451d576819089b0d672f18768be0f65 depends: - python >=3.9 license: MIT license_family: MIT size: 16385 - timestamp: 1733216901349 + timestamp: 1733381032766 - kind: conda name: snappy version: 1.2.1 - build: h1088aeb_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-h1088aeb_0.conda - sha256: 79f5d0a9098acf2ed16e6ecc4c11472b50ccf59feea37a7d585fd43888d7e41f - md5: e4ed5b015f525b56f95c26d85a4ea208 + build: h8bd8927_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-h8bd8927_1.conda + sha256: ec91e86eeb2c6bbf09d51351b851e945185d70661d2ada67204c9a6419d282d3 + md5: 3b3e64af585eadfb52bb90b553db5edf depends: - - libgcc-ng >=12 - - libstdcxx-ng >=12 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 license: BSD-3-Clause license_family: BSD - size: 42888 - timestamp: 1720003817527 + size: 42739 + timestamp: 1733501881851 - kind: conda name: snappy version: 1.2.1 - build: ha2e4443_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-ha2e4443_0.conda - sha256: dc7c8e0e8c3e8702aae81c52d940bfaabe756953ee51b1f1757e891bab62cf7f - md5: 6b7dcc7349efd123d493d2dbe85a045f + build: h98b9ce2_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-h98b9ce2_1.conda + sha256: 4242f95b215127a006eb664fe26ed5a82df87e90cbdbc7ce7ff4971f0720997f + md5: ded86dee325290da2967a3fea3800eb5 depends: - - libgcc-ng >=12 - - libstdcxx-ng >=12 + - __osx >=11.0 + - libcxx >=18 license: BSD-3-Clause license_family: BSD - size: 42465 - timestamp: 1720003704360 + size: 35857 + timestamp: 1733502172664 - kind: conda name: snappy version: 1.2.1 - build: hd02b534_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-hd02b534_0.conda - sha256: cb7a9440241c6092e0f1c795fdca149c4767023e783eaf9cfebc501f906b4897 - md5: 69d0f9694f3294418ee935da3d5f7272 + build: hd4fb6f5_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-hd4fb6f5_1.conda + sha256: c4a07ae5def8d55128f25a567a296ef9d7bf99a3bc79d46bd5160c076a5f50af + md5: 2fcc6cd1e5550deb509073fd2e6693e1 depends: - - __osx >=11.0 - - libcxx >=16 + - libgcc >=13 + - libstdcxx >=13 license: BSD-3-Clause license_family: BSD - size: 35708 - timestamp: 1720003794374 + size: 43032 + timestamp: 1733501964775 - kind: conda name: sniffio version: 1.3.1 @@ -8162,20 +8114,21 @@ packages: - kind: conda name: starlette version: 0.41.3 - build: pyh7900ff3_0 + build: pyha770c72_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyh7900ff3_0.conda - sha256: 33986032cb0515f7e9f6647d07006b7dc49b3f373b73d5a1826e6979c661b27a - md5: 0889c5a3e95d8c382cff7556757aedb0 + url: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyha770c72_1.conda + sha256: b74fc76107487eb26624c01fc55bfab7eed03ae82e003333c86d8a1eeac53672 + md5: 0207dac04ae2200701fab697f0aaaac4 depends: - anyio >=3.4.0,<5 - python >=3.9 - typing_extensions >=3.10.0 license: BSD-3-Clause license_family: BSD - size: 59069 - timestamp: 1732037161800 + size: 58838 + timestamp: 1733344472634 - kind: conda name: tk version: 8.6.13 @@ -8355,18 +8308,19 @@ packages: - kind: conda name: traitlets version: 5.14.3 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda - sha256: 8a64fa0f19022828513667c2c7176cfd125001f3f4b9bc00d33732e627dd2592 - md5: 3df84416a021220d8b5700c613af2dc5 + url: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + sha256: f39a5620c6e8e9e98357507262a7869de2ae8cc07da8b7f84e517c9fd6c2b959 + md5: 019a7385be9af33791c989871317e1ed depends: - - python >=3.8 + - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 110187 - timestamp: 1713535244513 + size: 110051 + timestamp: 1733367480074 - kind: conda name: transformers version: 4.46.3 @@ -8395,58 +8349,58 @@ packages: timestamp: 1731981383171 - kind: conda name: typer - version: 0.15.0 + version: 0.15.1 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.0-pyhd8ed1ab_0.conda - sha256: 90503b2a518434fb554d621cc4e1c533dc524ef1c0f63fde39fdf4328163a0c8 - md5: cf9393f5733c7277b1a5f79145f8485b + url: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda + sha256: ef695490e895c2ad552c77ec497b899b09fd4ad4ab07edcf5649f5994cf92a35 + md5: 170a0398946d8f5b454e592672b6fc20 depends: - python >=3.9 - - typer-slim-standard 0.15.0 hd8ed1ab_0 + - typer-slim-standard 0.15.1 hd8ed1ab_0 license: MIT license_family: MIT - size: 56455 - timestamp: 1733279871129 + size: 56175 + timestamp: 1733408582623 - kind: conda name: typer-slim - version: 0.15.0 + version: 0.15.1 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.0-pyhd8ed1ab_0.conda - sha256: f6a85917292aaea0577792090ac74dbdb0280a656934746f715bfa9feaa9b2dc - md5: 629fef89115de5a907fb9765cdd45b26 + url: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda + sha256: d4965516f35e0805199de6596c4ac76c4ad3d6b012be35e532102f9e53ecb860 + md5: 0218b16f5a1dd569e575a7a6415489db depends: - click >=8.0.0 - python >=3.9 - typing_extensions >=3.7.4.3 constrains: - - typer >=0.15.0,<0.15.1.0a0 - - shellingham >=1.3.0 - rich >=10.11.0 + - typer >=0.15.1,<0.15.2.0a0 + - shellingham >=1.3.0 license: MIT license_family: MIT - size: 43480 - timestamp: 1733279858535 + size: 43592 + timestamp: 1733408569554 - kind: conda name: typer-slim-standard - version: 0.15.0 + version: 0.15.1 build: hd8ed1ab_0 subdir: noarch noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.0-hd8ed1ab_0.conda - sha256: df52ddd24439aff384a82d00a751947b12127ab571f4aa674a1053c703ce8ed0 - md5: a4746fc9efbff02c1a288d8fcd8ffba9 + url: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda + sha256: f31c56fe98315da8b9ce848256c17e0b9f87896b41a6ccf0c9cc74644dcef20f + md5: 4e603c43bfdfc7b533be087c3e070cc9 depends: - rich - shellingham - - typer-slim 0.15.0 pyhd8ed1ab_0 + - typer-slim 0.15.1 pyhd8ed1ab_0 license: MIT license_family: MIT - size: 50259 - timestamp: 1733279859017 + size: 49531 + timestamp: 1733408570063 - kind: conda name: typing-extensions version: 4.12.2 @@ -8899,144 +8853,6 @@ packages: license_family: BSD size: 97691 timestamp: 1689951608120 -- kind: conda - name: xz - version: 5.6.3 - build: h2dbfc1b_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-5.6.3-h2dbfc1b_0.conda - sha256: 65df445d131d1695c45a95d102b8ffaaed5a387b4f97e209ba7d8fa0b7599dec - md5: da081cb850e57b0a0a242bab9087fbeb - depends: - - libgcc >=13 - - liblzma 5.6.3 h86ecc28_0 - - liblzma-devel 5.6.3 h86ecc28_0 - - xz-gpl-tools 5.6.3 h2dbfc1b_0 - - xz-tools 5.6.3 h86ecc28_0 - license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later - size: 23448 - timestamp: 1733324353894 -- kind: conda - name: xz - version: 5.6.3 - build: h9a6d368_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/xz-5.6.3-h9a6d368_0.conda - sha256: 25d515d97f9a147240933b7529dbe10f3ee1c87425cfa3d5faa5115f78ebfe70 - md5: 86674fa432df20be6feea4bd8fec0668 - depends: - - __osx >=11.0 - - liblzma 5.6.3 h39f12f2_0 - - liblzma-devel 5.6.3 h39f12f2_0 - - xz-gpl-tools 5.6.3 h9a6d368_0 - - xz-tools 5.6.3 h39f12f2_0 - license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later - size: 23570 - timestamp: 1733321627935 -- kind: conda - name: xz - version: 5.6.3 - build: hbcc6ac9_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/xz-5.6.3-hbcc6ac9_0.conda - sha256: 32cd43b293f1e6498831c499195afc5693c2bd604244a08fe8dd7107a20757d2 - md5: 504333561007fbf0af129f0cee4f5652 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - liblzma 5.6.3 hb9d3cd8_0 - - liblzma-devel 5.6.3 hb9d3cd8_0 - - xz-gpl-tools 5.6.3 hbcc6ac9_0 - - xz-tools 5.6.3 hb9d3cd8_0 - license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later - size: 23435 - timestamp: 1733321352996 -- kind: conda - name: xz-gpl-tools - version: 5.6.3 - build: h2dbfc1b_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-gpl-tools-5.6.3-h2dbfc1b_0.conda - sha256: d99ba29095b47891e3c63d04832768c3bfe4ad49e7bb4e163ca18962b8b3f5ca - md5: b0245c3aad4592510bb0c19212c1bded - depends: - - libgcc >=13 - - liblzma 5.6.3 h86ecc28_0 - license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later - size: 33355 - timestamp: 1733324193303 -- kind: conda - name: xz-gpl-tools - version: 5.6.3 - build: h9a6d368_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/xz-gpl-tools-5.6.3-h9a6d368_0.conda - sha256: 44a0738b66573d0e7def712ef2aa98f628b17ee4d1034ffe71c3ff36f68d12dd - md5: 9e4519aef300966683764ccbbaa89da4 - depends: - - __osx >=11.0 - - liblzma 5.6.3 h39f12f2_0 - license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later - size: 33343 - timestamp: 1733321610703 -- kind: conda - name: xz-gpl-tools - version: 5.6.3 - build: hbcc6ac9_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/xz-gpl-tools-5.6.3-hbcc6ac9_0.conda - sha256: e9829eb1207239198f03eba61d17d0f946bbaa7602f7ee019efe72ccb26525db - md5: e4f1e59ca2971e8d0fdde0928c3f7b7f - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - liblzma 5.6.3 hb9d3cd8_0 - license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later - size: 33299 - timestamp: 1733321343126 -- kind: conda - name: xz-tools - version: 5.6.3 - build: h39f12f2_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/xz-tools-5.6.3-h39f12f2_0.conda - sha256: be3c74ffe4a7a5852108dafe40ef41858ca1ea911c62b08b5e4dd8f641d23f22 - md5: 10855380caa384c8388b93ef29c7bd04 - depends: - - __osx >=11.0 - - liblzma 5.6.3 h39f12f2_0 - license: 0BSD AND LGPL-2.1-or-later - size: 81129 - timestamp: 1733321582233 -- kind: conda - name: xz-tools - version: 5.6.3 - build: h86ecc28_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-tools-5.6.3-h86ecc28_0.conda - sha256: 1d82a745cd60e674d18a0ce30ba13d72616261b1831530f480599ffc991c8476 - md5: 0136c7aa78b4d887c9fb6dbf39749778 - depends: - - libgcc >=13 - - liblzma 5.6.3 h86ecc28_0 - license: 0BSD AND LGPL-2.1-or-later - size: 95353 - timestamp: 1733324033407 -- kind: conda - name: xz-tools - version: 5.6.3 - build: hb9d3cd8_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/xz-tools-5.6.3-hb9d3cd8_0.conda - sha256: 7d03d4c0d18dbac0ebb9550890fddeb4d21a375709339a6bdedd0104bc4f4967 - md5: 40270c1e058fd1d31caee8bf2c68fc3a - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - liblzma 5.6.3 hb9d3cd8_0 - license: 0BSD AND LGPL-2.1-or-later - size: 89832 - timestamp: 1733321333192 - kind: conda name: yaml version: 0.2.5 @@ -9082,64 +8898,64 @@ packages: timestamp: 1641347626613 - kind: conda name: yarl - version: 1.18.0 + version: 1.18.3 build: py311h917b07b_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.18.0-py311h917b07b_0.conda - sha256: d21aeb264716c1f7bfb0f73f489621eebf8d28d951f3885a90ba97369eb2184d - md5: 93d15c4b23a94293511460afeda65445 + url: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.18.3-py311h917b07b_0.conda + sha256: 2df31b9adcd55b29985935d0a23ae6069808e319c2c24bbe212cbd3f3dca71ed + md5: 134c0091a508239d35505d9ac74d4c0f depends: - __osx >=11.0 - idna >=2.0 - multidict >=4.0 - - propcache >=0.2.0 + - propcache >=0.2.1 - python >=3.11,<3.12.0a0 - python >=3.11,<3.12.0a0 *_cpython - python_abi 3.11.* *_cp311 license: Apache-2.0 license_family: Apache - size: 142545 - timestamp: 1732221235765 + size: 144071 + timestamp: 1733429148299 - kind: conda name: yarl - version: 1.18.0 + version: 1.18.3 build: py311h9ecbd09_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.18.0-py311h9ecbd09_0.conda - sha256: 6badcbdfa79e7d85898dadc3f3c8541aeb0328beaf52d8c324f9cfa03827e34b - md5: 6c53a0d074f60e75069133bfcdfdf76f + url: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.18.3-py311h9ecbd09_0.conda + sha256: 4af34cbcf4dda72aad779c8a12eb508aee6f98d0523c26174639a75ae31df180 + md5: 385d54815a5d2e74e68374d77446030b depends: - __glibc >=2.17,<3.0.a0 - idna >=2.0 - libgcc >=13 - multidict >=4.0 - - propcache >=0.2.0 + - propcache >=0.2.1 - python >=3.11,<3.12.0a0 - python_abi 3.11.* *_cp311 license: Apache-2.0 license_family: Apache - size: 152353 - timestamp: 1732220979792 + size: 153749 + timestamp: 1733428888714 - kind: conda name: yarl - version: 1.18.0 + version: 1.18.3 build: py311ha879c10_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.18.0-py311ha879c10_0.conda - sha256: 8dc821990e5f294fa8e071d472dfa46ad51738dfe9ccce34e6935dde0b9450b8 - md5: 5a62496bee4f8371cf4019957251d8c2 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.18.3-py311ha879c10_0.conda + sha256: c60d0e75b147dc836b497b2f7c773a2b2998821056614eead6aae84fbedc7416 + md5: 049bc4ea1dd2a1db3a752fadbda1b55c depends: - idna >=2.0 - libgcc >=13 - multidict >=4.0 - - propcache >=0.2.0 + - propcache >=0.2.1 - python >=3.11,<3.12.0a0 - python >=3.11,<3.12.0a0 *_cpython - python_abi 3.11.* *_cp311 license: Apache-2.0 license_family: Apache - size: 151403 - timestamp: 1732221145576 + size: 151968 + timestamp: 1733429000649 - kind: conda name: zeromq version: 4.3.5 diff --git a/examples/notebooks/magic.lock b/examples/notebooks/magic.lock index acfb589cf2..ef2d7ac2be 100644 --- a/examples/notebooks/magic.lock +++ b/examples/notebooks/magic.lock @@ -31,7 +31,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.1-hf42f96a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-hf42f96a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.6-h159bff8_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.449-h5558e3c_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-h5558e3c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.10.0-h113e628_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.13.0-h3cf044e_1.conda @@ -52,7 +52,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.9-py312h2ec8cdc_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.1.1-pyhd8ed1ab_1.conda @@ -65,13 +65,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/entrypoints-0.4-pyhd8ed1ab_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/executing-2.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.5-pyhff2d567_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/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 - conda: https://conda.anaconda.org/conda-forge/linux-64/frozenlist-1.5.0-py312h66e93f0_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gflags-2.2.2-h5888daf_1005.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/glog-0.7.1-hbabe93e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda @@ -80,7 +80,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/httptools-0.6.4-py312h66e93f0_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda @@ -88,20 +88,20 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.4.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh3099207_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-8.30.0-pyh707e725_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.10.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/jsonpointer-3.0.0-py312h7900ff3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2024.10.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2024.10.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.10.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.14.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.10.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.14.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.3.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_0.conda @@ -111,10 +111,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_h5888daf_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-he15abb1_1_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-h5888daf_1_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-h5888daf_1_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-h5c8f2c3_1_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-hcf3f2e3_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-h36004a0_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-h36004a0_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-h56a123c_3_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-25_linux64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hb9d3cd8_2.conda @@ -139,12 +139,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-hd590300_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-25_linux64_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.3-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-devel-5.6.3-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.3-hb9d3cd8_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.28-pthreads_h94d23a6_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-h6bd9018_1_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-hbdb145b_3_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.44-hadc24fc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.2-h5b01275_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_1.conda @@ -154,35 +153,35 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-hc0a3c3a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libthrift-0.21.0-h0e7cc3e_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-he137b08_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.8.0-hf23e847_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hc4654cb_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.9.0-hb9d3cd8_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.49.2-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.4.0-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.5-h064dc61_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.5-h0d44e9d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.9.4-hcb278e6_0.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.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120416-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120416-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120416-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120416-release.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.dev2024120616-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120616-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120616-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120616-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.dev2024120416-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120616-release.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/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 - - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.4-pyhff2d567_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-he02047a_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.2-h488ebb8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.0-hb9d3cd8_0.conda @@ -204,11 +203,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-11.0.0-py312h7b63e92_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pip-24.3.1-pyh8b19718_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.48-pyha770c72_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.0-py312h66e93f0_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.1-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/protobuf-5.28.2-py312h2ec8cdc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/psutil-6.1.0-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda @@ -223,7 +222,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyinstrument-5.0.0-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.7-hc5c86c4_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.8-h9e4cc4f_1_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda @@ -237,25 +236,25 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.0-py312hbf22597_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/re2-2024.07.02-h77b4e00_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.35.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.35.1-pyhd8ed1ab_1.conda - 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/rfc3339-validator-0.1.4-pyhd8ed1ab_0.tar.bz2 - 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_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.22.1-py312h12e396e_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_1.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 - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh0d859eb_1.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 - - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-ha2e4443_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-h8bd8927_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.1.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyh7900ff3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh0d859eb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda @@ -263,11 +262,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.46.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20241003-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda @@ -280,7 +279,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/uvloop-0.21.0-py312h66e93f0_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/watchfiles-1.0.0-py312h12e396e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.8.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.8.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/websockets-14.1-py312h66e93f0_0.conda @@ -289,11 +288,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.11-hb9d3cd8_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xxhash-0.8.2-hd590300_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-5.6.3-hbcc6ac9_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-gpl-tools-5.6.3-hbcc6ac9_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-tools-5.6.3-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.18.0-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.18.3-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312hef9b889_1.conda @@ -323,7 +319,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.1-h4c7db1d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h4c7db1d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.6-hffbb33f_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.449-h7085e57_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h7085e57_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-core-cpp-1.14.0-h1887c18_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-identity-cpp-1.10.0-h47b0b28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-blobs-cpp-12.13.0-h185ecfd_1.conda @@ -344,7 +340,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/debugpy-1.8.9-py312h6f74592_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.1.1-pyhd8ed1ab_1.conda @@ -357,13 +353,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/entrypoints-0.4-pyhd8ed1ab_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/executing-2.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.5-pyhff2d567_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/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 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/frozenlist-1.5.0-py312hb2c0f52_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gflags-2.2.2-h5ad3122_1005.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/glog-0.7.1-h468a4a4_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda @@ -372,7 +368,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/httptools-0.6.4-py312hb2c0f52_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda @@ -381,20 +377,20 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.4.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh3099207_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-8.30.0-pyh707e725_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.10.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/jsonpointer-3.0.0-py312h996f985_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2024.10.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2024.10.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.10.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.14.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.10.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.14.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.3.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_0.conda @@ -404,10 +400,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.0.0-h4de3ea5_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h5ad3122_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-hc7b0e1d_2_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h5ad3122_2_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h5ad3122_2_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h14ec2bd_2_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-hb63acf4_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-he2e0623_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-he2e0623_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-hc52ba39_3_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-25_linuxaarch64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlicommon-1.1.0-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlidec-1.1.0-h86ecc28_2.conda @@ -432,12 +428,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libiconv-1.17-h31becfc_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libjpeg-turbo-3.0.0-h31becfc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-25_linuxaarch64_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.3-h86ecc28_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-devel-5.6.3-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.3-h86ecc28_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnghttp2-1.64.0-hc8609a4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.28-pthreads_h9d3fd7e_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-h23a96eb_2_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-h553aec1_3_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.44-hc4a20ef_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.2-h029595c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_1.conda @@ -447,35 +442,35 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libthrift-0.21.0-h154c74f_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.0-hec21d91_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.0-hca96517_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.9.0-h86ecc28_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuv-1.49.2-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libwebp-base-1.4.0-h31becfc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcb-1.17.0-h262b8f6_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.5-hf4efe5d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.5-h2e0c361_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.9.4-hd600fc2_0.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.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120416-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120416-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120416-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120416-release.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.dev2024120616-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120616-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120616-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120616-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.dev2024120416-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120616-release.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/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 - - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.4-pyhff2d567_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-hcccb83c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openjpeg-2.5.2-h0d9d63b_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.0-h86ecc28_0.conda @@ -497,11 +492,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pillow-11.0.0-py312h5ab5af3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pip-24.3.1-pyh8b19718_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.48-pyha770c72_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.2.0-py312hb2c0f52_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.2.1-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/protobuf-5.28.2-py312h6f74592_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/psutil-6.1.0-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pthread-stubs-0.4-h86ecc28_1002.conda @@ -516,7 +511,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyinstrument-5.0.0-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.7-h5d932e8_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.8-h1683364_1_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda @@ -530,25 +525,25 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyzmq-26.2.0-py312h2427ae1_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/re2-2024.07.02-h2d3a13d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8fc344f_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.35.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.35.1-pyhd8ed1ab_1.conda - 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/rfc3339-validator-0.1.4-pyhd8ed1ab_0.tar.bz2 - 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_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/rpds-py-0.22.1-py312ha4e36d7_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_1.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 - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh0d859eb_1.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 - - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-h1088aeb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-hd4fb6f5_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.1.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyh7900ff3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh0d859eb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda @@ -556,11 +551,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py312h52516f5_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.46.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20241003-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda @@ -573,7 +568,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/uvloop-0.21.0-py312hb2c0f52_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/watchfiles-1.0.0-py312h8cbf658_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.8.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.8.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/websockets-14.1-py312hb2c0f52_0.conda @@ -582,11 +577,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxau-1.0.11-h86ecc28_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxdmcp-1.1.5-h57736b2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xxhash-0.8.2-h31becfc_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-5.6.3-h2dbfc1b_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-gpl-tools-5.6.3-h2dbfc1b_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-tools-5.6.3-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yaml-0.2.5-hf897c2e_2.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.18.0-py312hb2c0f52_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.18.3-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zeromq-4.3.5-h5efb499_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstandard-0.23.0-py312hb698573_1.conda @@ -616,7 +608,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.1-h5d7ee29_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-h5d7ee29_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.6-h8474b10_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.449-h3b64406_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-h3b64406_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.14.0-hd50102c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.10.0-hc602bab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-blobs-cpp-12.13.0-h7585a09_1.conda @@ -637,7 +629,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/debugpy-1.8.9-py312hd8f9ff3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.1.1-pyhd8ed1ab_1.conda @@ -650,13 +642,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/entrypoints-0.4-pyhd8ed1ab_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/executing-2.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.5-pyhff2d567_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/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 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/frozenlist-1.5.0-py312h0bf5046_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gflags-2.2.2-hf9b8971_1005.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/glog-0.7.1-heb240a5_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda @@ -665,28 +657,29 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/httptools-0.6.4-py312hea69d52_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-7.0.2-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.4.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh57ce528_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-8.30.0-pyh707e725_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.10.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/jsonpointer-3.0.0-py312h81bd7bf_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2024.10.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2024.10.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.10.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.14.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.10.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.14.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.3.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_0.conda @@ -694,10 +687,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.16-ha0e7c42_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_hf9b8971_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-h654e1bb_2_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-h605b82c_2_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-h605b82c_2_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-h9b432b6_2_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-h5affd47_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-haafc02e_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-haafc02e_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-h4c1644f_3_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-25_osxarm64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.1.0-hd74edd7_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.1.0-hd74edd7_2.conda @@ -720,11 +713,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.17-h0d3ecfb_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.0.0-hb547adb_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-25_osxarm64_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.3-h39f12f2_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-devel-5.6.3-h39f12f2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.3-h39f12f2_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.64.0-h6d7220d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.28-openmp_hf332438_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-h5168bdf_2_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-h3a603ae_3_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.44-hc14010f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.2-h8f0b736_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h2348fd5_1.conda @@ -732,34 +724,34 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.47.0-hbaaea75_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.1-h9cc3647_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libthrift-0.21.0-h64651cc_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-hfce79cd_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-ha962b0a_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.9.0-h5505292_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libuv-1.49.2-h7ab814d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.4.0-h93a5062_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxcb-1.17.0-hdb1d25a_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.5-h376fa9f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.5-h178c5d8_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.4-hdb05f8b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.5-hdb05f8b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.9.4-hb7217d7_0.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.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120416-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120416-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120416-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120416-release.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.dev2024120616-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120616-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120616-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120616-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.dev2024120416-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120616-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 - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.4-pyhff2d567_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h7bae524_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openjpeg-2.5.2-h9f1df11_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.0-h39f12f2_0.conda @@ -781,11 +773,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-11.0.0-py312haf37ca6_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pip-24.3.1-pyh8b19718_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.48-pyha770c72_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.0-py312h024a12e_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.1-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/protobuf-5.28.2-py312hf02c72a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/psutil-6.1.0-py312h0bf5046_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pthread-stubs-0.4-hd74edd7_1002.conda @@ -802,7 +794,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-core-10.3.2-py312hb9d441b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-framework-cocoa-10.3.2-py312hb9d441b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.7-h739c21a_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.8-hc22306f_1_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda @@ -816,24 +808,24 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.0-py312hf8a1cbd_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/re2-2024.07.02-hcd0e937_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h92ec313_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.35.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.35.1-pyhd8ed1ab_1.conda - 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/rfc3339-validator-0.1.4-pyhd8ed1ab_0.tar.bz2 - 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_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/rpds-py-0.22.1-py312hcd83bfe_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_1.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 - 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 - - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-hd02b534_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-h98b9ce2_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.1.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyh7900ff3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh31c8845_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda @@ -841,11 +833,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.46.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20241003-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda @@ -858,7 +850,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/uvloop-0.21.0-py312h0bf5046_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/watchfiles-1.0.0-py312hcd83bfe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.8.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.8.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/websockets-14.1-py312hea69d52_0.conda @@ -867,11 +859,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxau-1.0.11-hd74edd7_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxdmcp-1.1.5-hd74edd7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xxhash-0.8.2-hb547adb_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xz-5.6.3-h9a6d368_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xz-gpl-tools-5.6.3-h9a6d368_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xz-tools-5.6.3-h39f12f2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.18.0-py312hea69d52_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.18.3-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py312h15fbf35_1.conda @@ -936,6 +925,7 @@ packages: depends: - python >=3.9 license: PSF-2.0 + license_family: PSF size: 19351 timestamp: 1733332029649 - kind: conda @@ -1024,6 +1014,7 @@ packages: - frozenlist >=1.1.0 - python >=3.9 license: Apache-2.0 + license_family: APACHE size: 13157 timestamp: 1733332198143 - kind: conda @@ -1893,13 +1884,12 @@ packages: timestamp: 1733333955728 - kind: conda name: aws-sdk-cpp - version: 1.11.449 - build: h3b64406_4 - build_number: 4 + version: 1.11.458 + build: h3b64406_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.449-h3b64406_4.conda - sha256: 10ce9c203d31229432421a841d8d135d3e942637571aae4bb2d3c7d5242e7f05 - md5: f9e46a4bb5a04cbca08355f166ce87c8 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-h3b64406_0.conda + sha256: ded5412750f5c29bdf8ef6bc5ab26e443dc4943bd69c9098a791d8a2bf9b184e + md5: 9a8d3ba158ff8ea08e17de366c238706 depends: - __osx >=11.0 - aws-c-common >=0.10.3,<0.10.4.0a0 @@ -1912,17 +1902,16 @@ packages: - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 2722689 - timestamp: 1732812825640 + size: 2853609 + timestamp: 1733389337912 - kind: conda name: aws-sdk-cpp - version: 1.11.449 - build: h5558e3c_4 - build_number: 4 + version: 1.11.458 + build: h5558e3c_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.449-h5558e3c_4.conda - sha256: 4881f7b4f5e3c797332cffb990df246a422346b220a9c16014f274beb2a276f5 - md5: ba7abdc93b0ade11d774b47aaab84737 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-h5558e3c_0.conda + sha256: 7eab747a5a3e1a46b9c85c591c30ca2d4e90c2cebeaec95c4fe016846efdfa14 + md5: b1919becd17fe224aacf708114231fda depends: - __glibc >=2.17,<3.0.a0 - aws-c-common >=0.10.3,<0.10.4.0a0 @@ -1936,17 +1925,16 @@ packages: - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 2945541 - timestamp: 1732812288219 + size: 3059100 + timestamp: 1733388777418 - kind: conda name: aws-sdk-cpp - version: 1.11.449 - build: h7085e57_4 - build_number: 4 + version: 1.11.458 + build: h7085e57_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.449-h7085e57_4.conda - sha256: 0908a82e7c50c51d5ee0ca543dbe70cbe1963e6e8f80ffa58ea6d26e5c68251e - md5: feec198cb18a5e90aa36c97328567d63 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h7085e57_0.conda + sha256: 6d5327305721d18d650a3f8a377dc30e65600f59bd33fd4fcad106965b09b6b8 + md5: 005e0cc687a2421a4ad493e5b7058abe depends: - aws-c-common >=0.10.3,<0.10.4.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 @@ -1959,8 +1947,8 @@ packages: - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 2813856 - timestamp: 1732812337182 + size: 2903434 + timestamp: 1733388870289 - kind: conda name: azure-core-cpp version: 1.14.0 @@ -2644,19 +2632,20 @@ packages: - kind: conda name: comm version: 0.2.2 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_0.conda - sha256: e923acf02708a8a0b591f3bce4bdc11c8e63b73198b99b35fe6cd96bfb6a0dbe - md5: 948d84721b578d426294e17a02e24cbb + url: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda + sha256: 7e87ef7c91574d9fac19faedaaee328a70f718c9b4ddadfdc0ba9ac021bd64af + md5: 74673132601ec2b7fc592755605f4c1b depends: - - python >=3.6 + - python >=3.9 - traitlets >=5.3 license: BSD-3-Clause license_family: BSD - size: 12134 - timestamp: 1710320435158 + size: 12103 + timestamp: 1733503053903 - kind: conda name: datasets version: 2.14.4 @@ -2908,13 +2897,13 @@ packages: timestamp: 1725214501850 - kind: conda name: fastapi - version: 0.115.5 - build: pyhff2d567_0 + version: 0.115.6 + build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.5-pyhff2d567_0.conda - sha256: da2833cc2ea5789abc2a6899be02ba0a769386d4913ff182bd1a9458bea40c34 - md5: cfe0f8cd904ab19c36ba50eb5179ebe0 + url: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.6-pyhd8ed1ab_0.conda + sha256: d7826d537c667093c9de96411a09585a8d620c84a830a0195e58e9a0df45f018 + md5: 1b1e0c97830cdf75f1f371bd467ab657 depends: - email_validator >=2.0.0 - fastapi-cli >=0.0.5 @@ -2928,8 +2917,8 @@ packages: - uvicorn-standard >=0.12.0 license: MIT license_family: MIT - size: 73541 - timestamp: 1731452895466 + size: 73084 + timestamp: 1733362427885 - kind: conda name: fastapi-cli version: 0.0.5 @@ -3081,18 +3070,18 @@ packages: - kind: conda name: fsspec version: 2024.10.0 - build: pyhff2d567_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhff2d567_0.conda - sha256: 40bb76981dd49d5869b48925a8975bb7bbe4e33e1e40af4ec06f6bf4a62effd7 - md5: 816dbc4679a64e4417cd1385d661bb31 + url: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhd8ed1ab_1.conda + sha256: 790a50b4f94042951518f911a914a886a837c926094c6a14ed1d9d03ce336807 + md5: 906fe13095e734cb413b57a49116cdc8 depends: - - python >=3.8 + - python >=3.9 license: BSD-3-Clause - license_family: BSD - size: 134745 - timestamp: 1729608972363 + size: 134726 + timestamp: 1733493445080 - kind: conda name: gflags version: 2.2.2 @@ -3332,12 +3321,13 @@ packages: - kind: conda name: httpx version: 0.28.0 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_0.conda - sha256: cb7895446cd93091300accea6afbc8d9811a3c5899922ccfeeff97d9b55909dc - md5: 22878824a87f1af2ad48665f9d5bfcc8 + url: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_1.conda + sha256: 0b864abaa9f1443fc42368b4d2a4f4efb9971a53f961d1fe30fabd7fbdd76b27 + md5: 8a4a83ba566c6b5c718dd0531a362d01 depends: - anyio - certifi @@ -3346,8 +3336,8 @@ packages: - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 63183 - timestamp: 1732831049776 + size: 63203 + timestamp: 1733501478172 - kind: conda name: huggingface_hub version: 0.26.3 @@ -3402,6 +3392,20 @@ packages: license_family: MIT size: 12282786 timestamp: 1720853454991 +- kind: conda + name: icu + version: '75.1' + build: hfee45f7_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda + sha256: 9ba12c93406f3df5ab0a43db8a4b4ef67a5871dfd401010fbe29b218b2cbe620 + md5: 5eb22c1d7b3fc4abb50d92d621583137 + depends: + - __osx >=11.0 + license: MIT + license_family: MIT + size: 11857802 + timestamp: 1720853997952 - kind: conda name: idna version: '3.10' @@ -3540,19 +3544,19 @@ packages: - kind: conda name: isoduration version: 20.11.0 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_0.tar.bz2 - sha256: 7bb5c4d994361022f47a807b5e7d101b3dce16f7dd8a0af6ffad9f479d346493 - md5: 4cb68948e0b8429534380243d063a27a + url: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda + sha256: 08e838d29c134a7684bca0468401d26840f41c92267c4126d7b43a6b533b0aed + md5: 0b0154421989637d424ccf0f104be51a depends: - arrow >=0.15.0 - - python >=3.7 + - python >=3.9 license: MIT - license_family: MIT - size: 17189 - timestamp: 1638811664194 + size: 19832 + timestamp: 1733493720346 - kind: conda name: jedi version: 0.19.2 @@ -3655,49 +3659,50 @@ packages: - kind: conda name: jsonschema version: 4.23.0 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_0.conda - sha256: 7d0c4c0346b26be9f220682b7c5c0d84606d48c6dbc36fc238e4452dda733aff - md5: da304c192ad59975202859b367d0f6a2 + url: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_1.conda + sha256: be992a99e589146f229c58fe5083e0b60551d774511c494f91fe011931bd7893 + md5: a3cead9264b331b32fe8f0aabc967522 depends: - attrs >=22.2.0 - importlib_resources >=1.4.0 - jsonschema-specifications >=2023.03.6 - pkgutil-resolve-name >=1.3.10 - - python >=3.8 + - python >=3.9 - referencing >=0.28.4 - rpds-py >=0.7.1 license: MIT - license_family: MIT - size: 74323 - timestamp: 1720529611305 + size: 74256 + timestamp: 1733472818764 - kind: conda name: jsonschema-specifications version: 2024.10.1 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2024.10.1-pyhd8ed1ab_0.conda - sha256: 82f8bed0f21dc0b3aff40dd4e39d77e85b93b0417bc5659b001e0109341b8b98 - md5: 720745920222587ef942acfbc578b584 + url: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2024.10.1-pyhd8ed1ab_1.conda + sha256: 37127133837444cf0e6d1a95ff5a505f8214ed4e89e8e9343284840e674c6891 + md5: 3b519bc21bc80e60b456f1e62962a766 depends: - - python >=3.8 + - python >=3.9 - referencing >=0.31.0 license: MIT - license_family: MIT - size: 16165 - timestamp: 1728418976382 + size: 16170 + timestamp: 1733493624968 - kind: conda name: jsonschema-with-format-nongpl version: 4.23.0 - build: hd8ed1ab_0 + build: hd8ed1ab_1 + build_number: 1 subdir: noarch noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_0.conda - sha256: 007a0a506a0d1805b099629cb0ee743ad0afe7d9749e57339f32c168119e0139 - md5: 16b37612b3a2fd77f409329e213b530c + url: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_1.conda + sha256: 6e0184530011961a0802fda100ecdfd4b0eca634ed94c37e553b72e21c26627d + md5: a5b1a8065857cc4bd8b7a38d063bb728 depends: - fqdn - idna @@ -3709,47 +3714,48 @@ packages: - uri-template - webcolors >=24.6.0 license: MIT - license_family: MIT - size: 7143 - timestamp: 1720529619500 + size: 7135 + timestamp: 1733472820035 - kind: conda name: jupyter-lsp version: 2.2.5 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_0.conda - sha256: 2151c2c63e0442a4c69ee0ad8a634195eedab10b7b74c0ec8266471842239a93 - md5: 885867f6adab3d7ecdf8ab6ca0785f51 + url: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_1.conda + sha256: 1565c8b1423a37fca00fe0ab2a17cd8992c2ecf23e7867a1c9f6f86a9831c196 + md5: 0b4c3908e5a38ea22ebb98ee5888c768 depends: - importlib-metadata >=4.8.3 - jupyter_server >=1.1.2 - - python >=3.8 + - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 55539 - timestamp: 1712707521811 + size: 55221 + timestamp: 1733493006611 - kind: conda name: jupyter_client version: 8.6.3 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_0.conda - sha256: 4419c85e209a715f551a5c9bead746f29ee9d0fc41e772a76db3868622795671 - md5: a14218cfb29662b4a19ceb04e93e298e + url: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + sha256: 19d8bd5bb2fde910ec59e081eeb59529491995ce0d653a5209366611023a0b3a + md5: 4ebae00eae9705b0c3d6d1018a81d047 depends: - importlib-metadata >=4.8.3 - jupyter_core >=4.12,!=5.0.* - - python >=3.8 + - python >=3.9 - python-dateutil >=2.8.2 - pyzmq >=23.0 - tornado >=6.2 - traitlets >=5.3 license: BSD-3-Clause license_family: BSD - size: 106055 - timestamp: 1726610805505 + size: 106342 + timestamp: 1733441040958 - kind: conda name: jupyter_core version: 5.7.2 @@ -3772,15 +3778,16 @@ packages: - kind: conda name: jupyter_events version: 0.10.0 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.10.0-pyhd8ed1ab_0.conda - sha256: cd3f41dc093162a41d4bae171e40a1b9b115c4d488e9bb837a8fa9d084931fb9 - md5: ed45423c41b3da15ea1df39b1f80c2ca + url: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.10.0-pyhd8ed1ab_1.conda + sha256: d7fa4c627d56ce8dc02f09f358757f8fd49eb6137216dc99340a6b4efc7e0491 + md5: 62186e6383f38cc6a3466f0fadde3f2e depends: - jsonschema-with-format-nongpl >=4.18.0 - - python >=3.8 + - python >=3.9 - python-json-logger >=2.0.4 - pyyaml >=5.3 - referencing @@ -3789,17 +3796,18 @@ packages: - traitlets >=5.3 license: BSD-3-Clause license_family: BSD - size: 21475 - timestamp: 1710805759187 + size: 21434 + timestamp: 1733441420606 - kind: conda name: jupyter_server version: 2.14.2 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.14.2-pyhd8ed1ab_0.conda - sha256: edab71a05feceac54bdb90e755a257545af7832b9911607c1a70f09be44ba985 - md5: ca23c71f70a7c7935b3d03f0f1a5801d + url: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.14.2-pyhd8ed1ab_1.conda + sha256: 082d3517455339c8baea245a257af249758ccec26b8832d969ac928901c234cc + md5: 81ea84b3212287f926e35b9036192963 depends: - anyio >=3.1.0 - argon2-cffi >=21.1 @@ -3813,7 +3821,7 @@ packages: - overrides >=5.0 - packaging >=22.0 - prometheus_client >=0.9 - - python >=3.8 + - python >=3.9 - pyzmq >=24 - send2trash >=1.8.2 - terminado >=0.8.3 @@ -3822,24 +3830,24 @@ packages: - websocket-client >=1.7 license: BSD-3-Clause license_family: BSD - size: 323978 - timestamp: 1720816754998 + size: 324289 + timestamp: 1733428731329 - kind: conda name: jupyter_server_terminals version: 0.5.3 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_0.conda - sha256: 038efbc7e4b2e72d49ed193cfb2bbbe9fbab2459786ce9350301f466a32567db - md5: 219b3833aa8ed91d47d1be6ca03f30be + url: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda + sha256: 0890fc79422191bc29edf17d7b42cff44ba254aa225d31eb30819f8772b775b8 + md5: 2d983ff1b82a1ccb6f2e9d8784bdd6bd depends: - - python >=3.8 + - python >=3.9 - terminado >=0.8.3 license: BSD-3-Clause - license_family: BSD - size: 19818 - timestamp: 1710262791393 + size: 19711 + timestamp: 1733428049134 - kind: conda name: jupyterlab version: 4.3.2 @@ -4180,16 +4188,16 @@ packages: - kind: conda name: libarrow version: 18.1.0 - build: h654e1bb_2_cpu - build_number: 2 + build: h5affd47_3_cpu + build_number: 3 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-h654e1bb_2_cpu.conda - sha256: 925dcb034f36536eed21d9323f096bf2ebf1111d14c61e1ae0b90e5de131f1e1 - md5: e69934ff9dd8745fea8927028d1603ee + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-h5affd47_3_cpu.conda + sha256: 9dac7f7b96972a3c18549d8669269233ae9e7b25da56161bd85a86b98ca61f76 + md5: 3dc73b42851e6096542458eaf2c074ca depends: - __osx >=11.0 - aws-crt-cpp >=0.29.6,<0.29.7.0a0 - - aws-sdk-cpp >=1.11.449,<1.11.450.0a0 + - aws-sdk-cpp >=1.11.458,<1.11.459.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-identity-cpp >=1.10.0,<1.10.1.0a0 - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 @@ -4213,24 +4221,23 @@ packages: - zstd >=1.5.6,<1.6.0a0 constrains: - arrow-cpp <0.0a0 - - parquet-cpp <0.0a0 - apache-arrow-proc =*=cpu + - parquet-cpp <0.0a0 license: Apache-2.0 - license_family: APACHE - size: 5475725 - timestamp: 1732947802614 + size: 5487846 + timestamp: 1733450423101 - kind: conda name: libarrow version: 18.1.0 - build: hc7b0e1d_2_cpu - build_number: 2 + build: hb63acf4_3_cpu + build_number: 3 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-hc7b0e1d_2_cpu.conda - sha256: 3201944d1f97b9207e566ccf388c8376bb2ce7e461534cda63a28975b6790901 - md5: 4a46bd0be8e7f56a217d26b79d290a0e + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-hb63acf4_3_cpu.conda + sha256: e972904b472008f902df9e584f59ff7716fc22efc1124d1dfc41c931852acc75 + md5: d98a11c3ba32554873aeb6a071baceaa depends: - aws-crt-cpp >=0.29.6,<0.29.7.0a0 - - aws-sdk-cpp >=1.11.449,<1.11.450.0a0 + - aws-sdk-cpp >=1.11.458,<1.11.459.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-identity-cpp >=1.10.0,<1.10.1.0a0 - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 @@ -4255,26 +4262,25 @@ packages: - snappy >=1.2.1,<1.3.0a0 - zstd >=1.5.6,<1.6.0a0 constrains: + - parquet-cpp <0.0a0 - apache-arrow-proc =*=cpu - arrow-cpp <0.0a0 - - parquet-cpp <0.0a0 license: Apache-2.0 - license_family: APACHE - size: 8026783 - timestamp: 1732950110265 + size: 8048003 + timestamp: 1733452700958 - kind: conda name: libarrow version: 18.1.0 - build: he15abb1_1_cpu - build_number: 1 + build: hcf3f2e3_3_cpu + build_number: 3 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-he15abb1_1_cpu.conda - sha256: afc81af2e533cc35295aebae4fb382e770310d9b1ac31837456b440d35c54cf7 - md5: bd3e35a6f3f869b4777488452f315008 + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-hcf3f2e3_3_cpu.conda + sha256: a82f66f0a37ed3132e6b9faff9285d7ccbe950ccfe84edd6378fdee70ef2743e + md5: 196823c7752608cb6b5d5a7a33b17410 depends: - __glibc >=2.17,<3.0.a0 - aws-crt-cpp >=0.29.6,<0.29.7.0a0 - - aws-sdk-cpp >=1.11.449,<1.11.450.0a0 + - aws-sdk-cpp >=1.11.458,<1.11.459.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-identity-cpp >=1.10.0,<1.10.1.0a0 - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 @@ -4291,7 +4297,7 @@ packages: - libgoogle-cloud-storage >=2.31.0,<2.32.0a0 - libre2-11 >=2024.7.2 - libstdcxx >=13 - - libutf8proc >=2.8.0,<2.9.0a0 + - libutf8proc >=2.9.0,<2.10.0a0 - libzlib >=1.3.1,<2.0a0 - lz4-c >=1.9.3,<1.10.0a0 - orc >=2.0.3,<2.0.4.0a0 @@ -4299,190 +4305,180 @@ packages: - snappy >=1.2.1,<1.3.0a0 - zstd >=1.5.6,<1.6.0a0 constrains: + - apache-arrow-proc =*=cpu - parquet-cpp <0.0a0 - arrow-cpp <0.0a0 - - apache-arrow-proc =*=cpu license: Apache-2.0 - license_family: APACHE - size: 8780597 - timestamp: 1732863546099 + size: 8796519 + timestamp: 1733453489520 - kind: conda name: libarrow-acero version: 18.1.0 - build: h5888daf_1_cpu - build_number: 1 + build: h36004a0_3_cpu + build_number: 3 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-h5888daf_1_cpu.conda - sha256: 3de5719a7035baad7e665116dce7bb3d069f0c1916e163c553e2e491bbe8b614 - md5: 6197dcb930f6254e9b2fdc416be56b71 + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-h36004a0_3_cpu.conda + sha256: 0733a303b2dd5998489099d6c258ee442d3f8243379d339f57700554d696fe41 + md5: 6d8f74ac97166e09cdf02109ed9905ce depends: - __glibc >=2.17,<3.0.a0 - - libarrow 18.1.0 he15abb1_1_cpu + - libarrow 18.1.0 hcf3f2e3_3_cpu - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 - license_family: APACHE - size: 611272 - timestamp: 1732863586114 + size: 612773 + timestamp: 1733453636002 - kind: conda name: libarrow-acero version: 18.1.0 - build: h5ad3122_2_cpu - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h5ad3122_2_cpu.conda - sha256: e6c8988d1d79163d6d13dda21f9e401f5df4b3af7e0d221718522c600894adcf - md5: 14fede66c995f3cf958797e9fb567e22 - depends: - - libarrow 18.1.0 hc7b0e1d_2_cpu - - libgcc >=13 - - libstdcxx >=13 - license: Apache-2.0 - license_family: APACHE - size: 577510 - timestamp: 1732950190684 -- kind: conda - name: libarrow-acero - version: 18.1.0 - build: h605b82c_2_cpu - build_number: 2 + build: haafc02e_3_cpu + build_number: 3 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-h605b82c_2_cpu.conda - sha256: cfe32f1b0712b77d2c792a839fe4ea2790cabd99d47cd8e1b20ba2d3c8b113b2 - md5: 60351279d7dfd7c254c46aabf9aa35a6 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-haafc02e_3_cpu.conda + sha256: 214df0ac0f44dd792193d11c84dbf79a42ed0f663c7b1a06aa5ab755b93c1948 + md5: f3a050129b5012bd5fc381693f6eb2cd depends: - __osx >=11.0 - - libarrow 18.1.0 h654e1bb_2_cpu + - libarrow 18.1.0 h5affd47_3_cpu - libcxx >=18 license: Apache-2.0 - license_family: APACHE - size: 483362 - timestamp: 1732948000606 + size: 483753 + timestamp: 1733450627207 - kind: conda - name: libarrow-dataset + name: libarrow-acero version: 18.1.0 - build: h5888daf_1_cpu - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-h5888daf_1_cpu.conda - sha256: 7b3db3d5a7e411f8897e8d74403c1d871f3054300f5009c4bdf75da011bc3f42 - md5: 77501831a2aabbaabac55e8cb3b6900a + build: he2e0623_3_cpu + build_number: 3 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-he2e0623_3_cpu.conda + sha256: 1560efabce824155dd841219c299c71352594b5e237dce0879c2d8f50c16047a + md5: fa54002b982019ecc0e93cb4b2c493e9 depends: - - __glibc >=2.17,<3.0.a0 - - libarrow 18.1.0 he15abb1_1_cpu - - libarrow-acero 18.1.0 h5888daf_1_cpu + - libarrow 18.1.0 hb63acf4_3_cpu - libgcc >=13 - - libparquet 18.1.0 h6bd9018_1_cpu - libstdcxx >=13 license: Apache-2.0 - license_family: APACHE - size: 585458 - timestamp: 1732863686753 + size: 578323 + timestamp: 1733452783322 - kind: conda name: libarrow-dataset version: 18.1.0 - build: h5ad3122_2_cpu - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h5ad3122_2_cpu.conda - sha256: 53cdae2150c22ef9b5d6de8d0ee8ac52eeacc50fdfa2fa3ea644b52436d1eeb1 - md5: c54d83f012a40fef8a2dc4856e4340a0 + build: h36004a0_3_cpu + build_number: 3 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-h36004a0_3_cpu.conda + sha256: d5a0b4a2129a540548b0232df23e6940fe73d54e5ace5a31f5419d96a059f317 + md5: e9eac639d83b1c35f7743845b922d61a depends: - - libarrow 18.1.0 hc7b0e1d_2_cpu - - libarrow-acero 18.1.0 h5ad3122_2_cpu + - __glibc >=2.17,<3.0.a0 + - libarrow 18.1.0 hcf3f2e3_3_cpu + - libarrow-acero 18.1.0 h36004a0_3_cpu - libgcc >=13 - - libparquet 18.1.0 h23a96eb_2_cpu + - libparquet 18.1.0 hbdb145b_3_cpu - libstdcxx >=13 license: Apache-2.0 - license_family: APACHE - size: 559143 - timestamp: 1732950272727 + size: 585416 + timestamp: 1733454137952 - kind: conda name: libarrow-dataset version: 18.1.0 - build: h605b82c_2_cpu - build_number: 2 + build: haafc02e_3_cpu + build_number: 3 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-h605b82c_2_cpu.conda - sha256: eeae9e8d382c482076f4739455b53f16851d7f99be219b6f96dd4e765132b446 - md5: b5fcaddabf47aa15e50feff072a55ada + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-haafc02e_3_cpu.conda + sha256: 7b105d363d5f71db88454b304e44166c17b2970ddb0297b482f3d8b39fb39308 + md5: 8c57e5a50f865a16cafd92f5a32c9faa depends: - __osx >=11.0 - - libarrow 18.1.0 h654e1bb_2_cpu - - libarrow-acero 18.1.0 h605b82c_2_cpu + - libarrow 18.1.0 h5affd47_3_cpu + - libarrow-acero 18.1.0 haafc02e_3_cpu - libcxx >=18 - - libparquet 18.1.0 h5168bdf_2_cpu + - libparquet 18.1.0 h3a603ae_3_cpu license: Apache-2.0 - license_family: APACHE - size: 489769 - timestamp: 1732949732423 + size: 489900 + timestamp: 1733452479126 - kind: conda - name: libarrow-substrait + name: libarrow-dataset version: 18.1.0 - build: h14ec2bd_2_cpu - build_number: 2 + build: he2e0623_3_cpu + build_number: 3 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h14ec2bd_2_cpu.conda - sha256: e8923d62cfaadc4a8af1735e717fd4980cad693419e63aed04380566d9fd46df - md5: 4fd0103449cf40214fd348643aa78fff + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-he2e0623_3_cpu.conda + sha256: b26a03f529a4b87dcf523b012f9ccdac124b65f41801da7eb489192916e447ff + md5: 048f04da68a40e9e5e1e66ff9502b237 + depends: + - libarrow 18.1.0 hb63acf4_3_cpu + - libarrow-acero 18.1.0 he2e0623_3_cpu + - libgcc >=13 + - libparquet 18.1.0 h553aec1_3_cpu + - libstdcxx >=13 + license: Apache-2.0 + size: 559844 + timestamp: 1733453065157 +- kind: conda + name: libarrow-substrait + version: 18.1.0 + build: h4c1644f_3_cpu + build_number: 3 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-h4c1644f_3_cpu.conda + sha256: 562c344d57b718aa838ccc01acae240d9ab33dd2da7db40dbe75d1db6b441e71 + md5: 7ba2783c26a0008307e2a1e637c2930f depends: + - __osx >=11.0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.1.0 hc7b0e1d_2_cpu - - libarrow-acero 18.1.0 h5ad3122_2_cpu - - libarrow-dataset 18.1.0 h5ad3122_2_cpu - - libgcc >=13 + - libarrow 18.1.0 h5affd47_3_cpu + - libarrow-acero 18.1.0 haafc02e_3_cpu + - libarrow-dataset 18.1.0 haafc02e_3_cpu + - libcxx >=18 - libprotobuf >=5.28.2,<5.28.3.0a0 - - libstdcxx >=13 license: Apache-2.0 - license_family: APACHE - size: 515352 - timestamp: 1732950311471 + size: 451428 + timestamp: 1733453012619 - kind: conda name: libarrow-substrait version: 18.1.0 - build: h5c8f2c3_1_cpu - build_number: 1 + build: h56a123c_3_cpu + build_number: 3 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-h5c8f2c3_1_cpu.conda - sha256: e77a354bfc0ba7b04c856f1bb16e7b08950bcde54026087bafec46090380fcc1 - md5: 5d47bd2674afd104dbe2f2f3534594b0 + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-h56a123c_3_cpu.conda + sha256: 139104d80048382c48718a65721b24fa4d69abd6c2052ee1ab20f32b7d48228d + md5: 306bb541b83a83b66d5c1e6880302886 depends: - __glibc >=2.17,<3.0.a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.1.0 he15abb1_1_cpu - - libarrow-acero 18.1.0 h5888daf_1_cpu - - libarrow-dataset 18.1.0 h5888daf_1_cpu + - libarrow 18.1.0 hcf3f2e3_3_cpu + - libarrow-acero 18.1.0 h36004a0_3_cpu + - libarrow-dataset 18.1.0 h36004a0_3_cpu - libgcc >=13 - libprotobuf >=5.28.2,<5.28.3.0a0 - libstdcxx >=13 license: Apache-2.0 - license_family: APACHE - size: 520681 - timestamp: 1732863726954 + size: 520740 + timestamp: 1733454379083 - kind: conda name: libarrow-substrait version: 18.1.0 - build: h9b432b6_2_cpu - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-h9b432b6_2_cpu.conda - sha256: 6dde802134bd2e78581eb838c049b2e7e378899706b471f7072222a6b1284b90 - md5: 49e7c0460532a73f34bd127fff009224 + build: hc52ba39_3_cpu + build_number: 3 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-hc52ba39_3_cpu.conda + sha256: 66f2c06ad10d8886e53661420c5b73de217a088ee4693186deec7df292f9c766 + md5: 7a8e305f1689687ed063bb4553c1a7a5 depends: - - __osx >=11.0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.1.0 h654e1bb_2_cpu - - libarrow-acero 18.1.0 h605b82c_2_cpu - - libarrow-dataset 18.1.0 h605b82c_2_cpu - - libcxx >=18 + - libarrow 18.1.0 hb63acf4_3_cpu + - libarrow-acero 18.1.0 he2e0623_3_cpu + - libarrow-dataset 18.1.0 he2e0623_3_cpu + - libgcc >=13 - libprotobuf >=5.28.2,<5.28.3.0a0 + - libstdcxx >=13 license: Apache-2.0 - license_family: APACHE - size: 451127 - timestamp: 1732950194322 + size: 515638 + timestamp: 1733453200561 - kind: conda name: libblas version: 3.9.0 @@ -5689,86 +5685,46 @@ packages: - kind: conda name: liblzma version: 5.6.3 - build: h39f12f2_0 + build: h39f12f2_1 + build_number: 1 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.3-h39f12f2_0.conda - sha256: de00d627e41636591d05407c666de957a9ddd3c0f633340c016725695569b049 - md5: faa0ab222b9d12a52a8ebc655c9236f3 + url: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.3-h39f12f2_1.conda + sha256: d863b8257406918ffdc50ae65502f2b2d6cede29404d09a094f59509d6a0aaf1 + md5: b2553114a7f5e20ccd02378a77d836aa depends: - __osx >=11.0 license: 0BSD - size: 98836 - timestamp: 1733321533638 + size: 99129 + timestamp: 1733407496073 - kind: conda name: liblzma version: 5.6.3 - build: h86ecc28_0 + build: h86ecc28_1 + build_number: 1 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.3-h86ecc28_0.conda - sha256: 004785e427d255da8cf713b4722f8330bf496ce6fc665a0b21d007d377ffee5f - md5: 83d366f7bf01fc2d7781b4cc113fc9d3 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.3-h86ecc28_1.conda + sha256: d1cce0b7d62d1e54e2164d3e0667ee808efc6c3870256e5b47a150cd0bf46824 + md5: eb08b903681f9f2432c320e8ed626723 depends: - libgcc >=13 license: 0BSD - size: 124115 - timestamp: 1733323693681 + size: 124138 + timestamp: 1733409137214 - kind: conda name: liblzma version: 5.6.3 - build: hb9d3cd8_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.3-hb9d3cd8_0.conda - sha256: 31637db828ec67ab8697de324e6074af5a36cbeddc37202d8d31e2fb397619e8 - md5: 137c535dddd880f844f33ed91b8abdba - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - license: 0BSD - size: 111223 - timestamp: 1733321312512 -- kind: conda - name: liblzma-devel - version: 5.6.3 - build: h39f12f2_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-devel-5.6.3-h39f12f2_0.conda - sha256: 2e5a9fb298bd8c01ceed8db386bfb0a125d74cef2c5ee615b4f9695b2808f7e0 - md5: 89955d2470cbacea3d5e069d67c94f44 - depends: - - __osx >=11.0 - - liblzma 5.6.3 h39f12f2_0 - license: 0BSD - size: 112941 - timestamp: 1733321552604 -- kind: conda - name: liblzma-devel - version: 5.6.3 - build: h86ecc28_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-devel-5.6.3-h86ecc28_0.conda - sha256: 740b3f1ffa57ad5f0eec0c868e23d4e1f811871c6685a04af57f1943cde1a575 - md5: 27995ae8bc93eeb949315655daa19d3c - depends: - - libgcc >=13 - - liblzma 5.6.3 h86ecc28_0 - license: 0BSD - size: 376767 - timestamp: 1733323860026 -- kind: conda - name: liblzma-devel - version: 5.6.3 - build: hb9d3cd8_0 + build: hb9d3cd8_1 + build_number: 1 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/liblzma-devel-5.6.3-hb9d3cd8_0.conda - sha256: 98020d4b4cc6c728d2e6dc1174cb2548cf03ce5098cd17c37b32f06e896a943a - md5: 7069f4de645461447f1ab7736c94db26 + url: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.3-hb9d3cd8_1.conda + sha256: e6e425252f3839e2756e4af1ea2074dffd3396c161bf460629f9dfd6a65f15c6 + md5: 2ecf2f1c7e4e21fcfe6423a51a992d84 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - - liblzma 5.6.3 hb9d3cd8_0 license: 0BSD - size: 375452 - timestamp: 1733321322415 + size: 111132 + timestamp: 1733407410083 - kind: conda name: libnghttp2 version: 1.64.0 @@ -5920,61 +5876,58 @@ packages: - kind: conda name: libparquet version: 18.1.0 - build: h23a96eb_2_cpu - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-h23a96eb_2_cpu.conda - sha256: 83b8fa4a90e214fcd6018f890947666f055f79563fff2b7c3d5f37d894f3a000 - md5: ce205782960a580fa43cfcccca22ad8d + build: h3a603ae_3_cpu + build_number: 3 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-h3a603ae_3_cpu.conda + sha256: 89f40f0f4e706392b082ee4910fedd2442b57abbf6cbbfb16a00b5aa89beb41d + md5: 78d2f729e26788a3660cee9906f440e7 depends: - - libarrow 18.1.0 hc7b0e1d_2_cpu - - libgcc >=13 - - libstdcxx >=13 + - __osx >=11.0 + - libarrow 18.1.0 h5affd47_3_cpu + - libcxx >=18 - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 - license_family: APACHE - size: 1115906 - timestamp: 1732950250848 + size: 873697 + timestamp: 1733452286970 - kind: conda name: libparquet version: 18.1.0 - build: h5168bdf_2_cpu - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-h5168bdf_2_cpu.conda - sha256: 454487d113974b923b4214a65aab780fd90c4914390d0b1f4640b1bf60537bff - md5: f995df7ee206617a3e858fd932d7bd2d + build: h553aec1_3_cpu + build_number: 3 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-h553aec1_3_cpu.conda + sha256: 965940abe9e49ae7b3adee19bf458f866a0ef35a3cf29d627b2d52c77a96a96b + md5: 46c6783e8b46449a9baabef57c69f30a depends: - - __osx >=11.0 - - libarrow 18.1.0 h654e1bb_2_cpu - - libcxx >=18 + - libarrow 18.1.0 hb63acf4_3_cpu + - libgcc >=13 + - libstdcxx >=13 - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 - license_family: APACHE - size: 872333 - timestamp: 1732949558028 + size: 1116941 + timestamp: 1733452997475 - kind: conda name: libparquet version: 18.1.0 - build: h6bd9018_1_cpu - build_number: 1 + build: hbdb145b_3_cpu + build_number: 3 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-h6bd9018_1_cpu.conda - sha256: 0df119f4c1a2387d910e132c670b29ee5b29dd79384549de6f1a43067515c8ba - md5: 1054909202f86e38bbbb7ca1131b8471 + url: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-hbdb145b_3_cpu.conda + sha256: 034086f71824a3ea77a9bd21029fd4c4ef25b3a95fc77933704b8b49ff55c7f3 + md5: cb249762e1e65941b559d436c60e520d depends: - __glibc >=2.17,<3.0.a0 - - libarrow 18.1.0 he15abb1_1_cpu + - libarrow 18.1.0 hcf3f2e3_3_cpu - libgcc >=13 - libstdcxx >=13 - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 - license_family: APACHE - size: 1203523 - timestamp: 1732863665743 + size: 1204740 + timestamp: 1733454014411 - kind: conda name: libpng version: 1.6.44 @@ -6385,86 +6338,70 @@ packages: - kind: conda name: libtiff version: 4.7.0 - build: he137b08_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-he137b08_1.conda - sha256: 9890121db85f6ef463fe12eb04ef1471176e3ef3b5e2d62e8d6dac713df00df4 - md5: 63872517c98aa305da58a757c443698e + build: ha962b0a_2 + build_number: 2 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-ha962b0a_2.conda + sha256: d9e6835fd189b85eb90dbfdcc51f5375decbf5bb53130042f49bbd6bfb0b24be + md5: 8e14b5225c593f099a21971568e6d7b4 depends: - - __glibc >=2.17,<3.0.a0 + - __osx >=11.0 - lerc >=4.0.0,<5.0a0 + - libcxx >=18 - libdeflate >=1.22,<1.23.0a0 - - libgcc >=13 - libjpeg-turbo >=3.0.0,<4.0a0 - - libstdcxx >=13 + - liblzma >=5.6.3,<6.0a0 - libwebp-base >=1.4.0,<2.0a0 - libzlib >=1.3.1,<2.0a0 - - xz >=5.2.6,<6.0a0 - zstd >=1.5.6,<1.6.0a0 license: HPND - size: 428156 - timestamp: 1728232228989 + size: 370387 + timestamp: 1733443310502 - kind: conda name: libtiff version: 4.7.0 - build: hec21d91_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.0-hec21d91_1.conda - sha256: 14ecb9e129b1b5ffd6d4bee48de95cd2cd0973c712e1b965d3ef977cca23936d - md5: 1f80061f5ba6956fcdc381f34618cd8d + build: hc4654cb_2 + build_number: 2 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hc4654cb_2.conda + sha256: 18653b4a5c73e19c5e86ff72dab9bf59f5cc43d7f404a6be705d152dfd5e0660 + md5: be54fb40ea32e8fe9dbaa94d4528b57e depends: + - __glibc >=2.17,<3.0.a0 - lerc >=4.0.0,<5.0a0 - libdeflate >=1.22,<1.23.0a0 - libgcc >=13 - libjpeg-turbo >=3.0.0,<4.0a0 + - liblzma >=5.6.3,<6.0a0 - libstdcxx >=13 - libwebp-base >=1.4.0,<2.0a0 - libzlib >=1.3.1,<2.0a0 - - xz >=5.2.6,<6.0a0 - zstd >=1.5.6,<1.6.0a0 license: HPND - size: 464938 - timestamp: 1728232266969 + size: 429018 + timestamp: 1733443013288 - kind: conda name: libtiff version: 4.7.0 - build: hfce79cd_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-hfce79cd_1.conda - sha256: 97ba24c74750b6e731b3fe0d2a751cda6148b4937d2cc3f72d43bf7b3885c39d - md5: b9abf45f7c64caf3303725f1aa0e9a4d + build: hca96517_2 + build_number: 2 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.0-hca96517_2.conda + sha256: d736d840d1f2446234195adfcb51b132c85797730b6f42ebf058d350fa9d20e8 + md5: 278dcef6d1ea28c04109c3f5dea126cb depends: - - __osx >=11.0 - lerc >=4.0.0,<5.0a0 - - libcxx >=17 - libdeflate >=1.22,<1.23.0a0 + - libgcc >=13 - libjpeg-turbo >=3.0.0,<4.0a0 + - liblzma >=5.6.3,<6.0a0 + - libstdcxx >=13 - libwebp-base >=1.4.0,<2.0a0 - libzlib >=1.3.1,<2.0a0 - - xz >=5.2.6,<6.0a0 - zstd >=1.5.6,<1.6.0a0 license: HPND - size: 366323 - timestamp: 1728232400072 -- kind: conda - name: libutf8proc - version: 2.8.0 - build: hf23e847_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.8.0-hf23e847_1.conda - sha256: 104cf5b427fc914fec63e55f685a39480abeb4beb34bdbc77dea084c8f5a55cb - md5: b1aa0faa95017bca11369bd080487ec4 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - license: MIT - license_family: MIT - size: 80852 - timestamp: 1732829699583 + size: 464857 + timestamp: 1733443105529 - kind: conda name: libutf8proc version: 2.9.0 @@ -6495,6 +6432,22 @@ packages: license_family: MIT size: 81526 timestamp: 1732868466862 +- kind: conda + name: libutf8proc + version: 2.9.0 + build: hb9d3cd8_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.9.0-hb9d3cd8_1.conda + sha256: 9794e6388e780c3310d46f773bbc924d4053375c3fcdb07a704b57f4616db928 + md5: 1e936bd23d737aac62a18e9a1e7f8b18 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + license: MIT + license_family: MIT + size: 81500 + timestamp: 1732868419835 - kind: conda name: libuuid version: 2.38.1 @@ -6695,60 +6648,62 @@ packages: - kind: conda name: libxml2 version: 2.13.5 - build: h064dc61_0 + build: h0d44e9d_1 + build_number: 1 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.5-h064dc61_0.conda - sha256: 7ab7fb45a0014981d35247cd5b09057fc8ed3c07378086a6c7ad552915928647 - md5: fb16b85a5be1328ac1c44b098b74c570 + url: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.5-h0d44e9d_1.conda + sha256: 306e18aa647d8208ad2cd0e62d84933222b2fbe93d2d53cd5283d2256b1d54de + md5: f5b05674697ae7d2c5932766695945e1 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - libiconv >=1.17,<2.0a0 + - liblzma >=5.6.3,<6.0a0 - libzlib >=1.3.1,<2.0a0 - - xz >=5.2.6,<6.0a0 constrains: - icu <0.0a0 license: MIT license_family: MIT - size: 689363 - timestamp: 1731489619071 + size: 689993 + timestamp: 1733443678322 - kind: conda name: libxml2 version: 2.13.5 - build: h376fa9f_0 + build: h178c5d8_1 + build_number: 1 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.5-h376fa9f_0.conda - sha256: d443703d324f3dbd628d58ea498ab0e474c06d5771e7f55baf215fdbc11ceb87 - md5: adea92805465ed3dcf0776b428e34744 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.5-h178c5d8_1.conda + sha256: d7af3f25a4cece170502acd38f2dafbea4521f373f46dcb28a37fbe6ac2da544 + md5: 3dc3cff0eca1640a6acbbfab2f78139e depends: - __osx >=11.0 + - icu >=75.1,<76.0a0 - libiconv >=1.17,<2.0a0 + - liblzma >=5.6.3,<6.0a0 - libzlib >=1.3.1,<2.0a0 - - xz >=5.2.6,<6.0a0 - constrains: - - icu <0.0a0 license: MIT license_family: MIT - size: 582076 - timestamp: 1731489850179 + size: 582898 + timestamp: 1733443841584 - kind: conda name: libxml2 version: 2.13.5 - build: hf4efe5d_0 + build: h2e0c361_1 + build_number: 1 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.5-hf4efe5d_0.conda - sha256: bb5033bd79371e82886f9e83ef86babae8e0f50b77d7f9302210345b9205d939 - md5: 5650ac8a6ed680c032bdabe40ad19ee0 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.5-h2e0c361_1.conda + sha256: dc0e86d35a836af6e99d18f50c6551fc64c53ed3a3da5a9fea90e78763cf14b4 + md5: 63410f85031930cde371dfe0ee89109a depends: - icu >=75.1,<76.0a0 - libgcc >=13 - libiconv >=1.17,<2.0a0 + - liblzma >=5.6.3,<6.0a0 - libzlib >=1.3.1,<2.0a0 - - xz >=5.2.6,<6.0a0 license: MIT license_family: MIT - size: 734453 - timestamp: 1731489860751 + size: 732155 + timestamp: 1733443825814 - kind: conda name: libzlib version: 1.3.1 @@ -6803,20 +6758,20 @@ packages: timestamp: 1727963148474 - kind: conda name: llvm-openmp - version: 19.1.4 + version: 19.1.5 build: hdb05f8b_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.4-hdb05f8b_0.conda - sha256: dfdcd8de37899d984326f9734b28f46f80b88c068e44c562933a8b3117f2401a - md5: 76ca179ec970bea6e275e2fa477c2d3c + url: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.5-hdb05f8b_0.conda + sha256: e7ba0d8b718925efdcf1309f5e776e3264cc172d3af8d4048b39627c50a1abc0 + md5: f2c2e187a1d2637d282e34dc92021a70 depends: - __osx >=11.0 constrains: - - openmp 19.1.4|19.1.4.* + - openmp 19.1.5|19.1.5.* license: Apache-2.0 WITH LLVM-exception license_family: APACHE - size: 281554 - timestamp: 1732102484807 + size: 281120 + timestamp: 1733376089600 - kind: conda name: lz4-c version: 1.9.4 @@ -6940,91 +6895,92 @@ packages: - kind: conda name: matplotlib-inline version: 0.1.7 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_0.conda - sha256: 7ea68676ea35fbb095420bbcc1c82c4767b8be7bb56abb6989b7f89d957a3bab - md5: 779345c95648be40d22aaa89de7d4254 + url: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda + sha256: 69b7dc7131703d3d60da9b0faa6dd8acbf6f6c396224cf6aef3e855b8c0c41c6 + md5: af6ab708897df59bd6e7283ceab1b56b depends: - - python >=3.6 + - python >=3.9 - traitlets license: BSD-3-Clause license_family: BSD - size: 14599 - timestamp: 1713250613726 + size: 14467 + timestamp: 1733417051523 - kind: conda name: max - version: 24.6.0.dev2024120416 + version: 24.6.0.dev2024120616 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120416-release.conda - sha256: 956c006755158839ee6f8de7d91360cd1990024868d867482a62885241c9794f - md5: 09947b7aa3a3c35b413b7c0d118126e3 + url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120616-release.conda + sha256: 2338e4ad8e940eee4cf31d6ccfb9605bc3aaa0e2331e3c0f40c1063a0d6f4c58 + md5: 562c33b920321a676acb3fc49c2ddb11 depends: - - max-core ==24.6.0.dev2024120416 release - - max-python >=24.6.0.dev2024120416,<25.0a0 - - mojo-jupyter ==24.6.0.dev2024120416 release - - mblack ==24.6.0.dev2024120416 release + - max-core ==24.6.0.dev2024120616 release + - max-python >=24.6.0.dev2024120616,<25.0a0 + - mojo-jupyter ==24.6.0.dev2024120616 release + - mblack ==24.6.0.dev2024120616 release license: LicenseRef-Modular-Proprietary - size: 9925 - timestamp: 1733332193356 + size: 9919 + timestamp: 1733502206770 - kind: conda name: max-core - version: 24.6.0.dev2024120416 + version: 24.6.0.dev2024120616 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120416-release.conda - sha256: e73a6e3abebc4516d56d39b85d10e98883885218273b2ef19c7cfe4d3df7a4ef - md5: 43a976936171480fe7dbc2fed1224312 + url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120616-release.conda + sha256: 626f40a00b28c6958272a368b31944d9d62bd57a931910b1e4520d7501c57b61 + md5: 88e589273bf2ae77f80f879adacd234a depends: - - mblack ==24.6.0.dev2024120416 release + - mblack ==24.6.0.dev2024120616 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 245904359 - timestamp: 1733332193354 + size: 247418489 + timestamp: 1733502146971 - kind: conda name: max-core - version: 24.6.0.dev2024120416 + version: 24.6.0.dev2024120616 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120416-release.conda - sha256: e32ebc6b7f589881f14caec8df02b65c40839a0210ef6a87d85243b61b5fc7d8 - md5: 15cac805514c6a381a9a50ee3a86de25 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120616-release.conda + sha256: af5fcd915dd10f9a72d936fee1b4a32127725a072fb6df41b7a3f43997f3ac3b + md5: 5243c455575512a6061067e3b5d67e0f depends: - - mblack ==24.6.0.dev2024120416 release + - mblack ==24.6.0.dev2024120616 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 249618446 - timestamp: 1733332472125 + size: 251333959 + timestamp: 1733502206769 - kind: conda name: max-core - version: 24.6.0.dev2024120416 + version: 24.6.0.dev2024120616 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120416-release.conda - sha256: bc27468be85cc7fd207ec44a4a0b1b11aa54792737a20fcf8355a2f2e7a215d5 - md5: c27c6f67be3abffbf559bfd50852b493 + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120616-release.conda + sha256: 9f051d29fdebf2c33eaa96659e75b06bf2befb17ac6992dc526b71eb4b959fc2 + md5: 99f131bbf681d02fe75d5f9e7dc0ab57 depends: - - mblack ==24.6.0.dev2024120416 release + - mblack ==24.6.0.dev2024120616 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 210212276 - timestamp: 1733332258535 + size: 211890615 + timestamp: 1733502249826 - kind: conda name: max-python - version: 24.6.0.dev2024120416 + version: 24.6.0.dev2024120616 build: 3.12release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120416-3.12release.conda - sha256: 48e30a62cdee247e87b9f07d465ae91c75d47f292eeba5d2ca9c2d86d30e8875 - md5: 78af7733b4858c1bd882279a45e98795 + url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120616-3.12release.conda + sha256: 619cfdba895fe1062b94e9e04109d5c321995c14ce80dd695937fedaeed1430b + md5: aa4c20f7f7f821d9b736c319b9b9d89a depends: - - max-core ==24.6.0.dev2024120416 release + - max-core ==24.6.0.dev2024120616 release - python 3.12.* - pillow - fastapi @@ -7046,18 +7002,18 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 122878721 - timestamp: 1733332193368 + size: 123619079 + timestamp: 1733502146987 - kind: conda name: max-python - version: 24.6.0.dev2024120416 + version: 24.6.0.dev2024120616 build: 3.12release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120416-3.12release.conda - sha256: ffff206620d5bd2cd90830467d4234e3a606143811006e67203899a9b8512938 - md5: 55ff43da6401cdd96073ae044b428afd + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120616-3.12release.conda + sha256: 1703b8f5e847917b04cc353ea6ce6fdfb4f0e5b053515b0e481b0bed93117a4f + md5: df25189682c30a5259b1ffada686cef2 depends: - - max-core ==24.6.0.dev2024120416 release + - max-core ==24.6.0.dev2024120616 release - python 3.12.* - pillow - fastapi @@ -7079,18 +7035,18 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 126526187 - timestamp: 1733332472138 + size: 127361426 + timestamp: 1733502206780 - kind: conda name: max-python - version: 24.6.0.dev2024120416 + version: 24.6.0.dev2024120616 build: 3.12release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120416-3.12release.conda - sha256: e5aaaba32cd939f3c6ba27b916851174eec6c3913a8e5ebd00b5590f026a2e16 - md5: b84b205dbce4660cdea5b0e3cda227e9 + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120616-3.12release.conda + sha256: 55e016fd1747baa8f15e358d8fe16953282a08b60c64ad6a98cbfdf0229f9d1b + md5: f03ead2bca51c2cd060703fe64ee40da depends: - - max-core ==24.6.0.dev2024120416 release + - max-core ==24.6.0.dev2024120616 release - python 3.12.* - pillow - fastapi @@ -7112,17 +7068,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 111629688 - timestamp: 1733332258538 + size: 112339857 + timestamp: 1733502249829 - kind: conda name: mblack - version: 24.6.0.dev2024120416 + version: 24.6.0.dev2024120616 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120416-release.conda - sha256: 374f5d8dfed89bf7098a0f7d8c6fd40c9dab11c4d760a03e05835e82f1b00cb9 - md5: 85c700946ce4a5ce8d11f5ee66b477cf + url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120616-release.conda + sha256: ccab714a4e70220ff559e9d0e56232964981196851bf77eeac1c3bf53ab0beb2 + md5: dec7dbfe11abd34b171d290d38adea24 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -7132,8 +7088,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130641 - timestamp: 1733332193362 + size: 130704 + timestamp: 1733502206776 - kind: conda name: mdurl version: 0.1.2 @@ -7168,21 +7124,21 @@ packages: timestamp: 1733258822603 - kind: conda name: mojo-jupyter - version: 24.6.0.dev2024120416 + version: 24.6.0.dev2024120616 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120416-release.conda - sha256: 181250d3bbe6523e4ac02e40004b6e77c04cfee2d9512dbeb584f51351df9448 - md5: 411a1d159867c56043991824d1ee88d9 + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120616-release.conda + sha256: d886857cf3c3a53c8a44433bec9b60fc90f9e43b169319bca36ca9daf0369901 + md5: 1420c233cedc5e554c728d5f8b2b1657 depends: - - max-core ==24.6.0.dev2024120416 release + - max-core ==24.6.0.dev2024120616 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22946 - timestamp: 1733332193363 + size: 11371 + timestamp: 1733502206776 - kind: conda name: multidict version: 6.1.0 @@ -7330,13 +7286,13 @@ packages: - kind: conda name: nbconvert-core version: 7.16.4 - build: pyhd8ed1ab_1 - build_number: 1 + build: pyhff2d567_2 + build_number: 2 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.4-pyhd8ed1ab_1.conda - sha256: 074d858c5808e0a832acc0da37cd70de1565e8d6e17a62d5a11b3902b5e78319 - md5: e2d2abb421c13456a9a9f80272fdf543 + url: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.4-pyhff2d567_2.conda + sha256: 03a1303ce135a8214b450e751d93c9048f55edb37f3f9f06c5e9d78ba3ef2a89 + md5: 0457fdf55c88e52e0e7b63691eafcc48 depends: - beautifulsoup4 - bleach @@ -7356,31 +7312,30 @@ packages: - tinycss2 - traitlets >=5.0 constrains: - - nbconvert =7.16.4=*_1 + - nbconvert =7.16.4=*_2 - pandoc >=2.9.2,<4.0.0 license: BSD-3-Clause - license_family: BSD - size: 189599 - timestamp: 1718135529468 + size: 188505 + timestamp: 1733405603619 - kind: conda name: nbformat version: 5.10.4 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_0.conda - sha256: 36fe73da4d37bc7ac2d1540526ecd294fbd09acda04e096181ab8f1ccd2b464c - md5: 0b57b5368ab7fc7cdc9e3511fa867214 + url: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda + sha256: 7a5bd30a2e7ddd7b85031a5e2e14f290898098dc85bea5b3a5bf147c25122838 + md5: bbe1963f1e47f594070ffe87cdf612ea depends: - jsonschema >=2.6 - jupyter_core >=4.12,!=5.0.* - - python >=3.8 + - python >=3.9 - python-fastjsonschema >=2.15 - traitlets >=5.1 license: BSD-3-Clause - license_family: BSD - size: 101232 - timestamp: 1712239122969 + size: 100945 + timestamp: 1733402844974 - kind: conda name: ncurses version: '6.5' @@ -7443,19 +7398,19 @@ packages: - kind: conda name: notebook-shim version: 0.2.4 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_0.conda - sha256: 9b5fdef9ebe89222baa9da2796ebe7bc02ec6c5a1f61327b651d6b92cf9a0230 - md5: 3d85618e2c97ab896b5b5e298d32b5b3 + url: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda + sha256: 7b920e46b9f7a2d2aa6434222e5c8d739021dbc5cc75f32d124a8191d86f9056 + md5: e7f89ea5f7ea9401642758ff50a2d9c1 depends: - jupyter_server >=1.8,<3 - - python >=3.7 + - python >=3.9 license: BSD-3-Clause - license_family: BSD - size: 16880 - timestamp: 1707957948029 + size: 16817 + timestamp: 1733408419340 - kind: conda name: numpy version: 1.26.4 @@ -8086,18 +8041,18 @@ packages: - kind: conda name: pkgutil-resolve-name version: 1.3.10 - build: pyhd8ed1ab_1 - build_number: 1 + build: pyhd8ed1ab_2 + build_number: 2 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_1.conda - sha256: fecf95377134b0e8944762d92ecf7b0149c07d8186fb5db583125a2705c7ea0a - md5: 405678b942f2481cecdb3e010f4925d9 + url: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda + sha256: adb2dde5b4f7da70ae81309cce6188ed3286ff280355cf1931b45d91164d2ad8 + md5: 5a5870a74432aa332f7d32180633ad05 depends: - - python >=3.6 + - python >=3.9 license: MIT AND PSF-2.0 - size: 10778 - timestamp: 1694617398467 + size: 10693 + timestamp: 1733344619659 - kind: conda name: platformdirs version: 4.3.6 @@ -8150,58 +8105,55 @@ packages: timestamp: 1733302634979 - kind: conda name: propcache - version: 0.2.0 - build: py312h024a12e_2 - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.0-py312h024a12e_2.conda - sha256: 0f3a04675c6c473398f0aaa95c259e0a085d5ec106b4fa89a7efeb7cc73d5dd2 - md5: 6693e523bc43c38508efe14ab3374f0c + version: 0.2.1 + build: py312h66e93f0_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.1-py312h66e93f0_0.conda + sha256: 5771311fb5ded614ca349c92579a0b752af55a310f40b71fc533e20625965391 + md5: 55d5742a696d7da1c1262e99b6217ceb depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 license: Apache-2.0 license_family: APACHE - size: 47796 - timestamp: 1728545963127 + size: 52747 + timestamp: 1733391916349 - kind: conda name: propcache - version: 0.2.0 - build: py312h66e93f0_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.0-py312h66e93f0_2.conda - sha256: be7aa0056680dd6e528b7992169a20dd525b94f62d37c8ba0fbf69bd4e8df57d - md5: 2c6c0c68f310bc33972e7c83264d7786 + version: 0.2.1 + build: py312hb2c0f52_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.2.1-py312hb2c0f52_0.conda + sha256: c7f62c11ed929ccf1f3d4a1e200e28be01e8d0e0786bf8f76c5893f2ea681e1b + md5: 50ab8953e7ff1333a4a47cda32e68123 depends: - - __glibc >=2.17,<3.0.a0 - libgcc >=13 - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 license: Apache-2.0 license_family: APACHE - size: 53498 - timestamp: 1728545927816 + size: 52484 + timestamp: 1733391993461 - kind: conda name: propcache - version: 0.2.0 - build: py312hb2c0f52_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.2.0-py312hb2c0f52_2.conda - sha256: 50dad7604b6c20440baf081700b5d6829097121e65f34fd1a15508b20fbecc07 - md5: 8a258196d6f79ad32d3ea4dd4572f721 + version: 0.2.1 + build: py312hea69d52_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.1-py312hea69d52_0.conda + sha256: f8c266c494aa1e4cfb8bf0b6fca060044b2f3d65afe4c5062ebeea382e77aa6d + md5: c84e3dd97fe25a17322c4a0f670c6750 depends: - - libgcc >=13 + - __osx >=11.0 - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 license: Apache-2.0 license_family: APACHE - size: 53507 - timestamp: 1728546155066 + size: 48225 + timestamp: 1733392308901 - kind: conda name: protobuf version: 5.28.2 @@ -8755,91 +8707,94 @@ packages: timestamp: 1733217331982 - kind: conda name: python - version: 3.12.7 - build: h5d932e8_0_cpython + version: 3.12.8 + build: h1683364_1_cpython + build_number: 1 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.7-h5d932e8_0_cpython.conda - sha256: 25570873d92d4d9490c6db780cc85e6c28bd3ff61dc1ece79f602cf82bc73bc1 - md5: e6cab21bb5787270388939cf41cc5f43 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.8-h1683364_1_cpython.conda + sha256: 85573582d5b0f79923fed0a8365d3d74d21eee9f0a5fa1b9345f191e006363ab + md5: 09ec612ea05370989eaa3d81abf0f369 depends: - bzip2 >=1.0.8,<2.0a0 - ld_impl_linux-aarch64 >=2.36.1 - - libexpat >=2.6.3,<3.0a0 + - libexpat >=2.6.4,<3.0a0 - libffi >=3.4,<4.0a0 - libgcc >=13 + - liblzma >=5.6.3,<6.0a0 - libnsl >=2.0.1,<2.1.0a0 - - libsqlite >=3.46.1,<4.0a0 + - libsqlite >=3.47.0,<4.0a0 - libuuid >=2.38.1,<3.0a0 - libxcrypt >=4.4.36 - libzlib >=1.3.1,<2.0a0 - ncurses >=6.5,<7.0a0 - - openssl >=3.3.2,<4.0a0 + - openssl >=3.4.0,<4.0a0 - readline >=8.2,<9.0a0 - tk >=8.6.13,<8.7.0a0 - tzdata - - xz >=5.2.6,<6.0a0 constrains: - python_abi 3.12.* *_cp312 license: Python-2.0 - size: 13762126 - timestamp: 1728057461028 + size: 13760816 + timestamp: 1733407890896 - kind: conda name: python - version: 3.12.7 - build: h739c21a_0_cpython - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.7-h739c21a_0_cpython.conda - sha256: 45d7ca2074aa92594bd2f91a9003b338cc1df8a46b9492b7fc8167110783c3ef - md5: e0d82e57ebb456077565e6d82cd4a323 + version: 3.12.8 + build: h9e4cc4f_1_cpython + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.8-h9e4cc4f_1_cpython.conda + sha256: 3f0e0518c992d8ccfe62b189125721309836fe48a010dc424240583e157f9ff0 + md5: 7fd2fd79436d9b473812f14e86746844 depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 - bzip2 >=1.0.8,<2.0a0 - - libexpat >=2.6.3,<3.0a0 + - ld_impl_linux-64 >=2.36.1 + - libexpat >=2.6.4,<3.0a0 - libffi >=3.4,<4.0a0 - - libsqlite >=3.46.1,<4.0a0 + - libgcc >=13 + - liblzma >=5.6.3,<6.0a0 + - libnsl >=2.0.1,<2.1.0a0 + - libsqlite >=3.47.0,<4.0a0 + - libuuid >=2.38.1,<3.0a0 + - libxcrypt >=4.4.36 - libzlib >=1.3.1,<2.0a0 - ncurses >=6.5,<7.0a0 - - openssl >=3.3.2,<4.0a0 + - openssl >=3.4.0,<4.0a0 - readline >=8.2,<9.0a0 - tk >=8.6.13,<8.7.0a0 - tzdata - - xz >=5.2.6,<6.0a0 constrains: - python_abi 3.12.* *_cp312 license: Python-2.0 - size: 12975439 - timestamp: 1728057819519 + size: 31565686 + timestamp: 1733410597922 - kind: conda name: python - version: 3.12.7 - build: hc5c86c4_0_cpython - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.7-hc5c86c4_0_cpython.conda - sha256: 674be31ff152d9f0e0fe16959a45e3803a730fc4f54d87df6a9ac4e6a698c41d - md5: 0515111a9cdf69f83278f7c197db9807 + version: 3.12.8 + build: hc22306f_1_cpython + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.8-hc22306f_1_cpython.conda + sha256: 7586a711b1b08a9df8864e26efdc06980bdfb0e18d5ac4651d0fee30a8d3e3a0 + md5: 54ca5b5d92ef3a3ba61e195ee882a518 depends: - - __glibc >=2.17,<3.0.a0 + - __osx >=11.0 - bzip2 >=1.0.8,<2.0a0 - - ld_impl_linux-64 >=2.36.1 - - libexpat >=2.6.3,<3.0a0 + - libexpat >=2.6.4,<3.0a0 - libffi >=3.4,<4.0a0 - - libgcc >=13 - - libnsl >=2.0.1,<2.1.0a0 - - libsqlite >=3.46.1,<4.0a0 - - libuuid >=2.38.1,<3.0a0 - - libxcrypt >=4.4.36 + - liblzma >=5.6.3,<6.0a0 + - libsqlite >=3.47.0,<4.0a0 - libzlib >=1.3.1,<2.0a0 - ncurses >=6.5,<7.0a0 - - openssl >=3.3.2,<4.0a0 + - openssl >=3.4.0,<4.0a0 - readline >=8.2,<9.0a0 - tk >=8.6.13,<8.7.0a0 - tzdata - - xz >=5.2.6,<6.0a0 constrains: - python_abi 3.12.* *_cp312 license: Python-2.0 - size: 31574780 - timestamp: 1728059777603 + size: 12998673 + timestamp: 1733408900971 - kind: conda name: python-dateutil version: 2.9.0.post0 @@ -9266,20 +9221,21 @@ packages: - kind: conda name: referencing version: 0.35.1 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/referencing-0.35.1-pyhd8ed1ab_0.conda - sha256: be8d6d9e86b1a3fef5424127ff81782f8ca63d3058980859609f6f1ecdd34cb3 - md5: 0fc8b52192a8898627c3efae1003e9f6 + url: https://conda.anaconda.org/conda-forge/noarch/referencing-0.35.1-pyhd8ed1ab_1.conda + sha256: f972eecb4dc8e06257af37642f92b0f2df04a7fe4c950f2e1045505e5e93985f + md5: 8c9083612c1bfe6878715ed5732605f8 depends: - attrs >=22.2.0 - - python >=3.8 + - python >=3.9 - rpds-py >=0.7.0 license: MIT license_family: MIT - size: 42210 - timestamp: 1714619625532 + size: 42201 + timestamp: 1733366868091 - kind: conda name: regex version: 2024.11.6 @@ -9387,29 +9343,30 @@ packages: - kind: conda name: rich version: 13.9.4 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_0.conda - sha256: c009488fc07fd5557434c9c1ad32ab1dd50241d6a766e4b2b4125cd6498585a8 - md5: bcf8cc8924b5d20ead3d122130b8320b + url: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_1.conda + sha256: 06a760c5ae572e72e865d5a87e9fe3cc171e1a9c996e63daf3db52ff1a0b4457 + md5: 7aed65d4ff222bfb7335997aa40b7da5 depends: - markdown-it-py >=2.2.0 - pygments >=2.13.0,<3.0.0 - - python >=3.8 + - python >=3.9 - typing_extensions >=4.0.0,<5.0.0 license: MIT license_family: MIT - size: 185481 - timestamp: 1730592349978 + size: 185646 + timestamp: 1733342347277 - kind: conda name: rpds-py - version: 0.22.1 + version: 0.22.3 build: py312h12e396e_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.22.1-py312h12e396e_0.conda - sha256: 26f29cd937e9a28ea9ac6a32b3669e0cabe815343df43ce19c0ca076861e1c8e - md5: db784e4ddb4c55c95cc15a7572802ef1 + url: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.22.3-py312h12e396e_0.conda + sha256: e8662d21ca3c912ac8941725392b838a29458b106ef22d9489cdf0f8de145fad + md5: bfb49da0cc9098597d527def04d66f8b depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -9419,16 +9376,16 @@ packages: - __glibc >=2.17 license: MIT license_family: MIT - size: 355539 - timestamp: 1733275174505 + size: 354410 + timestamp: 1733366814237 - kind: conda name: rpds-py - version: 0.22.1 + version: 0.22.3 build: py312ha4e36d7_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/rpds-py-0.22.1-py312ha4e36d7_0.conda - sha256: efa181de72c022ef3c763d69dc6886cf2e7b8dcbd99e4226954a05d08001dcd8 - md5: ed1137158174c5b8f09f05feb7b66313 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/rpds-py-0.22.3-py312ha4e36d7_0.conda + sha256: bd8215aea86b57f7d036d53eee813a544736e94783faeb7b928931fca45715f8 + md5: 4d41b57d0d3933b9cab7ac8c05745123 depends: - libgcc >=13 - python >=3.12,<3.13.0a0 @@ -9437,16 +9394,16 @@ packages: - __glibc >=2.17 license: MIT license_family: MIT - size: 348239 - timestamp: 1733277204922 + size: 348424 + timestamp: 1733368364148 - kind: conda name: rpds-py - version: 0.22.1 + version: 0.22.3 build: py312hcd83bfe_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/rpds-py-0.22.1-py312hcd83bfe_0.conda - sha256: bcfa291e5ef9d2015f15d9d0007f5bfbda64de1ae9bf8f3849827be4839949bd - md5: 1db30d93318545c64c4db230cba68f16 + url: https://conda.anaconda.org/conda-forge/osx-arm64/rpds-py-0.22.3-py312hcd83bfe_0.conda + sha256: 0a8b50bf22400004a706ba160d7cb31f82b8d8c328a59aec73a9e0d3372d1964 + md5: 2f7c4d01946fa2ce73d7ef3eeb041877 depends: - __osx >=11.0 - python >=3.12,<3.13.0a0 @@ -9456,8 +9413,8 @@ packages: - __osx >=11.0 license: MIT license_family: MIT - size: 318035 - timestamp: 1733275269664 + size: 318920 + timestamp: 1733367225496 - kind: conda name: s2n version: 1.5.9 @@ -9615,65 +9572,68 @@ packages: timestamp: 1733301007770 - kind: conda name: six - version: 1.16.0 - build: pyhd8ed1ab_1 - build_number: 1 + version: 1.17.0 + build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyhd8ed1ab_1.conda - sha256: 761b96fe7bea080b9c35dd2f87f788eb94b61d462645bd16f361e80ae0ff017c - md5: a516da6cfe1ec0a55e49737f017b4965 + url: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + sha256: 41db0180680cc67c3fa76544ffd48d6a5679d96f4b71d7498a759e94edc9a2db + md5: a451d576819089b0d672f18768be0f65 depends: - python >=3.9 license: MIT license_family: MIT size: 16385 - timestamp: 1733216901349 + timestamp: 1733381032766 - kind: conda name: snappy version: 1.2.1 - build: h1088aeb_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-h1088aeb_0.conda - sha256: 79f5d0a9098acf2ed16e6ecc4c11472b50ccf59feea37a7d585fd43888d7e41f - md5: e4ed5b015f525b56f95c26d85a4ea208 + build: h8bd8927_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-h8bd8927_1.conda + sha256: ec91e86eeb2c6bbf09d51351b851e945185d70661d2ada67204c9a6419d282d3 + md5: 3b3e64af585eadfb52bb90b553db5edf depends: - - libgcc-ng >=12 - - libstdcxx-ng >=12 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 license: BSD-3-Clause license_family: BSD - size: 42888 - timestamp: 1720003817527 + size: 42739 + timestamp: 1733501881851 - kind: conda name: snappy version: 1.2.1 - build: ha2e4443_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-ha2e4443_0.conda - sha256: dc7c8e0e8c3e8702aae81c52d940bfaabe756953ee51b1f1757e891bab62cf7f - md5: 6b7dcc7349efd123d493d2dbe85a045f + build: h98b9ce2_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-h98b9ce2_1.conda + sha256: 4242f95b215127a006eb664fe26ed5a82df87e90cbdbc7ce7ff4971f0720997f + md5: ded86dee325290da2967a3fea3800eb5 depends: - - libgcc-ng >=12 - - libstdcxx-ng >=12 + - __osx >=11.0 + - libcxx >=18 license: BSD-3-Clause license_family: BSD - size: 42465 - timestamp: 1720003704360 + size: 35857 + timestamp: 1733502172664 - kind: conda name: snappy version: 1.2.1 - build: hd02b534_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-hd02b534_0.conda - sha256: cb7a9440241c6092e0f1c795fdca149c4767023e783eaf9cfebc501f906b4897 - md5: 69d0f9694f3294418ee935da3d5f7272 + build: hd4fb6f5_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-hd4fb6f5_1.conda + sha256: c4a07ae5def8d55128f25a567a296ef9d7bf99a3bc79d46bd5160c076a5f50af + md5: 2fcc6cd1e5550deb509073fd2e6693e1 depends: - - __osx >=11.0 - - libcxx >=16 + - libgcc >=13 + - libstdcxx >=13 license: BSD-3-Clause license_family: BSD - size: 35708 - timestamp: 1720003794374 + size: 43032 + timestamp: 1733501964775 - kind: conda name: sniffio version: 1.3.1 @@ -9745,20 +9705,21 @@ packages: - kind: conda name: starlette version: 0.41.3 - build: pyh7900ff3_0 + build: pyha770c72_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyh7900ff3_0.conda - sha256: 33986032cb0515f7e9f6647d07006b7dc49b3f373b73d5a1826e6979c661b27a - md5: 0889c5a3e95d8c382cff7556757aedb0 + url: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyha770c72_1.conda + sha256: b74fc76107487eb26624c01fc55bfab7eed03ae82e003333c86d8a1eeac53672 + md5: 0207dac04ae2200701fab697f0aaaac4 depends: - anyio >=3.4.0,<5 - python >=3.9 - typing_extensions >=3.10.0 license: BSD-3-Clause license_family: BSD - size: 59069 - timestamp: 1732037161800 + size: 58838 + timestamp: 1733344472634 - kind: conda name: terminado version: 0.18.1 @@ -10006,18 +9967,19 @@ packages: - kind: conda name: traitlets version: 5.14.3 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda - sha256: 8a64fa0f19022828513667c2c7176cfd125001f3f4b9bc00d33732e627dd2592 - md5: 3df84416a021220d8b5700c613af2dc5 + url: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + sha256: f39a5620c6e8e9e98357507262a7869de2ae8cc07da8b7f84e517c9fd6c2b959 + md5: 019a7385be9af33791c989871317e1ed depends: - - python >=3.8 + - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 110187 - timestamp: 1713535244513 + size: 110051 + timestamp: 1733367480074 - kind: conda name: transformers version: 4.46.3 @@ -10046,58 +10008,58 @@ packages: timestamp: 1731981383171 - kind: conda name: typer - version: 0.15.0 + version: 0.15.1 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.0-pyhd8ed1ab_0.conda - sha256: 90503b2a518434fb554d621cc4e1c533dc524ef1c0f63fde39fdf4328163a0c8 - md5: cf9393f5733c7277b1a5f79145f8485b + url: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda + sha256: ef695490e895c2ad552c77ec497b899b09fd4ad4ab07edcf5649f5994cf92a35 + md5: 170a0398946d8f5b454e592672b6fc20 depends: - python >=3.9 - - typer-slim-standard 0.15.0 hd8ed1ab_0 + - typer-slim-standard 0.15.1 hd8ed1ab_0 license: MIT license_family: MIT - size: 56455 - timestamp: 1733279871129 + size: 56175 + timestamp: 1733408582623 - kind: conda name: typer-slim - version: 0.15.0 + version: 0.15.1 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.0-pyhd8ed1ab_0.conda - sha256: f6a85917292aaea0577792090ac74dbdb0280a656934746f715bfa9feaa9b2dc - md5: 629fef89115de5a907fb9765cdd45b26 + url: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda + sha256: d4965516f35e0805199de6596c4ac76c4ad3d6b012be35e532102f9e53ecb860 + md5: 0218b16f5a1dd569e575a7a6415489db depends: - click >=8.0.0 - python >=3.9 - typing_extensions >=3.7.4.3 constrains: - - typer >=0.15.0,<0.15.1.0a0 - - shellingham >=1.3.0 - rich >=10.11.0 + - typer >=0.15.1,<0.15.2.0a0 + - shellingham >=1.3.0 license: MIT license_family: MIT - size: 43480 - timestamp: 1733279858535 + size: 43592 + timestamp: 1733408569554 - kind: conda name: typer-slim-standard - version: 0.15.0 + version: 0.15.1 build: hd8ed1ab_0 subdir: noarch noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.0-hd8ed1ab_0.conda - sha256: df52ddd24439aff384a82d00a751947b12127ab571f4aa674a1053c703ce8ed0 - md5: a4746fc9efbff02c1a288d8fcd8ffba9 + url: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda + sha256: f31c56fe98315da8b9ce848256c17e0b9f87896b41a6ccf0c9cc74644dcef20f + md5: 4e603c43bfdfc7b533be087c3e070cc9 depends: - rich - shellingham - - typer-slim 0.15.0 pyhd8ed1ab_0 + - typer-slim 0.15.1 pyhd8ed1ab_0 license: MIT license_family: MIT - size: 50259 - timestamp: 1733279859017 + size: 49531 + timestamp: 1733408570063 - kind: conda name: types-python-dateutil version: 2.9.0.20241003 @@ -10158,6 +10120,7 @@ packages: depends: - python >=3.9 license: Apache-2.0 + license_family: APACHE size: 15183 timestamp: 1733331395943 - kind: conda @@ -10383,20 +10346,19 @@ packages: timestamp: 1733231433877 - kind: conda name: webcolors - version: 24.8.0 - build: pyhd8ed1ab_1 - build_number: 1 + version: 24.11.1 + build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.8.0-pyhd8ed1ab_1.conda - sha256: b0f2e15fe5c141d0900e03179f5fc04a20d2e70592d070fd4ce016ae33c7068a - md5: 5bfc9a98cfe3ddbf10624d6a78077639 + url: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda + sha256: 08315dc2e61766a39219b2d82685fc25a56b2817acf84d5b390176080eaacf99 + md5: b49f7b291e15494aafb0a7d74806f337 depends: - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 18514 - timestamp: 1733312181508 + size: 18431 + timestamp: 1733359823938 - kind: conda name: webencodings version: 0.5.1 @@ -10676,144 +10638,6 @@ packages: license_family: BSD size: 97691 timestamp: 1689951608120 -- kind: conda - name: xz - version: 5.6.3 - build: h2dbfc1b_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-5.6.3-h2dbfc1b_0.conda - sha256: 65df445d131d1695c45a95d102b8ffaaed5a387b4f97e209ba7d8fa0b7599dec - md5: da081cb850e57b0a0a242bab9087fbeb - depends: - - libgcc >=13 - - liblzma 5.6.3 h86ecc28_0 - - liblzma-devel 5.6.3 h86ecc28_0 - - xz-gpl-tools 5.6.3 h2dbfc1b_0 - - xz-tools 5.6.3 h86ecc28_0 - license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later - size: 23448 - timestamp: 1733324353894 -- kind: conda - name: xz - version: 5.6.3 - build: h9a6d368_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/xz-5.6.3-h9a6d368_0.conda - sha256: 25d515d97f9a147240933b7529dbe10f3ee1c87425cfa3d5faa5115f78ebfe70 - md5: 86674fa432df20be6feea4bd8fec0668 - depends: - - __osx >=11.0 - - liblzma 5.6.3 h39f12f2_0 - - liblzma-devel 5.6.3 h39f12f2_0 - - xz-gpl-tools 5.6.3 h9a6d368_0 - - xz-tools 5.6.3 h39f12f2_0 - license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later - size: 23570 - timestamp: 1733321627935 -- kind: conda - name: xz - version: 5.6.3 - build: hbcc6ac9_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/xz-5.6.3-hbcc6ac9_0.conda - sha256: 32cd43b293f1e6498831c499195afc5693c2bd604244a08fe8dd7107a20757d2 - md5: 504333561007fbf0af129f0cee4f5652 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - liblzma 5.6.3 hb9d3cd8_0 - - liblzma-devel 5.6.3 hb9d3cd8_0 - - xz-gpl-tools 5.6.3 hbcc6ac9_0 - - xz-tools 5.6.3 hb9d3cd8_0 - license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later - size: 23435 - timestamp: 1733321352996 -- kind: conda - name: xz-gpl-tools - version: 5.6.3 - build: h2dbfc1b_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-gpl-tools-5.6.3-h2dbfc1b_0.conda - sha256: d99ba29095b47891e3c63d04832768c3bfe4ad49e7bb4e163ca18962b8b3f5ca - md5: b0245c3aad4592510bb0c19212c1bded - depends: - - libgcc >=13 - - liblzma 5.6.3 h86ecc28_0 - license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later - size: 33355 - timestamp: 1733324193303 -- kind: conda - name: xz-gpl-tools - version: 5.6.3 - build: h9a6d368_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/xz-gpl-tools-5.6.3-h9a6d368_0.conda - sha256: 44a0738b66573d0e7def712ef2aa98f628b17ee4d1034ffe71c3ff36f68d12dd - md5: 9e4519aef300966683764ccbbaa89da4 - depends: - - __osx >=11.0 - - liblzma 5.6.3 h39f12f2_0 - license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later - size: 33343 - timestamp: 1733321610703 -- kind: conda - name: xz-gpl-tools - version: 5.6.3 - build: hbcc6ac9_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/xz-gpl-tools-5.6.3-hbcc6ac9_0.conda - sha256: e9829eb1207239198f03eba61d17d0f946bbaa7602f7ee019efe72ccb26525db - md5: e4f1e59ca2971e8d0fdde0928c3f7b7f - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - liblzma 5.6.3 hb9d3cd8_0 - license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later - size: 33299 - timestamp: 1733321343126 -- kind: conda - name: xz-tools - version: 5.6.3 - build: h39f12f2_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/xz-tools-5.6.3-h39f12f2_0.conda - sha256: be3c74ffe4a7a5852108dafe40ef41858ca1ea911c62b08b5e4dd8f641d23f22 - md5: 10855380caa384c8388b93ef29c7bd04 - depends: - - __osx >=11.0 - - liblzma 5.6.3 h39f12f2_0 - license: 0BSD AND LGPL-2.1-or-later - size: 81129 - timestamp: 1733321582233 -- kind: conda - name: xz-tools - version: 5.6.3 - build: h86ecc28_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-tools-5.6.3-h86ecc28_0.conda - sha256: 1d82a745cd60e674d18a0ce30ba13d72616261b1831530f480599ffc991c8476 - md5: 0136c7aa78b4d887c9fb6dbf39749778 - depends: - - libgcc >=13 - - liblzma 5.6.3 h86ecc28_0 - license: 0BSD AND LGPL-2.1-or-later - size: 95353 - timestamp: 1733324033407 -- kind: conda - name: xz-tools - version: 5.6.3 - build: hb9d3cd8_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/xz-tools-5.6.3-hb9d3cd8_0.conda - sha256: 7d03d4c0d18dbac0ebb9550890fddeb4d21a375709339a6bdedd0104bc4f4967 - md5: 40270c1e058fd1d31caee8bf2c68fc3a - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - liblzma 5.6.3 hb9d3cd8_0 - license: 0BSD AND LGPL-2.1-or-later - size: 89832 - timestamp: 1733321333192 - kind: conda name: yaml version: 0.2.5 @@ -10859,64 +10683,64 @@ packages: timestamp: 1641347626613 - kind: conda name: yarl - version: 1.18.0 + version: 1.18.3 build: py312h66e93f0_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.18.0-py312h66e93f0_0.conda - sha256: 8a1e51303ecac64f10dd0ec548d472c49954c3e2f38023ef28899191580795e1 - md5: 601d2b19a54fd9346ba18c07c2516339 + url: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.18.3-py312h66e93f0_0.conda + sha256: a0d93c3bef723e384cff8a29a82a2c6b7a73b39328088f3a2d97c901f56e9a63 + md5: 91df2efaa08730416bec2a4502309275 depends: - __glibc >=2.17,<3.0.a0 - idna >=2.0 - libgcc >=13 - multidict >=4.0 - - propcache >=0.2.0 + - propcache >=0.2.1 - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 license: Apache-2.0 license_family: Apache - size: 151247 - timestamp: 1732220988648 + size: 151393 + timestamp: 1733428897813 - kind: conda name: yarl - version: 1.18.0 + version: 1.18.3 build: py312hb2c0f52_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.18.0-py312hb2c0f52_0.conda - sha256: 2ead24d5c50a2edd6348be5888677100b12b98921d1b6fe2f4cd980b0b85ffb2 - md5: 7dbbd950a7f762c2c8ab835932b12001 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.18.3-py312hb2c0f52_0.conda + sha256: 470b5b0f3ac89acd143095281167dc2ac1a56d4fa22e1794bd8f3b00bb604540 + md5: 0b3c640697bca798d0ab428f530ed24c depends: - idna >=2.0 - libgcc >=13 - multidict >=4.0 - - propcache >=0.2.0 + - propcache >=0.2.1 - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 license: Apache-2.0 license_family: Apache - size: 149149 - timestamp: 1732221057827 + size: 150004 + timestamp: 1733429056665 - kind: conda name: yarl - version: 1.18.0 + version: 1.18.3 build: py312hea69d52_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.18.0-py312hea69d52_0.conda - sha256: 4c90de12b1569f85126a12dbbb89f3dc10cee5838335b9c9993ead8bf1594cd3 - md5: f538709098e1642d50f4a01707e7dfdb + url: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.18.3-py312hea69d52_0.conda + sha256: 69c7863809e11bc90c0d935c16e7f151dcc925add08b3894f06059263a8cb9ba + md5: f32f9b16361866a62d6e061fcd7eb400 depends: - __osx >=11.0 - idna >=2.0 - multidict >=4.0 - - propcache >=0.2.0 + - propcache >=0.2.1 - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 license: Apache-2.0 license_family: Apache - size: 141452 - timestamp: 1732221306526 + size: 141556 + timestamp: 1733429104990 - kind: conda name: zeromq version: 4.3.5 diff --git a/examples/operators/magic.lock b/examples/operators/magic.lock index ce04d5e3a6..5a0f9a46e1 100644 --- a/examples/operators/magic.lock +++ b/examples/operators/magic.lock @@ -26,7 +26,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.1-hf42f96a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-hf42f96a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.6-h159bff8_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.449-h5558e3c_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-h5558e3c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.10.0-h113e628_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.13.0-h3cf044e_1.conda @@ -49,12 +49,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda - 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.5-pyhff2d567_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/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 - - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gflags-2.2.2-h5888daf_1005.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/glog-0.7.1-hbabe93e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda @@ -63,13 +63,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/httptools-0.6.4-py312h66e93f0_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-7.0.2-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda @@ -77,10 +77,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_h5888daf_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-he15abb1_1_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-h5888daf_1_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-h5888daf_1_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-h5c8f2c3_1_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-hcf3f2e3_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-h36004a0_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-h36004a0_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-h56a123c_3_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-25_linux64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hb9d3cd8_2.conda @@ -105,12 +105,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-hd590300_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-25_linux64_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.3-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-devel-5.6.3-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.3-hb9d3cd8_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.28-pthreads_h94d23a6_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-h6bd9018_1_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-hbdb145b_3_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.44-hadc24fc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.2-h5b01275_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_1.conda @@ -120,24 +119,24 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-hc0a3c3a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libthrift-0.21.0-h0e7cc3e_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-he137b08_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.8.0-hf23e847_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hc4654cb_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.9.0-hb9d3cd8_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.49.2-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.4.0-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.5-h064dc61_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.5-h0d44e9d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.9.4-hcb278e6_0.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.dev2024120416-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120416-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120416-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120416-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120616-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120616-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120616-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120616-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.dev2024120416-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120616-release.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/multiprocess-0.70.15-py312h98912ed_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda @@ -159,7 +158,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-11.0.0-py312h7b63e92_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.0-py312h66e93f0_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.1-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/protobuf-5.28.2-py312h2ec8cdc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-18.1.0-py312h7900ff3_0.conda @@ -171,7 +170,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyinstrument-5.0.0-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.7-hc5c86c4_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.8-h9e4cc4f_1_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda @@ -186,25 +185,25 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda - 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_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_1.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 - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-ha2e4443_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-h8bd8927_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.1.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyh7900ff3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.20.4-py312h8360d73_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.46.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda @@ -218,11 +217,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.11-hb9d3cd8_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xxhash-0.8.2-hd590300_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-5.6.3-hbcc6ac9_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-gpl-tools-5.6.3-hbcc6ac9_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-tools-5.6.3-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.18.0-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.18.3-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312hef9b889_1.conda @@ -247,7 +243,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.1-h4c7db1d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h4c7db1d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.6-hffbb33f_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.449-h7085e57_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h7085e57_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-core-cpp-1.14.0-h1887c18_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-identity-cpp-1.10.0-h47b0b28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-blobs-cpp-12.13.0-h185ecfd_1.conda @@ -270,12 +266,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda - 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.5-pyhff2d567_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/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 - - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gflags-2.2.2-h5ad3122_1005.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/glog-0.7.1-h468a4a4_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda @@ -284,14 +280,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/httptools-0.6.4-py312hb2c0f52_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-7.0.2-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/keyutils-1.6.1-h4e544f5_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/krb5-1.21.3-h50a48e9_0.conda @@ -299,10 +295,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.0.0-h4de3ea5_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h5ad3122_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-hc7b0e1d_2_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h5ad3122_2_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h5ad3122_2_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h14ec2bd_2_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-hb63acf4_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-he2e0623_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-he2e0623_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-hc52ba39_3_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-25_linuxaarch64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlicommon-1.1.0-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlidec-1.1.0-h86ecc28_2.conda @@ -327,12 +323,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libiconv-1.17-h31becfc_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libjpeg-turbo-3.0.0-h31becfc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-25_linuxaarch64_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.3-h86ecc28_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-devel-5.6.3-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.3-h86ecc28_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnghttp2-1.64.0-hc8609a4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.28-pthreads_h9d3fd7e_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-h23a96eb_2_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-h553aec1_3_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.44-hc4a20ef_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.2-h029595c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_1.conda @@ -342,24 +337,24 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libthrift-0.21.0-h154c74f_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.0-hec21d91_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.0-hca96517_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.9.0-h86ecc28_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuv-1.49.2-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libwebp-base-1.4.0-h31becfc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcb-1.17.0-h262b8f6_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.5-hf4efe5d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.5-h2e0c361_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.9.4-hd600fc2_0.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.dev2024120416-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120416-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120416-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120416-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120616-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120616-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120616-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120616-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.dev2024120416-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120616-release.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/multiprocess-0.70.15-py312hdd3e373_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda @@ -381,7 +376,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pillow-11.0.0-py312h5ab5af3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.2.0-py312hb2c0f52_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.2.1-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/protobuf-5.28.2-py312h6f74592_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pthread-stubs-0.4-h86ecc28_1002.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-18.1.0-py312h8025657_0.conda @@ -393,7 +388,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyinstrument-5.0.0-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.7-h5d932e8_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.8-h1683364_1_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda @@ -408,25 +403,25 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8fc344f_1.conda - 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_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_1.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 - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-h1088aeb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-hd4fb6f5_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.1.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyh7900ff3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.20.4-py312ha0d6ea1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py312h52516f5_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.46.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda @@ -440,11 +435,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxau-1.0.11-h86ecc28_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxdmcp-1.1.5-h57736b2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xxhash-0.8.2-h31becfc_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-5.6.3-h2dbfc1b_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-gpl-tools-5.6.3-h2dbfc1b_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-tools-5.6.3-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yaml-0.2.5-hf897c2e_2.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.18.0-py312hb2c0f52_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.18.3-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zeromq-4.3.5-h5efb499_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstandard-0.23.0-py312hb698573_1.conda @@ -468,7 +460,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.1-h5d7ee29_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-h5d7ee29_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.6-h8474b10_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.449-h3b64406_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-h3b64406_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.14.0-hd50102c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.10.0-hc602bab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-blobs-cpp-12.13.0-h7585a09_1.conda @@ -491,12 +483,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda - 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.5-pyhff2d567_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/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 - - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gflags-2.2.2-hf9b8971_1005.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/glog-0.7.1-heb240a5_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda @@ -505,22 +497,23 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/httptools-0.6.4-py312hea69d52_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-7.0.2-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.16-ha0e7c42_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_hf9b8971_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-h654e1bb_2_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-h605b82c_2_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-h605b82c_2_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-h9b432b6_2_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-h5affd47_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-haafc02e_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-haafc02e_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-h4c1644f_3_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-25_osxarm64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.1.0-hd74edd7_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.1.0-hd74edd7_2.conda @@ -543,11 +536,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.17-h0d3ecfb_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.0.0-hb547adb_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-25_osxarm64_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.3-h39f12f2_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-devel-5.6.3-h39f12f2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.3-h39f12f2_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.64.0-h6d7220d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.28-openmp_hf332438_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-h5168bdf_2_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-h3a603ae_3_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.44-hc14010f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.2-h8f0b736_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h2348fd5_1.conda @@ -555,23 +547,23 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.47.0-hbaaea75_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.1-h9cc3647_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libthrift-0.21.0-h64651cc_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-hfce79cd_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-ha962b0a_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.9.0-h5505292_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libuv-1.49.2-h7ab814d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.4.0-h93a5062_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxcb-1.17.0-hdb1d25a_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.5-h376fa9f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.5-h178c5d8_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.4-hdb05f8b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.5-hdb05f8b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.9.4-hb7217d7_0.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.dev2024120416-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120416-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120416-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120416-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120616-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120616-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120616-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120616-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.dev2024120416-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120616-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 @@ -593,7 +585,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-11.0.0-py312haf37ca6_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.0-py312h024a12e_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.1-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/protobuf-5.28.2-py312hf02c72a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pthread-stubs-0.4-hd74edd7_1002.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-18.1.0-py312h1f38498_0.conda @@ -605,7 +597,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyinstrument-5.0.0-py312h0bf5046_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.7-h739c21a_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.8-hc22306f_1_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda @@ -620,24 +612,24 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h92ec313_1.conda - 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_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_1.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 - - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-hd02b534_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-h98b9ce2_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.1.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyh7900ff3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.20.4-py312hf3e4074_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.46.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda @@ -651,11 +643,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxau-1.0.11-hd74edd7_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxdmcp-1.1.5-hd74edd7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xxhash-0.8.2-hb547adb_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xz-5.6.3-h9a6d368_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xz-gpl-tools-5.6.3-h9a6d368_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xz-tools-5.6.3-h39f12f2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.18.0-py312hea69d52_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.18.3-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py312h15fbf35_1.conda @@ -720,6 +709,7 @@ packages: depends: - python >=3.9 license: PSF-2.0 + license_family: PSF size: 19351 timestamp: 1733332029649 - kind: conda @@ -808,6 +798,7 @@ packages: - frozenlist >=1.1.0 - python >=3.9 license: Apache-2.0 + license_family: APACHE size: 13157 timestamp: 1733332198143 - kind: conda @@ -1533,13 +1524,12 @@ packages: timestamp: 1733333955728 - kind: conda name: aws-sdk-cpp - version: 1.11.449 - build: h3b64406_4 - build_number: 4 + version: 1.11.458 + build: h3b64406_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.449-h3b64406_4.conda - sha256: 10ce9c203d31229432421a841d8d135d3e942637571aae4bb2d3c7d5242e7f05 - md5: f9e46a4bb5a04cbca08355f166ce87c8 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-h3b64406_0.conda + sha256: ded5412750f5c29bdf8ef6bc5ab26e443dc4943bd69c9098a791d8a2bf9b184e + md5: 9a8d3ba158ff8ea08e17de366c238706 depends: - __osx >=11.0 - aws-c-common >=0.10.3,<0.10.4.0a0 @@ -1552,17 +1542,16 @@ packages: - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 2722689 - timestamp: 1732812825640 + size: 2853609 + timestamp: 1733389337912 - kind: conda name: aws-sdk-cpp - version: 1.11.449 - build: h5558e3c_4 - build_number: 4 + version: 1.11.458 + build: h5558e3c_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.449-h5558e3c_4.conda - sha256: 4881f7b4f5e3c797332cffb990df246a422346b220a9c16014f274beb2a276f5 - md5: ba7abdc93b0ade11d774b47aaab84737 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-h5558e3c_0.conda + sha256: 7eab747a5a3e1a46b9c85c591c30ca2d4e90c2cebeaec95c4fe016846efdfa14 + md5: b1919becd17fe224aacf708114231fda depends: - __glibc >=2.17,<3.0.a0 - aws-c-common >=0.10.3,<0.10.4.0a0 @@ -1576,17 +1565,16 @@ packages: - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 2945541 - timestamp: 1732812288219 + size: 3059100 + timestamp: 1733388777418 - kind: conda name: aws-sdk-cpp - version: 1.11.449 - build: h7085e57_4 - build_number: 4 + version: 1.11.458 + build: h7085e57_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.449-h7085e57_4.conda - sha256: 0908a82e7c50c51d5ee0ca543dbe70cbe1963e6e8f80ffa58ea6d26e5c68251e - md5: feec198cb18a5e90aa36c97328567d63 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h7085e57_0.conda + sha256: 6d5327305721d18d650a3f8a377dc30e65600f59bd33fd4fcad106965b09b6b8 + md5: 005e0cc687a2421a4ad493e5b7058abe depends: - aws-c-common >=0.10.3,<0.10.4.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 @@ -1599,8 +1587,8 @@ packages: - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 2813856 - timestamp: 1732812337182 + size: 2903434 + timestamp: 1733388870289 - kind: conda name: azure-core-cpp version: 1.14.0 @@ -2333,13 +2321,13 @@ packages: timestamp: 1733208916977 - kind: conda name: fastapi - version: 0.115.5 - build: pyhff2d567_0 + version: 0.115.6 + build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.5-pyhff2d567_0.conda - sha256: da2833cc2ea5789abc2a6899be02ba0a769386d4913ff182bd1a9458bea40c34 - md5: cfe0f8cd904ab19c36ba50eb5179ebe0 + url: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.6-pyhd8ed1ab_0.conda + sha256: d7826d537c667093c9de96411a09585a8d620c84a830a0195e58e9a0df45f018 + md5: 1b1e0c97830cdf75f1f371bd467ab657 depends: - email_validator >=2.0.0 - fastapi-cli >=0.0.5 @@ -2353,8 +2341,8 @@ packages: - uvicorn-standard >=0.12.0 license: MIT license_family: MIT - size: 73541 - timestamp: 1731452895466 + size: 73084 + timestamp: 1733362427885 - kind: conda name: fastapi-cli version: 0.0.5 @@ -2489,18 +2477,18 @@ packages: - kind: conda name: fsspec version: 2024.10.0 - build: pyhff2d567_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhff2d567_0.conda - sha256: 40bb76981dd49d5869b48925a8975bb7bbe4e33e1e40af4ec06f6bf4a62effd7 - md5: 816dbc4679a64e4417cd1385d661bb31 + url: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhd8ed1ab_1.conda + sha256: 790a50b4f94042951518f911a914a886a837c926094c6a14ed1d9d03ce336807 + md5: 906fe13095e734cb413b57a49116cdc8 depends: - - python >=3.8 + - python >=3.9 license: BSD-3-Clause - license_family: BSD - size: 134745 - timestamp: 1729608972363 + size: 134726 + timestamp: 1733493445080 - kind: conda name: gflags version: 2.2.2 @@ -2740,12 +2728,13 @@ packages: - kind: conda name: httpx version: 0.28.0 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_0.conda - sha256: cb7895446cd93091300accea6afbc8d9811a3c5899922ccfeeff97d9b55909dc - md5: 22878824a87f1af2ad48665f9d5bfcc8 + url: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_1.conda + sha256: 0b864abaa9f1443fc42368b4d2a4f4efb9971a53f961d1fe30fabd7fbdd76b27 + md5: 8a4a83ba566c6b5c718dd0531a362d01 depends: - anyio - certifi @@ -2754,8 +2743,8 @@ packages: - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 63183 - timestamp: 1732831049776 + size: 63203 + timestamp: 1733501478172 - kind: conda name: huggingface_hub version: 0.26.3 @@ -2810,6 +2799,20 @@ packages: license_family: MIT size: 12282786 timestamp: 1720853454991 +- kind: conda + name: icu + version: '75.1' + build: hfee45f7_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda + sha256: 9ba12c93406f3df5ab0a43db8a4b4ef67a5871dfd401010fbe29b218b2cbe620 + md5: 5eb22c1d7b3fc4abb50d92d621583137 + depends: + - __osx >=11.0 + license: MIT + license_family: MIT + size: 11857802 + timestamp: 1720853997952 - kind: conda name: idna version: '3.10' @@ -2862,24 +2865,25 @@ packages: - kind: conda name: jupyter_client version: 8.6.3 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_0.conda - sha256: 4419c85e209a715f551a5c9bead746f29ee9d0fc41e772a76db3868622795671 - md5: a14218cfb29662b4a19ceb04e93e298e + url: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + sha256: 19d8bd5bb2fde910ec59e081eeb59529491995ce0d653a5209366611023a0b3a + md5: 4ebae00eae9705b0c3d6d1018a81d047 depends: - importlib-metadata >=4.8.3 - jupyter_core >=4.12,!=5.0.* - - python >=3.8 + - python >=3.9 - python-dateutil >=2.8.2 - pyzmq >=23.0 - tornado >=6.2 - traitlets >=5.3 license: BSD-3-Clause license_family: BSD - size: 106055 - timestamp: 1726610805505 + size: 106342 + timestamp: 1733441040958 - kind: conda name: jupyter_core version: 5.7.2 @@ -3165,16 +3169,16 @@ packages: - kind: conda name: libarrow version: 18.1.0 - build: h654e1bb_2_cpu - build_number: 2 + build: h5affd47_3_cpu + build_number: 3 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-h654e1bb_2_cpu.conda - sha256: 925dcb034f36536eed21d9323f096bf2ebf1111d14c61e1ae0b90e5de131f1e1 - md5: e69934ff9dd8745fea8927028d1603ee + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-h5affd47_3_cpu.conda + sha256: 9dac7f7b96972a3c18549d8669269233ae9e7b25da56161bd85a86b98ca61f76 + md5: 3dc73b42851e6096542458eaf2c074ca depends: - __osx >=11.0 - aws-crt-cpp >=0.29.6,<0.29.7.0a0 - - aws-sdk-cpp >=1.11.449,<1.11.450.0a0 + - aws-sdk-cpp >=1.11.458,<1.11.459.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-identity-cpp >=1.10.0,<1.10.1.0a0 - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 @@ -3198,24 +3202,23 @@ packages: - zstd >=1.5.6,<1.6.0a0 constrains: - arrow-cpp <0.0a0 - - parquet-cpp <0.0a0 - apache-arrow-proc =*=cpu + - parquet-cpp <0.0a0 license: Apache-2.0 - license_family: APACHE - size: 5475725 - timestamp: 1732947802614 + size: 5487846 + timestamp: 1733450423101 - kind: conda name: libarrow version: 18.1.0 - build: hc7b0e1d_2_cpu - build_number: 2 + build: hb63acf4_3_cpu + build_number: 3 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-hc7b0e1d_2_cpu.conda - sha256: 3201944d1f97b9207e566ccf388c8376bb2ce7e461534cda63a28975b6790901 - md5: 4a46bd0be8e7f56a217d26b79d290a0e + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-hb63acf4_3_cpu.conda + sha256: e972904b472008f902df9e584f59ff7716fc22efc1124d1dfc41c931852acc75 + md5: d98a11c3ba32554873aeb6a071baceaa depends: - aws-crt-cpp >=0.29.6,<0.29.7.0a0 - - aws-sdk-cpp >=1.11.449,<1.11.450.0a0 + - aws-sdk-cpp >=1.11.458,<1.11.459.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-identity-cpp >=1.10.0,<1.10.1.0a0 - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 @@ -3240,26 +3243,25 @@ packages: - snappy >=1.2.1,<1.3.0a0 - zstd >=1.5.6,<1.6.0a0 constrains: + - parquet-cpp <0.0a0 - apache-arrow-proc =*=cpu - arrow-cpp <0.0a0 - - parquet-cpp <0.0a0 license: Apache-2.0 - license_family: APACHE - size: 8026783 - timestamp: 1732950110265 + size: 8048003 + timestamp: 1733452700958 - kind: conda name: libarrow version: 18.1.0 - build: he15abb1_1_cpu - build_number: 1 + build: hcf3f2e3_3_cpu + build_number: 3 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-he15abb1_1_cpu.conda - sha256: afc81af2e533cc35295aebae4fb382e770310d9b1ac31837456b440d35c54cf7 - md5: bd3e35a6f3f869b4777488452f315008 + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-hcf3f2e3_3_cpu.conda + sha256: a82f66f0a37ed3132e6b9faff9285d7ccbe950ccfe84edd6378fdee70ef2743e + md5: 196823c7752608cb6b5d5a7a33b17410 depends: - __glibc >=2.17,<3.0.a0 - aws-crt-cpp >=0.29.6,<0.29.7.0a0 - - aws-sdk-cpp >=1.11.449,<1.11.450.0a0 + - aws-sdk-cpp >=1.11.458,<1.11.459.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-identity-cpp >=1.10.0,<1.10.1.0a0 - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 @@ -3276,7 +3278,7 @@ packages: - libgoogle-cloud-storage >=2.31.0,<2.32.0a0 - libre2-11 >=2024.7.2 - libstdcxx >=13 - - libutf8proc >=2.8.0,<2.9.0a0 + - libutf8proc >=2.9.0,<2.10.0a0 - libzlib >=1.3.1,<2.0a0 - lz4-c >=1.9.3,<1.10.0a0 - orc >=2.0.3,<2.0.4.0a0 @@ -3284,190 +3286,180 @@ packages: - snappy >=1.2.1,<1.3.0a0 - zstd >=1.5.6,<1.6.0a0 constrains: + - apache-arrow-proc =*=cpu - parquet-cpp <0.0a0 - arrow-cpp <0.0a0 - - apache-arrow-proc =*=cpu license: Apache-2.0 - license_family: APACHE - size: 8780597 - timestamp: 1732863546099 + size: 8796519 + timestamp: 1733453489520 - kind: conda name: libarrow-acero version: 18.1.0 - build: h5888daf_1_cpu - build_number: 1 + build: h36004a0_3_cpu + build_number: 3 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-h5888daf_1_cpu.conda - sha256: 3de5719a7035baad7e665116dce7bb3d069f0c1916e163c553e2e491bbe8b614 - md5: 6197dcb930f6254e9b2fdc416be56b71 + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-h36004a0_3_cpu.conda + sha256: 0733a303b2dd5998489099d6c258ee442d3f8243379d339f57700554d696fe41 + md5: 6d8f74ac97166e09cdf02109ed9905ce depends: - __glibc >=2.17,<3.0.a0 - - libarrow 18.1.0 he15abb1_1_cpu + - libarrow 18.1.0 hcf3f2e3_3_cpu - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 - license_family: APACHE - size: 611272 - timestamp: 1732863586114 -- kind: conda - name: libarrow-acero - version: 18.1.0 - build: h5ad3122_2_cpu - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h5ad3122_2_cpu.conda - sha256: e6c8988d1d79163d6d13dda21f9e401f5df4b3af7e0d221718522c600894adcf - md5: 14fede66c995f3cf958797e9fb567e22 - depends: - - libarrow 18.1.0 hc7b0e1d_2_cpu - - libgcc >=13 - - libstdcxx >=13 - license: Apache-2.0 - license_family: APACHE - size: 577510 - timestamp: 1732950190684 + size: 612773 + timestamp: 1733453636002 - kind: conda name: libarrow-acero version: 18.1.0 - build: h605b82c_2_cpu - build_number: 2 + build: haafc02e_3_cpu + build_number: 3 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-h605b82c_2_cpu.conda - sha256: cfe32f1b0712b77d2c792a839fe4ea2790cabd99d47cd8e1b20ba2d3c8b113b2 - md5: 60351279d7dfd7c254c46aabf9aa35a6 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-haafc02e_3_cpu.conda + sha256: 214df0ac0f44dd792193d11c84dbf79a42ed0f663c7b1a06aa5ab755b93c1948 + md5: f3a050129b5012bd5fc381693f6eb2cd depends: - __osx >=11.0 - - libarrow 18.1.0 h654e1bb_2_cpu + - libarrow 18.1.0 h5affd47_3_cpu - libcxx >=18 license: Apache-2.0 - license_family: APACHE - size: 483362 - timestamp: 1732948000606 + size: 483753 + timestamp: 1733450627207 - kind: conda - name: libarrow-dataset + name: libarrow-acero version: 18.1.0 - build: h5888daf_1_cpu - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-h5888daf_1_cpu.conda - sha256: 7b3db3d5a7e411f8897e8d74403c1d871f3054300f5009c4bdf75da011bc3f42 - md5: 77501831a2aabbaabac55e8cb3b6900a + build: he2e0623_3_cpu + build_number: 3 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-he2e0623_3_cpu.conda + sha256: 1560efabce824155dd841219c299c71352594b5e237dce0879c2d8f50c16047a + md5: fa54002b982019ecc0e93cb4b2c493e9 depends: - - __glibc >=2.17,<3.0.a0 - - libarrow 18.1.0 he15abb1_1_cpu - - libarrow-acero 18.1.0 h5888daf_1_cpu + - libarrow 18.1.0 hb63acf4_3_cpu - libgcc >=13 - - libparquet 18.1.0 h6bd9018_1_cpu - libstdcxx >=13 license: Apache-2.0 - license_family: APACHE - size: 585458 - timestamp: 1732863686753 + size: 578323 + timestamp: 1733452783322 - kind: conda name: libarrow-dataset version: 18.1.0 - build: h5ad3122_2_cpu - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h5ad3122_2_cpu.conda - sha256: 53cdae2150c22ef9b5d6de8d0ee8ac52eeacc50fdfa2fa3ea644b52436d1eeb1 - md5: c54d83f012a40fef8a2dc4856e4340a0 + build: h36004a0_3_cpu + build_number: 3 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-h36004a0_3_cpu.conda + sha256: d5a0b4a2129a540548b0232df23e6940fe73d54e5ace5a31f5419d96a059f317 + md5: e9eac639d83b1c35f7743845b922d61a depends: - - libarrow 18.1.0 hc7b0e1d_2_cpu - - libarrow-acero 18.1.0 h5ad3122_2_cpu + - __glibc >=2.17,<3.0.a0 + - libarrow 18.1.0 hcf3f2e3_3_cpu + - libarrow-acero 18.1.0 h36004a0_3_cpu - libgcc >=13 - - libparquet 18.1.0 h23a96eb_2_cpu + - libparquet 18.1.0 hbdb145b_3_cpu - libstdcxx >=13 license: Apache-2.0 - license_family: APACHE - size: 559143 - timestamp: 1732950272727 + size: 585416 + timestamp: 1733454137952 - kind: conda name: libarrow-dataset version: 18.1.0 - build: h605b82c_2_cpu - build_number: 2 + build: haafc02e_3_cpu + build_number: 3 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-h605b82c_2_cpu.conda - sha256: eeae9e8d382c482076f4739455b53f16851d7f99be219b6f96dd4e765132b446 - md5: b5fcaddabf47aa15e50feff072a55ada + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-haafc02e_3_cpu.conda + sha256: 7b105d363d5f71db88454b304e44166c17b2970ddb0297b482f3d8b39fb39308 + md5: 8c57e5a50f865a16cafd92f5a32c9faa depends: - __osx >=11.0 - - libarrow 18.1.0 h654e1bb_2_cpu - - libarrow-acero 18.1.0 h605b82c_2_cpu + - libarrow 18.1.0 h5affd47_3_cpu + - libarrow-acero 18.1.0 haafc02e_3_cpu - libcxx >=18 - - libparquet 18.1.0 h5168bdf_2_cpu + - libparquet 18.1.0 h3a603ae_3_cpu license: Apache-2.0 - license_family: APACHE - size: 489769 - timestamp: 1732949732423 + size: 489900 + timestamp: 1733452479126 - kind: conda - name: libarrow-substrait + name: libarrow-dataset version: 18.1.0 - build: h14ec2bd_2_cpu - build_number: 2 + build: he2e0623_3_cpu + build_number: 3 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h14ec2bd_2_cpu.conda - sha256: e8923d62cfaadc4a8af1735e717fd4980cad693419e63aed04380566d9fd46df - md5: 4fd0103449cf40214fd348643aa78fff + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-he2e0623_3_cpu.conda + sha256: b26a03f529a4b87dcf523b012f9ccdac124b65f41801da7eb489192916e447ff + md5: 048f04da68a40e9e5e1e66ff9502b237 + depends: + - libarrow 18.1.0 hb63acf4_3_cpu + - libarrow-acero 18.1.0 he2e0623_3_cpu + - libgcc >=13 + - libparquet 18.1.0 h553aec1_3_cpu + - libstdcxx >=13 + license: Apache-2.0 + size: 559844 + timestamp: 1733453065157 +- kind: conda + name: libarrow-substrait + version: 18.1.0 + build: h4c1644f_3_cpu + build_number: 3 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-h4c1644f_3_cpu.conda + sha256: 562c344d57b718aa838ccc01acae240d9ab33dd2da7db40dbe75d1db6b441e71 + md5: 7ba2783c26a0008307e2a1e637c2930f depends: + - __osx >=11.0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.1.0 hc7b0e1d_2_cpu - - libarrow-acero 18.1.0 h5ad3122_2_cpu - - libarrow-dataset 18.1.0 h5ad3122_2_cpu - - libgcc >=13 + - libarrow 18.1.0 h5affd47_3_cpu + - libarrow-acero 18.1.0 haafc02e_3_cpu + - libarrow-dataset 18.1.0 haafc02e_3_cpu + - libcxx >=18 - libprotobuf >=5.28.2,<5.28.3.0a0 - - libstdcxx >=13 license: Apache-2.0 - license_family: APACHE - size: 515352 - timestamp: 1732950311471 + size: 451428 + timestamp: 1733453012619 - kind: conda name: libarrow-substrait version: 18.1.0 - build: h5c8f2c3_1_cpu - build_number: 1 + build: h56a123c_3_cpu + build_number: 3 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-h5c8f2c3_1_cpu.conda - sha256: e77a354bfc0ba7b04c856f1bb16e7b08950bcde54026087bafec46090380fcc1 - md5: 5d47bd2674afd104dbe2f2f3534594b0 + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-h56a123c_3_cpu.conda + sha256: 139104d80048382c48718a65721b24fa4d69abd6c2052ee1ab20f32b7d48228d + md5: 306bb541b83a83b66d5c1e6880302886 depends: - __glibc >=2.17,<3.0.a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.1.0 he15abb1_1_cpu - - libarrow-acero 18.1.0 h5888daf_1_cpu - - libarrow-dataset 18.1.0 h5888daf_1_cpu + - libarrow 18.1.0 hcf3f2e3_3_cpu + - libarrow-acero 18.1.0 h36004a0_3_cpu + - libarrow-dataset 18.1.0 h36004a0_3_cpu - libgcc >=13 - libprotobuf >=5.28.2,<5.28.3.0a0 - libstdcxx >=13 license: Apache-2.0 - license_family: APACHE - size: 520681 - timestamp: 1732863726954 + size: 520740 + timestamp: 1733454379083 - kind: conda name: libarrow-substrait version: 18.1.0 - build: h9b432b6_2_cpu - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-h9b432b6_2_cpu.conda - sha256: 6dde802134bd2e78581eb838c049b2e7e378899706b471f7072222a6b1284b90 - md5: 49e7c0460532a73f34bd127fff009224 + build: hc52ba39_3_cpu + build_number: 3 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-hc52ba39_3_cpu.conda + sha256: 66f2c06ad10d8886e53661420c5b73de217a088ee4693186deec7df292f9c766 + md5: 7a8e305f1689687ed063bb4553c1a7a5 depends: - - __osx >=11.0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.1.0 h654e1bb_2_cpu - - libarrow-acero 18.1.0 h605b82c_2_cpu - - libarrow-dataset 18.1.0 h605b82c_2_cpu - - libcxx >=18 + - libarrow 18.1.0 hb63acf4_3_cpu + - libarrow-acero 18.1.0 he2e0623_3_cpu + - libarrow-dataset 18.1.0 he2e0623_3_cpu + - libgcc >=13 - libprotobuf >=5.28.2,<5.28.3.0a0 + - libstdcxx >=13 license: Apache-2.0 - license_family: APACHE - size: 451127 - timestamp: 1732950194322 + size: 515638 + timestamp: 1733453200561 - kind: conda name: libblas version: 3.9.0 @@ -4674,86 +4666,46 @@ packages: - kind: conda name: liblzma version: 5.6.3 - build: h39f12f2_0 + build: h39f12f2_1 + build_number: 1 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.3-h39f12f2_0.conda - sha256: de00d627e41636591d05407c666de957a9ddd3c0f633340c016725695569b049 - md5: faa0ab222b9d12a52a8ebc655c9236f3 + url: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.3-h39f12f2_1.conda + sha256: d863b8257406918ffdc50ae65502f2b2d6cede29404d09a094f59509d6a0aaf1 + md5: b2553114a7f5e20ccd02378a77d836aa depends: - __osx >=11.0 license: 0BSD - size: 98836 - timestamp: 1733321533638 + size: 99129 + timestamp: 1733407496073 - kind: conda name: liblzma version: 5.6.3 - build: h86ecc28_0 + build: h86ecc28_1 + build_number: 1 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.3-h86ecc28_0.conda - sha256: 004785e427d255da8cf713b4722f8330bf496ce6fc665a0b21d007d377ffee5f - md5: 83d366f7bf01fc2d7781b4cc113fc9d3 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.3-h86ecc28_1.conda + sha256: d1cce0b7d62d1e54e2164d3e0667ee808efc6c3870256e5b47a150cd0bf46824 + md5: eb08b903681f9f2432c320e8ed626723 depends: - libgcc >=13 license: 0BSD - size: 124115 - timestamp: 1733323693681 + size: 124138 + timestamp: 1733409137214 - kind: conda name: liblzma version: 5.6.3 - build: hb9d3cd8_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.3-hb9d3cd8_0.conda - sha256: 31637db828ec67ab8697de324e6074af5a36cbeddc37202d8d31e2fb397619e8 - md5: 137c535dddd880f844f33ed91b8abdba - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - license: 0BSD - size: 111223 - timestamp: 1733321312512 -- kind: conda - name: liblzma-devel - version: 5.6.3 - build: h39f12f2_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-devel-5.6.3-h39f12f2_0.conda - sha256: 2e5a9fb298bd8c01ceed8db386bfb0a125d74cef2c5ee615b4f9695b2808f7e0 - md5: 89955d2470cbacea3d5e069d67c94f44 - depends: - - __osx >=11.0 - - liblzma 5.6.3 h39f12f2_0 - license: 0BSD - size: 112941 - timestamp: 1733321552604 -- kind: conda - name: liblzma-devel - version: 5.6.3 - build: h86ecc28_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-devel-5.6.3-h86ecc28_0.conda - sha256: 740b3f1ffa57ad5f0eec0c868e23d4e1f811871c6685a04af57f1943cde1a575 - md5: 27995ae8bc93eeb949315655daa19d3c - depends: - - libgcc >=13 - - liblzma 5.6.3 h86ecc28_0 - license: 0BSD - size: 376767 - timestamp: 1733323860026 -- kind: conda - name: liblzma-devel - version: 5.6.3 - build: hb9d3cd8_0 + build: hb9d3cd8_1 + build_number: 1 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/liblzma-devel-5.6.3-hb9d3cd8_0.conda - sha256: 98020d4b4cc6c728d2e6dc1174cb2548cf03ce5098cd17c37b32f06e896a943a - md5: 7069f4de645461447f1ab7736c94db26 + url: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.3-hb9d3cd8_1.conda + sha256: e6e425252f3839e2756e4af1ea2074dffd3396c161bf460629f9dfd6a65f15c6 + md5: 2ecf2f1c7e4e21fcfe6423a51a992d84 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - - liblzma 5.6.3 hb9d3cd8_0 license: 0BSD - size: 375452 - timestamp: 1733321322415 + size: 111132 + timestamp: 1733407410083 - kind: conda name: libnghttp2 version: 1.64.0 @@ -4905,61 +4857,58 @@ packages: - kind: conda name: libparquet version: 18.1.0 - build: h23a96eb_2_cpu - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-h23a96eb_2_cpu.conda - sha256: 83b8fa4a90e214fcd6018f890947666f055f79563fff2b7c3d5f37d894f3a000 - md5: ce205782960a580fa43cfcccca22ad8d + build: h3a603ae_3_cpu + build_number: 3 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-h3a603ae_3_cpu.conda + sha256: 89f40f0f4e706392b082ee4910fedd2442b57abbf6cbbfb16a00b5aa89beb41d + md5: 78d2f729e26788a3660cee9906f440e7 depends: - - libarrow 18.1.0 hc7b0e1d_2_cpu - - libgcc >=13 - - libstdcxx >=13 + - __osx >=11.0 + - libarrow 18.1.0 h5affd47_3_cpu + - libcxx >=18 - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 - license_family: APACHE - size: 1115906 - timestamp: 1732950250848 + size: 873697 + timestamp: 1733452286970 - kind: conda name: libparquet version: 18.1.0 - build: h5168bdf_2_cpu - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-h5168bdf_2_cpu.conda - sha256: 454487d113974b923b4214a65aab780fd90c4914390d0b1f4640b1bf60537bff - md5: f995df7ee206617a3e858fd932d7bd2d + build: h553aec1_3_cpu + build_number: 3 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-h553aec1_3_cpu.conda + sha256: 965940abe9e49ae7b3adee19bf458f866a0ef35a3cf29d627b2d52c77a96a96b + md5: 46c6783e8b46449a9baabef57c69f30a depends: - - __osx >=11.0 - - libarrow 18.1.0 h654e1bb_2_cpu - - libcxx >=18 + - libarrow 18.1.0 hb63acf4_3_cpu + - libgcc >=13 + - libstdcxx >=13 - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 - license_family: APACHE - size: 872333 - timestamp: 1732949558028 + size: 1116941 + timestamp: 1733452997475 - kind: conda name: libparquet version: 18.1.0 - build: h6bd9018_1_cpu - build_number: 1 + build: hbdb145b_3_cpu + build_number: 3 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-h6bd9018_1_cpu.conda - sha256: 0df119f4c1a2387d910e132c670b29ee5b29dd79384549de6f1a43067515c8ba - md5: 1054909202f86e38bbbb7ca1131b8471 + url: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-hbdb145b_3_cpu.conda + sha256: 034086f71824a3ea77a9bd21029fd4c4ef25b3a95fc77933704b8b49ff55c7f3 + md5: cb249762e1e65941b559d436c60e520d depends: - __glibc >=2.17,<3.0.a0 - - libarrow 18.1.0 he15abb1_1_cpu + - libarrow 18.1.0 hcf3f2e3_3_cpu - libgcc >=13 - libstdcxx >=13 - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 - license_family: APACHE - size: 1203523 - timestamp: 1732863665743 + size: 1204740 + timestamp: 1733454014411 - kind: conda name: libpng version: 1.6.44 @@ -5370,86 +5319,70 @@ packages: - kind: conda name: libtiff version: 4.7.0 - build: he137b08_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-he137b08_1.conda - sha256: 9890121db85f6ef463fe12eb04ef1471176e3ef3b5e2d62e8d6dac713df00df4 - md5: 63872517c98aa305da58a757c443698e + build: ha962b0a_2 + build_number: 2 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-ha962b0a_2.conda + sha256: d9e6835fd189b85eb90dbfdcc51f5375decbf5bb53130042f49bbd6bfb0b24be + md5: 8e14b5225c593f099a21971568e6d7b4 depends: - - __glibc >=2.17,<3.0.a0 + - __osx >=11.0 - lerc >=4.0.0,<5.0a0 + - libcxx >=18 - libdeflate >=1.22,<1.23.0a0 - - libgcc >=13 - libjpeg-turbo >=3.0.0,<4.0a0 - - libstdcxx >=13 + - liblzma >=5.6.3,<6.0a0 - libwebp-base >=1.4.0,<2.0a0 - libzlib >=1.3.1,<2.0a0 - - xz >=5.2.6,<6.0a0 - zstd >=1.5.6,<1.6.0a0 license: HPND - size: 428156 - timestamp: 1728232228989 + size: 370387 + timestamp: 1733443310502 - kind: conda name: libtiff version: 4.7.0 - build: hec21d91_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.0-hec21d91_1.conda - sha256: 14ecb9e129b1b5ffd6d4bee48de95cd2cd0973c712e1b965d3ef977cca23936d - md5: 1f80061f5ba6956fcdc381f34618cd8d + build: hc4654cb_2 + build_number: 2 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hc4654cb_2.conda + sha256: 18653b4a5c73e19c5e86ff72dab9bf59f5cc43d7f404a6be705d152dfd5e0660 + md5: be54fb40ea32e8fe9dbaa94d4528b57e depends: + - __glibc >=2.17,<3.0.a0 - lerc >=4.0.0,<5.0a0 - libdeflate >=1.22,<1.23.0a0 - libgcc >=13 - libjpeg-turbo >=3.0.0,<4.0a0 + - liblzma >=5.6.3,<6.0a0 - libstdcxx >=13 - libwebp-base >=1.4.0,<2.0a0 - libzlib >=1.3.1,<2.0a0 - - xz >=5.2.6,<6.0a0 - zstd >=1.5.6,<1.6.0a0 license: HPND - size: 464938 - timestamp: 1728232266969 + size: 429018 + timestamp: 1733443013288 - kind: conda name: libtiff version: 4.7.0 - build: hfce79cd_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-hfce79cd_1.conda - sha256: 97ba24c74750b6e731b3fe0d2a751cda6148b4937d2cc3f72d43bf7b3885c39d - md5: b9abf45f7c64caf3303725f1aa0e9a4d + build: hca96517_2 + build_number: 2 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.0-hca96517_2.conda + sha256: d736d840d1f2446234195adfcb51b132c85797730b6f42ebf058d350fa9d20e8 + md5: 278dcef6d1ea28c04109c3f5dea126cb depends: - - __osx >=11.0 - lerc >=4.0.0,<5.0a0 - - libcxx >=17 - libdeflate >=1.22,<1.23.0a0 + - libgcc >=13 - libjpeg-turbo >=3.0.0,<4.0a0 + - liblzma >=5.6.3,<6.0a0 + - libstdcxx >=13 - libwebp-base >=1.4.0,<2.0a0 - libzlib >=1.3.1,<2.0a0 - - xz >=5.2.6,<6.0a0 - zstd >=1.5.6,<1.6.0a0 license: HPND - size: 366323 - timestamp: 1728232400072 -- kind: conda - name: libutf8proc - version: 2.8.0 - build: hf23e847_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.8.0-hf23e847_1.conda - sha256: 104cf5b427fc914fec63e55f685a39480abeb4beb34bdbc77dea084c8f5a55cb - md5: b1aa0faa95017bca11369bd080487ec4 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - license: MIT - license_family: MIT - size: 80852 - timestamp: 1732829699583 + size: 464857 + timestamp: 1733443105529 - kind: conda name: libutf8proc version: 2.9.0 @@ -5480,6 +5413,22 @@ packages: license_family: MIT size: 81526 timestamp: 1732868466862 +- kind: conda + name: libutf8proc + version: 2.9.0 + build: hb9d3cd8_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.9.0-hb9d3cd8_1.conda + sha256: 9794e6388e780c3310d46f773bbc924d4053375c3fcdb07a704b57f4616db928 + md5: 1e936bd23d737aac62a18e9a1e7f8b18 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + license: MIT + license_family: MIT + size: 81500 + timestamp: 1732868419835 - kind: conda name: libuuid version: 2.38.1 @@ -5680,60 +5629,62 @@ packages: - kind: conda name: libxml2 version: 2.13.5 - build: h064dc61_0 + build: h0d44e9d_1 + build_number: 1 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.5-h064dc61_0.conda - sha256: 7ab7fb45a0014981d35247cd5b09057fc8ed3c07378086a6c7ad552915928647 - md5: fb16b85a5be1328ac1c44b098b74c570 + url: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.5-h0d44e9d_1.conda + sha256: 306e18aa647d8208ad2cd0e62d84933222b2fbe93d2d53cd5283d2256b1d54de + md5: f5b05674697ae7d2c5932766695945e1 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - libiconv >=1.17,<2.0a0 + - liblzma >=5.6.3,<6.0a0 - libzlib >=1.3.1,<2.0a0 - - xz >=5.2.6,<6.0a0 constrains: - icu <0.0a0 license: MIT license_family: MIT - size: 689363 - timestamp: 1731489619071 + size: 689993 + timestamp: 1733443678322 - kind: conda name: libxml2 version: 2.13.5 - build: h376fa9f_0 + build: h178c5d8_1 + build_number: 1 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.5-h376fa9f_0.conda - sha256: d443703d324f3dbd628d58ea498ab0e474c06d5771e7f55baf215fdbc11ceb87 - md5: adea92805465ed3dcf0776b428e34744 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.5-h178c5d8_1.conda + sha256: d7af3f25a4cece170502acd38f2dafbea4521f373f46dcb28a37fbe6ac2da544 + md5: 3dc3cff0eca1640a6acbbfab2f78139e depends: - __osx >=11.0 + - icu >=75.1,<76.0a0 - libiconv >=1.17,<2.0a0 + - liblzma >=5.6.3,<6.0a0 - libzlib >=1.3.1,<2.0a0 - - xz >=5.2.6,<6.0a0 - constrains: - - icu <0.0a0 license: MIT license_family: MIT - size: 582076 - timestamp: 1731489850179 + size: 582898 + timestamp: 1733443841584 - kind: conda name: libxml2 version: 2.13.5 - build: hf4efe5d_0 + build: h2e0c361_1 + build_number: 1 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.5-hf4efe5d_0.conda - sha256: bb5033bd79371e82886f9e83ef86babae8e0f50b77d7f9302210345b9205d939 - md5: 5650ac8a6ed680c032bdabe40ad19ee0 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.5-h2e0c361_1.conda + sha256: dc0e86d35a836af6e99d18f50c6551fc64c53ed3a3da5a9fea90e78763cf14b4 + md5: 63410f85031930cde371dfe0ee89109a depends: - icu >=75.1,<76.0a0 - libgcc >=13 - libiconv >=1.17,<2.0a0 + - liblzma >=5.6.3,<6.0a0 - libzlib >=1.3.1,<2.0a0 - - xz >=5.2.6,<6.0a0 license: MIT license_family: MIT - size: 734453 - timestamp: 1731489860751 + size: 732155 + timestamp: 1733443825814 - kind: conda name: libzlib version: 1.3.1 @@ -5788,20 +5739,20 @@ packages: timestamp: 1727963148474 - kind: conda name: llvm-openmp - version: 19.1.4 + version: 19.1.5 build: hdb05f8b_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.4-hdb05f8b_0.conda - sha256: dfdcd8de37899d984326f9734b28f46f80b88c068e44c562933a8b3117f2401a - md5: 76ca179ec970bea6e275e2fa477c2d3c + url: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.5-hdb05f8b_0.conda + sha256: e7ba0d8b718925efdcf1309f5e776e3264cc172d3af8d4048b39627c50a1abc0 + md5: f2c2e187a1d2637d282e34dc92021a70 depends: - __osx >=11.0 constrains: - - openmp 19.1.4|19.1.4.* + - openmp 19.1.5|19.1.5.* license: Apache-2.0 WITH LLVM-exception license_family: APACHE - size: 281554 - timestamp: 1732102484807 + size: 281120 + timestamp: 1733376089600 - kind: conda name: lz4-c version: 1.9.4 @@ -5924,76 +5875,76 @@ packages: timestamp: 1733219945697 - kind: conda name: max - version: 24.6.0.dev2024120416 + version: 24.6.0.dev2024120616 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120416-release.conda - sha256: 956c006755158839ee6f8de7d91360cd1990024868d867482a62885241c9794f - md5: 09947b7aa3a3c35b413b7c0d118126e3 - depends: - - max-core ==24.6.0.dev2024120416 release - - max-python >=24.6.0.dev2024120416,<25.0a0 - - mojo-jupyter ==24.6.0.dev2024120416 release - - mblack ==24.6.0.dev2024120416 release + url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120616-release.conda + sha256: 2338e4ad8e940eee4cf31d6ccfb9605bc3aaa0e2331e3c0f40c1063a0d6f4c58 + md5: 562c33b920321a676acb3fc49c2ddb11 + depends: + - max-core ==24.6.0.dev2024120616 release + - max-python >=24.6.0.dev2024120616,<25.0a0 + - mojo-jupyter ==24.6.0.dev2024120616 release + - mblack ==24.6.0.dev2024120616 release license: LicenseRef-Modular-Proprietary - size: 9925 - timestamp: 1733332193356 + size: 9919 + timestamp: 1733502206770 - kind: conda name: max-core - version: 24.6.0.dev2024120416 + version: 24.6.0.dev2024120616 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120416-release.conda - sha256: e73a6e3abebc4516d56d39b85d10e98883885218273b2ef19c7cfe4d3df7a4ef - md5: 43a976936171480fe7dbc2fed1224312 + url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120616-release.conda + sha256: 626f40a00b28c6958272a368b31944d9d62bd57a931910b1e4520d7501c57b61 + md5: 88e589273bf2ae77f80f879adacd234a depends: - - mblack ==24.6.0.dev2024120416 release + - mblack ==24.6.0.dev2024120616 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 245904359 - timestamp: 1733332193354 + size: 247418489 + timestamp: 1733502146971 - kind: conda name: max-core - version: 24.6.0.dev2024120416 + version: 24.6.0.dev2024120616 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120416-release.conda - sha256: e32ebc6b7f589881f14caec8df02b65c40839a0210ef6a87d85243b61b5fc7d8 - md5: 15cac805514c6a381a9a50ee3a86de25 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120616-release.conda + sha256: af5fcd915dd10f9a72d936fee1b4a32127725a072fb6df41b7a3f43997f3ac3b + md5: 5243c455575512a6061067e3b5d67e0f depends: - - mblack ==24.6.0.dev2024120416 release + - mblack ==24.6.0.dev2024120616 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 249618446 - timestamp: 1733332472125 + size: 251333959 + timestamp: 1733502206769 - kind: conda name: max-core - version: 24.6.0.dev2024120416 + version: 24.6.0.dev2024120616 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120416-release.conda - sha256: bc27468be85cc7fd207ec44a4a0b1b11aa54792737a20fcf8355a2f2e7a215d5 - md5: c27c6f67be3abffbf559bfd50852b493 + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120616-release.conda + sha256: 9f051d29fdebf2c33eaa96659e75b06bf2befb17ac6992dc526b71eb4b959fc2 + md5: 99f131bbf681d02fe75d5f9e7dc0ab57 depends: - - mblack ==24.6.0.dev2024120416 release + - mblack ==24.6.0.dev2024120616 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 210212276 - timestamp: 1733332258535 + size: 211890615 + timestamp: 1733502249826 - kind: conda name: max-python - version: 24.6.0.dev2024120416 + version: 24.6.0.dev2024120616 build: 3.12release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120416-3.12release.conda - sha256: 48e30a62cdee247e87b9f07d465ae91c75d47f292eeba5d2ca9c2d86d30e8875 - md5: 78af7733b4858c1bd882279a45e98795 + url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120616-3.12release.conda + sha256: 619cfdba895fe1062b94e9e04109d5c321995c14ce80dd695937fedaeed1430b + md5: aa4c20f7f7f821d9b736c319b9b9d89a depends: - - max-core ==24.6.0.dev2024120416 release + - max-core ==24.6.0.dev2024120616 release - python 3.12.* - pillow - fastapi @@ -6015,18 +5966,18 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 122878721 - timestamp: 1733332193368 + size: 123619079 + timestamp: 1733502146987 - kind: conda name: max-python - version: 24.6.0.dev2024120416 + version: 24.6.0.dev2024120616 build: 3.12release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120416-3.12release.conda - sha256: ffff206620d5bd2cd90830467d4234e3a606143811006e67203899a9b8512938 - md5: 55ff43da6401cdd96073ae044b428afd + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120616-3.12release.conda + sha256: 1703b8f5e847917b04cc353ea6ce6fdfb4f0e5b053515b0e481b0bed93117a4f + md5: df25189682c30a5259b1ffada686cef2 depends: - - max-core ==24.6.0.dev2024120416 release + - max-core ==24.6.0.dev2024120616 release - python 3.12.* - pillow - fastapi @@ -6048,18 +5999,18 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 126526187 - timestamp: 1733332472138 + size: 127361426 + timestamp: 1733502206780 - kind: conda name: max-python - version: 24.6.0.dev2024120416 + version: 24.6.0.dev2024120616 build: 3.12release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120416-3.12release.conda - sha256: e5aaaba32cd939f3c6ba27b916851174eec6c3913a8e5ebd00b5590f026a2e16 - md5: b84b205dbce4660cdea5b0e3cda227e9 + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120616-3.12release.conda + sha256: 55e016fd1747baa8f15e358d8fe16953282a08b60c64ad6a98cbfdf0229f9d1b + md5: f03ead2bca51c2cd060703fe64ee40da depends: - - max-core ==24.6.0.dev2024120416 release + - max-core ==24.6.0.dev2024120616 release - python 3.12.* - pillow - fastapi @@ -6081,17 +6032,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 111629688 - timestamp: 1733332258538 + size: 112339857 + timestamp: 1733502249829 - kind: conda name: mblack - version: 24.6.0.dev2024120416 + version: 24.6.0.dev2024120616 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120416-release.conda - sha256: 374f5d8dfed89bf7098a0f7d8c6fd40c9dab11c4d760a03e05835e82f1b00cb9 - md5: 85c700946ce4a5ce8d11f5ee66b477cf + url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120616-release.conda + sha256: ccab714a4e70220ff559e9d0e56232964981196851bf77eeac1c3bf53ab0beb2 + md5: dec7dbfe11abd34b171d290d38adea24 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -6101,8 +6052,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130641 - timestamp: 1733332193362 + size: 130704 + timestamp: 1733502206776 - kind: conda name: mdurl version: 0.1.2 @@ -6121,21 +6072,21 @@ packages: timestamp: 1733255681319 - kind: conda name: mojo-jupyter - version: 24.6.0.dev2024120416 + version: 24.6.0.dev2024120616 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120416-release.conda - sha256: 181250d3bbe6523e4ac02e40004b6e77c04cfee2d9512dbeb584f51351df9448 - md5: 411a1d159867c56043991824d1ee88d9 + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120616-release.conda + sha256: d886857cf3c3a53c8a44433bec9b60fc90f9e43b169319bca36ca9daf0369901 + md5: 1420c233cedc5e554c728d5f8b2b1657 depends: - - max-core ==24.6.0.dev2024120416 release + - max-core ==24.6.0.dev2024120616 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22946 - timestamp: 1733332193363 + size: 11371 + timestamp: 1733502206776 - kind: conda name: multidict version: 6.1.0 @@ -6872,58 +6823,55 @@ packages: timestamp: 1733327434163 - kind: conda name: propcache - version: 0.2.0 - build: py312h024a12e_2 - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.0-py312h024a12e_2.conda - sha256: 0f3a04675c6c473398f0aaa95c259e0a085d5ec106b4fa89a7efeb7cc73d5dd2 - md5: 6693e523bc43c38508efe14ab3374f0c + version: 0.2.1 + build: py312h66e93f0_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.1-py312h66e93f0_0.conda + sha256: 5771311fb5ded614ca349c92579a0b752af55a310f40b71fc533e20625965391 + md5: 55d5742a696d7da1c1262e99b6217ceb depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 license: Apache-2.0 license_family: APACHE - size: 47796 - timestamp: 1728545963127 + size: 52747 + timestamp: 1733391916349 - kind: conda name: propcache - version: 0.2.0 - build: py312h66e93f0_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.0-py312h66e93f0_2.conda - sha256: be7aa0056680dd6e528b7992169a20dd525b94f62d37c8ba0fbf69bd4e8df57d - md5: 2c6c0c68f310bc33972e7c83264d7786 + version: 0.2.1 + build: py312hb2c0f52_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.2.1-py312hb2c0f52_0.conda + sha256: c7f62c11ed929ccf1f3d4a1e200e28be01e8d0e0786bf8f76c5893f2ea681e1b + md5: 50ab8953e7ff1333a4a47cda32e68123 depends: - - __glibc >=2.17,<3.0.a0 - libgcc >=13 - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 license: Apache-2.0 license_family: APACHE - size: 53498 - timestamp: 1728545927816 + size: 52484 + timestamp: 1733391993461 - kind: conda name: propcache - version: 0.2.0 - build: py312hb2c0f52_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.2.0-py312hb2c0f52_2.conda - sha256: 50dad7604b6c20440baf081700b5d6829097121e65f34fd1a15508b20fbecc07 - md5: 8a258196d6f79ad32d3ea4dd4572f721 + version: 0.2.1 + build: py312hea69d52_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.1-py312hea69d52_0.conda + sha256: f8c266c494aa1e4cfb8bf0b6fca060044b2f3d65afe4c5062ebeea382e77aa6d + md5: c84e3dd97fe25a17322c4a0f670c6750 depends: - - libgcc >=13 + - __osx >=11.0 - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 license: Apache-2.0 license_family: APACHE - size: 53507 - timestamp: 1728546155066 + size: 48225 + timestamp: 1733392308901 - kind: conda name: protobuf version: 5.28.2 @@ -7358,91 +7306,94 @@ packages: timestamp: 1733217331982 - kind: conda name: python - version: 3.12.7 - build: h5d932e8_0_cpython + version: 3.12.8 + build: h1683364_1_cpython + build_number: 1 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.7-h5d932e8_0_cpython.conda - sha256: 25570873d92d4d9490c6db780cc85e6c28bd3ff61dc1ece79f602cf82bc73bc1 - md5: e6cab21bb5787270388939cf41cc5f43 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.8-h1683364_1_cpython.conda + sha256: 85573582d5b0f79923fed0a8365d3d74d21eee9f0a5fa1b9345f191e006363ab + md5: 09ec612ea05370989eaa3d81abf0f369 depends: - bzip2 >=1.0.8,<2.0a0 - ld_impl_linux-aarch64 >=2.36.1 - - libexpat >=2.6.3,<3.0a0 + - libexpat >=2.6.4,<3.0a0 - libffi >=3.4,<4.0a0 - libgcc >=13 + - liblzma >=5.6.3,<6.0a0 - libnsl >=2.0.1,<2.1.0a0 - - libsqlite >=3.46.1,<4.0a0 + - libsqlite >=3.47.0,<4.0a0 - libuuid >=2.38.1,<3.0a0 - libxcrypt >=4.4.36 - libzlib >=1.3.1,<2.0a0 - ncurses >=6.5,<7.0a0 - - openssl >=3.3.2,<4.0a0 + - openssl >=3.4.0,<4.0a0 - readline >=8.2,<9.0a0 - tk >=8.6.13,<8.7.0a0 - tzdata - - xz >=5.2.6,<6.0a0 constrains: - python_abi 3.12.* *_cp312 license: Python-2.0 - size: 13762126 - timestamp: 1728057461028 + size: 13760816 + timestamp: 1733407890896 - kind: conda name: python - version: 3.12.7 - build: h739c21a_0_cpython - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.7-h739c21a_0_cpython.conda - sha256: 45d7ca2074aa92594bd2f91a9003b338cc1df8a46b9492b7fc8167110783c3ef - md5: e0d82e57ebb456077565e6d82cd4a323 + version: 3.12.8 + build: h9e4cc4f_1_cpython + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.8-h9e4cc4f_1_cpython.conda + sha256: 3f0e0518c992d8ccfe62b189125721309836fe48a010dc424240583e157f9ff0 + md5: 7fd2fd79436d9b473812f14e86746844 depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 - bzip2 >=1.0.8,<2.0a0 - - libexpat >=2.6.3,<3.0a0 + - ld_impl_linux-64 >=2.36.1 + - libexpat >=2.6.4,<3.0a0 - libffi >=3.4,<4.0a0 - - libsqlite >=3.46.1,<4.0a0 + - libgcc >=13 + - liblzma >=5.6.3,<6.0a0 + - libnsl >=2.0.1,<2.1.0a0 + - libsqlite >=3.47.0,<4.0a0 + - libuuid >=2.38.1,<3.0a0 + - libxcrypt >=4.4.36 - libzlib >=1.3.1,<2.0a0 - ncurses >=6.5,<7.0a0 - - openssl >=3.3.2,<4.0a0 + - openssl >=3.4.0,<4.0a0 - readline >=8.2,<9.0a0 - tk >=8.6.13,<8.7.0a0 - tzdata - - xz >=5.2.6,<6.0a0 constrains: - python_abi 3.12.* *_cp312 license: Python-2.0 - size: 12975439 - timestamp: 1728057819519 + size: 31565686 + timestamp: 1733410597922 - kind: conda name: python - version: 3.12.7 - build: hc5c86c4_0_cpython - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.7-hc5c86c4_0_cpython.conda - sha256: 674be31ff152d9f0e0fe16959a45e3803a730fc4f54d87df6a9ac4e6a698c41d - md5: 0515111a9cdf69f83278f7c197db9807 + version: 3.12.8 + build: hc22306f_1_cpython + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.8-hc22306f_1_cpython.conda + sha256: 7586a711b1b08a9df8864e26efdc06980bdfb0e18d5ac4651d0fee30a8d3e3a0 + md5: 54ca5b5d92ef3a3ba61e195ee882a518 depends: - - __glibc >=2.17,<3.0.a0 + - __osx >=11.0 - bzip2 >=1.0.8,<2.0a0 - - ld_impl_linux-64 >=2.36.1 - - libexpat >=2.6.3,<3.0a0 + - libexpat >=2.6.4,<3.0a0 - libffi >=3.4,<4.0a0 - - libgcc >=13 - - libnsl >=2.0.1,<2.1.0a0 - - libsqlite >=3.46.1,<4.0a0 - - libuuid >=2.38.1,<3.0a0 - - libxcrypt >=4.4.36 + - liblzma >=5.6.3,<6.0a0 + - libsqlite >=3.47.0,<4.0a0 - libzlib >=1.3.1,<2.0a0 - ncurses >=6.5,<7.0a0 - - openssl >=3.3.2,<4.0a0 + - openssl >=3.4.0,<4.0a0 - readline >=8.2,<9.0a0 - tk >=8.6.13,<8.7.0a0 - tzdata - - xz >=5.2.6,<6.0a0 constrains: - python_abi 3.12.* *_cp312 license: Python-2.0 - size: 31574780 - timestamp: 1728059777603 + size: 12998673 + timestamp: 1733408900971 - kind: conda name: python-dateutil version: 2.9.0.post0 @@ -7926,21 +7877,22 @@ packages: - kind: conda name: rich version: 13.9.4 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_0.conda - sha256: c009488fc07fd5557434c9c1ad32ab1dd50241d6a766e4b2b4125cd6498585a8 - md5: bcf8cc8924b5d20ead3d122130b8320b + url: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_1.conda + sha256: 06a760c5ae572e72e865d5a87e9fe3cc171e1a9c996e63daf3db52ff1a0b4457 + md5: 7aed65d4ff222bfb7335997aa40b7da5 depends: - markdown-it-py >=2.2.0 - pygments >=2.13.0,<3.0.0 - - python >=3.8 + - python >=3.9 - typing_extensions >=4.0.0,<5.0.0 license: MIT license_family: MIT - size: 185481 - timestamp: 1730592349978 + size: 185646 + timestamp: 1733342347277 - kind: conda name: s2n version: 1.5.9 @@ -8063,65 +8015,68 @@ packages: timestamp: 1733301007770 - kind: conda name: six - version: 1.16.0 - build: pyhd8ed1ab_1 - build_number: 1 + version: 1.17.0 + build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyhd8ed1ab_1.conda - sha256: 761b96fe7bea080b9c35dd2f87f788eb94b61d462645bd16f361e80ae0ff017c - md5: a516da6cfe1ec0a55e49737f017b4965 + url: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + sha256: 41db0180680cc67c3fa76544ffd48d6a5679d96f4b71d7498a759e94edc9a2db + md5: a451d576819089b0d672f18768be0f65 depends: - python >=3.9 license: MIT license_family: MIT size: 16385 - timestamp: 1733216901349 + timestamp: 1733381032766 - kind: conda name: snappy version: 1.2.1 - build: h1088aeb_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-h1088aeb_0.conda - sha256: 79f5d0a9098acf2ed16e6ecc4c11472b50ccf59feea37a7d585fd43888d7e41f - md5: e4ed5b015f525b56f95c26d85a4ea208 + build: h8bd8927_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-h8bd8927_1.conda + sha256: ec91e86eeb2c6bbf09d51351b851e945185d70661d2ada67204c9a6419d282d3 + md5: 3b3e64af585eadfb52bb90b553db5edf depends: - - libgcc-ng >=12 - - libstdcxx-ng >=12 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 license: BSD-3-Clause license_family: BSD - size: 42888 - timestamp: 1720003817527 + size: 42739 + timestamp: 1733501881851 - kind: conda name: snappy version: 1.2.1 - build: ha2e4443_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-ha2e4443_0.conda - sha256: dc7c8e0e8c3e8702aae81c52d940bfaabe756953ee51b1f1757e891bab62cf7f - md5: 6b7dcc7349efd123d493d2dbe85a045f + build: h98b9ce2_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-h98b9ce2_1.conda + sha256: 4242f95b215127a006eb664fe26ed5a82df87e90cbdbc7ce7ff4971f0720997f + md5: ded86dee325290da2967a3fea3800eb5 depends: - - libgcc-ng >=12 - - libstdcxx-ng >=12 + - __osx >=11.0 + - libcxx >=18 license: BSD-3-Clause license_family: BSD - size: 42465 - timestamp: 1720003704360 + size: 35857 + timestamp: 1733502172664 - kind: conda name: snappy version: 1.2.1 - build: hd02b534_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-hd02b534_0.conda - sha256: cb7a9440241c6092e0f1c795fdca149c4767023e783eaf9cfebc501f906b4897 - md5: 69d0f9694f3294418ee935da3d5f7272 + build: hd4fb6f5_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-hd4fb6f5_1.conda + sha256: c4a07ae5def8d55128f25a567a296ef9d7bf99a3bc79d46bd5160c076a5f50af + md5: 2fcc6cd1e5550deb509073fd2e6693e1 depends: - - __osx >=11.0 - - libcxx >=16 + - libgcc >=13 + - libstdcxx >=13 license: BSD-3-Clause license_family: BSD - size: 35708 - timestamp: 1720003794374 + size: 43032 + timestamp: 1733501964775 - kind: conda name: sniffio version: 1.3.1 @@ -8159,20 +8114,21 @@ packages: - kind: conda name: starlette version: 0.41.3 - build: pyh7900ff3_0 + build: pyha770c72_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyh7900ff3_0.conda - sha256: 33986032cb0515f7e9f6647d07006b7dc49b3f373b73d5a1826e6979c661b27a - md5: 0889c5a3e95d8c382cff7556757aedb0 + url: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyha770c72_1.conda + sha256: b74fc76107487eb26624c01fc55bfab7eed03ae82e003333c86d8a1eeac53672 + md5: 0207dac04ae2200701fab697f0aaaac4 depends: - anyio >=3.4.0,<5 - python >=3.9 - typing_extensions >=3.10.0 license: BSD-3-Clause license_family: BSD - size: 59069 - timestamp: 1732037161800 + size: 58838 + timestamp: 1733344472634 - kind: conda name: tk version: 8.6.13 @@ -8352,18 +8308,19 @@ packages: - kind: conda name: traitlets version: 5.14.3 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda - sha256: 8a64fa0f19022828513667c2c7176cfd125001f3f4b9bc00d33732e627dd2592 - md5: 3df84416a021220d8b5700c613af2dc5 + url: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + sha256: f39a5620c6e8e9e98357507262a7869de2ae8cc07da8b7f84e517c9fd6c2b959 + md5: 019a7385be9af33791c989871317e1ed depends: - - python >=3.8 + - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 110187 - timestamp: 1713535244513 + size: 110051 + timestamp: 1733367480074 - kind: conda name: transformers version: 4.46.3 @@ -8392,58 +8349,58 @@ packages: timestamp: 1731981383171 - kind: conda name: typer - version: 0.15.0 + version: 0.15.1 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.0-pyhd8ed1ab_0.conda - sha256: 90503b2a518434fb554d621cc4e1c533dc524ef1c0f63fde39fdf4328163a0c8 - md5: cf9393f5733c7277b1a5f79145f8485b + url: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda + sha256: ef695490e895c2ad552c77ec497b899b09fd4ad4ab07edcf5649f5994cf92a35 + md5: 170a0398946d8f5b454e592672b6fc20 depends: - python >=3.9 - - typer-slim-standard 0.15.0 hd8ed1ab_0 + - typer-slim-standard 0.15.1 hd8ed1ab_0 license: MIT license_family: MIT - size: 56455 - timestamp: 1733279871129 + size: 56175 + timestamp: 1733408582623 - kind: conda name: typer-slim - version: 0.15.0 + version: 0.15.1 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.0-pyhd8ed1ab_0.conda - sha256: f6a85917292aaea0577792090ac74dbdb0280a656934746f715bfa9feaa9b2dc - md5: 629fef89115de5a907fb9765cdd45b26 + url: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda + sha256: d4965516f35e0805199de6596c4ac76c4ad3d6b012be35e532102f9e53ecb860 + md5: 0218b16f5a1dd569e575a7a6415489db depends: - click >=8.0.0 - python >=3.9 - typing_extensions >=3.7.4.3 constrains: - - typer >=0.15.0,<0.15.1.0a0 - - shellingham >=1.3.0 - rich >=10.11.0 + - typer >=0.15.1,<0.15.2.0a0 + - shellingham >=1.3.0 license: MIT license_family: MIT - size: 43480 - timestamp: 1733279858535 + size: 43592 + timestamp: 1733408569554 - kind: conda name: typer-slim-standard - version: 0.15.0 + version: 0.15.1 build: hd8ed1ab_0 subdir: noarch noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.0-hd8ed1ab_0.conda - sha256: df52ddd24439aff384a82d00a751947b12127ab571f4aa674a1053c703ce8ed0 - md5: a4746fc9efbff02c1a288d8fcd8ffba9 + url: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda + sha256: f31c56fe98315da8b9ce848256c17e0b9f87896b41a6ccf0c9cc74644dcef20f + md5: 4e603c43bfdfc7b533be087c3e070cc9 depends: - rich - shellingham - - typer-slim 0.15.0 pyhd8ed1ab_0 + - typer-slim 0.15.1 pyhd8ed1ab_0 license: MIT license_family: MIT - size: 50259 - timestamp: 1733279859017 + size: 49531 + timestamp: 1733408570063 - kind: conda name: typing-extensions version: 4.12.2 @@ -8896,144 +8853,6 @@ packages: license_family: BSD size: 97691 timestamp: 1689951608120 -- kind: conda - name: xz - version: 5.6.3 - build: h2dbfc1b_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-5.6.3-h2dbfc1b_0.conda - sha256: 65df445d131d1695c45a95d102b8ffaaed5a387b4f97e209ba7d8fa0b7599dec - md5: da081cb850e57b0a0a242bab9087fbeb - depends: - - libgcc >=13 - - liblzma 5.6.3 h86ecc28_0 - - liblzma-devel 5.6.3 h86ecc28_0 - - xz-gpl-tools 5.6.3 h2dbfc1b_0 - - xz-tools 5.6.3 h86ecc28_0 - license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later - size: 23448 - timestamp: 1733324353894 -- kind: conda - name: xz - version: 5.6.3 - build: h9a6d368_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/xz-5.6.3-h9a6d368_0.conda - sha256: 25d515d97f9a147240933b7529dbe10f3ee1c87425cfa3d5faa5115f78ebfe70 - md5: 86674fa432df20be6feea4bd8fec0668 - depends: - - __osx >=11.0 - - liblzma 5.6.3 h39f12f2_0 - - liblzma-devel 5.6.3 h39f12f2_0 - - xz-gpl-tools 5.6.3 h9a6d368_0 - - xz-tools 5.6.3 h39f12f2_0 - license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later - size: 23570 - timestamp: 1733321627935 -- kind: conda - name: xz - version: 5.6.3 - build: hbcc6ac9_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/xz-5.6.3-hbcc6ac9_0.conda - sha256: 32cd43b293f1e6498831c499195afc5693c2bd604244a08fe8dd7107a20757d2 - md5: 504333561007fbf0af129f0cee4f5652 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - liblzma 5.6.3 hb9d3cd8_0 - - liblzma-devel 5.6.3 hb9d3cd8_0 - - xz-gpl-tools 5.6.3 hbcc6ac9_0 - - xz-tools 5.6.3 hb9d3cd8_0 - license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later - size: 23435 - timestamp: 1733321352996 -- kind: conda - name: xz-gpl-tools - version: 5.6.3 - build: h2dbfc1b_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-gpl-tools-5.6.3-h2dbfc1b_0.conda - sha256: d99ba29095b47891e3c63d04832768c3bfe4ad49e7bb4e163ca18962b8b3f5ca - md5: b0245c3aad4592510bb0c19212c1bded - depends: - - libgcc >=13 - - liblzma 5.6.3 h86ecc28_0 - license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later - size: 33355 - timestamp: 1733324193303 -- kind: conda - name: xz-gpl-tools - version: 5.6.3 - build: h9a6d368_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/xz-gpl-tools-5.6.3-h9a6d368_0.conda - sha256: 44a0738b66573d0e7def712ef2aa98f628b17ee4d1034ffe71c3ff36f68d12dd - md5: 9e4519aef300966683764ccbbaa89da4 - depends: - - __osx >=11.0 - - liblzma 5.6.3 h39f12f2_0 - license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later - size: 33343 - timestamp: 1733321610703 -- kind: conda - name: xz-gpl-tools - version: 5.6.3 - build: hbcc6ac9_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/xz-gpl-tools-5.6.3-hbcc6ac9_0.conda - sha256: e9829eb1207239198f03eba61d17d0f946bbaa7602f7ee019efe72ccb26525db - md5: e4f1e59ca2971e8d0fdde0928c3f7b7f - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - liblzma 5.6.3 hb9d3cd8_0 - license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later - size: 33299 - timestamp: 1733321343126 -- kind: conda - name: xz-tools - version: 5.6.3 - build: h39f12f2_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/xz-tools-5.6.3-h39f12f2_0.conda - sha256: be3c74ffe4a7a5852108dafe40ef41858ca1ea911c62b08b5e4dd8f641d23f22 - md5: 10855380caa384c8388b93ef29c7bd04 - depends: - - __osx >=11.0 - - liblzma 5.6.3 h39f12f2_0 - license: 0BSD AND LGPL-2.1-or-later - size: 81129 - timestamp: 1733321582233 -- kind: conda - name: xz-tools - version: 5.6.3 - build: h86ecc28_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-tools-5.6.3-h86ecc28_0.conda - sha256: 1d82a745cd60e674d18a0ce30ba13d72616261b1831530f480599ffc991c8476 - md5: 0136c7aa78b4d887c9fb6dbf39749778 - depends: - - libgcc >=13 - - liblzma 5.6.3 h86ecc28_0 - license: 0BSD AND LGPL-2.1-or-later - size: 95353 - timestamp: 1733324033407 -- kind: conda - name: xz-tools - version: 5.6.3 - build: hb9d3cd8_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/xz-tools-5.6.3-hb9d3cd8_0.conda - sha256: 7d03d4c0d18dbac0ebb9550890fddeb4d21a375709339a6bdedd0104bc4f4967 - md5: 40270c1e058fd1d31caee8bf2c68fc3a - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - liblzma 5.6.3 hb9d3cd8_0 - license: 0BSD AND LGPL-2.1-or-later - size: 89832 - timestamp: 1733321333192 - kind: conda name: yaml version: 0.2.5 @@ -9079,64 +8898,64 @@ packages: timestamp: 1641347626613 - kind: conda name: yarl - version: 1.18.0 + version: 1.18.3 build: py312h66e93f0_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.18.0-py312h66e93f0_0.conda - sha256: 8a1e51303ecac64f10dd0ec548d472c49954c3e2f38023ef28899191580795e1 - md5: 601d2b19a54fd9346ba18c07c2516339 + url: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.18.3-py312h66e93f0_0.conda + sha256: a0d93c3bef723e384cff8a29a82a2c6b7a73b39328088f3a2d97c901f56e9a63 + md5: 91df2efaa08730416bec2a4502309275 depends: - __glibc >=2.17,<3.0.a0 - idna >=2.0 - libgcc >=13 - multidict >=4.0 - - propcache >=0.2.0 + - propcache >=0.2.1 - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 license: Apache-2.0 license_family: Apache - size: 151247 - timestamp: 1732220988648 + size: 151393 + timestamp: 1733428897813 - kind: conda name: yarl - version: 1.18.0 + version: 1.18.3 build: py312hb2c0f52_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.18.0-py312hb2c0f52_0.conda - sha256: 2ead24d5c50a2edd6348be5888677100b12b98921d1b6fe2f4cd980b0b85ffb2 - md5: 7dbbd950a7f762c2c8ab835932b12001 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.18.3-py312hb2c0f52_0.conda + sha256: 470b5b0f3ac89acd143095281167dc2ac1a56d4fa22e1794bd8f3b00bb604540 + md5: 0b3c640697bca798d0ab428f530ed24c depends: - idna >=2.0 - libgcc >=13 - multidict >=4.0 - - propcache >=0.2.0 + - propcache >=0.2.1 - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 license: Apache-2.0 license_family: Apache - size: 149149 - timestamp: 1732221057827 + size: 150004 + timestamp: 1733429056665 - kind: conda name: yarl - version: 1.18.0 + version: 1.18.3 build: py312hea69d52_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.18.0-py312hea69d52_0.conda - sha256: 4c90de12b1569f85126a12dbbb89f3dc10cee5838335b9c9993ead8bf1594cd3 - md5: f538709098e1642d50f4a01707e7dfdb + url: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.18.3-py312hea69d52_0.conda + sha256: 69c7863809e11bc90c0d935c16e7f151dcc925add08b3894f06059263a8cb9ba + md5: f32f9b16361866a62d6e061fcd7eb400 depends: - __osx >=11.0 - idna >=2.0 - multidict >=4.0 - - propcache >=0.2.0 + - propcache >=0.2.1 - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 license: Apache-2.0 license_family: Apache - size: 141452 - timestamp: 1732221306526 + size: 141556 + timestamp: 1733429104990 - kind: conda name: zeromq version: 4.3.5 diff --git a/magic.lock b/magic.lock index 461f5937a3..1315f9a7a1 100644 --- a/magic.lock +++ b/magic.lock @@ -26,7 +26,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.1-hf42f96a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-hf42f96a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.6-h159bff8_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.449-h5558e3c_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-h5558e3c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.10.0-h113e628_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.13.0-h3cf044e_1.conda @@ -49,12 +49,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda - 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.5-pyhff2d567_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/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 - - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gflags-2.2.2-h5888daf_1005.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/glog-0.7.1-hbabe93e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda @@ -63,13 +63,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/httptools-0.6.4-py312h66e93f0_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-7.0.2-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda @@ -77,10 +77,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_h5888daf_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-he15abb1_1_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-h5888daf_1_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-h5888daf_1_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-h5c8f2c3_1_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-hcf3f2e3_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-h36004a0_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-h36004a0_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-h56a123c_3_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-25_linux64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hb9d3cd8_2.conda @@ -105,12 +105,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-hd590300_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-25_linux64_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.3-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-devel-5.6.3-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.3-hb9d3cd8_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.28-pthreads_h94d23a6_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-h6bd9018_1_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-hbdb145b_3_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.44-hadc24fc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.2-h5b01275_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_1.conda @@ -120,25 +119,25 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-hc0a3c3a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libthrift-0.21.0-h0e7cc3e_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-he137b08_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.8.0-hf23e847_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hc4654cb_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.9.0-hb9d3cd8_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.49.2-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.4.0-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.5-h064dc61_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.5-h0d44e9d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/lit-19.1.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.9.4-hcb278e6_0.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.dev2024120416-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120416-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120416-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120416-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120616-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120616-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120616-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120616-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.dev2024120416-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120616-release.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/multiprocess-0.70.15-py312h98912ed_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda @@ -160,7 +159,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-11.0.0-py312h7b63e92_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.0-py312h66e93f0_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.1-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/protobuf-5.28.2-py312h2ec8cdc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-18.1.0-py312h7900ff3_0.conda @@ -172,7 +171,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyinstrument-5.0.0-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.7-hc5c86c4_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.8-h9e4cc4f_1_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda @@ -187,25 +186,25 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda - 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_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_1.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 - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-ha2e4443_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-h8bd8927_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.1.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyh7900ff3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.20.4-py312h8360d73_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.46.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda @@ -219,11 +218,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.11-hb9d3cd8_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xxhash-0.8.2-hd590300_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-5.6.3-hbcc6ac9_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-gpl-tools-5.6.3-hbcc6ac9_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-tools-5.6.3-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.18.0-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.18.3-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312hef9b889_1.conda @@ -248,7 +244,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.1-h4c7db1d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h4c7db1d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.6-hffbb33f_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.449-h7085e57_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h7085e57_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-core-cpp-1.14.0-h1887c18_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-identity-cpp-1.10.0-h47b0b28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-blobs-cpp-12.13.0-h185ecfd_1.conda @@ -271,12 +267,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda - 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.5-pyhff2d567_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/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 - - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gflags-2.2.2-h5ad3122_1005.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/glog-0.7.1-h468a4a4_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda @@ -285,14 +281,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/httptools-0.6.4-py312hb2c0f52_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-7.0.2-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/keyutils-1.6.1-h4e544f5_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/krb5-1.21.3-h50a48e9_0.conda @@ -300,10 +296,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.0.0-h4de3ea5_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h5ad3122_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-hc7b0e1d_2_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h5ad3122_2_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h5ad3122_2_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h14ec2bd_2_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-hb63acf4_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-he2e0623_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-he2e0623_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-hc52ba39_3_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-25_linuxaarch64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlicommon-1.1.0-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlidec-1.1.0-h86ecc28_2.conda @@ -328,12 +324,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libiconv-1.17-h31becfc_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libjpeg-turbo-3.0.0-h31becfc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-25_linuxaarch64_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.3-h86ecc28_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-devel-5.6.3-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.3-h86ecc28_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnghttp2-1.64.0-hc8609a4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.28-pthreads_h9d3fd7e_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-h23a96eb_2_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-h553aec1_3_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.44-hc4a20ef_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.2-h029595c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_1.conda @@ -343,25 +338,25 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libthrift-0.21.0-h154c74f_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.0-hec21d91_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.0-hca96517_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.9.0-h86ecc28_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuv-1.49.2-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libwebp-base-1.4.0-h31becfc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcb-1.17.0-h262b8f6_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.5-hf4efe5d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.5-h2e0c361_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/lit-19.1.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.9.4-hd600fc2_0.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.dev2024120416-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120416-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120416-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120416-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120616-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120616-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120616-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120616-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.dev2024120416-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120616-release.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/multiprocess-0.70.15-py312hdd3e373_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda @@ -383,7 +378,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pillow-11.0.0-py312h5ab5af3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.2.0-py312hb2c0f52_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.2.1-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/protobuf-5.28.2-py312h6f74592_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pthread-stubs-0.4-h86ecc28_1002.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-18.1.0-py312h8025657_0.conda @@ -395,7 +390,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyinstrument-5.0.0-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.7-h5d932e8_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.8-h1683364_1_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda @@ -410,25 +405,25 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8fc344f_1.conda - 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_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_1.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 - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-h1088aeb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-hd4fb6f5_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.1.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyh7900ff3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.20.4-py312ha0d6ea1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py312h52516f5_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.46.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda @@ -442,11 +437,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxau-1.0.11-h86ecc28_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxdmcp-1.1.5-h57736b2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xxhash-0.8.2-h31becfc_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-5.6.3-h2dbfc1b_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-gpl-tools-5.6.3-h2dbfc1b_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-tools-5.6.3-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yaml-0.2.5-hf897c2e_2.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.18.0-py312hb2c0f52_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.18.3-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zeromq-4.3.5-h5efb499_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstandard-0.23.0-py312hb698573_1.conda @@ -470,7 +462,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.1-h5d7ee29_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-h5d7ee29_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.6-h8474b10_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.449-h3b64406_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-h3b64406_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.14.0-hd50102c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.10.0-hc602bab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-blobs-cpp-12.13.0-h7585a09_1.conda @@ -493,12 +485,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda - 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.5-pyhff2d567_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/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 - - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gflags-2.2.2-hf9b8971_1005.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/glog-0.7.1-heb240a5_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda @@ -507,22 +499,23 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/httptools-0.6.4-py312hea69d52_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-7.0.2-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.16-ha0e7c42_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_hf9b8971_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-h654e1bb_2_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-h605b82c_2_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-h605b82c_2_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-h9b432b6_2_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-h5affd47_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-haafc02e_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-haafc02e_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-h4c1644f_3_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-25_osxarm64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.1.0-hd74edd7_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.1.0-hd74edd7_2.conda @@ -545,11 +538,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.17-h0d3ecfb_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.0.0-hb547adb_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-25_osxarm64_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.3-h39f12f2_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-devel-5.6.3-h39f12f2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.3-h39f12f2_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.64.0-h6d7220d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.28-openmp_hf332438_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-h5168bdf_2_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-h3a603ae_3_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.44-hc14010f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.2-h8f0b736_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h2348fd5_1.conda @@ -557,24 +549,24 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.47.0-hbaaea75_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.1-h9cc3647_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libthrift-0.21.0-h64651cc_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-hfce79cd_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-ha962b0a_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.9.0-h5505292_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libuv-1.49.2-h7ab814d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.4.0-h93a5062_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxcb-1.17.0-hdb1d25a_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.5-h376fa9f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.5-h178c5d8_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/lit-19.1.5-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.4-hdb05f8b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.5-hdb05f8b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.9.4-hb7217d7_0.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.dev2024120416-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120416-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120416-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120416-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120616-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120616-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120616-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120616-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.dev2024120416-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120616-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 @@ -596,7 +588,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-11.0.0-py312haf37ca6_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.0-py312h024a12e_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.1-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/protobuf-5.28.2-py312hf02c72a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pthread-stubs-0.4-hd74edd7_1002.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-18.1.0-py312h1f38498_0.conda @@ -608,7 +600,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyinstrument-5.0.0-py312h0bf5046_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.7-h739c21a_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.8-hc22306f_1_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda @@ -623,24 +615,24 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h92ec313_1.conda - 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_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_1.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 - - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-hd02b534_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-h98b9ce2_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.1.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyh7900ff3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.20.4-py312hf3e4074_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.46.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda @@ -654,11 +646,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxau-1.0.11-hd74edd7_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxdmcp-1.1.5-hd74edd7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xxhash-0.8.2-hb547adb_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xz-5.6.3-h9a6d368_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xz-gpl-tools-5.6.3-h9a6d368_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xz-tools-5.6.3-h39f12f2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.18.0-py312hea69d52_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.18.3-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py312h15fbf35_1.conda @@ -723,6 +712,7 @@ packages: depends: - python >=3.9 license: PSF-2.0 + license_family: PSF size: 19351 timestamp: 1733332029649 - kind: conda @@ -811,6 +801,7 @@ packages: - frozenlist >=1.1.0 - python >=3.9 license: Apache-2.0 + license_family: APACHE size: 13157 timestamp: 1733332198143 - kind: conda @@ -1536,13 +1527,12 @@ packages: timestamp: 1733333955728 - kind: conda name: aws-sdk-cpp - version: 1.11.449 - build: h3b64406_4 - build_number: 4 + version: 1.11.458 + build: h3b64406_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.449-h3b64406_4.conda - sha256: 10ce9c203d31229432421a841d8d135d3e942637571aae4bb2d3c7d5242e7f05 - md5: f9e46a4bb5a04cbca08355f166ce87c8 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-h3b64406_0.conda + sha256: ded5412750f5c29bdf8ef6bc5ab26e443dc4943bd69c9098a791d8a2bf9b184e + md5: 9a8d3ba158ff8ea08e17de366c238706 depends: - __osx >=11.0 - aws-c-common >=0.10.3,<0.10.4.0a0 @@ -1555,17 +1545,16 @@ packages: - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 2722689 - timestamp: 1732812825640 + size: 2853609 + timestamp: 1733389337912 - kind: conda name: aws-sdk-cpp - version: 1.11.449 - build: h5558e3c_4 - build_number: 4 + version: 1.11.458 + build: h5558e3c_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.449-h5558e3c_4.conda - sha256: 4881f7b4f5e3c797332cffb990df246a422346b220a9c16014f274beb2a276f5 - md5: ba7abdc93b0ade11d774b47aaab84737 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-h5558e3c_0.conda + sha256: 7eab747a5a3e1a46b9c85c591c30ca2d4e90c2cebeaec95c4fe016846efdfa14 + md5: b1919becd17fe224aacf708114231fda depends: - __glibc >=2.17,<3.0.a0 - aws-c-common >=0.10.3,<0.10.4.0a0 @@ -1579,17 +1568,16 @@ packages: - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 2945541 - timestamp: 1732812288219 + size: 3059100 + timestamp: 1733388777418 - kind: conda name: aws-sdk-cpp - version: 1.11.449 - build: h7085e57_4 - build_number: 4 + version: 1.11.458 + build: h7085e57_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.449-h7085e57_4.conda - sha256: 0908a82e7c50c51d5ee0ca543dbe70cbe1963e6e8f80ffa58ea6d26e5c68251e - md5: feec198cb18a5e90aa36c97328567d63 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h7085e57_0.conda + sha256: 6d5327305721d18d650a3f8a377dc30e65600f59bd33fd4fcad106965b09b6b8 + md5: 005e0cc687a2421a4ad493e5b7058abe depends: - aws-c-common >=0.10.3,<0.10.4.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 @@ -1602,8 +1590,8 @@ packages: - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 2813856 - timestamp: 1732812337182 + size: 2903434 + timestamp: 1733388870289 - kind: conda name: azure-core-cpp version: 1.14.0 @@ -2336,13 +2324,13 @@ packages: timestamp: 1733208916977 - kind: conda name: fastapi - version: 0.115.5 - build: pyhff2d567_0 + version: 0.115.6 + build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.5-pyhff2d567_0.conda - sha256: da2833cc2ea5789abc2a6899be02ba0a769386d4913ff182bd1a9458bea40c34 - md5: cfe0f8cd904ab19c36ba50eb5179ebe0 + url: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.6-pyhd8ed1ab_0.conda + sha256: d7826d537c667093c9de96411a09585a8d620c84a830a0195e58e9a0df45f018 + md5: 1b1e0c97830cdf75f1f371bd467ab657 depends: - email_validator >=2.0.0 - fastapi-cli >=0.0.5 @@ -2356,8 +2344,8 @@ packages: - uvicorn-standard >=0.12.0 license: MIT license_family: MIT - size: 73541 - timestamp: 1731452895466 + size: 73084 + timestamp: 1733362427885 - kind: conda name: fastapi-cli version: 0.0.5 @@ -2492,18 +2480,18 @@ packages: - kind: conda name: fsspec version: 2024.10.0 - build: pyhff2d567_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhff2d567_0.conda - sha256: 40bb76981dd49d5869b48925a8975bb7bbe4e33e1e40af4ec06f6bf4a62effd7 - md5: 816dbc4679a64e4417cd1385d661bb31 + url: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhd8ed1ab_1.conda + sha256: 790a50b4f94042951518f911a914a886a837c926094c6a14ed1d9d03ce336807 + md5: 906fe13095e734cb413b57a49116cdc8 depends: - - python >=3.8 + - python >=3.9 license: BSD-3-Clause - license_family: BSD - size: 134745 - timestamp: 1729608972363 + size: 134726 + timestamp: 1733493445080 - kind: conda name: gflags version: 2.2.2 @@ -2743,12 +2731,13 @@ packages: - kind: conda name: httpx version: 0.28.0 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_0.conda - sha256: cb7895446cd93091300accea6afbc8d9811a3c5899922ccfeeff97d9b55909dc - md5: 22878824a87f1af2ad48665f9d5bfcc8 + url: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_1.conda + sha256: 0b864abaa9f1443fc42368b4d2a4f4efb9971a53f961d1fe30fabd7fbdd76b27 + md5: 8a4a83ba566c6b5c718dd0531a362d01 depends: - anyio - certifi @@ -2757,8 +2746,8 @@ packages: - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 63183 - timestamp: 1732831049776 + size: 63203 + timestamp: 1733501478172 - kind: conda name: huggingface_hub version: 0.26.3 @@ -2813,6 +2802,20 @@ packages: license_family: MIT size: 12282786 timestamp: 1720853454991 +- kind: conda + name: icu + version: '75.1' + build: hfee45f7_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda + sha256: 9ba12c93406f3df5ab0a43db8a4b4ef67a5871dfd401010fbe29b218b2cbe620 + md5: 5eb22c1d7b3fc4abb50d92d621583137 + depends: + - __osx >=11.0 + license: MIT + license_family: MIT + size: 11857802 + timestamp: 1720853997952 - kind: conda name: idna version: '3.10' @@ -2865,24 +2868,25 @@ packages: - kind: conda name: jupyter_client version: 8.6.3 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_0.conda - sha256: 4419c85e209a715f551a5c9bead746f29ee9d0fc41e772a76db3868622795671 - md5: a14218cfb29662b4a19ceb04e93e298e + url: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + sha256: 19d8bd5bb2fde910ec59e081eeb59529491995ce0d653a5209366611023a0b3a + md5: 4ebae00eae9705b0c3d6d1018a81d047 depends: - importlib-metadata >=4.8.3 - jupyter_core >=4.12,!=5.0.* - - python >=3.8 + - python >=3.9 - python-dateutil >=2.8.2 - pyzmq >=23.0 - tornado >=6.2 - traitlets >=5.3 license: BSD-3-Clause license_family: BSD - size: 106055 - timestamp: 1726610805505 + size: 106342 + timestamp: 1733441040958 - kind: conda name: jupyter_core version: 5.7.2 @@ -3168,16 +3172,16 @@ packages: - kind: conda name: libarrow version: 18.1.0 - build: h654e1bb_2_cpu - build_number: 2 + build: h5affd47_3_cpu + build_number: 3 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-h654e1bb_2_cpu.conda - sha256: 925dcb034f36536eed21d9323f096bf2ebf1111d14c61e1ae0b90e5de131f1e1 - md5: e69934ff9dd8745fea8927028d1603ee + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-h5affd47_3_cpu.conda + sha256: 9dac7f7b96972a3c18549d8669269233ae9e7b25da56161bd85a86b98ca61f76 + md5: 3dc73b42851e6096542458eaf2c074ca depends: - __osx >=11.0 - aws-crt-cpp >=0.29.6,<0.29.7.0a0 - - aws-sdk-cpp >=1.11.449,<1.11.450.0a0 + - aws-sdk-cpp >=1.11.458,<1.11.459.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-identity-cpp >=1.10.0,<1.10.1.0a0 - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 @@ -3201,24 +3205,23 @@ packages: - zstd >=1.5.6,<1.6.0a0 constrains: - arrow-cpp <0.0a0 - - parquet-cpp <0.0a0 - apache-arrow-proc =*=cpu + - parquet-cpp <0.0a0 license: Apache-2.0 - license_family: APACHE - size: 5475725 - timestamp: 1732947802614 + size: 5487846 + timestamp: 1733450423101 - kind: conda name: libarrow version: 18.1.0 - build: hc7b0e1d_2_cpu - build_number: 2 + build: hb63acf4_3_cpu + build_number: 3 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-hc7b0e1d_2_cpu.conda - sha256: 3201944d1f97b9207e566ccf388c8376bb2ce7e461534cda63a28975b6790901 - md5: 4a46bd0be8e7f56a217d26b79d290a0e + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-hb63acf4_3_cpu.conda + sha256: e972904b472008f902df9e584f59ff7716fc22efc1124d1dfc41c931852acc75 + md5: d98a11c3ba32554873aeb6a071baceaa depends: - aws-crt-cpp >=0.29.6,<0.29.7.0a0 - - aws-sdk-cpp >=1.11.449,<1.11.450.0a0 + - aws-sdk-cpp >=1.11.458,<1.11.459.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-identity-cpp >=1.10.0,<1.10.1.0a0 - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 @@ -3243,26 +3246,25 @@ packages: - snappy >=1.2.1,<1.3.0a0 - zstd >=1.5.6,<1.6.0a0 constrains: + - parquet-cpp <0.0a0 - apache-arrow-proc =*=cpu - arrow-cpp <0.0a0 - - parquet-cpp <0.0a0 license: Apache-2.0 - license_family: APACHE - size: 8026783 - timestamp: 1732950110265 + size: 8048003 + timestamp: 1733452700958 - kind: conda name: libarrow version: 18.1.0 - build: he15abb1_1_cpu - build_number: 1 + build: hcf3f2e3_3_cpu + build_number: 3 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-he15abb1_1_cpu.conda - sha256: afc81af2e533cc35295aebae4fb382e770310d9b1ac31837456b440d35c54cf7 - md5: bd3e35a6f3f869b4777488452f315008 + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-hcf3f2e3_3_cpu.conda + sha256: a82f66f0a37ed3132e6b9faff9285d7ccbe950ccfe84edd6378fdee70ef2743e + md5: 196823c7752608cb6b5d5a7a33b17410 depends: - __glibc >=2.17,<3.0.a0 - aws-crt-cpp >=0.29.6,<0.29.7.0a0 - - aws-sdk-cpp >=1.11.449,<1.11.450.0a0 + - aws-sdk-cpp >=1.11.458,<1.11.459.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-identity-cpp >=1.10.0,<1.10.1.0a0 - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 @@ -3279,7 +3281,7 @@ packages: - libgoogle-cloud-storage >=2.31.0,<2.32.0a0 - libre2-11 >=2024.7.2 - libstdcxx >=13 - - libutf8proc >=2.8.0,<2.9.0a0 + - libutf8proc >=2.9.0,<2.10.0a0 - libzlib >=1.3.1,<2.0a0 - lz4-c >=1.9.3,<1.10.0a0 - orc >=2.0.3,<2.0.4.0a0 @@ -3287,190 +3289,180 @@ packages: - snappy >=1.2.1,<1.3.0a0 - zstd >=1.5.6,<1.6.0a0 constrains: + - apache-arrow-proc =*=cpu - parquet-cpp <0.0a0 - arrow-cpp <0.0a0 - - apache-arrow-proc =*=cpu license: Apache-2.0 - license_family: APACHE - size: 8780597 - timestamp: 1732863546099 + size: 8796519 + timestamp: 1733453489520 - kind: conda name: libarrow-acero version: 18.1.0 - build: h5888daf_1_cpu - build_number: 1 + build: h36004a0_3_cpu + build_number: 3 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-h5888daf_1_cpu.conda - sha256: 3de5719a7035baad7e665116dce7bb3d069f0c1916e163c553e2e491bbe8b614 - md5: 6197dcb930f6254e9b2fdc416be56b71 + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-h36004a0_3_cpu.conda + sha256: 0733a303b2dd5998489099d6c258ee442d3f8243379d339f57700554d696fe41 + md5: 6d8f74ac97166e09cdf02109ed9905ce depends: - __glibc >=2.17,<3.0.a0 - - libarrow 18.1.0 he15abb1_1_cpu + - libarrow 18.1.0 hcf3f2e3_3_cpu - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 - license_family: APACHE - size: 611272 - timestamp: 1732863586114 -- kind: conda - name: libarrow-acero - version: 18.1.0 - build: h5ad3122_2_cpu - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h5ad3122_2_cpu.conda - sha256: e6c8988d1d79163d6d13dda21f9e401f5df4b3af7e0d221718522c600894adcf - md5: 14fede66c995f3cf958797e9fb567e22 - depends: - - libarrow 18.1.0 hc7b0e1d_2_cpu - - libgcc >=13 - - libstdcxx >=13 - license: Apache-2.0 - license_family: APACHE - size: 577510 - timestamp: 1732950190684 + size: 612773 + timestamp: 1733453636002 - kind: conda name: libarrow-acero version: 18.1.0 - build: h605b82c_2_cpu - build_number: 2 + build: haafc02e_3_cpu + build_number: 3 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-h605b82c_2_cpu.conda - sha256: cfe32f1b0712b77d2c792a839fe4ea2790cabd99d47cd8e1b20ba2d3c8b113b2 - md5: 60351279d7dfd7c254c46aabf9aa35a6 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-haafc02e_3_cpu.conda + sha256: 214df0ac0f44dd792193d11c84dbf79a42ed0f663c7b1a06aa5ab755b93c1948 + md5: f3a050129b5012bd5fc381693f6eb2cd depends: - __osx >=11.0 - - libarrow 18.1.0 h654e1bb_2_cpu + - libarrow 18.1.0 h5affd47_3_cpu - libcxx >=18 license: Apache-2.0 - license_family: APACHE - size: 483362 - timestamp: 1732948000606 + size: 483753 + timestamp: 1733450627207 - kind: conda - name: libarrow-dataset + name: libarrow-acero version: 18.1.0 - build: h5888daf_1_cpu - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-h5888daf_1_cpu.conda - sha256: 7b3db3d5a7e411f8897e8d74403c1d871f3054300f5009c4bdf75da011bc3f42 - md5: 77501831a2aabbaabac55e8cb3b6900a + build: he2e0623_3_cpu + build_number: 3 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-he2e0623_3_cpu.conda + sha256: 1560efabce824155dd841219c299c71352594b5e237dce0879c2d8f50c16047a + md5: fa54002b982019ecc0e93cb4b2c493e9 depends: - - __glibc >=2.17,<3.0.a0 - - libarrow 18.1.0 he15abb1_1_cpu - - libarrow-acero 18.1.0 h5888daf_1_cpu + - libarrow 18.1.0 hb63acf4_3_cpu - libgcc >=13 - - libparquet 18.1.0 h6bd9018_1_cpu - libstdcxx >=13 license: Apache-2.0 - license_family: APACHE - size: 585458 - timestamp: 1732863686753 + size: 578323 + timestamp: 1733452783322 - kind: conda name: libarrow-dataset version: 18.1.0 - build: h5ad3122_2_cpu - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h5ad3122_2_cpu.conda - sha256: 53cdae2150c22ef9b5d6de8d0ee8ac52eeacc50fdfa2fa3ea644b52436d1eeb1 - md5: c54d83f012a40fef8a2dc4856e4340a0 + build: h36004a0_3_cpu + build_number: 3 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-h36004a0_3_cpu.conda + sha256: d5a0b4a2129a540548b0232df23e6940fe73d54e5ace5a31f5419d96a059f317 + md5: e9eac639d83b1c35f7743845b922d61a depends: - - libarrow 18.1.0 hc7b0e1d_2_cpu - - libarrow-acero 18.1.0 h5ad3122_2_cpu + - __glibc >=2.17,<3.0.a0 + - libarrow 18.1.0 hcf3f2e3_3_cpu + - libarrow-acero 18.1.0 h36004a0_3_cpu - libgcc >=13 - - libparquet 18.1.0 h23a96eb_2_cpu + - libparquet 18.1.0 hbdb145b_3_cpu - libstdcxx >=13 license: Apache-2.0 - license_family: APACHE - size: 559143 - timestamp: 1732950272727 + size: 585416 + timestamp: 1733454137952 - kind: conda name: libarrow-dataset version: 18.1.0 - build: h605b82c_2_cpu - build_number: 2 + build: haafc02e_3_cpu + build_number: 3 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-h605b82c_2_cpu.conda - sha256: eeae9e8d382c482076f4739455b53f16851d7f99be219b6f96dd4e765132b446 - md5: b5fcaddabf47aa15e50feff072a55ada + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-haafc02e_3_cpu.conda + sha256: 7b105d363d5f71db88454b304e44166c17b2970ddb0297b482f3d8b39fb39308 + md5: 8c57e5a50f865a16cafd92f5a32c9faa depends: - __osx >=11.0 - - libarrow 18.1.0 h654e1bb_2_cpu - - libarrow-acero 18.1.0 h605b82c_2_cpu + - libarrow 18.1.0 h5affd47_3_cpu + - libarrow-acero 18.1.0 haafc02e_3_cpu - libcxx >=18 - - libparquet 18.1.0 h5168bdf_2_cpu + - libparquet 18.1.0 h3a603ae_3_cpu license: Apache-2.0 - license_family: APACHE - size: 489769 - timestamp: 1732949732423 + size: 489900 + timestamp: 1733452479126 - kind: conda - name: libarrow-substrait + name: libarrow-dataset version: 18.1.0 - build: h14ec2bd_2_cpu - build_number: 2 + build: he2e0623_3_cpu + build_number: 3 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h14ec2bd_2_cpu.conda - sha256: e8923d62cfaadc4a8af1735e717fd4980cad693419e63aed04380566d9fd46df - md5: 4fd0103449cf40214fd348643aa78fff + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-he2e0623_3_cpu.conda + sha256: b26a03f529a4b87dcf523b012f9ccdac124b65f41801da7eb489192916e447ff + md5: 048f04da68a40e9e5e1e66ff9502b237 + depends: + - libarrow 18.1.0 hb63acf4_3_cpu + - libarrow-acero 18.1.0 he2e0623_3_cpu + - libgcc >=13 + - libparquet 18.1.0 h553aec1_3_cpu + - libstdcxx >=13 + license: Apache-2.0 + size: 559844 + timestamp: 1733453065157 +- kind: conda + name: libarrow-substrait + version: 18.1.0 + build: h4c1644f_3_cpu + build_number: 3 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-h4c1644f_3_cpu.conda + sha256: 562c344d57b718aa838ccc01acae240d9ab33dd2da7db40dbe75d1db6b441e71 + md5: 7ba2783c26a0008307e2a1e637c2930f depends: + - __osx >=11.0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.1.0 hc7b0e1d_2_cpu - - libarrow-acero 18.1.0 h5ad3122_2_cpu - - libarrow-dataset 18.1.0 h5ad3122_2_cpu - - libgcc >=13 + - libarrow 18.1.0 h5affd47_3_cpu + - libarrow-acero 18.1.0 haafc02e_3_cpu + - libarrow-dataset 18.1.0 haafc02e_3_cpu + - libcxx >=18 - libprotobuf >=5.28.2,<5.28.3.0a0 - - libstdcxx >=13 license: Apache-2.0 - license_family: APACHE - size: 515352 - timestamp: 1732950311471 + size: 451428 + timestamp: 1733453012619 - kind: conda name: libarrow-substrait version: 18.1.0 - build: h5c8f2c3_1_cpu - build_number: 1 + build: h56a123c_3_cpu + build_number: 3 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-h5c8f2c3_1_cpu.conda - sha256: e77a354bfc0ba7b04c856f1bb16e7b08950bcde54026087bafec46090380fcc1 - md5: 5d47bd2674afd104dbe2f2f3534594b0 + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-h56a123c_3_cpu.conda + sha256: 139104d80048382c48718a65721b24fa4d69abd6c2052ee1ab20f32b7d48228d + md5: 306bb541b83a83b66d5c1e6880302886 depends: - __glibc >=2.17,<3.0.a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.1.0 he15abb1_1_cpu - - libarrow-acero 18.1.0 h5888daf_1_cpu - - libarrow-dataset 18.1.0 h5888daf_1_cpu + - libarrow 18.1.0 hcf3f2e3_3_cpu + - libarrow-acero 18.1.0 h36004a0_3_cpu + - libarrow-dataset 18.1.0 h36004a0_3_cpu - libgcc >=13 - libprotobuf >=5.28.2,<5.28.3.0a0 - libstdcxx >=13 license: Apache-2.0 - license_family: APACHE - size: 520681 - timestamp: 1732863726954 + size: 520740 + timestamp: 1733454379083 - kind: conda name: libarrow-substrait version: 18.1.0 - build: h9b432b6_2_cpu - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-h9b432b6_2_cpu.conda - sha256: 6dde802134bd2e78581eb838c049b2e7e378899706b471f7072222a6b1284b90 - md5: 49e7c0460532a73f34bd127fff009224 + build: hc52ba39_3_cpu + build_number: 3 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-hc52ba39_3_cpu.conda + sha256: 66f2c06ad10d8886e53661420c5b73de217a088ee4693186deec7df292f9c766 + md5: 7a8e305f1689687ed063bb4553c1a7a5 depends: - - __osx >=11.0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.1.0 h654e1bb_2_cpu - - libarrow-acero 18.1.0 h605b82c_2_cpu - - libarrow-dataset 18.1.0 h605b82c_2_cpu - - libcxx >=18 + - libarrow 18.1.0 hb63acf4_3_cpu + - libarrow-acero 18.1.0 he2e0623_3_cpu + - libarrow-dataset 18.1.0 he2e0623_3_cpu + - libgcc >=13 - libprotobuf >=5.28.2,<5.28.3.0a0 + - libstdcxx >=13 license: Apache-2.0 - license_family: APACHE - size: 451127 - timestamp: 1732950194322 + size: 515638 + timestamp: 1733453200561 - kind: conda name: libblas version: 3.9.0 @@ -4677,86 +4669,46 @@ packages: - kind: conda name: liblzma version: 5.6.3 - build: h39f12f2_0 + build: h39f12f2_1 + build_number: 1 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.3-h39f12f2_0.conda - sha256: de00d627e41636591d05407c666de957a9ddd3c0f633340c016725695569b049 - md5: faa0ab222b9d12a52a8ebc655c9236f3 + url: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.3-h39f12f2_1.conda + sha256: d863b8257406918ffdc50ae65502f2b2d6cede29404d09a094f59509d6a0aaf1 + md5: b2553114a7f5e20ccd02378a77d836aa depends: - __osx >=11.0 license: 0BSD - size: 98836 - timestamp: 1733321533638 + size: 99129 + timestamp: 1733407496073 - kind: conda name: liblzma version: 5.6.3 - build: h86ecc28_0 + build: h86ecc28_1 + build_number: 1 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.3-h86ecc28_0.conda - sha256: 004785e427d255da8cf713b4722f8330bf496ce6fc665a0b21d007d377ffee5f - md5: 83d366f7bf01fc2d7781b4cc113fc9d3 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.3-h86ecc28_1.conda + sha256: d1cce0b7d62d1e54e2164d3e0667ee808efc6c3870256e5b47a150cd0bf46824 + md5: eb08b903681f9f2432c320e8ed626723 depends: - libgcc >=13 license: 0BSD - size: 124115 - timestamp: 1733323693681 + size: 124138 + timestamp: 1733409137214 - kind: conda name: liblzma version: 5.6.3 - build: hb9d3cd8_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.3-hb9d3cd8_0.conda - sha256: 31637db828ec67ab8697de324e6074af5a36cbeddc37202d8d31e2fb397619e8 - md5: 137c535dddd880f844f33ed91b8abdba - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - license: 0BSD - size: 111223 - timestamp: 1733321312512 -- kind: conda - name: liblzma-devel - version: 5.6.3 - build: h39f12f2_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-devel-5.6.3-h39f12f2_0.conda - sha256: 2e5a9fb298bd8c01ceed8db386bfb0a125d74cef2c5ee615b4f9695b2808f7e0 - md5: 89955d2470cbacea3d5e069d67c94f44 - depends: - - __osx >=11.0 - - liblzma 5.6.3 h39f12f2_0 - license: 0BSD - size: 112941 - timestamp: 1733321552604 -- kind: conda - name: liblzma-devel - version: 5.6.3 - build: h86ecc28_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-devel-5.6.3-h86ecc28_0.conda - sha256: 740b3f1ffa57ad5f0eec0c868e23d4e1f811871c6685a04af57f1943cde1a575 - md5: 27995ae8bc93eeb949315655daa19d3c - depends: - - libgcc >=13 - - liblzma 5.6.3 h86ecc28_0 - license: 0BSD - size: 376767 - timestamp: 1733323860026 -- kind: conda - name: liblzma-devel - version: 5.6.3 - build: hb9d3cd8_0 + build: hb9d3cd8_1 + build_number: 1 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/liblzma-devel-5.6.3-hb9d3cd8_0.conda - sha256: 98020d4b4cc6c728d2e6dc1174cb2548cf03ce5098cd17c37b32f06e896a943a - md5: 7069f4de645461447f1ab7736c94db26 + url: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.3-hb9d3cd8_1.conda + sha256: e6e425252f3839e2756e4af1ea2074dffd3396c161bf460629f9dfd6a65f15c6 + md5: 2ecf2f1c7e4e21fcfe6423a51a992d84 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - - liblzma 5.6.3 hb9d3cd8_0 license: 0BSD - size: 375452 - timestamp: 1733321322415 + size: 111132 + timestamp: 1733407410083 - kind: conda name: libnghttp2 version: 1.64.0 @@ -4908,61 +4860,58 @@ packages: - kind: conda name: libparquet version: 18.1.0 - build: h23a96eb_2_cpu - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-h23a96eb_2_cpu.conda - sha256: 83b8fa4a90e214fcd6018f890947666f055f79563fff2b7c3d5f37d894f3a000 - md5: ce205782960a580fa43cfcccca22ad8d + build: h3a603ae_3_cpu + build_number: 3 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-h3a603ae_3_cpu.conda + sha256: 89f40f0f4e706392b082ee4910fedd2442b57abbf6cbbfb16a00b5aa89beb41d + md5: 78d2f729e26788a3660cee9906f440e7 depends: - - libarrow 18.1.0 hc7b0e1d_2_cpu - - libgcc >=13 - - libstdcxx >=13 + - __osx >=11.0 + - libarrow 18.1.0 h5affd47_3_cpu + - libcxx >=18 - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 - license_family: APACHE - size: 1115906 - timestamp: 1732950250848 + size: 873697 + timestamp: 1733452286970 - kind: conda name: libparquet version: 18.1.0 - build: h5168bdf_2_cpu - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-h5168bdf_2_cpu.conda - sha256: 454487d113974b923b4214a65aab780fd90c4914390d0b1f4640b1bf60537bff - md5: f995df7ee206617a3e858fd932d7bd2d + build: h553aec1_3_cpu + build_number: 3 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-h553aec1_3_cpu.conda + sha256: 965940abe9e49ae7b3adee19bf458f866a0ef35a3cf29d627b2d52c77a96a96b + md5: 46c6783e8b46449a9baabef57c69f30a depends: - - __osx >=11.0 - - libarrow 18.1.0 h654e1bb_2_cpu - - libcxx >=18 + - libarrow 18.1.0 hb63acf4_3_cpu + - libgcc >=13 + - libstdcxx >=13 - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 - license_family: APACHE - size: 872333 - timestamp: 1732949558028 + size: 1116941 + timestamp: 1733452997475 - kind: conda name: libparquet version: 18.1.0 - build: h6bd9018_1_cpu - build_number: 1 + build: hbdb145b_3_cpu + build_number: 3 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-h6bd9018_1_cpu.conda - sha256: 0df119f4c1a2387d910e132c670b29ee5b29dd79384549de6f1a43067515c8ba - md5: 1054909202f86e38bbbb7ca1131b8471 + url: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-hbdb145b_3_cpu.conda + sha256: 034086f71824a3ea77a9bd21029fd4c4ef25b3a95fc77933704b8b49ff55c7f3 + md5: cb249762e1e65941b559d436c60e520d depends: - __glibc >=2.17,<3.0.a0 - - libarrow 18.1.0 he15abb1_1_cpu + - libarrow 18.1.0 hcf3f2e3_3_cpu - libgcc >=13 - libstdcxx >=13 - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 - license_family: APACHE - size: 1203523 - timestamp: 1732863665743 + size: 1204740 + timestamp: 1733454014411 - kind: conda name: libpng version: 1.6.44 @@ -5373,86 +5322,70 @@ packages: - kind: conda name: libtiff version: 4.7.0 - build: he137b08_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-he137b08_1.conda - sha256: 9890121db85f6ef463fe12eb04ef1471176e3ef3b5e2d62e8d6dac713df00df4 - md5: 63872517c98aa305da58a757c443698e + build: ha962b0a_2 + build_number: 2 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-ha962b0a_2.conda + sha256: d9e6835fd189b85eb90dbfdcc51f5375decbf5bb53130042f49bbd6bfb0b24be + md5: 8e14b5225c593f099a21971568e6d7b4 depends: - - __glibc >=2.17,<3.0.a0 + - __osx >=11.0 - lerc >=4.0.0,<5.0a0 + - libcxx >=18 - libdeflate >=1.22,<1.23.0a0 - - libgcc >=13 - libjpeg-turbo >=3.0.0,<4.0a0 - - libstdcxx >=13 + - liblzma >=5.6.3,<6.0a0 - libwebp-base >=1.4.0,<2.0a0 - libzlib >=1.3.1,<2.0a0 - - xz >=5.2.6,<6.0a0 - zstd >=1.5.6,<1.6.0a0 license: HPND - size: 428156 - timestamp: 1728232228989 + size: 370387 + timestamp: 1733443310502 - kind: conda name: libtiff version: 4.7.0 - build: hec21d91_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.0-hec21d91_1.conda - sha256: 14ecb9e129b1b5ffd6d4bee48de95cd2cd0973c712e1b965d3ef977cca23936d - md5: 1f80061f5ba6956fcdc381f34618cd8d + build: hc4654cb_2 + build_number: 2 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hc4654cb_2.conda + sha256: 18653b4a5c73e19c5e86ff72dab9bf59f5cc43d7f404a6be705d152dfd5e0660 + md5: be54fb40ea32e8fe9dbaa94d4528b57e depends: + - __glibc >=2.17,<3.0.a0 - lerc >=4.0.0,<5.0a0 - libdeflate >=1.22,<1.23.0a0 - libgcc >=13 - libjpeg-turbo >=3.0.0,<4.0a0 + - liblzma >=5.6.3,<6.0a0 - libstdcxx >=13 - libwebp-base >=1.4.0,<2.0a0 - libzlib >=1.3.1,<2.0a0 - - xz >=5.2.6,<6.0a0 - zstd >=1.5.6,<1.6.0a0 license: HPND - size: 464938 - timestamp: 1728232266969 + size: 429018 + timestamp: 1733443013288 - kind: conda name: libtiff version: 4.7.0 - build: hfce79cd_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-hfce79cd_1.conda - sha256: 97ba24c74750b6e731b3fe0d2a751cda6148b4937d2cc3f72d43bf7b3885c39d - md5: b9abf45f7c64caf3303725f1aa0e9a4d + build: hca96517_2 + build_number: 2 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.0-hca96517_2.conda + sha256: d736d840d1f2446234195adfcb51b132c85797730b6f42ebf058d350fa9d20e8 + md5: 278dcef6d1ea28c04109c3f5dea126cb depends: - - __osx >=11.0 - lerc >=4.0.0,<5.0a0 - - libcxx >=17 - libdeflate >=1.22,<1.23.0a0 + - libgcc >=13 - libjpeg-turbo >=3.0.0,<4.0a0 + - liblzma >=5.6.3,<6.0a0 + - libstdcxx >=13 - libwebp-base >=1.4.0,<2.0a0 - libzlib >=1.3.1,<2.0a0 - - xz >=5.2.6,<6.0a0 - zstd >=1.5.6,<1.6.0a0 license: HPND - size: 366323 - timestamp: 1728232400072 -- kind: conda - name: libutf8proc - version: 2.8.0 - build: hf23e847_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.8.0-hf23e847_1.conda - sha256: 104cf5b427fc914fec63e55f685a39480abeb4beb34bdbc77dea084c8f5a55cb - md5: b1aa0faa95017bca11369bd080487ec4 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - license: MIT - license_family: MIT - size: 80852 - timestamp: 1732829699583 + size: 464857 + timestamp: 1733443105529 - kind: conda name: libutf8proc version: 2.9.0 @@ -5483,6 +5416,22 @@ packages: license_family: MIT size: 81526 timestamp: 1732868466862 +- kind: conda + name: libutf8proc + version: 2.9.0 + build: hb9d3cd8_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.9.0-hb9d3cd8_1.conda + sha256: 9794e6388e780c3310d46f773bbc924d4053375c3fcdb07a704b57f4616db928 + md5: 1e936bd23d737aac62a18e9a1e7f8b18 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + license: MIT + license_family: MIT + size: 81500 + timestamp: 1732868419835 - kind: conda name: libuuid version: 2.38.1 @@ -5683,60 +5632,62 @@ packages: - kind: conda name: libxml2 version: 2.13.5 - build: h064dc61_0 + build: h0d44e9d_1 + build_number: 1 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.5-h064dc61_0.conda - sha256: 7ab7fb45a0014981d35247cd5b09057fc8ed3c07378086a6c7ad552915928647 - md5: fb16b85a5be1328ac1c44b098b74c570 + url: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.5-h0d44e9d_1.conda + sha256: 306e18aa647d8208ad2cd0e62d84933222b2fbe93d2d53cd5283d2256b1d54de + md5: f5b05674697ae7d2c5932766695945e1 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - libiconv >=1.17,<2.0a0 + - liblzma >=5.6.3,<6.0a0 - libzlib >=1.3.1,<2.0a0 - - xz >=5.2.6,<6.0a0 constrains: - icu <0.0a0 license: MIT license_family: MIT - size: 689363 - timestamp: 1731489619071 + size: 689993 + timestamp: 1733443678322 - kind: conda name: libxml2 version: 2.13.5 - build: h376fa9f_0 + build: h178c5d8_1 + build_number: 1 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.5-h376fa9f_0.conda - sha256: d443703d324f3dbd628d58ea498ab0e474c06d5771e7f55baf215fdbc11ceb87 - md5: adea92805465ed3dcf0776b428e34744 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.5-h178c5d8_1.conda + sha256: d7af3f25a4cece170502acd38f2dafbea4521f373f46dcb28a37fbe6ac2da544 + md5: 3dc3cff0eca1640a6acbbfab2f78139e depends: - __osx >=11.0 + - icu >=75.1,<76.0a0 - libiconv >=1.17,<2.0a0 + - liblzma >=5.6.3,<6.0a0 - libzlib >=1.3.1,<2.0a0 - - xz >=5.2.6,<6.0a0 - constrains: - - icu <0.0a0 license: MIT license_family: MIT - size: 582076 - timestamp: 1731489850179 + size: 582898 + timestamp: 1733443841584 - kind: conda name: libxml2 version: 2.13.5 - build: hf4efe5d_0 + build: h2e0c361_1 + build_number: 1 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.5-hf4efe5d_0.conda - sha256: bb5033bd79371e82886f9e83ef86babae8e0f50b77d7f9302210345b9205d939 - md5: 5650ac8a6ed680c032bdabe40ad19ee0 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.5-h2e0c361_1.conda + sha256: dc0e86d35a836af6e99d18f50c6551fc64c53ed3a3da5a9fea90e78763cf14b4 + md5: 63410f85031930cde371dfe0ee89109a depends: - icu >=75.1,<76.0a0 - libgcc >=13 - libiconv >=1.17,<2.0a0 + - liblzma >=5.6.3,<6.0a0 - libzlib >=1.3.1,<2.0a0 - - xz >=5.2.6,<6.0a0 license: MIT license_family: MIT - size: 734453 - timestamp: 1731489860751 + size: 732155 + timestamp: 1733443825814 - kind: conda name: libzlib version: 1.3.1 @@ -5806,20 +5757,20 @@ packages: timestamp: 1733310809397 - kind: conda name: llvm-openmp - version: 19.1.4 + version: 19.1.5 build: hdb05f8b_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.4-hdb05f8b_0.conda - sha256: dfdcd8de37899d984326f9734b28f46f80b88c068e44c562933a8b3117f2401a - md5: 76ca179ec970bea6e275e2fa477c2d3c + url: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.5-hdb05f8b_0.conda + sha256: e7ba0d8b718925efdcf1309f5e776e3264cc172d3af8d4048b39627c50a1abc0 + md5: f2c2e187a1d2637d282e34dc92021a70 depends: - __osx >=11.0 constrains: - - openmp 19.1.4|19.1.4.* + - openmp 19.1.5|19.1.5.* license: Apache-2.0 WITH LLVM-exception license_family: APACHE - size: 281554 - timestamp: 1732102484807 + size: 281120 + timestamp: 1733376089600 - kind: conda name: lz4-c version: 1.9.4 @@ -5942,76 +5893,76 @@ packages: timestamp: 1733219945697 - kind: conda name: max - version: 24.6.0.dev2024120416 + version: 24.6.0.dev2024120616 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120416-release.conda - sha256: 956c006755158839ee6f8de7d91360cd1990024868d867482a62885241c9794f - md5: 09947b7aa3a3c35b413b7c0d118126e3 - depends: - - max-core ==24.6.0.dev2024120416 release - - max-python >=24.6.0.dev2024120416,<25.0a0 - - mojo-jupyter ==24.6.0.dev2024120416 release - - mblack ==24.6.0.dev2024120416 release + url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120616-release.conda + sha256: 2338e4ad8e940eee4cf31d6ccfb9605bc3aaa0e2331e3c0f40c1063a0d6f4c58 + md5: 562c33b920321a676acb3fc49c2ddb11 + depends: + - max-core ==24.6.0.dev2024120616 release + - max-python >=24.6.0.dev2024120616,<25.0a0 + - mojo-jupyter ==24.6.0.dev2024120616 release + - mblack ==24.6.0.dev2024120616 release license: LicenseRef-Modular-Proprietary - size: 9925 - timestamp: 1733332193356 + size: 9919 + timestamp: 1733502206770 - kind: conda name: max-core - version: 24.6.0.dev2024120416 + version: 24.6.0.dev2024120616 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120416-release.conda - sha256: e73a6e3abebc4516d56d39b85d10e98883885218273b2ef19c7cfe4d3df7a4ef - md5: 43a976936171480fe7dbc2fed1224312 + url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120616-release.conda + sha256: 626f40a00b28c6958272a368b31944d9d62bd57a931910b1e4520d7501c57b61 + md5: 88e589273bf2ae77f80f879adacd234a depends: - - mblack ==24.6.0.dev2024120416 release + - mblack ==24.6.0.dev2024120616 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 245904359 - timestamp: 1733332193354 + size: 247418489 + timestamp: 1733502146971 - kind: conda name: max-core - version: 24.6.0.dev2024120416 + version: 24.6.0.dev2024120616 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120416-release.conda - sha256: e32ebc6b7f589881f14caec8df02b65c40839a0210ef6a87d85243b61b5fc7d8 - md5: 15cac805514c6a381a9a50ee3a86de25 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120616-release.conda + sha256: af5fcd915dd10f9a72d936fee1b4a32127725a072fb6df41b7a3f43997f3ac3b + md5: 5243c455575512a6061067e3b5d67e0f depends: - - mblack ==24.6.0.dev2024120416 release + - mblack ==24.6.0.dev2024120616 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 249618446 - timestamp: 1733332472125 + size: 251333959 + timestamp: 1733502206769 - kind: conda name: max-core - version: 24.6.0.dev2024120416 + version: 24.6.0.dev2024120616 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120416-release.conda - sha256: bc27468be85cc7fd207ec44a4a0b1b11aa54792737a20fcf8355a2f2e7a215d5 - md5: c27c6f67be3abffbf559bfd50852b493 + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120616-release.conda + sha256: 9f051d29fdebf2c33eaa96659e75b06bf2befb17ac6992dc526b71eb4b959fc2 + md5: 99f131bbf681d02fe75d5f9e7dc0ab57 depends: - - mblack ==24.6.0.dev2024120416 release + - mblack ==24.6.0.dev2024120616 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 210212276 - timestamp: 1733332258535 + size: 211890615 + timestamp: 1733502249826 - kind: conda name: max-python - version: 24.6.0.dev2024120416 + version: 24.6.0.dev2024120616 build: 3.12release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120416-3.12release.conda - sha256: 48e30a62cdee247e87b9f07d465ae91c75d47f292eeba5d2ca9c2d86d30e8875 - md5: 78af7733b4858c1bd882279a45e98795 + url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120616-3.12release.conda + sha256: 619cfdba895fe1062b94e9e04109d5c321995c14ce80dd695937fedaeed1430b + md5: aa4c20f7f7f821d9b736c319b9b9d89a depends: - - max-core ==24.6.0.dev2024120416 release + - max-core ==24.6.0.dev2024120616 release - python 3.12.* - pillow - fastapi @@ -6033,18 +5984,18 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 122878721 - timestamp: 1733332193368 + size: 123619079 + timestamp: 1733502146987 - kind: conda name: max-python - version: 24.6.0.dev2024120416 + version: 24.6.0.dev2024120616 build: 3.12release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120416-3.12release.conda - sha256: ffff206620d5bd2cd90830467d4234e3a606143811006e67203899a9b8512938 - md5: 55ff43da6401cdd96073ae044b428afd + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120616-3.12release.conda + sha256: 1703b8f5e847917b04cc353ea6ce6fdfb4f0e5b053515b0e481b0bed93117a4f + md5: df25189682c30a5259b1ffada686cef2 depends: - - max-core ==24.6.0.dev2024120416 release + - max-core ==24.6.0.dev2024120616 release - python 3.12.* - pillow - fastapi @@ -6066,18 +6017,18 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 126526187 - timestamp: 1733332472138 + size: 127361426 + timestamp: 1733502206780 - kind: conda name: max-python - version: 24.6.0.dev2024120416 + version: 24.6.0.dev2024120616 build: 3.12release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120416-3.12release.conda - sha256: e5aaaba32cd939f3c6ba27b916851174eec6c3913a8e5ebd00b5590f026a2e16 - md5: b84b205dbce4660cdea5b0e3cda227e9 + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120616-3.12release.conda + sha256: 55e016fd1747baa8f15e358d8fe16953282a08b60c64ad6a98cbfdf0229f9d1b + md5: f03ead2bca51c2cd060703fe64ee40da depends: - - max-core ==24.6.0.dev2024120416 release + - max-core ==24.6.0.dev2024120616 release - python 3.12.* - pillow - fastapi @@ -6099,17 +6050,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 111629688 - timestamp: 1733332258538 + size: 112339857 + timestamp: 1733502249829 - kind: conda name: mblack - version: 24.6.0.dev2024120416 + version: 24.6.0.dev2024120616 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120416-release.conda - sha256: 374f5d8dfed89bf7098a0f7d8c6fd40c9dab11c4d760a03e05835e82f1b00cb9 - md5: 85c700946ce4a5ce8d11f5ee66b477cf + url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120616-release.conda + sha256: ccab714a4e70220ff559e9d0e56232964981196851bf77eeac1c3bf53ab0beb2 + md5: dec7dbfe11abd34b171d290d38adea24 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -6119,8 +6070,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130641 - timestamp: 1733332193362 + size: 130704 + timestamp: 1733502206776 - kind: conda name: mdurl version: 0.1.2 @@ -6139,21 +6090,21 @@ packages: timestamp: 1733255681319 - kind: conda name: mojo-jupyter - version: 24.6.0.dev2024120416 + version: 24.6.0.dev2024120616 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120416-release.conda - sha256: 181250d3bbe6523e4ac02e40004b6e77c04cfee2d9512dbeb584f51351df9448 - md5: 411a1d159867c56043991824d1ee88d9 + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120616-release.conda + sha256: d886857cf3c3a53c8a44433bec9b60fc90f9e43b169319bca36ca9daf0369901 + md5: 1420c233cedc5e554c728d5f8b2b1657 depends: - - max-core ==24.6.0.dev2024120416 release + - max-core ==24.6.0.dev2024120616 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22946 - timestamp: 1733332193363 + size: 11371 + timestamp: 1733502206776 - kind: conda name: multidict version: 6.1.0 @@ -6890,58 +6841,55 @@ packages: timestamp: 1733327434163 - kind: conda name: propcache - version: 0.2.0 - build: py312h024a12e_2 - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.0-py312h024a12e_2.conda - sha256: 0f3a04675c6c473398f0aaa95c259e0a085d5ec106b4fa89a7efeb7cc73d5dd2 - md5: 6693e523bc43c38508efe14ab3374f0c + version: 0.2.1 + build: py312h66e93f0_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.1-py312h66e93f0_0.conda + sha256: 5771311fb5ded614ca349c92579a0b752af55a310f40b71fc533e20625965391 + md5: 55d5742a696d7da1c1262e99b6217ceb depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 license: Apache-2.0 license_family: APACHE - size: 47796 - timestamp: 1728545963127 + size: 52747 + timestamp: 1733391916349 - kind: conda name: propcache - version: 0.2.0 - build: py312h66e93f0_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.0-py312h66e93f0_2.conda - sha256: be7aa0056680dd6e528b7992169a20dd525b94f62d37c8ba0fbf69bd4e8df57d - md5: 2c6c0c68f310bc33972e7c83264d7786 + version: 0.2.1 + build: py312hb2c0f52_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.2.1-py312hb2c0f52_0.conda + sha256: c7f62c11ed929ccf1f3d4a1e200e28be01e8d0e0786bf8f76c5893f2ea681e1b + md5: 50ab8953e7ff1333a4a47cda32e68123 depends: - - __glibc >=2.17,<3.0.a0 - libgcc >=13 - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 license: Apache-2.0 license_family: APACHE - size: 53498 - timestamp: 1728545927816 + size: 52484 + timestamp: 1733391993461 - kind: conda name: propcache - version: 0.2.0 - build: py312hb2c0f52_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.2.0-py312hb2c0f52_2.conda - sha256: 50dad7604b6c20440baf081700b5d6829097121e65f34fd1a15508b20fbecc07 - md5: 8a258196d6f79ad32d3ea4dd4572f721 + version: 0.2.1 + build: py312hea69d52_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.1-py312hea69d52_0.conda + sha256: f8c266c494aa1e4cfb8bf0b6fca060044b2f3d65afe4c5062ebeea382e77aa6d + md5: c84e3dd97fe25a17322c4a0f670c6750 depends: - - libgcc >=13 + - __osx >=11.0 - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 license: Apache-2.0 license_family: APACHE - size: 53507 - timestamp: 1728546155066 + size: 48225 + timestamp: 1733392308901 - kind: conda name: protobuf version: 5.28.2 @@ -7376,91 +7324,94 @@ packages: timestamp: 1733217331982 - kind: conda name: python - version: 3.12.7 - build: h5d932e8_0_cpython + version: 3.12.8 + build: h1683364_1_cpython + build_number: 1 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.7-h5d932e8_0_cpython.conda - sha256: 25570873d92d4d9490c6db780cc85e6c28bd3ff61dc1ece79f602cf82bc73bc1 - md5: e6cab21bb5787270388939cf41cc5f43 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.8-h1683364_1_cpython.conda + sha256: 85573582d5b0f79923fed0a8365d3d74d21eee9f0a5fa1b9345f191e006363ab + md5: 09ec612ea05370989eaa3d81abf0f369 depends: - bzip2 >=1.0.8,<2.0a0 - ld_impl_linux-aarch64 >=2.36.1 - - libexpat >=2.6.3,<3.0a0 + - libexpat >=2.6.4,<3.0a0 - libffi >=3.4,<4.0a0 - libgcc >=13 + - liblzma >=5.6.3,<6.0a0 - libnsl >=2.0.1,<2.1.0a0 - - libsqlite >=3.46.1,<4.0a0 + - libsqlite >=3.47.0,<4.0a0 - libuuid >=2.38.1,<3.0a0 - libxcrypt >=4.4.36 - libzlib >=1.3.1,<2.0a0 - ncurses >=6.5,<7.0a0 - - openssl >=3.3.2,<4.0a0 + - openssl >=3.4.0,<4.0a0 - readline >=8.2,<9.0a0 - tk >=8.6.13,<8.7.0a0 - tzdata - - xz >=5.2.6,<6.0a0 constrains: - python_abi 3.12.* *_cp312 license: Python-2.0 - size: 13762126 - timestamp: 1728057461028 + size: 13760816 + timestamp: 1733407890896 - kind: conda name: python - version: 3.12.7 - build: h739c21a_0_cpython - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.7-h739c21a_0_cpython.conda - sha256: 45d7ca2074aa92594bd2f91a9003b338cc1df8a46b9492b7fc8167110783c3ef - md5: e0d82e57ebb456077565e6d82cd4a323 + version: 3.12.8 + build: h9e4cc4f_1_cpython + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.8-h9e4cc4f_1_cpython.conda + sha256: 3f0e0518c992d8ccfe62b189125721309836fe48a010dc424240583e157f9ff0 + md5: 7fd2fd79436d9b473812f14e86746844 depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 - bzip2 >=1.0.8,<2.0a0 - - libexpat >=2.6.3,<3.0a0 + - ld_impl_linux-64 >=2.36.1 + - libexpat >=2.6.4,<3.0a0 - libffi >=3.4,<4.0a0 - - libsqlite >=3.46.1,<4.0a0 + - libgcc >=13 + - liblzma >=5.6.3,<6.0a0 + - libnsl >=2.0.1,<2.1.0a0 + - libsqlite >=3.47.0,<4.0a0 + - libuuid >=2.38.1,<3.0a0 + - libxcrypt >=4.4.36 - libzlib >=1.3.1,<2.0a0 - ncurses >=6.5,<7.0a0 - - openssl >=3.3.2,<4.0a0 + - openssl >=3.4.0,<4.0a0 - readline >=8.2,<9.0a0 - tk >=8.6.13,<8.7.0a0 - tzdata - - xz >=5.2.6,<6.0a0 constrains: - python_abi 3.12.* *_cp312 license: Python-2.0 - size: 12975439 - timestamp: 1728057819519 + size: 31565686 + timestamp: 1733410597922 - kind: conda name: python - version: 3.12.7 - build: hc5c86c4_0_cpython - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.7-hc5c86c4_0_cpython.conda - sha256: 674be31ff152d9f0e0fe16959a45e3803a730fc4f54d87df6a9ac4e6a698c41d - md5: 0515111a9cdf69f83278f7c197db9807 + version: 3.12.8 + build: hc22306f_1_cpython + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.8-hc22306f_1_cpython.conda + sha256: 7586a711b1b08a9df8864e26efdc06980bdfb0e18d5ac4651d0fee30a8d3e3a0 + md5: 54ca5b5d92ef3a3ba61e195ee882a518 depends: - - __glibc >=2.17,<3.0.a0 + - __osx >=11.0 - bzip2 >=1.0.8,<2.0a0 - - ld_impl_linux-64 >=2.36.1 - - libexpat >=2.6.3,<3.0a0 + - libexpat >=2.6.4,<3.0a0 - libffi >=3.4,<4.0a0 - - libgcc >=13 - - libnsl >=2.0.1,<2.1.0a0 - - libsqlite >=3.46.1,<4.0a0 - - libuuid >=2.38.1,<3.0a0 - - libxcrypt >=4.4.36 + - liblzma >=5.6.3,<6.0a0 + - libsqlite >=3.47.0,<4.0a0 - libzlib >=1.3.1,<2.0a0 - ncurses >=6.5,<7.0a0 - - openssl >=3.3.2,<4.0a0 + - openssl >=3.4.0,<4.0a0 - readline >=8.2,<9.0a0 - tk >=8.6.13,<8.7.0a0 - tzdata - - xz >=5.2.6,<6.0a0 constrains: - python_abi 3.12.* *_cp312 license: Python-2.0 - size: 31574780 - timestamp: 1728059777603 + size: 12998673 + timestamp: 1733408900971 - kind: conda name: python-dateutil version: 2.9.0.post0 @@ -7944,21 +7895,22 @@ packages: - kind: conda name: rich version: 13.9.4 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_0.conda - sha256: c009488fc07fd5557434c9c1ad32ab1dd50241d6a766e4b2b4125cd6498585a8 - md5: bcf8cc8924b5d20ead3d122130b8320b + url: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_1.conda + sha256: 06a760c5ae572e72e865d5a87e9fe3cc171e1a9c996e63daf3db52ff1a0b4457 + md5: 7aed65d4ff222bfb7335997aa40b7da5 depends: - markdown-it-py >=2.2.0 - pygments >=2.13.0,<3.0.0 - - python >=3.8 + - python >=3.9 - typing_extensions >=4.0.0,<5.0.0 license: MIT license_family: MIT - size: 185481 - timestamp: 1730592349978 + size: 185646 + timestamp: 1733342347277 - kind: conda name: s2n version: 1.5.9 @@ -8081,65 +8033,68 @@ packages: timestamp: 1733301007770 - kind: conda name: six - version: 1.16.0 - build: pyhd8ed1ab_1 - build_number: 1 + version: 1.17.0 + build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyhd8ed1ab_1.conda - sha256: 761b96fe7bea080b9c35dd2f87f788eb94b61d462645bd16f361e80ae0ff017c - md5: a516da6cfe1ec0a55e49737f017b4965 + url: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + sha256: 41db0180680cc67c3fa76544ffd48d6a5679d96f4b71d7498a759e94edc9a2db + md5: a451d576819089b0d672f18768be0f65 depends: - python >=3.9 license: MIT license_family: MIT size: 16385 - timestamp: 1733216901349 + timestamp: 1733381032766 - kind: conda name: snappy version: 1.2.1 - build: h1088aeb_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-h1088aeb_0.conda - sha256: 79f5d0a9098acf2ed16e6ecc4c11472b50ccf59feea37a7d585fd43888d7e41f - md5: e4ed5b015f525b56f95c26d85a4ea208 + build: h8bd8927_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-h8bd8927_1.conda + sha256: ec91e86eeb2c6bbf09d51351b851e945185d70661d2ada67204c9a6419d282d3 + md5: 3b3e64af585eadfb52bb90b553db5edf depends: - - libgcc-ng >=12 - - libstdcxx-ng >=12 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 license: BSD-3-Clause license_family: BSD - size: 42888 - timestamp: 1720003817527 + size: 42739 + timestamp: 1733501881851 - kind: conda name: snappy version: 1.2.1 - build: ha2e4443_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-ha2e4443_0.conda - sha256: dc7c8e0e8c3e8702aae81c52d940bfaabe756953ee51b1f1757e891bab62cf7f - md5: 6b7dcc7349efd123d493d2dbe85a045f + build: h98b9ce2_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-h98b9ce2_1.conda + sha256: 4242f95b215127a006eb664fe26ed5a82df87e90cbdbc7ce7ff4971f0720997f + md5: ded86dee325290da2967a3fea3800eb5 depends: - - libgcc-ng >=12 - - libstdcxx-ng >=12 + - __osx >=11.0 + - libcxx >=18 license: BSD-3-Clause license_family: BSD - size: 42465 - timestamp: 1720003704360 + size: 35857 + timestamp: 1733502172664 - kind: conda name: snappy version: 1.2.1 - build: hd02b534_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-hd02b534_0.conda - sha256: cb7a9440241c6092e0f1c795fdca149c4767023e783eaf9cfebc501f906b4897 - md5: 69d0f9694f3294418ee935da3d5f7272 + build: hd4fb6f5_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-hd4fb6f5_1.conda + sha256: c4a07ae5def8d55128f25a567a296ef9d7bf99a3bc79d46bd5160c076a5f50af + md5: 2fcc6cd1e5550deb509073fd2e6693e1 depends: - - __osx >=11.0 - - libcxx >=16 + - libgcc >=13 + - libstdcxx >=13 license: BSD-3-Clause license_family: BSD - size: 35708 - timestamp: 1720003794374 + size: 43032 + timestamp: 1733501964775 - kind: conda name: sniffio version: 1.3.1 @@ -8177,20 +8132,21 @@ packages: - kind: conda name: starlette version: 0.41.3 - build: pyh7900ff3_0 + build: pyha770c72_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyh7900ff3_0.conda - sha256: 33986032cb0515f7e9f6647d07006b7dc49b3f373b73d5a1826e6979c661b27a - md5: 0889c5a3e95d8c382cff7556757aedb0 + url: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyha770c72_1.conda + sha256: b74fc76107487eb26624c01fc55bfab7eed03ae82e003333c86d8a1eeac53672 + md5: 0207dac04ae2200701fab697f0aaaac4 depends: - anyio >=3.4.0,<5 - python >=3.9 - typing_extensions >=3.10.0 license: BSD-3-Clause license_family: BSD - size: 59069 - timestamp: 1732037161800 + size: 58838 + timestamp: 1733344472634 - kind: conda name: tk version: 8.6.13 @@ -8370,18 +8326,19 @@ packages: - kind: conda name: traitlets version: 5.14.3 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda - sha256: 8a64fa0f19022828513667c2c7176cfd125001f3f4b9bc00d33732e627dd2592 - md5: 3df84416a021220d8b5700c613af2dc5 + url: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + sha256: f39a5620c6e8e9e98357507262a7869de2ae8cc07da8b7f84e517c9fd6c2b959 + md5: 019a7385be9af33791c989871317e1ed depends: - - python >=3.8 + - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 110187 - timestamp: 1713535244513 + size: 110051 + timestamp: 1733367480074 - kind: conda name: transformers version: 4.46.3 @@ -8410,58 +8367,58 @@ packages: timestamp: 1731981383171 - kind: conda name: typer - version: 0.15.0 + version: 0.15.1 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.0-pyhd8ed1ab_0.conda - sha256: 90503b2a518434fb554d621cc4e1c533dc524ef1c0f63fde39fdf4328163a0c8 - md5: cf9393f5733c7277b1a5f79145f8485b + url: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda + sha256: ef695490e895c2ad552c77ec497b899b09fd4ad4ab07edcf5649f5994cf92a35 + md5: 170a0398946d8f5b454e592672b6fc20 depends: - python >=3.9 - - typer-slim-standard 0.15.0 hd8ed1ab_0 + - typer-slim-standard 0.15.1 hd8ed1ab_0 license: MIT license_family: MIT - size: 56455 - timestamp: 1733279871129 + size: 56175 + timestamp: 1733408582623 - kind: conda name: typer-slim - version: 0.15.0 + version: 0.15.1 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.0-pyhd8ed1ab_0.conda - sha256: f6a85917292aaea0577792090ac74dbdb0280a656934746f715bfa9feaa9b2dc - md5: 629fef89115de5a907fb9765cdd45b26 + url: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda + sha256: d4965516f35e0805199de6596c4ac76c4ad3d6b012be35e532102f9e53ecb860 + md5: 0218b16f5a1dd569e575a7a6415489db depends: - click >=8.0.0 - python >=3.9 - typing_extensions >=3.7.4.3 constrains: - - typer >=0.15.0,<0.15.1.0a0 - - shellingham >=1.3.0 - rich >=10.11.0 + - typer >=0.15.1,<0.15.2.0a0 + - shellingham >=1.3.0 license: MIT license_family: MIT - size: 43480 - timestamp: 1733279858535 + size: 43592 + timestamp: 1733408569554 - kind: conda name: typer-slim-standard - version: 0.15.0 + version: 0.15.1 build: hd8ed1ab_0 subdir: noarch noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.0-hd8ed1ab_0.conda - sha256: df52ddd24439aff384a82d00a751947b12127ab571f4aa674a1053c703ce8ed0 - md5: a4746fc9efbff02c1a288d8fcd8ffba9 + url: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda + sha256: f31c56fe98315da8b9ce848256c17e0b9f87896b41a6ccf0c9cc74644dcef20f + md5: 4e603c43bfdfc7b533be087c3e070cc9 depends: - rich - shellingham - - typer-slim 0.15.0 pyhd8ed1ab_0 + - typer-slim 0.15.1 pyhd8ed1ab_0 license: MIT license_family: MIT - size: 50259 - timestamp: 1733279859017 + size: 49531 + timestamp: 1733408570063 - kind: conda name: typing-extensions version: 4.12.2 @@ -8914,144 +8871,6 @@ packages: license_family: BSD size: 97691 timestamp: 1689951608120 -- kind: conda - name: xz - version: 5.6.3 - build: h2dbfc1b_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-5.6.3-h2dbfc1b_0.conda - sha256: 65df445d131d1695c45a95d102b8ffaaed5a387b4f97e209ba7d8fa0b7599dec - md5: da081cb850e57b0a0a242bab9087fbeb - depends: - - libgcc >=13 - - liblzma 5.6.3 h86ecc28_0 - - liblzma-devel 5.6.3 h86ecc28_0 - - xz-gpl-tools 5.6.3 h2dbfc1b_0 - - xz-tools 5.6.3 h86ecc28_0 - license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later - size: 23448 - timestamp: 1733324353894 -- kind: conda - name: xz - version: 5.6.3 - build: h9a6d368_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/xz-5.6.3-h9a6d368_0.conda - sha256: 25d515d97f9a147240933b7529dbe10f3ee1c87425cfa3d5faa5115f78ebfe70 - md5: 86674fa432df20be6feea4bd8fec0668 - depends: - - __osx >=11.0 - - liblzma 5.6.3 h39f12f2_0 - - liblzma-devel 5.6.3 h39f12f2_0 - - xz-gpl-tools 5.6.3 h9a6d368_0 - - xz-tools 5.6.3 h39f12f2_0 - license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later - size: 23570 - timestamp: 1733321627935 -- kind: conda - name: xz - version: 5.6.3 - build: hbcc6ac9_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/xz-5.6.3-hbcc6ac9_0.conda - sha256: 32cd43b293f1e6498831c499195afc5693c2bd604244a08fe8dd7107a20757d2 - md5: 504333561007fbf0af129f0cee4f5652 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - liblzma 5.6.3 hb9d3cd8_0 - - liblzma-devel 5.6.3 hb9d3cd8_0 - - xz-gpl-tools 5.6.3 hbcc6ac9_0 - - xz-tools 5.6.3 hb9d3cd8_0 - license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later - size: 23435 - timestamp: 1733321352996 -- kind: conda - name: xz-gpl-tools - version: 5.6.3 - build: h2dbfc1b_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-gpl-tools-5.6.3-h2dbfc1b_0.conda - sha256: d99ba29095b47891e3c63d04832768c3bfe4ad49e7bb4e163ca18962b8b3f5ca - md5: b0245c3aad4592510bb0c19212c1bded - depends: - - libgcc >=13 - - liblzma 5.6.3 h86ecc28_0 - license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later - size: 33355 - timestamp: 1733324193303 -- kind: conda - name: xz-gpl-tools - version: 5.6.3 - build: h9a6d368_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/xz-gpl-tools-5.6.3-h9a6d368_0.conda - sha256: 44a0738b66573d0e7def712ef2aa98f628b17ee4d1034ffe71c3ff36f68d12dd - md5: 9e4519aef300966683764ccbbaa89da4 - depends: - - __osx >=11.0 - - liblzma 5.6.3 h39f12f2_0 - license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later - size: 33343 - timestamp: 1733321610703 -- kind: conda - name: xz-gpl-tools - version: 5.6.3 - build: hbcc6ac9_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/xz-gpl-tools-5.6.3-hbcc6ac9_0.conda - sha256: e9829eb1207239198f03eba61d17d0f946bbaa7602f7ee019efe72ccb26525db - md5: e4f1e59ca2971e8d0fdde0928c3f7b7f - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - liblzma 5.6.3 hb9d3cd8_0 - license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later - size: 33299 - timestamp: 1733321343126 -- kind: conda - name: xz-tools - version: 5.6.3 - build: h39f12f2_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/xz-tools-5.6.3-h39f12f2_0.conda - sha256: be3c74ffe4a7a5852108dafe40ef41858ca1ea911c62b08b5e4dd8f641d23f22 - md5: 10855380caa384c8388b93ef29c7bd04 - depends: - - __osx >=11.0 - - liblzma 5.6.3 h39f12f2_0 - license: 0BSD AND LGPL-2.1-or-later - size: 81129 - timestamp: 1733321582233 -- kind: conda - name: xz-tools - version: 5.6.3 - build: h86ecc28_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-tools-5.6.3-h86ecc28_0.conda - sha256: 1d82a745cd60e674d18a0ce30ba13d72616261b1831530f480599ffc991c8476 - md5: 0136c7aa78b4d887c9fb6dbf39749778 - depends: - - libgcc >=13 - - liblzma 5.6.3 h86ecc28_0 - license: 0BSD AND LGPL-2.1-or-later - size: 95353 - timestamp: 1733324033407 -- kind: conda - name: xz-tools - version: 5.6.3 - build: hb9d3cd8_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/xz-tools-5.6.3-hb9d3cd8_0.conda - sha256: 7d03d4c0d18dbac0ebb9550890fddeb4d21a375709339a6bdedd0104bc4f4967 - md5: 40270c1e058fd1d31caee8bf2c68fc3a - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - liblzma 5.6.3 hb9d3cd8_0 - license: 0BSD AND LGPL-2.1-or-later - size: 89832 - timestamp: 1733321333192 - kind: conda name: yaml version: 0.2.5 @@ -9097,64 +8916,64 @@ packages: timestamp: 1641347626613 - kind: conda name: yarl - version: 1.18.0 + version: 1.18.3 build: py312h66e93f0_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.18.0-py312h66e93f0_0.conda - sha256: 8a1e51303ecac64f10dd0ec548d472c49954c3e2f38023ef28899191580795e1 - md5: 601d2b19a54fd9346ba18c07c2516339 + url: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.18.3-py312h66e93f0_0.conda + sha256: a0d93c3bef723e384cff8a29a82a2c6b7a73b39328088f3a2d97c901f56e9a63 + md5: 91df2efaa08730416bec2a4502309275 depends: - __glibc >=2.17,<3.0.a0 - idna >=2.0 - libgcc >=13 - multidict >=4.0 - - propcache >=0.2.0 + - propcache >=0.2.1 - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 license: Apache-2.0 license_family: Apache - size: 151247 - timestamp: 1732220988648 + size: 151393 + timestamp: 1733428897813 - kind: conda name: yarl - version: 1.18.0 + version: 1.18.3 build: py312hb2c0f52_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.18.0-py312hb2c0f52_0.conda - sha256: 2ead24d5c50a2edd6348be5888677100b12b98921d1b6fe2f4cd980b0b85ffb2 - md5: 7dbbd950a7f762c2c8ab835932b12001 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.18.3-py312hb2c0f52_0.conda + sha256: 470b5b0f3ac89acd143095281167dc2ac1a56d4fa22e1794bd8f3b00bb604540 + md5: 0b3c640697bca798d0ab428f530ed24c depends: - idna >=2.0 - libgcc >=13 - multidict >=4.0 - - propcache >=0.2.0 + - propcache >=0.2.1 - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 license: Apache-2.0 license_family: Apache - size: 149149 - timestamp: 1732221057827 + size: 150004 + timestamp: 1733429056665 - kind: conda name: yarl - version: 1.18.0 + version: 1.18.3 build: py312hea69d52_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.18.0-py312hea69d52_0.conda - sha256: 4c90de12b1569f85126a12dbbb89f3dc10cee5838335b9c9993ead8bf1594cd3 - md5: f538709098e1642d50f4a01707e7dfdb + url: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.18.3-py312hea69d52_0.conda + sha256: 69c7863809e11bc90c0d935c16e7f151dcc925add08b3894f06059263a8cb9ba + md5: f32f9b16361866a62d6e061fcd7eb400 depends: - __osx >=11.0 - idna >=2.0 - multidict >=4.0 - - propcache >=0.2.0 + - propcache >=0.2.1 - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 license: Apache-2.0 license_family: Apache - size: 141452 - timestamp: 1732221306526 + size: 141556 + timestamp: 1733429104990 - kind: conda name: zeromq version: 4.3.5 From a05c8bff8fc5620dbb607b2490be21337b9bbd25 Mon Sep 17 00:00:00 2001 From: Joe Loser Date: Fri, 6 Dec 2024 10:16:16 -0700 Subject: [PATCH 048/509] [stdlib] Remove copy in `StaticTuple.setitem[idx]` Similar to the recent change made in `getitem`, remove the copy in the `setitem` overload for static index. We can't quite yet remove the copy in the runtime index case of `setitem` which is still being investigated. While tracking this down, add an explicit test case for `StaticTuple.setitem` for compile-time index to make sure we didn't break anything. MODULAR_ORIG_COMMIT_REV_ID: 95818ecfb9845f7fcd410481c64894c4ab00f631 --- stdlib/src/utils/static_tuple.mojo | 4 +--- stdlib/test/utils/test_static_tuple.mojo | 4 ++++ 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/stdlib/src/utils/static_tuple.mojo b/stdlib/src/utils/static_tuple.mojo index ff745bedec..0788b54b43 100644 --- a/stdlib/src/utils/static_tuple.mojo +++ b/stdlib/src/utils/static_tuple.mojo @@ -257,6 +257,4 @@ struct StaticTuple[element_type: AnyTrivialRegType, size: Int](Sized): val: The value to store. """ constrained[index < size]() - var tmp = self - _set_array_elem[index, size, Self.element_type](val, tmp.array) - self = tmp + _set_array_elem[index, size, Self.element_type](val, self.array) diff --git a/stdlib/test/utils/test_static_tuple.mojo b/stdlib/test/utils/test_static_tuple.mojo index 67f3fbc0e8..b2f46d55af 100644 --- a/stdlib/test/utils/test_static_tuple.mojo +++ b/stdlib/test/utils/test_static_tuple.mojo @@ -46,6 +46,10 @@ def test_setitem(): t[2] = 300 assert_equal(t[2], 300) + alias idx: Int = 0 + t.__setitem__[idx](400) + assert_equal(t[0], 400) + def main(): test_getitem() From 04cdc70bdfee882e0cb8f351d93e727b195ca5b3 Mon Sep 17 00:00:00 2001 From: Evan Ovadia Date: Fri, 6 Dec 2024 12:51:23 -0500 Subject: [PATCH 049/509] [mojo-lang] Adds __disable_del keyword, to destroy linear types. Adds __disable_del keyword, to allow the user to destroy `@explicit_destroy` types. All these names are temporary, we'll all figure those out soon. MODULAR_ORIG_COMMIT_REV_ID: 5005b11c4c3bdba25d096c5ffc300debebfd5523 --- docs/changelog.md | 4 ++++ stdlib/src/builtin/coroutine.mojo | 8 ++++---- stdlib/src/memory/owned_pointer.mojo | 4 ++-- 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/docs/changelog.md b/docs/changelog.md index d5ab2b45a1..02a1a13eef 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -298,6 +298,10 @@ what we publish. - `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. + ### 🦋 Changed - The `inout` and `borrowed` argument conventions have been renamed to the `mut` diff --git a/stdlib/src/builtin/coroutine.mojo b/stdlib/src/builtin/coroutine.mojo index b1e7c4bd55..04688695c8 100644 --- a/stdlib/src/builtin/coroutine.mojo +++ b/stdlib/src/builtin/coroutine.mojo @@ -134,7 +134,7 @@ struct Coroutine[type: AnyType, origins: OriginSet]: fn force_destroy(owned self): """Destroy the coroutine object.""" __mlir_op.`co.destroy`(self._handle) - __mlir_op.`lit.ownership.mark_destroyed`(__get_mvalue_as_litref(self)) + __disable_del self @always_inline fn __await__(owned self) -> type as out: @@ -147,7 +147,7 @@ struct Coroutine[type: AnyType, origins: OriginSet]: # Black magic! Internal implementation detail! # Don't you dare copy this code! 😤 var handle = self._handle - __mlir_op.`lit.ownership.mark_destroyed`(__get_mvalue_as_litref(self)) + __disable_del self __mlir_op.`co.await`[_type=NoneType]( handle, __mlir_op.`lit.ref.to_pointer`(__get_mvalue_as_litref(out)), @@ -217,7 +217,7 @@ struct RaisingCoroutine[type: AnyType, origins: OriginSet]: fn force_destroy(owned self): """Destroy the coroutine object.""" __mlir_op.`co.destroy`(self._handle) - __mlir_op.`lit.ownership.mark_destroyed`(__get_mvalue_as_litref(self)) + __disable_del self @always_inline fn __await__(owned self) raises -> type as out: @@ -230,7 +230,7 @@ struct RaisingCoroutine[type: AnyType, origins: OriginSet]: # Black magic! Internal implementation detail! # Don't you dare copy this code! 😤 var handle = self._handle - __mlir_op.`lit.ownership.mark_destroyed`(__get_mvalue_as_litref(self)) + __disable_del self if __mlir_op.`co.await`[_type = __mlir_type.i1]( handle, __mlir_op.`lit.ref.to_pointer`(__get_mvalue_as_litref(out)), diff --git a/stdlib/src/memory/owned_pointer.mojo b/stdlib/src/memory/owned_pointer.mojo index 5d1ddb367d..4dd473023c 100644 --- a/stdlib/src/memory/owned_pointer.mojo +++ b/stdlib/src/memory/owned_pointer.mojo @@ -148,7 +148,7 @@ struct OwnedPointer[T: AnyType]: """ var r = self._inner.take_pointee() self._inner.free() - __mlir_op.`lit.ownership.mark_destroyed`(__get_mvalue_as_litref(self)) + __disable_del self return r^ @@ -171,6 +171,6 @@ struct OwnedPointer[T: AnyType]: var ptr = self._inner # Prevent the destructor from running on `self` - __mlir_op.`lit.ownership.mark_destroyed`(__get_mvalue_as_litref(self)) + __disable_del self return ptr From db30bf465cbbf412fa3c17bb33371c8a4c6faaea Mon Sep 17 00:00:00 2001 From: Evan Ovadia Date: Fri, 6 Dec 2024 15:11:58 -0500 Subject: [PATCH 050/509] 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. MODULAR_ORIG_COMMIT_REV_ID: f1ca27c6c5a94c02424b841adf16ff1f3ea04dc9 --- docs/changelog.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/docs/changelog.md b/docs/changelog.md index 02a1a13eef..5398fd44c6 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -302,6 +302,10 @@ what we publish. 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` From f8c57ea939654b9c52c6007553a68fe5ea730378 Mon Sep 17 00:00:00 2001 From: Arthur Evans Date: Fri, 6 Dec 2024 20:23:56 -0800 Subject: [PATCH 051/509] [Docs] Origin updates. Update Lifetimes, origins, and references page for origin improvements in in 24.6. MODULAR_ORIG_COMMIT_REV_ID: d40dc85d4c74ad922335489c0c569fcee95c15d1 --- docs/manual/values/lifetimes.mdx | 109 ++++++++++++++++++++++--------- 1 file changed, 78 insertions(+), 31 deletions(-) diff --git a/docs/manual/values/lifetimes.mdx b/docs/manual/values/lifetimes.mdx index 39c2402f43..5dc05d799a 100644 --- a/docs/manual/values/lifetimes.mdx +++ b/docs/manual/values/lifetimes.mdx @@ -80,23 +80,23 @@ struct to specify an origin with parametric mutability: struct ParametricRef[ is_mutable: Bool, //, - origin: Origin[is_mutable].type + origin: Origin[is_mutable] ]: pass ``` -Note that `Origin` *isn't an origin value*, it's a helper for specifying a +Note that `Origin` isn't an origin **value**, it's a helper for specifying a origin **type**. Origin types carry the mutability of a reference as a boolean parameter value, indicating whether the origin is mutable, immutable, or even with mutability depending on a parameter specified by the enclosing API. The `is_mutable` parameter here is an [infer-only -parameter](/mojo/manual/parameters/#infer-only-parameters). It's never -specified directly by the user, but always inferred from context. The -`origin` value is often inferred, as well. For example, the following code -creates a [`Pointer`](/mojo/stdlib/memory/pointer/Pointer) to an existing -value, but doesn't need to specify an origin—the `origin` is inferred from -the variable passed in to the `address_of()` method. +parameter](/mojo/manual/parameters/#infer-only-parameters). It can't be passed +as a positional parameter—it's either inferred from context or specified by +keyword. The `origin` value is often inferred, as well. For example, the +following code creates a [`Pointer`](/mojo/stdlib/memory/pointer/Pointer) to an +existing value, but doesn't need to specify an origin—the `origin` is inferred +from the variable passed in to the `address_of()` method. ```mojo from memory import Pointer @@ -114,15 +114,15 @@ A final type of origin value is an `OriginSet`. As the name suggests, an Most origin values are created by the compiler. As a developer, there are a few ways to specify origin values: -* Static origin. The `StaticConstantOrigin` - alias is an origin value representing immutable values that that last for the - duration of the program. String literal values have a `StaticConstantOrigin`. -* Derived origin. The `__origin_of()` magic function returns the origin associated - with the value (or values) passed in. -* Inferred origin. You can use inferred parameters to capture the origin - of a value passed in to a function. -* Wildcard origins. The `ImmutableAnyOrigin` and `MutableAnyOrigin` aliases - are special cases indicating a reference that might access any live value. +* Static origin. The `StaticConstantOrigin` alias is an origin value + representing immutable values that that last for the duration of the program. + String literal values have a `StaticConstantOrigin`. +* Derived origin. The `__origin_of()` magic function returns the origin + associated with the value (or values) passed in. +* Inferred origin. You can use inferred parameters to capture the origin of a + value passed in to a function. +* Wildcard origins. The `ImmutableAnyOrigin` and `MutableAnyOrigin` aliases are + special cases indicating a reference that might access any live value. #### Static origins @@ -138,8 +138,15 @@ static origin. #### Derived origins -Use the `__origin_of(value)` operator to obtain a value's origin. The -argument to `__origin_of()` can take an arbitrary expression: +Use the `__origin_of(value)` operator to obtain a value's origin. An argument +to `__origin_of()` can take an arbitrary expression that yields one of the +following: + +- An origin value. + +- A value with a memory location. + +For example: ```mojo __origin_of(self) @@ -148,7 +155,7 @@ __origin_of(foo()) ``` The `__origin_of()` operator is analyzed statically at compile time; -The expression passed to `__origin_of()` is never evaluated. (For example, +The expressions passed to `__origin_of()` are never evaluated. (For example, when the compiler analyzes `__origin_of(foo())`, it doesn't run the `foo()` function.) @@ -166,10 +173,19 @@ struct BoxedString: fn __init__(out self, value: String): self.o_ptr = OwnedPointer(value) - fn as_ptr(self) -> Pointer[String, __origin_of(self.o_ptr)]: + fn as_ptr(mut self) -> Pointer[String, __origin_of(self.o_ptr)]: return Pointer.address_of(self.o_ptr[]) ``` +Note that the `as_ptr()` method takes its `self` argument as `mut self`. If it +used the default `read` argument convention, it would be immutable, and the +derived origin (`__origin_of(self.o_ptr)`) would also be immutable. + +You can also pass multiple expressions to `__origin_of()` to express the union +of two or more origins: + +`__origin_of(a, b)` + #### Inferred origins The other common way to access an origin value is to *infer* it from the @@ -180,7 +196,7 @@ has an associated `origin`: struct Span[ is_mutable: Bool, //, T: CollectionElement, - origin: Origin[is_mutable].type, + origin: Origin[is_mutable], ](CollectionElementNew): """A non owning view of contiguous data. ``` @@ -229,9 +245,17 @@ to use a `ref` argument: The syntax for a `ref` argument is: -ref [origin_specifier] arg_name: arg_type +ref arg_name: arg_type + +Or: -The origin specifier passed inside the square brackets can be either: +ref [origin_specifier(s)] +arg_name: arg_type + +In the first form, the origin and mutability of the `ref` argument is inferred +from the value passed in. The second form includes an origin clause, consisting +of one or more origin specifiers inside square brackets. An origin +specifier can be either: * An origin value. @@ -244,22 +268,24 @@ The origin specifier passed inside the square brackets can be either: ref [self] ``` -* An underscore character (`_`) to indicate that the origin is *unbound*. You - can think of the underscore as a wildcard that will accept any origin: +* An [`AddressSpace`](/nightly/mojo/stdlib/memory/pointer/AddressSpace) value. + +* An underscore character (`_`) to indicate that the origin is *unbound*. This + is equivalent to omitting the origin specifier. ```mojo - def add_ref(ref a: Int, b: Int) -> Int: + def add_ref(ref a: Int, b: Int) -> Int: return a+b ``` You can also name the origin explicitly. This is useful if you want to specify -an `ImmutableOrigin` or `MutableLOrigin`, or if you want to bind to +an `ImmutableOrigin` or `MutableOrigin`, or if you want to bind to the `is_mutable` parameter. ```mojo def take_str_ref[ is_mutable: Bool, //, - origin: Origin[is_mutable].type + origin: Origin[is_mutable] ](ref [origin] s: String): @parameter if is_mutable: @@ -282,8 +308,14 @@ Mutable: Goodbye ### `ref` return values Like `ref` arguments, `ref` return values allow a function to return a mutable -or immutable reference to a value. Like a `read` or `mut` argument, these -references don't need to be dereferenced. +or immutable reference to a value. The syntax for a `ref` return value is: + +-> ref [origin_specifier(s)] + arg_type + +Note that you **must** specify an origin specifier for a `ref` return value. The +values allowed for origin specifiers are the same as the ones listed for +[`ref` arguments](#ref-arguments). `ref` return values can be an efficient way to handle updating items in a collection. The standard way to do this is by implementing the `__getitem__()` @@ -432,3 +464,18 @@ Diana Without parametric mutability, you'd need to write two versions of `__getitem__()`, one that accepts an immutable `self` and another that accepts a mutable `self`. + +#### Return values with union origins + +A `ref` return value can include multiple values in its origin specifier, which +yields the union of the origins. For example, the following `pick_one()` +function returns a reference to one of the two input strings, with an origin +that's a union of both origins. + +```mojo +def pick_one(cond: Bool, ref a: String, ref b: String) -> ref [a, b] String: + if cond: + return a + else: + return b +``` From cf307a230daeb93743834d8ff4e720d3b1d3404e Mon Sep 17 00:00:00 2001 From: modularbot Date: Sat, 7 Dec 2024 06:29:22 +0000 Subject: [PATCH 052/509] Update lockfiles to point to latest nightly version: 24.6.0.dev2024120705 --- examples/life/magic.lock | 205 +++++++++++++++++----------------- examples/magic.lock | 205 +++++++++++++++++----------------- examples/notebooks/magic.lock | 203 ++++++++++++++++----------------- examples/operators/magic.lock | 205 +++++++++++++++++----------------- magic.lock | 205 +++++++++++++++++----------------- 5 files changed, 514 insertions(+), 509 deletions(-) diff --git a/examples/life/magic.lock b/examples/life/magic.lock index 8a7706a5c8..3326e0e536 100644 --- a/examples/life/magic.lock +++ b/examples/life/magic.lock @@ -13,10 +13,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/alsa-lib-1.2.13-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aom-3.9.1-hac33072_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/attr-2.5.1-h166bdaf_1.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-hb88c0a9_10.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.0-hecf86a2_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.10.3-hb9d3cd8_0.conda @@ -171,12 +171,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.9.4-hcb278e6_0.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.dev2024120616-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120616-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120616-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120616-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120705-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120705-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.dev2024120616-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120705-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/multiprocess-0.70.15-py312h98912ed_1.conda @@ -294,10 +294,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/alsa-lib-1.2.13-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aom-3.9.1-hcccb83c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/attr-2.5.1-h4e544f5_1.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-hac900a4_10.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.0-h35473ba_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-common-0.10.3-h86ecc28_0.conda @@ -452,12 +452,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.9.4-hd600fc2_0.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.dev2024120616-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120616-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120616-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120616-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120705-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120705-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.dev2024120616-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120705-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/multiprocess-0.70.15-py312hdd3e373_1.conda @@ -573,9 +573,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.9-py312h998013c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aom-3.9.1-h7bae524_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-h9b725a8_10.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.0-h5d7ee29_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.10.3-h5505292_0.conda @@ -715,12 +715,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.9.4-hb7217d7_0.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.dev2024120616-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120616-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120616-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120616-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120705-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120705-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120705-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120705-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.dev2024120616-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120705-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 @@ -1020,26 +1020,26 @@ packages: timestamp: 1733247158254 - kind: conda name: anyio - version: 4.6.2.post1 + version: 4.7.0 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda - sha256: 4b54b7ce79d818e3cce54ae4d552dba51b7afac160ceecdefd04b3917a37c502 - md5: 688697ec5e9588bdded167d19577625b + url: https://conda.anaconda.org/conda-forge/noarch/anyio-4.7.0-pyhd8ed1ab_0.conda + sha256: 687537ee3af30f8784986bf40cac30e88138770b16e51ca9850c9c23c09aeba1 + md5: c88107912954a983c2caf25f7fd55158 depends: - exceptiongroup >=1.0.2 - idna >=2.8 - python >=3.9 - sniffio >=1.1 - - typing_extensions >=4.1 + - typing_extensions >=4.5 constrains: - - uvloop >=0.21.0b1 - trio >=0.26.1 + - uvloop >=0.21 license: MIT license_family: MIT - size: 109864 - timestamp: 1728935803440 + size: 112730 + timestamp: 1733532678437 - kind: conda name: aom version: 3.9.1 @@ -1118,18 +1118,19 @@ packages: - kind: conda name: attrs version: 24.2.0 - build: pyh71513ae_0 + build: pyh71513ae_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda - sha256: 28dba85a7e0f7fb57d7315e13f603d1e41b83c5b88aa2a602596b52c833a2ff8 - md5: 6732fa52eb8e66e5afeb32db8701a791 + url: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_1.conda + sha256: 8488a116dffe204015a90b41982c0270534bd1070f44a00b316d59e4a79ae8c7 + md5: 2018839db45c79654b57a924fcdd27d0 depends: - - python >=3.7 + - python >=3.9 license: MIT license_family: MIT - size: 56048 - timestamp: 1722977241383 + size: 56336 + timestamp: 1733520064905 - kind: conda name: aws-c-auth version: 0.8.0 @@ -7694,76 +7695,76 @@ packages: timestamp: 1733219945697 - kind: conda name: max - version: 24.6.0.dev2024120616 + version: 24.6.0.dev2024120705 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120616-release.conda - sha256: 2338e4ad8e940eee4cf31d6ccfb9605bc3aaa0e2331e3c0f40c1063a0d6f4c58 - md5: 562c33b920321a676acb3fc49c2ddb11 - depends: - - max-core ==24.6.0.dev2024120616 release - - max-python >=24.6.0.dev2024120616,<25.0a0 - - mojo-jupyter ==24.6.0.dev2024120616 release - - mblack ==24.6.0.dev2024120616 release + url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120705-release.conda + sha256: b75fcf4dfbeea5eb4bf1a83b5a4dc1e890aaca5afb87aeea00204d9d43263ab6 + md5: d880e434f1f61e9f7fe35eb5af426762 + depends: + - max-core ==24.6.0.dev2024120705 release + - max-python >=24.6.0.dev2024120705,<25.0a0 + - mojo-jupyter ==24.6.0.dev2024120705 release + - mblack ==24.6.0.dev2024120705 release license: LicenseRef-Modular-Proprietary - size: 9919 - timestamp: 1733502206770 + size: 9922 + timestamp: 1733548613215 - kind: conda name: max-core - version: 24.6.0.dev2024120616 + version: 24.6.0.dev2024120705 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120616-release.conda - sha256: 626f40a00b28c6958272a368b31944d9d62bd57a931910b1e4520d7501c57b61 - md5: 88e589273bf2ae77f80f879adacd234a + url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120705-release.conda + sha256: 1e38d40637ac5faadb1465f7c3ae80077a02fa25773f832c4730bb3f5d285cae + md5: 210eb01e2dc1c01b03d2a817457b895d depends: - - mblack ==24.6.0.dev2024120616 release + - mblack ==24.6.0.dev2024120705 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 247418489 - timestamp: 1733502146971 + size: 247471356 + timestamp: 1733548812210 - kind: conda name: max-core - version: 24.6.0.dev2024120616 + version: 24.6.0.dev2024120705 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120616-release.conda - sha256: af5fcd915dd10f9a72d936fee1b4a32127725a072fb6df41b7a3f43997f3ac3b - md5: 5243c455575512a6061067e3b5d67e0f + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120705-release.conda + sha256: a2e530d128deb23e231c5baf2c89b28fc02879f4608b18415f2cc70604e5ea86 + md5: c036e06aec88105f116ac9b6bfff8720 depends: - - mblack ==24.6.0.dev2024120616 release + - mblack ==24.6.0.dev2024120705 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 251333959 - timestamp: 1733502206769 + size: 251342975 + timestamp: 1733548613213 - kind: conda name: max-core - version: 24.6.0.dev2024120616 + version: 24.6.0.dev2024120705 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120616-release.conda - sha256: 9f051d29fdebf2c33eaa96659e75b06bf2befb17ac6992dc526b71eb4b959fc2 - md5: 99f131bbf681d02fe75d5f9e7dc0ab57 + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120705-release.conda + sha256: dba294806285f1242d3274833451c21ceae2122441177ad870162f18465402cd + md5: 55c2f32ca83e4e21f8ddb5185c8cd263 depends: - - mblack ==24.6.0.dev2024120616 release + - mblack ==24.6.0.dev2024120705 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 211890615 - timestamp: 1733502249826 + size: 211936941 + timestamp: 1733548831297 - kind: conda name: max-python - version: 24.6.0.dev2024120616 + version: 24.6.0.dev2024120705 build: 3.12release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120616-3.12release.conda - sha256: 619cfdba895fe1062b94e9e04109d5c321995c14ce80dd695937fedaeed1430b - md5: aa4c20f7f7f821d9b736c319b9b9d89a + url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120705-3.12release.conda + sha256: 9083a4c9e5e0362a688eeca82b4018fd88cb7a481b15c42e887a3a8bc60f684b + md5: 9b5d9f4c3ce3cd860772c00f7d98e059 depends: - - max-core ==24.6.0.dev2024120616 release + - max-core ==24.6.0.dev2024120705 release - python 3.12.* - pillow - fastapi @@ -7785,18 +7786,18 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 123619079 - timestamp: 1733502146987 + size: 123682860 + timestamp: 1733548812221 - kind: conda name: max-python - version: 24.6.0.dev2024120616 + version: 24.6.0.dev2024120705 build: 3.12release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120616-3.12release.conda - sha256: 1703b8f5e847917b04cc353ea6ce6fdfb4f0e5b053515b0e481b0bed93117a4f - md5: df25189682c30a5259b1ffada686cef2 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120705-3.12release.conda + sha256: 2a30cd49b6468f6f6d76f789ac2ed47f0496e228e06694fdbee7ed757199c63e + md5: 54e13a8164032866ff1f243f931b4ab3 depends: - - max-core ==24.6.0.dev2024120616 release + - max-core ==24.6.0.dev2024120705 release - python 3.12.* - pillow - fastapi @@ -7818,18 +7819,18 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 127361426 - timestamp: 1733502206780 + size: 127403239 + timestamp: 1733548613224 - kind: conda name: max-python - version: 24.6.0.dev2024120616 + version: 24.6.0.dev2024120705 build: 3.12release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120616-3.12release.conda - sha256: 55e016fd1747baa8f15e358d8fe16953282a08b60c64ad6a98cbfdf0229f9d1b - md5: f03ead2bca51c2cd060703fe64ee40da + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120705-3.12release.conda + sha256: 5afdef8316567435191dbb56db99f99a3f1b4d20a4b0132978c89c458916a961 + md5: a4867e539c3f8c25297d0d695b6848b8 depends: - - max-core ==24.6.0.dev2024120616 release + - max-core ==24.6.0.dev2024120705 release - python 3.12.* - pillow - fastapi @@ -7851,17 +7852,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 112339857 - timestamp: 1733502249829 + size: 112378959 + timestamp: 1733548831301 - kind: conda name: mblack - version: 24.6.0.dev2024120616 + version: 24.6.0.dev2024120705 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120616-release.conda - sha256: ccab714a4e70220ff559e9d0e56232964981196851bf77eeac1c3bf53ab0beb2 - md5: dec7dbfe11abd34b171d290d38adea24 + url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120705-release.conda + sha256: e0ecd940a6053ec0d44e3da2b9d99885efcb38f0ae32b92136155bb5aa252a75 + md5: b801385ef3cbed6f7415ddf938dc182e depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -7871,8 +7872,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130704 - timestamp: 1733502206776 + size: 130737 + timestamp: 1733548613220 - kind: conda name: mdurl version: 0.1.2 @@ -7891,21 +7892,21 @@ packages: timestamp: 1733255681319 - kind: conda name: mojo-jupyter - version: 24.6.0.dev2024120616 + version: 24.6.0.dev2024120705 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120616-release.conda - sha256: d886857cf3c3a53c8a44433bec9b60fc90f9e43b169319bca36ca9daf0369901 - md5: 1420c233cedc5e554c728d5f8b2b1657 + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120705-release.conda + sha256: ff854ead8fa7014dd8ed800998afb01ac9faeec55dfc84bcc2d6d21b38e5a8d1 + md5: ce9ee67733d1ab8c43031b67b475dba8 depends: - - max-core ==24.6.0.dev2024120616 release + - max-core ==24.6.0.dev2024120705 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 11371 - timestamp: 1733502206776 + size: 11370 + timestamp: 1733548613220 - kind: conda name: mpg123 version: 1.32.9 diff --git a/examples/magic.lock b/examples/magic.lock index cb06dce375..650f02f9b3 100644 --- a/examples/magic.lock +++ b/examples/magic.lock @@ -12,8 +12,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.9-py311h2dc5d0c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.7.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-hb88c0a9_10.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.0-hecf86a2_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.10.3-hb9d3cd8_0.conda @@ -131,12 +131,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.9.4-hcb278e6_0.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.dev2024120616-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120616-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120616-3.11release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120616-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120705-3.11release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120705-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.dev2024120616-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120705-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py311h2dc5d0c_1.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 @@ -229,8 +229,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.9-py311h58d527c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.7.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-hac900a4_10.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.0-h35473ba_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-common-0.10.3-h86ecc28_0.conda @@ -349,12 +349,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.9.4-hd600fc2_0.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.dev2024120616-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120616-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120616-3.11release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120616-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120705-3.11release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120705-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.dev2024120616-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120705-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multidict-6.1.0-py311h58d527c_1.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 @@ -446,8 +446,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.9-py311h4921393_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.7.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-h9b725a8_10.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.0-h5d7ee29_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.10.3-h5505292_0.conda @@ -558,12 +558,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.9.4-hb7217d7_0.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.dev2024120616-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120616-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120616-3.11release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120616-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120705-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120705-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120705-3.11release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120705-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.dev2024120616-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120705-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 @@ -820,41 +820,42 @@ packages: timestamp: 1733247158254 - kind: conda name: anyio - version: 4.6.2.post1 + version: 4.7.0 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda - sha256: 4b54b7ce79d818e3cce54ae4d552dba51b7afac160ceecdefd04b3917a37c502 - md5: 688697ec5e9588bdded167d19577625b + url: https://conda.anaconda.org/conda-forge/noarch/anyio-4.7.0-pyhd8ed1ab_0.conda + sha256: 687537ee3af30f8784986bf40cac30e88138770b16e51ca9850c9c23c09aeba1 + md5: c88107912954a983c2caf25f7fd55158 depends: - exceptiongroup >=1.0.2 - idna >=2.8 - python >=3.9 - sniffio >=1.1 - - typing_extensions >=4.1 + - typing_extensions >=4.5 constrains: - - uvloop >=0.21.0b1 - trio >=0.26.1 + - uvloop >=0.21 license: MIT license_family: MIT - size: 109864 - timestamp: 1728935803440 + size: 112730 + timestamp: 1733532678437 - kind: conda name: attrs version: 24.2.0 - build: pyh71513ae_0 + build: pyh71513ae_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda - sha256: 28dba85a7e0f7fb57d7315e13f603d1e41b83c5b88aa2a602596b52c833a2ff8 - md5: 6732fa52eb8e66e5afeb32db8701a791 + url: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_1.conda + sha256: 8488a116dffe204015a90b41982c0270534bd1070f44a00b316d59e4a79ae8c7 + md5: 2018839db45c79654b57a924fcdd27d0 depends: - - python >=3.7 + - python >=3.9 license: MIT license_family: MIT - size: 56048 - timestamp: 1722977241383 + size: 56336 + timestamp: 1733520064905 - kind: conda name: aws-c-auth version: 0.8.0 @@ -5875,76 +5876,76 @@ packages: timestamp: 1733220925299 - kind: conda name: max - version: 24.6.0.dev2024120616 + version: 24.6.0.dev2024120705 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120616-release.conda - sha256: 2338e4ad8e940eee4cf31d6ccfb9605bc3aaa0e2331e3c0f40c1063a0d6f4c58 - md5: 562c33b920321a676acb3fc49c2ddb11 - depends: - - max-core ==24.6.0.dev2024120616 release - - max-python >=24.6.0.dev2024120616,<25.0a0 - - mojo-jupyter ==24.6.0.dev2024120616 release - - mblack ==24.6.0.dev2024120616 release + url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120705-release.conda + sha256: b75fcf4dfbeea5eb4bf1a83b5a4dc1e890aaca5afb87aeea00204d9d43263ab6 + md5: d880e434f1f61e9f7fe35eb5af426762 + depends: + - max-core ==24.6.0.dev2024120705 release + - max-python >=24.6.0.dev2024120705,<25.0a0 + - mojo-jupyter ==24.6.0.dev2024120705 release + - mblack ==24.6.0.dev2024120705 release license: LicenseRef-Modular-Proprietary - size: 9919 - timestamp: 1733502206770 + size: 9922 + timestamp: 1733548613215 - kind: conda name: max-core - version: 24.6.0.dev2024120616 + version: 24.6.0.dev2024120705 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120616-release.conda - sha256: 626f40a00b28c6958272a368b31944d9d62bd57a931910b1e4520d7501c57b61 - md5: 88e589273bf2ae77f80f879adacd234a + url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120705-release.conda + sha256: 1e38d40637ac5faadb1465f7c3ae80077a02fa25773f832c4730bb3f5d285cae + md5: 210eb01e2dc1c01b03d2a817457b895d depends: - - mblack ==24.6.0.dev2024120616 release + - mblack ==24.6.0.dev2024120705 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 247418489 - timestamp: 1733502146971 + size: 247471356 + timestamp: 1733548812210 - kind: conda name: max-core - version: 24.6.0.dev2024120616 + version: 24.6.0.dev2024120705 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120616-release.conda - sha256: af5fcd915dd10f9a72d936fee1b4a32127725a072fb6df41b7a3f43997f3ac3b - md5: 5243c455575512a6061067e3b5d67e0f + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120705-release.conda + sha256: a2e530d128deb23e231c5baf2c89b28fc02879f4608b18415f2cc70604e5ea86 + md5: c036e06aec88105f116ac9b6bfff8720 depends: - - mblack ==24.6.0.dev2024120616 release + - mblack ==24.6.0.dev2024120705 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 251333959 - timestamp: 1733502206769 + size: 251342975 + timestamp: 1733548613213 - kind: conda name: max-core - version: 24.6.0.dev2024120616 + version: 24.6.0.dev2024120705 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120616-release.conda - sha256: 9f051d29fdebf2c33eaa96659e75b06bf2befb17ac6992dc526b71eb4b959fc2 - md5: 99f131bbf681d02fe75d5f9e7dc0ab57 + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120705-release.conda + sha256: dba294806285f1242d3274833451c21ceae2122441177ad870162f18465402cd + md5: 55c2f32ca83e4e21f8ddb5185c8cd263 depends: - - mblack ==24.6.0.dev2024120616 release + - mblack ==24.6.0.dev2024120705 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 211890615 - timestamp: 1733502249826 + size: 211936941 + timestamp: 1733548831297 - kind: conda name: max-python - version: 24.6.0.dev2024120616 + version: 24.6.0.dev2024120705 build: 3.11release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120616-3.11release.conda - sha256: 22aabb8990184fa786008b44a27aae62833283ffd998420c7cc6750f919c9372 - md5: 4b34a9cdfb4598249c9e585f4cce4a8a + url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120705-3.11release.conda + sha256: 21048c18d9b0e6aaaaabdbfa125e20f9555be811ea88c1a614fc00a8825d5969 + md5: 698eb0317cf8b0bffdf28220d595358f depends: - - max-core ==24.6.0.dev2024120616 release + - max-core ==24.6.0.dev2024120705 release - python 3.11.* - pillow - fastapi @@ -5966,18 +5967,18 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 123644414 - timestamp: 1733502146982 + size: 123717970 + timestamp: 1733548812218 - kind: conda name: max-python - version: 24.6.0.dev2024120616 + version: 24.6.0.dev2024120705 build: 3.11release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120616-3.11release.conda - sha256: bb9bf09fc5437061b9ab2383ee6a3a1cc4457ed4c32eaeb2a5a78f28c8a77c8e - md5: 73d121cddb702feb967db7b16e41d88a + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120705-3.11release.conda + sha256: 9e288a0e29839fbf4ad9c88e94828aab7a5002328dd4599c5883810977753a8b + md5: ead33ec6ccac667a98a9ef337cdd9c10 depends: - - max-core ==24.6.0.dev2024120616 release + - max-core ==24.6.0.dev2024120705 release - python 3.11.* - pillow - fastapi @@ -5999,18 +6000,18 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 127348291 - timestamp: 1733502206778 + size: 127368506 + timestamp: 1733548613221 - kind: conda name: max-python - version: 24.6.0.dev2024120616 + version: 24.6.0.dev2024120705 build: 3.11release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120616-3.11release.conda - sha256: 29bb82ce4814de2684c3c9a587a2fca7ad3f3047059421be52e8e2b660ef3c31 - md5: 84a362f87f885e22d0e7e1c7649df4c3 + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120705-3.11release.conda + sha256: cf30ebcc9843242a9a2090366b219b1d8bf36c06623841bd1d83453f4beaf01a + md5: 371383929a69fe93ef3e336e144d3661 depends: - - max-core ==24.6.0.dev2024120616 release + - max-core ==24.6.0.dev2024120705 release - python 3.11.* - pillow - fastapi @@ -6032,17 +6033,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 112341940 - timestamp: 1733502249828 + size: 112384807 + timestamp: 1733548831300 - kind: conda name: mblack - version: 24.6.0.dev2024120616 + version: 24.6.0.dev2024120705 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120616-release.conda - sha256: ccab714a4e70220ff559e9d0e56232964981196851bf77eeac1c3bf53ab0beb2 - md5: dec7dbfe11abd34b171d290d38adea24 + url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120705-release.conda + sha256: e0ecd940a6053ec0d44e3da2b9d99885efcb38f0ae32b92136155bb5aa252a75 + md5: b801385ef3cbed6f7415ddf938dc182e depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -6052,8 +6053,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130704 - timestamp: 1733502206776 + size: 130737 + timestamp: 1733548613220 - kind: conda name: mdurl version: 0.1.2 @@ -6072,21 +6073,21 @@ packages: timestamp: 1733255681319 - kind: conda name: mojo-jupyter - version: 24.6.0.dev2024120616 + version: 24.6.0.dev2024120705 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120616-release.conda - sha256: d886857cf3c3a53c8a44433bec9b60fc90f9e43b169319bca36ca9daf0369901 - md5: 1420c233cedc5e554c728d5f8b2b1657 + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120705-release.conda + sha256: ff854ead8fa7014dd8ed800998afb01ac9faeec55dfc84bcc2d6d21b38e5a8d1 + md5: ce9ee67733d1ab8c43031b67b475dba8 depends: - - max-core ==24.6.0.dev2024120616 release + - max-core ==24.6.0.dev2024120705 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 11371 - timestamp: 1733502206776 + size: 11370 + timestamp: 1733548613220 - kind: conda name: multidict version: 6.1.0 diff --git a/examples/notebooks/magic.lock b/examples/notebooks/magic.lock index ef2d7ac2be..5192892142 100644 --- a/examples/notebooks/magic.lock +++ b/examples/notebooks/magic.lock @@ -12,13 +12,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.9-py312h178313f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/argon2-cffi-bindings-21.2.0-py312h66e93f0_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-hb88c0a9_10.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.0-hecf86a2_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.10.3-hb9d3cd8_0.conda @@ -166,13 +166,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/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.dev2024120616-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120616-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120616-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120616-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120705-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120705-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.dev2024120616-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120705-release.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/multiprocess-0.70.15-py312h98912ed_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda @@ -300,13 +300,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.9-py312hcc812fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/argon2-cffi-bindings-21.2.0-py312hb2c0f52_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-hac900a4_10.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.0-h35473ba_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-common-0.10.3-h86ecc28_0.conda @@ -455,13 +455,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/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.dev2024120616-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120616-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120616-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120616-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120705-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120705-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.dev2024120616-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120705-release.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/multiprocess-0.70.15-py312hdd3e373_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda @@ -588,14 +588,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.9-py312h998013c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/appnope-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/argon2-cffi-bindings-21.2.0-py312h024a12e_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-h9b725a8_10.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.0-h5d7ee29_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.10.3-h5505292_0.conda @@ -736,13 +736,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.dev2024120616-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120616-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120616-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120616-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120705-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120705-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120705-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120705-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.dev2024120616-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120705-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 @@ -1036,26 +1036,26 @@ packages: timestamp: 1733247158254 - kind: conda name: anyio - version: 4.6.2.post1 + version: 4.7.0 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda - sha256: 4b54b7ce79d818e3cce54ae4d552dba51b7afac160ceecdefd04b3917a37c502 - md5: 688697ec5e9588bdded167d19577625b + url: https://conda.anaconda.org/conda-forge/noarch/anyio-4.7.0-pyhd8ed1ab_0.conda + sha256: 687537ee3af30f8784986bf40cac30e88138770b16e51ca9850c9c23c09aeba1 + md5: c88107912954a983c2caf25f7fd55158 depends: - exceptiongroup >=1.0.2 - idna >=2.8 - python >=3.9 - sniffio >=1.1 - - typing_extensions >=4.1 + - typing_extensions >=4.5 constrains: - - uvloop >=0.21.0b1 - trio >=0.26.1 + - uvloop >=0.21 license: MIT license_family: MIT - size: 109864 - timestamp: 1728935803440 + size: 112730 + timestamp: 1733532678437 - kind: conda name: appnope version: 0.1.4 @@ -1203,18 +1203,19 @@ packages: - kind: conda name: attrs version: 24.2.0 - build: pyh71513ae_0 + build: pyh71513ae_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda - sha256: 28dba85a7e0f7fb57d7315e13f603d1e41b83c5b88aa2a602596b52c833a2ff8 - md5: 6732fa52eb8e66e5afeb32db8701a791 + url: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_1.conda + sha256: 8488a116dffe204015a90b41982c0270534bd1070f44a00b316d59e4a79ae8c7 + md5: 2018839db45c79654b57a924fcdd27d0 depends: - - python >=3.7 + - python >=3.9 license: MIT license_family: MIT - size: 56048 - timestamp: 1722977241383 + size: 56336 + timestamp: 1733520064905 - kind: conda name: aws-c-auth version: 0.8.0 @@ -6911,76 +6912,76 @@ packages: timestamp: 1733417051523 - kind: conda name: max - version: 24.6.0.dev2024120616 + version: 24.6.0.dev2024120705 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120616-release.conda - sha256: 2338e4ad8e940eee4cf31d6ccfb9605bc3aaa0e2331e3c0f40c1063a0d6f4c58 - md5: 562c33b920321a676acb3fc49c2ddb11 + url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120705-release.conda + sha256: b75fcf4dfbeea5eb4bf1a83b5a4dc1e890aaca5afb87aeea00204d9d43263ab6 + md5: d880e434f1f61e9f7fe35eb5af426762 depends: - - max-core ==24.6.0.dev2024120616 release - - max-python >=24.6.0.dev2024120616,<25.0a0 - - mojo-jupyter ==24.6.0.dev2024120616 release - - mblack ==24.6.0.dev2024120616 release + - max-core ==24.6.0.dev2024120705 release + - max-python >=24.6.0.dev2024120705,<25.0a0 + - mojo-jupyter ==24.6.0.dev2024120705 release + - mblack ==24.6.0.dev2024120705 release license: LicenseRef-Modular-Proprietary - size: 9919 - timestamp: 1733502206770 + size: 9922 + timestamp: 1733548613215 - kind: conda name: max-core - version: 24.6.0.dev2024120616 + version: 24.6.0.dev2024120705 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120616-release.conda - sha256: 626f40a00b28c6958272a368b31944d9d62bd57a931910b1e4520d7501c57b61 - md5: 88e589273bf2ae77f80f879adacd234a + url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120705-release.conda + sha256: 1e38d40637ac5faadb1465f7c3ae80077a02fa25773f832c4730bb3f5d285cae + md5: 210eb01e2dc1c01b03d2a817457b895d depends: - - mblack ==24.6.0.dev2024120616 release + - mblack ==24.6.0.dev2024120705 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 247418489 - timestamp: 1733502146971 + size: 247471356 + timestamp: 1733548812210 - kind: conda name: max-core - version: 24.6.0.dev2024120616 + version: 24.6.0.dev2024120705 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120616-release.conda - sha256: af5fcd915dd10f9a72d936fee1b4a32127725a072fb6df41b7a3f43997f3ac3b - md5: 5243c455575512a6061067e3b5d67e0f + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120705-release.conda + sha256: a2e530d128deb23e231c5baf2c89b28fc02879f4608b18415f2cc70604e5ea86 + md5: c036e06aec88105f116ac9b6bfff8720 depends: - - mblack ==24.6.0.dev2024120616 release + - mblack ==24.6.0.dev2024120705 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 251333959 - timestamp: 1733502206769 + size: 251342975 + timestamp: 1733548613213 - kind: conda name: max-core - version: 24.6.0.dev2024120616 + version: 24.6.0.dev2024120705 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120616-release.conda - sha256: 9f051d29fdebf2c33eaa96659e75b06bf2befb17ac6992dc526b71eb4b959fc2 - md5: 99f131bbf681d02fe75d5f9e7dc0ab57 + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120705-release.conda + sha256: dba294806285f1242d3274833451c21ceae2122441177ad870162f18465402cd + md5: 55c2f32ca83e4e21f8ddb5185c8cd263 depends: - - mblack ==24.6.0.dev2024120616 release + - mblack ==24.6.0.dev2024120705 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 211890615 - timestamp: 1733502249826 + size: 211936941 + timestamp: 1733548831297 - kind: conda name: max-python - version: 24.6.0.dev2024120616 + version: 24.6.0.dev2024120705 build: 3.12release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120616-3.12release.conda - sha256: 619cfdba895fe1062b94e9e04109d5c321995c14ce80dd695937fedaeed1430b - md5: aa4c20f7f7f821d9b736c319b9b9d89a + url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120705-3.12release.conda + sha256: 9083a4c9e5e0362a688eeca82b4018fd88cb7a481b15c42e887a3a8bc60f684b + md5: 9b5d9f4c3ce3cd860772c00f7d98e059 depends: - - max-core ==24.6.0.dev2024120616 release + - max-core ==24.6.0.dev2024120705 release - python 3.12.* - pillow - fastapi @@ -7002,18 +7003,18 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 123619079 - timestamp: 1733502146987 + size: 123682860 + timestamp: 1733548812221 - kind: conda name: max-python - version: 24.6.0.dev2024120616 + version: 24.6.0.dev2024120705 build: 3.12release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120616-3.12release.conda - sha256: 1703b8f5e847917b04cc353ea6ce6fdfb4f0e5b053515b0e481b0bed93117a4f - md5: df25189682c30a5259b1ffada686cef2 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120705-3.12release.conda + sha256: 2a30cd49b6468f6f6d76f789ac2ed47f0496e228e06694fdbee7ed757199c63e + md5: 54e13a8164032866ff1f243f931b4ab3 depends: - - max-core ==24.6.0.dev2024120616 release + - max-core ==24.6.0.dev2024120705 release - python 3.12.* - pillow - fastapi @@ -7035,18 +7036,18 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 127361426 - timestamp: 1733502206780 + size: 127403239 + timestamp: 1733548613224 - kind: conda name: max-python - version: 24.6.0.dev2024120616 + version: 24.6.0.dev2024120705 build: 3.12release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120616-3.12release.conda - sha256: 55e016fd1747baa8f15e358d8fe16953282a08b60c64ad6a98cbfdf0229f9d1b - md5: f03ead2bca51c2cd060703fe64ee40da + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120705-3.12release.conda + sha256: 5afdef8316567435191dbb56db99f99a3f1b4d20a4b0132978c89c458916a961 + md5: a4867e539c3f8c25297d0d695b6848b8 depends: - - max-core ==24.6.0.dev2024120616 release + - max-core ==24.6.0.dev2024120705 release - python 3.12.* - pillow - fastapi @@ -7068,17 +7069,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 112339857 - timestamp: 1733502249829 + size: 112378959 + timestamp: 1733548831301 - kind: conda name: mblack - version: 24.6.0.dev2024120616 + version: 24.6.0.dev2024120705 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120616-release.conda - sha256: ccab714a4e70220ff559e9d0e56232964981196851bf77eeac1c3bf53ab0beb2 - md5: dec7dbfe11abd34b171d290d38adea24 + url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120705-release.conda + sha256: e0ecd940a6053ec0d44e3da2b9d99885efcb38f0ae32b92136155bb5aa252a75 + md5: b801385ef3cbed6f7415ddf938dc182e depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -7088,8 +7089,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130704 - timestamp: 1733502206776 + size: 130737 + timestamp: 1733548613220 - kind: conda name: mdurl version: 0.1.2 @@ -7124,21 +7125,21 @@ packages: timestamp: 1733258822603 - kind: conda name: mojo-jupyter - version: 24.6.0.dev2024120616 + version: 24.6.0.dev2024120705 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120616-release.conda - sha256: d886857cf3c3a53c8a44433bec9b60fc90f9e43b169319bca36ca9daf0369901 - md5: 1420c233cedc5e554c728d5f8b2b1657 + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120705-release.conda + sha256: ff854ead8fa7014dd8ed800998afb01ac9faeec55dfc84bcc2d6d21b38e5a8d1 + md5: ce9ee67733d1ab8c43031b67b475dba8 depends: - - max-core ==24.6.0.dev2024120616 release + - max-core ==24.6.0.dev2024120705 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 11371 - timestamp: 1733502206776 + size: 11370 + timestamp: 1733548613220 - kind: conda name: multidict version: 6.1.0 diff --git a/examples/operators/magic.lock b/examples/operators/magic.lock index 5a0f9a46e1..12a4ba1b83 100644 --- a/examples/operators/magic.lock +++ b/examples/operators/magic.lock @@ -12,8 +12,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.9-py312h178313f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.7.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-hb88c0a9_10.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.0-hecf86a2_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.10.3-hb9d3cd8_0.conda @@ -131,12 +131,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.9.4-hcb278e6_0.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.dev2024120616-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120616-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120616-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120616-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120705-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120705-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.dev2024120616-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120705-release.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/multiprocess-0.70.15-py312h98912ed_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda @@ -229,8 +229,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.9-py312hcc812fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.7.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-hac900a4_10.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.0-h35473ba_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-common-0.10.3-h86ecc28_0.conda @@ -349,12 +349,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.9.4-hd600fc2_0.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.dev2024120616-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120616-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120616-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120616-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120705-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120705-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.dev2024120616-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120705-release.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/multiprocess-0.70.15-py312hdd3e373_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda @@ -446,8 +446,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.9-py312h998013c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.7.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-h9b725a8_10.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.0-h5d7ee29_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.10.3-h5505292_0.conda @@ -558,12 +558,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.9.4-hb7217d7_0.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.dev2024120616-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120616-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120616-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120616-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120705-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120705-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120705-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120705-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.dev2024120616-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120705-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 @@ -820,41 +820,42 @@ packages: timestamp: 1733247158254 - kind: conda name: anyio - version: 4.6.2.post1 + version: 4.7.0 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda - sha256: 4b54b7ce79d818e3cce54ae4d552dba51b7afac160ceecdefd04b3917a37c502 - md5: 688697ec5e9588bdded167d19577625b + url: https://conda.anaconda.org/conda-forge/noarch/anyio-4.7.0-pyhd8ed1ab_0.conda + sha256: 687537ee3af30f8784986bf40cac30e88138770b16e51ca9850c9c23c09aeba1 + md5: c88107912954a983c2caf25f7fd55158 depends: - exceptiongroup >=1.0.2 - idna >=2.8 - python >=3.9 - sniffio >=1.1 - - typing_extensions >=4.1 + - typing_extensions >=4.5 constrains: - - uvloop >=0.21.0b1 - trio >=0.26.1 + - uvloop >=0.21 license: MIT license_family: MIT - size: 109864 - timestamp: 1728935803440 + size: 112730 + timestamp: 1733532678437 - kind: conda name: attrs version: 24.2.0 - build: pyh71513ae_0 + build: pyh71513ae_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda - sha256: 28dba85a7e0f7fb57d7315e13f603d1e41b83c5b88aa2a602596b52c833a2ff8 - md5: 6732fa52eb8e66e5afeb32db8701a791 + url: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_1.conda + sha256: 8488a116dffe204015a90b41982c0270534bd1070f44a00b316d59e4a79ae8c7 + md5: 2018839db45c79654b57a924fcdd27d0 depends: - - python >=3.7 + - python >=3.9 license: MIT license_family: MIT - size: 56048 - timestamp: 1722977241383 + size: 56336 + timestamp: 1733520064905 - kind: conda name: aws-c-auth version: 0.8.0 @@ -5875,76 +5876,76 @@ packages: timestamp: 1733219945697 - kind: conda name: max - version: 24.6.0.dev2024120616 + version: 24.6.0.dev2024120705 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120616-release.conda - sha256: 2338e4ad8e940eee4cf31d6ccfb9605bc3aaa0e2331e3c0f40c1063a0d6f4c58 - md5: 562c33b920321a676acb3fc49c2ddb11 - depends: - - max-core ==24.6.0.dev2024120616 release - - max-python >=24.6.0.dev2024120616,<25.0a0 - - mojo-jupyter ==24.6.0.dev2024120616 release - - mblack ==24.6.0.dev2024120616 release + url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120705-release.conda + sha256: b75fcf4dfbeea5eb4bf1a83b5a4dc1e890aaca5afb87aeea00204d9d43263ab6 + md5: d880e434f1f61e9f7fe35eb5af426762 + depends: + - max-core ==24.6.0.dev2024120705 release + - max-python >=24.6.0.dev2024120705,<25.0a0 + - mojo-jupyter ==24.6.0.dev2024120705 release + - mblack ==24.6.0.dev2024120705 release license: LicenseRef-Modular-Proprietary - size: 9919 - timestamp: 1733502206770 + size: 9922 + timestamp: 1733548613215 - kind: conda name: max-core - version: 24.6.0.dev2024120616 + version: 24.6.0.dev2024120705 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120616-release.conda - sha256: 626f40a00b28c6958272a368b31944d9d62bd57a931910b1e4520d7501c57b61 - md5: 88e589273bf2ae77f80f879adacd234a + url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120705-release.conda + sha256: 1e38d40637ac5faadb1465f7c3ae80077a02fa25773f832c4730bb3f5d285cae + md5: 210eb01e2dc1c01b03d2a817457b895d depends: - - mblack ==24.6.0.dev2024120616 release + - mblack ==24.6.0.dev2024120705 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 247418489 - timestamp: 1733502146971 + size: 247471356 + timestamp: 1733548812210 - kind: conda name: max-core - version: 24.6.0.dev2024120616 + version: 24.6.0.dev2024120705 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120616-release.conda - sha256: af5fcd915dd10f9a72d936fee1b4a32127725a072fb6df41b7a3f43997f3ac3b - md5: 5243c455575512a6061067e3b5d67e0f + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120705-release.conda + sha256: a2e530d128deb23e231c5baf2c89b28fc02879f4608b18415f2cc70604e5ea86 + md5: c036e06aec88105f116ac9b6bfff8720 depends: - - mblack ==24.6.0.dev2024120616 release + - mblack ==24.6.0.dev2024120705 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 251333959 - timestamp: 1733502206769 + size: 251342975 + timestamp: 1733548613213 - kind: conda name: max-core - version: 24.6.0.dev2024120616 + version: 24.6.0.dev2024120705 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120616-release.conda - sha256: 9f051d29fdebf2c33eaa96659e75b06bf2befb17ac6992dc526b71eb4b959fc2 - md5: 99f131bbf681d02fe75d5f9e7dc0ab57 + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120705-release.conda + sha256: dba294806285f1242d3274833451c21ceae2122441177ad870162f18465402cd + md5: 55c2f32ca83e4e21f8ddb5185c8cd263 depends: - - mblack ==24.6.0.dev2024120616 release + - mblack ==24.6.0.dev2024120705 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 211890615 - timestamp: 1733502249826 + size: 211936941 + timestamp: 1733548831297 - kind: conda name: max-python - version: 24.6.0.dev2024120616 + version: 24.6.0.dev2024120705 build: 3.12release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120616-3.12release.conda - sha256: 619cfdba895fe1062b94e9e04109d5c321995c14ce80dd695937fedaeed1430b - md5: aa4c20f7f7f821d9b736c319b9b9d89a + url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120705-3.12release.conda + sha256: 9083a4c9e5e0362a688eeca82b4018fd88cb7a481b15c42e887a3a8bc60f684b + md5: 9b5d9f4c3ce3cd860772c00f7d98e059 depends: - - max-core ==24.6.0.dev2024120616 release + - max-core ==24.6.0.dev2024120705 release - python 3.12.* - pillow - fastapi @@ -5966,18 +5967,18 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 123619079 - timestamp: 1733502146987 + size: 123682860 + timestamp: 1733548812221 - kind: conda name: max-python - version: 24.6.0.dev2024120616 + version: 24.6.0.dev2024120705 build: 3.12release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120616-3.12release.conda - sha256: 1703b8f5e847917b04cc353ea6ce6fdfb4f0e5b053515b0e481b0bed93117a4f - md5: df25189682c30a5259b1ffada686cef2 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120705-3.12release.conda + sha256: 2a30cd49b6468f6f6d76f789ac2ed47f0496e228e06694fdbee7ed757199c63e + md5: 54e13a8164032866ff1f243f931b4ab3 depends: - - max-core ==24.6.0.dev2024120616 release + - max-core ==24.6.0.dev2024120705 release - python 3.12.* - pillow - fastapi @@ -5999,18 +6000,18 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 127361426 - timestamp: 1733502206780 + size: 127403239 + timestamp: 1733548613224 - kind: conda name: max-python - version: 24.6.0.dev2024120616 + version: 24.6.0.dev2024120705 build: 3.12release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120616-3.12release.conda - sha256: 55e016fd1747baa8f15e358d8fe16953282a08b60c64ad6a98cbfdf0229f9d1b - md5: f03ead2bca51c2cd060703fe64ee40da + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120705-3.12release.conda + sha256: 5afdef8316567435191dbb56db99f99a3f1b4d20a4b0132978c89c458916a961 + md5: a4867e539c3f8c25297d0d695b6848b8 depends: - - max-core ==24.6.0.dev2024120616 release + - max-core ==24.6.0.dev2024120705 release - python 3.12.* - pillow - fastapi @@ -6032,17 +6033,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 112339857 - timestamp: 1733502249829 + size: 112378959 + timestamp: 1733548831301 - kind: conda name: mblack - version: 24.6.0.dev2024120616 + version: 24.6.0.dev2024120705 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120616-release.conda - sha256: ccab714a4e70220ff559e9d0e56232964981196851bf77eeac1c3bf53ab0beb2 - md5: dec7dbfe11abd34b171d290d38adea24 + url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120705-release.conda + sha256: e0ecd940a6053ec0d44e3da2b9d99885efcb38f0ae32b92136155bb5aa252a75 + md5: b801385ef3cbed6f7415ddf938dc182e depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -6052,8 +6053,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130704 - timestamp: 1733502206776 + size: 130737 + timestamp: 1733548613220 - kind: conda name: mdurl version: 0.1.2 @@ -6072,21 +6073,21 @@ packages: timestamp: 1733255681319 - kind: conda name: mojo-jupyter - version: 24.6.0.dev2024120616 + version: 24.6.0.dev2024120705 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120616-release.conda - sha256: d886857cf3c3a53c8a44433bec9b60fc90f9e43b169319bca36ca9daf0369901 - md5: 1420c233cedc5e554c728d5f8b2b1657 + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120705-release.conda + sha256: ff854ead8fa7014dd8ed800998afb01ac9faeec55dfc84bcc2d6d21b38e5a8d1 + md5: ce9ee67733d1ab8c43031b67b475dba8 depends: - - max-core ==24.6.0.dev2024120616 release + - max-core ==24.6.0.dev2024120705 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 11371 - timestamp: 1733502206776 + size: 11370 + timestamp: 1733548613220 - kind: conda name: multidict version: 6.1.0 diff --git a/magic.lock b/magic.lock index 1315f9a7a1..4cdf0f7c8e 100644 --- a/magic.lock +++ b/magic.lock @@ -12,8 +12,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.9-py312h178313f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.7.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-hb88c0a9_10.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.0-hecf86a2_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.10.3-hb9d3cd8_0.conda @@ -132,12 +132,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.9.4-hcb278e6_0.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.dev2024120616-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120616-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120616-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120616-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120705-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120705-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.dev2024120616-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120705-release.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/multiprocess-0.70.15-py312h98912ed_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda @@ -230,8 +230,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.9-py312hcc812fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.7.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-hac900a4_10.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.0-h35473ba_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-common-0.10.3-h86ecc28_0.conda @@ -351,12 +351,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.9.4-hd600fc2_0.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.dev2024120616-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120616-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120616-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120616-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120705-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120705-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.dev2024120616-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120705-release.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/multiprocess-0.70.15-py312hdd3e373_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda @@ -448,8 +448,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.9-py312h998013c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.7.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-h9b725a8_10.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.0-h5d7ee29_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.10.3-h5505292_0.conda @@ -561,12 +561,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.9.4-hb7217d7_0.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.dev2024120616-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120616-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120616-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120616-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120705-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120705-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120705-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120705-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.dev2024120616-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120705-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 @@ -823,41 +823,42 @@ packages: timestamp: 1733247158254 - kind: conda name: anyio - version: 4.6.2.post1 + version: 4.7.0 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda - sha256: 4b54b7ce79d818e3cce54ae4d552dba51b7afac160ceecdefd04b3917a37c502 - md5: 688697ec5e9588bdded167d19577625b + url: https://conda.anaconda.org/conda-forge/noarch/anyio-4.7.0-pyhd8ed1ab_0.conda + sha256: 687537ee3af30f8784986bf40cac30e88138770b16e51ca9850c9c23c09aeba1 + md5: c88107912954a983c2caf25f7fd55158 depends: - exceptiongroup >=1.0.2 - idna >=2.8 - python >=3.9 - sniffio >=1.1 - - typing_extensions >=4.1 + - typing_extensions >=4.5 constrains: - - uvloop >=0.21.0b1 - trio >=0.26.1 + - uvloop >=0.21 license: MIT license_family: MIT - size: 109864 - timestamp: 1728935803440 + size: 112730 + timestamp: 1733532678437 - kind: conda name: attrs version: 24.2.0 - build: pyh71513ae_0 + build: pyh71513ae_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda - sha256: 28dba85a7e0f7fb57d7315e13f603d1e41b83c5b88aa2a602596b52c833a2ff8 - md5: 6732fa52eb8e66e5afeb32db8701a791 + url: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_1.conda + sha256: 8488a116dffe204015a90b41982c0270534bd1070f44a00b316d59e4a79ae8c7 + md5: 2018839db45c79654b57a924fcdd27d0 depends: - - python >=3.7 + - python >=3.9 license: MIT license_family: MIT - size: 56048 - timestamp: 1722977241383 + size: 56336 + timestamp: 1733520064905 - kind: conda name: aws-c-auth version: 0.8.0 @@ -5893,76 +5894,76 @@ packages: timestamp: 1733219945697 - kind: conda name: max - version: 24.6.0.dev2024120616 + version: 24.6.0.dev2024120705 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120616-release.conda - sha256: 2338e4ad8e940eee4cf31d6ccfb9605bc3aaa0e2331e3c0f40c1063a0d6f4c58 - md5: 562c33b920321a676acb3fc49c2ddb11 - depends: - - max-core ==24.6.0.dev2024120616 release - - max-python >=24.6.0.dev2024120616,<25.0a0 - - mojo-jupyter ==24.6.0.dev2024120616 release - - mblack ==24.6.0.dev2024120616 release + url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120705-release.conda + sha256: b75fcf4dfbeea5eb4bf1a83b5a4dc1e890aaca5afb87aeea00204d9d43263ab6 + md5: d880e434f1f61e9f7fe35eb5af426762 + depends: + - max-core ==24.6.0.dev2024120705 release + - max-python >=24.6.0.dev2024120705,<25.0a0 + - mojo-jupyter ==24.6.0.dev2024120705 release + - mblack ==24.6.0.dev2024120705 release license: LicenseRef-Modular-Proprietary - size: 9919 - timestamp: 1733502206770 + size: 9922 + timestamp: 1733548613215 - kind: conda name: max-core - version: 24.6.0.dev2024120616 + version: 24.6.0.dev2024120705 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120616-release.conda - sha256: 626f40a00b28c6958272a368b31944d9d62bd57a931910b1e4520d7501c57b61 - md5: 88e589273bf2ae77f80f879adacd234a + url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120705-release.conda + sha256: 1e38d40637ac5faadb1465f7c3ae80077a02fa25773f832c4730bb3f5d285cae + md5: 210eb01e2dc1c01b03d2a817457b895d depends: - - mblack ==24.6.0.dev2024120616 release + - mblack ==24.6.0.dev2024120705 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 247418489 - timestamp: 1733502146971 + size: 247471356 + timestamp: 1733548812210 - kind: conda name: max-core - version: 24.6.0.dev2024120616 + version: 24.6.0.dev2024120705 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120616-release.conda - sha256: af5fcd915dd10f9a72d936fee1b4a32127725a072fb6df41b7a3f43997f3ac3b - md5: 5243c455575512a6061067e3b5d67e0f + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120705-release.conda + sha256: a2e530d128deb23e231c5baf2c89b28fc02879f4608b18415f2cc70604e5ea86 + md5: c036e06aec88105f116ac9b6bfff8720 depends: - - mblack ==24.6.0.dev2024120616 release + - mblack ==24.6.0.dev2024120705 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 251333959 - timestamp: 1733502206769 + size: 251342975 + timestamp: 1733548613213 - kind: conda name: max-core - version: 24.6.0.dev2024120616 + version: 24.6.0.dev2024120705 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120616-release.conda - sha256: 9f051d29fdebf2c33eaa96659e75b06bf2befb17ac6992dc526b71eb4b959fc2 - md5: 99f131bbf681d02fe75d5f9e7dc0ab57 + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120705-release.conda + sha256: dba294806285f1242d3274833451c21ceae2122441177ad870162f18465402cd + md5: 55c2f32ca83e4e21f8ddb5185c8cd263 depends: - - mblack ==24.6.0.dev2024120616 release + - mblack ==24.6.0.dev2024120705 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 211890615 - timestamp: 1733502249826 + size: 211936941 + timestamp: 1733548831297 - kind: conda name: max-python - version: 24.6.0.dev2024120616 + version: 24.6.0.dev2024120705 build: 3.12release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120616-3.12release.conda - sha256: 619cfdba895fe1062b94e9e04109d5c321995c14ce80dd695937fedaeed1430b - md5: aa4c20f7f7f821d9b736c319b9b9d89a + url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120705-3.12release.conda + sha256: 9083a4c9e5e0362a688eeca82b4018fd88cb7a481b15c42e887a3a8bc60f684b + md5: 9b5d9f4c3ce3cd860772c00f7d98e059 depends: - - max-core ==24.6.0.dev2024120616 release + - max-core ==24.6.0.dev2024120705 release - python 3.12.* - pillow - fastapi @@ -5984,18 +5985,18 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 123619079 - timestamp: 1733502146987 + size: 123682860 + timestamp: 1733548812221 - kind: conda name: max-python - version: 24.6.0.dev2024120616 + version: 24.6.0.dev2024120705 build: 3.12release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120616-3.12release.conda - sha256: 1703b8f5e847917b04cc353ea6ce6fdfb4f0e5b053515b0e481b0bed93117a4f - md5: df25189682c30a5259b1ffada686cef2 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120705-3.12release.conda + sha256: 2a30cd49b6468f6f6d76f789ac2ed47f0496e228e06694fdbee7ed757199c63e + md5: 54e13a8164032866ff1f243f931b4ab3 depends: - - max-core ==24.6.0.dev2024120616 release + - max-core ==24.6.0.dev2024120705 release - python 3.12.* - pillow - fastapi @@ -6017,18 +6018,18 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 127361426 - timestamp: 1733502206780 + size: 127403239 + timestamp: 1733548613224 - kind: conda name: max-python - version: 24.6.0.dev2024120616 + version: 24.6.0.dev2024120705 build: 3.12release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120616-3.12release.conda - sha256: 55e016fd1747baa8f15e358d8fe16953282a08b60c64ad6a98cbfdf0229f9d1b - md5: f03ead2bca51c2cd060703fe64ee40da + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120705-3.12release.conda + sha256: 5afdef8316567435191dbb56db99f99a3f1b4d20a4b0132978c89c458916a961 + md5: a4867e539c3f8c25297d0d695b6848b8 depends: - - max-core ==24.6.0.dev2024120616 release + - max-core ==24.6.0.dev2024120705 release - python 3.12.* - pillow - fastapi @@ -6050,17 +6051,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 112339857 - timestamp: 1733502249829 + size: 112378959 + timestamp: 1733548831301 - kind: conda name: mblack - version: 24.6.0.dev2024120616 + version: 24.6.0.dev2024120705 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120616-release.conda - sha256: ccab714a4e70220ff559e9d0e56232964981196851bf77eeac1c3bf53ab0beb2 - md5: dec7dbfe11abd34b171d290d38adea24 + url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120705-release.conda + sha256: e0ecd940a6053ec0d44e3da2b9d99885efcb38f0ae32b92136155bb5aa252a75 + md5: b801385ef3cbed6f7415ddf938dc182e depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -6070,8 +6071,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130704 - timestamp: 1733502206776 + size: 130737 + timestamp: 1733548613220 - kind: conda name: mdurl version: 0.1.2 @@ -6090,21 +6091,21 @@ packages: timestamp: 1733255681319 - kind: conda name: mojo-jupyter - version: 24.6.0.dev2024120616 + version: 24.6.0.dev2024120705 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120616-release.conda - sha256: d886857cf3c3a53c8a44433bec9b60fc90f9e43b169319bca36ca9daf0369901 - md5: 1420c233cedc5e554c728d5f8b2b1657 + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120705-release.conda + sha256: ff854ead8fa7014dd8ed800998afb01ac9faeec55dfc84bcc2d6d21b38e5a8d1 + md5: ce9ee67733d1ab8c43031b67b475dba8 depends: - - max-core ==24.6.0.dev2024120616 release + - max-core ==24.6.0.dev2024120705 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 11371 - timestamp: 1733502206776 + size: 11370 + timestamp: 1733548613220 - kind: conda name: multidict version: 6.1.0 From 770ab7905f9d271cd2f3b6a4eaa65be0e6e6154c Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Fri, 6 Dec 2024 22:30:15 -0800 Subject: [PATCH 053/509] [mojo-lang] Fix bugs related to SRValue -> ref conversion. This fixes https://github.com/modularml/mojo/issues/3830, a collection of issues handling emission of SRValues to argument conventions that require a memory argument. In these cases, we need to emit the value to memory and re-infer. This was completely broken for indirect calls, and didn't handle the case of direct calls that failed to re-infer. MODULAR_ORIG_COMMIT_REV_ID: 172c9efe1ca9083e50f1f58629d0b990bb3090cd --- docs/changelog.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/docs/changelog.md b/docs/changelog.md index 5398fd44c6..3673d58fd7 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -635,6 +635,9 @@ what we publish. - [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. From 920ee3500507f026d6c70e1b287775779279c84b Mon Sep 17 00:00:00 2001 From: Jack Clayton Date: Sat, 7 Dec 2024 09:11:39 -1000 Subject: [PATCH 054/509] [mojo-stdlib] add implicit decorators where required Extra implicit decorators required for making the explicit constructor filtering more strict. MODULAR_ORIG_COMMIT_REV_ID: 82617a0e6e0de514abeda843bdadc48d42fdbbe3 --- stdlib/src/builtin/dtype.mojo | 10 +++++++++ stdlib/src/builtin/object.mojo | 5 ++++- stdlib/src/collections/string.mojo | 34 +++++++++++++++++++++++++++++- 3 files changed, 47 insertions(+), 2 deletions(-) diff --git a/stdlib/src/builtin/dtype.mojo b/stdlib/src/builtin/dtype.mojo index 1ed5dd09c6..b8a7dff5d6 100644 --- a/stdlib/src/builtin/dtype.mojo +++ b/stdlib/src/builtin/dtype.mojo @@ -155,6 +155,16 @@ struct DType( """ self = other + @always_inline + @implicit + fn __init__(out self, value: Self.type): + """Construct a DType from MLIR dtype. + + Args: + value: The MLIR dtype. + """ + self.value = value + @staticmethod fn _from_str(str: String) -> DType: """Construct a DType from a string. diff --git a/stdlib/src/builtin/object.mojo b/stdlib/src/builtin/object.mojo index 21b345b89d..fce05d2476 100644 --- a/stdlib/src/builtin/object.mojo +++ b/stdlib/src/builtin/object.mojo @@ -320,6 +320,7 @@ struct _ObjectImpl( self.value = Self.type(value) @always_inline + @implicit fn __init__[dt: DType](mut self, value: SIMD[dt, 1]): @parameter if dt.is_integral(): @@ -785,6 +786,7 @@ struct object( self._value = value @always_inline + @implicit fn __init__[dt: DType](mut self, value: SIMD[dt, 1]): """Initializes the object with a generic scalar value. If the scalar value type is bool, it is converted to a boolean. Otherwise, it is @@ -842,6 +844,7 @@ struct object( self._value = impl @always_inline + @implicit fn __init__[*Ts: CollectionElement](mut self, value: ListLiteral[*Ts]): """Initializes the object from a list literal. @@ -1861,7 +1864,7 @@ struct object( var impl = _ImmutableString(UnsafePointer[UInt8].alloc(1), 1) var char = self._value.get_as_string().data[index] impl.data.init_pointee_move(char) - return _ObjectImpl(impl) + return object(impl) return self._value.get_list_element(i._value.get_as_int().value) @always_inline diff --git a/stdlib/src/collections/string.mojo b/stdlib/src/collections/string.mojo index 90ed9b5cd1..86449179a3 100644 --- a/stdlib/src/collections/string.mojo +++ b/stdlib/src/collections/string.mojo @@ -785,7 +785,8 @@ struct String( @always_inline @implicit fn __init__(out self, owned impl: List[UInt8, *_]): - """Construct a string from a buffer of bytes. + """Construct a string from a buffer of bytes without copying the + allocated data. The buffer must be terminated with a null byte: @@ -815,6 +816,37 @@ struct String( ptr=impl.steal_data(), length=size, capacity=capacity ) + @always_inline + @implicit + fn __init__(out self, impl: Self._buffer_type): + """Construct a string from a buffer of bytes, copying the allocated + data. Use the transfer operator ^ to avoid the copy. + + The buffer must be terminated with a null byte: + + ```mojo + var buf = List[UInt8]() + buf.append(ord('H')) + buf.append(ord('i')) + buf.append(0) + var hi = String(buf) + ``` + + Args: + impl: The buffer. + """ + debug_assert( + len(impl) > 0 and impl[-1] == 0, + "expected last element of String buffer to be null terminator", + ) + # We make a backup because steal_data() will clear size and capacity. + var size = impl.size + debug_assert( + impl[size - 1] == 0, + "expected last element of String buffer to be null terminator", + ) + self._buffer = impl + @always_inline fn __init__(out self): """Construct an uninitialized string.""" From 5efd510fc4320c3b9caec771844fa8f19ebe2a0f Mon Sep 17 00:00:00 2001 From: Jack Clayton Date: Sat, 7 Dec 2024 13:46:32 -1000 Subject: [PATCH 055/509] [mojo-lang] Diagnose more implicit conversion without `@implicit` decorator Now checks for @implicit decorator in all scenarios when callable is CallSyntax::kImplicitConvert. This previously wasn't happening in instances like var x: Foo = 42, self.foo = 42, and returning values. This fixes https://github.com/modularml/mojo/issues/3828 and Fixes MOCO-1485 MODULAR_ORIG_COMMIT_REV_ID: 3a6b1ba1b5d7d3ff2ac7ddc2e36dac70cc5455cf --- examples/notebooks/BoolMLIR.ipynb | 17 +- examples/notebooks/RayTracing.ipynb | 1994 ++++++++++++++------------- 2 files changed, 1009 insertions(+), 1002 deletions(-) diff --git a/examples/notebooks/BoolMLIR.ipynb b/examples/notebooks/BoolMLIR.ipynb index 355dc77909..514770e9e8 100644 --- a/examples/notebooks/BoolMLIR.ipynb +++ b/examples/notebooks/BoolMLIR.ipynb @@ -126,7 +126,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -227,7 +227,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": null, "metadata": { "tags": [] }, @@ -239,6 +239,7 @@ "\n", " # ...\n", "\n", + " @implicit\n", " fn __init__(out self, value: __mlir_type.i1):\n", " self.value = value" ] @@ -288,7 +289,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": null, "metadata": { "tags": [] }, @@ -306,6 +307,7 @@ " fn __init__(out self):\n", " self = OurFalse\n", "\n", + " @implicit\n", " fn __init__(out self, value: __mlir_type.i1):\n", " self.value = value" ] @@ -353,7 +355,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": null, "metadata": { "tags": [] }, @@ -369,6 +371,7 @@ "\n", " # ...\n", "\n", + " @implicit\n", " fn __init__(out self, value: __mlir_type.i1):\n", " self.value = value\n", "\n", @@ -429,7 +432,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -441,6 +444,7 @@ "struct OurBool:\n", " var value: __mlir_type.i1\n", "\n", + " @implicit\n", " fn __init__(out self, value: __mlir_type.i1):\n", " self.value = value\n", "\n", @@ -495,7 +499,7 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -507,6 +511,7 @@ "struct OurBool:\n", " var value: __mlir_type.i1\n", "\n", + " @implicit\n", " fn __init__(out self, value: __mlir_type.i1):\n", " self.value = value\n", "\n", diff --git a/examples/notebooks/RayTracing.ipynb b/examples/notebooks/RayTracing.ipynb index 66a768da6e..ea37cea474 100644 --- a/examples/notebooks/RayTracing.ipynb +++ b/examples/notebooks/RayTracing.ipynb @@ -1,1020 +1,1022 @@ { - "cells": [ - { - "cell_type": "raw", - "id": "7a924a43", - "metadata": {}, - "source": [ - "---\n", - "title: Ray tracing in Mojo\n", - "description: Learn how to draw 3D graphics with ray-traced lighting using Mojo.\n", - "website:\n", - " open-graph:\n", - " image: /static/images/mojo-social-card.png\n", - " twitter-card:\n", - " image: /static/images/mojo-social-card.png\n", - "---" - ] - }, - { - "cell_type": "markdown", - "id": "e48ca293", - "metadata": {}, - "source": [ - "[//]: # REMOVE_FOR_WEBSITE\n", - "*Copyright 2023 Modular, Inc: Licensed under the Apache License v2.0 with LLVM Exceptions.*" - ] - }, - { - "cell_type": "markdown", - "id": "214584ac", - "metadata": {}, - "source": [ - "[//]: # REMOVE_FOR_WEBSITE\n", - "# Ray tracing in Mojo" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "id": "c4edb2c9-5109-4e00-98c0-3aa92dbca7d1", - "metadata": {}, - "source": [ - "This tutorial about [ray\n", - "tracing](https://en.wikipedia.org/wiki/Ray_tracing_(graphics)) is based on the\n", - "popular tutorial [Understandable RayTracing in\n", - "C++](https://github.com/ssloy/tinyraytracer/wiki/Part-1:-understandable-raytracing).\n", - "The mathematical explanations are well described in that tutorial, so we'll\n", - "just point you to the appropriate sections for reference as we implement a\n", - "basic ray tracer in Mojo." - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "id": "fbd4aa63-a178-41f2-ad66-b017c1c69d2a", - "metadata": {}, - "source": [ - "## Step 1: Basic definitions\n", - "\n", - "We'll start by defining a `Vec3f` struct, which will use to represent a vector\n", - "in 3D space as well as RGB pixels. We'll use a `SIMD` representation for our\n", - "vector to enable vectorized operations. The `SIMD` type is a fixed-size vector,\n", - "and its size must be a power of 2. So we'll use a size of 4 and always pad the\n", - "underlying storage with a 0." - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "id": "78a07829-05bc-4a67-8ccc-f2e1537c478c", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "from math import isqrt\n", - "\n", - "\n", - "@register_passable(\"trivial\")\n", - "struct Vec3f:\n", - " var data: SIMD[DType.float32, 4]\n", - "\n", - " @always_inline\n", - " fn __init__(out self, x: Float32, y: Float32, z: Float32):\n", - " self.data = SIMD[DType.float32, 4](x, y, z, 0)\n", - "\n", - " @always_inline\n", - " fn __init__(out self, data: SIMD[DType.float32, 4]):\n", - " self.data = data\n", - "\n", - " @always_inline\n", - " @staticmethod\n", - " fn zero() -> Vec3f:\n", - " return Vec3f(0, 0, 0)\n", - "\n", - " @always_inline\n", - " fn __sub__(self, other: Vec3f) -> Vec3f:\n", - " return self.data - other.data\n", - "\n", - " @always_inline\n", - " fn __add__(self, other: Vec3f) -> Vec3f:\n", - " return self.data + other.data\n", - "\n", - " @always_inline\n", - " fn __matmul__(self, other: Vec3f) -> Float32:\n", - " return (self.data * other.data).reduce_add()\n", - "\n", - " @always_inline\n", - " fn __mul__(self, k: Float32) -> Vec3f:\n", - " return self.data * k\n", - "\n", - " @always_inline\n", - " fn __neg__(self) -> Vec3f:\n", - " return self.data * -1.0\n", - "\n", - " @always_inline\n", - " fn __getitem__(self, idx: Int) -> SIMD[DType.float32, 1]:\n", - " return self.data[idx]\n", - "\n", - " @always_inline\n", - " fn cross(self, other: Vec3f) -> Vec3f:\n", - " var self_zxy = self.data.shuffle[2, 0, 1, 3]()\n", - " var other_zxy = other.data.shuffle[2, 0, 1, 3]()\n", - " return (self_zxy * other.data - self.data * other_zxy).shuffle[\n", - " 2, 0, 1, 3\n", - " ]()\n", - "\n", - " @always_inline\n", - " fn normalize(self) -> Vec3f:\n", - " return self.data * isqrt(self @ self)\n" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "id": "2619eb1b-103b-4453-9725-4480e388452e", - "metadata": {}, - "source": [ - "We now define our `Image` struct, which will store the RGB pixels of our\n", - "images. It also contains a method to convert this Mojo struct into a NumPy\n", - "image, which will be used for implementing a straightforward display\n", - "mechanism. We will also implement a function for loading PNG files from disk." - ] - }, - { - "cell_type": "markdown", - "id": "acd55d71", - "metadata": {}, - "source": [ - "First install the required libraries:" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "53266408", - "metadata": {}, - "outputs": [], - "source": [ - "%%python\n", - "from importlib.util import find_spec\n", - "import shutil\n", - "import subprocess\n", - "\n", - "fix = \"\"\"\n", - "-------------------------------------------------------------------------\n", - "fix following the steps here:\n", - " https://github.com/modularml/mojo/issues/1085#issuecomment-1771403719\n", - "-------------------------------------------------------------------------\n", - "\"\"\"\n", - "\n", - "def install_if_missing(name: str):\n", - " if find_spec(name):\n", - " return\n", - "\n", - " print(f\"{name} not found, installing...\")\n", - " try:\n", - " if shutil.which('python3'): python = \"python3\"\n", - " elif shutil.which('python'): python = \"python\"\n", - " else: raise (\"python not on path\" + fix)\n", - " subprocess.check_call([python, \"-m\", \"pip\", \"install\", name])\n", - " except:\n", - " raise ImportError(f\"{name} not found\" + fix)\n", - "\n", - "install_if_missing(\"numpy\")\n", - "install_if_missing(\"matplotlib\")\n" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "ca218d22-0578-42af-a906-7f15a91c5bec", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "from python import Python\n", - "from python import PythonObject\n", - "from memory import UnsafePointer\n", - "\n", - "struct Image:\n", - " # reference count used to make the object efficiently copyable\n", - " var rc: UnsafePointer[Int]\n", - " # the two dimensional image is represented as a flat array\n", - " var pixels: UnsafePointer[Vec3f]\n", - " var height: Int\n", - " var width: Int\n", - "\n", - " fn __init__(out self, height: Int, width: Int):\n", - " self.height = height\n", - " self.width = width\n", - " self.pixels = UnsafePointer[Vec3f].alloc(self.height * self.width)\n", - " self.rc = UnsafePointer[Int].alloc(1)\n", - " self.rc[] = 1\n", - "\n", - " fn __copyinit__(out self, other: Self):\n", - " other._inc_rc()\n", - " self.pixels = other.pixels\n", - " self.rc = other.rc\n", - " self.height = other.height\n", - " self.width = other.width\n", - "\n", - " fn __del__(owned self):\n", - " self._dec_rc()\n", - "\n", - " fn _dec_rc(self):\n", - " if self.rc[] > 1:\n", - " self.rc[] -= 1\n", - " return\n", - " self._free()\n", - "\n", - " fn _inc_rc(self):\n", - " self.rc[] += 1\n", - "\n", - " fn _free(self):\n", - " self.rc.free()\n", - " self.pixels.free()\n", - "\n", - " @always_inline\n", - " fn set(self, row: Int, col: Int, value: Vec3f) -> None:\n", - " self.pixels[self._pos_to_index(row, col)] = value\n", - "\n", - " @always_inline\n", - " fn _pos_to_index(self, row: Int, col: Int) -> Int:\n", - " # Convert a (rol, col) position into an index in the underlying linear storage\n", - " return row * self.width + col\n", - "\n", - " def to_numpy_image(self) -> PythonObject:\n", - " var np = Python.import_module(\"numpy\")\n", - " var plt = Python.import_module(\"matplotlib.pyplot\")\n", - "\n", - " var np_image = np.zeros((self.height, self.width, 3), np.float32)\n", - "\n", - " # We use raw pointers to efficiently copy the pixels to the numpy array\n", - " var out_pointer = np_image.__array_interface__[\"data\"][0].unsafe_get_as_pointer[DType.float32]()\n", - " var in_pointer = self.pixels.bitcast[Float32]()\n", - "\n", - " for row in range(self.height):\n", - " for col in range(self.width):\n", - " var index = self._pos_to_index(row, col)\n", - " for dim in range(3):\n", - " out_pointer[index * 3 + dim] = in_pointer[index * 4 + dim]\n", - "\n", - " return np_image\n", - "\n", - "\n", - "def load_image(fname: String) -> Image:\n", - " var np = Python.import_module(\"numpy\")\n", - " var plt = Python.import_module(\"matplotlib.pyplot\")\n", - "\n", - " var np_image = plt.imread(fname)\n", - " var rows = int(np_image.shape[0])\n", - " var cols = int(np_image.shape[1])\n", - " var image = Image(rows, cols)\n", - "\n", - " var in_pointer = np_image.__array_interface__[\"data\"][0].unsafe_get_as_pointer[DType.float32]()\n", - " var out_pointer = image.pixels.bitcast[Float32]()\n", - "\n", - " for row in range(rows):\n", - " for col in range(cols):\n", - " var index = image._pos_to_index(row, col)\n", - " for dim in range(3):\n", - " out_pointer[index * 4 + dim] = in_pointer[index * 3 + dim]\n", - " return image\n" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "id": "7a7dbe6f-f35f-42c5-ad37-b7400f6262f8", - "metadata": {}, - "source": [ - "We then add a function for quickly displaying an `Image` into the notebook. Our\n", - "Python interop comes in quite handy." - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "9a3a8e81-7500-439b-a8d2-8e71ceea3e8b", - "metadata": {}, - "outputs": [], - "source": [ - "def render(image: Image):\n", - " np = Python.import_module(\"numpy\")\n", - " plt = Python.import_module(\"matplotlib.pyplot\")\n", - " colors = Python.import_module(\"matplotlib.colors\")\n", - " dpi = 32\n", - " fig = plt.figure(1, [image.width // 10, image.height // 10], dpi)\n", - "\n", - " plt.imshow(image.to_numpy_image())\n", - " plt.axis(\"off\")\n", - " plt.show()\n" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "id": "5f42f174-d7d9-4f6c-9b4e-d0d586f8f5ec", - "metadata": {}, - "source": [ - "Finally, we test all our code so far with a simple image, which is the one\n", - "rendered in the [Step 1 of the C++\n", - "tutorial](https://github.com/ssloy/tinyraytracer/wiki/Part-1:-understandable-raytracing#step-1-write-an-image-to-the-disk)." - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "id": "52005588-38e7-4ef0-affe-6d063b9bf9b7", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAd0AAAFnCAYAAADjbJN9AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8pXeV/AAAACXBIWXMAAATsAAAE7AGKbv1yAAAGG0lEQVR4nO3ZwWoCQRRFQVv8/19+LtyMILjyTMtUbUICCWZ1uP3WzMwNAPi5+9kfAACu4nH8Zq11+ObD108/+/Z1x9/xmfb4+zt+Jv/zHr/z739/x890xf95o9+Z9XpUtnQBIPK+dM/6FABwAZYuAEQsXQCIiC4ARDwvA0DE0gWAiOgCQER0ASDipgsAEUsXACKiCwAR0QWAiJsuAEQsXQCIiC4ARDwvA0DE0gWAiOgCQER0ASDipgsAEUsXACKiCwAR0QWAiJsuAEQsXQCIiC4ARDwvA0DE0gWAiOgCQER0ASDipgsAEUsXACKiCwAR0QWAiJsuAEQsXQCIWLoAELF0ASAiugAQEV0AiLjpAkDE0gWAiOgCQMTzMgBELF0AiIguAEREFwAibroAELF0ASAiugAQEV0AiLjpAkDE0gWAiOgCQMTzMgBELF0AiIguAEREFwAibroAELF0ASAiugAQEV0AiLjpAkDE0gWAiOgCQMTzMgBELF0AiIguAEREFwAibroAELF0ASAiugAQEV0AiLjpAkDE0gWAiOgCQMTzMgBELF0AiIguAEREFwAibroAELF0ASAiugAQEV0AiLjpAkDE0gWAiOgCQMTzMgBELF0AiIguAEREFwAibroAELF0ASAiugAQ8bwMABFLFwAiogsAEc/LABCxdAEgIroAEBFdAIi46QJAxNIFgIjoAkDE8zIARCxdAIiILgBERBcAIm66ABCxdAEgIroAEBFdAIi46QJAxNIFgIjoAkDE8zIARCxdAIiILgBERBcAIm66ABCxdAEgIroAEPG8DAARSxcAIqILABHRBYCImy4ARCxdAIiILgBERBcAIm66ABCxdAEgIroAEPG8DAARSxcAIqILABHRBYCImy4ARCxdAIiILgBERBcAIm66ABCxdAEgIroAEPG8DAARSxcAIqILABHRBYCImy4ARCxdAIiILgBERBcAIm66ABCxdAEgYukCQMTSBYCI6AJARHQBIOKmCwARSxcAIqILABHPywAQsXQBICK6ABARXQCIuOkCQMTSBYCI6AJARHQBIOKmCwARSxcAIqILABHPywAQsXQBICK6ABARXQCIuOkCQMTSBYCI6AJARHQBIOKmCwARSxcAIqILABHPywAQsXQBICK6ABARXQCIuOkCQMTSBYCI6AJARHQBIOKmCwARSxcAIqILABHPywAQsXQBICK6ABARXQCIuOkCQMTSBYCI6AJARHQBIOKmCwARSxcAIqILABHPywAQsXQBICK6ABARXQCIuOkCQMTSBYCI6AJAxPMyAEQsXQCIiC4ARDwvA0DE0gWAiOgCQER0ASDipgsAEUsXACKiCwARz8sAELF0ASAiugAQEV0AiLjpAkDE0gWAiOgCQER0ASDipgsAEUsXACKiCwARz8sAELF0ASAiugAQEV0AiLjpAkDE0gWAiOgCQMTzMgBELF0AiIguAEREFwAibroAELF0ASAiugAQEV0AiLjpAkDE0gWAiOgCQMTzMgBELF0AiIguAEREFwAibroAELF0ASAiugAQEV0AiLjpAkDE0gWAiOgCQMTzMgBELF0AiIguAEREFwAibroAELF0ASAiugAQEV0AiLjpAkDE0gWAiKULABFLFwAiogsAEdEFgIibLgBELF0AiIguAEQ8LwNAxNIFgIjoAkBEdAEg4qYLABFLFwAiogsAEdEFgIibLgBELF0AiIguAEQ8LwNAxNIFgIjoAkBEdAEg4qYLABFLFwAiogsAEdEFgIibLgBELF0AiIguAEQ8LwNAxNIFgIjoAkBEdAEg4qYLABFLFwAiogsAEdEFgIibLgBELF0AiIguAEQ8LwNAxNIFgIjoAkBEdAEg4qYLABFLFwAiogsAEdEFgIibLgBELF0AiIguAEQ8LwNAxNIFgIjoAkBEdAEg4qYLABFLFwAiogsAEc/LABCxdAEgIroAEPG8DAARSxcAIqILABHRBYCImy4ARCxdAIiILgBEPC8DQMTSBYCI6AJARHQBIOKmCwARSxcAIqILABHRBYCImy4ARCxdAIiILgBEPC8DQGTNzJz9IQDgCixdAIiILgBEnv7cEL5KaxYBAAAAAElFTkSuQmCC" - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n" - ] - } - ], - "source": [ - "var image = Image(192, 256)\n", - "\n", - "for row in range(image.height):\n", - " for col in range(image.width):\n", - " image.set(\n", - " row,\n", - " col,\n", - " Vec3f(Float32(row) / image.height, Float32(col) / image.width, 0),\n", - " )\n", - "\n", - "render(image)\n" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "id": "ef3206b4-0bbb-4108-a592-f748843e5d3d", - "metadata": {}, - "source": [ - "## Step 2: Ray tracing\n", - "\n", - "Now we'll perform ray tracing from a camera into a scene with a sphere. Before\n", - "reading the code below, we suggest you read more about how this works\n", - "conceptually from [Step 2 of the C++\n", - "tutorial](https://github.com/ssloy/tinyraytracer/wiki/Part-1:-understandable-raytracing#step-2-the-crucial-one-ray-tracing)." - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "id": "778d8339-5b19-47ee-bdc6-a08e4ec5094c", - "metadata": {}, - "source": [ - "We first define the `Material` and `Sphere` structs, which are the new data\n", - "structures we'll need." - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "id": "1c4a79de-0b65-48ac-97c9-187b74b96b9f", - "metadata": {}, - "outputs": [], - "source": [ - "from math import sqrt\n", - "\n", - "@register_passable(\"trivial\")\n", - "struct Material:\n", - " var color: Vec3f\n", - " var albedo: Vec3f\n", - " var specular_component: Float32\n", - "\n", - " fn __init__(out self, color: Vec3f, albedo: Vec3f = Vec3f(0, 0, 0),\n", - " specular_component: Float32 = 0):\n", - " self.color = color\n", - " self.albedo = albedo\n", - " self.specular_component = specular_component\n", - "\n", - "alias W = 1024\n", - "alias H = 768\n", - "alias bg_color = Vec3f(0.02, 0.02, 0.02)\n", - "var shiny_yellow = Material(Vec3f(0.95, 0.95, 0.4), Vec3f(0.7, 0.6, 0), 30.0)\n", - "var green_rubber = Material(Vec3f( 0.3, 0.7, 0.3), Vec3f(0.9, 0.1, 0), 1.0)\n", - "\n", - "\n", - "@value\n", - "@register_passable(\"trivial\")\n", - "struct Sphere(CollectionElement):\n", - " var center: Vec3f\n", - " var radius: Float32\n", - " var material: Material\n", - "\n", - " @always_inline\n", - " fn intersects(self, orig: Vec3f, dir: Vec3f, mut dist: Float32) -> Bool:\n", - " \"\"\"This method returns True if a given ray intersects this sphere.\n", - " And if it does, it writes in the `dist` parameter the distance to the\n", - " origin of the ray.\n", - " \"\"\"\n", - " var L = orig - self.center\n", - " var a = dir @ dir\n", - " var b = 2 * (dir @ L)\n", - " var c = L @ L - self.radius * self.radius\n", - " var discriminant = b * b - 4 * a * c\n", - " if discriminant < 0:\n", - " return False\n", - " if discriminant == 0:\n", - " dist = -b / 2 * a\n", - " return True\n", - " var q = -0.5 * (b + sqrt(discriminant)) if b > 0 else -0.5 * (\n", - " b - sqrt(discriminant)\n", - " )\n", - " var t0 = q / a\n", - " var t1 = c / q\n", - " if t0 > t1:\n", - " t0 = t1\n", - " if t0 < 0:\n", - " t0 = t1\n", - " if t0 < 0:\n", - " return False\n", - "\n", - " dist = t0\n", - " return True\n" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "id": "e5ed8e76-efc1-4905-90ea-4cad6df0c553", - "metadata": {}, - "source": [ - "We then define a `cast_ray` method, which will be used to figure out the color\n", - "of a particular pixel in the image we'll produce. It basically works by\n", - "identifying whether this ray intersects the sphere or not." - ] - }, + "cells": [ + { + "cell_type": "raw", + "id": "7a924a43", + "metadata": {}, + "source": [ + "---\n", + "title: Ray tracing in Mojo\n", + "description: Learn how to draw 3D graphics with ray-traced lighting using Mojo.\n", + "website:\n", + " open-graph:\n", + " image: /static/images/mojo-social-card.png\n", + " twitter-card:\n", + " image: /static/images/mojo-social-card.png\n", + "---" + ] + }, + { + "cell_type": "markdown", + "id": "e48ca293", + "metadata": {}, + "source": [ + "[//]: # REMOVE_FOR_WEBSITE\n", + "*Copyright 2023 Modular, Inc: Licensed under the Apache License v2.0 with LLVM Exceptions.*" + ] + }, + { + "cell_type": "markdown", + "id": "214584ac", + "metadata": {}, + "source": [ + "[//]: # REMOVE_FOR_WEBSITE\n", + "# Ray tracing in Mojo" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "c4edb2c9-5109-4e00-98c0-3aa92dbca7d1", + "metadata": {}, + "source": [ + "This tutorial about [ray\n", + "tracing](https://en.wikipedia.org/wiki/Ray_tracing_(graphics)) is based on the\n", + "popular tutorial [Understandable RayTracing in\n", + "C++](https://github.com/ssloy/tinyraytracer/wiki/Part-1:-understandable-raytracing).\n", + "The mathematical explanations are well described in that tutorial, so we'll\n", + "just point you to the appropriate sections for reference as we implement a\n", + "basic ray tracer in Mojo." + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "fbd4aa63-a178-41f2-ad66-b017c1c69d2a", + "metadata": {}, + "source": [ + "## Step 1: Basic definitions\n", + "\n", + "We'll start by defining a `Vec3f` struct, which will use to represent a vector\n", + "in 3D space as well as RGB pixels. We'll use a `SIMD` representation for our\n", + "vector to enable vectorized operations. The `SIMD` type is a fixed-size vector,\n", + "and its size must be a power of 2. So we'll use a size of 4 and always pad the\n", + "underlying storage with a 0." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "78a07829-05bc-4a67-8ccc-f2e1537c478c", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "from math import isqrt\n", + "\n", + "\n", + "@register_passable(\"trivial\")\n", + "struct Vec3f:\n", + " var data: SIMD[DType.float32, 4]\n", + "\n", + " @always_inline\n", + " fn __init__(out self, x: Float32, y: Float32, z: Float32):\n", + " self.data = SIMD[DType.float32, 4](x, y, z, 0)\n", + "\n", + " @implicit\n", + " @always_inline\n", + " fn __init__(out self, data: SIMD[DType.float32, 4]):\n", + " self.data = data\n", + "\n", + " @always_inline\n", + " @staticmethod\n", + " fn zero() -> Vec3f:\n", + " return Vec3f(0, 0, 0)\n", + "\n", + " @always_inline\n", + " fn __sub__(self, other: Vec3f) -> Vec3f:\n", + " return self.data - other.data\n", + "\n", + " @always_inline\n", + " fn __add__(self, other: Vec3f) -> Vec3f:\n", + " return self.data + other.data\n", + "\n", + " @always_inline\n", + " fn __matmul__(self, other: Vec3f) -> Float32:\n", + " return (self.data * other.data).reduce_add()\n", + "\n", + " @always_inline\n", + " fn __mul__(self, k: Float32) -> Vec3f:\n", + " return self.data * k\n", + "\n", + " @always_inline\n", + " fn __neg__(self) -> Vec3f:\n", + " return self.data * -1.0\n", + "\n", + " @always_inline\n", + " fn __getitem__(self, idx: Int) -> SIMD[DType.float32, 1]:\n", + " return self.data[idx]\n", + "\n", + " @always_inline\n", + " fn cross(self, other: Vec3f) -> Vec3f:\n", + " var self_zxy = self.data.shuffle[2, 0, 1, 3]()\n", + " var other_zxy = other.data.shuffle[2, 0, 1, 3]()\n", + " return (self_zxy * other.data - self.data * other_zxy).shuffle[\n", + " 2, 0, 1, 3\n", + " ]()\n", + "\n", + " @always_inline\n", + " fn normalize(self) -> Vec3f:\n", + " return self.data * isqrt(self @ self)\n" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "2619eb1b-103b-4453-9725-4480e388452e", + "metadata": {}, + "source": [ + "We now define our `Image` struct, which will store the RGB pixels of our\n", + "images. It also contains a method to convert this Mojo struct into a NumPy\n", + "image, which will be used for implementing a straightforward display\n", + "mechanism. We will also implement a function for loading PNG files from disk." + ] + }, + { + "cell_type": "markdown", + "id": "acd55d71", + "metadata": {}, + "source": [ + "First install the required libraries:" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "53266408", + "metadata": {}, + "outputs": [], + "source": [ + "%%python\n", + "from importlib.util import find_spec\n", + "import shutil\n", + "import subprocess\n", + "\n", + "fix = \"\"\"\n", + "-------------------------------------------------------------------------\n", + "fix following the steps here:\n", + " https://github.com/modularml/mojo/issues/1085#issuecomment-1771403719\n", + "-------------------------------------------------------------------------\n", + "\"\"\"\n", + "\n", + "def install_if_missing(name: str):\n", + " if find_spec(name):\n", + " return\n", + "\n", + " print(f\"{name} not found, installing...\")\n", + " try:\n", + " if shutil.which('python3'): python = \"python3\"\n", + " elif shutil.which('python'): python = \"python\"\n", + " else: raise (\"python not on path\" + fix)\n", + " subprocess.check_call([python, \"-m\", \"pip\", \"install\", name])\n", + " except:\n", + " raise ImportError(f\"{name} not found\" + fix)\n", + "\n", + "install_if_missing(\"numpy\")\n", + "install_if_missing(\"matplotlib\")\n" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "ca218d22-0578-42af-a906-7f15a91c5bec", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "from python import Python\n", + "from python import PythonObject\n", + "from memory import UnsafePointer\n", + "\n", + "struct Image:\n", + " # reference count used to make the object efficiently copyable\n", + " var rc: UnsafePointer[Int]\n", + " # the two dimensional image is represented as a flat array\n", + " var pixels: UnsafePointer[Vec3f]\n", + " var height: Int\n", + " var width: Int\n", + "\n", + " fn __init__(out self, height: Int, width: Int):\n", + " self.height = height\n", + " self.width = width\n", + " self.pixels = UnsafePointer[Vec3f].alloc(self.height * self.width)\n", + " self.rc = UnsafePointer[Int].alloc(1)\n", + " self.rc[] = 1\n", + "\n", + " fn __copyinit__(out self, other: Self):\n", + " other._inc_rc()\n", + " self.pixels = other.pixels\n", + " self.rc = other.rc\n", + " self.height = other.height\n", + " self.width = other.width\n", + "\n", + " fn __del__(owned self):\n", + " self._dec_rc()\n", + "\n", + " fn _dec_rc(self):\n", + " if self.rc[] > 1:\n", + " self.rc[] -= 1\n", + " return\n", + " self._free()\n", + "\n", + " fn _inc_rc(self):\n", + " self.rc[] += 1\n", + "\n", + " fn _free(self):\n", + " self.rc.free()\n", + " self.pixels.free()\n", + "\n", + " @always_inline\n", + " fn set(self, row: Int, col: Int, value: Vec3f) -> None:\n", + " self.pixels[self._pos_to_index(row, col)] = value\n", + "\n", + " @always_inline\n", + " fn _pos_to_index(self, row: Int, col: Int) -> Int:\n", + " # Convert a (rol, col) position into an index in the underlying linear storage\n", + " return row * self.width + col\n", + "\n", + " def to_numpy_image(self) -> PythonObject:\n", + " var np = Python.import_module(\"numpy\")\n", + " var plt = Python.import_module(\"matplotlib.pyplot\")\n", + "\n", + " var np_image = np.zeros((self.height, self.width, 3), np.float32)\n", + "\n", + " # We use raw pointers to efficiently copy the pixels to the numpy array\n", + " var out_pointer = np_image.__array_interface__[\"data\"][0].unsafe_get_as_pointer[DType.float32]()\n", + " var in_pointer = self.pixels.bitcast[Float32]()\n", + "\n", + " for row in range(self.height):\n", + " for col in range(self.width):\n", + " var index = self._pos_to_index(row, col)\n", + " for dim in range(3):\n", + " out_pointer[index * 3 + dim] = in_pointer[index * 4 + dim]\n", + "\n", + " return np_image\n", + "\n", + "\n", + "def load_image(fname: String) -> Image:\n", + " var np = Python.import_module(\"numpy\")\n", + " var plt = Python.import_module(\"matplotlib.pyplot\")\n", + "\n", + " var np_image = plt.imread(fname)\n", + " var rows = int(np_image.shape[0])\n", + " var cols = int(np_image.shape[1])\n", + " var image = Image(rows, cols)\n", + "\n", + " var in_pointer = np_image.__array_interface__[\"data\"][0].unsafe_get_as_pointer[DType.float32]()\n", + " var out_pointer = image.pixels.bitcast[Float32]()\n", + "\n", + " for row in range(rows):\n", + " for col in range(cols):\n", + " var index = image._pos_to_index(row, col)\n", + " for dim in range(3):\n", + " out_pointer[index * 4 + dim] = in_pointer[index * 3 + dim]\n", + " return image\n" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "7a7dbe6f-f35f-42c5-ad37-b7400f6262f8", + "metadata": {}, + "source": [ + "We then add a function for quickly displaying an `Image` into the notebook. Our\n", + "Python interop comes in quite handy." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "9a3a8e81-7500-439b-a8d2-8e71ceea3e8b", + "metadata": {}, + "outputs": [], + "source": [ + "def render(image: Image):\n", + " np = Python.import_module(\"numpy\")\n", + " plt = Python.import_module(\"matplotlib.pyplot\")\n", + " colors = Python.import_module(\"matplotlib.colors\")\n", + " dpi = 32\n", + " fig = plt.figure(1, [image.width // 10, image.height // 10], dpi)\n", + "\n", + " plt.imshow(image.to_numpy_image())\n", + " plt.axis(\"off\")\n", + " plt.show()\n" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "5f42f174-d7d9-4f6c-9b4e-d0d586f8f5ec", + "metadata": {}, + "source": [ + "Finally, we test all our code so far with a simple image, which is the one\n", + "rendered in the [Step 1 of the C++\n", + "tutorial](https://github.com/ssloy/tinyraytracer/wiki/Part-1:-understandable-raytracing#step-1-write-an-image-to-the-disk)." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "52005588-38e7-4ef0-affe-6d063b9bf9b7", + "metadata": { + "tags": [] + }, + "outputs": [ { - "cell_type": "code", - "execution_count": 7, - "id": "beeecde1-f365-4be5-a3b1-d8a145810be1", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "fn cast_ray(orig: Vec3f, dir: Vec3f, sphere: Sphere) -> Vec3f:\n", - " var dist: Float32 = 0\n", - " if not sphere.intersects(orig, dir, dist):\n", - " return bg_color\n", - "\n", - " return sphere.material.color\n" - ] + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAd0AAAFnCAYAAADjbJN9AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8pXeV/AAAACXBIWXMAAATsAAAE7AGKbv1yAAAGG0lEQVR4nO3ZwWoCQRRFQVv8/19+LtyMILjyTMtUbUICCWZ1uP3WzMwNAPi5+9kfAACu4nH8Zq11+ObD108/+/Z1x9/xmfb4+zt+Jv/zHr/z739/x890xf95o9+Z9XpUtnQBIPK+dM/6FABwAZYuAEQsXQCIiC4ARDwvA0DE0gWAiOgCQER0ASDipgsAEUsXACKiCwAR0QWAiJsuAEQsXQCIiC4ARDwvA0DE0gWAiOgCQER0ASDipgsAEUsXACKiCwAR0QWAiJsuAEQsXQCIiC4ARDwvA0DE0gWAiOgCQER0ASDipgsAEUsXACKiCwAR0QWAiJsuAEQsXQCIWLoAELF0ASAiugAQEV0AiLjpAkDE0gWAiOgCQMTzMgBELF0AiIguAEREFwAibroAELF0ASAiugAQEV0AiLjpAkDE0gWAiOgCQMTzMgBELF0AiIguAEREFwAibroAELF0ASAiugAQEV0AiLjpAkDE0gWAiOgCQMTzMgBELF0AiIguAEREFwAibroAELF0ASAiugAQEV0AiLjpAkDE0gWAiOgCQMTzMgBELF0AiIguAEREFwAibroAELF0ASAiugAQEV0AiLjpAkDE0gWAiOgCQMTzMgBELF0AiIguAEREFwAibroAELF0ASAiugAQ8bwMABFLFwAiogsAEc/LABCxdAEgIroAEBFdAIi46QJAxNIFgIjoAkDE8zIARCxdAIiILgBERBcAIm66ABCxdAEgIroAEBFdAIi46QJAxNIFgIjoAkDE8zIARCxdAIiILgBERBcAIm66ABCxdAEgIroAEPG8DAARSxcAIqILABHRBYCImy4ARCxdAIiILgBERBcAIm66ABCxdAEgIroAEPG8DAARSxcAIqILABHRBYCImy4ARCxdAIiILgBERBcAIm66ABCxdAEgIroAEPG8DAARSxcAIqILABHRBYCImy4ARCxdAIiILgBERBcAIm66ABCxdAEgYukCQMTSBYCI6AJARHQBIOKmCwARSxcAIqILABHPywAQsXQBICK6ABARXQCIuOkCQMTSBYCI6AJARHQBIOKmCwARSxcAIqILABHPywAQsXQBICK6ABARXQCIuOkCQMTSBYCI6AJARHQBIOKmCwARSxcAIqILABHPywAQsXQBICK6ABARXQCIuOkCQMTSBYCI6AJARHQBIOKmCwARSxcAIqILABHPywAQsXQBICK6ABARXQCIuOkCQMTSBYCI6AJARHQBIOKmCwARSxcAIqILABHPywAQsXQBICK6ABARXQCIuOkCQMTSBYCI6AJAxPMyAEQsXQCIiC4ARDwvA0DE0gWAiOgCQER0ASDipgsAEUsXACKiCwARz8sAELF0ASAiugAQEV0AiLjpAkDE0gWAiOgCQER0ASDipgsAEUsXACKiCwARz8sAELF0ASAiugAQEV0AiLjpAkDE0gWAiOgCQMTzMgBELF0AiIguAEREFwAibroAELF0ASAiugAQEV0AiLjpAkDE0gWAiOgCQMTzMgBELF0AiIguAEREFwAibroAELF0ASAiugAQEV0AiLjpAkDE0gWAiOgCQMTzMgBELF0AiIguAEREFwAibroAELF0ASAiugAQEV0AiLjpAkDE0gWAiKULABFLFwAiogsAEdEFgIibLgBELF0AiIguAEQ8LwNAxNIFgIjoAkBEdAEg4qYLABFLFwAiogsAEdEFgIibLgBELF0AiIguAEQ8LwNAxNIFgIjoAkBEdAEg4qYLABFLFwAiogsAEdEFgIibLgBELF0AiIguAEQ8LwNAxNIFgIjoAkBEdAEg4qYLABFLFwAiogsAEdEFgIibLgBELF0AiIguAEQ8LwNAxNIFgIjoAkBEdAEg4qYLABFLFwAiogsAEdEFgIibLgBELF0AiIguAEQ8LwNAxNIFgIjoAkBEdAEg4qYLABFLFwAiogsAEc/LABCxdAEgIroAEPG8DAARSxcAIqILABHRBYCImy4ARCxdAIiILgBEPC8DQMTSBYCI6AJARHQBIOKmCwARSxcAIqILABHRBYCImy4ARCxdAIiILgBEPC8DQGTNzJz9IQDgCixdAIiILgBEnv7cEL5KaxYBAAAAAElFTkSuQmCC" + }, + "metadata": {}, + "output_type": "display_data" }, { - "attachments": {}, - "cell_type": "markdown", - "id": "1baec786-664c-4fea-8be1-c2d5f25924e7", - "metadata": {}, - "source": [ - "Lastly, we parallelize the ray tracing for every pixel row-wise." - ] - }, + "name": "stdout", + "output_type": "stream", + "text": [ + "\n" + ] + } + ], + "source": [ + "var image = Image(192, 256)\n", + "\n", + "for row in range(image.height):\n", + " for col in range(image.width):\n", + " image.set(\n", + " row,\n", + " col,\n", + " Vec3f(Float32(row) / image.height, Float32(col) / image.width, 0),\n", + " )\n", + "\n", + "render(image)\n" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "ef3206b4-0bbb-4108-a592-f748843e5d3d", + "metadata": {}, + "source": [ + "## Step 2: Ray tracing\n", + "\n", + "Now we'll perform ray tracing from a camera into a scene with a sphere. Before\n", + "reading the code below, we suggest you read more about how this works\n", + "conceptually from [Step 2 of the C++\n", + "tutorial](https://github.com/ssloy/tinyraytracer/wiki/Part-1:-understandable-raytracing#step-2-the-crucial-one-ray-tracing)." + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "778d8339-5b19-47ee-bdc6-a08e4ec5094c", + "metadata": {}, + "source": [ + "We first define the `Material` and `Sphere` structs, which are the new data\n", + "structures we'll need." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "1c4a79de-0b65-48ac-97c9-187b74b96b9f", + "metadata": {}, + "outputs": [], + "source": [ + "from math import sqrt\n", + "\n", + "@register_passable(\"trivial\")\n", + "struct Material:\n", + " var color: Vec3f\n", + " var albedo: Vec3f\n", + " var specular_component: Float32\n", + "\n", + " @implicit\n", + " fn __init__(out self, color: Vec3f, albedo: Vec3f = Vec3f(0, 0, 0),\n", + " specular_component: Float32 = 0):\n", + " self.color = color\n", + " self.albedo = albedo\n", + " self.specular_component = specular_component\n", + "\n", + "alias W = 1024\n", + "alias H = 768\n", + "alias bg_color = Vec3f(0.02, 0.02, 0.02)\n", + "var shiny_yellow = Material(Vec3f(0.95, 0.95, 0.4), Vec3f(0.7, 0.6, 0), 30.0)\n", + "var green_rubber = Material(Vec3f( 0.3, 0.7, 0.3), Vec3f(0.9, 0.1, 0), 1.0)\n", + "\n", + "\n", + "@value\n", + "@register_passable(\"trivial\")\n", + "struct Sphere(CollectionElement):\n", + " var center: Vec3f\n", + " var radius: Float32\n", + " var material: Material\n", + "\n", + " @always_inline\n", + " fn intersects(self, orig: Vec3f, dir: Vec3f, mut dist: Float32) -> Bool:\n", + " \"\"\"This method returns True if a given ray intersects this sphere.\n", + " And if it does, it writes in the `dist` parameter the distance to the\n", + " origin of the ray.\n", + " \"\"\"\n", + " var L = orig - self.center\n", + " var a = dir @ dir\n", + " var b = 2 * (dir @ L)\n", + " var c = L @ L - self.radius * self.radius\n", + " var discriminant = b * b - 4 * a * c\n", + " if discriminant < 0:\n", + " return False\n", + " if discriminant == 0:\n", + " dist = -b / 2 * a\n", + " return True\n", + " var q = -0.5 * (b + sqrt(discriminant)) if b > 0 else -0.5 * (\n", + " b - sqrt(discriminant)\n", + " )\n", + " var t0 = q / a\n", + " var t1 = c / q\n", + " if t0 > t1:\n", + " t0 = t1\n", + " if t0 < 0:\n", + " t0 = t1\n", + " if t0 < 0:\n", + " return False\n", + "\n", + " dist = t0\n", + " return True\n" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "e5ed8e76-efc1-4905-90ea-4cad6df0c553", + "metadata": {}, + "source": [ + "We then define a `cast_ray` method, which will be used to figure out the color\n", + "of a particular pixel in the image we'll produce. It basically works by\n", + "identifying whether this ray intersects the sphere or not." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "beeecde1-f365-4be5-a3b1-d8a145810be1", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "fn cast_ray(orig: Vec3f, dir: Vec3f, sphere: Sphere) -> Vec3f:\n", + " var dist: Float32 = 0\n", + " if not sphere.intersects(orig, dir, dist):\n", + " return bg_color\n", + "\n", + " return sphere.material.color\n" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "1baec786-664c-4fea-8be1-c2d5f25924e7", + "metadata": {}, + "source": [ + "Lastly, we parallelize the ray tracing for every pixel row-wise." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "80c81118-acf9-4786-9a3a-694fe7f2d08a", + "metadata": { + "tags": [] + }, + "outputs": [ { - "cell_type": "code", - "execution_count": 8, - "id": "80c81118-acf9-4786-9a3a-694fe7f2d08a", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAB2MAAAWMCAYAAAATKi3mAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8pXeV/AAAACXBIWXMAAATsAAAE7AGKbv1yAABKUUlEQVR4nOzde5CddX3H8e85u3t2N9lkc11CCESEXEgD2CRY1KJStNrRabWidAZGOy3qH62O1dE6dRCYsVXqH7ZTW+8WrdVpB2+1DkWQKVQCbeQypSAkQAhJSHYJuWw2ezm7e57+EQ3BAiWw333O7nm9ZpjZk7MhnznJHzl5n9/zVIqiKAIAAAAAAACAKVUtewAAAAAAAADAbCTGAgAAAAAAACRoP/5BrVYrawcAAAAAAADAjFev14997WQsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEA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AABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAP63fTs4AQAEYCCG+w9dpzgESSbo/ygAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAIDA2bbXIwAAAAAAAAB+4xkLAAAAAAAAEBBjAQAAAAAAAAIXPgf3yqAAlNMAAAAASUVORK5CYII=" - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n" - ] - } - ], - "source": [ - "from math import tan, acos\n", - "from algorithm import parallelize\n", - "\n", - "\n", - "fn create_image_with_sphere(sphere: Sphere, height: Int, width: Int) -> Image:\n", - " var image = Image(height, width)\n", - "\n", - " @parameter\n", - " fn _process_row(row: Int):\n", - " var y = -((Float32(2.0) * row + 1) / height - 1)\n", - " for col in range(width):\n", - " var x = ((Float32(2.0) * col + 1) / width - 1) * width / height\n", - " var dir = Vec3f(x, y, -1).normalize()\n", - " image.set(row, col, cast_ray(Vec3f.zero(), dir, sphere))\n", - "\n", - " parallelize[_process_row](height)\n", - "\n", - " return image\n", - "\n", - "\n", - "render(\n", - " create_image_with_sphere(Sphere(Vec3f(-3, 0, -16), 2, shiny_yellow), H, W)\n", - ")\n" - ] + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAB2MAAAWMCAYAAAATKi3mAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8pXeV/AAAACXBIWXMAAATsAAAE7AGKbv1yAABKUUlEQVR4nOzde5CddX3H8e85u3t2N9lkc11CCESEXEgD2CRY1KJStNrRabWidAZGOy3qH62O1dE6dRCYsVXqH7ZTW+8WrdVpB2+1DkWQKVQCbeQypSAkQAhJSHYJuWw2ezm7e57+EQ3BAiWw333O7nm9ZpjZk7MhnznJHzl5n9/zVIqiKAIAAAAAAACAKVUtewAAAAAAAADAbCTGAgAAAAAAACRoP/5BrVYrawcAAAAAAADAjFev14997WQsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEA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AABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAP63fTs4AQAEYCCG+w9dpzgESSbo/ygAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAIDA2bbXIwAAAAAAAAB+4xkLAAAAAAAAEBBjAQAAAAAAAAIXPgf3yqAAlNMAAAAASUVORK5CYII=" + }, + "metadata": {}, + "output_type": "display_data" }, { - "attachments": {}, - "cell_type": "markdown", - "id": "ee9bbf4c-91ad-4787-a332-b509fdc8d512", - "metadata": {}, - "source": [ - "## Step 3: More spheres\n", - "\n", - "This section corresponds to the [Step 3 of the C++\n", - "tutorial](https://github.com/ssloy/tinyraytracer/wiki/Part-1:-understandable-raytracing#step-3-add-more-spheres).\n", - "\n", - "We include here all the necessary changes:\n", - "\n", - "- We add 3 more spheres to the scene, 2 of them being of green rubber material.\n", - "- When we intersect the ray with the sphere, we render the color of the closest\n", - " sphere." - ] - }, + "name": "stdout", + "output_type": "stream", + "text": [ + "\n" + ] + } + ], + "source": [ + "from math import tan, acos\n", + "from algorithm import parallelize\n", + "\n", + "\n", + "fn create_image_with_sphere(sphere: Sphere, height: Int, width: Int) -> Image:\n", + " var image = Image(height, width)\n", + "\n", + " @parameter\n", + " fn _process_row(row: Int):\n", + " var y = -((Float32(2.0) * row + 1) / height - 1)\n", + " for col in range(width):\n", + " var x = ((Float32(2.0) * col + 1) / width - 1) * width / height\n", + " var dir = Vec3f(x, y, -1).normalize()\n", + " image.set(row, col, cast_ray(Vec3f.zero(), dir, sphere))\n", + "\n", + " parallelize[_process_row](height)\n", + "\n", + " return image\n", + "\n", + "\n", + "render(\n", + " create_image_with_sphere(Sphere(Vec3f(-3, 0, -16), 2, shiny_yellow), H, W)\n", + ")\n" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "ee9bbf4c-91ad-4787-a332-b509fdc8d512", + "metadata": {}, + "source": [ + "## Step 3: More spheres\n", + "\n", + "This section corresponds to the [Step 3 of the C++\n", + "tutorial](https://github.com/ssloy/tinyraytracer/wiki/Part-1:-understandable-raytracing#step-3-add-more-spheres).\n", + "\n", + "We include here all the necessary changes:\n", + "\n", + "- We add 3 more spheres to the scene, 2 of them being of green rubber material.\n", + "- When we intersect the ray with the sphere, we render the color of the closest\n", + " sphere." + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "b4774ada-3cef-4ce3-a573-3fd721fe41b0", + "metadata": {}, + "outputs": [ { - "cell_type": "code", - "execution_count": 9, - "id": "b4774ada-3cef-4ce3-a573-3fd721fe41b0", - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAB2MAAAWMCAYAAAATKi3mAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8pXeV/AAAACXBIWXMAAATsAAAE7AGKbv1yAACKqklEQVR4nOzdd5hdd30n/ve5d+70plGXbMm2uptcMN00h5YQAtmwIUsNkJBNNgUSkk3IhmUT8sumJ8+PFNLYpW1Ywoaw+2Npxiam2oANuFtuki1ZvY6m3vv7Q0a2cZWlM+fOzOv1PHqYe+femTdn7sx4zvt8vt+i1Wq1AgAAAAAAAMApVas6AAAAAAAAAMBcpIwFAAAAAAAAKEHHg290dnZWlQMAAAAAAABg1puYmDj+tslYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAA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nszHPnZ7PvWpuzM11aw6DsCMabVaueKKe/ORj9yWPXvGqo4DAJwiylgAAAAAAACAElimGAAAAACgQocPT+bw4cmMj09XHQUAOMWUsQAAAAAAFXr/+2/Ohz50S+69d7TqKADAKaaMBQAAANrO6OhUbrxxf5Yt68nKlX1JiqojAZxye/eOZceO0dx0077ccsuBquMAACUoWq1W63s3Ojs7q8wCAAAAkCTp6CgyMNCZV7zijPzBHzwjRaGMBeaeD3/41rzrXVdndHQqY2OWKAaAuWJiYuL42yZjAQAAgLYzNdXKvn3jOXx4Kq1WoosF5qLx8ens3TtedQwAoES1qgMAAAAAAAAAzEXKWAAAAKBt3Xbbgfzt396Yb3xjV9VRAE6ZrVsP5+/+7sZcddX2qqMAACWzZywAAADQ9t7xjs35j//xoqpjAJwSn//8trz2tZ/PxESz6igAQAkevGesyVgAAAAAAACAEnRUHQAAAAAAYD5otVqZnj7274H1CgGAuUwZCwAAAAAwA+6550h+93e/mS1bDmZqyhLFADAfKGMBAACAtjc2Np39+8fT29uRzs561XEATkiz2crhw5O5997RfPaz27J373jVkQCAGVK0Wg8siNHZ2VllFgAAAIBHtGRJT5Yt682v/doFeclLVlUdB+CE7N8/nre97cu56aZ92bLlYKanrVEMAHPZxMTE8bdNxgIAAABtb+fOo9m582j27TNNBsw+09Ot3Hrr/txyy4GqowAAM6xWdQAAAAAAAACAuUgZCwAAAMwat9xyIF/60vYcOGBCFmh/zWYr3/3u3nzlK/flyJGpquMAABWwZywAAAAwazQatfT1deSDH7wsz3jGsqrjADymycnp/ORPXpHLL78nExPTadkqFgDmBXvGAgAAALPS5GQz4+PTaTY1GkA7a+Xqq3flhhv25c47D2V8fLrqQABARZSxAAAAAACn2Mc+tiV/+7c3VR0DAKiYPWMBAACAWWVyspkPfODW/Pmffyd7945VHQfgEVmSGABIlLEAAADALDM11cr//J9b8r733ZD9+yce/wkAM6jVaqXZrDoFANAuLFMMAAAAUKpWkqLqELNcWcfwRD9u2Y+fD9rlGJb3tfnc57blox/dkmuv3VPKxwcAZhdlLAAAADArNZutjI5O5ejRqXR311MU7Vp6tWuu2aSsY3iiH7fsx88H7XIMT/3HnZpqZnx8Otdfvy8f//gdp/zjAwCzU9FqPbB7QWdnZ5VZAAAAAJ6wRqOWTZuGc955C/O7v/u09Pc3qo4EzGNf/vKOvOc938y99x7J3XcfrjoOAFChiYkHtlMxGQsAAADMSpOTzXz723tTqxWZnrZBI1CNiYnp7Np1NLfeeiBXX70z09Otx38SADBvKGMBAAAAAJ6kLVsO5q1vvTL33XdUEQsAPEyt6gAAAAAAJ+PIkal861u7c9ttB/Kg3ZgAZsTExHS2bTuS3bvHqo4CALQhZSwAAAAwq23ZcjCve93l+f3fvzbNpjIWAABoH8pYAAAAYFZrNlsZHZ3K7bcfzMc/fke+/e09VUf6Pgrik1fWMTzRj1v24+eDdjmGJ/9xjx6dyqc/vTWXX35PJiftWw0APLKi9aD1ezo7O6vMAgAAAHBSiiL5uZ87N+9+9yVVRwHmuB07RvMjP/KpbNlyMFZIBwAebGJi4vjbHRXmAAAAADilWq3YNxYo1dRUMx//+B258cZ92bt3XBELADwmZSwAAAAwp3yvkC2KJCmqjgPMIa1WK5OTzXzoQ7fkqqt2VB0HAJgF7BkLAAAAzClf+MI9+cVf/JKiBDilWq1WPvzhW/Mrv/KV3HrrgarjAACzhMlYAAAAYE658cb9ufHG/bnwwkV59rOXVx0HmAOmppqZnGzmqqt25KMf3VJ1HABgFlHGAgAAAAA8ho9//PZ8+MO35ZZb9lcdBQCYZZSxAAAAwJx08OBE7rtvNMPDXenqqlcdB5iFxsamcuDARG64YV/+9V+3Vx0HAJiFilar1frejc7OziqzAAAAAJwyixd3Z+HC7vzhHz4jz3jGsqrjALPQpz+9Ne9619XZs2cse/eOVx0HAJglJiYmjr9tMhYAAACYk3btGsu+fRO5/vp9GRrqzFlnDaa726kQ4PEdOTKZO+44lBtu2JfbbjuQB8ZZAABOjMlYAAAAYE7r6+vI0qW9+dCHLsv69cNVxwFmgW98Y1fe+MYvZP/+8YyOTlUdBwCYZR48GVurMAcAAABA6Y4cmcquXUdz5ZX35l//dXsmJqarjgS0uenpZg4cUMQCACdPGQsAAADMeYcOTead7/x6fvM3v55DhyarjgMAAMwTNkoBAACAkg2tG8rwhuEZ/ZyTRyZz31fuy/SYKdDvmZ5uZXq6WXUMoI0dOjSRT3zizlx//b5MTvp5AQCcPGUsAAAAlGzh5oVZ9xPrZvRzjm4fzZ7r9ihjH1UrSVF1CKCttLJv33j+4A+uzbZtR6oOAwDMEcpYAAAAeBIWP2VxFm1e9IQeO7h2sOQ0D9c52Jl1P7HuCZWxk4cnc9f/uSuTh+f+8r07dhzNb//2N7J588K8/vXrU6/bwQlIxsen83d/d2Ouv35f9u+fqDoOADCHKGMBAADgURS14lGHJxdsXJBVP7hqZgOdgI6+jqx8wcon9Nix3WO594v3Zuro1CO+v9VsHRsknQP27RvPBz5wS+65Z2V+/MfXpKsrClmY11qZnm5ldHQq//zPd+Yb39hVdSAAYI4pWq3W8T+nOjs7q8wCAAAAbaPeXc+616xL75LeR3x/38q+9C5/5PfNNs2JZvbfvD/T4488RXvXp+7Knmv3zHCqci1a1J0LLliUF7/49LzpTRtiyWKYn5rNVv7f//e7ueqq7bnmml05cMBULABw8iYmHvhvCpOxAAAAzHu1Ri31rvpD7mv0N7Lw3IXpX9VfUaqZU+usZeS8kUd9/57v7MnB2w4+5L5Ws3VsknaWTszu3j2Wz31uW5Yu7cnevWekt7cj3d1Ok8B8cvToVI4cmco11+zM5z9/T9VxAIA5ymQsAAAA897yS5fnzFec+ZD7inqR3qW9qXVawnZsz1gmDz10P9kj9x7J9X95faZGH3lp49liZKQry5f35md/9ty8+tVrq44DzKD3ve+GfPCDt2Tr1iM5eNBELABw6piMBQAAYF4qakW6F3en1vHQgrX/9P4MnDFQUar2172wO90Lux9yX61RS99pfZk68tAyduLARCYPP7S4bWd7945n797x3HTTvtxyy/6sWNGX/v5G1bGAEoyOTuaee0bzvdmUG2/cl+uv31dxKgBgrjMZCwAAwLzROdiZC371goft9Vrvqqejx/XKJ6I13crk4ck86LRCkuS2j9yWbZ/bVlGqJ6+vryMDA535sz97Vn7gB06rOg5Qgq9+9b689a1XZvz+/bGPHJnK6Cyf7gcA2pPJWAAAAOaNvtP6jk91Nvob6Vnck67hropTzX5FvUjn0MMv6h48azALNy9McqywPbDlQKaPTs90vBN25MhUxsamj5c0wNwxOjqZb31rd77xjd25776jmZxsVh0JAJhHlLEAAADMaatfujorL1t57EaR1Or2gC3TaT9wWla+4Njxnjw8mW/89jdy6K5DFacC5rPt20fzcz93VbZvH83UlCIWAJhZylgAAOCUO/fckVx88eJKM9xxx8F88YvbK83AzOoc6sziixenqBcP3Fkk/av7U2soYGdKUS+Ofw06ejuy9JlLM7R+KEkyvnc8u761K2nTLqTVauULX7gnBw9O5EUvOj0Lv2+fXGB2GR+fzmc+szU33bQ/Bw6MK2IBgEooYwEAgFPu+c9fkf/8n59SaYZ/+qc78q//uj3ft50lc1jPkp5sfNNGe7+2kXpXPWt+bM3x23uu25M9396TZrM9C5FmM/mHf7g5H//4HTn77AXztIxtJSke91Gz9/PNhHY6hu2UZeYdPTqVP/qj6/Kd7+ytOgoAMI/5CxUAADghr3jFmdl8/36Qj+biixel6pOx5547kne96ymPWMYeOjSZ97//puzdOz7zwThlio4ip112WnqW9CRJuhZ0mYBtc73Le7Pu361Lq3nsG3P3N3dn7/XtV5KMjU3nfe+7MRs3DueNb9yQgYGH7407d830z+72Ke5OnXY6hu2UZeY0m6189KNbct11u7Njx2jVcQCAeU4ZCwAAPKpa7aEnVYsiefGLT8u//bdrK0r0xG3YMJwNG4Yf8X333TeaT37yzuzfP/GI72+1WiZq212R1Bq1LL90eRZsWlB1Gp6gniU9OePlZxy/PXVkKntveFAZ2ybfd+Pj0/kf/+O2nHXWYH70R89KX18jtVrSLkUT8OiazVYmJ5v55CfvzP/9v1urjgMAkKLVeuAUQ2fnfLrSEwAAeCzr1w/l7W/fnM7OB08aFrnookU5/fT+ynKdCmNjU/nSl3bk8OHJR3z/Bz94ay6//J4ZTsWJWPWDqzJy7kgWbFqQzkF/y85Wh+46lCP3HkmSNMeb2fKxLRnd3j5TbH19HXnWs5blggsW5W1vOz+dnfWqIwGP4yMfuTWf/vTWXH31LlOxAEBlJiYeuPjbZCwAAHBcb29H6vVjk1+nn96fl71sdXrm4P6b3d0dueyy0x7lva184xu7c/XVO4/daiWjo1NpNttkZG+eKupF6t8rwopkwcYFWfq0pdWG4qQNrB7IwOqBJMnU0ancc8U9mbh/Yr3VbGV6fLrKeDlyZCqf+cy2HDw4mZ/8yY0ZGGikp6ceE7LQfiYmpjM2Np1vfnN3PvnJu6qOAwBwnMlYAAAgybEi9r/+16cfX9p3YKCRtWuHHrZU8Xywdevh7Nx5NEly8OBE3vGOr+SOOw5VnGp+W3zR4qz5t2uO3+5d1pvGQKPCRJxqrWYrR+45kumxYwXsoTsP5ca/uzHNyWbFyZL+/kbWrh3MS1+6Kr/8y5tTFPPv5yK0u3/+5zvy3vd+N9u2HTn+OxwAoComYwEAYJ7r729k4cLu77uvI+efvzDnnjtSUar2cfrp/ceXYt6/fzxr1gyleX8fNDY2lfvuc5K3bEW9SNeCrhT3T2r3nd6XobVDBhLnsKJWpP9BS6AXtSK9y3ozcWAiEwcfeX/nmXL48GSuvXZPTj+9P3feeSgLFnRleLir0kww301MTGfHjqPHV6646ab9+eY3d1ecCgDg4UzGAgDAPPRjP3ZWfuu3Ls6Dm62iSBYt6rYn4vdpNlvZvftoJieP/en05S/vyM///FWZbINpvbmsZ3FPNv/K5nTdX3jVu+tp9JuEnU+ak81MHJzIfV+9Lzf9/U1Vx0lybAWB4eGu/If/cG7e+tazq44D89rNN+/PW95yRQ4cOHaxxuHDk8ffBgComslYAACYZ3p66jn77JE0GrUkyXnnjWTlyr4YM3x8tVqRJUt6j99es2YwT3/6kuPl7F13Hcr27aNVxZtzilqR/lX96TutLz1LetI56KLh+arWqKV7YXf6VvZlwdkLkvsvJT9y75FMVFS4jI5OZXR0KjfcsDdf+cqOJEm9XsumTcMZGPBahZkwOTmd66/flxtu2JetWw/n0KHJqiMBADwmk7EAADAPrFs3lI9+9IVZtOjY0sQdHbV0dtaijD1x09PNjI9PH7/9O7/zzfz1X99QYaK5paOnIxe986IMrhlMvVH3EiWt6VaaU/dPoreS6//q+mz/1+2VZmo0ascvbunt7cgHP3hZLrlkSaWZYL7YvftoXvWqz+aWW/ZnbGz68Z8AAFABk7EAADBPdHbW8rznrcjGjQsyPNyV3l7LvJ6ser2W3t7a8dsXX7w4r3rVmiTHpnWuvHJ79u0bryrerDR41mD6TutLktS76ule2J265bK5X1EvUq8/8HpYcPaCtFqt7P3O3somZCcnm8eXKp+aauZzn9uW++47muc/f0X6+vychTJMT7fypS9tz623HsjOnaOKWABg1jAZCwAAc9jISFf+1/96Sc45Z0GKIjFmeOq1Wq1876+qQ4cm8qM/+plce+3uakPNMutftz5n/siZD9zhZcpjaSXT49P5xnu+kX037Ks6TZJje26fdlpf/uVfXppVqwaqjgNz0vj4dF772s/nC1+4Jw+czQQAaE8mYwEAYA677LKVueiiRUmSnp6OLFnSk6LQbpWlKIp87/B2d3fk9a9fnxe+cGWSZOvWI/nYx27P1PeWWOUhBtcMZvFFizO8cVgByxNXHNtPduXzV2bknJEkyfi+8dx75b1pTlbzvdZqJQcOTOR977shmzYtyKtetSadprvhpH3ta/fli188tiz51FQzd9xxUBELAMw6ylgAAJhDiiJ54QtPy0/91NlVR5mXurrqecMbNhy//eUv78i//MudythHMbR2KGtfvbbqGMxCRb3IyhesPH774JaD2fGVHZWVsUly8OBk/vIvb8hTnrI4L3/5GWk0alYkgCfpewv5ffWr9+X3fu9bFacBADg5likGAIBZ7vzzR/KWt2xKrXbshP/FFy/O+vXD1YYiSbJz59FceeW9+fKXd+S///dbqo7TNvpX9Wf1y1an//T+DHutcgpMHprM7mt3Z/8t+3P3p+5OKpycW7iwO8973oo8/elL88Y3brj/Z3MrStmT5RjOJ9/85q78wz/clOuv35frrttTdRwAgBNmmWIAAJgDiuLYJOaZZw7mx398bTo6alVH4vssWdKTV71qTYoi+djHbj8+6TMx0cz09DxcZ/H+5WV7l/ZmxXNXpOY1yynSGGhk+aXLU++u557L70lzsplWRd9je/aM5Z/+6fZMTjbz4z9+bLniRsNr/eQpYueyVquV8fHp40sQb9lyMP/jf2xJszkPf1cCAHOOyVgAAJilzjprML/zO5dk1aqBbNw4bF/YNrZz59HceuuBJK20Wsmf/Mm3c8UV91Yda8b1LOnJxp/cmJ6lPRlYNaBb4ZSbODiRI9uOZPtV27P101srzbJoUXfWrx/Kq161Jq9//YbHfwLMY7t3H82v//rXsmPH0STHLmq4+eb91YYCADgJJmMBAGAWq9WKLFzYldWrB/L0py/L0JCLKtvdkiU9WbKkJ8mx6Z///b/vyk037cveveOZmJjb+8k2Bhqp3T8V2LOkJws2LUhjoFFxKuaqzsHOdJ7dmcPbDqdrpCtTR6YyPT5dSZbdu8eye/dYzj57JNu3H7n/3iIjI13p6qpXkgnaTavVyt6949m69XC+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AAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABUzVdV03PQIAAAAAAABgt3EyFgAAAAAAAKAAMRYAAAAAAACggP8fjymaWYXEdVMAAAAASUVORK5CYII=" - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n" - ] - } - ], - "source": [ - "from algorithm import parallelize\n", - "from utils.numerics import inf\n", - "from collections import List\n", - "\n", - "\n", - "fn scene_intersect(\n", - " orig: Vec3f,\n", - " dir: Vec3f,\n", - " spheres: List[Sphere],\n", - " background: Material,\n", - ") -> Material:\n", - " var spheres_dist = inf[DType.float32]()\n", - " var material = background\n", - "\n", - " for i in range(spheres.size):\n", - " var dist = inf[DType.float32]()\n", - " if spheres[i].intersects(orig, dir, dist) and dist < spheres_dist:\n", - " spheres_dist = dist\n", - " material = spheres[i].material\n", - "\n", - " return material\n", - "\n", - "\n", - "fn cast_ray(\n", - " orig: Vec3f, dir: Vec3f, spheres: List[Sphere]\n", - ") -> Material:\n", - " var background = Material(Vec3f(0.02, 0.02, 0.02))\n", - " return scene_intersect(orig, dir, spheres, background)\n", - "\n", - "\n", - "fn create_image_with_spheres(\n", - " spheres: List[Sphere], height: Int, width: Int\n", - ") -> Image:\n", - " var image = Image(height, width)\n", - "\n", - " @parameter\n", - " fn _process_row(row: Int):\n", - " var y = -((Float32(2.0) * row + 1) / height - 1)\n", - " for col in range(width):\n", - " var x = ((Float32(2.0) * col + 1) / width - 1) * width / height\n", - " var dir = Vec3f(x, y, -1).normalize()\n", - " image.set(row, col, cast_ray(Vec3f.zero(), dir, spheres).color)\n", - "\n", - " parallelize[_process_row](height)\n", - "\n", - " return image\n", - "\n", - "var spheres = List[Sphere]()\n", - "spheres.append(Sphere(Vec3f(-3, 0, -16), 2, shiny_yellow))\n", - "spheres.append(Sphere(Vec3f(-1.0, -1.5, -12), 1.8, green_rubber))\n", - "spheres.append(Sphere(Vec3f( 1.5, -0.5, -18), 3, green_rubber))\n", - "spheres.append(Sphere(Vec3f( 7, 5, -18), 4, shiny_yellow))\n", - "\n", - "render(create_image_with_spheres(spheres, H, W))\n" - ] + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAB2MAAAWMCAYAAAATKi3mAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8pXeV/AAAACXBIWXMAAATsAAAE7AGKbv1yAACKqklEQVR4nOzdd5hdd30n/ve5d+70plGXbMm2uptcMN00h5YQAtmwIUsNkJBNNgUSkk3IhmUT8sumJ8+PFNLYpW1Ywoaw+2Npxiam2oANuFtuki1ZvY6m3vv7Q0a2cZWlM+fOzOv1PHqYe+femTdn7sx4zvt8vt+i1Wq1AgAAAAAAAMApVas6AAAAAAAAAMBcpIwFAAAAAAAAKEHHg290dnZWlQMAAAAAAABg1puYmDj+tslYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAA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nszHPnZ7PvWpuzM11aw6DsCMabVaueKKe/ORj9yWPXvGqo4DAJwiylgAAAAAAACAElimGAAAAACgQocPT+bw4cmMj09XHQUAOMWUsQAAAAAAFXr/+2/Ohz50S+69d7TqKADAKaaMBQAAANrO6OhUbrxxf5Yt68nKlX1JiqojAZxye/eOZceO0dx0077ccsuBquMAACUoWq1W63s3Ojs7q8wCAAAAkCTp6CgyMNCZV7zijPzBHzwjRaGMBeaeD3/41rzrXVdndHQqY2OWKAaAuWJiYuL42yZjAQAAgLYzNdXKvn3jOXx4Kq1WoosF5qLx8ens3TtedQwAoES1qgMAAAAAAAAAzEXKWAAAAKBt3Xbbgfzt396Yb3xjV9VRAE6ZrVsP5+/+7sZcddX2qqMAACWzZywAAADQ9t7xjs35j//xoqpjAJwSn//8trz2tZ/PxESz6igAQAkevGesyVgAAAAAAACAEnRUHQAAAAAAYD5otVqZnj7274H1CgGAuUwZCwAAAAAwA+6550h+93e/mS1bDmZqyhLFADAfKGMBAACAtjc2Np39+8fT29uRzs561XEATkiz2crhw5O5997RfPaz27J373jVkQCAGVK0Wg8siNHZ2VllFgAAAIBHtGRJT5Yt682v/doFeclLVlUdB+CE7N8/nre97cu56aZ92bLlYKanrVEMAHPZxMTE8bdNxgIAAABtb+fOo9m582j27TNNBsw+09Ot3Hrr/txyy4GqowAAM6xWdQAAAAAAAACAuUgZCwAAAMwat9xyIF/60vYcOGBCFmh/zWYr3/3u3nzlK/flyJGpquMAABWwZywAAAAwazQatfT1deSDH7wsz3jGsqrjADymycnp/ORPXpHLL78nExPTadkqFgDmBXvGAgAAALPS5GQz4+PTaTY1GkA7a+Xqq3flhhv25c47D2V8fLrqQABARZSxAAAAAACn2Mc+tiV/+7c3VR0DAKiYPWMBAACAWWVyspkPfODW/Pmffyd7945VHQfgEVmSGABIlLEAAADALDM11cr//J9b8r733ZD9+yce/wkAM6jVaqXZrDoFANAuLFMMAAAAUKpWkqLqELNcWcfwRD9u2Y+fD9rlGJb3tfnc57blox/dkmuv3VPKxwcAZhdlLAAAADArNZutjI5O5ejRqXR311MU7Vp6tWuu2aSsY3iiH7fsx88H7XIM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+plce+3uakPNMutftz5n/siZD9zhZcpjaSXT49P5xnu+kX037Ks6TZJje26fdlpf/uVfXppVqwaqjgNz0vj4dF772s/nC1+4Jw+czQQAaE8mYwEAYA677LKVueiiRUmSnp6OLFnSk6LQbpWlKIp87/B2d3fk9a9fnxe+cGWSZOvWI/nYx27P1PeWWOUhBtcMZvFFizO8cVgByxNXHNtPduXzV2bknJEkyfi+8dx75b1pTlbzvdZqJQcOTOR977shmzYtyKtetSadprvhpH3ta/fli188tiz51FQzd9xxUBELAMw6ylgAAJhDiiJ54QtPy0/91NlVR5mXurrqecMbNhy//eUv78i//MudythHMbR2KGtfvbbqGMxCRb3IyhesPH774JaD2fGVHZWVsUly8OBk/vIvb8hTnrI4L3/5GWk0alYkgCfpewv5ffWr9+X3fu9bFacBADg5likGAIBZ7vzzR/KWt2xKrXbshP/FFy/O+vXD1YYiSbJz59FceeW9+fKXd+S///dbqo7TNvpX9Wf1y1an//T+DHutcgpMHprM7mt3Z/8t+3P3p+5OKpycW7iwO8973oo8/elL88Y3brj/Z3MrStmT5RjOJ9/85q78wz/clOuv35frrttTdRwAgBNmmWIAAJgDiuLYJOaZZw7mx398bTo6alVH4vssWdKTV71qTYoi+djHbj8+6TMx0cz09DxcZ/H+5WV7l/ZmxXNXpOY1yynSGGhk+aXLU++u557L70lzsplWRd9je/aM5Z/+6fZMTjbz4z9+bLniRsNr/eQpYueyVquV8fHp40sQb9lyMP/jf2xJszkPf1cCAHOOyVgAAJilzjprML/zO5dk1aqBbNw4bF/YNrZz59HceuuBJK20Wsmf/Mm3c8UV91Yda8b1LOnJxp/cmJ6lPRlYNaBb4ZSbODiRI9uOZPtV27P101srzbJoUXfWrx/Kq161Jq9//YbHfwLMY7t3H82v//rXsmPH0STHLmq4+eb91YYCADgJJmMBAGAWq9WKLFzYldWrB/L0py/L0JCLKtvdkiU9WbKkJ8mx6Z///b/vyk037cveveOZmJjb+8k2Bhqp3T8V2LOkJws2LUhjoFFxKuaqzsHOdJ7dmcPbDqdrpCtTR6YyPT5dSZbdu8eye/dYzj57JNu3H7n/3iIjI13p6qpXkgnaTavVyt6949m69XC+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AAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABUzVdV03PQIAAAAAAABgt3EyFgAAAAAAAKAAMRYAAAAAAACggP8fjymaWYXEdVMAAAAASUVORK5CYII=" + }, + "metadata": {}, + "output_type": "display_data" }, { - "attachments": {}, - "cell_type": "markdown", - "id": "f53abdf2", - "metadata": {}, - "source": [ - "## Step 4: Add lighting\n", - "\n", - "This section corresponds to the [Step 4 of the C++\n", - "tutorial](https://github.com/ssloy/tinyraytracer/wiki/Part-1:-understandable-raytracing#step-4-lighting).\n", - "Please read that section for an explanation of the trick used to estimate the\n", - "light intensity of pixel based on the angle of intersection between each ray\n", - "and the spheres. The changes are minimal and are primarily about handling this\n", - "intersection angle." - ] - }, + "name": "stdout", + "output_type": "stream", + "text": [ + "\n" + ] + } + ], + "source": [ + "from algorithm import parallelize\n", + "from utils.numerics import inf\n", + "from collections import List\n", + "\n", + "\n", + "fn scene_intersect(\n", + " orig: Vec3f,\n", + " dir: Vec3f,\n", + " spheres: List[Sphere],\n", + " background: Material,\n", + ") -> Material:\n", + " var spheres_dist = inf[DType.float32]()\n", + " var material = background\n", + "\n", + " for i in range(spheres.size):\n", + " var dist = inf[DType.float32]()\n", + " if spheres[i].intersects(orig, dir, dist) and dist < spheres_dist:\n", + " spheres_dist = dist\n", + " material = spheres[i].material\n", + "\n", + " return material\n", + "\n", + "\n", + "fn cast_ray(\n", + " orig: Vec3f, dir: Vec3f, spheres: List[Sphere]\n", + ") -> Material:\n", + " var background = Material(Vec3f(0.02, 0.02, 0.02))\n", + " return scene_intersect(orig, dir, spheres, background)\n", + "\n", + "\n", + "fn create_image_with_spheres(\n", + " spheres: List[Sphere], height: Int, width: Int\n", + ") -> Image:\n", + " var image = Image(height, width)\n", + "\n", + " @parameter\n", + " fn _process_row(row: Int):\n", + " var y = -((Float32(2.0) * row + 1) / height - 1)\n", + " for col in range(width):\n", + " var x = ((Float32(2.0) * col + 1) / width - 1) * width / height\n", + " var dir = Vec3f(x, y, -1).normalize()\n", + " image.set(row, col, cast_ray(Vec3f.zero(), dir, spheres).color)\n", + "\n", + " parallelize[_process_row](height)\n", + "\n", + " return image\n", + "\n", + "var spheres = List[Sphere]()\n", + "spheres.append(Sphere(Vec3f(-3, 0, -16), 2, shiny_yellow))\n", + "spheres.append(Sphere(Vec3f(-1.0, -1.5, -12), 1.8, green_rubber))\n", + "spheres.append(Sphere(Vec3f( 1.5, -0.5, -18), 3, green_rubber))\n", + "spheres.append(Sphere(Vec3f( 7, 5, -18), 4, shiny_yellow))\n", + "\n", + "render(create_image_with_spheres(spheres, H, W))\n" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "f53abdf2", + "metadata": {}, + "source": [ + "## Step 4: Add lighting\n", + "\n", + "This section corresponds to the [Step 4 of the C++\n", + "tutorial](https://github.com/ssloy/tinyraytracer/wiki/Part-1:-understandable-raytracing#step-4-lighting).\n", + "Please read that section for an explanation of the trick used to estimate the\n", + "light intensity of pixel based on the angle of intersection between each ray\n", + "and the spheres. The changes are minimal and are primarily about handling this\n", + "intersection angle." + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "3ed5bc7c-f335-48c4-abf8-31c75d6e79ad", + "metadata": {}, + "outputs": [], + "source": [ + "@value\n", + "@register_passable(\"trivial\")\n", + "struct Light(CollectionElement):\n", + " var position: Vec3f\n", + " var intensity: Float32" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "8b99f641", + "metadata": {}, + "outputs": [ { - "cell_type": "code", - "execution_count": 10, - "id": "3ed5bc7c-f335-48c4-abf8-31c75d6e79ad", - "metadata": {}, - "outputs": [], - "source": [ - "@value\n", - "@register_passable(\"trivial\")\n", - "struct Light(CollectionElement):\n", - " var position: Vec3f\n", - " var intensity: Float32" - ] + "name": "stdout", + "output_type": "stream", + "text": [ + "Clipping input data to the valid range for imshow with RGB data ([0..1] for floats or [0..255] for integers).\n" + ] }, { - "cell_type": "code", - "execution_count": 11, - "id": "8b99f641", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Clipping input data to the valid range for imshow with RGB data ([0..1] for floats or [0..255] for integers).\n" - ] - }, - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAB2MAAAWMCAYAAAATKi3mAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8pXeV/AAAACXBIWXMAAATsAAAE7AGKbv1yAAEAAElEQVR4nOzd7a8syX0f9uqZOQ/3aR/uPnKXu3wQRVOk+KDYBkU7kWXHD3IcGVESGIkTJAaSGAaSF3l4nX8pSIDkRWJbQQLDEQwYgS1bgBNHpmSLkiiKS2p3ubv33jOdF33qdFV1dU/PnOl7zr37+QAHM1NdXV0zd2ZI7Hd+VU3btm0AAAAAAAAA4KhWNz0BAAAAAAAAgOeRMBYAAAAAAABgAZv0wenp6U3NAwAAAAAAAOCZ9+jRo6v7KmMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAA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AACuQBgLAAAAAAAAcAXCWAAAAAAAAIArEMYCAAAAAAAAXIEwFgAAAAAAAOAKhLEAAAAAAAAAVyCMBQAAAAAAALgCYSwAAAAAAADAFQhjAQAAAAAAAK5AGAsAAAAAAABwBcJYAAAAAAAAgCsQxgIAAAAAAABcgTAWAAAAAAAA4AqEsQAAAAAAAABXIIwFAAAAAAAAuAJhLAAAAAAAAMAVCGMBAAAAAAAArkAYCwAAAAAAAHAFwlgAAAAAAACAKxDGAgAAAAAAAFyBMBYAAAAAAADgCoSxAAAAAAAAAFcgjAUAAAAAAAC4AmEsAAAAAAAAwBUIYwEAAAAAAACuQBgLAAAAAAAAcAXCWAAAAAAAAIArEMYCAAAAAAAAXIEwFgAAAAAAAOAKhLEAAAAAAAAAVyCMBQAAAAAAALgCYSwAAAAAAADAFQhjAQAAAAAAAK5AGAsAAAAAAABwBcJYAAAAAAAAgCsQxgIAAAAAAABcgTAWAAAAAAAA4AqEsQAAAAAAAABXIIwFAAAAAAAAuAJhLAAAAAAAAMAVCGMBAAAAAAAArkAYCwAAAAAAAHAFwlgAAAAAAACAKxDGAgAAAAAAAFyBMBYAAAAAAADgCoSxAAAAAAAAAFcgjAUAAAAAAAC4AmEsAAAAAAAAwBUIYwEAAAAAAACuQBgLAAAAAAAAcAXCWAAAAAAAAIArEMYCAAAAAAAAXIEwFgAAAAAAAOAKhLEAAAAAAAAAVyCMBQAAAAAAALgCYSwAAAAAAADAFQhjAQAAAAAAAK5AGAsAAAAAAABwBcJYAAAAAAAAgCsQxgIAAAAAAABcgTAWAAAAAAAA4AqEsQAAAAAAAABXIIwFAAAAAAAAuAJhLAAAAAAAAMAVCGMBAAAAAAAArkAYCwAAAAAAAHAFwlgAAAAAAACAKxDGAgAAAAAAAFyBMBYAAAAAAADgCoSxAAAAAAAAAFcgjAUAAAAAAAC4AmEsAAAAAAAAwBUIYwEAAAAAAACuQBgLAAAAAAAAcAXCWAAAAAAAAIArEMYCAAAAAAAAXIEwFgAAAAAAAOAKhLEAAAAAAAAAVyCMBQAAAAAAALgCYSwAAAAAAADAFQhjAQAAAAAAAK5AGAsAAAAAAABwBcJYAAAAAAAAgCsQxgIAAAAAAABcgTAWAAAAAAAA4AqEsQAAAAAAAABXIIwFAAAAAAAAuAJhLAAAAAAAAMAVCGMBAAAAAAAArkAYCwAAAAAAAHAFwlgAAAAAAACAKxDGAgAAAAAAAFyBMBYAAAAAAADgCoSxAAAAAAAAAFcgjAUAAAAAAAC4AmEsAAAAAAAAwBUIYwEAAAAAAACuQBgLAAAAAAAAcAXCWAAAAAAAAIArEMYCAAAAAAAAXIEwFgAAAAAAAOAKhLEAAAAAAAAAVyCMBQAAAAAAALgCYSwAAAAAAADAFQhjAQAAAAAAAK5AGAsAAAAAAABwBcJYAAAAAAAAgCsQxgIAAAAAAABcgTAWAAAAAAAA4AqEsQAAAAAAAABXIIwFAAAAAAAAuAJhLAAAAAAAAMAVCGMBAAAAAAAArkAYCwAAAAAAAHAFwlgAAAAAAACAKxDGAgAAAAAAAFyBMBYAAAAAAADgCoSxAAAAAAAAAFcgjAUAAAAAAAC4AmEsAAAAAAAAwBUIYwEAAAAAAACuQBgLAAAAAAAAcAXCWAAAAAAAAIArEMYCAAAAAAAAXIEwFgAAAAAAAOAKhLEAAAAAAAAAVyCMBQAAAAAAALgCYSwAAAAAAADAFQhjAQAAAAAAAK5AGAsAAAAAAABwBcJYAAAAAAAAgCsQxgIAAAAAAABcgTAWAAAAAAAA4AqEsQAAAAAAAABXIIwFAAAAAAAAuAJhLAAAAAAAAMAVCGMBAAAAAAAArkAYCwAAAAAAAHAFwlgAAAAAAACAKxDGAgAAAAAAAFyBMBYAAAAAAADgCoSxAAAAAAAAAFcgjAUAAAAAAAC4AmEsAAAAAAAAwBUIYwEAAAAAAACuQBgLAAAAAAAAcAXCWAAAAAAAAIArEMYCAAAAAAAAXIEwFgAAAAAAAOAKhLEAAAAAAAAAVyCMBQAAAAAAALgCYSwAAAAAAADAFQhjAQAAAAAAAK5AGAsAAAAAAABwBcJYAAAAAAAAgCsQxgIAAAAAAABcgTAWAAAAAAAA4AqEsQAAAAAAAABXIIwFAAAAAAAAuAJhLAAAAAAAAMAVCGMBAAAAAAAArkAYCwAAAAAAAHAFwlgAAAAAAACAKxDGAgAAAAAAAFyBMBYAAAAAAADgCoSxAAAAAAAAAFcgjAUAAAAAAAC4AmEsAAAAAAAAwBUIYwEAAAAAAACuQBgLAAAAAAAAcAXCWAAAAAAAAIArEMYCAAAAAAAAXIEwFgAAAAAAAOAKhLEAAAAAAAAAVyCMBQAAAAAAALgCYSwAAAAAAADAFQhjAQAAAAAAAK5AGAsAAAAAAABwBcJYAAAAAAAAgCsQxgIAAAAAAABcgTAWAAAAAAAA4AqEsQAAAAAAAABXIIwFAAAAAAAAuAJhLAAAAAAAAMAVCGMBAAAAAAAArkAYCwAAAAAAAHAFwlgAAAAAAACAKxDGAgAAAAAAAFyBMBYAAAAAAADgCoSxAAAAAAAAAFcgjAUAAAAAAAC4AmEsAAAAAAAAwBUIYwEAAAAAAACuQBgLAAAAAAAAcAXCWAAAAAAAAIArEMYCAAAAAAAAXIEwFgAAAAAAAOAKhLEAAAAAAAAAVyCMBQAAAAAAALgCYSwAAAAAAADAFQhjAQAAAAAAAK5AGAsAAAAAAABwBcJYAAAAAAAAgCsQxgIAAAAAAABcgTAWAAAAAAAA4AqEsQAAAAAAAABXIIwFAAAAAAAAuAJhLAAAAAAAAMAVCGMBAAAAAAAArkAYCwAAAAAAAHAFwlgAAAAAAACAKxDGAgAAAAAAAFyBMBYAAAAAAADgCoSxAAAAAAAAAFcgjAUAAAAAAAC4AmEsAAAAAAAAwBUIYwEAAAAAAACuQBgLAAAAAAAAcAXCWAAAAAAAAIArEMYCAAAAAAAAXIEwFgAAAAAAAOAKhLEAAAAAAAAAVyCMBQAAAAAAALgCYSwAAAAAAADAFQhjAQAAAAAAAK5AGAsAAAAAAABwBcJYAAAAAAAAgCsQxgIAAAAAAABcgTAWAAAAAAAA4AqEsQAAAADw/2/fDk4AAAEYiOH+Q9cpDkGSCfo/CgAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmfbXo8AAAAAAAAA+I1nLAAAAAAAAEBAjAUAAAAAAAAIXNpczcumkMt4AAAAAElFTkSuQmCC" - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n" - ] - } - ], - "source": [ - "fn scene_intersect(\n", - " orig: Vec3f,\n", - " dir: Vec3f,\n", - " spheres: List[Sphere],\n", - " mut material: Material,\n", - " mut hit: Vec3f,\n", - " mut N: Vec3f,\n", - ") -> Bool:\n", - " var spheres_dist = inf[DType.float32]()\n", - "\n", - " for i in range(0, spheres.size):\n", - " var dist: Float32 = 0\n", - " if spheres[i].intersects(orig, dir, dist) and dist < spheres_dist:\n", - " spheres_dist = dist\n", - " hit = orig + dir * dist\n", - " N = (hit - spheres[i].center).normalize()\n", - " material = spheres[i].material\n", - "\n", - " return (spheres_dist != inf[DType.float32]())\n", - "\n", - "\n", - "fn cast_ray(\n", - " orig: Vec3f,\n", - " dir: Vec3f,\n", - " spheres: List[Sphere],\n", - " lights: List[Light],\n", - ") -> Material:\n", - " var point = Vec3f.zero()\n", - " var material = Material(Vec3f.zero())\n", - " var N = Vec3f.zero()\n", - " if not scene_intersect(orig, dir, spheres, material, point, N):\n", - " return bg_color\n", - "\n", - " var diffuse_light_intensity: Float32 = 0\n", - " for i in range(lights.size):\n", - " var light_dir = (lights[i].position - point).normalize()\n", - " diffuse_light_intensity += lights[i].intensity * max(light_dir @ N, 0)\n", - "\n", - " return material.color * diffuse_light_intensity\n", - "\n", - "\n", - "fn create_image_with_spheres_and_lights(\n", - " spheres: List[Sphere],\n", - " lights: List[Light],\n", - " height: Int,\n", - " width: Int,\n", - ") -> Image:\n", - " var image = Image(height, width)\n", - "\n", - " @parameter\n", - " fn _process_row(row: Int):\n", - " var y = -((Float32(2.0) * row + 1) / height - 1)\n", - " for col in range(width):\n", - " var x = ((Float32(2.0) * col + 1) / width - 1) * width / height\n", - " var dir = Vec3f(x, y, -1).normalize()\n", - " image.set(\n", - " row, col, cast_ray(Vec3f.zero(), dir, spheres, lights).color\n", - " )\n", - "\n", - " parallelize[_process_row](height)\n", - "\n", - " return image\n", - "\n", - "\n", - "var lights = List[Light]()\n", - "lights.append(Light(Vec3f(-20, 20, 20), 1.0))\n", - "lights.append(Light(Vec3f(20, -20, 20), 0.5))\n", - "\n", - "render(create_image_with_spheres_and_lights(spheres, lights, H, W))\n" - ] + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAB2MAAAWMCAYAAAATKi3mAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8pXeV/AAAACXBIWXMAAATsAAAE7AGKbv1yAAEAAElEQVR4nOzd7a8syX0f9uqZOQ/3aR/uPnKXu3wQRVOk+KDYBkU7kWXHD3IcGVESGIkTJAaSGAaSF3l4nX8pSIDkRWJbQQLDEQwYgS1bgBNHpmSLkiiKS2p3ubv33jOdF33qdFV1dU/PnOl7zr37+QAHM1NdXV0zd2ZI7Hd+VU3btm0AAAAAAAAA4KhWNz0BAAAAAAAAgOeRMBYAAAAAAABgAZv0wenp6U3NAwAAAAAAAOCZ9+jRo6v7KmMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAA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AACuQBgLAAAAAAAAcAXCWAAAAAAAAIArEMYCAAAAAAAAXIEwFgAAAAAAAOAKhLEAAAAAAAAAVyCMBQAAAAAAALgCYSwAAAAAAADAFQhjAQAAAAAAAK5AGAsAAAAAAABwBcJYAAAAAAAAgCsQxgIAAAAAAABcgTAWAAAAAAAA4AqEsQAAAAAAAABXIIwFAAAAAAAAuAJhLAAAAAAAAMAVCGMBAAAAAAAArkAYCwAAAAAAAHAFwlgAAAAAAACAKxDGAgAAAAAAAFyBMBYAAAAAAADgCoSxAAAAAAAAAFcgjAUAAAAAAAC4AmEsAAAAAAAAwBUIYwEAAAAAAACuQBgLAAAAAAAAcAXCWAAAAAAAAIArEMYCAAAAAAAAXIEwFgAAAAAAAOAKhLEAAAAAAAAAVyCMBQAAAAAAALgCYSwAAAAAAADAFQhjAQAAAAAAAK5AGAsAAAAAAABwBcJYAAAAAAAAgCsQxgIAAAAAAABcgTAWAAAAAAAA4AqEsQAAAAAAAABXIIwFAAAAAAAAuAJhLAAAAAAAAMAVCGMBAAAAAAAArkAYCwAAAAAAAHAFwlgAAAAAAACAKxDGAgAAAAAAAFyBMBYAAAAAAADgCoSxAAAAAAAAAFcgjAUAAAAAAAC4AmEsAAAAAAAAwBUIYwEAAAAAAACuQBgLAAAAAAAAcAXCWAAAAAAAAIArEMYCAAAAAAAAXIEwFgAAAAAAAOAKhLEAAAAAAAAAVyCMBQAAAAAAALgCYSwAAAAAAADAFQhjAQAAAAAAAK5AGAsAAAAAAABwBcJYAAAAAAAAgCsQxgIAAAAAAABcgTAWAAAAAAAA4AqEsQAAAAAAAABXIIwFAAAAAAAAuAJhLAAAAAAAAMAVCGMBAAAAAAAArkAYCwAAAAAAAHAFwlgAAAAAAACAKxDGAgAAAAAAAFyBMBYAAAAAAADgCoSxAAAAAAAAAFcgjAUAAAAAAAC4AmEsAAAAAAAAwBUIYwEAAAAAAACuQBgLAAAAAAAAcAXCWAAAAAAAAIArEMYCAAAAAAAAXIEwFgAAAAAAAOAKhLEAAAAAAAAAVyCMBQAAAAAAALgCYSwAAAAAAADAFQhjAQAAAAAAAK5AGAsAAAAAAABwBcJYAAAAAAAAgCsQxgIAAAAAAABcgTAWAAAAAAAA4AqEsQAAAAAAAABXIIwFAAAAAAAAuAJhLAAAAAAAAMAVCGMBAAAAAAAArkAYCwAAAAAAAHAFwlgAAAAAAACAKxDGAgAAAAAAAFyBMBYAAAAAAADgCoSxAAAAAAAAAFcgjAUAAAAAAAC4AmEsAAAAAAAAwBUIYwEAAAAAAACuQBgLAAAAAAAAcAXCWAAAAAAAAIArEMYCAAAAAAAAXIEwFgAAAAAAAOAKhLEAAAAAAAAAVyCMBQAAAAAAALgCYSwAAAAAAADAFQhjAQAAAAAAAK5AGAsAAAAAAABwBcJYAAAAAAAAgCsQxgIAAAAAAABcgTAWAAAAAAAA4AqEsQAAAAAAAABXIIwFAAAAAAAAuAJhLAAAAAAAAMAVCGMBAAAAAAAArkAYCwAAAAAAAHAFwlgAAAAAAACAKxDGAgAAAAAAAFyBMBYAAAAAAADgCoSxAAAAAAAAAFcgjAUAAAAAAAC4AmEsAAAAAAAAwBUIYwEAAAAAAACuQBgLAAAAAAAAcAXCWAAAAAAAAIArEMYCAAAAAAAAXIEwFgAAAAAAAOAKhLEAAAAAAAAAVyCMBQAAAAAAALgCYSwAAAAAAADAFQhjAQAAAAAAAK5AGAsAAAAAAABwBcJYAAAAAAAAgCsQxgIAAAAAAABcgTAWAAAAAAAA4AqEsQAAAAAAAABXIIwFAAAAAAAAuAJhLAAAAAAAAMAVCGMBAAAAAAAArkAYCwAAAAAAAHAFwlgAAAAAAACAKxDGAgAAAAAAAFyBMBYAAAAAAADgCoSxAAAAAAAAAFcgjAUAAAAAAAC4AmEsAAAAAAAAwBUIYwEAAAAAAACuQBgLAAAAAAAAcAXCWAAAAAAAAIArEMYCAAAAAAAAXIEwFgAAAAAAAOAKhLEAAAAAAAAAVyCMBQAAAAAAALgCYSwAAAAAAADAFQhjAQAAAAAAAK5AGAsAAAAAAABwBcJYAAAAAAAAgCsQxgIAAAAAAABcgTAWAAAAAAAA4AqEsQAAAAAAAABXIIwFAAAAAAAAuAJhLAAAAAAAAMAVCGMBAAAAAAAArkAYCwAAAAAAAHAFwlgAAAAAAACAKxDGAgAAAAAAAFyBMBYAAAAAAADgCoSxAAAAAAAAAFcgjAUAAAAAAAC4AmEsAAAAAAAAwBUIYwEAAAAAAACuQBgLAAAAAAAAcAXCWAAAAAAAAIArEMYCAAAAAAAAXIEwFgAAAAAAAOAKhLEAAAAAAAAAVyCMBQAAAAAAALgCYSwAAAAAAADAFQhjAQAAAAAAAK5AGAsAAAAAAABwBcJYAAAAAAAAgCsQxgIAAAAAAABcgTAWAAAAAAAA4AqEsQAAAAAAAABXIIwFAAAAAAAAuAJhLAAAAAAAAMAVCGMBAAAAAAAArkAYCwAAAAAAAHAFwlgAAAAAAACAKxDGAgAAAAAAAFyBMBYAAAAAAADgCoSxAAAAAAAAAFcgjAUAAAAAAAC4AmEsAAAAAAAAwBUIYwEAAAAAAACuQBgLAAAAAAAAcAXCWAAAAAAAAIArEMYCAAAAAAAAXIEwFgAAAAAAAOAKhLEAAAAAAAAAVyCMBQAAAAAAALgCYSwAAAAAAADAFQhjAQAAAAAAAK5AGAsAAAAAAABwBcJYAAAAAAAAgCsQxgIAAAAAAABcgTAWAAAAAAAA4AqEsQAAAAAAAABXIIwFAAAAAAAAuAJhLAAAAAAAAMAVCGMBAAAAAAAArkAYCwAAAAAAAHAFwlgAAAAAAACAKxDGAgAAAAAAAFyBMBYAAAAAAADgCoSxAAAAAAAAAFcgjAUAAAAAAAC4AmEsAAAAAAAAwBUIYwEAAAAAAACuQBgLAAAAAAAAcAXCWAAAAAAAAIArEMYCAAAAAAAAXIEwFgAAAAAAAOAKhLEAAAAAAAAAVyCMBQAAAAAAALgCYSwAAAAAAADAFQhjAQAAAAAAAK5AGAsAAAAAAABwBcJYAAAAAAAAgCsQxgIAAAAAAABcgTAWAAAAAAAA4AqEsQAAAADw/2/fDk4AAAEYiOH+Q9cpDkGSCfo/CgAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmfbXo8AAAAAAAAA+I1nLAAAAAAAAEBAjAUAAAAAAAAIXNpczcumkMt4AAAAAElFTkSuQmCC" + }, + "metadata": {}, + "output_type": "display_data" }, { - "attachments": {}, - "cell_type": "markdown", - "id": "78043756-0ce9-455f-9e49-fb75268d4478", - "metadata": {}, - "source": [ - "## Step 5: Add specular lighting\n", - "\n", - "This section corresponds to the [Step 5 of the C++\n", - "tutorial](https://github.com/ssloy/tinyraytracer/wiki/Part-1:-understandable-raytracing#step-5-specular-lighting).\n", - "The changes to the code are quite minimal, but the rendered picture looks much\n", - "more realistic!" - ] - }, + "name": "stdout", + "output_type": "stream", + "text": [ + "\n" + ] + } + ], + "source": [ + "fn scene_intersect(\n", + " orig: Vec3f,\n", + " dir: Vec3f,\n", + " spheres: List[Sphere],\n", + " mut material: Material,\n", + " mut hit: Vec3f,\n", + " mut N: Vec3f,\n", + ") -> Bool:\n", + " var spheres_dist = inf[DType.float32]()\n", + "\n", + " for i in range(0, spheres.size):\n", + " var dist: Float32 = 0\n", + " if spheres[i].intersects(orig, dir, dist) and dist < spheres_dist:\n", + " spheres_dist = dist\n", + " hit = orig + dir * dist\n", + " N = (hit - spheres[i].center).normalize()\n", + " material = spheres[i].material\n", + "\n", + " return (spheres_dist != inf[DType.float32]())\n", + "\n", + "\n", + "fn cast_ray(\n", + " orig: Vec3f,\n", + " dir: Vec3f,\n", + " spheres: List[Sphere],\n", + " lights: List[Light],\n", + ") -> Material:\n", + " var point = Vec3f.zero()\n", + " var material = Material(Vec3f.zero())\n", + " var N = Vec3f.zero()\n", + " if not scene_intersect(orig, dir, spheres, material, point, N):\n", + " return bg_color\n", + "\n", + " var diffuse_light_intensity: Float32 = 0\n", + " for i in range(lights.size):\n", + " var light_dir = (lights[i].position - point).normalize()\n", + " diffuse_light_intensity += lights[i].intensity * max(light_dir @ N, 0)\n", + "\n", + " return material.color * diffuse_light_intensity\n", + "\n", + "\n", + "fn create_image_with_spheres_and_lights(\n", + " spheres: List[Sphere],\n", + " lights: List[Light],\n", + " height: Int,\n", + " width: Int,\n", + ") -> Image:\n", + " var image = Image(height, width)\n", + "\n", + " @parameter\n", + " fn _process_row(row: Int):\n", + " var y = -((Float32(2.0) * row + 1) / height - 1)\n", + " for col in range(width):\n", + " var x = ((Float32(2.0) * col + 1) / width - 1) * width / height\n", + " var dir = Vec3f(x, y, -1).normalize()\n", + " image.set(\n", + " row, col, cast_ray(Vec3f.zero(), dir, spheres, lights).color\n", + " )\n", + "\n", + " parallelize[_process_row](height)\n", + "\n", + " return image\n", + "\n", + "\n", + "var lights = List[Light]()\n", + "lights.append(Light(Vec3f(-20, 20, 20), 1.0))\n", + "lights.append(Light(Vec3f(20, -20, 20), 0.5))\n", + "\n", + "render(create_image_with_spheres_and_lights(spheres, lights, H, W))\n" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "78043756-0ce9-455f-9e49-fb75268d4478", + "metadata": {}, + "source": [ + "## Step 5: Add specular lighting\n", + "\n", + "This section corresponds to the [Step 5 of the C++\n", + "tutorial](https://github.com/ssloy/tinyraytracer/wiki/Part-1:-understandable-raytracing#step-5-specular-lighting).\n", + "The changes to the code are quite minimal, but the rendered picture looks much\n", + "more realistic!" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "3ed5bc7c-f335-48c4-abf8-31c75d6e79ad", + "metadata": {}, + "outputs": [ { - "cell_type": "code", - "execution_count": 12, - "id": "3ed5bc7c-f335-48c4-abf8-31c75d6e79ad", - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAB2MAAAWMCAYAAAATKi3mAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8pXeV/AAAACXBIWXMAAATsAAAE7AGKbv1yAAEAAElEQVR4nOzd6XM0SX4f9qxqAM81z9wzO7vckzK5q4OySJk2fTEsH7LCDof8yn+z7VCELdEKSZYVJk1LFimSy13O7FwPuv2ikMi7uhoPeoCZ+XwiEN1VlZWVVd14ZmO/+GVOh8PhEAAAAAAAAAC4V/NDDwAAAAAAAADgm0gYCwAAAAAAAHAGF/nG1dXVQ40DAAAAAAAA4Gvviy++uH2vMhYAAAAAAADgDISxAAAAAAAAAGcgjAUAAAAAAAA4A2EsAAAAAAAAwBkIYwEAAAAAAADOQBgLAAAAAAAAcAbCWAAAAAAAAIAzEMYCAAAAAAAAnIEwFgAAAAAAAOAMhLEAAAAAAAAAZyCMBQAAAAAAADgDYSwAAAAAAADAGQhjAQAAAAAAAM5AGAsAAAAAAABwBsJYAAAAAAAAgDMQxgIAAAAAAACcgTAWAAAAAAAA4AyEsQAAAAAAAABnIIwFAAAAAAAAOANhLAAAAAAAAMAZCGMBAAAAAAAAzkAYCwAAAAAAAHAGwlgAAAAAAACAMxDGAgAAAAAAAJyBMBYAAAAAAADgDISxAAAAAAAAAGcgjAUAAAAAAAA4A2EsAAAAAAAAwBkIYwEAAAAAAADOQBgLAAAAAAAAcAbCWAAAAAAAAIAzEMYCAAAAAAAAnIEwFgAAAAAAAOAMhLEAAAAAAAAAZyCMBQAAAAAAADgDYSwAAAAAAADAGQhjAQAAAAAAAM5AGAsAAAAAAABwBsJYAAAAAAAAgDMQxgIAAAAAAACcgTAWAAAAAAAA4AyEsQAAAAAAAABnIIwFAAAAAAAAOANhLAAAAAAAAMAZCGMBAAAAAAAAzkAYCwAAAAAAAHAGwlgAAAAAAACAMxDGAgAAAAAAAJyBMBYAAAAAAADgDISxAAAAAAAAAGcgjAUAAAAAAAA4A2EsAAAAAAAAwBkIYwEAAAAAAADOQBgLAAAAAAAAcAbCWAAAAAAAAIAzEMYCAAAAAAAAnIEwFgAAAAAAAOAMhLEAAAAAAAAAZyCMBQAAAAAAADgDYSwAAAAAAADAGQhjAQAAAAAAAM5AGAsAAAAAAABwBsJYAAAAAAAAgDMQxgIAAAAAAACcgTAWAAAAAAAA4AyEsQAAAAAAAABnIIwFAAAAAAAAOANhLAAAAAAAAMAZCGMBAAAAAAAAzkAYCwAAAAAAAHAGwlgAAAAAAACAMxDGAgAAAAAAAJyBMBYAAAAAAADgDISxAAAAAAAAAGcgjAUAAAAAAAA4A2EsAAAAAAAAwBkIYwEAAAAAAADOQBgLAAAAAAAAcAbCWAAAAAAAAIAzEMYCAAAAAAAAnIEwFgAAAAAAAOAMhLEAAAAAAAAAZyCMBQAAAAAAADgDYSwAAAAAAADAGQhjAQAAAAAAAM5AGAsAAAAAAABwBsJYAAAAAAAAgDMQxgIAAAAAAACcgTAWAAAAAAAA4AyEsQAAAAAAAABnIIwFAAAAAAAAOANhLAAAAAAAAMAZCGMBAAAAAAAAzkAYCwAAAAAAAHAGwlgAAAAAAACAMxDGAgAAAAAAAJyBMBYAAAAAAADgDISxAAAAAAAAAGcgjAUAAAAAAAA4A2EsAAAAAAAAwBkIYwEAAAAAAADOQBgLAAAAAAAAcAbCWAAAAAAAAIAzEMYCAAAAAAAAnIEwFgAAAAAAAOAMhLEAAAAAAAAAZyCMBQAAAAAAADgDYSwAAAAAAADAGQhjAQAAAAAAAM5AGAsAAAAAAABwBsJYAAAAAAAAgDMQxgIAAAAAAACcgTAWAAAAAAAA4AyEsQAAAAAAAABnIIwFAAAAAAAAOANhLAAAAAAAAMAZCGMBAAAAAAAAzkAYCwAAAAAAAHAGwlgAAAAAAACAMxDGAgAAAAAAAJyBMBYAAAAAAADgDISxAAAAAAAAAGcgjAUAAAAAAAA4A2EsAAAAAAAAwBkIYwEAAAAAAADOQBgLAAAAAAAAcAbCWAAAAAAAAIAzEMYCAAAAAAAAnIEwFgAAAAAAAOAMhLEAAAAAAAAAZyCMBQAAAAAAADgDYSwAAAAAAADAGQhjAQAAAAAAAM5AGAsAAAAAAABwBsJYAAAAAAAAgDMQxgIAAAAAAACcgTAWAAAAAAAA4AyEsQAAAAAAAABnIIwFAAAAAAAAOANhLAAAAAAAAMAZCGMBAAAAAAAAzkAYCwAAAAAAAHAGwlgAAAAAAACAMxDGAgAAAAAAAJyBMBYAAAAAAADgDISxAAAAAAAAAGcgjAUAAAAAAAA4A2EsAAAAAAAAwBkIYwEAAAAAAADOQBgLAAAAAAAAcAbCWAAAAAAAAIAzEMYCAAAAAAAAnIEwFgAAAAAAAOAMhLEAAAAAAAAAZyCMBQAAAAAAADgDYSwAAAAAAADAGQhjAQAAAAAAAM5AGAsAAAAAAABwBsJYAAAAAAAAgDMQxgIAAAAAAACcgTAWAAAAAAAA4AyEsQAAAAAAAABnIIwFAAAAAAAAOANhLAAAAAAAAMAZCGMBAAAAAAAAzkAYCwAAAAAAAHAGwlgAAAAAAACAMxDGAgAAAAAAAJyBMBYAAAAAAADgDISxAAAAAAAAAGcgjAUAAAAAAAA4A2EsAAAAAAAAwBkIYwEAAAAAAADOQBgLAAAAAAAAcAbCWAAAAAAAAIAzEMYCAAAAAAAAnIEwFgAAAAAAAOAMhLEAAAAAAAAAZyCMBQAAAAAAADgDYSwAAAAAAADAGQhjAQAAAAAAAM5AGAsAAAAAAABwBsJYAAAAAAAAgDMQxgIAAAAAAACcgTAWAAAAAAAA4AyEsQAAAAAAAABnIIwFAAAAAAAAOANhLAAAAAAAAMAZCGMBAAAAAAAAzkAYCwAAAAAAAHAGwlgAAAAAAACAMxDGAgAAAAAAAJyBMBYAAAAAAADgDISxAAAAAAAAAGcgjAUAAAAAAAA4A2EsAAAAAAAAwBkIYwEAAAAAAADOQBgLAAAAAAAAcAbCWAAAAAAAAIAzEMYCAAAAAAAAnIEwFgAAAAAAAOAMhLEAAAAAAAAAZyCMBQAAAAAAADgDYSwAAAAAAADAGQhjAQAAAAAAAM5AGAsAAAAAAABwBsJYAAAAAAAAgDMQxgIAAAAAAACcgTAWAAAAAAAA4AyEsQAAAAAAAABnIIwFAAAAAAAAOANhLAAAAAAAAMAZCGMBAAAAAAAAzkAYCwAAAAAAAHAGwlgAAAAAAACAMxDGAgAAAAAAAJyBMBYAAAAAAADgDISxAAAAAAAAAGcgjAUAAAAAAAA4A2EsAAAAAAAAwBkIYwEAAAAAAADOQBgLAAAAAAAAcAbCWAAAAAAAAIAzEMYCAAAAAAAAnIEwFgAAAAAAAOAMhLEAAAAAAAAAZyCMBQAAAAAAADgDYSwAAAAAAADAGQhjAQAAAAAAAM5AGAsAAAAAAABwBsJYAAAAAAAAgDMQxgIAAAAAAACcgTAWAAAAAAAA4AyEsQAAAAAAAABnIIwFAAAAAAAAOANhLAAAAAAAAMAZCGMBAAAAAAAAzkAYCwAAAAAAAHAGwlgAAAAAAACAMxDGAgAAAAAAAJyBMBYAAAAAAADgDISxAAAAAAAAAGcgjAUAAAAAAAA4A2EsAAAAAAAAwBkIYwEAAAAAAADOQBgLAAAAAAAAcAbCWAAAAAAAAIAzEMYCAAAAAAAAnIEwFgAAAAAAAOAMhLEAAAAAAAAAZyCMBQAAAAAAADgDYSwAAAAAAADAGQhjAQAAAAAAAM5AGAsAAAAAAABwBsJYAAAAAAAAgDMQxgIAAAAAAACcgTAWAAAAAAAA4AyEsQAAAAAAAABnIIwFAAAAAAAAOANhLAAAAAAAAMAZCGMBAAAAAAAAzkAYCwAAAAAAAHAGwlgAAAAAAACAMxDGAgAAAAAAAJyBMBYAAAAAAADgDISxAAAAAAAAAGcgjAUAAAAAAAA4A2EsAAAAAAAAwBkIYwEAAAAAAADOQBgLAAAAAAAAcAbCWAAAAAAAAIAzEMYCAAAAAAAAnIEwFgAAAAAAAOAMhLEAAAAAAAAAZyCMBQAAAAAAADgDYSwAAAAAAADAGQhjAQAAAAAAAM5AGAsAAAAAAABwBsJYAAAAAAAAgDMQxgIAAAAAAACcgTAWAAAAAAAA4AyEsQAAAAAAAABnIIwFAAAAAAAAOANhLAAAAAAAAMAZCGMBAAAAAAAAzkAYCwAAAAAAAHAGwlgAAAAAAACAMxDGAgAAAAAAAJyBMBYAAAAAAADgDISxAAAAAAAAAGcgjAUAAAAAAAA4A2EsAAAAAAAAwBkIYwEAAAAAAADOQBgLAAAAAAAAcAbCWAAAAAAAAIAzEMYCAAAAAAAAnIEwFgAAAAAAAOAMhLEAAAAAAAAAZyCMBQAAAAAAADgDYSwAAAAAAADAGQhjAQAAAAAAAM5AGAsAAAAAAABwBsJYAAAAAAAAgDMQxgIAAAAAAACcgTAWAAAAAAAA4AyEsQAAAAAAAABnIIwFAAAAAAAAOANhLAAAAAAAAMAZCGMBAAAAAAAAzkAYCwAAAAAAAHAGwlgAAAAAAACAMxDGAgAAAAAAAJyBMBYAAAAAAADgDISxAAAAAAAAAGcgjAUAAAAAAAA4A2EsAAAAAAAAwBkIYwEAAAAAAADOQBgLAAAAAAAAcAbCWAAAAAAAAIAzEMYCAAAA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XjcWAAAAAAC8PipjAQAAAODLQq8f+6bN68ECAAAAAIDLojIWAAAAAL6MCEwBAAAAAHirDF/0AAAAAAAAAAAAAADgbUQYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwD///bt4AQAEICBGO4/dJ3iECSZoP+jAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABA42/Z6BAAAAAAAAMBvPGMBAAAAAAAAAmIsAAAAAAAAQOACaazXSuW+u20AAAAASUVORK5CYII=" - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n" - ] - } - ], - "source": [ - "fn reflect(I: Vec3f, N: Vec3f) -> Vec3f:\n", - " return I - N * (I @ N) * 2.0\n", - "\n", - "\n", - "fn cast_ray(\n", - " orig: Vec3f,\n", - " dir: Vec3f,\n", - " spheres: List[Sphere],\n", - " lights: List[Light],\n", - ") -> Material:\n", - " var point = Vec3f.zero()\n", - " var material = Material(Vec3f.zero())\n", - " var N = Vec3f.zero()\n", - " if not scene_intersect(orig, dir, spheres, material, point, N):\n", - " return bg_color\n", - "\n", - " var diffuse_light_intensity: Float32 = 0\n", - " var specular_light_intensity: Float32 = 0\n", - " for i in range(lights.size):\n", - " var light_dir = (lights[i].position - point).normalize()\n", - " diffuse_light_intensity += lights[i].intensity * max(light_dir @ N, 0)\n", - " specular_light_intensity += (\n", - " pow(\n", - " max(-reflect(-light_dir, N) @ dir, 0.0),\n", - " material.specular_component,\n", - " )\n", - " * lights[i].intensity\n", - " )\n", - "\n", - " var result = material.color * diffuse_light_intensity * material.albedo.data[\n", - " 0\n", - " ] + Vec3f(\n", - " 1.0, 1.0, 1.0\n", - " ) * specular_light_intensity * material.albedo.data[\n", - " 1\n", - " ]\n", - " var result_max = max(result[0], max(result[1], result[2]))\n", - " # Cap the resulting vector\n", - " if result_max > 1:\n", - " return result * (1.0 / result_max)\n", - " return result\n", - "\n", - "\n", - "fn create_image_with_spheres_and_specular_lights(\n", - " spheres: List[Sphere],\n", - " lights: List[Light],\n", - " height: Int,\n", - " width: Int,\n", - ") -> Image:\n", - " var image = Image(height, width)\n", - "\n", - " @parameter\n", - " fn _process_row(row: Int):\n", - " var y = -((Float32(2.0) * row + 1) / height - 1)\n", - " for col in range(width):\n", - " var x = ((Float32(2.0) * col + 1) / width - 1) * width / height\n", - " var dir = Vec3f(x, y, -1).normalize()\n", - " image.set(\n", - " row, col, cast_ray(Vec3f.zero(), dir, spheres, lights).color\n", - " )\n", - "\n", - " parallelize[_process_row](height)\n", - "\n", - " return image\n", - "\n", - "render(create_image_with_spheres_and_specular_lights(spheres, lights, H, W))\n" - ] + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAB2MAAAWMCAYAAAATKi3mAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8pXeV/AAAACXBIWXMAAATsAAAE7AGKbv1yAAEAAElEQVR4nOzd6XM0SX4f9qxqAM81z9wzO7vckzK5q4OySJk2fTEsH7LCDof8yn+z7VCELdEKSZYVJk1LFimSy13O7FwPuv2ikMi7uhoPeoCZ+XwiEN1VlZWVVd14ZmO/+GVOh8PhEAAAAAAAAAC4V/NDDwAAAAAAAADgm0gYCwAAAAAAAHAGF/nG1dXVQ40DAAAAAAAA4Gvviy++uH2vMhYAAAAAAADgDISxAAAAAAAAAGcgjAUAAAAAAAA4A2EsAAAAAAAAwBkIYwEAAAAAAADOQBgLAAAAAAAAcAbCWAAAAAAAAIAzEMYCAAAAAAAAnIEwFgAAAAAAAOAMhLEAAAAAAAAAZyCMBQAAAAAAADgDYSwAAAAAAADAGQhjAQAAAAAAAM5AGAsAAAAAAABwBsJYAAAAAAAAgDMQxgIAAAAAAACcgTAWAAAAAAAA4AyEsQAAAAAAAABnIIwFAAAAAAAAOANhLAAAAAAAAMAZCGMBAAAAAAAAzkAYCwAAAAAAAHAGwlgAAAAAAACAMxDGAgAAAAAAAJyBMBYAAAAAAADgDISxAAAAAAAAAGcgjAUAAAAAAAA4A2EsAAAAAAAAwBkIYwEAAAAAAADOQBgLAAAAAAAAcAbCWAAAAAAAAIAzEMYCAAAAAAAAnIEwFgAAAAAAAOAMhLEAAAAAAAAAZyCMBQAAAAAAADgDYSwAAAAAAADAGQhjAQAAAAAAAM5AGAsAAAAAAABwBsJYAAAAAAAAgDMQxgIAAAAAAACcgTAWAAAAAAAA4AyEsQAAAAAAAABnIIwFAAAAAAAAOANhLAAAAAAAAMAZCGMBAAAAAAAAzkAYCwAAAAAAAHAGwlgAAAAAAACAMxDGAgAAAAAAAJyBMBYAAAAAAADgDISxAAAAAAAAAGcgjAUAAAAAAAA4A2EsAAAAAAAAwBkIYwEAAAAAAADOQBgLAAAAAAAAcAbCWAAAAAAAAIAzEMYCAAAAAAAAnIEwFgAAAAAAAOAMhLEAAAAAAAAAZyCMBQAAAAAAADgDYSwAAAAAAADAGQhjAQAAAAAAAM5AGAsAAAAAAABwBsJYAAAAAAAAgDMQxgIAAAAAAACcgTAWAAAAAAAA4AyEsQAAAAAAAABnIIwFAAAAAAAAOANhLAAAAAAAAMAZCGMBAAAAAAAAzkAYCwAAAAAAAHAGwlgAAAAAAACAMxDGAgAAAAAAAJyBMBYAAAAAAADgDISxAAAAAAAAAGcgjAUAAAAAAAA4A2EsAAAAAAAAwBkIYwEAAAAAAADOQBgLAAAAAAAAcAbCWAAAAAAAAIAzEMYCAAAAAAAAnIEwFgAAAAAAAOAMhLEAAAAAAAAAZyCMBQAAAAAAADgDYSwAAAAAAADAGQhjAQAAAAAAAM5AGAsAAAAAAABwBsJYAAAAAAAAgDMQxgIAAAAAAACcgTAWAAAAAAAA4AyEsQAAAAAAAABnIIwFAAAAAAAAOANhLAAAAAAAAMAZCGMBAAAAAAAAzkAYCwAAAAAAAHAGwlgAAAAAAACAMxDGAgAAAAAAAJyBMBYAAAAAAADgDISxAAAAAAAAAGcgjAUAAAAAAAA4A2EsAAAAAAAAwBkIYwEAAAAAAADOQBgLAAAAAAAAcAbCWAAAAAAAAIAzEMYCAAAAAAAAnIEwFgAAAAAAAOAMhLEAAAAAAAAAZyCMBQAAAAAAADgDYSwAAAAAAADAGQhjAQAAAAAAAM5AGAsAAAAAAABwBsJYAAAAAAAAgDMQxgIAAAAAAACcgTAWAAAAAAAA4AyEsQAAAAAAAABnIIwFAAAAAAAAOANhLAAAAAAAAMAZCGMBAAAAAAAAzkAYCwAAAAAAAHAGwlgAAAAAAACAMxDGAgAAAAAAAJyBMBYAAAAAAADgDISxAAAAAAAAAGcgjAUAAAAAAAA4A2EsAAAAAAAAwBkIYwEAAAAAAADOQBgLAAAAAAAAcAbCWAAAAAAAAIAzEMYCAAAAAAAAnIEwFgAAAAAAAOAMhLEAAAAAAAAAZyCMBQAAAAAAADgDYSwAAAAAAADAGQhjAQAAAAAAAM5AGAsAAAAAAABwBsJYAAAAAAAAgDMQxgIAAAAAAACcgTAWAAAAAAAA4AyEsQAAAAAAAABnIIwFAAAAAAAAOANhLAAAAAAAAMAZCGMBAAAAAAAAzkAYCwAAAAAAAHAGwlgAAAAAAACAMxDGAgAAAAAAAJyBMBYAAAAAAADgDISxAAAAAAAAAGcgjAUAAAAAAAA4A2EsAAAAAAAAwBkIYwEAAAAAAADOQBgLAAAAAAAAcAbCWAAAAAAAAIAzEMYCAAAAAAAAnIEwFgAAAAAAAOAMhLEAAAAAAAAAZyCMBQAAAAAAADgDYSwAAAAAAADAGQhjAQAAAAAAAM5AGAsAAAAAAABwBsJYAAAAAAAAgDMQxgIAAAAAAACcgTAWAAAAAAAA4AyEsQAAAAAAAABnIIwFAAAAAAAAOANhLAAAAAAAAMAZCGMBAAAAAAAAzkAYCwAAAAAAAHAGwlgAAAAAAACAMxDGAgAAAAAAAJyBMBYAAAAAAADgDISxAAAAAAAAAGcgjAUAAAAAAAA4A2EsAAAAAAAAwBkIYwEAAAAAAADOQBgLAAAAAAAAcAbCWAAAAAAAAIAzEMYCAAAAAAAAnIEwFgAAAAAAAOAMhLEAAAAAAAAAZyCMBQAAAAAAADgDYSwAAAAAAADAGQhjAQAAAAAAAM5AGAsAAAAAAABwBsJYAAAAAAAAgDMQxgIAAAAAAACcgTAWAAAAAAAA4AyEsQAAAAAAAABnIIwFAAAAAAAAOANhLAAAAAAAAMAZCGMBAAAAAAAAzkAYCwAAAAAAAHAGwlgAAAAAAACAMxDGAgAAAAAAAJyBMBYAAAAAAADgDISxAAAAAAAAAGcgjAUAAAAAAAA4A2EsAAAAAAAAwBkIYwEAAAAAAADOQBgLAAAAAAAAcAbCWAAAAAAAAIAzEMYCAAAAAAAAnIEwFgAAAAAAAOAMhLEAAAAAAAAAZyCMBQAAAAAAADgDYSwAAAAAAADAGQhjAQAAAAAAAM5AGAsAAAAAAABwBsJYAAAAAAAAgDMQxgIAAAAAAACcgTAWAAAAAAAA4AyEsQAAAAAAAABnIIwFAAAAAAAAOANhLAAAAAAAAMAZCGMBAAAAAAAAzkAYCwAAAAAAAHAGwlgAAAAAAACAMxDGAgAAAAAAAJyBMBYAAAAAAADgDISxAAAAAAAAAGcgjAUAAAAAAAA4A2EsAAAAAAAAwBkIYwEAAAAAAADOQBgLAAAAAAAAcAbCWAAAAAAAAIAzEMYCAAAAAAAAnIEwFgAAAAAAAOAMhLEAAAAAAAAAZyCMBQAAAAAAADgDYSwAAAAAAADAGQhjAQAAAAAAAM5AGAsAAAAAAABwBsJYAAAAAAAAgDMQxgIAAAAAAACcgTAWAAAAAAAA4AyEsQAAAAAAAABnIIwFAAAAAAAAOANhLAAAAAAAAMAZCGMBAAAAAAAAzkAYCwAAAAAAAHAGwlgAAAAAAACAMxDGAgAAAAAAAJyBMBYAAAAAAADgDISxAAAAAAAAAGcgjAUAAAAAAAA4A2EsAAAAAAAAwBkIYwEAAAAAAADOQBgLAAAAAAAAcAbCWAAAAAAAAIAzEMYCAAAAAAAAnIEwFgAAAAAAAOAMhLEAAAAAAAAAZyCMBQAAAAAAADgDYSwAAAAAAADAGQhjAQAAAAAAAM5AGAsAAAAAAABwBsJYAAAAAAAAgDMQxgIAAAAAAACcgTAWAAAAAAAA4AyEsQAAAAAAAABnIIwFAAAAAAAAOANhLAAAAAAAAMAZCGMBAAAAAAAAzkAYCwAAAAAAAHAGwlgAAAAAAACAMxDGAgAAAAAAAJyBMBYAAAAAAADgDISxAAAAAAAAAGcgjAUAAAAAAAA4A2EsAAAAAAAAwBkIYwEAAAAAAADOQBgLAAAAAAAAcAbCWAAAAAAAAIAzEMYCAAAAAAAAnIEwFgAAAAAAAOAMhLEAAAAAAAAAZyCMBQAAAAAAADgDYSwAAAAAAADAGQhjAQAAAAAAAM5AGAsAAAAAAABwBsJYAAAAAAAAgDMQxgIAAAAAAACcgTAWAAAAAAAA4AyEsQAAAAAAAABnIIwFAAAAAAAAOANhLAAAAAAAAMAZCGMBAAAAAAAAzkAYCwAAAAAAAHAGwlgAAAAAAACAMxDGAgAAAAAAAJyBMBYAAAAAAADgDISxAAAAAAAAAGcgjAUAAAAAAAA4A2EsAAAAAAAAwBkIYwEAAAAAAADOQBgLAAAAAAAAcAbCWAAAAAAAAIAzEMYCAAAAAAAAnIEwFgAAAAAAAOAMhLEAAAAAAAAAZyCMBQAAAAAAADgDYSwAAAAAAADAGQhjAQAAAAAAAM5AGAsAAAAAAABwBsJYAAAAAAAAgDMQxgIAAAAAAACcgTAWAAAAAAAA4AyEsQAAAAAAAABnIIwFAAAAAAAAOANhLAAAAAAAAMAZCGMBAAAAAAAAzkAYCwAAAAAAAHAGwlgAAAAAAACAMxDGAgAAAAAAAJyBMBYAAAAAAADgDISxAAAAAAAAAGcgjAUAAAAAAAA4A2EsAAAAAAAAwBkIYwEAAAAAAADOQBgLAAAAAAAAcAbCWAAAAAAAAIAzEMYCAAAA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XjcWAAAAAAC8PipjAQAAAODLQq8f+6bN68ECAAAAAIDLojIWAAAAAL6MCEwBAAAAAHirDF/0AAAAAAAAAAAAAADgbUQYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwD///bt4AQAEICBGO4/dJ3iECSZoP+jAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABA42/Z6BAAAAAAAAMBvPGMBAAAAAAAAAmIsAAAAAAAAQOACaazXSuW+u20AAAAASUVORK5CYII=" + }, + "metadata": {}, + "output_type": "display_data" }, { - "attachments": {}, - "cell_type": "markdown", - "id": "a6e7fc32", - "metadata": {}, - "source": [ - "## Step 6: Add background\n", - "\n", - "As a last step, let's use an image for the background instead of a uniform\n", - "fill. The only code that we need to change is the code where we used to return\n", - "`bg_color`. Now we will determine a point in the background image to which the\n", - "ray is directed and draw that." - ] - }, + "name": "stdout", + "output_type": "stream", + "text": [ + "\n" + ] + } + ], + "source": [ + "fn reflect(I: Vec3f, N: Vec3f) -> Vec3f:\n", + " return I - N * (I @ N) * 2.0\n", + "\n", + "\n", + "fn cast_ray(\n", + " orig: Vec3f,\n", + " dir: Vec3f,\n", + " spheres: List[Sphere],\n", + " lights: List[Light],\n", + ") -> Material:\n", + " var point = Vec3f.zero()\n", + " var material = Material(Vec3f.zero())\n", + " var N = Vec3f.zero()\n", + " if not scene_intersect(orig, dir, spheres, material, point, N):\n", + " return bg_color\n", + "\n", + " var diffuse_light_intensity: Float32 = 0\n", + " var specular_light_intensity: Float32 = 0\n", + " for i in range(lights.size):\n", + " var light_dir = (lights[i].position - point).normalize()\n", + " diffuse_light_intensity += lights[i].intensity * max(light_dir @ N, 0)\n", + " specular_light_intensity += (\n", + " pow(\n", + " max(-reflect(-light_dir, N) @ dir, 0.0),\n", + " material.specular_component,\n", + " )\n", + " * lights[i].intensity\n", + " )\n", + "\n", + " var result = material.color * diffuse_light_intensity * material.albedo.data[\n", + " 0\n", + " ] + Vec3f(\n", + " 1.0, 1.0, 1.0\n", + " ) * specular_light_intensity * material.albedo.data[\n", + " 1\n", + " ]\n", + " var result_max = max(result[0], max(result[1], result[2]))\n", + " # Cap the resulting vector\n", + " if result_max > 1:\n", + " return result * (1.0 / result_max)\n", + " return result\n", + "\n", + "\n", + "fn create_image_with_spheres_and_specular_lights(\n", + " spheres: List[Sphere],\n", + " lights: List[Light],\n", + " height: Int,\n", + " width: Int,\n", + ") -> Image:\n", + " var image = Image(height, width)\n", + "\n", + " @parameter\n", + " fn _process_row(row: Int):\n", + " var y = -((Float32(2.0) * row + 1) / height - 1)\n", + " for col in range(width):\n", + " var x = ((Float32(2.0) * col + 1) / width - 1) * width / height\n", + " var dir = Vec3f(x, y, -1).normalize()\n", + " image.set(\n", + " row, col, cast_ray(Vec3f.zero(), dir, spheres, lights).color\n", + " )\n", + "\n", + " parallelize[_process_row](height)\n", + "\n", + " return image\n", + "\n", + "render(create_image_with_spheres_and_specular_lights(spheres, lights, H, W))\n" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "a6e7fc32", + "metadata": {}, + "source": [ + "## Step 6: Add background\n", + "\n", + "As a last step, let's use an image for the background instead of a uniform\n", + "fill. The only code that we need to change is the code where we used to return\n", + "`bg_color`. Now we will determine a point in the background image to which the\n", + "ray is directed and draw that." + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "3de30ee3", + "metadata": {}, + "outputs": [ { - "cell_type": "code", - "execution_count": 13, - "id": "3de30ee3", - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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" - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n" - ] - } - ], - "source": [ - "fn cast_ray(\n", - " orig: Vec3f,\n", - " dir: Vec3f,\n", - " spheres: List[Sphere],\n", - " lights: List[Light],\n", - " bg: Image,\n", - ") -> Material:\n", - " var point = Vec3f.zero()\n", - " var material = Material(Vec3f.zero())\n", - " var N = Vec3f.zero()\n", - " if not scene_intersect(orig, dir, spheres, material, point, N):\n", - " # Background\n", - " # Given a direction vector `dir` we need to find a pixel in the image\n", - " var x = dir[0]\n", - " var y = dir[1]\n", - "\n", - " # Now map x from [-1,1] to [0,w-1] and do the same for y.\n", - " var w = bg.width\n", - " var h = bg.height\n", - " var col = int((1.0 + x) * 0.5 * (w - 1))\n", - " var row = int((1.0 + y) * 0.5 * (h - 1))\n", - " return Material(bg.pixels[bg._pos_to_index(row, col)])\n", - "\n", - " var diffuse_light_intensity: Float32 = 0\n", - " var specular_light_intensity: Float32 = 0\n", - " for i in range(lights.size):\n", - " var light_dir = (lights[i].position - point).normalize()\n", - " diffuse_light_intensity += lights[i].intensity * max(light_dir @ N, 0)\n", - " specular_light_intensity += (\n", - " pow(\n", - " max(-reflect(-light_dir, N) @ dir, 0.0),\n", - " material.specular_component,\n", - " )\n", - " * lights[i].intensity\n", - " )\n", - "\n", - " var result = material.color * diffuse_light_intensity * material.albedo.data[\n", - " 0\n", - " ] + Vec3f(\n", - " 1.0, 1.0, 1.0\n", - " ) * specular_light_intensity * material.albedo.data[\n", - " 1\n", - " ]\n", - " var result_max = max(result[0], max(result[1], result[2]))\n", - " # Cap the resulting vector\n", - " if result_max > 1:\n", - " return result * (1.0 / result_max)\n", - " return result\n", - "\n", - "\n", - "fn create_image_with_spheres_and_specular_lights(\n", - " spheres: List[Sphere],\n", - " lights: List[Light],\n", - " height: Int,\n", - " width: Int,\n", - " bg: Image,\n", - ") -> Image:\n", - " var image = Image(height, width)\n", - "\n", - " @parameter\n", - " fn _process_row(row: Int):\n", - " var y = -((Float32(2.0) * row + 1) / height - 1)\n", - " for col in range(width):\n", - " var x = ((Float32(2.0) * col + 1) / width - 1) * width / height\n", - " var dir = Vec3f(x, y, -1).normalize()\n", - " image.set(\n", - " row, col, cast_ray(Vec3f.zero(), dir, spheres, lights, bg).color\n", - " )\n", - "\n", - " parallelize[_process_row](height)\n", - "\n", - " return image\n", - "\n", - "\n", - "var bg = load_image(\"images/background.png\")\n", - "render(\n", - " create_image_with_spheres_and_specular_lights(spheres, lights, H, W, bg)\n", - ")\n" - ] + "data": { + "image/png": "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" + }, + "metadata": {}, + "output_type": "display_data" }, { - "attachments": {}, - "cell_type": "markdown", - "id": "766de19f-200c-4dce-8678-b36cc3c3dc93", - "metadata": {}, - "source": [ - "## Next steps\n", - "\n", - "We've only explored the basics of ray tracing here, but you can add shadows,\n", - "reflections and so much more! Fortunately these are explained in [the C++\n", - "tutorial](https://github.com/ssloy/tinyraytracer/wiki/Part-1:-understandable-raytracing),\n", - "and we leave the corresponding Mojo implementations as an exercise for you." - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Mojo", - "language": "mojo", - "name": "mojo-jupyter-kernel" - }, - "language_info": { - "codemirror_mode": { - "name": "mojo" - }, - "file_extension": ".mojo", - "mimetype": "text/x-mojo", - "name": "mojo" + "name": "stdout", + "output_type": "stream", + "text": [ + "\n" + ] } + ], + "source": [ + "fn cast_ray(\n", + " orig: Vec3f,\n", + " dir: Vec3f,\n", + " spheres: List[Sphere],\n", + " lights: List[Light],\n", + " bg: Image,\n", + ") -> Material:\n", + " var point = Vec3f.zero()\n", + " var material = Material(Vec3f.zero())\n", + " var N = Vec3f.zero()\n", + " if not scene_intersect(orig, dir, spheres, material, point, N):\n", + " # Background\n", + " # Given a direction vector `dir` we need to find a pixel in the image\n", + " var x = dir[0]\n", + " var y = dir[1]\n", + "\n", + " # Now map x from [-1,1] to [0,w-1] and do the same for y.\n", + " var w = bg.width\n", + " var h = bg.height\n", + " var col = int((1.0 + x) * 0.5 * (w - 1))\n", + " var row = int((1.0 + y) * 0.5 * (h - 1))\n", + " return Material(bg.pixels[bg._pos_to_index(row, col)])\n", + "\n", + " var diffuse_light_intensity: Float32 = 0\n", + " var specular_light_intensity: Float32 = 0\n", + " for i in range(lights.size):\n", + " var light_dir = (lights[i].position - point).normalize()\n", + " diffuse_light_intensity += lights[i].intensity * max(light_dir @ N, 0)\n", + " specular_light_intensity += (\n", + " pow(\n", + " max(-reflect(-light_dir, N) @ dir, 0.0),\n", + " material.specular_component,\n", + " )\n", + " * lights[i].intensity\n", + " )\n", + "\n", + " var result = material.color * diffuse_light_intensity * material.albedo.data[\n", + " 0\n", + " ] + Vec3f(\n", + " 1.0, 1.0, 1.0\n", + " ) * specular_light_intensity * material.albedo.data[\n", + " 1\n", + " ]\n", + " var result_max = max(result[0], max(result[1], result[2]))\n", + " # Cap the resulting vector\n", + " if result_max > 1:\n", + " return result * (1.0 / result_max)\n", + " return result\n", + "\n", + "\n", + "fn create_image_with_spheres_and_specular_lights(\n", + " spheres: List[Sphere],\n", + " lights: List[Light],\n", + " height: Int,\n", + " width: Int,\n", + " bg: Image,\n", + ") -> Image:\n", + " var image = Image(height, width)\n", + "\n", + " @parameter\n", + " fn _process_row(row: Int):\n", + " var y = -((Float32(2.0) * row + 1) / height - 1)\n", + " for col in range(width):\n", + " var x = ((Float32(2.0) * col + 1) / width - 1) * width / height\n", + " var dir = Vec3f(x, y, -1).normalize()\n", + " image.set(\n", + " row, col, cast_ray(Vec3f.zero(), dir, spheres, lights, bg).color\n", + " )\n", + "\n", + " parallelize[_process_row](height)\n", + "\n", + " return image\n", + "\n", + "\n", + "var bg = load_image(\"images/background.png\")\n", + "render(\n", + " create_image_with_spheres_and_specular_lights(spheres, lights, H, W, bg)\n", + ")\n" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "766de19f-200c-4dce-8678-b36cc3c3dc93", + "metadata": {}, + "source": [ + "## Next steps\n", + "\n", + "We've only explored the basics of ray tracing here, but you can add shadows,\n", + "reflections and so much more! Fortunately these are explained in [the C++\n", + "tutorial](https://github.com/ssloy/tinyraytracer/wiki/Part-1:-understandable-raytracing),\n", + "and we leave the corresponding Mojo implementations as an exercise for you." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Mojo", + "language": "mojo", + "name": "mojo-jupyter-kernel" }, - "nbformat": 4, - "nbformat_minor": 5 + "language_info": { + "codemirror_mode": { + "name": "mojo" + }, + "file_extension": ".mojo", + "mimetype": "text/x-mojo", + "name": "mojo" + } + }, + "nbformat": 4, + "nbformat_minor": 5 } From 4645771c62a6644a6947b4b8e9844664f43a69f7 Mon Sep 17 00:00:00 2001 From: modularbot Date: Sun, 8 Dec 2024 06:29:02 +0000 Subject: [PATCH 056/509] Update lockfiles to point to latest nightly version: 24.6.0.dev2024120805 --- examples/life/magic.lock | 829 ++++++++++++++++--------------- examples/magic.lock | 730 ++++++++++++++------------- examples/notebooks/magic.lock | 906 ++++++++++++++++++---------------- examples/operators/magic.lock | 730 ++++++++++++++------------- magic.lock | 730 ++++++++++++++------------- 5 files changed, 2032 insertions(+), 1893 deletions(-) diff --git a/examples/life/magic.lock b/examples/life/magic.lock index 3326e0e536..78ae0c08bf 100644 --- a/examples/life/magic.lock +++ b/examples/life/magic.lock @@ -25,11 +25,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.1-hab05fe4_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.2-hdeadb07_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h7bd072d_8.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.4-h3a84f74_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.5-h3a84f74_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.1-hf42f96a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-hf42f96a_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.6-h159bff8_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-h5558e3c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.7-ha6b94fc_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-hac138a2_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.10.0-h113e628_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.13.0-h3cf044e_1.conda @@ -83,7 +83,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/httptools-0.6.4-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda @@ -99,10 +99,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_h5888daf_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-hcf3f2e3_3_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-h36004a0_3_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-h36004a0_3_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-h56a123c_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-h3b07799_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-h8bbc2ab_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-h8bbc2ab_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-had74209_4_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libasprintf-0.22.5-he8f35ee_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libasprintf-devel-0.22.5-he8f35ee_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libavif16-1.1.1-h1909e37_2.conda @@ -146,7 +146,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libogg-1.3.5-h4ab18f5_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.28-pthreads_h94d23a6_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopus-1.3.1-h7f98852_1.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-hbdb145b_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-hf4f6db6_4_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.44-hadc24fc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.2-h5b01275_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_1.conda @@ -171,12 +171,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.9.4-hcb278e6_0.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.dev2024120705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120705-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120805-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120805-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.dev2024120705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120805-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/multiprocess-0.70.15-py312h98912ed_1.conda @@ -237,7 +237,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_1.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.7-h3ed165c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sdl2-2.30.10-h63c27ac_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/sdl2_image-2.8.2-h06ee604_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/sdl2_mixer-2.6.3-h8830914_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/sdl2_ttf-2.22.0-h08b1b5d_2.conda @@ -274,6 +274,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.11-hb9d3cd8_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxext-1.3.6-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxfixes-6.0.1-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrender-0.9.11-hb9d3cd8_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-xorgproto-2024.1-hb9d3cd8_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xxhash-0.8.2-hd590300_0.conda @@ -306,11 +307,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.1-hf4e072c_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.2-h10eb1bc_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h28a5e6a_8.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.4-h29aef15_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.5-h29aef15_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.1-h4c7db1d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h4c7db1d_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.6-hffbb33f_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h7085e57_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.7-h6c346da_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h5e41cbe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-core-cpp-1.14.0-h1887c18_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-identity-cpp-1.10.0-h47b0b28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-blobs-cpp-12.13.0-h185ecfd_1.conda @@ -364,7 +365,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/httptools-0.6.4-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda @@ -380,10 +381,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.0.0-h4de3ea5_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h5ad3122_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-hb63acf4_3_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-he2e0623_3_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-he2e0623_3_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-hc52ba39_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-ha2aff55_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h512cd83_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h512cd83_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h3644d33_4_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libasprintf-0.22.5-h87f4aca_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libasprintf-devel-0.22.5-h87f4aca_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libavif16-1.1.1-h3b0c220_2.conda @@ -427,7 +428,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libogg-1.3.5-h0b9eccb_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.28-pthreads_h9d3fd7e_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopus-1.3.1-hf897c2e_1.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-h553aec1_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-h34a048e_4_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.44-hc4a20ef_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.2-h029595c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_1.conda @@ -452,12 +453,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.9.4-hd600fc2_0.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.dev2024120705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120705-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120805-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120805-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.dev2024120705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120805-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/multiprocess-0.70.15-py312hdd3e373_1.conda @@ -518,7 +519,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_1.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.7-h2a74887_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sdl2-2.30.10-h93e764a_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sdl2_image-2.8.2-hd95cb85_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sdl2_mixer-2.6.3-h422cae6_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sdl2_ttf-2.22.0-h680d130_2.conda @@ -555,6 +556,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxau-1.0.11-h86ecc28_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxdmcp-1.1.5-h57736b2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxext-1.3.6-h57736b2_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxfixes-6.0.1-h57736b2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxrender-0.9.11-h57736b2_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-xorgproto-2024.1-h86ecc28_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xxhash-0.8.2-h31becfc_0.conda @@ -584,11 +586,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.1-hf483d09_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.2-h39f8ad8_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h68a0d7e_8.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.4-h840aca7_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.5-h840aca7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.1-h5d7ee29_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-h5d7ee29_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.6-h8474b10_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-h3b64406_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.7-ha310de4_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-he4d6490_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.14.0-hd50102c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.10.0-hc602bab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-blobs-cpp-12.13.0-h7585a09_1.conda @@ -640,7 +642,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/httptools-0.6.4-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda @@ -653,10 +655,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.16-ha0e7c42_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_hf9b8971_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-h5affd47_3_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-haafc02e_3_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-haafc02e_3_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-h4c1644f_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-h86d57b8_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-h1dc2043_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-h1dc2043_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-hf3d3107_4_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libasprintf-0.22.5-h8414b35_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libasprintf-devel-0.22.5-h8414b35_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libavif16-1.1.1-h45b7238_2.conda @@ -694,7 +696,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libogg-1.3.5-h99b78c6_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.28-openmp_hf332438_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopus-1.3.1-h27ca646_1.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-h3a603ae_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-hf4cc9e7_4_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.44-hc14010f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.2-h8f0b736_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h2348fd5_1.conda @@ -715,12 +717,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.9.4-hb7217d7_0.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.dev2024120705-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120705-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120705-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120805-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120805-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120805-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120805-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.dev2024120705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120805-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 @@ -779,7 +781,7 @@ environments: - 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/osx-arm64/safetensors-0.4.5-py312he431725_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sdl2-2.30.7-hf9b8971_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 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sdl2_mixer-2.6.3-h4fe3bdc_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sdl2_ttf-2.22.0-hda0f12e_2.conda @@ -1563,12 +1565,12 @@ packages: timestamp: 1731734668760 - kind: conda name: aws-c-s3 - version: 0.7.4 + version: 0.7.5 build: h29aef15_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.4-h29aef15_0.conda - sha256: 396517aca6bdbe2e3d8a6275b33865eeb0d09f0dd379c3cc55c36f6004b17f2a - md5: 1046cf15a47f06a0af07f674e477d807 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.5-h29aef15_0.conda + sha256: 2aef28beec88df561f7f4d0f7ec7fea6cf54a1d6c8516fd243a4269d320f06cb + md5: 98609602eb077c7b5225d3aa1467f789 depends: - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.0,<0.8.1.0a0 @@ -1580,16 +1582,16 @@ packages: - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 117398 - timestamp: 1733299233564 + size: 117067 + timestamp: 1733565203669 - kind: conda name: aws-c-s3 - version: 0.7.4 + version: 0.7.5 build: h3a84f74_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.4-h3a84f74_0.conda - sha256: 91c6f7aa3dd230bcefe2654469b0704c2bdb2574e6d0d7c56cf9e9071f44cc26 - md5: 7d029b9aa9decf4c0fb8a9a8940c9906 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.5-h3a84f74_0.conda + sha256: eb2534517bdaccf2953716e49e8b918ffe7e78a524c6321fae30c3dd7f46cb0d + md5: a13702b87657cf2d0cdd338fe55f4ba1 depends: - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 @@ -1602,16 +1604,16 @@ packages: - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 113660 - timestamp: 1733299194447 + size: 113877 + timestamp: 1733565162763 - kind: conda name: aws-c-s3 - version: 0.7.4 + version: 0.7.5 build: h840aca7_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.4-h840aca7_0.conda - sha256: 564bbb781c1aebfcdda43a0e82f447e34de1764c57ebc1733fe6437248f5b7c9 - md5: 02f78a084e101dee30c794f963549de4 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.5-h840aca7_0.conda + sha256: 30782a1392883d26a441fc2857985136888aa454efbea8b85bbcbb7a7ad3d2e2 + md5: 1d33c89e2462b6b0056bfb883b76d2fb depends: - __osx >=11.0 - aws-c-auth >=0.8.0,<0.8.1.0a0 @@ -1622,8 +1624,8 @@ packages: - aws-checksums >=0.2.2,<0.2.3.0a0 license: Apache-2.0 license_family: Apache - size: 97136 - timestamp: 1733299356527 + size: 98296 + timestamp: 1733565277623 - kind: conda name: aws-c-sdkutils version: 0.2.1 @@ -1724,15 +1726,14 @@ packages: timestamp: 1731687193373 - kind: conda name: aws-crt-cpp - version: 0.29.6 - build: h159bff8_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.6-h159bff8_2.conda - sha256: 04ca62caa764bb95f304af8486c1af7c4f76d4ad5204c494edcf86af653d2ad0 - md5: c498e6490834aacf7835c96403862881 + version: 0.29.7 + build: h6c346da_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.7-h6c346da_1.conda + sha256: 9a60a93dbe896acf533dded5f4ae11546ff4fb6a9fb0e06db6d915206ba0b1f2 + md5: cf87fc73eee6dbfc12dec79444d5dfc0 depends: - - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.0,<0.8.1.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 @@ -1740,23 +1741,23 @@ packages: - aws-c-http >=0.9.1,<0.9.2.0a0 - aws-c-io >=0.15.2,<0.15.3.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - - aws-c-s3 >=0.7.4,<0.7.5.0a0 + - aws-c-s3 >=0.7.5,<0.7.6.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 354822 - timestamp: 1733333950713 + size: 283237 + timestamp: 1733588714381 - kind: conda name: aws-crt-cpp - version: 0.29.6 - build: h8474b10_2 - build_number: 2 + version: 0.29.7 + build: ha310de4_1 + build_number: 1 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.6-h8474b10_2.conda - sha256: 5ca9df9516583076ea40129e71b103efaca21ca02f40b59d69485823613cbfba - md5: 54c898f166bcfbe06c2b7ac36360f371 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.7-ha310de4_1.conda + sha256: b5ab81d50b6cc2ff70dd56a16b5b9e1cbe8c69e9e357db2abf925d03c5d0133a + md5: 77769ed013cbf8824c1927407ea03c69 depends: - __osx >=11.0 - aws-c-auth >=0.8.0,<0.8.1.0a0 @@ -1766,23 +1767,24 @@ packages: - aws-c-http >=0.9.1,<0.9.2.0a0 - aws-c-io >=0.15.2,<0.15.3.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - - aws-c-s3 >=0.7.4,<0.7.5.0a0 + - aws-c-s3 >=0.7.5,<0.7.6.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - libcxx >=18 license: Apache-2.0 license_family: Apache - size: 235829 - timestamp: 1733334077172 + size: 236862 + timestamp: 1733588815005 - kind: conda name: aws-crt-cpp - version: 0.29.6 - build: hffbb33f_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.6-hffbb33f_2.conda - sha256: 5f9490edaddde550cf05861626175b648da73c84bcde61ac2a6a1bf1a8fd6982 - md5: fb8be2af168b63e0b77076a1dc6baa85 + version: 0.29.7 + build: ha6b94fc_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.7-ha6b94fc_1.conda + sha256: 5907a2c370f94e5f63c17e4347525d21eb1c00fbd8b731d79ec1eb4e857689ca + md5: f5fb6f6283deb0b4d2c187ad4a7b6d4d depends: + - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.0,<0.8.1.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 @@ -1790,50 +1792,52 @@ packages: - aws-c-http >=0.9.1,<0.9.2.0a0 - aws-c-io >=0.15.2,<0.15.3.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - - aws-c-s3 >=0.7.4,<0.7.5.0a0 + - aws-c-s3 >=0.7.5,<0.7.6.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 284031 - timestamp: 1733333955728 + size: 353873 + timestamp: 1733588735223 - kind: conda name: aws-sdk-cpp version: 1.11.458 - build: h3b64406_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-h3b64406_0.conda - sha256: ded5412750f5c29bdf8ef6bc5ab26e443dc4943bd69c9098a791d8a2bf9b184e - md5: 9a8d3ba158ff8ea08e17de366c238706 + build: h5e41cbe_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h5e41cbe_1.conda + sha256: b45305787a78f2bf7ecabc401b5bfe451509b434dd041a0a554572a70302d2f3 + md5: 1861b1fb86b336f1f53faaac5a76046c depends: - - __osx >=11.0 - aws-c-common >=0.10.3,<0.10.4.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - - aws-crt-cpp >=0.29.6,<0.29.7.0a0 + - aws-crt-cpp >=0.29.7,<0.29.8.0a0 - libcurl >=8.10.1,<9.0a0 - - libcxx >=18 + - libgcc >=13 + - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 2853609 - timestamp: 1733389337912 + size: 2910575 + timestamp: 1733576378398 - kind: conda name: aws-sdk-cpp version: 1.11.458 - build: h5558e3c_0 + build: hac138a2_1 + build_number: 1 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-h5558e3c_0.conda - sha256: 7eab747a5a3e1a46b9c85c591c30ca2d4e90c2cebeaec95c4fe016846efdfa14 - md5: b1919becd17fe224aacf708114231fda + url: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-hac138a2_1.conda + sha256: fdb9c94d7524c52837643428b1aab4f35bed3ba2862a57e1b03e63038c7c146f + md5: bbdd9589b1a32a80b0e3f98a2a482542 depends: - __glibc >=2.17,<3.0.a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - - aws-crt-cpp >=0.29.6,<0.29.7.0a0 + - aws-crt-cpp >=0.29.7,<0.29.8.0a0 - libcurl >=8.10.1,<9.0a0 - libgcc >=13 - libstdcxx >=13 @@ -1841,30 +1845,31 @@ packages: - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 3059100 - timestamp: 1733388777418 + size: 3071464 + timestamp: 1733576251149 - kind: conda name: aws-sdk-cpp version: 1.11.458 - build: h7085e57_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h7085e57_0.conda - sha256: 6d5327305721d18d650a3f8a377dc30e65600f59bd33fd4fcad106965b09b6b8 - md5: 005e0cc687a2421a4ad493e5b7058abe + build: he4d6490_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-he4d6490_1.conda + sha256: 61abc03dfbe372b258b8b6790bf3ad3a3265e02ce24b6b22bfe8f2fcab94954a + md5: 2941213b750689ace0862a6d695bb740 depends: + - __osx >=11.0 - aws-c-common >=0.10.3,<0.10.4.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - - aws-crt-cpp >=0.29.6,<0.29.7.0a0 + - aws-crt-cpp >=0.29.7,<0.29.8.0a0 - libcurl >=8.10.1,<9.0a0 - - libgcc >=13 - - libstdcxx >=13 + - libcxx >=18 - libzlib >=1.3.1,<2.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 2903434 - timestamp: 1733388870289 + size: 2847256 + timestamp: 1733576733615 - kind: conda name: azure-core-cpp version: 1.14.0 @@ -3163,6 +3168,7 @@ packages: depends: - python >=3.9 license: BSD-3-Clause + license_family: BSD size: 134726 timestamp: 1733493445080 - kind: conda @@ -3646,13 +3652,13 @@ packages: timestamp: 1733501478172 - kind: conda name: huggingface_hub - version: 0.26.3 + version: 0.26.5 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.3-pyhd8ed1ab_0.conda - sha256: 66ffed967463e4a25f1dc4ca699d85dd55d1d150fed214c6380f11a981e0acb7 - md5: 997fc223fbc616c262f2a32a22d433a4 + url: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.5-pyhd8ed1ab_0.conda + sha256: bdbf614d87155c7f9b8fe9c3d039528298119832e9f52959b15c522a9841eef7 + md5: 37236111cd92068e5af2f98cbb476642 depends: - filelock - fsspec >=2023.5.0 @@ -3664,9 +3670,8 @@ packages: - typing-extensions >=3.7.4.3 - typing_extensions >=3.7.4.3 license: Apache-2.0 - license_family: APACHE - size: 274858 - timestamp: 1733170279930 + size: 274900 + timestamp: 1733637007500 - kind: conda name: hyperframe version: 6.0.1 @@ -4165,30 +4170,32 @@ packages: - kind: conda name: libarrow version: 18.1.0 - build: h5affd47_3_cpu - build_number: 3 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-h5affd47_3_cpu.conda - sha256: 9dac7f7b96972a3c18549d8669269233ae9e7b25da56161bd85a86b98ca61f76 - md5: 3dc73b42851e6096542458eaf2c074ca + build: h3b07799_4_cpu + build_number: 4 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-h3b07799_4_cpu.conda + sha256: 8837dc6e60522eef63554654c45d18143006324c43391c6e8dc5d2b20997466d + md5: 27675c7172667268440306533e4928de depends: - - __osx >=11.0 - - aws-crt-cpp >=0.29.6,<0.29.7.0a0 + - __glibc >=2.17,<3.0.a0 + - aws-crt-cpp >=0.29.7,<0.29.8.0a0 - aws-sdk-cpp >=1.11.458,<1.11.459.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-identity-cpp >=1.10.0,<1.10.1.0a0 - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 - bzip2 >=1.0.8,<2.0a0 + - gflags >=2.2.2,<2.3.0a0 - glog >=0.7.1,<0.8.0a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - libbrotlidec >=1.1.0,<1.2.0a0 - libbrotlienc >=1.1.0,<1.2.0a0 - - libcxx >=18 + - libgcc >=13 - libgoogle-cloud >=2.31.0,<2.32.0a0 - libgoogle-cloud-storage >=2.31.0,<2.32.0a0 - libre2-11 >=2024.7.2 + - libstdcxx >=13 - libutf8proc >=2.9.0,<2.10.0a0 - libzlib >=1.3.1,<2.0a0 - lz4-c >=1.9.3,<1.10.0a0 @@ -4197,40 +4204,40 @@ packages: - snappy >=1.2.1,<1.3.0a0 - zstd >=1.5.6,<1.6.0a0 constrains: - - arrow-cpp <0.0a0 - - apache-arrow-proc =*=cpu - parquet-cpp <0.0a0 + - apache-arrow-proc =*=cpu + - arrow-cpp <0.0a0 license: Apache-2.0 - size: 5487846 - timestamp: 1733450423101 + license_family: APACHE + size: 8793521 + timestamp: 1733607374384 - kind: conda name: libarrow version: 18.1.0 - build: hb63acf4_3_cpu - build_number: 3 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-hb63acf4_3_cpu.conda - sha256: e972904b472008f902df9e584f59ff7716fc22efc1124d1dfc41c931852acc75 - md5: d98a11c3ba32554873aeb6a071baceaa + build: h86d57b8_4_cpu + build_number: 4 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-h86d57b8_4_cpu.conda + sha256: fe6b5eb4d6e71418343b62a0d322ede7be69999b28d9e492164c12e613cf3fa0 + md5: 23431b3fdbb32858d1533da5bc8fcc86 depends: - - aws-crt-cpp >=0.29.6,<0.29.7.0a0 + - __osx >=11.0 + - aws-crt-cpp >=0.29.7,<0.29.8.0a0 - aws-sdk-cpp >=1.11.458,<1.11.459.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-identity-cpp >=1.10.0,<1.10.1.0a0 - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 - bzip2 >=1.0.8,<2.0a0 - - gflags >=2.2.2,<2.3.0a0 - glog >=0.7.1,<0.8.0a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - libbrotlidec >=1.1.0,<1.2.0a0 - libbrotlienc >=1.1.0,<1.2.0a0 - - libgcc >=13 + - libcxx >=18 - libgoogle-cloud >=2.31.0,<2.32.0a0 - libgoogle-cloud-storage >=2.31.0,<2.32.0a0 - libre2-11 >=2024.7.2 - - libstdcxx >=13 - libutf8proc >=2.9.0,<2.10.0a0 - libzlib >=1.3.1,<2.0a0 - lz4-c >=1.9.3,<1.10.0a0 @@ -4243,20 +4250,20 @@ packages: - apache-arrow-proc =*=cpu - arrow-cpp <0.0a0 license: Apache-2.0 - size: 8048003 - timestamp: 1733452700958 + license_family: APACHE + size: 5482797 + timestamp: 1733605365656 - kind: conda name: libarrow version: 18.1.0 - build: hcf3f2e3_3_cpu - build_number: 3 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-hcf3f2e3_3_cpu.conda - sha256: a82f66f0a37ed3132e6b9faff9285d7ccbe950ccfe84edd6378fdee70ef2743e - md5: 196823c7752608cb6b5d5a7a33b17410 + build: ha2aff55_4_cpu + build_number: 4 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-ha2aff55_4_cpu.conda + sha256: 795950b73029fd4d3b7fee3427c39c7357287fd94244dd5a125ac0931d31aaa3 + md5: c4d60278cb00053df1a4f0600fd2ac2a depends: - - __glibc >=2.17,<3.0.a0 - - aws-crt-cpp >=0.29.6,<0.29.7.0a0 + - aws-crt-cpp >=0.29.7,<0.29.8.0a0 - aws-sdk-cpp >=1.11.458,<1.11.459.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-identity-cpp >=1.10.0,<1.10.1.0a0 @@ -4282,180 +4289,190 @@ packages: - snappy >=1.2.1,<1.3.0a0 - zstd >=1.5.6,<1.6.0a0 constrains: - - apache-arrow-proc =*=cpu - parquet-cpp <0.0a0 + - apache-arrow-proc =*=cpu - arrow-cpp <0.0a0 license: Apache-2.0 - size: 8796519 - timestamp: 1733453489520 -- kind: conda - name: libarrow-acero - version: 18.1.0 - build: h36004a0_3_cpu - build_number: 3 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-h36004a0_3_cpu.conda - sha256: 0733a303b2dd5998489099d6c258ee442d3f8243379d339f57700554d696fe41 - md5: 6d8f74ac97166e09cdf02109ed9905ce - depends: - - __glibc >=2.17,<3.0.a0 - - libarrow 18.1.0 hcf3f2e3_3_cpu - - libgcc >=13 - - libstdcxx >=13 - license: Apache-2.0 - size: 612773 - timestamp: 1733453636002 + license_family: APACHE + size: 8035987 + timestamp: 1733607600970 - kind: conda name: libarrow-acero version: 18.1.0 - build: haafc02e_3_cpu - build_number: 3 + build: h1dc2043_4_cpu + build_number: 4 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-haafc02e_3_cpu.conda - sha256: 214df0ac0f44dd792193d11c84dbf79a42ed0f663c7b1a06aa5ab755b93c1948 - md5: f3a050129b5012bd5fc381693f6eb2cd + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-h1dc2043_4_cpu.conda + sha256: fe8cb6feeed0858cb8e7cc8889ae20165527934778adb8f7b1f2f5d1f7ade16d + md5: e4ed6162593fbb01f4d742db4215f70c depends: - __osx >=11.0 - - libarrow 18.1.0 h5affd47_3_cpu + - libarrow 18.1.0 h86d57b8_4_cpu - libcxx >=18 license: Apache-2.0 - size: 483753 - timestamp: 1733450627207 + license_family: APACHE + size: 483574 + timestamp: 1733605591770 - kind: conda name: libarrow-acero version: 18.1.0 - build: he2e0623_3_cpu - build_number: 3 + build: h512cd83_4_cpu + build_number: 4 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-he2e0623_3_cpu.conda - sha256: 1560efabce824155dd841219c299c71352594b5e237dce0879c2d8f50c16047a - md5: fa54002b982019ecc0e93cb4b2c493e9 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h512cd83_4_cpu.conda + sha256: 9e88f04409da9ca2fedc5f7bf0987ff28e96d08742e59672f744ec4624a4c991 + md5: d532c42abe13841806d97f4d9cd6dcf5 depends: - - libarrow 18.1.0 hb63acf4_3_cpu + - libarrow 18.1.0 ha2aff55_4_cpu - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 - size: 578323 - timestamp: 1733452783322 + license_family: APACHE + size: 578174 + timestamp: 1733607685962 - kind: conda - name: libarrow-dataset + name: libarrow-acero version: 18.1.0 - build: h36004a0_3_cpu - build_number: 3 + build: h8bbc2ab_4_cpu + build_number: 4 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-h36004a0_3_cpu.conda - sha256: d5a0b4a2129a540548b0232df23e6940fe73d54e5ace5a31f5419d96a059f317 - md5: e9eac639d83b1c35f7743845b922d61a + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-h8bbc2ab_4_cpu.conda + sha256: b3b4ddb2718c96c93d9b50dbf8f66265af9198b55852b4d3424c13a79ec3f84d + md5: 82bcbfe424868ce66b5ab986999f534d depends: - __glibc >=2.17,<3.0.a0 - - libarrow 18.1.0 hcf3f2e3_3_cpu - - libarrow-acero 18.1.0 h36004a0_3_cpu + - libarrow 18.1.0 h3b07799_4_cpu - libgcc >=13 - - libparquet 18.1.0 hbdb145b_3_cpu - libstdcxx >=13 license: Apache-2.0 - size: 585416 - timestamp: 1733454137952 + license_family: APACHE + size: 610772 + timestamp: 1733607505368 - kind: conda name: libarrow-dataset version: 18.1.0 - build: haafc02e_3_cpu - build_number: 3 + build: h1dc2043_4_cpu + build_number: 4 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-haafc02e_3_cpu.conda - sha256: 7b105d363d5f71db88454b304e44166c17b2970ddb0297b482f3d8b39fb39308 - md5: 8c57e5a50f865a16cafd92f5a32c9faa + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-h1dc2043_4_cpu.conda + sha256: 862fb21b871666495b4bb5e63f5fcb66b93c08893e92412b01e2717e081836eb + md5: bb940b4c583e4c8e5a9f193fabdb5840 depends: - __osx >=11.0 - - libarrow 18.1.0 h5affd47_3_cpu - - libarrow-acero 18.1.0 haafc02e_3_cpu + - libarrow 18.1.0 h86d57b8_4_cpu + - libarrow-acero 18.1.0 h1dc2043_4_cpu - libcxx >=18 - - libparquet 18.1.0 h3a603ae_3_cpu + - libparquet 18.1.0 hf4cc9e7_4_cpu license: Apache-2.0 - size: 489900 - timestamp: 1733452479126 + license_family: APACHE + size: 489457 + timestamp: 1733607417337 - kind: conda name: libarrow-dataset version: 18.1.0 - build: he2e0623_3_cpu - build_number: 3 + build: h512cd83_4_cpu + build_number: 4 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-he2e0623_3_cpu.conda - sha256: b26a03f529a4b87dcf523b012f9ccdac124b65f41801da7eb489192916e447ff - md5: 048f04da68a40e9e5e1e66ff9502b237 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h512cd83_4_cpu.conda + sha256: 4a9ffedc5570ce57a6864e46dcf36ec108557791b50fd43e82eb739f3717ff2f + md5: 1a6c409f45857d30f581a1a53abb2298 depends: - - libarrow 18.1.0 hb63acf4_3_cpu - - libarrow-acero 18.1.0 he2e0623_3_cpu + - libarrow 18.1.0 ha2aff55_4_cpu + - libarrow-acero 18.1.0 h512cd83_4_cpu - libgcc >=13 - - libparquet 18.1.0 h553aec1_3_cpu + - libparquet 18.1.0 h34a048e_4_cpu - libstdcxx >=13 license: Apache-2.0 - size: 559844 - timestamp: 1733453065157 + license_family: APACHE + size: 561495 + timestamp: 1733607973097 +- kind: conda + name: libarrow-dataset + version: 18.1.0 + build: h8bbc2ab_4_cpu + build_number: 4 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-h8bbc2ab_4_cpu.conda + sha256: 9c898ab7377953b8c7218347fdb63376d4f977cabfb8fa6bd1b421a75b8cb335 + md5: fa31464c75b20c2f3ac8fc758e034887 + depends: + - __glibc >=2.17,<3.0.a0 + - libarrow 18.1.0 h3b07799_4_cpu + - libarrow-acero 18.1.0 h8bbc2ab_4_cpu + - libgcc >=13 + - libparquet 18.1.0 hf4f6db6_4_cpu + - libstdcxx >=13 + license: Apache-2.0 + license_family: APACHE + size: 585517 + timestamp: 1733607943984 - kind: conda name: libarrow-substrait version: 18.1.0 - build: h4c1644f_3_cpu - build_number: 3 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-h4c1644f_3_cpu.conda - sha256: 562c344d57b718aa838ccc01acae240d9ab33dd2da7db40dbe75d1db6b441e71 - md5: 7ba2783c26a0008307e2a1e637c2930f + build: h3644d33_4_cpu + build_number: 4 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h3644d33_4_cpu.conda + sha256: ac053b3efd1a2701e6f34195d90a0da21dca22d70916ae6b10a019c2be6cd44c + md5: ce3062cd5caa0bdafa7976535862e648 depends: - - __osx >=11.0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.1.0 h5affd47_3_cpu - - libarrow-acero 18.1.0 haafc02e_3_cpu - - libarrow-dataset 18.1.0 haafc02e_3_cpu - - libcxx >=18 + - libarrow 18.1.0 ha2aff55_4_cpu + - libarrow-acero 18.1.0 h512cd83_4_cpu + - libarrow-dataset 18.1.0 h512cd83_4_cpu + - libgcc >=13 - libprotobuf >=5.28.2,<5.28.3.0a0 + - libstdcxx >=13 license: Apache-2.0 - size: 451428 - timestamp: 1733453012619 + license_family: APACHE + size: 513745 + timestamp: 1733608111290 - kind: conda name: libarrow-substrait version: 18.1.0 - build: h56a123c_3_cpu - build_number: 3 + build: had74209_4_cpu + build_number: 4 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-h56a123c_3_cpu.conda - sha256: 139104d80048382c48718a65721b24fa4d69abd6c2052ee1ab20f32b7d48228d - md5: 306bb541b83a83b66d5c1e6880302886 + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-had74209_4_cpu.conda + sha256: 29e44d6070d64cd4b357e02afeae233d2e90d917a008a2724c9cd463015f0319 + md5: bf261e5fa25ce4acc11a80bdc73b88b2 depends: - __glibc >=2.17,<3.0.a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.1.0 hcf3f2e3_3_cpu - - libarrow-acero 18.1.0 h36004a0_3_cpu - - libarrow-dataset 18.1.0 h36004a0_3_cpu + - libarrow 18.1.0 h3b07799_4_cpu + - libarrow-acero 18.1.0 h8bbc2ab_4_cpu + - libarrow-dataset 18.1.0 h8bbc2ab_4_cpu - libgcc >=13 - libprotobuf >=5.28.2,<5.28.3.0a0 - libstdcxx >=13 license: Apache-2.0 - size: 520740 - timestamp: 1733454379083 + license_family: APACHE + size: 519919 + timestamp: 1733608152065 - kind: conda name: libarrow-substrait version: 18.1.0 - build: hc52ba39_3_cpu - build_number: 3 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-hc52ba39_3_cpu.conda - sha256: 66f2c06ad10d8886e53661420c5b73de217a088ee4693186deec7df292f9c766 - md5: 7a8e305f1689687ed063bb4553c1a7a5 + build: hf3d3107_4_cpu + build_number: 4 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-hf3d3107_4_cpu.conda + sha256: 9d9ebd042b9e8561b64f057d2adb24d331a772ccf1af3ed2d8b5b1566729f236 + md5: c093b05dc6d1b6057342d3dd6f3bd0d8 depends: + - __osx >=11.0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.1.0 hb63acf4_3_cpu - - libarrow-acero 18.1.0 he2e0623_3_cpu - - libarrow-dataset 18.1.0 he2e0623_3_cpu - - libgcc >=13 + - libarrow 18.1.0 h86d57b8_4_cpu + - libarrow-acero 18.1.0 h1dc2043_4_cpu + - libarrow-dataset 18.1.0 h1dc2043_4_cpu + - libcxx >=18 - libprotobuf >=5.28.2,<5.28.3.0a0 - - libstdcxx >=13 license: Apache-2.0 - size: 515638 - timestamp: 1733453200561 + license_family: APACHE + size: 451982 + timestamp: 1733607898511 - kind: conda name: libasprintf version: 0.22.5 @@ -6529,58 +6546,61 @@ packages: - kind: conda name: libparquet version: 18.1.0 - build: h3a603ae_3_cpu - build_number: 3 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-h3a603ae_3_cpu.conda - sha256: 89f40f0f4e706392b082ee4910fedd2442b57abbf6cbbfb16a00b5aa89beb41d - md5: 78d2f729e26788a3660cee9906f440e7 + build: h34a048e_4_cpu + build_number: 4 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-h34a048e_4_cpu.conda + sha256: 488d82356fc4e6dfd6c10a4100c36af17db1b7eb72cce0bd8973014220dc3066 + md5: 46db27c16b29f48a37a40e3b2c9dcfe3 depends: - - __osx >=11.0 - - libarrow 18.1.0 h5affd47_3_cpu - - libcxx >=18 + - libarrow 18.1.0 ha2aff55_4_cpu + - libgcc >=13 + - libstdcxx >=13 - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 - size: 873697 - timestamp: 1733452286970 + license_family: APACHE + size: 1117278 + timestamp: 1733607904359 - kind: conda name: libparquet version: 18.1.0 - build: h553aec1_3_cpu - build_number: 3 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-h553aec1_3_cpu.conda - sha256: 965940abe9e49ae7b3adee19bf458f866a0ef35a3cf29d627b2d52c77a96a96b - md5: 46c6783e8b46449a9baabef57c69f30a + build: hf4cc9e7_4_cpu + build_number: 4 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-hf4cc9e7_4_cpu.conda + sha256: ccadab6395090b3cbc54243fcf5c6e49eaee46aaaa4221ca8ca7803a34bdc25d + md5: b462d962b5254923c5f65ce1c68dfc17 depends: - - libarrow 18.1.0 hb63acf4_3_cpu - - libgcc >=13 - - libstdcxx >=13 + - __osx >=11.0 + - libarrow 18.1.0 h86d57b8_4_cpu + - libcxx >=18 - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 - size: 1116941 - timestamp: 1733452997475 + license_family: APACHE + size: 873584 + timestamp: 1733607239103 - kind: conda name: libparquet version: 18.1.0 - build: hbdb145b_3_cpu - build_number: 3 + build: hf4f6db6_4_cpu + build_number: 4 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-hbdb145b_3_cpu.conda - sha256: 034086f71824a3ea77a9bd21029fd4c4ef25b3a95fc77933704b8b49ff55c7f3 - md5: cb249762e1e65941b559d436c60e520d + url: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-hf4f6db6_4_cpu.conda + sha256: f957b6ea5c4023448891f63f7b184a663d85aa5b2717b0e0ebfbfcf97b542751 + md5: f18b10bf19bb384183f2aa546e9f6f0a depends: - __glibc >=2.17,<3.0.a0 - - libarrow 18.1.0 hcf3f2e3_3_cpu + - libarrow 18.1.0 h3b07799_4_cpu - libgcc >=13 - libstdcxx >=13 - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 - size: 1204740 - timestamp: 1733454014411 + license_family: APACHE + size: 1204859 + timestamp: 1733607834047 - kind: conda name: libpng version: 1.6.44 @@ -7695,76 +7715,76 @@ packages: timestamp: 1733219945697 - kind: conda name: max - version: 24.6.0.dev2024120705 + version: 24.6.0.dev2024120805 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120705-release.conda - sha256: b75fcf4dfbeea5eb4bf1a83b5a4dc1e890aaca5afb87aeea00204d9d43263ab6 - md5: d880e434f1f61e9f7fe35eb5af426762 - depends: - - max-core ==24.6.0.dev2024120705 release - - max-python >=24.6.0.dev2024120705,<25.0a0 - - mojo-jupyter ==24.6.0.dev2024120705 release - - mblack ==24.6.0.dev2024120705 release + url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120805-release.conda + sha256: f2f1a4e4373ac62de23c41ce28e1483b45322cffe8aef91ef93ce0f65fe5f20d + md5: d41647f3009da6fe575321d46a741dfa + depends: + - max-core ==24.6.0.dev2024120805 release + - max-python >=24.6.0.dev2024120805,<25.0a0 + - mojo-jupyter ==24.6.0.dev2024120805 release + - mblack ==24.6.0.dev2024120805 release license: LicenseRef-Modular-Proprietary - size: 9922 - timestamp: 1733548613215 + size: 9916 + timestamp: 1733635043550 - kind: conda name: max-core - version: 24.6.0.dev2024120705 + version: 24.6.0.dev2024120805 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120705-release.conda - sha256: 1e38d40637ac5faadb1465f7c3ae80077a02fa25773f832c4730bb3f5d285cae - md5: 210eb01e2dc1c01b03d2a817457b895d + url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120805-release.conda + sha256: aebf26b21cebf2afdf9063203e542e5e635059c57c5fb9e74478b98f652f8e46 + md5: 620d81f38c5da882ee0799e26d86b0ad depends: - - mblack ==24.6.0.dev2024120705 release + - mblack ==24.6.0.dev2024120805 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 247471356 - timestamp: 1733548812210 + size: 247607615 + timestamp: 1733634983707 - kind: conda name: max-core - version: 24.6.0.dev2024120705 + version: 24.6.0.dev2024120805 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120705-release.conda - sha256: a2e530d128deb23e231c5baf2c89b28fc02879f4608b18415f2cc70604e5ea86 - md5: c036e06aec88105f116ac9b6bfff8720 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120805-release.conda + sha256: 1fc1554d9c39ed5bf22957f02418ee0df4ce4dfc033dd3ca54a7f20c8946b7b3 + md5: 6e7e581fe4e11d252e8729a6cc564b29 depends: - - mblack ==24.6.0.dev2024120705 release + - mblack ==24.6.0.dev2024120805 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 251342975 - timestamp: 1733548613213 + size: 251457302 + timestamp: 1733635043548 - kind: conda name: max-core - version: 24.6.0.dev2024120705 + version: 24.6.0.dev2024120805 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120705-release.conda - sha256: dba294806285f1242d3274833451c21ceae2122441177ad870162f18465402cd - md5: 55c2f32ca83e4e21f8ddb5185c8cd263 + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120805-release.conda + sha256: f249a329a1b072ebd9cd365842d54892d4d46a8fb642ab8fb22ff26f211dddb7 + md5: 04d8f67fb1a7deb6147da14b60f668d3 depends: - - mblack ==24.6.0.dev2024120705 release + - mblack ==24.6.0.dev2024120805 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 211936941 - timestamp: 1733548831297 + size: 212001315 + timestamp: 1733635167877 - kind: conda name: max-python - version: 24.6.0.dev2024120705 + version: 24.6.0.dev2024120805 build: 3.12release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120705-3.12release.conda - sha256: 9083a4c9e5e0362a688eeca82b4018fd88cb7a481b15c42e887a3a8bc60f684b - md5: 9b5d9f4c3ce3cd860772c00f7d98e059 + url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120805-3.12release.conda + sha256: cf488fd0ccfb5a4dbff0891f7dba0e92422a07b6c0047727ab7ebf6a65289e9f + md5: bf821eea63859972e28ce4635cff7dda depends: - - max-core ==24.6.0.dev2024120705 release + - max-core ==24.6.0.dev2024120805 release - python 3.12.* - pillow - fastapi @@ -7786,18 +7806,18 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 123682860 - timestamp: 1733548812221 + size: 123750844 + timestamp: 1733634983717 - kind: conda name: max-python - version: 24.6.0.dev2024120705 + version: 24.6.0.dev2024120805 build: 3.12release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120705-3.12release.conda - sha256: 2a30cd49b6468f6f6d76f789ac2ed47f0496e228e06694fdbee7ed757199c63e - md5: 54e13a8164032866ff1f243f931b4ab3 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120805-3.12release.conda + sha256: 7fe8c12a6ac333dc6f3ea0132e07244131919597c3da16566a18d3657c478126 + md5: 5711b879e00dae9d692d6cf0bcad3717 depends: - - max-core ==24.6.0.dev2024120705 release + - max-core ==24.6.0.dev2024120805 release - python 3.12.* - pillow - fastapi @@ -7819,18 +7839,18 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 127403239 - timestamp: 1733548613224 + size: 127399399 + timestamp: 1733635043558 - kind: conda name: max-python - version: 24.6.0.dev2024120705 + version: 24.6.0.dev2024120805 build: 3.12release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120705-3.12release.conda - sha256: 5afdef8316567435191dbb56db99f99a3f1b4d20a4b0132978c89c458916a961 - md5: a4867e539c3f8c25297d0d695b6848b8 + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120805-3.12release.conda + sha256: 21cd561dcda4c668566b3e681e44823f6163abb4747f30e4851efb9d04eea1eb + md5: 8737c1d7ff7f04e887c4d80139e2a273 depends: - - max-core ==24.6.0.dev2024120705 release + - max-core ==24.6.0.dev2024120805 release - python 3.12.* - pillow - fastapi @@ -7852,17 +7872,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 112378959 - timestamp: 1733548831301 + size: 112431285 + timestamp: 1733635167881 - kind: conda name: mblack - version: 24.6.0.dev2024120705 + version: 24.6.0.dev2024120805 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120705-release.conda - sha256: e0ecd940a6053ec0d44e3da2b9d99885efcb38f0ae32b92136155bb5aa252a75 - md5: b801385ef3cbed6f7415ddf938dc182e + url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120805-release.conda + sha256: e5f3d6f9e9e7acb97ff8364ddb90e34e38bfe68ba382b3dffacfbf4b9d6c812a + md5: 8a48ed658740aaf0063c754fd35e9cce depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -7872,8 +7892,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130737 - timestamp: 1733548613220 + size: 130744 + timestamp: 1733635043555 - kind: conda name: mdurl version: 0.1.2 @@ -7892,21 +7912,21 @@ packages: timestamp: 1733255681319 - kind: conda name: mojo-jupyter - version: 24.6.0.dev2024120705 + version: 24.6.0.dev2024120805 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120705-release.conda - sha256: ff854ead8fa7014dd8ed800998afb01ac9faeec55dfc84bcc2d6d21b38e5a8d1 - md5: ce9ee67733d1ab8c43031b67b475dba8 + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120805-release.conda + sha256: 1535cecc4930833e604ed39a4450b421914312f4abbb4fc6af9e7aedd5293ffd + md5: ad285352ec9e9061d8facbf62f708d9d depends: - - max-core ==24.6.0.dev2024120705 release + - max-core ==24.6.0.dev2024120805 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 11370 - timestamp: 1733548613220 + size: 11369 + timestamp: 1733635043556 - kind: conda name: mpg123 version: 1.32.9 @@ -10263,53 +10283,55 @@ packages: timestamp: 1725632294079 - kind: conda name: sdl2 - version: 2.30.7 - build: h2a74887_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/sdl2-2.30.7-h2a74887_0.conda - sha256: 6c21954d98a915d7617c0944440167e5ac695117ca7410f37eea4af0a9f0821c - md5: 719245709dd47dbc3f93ce85fa544f43 + version: 2.30.10 + build: h63c27ac_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/sdl2-2.30.10-h63c27ac_0.conda + sha256: 639325326d51cd70f56a55ffd3c1fa778e61751f16d66d0baea155375f1a139c + md5: 5cecf6d327e4f8c5dfafc71b4a8556e7 depends: + - __glibc >=2.17,<3.0.a0 - libgcc >=13 - libstdcxx >=13 - pulseaudio-client >=17.0,<17.1.0a0 - - xorg-libx11 >=1.8.9,<2.0a0 - - xorg-libxext >=1.3.4,<2.0a0 + - xorg-libx11 >=1.8.10,<2.0a0 + - xorg-libxext >=1.3.6,<2.0a0 + - xorg-libxfixes >=6.0.1,<7.0a0 license: Zlib - size: 1317383 - timestamp: 1725255076176 + size: 1352990 + timestamp: 1733624788165 - kind: conda name: sdl2 - version: 2.30.7 - build: h3ed165c_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/sdl2-2.30.7-h3ed165c_0.conda - sha256: 80691a3ce313f0f7908480c0af216520d655e9480e036feb489c2095ad37950a - md5: be75875082c99c7a9f9fe930a1bd2bb1 + version: 2.30.10 + build: h93e764a_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/sdl2-2.30.10-h93e764a_0.conda + sha256: 8f03f2abcb4227e95d19b28124e0a5428f634b084b92ab91f3af7c825b626403 + md5: bcbf24da778bbdd20b09cf6ed52cefc2 depends: - - __glibc >=2.17,<3.0.a0 - libgcc >=13 - libstdcxx >=13 - pulseaudio-client >=17.0,<17.1.0a0 - - xorg-libx11 >=1.8.9,<2.0a0 - - xorg-libxext >=1.3.4,<2.0a0 + - xorg-libx11 >=1.8.10,<2.0a0 + - xorg-libxext >=1.3.6,<2.0a0 + - xorg-libxfixes >=6.0.1,<7.0a0 license: Zlib - size: 1391142 - timestamp: 1725255009793 + size: 1277076 + timestamp: 1733624829558 - kind: conda name: sdl2 - version: 2.30.7 - build: hf9b8971_0 + version: 2.30.10 + build: h994913f_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/sdl2-2.30.7-hf9b8971_0.conda - sha256: d86b4f39c09efb6febd5e2e5a2c0894c82f7ac4b8b4aebb24e4fbd9acf797d60 - md5: 33f5451441cbc0ce083b3d37c181519e + url: https://conda.anaconda.org/conda-forge/osx-arm64/sdl2-2.30.10-h994913f_0.conda + sha256: 7ff3167b6482c5fe7389c6c1836343c280a0eeb160524888e661f0f991708bd8 + md5: 4001ae6f1b1886583e82ab0dac5b575b depends: - __osx >=11.0 - - libcxx >=17 + - libcxx >=18 license: Zlib - size: 1256184 - timestamp: 1725254933792 + size: 1251116 + timestamp: 1733624861414 - kind: conda name: sdl2_image version: 2.8.2 @@ -11505,6 +11527,37 @@ packages: license_family: MIT size: 50060 timestamp: 1727752228921 +- kind: conda + name: xorg-libxfixes + version: 6.0.1 + build: h57736b2_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxfixes-6.0.1-h57736b2_0.conda + sha256: f5c71e0555681a82a65c483374b91d91b2cb9a9903b3a22ddc00f36719fce549 + md5: 78f8715c002cc66991d7c11e3cf66039 + depends: + - libgcc >=13 + - xorg-libx11 >=1.8.9,<2.0a0 + license: MIT + license_family: MIT + size: 20289 + timestamp: 1727796500830 +- kind: conda + name: xorg-libxfixes + version: 6.0.1 + build: hb9d3cd8_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxfixes-6.0.1-hb9d3cd8_0.conda + sha256: 2fef37e660985794617716eb915865ce157004a4d567ed35ec16514960ae9271 + md5: 4bdb303603e9821baf5fe5fdff1dc8f8 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - xorg-libx11 >=1.8.10,<2.0a0 + license: MIT + license_family: MIT + size: 19575 + timestamp: 1727794961233 - kind: conda name: xorg-libxrender version: 0.9.11 diff --git a/examples/magic.lock b/examples/magic.lock index 650f02f9b3..f1671e6345 100644 --- a/examples/magic.lock +++ b/examples/magic.lock @@ -22,11 +22,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.1-hab05fe4_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.2-hdeadb07_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h7bd072d_8.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.4-h3a84f74_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.5-h3a84f74_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.1-hf42f96a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-hf42f96a_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.6-h159bff8_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-h5558e3c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.7-ha6b94fc_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-hac138a2_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.10.0-h113e628_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.13.0-h3cf044e_1.conda @@ -64,7 +64,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/httptools-0.6.4-py311h9ecbd09_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-7.0.2-pyha770c72_0.conda @@ -77,10 +77,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_h5888daf_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-hcf3f2e3_3_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-h36004a0_3_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-h36004a0_3_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-h56a123c_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-h3b07799_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-h8bbc2ab_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-h8bbc2ab_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-had74209_4_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-25_linux64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hb9d3cd8_2.conda @@ -109,7 +109,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.28-pthreads_h94d23a6_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-hbdb145b_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-hf4f6db6_4_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.44-hadc24fc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.2-h5b01275_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_1.conda @@ -131,12 +131,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.9.4-hcb278e6_0.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.dev2024120705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120705-3.11release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120805-3.11release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120805-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.dev2024120705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120805-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py311h2dc5d0c_1.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 @@ -239,11 +239,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.1-hf4e072c_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.2-h10eb1bc_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h28a5e6a_8.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.4-h29aef15_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.5-h29aef15_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.1-h4c7db1d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h4c7db1d_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.6-hffbb33f_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h7085e57_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.7-h6c346da_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h5e41cbe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-core-cpp-1.14.0-h1887c18_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-identity-cpp-1.10.0-h47b0b28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-blobs-cpp-12.13.0-h185ecfd_1.conda @@ -281,7 +281,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/httptools-0.6.4-py311ha879c10_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda @@ -295,10 +295,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.0.0-h4de3ea5_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h5ad3122_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-hb63acf4_3_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-he2e0623_3_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-he2e0623_3_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-hc52ba39_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-ha2aff55_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h512cd83_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h512cd83_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h3644d33_4_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-25_linuxaarch64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlicommon-1.1.0-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlidec-1.1.0-h86ecc28_2.conda @@ -327,7 +327,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnghttp2-1.64.0-hc8609a4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.28-pthreads_h9d3fd7e_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-h553aec1_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-h34a048e_4_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.44-hc4a20ef_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.2-h029595c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_1.conda @@ -349,12 +349,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.9.4-hd600fc2_0.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.dev2024120705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120705-3.11release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120805-3.11release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120805-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.dev2024120705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120805-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multidict-6.1.0-py311h58d527c_1.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 @@ -456,11 +456,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.1-hf483d09_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.2-h39f8ad8_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h68a0d7e_8.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.4-h840aca7_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.5-h840aca7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.1-h5d7ee29_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-h5d7ee29_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.6-h8474b10_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-h3b64406_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.7-ha310de4_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-he4d6490_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.14.0-hd50102c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.10.0-hc602bab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-blobs-cpp-12.13.0-h7585a09_1.conda @@ -498,7 +498,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/httptools-0.6.4-py311h917b07b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda @@ -510,10 +510,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.16-ha0e7c42_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_hf9b8971_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-h5affd47_3_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-haafc02e_3_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-haafc02e_3_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-h4c1644f_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-h86d57b8_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-h1dc2043_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-h1dc2043_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-hf3d3107_4_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-25_osxarm64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.1.0-hd74edd7_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.1.0-hd74edd7_2.conda @@ -539,7 +539,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.3-h39f12f2_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.64.0-h6d7220d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.28-openmp_hf332438_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-h3a603ae_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-hf4cc9e7_4_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.44-hc14010f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.2-h8f0b736_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h2348fd5_1.conda @@ -558,12 +558,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.9.4-hb7217d7_0.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.dev2024120705-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120705-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120705-3.11release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120805-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120805-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120805-3.11release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120805-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.dev2024120705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120805-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 @@ -1288,12 +1288,12 @@ packages: timestamp: 1731734668760 - kind: conda name: aws-c-s3 - version: 0.7.4 + version: 0.7.5 build: h29aef15_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.4-h29aef15_0.conda - sha256: 396517aca6bdbe2e3d8a6275b33865eeb0d09f0dd379c3cc55c36f6004b17f2a - md5: 1046cf15a47f06a0af07f674e477d807 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.5-h29aef15_0.conda + sha256: 2aef28beec88df561f7f4d0f7ec7fea6cf54a1d6c8516fd243a4269d320f06cb + md5: 98609602eb077c7b5225d3aa1467f789 depends: - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.0,<0.8.1.0a0 @@ -1305,16 +1305,16 @@ packages: - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 117398 - timestamp: 1733299233564 + size: 117067 + timestamp: 1733565203669 - kind: conda name: aws-c-s3 - version: 0.7.4 + version: 0.7.5 build: h3a84f74_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.4-h3a84f74_0.conda - sha256: 91c6f7aa3dd230bcefe2654469b0704c2bdb2574e6d0d7c56cf9e9071f44cc26 - md5: 7d029b9aa9decf4c0fb8a9a8940c9906 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.5-h3a84f74_0.conda + sha256: eb2534517bdaccf2953716e49e8b918ffe7e78a524c6321fae30c3dd7f46cb0d + md5: a13702b87657cf2d0cdd338fe55f4ba1 depends: - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 @@ -1327,16 +1327,16 @@ packages: - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 113660 - timestamp: 1733299194447 + size: 113877 + timestamp: 1733565162763 - kind: conda name: aws-c-s3 - version: 0.7.4 + version: 0.7.5 build: h840aca7_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.4-h840aca7_0.conda - sha256: 564bbb781c1aebfcdda43a0e82f447e34de1764c57ebc1733fe6437248f5b7c9 - md5: 02f78a084e101dee30c794f963549de4 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.5-h840aca7_0.conda + sha256: 30782a1392883d26a441fc2857985136888aa454efbea8b85bbcbb7a7ad3d2e2 + md5: 1d33c89e2462b6b0056bfb883b76d2fb depends: - __osx >=11.0 - aws-c-auth >=0.8.0,<0.8.1.0a0 @@ -1347,8 +1347,8 @@ packages: - aws-checksums >=0.2.2,<0.2.3.0a0 license: Apache-2.0 license_family: Apache - size: 97136 - timestamp: 1733299356527 + size: 98296 + timestamp: 1733565277623 - kind: conda name: aws-c-sdkutils version: 0.2.1 @@ -1449,15 +1449,14 @@ packages: timestamp: 1731687193373 - kind: conda name: aws-crt-cpp - version: 0.29.6 - build: h159bff8_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.6-h159bff8_2.conda - sha256: 04ca62caa764bb95f304af8486c1af7c4f76d4ad5204c494edcf86af653d2ad0 - md5: c498e6490834aacf7835c96403862881 + version: 0.29.7 + build: h6c346da_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.7-h6c346da_1.conda + sha256: 9a60a93dbe896acf533dded5f4ae11546ff4fb6a9fb0e06db6d915206ba0b1f2 + md5: cf87fc73eee6dbfc12dec79444d5dfc0 depends: - - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.0,<0.8.1.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 @@ -1465,23 +1464,23 @@ packages: - aws-c-http >=0.9.1,<0.9.2.0a0 - aws-c-io >=0.15.2,<0.15.3.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - - aws-c-s3 >=0.7.4,<0.7.5.0a0 + - aws-c-s3 >=0.7.5,<0.7.6.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 354822 - timestamp: 1733333950713 + size: 283237 + timestamp: 1733588714381 - kind: conda name: aws-crt-cpp - version: 0.29.6 - build: h8474b10_2 - build_number: 2 + version: 0.29.7 + build: ha310de4_1 + build_number: 1 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.6-h8474b10_2.conda - sha256: 5ca9df9516583076ea40129e71b103efaca21ca02f40b59d69485823613cbfba - md5: 54c898f166bcfbe06c2b7ac36360f371 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.7-ha310de4_1.conda + sha256: b5ab81d50b6cc2ff70dd56a16b5b9e1cbe8c69e9e357db2abf925d03c5d0133a + md5: 77769ed013cbf8824c1927407ea03c69 depends: - __osx >=11.0 - aws-c-auth >=0.8.0,<0.8.1.0a0 @@ -1491,23 +1490,24 @@ packages: - aws-c-http >=0.9.1,<0.9.2.0a0 - aws-c-io >=0.15.2,<0.15.3.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - - aws-c-s3 >=0.7.4,<0.7.5.0a0 + - aws-c-s3 >=0.7.5,<0.7.6.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - libcxx >=18 license: Apache-2.0 license_family: Apache - size: 235829 - timestamp: 1733334077172 + size: 236862 + timestamp: 1733588815005 - kind: conda name: aws-crt-cpp - version: 0.29.6 - build: hffbb33f_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.6-hffbb33f_2.conda - sha256: 5f9490edaddde550cf05861626175b648da73c84bcde61ac2a6a1bf1a8fd6982 - md5: fb8be2af168b63e0b77076a1dc6baa85 + version: 0.29.7 + build: ha6b94fc_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.7-ha6b94fc_1.conda + sha256: 5907a2c370f94e5f63c17e4347525d21eb1c00fbd8b731d79ec1eb4e857689ca + md5: f5fb6f6283deb0b4d2c187ad4a7b6d4d depends: + - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.0,<0.8.1.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 @@ -1515,50 +1515,52 @@ packages: - aws-c-http >=0.9.1,<0.9.2.0a0 - aws-c-io >=0.15.2,<0.15.3.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - - aws-c-s3 >=0.7.4,<0.7.5.0a0 + - aws-c-s3 >=0.7.5,<0.7.6.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 284031 - timestamp: 1733333955728 + size: 353873 + timestamp: 1733588735223 - kind: conda name: aws-sdk-cpp version: 1.11.458 - build: h3b64406_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-h3b64406_0.conda - sha256: ded5412750f5c29bdf8ef6bc5ab26e443dc4943bd69c9098a791d8a2bf9b184e - md5: 9a8d3ba158ff8ea08e17de366c238706 + build: h5e41cbe_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h5e41cbe_1.conda + sha256: b45305787a78f2bf7ecabc401b5bfe451509b434dd041a0a554572a70302d2f3 + md5: 1861b1fb86b336f1f53faaac5a76046c depends: - - __osx >=11.0 - aws-c-common >=0.10.3,<0.10.4.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - - aws-crt-cpp >=0.29.6,<0.29.7.0a0 + - aws-crt-cpp >=0.29.7,<0.29.8.0a0 - libcurl >=8.10.1,<9.0a0 - - libcxx >=18 + - libgcc >=13 + - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 2853609 - timestamp: 1733389337912 + size: 2910575 + timestamp: 1733576378398 - kind: conda name: aws-sdk-cpp version: 1.11.458 - build: h5558e3c_0 + build: hac138a2_1 + build_number: 1 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-h5558e3c_0.conda - sha256: 7eab747a5a3e1a46b9c85c591c30ca2d4e90c2cebeaec95c4fe016846efdfa14 - md5: b1919becd17fe224aacf708114231fda + url: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-hac138a2_1.conda + sha256: fdb9c94d7524c52837643428b1aab4f35bed3ba2862a57e1b03e63038c7c146f + md5: bbdd9589b1a32a80b0e3f98a2a482542 depends: - __glibc >=2.17,<3.0.a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - - aws-crt-cpp >=0.29.6,<0.29.7.0a0 + - aws-crt-cpp >=0.29.7,<0.29.8.0a0 - libcurl >=8.10.1,<9.0a0 - libgcc >=13 - libstdcxx >=13 @@ -1566,30 +1568,31 @@ packages: - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 3059100 - timestamp: 1733388777418 + size: 3071464 + timestamp: 1733576251149 - kind: conda name: aws-sdk-cpp version: 1.11.458 - build: h7085e57_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h7085e57_0.conda - sha256: 6d5327305721d18d650a3f8a377dc30e65600f59bd33fd4fcad106965b09b6b8 - md5: 005e0cc687a2421a4ad493e5b7058abe + build: he4d6490_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-he4d6490_1.conda + sha256: 61abc03dfbe372b258b8b6790bf3ad3a3265e02ce24b6b22bfe8f2fcab94954a + md5: 2941213b750689ace0862a6d695bb740 depends: + - __osx >=11.0 - aws-c-common >=0.10.3,<0.10.4.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - - aws-crt-cpp >=0.29.6,<0.29.7.0a0 + - aws-crt-cpp >=0.29.7,<0.29.8.0a0 - libcurl >=8.10.1,<9.0a0 - - libgcc >=13 - - libstdcxx >=13 + - libcxx >=18 - libzlib >=1.3.1,<2.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 2903434 - timestamp: 1733388870289 + size: 2847256 + timestamp: 1733576733615 - kind: conda name: azure-core-cpp version: 1.14.0 @@ -2488,6 +2491,7 @@ packages: depends: - python >=3.9 license: BSD-3-Clause + license_family: BSD size: 134726 timestamp: 1733493445080 - kind: conda @@ -2748,13 +2752,13 @@ packages: timestamp: 1733501478172 - kind: conda name: huggingface_hub - version: 0.26.3 + version: 0.26.5 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.3-pyhd8ed1ab_0.conda - sha256: 66ffed967463e4a25f1dc4ca699d85dd55d1d150fed214c6380f11a981e0acb7 - md5: 997fc223fbc616c262f2a32a22d433a4 + url: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.5-pyhd8ed1ab_0.conda + sha256: bdbf614d87155c7f9b8fe9c3d039528298119832e9f52959b15c522a9841eef7 + md5: 37236111cd92068e5af2f98cbb476642 depends: - filelock - fsspec >=2023.5.0 @@ -2766,9 +2770,8 @@ packages: - typing-extensions >=3.7.4.3 - typing_extensions >=3.7.4.3 license: Apache-2.0 - license_family: APACHE - size: 274858 - timestamp: 1733170279930 + size: 274900 + timestamp: 1733637007500 - kind: conda name: hyperframe version: 6.0.1 @@ -3170,30 +3173,32 @@ packages: - kind: conda name: libarrow version: 18.1.0 - build: h5affd47_3_cpu - build_number: 3 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-h5affd47_3_cpu.conda - sha256: 9dac7f7b96972a3c18549d8669269233ae9e7b25da56161bd85a86b98ca61f76 - md5: 3dc73b42851e6096542458eaf2c074ca + build: h3b07799_4_cpu + build_number: 4 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-h3b07799_4_cpu.conda + sha256: 8837dc6e60522eef63554654c45d18143006324c43391c6e8dc5d2b20997466d + md5: 27675c7172667268440306533e4928de depends: - - __osx >=11.0 - - aws-crt-cpp >=0.29.6,<0.29.7.0a0 + - __glibc >=2.17,<3.0.a0 + - aws-crt-cpp >=0.29.7,<0.29.8.0a0 - aws-sdk-cpp >=1.11.458,<1.11.459.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-identity-cpp >=1.10.0,<1.10.1.0a0 - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 - bzip2 >=1.0.8,<2.0a0 + - gflags >=2.2.2,<2.3.0a0 - glog >=0.7.1,<0.8.0a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - libbrotlidec >=1.1.0,<1.2.0a0 - libbrotlienc >=1.1.0,<1.2.0a0 - - libcxx >=18 + - libgcc >=13 - libgoogle-cloud >=2.31.0,<2.32.0a0 - libgoogle-cloud-storage >=2.31.0,<2.32.0a0 - libre2-11 >=2024.7.2 + - libstdcxx >=13 - libutf8proc >=2.9.0,<2.10.0a0 - libzlib >=1.3.1,<2.0a0 - lz4-c >=1.9.3,<1.10.0a0 @@ -3202,40 +3207,40 @@ packages: - snappy >=1.2.1,<1.3.0a0 - zstd >=1.5.6,<1.6.0a0 constrains: - - arrow-cpp <0.0a0 - - apache-arrow-proc =*=cpu - parquet-cpp <0.0a0 + - apache-arrow-proc =*=cpu + - arrow-cpp <0.0a0 license: Apache-2.0 - size: 5487846 - timestamp: 1733450423101 + license_family: APACHE + size: 8793521 + timestamp: 1733607374384 - kind: conda name: libarrow version: 18.1.0 - build: hb63acf4_3_cpu - build_number: 3 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-hb63acf4_3_cpu.conda - sha256: e972904b472008f902df9e584f59ff7716fc22efc1124d1dfc41c931852acc75 - md5: d98a11c3ba32554873aeb6a071baceaa + build: h86d57b8_4_cpu + build_number: 4 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-h86d57b8_4_cpu.conda + sha256: fe6b5eb4d6e71418343b62a0d322ede7be69999b28d9e492164c12e613cf3fa0 + md5: 23431b3fdbb32858d1533da5bc8fcc86 depends: - - aws-crt-cpp >=0.29.6,<0.29.7.0a0 + - __osx >=11.0 + - aws-crt-cpp >=0.29.7,<0.29.8.0a0 - aws-sdk-cpp >=1.11.458,<1.11.459.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-identity-cpp >=1.10.0,<1.10.1.0a0 - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 - bzip2 >=1.0.8,<2.0a0 - - gflags >=2.2.2,<2.3.0a0 - glog >=0.7.1,<0.8.0a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - libbrotlidec >=1.1.0,<1.2.0a0 - libbrotlienc >=1.1.0,<1.2.0a0 - - libgcc >=13 + - libcxx >=18 - libgoogle-cloud >=2.31.0,<2.32.0a0 - libgoogle-cloud-storage >=2.31.0,<2.32.0a0 - libre2-11 >=2024.7.2 - - libstdcxx >=13 - libutf8proc >=2.9.0,<2.10.0a0 - libzlib >=1.3.1,<2.0a0 - lz4-c >=1.9.3,<1.10.0a0 @@ -3248,20 +3253,20 @@ packages: - apache-arrow-proc =*=cpu - arrow-cpp <0.0a0 license: Apache-2.0 - size: 8048003 - timestamp: 1733452700958 + license_family: APACHE + size: 5482797 + timestamp: 1733605365656 - kind: conda name: libarrow version: 18.1.0 - build: hcf3f2e3_3_cpu - build_number: 3 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-hcf3f2e3_3_cpu.conda - sha256: a82f66f0a37ed3132e6b9faff9285d7ccbe950ccfe84edd6378fdee70ef2743e - md5: 196823c7752608cb6b5d5a7a33b17410 + build: ha2aff55_4_cpu + build_number: 4 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-ha2aff55_4_cpu.conda + sha256: 795950b73029fd4d3b7fee3427c39c7357287fd94244dd5a125ac0931d31aaa3 + md5: c4d60278cb00053df1a4f0600fd2ac2a depends: - - __glibc >=2.17,<3.0.a0 - - aws-crt-cpp >=0.29.6,<0.29.7.0a0 + - aws-crt-cpp >=0.29.7,<0.29.8.0a0 - aws-sdk-cpp >=1.11.458,<1.11.459.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-identity-cpp >=1.10.0,<1.10.1.0a0 @@ -3287,180 +3292,190 @@ packages: - snappy >=1.2.1,<1.3.0a0 - zstd >=1.5.6,<1.6.0a0 constrains: - - apache-arrow-proc =*=cpu - parquet-cpp <0.0a0 + - apache-arrow-proc =*=cpu - arrow-cpp <0.0a0 license: Apache-2.0 - size: 8796519 - timestamp: 1733453489520 -- kind: conda - name: libarrow-acero - version: 18.1.0 - build: h36004a0_3_cpu - build_number: 3 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-h36004a0_3_cpu.conda - sha256: 0733a303b2dd5998489099d6c258ee442d3f8243379d339f57700554d696fe41 - md5: 6d8f74ac97166e09cdf02109ed9905ce - depends: - - __glibc >=2.17,<3.0.a0 - - libarrow 18.1.0 hcf3f2e3_3_cpu - - libgcc >=13 - - libstdcxx >=13 - license: Apache-2.0 - size: 612773 - timestamp: 1733453636002 + license_family: APACHE + size: 8035987 + timestamp: 1733607600970 - kind: conda name: libarrow-acero version: 18.1.0 - build: haafc02e_3_cpu - build_number: 3 + build: h1dc2043_4_cpu + build_number: 4 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-haafc02e_3_cpu.conda - sha256: 214df0ac0f44dd792193d11c84dbf79a42ed0f663c7b1a06aa5ab755b93c1948 - md5: f3a050129b5012bd5fc381693f6eb2cd + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-h1dc2043_4_cpu.conda + sha256: fe8cb6feeed0858cb8e7cc8889ae20165527934778adb8f7b1f2f5d1f7ade16d + md5: e4ed6162593fbb01f4d742db4215f70c depends: - __osx >=11.0 - - libarrow 18.1.0 h5affd47_3_cpu + - libarrow 18.1.0 h86d57b8_4_cpu - libcxx >=18 license: Apache-2.0 - size: 483753 - timestamp: 1733450627207 + license_family: APACHE + size: 483574 + timestamp: 1733605591770 - kind: conda name: libarrow-acero version: 18.1.0 - build: he2e0623_3_cpu - build_number: 3 + build: h512cd83_4_cpu + build_number: 4 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-he2e0623_3_cpu.conda - sha256: 1560efabce824155dd841219c299c71352594b5e237dce0879c2d8f50c16047a - md5: fa54002b982019ecc0e93cb4b2c493e9 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h512cd83_4_cpu.conda + sha256: 9e88f04409da9ca2fedc5f7bf0987ff28e96d08742e59672f744ec4624a4c991 + md5: d532c42abe13841806d97f4d9cd6dcf5 depends: - - libarrow 18.1.0 hb63acf4_3_cpu + - libarrow 18.1.0 ha2aff55_4_cpu - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 - size: 578323 - timestamp: 1733452783322 + license_family: APACHE + size: 578174 + timestamp: 1733607685962 - kind: conda - name: libarrow-dataset + name: libarrow-acero version: 18.1.0 - build: h36004a0_3_cpu - build_number: 3 + build: h8bbc2ab_4_cpu + build_number: 4 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-h36004a0_3_cpu.conda - sha256: d5a0b4a2129a540548b0232df23e6940fe73d54e5ace5a31f5419d96a059f317 - md5: e9eac639d83b1c35f7743845b922d61a + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-h8bbc2ab_4_cpu.conda + sha256: b3b4ddb2718c96c93d9b50dbf8f66265af9198b55852b4d3424c13a79ec3f84d + md5: 82bcbfe424868ce66b5ab986999f534d depends: - __glibc >=2.17,<3.0.a0 - - libarrow 18.1.0 hcf3f2e3_3_cpu - - libarrow-acero 18.1.0 h36004a0_3_cpu + - libarrow 18.1.0 h3b07799_4_cpu - libgcc >=13 - - libparquet 18.1.0 hbdb145b_3_cpu - libstdcxx >=13 license: Apache-2.0 - size: 585416 - timestamp: 1733454137952 + license_family: APACHE + size: 610772 + timestamp: 1733607505368 - kind: conda name: libarrow-dataset version: 18.1.0 - build: haafc02e_3_cpu - build_number: 3 + build: h1dc2043_4_cpu + build_number: 4 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-haafc02e_3_cpu.conda - sha256: 7b105d363d5f71db88454b304e44166c17b2970ddb0297b482f3d8b39fb39308 - md5: 8c57e5a50f865a16cafd92f5a32c9faa + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-h1dc2043_4_cpu.conda + sha256: 862fb21b871666495b4bb5e63f5fcb66b93c08893e92412b01e2717e081836eb + md5: bb940b4c583e4c8e5a9f193fabdb5840 depends: - __osx >=11.0 - - libarrow 18.1.0 h5affd47_3_cpu - - libarrow-acero 18.1.0 haafc02e_3_cpu + - libarrow 18.1.0 h86d57b8_4_cpu + - libarrow-acero 18.1.0 h1dc2043_4_cpu - libcxx >=18 - - libparquet 18.1.0 h3a603ae_3_cpu + - libparquet 18.1.0 hf4cc9e7_4_cpu license: Apache-2.0 - size: 489900 - timestamp: 1733452479126 + license_family: APACHE + size: 489457 + timestamp: 1733607417337 - kind: conda name: libarrow-dataset version: 18.1.0 - build: he2e0623_3_cpu - build_number: 3 + build: h512cd83_4_cpu + build_number: 4 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-he2e0623_3_cpu.conda - sha256: b26a03f529a4b87dcf523b012f9ccdac124b65f41801da7eb489192916e447ff - md5: 048f04da68a40e9e5e1e66ff9502b237 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h512cd83_4_cpu.conda + sha256: 4a9ffedc5570ce57a6864e46dcf36ec108557791b50fd43e82eb739f3717ff2f + md5: 1a6c409f45857d30f581a1a53abb2298 depends: - - libarrow 18.1.0 hb63acf4_3_cpu - - libarrow-acero 18.1.0 he2e0623_3_cpu + - libarrow 18.1.0 ha2aff55_4_cpu + - libarrow-acero 18.1.0 h512cd83_4_cpu - libgcc >=13 - - libparquet 18.1.0 h553aec1_3_cpu + - libparquet 18.1.0 h34a048e_4_cpu - libstdcxx >=13 license: Apache-2.0 - size: 559844 - timestamp: 1733453065157 + license_family: APACHE + size: 561495 + timestamp: 1733607973097 +- kind: conda + name: libarrow-dataset + version: 18.1.0 + build: h8bbc2ab_4_cpu + build_number: 4 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-h8bbc2ab_4_cpu.conda + sha256: 9c898ab7377953b8c7218347fdb63376d4f977cabfb8fa6bd1b421a75b8cb335 + md5: fa31464c75b20c2f3ac8fc758e034887 + depends: + - __glibc >=2.17,<3.0.a0 + - libarrow 18.1.0 h3b07799_4_cpu + - libarrow-acero 18.1.0 h8bbc2ab_4_cpu + - libgcc >=13 + - libparquet 18.1.0 hf4f6db6_4_cpu + - libstdcxx >=13 + license: Apache-2.0 + license_family: APACHE + size: 585517 + timestamp: 1733607943984 - kind: conda name: libarrow-substrait version: 18.1.0 - build: h4c1644f_3_cpu - build_number: 3 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-h4c1644f_3_cpu.conda - sha256: 562c344d57b718aa838ccc01acae240d9ab33dd2da7db40dbe75d1db6b441e71 - md5: 7ba2783c26a0008307e2a1e637c2930f + build: h3644d33_4_cpu + build_number: 4 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h3644d33_4_cpu.conda + sha256: ac053b3efd1a2701e6f34195d90a0da21dca22d70916ae6b10a019c2be6cd44c + md5: ce3062cd5caa0bdafa7976535862e648 depends: - - __osx >=11.0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.1.0 h5affd47_3_cpu - - libarrow-acero 18.1.0 haafc02e_3_cpu - - libarrow-dataset 18.1.0 haafc02e_3_cpu - - libcxx >=18 + - libarrow 18.1.0 ha2aff55_4_cpu + - libarrow-acero 18.1.0 h512cd83_4_cpu + - libarrow-dataset 18.1.0 h512cd83_4_cpu + - libgcc >=13 - libprotobuf >=5.28.2,<5.28.3.0a0 + - libstdcxx >=13 license: Apache-2.0 - size: 451428 - timestamp: 1733453012619 + license_family: APACHE + size: 513745 + timestamp: 1733608111290 - kind: conda name: libarrow-substrait version: 18.1.0 - build: h56a123c_3_cpu - build_number: 3 + build: had74209_4_cpu + build_number: 4 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-h56a123c_3_cpu.conda - sha256: 139104d80048382c48718a65721b24fa4d69abd6c2052ee1ab20f32b7d48228d - md5: 306bb541b83a83b66d5c1e6880302886 + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-had74209_4_cpu.conda + sha256: 29e44d6070d64cd4b357e02afeae233d2e90d917a008a2724c9cd463015f0319 + md5: bf261e5fa25ce4acc11a80bdc73b88b2 depends: - __glibc >=2.17,<3.0.a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.1.0 hcf3f2e3_3_cpu - - libarrow-acero 18.1.0 h36004a0_3_cpu - - libarrow-dataset 18.1.0 h36004a0_3_cpu + - libarrow 18.1.0 h3b07799_4_cpu + - libarrow-acero 18.1.0 h8bbc2ab_4_cpu + - libarrow-dataset 18.1.0 h8bbc2ab_4_cpu - libgcc >=13 - libprotobuf >=5.28.2,<5.28.3.0a0 - libstdcxx >=13 license: Apache-2.0 - size: 520740 - timestamp: 1733454379083 + license_family: APACHE + size: 519919 + timestamp: 1733608152065 - kind: conda name: libarrow-substrait version: 18.1.0 - build: hc52ba39_3_cpu - build_number: 3 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-hc52ba39_3_cpu.conda - sha256: 66f2c06ad10d8886e53661420c5b73de217a088ee4693186deec7df292f9c766 - md5: 7a8e305f1689687ed063bb4553c1a7a5 + build: hf3d3107_4_cpu + build_number: 4 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-hf3d3107_4_cpu.conda + sha256: 9d9ebd042b9e8561b64f057d2adb24d331a772ccf1af3ed2d8b5b1566729f236 + md5: c093b05dc6d1b6057342d3dd6f3bd0d8 depends: + - __osx >=11.0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.1.0 hb63acf4_3_cpu - - libarrow-acero 18.1.0 he2e0623_3_cpu - - libarrow-dataset 18.1.0 he2e0623_3_cpu - - libgcc >=13 + - libarrow 18.1.0 h86d57b8_4_cpu + - libarrow-acero 18.1.0 h1dc2043_4_cpu + - libarrow-dataset 18.1.0 h1dc2043_4_cpu + - libcxx >=18 - libprotobuf >=5.28.2,<5.28.3.0a0 - - libstdcxx >=13 license: Apache-2.0 - size: 515638 - timestamp: 1733453200561 + license_family: APACHE + size: 451982 + timestamp: 1733607898511 - kind: conda name: libblas version: 3.9.0 @@ -4858,58 +4873,61 @@ packages: - kind: conda name: libparquet version: 18.1.0 - build: h3a603ae_3_cpu - build_number: 3 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-h3a603ae_3_cpu.conda - sha256: 89f40f0f4e706392b082ee4910fedd2442b57abbf6cbbfb16a00b5aa89beb41d - md5: 78d2f729e26788a3660cee9906f440e7 + build: h34a048e_4_cpu + build_number: 4 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-h34a048e_4_cpu.conda + sha256: 488d82356fc4e6dfd6c10a4100c36af17db1b7eb72cce0bd8973014220dc3066 + md5: 46db27c16b29f48a37a40e3b2c9dcfe3 depends: - - __osx >=11.0 - - libarrow 18.1.0 h5affd47_3_cpu - - libcxx >=18 + - libarrow 18.1.0 ha2aff55_4_cpu + - libgcc >=13 + - libstdcxx >=13 - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 - size: 873697 - timestamp: 1733452286970 + license_family: APACHE + size: 1117278 + timestamp: 1733607904359 - kind: conda name: libparquet version: 18.1.0 - build: h553aec1_3_cpu - build_number: 3 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-h553aec1_3_cpu.conda - sha256: 965940abe9e49ae7b3adee19bf458f866a0ef35a3cf29d627b2d52c77a96a96b - md5: 46c6783e8b46449a9baabef57c69f30a + build: hf4cc9e7_4_cpu + build_number: 4 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-hf4cc9e7_4_cpu.conda + sha256: ccadab6395090b3cbc54243fcf5c6e49eaee46aaaa4221ca8ca7803a34bdc25d + md5: b462d962b5254923c5f65ce1c68dfc17 depends: - - libarrow 18.1.0 hb63acf4_3_cpu - - libgcc >=13 - - libstdcxx >=13 + - __osx >=11.0 + - libarrow 18.1.0 h86d57b8_4_cpu + - libcxx >=18 - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 - size: 1116941 - timestamp: 1733452997475 + license_family: APACHE + size: 873584 + timestamp: 1733607239103 - kind: conda name: libparquet version: 18.1.0 - build: hbdb145b_3_cpu - build_number: 3 + build: hf4f6db6_4_cpu + build_number: 4 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-hbdb145b_3_cpu.conda - sha256: 034086f71824a3ea77a9bd21029fd4c4ef25b3a95fc77933704b8b49ff55c7f3 - md5: cb249762e1e65941b559d436c60e520d + url: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-hf4f6db6_4_cpu.conda + sha256: f957b6ea5c4023448891f63f7b184a663d85aa5b2717b0e0ebfbfcf97b542751 + md5: f18b10bf19bb384183f2aa546e9f6f0a depends: - __glibc >=2.17,<3.0.a0 - - libarrow 18.1.0 hcf3f2e3_3_cpu + - libarrow 18.1.0 h3b07799_4_cpu - libgcc >=13 - libstdcxx >=13 - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 - size: 1204740 - timestamp: 1733454014411 + license_family: APACHE + size: 1204859 + timestamp: 1733607834047 - kind: conda name: libpng version: 1.6.44 @@ -5876,76 +5894,76 @@ packages: timestamp: 1733220925299 - kind: conda name: max - version: 24.6.0.dev2024120705 + version: 24.6.0.dev2024120805 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120705-release.conda - sha256: b75fcf4dfbeea5eb4bf1a83b5a4dc1e890aaca5afb87aeea00204d9d43263ab6 - md5: d880e434f1f61e9f7fe35eb5af426762 - depends: - - max-core ==24.6.0.dev2024120705 release - - max-python >=24.6.0.dev2024120705,<25.0a0 - - mojo-jupyter ==24.6.0.dev2024120705 release - - mblack ==24.6.0.dev2024120705 release + url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120805-release.conda + sha256: f2f1a4e4373ac62de23c41ce28e1483b45322cffe8aef91ef93ce0f65fe5f20d + md5: d41647f3009da6fe575321d46a741dfa + depends: + - max-core ==24.6.0.dev2024120805 release + - max-python >=24.6.0.dev2024120805,<25.0a0 + - mojo-jupyter ==24.6.0.dev2024120805 release + - mblack ==24.6.0.dev2024120805 release license: LicenseRef-Modular-Proprietary - size: 9922 - timestamp: 1733548613215 + size: 9916 + timestamp: 1733635043550 - kind: conda name: max-core - version: 24.6.0.dev2024120705 + version: 24.6.0.dev2024120805 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120705-release.conda - sha256: 1e38d40637ac5faadb1465f7c3ae80077a02fa25773f832c4730bb3f5d285cae - md5: 210eb01e2dc1c01b03d2a817457b895d + url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120805-release.conda + sha256: aebf26b21cebf2afdf9063203e542e5e635059c57c5fb9e74478b98f652f8e46 + md5: 620d81f38c5da882ee0799e26d86b0ad depends: - - mblack ==24.6.0.dev2024120705 release + - mblack ==24.6.0.dev2024120805 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 247471356 - timestamp: 1733548812210 + size: 247607615 + timestamp: 1733634983707 - kind: conda name: max-core - version: 24.6.0.dev2024120705 + version: 24.6.0.dev2024120805 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120705-release.conda - sha256: a2e530d128deb23e231c5baf2c89b28fc02879f4608b18415f2cc70604e5ea86 - md5: c036e06aec88105f116ac9b6bfff8720 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120805-release.conda + sha256: 1fc1554d9c39ed5bf22957f02418ee0df4ce4dfc033dd3ca54a7f20c8946b7b3 + md5: 6e7e581fe4e11d252e8729a6cc564b29 depends: - - mblack ==24.6.0.dev2024120705 release + - mblack ==24.6.0.dev2024120805 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 251342975 - timestamp: 1733548613213 + size: 251457302 + timestamp: 1733635043548 - kind: conda name: max-core - version: 24.6.0.dev2024120705 + version: 24.6.0.dev2024120805 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120705-release.conda - sha256: dba294806285f1242d3274833451c21ceae2122441177ad870162f18465402cd - md5: 55c2f32ca83e4e21f8ddb5185c8cd263 + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120805-release.conda + sha256: f249a329a1b072ebd9cd365842d54892d4d46a8fb642ab8fb22ff26f211dddb7 + md5: 04d8f67fb1a7deb6147da14b60f668d3 depends: - - mblack ==24.6.0.dev2024120705 release + - mblack ==24.6.0.dev2024120805 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 211936941 - timestamp: 1733548831297 + size: 212001315 + timestamp: 1733635167877 - kind: conda name: max-python - version: 24.6.0.dev2024120705 + version: 24.6.0.dev2024120805 build: 3.11release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120705-3.11release.conda - sha256: 21048c18d9b0e6aaaaabdbfa125e20f9555be811ea88c1a614fc00a8825d5969 - md5: 698eb0317cf8b0bffdf28220d595358f + url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120805-3.11release.conda + sha256: a2b71b73a181572fa5c954f5600f8718fa95c939374729ae835752f075b27a34 + md5: 5c5cc7463dcab80905f85cb8b3246055 depends: - - max-core ==24.6.0.dev2024120705 release + - max-core ==24.6.0.dev2024120805 release - python 3.11.* - pillow - fastapi @@ -5967,18 +5985,18 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 123717970 - timestamp: 1733548812218 + size: 123756323 + timestamp: 1733634983714 - kind: conda name: max-python - version: 24.6.0.dev2024120705 + version: 24.6.0.dev2024120805 build: 3.11release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120705-3.11release.conda - sha256: 9e288a0e29839fbf4ad9c88e94828aab7a5002328dd4599c5883810977753a8b - md5: ead33ec6ccac667a98a9ef337cdd9c10 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120805-3.11release.conda + sha256: 46477a954b3fc2a03aa40af8eea834628b1e7d9f4267d41512248cea7c8cbfd6 + md5: d3607aaaa6f5188f221c71153d71fdaa depends: - - max-core ==24.6.0.dev2024120705 release + - max-core ==24.6.0.dev2024120805 release - python 3.11.* - pillow - fastapi @@ -6000,18 +6018,18 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 127368506 - timestamp: 1733548613221 + size: 127450091 + timestamp: 1733635043556 - kind: conda name: max-python - version: 24.6.0.dev2024120705 + version: 24.6.0.dev2024120805 build: 3.11release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120705-3.11release.conda - sha256: cf30ebcc9843242a9a2090366b219b1d8bf36c06623841bd1d83453f4beaf01a - md5: 371383929a69fe93ef3e336e144d3661 + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120805-3.11release.conda + sha256: f58dd3d9dec6f7470e64cec203d725efbc2e425b7f9953968f9a0a83f012a606 + md5: 34e265181bb66843e853f6cef005419d depends: - - max-core ==24.6.0.dev2024120705 release + - max-core ==24.6.0.dev2024120805 release - python 3.11.* - pillow - fastapi @@ -6033,17 +6051,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 112384807 - timestamp: 1733548831300 + size: 112446830 + timestamp: 1733635167880 - kind: conda name: mblack - version: 24.6.0.dev2024120705 + version: 24.6.0.dev2024120805 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120705-release.conda - sha256: e0ecd940a6053ec0d44e3da2b9d99885efcb38f0ae32b92136155bb5aa252a75 - md5: b801385ef3cbed6f7415ddf938dc182e + url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120805-release.conda + sha256: e5f3d6f9e9e7acb97ff8364ddb90e34e38bfe68ba382b3dffacfbf4b9d6c812a + md5: 8a48ed658740aaf0063c754fd35e9cce depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -6053,8 +6071,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130737 - timestamp: 1733548613220 + size: 130744 + timestamp: 1733635043555 - kind: conda name: mdurl version: 0.1.2 @@ -6073,21 +6091,21 @@ packages: timestamp: 1733255681319 - kind: conda name: mojo-jupyter - version: 24.6.0.dev2024120705 + version: 24.6.0.dev2024120805 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120705-release.conda - sha256: ff854ead8fa7014dd8ed800998afb01ac9faeec55dfc84bcc2d6d21b38e5a8d1 - md5: ce9ee67733d1ab8c43031b67b475dba8 + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120805-release.conda + sha256: 1535cecc4930833e604ed39a4450b421914312f4abbb4fc6af9e7aedd5293ffd + md5: ad285352ec9e9061d8facbf62f708d9d depends: - - max-core ==24.6.0.dev2024120705 release + - max-core ==24.6.0.dev2024120805 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 11370 - timestamp: 1733548613220 + size: 11369 + timestamp: 1733635043556 - kind: conda name: multidict version: 6.1.0 diff --git a/examples/notebooks/magic.lock b/examples/notebooks/magic.lock index 5192892142..2a552de926 100644 --- a/examples/notebooks/magic.lock +++ b/examples/notebooks/magic.lock @@ -15,9 +15,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/argon2-cffi-bindings-21.2.0-py312h66e93f0_5.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-hb88c0a9_10.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.0-hecf86a2_2.conda @@ -27,11 +27,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.1-hab05fe4_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.2-hdeadb07_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h7bd072d_8.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.4-h3a84f74_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.5-h3a84f74_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.1-hf42f96a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-hf42f96a_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.6-h159bff8_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-h5558e3c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.7-ha6b94fc_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-hac138a2_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.10.0-h113e628_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.13.0-h3cf044e_1.conda @@ -64,7 +64,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/entrypoints-0.4-pyhd8ed1ab_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/executing-2.1.0-pyhd8ed1ab_0.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/filelock-3.16.1-pyhd8ed1ab_1.conda @@ -81,7 +81,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/httptools-0.6.4-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-7.0.2-pyha770c72_0.conda @@ -104,17 +104,17 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.3.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.16-hb7c19ff_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_h5888daf_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-hcf3f2e3_3_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-h36004a0_3_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-h36004a0_3_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-h56a123c_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-h3b07799_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-h8bbc2ab_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-h8bbc2ab_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-had74209_4_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-25_linux64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hb9d3cd8_2.conda @@ -143,7 +143,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.28-pthreads_h94d23a6_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-hbdb145b_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-hf4f6db6_4_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.44-hadc24fc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.2-h5b01275_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_1.conda @@ -166,13 +166,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/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.dev2024120705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120705-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120805-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120805-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.dev2024120705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120805-release.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/multiprocess-0.70.15-py312h98912ed_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda @@ -212,7 +212,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/psutil-6.1.0-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-18.1.0-py312h7900ff3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-18.1.0-py312h01725c0_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda @@ -239,7 +239,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.35.1-pyhd8ed1ab_1.conda - 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/rfc3339-validator-0.1.4-pyhd8ed1ab_0.tar.bz2 + - 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/linux-64/rpds-py-0.22.3-py312h12e396e_0.conda @@ -253,7 +253,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.1.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh0d859eb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda @@ -267,7 +267,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20241003-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20241206-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda @@ -303,9 +303,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/argon2-cffi-bindings-21.2.0-py312hb2c0f52_5.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-hac900a4_10.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.0-h35473ba_2.conda @@ -315,11 +315,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.1-hf4e072c_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.2-h10eb1bc_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h28a5e6a_8.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.4-h29aef15_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.5-h29aef15_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.1-h4c7db1d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h4c7db1d_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.6-hffbb33f_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h7085e57_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.7-h6c346da_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h5e41cbe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-core-cpp-1.14.0-h1887c18_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-identity-cpp-1.10.0-h47b0b28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-blobs-cpp-12.13.0-h185ecfd_1.conda @@ -352,7 +352,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/entrypoints-0.4-pyhd8ed1ab_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/executing-2.1.0-pyhd8ed1ab_0.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/filelock-3.16.1-pyhd8ed1ab_1.conda @@ -369,7 +369,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/httptools-0.6.4-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda @@ -393,17 +393,17 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.3.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/keyutils-1.6.1-h4e544f5_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/krb5-1.21.3-h50a48e9_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lcms2-2.16-h922389a_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.0.0-h4de3ea5_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h5ad3122_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-hb63acf4_3_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-he2e0623_3_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-he2e0623_3_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-hc52ba39_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-ha2aff55_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h512cd83_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h512cd83_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h3644d33_4_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-25_linuxaarch64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlicommon-1.1.0-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlidec-1.1.0-h86ecc28_2.conda @@ -432,7 +432,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnghttp2-1.64.0-hc8609a4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.28-pthreads_h9d3fd7e_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-h553aec1_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-h34a048e_4_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.44-hc4a20ef_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.2-h029595c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_1.conda @@ -455,13 +455,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/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.dev2024120705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120705-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120805-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120805-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.dev2024120705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120805-release.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/multiprocess-0.70.15-py312hdd3e373_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda @@ -501,7 +501,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/psutil-6.1.0-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pthread-stubs-0.4-h86ecc28_1002.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-18.1.0-py312h8025657_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-18.1.0-py312h66f7834_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda @@ -528,7 +528,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.35.1-pyhd8ed1ab_1.conda - 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/rfc3339-validator-0.1.4-pyhd8ed1ab_0.tar.bz2 + - 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/linux-aarch64/rpds-py-0.22.3-py312ha4e36d7_0.conda @@ -542,7 +542,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.1.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh0d859eb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda @@ -556,7 +556,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20241003-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20241206-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda @@ -592,9 +592,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/appnope-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/argon2-cffi-bindings-21.2.0-py312h024a12e_5.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-h9b725a8_10.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.0-h5d7ee29_2.conda @@ -604,11 +604,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.1-hf483d09_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.2-h39f8ad8_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h68a0d7e_8.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.4-h840aca7_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.5-h840aca7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.1-h5d7ee29_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-h5d7ee29_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.6-h8474b10_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-h3b64406_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.7-ha310de4_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-he4d6490_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.14.0-hd50102c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.10.0-hc602bab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-blobs-cpp-12.13.0-h7585a09_1.conda @@ -641,7 +641,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/entrypoints-0.4-pyhd8ed1ab_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/executing-2.1.0-pyhd8ed1ab_0.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/filelock-3.16.1-pyhd8ed1ab_1.conda @@ -658,7 +658,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/httptools-0.6.4-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda @@ -682,15 +682,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.3.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.16-ha0e7c42_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_hf9b8971_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-h5affd47_3_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-haafc02e_3_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-haafc02e_3_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-h4c1644f_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-h86d57b8_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-h1dc2043_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-h1dc2043_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-hf3d3107_4_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-25_osxarm64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.1.0-hd74edd7_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.1.0-hd74edd7_2.conda @@ -716,7 +716,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.3-h39f12f2_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.64.0-h6d7220d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.28-openmp_hf332438_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-h3a603ae_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-hf4cc9e7_4_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.44-hc14010f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.2-h8f0b736_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h2348fd5_1.conda @@ -736,13 +736,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.dev2024120705-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120705-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120705-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120805-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120805-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120805-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120805-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.dev2024120705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120805-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 @@ -782,7 +782,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/psutil-6.1.0-py312h0bf5046_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pthread-stubs-0.4-hd74edd7_1002.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-18.1.0-py312h1f38498_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-18.1.0-py312hc40f475_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda @@ -811,7 +811,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.35.1-pyhd8ed1ab_1.conda - 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/rfc3339-validator-0.1.4-pyhd8ed1ab_0.tar.bz2 + - 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/osx-arm64/rpds-py-0.22.3-py312hcd83bfe_0.conda @@ -824,7 +824,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.1.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh31c8845_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda @@ -838,7 +838,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20241003-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20241206-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda @@ -1152,20 +1152,21 @@ packages: - kind: conda name: arrow version: 1.3.0 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_0.conda - sha256: ff49825c7f9e29e09afa6284300810e7a8640d621740efb47c4541f4dc4969db - md5: b77d8c2313158e6e461ca0efb1c2c508 + url: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_1.conda + sha256: c4b0bdb3d5dee50b60db92f99da3e4c524d5240aafc0a5fcc15e45ae2d1a3cd1 + md5: 46b53236fdd990271b03c3978d4218a9 depends: - - python >=3.8 + - python >=3.9 - python-dateutil >=2.7.0 - types-python-dateutil >=2.8.10 license: Apache-2.0 license_family: Apache - size: 100096 - timestamp: 1696129131844 + size: 99951 + timestamp: 1733584345583 - kind: conda name: asttokens version: 3.0.0 @@ -1187,19 +1188,20 @@ packages: - kind: conda name: async-lru version: 2.0.4 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.4-pyhd8ed1ab_0.conda - sha256: 7ed83731979fe5b046c157730e50af0e24454468bbba1ed8fc1a3107db5d7518 - md5: 3d081de3a6ea9f894bbb585e8e3a4dcb + url: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.4-pyhd8ed1ab_1.conda + sha256: 344157f396dfdc929d1dff8fe010abe173cd168d22a56648583e616495f2929e + md5: 40c673c7d585623b8f1ee650c8734eb6 depends: - - python >=3.8 + - python >=3.9 - typing_extensions >=4.0.0 license: MIT license_family: MIT - size: 15342 - timestamp: 1690563152778 + size: 15318 + timestamp: 1733584388228 - kind: conda name: attrs version: 24.2.0 @@ -1648,12 +1650,12 @@ packages: timestamp: 1731734668760 - kind: conda name: aws-c-s3 - version: 0.7.4 + version: 0.7.5 build: h29aef15_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.4-h29aef15_0.conda - sha256: 396517aca6bdbe2e3d8a6275b33865eeb0d09f0dd379c3cc55c36f6004b17f2a - md5: 1046cf15a47f06a0af07f674e477d807 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.5-h29aef15_0.conda + sha256: 2aef28beec88df561f7f4d0f7ec7fea6cf54a1d6c8516fd243a4269d320f06cb + md5: 98609602eb077c7b5225d3aa1467f789 depends: - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.0,<0.8.1.0a0 @@ -1665,16 +1667,16 @@ packages: - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 117398 - timestamp: 1733299233564 + size: 117067 + timestamp: 1733565203669 - kind: conda name: aws-c-s3 - version: 0.7.4 + version: 0.7.5 build: h3a84f74_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.4-h3a84f74_0.conda - sha256: 91c6f7aa3dd230bcefe2654469b0704c2bdb2574e6d0d7c56cf9e9071f44cc26 - md5: 7d029b9aa9decf4c0fb8a9a8940c9906 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.5-h3a84f74_0.conda + sha256: eb2534517bdaccf2953716e49e8b918ffe7e78a524c6321fae30c3dd7f46cb0d + md5: a13702b87657cf2d0cdd338fe55f4ba1 depends: - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 @@ -1687,16 +1689,16 @@ packages: - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 113660 - timestamp: 1733299194447 + size: 113877 + timestamp: 1733565162763 - kind: conda name: aws-c-s3 - version: 0.7.4 + version: 0.7.5 build: h840aca7_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.4-h840aca7_0.conda - sha256: 564bbb781c1aebfcdda43a0e82f447e34de1764c57ebc1733fe6437248f5b7c9 - md5: 02f78a084e101dee30c794f963549de4 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.5-h840aca7_0.conda + sha256: 30782a1392883d26a441fc2857985136888aa454efbea8b85bbcbb7a7ad3d2e2 + md5: 1d33c89e2462b6b0056bfb883b76d2fb depends: - __osx >=11.0 - aws-c-auth >=0.8.0,<0.8.1.0a0 @@ -1707,8 +1709,8 @@ packages: - aws-checksums >=0.2.2,<0.2.3.0a0 license: Apache-2.0 license_family: Apache - size: 97136 - timestamp: 1733299356527 + size: 98296 + timestamp: 1733565277623 - kind: conda name: aws-c-sdkutils version: 0.2.1 @@ -1809,15 +1811,14 @@ packages: timestamp: 1731687193373 - kind: conda name: aws-crt-cpp - version: 0.29.6 - build: h159bff8_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.6-h159bff8_2.conda - sha256: 04ca62caa764bb95f304af8486c1af7c4f76d4ad5204c494edcf86af653d2ad0 - md5: c498e6490834aacf7835c96403862881 + version: 0.29.7 + build: h6c346da_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.7-h6c346da_1.conda + sha256: 9a60a93dbe896acf533dded5f4ae11546ff4fb6a9fb0e06db6d915206ba0b1f2 + md5: cf87fc73eee6dbfc12dec79444d5dfc0 depends: - - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.0,<0.8.1.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 @@ -1825,23 +1826,23 @@ packages: - aws-c-http >=0.9.1,<0.9.2.0a0 - aws-c-io >=0.15.2,<0.15.3.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - - aws-c-s3 >=0.7.4,<0.7.5.0a0 + - aws-c-s3 >=0.7.5,<0.7.6.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 354822 - timestamp: 1733333950713 + size: 283237 + timestamp: 1733588714381 - kind: conda name: aws-crt-cpp - version: 0.29.6 - build: h8474b10_2 - build_number: 2 + version: 0.29.7 + build: ha310de4_1 + build_number: 1 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.6-h8474b10_2.conda - sha256: 5ca9df9516583076ea40129e71b103efaca21ca02f40b59d69485823613cbfba - md5: 54c898f166bcfbe06c2b7ac36360f371 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.7-ha310de4_1.conda + sha256: b5ab81d50b6cc2ff70dd56a16b5b9e1cbe8c69e9e357db2abf925d03c5d0133a + md5: 77769ed013cbf8824c1927407ea03c69 depends: - __osx >=11.0 - aws-c-auth >=0.8.0,<0.8.1.0a0 @@ -1851,23 +1852,24 @@ packages: - aws-c-http >=0.9.1,<0.9.2.0a0 - aws-c-io >=0.15.2,<0.15.3.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - - aws-c-s3 >=0.7.4,<0.7.5.0a0 + - aws-c-s3 >=0.7.5,<0.7.6.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - libcxx >=18 license: Apache-2.0 license_family: Apache - size: 235829 - timestamp: 1733334077172 + size: 236862 + timestamp: 1733588815005 - kind: conda name: aws-crt-cpp - version: 0.29.6 - build: hffbb33f_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.6-hffbb33f_2.conda - sha256: 5f9490edaddde550cf05861626175b648da73c84bcde61ac2a6a1bf1a8fd6982 - md5: fb8be2af168b63e0b77076a1dc6baa85 + version: 0.29.7 + build: ha6b94fc_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.7-ha6b94fc_1.conda + sha256: 5907a2c370f94e5f63c17e4347525d21eb1c00fbd8b731d79ec1eb4e857689ca + md5: f5fb6f6283deb0b4d2c187ad4a7b6d4d depends: + - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.0,<0.8.1.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 @@ -1875,50 +1877,52 @@ packages: - aws-c-http >=0.9.1,<0.9.2.0a0 - aws-c-io >=0.15.2,<0.15.3.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - - aws-c-s3 >=0.7.4,<0.7.5.0a0 + - aws-c-s3 >=0.7.5,<0.7.6.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 284031 - timestamp: 1733333955728 + size: 353873 + timestamp: 1733588735223 - kind: conda name: aws-sdk-cpp version: 1.11.458 - build: h3b64406_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-h3b64406_0.conda - sha256: ded5412750f5c29bdf8ef6bc5ab26e443dc4943bd69c9098a791d8a2bf9b184e - md5: 9a8d3ba158ff8ea08e17de366c238706 + build: h5e41cbe_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h5e41cbe_1.conda + sha256: b45305787a78f2bf7ecabc401b5bfe451509b434dd041a0a554572a70302d2f3 + md5: 1861b1fb86b336f1f53faaac5a76046c depends: - - __osx >=11.0 - aws-c-common >=0.10.3,<0.10.4.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - - aws-crt-cpp >=0.29.6,<0.29.7.0a0 + - aws-crt-cpp >=0.29.7,<0.29.8.0a0 - libcurl >=8.10.1,<9.0a0 - - libcxx >=18 + - libgcc >=13 + - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 2853609 - timestamp: 1733389337912 + size: 2910575 + timestamp: 1733576378398 - kind: conda name: aws-sdk-cpp version: 1.11.458 - build: h5558e3c_0 + build: hac138a2_1 + build_number: 1 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-h5558e3c_0.conda - sha256: 7eab747a5a3e1a46b9c85c591c30ca2d4e90c2cebeaec95c4fe016846efdfa14 - md5: b1919becd17fe224aacf708114231fda + url: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-hac138a2_1.conda + sha256: fdb9c94d7524c52837643428b1aab4f35bed3ba2862a57e1b03e63038c7c146f + md5: bbdd9589b1a32a80b0e3f98a2a482542 depends: - __glibc >=2.17,<3.0.a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - - aws-crt-cpp >=0.29.6,<0.29.7.0a0 + - aws-crt-cpp >=0.29.7,<0.29.8.0a0 - libcurl >=8.10.1,<9.0a0 - libgcc >=13 - libstdcxx >=13 @@ -1926,30 +1930,31 @@ packages: - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 3059100 - timestamp: 1733388777418 + size: 3071464 + timestamp: 1733576251149 - kind: conda name: aws-sdk-cpp version: 1.11.458 - build: h7085e57_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h7085e57_0.conda - sha256: 6d5327305721d18d650a3f8a377dc30e65600f59bd33fd4fcad106965b09b6b8 - md5: 005e0cc687a2421a4ad493e5b7058abe + build: he4d6490_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-he4d6490_1.conda + sha256: 61abc03dfbe372b258b8b6790bf3ad3a3265e02ce24b6b22bfe8f2fcab94954a + md5: 2941213b750689ace0862a6d695bb740 depends: + - __osx >=11.0 - aws-c-common >=0.10.3,<0.10.4.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - - aws-crt-cpp >=0.29.6,<0.29.7.0a0 + - aws-crt-cpp >=0.29.7,<0.29.8.0a0 - libcurl >=8.10.1,<9.0a0 - - libgcc >=13 - - libstdcxx >=13 + - libcxx >=18 - libzlib >=1.3.1,<2.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 2903434 - timestamp: 1733388870289 + size: 2847256 + timestamp: 1733576733615 - kind: conda name: azure-core-cpp version: 1.14.0 @@ -2884,18 +2889,19 @@ packages: - kind: conda name: executing version: 2.1.0 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/executing-2.1.0-pyhd8ed1ab_0.conda - sha256: a52d7516e2e11d3eb10908e10d3eb3f8ef267fea99ed9b09d52d96c4db3441b8 - md5: d0441db20c827c11721889a241df1220 + url: https://conda.anaconda.org/conda-forge/noarch/executing-2.1.0-pyhd8ed1ab_1.conda + sha256: 28d25ea375ebab4bf7479228f8430db20986187b04999136ff5c722ebd32eb60 + md5: ef8b5fca76806159fc25b4f48d8737eb depends: - - python >=2.7 + - python >=3.9 license: MIT license_family: MIT - size: 28337 - timestamp: 1725214501850 + size: 28348 + timestamp: 1733569440265 - kind: conda name: fastapi version: 0.115.6 @@ -3081,6 +3087,7 @@ packages: depends: - python >=3.9 license: BSD-3-Clause + license_family: BSD size: 134726 timestamp: 1733493445080 - kind: conda @@ -3341,13 +3348,13 @@ packages: timestamp: 1733501478172 - kind: conda name: huggingface_hub - version: 0.26.3 + version: 0.26.5 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.3-pyhd8ed1ab_0.conda - sha256: 66ffed967463e4a25f1dc4ca699d85dd55d1d150fed214c6380f11a981e0acb7 - md5: 997fc223fbc616c262f2a32a22d433a4 + url: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.5-pyhd8ed1ab_0.conda + sha256: bdbf614d87155c7f9b8fe9c3d039528298119832e9f52959b15c522a9841eef7 + md5: 37236111cd92068e5af2f98cbb476642 depends: - filelock - fsspec >=2023.5.0 @@ -3359,9 +3366,8 @@ packages: - typing-extensions >=3.7.4.3 - typing_extensions >=3.7.4.3 license: Apache-2.0 - license_family: APACHE - size: 274858 - timestamp: 1733170279930 + size: 274900 + timestamp: 1733637007500 - kind: conda name: hyperframe version: 6.0.1 @@ -3556,6 +3562,7 @@ packages: - arrow >=0.15.0 - python >=3.9 license: MIT + license_family: MIT size: 19832 timestamp: 1733493720346 - kind: conda @@ -3676,6 +3683,7 @@ packages: - referencing >=0.28.4 - rpds-py >=0.7.1 license: MIT + license_family: MIT size: 74256 timestamp: 1733472818764 - kind: conda @@ -3692,6 +3700,7 @@ packages: - python >=3.9 - referencing >=0.31.0 license: MIT + license_family: MIT size: 16170 timestamp: 1733493624968 - kind: conda @@ -3715,6 +3724,7 @@ packages: - uri-template - webcolors >=24.6.0 license: MIT + license_family: MIT size: 7135 timestamp: 1733472820035 - kind: conda @@ -3847,6 +3857,7 @@ packages: - python >=3.9 - terminado >=0.8.3 license: BSD-3-Clause + license_family: BSD size: 19711 timestamp: 1733428049134 - kind: conda @@ -3901,12 +3912,13 @@ packages: - kind: conda name: jupyterlab_server version: 2.27.3 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_0.conda - sha256: a23b26d1a35bccdb91b9232119e5f402624e1e1a252b0e64cc20c6eb5b87cefb - md5: af8239bf1ba7e8c69b689f780f653488 + url: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda + sha256: d03d0b7e23fa56d322993bc9786b3a43b88ccc26e58b77c756619a921ab30e86 + md5: 9dc4b2b0f41f0de41d27f3293e319357 depends: - babel >=2.10 - importlib-metadata >=4.8.3 @@ -3915,14 +3927,14 @@ packages: - jsonschema >=4.18 - jupyter_server >=1.21,<3 - packaging >=21.3 - - python >=3.8 + - python >=3.9 - requests >=2.31 constrains: - openapi-core >=0.18.0,<0.19.0 license: BSD-3-Clause license_family: BSD - size: 49355 - timestamp: 1721163412436 + size: 49449 + timestamp: 1733599666357 - kind: conda name: keyutils version: 1.6.1 @@ -4189,30 +4201,32 @@ packages: - kind: conda name: libarrow version: 18.1.0 - build: h5affd47_3_cpu - build_number: 3 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-h5affd47_3_cpu.conda - sha256: 9dac7f7b96972a3c18549d8669269233ae9e7b25da56161bd85a86b98ca61f76 - md5: 3dc73b42851e6096542458eaf2c074ca + build: h3b07799_4_cpu + build_number: 4 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-h3b07799_4_cpu.conda + sha256: 8837dc6e60522eef63554654c45d18143006324c43391c6e8dc5d2b20997466d + md5: 27675c7172667268440306533e4928de depends: - - __osx >=11.0 - - aws-crt-cpp >=0.29.6,<0.29.7.0a0 + - __glibc >=2.17,<3.0.a0 + - aws-crt-cpp >=0.29.7,<0.29.8.0a0 - aws-sdk-cpp >=1.11.458,<1.11.459.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-identity-cpp >=1.10.0,<1.10.1.0a0 - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 - bzip2 >=1.0.8,<2.0a0 + - gflags >=2.2.2,<2.3.0a0 - glog >=0.7.1,<0.8.0a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - libbrotlidec >=1.1.0,<1.2.0a0 - libbrotlienc >=1.1.0,<1.2.0a0 - - libcxx >=18 + - libgcc >=13 - libgoogle-cloud >=2.31.0,<2.32.0a0 - libgoogle-cloud-storage >=2.31.0,<2.32.0a0 - libre2-11 >=2024.7.2 + - libstdcxx >=13 - libutf8proc >=2.9.0,<2.10.0a0 - libzlib >=1.3.1,<2.0a0 - lz4-c >=1.9.3,<1.10.0a0 @@ -4221,40 +4235,40 @@ packages: - snappy >=1.2.1,<1.3.0a0 - zstd >=1.5.6,<1.6.0a0 constrains: - - arrow-cpp <0.0a0 - - apache-arrow-proc =*=cpu - parquet-cpp <0.0a0 + - apache-arrow-proc =*=cpu + - arrow-cpp <0.0a0 license: Apache-2.0 - size: 5487846 - timestamp: 1733450423101 + license_family: APACHE + size: 8793521 + timestamp: 1733607374384 - kind: conda name: libarrow version: 18.1.0 - build: hb63acf4_3_cpu - build_number: 3 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-hb63acf4_3_cpu.conda - sha256: e972904b472008f902df9e584f59ff7716fc22efc1124d1dfc41c931852acc75 - md5: d98a11c3ba32554873aeb6a071baceaa + build: h86d57b8_4_cpu + build_number: 4 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-h86d57b8_4_cpu.conda + sha256: fe6b5eb4d6e71418343b62a0d322ede7be69999b28d9e492164c12e613cf3fa0 + md5: 23431b3fdbb32858d1533da5bc8fcc86 depends: - - aws-crt-cpp >=0.29.6,<0.29.7.0a0 + - __osx >=11.0 + - aws-crt-cpp >=0.29.7,<0.29.8.0a0 - aws-sdk-cpp >=1.11.458,<1.11.459.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-identity-cpp >=1.10.0,<1.10.1.0a0 - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 - bzip2 >=1.0.8,<2.0a0 - - gflags >=2.2.2,<2.3.0a0 - glog >=0.7.1,<0.8.0a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - libbrotlidec >=1.1.0,<1.2.0a0 - libbrotlienc >=1.1.0,<1.2.0a0 - - libgcc >=13 + - libcxx >=18 - libgoogle-cloud >=2.31.0,<2.32.0a0 - libgoogle-cloud-storage >=2.31.0,<2.32.0a0 - libre2-11 >=2024.7.2 - - libstdcxx >=13 - libutf8proc >=2.9.0,<2.10.0a0 - libzlib >=1.3.1,<2.0a0 - lz4-c >=1.9.3,<1.10.0a0 @@ -4267,20 +4281,20 @@ packages: - apache-arrow-proc =*=cpu - arrow-cpp <0.0a0 license: Apache-2.0 - size: 8048003 - timestamp: 1733452700958 + license_family: APACHE + size: 5482797 + timestamp: 1733605365656 - kind: conda name: libarrow version: 18.1.0 - build: hcf3f2e3_3_cpu - build_number: 3 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-hcf3f2e3_3_cpu.conda - sha256: a82f66f0a37ed3132e6b9faff9285d7ccbe950ccfe84edd6378fdee70ef2743e - md5: 196823c7752608cb6b5d5a7a33b17410 + build: ha2aff55_4_cpu + build_number: 4 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-ha2aff55_4_cpu.conda + sha256: 795950b73029fd4d3b7fee3427c39c7357287fd94244dd5a125ac0931d31aaa3 + md5: c4d60278cb00053df1a4f0600fd2ac2a depends: - - __glibc >=2.17,<3.0.a0 - - aws-crt-cpp >=0.29.6,<0.29.7.0a0 + - aws-crt-cpp >=0.29.7,<0.29.8.0a0 - aws-sdk-cpp >=1.11.458,<1.11.459.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-identity-cpp >=1.10.0,<1.10.1.0a0 @@ -4306,180 +4320,190 @@ packages: - snappy >=1.2.1,<1.3.0a0 - zstd >=1.5.6,<1.6.0a0 constrains: - - apache-arrow-proc =*=cpu - parquet-cpp <0.0a0 + - apache-arrow-proc =*=cpu - arrow-cpp <0.0a0 license: Apache-2.0 - size: 8796519 - timestamp: 1733453489520 -- kind: conda - name: libarrow-acero - version: 18.1.0 - build: h36004a0_3_cpu - build_number: 3 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-h36004a0_3_cpu.conda - sha256: 0733a303b2dd5998489099d6c258ee442d3f8243379d339f57700554d696fe41 - md5: 6d8f74ac97166e09cdf02109ed9905ce - depends: - - __glibc >=2.17,<3.0.a0 - - libarrow 18.1.0 hcf3f2e3_3_cpu - - libgcc >=13 - - libstdcxx >=13 - license: Apache-2.0 - size: 612773 - timestamp: 1733453636002 + license_family: APACHE + size: 8035987 + timestamp: 1733607600970 - kind: conda name: libarrow-acero version: 18.1.0 - build: haafc02e_3_cpu - build_number: 3 + build: h1dc2043_4_cpu + build_number: 4 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-haafc02e_3_cpu.conda - sha256: 214df0ac0f44dd792193d11c84dbf79a42ed0f663c7b1a06aa5ab755b93c1948 - md5: f3a050129b5012bd5fc381693f6eb2cd + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-h1dc2043_4_cpu.conda + sha256: fe8cb6feeed0858cb8e7cc8889ae20165527934778adb8f7b1f2f5d1f7ade16d + md5: e4ed6162593fbb01f4d742db4215f70c depends: - __osx >=11.0 - - libarrow 18.1.0 h5affd47_3_cpu + - libarrow 18.1.0 h86d57b8_4_cpu - libcxx >=18 license: Apache-2.0 - size: 483753 - timestamp: 1733450627207 + license_family: APACHE + size: 483574 + timestamp: 1733605591770 - kind: conda name: libarrow-acero version: 18.1.0 - build: he2e0623_3_cpu - build_number: 3 + build: h512cd83_4_cpu + build_number: 4 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-he2e0623_3_cpu.conda - sha256: 1560efabce824155dd841219c299c71352594b5e237dce0879c2d8f50c16047a - md5: fa54002b982019ecc0e93cb4b2c493e9 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h512cd83_4_cpu.conda + sha256: 9e88f04409da9ca2fedc5f7bf0987ff28e96d08742e59672f744ec4624a4c991 + md5: d532c42abe13841806d97f4d9cd6dcf5 depends: - - libarrow 18.1.0 hb63acf4_3_cpu + - libarrow 18.1.0 ha2aff55_4_cpu - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 - size: 578323 - timestamp: 1733452783322 + license_family: APACHE + size: 578174 + timestamp: 1733607685962 - kind: conda - name: libarrow-dataset + name: libarrow-acero version: 18.1.0 - build: h36004a0_3_cpu - build_number: 3 + build: h8bbc2ab_4_cpu + build_number: 4 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-h36004a0_3_cpu.conda - sha256: d5a0b4a2129a540548b0232df23e6940fe73d54e5ace5a31f5419d96a059f317 - md5: e9eac639d83b1c35f7743845b922d61a + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-h8bbc2ab_4_cpu.conda + sha256: b3b4ddb2718c96c93d9b50dbf8f66265af9198b55852b4d3424c13a79ec3f84d + md5: 82bcbfe424868ce66b5ab986999f534d depends: - __glibc >=2.17,<3.0.a0 - - libarrow 18.1.0 hcf3f2e3_3_cpu - - libarrow-acero 18.1.0 h36004a0_3_cpu + - libarrow 18.1.0 h3b07799_4_cpu - libgcc >=13 - - libparquet 18.1.0 hbdb145b_3_cpu - libstdcxx >=13 license: Apache-2.0 - size: 585416 - timestamp: 1733454137952 + license_family: APACHE + size: 610772 + timestamp: 1733607505368 - kind: conda name: libarrow-dataset version: 18.1.0 - build: haafc02e_3_cpu - build_number: 3 + build: h1dc2043_4_cpu + build_number: 4 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-haafc02e_3_cpu.conda - sha256: 7b105d363d5f71db88454b304e44166c17b2970ddb0297b482f3d8b39fb39308 - md5: 8c57e5a50f865a16cafd92f5a32c9faa + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-h1dc2043_4_cpu.conda + sha256: 862fb21b871666495b4bb5e63f5fcb66b93c08893e92412b01e2717e081836eb + md5: bb940b4c583e4c8e5a9f193fabdb5840 depends: - __osx >=11.0 - - libarrow 18.1.0 h5affd47_3_cpu - - libarrow-acero 18.1.0 haafc02e_3_cpu + - libarrow 18.1.0 h86d57b8_4_cpu + - libarrow-acero 18.1.0 h1dc2043_4_cpu - libcxx >=18 - - libparquet 18.1.0 h3a603ae_3_cpu + - libparquet 18.1.0 hf4cc9e7_4_cpu license: Apache-2.0 - size: 489900 - timestamp: 1733452479126 + license_family: APACHE + size: 489457 + timestamp: 1733607417337 - kind: conda name: libarrow-dataset version: 18.1.0 - build: he2e0623_3_cpu - build_number: 3 + build: h512cd83_4_cpu + build_number: 4 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-he2e0623_3_cpu.conda - sha256: b26a03f529a4b87dcf523b012f9ccdac124b65f41801da7eb489192916e447ff - md5: 048f04da68a40e9e5e1e66ff9502b237 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h512cd83_4_cpu.conda + sha256: 4a9ffedc5570ce57a6864e46dcf36ec108557791b50fd43e82eb739f3717ff2f + md5: 1a6c409f45857d30f581a1a53abb2298 + depends: + - libarrow 18.1.0 ha2aff55_4_cpu + - libarrow-acero 18.1.0 h512cd83_4_cpu + - libgcc >=13 + - libparquet 18.1.0 h34a048e_4_cpu + - libstdcxx >=13 + license: Apache-2.0 + license_family: APACHE + size: 561495 + timestamp: 1733607973097 +- kind: conda + name: libarrow-dataset + version: 18.1.0 + build: h8bbc2ab_4_cpu + build_number: 4 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-h8bbc2ab_4_cpu.conda + sha256: 9c898ab7377953b8c7218347fdb63376d4f977cabfb8fa6bd1b421a75b8cb335 + md5: fa31464c75b20c2f3ac8fc758e034887 depends: - - libarrow 18.1.0 hb63acf4_3_cpu - - libarrow-acero 18.1.0 he2e0623_3_cpu + - __glibc >=2.17,<3.0.a0 + - libarrow 18.1.0 h3b07799_4_cpu + - libarrow-acero 18.1.0 h8bbc2ab_4_cpu - libgcc >=13 - - libparquet 18.1.0 h553aec1_3_cpu + - libparquet 18.1.0 hf4f6db6_4_cpu - libstdcxx >=13 license: Apache-2.0 - size: 559844 - timestamp: 1733453065157 + license_family: APACHE + size: 585517 + timestamp: 1733607943984 - kind: conda name: libarrow-substrait version: 18.1.0 - build: h4c1644f_3_cpu - build_number: 3 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-h4c1644f_3_cpu.conda - sha256: 562c344d57b718aa838ccc01acae240d9ab33dd2da7db40dbe75d1db6b441e71 - md5: 7ba2783c26a0008307e2a1e637c2930f + build: h3644d33_4_cpu + build_number: 4 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h3644d33_4_cpu.conda + sha256: ac053b3efd1a2701e6f34195d90a0da21dca22d70916ae6b10a019c2be6cd44c + md5: ce3062cd5caa0bdafa7976535862e648 depends: - - __osx >=11.0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.1.0 h5affd47_3_cpu - - libarrow-acero 18.1.0 haafc02e_3_cpu - - libarrow-dataset 18.1.0 haafc02e_3_cpu - - libcxx >=18 + - libarrow 18.1.0 ha2aff55_4_cpu + - libarrow-acero 18.1.0 h512cd83_4_cpu + - libarrow-dataset 18.1.0 h512cd83_4_cpu + - libgcc >=13 - libprotobuf >=5.28.2,<5.28.3.0a0 + - libstdcxx >=13 license: Apache-2.0 - size: 451428 - timestamp: 1733453012619 + license_family: APACHE + size: 513745 + timestamp: 1733608111290 - kind: conda name: libarrow-substrait version: 18.1.0 - build: h56a123c_3_cpu - build_number: 3 + build: had74209_4_cpu + build_number: 4 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-h56a123c_3_cpu.conda - sha256: 139104d80048382c48718a65721b24fa4d69abd6c2052ee1ab20f32b7d48228d - md5: 306bb541b83a83b66d5c1e6880302886 + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-had74209_4_cpu.conda + sha256: 29e44d6070d64cd4b357e02afeae233d2e90d917a008a2724c9cd463015f0319 + md5: bf261e5fa25ce4acc11a80bdc73b88b2 depends: - __glibc >=2.17,<3.0.a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.1.0 hcf3f2e3_3_cpu - - libarrow-acero 18.1.0 h36004a0_3_cpu - - libarrow-dataset 18.1.0 h36004a0_3_cpu + - libarrow 18.1.0 h3b07799_4_cpu + - libarrow-acero 18.1.0 h8bbc2ab_4_cpu + - libarrow-dataset 18.1.0 h8bbc2ab_4_cpu - libgcc >=13 - libprotobuf >=5.28.2,<5.28.3.0a0 - libstdcxx >=13 license: Apache-2.0 - size: 520740 - timestamp: 1733454379083 + license_family: APACHE + size: 519919 + timestamp: 1733608152065 - kind: conda name: libarrow-substrait version: 18.1.0 - build: hc52ba39_3_cpu - build_number: 3 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-hc52ba39_3_cpu.conda - sha256: 66f2c06ad10d8886e53661420c5b73de217a088ee4693186deec7df292f9c766 - md5: 7a8e305f1689687ed063bb4553c1a7a5 + build: hf3d3107_4_cpu + build_number: 4 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-hf3d3107_4_cpu.conda + sha256: 9d9ebd042b9e8561b64f057d2adb24d331a772ccf1af3ed2d8b5b1566729f236 + md5: c093b05dc6d1b6057342d3dd6f3bd0d8 depends: + - __osx >=11.0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.1.0 hb63acf4_3_cpu - - libarrow-acero 18.1.0 he2e0623_3_cpu - - libarrow-dataset 18.1.0 he2e0623_3_cpu - - libgcc >=13 + - libarrow 18.1.0 h86d57b8_4_cpu + - libarrow-acero 18.1.0 h1dc2043_4_cpu + - libarrow-dataset 18.1.0 h1dc2043_4_cpu + - libcxx >=18 - libprotobuf >=5.28.2,<5.28.3.0a0 - - libstdcxx >=13 license: Apache-2.0 - size: 515638 - timestamp: 1733453200561 + license_family: APACHE + size: 451982 + timestamp: 1733607898511 - kind: conda name: libblas version: 3.9.0 @@ -5877,58 +5901,61 @@ packages: - kind: conda name: libparquet version: 18.1.0 - build: h3a603ae_3_cpu - build_number: 3 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-h3a603ae_3_cpu.conda - sha256: 89f40f0f4e706392b082ee4910fedd2442b57abbf6cbbfb16a00b5aa89beb41d - md5: 78d2f729e26788a3660cee9906f440e7 + build: h34a048e_4_cpu + build_number: 4 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-h34a048e_4_cpu.conda + sha256: 488d82356fc4e6dfd6c10a4100c36af17db1b7eb72cce0bd8973014220dc3066 + md5: 46db27c16b29f48a37a40e3b2c9dcfe3 depends: - - __osx >=11.0 - - libarrow 18.1.0 h5affd47_3_cpu - - libcxx >=18 + - libarrow 18.1.0 ha2aff55_4_cpu + - libgcc >=13 + - libstdcxx >=13 - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 - size: 873697 - timestamp: 1733452286970 + license_family: APACHE + size: 1117278 + timestamp: 1733607904359 - kind: conda name: libparquet version: 18.1.0 - build: h553aec1_3_cpu - build_number: 3 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-h553aec1_3_cpu.conda - sha256: 965940abe9e49ae7b3adee19bf458f866a0ef35a3cf29d627b2d52c77a96a96b - md5: 46c6783e8b46449a9baabef57c69f30a + build: hf4cc9e7_4_cpu + build_number: 4 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-hf4cc9e7_4_cpu.conda + sha256: ccadab6395090b3cbc54243fcf5c6e49eaee46aaaa4221ca8ca7803a34bdc25d + md5: b462d962b5254923c5f65ce1c68dfc17 depends: - - libarrow 18.1.0 hb63acf4_3_cpu - - libgcc >=13 - - libstdcxx >=13 + - __osx >=11.0 + - libarrow 18.1.0 h86d57b8_4_cpu + - libcxx >=18 - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 - size: 1116941 - timestamp: 1733452997475 + license_family: APACHE + size: 873584 + timestamp: 1733607239103 - kind: conda name: libparquet version: 18.1.0 - build: hbdb145b_3_cpu - build_number: 3 + build: hf4f6db6_4_cpu + build_number: 4 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-hbdb145b_3_cpu.conda - sha256: 034086f71824a3ea77a9bd21029fd4c4ef25b3a95fc77933704b8b49ff55c7f3 - md5: cb249762e1e65941b559d436c60e520d + url: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-hf4f6db6_4_cpu.conda + sha256: f957b6ea5c4023448891f63f7b184a663d85aa5b2717b0e0ebfbfcf97b542751 + md5: f18b10bf19bb384183f2aa546e9f6f0a depends: - __glibc >=2.17,<3.0.a0 - - libarrow 18.1.0 hcf3f2e3_3_cpu + - libarrow 18.1.0 h3b07799_4_cpu - libgcc >=13 - libstdcxx >=13 - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 - size: 1204740 - timestamp: 1733454014411 + license_family: APACHE + size: 1204859 + timestamp: 1733607834047 - kind: conda name: libpng version: 1.6.44 @@ -6912,76 +6939,76 @@ packages: timestamp: 1733417051523 - kind: conda name: max - version: 24.6.0.dev2024120705 + version: 24.6.0.dev2024120805 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120705-release.conda - sha256: b75fcf4dfbeea5eb4bf1a83b5a4dc1e890aaca5afb87aeea00204d9d43263ab6 - md5: d880e434f1f61e9f7fe35eb5af426762 + url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120805-release.conda + sha256: f2f1a4e4373ac62de23c41ce28e1483b45322cffe8aef91ef93ce0f65fe5f20d + md5: d41647f3009da6fe575321d46a741dfa depends: - - max-core ==24.6.0.dev2024120705 release - - max-python >=24.6.0.dev2024120705,<25.0a0 - - mojo-jupyter ==24.6.0.dev2024120705 release - - mblack ==24.6.0.dev2024120705 release + - max-core ==24.6.0.dev2024120805 release + - max-python >=24.6.0.dev2024120805,<25.0a0 + - mojo-jupyter ==24.6.0.dev2024120805 release + - mblack ==24.6.0.dev2024120805 release license: LicenseRef-Modular-Proprietary - size: 9922 - timestamp: 1733548613215 + size: 9916 + timestamp: 1733635043550 - kind: conda name: max-core - version: 24.6.0.dev2024120705 + version: 24.6.0.dev2024120805 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120705-release.conda - sha256: 1e38d40637ac5faadb1465f7c3ae80077a02fa25773f832c4730bb3f5d285cae - md5: 210eb01e2dc1c01b03d2a817457b895d + url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120805-release.conda + sha256: aebf26b21cebf2afdf9063203e542e5e635059c57c5fb9e74478b98f652f8e46 + md5: 620d81f38c5da882ee0799e26d86b0ad depends: - - mblack ==24.6.0.dev2024120705 release + - mblack ==24.6.0.dev2024120805 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 247471356 - timestamp: 1733548812210 + size: 247607615 + timestamp: 1733634983707 - kind: conda name: max-core - version: 24.6.0.dev2024120705 + version: 24.6.0.dev2024120805 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120705-release.conda - sha256: a2e530d128deb23e231c5baf2c89b28fc02879f4608b18415f2cc70604e5ea86 - md5: c036e06aec88105f116ac9b6bfff8720 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120805-release.conda + sha256: 1fc1554d9c39ed5bf22957f02418ee0df4ce4dfc033dd3ca54a7f20c8946b7b3 + md5: 6e7e581fe4e11d252e8729a6cc564b29 depends: - - mblack ==24.6.0.dev2024120705 release + - mblack ==24.6.0.dev2024120805 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 251342975 - timestamp: 1733548613213 + size: 251457302 + timestamp: 1733635043548 - kind: conda name: max-core - version: 24.6.0.dev2024120705 + version: 24.6.0.dev2024120805 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120705-release.conda - sha256: dba294806285f1242d3274833451c21ceae2122441177ad870162f18465402cd - md5: 55c2f32ca83e4e21f8ddb5185c8cd263 + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120805-release.conda + sha256: f249a329a1b072ebd9cd365842d54892d4d46a8fb642ab8fb22ff26f211dddb7 + md5: 04d8f67fb1a7deb6147da14b60f668d3 depends: - - mblack ==24.6.0.dev2024120705 release + - mblack ==24.6.0.dev2024120805 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 211936941 - timestamp: 1733548831297 + size: 212001315 + timestamp: 1733635167877 - kind: conda name: max-python - version: 24.6.0.dev2024120705 + version: 24.6.0.dev2024120805 build: 3.12release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120705-3.12release.conda - sha256: 9083a4c9e5e0362a688eeca82b4018fd88cb7a481b15c42e887a3a8bc60f684b - md5: 9b5d9f4c3ce3cd860772c00f7d98e059 + url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120805-3.12release.conda + sha256: cf488fd0ccfb5a4dbff0891f7dba0e92422a07b6c0047727ab7ebf6a65289e9f + md5: bf821eea63859972e28ce4635cff7dda depends: - - max-core ==24.6.0.dev2024120705 release + - max-core ==24.6.0.dev2024120805 release - python 3.12.* - pillow - fastapi @@ -7003,18 +7030,18 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 123682860 - timestamp: 1733548812221 + size: 123750844 + timestamp: 1733634983717 - kind: conda name: max-python - version: 24.6.0.dev2024120705 + version: 24.6.0.dev2024120805 build: 3.12release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120705-3.12release.conda - sha256: 2a30cd49b6468f6f6d76f789ac2ed47f0496e228e06694fdbee7ed757199c63e - md5: 54e13a8164032866ff1f243f931b4ab3 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120805-3.12release.conda + sha256: 7fe8c12a6ac333dc6f3ea0132e07244131919597c3da16566a18d3657c478126 + md5: 5711b879e00dae9d692d6cf0bcad3717 depends: - - max-core ==24.6.0.dev2024120705 release + - max-core ==24.6.0.dev2024120805 release - python 3.12.* - pillow - fastapi @@ -7036,18 +7063,18 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 127403239 - timestamp: 1733548613224 + size: 127399399 + timestamp: 1733635043558 - kind: conda name: max-python - version: 24.6.0.dev2024120705 + version: 24.6.0.dev2024120805 build: 3.12release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120705-3.12release.conda - sha256: 5afdef8316567435191dbb56db99f99a3f1b4d20a4b0132978c89c458916a961 - md5: a4867e539c3f8c25297d0d695b6848b8 + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120805-3.12release.conda + sha256: 21cd561dcda4c668566b3e681e44823f6163abb4747f30e4851efb9d04eea1eb + md5: 8737c1d7ff7f04e887c4d80139e2a273 depends: - - max-core ==24.6.0.dev2024120705 release + - max-core ==24.6.0.dev2024120805 release - python 3.12.* - pillow - fastapi @@ -7069,17 +7096,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 112378959 - timestamp: 1733548831301 + size: 112431285 + timestamp: 1733635167881 - kind: conda name: mblack - version: 24.6.0.dev2024120705 + version: 24.6.0.dev2024120805 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120705-release.conda - sha256: e0ecd940a6053ec0d44e3da2b9d99885efcb38f0ae32b92136155bb5aa252a75 - md5: b801385ef3cbed6f7415ddf938dc182e + url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120805-release.conda + sha256: e5f3d6f9e9e7acb97ff8364ddb90e34e38bfe68ba382b3dffacfbf4b9d6c812a + md5: 8a48ed658740aaf0063c754fd35e9cce depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -7089,8 +7116,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130737 - timestamp: 1733548613220 + size: 130744 + timestamp: 1733635043555 - kind: conda name: mdurl version: 0.1.2 @@ -7125,21 +7152,21 @@ packages: timestamp: 1733258822603 - kind: conda name: mojo-jupyter - version: 24.6.0.dev2024120705 + version: 24.6.0.dev2024120805 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120705-release.conda - sha256: ff854ead8fa7014dd8ed800998afb01ac9faeec55dfc84bcc2d6d21b38e5a8d1 - md5: ce9ee67733d1ab8c43031b67b475dba8 + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120805-release.conda + sha256: 1535cecc4930833e604ed39a4450b421914312f4abbb4fc6af9e7aedd5293ffd + md5: ad285352ec9e9061d8facbf62f708d9d depends: - - max-core ==24.6.0.dev2024120705 release + - max-core ==24.6.0.dev2024120805 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 11370 - timestamp: 1733548613220 + size: 11369 + timestamp: 1733635043556 - kind: conda name: multidict version: 6.1.0 @@ -7316,6 +7343,7 @@ packages: - nbconvert =7.16.4=*_2 - pandoc >=2.9.2,<4.0.0 license: BSD-3-Clause + license_family: BSD size: 188505 timestamp: 1733405603619 - kind: conda @@ -7335,6 +7363,7 @@ packages: - python-fastjsonschema >=2.15 - traitlets >=5.1 license: BSD-3-Clause + license_family: BSD size: 100945 timestamp: 1733402844974 - kind: conda @@ -7410,6 +7439,7 @@ packages: - jupyter_server >=1.8,<3 - python >=3.9 license: BSD-3-Clause + license_family: BSD size: 16817 timestamp: 1733408419340 - kind: conda @@ -8330,18 +8360,19 @@ packages: - kind: conda name: pure_eval version: 0.2.3 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_0.conda - sha256: dcfcb3cee1ae0a89729601582cc3edea20ba13c9493967a03a693c67567af0c8 - md5: 0f051f09d992e0d08941706ad519ee0e + url: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda + sha256: 71bd24600d14bb171a6321d523486f6a06f855e75e547fa0cb2a0953b02047f0 + md5: 3bfdfb8dbcdc4af1ae3f9a8eb3948f04 depends: - - python >=3.5 + - python >=3.9 license: MIT license_family: MIT - size: 16551 - timestamp: 1721585805256 + size: 16668 + timestamp: 1733569518868 - kind: conda name: pyarrow version: 18.1.0 @@ -9313,19 +9344,20 @@ packages: - kind: conda name: rfc3339-validator version: 0.1.4 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_0.tar.bz2 - sha256: 7c7052b51de0b5c558f890bb11f8b5edbb9934a653d76be086b1182b9f54185d - md5: fed45fc5ea0813240707998abe49f520 + url: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda + sha256: 2e4372f600490a6e0b3bac60717278448e323cab1c0fecd5f43f7c56535a99c5 + md5: 36de09a8d3e5d5e6f4ee63af49e59706 depends: - - python >=3.5 + - python >=3.9 - six license: MIT license_family: MIT - size: 8064 - timestamp: 1638811838081 + size: 10209 + timestamp: 1733600040800 - kind: conda name: rfc3986-validator version: 0.1.1 @@ -9687,22 +9719,23 @@ packages: timestamp: 1722520112550 - kind: conda name: stack_data - version: 0.6.2 - build: pyhd8ed1ab_0 + version: 0.6.3 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.2-pyhd8ed1ab_0.conda - sha256: a58433e75229bec39f3be50c02efbe9b7083e53a1f31d8ee247564f370191eec - md5: e7df0fdd404616638df5ece6e69ba7af + url: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda + sha256: 570da295d421661af487f1595045760526964f41471021056e993e73089e9c41 + md5: b1b505328da7a6b246787df4b5a49fbc depends: - asttokens - executing - pure_eval - - python >=3.5 + - python >=3.9 license: MIT license_family: MIT - size: 26205 - timestamp: 1669632203115 + size: 26988 + timestamp: 1733569565672 - kind: conda name: starlette version: 0.41.3 @@ -10063,19 +10096,18 @@ packages: timestamp: 1733408570063 - kind: conda name: types-python-dateutil - version: 2.9.0.20241003 - build: pyhd8ed1ab_1 - build_number: 1 + version: 2.9.0.20241206 + build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20241003-pyhd8ed1ab_1.conda - sha256: 78538b566f1f1cd1e309bba8361875523c69db1a25db292a54977603c5ea1421 - md5: cb0e8ce6fe1198a058040619a09bc424 + url: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20241206-pyhd8ed1ab_0.conda + sha256: 8b98cd9464837174ab58aaa912fc95d5831879864676650a383994033533b8d1 + md5: 1dbc4a115e2ad9fb7f9d5b68397f66f9 depends: - python >=3.9 license: Apache-2.0 AND MIT - size: 21850 - timestamp: 1733279726734 + size: 22104 + timestamp: 1733612458611 - kind: conda name: typing-extensions version: 4.12.2 diff --git a/examples/operators/magic.lock b/examples/operators/magic.lock index 12a4ba1b83..255487d649 100644 --- a/examples/operators/magic.lock +++ b/examples/operators/magic.lock @@ -22,11 +22,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.1-hab05fe4_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.2-hdeadb07_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h7bd072d_8.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.4-h3a84f74_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.5-h3a84f74_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.1-hf42f96a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-hf42f96a_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.6-h159bff8_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-h5558e3c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.7-ha6b94fc_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-hac138a2_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.10.0-h113e628_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.13.0-h3cf044e_1.conda @@ -64,7 +64,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/httptools-0.6.4-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-7.0.2-pyha770c72_0.conda @@ -77,10 +77,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_h5888daf_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-hcf3f2e3_3_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-h36004a0_3_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-h36004a0_3_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-h56a123c_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-h3b07799_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-h8bbc2ab_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-h8bbc2ab_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-had74209_4_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-25_linux64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hb9d3cd8_2.conda @@ -109,7 +109,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.28-pthreads_h94d23a6_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-hbdb145b_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-hf4f6db6_4_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.44-hadc24fc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.2-h5b01275_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_1.conda @@ -131,12 +131,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.9.4-hcb278e6_0.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.dev2024120705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120705-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120805-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120805-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.dev2024120705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120805-release.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/multiprocess-0.70.15-py312h98912ed_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda @@ -239,11 +239,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.1-hf4e072c_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.2-h10eb1bc_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h28a5e6a_8.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.4-h29aef15_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.5-h29aef15_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.1-h4c7db1d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h4c7db1d_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.6-hffbb33f_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h7085e57_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.7-h6c346da_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h5e41cbe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-core-cpp-1.14.0-h1887c18_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-identity-cpp-1.10.0-h47b0b28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-blobs-cpp-12.13.0-h185ecfd_1.conda @@ -281,7 +281,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/httptools-0.6.4-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda @@ -295,10 +295,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.0.0-h4de3ea5_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h5ad3122_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-hb63acf4_3_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-he2e0623_3_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-he2e0623_3_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-hc52ba39_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-ha2aff55_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h512cd83_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h512cd83_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h3644d33_4_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-25_linuxaarch64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlicommon-1.1.0-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlidec-1.1.0-h86ecc28_2.conda @@ -327,7 +327,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnghttp2-1.64.0-hc8609a4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.28-pthreads_h9d3fd7e_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-h553aec1_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-h34a048e_4_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.44-hc4a20ef_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.2-h029595c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_1.conda @@ -349,12 +349,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.9.4-hd600fc2_0.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.dev2024120705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120705-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120805-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120805-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.dev2024120705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120805-release.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/multiprocess-0.70.15-py312hdd3e373_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda @@ -456,11 +456,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.1-hf483d09_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.2-h39f8ad8_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h68a0d7e_8.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.4-h840aca7_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.5-h840aca7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.1-h5d7ee29_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-h5d7ee29_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.6-h8474b10_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-h3b64406_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.7-ha310de4_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-he4d6490_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.14.0-hd50102c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.10.0-hc602bab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-blobs-cpp-12.13.0-h7585a09_1.conda @@ -498,7 +498,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/httptools-0.6.4-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda @@ -510,10 +510,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.16-ha0e7c42_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_hf9b8971_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-h5affd47_3_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-haafc02e_3_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-haafc02e_3_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-h4c1644f_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-h86d57b8_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-h1dc2043_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-h1dc2043_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-hf3d3107_4_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-25_osxarm64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.1.0-hd74edd7_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.1.0-hd74edd7_2.conda @@ -539,7 +539,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.3-h39f12f2_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.64.0-h6d7220d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.28-openmp_hf332438_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-h3a603ae_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-hf4cc9e7_4_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.44-hc14010f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.2-h8f0b736_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h2348fd5_1.conda @@ -558,12 +558,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.9.4-hb7217d7_0.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.dev2024120705-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120705-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120705-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120805-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120805-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120805-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120805-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.dev2024120705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120805-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 @@ -1288,12 +1288,12 @@ packages: timestamp: 1731734668760 - kind: conda name: aws-c-s3 - version: 0.7.4 + version: 0.7.5 build: h29aef15_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.4-h29aef15_0.conda - sha256: 396517aca6bdbe2e3d8a6275b33865eeb0d09f0dd379c3cc55c36f6004b17f2a - md5: 1046cf15a47f06a0af07f674e477d807 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.5-h29aef15_0.conda + sha256: 2aef28beec88df561f7f4d0f7ec7fea6cf54a1d6c8516fd243a4269d320f06cb + md5: 98609602eb077c7b5225d3aa1467f789 depends: - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.0,<0.8.1.0a0 @@ -1305,16 +1305,16 @@ packages: - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 117398 - timestamp: 1733299233564 + size: 117067 + timestamp: 1733565203669 - kind: conda name: aws-c-s3 - version: 0.7.4 + version: 0.7.5 build: h3a84f74_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.4-h3a84f74_0.conda - sha256: 91c6f7aa3dd230bcefe2654469b0704c2bdb2574e6d0d7c56cf9e9071f44cc26 - md5: 7d029b9aa9decf4c0fb8a9a8940c9906 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.5-h3a84f74_0.conda + sha256: eb2534517bdaccf2953716e49e8b918ffe7e78a524c6321fae30c3dd7f46cb0d + md5: a13702b87657cf2d0cdd338fe55f4ba1 depends: - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 @@ -1327,16 +1327,16 @@ packages: - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 113660 - timestamp: 1733299194447 + size: 113877 + timestamp: 1733565162763 - kind: conda name: aws-c-s3 - version: 0.7.4 + version: 0.7.5 build: h840aca7_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.4-h840aca7_0.conda - sha256: 564bbb781c1aebfcdda43a0e82f447e34de1764c57ebc1733fe6437248f5b7c9 - md5: 02f78a084e101dee30c794f963549de4 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.5-h840aca7_0.conda + sha256: 30782a1392883d26a441fc2857985136888aa454efbea8b85bbcbb7a7ad3d2e2 + md5: 1d33c89e2462b6b0056bfb883b76d2fb depends: - __osx >=11.0 - aws-c-auth >=0.8.0,<0.8.1.0a0 @@ -1347,8 +1347,8 @@ packages: - aws-checksums >=0.2.2,<0.2.3.0a0 license: Apache-2.0 license_family: Apache - size: 97136 - timestamp: 1733299356527 + size: 98296 + timestamp: 1733565277623 - kind: conda name: aws-c-sdkutils version: 0.2.1 @@ -1449,15 +1449,14 @@ packages: timestamp: 1731687193373 - kind: conda name: aws-crt-cpp - version: 0.29.6 - build: h159bff8_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.6-h159bff8_2.conda - sha256: 04ca62caa764bb95f304af8486c1af7c4f76d4ad5204c494edcf86af653d2ad0 - md5: c498e6490834aacf7835c96403862881 + version: 0.29.7 + build: h6c346da_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.7-h6c346da_1.conda + sha256: 9a60a93dbe896acf533dded5f4ae11546ff4fb6a9fb0e06db6d915206ba0b1f2 + md5: cf87fc73eee6dbfc12dec79444d5dfc0 depends: - - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.0,<0.8.1.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 @@ -1465,23 +1464,23 @@ packages: - aws-c-http >=0.9.1,<0.9.2.0a0 - aws-c-io >=0.15.2,<0.15.3.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - - aws-c-s3 >=0.7.4,<0.7.5.0a0 + - aws-c-s3 >=0.7.5,<0.7.6.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 354822 - timestamp: 1733333950713 + size: 283237 + timestamp: 1733588714381 - kind: conda name: aws-crt-cpp - version: 0.29.6 - build: h8474b10_2 - build_number: 2 + version: 0.29.7 + build: ha310de4_1 + build_number: 1 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.6-h8474b10_2.conda - sha256: 5ca9df9516583076ea40129e71b103efaca21ca02f40b59d69485823613cbfba - md5: 54c898f166bcfbe06c2b7ac36360f371 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.7-ha310de4_1.conda + sha256: b5ab81d50b6cc2ff70dd56a16b5b9e1cbe8c69e9e357db2abf925d03c5d0133a + md5: 77769ed013cbf8824c1927407ea03c69 depends: - __osx >=11.0 - aws-c-auth >=0.8.0,<0.8.1.0a0 @@ -1491,23 +1490,24 @@ packages: - aws-c-http >=0.9.1,<0.9.2.0a0 - aws-c-io >=0.15.2,<0.15.3.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - - aws-c-s3 >=0.7.4,<0.7.5.0a0 + - aws-c-s3 >=0.7.5,<0.7.6.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - libcxx >=18 license: Apache-2.0 license_family: Apache - size: 235829 - timestamp: 1733334077172 + size: 236862 + timestamp: 1733588815005 - kind: conda name: aws-crt-cpp - version: 0.29.6 - build: hffbb33f_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.6-hffbb33f_2.conda - sha256: 5f9490edaddde550cf05861626175b648da73c84bcde61ac2a6a1bf1a8fd6982 - md5: fb8be2af168b63e0b77076a1dc6baa85 + version: 0.29.7 + build: ha6b94fc_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.7-ha6b94fc_1.conda + sha256: 5907a2c370f94e5f63c17e4347525d21eb1c00fbd8b731d79ec1eb4e857689ca + md5: f5fb6f6283deb0b4d2c187ad4a7b6d4d depends: + - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.0,<0.8.1.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 @@ -1515,50 +1515,52 @@ packages: - aws-c-http >=0.9.1,<0.9.2.0a0 - aws-c-io >=0.15.2,<0.15.3.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - - aws-c-s3 >=0.7.4,<0.7.5.0a0 + - aws-c-s3 >=0.7.5,<0.7.6.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 284031 - timestamp: 1733333955728 + size: 353873 + timestamp: 1733588735223 - kind: conda name: aws-sdk-cpp version: 1.11.458 - build: h3b64406_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-h3b64406_0.conda - sha256: ded5412750f5c29bdf8ef6bc5ab26e443dc4943bd69c9098a791d8a2bf9b184e - md5: 9a8d3ba158ff8ea08e17de366c238706 + build: h5e41cbe_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h5e41cbe_1.conda + sha256: b45305787a78f2bf7ecabc401b5bfe451509b434dd041a0a554572a70302d2f3 + md5: 1861b1fb86b336f1f53faaac5a76046c depends: - - __osx >=11.0 - aws-c-common >=0.10.3,<0.10.4.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - - aws-crt-cpp >=0.29.6,<0.29.7.0a0 + - aws-crt-cpp >=0.29.7,<0.29.8.0a0 - libcurl >=8.10.1,<9.0a0 - - libcxx >=18 + - libgcc >=13 + - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 2853609 - timestamp: 1733389337912 + size: 2910575 + timestamp: 1733576378398 - kind: conda name: aws-sdk-cpp version: 1.11.458 - build: h5558e3c_0 + build: hac138a2_1 + build_number: 1 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-h5558e3c_0.conda - sha256: 7eab747a5a3e1a46b9c85c591c30ca2d4e90c2cebeaec95c4fe016846efdfa14 - md5: b1919becd17fe224aacf708114231fda + url: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-hac138a2_1.conda + sha256: fdb9c94d7524c52837643428b1aab4f35bed3ba2862a57e1b03e63038c7c146f + md5: bbdd9589b1a32a80b0e3f98a2a482542 depends: - __glibc >=2.17,<3.0.a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - - aws-crt-cpp >=0.29.6,<0.29.7.0a0 + - aws-crt-cpp >=0.29.7,<0.29.8.0a0 - libcurl >=8.10.1,<9.0a0 - libgcc >=13 - libstdcxx >=13 @@ -1566,30 +1568,31 @@ packages: - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 3059100 - timestamp: 1733388777418 + size: 3071464 + timestamp: 1733576251149 - kind: conda name: aws-sdk-cpp version: 1.11.458 - build: h7085e57_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h7085e57_0.conda - sha256: 6d5327305721d18d650a3f8a377dc30e65600f59bd33fd4fcad106965b09b6b8 - md5: 005e0cc687a2421a4ad493e5b7058abe + build: he4d6490_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-he4d6490_1.conda + sha256: 61abc03dfbe372b258b8b6790bf3ad3a3265e02ce24b6b22bfe8f2fcab94954a + md5: 2941213b750689ace0862a6d695bb740 depends: + - __osx >=11.0 - aws-c-common >=0.10.3,<0.10.4.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - - aws-crt-cpp >=0.29.6,<0.29.7.0a0 + - aws-crt-cpp >=0.29.7,<0.29.8.0a0 - libcurl >=8.10.1,<9.0a0 - - libgcc >=13 - - libstdcxx >=13 + - libcxx >=18 - libzlib >=1.3.1,<2.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 2903434 - timestamp: 1733388870289 + size: 2847256 + timestamp: 1733576733615 - kind: conda name: azure-core-cpp version: 1.14.0 @@ -2488,6 +2491,7 @@ packages: depends: - python >=3.9 license: BSD-3-Clause + license_family: BSD size: 134726 timestamp: 1733493445080 - kind: conda @@ -2748,13 +2752,13 @@ packages: timestamp: 1733501478172 - kind: conda name: huggingface_hub - version: 0.26.3 + version: 0.26.5 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.3-pyhd8ed1ab_0.conda - sha256: 66ffed967463e4a25f1dc4ca699d85dd55d1d150fed214c6380f11a981e0acb7 - md5: 997fc223fbc616c262f2a32a22d433a4 + url: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.5-pyhd8ed1ab_0.conda + sha256: bdbf614d87155c7f9b8fe9c3d039528298119832e9f52959b15c522a9841eef7 + md5: 37236111cd92068e5af2f98cbb476642 depends: - filelock - fsspec >=2023.5.0 @@ -2766,9 +2770,8 @@ packages: - typing-extensions >=3.7.4.3 - typing_extensions >=3.7.4.3 license: Apache-2.0 - license_family: APACHE - size: 274858 - timestamp: 1733170279930 + size: 274900 + timestamp: 1733637007500 - kind: conda name: hyperframe version: 6.0.1 @@ -3170,30 +3173,32 @@ packages: - kind: conda name: libarrow version: 18.1.0 - build: h5affd47_3_cpu - build_number: 3 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-h5affd47_3_cpu.conda - sha256: 9dac7f7b96972a3c18549d8669269233ae9e7b25da56161bd85a86b98ca61f76 - md5: 3dc73b42851e6096542458eaf2c074ca + build: h3b07799_4_cpu + build_number: 4 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-h3b07799_4_cpu.conda + sha256: 8837dc6e60522eef63554654c45d18143006324c43391c6e8dc5d2b20997466d + md5: 27675c7172667268440306533e4928de depends: - - __osx >=11.0 - - aws-crt-cpp >=0.29.6,<0.29.7.0a0 + - __glibc >=2.17,<3.0.a0 + - aws-crt-cpp >=0.29.7,<0.29.8.0a0 - aws-sdk-cpp >=1.11.458,<1.11.459.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-identity-cpp >=1.10.0,<1.10.1.0a0 - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 - bzip2 >=1.0.8,<2.0a0 + - gflags >=2.2.2,<2.3.0a0 - glog >=0.7.1,<0.8.0a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - libbrotlidec >=1.1.0,<1.2.0a0 - libbrotlienc >=1.1.0,<1.2.0a0 - - libcxx >=18 + - libgcc >=13 - libgoogle-cloud >=2.31.0,<2.32.0a0 - libgoogle-cloud-storage >=2.31.0,<2.32.0a0 - libre2-11 >=2024.7.2 + - libstdcxx >=13 - libutf8proc >=2.9.0,<2.10.0a0 - libzlib >=1.3.1,<2.0a0 - lz4-c >=1.9.3,<1.10.0a0 @@ -3202,40 +3207,40 @@ packages: - snappy >=1.2.1,<1.3.0a0 - zstd >=1.5.6,<1.6.0a0 constrains: - - arrow-cpp <0.0a0 - - apache-arrow-proc =*=cpu - parquet-cpp <0.0a0 + - apache-arrow-proc =*=cpu + - arrow-cpp <0.0a0 license: Apache-2.0 - size: 5487846 - timestamp: 1733450423101 + license_family: APACHE + size: 8793521 + timestamp: 1733607374384 - kind: conda name: libarrow version: 18.1.0 - build: hb63acf4_3_cpu - build_number: 3 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-hb63acf4_3_cpu.conda - sha256: e972904b472008f902df9e584f59ff7716fc22efc1124d1dfc41c931852acc75 - md5: d98a11c3ba32554873aeb6a071baceaa + build: h86d57b8_4_cpu + build_number: 4 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-h86d57b8_4_cpu.conda + sha256: fe6b5eb4d6e71418343b62a0d322ede7be69999b28d9e492164c12e613cf3fa0 + md5: 23431b3fdbb32858d1533da5bc8fcc86 depends: - - aws-crt-cpp >=0.29.6,<0.29.7.0a0 + - __osx >=11.0 + - aws-crt-cpp >=0.29.7,<0.29.8.0a0 - aws-sdk-cpp >=1.11.458,<1.11.459.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-identity-cpp >=1.10.0,<1.10.1.0a0 - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 - bzip2 >=1.0.8,<2.0a0 - - gflags >=2.2.2,<2.3.0a0 - glog >=0.7.1,<0.8.0a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - libbrotlidec >=1.1.0,<1.2.0a0 - libbrotlienc >=1.1.0,<1.2.0a0 - - libgcc >=13 + - libcxx >=18 - libgoogle-cloud >=2.31.0,<2.32.0a0 - libgoogle-cloud-storage >=2.31.0,<2.32.0a0 - libre2-11 >=2024.7.2 - - libstdcxx >=13 - libutf8proc >=2.9.0,<2.10.0a0 - libzlib >=1.3.1,<2.0a0 - lz4-c >=1.9.3,<1.10.0a0 @@ -3248,20 +3253,20 @@ packages: - apache-arrow-proc =*=cpu - arrow-cpp <0.0a0 license: Apache-2.0 - size: 8048003 - timestamp: 1733452700958 + license_family: APACHE + size: 5482797 + timestamp: 1733605365656 - kind: conda name: libarrow version: 18.1.0 - build: hcf3f2e3_3_cpu - build_number: 3 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-hcf3f2e3_3_cpu.conda - sha256: a82f66f0a37ed3132e6b9faff9285d7ccbe950ccfe84edd6378fdee70ef2743e - md5: 196823c7752608cb6b5d5a7a33b17410 + build: ha2aff55_4_cpu + build_number: 4 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-ha2aff55_4_cpu.conda + sha256: 795950b73029fd4d3b7fee3427c39c7357287fd94244dd5a125ac0931d31aaa3 + md5: c4d60278cb00053df1a4f0600fd2ac2a depends: - - __glibc >=2.17,<3.0.a0 - - aws-crt-cpp >=0.29.6,<0.29.7.0a0 + - aws-crt-cpp >=0.29.7,<0.29.8.0a0 - aws-sdk-cpp >=1.11.458,<1.11.459.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-identity-cpp >=1.10.0,<1.10.1.0a0 @@ -3287,180 +3292,190 @@ packages: - snappy >=1.2.1,<1.3.0a0 - zstd >=1.5.6,<1.6.0a0 constrains: - - apache-arrow-proc =*=cpu - parquet-cpp <0.0a0 + - apache-arrow-proc =*=cpu - arrow-cpp <0.0a0 license: Apache-2.0 - size: 8796519 - timestamp: 1733453489520 -- kind: conda - name: libarrow-acero - version: 18.1.0 - build: h36004a0_3_cpu - build_number: 3 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-h36004a0_3_cpu.conda - sha256: 0733a303b2dd5998489099d6c258ee442d3f8243379d339f57700554d696fe41 - md5: 6d8f74ac97166e09cdf02109ed9905ce - depends: - - __glibc >=2.17,<3.0.a0 - - libarrow 18.1.0 hcf3f2e3_3_cpu - - libgcc >=13 - - libstdcxx >=13 - license: Apache-2.0 - size: 612773 - timestamp: 1733453636002 + license_family: APACHE + size: 8035987 + timestamp: 1733607600970 - kind: conda name: libarrow-acero version: 18.1.0 - build: haafc02e_3_cpu - build_number: 3 + build: h1dc2043_4_cpu + build_number: 4 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-haafc02e_3_cpu.conda - sha256: 214df0ac0f44dd792193d11c84dbf79a42ed0f663c7b1a06aa5ab755b93c1948 - md5: f3a050129b5012bd5fc381693f6eb2cd + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-h1dc2043_4_cpu.conda + sha256: fe8cb6feeed0858cb8e7cc8889ae20165527934778adb8f7b1f2f5d1f7ade16d + md5: e4ed6162593fbb01f4d742db4215f70c depends: - __osx >=11.0 - - libarrow 18.1.0 h5affd47_3_cpu + - libarrow 18.1.0 h86d57b8_4_cpu - libcxx >=18 license: Apache-2.0 - size: 483753 - timestamp: 1733450627207 + license_family: APACHE + size: 483574 + timestamp: 1733605591770 - kind: conda name: libarrow-acero version: 18.1.0 - build: he2e0623_3_cpu - build_number: 3 + build: h512cd83_4_cpu + build_number: 4 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-he2e0623_3_cpu.conda - sha256: 1560efabce824155dd841219c299c71352594b5e237dce0879c2d8f50c16047a - md5: fa54002b982019ecc0e93cb4b2c493e9 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h512cd83_4_cpu.conda + sha256: 9e88f04409da9ca2fedc5f7bf0987ff28e96d08742e59672f744ec4624a4c991 + md5: d532c42abe13841806d97f4d9cd6dcf5 depends: - - libarrow 18.1.0 hb63acf4_3_cpu + - libarrow 18.1.0 ha2aff55_4_cpu - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 - size: 578323 - timestamp: 1733452783322 + license_family: APACHE + size: 578174 + timestamp: 1733607685962 - kind: conda - name: libarrow-dataset + name: libarrow-acero version: 18.1.0 - build: h36004a0_3_cpu - build_number: 3 + build: h8bbc2ab_4_cpu + build_number: 4 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-h36004a0_3_cpu.conda - sha256: d5a0b4a2129a540548b0232df23e6940fe73d54e5ace5a31f5419d96a059f317 - md5: e9eac639d83b1c35f7743845b922d61a + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-h8bbc2ab_4_cpu.conda + sha256: b3b4ddb2718c96c93d9b50dbf8f66265af9198b55852b4d3424c13a79ec3f84d + md5: 82bcbfe424868ce66b5ab986999f534d depends: - __glibc >=2.17,<3.0.a0 - - libarrow 18.1.0 hcf3f2e3_3_cpu - - libarrow-acero 18.1.0 h36004a0_3_cpu + - libarrow 18.1.0 h3b07799_4_cpu - libgcc >=13 - - libparquet 18.1.0 hbdb145b_3_cpu - libstdcxx >=13 license: Apache-2.0 - size: 585416 - timestamp: 1733454137952 + license_family: APACHE + size: 610772 + timestamp: 1733607505368 - kind: conda name: libarrow-dataset version: 18.1.0 - build: haafc02e_3_cpu - build_number: 3 + build: h1dc2043_4_cpu + build_number: 4 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-haafc02e_3_cpu.conda - sha256: 7b105d363d5f71db88454b304e44166c17b2970ddb0297b482f3d8b39fb39308 - md5: 8c57e5a50f865a16cafd92f5a32c9faa + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-h1dc2043_4_cpu.conda + sha256: 862fb21b871666495b4bb5e63f5fcb66b93c08893e92412b01e2717e081836eb + md5: bb940b4c583e4c8e5a9f193fabdb5840 depends: - __osx >=11.0 - - libarrow 18.1.0 h5affd47_3_cpu - - libarrow-acero 18.1.0 haafc02e_3_cpu + - libarrow 18.1.0 h86d57b8_4_cpu + - libarrow-acero 18.1.0 h1dc2043_4_cpu - libcxx >=18 - - libparquet 18.1.0 h3a603ae_3_cpu + - libparquet 18.1.0 hf4cc9e7_4_cpu license: Apache-2.0 - size: 489900 - timestamp: 1733452479126 + license_family: APACHE + size: 489457 + timestamp: 1733607417337 - kind: conda name: libarrow-dataset version: 18.1.0 - build: he2e0623_3_cpu - build_number: 3 + build: h512cd83_4_cpu + build_number: 4 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-he2e0623_3_cpu.conda - sha256: b26a03f529a4b87dcf523b012f9ccdac124b65f41801da7eb489192916e447ff - md5: 048f04da68a40e9e5e1e66ff9502b237 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h512cd83_4_cpu.conda + sha256: 4a9ffedc5570ce57a6864e46dcf36ec108557791b50fd43e82eb739f3717ff2f + md5: 1a6c409f45857d30f581a1a53abb2298 depends: - - libarrow 18.1.0 hb63acf4_3_cpu - - libarrow-acero 18.1.0 he2e0623_3_cpu + - libarrow 18.1.0 ha2aff55_4_cpu + - libarrow-acero 18.1.0 h512cd83_4_cpu - libgcc >=13 - - libparquet 18.1.0 h553aec1_3_cpu + - libparquet 18.1.0 h34a048e_4_cpu - libstdcxx >=13 license: Apache-2.0 - size: 559844 - timestamp: 1733453065157 + license_family: APACHE + size: 561495 + timestamp: 1733607973097 +- kind: conda + name: libarrow-dataset + version: 18.1.0 + build: h8bbc2ab_4_cpu + build_number: 4 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-h8bbc2ab_4_cpu.conda + sha256: 9c898ab7377953b8c7218347fdb63376d4f977cabfb8fa6bd1b421a75b8cb335 + md5: fa31464c75b20c2f3ac8fc758e034887 + depends: + - __glibc >=2.17,<3.0.a0 + - libarrow 18.1.0 h3b07799_4_cpu + - libarrow-acero 18.1.0 h8bbc2ab_4_cpu + - libgcc >=13 + - libparquet 18.1.0 hf4f6db6_4_cpu + - libstdcxx >=13 + license: Apache-2.0 + license_family: APACHE + size: 585517 + timestamp: 1733607943984 - kind: conda name: libarrow-substrait version: 18.1.0 - build: h4c1644f_3_cpu - build_number: 3 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-h4c1644f_3_cpu.conda - sha256: 562c344d57b718aa838ccc01acae240d9ab33dd2da7db40dbe75d1db6b441e71 - md5: 7ba2783c26a0008307e2a1e637c2930f + build: h3644d33_4_cpu + build_number: 4 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h3644d33_4_cpu.conda + sha256: ac053b3efd1a2701e6f34195d90a0da21dca22d70916ae6b10a019c2be6cd44c + md5: ce3062cd5caa0bdafa7976535862e648 depends: - - __osx >=11.0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.1.0 h5affd47_3_cpu - - libarrow-acero 18.1.0 haafc02e_3_cpu - - libarrow-dataset 18.1.0 haafc02e_3_cpu - - libcxx >=18 + - libarrow 18.1.0 ha2aff55_4_cpu + - libarrow-acero 18.1.0 h512cd83_4_cpu + - libarrow-dataset 18.1.0 h512cd83_4_cpu + - libgcc >=13 - libprotobuf >=5.28.2,<5.28.3.0a0 + - libstdcxx >=13 license: Apache-2.0 - size: 451428 - timestamp: 1733453012619 + license_family: APACHE + size: 513745 + timestamp: 1733608111290 - kind: conda name: libarrow-substrait version: 18.1.0 - build: h56a123c_3_cpu - build_number: 3 + build: had74209_4_cpu + build_number: 4 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-h56a123c_3_cpu.conda - sha256: 139104d80048382c48718a65721b24fa4d69abd6c2052ee1ab20f32b7d48228d - md5: 306bb541b83a83b66d5c1e6880302886 + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-had74209_4_cpu.conda + sha256: 29e44d6070d64cd4b357e02afeae233d2e90d917a008a2724c9cd463015f0319 + md5: bf261e5fa25ce4acc11a80bdc73b88b2 depends: - __glibc >=2.17,<3.0.a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.1.0 hcf3f2e3_3_cpu - - libarrow-acero 18.1.0 h36004a0_3_cpu - - libarrow-dataset 18.1.0 h36004a0_3_cpu + - libarrow 18.1.0 h3b07799_4_cpu + - libarrow-acero 18.1.0 h8bbc2ab_4_cpu + - libarrow-dataset 18.1.0 h8bbc2ab_4_cpu - libgcc >=13 - libprotobuf >=5.28.2,<5.28.3.0a0 - libstdcxx >=13 license: Apache-2.0 - size: 520740 - timestamp: 1733454379083 + license_family: APACHE + size: 519919 + timestamp: 1733608152065 - kind: conda name: libarrow-substrait version: 18.1.0 - build: hc52ba39_3_cpu - build_number: 3 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-hc52ba39_3_cpu.conda - sha256: 66f2c06ad10d8886e53661420c5b73de217a088ee4693186deec7df292f9c766 - md5: 7a8e305f1689687ed063bb4553c1a7a5 + build: hf3d3107_4_cpu + build_number: 4 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-hf3d3107_4_cpu.conda + sha256: 9d9ebd042b9e8561b64f057d2adb24d331a772ccf1af3ed2d8b5b1566729f236 + md5: c093b05dc6d1b6057342d3dd6f3bd0d8 depends: + - __osx >=11.0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.1.0 hb63acf4_3_cpu - - libarrow-acero 18.1.0 he2e0623_3_cpu - - libarrow-dataset 18.1.0 he2e0623_3_cpu - - libgcc >=13 + - libarrow 18.1.0 h86d57b8_4_cpu + - libarrow-acero 18.1.0 h1dc2043_4_cpu + - libarrow-dataset 18.1.0 h1dc2043_4_cpu + - libcxx >=18 - libprotobuf >=5.28.2,<5.28.3.0a0 - - libstdcxx >=13 license: Apache-2.0 - size: 515638 - timestamp: 1733453200561 + license_family: APACHE + size: 451982 + timestamp: 1733607898511 - kind: conda name: libblas version: 3.9.0 @@ -4858,58 +4873,61 @@ packages: - kind: conda name: libparquet version: 18.1.0 - build: h3a603ae_3_cpu - build_number: 3 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-h3a603ae_3_cpu.conda - sha256: 89f40f0f4e706392b082ee4910fedd2442b57abbf6cbbfb16a00b5aa89beb41d - md5: 78d2f729e26788a3660cee9906f440e7 + build: h34a048e_4_cpu + build_number: 4 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-h34a048e_4_cpu.conda + sha256: 488d82356fc4e6dfd6c10a4100c36af17db1b7eb72cce0bd8973014220dc3066 + md5: 46db27c16b29f48a37a40e3b2c9dcfe3 depends: - - __osx >=11.0 - - libarrow 18.1.0 h5affd47_3_cpu - - libcxx >=18 + - libarrow 18.1.0 ha2aff55_4_cpu + - libgcc >=13 + - libstdcxx >=13 - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 - size: 873697 - timestamp: 1733452286970 + license_family: APACHE + size: 1117278 + timestamp: 1733607904359 - kind: conda name: libparquet version: 18.1.0 - build: h553aec1_3_cpu - build_number: 3 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-h553aec1_3_cpu.conda - sha256: 965940abe9e49ae7b3adee19bf458f866a0ef35a3cf29d627b2d52c77a96a96b - md5: 46c6783e8b46449a9baabef57c69f30a + build: hf4cc9e7_4_cpu + build_number: 4 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-hf4cc9e7_4_cpu.conda + sha256: ccadab6395090b3cbc54243fcf5c6e49eaee46aaaa4221ca8ca7803a34bdc25d + md5: b462d962b5254923c5f65ce1c68dfc17 depends: - - libarrow 18.1.0 hb63acf4_3_cpu - - libgcc >=13 - - libstdcxx >=13 + - __osx >=11.0 + - libarrow 18.1.0 h86d57b8_4_cpu + - libcxx >=18 - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 - size: 1116941 - timestamp: 1733452997475 + license_family: APACHE + size: 873584 + timestamp: 1733607239103 - kind: conda name: libparquet version: 18.1.0 - build: hbdb145b_3_cpu - build_number: 3 + build: hf4f6db6_4_cpu + build_number: 4 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-hbdb145b_3_cpu.conda - sha256: 034086f71824a3ea77a9bd21029fd4c4ef25b3a95fc77933704b8b49ff55c7f3 - md5: cb249762e1e65941b559d436c60e520d + url: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-hf4f6db6_4_cpu.conda + sha256: f957b6ea5c4023448891f63f7b184a663d85aa5b2717b0e0ebfbfcf97b542751 + md5: f18b10bf19bb384183f2aa546e9f6f0a depends: - __glibc >=2.17,<3.0.a0 - - libarrow 18.1.0 hcf3f2e3_3_cpu + - libarrow 18.1.0 h3b07799_4_cpu - libgcc >=13 - libstdcxx >=13 - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 - size: 1204740 - timestamp: 1733454014411 + license_family: APACHE + size: 1204859 + timestamp: 1733607834047 - kind: conda name: libpng version: 1.6.44 @@ -5876,76 +5894,76 @@ packages: timestamp: 1733219945697 - kind: conda name: max - version: 24.6.0.dev2024120705 + version: 24.6.0.dev2024120805 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120705-release.conda - sha256: b75fcf4dfbeea5eb4bf1a83b5a4dc1e890aaca5afb87aeea00204d9d43263ab6 - md5: d880e434f1f61e9f7fe35eb5af426762 - depends: - - max-core ==24.6.0.dev2024120705 release - - max-python >=24.6.0.dev2024120705,<25.0a0 - - mojo-jupyter ==24.6.0.dev2024120705 release - - mblack ==24.6.0.dev2024120705 release + url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120805-release.conda + sha256: f2f1a4e4373ac62de23c41ce28e1483b45322cffe8aef91ef93ce0f65fe5f20d + md5: d41647f3009da6fe575321d46a741dfa + depends: + - max-core ==24.6.0.dev2024120805 release + - max-python >=24.6.0.dev2024120805,<25.0a0 + - mojo-jupyter ==24.6.0.dev2024120805 release + - mblack ==24.6.0.dev2024120805 release license: LicenseRef-Modular-Proprietary - size: 9922 - timestamp: 1733548613215 + size: 9916 + timestamp: 1733635043550 - kind: conda name: max-core - version: 24.6.0.dev2024120705 + version: 24.6.0.dev2024120805 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120705-release.conda - sha256: 1e38d40637ac5faadb1465f7c3ae80077a02fa25773f832c4730bb3f5d285cae - md5: 210eb01e2dc1c01b03d2a817457b895d + url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120805-release.conda + sha256: aebf26b21cebf2afdf9063203e542e5e635059c57c5fb9e74478b98f652f8e46 + md5: 620d81f38c5da882ee0799e26d86b0ad depends: - - mblack ==24.6.0.dev2024120705 release + - mblack ==24.6.0.dev2024120805 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 247471356 - timestamp: 1733548812210 + size: 247607615 + timestamp: 1733634983707 - kind: conda name: max-core - version: 24.6.0.dev2024120705 + version: 24.6.0.dev2024120805 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120705-release.conda - sha256: a2e530d128deb23e231c5baf2c89b28fc02879f4608b18415f2cc70604e5ea86 - md5: c036e06aec88105f116ac9b6bfff8720 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120805-release.conda + sha256: 1fc1554d9c39ed5bf22957f02418ee0df4ce4dfc033dd3ca54a7f20c8946b7b3 + md5: 6e7e581fe4e11d252e8729a6cc564b29 depends: - - mblack ==24.6.0.dev2024120705 release + - mblack ==24.6.0.dev2024120805 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 251342975 - timestamp: 1733548613213 + size: 251457302 + timestamp: 1733635043548 - kind: conda name: max-core - version: 24.6.0.dev2024120705 + version: 24.6.0.dev2024120805 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120705-release.conda - sha256: dba294806285f1242d3274833451c21ceae2122441177ad870162f18465402cd - md5: 55c2f32ca83e4e21f8ddb5185c8cd263 + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120805-release.conda + sha256: f249a329a1b072ebd9cd365842d54892d4d46a8fb642ab8fb22ff26f211dddb7 + md5: 04d8f67fb1a7deb6147da14b60f668d3 depends: - - mblack ==24.6.0.dev2024120705 release + - mblack ==24.6.0.dev2024120805 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 211936941 - timestamp: 1733548831297 + size: 212001315 + timestamp: 1733635167877 - kind: conda name: max-python - version: 24.6.0.dev2024120705 + version: 24.6.0.dev2024120805 build: 3.12release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120705-3.12release.conda - sha256: 9083a4c9e5e0362a688eeca82b4018fd88cb7a481b15c42e887a3a8bc60f684b - md5: 9b5d9f4c3ce3cd860772c00f7d98e059 + url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120805-3.12release.conda + sha256: cf488fd0ccfb5a4dbff0891f7dba0e92422a07b6c0047727ab7ebf6a65289e9f + md5: bf821eea63859972e28ce4635cff7dda depends: - - max-core ==24.6.0.dev2024120705 release + - max-core ==24.6.0.dev2024120805 release - python 3.12.* - pillow - fastapi @@ -5967,18 +5985,18 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 123682860 - timestamp: 1733548812221 + size: 123750844 + timestamp: 1733634983717 - kind: conda name: max-python - version: 24.6.0.dev2024120705 + version: 24.6.0.dev2024120805 build: 3.12release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120705-3.12release.conda - sha256: 2a30cd49b6468f6f6d76f789ac2ed47f0496e228e06694fdbee7ed757199c63e - md5: 54e13a8164032866ff1f243f931b4ab3 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120805-3.12release.conda + sha256: 7fe8c12a6ac333dc6f3ea0132e07244131919597c3da16566a18d3657c478126 + md5: 5711b879e00dae9d692d6cf0bcad3717 depends: - - max-core ==24.6.0.dev2024120705 release + - max-core ==24.6.0.dev2024120805 release - python 3.12.* - pillow - fastapi @@ -6000,18 +6018,18 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 127403239 - timestamp: 1733548613224 + size: 127399399 + timestamp: 1733635043558 - kind: conda name: max-python - version: 24.6.0.dev2024120705 + version: 24.6.0.dev2024120805 build: 3.12release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120705-3.12release.conda - sha256: 5afdef8316567435191dbb56db99f99a3f1b4d20a4b0132978c89c458916a961 - md5: a4867e539c3f8c25297d0d695b6848b8 + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120805-3.12release.conda + sha256: 21cd561dcda4c668566b3e681e44823f6163abb4747f30e4851efb9d04eea1eb + md5: 8737c1d7ff7f04e887c4d80139e2a273 depends: - - max-core ==24.6.0.dev2024120705 release + - max-core ==24.6.0.dev2024120805 release - python 3.12.* - pillow - fastapi @@ -6033,17 +6051,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 112378959 - timestamp: 1733548831301 + size: 112431285 + timestamp: 1733635167881 - kind: conda name: mblack - version: 24.6.0.dev2024120705 + version: 24.6.0.dev2024120805 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120705-release.conda - sha256: e0ecd940a6053ec0d44e3da2b9d99885efcb38f0ae32b92136155bb5aa252a75 - md5: b801385ef3cbed6f7415ddf938dc182e + url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120805-release.conda + sha256: e5f3d6f9e9e7acb97ff8364ddb90e34e38bfe68ba382b3dffacfbf4b9d6c812a + md5: 8a48ed658740aaf0063c754fd35e9cce depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -6053,8 +6071,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130737 - timestamp: 1733548613220 + size: 130744 + timestamp: 1733635043555 - kind: conda name: mdurl version: 0.1.2 @@ -6073,21 +6091,21 @@ packages: timestamp: 1733255681319 - kind: conda name: mojo-jupyter - version: 24.6.0.dev2024120705 + version: 24.6.0.dev2024120805 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120705-release.conda - sha256: ff854ead8fa7014dd8ed800998afb01ac9faeec55dfc84bcc2d6d21b38e5a8d1 - md5: ce9ee67733d1ab8c43031b67b475dba8 + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120805-release.conda + sha256: 1535cecc4930833e604ed39a4450b421914312f4abbb4fc6af9e7aedd5293ffd + md5: ad285352ec9e9061d8facbf62f708d9d depends: - - max-core ==24.6.0.dev2024120705 release + - max-core ==24.6.0.dev2024120805 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 11370 - timestamp: 1733548613220 + size: 11369 + timestamp: 1733635043556 - kind: conda name: multidict version: 6.1.0 diff --git a/magic.lock b/magic.lock index 4cdf0f7c8e..1860c5f8d3 100644 --- a/magic.lock +++ b/magic.lock @@ -22,11 +22,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.1-hab05fe4_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.2-hdeadb07_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h7bd072d_8.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.4-h3a84f74_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.5-h3a84f74_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.1-hf42f96a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-hf42f96a_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.6-h159bff8_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-h5558e3c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.7-ha6b94fc_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-hac138a2_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.10.0-h113e628_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.13.0-h3cf044e_1.conda @@ -64,7 +64,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/httptools-0.6.4-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-7.0.2-pyha770c72_0.conda @@ -77,10 +77,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_h5888daf_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-hcf3f2e3_3_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-h36004a0_3_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-h36004a0_3_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-h56a123c_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-h3b07799_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-h8bbc2ab_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-h8bbc2ab_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-had74209_4_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-25_linux64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hb9d3cd8_2.conda @@ -109,7 +109,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.28-pthreads_h94d23a6_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-hbdb145b_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-hf4f6db6_4_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.44-hadc24fc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.2-h5b01275_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_1.conda @@ -132,12 +132,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.9.4-hcb278e6_0.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.dev2024120705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120705-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120805-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120805-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.dev2024120705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120805-release.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/multiprocess-0.70.15-py312h98912ed_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda @@ -240,11 +240,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.1-hf4e072c_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.2-h10eb1bc_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h28a5e6a_8.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.4-h29aef15_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.5-h29aef15_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.1-h4c7db1d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h4c7db1d_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.6-hffbb33f_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h7085e57_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.7-h6c346da_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h5e41cbe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-core-cpp-1.14.0-h1887c18_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-identity-cpp-1.10.0-h47b0b28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-blobs-cpp-12.13.0-h185ecfd_1.conda @@ -282,7 +282,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/httptools-0.6.4-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda @@ -296,10 +296,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.0.0-h4de3ea5_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h5ad3122_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-hb63acf4_3_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-he2e0623_3_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-he2e0623_3_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-hc52ba39_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-ha2aff55_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h512cd83_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h512cd83_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h3644d33_4_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-25_linuxaarch64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlicommon-1.1.0-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlidec-1.1.0-h86ecc28_2.conda @@ -328,7 +328,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnghttp2-1.64.0-hc8609a4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.28-pthreads_h9d3fd7e_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-h553aec1_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-h34a048e_4_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.44-hc4a20ef_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.2-h029595c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_1.conda @@ -351,12 +351,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.9.4-hd600fc2_0.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.dev2024120705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120705-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120805-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120805-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.dev2024120705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120805-release.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/multiprocess-0.70.15-py312hdd3e373_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda @@ -458,11 +458,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.1-hf483d09_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.2-h39f8ad8_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h68a0d7e_8.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.4-h840aca7_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.5-h840aca7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.1-h5d7ee29_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-h5d7ee29_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.6-h8474b10_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-h3b64406_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.7-ha310de4_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-he4d6490_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.14.0-hd50102c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.10.0-hc602bab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-blobs-cpp-12.13.0-h7585a09_1.conda @@ -500,7 +500,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/httptools-0.6.4-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda @@ -512,10 +512,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.16-ha0e7c42_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_hf9b8971_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-h5affd47_3_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-haafc02e_3_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-haafc02e_3_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-h4c1644f_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-h86d57b8_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-h1dc2043_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-h1dc2043_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-hf3d3107_4_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-25_osxarm64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.1.0-hd74edd7_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.1.0-hd74edd7_2.conda @@ -541,7 +541,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.3-h39f12f2_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.64.0-h6d7220d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.28-openmp_hf332438_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-h3a603ae_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-hf4cc9e7_4_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.44-hc14010f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.2-h8f0b736_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h2348fd5_1.conda @@ -561,12 +561,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.9.4-hb7217d7_0.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.dev2024120705-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120705-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120705-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120805-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120805-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120805-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120805-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.dev2024120705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120805-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 @@ -1291,12 +1291,12 @@ packages: timestamp: 1731734668760 - kind: conda name: aws-c-s3 - version: 0.7.4 + version: 0.7.5 build: h29aef15_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.4-h29aef15_0.conda - sha256: 396517aca6bdbe2e3d8a6275b33865eeb0d09f0dd379c3cc55c36f6004b17f2a - md5: 1046cf15a47f06a0af07f674e477d807 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.5-h29aef15_0.conda + sha256: 2aef28beec88df561f7f4d0f7ec7fea6cf54a1d6c8516fd243a4269d320f06cb + md5: 98609602eb077c7b5225d3aa1467f789 depends: - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.0,<0.8.1.0a0 @@ -1308,16 +1308,16 @@ packages: - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 117398 - timestamp: 1733299233564 + size: 117067 + timestamp: 1733565203669 - kind: conda name: aws-c-s3 - version: 0.7.4 + version: 0.7.5 build: h3a84f74_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.4-h3a84f74_0.conda - sha256: 91c6f7aa3dd230bcefe2654469b0704c2bdb2574e6d0d7c56cf9e9071f44cc26 - md5: 7d029b9aa9decf4c0fb8a9a8940c9906 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.5-h3a84f74_0.conda + sha256: eb2534517bdaccf2953716e49e8b918ffe7e78a524c6321fae30c3dd7f46cb0d + md5: a13702b87657cf2d0cdd338fe55f4ba1 depends: - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 @@ -1330,16 +1330,16 @@ packages: - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 113660 - timestamp: 1733299194447 + size: 113877 + timestamp: 1733565162763 - kind: conda name: aws-c-s3 - version: 0.7.4 + version: 0.7.5 build: h840aca7_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.4-h840aca7_0.conda - sha256: 564bbb781c1aebfcdda43a0e82f447e34de1764c57ebc1733fe6437248f5b7c9 - md5: 02f78a084e101dee30c794f963549de4 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.5-h840aca7_0.conda + sha256: 30782a1392883d26a441fc2857985136888aa454efbea8b85bbcbb7a7ad3d2e2 + md5: 1d33c89e2462b6b0056bfb883b76d2fb depends: - __osx >=11.0 - aws-c-auth >=0.8.0,<0.8.1.0a0 @@ -1350,8 +1350,8 @@ packages: - aws-checksums >=0.2.2,<0.2.3.0a0 license: Apache-2.0 license_family: Apache - size: 97136 - timestamp: 1733299356527 + size: 98296 + timestamp: 1733565277623 - kind: conda name: aws-c-sdkutils version: 0.2.1 @@ -1452,15 +1452,14 @@ packages: timestamp: 1731687193373 - kind: conda name: aws-crt-cpp - version: 0.29.6 - build: h159bff8_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.6-h159bff8_2.conda - sha256: 04ca62caa764bb95f304af8486c1af7c4f76d4ad5204c494edcf86af653d2ad0 - md5: c498e6490834aacf7835c96403862881 + version: 0.29.7 + build: h6c346da_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.7-h6c346da_1.conda + sha256: 9a60a93dbe896acf533dded5f4ae11546ff4fb6a9fb0e06db6d915206ba0b1f2 + md5: cf87fc73eee6dbfc12dec79444d5dfc0 depends: - - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.0,<0.8.1.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 @@ -1468,23 +1467,23 @@ packages: - aws-c-http >=0.9.1,<0.9.2.0a0 - aws-c-io >=0.15.2,<0.15.3.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - - aws-c-s3 >=0.7.4,<0.7.5.0a0 + - aws-c-s3 >=0.7.5,<0.7.6.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 354822 - timestamp: 1733333950713 + size: 283237 + timestamp: 1733588714381 - kind: conda name: aws-crt-cpp - version: 0.29.6 - build: h8474b10_2 - build_number: 2 + version: 0.29.7 + build: ha310de4_1 + build_number: 1 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.6-h8474b10_2.conda - sha256: 5ca9df9516583076ea40129e71b103efaca21ca02f40b59d69485823613cbfba - md5: 54c898f166bcfbe06c2b7ac36360f371 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.7-ha310de4_1.conda + sha256: b5ab81d50b6cc2ff70dd56a16b5b9e1cbe8c69e9e357db2abf925d03c5d0133a + md5: 77769ed013cbf8824c1927407ea03c69 depends: - __osx >=11.0 - aws-c-auth >=0.8.0,<0.8.1.0a0 @@ -1494,23 +1493,24 @@ packages: - aws-c-http >=0.9.1,<0.9.2.0a0 - aws-c-io >=0.15.2,<0.15.3.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - - aws-c-s3 >=0.7.4,<0.7.5.0a0 + - aws-c-s3 >=0.7.5,<0.7.6.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - libcxx >=18 license: Apache-2.0 license_family: Apache - size: 235829 - timestamp: 1733334077172 + size: 236862 + timestamp: 1733588815005 - kind: conda name: aws-crt-cpp - version: 0.29.6 - build: hffbb33f_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.6-hffbb33f_2.conda - sha256: 5f9490edaddde550cf05861626175b648da73c84bcde61ac2a6a1bf1a8fd6982 - md5: fb8be2af168b63e0b77076a1dc6baa85 + version: 0.29.7 + build: ha6b94fc_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.7-ha6b94fc_1.conda + sha256: 5907a2c370f94e5f63c17e4347525d21eb1c00fbd8b731d79ec1eb4e857689ca + md5: f5fb6f6283deb0b4d2c187ad4a7b6d4d depends: + - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.0,<0.8.1.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 @@ -1518,50 +1518,52 @@ packages: - aws-c-http >=0.9.1,<0.9.2.0a0 - aws-c-io >=0.15.2,<0.15.3.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - - aws-c-s3 >=0.7.4,<0.7.5.0a0 + - aws-c-s3 >=0.7.5,<0.7.6.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 284031 - timestamp: 1733333955728 + size: 353873 + timestamp: 1733588735223 - kind: conda name: aws-sdk-cpp version: 1.11.458 - build: h3b64406_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-h3b64406_0.conda - sha256: ded5412750f5c29bdf8ef6bc5ab26e443dc4943bd69c9098a791d8a2bf9b184e - md5: 9a8d3ba158ff8ea08e17de366c238706 + build: h5e41cbe_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h5e41cbe_1.conda + sha256: b45305787a78f2bf7ecabc401b5bfe451509b434dd041a0a554572a70302d2f3 + md5: 1861b1fb86b336f1f53faaac5a76046c depends: - - __osx >=11.0 - aws-c-common >=0.10.3,<0.10.4.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - - aws-crt-cpp >=0.29.6,<0.29.7.0a0 + - aws-crt-cpp >=0.29.7,<0.29.8.0a0 - libcurl >=8.10.1,<9.0a0 - - libcxx >=18 + - libgcc >=13 + - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 2853609 - timestamp: 1733389337912 + size: 2910575 + timestamp: 1733576378398 - kind: conda name: aws-sdk-cpp version: 1.11.458 - build: h5558e3c_0 + build: hac138a2_1 + build_number: 1 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-h5558e3c_0.conda - sha256: 7eab747a5a3e1a46b9c85c591c30ca2d4e90c2cebeaec95c4fe016846efdfa14 - md5: b1919becd17fe224aacf708114231fda + url: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-hac138a2_1.conda + sha256: fdb9c94d7524c52837643428b1aab4f35bed3ba2862a57e1b03e63038c7c146f + md5: bbdd9589b1a32a80b0e3f98a2a482542 depends: - __glibc >=2.17,<3.0.a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - - aws-crt-cpp >=0.29.6,<0.29.7.0a0 + - aws-crt-cpp >=0.29.7,<0.29.8.0a0 - libcurl >=8.10.1,<9.0a0 - libgcc >=13 - libstdcxx >=13 @@ -1569,30 +1571,31 @@ packages: - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 3059100 - timestamp: 1733388777418 + size: 3071464 + timestamp: 1733576251149 - kind: conda name: aws-sdk-cpp version: 1.11.458 - build: h7085e57_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h7085e57_0.conda - sha256: 6d5327305721d18d650a3f8a377dc30e65600f59bd33fd4fcad106965b09b6b8 - md5: 005e0cc687a2421a4ad493e5b7058abe + build: he4d6490_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-he4d6490_1.conda + sha256: 61abc03dfbe372b258b8b6790bf3ad3a3265e02ce24b6b22bfe8f2fcab94954a + md5: 2941213b750689ace0862a6d695bb740 depends: + - __osx >=11.0 - aws-c-common >=0.10.3,<0.10.4.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - - aws-crt-cpp >=0.29.6,<0.29.7.0a0 + - aws-crt-cpp >=0.29.7,<0.29.8.0a0 - libcurl >=8.10.1,<9.0a0 - - libgcc >=13 - - libstdcxx >=13 + - libcxx >=18 - libzlib >=1.3.1,<2.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 2903434 - timestamp: 1733388870289 + size: 2847256 + timestamp: 1733576733615 - kind: conda name: azure-core-cpp version: 1.14.0 @@ -2491,6 +2494,7 @@ packages: depends: - python >=3.9 license: BSD-3-Clause + license_family: BSD size: 134726 timestamp: 1733493445080 - kind: conda @@ -2751,13 +2755,13 @@ packages: timestamp: 1733501478172 - kind: conda name: huggingface_hub - version: 0.26.3 + version: 0.26.5 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.3-pyhd8ed1ab_0.conda - sha256: 66ffed967463e4a25f1dc4ca699d85dd55d1d150fed214c6380f11a981e0acb7 - md5: 997fc223fbc616c262f2a32a22d433a4 + url: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.5-pyhd8ed1ab_0.conda + sha256: bdbf614d87155c7f9b8fe9c3d039528298119832e9f52959b15c522a9841eef7 + md5: 37236111cd92068e5af2f98cbb476642 depends: - filelock - fsspec >=2023.5.0 @@ -2769,9 +2773,8 @@ packages: - typing-extensions >=3.7.4.3 - typing_extensions >=3.7.4.3 license: Apache-2.0 - license_family: APACHE - size: 274858 - timestamp: 1733170279930 + size: 274900 + timestamp: 1733637007500 - kind: conda name: hyperframe version: 6.0.1 @@ -3173,30 +3176,32 @@ packages: - kind: conda name: libarrow version: 18.1.0 - build: h5affd47_3_cpu - build_number: 3 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-h5affd47_3_cpu.conda - sha256: 9dac7f7b96972a3c18549d8669269233ae9e7b25da56161bd85a86b98ca61f76 - md5: 3dc73b42851e6096542458eaf2c074ca + build: h3b07799_4_cpu + build_number: 4 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-h3b07799_4_cpu.conda + sha256: 8837dc6e60522eef63554654c45d18143006324c43391c6e8dc5d2b20997466d + md5: 27675c7172667268440306533e4928de depends: - - __osx >=11.0 - - aws-crt-cpp >=0.29.6,<0.29.7.0a0 + - __glibc >=2.17,<3.0.a0 + - aws-crt-cpp >=0.29.7,<0.29.8.0a0 - aws-sdk-cpp >=1.11.458,<1.11.459.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-identity-cpp >=1.10.0,<1.10.1.0a0 - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 - bzip2 >=1.0.8,<2.0a0 + - gflags >=2.2.2,<2.3.0a0 - glog >=0.7.1,<0.8.0a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - libbrotlidec >=1.1.0,<1.2.0a0 - libbrotlienc >=1.1.0,<1.2.0a0 - - libcxx >=18 + - libgcc >=13 - libgoogle-cloud >=2.31.0,<2.32.0a0 - libgoogle-cloud-storage >=2.31.0,<2.32.0a0 - libre2-11 >=2024.7.2 + - libstdcxx >=13 - libutf8proc >=2.9.0,<2.10.0a0 - libzlib >=1.3.1,<2.0a0 - lz4-c >=1.9.3,<1.10.0a0 @@ -3205,40 +3210,40 @@ packages: - snappy >=1.2.1,<1.3.0a0 - zstd >=1.5.6,<1.6.0a0 constrains: - - arrow-cpp <0.0a0 - - apache-arrow-proc =*=cpu - parquet-cpp <0.0a0 + - apache-arrow-proc =*=cpu + - arrow-cpp <0.0a0 license: Apache-2.0 - size: 5487846 - timestamp: 1733450423101 + license_family: APACHE + size: 8793521 + timestamp: 1733607374384 - kind: conda name: libarrow version: 18.1.0 - build: hb63acf4_3_cpu - build_number: 3 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-hb63acf4_3_cpu.conda - sha256: e972904b472008f902df9e584f59ff7716fc22efc1124d1dfc41c931852acc75 - md5: d98a11c3ba32554873aeb6a071baceaa + build: h86d57b8_4_cpu + build_number: 4 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-h86d57b8_4_cpu.conda + sha256: fe6b5eb4d6e71418343b62a0d322ede7be69999b28d9e492164c12e613cf3fa0 + md5: 23431b3fdbb32858d1533da5bc8fcc86 depends: - - aws-crt-cpp >=0.29.6,<0.29.7.0a0 + - __osx >=11.0 + - aws-crt-cpp >=0.29.7,<0.29.8.0a0 - aws-sdk-cpp >=1.11.458,<1.11.459.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-identity-cpp >=1.10.0,<1.10.1.0a0 - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 - bzip2 >=1.0.8,<2.0a0 - - gflags >=2.2.2,<2.3.0a0 - glog >=0.7.1,<0.8.0a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - libbrotlidec >=1.1.0,<1.2.0a0 - libbrotlienc >=1.1.0,<1.2.0a0 - - libgcc >=13 + - libcxx >=18 - libgoogle-cloud >=2.31.0,<2.32.0a0 - libgoogle-cloud-storage >=2.31.0,<2.32.0a0 - libre2-11 >=2024.7.2 - - libstdcxx >=13 - libutf8proc >=2.9.0,<2.10.0a0 - libzlib >=1.3.1,<2.0a0 - lz4-c >=1.9.3,<1.10.0a0 @@ -3251,20 +3256,20 @@ packages: - apache-arrow-proc =*=cpu - arrow-cpp <0.0a0 license: Apache-2.0 - size: 8048003 - timestamp: 1733452700958 + license_family: APACHE + size: 5482797 + timestamp: 1733605365656 - kind: conda name: libarrow version: 18.1.0 - build: hcf3f2e3_3_cpu - build_number: 3 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-hcf3f2e3_3_cpu.conda - sha256: a82f66f0a37ed3132e6b9faff9285d7ccbe950ccfe84edd6378fdee70ef2743e - md5: 196823c7752608cb6b5d5a7a33b17410 + build: ha2aff55_4_cpu + build_number: 4 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-ha2aff55_4_cpu.conda + sha256: 795950b73029fd4d3b7fee3427c39c7357287fd94244dd5a125ac0931d31aaa3 + md5: c4d60278cb00053df1a4f0600fd2ac2a depends: - - __glibc >=2.17,<3.0.a0 - - aws-crt-cpp >=0.29.6,<0.29.7.0a0 + - aws-crt-cpp >=0.29.7,<0.29.8.0a0 - aws-sdk-cpp >=1.11.458,<1.11.459.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-identity-cpp >=1.10.0,<1.10.1.0a0 @@ -3290,180 +3295,190 @@ packages: - snappy >=1.2.1,<1.3.0a0 - zstd >=1.5.6,<1.6.0a0 constrains: - - apache-arrow-proc =*=cpu - parquet-cpp <0.0a0 + - apache-arrow-proc =*=cpu - arrow-cpp <0.0a0 license: Apache-2.0 - size: 8796519 - timestamp: 1733453489520 -- kind: conda - name: libarrow-acero - version: 18.1.0 - build: h36004a0_3_cpu - build_number: 3 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-h36004a0_3_cpu.conda - sha256: 0733a303b2dd5998489099d6c258ee442d3f8243379d339f57700554d696fe41 - md5: 6d8f74ac97166e09cdf02109ed9905ce - depends: - - __glibc >=2.17,<3.0.a0 - - libarrow 18.1.0 hcf3f2e3_3_cpu - - libgcc >=13 - - libstdcxx >=13 - license: Apache-2.0 - size: 612773 - timestamp: 1733453636002 + license_family: APACHE + size: 8035987 + timestamp: 1733607600970 - kind: conda name: libarrow-acero version: 18.1.0 - build: haafc02e_3_cpu - build_number: 3 + build: h1dc2043_4_cpu + build_number: 4 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-haafc02e_3_cpu.conda - sha256: 214df0ac0f44dd792193d11c84dbf79a42ed0f663c7b1a06aa5ab755b93c1948 - md5: f3a050129b5012bd5fc381693f6eb2cd + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-h1dc2043_4_cpu.conda + sha256: fe8cb6feeed0858cb8e7cc8889ae20165527934778adb8f7b1f2f5d1f7ade16d + md5: e4ed6162593fbb01f4d742db4215f70c depends: - __osx >=11.0 - - libarrow 18.1.0 h5affd47_3_cpu + - libarrow 18.1.0 h86d57b8_4_cpu - libcxx >=18 license: Apache-2.0 - size: 483753 - timestamp: 1733450627207 + license_family: APACHE + size: 483574 + timestamp: 1733605591770 - kind: conda name: libarrow-acero version: 18.1.0 - build: he2e0623_3_cpu - build_number: 3 + build: h512cd83_4_cpu + build_number: 4 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-he2e0623_3_cpu.conda - sha256: 1560efabce824155dd841219c299c71352594b5e237dce0879c2d8f50c16047a - md5: fa54002b982019ecc0e93cb4b2c493e9 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h512cd83_4_cpu.conda + sha256: 9e88f04409da9ca2fedc5f7bf0987ff28e96d08742e59672f744ec4624a4c991 + md5: d532c42abe13841806d97f4d9cd6dcf5 depends: - - libarrow 18.1.0 hb63acf4_3_cpu + - libarrow 18.1.0 ha2aff55_4_cpu - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 - size: 578323 - timestamp: 1733452783322 + license_family: APACHE + size: 578174 + timestamp: 1733607685962 - kind: conda - name: libarrow-dataset + name: libarrow-acero version: 18.1.0 - build: h36004a0_3_cpu - build_number: 3 + build: h8bbc2ab_4_cpu + build_number: 4 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-h36004a0_3_cpu.conda - sha256: d5a0b4a2129a540548b0232df23e6940fe73d54e5ace5a31f5419d96a059f317 - md5: e9eac639d83b1c35f7743845b922d61a + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-h8bbc2ab_4_cpu.conda + sha256: b3b4ddb2718c96c93d9b50dbf8f66265af9198b55852b4d3424c13a79ec3f84d + md5: 82bcbfe424868ce66b5ab986999f534d depends: - __glibc >=2.17,<3.0.a0 - - libarrow 18.1.0 hcf3f2e3_3_cpu - - libarrow-acero 18.1.0 h36004a0_3_cpu + - libarrow 18.1.0 h3b07799_4_cpu - libgcc >=13 - - libparquet 18.1.0 hbdb145b_3_cpu - libstdcxx >=13 license: Apache-2.0 - size: 585416 - timestamp: 1733454137952 + license_family: APACHE + size: 610772 + timestamp: 1733607505368 - kind: conda name: libarrow-dataset version: 18.1.0 - build: haafc02e_3_cpu - build_number: 3 + build: h1dc2043_4_cpu + build_number: 4 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-haafc02e_3_cpu.conda - sha256: 7b105d363d5f71db88454b304e44166c17b2970ddb0297b482f3d8b39fb39308 - md5: 8c57e5a50f865a16cafd92f5a32c9faa + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-h1dc2043_4_cpu.conda + sha256: 862fb21b871666495b4bb5e63f5fcb66b93c08893e92412b01e2717e081836eb + md5: bb940b4c583e4c8e5a9f193fabdb5840 depends: - __osx >=11.0 - - libarrow 18.1.0 h5affd47_3_cpu - - libarrow-acero 18.1.0 haafc02e_3_cpu + - libarrow 18.1.0 h86d57b8_4_cpu + - libarrow-acero 18.1.0 h1dc2043_4_cpu - libcxx >=18 - - libparquet 18.1.0 h3a603ae_3_cpu + - libparquet 18.1.0 hf4cc9e7_4_cpu license: Apache-2.0 - size: 489900 - timestamp: 1733452479126 + license_family: APACHE + size: 489457 + timestamp: 1733607417337 - kind: conda name: libarrow-dataset version: 18.1.0 - build: he2e0623_3_cpu - build_number: 3 + build: h512cd83_4_cpu + build_number: 4 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-he2e0623_3_cpu.conda - sha256: b26a03f529a4b87dcf523b012f9ccdac124b65f41801da7eb489192916e447ff - md5: 048f04da68a40e9e5e1e66ff9502b237 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h512cd83_4_cpu.conda + sha256: 4a9ffedc5570ce57a6864e46dcf36ec108557791b50fd43e82eb739f3717ff2f + md5: 1a6c409f45857d30f581a1a53abb2298 depends: - - libarrow 18.1.0 hb63acf4_3_cpu - - libarrow-acero 18.1.0 he2e0623_3_cpu + - libarrow 18.1.0 ha2aff55_4_cpu + - libarrow-acero 18.1.0 h512cd83_4_cpu - libgcc >=13 - - libparquet 18.1.0 h553aec1_3_cpu + - libparquet 18.1.0 h34a048e_4_cpu - libstdcxx >=13 license: Apache-2.0 - size: 559844 - timestamp: 1733453065157 + license_family: APACHE + size: 561495 + timestamp: 1733607973097 +- kind: conda + name: libarrow-dataset + version: 18.1.0 + build: h8bbc2ab_4_cpu + build_number: 4 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-h8bbc2ab_4_cpu.conda + sha256: 9c898ab7377953b8c7218347fdb63376d4f977cabfb8fa6bd1b421a75b8cb335 + md5: fa31464c75b20c2f3ac8fc758e034887 + depends: + - __glibc >=2.17,<3.0.a0 + - libarrow 18.1.0 h3b07799_4_cpu + - libarrow-acero 18.1.0 h8bbc2ab_4_cpu + - libgcc >=13 + - libparquet 18.1.0 hf4f6db6_4_cpu + - libstdcxx >=13 + license: Apache-2.0 + license_family: APACHE + size: 585517 + timestamp: 1733607943984 - kind: conda name: libarrow-substrait version: 18.1.0 - build: h4c1644f_3_cpu - build_number: 3 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-h4c1644f_3_cpu.conda - sha256: 562c344d57b718aa838ccc01acae240d9ab33dd2da7db40dbe75d1db6b441e71 - md5: 7ba2783c26a0008307e2a1e637c2930f + build: h3644d33_4_cpu + build_number: 4 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h3644d33_4_cpu.conda + sha256: ac053b3efd1a2701e6f34195d90a0da21dca22d70916ae6b10a019c2be6cd44c + md5: ce3062cd5caa0bdafa7976535862e648 depends: - - __osx >=11.0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.1.0 h5affd47_3_cpu - - libarrow-acero 18.1.0 haafc02e_3_cpu - - libarrow-dataset 18.1.0 haafc02e_3_cpu - - libcxx >=18 + - libarrow 18.1.0 ha2aff55_4_cpu + - libarrow-acero 18.1.0 h512cd83_4_cpu + - libarrow-dataset 18.1.0 h512cd83_4_cpu + - libgcc >=13 - libprotobuf >=5.28.2,<5.28.3.0a0 + - libstdcxx >=13 license: Apache-2.0 - size: 451428 - timestamp: 1733453012619 + license_family: APACHE + size: 513745 + timestamp: 1733608111290 - kind: conda name: libarrow-substrait version: 18.1.0 - build: h56a123c_3_cpu - build_number: 3 + build: had74209_4_cpu + build_number: 4 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-h56a123c_3_cpu.conda - sha256: 139104d80048382c48718a65721b24fa4d69abd6c2052ee1ab20f32b7d48228d - md5: 306bb541b83a83b66d5c1e6880302886 + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-had74209_4_cpu.conda + sha256: 29e44d6070d64cd4b357e02afeae233d2e90d917a008a2724c9cd463015f0319 + md5: bf261e5fa25ce4acc11a80bdc73b88b2 depends: - __glibc >=2.17,<3.0.a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.1.0 hcf3f2e3_3_cpu - - libarrow-acero 18.1.0 h36004a0_3_cpu - - libarrow-dataset 18.1.0 h36004a0_3_cpu + - libarrow 18.1.0 h3b07799_4_cpu + - libarrow-acero 18.1.0 h8bbc2ab_4_cpu + - libarrow-dataset 18.1.0 h8bbc2ab_4_cpu - libgcc >=13 - libprotobuf >=5.28.2,<5.28.3.0a0 - libstdcxx >=13 license: Apache-2.0 - size: 520740 - timestamp: 1733454379083 + license_family: APACHE + size: 519919 + timestamp: 1733608152065 - kind: conda name: libarrow-substrait version: 18.1.0 - build: hc52ba39_3_cpu - build_number: 3 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-hc52ba39_3_cpu.conda - sha256: 66f2c06ad10d8886e53661420c5b73de217a088ee4693186deec7df292f9c766 - md5: 7a8e305f1689687ed063bb4553c1a7a5 + build: hf3d3107_4_cpu + build_number: 4 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-hf3d3107_4_cpu.conda + sha256: 9d9ebd042b9e8561b64f057d2adb24d331a772ccf1af3ed2d8b5b1566729f236 + md5: c093b05dc6d1b6057342d3dd6f3bd0d8 depends: + - __osx >=11.0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.1.0 hb63acf4_3_cpu - - libarrow-acero 18.1.0 he2e0623_3_cpu - - libarrow-dataset 18.1.0 he2e0623_3_cpu - - libgcc >=13 + - libarrow 18.1.0 h86d57b8_4_cpu + - libarrow-acero 18.1.0 h1dc2043_4_cpu + - libarrow-dataset 18.1.0 h1dc2043_4_cpu + - libcxx >=18 - libprotobuf >=5.28.2,<5.28.3.0a0 - - libstdcxx >=13 license: Apache-2.0 - size: 515638 - timestamp: 1733453200561 + license_family: APACHE + size: 451982 + timestamp: 1733607898511 - kind: conda name: libblas version: 3.9.0 @@ -4861,58 +4876,61 @@ packages: - kind: conda name: libparquet version: 18.1.0 - build: h3a603ae_3_cpu - build_number: 3 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-h3a603ae_3_cpu.conda - sha256: 89f40f0f4e706392b082ee4910fedd2442b57abbf6cbbfb16a00b5aa89beb41d - md5: 78d2f729e26788a3660cee9906f440e7 + build: h34a048e_4_cpu + build_number: 4 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-h34a048e_4_cpu.conda + sha256: 488d82356fc4e6dfd6c10a4100c36af17db1b7eb72cce0bd8973014220dc3066 + md5: 46db27c16b29f48a37a40e3b2c9dcfe3 depends: - - __osx >=11.0 - - libarrow 18.1.0 h5affd47_3_cpu - - libcxx >=18 + - libarrow 18.1.0 ha2aff55_4_cpu + - libgcc >=13 + - libstdcxx >=13 - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 - size: 873697 - timestamp: 1733452286970 + license_family: APACHE + size: 1117278 + timestamp: 1733607904359 - kind: conda name: libparquet version: 18.1.0 - build: h553aec1_3_cpu - build_number: 3 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-h553aec1_3_cpu.conda - sha256: 965940abe9e49ae7b3adee19bf458f866a0ef35a3cf29d627b2d52c77a96a96b - md5: 46c6783e8b46449a9baabef57c69f30a + build: hf4cc9e7_4_cpu + build_number: 4 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-hf4cc9e7_4_cpu.conda + sha256: ccadab6395090b3cbc54243fcf5c6e49eaee46aaaa4221ca8ca7803a34bdc25d + md5: b462d962b5254923c5f65ce1c68dfc17 depends: - - libarrow 18.1.0 hb63acf4_3_cpu - - libgcc >=13 - - libstdcxx >=13 + - __osx >=11.0 + - libarrow 18.1.0 h86d57b8_4_cpu + - libcxx >=18 - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 - size: 1116941 - timestamp: 1733452997475 + license_family: APACHE + size: 873584 + timestamp: 1733607239103 - kind: conda name: libparquet version: 18.1.0 - build: hbdb145b_3_cpu - build_number: 3 + build: hf4f6db6_4_cpu + build_number: 4 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-hbdb145b_3_cpu.conda - sha256: 034086f71824a3ea77a9bd21029fd4c4ef25b3a95fc77933704b8b49ff55c7f3 - md5: cb249762e1e65941b559d436c60e520d + url: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-hf4f6db6_4_cpu.conda + sha256: f957b6ea5c4023448891f63f7b184a663d85aa5b2717b0e0ebfbfcf97b542751 + md5: f18b10bf19bb384183f2aa546e9f6f0a depends: - __glibc >=2.17,<3.0.a0 - - libarrow 18.1.0 hcf3f2e3_3_cpu + - libarrow 18.1.0 h3b07799_4_cpu - libgcc >=13 - libstdcxx >=13 - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 - size: 1204740 - timestamp: 1733454014411 + license_family: APACHE + size: 1204859 + timestamp: 1733607834047 - kind: conda name: libpng version: 1.6.44 @@ -5894,76 +5912,76 @@ packages: timestamp: 1733219945697 - kind: conda name: max - version: 24.6.0.dev2024120705 + version: 24.6.0.dev2024120805 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120705-release.conda - sha256: b75fcf4dfbeea5eb4bf1a83b5a4dc1e890aaca5afb87aeea00204d9d43263ab6 - md5: d880e434f1f61e9f7fe35eb5af426762 - depends: - - max-core ==24.6.0.dev2024120705 release - - max-python >=24.6.0.dev2024120705,<25.0a0 - - mojo-jupyter ==24.6.0.dev2024120705 release - - mblack ==24.6.0.dev2024120705 release + url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120805-release.conda + sha256: f2f1a4e4373ac62de23c41ce28e1483b45322cffe8aef91ef93ce0f65fe5f20d + md5: d41647f3009da6fe575321d46a741dfa + depends: + - max-core ==24.6.0.dev2024120805 release + - max-python >=24.6.0.dev2024120805,<25.0a0 + - mojo-jupyter ==24.6.0.dev2024120805 release + - mblack ==24.6.0.dev2024120805 release license: LicenseRef-Modular-Proprietary - size: 9922 - timestamp: 1733548613215 + size: 9916 + timestamp: 1733635043550 - kind: conda name: max-core - version: 24.6.0.dev2024120705 + version: 24.6.0.dev2024120805 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120705-release.conda - sha256: 1e38d40637ac5faadb1465f7c3ae80077a02fa25773f832c4730bb3f5d285cae - md5: 210eb01e2dc1c01b03d2a817457b895d + url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120805-release.conda + sha256: aebf26b21cebf2afdf9063203e542e5e635059c57c5fb9e74478b98f652f8e46 + md5: 620d81f38c5da882ee0799e26d86b0ad depends: - - mblack ==24.6.0.dev2024120705 release + - mblack ==24.6.0.dev2024120805 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 247471356 - timestamp: 1733548812210 + size: 247607615 + timestamp: 1733634983707 - kind: conda name: max-core - version: 24.6.0.dev2024120705 + version: 24.6.0.dev2024120805 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120705-release.conda - sha256: a2e530d128deb23e231c5baf2c89b28fc02879f4608b18415f2cc70604e5ea86 - md5: c036e06aec88105f116ac9b6bfff8720 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120805-release.conda + sha256: 1fc1554d9c39ed5bf22957f02418ee0df4ce4dfc033dd3ca54a7f20c8946b7b3 + md5: 6e7e581fe4e11d252e8729a6cc564b29 depends: - - mblack ==24.6.0.dev2024120705 release + - mblack ==24.6.0.dev2024120805 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 251342975 - timestamp: 1733548613213 + size: 251457302 + timestamp: 1733635043548 - kind: conda name: max-core - version: 24.6.0.dev2024120705 + version: 24.6.0.dev2024120805 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120705-release.conda - sha256: dba294806285f1242d3274833451c21ceae2122441177ad870162f18465402cd - md5: 55c2f32ca83e4e21f8ddb5185c8cd263 + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120805-release.conda + sha256: f249a329a1b072ebd9cd365842d54892d4d46a8fb642ab8fb22ff26f211dddb7 + md5: 04d8f67fb1a7deb6147da14b60f668d3 depends: - - mblack ==24.6.0.dev2024120705 release + - mblack ==24.6.0.dev2024120805 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 211936941 - timestamp: 1733548831297 + size: 212001315 + timestamp: 1733635167877 - kind: conda name: max-python - version: 24.6.0.dev2024120705 + version: 24.6.0.dev2024120805 build: 3.12release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120705-3.12release.conda - sha256: 9083a4c9e5e0362a688eeca82b4018fd88cb7a481b15c42e887a3a8bc60f684b - md5: 9b5d9f4c3ce3cd860772c00f7d98e059 + url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120805-3.12release.conda + sha256: cf488fd0ccfb5a4dbff0891f7dba0e92422a07b6c0047727ab7ebf6a65289e9f + md5: bf821eea63859972e28ce4635cff7dda depends: - - max-core ==24.6.0.dev2024120705 release + - max-core ==24.6.0.dev2024120805 release - python 3.12.* - pillow - fastapi @@ -5985,18 +6003,18 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 123682860 - timestamp: 1733548812221 + size: 123750844 + timestamp: 1733634983717 - kind: conda name: max-python - version: 24.6.0.dev2024120705 + version: 24.6.0.dev2024120805 build: 3.12release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120705-3.12release.conda - sha256: 2a30cd49b6468f6f6d76f789ac2ed47f0496e228e06694fdbee7ed757199c63e - md5: 54e13a8164032866ff1f243f931b4ab3 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120805-3.12release.conda + sha256: 7fe8c12a6ac333dc6f3ea0132e07244131919597c3da16566a18d3657c478126 + md5: 5711b879e00dae9d692d6cf0bcad3717 depends: - - max-core ==24.6.0.dev2024120705 release + - max-core ==24.6.0.dev2024120805 release - python 3.12.* - pillow - fastapi @@ -6018,18 +6036,18 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 127403239 - timestamp: 1733548613224 + size: 127399399 + timestamp: 1733635043558 - kind: conda name: max-python - version: 24.6.0.dev2024120705 + version: 24.6.0.dev2024120805 build: 3.12release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120705-3.12release.conda - sha256: 5afdef8316567435191dbb56db99f99a3f1b4d20a4b0132978c89c458916a961 - md5: a4867e539c3f8c25297d0d695b6848b8 + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120805-3.12release.conda + sha256: 21cd561dcda4c668566b3e681e44823f6163abb4747f30e4851efb9d04eea1eb + md5: 8737c1d7ff7f04e887c4d80139e2a273 depends: - - max-core ==24.6.0.dev2024120705 release + - max-core ==24.6.0.dev2024120805 release - python 3.12.* - pillow - fastapi @@ -6051,17 +6069,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 112378959 - timestamp: 1733548831301 + size: 112431285 + timestamp: 1733635167881 - kind: conda name: mblack - version: 24.6.0.dev2024120705 + version: 24.6.0.dev2024120805 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120705-release.conda - sha256: e0ecd940a6053ec0d44e3da2b9d99885efcb38f0ae32b92136155bb5aa252a75 - md5: b801385ef3cbed6f7415ddf938dc182e + url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120805-release.conda + sha256: e5f3d6f9e9e7acb97ff8364ddb90e34e38bfe68ba382b3dffacfbf4b9d6c812a + md5: 8a48ed658740aaf0063c754fd35e9cce depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -6071,8 +6089,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130737 - timestamp: 1733548613220 + size: 130744 + timestamp: 1733635043555 - kind: conda name: mdurl version: 0.1.2 @@ -6091,21 +6109,21 @@ packages: timestamp: 1733255681319 - kind: conda name: mojo-jupyter - version: 24.6.0.dev2024120705 + version: 24.6.0.dev2024120805 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120705-release.conda - sha256: ff854ead8fa7014dd8ed800998afb01ac9faeec55dfc84bcc2d6d21b38e5a8d1 - md5: ce9ee67733d1ab8c43031b67b475dba8 + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120805-release.conda + sha256: 1535cecc4930833e604ed39a4450b421914312f4abbb4fc6af9e7aedd5293ffd + md5: ad285352ec9e9061d8facbf62f708d9d depends: - - max-core ==24.6.0.dev2024120705 release + - max-core ==24.6.0.dev2024120805 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 11370 - timestamp: 1733548613220 + size: 11369 + timestamp: 1733635043556 - kind: conda name: multidict version: 6.1.0 From 647133813e6d9c949422d1e7824735dd7153fad7 Mon Sep 17 00:00:00 2001 From: abdul dakkak Date: Sat, 7 Dec 2024 21:26:47 -0800 Subject: [PATCH 057/509] [******][GPU] Add log log2_floor in the bit module MODULAR_ORIG_COMMIT_REV_ID: 78e0005db0bb77465e11d6ce856da56116c839dc --- stdlib/src/bit/__init__.mojo | 1 + stdlib/src/bit/bit.mojo | 22 +++++++++++++++++++++- stdlib/test/bit/test_bit.mojo | 27 +++++++++++++++++++++++++++ 3 files changed, 49 insertions(+), 1 deletion(-) diff --git a/stdlib/src/bit/__init__.mojo b/stdlib/src/bit/__init__.mojo index e41c3ca52c..75004d3618 100644 --- a/stdlib/src/bit/__init__.mojo +++ b/stdlib/src/bit/__init__.mojo @@ -21,6 +21,7 @@ from .bit import ( byte_swap, count_leading_zeros, count_trailing_zeros, + log2_floor, is_power_of_two, pop_count, rotate_bits_left, diff --git a/stdlib/src/bit/bit.mojo b/stdlib/src/bit/bit.mojo index 74a428d3df..fb4170f825 100644 --- a/stdlib/src/bit/bit.mojo +++ b/stdlib/src/bit/bit.mojo @@ -343,10 +343,30 @@ fn bit_width[ return bitwidth - leading_zero +# ===-----------------------------------------------------------------------===# +# log2_floor +# ===-----------------------------------------------------------------------===# + + +@always_inline +fn log2_floor(val: Int) -> Int: + """Returns the floor of the base-2 logarithm of an integer value. + + Args: + val: The input value. + + Returns: + The floor of the base-2 logarithm of the input value, which is equal to + the position of the highest set bit. Returns -1 if val is 0. + """ + if val <= 1: + return 0 + return bitwidthof[Int]() - count_leading_zeros(val) - 1 + + # ===-----------------------------------------------------------------------===# # is_power_of_two # ===-----------------------------------------------------------------------===# -# reference: https://en.cppreference.com/w/cpp/numeric/has_single_bit @always_inline diff --git a/stdlib/test/bit/test_bit.mojo b/stdlib/test/bit/test_bit.mojo index dee81507d1..1f1063eee0 100644 --- a/stdlib/test/bit/test_bit.mojo +++ b/stdlib/test/bit/test_bit.mojo @@ -25,7 +25,9 @@ from bit import ( pop_count, rotate_bits_left, rotate_bits_right, + log2_floor, ) +from math import log2, floor from testing import assert_equal @@ -497,6 +499,30 @@ def test_rotate_bits_simd(): assert_equal(rotate_bits_right[6](Scalar[type](96)), 129) +fn _log2_floor(n: Int) -> Int: + return int(floor(log2(float(n)))) + + +def test_log2_floor(): + assert_equal(log2_floor(0), 0) + for i in range(1, 100): + assert_equal( + log2_floor(i), + _log2_floor(i), + msg="mismatching value for the input value of " + str(i), + ) + + fn _check_alias[n: Int](expected: Int) raises: + alias res = log2_floor(n) + assert_equal(res, expected) + + _check_alias[0](0) + _check_alias[1](0) + _check_alias[2](1) + _check_alias[15](3) + _check_alias[32](5) + + def main(): test_rotate_bits_int() test_rotate_bits_simd() @@ -519,3 +545,4 @@ def main(): test_pop_count() test_pop_count_simd() test_bit_not_simd() + test_log2_floor() From f87dec5d493bf4cae2db1fab78e264ba80f1f3fe Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Sat, 7 Dec 2024 23:41:55 -0800 Subject: [PATCH 058/509] [mojo-lang] Add support for named results using `out` syntax. This adds support for spelling "named functions results" using the same `out` syntax used by initializers (in addition to `-> 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 here: https://github.com/modularml/mojo/issues/3623 MODULAR_ORIG_COMMIT_REV_ID: 23b3a120227a42d9550ba76d8cafb63c3a03edcf --- docs/changelog.md | 18 ++++ stdlib/src/builtin/_pybind.mojo | 12 ++- stdlib/src/builtin/coroutine.mojo | 16 ++-- stdlib/src/builtin/int.mojo | 2 +- stdlib/src/builtin/simd.mojo | 2 +- stdlib/src/collections/deque.mojo | 4 +- stdlib/src/memory/unsafe_pointer.mojo | 15 ++-- stdlib/src/utils/index.mojo | 103 ++++++++++++++++------- stdlib/test/os/path/test_expandvars.mojo | 2 +- 9 files changed, 120 insertions(+), 54 deletions(-) diff --git a/docs/changelog.md b/docs/changelog.md index 3673d58fd7..0576359789 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -335,6 +335,24 @@ what we publish. 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 diff --git a/stdlib/src/builtin/_pybind.mojo b/stdlib/src/builtin/_pybind.mojo index 24b0fdc619..5e1d8c874c 100644 --- a/stdlib/src/builtin/_pybind.mojo +++ b/stdlib/src/builtin/_pybind.mojo @@ -61,10 +61,13 @@ fn fail_initialization(owned err: Error) -> PythonObject: fn pointer_bitcast[ To: AnyType -](ptr: Pointer) -> Pointer[To, ptr.origin, ptr.address_space, *_, **_] as out: - return __type_of(out)( +]( + ptr: Pointer, + out result: Pointer[To, ptr.origin, ptr.address_space, *_, **_], +): + return __type_of(result)( _mlir_value=__mlir_op.`lit.ref.from_pointer`[ - _type = __type_of(out)._mlir_type + _type = __type_of(result)._mlir_type ]( UnsafePointer(__mlir_op.`lit.ref.to_pointer`(ptr._value)) .bitcast[To]() @@ -162,7 +165,8 @@ fn _try_convert_arg[ type_name_id: StringLiteral, py_args: TypedPythonObject["Tuple"], argidx: Int, -) raises -> T as result: + out result: T, +) raises: try: result = T.try_from_python(py_args[argidx]) except convert_err: diff --git a/stdlib/src/builtin/coroutine.mojo b/stdlib/src/builtin/coroutine.mojo index 04688695c8..c2c0ee1d81 100644 --- a/stdlib/src/builtin/coroutine.mojo +++ b/stdlib/src/builtin/coroutine.mojo @@ -137,7 +137,7 @@ struct Coroutine[type: AnyType, origins: OriginSet]: __disable_del self @always_inline - fn __await__(owned self) -> type as out: + fn __await__(owned self, out result: type): """Suspends the current coroutine until the coroutine is complete. Returns: @@ -150,9 +150,11 @@ struct Coroutine[type: AnyType, origins: OriginSet]: __disable_del self __mlir_op.`co.await`[_type=NoneType]( handle, - __mlir_op.`lit.ref.to_pointer`(__get_mvalue_as_litref(out)), + __mlir_op.`lit.ref.to_pointer`(__get_mvalue_as_litref(result)), + ) + __mlir_op.`lit.ownership.mark_initialized`( + __get_mvalue_as_litref(result) ) - __mlir_op.`lit.ownership.mark_initialized`(__get_mvalue_as_litref(out)) # ===----------------------------------------------------------------------=== # @@ -220,7 +222,7 @@ struct RaisingCoroutine[type: AnyType, origins: OriginSet]: __disable_del self @always_inline - fn __await__(owned self) raises -> type as out: + fn __await__(owned self, out result: type) raises: """Suspends the current coroutine until the coroutine is complete. Returns: @@ -233,7 +235,7 @@ struct RaisingCoroutine[type: AnyType, origins: OriginSet]: __disable_del self if __mlir_op.`co.await`[_type = __mlir_type.i1]( handle, - __mlir_op.`lit.ref.to_pointer`(__get_mvalue_as_litref(out)), + __mlir_op.`lit.ref.to_pointer`(__get_mvalue_as_litref(result)), __mlir_op.`lit.ref.to_pointer`( __get_mvalue_as_litref(__get_nearest_error_slot()) ), @@ -242,4 +244,6 @@ struct RaisingCoroutine[type: AnyType, origins: OriginSet]: __get_mvalue_as_litref(__get_nearest_error_slot()) ) __mlir_op.`lit.raise`() - __mlir_op.`lit.ownership.mark_initialized`(__get_mvalue_as_litref(out)) + __mlir_op.`lit.ownership.mark_initialized`( + __get_mvalue_as_litref(result) + ) diff --git a/stdlib/src/builtin/int.mojo b/stdlib/src/builtin/int.mojo index 2c9a13234b..92cb98be75 100644 --- a/stdlib/src/builtin/int.mojo +++ b/stdlib/src/builtin/int.mojo @@ -1154,7 +1154,7 @@ struct Int( @doc_private @staticmethod - fn try_from_python(obj: PythonObject) raises -> Self as result: + fn try_from_python(obj: PythonObject, out result: Self) raises: """Construct an `Int` from a Python integer value. Raises: diff --git a/stdlib/src/builtin/simd.mojo b/stdlib/src/builtin/simd.mojo index 2471fbf58a..d93be3a050 100644 --- a/stdlib/src/builtin/simd.mojo +++ b/stdlib/src/builtin/simd.mojo @@ -2329,7 +2329,7 @@ struct SIMD[type: DType, size: Int]( ](self, value, Int64(offset)) @always_inline("nodebug") - fn join(self, other: Self) -> SIMD[type, 2 * size] as result: + fn join(self, other: Self, out result: SIMD[type, 2 * size]): """Concatenates the two vectors together. Args: diff --git a/stdlib/src/collections/deque.mojo b/stdlib/src/collections/deque.mojo index a0bb3cd262..284fb630da 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) raises -> ElementType as element: + fn pop(mut self, out element: ElementType) raises: """Removes and returns the element from the right side of the deque. Returns: @@ -818,7 +818,7 @@ struct Deque[ElementType: CollectionElement]( return - fn popleft(mut self) raises -> ElementType as element: + fn popleft(mut self, out element: ElementType) raises: """Removes and returns the element from the left side of the deque. Returns: diff --git a/stdlib/src/memory/unsafe_pointer.mojo b/stdlib/src/memory/unsafe_pointer.mojo index f4971c68af..047bb61ac7 100644 --- a/stdlib/src/memory/unsafe_pointer.mojo +++ b/stdlib/src/memory/unsafe_pointer.mojo @@ -154,13 +154,14 @@ struct UnsafePointer[ @always_inline("nodebug") fn address_of( ref [address_space]arg: type, - ) -> UnsafePointer[ - type, - address_space=address_space, - alignment=1, - origin=MutableAnyOrigin - # TODO: Propagate origin of the argument. - ] as result: + out result: UnsafePointer[ + type, + address_space=address_space, + alignment=1, + origin=MutableAnyOrigin + # TODO: Propagate origin of the argument. + ], + ): """Gets the address of the argument. Args: diff --git a/stdlib/src/utils/index.mojo b/stdlib/src/utils/index.mojo index b526aa84ff..0ea7685fe4 100644 --- a/stdlib/src/utils/index.mojo +++ b/stdlib/src/utils/index.mojo @@ -454,9 +454,10 @@ struct IndexList[ @always_inline("nodebug") fn canonicalize( self, - ) -> IndexList[ - size, element_bitwidth = bitwidthof[Int](), unsigned=False - ] as result: + out result: IndexList[ + size, element_bitwidth = bitwidthof[Int](), unsigned=False + ], + ): """Canonicalizes the IndexList. Returns: @@ -772,11 +773,14 @@ struct IndexList[ @always_inline fn cast[ type: DType - ](self) -> IndexList[ - size, - element_bitwidth = bitwidthof[type](), - unsigned = _is_unsigned[type](), - ] as result: + ]( + self, + out result: IndexList[ + size, + element_bitwidth = bitwidthof[type](), + unsigned = _is_unsigned[type](), + ], + ): """Casts to the target DType. Parameters: @@ -803,9 +807,12 @@ struct IndexList[ *, element_bitwidth: Int = Self.element_bitwidth, unsigned: Bool = Self.unsigned, - ](self) -> IndexList[ - size, element_bitwidth=element_bitwidth, unsigned=unsigned - ] as result: + ]( + self, + out result: IndexList[ + size, element_bitwidth=element_bitwidth, unsigned=unsigned + ], + ): """Casts to the target DType. Parameters: @@ -837,9 +844,12 @@ fn Index[ *, element_bitwidth: Int = bitwidthof[Int](), unsigned: Bool = False, -](x: T0) -> IndexList[ - 1, element_bitwidth=element_bitwidth, unsigned=unsigned -] as result: +]( + x: T0, + out result: IndexList[ + 1, element_bitwidth=element_bitwidth, unsigned=unsigned + ], +): """Constructs a 1-D Index from the given value. Parameters: @@ -859,9 +869,12 @@ fn Index[ @always_inline fn Index[ *, element_bitwidth: Int = bitwidthof[Int](), unsigned: Bool = False -](x: UInt) -> IndexList[ - 1, element_bitwidth=element_bitwidth, unsigned=unsigned -] as result: +]( + x: UInt, + out result: IndexList[ + 1, element_bitwidth=element_bitwidth, unsigned=unsigned + ], +): """Constructs a 1-D Index from the given value. Parameters: @@ -884,9 +897,13 @@ fn Index[ *, element_bitwidth: Int = bitwidthof[Int](), unsigned: Bool = False, -](x: T0, y: T1) -> IndexList[ - 2, element_bitwidth=element_bitwidth, unsigned=unsigned -] as result: +]( + x: T0, + y: T1, + out result: IndexList[ + 2, element_bitwidth=element_bitwidth, unsigned=unsigned + ], +): """Constructs a 2-D Index from the given values. Parameters: @@ -908,9 +925,13 @@ fn Index[ @always_inline fn Index[ *, element_bitwidth: Int = bitwidthof[Int](), unsigned: Bool = False -](x: UInt, y: UInt) -> IndexList[ - 2, element_bitwidth=element_bitwidth, unsigned=unsigned -] as result: +]( + x: UInt, + y: UInt, + out result: IndexList[ + 2, element_bitwidth=element_bitwidth, unsigned=unsigned + ], +): """Constructs a 2-D Index from the given values. Parameters: @@ -935,9 +956,14 @@ fn Index[ *, element_bitwidth: Int = bitwidthof[Int](), unsigned: Bool = False, -](x: T0, y: T1, z: T2) -> IndexList[ - 3, element_bitwidth=element_bitwidth, unsigned=unsigned -] as result: +]( + x: T0, + y: T1, + z: T2, + out result: IndexList[ + 3, element_bitwidth=element_bitwidth, unsigned=unsigned + ], +): """Constructs a 3-D Index from the given values. Parameters: @@ -967,9 +993,15 @@ fn Index[ *, element_bitwidth: Int = bitwidthof[Int](), unsigned: Bool = False, -](x: T0, y: T1, z: T2, w: T3) -> IndexList[ - 4, element_bitwidth=element_bitwidth, unsigned=unsigned -] as result: +]( + x: T0, + y: T1, + z: T2, + w: T3, + out result: IndexList[ + 4, element_bitwidth=element_bitwidth, unsigned=unsigned + ], +): """Constructs a 4-D Index from the given values. Parameters: @@ -1002,9 +1034,16 @@ fn Index[ *, element_bitwidth: Int = bitwidthof[Int](), unsigned: Bool = False, -](x: T0, y: T1, z: T2, w: T3, v: T4) -> IndexList[ - 5, element_bitwidth=element_bitwidth, unsigned=unsigned -] as result: +]( + x: T0, + y: T1, + z: T2, + w: T3, + v: T4, + out result: IndexList[ + 5, element_bitwidth=element_bitwidth, unsigned=unsigned + ], +): """Constructs a 5-D Index from the given values. Parameters: diff --git a/stdlib/test/os/path/test_expandvars.mojo b/stdlib/test/os/path/test_expandvars.mojo index 4dccce1208..fead55656d 100644 --- a/stdlib/test/os/path/test_expandvars.mojo +++ b/stdlib/test/os/path/test_expandvars.mojo @@ -22,7 +22,7 @@ from testing import assert_equal struct EnvVar: var name: String - fn __init__(out self, name: String, value: String) -> None: + fn __init__(out self, name: String, value: String): self.name = name _ = os.setenv(name, value) From a0e2311ebdec34b6b13debb1ee56eb2a3cf1c39a Mon Sep 17 00:00:00 2001 From: Arthur Evans Date: Sun, 8 Dec 2024 09:04:39 -0800 Subject: [PATCH 059/509] [Docs] Implicit conversion updates. Updates for the new default explicit constructors & `@implicit` decorator. MODULAR_ORIG_COMMIT_REV_ID: ef4ab402b9e2c63747f26f7ab4e6e3208859a8d7 --- docs/manual/decorators/implicit.md | 40 +++++++++++++++ docs/manual/decorators/index.mdx | 1 + docs/manual/lifecycle/life.mdx | 82 +++++++++++++++--------------- docs/manual/parameters/index.mdx | 2 +- docs/manual/variables.mdx | 16 ++++-- 5 files changed, 94 insertions(+), 47 deletions(-) create mode 100644 docs/manual/decorators/implicit.md diff --git a/docs/manual/decorators/implicit.md b/docs/manual/decorators/implicit.md new file mode 100644 index 0000000000..1e9cd07e0b --- /dev/null +++ b/docs/manual/decorators/implicit.md @@ -0,0 +1,40 @@ +--- +title: '@implicit' +description: Marks a constructor as eligible for implicit conversion. +codeTitle: true + +--- + +You can add the `@implicit` decorator on any single-argument constructor to +identify it as eligible for implicit conversion. + +For example: + +```mojo +struct MyInt: + var value: Int + + @implicit + fn __init__(out self, value: Int): + self.value = value + + fn __init__(out self, value: Float64): + self.value = int(value) + + +``` + +This implicit conversion constructor allows you to pass an `Int` to a function +that takes a `MyInt` argument, or assign an `Int` to a variable of type `MyInt`. +However, the constructor that takes a `Float64` value is **not** an implicit +conversion constructor, so it must be invoked explicitly: + +```mojo +fn func(n: MyInt): + print("MyInt value: ", n.value) + +fn main(): + func(Int(42)) # Implicit conversion from Int: OK + func(MyInt(Float64(4.2))) # Explicit conversion from Float64: OK + func(Float64(4.2)) # Error: can't convert Float64 to MyInt +``` diff --git a/docs/manual/decorators/index.mdx b/docs/manual/decorators/index.mdx index 2a65a9f213..058580e41e 100644 --- a/docs/manual/decorators/index.mdx +++ b/docs/manual/decorators/index.mdx @@ -9,6 +9,7 @@ listing: contents: - always-inline.md - copy-capture.md + - implicit.md - nonmaterializable.md - parameter.md - register-passable.md diff --git a/docs/manual/lifecycle/life.mdx b/docs/manual/lifecycle/life.mdx index 91646caa5f..c852c4c700 100644 --- a/docs/manual/lifecycle/life.mdx +++ b/docs/manual/lifecycle/life.mdx @@ -153,12 +153,16 @@ struct MyPet: Mojo supports implicit conversion from one type to another. Implicit conversion can happen when one of the following occurs: -* You assign a value of one type to a variable with a different type. -* You pass a value of one type to a function that requires a different type. +- You assign a value of one type to a variable with a different type. +- You pass a value of one type to a function that requires a different type. In both cases, implicit conversion is supported when the target type -defines a constructor that takes a single required, non-keyword argument of the -source type. For example: +defines a constructor that meets the following criteria: + +- Is declared with the `@implicit` decorator. +- Has a single required, non-keyword argument of the source type. + +For example: ```mojo var a = Source() @@ -170,7 +174,9 @@ Mojo implicitly converts the `Source` value in `a` to a `Target` value if ```mojo struct Target: - fn __init__(out self, s: Source): ... + + @implicit + fn __init__(out self, s: Source): ... ``` With implicit conversion, the assignment above is essentially identical to: @@ -179,26 +185,22 @@ With implicit conversion, the assignment above is essentially identical to: var b = Target(a) ``` +In general, types should only support implicit conversions when the conversion +lossless, and ideally inexpensive. For example, converting an integer to a +floating-point number is usually lossless (except for very large positive and +negative integers, where the conversion may be approximate), but converting a +floating-point number to an integer is very likely to lose information. So +Mojo supports implicit conversion from `Int` to `Float64`, but not the reverse. + The constructor used for implicit conversion can take optional arguments, so the following constructor would also support implicit conversion from `Source` to `Target`: ```mojo struct Target: - fn __init__(out self, s: Source, reverse: Bool = False): ... -``` - -Implicit conversion also occurs if the type doesn't declare its own constructor, -but instead uses the [`@value` decorator](#value-decorator), *and* the type -has only one field. That's because Mojo automatically creates a member-wise -constructor for each field, and when there is only one field, that synthesized -constructor works exactly like a conversion constructor. For example, this -type also can convert a `Source` value to a `Target` value: -```mojo -@value -struct Target: - var s: Source + @implicit + fn __init__(out self, s: Source, reverse: Bool = False): ... ``` Implicit conversion can fail if Mojo can't unambiguously match the conversion to @@ -209,41 +211,39 @@ convert the values: ```mojo struct A: - fn __init__(out self, s: Source): ... + @implicit + fn __init__(out self, s: Source): ... struct B: - fn __init__(out self, s: Source): ... + @implicit + fn __init__(out self, s: Source): ... -struct Target: - fn __init__(out self, a: A): ... - fn __init__(out self, b: B): ... +struct OverloadedTarget: + @implicit + fn __init__(out self, a: A): ... + @implicit + fn __init__(out self, b: B): ... -# Fails -var t = Target(Source()) +var t = OverloadedTarget(Source()) # Error: ambiguous call to '__init__': each + # candidate requires 1 implicit conversion ``` -In this case, removing either one of the target type's constructors will fix the -problem. - -If you want to define a single-argument constructor, but you **don't** want -the types to implicitly convert, you can define the constructor with a -[keyword-only argument](/mojo/manual/functions#positional-only-and-keyword-only-arguments): +In this case, you can fix the issue by explicitly casting to one of the +intermediate types. For example: ```mojo -struct Target: - # does not support implicit conversion - fn __init__(out self, *, source: Source): ... - -# the constructor must be called with a keyword -var t = Target(source=a) +var t = OverloadedTarget(A(Source())) # OK ``` -:::note +Mojo applies at most one implicit conversion to a variable. For example: -In the future we intend to provide a more explicit method of declaring whether -a constructor should support implicit conversion. +```mojo +var t: OverloadedTarget = Source() # Error: can't implicitly convert Source + # to Target +``` -::: +Would fail because there's no direct conversion from `Source` to +`OverloadedTarget`. ## Copy constructor diff --git a/docs/manual/parameters/index.mdx b/docs/manual/parameters/index.mdx index 9b3ba3250f..fae5e5f72c 100644 --- a/docs/manual/parameters/index.mdx +++ b/docs/manual/parameters/index.mdx @@ -378,7 +378,7 @@ struct MyInt: """A type that is implicitly convertible to `Int`.""" var value: Int - @always_inline("nodebug") + @implicit fn __init__(out self, _a: Int): self.value = _a diff --git a/docs/manual/variables.mdx b/docs/manual/variables.mdx index 6b77b88f0f..9247ff5c9f 100644 --- a/docs/manual/variables.mdx +++ b/docs/manual/variables.mdx @@ -183,7 +183,7 @@ its own type. For example, if you assign an integer to a variable that has a floating-point type, it converts the value instead of giving a compiler error: ```mojo -var number: Float64 = 1 +var number: Float64 = Int(1) ``` ```output @@ -191,8 +191,13 @@ var number: Float64 = 1 ``` As shown above, value assignment can be converted into a constructor call if the -target type has a constructor that takes a single argument that matches the -value being assigned. So, this code uses the `Float64` constructor that takes an +target type has a constructor that meets the following criteria: + +- It's decorated with the `@implicit` decorator. + +- It takes a single required argument that matches the value being assigned. + +So, this code uses the `Float64` constructor that takes an integer: `__init__(out self, value: Int)`. In general, implicit conversions should only be supported where the conversion @@ -200,7 +205,7 @@ is lossless. Implicit conversion follows the logic of [overloaded functions](/mojo/manual/functions#overloaded-functions). If the destination -type has a single-argument constructor that takes an argument of the source +type has a viable implicit conversion constructor for the source type, it can be invoked for implicit conversion. So assigning an integer to a `Float64` variable is exactly the same as this: @@ -215,7 +220,8 @@ implicitly convert to the required type (using one of the type's overloaded constructors). For example, you can pass an `Int` to a function that expects a `Float64`, -because `Float64` includes a constructor that takes an `Int`: +because `Float64` includes an implicit conversion constructor that takes an +`Int`: ```mojo fn take_float(value: Float64): From df36841822bc04ba3e757b773ef5ac622219165d Mon Sep 17 00:00:00 2001 From: abdul dakkak Date: Sun, 8 Dec 2024 09:54:14 -0800 Subject: [PATCH 060/509] [******][GPU] Do not run gpu tests with assertions on MODULAR_ORIG_COMMIT_REV_ID: ae0b65162253dd2e39cf820d2be615f4678da830 --- stdlib/test/lit.cfg.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/stdlib/test/lit.cfg.py b/stdlib/test/lit.cfg.py index 55976ecfe6..67d1f613b2 100644 --- a/stdlib/test/lit.cfg.py +++ b/stdlib/test/lit.cfg.py @@ -78,8 +78,9 @@ def has_not(): # with assertions enabled. config.substitutions.insert(1, ("%bare-mojo", "mojo")) - # NOTE: Right now this is the same as %mojo but we should start testing + # NOTE: Right now these are the same as %mojo but we should start testing # with debug info as well + config.substitutions.insert(0, ("%mojo-no-debug-no-assert", "mojo")) config.substitutions.insert(0, ("%mojo-no-debug", base_mojo_command)) # The `mojo` nightly compiler ships with its own `stdlib.mojopkg`. For the From 58fcc1a39ae19694ab77859486d7ea9159771283 Mon Sep 17 00:00:00 2001 From: Connor Gray Date: Sun, 8 Dec 2024 22:47:27 -0600 Subject: [PATCH 061/509] [stdlib] docs: Update changelog to reflect recent changes to `Origin` MODULAR_ORIG_COMMIT_REV_ID: 0d3fca509ce444c56e0cb65814e2696150e86b18 --- docs/changelog.md | 13 +++++++++++++ stdlib/src/builtin/type_aliases.mojo | 12 ++++++++++++ 2 files changed, 25 insertions(+) diff --git a/docs/changelog.md b/docs/changelog.md index 0576359789..a57e0db1b2 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -485,6 +485,19 @@ what we publish. 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: diff --git a/stdlib/src/builtin/type_aliases.mojo b/stdlib/src/builtin/type_aliases.mojo index b3358188b5..762746f8c2 100644 --- a/stdlib/src/builtin/type_aliases.mojo +++ b/stdlib/src/builtin/type_aliases.mojo @@ -67,6 +67,18 @@ struct Origin[is_mutable: Bool]: Safety: This is an UNSAFE operation if used to cast an immutable origin to a mutable origin. + + Examples: + + Cast a mutable origin to be immutable: + + ```mojo + struct Container[mut: Bool, //, origin: Origin[mut]]: + var data: Int + + fn imm_borrow(self) -> Container[ImmutableOrigin.cast_from[origin].result]: + # ... + ``` """ # ===-------------------------------------------------------------------===# From 30bf31e81eaf98d5bb6e12c5fd1576780839a1ed Mon Sep 17 00:00:00 2001 From: modularbot Date: Mon, 9 Dec 2024 17:09:00 +0000 Subject: [PATCH 062/509] Update lockfiles to point to latest nightly version: 24.6.0.dev2024120905 --- examples/life/magic.lock | 1085 ++++++++++++++++----------------- examples/magic.lock | 899 ++++++++++++++------------- examples/notebooks/magic.lock | 897 ++++++++++++++------------- examples/operators/magic.lock | 899 ++++++++++++++------------- magic.lock | 899 ++++++++++++++------------- 5 files changed, 2314 insertions(+), 2365 deletions(-) diff --git a/examples/life/magic.lock b/examples/life/magic.lock index 78ae0c08bf..c3b6a5b2ae 100644 --- a/examples/life/magic.lock +++ b/examples/life/magic.lock @@ -17,18 +17,18 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/aom-3.9.1-hac33072_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/attr-2.5.1-h166bdaf_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-hb88c0a9_10.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.0-hecf86a2_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-ha4f867e_12.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.1-hecf86a2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.10.3-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.3.0-hf42f96a_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.0-h1ffe551_7.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.1-hab05fe4_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.2-hdeadb07_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h7bd072d_8.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.5-h3a84f74_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.0-h873f81a_8.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.2-ha5a3ca8_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-ha35c7d9_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h56e9cca_9.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.5-h6ad95d4_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.1-hf42f96a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-hf42f96a_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.7-ha6b94fc_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.7-h318f0b1_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-hac138a2_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.10.0-h113e628_0.conda @@ -49,7 +49,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/dav1d-1.2.1-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/dbus-1.13.6-h5008d03_3.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda @@ -82,7 +82,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/httptools-0.6.4-py312h66e93f0_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda @@ -152,7 +152,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsndfile-1.2.2-hc60ed4a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.47.0-hadc24fc_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.47.2-hee588c1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hf672d98_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-hc0a3c3a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_1.conda @@ -171,12 +171,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.9.4-hcb278e6_0.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.dev2024120805-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120805-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120805-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120905-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120905-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120905-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120905-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.dev2024120805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120905-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/multiprocess-0.70.15-py312h98912ed_1.conda @@ -185,13 +185,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.2-h488ebb8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.0-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.28.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.28.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.28.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-prometheus-1.12.0rc1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.28.2-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh10f6f8f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh3cfb1c2_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/opusfile-0.12-h3358134_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/orc-2.0.3-he039a57_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda @@ -199,7 +199,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.44-hba22ea6_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-11.0.0-py312h7b63e92_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.43.2-h59595ed_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.44.2-h29eaf8c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/portaudio-19.6.0-h7c63dc7_9.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/portmidi-2.0.4-h7c63dc7_2.conda @@ -250,11 +250,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/svt-av1-2.3.0-h5888daf_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.20.4-py312h8360d73_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.21.0-py312h8360d73_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.46.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda @@ -275,8 +275,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxext-1.3.6-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxfixes-6.0.1-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrender-0.9.11-hb9d3cd8_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-xorgproto-2024.1-hb9d3cd8_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrender-0.9.11-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xxhash-0.8.2-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-5.6.3-hbcc6ac9_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-gpl-tools-5.6.3-hbcc6ac9_1.conda @@ -299,18 +298,18 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aom-3.9.1-hcccb83c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/attr-2.5.1-h4e544f5_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-hac900a4_10.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.0-h35473ba_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-h89ba3c0_12.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.1-h35473ba_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-common-0.10.3-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-compression-0.3.0-h4c7db1d_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-event-stream-0.5.0-h9bacb8c_7.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.1-hf4e072c_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.2-h10eb1bc_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h28a5e6a_8.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.5-h29aef15_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-event-stream-0.5.0-hba6c15e_8.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.2-h697be72_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-h0155602_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h2cca791_9.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.5-h3c51cf6_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.1-h4c7db1d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h4c7db1d_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.7-h6c346da_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.7-hacb6b83_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h5e41cbe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-core-cpp-1.14.0-h1887c18_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-identity-cpp-1.10.0-h47b0b28_0.conda @@ -331,7 +330,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/dav1d-1.2.1-h31becfc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/dbus-1.13.6-h12b9eeb_3.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda @@ -364,7 +363,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/httptools-0.6.4-py312hb2c0f52_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda @@ -434,7 +433,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsndfile-1.2.2-h79657aa_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.20-h68df207_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.47.0-hc4a20ef_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.47.2-h5eb1b54_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libssh2-1.11.1-ha41c0db_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_1.conda @@ -453,12 +452,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.9.4-hd600fc2_0.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.dev2024120805-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120805-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120805-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120905-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120905-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120905-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120905-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.dev2024120805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120905-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/multiprocess-0.70.15-py312hdd3e373_1.conda @@ -467,13 +466,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openjpeg-2.5.2-h0d9d63b_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.0-h86ecc28_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.28.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.28.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.28.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-prometheus-1.12.0rc1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.28.2-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh10f6f8f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh3cfb1c2_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/opusfile-0.12-hf55b2d5_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/orc-2.0.3-h90de224_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda @@ -481,7 +480,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pcre2-10.44-h070dd5b_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pillow-11.0.0-py312h5ab5af3_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pixman-0.43.4-h2f0025b_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pixman-0.44.2-h86a87f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/portaudio-19.6.0-h5c6c0ed_9.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/portmidi-2.0.4-h5c6c0ed_2.conda @@ -532,11 +531,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/svt-av1-2.3.0-h5ad3122_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.20.4-py312ha0d6ea1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.21.0-py312ha0d6ea1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py312h52516f5_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.46.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda @@ -557,8 +556,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxdmcp-1.1.5-h57736b2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxext-1.3.6-h57736b2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxfixes-6.0.1-h57736b2_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxrender-0.9.11-h57736b2_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-xorgproto-2024.1-h86ecc28_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxrender-0.9.11-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xxhash-0.8.2-h31becfc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-5.6.3-h2dbfc1b_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-gpl-tools-5.6.3-h2dbfc1b_1.conda @@ -578,18 +576,18 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aom-3.9.1-h7bae524_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-h9b725a8_10.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.0-h5d7ee29_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-h35eccd0_12.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.1-h5d7ee29_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.10.3-h5505292_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-compression-0.3.0-h5d7ee29_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.0-h13ead76_7.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.1-hf483d09_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.2-h39f8ad8_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h68a0d7e_8.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.5-h840aca7_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.0-h8ec3972_8.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.2-h48c6dea_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-h30cefa2_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h3aaadf4_9.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.5-hca3a6f1_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.1-h5d7ee29_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-h5d7ee29_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.7-ha310de4_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.7-hc2c2bbc_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-he4d6490_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.14.0-hd50102c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.10.0-hc602bab_0.conda @@ -601,7 +599,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.3-h5505292_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2024.8.30-hf0a4a13_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cairo-1.18.0-hb4a6bf7_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cairo-1.18.2-h6a3b0d2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.8.30-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.1-py312h0fad829_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_1.conda @@ -609,7 +607,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/dav1d-1.2.1-hb547adb_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda @@ -641,7 +639,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/httptools-0.6.4-py312hea69d52_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda @@ -702,7 +700,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h2348fd5_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsndfile-1.2.2-h9739721_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.47.0-hbaaea75_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.47.2-h3f77e49_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.1-h9cc3647_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libthrift-0.21.0-h64651cc_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-ha962b0a_2.conda @@ -717,12 +715,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.9.4-hb7217d7_0.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.dev2024120805-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120805-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120805-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120905-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120905-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120905-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120905-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.dev2024120805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120905-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 @@ -731,13 +729,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openjpeg-2.5.2-h9f1df11_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.0-h39f12f2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.28.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.28.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.28.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-prometheus-1.12.0rc1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.28.2-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh10f6f8f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh3cfb1c2_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/opusfile-0.12-h5643135_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/orc-2.0.3-h121fd32_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda @@ -745,7 +743,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pcre2-10.44-h297a79d_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-11.0.0-py312haf37ca6_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pixman-0.43.4-hebf3989_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pixman-0.44.2-h2f9eb0b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/portaudio-19.6.0-h13dd4ca_9.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/portmidi-2.0.4-h13dd4ca_2.conda @@ -794,11 +792,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/svt-av1-2.3.0-hf24288c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.20.4-py312hf3e4074_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.21.0-py312hf3e4074_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.46.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda @@ -1136,107 +1134,104 @@ packages: - kind: conda name: aws-c-auth version: 0.8.0 - build: h9b725a8_10 - build_number: 10 + build: h35eccd0_12 + build_number: 12 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-h9b725a8_10.conda - sha256: 63cb8c25e0a26be4261d4271de525e7e33aefe9d9b001b8abfa5c9ac69c3dab3 - md5: 17c90d9eb8c6842fd739dc5445ce9962 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-h35eccd0_12.conda + sha256: 40ca48aee5f3ff0d3ffd64625dacb019104a9a2ee24cd54052cde6fe4cbc8349 + md5: 1109d5293b724ca16b61452accfdb442 depends: - __osx >=11.0 - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - - aws-c-http >=0.9.1,<0.9.2.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 license: Apache-2.0 license_family: Apache - size: 92355 - timestamp: 1731733738919 + size: 92279 + timestamp: 1733611476546 - kind: conda name: aws-c-auth version: 0.8.0 - build: hac900a4_10 - build_number: 10 + build: h89ba3c0_12 + build_number: 12 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-hac900a4_10.conda - sha256: 85c8500ae0570f0d39e6661a120c653e43f0f5f984e2954c44fd358a87776892 - md5: 9ecaef75ebd666dda7caa79154183b02 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-h89ba3c0_12.conda + sha256: 021451014fb5ee24601052d84db8d5babbce5085959ba777b540db4e33bde360 + md5: c0e2e6c3aa8c309af0ba09fc7d949407 depends: - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - - aws-c-http >=0.9.1,<0.9.2.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 111853 - timestamp: 1731733547677 + size: 112242 + timestamp: 1733611425746 - kind: conda name: aws-c-auth version: 0.8.0 - build: hb88c0a9_10 - build_number: 10 + build: ha4f867e_12 + build_number: 12 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-hb88c0a9_10.conda - sha256: d2837a84e6bd7d993a83e79f9e240e1465e375f3d57149ea5b1927c6a4133bcc - md5: 409b7ee6d3473cc62bda7280f6ac20d0 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-ha4f867e_12.conda + sha256: b9355bedf43c857a2d1986ebe7d61e615218f2171d163b509633d6c0c988d2dc + md5: d889de56d3be691063b71eb826470e29 depends: - __glibc >=2.17,<3.0.a0 - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - - aws-c-http >=0.9.1,<0.9.2.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 107163 - timestamp: 1731733534767 + size: 107663 + timestamp: 1733611397256 - kind: conda name: aws-c-cal - version: 0.8.0 - build: h35473ba_2 - build_number: 2 + version: 0.8.1 + build: h35473ba_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.0-h35473ba_2.conda - sha256: 3327a9e65ec531b0c55d17bbcdc436b4e641af1f293d1c2f50e0f16aa79fde60 - md5: 48dc0b3576513622673d3f5f3d163b62 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.1-h35473ba_0.conda + sha256: c2d59d74e167b6df3c1a7addf0d37080b69a6b3dee2a30b3f2171a5d26c5a691 + md5: 97c0ccb4d43d880b38f237e746c29ead depends: - aws-c-common >=0.10.3,<0.10.4.0a0 - libgcc >=13 - openssl >=3.3.1,<4.0a0 license: Apache-2.0 license_family: Apache - size: 49714 - timestamp: 1731678553709 + size: 49808 + timestamp: 1732038238504 - kind: conda name: aws-c-cal - version: 0.8.0 - build: h5d7ee29_2 - build_number: 2 + version: 0.8.1 + build: h5d7ee29_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.0-h5d7ee29_2.conda - sha256: 2a8c09b33400cf2b7d658e63fd5a6f9b6e9626458f6213b904592fc15220bc92 - md5: 92734dad83d22314205ba73b679710d2 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.1-h5d7ee29_0.conda + sha256: 42d5e9fb695bc3b280ed7e625dcda110b6780ee471e227f1b92afce71ae4972c + md5: fc51a61831a676fe6f922450f51ab6af depends: - __osx >=11.0 - aws-c-common >=0.10.3,<0.10.4.0a0 - openssl >=3.3.1,<4.0a0 license: Apache-2.0 license_family: Apache - size: 39966 - timestamp: 1731678721786 + size: 40047 + timestamp: 1732038304022 - kind: conda name: aws-c-cal - version: 0.8.0 - build: hecf86a2_2 - build_number: 2 + version: 0.8.1 + build: hecf86a2_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.0-hecf86a2_2.conda - sha256: 220a37955c120bf2f565fbd5320a82fc4c8b550b2449294bc0509c296cfcb9fa - md5: c54459d686ad9d0502823cacff7e8423 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.1-hecf86a2_0.conda + sha256: 12cc2087503f4f0d3a5db84e791fb5e585866da728f888aa76e14330a092a681 + md5: 8350795be14a92d68847c0d4f3c1d59f depends: - __glibc >=2.17,<3.0.a0 - aws-c-common >=0.10.3,<0.10.4.0a0 @@ -1244,8 +1239,8 @@ packages: - openssl >=3.3.1,<4.0a0 license: Apache-2.0 license_family: Apache - size: 47477 - timestamp: 1731678510949 + size: 47569 + timestamp: 1732038156682 - kind: conda name: aws-c-common version: 0.10.3 @@ -1341,291 +1336,294 @@ packages: - kind: conda name: aws-c-event-stream version: 0.5.0 - build: h13ead76_7 - build_number: 7 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.0-h13ead76_7.conda - sha256: 386965fab5f0bed4a6109cdba32579f16bee1b0f76ce1db840ce6f7070188f9f - md5: 55a901b6d4fb9ce1bc8328925b229f0b + build: h873f81a_8 + build_number: 8 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.0-h873f81a_8.conda + sha256: 589f9a04c4c7a919410dde75ce93a6986efad6ed522ecd8e5c9c587ac18f0d34 + md5: 32bdd50b43fcc435a8dc5a3c66aafef0 depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - - libcxx >=18 + - libgcc >=13 + - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 47528 - timestamp: 1731714690911 + size: 54020 + timestamp: 1731839177415 - kind: conda name: aws-c-event-stream version: 0.5.0 - build: h1ffe551_7 - build_number: 7 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.0-h1ffe551_7.conda - sha256: 3b780d6483baa889e8df5aa66ab3c439a9c81331cf2a4799e373f4174768ddd9 - md5: 7cce4dfab184f4bbdfc160789251b3c5 + build: h8ec3972_8 + build_number: 8 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.0-h8ec3972_8.conda + sha256: 81b98fc39e64d090af23b11621e467b4f943a19f61dda0fed5ad6397f06de5c7 + md5: ced9c97ddf61e4222d548e8bcc863b87 depends: - - __glibc >=2.17,<3.0.a0 + - __osx >=11.0 - aws-c-common >=0.10.3,<0.10.4.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - - libgcc >=13 - - libstdcxx >=13 + - libcxx >=18 license: Apache-2.0 license_family: Apache - size: 53500 - timestamp: 1731714597524 + size: 47491 + timestamp: 1731839300212 - kind: conda name: aws-c-event-stream version: 0.5.0 - build: h9bacb8c_7 - build_number: 7 + build: hba6c15e_8 + build_number: 8 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-event-stream-0.5.0-h9bacb8c_7.conda - sha256: 2b7bb475330942d94bc359171df19d0cf8b326f15c0c7903a59da54a8add621e - md5: 694020125b66632d6577456d2d9d3c74 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-event-stream-0.5.0-hba6c15e_8.conda + sha256: d3b74580045ee9d54a134ab1e5e00082d5d8a466980e94acc153188ee7375d08 + md5: 102f8b54630d79aff5e0c489f40f926e depends: - aws-c-common >=0.10.3,<0.10.4.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 55054 - timestamp: 1731714599360 + size: 55354 + timestamp: 1731839242373 - kind: conda name: aws-c-http - version: 0.9.1 - build: hab05fe4_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.1-hab05fe4_2.conda - sha256: 90a325b6f5371dd2203b643de646967fe57a4bcbbee8c91086abbf9dd733d59a - md5: fb409f7053fa3dbbdf6eb41045a87795 + version: 0.9.2 + build: h48c6dea_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.2-h48c6dea_1.conda + sha256: cb68d557af1bdcbef668574836fbf39c4df0e4f377258e4d5bd14196acf9b992 + md5: a28dd36a1da76042bfb5579005cc6728 depends: - - __glibc >=2.17,<3.0.a0 - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - __osx >=11.0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - aws-c-compression >=0.3.0,<0.3.1.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 - - libgcc >=13 + - aws-c-io >=0.15.3,<0.15.4.0a0 license: Apache-2.0 license_family: Apache - size: 196945 - timestamp: 1731714483279 + size: 152660 + timestamp: 1732110368931 - kind: conda name: aws-c-http - version: 0.9.1 - build: hf483d09_2 - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.1-hf483d09_2.conda - sha256: fca9ed0f0895bab9bf737c8d8a3314556cb893d45c40f0656f21a93502db3089 - md5: d880c40b8fc7d07374c036f93f1359d2 + version: 0.9.2 + build: h697be72_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.2-h697be72_1.conda + sha256: 4d6557a00e74649301da78d7de7d108882ce89eb9d6c87efce30789b53a617cf + md5: a8b1a2c11a93e615f6e8f33175ff8ff0 depends: - - __osx >=11.0 - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - aws-c-compression >=0.3.0,<0.3.1.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 153315 - timestamp: 1731714621306 + size: 190344 + timestamp: 1732110425530 - kind: conda name: aws-c-http - version: 0.9.1 - build: hf4e072c_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.1-hf4e072c_2.conda - sha256: b9a262451fc91d2fd4ccfcb6dc11ac61d0152c0db765bfe8d089e3e1b70c2150 - md5: fddc197912c16cb95276077f6c7917c5 + version: 0.9.2 + build: ha5a3ca8_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.2-ha5a3ca8_1.conda + sha256: 8ecb3d8411f58db4686635aedfe5d60b2b8870f9f9cafb471f3878dc61d21596 + md5: b2e017f8a4781ad3af9166edf10b65a8 depends: - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - __glibc >=2.17,<3.0.a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - aws-c-compression >=0.3.0,<0.3.1.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 190363 - timestamp: 1731714613945 + size: 197338 + timestamp: 1732110324356 - kind: conda name: aws-c-io - version: 0.15.2 - build: h10eb1bc_2 - build_number: 2 + version: 0.15.3 + build: h0155602_1 + build_number: 1 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.2-h10eb1bc_2.conda - sha256: b8e4206ee1fa58453535c1c08c6aca5bdc92cde026bf7ec20d038786f813239b - md5: 7cdf478bb4feae1a93319f6e3381b8a9 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-h0155602_1.conda + sha256: 7b8d97d51e5bb80191e07f16cac6f59068be30bf5906925a8f4159b3aab9093c + md5: 431c201b11eee90fd120844557a62b02 depends: - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - libgcc >=13 - s2n >=1.5.9,<1.5.10.0a0 license: Apache-2.0 license_family: Apache - size: 162624 - timestamp: 1731702570075 + size: 161664 + timestamp: 1732097310449 - kind: conda name: aws-c-io - version: 0.15.2 - build: h39f8ad8_2 - build_number: 2 + version: 0.15.3 + build: h30cefa2_1 + build_number: 1 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.2-h39f8ad8_2.conda - sha256: b14e32f024f6be1610dccfdb6371e101cba204d24f37c2a63d9b6380ac74ac17 - md5: 3b49f1dd8f20bead8b222828cfdad585 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-h30cefa2_1.conda + sha256: d6f8d42259ca11507bd912b3cd3ff1a65d6d8c7ff67ae9ee9df1686c9bebbbcc + md5: 8b8dc361de09e5b6227165a876e55cb7 depends: - __osx >=11.0 - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 license: Apache-2.0 license_family: Apache - size: 137610 - timestamp: 1731702839896 + size: 136662 + timestamp: 1732097382517 - kind: conda name: aws-c-io - version: 0.15.2 - build: hdeadb07_2 - build_number: 2 + version: 0.15.3 + build: ha35c7d9_1 + build_number: 1 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.2-hdeadb07_2.conda - sha256: 1636136a5d882b4aaa13ea8b7de8cf07038a6878872e3c434df9daf478cee594 - md5: 461a1eaa075fd391add91bcffc9de0c1 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-ha35c7d9_1.conda + sha256: 2e9e13ed54f6da22ee5d06622f4165bcca253411997dad62225aecc54b25c0db + md5: 97960f380abe1ba3157fe63312e35b07 depends: - __glibc >=2.17,<3.0.a0 - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - libgcc >=13 - s2n >=1.5.9,<1.5.10.0a0 license: Apache-2.0 license_family: Apache - size: 159368 - timestamp: 1731702542973 + size: 158012 + timestamp: 1732097264673 - kind: conda name: aws-c-mqtt version: 0.11.0 - build: h28a5e6a_8 - build_number: 8 + build: h2cca791_9 + build_number: 9 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h28a5e6a_8.conda - sha256: aad8c9a5c24953cdebf17efa7ec06b5639e14072d4fa70c5c0607d7ad913ba88 - md5: 5250ce3b5154c0347b7576015a7c6cef + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h2cca791_9.conda + sha256: c0ad176bab176a2983fb052de71037fc9357afd13b073511a7a440c1a8c6eff2 + md5: 090674d608454e979ce77bc8ee735868 depends: - aws-c-common >=0.10.3,<0.10.4.0a0 - - aws-c-http >=0.9.1,<0.9.2.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 169040 - timestamp: 1731734203264 + size: 169690 + timestamp: 1733688313938 - kind: conda name: aws-c-mqtt version: 0.11.0 - build: h68a0d7e_8 - build_number: 8 + build: h3aaadf4_9 + build_number: 9 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h68a0d7e_8.conda - sha256: 837c24c105624e16ace94b4b566ffe45231ff275339c523571ebd45946926156 - md5: 9e3ac70d27e7591b1310a690768cfe27 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h3aaadf4_9.conda + sha256: 3cc99239c8dadfe55e4b9ba37d03c5d3308ddd8fe00792fab7c6b47c97655c07 + md5: ddb5dc7ac1ae424ca2b7a847765a0cb9 depends: - __osx >=11.0 - aws-c-common >=0.10.3,<0.10.4.0a0 - - aws-c-http >=0.9.1,<0.9.2.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 license: Apache-2.0 license_family: Apache - size: 134573 - timestamp: 1731734281038 + size: 135051 + timestamp: 1733688394116 - kind: conda name: aws-c-mqtt version: 0.11.0 - build: h7bd072d_8 - build_number: 8 + build: h56e9cca_9 + build_number: 9 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h7bd072d_8.conda - sha256: 51d3d87a47c642096e2ce389a169aec2e26958042e9130857552a12d65a19045 - md5: 0e9d67838114c0dbd267a9311268b331 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h56e9cca_9.conda + sha256: c93c29b58482ca72d3f9a5710ad92194e809a9de988bcdcbae9ddd0f8ed484a6 + md5: f75642fe24ae4131f554cbacd6df53e3 depends: - __glibc >=2.17,<3.0.a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - - aws-c-http >=0.9.1,<0.9.2.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 194447 - timestamp: 1731734668760 + size: 194705 + timestamp: 1733688770217 - kind: conda name: aws-c-s3 version: 0.7.5 - build: h29aef15_0 + build: h3c51cf6_2 + build_number: 2 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.5-h29aef15_0.conda - sha256: 2aef28beec88df561f7f4d0f7ec7fea6cf54a1d6c8516fd243a4269d320f06cb - md5: 98609602eb077c7b5225d3aa1467f789 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.5-h3c51cf6_2.conda + sha256: 98a2df8a5068183e55b4c6914a3513d403300be20c960842a9a229546b8e8e52 + md5: e326ddae95b3ec96a31aded04c834175 depends: - aws-c-auth >=0.8.0,<0.8.1.0a0 - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - - aws-c-http >=0.9.1,<0.9.2.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - libgcc >=13 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 117067 - timestamp: 1733565203669 + size: 117896 + timestamp: 1733694002769 - kind: conda name: aws-c-s3 version: 0.7.5 - build: h3a84f74_0 + build: h6ad95d4_2 + build_number: 2 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.5-h3a84f74_0.conda - sha256: eb2534517bdaccf2953716e49e8b918ffe7e78a524c6321fae30c3dd7f46cb0d - md5: a13702b87657cf2d0cdd338fe55f4ba1 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.5-h6ad95d4_2.conda + sha256: 103a478b18ead8f79aae9a4966b2879e9fbcfb0aa3b2e6c9b2811a76ba34610e + md5: 682c079ec089d47bb7142f12b3275e4f depends: - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - - aws-c-http >=0.9.1,<0.9.2.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - libgcc >=13 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 113877 - timestamp: 1733565162763 + size: 113741 + timestamp: 1733693956970 - kind: conda name: aws-c-s3 version: 0.7.5 - build: h840aca7_0 + build: hca3a6f1_2 + build_number: 2 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.5-h840aca7_0.conda - sha256: 30782a1392883d26a441fc2857985136888aa454efbea8b85bbcbb7a7ad3d2e2 - md5: 1d33c89e2462b6b0056bfb883b76d2fb + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.5-hca3a6f1_2.conda + sha256: 53c4dc6e360ed6e1242c20fa43f7bfe67a41215e51cafab27dbd8aa91333040c + md5: 0b4e647cae3ce85ec991c6e3b8d12bda depends: - __osx >=11.0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - - aws-c-http >=0.9.1,<0.9.2.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 license: Apache-2.0 license_family: Apache - size: 98296 - timestamp: 1733565277623 + size: 97530 + timestamp: 1733694097526 - kind: conda name: aws-c-sdkutils version: 0.2.1 @@ -1727,19 +1725,20 @@ packages: - kind: conda name: aws-crt-cpp version: 0.29.7 - build: h6c346da_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.7-h6c346da_1.conda - sha256: 9a60a93dbe896acf533dded5f4ae11546ff4fb6a9fb0e06db6d915206ba0b1f2 - md5: cf87fc73eee6dbfc12dec79444d5dfc0 + build: h318f0b1_3 + build_number: 3 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.7-h318f0b1_3.conda + sha256: 35100ad81adf31aa4e73ac2956e9a8ff277cc57d0db2db2f0e9c51012175eadd + md5: 9748d0527695a64aa2eb45e891ea188d depends: + - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - - aws-c-http >=0.9.1,<0.9.2.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - aws-c-s3 >=0.7.5,<0.7.6.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 @@ -1747,59 +1746,58 @@ packages: - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 283237 - timestamp: 1733588714381 + size: 355045 + timestamp: 1733744656604 - kind: conda name: aws-crt-cpp version: 0.29.7 - build: ha310de4_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.7-ha310de4_1.conda - sha256: b5ab81d50b6cc2ff70dd56a16b5b9e1cbe8c69e9e357db2abf925d03c5d0133a - md5: 77769ed013cbf8824c1927407ea03c69 + build: hacb6b83_3 + build_number: 3 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.7-hacb6b83_3.conda + sha256: 6c0ece3ca494c2220fc052e608d52ea52bb361e536a14a1b3b36ebeede9de8b9 + md5: 27ce3ed5b7e55370a9fea2dda2b3245a depends: - - __osx >=11.0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - - aws-c-http >=0.9.1,<0.9.2.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - aws-c-s3 >=0.7.5,<0.7.6.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - - libcxx >=18 + - libgcc >=13 + - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 236862 - timestamp: 1733588815005 + size: 283993 + timestamp: 1733744571881 - kind: conda name: aws-crt-cpp version: 0.29.7 - build: ha6b94fc_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.7-ha6b94fc_1.conda - sha256: 5907a2c370f94e5f63c17e4347525d21eb1c00fbd8b731d79ec1eb4e857689ca - md5: f5fb6f6283deb0b4d2c187ad4a7b6d4d + build: hc2c2bbc_3 + build_number: 3 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.7-hc2c2bbc_3.conda + sha256: 6a519151e7fa71fbc9d1cd3a526ea7591638af058a6cc0534e1cd418fd48b354 + md5: 5450324f7b48dff1f6ed5484bf830972 depends: - - __glibc >=2.17,<3.0.a0 + - __osx >=11.0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - - aws-c-http >=0.9.1,<0.9.2.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - aws-c-s3 >=0.7.5,<0.7.6.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - - libgcc >=13 - - libstdcxx >=13 + - libcxx >=18 license: Apache-2.0 license_family: Apache - size: 353873 - timestamp: 1733588735223 + size: 236331 + timestamp: 1733744737078 - kind: conda name: aws-sdk-cpp version: 1.11.458 @@ -2348,30 +2346,6 @@ packages: license: ISC size: 158482 timestamp: 1725019034582 -- kind: conda - name: cairo - version: 1.18.0 - build: hb4a6bf7_3 - build_number: 3 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/cairo-1.18.0-hb4a6bf7_3.conda - sha256: f7603b7f6ee7c6e07c23d77302420194f4ec1b8e8facfff2b6aab17c7988a102 - md5: 08bd0752f3de8a2d8a35fd012f09531f - depends: - - __osx >=11.0 - - fontconfig >=2.14.2,<3.0a0 - - fonts-conda-ecosystem - - freetype >=2.12.1,<3.0a0 - - icu >=75.1,<76.0a0 - - libcxx >=16 - - libglib >=2.80.3,<3.0a0 - - libpng >=1.6.43,<1.7.0a0 - - libzlib >=1.3.1,<2.0a0 - - pixman >=0.43.4,<1.0a0 - - zlib - license: LGPL-2.1-only or MPL-1.1 - size: 899126 - timestamp: 1721139203735 - kind: conda name: cairo version: 1.18.0 @@ -2433,6 +2407,30 @@ packages: license: LGPL-2.1-only or MPL-1.1 size: 983604 timestamp: 1721138900054 +- kind: conda + name: cairo + version: 1.18.2 + build: h6a3b0d2_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/cairo-1.18.2-h6a3b0d2_0.conda + sha256: fe941b50a60edb664f22de5fe48251c8b9fd2e844f6e35d7535e28a5d4f4f894 + md5: 830793d58ec68f117c51e1d8d6e2133a + depends: + - __osx >=11.0 + - fontconfig >=2.15.0,<3.0a0 + - fonts-conda-ecosystem + - freetype >=2.12.1,<3.0a0 + - icu >=75.1,<76.0a0 + - libcxx >=18 + - libexpat >=2.6.4,<3.0a0 + - libglib >=2.82.2,<3.0a0 + - libpng >=1.6.44,<1.7.0a0 + - libzlib >=1.3.1,<2.0a0 + - pixman >=0.43.4,<1.0a0 + - zlib + license: LGPL-2.1-only or MPL-1.1 + size: 894944 + timestamp: 1733698883301 - kind: conda name: certifi version: 2024.8.30 @@ -2658,19 +2656,20 @@ packages: - kind: conda name: deprecated version: 1.2.15 - build: pyhff2d567_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhff2d567_0.conda - sha256: 48182a27a8fd855db3a402ed914823802f94c3344c87b0d074facc51411296ee - md5: ca75e235b44ab995655fae392f99595e + url: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhd8ed1ab_1.conda + sha256: a20ebf2c9b02a6eb32412ceb5c4cffaae49417db7e75414a76417538293a9402 + md5: eaef2e94d5bd76f758545d172c1fda67 depends: - - python >=2.7 + - python >=3.9 - wrapt <2,>=1.10 license: MIT license_family: MIT - size: 14182 - timestamp: 1731836933516 + size: 14297 + timestamp: 1733662697343 - kind: conda name: dill version: 0.3.7 @@ -3632,14 +3631,13 @@ packages: timestamp: 1732707871414 - kind: conda name: httpx - version: 0.28.0 - build: pyhd8ed1ab_1 - build_number: 1 + version: 0.28.1 + build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_1.conda - sha256: 0b864abaa9f1443fc42368b4d2a4f4efb9971a53f961d1fe30fabd7fbdd76b27 - md5: 8a4a83ba566c6b5c718dd0531a362d01 + url: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda + sha256: cd0f1de3697b252df95f98383e9edb1d00386bfdd03fdf607fa42fe5fcb09950 + md5: d6989ead454181f4f9bc987d3dc4e285 depends: - anyio - certifi @@ -3648,8 +3646,8 @@ packages: - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 63203 - timestamp: 1733501478172 + size: 63082 + timestamp: 1733663449209 - kind: conda name: huggingface_hub version: 0.26.5 @@ -6866,50 +6864,47 @@ packages: timestamp: 1716828607917 - kind: conda name: libsqlite - version: 3.47.0 - build: hadc24fc_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.47.0-hadc24fc_1.conda - sha256: 8a9aadf996a2399f65b679c6e7f29139d5059f699c63e6d7b50e20db10c00508 - md5: b6f02b52a174e612e89548f4663ce56a + version: 3.47.2 + build: h3f77e49_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.47.2-h3f77e49_0.conda + sha256: f192f3c8973de9ec4c214990715f13b781965247a5cedf9162e7f9e699cfc3c4 + md5: 122d6f29470f1a991e85608e77e56a8a depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 + - __osx >=11.0 - libzlib >=1.3.1,<2.0a0 license: Unlicense - size: 875349 - timestamp: 1730208050020 + size: 850553 + timestamp: 1733762057506 - kind: conda name: libsqlite - version: 3.47.0 - build: hbaaea75_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.47.0-hbaaea75_1.conda - sha256: 5a96caa566c11e5a5ebdcdb86a0759a7fb27d3c5f42e6a0fd0d6023c1e935d9e - md5: 07a14fbe439eef078cc479deca321161 + version: 3.47.2 + build: h5eb1b54_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.47.2-h5eb1b54_0.conda + sha256: 885a27fa84a5a73ed9779168c02b6c386e2fc7a53f0566b32a09ceca146b42b4 + md5: d4bf59f8783a4a66c0aec568f6de3ff4 depends: - - __osx >=11.0 + - libgcc >=13 - libzlib >=1.3.1,<2.0a0 license: Unlicense - size: 837683 - timestamp: 1730208293578 + size: 1042182 + timestamp: 1733761913736 - kind: conda name: libsqlite - version: 3.47.0 - build: hc4a20ef_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.47.0-hc4a20ef_1.conda - sha256: 73e143fdb966b61cd25ab804d416d87dfce43ac684e0fac3ad8b1450796331ab - md5: a6b185aac10d08028340858f77231b23 + version: 3.47.2 + build: hee588c1_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.47.2-hee588c1_0.conda + sha256: 48af21ebc2cbf358976f1e0f4a0ab9e91dfc83d0ef337cf3837c6f5bc22fb352 + md5: b58da17db24b6e08bcbf8fed2fb8c915 depends: + - __glibc >=2.17,<3.0.a0 - libgcc >=13 - libzlib >=1.3.1,<2.0a0 license: Unlicense - size: 1041855 - timestamp: 1730208187962 + size: 873551 + timestamp: 1733761824646 - kind: conda name: libssh2 version: 1.11.1 @@ -7715,76 +7710,76 @@ packages: timestamp: 1733219945697 - kind: conda name: max - version: 24.6.0.dev2024120805 + version: 24.6.0.dev2024120905 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120805-release.conda - sha256: f2f1a4e4373ac62de23c41ce28e1483b45322cffe8aef91ef93ce0f65fe5f20d - md5: d41647f3009da6fe575321d46a741dfa - depends: - - max-core ==24.6.0.dev2024120805 release - - max-python >=24.6.0.dev2024120805,<25.0a0 - - mojo-jupyter ==24.6.0.dev2024120805 release - - mblack ==24.6.0.dev2024120805 release + url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120905-release.conda + sha256: 37a6103a6b2c7886ed5837d41a819f1a127eef7e810b2b5ecfb03f7caf263514 + md5: b13d61319f43570ce681408a1b27d9d5 + depends: + - max-core ==24.6.0.dev2024120905 release + - max-python >=24.6.0.dev2024120905,<25.0a0 + - mojo-jupyter ==24.6.0.dev2024120905 release + - mblack ==24.6.0.dev2024120905 release license: LicenseRef-Modular-Proprietary - size: 9916 - timestamp: 1733635043550 + size: 9911 + timestamp: 1733721408716 - kind: conda name: max-core - version: 24.6.0.dev2024120805 + version: 24.6.0.dev2024120905 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120805-release.conda - sha256: aebf26b21cebf2afdf9063203e542e5e635059c57c5fb9e74478b98f652f8e46 - md5: 620d81f38c5da882ee0799e26d86b0ad + url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120905-release.conda + sha256: 0f94138601ceab2c8b277c7d175d762840072cfdfd0ead7264fbd1ff9f70442d + md5: 00617be1a2fef13b5630d9cbe92f9d3c depends: - - mblack ==24.6.0.dev2024120805 release + - mblack ==24.6.0.dev2024120905 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 247607615 - timestamp: 1733634983707 + size: 247639885 + timestamp: 1733721408714 - kind: conda name: max-core - version: 24.6.0.dev2024120805 + version: 24.6.0.dev2024120905 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120805-release.conda - sha256: 1fc1554d9c39ed5bf22957f02418ee0df4ce4dfc033dd3ca54a7f20c8946b7b3 - md5: 6e7e581fe4e11d252e8729a6cc564b29 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120905-release.conda + sha256: 1aaf2ffb09d6a2aa6b65d76c381476eb88947470580a0d56909bfd578d5eb385 + md5: c7ff53814f0c254c75dc7ab8f0c66b38 depends: - - mblack ==24.6.0.dev2024120805 release + - mblack ==24.6.0.dev2024120905 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 251457302 - timestamp: 1733635043548 + size: 251498878 + timestamp: 1733721396377 - kind: conda name: max-core - version: 24.6.0.dev2024120805 + version: 24.6.0.dev2024120905 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120805-release.conda - sha256: f249a329a1b072ebd9cd365842d54892d4d46a8fb642ab8fb22ff26f211dddb7 - md5: 04d8f67fb1a7deb6147da14b60f668d3 + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120905-release.conda + sha256: 00cc8ce6adc131b858df51423201b8f028aa944ac09e56c563a1108c22eaccd2 + md5: 71554a4c0e81a1034908bc1cb716b30b depends: - - mblack ==24.6.0.dev2024120805 release + - mblack ==24.6.0.dev2024120905 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 212001315 - timestamp: 1733635167877 + size: 212030191 + timestamp: 1733721567995 - kind: conda name: max-python - version: 24.6.0.dev2024120805 + version: 24.6.0.dev2024120905 build: 3.12release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120805-3.12release.conda - sha256: cf488fd0ccfb5a4dbff0891f7dba0e92422a07b6c0047727ab7ebf6a65289e9f - md5: bf821eea63859972e28ce4635cff7dda + url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120905-3.12release.conda + sha256: 43245b47050208329e85a69f2af24d42c622e92e1542334a6106eaadb6cbf0ff + md5: 9a6037de6672120d1d6d53673b699d5b depends: - - max-core ==24.6.0.dev2024120805 release + - max-core ==24.6.0.dev2024120905 release - python 3.12.* - pillow - fastapi @@ -7806,18 +7801,18 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 123750844 - timestamp: 1733634983717 + size: 123751303 + timestamp: 1733721408724 - kind: conda name: max-python - version: 24.6.0.dev2024120805 + version: 24.6.0.dev2024120905 build: 3.12release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120805-3.12release.conda - sha256: 7fe8c12a6ac333dc6f3ea0132e07244131919597c3da16566a18d3657c478126 - md5: 5711b879e00dae9d692d6cf0bcad3717 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120905-3.12release.conda + sha256: fdedbc8a2ca34d0593e8b2175ca07c07d6d0564f138f535ebff02975ef463f55 + md5: bc9f6ce493d2beb1089e1e409bb373ba depends: - - max-core ==24.6.0.dev2024120805 release + - max-core ==24.6.0.dev2024120905 release - python 3.12.* - pillow - fastapi @@ -7839,18 +7834,18 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 127399399 - timestamp: 1733635043558 + size: 127400047 + timestamp: 1733721396388 - kind: conda name: max-python - version: 24.6.0.dev2024120805 + version: 24.6.0.dev2024120905 build: 3.12release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120805-3.12release.conda - sha256: 21cd561dcda4c668566b3e681e44823f6163abb4747f30e4851efb9d04eea1eb - md5: 8737c1d7ff7f04e887c4d80139e2a273 + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120905-3.12release.conda + sha256: 0cd6b2e3bdc78483665045e91b8db7a8a3d6c85fbf4b8a44d6eb742a46361af1 + md5: c1b7eb7d1a43e28224bf41220ece9b58 depends: - - max-core ==24.6.0.dev2024120805 release + - max-core ==24.6.0.dev2024120905 release - python 3.12.* - pillow - fastapi @@ -7872,17 +7867,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 112431285 - timestamp: 1733635167881 + size: 112450493 + timestamp: 1733721567998 - kind: conda name: mblack - version: 24.6.0.dev2024120805 + version: 24.6.0.dev2024120905 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120805-release.conda - sha256: e5f3d6f9e9e7acb97ff8364ddb90e34e38bfe68ba382b3dffacfbf4b9d6c812a - md5: 8a48ed658740aaf0063c754fd35e9cce + url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120905-release.conda + sha256: e302e262a58592b5b8614829237760967d685cb20a44e54981916eb6c2b6b7a2 + md5: b34a59910660011ad1f42bfc1ae4ae54 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -7892,8 +7887,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130744 - timestamp: 1733635043555 + size: 130740 + timestamp: 1733721408720 - kind: conda name: mdurl version: 0.1.2 @@ -7912,21 +7907,21 @@ packages: timestamp: 1733255681319 - kind: conda name: mojo-jupyter - version: 24.6.0.dev2024120805 + version: 24.6.0.dev2024120905 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120805-release.conda - sha256: 1535cecc4930833e604ed39a4450b421914312f4abbb4fc6af9e7aedd5293ffd - md5: ad285352ec9e9061d8facbf62f708d9d + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120905-release.conda + sha256: bb71277508a55875b6011651bc825599e26a47145ab1e9c4e7c2abd853200a00 + md5: 4fc85c9cb1efe841b69d339d4da5b3a1 depends: - - max-core ==24.6.0.dev2024120805 release + - max-core ==24.6.0.dev2024120905 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 11369 - timestamp: 1733635043556 + size: 11366 + timestamp: 1733721408720 - kind: conda name: mpg123 version: 1.32.9 @@ -8310,21 +8305,21 @@ packages: - kind: conda name: opentelemetry-api version: 1.28.2 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.28.2-pyhd8ed1ab_0.conda - sha256: e267ed59ea8f357c3471defef796ce4f4555eacd9ee0ed2d47d3dd539ee7ee2f - md5: f1307fb38a8fd2220def45ec1691a21c + url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.28.2-pyhd8ed1ab_1.conda + sha256: 780dbc942a6075db7bdbaf556023be50c34a6111a99e465878d7bab0e5e0d7f4 + md5: a06f1e9d97c98d26f06675236c9ea554 depends: - deprecated >=1.2.6 - importlib-metadata >=6.0.0,<7.1.0 - - python >=3.8 + - python >=3.9 - setuptools >=16.0 license: Apache-2.0 - license_family: APACHE - size: 44014 - timestamp: 1731985724169 + size: 44242 + timestamp: 1733734361129 - kind: conda name: opentelemetry-exporter-otlp-proto-common version: 1.28.2 @@ -8420,20 +8415,20 @@ packages: - kind: conda name: opentelemetry-semantic-conventions version: 0.49b2 - build: pyh10f6f8f_0 + build: pyh3cfb1c2_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh10f6f8f_0.conda - sha256: 5e3869ad66082b16d56bab8219fad0c8c09090ec93eb866327eed788fe5c9340 - md5: d95dd6e8a70417e394bb16dad5cff408 + url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh3cfb1c2_1.conda + sha256: 28180ffa6611f117c782c7d72066b50332c1df0bdcfed0dea4e446a20c4b7d10 + md5: e0ada55d18e6bd5a8e61943b4b5d3a8f depends: - deprecated >=1.2.6 - opentelemetry-api 1.28.2 - python >=3.9 license: Apache-2.0 - license_family: APACHE - size: 81534 - timestamp: 1732067304518 + size: 81099 + timestamp: 1733749104727 - kind: conda name: opusfile version: '0.12' @@ -8783,48 +8778,47 @@ packages: timestamp: 1729065920347 - kind: conda name: pixman - version: 0.43.2 - build: h59595ed_0 + version: 0.44.2 + build: h29eaf8c_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.43.2-h59595ed_0.conda - sha256: 366d28e2a0a191d6c535e234741e0cd1d94d713f76073d8af4a5ccb2a266121e - md5: 71004cbf7924e19c02746ccde9fd7123 + url: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.44.2-h29eaf8c_0.conda + sha256: 747c58db800d5583fee78e76240bf89cbaeedf7ab1ef339c2990602332b9c4be + md5: 5e2a7acfa2c24188af39e7944e1b3604 depends: - - libgcc-ng >=12 - - libstdcxx-ng >=12 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 license: MIT - license_family: MIT - size: 386826 - timestamp: 1706549500138 + size: 381072 + timestamp: 1733698987122 - kind: conda name: pixman - version: 0.43.4 - build: h2f0025b_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/pixman-0.43.4-h2f0025b_0.conda - sha256: e145b0d89c800326a20d1afd86c74f9422b81549b17fe53add46c2fa43a4c93e - md5: 81b2ddea4b0eca188da9c5a7aa4b0cff + version: 0.44.2 + build: h2f9eb0b_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/pixman-0.44.2-h2f9eb0b_0.conda + sha256: 28855d4cb2d9fc9a6bd9196dadbaecd6868ec706394cec2f88824a61ba4b1bc0 + md5: fa8e429fdb9e5b757281f69b8cc4330b depends: - - libgcc-ng >=12 - - libstdcxx-ng >=12 + - __osx >=11.0 + - libcxx >=18 license: MIT - license_family: MIT - size: 295064 - timestamp: 1709240909660 + size: 201076 + timestamp: 1733699127167 - kind: conda name: pixman - version: 0.43.4 - build: hebf3989_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/pixman-0.43.4-hebf3989_0.conda - sha256: df0ba2710ccdea5c909b63635529797f6eb3635b6fb77ae9cb2f183d08818409 - md5: 0308c68e711cd295aaa026a4f8c4b1e5 + version: 0.44.2 + build: h86a87f0_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/pixman-0.44.2-h86a87f0_0.conda + sha256: 289c88d26530e427234adf7a8eb11e762d2beaf3c0a337c1c9887f60480e33e1 + md5: 95689fc369832398e82d17c56ff5df8a depends: - - libcxx >=16 + - libgcc >=13 + - libstdcxx >=13 license: MIT - license_family: MIT - size: 198755 - timestamp: 1709239846651 + size: 288697 + timestamp: 1733700860569 - kind: conda name: platformdirs version: 4.3.6 @@ -10761,12 +10755,12 @@ packages: timestamp: 1699202167581 - kind: conda name: tokenizers - version: 0.20.4 + version: 0.21.0 build: py312h8360d73_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.20.4-py312h8360d73_0.conda - sha256: 7b59759739b5426e17825b26d6ce9df487d1dc254d4e6a92b14a97107eb6daca - md5: 035c6de3c821559bf1af5ec072593bfd + url: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.21.0-py312h8360d73_0.conda + sha256: 4f504a5e9d77c6d88a8f735c4319429d8bf40b742384f908a2efe0a09acc3cc5 + md5: f953aa733207f3d37acf4a3efbedba89 depends: - __glibc >=2.17,<3.0.a0 - huggingface_hub >=0.16.4,<1.0 @@ -10779,16 +10773,16 @@ packages: - __glibc >=2.17 license: Apache-2.0 license_family: APACHE - size: 2259332 - timestamp: 1732657962717 + size: 2258007 + timestamp: 1732734202127 - kind: conda name: tokenizers - version: 0.20.4 + version: 0.21.0 build: py312ha0d6ea1_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.20.4-py312ha0d6ea1_0.conda - sha256: 6dbb7e5f3f152210817e8658bc454056e464dee16fd9757508f2417edd44d8b8 - md5: b135e3d9178b255993ea4d72741192f8 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.21.0-py312ha0d6ea1_0.conda + sha256: ef0f4d4e2c798b1821187ea0ba4c86484e48abaa0e9a19fe68030fa7ff5dde84 + md5: 077f48c9e0c08a30d842e15c51df4143 depends: - huggingface_hub >=0.16.4,<1.0 - libgcc >=13 @@ -10801,16 +10795,16 @@ packages: - __glibc >=2.17 license: Apache-2.0 license_family: APACHE - size: 2330899 - timestamp: 1732658129796 + size: 2331194 + timestamp: 1732734303196 - kind: conda name: tokenizers - version: 0.20.4 + version: 0.21.0 build: py312hf3e4074_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.20.4-py312hf3e4074_0.conda - sha256: fd86f8a5d41622e8f5092913dea48f41de86258583ee449045905a725672fdc2 - md5: 40e8bc575721b4da76712e90e4a9b7fa + url: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.21.0-py312hf3e4074_0.conda + sha256: 5d395333fcb22dc611140286c1f2ea8b3fa220a4931c583587cb612238091555 + md5: 4c732c74b485ef7ac8ec1c548dd45e8e depends: - __osx >=11.0 - huggingface_hub >=0.16.4,<1.0 @@ -10822,8 +10816,8 @@ packages: - __osx >=11.0 license: Apache-2.0 license_family: APACHE - size: 1933005 - timestamp: 1732658406859 + size: 1931389 + timestamp: 1732734727624 - kind: conda name: tornado version: 6.4.2 @@ -10907,13 +10901,13 @@ packages: timestamp: 1733367480074 - kind: conda name: transformers - version: 4.46.3 + version: 4.47.0 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/transformers-4.46.3-pyhd8ed1ab_0.conda - sha256: 6ae73c0d1197812d8fd6a2c64309fe9abe822feb66b2d330cc61ce9fa60dee0c - md5: 457af723774f077a128515a6fdd536a2 + url: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.0-pyhd8ed1ab_0.conda + sha256: b9cf6ae5fcd6c78dcaa24ebfd41580a4a10b0649ac726a44d3521f70fdece218 + md5: 495745078b8e18fe2dcc3267f4baae0d depends: - datasets !=2.5.0 - filelock @@ -10925,12 +10919,12 @@ packages: - regex !=2019.12.17 - requests - safetensors >=0.4.1 - - tokenizers >=0.20,<0.21 + - tokenizers >=0.21,<0.22 - tqdm >=4.27 license: Apache-2.0 license_family: APACHE - size: 3622494 - timestamp: 1731981383171 + size: 3721837 + timestamp: 1733708797762 - kind: conda name: typer version: 0.15.1 @@ -11561,69 +11555,36 @@ packages: - kind: conda name: xorg-libxrender version: 0.9.11 - build: h57736b2_1 - build_number: 1 + build: h86ecc28_2 + build_number: 2 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxrender-0.9.11-h57736b2_1.conda - sha256: 50c000a26e828313b668902c2ae5ff7956d9d34418b4fc6fc15f73cba31b45e0 - md5: 19fb476dc5cdd51b67719a6342fab237 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxrender-0.9.11-h86ecc28_2.conda + sha256: 7862c148e87eb8da9c09aafec22bd63bbd1ee222e1437e1df923f1ff838f60e4 + md5: eef57c0c07175e97d976c2cdfd235c43 depends: - libgcc >=13 - - xorg-libx11 >=1.8.9,<2.0a0 - - xorg-xorgproto + - xorg-libx11 >=1.8.10,<2.0a0 license: MIT license_family: MIT - size: 38052 - timestamp: 1727530023529 + size: 38333 + timestamp: 1733755940446 - kind: conda name: xorg-libxrender version: 0.9.11 - build: hb9d3cd8_1 - build_number: 1 + build: hb9d3cd8_2 + build_number: 2 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrender-0.9.11-hb9d3cd8_1.conda - sha256: f1217e902c0b1d8bc5d3ce65e483ebf38b049c823c9117b7198cfb16bd2b9143 - md5: a7a49a8b85122b49214798321e2e96b4 + url: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrender-0.9.11-hb9d3cd8_2.conda + sha256: a2f533fe2374789413a9dfa1369322573910f4b010fd24386cdd1c5cd977a087 + md5: eef3132295d92678c17ffc8b114b8371 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - xorg-libx11 >=1.8.10,<2.0a0 - - xorg-xorgproto - license: MIT - license_family: MIT - size: 37780 - timestamp: 1727529943015 -- kind: conda - name: xorg-xorgproto - version: '2024.1' - build: h86ecc28_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-xorgproto-2024.1-h86ecc28_1.conda - sha256: 3dbbf4cdb5ad82d3479ab2aa68ae67de486a6d57d67f0402d8e55869f6f13aec - md5: 91cef7867bf2b47f614597b59705ff56 - depends: - - libgcc >=13 - license: MIT - license_family: MIT - size: 566948 - timestamp: 1726847598167 -- kind: conda - name: xorg-xorgproto - version: '2024.1' - build: hb9d3cd8_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/xorg-xorgproto-2024.1-hb9d3cd8_1.conda - sha256: 1316680be6edddee0156b86ec1102fc8286f51c1a5440366ed1db596a2dc3731 - md5: 7c21106b851ec72c037b162c216d8f05 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 license: MIT license_family: MIT - size: 565425 - timestamp: 1726846388217 + size: 37638 + timestamp: 1733755897245 - kind: conda name: xxhash version: 0.8.2 diff --git a/examples/magic.lock b/examples/magic.lock index f1671e6345..b0d6852f57 100644 --- a/examples/magic.lock +++ b/examples/magic.lock @@ -14,18 +14,18 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-hb88c0a9_10.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.0-hecf86a2_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-ha4f867e_12.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.1-hecf86a2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.10.3-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.3.0-hf42f96a_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.0-h1ffe551_7.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.1-hab05fe4_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.2-hdeadb07_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h7bd072d_8.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.5-h3a84f74_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.0-h873f81a_8.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.2-ha5a3ca8_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-ha35c7d9_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h56e9cca_9.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.5-h6ad95d4_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.1-hf42f96a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-hf42f96a_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.7-ha6b94fc_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.7-h318f0b1_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-hac138a2_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.10.0-h113e628_0.conda @@ -43,7 +43,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda @@ -63,7 +63,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/httptools-0.6.4-py311h9ecbd09_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda @@ -114,7 +114,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.2-h5b01275_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.47.0-hadc24fc_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.47.2-hee588c1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hf672d98_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-hc0a3c3a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_1.conda @@ -131,12 +131,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.9.4-hcb278e6_0.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.dev2024120805-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120805-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120805-3.11release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120905-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120905-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120905-3.11release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120905-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.dev2024120805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120905-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py311h2dc5d0c_1.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 @@ -144,13 +144,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py311h64a7726_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.2-h488ebb8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.0-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.28.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.28.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.28.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-prometheus-1.12.0rc1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.28.2-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh10f6f8f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh3cfb1c2_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/orc-2.0.3-he039a57_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.3-py311h7db5c69_1.conda @@ -196,11 +196,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.1.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.20.4-py311h182c674_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.21.0-py311h182c674_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py311h9ecbd09_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.46.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda @@ -231,18 +231,18 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-hac900a4_10.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.0-h35473ba_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-h89ba3c0_12.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.1-h35473ba_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-common-0.10.3-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-compression-0.3.0-h4c7db1d_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-event-stream-0.5.0-h9bacb8c_7.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.1-hf4e072c_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.2-h10eb1bc_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h28a5e6a_8.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.5-h29aef15_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-event-stream-0.5.0-hba6c15e_8.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.2-h697be72_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-h0155602_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h2cca791_9.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.5-h3c51cf6_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.1-h4c7db1d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h4c7db1d_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.7-h6c346da_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.7-hacb6b83_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h5e41cbe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-core-cpp-1.14.0-h1887c18_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-identity-cpp-1.10.0-h47b0b28_0.conda @@ -260,7 +260,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda @@ -280,7 +280,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/httptools-0.6.4-py311ha879c10_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda @@ -332,7 +332,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.2-h029595c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.20-h68df207_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.47.0-hc4a20ef_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.47.2-h5eb1b54_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libssh2-1.11.1-ha41c0db_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_1.conda @@ -349,12 +349,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.9.4-hd600fc2_0.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.dev2024120805-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120805-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120805-3.11release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120905-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120905-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120905-3.11release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120905-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.dev2024120805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120905-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multidict-6.1.0-py311h58d527c_1.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 @@ -362,13 +362,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py311h69ead2a_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openjpeg-2.5.2-h0d9d63b_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.0-h86ecc28_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.28.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.28.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.28.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-prometheus-1.12.0rc1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.28.2-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh10f6f8f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh3cfb1c2_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/orc-2.0.3-h90de224_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pandas-2.2.3-py311h848c333_1.conda @@ -414,11 +414,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.1.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.20.4-py311h5e37e04_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.21.0-py311h5e37e04_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py311h5487e9b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.46.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda @@ -448,18 +448,18 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-h9b725a8_10.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.0-h5d7ee29_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-h35eccd0_12.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.1-h5d7ee29_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.10.3-h5505292_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-compression-0.3.0-h5d7ee29_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.0-h13ead76_7.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.1-hf483d09_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.2-h39f8ad8_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h68a0d7e_8.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.5-h840aca7_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.0-h8ec3972_8.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.2-h48c6dea_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-h30cefa2_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h3aaadf4_9.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.5-hca3a6f1_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.1-h5d7ee29_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-h5d7ee29_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.7-ha310de4_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.7-hc2c2bbc_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-he4d6490_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.14.0-hd50102c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.10.0-hc602bab_0.conda @@ -477,7 +477,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda @@ -497,7 +497,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/httptools-0.6.4-py311h917b07b_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda @@ -544,7 +544,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.2-h8f0b736_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h2348fd5_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.47.0-hbaaea75_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.47.2-h3f77e49_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.1-h9cc3647_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libthrift-0.21.0-h64651cc_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-ha962b0a_2.conda @@ -558,12 +558,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.9.4-hb7217d7_0.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.dev2024120805-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120805-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120805-3.11release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120905-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120905-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120905-3.11release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120905-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.dev2024120805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120905-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 @@ -571,13 +571,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py311h7125741_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openjpeg-2.5.2-h9f1df11_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.0-h39f12f2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.28.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.28.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.28.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-prometheus-1.12.0rc1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.28.2-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh10f6f8f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh3cfb1c2_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/orc-2.0.3-h121fd32_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.3-py311h9cb3ce9_1.conda @@ -622,11 +622,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.1.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.20.4-py311h82b0fb8_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.21.0-py311h82b0fb8_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py311h917b07b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.46.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda @@ -859,107 +859,104 @@ packages: - kind: conda name: aws-c-auth version: 0.8.0 - build: h9b725a8_10 - build_number: 10 + build: h35eccd0_12 + build_number: 12 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-h9b725a8_10.conda - sha256: 63cb8c25e0a26be4261d4271de525e7e33aefe9d9b001b8abfa5c9ac69c3dab3 - md5: 17c90d9eb8c6842fd739dc5445ce9962 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-h35eccd0_12.conda + sha256: 40ca48aee5f3ff0d3ffd64625dacb019104a9a2ee24cd54052cde6fe4cbc8349 + md5: 1109d5293b724ca16b61452accfdb442 depends: - __osx >=11.0 - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - - aws-c-http >=0.9.1,<0.9.2.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 license: Apache-2.0 license_family: Apache - size: 92355 - timestamp: 1731733738919 + size: 92279 + timestamp: 1733611476546 - kind: conda name: aws-c-auth version: 0.8.0 - build: hac900a4_10 - build_number: 10 + build: h89ba3c0_12 + build_number: 12 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-hac900a4_10.conda - sha256: 85c8500ae0570f0d39e6661a120c653e43f0f5f984e2954c44fd358a87776892 - md5: 9ecaef75ebd666dda7caa79154183b02 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-h89ba3c0_12.conda + sha256: 021451014fb5ee24601052d84db8d5babbce5085959ba777b540db4e33bde360 + md5: c0e2e6c3aa8c309af0ba09fc7d949407 depends: - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - - aws-c-http >=0.9.1,<0.9.2.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 111853 - timestamp: 1731733547677 + size: 112242 + timestamp: 1733611425746 - kind: conda name: aws-c-auth version: 0.8.0 - build: hb88c0a9_10 - build_number: 10 + build: ha4f867e_12 + build_number: 12 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-hb88c0a9_10.conda - sha256: d2837a84e6bd7d993a83e79f9e240e1465e375f3d57149ea5b1927c6a4133bcc - md5: 409b7ee6d3473cc62bda7280f6ac20d0 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-ha4f867e_12.conda + sha256: b9355bedf43c857a2d1986ebe7d61e615218f2171d163b509633d6c0c988d2dc + md5: d889de56d3be691063b71eb826470e29 depends: - __glibc >=2.17,<3.0.a0 - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - - aws-c-http >=0.9.1,<0.9.2.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 107163 - timestamp: 1731733534767 + size: 107663 + timestamp: 1733611397256 - kind: conda name: aws-c-cal - version: 0.8.0 - build: h35473ba_2 - build_number: 2 + version: 0.8.1 + build: h35473ba_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.0-h35473ba_2.conda - sha256: 3327a9e65ec531b0c55d17bbcdc436b4e641af1f293d1c2f50e0f16aa79fde60 - md5: 48dc0b3576513622673d3f5f3d163b62 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.1-h35473ba_0.conda + sha256: c2d59d74e167b6df3c1a7addf0d37080b69a6b3dee2a30b3f2171a5d26c5a691 + md5: 97c0ccb4d43d880b38f237e746c29ead depends: - aws-c-common >=0.10.3,<0.10.4.0a0 - libgcc >=13 - openssl >=3.3.1,<4.0a0 license: Apache-2.0 license_family: Apache - size: 49714 - timestamp: 1731678553709 + size: 49808 + timestamp: 1732038238504 - kind: conda name: aws-c-cal - version: 0.8.0 - build: h5d7ee29_2 - build_number: 2 + version: 0.8.1 + build: h5d7ee29_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.0-h5d7ee29_2.conda - sha256: 2a8c09b33400cf2b7d658e63fd5a6f9b6e9626458f6213b904592fc15220bc92 - md5: 92734dad83d22314205ba73b679710d2 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.1-h5d7ee29_0.conda + sha256: 42d5e9fb695bc3b280ed7e625dcda110b6780ee471e227f1b92afce71ae4972c + md5: fc51a61831a676fe6f922450f51ab6af depends: - __osx >=11.0 - aws-c-common >=0.10.3,<0.10.4.0a0 - openssl >=3.3.1,<4.0a0 license: Apache-2.0 license_family: Apache - size: 39966 - timestamp: 1731678721786 + size: 40047 + timestamp: 1732038304022 - kind: conda name: aws-c-cal - version: 0.8.0 - build: hecf86a2_2 - build_number: 2 + version: 0.8.1 + build: hecf86a2_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.0-hecf86a2_2.conda - sha256: 220a37955c120bf2f565fbd5320a82fc4c8b550b2449294bc0509c296cfcb9fa - md5: c54459d686ad9d0502823cacff7e8423 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.1-hecf86a2_0.conda + sha256: 12cc2087503f4f0d3a5db84e791fb5e585866da728f888aa76e14330a092a681 + md5: 8350795be14a92d68847c0d4f3c1d59f depends: - __glibc >=2.17,<3.0.a0 - aws-c-common >=0.10.3,<0.10.4.0a0 @@ -967,8 +964,8 @@ packages: - openssl >=3.3.1,<4.0a0 license: Apache-2.0 license_family: Apache - size: 47477 - timestamp: 1731678510949 + size: 47569 + timestamp: 1732038156682 - kind: conda name: aws-c-common version: 0.10.3 @@ -1064,291 +1061,294 @@ packages: - kind: conda name: aws-c-event-stream version: 0.5.0 - build: h13ead76_7 - build_number: 7 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.0-h13ead76_7.conda - sha256: 386965fab5f0bed4a6109cdba32579f16bee1b0f76ce1db840ce6f7070188f9f - md5: 55a901b6d4fb9ce1bc8328925b229f0b + build: h873f81a_8 + build_number: 8 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.0-h873f81a_8.conda + sha256: 589f9a04c4c7a919410dde75ce93a6986efad6ed522ecd8e5c9c587ac18f0d34 + md5: 32bdd50b43fcc435a8dc5a3c66aafef0 depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - - libcxx >=18 + - libgcc >=13 + - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 47528 - timestamp: 1731714690911 + size: 54020 + timestamp: 1731839177415 - kind: conda name: aws-c-event-stream version: 0.5.0 - build: h1ffe551_7 - build_number: 7 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.0-h1ffe551_7.conda - sha256: 3b780d6483baa889e8df5aa66ab3c439a9c81331cf2a4799e373f4174768ddd9 - md5: 7cce4dfab184f4bbdfc160789251b3c5 + build: h8ec3972_8 + build_number: 8 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.0-h8ec3972_8.conda + sha256: 81b98fc39e64d090af23b11621e467b4f943a19f61dda0fed5ad6397f06de5c7 + md5: ced9c97ddf61e4222d548e8bcc863b87 depends: - - __glibc >=2.17,<3.0.a0 + - __osx >=11.0 - aws-c-common >=0.10.3,<0.10.4.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - - libgcc >=13 - - libstdcxx >=13 + - libcxx >=18 license: Apache-2.0 license_family: Apache - size: 53500 - timestamp: 1731714597524 + size: 47491 + timestamp: 1731839300212 - kind: conda name: aws-c-event-stream version: 0.5.0 - build: h9bacb8c_7 - build_number: 7 + build: hba6c15e_8 + build_number: 8 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-event-stream-0.5.0-h9bacb8c_7.conda - sha256: 2b7bb475330942d94bc359171df19d0cf8b326f15c0c7903a59da54a8add621e - md5: 694020125b66632d6577456d2d9d3c74 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-event-stream-0.5.0-hba6c15e_8.conda + sha256: d3b74580045ee9d54a134ab1e5e00082d5d8a466980e94acc153188ee7375d08 + md5: 102f8b54630d79aff5e0c489f40f926e depends: - aws-c-common >=0.10.3,<0.10.4.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 55054 - timestamp: 1731714599360 + size: 55354 + timestamp: 1731839242373 - kind: conda name: aws-c-http - version: 0.9.1 - build: hab05fe4_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.1-hab05fe4_2.conda - sha256: 90a325b6f5371dd2203b643de646967fe57a4bcbbee8c91086abbf9dd733d59a - md5: fb409f7053fa3dbbdf6eb41045a87795 + version: 0.9.2 + build: h48c6dea_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.2-h48c6dea_1.conda + sha256: cb68d557af1bdcbef668574836fbf39c4df0e4f377258e4d5bd14196acf9b992 + md5: a28dd36a1da76042bfb5579005cc6728 depends: - - __glibc >=2.17,<3.0.a0 - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - __osx >=11.0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - aws-c-compression >=0.3.0,<0.3.1.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 - - libgcc >=13 + - aws-c-io >=0.15.3,<0.15.4.0a0 license: Apache-2.0 license_family: Apache - size: 196945 - timestamp: 1731714483279 + size: 152660 + timestamp: 1732110368931 - kind: conda name: aws-c-http - version: 0.9.1 - build: hf483d09_2 - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.1-hf483d09_2.conda - sha256: fca9ed0f0895bab9bf737c8d8a3314556cb893d45c40f0656f21a93502db3089 - md5: d880c40b8fc7d07374c036f93f1359d2 + version: 0.9.2 + build: h697be72_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.2-h697be72_1.conda + sha256: 4d6557a00e74649301da78d7de7d108882ce89eb9d6c87efce30789b53a617cf + md5: a8b1a2c11a93e615f6e8f33175ff8ff0 depends: - - __osx >=11.0 - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - aws-c-compression >=0.3.0,<0.3.1.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 153315 - timestamp: 1731714621306 + size: 190344 + timestamp: 1732110425530 - kind: conda name: aws-c-http - version: 0.9.1 - build: hf4e072c_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.1-hf4e072c_2.conda - sha256: b9a262451fc91d2fd4ccfcb6dc11ac61d0152c0db765bfe8d089e3e1b70c2150 - md5: fddc197912c16cb95276077f6c7917c5 + version: 0.9.2 + build: ha5a3ca8_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.2-ha5a3ca8_1.conda + sha256: 8ecb3d8411f58db4686635aedfe5d60b2b8870f9f9cafb471f3878dc61d21596 + md5: b2e017f8a4781ad3af9166edf10b65a8 depends: - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - __glibc >=2.17,<3.0.a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - aws-c-compression >=0.3.0,<0.3.1.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 190363 - timestamp: 1731714613945 + size: 197338 + timestamp: 1732110324356 - kind: conda name: aws-c-io - version: 0.15.2 - build: h10eb1bc_2 - build_number: 2 + version: 0.15.3 + build: h0155602_1 + build_number: 1 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.2-h10eb1bc_2.conda - sha256: b8e4206ee1fa58453535c1c08c6aca5bdc92cde026bf7ec20d038786f813239b - md5: 7cdf478bb4feae1a93319f6e3381b8a9 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-h0155602_1.conda + sha256: 7b8d97d51e5bb80191e07f16cac6f59068be30bf5906925a8f4159b3aab9093c + md5: 431c201b11eee90fd120844557a62b02 depends: - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - libgcc >=13 - s2n >=1.5.9,<1.5.10.0a0 license: Apache-2.0 license_family: Apache - size: 162624 - timestamp: 1731702570075 + size: 161664 + timestamp: 1732097310449 - kind: conda name: aws-c-io - version: 0.15.2 - build: h39f8ad8_2 - build_number: 2 + version: 0.15.3 + build: h30cefa2_1 + build_number: 1 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.2-h39f8ad8_2.conda - sha256: b14e32f024f6be1610dccfdb6371e101cba204d24f37c2a63d9b6380ac74ac17 - md5: 3b49f1dd8f20bead8b222828cfdad585 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-h30cefa2_1.conda + sha256: d6f8d42259ca11507bd912b3cd3ff1a65d6d8c7ff67ae9ee9df1686c9bebbbcc + md5: 8b8dc361de09e5b6227165a876e55cb7 depends: - __osx >=11.0 - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 license: Apache-2.0 license_family: Apache - size: 137610 - timestamp: 1731702839896 + size: 136662 + timestamp: 1732097382517 - kind: conda name: aws-c-io - version: 0.15.2 - build: hdeadb07_2 - build_number: 2 + version: 0.15.3 + build: ha35c7d9_1 + build_number: 1 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.2-hdeadb07_2.conda - sha256: 1636136a5d882b4aaa13ea8b7de8cf07038a6878872e3c434df9daf478cee594 - md5: 461a1eaa075fd391add91bcffc9de0c1 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-ha35c7d9_1.conda + sha256: 2e9e13ed54f6da22ee5d06622f4165bcca253411997dad62225aecc54b25c0db + md5: 97960f380abe1ba3157fe63312e35b07 depends: - __glibc >=2.17,<3.0.a0 - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - libgcc >=13 - s2n >=1.5.9,<1.5.10.0a0 license: Apache-2.0 license_family: Apache - size: 159368 - timestamp: 1731702542973 + size: 158012 + timestamp: 1732097264673 - kind: conda name: aws-c-mqtt version: 0.11.0 - build: h28a5e6a_8 - build_number: 8 + build: h2cca791_9 + build_number: 9 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h28a5e6a_8.conda - sha256: aad8c9a5c24953cdebf17efa7ec06b5639e14072d4fa70c5c0607d7ad913ba88 - md5: 5250ce3b5154c0347b7576015a7c6cef + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h2cca791_9.conda + sha256: c0ad176bab176a2983fb052de71037fc9357afd13b073511a7a440c1a8c6eff2 + md5: 090674d608454e979ce77bc8ee735868 depends: - aws-c-common >=0.10.3,<0.10.4.0a0 - - aws-c-http >=0.9.1,<0.9.2.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 169040 - timestamp: 1731734203264 + size: 169690 + timestamp: 1733688313938 - kind: conda name: aws-c-mqtt version: 0.11.0 - build: h68a0d7e_8 - build_number: 8 + build: h3aaadf4_9 + build_number: 9 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h68a0d7e_8.conda - sha256: 837c24c105624e16ace94b4b566ffe45231ff275339c523571ebd45946926156 - md5: 9e3ac70d27e7591b1310a690768cfe27 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h3aaadf4_9.conda + sha256: 3cc99239c8dadfe55e4b9ba37d03c5d3308ddd8fe00792fab7c6b47c97655c07 + md5: ddb5dc7ac1ae424ca2b7a847765a0cb9 depends: - __osx >=11.0 - aws-c-common >=0.10.3,<0.10.4.0a0 - - aws-c-http >=0.9.1,<0.9.2.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 license: Apache-2.0 license_family: Apache - size: 134573 - timestamp: 1731734281038 + size: 135051 + timestamp: 1733688394116 - kind: conda name: aws-c-mqtt version: 0.11.0 - build: h7bd072d_8 - build_number: 8 + build: h56e9cca_9 + build_number: 9 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h7bd072d_8.conda - sha256: 51d3d87a47c642096e2ce389a169aec2e26958042e9130857552a12d65a19045 - md5: 0e9d67838114c0dbd267a9311268b331 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h56e9cca_9.conda + sha256: c93c29b58482ca72d3f9a5710ad92194e809a9de988bcdcbae9ddd0f8ed484a6 + md5: f75642fe24ae4131f554cbacd6df53e3 depends: - __glibc >=2.17,<3.0.a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - - aws-c-http >=0.9.1,<0.9.2.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 194447 - timestamp: 1731734668760 + size: 194705 + timestamp: 1733688770217 - kind: conda name: aws-c-s3 version: 0.7.5 - build: h29aef15_0 + build: h3c51cf6_2 + build_number: 2 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.5-h29aef15_0.conda - sha256: 2aef28beec88df561f7f4d0f7ec7fea6cf54a1d6c8516fd243a4269d320f06cb - md5: 98609602eb077c7b5225d3aa1467f789 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.5-h3c51cf6_2.conda + sha256: 98a2df8a5068183e55b4c6914a3513d403300be20c960842a9a229546b8e8e52 + md5: e326ddae95b3ec96a31aded04c834175 depends: - aws-c-auth >=0.8.0,<0.8.1.0a0 - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - - aws-c-http >=0.9.1,<0.9.2.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - libgcc >=13 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 117067 - timestamp: 1733565203669 + size: 117896 + timestamp: 1733694002769 - kind: conda name: aws-c-s3 version: 0.7.5 - build: h3a84f74_0 + build: h6ad95d4_2 + build_number: 2 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.5-h3a84f74_0.conda - sha256: eb2534517bdaccf2953716e49e8b918ffe7e78a524c6321fae30c3dd7f46cb0d - md5: a13702b87657cf2d0cdd338fe55f4ba1 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.5-h6ad95d4_2.conda + sha256: 103a478b18ead8f79aae9a4966b2879e9fbcfb0aa3b2e6c9b2811a76ba34610e + md5: 682c079ec089d47bb7142f12b3275e4f depends: - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - - aws-c-http >=0.9.1,<0.9.2.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - libgcc >=13 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 113877 - timestamp: 1733565162763 + size: 113741 + timestamp: 1733693956970 - kind: conda name: aws-c-s3 version: 0.7.5 - build: h840aca7_0 + build: hca3a6f1_2 + build_number: 2 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.5-h840aca7_0.conda - sha256: 30782a1392883d26a441fc2857985136888aa454efbea8b85bbcbb7a7ad3d2e2 - md5: 1d33c89e2462b6b0056bfb883b76d2fb + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.5-hca3a6f1_2.conda + sha256: 53c4dc6e360ed6e1242c20fa43f7bfe67a41215e51cafab27dbd8aa91333040c + md5: 0b4e647cae3ce85ec991c6e3b8d12bda depends: - __osx >=11.0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - - aws-c-http >=0.9.1,<0.9.2.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 license: Apache-2.0 license_family: Apache - size: 98296 - timestamp: 1733565277623 + size: 97530 + timestamp: 1733694097526 - kind: conda name: aws-c-sdkutils version: 0.2.1 @@ -1450,19 +1450,20 @@ packages: - kind: conda name: aws-crt-cpp version: 0.29.7 - build: h6c346da_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.7-h6c346da_1.conda - sha256: 9a60a93dbe896acf533dded5f4ae11546ff4fb6a9fb0e06db6d915206ba0b1f2 - md5: cf87fc73eee6dbfc12dec79444d5dfc0 + build: h318f0b1_3 + build_number: 3 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.7-h318f0b1_3.conda + sha256: 35100ad81adf31aa4e73ac2956e9a8ff277cc57d0db2db2f0e9c51012175eadd + md5: 9748d0527695a64aa2eb45e891ea188d depends: + - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - - aws-c-http >=0.9.1,<0.9.2.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - aws-c-s3 >=0.7.5,<0.7.6.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 @@ -1470,59 +1471,58 @@ packages: - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 283237 - timestamp: 1733588714381 + size: 355045 + timestamp: 1733744656604 - kind: conda name: aws-crt-cpp version: 0.29.7 - build: ha310de4_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.7-ha310de4_1.conda - sha256: b5ab81d50b6cc2ff70dd56a16b5b9e1cbe8c69e9e357db2abf925d03c5d0133a - md5: 77769ed013cbf8824c1927407ea03c69 + build: hacb6b83_3 + build_number: 3 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.7-hacb6b83_3.conda + sha256: 6c0ece3ca494c2220fc052e608d52ea52bb361e536a14a1b3b36ebeede9de8b9 + md5: 27ce3ed5b7e55370a9fea2dda2b3245a depends: - - __osx >=11.0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - - aws-c-http >=0.9.1,<0.9.2.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - aws-c-s3 >=0.7.5,<0.7.6.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - - libcxx >=18 + - libgcc >=13 + - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 236862 - timestamp: 1733588815005 + size: 283993 + timestamp: 1733744571881 - kind: conda name: aws-crt-cpp version: 0.29.7 - build: ha6b94fc_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.7-ha6b94fc_1.conda - sha256: 5907a2c370f94e5f63c17e4347525d21eb1c00fbd8b731d79ec1eb4e857689ca - md5: f5fb6f6283deb0b4d2c187ad4a7b6d4d + build: hc2c2bbc_3 + build_number: 3 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.7-hc2c2bbc_3.conda + sha256: 6a519151e7fa71fbc9d1cd3a526ea7591638af058a6cc0534e1cd418fd48b354 + md5: 5450324f7b48dff1f6ed5484bf830972 depends: - - __glibc >=2.17,<3.0.a0 + - __osx >=11.0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - - aws-c-http >=0.9.1,<0.9.2.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - aws-c-s3 >=0.7.5,<0.7.6.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - - libgcc >=13 - - libstdcxx >=13 + - libcxx >=18 license: Apache-2.0 license_family: Apache - size: 353873 - timestamp: 1733588735223 + size: 236331 + timestamp: 1733744737078 - kind: conda name: aws-sdk-cpp version: 1.11.458 @@ -2222,19 +2222,20 @@ packages: - kind: conda name: deprecated version: 1.2.15 - build: pyhff2d567_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhff2d567_0.conda - sha256: 48182a27a8fd855db3a402ed914823802f94c3344c87b0d074facc51411296ee - md5: ca75e235b44ab995655fae392f99595e + url: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhd8ed1ab_1.conda + sha256: a20ebf2c9b02a6eb32412ceb5c4cffaae49417db7e75414a76417538293a9402 + md5: eaef2e94d5bd76f758545d172c1fda67 depends: - - python >=2.7 + - python >=3.9 - wrapt <2,>=1.10 license: MIT license_family: MIT - size: 14182 - timestamp: 1731836933516 + size: 14297 + timestamp: 1733662697343 - kind: conda name: dill version: 0.3.7 @@ -2732,14 +2733,13 @@ packages: timestamp: 1732707937311 - kind: conda name: httpx - version: 0.28.0 - build: pyhd8ed1ab_1 - build_number: 1 + version: 0.28.1 + build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_1.conda - sha256: 0b864abaa9f1443fc42368b4d2a4f4efb9971a53f961d1fe30fabd7fbdd76b27 - md5: 8a4a83ba566c6b5c718dd0531a362d01 + url: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda + sha256: cd0f1de3697b252df95f98383e9edb1d00386bfdd03fdf607fa42fe5fcb09950 + md5: d6989ead454181f4f9bc987d3dc4e285 depends: - anyio - certifi @@ -2748,8 +2748,8 @@ packages: - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 63203 - timestamp: 1733501478172 + size: 63082 + timestamp: 1733663449209 - kind: conda name: huggingface_hub version: 0.26.5 @@ -5128,50 +5128,47 @@ packages: timestamp: 1716828607917 - kind: conda name: libsqlite - version: 3.47.0 - build: hadc24fc_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.47.0-hadc24fc_1.conda - sha256: 8a9aadf996a2399f65b679c6e7f29139d5059f699c63e6d7b50e20db10c00508 - md5: b6f02b52a174e612e89548f4663ce56a + version: 3.47.2 + build: h3f77e49_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.47.2-h3f77e49_0.conda + sha256: f192f3c8973de9ec4c214990715f13b781965247a5cedf9162e7f9e699cfc3c4 + md5: 122d6f29470f1a991e85608e77e56a8a depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 + - __osx >=11.0 - libzlib >=1.3.1,<2.0a0 license: Unlicense - size: 875349 - timestamp: 1730208050020 + size: 850553 + timestamp: 1733762057506 - kind: conda name: libsqlite - version: 3.47.0 - build: hbaaea75_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.47.0-hbaaea75_1.conda - sha256: 5a96caa566c11e5a5ebdcdb86a0759a7fb27d3c5f42e6a0fd0d6023c1e935d9e - md5: 07a14fbe439eef078cc479deca321161 + version: 3.47.2 + build: h5eb1b54_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.47.2-h5eb1b54_0.conda + sha256: 885a27fa84a5a73ed9779168c02b6c386e2fc7a53f0566b32a09ceca146b42b4 + md5: d4bf59f8783a4a66c0aec568f6de3ff4 depends: - - __osx >=11.0 + - libgcc >=13 - libzlib >=1.3.1,<2.0a0 license: Unlicense - size: 837683 - timestamp: 1730208293578 + size: 1042182 + timestamp: 1733761913736 - kind: conda name: libsqlite - version: 3.47.0 - build: hc4a20ef_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.47.0-hc4a20ef_1.conda - sha256: 73e143fdb966b61cd25ab804d416d87dfce43ac684e0fac3ad8b1450796331ab - md5: a6b185aac10d08028340858f77231b23 + version: 3.47.2 + build: hee588c1_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.47.2-hee588c1_0.conda + sha256: 48af21ebc2cbf358976f1e0f4a0ab9e91dfc83d0ef337cf3837c6f5bc22fb352 + md5: b58da17db24b6e08bcbf8fed2fb8c915 depends: + - __glibc >=2.17,<3.0.a0 - libgcc >=13 - libzlib >=1.3.1,<2.0a0 license: Unlicense - size: 1041855 - timestamp: 1730208187962 + size: 873551 + timestamp: 1733761824646 - kind: conda name: libssh2 version: 1.11.1 @@ -5894,76 +5891,76 @@ packages: timestamp: 1733220925299 - kind: conda name: max - version: 24.6.0.dev2024120805 + version: 24.6.0.dev2024120905 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120805-release.conda - sha256: f2f1a4e4373ac62de23c41ce28e1483b45322cffe8aef91ef93ce0f65fe5f20d - md5: d41647f3009da6fe575321d46a741dfa - depends: - - max-core ==24.6.0.dev2024120805 release - - max-python >=24.6.0.dev2024120805,<25.0a0 - - mojo-jupyter ==24.6.0.dev2024120805 release - - mblack ==24.6.0.dev2024120805 release + url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120905-release.conda + sha256: 37a6103a6b2c7886ed5837d41a819f1a127eef7e810b2b5ecfb03f7caf263514 + md5: b13d61319f43570ce681408a1b27d9d5 + depends: + - max-core ==24.6.0.dev2024120905 release + - max-python >=24.6.0.dev2024120905,<25.0a0 + - mojo-jupyter ==24.6.0.dev2024120905 release + - mblack ==24.6.0.dev2024120905 release license: LicenseRef-Modular-Proprietary - size: 9916 - timestamp: 1733635043550 + size: 9911 + timestamp: 1733721408716 - kind: conda name: max-core - version: 24.6.0.dev2024120805 + version: 24.6.0.dev2024120905 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120805-release.conda - sha256: aebf26b21cebf2afdf9063203e542e5e635059c57c5fb9e74478b98f652f8e46 - md5: 620d81f38c5da882ee0799e26d86b0ad + url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120905-release.conda + sha256: 0f94138601ceab2c8b277c7d175d762840072cfdfd0ead7264fbd1ff9f70442d + md5: 00617be1a2fef13b5630d9cbe92f9d3c depends: - - mblack ==24.6.0.dev2024120805 release + - mblack ==24.6.0.dev2024120905 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 247607615 - timestamp: 1733634983707 + size: 247639885 + timestamp: 1733721408714 - kind: conda name: max-core - version: 24.6.0.dev2024120805 + version: 24.6.0.dev2024120905 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120805-release.conda - sha256: 1fc1554d9c39ed5bf22957f02418ee0df4ce4dfc033dd3ca54a7f20c8946b7b3 - md5: 6e7e581fe4e11d252e8729a6cc564b29 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120905-release.conda + sha256: 1aaf2ffb09d6a2aa6b65d76c381476eb88947470580a0d56909bfd578d5eb385 + md5: c7ff53814f0c254c75dc7ab8f0c66b38 depends: - - mblack ==24.6.0.dev2024120805 release + - mblack ==24.6.0.dev2024120905 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 251457302 - timestamp: 1733635043548 + size: 251498878 + timestamp: 1733721396377 - kind: conda name: max-core - version: 24.6.0.dev2024120805 + version: 24.6.0.dev2024120905 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120805-release.conda - sha256: f249a329a1b072ebd9cd365842d54892d4d46a8fb642ab8fb22ff26f211dddb7 - md5: 04d8f67fb1a7deb6147da14b60f668d3 + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120905-release.conda + sha256: 00cc8ce6adc131b858df51423201b8f028aa944ac09e56c563a1108c22eaccd2 + md5: 71554a4c0e81a1034908bc1cb716b30b depends: - - mblack ==24.6.0.dev2024120805 release + - mblack ==24.6.0.dev2024120905 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 212001315 - timestamp: 1733635167877 + size: 212030191 + timestamp: 1733721567995 - kind: conda name: max-python - version: 24.6.0.dev2024120805 + version: 24.6.0.dev2024120905 build: 3.11release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120805-3.11release.conda - sha256: a2b71b73a181572fa5c954f5600f8718fa95c939374729ae835752f075b27a34 - md5: 5c5cc7463dcab80905f85cb8b3246055 + url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120905-3.11release.conda + sha256: 94d3d821551ee202ef270d4fbce8003f35f33d0cc98a92b17f1739caa5623812 + md5: 57061ee2198633af94d4713cdba1ebd7 depends: - - max-core ==24.6.0.dev2024120805 release + - max-core ==24.6.0.dev2024120905 release - python 3.11.* - pillow - fastapi @@ -5985,18 +5982,18 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 123756323 - timestamp: 1733634983714 + size: 123763299 + timestamp: 1733721408721 - kind: conda name: max-python - version: 24.6.0.dev2024120805 + version: 24.6.0.dev2024120905 build: 3.11release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120805-3.11release.conda - sha256: 46477a954b3fc2a03aa40af8eea834628b1e7d9f4267d41512248cea7c8cbfd6 - md5: d3607aaaa6f5188f221c71153d71fdaa + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120905-3.11release.conda + sha256: 90b94a041502fd79e408c5ab5c9108e6411228fc761c11eab0a568d4a193ed0c + md5: 920b32c37e877ed3073f6ad94f614e8b depends: - - max-core ==24.6.0.dev2024120805 release + - max-core ==24.6.0.dev2024120905 release - python 3.11.* - pillow - fastapi @@ -6018,18 +6015,18 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 127450091 - timestamp: 1733635043556 + size: 127444260 + timestamp: 1733721396385 - kind: conda name: max-python - version: 24.6.0.dev2024120805 + version: 24.6.0.dev2024120905 build: 3.11release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120805-3.11release.conda - sha256: f58dd3d9dec6f7470e64cec203d725efbc2e425b7f9953968f9a0a83f012a606 - md5: 34e265181bb66843e853f6cef005419d + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120905-3.11release.conda + sha256: 10ee1c9e5cc1b176238d018234979c15ec95aa8a9795d2917235bc6eda4c730f + md5: 9fb0abe3fe34b82bf8937091140967f0 depends: - - max-core ==24.6.0.dev2024120805 release + - max-core ==24.6.0.dev2024120905 release - python 3.11.* - pillow - fastapi @@ -6051,17 +6048,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 112446830 - timestamp: 1733635167880 + size: 112461801 + timestamp: 1733721567997 - kind: conda name: mblack - version: 24.6.0.dev2024120805 + version: 24.6.0.dev2024120905 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120805-release.conda - sha256: e5f3d6f9e9e7acb97ff8364ddb90e34e38bfe68ba382b3dffacfbf4b9d6c812a - md5: 8a48ed658740aaf0063c754fd35e9cce + url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120905-release.conda + sha256: e302e262a58592b5b8614829237760967d685cb20a44e54981916eb6c2b6b7a2 + md5: b34a59910660011ad1f42bfc1ae4ae54 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -6071,8 +6068,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130744 - timestamp: 1733635043555 + size: 130740 + timestamp: 1733721408720 - kind: conda name: mdurl version: 0.1.2 @@ -6091,21 +6088,21 @@ packages: timestamp: 1733255681319 - kind: conda name: mojo-jupyter - version: 24.6.0.dev2024120805 + version: 24.6.0.dev2024120905 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120805-release.conda - sha256: 1535cecc4930833e604ed39a4450b421914312f4abbb4fc6af9e7aedd5293ffd - md5: ad285352ec9e9061d8facbf62f708d9d + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120905-release.conda + sha256: bb71277508a55875b6011651bc825599e26a47145ab1e9c4e7c2abd853200a00 + md5: 4fc85c9cb1efe841b69d339d4da5b3a1 depends: - - max-core ==24.6.0.dev2024120805 release + - max-core ==24.6.0.dev2024120905 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 11369 - timestamp: 1733635043556 + size: 11366 + timestamp: 1733721408720 - kind: conda name: multidict version: 6.1.0 @@ -6443,21 +6440,21 @@ packages: - kind: conda name: opentelemetry-api version: 1.28.2 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.28.2-pyhd8ed1ab_0.conda - sha256: e267ed59ea8f357c3471defef796ce4f4555eacd9ee0ed2d47d3dd539ee7ee2f - md5: f1307fb38a8fd2220def45ec1691a21c + url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.28.2-pyhd8ed1ab_1.conda + sha256: 780dbc942a6075db7bdbaf556023be50c34a6111a99e465878d7bab0e5e0d7f4 + md5: a06f1e9d97c98d26f06675236c9ea554 depends: - deprecated >=1.2.6 - importlib-metadata >=6.0.0,<7.1.0 - - python >=3.8 + - python >=3.9 - setuptools >=16.0 license: Apache-2.0 - license_family: APACHE - size: 44014 - timestamp: 1731985724169 + size: 44242 + timestamp: 1733734361129 - kind: conda name: opentelemetry-exporter-otlp-proto-common version: 1.28.2 @@ -6553,20 +6550,20 @@ packages: - kind: conda name: opentelemetry-semantic-conventions version: 0.49b2 - build: pyh10f6f8f_0 + build: pyh3cfb1c2_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh10f6f8f_0.conda - sha256: 5e3869ad66082b16d56bab8219fad0c8c09090ec93eb866327eed788fe5c9340 - md5: d95dd6e8a70417e394bb16dad5cff408 + url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh3cfb1c2_1.conda + sha256: 28180ffa6611f117c782c7d72066b50332c1df0bdcfed0dea4e446a20c4b7d10 + md5: e0ada55d18e6bd5a8e61943b4b5d3a8f depends: - deprecated >=1.2.6 - opentelemetry-api 1.28.2 - python >=3.9 license: Apache-2.0 - license_family: APACHE - size: 81534 - timestamp: 1732067304518 + size: 81099 + timestamp: 1733749104727 - kind: conda name: orc version: 2.0.3 @@ -8196,12 +8193,12 @@ packages: timestamp: 1699202167581 - kind: conda name: tokenizers - version: 0.20.4 + version: 0.21.0 build: py311h182c674_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.20.4-py311h182c674_0.conda - sha256: 27006989d4aa4f7d3058ae9d089e0d8c6974ae55bc83d502c00ddee1332fa5ad - md5: c24051d78f982233e6f9fcc313e40a1c + url: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.21.0-py311h182c674_0.conda + sha256: 231ecde88bb291437a8060e4eaee74d87318ee635b4ceac5d74fc82343f137d0 + md5: 7e9304388022ef7f7f21b94953a5181b depends: - __glibc >=2.17,<3.0.a0 - huggingface_hub >=0.16.4,<1.0 @@ -8214,16 +8211,16 @@ packages: - __glibc >=2.17 license: Apache-2.0 license_family: APACHE - size: 2260744 - timestamp: 1732658087592 + size: 2264312 + timestamp: 1732734291587 - kind: conda name: tokenizers - version: 0.20.4 + version: 0.21.0 build: py311h5e37e04_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.20.4-py311h5e37e04_0.conda - sha256: 0c40f1b8ff2c5592ab5919ec1f0bb6f7bef8297d8da8b97a777310db7c7e0611 - md5: cb0eccdce4d155ef9050548c319a35c5 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.21.0-py311h5e37e04_0.conda + sha256: 02fad918a39c9e10feedac2937e3bee619fa49707734ae478e0342a85784fb98 + md5: 833844038ba171a27678bf201c3f4c74 depends: - huggingface_hub >=0.16.4,<1.0 - libgcc >=13 @@ -8236,16 +8233,16 @@ packages: - __glibc >=2.17 license: Apache-2.0 license_family: APACHE - size: 2330115 - timestamp: 1732658113825 + size: 2329972 + timestamp: 1732734458949 - kind: conda name: tokenizers - version: 0.20.4 + version: 0.21.0 build: py311h82b0fb8_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.20.4-py311h82b0fb8_0.conda - sha256: 8edbc016a3d33a254b5a6ba67822491a529cfe1206ee304f32bae987b795a8e6 - md5: 70ca9ca07b29c8faac8c1ea0576d0a0c + url: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.21.0-py311h82b0fb8_0.conda + sha256: 8f2a22323b67a75d57192d37bb031fb44a51f013d3232f18a0df3c453ea68ab9 + md5: d1543e49d59c7537c7c97f6d70544b00 depends: - __osx >=11.0 - huggingface_hub >=0.16.4,<1.0 @@ -8257,8 +8254,8 @@ packages: - __osx >=11.0 license: Apache-2.0 license_family: APACHE - size: 1935376 - timestamp: 1732658323422 + size: 1935264 + timestamp: 1732734431057 - kind: conda name: tornado version: 6.4.2 @@ -8342,13 +8339,13 @@ packages: timestamp: 1733367480074 - kind: conda name: transformers - version: 4.46.3 + version: 4.47.0 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/transformers-4.46.3-pyhd8ed1ab_0.conda - sha256: 6ae73c0d1197812d8fd6a2c64309fe9abe822feb66b2d330cc61ce9fa60dee0c - md5: 457af723774f077a128515a6fdd536a2 + url: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.0-pyhd8ed1ab_0.conda + sha256: b9cf6ae5fcd6c78dcaa24ebfd41580a4a10b0649ac726a44d3521f70fdece218 + md5: 495745078b8e18fe2dcc3267f4baae0d depends: - datasets !=2.5.0 - filelock @@ -8360,12 +8357,12 @@ packages: - regex !=2019.12.17 - requests - safetensors >=0.4.1 - - tokenizers >=0.20,<0.21 + - tokenizers >=0.21,<0.22 - tqdm >=4.27 license: Apache-2.0 license_family: APACHE - size: 3622494 - timestamp: 1731981383171 + size: 3721837 + timestamp: 1733708797762 - kind: conda name: typer version: 0.15.1 diff --git a/examples/notebooks/magic.lock b/examples/notebooks/magic.lock index 2a552de926..9782182c18 100644 --- a/examples/notebooks/magic.lock +++ b/examples/notebooks/magic.lock @@ -19,18 +19,18 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-hb88c0a9_10.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.0-hecf86a2_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-ha4f867e_12.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.1-hecf86a2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.10.3-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.3.0-hf42f96a_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.0-h1ffe551_7.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.1-hab05fe4_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.2-hdeadb07_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h7bd072d_8.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.5-h3a84f74_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.0-h873f81a_8.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.2-ha5a3ca8_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-ha35c7d9_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h56e9cca_9.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.5-h6ad95d4_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.1-hf42f96a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-hf42f96a_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.7-ha6b94fc_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.7-h318f0b1_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-hac138a2_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.10.0-h113e628_0.conda @@ -57,7 +57,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.9-py312h2ec8cdc_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.1.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda @@ -80,7 +80,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/httptools-0.6.4-py312h66e93f0_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda @@ -148,7 +148,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.2-h5b01275_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.47.0-hadc24fc_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.47.2-hee588c1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hf672d98_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-hc0a3c3a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_1.conda @@ -166,13 +166,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/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.dev2024120805-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120805-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120805-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120905-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120905-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120905-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120905-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.dev2024120805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120905-release.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/multiprocess-0.70.15-py312h98912ed_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda @@ -185,13 +185,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.2-h488ebb8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.0-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.28.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.28.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.28.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-prometheus-1.12.0rc1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.28.2-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh10f6f8f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh3cfb1c2_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/orc-2.0.3-he039a57_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda @@ -258,12 +258,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh0d859eb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.20.4-py312h8360d73_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.21.0-py312h8360d73_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.46.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda @@ -307,18 +307,18 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-hac900a4_10.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.0-h35473ba_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-h89ba3c0_12.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.1-h35473ba_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-common-0.10.3-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-compression-0.3.0-h4c7db1d_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-event-stream-0.5.0-h9bacb8c_7.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.1-hf4e072c_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.2-h10eb1bc_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h28a5e6a_8.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.5-h29aef15_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-event-stream-0.5.0-hba6c15e_8.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.2-h697be72_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-h0155602_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h2cca791_9.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.5-h3c51cf6_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.1-h4c7db1d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h4c7db1d_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.7-h6c346da_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.7-hacb6b83_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h5e41cbe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-core-cpp-1.14.0-h1887c18_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-identity-cpp-1.10.0-h47b0b28_0.conda @@ -345,7 +345,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/debugpy-1.8.9-py312h6f74592_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.1.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda @@ -368,7 +368,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/httptools-0.6.4-py312hb2c0f52_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda @@ -437,7 +437,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.2-h029595c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.20-h68df207_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.47.0-hc4a20ef_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.47.2-h5eb1b54_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libssh2-1.11.1-ha41c0db_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_1.conda @@ -455,13 +455,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/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.dev2024120805-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120805-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120805-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120905-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120905-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120905-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120905-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.dev2024120805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120905-release.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/multiprocess-0.70.15-py312hdd3e373_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda @@ -474,13 +474,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openjpeg-2.5.2-h0d9d63b_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.0-h86ecc28_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.28.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.28.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.28.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-prometheus-1.12.0rc1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.28.2-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh10f6f8f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh3cfb1c2_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/orc-2.0.3-h90de224_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda @@ -547,12 +547,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh0d859eb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.20.4-py312ha0d6ea1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.21.0-py312ha0d6ea1_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py312h52516f5_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.46.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda @@ -596,18 +596,18 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-h9b725a8_10.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.0-h5d7ee29_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-h35eccd0_12.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.1-h5d7ee29_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.10.3-h5505292_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-compression-0.3.0-h5d7ee29_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.0-h13ead76_7.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.1-hf483d09_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.2-h39f8ad8_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h68a0d7e_8.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.5-h840aca7_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.0-h8ec3972_8.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.2-h48c6dea_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-h30cefa2_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h3aaadf4_9.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.5-hca3a6f1_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.1-h5d7ee29_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-h5d7ee29_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.7-ha310de4_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.7-hc2c2bbc_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-he4d6490_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.14.0-hd50102c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.10.0-hc602bab_0.conda @@ -634,7 +634,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/debugpy-1.8.9-py312hd8f9ff3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.1.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda @@ -657,7 +657,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/httptools-0.6.4-py312hea69d52_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda @@ -721,7 +721,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.2-h8f0b736_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h2348fd5_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.47.0-hbaaea75_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.47.2-h3f77e49_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.1-h9cc3647_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libthrift-0.21.0-h64651cc_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-ha962b0a_2.conda @@ -736,13 +736,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.dev2024120805-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120805-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120805-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120905-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120905-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120905-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120905-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.dev2024120805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120905-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 @@ -755,13 +755,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openjpeg-2.5.2-h9f1df11_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.0-h39f12f2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.28.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.28.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.28.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-prometheus-1.12.0rc1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.28.2-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh10f6f8f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh3cfb1c2_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/orc-2.0.3-h121fd32_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda @@ -829,12 +829,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh31c8845_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.20.4-py312hf3e4074_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.21.0-py312hf3e4074_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.46.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda @@ -1221,107 +1221,104 @@ packages: - kind: conda name: aws-c-auth version: 0.8.0 - build: h9b725a8_10 - build_number: 10 + build: h35eccd0_12 + build_number: 12 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-h9b725a8_10.conda - sha256: 63cb8c25e0a26be4261d4271de525e7e33aefe9d9b001b8abfa5c9ac69c3dab3 - md5: 17c90d9eb8c6842fd739dc5445ce9962 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-h35eccd0_12.conda + sha256: 40ca48aee5f3ff0d3ffd64625dacb019104a9a2ee24cd54052cde6fe4cbc8349 + md5: 1109d5293b724ca16b61452accfdb442 depends: - __osx >=11.0 - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - - aws-c-http >=0.9.1,<0.9.2.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 license: Apache-2.0 license_family: Apache - size: 92355 - timestamp: 1731733738919 + size: 92279 + timestamp: 1733611476546 - kind: conda name: aws-c-auth version: 0.8.0 - build: hac900a4_10 - build_number: 10 + build: h89ba3c0_12 + build_number: 12 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-hac900a4_10.conda - sha256: 85c8500ae0570f0d39e6661a120c653e43f0f5f984e2954c44fd358a87776892 - md5: 9ecaef75ebd666dda7caa79154183b02 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-h89ba3c0_12.conda + sha256: 021451014fb5ee24601052d84db8d5babbce5085959ba777b540db4e33bde360 + md5: c0e2e6c3aa8c309af0ba09fc7d949407 depends: - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - - aws-c-http >=0.9.1,<0.9.2.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 111853 - timestamp: 1731733547677 + size: 112242 + timestamp: 1733611425746 - kind: conda name: aws-c-auth version: 0.8.0 - build: hb88c0a9_10 - build_number: 10 + build: ha4f867e_12 + build_number: 12 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-hb88c0a9_10.conda - sha256: d2837a84e6bd7d993a83e79f9e240e1465e375f3d57149ea5b1927c6a4133bcc - md5: 409b7ee6d3473cc62bda7280f6ac20d0 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-ha4f867e_12.conda + sha256: b9355bedf43c857a2d1986ebe7d61e615218f2171d163b509633d6c0c988d2dc + md5: d889de56d3be691063b71eb826470e29 depends: - __glibc >=2.17,<3.0.a0 - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - - aws-c-http >=0.9.1,<0.9.2.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 107163 - timestamp: 1731733534767 + size: 107663 + timestamp: 1733611397256 - kind: conda name: aws-c-cal - version: 0.8.0 - build: h35473ba_2 - build_number: 2 + version: 0.8.1 + build: h35473ba_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.0-h35473ba_2.conda - sha256: 3327a9e65ec531b0c55d17bbcdc436b4e641af1f293d1c2f50e0f16aa79fde60 - md5: 48dc0b3576513622673d3f5f3d163b62 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.1-h35473ba_0.conda + sha256: c2d59d74e167b6df3c1a7addf0d37080b69a6b3dee2a30b3f2171a5d26c5a691 + md5: 97c0ccb4d43d880b38f237e746c29ead depends: - aws-c-common >=0.10.3,<0.10.4.0a0 - libgcc >=13 - openssl >=3.3.1,<4.0a0 license: Apache-2.0 license_family: Apache - size: 49714 - timestamp: 1731678553709 + size: 49808 + timestamp: 1732038238504 - kind: conda name: aws-c-cal - version: 0.8.0 - build: h5d7ee29_2 - build_number: 2 + version: 0.8.1 + build: h5d7ee29_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.0-h5d7ee29_2.conda - sha256: 2a8c09b33400cf2b7d658e63fd5a6f9b6e9626458f6213b904592fc15220bc92 - md5: 92734dad83d22314205ba73b679710d2 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.1-h5d7ee29_0.conda + sha256: 42d5e9fb695bc3b280ed7e625dcda110b6780ee471e227f1b92afce71ae4972c + md5: fc51a61831a676fe6f922450f51ab6af depends: - __osx >=11.0 - aws-c-common >=0.10.3,<0.10.4.0a0 - openssl >=3.3.1,<4.0a0 license: Apache-2.0 license_family: Apache - size: 39966 - timestamp: 1731678721786 + size: 40047 + timestamp: 1732038304022 - kind: conda name: aws-c-cal - version: 0.8.0 - build: hecf86a2_2 - build_number: 2 + version: 0.8.1 + build: hecf86a2_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.0-hecf86a2_2.conda - sha256: 220a37955c120bf2f565fbd5320a82fc4c8b550b2449294bc0509c296cfcb9fa - md5: c54459d686ad9d0502823cacff7e8423 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.1-hecf86a2_0.conda + sha256: 12cc2087503f4f0d3a5db84e791fb5e585866da728f888aa76e14330a092a681 + md5: 8350795be14a92d68847c0d4f3c1d59f depends: - __glibc >=2.17,<3.0.a0 - aws-c-common >=0.10.3,<0.10.4.0a0 @@ -1329,8 +1326,8 @@ packages: - openssl >=3.3.1,<4.0a0 license: Apache-2.0 license_family: Apache - size: 47477 - timestamp: 1731678510949 + size: 47569 + timestamp: 1732038156682 - kind: conda name: aws-c-common version: 0.10.3 @@ -1426,291 +1423,294 @@ packages: - kind: conda name: aws-c-event-stream version: 0.5.0 - build: h13ead76_7 - build_number: 7 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.0-h13ead76_7.conda - sha256: 386965fab5f0bed4a6109cdba32579f16bee1b0f76ce1db840ce6f7070188f9f - md5: 55a901b6d4fb9ce1bc8328925b229f0b + build: h873f81a_8 + build_number: 8 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.0-h873f81a_8.conda + sha256: 589f9a04c4c7a919410dde75ce93a6986efad6ed522ecd8e5c9c587ac18f0d34 + md5: 32bdd50b43fcc435a8dc5a3c66aafef0 depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - - libcxx >=18 + - libgcc >=13 + - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 47528 - timestamp: 1731714690911 + size: 54020 + timestamp: 1731839177415 - kind: conda name: aws-c-event-stream version: 0.5.0 - build: h1ffe551_7 - build_number: 7 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.0-h1ffe551_7.conda - sha256: 3b780d6483baa889e8df5aa66ab3c439a9c81331cf2a4799e373f4174768ddd9 - md5: 7cce4dfab184f4bbdfc160789251b3c5 + build: h8ec3972_8 + build_number: 8 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.0-h8ec3972_8.conda + sha256: 81b98fc39e64d090af23b11621e467b4f943a19f61dda0fed5ad6397f06de5c7 + md5: ced9c97ddf61e4222d548e8bcc863b87 depends: - - __glibc >=2.17,<3.0.a0 + - __osx >=11.0 - aws-c-common >=0.10.3,<0.10.4.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - - libgcc >=13 - - libstdcxx >=13 + - libcxx >=18 license: Apache-2.0 license_family: Apache - size: 53500 - timestamp: 1731714597524 + size: 47491 + timestamp: 1731839300212 - kind: conda name: aws-c-event-stream version: 0.5.0 - build: h9bacb8c_7 - build_number: 7 + build: hba6c15e_8 + build_number: 8 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-event-stream-0.5.0-h9bacb8c_7.conda - sha256: 2b7bb475330942d94bc359171df19d0cf8b326f15c0c7903a59da54a8add621e - md5: 694020125b66632d6577456d2d9d3c74 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-event-stream-0.5.0-hba6c15e_8.conda + sha256: d3b74580045ee9d54a134ab1e5e00082d5d8a466980e94acc153188ee7375d08 + md5: 102f8b54630d79aff5e0c489f40f926e depends: - aws-c-common >=0.10.3,<0.10.4.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 55054 - timestamp: 1731714599360 + size: 55354 + timestamp: 1731839242373 - kind: conda name: aws-c-http - version: 0.9.1 - build: hab05fe4_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.1-hab05fe4_2.conda - sha256: 90a325b6f5371dd2203b643de646967fe57a4bcbbee8c91086abbf9dd733d59a - md5: fb409f7053fa3dbbdf6eb41045a87795 + version: 0.9.2 + build: h48c6dea_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.2-h48c6dea_1.conda + sha256: cb68d557af1bdcbef668574836fbf39c4df0e4f377258e4d5bd14196acf9b992 + md5: a28dd36a1da76042bfb5579005cc6728 depends: - - __glibc >=2.17,<3.0.a0 - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - __osx >=11.0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - aws-c-compression >=0.3.0,<0.3.1.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 - - libgcc >=13 + - aws-c-io >=0.15.3,<0.15.4.0a0 license: Apache-2.0 license_family: Apache - size: 196945 - timestamp: 1731714483279 + size: 152660 + timestamp: 1732110368931 - kind: conda name: aws-c-http - version: 0.9.1 - build: hf483d09_2 - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.1-hf483d09_2.conda - sha256: fca9ed0f0895bab9bf737c8d8a3314556cb893d45c40f0656f21a93502db3089 - md5: d880c40b8fc7d07374c036f93f1359d2 + version: 0.9.2 + build: h697be72_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.2-h697be72_1.conda + sha256: 4d6557a00e74649301da78d7de7d108882ce89eb9d6c87efce30789b53a617cf + md5: a8b1a2c11a93e615f6e8f33175ff8ff0 depends: - - __osx >=11.0 - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - aws-c-compression >=0.3.0,<0.3.1.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 153315 - timestamp: 1731714621306 + size: 190344 + timestamp: 1732110425530 - kind: conda name: aws-c-http - version: 0.9.1 - build: hf4e072c_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.1-hf4e072c_2.conda - sha256: b9a262451fc91d2fd4ccfcb6dc11ac61d0152c0db765bfe8d089e3e1b70c2150 - md5: fddc197912c16cb95276077f6c7917c5 + version: 0.9.2 + build: ha5a3ca8_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.2-ha5a3ca8_1.conda + sha256: 8ecb3d8411f58db4686635aedfe5d60b2b8870f9f9cafb471f3878dc61d21596 + md5: b2e017f8a4781ad3af9166edf10b65a8 depends: - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - __glibc >=2.17,<3.0.a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - aws-c-compression >=0.3.0,<0.3.1.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 190363 - timestamp: 1731714613945 + size: 197338 + timestamp: 1732110324356 - kind: conda name: aws-c-io - version: 0.15.2 - build: h10eb1bc_2 - build_number: 2 + version: 0.15.3 + build: h0155602_1 + build_number: 1 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.2-h10eb1bc_2.conda - sha256: b8e4206ee1fa58453535c1c08c6aca5bdc92cde026bf7ec20d038786f813239b - md5: 7cdf478bb4feae1a93319f6e3381b8a9 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-h0155602_1.conda + sha256: 7b8d97d51e5bb80191e07f16cac6f59068be30bf5906925a8f4159b3aab9093c + md5: 431c201b11eee90fd120844557a62b02 depends: - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - libgcc >=13 - s2n >=1.5.9,<1.5.10.0a0 license: Apache-2.0 license_family: Apache - size: 162624 - timestamp: 1731702570075 + size: 161664 + timestamp: 1732097310449 - kind: conda name: aws-c-io - version: 0.15.2 - build: h39f8ad8_2 - build_number: 2 + version: 0.15.3 + build: h30cefa2_1 + build_number: 1 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.2-h39f8ad8_2.conda - sha256: b14e32f024f6be1610dccfdb6371e101cba204d24f37c2a63d9b6380ac74ac17 - md5: 3b49f1dd8f20bead8b222828cfdad585 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-h30cefa2_1.conda + sha256: d6f8d42259ca11507bd912b3cd3ff1a65d6d8c7ff67ae9ee9df1686c9bebbbcc + md5: 8b8dc361de09e5b6227165a876e55cb7 depends: - __osx >=11.0 - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 license: Apache-2.0 license_family: Apache - size: 137610 - timestamp: 1731702839896 + size: 136662 + timestamp: 1732097382517 - kind: conda name: aws-c-io - version: 0.15.2 - build: hdeadb07_2 - build_number: 2 + version: 0.15.3 + build: ha35c7d9_1 + build_number: 1 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.2-hdeadb07_2.conda - sha256: 1636136a5d882b4aaa13ea8b7de8cf07038a6878872e3c434df9daf478cee594 - md5: 461a1eaa075fd391add91bcffc9de0c1 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-ha35c7d9_1.conda + sha256: 2e9e13ed54f6da22ee5d06622f4165bcca253411997dad62225aecc54b25c0db + md5: 97960f380abe1ba3157fe63312e35b07 depends: - __glibc >=2.17,<3.0.a0 - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - libgcc >=13 - s2n >=1.5.9,<1.5.10.0a0 license: Apache-2.0 license_family: Apache - size: 159368 - timestamp: 1731702542973 + size: 158012 + timestamp: 1732097264673 - kind: conda name: aws-c-mqtt version: 0.11.0 - build: h28a5e6a_8 - build_number: 8 + build: h2cca791_9 + build_number: 9 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h28a5e6a_8.conda - sha256: aad8c9a5c24953cdebf17efa7ec06b5639e14072d4fa70c5c0607d7ad913ba88 - md5: 5250ce3b5154c0347b7576015a7c6cef + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h2cca791_9.conda + sha256: c0ad176bab176a2983fb052de71037fc9357afd13b073511a7a440c1a8c6eff2 + md5: 090674d608454e979ce77bc8ee735868 depends: - aws-c-common >=0.10.3,<0.10.4.0a0 - - aws-c-http >=0.9.1,<0.9.2.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 169040 - timestamp: 1731734203264 + size: 169690 + timestamp: 1733688313938 - kind: conda name: aws-c-mqtt version: 0.11.0 - build: h68a0d7e_8 - build_number: 8 + build: h3aaadf4_9 + build_number: 9 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h68a0d7e_8.conda - sha256: 837c24c105624e16ace94b4b566ffe45231ff275339c523571ebd45946926156 - md5: 9e3ac70d27e7591b1310a690768cfe27 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h3aaadf4_9.conda + sha256: 3cc99239c8dadfe55e4b9ba37d03c5d3308ddd8fe00792fab7c6b47c97655c07 + md5: ddb5dc7ac1ae424ca2b7a847765a0cb9 depends: - __osx >=11.0 - aws-c-common >=0.10.3,<0.10.4.0a0 - - aws-c-http >=0.9.1,<0.9.2.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 license: Apache-2.0 license_family: Apache - size: 134573 - timestamp: 1731734281038 + size: 135051 + timestamp: 1733688394116 - kind: conda name: aws-c-mqtt version: 0.11.0 - build: h7bd072d_8 - build_number: 8 + build: h56e9cca_9 + build_number: 9 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h7bd072d_8.conda - sha256: 51d3d87a47c642096e2ce389a169aec2e26958042e9130857552a12d65a19045 - md5: 0e9d67838114c0dbd267a9311268b331 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h56e9cca_9.conda + sha256: c93c29b58482ca72d3f9a5710ad92194e809a9de988bcdcbae9ddd0f8ed484a6 + md5: f75642fe24ae4131f554cbacd6df53e3 depends: - __glibc >=2.17,<3.0.a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - - aws-c-http >=0.9.1,<0.9.2.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 194447 - timestamp: 1731734668760 + size: 194705 + timestamp: 1733688770217 - kind: conda name: aws-c-s3 version: 0.7.5 - build: h29aef15_0 + build: h3c51cf6_2 + build_number: 2 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.5-h29aef15_0.conda - sha256: 2aef28beec88df561f7f4d0f7ec7fea6cf54a1d6c8516fd243a4269d320f06cb - md5: 98609602eb077c7b5225d3aa1467f789 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.5-h3c51cf6_2.conda + sha256: 98a2df8a5068183e55b4c6914a3513d403300be20c960842a9a229546b8e8e52 + md5: e326ddae95b3ec96a31aded04c834175 depends: - aws-c-auth >=0.8.0,<0.8.1.0a0 - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - - aws-c-http >=0.9.1,<0.9.2.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - libgcc >=13 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 117067 - timestamp: 1733565203669 + size: 117896 + timestamp: 1733694002769 - kind: conda name: aws-c-s3 version: 0.7.5 - build: h3a84f74_0 + build: h6ad95d4_2 + build_number: 2 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.5-h3a84f74_0.conda - sha256: eb2534517bdaccf2953716e49e8b918ffe7e78a524c6321fae30c3dd7f46cb0d - md5: a13702b87657cf2d0cdd338fe55f4ba1 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.5-h6ad95d4_2.conda + sha256: 103a478b18ead8f79aae9a4966b2879e9fbcfb0aa3b2e6c9b2811a76ba34610e + md5: 682c079ec089d47bb7142f12b3275e4f depends: - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - - aws-c-http >=0.9.1,<0.9.2.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - libgcc >=13 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 113877 - timestamp: 1733565162763 + size: 113741 + timestamp: 1733693956970 - kind: conda name: aws-c-s3 version: 0.7.5 - build: h840aca7_0 + build: hca3a6f1_2 + build_number: 2 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.5-h840aca7_0.conda - sha256: 30782a1392883d26a441fc2857985136888aa454efbea8b85bbcbb7a7ad3d2e2 - md5: 1d33c89e2462b6b0056bfb883b76d2fb + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.5-hca3a6f1_2.conda + sha256: 53c4dc6e360ed6e1242c20fa43f7bfe67a41215e51cafab27dbd8aa91333040c + md5: 0b4e647cae3ce85ec991c6e3b8d12bda depends: - __osx >=11.0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - - aws-c-http >=0.9.1,<0.9.2.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 license: Apache-2.0 license_family: Apache - size: 98296 - timestamp: 1733565277623 + size: 97530 + timestamp: 1733694097526 - kind: conda name: aws-c-sdkutils version: 0.2.1 @@ -1812,19 +1812,20 @@ packages: - kind: conda name: aws-crt-cpp version: 0.29.7 - build: h6c346da_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.7-h6c346da_1.conda - sha256: 9a60a93dbe896acf533dded5f4ae11546ff4fb6a9fb0e06db6d915206ba0b1f2 - md5: cf87fc73eee6dbfc12dec79444d5dfc0 + build: h318f0b1_3 + build_number: 3 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.7-h318f0b1_3.conda + sha256: 35100ad81adf31aa4e73ac2956e9a8ff277cc57d0db2db2f0e9c51012175eadd + md5: 9748d0527695a64aa2eb45e891ea188d depends: + - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - - aws-c-http >=0.9.1,<0.9.2.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - aws-c-s3 >=0.7.5,<0.7.6.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 @@ -1832,59 +1833,58 @@ packages: - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 283237 - timestamp: 1733588714381 + size: 355045 + timestamp: 1733744656604 - kind: conda name: aws-crt-cpp version: 0.29.7 - build: ha310de4_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.7-ha310de4_1.conda - sha256: b5ab81d50b6cc2ff70dd56a16b5b9e1cbe8c69e9e357db2abf925d03c5d0133a - md5: 77769ed013cbf8824c1927407ea03c69 + build: hacb6b83_3 + build_number: 3 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.7-hacb6b83_3.conda + sha256: 6c0ece3ca494c2220fc052e608d52ea52bb361e536a14a1b3b36ebeede9de8b9 + md5: 27ce3ed5b7e55370a9fea2dda2b3245a depends: - - __osx >=11.0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - - aws-c-http >=0.9.1,<0.9.2.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - aws-c-s3 >=0.7.5,<0.7.6.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - - libcxx >=18 + - libgcc >=13 + - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 236862 - timestamp: 1733588815005 + size: 283993 + timestamp: 1733744571881 - kind: conda name: aws-crt-cpp version: 0.29.7 - build: ha6b94fc_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.7-ha6b94fc_1.conda - sha256: 5907a2c370f94e5f63c17e4347525d21eb1c00fbd8b731d79ec1eb4e857689ca - md5: f5fb6f6283deb0b4d2c187ad4a7b6d4d + build: hc2c2bbc_3 + build_number: 3 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.7-hc2c2bbc_3.conda + sha256: 6a519151e7fa71fbc9d1cd3a526ea7591638af058a6cc0534e1cd418fd48b354 + md5: 5450324f7b48dff1f6ed5484bf830972 depends: - - __glibc >=2.17,<3.0.a0 + - __osx >=11.0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - - aws-c-http >=0.9.1,<0.9.2.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - aws-c-s3 >=0.7.5,<0.7.6.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - - libgcc >=13 - - libstdcxx >=13 + - libcxx >=18 license: Apache-2.0 license_family: Apache - size: 353873 - timestamp: 1733588735223 + size: 236331 + timestamp: 1733744737078 - kind: conda name: aws-sdk-cpp version: 1.11.458 @@ -2769,19 +2769,20 @@ packages: - kind: conda name: deprecated version: 1.2.15 - build: pyhff2d567_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhff2d567_0.conda - sha256: 48182a27a8fd855db3a402ed914823802f94c3344c87b0d074facc51411296ee - md5: ca75e235b44ab995655fae392f99595e + url: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhd8ed1ab_1.conda + sha256: a20ebf2c9b02a6eb32412ceb5c4cffaae49417db7e75414a76417538293a9402 + md5: eaef2e94d5bd76f758545d172c1fda67 depends: - - python >=2.7 + - python >=3.9 - wrapt <2,>=1.10 license: MIT license_family: MIT - size: 14182 - timestamp: 1731836933516 + size: 14297 + timestamp: 1733662697343 - kind: conda name: dill version: 0.3.7 @@ -3328,14 +3329,13 @@ packages: timestamp: 1732707871414 - kind: conda name: httpx - version: 0.28.0 - build: pyhd8ed1ab_1 - build_number: 1 + version: 0.28.1 + build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_1.conda - sha256: 0b864abaa9f1443fc42368b4d2a4f4efb9971a53f961d1fe30fabd7fbdd76b27 - md5: 8a4a83ba566c6b5c718dd0531a362d01 + url: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda + sha256: cd0f1de3697b252df95f98383e9edb1d00386bfdd03fdf607fa42fe5fcb09950 + md5: d6989ead454181f4f9bc987d3dc4e285 depends: - anyio - certifi @@ -3344,8 +3344,8 @@ packages: - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 63203 - timestamp: 1733501478172 + size: 63082 + timestamp: 1733663449209 - kind: conda name: huggingface_hub version: 0.26.5 @@ -6156,50 +6156,47 @@ packages: timestamp: 1716828607917 - kind: conda name: libsqlite - version: 3.47.0 - build: hadc24fc_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.47.0-hadc24fc_1.conda - sha256: 8a9aadf996a2399f65b679c6e7f29139d5059f699c63e6d7b50e20db10c00508 - md5: b6f02b52a174e612e89548f4663ce56a + version: 3.47.2 + build: h3f77e49_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.47.2-h3f77e49_0.conda + sha256: f192f3c8973de9ec4c214990715f13b781965247a5cedf9162e7f9e699cfc3c4 + md5: 122d6f29470f1a991e85608e77e56a8a depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 + - __osx >=11.0 - libzlib >=1.3.1,<2.0a0 license: Unlicense - size: 875349 - timestamp: 1730208050020 + size: 850553 + timestamp: 1733762057506 - kind: conda name: libsqlite - version: 3.47.0 - build: hbaaea75_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.47.0-hbaaea75_1.conda - sha256: 5a96caa566c11e5a5ebdcdb86a0759a7fb27d3c5f42e6a0fd0d6023c1e935d9e - md5: 07a14fbe439eef078cc479deca321161 + version: 3.47.2 + build: h5eb1b54_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.47.2-h5eb1b54_0.conda + sha256: 885a27fa84a5a73ed9779168c02b6c386e2fc7a53f0566b32a09ceca146b42b4 + md5: d4bf59f8783a4a66c0aec568f6de3ff4 depends: - - __osx >=11.0 + - libgcc >=13 - libzlib >=1.3.1,<2.0a0 license: Unlicense - size: 837683 - timestamp: 1730208293578 + size: 1042182 + timestamp: 1733761913736 - kind: conda name: libsqlite - version: 3.47.0 - build: hc4a20ef_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.47.0-hc4a20ef_1.conda - sha256: 73e143fdb966b61cd25ab804d416d87dfce43ac684e0fac3ad8b1450796331ab - md5: a6b185aac10d08028340858f77231b23 + version: 3.47.2 + build: hee588c1_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.47.2-hee588c1_0.conda + sha256: 48af21ebc2cbf358976f1e0f4a0ab9e91dfc83d0ef337cf3837c6f5bc22fb352 + md5: b58da17db24b6e08bcbf8fed2fb8c915 depends: + - __glibc >=2.17,<3.0.a0 - libgcc >=13 - libzlib >=1.3.1,<2.0a0 license: Unlicense - size: 1041855 - timestamp: 1730208187962 + size: 873551 + timestamp: 1733761824646 - kind: conda name: libssh2 version: 1.11.1 @@ -6939,76 +6936,76 @@ packages: timestamp: 1733417051523 - kind: conda name: max - version: 24.6.0.dev2024120805 + version: 24.6.0.dev2024120905 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120805-release.conda - sha256: f2f1a4e4373ac62de23c41ce28e1483b45322cffe8aef91ef93ce0f65fe5f20d - md5: d41647f3009da6fe575321d46a741dfa + url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120905-release.conda + sha256: 37a6103a6b2c7886ed5837d41a819f1a127eef7e810b2b5ecfb03f7caf263514 + md5: b13d61319f43570ce681408a1b27d9d5 depends: - - max-core ==24.6.0.dev2024120805 release - - max-python >=24.6.0.dev2024120805,<25.0a0 - - mojo-jupyter ==24.6.0.dev2024120805 release - - mblack ==24.6.0.dev2024120805 release + - max-core ==24.6.0.dev2024120905 release + - max-python >=24.6.0.dev2024120905,<25.0a0 + - mojo-jupyter ==24.6.0.dev2024120905 release + - mblack ==24.6.0.dev2024120905 release license: LicenseRef-Modular-Proprietary - size: 9916 - timestamp: 1733635043550 + size: 9911 + timestamp: 1733721408716 - kind: conda name: max-core - version: 24.6.0.dev2024120805 + version: 24.6.0.dev2024120905 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120805-release.conda - sha256: aebf26b21cebf2afdf9063203e542e5e635059c57c5fb9e74478b98f652f8e46 - md5: 620d81f38c5da882ee0799e26d86b0ad + url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120905-release.conda + sha256: 0f94138601ceab2c8b277c7d175d762840072cfdfd0ead7264fbd1ff9f70442d + md5: 00617be1a2fef13b5630d9cbe92f9d3c depends: - - mblack ==24.6.0.dev2024120805 release + - mblack ==24.6.0.dev2024120905 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 247607615 - timestamp: 1733634983707 + size: 247639885 + timestamp: 1733721408714 - kind: conda name: max-core - version: 24.6.0.dev2024120805 + version: 24.6.0.dev2024120905 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120805-release.conda - sha256: 1fc1554d9c39ed5bf22957f02418ee0df4ce4dfc033dd3ca54a7f20c8946b7b3 - md5: 6e7e581fe4e11d252e8729a6cc564b29 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120905-release.conda + sha256: 1aaf2ffb09d6a2aa6b65d76c381476eb88947470580a0d56909bfd578d5eb385 + md5: c7ff53814f0c254c75dc7ab8f0c66b38 depends: - - mblack ==24.6.0.dev2024120805 release + - mblack ==24.6.0.dev2024120905 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 251457302 - timestamp: 1733635043548 + size: 251498878 + timestamp: 1733721396377 - kind: conda name: max-core - version: 24.6.0.dev2024120805 + version: 24.6.0.dev2024120905 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120805-release.conda - sha256: f249a329a1b072ebd9cd365842d54892d4d46a8fb642ab8fb22ff26f211dddb7 - md5: 04d8f67fb1a7deb6147da14b60f668d3 + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120905-release.conda + sha256: 00cc8ce6adc131b858df51423201b8f028aa944ac09e56c563a1108c22eaccd2 + md5: 71554a4c0e81a1034908bc1cb716b30b depends: - - mblack ==24.6.0.dev2024120805 release + - mblack ==24.6.0.dev2024120905 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 212001315 - timestamp: 1733635167877 + size: 212030191 + timestamp: 1733721567995 - kind: conda name: max-python - version: 24.6.0.dev2024120805 + version: 24.6.0.dev2024120905 build: 3.12release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120805-3.12release.conda - sha256: cf488fd0ccfb5a4dbff0891f7dba0e92422a07b6c0047727ab7ebf6a65289e9f - md5: bf821eea63859972e28ce4635cff7dda + url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120905-3.12release.conda + sha256: 43245b47050208329e85a69f2af24d42c622e92e1542334a6106eaadb6cbf0ff + md5: 9a6037de6672120d1d6d53673b699d5b depends: - - max-core ==24.6.0.dev2024120805 release + - max-core ==24.6.0.dev2024120905 release - python 3.12.* - pillow - fastapi @@ -7030,18 +7027,18 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 123750844 - timestamp: 1733634983717 + size: 123751303 + timestamp: 1733721408724 - kind: conda name: max-python - version: 24.6.0.dev2024120805 + version: 24.6.0.dev2024120905 build: 3.12release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120805-3.12release.conda - sha256: 7fe8c12a6ac333dc6f3ea0132e07244131919597c3da16566a18d3657c478126 - md5: 5711b879e00dae9d692d6cf0bcad3717 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120905-3.12release.conda + sha256: fdedbc8a2ca34d0593e8b2175ca07c07d6d0564f138f535ebff02975ef463f55 + md5: bc9f6ce493d2beb1089e1e409bb373ba depends: - - max-core ==24.6.0.dev2024120805 release + - max-core ==24.6.0.dev2024120905 release - python 3.12.* - pillow - fastapi @@ -7063,18 +7060,18 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 127399399 - timestamp: 1733635043558 + size: 127400047 + timestamp: 1733721396388 - kind: conda name: max-python - version: 24.6.0.dev2024120805 + version: 24.6.0.dev2024120905 build: 3.12release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120805-3.12release.conda - sha256: 21cd561dcda4c668566b3e681e44823f6163abb4747f30e4851efb9d04eea1eb - md5: 8737c1d7ff7f04e887c4d80139e2a273 + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120905-3.12release.conda + sha256: 0cd6b2e3bdc78483665045e91b8db7a8a3d6c85fbf4b8a44d6eb742a46361af1 + md5: c1b7eb7d1a43e28224bf41220ece9b58 depends: - - max-core ==24.6.0.dev2024120805 release + - max-core ==24.6.0.dev2024120905 release - python 3.12.* - pillow - fastapi @@ -7096,17 +7093,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 112431285 - timestamp: 1733635167881 + size: 112450493 + timestamp: 1733721567998 - kind: conda name: mblack - version: 24.6.0.dev2024120805 + version: 24.6.0.dev2024120905 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120805-release.conda - sha256: e5f3d6f9e9e7acb97ff8364ddb90e34e38bfe68ba382b3dffacfbf4b9d6c812a - md5: 8a48ed658740aaf0063c754fd35e9cce + url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120905-release.conda + sha256: e302e262a58592b5b8614829237760967d685cb20a44e54981916eb6c2b6b7a2 + md5: b34a59910660011ad1f42bfc1ae4ae54 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -7116,8 +7113,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130744 - timestamp: 1733635043555 + size: 130740 + timestamp: 1733721408720 - kind: conda name: mdurl version: 0.1.2 @@ -7152,21 +7149,21 @@ packages: timestamp: 1733258822603 - kind: conda name: mojo-jupyter - version: 24.6.0.dev2024120805 + version: 24.6.0.dev2024120905 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120805-release.conda - sha256: 1535cecc4930833e604ed39a4450b421914312f4abbb4fc6af9e7aedd5293ffd - md5: ad285352ec9e9061d8facbf62f708d9d + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120905-release.conda + sha256: bb71277508a55875b6011651bc825599e26a47145ab1e9c4e7c2abd853200a00 + md5: 4fc85c9cb1efe841b69d339d4da5b3a1 depends: - - max-core ==24.6.0.dev2024120805 release + - max-core ==24.6.0.dev2024120905 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 11369 - timestamp: 1733635043556 + size: 11366 + timestamp: 1733721408720 - kind: conda name: multidict version: 6.1.0 @@ -7611,21 +7608,21 @@ packages: - kind: conda name: opentelemetry-api version: 1.28.2 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.28.2-pyhd8ed1ab_0.conda - sha256: e267ed59ea8f357c3471defef796ce4f4555eacd9ee0ed2d47d3dd539ee7ee2f - md5: f1307fb38a8fd2220def45ec1691a21c + url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.28.2-pyhd8ed1ab_1.conda + sha256: 780dbc942a6075db7bdbaf556023be50c34a6111a99e465878d7bab0e5e0d7f4 + md5: a06f1e9d97c98d26f06675236c9ea554 depends: - deprecated >=1.2.6 - importlib-metadata >=6.0.0,<7.1.0 - - python >=3.8 + - python >=3.9 - setuptools >=16.0 license: Apache-2.0 - license_family: APACHE - size: 44014 - timestamp: 1731985724169 + size: 44242 + timestamp: 1733734361129 - kind: conda name: opentelemetry-exporter-otlp-proto-common version: 1.28.2 @@ -7721,20 +7718,20 @@ packages: - kind: conda name: opentelemetry-semantic-conventions version: 0.49b2 - build: pyh10f6f8f_0 + build: pyh3cfb1c2_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh10f6f8f_0.conda - sha256: 5e3869ad66082b16d56bab8219fad0c8c09090ec93eb866327eed788fe5c9340 - md5: d95dd6e8a70417e394bb16dad5cff408 + url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh3cfb1c2_1.conda + sha256: 28180ffa6611f117c782c7d72066b50332c1df0bdcfed0dea4e446a20c4b7d10 + md5: e0ada55d18e6bd5a8e61943b4b5d3a8f depends: - deprecated >=1.2.6 - opentelemetry-api 1.28.2 - python >=3.9 license: Apache-2.0 - license_family: APACHE - size: 81534 - timestamp: 1732067304518 + size: 81099 + timestamp: 1733749104727 - kind: conda name: orc version: 2.0.3 @@ -9854,12 +9851,12 @@ packages: timestamp: 1699202167581 - kind: conda name: tokenizers - version: 0.20.4 + version: 0.21.0 build: py312h8360d73_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.20.4-py312h8360d73_0.conda - sha256: 7b59759739b5426e17825b26d6ce9df487d1dc254d4e6a92b14a97107eb6daca - md5: 035c6de3c821559bf1af5ec072593bfd + url: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.21.0-py312h8360d73_0.conda + sha256: 4f504a5e9d77c6d88a8f735c4319429d8bf40b742384f908a2efe0a09acc3cc5 + md5: f953aa733207f3d37acf4a3efbedba89 depends: - __glibc >=2.17,<3.0.a0 - huggingface_hub >=0.16.4,<1.0 @@ -9872,16 +9869,16 @@ packages: - __glibc >=2.17 license: Apache-2.0 license_family: APACHE - size: 2259332 - timestamp: 1732657962717 + size: 2258007 + timestamp: 1732734202127 - kind: conda name: tokenizers - version: 0.20.4 + version: 0.21.0 build: py312ha0d6ea1_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.20.4-py312ha0d6ea1_0.conda - sha256: 6dbb7e5f3f152210817e8658bc454056e464dee16fd9757508f2417edd44d8b8 - md5: b135e3d9178b255993ea4d72741192f8 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.21.0-py312ha0d6ea1_0.conda + sha256: ef0f4d4e2c798b1821187ea0ba4c86484e48abaa0e9a19fe68030fa7ff5dde84 + md5: 077f48c9e0c08a30d842e15c51df4143 depends: - huggingface_hub >=0.16.4,<1.0 - libgcc >=13 @@ -9894,16 +9891,16 @@ packages: - __glibc >=2.17 license: Apache-2.0 license_family: APACHE - size: 2330899 - timestamp: 1732658129796 + size: 2331194 + timestamp: 1732734303196 - kind: conda name: tokenizers - version: 0.20.4 + version: 0.21.0 build: py312hf3e4074_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.20.4-py312hf3e4074_0.conda - sha256: fd86f8a5d41622e8f5092913dea48f41de86258583ee449045905a725672fdc2 - md5: 40e8bc575721b4da76712e90e4a9b7fa + url: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.21.0-py312hf3e4074_0.conda + sha256: 5d395333fcb22dc611140286c1f2ea8b3fa220a4931c583587cb612238091555 + md5: 4c732c74b485ef7ac8ec1c548dd45e8e depends: - __osx >=11.0 - huggingface_hub >=0.16.4,<1.0 @@ -9915,8 +9912,8 @@ packages: - __osx >=11.0 license: Apache-2.0 license_family: APACHE - size: 1933005 - timestamp: 1732658406859 + size: 1931389 + timestamp: 1732734727624 - kind: conda name: tomli version: 2.2.1 @@ -10016,13 +10013,13 @@ packages: timestamp: 1733367480074 - kind: conda name: transformers - version: 4.46.3 + version: 4.47.0 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/transformers-4.46.3-pyhd8ed1ab_0.conda - sha256: 6ae73c0d1197812d8fd6a2c64309fe9abe822feb66b2d330cc61ce9fa60dee0c - md5: 457af723774f077a128515a6fdd536a2 + url: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.0-pyhd8ed1ab_0.conda + sha256: b9cf6ae5fcd6c78dcaa24ebfd41580a4a10b0649ac726a44d3521f70fdece218 + md5: 495745078b8e18fe2dcc3267f4baae0d depends: - datasets !=2.5.0 - filelock @@ -10034,12 +10031,12 @@ packages: - regex !=2019.12.17 - requests - safetensors >=0.4.1 - - tokenizers >=0.20,<0.21 + - tokenizers >=0.21,<0.22 - tqdm >=4.27 license: Apache-2.0 license_family: APACHE - size: 3622494 - timestamp: 1731981383171 + size: 3721837 + timestamp: 1733708797762 - kind: conda name: typer version: 0.15.1 diff --git a/examples/operators/magic.lock b/examples/operators/magic.lock index 255487d649..8f6f1771af 100644 --- a/examples/operators/magic.lock +++ b/examples/operators/magic.lock @@ -14,18 +14,18 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-hb88c0a9_10.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.0-hecf86a2_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-ha4f867e_12.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.1-hecf86a2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.10.3-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.3.0-hf42f96a_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.0-h1ffe551_7.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.1-hab05fe4_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.2-hdeadb07_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h7bd072d_8.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.5-h3a84f74_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.0-h873f81a_8.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.2-ha5a3ca8_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-ha35c7d9_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h56e9cca_9.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.5-h6ad95d4_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.1-hf42f96a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-hf42f96a_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.7-ha6b94fc_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.7-h318f0b1_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-hac138a2_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.10.0-h113e628_0.conda @@ -43,7 +43,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda @@ -63,7 +63,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/httptools-0.6.4-py312h66e93f0_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda @@ -114,7 +114,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.2-h5b01275_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.47.0-hadc24fc_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.47.2-hee588c1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hf672d98_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-hc0a3c3a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_1.conda @@ -131,12 +131,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.9.4-hcb278e6_0.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.dev2024120805-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120805-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120805-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120905-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120905-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120905-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120905-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.dev2024120805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120905-release.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/multiprocess-0.70.15-py312h98912ed_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda @@ -144,13 +144,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.2-h488ebb8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.0-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.28.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.28.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.28.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-prometheus-1.12.0rc1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.28.2-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh10f6f8f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh3cfb1c2_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/orc-2.0.3-he039a57_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.3-py312hf9745cd_1.conda @@ -196,11 +196,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.1.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.20.4-py312h8360d73_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.21.0-py312h8360d73_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.46.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda @@ -231,18 +231,18 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-hac900a4_10.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.0-h35473ba_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-h89ba3c0_12.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.1-h35473ba_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-common-0.10.3-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-compression-0.3.0-h4c7db1d_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-event-stream-0.5.0-h9bacb8c_7.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.1-hf4e072c_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.2-h10eb1bc_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h28a5e6a_8.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.5-h29aef15_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-event-stream-0.5.0-hba6c15e_8.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.2-h697be72_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-h0155602_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h2cca791_9.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.5-h3c51cf6_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.1-h4c7db1d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h4c7db1d_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.7-h6c346da_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.7-hacb6b83_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h5e41cbe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-core-cpp-1.14.0-h1887c18_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-identity-cpp-1.10.0-h47b0b28_0.conda @@ -260,7 +260,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda @@ -280,7 +280,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/httptools-0.6.4-py312hb2c0f52_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda @@ -332,7 +332,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.2-h029595c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.20-h68df207_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.47.0-hc4a20ef_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.47.2-h5eb1b54_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libssh2-1.11.1-ha41c0db_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_1.conda @@ -349,12 +349,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.9.4-hd600fc2_0.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.dev2024120805-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120805-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120805-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120905-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120905-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120905-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120905-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.dev2024120805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120905-release.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/multiprocess-0.70.15-py312hdd3e373_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda @@ -362,13 +362,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openjpeg-2.5.2-h0d9d63b_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.0-h86ecc28_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.28.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.28.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.28.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-prometheus-1.12.0rc1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.28.2-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh10f6f8f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh3cfb1c2_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/orc-2.0.3-h90de224_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pandas-2.2.3-py312ha2895bd_1.conda @@ -414,11 +414,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.1.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.20.4-py312ha0d6ea1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.21.0-py312ha0d6ea1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py312h52516f5_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.46.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda @@ -448,18 +448,18 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-h9b725a8_10.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.0-h5d7ee29_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-h35eccd0_12.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.1-h5d7ee29_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.10.3-h5505292_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-compression-0.3.0-h5d7ee29_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.0-h13ead76_7.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.1-hf483d09_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.2-h39f8ad8_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h68a0d7e_8.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.5-h840aca7_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.0-h8ec3972_8.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.2-h48c6dea_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-h30cefa2_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h3aaadf4_9.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.5-hca3a6f1_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.1-h5d7ee29_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-h5d7ee29_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.7-ha310de4_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.7-hc2c2bbc_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-he4d6490_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.14.0-hd50102c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.10.0-hc602bab_0.conda @@ -477,7 +477,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda @@ -497,7 +497,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/httptools-0.6.4-py312hea69d52_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda @@ -544,7 +544,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.2-h8f0b736_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h2348fd5_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.47.0-hbaaea75_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.47.2-h3f77e49_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.1-h9cc3647_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libthrift-0.21.0-h64651cc_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-ha962b0a_2.conda @@ -558,12 +558,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.9.4-hb7217d7_0.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.dev2024120805-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120805-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120805-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120905-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120905-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120905-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120905-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.dev2024120805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120905-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 @@ -571,13 +571,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openjpeg-2.5.2-h9f1df11_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.0-h39f12f2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.28.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.28.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.28.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-prometheus-1.12.0rc1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.28.2-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh10f6f8f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh3cfb1c2_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/orc-2.0.3-h121fd32_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.3-py312hcd31e36_1.conda @@ -622,11 +622,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.1.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.20.4-py312hf3e4074_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.21.0-py312hf3e4074_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.46.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda @@ -859,107 +859,104 @@ packages: - kind: conda name: aws-c-auth version: 0.8.0 - build: h9b725a8_10 - build_number: 10 + build: h35eccd0_12 + build_number: 12 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-h9b725a8_10.conda - sha256: 63cb8c25e0a26be4261d4271de525e7e33aefe9d9b001b8abfa5c9ac69c3dab3 - md5: 17c90d9eb8c6842fd739dc5445ce9962 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-h35eccd0_12.conda + sha256: 40ca48aee5f3ff0d3ffd64625dacb019104a9a2ee24cd54052cde6fe4cbc8349 + md5: 1109d5293b724ca16b61452accfdb442 depends: - __osx >=11.0 - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - - aws-c-http >=0.9.1,<0.9.2.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 license: Apache-2.0 license_family: Apache - size: 92355 - timestamp: 1731733738919 + size: 92279 + timestamp: 1733611476546 - kind: conda name: aws-c-auth version: 0.8.0 - build: hac900a4_10 - build_number: 10 + build: h89ba3c0_12 + build_number: 12 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-hac900a4_10.conda - sha256: 85c8500ae0570f0d39e6661a120c653e43f0f5f984e2954c44fd358a87776892 - md5: 9ecaef75ebd666dda7caa79154183b02 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-h89ba3c0_12.conda + sha256: 021451014fb5ee24601052d84db8d5babbce5085959ba777b540db4e33bde360 + md5: c0e2e6c3aa8c309af0ba09fc7d949407 depends: - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - - aws-c-http >=0.9.1,<0.9.2.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 111853 - timestamp: 1731733547677 + size: 112242 + timestamp: 1733611425746 - kind: conda name: aws-c-auth version: 0.8.0 - build: hb88c0a9_10 - build_number: 10 + build: ha4f867e_12 + build_number: 12 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-hb88c0a9_10.conda - sha256: d2837a84e6bd7d993a83e79f9e240e1465e375f3d57149ea5b1927c6a4133bcc - md5: 409b7ee6d3473cc62bda7280f6ac20d0 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-ha4f867e_12.conda + sha256: b9355bedf43c857a2d1986ebe7d61e615218f2171d163b509633d6c0c988d2dc + md5: d889de56d3be691063b71eb826470e29 depends: - __glibc >=2.17,<3.0.a0 - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - - aws-c-http >=0.9.1,<0.9.2.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 107163 - timestamp: 1731733534767 + size: 107663 + timestamp: 1733611397256 - kind: conda name: aws-c-cal - version: 0.8.0 - build: h35473ba_2 - build_number: 2 + version: 0.8.1 + build: h35473ba_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.0-h35473ba_2.conda - sha256: 3327a9e65ec531b0c55d17bbcdc436b4e641af1f293d1c2f50e0f16aa79fde60 - md5: 48dc0b3576513622673d3f5f3d163b62 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.1-h35473ba_0.conda + sha256: c2d59d74e167b6df3c1a7addf0d37080b69a6b3dee2a30b3f2171a5d26c5a691 + md5: 97c0ccb4d43d880b38f237e746c29ead depends: - aws-c-common >=0.10.3,<0.10.4.0a0 - libgcc >=13 - openssl >=3.3.1,<4.0a0 license: Apache-2.0 license_family: Apache - size: 49714 - timestamp: 1731678553709 + size: 49808 + timestamp: 1732038238504 - kind: conda name: aws-c-cal - version: 0.8.0 - build: h5d7ee29_2 - build_number: 2 + version: 0.8.1 + build: h5d7ee29_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.0-h5d7ee29_2.conda - sha256: 2a8c09b33400cf2b7d658e63fd5a6f9b6e9626458f6213b904592fc15220bc92 - md5: 92734dad83d22314205ba73b679710d2 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.1-h5d7ee29_0.conda + sha256: 42d5e9fb695bc3b280ed7e625dcda110b6780ee471e227f1b92afce71ae4972c + md5: fc51a61831a676fe6f922450f51ab6af depends: - __osx >=11.0 - aws-c-common >=0.10.3,<0.10.4.0a0 - openssl >=3.3.1,<4.0a0 license: Apache-2.0 license_family: Apache - size: 39966 - timestamp: 1731678721786 + size: 40047 + timestamp: 1732038304022 - kind: conda name: aws-c-cal - version: 0.8.0 - build: hecf86a2_2 - build_number: 2 + version: 0.8.1 + build: hecf86a2_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.0-hecf86a2_2.conda - sha256: 220a37955c120bf2f565fbd5320a82fc4c8b550b2449294bc0509c296cfcb9fa - md5: c54459d686ad9d0502823cacff7e8423 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.1-hecf86a2_0.conda + sha256: 12cc2087503f4f0d3a5db84e791fb5e585866da728f888aa76e14330a092a681 + md5: 8350795be14a92d68847c0d4f3c1d59f depends: - __glibc >=2.17,<3.0.a0 - aws-c-common >=0.10.3,<0.10.4.0a0 @@ -967,8 +964,8 @@ packages: - openssl >=3.3.1,<4.0a0 license: Apache-2.0 license_family: Apache - size: 47477 - timestamp: 1731678510949 + size: 47569 + timestamp: 1732038156682 - kind: conda name: aws-c-common version: 0.10.3 @@ -1064,291 +1061,294 @@ packages: - kind: conda name: aws-c-event-stream version: 0.5.0 - build: h13ead76_7 - build_number: 7 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.0-h13ead76_7.conda - sha256: 386965fab5f0bed4a6109cdba32579f16bee1b0f76ce1db840ce6f7070188f9f - md5: 55a901b6d4fb9ce1bc8328925b229f0b + build: h873f81a_8 + build_number: 8 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.0-h873f81a_8.conda + sha256: 589f9a04c4c7a919410dde75ce93a6986efad6ed522ecd8e5c9c587ac18f0d34 + md5: 32bdd50b43fcc435a8dc5a3c66aafef0 depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - - libcxx >=18 + - libgcc >=13 + - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 47528 - timestamp: 1731714690911 + size: 54020 + timestamp: 1731839177415 - kind: conda name: aws-c-event-stream version: 0.5.0 - build: h1ffe551_7 - build_number: 7 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.0-h1ffe551_7.conda - sha256: 3b780d6483baa889e8df5aa66ab3c439a9c81331cf2a4799e373f4174768ddd9 - md5: 7cce4dfab184f4bbdfc160789251b3c5 + build: h8ec3972_8 + build_number: 8 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.0-h8ec3972_8.conda + sha256: 81b98fc39e64d090af23b11621e467b4f943a19f61dda0fed5ad6397f06de5c7 + md5: ced9c97ddf61e4222d548e8bcc863b87 depends: - - __glibc >=2.17,<3.0.a0 + - __osx >=11.0 - aws-c-common >=0.10.3,<0.10.4.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - - libgcc >=13 - - libstdcxx >=13 + - libcxx >=18 license: Apache-2.0 license_family: Apache - size: 53500 - timestamp: 1731714597524 + size: 47491 + timestamp: 1731839300212 - kind: conda name: aws-c-event-stream version: 0.5.0 - build: h9bacb8c_7 - build_number: 7 + build: hba6c15e_8 + build_number: 8 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-event-stream-0.5.0-h9bacb8c_7.conda - sha256: 2b7bb475330942d94bc359171df19d0cf8b326f15c0c7903a59da54a8add621e - md5: 694020125b66632d6577456d2d9d3c74 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-event-stream-0.5.0-hba6c15e_8.conda + sha256: d3b74580045ee9d54a134ab1e5e00082d5d8a466980e94acc153188ee7375d08 + md5: 102f8b54630d79aff5e0c489f40f926e depends: - aws-c-common >=0.10.3,<0.10.4.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 55054 - timestamp: 1731714599360 + size: 55354 + timestamp: 1731839242373 - kind: conda name: aws-c-http - version: 0.9.1 - build: hab05fe4_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.1-hab05fe4_2.conda - sha256: 90a325b6f5371dd2203b643de646967fe57a4bcbbee8c91086abbf9dd733d59a - md5: fb409f7053fa3dbbdf6eb41045a87795 + version: 0.9.2 + build: h48c6dea_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.2-h48c6dea_1.conda + sha256: cb68d557af1bdcbef668574836fbf39c4df0e4f377258e4d5bd14196acf9b992 + md5: a28dd36a1da76042bfb5579005cc6728 depends: - - __glibc >=2.17,<3.0.a0 - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - __osx >=11.0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - aws-c-compression >=0.3.0,<0.3.1.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 - - libgcc >=13 + - aws-c-io >=0.15.3,<0.15.4.0a0 license: Apache-2.0 license_family: Apache - size: 196945 - timestamp: 1731714483279 + size: 152660 + timestamp: 1732110368931 - kind: conda name: aws-c-http - version: 0.9.1 - build: hf483d09_2 - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.1-hf483d09_2.conda - sha256: fca9ed0f0895bab9bf737c8d8a3314556cb893d45c40f0656f21a93502db3089 - md5: d880c40b8fc7d07374c036f93f1359d2 + version: 0.9.2 + build: h697be72_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.2-h697be72_1.conda + sha256: 4d6557a00e74649301da78d7de7d108882ce89eb9d6c87efce30789b53a617cf + md5: a8b1a2c11a93e615f6e8f33175ff8ff0 depends: - - __osx >=11.0 - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - aws-c-compression >=0.3.0,<0.3.1.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 153315 - timestamp: 1731714621306 + size: 190344 + timestamp: 1732110425530 - kind: conda name: aws-c-http - version: 0.9.1 - build: hf4e072c_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.1-hf4e072c_2.conda - sha256: b9a262451fc91d2fd4ccfcb6dc11ac61d0152c0db765bfe8d089e3e1b70c2150 - md5: fddc197912c16cb95276077f6c7917c5 + version: 0.9.2 + build: ha5a3ca8_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.2-ha5a3ca8_1.conda + sha256: 8ecb3d8411f58db4686635aedfe5d60b2b8870f9f9cafb471f3878dc61d21596 + md5: b2e017f8a4781ad3af9166edf10b65a8 depends: - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - __glibc >=2.17,<3.0.a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - aws-c-compression >=0.3.0,<0.3.1.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 190363 - timestamp: 1731714613945 + size: 197338 + timestamp: 1732110324356 - kind: conda name: aws-c-io - version: 0.15.2 - build: h10eb1bc_2 - build_number: 2 + version: 0.15.3 + build: h0155602_1 + build_number: 1 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.2-h10eb1bc_2.conda - sha256: b8e4206ee1fa58453535c1c08c6aca5bdc92cde026bf7ec20d038786f813239b - md5: 7cdf478bb4feae1a93319f6e3381b8a9 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-h0155602_1.conda + sha256: 7b8d97d51e5bb80191e07f16cac6f59068be30bf5906925a8f4159b3aab9093c + md5: 431c201b11eee90fd120844557a62b02 depends: - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - libgcc >=13 - s2n >=1.5.9,<1.5.10.0a0 license: Apache-2.0 license_family: Apache - size: 162624 - timestamp: 1731702570075 + size: 161664 + timestamp: 1732097310449 - kind: conda name: aws-c-io - version: 0.15.2 - build: h39f8ad8_2 - build_number: 2 + version: 0.15.3 + build: h30cefa2_1 + build_number: 1 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.2-h39f8ad8_2.conda - sha256: b14e32f024f6be1610dccfdb6371e101cba204d24f37c2a63d9b6380ac74ac17 - md5: 3b49f1dd8f20bead8b222828cfdad585 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-h30cefa2_1.conda + sha256: d6f8d42259ca11507bd912b3cd3ff1a65d6d8c7ff67ae9ee9df1686c9bebbbcc + md5: 8b8dc361de09e5b6227165a876e55cb7 depends: - __osx >=11.0 - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 license: Apache-2.0 license_family: Apache - size: 137610 - timestamp: 1731702839896 + size: 136662 + timestamp: 1732097382517 - kind: conda name: aws-c-io - version: 0.15.2 - build: hdeadb07_2 - build_number: 2 + version: 0.15.3 + build: ha35c7d9_1 + build_number: 1 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.2-hdeadb07_2.conda - sha256: 1636136a5d882b4aaa13ea8b7de8cf07038a6878872e3c434df9daf478cee594 - md5: 461a1eaa075fd391add91bcffc9de0c1 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-ha35c7d9_1.conda + sha256: 2e9e13ed54f6da22ee5d06622f4165bcca253411997dad62225aecc54b25c0db + md5: 97960f380abe1ba3157fe63312e35b07 depends: - __glibc >=2.17,<3.0.a0 - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - libgcc >=13 - s2n >=1.5.9,<1.5.10.0a0 license: Apache-2.0 license_family: Apache - size: 159368 - timestamp: 1731702542973 + size: 158012 + timestamp: 1732097264673 - kind: conda name: aws-c-mqtt version: 0.11.0 - build: h28a5e6a_8 - build_number: 8 + build: h2cca791_9 + build_number: 9 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h28a5e6a_8.conda - sha256: aad8c9a5c24953cdebf17efa7ec06b5639e14072d4fa70c5c0607d7ad913ba88 - md5: 5250ce3b5154c0347b7576015a7c6cef + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h2cca791_9.conda + sha256: c0ad176bab176a2983fb052de71037fc9357afd13b073511a7a440c1a8c6eff2 + md5: 090674d608454e979ce77bc8ee735868 depends: - aws-c-common >=0.10.3,<0.10.4.0a0 - - aws-c-http >=0.9.1,<0.9.2.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 169040 - timestamp: 1731734203264 + size: 169690 + timestamp: 1733688313938 - kind: conda name: aws-c-mqtt version: 0.11.0 - build: h68a0d7e_8 - build_number: 8 + build: h3aaadf4_9 + build_number: 9 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h68a0d7e_8.conda - sha256: 837c24c105624e16ace94b4b566ffe45231ff275339c523571ebd45946926156 - md5: 9e3ac70d27e7591b1310a690768cfe27 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h3aaadf4_9.conda + sha256: 3cc99239c8dadfe55e4b9ba37d03c5d3308ddd8fe00792fab7c6b47c97655c07 + md5: ddb5dc7ac1ae424ca2b7a847765a0cb9 depends: - __osx >=11.0 - aws-c-common >=0.10.3,<0.10.4.0a0 - - aws-c-http >=0.9.1,<0.9.2.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 license: Apache-2.0 license_family: Apache - size: 134573 - timestamp: 1731734281038 + size: 135051 + timestamp: 1733688394116 - kind: conda name: aws-c-mqtt version: 0.11.0 - build: h7bd072d_8 - build_number: 8 + build: h56e9cca_9 + build_number: 9 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h7bd072d_8.conda - sha256: 51d3d87a47c642096e2ce389a169aec2e26958042e9130857552a12d65a19045 - md5: 0e9d67838114c0dbd267a9311268b331 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h56e9cca_9.conda + sha256: c93c29b58482ca72d3f9a5710ad92194e809a9de988bcdcbae9ddd0f8ed484a6 + md5: f75642fe24ae4131f554cbacd6df53e3 depends: - __glibc >=2.17,<3.0.a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - - aws-c-http >=0.9.1,<0.9.2.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 194447 - timestamp: 1731734668760 + size: 194705 + timestamp: 1733688770217 - kind: conda name: aws-c-s3 version: 0.7.5 - build: h29aef15_0 + build: h3c51cf6_2 + build_number: 2 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.5-h29aef15_0.conda - sha256: 2aef28beec88df561f7f4d0f7ec7fea6cf54a1d6c8516fd243a4269d320f06cb - md5: 98609602eb077c7b5225d3aa1467f789 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.5-h3c51cf6_2.conda + sha256: 98a2df8a5068183e55b4c6914a3513d403300be20c960842a9a229546b8e8e52 + md5: e326ddae95b3ec96a31aded04c834175 depends: - aws-c-auth >=0.8.0,<0.8.1.0a0 - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - - aws-c-http >=0.9.1,<0.9.2.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - libgcc >=13 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 117067 - timestamp: 1733565203669 + size: 117896 + timestamp: 1733694002769 - kind: conda name: aws-c-s3 version: 0.7.5 - build: h3a84f74_0 + build: h6ad95d4_2 + build_number: 2 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.5-h3a84f74_0.conda - sha256: eb2534517bdaccf2953716e49e8b918ffe7e78a524c6321fae30c3dd7f46cb0d - md5: a13702b87657cf2d0cdd338fe55f4ba1 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.5-h6ad95d4_2.conda + sha256: 103a478b18ead8f79aae9a4966b2879e9fbcfb0aa3b2e6c9b2811a76ba34610e + md5: 682c079ec089d47bb7142f12b3275e4f depends: - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - - aws-c-http >=0.9.1,<0.9.2.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - libgcc >=13 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 113877 - timestamp: 1733565162763 + size: 113741 + timestamp: 1733693956970 - kind: conda name: aws-c-s3 version: 0.7.5 - build: h840aca7_0 + build: hca3a6f1_2 + build_number: 2 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.5-h840aca7_0.conda - sha256: 30782a1392883d26a441fc2857985136888aa454efbea8b85bbcbb7a7ad3d2e2 - md5: 1d33c89e2462b6b0056bfb883b76d2fb + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.5-hca3a6f1_2.conda + sha256: 53c4dc6e360ed6e1242c20fa43f7bfe67a41215e51cafab27dbd8aa91333040c + md5: 0b4e647cae3ce85ec991c6e3b8d12bda depends: - __osx >=11.0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - - aws-c-http >=0.9.1,<0.9.2.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 license: Apache-2.0 license_family: Apache - size: 98296 - timestamp: 1733565277623 + size: 97530 + timestamp: 1733694097526 - kind: conda name: aws-c-sdkutils version: 0.2.1 @@ -1450,19 +1450,20 @@ packages: - kind: conda name: aws-crt-cpp version: 0.29.7 - build: h6c346da_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.7-h6c346da_1.conda - sha256: 9a60a93dbe896acf533dded5f4ae11546ff4fb6a9fb0e06db6d915206ba0b1f2 - md5: cf87fc73eee6dbfc12dec79444d5dfc0 + build: h318f0b1_3 + build_number: 3 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.7-h318f0b1_3.conda + sha256: 35100ad81adf31aa4e73ac2956e9a8ff277cc57d0db2db2f0e9c51012175eadd + md5: 9748d0527695a64aa2eb45e891ea188d depends: + - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - - aws-c-http >=0.9.1,<0.9.2.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - aws-c-s3 >=0.7.5,<0.7.6.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 @@ -1470,59 +1471,58 @@ packages: - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 283237 - timestamp: 1733588714381 + size: 355045 + timestamp: 1733744656604 - kind: conda name: aws-crt-cpp version: 0.29.7 - build: ha310de4_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.7-ha310de4_1.conda - sha256: b5ab81d50b6cc2ff70dd56a16b5b9e1cbe8c69e9e357db2abf925d03c5d0133a - md5: 77769ed013cbf8824c1927407ea03c69 + build: hacb6b83_3 + build_number: 3 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.7-hacb6b83_3.conda + sha256: 6c0ece3ca494c2220fc052e608d52ea52bb361e536a14a1b3b36ebeede9de8b9 + md5: 27ce3ed5b7e55370a9fea2dda2b3245a depends: - - __osx >=11.0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - - aws-c-http >=0.9.1,<0.9.2.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - aws-c-s3 >=0.7.5,<0.7.6.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - - libcxx >=18 + - libgcc >=13 + - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 236862 - timestamp: 1733588815005 + size: 283993 + timestamp: 1733744571881 - kind: conda name: aws-crt-cpp version: 0.29.7 - build: ha6b94fc_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.7-ha6b94fc_1.conda - sha256: 5907a2c370f94e5f63c17e4347525d21eb1c00fbd8b731d79ec1eb4e857689ca - md5: f5fb6f6283deb0b4d2c187ad4a7b6d4d + build: hc2c2bbc_3 + build_number: 3 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.7-hc2c2bbc_3.conda + sha256: 6a519151e7fa71fbc9d1cd3a526ea7591638af058a6cc0534e1cd418fd48b354 + md5: 5450324f7b48dff1f6ed5484bf830972 depends: - - __glibc >=2.17,<3.0.a0 + - __osx >=11.0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - - aws-c-http >=0.9.1,<0.9.2.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - aws-c-s3 >=0.7.5,<0.7.6.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - - libgcc >=13 - - libstdcxx >=13 + - libcxx >=18 license: Apache-2.0 license_family: Apache - size: 353873 - timestamp: 1733588735223 + size: 236331 + timestamp: 1733744737078 - kind: conda name: aws-sdk-cpp version: 1.11.458 @@ -2222,19 +2222,20 @@ packages: - kind: conda name: deprecated version: 1.2.15 - build: pyhff2d567_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhff2d567_0.conda - sha256: 48182a27a8fd855db3a402ed914823802f94c3344c87b0d074facc51411296ee - md5: ca75e235b44ab995655fae392f99595e + url: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhd8ed1ab_1.conda + sha256: a20ebf2c9b02a6eb32412ceb5c4cffaae49417db7e75414a76417538293a9402 + md5: eaef2e94d5bd76f758545d172c1fda67 depends: - - python >=2.7 + - python >=3.9 - wrapt <2,>=1.10 license: MIT license_family: MIT - size: 14182 - timestamp: 1731836933516 + size: 14297 + timestamp: 1733662697343 - kind: conda name: dill version: 0.3.7 @@ -2732,14 +2733,13 @@ packages: timestamp: 1732707871414 - kind: conda name: httpx - version: 0.28.0 - build: pyhd8ed1ab_1 - build_number: 1 + version: 0.28.1 + build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_1.conda - sha256: 0b864abaa9f1443fc42368b4d2a4f4efb9971a53f961d1fe30fabd7fbdd76b27 - md5: 8a4a83ba566c6b5c718dd0531a362d01 + url: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda + sha256: cd0f1de3697b252df95f98383e9edb1d00386bfdd03fdf607fa42fe5fcb09950 + md5: d6989ead454181f4f9bc987d3dc4e285 depends: - anyio - certifi @@ -2748,8 +2748,8 @@ packages: - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 63203 - timestamp: 1733501478172 + size: 63082 + timestamp: 1733663449209 - kind: conda name: huggingface_hub version: 0.26.5 @@ -5128,50 +5128,47 @@ packages: timestamp: 1716828607917 - kind: conda name: libsqlite - version: 3.47.0 - build: hadc24fc_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.47.0-hadc24fc_1.conda - sha256: 8a9aadf996a2399f65b679c6e7f29139d5059f699c63e6d7b50e20db10c00508 - md5: b6f02b52a174e612e89548f4663ce56a + version: 3.47.2 + build: h3f77e49_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.47.2-h3f77e49_0.conda + sha256: f192f3c8973de9ec4c214990715f13b781965247a5cedf9162e7f9e699cfc3c4 + md5: 122d6f29470f1a991e85608e77e56a8a depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 + - __osx >=11.0 - libzlib >=1.3.1,<2.0a0 license: Unlicense - size: 875349 - timestamp: 1730208050020 + size: 850553 + timestamp: 1733762057506 - kind: conda name: libsqlite - version: 3.47.0 - build: hbaaea75_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.47.0-hbaaea75_1.conda - sha256: 5a96caa566c11e5a5ebdcdb86a0759a7fb27d3c5f42e6a0fd0d6023c1e935d9e - md5: 07a14fbe439eef078cc479deca321161 + version: 3.47.2 + build: h5eb1b54_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.47.2-h5eb1b54_0.conda + sha256: 885a27fa84a5a73ed9779168c02b6c386e2fc7a53f0566b32a09ceca146b42b4 + md5: d4bf59f8783a4a66c0aec568f6de3ff4 depends: - - __osx >=11.0 + - libgcc >=13 - libzlib >=1.3.1,<2.0a0 license: Unlicense - size: 837683 - timestamp: 1730208293578 + size: 1042182 + timestamp: 1733761913736 - kind: conda name: libsqlite - version: 3.47.0 - build: hc4a20ef_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.47.0-hc4a20ef_1.conda - sha256: 73e143fdb966b61cd25ab804d416d87dfce43ac684e0fac3ad8b1450796331ab - md5: a6b185aac10d08028340858f77231b23 + version: 3.47.2 + build: hee588c1_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.47.2-hee588c1_0.conda + sha256: 48af21ebc2cbf358976f1e0f4a0ab9e91dfc83d0ef337cf3837c6f5bc22fb352 + md5: b58da17db24b6e08bcbf8fed2fb8c915 depends: + - __glibc >=2.17,<3.0.a0 - libgcc >=13 - libzlib >=1.3.1,<2.0a0 license: Unlicense - size: 1041855 - timestamp: 1730208187962 + size: 873551 + timestamp: 1733761824646 - kind: conda name: libssh2 version: 1.11.1 @@ -5894,76 +5891,76 @@ packages: timestamp: 1733219945697 - kind: conda name: max - version: 24.6.0.dev2024120805 + version: 24.6.0.dev2024120905 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120805-release.conda - sha256: f2f1a4e4373ac62de23c41ce28e1483b45322cffe8aef91ef93ce0f65fe5f20d - md5: d41647f3009da6fe575321d46a741dfa - depends: - - max-core ==24.6.0.dev2024120805 release - - max-python >=24.6.0.dev2024120805,<25.0a0 - - mojo-jupyter ==24.6.0.dev2024120805 release - - mblack ==24.6.0.dev2024120805 release + url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120905-release.conda + sha256: 37a6103a6b2c7886ed5837d41a819f1a127eef7e810b2b5ecfb03f7caf263514 + md5: b13d61319f43570ce681408a1b27d9d5 + depends: + - max-core ==24.6.0.dev2024120905 release + - max-python >=24.6.0.dev2024120905,<25.0a0 + - mojo-jupyter ==24.6.0.dev2024120905 release + - mblack ==24.6.0.dev2024120905 release license: LicenseRef-Modular-Proprietary - size: 9916 - timestamp: 1733635043550 + size: 9911 + timestamp: 1733721408716 - kind: conda name: max-core - version: 24.6.0.dev2024120805 + version: 24.6.0.dev2024120905 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120805-release.conda - sha256: aebf26b21cebf2afdf9063203e542e5e635059c57c5fb9e74478b98f652f8e46 - md5: 620d81f38c5da882ee0799e26d86b0ad + url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120905-release.conda + sha256: 0f94138601ceab2c8b277c7d175d762840072cfdfd0ead7264fbd1ff9f70442d + md5: 00617be1a2fef13b5630d9cbe92f9d3c depends: - - mblack ==24.6.0.dev2024120805 release + - mblack ==24.6.0.dev2024120905 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 247607615 - timestamp: 1733634983707 + size: 247639885 + timestamp: 1733721408714 - kind: conda name: max-core - version: 24.6.0.dev2024120805 + version: 24.6.0.dev2024120905 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120805-release.conda - sha256: 1fc1554d9c39ed5bf22957f02418ee0df4ce4dfc033dd3ca54a7f20c8946b7b3 - md5: 6e7e581fe4e11d252e8729a6cc564b29 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120905-release.conda + sha256: 1aaf2ffb09d6a2aa6b65d76c381476eb88947470580a0d56909bfd578d5eb385 + md5: c7ff53814f0c254c75dc7ab8f0c66b38 depends: - - mblack ==24.6.0.dev2024120805 release + - mblack ==24.6.0.dev2024120905 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 251457302 - timestamp: 1733635043548 + size: 251498878 + timestamp: 1733721396377 - kind: conda name: max-core - version: 24.6.0.dev2024120805 + version: 24.6.0.dev2024120905 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120805-release.conda - sha256: f249a329a1b072ebd9cd365842d54892d4d46a8fb642ab8fb22ff26f211dddb7 - md5: 04d8f67fb1a7deb6147da14b60f668d3 + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120905-release.conda + sha256: 00cc8ce6adc131b858df51423201b8f028aa944ac09e56c563a1108c22eaccd2 + md5: 71554a4c0e81a1034908bc1cb716b30b depends: - - mblack ==24.6.0.dev2024120805 release + - mblack ==24.6.0.dev2024120905 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 212001315 - timestamp: 1733635167877 + size: 212030191 + timestamp: 1733721567995 - kind: conda name: max-python - version: 24.6.0.dev2024120805 + version: 24.6.0.dev2024120905 build: 3.12release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120805-3.12release.conda - sha256: cf488fd0ccfb5a4dbff0891f7dba0e92422a07b6c0047727ab7ebf6a65289e9f - md5: bf821eea63859972e28ce4635cff7dda + url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120905-3.12release.conda + sha256: 43245b47050208329e85a69f2af24d42c622e92e1542334a6106eaadb6cbf0ff + md5: 9a6037de6672120d1d6d53673b699d5b depends: - - max-core ==24.6.0.dev2024120805 release + - max-core ==24.6.0.dev2024120905 release - python 3.12.* - pillow - fastapi @@ -5985,18 +5982,18 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 123750844 - timestamp: 1733634983717 + size: 123751303 + timestamp: 1733721408724 - kind: conda name: max-python - version: 24.6.0.dev2024120805 + version: 24.6.0.dev2024120905 build: 3.12release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120805-3.12release.conda - sha256: 7fe8c12a6ac333dc6f3ea0132e07244131919597c3da16566a18d3657c478126 - md5: 5711b879e00dae9d692d6cf0bcad3717 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120905-3.12release.conda + sha256: fdedbc8a2ca34d0593e8b2175ca07c07d6d0564f138f535ebff02975ef463f55 + md5: bc9f6ce493d2beb1089e1e409bb373ba depends: - - max-core ==24.6.0.dev2024120805 release + - max-core ==24.6.0.dev2024120905 release - python 3.12.* - pillow - fastapi @@ -6018,18 +6015,18 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 127399399 - timestamp: 1733635043558 + size: 127400047 + timestamp: 1733721396388 - kind: conda name: max-python - version: 24.6.0.dev2024120805 + version: 24.6.0.dev2024120905 build: 3.12release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120805-3.12release.conda - sha256: 21cd561dcda4c668566b3e681e44823f6163abb4747f30e4851efb9d04eea1eb - md5: 8737c1d7ff7f04e887c4d80139e2a273 + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120905-3.12release.conda + sha256: 0cd6b2e3bdc78483665045e91b8db7a8a3d6c85fbf4b8a44d6eb742a46361af1 + md5: c1b7eb7d1a43e28224bf41220ece9b58 depends: - - max-core ==24.6.0.dev2024120805 release + - max-core ==24.6.0.dev2024120905 release - python 3.12.* - pillow - fastapi @@ -6051,17 +6048,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 112431285 - timestamp: 1733635167881 + size: 112450493 + timestamp: 1733721567998 - kind: conda name: mblack - version: 24.6.0.dev2024120805 + version: 24.6.0.dev2024120905 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120805-release.conda - sha256: e5f3d6f9e9e7acb97ff8364ddb90e34e38bfe68ba382b3dffacfbf4b9d6c812a - md5: 8a48ed658740aaf0063c754fd35e9cce + url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120905-release.conda + sha256: e302e262a58592b5b8614829237760967d685cb20a44e54981916eb6c2b6b7a2 + md5: b34a59910660011ad1f42bfc1ae4ae54 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -6071,8 +6068,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130744 - timestamp: 1733635043555 + size: 130740 + timestamp: 1733721408720 - kind: conda name: mdurl version: 0.1.2 @@ -6091,21 +6088,21 @@ packages: timestamp: 1733255681319 - kind: conda name: mojo-jupyter - version: 24.6.0.dev2024120805 + version: 24.6.0.dev2024120905 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120805-release.conda - sha256: 1535cecc4930833e604ed39a4450b421914312f4abbb4fc6af9e7aedd5293ffd - md5: ad285352ec9e9061d8facbf62f708d9d + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120905-release.conda + sha256: bb71277508a55875b6011651bc825599e26a47145ab1e9c4e7c2abd853200a00 + md5: 4fc85c9cb1efe841b69d339d4da5b3a1 depends: - - max-core ==24.6.0.dev2024120805 release + - max-core ==24.6.0.dev2024120905 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 11369 - timestamp: 1733635043556 + size: 11366 + timestamp: 1733721408720 - kind: conda name: multidict version: 6.1.0 @@ -6443,21 +6440,21 @@ packages: - kind: conda name: opentelemetry-api version: 1.28.2 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.28.2-pyhd8ed1ab_0.conda - sha256: e267ed59ea8f357c3471defef796ce4f4555eacd9ee0ed2d47d3dd539ee7ee2f - md5: f1307fb38a8fd2220def45ec1691a21c + url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.28.2-pyhd8ed1ab_1.conda + sha256: 780dbc942a6075db7bdbaf556023be50c34a6111a99e465878d7bab0e5e0d7f4 + md5: a06f1e9d97c98d26f06675236c9ea554 depends: - deprecated >=1.2.6 - importlib-metadata >=6.0.0,<7.1.0 - - python >=3.8 + - python >=3.9 - setuptools >=16.0 license: Apache-2.0 - license_family: APACHE - size: 44014 - timestamp: 1731985724169 + size: 44242 + timestamp: 1733734361129 - kind: conda name: opentelemetry-exporter-otlp-proto-common version: 1.28.2 @@ -6553,20 +6550,20 @@ packages: - kind: conda name: opentelemetry-semantic-conventions version: 0.49b2 - build: pyh10f6f8f_0 + build: pyh3cfb1c2_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh10f6f8f_0.conda - sha256: 5e3869ad66082b16d56bab8219fad0c8c09090ec93eb866327eed788fe5c9340 - md5: d95dd6e8a70417e394bb16dad5cff408 + url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh3cfb1c2_1.conda + sha256: 28180ffa6611f117c782c7d72066b50332c1df0bdcfed0dea4e446a20c4b7d10 + md5: e0ada55d18e6bd5a8e61943b4b5d3a8f depends: - deprecated >=1.2.6 - opentelemetry-api 1.28.2 - python >=3.9 license: Apache-2.0 - license_family: APACHE - size: 81534 - timestamp: 1732067304518 + size: 81099 + timestamp: 1733749104727 - kind: conda name: orc version: 2.0.3 @@ -8196,12 +8193,12 @@ packages: timestamp: 1699202167581 - kind: conda name: tokenizers - version: 0.20.4 + version: 0.21.0 build: py312h8360d73_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.20.4-py312h8360d73_0.conda - sha256: 7b59759739b5426e17825b26d6ce9df487d1dc254d4e6a92b14a97107eb6daca - md5: 035c6de3c821559bf1af5ec072593bfd + url: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.21.0-py312h8360d73_0.conda + sha256: 4f504a5e9d77c6d88a8f735c4319429d8bf40b742384f908a2efe0a09acc3cc5 + md5: f953aa733207f3d37acf4a3efbedba89 depends: - __glibc >=2.17,<3.0.a0 - huggingface_hub >=0.16.4,<1.0 @@ -8214,16 +8211,16 @@ packages: - __glibc >=2.17 license: Apache-2.0 license_family: APACHE - size: 2259332 - timestamp: 1732657962717 + size: 2258007 + timestamp: 1732734202127 - kind: conda name: tokenizers - version: 0.20.4 + version: 0.21.0 build: py312ha0d6ea1_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.20.4-py312ha0d6ea1_0.conda - sha256: 6dbb7e5f3f152210817e8658bc454056e464dee16fd9757508f2417edd44d8b8 - md5: b135e3d9178b255993ea4d72741192f8 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.21.0-py312ha0d6ea1_0.conda + sha256: ef0f4d4e2c798b1821187ea0ba4c86484e48abaa0e9a19fe68030fa7ff5dde84 + md5: 077f48c9e0c08a30d842e15c51df4143 depends: - huggingface_hub >=0.16.4,<1.0 - libgcc >=13 @@ -8236,16 +8233,16 @@ packages: - __glibc >=2.17 license: Apache-2.0 license_family: APACHE - size: 2330899 - timestamp: 1732658129796 + size: 2331194 + timestamp: 1732734303196 - kind: conda name: tokenizers - version: 0.20.4 + version: 0.21.0 build: py312hf3e4074_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.20.4-py312hf3e4074_0.conda - sha256: fd86f8a5d41622e8f5092913dea48f41de86258583ee449045905a725672fdc2 - md5: 40e8bc575721b4da76712e90e4a9b7fa + url: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.21.0-py312hf3e4074_0.conda + sha256: 5d395333fcb22dc611140286c1f2ea8b3fa220a4931c583587cb612238091555 + md5: 4c732c74b485ef7ac8ec1c548dd45e8e depends: - __osx >=11.0 - huggingface_hub >=0.16.4,<1.0 @@ -8257,8 +8254,8 @@ packages: - __osx >=11.0 license: Apache-2.0 license_family: APACHE - size: 1933005 - timestamp: 1732658406859 + size: 1931389 + timestamp: 1732734727624 - kind: conda name: tornado version: 6.4.2 @@ -8342,13 +8339,13 @@ packages: timestamp: 1733367480074 - kind: conda name: transformers - version: 4.46.3 + version: 4.47.0 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/transformers-4.46.3-pyhd8ed1ab_0.conda - sha256: 6ae73c0d1197812d8fd6a2c64309fe9abe822feb66b2d330cc61ce9fa60dee0c - md5: 457af723774f077a128515a6fdd536a2 + url: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.0-pyhd8ed1ab_0.conda + sha256: b9cf6ae5fcd6c78dcaa24ebfd41580a4a10b0649ac726a44d3521f70fdece218 + md5: 495745078b8e18fe2dcc3267f4baae0d depends: - datasets !=2.5.0 - filelock @@ -8360,12 +8357,12 @@ packages: - regex !=2019.12.17 - requests - safetensors >=0.4.1 - - tokenizers >=0.20,<0.21 + - tokenizers >=0.21,<0.22 - tqdm >=4.27 license: Apache-2.0 license_family: APACHE - size: 3622494 - timestamp: 1731981383171 + size: 3721837 + timestamp: 1733708797762 - kind: conda name: typer version: 0.15.1 diff --git a/magic.lock b/magic.lock index 1860c5f8d3..23716422b9 100644 --- a/magic.lock +++ b/magic.lock @@ -14,18 +14,18 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-hb88c0a9_10.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.0-hecf86a2_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-ha4f867e_12.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.1-hecf86a2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.10.3-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.3.0-hf42f96a_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.0-h1ffe551_7.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.1-hab05fe4_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.2-hdeadb07_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h7bd072d_8.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.5-h3a84f74_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.0-h873f81a_8.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.2-ha5a3ca8_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-ha35c7d9_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h56e9cca_9.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.5-h6ad95d4_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.1-hf42f96a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-hf42f96a_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.7-ha6b94fc_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.7-h318f0b1_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-hac138a2_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.10.0-h113e628_0.conda @@ -43,7 +43,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda @@ -63,7 +63,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/httptools-0.6.4-py312h66e93f0_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda @@ -114,7 +114,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.2-h5b01275_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.47.0-hadc24fc_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.47.2-hee588c1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hf672d98_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-hc0a3c3a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_1.conda @@ -132,12 +132,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.9.4-hcb278e6_0.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.dev2024120805-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120805-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120805-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120905-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120905-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120905-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120905-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.dev2024120805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120905-release.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/multiprocess-0.70.15-py312h98912ed_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda @@ -145,13 +145,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.2-h488ebb8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.0-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.28.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.28.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.28.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-prometheus-1.12.0rc1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.28.2-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh10f6f8f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh3cfb1c2_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/orc-2.0.3-he039a57_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.3-py312hf9745cd_1.conda @@ -197,11 +197,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.1.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.20.4-py312h8360d73_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.21.0-py312h8360d73_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.46.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda @@ -232,18 +232,18 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-hac900a4_10.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.0-h35473ba_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-h89ba3c0_12.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.1-h35473ba_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-common-0.10.3-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-compression-0.3.0-h4c7db1d_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-event-stream-0.5.0-h9bacb8c_7.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.1-hf4e072c_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.2-h10eb1bc_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h28a5e6a_8.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.5-h29aef15_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-event-stream-0.5.0-hba6c15e_8.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.2-h697be72_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-h0155602_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h2cca791_9.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.5-h3c51cf6_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.1-h4c7db1d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h4c7db1d_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.7-h6c346da_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.7-hacb6b83_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h5e41cbe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-core-cpp-1.14.0-h1887c18_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-identity-cpp-1.10.0-h47b0b28_0.conda @@ -261,7 +261,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda @@ -281,7 +281,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/httptools-0.6.4-py312hb2c0f52_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda @@ -333,7 +333,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.2-h029595c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.20-h68df207_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.47.0-hc4a20ef_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.47.2-h5eb1b54_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libssh2-1.11.1-ha41c0db_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_1.conda @@ -351,12 +351,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.9.4-hd600fc2_0.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.dev2024120805-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120805-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120805-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120905-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120905-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120905-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120905-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.dev2024120805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120905-release.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/multiprocess-0.70.15-py312hdd3e373_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda @@ -364,13 +364,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openjpeg-2.5.2-h0d9d63b_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.0-h86ecc28_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.28.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.28.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.28.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-prometheus-1.12.0rc1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.28.2-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh10f6f8f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh3cfb1c2_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/orc-2.0.3-h90de224_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pandas-2.2.3-py312ha2895bd_1.conda @@ -416,11 +416,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.1.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.20.4-py312ha0d6ea1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.21.0-py312ha0d6ea1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py312h52516f5_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.46.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda @@ -450,18 +450,18 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-h9b725a8_10.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.0-h5d7ee29_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-h35eccd0_12.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.1-h5d7ee29_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.10.3-h5505292_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-compression-0.3.0-h5d7ee29_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.0-h13ead76_7.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.1-hf483d09_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.2-h39f8ad8_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h68a0d7e_8.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.5-h840aca7_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.0-h8ec3972_8.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.2-h48c6dea_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-h30cefa2_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h3aaadf4_9.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.5-hca3a6f1_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.1-h5d7ee29_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-h5d7ee29_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.7-ha310de4_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.7-hc2c2bbc_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-he4d6490_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.14.0-hd50102c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.10.0-hc602bab_0.conda @@ -479,7 +479,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda @@ -499,7 +499,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/httptools-0.6.4-py312hea69d52_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda @@ -546,7 +546,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.2-h8f0b736_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h2348fd5_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.47.0-hbaaea75_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.47.2-h3f77e49_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.1-h9cc3647_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libthrift-0.21.0-h64651cc_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-ha962b0a_2.conda @@ -561,12 +561,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.9.4-hb7217d7_0.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.dev2024120805-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120805-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120805-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120905-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120905-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120905-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120905-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.dev2024120805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120905-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 @@ -574,13 +574,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openjpeg-2.5.2-h9f1df11_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.0-h39f12f2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.28.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.28.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.28.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-prometheus-1.12.0rc1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.28.2-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh10f6f8f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh3cfb1c2_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/orc-2.0.3-h121fd32_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.3-py312hcd31e36_1.conda @@ -625,11 +625,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.1.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.20.4-py312hf3e4074_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.21.0-py312hf3e4074_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.46.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda @@ -862,107 +862,104 @@ packages: - kind: conda name: aws-c-auth version: 0.8.0 - build: h9b725a8_10 - build_number: 10 + build: h35eccd0_12 + build_number: 12 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-h9b725a8_10.conda - sha256: 63cb8c25e0a26be4261d4271de525e7e33aefe9d9b001b8abfa5c9ac69c3dab3 - md5: 17c90d9eb8c6842fd739dc5445ce9962 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-h35eccd0_12.conda + sha256: 40ca48aee5f3ff0d3ffd64625dacb019104a9a2ee24cd54052cde6fe4cbc8349 + md5: 1109d5293b724ca16b61452accfdb442 depends: - __osx >=11.0 - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - - aws-c-http >=0.9.1,<0.9.2.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 license: Apache-2.0 license_family: Apache - size: 92355 - timestamp: 1731733738919 + size: 92279 + timestamp: 1733611476546 - kind: conda name: aws-c-auth version: 0.8.0 - build: hac900a4_10 - build_number: 10 + build: h89ba3c0_12 + build_number: 12 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-hac900a4_10.conda - sha256: 85c8500ae0570f0d39e6661a120c653e43f0f5f984e2954c44fd358a87776892 - md5: 9ecaef75ebd666dda7caa79154183b02 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-h89ba3c0_12.conda + sha256: 021451014fb5ee24601052d84db8d5babbce5085959ba777b540db4e33bde360 + md5: c0e2e6c3aa8c309af0ba09fc7d949407 depends: - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - - aws-c-http >=0.9.1,<0.9.2.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 111853 - timestamp: 1731733547677 + size: 112242 + timestamp: 1733611425746 - kind: conda name: aws-c-auth version: 0.8.0 - build: hb88c0a9_10 - build_number: 10 + build: ha4f867e_12 + build_number: 12 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-hb88c0a9_10.conda - sha256: d2837a84e6bd7d993a83e79f9e240e1465e375f3d57149ea5b1927c6a4133bcc - md5: 409b7ee6d3473cc62bda7280f6ac20d0 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-ha4f867e_12.conda + sha256: b9355bedf43c857a2d1986ebe7d61e615218f2171d163b509633d6c0c988d2dc + md5: d889de56d3be691063b71eb826470e29 depends: - __glibc >=2.17,<3.0.a0 - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - - aws-c-http >=0.9.1,<0.9.2.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 107163 - timestamp: 1731733534767 + size: 107663 + timestamp: 1733611397256 - kind: conda name: aws-c-cal - version: 0.8.0 - build: h35473ba_2 - build_number: 2 + version: 0.8.1 + build: h35473ba_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.0-h35473ba_2.conda - sha256: 3327a9e65ec531b0c55d17bbcdc436b4e641af1f293d1c2f50e0f16aa79fde60 - md5: 48dc0b3576513622673d3f5f3d163b62 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.1-h35473ba_0.conda + sha256: c2d59d74e167b6df3c1a7addf0d37080b69a6b3dee2a30b3f2171a5d26c5a691 + md5: 97c0ccb4d43d880b38f237e746c29ead depends: - aws-c-common >=0.10.3,<0.10.4.0a0 - libgcc >=13 - openssl >=3.3.1,<4.0a0 license: Apache-2.0 license_family: Apache - size: 49714 - timestamp: 1731678553709 + size: 49808 + timestamp: 1732038238504 - kind: conda name: aws-c-cal - version: 0.8.0 - build: h5d7ee29_2 - build_number: 2 + version: 0.8.1 + build: h5d7ee29_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.0-h5d7ee29_2.conda - sha256: 2a8c09b33400cf2b7d658e63fd5a6f9b6e9626458f6213b904592fc15220bc92 - md5: 92734dad83d22314205ba73b679710d2 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.1-h5d7ee29_0.conda + sha256: 42d5e9fb695bc3b280ed7e625dcda110b6780ee471e227f1b92afce71ae4972c + md5: fc51a61831a676fe6f922450f51ab6af depends: - __osx >=11.0 - aws-c-common >=0.10.3,<0.10.4.0a0 - openssl >=3.3.1,<4.0a0 license: Apache-2.0 license_family: Apache - size: 39966 - timestamp: 1731678721786 + size: 40047 + timestamp: 1732038304022 - kind: conda name: aws-c-cal - version: 0.8.0 - build: hecf86a2_2 - build_number: 2 + version: 0.8.1 + build: hecf86a2_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.0-hecf86a2_2.conda - sha256: 220a37955c120bf2f565fbd5320a82fc4c8b550b2449294bc0509c296cfcb9fa - md5: c54459d686ad9d0502823cacff7e8423 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.1-hecf86a2_0.conda + sha256: 12cc2087503f4f0d3a5db84e791fb5e585866da728f888aa76e14330a092a681 + md5: 8350795be14a92d68847c0d4f3c1d59f depends: - __glibc >=2.17,<3.0.a0 - aws-c-common >=0.10.3,<0.10.4.0a0 @@ -970,8 +967,8 @@ packages: - openssl >=3.3.1,<4.0a0 license: Apache-2.0 license_family: Apache - size: 47477 - timestamp: 1731678510949 + size: 47569 + timestamp: 1732038156682 - kind: conda name: aws-c-common version: 0.10.3 @@ -1067,291 +1064,294 @@ packages: - kind: conda name: aws-c-event-stream version: 0.5.0 - build: h13ead76_7 - build_number: 7 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.0-h13ead76_7.conda - sha256: 386965fab5f0bed4a6109cdba32579f16bee1b0f76ce1db840ce6f7070188f9f - md5: 55a901b6d4fb9ce1bc8328925b229f0b + build: h873f81a_8 + build_number: 8 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.0-h873f81a_8.conda + sha256: 589f9a04c4c7a919410dde75ce93a6986efad6ed522ecd8e5c9c587ac18f0d34 + md5: 32bdd50b43fcc435a8dc5a3c66aafef0 depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - - libcxx >=18 + - libgcc >=13 + - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 47528 - timestamp: 1731714690911 + size: 54020 + timestamp: 1731839177415 - kind: conda name: aws-c-event-stream version: 0.5.0 - build: h1ffe551_7 - build_number: 7 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.0-h1ffe551_7.conda - sha256: 3b780d6483baa889e8df5aa66ab3c439a9c81331cf2a4799e373f4174768ddd9 - md5: 7cce4dfab184f4bbdfc160789251b3c5 + build: h8ec3972_8 + build_number: 8 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.0-h8ec3972_8.conda + sha256: 81b98fc39e64d090af23b11621e467b4f943a19f61dda0fed5ad6397f06de5c7 + md5: ced9c97ddf61e4222d548e8bcc863b87 depends: - - __glibc >=2.17,<3.0.a0 + - __osx >=11.0 - aws-c-common >=0.10.3,<0.10.4.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - - libgcc >=13 - - libstdcxx >=13 + - libcxx >=18 license: Apache-2.0 license_family: Apache - size: 53500 - timestamp: 1731714597524 + size: 47491 + timestamp: 1731839300212 - kind: conda name: aws-c-event-stream version: 0.5.0 - build: h9bacb8c_7 - build_number: 7 + build: hba6c15e_8 + build_number: 8 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-event-stream-0.5.0-h9bacb8c_7.conda - sha256: 2b7bb475330942d94bc359171df19d0cf8b326f15c0c7903a59da54a8add621e - md5: 694020125b66632d6577456d2d9d3c74 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-event-stream-0.5.0-hba6c15e_8.conda + sha256: d3b74580045ee9d54a134ab1e5e00082d5d8a466980e94acc153188ee7375d08 + md5: 102f8b54630d79aff5e0c489f40f926e depends: - aws-c-common >=0.10.3,<0.10.4.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 55054 - timestamp: 1731714599360 + size: 55354 + timestamp: 1731839242373 - kind: conda name: aws-c-http - version: 0.9.1 - build: hab05fe4_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.1-hab05fe4_2.conda - sha256: 90a325b6f5371dd2203b643de646967fe57a4bcbbee8c91086abbf9dd733d59a - md5: fb409f7053fa3dbbdf6eb41045a87795 + version: 0.9.2 + build: h48c6dea_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.2-h48c6dea_1.conda + sha256: cb68d557af1bdcbef668574836fbf39c4df0e4f377258e4d5bd14196acf9b992 + md5: a28dd36a1da76042bfb5579005cc6728 depends: - - __glibc >=2.17,<3.0.a0 - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - __osx >=11.0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - aws-c-compression >=0.3.0,<0.3.1.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 - - libgcc >=13 + - aws-c-io >=0.15.3,<0.15.4.0a0 license: Apache-2.0 license_family: Apache - size: 196945 - timestamp: 1731714483279 + size: 152660 + timestamp: 1732110368931 - kind: conda name: aws-c-http - version: 0.9.1 - build: hf483d09_2 - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.1-hf483d09_2.conda - sha256: fca9ed0f0895bab9bf737c8d8a3314556cb893d45c40f0656f21a93502db3089 - md5: d880c40b8fc7d07374c036f93f1359d2 + version: 0.9.2 + build: h697be72_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.2-h697be72_1.conda + sha256: 4d6557a00e74649301da78d7de7d108882ce89eb9d6c87efce30789b53a617cf + md5: a8b1a2c11a93e615f6e8f33175ff8ff0 depends: - - __osx >=11.0 - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - aws-c-compression >=0.3.0,<0.3.1.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 153315 - timestamp: 1731714621306 + size: 190344 + timestamp: 1732110425530 - kind: conda name: aws-c-http - version: 0.9.1 - build: hf4e072c_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.1-hf4e072c_2.conda - sha256: b9a262451fc91d2fd4ccfcb6dc11ac61d0152c0db765bfe8d089e3e1b70c2150 - md5: fddc197912c16cb95276077f6c7917c5 + version: 0.9.2 + build: ha5a3ca8_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.2-ha5a3ca8_1.conda + sha256: 8ecb3d8411f58db4686635aedfe5d60b2b8870f9f9cafb471f3878dc61d21596 + md5: b2e017f8a4781ad3af9166edf10b65a8 depends: - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - __glibc >=2.17,<3.0.a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - aws-c-compression >=0.3.0,<0.3.1.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 190363 - timestamp: 1731714613945 + size: 197338 + timestamp: 1732110324356 - kind: conda name: aws-c-io - version: 0.15.2 - build: h10eb1bc_2 - build_number: 2 + version: 0.15.3 + build: h0155602_1 + build_number: 1 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.2-h10eb1bc_2.conda - sha256: b8e4206ee1fa58453535c1c08c6aca5bdc92cde026bf7ec20d038786f813239b - md5: 7cdf478bb4feae1a93319f6e3381b8a9 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-h0155602_1.conda + sha256: 7b8d97d51e5bb80191e07f16cac6f59068be30bf5906925a8f4159b3aab9093c + md5: 431c201b11eee90fd120844557a62b02 depends: - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - libgcc >=13 - s2n >=1.5.9,<1.5.10.0a0 license: Apache-2.0 license_family: Apache - size: 162624 - timestamp: 1731702570075 + size: 161664 + timestamp: 1732097310449 - kind: conda name: aws-c-io - version: 0.15.2 - build: h39f8ad8_2 - build_number: 2 + version: 0.15.3 + build: h30cefa2_1 + build_number: 1 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.2-h39f8ad8_2.conda - sha256: b14e32f024f6be1610dccfdb6371e101cba204d24f37c2a63d9b6380ac74ac17 - md5: 3b49f1dd8f20bead8b222828cfdad585 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-h30cefa2_1.conda + sha256: d6f8d42259ca11507bd912b3cd3ff1a65d6d8c7ff67ae9ee9df1686c9bebbbcc + md5: 8b8dc361de09e5b6227165a876e55cb7 depends: - __osx >=11.0 - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 license: Apache-2.0 license_family: Apache - size: 137610 - timestamp: 1731702839896 + size: 136662 + timestamp: 1732097382517 - kind: conda name: aws-c-io - version: 0.15.2 - build: hdeadb07_2 - build_number: 2 + version: 0.15.3 + build: ha35c7d9_1 + build_number: 1 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.2-hdeadb07_2.conda - sha256: 1636136a5d882b4aaa13ea8b7de8cf07038a6878872e3c434df9daf478cee594 - md5: 461a1eaa075fd391add91bcffc9de0c1 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-ha35c7d9_1.conda + sha256: 2e9e13ed54f6da22ee5d06622f4165bcca253411997dad62225aecc54b25c0db + md5: 97960f380abe1ba3157fe63312e35b07 depends: - __glibc >=2.17,<3.0.a0 - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - libgcc >=13 - s2n >=1.5.9,<1.5.10.0a0 license: Apache-2.0 license_family: Apache - size: 159368 - timestamp: 1731702542973 + size: 158012 + timestamp: 1732097264673 - kind: conda name: aws-c-mqtt version: 0.11.0 - build: h28a5e6a_8 - build_number: 8 + build: h2cca791_9 + build_number: 9 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h28a5e6a_8.conda - sha256: aad8c9a5c24953cdebf17efa7ec06b5639e14072d4fa70c5c0607d7ad913ba88 - md5: 5250ce3b5154c0347b7576015a7c6cef + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h2cca791_9.conda + sha256: c0ad176bab176a2983fb052de71037fc9357afd13b073511a7a440c1a8c6eff2 + md5: 090674d608454e979ce77bc8ee735868 depends: - aws-c-common >=0.10.3,<0.10.4.0a0 - - aws-c-http >=0.9.1,<0.9.2.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 169040 - timestamp: 1731734203264 + size: 169690 + timestamp: 1733688313938 - kind: conda name: aws-c-mqtt version: 0.11.0 - build: h68a0d7e_8 - build_number: 8 + build: h3aaadf4_9 + build_number: 9 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h68a0d7e_8.conda - sha256: 837c24c105624e16ace94b4b566ffe45231ff275339c523571ebd45946926156 - md5: 9e3ac70d27e7591b1310a690768cfe27 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h3aaadf4_9.conda + sha256: 3cc99239c8dadfe55e4b9ba37d03c5d3308ddd8fe00792fab7c6b47c97655c07 + md5: ddb5dc7ac1ae424ca2b7a847765a0cb9 depends: - __osx >=11.0 - aws-c-common >=0.10.3,<0.10.4.0a0 - - aws-c-http >=0.9.1,<0.9.2.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 license: Apache-2.0 license_family: Apache - size: 134573 - timestamp: 1731734281038 + size: 135051 + timestamp: 1733688394116 - kind: conda name: aws-c-mqtt version: 0.11.0 - build: h7bd072d_8 - build_number: 8 + build: h56e9cca_9 + build_number: 9 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h7bd072d_8.conda - sha256: 51d3d87a47c642096e2ce389a169aec2e26958042e9130857552a12d65a19045 - md5: 0e9d67838114c0dbd267a9311268b331 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h56e9cca_9.conda + sha256: c93c29b58482ca72d3f9a5710ad92194e809a9de988bcdcbae9ddd0f8ed484a6 + md5: f75642fe24ae4131f554cbacd6df53e3 depends: - __glibc >=2.17,<3.0.a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - - aws-c-http >=0.9.1,<0.9.2.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 194447 - timestamp: 1731734668760 + size: 194705 + timestamp: 1733688770217 - kind: conda name: aws-c-s3 version: 0.7.5 - build: h29aef15_0 + build: h3c51cf6_2 + build_number: 2 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.5-h29aef15_0.conda - sha256: 2aef28beec88df561f7f4d0f7ec7fea6cf54a1d6c8516fd243a4269d320f06cb - md5: 98609602eb077c7b5225d3aa1467f789 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.5-h3c51cf6_2.conda + sha256: 98a2df8a5068183e55b4c6914a3513d403300be20c960842a9a229546b8e8e52 + md5: e326ddae95b3ec96a31aded04c834175 depends: - aws-c-auth >=0.8.0,<0.8.1.0a0 - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - - aws-c-http >=0.9.1,<0.9.2.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - libgcc >=13 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 117067 - timestamp: 1733565203669 + size: 117896 + timestamp: 1733694002769 - kind: conda name: aws-c-s3 version: 0.7.5 - build: h3a84f74_0 + build: h6ad95d4_2 + build_number: 2 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.5-h3a84f74_0.conda - sha256: eb2534517bdaccf2953716e49e8b918ffe7e78a524c6321fae30c3dd7f46cb0d - md5: a13702b87657cf2d0cdd338fe55f4ba1 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.5-h6ad95d4_2.conda + sha256: 103a478b18ead8f79aae9a4966b2879e9fbcfb0aa3b2e6c9b2811a76ba34610e + md5: 682c079ec089d47bb7142f12b3275e4f depends: - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - - aws-c-http >=0.9.1,<0.9.2.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - libgcc >=13 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 113877 - timestamp: 1733565162763 + size: 113741 + timestamp: 1733693956970 - kind: conda name: aws-c-s3 version: 0.7.5 - build: h840aca7_0 + build: hca3a6f1_2 + build_number: 2 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.5-h840aca7_0.conda - sha256: 30782a1392883d26a441fc2857985136888aa454efbea8b85bbcbb7a7ad3d2e2 - md5: 1d33c89e2462b6b0056bfb883b76d2fb + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.5-hca3a6f1_2.conda + sha256: 53c4dc6e360ed6e1242c20fa43f7bfe67a41215e51cafab27dbd8aa91333040c + md5: 0b4e647cae3ce85ec991c6e3b8d12bda depends: - __osx >=11.0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - - aws-c-http >=0.9.1,<0.9.2.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 license: Apache-2.0 license_family: Apache - size: 98296 - timestamp: 1733565277623 + size: 97530 + timestamp: 1733694097526 - kind: conda name: aws-c-sdkutils version: 0.2.1 @@ -1453,19 +1453,20 @@ packages: - kind: conda name: aws-crt-cpp version: 0.29.7 - build: h6c346da_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.7-h6c346da_1.conda - sha256: 9a60a93dbe896acf533dded5f4ae11546ff4fb6a9fb0e06db6d915206ba0b1f2 - md5: cf87fc73eee6dbfc12dec79444d5dfc0 + build: h318f0b1_3 + build_number: 3 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.7-h318f0b1_3.conda + sha256: 35100ad81adf31aa4e73ac2956e9a8ff277cc57d0db2db2f0e9c51012175eadd + md5: 9748d0527695a64aa2eb45e891ea188d depends: + - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - - aws-c-http >=0.9.1,<0.9.2.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - aws-c-s3 >=0.7.5,<0.7.6.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 @@ -1473,59 +1474,58 @@ packages: - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 283237 - timestamp: 1733588714381 + size: 355045 + timestamp: 1733744656604 - kind: conda name: aws-crt-cpp version: 0.29.7 - build: ha310de4_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.7-ha310de4_1.conda - sha256: b5ab81d50b6cc2ff70dd56a16b5b9e1cbe8c69e9e357db2abf925d03c5d0133a - md5: 77769ed013cbf8824c1927407ea03c69 + build: hacb6b83_3 + build_number: 3 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.7-hacb6b83_3.conda + sha256: 6c0ece3ca494c2220fc052e608d52ea52bb361e536a14a1b3b36ebeede9de8b9 + md5: 27ce3ed5b7e55370a9fea2dda2b3245a depends: - - __osx >=11.0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - - aws-c-http >=0.9.1,<0.9.2.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - aws-c-s3 >=0.7.5,<0.7.6.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - - libcxx >=18 + - libgcc >=13 + - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 236862 - timestamp: 1733588815005 + size: 283993 + timestamp: 1733744571881 - kind: conda name: aws-crt-cpp version: 0.29.7 - build: ha6b94fc_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.7-ha6b94fc_1.conda - sha256: 5907a2c370f94e5f63c17e4347525d21eb1c00fbd8b731d79ec1eb4e857689ca - md5: f5fb6f6283deb0b4d2c187ad4a7b6d4d + build: hc2c2bbc_3 + build_number: 3 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.7-hc2c2bbc_3.conda + sha256: 6a519151e7fa71fbc9d1cd3a526ea7591638af058a6cc0534e1cd418fd48b354 + md5: 5450324f7b48dff1f6ed5484bf830972 depends: - - __glibc >=2.17,<3.0.a0 + - __osx >=11.0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - - aws-c-http >=0.9.1,<0.9.2.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - aws-c-s3 >=0.7.5,<0.7.6.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - - libgcc >=13 - - libstdcxx >=13 + - libcxx >=18 license: Apache-2.0 license_family: Apache - size: 353873 - timestamp: 1733588735223 + size: 236331 + timestamp: 1733744737078 - kind: conda name: aws-sdk-cpp version: 1.11.458 @@ -2225,19 +2225,20 @@ packages: - kind: conda name: deprecated version: 1.2.15 - build: pyhff2d567_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhff2d567_0.conda - sha256: 48182a27a8fd855db3a402ed914823802f94c3344c87b0d074facc51411296ee - md5: ca75e235b44ab995655fae392f99595e + url: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhd8ed1ab_1.conda + sha256: a20ebf2c9b02a6eb32412ceb5c4cffaae49417db7e75414a76417538293a9402 + md5: eaef2e94d5bd76f758545d172c1fda67 depends: - - python >=2.7 + - python >=3.9 - wrapt <2,>=1.10 license: MIT license_family: MIT - size: 14182 - timestamp: 1731836933516 + size: 14297 + timestamp: 1733662697343 - kind: conda name: dill version: 0.3.7 @@ -2735,14 +2736,13 @@ packages: timestamp: 1732707871414 - kind: conda name: httpx - version: 0.28.0 - build: pyhd8ed1ab_1 - build_number: 1 + version: 0.28.1 + build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_1.conda - sha256: 0b864abaa9f1443fc42368b4d2a4f4efb9971a53f961d1fe30fabd7fbdd76b27 - md5: 8a4a83ba566c6b5c718dd0531a362d01 + url: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda + sha256: cd0f1de3697b252df95f98383e9edb1d00386bfdd03fdf607fa42fe5fcb09950 + md5: d6989ead454181f4f9bc987d3dc4e285 depends: - anyio - certifi @@ -2751,8 +2751,8 @@ packages: - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 63203 - timestamp: 1733501478172 + size: 63082 + timestamp: 1733663449209 - kind: conda name: huggingface_hub version: 0.26.5 @@ -5131,50 +5131,47 @@ packages: timestamp: 1716828607917 - kind: conda name: libsqlite - version: 3.47.0 - build: hadc24fc_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.47.0-hadc24fc_1.conda - sha256: 8a9aadf996a2399f65b679c6e7f29139d5059f699c63e6d7b50e20db10c00508 - md5: b6f02b52a174e612e89548f4663ce56a + version: 3.47.2 + build: h3f77e49_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.47.2-h3f77e49_0.conda + sha256: f192f3c8973de9ec4c214990715f13b781965247a5cedf9162e7f9e699cfc3c4 + md5: 122d6f29470f1a991e85608e77e56a8a depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 + - __osx >=11.0 - libzlib >=1.3.1,<2.0a0 license: Unlicense - size: 875349 - timestamp: 1730208050020 + size: 850553 + timestamp: 1733762057506 - kind: conda name: libsqlite - version: 3.47.0 - build: hbaaea75_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.47.0-hbaaea75_1.conda - sha256: 5a96caa566c11e5a5ebdcdb86a0759a7fb27d3c5f42e6a0fd0d6023c1e935d9e - md5: 07a14fbe439eef078cc479deca321161 + version: 3.47.2 + build: h5eb1b54_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.47.2-h5eb1b54_0.conda + sha256: 885a27fa84a5a73ed9779168c02b6c386e2fc7a53f0566b32a09ceca146b42b4 + md5: d4bf59f8783a4a66c0aec568f6de3ff4 depends: - - __osx >=11.0 + - libgcc >=13 - libzlib >=1.3.1,<2.0a0 license: Unlicense - size: 837683 - timestamp: 1730208293578 + size: 1042182 + timestamp: 1733761913736 - kind: conda name: libsqlite - version: 3.47.0 - build: hc4a20ef_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.47.0-hc4a20ef_1.conda - sha256: 73e143fdb966b61cd25ab804d416d87dfce43ac684e0fac3ad8b1450796331ab - md5: a6b185aac10d08028340858f77231b23 + version: 3.47.2 + build: hee588c1_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.47.2-hee588c1_0.conda + sha256: 48af21ebc2cbf358976f1e0f4a0ab9e91dfc83d0ef337cf3837c6f5bc22fb352 + md5: b58da17db24b6e08bcbf8fed2fb8c915 depends: + - __glibc >=2.17,<3.0.a0 - libgcc >=13 - libzlib >=1.3.1,<2.0a0 license: Unlicense - size: 1041855 - timestamp: 1730208187962 + size: 873551 + timestamp: 1733761824646 - kind: conda name: libssh2 version: 1.11.1 @@ -5912,76 +5909,76 @@ packages: timestamp: 1733219945697 - kind: conda name: max - version: 24.6.0.dev2024120805 + version: 24.6.0.dev2024120905 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120805-release.conda - sha256: f2f1a4e4373ac62de23c41ce28e1483b45322cffe8aef91ef93ce0f65fe5f20d - md5: d41647f3009da6fe575321d46a741dfa - depends: - - max-core ==24.6.0.dev2024120805 release - - max-python >=24.6.0.dev2024120805,<25.0a0 - - mojo-jupyter ==24.6.0.dev2024120805 release - - mblack ==24.6.0.dev2024120805 release + url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120905-release.conda + sha256: 37a6103a6b2c7886ed5837d41a819f1a127eef7e810b2b5ecfb03f7caf263514 + md5: b13d61319f43570ce681408a1b27d9d5 + depends: + - max-core ==24.6.0.dev2024120905 release + - max-python >=24.6.0.dev2024120905,<25.0a0 + - mojo-jupyter ==24.6.0.dev2024120905 release + - mblack ==24.6.0.dev2024120905 release license: LicenseRef-Modular-Proprietary - size: 9916 - timestamp: 1733635043550 + size: 9911 + timestamp: 1733721408716 - kind: conda name: max-core - version: 24.6.0.dev2024120805 + version: 24.6.0.dev2024120905 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120805-release.conda - sha256: aebf26b21cebf2afdf9063203e542e5e635059c57c5fb9e74478b98f652f8e46 - md5: 620d81f38c5da882ee0799e26d86b0ad + url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120905-release.conda + sha256: 0f94138601ceab2c8b277c7d175d762840072cfdfd0ead7264fbd1ff9f70442d + md5: 00617be1a2fef13b5630d9cbe92f9d3c depends: - - mblack ==24.6.0.dev2024120805 release + - mblack ==24.6.0.dev2024120905 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 247607615 - timestamp: 1733634983707 + size: 247639885 + timestamp: 1733721408714 - kind: conda name: max-core - version: 24.6.0.dev2024120805 + version: 24.6.0.dev2024120905 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120805-release.conda - sha256: 1fc1554d9c39ed5bf22957f02418ee0df4ce4dfc033dd3ca54a7f20c8946b7b3 - md5: 6e7e581fe4e11d252e8729a6cc564b29 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120905-release.conda + sha256: 1aaf2ffb09d6a2aa6b65d76c381476eb88947470580a0d56909bfd578d5eb385 + md5: c7ff53814f0c254c75dc7ab8f0c66b38 depends: - - mblack ==24.6.0.dev2024120805 release + - mblack ==24.6.0.dev2024120905 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 251457302 - timestamp: 1733635043548 + size: 251498878 + timestamp: 1733721396377 - kind: conda name: max-core - version: 24.6.0.dev2024120805 + version: 24.6.0.dev2024120905 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120805-release.conda - sha256: f249a329a1b072ebd9cd365842d54892d4d46a8fb642ab8fb22ff26f211dddb7 - md5: 04d8f67fb1a7deb6147da14b60f668d3 + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120905-release.conda + sha256: 00cc8ce6adc131b858df51423201b8f028aa944ac09e56c563a1108c22eaccd2 + md5: 71554a4c0e81a1034908bc1cb716b30b depends: - - mblack ==24.6.0.dev2024120805 release + - mblack ==24.6.0.dev2024120905 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 212001315 - timestamp: 1733635167877 + size: 212030191 + timestamp: 1733721567995 - kind: conda name: max-python - version: 24.6.0.dev2024120805 + version: 24.6.0.dev2024120905 build: 3.12release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120805-3.12release.conda - sha256: cf488fd0ccfb5a4dbff0891f7dba0e92422a07b6c0047727ab7ebf6a65289e9f - md5: bf821eea63859972e28ce4635cff7dda + url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120905-3.12release.conda + sha256: 43245b47050208329e85a69f2af24d42c622e92e1542334a6106eaadb6cbf0ff + md5: 9a6037de6672120d1d6d53673b699d5b depends: - - max-core ==24.6.0.dev2024120805 release + - max-core ==24.6.0.dev2024120905 release - python 3.12.* - pillow - fastapi @@ -6003,18 +6000,18 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 123750844 - timestamp: 1733634983717 + size: 123751303 + timestamp: 1733721408724 - kind: conda name: max-python - version: 24.6.0.dev2024120805 + version: 24.6.0.dev2024120905 build: 3.12release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120805-3.12release.conda - sha256: 7fe8c12a6ac333dc6f3ea0132e07244131919597c3da16566a18d3657c478126 - md5: 5711b879e00dae9d692d6cf0bcad3717 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120905-3.12release.conda + sha256: fdedbc8a2ca34d0593e8b2175ca07c07d6d0564f138f535ebff02975ef463f55 + md5: bc9f6ce493d2beb1089e1e409bb373ba depends: - - max-core ==24.6.0.dev2024120805 release + - max-core ==24.6.0.dev2024120905 release - python 3.12.* - pillow - fastapi @@ -6036,18 +6033,18 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 127399399 - timestamp: 1733635043558 + size: 127400047 + timestamp: 1733721396388 - kind: conda name: max-python - version: 24.6.0.dev2024120805 + version: 24.6.0.dev2024120905 build: 3.12release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120805-3.12release.conda - sha256: 21cd561dcda4c668566b3e681e44823f6163abb4747f30e4851efb9d04eea1eb - md5: 8737c1d7ff7f04e887c4d80139e2a273 + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120905-3.12release.conda + sha256: 0cd6b2e3bdc78483665045e91b8db7a8a3d6c85fbf4b8a44d6eb742a46361af1 + md5: c1b7eb7d1a43e28224bf41220ece9b58 depends: - - max-core ==24.6.0.dev2024120805 release + - max-core ==24.6.0.dev2024120905 release - python 3.12.* - pillow - fastapi @@ -6069,17 +6066,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 112431285 - timestamp: 1733635167881 + size: 112450493 + timestamp: 1733721567998 - kind: conda name: mblack - version: 24.6.0.dev2024120805 + version: 24.6.0.dev2024120905 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120805-release.conda - sha256: e5f3d6f9e9e7acb97ff8364ddb90e34e38bfe68ba382b3dffacfbf4b9d6c812a - md5: 8a48ed658740aaf0063c754fd35e9cce + url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120905-release.conda + sha256: e302e262a58592b5b8614829237760967d685cb20a44e54981916eb6c2b6b7a2 + md5: b34a59910660011ad1f42bfc1ae4ae54 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -6089,8 +6086,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130744 - timestamp: 1733635043555 + size: 130740 + timestamp: 1733721408720 - kind: conda name: mdurl version: 0.1.2 @@ -6109,21 +6106,21 @@ packages: timestamp: 1733255681319 - kind: conda name: mojo-jupyter - version: 24.6.0.dev2024120805 + version: 24.6.0.dev2024120905 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120805-release.conda - sha256: 1535cecc4930833e604ed39a4450b421914312f4abbb4fc6af9e7aedd5293ffd - md5: ad285352ec9e9061d8facbf62f708d9d + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120905-release.conda + sha256: bb71277508a55875b6011651bc825599e26a47145ab1e9c4e7c2abd853200a00 + md5: 4fc85c9cb1efe841b69d339d4da5b3a1 depends: - - max-core ==24.6.0.dev2024120805 release + - max-core ==24.6.0.dev2024120905 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 11369 - timestamp: 1733635043556 + size: 11366 + timestamp: 1733721408720 - kind: conda name: multidict version: 6.1.0 @@ -6461,21 +6458,21 @@ packages: - kind: conda name: opentelemetry-api version: 1.28.2 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.28.2-pyhd8ed1ab_0.conda - sha256: e267ed59ea8f357c3471defef796ce4f4555eacd9ee0ed2d47d3dd539ee7ee2f - md5: f1307fb38a8fd2220def45ec1691a21c + url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.28.2-pyhd8ed1ab_1.conda + sha256: 780dbc942a6075db7bdbaf556023be50c34a6111a99e465878d7bab0e5e0d7f4 + md5: a06f1e9d97c98d26f06675236c9ea554 depends: - deprecated >=1.2.6 - importlib-metadata >=6.0.0,<7.1.0 - - python >=3.8 + - python >=3.9 - setuptools >=16.0 license: Apache-2.0 - license_family: APACHE - size: 44014 - timestamp: 1731985724169 + size: 44242 + timestamp: 1733734361129 - kind: conda name: opentelemetry-exporter-otlp-proto-common version: 1.28.2 @@ -6571,20 +6568,20 @@ packages: - kind: conda name: opentelemetry-semantic-conventions version: 0.49b2 - build: pyh10f6f8f_0 + build: pyh3cfb1c2_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh10f6f8f_0.conda - sha256: 5e3869ad66082b16d56bab8219fad0c8c09090ec93eb866327eed788fe5c9340 - md5: d95dd6e8a70417e394bb16dad5cff408 + url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh3cfb1c2_1.conda + sha256: 28180ffa6611f117c782c7d72066b50332c1df0bdcfed0dea4e446a20c4b7d10 + md5: e0ada55d18e6bd5a8e61943b4b5d3a8f depends: - deprecated >=1.2.6 - opentelemetry-api 1.28.2 - python >=3.9 license: Apache-2.0 - license_family: APACHE - size: 81534 - timestamp: 1732067304518 + size: 81099 + timestamp: 1733749104727 - kind: conda name: orc version: 2.0.3 @@ -8214,12 +8211,12 @@ packages: timestamp: 1699202167581 - kind: conda name: tokenizers - version: 0.20.4 + version: 0.21.0 build: py312h8360d73_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.20.4-py312h8360d73_0.conda - sha256: 7b59759739b5426e17825b26d6ce9df487d1dc254d4e6a92b14a97107eb6daca - md5: 035c6de3c821559bf1af5ec072593bfd + url: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.21.0-py312h8360d73_0.conda + sha256: 4f504a5e9d77c6d88a8f735c4319429d8bf40b742384f908a2efe0a09acc3cc5 + md5: f953aa733207f3d37acf4a3efbedba89 depends: - __glibc >=2.17,<3.0.a0 - huggingface_hub >=0.16.4,<1.0 @@ -8232,16 +8229,16 @@ packages: - __glibc >=2.17 license: Apache-2.0 license_family: APACHE - size: 2259332 - timestamp: 1732657962717 + size: 2258007 + timestamp: 1732734202127 - kind: conda name: tokenizers - version: 0.20.4 + version: 0.21.0 build: py312ha0d6ea1_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.20.4-py312ha0d6ea1_0.conda - sha256: 6dbb7e5f3f152210817e8658bc454056e464dee16fd9757508f2417edd44d8b8 - md5: b135e3d9178b255993ea4d72741192f8 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.21.0-py312ha0d6ea1_0.conda + sha256: ef0f4d4e2c798b1821187ea0ba4c86484e48abaa0e9a19fe68030fa7ff5dde84 + md5: 077f48c9e0c08a30d842e15c51df4143 depends: - huggingface_hub >=0.16.4,<1.0 - libgcc >=13 @@ -8254,16 +8251,16 @@ packages: - __glibc >=2.17 license: Apache-2.0 license_family: APACHE - size: 2330899 - timestamp: 1732658129796 + size: 2331194 + timestamp: 1732734303196 - kind: conda name: tokenizers - version: 0.20.4 + version: 0.21.0 build: py312hf3e4074_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.20.4-py312hf3e4074_0.conda - sha256: fd86f8a5d41622e8f5092913dea48f41de86258583ee449045905a725672fdc2 - md5: 40e8bc575721b4da76712e90e4a9b7fa + url: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.21.0-py312hf3e4074_0.conda + sha256: 5d395333fcb22dc611140286c1f2ea8b3fa220a4931c583587cb612238091555 + md5: 4c732c74b485ef7ac8ec1c548dd45e8e depends: - __osx >=11.0 - huggingface_hub >=0.16.4,<1.0 @@ -8275,8 +8272,8 @@ packages: - __osx >=11.0 license: Apache-2.0 license_family: APACHE - size: 1933005 - timestamp: 1732658406859 + size: 1931389 + timestamp: 1732734727624 - kind: conda name: tornado version: 6.4.2 @@ -8360,13 +8357,13 @@ packages: timestamp: 1733367480074 - kind: conda name: transformers - version: 4.46.3 + version: 4.47.0 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/transformers-4.46.3-pyhd8ed1ab_0.conda - sha256: 6ae73c0d1197812d8fd6a2c64309fe9abe822feb66b2d330cc61ce9fa60dee0c - md5: 457af723774f077a128515a6fdd536a2 + url: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.0-pyhd8ed1ab_0.conda + sha256: b9cf6ae5fcd6c78dcaa24ebfd41580a4a10b0649ac726a44d3521f70fdece218 + md5: 495745078b8e18fe2dcc3267f4baae0d depends: - datasets !=2.5.0 - filelock @@ -8378,12 +8375,12 @@ packages: - regex !=2019.12.17 - requests - safetensors >=0.4.1 - - tokenizers >=0.20,<0.21 + - tokenizers >=0.21,<0.22 - tqdm >=4.27 license: Apache-2.0 license_family: APACHE - size: 3622494 - timestamp: 1731981383171 + size: 3721837 + timestamp: 1733708797762 - kind: conda name: typer version: 0.15.1 From 3368a633da459f20d5eccb600df6e88b52ee4955 Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Mon, 9 Dec 2024 09:11:31 -0800 Subject: [PATCH 063/509] [mojo-stdlib] Minor code cleanups, NFC. This just tidies up some code to avoid using patterns that will soon be invalid: as the 'out' argument on inits is becoming more normal, you won't be able to pass a value in at a call site, it is always a result. MODULAR_ORIG_COMMIT_REV_ID: b9e5685612246c8c758b4191f3a70f61a4eecff5 --- stdlib/src/builtin/builtin_slice.mojo | 2 +- stdlib/src/builtin/simd.mojo | 2 +- stdlib/src/collections/deque.mojo | 4 ++-- stdlib/src/collections/list.mojo | 2 +- stdlib/src/collections/string.mojo | 2 +- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/stdlib/src/builtin/builtin_slice.mojo b/stdlib/src/builtin/builtin_slice.mojo index 0d0fe96750..b663b9350e 100644 --- a/stdlib/src/builtin/builtin_slice.mojo +++ b/stdlib/src/builtin/builtin_slice.mojo @@ -88,7 +88,7 @@ struct Slice( Args: other: The slice to copy. """ - self.__init__(start=other.start, end=other.end, step=other.step) + self = Self(start=other.start, end=other.end, step=other.step) # ===-------------------------------------------------------------------===# # Trait implementations diff --git a/stdlib/src/builtin/simd.mojo b/stdlib/src/builtin/simd.mojo index d93be3a050..18a87f1903 100644 --- a/stdlib/src/builtin/simd.mojo +++ b/stdlib/src/builtin/simd.mojo @@ -1584,7 +1584,7 @@ struct SIMD[type: DType, size: Int]( output.write(", ") _write_scalar(output, element) output.write(")") - return output + return output^ @always_inline("nodebug") fn __floor__(self) -> Self: diff --git a/stdlib/src/collections/deque.mojo b/stdlib/src/collections/deque.mojo index 284fb630da..6415979277 100644 --- a/stdlib/src/collections/deque.mojo +++ b/stdlib/src/collections/deque.mojo @@ -88,8 +88,8 @@ struct Deque[ElementType: CollectionElement]( out self, *, owned elements: Optional[List[ElementType]] = None, - capacity: Int = self.default_capacity, - min_capacity: Int = self.default_capacity, + capacity: Int = Self.default_capacity, + min_capacity: Int = Self.default_capacity, maxlen: Int = -1, shrink: Bool = True, ): diff --git a/stdlib/src/collections/list.mojo b/stdlib/src/collections/list.mojo index 13ee261638..10490c16c7 100644 --- a/stdlib/src/collections/list.mojo +++ b/stdlib/src/collections/list.mojo @@ -121,7 +121,7 @@ struct List[T: CollectionElement, hint_trivial_type: Bool = False]( Args: other: The list to copy. """ - self.__init__(capacity=other.capacity) + self = Self(capacity=other.capacity) for e in other: self.append(e[]) diff --git a/stdlib/src/collections/string.mojo b/stdlib/src/collections/string.mojo index 86449179a3..fe9746584d 100644 --- a/stdlib/src/collections/string.mojo +++ b/stdlib/src/collections/string.mojo @@ -867,7 +867,7 @@ struct String( Args: other: The value to copy. """ - self.__copyinit__(other) + self = other # Just use the implicit copyinit. @implicit fn __init__(out self, str: StringRef): From 51fe9e69ff7d179bf44b3cc266b1ca1b1c7cb8ad Mon Sep 17 00:00:00 2001 From: Joe Loser Date: Mon, 9 Dec 2024 10:45:48 -0700 Subject: [PATCH 064/509] [stdlib] Skip trivial destructors in `List` If the elements are hinted as "trivial", skip running the destructors for them. Note that we don't have a checked equivalent of `std::is_trivially_destructible`, so this is just relying on the hint provided to `List`. For non-trivial types, we still run the destructors on each of the elements, of course. Future PRs will take advantage of the `hint` parameter in `copyinit`. MODULAR_ORIG_COMMIT_REV_ID: c92f98b69f1a40b7b671b6392a7b71b54cfb61b8 --- stdlib/src/collections/list.mojo | 7 +++++-- stdlib/test/collections/test_list.mojo | 14 ++++++++++++++ 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/stdlib/src/collections/list.mojo b/stdlib/src/collections/list.mojo index 10490c16c7..bcfca0c2fa 100644 --- a/stdlib/src/collections/list.mojo +++ b/stdlib/src/collections/list.mojo @@ -212,8 +212,11 @@ struct List[T: CollectionElement, hint_trivial_type: Bool = False]( fn __del__(owned self): """Destroy all elements in the list and free its memory.""" - for i in range(self.size): - (self.data + i).destroy_pointee() + + @parameter + if not hint_trivial_type: + for i in range(self.size): + (self.data + i).destroy_pointee() self.data.free() # ===-------------------------------------------------------------------===# diff --git a/stdlib/test/collections/test_list.mojo b/stdlib/test/collections/test_list.mojo index 1def6849ea..56dab6510b 100644 --- a/stdlib/test/collections/test_list.mojo +++ b/stdlib/test/collections/test_list.mojo @@ -915,6 +915,19 @@ def test_list_dtor(): assert_equal(g_dtor_count, 1) +# Verify we skip calling destructors for the trivial elements +def test_destructor_trivial_elements(): + # explicitly reset global counter + g_dtor_count = 0 + + var l = List[DtorCounter, hint_trivial_type=True]() + l.append(DtorCounter()) + + l^.__del__() + + assert_equal(g_dtor_count, 0) + + def test_list_repr(): var l = List(1, 2, 3) assert_equal(l.__repr__(), "[1, 2, 3]") @@ -959,4 +972,5 @@ def main(): test_list_contains() test_indexing() test_list_dtor() + test_destructor_trivial_elements() test_list_repr() From fc9fe840e4b682c372ca25ce27cba95bddfb307e Mon Sep 17 00:00:00 2001 From: martinvuyk <110240700+martinvuyk@users.noreply.github.com> Date: Mon, 9 Dec 2024 12:25:44 -0600 Subject: [PATCH 065/509] [External] [stdlib] Micro-optimize string `splitlines` and `isnewline` (#52307) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [External] [stdlib] Micro-optimize string `splitlines` and `isnewline` ## Micro-optimize string `splitlines` and `isnewline`. Benchmark results: CPU: Intel® Core™ i7-7700HQ improvement metric: markdown percentage improvement (`(old_value - new_value) / old_value`) Average improvement: 1.2% . Many of the discrepancies are likely because of runtime (nano-second scale) pipelining (and other) differences during testing. The most robust estimates are the biggest tests which show around 4.2% improvement. |Name | old_value (ms) | new_value (ms) | improvement| |:-----------------------------|---------------------:|----------------:|------:| |`bench_string_splitlines[10]` | 0.000100497059839818 | 0.00010261460376 | -2.11% | |`bench_string_splitlines[30]` | 0.000171998352418428 | 0.000174028055158599 | -1.18% | |`bench_string_splitlines[50]` | 0.000264958575880379 | 0.000251598931395228 | 5.04% | |`bench_string_splitlines[100]` | 0.000417350538881514 | 0.000415764808815687 | 0.38% | |`bench_string_splitlines[1000]` | 0.00320600819966129 | 0.00322517645847026 | -0.60% | |`bench_string_splitlines[10000]` | 0.0302790238107332 | 0.0305872863513719 | -1.02% | |`bench_string_splitlines[100000]` | 0.319274428592796 | 0.304513179279761 | 4.62% | |`bench_string_splitlines[1000000]` | 3.24098357344348 | 3.10220707742267 | 4.28% | Co-authored-by: martinvuyk <110240700+martinvuyk@users.noreply.github.com> Closes modularml/mojo#3825 MODULAR_ORIG_COMMIT_REV_ID: 433b5ea2f49164bf08572004da1541ac42f1eed2 --- .../benchmarks/collections/bench_string.mojo | 2 +- stdlib/src/utils/string_slice.mojo | 133 +++++++++--------- 2 files changed, 71 insertions(+), 64 deletions(-) diff --git a/stdlib/benchmarks/collections/bench_string.mojo b/stdlib/benchmarks/collections/bench_string.mojo index 3cee895b73..fc5dfc718e 100644 --- a/stdlib/benchmarks/collections/bench_string.mojo +++ b/stdlib/benchmarks/collections/bench_string.mojo @@ -227,7 +227,7 @@ fn bench_string_is_valid_utf8[ # ===-----------------------------------------------------------------------===# def main(): seed() - var m = Bench(BenchConfig(num_repetitions=5)) + var m = Bench(BenchConfig(num_repetitions=1)) alias filenames = ( "UN_charter_EN", "UN_charter_ES", diff --git a/stdlib/src/utils/string_slice.mojo b/stdlib/src/utils/string_slice.mojo index e572747d4e..03ed9be490 100644 --- a/stdlib/src/utils/string_slice.mojo +++ b/stdlib/src/utils/string_slice.mojo @@ -24,7 +24,7 @@ from utils import StringSlice from collections import List, Optional from collections.string import _atof, _atol, _isspace from sys import bitwidthof, simdwidthof -from sys.intrinsics import unlikely +from sys.intrinsics import unlikely, likely from bit import count_leading_zeros from memory import UnsafePointer, memcmp, memcpy, Span @@ -1010,40 +1010,22 @@ struct StringSlice[is_mutable: Bool, //, origin: Origin[is_mutable]]( listed above, otherwise False. """ - fn _is_newline_char(s: StringSlice) -> Bool: - # sorry for readability, but this has less overhead than memcmp - # highly performance sensitive code, benchmark before touching - alias `\t` = UInt8(ord("\t")) - alias `\r` = UInt8(ord("\r")) - alias `\n` = UInt8(ord("\n")) - alias `\x1c` = UInt8(ord("\x1c")) - alias `\x1e` = UInt8(ord("\x1e")) - no_null_len = s.byte_length() - ptr = s.unsafe_ptr() - if no_null_len == 1: - v = ptr[0] - return `\t` <= v <= `\x1e` and not (`\r` < v < `\x1c`) - elif no_null_len == 2: - v0 = ptr[0] - v1 = ptr[1] - next_line = v0 == 0xC2 and v1 == 0x85 # next line: \x85 - r_n = v0 == `\r` and v1 == `\n` - return next_line or r_n - elif no_null_len == 3: - # unicode line sep or paragraph sep: \u2028 , \u2029 - v2 = ptr[2] - lastbyte = v2 == 0xA8 or v2 == 0xA9 - return ptr[0] == 0xE2 and ptr[1] == 0x80 and lastbyte - return False + var ptr = self.unsafe_ptr() + var length = self.byte_length() @parameter if single_character: - return _is_newline_char(self) + return length != 0 and _is_newline_char[include_r_n=True]( + ptr, 0, ptr[0], length + ) else: + var offset = 0 for s in self: - if not _is_newline_char(s): + var b_len = s.byte_length() + if not _is_newline_char(ptr, offset, ptr[offset], b_len): return False - return self.byte_length() != 0 + offset += b_len + return length != 0 fn splitlines[ O: ImmutableOrigin, // @@ -1063,54 +1045,41 @@ struct StringSlice[is_mutable: Bool, //, origin: Origin[is_mutable]]( A List of Strings containing the input split by line boundaries. """ + # highly performance sensitive code, benchmark before touching alias `\r` = UInt8(ord("\r")) alias `\n` = UInt8(ord("\n")) - alias `\t` = UInt8(ord("\t")) - alias `\x1c` = UInt8(ord("\x1c")) - alias `\x1e` = UInt8(ord("\x1e")) - output = List[StringSlice[O]](capacity=128) # guessing - ptr = self.unsafe_ptr() - length = self.byte_length() - offset = 0 - @always_inline - @parameter - fn _is_newline_char(p: UnsafePointer[Byte], l: Int, b0: Byte) -> Bool: - # sorry for readability, but this has less overhead than memcmp - # highly performance sensitive code, benchmark before touching - if l == 1: - return `\t` <= b0 <= `\x1e` and not (`\r` < b0 < `\x1c`) - elif l == 2: - return b0 == 0xC2 and p[1] == 0x85 # next line: \x85 - elif l == 3: - # unicode line sep or paragraph sep: \u2028 , \u2029 - v2 = p[2] - lastbyte = v2 == 0xA8 or v2 == 0xA9 - return b0 == 0xE2 and p[1] == 0x80 and lastbyte - return False + output = List[StringSlice[O]](capacity=128) # guessing + var ptr = self.unsafe_ptr() + var length = self.byte_length() + var offset = 0 while offset < length: - eol_start = offset - eol_length = 0 + var eol_start = offset + var eol_length = 0 while eol_start < length: - b0 = ptr[eol_start] - char_len = _utf8_first_byte_sequence_length(b0) + var b0 = ptr[eol_start] + var char_len = _utf8_first_byte_sequence_length(b0) debug_assert( eol_start + char_len <= length, "corrupted sequence causing unsafe memory access", ) - isnewline = int(_is_newline_char(ptr + eol_start, char_len, b0)) - char_end = isnewline * (eol_start + char_len) - next_idx = char_end * int(char_end < length) - is_r_n = b0 == `\r` and next_idx != 0 and ptr[next_idx] == `\n` - eol_length = isnewline * char_len + int(is_r_n) - if unlikely(isnewline == 1): + var isnewline = unlikely( + _is_newline_char(ptr, eol_start, b0, char_len) + ) + var char_end = int(isnewline) * (eol_start + char_len) + var next_idx = char_end * int(char_end < length) + var is_r_n = b0 == `\r` and next_idx != 0 and ptr[ + next_idx + ] == `\n` + eol_length = int(isnewline) * char_len + int(is_r_n) + if isnewline: break eol_start += char_len - str_len = eol_start - offset + int(keepends) * eol_length - s = StringSlice[O](ptr=ptr + offset, length=str_len) + var str_len = eol_start - offset + int(keepends) * eol_length + var s = StringSlice[O](ptr=ptr + offset, length=str_len) output.append(s) offset = eol_start + eol_length @@ -1191,3 +1160,41 @@ fn _to_string_list[ return len(v) return _to_string_list[items.T, len_fn, unsafe_ptr_fn](items) + + +@always_inline +fn _is_newline_char[ + include_r_n: Bool = False +](p: UnsafePointer[Byte], eol_start: Int, b0: Byte, char_len: Int) -> Bool: + """Returns whether the char is a newline char. + + Safety: + This assumes valid utf-8 is passed. + """ + # highly performance sensitive code, benchmark before touching + alias `\r` = UInt8(ord("\r")) + alias `\n` = UInt8(ord("\n")) + alias `\t` = UInt8(ord("\t")) + alias `\x1c` = UInt8(ord("\x1c")) + alias `\x1e` = UInt8(ord("\x1e")) + + # here it's actually faster to have branching due to the branch predictor + # "realizing" that the char_len == 1 path is often taken. Using the likely + # intrinsic is to make the machine code be ordered to optimize machine + # instruction fetching, which is an optimization for the CPU front-end. + if likely(char_len == 1): + return `\t` <= b0 <= `\x1e` and not (`\r` < b0 < `\x1c`) + elif char_len == 2: + var b1 = p[eol_start + 1] + var is_next_line = b0 == 0xC2 and b1 == 0x85 # unicode next line \x85 + + @parameter + if include_r_n: + return is_next_line or (b0 == `\r` and b1 == `\n`) + else: + return is_next_line + elif char_len == 3: # unicode line sep or paragraph sep: \u2028 , \u2029 + var b1 = p[eol_start + 1] + var b2 = p[eol_start + 2] + return b0 == 0xE2 and b1 == 0x80 and (b2 == 0xA8 or b2 == 0xA9) + return False From 9949837c5099001633d0a992ec4f8c9422b913d4 Mon Sep 17 00:00:00 2001 From: Manuel Saelices Date: Mon, 9 Dec 2024 12:27:36 -0600 Subject: [PATCH 066/509] [External] [stdlib] Snake casing stdlib (#48873) [External] [stdlib] Snake casing stdlib Convert camelCase code to a pythonic snake_case throughout the stdlib Co-authored-by: Manuel Saelices Closes modularml/mojo#3631 MODULAR_ORIG_COMMIT_REV_ID: f308889bd1a2221371fa2b2d85ea2f30da333667 --- stdlib/src/builtin/object.mojo | 64 ++++++++++++------------ stdlib/src/python/_cpython.mojo | 9 ++-- stdlib/src/python/python_object.mojo | 46 ++++++++--------- stdlib/src/time/time.mojo | 16 +++--- stdlib/src/utils/_serialize.mojo | 2 +- stdlib/test/builtin/test_error.mojo | 4 +- stdlib/test/python/test_python_info.mojo | 8 +-- 7 files changed, 75 insertions(+), 74 deletions(-) diff --git a/stdlib/src/builtin/object.mojo b/stdlib/src/builtin/object.mojo index fce05d2476..c2337934a1 100644 --- a/stdlib/src/builtin/object.mojo +++ b/stdlib/src/builtin/object.mojo @@ -523,9 +523,9 @@ struct _ObjectImpl( lowest-common denominator type for performing comparisons, in order of increasing priority: bool, int, and then float. """ - var lhsId = lhs.get_type_id() - var rhsId = rhs.get_type_id() - if lhsId == rhsId: + var lhs_id = lhs.get_type_id() + var rhs_id = rhs.get_type_id() + if lhs_id == rhs_id: return @parameter @@ -538,10 +538,10 @@ struct _ObjectImpl( else: value = value.convert_int_to_float() - if lhsId > rhsId: - convert(rhs, rhsId, lhsId) + if lhs_id > rhs_id: + convert(rhs, rhs_id, lhs_id) else: - convert(lhs, lhsId, rhsId) + convert(lhs, lhs_id, rhs_id) @staticmethod fn coerce_arithmetic_type(mut lhs: _ObjectImpl, mut rhs: _ObjectImpl): @@ -1075,15 +1075,15 @@ struct object( """ lhs._comparison_type_check() rhs._comparison_type_check() - var lhsValue = lhs._value - var rhsValue = rhs._value - _ObjectImpl.coerce_comparison_type(lhsValue, rhsValue) - if lhsValue.is_float(): - return fp_func(lhsValue.get_as_float(), rhsValue.get_as_float()) - if lhsValue.is_int(): - return int_func(lhsValue.get_as_int(), rhsValue.get_as_int()) - debug_assert(lhsValue.is_bool(), "expected both values to be bool") - return bool_func(lhsValue.get_as_bool(), rhsValue.get_as_bool()) + var lhs_value = lhs._value + var rhs_value = rhs._value + _ObjectImpl.coerce_comparison_type(lhs_value, rhs_value) + if lhs_value.is_float(): + return fp_func(lhs_value.get_as_float(), rhs_value.get_as_float()) + if lhs_value.is_int(): + return int_func(lhs_value.get_as_int(), rhs_value.get_as_int()) + debug_assert(lhs_value.is_bool(), "expected both values to be bool") + return bool_func(lhs_value.get_as_bool(), rhs_value.get_as_bool()) @always_inline fn _string_compare(self, rhs: object) -> Int: @@ -1286,12 +1286,12 @@ struct object( """ lhs._arithmetic_type_check() rhs._arithmetic_type_check() - var lhsValue = lhs._value - var rhsValue = rhs._value - _ObjectImpl.coerce_arithmetic_type(lhsValue, rhsValue) - if lhsValue.is_float(): - return fp_func(lhsValue.get_as_float(), rhsValue.get_as_float()) - return int_func(lhsValue.get_as_int(), rhsValue.get_as_int()) + var lhs_value = lhs._value + var rhs_value = rhs._value + _ObjectImpl.coerce_arithmetic_type(lhs_value, rhs_value) + if lhs_value.is_float(): + return fp_func(lhs_value.get_as_float(), rhs_value.get_as_float()) + return int_func(lhs_value.get_as_int(), rhs_value.get_as_int()) @staticmethod @always_inline @@ -1310,12 +1310,12 @@ struct object( """ lhs._arithmetic_integral_type_check() rhs._arithmetic_integral_type_check() - var lhsValue = lhs._value - var rhsValue = rhs._value - _ObjectImpl.coerce_integral_type(lhsValue, rhsValue) - if lhsValue.is_int(): - return int_func(lhsValue.get_as_int(), rhsValue.get_as_int()) - return bool_func(lhsValue.get_as_bool(), rhsValue.get_as_bool()) + var lhs_value = lhs._value + var rhs_value = rhs._value + _ObjectImpl.coerce_integral_type(lhs_value, rhs_value) + if lhs_value.is_int(): + return int_func(lhs_value.get_as_int(), rhs_value.get_as_int()) + return bool_func(lhs_value.get_as_bool(), rhs_value.get_as_bool()) @always_inline fn __neg__(self) raises -> object: @@ -1360,14 +1360,14 @@ struct object( The sum or concatenated values. """ if self._value.is_str() and rhs._value.is_str(): - var lhsStr = self._value.get_as_string() - var rhsStr = rhs._value.get_as_string() - var length = lhsStr.length + rhsStr.length + var lhs_str = self._value.get_as_string() + var rhs_str = rhs._value.get_as_string() + var length = lhs_str.length + rhs_str.length var impl = _ImmutableString( UnsafePointer[UInt8].alloc(length), length ) - memcpy(impl.data, lhsStr.data, lhsStr.length) - memcpy(impl.data + lhsStr.length, rhsStr.data, rhsStr.length) + memcpy(impl.data, lhs_str.data, lhs_str.length) + memcpy(impl.data + lhs_str.length, rhs_str.data, rhs_str.length) var result = object() result._value = impl return result diff --git a/stdlib/src/python/_cpython.mojo b/stdlib/src/python/_cpython.mojo index 05426aa8eb..d047c84b3d 100644 --- a/stdlib/src/python/_cpython.mojo +++ b/stdlib/src/python/_cpython.mojo @@ -1478,14 +1478,13 @@ struct CPython: return int(self.lib.call["PyObject_Hash", Int](obj)) fn PyObject_GetIter( - mut self, traversablePyObject: PyObjectPtr + mut self, traversable_py_object: PyObjectPtr ) -> PyObjectPtr: """[Reference]( https://docs.python.org/3/c-api/object.html#c.PyObject_GetIter). """ - var iterator = self.lib.call["PyObject_GetIter", PyObjectPtr]( - traversablePyObject + traversable_py_object ) self.log( @@ -1493,9 +1492,9 @@ struct CPython: " NEWREF PyObject_GetIter, refcnt:", self._Py_REFCNT(iterator), "referencing ", - traversablePyObject._get_ptr_as_int(), + traversable_py_object._get_ptr_as_int(), "refcnt of traversable: ", - self._Py_REFCNT(traversablePyObject), + self._Py_REFCNT(traversable_py_object), ) self._inc_total_rc() diff --git a/stdlib/src/python/python_object.mojo b/stdlib/src/python/python_object.mojo index a6b3a8a45f..42b2dc6bed 100644 --- a/stdlib/src/python/python_object.mojo +++ b/stdlib/src/python/python_object.mojo @@ -41,9 +41,9 @@ struct _PyIter(Sized): var iterator: PythonObject """The iterator object that stores location.""" - var preparedNextItem: PythonObject + var prepared_next_item: PythonObject """The next item to vend or zero if there are no items.""" - var isDone: Bool + var is_done: Bool """Stores True if the iterator is pointing to the last item.""" # ===-------------------------------------------------------------------===# @@ -57,8 +57,8 @@ struct _PyIter(Sized): existing: Initialized _PyIter instance. """ self.iterator = existing.iterator - self.preparedNextItem = existing.preparedNextItem - self.isDone = existing.isDone + self.prepared_next_item = existing.prepared_next_item + self.is_done = existing.is_done @implicit fn __init__(out self, iter: PythonObject): @@ -69,19 +69,19 @@ struct _PyIter(Sized): """ var cpython = _get_global_python_itf().cpython() self.iterator = iter - var maybeNextItem = cpython.PyIter_Next(self.iterator.py_object) - if maybeNextItem.is_null(): - self.isDone = True - self.preparedNextItem = PythonObject(PyObjectPtr()) + var maybe_next_item = cpython.PyIter_Next(self.iterator.py_object) + if maybe_next_item.is_null(): + self.is_done = True + self.prepared_next_item = PythonObject(PyObjectPtr()) else: - self.preparedNextItem = PythonObject(maybeNextItem) - self.isDone = False + self.prepared_next_item = PythonObject(maybe_next_item) + self.is_done = False fn __init__(out self): """Initialize an empty iterator.""" self.iterator = PythonObject(PyObjectPtr()) - self.isDone = True - self.preparedNextItem = PythonObject(PyObjectPtr()) + self.is_done = True + self.prepared_next_item = PythonObject(PyObjectPtr()) # ===-------------------------------------------------------------------===# # Trait implementations @@ -97,12 +97,12 @@ struct _PyIter(Sized): if not self.iterator: return self.iterator var cpython = _get_global_python_itf().cpython() - var current = self.preparedNextItem - var maybeNextItem = cpython.PyIter_Next(self.iterator.py_object) - if maybeNextItem.is_null(): - self.isDone = True + var current = self.prepared_next_item + var maybe_next_item = cpython.PyIter_Next(self.iterator.py_object) + if maybe_next_item.is_null(): + self.is_done = True else: - self.preparedNextItem = PythonObject(maybeNextItem) + self.prepared_next_item = PythonObject(maybe_next_item) return current @always_inline @@ -115,7 +115,7 @@ struct _PyIter(Sized): Returns: 0 if the traversal is complete and 1 otherwise. """ - if self.isDone: + if self.is_done: return 0 else: return 1 @@ -596,19 +596,19 @@ struct PythonObject( raise Error("Attribute is not found.") return PythonObject(result) - fn __setattr__(self, name: StringLiteral, newValue: PythonObject) raises: + fn __setattr__(self, name: StringLiteral, new_value: PythonObject) raises: """Set the given value for the object attribute with the given name. Args: name: The name of the object attribute to set. - newValue: The new value to be set for that attribute. + new_value: The new value to be set for that attribute. """ - return self._setattr(name, newValue.py_object) + return self._setattr(name, new_value.py_object) - fn _setattr(self, name: StringLiteral, newValue: PyObjectPtr) raises: + fn _setattr(self, name: StringLiteral, new_value: PyObjectPtr) raises: var cpython = _get_global_python_itf().cpython() var result = cpython.PyObject_SetAttrString( - self.py_object, name, newValue + self.py_object, name, new_value ) Python.throw_python_exception_if_error_state(cpython) if result < 0: diff --git a/stdlib/src/time/time.mojo b/stdlib/src/time/time.mojo index 0167c26548..f6221590ac 100644 --- a/stdlib/src/time/time.mojo +++ b/stdlib/src/time/time.mojo @@ -84,21 +84,23 @@ struct _CTimeSpec(Stringable): @value @register_passable("trivial") struct _FILETIME: - var dwLowDateTime: UInt32 - var dwHighDateTime: UInt32 + var dw_low_date_time: UInt32 + var dw_high_date_time: UInt32 fn __init__(out self): - self.dwLowDateTime = 0 - self.dwHighDateTime = 0 + self.dw_low_date_time = 0 + self.dw_high_date_time = 0 fn as_nanoseconds(self) -> UInt: # AFTER subtracting windows offset the return value fits in a signed int64 # BEFORE subtracting windows offset the return value does not fit in a signed int64 # Taken from https://github.com/microsoft/STL/blob/c8d1efb6d504f6392acf8f6d01fd703f7c8826c0/stl/src/xtime.cpp#L50 - alias windowsToUnixEpochOffsetNs: Int = 0x19DB1DED53E8000 + alias windows_to_unix_epoch_offset_ns: Int = 0x19DB1DED53E8000 var interval_count: UInt64 = ( - self.dwHighDateTime.cast[DType.uint64]() << 32 - ) + self.dwLowDateTime.cast[DType.uint64]() - windowsToUnixEpochOffsetNs + self.dw_high_date_time.cast[DType.uint64]() << 32 + ) + self.dw_low_date_time.cast[ + DType.uint64 + ]() - windows_to_unix_epoch_offset_ns return int(interval_count * 100) diff --git a/stdlib/src/utils/_serialize.mojo b/stdlib/src/utils/_serialize.mojo index 1cc0eea138..f6e5baf18c 100644 --- a/stdlib/src/utils/_serialize.mojo +++ b/stdlib/src/utils/_serialize.mojo @@ -134,7 +134,7 @@ fn _serialize[ if row_idx != row_elem_count: serialize_fn(",") - # Intermediate rows are filled with "..." and rowIdx is advanced to third + # Intermediate rows are filled with "..." and row_idx is advanced to third # from last. if ( row_elem_count >= _kCompactMaxElemsToPrint diff --git a/stdlib/test/builtin/test_error.mojo b/stdlib/test/builtin/test_error.mojo index 87dd096cd4..eb24ee7e4b 100644 --- a/stdlib/test/builtin/test_error.mojo +++ b/stdlib/test/builtin/test_error.mojo @@ -27,8 +27,8 @@ def test_error_raising(): def test_from_and_to_string(): - var myString: String = "FOO" - var error = Error(myString) + var my_string: String = "FOO" + var error = Error(my_string) assert_equal(str(error), "FOO") assert_equal(str(Error("bad")), "bad") diff --git a/stdlib/test/python/test_python_info.mojo b/stdlib/test/python/test_python_info.mojo index b1b7eb29e7..5e1a4a1c7c 100644 --- a/stdlib/test/python/test_python_info.mojo +++ b/stdlib/test/python/test_python_info.mojo @@ -21,10 +21,10 @@ from testing import assert_equal fn test_python_version(mut python: Python) raises: var version = "3.10.8 (main, Nov 24 2022, 08:08:27) [Clang 14.0.6 ]" - var pythonVersion = PythonVersion(version) - assert_equal(pythonVersion.major, 3) - assert_equal(pythonVersion.minor, 10) - assert_equal(pythonVersion.patch, 8) + var python_version = PythonVersion(version) + assert_equal(python_version.major, 3) + assert_equal(python_version.minor, 10) + assert_equal(python_version.patch, 8) def main(): From bd2384cd0f9ed154e71eb4a691b14332283880c2 Mon Sep 17 00:00:00 2001 From: Joshua James Venter Date: Mon, 9 Dec 2024 12:29:02 -0600 Subject: [PATCH 067/509] [External] [docs] Prevent unwanted Latex interpretation in `Path` docs (#52407) [External] [docs] Prevent unwanted Latex interpretation in `Path` docs As title, see [docs](https://docs.modular.com/mojo/stdlib/pathlib/path/Path#home). Co-authored-by: Joshua James Venter Closes modularml/mojo#3844 MODULAR_ORIG_COMMIT_REV_ID: d3cc7796c2b2fc8991bd958984c0d2313a9bfcd5 --- stdlib/src/pathlib/path.mojo | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/stdlib/src/pathlib/path.mojo b/stdlib/src/pathlib/path.mojo index c6e9016b5e..5a0f285db1 100644 --- a/stdlib/src/pathlib/path.mojo +++ b/stdlib/src/pathlib/path.mojo @@ -264,7 +264,7 @@ struct Path( return os.path.exists(self) fn expanduser(self) raises -> Path: - """Expands a prefixed `~` with $HOME on posix or $USERPROFILE on + """Expands a prefixed `~` with `$HOME` on posix or `$USERPROFILE` on windows. If environment variables are not set or the `path` is not prefixed with `~`, returns the `path` unmodified. @@ -275,7 +275,7 @@ struct Path( @staticmethod fn home() raises -> Path: - """Returns $HOME on posix or $USERPROFILE on windows. If environment + """Returns `$HOME` on posix or `$USERPROFILE` on windows. If environment variables are not set it returns `~`. Returns: From ebfbf2a0c3a78ae721cc8d7c50b951b3756c05e1 Mon Sep 17 00:00:00 2001 From: Ken Jones <165197230+KenJones-Modular@users.noreply.github.com> Date: Mon, 9 Dec 2024 15:01:03 -0800 Subject: [PATCH 068/509] New Get started with Mojo tutorial The tutorial gives new Mojo programmers a tour of some of the language's features by guiding them through the process of creating an implementation of Conway's Game of Life from scratch. MODULAR_ORIG_COMMIT_REV_ID: 3548d7d23c6f612ef22b730106646b8332ce8dfa --- docs/manual/basics.mdx | 34 +- docs/manual/get-started.mdx | 1310 +++++++++++++++++--- docs/manual/images/game-of-life-screen.png | Bin 0 -> 85325 bytes 3 files changed, 1137 insertions(+), 207 deletions(-) create mode 100644 docs/manual/images/game-of-life-screen.png diff --git a/docs/manual/basics.mdx b/docs/manual/basics.mdx index 938701d322..edeb731899 100644 --- a/docs/manual/basics.mdx +++ b/docs/manual/basics.mdx @@ -1,24 +1,21 @@ --- -title: Introduction to Mojo +title: Mojo language basics sidebar_position: 1 +sidebar_label: Overview description: Introduction to Mojo's basic language features. --- -At this point, you should have already set up the Mojo -SDK and run ["Hello -world"](/mojo/manual/get-started). Now let's talk about how -to write Mojo code. +At this point, you should have already installed [Magic](/magic) to manage the +virtual environment and packages for your MAX and Mojo development (or +alternatively added the `max` package to a [conda](/magic/conda) development +environment). It's also a good idea to go through the [Get Started with +Mojo](/mojo/manual/get-started) tutorial to get a taste of what Mojo programming +is like. Now let's talk about how to write Mojo code. -If -you know Python, then a lot of Mojo code will look familiar. However, Mojo -is—first and foremost—designed for high-performance systems programming, with -features like strong type checking, memory safety, next-generation compiler -technologies, and more. As such, Mojo also has a lot in common with languages -like C++ and Rust. - -Yet, we've designed Mojo to be flexible, so you can incrementally adopt -systems-programming features like strong type checking as you see fit—Mojo does -not *require* strong type checking. +If you know Python, then a lot of Mojo code will look familiar. However, Mojo +incorporates features like strong type checking, memory safety, next-generation +compiler technologies, and more. As such, Mojo also has a lot in common with +languages like C++ and Rust. On this page, we'll introduce the essential Mojo syntax, so you can start coding quickly and understand other Mojo code you encounter. Subsequent @@ -181,8 +178,9 @@ each characteristic (such as each method). Each characteristic in a trait is a "requirement" for the struct, and when your struct implements each requirement, it's said to "conform" to the trait. -Currently, the only characteristics that traits can define are method signatures. Also, traits -currently cannot implement default behaviors for methods. +Currently, the only characteristics that traits can define are method +signatures. Also, traits currently cannot implement default behaviors for +methods. Using traits allows you to write generic functions that can accept any type that conforms to a trait, rather than accept only specific types. @@ -355,7 +353,7 @@ from docstrings using the [`mojo doc` command](/mojo/cli/doc). ## Python integration -Mojo does not yet adopt the full syntax of Python, but we've built a mechanism to import +Mojo supports the ability to import Python modules as-is, so you can leverage existing Python code right away. For example, here's how you can import and use NumPy (you must have Python diff --git a/docs/manual/get-started.mdx b/docs/manual/get-started.mdx index 363fef9d10..469542567d 100644 --- a/docs/manual/get-started.mdx +++ b/docs/manual/get-started.mdx @@ -1,295 +1,1227 @@ --- -title: Get started with Mojo🔥 -sidebar_label: Get started -description: Install Mojo now and start developing +title: "Get started with Mojo" +sidebar_label: "Tutorial: Get started with Mojo" +description: "Install Mojo and learn the language basics by building a complete Mojo program" +github_url: https://github.com/modularml/mojo/tree/nightly/examples/life --- -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; -import MaxInstall from '@site/src/components/MaxInstall'; +import GetMagic from '@site/src/includes/get_magic.mdx'; -On this page, we'll show you how to create the classic "Hello world" starter -program with Mojo. If you'd rather read how to write Mojo code, see the -[introduction to Mojo](/mojo/manual/basics). +Get ready to learn Mojo! This tutorial is designed to give you a tour of several +features of Mojo by building a complete program that does much more than simply +printing "Hello, world!" -By installing Mojo, you understand and agree to our [software -license](https://www.modular.com/legal/max). +In fact, we'll build a version of [Conway's Game of +Life](https://en.wikipedia.org/wiki/Conway%27s_Game_of_Life), which is a simple +simulation to explore self-replicating systems. If you haven't heard of it +before, don't worry, it will make sense when you see it in action. Let's just +get started so you can learn Mojo programming basics, including the following: -## 1. Create a new project +- Using basic built-in types like `Int` and `String` +- Using a `List` to manage a sequence of values +- Creating custom types in the form of structs (data structures) +- Creating and importing Mojo modules +- Importing and using Python libraries -To create a new Mojo project, we'll use [Magic](/magic)—a virtual environment -manager and package manager based on conda. +This tutorial might be a little long because there's a lot to learn, but we +tried to keep the explanations simple, and we included links along the way for +you to go learn more about each topic. -1. Install Magic on macOS or Ubuntu Linux with this command: +And if you just want to see the finished code, you can [get it on +GitHub](https://github.com/modularml/mojo/tree/nightly/examples/life). - +## 1. Create a Mojo project with `magic` - Then run the `source` command printed in your terminal. +We'll start by using the [`magic` CLI](/magic) to create a virtual environment +and generate our initial project directory. -2. Create a Mojo project called "hello-world": + - ```sh - magic init hello-world --format mojoproject - ``` +In your terminal, go to the directory in which you want to create the project +and execute: - This creates a directory named `hello-world` and installs the Mojo project - dependencies—the only dependency for a Mojo project is the `max` package - (Mojo is [bundled with MAX](/max/faq#why-bundle-mojo-with-max)). +```bash +magic init life --format mojoproject +``` -3. Start a shell in the project virtual environment: +This creates a project directory named `life`. Let's go to the directory and +list its contents: - ```sh - cd hello-world && magic shell - ``` +```bash +cd life +``` -That's it! The `magic shell` command activates the virtual environment so you -can now start using Mojo. For example, you can check your Mojo version like -this: +```bash +ls -A +``` -```sh -mojo --version +```output +.gitattributes +.gitignore +.magic +magic.lock +mojoproject.toml ``` +You should see that the project directory contains: -
- Click here to install the Mojo nightly build. -
+- An initial `mojoproject.toml` manifest file, which defines the project + dependencies and other features +- A [lock file](/magic#the-magiclock-file) named `magic.lock`, which specifies + the transitive dependencies and actual package versions installed in the + project's virtual environment + + :::note + + Never edit the lock file directly. The `magic` command automatically updates the lock file if you edit the manifest file. + + ::: + +- A `.magic` subdirectory containing the conda virtual environment for the + project +- Initial `.gitignore` and `.gitattributes` files that you can optionally use if + you plan to use `git` version control with the project -To install the latest nightly build, specify the `max-nightly` channel when you -initialize your project: +Because we used the `--format mojoproject` option when creating the project, +`magic` automatically added the `max` package as a dependency, which includes +Mojo. Let's verify that our project is configured correctly by checking the +version of Mojo that's installed within our project's virtual environment. +`magic run` executes a command in the project's virtual environment, so let's +use it to execute `mojo --version`: -```sh -magic init hello-world-nightly --format mojoproject \ - -c conda-forge -c https://conda.modular.com/max-nightly +```bash +magic run mojo --version ``` -When you include the `-c` (`--channel`) option, you must specify all channels. -Be sure to specify the `conda-forge` channel (or another conda channel) where -Magic should look for all packages other than MAX/Mojo. +You should see a version string indicating the version of Mojo installed, which +by default should be the latest released version. -Then start a shell in the new environment: +Great! Now let's write our first Mojo program. -```sh -cd hello-world-nightly && magic shell +## 2. Create a "Hello, world" program + +You can use any editor or IDE that you like. If you're using [Visual Studio +Code](https://code.visualstudio.com/) you can take advantage of the [Mojo for +Visual Studio Code +extension](https://marketplace.visualstudio.com/items?itemName=modular-mojotools.vscode-mojo), +which provides features like syntax highlighting, code completion, and debugging +support. + +In the project directory, create a file named `life.mojo` containing the +following lines of code: + +```mojo title="life.mojo" +# My first Mojo program! +def main(): + print("Hello, World!") ``` -The nightly version of Mojo installed in this project is fully independent, so -it will not interfere with other projects that use the latest stable build. +If you've programmed before in Python, this should look familiar. -
-
+- We're using the `def` keyword to define a function named `main`. +- You can use any number of spaces or tabs for indentation as long as you use + the same indentation for the entire code block. We'll follow the [Python style + guide](https://peps.python.org/pep-0008/) and use 4 spaces. +- This [`print()`](/mojo/stdlib/builtin/io/print) function a Mojo built-in so it + doesn't require an import. +An executable Mojo program *requires* you to define a no-argument `main()` as +its entry point. Running the program automatically invokes the `main()` +function, and your program exits when the `main()` function returns. -## 2. Run code in the REPL +To run the program, we first need to start a shell session in our project's +virtual environment: -First, let's use the Mojo -[REPL](https://en.wikipedia.org/wiki/Read%E2%80%93eval%E2%80%93print_loop), -which allows you to write and run Mojo code in a command prompt: +```bash +magic shell +``` + +Later on, when you want to exit the virtual environment, just type `exit`. -1. To start a REPL session, type `mojo` and press Enter. +Now we can use the `mojo` command to run our program. -2. Type `print("Hello, world!")` and press Enter twice -(a blank line is required to indicate the end of an expression). +```bash +mojo life.mojo +``` - The result looks like this: +```output +Hello, World! +``` - ```text - $ mojo - Welcome to Mojo! 🔥 +Mojo is a compiled language, not an interpreted one like Python. So when we run +our program like this, `mojo` performs [just-in-time +compilation](https://en.wikipedia.org/wiki/Just-in-time_compilation) (JIT) and +then runs the result. - Expressions are delimited by a blank line. - Type `:quit` to exit the REPL and `:mojo help repl` for further assistance. +We can also compile our program into an executable file using [`mojo +build`](/mojo/cli/build) like this: - 1> print("Hello world") - Hello world - ``` +```bash +mojo build life.mojo +``` -3. To exit REPL, type `:quit` and press Enter, or press -Ctrl + D. +By default, this saves an executable file to the current directory named `life`. -You can write as much code as you want in the REPL. You can press -Enter to start a new line and continue writing code, and when you -want Mojo to evaluate the code, press Enter twice. If there's -something to print, Mojo prints it and then returns the prompt to you. +```bash +./life +``` -The REPL is primarily useful for short experiments because the code isn't -saved. So when you want to write a real program, you need to write the code in -a `.mojo` source file. +```output +Hello, World! +``` -## 3. Run a Mojo file +## 3. Create and use variables -Now let's write the code in a Mojo source file and run it with the -[`mojo`](/mojo/cli/) command: +Let's extend this basic program by prompting the user for their name and +including that in the greeting printed. The built-in +[`input()`](/mojo/stdlib/builtin/io/input) function accepts an optional +[`String`](/mojo/stdlib/collections/string/String) argument to use as a prompt, +and returns a `String` consisting of the characters the user entered (with the +newline character at the end stripped off). -1. Create a file named `hello.mojo` (or `hello.🔥`) and add the following code: +So let's declare a variable, assign the return value from `input()` to it, and +build a customized greeting. - ```mojo - fn main(): - print("Hello, world!") - ``` +```mojo title="life.mojo" +def main(): + var name: String = input("Who are you? ") + var greeting: String = "Hi, " + name + "!" + print(greeting) +``` - That's all you need. Save the file and return to your terminal. +Go ahead and run it: -2. Now run it with the `mojo` command: +```bash +mojo life.mojo +``` - ```sh - mojo hello.mojo - ``` +```output +Who are you? Edna +Hi, Edna! +``` - ```output - Hello, world! - ``` +Notice that this code uses a `String` type annotation indicating the type of +value that the variable can contain. The Mojo compiler performs [static type +checking](https://en.wikipedia.org/wiki/Type_system#Static_type_checking), which +means that you'll encounter a compile-time error if your code tries to assign a +value of one type to a variable of a different type. + +Mojo also supports implicitly declared variables, where you simply assign a +value to a new variable without using the `var` keyword or indicating its type. +So we can replace the code we just entered with the following, and it works +exactly the same. + +```mojo title="life.mojo" +def main(): + name = input("Who are you? ") + greeting = "Hi, " + name + "!" + print(greeting) +``` -## 4. Build an executable binary +However, implicitly declared variables still have a fixed type, which Mojo +automatically infers from the initial value assignment. So in this example both +`name` and `greeting` are inferred as `String` type variables. If you then try +to assign an integer value like 42 to the `name` variable, you'll get a +compile-time error because of the type mismatch. You can learn more about Mojo +variables in the [Variables](/mojo/manual/variables) section of the Mojo manual. + +## 4. Use Mojo `Int` and `List` types to represent the game state + +As originally envisioned by John Conway, the game's "world" is an infinite, +two-dimensional grid of square cells, but for our implementation we'll constrain +the grid to a finite size. A drawback to making the edges of the grid a hard +boundary is that there are fewer neighboring cells around the edges compared to +the interior, which tends to cause die offs. Therefore, we'll model the world as +a toroid (a donut shape), where the top row is considered adjacent to the bottom +row, and the left column is considered adjacent to the right column. This will +come into play later when we implement the algorithm for calculating each +subsequent generation. + +To keep track of the height and width of our grid we'll use +[`Int`](/mojo/stdlib/builtin/int/Int), which represents a signed integer of the +[word size](https://en.wikipedia.org/wiki/Word_(computer_architecture)) of the +CPU, typically 32 or 64 bits. + +To represent the state of an individual cell, we'll represent the cell state +with an `Int` value of 1 (populated) or 0 (unpopulated). Later, when we need to +determine the number of populated neighbors surrounding a cell, we can simply +add the values of the neighboring cells. + +To represent the state of the entire grid, we need a [collection +type](/mojo/manual/types#collection-types). The most appropriate for this use +case is [`List`](/mojo/stdlib/collections/list/List), which is a +dynamically-sized sequence of values. + +All of the values in a Mojo `List` must be the same type so that the Mojo +compiler can ensure type safety. (For example, when we retrieve a value from a +`List[Int]`, the compiler knows that the value is an `Int` and can verify that +we then use it correctly). Mojo collections are implemented as [generic +types](https://en.wikipedia.org/wiki/Generic_programming), so that we can +indicate the type of values the specific collection will hold by specifying a +[type parameter](/mojo/manual/parameters/#parameterized-structs) in square +brackets like this: + +```mojo +# The List in row can contain only Int values +row = List[Int]() + +# The List in names can contain only String values +names = List[String]() +``` -Finally, let's build and run that same code as an executable: +We can also create a `List` with an initial set of values and let the compiler +infer the type. -1. Create an executable file with the [`build`](/mojo/cli/build) command: +```mojo +nums = List(12, -7, 64) # A List[Int] containing 3 Int values +``` - ```sh - mojo build hello.mojo - ``` +The Mojo `List` type includes the ability to append to the list, pop values out +of the list, and access list items using subscript notation. Here's a taste of +those operations: + +```mojo +nums = List(12, -7, 64) +nums.append(-937) +print("Number of elements in the list:", len(nums)) +print("Popping last element off the list:", nums.pop()) +print("First element of the list:", nums[0]) +print("Second element of the list:", nums[1]) +print("Last element of the list:", nums[-1]) +``` - The executable file uses the same name as the `.mojo` file, but - you can change that with the `-o` option. +```output +Number of elements in the list: 4 +Popping last element off the list: -937 +First element of the list: 12 +Second element of the list: -7 +Last element of the list: 64 +``` -2. Then run the executable: +We can also nest `List`s: + +```mojo +grid = List( + List(11, 22), + List(33, 44) +) +print("Row 0, Column 0:", grid[0][0]) +print("Row 0, Column 1:", grid[0][1]) +print("Row 1, Column 0:", grid[1][0]) +print("Row 1, Column 1:", grid[1][1]) +``` - ```sh - ./hello - ``` +```output +Row 0, Column 0: 11 +Row 0, Column 1: 22 +Row 1, Column 0: 33 +Row 1, Column 1: 44 +``` - ```output - Hello, world! - ``` +This looks like a good way to represent the state of the grid for our program. +So let's update the `main()` function with the following code that defines an +8x8 grid containing the initial state of a +"[glider](https://en.wikipedia.org/wiki/Glider_(Conway%27s_Game_of_Life))" +pattern. + +```mojo title="life.mojo" +def main(): + num_rows = 8 + num_cols = 8 + glider = List( + List(0, 1, 0, 0, 0, 0, 0, 0), + List(0, 0, 1, 0, 0, 0, 0, 0), + List(1, 1, 1, 0, 0, 0, 0, 0), + List(0, 0, 0, 0, 0, 0, 0, 0), + List(0, 0, 0, 0, 0, 0, 0, 0), + List(0, 0, 0, 0, 0, 0, 0, 0), + List(0, 0, 0, 0, 0, 0, 0, 0), + List(0, 0, 0, 0, 0, 0, 0, 0), + ) +``` -The [`build`](/mojo/cli/build) command creates a statically compiled binary -file, so it contains all the code and libraries it needs to run. +## 5. Create and use a function to print the grid + +Now let's create a function to generate a string representation of the game grid +that we can print it to the terminal. + +There are actually two different keywords that we can use to define functions in +Mojo: `def` and `fn`. Using `fn` gives us finer level control over the function +definition, whereas `def` provides a good set of default behaviors for most use +cases. + +Let's add the following definition of a function named `grid_str()` to our +program. The Mojo compiler doesn't care whether we add our function before or +after `main()`, but the convention is to put `main()` at the end. + +```mojo title="life.mojo" +def grid_str(rows: Int, cols: Int, grid: List[List[Int]]) -> String: + # Create an empty String + str = String() + + # Iterate through rows 0 through rows-1 + for row in range(rows): + # Iterate through columns 0 through cols-1 + for col in range(cols): + if grid[row][col] == 1: + str += "*" # If cell is populated, append an asterisk + else: + str += " " # If cell is not populated, append a space + if row != rows-1: + str += "\n" # Add a newline between rows, but not at the end + return str +``` -You can now deactivate the virtual environment by just typing `exit`: +When we pass a value to a Mojo function, the default behavior for `def` is that +an argument is treated as a read-only reference to the value. However, if the +Mojo compiler determines that there is code in the function that can change the +value, then the argument gets a copy of the original value assigned to it. As +we'll see later, we can specify a different behavior by including an explicit +[argument convention](/mojo/manual/values/ownership#argument-conventions). In +contrast, when you define a function with `fn` Mojo simply treats each argument +as a read-only reference by default unless you provide an explicit argument +convention. + +Each argument name is followed by a type annotation indicating the type of value +you can pass to the argument. Just like when you're assigning a value to a +variable, you'll encounter a compile-time error if your code tries to pass a +value of one type to an argument of a different type. Finally, the `-> String` +following the argument list indicates that this function has a `String` type +return value. + +In the body of the function, we generate a `String` by appending an asterisk for +each populated cell and a space for each unpopulated cell, separating each row +of the grid with a newline character. We use nested `for` loops to iterate +through each row and column of the grid, using +[`range()`](/mojo/stdlib/builtin/range/range) to generate a sequence of integers +from 0 up to but not including the given end value. Then we append the correct +characters to the `String` representation. See [Control +flow](/mojo/manual/control-flow) for more information on `if`, `for`, and other +control flow structures in Mojo. -```sh -exit +:::note + +As described in [The `for` +statement](/mojo/manual/control-flow#the-for-statement) section of the Mojo +manual, it's possible to iterate over the elements of a `List` directly instead +of iterating over the values of a `range()` and then accessing the `List` +elements by their numeric index. However, iterating over a `List` directly +currently returns a *reference* to the element, which then requires using the +dereference operator, `[]`, to access the actual element value. The code looks +like this: + +```mojo +nums = List(12, -7, 64) +for value in nums: + print("Value:", value[]) ``` -Now let's try running an existing code example. +This behavior is likely to change in the future, at which point iterating over a +`List` won't require using the dereference operator. But for this tutorial, +we'll stick with iterating over a `range()` and accessing the `List` elements by +their numeric index. + +::: + +Now that we've defined our `grid_str()` function, let's invoke it from `main()`. -## 5. Run an example from GitHub +```mojo title="life.mojo" +def main(): + ... + result = grid_str(num_rows, num_cols, glider) + print(result) +``` -Our Mojo code examples in GitHub include a Magic configuration file so you can -simply clone the repo and run the code with `magic`. For example: +Then run the program to see the result: -1. Clone the Mojo repo: +```bash +mojo life.mojo +``` - ```sh - git clone https://github.com/modularml/mojo.git - ``` +```output + * + * +*** - Only if you installed the nightly build, also checkout the nightly branch: - ```sh - git checkout nightly - ``` -2. Navigate to the examples: - ```sh - cd mojo/examples - ``` -3. Run some code: +``` - ```sh - magic run mojo hello_interop.mojo - ``` +We can see that the position of the asterisks matches the location of the 1s in +the `glider` grid. - ```output - Hello Mojo 🔥! - 9 - 6 - 3 - Hello from Python! - I can even print a numpy array: [1 2 3] - ``` +## 6. Create a module and define a custom type -## 6. Install our VS Code extension (optional) +We're currently passing three arguments to `grid_str()` to describe the size and +state of the grid to print. A better approach would be to define our own custom +type that encapsulates all information about the grid. Then any function that +needs to manipulate a grid can accept just a single argument. We can do this by +defining a Mojo *struct*, which is a custom data structure. -To provide a first-class developer experience with features like code -completion, quick fixes, and hover help, we've created a [Mojo extension for -Visual Studio -Code](https://marketplace.visualstudio.com/items?itemName=modular-mojotools.vscode-mojo). +A [Mojo struct](/mojo/manual/structs) is a custom type consisting of: -![](./images/mojo-vscode.png) +- Fields, which are variables containing the data associated with the structure +- Methods, which are functions that we can optionally define to manipulate + instances of the struct that we create +:::note -## Update Mojo +Mojo structs are similar to classes. However, Mojo structs do *not* support +inheritance. Mojo doesn't support classes at this time. -To update the Mojo version in your project, use `magic add` -and specify the `max` package version. +::: -For example, if you want to always use the latest version of Mojo, you can use -the `*` wildcard as the version and then simply run `magic update` (you must -run `magic add` within the project path): +We could define the struct in our existing `life.mojo` source file, but let's +create a separate *module* for the struct. A module is simply a Mojo source file +containing struct and function definitions that can be imported into other Mojo +source files. To learn more about creating and importing modules, see the +[Modules and packages](/mojo/manual/packages) section of the Mojo manual . + +So create a new source file named `gridv1.mojo` in the project directory +containing the following definition of a struct named `Grid` consisting of three +fields: + +```mojo title="gridv1.mojo" +@value +struct Grid(): + var rows: Int + var cols: Int + var data: List[List[Int]] +``` -```sh -cd hello-world +Mojo requires you to declare all of the fields in the struct definition. You +can't add fields dynamically at run-time. You must declare the type for each +field, but you cannot assign a value as part of the field declaration. Instead, +the [constructor](/mojo/manual/lifecycle/life#constructor) is responsible for +initializing the value of all fields. + +Mojo structs support several different [lifecycle +methods](/mojo/manual/lifecycle/) defining the behavior when an instance of the +struct is created, moved, copied, and destroyed. For structs that are basic +aggregations of other types and don't require custom resource management or +lifecycle behaviors, you can simply add the +[`@value`](/mojo/manual/structs#value-decorator) decorator to your struct +definition to have the Mojo compiler automatically generate lifecycle methods +for you. + +Because we used the `@value` decorator, `Grid` includes a "member-wise" +[constructor](/mojo/manual/lifecycle/life#constructor) . The constructor's +arguments are the same names and types as the struct's fields and appear in the +same order. So this means that we can create an instance of `Grid` like this: + +```mojo +my_grid = Grid(2, 2, List(List(0, 1), List(1, 1))) ``` -```sh -magic add max +We can then access the field values with "dot" syntax like this: + +```mojo +print("Rows:", my_grid.rows) ``` -```sh -magic update +```output +Rows: 2 ``` -:::note +## 7. Import a module and use our custom `Grid` type + +Now let's edit `life.mojo` to import `Grid` from our new module and update our +code to use it. + +```mojo title="life.mojo" +from gridv1 import Grid + +def grid_str(grid: Grid) -> String: + # Create an empty String + str = String() + + # Iterate through rows 0 through rows-1 + for row in range(grid.rows): + # Iterate through columns 0 through cols-1 + for col in range(grid.cols): + if grid.data[row][col] == 1: + str += "*" # If cell is populated, append an asterisk + else: + str += " " # If cell is not populated, append a space + if row != grid.rows - 1: + str += "\n" # Add a newline between rows, but not at the end + return str + +def main(): + glider = List( + List(0, 1, 0, 0, 0, 0, 0, 0), + List(0, 0, 1, 0, 0, 0, 0, 0), + List(1, 1, 1, 0, 0, 0, 0, 0), + List(0, 0, 0, 0, 0, 0, 0, 0), + List(0, 0, 0, 0, 0, 0, 0, 0), + List(0, 0, 0, 0, 0, 0, 0, 0), + List(0, 0, 0, 0, 0, 0, 0, 0), + List(0, 0, 0, 0, 0, 0, 0, 0), + ) + start = Grid(8, 8, glider) + result = grid_str(start) + print(result) +``` + +At this point we've made several changes to improve the structure of our +program, but the output should remain the same. + +```bash +mojo life.mojo +``` + +```output + * + * +*** + -Although the wildcard option allows `magic update` to always install the latest -version, it also updates the `magic.lock` file in your project with the -explicit version you've installed. This ensures that anybody else who -initializes the project also gets the same package version (until you run -`magic update` again). -::: -To be more specific with your package version, you can use any of the [Python -package version -specifiers](https://packaging.python.org/en/latest/specifications/version-specifiers/#id5). -For example: -```sh -magic add "max~=24.4" ``` -```sh -magic add "max>=24.4,<24.5" +## 8. Implement `grid_str()` as a method + +Our `grid_str()` function is really a utility function unique to the `Grid` +type. So rather than defining it as a standalone function, it makes more sense +to define it as part of the `Grid` type as a method. + +To do so, move the function into `gridv1.mojo` and edit it to look like this (or +simply copy the code below into `gridv1.mojo`): + +```mojo title="gridv1.mojo" +@value +struct Grid(): + var rows: Int + var cols: Int + var data: List[List[Int]] + + def grid_str(self) -> String: + # Create an empty String + str = String() + + # Iterate through rows 0 through rows-1 + for row in range(self.rows): + # Iterate through columns 0 through cols-1 + for col in range(self.cols): + if self.data[row][col] == 1: + str += "*" # If cell is populated, append an asterisk + else: + str += " " # If cell is not populated, append a space + if row != self.rows - 1: + str += "\n" # Add a newline between rows, but not at the end + return str ``` +So aside from moving the code from one source file to another, there are a few +other changes that we made. + +- The function definition is indented to indicate that it's a method defined by + the `Grid` struct. This also changes the way that we invoke the function. + Instead of `grid_str(my_grid)` we now write `my_grid.grid_str()`. +- We've changed the argument name to `self`. When you invoke an instance method, + Mojo automatically passes the instance as the first argument, followed by any + explicit arguments that you provide. Although we could use any name we like + for this argument, the convention is to call it `self`. +- We've deleted the argument's type annotation. The compiler knows that the + first argument of the method is an instance of the struct, so it doesn't + require an explicit type annotation. + +Now that we've refactored the function into an instance method, we also need to +update the code in `life.mojo` where we invoke it from `main()`: + +```mojo title="life.mojo" +def main(): + ... + start = Grid(8, 8, glider) + print(start.grid_str()) +``` + +Once again, our refactoring has improved the structure of our code, but it still +produces the same output. You can verify that by running the program again. + +## 9. Implement support for the `StringableRaising` trait + +You can pass most Mojo types to the built-in `str()` function to produce a +`String` representation of that instance. But you'll get an error if you try to +do that with our current implementation of `Grid`. So let's fix that. + +Because the Mojo compiler performs static type checking, a function like `str()` +can accept a value only if its type implements some required behavior—in this +case, it only accepts types that can generate a `String` representation. + +To enable that, Mojo supports [*traits*](/mojo/manual/traits). A trait is a set +of requirements in the form of one or more method signatures. A type can +*conform* to that trait by implementing all of the method signatures declared in +the trait. Then we can have a function that indicates that it accepts values of +any type that conform to a specified trait. (This type of function is sometimes +referred to as a [*generic* +function](/mojo/manual/parameters/#parameters-and-generics).) + +In the case of `str()`, it requires a type to conform to either the `Stringable` +or `StringableRaising` trait. Each trait requires a conforming type to implement +a `__str__()` method that returns a `String` representation. The only difference +between the two traits is that `Stringable` requires that the method *cannot* +raise and error, whereas `StringableRaising` indicates that the method *might* +raise an error. (To learn more, read [The `Stringable`, `Representable`, and +`Writable` +traits](/mojo/manual/traits#the-stringable-representable-and-writable-traits).) + +Our `grid_str()` method already returns a `String` representation, so it looks +like we just have to rename it to `__str__()`. But we also need to indicate +which trait `Grid` conforms to. In our case, it's `StringableRaising` because we +used `def` to define the method. If you define a function or method with `def`, +the compiler *always* assumes that the function *can* raise an error. In +contrast, if you define a function or method with `fn` you must explicitly +indicate with a `raises` keyword if it can raise an error. + +So in `gridv1.mojo` we need to update the `Grid` declaration to indicate that +the type conforms to `StringableRaising` and rename the `grid_str()` method to +`__str__()`: + +```mojo title="gridv1.mojo" +@value +struct Grid(StringableRaising): + ... + def __str__(self) -> String: + ... +``` + +Now let's verify that `str()` works with an instance of `Grid`. + +```mojo title="life.mojo" +def main(): + ... + start = Grid(8, 8, glider) + print(str(start)) +``` + +If you run the program again, you should still see the same glider pattern as before. + +```bash +mojo life.mojo +``` + +```output + * + * +*** -## Next steps -- If you're new to Mojo, we suggest you learn the language basics in the - [introduction to Mojo](/mojo/manual/basics). -- To learn more about the `magic` tool, read [Get started with Magic](/magic/). -- Explore more code examples in the [the Mojo -repo](https://github.com/modularml/mojo/). In addition to several `.mojo` -examples, the repo includes [Jupyter -notebooks](https://github.com/modularml/mojo/tree/main/examples/notebooks#readme) -that teach advanced Mojo features. -- To see all the available Mojo APIs, check out the [Mojo standard library - reference](/mojo/lib). +``` + +## 10. Implement methods to support indexing + +Looking at the implementation of `__str__()` you'll notice that we use +`self.data[row][col]` to retrieve the value of a cell in the grid. And if +`my_grid` is an instance of `Grid`, we would use `my_grid.data[row][col]` to +refer to a cell in the grid. This breaks a fundamental principle of +encapsulation in that we need to know that `Grid` stores the game state in a +field called `data`, and that field is a `List[List[Int]]`. If we later decide +to change the internal implementation of `Grid`, then there could be a lot of +code that would need to be changed. + +A cleaner approach is to provide "getter" and "setter" methods to access cell +values. We could simply define methods like `get_cell()` and `set_cell()`, but +this is a good opportunity to show how we can define the behavior of built-in +operators for custom Mojo types. Specifically, we'll implement support for +indexing, so that we can refer to a cell with syntax like `my_grid[row, col]`. +This will be useful when we implement support for evolving the state of the +grid. + +As described in [Operators, expressions, and dunder +methods](/mojo/manual/operators), Mojo allows us to define the behavior of many +of the built-in operators for a custom type by implementing special *dunder* +(double underscore) methods. In the case of indexing, the two methods are +`__getitem__()` and `__setitem__()`. So let's add the following methods to the +`Grid` struct in `gridv1.mojo`: + +```mojo title="gridv1.mojo" +@value +struct Grid(StringableRaising): + ... + def __getitem__(self, row: Int, col: Int) -> Int: + return self.data[row][col] + + def __setitem__(mut self, row: Int, col: Int, value: Int) -> None: + self.data[row][col] = value +``` + +The implementation of `__getitem__()` is easy. For the given values of `row` and +`col` we just need to retrieve and return the corresponding value from the +nested `List[List[Int]]` stored in the `data` field of the instance. + +The body of `__setitem__()` is similarly straightforward. We just take the given +`value` and store it in the corresponding `row` and `col` in `data`. One thing +new in the declaration is that we set the return type to `None` to indicate that +the method doesn't have a return value. But more notable is that we've added the +`mut` [argument convention](/mojo/manual/values/ownership#argument-conventions) +to the `self` argument to explicitly tell the Mojo compiler that we want to +mutate the state of the current instance. If we were to omit `mut`, we would get +an error because the compiler would default to read-only access for the +argument. + +Now that we've implemented these methods, we can update `__str__()` to use +indexing syntax to access the cell value. + +```mojo title="gridv1.mojo" +@value +struct Grid(StringableRaising): + ... + def __str__(self) -> String: + ... + # Iterate through columns 0 through cols-1 + for col in range(self.cols): + if self[row, col] == 1: + ... +``` + +
+ Click here to see the complete `gridv1.mojo` so far: + +```mojo title="gridv1.mojo" +import random + +@value +struct Grid(StringableRaising): + var rows: Int + var cols: Int + var data: List[List[Int]] + + def __str__(self) -> String: + # Create an empty String + str = String() + + # Iterate through rows 0 through rows-1 + for row in range(self.rows): + # Iterate through columns 0 through cols-1 + for col in range(self.cols): + if self[row, col] == 1: + str += "*" # If cell is populated, append an asterisk + else: + str += " " # If cell is not populated, append a space + if row != self.rows - 1: + str += "\n" # Add a newline between rows, but not at the end + return str + + def __getitem__(self, row: Int, col: Int) -> Int: + return self.data[row][col] + + def __setitem__(mut self, row: Int, col: Int, value: Int) -> None: + self.data[row][col] = value +``` + +
+ +Our refactoring hasn't changed our program's behavior, but it's still a good +idea to run it to be sure that we don't have any errors in our code. + +## 11. Define a static method to generate random grids + +So far, we've used the glider to build the basic functionality of our `Grid` +type. But what's much more interesting is to start with a grid in a random state +and see how it evolves over time. + +Let's add a *static method* named `random()` to the `Grid` struct to generate +and return an instance of `Grid` with a random state. A static method doesn't +operate on specific instances of the type, so it can be invoked as a utility +function. We indicate that a method is a static method by using the +`@staticmethod` decorator. + +```mojo title="gridv1.mojo" +import random + +@value +struct Grid(StringableRaising): + ... + @staticmethod + def random(rows: Int, cols: Int) -> Self: + # Seed the random number generator using the current time. + random.seed() + + data = List[List[Int]]() + + for row in range(rows): + row_data = List[Int]() + for col in range(cols): + # Generate a random 0 or 1 and append it to the row. + row_data.append(int(random.random_si64(0, 1))) + data.append(row_data) + + return Self(rows, cols, data) +``` + +At the top of the file we're importing the `random` package from the Mojo +standard library. It includes several functions related to random number +generation. + +By default, the [pseudorandom number +generator](https://en.wikipedia.org/wiki/Pseudorandom_number_generator) used by +the Mojo standard library currently uses a fixed seed. This means that it +generates the same sequence of numbers unless you provide a different seed, +which is useful for testing purposes. But for this application we want to call +`random.seed()` to set a seed value based on the current time, which gives us a +unique value every time. + +Then we create an empty `List[List[Int]]` that we populate with a random initial +state. For each cell, we call +[`random.random_si64()`](/mojo/stdlib/random/random/random_si64), which returns +a random integer value from the provided minimum and maximum values of 0 and 1, +respectively. This function actually returns a value of type `Int64`, which is a +signed 64-bit integer value. As described in [Numeric +types](/mojo/manual/types#numeric-types), this is *not* the same as the `Int` +type whose precision is dependent on the native word size of the system. +Therefore we're passing this value to the built-in +[`int()`](/mojo/stdlib/builtin/int/int-function/) function, which explicitly +converts a numeric value to an `Int`. + +The return type of the method is `Self`, which is an alias for the type of the +struct. This is a convenient shortcut if the actual name of the struct is long +or includes parameters. + +The last line uses `Self()` to invoke the struct's constructor and return a +newly created instance with random data. + +Now we can update the `main()` function in `life.mojo` to create a random `Grid` +and print it. + +```mojo title="life.mojo" +... + +def main(): + start = Grid.random(8, 16) + print(str(start)) +``` + +Run the program a few times to verify that it generates a different grid each +time. + +```bash +mojo life.mojo +``` + +```output +*** * **** +* **** ****** +* * ***** +* * ** ** + * * ** **** +* ** * * * *** + * * ** ** ** + * ***** ** +``` + +## 12. Implement a method to evolve the grid + +It's finally time to let our world evolve. We'll implement an `evolve()` method +to calculate the state of the grid for the next generation. One option would be +to do an in-place modification of the existing `Grid` instance. But instead +we'll have `evolve()` return a new instance of `Grid` for the next generation. + +```mojo title="gridv1.mojo" +... +struct Grid(StringableRaising): + ... + def evolve(self) -> Self: + next_generation = List[List[Int]]() + + for row in range(self.rows): + row_data = List[Int]() + + # Calculate neighboring row indices, handling "wrap-around" + row_above = (row - 1) % self.rows + row_below = (row + 1) % self.rows + + for col in range(self.cols): + # Calculate neighboring column indices, handling "wrap-around" + col_left = (col - 1) % self.cols + col_right = (col + 1) % self.cols + + # Determine number of populated cells around the current cell + num_neighbors = ( + self[row_above, col_left] + + self[row_above, col] + + self[row_above, col_right] + + self[row, col_left] + + self[row, col_right] + + self[row_below, col_left] + + self[row_below, col] + + self[row_below, col_right] + ) + + # Determine the state of the current cell for the next generation + new_state = 0 + if self[row, col] == 1 and (num_neighbors == 2 or num_neighbors == 3): + new_state = 1 + elif self[row, col] == 0 and num_neighbors == 3: + new_state = 1 + row_data.append(new_state) + + next_generation.append(row_data) + + return Self(self.rows, self.cols, next_generation) +``` + +We start out with an empty `List[List[Int]]` to represent the state of the next +generation. Then we use nested `for` loops to iterate over each row and each +column of the existing `Grid` to determine the state of each cell in the next +generation. + +For each cell in the grid we need to count the number of populated neighboring +cells. Because we're modeling the world as a toroid, we need to consider the top +and bottom rows as adjacent and the left-most and right-most columns as +adjacent. So as we iterate through each row and column, we're using the modulo +operator, `%`, to handle "wrap-around" when we calculate the indices of the rows +above and below and the columns to the left and right of the current cell. (For +example, if there are 8 rows, then `-1 % 8` is 7.) + +Then we apply the Game of Life rules that determines if the current cell is +populated (1) or unpopulated (0) for the next generation: + +- A populated cell with either 2 or 3 populated neighbors remains populated in + the next generation +- An unpopulated cell with exactly 3 populated neighbors becomes populated in + the next generation +- All other cells become unpopulated in the next generation + +After calculating the state of the next generation, we use `Self()` to create an +new instance of `Grid`, and return the newly created instance. + +Now that we can evolve the grid, let's use it in `life.mojo`. We'll add a +`run_display()` function to control the game's main loop: + +- Display the current `Grid` +- Prompt the user to continue or quit +- Break out of the loop if the user enters `q` +- Otherwise, calculate the next generation and loop again + +Then we'll update `main()` to create a random initial `Grid` and pass it to +`run_display()`. Here is the updated version of `life.mojo`: + +```mojo title="life.mojo" +from gridv1 import Grid + +def run_display(owned grid: Grid) -> None: + while True: + print(str(grid)) + print() + if input("Enter 'q' to quit or press to continue: ") == "q": + break + grid = grid.evolve() + +def main(): + start = Grid.random(16, 16) + run_display(start) +``` + +Run the program and verify that each call to `evolve()` successfully produces a +new generation. -If you have issues during install, check our [known -issues](/mojo/roadmap#mojo-sdk-known-issues). +So now we have a working version of the Game of Life, but the terminal interface +is not very pretty. Let's spice things up with a nicer graphical user interface, +using a Python library. + +## 13. Import and use a Python package + +Mojo lets you import Python modules, call Python functions, and interact with +Python objects from Mojo code. To demonstrate this capability, we're going to +use a Python package called [pygame](https://www.pygame.org) to create and +manage a graphical user interface for our Game of Life program. + +First, we need to update our `mojoproject.toml` file to add a dependency on +Python and the `pygame` package. So in the project directory, execute the +following command from the terminal: + +```bash +magic add "python>=3.11,<3.13" "pygame>=2.6.1,<3" +``` + +:::note + +When you use Python code and packages as part of your Mojo program, you create a +run-time dependency on a compatible Python runtime and packages. Building an +executable version of your program with `mojo build` does *not* incorporate a +Python runtime or Python packages into the resulting executable file. These +run-time Python dependencies must be provided by the environment where you run +the executable. The easiest way to ensure this requirement is to deploy and run +your Mojo executable in a virtual environment, such as one managed by +[Magic](/magic/) or [conda](https://docs.conda.io/). + +::: + +You can import a Python module in Mojo using +[`Python.import_module()`](/mojo/stdlib/python/python/Python#import_module). +This returns a reference to the module in the form of a `PythonObject` wrapper. +You must store the reference in a variable so that you can then access the +functions and objects in the module. For example: + +```mojo +from python import Python + +def run_display(): + # This is roughly equivalent to Python's `import pygame` + pygame = Python.import_module("pygame") + pygame.init() +``` :::note -To help us improve Mojo, we collect some basic system information and -crash reports. [Learn -more](/mojo/faq#does-the-mojo-sdk-collect-telemetry). +Because Mojo doesn't support globally scoped variables, you must either import a +Python module into each Mojo function that needs to use it or else pass the +`PythonObject` wrapped module as an argument between functions. ::: + +You can learn more about importing and using Python modules in Mojo by reading +[Python integration](/mojo/manual/python/). + +Once we import `pygame`, we can call its APIs as if we were writing Python code. +For this project, we'll use `pygame` to create a new window and draw the whole +game UI. This requires a complete rewrite of the `run_display()` function. Take +a look at the updated code for `life.mojo` and we'll explain more of it below: + +```mojo title="life.mojo" +from gridv1 import Grid +from python import Python +import time + +def run_display( + owned grid: Grid, + window_height: Int = 600, + window_width: Int = 600, + background_color: String = "black", + cell_color: String = "green", + pause: Float64 = 0.1, +) -> None: + # Import the pygame Python package + pygame = Python.import_module("pygame") + + # Initialize pygame modules + pygame.init() + + # Create a window and set its title + window = pygame.display.set_mode((window_height, window_width)) + pygame.display.set_caption("Conway's Game of Life") + + cell_height = window_height / grid.rows + cell_width = window_width / grid.cols + border_size = 1 + cell_fill_color = pygame.Color(cell_color) + background_fill_color = pygame.Color(background_color) + + running = True + while running: + # Poll for events + event = pygame.event.poll() + if event.type == pygame.QUIT: + # Quit if the window is closed + running = False + elif event.type == pygame.KEYDOWN: + # Also quit if the user presses or 'q' + if event.key == pygame.K_ESCAPE or event.key == pygame.K_q: + running = False + + # Clear the window by painting with the background color + window.fill(background_fill_color) + + # Draw each live cell in the grid + for row in range(grid.rows): + for col in range(grid.cols): + if grid[row, col]: + x = col * cell_width + border_size + y = row * cell_height + border_size + width = cell_width - border_size + height = cell_height - border_size + pygame.draw.rect( + window, cell_fill_color, (x, y, width, height) + ) + + # Update the display + pygame.display.flip() + + # Pause to let the user appreciate the scene + time.sleep(pause) + + # Next generation + grid = grid.evolve() + + # Shut down pygame cleanly + pygame.quit() + +def main(): + start = Grid.random(128, 128) + run_display(start) +``` + +Each argument for `run_display()` other than `grid` has a default value +associated with it (for example, the default `window_height` is 600 pixels). If +you don't explicitly pass a value for an argument when you invoke +`run_display()`, Mojo uses the default value specified in the function +definition. + +After importing the `pygame` module, we call `pygame.init()` to initialize all +the pygame subsystems. + +The `set_mode()` function creates and initializes a window, with the height and +width passed as a Mojo tuple of two values. This returns a +[`PythonObject`](/mojo/stdlib/python/python_object/PythonObject) wrapper for the +window, which we can then use to call functions and set attributes to manipulate +the window. (For more information about interacting with Python objects from +Mojo, see [Python types](/mojo/manual/python/types).) + +The bulk of the `run_display()` function is a loop that uses `pygame` to poll +for events like key presses and mouse clicks. If it detects that the user +presses `q` or the `` key or closes the display window, it ends the +program with `pygame.quit()`. Otherwise, it clears the window and then iterates +through all cells in the grid to display the populated cells. After sleeping for +`pause` seconds, it evolves the grid to the next generation and loops again. + +So it's finally time to try it out. + +```bash +mojo life.mojo +``` + +Now when you run the program you should see a new window appear on screen +displaying your evolving grid. We now have a fully functional implementation of +the Game of Life with a nice interface. We've come quite a way from just +displaying a few asterisks on the terminal! + +![game_of_life_screen.png](images/game-of-life-screen.png) + +To quit the program press the `q` or `` key, or close the window. + +And now that we're done with the tutorial, exit our project's virtual +environment: + +```bash +exit +``` + +## Summary + +Congratulations on writing a complete Mojo application from scratch! Along the +way, you got a taste of: + +- Using Magic to create, build, and run a Mojo program +- Using Mojo built-in types like `Int`, `String`, and `List` +- Creating and using variables and functions +- Using control structures like `if`, `while`, and `for` +- Defining and using a custom Mojo struct +- Creating and importing a Mojo module +- Using modules from the Mojo standard library +- Importing and using a Python module + +## Next steps + +The [Mojo manual](/mojo/manual/) and the Mojo standard library [API +reference](/mojo/lib) contains much more information about these and other +features of Mojo programming. These resources will help prepare you to take full +advantage of the [MAX platform](/max/) to build and deploy high-performance AI +pipelines. diff --git a/docs/manual/images/game-of-life-screen.png b/docs/manual/images/game-of-life-screen.png new file mode 100644 index 0000000000000000000000000000000000000000..d4e813e6081097367d3a553e55d85b1564c1cb06 GIT binary patch literal 85325 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 A5&!@I literal 0 HcmV?d00001 From 3b9e7f53b64fc815514adfb81f8dd364bb3a1ee4 Mon Sep 17 00:00:00 2001 From: Ken Jones <165197230+KenJones-Modular@users.noreply.github.com> Date: Mon, 9 Dec 2024 15:32:59 -0800 Subject: [PATCH 069/509] Updated the Mojo manual's Python types page to reflect support for the `in` and `is` operators with `PythonObject` values. MODULAR_ORIG_COMMIT_REV_ID: 4f58b6a25ba4138a25fddf691e7aaaf1fb333d02 --- docs/manual/python/types.mdx | 182 +++++++++++++++++++++-------------- 1 file changed, 111 insertions(+), 71 deletions(-) diff --git a/docs/manual/python/types.mdx b/docs/manual/python/types.mdx index a7d25d0f9a..4ef8bee6aa 100644 --- a/docs/manual/python/types.mdx +++ b/docs/manual/python/types.mdx @@ -12,26 +12,28 @@ method. ## Mojo types in Python -Mojo primitive types implicitly convert into Python objects. -Today we support lists, tuples, integers, floats, booleans, and strings. +Mojo primitive types implicitly convert into Python objects. Today we support +integers, floats, booleans, strings, tuples, and `ListLiteral` instances +(described below in [Mojo wrapper objects](#mojo-wrapper-objects)). -For example, given this Python function that prints Python types: +To demonstrate, the following example dynamically creates an in-memory Python +module named `py_utils` containing a `type_printer()` function, which simply +prints the type of a given value. Then you can see how different Mojo values +convert into corresponding Python types. ```mojo -%%python +from python import Python + +def main(): + py_module = """ def type_printer(value): print(type(value)) -``` - -(You can ignore the `%%python` at the start of the code sample; it's explained -in the note below.) - -You can pass this Python function Mojo types with no problem: +""" + py_utils = Python.evaluate(py_module, file=True, name="py_utils") -```mojo -type_printer(4) -type_printer(3.14) -type_printer(("Mojo", True)) + py_utils.type_printer(4) + py_utils.type_printer(3.14) + py_utils.type_printer(("Mojo", True)) ``` ```output @@ -40,15 +42,6 @@ type_printer(("Mojo", True)) ``` -:::note - -This is a simplified code example written as a set of Jupyter -notebook cells. The first cell includes the `%%python` directive so it's -interpreted as Python. The second cell includes top-level Mojo code. You'd need -to adjust this code to run it elsewhere. - -::: - ## Python types in Mojo You can also use Python objects from Mojo. For example, Mojo's @@ -58,18 +51,21 @@ heterogeneous collections. One alternative is to use a Python dictionary or list. For example, to create a Python dictionary, use the -[`dict()`](/mojo/stdlib/python/python/Python#dict) method: +[`Python.dict()`](/mojo/stdlib/python/python/Python#dict) method: ```mojo from python import Python -def use_dict(): - var dictionary = Python.dict() - dictionary["item_name"] = "whizbang" - dictionary["price"] = 11.75 - dictionary["inventory"] = 100 - print(dictionary) +def main(): + py_dict = Python.dict() + py_dict["item_name"] = "whizbang" + py_dict["price"] = 11.75 + py_dict["inventory"] = 100 + print(py_dict) +``` +```output +{'item_name': 'whizbang', 'price': 11.75, 'inventory': 100} ``` ### Mojo wrapper objects @@ -81,39 +77,69 @@ methods (dunder methods) like `__getitem__()` and `__getattr__()`, passing them through to the underlying Python object. You can explicitly create a wrapped Python object by initializing a -`PythonObject` with a Mojo literal: +`PythonObject` with a Mojo literal. Most of the time, you can treat the wrapped +object just like you'd treat it in Python. You can use dot-notation to access +attributes and call methods, and use the `[]` operator to access an item in a +sequence. For example: ```mojo from python import PythonObject -var py_list: PythonObject = [1, 2, 3, 4] +def main(): + var py_list: PythonObject = ["cat", 2, 3.14159, 4] # A ListLiteral + n = py_list[2] + print("n =", n) + py_list.append(5) + py_list[0] = "aardvark" + print(py_list) ``` -Most of the time, you can treat the wrapped object just like you'd treat it in -Python. You can use Python's `[]` operators to access an item in a list, and use -dot-notation to access attributes and call methods. For example: +```output +n = 3.14159 +['aardvark', 2, 3.14159, 4, 5] +``` -```mojo -var n = py_list[2] -py_list.append(5) +:::note + +In the example above, `["cat", 2, 3.14159, 4]` is an instance of +[`ListLiteral`](/mojo/stdlib/builtin/builtin_list/ListLiteral/), which supports +lists of heterogeneous values. The `ListLiteral` type is intended only for +Python interoperability, and it is not compatible with the native Mojo +[`List`](/mojo/stdlib/collections/list/List) type. For example, the following +line results in a compilation error: + +``` +var mojo_list: List[Int] = [1, 2, 3, 4] +``` + +```output +error: cannot implicitly convert 'ListLiteral[Int, Int, Int, Int]' value to 'List[Int]' +var mojo_list: List[Int] = [1, 2, 3, 4] + ^~~~~~~~~~~~ ``` +::: + If you want to construct a Python type that doesn't have a literal Mojo equivalent, you can also use the [`Python.evaluate()`](/mojo/stdlib/python/python/Python#evaluate) method. For example, to create a Python `set`: ```mojo -def use_py_set(): - var py_set = Python.evaluate('set([2, 3, 5, 7, 11])') - var num_items = len(py_set) - print(num_items, " items in set.") # prints "5 items in set" - print(py_set.__contains__(6)) # prints "False" +from python import Python + +def main(): + var py_set = Python.evaluate('{2, 3, 2, 7, 11, 3}') + num_items = len(py_set) + print(num_items, "items in the set.") + contained = 7 in py_set + print("Is 7 in the set:", contained) ``` -TODO: You should be able to use the expression `6 in py_set`. However, because -of the way `PythonObject` currently works, you need to call the -`__contains__()` method directly. +```output +4 items in the set. +Is 7 in the set: True +``` Some Mojo APIs handle `PythonObject` just fine, but sometimes you'll need to explicitly convert a Python value into a native Mojo value. @@ -121,12 +147,11 @@ explicitly convert a Python value into a native Mojo value. Currently `PythonObject` conforms to the [`Intable`](/mojo/stdlib/builtin/int/Intable), [`Stringable`](/mojo/stdlib/builtin/str/Stringable), and -[`Boolable`](/mojo/stdlib/builtin/bool/Boolable) traits, which -means you can convert Python values to Mojo `Int`, `String`, and `Bool` types -using the built-in -[`int()`](/mojo/stdlib/builtin/int/int-function), -[`str()`](/mojo/stdlib/builtin/str/str), -and [`bool()`](/mojo/stdlib/builtin/bool/bool-function) functions, and print Python +[`Boolable`](/mojo/stdlib/builtin/bool/Boolable) traits, which means you can +convert Python values to Mojo `Int`, `String`, and `Bool` types using the +built-in [`int()`](/mojo/stdlib/builtin/int/int-function), +[`str()`](/mojo/stdlib/builtin/str/str), and +[`bool()`](/mojo/stdlib/builtin/bool/bool-function) functions, and print Python values using the built-in [`print()`](/mojo/stdlib/builtin/io/print) function. `PythonObject` also provides the @@ -142,31 +167,46 @@ var f: Float64 = py_float.to_float64() ### Comparing Python types in Mojo -In conditionals, Python objects act like you'd expect them to: Python values -like `False` and `None` evaluate as false in Mojo, too. +You can use Python objects in Mojo comparison expressions, and the Mojo `is` +operator also works to compare the identity of two Python objects. Python values +like `False` and `None` evaluate as false in Mojo boolean expressions as well. If you need to know the type of the underlying Python object, you can use the [`Python.type()`](/mojo/stdlib/python/python/Python#type) method, which is -equivalent to the Python `type()` builtin. You can compare the identity of two -Python objects using the -[`Python.is_type()`](/mojo/stdlib/python/python/Python#is_type) method (which is -equivalent to the Python `is` operator): +equivalent to the Python `type()` builtin. You can test if a Python +object is of a particular type by performing an identity comparison against the +type as shown below: ```mojo -def python_types(): - from python import Python - from python import PythonObject +from python import Python +from python import PythonObject +def main(): var value1: PythonObject = 3.7 - var value2 = Python.evaluate("10/3") - var float_type = Python.evaluate("float") - - print(Python.type(value1)) # - print(Python.is_type(Python.type(value1), Python.type(value2))) # True - print(Python.is_type(Python.type(value1), float_type)) # True - print(Python.is_type(Python.type(value1), Python.none())) # False - + value2 = Python.evaluate("10/3") + + # Compare values + print("Is value1 greater than 3:", value1 > 3) + print("Is value1 greater than value2:", value1 > value2) + + # Compare identities + value3 = value2 + print("value1 is value2:", value1 is value2) + print("value2 is value3:", value2 is value3) + + # Compare types + py_float_type = Python.evaluate("float") + print("Python float type:", py_float_type) + print("value1 type:", Python.type(value1)) + print("Is value1 a Python float:", Python.type(value1) is py_float_type) ``` -One TODO item here: The `Python.is_type()` method is misleadingly named, since -it doesn't compare *types*, but object identity. +```output +Is value1 greater than 3: True +Is value1 greater than value2: True +value1 is value2: False +value2 is value3: True +Python float type: +value1 type: +Is value1 a Python float: True +``` From abd150e2d1b8c20f4a8aeb705a3ff59f54a8916b Mon Sep 17 00:00:00 2001 From: Arthur Evans Date: Mon, 9 Dec 2024 16:22:39 -0800 Subject: [PATCH 070/509] [Docs] Origin changes: add suggestions from code review. MODULAR_ORIG_COMMIT_REV_ID: 9e019cdabf2bd6d46df078522f1633df94388920 --- docs/manual/values/lifetimes.mdx | 23 +++++++++-------------- 1 file changed, 9 insertions(+), 14 deletions(-) diff --git a/docs/manual/values/lifetimes.mdx b/docs/manual/values/lifetimes.mdx index 5dc05d799a..baf5f1e860 100644 --- a/docs/manual/values/lifetimes.mdx +++ b/docs/manual/values/lifetimes.mdx @@ -85,18 +85,16 @@ struct ParametricRef[ pass ``` -Note that `Origin` isn't an origin **value**, it's a helper for specifying a -origin **type**. Origin types carry the mutability of a reference as a -boolean parameter value, indicating whether the origin is mutable, immutable, -or even with mutability depending on a parameter specified by the enclosing API. +Origin types carry the mutability of a reference as a boolean parameter value, +indicating whether the origin is mutable, immutable, or even with mutability +depending on a parameter specified by the enclosing API. The `is_mutable` parameter here is an [infer-only -parameter](/mojo/manual/parameters/#infer-only-parameters). It can't be passed -as a positional parameter—it's either inferred from context or specified by -keyword. The `origin` value is often inferred, as well. For example, the -following code creates a [`Pointer`](/mojo/stdlib/memory/pointer/Pointer) to an -existing value, but doesn't need to specify an origin—the `origin` is inferred -from the variable passed in to the `address_of()` method. +parameter](/mojo/manual/parameters/#infer-only-parameters). The `origin` value +is often inferred, as well. For example, the following code creates a +[`Pointer`](/mojo/stdlib/memory/pointer/Pointer) to an existing value, but +doesn't need to specify an origin—the `origin` is inferred from the variable +passed in to the `address_of()` method. ```mojo from memory import Pointer @@ -474,8 +472,5 @@ that's a union of both origins. ```mojo def pick_one(cond: Bool, ref a: String, ref b: String) -> ref [a, b] String: - if cond: - return a - else: - return b + return a if cond else b ``` From 8486a84c6862bf8b5f907670e5f898beeb3b8cf9 Mon Sep 17 00:00:00 2001 From: Arthur Evans Date: Mon, 9 Dec 2024 16:40:56 -0800 Subject: [PATCH 071/509] [Docs] Add doc on associated aliases. Fixes DOCS-495. MODULAR_ORIG_COMMIT_REV_ID: 20fb09bc7db26baf4f6f30bef9d67037b41fdec2 --- docs/manual/traits.mdx | 113 +++++++++++++++++++++++++++++++++++++++-- 1 file changed, 108 insertions(+), 5 deletions(-) diff --git a/docs/manual/traits.mdx b/docs/manual/traits.mdx index 99da582c4b..4c33a10578 100644 --- a/docs/manual/traits.mdx +++ b/docs/manual/traits.mdx @@ -75,7 +75,7 @@ Quack Moo! ``` -This isn't too bad with only two classes. But the more classes you want to +This isn't too bad with only two types. But the more types you want to support, the less practical this approach is. You might notice that the Mojo versions of `make_it_quack()` don't include the @@ -101,11 +101,15 @@ keyword. Right now, a trait can only contain method signatures, and cannot include method implementations. Each method signature must be followed by three dots (`...`) to indicate that the method is unimplemented. +A trait can also include associated aliases—compile-time constant values that +must be defined by conforming structs. Associated aliases are useful for writing +traits that describe generic types. For more information, see +[Associated aliases for generics](#associated-aliases-for-generics). + :::note TODO In the future, we plan to support defining fields and default method -implementations inside a trait. Right now, though, a trait can only declare -method signatures. +implementations inside a trait. ::: @@ -286,9 +290,9 @@ copyable and movable. ## Built-in traits -The Mojo standard library currently includes a few traits. They're implemented +The Mojo standard library includes many traits. They're implemented by a number of standard library types, and you can also implement these on your -own types: +own types. These standard library traits include: * [`Absable`](/mojo/stdlib/builtin/math/Absable) * [`AnyType`](/mojo/stdlib/builtin/anytype/AnyType) @@ -513,3 +517,102 @@ the `CollectionElement` trait, which requires a Building generic containers is an advanced topic. For an introduction, see the section on [parameterized structs](/mojo/manual/parameters/#parameterized-structs). + +### Associated aliases for generics + +In addition to methods, a trait can include _associated aliases_, which must be +defined by any conforming struct. For example: + +```mojo +trait Repeater: + alias count: Int +``` + +An implementing struct must define a concrete constant value for the alias, +using any compile-time parameter value. For example, it can use a literal +constant or a compile-time expression, including one that uses the struct's +parameters. + +```mojo +struct Doublespeak(Repeater): + alias count: Int = 2 + +struct Multispeak[verbosity: Int](Repeater): + alias count: Int = verbosity*2+1 +``` + +The `Doublespeak` struct has a constant value for the alias, but the `Multispeak` +struct lets the user set the value using a parameter: + +```mojo +repeater = Multispeak[12]() +``` + +Note that the alias is named `count`, and the `Multispeak` parameter is named +`verbosity`. Parameters and aliases are in the same namespace, so the parameter +can't have the same name as the associated alias. + +Associated aliases are most useful for writing traits for generic types. For +example, imagine that you want to write a trait that describes a generic stack +data structure that stores elements that conform to the `CollectionElement` +trait. + +By adding the element type as an associated alias to the trait, you can specify +generic methods on the trait: + +```mojo +trait Stacklike: + alias EltType: CollectionElement + + def push(mut self, owned item: Self.EltType): + pass + + def pop(mut self) -> Self.EltType: + pass +``` + +The following struct implements the `Stacklike` trait using a `List` as the +underlying storage: + +```mojo +struct MyStack[T: CollectionElement](Stacklike): + """A simple Stack built using a List.""" + alias EltType = T + alias list_type = List[Self.EltType] + + var list: Self.list_type + + fn __init__(out self): + self.list = Self.list_type() + + def push(mut self, owned item: Self.EltType): + self.list.append(item) + + def pop(mut self) -> Self.EltType: + return self.list.pop() + + def dump[U: RepresentableCollectionElement](self: MyStack[U]): + print(self.list.__repr__()) +``` + +The `MyStack` type adds a `dump()` method that prints the contents of the stack. +Because a struct that conforms to `CollectionElement` is not necessarily +printable, `MyStack` uses +[conditional conformance](/mojo/manual/parameters/#conditional-conformance) to +define a `dump()` method that works as long as the element type is +_representable_. + +The following code exercises this new trait by defining a generic method, +`add_to_stack()` that adds an item to any `Stacklike` type. + +```mojo +def add_to_stack[S: Stacklike](mut stack: S, item: S.EltType): + stack.push(item) + +def main(): + s = MyStack[Int]() + add_to_stack(s, 12) + add_to_stack(s, 33) + s.dump() # [12, 33] + print(s.pop()) # 33 +``` From daa16c7107786d66e23f6f2126c52dfa96a134f3 Mon Sep 17 00:00:00 2001 From: Arthur Evans Date: Mon, 9 Dec 2024 17:15:40 -0800 Subject: [PATCH 072/509] [Docs] Document named result values MODULAR_ORIG_COMMIT_REV_ID: 1d176b9be734cfcaef30f4da54bb748ccb0e1106 --- docs/manual/functions.mdx | 116 +++++++++++++++++++++++++++++-- docs/manual/index.md | 7 +- docs/manual/lifecycle/life.mdx | 2 + docs/manual/structs.mdx | 18 ++--- docs/manual/values/ownership.mdx | 19 +++-- 5 files changed, 141 insertions(+), 21 deletions(-) diff --git a/docs/manual/functions.mdx b/docs/manual/functions.mdx index 19d4c2e067..071255ec24 100644 --- a/docs/manual/functions.mdx +++ b/docs/manual/functions.mdx @@ -4,7 +4,7 @@ sidebar_position: 2 description: Introduction to Mojo `fn` and `def` functions. --- -As mentioned in [Language basics](/mojo/manual/basics), Mojo supports two +As mentioned in the [syntax overview](/mojo/manual/basics), Mojo supports two types of functions: `def` and `fn` functions. You can use either declaration with any function, including the `main()` function, but they have different default behaviors, as described on this page. @@ -556,10 +556,10 @@ that the call is ambiguous (if it can’t figure out which one to pick). If the compiler can't figure out which function to use, you can resolve the ambiguity by explicitly casting your value to a supported argument type. For -example, in the following code, we want to call the overloaded `foo()` -function, but both implementations accept an argument that supports [implicit -conversion](/mojo/manual/variables#implicit-type-conversion) from -`StringLiteral`. So, the call to `foo(string)` is ambiguous and creates a +example, in the following code, we want to call the overloaded `foo()` function, +but both implementations accept an argument that supports [implicit +conversion](/mojo/manual/lifecycle/life#constructors-and-implicit-conversion) +from `StringLiteral`. So, the call to `foo(string)` is ambiguous and creates a compiler error. We can fix it by casting the value to the type we really want: ```mojo @@ -596,3 +596,109 @@ different from function arguments, and used for compile-time metaprogramming), you can also overload functions based on parameter types. ::: + +## Return values + +Return value types are declared in the signature using the +-> type syntax. Values are +passed using the `return` keyword, which ends the function and returns the +identified value (if any) to the caller. + +```mojo +def get_greeting() -> String: + return "Hello" +``` + +By default, the value is returned to the caller as an owned value. As with +arguments, a return value may be [implicitly +converted](/mojo/manual/lifecycle/life#constructors-and-implicit-conversion) to +the named return type. For example, the previous example calls `return` with a +string literal, `"Hello"`, which is implicitly converted to a `String`. + +:::note Returning a reference + +A function can also return a mutable or immutable reference using a `ref` return +value. For details, see +[Lifetimes, origins, and references](/mojo/manual/values/lifetimes). + +::: + +### Named results + +Named function results allow a function to return a value that can't be moved or +copied. Named result syntax lets you specify a named, uninitialized variable to +return to the caller using the `out` argument convention: + +```mojo +def get_name_tag(owned name: String, out name_tag: NameTag): + name_tag = NameTag(name^) +``` + +The `out` argument convention identifies an uninitialized variable that the +function must initialize. (This is the same as the `out` convention used in +[struct constructors](/mojo/manual/lifecycle/life#constructor).) A function can +have only one `out` argument. The `out` argument for a named result can appear +anywhere in the argument list, but by convention, it should be the last argument +in the list. + +A function with a named result argument doesn't need to include an explicit +`return` statement, as shown above. If the function terminates without a `return`, +or at a `return` statement with no value, the value of the `out` argument is +returned to the caller. If it includes a `return` statement with a value, that +value is returned to the caller, as usual. + +The fact that a function uses a named result is transparent to the caller. That +is, these two signatures are interchangeable to the caller: + +```mojo +def get_name_tag(owned name: String) -> NameTag: + ... +def get_name_tag(owned name: String, out name_tag: NameTag): + ... +``` + +In both cases, the call looks like this: + +```mojo +tag = get_name_tag("Judith") +``` + +Because the return value is assigned to this special `out` variable, it doesn't +need to be moved or copied when it's returned to the caller. This means that you +can create a function that returns a type that can't be moved or copied, and +which takes several steps to initialize: + +```mojo +struct ImmovableObject: + var name: String + + fn __init__(out self, owned name: String): + self.name = name^ + +def create_immovable_object(owned name: String, out obj: ImmovableObject): + obj = ImmovableObject(name^) + obj.name += "!" + # obj is implicitly returned + +def main(): + my_obj = create_immutable_object("Blob") +``` + +By contrast, the following function with a standard return value doesn't work: + +```mojo +def create_immovable_object2(owned name: String) -> ImmovableObject: + obj = ImmovableObject(name^) + obj.name += "!" + return obj^ # Error: ImmovableObject is not copyable or movable +``` + +Because `create_immovable_object2` uses a local variable to store the object +while it's under construction, the return call requires it to be either moved +or copied to the callee. This isn't an issue if the newly-created value is +returned immediately: + +```mojo +def create_immovable_object3(owned name: String) -> ImmovableObject: + return ImmovableObject(name^) # OK +``` diff --git a/docs/manual/index.md b/docs/manual/index.md index 7d152a1b2b..54a7c53af7 100644 --- a/docs/manual/index.md +++ b/docs/manual/index.md @@ -29,11 +29,13 @@ feedback](https://www.modular.com/community). - **Language basics** - - [Introduction to Mojo](/mojo/manual/basics) + - [Overview](/mojo/manual/basics) - [Functions](/mojo/manual/functions) - [Variables](/mojo/manual/variables) - [Types](/mojo/manual/types) + - [Operators and expressions](/mojo/manual/operators) - [Control flow](/mojo/manual/control-flow) + - [Errors and context managers](/mojo/manual/errors) - [Structs](/mojo/manual/structs) - [Modules and packages](/mojo/manual/packages) @@ -41,7 +43,8 @@ feedback](https://www.modular.com/community). - [Intro to value ownership](/mojo/manual/values/) - [Value semantics](/mojo/manual/values/value-semantics) - - [Ownership and borrowing](/mojo/manual/values/ownership) + - [Ownership](/mojo/manual/values/ownership) + - [Lifetimes, origins, and references](/mojo/manual/values/lifetimes) - **Value lifecycle** diff --git a/docs/manual/lifecycle/life.mdx b/docs/manual/lifecycle/life.mdx index c852c4c700..360ec57c33 100644 --- a/docs/manual/lifecycle/life.mdx +++ b/docs/manual/lifecycle/life.mdx @@ -155,6 +155,8 @@ can happen when one of the following occurs: - You assign a value of one type to a variable with a different type. - You pass a value of one type to a function that requires a different type. +- You return a value of one type from a function that specifies a different + return type. In both cases, implicit conversion is supported when the target type defines a constructor that meets the following criteria: diff --git a/docs/manual/structs.mdx b/docs/manual/structs.mdx index 92f0fdc1c0..7a32bb323d 100644 --- a/docs/manual/structs.mdx +++ b/docs/manual/structs.mdx @@ -50,14 +50,16 @@ struct MyPair: self.second = second ``` -Notice that the first argument in the `__init__()` method is `out self`. For -now, ignore `out` (it's an [argument -convention](/mojo/manual/values/ownership#argument-conventions) that -declares `self` as a mutable reference); all you need to know right now is that -`self` must be the first argument. It references the current struct instance -(it allows code in the method to refer to "itself"). *When you call the -constructor, you never pass a value for `self`—Mojo passes it in -automatically.* +Notice that the first argument in the `__init__()` method is `out self`. You'll +have a `self` argument as the first argument on all struct methods. It +references the current struct instance (it allows code in the method to refer to +"itself"). *When you call the constructor, you never pass a value for +`self`—Mojo passes it in automatically.* + +The `out` portion of `out self` is an [argument +convention](/mojo/manual/values/ownership#argument-conventions) that declares +`self` as a mutable reference that starts out as uninitialized and must be +initialized before the function returns. The `__init__()` method is one of many [special methods](#special-methods) (also known as "dunder methods" because they have *d*ouble *under*scores) with diff --git a/docs/manual/values/ownership.mdx b/docs/manual/values/ownership.mdx index d45ecc7c70..e8d201e8b6 100644 --- a/docs/manual/values/ownership.mdx +++ b/docs/manual/values/ownership.mdx @@ -1,5 +1,5 @@ --- -title: Ownership and borrowing +title: Ownership sidebar_position: 3 description: How Mojo shares references through function arguments. --- @@ -84,6 +84,13 @@ keyword at the beginning of an argument declaration: `ref` arguments are an advanced topic, and they're described in more detail in [Lifetimes and references](/mojo/manual/values/lifetimes). +* `out`: A special convention used for the `self` argument in + [constructors](/mojo/manual/lifecycle/life#constructor) and for + [named results](/mojo/manual/functions#named-function-results). An `out` + argument is uninitialized at the beginning of the function, and must be + initialized before the function returns. Although `out` arguments show up in + the argument list, they're never passed in by the caller. + For example, this function has one argument that's a mutable reference and one that's immutable: @@ -148,7 +155,7 @@ doesn't do any copying. In general, passing an immutable reference is much more efficient when handling large or expensive-to-copy values, because the copy constructor -and destructor are not invoked for a borrow. +and destructor are not invoked for a `read` argument. ### Compared to C++ and Rust @@ -168,9 +175,9 @@ mutability in the callee. However, the read convention differs from when compared to languages like C++ and Rust, and moves this optimization from every call site to a declaration on the type definition. -The major difference between Rust and Mojo is that Mojo does not require a -sigil on the caller side to pass by borrow. Also, Mojo is more efficient when -passing small values, and Rust defaults to moving values instead of passing +The major difference between Rust and Mojo is that Mojo does not require a sigil +on the caller side to pass by immutable reference. Also, Mojo is more efficient +when passing small values, and Rust defaults to moving values instead of passing them around by borrow. These policy and syntax decisions allow Mojo to provide an easier-to-use programming model. @@ -448,7 +455,7 @@ like `object` are cheap to copy. However, copying large types that allocate heap storage can be expensive. (For example, copying `List` or `Dict` types, or copying large numbers of strings.) -### Borrowed versus owned in `def` functions +### `read` versus `owned` in `def` functions The difference between `read` and `owned` in a `def` function may be a little subtle. In both cases, you can end up with a uniquely-owned value that's From ed76b83b6ce398ed4d6ed9ad979ca14aba42e07c Mon Sep 17 00:00:00 2001 From: Ken Jones <165197230+KenJones-Modular@users.noreply.github.com> Date: Mon, 9 Dec 2024 17:17:49 -0800 Subject: [PATCH 073/509] Updated solution code for the life example to match recent tutorial changes MODULAR_ORIG_COMMIT_REV_ID: d87d1ea4e81ffc5625accbab753d23ef0fd03c9a --- examples/life/gridv1.mojo | 28 +++++++++++++++++++++------- examples/life/gridv2.mojo | 3 +++ examples/life/lifev1.mojo | 2 +- examples/life/lifev2.mojo | 2 +- examples/life/mojoproject.toml | 2 +- 5 files changed, 27 insertions(+), 10 deletions(-) diff --git a/examples/life/gridv1.mojo b/examples/life/gridv1.mojo index b06cb51315..0eded6f24d 100644 --- a/examples/life/gridv1.mojo +++ b/examples/life/gridv1.mojo @@ -40,15 +40,19 @@ struct Grid(StringableRaising): # ===-------------------------------------------------------------------===# def __str__(self) -> String: + # Create an empty String str = String() + + # Iterate through rows 0 through rows-1 for row in range(self.rows): + # Iterate through columns 0 through cols-1 for col in range(self.cols): if self[row, col] == 1: - str += "*" + str += "*" # If cell is populated, append an asterisk else: - str += " " + str += " " # If cell is not populated, append a space if row != self.rows - 1: - str += "\n" + str += "\n" # Add a newline between rows, but not at the end return str # ===-------------------------------------------------------------------===# @@ -74,6 +78,7 @@ struct Grid(StringableRaising): if seed: random.seed(seed.value()) else: + # Seed the random number generator using the current time. random.seed() data = List[List[Int]]() @@ -81,6 +86,7 @@ struct Grid(StringableRaising): for row in range(rows): row_data = List[Int]() for col in range(cols): + # Generate a random 0 or 1 and append it to the row. row_data.append(int(random.random_si64(0, 1))) data.append(row_data) @@ -96,13 +102,16 @@ struct Grid(StringableRaising): for row in range(self.rows): row_data = List[Int]() + # Calculate neighboring row indices, handling "wrap-around" row_above = (row - 1) % self.rows row_below = (row + 1) % self.rows for col in range(self.cols): + # Calculate neighboring column indices, handling "wrap-around" col_left = (col - 1) % self.cols col_right = (col + 1) % self.cols + # Determine number of populated cells around the current cell num_neighbors = ( self[row_above, col_left] + self[row_above, col] @@ -114,10 +123,15 @@ struct Grid(StringableRaising): + self[row_below, col_right] ) - if num_neighbors | self[row, col] == 3: - row_data.append(1) - else: - row_data.append(0) + # Determine the state of the current cell for the next generation + new_state = 0 + if self[row, col] == 1 and ( + num_neighbors == 2 or num_neighbors == 3 + ): + new_state = 1 + elif self[row, col] == 0 and num_neighbors == 3: + new_state = 1 + row_data.append(new_state) next_generation.append(row_data) diff --git a/examples/life/gridv2.mojo b/examples/life/gridv2.mojo index 3e43b5988a..fa5807974f 100644 --- a/examples/life/gridv2.mojo +++ b/examples/life/gridv2.mojo @@ -98,13 +98,16 @@ struct Grid[rows: Int, cols: Int](StringableRaising): next_generation = Self() for row in range(rows): + # Calculate neighboring row indices, handling "wrap-around" row_above = (row - 1) % rows row_below = (row + 1) % rows for col in range(cols): + # Calculate neighboring column indices, handling "wrap-around" col_left = (col - 1) % cols col_right = (col + 1) % cols + # Determine number of populated cells around the current cell num_neighbors = ( self[row_above, col_left] + self[row_above, col] diff --git a/examples/life/lifev1.mojo b/examples/life/lifev1.mojo index 9056388874..04e78df7c4 100644 --- a/examples/life/lifev1.mojo +++ b/examples/life/lifev1.mojo @@ -59,7 +59,7 @@ def run_display( # Draw each live cell in the grid for row in range(grid.rows): for col in range(grid.cols): - if grid.data[row][col]: + if grid[row, col]: x = col * cell_width + border_size y = row * cell_height + border_size width = cell_width - border_size diff --git a/examples/life/lifev2.mojo b/examples/life/lifev2.mojo index ca2071ae06..e78306c0d9 100644 --- a/examples/life/lifev2.mojo +++ b/examples/life/lifev2.mojo @@ -83,4 +83,4 @@ def run_display( def main(): start = Grid[128, 128].random() - run_display(start, window_height=600, window_width=600) + run_display(start) diff --git a/examples/life/mojoproject.toml b/examples/life/mojoproject.toml index 2d38853796..4a1ffb3026 100644 --- a/examples/life/mojoproject.toml +++ b/examples/life/mojoproject.toml @@ -8,7 +8,7 @@ version = "0.1.0" [dependencies] max = "*" -python = "3.12.*" +python = ">=3.11,<3.13" pygame = ">=2.6.1,<3" [tasks] From 2ace785ef7b5cafda55a93b844a752a05137caba Mon Sep 17 00:00:00 2001 From: modularbot Date: Tue, 10 Dec 2024 18:15:54 +0000 Subject: [PATCH 074/509] Update lockfiles to point to latest nightly version: 24.6.0.dev2024121016 --- examples/life/magic.lock | 2283 +++++++++++++++------------------ examples/magic.lock | 1781 ++++++++++++------------- examples/notebooks/magic.lock | 1799 +++++++++++++------------- examples/operators/magic.lock | 1781 ++++++++++++------------- magic.lock | 1781 ++++++++++++------------- 5 files changed, 4628 insertions(+), 4797 deletions(-) diff --git a/examples/life/magic.lock b/examples/life/magic.lock index c3b6a5b2ae..e9b082c770 100644 --- a/examples/life/magic.lock +++ b/examples/life/magic.lock @@ -9,7 +9,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.9-py312h178313f_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.10-py312h178313f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/alsa-lib-1.2.13-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda @@ -17,30 +17,30 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/aom-3.9.1-hac33072_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/attr-2.5.1-h166bdaf_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-ha4f867e_12.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.1-hecf86a2_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.10.3-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.3.0-hf42f96a_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.0-h873f81a_8.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.2-ha5a3ca8_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-ha35c7d9_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h56e9cca_9.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.5-h6ad95d4_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.1-hf42f96a_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-hf42f96a_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.7-h318f0b1_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-hac138a2_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-h8c8080f_14.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.1-h0f28dba_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.10.5-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.3.0-h9cc6398_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.0-hf811eff_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.2-hce7dc5d_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-hfd54f12_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-ha3c2ba9_11.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.5-h55e9418_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.1-h9cc6398_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-h9cc6398_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.7-hed26007_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-h571fd1c_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.10.0-h113e628_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.13.0-h3cf044e_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-common-cpp-12.8.0-h736e048_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-files-datalake-cpp-12.12.0-ha633028_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/backoff-2.2.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/backoff-2.2.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py312h2ec8cdc_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.3-hb9d3cd8_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2024.8.30-hbcca054_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.0-hebfffa5_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.2-h3394656_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.8.30-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py312h06ac9bb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_1.conda @@ -78,12 +78,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.13-h59595ed_1003.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-9.0.0-hda332d3_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-10.1.0-h0b3b770_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/httptools-0.6.4-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda @@ -99,10 +99,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_h5888daf_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-h3b07799_4_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-h8bbc2ab_4_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-h8bbc2ab_4_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-had74209_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-h44a453e_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-hcb10f89_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-hcb10f89_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-h3ee7192_6_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libasprintf-0.22.5-he8f35ee_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libasprintf-devel-0.22.5-he8f35ee_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libavif16-1.1.1-h1909e37_2.conda @@ -131,22 +131,21 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hd5240d6_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.82.2-h2ff4ddf_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h77fa898_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.31.0-h804f50b_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.31.0-h0121fbd_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.32.0-h804f50b_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.32.0-h0121fbd_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgpg-error-1.51-hbd13f7d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.67.1-hc2c308b_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-hd590300_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-25_linux64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.3-hb9d3cd8_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-devel-5.6.3-hb9d3cd8_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libmad-0.15.1b-h0b41bf4_1001.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libogg-1.3.5-h4ab18f5_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.28-pthreads_h94d23a6_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopus-1.3.1-h7f98852_1.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-hf4f6db6_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-h081d1f1_6_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.44-hadc24fc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.2-h5b01275_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_1.conda @@ -156,7 +155,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hf672d98_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-hc0a3c3a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libsystemd0-256.9-h2774228_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsystemd0-256.9-h0b6a36f_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libthrift-0.21.0-h0e7cc3e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hc4654cb_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.9.0-hb9d3cd8_1.conda @@ -168,32 +167,32 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.5-h8d12d68_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.9.4-hcb278e6_0.conda + - 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.dev2024120905-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120905-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120905-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120905-release.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.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.dev2024120905-release.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/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/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 - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.2-h488ebb8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.3-h5fbd93e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.0-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.28.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.28.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-prometheus-1.12.0rc1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.28.2-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.28.2-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.28.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh3cfb1c2_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/opusfile-0.12-h3358134_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/orc-2.0.3-he039a57_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/orc-2.0.3-h97ab989_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.3-py312hf9745cd_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda @@ -213,7 +212,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.3-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.27.1-py312h12e396e_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.6.1-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.6.1-pyh3cfb1c2_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pygame-2.6.1-py312h4fcb14b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyinstrument-5.0.0-py312h66e93f0_0.conda @@ -240,7 +239,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/sdl2-2.30.10-h63c27ac_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/sdl2_image-2.8.2-h06ee604_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/sdl2_mixer-2.6.3-h8830914_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/sdl2_ttf-2.22.0-h08b1b5d_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sdl2_ttf-2.22.0-h287479f_3.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 - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda @@ -277,20 +276,16 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxfixes-6.0.1-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrender-0.9.11-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xxhash-0.8.2-hd590300_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-5.6.3-hbcc6ac9_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-gpl-tools-5.6.3-hbcc6ac9_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-tools-5.6.3-hb9d3cd8_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.18.3-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.1-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312hef9b889_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda linux-aarch64: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.9-py312hcc812fe_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.10-py312hcc812fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/alsa-lib-1.2.13-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda @@ -298,30 +293,30 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aom-3.9.1-hcccb83c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/attr-2.5.1-h4e544f5_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-h89ba3c0_12.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.1-h35473ba_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-common-0.10.3-h86ecc28_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-compression-0.3.0-h4c7db1d_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-event-stream-0.5.0-hba6c15e_8.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.2-h697be72_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-h0155602_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h2cca791_9.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.5-h3c51cf6_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.1-h4c7db1d_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h4c7db1d_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.7-hacb6b83_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h5e41cbe_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-hb4dd4bb_14.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.1-h1aca5b9_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-common-0.10.5-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-compression-0.3.0-h10558d5_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-event-stream-0.5.0-ha9733bd_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.2-h53134c8_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-h8aa8d47_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h2f8d747_11.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.5-h757e810_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.1-h10558d5_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h10558d5_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.7-hc8d91e0_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h2d3f608_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-core-cpp-1.14.0-h1887c18_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-identity-cpp-1.10.0-h47b0b28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-blobs-cpp-12.13.0-h185ecfd_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-common-cpp-12.8.0-h1b94036_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-files-datalake-cpp-12.12.0-h37d6d07_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/backoff-2.2.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/backoff-2.2.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/brotli-python-1.1.0-py312h6f74592_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h68df207_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/c-ares-1.34.3-h86ecc28_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2024.8.30-hcefe29a_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cairo-1.18.0-hdb1a16f_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cairo-1.18.2-h83712da_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.8.30-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cffi-1.17.1-py312hac81daf_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_1.conda @@ -359,12 +354,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/graphite2-1.3.13-h2f0025b_1003.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/harfbuzz-9.0.0-hbf49d6b_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/harfbuzz-10.1.0-hbdc1db7_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/httptools-0.6.4-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda @@ -380,10 +375,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.0.0-h4de3ea5_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h5ad3122_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-ha2aff55_4_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h512cd83_4_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h512cd83_4_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h3644d33_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-h1b535d6_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h3b568fd_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h3b568fd_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h3ffb4b1_6_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libasprintf-0.22.5-h87f4aca_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libasprintf-devel-0.22.5-h87f4aca_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libavif16-1.1.1-h3b0c220_2.conda @@ -412,22 +407,21 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libglib-2.82.2-hc486b8e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-2.31.0-h3888205_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-storage-2.31.0-hb9b2b65_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-2.32.0-h3888205_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-storage-2.32.0-hb9b2b65_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgpg-error-1.51-h05609ea_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgrpc-1.67.1-h36c5df4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libiconv-1.17-h31becfc_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libjpeg-turbo-3.0.0-h31becfc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-25_linuxaarch64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.3-h86ecc28_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-devel-5.6.3-h86ecc28_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libmad-0.15.1b-hb4cce97_1001.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnghttp2-1.64.0-hc8609a4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libogg-1.3.5-h0b9eccb_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.28-pthreads_h9d3fd7e_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopus-1.3.1-hf897c2e_1.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-h34a048e_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-hfc78867_6_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.44-hc4a20ef_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.2-h029595c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_1.conda @@ -437,7 +431,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libssh2-1.11.1-ha41c0db_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsystemd0-256.9-hd54d049_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsystemd0-256.9-ha536d29_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libthrift-0.21.0-h154c74f_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.0-hca96517_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.9.0-h86ecc28_1.conda @@ -449,32 +443,32 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.5-h2e0c361_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.9.4-hd600fc2_0.conda + - 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.dev2024120905-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120905-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120905-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120905-release.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.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.dev2024120905-release.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/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/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 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openjpeg-2.5.2-h0d9d63b_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openjpeg-2.5.3-h3f56577_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.0-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.28.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.28.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-prometheus-1.12.0rc1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.28.2-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.28.2-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.28.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh3cfb1c2_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/opusfile-0.12-hf55b2d5_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/orc-2.0.3-h90de224_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/orc-2.0.3-h3c55218_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pandas-2.2.3-py312ha2895bd_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda @@ -494,7 +488,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.3-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pydantic-core-2.27.1-py312h8cbf658_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.6.1-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.6.1-pyh3cfb1c2_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pygame-2.6.1-py312hb2c8110_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyinstrument-5.0.0-py312hb2c0f52_0.conda @@ -521,7 +515,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sdl2-2.30.10-h93e764a_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sdl2_image-2.8.2-hd95cb85_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sdl2_mixer-2.6.3-h422cae6_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sdl2_ttf-2.22.0-h680d130_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sdl2_ttf-2.22.0-hb1608df_3.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 - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda @@ -558,48 +552,44 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxfixes-6.0.1-h57736b2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxrender-0.9.11-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xxhash-0.8.2-h31becfc_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-5.6.3-h2dbfc1b_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-gpl-tools-5.6.3-h2dbfc1b_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-tools-5.6.3-h86ecc28_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yaml-0.2.5-hf897c2e_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.18.3-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zeromq-4.3.5-h5efb499_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zlib-1.3.1-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstandard-0.23.0-py312hb698573_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.6-h02f22dd_0.conda osx-arm64: - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.9-py312h998013c_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.10-py312h998013c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aom-3.9.1-h7bae524_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-h35eccd0_12.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.1-h5d7ee29_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.10.3-h5505292_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-compression-0.3.0-h5d7ee29_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.0-h8ec3972_8.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.2-h48c6dea_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-h30cefa2_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h3aaadf4_9.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.5-hca3a6f1_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.1-h5d7ee29_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-h5d7ee29_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.7-hc2c2bbc_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-he4d6490_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-h93897a1_14.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.1-h4d88cd7_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.10.5-h5505292_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-compression-0.3.0-h4d88cd7_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.0-h9fa824c_10.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.2-hc68443d_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-h66499f2_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-hd073cef_11.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.5-hb201fd0_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.1-h4d88cd7_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-h4d88cd7_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.7-hb9a023b_5.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-h39838b8_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.14.0-hd50102c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.10.0-hc602bab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-blobs-cpp-12.13.0-h7585a09_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-common-cpp-12.8.0-h9ca1f76_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-files-datalake-cpp-12.12.0-hcdd55da_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/backoff-2.2.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/backoff-2.2.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py312hde4cb15_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.3-h5505292_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2024.8.30-hf0a4a13_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cairo-1.18.2-h6a3b0d2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cairo-1.18.2-h6a3b0d2_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.8.30-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.1-py312h0fad829_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_1.conda @@ -635,12 +625,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/graphite2-1.3.13-hebf3989_1003.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/harfbuzz-9.0.0-h997cde5_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/harfbuzz-10.1.0-h9df47df_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/httptools-0.6.4-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda @@ -653,10 +643,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.16-ha0e7c42_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_hf9b8971_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-h86d57b8_4_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-h1dc2043_4_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-h1dc2043_4_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-hf3d3107_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-h4a2f8bd_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-hf07054f_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-hf07054f_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-h86344ea_6_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libasprintf-0.22.5-h8414b35_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libasprintf-devel-0.22.5-h8414b35_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libavif16-1.1.1-h45b7238_2.conda @@ -680,8 +670,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libglib-2.82.2-h07bd6cf_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-2.31.0-h8d8be31_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-storage-2.31.0-h7081f7f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-2.32.0-h8d8be31_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-storage-2.32.0-h7081f7f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgrpc-1.67.1-hc70892a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.17-h0d3ecfb_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libintl-0.22.5-h8414b35_3.conda @@ -694,7 +684,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libogg-1.3.5-h99b78c6_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.28-openmp_hf332438_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopus-1.3.1-h27ca646_1.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-hf4cc9e7_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-h636d7b7_6_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.44-hc14010f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.2-h8f0b736_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h2348fd5_1.conda @@ -712,32 +702,32 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.5-h178c5d8_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.5-hdb05f8b_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.9.4-hb7217d7_0.conda + - 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.dev2024120905-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120905-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120905-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120905-release.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.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.dev2024120905-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024121016-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 - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h7bae524_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openjpeg-2.5.2-h9f1df11_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openjpeg-2.5.3-h8a3d83b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.0-h39f12f2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.28.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.28.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-prometheus-1.12.0rc1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.28.2-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.28.2-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.28.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh3cfb1c2_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/opusfile-0.12-h5643135_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/orc-2.0.3-h121fd32_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/orc-2.0.3-hbcee414_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.3-py312hcd31e36_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda @@ -756,7 +746,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.3-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.27.1-py312hcd83bfe_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.6.1-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.6.1-pyh3cfb1c2_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pygame-2.6.1-py312hb14fe3b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyinstrument-5.0.0-py312h0bf5046_0.conda @@ -782,7 +772,7 @@ environments: - 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 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sdl2_mixer-2.6.3-h4fe3bdc_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sdl2_ttf-2.22.0-hda0f12e_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sdl2_ttf-2.22.0-h443c5de_3.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 - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda @@ -817,7 +807,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.18.3-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zlib-1.3.1-h8359307_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py312h15fbf35_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.6-hb46c0d2_0.conda packages: @@ -885,12 +874,12 @@ packages: timestamp: 1733332029649 - kind: conda name: aiohttp - version: 3.11.9 + version: 3.11.10 build: py312h178313f_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.9-py312h178313f_0.conda - sha256: 875a8ad0da035b33ba8037c40a2ffc0412b9545bc3d15455a8a75db22a3ee471 - md5: eeaf9831f262132fb12ce3921de09651 + url: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.10-py312h178313f_0.conda + sha256: dc8ebdd99e9d7a07454a7063a295cdc7a86264648647fec10b2ceae97478e200 + md5: 3e92784b8e32ab7d0b95ee296ba79a99 depends: - __glibc >=2.17,<3.0.a0 - aiohappyeyeballs >=2.3.0 @@ -905,16 +894,16 @@ packages: - yarl >=1.17.0,<2.0 license: MIT AND Apache-2.0 license_family: Apache - size: 912186 - timestamp: 1733125914520 + size: 914378 + timestamp: 1733839626367 - kind: conda name: aiohttp - version: 3.11.9 + version: 3.11.10 build: py312h998013c_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.9-py312h998013c_0.conda - sha256: 521b7c97a1122c0a6740a3200163e29bc8aa1d7efa273deb6e4c58a47779114b - md5: 0bb2657d1215a89fb586d387ce9c4daa + url: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.10-py312h998013c_0.conda + sha256: 69eb9c89dce6a7ae960099172daffba9f77fef39344f37e581685a8e3c5debe6 + md5: 642356223364539ba7ba36556fcf49ee depends: - __osx >=11.0 - aiohappyeyeballs >=2.3.0 @@ -929,16 +918,16 @@ packages: - yarl >=1.17.0,<2.0 license: MIT AND Apache-2.0 license_family: Apache - size: 873089 - timestamp: 1733125044394 + size: 874135 + timestamp: 1733839113411 - kind: conda name: aiohttp - version: 3.11.9 + version: 3.11.10 build: py312hcc812fe_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.9-py312hcc812fe_0.conda - sha256: e358d2c03b4eceb7ad3d8636705e60aa15bdec81305d9f9e1624fb5a03901147 - md5: 06400e4f6428e6c2ea2b59df702b5b39 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.10-py312hcc812fe_0.conda + sha256: df694a9fec546e575a4ea7e1c3ac476c0bda53c0fad44c046ad3ebdd5b75a0a8 + md5: a8c9ec59e6323b38418bbf04deaa0c02 depends: - aiohappyeyeballs >=2.3.0 - aiosignal >=1.1.2 @@ -953,8 +942,8 @@ packages: - yarl >=1.17.0,<2.0 license: MIT AND Apache-2.0 license_family: Apache - size: 900828 - timestamp: 1733124971238 + size: 900931 + timestamp: 1733839037447 - kind: conda name: aiosignal version: 1.3.1 @@ -1134,443 +1123,447 @@ packages: - kind: conda name: aws-c-auth version: 0.8.0 - build: h35eccd0_12 - build_number: 12 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-h35eccd0_12.conda - sha256: 40ca48aee5f3ff0d3ffd64625dacb019104a9a2ee24cd54052cde6fe4cbc8349 - md5: 1109d5293b724ca16b61452accfdb442 + build: h8c8080f_14 + build_number: 14 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-h8c8080f_14.conda + sha256: 7a9f7763e3a151ae1008ead51458f9b889b657f388266d53c6f7fa383dbb2481 + md5: a9284141081982473ebf41b92566bbcb depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-common >=0.10.5,<0.10.6.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 + - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 92279 - timestamp: 1733611476546 + size: 107775 + timestamp: 1733709347751 - kind: conda name: aws-c-auth version: 0.8.0 - build: h89ba3c0_12 - build_number: 12 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-h89ba3c0_12.conda - sha256: 021451014fb5ee24601052d84db8d5babbce5085959ba777b540db4e33bde360 - md5: c0e2e6c3aa8c309af0ba09fc7d949407 + build: h93897a1_14 + build_number: 14 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-h93897a1_14.conda + sha256: 3ec33500c5def035acb9ba406161f5452e39b1b818c67d8a56103d6def47bda6 + md5: 061e221dc5cca62be8fab49a16bfb99d depends: + - __osx >=11.0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-common >=0.10.5,<0.10.6.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 112242 - timestamp: 1733611425746 + size: 92250 + timestamp: 1733709418870 - kind: conda name: aws-c-auth version: 0.8.0 - build: ha4f867e_12 - build_number: 12 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-ha4f867e_12.conda - sha256: b9355bedf43c857a2d1986ebe7d61e615218f2171d163b509633d6c0c988d2dc - md5: d889de56d3be691063b71eb826470e29 + build: hb4dd4bb_14 + build_number: 14 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-hb4dd4bb_14.conda + sha256: a9622ac836bbe4a24310e0e77a42ef0a17e5fa0703276f8bbbef945deaca337c + md5: a5b86123507e184fb4463e1f8890b398 depends: - - __glibc >=2.17,<3.0.a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-common >=0.10.5,<0.10.6.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 107663 - timestamp: 1733611397256 + size: 111975 + timestamp: 1733709317063 - kind: conda name: aws-c-cal version: 0.8.1 - build: h35473ba_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.1-h35473ba_0.conda - sha256: c2d59d74e167b6df3c1a7addf0d37080b69a6b3dee2a30b3f2171a5d26c5a691 - md5: 97c0ccb4d43d880b38f237e746c29ead + build: h0f28dba_2 + build_number: 2 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.1-h0f28dba_2.conda + sha256: 023fa0d0618b652b0be5eac73d92fd47136351da7d331334c45d5dd1ee760401 + md5: 94faebd978282d2a4a8514141daec756 depends: - - aws-c-common >=0.10.3,<0.10.4.0a0 + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.5,<0.10.6.0a0 - libgcc >=13 - openssl >=3.3.1,<4.0a0 license: Apache-2.0 license_family: Apache - size: 49808 - timestamp: 1732038238504 + size: 47694 + timestamp: 1733390870810 - kind: conda name: aws-c-cal version: 0.8.1 - build: h5d7ee29_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.1-h5d7ee29_0.conda - sha256: 42d5e9fb695bc3b280ed7e625dcda110b6780ee471e227f1b92afce71ae4972c - md5: fc51a61831a676fe6f922450f51ab6af + build: h1aca5b9_2 + build_number: 2 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.1-h1aca5b9_2.conda + sha256: df203473e8675fc27ae5cb62bc09e336fe92655df0a0056e73087cb22aed287e + md5: 31d9e82aac5cd3fe399535bcec0f2975 depends: - - __osx >=11.0 - - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-common >=0.10.5,<0.10.6.0a0 + - libgcc >=13 - openssl >=3.3.1,<4.0a0 license: Apache-2.0 license_family: Apache - size: 40047 - timestamp: 1732038304022 + size: 49822 + timestamp: 1733390907734 - kind: conda name: aws-c-cal version: 0.8.1 - build: hecf86a2_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.1-hecf86a2_0.conda - sha256: 12cc2087503f4f0d3a5db84e791fb5e585866da728f888aa76e14330a092a681 - md5: 8350795be14a92d68847c0d4f3c1d59f + build: h4d88cd7_2 + build_number: 2 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.1-h4d88cd7_2.conda + sha256: 30e6bc4feea78a280553b084a960515e550dabfae0e63ba511be773c3a9f6b5a + md5: 3cb07f08e5aabe657b0b5fb13945e79a depends: - - __glibc >=2.17,<3.0.a0 - - aws-c-common >=0.10.3,<0.10.4.0a0 - - libgcc >=13 + - __osx >=11.0 + - aws-c-common >=0.10.5,<0.10.6.0a0 - openssl >=3.3.1,<4.0a0 license: Apache-2.0 license_family: Apache - size: 47569 - timestamp: 1732038156682 + size: 39878 + timestamp: 1733390962202 - kind: conda name: aws-c-common - version: 0.10.3 + version: 0.10.5 build: h5505292_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.10.3-h5505292_0.conda - sha256: bb2c1038726d31ffd2d35a5764f80bcd670b6a1c753aadfd261aecb9f88db6d8 - md5: 4150339e3b08db33fe4c436340b1d7f6 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.10.5-h5505292_0.conda + sha256: 54554886028d25b5c752369e7ae8321852e875fdc780ff9357b72a31f3e5d5b4 + md5: 49f049f8b10cf8c2c5a26660854fd21a depends: - __osx >=11.0 license: Apache-2.0 license_family: Apache - size: 221524 - timestamp: 1731567512057 + size: 222184 + timestamp: 1733324871298 - kind: conda name: aws-c-common - version: 0.10.3 + version: 0.10.5 build: h86ecc28_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-common-0.10.3-h86ecc28_0.conda - sha256: 95ca372a0e1bb8dad421751de6aa44d37d87dd69c33a48faca1ae6efa30f2af0 - md5: 64f523ba00b75fdcb33a4eea827d3d19 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-common-0.10.5-h86ecc28_0.conda + sha256: bdea66b7be9acd463bbfd583d2f80ff676d376c60480a2d3f9f7de7b4bf6d2b2 + md5: fcd238b0cc98927742a96aa411123e32 depends: - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 257859 - timestamp: 1731567310573 + size: 258257 + timestamp: 1733324684433 - kind: conda name: aws-c-common - version: 0.10.3 + version: 0.10.5 build: hb9d3cd8_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.10.3-hb9d3cd8_0.conda - sha256: 90bd2ff40b65acb62f11e2500ee7b7e85ac77d2e332429002f4c1da949bec27f - md5: ff3653946d34a6a6ba10babb139d96ef + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.10.5-hb9d3cd8_0.conda + sha256: 93e83e2a31f41bac2aa5eae8fbc7f1d31449a04a3df8a64ebcac2433f52a86ad + md5: d8288fbad9d809b9ca139b8beb6553ef depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 237137 - timestamp: 1731567278052 + size: 237114 + timestamp: 1733324723318 - kind: conda name: aws-c-compression version: 0.3.0 - build: h4c7db1d_2 - build_number: 2 + build: h10558d5_4 + build_number: 4 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-compression-0.3.0-h4c7db1d_2.conda - sha256: 8dba3d48a7230ccd2a6ea8d88c0e1b6caf0a39b14a2b2f0255a413fcfce8ad0a - md5: ee074857cec335bb83692771b06160a4 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-compression-0.3.0-h10558d5_4.conda + sha256: 45ea74461b6a5453325db2201ba9f728f20e89ead17730e93ddd7411a833c058 + md5: 8ceaf4396978c33bc695129425f12734 depends: - - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-common >=0.10.5,<0.10.6.0a0 - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 19696 - timestamp: 1731678729046 + size: 19742 + timestamp: 1733391062884 - kind: conda name: aws-c-compression version: 0.3.0 - build: h5d7ee29_2 - build_number: 2 + build: h4d88cd7_4 + build_number: 4 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-compression-0.3.0-h5d7ee29_2.conda - sha256: a52ea62bf08aed3af079e16d1738f3d2a7fcdd1d260289ae27ae96298e15d12a - md5: 15566c36b0cf5f314e3bee7f7cc796b5 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-compression-0.3.0-h4d88cd7_4.conda + sha256: b6900e82b553d18d5528322de236af3a7f64ccb3df08e8320142894144a5c716 + md5: 8c67ff0c68aea28be3efec6f8d799a19 depends: - __osx >=11.0 - - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-common >=0.10.5,<0.10.6.0a0 license: Apache-2.0 license_family: Apache - size: 18204 - timestamp: 1731678916439 + size: 18219 + timestamp: 1733391126008 - kind: conda name: aws-c-compression version: 0.3.0 - build: hf42f96a_2 - build_number: 2 + build: h9cc6398_4 + build_number: 4 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.3.0-hf42f96a_2.conda - sha256: 210ba4fff1c9500fe02de1dae311ce723bfa313a2d21b72accd745f736f56fce - md5: 257f4ae92fe11bd8436315c86468c39b + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.3.0-h9cc6398_4.conda + sha256: 045a3231b0aacb544ea9e348c22f863d96631f14a3a2b59413a72f61259a32a4 + md5: 076717670d5406e90070120314ff9b4f depends: - __glibc >=2.17,<3.0.a0 - - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-common >=0.10.5,<0.10.6.0a0 - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 19034 - timestamp: 1731678703956 + size: 19029 + timestamp: 1733390975089 - kind: conda name: aws-c-event-stream version: 0.5.0 - build: h873f81a_8 - build_number: 8 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.0-h873f81a_8.conda - sha256: 589f9a04c4c7a919410dde75ce93a6986efad6ed522ecd8e5c9c587ac18f0d34 - md5: 32bdd50b43fcc435a8dc5a3c66aafef0 + build: h9fa824c_10 + build_number: 10 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.0-h9fa824c_10.conda + sha256: 12f2ccc71bb993934cc489af359cb7399f671c3111f64fe2be9c8231819e11bd + md5: 9f6a7984f9ce3c6149fa36865060928a depends: - - __glibc >=2.17,<3.0.a0 - - aws-c-common >=0.10.3,<0.10.4.0a0 + - __osx >=11.0 + - aws-c-common >=0.10.5,<0.10.6.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - - libgcc >=13 - - libstdcxx >=13 + - libcxx >=18 license: Apache-2.0 license_family: Apache - size: 54020 - timestamp: 1731839177415 + size: 47460 + timestamp: 1733696263921 - kind: conda name: aws-c-event-stream version: 0.5.0 - build: h8ec3972_8 - build_number: 8 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.0-h8ec3972_8.conda - sha256: 81b98fc39e64d090af23b11621e467b4f943a19f61dda0fed5ad6397f06de5c7 - md5: ced9c97ddf61e4222d548e8bcc863b87 + build: ha9733bd_10 + build_number: 10 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-event-stream-0.5.0-ha9733bd_10.conda + sha256: e8189bdd1af1a3f68a460bcb3c852193cfdf7afa2f1a82d687d30055242b20e2 + md5: cb0877c6fcc93454f221ba4eba798cfc depends: - - __osx >=11.0 - - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-common >=0.10.5,<0.10.6.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - - libcxx >=18 + - libgcc >=13 + - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 47491 - timestamp: 1731839300212 + size: 55066 + timestamp: 1733696212604 - kind: conda name: aws-c-event-stream version: 0.5.0 - build: hba6c15e_8 - build_number: 8 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-event-stream-0.5.0-hba6c15e_8.conda - sha256: d3b74580045ee9d54a134ab1e5e00082d5d8a466980e94acc153188ee7375d08 - md5: 102f8b54630d79aff5e0c489f40f926e + build: hf811eff_10 + build_number: 10 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.0-hf811eff_10.conda + sha256: 3fbc86e70b543f26cc485f98714b7f789c4ece05128046458681893f43b7f5f1 + md5: 5046c78dd139a333b6acd7376a10e0a7 depends: - - aws-c-common >=0.10.3,<0.10.4.0a0 + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.5,<0.10.6.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 55354 - timestamp: 1731839242373 + size: 53973 + timestamp: 1733696170256 - kind: conda name: aws-c-http version: 0.9.2 - build: h48c6dea_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.2-h48c6dea_1.conda - sha256: cb68d557af1bdcbef668574836fbf39c4df0e4f377258e4d5bd14196acf9b992 - md5: a28dd36a1da76042bfb5579005cc6728 + build: h53134c8_3 + build_number: 3 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.2-h53134c8_3.conda + sha256: a4d217f89ad0e9326da57b2d9bd4cd5cb0a95423d092be7ed81e88fb075d4dbe + md5: 2ffd03180381a92332b673cefc602234 depends: - - __osx >=11.0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-common >=0.10.5,<0.10.6.0a0 - aws-c-compression >=0.3.0,<0.3.1.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 + - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 152660 - timestamp: 1732110368931 + size: 189812 + timestamp: 1733683248290 - kind: conda name: aws-c-http version: 0.9.2 - build: h697be72_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.2-h697be72_1.conda - sha256: 4d6557a00e74649301da78d7de7d108882ce89eb9d6c87efce30789b53a617cf - md5: a8b1a2c11a93e615f6e8f33175ff8ff0 + build: hc68443d_3 + build_number: 3 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.2-hc68443d_3.conda + sha256: 71be93cd1d8dfa5858939ba53431abaee859fbc98bdf9f5033bfa41af76b140a + md5: 6353604cb9803e63fce359388201514e depends: + - __osx >=11.0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-common >=0.10.5,<0.10.6.0a0 - aws-c-compression >=0.3.0,<0.3.1.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 190344 - timestamp: 1732110425530 + size: 153237 + timestamp: 1733683327609 - kind: conda name: aws-c-http version: 0.9.2 - build: ha5a3ca8_1 - build_number: 1 + build: hce7dc5d_3 + build_number: 3 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.2-ha5a3ca8_1.conda - sha256: 8ecb3d8411f58db4686635aedfe5d60b2b8870f9f9cafb471f3878dc61d21596 - md5: b2e017f8a4781ad3af9166edf10b65a8 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.2-hce7dc5d_3.conda + sha256: 7e864b6d4255c4edbd1b2c0f519849017d2a48e54b282748eaa8f9f0fc98a6f4 + md5: c0f54e8975ad42d2864f4b1918356b3b depends: - __glibc >=2.17,<3.0.a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-common >=0.10.5,<0.10.6.0a0 - aws-c-compression >=0.3.0,<0.3.1.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 197338 - timestamp: 1732110324356 + size: 197506 + timestamp: 1733683203582 - kind: conda name: aws-c-io version: 0.15.3 - build: h0155602_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-h0155602_1.conda - sha256: 7b8d97d51e5bb80191e07f16cac6f59068be30bf5906925a8f4159b3aab9093c - md5: 431c201b11eee90fd120844557a62b02 + build: h66499f2_3 + build_number: 3 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-h66499f2_3.conda + sha256: 86ff175fa5dced16cf41bcc5c353de080314fcb81f4aed326f29b9f22add9aad + md5: e64159c5b106a0365544cfe9d4ef79ec depends: + - __osx >=11.0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.3,<0.10.4.0a0 - - libgcc >=13 - - s2n >=1.5.9,<1.5.10.0a0 + - aws-c-common >=0.10.5,<0.10.6.0a0 license: Apache-2.0 license_family: Apache - size: 161664 - timestamp: 1732097310449 + size: 136845 + timestamp: 1733588465582 - kind: conda name: aws-c-io version: 0.15.3 - build: h30cefa2_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-h30cefa2_1.conda - sha256: d6f8d42259ca11507bd912b3cd3ff1a65d6d8c7ff67ae9ee9df1686c9bebbbcc - md5: 8b8dc361de09e5b6227165a876e55cb7 + build: h8aa8d47_3 + build_number: 3 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-h8aa8d47_3.conda + sha256: cb08b2e9258637e810ac283600b7de2d7a68f55a61e67226e9cce2537f36a06b + md5: 8ece20a51dafae96444e90c7ddaac41a depends: - - __osx >=11.0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-common >=0.10.5,<0.10.6.0a0 + - libgcc >=13 + - s2n >=1.5.9,<1.5.10.0a0 license: Apache-2.0 license_family: Apache - size: 136662 - timestamp: 1732097382517 + size: 161513 + timestamp: 1733588480960 - kind: conda name: aws-c-io version: 0.15.3 - build: ha35c7d9_1 - build_number: 1 + build: hfd54f12_3 + build_number: 3 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-ha35c7d9_1.conda - sha256: 2e9e13ed54f6da22ee5d06622f4165bcca253411997dad62225aecc54b25c0db - md5: 97960f380abe1ba3157fe63312e35b07 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-hfd54f12_3.conda + sha256: 6d0bd78d5c7d3ec586691d54c8aebc79d089358ff9e793f0cac857a1f977a1a0 + md5: c0b9f79cd2f5797b913415511bfa2cd6 depends: - __glibc >=2.17,<3.0.a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-common >=0.10.5,<0.10.6.0a0 - libgcc >=13 - s2n >=1.5.9,<1.5.10.0a0 license: Apache-2.0 license_family: Apache - size: 158012 - timestamp: 1732097264673 + size: 158115 + timestamp: 1733588386529 - kind: conda name: aws-c-mqtt version: 0.11.0 - build: h2cca791_9 - build_number: 9 + build: h2f8d747_11 + build_number: 11 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h2cca791_9.conda - sha256: c0ad176bab176a2983fb052de71037fc9357afd13b073511a7a440c1a8c6eff2 - md5: 090674d608454e979ce77bc8ee735868 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h2f8d747_11.conda + sha256: b66de0de359bfaec5084bdc78fda6dfbd8cf8e71c68a76dcd7b74e8a00ec6052 + md5: f4ccd7c1e73c662fd9a795147ca8ca9f depends: - - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-common >=0.10.5,<0.10.6.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 169690 - timestamp: 1733688313938 + size: 168898 + timestamp: 1733739548597 - kind: conda name: aws-c-mqtt version: 0.11.0 - build: h3aaadf4_9 - build_number: 9 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h3aaadf4_9.conda - sha256: 3cc99239c8dadfe55e4b9ba37d03c5d3308ddd8fe00792fab7c6b47c97655c07 - md5: ddb5dc7ac1ae424ca2b7a847765a0cb9 + build: ha3c2ba9_11 + build_number: 11 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-ha3c2ba9_11.conda + sha256: 187787bb41e7b616c9317c12c32a5027aae784d1f9335f9d6d34a3fa7ebcb1ec + md5: 93c5070d6f9b4cb2ed9de52ce247cebb depends: - - __osx >=11.0 - - aws-c-common >=0.10.3,<0.10.4.0a0 + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.5,<0.10.6.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 + - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 135051 - timestamp: 1733688394116 + size: 193829 + timestamp: 1733740033267 - kind: conda name: aws-c-mqtt version: 0.11.0 - build: h56e9cca_9 - build_number: 9 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h56e9cca_9.conda - sha256: c93c29b58482ca72d3f9a5710ad92194e809a9de988bcdcbae9ddd0f8ed484a6 - md5: f75642fe24ae4131f554cbacd6df53e3 + build: hd073cef_11 + build_number: 11 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-hd073cef_11.conda + sha256: d2ee2cdc651250a38f67b84ec65de3ba5493c760821d22c01edb8defd6393dc9 + md5: 0c1deb6e00f80b4aedcb2c4fcfea6407 depends: - - __glibc >=2.17,<3.0.a0 - - aws-c-common >=0.10.3,<0.10.4.0a0 + - __osx >=11.0 + - aws-c-common >=0.10.5,<0.10.6.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 194705 - timestamp: 1733688770217 + size: 134556 + timestamp: 1733739661152 - kind: conda name: aws-c-s3 version: 0.7.5 - build: h3c51cf6_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.5-h3c51cf6_2.conda - sha256: 98a2df8a5068183e55b4c6914a3513d403300be20c960842a9a229546b8e8e52 - md5: e326ddae95b3ec96a31aded04c834175 + build: h55e9418_4 + build_number: 4 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.5-h55e9418_4.conda + sha256: 04d7fd3574fa76c184f04630125a760afa4ae5d4109eec36f22fe127cc85e164 + md5: faec629f0eb306cfe17ed1615249e188 depends: + - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-common >=0.10.5,<0.10.6.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 @@ -1578,22 +1571,21 @@ packages: - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 117896 - timestamp: 1733694002769 + size: 113811 + timestamp: 1733717653326 - kind: conda name: aws-c-s3 version: 0.7.5 - build: h6ad95d4_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.5-h6ad95d4_2.conda - sha256: 103a478b18ead8f79aae9a4966b2879e9fbcfb0aa3b2e6c9b2811a76ba34610e - md5: 682c079ec089d47bb7142f12b3275e4f + build: h757e810_4 + build_number: 4 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.5-h757e810_4.conda + sha256: 3da5e1b88d68c5cb2eb1dd898a7c6192be9e1df0bd2733d39d6c0ffe9fc546a2 + md5: 96a657e5856e9e92755170630067f63c depends: - - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-common >=0.10.5,<0.10.6.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 @@ -1601,166 +1593,165 @@ packages: - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 113741 - timestamp: 1733693956970 + size: 117478 + timestamp: 1733717680655 - kind: conda name: aws-c-s3 version: 0.7.5 - build: hca3a6f1_2 - build_number: 2 + build: hb201fd0_4 + build_number: 4 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.5-hca3a6f1_2.conda - sha256: 53c4dc6e360ed6e1242c20fa43f7bfe67a41215e51cafab27dbd8aa91333040c - md5: 0b4e647cae3ce85ec991c6e3b8d12bda + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.5-hb201fd0_4.conda + sha256: c25c62173770b681083962b497a927f306e7f3d05b459dd59e4c12eaf49e9f0b + md5: 83b9775bbe5419cf4916e646e870b87a depends: - __osx >=11.0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-common >=0.10.5,<0.10.6.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 license: Apache-2.0 license_family: Apache - size: 97530 - timestamp: 1733694097526 + size: 97441 + timestamp: 1733717822438 - kind: conda name: aws-c-sdkutils version: 0.2.1 - build: h4c7db1d_1 - build_number: 1 + build: h10558d5_3 + build_number: 3 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.1-h4c7db1d_1.conda - sha256: 3d2b079a361888197894308a93fec95666c6abfcc86c979ae36f1f9cb223dfb3 - md5: 45437a9bad358b25f795e77218063baf + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.1-h10558d5_3.conda + sha256: 0f6a15d711bc4d6b2d2b8451ad46bf78af6876235ad56bf142644a4ce2240f52 + md5: 1ba505fc4243ad75507efa8976e1790f depends: - - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-common >=0.10.5,<0.10.6.0a0 - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 58256 - timestamp: 1731687032896 + size: 58123 + timestamp: 1733398238726 - kind: conda name: aws-c-sdkutils version: 0.2.1 - build: h5d7ee29_1 - build_number: 1 + build: h4d88cd7_3 + build_number: 3 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.1-h5d7ee29_1.conda - sha256: ed3b272b9a345142e62f0cf9ab2a9fa909c92e09691f6a06e98ff500a1f8a303 - md5: 0f1e5bc57d4567c9d9bec8d8982828ed + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.1-h4d88cd7_3.conda + sha256: a94ecde4e61de8effd9c93ba3527eb010773b5422d2d079ffdcd796ec77fcd4e + md5: 5ec333d73530fbfc2db670eeb6911bff depends: - __osx >=11.0 - - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-common >=0.10.5,<0.10.6.0a0 license: Apache-2.0 license_family: Apache - size: 50276 - timestamp: 1731687215375 + size: 49739 + timestamp: 1733398400904 - kind: conda name: aws-c-sdkutils version: 0.2.1 - build: hf42f96a_1 - build_number: 1 + build: h9cc6398_3 + build_number: 3 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.1-hf42f96a_1.conda - sha256: f6e38c79b124c34edb048c28ec58fdfc4ea8f7a218dc493195afbada48ba063b - md5: bbdd20fb1994a9f0ba98078fcb6c12ab + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.1-h9cc6398_3.conda + sha256: 917f679da38f162e191c5d6817b35fbf2ae0584b1d335bc229fd01e6077108ee + md5: 10bdb7fc3763760dcea1cd908ece6b2b depends: - __glibc >=2.17,<3.0.a0 - - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-common >=0.10.5,<0.10.6.0a0 - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 55738 - timestamp: 1731687063424 + size: 55864 + timestamp: 1733398187914 - kind: conda name: aws-checksums version: 0.2.2 - build: h4c7db1d_1 - build_number: 1 + build: h10558d5_3 + build_number: 3 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h4c7db1d_1.conda - sha256: b3fa060d4fe9e8fdb7b21b8b3c5fdb61df6f02973f74245a65869100f72a3931 - md5: af22e7e1c1af348a66f938aa66192f2c + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h10558d5_3.conda + sha256: 108860ae5d61a4dc0b0d91282d0171ba7fd69686c11b4bcbdcd3f8b8efc98adb + md5: 1ded47669f79301e4a3d1d3d469494c0 depends: - - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-common >=0.10.5,<0.10.6.0a0 - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 72081 - timestamp: 1731687244426 + size: 72203 + timestamp: 1733398350602 - kind: conda name: aws-checksums version: 0.2.2 - build: h5d7ee29_1 - build_number: 1 + build: h4d88cd7_3 + build_number: 3 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-h5d7ee29_1.conda - sha256: eb7ebe309b33a04329b3e51a7f10bb407815389dc37cc047f7d41f9c91f0d1b0 - md5: db1ed95988a8fe6c1ce0d94abdfc8e72 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-h4d88cd7_3.conda + sha256: 7d0d71e399fa6b0a1e686470d4a982396a9d0d29be29bf07591d83739cc29a0a + md5: 45409e27b510588196b9f116f86c2d51 depends: - __osx >=11.0 - - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-common >=0.10.5,<0.10.6.0a0 license: Apache-2.0 license_family: Apache - size: 70184 - timestamp: 1731687342560 + size: 70160 + timestamp: 1733398484776 - kind: conda name: aws-checksums version: 0.2.2 - build: hf42f96a_1 - build_number: 1 + build: h9cc6398_3 + build_number: 3 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-hf42f96a_1.conda - sha256: da802ace5448481c968cfec7e7a4f79f686f42df9de8e3f78c09a925c2882a79 - md5: d908d43d87429be24edfb20e96543c20 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-h9cc6398_3.conda + sha256: a3aea2fc8ccf85ae64c5ce9c4e507be37173b94909191480e5151c482a220e40 + md5: d6dd8b87b95195d8d26893611d94ba3b depends: - __glibc >=2.17,<3.0.a0 - - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-common >=0.10.5,<0.10.6.0a0 - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 72744 - timestamp: 1731687193373 + size: 72681 + timestamp: 1733398331530 - kind: conda name: aws-crt-cpp version: 0.29.7 - build: h318f0b1_3 - build_number: 3 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.7-h318f0b1_3.conda - sha256: 35100ad81adf31aa4e73ac2956e9a8ff277cc57d0db2db2f0e9c51012175eadd - md5: 9748d0527695a64aa2eb45e891ea188d + build: hb9a023b_5 + build_number: 5 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.7-hb9a023b_5.conda + sha256: d1d89918a1f6e08f16275d82218b2f73012cee2def3ad8f1a8d28af7497e66cc + md5: 70a976e616535dbab5e1f354734a238a depends: - - __glibc >=2.17,<3.0.a0 + - __osx >=11.0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-common >=0.10.5,<0.10.6.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - aws-c-s3 >=0.7.5,<0.7.6.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - - libgcc >=13 - - libstdcxx >=13 + - libcxx >=18 license: Apache-2.0 license_family: Apache - size: 355045 - timestamp: 1733744656604 + size: 236182 + timestamp: 1733767086227 - kind: conda name: aws-crt-cpp version: 0.29.7 - build: hacb6b83_3 - build_number: 3 + build: hc8d91e0_5 + build_number: 5 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.7-hacb6b83_3.conda - sha256: 6c0ece3ca494c2220fc052e608d52ea52bb361e536a14a1b3b36ebeede9de8b9 - md5: 27ce3ed5b7e55370a9fea2dda2b3245a + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.7-hc8d91e0_5.conda + sha256: c3be4f3f77ac7ba716228df1099eb68a5e7a4cbbe386a4732a28f33d6b780cc4 + md5: 8f14e3d651a08c9b2f85c6e5d359e250 depends: - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-common >=0.10.5,<0.10.6.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 @@ -1771,44 +1762,45 @@ packages: - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 283993 - timestamp: 1733744571881 + size: 284313 + timestamp: 1733766768643 - kind: conda name: aws-crt-cpp version: 0.29.7 - build: hc2c2bbc_3 - build_number: 3 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.7-hc2c2bbc_3.conda - sha256: 6a519151e7fa71fbc9d1cd3a526ea7591638af058a6cc0534e1cd418fd48b354 - md5: 5450324f7b48dff1f6ed5484bf830972 + build: hed26007_5 + build_number: 5 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.7-hed26007_5.conda + sha256: f996cb94f3ef212792f288a0f7c5201ac7f00bb43502702b76e408e50d80132f + md5: 7c64e4ac7a484fc525a4ce7b9baf709a depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-common >=0.10.5,<0.10.6.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - aws-c-s3 >=0.7.5,<0.7.6.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - - libcxx >=18 + - libgcc >=13 + - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 236331 - timestamp: 1733744737078 + size: 354783 + timestamp: 1733766766977 - kind: conda name: aws-sdk-cpp version: 1.11.458 - build: h5e41cbe_1 - build_number: 1 + build: h2d3f608_3 + build_number: 3 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h5e41cbe_1.conda - sha256: b45305787a78f2bf7ecabc401b5bfe451509b434dd041a0a554572a70302d2f3 - md5: 1861b1fb86b336f1f53faaac5a76046c + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h2d3f608_3.conda + sha256: b335dfee7b04117ddae857564300ed6795718e2305141c7d631dcc434503a261 + md5: 57bdfac803ce58e3a3256752d7e5aa6e depends: - - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-common >=0.10.5,<0.10.6.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - aws-crt-cpp >=0.29.7,<0.29.8.0a0 @@ -1819,55 +1811,55 @@ packages: - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 2910575 - timestamp: 1733576378398 + size: 2896174 + timestamp: 1733808114676 - kind: conda name: aws-sdk-cpp version: 1.11.458 - build: hac138a2_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-hac138a2_1.conda - sha256: fdb9c94d7524c52837643428b1aab4f35bed3ba2862a57e1b03e63038c7c146f - md5: bbdd9589b1a32a80b0e3f98a2a482542 + build: h39838b8_3 + build_number: 3 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-h39838b8_3.conda + sha256: b5ef3a956937d61b59b9dd4b8c23eeb0bc254c37a97028a50c3ff6c8df399deb + md5: 3a6c8f65692febdf791bece561b371c8 depends: - - __glibc >=2.17,<3.0.a0 - - aws-c-common >=0.10.3,<0.10.4.0a0 + - __osx >=11.0 + - aws-c-common >=0.10.5,<0.10.6.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - aws-crt-cpp >=0.29.7,<0.29.8.0a0 - libcurl >=8.10.1,<9.0a0 - - libgcc >=13 - - libstdcxx >=13 + - libcxx >=18 - libzlib >=1.3.1,<2.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 3071464 - timestamp: 1733576251149 + size: 2837854 + timestamp: 1733808787914 - kind: conda name: aws-sdk-cpp version: 1.11.458 - build: he4d6490_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-he4d6490_1.conda - sha256: 61abc03dfbe372b258b8b6790bf3ad3a3265e02ce24b6b22bfe8f2fcab94954a - md5: 2941213b750689ace0862a6d695bb740 + build: h571fd1c_3 + build_number: 3 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-h571fd1c_3.conda + sha256: c2f38374a6f4dd804f76c8a071bc7f7d37dfb43e194eb93a473ff789460c011b + md5: 374cf1add8af327b15b1b1e4873f4955 depends: - - __osx >=11.0 - - aws-c-common >=0.10.3,<0.10.4.0a0 + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.5,<0.10.6.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - aws-crt-cpp >=0.29.7,<0.29.8.0a0 - libcurl >=8.10.1,<9.0a0 - - libcxx >=18 + - libgcc >=13 + - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 2847256 - timestamp: 1733576733615 + size: 3062994 + timestamp: 1733808211748 - kind: conda name: azure-core-cpp version: 1.14.0 @@ -2146,18 +2138,19 @@ packages: - kind: conda name: backoff version: 2.2.1 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/backoff-2.2.1-pyhd8ed1ab_0.tar.bz2 - sha256: b1cf7df15741e5fbc57e22a3a89db427383335aaab22ddc1b30710deeb0130de - md5: 4600709bd85664d8606ae0c76642f8db + url: https://conda.anaconda.org/conda-forge/noarch/backoff-2.2.1-pyhd8ed1ab_1.conda + sha256: f334115c6b0c6c2cd0d28595365f205ec7eaa60bcc5ff91a75d7245f728be820 + md5: a38b801f2bcc12af80c2e02a9e4ce7d9 depends: - - python >=3.7 + - python >=3.9 license: MIT license_family: MIT - size: 17501 - timestamp: 1665004860081 + size: 18816 + timestamp: 1733771192649 - kind: conda name: brotli-python version: 1.1.0 @@ -2348,89 +2341,89 @@ packages: timestamp: 1725019034582 - kind: conda name: cairo - version: 1.18.0 - build: hdb1a16f_3 - build_number: 3 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/cairo-1.18.0-hdb1a16f_3.conda - sha256: 8a747ad6ce32228a85c80bef8ec7387d71f8d2b0bf637edb56ff33e09794c616 - md5: 080659f02bf2202c57f1cda4f9e51f21 + version: 1.18.2 + build: h3394656_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.2-h3394656_1.conda + sha256: de7d0d094e53decc005cb13e527be2635b8f604978da497d4c0d282c7dc08385 + md5: b34c2833a1f56db610aeb27f206d800d depends: - - fontconfig >=2.14.2,<3.0a0 + - __glibc >=2.17,<3.0.a0 + - fontconfig >=2.15.0,<3.0a0 - fonts-conda-ecosystem - freetype >=2.12.1,<3.0a0 - icu >=75.1,<76.0a0 - - libgcc-ng >=12 - - libglib >=2.80.3,<3.0a0 - - libpng >=1.6.43,<1.7.0a0 - - libstdcxx-ng >=12 - - libxcb >=1.16,<2.0.0a0 + - libexpat >=2.6.4,<3.0a0 + - libgcc >=13 + - libglib >=2.82.2,<3.0a0 + - libpng >=1.6.44,<1.7.0a0 + - libstdcxx >=13 + - libxcb >=1.17.0,<2.0a0 - libzlib >=1.3.1,<2.0a0 - - pixman >=0.43.4,<1.0a0 + - pixman >=0.44.2,<1.0a0 - xorg-libice >=1.1.1,<2.0a0 - xorg-libsm >=1.2.4,<2.0a0 - - xorg-libx11 >=1.8.9,<2.0a0 - - xorg-libxext >=1.3.4,<2.0a0 + - xorg-libx11 >=1.8.10,<2.0a0 + - xorg-libxext >=1.3.6,<2.0a0 - xorg-libxrender >=0.9.11,<0.10.0a0 - - zlib license: LGPL-2.1-only or MPL-1.1 - size: 966709 - timestamp: 1721138947987 + size: 978868 + timestamp: 1733790976384 - kind: conda name: cairo - version: 1.18.0 - build: hebfffa5_3 - build_number: 3 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.0-hebfffa5_3.conda - sha256: aee5b9e6ef71cdfb2aee9beae3ea91910ca761c01c0ef32052e3f94a252fa173 - md5: fceaedf1cdbcb02df9699a0d9b005292 + version: 1.18.2 + build: h6a3b0d2_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/cairo-1.18.2-h6a3b0d2_1.conda + sha256: 9a28344e806b89c87fda0cdabd2fb961e5d2ff97107dba25bac9f5dc57220cc3 + md5: 8e3666c3f6e2c3e57aa261ab103a3600 depends: - - __glibc >=2.17,<3.0.a0 - - fontconfig >=2.14.2,<3.0a0 + - __osx >=11.0 + - fontconfig >=2.15.0,<3.0a0 - fonts-conda-ecosystem - freetype >=2.12.1,<3.0a0 - icu >=75.1,<76.0a0 - - libgcc-ng >=12 - - libglib >=2.80.3,<3.0a0 - - libpng >=1.6.43,<1.7.0a0 - - libstdcxx-ng >=12 - - libxcb >=1.16,<2.0.0a0 + - libcxx >=18 + - libexpat >=2.6.4,<3.0a0 + - libglib >=2.82.2,<3.0a0 + - libpng >=1.6.44,<1.7.0a0 - libzlib >=1.3.1,<2.0a0 - - pixman >=0.43.2,<1.0a0 - - xorg-libice >=1.1.1,<2.0a0 - - xorg-libsm >=1.2.4,<2.0a0 - - xorg-libx11 >=1.8.9,<2.0a0 - - xorg-libxext >=1.3.4,<2.0a0 - - xorg-libxrender >=0.9.11,<0.10.0a0 - - zlib + - pixman >=0.44.2,<1.0a0 license: LGPL-2.1-only or MPL-1.1 - size: 983604 - timestamp: 1721138900054 + size: 894517 + timestamp: 1733791145035 - kind: conda name: cairo version: 1.18.2 - build: h6a3b0d2_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/cairo-1.18.2-h6a3b0d2_0.conda - sha256: fe941b50a60edb664f22de5fe48251c8b9fd2e844f6e35d7535e28a5d4f4f894 - md5: 830793d58ec68f117c51e1d8d6e2133a + build: h83712da_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/cairo-1.18.2-h83712da_1.conda + sha256: 0353e175859c4989251628e4c8f9fb2dc52546b0c031ffe4541eb087ac586573 + md5: e7b46975d2c9a4666da0e9bb8a087f28 depends: - - __osx >=11.0 - fontconfig >=2.15.0,<3.0a0 - fonts-conda-ecosystem - freetype >=2.12.1,<3.0a0 - icu >=75.1,<76.0a0 - - libcxx >=18 - libexpat >=2.6.4,<3.0a0 + - libgcc >=13 - libglib >=2.82.2,<3.0a0 - libpng >=1.6.44,<1.7.0a0 + - libstdcxx >=13 + - libxcb >=1.17.0,<2.0a0 - libzlib >=1.3.1,<2.0a0 - - pixman >=0.43.4,<1.0a0 - - zlib + - pixman >=0.44.2,<1.0a0 + - xorg-libice >=1.1.1,<2.0a0 + - xorg-libsm >=1.2.4,<2.0a0 + - xorg-libx11 >=1.8.10,<2.0a0 + - xorg-libxext >=1.3.6,<2.0a0 + - xorg-libxrender >=0.9.11,<0.10.0a0 license: LGPL-2.1-only or MPL-1.1 - size: 894944 - timestamp: 1733698883301 + size: 980455 + timestamp: 1733791018944 - kind: conda name: certifi version: 2024.8.30 @@ -3479,68 +3472,68 @@ packages: timestamp: 1733298867359 - kind: conda name: harfbuzz - version: 9.0.0 - build: h997cde5_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/harfbuzz-9.0.0-h997cde5_1.conda - sha256: 5f78f5dcbbfef59b3549ecb6cc2fa9de7b22abda7c8afaf0fa787ceea37a914f - md5: 50f6825d3c4a6fca6fefdefa98081554 + version: 10.1.0 + build: h0b3b770_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-10.1.0-h0b3b770_0.conda + sha256: da2b3b3c1fc34444fa484ed227e4c2d313cdff2ed3ce5a45d01f07b78f9273f8 + md5: ab1d7d56034814f4c3ed9f69f8c68806 depends: - - __osx >=11.0 - - cairo >=1.18.0,<2.0a0 + - __glibc >=2.17,<3.0.a0 + - cairo >=1.18.2,<2.0a0 - freetype >=2.12.1,<3.0a0 - graphite2 - icu >=75.1,<76.0a0 - - libcxx >=16 - - libglib >=2.80.3,<3.0a0 + - libexpat >=2.6.4,<3.0a0 + - libgcc >=13 + - libglib >=2.82.2,<3.0a0 + - libstdcxx >=13 license: MIT license_family: MIT - size: 1317509 - timestamp: 1721186764931 + size: 1600521 + timestamp: 1733706966476 - kind: conda name: harfbuzz - version: 9.0.0 - build: hbf49d6b_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/harfbuzz-9.0.0-hbf49d6b_1.conda - sha256: 7496782c3bc0ebbb4de9bc92a3111f42b8a57417fa31ecb87058f250215fabc9 - md5: ceb458f664cab8550fcd74fff26451db + version: 10.1.0 + build: h9df47df_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/harfbuzz-10.1.0-h9df47df_0.conda + sha256: 8b56a8e0847a2a86a80211f5c5e4f19d0d7fa0be12cc1a5337e555857757cc6d + md5: bbd10a18fb41d0892fbb3aa810b4937d depends: - - cairo >=1.18.0,<2.0a0 + - __osx >=11.0 + - cairo >=1.18.2,<2.0a0 - freetype >=2.12.1,<3.0a0 - graphite2 - icu >=75.1,<76.0a0 - - libgcc-ng >=12 - - libglib >=2.80.3,<3.0a0 - - libstdcxx-ng >=12 + - libcxx >=18 + - libexpat >=2.6.4,<3.0a0 + - libglib >=2.82.2,<3.0a0 license: MIT license_family: MIT - size: 1614644 - timestamp: 1721188789883 + size: 1357252 + timestamp: 1733707517728 - kind: conda name: harfbuzz - version: 9.0.0 - build: hda332d3_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-9.0.0-hda332d3_1.conda - sha256: 973afa37840b4e55e2540018902255cfb0d953aaed6353bb83a4d120f5256767 - md5: 76b32dcf243444aea9c6b804bcfa40b8 + version: 10.1.0 + build: hbdc1db7_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/harfbuzz-10.1.0-hbdc1db7_0.conda + sha256: 69a269f04f72632f5949e422c2ff673e408a76a9bf451e4e4e58a0996e1e8e65 + md5: 881e8d9b31e1a7335d4dea4d66851bc0 depends: - - __glibc >=2.17,<3.0.a0 - - cairo >=1.18.0,<2.0a0 + - cairo >=1.18.2,<2.0a0 - freetype >=2.12.1,<3.0a0 - graphite2 - icu >=75.1,<76.0a0 - - libgcc-ng >=12 - - libglib >=2.80.3,<3.0a0 - - libstdcxx-ng >=12 + - libexpat >=2.6.4,<3.0a0 + - libgcc >=13 + - libglib >=2.82.2,<3.0a0 + - libstdcxx >=13 license: MIT license_family: MIT - size: 1603653 - timestamp: 1721186240105 + size: 1626591 + timestamp: 1733709685847 - kind: conda name: hpack version: 4.0.0 @@ -3651,25 +3644,26 @@ packages: - kind: conda name: huggingface_hub version: 0.26.5 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.5-pyhd8ed1ab_0.conda - sha256: bdbf614d87155c7f9b8fe9c3d039528298119832e9f52959b15c522a9841eef7 - md5: 37236111cd92068e5af2f98cbb476642 + url: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.5-pyhd8ed1ab_1.conda + sha256: 0c75532d914a04c73222be298ed2c6868739dd475b1b1a9137c52abe79873952 + md5: 73937038e21117fe401f8ea64fbaeacc depends: - filelock - fsspec >=2023.5.0 - packaging >=20.9 - - python >=3.8 + - python >=3.9 - pyyaml >=5.1 - requests - tqdm >=4.42.1 - typing-extensions >=3.7.4.3 - typing_extensions >=3.7.4.3 license: Apache-2.0 - size: 274900 - timestamp: 1733637007500 + size: 275466 + timestamp: 1733852454004 - kind: conda name: hyperframe version: 6.0.1 @@ -4168,14 +4162,13 @@ packages: - kind: conda name: libarrow version: 18.1.0 - build: h3b07799_4_cpu - build_number: 4 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-h3b07799_4_cpu.conda - sha256: 8837dc6e60522eef63554654c45d18143006324c43391c6e8dc5d2b20997466d - md5: 27675c7172667268440306533e4928de + build: h1b535d6_6_cpu + build_number: 6 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-h1b535d6_6_cpu.conda + sha256: 087b579aebf351ca41c54214121d86a15a41c92051cbd432d6f3a3f58a8c31b0 + md5: 4c0ad68efba1113ac5833975c67b565d depends: - - __glibc >=2.17,<3.0.a0 - aws-crt-cpp >=0.29.7,<0.29.8.0a0 - aws-sdk-cpp >=1.11.458,<1.11.459.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 @@ -4190,36 +4183,35 @@ packages: - libbrotlidec >=1.1.0,<1.2.0a0 - libbrotlienc >=1.1.0,<1.2.0a0 - libgcc >=13 - - libgoogle-cloud >=2.31.0,<2.32.0a0 - - libgoogle-cloud-storage >=2.31.0,<2.32.0a0 + - libgoogle-cloud >=2.32.0,<2.33.0a0 + - libgoogle-cloud-storage >=2.32.0,<2.33.0a0 - libre2-11 >=2024.7.2 - libstdcxx >=13 - libutf8proc >=2.9.0,<2.10.0a0 - libzlib >=1.3.1,<2.0a0 - - lz4-c >=1.9.3,<1.10.0a0 + - lz4-c >=1.10.0,<1.11.0a0 - orc >=2.0.3,<2.0.4.0a0 - re2 - snappy >=1.2.1,<1.3.0a0 - zstd >=1.5.6,<1.6.0a0 constrains: - parquet-cpp <0.0a0 - - apache-arrow-proc =*=cpu - arrow-cpp <0.0a0 + - apache-arrow-proc =*=cpu license: Apache-2.0 - license_family: APACHE - size: 8793521 - timestamp: 1733607374384 + size: 8040629 + timestamp: 1733810319239 - kind: conda name: libarrow version: 18.1.0 - build: h86d57b8_4_cpu - build_number: 4 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-h86d57b8_4_cpu.conda - sha256: fe6b5eb4d6e71418343b62a0d322ede7be69999b28d9e492164c12e613cf3fa0 - md5: 23431b3fdbb32858d1533da5bc8fcc86 + build: h44a453e_6_cpu + build_number: 6 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-h44a453e_6_cpu.conda + sha256: abf17e99b03356a9d6248e965826c1352ff01b00d3a62cc51393bb0744d72803 + md5: 2cf6d608d6e66506f69797d5c6944c35 depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 - aws-crt-cpp >=0.29.7,<0.29.8.0a0 - aws-sdk-cpp >=1.11.458,<1.11.459.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 @@ -4227,40 +4219,42 @@ packages: - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 - bzip2 >=1.0.8,<2.0a0 + - gflags >=2.2.2,<2.3.0a0 - glog >=0.7.1,<0.8.0a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - libbrotlidec >=1.1.0,<1.2.0a0 - libbrotlienc >=1.1.0,<1.2.0a0 - - libcxx >=18 - - libgoogle-cloud >=2.31.0,<2.32.0a0 - - libgoogle-cloud-storage >=2.31.0,<2.32.0a0 + - libgcc >=13 + - libgoogle-cloud >=2.32.0,<2.33.0a0 + - libgoogle-cloud-storage >=2.32.0,<2.33.0a0 - libre2-11 >=2024.7.2 + - libstdcxx >=13 - libutf8proc >=2.9.0,<2.10.0a0 - libzlib >=1.3.1,<2.0a0 - - lz4-c >=1.9.3,<1.10.0a0 + - lz4-c >=1.10.0,<1.11.0a0 - orc >=2.0.3,<2.0.4.0a0 - re2 - snappy >=1.2.1,<1.3.0a0 - zstd >=1.5.6,<1.6.0a0 constrains: - parquet-cpp <0.0a0 - - apache-arrow-proc =*=cpu - arrow-cpp <0.0a0 + - apache-arrow-proc =*=cpu license: Apache-2.0 - license_family: APACHE - size: 5482797 - timestamp: 1733605365656 + size: 8786061 + timestamp: 1733810643966 - kind: conda name: libarrow version: 18.1.0 - build: ha2aff55_4_cpu - build_number: 4 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-ha2aff55_4_cpu.conda - sha256: 795950b73029fd4d3b7fee3427c39c7357287fd94244dd5a125ac0931d31aaa3 - md5: c4d60278cb00053df1a4f0600fd2ac2a + build: h4a2f8bd_6_cpu + build_number: 6 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-h4a2f8bd_6_cpu.conda + sha256: 9ed3ea1bc15005c0df187268ef91407afaa908cf82f36f5acbbf50ac24d7f806 + md5: 835cdd84195b84dc34d128bd5d3580b9 depends: + - __osx >=11.0 - aws-crt-cpp >=0.29.7,<0.29.8.0a0 - aws-sdk-cpp >=1.11.458,<1.11.459.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 @@ -4268,209 +4262,197 @@ packages: - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 - bzip2 >=1.0.8,<2.0a0 - - gflags >=2.2.2,<2.3.0a0 - glog >=0.7.1,<0.8.0a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - libbrotlidec >=1.1.0,<1.2.0a0 - libbrotlienc >=1.1.0,<1.2.0a0 - - libgcc >=13 - - libgoogle-cloud >=2.31.0,<2.32.0a0 - - libgoogle-cloud-storage >=2.31.0,<2.32.0a0 + - libcxx >=18 + - libgoogle-cloud >=2.32.0,<2.33.0a0 + - libgoogle-cloud-storage >=2.32.0,<2.33.0a0 - libre2-11 >=2024.7.2 - - libstdcxx >=13 - libutf8proc >=2.9.0,<2.10.0a0 - libzlib >=1.3.1,<2.0a0 - - lz4-c >=1.9.3,<1.10.0a0 + - lz4-c >=1.10.0,<1.11.0a0 - orc >=2.0.3,<2.0.4.0a0 - re2 - snappy >=1.2.1,<1.3.0a0 - zstd >=1.5.6,<1.6.0a0 constrains: - - parquet-cpp <0.0a0 - apache-arrow-proc =*=cpu - arrow-cpp <0.0a0 + - parquet-cpp <0.0a0 license: Apache-2.0 - license_family: APACHE - size: 8035987 - timestamp: 1733607600970 -- kind: conda - name: libarrow-acero - version: 18.1.0 - build: h1dc2043_4_cpu - build_number: 4 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-h1dc2043_4_cpu.conda - sha256: fe8cb6feeed0858cb8e7cc8889ae20165527934778adb8f7b1f2f5d1f7ade16d - md5: e4ed6162593fbb01f4d742db4215f70c - depends: - - __osx >=11.0 - - libarrow 18.1.0 h86d57b8_4_cpu - - libcxx >=18 - license: Apache-2.0 - license_family: APACHE - size: 483574 - timestamp: 1733605591770 + size: 5494797 + timestamp: 1733808145854 - kind: conda name: libarrow-acero version: 18.1.0 - build: h512cd83_4_cpu - build_number: 4 + build: h3b568fd_6_cpu + build_number: 6 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h512cd83_4_cpu.conda - sha256: 9e88f04409da9ca2fedc5f7bf0987ff28e96d08742e59672f744ec4624a4c991 - md5: d532c42abe13841806d97f4d9cd6dcf5 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h3b568fd_6_cpu.conda + sha256: fdb70e2499e59b730084ecd53008b361a6f6090b5fb49624feda06b7e84c7b8c + md5: c50907eefe2ae22d826e7cb2e4d712f5 depends: - - libarrow 18.1.0 ha2aff55_4_cpu + - libarrow 18.1.0 h1b535d6_6_cpu - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 - license_family: APACHE - size: 578174 - timestamp: 1733607685962 + size: 578091 + timestamp: 1733810378092 - kind: conda name: libarrow-acero version: 18.1.0 - build: h8bbc2ab_4_cpu - build_number: 4 + build: hcb10f89_6_cpu + build_number: 6 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-h8bbc2ab_4_cpu.conda - sha256: b3b4ddb2718c96c93d9b50dbf8f66265af9198b55852b4d3424c13a79ec3f84d - md5: 82bcbfe424868ce66b5ab986999f534d + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-hcb10f89_6_cpu.conda + sha256: a32fa1d71415afc02b5cf3cd4c0a6ec0af9e749308829cc65ff79689222ce479 + md5: 143f9288b64759a6427563f058c62f2b depends: - __glibc >=2.17,<3.0.a0 - - libarrow 18.1.0 h3b07799_4_cpu + - libarrow 18.1.0 h44a453e_6_cpu - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 - license_family: APACHE - size: 610772 - timestamp: 1733607505368 + size: 611745 + timestamp: 1733810698469 - kind: conda - name: libarrow-dataset + name: libarrow-acero version: 18.1.0 - build: h1dc2043_4_cpu - build_number: 4 + build: hf07054f_6_cpu + build_number: 6 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-h1dc2043_4_cpu.conda - sha256: 862fb21b871666495b4bb5e63f5fcb66b93c08893e92412b01e2717e081836eb - md5: bb940b4c583e4c8e5a9f193fabdb5840 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-hf07054f_6_cpu.conda + sha256: e1cae46409927470439ef9ae93ed09b3493d0579501ca9ebfa79ded212ee98d8 + md5: 97fc01254714e1572624baefdd7cc898 depends: - __osx >=11.0 - - libarrow 18.1.0 h86d57b8_4_cpu - - libarrow-acero 18.1.0 h1dc2043_4_cpu + - libarrow 18.1.0 h4a2f8bd_6_cpu - libcxx >=18 - - libparquet 18.1.0 hf4cc9e7_4_cpu license: Apache-2.0 - license_family: APACHE - size: 489457 - timestamp: 1733607417337 + size: 483713 + timestamp: 1733808246880 - kind: conda name: libarrow-dataset version: 18.1.0 - build: h512cd83_4_cpu - build_number: 4 + build: h3b568fd_6_cpu + build_number: 6 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h512cd83_4_cpu.conda - sha256: 4a9ffedc5570ce57a6864e46dcf36ec108557791b50fd43e82eb739f3717ff2f - md5: 1a6c409f45857d30f581a1a53abb2298 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h3b568fd_6_cpu.conda + sha256: 2a08f5a1017ff660c37ae0c24343a119cb2511c6edd69e23d0a5090a0967ea35 + md5: bb1548ad011c4f9107fcc4cc548473bf depends: - - libarrow 18.1.0 ha2aff55_4_cpu - - libarrow-acero 18.1.0 h512cd83_4_cpu + - libarrow 18.1.0 h1b535d6_6_cpu + - libarrow-acero 18.1.0 h3b568fd_6_cpu - libgcc >=13 - - libparquet 18.1.0 h34a048e_4_cpu + - libparquet 18.1.0 hfc78867_6_cpu - libstdcxx >=13 license: Apache-2.0 - license_family: APACHE - size: 561495 - timestamp: 1733607973097 + size: 559673 + timestamp: 1733810461646 - kind: conda name: libarrow-dataset version: 18.1.0 - build: h8bbc2ab_4_cpu - build_number: 4 + build: hcb10f89_6_cpu + build_number: 6 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-h8bbc2ab_4_cpu.conda - sha256: 9c898ab7377953b8c7218347fdb63376d4f977cabfb8fa6bd1b421a75b8cb335 - md5: fa31464c75b20c2f3ac8fc758e034887 + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-hcb10f89_6_cpu.conda + sha256: 74eeb178070002842d3ed721769399320e3a68a0843319eaf899a092a31def26 + md5: 20ca46a6bc714a6ab189d5b3f46e66d8 depends: - __glibc >=2.17,<3.0.a0 - - libarrow 18.1.0 h3b07799_4_cpu - - libarrow-acero 18.1.0 h8bbc2ab_4_cpu + - libarrow 18.1.0 h44a453e_6_cpu + - libarrow-acero 18.1.0 hcb10f89_6_cpu - libgcc >=13 - - libparquet 18.1.0 hf4f6db6_4_cpu + - libparquet 18.1.0 h081d1f1_6_cpu - libstdcxx >=13 license: Apache-2.0 - license_family: APACHE - size: 585517 - timestamp: 1733607943984 + size: 586627 + timestamp: 1733810842604 +- kind: conda + name: libarrow-dataset + version: 18.1.0 + build: hf07054f_6_cpu + build_number: 6 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-hf07054f_6_cpu.conda + sha256: 6eba942ce926419f74e6e0a7c3994a7d78ab6be47115e6bb70e02136554736be + md5: 0774276be6659aaa0007f1b0f6ee19b0 + depends: + - __osx >=11.0 + - libarrow 18.1.0 h4a2f8bd_6_cpu + - libarrow-acero 18.1.0 hf07054f_6_cpu + - libcxx >=18 + - libparquet 18.1.0 h636d7b7_6_cpu + license: Apache-2.0 + size: 489948 + timestamp: 1733809328231 - kind: conda name: libarrow-substrait version: 18.1.0 - build: h3644d33_4_cpu - build_number: 4 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h3644d33_4_cpu.conda - sha256: ac053b3efd1a2701e6f34195d90a0da21dca22d70916ae6b10a019c2be6cd44c - md5: ce3062cd5caa0bdafa7976535862e648 + build: h3ee7192_6_cpu + build_number: 6 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-h3ee7192_6_cpu.conda + sha256: bda6728db019dd0c409b1996ad9ef6ab0bcee3a94dc66a8045e8c1049c566055 + md5: aa313b3168caf98d00b3753f5ba27650 depends: + - __glibc >=2.17,<3.0.a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.1.0 ha2aff55_4_cpu - - libarrow-acero 18.1.0 h512cd83_4_cpu - - libarrow-dataset 18.1.0 h512cd83_4_cpu + - libarrow 18.1.0 h44a453e_6_cpu + - libarrow-acero 18.1.0 hcb10f89_6_cpu + - libarrow-dataset 18.1.0 hcb10f89_6_cpu - libgcc >=13 - libprotobuf >=5.28.2,<5.28.3.0a0 - libstdcxx >=13 license: Apache-2.0 - license_family: APACHE - size: 513745 - timestamp: 1733608111290 + size: 519989 + timestamp: 1733810903274 - kind: conda name: libarrow-substrait version: 18.1.0 - build: had74209_4_cpu - build_number: 4 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-had74209_4_cpu.conda - sha256: 29e44d6070d64cd4b357e02afeae233d2e90d917a008a2724c9cd463015f0319 - md5: bf261e5fa25ce4acc11a80bdc73b88b2 + build: h3ffb4b1_6_cpu + build_number: 6 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h3ffb4b1_6_cpu.conda + sha256: 9f78c55c5d7122e588a6f226cbf7e909c479d66ed18edc633d68324323d386b9 + md5: 5db2e6832397b8ca70a6f7b00e0c3629 depends: - - __glibc >=2.17,<3.0.a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.1.0 h3b07799_4_cpu - - libarrow-acero 18.1.0 h8bbc2ab_4_cpu - - libarrow-dataset 18.1.0 h8bbc2ab_4_cpu + - libarrow 18.1.0 h1b535d6_6_cpu + - libarrow-acero 18.1.0 h3b568fd_6_cpu + - libarrow-dataset 18.1.0 h3b568fd_6_cpu - libgcc >=13 - libprotobuf >=5.28.2,<5.28.3.0a0 - libstdcxx >=13 license: Apache-2.0 - license_family: APACHE - size: 519919 - timestamp: 1733608152065 + size: 515928 + timestamp: 1733810503359 - kind: conda name: libarrow-substrait version: 18.1.0 - build: hf3d3107_4_cpu - build_number: 4 + build: h86344ea_6_cpu + build_number: 6 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-hf3d3107_4_cpu.conda - sha256: 9d9ebd042b9e8561b64f057d2adb24d331a772ccf1af3ed2d8b5b1566729f236 - md5: c093b05dc6d1b6057342d3dd6f3bd0d8 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-h86344ea_6_cpu.conda + sha256: bafd9ca59ebb5ad34b77aff316ef7b59c5fb1eb8a7b6a15de8dcbdf3ce37556d + md5: c1c162f5bf569cff8bed6def705a899f depends: - __osx >=11.0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.1.0 h86d57b8_4_cpu - - libarrow-acero 18.1.0 h1dc2043_4_cpu - - libarrow-dataset 18.1.0 h1dc2043_4_cpu + - libarrow 18.1.0 h4a2f8bd_6_cpu + - libarrow-acero 18.1.0 hf07054f_6_cpu + - libarrow-dataset 18.1.0 hf07054f_6_cpu - libcxx >=18 - libprotobuf >=5.28.2,<5.28.3.0a0 license: Apache-2.0 - license_family: APACHE - size: 451982 - timestamp: 1733607898511 + size: 451623 + timestamp: 1733809487176 - kind: conda name: libasprintf version: 0.22.5 @@ -5776,12 +5758,12 @@ packages: timestamp: 1729089357313 - kind: conda name: libgoogle-cloud - version: 2.31.0 + version: 2.32.0 build: h3888205_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-2.31.0-h3888205_0.conda - sha256: 603b0bd55980f5bf97911b327c9e469cf953c482f112b561dc9c1c7608bbdc29 - md5: 5b3d9a0327c4f7c569162f10acaf6bb4 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-2.32.0-h3888205_0.conda + sha256: 36af2844ce8fafd477214d51117746144461132f76759a7d29963b4583b577be + md5: a40b948bf4eabcc1ce708c40ffd7c06d depends: - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 @@ -5790,21 +5772,21 @@ packages: - libgrpc >=1.67.1,<1.68.0a0 - libprotobuf >=5.28.2,<5.28.3.0a0 - libstdcxx >=13 - - openssl >=3.3.2,<4.0a0 + - openssl >=3.4.0,<4.0a0 constrains: - - libgoogle-cloud 2.31.0 *_0 + - libgoogle-cloud 2.32.0 *_0 license: Apache-2.0 license_family: Apache - size: 1246720 - timestamp: 1731122940037 + size: 1248560 + timestamp: 1733512309504 - kind: conda name: libgoogle-cloud - version: 2.31.0 + version: 2.32.0 build: h804f50b_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.31.0-h804f50b_0.conda - sha256: b2de99c83516236ff591d30436779f8345bcc11bb0ec76a7ca3a38a3b23b6423 - md5: 35ab838423b60f233391eb86d324a830 + url: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.32.0-h804f50b_0.conda + sha256: 126856add750013390dff664a3c3cd0f6f0cbbc683b0025a7ce9d1618968bc70 + md5: 3d96df4d6b1c88455e05b94ce8a14a53 depends: - __glibc >=2.17,<3.0.a0 - libabseil * cxx17* @@ -5814,21 +5796,21 @@ packages: - libgrpc >=1.67.1,<1.68.0a0 - libprotobuf >=5.28.2,<5.28.3.0a0 - libstdcxx >=13 - - openssl >=3.3.2,<4.0a0 + - openssl >=3.4.0,<4.0a0 constrains: - - libgoogle-cloud 2.31.0 *_0 + - libgoogle-cloud 2.32.0 *_0 license: Apache-2.0 license_family: Apache - size: 1248705 - timestamp: 1731122589027 + size: 1249557 + timestamp: 1733512191906 - kind: conda name: libgoogle-cloud - version: 2.31.0 + version: 2.32.0 build: h8d8be31_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-2.31.0-h8d8be31_0.conda - sha256: 184d650d55453a40935c128ea309088ae52e15a68cd87ab17ae7c77704251168 - md5: a338736f1514e6f999db8726fe0965b1 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-2.32.0-h8d8be31_0.conda + sha256: 722e49dbdc4486105d9f5b79a7ba4f9064602fe20c4015e97684c898ab8d3386 + md5: d7ab9e0eb7d55eac4943913073de61d7 depends: - __osx >=11.0 - libabseil * cxx17* @@ -5837,77 +5819,77 @@ packages: - libcxx >=18 - libgrpc >=1.67.1,<1.68.0a0 - libprotobuf >=5.28.2,<5.28.3.0a0 - - openssl >=3.3.2,<4.0a0 + - openssl >=3.4.0,<4.0a0 constrains: - - libgoogle-cloud 2.31.0 *_0 + - libgoogle-cloud 2.32.0 *_0 license: Apache-2.0 license_family: Apache - size: 873497 - timestamp: 1731121684939 + size: 876210 + timestamp: 1733512539476 - kind: conda name: libgoogle-cloud-storage - version: 2.31.0 + version: 2.32.0 build: h0121fbd_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.31.0-h0121fbd_0.conda - sha256: 3c38b0a80441f82323dc5a72b96c0dd7476bd5184fbfcdf825a8e15249c849af - md5: 568d6a09a6ed76337a7b97c84ae7c0f8 + url: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.32.0-h0121fbd_0.conda + sha256: d1b53d17df38b52a4bc6d1fe6af0e611d6480ce10b0af570c84bd38c8aa83b91 + md5: 877a5ec0431a5af83bf0cd0522bfe661 depends: - __glibc >=2.17,<3.0.a0 - libabseil - libcrc32c >=1.1.2,<1.2.0a0 - libcurl - libgcc >=13 - - libgoogle-cloud 2.31.0 h804f50b_0 + - libgoogle-cloud 2.32.0 h804f50b_0 - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - openssl license: Apache-2.0 license_family: Apache - size: 782150 - timestamp: 1731122728715 + size: 782108 + timestamp: 1733512329104 - kind: conda name: libgoogle-cloud-storage - version: 2.31.0 + version: 2.32.0 build: h7081f7f_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-storage-2.31.0-h7081f7f_0.conda - sha256: 01f5156584b816d34270a60a61f6b6561f2a01cb3b4eeb455a4e1808d763d486 - md5: 548fd1d31741ee6b13df4124db4a9f5f + url: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-storage-2.32.0-h7081f7f_0.conda + sha256: 609df2cf376ba66460f40143f835fc567cae4458df80705587cd2efd59c09bf1 + md5: 28f5ab5cf95170dfacd05d2bb301e573 depends: - __osx >=11.0 - libabseil - libcrc32c >=1.1.2,<1.2.0a0 - libcurl - libcxx >=18 - - libgoogle-cloud 2.31.0 h8d8be31_0 + - libgoogle-cloud 2.32.0 h8d8be31_0 - libzlib >=1.3.1,<2.0a0 - openssl license: Apache-2.0 license_family: Apache - size: 526858 - timestamp: 1731122580689 + size: 526895 + timestamp: 1733513644846 - kind: conda name: libgoogle-cloud-storage - version: 2.31.0 + version: 2.32.0 build: hb9b2b65_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-storage-2.31.0-hb9b2b65_0.conda - sha256: 1df4b7b59224d865a574003df12ee36d4a9939e8e7911b4472348730b9c2a0e8 - md5: 53897114489b4df10e1680bf189aa306 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-storage-2.32.0-hb9b2b65_0.conda + sha256: e120e7b6c9c9d25baa8ae903106babdd3c969523ae25278a615ed9de4bd0fc35 + md5: 925ab0ca33baca4fcfee585cecb94169 depends: - libabseil - libcrc32c >=1.1.2,<1.2.0a0 - libcurl - libgcc >=13 - - libgoogle-cloud 2.31.0 h3888205_0 + - libgoogle-cloud 2.32.0 h3888205_0 - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - openssl license: Apache-2.0 license_family: Apache - size: 737686 - timestamp: 1731123086764 + size: 737964 + timestamp: 1733512457785 - kind: conda name: libgpg-error version: '1.51' @@ -6234,37 +6216,6 @@ packages: license: 0BSD size: 111132 timestamp: 1733407410083 -- kind: conda - name: liblzma-devel - version: 5.6.3 - build: h86ecc28_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-devel-5.6.3-h86ecc28_1.conda - sha256: 6e9ca2041f89c7df63d7ceba31a46b8f9ab28e88ce39f9f5c30b1fd0c629111c - md5: ca1606232471b17724ab99904cf90195 - depends: - - libgcc >=13 - - liblzma 5.6.3 h86ecc28_1 - license: 0BSD - size: 376914 - timestamp: 1733409269260 -- kind: conda - name: liblzma-devel - version: 5.6.3 - build: hb9d3cd8_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/liblzma-devel-5.6.3-hb9d3cd8_1.conda - sha256: ca17f037a0a7137874597866a171166677e4812a9a8a853007f0f582e3ff6d1d - md5: cc4687e1814ed459f3bd6d8e05251ab2 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - liblzma 5.6.3 hb9d3cd8_1 - license: 0BSD - size: 376794 - timestamp: 1733407421190 - kind: conda name: libmad version: 0.15.1b @@ -6544,61 +6495,58 @@ packages: - kind: conda name: libparquet version: 18.1.0 - build: h34a048e_4_cpu - build_number: 4 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-h34a048e_4_cpu.conda - sha256: 488d82356fc4e6dfd6c10a4100c36af17db1b7eb72cce0bd8973014220dc3066 - md5: 46db27c16b29f48a37a40e3b2c9dcfe3 + build: h081d1f1_6_cpu + build_number: 6 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-h081d1f1_6_cpu.conda + sha256: c691a59f1ebb6cedbf827f49f6cf414e08b0eec911f589133e6a8321e8ac701c + md5: 68788df49ce7480187eb6387f15b2b67 depends: - - libarrow 18.1.0 ha2aff55_4_cpu + - __glibc >=2.17,<3.0.a0 + - libarrow 18.1.0 h44a453e_6_cpu - libgcc >=13 - libstdcxx >=13 - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 - license_family: APACHE - size: 1117278 - timestamp: 1733607904359 + size: 1204535 + timestamp: 1733810811118 - kind: conda name: libparquet version: 18.1.0 - build: hf4cc9e7_4_cpu - build_number: 4 + build: h636d7b7_6_cpu + build_number: 6 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-hf4cc9e7_4_cpu.conda - sha256: ccadab6395090b3cbc54243fcf5c6e49eaee46aaaa4221ca8ca7803a34bdc25d - md5: b462d962b5254923c5f65ce1c68dfc17 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-h636d7b7_6_cpu.conda + sha256: 88c1e810bede65c54f1ebc51c14400f9e8cf0fc1f88a8c0a99210e2f5dfed582 + md5: 9b333c3a38e55f6c1b8733222e22f528 depends: - __osx >=11.0 - - libarrow 18.1.0 h86d57b8_4_cpu + - libarrow 18.1.0 h4a2f8bd_6_cpu - libcxx >=18 - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 - license_family: APACHE - size: 873584 - timestamp: 1733607239103 + size: 873134 + timestamp: 1733809271282 - kind: conda name: libparquet version: 18.1.0 - build: hf4f6db6_4_cpu - build_number: 4 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-hf4f6db6_4_cpu.conda - sha256: f957b6ea5c4023448891f63f7b184a663d85aa5b2717b0e0ebfbfcf97b542751 - md5: f18b10bf19bb384183f2aa546e9f6f0a + build: hfc78867_6_cpu + build_number: 6 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-hfc78867_6_cpu.conda + sha256: 38aab34c422519c530d0e9a3e0ffd1624db1c1e163983c46ae341e831b2eb6b5 + md5: 1ab6d4a9a982920b9dc5f2c700777b27 depends: - - __glibc >=2.17,<3.0.a0 - - libarrow 18.1.0 h3b07799_4_cpu + - libarrow 18.1.0 h1b535d6_6_cpu - libgcc >=13 - libstdcxx >=13 - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 - license_family: APACHE - size: 1204859 - timestamp: 1733607834047 + size: 1117592 + timestamp: 1733810440129 - kind: conda name: libpng version: 1.6.44 @@ -7016,40 +6964,42 @@ packages: - kind: conda name: libsystemd0 version: '256.9' - build: h2774228_0 + build: h0b6a36f_2 + build_number: 2 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libsystemd0-256.9-h2774228_0.conda - sha256: a93e45c12c2954942a994ff3ffc8b9a144261288032da834ed80a6210708ad49 - md5: 7b283ff97a87409a884bc11283855c17 + url: https://conda.anaconda.org/conda-forge/linux-64/libsystemd0-256.9-h0b6a36f_2.conda + sha256: 28e1a3c4bd242e7eb3bd0bcd35e558680d186e7a1d61482d371dde2a0f1bfb42 + md5: 135bbeb376345b6847c065115be4221a depends: - __glibc >=2.17,<3.0.a0 - libcap >=2.71,<2.72.0a0 - libgcc >=13 - libgcrypt-lib >=1.11.0,<2.0a0 - - lz4-c >=1.9.3,<1.10.0a0 - - xz >=5.2.6,<6.0a0 + - liblzma >=5.6.3,<6.0a0 + - lz4-c >=1.10.0,<1.11.0a0 - zstd >=1.5.6,<1.6.0a0 license: LGPL-2.1-or-later - size: 410424 - timestamp: 1733312416327 + size: 410566 + timestamp: 1733679350245 - kind: conda name: libsystemd0 version: '256.9' - build: hd54d049_0 + build: ha536d29_2 + build_number: 2 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libsystemd0-256.9-hd54d049_0.conda - sha256: d04ea4fa1b3282029039ec28054f53b0c5b3ef044303450e5684e2a690e7aa52 - md5: 9ee06ecb3e342bf03e163af5080acd9f + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libsystemd0-256.9-ha536d29_2.conda + sha256: 2cf3b22760674612fa13ad9748164dffc993d58dd3fc05c343b646ce31375af7 + md5: 5ef220ea7aa46bd59f83ac7afe14910b depends: - libcap >=2.71,<2.72.0a0 - libgcc >=13 - libgcrypt-lib >=1.11.0,<2.0a0 - - lz4-c >=1.9.3,<1.10.0a0 - - xz >=5.2.6,<6.0a0 + - liblzma >=5.6.3,<6.0a0 + - lz4-c >=1.10.0,<1.11.0a0 - zstd >=1.5.6,<1.6.0a0 license: LGPL-2.1-or-later - size: 430930 - timestamp: 1733311785480 + size: 432708 + timestamp: 1733679350109 - kind: conda name: libthrift version: 0.21.0 @@ -7590,48 +7540,53 @@ packages: timestamp: 1733376089600 - kind: conda name: lz4-c - version: 1.9.4 - build: hb7217d7_0 + version: 1.10.0 + build: h286801f_1 + build_number: 1 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.9.4-hb7217d7_0.conda - sha256: fc343b8c82efe40819b986e29ba748366514e5ab94a1e1138df195af5f45fa24 - md5: 45505bec548634f7d05e02fb25262cb9 + url: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.10.0-h286801f_1.conda + sha256: 94d3e2a485dab8bdfdd4837880bde3dd0d701e2b97d6134b8806b7c8e69c8652 + md5: 01511afc6cc1909c5303cf31be17b44f depends: - - libcxx >=14.0.6 + - __osx >=11.0 + - libcxx >=18 license: BSD-2-Clause license_family: BSD - size: 141188 - timestamp: 1674727268278 + size: 148824 + timestamp: 1733741047892 - kind: conda name: lz4-c - version: 1.9.4 - build: hcb278e6_0 + version: 1.10.0 + build: h5888daf_1 + build_number: 1 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.9.4-hcb278e6_0.conda - sha256: 1b4c105a887f9b2041219d57036f72c4739ab9e9fe5a1486f094e58c76b31f5f - md5: 318b08df404f9c9be5712aaa5a6f0bb0 + url: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.10.0-h5888daf_1.conda + sha256: 47326f811392a5fd3055f0f773036c392d26fdb32e4d8e7a8197eed951489346 + md5: 9de5350a85c4a20c685259b889aa6393 depends: - - libgcc-ng >=12 - - libstdcxx-ng >=12 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 license: BSD-2-Clause license_family: BSD - size: 143402 - timestamp: 1674727076728 + size: 167055 + timestamp: 1733741040117 - kind: conda name: lz4-c - version: 1.9.4 - build: hd600fc2_0 + version: 1.10.0 + build: h5ad3122_1 + build_number: 1 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.9.4-hd600fc2_0.conda - sha256: 076870eb72411f41c46598c7582a2f3f42ba94c526a2d60a0c8f70a0a7a64429 - md5: 500145a83ed07ce79c8cef24252f366b + url: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.10.0-h5ad3122_1.conda + sha256: 67e55058d275beea76c1882399640c37b5be8be4eb39354c94b610928e9a0573 + md5: 6654e411da94011e8fbe004eacb8fe11 depends: - - libgcc-ng >=12 - - libstdcxx-ng >=12 + - libgcc >=13 + - libstdcxx >=13 license: BSD-2-Clause license_family: BSD - size: 163770 - timestamp: 1674727020254 + size: 184953 + timestamp: 1733740984533 - kind: conda name: markdown-it-py version: 3.0.0 @@ -7710,174 +7665,177 @@ packages: timestamp: 1733219945697 - kind: conda name: max - version: 24.6.0.dev2024120905 + version: 24.6.0.dev2024121016 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120905-release.conda - sha256: 37a6103a6b2c7886ed5837d41a819f1a127eef7e810b2b5ecfb03f7caf263514 - md5: b13d61319f43570ce681408a1b27d9d5 - depends: - - max-core ==24.6.0.dev2024120905 release - - max-python >=24.6.0.dev2024120905,<25.0a0 - - mojo-jupyter ==24.6.0.dev2024120905 release - - mblack ==24.6.0.dev2024120905 release + 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 license: LicenseRef-Modular-Proprietary - size: 9911 - timestamp: 1733721408716 + size: 9917 + timestamp: 1733849930254 - kind: conda name: max-core - version: 24.6.0.dev2024120905 + version: 24.6.0.dev2024121016 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120905-release.conda - sha256: 0f94138601ceab2c8b277c7d175d762840072cfdfd0ead7264fbd1ff9f70442d - md5: 00617be1a2fef13b5630d9cbe92f9d3c + url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024121016-release.conda + sha256: 9b26505259984bb428ab3ee931ae54762c7dc8169343eff23a77ebfbd04a9044 + md5: fc4ae46f8723642288111dd01e901813 depends: - - mblack ==24.6.0.dev2024120905 release + - mblack ==24.6.0.dev2024121016 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 247639885 - timestamp: 1733721408714 + size: 247664506 + timestamp: 1733849767240 - kind: conda name: max-core - version: 24.6.0.dev2024120905 + version: 24.6.0.dev2024121016 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120905-release.conda - sha256: 1aaf2ffb09d6a2aa6b65d76c381476eb88947470580a0d56909bfd578d5eb385 - md5: c7ff53814f0c254c75dc7ab8f0c66b38 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024121016-release.conda + sha256: 779ef6524a738c5f9c140f845d0febf9dbe321f76331dbd434a4d549251db0c2 + md5: 86075990f86559126140561a14c8aafc depends: - - mblack ==24.6.0.dev2024120905 release + - mblack ==24.6.0.dev2024121016 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 251498878 - timestamp: 1733721396377 + size: 251595828 + timestamp: 1733849930252 - kind: conda name: max-core - version: 24.6.0.dev2024120905 + version: 24.6.0.dev2024121016 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120905-release.conda - sha256: 00cc8ce6adc131b858df51423201b8f028aa944ac09e56c563a1108c22eaccd2 - md5: 71554a4c0e81a1034908bc1cb716b30b + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024121016-release.conda + sha256: 3f2e56d822eca8789ee72e6d1eaa95fa2d633fa5a4991f73b5cbf64d62e2d73d + md5: 1928c2f7f79e2587edf7dd1be10bb2f7 depends: - - mblack ==24.6.0.dev2024120905 release + - mblack ==24.6.0.dev2024121016 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 212030191 - timestamp: 1733721567995 + size: 212115307 + timestamp: 1733850300421 - kind: conda name: max-python - version: 24.6.0.dev2024120905 + version: 24.6.0.dev2024121016 build: 3.12release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120905-3.12release.conda - sha256: 43245b47050208329e85a69f2af24d42c622e92e1542334a6106eaadb6cbf0ff - md5: 9a6037de6672120d1d6d53673b699d5b + url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024121016-3.12release.conda + sha256: 6ad60d7c6c2234f3f02bc36267bfb0744c40dfcb70834710c9d90776db2a516f + md5: 7fef71eb6ab9bde6a60494f367ed0223 depends: - - max-core ==24.6.0.dev2024120905 release + - max-core ==24.6.0.dev2024121016 release - python 3.12.* - - pillow - fastapi - httpx - - numpy >=1.18,<2.0 - huggingface_hub + - numpy >=1.18,<2.0 - opentelemetry-api - opentelemetry-exporter-otlp-proto-http >=1.27.0 - opentelemetry-exporter-prometheus >=0.48b0 - opentelemetry-sdk >=1.27.0 + - pillow - pydantic-settings >=2.4.0,<3 - pydantic >=2.4.0,<3 - pyinstrument - python-json-logger - sse-starlette >=2.1.3,<3 - transformers + - typing_extensions - uvicorn - python_abi 3.12.* *_cp312 arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 123751303 - timestamp: 1733721408724 + size: 123894250 + timestamp: 1733849767250 - kind: conda name: max-python - version: 24.6.0.dev2024120905 + version: 24.6.0.dev2024121016 build: 3.12release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120905-3.12release.conda - sha256: fdedbc8a2ca34d0593e8b2175ca07c07d6d0564f138f535ebff02975ef463f55 - md5: bc9f6ce493d2beb1089e1e409bb373ba + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024121016-3.12release.conda + sha256: 98f0fb331b1f3eb89e1f0a7340d8364a8d5f84fc91f25bdd076bae8225d24950 + md5: 23c72404d9e7f8bc76745502b2e53609 depends: - - max-core ==24.6.0.dev2024120905 release + - max-core ==24.6.0.dev2024121016 release - python 3.12.* - - pillow - fastapi - httpx - - numpy >=1.18,<2.0 - huggingface_hub + - numpy >=1.18,<2.0 - opentelemetry-api - opentelemetry-exporter-otlp-proto-http >=1.27.0 - opentelemetry-exporter-prometheus >=0.48b0 - opentelemetry-sdk >=1.27.0 + - pillow - pydantic-settings >=2.4.0,<3 - pydantic >=2.4.0,<3 - pyinstrument - python-json-logger - sse-starlette >=2.1.3,<3 - transformers + - typing_extensions - uvicorn - python_abi 3.12.* *_cp312 arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 127400047 - timestamp: 1733721396388 + size: 127528623 + timestamp: 1733849930263 - kind: conda name: max-python - version: 24.6.0.dev2024120905 + version: 24.6.0.dev2024121016 build: 3.12release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120905-3.12release.conda - sha256: 0cd6b2e3bdc78483665045e91b8db7a8a3d6c85fbf4b8a44d6eb742a46361af1 - md5: c1b7eb7d1a43e28224bf41220ece9b58 + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024121016-3.12release.conda + sha256: a12ef8ce21aee4490a7cf307a6072eaf84cd6df4d3e75dfbf61e438efffd5fd4 + md5: 6acba84a184a311186a957ba3e374a12 depends: - - max-core ==24.6.0.dev2024120905 release + - max-core ==24.6.0.dev2024121016 release - python 3.12.* - - pillow - fastapi - httpx - - numpy >=1.18,<2.0 - huggingface_hub + - numpy >=1.18,<2.0 - opentelemetry-api - opentelemetry-exporter-otlp-proto-http >=1.27.0 - opentelemetry-exporter-prometheus >=0.48b0 - opentelemetry-sdk >=1.27.0 + - pillow - pydantic-settings >=2.4.0,<3 - pydantic >=2.4.0,<3 - pyinstrument - python-json-logger - sse-starlette >=2.1.3,<3 - transformers + - typing_extensions - uvicorn - python_abi 3.12.* *_cp312 arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 112450493 - timestamp: 1733721567998 + size: 112564915 + timestamp: 1733850300425 - kind: conda name: mblack - version: 24.6.0.dev2024120905 + version: 24.6.0.dev2024121016 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120905-release.conda - sha256: e302e262a58592b5b8614829237760967d685cb20a44e54981916eb6c2b6b7a2 - md5: b34a59910660011ad1f42bfc1ae4ae54 + url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024121016-release.conda + sha256: f9acaa65326bbc7f7e3158b1e20b0cdc7ac7da0ca925278566da7f80731146b5 + md5: 6e4496ad926e9f2e8c187f3c1cdd6a0c depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -7887,8 +7845,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130740 - timestamp: 1733721408720 + size: 130747 + timestamp: 1733849930259 - kind: conda name: mdurl version: 0.1.2 @@ -7907,21 +7865,21 @@ packages: timestamp: 1733255681319 - kind: conda name: mojo-jupyter - version: 24.6.0.dev2024120905 + version: 24.6.0.dev2024121016 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120905-release.conda - sha256: bb71277508a55875b6011651bc825599e26a47145ab1e9c4e7c2abd853200a00 - md5: 4fc85c9cb1efe841b69d339d4da5b3a1 + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024121016-release.conda + sha256: e2a2514e4570f219e25f3f6f948d9035723b80df4fb9209598f34af17239a4f6 + md5: 0b20302cee375040ce15e8b795d7cda4 depends: - - max-core ==24.6.0.dev2024120905 release + - max-core ==24.6.0.dev2024121016 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 11366 - timestamp: 1733721408720 + size: 23064 + timestamp: 1733849930259 - kind: conda name: mpg123 version: 1.32.9 @@ -8205,57 +8163,56 @@ packages: timestamp: 1707225809722 - kind: conda name: openjpeg - version: 2.5.2 - build: h0d9d63b_0 + version: 2.5.3 + build: h3f56577_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/openjpeg-2.5.2-h0d9d63b_0.conda - sha256: d83375856601bc67c11295b537548a937a6896ede9d0a51d78bf5e921ab07c6f - md5: fd2898519e839d5ceb778343f39a3176 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/openjpeg-2.5.3-h3f56577_0.conda + sha256: 92d310033e20538e896f4e4b1ea4205eb6604eee7c5c651c4965a0d8d3ca0f1d + md5: 04231368e4af50d11184b50e14250993 depends: - - libgcc-ng >=12 - - libpng >=1.6.43,<1.7.0a0 - - libstdcxx-ng >=12 - - libtiff >=4.6.0,<4.8.0a0 - - libzlib >=1.2.13,<2.0.0a0 + - libgcc >=13 + - libpng >=1.6.44,<1.7.0a0 + - libstdcxx >=13 + - libtiff >=4.7.0,<4.8.0a0 + - libzlib >=1.3.1,<2.0a0 license: BSD-2-Clause - license_family: BSD - size: 374964 - timestamp: 1709159226478 + size: 377796 + timestamp: 1733816683252 - kind: conda name: openjpeg - version: 2.5.2 - build: h488ebb8_0 + version: 2.5.3 + build: h5fbd93e_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.2-h488ebb8_0.conda - sha256: 5600a0b82df042bd27d01e4e687187411561dfc11cc05143a08ce29b64bf2af2 - md5: 7f2e286780f072ed750df46dc2631138 + url: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.3-h5fbd93e_0.conda + sha256: 5bee706ea5ba453ed7fd9da7da8380dd88b865c8d30b5aaec14d2b6dd32dbc39 + md5: 9e5816bc95d285c115a3ebc2f8563564 depends: - - libgcc-ng >=12 - - libpng >=1.6.43,<1.7.0a0 - - libstdcxx-ng >=12 - - libtiff >=4.6.0,<4.8.0a0 - - libzlib >=1.2.13,<2.0.0a0 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libpng >=1.6.44,<1.7.0a0 + - libstdcxx >=13 + - libtiff >=4.7.0,<4.8.0a0 + - libzlib >=1.3.1,<2.0a0 license: BSD-2-Clause - license_family: BSD - size: 341592 - timestamp: 1709159244431 + size: 342988 + timestamp: 1733816638720 - kind: conda name: openjpeg - version: 2.5.2 - build: h9f1df11_0 + version: 2.5.3 + build: h8a3d83b_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/openjpeg-2.5.2-h9f1df11_0.conda - sha256: 472d6eaffc1996e6af35ec8e91c967f472a536a470079bfa56383cc0dbf4d463 - md5: 5029846003f0bc14414b9128a1f7c84b + url: https://conda.anaconda.org/conda-forge/osx-arm64/openjpeg-2.5.3-h8a3d83b_0.conda + sha256: 1d59bc72ca7faac06d349c1a280f5cfb8a57ee5896f1e24225a997189d7418c7 + md5: 4b71d78648dbcf68ce8bf22bb07ff838 depends: - - libcxx >=16 - - libpng >=1.6.43,<1.7.0a0 - - libtiff >=4.6.0,<4.8.0a0 - - libzlib >=1.2.13,<2.0.0a0 + - __osx >=11.0 + - libcxx >=18 + - libpng >=1.6.44,<1.7.0a0 + - libtiff >=4.7.0,<4.8.0a0 + - libzlib >=1.3.1,<2.0a0 license: BSD-2-Clause - license_family: BSD - size: 316603 - timestamp: 1709159627299 + size: 319362 + timestamp: 1733816781741 - kind: conda name: openssl version: 3.4.0 @@ -8318,6 +8275,7 @@ packages: - python >=3.9 - setuptools >=16.0 license: Apache-2.0 + license_family: APACHE size: 44242 timestamp: 1733734361129 - kind: conda @@ -8396,12 +8354,13 @@ packages: - kind: conda name: opentelemetry-sdk version: 1.28.2 - build: pyhff2d567_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.28.2-pyhff2d567_0.conda - sha256: 67c5be0f2b81b329d273f1f24f985a53e000b4b42b8338b56375d75aa8da5bb1 - md5: 742115714b2cbfa599e9f78495233d1a + url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.28.2-pyhd8ed1ab_1.conda + sha256: 9f48ec749f0738910fdd6750f9655f16949182b5379dd2c0771104d3e74bfd74 + md5: bfe29ef92f3a04ab8e59e4f97b28785c depends: - opentelemetry-api 1.28.2 - opentelemetry-semantic-conventions 0.49b2 @@ -8410,8 +8369,8 @@ packages: - typing_extensions >=3.7.4 license: Apache-2.0 license_family: APACHE - size: 78017 - timestamp: 1732070451972 + size: 78090 + timestamp: 1733768582451 - kind: conda name: opentelemetry-semantic-conventions version: 0.49b2 @@ -8427,6 +8386,7 @@ packages: - opentelemetry-api 1.28.2 - python >=3.9 license: Apache-2.0 + license_family: APACHE size: 81099 timestamp: 1733749104727 - kind: conda @@ -8485,67 +8445,70 @@ packages: - kind: conda name: orc version: 2.0.3 - build: h121fd32_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/orc-2.0.3-h121fd32_0.conda - sha256: 4759fd0c3f06c035146100e22ee36a312c9a8226654bd2973e9ca9ac5de5cf1f - md5: 39995f7406b949c1bef74f0c7277afb3 + build: h3c55218_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/orc-2.0.3-h3c55218_1.conda + sha256: 154b26bc4d586de33765a155c9b79ebd7f5bb36c2bbf4b8854e1631bca8d21af + md5: 0a51a3cf028b845c46ec0d1ea2d18629 depends: - - __osx >=11.0 - - libcxx >=18 + - libgcc >=13 - libprotobuf >=5.28.2,<5.28.3.0a0 + - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - - lz4-c >=1.9.3,<1.10.0a0 + - lz4-c >=1.10.0,<1.11.0a0 - snappy >=1.2.1,<1.3.0a0 - tzdata - zstd >=1.5.6,<1.6.0a0 license: Apache-2.0 license_family: Apache - size: 438254 - timestamp: 1731665228473 + size: 1165179 + timestamp: 1733509923825 - kind: conda name: orc version: 2.0.3 - build: h90de224_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/orc-2.0.3-h90de224_0.conda - sha256: 7969db50268b65c2edb14be2e22bfff5656f36336eb5421d53030d29c037fec1 - md5: c07ba3025fe20ccbab9cd7c615953d6f + build: h97ab989_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/orc-2.0.3-h97ab989_1.conda + sha256: 9de7e2746fde57c9b7f08ee87142014f6bb9b2d3a506839ea3e98baa99711576 + md5: 2f46eae652623114e112df13fae311cf depends: + - __glibc >=2.17,<3.0.a0 - libgcc >=13 - libprotobuf >=5.28.2,<5.28.3.0a0 - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - - lz4-c >=1.9.3,<1.10.0a0 + - lz4-c >=1.10.0,<1.11.0a0 - snappy >=1.2.1,<1.3.0a0 - tzdata - zstd >=1.5.6,<1.6.0a0 license: Apache-2.0 license_family: Apache - size: 1170439 - timestamp: 1731665024334 + size: 1189462 + timestamp: 1733509801323 - kind: conda name: orc version: 2.0.3 - build: he039a57_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/orc-2.0.3-he039a57_0.conda - sha256: 9657ae19d6541fe67a61ef0c26ba1012ec508920b49afa897962c7d4b263ba35 - md5: 052499acd6d6b79952197a13b23e2600 + build: hbcee414_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/orc-2.0.3-hbcee414_1.conda + sha256: e5e72438a3cd967ebc774070e8c49500d2d6d4175f349400b327fee75d3bfc05 + md5: e808cf7819eaa1735c8790d7f9f482c7 depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 + - __osx >=11.0 + - libcxx >=18 - libprotobuf >=5.28.2,<5.28.3.0a0 - - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - - lz4-c >=1.9.3,<1.10.0a0 + - lz4-c >=1.10.0,<1.11.0a0 - snappy >=1.2.1,<1.3.0a0 - tzdata - zstd >=1.5.6,<1.6.0a0 license: Apache-2.0 license_family: Apache - size: 1187593 - timestamp: 1731664886527 + size: 437391 + timestamp: 1733510118673 - kind: conda name: packaging version: '24.2' @@ -8789,6 +8752,7 @@ packages: - libgcc >=13 - libstdcxx >=13 license: MIT + license_family: MIT size: 381072 timestamp: 1733698987122 - kind: conda @@ -8803,6 +8767,7 @@ packages: - __osx >=11.0 - libcxx >=18 license: MIT + license_family: MIT size: 201076 timestamp: 1733699127167 - kind: conda @@ -8817,6 +8782,7 @@ packages: - libgcc >=13 - libstdcxx >=13 license: MIT + license_family: MIT size: 288697 timestamp: 1733700860569 - kind: conda @@ -9373,20 +9339,20 @@ packages: - kind: conda name: pydantic-settings version: 2.6.1 - build: pyh3cfb1c2_0 + build: pyh3cfb1c2_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.6.1-pyh3cfb1c2_0.conda - sha256: b3f331d69f7f3b3272e8e203211bfe39ba728a61fadc9b5c2f091b50084f0187 - md5: 412f950a65ceea20b06263f65d689f6b + url: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.6.1-pyh3cfb1c2_1.conda + sha256: 8cc37e827f0098d07743f57f968283cefce6c11562d9241aba990acc23aedb56 + md5: deabf8afc8d987f20174ef0d8d9b549e depends: - pydantic >=2.7.0 - - python >=3.8 + - python >=3.9 - python-dotenv >=0.21.0 license: MIT - license_family: MIT - size: 30618 - timestamp: 1730473755879 + size: 30832 + timestamp: 1733851937909 - kind: conda name: pygame version: 2.6.1 @@ -10463,56 +10429,57 @@ packages: - kind: conda name: sdl2_ttf version: 2.22.0 - build: h08b1b5d_2 - build_number: 2 + build: h287479f_3 + build_number: 3 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/sdl2_ttf-2.22.0-h08b1b5d_2.conda - sha256: 7b44fd7f931c8b2fc24bf79fbad29fd308af56a5ee1b50aab41324654b89bd91 - md5: 71f8250e3692862116dd14104579c85c + url: https://conda.anaconda.org/conda-forge/linux-64/sdl2_ttf-2.22.0-h287479f_3.conda + sha256: 382554ee6135183548ae98adf984b3de31615d429751b497a509724c017d1f1f + md5: 2ab241725f0baa88ca26d53bb6eff58a depends: + - __glibc >=2.17,<3.0.a0 - freetype >=2.12.1,<3.0a0 - - harfbuzz >=9.0.0,<10.0a0 - - libgcc-ng >=12 + - harfbuzz >=10.1.0,<11.0a0 + - libgcc >=13 - libzlib >=1.3.1,<2.0a0 - - sdl2 >=2.30.2,<3.0a0 + - sdl2 >=2.30.7,<3.0a0 license: Zlib - size: 61752 - timestamp: 1719636090403 + size: 62581 + timestamp: 1733782803716 - kind: conda name: sdl2_ttf version: 2.22.0 - build: h680d130_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/sdl2_ttf-2.22.0-h680d130_2.conda - sha256: b36431de3132ea01d61d604d03e38190ccc797053c1c566f74a8cd56f291bee8 - md5: 142c77bdcae19d1c2387ff44a1f3ded0 + build: h443c5de_3 + build_number: 3 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/sdl2_ttf-2.22.0-h443c5de_3.conda + sha256: 5325195729d91c0f4f6075cb70a2d4f67db7e42b3e3cf875c9fd4f7e21fdabc4 + md5: add02757e1fa038364df05ba0aaf3ca5 depends: + - __osx >=11.0 - freetype >=2.12.1,<3.0a0 - - harfbuzz >=9.0.0,<10.0a0 - - libgcc-ng >=12 - - libzlib >=1.3.1,<2.0a0 - - sdl2 >=2.30.2,<3.0a0 + - harfbuzz >=10.1.0,<11.0a0 + - sdl2 >=2.30.10,<3.0a0 license: Zlib - size: 54202 - timestamp: 1719637807412 + size: 46057 + timestamp: 1733782993569 - kind: conda name: sdl2_ttf version: 2.22.0 - build: hda0f12e_2 - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/sdl2_ttf-2.22.0-hda0f12e_2.conda - sha256: 5b331bcf57ae337b9f62ec59c72f5a98d659f8ef9b8346896c2475a6b9ce6ee3 - md5: 1d6211311356539d7dd9c75c40400650 + build: hb1608df_3 + build_number: 3 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/sdl2_ttf-2.22.0-hb1608df_3.conda + sha256: 7bf20660944556420a499c95c46e9bc57f0ed1445218d3899f85478fa8ec367c + md5: 7ac7f17a1b2bd1ccf6161644ee03ade8 depends: - - __osx >=11.0 - freetype >=2.12.1,<3.0a0 - - harfbuzz >=9.0.0,<10.0a0 - - sdl2 >=2.30.2,<3.0a0 + - harfbuzz >=10.1.0,<11.0a0 + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + - sdl2 >=2.30.7,<3.0a0 license: Zlib - size: 44468 - timestamp: 1719636195399 + size: 56134 + timestamp: 1733783877446 - kind: conda name: setuptools version: 75.6.0 @@ -11625,105 +11592,6 @@ packages: license_family: BSD size: 97691 timestamp: 1689951608120 -- kind: conda - name: xz - version: 5.6.3 - build: h2dbfc1b_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-5.6.3-h2dbfc1b_1.conda - sha256: b497245803e6753a9d4fe4014eb71fcb94e3fe1c7be9cc54aefcd0d02266b67f - md5: 0ed81af8ecd07369f2ce2533fd904a25 - depends: - - libgcc >=13 - - liblzma 5.6.3 h86ecc28_1 - - liblzma-devel 5.6.3 h86ecc28_1 - - xz-gpl-tools 5.6.3 h2dbfc1b_1 - - xz-tools 5.6.3 h86ecc28_1 - license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later - size: 23495 - timestamp: 1733409682598 -- kind: conda - name: xz - version: 5.6.3 - build: hbcc6ac9_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/xz-5.6.3-hbcc6ac9_1.conda - sha256: 9cef529dcff25222427c9d90b9fc376888a59e138794b4336bbcd3331a5eea22 - md5: 62aae173382a8aae284726353c6a6a24 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - liblzma 5.6.3 hb9d3cd8_1 - - liblzma-devel 5.6.3 hb9d3cd8_1 - - xz-gpl-tools 5.6.3 hbcc6ac9_1 - - xz-tools 5.6.3 hb9d3cd8_1 - license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later - size: 23477 - timestamp: 1733407455801 -- kind: conda - name: xz-gpl-tools - version: 5.6.3 - build: h2dbfc1b_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-gpl-tools-5.6.3-h2dbfc1b_1.conda - sha256: 025f53e2f269b55ab46a627afa47e7288e5199c9d6752ac079c91c22d2a18c07 - md5: 5987f52add76f6fe246fcb2a554ee206 - depends: - - libgcc >=13 - - liblzma 5.6.3 h86ecc28_1 - license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later - size: 33218 - timestamp: 1733409548701 -- kind: conda - name: xz-gpl-tools - version: 5.6.3 - build: hbcc6ac9_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/xz-gpl-tools-5.6.3-hbcc6ac9_1.conda - sha256: 4e104b7c75c2f26a96032a1c6cda51430da1dea318c74f9e3568902b2f5030e1 - md5: f529917bab7862aaad6867bf2ea47a99 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - liblzma 5.6.3 hb9d3cd8_1 - license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later - size: 33354 - timestamp: 1733407444641 -- kind: conda - name: xz-tools - version: 5.6.3 - build: h86ecc28_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-tools-5.6.3-h86ecc28_1.conda - sha256: c4d136b10ba6d2afe133bc5bc2c6db6ec336793932b6ff1e166b5b1790abe1c5 - md5: 5d1bedf30d9b471b6f880351cec41bf0 - depends: - - libgcc >=13 - - liblzma 5.6.3 h86ecc28_1 - license: 0BSD AND LGPL-2.1-or-later - size: 95924 - timestamp: 1733409414633 -- kind: conda - name: xz-tools - version: 5.6.3 - build: hb9d3cd8_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/xz-tools-5.6.3-hb9d3cd8_1.conda - sha256: 6e80f838096345c35e8755b827814c083dd0274594006d6f76bff71bc969c3b8 - md5: de3f31a6eed01bc2b8c7dcad07ad9034 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - liblzma 5.6.3 hb9d3cd8_1 - license: 0BSD AND LGPL-2.1-or-later - size: 90354 - timestamp: 1733407433418 - kind: conda name: yaml version: 0.2.5 @@ -11898,55 +11766,6 @@ packages: license_family: MIT size: 21809 timestamp: 1732827613585 -- kind: conda - name: zlib - version: 1.3.1 - build: h8359307_2 - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/zlib-1.3.1-h8359307_2.conda - sha256: 58f8860756680a4831c1bf4f294e2354d187f2e999791d53b1941834c4b37430 - md5: e3170d898ca6cb48f1bb567afb92f775 - depends: - - __osx >=11.0 - - libzlib 1.3.1 h8359307_2 - license: Zlib - license_family: Other - size: 77606 - timestamp: 1727963209370 -- kind: conda - name: zlib - version: 1.3.1 - build: h86ecc28_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/zlib-1.3.1-h86ecc28_2.conda - sha256: b4f649aa3ecdae384d5dad7074e198bff120edd3dfb816588e31738fc6d627b1 - md5: bc230abb5d21b63ff4799b0e75204783 - depends: - - libgcc >=13 - - libzlib 1.3.1 h86ecc28_2 - license: Zlib - license_family: Other - size: 95582 - timestamp: 1727963203597 -- kind: conda - name: zlib - version: 1.3.1 - build: hb9d3cd8_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.1-hb9d3cd8_2.conda - sha256: 5d7c0e5f0005f74112a34a7425179f4eb6e73c92f5d109e6af4ddeca407c92ab - md5: c9f075ab2f33b3bbee9e62d4ad0a6cd8 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libzlib 1.3.1 hb9d3cd8_2 - license: Zlib - license_family: Other - size: 92286 - timestamp: 1727963153079 - kind: conda name: zstandard version: 0.23.0 diff --git a/examples/magic.lock b/examples/magic.lock index b0d6852f57..1f7d98b605 100644 --- a/examples/magic.lock +++ b/examples/magic.lock @@ -9,30 +9,30 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.9-py311h2dc5d0c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.10-py311h2dc5d0c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-ha4f867e_12.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.1-hecf86a2_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.10.3-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.3.0-hf42f96a_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.0-h873f81a_8.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.2-ha5a3ca8_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-ha35c7d9_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h56e9cca_9.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.5-h6ad95d4_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.1-hf42f96a_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-hf42f96a_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.7-h318f0b1_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-hac138a2_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-h8c8080f_14.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.1-h0f28dba_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.10.5-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.3.0-h9cc6398_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.0-hf811eff_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.2-hce7dc5d_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-hfd54f12_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-ha3c2ba9_11.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.5-h55e9418_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.1-h9cc6398_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-h9cc6398_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.7-hed26007_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-h571fd1c_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.10.0-h113e628_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.13.0-h3cf044e_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-common-cpp-12.8.0-h736e048_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-files-datalake-cpp-12.12.0-ha633028_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/backoff-2.2.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/backoff-2.2.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py311hfdbb021_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.3-hb9d3cd8_1.conda @@ -64,7 +64,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/httptools-0.6.4-py311h9ecbd09_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-7.0.2-pyha770c72_0.conda @@ -77,10 +77,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_h5888daf_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-h3b07799_4_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-h8bbc2ab_4_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-h8bbc2ab_4_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-had74209_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-h44a453e_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-hcb10f89_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-hcb10f89_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-h3ee7192_6_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-25_linux64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hb9d3cd8_2.conda @@ -99,8 +99,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hd5240d6_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h77fa898_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.31.0-h804f50b_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.31.0-h0121fbd_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.32.0-h804f50b_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.32.0-h0121fbd_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.67.1-hc2c308b_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-hd590300_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda @@ -109,7 +109,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.28-pthreads_h94d23a6_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-hf4f6db6_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-h081d1f1_6_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.44-hadc24fc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.2-h5b01275_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_1.conda @@ -128,30 +128,30 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.5-h0d44e9d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.9.4-hcb278e6_0.conda + - 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.dev2024120905-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120905-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120905-3.11release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120905-release.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.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.dev2024120905-release.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.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 - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py311h64a7726_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.2-h488ebb8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.3-h5fbd93e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.0-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.28.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.28.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-prometheus-1.12.0rc1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.28.2-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.28.2-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.28.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh3cfb1c2_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/orc-2.0.3-he039a57_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/orc-2.0.3-h97ab989_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.3-py311h7db5c69_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda @@ -166,7 +166,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.3-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.27.1-py311h9e33e62_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.6.1-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.6.1-pyh3cfb1c2_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyinstrument-5.0.0-py311h9ecbd09_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda @@ -226,30 +226,30 @@ environments: linux-aarch64: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.9-py311h58d527c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.10-py311h58d527c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-h89ba3c0_12.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.1-h35473ba_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-common-0.10.3-h86ecc28_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-compression-0.3.0-h4c7db1d_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-event-stream-0.5.0-hba6c15e_8.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.2-h697be72_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-h0155602_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h2cca791_9.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.5-h3c51cf6_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.1-h4c7db1d_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h4c7db1d_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.7-hacb6b83_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h5e41cbe_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-hb4dd4bb_14.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.1-h1aca5b9_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-common-0.10.5-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-compression-0.3.0-h10558d5_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-event-stream-0.5.0-ha9733bd_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.2-h53134c8_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-h8aa8d47_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h2f8d747_11.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.5-h757e810_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.1-h10558d5_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h10558d5_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.7-hc8d91e0_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h2d3f608_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-core-cpp-1.14.0-h1887c18_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-identity-cpp-1.10.0-h47b0b28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-blobs-cpp-12.13.0-h185ecfd_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-common-cpp-12.8.0-h1b94036_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-files-datalake-cpp-12.12.0-h37d6d07_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/backoff-2.2.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/backoff-2.2.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/brotli-python-1.1.0-py311h89d996e_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h68df207_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/c-ares-1.34.3-h86ecc28_1.conda @@ -281,7 +281,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/httptools-0.6.4-py311ha879c10_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda @@ -295,10 +295,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.0.0-h4de3ea5_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h5ad3122_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-ha2aff55_4_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h512cd83_4_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h512cd83_4_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h3644d33_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-h1b535d6_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h3b568fd_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h3b568fd_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h3ffb4b1_6_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-25_linuxaarch64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlicommon-1.1.0-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlidec-1.1.0-h86ecc28_2.conda @@ -317,8 +317,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-2.31.0-h3888205_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-storage-2.31.0-hb9b2b65_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-2.32.0-h3888205_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-storage-2.32.0-hb9b2b65_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgrpc-1.67.1-h36c5df4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libiconv-1.17-h31becfc_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libjpeg-turbo-3.0.0-h31becfc_1.conda @@ -327,7 +327,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnghttp2-1.64.0-hc8609a4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.28-pthreads_h9d3fd7e_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-h34a048e_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-hfc78867_6_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.44-hc4a20ef_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.2-h029595c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_1.conda @@ -346,30 +346,30 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.5-h2e0c361_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.9.4-hd600fc2_0.conda + - 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.dev2024120905-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120905-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120905-3.11release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120905-release.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.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.dev2024120905-release.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.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 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py311h69ead2a_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openjpeg-2.5.2-h0d9d63b_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openjpeg-2.5.3-h3f56577_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.0-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.28.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.28.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-prometheus-1.12.0rc1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.28.2-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.28.2-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.28.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh3cfb1c2_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/orc-2.0.3-h90de224_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/orc-2.0.3-h3c55218_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pandas-2.2.3-py311h848c333_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda @@ -384,7 +384,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.3-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pydantic-core-2.27.1-py311h0ca61a2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.6.1-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.6.1-pyh3cfb1c2_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyinstrument-5.0.0-py311ha879c10_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda @@ -443,30 +443,30 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.6-h02f22dd_0.conda osx-arm64: - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.9-py311h4921393_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.10-py311h4921393_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-h35eccd0_12.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.1-h5d7ee29_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.10.3-h5505292_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-compression-0.3.0-h5d7ee29_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.0-h8ec3972_8.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.2-h48c6dea_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-h30cefa2_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h3aaadf4_9.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.5-hca3a6f1_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.1-h5d7ee29_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-h5d7ee29_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.7-hc2c2bbc_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-he4d6490_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-h93897a1_14.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.1-h4d88cd7_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.10.5-h5505292_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-compression-0.3.0-h4d88cd7_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.0-h9fa824c_10.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.2-hc68443d_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-h66499f2_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-hd073cef_11.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.5-hb201fd0_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.1-h4d88cd7_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-h4d88cd7_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.7-hb9a023b_5.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-h39838b8_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.14.0-hd50102c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.10.0-hc602bab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-blobs-cpp-12.13.0-h7585a09_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-common-cpp-12.8.0-h9ca1f76_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-files-datalake-cpp-12.12.0-hcdd55da_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/backoff-2.2.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/backoff-2.2.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py311h3f08180_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.3-h5505292_1.conda @@ -498,7 +498,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/httptools-0.6.4-py311h917b07b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda @@ -510,10 +510,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.16-ha0e7c42_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_hf9b8971_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-h86d57b8_4_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-h1dc2043_4_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-h1dc2043_4_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-hf3d3107_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-h4a2f8bd_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-hf07054f_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-hf07054f_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-h86344ea_6_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-25_osxarm64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.1.0-hd74edd7_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.1.0-hd74edd7_2.conda @@ -530,8 +530,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-2.31.0-h8d8be31_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-storage-2.31.0-h7081f7f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-2.32.0-h8d8be31_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-storage-2.32.0-h7081f7f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgrpc-1.67.1-hc70892a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.17-h0d3ecfb_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.0.0-hb547adb_1.conda @@ -539,7 +539,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.3-h39f12f2_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.64.0-h6d7220d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.28-openmp_hf332438_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-hf4cc9e7_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-h636d7b7_6_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.44-hc14010f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.2-h8f0b736_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h2348fd5_1.conda @@ -555,30 +555,30 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.5-h178c5d8_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.5-hdb05f8b_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.9.4-hb7217d7_0.conda + - 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.dev2024120905-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120905-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120905-3.11release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120905-release.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.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.dev2024120905-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024121016-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 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h7bae524_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py311h7125741_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openjpeg-2.5.2-h9f1df11_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openjpeg-2.5.3-h8a3d83b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.0-h39f12f2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.28.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.28.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-prometheus-1.12.0rc1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.28.2-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.28.2-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.28.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh3cfb1c2_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/orc-2.0.3-h121fd32_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/orc-2.0.3-hbcee414_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.3-py311h9cb3ce9_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda @@ -593,7 +593,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.3-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.27.1-py311h3ff9189_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.6.1-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.6.1-pyh3cfb1c2_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyinstrument-5.0.0-py311hae2e1ce_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda @@ -714,12 +714,12 @@ packages: timestamp: 1733332029649 - kind: conda name: aiohttp - version: 3.11.9 + version: 3.11.10 build: py311h2dc5d0c_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.9-py311h2dc5d0c_0.conda - sha256: 7ad0ca5ba77e058b442f0c39c708c88f2dac53b8769737701ee57964d51bdc46 - md5: 2665cc7da1c554be586963d50d1ad612 + url: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.10-py311h2dc5d0c_0.conda + sha256: 387a234321dd956e6b18aa338aae28a42fa804cb121292b5ab767410a92a5dca + md5: 7ddc4f7d7120a103af3e06cf7f7e7fb1 depends: - __glibc >=2.17,<3.0.a0 - aiohappyeyeballs >=2.3.0 @@ -734,16 +734,16 @@ packages: - yarl >=1.17.0,<2.0 license: MIT AND Apache-2.0 license_family: Apache - size: 920988 - timestamp: 1733124865570 + size: 921209 + timestamp: 1733839979846 - kind: conda name: aiohttp - version: 3.11.9 + version: 3.11.10 build: py311h4921393_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.9-py311h4921393_0.conda - sha256: 4e57bf5250304eec98769921788c7be76d146f21edf85ed890318991a8d9e2e7 - md5: b7e219c251ece66ccd7058af6d6fda10 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.10-py311h4921393_0.conda + sha256: 27867a0d1f300689560328cda025eff7d41d0d8496a9a01631aaa930c6646d3d + md5: 6fa633c40fb67bf8f957e442a6acaaab depends: - __osx >=11.0 - aiohappyeyeballs >=2.3.0 @@ -758,16 +758,16 @@ packages: - yarl >=1.17.0,<2.0 license: MIT AND Apache-2.0 license_family: Apache - size: 880101 - timestamp: 1733124988232 + size: 880378 + timestamp: 1733839047160 - kind: conda name: aiohttp - version: 3.11.9 + version: 3.11.10 build: py311h58d527c_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.9-py311h58d527c_0.conda - sha256: 67df99e0e0e300f0ae86306f25275bd4728af2e6f852e16f6cc1b7cdb83352ae - md5: 6419796f7b0964c80dd78f523e4deae0 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.10-py311h58d527c_0.conda + sha256: ec2384157e169b6ad1e470a4855ed987bf2f19dac69a9156785f19bbb114d33b + md5: 899276b5c5a33aa77fdb738be26f83ed depends: - aiohappyeyeballs >=2.3.0 - aiosignal >=1.1.2 @@ -782,8 +782,8 @@ packages: - yarl >=1.17.0,<2.0 license: MIT AND Apache-2.0 license_family: Apache - size: 911710 - timestamp: 1733124981752 + size: 915134 + timestamp: 1733838911893 - kind: conda name: aiosignal version: 1.3.1 @@ -859,443 +859,447 @@ packages: - kind: conda name: aws-c-auth version: 0.8.0 - build: h35eccd0_12 - build_number: 12 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-h35eccd0_12.conda - sha256: 40ca48aee5f3ff0d3ffd64625dacb019104a9a2ee24cd54052cde6fe4cbc8349 - md5: 1109d5293b724ca16b61452accfdb442 + build: h8c8080f_14 + build_number: 14 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-h8c8080f_14.conda + sha256: 7a9f7763e3a151ae1008ead51458f9b889b657f388266d53c6f7fa383dbb2481 + md5: a9284141081982473ebf41b92566bbcb depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-common >=0.10.5,<0.10.6.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 + - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 92279 - timestamp: 1733611476546 + size: 107775 + timestamp: 1733709347751 - kind: conda name: aws-c-auth version: 0.8.0 - build: h89ba3c0_12 - build_number: 12 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-h89ba3c0_12.conda - sha256: 021451014fb5ee24601052d84db8d5babbce5085959ba777b540db4e33bde360 - md5: c0e2e6c3aa8c309af0ba09fc7d949407 + build: h93897a1_14 + build_number: 14 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-h93897a1_14.conda + sha256: 3ec33500c5def035acb9ba406161f5452e39b1b818c67d8a56103d6def47bda6 + md5: 061e221dc5cca62be8fab49a16bfb99d depends: + - __osx >=11.0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-common >=0.10.5,<0.10.6.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 112242 - timestamp: 1733611425746 + size: 92250 + timestamp: 1733709418870 - kind: conda name: aws-c-auth version: 0.8.0 - build: ha4f867e_12 - build_number: 12 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-ha4f867e_12.conda - sha256: b9355bedf43c857a2d1986ebe7d61e615218f2171d163b509633d6c0c988d2dc - md5: d889de56d3be691063b71eb826470e29 + build: hb4dd4bb_14 + build_number: 14 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-hb4dd4bb_14.conda + sha256: a9622ac836bbe4a24310e0e77a42ef0a17e5fa0703276f8bbbef945deaca337c + md5: a5b86123507e184fb4463e1f8890b398 depends: - - __glibc >=2.17,<3.0.a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-common >=0.10.5,<0.10.6.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 107663 - timestamp: 1733611397256 + size: 111975 + timestamp: 1733709317063 - kind: conda name: aws-c-cal version: 0.8.1 - build: h35473ba_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.1-h35473ba_0.conda - sha256: c2d59d74e167b6df3c1a7addf0d37080b69a6b3dee2a30b3f2171a5d26c5a691 - md5: 97c0ccb4d43d880b38f237e746c29ead + build: h0f28dba_2 + build_number: 2 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.1-h0f28dba_2.conda + sha256: 023fa0d0618b652b0be5eac73d92fd47136351da7d331334c45d5dd1ee760401 + md5: 94faebd978282d2a4a8514141daec756 depends: - - aws-c-common >=0.10.3,<0.10.4.0a0 + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.5,<0.10.6.0a0 - libgcc >=13 - openssl >=3.3.1,<4.0a0 license: Apache-2.0 license_family: Apache - size: 49808 - timestamp: 1732038238504 + size: 47694 + timestamp: 1733390870810 - kind: conda name: aws-c-cal version: 0.8.1 - build: h5d7ee29_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.1-h5d7ee29_0.conda - sha256: 42d5e9fb695bc3b280ed7e625dcda110b6780ee471e227f1b92afce71ae4972c - md5: fc51a61831a676fe6f922450f51ab6af + build: h1aca5b9_2 + build_number: 2 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.1-h1aca5b9_2.conda + sha256: df203473e8675fc27ae5cb62bc09e336fe92655df0a0056e73087cb22aed287e + md5: 31d9e82aac5cd3fe399535bcec0f2975 depends: - - __osx >=11.0 - - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-common >=0.10.5,<0.10.6.0a0 + - libgcc >=13 - openssl >=3.3.1,<4.0a0 license: Apache-2.0 license_family: Apache - size: 40047 - timestamp: 1732038304022 + size: 49822 + timestamp: 1733390907734 - kind: conda name: aws-c-cal version: 0.8.1 - build: hecf86a2_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.1-hecf86a2_0.conda - sha256: 12cc2087503f4f0d3a5db84e791fb5e585866da728f888aa76e14330a092a681 - md5: 8350795be14a92d68847c0d4f3c1d59f + build: h4d88cd7_2 + build_number: 2 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.1-h4d88cd7_2.conda + sha256: 30e6bc4feea78a280553b084a960515e550dabfae0e63ba511be773c3a9f6b5a + md5: 3cb07f08e5aabe657b0b5fb13945e79a depends: - - __glibc >=2.17,<3.0.a0 - - aws-c-common >=0.10.3,<0.10.4.0a0 - - libgcc >=13 + - __osx >=11.0 + - aws-c-common >=0.10.5,<0.10.6.0a0 - openssl >=3.3.1,<4.0a0 license: Apache-2.0 license_family: Apache - size: 47569 - timestamp: 1732038156682 + size: 39878 + timestamp: 1733390962202 - kind: conda name: aws-c-common - version: 0.10.3 + version: 0.10.5 build: h5505292_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.10.3-h5505292_0.conda - sha256: bb2c1038726d31ffd2d35a5764f80bcd670b6a1c753aadfd261aecb9f88db6d8 - md5: 4150339e3b08db33fe4c436340b1d7f6 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.10.5-h5505292_0.conda + sha256: 54554886028d25b5c752369e7ae8321852e875fdc780ff9357b72a31f3e5d5b4 + md5: 49f049f8b10cf8c2c5a26660854fd21a depends: - __osx >=11.0 license: Apache-2.0 license_family: Apache - size: 221524 - timestamp: 1731567512057 + size: 222184 + timestamp: 1733324871298 - kind: conda name: aws-c-common - version: 0.10.3 + version: 0.10.5 build: h86ecc28_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-common-0.10.3-h86ecc28_0.conda - sha256: 95ca372a0e1bb8dad421751de6aa44d37d87dd69c33a48faca1ae6efa30f2af0 - md5: 64f523ba00b75fdcb33a4eea827d3d19 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-common-0.10.5-h86ecc28_0.conda + sha256: bdea66b7be9acd463bbfd583d2f80ff676d376c60480a2d3f9f7de7b4bf6d2b2 + md5: fcd238b0cc98927742a96aa411123e32 depends: - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 257859 - timestamp: 1731567310573 + size: 258257 + timestamp: 1733324684433 - kind: conda name: aws-c-common - version: 0.10.3 + version: 0.10.5 build: hb9d3cd8_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.10.3-hb9d3cd8_0.conda - sha256: 90bd2ff40b65acb62f11e2500ee7b7e85ac77d2e332429002f4c1da949bec27f - md5: ff3653946d34a6a6ba10babb139d96ef + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.10.5-hb9d3cd8_0.conda + sha256: 93e83e2a31f41bac2aa5eae8fbc7f1d31449a04a3df8a64ebcac2433f52a86ad + md5: d8288fbad9d809b9ca139b8beb6553ef depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 237137 - timestamp: 1731567278052 + size: 237114 + timestamp: 1733324723318 - kind: conda name: aws-c-compression version: 0.3.0 - build: h4c7db1d_2 - build_number: 2 + build: h10558d5_4 + build_number: 4 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-compression-0.3.0-h4c7db1d_2.conda - sha256: 8dba3d48a7230ccd2a6ea8d88c0e1b6caf0a39b14a2b2f0255a413fcfce8ad0a - md5: ee074857cec335bb83692771b06160a4 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-compression-0.3.0-h10558d5_4.conda + sha256: 45ea74461b6a5453325db2201ba9f728f20e89ead17730e93ddd7411a833c058 + md5: 8ceaf4396978c33bc695129425f12734 depends: - - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-common >=0.10.5,<0.10.6.0a0 - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 19696 - timestamp: 1731678729046 + size: 19742 + timestamp: 1733391062884 - kind: conda name: aws-c-compression version: 0.3.0 - build: h5d7ee29_2 - build_number: 2 + build: h4d88cd7_4 + build_number: 4 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-compression-0.3.0-h5d7ee29_2.conda - sha256: a52ea62bf08aed3af079e16d1738f3d2a7fcdd1d260289ae27ae96298e15d12a - md5: 15566c36b0cf5f314e3bee7f7cc796b5 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-compression-0.3.0-h4d88cd7_4.conda + sha256: b6900e82b553d18d5528322de236af3a7f64ccb3df08e8320142894144a5c716 + md5: 8c67ff0c68aea28be3efec6f8d799a19 depends: - __osx >=11.0 - - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-common >=0.10.5,<0.10.6.0a0 license: Apache-2.0 license_family: Apache - size: 18204 - timestamp: 1731678916439 + size: 18219 + timestamp: 1733391126008 - kind: conda name: aws-c-compression version: 0.3.0 - build: hf42f96a_2 - build_number: 2 + build: h9cc6398_4 + build_number: 4 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.3.0-hf42f96a_2.conda - sha256: 210ba4fff1c9500fe02de1dae311ce723bfa313a2d21b72accd745f736f56fce - md5: 257f4ae92fe11bd8436315c86468c39b + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.3.0-h9cc6398_4.conda + sha256: 045a3231b0aacb544ea9e348c22f863d96631f14a3a2b59413a72f61259a32a4 + md5: 076717670d5406e90070120314ff9b4f depends: - __glibc >=2.17,<3.0.a0 - - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-common >=0.10.5,<0.10.6.0a0 - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 19034 - timestamp: 1731678703956 + size: 19029 + timestamp: 1733390975089 - kind: conda name: aws-c-event-stream version: 0.5.0 - build: h873f81a_8 - build_number: 8 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.0-h873f81a_8.conda - sha256: 589f9a04c4c7a919410dde75ce93a6986efad6ed522ecd8e5c9c587ac18f0d34 - md5: 32bdd50b43fcc435a8dc5a3c66aafef0 + build: h9fa824c_10 + build_number: 10 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.0-h9fa824c_10.conda + sha256: 12f2ccc71bb993934cc489af359cb7399f671c3111f64fe2be9c8231819e11bd + md5: 9f6a7984f9ce3c6149fa36865060928a depends: - - __glibc >=2.17,<3.0.a0 - - aws-c-common >=0.10.3,<0.10.4.0a0 + - __osx >=11.0 + - aws-c-common >=0.10.5,<0.10.6.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - - libgcc >=13 - - libstdcxx >=13 + - libcxx >=18 license: Apache-2.0 license_family: Apache - size: 54020 - timestamp: 1731839177415 + size: 47460 + timestamp: 1733696263921 - kind: conda name: aws-c-event-stream version: 0.5.0 - build: h8ec3972_8 - build_number: 8 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.0-h8ec3972_8.conda - sha256: 81b98fc39e64d090af23b11621e467b4f943a19f61dda0fed5ad6397f06de5c7 - md5: ced9c97ddf61e4222d548e8bcc863b87 + build: ha9733bd_10 + build_number: 10 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-event-stream-0.5.0-ha9733bd_10.conda + sha256: e8189bdd1af1a3f68a460bcb3c852193cfdf7afa2f1a82d687d30055242b20e2 + md5: cb0877c6fcc93454f221ba4eba798cfc depends: - - __osx >=11.0 - - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-common >=0.10.5,<0.10.6.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - - libcxx >=18 + - libgcc >=13 + - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 47491 - timestamp: 1731839300212 + size: 55066 + timestamp: 1733696212604 - kind: conda name: aws-c-event-stream version: 0.5.0 - build: hba6c15e_8 - build_number: 8 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-event-stream-0.5.0-hba6c15e_8.conda - sha256: d3b74580045ee9d54a134ab1e5e00082d5d8a466980e94acc153188ee7375d08 - md5: 102f8b54630d79aff5e0c489f40f926e + build: hf811eff_10 + build_number: 10 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.0-hf811eff_10.conda + sha256: 3fbc86e70b543f26cc485f98714b7f789c4ece05128046458681893f43b7f5f1 + md5: 5046c78dd139a333b6acd7376a10e0a7 depends: - - aws-c-common >=0.10.3,<0.10.4.0a0 + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.5,<0.10.6.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 55354 - timestamp: 1731839242373 + size: 53973 + timestamp: 1733696170256 - kind: conda name: aws-c-http version: 0.9.2 - build: h48c6dea_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.2-h48c6dea_1.conda - sha256: cb68d557af1bdcbef668574836fbf39c4df0e4f377258e4d5bd14196acf9b992 - md5: a28dd36a1da76042bfb5579005cc6728 + build: h53134c8_3 + build_number: 3 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.2-h53134c8_3.conda + sha256: a4d217f89ad0e9326da57b2d9bd4cd5cb0a95423d092be7ed81e88fb075d4dbe + md5: 2ffd03180381a92332b673cefc602234 depends: - - __osx >=11.0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-common >=0.10.5,<0.10.6.0a0 - aws-c-compression >=0.3.0,<0.3.1.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 + - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 152660 - timestamp: 1732110368931 + size: 189812 + timestamp: 1733683248290 - kind: conda name: aws-c-http version: 0.9.2 - build: h697be72_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.2-h697be72_1.conda - sha256: 4d6557a00e74649301da78d7de7d108882ce89eb9d6c87efce30789b53a617cf - md5: a8b1a2c11a93e615f6e8f33175ff8ff0 + build: hc68443d_3 + build_number: 3 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.2-hc68443d_3.conda + sha256: 71be93cd1d8dfa5858939ba53431abaee859fbc98bdf9f5033bfa41af76b140a + md5: 6353604cb9803e63fce359388201514e depends: + - __osx >=11.0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-common >=0.10.5,<0.10.6.0a0 - aws-c-compression >=0.3.0,<0.3.1.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 190344 - timestamp: 1732110425530 + size: 153237 + timestamp: 1733683327609 - kind: conda name: aws-c-http version: 0.9.2 - build: ha5a3ca8_1 - build_number: 1 + build: hce7dc5d_3 + build_number: 3 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.2-ha5a3ca8_1.conda - sha256: 8ecb3d8411f58db4686635aedfe5d60b2b8870f9f9cafb471f3878dc61d21596 - md5: b2e017f8a4781ad3af9166edf10b65a8 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.2-hce7dc5d_3.conda + sha256: 7e864b6d4255c4edbd1b2c0f519849017d2a48e54b282748eaa8f9f0fc98a6f4 + md5: c0f54e8975ad42d2864f4b1918356b3b depends: - __glibc >=2.17,<3.0.a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-common >=0.10.5,<0.10.6.0a0 - aws-c-compression >=0.3.0,<0.3.1.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 197338 - timestamp: 1732110324356 + size: 197506 + timestamp: 1733683203582 - kind: conda name: aws-c-io version: 0.15.3 - build: h0155602_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-h0155602_1.conda - sha256: 7b8d97d51e5bb80191e07f16cac6f59068be30bf5906925a8f4159b3aab9093c - md5: 431c201b11eee90fd120844557a62b02 + build: h66499f2_3 + build_number: 3 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-h66499f2_3.conda + sha256: 86ff175fa5dced16cf41bcc5c353de080314fcb81f4aed326f29b9f22add9aad + md5: e64159c5b106a0365544cfe9d4ef79ec depends: + - __osx >=11.0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.3,<0.10.4.0a0 - - libgcc >=13 - - s2n >=1.5.9,<1.5.10.0a0 + - aws-c-common >=0.10.5,<0.10.6.0a0 license: Apache-2.0 license_family: Apache - size: 161664 - timestamp: 1732097310449 + size: 136845 + timestamp: 1733588465582 - kind: conda name: aws-c-io version: 0.15.3 - build: h30cefa2_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-h30cefa2_1.conda - sha256: d6f8d42259ca11507bd912b3cd3ff1a65d6d8c7ff67ae9ee9df1686c9bebbbcc - md5: 8b8dc361de09e5b6227165a876e55cb7 + build: h8aa8d47_3 + build_number: 3 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-h8aa8d47_3.conda + sha256: cb08b2e9258637e810ac283600b7de2d7a68f55a61e67226e9cce2537f36a06b + md5: 8ece20a51dafae96444e90c7ddaac41a depends: - - __osx >=11.0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-common >=0.10.5,<0.10.6.0a0 + - libgcc >=13 + - s2n >=1.5.9,<1.5.10.0a0 license: Apache-2.0 license_family: Apache - size: 136662 - timestamp: 1732097382517 + size: 161513 + timestamp: 1733588480960 - kind: conda name: aws-c-io version: 0.15.3 - build: ha35c7d9_1 - build_number: 1 + build: hfd54f12_3 + build_number: 3 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-ha35c7d9_1.conda - sha256: 2e9e13ed54f6da22ee5d06622f4165bcca253411997dad62225aecc54b25c0db - md5: 97960f380abe1ba3157fe63312e35b07 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-hfd54f12_3.conda + sha256: 6d0bd78d5c7d3ec586691d54c8aebc79d089358ff9e793f0cac857a1f977a1a0 + md5: c0b9f79cd2f5797b913415511bfa2cd6 depends: - __glibc >=2.17,<3.0.a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-common >=0.10.5,<0.10.6.0a0 - libgcc >=13 - s2n >=1.5.9,<1.5.10.0a0 license: Apache-2.0 license_family: Apache - size: 158012 - timestamp: 1732097264673 + size: 158115 + timestamp: 1733588386529 - kind: conda name: aws-c-mqtt version: 0.11.0 - build: h2cca791_9 - build_number: 9 + build: h2f8d747_11 + build_number: 11 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h2cca791_9.conda - sha256: c0ad176bab176a2983fb052de71037fc9357afd13b073511a7a440c1a8c6eff2 - md5: 090674d608454e979ce77bc8ee735868 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h2f8d747_11.conda + sha256: b66de0de359bfaec5084bdc78fda6dfbd8cf8e71c68a76dcd7b74e8a00ec6052 + md5: f4ccd7c1e73c662fd9a795147ca8ca9f depends: - - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-common >=0.10.5,<0.10.6.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 169690 - timestamp: 1733688313938 + size: 168898 + timestamp: 1733739548597 - kind: conda name: aws-c-mqtt version: 0.11.0 - build: h3aaadf4_9 - build_number: 9 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h3aaadf4_9.conda - sha256: 3cc99239c8dadfe55e4b9ba37d03c5d3308ddd8fe00792fab7c6b47c97655c07 - md5: ddb5dc7ac1ae424ca2b7a847765a0cb9 + build: ha3c2ba9_11 + build_number: 11 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-ha3c2ba9_11.conda + sha256: 187787bb41e7b616c9317c12c32a5027aae784d1f9335f9d6d34a3fa7ebcb1ec + md5: 93c5070d6f9b4cb2ed9de52ce247cebb depends: - - __osx >=11.0 - - aws-c-common >=0.10.3,<0.10.4.0a0 + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.5,<0.10.6.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 + - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 135051 - timestamp: 1733688394116 + size: 193829 + timestamp: 1733740033267 - kind: conda name: aws-c-mqtt version: 0.11.0 - build: h56e9cca_9 - build_number: 9 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h56e9cca_9.conda - sha256: c93c29b58482ca72d3f9a5710ad92194e809a9de988bcdcbae9ddd0f8ed484a6 - md5: f75642fe24ae4131f554cbacd6df53e3 + build: hd073cef_11 + build_number: 11 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-hd073cef_11.conda + sha256: d2ee2cdc651250a38f67b84ec65de3ba5493c760821d22c01edb8defd6393dc9 + md5: 0c1deb6e00f80b4aedcb2c4fcfea6407 depends: - - __glibc >=2.17,<3.0.a0 - - aws-c-common >=0.10.3,<0.10.4.0a0 + - __osx >=11.0 + - aws-c-common >=0.10.5,<0.10.6.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 194705 - timestamp: 1733688770217 + size: 134556 + timestamp: 1733739661152 - kind: conda name: aws-c-s3 version: 0.7.5 - build: h3c51cf6_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.5-h3c51cf6_2.conda - sha256: 98a2df8a5068183e55b4c6914a3513d403300be20c960842a9a229546b8e8e52 - md5: e326ddae95b3ec96a31aded04c834175 + build: h55e9418_4 + build_number: 4 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.5-h55e9418_4.conda + sha256: 04d7fd3574fa76c184f04630125a760afa4ae5d4109eec36f22fe127cc85e164 + md5: faec629f0eb306cfe17ed1615249e188 depends: + - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-common >=0.10.5,<0.10.6.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 @@ -1303,22 +1307,21 @@ packages: - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 117896 - timestamp: 1733694002769 + size: 113811 + timestamp: 1733717653326 - kind: conda name: aws-c-s3 version: 0.7.5 - build: h6ad95d4_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.5-h6ad95d4_2.conda - sha256: 103a478b18ead8f79aae9a4966b2879e9fbcfb0aa3b2e6c9b2811a76ba34610e - md5: 682c079ec089d47bb7142f12b3275e4f + build: h757e810_4 + build_number: 4 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.5-h757e810_4.conda + sha256: 3da5e1b88d68c5cb2eb1dd898a7c6192be9e1df0bd2733d39d6c0ffe9fc546a2 + md5: 96a657e5856e9e92755170630067f63c depends: - - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-common >=0.10.5,<0.10.6.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 @@ -1326,166 +1329,165 @@ packages: - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 113741 - timestamp: 1733693956970 + size: 117478 + timestamp: 1733717680655 - kind: conda name: aws-c-s3 version: 0.7.5 - build: hca3a6f1_2 - build_number: 2 + build: hb201fd0_4 + build_number: 4 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.5-hca3a6f1_2.conda - sha256: 53c4dc6e360ed6e1242c20fa43f7bfe67a41215e51cafab27dbd8aa91333040c - md5: 0b4e647cae3ce85ec991c6e3b8d12bda + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.5-hb201fd0_4.conda + sha256: c25c62173770b681083962b497a927f306e7f3d05b459dd59e4c12eaf49e9f0b + md5: 83b9775bbe5419cf4916e646e870b87a depends: - __osx >=11.0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-common >=0.10.5,<0.10.6.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 license: Apache-2.0 license_family: Apache - size: 97530 - timestamp: 1733694097526 + size: 97441 + timestamp: 1733717822438 - kind: conda name: aws-c-sdkutils version: 0.2.1 - build: h4c7db1d_1 - build_number: 1 + build: h10558d5_3 + build_number: 3 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.1-h4c7db1d_1.conda - sha256: 3d2b079a361888197894308a93fec95666c6abfcc86c979ae36f1f9cb223dfb3 - md5: 45437a9bad358b25f795e77218063baf + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.1-h10558d5_3.conda + sha256: 0f6a15d711bc4d6b2d2b8451ad46bf78af6876235ad56bf142644a4ce2240f52 + md5: 1ba505fc4243ad75507efa8976e1790f depends: - - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-common >=0.10.5,<0.10.6.0a0 - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 58256 - timestamp: 1731687032896 + size: 58123 + timestamp: 1733398238726 - kind: conda name: aws-c-sdkutils version: 0.2.1 - build: h5d7ee29_1 - build_number: 1 + build: h4d88cd7_3 + build_number: 3 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.1-h5d7ee29_1.conda - sha256: ed3b272b9a345142e62f0cf9ab2a9fa909c92e09691f6a06e98ff500a1f8a303 - md5: 0f1e5bc57d4567c9d9bec8d8982828ed + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.1-h4d88cd7_3.conda + sha256: a94ecde4e61de8effd9c93ba3527eb010773b5422d2d079ffdcd796ec77fcd4e + md5: 5ec333d73530fbfc2db670eeb6911bff depends: - __osx >=11.0 - - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-common >=0.10.5,<0.10.6.0a0 license: Apache-2.0 license_family: Apache - size: 50276 - timestamp: 1731687215375 + size: 49739 + timestamp: 1733398400904 - kind: conda name: aws-c-sdkutils version: 0.2.1 - build: hf42f96a_1 - build_number: 1 + build: h9cc6398_3 + build_number: 3 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.1-hf42f96a_1.conda - sha256: f6e38c79b124c34edb048c28ec58fdfc4ea8f7a218dc493195afbada48ba063b - md5: bbdd20fb1994a9f0ba98078fcb6c12ab + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.1-h9cc6398_3.conda + sha256: 917f679da38f162e191c5d6817b35fbf2ae0584b1d335bc229fd01e6077108ee + md5: 10bdb7fc3763760dcea1cd908ece6b2b depends: - __glibc >=2.17,<3.0.a0 - - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-common >=0.10.5,<0.10.6.0a0 - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 55738 - timestamp: 1731687063424 + size: 55864 + timestamp: 1733398187914 - kind: conda name: aws-checksums version: 0.2.2 - build: h4c7db1d_1 - build_number: 1 + build: h10558d5_3 + build_number: 3 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h4c7db1d_1.conda - sha256: b3fa060d4fe9e8fdb7b21b8b3c5fdb61df6f02973f74245a65869100f72a3931 - md5: af22e7e1c1af348a66f938aa66192f2c + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h10558d5_3.conda + sha256: 108860ae5d61a4dc0b0d91282d0171ba7fd69686c11b4bcbdcd3f8b8efc98adb + md5: 1ded47669f79301e4a3d1d3d469494c0 depends: - - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-common >=0.10.5,<0.10.6.0a0 - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 72081 - timestamp: 1731687244426 + size: 72203 + timestamp: 1733398350602 - kind: conda name: aws-checksums version: 0.2.2 - build: h5d7ee29_1 - build_number: 1 + build: h4d88cd7_3 + build_number: 3 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-h5d7ee29_1.conda - sha256: eb7ebe309b33a04329b3e51a7f10bb407815389dc37cc047f7d41f9c91f0d1b0 - md5: db1ed95988a8fe6c1ce0d94abdfc8e72 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-h4d88cd7_3.conda + sha256: 7d0d71e399fa6b0a1e686470d4a982396a9d0d29be29bf07591d83739cc29a0a + md5: 45409e27b510588196b9f116f86c2d51 depends: - __osx >=11.0 - - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-common >=0.10.5,<0.10.6.0a0 license: Apache-2.0 license_family: Apache - size: 70184 - timestamp: 1731687342560 + size: 70160 + timestamp: 1733398484776 - kind: conda name: aws-checksums version: 0.2.2 - build: hf42f96a_1 - build_number: 1 + build: h9cc6398_3 + build_number: 3 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-hf42f96a_1.conda - sha256: da802ace5448481c968cfec7e7a4f79f686f42df9de8e3f78c09a925c2882a79 - md5: d908d43d87429be24edfb20e96543c20 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-h9cc6398_3.conda + sha256: a3aea2fc8ccf85ae64c5ce9c4e507be37173b94909191480e5151c482a220e40 + md5: d6dd8b87b95195d8d26893611d94ba3b depends: - __glibc >=2.17,<3.0.a0 - - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-common >=0.10.5,<0.10.6.0a0 - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 72744 - timestamp: 1731687193373 + size: 72681 + timestamp: 1733398331530 - kind: conda name: aws-crt-cpp version: 0.29.7 - build: h318f0b1_3 - build_number: 3 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.7-h318f0b1_3.conda - sha256: 35100ad81adf31aa4e73ac2956e9a8ff277cc57d0db2db2f0e9c51012175eadd - md5: 9748d0527695a64aa2eb45e891ea188d + build: hb9a023b_5 + build_number: 5 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.7-hb9a023b_5.conda + sha256: d1d89918a1f6e08f16275d82218b2f73012cee2def3ad8f1a8d28af7497e66cc + md5: 70a976e616535dbab5e1f354734a238a depends: - - __glibc >=2.17,<3.0.a0 + - __osx >=11.0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-common >=0.10.5,<0.10.6.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - aws-c-s3 >=0.7.5,<0.7.6.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - - libgcc >=13 - - libstdcxx >=13 + - libcxx >=18 license: Apache-2.0 license_family: Apache - size: 355045 - timestamp: 1733744656604 + size: 236182 + timestamp: 1733767086227 - kind: conda name: aws-crt-cpp version: 0.29.7 - build: hacb6b83_3 - build_number: 3 + build: hc8d91e0_5 + build_number: 5 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.7-hacb6b83_3.conda - sha256: 6c0ece3ca494c2220fc052e608d52ea52bb361e536a14a1b3b36ebeede9de8b9 - md5: 27ce3ed5b7e55370a9fea2dda2b3245a + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.7-hc8d91e0_5.conda + sha256: c3be4f3f77ac7ba716228df1099eb68a5e7a4cbbe386a4732a28f33d6b780cc4 + md5: 8f14e3d651a08c9b2f85c6e5d359e250 depends: - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-common >=0.10.5,<0.10.6.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 @@ -1496,44 +1498,45 @@ packages: - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 283993 - timestamp: 1733744571881 + size: 284313 + timestamp: 1733766768643 - kind: conda name: aws-crt-cpp version: 0.29.7 - build: hc2c2bbc_3 - build_number: 3 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.7-hc2c2bbc_3.conda - sha256: 6a519151e7fa71fbc9d1cd3a526ea7591638af058a6cc0534e1cd418fd48b354 - md5: 5450324f7b48dff1f6ed5484bf830972 + build: hed26007_5 + build_number: 5 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.7-hed26007_5.conda + sha256: f996cb94f3ef212792f288a0f7c5201ac7f00bb43502702b76e408e50d80132f + md5: 7c64e4ac7a484fc525a4ce7b9baf709a depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-common >=0.10.5,<0.10.6.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - aws-c-s3 >=0.7.5,<0.7.6.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - - libcxx >=18 + - libgcc >=13 + - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 236331 - timestamp: 1733744737078 + size: 354783 + timestamp: 1733766766977 - kind: conda name: aws-sdk-cpp version: 1.11.458 - build: h5e41cbe_1 - build_number: 1 + build: h2d3f608_3 + build_number: 3 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h5e41cbe_1.conda - sha256: b45305787a78f2bf7ecabc401b5bfe451509b434dd041a0a554572a70302d2f3 - md5: 1861b1fb86b336f1f53faaac5a76046c + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h2d3f608_3.conda + sha256: b335dfee7b04117ddae857564300ed6795718e2305141c7d631dcc434503a261 + md5: 57bdfac803ce58e3a3256752d7e5aa6e depends: - - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-common >=0.10.5,<0.10.6.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - aws-crt-cpp >=0.29.7,<0.29.8.0a0 @@ -1544,55 +1547,55 @@ packages: - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 2910575 - timestamp: 1733576378398 + size: 2896174 + timestamp: 1733808114676 - kind: conda name: aws-sdk-cpp version: 1.11.458 - build: hac138a2_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-hac138a2_1.conda - sha256: fdb9c94d7524c52837643428b1aab4f35bed3ba2862a57e1b03e63038c7c146f - md5: bbdd9589b1a32a80b0e3f98a2a482542 + build: h39838b8_3 + build_number: 3 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-h39838b8_3.conda + sha256: b5ef3a956937d61b59b9dd4b8c23eeb0bc254c37a97028a50c3ff6c8df399deb + md5: 3a6c8f65692febdf791bece561b371c8 depends: - - __glibc >=2.17,<3.0.a0 - - aws-c-common >=0.10.3,<0.10.4.0a0 + - __osx >=11.0 + - aws-c-common >=0.10.5,<0.10.6.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - aws-crt-cpp >=0.29.7,<0.29.8.0a0 - libcurl >=8.10.1,<9.0a0 - - libgcc >=13 - - libstdcxx >=13 + - libcxx >=18 - libzlib >=1.3.1,<2.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 3071464 - timestamp: 1733576251149 + size: 2837854 + timestamp: 1733808787914 - kind: conda name: aws-sdk-cpp version: 1.11.458 - build: he4d6490_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-he4d6490_1.conda - sha256: 61abc03dfbe372b258b8b6790bf3ad3a3265e02ce24b6b22bfe8f2fcab94954a - md5: 2941213b750689ace0862a6d695bb740 + build: h571fd1c_3 + build_number: 3 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-h571fd1c_3.conda + sha256: c2f38374a6f4dd804f76c8a071bc7f7d37dfb43e194eb93a473ff789460c011b + md5: 374cf1add8af327b15b1b1e4873f4955 depends: - - __osx >=11.0 - - aws-c-common >=0.10.3,<0.10.4.0a0 + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.5,<0.10.6.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - aws-crt-cpp >=0.29.7,<0.29.8.0a0 - libcurl >=8.10.1,<9.0a0 - - libcxx >=18 + - libgcc >=13 + - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 2847256 - timestamp: 1733576733615 + size: 3062994 + timestamp: 1733808211748 - kind: conda name: azure-core-cpp version: 1.14.0 @@ -1871,18 +1874,19 @@ packages: - kind: conda name: backoff version: 2.2.1 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/backoff-2.2.1-pyhd8ed1ab_0.tar.bz2 - sha256: b1cf7df15741e5fbc57e22a3a89db427383335aaab22ddc1b30710deeb0130de - md5: 4600709bd85664d8606ae0c76642f8db + url: https://conda.anaconda.org/conda-forge/noarch/backoff-2.2.1-pyhd8ed1ab_1.conda + sha256: f334115c6b0c6c2cd0d28595365f205ec7eaa60bcc5ff91a75d7245f728be820 + md5: a38b801f2bcc12af80c2e02a9e4ce7d9 depends: - - python >=3.7 + - python >=3.9 license: MIT license_family: MIT - size: 17501 - timestamp: 1665004860081 + size: 18816 + timestamp: 1733771192649 - kind: conda name: brotli-python version: 1.1.0 @@ -2753,25 +2757,26 @@ packages: - kind: conda name: huggingface_hub version: 0.26.5 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.5-pyhd8ed1ab_0.conda - sha256: bdbf614d87155c7f9b8fe9c3d039528298119832e9f52959b15c522a9841eef7 - md5: 37236111cd92068e5af2f98cbb476642 + url: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.5-pyhd8ed1ab_1.conda + sha256: 0c75532d914a04c73222be298ed2c6868739dd475b1b1a9137c52abe79873952 + md5: 73937038e21117fe401f8ea64fbaeacc depends: - filelock - fsspec >=2023.5.0 - packaging >=20.9 - - python >=3.8 + - python >=3.9 - pyyaml >=5.1 - requests - tqdm >=4.42.1 - typing-extensions >=3.7.4.3 - typing_extensions >=3.7.4.3 license: Apache-2.0 - size: 274900 - timestamp: 1733637007500 + size: 275466 + timestamp: 1733852454004 - kind: conda name: hyperframe version: 6.0.1 @@ -3173,14 +3178,13 @@ packages: - kind: conda name: libarrow version: 18.1.0 - build: h3b07799_4_cpu - build_number: 4 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-h3b07799_4_cpu.conda - sha256: 8837dc6e60522eef63554654c45d18143006324c43391c6e8dc5d2b20997466d - md5: 27675c7172667268440306533e4928de + build: h1b535d6_6_cpu + build_number: 6 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-h1b535d6_6_cpu.conda + sha256: 087b579aebf351ca41c54214121d86a15a41c92051cbd432d6f3a3f58a8c31b0 + md5: 4c0ad68efba1113ac5833975c67b565d depends: - - __glibc >=2.17,<3.0.a0 - aws-crt-cpp >=0.29.7,<0.29.8.0a0 - aws-sdk-cpp >=1.11.458,<1.11.459.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 @@ -3195,36 +3199,35 @@ packages: - libbrotlidec >=1.1.0,<1.2.0a0 - libbrotlienc >=1.1.0,<1.2.0a0 - libgcc >=13 - - libgoogle-cloud >=2.31.0,<2.32.0a0 - - libgoogle-cloud-storage >=2.31.0,<2.32.0a0 + - libgoogle-cloud >=2.32.0,<2.33.0a0 + - libgoogle-cloud-storage >=2.32.0,<2.33.0a0 - libre2-11 >=2024.7.2 - libstdcxx >=13 - libutf8proc >=2.9.0,<2.10.0a0 - libzlib >=1.3.1,<2.0a0 - - lz4-c >=1.9.3,<1.10.0a0 + - lz4-c >=1.10.0,<1.11.0a0 - orc >=2.0.3,<2.0.4.0a0 - re2 - snappy >=1.2.1,<1.3.0a0 - zstd >=1.5.6,<1.6.0a0 constrains: - parquet-cpp <0.0a0 - - apache-arrow-proc =*=cpu - arrow-cpp <0.0a0 + - apache-arrow-proc =*=cpu license: Apache-2.0 - license_family: APACHE - size: 8793521 - timestamp: 1733607374384 + size: 8040629 + timestamp: 1733810319239 - kind: conda name: libarrow version: 18.1.0 - build: h86d57b8_4_cpu - build_number: 4 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-h86d57b8_4_cpu.conda - sha256: fe6b5eb4d6e71418343b62a0d322ede7be69999b28d9e492164c12e613cf3fa0 - md5: 23431b3fdbb32858d1533da5bc8fcc86 + build: h44a453e_6_cpu + build_number: 6 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-h44a453e_6_cpu.conda + sha256: abf17e99b03356a9d6248e965826c1352ff01b00d3a62cc51393bb0744d72803 + md5: 2cf6d608d6e66506f69797d5c6944c35 depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 - aws-crt-cpp >=0.29.7,<0.29.8.0a0 - aws-sdk-cpp >=1.11.458,<1.11.459.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 @@ -3232,40 +3235,42 @@ packages: - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 - bzip2 >=1.0.8,<2.0a0 + - gflags >=2.2.2,<2.3.0a0 - glog >=0.7.1,<0.8.0a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - libbrotlidec >=1.1.0,<1.2.0a0 - libbrotlienc >=1.1.0,<1.2.0a0 - - libcxx >=18 - - libgoogle-cloud >=2.31.0,<2.32.0a0 - - libgoogle-cloud-storage >=2.31.0,<2.32.0a0 + - libgcc >=13 + - libgoogle-cloud >=2.32.0,<2.33.0a0 + - libgoogle-cloud-storage >=2.32.0,<2.33.0a0 - libre2-11 >=2024.7.2 + - libstdcxx >=13 - libutf8proc >=2.9.0,<2.10.0a0 - libzlib >=1.3.1,<2.0a0 - - lz4-c >=1.9.3,<1.10.0a0 + - lz4-c >=1.10.0,<1.11.0a0 - orc >=2.0.3,<2.0.4.0a0 - re2 - snappy >=1.2.1,<1.3.0a0 - zstd >=1.5.6,<1.6.0a0 constrains: - parquet-cpp <0.0a0 - - apache-arrow-proc =*=cpu - arrow-cpp <0.0a0 + - apache-arrow-proc =*=cpu license: Apache-2.0 - license_family: APACHE - size: 5482797 - timestamp: 1733605365656 + size: 8786061 + timestamp: 1733810643966 - kind: conda name: libarrow version: 18.1.0 - build: ha2aff55_4_cpu - build_number: 4 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-ha2aff55_4_cpu.conda - sha256: 795950b73029fd4d3b7fee3427c39c7357287fd94244dd5a125ac0931d31aaa3 - md5: c4d60278cb00053df1a4f0600fd2ac2a + build: h4a2f8bd_6_cpu + build_number: 6 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-h4a2f8bd_6_cpu.conda + sha256: 9ed3ea1bc15005c0df187268ef91407afaa908cf82f36f5acbbf50ac24d7f806 + md5: 835cdd84195b84dc34d128bd5d3580b9 depends: + - __osx >=11.0 - aws-crt-cpp >=0.29.7,<0.29.8.0a0 - aws-sdk-cpp >=1.11.458,<1.11.459.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 @@ -3273,209 +3278,197 @@ packages: - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 - bzip2 >=1.0.8,<2.0a0 - - gflags >=2.2.2,<2.3.0a0 - glog >=0.7.1,<0.8.0a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - libbrotlidec >=1.1.0,<1.2.0a0 - libbrotlienc >=1.1.0,<1.2.0a0 - - libgcc >=13 - - libgoogle-cloud >=2.31.0,<2.32.0a0 - - libgoogle-cloud-storage >=2.31.0,<2.32.0a0 + - libcxx >=18 + - libgoogle-cloud >=2.32.0,<2.33.0a0 + - libgoogle-cloud-storage >=2.32.0,<2.33.0a0 - libre2-11 >=2024.7.2 - - libstdcxx >=13 - libutf8proc >=2.9.0,<2.10.0a0 - libzlib >=1.3.1,<2.0a0 - - lz4-c >=1.9.3,<1.10.0a0 + - lz4-c >=1.10.0,<1.11.0a0 - orc >=2.0.3,<2.0.4.0a0 - re2 - snappy >=1.2.1,<1.3.0a0 - zstd >=1.5.6,<1.6.0a0 constrains: - - parquet-cpp <0.0a0 - apache-arrow-proc =*=cpu - arrow-cpp <0.0a0 + - parquet-cpp <0.0a0 license: Apache-2.0 - license_family: APACHE - size: 8035987 - timestamp: 1733607600970 -- kind: conda - name: libarrow-acero - version: 18.1.0 - build: h1dc2043_4_cpu - build_number: 4 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-h1dc2043_4_cpu.conda - sha256: fe8cb6feeed0858cb8e7cc8889ae20165527934778adb8f7b1f2f5d1f7ade16d - md5: e4ed6162593fbb01f4d742db4215f70c - depends: - - __osx >=11.0 - - libarrow 18.1.0 h86d57b8_4_cpu - - libcxx >=18 - license: Apache-2.0 - license_family: APACHE - size: 483574 - timestamp: 1733605591770 + size: 5494797 + timestamp: 1733808145854 - kind: conda name: libarrow-acero version: 18.1.0 - build: h512cd83_4_cpu - build_number: 4 + build: h3b568fd_6_cpu + build_number: 6 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h512cd83_4_cpu.conda - sha256: 9e88f04409da9ca2fedc5f7bf0987ff28e96d08742e59672f744ec4624a4c991 - md5: d532c42abe13841806d97f4d9cd6dcf5 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h3b568fd_6_cpu.conda + sha256: fdb70e2499e59b730084ecd53008b361a6f6090b5fb49624feda06b7e84c7b8c + md5: c50907eefe2ae22d826e7cb2e4d712f5 depends: - - libarrow 18.1.0 ha2aff55_4_cpu + - libarrow 18.1.0 h1b535d6_6_cpu - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 - license_family: APACHE - size: 578174 - timestamp: 1733607685962 + size: 578091 + timestamp: 1733810378092 - kind: conda name: libarrow-acero version: 18.1.0 - build: h8bbc2ab_4_cpu - build_number: 4 + build: hcb10f89_6_cpu + build_number: 6 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-h8bbc2ab_4_cpu.conda - sha256: b3b4ddb2718c96c93d9b50dbf8f66265af9198b55852b4d3424c13a79ec3f84d - md5: 82bcbfe424868ce66b5ab986999f534d + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-hcb10f89_6_cpu.conda + sha256: a32fa1d71415afc02b5cf3cd4c0a6ec0af9e749308829cc65ff79689222ce479 + md5: 143f9288b64759a6427563f058c62f2b depends: - __glibc >=2.17,<3.0.a0 - - libarrow 18.1.0 h3b07799_4_cpu + - libarrow 18.1.0 h44a453e_6_cpu - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 - license_family: APACHE - size: 610772 - timestamp: 1733607505368 + size: 611745 + timestamp: 1733810698469 - kind: conda - name: libarrow-dataset + name: libarrow-acero version: 18.1.0 - build: h1dc2043_4_cpu - build_number: 4 + build: hf07054f_6_cpu + build_number: 6 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-h1dc2043_4_cpu.conda - sha256: 862fb21b871666495b4bb5e63f5fcb66b93c08893e92412b01e2717e081836eb - md5: bb940b4c583e4c8e5a9f193fabdb5840 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-hf07054f_6_cpu.conda + sha256: e1cae46409927470439ef9ae93ed09b3493d0579501ca9ebfa79ded212ee98d8 + md5: 97fc01254714e1572624baefdd7cc898 depends: - __osx >=11.0 - - libarrow 18.1.0 h86d57b8_4_cpu - - libarrow-acero 18.1.0 h1dc2043_4_cpu + - libarrow 18.1.0 h4a2f8bd_6_cpu - libcxx >=18 - - libparquet 18.1.0 hf4cc9e7_4_cpu license: Apache-2.0 - license_family: APACHE - size: 489457 - timestamp: 1733607417337 + size: 483713 + timestamp: 1733808246880 - kind: conda name: libarrow-dataset version: 18.1.0 - build: h512cd83_4_cpu - build_number: 4 + build: h3b568fd_6_cpu + build_number: 6 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h512cd83_4_cpu.conda - sha256: 4a9ffedc5570ce57a6864e46dcf36ec108557791b50fd43e82eb739f3717ff2f - md5: 1a6c409f45857d30f581a1a53abb2298 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h3b568fd_6_cpu.conda + sha256: 2a08f5a1017ff660c37ae0c24343a119cb2511c6edd69e23d0a5090a0967ea35 + md5: bb1548ad011c4f9107fcc4cc548473bf depends: - - libarrow 18.1.0 ha2aff55_4_cpu - - libarrow-acero 18.1.0 h512cd83_4_cpu + - libarrow 18.1.0 h1b535d6_6_cpu + - libarrow-acero 18.1.0 h3b568fd_6_cpu - libgcc >=13 - - libparquet 18.1.0 h34a048e_4_cpu + - libparquet 18.1.0 hfc78867_6_cpu - libstdcxx >=13 license: Apache-2.0 - license_family: APACHE - size: 561495 - timestamp: 1733607973097 + size: 559673 + timestamp: 1733810461646 - kind: conda name: libarrow-dataset version: 18.1.0 - build: h8bbc2ab_4_cpu - build_number: 4 + build: hcb10f89_6_cpu + build_number: 6 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-h8bbc2ab_4_cpu.conda - sha256: 9c898ab7377953b8c7218347fdb63376d4f977cabfb8fa6bd1b421a75b8cb335 - md5: fa31464c75b20c2f3ac8fc758e034887 + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-hcb10f89_6_cpu.conda + sha256: 74eeb178070002842d3ed721769399320e3a68a0843319eaf899a092a31def26 + md5: 20ca46a6bc714a6ab189d5b3f46e66d8 depends: - __glibc >=2.17,<3.0.a0 - - libarrow 18.1.0 h3b07799_4_cpu - - libarrow-acero 18.1.0 h8bbc2ab_4_cpu + - libarrow 18.1.0 h44a453e_6_cpu + - libarrow-acero 18.1.0 hcb10f89_6_cpu - libgcc >=13 - - libparquet 18.1.0 hf4f6db6_4_cpu + - libparquet 18.1.0 h081d1f1_6_cpu - libstdcxx >=13 license: Apache-2.0 - license_family: APACHE - size: 585517 - timestamp: 1733607943984 + size: 586627 + timestamp: 1733810842604 +- kind: conda + name: libarrow-dataset + version: 18.1.0 + build: hf07054f_6_cpu + build_number: 6 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-hf07054f_6_cpu.conda + sha256: 6eba942ce926419f74e6e0a7c3994a7d78ab6be47115e6bb70e02136554736be + md5: 0774276be6659aaa0007f1b0f6ee19b0 + depends: + - __osx >=11.0 + - libarrow 18.1.0 h4a2f8bd_6_cpu + - libarrow-acero 18.1.0 hf07054f_6_cpu + - libcxx >=18 + - libparquet 18.1.0 h636d7b7_6_cpu + license: Apache-2.0 + size: 489948 + timestamp: 1733809328231 - kind: conda name: libarrow-substrait version: 18.1.0 - build: h3644d33_4_cpu - build_number: 4 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h3644d33_4_cpu.conda - sha256: ac053b3efd1a2701e6f34195d90a0da21dca22d70916ae6b10a019c2be6cd44c - md5: ce3062cd5caa0bdafa7976535862e648 + build: h3ee7192_6_cpu + build_number: 6 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-h3ee7192_6_cpu.conda + sha256: bda6728db019dd0c409b1996ad9ef6ab0bcee3a94dc66a8045e8c1049c566055 + md5: aa313b3168caf98d00b3753f5ba27650 depends: + - __glibc >=2.17,<3.0.a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.1.0 ha2aff55_4_cpu - - libarrow-acero 18.1.0 h512cd83_4_cpu - - libarrow-dataset 18.1.0 h512cd83_4_cpu + - libarrow 18.1.0 h44a453e_6_cpu + - libarrow-acero 18.1.0 hcb10f89_6_cpu + - libarrow-dataset 18.1.0 hcb10f89_6_cpu - libgcc >=13 - libprotobuf >=5.28.2,<5.28.3.0a0 - libstdcxx >=13 license: Apache-2.0 - license_family: APACHE - size: 513745 - timestamp: 1733608111290 + size: 519989 + timestamp: 1733810903274 - kind: conda name: libarrow-substrait version: 18.1.0 - build: had74209_4_cpu - build_number: 4 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-had74209_4_cpu.conda - sha256: 29e44d6070d64cd4b357e02afeae233d2e90d917a008a2724c9cd463015f0319 - md5: bf261e5fa25ce4acc11a80bdc73b88b2 + build: h3ffb4b1_6_cpu + build_number: 6 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h3ffb4b1_6_cpu.conda + sha256: 9f78c55c5d7122e588a6f226cbf7e909c479d66ed18edc633d68324323d386b9 + md5: 5db2e6832397b8ca70a6f7b00e0c3629 depends: - - __glibc >=2.17,<3.0.a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.1.0 h3b07799_4_cpu - - libarrow-acero 18.1.0 h8bbc2ab_4_cpu - - libarrow-dataset 18.1.0 h8bbc2ab_4_cpu + - libarrow 18.1.0 h1b535d6_6_cpu + - libarrow-acero 18.1.0 h3b568fd_6_cpu + - libarrow-dataset 18.1.0 h3b568fd_6_cpu - libgcc >=13 - libprotobuf >=5.28.2,<5.28.3.0a0 - libstdcxx >=13 license: Apache-2.0 - license_family: APACHE - size: 519919 - timestamp: 1733608152065 + size: 515928 + timestamp: 1733810503359 - kind: conda name: libarrow-substrait version: 18.1.0 - build: hf3d3107_4_cpu - build_number: 4 + build: h86344ea_6_cpu + build_number: 6 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-hf3d3107_4_cpu.conda - sha256: 9d9ebd042b9e8561b64f057d2adb24d331a772ccf1af3ed2d8b5b1566729f236 - md5: c093b05dc6d1b6057342d3dd6f3bd0d8 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-h86344ea_6_cpu.conda + sha256: bafd9ca59ebb5ad34b77aff316ef7b59c5fb1eb8a7b6a15de8dcbdf3ce37556d + md5: c1c162f5bf569cff8bed6def705a899f depends: - __osx >=11.0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.1.0 h86d57b8_4_cpu - - libarrow-acero 18.1.0 h1dc2043_4_cpu - - libarrow-dataset 18.1.0 h1dc2043_4_cpu + - libarrow 18.1.0 h4a2f8bd_6_cpu + - libarrow-acero 18.1.0 hf07054f_6_cpu + - libarrow-dataset 18.1.0 hf07054f_6_cpu - libcxx >=18 - libprotobuf >=5.28.2,<5.28.3.0a0 license: Apache-2.0 - license_family: APACHE - size: 451982 - timestamp: 1733607898511 + size: 451623 + timestamp: 1733809487176 - kind: conda name: libblas version: 3.9.0 @@ -4328,12 +4321,12 @@ packages: timestamp: 1729089357313 - kind: conda name: libgoogle-cloud - version: 2.31.0 + version: 2.32.0 build: h3888205_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-2.31.0-h3888205_0.conda - sha256: 603b0bd55980f5bf97911b327c9e469cf953c482f112b561dc9c1c7608bbdc29 - md5: 5b3d9a0327c4f7c569162f10acaf6bb4 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-2.32.0-h3888205_0.conda + sha256: 36af2844ce8fafd477214d51117746144461132f76759a7d29963b4583b577be + md5: a40b948bf4eabcc1ce708c40ffd7c06d depends: - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 @@ -4342,21 +4335,21 @@ packages: - libgrpc >=1.67.1,<1.68.0a0 - libprotobuf >=5.28.2,<5.28.3.0a0 - libstdcxx >=13 - - openssl >=3.3.2,<4.0a0 + - openssl >=3.4.0,<4.0a0 constrains: - - libgoogle-cloud 2.31.0 *_0 + - libgoogle-cloud 2.32.0 *_0 license: Apache-2.0 license_family: Apache - size: 1246720 - timestamp: 1731122940037 + size: 1248560 + timestamp: 1733512309504 - kind: conda name: libgoogle-cloud - version: 2.31.0 + version: 2.32.0 build: h804f50b_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.31.0-h804f50b_0.conda - sha256: b2de99c83516236ff591d30436779f8345bcc11bb0ec76a7ca3a38a3b23b6423 - md5: 35ab838423b60f233391eb86d324a830 + url: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.32.0-h804f50b_0.conda + sha256: 126856add750013390dff664a3c3cd0f6f0cbbc683b0025a7ce9d1618968bc70 + md5: 3d96df4d6b1c88455e05b94ce8a14a53 depends: - __glibc >=2.17,<3.0.a0 - libabseil * cxx17* @@ -4366,21 +4359,21 @@ packages: - libgrpc >=1.67.1,<1.68.0a0 - libprotobuf >=5.28.2,<5.28.3.0a0 - libstdcxx >=13 - - openssl >=3.3.2,<4.0a0 + - openssl >=3.4.0,<4.0a0 constrains: - - libgoogle-cloud 2.31.0 *_0 + - libgoogle-cloud 2.32.0 *_0 license: Apache-2.0 license_family: Apache - size: 1248705 - timestamp: 1731122589027 + size: 1249557 + timestamp: 1733512191906 - kind: conda name: libgoogle-cloud - version: 2.31.0 + version: 2.32.0 build: h8d8be31_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-2.31.0-h8d8be31_0.conda - sha256: 184d650d55453a40935c128ea309088ae52e15a68cd87ab17ae7c77704251168 - md5: a338736f1514e6f999db8726fe0965b1 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-2.32.0-h8d8be31_0.conda + sha256: 722e49dbdc4486105d9f5b79a7ba4f9064602fe20c4015e97684c898ab8d3386 + md5: d7ab9e0eb7d55eac4943913073de61d7 depends: - __osx >=11.0 - libabseil * cxx17* @@ -4389,77 +4382,77 @@ packages: - libcxx >=18 - libgrpc >=1.67.1,<1.68.0a0 - libprotobuf >=5.28.2,<5.28.3.0a0 - - openssl >=3.3.2,<4.0a0 + - openssl >=3.4.0,<4.0a0 constrains: - - libgoogle-cloud 2.31.0 *_0 + - libgoogle-cloud 2.32.0 *_0 license: Apache-2.0 license_family: Apache - size: 873497 - timestamp: 1731121684939 + size: 876210 + timestamp: 1733512539476 - kind: conda name: libgoogle-cloud-storage - version: 2.31.0 + version: 2.32.0 build: h0121fbd_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.31.0-h0121fbd_0.conda - sha256: 3c38b0a80441f82323dc5a72b96c0dd7476bd5184fbfcdf825a8e15249c849af - md5: 568d6a09a6ed76337a7b97c84ae7c0f8 + url: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.32.0-h0121fbd_0.conda + sha256: d1b53d17df38b52a4bc6d1fe6af0e611d6480ce10b0af570c84bd38c8aa83b91 + md5: 877a5ec0431a5af83bf0cd0522bfe661 depends: - __glibc >=2.17,<3.0.a0 - libabseil - libcrc32c >=1.1.2,<1.2.0a0 - libcurl - libgcc >=13 - - libgoogle-cloud 2.31.0 h804f50b_0 + - libgoogle-cloud 2.32.0 h804f50b_0 - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - openssl license: Apache-2.0 license_family: Apache - size: 782150 - timestamp: 1731122728715 + size: 782108 + timestamp: 1733512329104 - kind: conda name: libgoogle-cloud-storage - version: 2.31.0 + version: 2.32.0 build: h7081f7f_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-storage-2.31.0-h7081f7f_0.conda - sha256: 01f5156584b816d34270a60a61f6b6561f2a01cb3b4eeb455a4e1808d763d486 - md5: 548fd1d31741ee6b13df4124db4a9f5f + url: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-storage-2.32.0-h7081f7f_0.conda + sha256: 609df2cf376ba66460f40143f835fc567cae4458df80705587cd2efd59c09bf1 + md5: 28f5ab5cf95170dfacd05d2bb301e573 depends: - __osx >=11.0 - libabseil - libcrc32c >=1.1.2,<1.2.0a0 - libcurl - libcxx >=18 - - libgoogle-cloud 2.31.0 h8d8be31_0 + - libgoogle-cloud 2.32.0 h8d8be31_0 - libzlib >=1.3.1,<2.0a0 - openssl license: Apache-2.0 license_family: Apache - size: 526858 - timestamp: 1731122580689 + size: 526895 + timestamp: 1733513644846 - kind: conda name: libgoogle-cloud-storage - version: 2.31.0 + version: 2.32.0 build: hb9b2b65_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-storage-2.31.0-hb9b2b65_0.conda - sha256: 1df4b7b59224d865a574003df12ee36d4a9939e8e7911b4472348730b9c2a0e8 - md5: 53897114489b4df10e1680bf189aa306 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-storage-2.32.0-hb9b2b65_0.conda + sha256: e120e7b6c9c9d25baa8ae903106babdd3c969523ae25278a615ed9de4bd0fc35 + md5: 925ab0ca33baca4fcfee585cecb94169 depends: - libabseil - libcrc32c >=1.1.2,<1.2.0a0 - libcurl - libgcc >=13 - - libgoogle-cloud 2.31.0 h3888205_0 + - libgoogle-cloud 2.32.0 h3888205_0 - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - openssl license: Apache-2.0 license_family: Apache - size: 737686 - timestamp: 1731123086764 + size: 737964 + timestamp: 1733512457785 - kind: conda name: libgrpc version: 1.67.1 @@ -4873,61 +4866,58 @@ packages: - kind: conda name: libparquet version: 18.1.0 - build: h34a048e_4_cpu - build_number: 4 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-h34a048e_4_cpu.conda - sha256: 488d82356fc4e6dfd6c10a4100c36af17db1b7eb72cce0bd8973014220dc3066 - md5: 46db27c16b29f48a37a40e3b2c9dcfe3 + build: h081d1f1_6_cpu + build_number: 6 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-h081d1f1_6_cpu.conda + sha256: c691a59f1ebb6cedbf827f49f6cf414e08b0eec911f589133e6a8321e8ac701c + md5: 68788df49ce7480187eb6387f15b2b67 depends: - - libarrow 18.1.0 ha2aff55_4_cpu + - __glibc >=2.17,<3.0.a0 + - libarrow 18.1.0 h44a453e_6_cpu - libgcc >=13 - libstdcxx >=13 - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 - license_family: APACHE - size: 1117278 - timestamp: 1733607904359 + size: 1204535 + timestamp: 1733810811118 - kind: conda name: libparquet version: 18.1.0 - build: hf4cc9e7_4_cpu - build_number: 4 + build: h636d7b7_6_cpu + build_number: 6 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-hf4cc9e7_4_cpu.conda - sha256: ccadab6395090b3cbc54243fcf5c6e49eaee46aaaa4221ca8ca7803a34bdc25d - md5: b462d962b5254923c5f65ce1c68dfc17 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-h636d7b7_6_cpu.conda + sha256: 88c1e810bede65c54f1ebc51c14400f9e8cf0fc1f88a8c0a99210e2f5dfed582 + md5: 9b333c3a38e55f6c1b8733222e22f528 depends: - __osx >=11.0 - - libarrow 18.1.0 h86d57b8_4_cpu + - libarrow 18.1.0 h4a2f8bd_6_cpu - libcxx >=18 - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 - license_family: APACHE - size: 873584 - timestamp: 1733607239103 + size: 873134 + timestamp: 1733809271282 - kind: conda name: libparquet version: 18.1.0 - build: hf4f6db6_4_cpu - build_number: 4 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-hf4f6db6_4_cpu.conda - sha256: f957b6ea5c4023448891f63f7b184a663d85aa5b2717b0e0ebfbfcf97b542751 - md5: f18b10bf19bb384183f2aa546e9f6f0a + build: hfc78867_6_cpu + build_number: 6 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-hfc78867_6_cpu.conda + sha256: 38aab34c422519c530d0e9a3e0ffd1624db1c1e163983c46ae341e831b2eb6b5 + md5: 1ab6d4a9a982920b9dc5f2c700777b27 depends: - - __glibc >=2.17,<3.0.a0 - - libarrow 18.1.0 h3b07799_4_cpu + - libarrow 18.1.0 h1b535d6_6_cpu - libgcc >=13 - libstdcxx >=13 - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 - license_family: APACHE - size: 1204859 - timestamp: 1733607834047 + size: 1117592 + timestamp: 1733810440129 - kind: conda name: libpng version: 1.6.44 @@ -5771,48 +5761,53 @@ packages: timestamp: 1733376089600 - kind: conda name: lz4-c - version: 1.9.4 - build: hb7217d7_0 + version: 1.10.0 + build: h286801f_1 + build_number: 1 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.9.4-hb7217d7_0.conda - sha256: fc343b8c82efe40819b986e29ba748366514e5ab94a1e1138df195af5f45fa24 - md5: 45505bec548634f7d05e02fb25262cb9 + url: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.10.0-h286801f_1.conda + sha256: 94d3e2a485dab8bdfdd4837880bde3dd0d701e2b97d6134b8806b7c8e69c8652 + md5: 01511afc6cc1909c5303cf31be17b44f depends: - - libcxx >=14.0.6 + - __osx >=11.0 + - libcxx >=18 license: BSD-2-Clause license_family: BSD - size: 141188 - timestamp: 1674727268278 + size: 148824 + timestamp: 1733741047892 - kind: conda name: lz4-c - version: 1.9.4 - build: hcb278e6_0 + version: 1.10.0 + build: h5888daf_1 + build_number: 1 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.9.4-hcb278e6_0.conda - sha256: 1b4c105a887f9b2041219d57036f72c4739ab9e9fe5a1486f094e58c76b31f5f - md5: 318b08df404f9c9be5712aaa5a6f0bb0 + url: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.10.0-h5888daf_1.conda + sha256: 47326f811392a5fd3055f0f773036c392d26fdb32e4d8e7a8197eed951489346 + md5: 9de5350a85c4a20c685259b889aa6393 depends: - - libgcc-ng >=12 - - libstdcxx-ng >=12 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 license: BSD-2-Clause license_family: BSD - size: 143402 - timestamp: 1674727076728 + size: 167055 + timestamp: 1733741040117 - kind: conda name: lz4-c - version: 1.9.4 - build: hd600fc2_0 + version: 1.10.0 + build: h5ad3122_1 + build_number: 1 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.9.4-hd600fc2_0.conda - sha256: 076870eb72411f41c46598c7582a2f3f42ba94c526a2d60a0c8f70a0a7a64429 - md5: 500145a83ed07ce79c8cef24252f366b + url: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.10.0-h5ad3122_1.conda + sha256: 67e55058d275beea76c1882399640c37b5be8be4eb39354c94b610928e9a0573 + md5: 6654e411da94011e8fbe004eacb8fe11 depends: - - libgcc-ng >=12 - - libstdcxx-ng >=12 + - libgcc >=13 + - libstdcxx >=13 license: BSD-2-Clause license_family: BSD - size: 163770 - timestamp: 1674727020254 + size: 184953 + timestamp: 1733740984533 - kind: conda name: markdown-it-py version: 3.0.0 @@ -5891,174 +5886,177 @@ packages: timestamp: 1733220925299 - kind: conda name: max - version: 24.6.0.dev2024120905 + version: 24.6.0.dev2024121016 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120905-release.conda - sha256: 37a6103a6b2c7886ed5837d41a819f1a127eef7e810b2b5ecfb03f7caf263514 - md5: b13d61319f43570ce681408a1b27d9d5 - depends: - - max-core ==24.6.0.dev2024120905 release - - max-python >=24.6.0.dev2024120905,<25.0a0 - - mojo-jupyter ==24.6.0.dev2024120905 release - - mblack ==24.6.0.dev2024120905 release + 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 license: LicenseRef-Modular-Proprietary - size: 9911 - timestamp: 1733721408716 + size: 9917 + timestamp: 1733849930254 - kind: conda name: max-core - version: 24.6.0.dev2024120905 + version: 24.6.0.dev2024121016 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120905-release.conda - sha256: 0f94138601ceab2c8b277c7d175d762840072cfdfd0ead7264fbd1ff9f70442d - md5: 00617be1a2fef13b5630d9cbe92f9d3c + url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024121016-release.conda + sha256: 9b26505259984bb428ab3ee931ae54762c7dc8169343eff23a77ebfbd04a9044 + md5: fc4ae46f8723642288111dd01e901813 depends: - - mblack ==24.6.0.dev2024120905 release + - mblack ==24.6.0.dev2024121016 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 247639885 - timestamp: 1733721408714 + size: 247664506 + timestamp: 1733849767240 - kind: conda name: max-core - version: 24.6.0.dev2024120905 + version: 24.6.0.dev2024121016 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120905-release.conda - sha256: 1aaf2ffb09d6a2aa6b65d76c381476eb88947470580a0d56909bfd578d5eb385 - md5: c7ff53814f0c254c75dc7ab8f0c66b38 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024121016-release.conda + sha256: 779ef6524a738c5f9c140f845d0febf9dbe321f76331dbd434a4d549251db0c2 + md5: 86075990f86559126140561a14c8aafc depends: - - mblack ==24.6.0.dev2024120905 release + - mblack ==24.6.0.dev2024121016 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 251498878 - timestamp: 1733721396377 + size: 251595828 + timestamp: 1733849930252 - kind: conda name: max-core - version: 24.6.0.dev2024120905 + version: 24.6.0.dev2024121016 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120905-release.conda - sha256: 00cc8ce6adc131b858df51423201b8f028aa944ac09e56c563a1108c22eaccd2 - md5: 71554a4c0e81a1034908bc1cb716b30b + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024121016-release.conda + sha256: 3f2e56d822eca8789ee72e6d1eaa95fa2d633fa5a4991f73b5cbf64d62e2d73d + md5: 1928c2f7f79e2587edf7dd1be10bb2f7 depends: - - mblack ==24.6.0.dev2024120905 release + - mblack ==24.6.0.dev2024121016 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 212030191 - timestamp: 1733721567995 + size: 212115307 + timestamp: 1733850300421 - kind: conda name: max-python - version: 24.6.0.dev2024120905 + version: 24.6.0.dev2024121016 build: 3.11release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120905-3.11release.conda - sha256: 94d3d821551ee202ef270d4fbce8003f35f33d0cc98a92b17f1739caa5623812 - md5: 57061ee2198633af94d4713cdba1ebd7 + url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024121016-3.11release.conda + sha256: 2f24f2a838446515ebb49c3070c519d49920cc39f92a83314ff23737af1f9d84 + md5: 6326520f38d19d49f633ea77b0e8bfbc depends: - - max-core ==24.6.0.dev2024120905 release + - max-core ==24.6.0.dev2024121016 release - python 3.11.* - - pillow - fastapi - httpx - - numpy >=1.18,<2.0 - huggingface_hub + - numpy >=1.18,<2.0 - opentelemetry-api - opentelemetry-exporter-otlp-proto-http >=1.27.0 - opentelemetry-exporter-prometheus >=0.48b0 - opentelemetry-sdk >=1.27.0 + - pillow - pydantic-settings >=2.4.0,<3 - pydantic >=2.4.0,<3 - pyinstrument - python-json-logger - sse-starlette >=2.1.3,<3 - transformers + - typing_extensions - uvicorn - python_abi 3.11.* *_cp311 arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 123763299 - timestamp: 1733721408721 + size: 123880936 + timestamp: 1733849767247 - kind: conda name: max-python - version: 24.6.0.dev2024120905 + version: 24.6.0.dev2024121016 build: 3.11release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120905-3.11release.conda - sha256: 90b94a041502fd79e408c5ab5c9108e6411228fc761c11eab0a568d4a193ed0c - md5: 920b32c37e877ed3073f6ad94f614e8b + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024121016-3.11release.conda + sha256: 9224e8520677d4c2b4825dd9a817e35d1d53f8cd9c3f60bd9bcf17918ace0015 + md5: 4897a8cad68a55360727e3b7be35f94a depends: - - max-core ==24.6.0.dev2024120905 release + - max-core ==24.6.0.dev2024121016 release - python 3.11.* - - pillow - fastapi - httpx - - numpy >=1.18,<2.0 - huggingface_hub + - numpy >=1.18,<2.0 - opentelemetry-api - opentelemetry-exporter-otlp-proto-http >=1.27.0 - opentelemetry-exporter-prometheus >=0.48b0 - opentelemetry-sdk >=1.27.0 + - pillow - pydantic-settings >=2.4.0,<3 - pydantic >=2.4.0,<3 - pyinstrument - python-json-logger - sse-starlette >=2.1.3,<3 - transformers + - typing_extensions - uvicorn - python_abi 3.11.* *_cp311 arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 127444260 - timestamp: 1733721396385 + size: 127531643 + timestamp: 1733849930260 - kind: conda name: max-python - version: 24.6.0.dev2024120905 + version: 24.6.0.dev2024121016 build: 3.11release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120905-3.11release.conda - sha256: 10ee1c9e5cc1b176238d018234979c15ec95aa8a9795d2917235bc6eda4c730f - md5: 9fb0abe3fe34b82bf8937091140967f0 + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024121016-3.11release.conda + sha256: 597742dd59d02f97bd46d90a3b112c5c4c0b269f3033be949f084f182b0e0d0b + md5: 5f6bc1ac73ca9cd93ca918a72f1342aa depends: - - max-core ==24.6.0.dev2024120905 release + - max-core ==24.6.0.dev2024121016 release - python 3.11.* - - pillow - fastapi - httpx - - numpy >=1.18,<2.0 - huggingface_hub + - numpy >=1.18,<2.0 - opentelemetry-api - opentelemetry-exporter-otlp-proto-http >=1.27.0 - opentelemetry-exporter-prometheus >=0.48b0 - opentelemetry-sdk >=1.27.0 + - pillow - pydantic-settings >=2.4.0,<3 - pydantic >=2.4.0,<3 - pyinstrument - python-json-logger - sse-starlette >=2.1.3,<3 - transformers + - typing_extensions - uvicorn - python_abi 3.11.* *_cp311 arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 112461801 - timestamp: 1733721567997 + size: 112597602 + timestamp: 1733850300424 - kind: conda name: mblack - version: 24.6.0.dev2024120905 + version: 24.6.0.dev2024121016 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120905-release.conda - sha256: e302e262a58592b5b8614829237760967d685cb20a44e54981916eb6c2b6b7a2 - md5: b34a59910660011ad1f42bfc1ae4ae54 + url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024121016-release.conda + sha256: f9acaa65326bbc7f7e3158b1e20b0cdc7ac7da0ca925278566da7f80731146b5 + md5: 6e4496ad926e9f2e8c187f3c1cdd6a0c depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -6068,8 +6066,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130740 - timestamp: 1733721408720 + size: 130747 + timestamp: 1733849930259 - kind: conda name: mdurl version: 0.1.2 @@ -6088,21 +6086,21 @@ packages: timestamp: 1733255681319 - kind: conda name: mojo-jupyter - version: 24.6.0.dev2024120905 + version: 24.6.0.dev2024121016 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120905-release.conda - sha256: bb71277508a55875b6011651bc825599e26a47145ab1e9c4e7c2abd853200a00 - md5: 4fc85c9cb1efe841b69d339d4da5b3a1 + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024121016-release.conda + sha256: e2a2514e4570f219e25f3f6f948d9035723b80df4fb9209598f34af17239a4f6 + md5: 0b20302cee375040ce15e8b795d7cda4 depends: - - max-core ==24.6.0.dev2024120905 release + - max-core ==24.6.0.dev2024121016 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 11366 - timestamp: 1733721408720 + size: 23064 + timestamp: 1733849930259 - kind: conda name: multidict version: 6.1.0 @@ -6340,57 +6338,56 @@ packages: timestamp: 1707226297967 - kind: conda name: openjpeg - version: 2.5.2 - build: h0d9d63b_0 + version: 2.5.3 + build: h3f56577_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/openjpeg-2.5.2-h0d9d63b_0.conda - sha256: d83375856601bc67c11295b537548a937a6896ede9d0a51d78bf5e921ab07c6f - md5: fd2898519e839d5ceb778343f39a3176 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/openjpeg-2.5.3-h3f56577_0.conda + sha256: 92d310033e20538e896f4e4b1ea4205eb6604eee7c5c651c4965a0d8d3ca0f1d + md5: 04231368e4af50d11184b50e14250993 depends: - - libgcc-ng >=12 - - libpng >=1.6.43,<1.7.0a0 - - libstdcxx-ng >=12 - - libtiff >=4.6.0,<4.8.0a0 - - libzlib >=1.2.13,<2.0.0a0 + - libgcc >=13 + - libpng >=1.6.44,<1.7.0a0 + - libstdcxx >=13 + - libtiff >=4.7.0,<4.8.0a0 + - libzlib >=1.3.1,<2.0a0 license: BSD-2-Clause - license_family: BSD - size: 374964 - timestamp: 1709159226478 + size: 377796 + timestamp: 1733816683252 - kind: conda name: openjpeg - version: 2.5.2 - build: h488ebb8_0 + version: 2.5.3 + build: h5fbd93e_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.2-h488ebb8_0.conda - sha256: 5600a0b82df042bd27d01e4e687187411561dfc11cc05143a08ce29b64bf2af2 - md5: 7f2e286780f072ed750df46dc2631138 + url: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.3-h5fbd93e_0.conda + sha256: 5bee706ea5ba453ed7fd9da7da8380dd88b865c8d30b5aaec14d2b6dd32dbc39 + md5: 9e5816bc95d285c115a3ebc2f8563564 depends: - - libgcc-ng >=12 - - libpng >=1.6.43,<1.7.0a0 - - libstdcxx-ng >=12 - - libtiff >=4.6.0,<4.8.0a0 - - libzlib >=1.2.13,<2.0.0a0 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libpng >=1.6.44,<1.7.0a0 + - libstdcxx >=13 + - libtiff >=4.7.0,<4.8.0a0 + - libzlib >=1.3.1,<2.0a0 license: BSD-2-Clause - license_family: BSD - size: 341592 - timestamp: 1709159244431 + size: 342988 + timestamp: 1733816638720 - kind: conda name: openjpeg - version: 2.5.2 - build: h9f1df11_0 + version: 2.5.3 + build: h8a3d83b_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/openjpeg-2.5.2-h9f1df11_0.conda - sha256: 472d6eaffc1996e6af35ec8e91c967f472a536a470079bfa56383cc0dbf4d463 - md5: 5029846003f0bc14414b9128a1f7c84b + url: https://conda.anaconda.org/conda-forge/osx-arm64/openjpeg-2.5.3-h8a3d83b_0.conda + sha256: 1d59bc72ca7faac06d349c1a280f5cfb8a57ee5896f1e24225a997189d7418c7 + md5: 4b71d78648dbcf68ce8bf22bb07ff838 depends: - - libcxx >=16 - - libpng >=1.6.43,<1.7.0a0 - - libtiff >=4.6.0,<4.8.0a0 - - libzlib >=1.2.13,<2.0.0a0 + - __osx >=11.0 + - libcxx >=18 + - libpng >=1.6.44,<1.7.0a0 + - libtiff >=4.7.0,<4.8.0a0 + - libzlib >=1.3.1,<2.0a0 license: BSD-2-Clause - license_family: BSD - size: 316603 - timestamp: 1709159627299 + size: 319362 + timestamp: 1733816781741 - kind: conda name: openssl version: 3.4.0 @@ -6453,6 +6450,7 @@ packages: - python >=3.9 - setuptools >=16.0 license: Apache-2.0 + license_family: APACHE size: 44242 timestamp: 1733734361129 - kind: conda @@ -6531,12 +6529,13 @@ packages: - kind: conda name: opentelemetry-sdk version: 1.28.2 - build: pyhff2d567_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.28.2-pyhff2d567_0.conda - sha256: 67c5be0f2b81b329d273f1f24f985a53e000b4b42b8338b56375d75aa8da5bb1 - md5: 742115714b2cbfa599e9f78495233d1a + url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.28.2-pyhd8ed1ab_1.conda + sha256: 9f48ec749f0738910fdd6750f9655f16949182b5379dd2c0771104d3e74bfd74 + md5: bfe29ef92f3a04ab8e59e4f97b28785c depends: - opentelemetry-api 1.28.2 - opentelemetry-semantic-conventions 0.49b2 @@ -6545,8 +6544,8 @@ packages: - typing_extensions >=3.7.4 license: Apache-2.0 license_family: APACHE - size: 78017 - timestamp: 1732070451972 + size: 78090 + timestamp: 1733768582451 - kind: conda name: opentelemetry-semantic-conventions version: 0.49b2 @@ -6562,72 +6561,76 @@ packages: - opentelemetry-api 1.28.2 - python >=3.9 license: Apache-2.0 + license_family: APACHE size: 81099 timestamp: 1733749104727 - kind: conda name: orc version: 2.0.3 - build: h121fd32_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/orc-2.0.3-h121fd32_0.conda - sha256: 4759fd0c3f06c035146100e22ee36a312c9a8226654bd2973e9ca9ac5de5cf1f - md5: 39995f7406b949c1bef74f0c7277afb3 + build: h3c55218_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/orc-2.0.3-h3c55218_1.conda + sha256: 154b26bc4d586de33765a155c9b79ebd7f5bb36c2bbf4b8854e1631bca8d21af + md5: 0a51a3cf028b845c46ec0d1ea2d18629 depends: - - __osx >=11.0 - - libcxx >=18 + - libgcc >=13 - libprotobuf >=5.28.2,<5.28.3.0a0 + - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - - lz4-c >=1.9.3,<1.10.0a0 + - lz4-c >=1.10.0,<1.11.0a0 - snappy >=1.2.1,<1.3.0a0 - tzdata - zstd >=1.5.6,<1.6.0a0 license: Apache-2.0 license_family: Apache - size: 438254 - timestamp: 1731665228473 + size: 1165179 + timestamp: 1733509923825 - kind: conda name: orc version: 2.0.3 - build: h90de224_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/orc-2.0.3-h90de224_0.conda - sha256: 7969db50268b65c2edb14be2e22bfff5656f36336eb5421d53030d29c037fec1 - md5: c07ba3025fe20ccbab9cd7c615953d6f + build: h97ab989_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/orc-2.0.3-h97ab989_1.conda + sha256: 9de7e2746fde57c9b7f08ee87142014f6bb9b2d3a506839ea3e98baa99711576 + md5: 2f46eae652623114e112df13fae311cf depends: + - __glibc >=2.17,<3.0.a0 - libgcc >=13 - libprotobuf >=5.28.2,<5.28.3.0a0 - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - - lz4-c >=1.9.3,<1.10.0a0 + - lz4-c >=1.10.0,<1.11.0a0 - snappy >=1.2.1,<1.3.0a0 - tzdata - zstd >=1.5.6,<1.6.0a0 license: Apache-2.0 license_family: Apache - size: 1170439 - timestamp: 1731665024334 + size: 1189462 + timestamp: 1733509801323 - kind: conda name: orc version: 2.0.3 - build: he039a57_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/orc-2.0.3-he039a57_0.conda - sha256: 9657ae19d6541fe67a61ef0c26ba1012ec508920b49afa897962c7d4b263ba35 - md5: 052499acd6d6b79952197a13b23e2600 + build: hbcee414_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/orc-2.0.3-hbcee414_1.conda + sha256: e5e72438a3cd967ebc774070e8c49500d2d6d4175f349400b327fee75d3bfc05 + md5: e808cf7819eaa1735c8790d7f9f482c7 depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 + - __osx >=11.0 + - libcxx >=18 - libprotobuf >=5.28.2,<5.28.3.0a0 - - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - - lz4-c >=1.9.3,<1.10.0a0 + - lz4-c >=1.10.0,<1.11.0a0 - snappy >=1.2.1,<1.3.0a0 - tzdata - zstd >=1.5.6,<1.6.0a0 license: Apache-2.0 license_family: Apache - size: 1187593 - timestamp: 1731664886527 + size: 437391 + timestamp: 1733510118673 - kind: conda name: packaging version: '24.2' @@ -7222,20 +7225,20 @@ packages: - kind: conda name: pydantic-settings version: 2.6.1 - build: pyh3cfb1c2_0 + build: pyh3cfb1c2_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.6.1-pyh3cfb1c2_0.conda - sha256: b3f331d69f7f3b3272e8e203211bfe39ba728a61fadc9b5c2f091b50084f0187 - md5: 412f950a65ceea20b06263f65d689f6b + url: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.6.1-pyh3cfb1c2_1.conda + sha256: 8cc37e827f0098d07743f57f968283cefce6c11562d9241aba990acc23aedb56 + md5: deabf8afc8d987f20174ef0d8d9b549e depends: - pydantic >=2.7.0 - - python >=3.8 + - python >=3.9 - python-dotenv >=0.21.0 license: MIT - license_family: MIT - size: 30618 - timestamp: 1730473755879 + size: 30832 + timestamp: 1733851937909 - kind: conda name: pygments version: 2.18.0 diff --git a/examples/notebooks/magic.lock b/examples/notebooks/magic.lock index 9782182c18..b98790de44 100644 --- a/examples/notebooks/magic.lock +++ b/examples/notebooks/magic.lock @@ -9,7 +9,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.9-py312h178313f_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.10-py312h178313f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.7.0-pyhd8ed1ab_0.conda @@ -19,26 +19,26 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-ha4f867e_12.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.1-hecf86a2_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.10.3-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.3.0-hf42f96a_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.0-h873f81a_8.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.2-ha5a3ca8_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-ha35c7d9_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h56e9cca_9.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.5-h6ad95d4_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.1-hf42f96a_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-hf42f96a_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.7-h318f0b1_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-hac138a2_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-h8c8080f_14.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.1-h0f28dba_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.10.5-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.3.0-h9cc6398_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.0-hf811eff_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.2-hce7dc5d_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-hfd54f12_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-ha3c2ba9_11.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.5-h55e9418_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.1-h9cc6398_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-h9cc6398_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.7-hed26007_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-h571fd1c_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.10.0-h113e628_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.13.0-h3cf044e_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-common-cpp-12.8.0-h736e048_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-files-datalake-cpp-12.12.0-ha633028_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.16.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/backoff-2.2.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/backoff-2.2.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.12.3-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py312h2ec8cdc_2.conda @@ -81,7 +81,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/httptools-0.6.4-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-7.0.2-pyha770c72_0.conda @@ -102,7 +102,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.10.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.14.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.3.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.3.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 @@ -111,10 +111,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_h5888daf_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-h3b07799_4_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-h8bbc2ab_4_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-h8bbc2ab_4_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-had74209_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-h44a453e_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-hcb10f89_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-hcb10f89_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-h3ee7192_6_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-25_linux64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hb9d3cd8_2.conda @@ -133,8 +133,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hd5240d6_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h77fa898_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.31.0-h804f50b_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.31.0-h0121fbd_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.32.0-h804f50b_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.32.0-h0121fbd_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.67.1-hc2c308b_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-hd590300_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda @@ -143,7 +143,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.28-pthreads_h94d23a6_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-hf4f6db6_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-h081d1f1_6_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.44-hadc24fc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.2-h5b01275_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_1.conda @@ -162,17 +162,17 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.5-h0d44e9d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.9.4-hcb278e6_0.conda + - 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.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.dev2024120905-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120905-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120905-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120905-release.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.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.dev2024120905-release.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.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 @@ -183,16 +183,16 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.2-h488ebb8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.3-h5fbd93e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.0-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.28.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.28.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-prometheus-1.12.0rc1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.28.2-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.28.2-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.28.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh3cfb1c2_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/orc-2.0.3-he039a57_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/orc-2.0.3-h97ab989_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.2-py312h1d6d2e6_1.conda @@ -218,7 +218,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.3-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.27.1-py312h12e396e_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.6.1-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.6.1-pyh3cfb1c2_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyinstrument-5.0.0-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda @@ -297,7 +297,7 @@ environments: linux-aarch64: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.9-py312hcc812fe_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.10-py312hcc812fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.7.0-pyhd8ed1ab_0.conda @@ -307,26 +307,26 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-h89ba3c0_12.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.1-h35473ba_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-common-0.10.3-h86ecc28_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-compression-0.3.0-h4c7db1d_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-event-stream-0.5.0-hba6c15e_8.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.2-h697be72_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-h0155602_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h2cca791_9.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.5-h3c51cf6_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.1-h4c7db1d_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h4c7db1d_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.7-hacb6b83_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h5e41cbe_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-hb4dd4bb_14.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.1-h1aca5b9_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-common-0.10.5-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-compression-0.3.0-h10558d5_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-event-stream-0.5.0-ha9733bd_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.2-h53134c8_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-h8aa8d47_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h2f8d747_11.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.5-h757e810_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.1-h10558d5_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h10558d5_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.7-hc8d91e0_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h2d3f608_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-core-cpp-1.14.0-h1887c18_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-identity-cpp-1.10.0-h47b0b28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-blobs-cpp-12.13.0-h185ecfd_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-common-cpp-12.8.0-h1b94036_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-files-datalake-cpp-12.12.0-h37d6d07_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.16.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/backoff-2.2.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/backoff-2.2.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.12.3-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/brotli-python-1.1.0-py312h6f74592_2.conda @@ -369,7 +369,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/httptools-0.6.4-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda @@ -391,7 +391,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.10.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.14.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.3.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.3.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/keyutils-1.6.1-h4e544f5_0.tar.bz2 @@ -400,10 +400,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.0.0-h4de3ea5_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h5ad3122_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-ha2aff55_4_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h512cd83_4_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h512cd83_4_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h3644d33_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-h1b535d6_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h3b568fd_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h3b568fd_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h3ffb4b1_6_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-25_linuxaarch64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlicommon-1.1.0-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlidec-1.1.0-h86ecc28_2.conda @@ -422,8 +422,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-2.31.0-h3888205_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-storage-2.31.0-hb9b2b65_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-2.32.0-h3888205_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-storage-2.32.0-hb9b2b65_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgrpc-1.67.1-h36c5df4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libiconv-1.17-h31becfc_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libjpeg-turbo-3.0.0-h31becfc_1.conda @@ -432,7 +432,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnghttp2-1.64.0-hc8609a4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.28-pthreads_h9d3fd7e_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-h34a048e_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-hfc78867_6_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.44-hc4a20ef_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.2-h029595c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_1.conda @@ -451,17 +451,17 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.5-h2e0c361_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.9.4-hd600fc2_0.conda + - 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.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.dev2024120905-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120905-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120905-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120905-release.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.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.dev2024120905-release.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.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 @@ -472,16 +472,16 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openjpeg-2.5.2-h0d9d63b_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openjpeg-2.5.3-h3f56577_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.0-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.28.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.28.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-prometheus-1.12.0rc1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.28.2-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.28.2-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.28.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh3cfb1c2_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/orc-2.0.3-h90de224_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/orc-2.0.3-h3c55218_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pandas-2.2.2-py312h14eacfc_1.conda @@ -507,7 +507,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.3-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pydantic-core-2.27.1-py312h8cbf658_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.6.1-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.6.1-pyh3cfb1c2_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyinstrument-5.0.0-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda @@ -585,7 +585,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.6-h02f22dd_0.conda osx-arm64: - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.9-py312h998013c_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.10-py312h998013c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.7.0-pyhd8ed1ab_0.conda @@ -596,26 +596,26 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-h35eccd0_12.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.1-h5d7ee29_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.10.3-h5505292_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-compression-0.3.0-h5d7ee29_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.0-h8ec3972_8.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.2-h48c6dea_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-h30cefa2_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h3aaadf4_9.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.5-hca3a6f1_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.1-h5d7ee29_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-h5d7ee29_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.7-hc2c2bbc_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-he4d6490_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-h93897a1_14.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.1-h4d88cd7_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.10.5-h5505292_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-compression-0.3.0-h4d88cd7_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.0-h9fa824c_10.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.2-hc68443d_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-h66499f2_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-hd073cef_11.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.5-hb201fd0_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.1-h4d88cd7_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-h4d88cd7_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.7-hb9a023b_5.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-h39838b8_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.14.0-hd50102c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.10.0-hc602bab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-blobs-cpp-12.13.0-h7585a09_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-common-cpp-12.8.0-h9ca1f76_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-files-datalake-cpp-12.12.0-hcdd55da_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.16.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/backoff-2.2.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/backoff-2.2.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.12.3-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py312hde4cb15_2.conda @@ -658,7 +658,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/httptools-0.6.4-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda @@ -680,17 +680,17 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.10.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.14.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.3.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.3.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.16-ha0e7c42_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_hf9b8971_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-h86d57b8_4_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-h1dc2043_4_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-h1dc2043_4_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-hf3d3107_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-h4a2f8bd_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-hf07054f_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-hf07054f_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-h86344ea_6_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-25_osxarm64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.1.0-hd74edd7_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.1.0-hd74edd7_2.conda @@ -707,8 +707,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-2.31.0-h8d8be31_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-storage-2.31.0-h7081f7f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-2.32.0-h8d8be31_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-storage-2.32.0-h7081f7f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgrpc-1.67.1-hc70892a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.17-h0d3ecfb_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.0.0-hb547adb_1.conda @@ -716,7 +716,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.3-h39f12f2_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.64.0-h6d7220d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.28-openmp_hf332438_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-hf4cc9e7_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-h636d7b7_6_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.44-hc14010f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.2-h8f0b736_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h2348fd5_1.conda @@ -732,17 +732,17 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.5-h178c5d8_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.5-hdb05f8b_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.9.4-hb7217d7_0.conda + - 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.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.dev2024120905-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120905-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120905-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120905-release.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.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.dev2024120905-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024121016-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 @@ -753,16 +753,16 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openjpeg-2.5.2-h9f1df11_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openjpeg-2.5.3-h8a3d83b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.0-h39f12f2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.28.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.28.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-prometheus-1.12.0rc1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.28.2-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.28.2-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.28.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh3cfb1c2_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/orc-2.0.3-h121fd32_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/orc-2.0.3-hbcee414_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.2-py312h8ae5369_1.conda @@ -788,7 +788,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.3-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.27.1-py312hcd83bfe_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.6.1-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.6.1-pyh3cfb1c2_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyinstrument-5.0.0-py312h0bf5046_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-core-10.3.2-py312hb9d441b_0.conda @@ -930,12 +930,12 @@ packages: timestamp: 1733332029649 - kind: conda name: aiohttp - version: 3.11.9 + version: 3.11.10 build: py312h178313f_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.9-py312h178313f_0.conda - sha256: 875a8ad0da035b33ba8037c40a2ffc0412b9545bc3d15455a8a75db22a3ee471 - md5: eeaf9831f262132fb12ce3921de09651 + url: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.10-py312h178313f_0.conda + sha256: dc8ebdd99e9d7a07454a7063a295cdc7a86264648647fec10b2ceae97478e200 + md5: 3e92784b8e32ab7d0b95ee296ba79a99 depends: - __glibc >=2.17,<3.0.a0 - aiohappyeyeballs >=2.3.0 @@ -950,16 +950,16 @@ packages: - yarl >=1.17.0,<2.0 license: MIT AND Apache-2.0 license_family: Apache - size: 912186 - timestamp: 1733125914520 + size: 914378 + timestamp: 1733839626367 - kind: conda name: aiohttp - version: 3.11.9 + version: 3.11.10 build: py312h998013c_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.9-py312h998013c_0.conda - sha256: 521b7c97a1122c0a6740a3200163e29bc8aa1d7efa273deb6e4c58a47779114b - md5: 0bb2657d1215a89fb586d387ce9c4daa + url: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.10-py312h998013c_0.conda + sha256: 69eb9c89dce6a7ae960099172daffba9f77fef39344f37e581685a8e3c5debe6 + md5: 642356223364539ba7ba36556fcf49ee depends: - __osx >=11.0 - aiohappyeyeballs >=2.3.0 @@ -974,16 +974,16 @@ packages: - yarl >=1.17.0,<2.0 license: MIT AND Apache-2.0 license_family: Apache - size: 873089 - timestamp: 1733125044394 + size: 874135 + timestamp: 1733839113411 - kind: conda name: aiohttp - version: 3.11.9 + version: 3.11.10 build: py312hcc812fe_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.9-py312hcc812fe_0.conda - sha256: e358d2c03b4eceb7ad3d8636705e60aa15bdec81305d9f9e1624fb5a03901147 - md5: 06400e4f6428e6c2ea2b59df702b5b39 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.10-py312hcc812fe_0.conda + sha256: df694a9fec546e575a4ea7e1c3ac476c0bda53c0fad44c046ad3ebdd5b75a0a8 + md5: a8c9ec59e6323b38418bbf04deaa0c02 depends: - aiohappyeyeballs >=2.3.0 - aiosignal >=1.1.2 @@ -998,8 +998,8 @@ packages: - yarl >=1.17.0,<2.0 license: MIT AND Apache-2.0 license_family: Apache - size: 900828 - timestamp: 1733124971238 + size: 900931 + timestamp: 1733839037447 - kind: conda name: aiosignal version: 1.3.1 @@ -1221,443 +1221,447 @@ packages: - kind: conda name: aws-c-auth version: 0.8.0 - build: h35eccd0_12 - build_number: 12 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-h35eccd0_12.conda - sha256: 40ca48aee5f3ff0d3ffd64625dacb019104a9a2ee24cd54052cde6fe4cbc8349 - md5: 1109d5293b724ca16b61452accfdb442 + build: h8c8080f_14 + build_number: 14 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-h8c8080f_14.conda + sha256: 7a9f7763e3a151ae1008ead51458f9b889b657f388266d53c6f7fa383dbb2481 + md5: a9284141081982473ebf41b92566bbcb depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-common >=0.10.5,<0.10.6.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 + - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 92279 - timestamp: 1733611476546 + size: 107775 + timestamp: 1733709347751 - kind: conda name: aws-c-auth version: 0.8.0 - build: h89ba3c0_12 - build_number: 12 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-h89ba3c0_12.conda - sha256: 021451014fb5ee24601052d84db8d5babbce5085959ba777b540db4e33bde360 - md5: c0e2e6c3aa8c309af0ba09fc7d949407 + build: h93897a1_14 + build_number: 14 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-h93897a1_14.conda + sha256: 3ec33500c5def035acb9ba406161f5452e39b1b818c67d8a56103d6def47bda6 + md5: 061e221dc5cca62be8fab49a16bfb99d depends: + - __osx >=11.0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-common >=0.10.5,<0.10.6.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 112242 - timestamp: 1733611425746 + size: 92250 + timestamp: 1733709418870 - kind: conda name: aws-c-auth version: 0.8.0 - build: ha4f867e_12 - build_number: 12 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-ha4f867e_12.conda - sha256: b9355bedf43c857a2d1986ebe7d61e615218f2171d163b509633d6c0c988d2dc - md5: d889de56d3be691063b71eb826470e29 + build: hb4dd4bb_14 + build_number: 14 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-hb4dd4bb_14.conda + sha256: a9622ac836bbe4a24310e0e77a42ef0a17e5fa0703276f8bbbef945deaca337c + md5: a5b86123507e184fb4463e1f8890b398 depends: - - __glibc >=2.17,<3.0.a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-common >=0.10.5,<0.10.6.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 107663 - timestamp: 1733611397256 + size: 111975 + timestamp: 1733709317063 - kind: conda name: aws-c-cal version: 0.8.1 - build: h35473ba_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.1-h35473ba_0.conda - sha256: c2d59d74e167b6df3c1a7addf0d37080b69a6b3dee2a30b3f2171a5d26c5a691 - md5: 97c0ccb4d43d880b38f237e746c29ead + build: h0f28dba_2 + build_number: 2 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.1-h0f28dba_2.conda + sha256: 023fa0d0618b652b0be5eac73d92fd47136351da7d331334c45d5dd1ee760401 + md5: 94faebd978282d2a4a8514141daec756 depends: - - aws-c-common >=0.10.3,<0.10.4.0a0 + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.5,<0.10.6.0a0 - libgcc >=13 - openssl >=3.3.1,<4.0a0 license: Apache-2.0 license_family: Apache - size: 49808 - timestamp: 1732038238504 + size: 47694 + timestamp: 1733390870810 - kind: conda name: aws-c-cal version: 0.8.1 - build: h5d7ee29_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.1-h5d7ee29_0.conda - sha256: 42d5e9fb695bc3b280ed7e625dcda110b6780ee471e227f1b92afce71ae4972c - md5: fc51a61831a676fe6f922450f51ab6af + build: h1aca5b9_2 + build_number: 2 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.1-h1aca5b9_2.conda + sha256: df203473e8675fc27ae5cb62bc09e336fe92655df0a0056e73087cb22aed287e + md5: 31d9e82aac5cd3fe399535bcec0f2975 depends: - - __osx >=11.0 - - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-common >=0.10.5,<0.10.6.0a0 + - libgcc >=13 - openssl >=3.3.1,<4.0a0 license: Apache-2.0 license_family: Apache - size: 40047 - timestamp: 1732038304022 + size: 49822 + timestamp: 1733390907734 - kind: conda name: aws-c-cal version: 0.8.1 - build: hecf86a2_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.1-hecf86a2_0.conda - sha256: 12cc2087503f4f0d3a5db84e791fb5e585866da728f888aa76e14330a092a681 - md5: 8350795be14a92d68847c0d4f3c1d59f + build: h4d88cd7_2 + build_number: 2 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.1-h4d88cd7_2.conda + sha256: 30e6bc4feea78a280553b084a960515e550dabfae0e63ba511be773c3a9f6b5a + md5: 3cb07f08e5aabe657b0b5fb13945e79a depends: - - __glibc >=2.17,<3.0.a0 - - aws-c-common >=0.10.3,<0.10.4.0a0 - - libgcc >=13 + - __osx >=11.0 + - aws-c-common >=0.10.5,<0.10.6.0a0 - openssl >=3.3.1,<4.0a0 license: Apache-2.0 license_family: Apache - size: 47569 - timestamp: 1732038156682 + size: 39878 + timestamp: 1733390962202 - kind: conda name: aws-c-common - version: 0.10.3 + version: 0.10.5 build: h5505292_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.10.3-h5505292_0.conda - sha256: bb2c1038726d31ffd2d35a5764f80bcd670b6a1c753aadfd261aecb9f88db6d8 - md5: 4150339e3b08db33fe4c436340b1d7f6 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.10.5-h5505292_0.conda + sha256: 54554886028d25b5c752369e7ae8321852e875fdc780ff9357b72a31f3e5d5b4 + md5: 49f049f8b10cf8c2c5a26660854fd21a depends: - __osx >=11.0 license: Apache-2.0 license_family: Apache - size: 221524 - timestamp: 1731567512057 + size: 222184 + timestamp: 1733324871298 - kind: conda name: aws-c-common - version: 0.10.3 + version: 0.10.5 build: h86ecc28_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-common-0.10.3-h86ecc28_0.conda - sha256: 95ca372a0e1bb8dad421751de6aa44d37d87dd69c33a48faca1ae6efa30f2af0 - md5: 64f523ba00b75fdcb33a4eea827d3d19 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-common-0.10.5-h86ecc28_0.conda + sha256: bdea66b7be9acd463bbfd583d2f80ff676d376c60480a2d3f9f7de7b4bf6d2b2 + md5: fcd238b0cc98927742a96aa411123e32 depends: - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 257859 - timestamp: 1731567310573 + size: 258257 + timestamp: 1733324684433 - kind: conda name: aws-c-common - version: 0.10.3 + version: 0.10.5 build: hb9d3cd8_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.10.3-hb9d3cd8_0.conda - sha256: 90bd2ff40b65acb62f11e2500ee7b7e85ac77d2e332429002f4c1da949bec27f - md5: ff3653946d34a6a6ba10babb139d96ef + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.10.5-hb9d3cd8_0.conda + sha256: 93e83e2a31f41bac2aa5eae8fbc7f1d31449a04a3df8a64ebcac2433f52a86ad + md5: d8288fbad9d809b9ca139b8beb6553ef depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 237137 - timestamp: 1731567278052 + size: 237114 + timestamp: 1733324723318 - kind: conda name: aws-c-compression version: 0.3.0 - build: h4c7db1d_2 - build_number: 2 + build: h10558d5_4 + build_number: 4 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-compression-0.3.0-h4c7db1d_2.conda - sha256: 8dba3d48a7230ccd2a6ea8d88c0e1b6caf0a39b14a2b2f0255a413fcfce8ad0a - md5: ee074857cec335bb83692771b06160a4 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-compression-0.3.0-h10558d5_4.conda + sha256: 45ea74461b6a5453325db2201ba9f728f20e89ead17730e93ddd7411a833c058 + md5: 8ceaf4396978c33bc695129425f12734 depends: - - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-common >=0.10.5,<0.10.6.0a0 - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 19696 - timestamp: 1731678729046 + size: 19742 + timestamp: 1733391062884 - kind: conda name: aws-c-compression version: 0.3.0 - build: h5d7ee29_2 - build_number: 2 + build: h4d88cd7_4 + build_number: 4 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-compression-0.3.0-h5d7ee29_2.conda - sha256: a52ea62bf08aed3af079e16d1738f3d2a7fcdd1d260289ae27ae96298e15d12a - md5: 15566c36b0cf5f314e3bee7f7cc796b5 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-compression-0.3.0-h4d88cd7_4.conda + sha256: b6900e82b553d18d5528322de236af3a7f64ccb3df08e8320142894144a5c716 + md5: 8c67ff0c68aea28be3efec6f8d799a19 depends: - __osx >=11.0 - - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-common >=0.10.5,<0.10.6.0a0 license: Apache-2.0 license_family: Apache - size: 18204 - timestamp: 1731678916439 + size: 18219 + timestamp: 1733391126008 - kind: conda name: aws-c-compression version: 0.3.0 - build: hf42f96a_2 - build_number: 2 + build: h9cc6398_4 + build_number: 4 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.3.0-hf42f96a_2.conda - sha256: 210ba4fff1c9500fe02de1dae311ce723bfa313a2d21b72accd745f736f56fce - md5: 257f4ae92fe11bd8436315c86468c39b + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.3.0-h9cc6398_4.conda + sha256: 045a3231b0aacb544ea9e348c22f863d96631f14a3a2b59413a72f61259a32a4 + md5: 076717670d5406e90070120314ff9b4f depends: - __glibc >=2.17,<3.0.a0 - - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-common >=0.10.5,<0.10.6.0a0 - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 19034 - timestamp: 1731678703956 + size: 19029 + timestamp: 1733390975089 - kind: conda name: aws-c-event-stream version: 0.5.0 - build: h873f81a_8 - build_number: 8 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.0-h873f81a_8.conda - sha256: 589f9a04c4c7a919410dde75ce93a6986efad6ed522ecd8e5c9c587ac18f0d34 - md5: 32bdd50b43fcc435a8dc5a3c66aafef0 + build: h9fa824c_10 + build_number: 10 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.0-h9fa824c_10.conda + sha256: 12f2ccc71bb993934cc489af359cb7399f671c3111f64fe2be9c8231819e11bd + md5: 9f6a7984f9ce3c6149fa36865060928a depends: - - __glibc >=2.17,<3.0.a0 - - aws-c-common >=0.10.3,<0.10.4.0a0 + - __osx >=11.0 + - aws-c-common >=0.10.5,<0.10.6.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - - libgcc >=13 - - libstdcxx >=13 + - libcxx >=18 license: Apache-2.0 license_family: Apache - size: 54020 - timestamp: 1731839177415 + size: 47460 + timestamp: 1733696263921 - kind: conda name: aws-c-event-stream version: 0.5.0 - build: h8ec3972_8 - build_number: 8 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.0-h8ec3972_8.conda - sha256: 81b98fc39e64d090af23b11621e467b4f943a19f61dda0fed5ad6397f06de5c7 - md5: ced9c97ddf61e4222d548e8bcc863b87 + build: ha9733bd_10 + build_number: 10 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-event-stream-0.5.0-ha9733bd_10.conda + sha256: e8189bdd1af1a3f68a460bcb3c852193cfdf7afa2f1a82d687d30055242b20e2 + md5: cb0877c6fcc93454f221ba4eba798cfc depends: - - __osx >=11.0 - - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-common >=0.10.5,<0.10.6.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - - libcxx >=18 + - libgcc >=13 + - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 47491 - timestamp: 1731839300212 + size: 55066 + timestamp: 1733696212604 - kind: conda name: aws-c-event-stream version: 0.5.0 - build: hba6c15e_8 - build_number: 8 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-event-stream-0.5.0-hba6c15e_8.conda - sha256: d3b74580045ee9d54a134ab1e5e00082d5d8a466980e94acc153188ee7375d08 - md5: 102f8b54630d79aff5e0c489f40f926e + build: hf811eff_10 + build_number: 10 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.0-hf811eff_10.conda + sha256: 3fbc86e70b543f26cc485f98714b7f789c4ece05128046458681893f43b7f5f1 + md5: 5046c78dd139a333b6acd7376a10e0a7 depends: - - aws-c-common >=0.10.3,<0.10.4.0a0 + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.5,<0.10.6.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 55354 - timestamp: 1731839242373 + size: 53973 + timestamp: 1733696170256 - kind: conda name: aws-c-http version: 0.9.2 - build: h48c6dea_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.2-h48c6dea_1.conda - sha256: cb68d557af1bdcbef668574836fbf39c4df0e4f377258e4d5bd14196acf9b992 - md5: a28dd36a1da76042bfb5579005cc6728 + build: h53134c8_3 + build_number: 3 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.2-h53134c8_3.conda + sha256: a4d217f89ad0e9326da57b2d9bd4cd5cb0a95423d092be7ed81e88fb075d4dbe + md5: 2ffd03180381a92332b673cefc602234 depends: - - __osx >=11.0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-common >=0.10.5,<0.10.6.0a0 - aws-c-compression >=0.3.0,<0.3.1.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 + - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 152660 - timestamp: 1732110368931 + size: 189812 + timestamp: 1733683248290 - kind: conda name: aws-c-http version: 0.9.2 - build: h697be72_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.2-h697be72_1.conda - sha256: 4d6557a00e74649301da78d7de7d108882ce89eb9d6c87efce30789b53a617cf - md5: a8b1a2c11a93e615f6e8f33175ff8ff0 + build: hc68443d_3 + build_number: 3 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.2-hc68443d_3.conda + sha256: 71be93cd1d8dfa5858939ba53431abaee859fbc98bdf9f5033bfa41af76b140a + md5: 6353604cb9803e63fce359388201514e depends: + - __osx >=11.0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-common >=0.10.5,<0.10.6.0a0 - aws-c-compression >=0.3.0,<0.3.1.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 190344 - timestamp: 1732110425530 + size: 153237 + timestamp: 1733683327609 - kind: conda name: aws-c-http version: 0.9.2 - build: ha5a3ca8_1 - build_number: 1 + build: hce7dc5d_3 + build_number: 3 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.2-ha5a3ca8_1.conda - sha256: 8ecb3d8411f58db4686635aedfe5d60b2b8870f9f9cafb471f3878dc61d21596 - md5: b2e017f8a4781ad3af9166edf10b65a8 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.2-hce7dc5d_3.conda + sha256: 7e864b6d4255c4edbd1b2c0f519849017d2a48e54b282748eaa8f9f0fc98a6f4 + md5: c0f54e8975ad42d2864f4b1918356b3b depends: - __glibc >=2.17,<3.0.a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-common >=0.10.5,<0.10.6.0a0 - aws-c-compression >=0.3.0,<0.3.1.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 197338 - timestamp: 1732110324356 + size: 197506 + timestamp: 1733683203582 - kind: conda name: aws-c-io version: 0.15.3 - build: h0155602_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-h0155602_1.conda - sha256: 7b8d97d51e5bb80191e07f16cac6f59068be30bf5906925a8f4159b3aab9093c - md5: 431c201b11eee90fd120844557a62b02 + build: h66499f2_3 + build_number: 3 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-h66499f2_3.conda + sha256: 86ff175fa5dced16cf41bcc5c353de080314fcb81f4aed326f29b9f22add9aad + md5: e64159c5b106a0365544cfe9d4ef79ec depends: + - __osx >=11.0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.3,<0.10.4.0a0 - - libgcc >=13 - - s2n >=1.5.9,<1.5.10.0a0 + - aws-c-common >=0.10.5,<0.10.6.0a0 license: Apache-2.0 license_family: Apache - size: 161664 - timestamp: 1732097310449 + size: 136845 + timestamp: 1733588465582 - kind: conda name: aws-c-io version: 0.15.3 - build: h30cefa2_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-h30cefa2_1.conda - sha256: d6f8d42259ca11507bd912b3cd3ff1a65d6d8c7ff67ae9ee9df1686c9bebbbcc - md5: 8b8dc361de09e5b6227165a876e55cb7 + build: h8aa8d47_3 + build_number: 3 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-h8aa8d47_3.conda + sha256: cb08b2e9258637e810ac283600b7de2d7a68f55a61e67226e9cce2537f36a06b + md5: 8ece20a51dafae96444e90c7ddaac41a depends: - - __osx >=11.0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-common >=0.10.5,<0.10.6.0a0 + - libgcc >=13 + - s2n >=1.5.9,<1.5.10.0a0 license: Apache-2.0 license_family: Apache - size: 136662 - timestamp: 1732097382517 + size: 161513 + timestamp: 1733588480960 - kind: conda name: aws-c-io version: 0.15.3 - build: ha35c7d9_1 - build_number: 1 + build: hfd54f12_3 + build_number: 3 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-ha35c7d9_1.conda - sha256: 2e9e13ed54f6da22ee5d06622f4165bcca253411997dad62225aecc54b25c0db - md5: 97960f380abe1ba3157fe63312e35b07 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-hfd54f12_3.conda + sha256: 6d0bd78d5c7d3ec586691d54c8aebc79d089358ff9e793f0cac857a1f977a1a0 + md5: c0b9f79cd2f5797b913415511bfa2cd6 depends: - __glibc >=2.17,<3.0.a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-common >=0.10.5,<0.10.6.0a0 - libgcc >=13 - s2n >=1.5.9,<1.5.10.0a0 license: Apache-2.0 license_family: Apache - size: 158012 - timestamp: 1732097264673 + size: 158115 + timestamp: 1733588386529 - kind: conda name: aws-c-mqtt version: 0.11.0 - build: h2cca791_9 - build_number: 9 + build: h2f8d747_11 + build_number: 11 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h2cca791_9.conda - sha256: c0ad176bab176a2983fb052de71037fc9357afd13b073511a7a440c1a8c6eff2 - md5: 090674d608454e979ce77bc8ee735868 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h2f8d747_11.conda + sha256: b66de0de359bfaec5084bdc78fda6dfbd8cf8e71c68a76dcd7b74e8a00ec6052 + md5: f4ccd7c1e73c662fd9a795147ca8ca9f depends: - - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-common >=0.10.5,<0.10.6.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 169690 - timestamp: 1733688313938 + size: 168898 + timestamp: 1733739548597 - kind: conda name: aws-c-mqtt version: 0.11.0 - build: h3aaadf4_9 - build_number: 9 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h3aaadf4_9.conda - sha256: 3cc99239c8dadfe55e4b9ba37d03c5d3308ddd8fe00792fab7c6b47c97655c07 - md5: ddb5dc7ac1ae424ca2b7a847765a0cb9 + build: ha3c2ba9_11 + build_number: 11 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-ha3c2ba9_11.conda + sha256: 187787bb41e7b616c9317c12c32a5027aae784d1f9335f9d6d34a3fa7ebcb1ec + md5: 93c5070d6f9b4cb2ed9de52ce247cebb depends: - - __osx >=11.0 - - aws-c-common >=0.10.3,<0.10.4.0a0 + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.5,<0.10.6.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 + - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 135051 - timestamp: 1733688394116 + size: 193829 + timestamp: 1733740033267 - kind: conda name: aws-c-mqtt version: 0.11.0 - build: h56e9cca_9 - build_number: 9 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h56e9cca_9.conda - sha256: c93c29b58482ca72d3f9a5710ad92194e809a9de988bcdcbae9ddd0f8ed484a6 - md5: f75642fe24ae4131f554cbacd6df53e3 + build: hd073cef_11 + build_number: 11 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-hd073cef_11.conda + sha256: d2ee2cdc651250a38f67b84ec65de3ba5493c760821d22c01edb8defd6393dc9 + md5: 0c1deb6e00f80b4aedcb2c4fcfea6407 depends: - - __glibc >=2.17,<3.0.a0 - - aws-c-common >=0.10.3,<0.10.4.0a0 + - __osx >=11.0 + - aws-c-common >=0.10.5,<0.10.6.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 194705 - timestamp: 1733688770217 + size: 134556 + timestamp: 1733739661152 - kind: conda name: aws-c-s3 version: 0.7.5 - build: h3c51cf6_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.5-h3c51cf6_2.conda - sha256: 98a2df8a5068183e55b4c6914a3513d403300be20c960842a9a229546b8e8e52 - md5: e326ddae95b3ec96a31aded04c834175 + build: h55e9418_4 + build_number: 4 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.5-h55e9418_4.conda + sha256: 04d7fd3574fa76c184f04630125a760afa4ae5d4109eec36f22fe127cc85e164 + md5: faec629f0eb306cfe17ed1615249e188 depends: + - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-common >=0.10.5,<0.10.6.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 @@ -1665,22 +1669,21 @@ packages: - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 117896 - timestamp: 1733694002769 + size: 113811 + timestamp: 1733717653326 - kind: conda name: aws-c-s3 version: 0.7.5 - build: h6ad95d4_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.5-h6ad95d4_2.conda - sha256: 103a478b18ead8f79aae9a4966b2879e9fbcfb0aa3b2e6c9b2811a76ba34610e - md5: 682c079ec089d47bb7142f12b3275e4f + build: h757e810_4 + build_number: 4 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.5-h757e810_4.conda + sha256: 3da5e1b88d68c5cb2eb1dd898a7c6192be9e1df0bd2733d39d6c0ffe9fc546a2 + md5: 96a657e5856e9e92755170630067f63c depends: - - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-common >=0.10.5,<0.10.6.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 @@ -1688,166 +1691,165 @@ packages: - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 113741 - timestamp: 1733693956970 + size: 117478 + timestamp: 1733717680655 - kind: conda name: aws-c-s3 version: 0.7.5 - build: hca3a6f1_2 - build_number: 2 + build: hb201fd0_4 + build_number: 4 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.5-hca3a6f1_2.conda - sha256: 53c4dc6e360ed6e1242c20fa43f7bfe67a41215e51cafab27dbd8aa91333040c - md5: 0b4e647cae3ce85ec991c6e3b8d12bda + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.5-hb201fd0_4.conda + sha256: c25c62173770b681083962b497a927f306e7f3d05b459dd59e4c12eaf49e9f0b + md5: 83b9775bbe5419cf4916e646e870b87a depends: - __osx >=11.0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-common >=0.10.5,<0.10.6.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 license: Apache-2.0 license_family: Apache - size: 97530 - timestamp: 1733694097526 + size: 97441 + timestamp: 1733717822438 - kind: conda name: aws-c-sdkutils version: 0.2.1 - build: h4c7db1d_1 - build_number: 1 + build: h10558d5_3 + build_number: 3 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.1-h4c7db1d_1.conda - sha256: 3d2b079a361888197894308a93fec95666c6abfcc86c979ae36f1f9cb223dfb3 - md5: 45437a9bad358b25f795e77218063baf + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.1-h10558d5_3.conda + sha256: 0f6a15d711bc4d6b2d2b8451ad46bf78af6876235ad56bf142644a4ce2240f52 + md5: 1ba505fc4243ad75507efa8976e1790f depends: - - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-common >=0.10.5,<0.10.6.0a0 - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 58256 - timestamp: 1731687032896 + size: 58123 + timestamp: 1733398238726 - kind: conda name: aws-c-sdkutils version: 0.2.1 - build: h5d7ee29_1 - build_number: 1 + build: h4d88cd7_3 + build_number: 3 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.1-h5d7ee29_1.conda - sha256: ed3b272b9a345142e62f0cf9ab2a9fa909c92e09691f6a06e98ff500a1f8a303 - md5: 0f1e5bc57d4567c9d9bec8d8982828ed + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.1-h4d88cd7_3.conda + sha256: a94ecde4e61de8effd9c93ba3527eb010773b5422d2d079ffdcd796ec77fcd4e + md5: 5ec333d73530fbfc2db670eeb6911bff depends: - __osx >=11.0 - - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-common >=0.10.5,<0.10.6.0a0 license: Apache-2.0 license_family: Apache - size: 50276 - timestamp: 1731687215375 + size: 49739 + timestamp: 1733398400904 - kind: conda name: aws-c-sdkutils version: 0.2.1 - build: hf42f96a_1 - build_number: 1 + build: h9cc6398_3 + build_number: 3 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.1-hf42f96a_1.conda - sha256: f6e38c79b124c34edb048c28ec58fdfc4ea8f7a218dc493195afbada48ba063b - md5: bbdd20fb1994a9f0ba98078fcb6c12ab + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.1-h9cc6398_3.conda + sha256: 917f679da38f162e191c5d6817b35fbf2ae0584b1d335bc229fd01e6077108ee + md5: 10bdb7fc3763760dcea1cd908ece6b2b depends: - __glibc >=2.17,<3.0.a0 - - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-common >=0.10.5,<0.10.6.0a0 - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 55738 - timestamp: 1731687063424 + size: 55864 + timestamp: 1733398187914 - kind: conda name: aws-checksums version: 0.2.2 - build: h4c7db1d_1 - build_number: 1 + build: h10558d5_3 + build_number: 3 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h4c7db1d_1.conda - sha256: b3fa060d4fe9e8fdb7b21b8b3c5fdb61df6f02973f74245a65869100f72a3931 - md5: af22e7e1c1af348a66f938aa66192f2c + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h10558d5_3.conda + sha256: 108860ae5d61a4dc0b0d91282d0171ba7fd69686c11b4bcbdcd3f8b8efc98adb + md5: 1ded47669f79301e4a3d1d3d469494c0 depends: - - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-common >=0.10.5,<0.10.6.0a0 - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 72081 - timestamp: 1731687244426 + size: 72203 + timestamp: 1733398350602 - kind: conda name: aws-checksums version: 0.2.2 - build: h5d7ee29_1 - build_number: 1 + build: h4d88cd7_3 + build_number: 3 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-h5d7ee29_1.conda - sha256: eb7ebe309b33a04329b3e51a7f10bb407815389dc37cc047f7d41f9c91f0d1b0 - md5: db1ed95988a8fe6c1ce0d94abdfc8e72 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-h4d88cd7_3.conda + sha256: 7d0d71e399fa6b0a1e686470d4a982396a9d0d29be29bf07591d83739cc29a0a + md5: 45409e27b510588196b9f116f86c2d51 depends: - __osx >=11.0 - - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-common >=0.10.5,<0.10.6.0a0 license: Apache-2.0 license_family: Apache - size: 70184 - timestamp: 1731687342560 + size: 70160 + timestamp: 1733398484776 - kind: conda name: aws-checksums version: 0.2.2 - build: hf42f96a_1 - build_number: 1 + build: h9cc6398_3 + build_number: 3 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-hf42f96a_1.conda - sha256: da802ace5448481c968cfec7e7a4f79f686f42df9de8e3f78c09a925c2882a79 - md5: d908d43d87429be24edfb20e96543c20 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-h9cc6398_3.conda + sha256: a3aea2fc8ccf85ae64c5ce9c4e507be37173b94909191480e5151c482a220e40 + md5: d6dd8b87b95195d8d26893611d94ba3b depends: - __glibc >=2.17,<3.0.a0 - - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-common >=0.10.5,<0.10.6.0a0 - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 72744 - timestamp: 1731687193373 + size: 72681 + timestamp: 1733398331530 - kind: conda name: aws-crt-cpp version: 0.29.7 - build: h318f0b1_3 - build_number: 3 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.7-h318f0b1_3.conda - sha256: 35100ad81adf31aa4e73ac2956e9a8ff277cc57d0db2db2f0e9c51012175eadd - md5: 9748d0527695a64aa2eb45e891ea188d + build: hb9a023b_5 + build_number: 5 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.7-hb9a023b_5.conda + sha256: d1d89918a1f6e08f16275d82218b2f73012cee2def3ad8f1a8d28af7497e66cc + md5: 70a976e616535dbab5e1f354734a238a depends: - - __glibc >=2.17,<3.0.a0 + - __osx >=11.0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-common >=0.10.5,<0.10.6.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - aws-c-s3 >=0.7.5,<0.7.6.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - - libgcc >=13 - - libstdcxx >=13 + - libcxx >=18 license: Apache-2.0 license_family: Apache - size: 355045 - timestamp: 1733744656604 + size: 236182 + timestamp: 1733767086227 - kind: conda name: aws-crt-cpp version: 0.29.7 - build: hacb6b83_3 - build_number: 3 + build: hc8d91e0_5 + build_number: 5 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.7-hacb6b83_3.conda - sha256: 6c0ece3ca494c2220fc052e608d52ea52bb361e536a14a1b3b36ebeede9de8b9 - md5: 27ce3ed5b7e55370a9fea2dda2b3245a + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.7-hc8d91e0_5.conda + sha256: c3be4f3f77ac7ba716228df1099eb68a5e7a4cbbe386a4732a28f33d6b780cc4 + md5: 8f14e3d651a08c9b2f85c6e5d359e250 depends: - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-common >=0.10.5,<0.10.6.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 @@ -1858,44 +1860,45 @@ packages: - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 283993 - timestamp: 1733744571881 + size: 284313 + timestamp: 1733766768643 - kind: conda name: aws-crt-cpp version: 0.29.7 - build: hc2c2bbc_3 - build_number: 3 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.7-hc2c2bbc_3.conda - sha256: 6a519151e7fa71fbc9d1cd3a526ea7591638af058a6cc0534e1cd418fd48b354 - md5: 5450324f7b48dff1f6ed5484bf830972 + build: hed26007_5 + build_number: 5 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.7-hed26007_5.conda + sha256: f996cb94f3ef212792f288a0f7c5201ac7f00bb43502702b76e408e50d80132f + md5: 7c64e4ac7a484fc525a4ce7b9baf709a depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-common >=0.10.5,<0.10.6.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - aws-c-s3 >=0.7.5,<0.7.6.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - - libcxx >=18 + - libgcc >=13 + - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 236331 - timestamp: 1733744737078 + size: 354783 + timestamp: 1733766766977 - kind: conda name: aws-sdk-cpp version: 1.11.458 - build: h5e41cbe_1 - build_number: 1 + build: h2d3f608_3 + build_number: 3 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h5e41cbe_1.conda - sha256: b45305787a78f2bf7ecabc401b5bfe451509b434dd041a0a554572a70302d2f3 - md5: 1861b1fb86b336f1f53faaac5a76046c + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h2d3f608_3.conda + sha256: b335dfee7b04117ddae857564300ed6795718e2305141c7d631dcc434503a261 + md5: 57bdfac803ce58e3a3256752d7e5aa6e depends: - - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-common >=0.10.5,<0.10.6.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - aws-crt-cpp >=0.29.7,<0.29.8.0a0 @@ -1906,55 +1909,55 @@ packages: - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 2910575 - timestamp: 1733576378398 + size: 2896174 + timestamp: 1733808114676 - kind: conda name: aws-sdk-cpp version: 1.11.458 - build: hac138a2_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-hac138a2_1.conda - sha256: fdb9c94d7524c52837643428b1aab4f35bed3ba2862a57e1b03e63038c7c146f - md5: bbdd9589b1a32a80b0e3f98a2a482542 + build: h39838b8_3 + build_number: 3 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-h39838b8_3.conda + sha256: b5ef3a956937d61b59b9dd4b8c23eeb0bc254c37a97028a50c3ff6c8df399deb + md5: 3a6c8f65692febdf791bece561b371c8 depends: - - __glibc >=2.17,<3.0.a0 - - aws-c-common >=0.10.3,<0.10.4.0a0 + - __osx >=11.0 + - aws-c-common >=0.10.5,<0.10.6.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - aws-crt-cpp >=0.29.7,<0.29.8.0a0 - libcurl >=8.10.1,<9.0a0 - - libgcc >=13 - - libstdcxx >=13 + - libcxx >=18 - libzlib >=1.3.1,<2.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 3071464 - timestamp: 1733576251149 + size: 2837854 + timestamp: 1733808787914 - kind: conda name: aws-sdk-cpp version: 1.11.458 - build: he4d6490_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-he4d6490_1.conda - sha256: 61abc03dfbe372b258b8b6790bf3ad3a3265e02ce24b6b22bfe8f2fcab94954a - md5: 2941213b750689ace0862a6d695bb740 + build: h571fd1c_3 + build_number: 3 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-h571fd1c_3.conda + sha256: c2f38374a6f4dd804f76c8a071bc7f7d37dfb43e194eb93a473ff789460c011b + md5: 374cf1add8af327b15b1b1e4873f4955 depends: - - __osx >=11.0 - - aws-c-common >=0.10.3,<0.10.4.0a0 + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.5,<0.10.6.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - aws-crt-cpp >=0.29.7,<0.29.8.0a0 - libcurl >=8.10.1,<9.0a0 - - libcxx >=18 + - libgcc >=13 + - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 2847256 - timestamp: 1733576733615 + size: 3062994 + timestamp: 1733808211748 - kind: conda name: azure-core-cpp version: 1.14.0 @@ -2250,18 +2253,19 @@ packages: - kind: conda name: backoff version: 2.2.1 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/backoff-2.2.1-pyhd8ed1ab_0.tar.bz2 - sha256: b1cf7df15741e5fbc57e22a3a89db427383335aaab22ddc1b30710deeb0130de - md5: 4600709bd85664d8606ae0c76642f8db + url: https://conda.anaconda.org/conda-forge/noarch/backoff-2.2.1-pyhd8ed1ab_1.conda + sha256: f334115c6b0c6c2cd0d28595365f205ec7eaa60bcc5ff91a75d7245f728be820 + md5: a38b801f2bcc12af80c2e02a9e4ce7d9 depends: - - python >=3.7 + - python >=3.9 license: MIT license_family: MIT - size: 17501 - timestamp: 1665004860081 + size: 18816 + timestamp: 1733771192649 - kind: conda name: beautifulsoup4 version: 4.12.3 @@ -3349,25 +3353,26 @@ packages: - kind: conda name: huggingface_hub version: 0.26.5 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.5-pyhd8ed1ab_0.conda - sha256: bdbf614d87155c7f9b8fe9c3d039528298119832e9f52959b15c522a9841eef7 - md5: 37236111cd92068e5af2f98cbb476642 + url: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.5-pyhd8ed1ab_1.conda + sha256: 0c75532d914a04c73222be298ed2c6868739dd475b1b1a9137c52abe79873952 + md5: 73937038e21117fe401f8ea64fbaeacc depends: - filelock - fsspec >=2023.5.0 - packaging >=20.9 - - python >=3.8 + - python >=3.9 - pyyaml >=5.1 - requests - tqdm >=4.42.1 - typing-extensions >=3.7.4.3 - typing_extensions >=3.7.4.3 license: Apache-2.0 - size: 274900 - timestamp: 1733637007500 + size: 275466 + timestamp: 1733852454004 - kind: conda name: hyperframe version: 6.0.1 @@ -3862,16 +3867,16 @@ packages: timestamp: 1733428049134 - kind: conda name: jupyterlab - version: 4.3.2 + version: 4.3.3 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.3.2-pyhd8ed1ab_0.conda - sha256: e806f753fe91faaffbad3d1d3aab7ceee785ae01bf0d758a82f1466164d727d6 - md5: 5f0d3b774cae26dd785e443a0e1623ae + url: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.3.3-pyhd8ed1ab_0.conda + sha256: 63aa00427abd4a3e7c1738257b8e296f5e0ba04a4a1ab9ff3bc186440c8b9fdc + md5: 0707e62d944a89c365ba11da4898f8af depends: - async-lru >=1.0.0 - - httpx >=0.28.0,<0.29.0 + - httpx >=0.25.0 - importlib-metadata >=4.8.3 - ipykernel >=6.5.0 - jinja2 >=3.0.3 @@ -3888,8 +3893,8 @@ packages: - traitlets license: BSD-3-Clause license_family: BSD - size: 7396800 - timestamp: 1733261150800 + size: 7972675 + timestamp: 1733836496011 - kind: conda name: jupyterlab_pygments version: 0.3.0 @@ -4201,14 +4206,13 @@ packages: - kind: conda name: libarrow version: 18.1.0 - build: h3b07799_4_cpu - build_number: 4 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-h3b07799_4_cpu.conda - sha256: 8837dc6e60522eef63554654c45d18143006324c43391c6e8dc5d2b20997466d - md5: 27675c7172667268440306533e4928de + build: h1b535d6_6_cpu + build_number: 6 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-h1b535d6_6_cpu.conda + sha256: 087b579aebf351ca41c54214121d86a15a41c92051cbd432d6f3a3f58a8c31b0 + md5: 4c0ad68efba1113ac5833975c67b565d depends: - - __glibc >=2.17,<3.0.a0 - aws-crt-cpp >=0.29.7,<0.29.8.0a0 - aws-sdk-cpp >=1.11.458,<1.11.459.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 @@ -4223,36 +4227,35 @@ packages: - libbrotlidec >=1.1.0,<1.2.0a0 - libbrotlienc >=1.1.0,<1.2.0a0 - libgcc >=13 - - libgoogle-cloud >=2.31.0,<2.32.0a0 - - libgoogle-cloud-storage >=2.31.0,<2.32.0a0 + - libgoogle-cloud >=2.32.0,<2.33.0a0 + - libgoogle-cloud-storage >=2.32.0,<2.33.0a0 - libre2-11 >=2024.7.2 - libstdcxx >=13 - libutf8proc >=2.9.0,<2.10.0a0 - libzlib >=1.3.1,<2.0a0 - - lz4-c >=1.9.3,<1.10.0a0 + - lz4-c >=1.10.0,<1.11.0a0 - orc >=2.0.3,<2.0.4.0a0 - re2 - snappy >=1.2.1,<1.3.0a0 - zstd >=1.5.6,<1.6.0a0 constrains: - parquet-cpp <0.0a0 - - apache-arrow-proc =*=cpu - arrow-cpp <0.0a0 + - apache-arrow-proc =*=cpu license: Apache-2.0 - license_family: APACHE - size: 8793521 - timestamp: 1733607374384 + size: 8040629 + timestamp: 1733810319239 - kind: conda name: libarrow version: 18.1.0 - build: h86d57b8_4_cpu - build_number: 4 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-h86d57b8_4_cpu.conda - sha256: fe6b5eb4d6e71418343b62a0d322ede7be69999b28d9e492164c12e613cf3fa0 - md5: 23431b3fdbb32858d1533da5bc8fcc86 + build: h44a453e_6_cpu + build_number: 6 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-h44a453e_6_cpu.conda + sha256: abf17e99b03356a9d6248e965826c1352ff01b00d3a62cc51393bb0744d72803 + md5: 2cf6d608d6e66506f69797d5c6944c35 depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 - aws-crt-cpp >=0.29.7,<0.29.8.0a0 - aws-sdk-cpp >=1.11.458,<1.11.459.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 @@ -4260,40 +4263,42 @@ packages: - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 - bzip2 >=1.0.8,<2.0a0 + - gflags >=2.2.2,<2.3.0a0 - glog >=0.7.1,<0.8.0a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - libbrotlidec >=1.1.0,<1.2.0a0 - libbrotlienc >=1.1.0,<1.2.0a0 - - libcxx >=18 - - libgoogle-cloud >=2.31.0,<2.32.0a0 - - libgoogle-cloud-storage >=2.31.0,<2.32.0a0 + - libgcc >=13 + - libgoogle-cloud >=2.32.0,<2.33.0a0 + - libgoogle-cloud-storage >=2.32.0,<2.33.0a0 - libre2-11 >=2024.7.2 + - libstdcxx >=13 - libutf8proc >=2.9.0,<2.10.0a0 - libzlib >=1.3.1,<2.0a0 - - lz4-c >=1.9.3,<1.10.0a0 + - lz4-c >=1.10.0,<1.11.0a0 - orc >=2.0.3,<2.0.4.0a0 - re2 - snappy >=1.2.1,<1.3.0a0 - zstd >=1.5.6,<1.6.0a0 constrains: - parquet-cpp <0.0a0 - - apache-arrow-proc =*=cpu - arrow-cpp <0.0a0 + - apache-arrow-proc =*=cpu license: Apache-2.0 - license_family: APACHE - size: 5482797 - timestamp: 1733605365656 + size: 8786061 + timestamp: 1733810643966 - kind: conda name: libarrow version: 18.1.0 - build: ha2aff55_4_cpu - build_number: 4 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-ha2aff55_4_cpu.conda - sha256: 795950b73029fd4d3b7fee3427c39c7357287fd94244dd5a125ac0931d31aaa3 - md5: c4d60278cb00053df1a4f0600fd2ac2a + build: h4a2f8bd_6_cpu + build_number: 6 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-h4a2f8bd_6_cpu.conda + sha256: 9ed3ea1bc15005c0df187268ef91407afaa908cf82f36f5acbbf50ac24d7f806 + md5: 835cdd84195b84dc34d128bd5d3580b9 depends: + - __osx >=11.0 - aws-crt-cpp >=0.29.7,<0.29.8.0a0 - aws-sdk-cpp >=1.11.458,<1.11.459.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 @@ -4301,209 +4306,197 @@ packages: - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 - bzip2 >=1.0.8,<2.0a0 - - gflags >=2.2.2,<2.3.0a0 - glog >=0.7.1,<0.8.0a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - libbrotlidec >=1.1.0,<1.2.0a0 - libbrotlienc >=1.1.0,<1.2.0a0 - - libgcc >=13 - - libgoogle-cloud >=2.31.0,<2.32.0a0 - - libgoogle-cloud-storage >=2.31.0,<2.32.0a0 + - libcxx >=18 + - libgoogle-cloud >=2.32.0,<2.33.0a0 + - libgoogle-cloud-storage >=2.32.0,<2.33.0a0 - libre2-11 >=2024.7.2 - - libstdcxx >=13 - libutf8proc >=2.9.0,<2.10.0a0 - libzlib >=1.3.1,<2.0a0 - - lz4-c >=1.9.3,<1.10.0a0 + - lz4-c >=1.10.0,<1.11.0a0 - orc >=2.0.3,<2.0.4.0a0 - re2 - snappy >=1.2.1,<1.3.0a0 - zstd >=1.5.6,<1.6.0a0 constrains: - - parquet-cpp <0.0a0 - apache-arrow-proc =*=cpu - arrow-cpp <0.0a0 + - parquet-cpp <0.0a0 license: Apache-2.0 - license_family: APACHE - size: 8035987 - timestamp: 1733607600970 -- kind: conda - name: libarrow-acero - version: 18.1.0 - build: h1dc2043_4_cpu - build_number: 4 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-h1dc2043_4_cpu.conda - sha256: fe8cb6feeed0858cb8e7cc8889ae20165527934778adb8f7b1f2f5d1f7ade16d - md5: e4ed6162593fbb01f4d742db4215f70c - depends: - - __osx >=11.0 - - libarrow 18.1.0 h86d57b8_4_cpu - - libcxx >=18 - license: Apache-2.0 - license_family: APACHE - size: 483574 - timestamp: 1733605591770 + size: 5494797 + timestamp: 1733808145854 - kind: conda name: libarrow-acero version: 18.1.0 - build: h512cd83_4_cpu - build_number: 4 + build: h3b568fd_6_cpu + build_number: 6 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h512cd83_4_cpu.conda - sha256: 9e88f04409da9ca2fedc5f7bf0987ff28e96d08742e59672f744ec4624a4c991 - md5: d532c42abe13841806d97f4d9cd6dcf5 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h3b568fd_6_cpu.conda + sha256: fdb70e2499e59b730084ecd53008b361a6f6090b5fb49624feda06b7e84c7b8c + md5: c50907eefe2ae22d826e7cb2e4d712f5 depends: - - libarrow 18.1.0 ha2aff55_4_cpu + - libarrow 18.1.0 h1b535d6_6_cpu - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 - license_family: APACHE - size: 578174 - timestamp: 1733607685962 + size: 578091 + timestamp: 1733810378092 - kind: conda name: libarrow-acero version: 18.1.0 - build: h8bbc2ab_4_cpu - build_number: 4 + build: hcb10f89_6_cpu + build_number: 6 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-h8bbc2ab_4_cpu.conda - sha256: b3b4ddb2718c96c93d9b50dbf8f66265af9198b55852b4d3424c13a79ec3f84d - md5: 82bcbfe424868ce66b5ab986999f534d + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-hcb10f89_6_cpu.conda + sha256: a32fa1d71415afc02b5cf3cd4c0a6ec0af9e749308829cc65ff79689222ce479 + md5: 143f9288b64759a6427563f058c62f2b depends: - __glibc >=2.17,<3.0.a0 - - libarrow 18.1.0 h3b07799_4_cpu + - libarrow 18.1.0 h44a453e_6_cpu - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 - license_family: APACHE - size: 610772 - timestamp: 1733607505368 + size: 611745 + timestamp: 1733810698469 - kind: conda - name: libarrow-dataset + name: libarrow-acero version: 18.1.0 - build: h1dc2043_4_cpu - build_number: 4 + build: hf07054f_6_cpu + build_number: 6 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-h1dc2043_4_cpu.conda - sha256: 862fb21b871666495b4bb5e63f5fcb66b93c08893e92412b01e2717e081836eb - md5: bb940b4c583e4c8e5a9f193fabdb5840 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-hf07054f_6_cpu.conda + sha256: e1cae46409927470439ef9ae93ed09b3493d0579501ca9ebfa79ded212ee98d8 + md5: 97fc01254714e1572624baefdd7cc898 depends: - __osx >=11.0 - - libarrow 18.1.0 h86d57b8_4_cpu - - libarrow-acero 18.1.0 h1dc2043_4_cpu + - libarrow 18.1.0 h4a2f8bd_6_cpu - libcxx >=18 - - libparquet 18.1.0 hf4cc9e7_4_cpu license: Apache-2.0 - license_family: APACHE - size: 489457 - timestamp: 1733607417337 + size: 483713 + timestamp: 1733808246880 - kind: conda name: libarrow-dataset version: 18.1.0 - build: h512cd83_4_cpu - build_number: 4 + build: h3b568fd_6_cpu + build_number: 6 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h512cd83_4_cpu.conda - sha256: 4a9ffedc5570ce57a6864e46dcf36ec108557791b50fd43e82eb739f3717ff2f - md5: 1a6c409f45857d30f581a1a53abb2298 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h3b568fd_6_cpu.conda + sha256: 2a08f5a1017ff660c37ae0c24343a119cb2511c6edd69e23d0a5090a0967ea35 + md5: bb1548ad011c4f9107fcc4cc548473bf depends: - - libarrow 18.1.0 ha2aff55_4_cpu - - libarrow-acero 18.1.0 h512cd83_4_cpu + - libarrow 18.1.0 h1b535d6_6_cpu + - libarrow-acero 18.1.0 h3b568fd_6_cpu - libgcc >=13 - - libparquet 18.1.0 h34a048e_4_cpu + - libparquet 18.1.0 hfc78867_6_cpu - libstdcxx >=13 license: Apache-2.0 - license_family: APACHE - size: 561495 - timestamp: 1733607973097 + size: 559673 + timestamp: 1733810461646 - kind: conda name: libarrow-dataset version: 18.1.0 - build: h8bbc2ab_4_cpu - build_number: 4 + build: hcb10f89_6_cpu + build_number: 6 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-h8bbc2ab_4_cpu.conda - sha256: 9c898ab7377953b8c7218347fdb63376d4f977cabfb8fa6bd1b421a75b8cb335 - md5: fa31464c75b20c2f3ac8fc758e034887 + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-hcb10f89_6_cpu.conda + sha256: 74eeb178070002842d3ed721769399320e3a68a0843319eaf899a092a31def26 + md5: 20ca46a6bc714a6ab189d5b3f46e66d8 depends: - __glibc >=2.17,<3.0.a0 - - libarrow 18.1.0 h3b07799_4_cpu - - libarrow-acero 18.1.0 h8bbc2ab_4_cpu + - libarrow 18.1.0 h44a453e_6_cpu + - libarrow-acero 18.1.0 hcb10f89_6_cpu - libgcc >=13 - - libparquet 18.1.0 hf4f6db6_4_cpu + - libparquet 18.1.0 h081d1f1_6_cpu - libstdcxx >=13 license: Apache-2.0 - license_family: APACHE - size: 585517 - timestamp: 1733607943984 + size: 586627 + timestamp: 1733810842604 +- kind: conda + name: libarrow-dataset + version: 18.1.0 + build: hf07054f_6_cpu + build_number: 6 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-hf07054f_6_cpu.conda + sha256: 6eba942ce926419f74e6e0a7c3994a7d78ab6be47115e6bb70e02136554736be + md5: 0774276be6659aaa0007f1b0f6ee19b0 + depends: + - __osx >=11.0 + - libarrow 18.1.0 h4a2f8bd_6_cpu + - libarrow-acero 18.1.0 hf07054f_6_cpu + - libcxx >=18 + - libparquet 18.1.0 h636d7b7_6_cpu + license: Apache-2.0 + size: 489948 + timestamp: 1733809328231 - kind: conda name: libarrow-substrait version: 18.1.0 - build: h3644d33_4_cpu - build_number: 4 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h3644d33_4_cpu.conda - sha256: ac053b3efd1a2701e6f34195d90a0da21dca22d70916ae6b10a019c2be6cd44c - md5: ce3062cd5caa0bdafa7976535862e648 + build: h3ee7192_6_cpu + build_number: 6 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-h3ee7192_6_cpu.conda + sha256: bda6728db019dd0c409b1996ad9ef6ab0bcee3a94dc66a8045e8c1049c566055 + md5: aa313b3168caf98d00b3753f5ba27650 depends: + - __glibc >=2.17,<3.0.a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.1.0 ha2aff55_4_cpu - - libarrow-acero 18.1.0 h512cd83_4_cpu - - libarrow-dataset 18.1.0 h512cd83_4_cpu + - libarrow 18.1.0 h44a453e_6_cpu + - libarrow-acero 18.1.0 hcb10f89_6_cpu + - libarrow-dataset 18.1.0 hcb10f89_6_cpu - libgcc >=13 - libprotobuf >=5.28.2,<5.28.3.0a0 - libstdcxx >=13 license: Apache-2.0 - license_family: APACHE - size: 513745 - timestamp: 1733608111290 + size: 519989 + timestamp: 1733810903274 - kind: conda name: libarrow-substrait version: 18.1.0 - build: had74209_4_cpu - build_number: 4 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-had74209_4_cpu.conda - sha256: 29e44d6070d64cd4b357e02afeae233d2e90d917a008a2724c9cd463015f0319 - md5: bf261e5fa25ce4acc11a80bdc73b88b2 + build: h3ffb4b1_6_cpu + build_number: 6 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h3ffb4b1_6_cpu.conda + sha256: 9f78c55c5d7122e588a6f226cbf7e909c479d66ed18edc633d68324323d386b9 + md5: 5db2e6832397b8ca70a6f7b00e0c3629 depends: - - __glibc >=2.17,<3.0.a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.1.0 h3b07799_4_cpu - - libarrow-acero 18.1.0 h8bbc2ab_4_cpu - - libarrow-dataset 18.1.0 h8bbc2ab_4_cpu + - libarrow 18.1.0 h1b535d6_6_cpu + - libarrow-acero 18.1.0 h3b568fd_6_cpu + - libarrow-dataset 18.1.0 h3b568fd_6_cpu - libgcc >=13 - libprotobuf >=5.28.2,<5.28.3.0a0 - libstdcxx >=13 license: Apache-2.0 - license_family: APACHE - size: 519919 - timestamp: 1733608152065 + size: 515928 + timestamp: 1733810503359 - kind: conda name: libarrow-substrait version: 18.1.0 - build: hf3d3107_4_cpu - build_number: 4 + build: h86344ea_6_cpu + build_number: 6 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-hf3d3107_4_cpu.conda - sha256: 9d9ebd042b9e8561b64f057d2adb24d331a772ccf1af3ed2d8b5b1566729f236 - md5: c093b05dc6d1b6057342d3dd6f3bd0d8 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-h86344ea_6_cpu.conda + sha256: bafd9ca59ebb5ad34b77aff316ef7b59c5fb1eb8a7b6a15de8dcbdf3ce37556d + md5: c1c162f5bf569cff8bed6def705a899f depends: - __osx >=11.0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.1.0 h86d57b8_4_cpu - - libarrow-acero 18.1.0 h1dc2043_4_cpu - - libarrow-dataset 18.1.0 h1dc2043_4_cpu + - libarrow 18.1.0 h4a2f8bd_6_cpu + - libarrow-acero 18.1.0 hf07054f_6_cpu + - libarrow-dataset 18.1.0 hf07054f_6_cpu - libcxx >=18 - libprotobuf >=5.28.2,<5.28.3.0a0 license: Apache-2.0 - license_family: APACHE - size: 451982 - timestamp: 1733607898511 + size: 451623 + timestamp: 1733809487176 - kind: conda name: libblas version: 3.9.0 @@ -5356,12 +5349,12 @@ packages: timestamp: 1729089357313 - kind: conda name: libgoogle-cloud - version: 2.31.0 + version: 2.32.0 build: h3888205_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-2.31.0-h3888205_0.conda - sha256: 603b0bd55980f5bf97911b327c9e469cf953c482f112b561dc9c1c7608bbdc29 - md5: 5b3d9a0327c4f7c569162f10acaf6bb4 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-2.32.0-h3888205_0.conda + sha256: 36af2844ce8fafd477214d51117746144461132f76759a7d29963b4583b577be + md5: a40b948bf4eabcc1ce708c40ffd7c06d depends: - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 @@ -5370,21 +5363,21 @@ packages: - libgrpc >=1.67.1,<1.68.0a0 - libprotobuf >=5.28.2,<5.28.3.0a0 - libstdcxx >=13 - - openssl >=3.3.2,<4.0a0 + - openssl >=3.4.0,<4.0a0 constrains: - - libgoogle-cloud 2.31.0 *_0 + - libgoogle-cloud 2.32.0 *_0 license: Apache-2.0 license_family: Apache - size: 1246720 - timestamp: 1731122940037 + size: 1248560 + timestamp: 1733512309504 - kind: conda name: libgoogle-cloud - version: 2.31.0 + version: 2.32.0 build: h804f50b_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.31.0-h804f50b_0.conda - sha256: b2de99c83516236ff591d30436779f8345bcc11bb0ec76a7ca3a38a3b23b6423 - md5: 35ab838423b60f233391eb86d324a830 + url: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.32.0-h804f50b_0.conda + sha256: 126856add750013390dff664a3c3cd0f6f0cbbc683b0025a7ce9d1618968bc70 + md5: 3d96df4d6b1c88455e05b94ce8a14a53 depends: - __glibc >=2.17,<3.0.a0 - libabseil * cxx17* @@ -5394,21 +5387,21 @@ packages: - libgrpc >=1.67.1,<1.68.0a0 - libprotobuf >=5.28.2,<5.28.3.0a0 - libstdcxx >=13 - - openssl >=3.3.2,<4.0a0 + - openssl >=3.4.0,<4.0a0 constrains: - - libgoogle-cloud 2.31.0 *_0 + - libgoogle-cloud 2.32.0 *_0 license: Apache-2.0 license_family: Apache - size: 1248705 - timestamp: 1731122589027 + size: 1249557 + timestamp: 1733512191906 - kind: conda name: libgoogle-cloud - version: 2.31.0 + version: 2.32.0 build: h8d8be31_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-2.31.0-h8d8be31_0.conda - sha256: 184d650d55453a40935c128ea309088ae52e15a68cd87ab17ae7c77704251168 - md5: a338736f1514e6f999db8726fe0965b1 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-2.32.0-h8d8be31_0.conda + sha256: 722e49dbdc4486105d9f5b79a7ba4f9064602fe20c4015e97684c898ab8d3386 + md5: d7ab9e0eb7d55eac4943913073de61d7 depends: - __osx >=11.0 - libabseil * cxx17* @@ -5417,77 +5410,77 @@ packages: - libcxx >=18 - libgrpc >=1.67.1,<1.68.0a0 - libprotobuf >=5.28.2,<5.28.3.0a0 - - openssl >=3.3.2,<4.0a0 + - openssl >=3.4.0,<4.0a0 constrains: - - libgoogle-cloud 2.31.0 *_0 + - libgoogle-cloud 2.32.0 *_0 license: Apache-2.0 license_family: Apache - size: 873497 - timestamp: 1731121684939 + size: 876210 + timestamp: 1733512539476 - kind: conda name: libgoogle-cloud-storage - version: 2.31.0 + version: 2.32.0 build: h0121fbd_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.31.0-h0121fbd_0.conda - sha256: 3c38b0a80441f82323dc5a72b96c0dd7476bd5184fbfcdf825a8e15249c849af - md5: 568d6a09a6ed76337a7b97c84ae7c0f8 + url: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.32.0-h0121fbd_0.conda + sha256: d1b53d17df38b52a4bc6d1fe6af0e611d6480ce10b0af570c84bd38c8aa83b91 + md5: 877a5ec0431a5af83bf0cd0522bfe661 depends: - __glibc >=2.17,<3.0.a0 - libabseil - libcrc32c >=1.1.2,<1.2.0a0 - libcurl - libgcc >=13 - - libgoogle-cloud 2.31.0 h804f50b_0 + - libgoogle-cloud 2.32.0 h804f50b_0 - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - openssl license: Apache-2.0 license_family: Apache - size: 782150 - timestamp: 1731122728715 + size: 782108 + timestamp: 1733512329104 - kind: conda name: libgoogle-cloud-storage - version: 2.31.0 + version: 2.32.0 build: h7081f7f_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-storage-2.31.0-h7081f7f_0.conda - sha256: 01f5156584b816d34270a60a61f6b6561f2a01cb3b4eeb455a4e1808d763d486 - md5: 548fd1d31741ee6b13df4124db4a9f5f + url: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-storage-2.32.0-h7081f7f_0.conda + sha256: 609df2cf376ba66460f40143f835fc567cae4458df80705587cd2efd59c09bf1 + md5: 28f5ab5cf95170dfacd05d2bb301e573 depends: - __osx >=11.0 - libabseil - libcrc32c >=1.1.2,<1.2.0a0 - libcurl - libcxx >=18 - - libgoogle-cloud 2.31.0 h8d8be31_0 + - libgoogle-cloud 2.32.0 h8d8be31_0 - libzlib >=1.3.1,<2.0a0 - openssl license: Apache-2.0 license_family: Apache - size: 526858 - timestamp: 1731122580689 + size: 526895 + timestamp: 1733513644846 - kind: conda name: libgoogle-cloud-storage - version: 2.31.0 + version: 2.32.0 build: hb9b2b65_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-storage-2.31.0-hb9b2b65_0.conda - sha256: 1df4b7b59224d865a574003df12ee36d4a9939e8e7911b4472348730b9c2a0e8 - md5: 53897114489b4df10e1680bf189aa306 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-storage-2.32.0-hb9b2b65_0.conda + sha256: e120e7b6c9c9d25baa8ae903106babdd3c969523ae25278a615ed9de4bd0fc35 + md5: 925ab0ca33baca4fcfee585cecb94169 depends: - libabseil - libcrc32c >=1.1.2,<1.2.0a0 - libcurl - libgcc >=13 - - libgoogle-cloud 2.31.0 h3888205_0 + - libgoogle-cloud 2.32.0 h3888205_0 - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - openssl license: Apache-2.0 license_family: Apache - size: 737686 - timestamp: 1731123086764 + size: 737964 + timestamp: 1733512457785 - kind: conda name: libgrpc version: 1.67.1 @@ -5901,61 +5894,58 @@ packages: - kind: conda name: libparquet version: 18.1.0 - build: h34a048e_4_cpu - build_number: 4 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-h34a048e_4_cpu.conda - sha256: 488d82356fc4e6dfd6c10a4100c36af17db1b7eb72cce0bd8973014220dc3066 - md5: 46db27c16b29f48a37a40e3b2c9dcfe3 + build: h081d1f1_6_cpu + build_number: 6 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-h081d1f1_6_cpu.conda + sha256: c691a59f1ebb6cedbf827f49f6cf414e08b0eec911f589133e6a8321e8ac701c + md5: 68788df49ce7480187eb6387f15b2b67 depends: - - libarrow 18.1.0 ha2aff55_4_cpu + - __glibc >=2.17,<3.0.a0 + - libarrow 18.1.0 h44a453e_6_cpu - libgcc >=13 - libstdcxx >=13 - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 - license_family: APACHE - size: 1117278 - timestamp: 1733607904359 + size: 1204535 + timestamp: 1733810811118 - kind: conda name: libparquet version: 18.1.0 - build: hf4cc9e7_4_cpu - build_number: 4 + build: h636d7b7_6_cpu + build_number: 6 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-hf4cc9e7_4_cpu.conda - sha256: ccadab6395090b3cbc54243fcf5c6e49eaee46aaaa4221ca8ca7803a34bdc25d - md5: b462d962b5254923c5f65ce1c68dfc17 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-h636d7b7_6_cpu.conda + sha256: 88c1e810bede65c54f1ebc51c14400f9e8cf0fc1f88a8c0a99210e2f5dfed582 + md5: 9b333c3a38e55f6c1b8733222e22f528 depends: - __osx >=11.0 - - libarrow 18.1.0 h86d57b8_4_cpu + - libarrow 18.1.0 h4a2f8bd_6_cpu - libcxx >=18 - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 - license_family: APACHE - size: 873584 - timestamp: 1733607239103 + size: 873134 + timestamp: 1733809271282 - kind: conda name: libparquet version: 18.1.0 - build: hf4f6db6_4_cpu - build_number: 4 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-hf4f6db6_4_cpu.conda - sha256: f957b6ea5c4023448891f63f7b184a663d85aa5b2717b0e0ebfbfcf97b542751 - md5: f18b10bf19bb384183f2aa546e9f6f0a + build: hfc78867_6_cpu + build_number: 6 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-hfc78867_6_cpu.conda + sha256: 38aab34c422519c530d0e9a3e0ffd1624db1c1e163983c46ae341e831b2eb6b5 + md5: 1ab6d4a9a982920b9dc5f2c700777b27 depends: - - __glibc >=2.17,<3.0.a0 - - libarrow 18.1.0 h3b07799_4_cpu + - libarrow 18.1.0 h1b535d6_6_cpu - libgcc >=13 - libstdcxx >=13 - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 - license_family: APACHE - size: 1204859 - timestamp: 1733607834047 + size: 1117592 + timestamp: 1733810440129 - kind: conda name: libpng version: 1.6.44 @@ -6799,48 +6789,53 @@ packages: timestamp: 1733376089600 - kind: conda name: lz4-c - version: 1.9.4 - build: hb7217d7_0 + version: 1.10.0 + build: h286801f_1 + build_number: 1 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.9.4-hb7217d7_0.conda - sha256: fc343b8c82efe40819b986e29ba748366514e5ab94a1e1138df195af5f45fa24 - md5: 45505bec548634f7d05e02fb25262cb9 + url: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.10.0-h286801f_1.conda + sha256: 94d3e2a485dab8bdfdd4837880bde3dd0d701e2b97d6134b8806b7c8e69c8652 + md5: 01511afc6cc1909c5303cf31be17b44f depends: - - libcxx >=14.0.6 + - __osx >=11.0 + - libcxx >=18 license: BSD-2-Clause license_family: BSD - size: 141188 - timestamp: 1674727268278 + size: 148824 + timestamp: 1733741047892 - kind: conda name: lz4-c - version: 1.9.4 - build: hcb278e6_0 + version: 1.10.0 + build: h5888daf_1 + build_number: 1 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.9.4-hcb278e6_0.conda - sha256: 1b4c105a887f9b2041219d57036f72c4739ab9e9fe5a1486f094e58c76b31f5f - md5: 318b08df404f9c9be5712aaa5a6f0bb0 + url: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.10.0-h5888daf_1.conda + sha256: 47326f811392a5fd3055f0f773036c392d26fdb32e4d8e7a8197eed951489346 + md5: 9de5350a85c4a20c685259b889aa6393 depends: - - libgcc-ng >=12 - - libstdcxx-ng >=12 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 license: BSD-2-Clause license_family: BSD - size: 143402 - timestamp: 1674727076728 + size: 167055 + timestamp: 1733741040117 - kind: conda name: lz4-c - version: 1.9.4 - build: hd600fc2_0 + version: 1.10.0 + build: h5ad3122_1 + build_number: 1 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.9.4-hd600fc2_0.conda - sha256: 076870eb72411f41c46598c7582a2f3f42ba94c526a2d60a0c8f70a0a7a64429 - md5: 500145a83ed07ce79c8cef24252f366b + url: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.10.0-h5ad3122_1.conda + sha256: 67e55058d275beea76c1882399640c37b5be8be4eb39354c94b610928e9a0573 + md5: 6654e411da94011e8fbe004eacb8fe11 depends: - - libgcc-ng >=12 - - libstdcxx-ng >=12 + - libgcc >=13 + - libstdcxx >=13 license: BSD-2-Clause license_family: BSD - size: 163770 - timestamp: 1674727020254 + size: 184953 + timestamp: 1733740984533 - kind: conda name: markdown-it-py version: 3.0.0 @@ -6936,174 +6931,177 @@ packages: timestamp: 1733417051523 - kind: conda name: max - version: 24.6.0.dev2024120905 + version: 24.6.0.dev2024121016 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120905-release.conda - sha256: 37a6103a6b2c7886ed5837d41a819f1a127eef7e810b2b5ecfb03f7caf263514 - md5: b13d61319f43570ce681408a1b27d9d5 + 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.dev2024120905 release - - max-python >=24.6.0.dev2024120905,<25.0a0 - - mojo-jupyter ==24.6.0.dev2024120905 release - - mblack ==24.6.0.dev2024120905 release + - 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 license: LicenseRef-Modular-Proprietary - size: 9911 - timestamp: 1733721408716 + size: 9917 + timestamp: 1733849930254 - kind: conda name: max-core - version: 24.6.0.dev2024120905 + version: 24.6.0.dev2024121016 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120905-release.conda - sha256: 0f94138601ceab2c8b277c7d175d762840072cfdfd0ead7264fbd1ff9f70442d - md5: 00617be1a2fef13b5630d9cbe92f9d3c + url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024121016-release.conda + sha256: 9b26505259984bb428ab3ee931ae54762c7dc8169343eff23a77ebfbd04a9044 + md5: fc4ae46f8723642288111dd01e901813 depends: - - mblack ==24.6.0.dev2024120905 release + - mblack ==24.6.0.dev2024121016 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 247639885 - timestamp: 1733721408714 + size: 247664506 + timestamp: 1733849767240 - kind: conda name: max-core - version: 24.6.0.dev2024120905 + version: 24.6.0.dev2024121016 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120905-release.conda - sha256: 1aaf2ffb09d6a2aa6b65d76c381476eb88947470580a0d56909bfd578d5eb385 - md5: c7ff53814f0c254c75dc7ab8f0c66b38 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024121016-release.conda + sha256: 779ef6524a738c5f9c140f845d0febf9dbe321f76331dbd434a4d549251db0c2 + md5: 86075990f86559126140561a14c8aafc depends: - - mblack ==24.6.0.dev2024120905 release + - mblack ==24.6.0.dev2024121016 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 251498878 - timestamp: 1733721396377 + size: 251595828 + timestamp: 1733849930252 - kind: conda name: max-core - version: 24.6.0.dev2024120905 + version: 24.6.0.dev2024121016 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120905-release.conda - sha256: 00cc8ce6adc131b858df51423201b8f028aa944ac09e56c563a1108c22eaccd2 - md5: 71554a4c0e81a1034908bc1cb716b30b + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024121016-release.conda + sha256: 3f2e56d822eca8789ee72e6d1eaa95fa2d633fa5a4991f73b5cbf64d62e2d73d + md5: 1928c2f7f79e2587edf7dd1be10bb2f7 depends: - - mblack ==24.6.0.dev2024120905 release + - mblack ==24.6.0.dev2024121016 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 212030191 - timestamp: 1733721567995 + size: 212115307 + timestamp: 1733850300421 - kind: conda name: max-python - version: 24.6.0.dev2024120905 + version: 24.6.0.dev2024121016 build: 3.12release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120905-3.12release.conda - sha256: 43245b47050208329e85a69f2af24d42c622e92e1542334a6106eaadb6cbf0ff - md5: 9a6037de6672120d1d6d53673b699d5b + url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024121016-3.12release.conda + sha256: 6ad60d7c6c2234f3f02bc36267bfb0744c40dfcb70834710c9d90776db2a516f + md5: 7fef71eb6ab9bde6a60494f367ed0223 depends: - - max-core ==24.6.0.dev2024120905 release + - max-core ==24.6.0.dev2024121016 release - python 3.12.* - - pillow - fastapi - httpx - - numpy >=1.18,<2.0 - huggingface_hub + - numpy >=1.18,<2.0 - opentelemetry-api - opentelemetry-exporter-otlp-proto-http >=1.27.0 - opentelemetry-exporter-prometheus >=0.48b0 - opentelemetry-sdk >=1.27.0 + - pillow - pydantic-settings >=2.4.0,<3 - pydantic >=2.4.0,<3 - pyinstrument - python-json-logger - sse-starlette >=2.1.3,<3 - transformers + - typing_extensions - uvicorn - python_abi 3.12.* *_cp312 arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 123751303 - timestamp: 1733721408724 + size: 123894250 + timestamp: 1733849767250 - kind: conda name: max-python - version: 24.6.0.dev2024120905 + version: 24.6.0.dev2024121016 build: 3.12release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120905-3.12release.conda - sha256: fdedbc8a2ca34d0593e8b2175ca07c07d6d0564f138f535ebff02975ef463f55 - md5: bc9f6ce493d2beb1089e1e409bb373ba + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024121016-3.12release.conda + sha256: 98f0fb331b1f3eb89e1f0a7340d8364a8d5f84fc91f25bdd076bae8225d24950 + md5: 23c72404d9e7f8bc76745502b2e53609 depends: - - max-core ==24.6.0.dev2024120905 release + - max-core ==24.6.0.dev2024121016 release - python 3.12.* - - pillow - fastapi - httpx - - numpy >=1.18,<2.0 - huggingface_hub + - numpy >=1.18,<2.0 - opentelemetry-api - opentelemetry-exporter-otlp-proto-http >=1.27.0 - opentelemetry-exporter-prometheus >=0.48b0 - opentelemetry-sdk >=1.27.0 + - pillow - pydantic-settings >=2.4.0,<3 - pydantic >=2.4.0,<3 - pyinstrument - python-json-logger - sse-starlette >=2.1.3,<3 - transformers + - typing_extensions - uvicorn - python_abi 3.12.* *_cp312 arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 127400047 - timestamp: 1733721396388 + size: 127528623 + timestamp: 1733849930263 - kind: conda name: max-python - version: 24.6.0.dev2024120905 + version: 24.6.0.dev2024121016 build: 3.12release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120905-3.12release.conda - sha256: 0cd6b2e3bdc78483665045e91b8db7a8a3d6c85fbf4b8a44d6eb742a46361af1 - md5: c1b7eb7d1a43e28224bf41220ece9b58 + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024121016-3.12release.conda + sha256: a12ef8ce21aee4490a7cf307a6072eaf84cd6df4d3e75dfbf61e438efffd5fd4 + md5: 6acba84a184a311186a957ba3e374a12 depends: - - max-core ==24.6.0.dev2024120905 release + - max-core ==24.6.0.dev2024121016 release - python 3.12.* - - pillow - fastapi - httpx - - numpy >=1.18,<2.0 - huggingface_hub + - numpy >=1.18,<2.0 - opentelemetry-api - opentelemetry-exporter-otlp-proto-http >=1.27.0 - opentelemetry-exporter-prometheus >=0.48b0 - opentelemetry-sdk >=1.27.0 + - pillow - pydantic-settings >=2.4.0,<3 - pydantic >=2.4.0,<3 - pyinstrument - python-json-logger - sse-starlette >=2.1.3,<3 - transformers + - typing_extensions - uvicorn - python_abi 3.12.* *_cp312 arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 112450493 - timestamp: 1733721567998 + size: 112564915 + timestamp: 1733850300425 - kind: conda name: mblack - version: 24.6.0.dev2024120905 + version: 24.6.0.dev2024121016 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120905-release.conda - sha256: e302e262a58592b5b8614829237760967d685cb20a44e54981916eb6c2b6b7a2 - md5: b34a59910660011ad1f42bfc1ae4ae54 + url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024121016-release.conda + sha256: f9acaa65326bbc7f7e3158b1e20b0cdc7ac7da0ca925278566da7f80731146b5 + md5: 6e4496ad926e9f2e8c187f3c1cdd6a0c depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -7113,8 +7111,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130740 - timestamp: 1733721408720 + size: 130747 + timestamp: 1733849930259 - kind: conda name: mdurl version: 0.1.2 @@ -7149,21 +7147,21 @@ packages: timestamp: 1733258822603 - kind: conda name: mojo-jupyter - version: 24.6.0.dev2024120905 + version: 24.6.0.dev2024121016 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120905-release.conda - sha256: bb71277508a55875b6011651bc825599e26a47145ab1e9c4e7c2abd853200a00 - md5: 4fc85c9cb1efe841b69d339d4da5b3a1 + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024121016-release.conda + sha256: e2a2514e4570f219e25f3f6f948d9035723b80df4fb9209598f34af17239a4f6 + md5: 0b20302cee375040ce15e8b795d7cda4 depends: - - max-core ==24.6.0.dev2024120905 release + - max-core ==24.6.0.dev2024121016 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 11366 - timestamp: 1733721408720 + size: 23064 + timestamp: 1733849930259 - kind: conda name: multidict version: 6.1.0 @@ -7508,57 +7506,56 @@ packages: timestamp: 1707225809722 - kind: conda name: openjpeg - version: 2.5.2 - build: h0d9d63b_0 + version: 2.5.3 + build: h3f56577_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/openjpeg-2.5.2-h0d9d63b_0.conda - sha256: d83375856601bc67c11295b537548a937a6896ede9d0a51d78bf5e921ab07c6f - md5: fd2898519e839d5ceb778343f39a3176 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/openjpeg-2.5.3-h3f56577_0.conda + sha256: 92d310033e20538e896f4e4b1ea4205eb6604eee7c5c651c4965a0d8d3ca0f1d + md5: 04231368e4af50d11184b50e14250993 depends: - - libgcc-ng >=12 - - libpng >=1.6.43,<1.7.0a0 - - libstdcxx-ng >=12 - - libtiff >=4.6.0,<4.8.0a0 - - libzlib >=1.2.13,<2.0.0a0 + - libgcc >=13 + - libpng >=1.6.44,<1.7.0a0 + - libstdcxx >=13 + - libtiff >=4.7.0,<4.8.0a0 + - libzlib >=1.3.1,<2.0a0 license: BSD-2-Clause - license_family: BSD - size: 374964 - timestamp: 1709159226478 + size: 377796 + timestamp: 1733816683252 - kind: conda name: openjpeg - version: 2.5.2 - build: h488ebb8_0 + version: 2.5.3 + build: h5fbd93e_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.2-h488ebb8_0.conda - sha256: 5600a0b82df042bd27d01e4e687187411561dfc11cc05143a08ce29b64bf2af2 - md5: 7f2e286780f072ed750df46dc2631138 + url: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.3-h5fbd93e_0.conda + sha256: 5bee706ea5ba453ed7fd9da7da8380dd88b865c8d30b5aaec14d2b6dd32dbc39 + md5: 9e5816bc95d285c115a3ebc2f8563564 depends: - - libgcc-ng >=12 - - libpng >=1.6.43,<1.7.0a0 - - libstdcxx-ng >=12 - - libtiff >=4.6.0,<4.8.0a0 - - libzlib >=1.2.13,<2.0.0a0 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libpng >=1.6.44,<1.7.0a0 + - libstdcxx >=13 + - libtiff >=4.7.0,<4.8.0a0 + - libzlib >=1.3.1,<2.0a0 license: BSD-2-Clause - license_family: BSD - size: 341592 - timestamp: 1709159244431 + size: 342988 + timestamp: 1733816638720 - kind: conda name: openjpeg - version: 2.5.2 - build: h9f1df11_0 + version: 2.5.3 + build: h8a3d83b_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/openjpeg-2.5.2-h9f1df11_0.conda - sha256: 472d6eaffc1996e6af35ec8e91c967f472a536a470079bfa56383cc0dbf4d463 - md5: 5029846003f0bc14414b9128a1f7c84b + url: https://conda.anaconda.org/conda-forge/osx-arm64/openjpeg-2.5.3-h8a3d83b_0.conda + sha256: 1d59bc72ca7faac06d349c1a280f5cfb8a57ee5896f1e24225a997189d7418c7 + md5: 4b71d78648dbcf68ce8bf22bb07ff838 depends: - - libcxx >=16 - - libpng >=1.6.43,<1.7.0a0 - - libtiff >=4.6.0,<4.8.0a0 - - libzlib >=1.2.13,<2.0.0a0 + - __osx >=11.0 + - libcxx >=18 + - libpng >=1.6.44,<1.7.0a0 + - libtiff >=4.7.0,<4.8.0a0 + - libzlib >=1.3.1,<2.0a0 license: BSD-2-Clause - license_family: BSD - size: 316603 - timestamp: 1709159627299 + size: 319362 + timestamp: 1733816781741 - kind: conda name: openssl version: 3.4.0 @@ -7621,6 +7618,7 @@ packages: - python >=3.9 - setuptools >=16.0 license: Apache-2.0 + license_family: APACHE size: 44242 timestamp: 1733734361129 - kind: conda @@ -7699,12 +7697,13 @@ packages: - kind: conda name: opentelemetry-sdk version: 1.28.2 - build: pyhff2d567_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.28.2-pyhff2d567_0.conda - sha256: 67c5be0f2b81b329d273f1f24f985a53e000b4b42b8338b56375d75aa8da5bb1 - md5: 742115714b2cbfa599e9f78495233d1a + url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.28.2-pyhd8ed1ab_1.conda + sha256: 9f48ec749f0738910fdd6750f9655f16949182b5379dd2c0771104d3e74bfd74 + md5: bfe29ef92f3a04ab8e59e4f97b28785c depends: - opentelemetry-api 1.28.2 - opentelemetry-semantic-conventions 0.49b2 @@ -7713,8 +7712,8 @@ packages: - typing_extensions >=3.7.4 license: Apache-2.0 license_family: APACHE - size: 78017 - timestamp: 1732070451972 + size: 78090 + timestamp: 1733768582451 - kind: conda name: opentelemetry-semantic-conventions version: 0.49b2 @@ -7730,72 +7729,76 @@ packages: - opentelemetry-api 1.28.2 - python >=3.9 license: Apache-2.0 + license_family: APACHE size: 81099 timestamp: 1733749104727 - kind: conda name: orc version: 2.0.3 - build: h121fd32_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/orc-2.0.3-h121fd32_0.conda - sha256: 4759fd0c3f06c035146100e22ee36a312c9a8226654bd2973e9ca9ac5de5cf1f - md5: 39995f7406b949c1bef74f0c7277afb3 + build: h3c55218_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/orc-2.0.3-h3c55218_1.conda + sha256: 154b26bc4d586de33765a155c9b79ebd7f5bb36c2bbf4b8854e1631bca8d21af + md5: 0a51a3cf028b845c46ec0d1ea2d18629 depends: - - __osx >=11.0 - - libcxx >=18 + - libgcc >=13 - libprotobuf >=5.28.2,<5.28.3.0a0 + - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - - lz4-c >=1.9.3,<1.10.0a0 + - lz4-c >=1.10.0,<1.11.0a0 - snappy >=1.2.1,<1.3.0a0 - tzdata - zstd >=1.5.6,<1.6.0a0 license: Apache-2.0 license_family: Apache - size: 438254 - timestamp: 1731665228473 + size: 1165179 + timestamp: 1733509923825 - kind: conda name: orc version: 2.0.3 - build: h90de224_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/orc-2.0.3-h90de224_0.conda - sha256: 7969db50268b65c2edb14be2e22bfff5656f36336eb5421d53030d29c037fec1 - md5: c07ba3025fe20ccbab9cd7c615953d6f + build: h97ab989_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/orc-2.0.3-h97ab989_1.conda + sha256: 9de7e2746fde57c9b7f08ee87142014f6bb9b2d3a506839ea3e98baa99711576 + md5: 2f46eae652623114e112df13fae311cf depends: + - __glibc >=2.17,<3.0.a0 - libgcc >=13 - libprotobuf >=5.28.2,<5.28.3.0a0 - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - - lz4-c >=1.9.3,<1.10.0a0 + - lz4-c >=1.10.0,<1.11.0a0 - snappy >=1.2.1,<1.3.0a0 - tzdata - zstd >=1.5.6,<1.6.0a0 license: Apache-2.0 license_family: Apache - size: 1170439 - timestamp: 1731665024334 + size: 1189462 + timestamp: 1733509801323 - kind: conda name: orc version: 2.0.3 - build: he039a57_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/orc-2.0.3-he039a57_0.conda - sha256: 9657ae19d6541fe67a61ef0c26ba1012ec508920b49afa897962c7d4b263ba35 - md5: 052499acd6d6b79952197a13b23e2600 + build: hbcee414_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/orc-2.0.3-hbcee414_1.conda + sha256: e5e72438a3cd967ebc774070e8c49500d2d6d4175f349400b327fee75d3bfc05 + md5: e808cf7819eaa1735c8790d7f9f482c7 depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 + - __osx >=11.0 + - libcxx >=18 - libprotobuf >=5.28.2,<5.28.3.0a0 - - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - - lz4-c >=1.9.3,<1.10.0a0 + - lz4-c >=1.10.0,<1.11.0a0 - snappy >=1.2.1,<1.3.0a0 - tzdata - zstd >=1.5.6,<1.6.0a0 license: Apache-2.0 license_family: Apache - size: 1187593 - timestamp: 1731664886527 + size: 437391 + timestamp: 1733510118673 - kind: conda name: overrides version: 7.7.0 @@ -8598,20 +8601,20 @@ packages: - kind: conda name: pydantic-settings version: 2.6.1 - build: pyh3cfb1c2_0 + build: pyh3cfb1c2_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.6.1-pyh3cfb1c2_0.conda - sha256: b3f331d69f7f3b3272e8e203211bfe39ba728a61fadc9b5c2f091b50084f0187 - md5: 412f950a65ceea20b06263f65d689f6b + url: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.6.1-pyh3cfb1c2_1.conda + sha256: 8cc37e827f0098d07743f57f968283cefce6c11562d9241aba990acc23aedb56 + md5: deabf8afc8d987f20174ef0d8d9b549e depends: - pydantic >=2.7.0 - - python >=3.8 + - python >=3.9 - python-dotenv >=0.21.0 license: MIT - license_family: MIT - size: 30618 - timestamp: 1730473755879 + size: 30832 + timestamp: 1733851937909 - kind: conda name: pygments version: 2.18.0 diff --git a/examples/operators/magic.lock b/examples/operators/magic.lock index 8f6f1771af..e2f9fe5e1e 100644 --- a/examples/operators/magic.lock +++ b/examples/operators/magic.lock @@ -9,30 +9,30 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.9-py312h178313f_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.10-py312h178313f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-ha4f867e_12.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.1-hecf86a2_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.10.3-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.3.0-hf42f96a_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.0-h873f81a_8.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.2-ha5a3ca8_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-ha35c7d9_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h56e9cca_9.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.5-h6ad95d4_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.1-hf42f96a_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-hf42f96a_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.7-h318f0b1_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-hac138a2_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-h8c8080f_14.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.1-h0f28dba_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.10.5-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.3.0-h9cc6398_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.0-hf811eff_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.2-hce7dc5d_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-hfd54f12_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-ha3c2ba9_11.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.5-h55e9418_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.1-h9cc6398_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-h9cc6398_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.7-hed26007_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-h571fd1c_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.10.0-h113e628_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.13.0-h3cf044e_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-common-cpp-12.8.0-h736e048_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-files-datalake-cpp-12.12.0-ha633028_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/backoff-2.2.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/backoff-2.2.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py312h2ec8cdc_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.3-hb9d3cd8_1.conda @@ -64,7 +64,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/httptools-0.6.4-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-7.0.2-pyha770c72_0.conda @@ -77,10 +77,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_h5888daf_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-h3b07799_4_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-h8bbc2ab_4_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-h8bbc2ab_4_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-had74209_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-h44a453e_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-hcb10f89_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-hcb10f89_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-h3ee7192_6_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-25_linux64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hb9d3cd8_2.conda @@ -99,8 +99,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hd5240d6_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h77fa898_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.31.0-h804f50b_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.31.0-h0121fbd_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.32.0-h804f50b_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.32.0-h0121fbd_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.67.1-hc2c308b_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-hd590300_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda @@ -109,7 +109,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.28-pthreads_h94d23a6_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-hf4f6db6_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-h081d1f1_6_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.44-hadc24fc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.2-h5b01275_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_1.conda @@ -128,30 +128,30 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.5-h0d44e9d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.9.4-hcb278e6_0.conda + - 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.dev2024120905-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120905-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120905-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120905-release.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.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.dev2024120905-release.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.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 - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.2-h488ebb8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.3-h5fbd93e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.0-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.28.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.28.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-prometheus-1.12.0rc1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.28.2-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.28.2-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.28.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh3cfb1c2_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/orc-2.0.3-he039a57_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/orc-2.0.3-h97ab989_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.3-py312hf9745cd_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda @@ -166,7 +166,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.3-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.27.1-py312h12e396e_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.6.1-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.6.1-pyh3cfb1c2_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyinstrument-5.0.0-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda @@ -226,30 +226,30 @@ environments: linux-aarch64: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.9-py312hcc812fe_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.10-py312hcc812fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-h89ba3c0_12.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.1-h35473ba_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-common-0.10.3-h86ecc28_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-compression-0.3.0-h4c7db1d_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-event-stream-0.5.0-hba6c15e_8.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.2-h697be72_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-h0155602_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h2cca791_9.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.5-h3c51cf6_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.1-h4c7db1d_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h4c7db1d_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.7-hacb6b83_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h5e41cbe_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-hb4dd4bb_14.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.1-h1aca5b9_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-common-0.10.5-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-compression-0.3.0-h10558d5_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-event-stream-0.5.0-ha9733bd_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.2-h53134c8_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-h8aa8d47_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h2f8d747_11.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.5-h757e810_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.1-h10558d5_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h10558d5_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.7-hc8d91e0_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h2d3f608_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-core-cpp-1.14.0-h1887c18_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-identity-cpp-1.10.0-h47b0b28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-blobs-cpp-12.13.0-h185ecfd_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-common-cpp-12.8.0-h1b94036_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-files-datalake-cpp-12.12.0-h37d6d07_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/backoff-2.2.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/backoff-2.2.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/brotli-python-1.1.0-py312h6f74592_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h68df207_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/c-ares-1.34.3-h86ecc28_1.conda @@ -281,7 +281,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/httptools-0.6.4-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda @@ -295,10 +295,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.0.0-h4de3ea5_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h5ad3122_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-ha2aff55_4_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h512cd83_4_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h512cd83_4_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h3644d33_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-h1b535d6_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h3b568fd_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h3b568fd_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h3ffb4b1_6_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-25_linuxaarch64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlicommon-1.1.0-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlidec-1.1.0-h86ecc28_2.conda @@ -317,8 +317,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-2.31.0-h3888205_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-storage-2.31.0-hb9b2b65_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-2.32.0-h3888205_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-storage-2.32.0-hb9b2b65_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgrpc-1.67.1-h36c5df4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libiconv-1.17-h31becfc_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libjpeg-turbo-3.0.0-h31becfc_1.conda @@ -327,7 +327,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnghttp2-1.64.0-hc8609a4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.28-pthreads_h9d3fd7e_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-h34a048e_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-hfc78867_6_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.44-hc4a20ef_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.2-h029595c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_1.conda @@ -346,30 +346,30 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.5-h2e0c361_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.9.4-hd600fc2_0.conda + - 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.dev2024120905-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120905-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120905-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120905-release.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.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.dev2024120905-release.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.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 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openjpeg-2.5.2-h0d9d63b_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openjpeg-2.5.3-h3f56577_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.0-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.28.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.28.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-prometheus-1.12.0rc1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.28.2-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.28.2-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.28.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh3cfb1c2_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/orc-2.0.3-h90de224_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/orc-2.0.3-h3c55218_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pandas-2.2.3-py312ha2895bd_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda @@ -384,7 +384,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.3-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pydantic-core-2.27.1-py312h8cbf658_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.6.1-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.6.1-pyh3cfb1c2_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyinstrument-5.0.0-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda @@ -443,30 +443,30 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.6-h02f22dd_0.conda osx-arm64: - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.9-py312h998013c_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.10-py312h998013c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-h35eccd0_12.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.1-h5d7ee29_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.10.3-h5505292_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-compression-0.3.0-h5d7ee29_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.0-h8ec3972_8.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.2-h48c6dea_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-h30cefa2_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h3aaadf4_9.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.5-hca3a6f1_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.1-h5d7ee29_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-h5d7ee29_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.7-hc2c2bbc_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-he4d6490_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-h93897a1_14.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.1-h4d88cd7_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.10.5-h5505292_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-compression-0.3.0-h4d88cd7_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.0-h9fa824c_10.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.2-hc68443d_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-h66499f2_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-hd073cef_11.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.5-hb201fd0_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.1-h4d88cd7_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-h4d88cd7_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.7-hb9a023b_5.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-h39838b8_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.14.0-hd50102c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.10.0-hc602bab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-blobs-cpp-12.13.0-h7585a09_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-common-cpp-12.8.0-h9ca1f76_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-files-datalake-cpp-12.12.0-hcdd55da_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/backoff-2.2.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/backoff-2.2.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py312hde4cb15_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.3-h5505292_1.conda @@ -498,7 +498,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/httptools-0.6.4-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda @@ -510,10 +510,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.16-ha0e7c42_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_hf9b8971_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-h86d57b8_4_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-h1dc2043_4_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-h1dc2043_4_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-hf3d3107_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-h4a2f8bd_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-hf07054f_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-hf07054f_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-h86344ea_6_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-25_osxarm64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.1.0-hd74edd7_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.1.0-hd74edd7_2.conda @@ -530,8 +530,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-2.31.0-h8d8be31_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-storage-2.31.0-h7081f7f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-2.32.0-h8d8be31_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-storage-2.32.0-h7081f7f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgrpc-1.67.1-hc70892a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.17-h0d3ecfb_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.0.0-hb547adb_1.conda @@ -539,7 +539,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.3-h39f12f2_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.64.0-h6d7220d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.28-openmp_hf332438_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-hf4cc9e7_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-h636d7b7_6_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.44-hc14010f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.2-h8f0b736_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h2348fd5_1.conda @@ -555,30 +555,30 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.5-h178c5d8_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.5-hdb05f8b_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.9.4-hb7217d7_0.conda + - 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.dev2024120905-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120905-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120905-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120905-release.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.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.dev2024120905-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024121016-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 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h7bae524_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openjpeg-2.5.2-h9f1df11_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openjpeg-2.5.3-h8a3d83b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.0-h39f12f2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.28.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.28.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-prometheus-1.12.0rc1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.28.2-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.28.2-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.28.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh3cfb1c2_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/orc-2.0.3-h121fd32_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/orc-2.0.3-hbcee414_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.3-py312hcd31e36_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda @@ -593,7 +593,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.3-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.27.1-py312hcd83bfe_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.6.1-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.6.1-pyh3cfb1c2_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyinstrument-5.0.0-py312h0bf5046_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda @@ -714,12 +714,12 @@ packages: timestamp: 1733332029649 - kind: conda name: aiohttp - version: 3.11.9 + version: 3.11.10 build: py312h178313f_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.9-py312h178313f_0.conda - sha256: 875a8ad0da035b33ba8037c40a2ffc0412b9545bc3d15455a8a75db22a3ee471 - md5: eeaf9831f262132fb12ce3921de09651 + url: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.10-py312h178313f_0.conda + sha256: dc8ebdd99e9d7a07454a7063a295cdc7a86264648647fec10b2ceae97478e200 + md5: 3e92784b8e32ab7d0b95ee296ba79a99 depends: - __glibc >=2.17,<3.0.a0 - aiohappyeyeballs >=2.3.0 @@ -734,16 +734,16 @@ packages: - yarl >=1.17.0,<2.0 license: MIT AND Apache-2.0 license_family: Apache - size: 912186 - timestamp: 1733125914520 + size: 914378 + timestamp: 1733839626367 - kind: conda name: aiohttp - version: 3.11.9 + version: 3.11.10 build: py312h998013c_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.9-py312h998013c_0.conda - sha256: 521b7c97a1122c0a6740a3200163e29bc8aa1d7efa273deb6e4c58a47779114b - md5: 0bb2657d1215a89fb586d387ce9c4daa + url: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.10-py312h998013c_0.conda + sha256: 69eb9c89dce6a7ae960099172daffba9f77fef39344f37e581685a8e3c5debe6 + md5: 642356223364539ba7ba36556fcf49ee depends: - __osx >=11.0 - aiohappyeyeballs >=2.3.0 @@ -758,16 +758,16 @@ packages: - yarl >=1.17.0,<2.0 license: MIT AND Apache-2.0 license_family: Apache - size: 873089 - timestamp: 1733125044394 + size: 874135 + timestamp: 1733839113411 - kind: conda name: aiohttp - version: 3.11.9 + version: 3.11.10 build: py312hcc812fe_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.9-py312hcc812fe_0.conda - sha256: e358d2c03b4eceb7ad3d8636705e60aa15bdec81305d9f9e1624fb5a03901147 - md5: 06400e4f6428e6c2ea2b59df702b5b39 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.10-py312hcc812fe_0.conda + sha256: df694a9fec546e575a4ea7e1c3ac476c0bda53c0fad44c046ad3ebdd5b75a0a8 + md5: a8c9ec59e6323b38418bbf04deaa0c02 depends: - aiohappyeyeballs >=2.3.0 - aiosignal >=1.1.2 @@ -782,8 +782,8 @@ packages: - yarl >=1.17.0,<2.0 license: MIT AND Apache-2.0 license_family: Apache - size: 900828 - timestamp: 1733124971238 + size: 900931 + timestamp: 1733839037447 - kind: conda name: aiosignal version: 1.3.1 @@ -859,443 +859,447 @@ packages: - kind: conda name: aws-c-auth version: 0.8.0 - build: h35eccd0_12 - build_number: 12 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-h35eccd0_12.conda - sha256: 40ca48aee5f3ff0d3ffd64625dacb019104a9a2ee24cd54052cde6fe4cbc8349 - md5: 1109d5293b724ca16b61452accfdb442 + build: h8c8080f_14 + build_number: 14 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-h8c8080f_14.conda + sha256: 7a9f7763e3a151ae1008ead51458f9b889b657f388266d53c6f7fa383dbb2481 + md5: a9284141081982473ebf41b92566bbcb depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-common >=0.10.5,<0.10.6.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 + - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 92279 - timestamp: 1733611476546 + size: 107775 + timestamp: 1733709347751 - kind: conda name: aws-c-auth version: 0.8.0 - build: h89ba3c0_12 - build_number: 12 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-h89ba3c0_12.conda - sha256: 021451014fb5ee24601052d84db8d5babbce5085959ba777b540db4e33bde360 - md5: c0e2e6c3aa8c309af0ba09fc7d949407 + build: h93897a1_14 + build_number: 14 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-h93897a1_14.conda + sha256: 3ec33500c5def035acb9ba406161f5452e39b1b818c67d8a56103d6def47bda6 + md5: 061e221dc5cca62be8fab49a16bfb99d depends: + - __osx >=11.0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-common >=0.10.5,<0.10.6.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 112242 - timestamp: 1733611425746 + size: 92250 + timestamp: 1733709418870 - kind: conda name: aws-c-auth version: 0.8.0 - build: ha4f867e_12 - build_number: 12 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-ha4f867e_12.conda - sha256: b9355bedf43c857a2d1986ebe7d61e615218f2171d163b509633d6c0c988d2dc - md5: d889de56d3be691063b71eb826470e29 + build: hb4dd4bb_14 + build_number: 14 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-hb4dd4bb_14.conda + sha256: a9622ac836bbe4a24310e0e77a42ef0a17e5fa0703276f8bbbef945deaca337c + md5: a5b86123507e184fb4463e1f8890b398 depends: - - __glibc >=2.17,<3.0.a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-common >=0.10.5,<0.10.6.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 107663 - timestamp: 1733611397256 + size: 111975 + timestamp: 1733709317063 - kind: conda name: aws-c-cal version: 0.8.1 - build: h35473ba_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.1-h35473ba_0.conda - sha256: c2d59d74e167b6df3c1a7addf0d37080b69a6b3dee2a30b3f2171a5d26c5a691 - md5: 97c0ccb4d43d880b38f237e746c29ead + build: h0f28dba_2 + build_number: 2 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.1-h0f28dba_2.conda + sha256: 023fa0d0618b652b0be5eac73d92fd47136351da7d331334c45d5dd1ee760401 + md5: 94faebd978282d2a4a8514141daec756 depends: - - aws-c-common >=0.10.3,<0.10.4.0a0 + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.5,<0.10.6.0a0 - libgcc >=13 - openssl >=3.3.1,<4.0a0 license: Apache-2.0 license_family: Apache - size: 49808 - timestamp: 1732038238504 + size: 47694 + timestamp: 1733390870810 - kind: conda name: aws-c-cal version: 0.8.1 - build: h5d7ee29_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.1-h5d7ee29_0.conda - sha256: 42d5e9fb695bc3b280ed7e625dcda110b6780ee471e227f1b92afce71ae4972c - md5: fc51a61831a676fe6f922450f51ab6af + build: h1aca5b9_2 + build_number: 2 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.1-h1aca5b9_2.conda + sha256: df203473e8675fc27ae5cb62bc09e336fe92655df0a0056e73087cb22aed287e + md5: 31d9e82aac5cd3fe399535bcec0f2975 depends: - - __osx >=11.0 - - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-common >=0.10.5,<0.10.6.0a0 + - libgcc >=13 - openssl >=3.3.1,<4.0a0 license: Apache-2.0 license_family: Apache - size: 40047 - timestamp: 1732038304022 + size: 49822 + timestamp: 1733390907734 - kind: conda name: aws-c-cal version: 0.8.1 - build: hecf86a2_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.1-hecf86a2_0.conda - sha256: 12cc2087503f4f0d3a5db84e791fb5e585866da728f888aa76e14330a092a681 - md5: 8350795be14a92d68847c0d4f3c1d59f + build: h4d88cd7_2 + build_number: 2 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.1-h4d88cd7_2.conda + sha256: 30e6bc4feea78a280553b084a960515e550dabfae0e63ba511be773c3a9f6b5a + md5: 3cb07f08e5aabe657b0b5fb13945e79a depends: - - __glibc >=2.17,<3.0.a0 - - aws-c-common >=0.10.3,<0.10.4.0a0 - - libgcc >=13 + - __osx >=11.0 + - aws-c-common >=0.10.5,<0.10.6.0a0 - openssl >=3.3.1,<4.0a0 license: Apache-2.0 license_family: Apache - size: 47569 - timestamp: 1732038156682 + size: 39878 + timestamp: 1733390962202 - kind: conda name: aws-c-common - version: 0.10.3 + version: 0.10.5 build: h5505292_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.10.3-h5505292_0.conda - sha256: bb2c1038726d31ffd2d35a5764f80bcd670b6a1c753aadfd261aecb9f88db6d8 - md5: 4150339e3b08db33fe4c436340b1d7f6 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.10.5-h5505292_0.conda + sha256: 54554886028d25b5c752369e7ae8321852e875fdc780ff9357b72a31f3e5d5b4 + md5: 49f049f8b10cf8c2c5a26660854fd21a depends: - __osx >=11.0 license: Apache-2.0 license_family: Apache - size: 221524 - timestamp: 1731567512057 + size: 222184 + timestamp: 1733324871298 - kind: conda name: aws-c-common - version: 0.10.3 + version: 0.10.5 build: h86ecc28_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-common-0.10.3-h86ecc28_0.conda - sha256: 95ca372a0e1bb8dad421751de6aa44d37d87dd69c33a48faca1ae6efa30f2af0 - md5: 64f523ba00b75fdcb33a4eea827d3d19 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-common-0.10.5-h86ecc28_0.conda + sha256: bdea66b7be9acd463bbfd583d2f80ff676d376c60480a2d3f9f7de7b4bf6d2b2 + md5: fcd238b0cc98927742a96aa411123e32 depends: - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 257859 - timestamp: 1731567310573 + size: 258257 + timestamp: 1733324684433 - kind: conda name: aws-c-common - version: 0.10.3 + version: 0.10.5 build: hb9d3cd8_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.10.3-hb9d3cd8_0.conda - sha256: 90bd2ff40b65acb62f11e2500ee7b7e85ac77d2e332429002f4c1da949bec27f - md5: ff3653946d34a6a6ba10babb139d96ef + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.10.5-hb9d3cd8_0.conda + sha256: 93e83e2a31f41bac2aa5eae8fbc7f1d31449a04a3df8a64ebcac2433f52a86ad + md5: d8288fbad9d809b9ca139b8beb6553ef depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 237137 - timestamp: 1731567278052 + size: 237114 + timestamp: 1733324723318 - kind: conda name: aws-c-compression version: 0.3.0 - build: h4c7db1d_2 - build_number: 2 + build: h10558d5_4 + build_number: 4 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-compression-0.3.0-h4c7db1d_2.conda - sha256: 8dba3d48a7230ccd2a6ea8d88c0e1b6caf0a39b14a2b2f0255a413fcfce8ad0a - md5: ee074857cec335bb83692771b06160a4 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-compression-0.3.0-h10558d5_4.conda + sha256: 45ea74461b6a5453325db2201ba9f728f20e89ead17730e93ddd7411a833c058 + md5: 8ceaf4396978c33bc695129425f12734 depends: - - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-common >=0.10.5,<0.10.6.0a0 - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 19696 - timestamp: 1731678729046 + size: 19742 + timestamp: 1733391062884 - kind: conda name: aws-c-compression version: 0.3.0 - build: h5d7ee29_2 - build_number: 2 + build: h4d88cd7_4 + build_number: 4 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-compression-0.3.0-h5d7ee29_2.conda - sha256: a52ea62bf08aed3af079e16d1738f3d2a7fcdd1d260289ae27ae96298e15d12a - md5: 15566c36b0cf5f314e3bee7f7cc796b5 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-compression-0.3.0-h4d88cd7_4.conda + sha256: b6900e82b553d18d5528322de236af3a7f64ccb3df08e8320142894144a5c716 + md5: 8c67ff0c68aea28be3efec6f8d799a19 depends: - __osx >=11.0 - - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-common >=0.10.5,<0.10.6.0a0 license: Apache-2.0 license_family: Apache - size: 18204 - timestamp: 1731678916439 + size: 18219 + timestamp: 1733391126008 - kind: conda name: aws-c-compression version: 0.3.0 - build: hf42f96a_2 - build_number: 2 + build: h9cc6398_4 + build_number: 4 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.3.0-hf42f96a_2.conda - sha256: 210ba4fff1c9500fe02de1dae311ce723bfa313a2d21b72accd745f736f56fce - md5: 257f4ae92fe11bd8436315c86468c39b + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.3.0-h9cc6398_4.conda + sha256: 045a3231b0aacb544ea9e348c22f863d96631f14a3a2b59413a72f61259a32a4 + md5: 076717670d5406e90070120314ff9b4f depends: - __glibc >=2.17,<3.0.a0 - - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-common >=0.10.5,<0.10.6.0a0 - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 19034 - timestamp: 1731678703956 + size: 19029 + timestamp: 1733390975089 - kind: conda name: aws-c-event-stream version: 0.5.0 - build: h873f81a_8 - build_number: 8 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.0-h873f81a_8.conda - sha256: 589f9a04c4c7a919410dde75ce93a6986efad6ed522ecd8e5c9c587ac18f0d34 - md5: 32bdd50b43fcc435a8dc5a3c66aafef0 + build: h9fa824c_10 + build_number: 10 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.0-h9fa824c_10.conda + sha256: 12f2ccc71bb993934cc489af359cb7399f671c3111f64fe2be9c8231819e11bd + md5: 9f6a7984f9ce3c6149fa36865060928a depends: - - __glibc >=2.17,<3.0.a0 - - aws-c-common >=0.10.3,<0.10.4.0a0 + - __osx >=11.0 + - aws-c-common >=0.10.5,<0.10.6.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - - libgcc >=13 - - libstdcxx >=13 + - libcxx >=18 license: Apache-2.0 license_family: Apache - size: 54020 - timestamp: 1731839177415 + size: 47460 + timestamp: 1733696263921 - kind: conda name: aws-c-event-stream version: 0.5.0 - build: h8ec3972_8 - build_number: 8 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.0-h8ec3972_8.conda - sha256: 81b98fc39e64d090af23b11621e467b4f943a19f61dda0fed5ad6397f06de5c7 - md5: ced9c97ddf61e4222d548e8bcc863b87 + build: ha9733bd_10 + build_number: 10 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-event-stream-0.5.0-ha9733bd_10.conda + sha256: e8189bdd1af1a3f68a460bcb3c852193cfdf7afa2f1a82d687d30055242b20e2 + md5: cb0877c6fcc93454f221ba4eba798cfc depends: - - __osx >=11.0 - - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-common >=0.10.5,<0.10.6.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - - libcxx >=18 + - libgcc >=13 + - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 47491 - timestamp: 1731839300212 + size: 55066 + timestamp: 1733696212604 - kind: conda name: aws-c-event-stream version: 0.5.0 - build: hba6c15e_8 - build_number: 8 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-event-stream-0.5.0-hba6c15e_8.conda - sha256: d3b74580045ee9d54a134ab1e5e00082d5d8a466980e94acc153188ee7375d08 - md5: 102f8b54630d79aff5e0c489f40f926e + build: hf811eff_10 + build_number: 10 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.0-hf811eff_10.conda + sha256: 3fbc86e70b543f26cc485f98714b7f789c4ece05128046458681893f43b7f5f1 + md5: 5046c78dd139a333b6acd7376a10e0a7 depends: - - aws-c-common >=0.10.3,<0.10.4.0a0 + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.5,<0.10.6.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 55354 - timestamp: 1731839242373 + size: 53973 + timestamp: 1733696170256 - kind: conda name: aws-c-http version: 0.9.2 - build: h48c6dea_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.2-h48c6dea_1.conda - sha256: cb68d557af1bdcbef668574836fbf39c4df0e4f377258e4d5bd14196acf9b992 - md5: a28dd36a1da76042bfb5579005cc6728 + build: h53134c8_3 + build_number: 3 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.2-h53134c8_3.conda + sha256: a4d217f89ad0e9326da57b2d9bd4cd5cb0a95423d092be7ed81e88fb075d4dbe + md5: 2ffd03180381a92332b673cefc602234 depends: - - __osx >=11.0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-common >=0.10.5,<0.10.6.0a0 - aws-c-compression >=0.3.0,<0.3.1.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 + - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 152660 - timestamp: 1732110368931 + size: 189812 + timestamp: 1733683248290 - kind: conda name: aws-c-http version: 0.9.2 - build: h697be72_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.2-h697be72_1.conda - sha256: 4d6557a00e74649301da78d7de7d108882ce89eb9d6c87efce30789b53a617cf - md5: a8b1a2c11a93e615f6e8f33175ff8ff0 + build: hc68443d_3 + build_number: 3 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.2-hc68443d_3.conda + sha256: 71be93cd1d8dfa5858939ba53431abaee859fbc98bdf9f5033bfa41af76b140a + md5: 6353604cb9803e63fce359388201514e depends: + - __osx >=11.0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-common >=0.10.5,<0.10.6.0a0 - aws-c-compression >=0.3.0,<0.3.1.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 190344 - timestamp: 1732110425530 + size: 153237 + timestamp: 1733683327609 - kind: conda name: aws-c-http version: 0.9.2 - build: ha5a3ca8_1 - build_number: 1 + build: hce7dc5d_3 + build_number: 3 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.2-ha5a3ca8_1.conda - sha256: 8ecb3d8411f58db4686635aedfe5d60b2b8870f9f9cafb471f3878dc61d21596 - md5: b2e017f8a4781ad3af9166edf10b65a8 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.2-hce7dc5d_3.conda + sha256: 7e864b6d4255c4edbd1b2c0f519849017d2a48e54b282748eaa8f9f0fc98a6f4 + md5: c0f54e8975ad42d2864f4b1918356b3b depends: - __glibc >=2.17,<3.0.a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-common >=0.10.5,<0.10.6.0a0 - aws-c-compression >=0.3.0,<0.3.1.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 197338 - timestamp: 1732110324356 + size: 197506 + timestamp: 1733683203582 - kind: conda name: aws-c-io version: 0.15.3 - build: h0155602_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-h0155602_1.conda - sha256: 7b8d97d51e5bb80191e07f16cac6f59068be30bf5906925a8f4159b3aab9093c - md5: 431c201b11eee90fd120844557a62b02 + build: h66499f2_3 + build_number: 3 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-h66499f2_3.conda + sha256: 86ff175fa5dced16cf41bcc5c353de080314fcb81f4aed326f29b9f22add9aad + md5: e64159c5b106a0365544cfe9d4ef79ec depends: + - __osx >=11.0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.3,<0.10.4.0a0 - - libgcc >=13 - - s2n >=1.5.9,<1.5.10.0a0 + - aws-c-common >=0.10.5,<0.10.6.0a0 license: Apache-2.0 license_family: Apache - size: 161664 - timestamp: 1732097310449 + size: 136845 + timestamp: 1733588465582 - kind: conda name: aws-c-io version: 0.15.3 - build: h30cefa2_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-h30cefa2_1.conda - sha256: d6f8d42259ca11507bd912b3cd3ff1a65d6d8c7ff67ae9ee9df1686c9bebbbcc - md5: 8b8dc361de09e5b6227165a876e55cb7 + build: h8aa8d47_3 + build_number: 3 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-h8aa8d47_3.conda + sha256: cb08b2e9258637e810ac283600b7de2d7a68f55a61e67226e9cce2537f36a06b + md5: 8ece20a51dafae96444e90c7ddaac41a depends: - - __osx >=11.0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-common >=0.10.5,<0.10.6.0a0 + - libgcc >=13 + - s2n >=1.5.9,<1.5.10.0a0 license: Apache-2.0 license_family: Apache - size: 136662 - timestamp: 1732097382517 + size: 161513 + timestamp: 1733588480960 - kind: conda name: aws-c-io version: 0.15.3 - build: ha35c7d9_1 - build_number: 1 + build: hfd54f12_3 + build_number: 3 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-ha35c7d9_1.conda - sha256: 2e9e13ed54f6da22ee5d06622f4165bcca253411997dad62225aecc54b25c0db - md5: 97960f380abe1ba3157fe63312e35b07 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-hfd54f12_3.conda + sha256: 6d0bd78d5c7d3ec586691d54c8aebc79d089358ff9e793f0cac857a1f977a1a0 + md5: c0b9f79cd2f5797b913415511bfa2cd6 depends: - __glibc >=2.17,<3.0.a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-common >=0.10.5,<0.10.6.0a0 - libgcc >=13 - s2n >=1.5.9,<1.5.10.0a0 license: Apache-2.0 license_family: Apache - size: 158012 - timestamp: 1732097264673 + size: 158115 + timestamp: 1733588386529 - kind: conda name: aws-c-mqtt version: 0.11.0 - build: h2cca791_9 - build_number: 9 + build: h2f8d747_11 + build_number: 11 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h2cca791_9.conda - sha256: c0ad176bab176a2983fb052de71037fc9357afd13b073511a7a440c1a8c6eff2 - md5: 090674d608454e979ce77bc8ee735868 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h2f8d747_11.conda + sha256: b66de0de359bfaec5084bdc78fda6dfbd8cf8e71c68a76dcd7b74e8a00ec6052 + md5: f4ccd7c1e73c662fd9a795147ca8ca9f depends: - - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-common >=0.10.5,<0.10.6.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 169690 - timestamp: 1733688313938 + size: 168898 + timestamp: 1733739548597 - kind: conda name: aws-c-mqtt version: 0.11.0 - build: h3aaadf4_9 - build_number: 9 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h3aaadf4_9.conda - sha256: 3cc99239c8dadfe55e4b9ba37d03c5d3308ddd8fe00792fab7c6b47c97655c07 - md5: ddb5dc7ac1ae424ca2b7a847765a0cb9 + build: ha3c2ba9_11 + build_number: 11 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-ha3c2ba9_11.conda + sha256: 187787bb41e7b616c9317c12c32a5027aae784d1f9335f9d6d34a3fa7ebcb1ec + md5: 93c5070d6f9b4cb2ed9de52ce247cebb depends: - - __osx >=11.0 - - aws-c-common >=0.10.3,<0.10.4.0a0 + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.5,<0.10.6.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 + - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 135051 - timestamp: 1733688394116 + size: 193829 + timestamp: 1733740033267 - kind: conda name: aws-c-mqtt version: 0.11.0 - build: h56e9cca_9 - build_number: 9 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h56e9cca_9.conda - sha256: c93c29b58482ca72d3f9a5710ad92194e809a9de988bcdcbae9ddd0f8ed484a6 - md5: f75642fe24ae4131f554cbacd6df53e3 + build: hd073cef_11 + build_number: 11 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-hd073cef_11.conda + sha256: d2ee2cdc651250a38f67b84ec65de3ba5493c760821d22c01edb8defd6393dc9 + md5: 0c1deb6e00f80b4aedcb2c4fcfea6407 depends: - - __glibc >=2.17,<3.0.a0 - - aws-c-common >=0.10.3,<0.10.4.0a0 + - __osx >=11.0 + - aws-c-common >=0.10.5,<0.10.6.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 194705 - timestamp: 1733688770217 + size: 134556 + timestamp: 1733739661152 - kind: conda name: aws-c-s3 version: 0.7.5 - build: h3c51cf6_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.5-h3c51cf6_2.conda - sha256: 98a2df8a5068183e55b4c6914a3513d403300be20c960842a9a229546b8e8e52 - md5: e326ddae95b3ec96a31aded04c834175 + build: h55e9418_4 + build_number: 4 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.5-h55e9418_4.conda + sha256: 04d7fd3574fa76c184f04630125a760afa4ae5d4109eec36f22fe127cc85e164 + md5: faec629f0eb306cfe17ed1615249e188 depends: + - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-common >=0.10.5,<0.10.6.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 @@ -1303,22 +1307,21 @@ packages: - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 117896 - timestamp: 1733694002769 + size: 113811 + timestamp: 1733717653326 - kind: conda name: aws-c-s3 version: 0.7.5 - build: h6ad95d4_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.5-h6ad95d4_2.conda - sha256: 103a478b18ead8f79aae9a4966b2879e9fbcfb0aa3b2e6c9b2811a76ba34610e - md5: 682c079ec089d47bb7142f12b3275e4f + build: h757e810_4 + build_number: 4 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.5-h757e810_4.conda + sha256: 3da5e1b88d68c5cb2eb1dd898a7c6192be9e1df0bd2733d39d6c0ffe9fc546a2 + md5: 96a657e5856e9e92755170630067f63c depends: - - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-common >=0.10.5,<0.10.6.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 @@ -1326,166 +1329,165 @@ packages: - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 113741 - timestamp: 1733693956970 + size: 117478 + timestamp: 1733717680655 - kind: conda name: aws-c-s3 version: 0.7.5 - build: hca3a6f1_2 - build_number: 2 + build: hb201fd0_4 + build_number: 4 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.5-hca3a6f1_2.conda - sha256: 53c4dc6e360ed6e1242c20fa43f7bfe67a41215e51cafab27dbd8aa91333040c - md5: 0b4e647cae3ce85ec991c6e3b8d12bda + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.5-hb201fd0_4.conda + sha256: c25c62173770b681083962b497a927f306e7f3d05b459dd59e4c12eaf49e9f0b + md5: 83b9775bbe5419cf4916e646e870b87a depends: - __osx >=11.0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-common >=0.10.5,<0.10.6.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 license: Apache-2.0 license_family: Apache - size: 97530 - timestamp: 1733694097526 + size: 97441 + timestamp: 1733717822438 - kind: conda name: aws-c-sdkutils version: 0.2.1 - build: h4c7db1d_1 - build_number: 1 + build: h10558d5_3 + build_number: 3 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.1-h4c7db1d_1.conda - sha256: 3d2b079a361888197894308a93fec95666c6abfcc86c979ae36f1f9cb223dfb3 - md5: 45437a9bad358b25f795e77218063baf + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.1-h10558d5_3.conda + sha256: 0f6a15d711bc4d6b2d2b8451ad46bf78af6876235ad56bf142644a4ce2240f52 + md5: 1ba505fc4243ad75507efa8976e1790f depends: - - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-common >=0.10.5,<0.10.6.0a0 - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 58256 - timestamp: 1731687032896 + size: 58123 + timestamp: 1733398238726 - kind: conda name: aws-c-sdkutils version: 0.2.1 - build: h5d7ee29_1 - build_number: 1 + build: h4d88cd7_3 + build_number: 3 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.1-h5d7ee29_1.conda - sha256: ed3b272b9a345142e62f0cf9ab2a9fa909c92e09691f6a06e98ff500a1f8a303 - md5: 0f1e5bc57d4567c9d9bec8d8982828ed + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.1-h4d88cd7_3.conda + sha256: a94ecde4e61de8effd9c93ba3527eb010773b5422d2d079ffdcd796ec77fcd4e + md5: 5ec333d73530fbfc2db670eeb6911bff depends: - __osx >=11.0 - - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-common >=0.10.5,<0.10.6.0a0 license: Apache-2.0 license_family: Apache - size: 50276 - timestamp: 1731687215375 + size: 49739 + timestamp: 1733398400904 - kind: conda name: aws-c-sdkutils version: 0.2.1 - build: hf42f96a_1 - build_number: 1 + build: h9cc6398_3 + build_number: 3 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.1-hf42f96a_1.conda - sha256: f6e38c79b124c34edb048c28ec58fdfc4ea8f7a218dc493195afbada48ba063b - md5: bbdd20fb1994a9f0ba98078fcb6c12ab + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.1-h9cc6398_3.conda + sha256: 917f679da38f162e191c5d6817b35fbf2ae0584b1d335bc229fd01e6077108ee + md5: 10bdb7fc3763760dcea1cd908ece6b2b depends: - __glibc >=2.17,<3.0.a0 - - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-common >=0.10.5,<0.10.6.0a0 - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 55738 - timestamp: 1731687063424 + size: 55864 + timestamp: 1733398187914 - kind: conda name: aws-checksums version: 0.2.2 - build: h4c7db1d_1 - build_number: 1 + build: h10558d5_3 + build_number: 3 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h4c7db1d_1.conda - sha256: b3fa060d4fe9e8fdb7b21b8b3c5fdb61df6f02973f74245a65869100f72a3931 - md5: af22e7e1c1af348a66f938aa66192f2c + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h10558d5_3.conda + sha256: 108860ae5d61a4dc0b0d91282d0171ba7fd69686c11b4bcbdcd3f8b8efc98adb + md5: 1ded47669f79301e4a3d1d3d469494c0 depends: - - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-common >=0.10.5,<0.10.6.0a0 - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 72081 - timestamp: 1731687244426 + size: 72203 + timestamp: 1733398350602 - kind: conda name: aws-checksums version: 0.2.2 - build: h5d7ee29_1 - build_number: 1 + build: h4d88cd7_3 + build_number: 3 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-h5d7ee29_1.conda - sha256: eb7ebe309b33a04329b3e51a7f10bb407815389dc37cc047f7d41f9c91f0d1b0 - md5: db1ed95988a8fe6c1ce0d94abdfc8e72 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-h4d88cd7_3.conda + sha256: 7d0d71e399fa6b0a1e686470d4a982396a9d0d29be29bf07591d83739cc29a0a + md5: 45409e27b510588196b9f116f86c2d51 depends: - __osx >=11.0 - - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-common >=0.10.5,<0.10.6.0a0 license: Apache-2.0 license_family: Apache - size: 70184 - timestamp: 1731687342560 + size: 70160 + timestamp: 1733398484776 - kind: conda name: aws-checksums version: 0.2.2 - build: hf42f96a_1 - build_number: 1 + build: h9cc6398_3 + build_number: 3 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-hf42f96a_1.conda - sha256: da802ace5448481c968cfec7e7a4f79f686f42df9de8e3f78c09a925c2882a79 - md5: d908d43d87429be24edfb20e96543c20 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-h9cc6398_3.conda + sha256: a3aea2fc8ccf85ae64c5ce9c4e507be37173b94909191480e5151c482a220e40 + md5: d6dd8b87b95195d8d26893611d94ba3b depends: - __glibc >=2.17,<3.0.a0 - - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-common >=0.10.5,<0.10.6.0a0 - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 72744 - timestamp: 1731687193373 + size: 72681 + timestamp: 1733398331530 - kind: conda name: aws-crt-cpp version: 0.29.7 - build: h318f0b1_3 - build_number: 3 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.7-h318f0b1_3.conda - sha256: 35100ad81adf31aa4e73ac2956e9a8ff277cc57d0db2db2f0e9c51012175eadd - md5: 9748d0527695a64aa2eb45e891ea188d + build: hb9a023b_5 + build_number: 5 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.7-hb9a023b_5.conda + sha256: d1d89918a1f6e08f16275d82218b2f73012cee2def3ad8f1a8d28af7497e66cc + md5: 70a976e616535dbab5e1f354734a238a depends: - - __glibc >=2.17,<3.0.a0 + - __osx >=11.0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-common >=0.10.5,<0.10.6.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - aws-c-s3 >=0.7.5,<0.7.6.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - - libgcc >=13 - - libstdcxx >=13 + - libcxx >=18 license: Apache-2.0 license_family: Apache - size: 355045 - timestamp: 1733744656604 + size: 236182 + timestamp: 1733767086227 - kind: conda name: aws-crt-cpp version: 0.29.7 - build: hacb6b83_3 - build_number: 3 + build: hc8d91e0_5 + build_number: 5 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.7-hacb6b83_3.conda - sha256: 6c0ece3ca494c2220fc052e608d52ea52bb361e536a14a1b3b36ebeede9de8b9 - md5: 27ce3ed5b7e55370a9fea2dda2b3245a + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.7-hc8d91e0_5.conda + sha256: c3be4f3f77ac7ba716228df1099eb68a5e7a4cbbe386a4732a28f33d6b780cc4 + md5: 8f14e3d651a08c9b2f85c6e5d359e250 depends: - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-common >=0.10.5,<0.10.6.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 @@ -1496,44 +1498,45 @@ packages: - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 283993 - timestamp: 1733744571881 + size: 284313 + timestamp: 1733766768643 - kind: conda name: aws-crt-cpp version: 0.29.7 - build: hc2c2bbc_3 - build_number: 3 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.7-hc2c2bbc_3.conda - sha256: 6a519151e7fa71fbc9d1cd3a526ea7591638af058a6cc0534e1cd418fd48b354 - md5: 5450324f7b48dff1f6ed5484bf830972 + build: hed26007_5 + build_number: 5 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.7-hed26007_5.conda + sha256: f996cb94f3ef212792f288a0f7c5201ac7f00bb43502702b76e408e50d80132f + md5: 7c64e4ac7a484fc525a4ce7b9baf709a depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-common >=0.10.5,<0.10.6.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - aws-c-s3 >=0.7.5,<0.7.6.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - - libcxx >=18 + - libgcc >=13 + - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 236331 - timestamp: 1733744737078 + size: 354783 + timestamp: 1733766766977 - kind: conda name: aws-sdk-cpp version: 1.11.458 - build: h5e41cbe_1 - build_number: 1 + build: h2d3f608_3 + build_number: 3 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h5e41cbe_1.conda - sha256: b45305787a78f2bf7ecabc401b5bfe451509b434dd041a0a554572a70302d2f3 - md5: 1861b1fb86b336f1f53faaac5a76046c + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h2d3f608_3.conda + sha256: b335dfee7b04117ddae857564300ed6795718e2305141c7d631dcc434503a261 + md5: 57bdfac803ce58e3a3256752d7e5aa6e depends: - - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-common >=0.10.5,<0.10.6.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - aws-crt-cpp >=0.29.7,<0.29.8.0a0 @@ -1544,55 +1547,55 @@ packages: - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 2910575 - timestamp: 1733576378398 + size: 2896174 + timestamp: 1733808114676 - kind: conda name: aws-sdk-cpp version: 1.11.458 - build: hac138a2_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-hac138a2_1.conda - sha256: fdb9c94d7524c52837643428b1aab4f35bed3ba2862a57e1b03e63038c7c146f - md5: bbdd9589b1a32a80b0e3f98a2a482542 + build: h39838b8_3 + build_number: 3 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-h39838b8_3.conda + sha256: b5ef3a956937d61b59b9dd4b8c23eeb0bc254c37a97028a50c3ff6c8df399deb + md5: 3a6c8f65692febdf791bece561b371c8 depends: - - __glibc >=2.17,<3.0.a0 - - aws-c-common >=0.10.3,<0.10.4.0a0 + - __osx >=11.0 + - aws-c-common >=0.10.5,<0.10.6.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - aws-crt-cpp >=0.29.7,<0.29.8.0a0 - libcurl >=8.10.1,<9.0a0 - - libgcc >=13 - - libstdcxx >=13 + - libcxx >=18 - libzlib >=1.3.1,<2.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 3071464 - timestamp: 1733576251149 + size: 2837854 + timestamp: 1733808787914 - kind: conda name: aws-sdk-cpp version: 1.11.458 - build: he4d6490_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-he4d6490_1.conda - sha256: 61abc03dfbe372b258b8b6790bf3ad3a3265e02ce24b6b22bfe8f2fcab94954a - md5: 2941213b750689ace0862a6d695bb740 + build: h571fd1c_3 + build_number: 3 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-h571fd1c_3.conda + sha256: c2f38374a6f4dd804f76c8a071bc7f7d37dfb43e194eb93a473ff789460c011b + md5: 374cf1add8af327b15b1b1e4873f4955 depends: - - __osx >=11.0 - - aws-c-common >=0.10.3,<0.10.4.0a0 + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.5,<0.10.6.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - aws-crt-cpp >=0.29.7,<0.29.8.0a0 - libcurl >=8.10.1,<9.0a0 - - libcxx >=18 + - libgcc >=13 + - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 2847256 - timestamp: 1733576733615 + size: 3062994 + timestamp: 1733808211748 - kind: conda name: azure-core-cpp version: 1.14.0 @@ -1871,18 +1874,19 @@ packages: - kind: conda name: backoff version: 2.2.1 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/backoff-2.2.1-pyhd8ed1ab_0.tar.bz2 - sha256: b1cf7df15741e5fbc57e22a3a89db427383335aaab22ddc1b30710deeb0130de - md5: 4600709bd85664d8606ae0c76642f8db + url: https://conda.anaconda.org/conda-forge/noarch/backoff-2.2.1-pyhd8ed1ab_1.conda + sha256: f334115c6b0c6c2cd0d28595365f205ec7eaa60bcc5ff91a75d7245f728be820 + md5: a38b801f2bcc12af80c2e02a9e4ce7d9 depends: - - python >=3.7 + - python >=3.9 license: MIT license_family: MIT - size: 17501 - timestamp: 1665004860081 + size: 18816 + timestamp: 1733771192649 - kind: conda name: brotli-python version: 1.1.0 @@ -2753,25 +2757,26 @@ packages: - kind: conda name: huggingface_hub version: 0.26.5 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.5-pyhd8ed1ab_0.conda - sha256: bdbf614d87155c7f9b8fe9c3d039528298119832e9f52959b15c522a9841eef7 - md5: 37236111cd92068e5af2f98cbb476642 + url: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.5-pyhd8ed1ab_1.conda + sha256: 0c75532d914a04c73222be298ed2c6868739dd475b1b1a9137c52abe79873952 + md5: 73937038e21117fe401f8ea64fbaeacc depends: - filelock - fsspec >=2023.5.0 - packaging >=20.9 - - python >=3.8 + - python >=3.9 - pyyaml >=5.1 - requests - tqdm >=4.42.1 - typing-extensions >=3.7.4.3 - typing_extensions >=3.7.4.3 license: Apache-2.0 - size: 274900 - timestamp: 1733637007500 + size: 275466 + timestamp: 1733852454004 - kind: conda name: hyperframe version: 6.0.1 @@ -3173,14 +3178,13 @@ packages: - kind: conda name: libarrow version: 18.1.0 - build: h3b07799_4_cpu - build_number: 4 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-h3b07799_4_cpu.conda - sha256: 8837dc6e60522eef63554654c45d18143006324c43391c6e8dc5d2b20997466d - md5: 27675c7172667268440306533e4928de + build: h1b535d6_6_cpu + build_number: 6 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-h1b535d6_6_cpu.conda + sha256: 087b579aebf351ca41c54214121d86a15a41c92051cbd432d6f3a3f58a8c31b0 + md5: 4c0ad68efba1113ac5833975c67b565d depends: - - __glibc >=2.17,<3.0.a0 - aws-crt-cpp >=0.29.7,<0.29.8.0a0 - aws-sdk-cpp >=1.11.458,<1.11.459.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 @@ -3195,36 +3199,35 @@ packages: - libbrotlidec >=1.1.0,<1.2.0a0 - libbrotlienc >=1.1.0,<1.2.0a0 - libgcc >=13 - - libgoogle-cloud >=2.31.0,<2.32.0a0 - - libgoogle-cloud-storage >=2.31.0,<2.32.0a0 + - libgoogle-cloud >=2.32.0,<2.33.0a0 + - libgoogle-cloud-storage >=2.32.0,<2.33.0a0 - libre2-11 >=2024.7.2 - libstdcxx >=13 - libutf8proc >=2.9.0,<2.10.0a0 - libzlib >=1.3.1,<2.0a0 - - lz4-c >=1.9.3,<1.10.0a0 + - lz4-c >=1.10.0,<1.11.0a0 - orc >=2.0.3,<2.0.4.0a0 - re2 - snappy >=1.2.1,<1.3.0a0 - zstd >=1.5.6,<1.6.0a0 constrains: - parquet-cpp <0.0a0 - - apache-arrow-proc =*=cpu - arrow-cpp <0.0a0 + - apache-arrow-proc =*=cpu license: Apache-2.0 - license_family: APACHE - size: 8793521 - timestamp: 1733607374384 + size: 8040629 + timestamp: 1733810319239 - kind: conda name: libarrow version: 18.1.0 - build: h86d57b8_4_cpu - build_number: 4 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-h86d57b8_4_cpu.conda - sha256: fe6b5eb4d6e71418343b62a0d322ede7be69999b28d9e492164c12e613cf3fa0 - md5: 23431b3fdbb32858d1533da5bc8fcc86 + build: h44a453e_6_cpu + build_number: 6 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-h44a453e_6_cpu.conda + sha256: abf17e99b03356a9d6248e965826c1352ff01b00d3a62cc51393bb0744d72803 + md5: 2cf6d608d6e66506f69797d5c6944c35 depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 - aws-crt-cpp >=0.29.7,<0.29.8.0a0 - aws-sdk-cpp >=1.11.458,<1.11.459.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 @@ -3232,40 +3235,42 @@ packages: - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 - bzip2 >=1.0.8,<2.0a0 + - gflags >=2.2.2,<2.3.0a0 - glog >=0.7.1,<0.8.0a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - libbrotlidec >=1.1.0,<1.2.0a0 - libbrotlienc >=1.1.0,<1.2.0a0 - - libcxx >=18 - - libgoogle-cloud >=2.31.0,<2.32.0a0 - - libgoogle-cloud-storage >=2.31.0,<2.32.0a0 + - libgcc >=13 + - libgoogle-cloud >=2.32.0,<2.33.0a0 + - libgoogle-cloud-storage >=2.32.0,<2.33.0a0 - libre2-11 >=2024.7.2 + - libstdcxx >=13 - libutf8proc >=2.9.0,<2.10.0a0 - libzlib >=1.3.1,<2.0a0 - - lz4-c >=1.9.3,<1.10.0a0 + - lz4-c >=1.10.0,<1.11.0a0 - orc >=2.0.3,<2.0.4.0a0 - re2 - snappy >=1.2.1,<1.3.0a0 - zstd >=1.5.6,<1.6.0a0 constrains: - parquet-cpp <0.0a0 - - apache-arrow-proc =*=cpu - arrow-cpp <0.0a0 + - apache-arrow-proc =*=cpu license: Apache-2.0 - license_family: APACHE - size: 5482797 - timestamp: 1733605365656 + size: 8786061 + timestamp: 1733810643966 - kind: conda name: libarrow version: 18.1.0 - build: ha2aff55_4_cpu - build_number: 4 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-ha2aff55_4_cpu.conda - sha256: 795950b73029fd4d3b7fee3427c39c7357287fd94244dd5a125ac0931d31aaa3 - md5: c4d60278cb00053df1a4f0600fd2ac2a + build: h4a2f8bd_6_cpu + build_number: 6 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-h4a2f8bd_6_cpu.conda + sha256: 9ed3ea1bc15005c0df187268ef91407afaa908cf82f36f5acbbf50ac24d7f806 + md5: 835cdd84195b84dc34d128bd5d3580b9 depends: + - __osx >=11.0 - aws-crt-cpp >=0.29.7,<0.29.8.0a0 - aws-sdk-cpp >=1.11.458,<1.11.459.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 @@ -3273,209 +3278,197 @@ packages: - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 - bzip2 >=1.0.8,<2.0a0 - - gflags >=2.2.2,<2.3.0a0 - glog >=0.7.1,<0.8.0a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - libbrotlidec >=1.1.0,<1.2.0a0 - libbrotlienc >=1.1.0,<1.2.0a0 - - libgcc >=13 - - libgoogle-cloud >=2.31.0,<2.32.0a0 - - libgoogle-cloud-storage >=2.31.0,<2.32.0a0 + - libcxx >=18 + - libgoogle-cloud >=2.32.0,<2.33.0a0 + - libgoogle-cloud-storage >=2.32.0,<2.33.0a0 - libre2-11 >=2024.7.2 - - libstdcxx >=13 - libutf8proc >=2.9.0,<2.10.0a0 - libzlib >=1.3.1,<2.0a0 - - lz4-c >=1.9.3,<1.10.0a0 + - lz4-c >=1.10.0,<1.11.0a0 - orc >=2.0.3,<2.0.4.0a0 - re2 - snappy >=1.2.1,<1.3.0a0 - zstd >=1.5.6,<1.6.0a0 constrains: - - parquet-cpp <0.0a0 - apache-arrow-proc =*=cpu - arrow-cpp <0.0a0 + - parquet-cpp <0.0a0 license: Apache-2.0 - license_family: APACHE - size: 8035987 - timestamp: 1733607600970 -- kind: conda - name: libarrow-acero - version: 18.1.0 - build: h1dc2043_4_cpu - build_number: 4 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-h1dc2043_4_cpu.conda - sha256: fe8cb6feeed0858cb8e7cc8889ae20165527934778adb8f7b1f2f5d1f7ade16d - md5: e4ed6162593fbb01f4d742db4215f70c - depends: - - __osx >=11.0 - - libarrow 18.1.0 h86d57b8_4_cpu - - libcxx >=18 - license: Apache-2.0 - license_family: APACHE - size: 483574 - timestamp: 1733605591770 + size: 5494797 + timestamp: 1733808145854 - kind: conda name: libarrow-acero version: 18.1.0 - build: h512cd83_4_cpu - build_number: 4 + build: h3b568fd_6_cpu + build_number: 6 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h512cd83_4_cpu.conda - sha256: 9e88f04409da9ca2fedc5f7bf0987ff28e96d08742e59672f744ec4624a4c991 - md5: d532c42abe13841806d97f4d9cd6dcf5 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h3b568fd_6_cpu.conda + sha256: fdb70e2499e59b730084ecd53008b361a6f6090b5fb49624feda06b7e84c7b8c + md5: c50907eefe2ae22d826e7cb2e4d712f5 depends: - - libarrow 18.1.0 ha2aff55_4_cpu + - libarrow 18.1.0 h1b535d6_6_cpu - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 - license_family: APACHE - size: 578174 - timestamp: 1733607685962 + size: 578091 + timestamp: 1733810378092 - kind: conda name: libarrow-acero version: 18.1.0 - build: h8bbc2ab_4_cpu - build_number: 4 + build: hcb10f89_6_cpu + build_number: 6 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-h8bbc2ab_4_cpu.conda - sha256: b3b4ddb2718c96c93d9b50dbf8f66265af9198b55852b4d3424c13a79ec3f84d - md5: 82bcbfe424868ce66b5ab986999f534d + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-hcb10f89_6_cpu.conda + sha256: a32fa1d71415afc02b5cf3cd4c0a6ec0af9e749308829cc65ff79689222ce479 + md5: 143f9288b64759a6427563f058c62f2b depends: - __glibc >=2.17,<3.0.a0 - - libarrow 18.1.0 h3b07799_4_cpu + - libarrow 18.1.0 h44a453e_6_cpu - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 - license_family: APACHE - size: 610772 - timestamp: 1733607505368 + size: 611745 + timestamp: 1733810698469 - kind: conda - name: libarrow-dataset + name: libarrow-acero version: 18.1.0 - build: h1dc2043_4_cpu - build_number: 4 + build: hf07054f_6_cpu + build_number: 6 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-h1dc2043_4_cpu.conda - sha256: 862fb21b871666495b4bb5e63f5fcb66b93c08893e92412b01e2717e081836eb - md5: bb940b4c583e4c8e5a9f193fabdb5840 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-hf07054f_6_cpu.conda + sha256: e1cae46409927470439ef9ae93ed09b3493d0579501ca9ebfa79ded212ee98d8 + md5: 97fc01254714e1572624baefdd7cc898 depends: - __osx >=11.0 - - libarrow 18.1.0 h86d57b8_4_cpu - - libarrow-acero 18.1.0 h1dc2043_4_cpu + - libarrow 18.1.0 h4a2f8bd_6_cpu - libcxx >=18 - - libparquet 18.1.0 hf4cc9e7_4_cpu license: Apache-2.0 - license_family: APACHE - size: 489457 - timestamp: 1733607417337 + size: 483713 + timestamp: 1733808246880 - kind: conda name: libarrow-dataset version: 18.1.0 - build: h512cd83_4_cpu - build_number: 4 + build: h3b568fd_6_cpu + build_number: 6 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h512cd83_4_cpu.conda - sha256: 4a9ffedc5570ce57a6864e46dcf36ec108557791b50fd43e82eb739f3717ff2f - md5: 1a6c409f45857d30f581a1a53abb2298 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h3b568fd_6_cpu.conda + sha256: 2a08f5a1017ff660c37ae0c24343a119cb2511c6edd69e23d0a5090a0967ea35 + md5: bb1548ad011c4f9107fcc4cc548473bf depends: - - libarrow 18.1.0 ha2aff55_4_cpu - - libarrow-acero 18.1.0 h512cd83_4_cpu + - libarrow 18.1.0 h1b535d6_6_cpu + - libarrow-acero 18.1.0 h3b568fd_6_cpu - libgcc >=13 - - libparquet 18.1.0 h34a048e_4_cpu + - libparquet 18.1.0 hfc78867_6_cpu - libstdcxx >=13 license: Apache-2.0 - license_family: APACHE - size: 561495 - timestamp: 1733607973097 + size: 559673 + timestamp: 1733810461646 - kind: conda name: libarrow-dataset version: 18.1.0 - build: h8bbc2ab_4_cpu - build_number: 4 + build: hcb10f89_6_cpu + build_number: 6 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-h8bbc2ab_4_cpu.conda - sha256: 9c898ab7377953b8c7218347fdb63376d4f977cabfb8fa6bd1b421a75b8cb335 - md5: fa31464c75b20c2f3ac8fc758e034887 + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-hcb10f89_6_cpu.conda + sha256: 74eeb178070002842d3ed721769399320e3a68a0843319eaf899a092a31def26 + md5: 20ca46a6bc714a6ab189d5b3f46e66d8 depends: - __glibc >=2.17,<3.0.a0 - - libarrow 18.1.0 h3b07799_4_cpu - - libarrow-acero 18.1.0 h8bbc2ab_4_cpu + - libarrow 18.1.0 h44a453e_6_cpu + - libarrow-acero 18.1.0 hcb10f89_6_cpu - libgcc >=13 - - libparquet 18.1.0 hf4f6db6_4_cpu + - libparquet 18.1.0 h081d1f1_6_cpu - libstdcxx >=13 license: Apache-2.0 - license_family: APACHE - size: 585517 - timestamp: 1733607943984 + size: 586627 + timestamp: 1733810842604 +- kind: conda + name: libarrow-dataset + version: 18.1.0 + build: hf07054f_6_cpu + build_number: 6 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-hf07054f_6_cpu.conda + sha256: 6eba942ce926419f74e6e0a7c3994a7d78ab6be47115e6bb70e02136554736be + md5: 0774276be6659aaa0007f1b0f6ee19b0 + depends: + - __osx >=11.0 + - libarrow 18.1.0 h4a2f8bd_6_cpu + - libarrow-acero 18.1.0 hf07054f_6_cpu + - libcxx >=18 + - libparquet 18.1.0 h636d7b7_6_cpu + license: Apache-2.0 + size: 489948 + timestamp: 1733809328231 - kind: conda name: libarrow-substrait version: 18.1.0 - build: h3644d33_4_cpu - build_number: 4 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h3644d33_4_cpu.conda - sha256: ac053b3efd1a2701e6f34195d90a0da21dca22d70916ae6b10a019c2be6cd44c - md5: ce3062cd5caa0bdafa7976535862e648 + build: h3ee7192_6_cpu + build_number: 6 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-h3ee7192_6_cpu.conda + sha256: bda6728db019dd0c409b1996ad9ef6ab0bcee3a94dc66a8045e8c1049c566055 + md5: aa313b3168caf98d00b3753f5ba27650 depends: + - __glibc >=2.17,<3.0.a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.1.0 ha2aff55_4_cpu - - libarrow-acero 18.1.0 h512cd83_4_cpu - - libarrow-dataset 18.1.0 h512cd83_4_cpu + - libarrow 18.1.0 h44a453e_6_cpu + - libarrow-acero 18.1.0 hcb10f89_6_cpu + - libarrow-dataset 18.1.0 hcb10f89_6_cpu - libgcc >=13 - libprotobuf >=5.28.2,<5.28.3.0a0 - libstdcxx >=13 license: Apache-2.0 - license_family: APACHE - size: 513745 - timestamp: 1733608111290 + size: 519989 + timestamp: 1733810903274 - kind: conda name: libarrow-substrait version: 18.1.0 - build: had74209_4_cpu - build_number: 4 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-had74209_4_cpu.conda - sha256: 29e44d6070d64cd4b357e02afeae233d2e90d917a008a2724c9cd463015f0319 - md5: bf261e5fa25ce4acc11a80bdc73b88b2 + build: h3ffb4b1_6_cpu + build_number: 6 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h3ffb4b1_6_cpu.conda + sha256: 9f78c55c5d7122e588a6f226cbf7e909c479d66ed18edc633d68324323d386b9 + md5: 5db2e6832397b8ca70a6f7b00e0c3629 depends: - - __glibc >=2.17,<3.0.a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.1.0 h3b07799_4_cpu - - libarrow-acero 18.1.0 h8bbc2ab_4_cpu - - libarrow-dataset 18.1.0 h8bbc2ab_4_cpu + - libarrow 18.1.0 h1b535d6_6_cpu + - libarrow-acero 18.1.0 h3b568fd_6_cpu + - libarrow-dataset 18.1.0 h3b568fd_6_cpu - libgcc >=13 - libprotobuf >=5.28.2,<5.28.3.0a0 - libstdcxx >=13 license: Apache-2.0 - license_family: APACHE - size: 519919 - timestamp: 1733608152065 + size: 515928 + timestamp: 1733810503359 - kind: conda name: libarrow-substrait version: 18.1.0 - build: hf3d3107_4_cpu - build_number: 4 + build: h86344ea_6_cpu + build_number: 6 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-hf3d3107_4_cpu.conda - sha256: 9d9ebd042b9e8561b64f057d2adb24d331a772ccf1af3ed2d8b5b1566729f236 - md5: c093b05dc6d1b6057342d3dd6f3bd0d8 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-h86344ea_6_cpu.conda + sha256: bafd9ca59ebb5ad34b77aff316ef7b59c5fb1eb8a7b6a15de8dcbdf3ce37556d + md5: c1c162f5bf569cff8bed6def705a899f depends: - __osx >=11.0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.1.0 h86d57b8_4_cpu - - libarrow-acero 18.1.0 h1dc2043_4_cpu - - libarrow-dataset 18.1.0 h1dc2043_4_cpu + - libarrow 18.1.0 h4a2f8bd_6_cpu + - libarrow-acero 18.1.0 hf07054f_6_cpu + - libarrow-dataset 18.1.0 hf07054f_6_cpu - libcxx >=18 - libprotobuf >=5.28.2,<5.28.3.0a0 license: Apache-2.0 - license_family: APACHE - size: 451982 - timestamp: 1733607898511 + size: 451623 + timestamp: 1733809487176 - kind: conda name: libblas version: 3.9.0 @@ -4328,12 +4321,12 @@ packages: timestamp: 1729089357313 - kind: conda name: libgoogle-cloud - version: 2.31.0 + version: 2.32.0 build: h3888205_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-2.31.0-h3888205_0.conda - sha256: 603b0bd55980f5bf97911b327c9e469cf953c482f112b561dc9c1c7608bbdc29 - md5: 5b3d9a0327c4f7c569162f10acaf6bb4 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-2.32.0-h3888205_0.conda + sha256: 36af2844ce8fafd477214d51117746144461132f76759a7d29963b4583b577be + md5: a40b948bf4eabcc1ce708c40ffd7c06d depends: - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 @@ -4342,21 +4335,21 @@ packages: - libgrpc >=1.67.1,<1.68.0a0 - libprotobuf >=5.28.2,<5.28.3.0a0 - libstdcxx >=13 - - openssl >=3.3.2,<4.0a0 + - openssl >=3.4.0,<4.0a0 constrains: - - libgoogle-cloud 2.31.0 *_0 + - libgoogle-cloud 2.32.0 *_0 license: Apache-2.0 license_family: Apache - size: 1246720 - timestamp: 1731122940037 + size: 1248560 + timestamp: 1733512309504 - kind: conda name: libgoogle-cloud - version: 2.31.0 + version: 2.32.0 build: h804f50b_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.31.0-h804f50b_0.conda - sha256: b2de99c83516236ff591d30436779f8345bcc11bb0ec76a7ca3a38a3b23b6423 - md5: 35ab838423b60f233391eb86d324a830 + url: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.32.0-h804f50b_0.conda + sha256: 126856add750013390dff664a3c3cd0f6f0cbbc683b0025a7ce9d1618968bc70 + md5: 3d96df4d6b1c88455e05b94ce8a14a53 depends: - __glibc >=2.17,<3.0.a0 - libabseil * cxx17* @@ -4366,21 +4359,21 @@ packages: - libgrpc >=1.67.1,<1.68.0a0 - libprotobuf >=5.28.2,<5.28.3.0a0 - libstdcxx >=13 - - openssl >=3.3.2,<4.0a0 + - openssl >=3.4.0,<4.0a0 constrains: - - libgoogle-cloud 2.31.0 *_0 + - libgoogle-cloud 2.32.0 *_0 license: Apache-2.0 license_family: Apache - size: 1248705 - timestamp: 1731122589027 + size: 1249557 + timestamp: 1733512191906 - kind: conda name: libgoogle-cloud - version: 2.31.0 + version: 2.32.0 build: h8d8be31_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-2.31.0-h8d8be31_0.conda - sha256: 184d650d55453a40935c128ea309088ae52e15a68cd87ab17ae7c77704251168 - md5: a338736f1514e6f999db8726fe0965b1 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-2.32.0-h8d8be31_0.conda + sha256: 722e49dbdc4486105d9f5b79a7ba4f9064602fe20c4015e97684c898ab8d3386 + md5: d7ab9e0eb7d55eac4943913073de61d7 depends: - __osx >=11.0 - libabseil * cxx17* @@ -4389,77 +4382,77 @@ packages: - libcxx >=18 - libgrpc >=1.67.1,<1.68.0a0 - libprotobuf >=5.28.2,<5.28.3.0a0 - - openssl >=3.3.2,<4.0a0 + - openssl >=3.4.0,<4.0a0 constrains: - - libgoogle-cloud 2.31.0 *_0 + - libgoogle-cloud 2.32.0 *_0 license: Apache-2.0 license_family: Apache - size: 873497 - timestamp: 1731121684939 + size: 876210 + timestamp: 1733512539476 - kind: conda name: libgoogle-cloud-storage - version: 2.31.0 + version: 2.32.0 build: h0121fbd_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.31.0-h0121fbd_0.conda - sha256: 3c38b0a80441f82323dc5a72b96c0dd7476bd5184fbfcdf825a8e15249c849af - md5: 568d6a09a6ed76337a7b97c84ae7c0f8 + url: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.32.0-h0121fbd_0.conda + sha256: d1b53d17df38b52a4bc6d1fe6af0e611d6480ce10b0af570c84bd38c8aa83b91 + md5: 877a5ec0431a5af83bf0cd0522bfe661 depends: - __glibc >=2.17,<3.0.a0 - libabseil - libcrc32c >=1.1.2,<1.2.0a0 - libcurl - libgcc >=13 - - libgoogle-cloud 2.31.0 h804f50b_0 + - libgoogle-cloud 2.32.0 h804f50b_0 - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - openssl license: Apache-2.0 license_family: Apache - size: 782150 - timestamp: 1731122728715 + size: 782108 + timestamp: 1733512329104 - kind: conda name: libgoogle-cloud-storage - version: 2.31.0 + version: 2.32.0 build: h7081f7f_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-storage-2.31.0-h7081f7f_0.conda - sha256: 01f5156584b816d34270a60a61f6b6561f2a01cb3b4eeb455a4e1808d763d486 - md5: 548fd1d31741ee6b13df4124db4a9f5f + url: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-storage-2.32.0-h7081f7f_0.conda + sha256: 609df2cf376ba66460f40143f835fc567cae4458df80705587cd2efd59c09bf1 + md5: 28f5ab5cf95170dfacd05d2bb301e573 depends: - __osx >=11.0 - libabseil - libcrc32c >=1.1.2,<1.2.0a0 - libcurl - libcxx >=18 - - libgoogle-cloud 2.31.0 h8d8be31_0 + - libgoogle-cloud 2.32.0 h8d8be31_0 - libzlib >=1.3.1,<2.0a0 - openssl license: Apache-2.0 license_family: Apache - size: 526858 - timestamp: 1731122580689 + size: 526895 + timestamp: 1733513644846 - kind: conda name: libgoogle-cloud-storage - version: 2.31.0 + version: 2.32.0 build: hb9b2b65_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-storage-2.31.0-hb9b2b65_0.conda - sha256: 1df4b7b59224d865a574003df12ee36d4a9939e8e7911b4472348730b9c2a0e8 - md5: 53897114489b4df10e1680bf189aa306 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-storage-2.32.0-hb9b2b65_0.conda + sha256: e120e7b6c9c9d25baa8ae903106babdd3c969523ae25278a615ed9de4bd0fc35 + md5: 925ab0ca33baca4fcfee585cecb94169 depends: - libabseil - libcrc32c >=1.1.2,<1.2.0a0 - libcurl - libgcc >=13 - - libgoogle-cloud 2.31.0 h3888205_0 + - libgoogle-cloud 2.32.0 h3888205_0 - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - openssl license: Apache-2.0 license_family: Apache - size: 737686 - timestamp: 1731123086764 + size: 737964 + timestamp: 1733512457785 - kind: conda name: libgrpc version: 1.67.1 @@ -4873,61 +4866,58 @@ packages: - kind: conda name: libparquet version: 18.1.0 - build: h34a048e_4_cpu - build_number: 4 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-h34a048e_4_cpu.conda - sha256: 488d82356fc4e6dfd6c10a4100c36af17db1b7eb72cce0bd8973014220dc3066 - md5: 46db27c16b29f48a37a40e3b2c9dcfe3 + build: h081d1f1_6_cpu + build_number: 6 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-h081d1f1_6_cpu.conda + sha256: c691a59f1ebb6cedbf827f49f6cf414e08b0eec911f589133e6a8321e8ac701c + md5: 68788df49ce7480187eb6387f15b2b67 depends: - - libarrow 18.1.0 ha2aff55_4_cpu + - __glibc >=2.17,<3.0.a0 + - libarrow 18.1.0 h44a453e_6_cpu - libgcc >=13 - libstdcxx >=13 - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 - license_family: APACHE - size: 1117278 - timestamp: 1733607904359 + size: 1204535 + timestamp: 1733810811118 - kind: conda name: libparquet version: 18.1.0 - build: hf4cc9e7_4_cpu - build_number: 4 + build: h636d7b7_6_cpu + build_number: 6 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-hf4cc9e7_4_cpu.conda - sha256: ccadab6395090b3cbc54243fcf5c6e49eaee46aaaa4221ca8ca7803a34bdc25d - md5: b462d962b5254923c5f65ce1c68dfc17 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-h636d7b7_6_cpu.conda + sha256: 88c1e810bede65c54f1ebc51c14400f9e8cf0fc1f88a8c0a99210e2f5dfed582 + md5: 9b333c3a38e55f6c1b8733222e22f528 depends: - __osx >=11.0 - - libarrow 18.1.0 h86d57b8_4_cpu + - libarrow 18.1.0 h4a2f8bd_6_cpu - libcxx >=18 - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 - license_family: APACHE - size: 873584 - timestamp: 1733607239103 + size: 873134 + timestamp: 1733809271282 - kind: conda name: libparquet version: 18.1.0 - build: hf4f6db6_4_cpu - build_number: 4 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-hf4f6db6_4_cpu.conda - sha256: f957b6ea5c4023448891f63f7b184a663d85aa5b2717b0e0ebfbfcf97b542751 - md5: f18b10bf19bb384183f2aa546e9f6f0a + build: hfc78867_6_cpu + build_number: 6 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-hfc78867_6_cpu.conda + sha256: 38aab34c422519c530d0e9a3e0ffd1624db1c1e163983c46ae341e831b2eb6b5 + md5: 1ab6d4a9a982920b9dc5f2c700777b27 depends: - - __glibc >=2.17,<3.0.a0 - - libarrow 18.1.0 h3b07799_4_cpu + - libarrow 18.1.0 h1b535d6_6_cpu - libgcc >=13 - libstdcxx >=13 - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 - license_family: APACHE - size: 1204859 - timestamp: 1733607834047 + size: 1117592 + timestamp: 1733810440129 - kind: conda name: libpng version: 1.6.44 @@ -5771,48 +5761,53 @@ packages: timestamp: 1733376089600 - kind: conda name: lz4-c - version: 1.9.4 - build: hb7217d7_0 + version: 1.10.0 + build: h286801f_1 + build_number: 1 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.9.4-hb7217d7_0.conda - sha256: fc343b8c82efe40819b986e29ba748366514e5ab94a1e1138df195af5f45fa24 - md5: 45505bec548634f7d05e02fb25262cb9 + url: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.10.0-h286801f_1.conda + sha256: 94d3e2a485dab8bdfdd4837880bde3dd0d701e2b97d6134b8806b7c8e69c8652 + md5: 01511afc6cc1909c5303cf31be17b44f depends: - - libcxx >=14.0.6 + - __osx >=11.0 + - libcxx >=18 license: BSD-2-Clause license_family: BSD - size: 141188 - timestamp: 1674727268278 + size: 148824 + timestamp: 1733741047892 - kind: conda name: lz4-c - version: 1.9.4 - build: hcb278e6_0 + version: 1.10.0 + build: h5888daf_1 + build_number: 1 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.9.4-hcb278e6_0.conda - sha256: 1b4c105a887f9b2041219d57036f72c4739ab9e9fe5a1486f094e58c76b31f5f - md5: 318b08df404f9c9be5712aaa5a6f0bb0 + url: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.10.0-h5888daf_1.conda + sha256: 47326f811392a5fd3055f0f773036c392d26fdb32e4d8e7a8197eed951489346 + md5: 9de5350a85c4a20c685259b889aa6393 depends: - - libgcc-ng >=12 - - libstdcxx-ng >=12 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 license: BSD-2-Clause license_family: BSD - size: 143402 - timestamp: 1674727076728 + size: 167055 + timestamp: 1733741040117 - kind: conda name: lz4-c - version: 1.9.4 - build: hd600fc2_0 + version: 1.10.0 + build: h5ad3122_1 + build_number: 1 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.9.4-hd600fc2_0.conda - sha256: 076870eb72411f41c46598c7582a2f3f42ba94c526a2d60a0c8f70a0a7a64429 - md5: 500145a83ed07ce79c8cef24252f366b + url: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.10.0-h5ad3122_1.conda + sha256: 67e55058d275beea76c1882399640c37b5be8be4eb39354c94b610928e9a0573 + md5: 6654e411da94011e8fbe004eacb8fe11 depends: - - libgcc-ng >=12 - - libstdcxx-ng >=12 + - libgcc >=13 + - libstdcxx >=13 license: BSD-2-Clause license_family: BSD - size: 163770 - timestamp: 1674727020254 + size: 184953 + timestamp: 1733740984533 - kind: conda name: markdown-it-py version: 3.0.0 @@ -5891,174 +5886,177 @@ packages: timestamp: 1733219945697 - kind: conda name: max - version: 24.6.0.dev2024120905 + version: 24.6.0.dev2024121016 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120905-release.conda - sha256: 37a6103a6b2c7886ed5837d41a819f1a127eef7e810b2b5ecfb03f7caf263514 - md5: b13d61319f43570ce681408a1b27d9d5 - depends: - - max-core ==24.6.0.dev2024120905 release - - max-python >=24.6.0.dev2024120905,<25.0a0 - - mojo-jupyter ==24.6.0.dev2024120905 release - - mblack ==24.6.0.dev2024120905 release + 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 license: LicenseRef-Modular-Proprietary - size: 9911 - timestamp: 1733721408716 + size: 9917 + timestamp: 1733849930254 - kind: conda name: max-core - version: 24.6.0.dev2024120905 + version: 24.6.0.dev2024121016 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120905-release.conda - sha256: 0f94138601ceab2c8b277c7d175d762840072cfdfd0ead7264fbd1ff9f70442d - md5: 00617be1a2fef13b5630d9cbe92f9d3c + url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024121016-release.conda + sha256: 9b26505259984bb428ab3ee931ae54762c7dc8169343eff23a77ebfbd04a9044 + md5: fc4ae46f8723642288111dd01e901813 depends: - - mblack ==24.6.0.dev2024120905 release + - mblack ==24.6.0.dev2024121016 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 247639885 - timestamp: 1733721408714 + size: 247664506 + timestamp: 1733849767240 - kind: conda name: max-core - version: 24.6.0.dev2024120905 + version: 24.6.0.dev2024121016 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120905-release.conda - sha256: 1aaf2ffb09d6a2aa6b65d76c381476eb88947470580a0d56909bfd578d5eb385 - md5: c7ff53814f0c254c75dc7ab8f0c66b38 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024121016-release.conda + sha256: 779ef6524a738c5f9c140f845d0febf9dbe321f76331dbd434a4d549251db0c2 + md5: 86075990f86559126140561a14c8aafc depends: - - mblack ==24.6.0.dev2024120905 release + - mblack ==24.6.0.dev2024121016 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 251498878 - timestamp: 1733721396377 + size: 251595828 + timestamp: 1733849930252 - kind: conda name: max-core - version: 24.6.0.dev2024120905 + version: 24.6.0.dev2024121016 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120905-release.conda - sha256: 00cc8ce6adc131b858df51423201b8f028aa944ac09e56c563a1108c22eaccd2 - md5: 71554a4c0e81a1034908bc1cb716b30b + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024121016-release.conda + sha256: 3f2e56d822eca8789ee72e6d1eaa95fa2d633fa5a4991f73b5cbf64d62e2d73d + md5: 1928c2f7f79e2587edf7dd1be10bb2f7 depends: - - mblack ==24.6.0.dev2024120905 release + - mblack ==24.6.0.dev2024121016 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 212030191 - timestamp: 1733721567995 + size: 212115307 + timestamp: 1733850300421 - kind: conda name: max-python - version: 24.6.0.dev2024120905 + version: 24.6.0.dev2024121016 build: 3.12release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120905-3.12release.conda - sha256: 43245b47050208329e85a69f2af24d42c622e92e1542334a6106eaadb6cbf0ff - md5: 9a6037de6672120d1d6d53673b699d5b + url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024121016-3.12release.conda + sha256: 6ad60d7c6c2234f3f02bc36267bfb0744c40dfcb70834710c9d90776db2a516f + md5: 7fef71eb6ab9bde6a60494f367ed0223 depends: - - max-core ==24.6.0.dev2024120905 release + - max-core ==24.6.0.dev2024121016 release - python 3.12.* - - pillow - fastapi - httpx - - numpy >=1.18,<2.0 - huggingface_hub + - numpy >=1.18,<2.0 - opentelemetry-api - opentelemetry-exporter-otlp-proto-http >=1.27.0 - opentelemetry-exporter-prometheus >=0.48b0 - opentelemetry-sdk >=1.27.0 + - pillow - pydantic-settings >=2.4.0,<3 - pydantic >=2.4.0,<3 - pyinstrument - python-json-logger - sse-starlette >=2.1.3,<3 - transformers + - typing_extensions - uvicorn - python_abi 3.12.* *_cp312 arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 123751303 - timestamp: 1733721408724 + size: 123894250 + timestamp: 1733849767250 - kind: conda name: max-python - version: 24.6.0.dev2024120905 + version: 24.6.0.dev2024121016 build: 3.12release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120905-3.12release.conda - sha256: fdedbc8a2ca34d0593e8b2175ca07c07d6d0564f138f535ebff02975ef463f55 - md5: bc9f6ce493d2beb1089e1e409bb373ba + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024121016-3.12release.conda + sha256: 98f0fb331b1f3eb89e1f0a7340d8364a8d5f84fc91f25bdd076bae8225d24950 + md5: 23c72404d9e7f8bc76745502b2e53609 depends: - - max-core ==24.6.0.dev2024120905 release + - max-core ==24.6.0.dev2024121016 release - python 3.12.* - - pillow - fastapi - httpx - - numpy >=1.18,<2.0 - huggingface_hub + - numpy >=1.18,<2.0 - opentelemetry-api - opentelemetry-exporter-otlp-proto-http >=1.27.0 - opentelemetry-exporter-prometheus >=0.48b0 - opentelemetry-sdk >=1.27.0 + - pillow - pydantic-settings >=2.4.0,<3 - pydantic >=2.4.0,<3 - pyinstrument - python-json-logger - sse-starlette >=2.1.3,<3 - transformers + - typing_extensions - uvicorn - python_abi 3.12.* *_cp312 arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 127400047 - timestamp: 1733721396388 + size: 127528623 + timestamp: 1733849930263 - kind: conda name: max-python - version: 24.6.0.dev2024120905 + version: 24.6.0.dev2024121016 build: 3.12release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120905-3.12release.conda - sha256: 0cd6b2e3bdc78483665045e91b8db7a8a3d6c85fbf4b8a44d6eb742a46361af1 - md5: c1b7eb7d1a43e28224bf41220ece9b58 + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024121016-3.12release.conda + sha256: a12ef8ce21aee4490a7cf307a6072eaf84cd6df4d3e75dfbf61e438efffd5fd4 + md5: 6acba84a184a311186a957ba3e374a12 depends: - - max-core ==24.6.0.dev2024120905 release + - max-core ==24.6.0.dev2024121016 release - python 3.12.* - - pillow - fastapi - httpx - - numpy >=1.18,<2.0 - huggingface_hub + - numpy >=1.18,<2.0 - opentelemetry-api - opentelemetry-exporter-otlp-proto-http >=1.27.0 - opentelemetry-exporter-prometheus >=0.48b0 - opentelemetry-sdk >=1.27.0 + - pillow - pydantic-settings >=2.4.0,<3 - pydantic >=2.4.0,<3 - pyinstrument - python-json-logger - sse-starlette >=2.1.3,<3 - transformers + - typing_extensions - uvicorn - python_abi 3.12.* *_cp312 arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 112450493 - timestamp: 1733721567998 + size: 112564915 + timestamp: 1733850300425 - kind: conda name: mblack - version: 24.6.0.dev2024120905 + version: 24.6.0.dev2024121016 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120905-release.conda - sha256: e302e262a58592b5b8614829237760967d685cb20a44e54981916eb6c2b6b7a2 - md5: b34a59910660011ad1f42bfc1ae4ae54 + url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024121016-release.conda + sha256: f9acaa65326bbc7f7e3158b1e20b0cdc7ac7da0ca925278566da7f80731146b5 + md5: 6e4496ad926e9f2e8c187f3c1cdd6a0c depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -6068,8 +6066,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130740 - timestamp: 1733721408720 + size: 130747 + timestamp: 1733849930259 - kind: conda name: mdurl version: 0.1.2 @@ -6088,21 +6086,21 @@ packages: timestamp: 1733255681319 - kind: conda name: mojo-jupyter - version: 24.6.0.dev2024120905 + version: 24.6.0.dev2024121016 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120905-release.conda - sha256: bb71277508a55875b6011651bc825599e26a47145ab1e9c4e7c2abd853200a00 - md5: 4fc85c9cb1efe841b69d339d4da5b3a1 + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024121016-release.conda + sha256: e2a2514e4570f219e25f3f6f948d9035723b80df4fb9209598f34af17239a4f6 + md5: 0b20302cee375040ce15e8b795d7cda4 depends: - - max-core ==24.6.0.dev2024120905 release + - max-core ==24.6.0.dev2024121016 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 11366 - timestamp: 1733721408720 + size: 23064 + timestamp: 1733849930259 - kind: conda name: multidict version: 6.1.0 @@ -6340,57 +6338,56 @@ packages: timestamp: 1707225809722 - kind: conda name: openjpeg - version: 2.5.2 - build: h0d9d63b_0 + version: 2.5.3 + build: h3f56577_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/openjpeg-2.5.2-h0d9d63b_0.conda - sha256: d83375856601bc67c11295b537548a937a6896ede9d0a51d78bf5e921ab07c6f - md5: fd2898519e839d5ceb778343f39a3176 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/openjpeg-2.5.3-h3f56577_0.conda + sha256: 92d310033e20538e896f4e4b1ea4205eb6604eee7c5c651c4965a0d8d3ca0f1d + md5: 04231368e4af50d11184b50e14250993 depends: - - libgcc-ng >=12 - - libpng >=1.6.43,<1.7.0a0 - - libstdcxx-ng >=12 - - libtiff >=4.6.0,<4.8.0a0 - - libzlib >=1.2.13,<2.0.0a0 + - libgcc >=13 + - libpng >=1.6.44,<1.7.0a0 + - libstdcxx >=13 + - libtiff >=4.7.0,<4.8.0a0 + - libzlib >=1.3.1,<2.0a0 license: BSD-2-Clause - license_family: BSD - size: 374964 - timestamp: 1709159226478 + size: 377796 + timestamp: 1733816683252 - kind: conda name: openjpeg - version: 2.5.2 - build: h488ebb8_0 + version: 2.5.3 + build: h5fbd93e_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.2-h488ebb8_0.conda - sha256: 5600a0b82df042bd27d01e4e687187411561dfc11cc05143a08ce29b64bf2af2 - md5: 7f2e286780f072ed750df46dc2631138 + url: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.3-h5fbd93e_0.conda + sha256: 5bee706ea5ba453ed7fd9da7da8380dd88b865c8d30b5aaec14d2b6dd32dbc39 + md5: 9e5816bc95d285c115a3ebc2f8563564 depends: - - libgcc-ng >=12 - - libpng >=1.6.43,<1.7.0a0 - - libstdcxx-ng >=12 - - libtiff >=4.6.0,<4.8.0a0 - - libzlib >=1.2.13,<2.0.0a0 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libpng >=1.6.44,<1.7.0a0 + - libstdcxx >=13 + - libtiff >=4.7.0,<4.8.0a0 + - libzlib >=1.3.1,<2.0a0 license: BSD-2-Clause - license_family: BSD - size: 341592 - timestamp: 1709159244431 + size: 342988 + timestamp: 1733816638720 - kind: conda name: openjpeg - version: 2.5.2 - build: h9f1df11_0 + version: 2.5.3 + build: h8a3d83b_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/openjpeg-2.5.2-h9f1df11_0.conda - sha256: 472d6eaffc1996e6af35ec8e91c967f472a536a470079bfa56383cc0dbf4d463 - md5: 5029846003f0bc14414b9128a1f7c84b + url: https://conda.anaconda.org/conda-forge/osx-arm64/openjpeg-2.5.3-h8a3d83b_0.conda + sha256: 1d59bc72ca7faac06d349c1a280f5cfb8a57ee5896f1e24225a997189d7418c7 + md5: 4b71d78648dbcf68ce8bf22bb07ff838 depends: - - libcxx >=16 - - libpng >=1.6.43,<1.7.0a0 - - libtiff >=4.6.0,<4.8.0a0 - - libzlib >=1.2.13,<2.0.0a0 + - __osx >=11.0 + - libcxx >=18 + - libpng >=1.6.44,<1.7.0a0 + - libtiff >=4.7.0,<4.8.0a0 + - libzlib >=1.3.1,<2.0a0 license: BSD-2-Clause - license_family: BSD - size: 316603 - timestamp: 1709159627299 + size: 319362 + timestamp: 1733816781741 - kind: conda name: openssl version: 3.4.0 @@ -6453,6 +6450,7 @@ packages: - python >=3.9 - setuptools >=16.0 license: Apache-2.0 + license_family: APACHE size: 44242 timestamp: 1733734361129 - kind: conda @@ -6531,12 +6529,13 @@ packages: - kind: conda name: opentelemetry-sdk version: 1.28.2 - build: pyhff2d567_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.28.2-pyhff2d567_0.conda - sha256: 67c5be0f2b81b329d273f1f24f985a53e000b4b42b8338b56375d75aa8da5bb1 - md5: 742115714b2cbfa599e9f78495233d1a + url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.28.2-pyhd8ed1ab_1.conda + sha256: 9f48ec749f0738910fdd6750f9655f16949182b5379dd2c0771104d3e74bfd74 + md5: bfe29ef92f3a04ab8e59e4f97b28785c depends: - opentelemetry-api 1.28.2 - opentelemetry-semantic-conventions 0.49b2 @@ -6545,8 +6544,8 @@ packages: - typing_extensions >=3.7.4 license: Apache-2.0 license_family: APACHE - size: 78017 - timestamp: 1732070451972 + size: 78090 + timestamp: 1733768582451 - kind: conda name: opentelemetry-semantic-conventions version: 0.49b2 @@ -6562,72 +6561,76 @@ packages: - opentelemetry-api 1.28.2 - python >=3.9 license: Apache-2.0 + license_family: APACHE size: 81099 timestamp: 1733749104727 - kind: conda name: orc version: 2.0.3 - build: h121fd32_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/orc-2.0.3-h121fd32_0.conda - sha256: 4759fd0c3f06c035146100e22ee36a312c9a8226654bd2973e9ca9ac5de5cf1f - md5: 39995f7406b949c1bef74f0c7277afb3 + build: h3c55218_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/orc-2.0.3-h3c55218_1.conda + sha256: 154b26bc4d586de33765a155c9b79ebd7f5bb36c2bbf4b8854e1631bca8d21af + md5: 0a51a3cf028b845c46ec0d1ea2d18629 depends: - - __osx >=11.0 - - libcxx >=18 + - libgcc >=13 - libprotobuf >=5.28.2,<5.28.3.0a0 + - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - - lz4-c >=1.9.3,<1.10.0a0 + - lz4-c >=1.10.0,<1.11.0a0 - snappy >=1.2.1,<1.3.0a0 - tzdata - zstd >=1.5.6,<1.6.0a0 license: Apache-2.0 license_family: Apache - size: 438254 - timestamp: 1731665228473 + size: 1165179 + timestamp: 1733509923825 - kind: conda name: orc version: 2.0.3 - build: h90de224_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/orc-2.0.3-h90de224_0.conda - sha256: 7969db50268b65c2edb14be2e22bfff5656f36336eb5421d53030d29c037fec1 - md5: c07ba3025fe20ccbab9cd7c615953d6f + build: h97ab989_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/orc-2.0.3-h97ab989_1.conda + sha256: 9de7e2746fde57c9b7f08ee87142014f6bb9b2d3a506839ea3e98baa99711576 + md5: 2f46eae652623114e112df13fae311cf depends: + - __glibc >=2.17,<3.0.a0 - libgcc >=13 - libprotobuf >=5.28.2,<5.28.3.0a0 - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - - lz4-c >=1.9.3,<1.10.0a0 + - lz4-c >=1.10.0,<1.11.0a0 - snappy >=1.2.1,<1.3.0a0 - tzdata - zstd >=1.5.6,<1.6.0a0 license: Apache-2.0 license_family: Apache - size: 1170439 - timestamp: 1731665024334 + size: 1189462 + timestamp: 1733509801323 - kind: conda name: orc version: 2.0.3 - build: he039a57_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/orc-2.0.3-he039a57_0.conda - sha256: 9657ae19d6541fe67a61ef0c26ba1012ec508920b49afa897962c7d4b263ba35 - md5: 052499acd6d6b79952197a13b23e2600 + build: hbcee414_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/orc-2.0.3-hbcee414_1.conda + sha256: e5e72438a3cd967ebc774070e8c49500d2d6d4175f349400b327fee75d3bfc05 + md5: e808cf7819eaa1735c8790d7f9f482c7 depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 + - __osx >=11.0 + - libcxx >=18 - libprotobuf >=5.28.2,<5.28.3.0a0 - - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - - lz4-c >=1.9.3,<1.10.0a0 + - lz4-c >=1.10.0,<1.11.0a0 - snappy >=1.2.1,<1.3.0a0 - tzdata - zstd >=1.5.6,<1.6.0a0 license: Apache-2.0 license_family: Apache - size: 1187593 - timestamp: 1731664886527 + size: 437391 + timestamp: 1733510118673 - kind: conda name: packaging version: '24.2' @@ -7222,20 +7225,20 @@ packages: - kind: conda name: pydantic-settings version: 2.6.1 - build: pyh3cfb1c2_0 + build: pyh3cfb1c2_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.6.1-pyh3cfb1c2_0.conda - sha256: b3f331d69f7f3b3272e8e203211bfe39ba728a61fadc9b5c2f091b50084f0187 - md5: 412f950a65ceea20b06263f65d689f6b + url: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.6.1-pyh3cfb1c2_1.conda + sha256: 8cc37e827f0098d07743f57f968283cefce6c11562d9241aba990acc23aedb56 + md5: deabf8afc8d987f20174ef0d8d9b549e depends: - pydantic >=2.7.0 - - python >=3.8 + - python >=3.9 - python-dotenv >=0.21.0 license: MIT - license_family: MIT - size: 30618 - timestamp: 1730473755879 + size: 30832 + timestamp: 1733851937909 - kind: conda name: pygments version: 2.18.0 diff --git a/magic.lock b/magic.lock index 23716422b9..55952a5c89 100644 --- a/magic.lock +++ b/magic.lock @@ -9,30 +9,30 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.9-py312h178313f_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.10-py312h178313f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-ha4f867e_12.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.1-hecf86a2_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.10.3-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.3.0-hf42f96a_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.0-h873f81a_8.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.2-ha5a3ca8_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-ha35c7d9_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h56e9cca_9.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.5-h6ad95d4_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.1-hf42f96a_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-hf42f96a_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.7-h318f0b1_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-hac138a2_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-h8c8080f_14.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.1-h0f28dba_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.10.5-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.3.0-h9cc6398_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.0-hf811eff_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.2-hce7dc5d_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-hfd54f12_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-ha3c2ba9_11.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.5-h55e9418_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.1-h9cc6398_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-h9cc6398_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.7-hed26007_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-h571fd1c_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.10.0-h113e628_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.13.0-h3cf044e_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-common-cpp-12.8.0-h736e048_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-files-datalake-cpp-12.12.0-ha633028_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/backoff-2.2.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/backoff-2.2.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py312h2ec8cdc_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.3-hb9d3cd8_1.conda @@ -64,7 +64,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/httptools-0.6.4-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-7.0.2-pyha770c72_0.conda @@ -77,10 +77,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_h5888daf_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-h3b07799_4_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-h8bbc2ab_4_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-h8bbc2ab_4_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-had74209_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-h44a453e_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-hcb10f89_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-hcb10f89_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-h3ee7192_6_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-25_linux64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hb9d3cd8_2.conda @@ -99,8 +99,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hd5240d6_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h77fa898_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.31.0-h804f50b_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.31.0-h0121fbd_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.32.0-h804f50b_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.32.0-h0121fbd_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.67.1-hc2c308b_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-hd590300_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda @@ -109,7 +109,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.28-pthreads_h94d23a6_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-hf4f6db6_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-h081d1f1_6_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.44-hadc24fc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.2-h5b01275_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_1.conda @@ -129,30 +129,30 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.5-h0d44e9d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/lit-19.1.5-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.9.4-hcb278e6_0.conda + - 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.dev2024120905-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120905-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120905-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120905-release.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.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.dev2024120905-release.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.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 - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.2-h488ebb8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.3-h5fbd93e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.0-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.28.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.28.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-prometheus-1.12.0rc1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.28.2-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.28.2-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.28.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh3cfb1c2_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/orc-2.0.3-he039a57_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/orc-2.0.3-h97ab989_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.3-py312hf9745cd_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda @@ -167,7 +167,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.3-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.27.1-py312h12e396e_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.6.1-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.6.1-pyh3cfb1c2_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyinstrument-5.0.0-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda @@ -227,30 +227,30 @@ environments: linux-aarch64: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.9-py312hcc812fe_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.10-py312hcc812fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-h89ba3c0_12.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.1-h35473ba_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-common-0.10.3-h86ecc28_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-compression-0.3.0-h4c7db1d_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-event-stream-0.5.0-hba6c15e_8.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.2-h697be72_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-h0155602_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h2cca791_9.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.5-h3c51cf6_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.1-h4c7db1d_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h4c7db1d_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.7-hacb6b83_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h5e41cbe_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-hb4dd4bb_14.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.1-h1aca5b9_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-common-0.10.5-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-compression-0.3.0-h10558d5_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-event-stream-0.5.0-ha9733bd_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.2-h53134c8_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-h8aa8d47_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h2f8d747_11.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.5-h757e810_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.1-h10558d5_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h10558d5_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.7-hc8d91e0_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h2d3f608_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-core-cpp-1.14.0-h1887c18_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-identity-cpp-1.10.0-h47b0b28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-blobs-cpp-12.13.0-h185ecfd_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-common-cpp-12.8.0-h1b94036_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-files-datalake-cpp-12.12.0-h37d6d07_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/backoff-2.2.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/backoff-2.2.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/brotli-python-1.1.0-py312h6f74592_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h68df207_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/c-ares-1.34.3-h86ecc28_1.conda @@ -282,7 +282,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/httptools-0.6.4-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda @@ -296,10 +296,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.0.0-h4de3ea5_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h5ad3122_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-ha2aff55_4_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h512cd83_4_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h512cd83_4_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h3644d33_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-h1b535d6_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h3b568fd_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h3b568fd_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h3ffb4b1_6_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-25_linuxaarch64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlicommon-1.1.0-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlidec-1.1.0-h86ecc28_2.conda @@ -318,8 +318,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-2.31.0-h3888205_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-storage-2.31.0-hb9b2b65_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-2.32.0-h3888205_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-storage-2.32.0-hb9b2b65_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgrpc-1.67.1-h36c5df4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libiconv-1.17-h31becfc_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libjpeg-turbo-3.0.0-h31becfc_1.conda @@ -328,7 +328,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnghttp2-1.64.0-hc8609a4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.28-pthreads_h9d3fd7e_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-h34a048e_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-hfc78867_6_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.44-hc4a20ef_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.2-h029595c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_1.conda @@ -348,30 +348,30 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.5-h2e0c361_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/lit-19.1.5-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.9.4-hd600fc2_0.conda + - 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.dev2024120905-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120905-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120905-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120905-release.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.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.dev2024120905-release.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.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 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openjpeg-2.5.2-h0d9d63b_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openjpeg-2.5.3-h3f56577_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.0-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.28.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.28.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-prometheus-1.12.0rc1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.28.2-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.28.2-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.28.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh3cfb1c2_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/orc-2.0.3-h90de224_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/orc-2.0.3-h3c55218_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pandas-2.2.3-py312ha2895bd_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda @@ -386,7 +386,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.3-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pydantic-core-2.27.1-py312h8cbf658_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.6.1-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.6.1-pyh3cfb1c2_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyinstrument-5.0.0-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda @@ -445,30 +445,30 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.6-h02f22dd_0.conda osx-arm64: - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.9-py312h998013c_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.10-py312h998013c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-h35eccd0_12.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.1-h5d7ee29_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.10.3-h5505292_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-compression-0.3.0-h5d7ee29_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.0-h8ec3972_8.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.2-h48c6dea_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-h30cefa2_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h3aaadf4_9.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.5-hca3a6f1_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.1-h5d7ee29_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-h5d7ee29_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.7-hc2c2bbc_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-he4d6490_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-h93897a1_14.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.1-h4d88cd7_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.10.5-h5505292_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-compression-0.3.0-h4d88cd7_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.0-h9fa824c_10.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.2-hc68443d_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-h66499f2_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-hd073cef_11.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.5-hb201fd0_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.1-h4d88cd7_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-h4d88cd7_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.7-hb9a023b_5.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-h39838b8_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.14.0-hd50102c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.10.0-hc602bab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-blobs-cpp-12.13.0-h7585a09_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-common-cpp-12.8.0-h9ca1f76_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-files-datalake-cpp-12.12.0-hcdd55da_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/backoff-2.2.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/backoff-2.2.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py312hde4cb15_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.3-h5505292_1.conda @@ -500,7 +500,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/httptools-0.6.4-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda @@ -512,10 +512,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.16-ha0e7c42_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_hf9b8971_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-h86d57b8_4_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-h1dc2043_4_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-h1dc2043_4_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-hf3d3107_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-h4a2f8bd_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-hf07054f_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-hf07054f_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-h86344ea_6_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-25_osxarm64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.1.0-hd74edd7_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.1.0-hd74edd7_2.conda @@ -532,8 +532,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-2.31.0-h8d8be31_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-storage-2.31.0-h7081f7f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-2.32.0-h8d8be31_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-storage-2.32.0-h7081f7f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgrpc-1.67.1-hc70892a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.17-h0d3ecfb_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.0.0-hb547adb_1.conda @@ -541,7 +541,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.3-h39f12f2_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.64.0-h6d7220d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.28-openmp_hf332438_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-hf4cc9e7_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-h636d7b7_6_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.44-hc14010f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.2-h8f0b736_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h2348fd5_1.conda @@ -558,30 +558,30 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/lit-19.1.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.5-hdb05f8b_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.9.4-hb7217d7_0.conda + - 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.dev2024120905-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120905-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120905-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120905-release.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.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.dev2024120905-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024121016-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 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h7bae524_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openjpeg-2.5.2-h9f1df11_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openjpeg-2.5.3-h8a3d83b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.0-h39f12f2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.28.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.28.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-prometheus-1.12.0rc1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.28.2-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.28.2-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.28.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh3cfb1c2_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/orc-2.0.3-h121fd32_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/orc-2.0.3-hbcee414_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.3-py312hcd31e36_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda @@ -596,7 +596,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.3-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.27.1-py312hcd83bfe_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.6.1-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.6.1-pyh3cfb1c2_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyinstrument-5.0.0-py312h0bf5046_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda @@ -717,12 +717,12 @@ packages: timestamp: 1733332029649 - kind: conda name: aiohttp - version: 3.11.9 + version: 3.11.10 build: py312h178313f_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.9-py312h178313f_0.conda - sha256: 875a8ad0da035b33ba8037c40a2ffc0412b9545bc3d15455a8a75db22a3ee471 - md5: eeaf9831f262132fb12ce3921de09651 + url: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.10-py312h178313f_0.conda + sha256: dc8ebdd99e9d7a07454a7063a295cdc7a86264648647fec10b2ceae97478e200 + md5: 3e92784b8e32ab7d0b95ee296ba79a99 depends: - __glibc >=2.17,<3.0.a0 - aiohappyeyeballs >=2.3.0 @@ -737,16 +737,16 @@ packages: - yarl >=1.17.0,<2.0 license: MIT AND Apache-2.0 license_family: Apache - size: 912186 - timestamp: 1733125914520 + size: 914378 + timestamp: 1733839626367 - kind: conda name: aiohttp - version: 3.11.9 + version: 3.11.10 build: py312h998013c_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.9-py312h998013c_0.conda - sha256: 521b7c97a1122c0a6740a3200163e29bc8aa1d7efa273deb6e4c58a47779114b - md5: 0bb2657d1215a89fb586d387ce9c4daa + url: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.10-py312h998013c_0.conda + sha256: 69eb9c89dce6a7ae960099172daffba9f77fef39344f37e581685a8e3c5debe6 + md5: 642356223364539ba7ba36556fcf49ee depends: - __osx >=11.0 - aiohappyeyeballs >=2.3.0 @@ -761,16 +761,16 @@ packages: - yarl >=1.17.0,<2.0 license: MIT AND Apache-2.0 license_family: Apache - size: 873089 - timestamp: 1733125044394 + size: 874135 + timestamp: 1733839113411 - kind: conda name: aiohttp - version: 3.11.9 + version: 3.11.10 build: py312hcc812fe_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.9-py312hcc812fe_0.conda - sha256: e358d2c03b4eceb7ad3d8636705e60aa15bdec81305d9f9e1624fb5a03901147 - md5: 06400e4f6428e6c2ea2b59df702b5b39 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.10-py312hcc812fe_0.conda + sha256: df694a9fec546e575a4ea7e1c3ac476c0bda53c0fad44c046ad3ebdd5b75a0a8 + md5: a8c9ec59e6323b38418bbf04deaa0c02 depends: - aiohappyeyeballs >=2.3.0 - aiosignal >=1.1.2 @@ -785,8 +785,8 @@ packages: - yarl >=1.17.0,<2.0 license: MIT AND Apache-2.0 license_family: Apache - size: 900828 - timestamp: 1733124971238 + size: 900931 + timestamp: 1733839037447 - kind: conda name: aiosignal version: 1.3.1 @@ -862,443 +862,447 @@ packages: - kind: conda name: aws-c-auth version: 0.8.0 - build: h35eccd0_12 - build_number: 12 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-h35eccd0_12.conda - sha256: 40ca48aee5f3ff0d3ffd64625dacb019104a9a2ee24cd54052cde6fe4cbc8349 - md5: 1109d5293b724ca16b61452accfdb442 + build: h8c8080f_14 + build_number: 14 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-h8c8080f_14.conda + sha256: 7a9f7763e3a151ae1008ead51458f9b889b657f388266d53c6f7fa383dbb2481 + md5: a9284141081982473ebf41b92566bbcb depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-common >=0.10.5,<0.10.6.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 + - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 92279 - timestamp: 1733611476546 + size: 107775 + timestamp: 1733709347751 - kind: conda name: aws-c-auth version: 0.8.0 - build: h89ba3c0_12 - build_number: 12 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-h89ba3c0_12.conda - sha256: 021451014fb5ee24601052d84db8d5babbce5085959ba777b540db4e33bde360 - md5: c0e2e6c3aa8c309af0ba09fc7d949407 + build: h93897a1_14 + build_number: 14 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-h93897a1_14.conda + sha256: 3ec33500c5def035acb9ba406161f5452e39b1b818c67d8a56103d6def47bda6 + md5: 061e221dc5cca62be8fab49a16bfb99d depends: + - __osx >=11.0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-common >=0.10.5,<0.10.6.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 112242 - timestamp: 1733611425746 + size: 92250 + timestamp: 1733709418870 - kind: conda name: aws-c-auth version: 0.8.0 - build: ha4f867e_12 - build_number: 12 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-ha4f867e_12.conda - sha256: b9355bedf43c857a2d1986ebe7d61e615218f2171d163b509633d6c0c988d2dc - md5: d889de56d3be691063b71eb826470e29 + build: hb4dd4bb_14 + build_number: 14 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-hb4dd4bb_14.conda + sha256: a9622ac836bbe4a24310e0e77a42ef0a17e5fa0703276f8bbbef945deaca337c + md5: a5b86123507e184fb4463e1f8890b398 depends: - - __glibc >=2.17,<3.0.a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-common >=0.10.5,<0.10.6.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 107663 - timestamp: 1733611397256 + size: 111975 + timestamp: 1733709317063 - kind: conda name: aws-c-cal version: 0.8.1 - build: h35473ba_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.1-h35473ba_0.conda - sha256: c2d59d74e167b6df3c1a7addf0d37080b69a6b3dee2a30b3f2171a5d26c5a691 - md5: 97c0ccb4d43d880b38f237e746c29ead + build: h0f28dba_2 + build_number: 2 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.1-h0f28dba_2.conda + sha256: 023fa0d0618b652b0be5eac73d92fd47136351da7d331334c45d5dd1ee760401 + md5: 94faebd978282d2a4a8514141daec756 depends: - - aws-c-common >=0.10.3,<0.10.4.0a0 + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.5,<0.10.6.0a0 - libgcc >=13 - openssl >=3.3.1,<4.0a0 license: Apache-2.0 license_family: Apache - size: 49808 - timestamp: 1732038238504 + size: 47694 + timestamp: 1733390870810 - kind: conda name: aws-c-cal version: 0.8.1 - build: h5d7ee29_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.1-h5d7ee29_0.conda - sha256: 42d5e9fb695bc3b280ed7e625dcda110b6780ee471e227f1b92afce71ae4972c - md5: fc51a61831a676fe6f922450f51ab6af + build: h1aca5b9_2 + build_number: 2 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.1-h1aca5b9_2.conda + sha256: df203473e8675fc27ae5cb62bc09e336fe92655df0a0056e73087cb22aed287e + md5: 31d9e82aac5cd3fe399535bcec0f2975 depends: - - __osx >=11.0 - - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-common >=0.10.5,<0.10.6.0a0 + - libgcc >=13 - openssl >=3.3.1,<4.0a0 license: Apache-2.0 license_family: Apache - size: 40047 - timestamp: 1732038304022 + size: 49822 + timestamp: 1733390907734 - kind: conda name: aws-c-cal version: 0.8.1 - build: hecf86a2_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.1-hecf86a2_0.conda - sha256: 12cc2087503f4f0d3a5db84e791fb5e585866da728f888aa76e14330a092a681 - md5: 8350795be14a92d68847c0d4f3c1d59f + build: h4d88cd7_2 + build_number: 2 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.1-h4d88cd7_2.conda + sha256: 30e6bc4feea78a280553b084a960515e550dabfae0e63ba511be773c3a9f6b5a + md5: 3cb07f08e5aabe657b0b5fb13945e79a depends: - - __glibc >=2.17,<3.0.a0 - - aws-c-common >=0.10.3,<0.10.4.0a0 - - libgcc >=13 + - __osx >=11.0 + - aws-c-common >=0.10.5,<0.10.6.0a0 - openssl >=3.3.1,<4.0a0 license: Apache-2.0 license_family: Apache - size: 47569 - timestamp: 1732038156682 + size: 39878 + timestamp: 1733390962202 - kind: conda name: aws-c-common - version: 0.10.3 + version: 0.10.5 build: h5505292_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.10.3-h5505292_0.conda - sha256: bb2c1038726d31ffd2d35a5764f80bcd670b6a1c753aadfd261aecb9f88db6d8 - md5: 4150339e3b08db33fe4c436340b1d7f6 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.10.5-h5505292_0.conda + sha256: 54554886028d25b5c752369e7ae8321852e875fdc780ff9357b72a31f3e5d5b4 + md5: 49f049f8b10cf8c2c5a26660854fd21a depends: - __osx >=11.0 license: Apache-2.0 license_family: Apache - size: 221524 - timestamp: 1731567512057 + size: 222184 + timestamp: 1733324871298 - kind: conda name: aws-c-common - version: 0.10.3 + version: 0.10.5 build: h86ecc28_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-common-0.10.3-h86ecc28_0.conda - sha256: 95ca372a0e1bb8dad421751de6aa44d37d87dd69c33a48faca1ae6efa30f2af0 - md5: 64f523ba00b75fdcb33a4eea827d3d19 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-common-0.10.5-h86ecc28_0.conda + sha256: bdea66b7be9acd463bbfd583d2f80ff676d376c60480a2d3f9f7de7b4bf6d2b2 + md5: fcd238b0cc98927742a96aa411123e32 depends: - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 257859 - timestamp: 1731567310573 + size: 258257 + timestamp: 1733324684433 - kind: conda name: aws-c-common - version: 0.10.3 + version: 0.10.5 build: hb9d3cd8_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.10.3-hb9d3cd8_0.conda - sha256: 90bd2ff40b65acb62f11e2500ee7b7e85ac77d2e332429002f4c1da949bec27f - md5: ff3653946d34a6a6ba10babb139d96ef + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.10.5-hb9d3cd8_0.conda + sha256: 93e83e2a31f41bac2aa5eae8fbc7f1d31449a04a3df8a64ebcac2433f52a86ad + md5: d8288fbad9d809b9ca139b8beb6553ef depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 237137 - timestamp: 1731567278052 + size: 237114 + timestamp: 1733324723318 - kind: conda name: aws-c-compression version: 0.3.0 - build: h4c7db1d_2 - build_number: 2 + build: h10558d5_4 + build_number: 4 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-compression-0.3.0-h4c7db1d_2.conda - sha256: 8dba3d48a7230ccd2a6ea8d88c0e1b6caf0a39b14a2b2f0255a413fcfce8ad0a - md5: ee074857cec335bb83692771b06160a4 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-compression-0.3.0-h10558d5_4.conda + sha256: 45ea74461b6a5453325db2201ba9f728f20e89ead17730e93ddd7411a833c058 + md5: 8ceaf4396978c33bc695129425f12734 depends: - - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-common >=0.10.5,<0.10.6.0a0 - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 19696 - timestamp: 1731678729046 + size: 19742 + timestamp: 1733391062884 - kind: conda name: aws-c-compression version: 0.3.0 - build: h5d7ee29_2 - build_number: 2 + build: h4d88cd7_4 + build_number: 4 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-compression-0.3.0-h5d7ee29_2.conda - sha256: a52ea62bf08aed3af079e16d1738f3d2a7fcdd1d260289ae27ae96298e15d12a - md5: 15566c36b0cf5f314e3bee7f7cc796b5 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-compression-0.3.0-h4d88cd7_4.conda + sha256: b6900e82b553d18d5528322de236af3a7f64ccb3df08e8320142894144a5c716 + md5: 8c67ff0c68aea28be3efec6f8d799a19 depends: - __osx >=11.0 - - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-common >=0.10.5,<0.10.6.0a0 license: Apache-2.0 license_family: Apache - size: 18204 - timestamp: 1731678916439 + size: 18219 + timestamp: 1733391126008 - kind: conda name: aws-c-compression version: 0.3.0 - build: hf42f96a_2 - build_number: 2 + build: h9cc6398_4 + build_number: 4 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.3.0-hf42f96a_2.conda - sha256: 210ba4fff1c9500fe02de1dae311ce723bfa313a2d21b72accd745f736f56fce - md5: 257f4ae92fe11bd8436315c86468c39b + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.3.0-h9cc6398_4.conda + sha256: 045a3231b0aacb544ea9e348c22f863d96631f14a3a2b59413a72f61259a32a4 + md5: 076717670d5406e90070120314ff9b4f depends: - __glibc >=2.17,<3.0.a0 - - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-common >=0.10.5,<0.10.6.0a0 - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 19034 - timestamp: 1731678703956 + size: 19029 + timestamp: 1733390975089 - kind: conda name: aws-c-event-stream version: 0.5.0 - build: h873f81a_8 - build_number: 8 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.0-h873f81a_8.conda - sha256: 589f9a04c4c7a919410dde75ce93a6986efad6ed522ecd8e5c9c587ac18f0d34 - md5: 32bdd50b43fcc435a8dc5a3c66aafef0 + build: h9fa824c_10 + build_number: 10 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.0-h9fa824c_10.conda + sha256: 12f2ccc71bb993934cc489af359cb7399f671c3111f64fe2be9c8231819e11bd + md5: 9f6a7984f9ce3c6149fa36865060928a depends: - - __glibc >=2.17,<3.0.a0 - - aws-c-common >=0.10.3,<0.10.4.0a0 + - __osx >=11.0 + - aws-c-common >=0.10.5,<0.10.6.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - - libgcc >=13 - - libstdcxx >=13 + - libcxx >=18 license: Apache-2.0 license_family: Apache - size: 54020 - timestamp: 1731839177415 + size: 47460 + timestamp: 1733696263921 - kind: conda name: aws-c-event-stream version: 0.5.0 - build: h8ec3972_8 - build_number: 8 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.0-h8ec3972_8.conda - sha256: 81b98fc39e64d090af23b11621e467b4f943a19f61dda0fed5ad6397f06de5c7 - md5: ced9c97ddf61e4222d548e8bcc863b87 + build: ha9733bd_10 + build_number: 10 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-event-stream-0.5.0-ha9733bd_10.conda + sha256: e8189bdd1af1a3f68a460bcb3c852193cfdf7afa2f1a82d687d30055242b20e2 + md5: cb0877c6fcc93454f221ba4eba798cfc depends: - - __osx >=11.0 - - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-common >=0.10.5,<0.10.6.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - - libcxx >=18 + - libgcc >=13 + - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 47491 - timestamp: 1731839300212 + size: 55066 + timestamp: 1733696212604 - kind: conda name: aws-c-event-stream version: 0.5.0 - build: hba6c15e_8 - build_number: 8 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-event-stream-0.5.0-hba6c15e_8.conda - sha256: d3b74580045ee9d54a134ab1e5e00082d5d8a466980e94acc153188ee7375d08 - md5: 102f8b54630d79aff5e0c489f40f926e + build: hf811eff_10 + build_number: 10 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.0-hf811eff_10.conda + sha256: 3fbc86e70b543f26cc485f98714b7f789c4ece05128046458681893f43b7f5f1 + md5: 5046c78dd139a333b6acd7376a10e0a7 depends: - - aws-c-common >=0.10.3,<0.10.4.0a0 + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.5,<0.10.6.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 55354 - timestamp: 1731839242373 + size: 53973 + timestamp: 1733696170256 - kind: conda name: aws-c-http version: 0.9.2 - build: h48c6dea_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.2-h48c6dea_1.conda - sha256: cb68d557af1bdcbef668574836fbf39c4df0e4f377258e4d5bd14196acf9b992 - md5: a28dd36a1da76042bfb5579005cc6728 + build: h53134c8_3 + build_number: 3 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.2-h53134c8_3.conda + sha256: a4d217f89ad0e9326da57b2d9bd4cd5cb0a95423d092be7ed81e88fb075d4dbe + md5: 2ffd03180381a92332b673cefc602234 depends: - - __osx >=11.0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-common >=0.10.5,<0.10.6.0a0 - aws-c-compression >=0.3.0,<0.3.1.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 + - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 152660 - timestamp: 1732110368931 + size: 189812 + timestamp: 1733683248290 - kind: conda name: aws-c-http version: 0.9.2 - build: h697be72_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.2-h697be72_1.conda - sha256: 4d6557a00e74649301da78d7de7d108882ce89eb9d6c87efce30789b53a617cf - md5: a8b1a2c11a93e615f6e8f33175ff8ff0 + build: hc68443d_3 + build_number: 3 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.2-hc68443d_3.conda + sha256: 71be93cd1d8dfa5858939ba53431abaee859fbc98bdf9f5033bfa41af76b140a + md5: 6353604cb9803e63fce359388201514e depends: + - __osx >=11.0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-common >=0.10.5,<0.10.6.0a0 - aws-c-compression >=0.3.0,<0.3.1.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 190344 - timestamp: 1732110425530 + size: 153237 + timestamp: 1733683327609 - kind: conda name: aws-c-http version: 0.9.2 - build: ha5a3ca8_1 - build_number: 1 + build: hce7dc5d_3 + build_number: 3 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.2-ha5a3ca8_1.conda - sha256: 8ecb3d8411f58db4686635aedfe5d60b2b8870f9f9cafb471f3878dc61d21596 - md5: b2e017f8a4781ad3af9166edf10b65a8 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.2-hce7dc5d_3.conda + sha256: 7e864b6d4255c4edbd1b2c0f519849017d2a48e54b282748eaa8f9f0fc98a6f4 + md5: c0f54e8975ad42d2864f4b1918356b3b depends: - __glibc >=2.17,<3.0.a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-common >=0.10.5,<0.10.6.0a0 - aws-c-compression >=0.3.0,<0.3.1.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 197338 - timestamp: 1732110324356 + size: 197506 + timestamp: 1733683203582 - kind: conda name: aws-c-io version: 0.15.3 - build: h0155602_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-h0155602_1.conda - sha256: 7b8d97d51e5bb80191e07f16cac6f59068be30bf5906925a8f4159b3aab9093c - md5: 431c201b11eee90fd120844557a62b02 + build: h66499f2_3 + build_number: 3 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-h66499f2_3.conda + sha256: 86ff175fa5dced16cf41bcc5c353de080314fcb81f4aed326f29b9f22add9aad + md5: e64159c5b106a0365544cfe9d4ef79ec depends: + - __osx >=11.0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.3,<0.10.4.0a0 - - libgcc >=13 - - s2n >=1.5.9,<1.5.10.0a0 + - aws-c-common >=0.10.5,<0.10.6.0a0 license: Apache-2.0 license_family: Apache - size: 161664 - timestamp: 1732097310449 + size: 136845 + timestamp: 1733588465582 - kind: conda name: aws-c-io version: 0.15.3 - build: h30cefa2_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-h30cefa2_1.conda - sha256: d6f8d42259ca11507bd912b3cd3ff1a65d6d8c7ff67ae9ee9df1686c9bebbbcc - md5: 8b8dc361de09e5b6227165a876e55cb7 + build: h8aa8d47_3 + build_number: 3 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-h8aa8d47_3.conda + sha256: cb08b2e9258637e810ac283600b7de2d7a68f55a61e67226e9cce2537f36a06b + md5: 8ece20a51dafae96444e90c7ddaac41a depends: - - __osx >=11.0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-common >=0.10.5,<0.10.6.0a0 + - libgcc >=13 + - s2n >=1.5.9,<1.5.10.0a0 license: Apache-2.0 license_family: Apache - size: 136662 - timestamp: 1732097382517 + size: 161513 + timestamp: 1733588480960 - kind: conda name: aws-c-io version: 0.15.3 - build: ha35c7d9_1 - build_number: 1 + build: hfd54f12_3 + build_number: 3 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-ha35c7d9_1.conda - sha256: 2e9e13ed54f6da22ee5d06622f4165bcca253411997dad62225aecc54b25c0db - md5: 97960f380abe1ba3157fe63312e35b07 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-hfd54f12_3.conda + sha256: 6d0bd78d5c7d3ec586691d54c8aebc79d089358ff9e793f0cac857a1f977a1a0 + md5: c0b9f79cd2f5797b913415511bfa2cd6 depends: - __glibc >=2.17,<3.0.a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-common >=0.10.5,<0.10.6.0a0 - libgcc >=13 - s2n >=1.5.9,<1.5.10.0a0 license: Apache-2.0 license_family: Apache - size: 158012 - timestamp: 1732097264673 + size: 158115 + timestamp: 1733588386529 - kind: conda name: aws-c-mqtt version: 0.11.0 - build: h2cca791_9 - build_number: 9 + build: h2f8d747_11 + build_number: 11 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h2cca791_9.conda - sha256: c0ad176bab176a2983fb052de71037fc9357afd13b073511a7a440c1a8c6eff2 - md5: 090674d608454e979ce77bc8ee735868 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h2f8d747_11.conda + sha256: b66de0de359bfaec5084bdc78fda6dfbd8cf8e71c68a76dcd7b74e8a00ec6052 + md5: f4ccd7c1e73c662fd9a795147ca8ca9f depends: - - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-common >=0.10.5,<0.10.6.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 169690 - timestamp: 1733688313938 + size: 168898 + timestamp: 1733739548597 - kind: conda name: aws-c-mqtt version: 0.11.0 - build: h3aaadf4_9 - build_number: 9 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h3aaadf4_9.conda - sha256: 3cc99239c8dadfe55e4b9ba37d03c5d3308ddd8fe00792fab7c6b47c97655c07 - md5: ddb5dc7ac1ae424ca2b7a847765a0cb9 + build: ha3c2ba9_11 + build_number: 11 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-ha3c2ba9_11.conda + sha256: 187787bb41e7b616c9317c12c32a5027aae784d1f9335f9d6d34a3fa7ebcb1ec + md5: 93c5070d6f9b4cb2ed9de52ce247cebb depends: - - __osx >=11.0 - - aws-c-common >=0.10.3,<0.10.4.0a0 + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.5,<0.10.6.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 + - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 135051 - timestamp: 1733688394116 + size: 193829 + timestamp: 1733740033267 - kind: conda name: aws-c-mqtt version: 0.11.0 - build: h56e9cca_9 - build_number: 9 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h56e9cca_9.conda - sha256: c93c29b58482ca72d3f9a5710ad92194e809a9de988bcdcbae9ddd0f8ed484a6 - md5: f75642fe24ae4131f554cbacd6df53e3 + build: hd073cef_11 + build_number: 11 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-hd073cef_11.conda + sha256: d2ee2cdc651250a38f67b84ec65de3ba5493c760821d22c01edb8defd6393dc9 + md5: 0c1deb6e00f80b4aedcb2c4fcfea6407 depends: - - __glibc >=2.17,<3.0.a0 - - aws-c-common >=0.10.3,<0.10.4.0a0 + - __osx >=11.0 + - aws-c-common >=0.10.5,<0.10.6.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 194705 - timestamp: 1733688770217 + size: 134556 + timestamp: 1733739661152 - kind: conda name: aws-c-s3 version: 0.7.5 - build: h3c51cf6_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.5-h3c51cf6_2.conda - sha256: 98a2df8a5068183e55b4c6914a3513d403300be20c960842a9a229546b8e8e52 - md5: e326ddae95b3ec96a31aded04c834175 + build: h55e9418_4 + build_number: 4 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.5-h55e9418_4.conda + sha256: 04d7fd3574fa76c184f04630125a760afa4ae5d4109eec36f22fe127cc85e164 + md5: faec629f0eb306cfe17ed1615249e188 depends: + - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-common >=0.10.5,<0.10.6.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 @@ -1306,22 +1310,21 @@ packages: - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 117896 - timestamp: 1733694002769 + size: 113811 + timestamp: 1733717653326 - kind: conda name: aws-c-s3 version: 0.7.5 - build: h6ad95d4_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.5-h6ad95d4_2.conda - sha256: 103a478b18ead8f79aae9a4966b2879e9fbcfb0aa3b2e6c9b2811a76ba34610e - md5: 682c079ec089d47bb7142f12b3275e4f + build: h757e810_4 + build_number: 4 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.5-h757e810_4.conda + sha256: 3da5e1b88d68c5cb2eb1dd898a7c6192be9e1df0bd2733d39d6c0ffe9fc546a2 + md5: 96a657e5856e9e92755170630067f63c depends: - - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-common >=0.10.5,<0.10.6.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 @@ -1329,166 +1332,165 @@ packages: - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 113741 - timestamp: 1733693956970 + size: 117478 + timestamp: 1733717680655 - kind: conda name: aws-c-s3 version: 0.7.5 - build: hca3a6f1_2 - build_number: 2 + build: hb201fd0_4 + build_number: 4 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.5-hca3a6f1_2.conda - sha256: 53c4dc6e360ed6e1242c20fa43f7bfe67a41215e51cafab27dbd8aa91333040c - md5: 0b4e647cae3ce85ec991c6e3b8d12bda + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.5-hb201fd0_4.conda + sha256: c25c62173770b681083962b497a927f306e7f3d05b459dd59e4c12eaf49e9f0b + md5: 83b9775bbe5419cf4916e646e870b87a depends: - __osx >=11.0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-common >=0.10.5,<0.10.6.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 license: Apache-2.0 license_family: Apache - size: 97530 - timestamp: 1733694097526 + size: 97441 + timestamp: 1733717822438 - kind: conda name: aws-c-sdkutils version: 0.2.1 - build: h4c7db1d_1 - build_number: 1 + build: h10558d5_3 + build_number: 3 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.1-h4c7db1d_1.conda - sha256: 3d2b079a361888197894308a93fec95666c6abfcc86c979ae36f1f9cb223dfb3 - md5: 45437a9bad358b25f795e77218063baf + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.1-h10558d5_3.conda + sha256: 0f6a15d711bc4d6b2d2b8451ad46bf78af6876235ad56bf142644a4ce2240f52 + md5: 1ba505fc4243ad75507efa8976e1790f depends: - - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-common >=0.10.5,<0.10.6.0a0 - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 58256 - timestamp: 1731687032896 + size: 58123 + timestamp: 1733398238726 - kind: conda name: aws-c-sdkutils version: 0.2.1 - build: h5d7ee29_1 - build_number: 1 + build: h4d88cd7_3 + build_number: 3 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.1-h5d7ee29_1.conda - sha256: ed3b272b9a345142e62f0cf9ab2a9fa909c92e09691f6a06e98ff500a1f8a303 - md5: 0f1e5bc57d4567c9d9bec8d8982828ed + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.1-h4d88cd7_3.conda + sha256: a94ecde4e61de8effd9c93ba3527eb010773b5422d2d079ffdcd796ec77fcd4e + md5: 5ec333d73530fbfc2db670eeb6911bff depends: - __osx >=11.0 - - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-common >=0.10.5,<0.10.6.0a0 license: Apache-2.0 license_family: Apache - size: 50276 - timestamp: 1731687215375 + size: 49739 + timestamp: 1733398400904 - kind: conda name: aws-c-sdkutils version: 0.2.1 - build: hf42f96a_1 - build_number: 1 + build: h9cc6398_3 + build_number: 3 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.1-hf42f96a_1.conda - sha256: f6e38c79b124c34edb048c28ec58fdfc4ea8f7a218dc493195afbada48ba063b - md5: bbdd20fb1994a9f0ba98078fcb6c12ab + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.1-h9cc6398_3.conda + sha256: 917f679da38f162e191c5d6817b35fbf2ae0584b1d335bc229fd01e6077108ee + md5: 10bdb7fc3763760dcea1cd908ece6b2b depends: - __glibc >=2.17,<3.0.a0 - - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-common >=0.10.5,<0.10.6.0a0 - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 55738 - timestamp: 1731687063424 + size: 55864 + timestamp: 1733398187914 - kind: conda name: aws-checksums version: 0.2.2 - build: h4c7db1d_1 - build_number: 1 + build: h10558d5_3 + build_number: 3 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h4c7db1d_1.conda - sha256: b3fa060d4fe9e8fdb7b21b8b3c5fdb61df6f02973f74245a65869100f72a3931 - md5: af22e7e1c1af348a66f938aa66192f2c + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h10558d5_3.conda + sha256: 108860ae5d61a4dc0b0d91282d0171ba7fd69686c11b4bcbdcd3f8b8efc98adb + md5: 1ded47669f79301e4a3d1d3d469494c0 depends: - - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-common >=0.10.5,<0.10.6.0a0 - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 72081 - timestamp: 1731687244426 + size: 72203 + timestamp: 1733398350602 - kind: conda name: aws-checksums version: 0.2.2 - build: h5d7ee29_1 - build_number: 1 + build: h4d88cd7_3 + build_number: 3 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-h5d7ee29_1.conda - sha256: eb7ebe309b33a04329b3e51a7f10bb407815389dc37cc047f7d41f9c91f0d1b0 - md5: db1ed95988a8fe6c1ce0d94abdfc8e72 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-h4d88cd7_3.conda + sha256: 7d0d71e399fa6b0a1e686470d4a982396a9d0d29be29bf07591d83739cc29a0a + md5: 45409e27b510588196b9f116f86c2d51 depends: - __osx >=11.0 - - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-common >=0.10.5,<0.10.6.0a0 license: Apache-2.0 license_family: Apache - size: 70184 - timestamp: 1731687342560 + size: 70160 + timestamp: 1733398484776 - kind: conda name: aws-checksums version: 0.2.2 - build: hf42f96a_1 - build_number: 1 + build: h9cc6398_3 + build_number: 3 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-hf42f96a_1.conda - sha256: da802ace5448481c968cfec7e7a4f79f686f42df9de8e3f78c09a925c2882a79 - md5: d908d43d87429be24edfb20e96543c20 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-h9cc6398_3.conda + sha256: a3aea2fc8ccf85ae64c5ce9c4e507be37173b94909191480e5151c482a220e40 + md5: d6dd8b87b95195d8d26893611d94ba3b depends: - __glibc >=2.17,<3.0.a0 - - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-common >=0.10.5,<0.10.6.0a0 - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 72744 - timestamp: 1731687193373 + size: 72681 + timestamp: 1733398331530 - kind: conda name: aws-crt-cpp version: 0.29.7 - build: h318f0b1_3 - build_number: 3 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.7-h318f0b1_3.conda - sha256: 35100ad81adf31aa4e73ac2956e9a8ff277cc57d0db2db2f0e9c51012175eadd - md5: 9748d0527695a64aa2eb45e891ea188d + build: hb9a023b_5 + build_number: 5 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.7-hb9a023b_5.conda + sha256: d1d89918a1f6e08f16275d82218b2f73012cee2def3ad8f1a8d28af7497e66cc + md5: 70a976e616535dbab5e1f354734a238a depends: - - __glibc >=2.17,<3.0.a0 + - __osx >=11.0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-common >=0.10.5,<0.10.6.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - aws-c-s3 >=0.7.5,<0.7.6.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - - libgcc >=13 - - libstdcxx >=13 + - libcxx >=18 license: Apache-2.0 license_family: Apache - size: 355045 - timestamp: 1733744656604 + size: 236182 + timestamp: 1733767086227 - kind: conda name: aws-crt-cpp version: 0.29.7 - build: hacb6b83_3 - build_number: 3 + build: hc8d91e0_5 + build_number: 5 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.7-hacb6b83_3.conda - sha256: 6c0ece3ca494c2220fc052e608d52ea52bb361e536a14a1b3b36ebeede9de8b9 - md5: 27ce3ed5b7e55370a9fea2dda2b3245a + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.7-hc8d91e0_5.conda + sha256: c3be4f3f77ac7ba716228df1099eb68a5e7a4cbbe386a4732a28f33d6b780cc4 + md5: 8f14e3d651a08c9b2f85c6e5d359e250 depends: - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-common >=0.10.5,<0.10.6.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 @@ -1499,44 +1501,45 @@ packages: - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 283993 - timestamp: 1733744571881 + size: 284313 + timestamp: 1733766768643 - kind: conda name: aws-crt-cpp version: 0.29.7 - build: hc2c2bbc_3 - build_number: 3 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.7-hc2c2bbc_3.conda - sha256: 6a519151e7fa71fbc9d1cd3a526ea7591638af058a6cc0534e1cd418fd48b354 - md5: 5450324f7b48dff1f6ed5484bf830972 + build: hed26007_5 + build_number: 5 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.7-hed26007_5.conda + sha256: f996cb94f3ef212792f288a0f7c5201ac7f00bb43502702b76e408e50d80132f + md5: 7c64e4ac7a484fc525a4ce7b9baf709a depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-common >=0.10.5,<0.10.6.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - aws-c-s3 >=0.7.5,<0.7.6.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - - libcxx >=18 + - libgcc >=13 + - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 236331 - timestamp: 1733744737078 + size: 354783 + timestamp: 1733766766977 - kind: conda name: aws-sdk-cpp version: 1.11.458 - build: h5e41cbe_1 - build_number: 1 + build: h2d3f608_3 + build_number: 3 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h5e41cbe_1.conda - sha256: b45305787a78f2bf7ecabc401b5bfe451509b434dd041a0a554572a70302d2f3 - md5: 1861b1fb86b336f1f53faaac5a76046c + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h2d3f608_3.conda + sha256: b335dfee7b04117ddae857564300ed6795718e2305141c7d631dcc434503a261 + md5: 57bdfac803ce58e3a3256752d7e5aa6e depends: - - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-common >=0.10.5,<0.10.6.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - aws-crt-cpp >=0.29.7,<0.29.8.0a0 @@ -1547,55 +1550,55 @@ packages: - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 2910575 - timestamp: 1733576378398 + size: 2896174 + timestamp: 1733808114676 - kind: conda name: aws-sdk-cpp version: 1.11.458 - build: hac138a2_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-hac138a2_1.conda - sha256: fdb9c94d7524c52837643428b1aab4f35bed3ba2862a57e1b03e63038c7c146f - md5: bbdd9589b1a32a80b0e3f98a2a482542 + build: h39838b8_3 + build_number: 3 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-h39838b8_3.conda + sha256: b5ef3a956937d61b59b9dd4b8c23eeb0bc254c37a97028a50c3ff6c8df399deb + md5: 3a6c8f65692febdf791bece561b371c8 depends: - - __glibc >=2.17,<3.0.a0 - - aws-c-common >=0.10.3,<0.10.4.0a0 + - __osx >=11.0 + - aws-c-common >=0.10.5,<0.10.6.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - aws-crt-cpp >=0.29.7,<0.29.8.0a0 - libcurl >=8.10.1,<9.0a0 - - libgcc >=13 - - libstdcxx >=13 + - libcxx >=18 - libzlib >=1.3.1,<2.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 3071464 - timestamp: 1733576251149 + size: 2837854 + timestamp: 1733808787914 - kind: conda name: aws-sdk-cpp version: 1.11.458 - build: he4d6490_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-he4d6490_1.conda - sha256: 61abc03dfbe372b258b8b6790bf3ad3a3265e02ce24b6b22bfe8f2fcab94954a - md5: 2941213b750689ace0862a6d695bb740 + build: h571fd1c_3 + build_number: 3 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-h571fd1c_3.conda + sha256: c2f38374a6f4dd804f76c8a071bc7f7d37dfb43e194eb93a473ff789460c011b + md5: 374cf1add8af327b15b1b1e4873f4955 depends: - - __osx >=11.0 - - aws-c-common >=0.10.3,<0.10.4.0a0 + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.5,<0.10.6.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - aws-crt-cpp >=0.29.7,<0.29.8.0a0 - libcurl >=8.10.1,<9.0a0 - - libcxx >=18 + - libgcc >=13 + - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 2847256 - timestamp: 1733576733615 + size: 3062994 + timestamp: 1733808211748 - kind: conda name: azure-core-cpp version: 1.14.0 @@ -1874,18 +1877,19 @@ packages: - kind: conda name: backoff version: 2.2.1 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/backoff-2.2.1-pyhd8ed1ab_0.tar.bz2 - sha256: b1cf7df15741e5fbc57e22a3a89db427383335aaab22ddc1b30710deeb0130de - md5: 4600709bd85664d8606ae0c76642f8db + url: https://conda.anaconda.org/conda-forge/noarch/backoff-2.2.1-pyhd8ed1ab_1.conda + sha256: f334115c6b0c6c2cd0d28595365f205ec7eaa60bcc5ff91a75d7245f728be820 + md5: a38b801f2bcc12af80c2e02a9e4ce7d9 depends: - - python >=3.7 + - python >=3.9 license: MIT license_family: MIT - size: 17501 - timestamp: 1665004860081 + size: 18816 + timestamp: 1733771192649 - kind: conda name: brotli-python version: 1.1.0 @@ -2756,25 +2760,26 @@ packages: - kind: conda name: huggingface_hub version: 0.26.5 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.5-pyhd8ed1ab_0.conda - sha256: bdbf614d87155c7f9b8fe9c3d039528298119832e9f52959b15c522a9841eef7 - md5: 37236111cd92068e5af2f98cbb476642 + url: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.5-pyhd8ed1ab_1.conda + sha256: 0c75532d914a04c73222be298ed2c6868739dd475b1b1a9137c52abe79873952 + md5: 73937038e21117fe401f8ea64fbaeacc depends: - filelock - fsspec >=2023.5.0 - packaging >=20.9 - - python >=3.8 + - python >=3.9 - pyyaml >=5.1 - requests - tqdm >=4.42.1 - typing-extensions >=3.7.4.3 - typing_extensions >=3.7.4.3 license: Apache-2.0 - size: 274900 - timestamp: 1733637007500 + size: 275466 + timestamp: 1733852454004 - kind: conda name: hyperframe version: 6.0.1 @@ -3176,14 +3181,13 @@ packages: - kind: conda name: libarrow version: 18.1.0 - build: h3b07799_4_cpu - build_number: 4 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-h3b07799_4_cpu.conda - sha256: 8837dc6e60522eef63554654c45d18143006324c43391c6e8dc5d2b20997466d - md5: 27675c7172667268440306533e4928de + build: h1b535d6_6_cpu + build_number: 6 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-h1b535d6_6_cpu.conda + sha256: 087b579aebf351ca41c54214121d86a15a41c92051cbd432d6f3a3f58a8c31b0 + md5: 4c0ad68efba1113ac5833975c67b565d depends: - - __glibc >=2.17,<3.0.a0 - aws-crt-cpp >=0.29.7,<0.29.8.0a0 - aws-sdk-cpp >=1.11.458,<1.11.459.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 @@ -3198,36 +3202,35 @@ packages: - libbrotlidec >=1.1.0,<1.2.0a0 - libbrotlienc >=1.1.0,<1.2.0a0 - libgcc >=13 - - libgoogle-cloud >=2.31.0,<2.32.0a0 - - libgoogle-cloud-storage >=2.31.0,<2.32.0a0 + - libgoogle-cloud >=2.32.0,<2.33.0a0 + - libgoogle-cloud-storage >=2.32.0,<2.33.0a0 - libre2-11 >=2024.7.2 - libstdcxx >=13 - libutf8proc >=2.9.0,<2.10.0a0 - libzlib >=1.3.1,<2.0a0 - - lz4-c >=1.9.3,<1.10.0a0 + - lz4-c >=1.10.0,<1.11.0a0 - orc >=2.0.3,<2.0.4.0a0 - re2 - snappy >=1.2.1,<1.3.0a0 - zstd >=1.5.6,<1.6.0a0 constrains: - parquet-cpp <0.0a0 - - apache-arrow-proc =*=cpu - arrow-cpp <0.0a0 + - apache-arrow-proc =*=cpu license: Apache-2.0 - license_family: APACHE - size: 8793521 - timestamp: 1733607374384 + size: 8040629 + timestamp: 1733810319239 - kind: conda name: libarrow version: 18.1.0 - build: h86d57b8_4_cpu - build_number: 4 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-h86d57b8_4_cpu.conda - sha256: fe6b5eb4d6e71418343b62a0d322ede7be69999b28d9e492164c12e613cf3fa0 - md5: 23431b3fdbb32858d1533da5bc8fcc86 + build: h44a453e_6_cpu + build_number: 6 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-h44a453e_6_cpu.conda + sha256: abf17e99b03356a9d6248e965826c1352ff01b00d3a62cc51393bb0744d72803 + md5: 2cf6d608d6e66506f69797d5c6944c35 depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 - aws-crt-cpp >=0.29.7,<0.29.8.0a0 - aws-sdk-cpp >=1.11.458,<1.11.459.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 @@ -3235,40 +3238,42 @@ packages: - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 - bzip2 >=1.0.8,<2.0a0 + - gflags >=2.2.2,<2.3.0a0 - glog >=0.7.1,<0.8.0a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - libbrotlidec >=1.1.0,<1.2.0a0 - libbrotlienc >=1.1.0,<1.2.0a0 - - libcxx >=18 - - libgoogle-cloud >=2.31.0,<2.32.0a0 - - libgoogle-cloud-storage >=2.31.0,<2.32.0a0 + - libgcc >=13 + - libgoogle-cloud >=2.32.0,<2.33.0a0 + - libgoogle-cloud-storage >=2.32.0,<2.33.0a0 - libre2-11 >=2024.7.2 + - libstdcxx >=13 - libutf8proc >=2.9.0,<2.10.0a0 - libzlib >=1.3.1,<2.0a0 - - lz4-c >=1.9.3,<1.10.0a0 + - lz4-c >=1.10.0,<1.11.0a0 - orc >=2.0.3,<2.0.4.0a0 - re2 - snappy >=1.2.1,<1.3.0a0 - zstd >=1.5.6,<1.6.0a0 constrains: - parquet-cpp <0.0a0 - - apache-arrow-proc =*=cpu - arrow-cpp <0.0a0 + - apache-arrow-proc =*=cpu license: Apache-2.0 - license_family: APACHE - size: 5482797 - timestamp: 1733605365656 + size: 8786061 + timestamp: 1733810643966 - kind: conda name: libarrow version: 18.1.0 - build: ha2aff55_4_cpu - build_number: 4 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-ha2aff55_4_cpu.conda - sha256: 795950b73029fd4d3b7fee3427c39c7357287fd94244dd5a125ac0931d31aaa3 - md5: c4d60278cb00053df1a4f0600fd2ac2a + build: h4a2f8bd_6_cpu + build_number: 6 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-h4a2f8bd_6_cpu.conda + sha256: 9ed3ea1bc15005c0df187268ef91407afaa908cf82f36f5acbbf50ac24d7f806 + md5: 835cdd84195b84dc34d128bd5d3580b9 depends: + - __osx >=11.0 - aws-crt-cpp >=0.29.7,<0.29.8.0a0 - aws-sdk-cpp >=1.11.458,<1.11.459.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 @@ -3276,209 +3281,197 @@ packages: - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 - bzip2 >=1.0.8,<2.0a0 - - gflags >=2.2.2,<2.3.0a0 - glog >=0.7.1,<0.8.0a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - libbrotlidec >=1.1.0,<1.2.0a0 - libbrotlienc >=1.1.0,<1.2.0a0 - - libgcc >=13 - - libgoogle-cloud >=2.31.0,<2.32.0a0 - - libgoogle-cloud-storage >=2.31.0,<2.32.0a0 + - libcxx >=18 + - libgoogle-cloud >=2.32.0,<2.33.0a0 + - libgoogle-cloud-storage >=2.32.0,<2.33.0a0 - libre2-11 >=2024.7.2 - - libstdcxx >=13 - libutf8proc >=2.9.0,<2.10.0a0 - libzlib >=1.3.1,<2.0a0 - - lz4-c >=1.9.3,<1.10.0a0 + - lz4-c >=1.10.0,<1.11.0a0 - orc >=2.0.3,<2.0.4.0a0 - re2 - snappy >=1.2.1,<1.3.0a0 - zstd >=1.5.6,<1.6.0a0 constrains: - - parquet-cpp <0.0a0 - apache-arrow-proc =*=cpu - arrow-cpp <0.0a0 + - parquet-cpp <0.0a0 license: Apache-2.0 - license_family: APACHE - size: 8035987 - timestamp: 1733607600970 -- kind: conda - name: libarrow-acero - version: 18.1.0 - build: h1dc2043_4_cpu - build_number: 4 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-h1dc2043_4_cpu.conda - sha256: fe8cb6feeed0858cb8e7cc8889ae20165527934778adb8f7b1f2f5d1f7ade16d - md5: e4ed6162593fbb01f4d742db4215f70c - depends: - - __osx >=11.0 - - libarrow 18.1.0 h86d57b8_4_cpu - - libcxx >=18 - license: Apache-2.0 - license_family: APACHE - size: 483574 - timestamp: 1733605591770 + size: 5494797 + timestamp: 1733808145854 - kind: conda name: libarrow-acero version: 18.1.0 - build: h512cd83_4_cpu - build_number: 4 + build: h3b568fd_6_cpu + build_number: 6 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h512cd83_4_cpu.conda - sha256: 9e88f04409da9ca2fedc5f7bf0987ff28e96d08742e59672f744ec4624a4c991 - md5: d532c42abe13841806d97f4d9cd6dcf5 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h3b568fd_6_cpu.conda + sha256: fdb70e2499e59b730084ecd53008b361a6f6090b5fb49624feda06b7e84c7b8c + md5: c50907eefe2ae22d826e7cb2e4d712f5 depends: - - libarrow 18.1.0 ha2aff55_4_cpu + - libarrow 18.1.0 h1b535d6_6_cpu - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 - license_family: APACHE - size: 578174 - timestamp: 1733607685962 + size: 578091 + timestamp: 1733810378092 - kind: conda name: libarrow-acero version: 18.1.0 - build: h8bbc2ab_4_cpu - build_number: 4 + build: hcb10f89_6_cpu + build_number: 6 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-h8bbc2ab_4_cpu.conda - sha256: b3b4ddb2718c96c93d9b50dbf8f66265af9198b55852b4d3424c13a79ec3f84d - md5: 82bcbfe424868ce66b5ab986999f534d + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-hcb10f89_6_cpu.conda + sha256: a32fa1d71415afc02b5cf3cd4c0a6ec0af9e749308829cc65ff79689222ce479 + md5: 143f9288b64759a6427563f058c62f2b depends: - __glibc >=2.17,<3.0.a0 - - libarrow 18.1.0 h3b07799_4_cpu + - libarrow 18.1.0 h44a453e_6_cpu - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 - license_family: APACHE - size: 610772 - timestamp: 1733607505368 + size: 611745 + timestamp: 1733810698469 - kind: conda - name: libarrow-dataset + name: libarrow-acero version: 18.1.0 - build: h1dc2043_4_cpu - build_number: 4 + build: hf07054f_6_cpu + build_number: 6 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-h1dc2043_4_cpu.conda - sha256: 862fb21b871666495b4bb5e63f5fcb66b93c08893e92412b01e2717e081836eb - md5: bb940b4c583e4c8e5a9f193fabdb5840 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-hf07054f_6_cpu.conda + sha256: e1cae46409927470439ef9ae93ed09b3493d0579501ca9ebfa79ded212ee98d8 + md5: 97fc01254714e1572624baefdd7cc898 depends: - __osx >=11.0 - - libarrow 18.1.0 h86d57b8_4_cpu - - libarrow-acero 18.1.0 h1dc2043_4_cpu + - libarrow 18.1.0 h4a2f8bd_6_cpu - libcxx >=18 - - libparquet 18.1.0 hf4cc9e7_4_cpu license: Apache-2.0 - license_family: APACHE - size: 489457 - timestamp: 1733607417337 + size: 483713 + timestamp: 1733808246880 - kind: conda name: libarrow-dataset version: 18.1.0 - build: h512cd83_4_cpu - build_number: 4 + build: h3b568fd_6_cpu + build_number: 6 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h512cd83_4_cpu.conda - sha256: 4a9ffedc5570ce57a6864e46dcf36ec108557791b50fd43e82eb739f3717ff2f - md5: 1a6c409f45857d30f581a1a53abb2298 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h3b568fd_6_cpu.conda + sha256: 2a08f5a1017ff660c37ae0c24343a119cb2511c6edd69e23d0a5090a0967ea35 + md5: bb1548ad011c4f9107fcc4cc548473bf depends: - - libarrow 18.1.0 ha2aff55_4_cpu - - libarrow-acero 18.1.0 h512cd83_4_cpu + - libarrow 18.1.0 h1b535d6_6_cpu + - libarrow-acero 18.1.0 h3b568fd_6_cpu - libgcc >=13 - - libparquet 18.1.0 h34a048e_4_cpu + - libparquet 18.1.0 hfc78867_6_cpu - libstdcxx >=13 license: Apache-2.0 - license_family: APACHE - size: 561495 - timestamp: 1733607973097 + size: 559673 + timestamp: 1733810461646 - kind: conda name: libarrow-dataset version: 18.1.0 - build: h8bbc2ab_4_cpu - build_number: 4 + build: hcb10f89_6_cpu + build_number: 6 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-h8bbc2ab_4_cpu.conda - sha256: 9c898ab7377953b8c7218347fdb63376d4f977cabfb8fa6bd1b421a75b8cb335 - md5: fa31464c75b20c2f3ac8fc758e034887 + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-hcb10f89_6_cpu.conda + sha256: 74eeb178070002842d3ed721769399320e3a68a0843319eaf899a092a31def26 + md5: 20ca46a6bc714a6ab189d5b3f46e66d8 depends: - __glibc >=2.17,<3.0.a0 - - libarrow 18.1.0 h3b07799_4_cpu - - libarrow-acero 18.1.0 h8bbc2ab_4_cpu + - libarrow 18.1.0 h44a453e_6_cpu + - libarrow-acero 18.1.0 hcb10f89_6_cpu - libgcc >=13 - - libparquet 18.1.0 hf4f6db6_4_cpu + - libparquet 18.1.0 h081d1f1_6_cpu - libstdcxx >=13 license: Apache-2.0 - license_family: APACHE - size: 585517 - timestamp: 1733607943984 + size: 586627 + timestamp: 1733810842604 +- kind: conda + name: libarrow-dataset + version: 18.1.0 + build: hf07054f_6_cpu + build_number: 6 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-hf07054f_6_cpu.conda + sha256: 6eba942ce926419f74e6e0a7c3994a7d78ab6be47115e6bb70e02136554736be + md5: 0774276be6659aaa0007f1b0f6ee19b0 + depends: + - __osx >=11.0 + - libarrow 18.1.0 h4a2f8bd_6_cpu + - libarrow-acero 18.1.0 hf07054f_6_cpu + - libcxx >=18 + - libparquet 18.1.0 h636d7b7_6_cpu + license: Apache-2.0 + size: 489948 + timestamp: 1733809328231 - kind: conda name: libarrow-substrait version: 18.1.0 - build: h3644d33_4_cpu - build_number: 4 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h3644d33_4_cpu.conda - sha256: ac053b3efd1a2701e6f34195d90a0da21dca22d70916ae6b10a019c2be6cd44c - md5: ce3062cd5caa0bdafa7976535862e648 + build: h3ee7192_6_cpu + build_number: 6 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-h3ee7192_6_cpu.conda + sha256: bda6728db019dd0c409b1996ad9ef6ab0bcee3a94dc66a8045e8c1049c566055 + md5: aa313b3168caf98d00b3753f5ba27650 depends: + - __glibc >=2.17,<3.0.a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.1.0 ha2aff55_4_cpu - - libarrow-acero 18.1.0 h512cd83_4_cpu - - libarrow-dataset 18.1.0 h512cd83_4_cpu + - libarrow 18.1.0 h44a453e_6_cpu + - libarrow-acero 18.1.0 hcb10f89_6_cpu + - libarrow-dataset 18.1.0 hcb10f89_6_cpu - libgcc >=13 - libprotobuf >=5.28.2,<5.28.3.0a0 - libstdcxx >=13 license: Apache-2.0 - license_family: APACHE - size: 513745 - timestamp: 1733608111290 + size: 519989 + timestamp: 1733810903274 - kind: conda name: libarrow-substrait version: 18.1.0 - build: had74209_4_cpu - build_number: 4 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-had74209_4_cpu.conda - sha256: 29e44d6070d64cd4b357e02afeae233d2e90d917a008a2724c9cd463015f0319 - md5: bf261e5fa25ce4acc11a80bdc73b88b2 + build: h3ffb4b1_6_cpu + build_number: 6 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h3ffb4b1_6_cpu.conda + sha256: 9f78c55c5d7122e588a6f226cbf7e909c479d66ed18edc633d68324323d386b9 + md5: 5db2e6832397b8ca70a6f7b00e0c3629 depends: - - __glibc >=2.17,<3.0.a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.1.0 h3b07799_4_cpu - - libarrow-acero 18.1.0 h8bbc2ab_4_cpu - - libarrow-dataset 18.1.0 h8bbc2ab_4_cpu + - libarrow 18.1.0 h1b535d6_6_cpu + - libarrow-acero 18.1.0 h3b568fd_6_cpu + - libarrow-dataset 18.1.0 h3b568fd_6_cpu - libgcc >=13 - libprotobuf >=5.28.2,<5.28.3.0a0 - libstdcxx >=13 license: Apache-2.0 - license_family: APACHE - size: 519919 - timestamp: 1733608152065 + size: 515928 + timestamp: 1733810503359 - kind: conda name: libarrow-substrait version: 18.1.0 - build: hf3d3107_4_cpu - build_number: 4 + build: h86344ea_6_cpu + build_number: 6 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-hf3d3107_4_cpu.conda - sha256: 9d9ebd042b9e8561b64f057d2adb24d331a772ccf1af3ed2d8b5b1566729f236 - md5: c093b05dc6d1b6057342d3dd6f3bd0d8 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-h86344ea_6_cpu.conda + sha256: bafd9ca59ebb5ad34b77aff316ef7b59c5fb1eb8a7b6a15de8dcbdf3ce37556d + md5: c1c162f5bf569cff8bed6def705a899f depends: - __osx >=11.0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.1.0 h86d57b8_4_cpu - - libarrow-acero 18.1.0 h1dc2043_4_cpu - - libarrow-dataset 18.1.0 h1dc2043_4_cpu + - libarrow 18.1.0 h4a2f8bd_6_cpu + - libarrow-acero 18.1.0 hf07054f_6_cpu + - libarrow-dataset 18.1.0 hf07054f_6_cpu - libcxx >=18 - libprotobuf >=5.28.2,<5.28.3.0a0 license: Apache-2.0 - license_family: APACHE - size: 451982 - timestamp: 1733607898511 + size: 451623 + timestamp: 1733809487176 - kind: conda name: libblas version: 3.9.0 @@ -4331,12 +4324,12 @@ packages: timestamp: 1729089357313 - kind: conda name: libgoogle-cloud - version: 2.31.0 + version: 2.32.0 build: h3888205_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-2.31.0-h3888205_0.conda - sha256: 603b0bd55980f5bf97911b327c9e469cf953c482f112b561dc9c1c7608bbdc29 - md5: 5b3d9a0327c4f7c569162f10acaf6bb4 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-2.32.0-h3888205_0.conda + sha256: 36af2844ce8fafd477214d51117746144461132f76759a7d29963b4583b577be + md5: a40b948bf4eabcc1ce708c40ffd7c06d depends: - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 @@ -4345,21 +4338,21 @@ packages: - libgrpc >=1.67.1,<1.68.0a0 - libprotobuf >=5.28.2,<5.28.3.0a0 - libstdcxx >=13 - - openssl >=3.3.2,<4.0a0 + - openssl >=3.4.0,<4.0a0 constrains: - - libgoogle-cloud 2.31.0 *_0 + - libgoogle-cloud 2.32.0 *_0 license: Apache-2.0 license_family: Apache - size: 1246720 - timestamp: 1731122940037 + size: 1248560 + timestamp: 1733512309504 - kind: conda name: libgoogle-cloud - version: 2.31.0 + version: 2.32.0 build: h804f50b_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.31.0-h804f50b_0.conda - sha256: b2de99c83516236ff591d30436779f8345bcc11bb0ec76a7ca3a38a3b23b6423 - md5: 35ab838423b60f233391eb86d324a830 + url: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.32.0-h804f50b_0.conda + sha256: 126856add750013390dff664a3c3cd0f6f0cbbc683b0025a7ce9d1618968bc70 + md5: 3d96df4d6b1c88455e05b94ce8a14a53 depends: - __glibc >=2.17,<3.0.a0 - libabseil * cxx17* @@ -4369,21 +4362,21 @@ packages: - libgrpc >=1.67.1,<1.68.0a0 - libprotobuf >=5.28.2,<5.28.3.0a0 - libstdcxx >=13 - - openssl >=3.3.2,<4.0a0 + - openssl >=3.4.0,<4.0a0 constrains: - - libgoogle-cloud 2.31.0 *_0 + - libgoogle-cloud 2.32.0 *_0 license: Apache-2.0 license_family: Apache - size: 1248705 - timestamp: 1731122589027 + size: 1249557 + timestamp: 1733512191906 - kind: conda name: libgoogle-cloud - version: 2.31.0 + version: 2.32.0 build: h8d8be31_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-2.31.0-h8d8be31_0.conda - sha256: 184d650d55453a40935c128ea309088ae52e15a68cd87ab17ae7c77704251168 - md5: a338736f1514e6f999db8726fe0965b1 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-2.32.0-h8d8be31_0.conda + sha256: 722e49dbdc4486105d9f5b79a7ba4f9064602fe20c4015e97684c898ab8d3386 + md5: d7ab9e0eb7d55eac4943913073de61d7 depends: - __osx >=11.0 - libabseil * cxx17* @@ -4392,77 +4385,77 @@ packages: - libcxx >=18 - libgrpc >=1.67.1,<1.68.0a0 - libprotobuf >=5.28.2,<5.28.3.0a0 - - openssl >=3.3.2,<4.0a0 + - openssl >=3.4.0,<4.0a0 constrains: - - libgoogle-cloud 2.31.0 *_0 + - libgoogle-cloud 2.32.0 *_0 license: Apache-2.0 license_family: Apache - size: 873497 - timestamp: 1731121684939 + size: 876210 + timestamp: 1733512539476 - kind: conda name: libgoogle-cloud-storage - version: 2.31.0 + version: 2.32.0 build: h0121fbd_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.31.0-h0121fbd_0.conda - sha256: 3c38b0a80441f82323dc5a72b96c0dd7476bd5184fbfcdf825a8e15249c849af - md5: 568d6a09a6ed76337a7b97c84ae7c0f8 + url: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.32.0-h0121fbd_0.conda + sha256: d1b53d17df38b52a4bc6d1fe6af0e611d6480ce10b0af570c84bd38c8aa83b91 + md5: 877a5ec0431a5af83bf0cd0522bfe661 depends: - __glibc >=2.17,<3.0.a0 - libabseil - libcrc32c >=1.1.2,<1.2.0a0 - libcurl - libgcc >=13 - - libgoogle-cloud 2.31.0 h804f50b_0 + - libgoogle-cloud 2.32.0 h804f50b_0 - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - openssl license: Apache-2.0 license_family: Apache - size: 782150 - timestamp: 1731122728715 + size: 782108 + timestamp: 1733512329104 - kind: conda name: libgoogle-cloud-storage - version: 2.31.0 + version: 2.32.0 build: h7081f7f_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-storage-2.31.0-h7081f7f_0.conda - sha256: 01f5156584b816d34270a60a61f6b6561f2a01cb3b4eeb455a4e1808d763d486 - md5: 548fd1d31741ee6b13df4124db4a9f5f + url: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-storage-2.32.0-h7081f7f_0.conda + sha256: 609df2cf376ba66460f40143f835fc567cae4458df80705587cd2efd59c09bf1 + md5: 28f5ab5cf95170dfacd05d2bb301e573 depends: - __osx >=11.0 - libabseil - libcrc32c >=1.1.2,<1.2.0a0 - libcurl - libcxx >=18 - - libgoogle-cloud 2.31.0 h8d8be31_0 + - libgoogle-cloud 2.32.0 h8d8be31_0 - libzlib >=1.3.1,<2.0a0 - openssl license: Apache-2.0 license_family: Apache - size: 526858 - timestamp: 1731122580689 + size: 526895 + timestamp: 1733513644846 - kind: conda name: libgoogle-cloud-storage - version: 2.31.0 + version: 2.32.0 build: hb9b2b65_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-storage-2.31.0-hb9b2b65_0.conda - sha256: 1df4b7b59224d865a574003df12ee36d4a9939e8e7911b4472348730b9c2a0e8 - md5: 53897114489b4df10e1680bf189aa306 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-storage-2.32.0-hb9b2b65_0.conda + sha256: e120e7b6c9c9d25baa8ae903106babdd3c969523ae25278a615ed9de4bd0fc35 + md5: 925ab0ca33baca4fcfee585cecb94169 depends: - libabseil - libcrc32c >=1.1.2,<1.2.0a0 - libcurl - libgcc >=13 - - libgoogle-cloud 2.31.0 h3888205_0 + - libgoogle-cloud 2.32.0 h3888205_0 - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - openssl license: Apache-2.0 license_family: Apache - size: 737686 - timestamp: 1731123086764 + size: 737964 + timestamp: 1733512457785 - kind: conda name: libgrpc version: 1.67.1 @@ -4876,61 +4869,58 @@ packages: - kind: conda name: libparquet version: 18.1.0 - build: h34a048e_4_cpu - build_number: 4 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-h34a048e_4_cpu.conda - sha256: 488d82356fc4e6dfd6c10a4100c36af17db1b7eb72cce0bd8973014220dc3066 - md5: 46db27c16b29f48a37a40e3b2c9dcfe3 + build: h081d1f1_6_cpu + build_number: 6 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-h081d1f1_6_cpu.conda + sha256: c691a59f1ebb6cedbf827f49f6cf414e08b0eec911f589133e6a8321e8ac701c + md5: 68788df49ce7480187eb6387f15b2b67 depends: - - libarrow 18.1.0 ha2aff55_4_cpu + - __glibc >=2.17,<3.0.a0 + - libarrow 18.1.0 h44a453e_6_cpu - libgcc >=13 - libstdcxx >=13 - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 - license_family: APACHE - size: 1117278 - timestamp: 1733607904359 + size: 1204535 + timestamp: 1733810811118 - kind: conda name: libparquet version: 18.1.0 - build: hf4cc9e7_4_cpu - build_number: 4 + build: h636d7b7_6_cpu + build_number: 6 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-hf4cc9e7_4_cpu.conda - sha256: ccadab6395090b3cbc54243fcf5c6e49eaee46aaaa4221ca8ca7803a34bdc25d - md5: b462d962b5254923c5f65ce1c68dfc17 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-h636d7b7_6_cpu.conda + sha256: 88c1e810bede65c54f1ebc51c14400f9e8cf0fc1f88a8c0a99210e2f5dfed582 + md5: 9b333c3a38e55f6c1b8733222e22f528 depends: - __osx >=11.0 - - libarrow 18.1.0 h86d57b8_4_cpu + - libarrow 18.1.0 h4a2f8bd_6_cpu - libcxx >=18 - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 - license_family: APACHE - size: 873584 - timestamp: 1733607239103 + size: 873134 + timestamp: 1733809271282 - kind: conda name: libparquet version: 18.1.0 - build: hf4f6db6_4_cpu - build_number: 4 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-hf4f6db6_4_cpu.conda - sha256: f957b6ea5c4023448891f63f7b184a663d85aa5b2717b0e0ebfbfcf97b542751 - md5: f18b10bf19bb384183f2aa546e9f6f0a + build: hfc78867_6_cpu + build_number: 6 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-hfc78867_6_cpu.conda + sha256: 38aab34c422519c530d0e9a3e0ffd1624db1c1e163983c46ae341e831b2eb6b5 + md5: 1ab6d4a9a982920b9dc5f2c700777b27 depends: - - __glibc >=2.17,<3.0.a0 - - libarrow 18.1.0 h3b07799_4_cpu + - libarrow 18.1.0 h1b535d6_6_cpu - libgcc >=13 - libstdcxx >=13 - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 - license_family: APACHE - size: 1204859 - timestamp: 1733607834047 + size: 1117592 + timestamp: 1733810440129 - kind: conda name: libpng version: 1.6.44 @@ -5789,48 +5779,53 @@ packages: timestamp: 1733376089600 - kind: conda name: lz4-c - version: 1.9.4 - build: hb7217d7_0 + version: 1.10.0 + build: h286801f_1 + build_number: 1 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.9.4-hb7217d7_0.conda - sha256: fc343b8c82efe40819b986e29ba748366514e5ab94a1e1138df195af5f45fa24 - md5: 45505bec548634f7d05e02fb25262cb9 + url: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.10.0-h286801f_1.conda + sha256: 94d3e2a485dab8bdfdd4837880bde3dd0d701e2b97d6134b8806b7c8e69c8652 + md5: 01511afc6cc1909c5303cf31be17b44f depends: - - libcxx >=14.0.6 + - __osx >=11.0 + - libcxx >=18 license: BSD-2-Clause license_family: BSD - size: 141188 - timestamp: 1674727268278 + size: 148824 + timestamp: 1733741047892 - kind: conda name: lz4-c - version: 1.9.4 - build: hcb278e6_0 + version: 1.10.0 + build: h5888daf_1 + build_number: 1 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.9.4-hcb278e6_0.conda - sha256: 1b4c105a887f9b2041219d57036f72c4739ab9e9fe5a1486f094e58c76b31f5f - md5: 318b08df404f9c9be5712aaa5a6f0bb0 + url: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.10.0-h5888daf_1.conda + sha256: 47326f811392a5fd3055f0f773036c392d26fdb32e4d8e7a8197eed951489346 + md5: 9de5350a85c4a20c685259b889aa6393 depends: - - libgcc-ng >=12 - - libstdcxx-ng >=12 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 license: BSD-2-Clause license_family: BSD - size: 143402 - timestamp: 1674727076728 + size: 167055 + timestamp: 1733741040117 - kind: conda name: lz4-c - version: 1.9.4 - build: hd600fc2_0 + version: 1.10.0 + build: h5ad3122_1 + build_number: 1 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.9.4-hd600fc2_0.conda - sha256: 076870eb72411f41c46598c7582a2f3f42ba94c526a2d60a0c8f70a0a7a64429 - md5: 500145a83ed07ce79c8cef24252f366b + url: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.10.0-h5ad3122_1.conda + sha256: 67e55058d275beea76c1882399640c37b5be8be4eb39354c94b610928e9a0573 + md5: 6654e411da94011e8fbe004eacb8fe11 depends: - - libgcc-ng >=12 - - libstdcxx-ng >=12 + - libgcc >=13 + - libstdcxx >=13 license: BSD-2-Clause license_family: BSD - size: 163770 - timestamp: 1674727020254 + size: 184953 + timestamp: 1733740984533 - kind: conda name: markdown-it-py version: 3.0.0 @@ -5909,174 +5904,177 @@ packages: timestamp: 1733219945697 - kind: conda name: max - version: 24.6.0.dev2024120905 + version: 24.6.0.dev2024121016 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120905-release.conda - sha256: 37a6103a6b2c7886ed5837d41a819f1a127eef7e810b2b5ecfb03f7caf263514 - md5: b13d61319f43570ce681408a1b27d9d5 - depends: - - max-core ==24.6.0.dev2024120905 release - - max-python >=24.6.0.dev2024120905,<25.0a0 - - mojo-jupyter ==24.6.0.dev2024120905 release - - mblack ==24.6.0.dev2024120905 release + 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 license: LicenseRef-Modular-Proprietary - size: 9911 - timestamp: 1733721408716 + size: 9917 + timestamp: 1733849930254 - kind: conda name: max-core - version: 24.6.0.dev2024120905 + version: 24.6.0.dev2024121016 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120905-release.conda - sha256: 0f94138601ceab2c8b277c7d175d762840072cfdfd0ead7264fbd1ff9f70442d - md5: 00617be1a2fef13b5630d9cbe92f9d3c + url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024121016-release.conda + sha256: 9b26505259984bb428ab3ee931ae54762c7dc8169343eff23a77ebfbd04a9044 + md5: fc4ae46f8723642288111dd01e901813 depends: - - mblack ==24.6.0.dev2024120905 release + - mblack ==24.6.0.dev2024121016 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 247639885 - timestamp: 1733721408714 + size: 247664506 + timestamp: 1733849767240 - kind: conda name: max-core - version: 24.6.0.dev2024120905 + version: 24.6.0.dev2024121016 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120905-release.conda - sha256: 1aaf2ffb09d6a2aa6b65d76c381476eb88947470580a0d56909bfd578d5eb385 - md5: c7ff53814f0c254c75dc7ab8f0c66b38 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024121016-release.conda + sha256: 779ef6524a738c5f9c140f845d0febf9dbe321f76331dbd434a4d549251db0c2 + md5: 86075990f86559126140561a14c8aafc depends: - - mblack ==24.6.0.dev2024120905 release + - mblack ==24.6.0.dev2024121016 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 251498878 - timestamp: 1733721396377 + size: 251595828 + timestamp: 1733849930252 - kind: conda name: max-core - version: 24.6.0.dev2024120905 + version: 24.6.0.dev2024121016 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120905-release.conda - sha256: 00cc8ce6adc131b858df51423201b8f028aa944ac09e56c563a1108c22eaccd2 - md5: 71554a4c0e81a1034908bc1cb716b30b + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024121016-release.conda + sha256: 3f2e56d822eca8789ee72e6d1eaa95fa2d633fa5a4991f73b5cbf64d62e2d73d + md5: 1928c2f7f79e2587edf7dd1be10bb2f7 depends: - - mblack ==24.6.0.dev2024120905 release + - mblack ==24.6.0.dev2024121016 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 212030191 - timestamp: 1733721567995 + size: 212115307 + timestamp: 1733850300421 - kind: conda name: max-python - version: 24.6.0.dev2024120905 + version: 24.6.0.dev2024121016 build: 3.12release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120905-3.12release.conda - sha256: 43245b47050208329e85a69f2af24d42c622e92e1542334a6106eaadb6cbf0ff - md5: 9a6037de6672120d1d6d53673b699d5b + url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024121016-3.12release.conda + sha256: 6ad60d7c6c2234f3f02bc36267bfb0744c40dfcb70834710c9d90776db2a516f + md5: 7fef71eb6ab9bde6a60494f367ed0223 depends: - - max-core ==24.6.0.dev2024120905 release + - max-core ==24.6.0.dev2024121016 release - python 3.12.* - - pillow - fastapi - httpx - - numpy >=1.18,<2.0 - huggingface_hub + - numpy >=1.18,<2.0 - opentelemetry-api - opentelemetry-exporter-otlp-proto-http >=1.27.0 - opentelemetry-exporter-prometheus >=0.48b0 - opentelemetry-sdk >=1.27.0 + - pillow - pydantic-settings >=2.4.0,<3 - pydantic >=2.4.0,<3 - pyinstrument - python-json-logger - sse-starlette >=2.1.3,<3 - transformers + - typing_extensions - uvicorn - python_abi 3.12.* *_cp312 arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 123751303 - timestamp: 1733721408724 + size: 123894250 + timestamp: 1733849767250 - kind: conda name: max-python - version: 24.6.0.dev2024120905 + version: 24.6.0.dev2024121016 build: 3.12release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120905-3.12release.conda - sha256: fdedbc8a2ca34d0593e8b2175ca07c07d6d0564f138f535ebff02975ef463f55 - md5: bc9f6ce493d2beb1089e1e409bb373ba + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024121016-3.12release.conda + sha256: 98f0fb331b1f3eb89e1f0a7340d8364a8d5f84fc91f25bdd076bae8225d24950 + md5: 23c72404d9e7f8bc76745502b2e53609 depends: - - max-core ==24.6.0.dev2024120905 release + - max-core ==24.6.0.dev2024121016 release - python 3.12.* - - pillow - fastapi - httpx - - numpy >=1.18,<2.0 - huggingface_hub + - numpy >=1.18,<2.0 - opentelemetry-api - opentelemetry-exporter-otlp-proto-http >=1.27.0 - opentelemetry-exporter-prometheus >=0.48b0 - opentelemetry-sdk >=1.27.0 + - pillow - pydantic-settings >=2.4.0,<3 - pydantic >=2.4.0,<3 - pyinstrument - python-json-logger - sse-starlette >=2.1.3,<3 - transformers + - typing_extensions - uvicorn - python_abi 3.12.* *_cp312 arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 127400047 - timestamp: 1733721396388 + size: 127528623 + timestamp: 1733849930263 - kind: conda name: max-python - version: 24.6.0.dev2024120905 + version: 24.6.0.dev2024121016 build: 3.12release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120905-3.12release.conda - sha256: 0cd6b2e3bdc78483665045e91b8db7a8a3d6c85fbf4b8a44d6eb742a46361af1 - md5: c1b7eb7d1a43e28224bf41220ece9b58 + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024121016-3.12release.conda + sha256: a12ef8ce21aee4490a7cf307a6072eaf84cd6df4d3e75dfbf61e438efffd5fd4 + md5: 6acba84a184a311186a957ba3e374a12 depends: - - max-core ==24.6.0.dev2024120905 release + - max-core ==24.6.0.dev2024121016 release - python 3.12.* - - pillow - fastapi - httpx - - numpy >=1.18,<2.0 - huggingface_hub + - numpy >=1.18,<2.0 - opentelemetry-api - opentelemetry-exporter-otlp-proto-http >=1.27.0 - opentelemetry-exporter-prometheus >=0.48b0 - opentelemetry-sdk >=1.27.0 + - pillow - pydantic-settings >=2.4.0,<3 - pydantic >=2.4.0,<3 - pyinstrument - python-json-logger - sse-starlette >=2.1.3,<3 - transformers + - typing_extensions - uvicorn - python_abi 3.12.* *_cp312 arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 112450493 - timestamp: 1733721567998 + size: 112564915 + timestamp: 1733850300425 - kind: conda name: mblack - version: 24.6.0.dev2024120905 + version: 24.6.0.dev2024121016 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120905-release.conda - sha256: e302e262a58592b5b8614829237760967d685cb20a44e54981916eb6c2b6b7a2 - md5: b34a59910660011ad1f42bfc1ae4ae54 + url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024121016-release.conda + sha256: f9acaa65326bbc7f7e3158b1e20b0cdc7ac7da0ca925278566da7f80731146b5 + md5: 6e4496ad926e9f2e8c187f3c1cdd6a0c depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -6086,8 +6084,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130740 - timestamp: 1733721408720 + size: 130747 + timestamp: 1733849930259 - kind: conda name: mdurl version: 0.1.2 @@ -6106,21 +6104,21 @@ packages: timestamp: 1733255681319 - kind: conda name: mojo-jupyter - version: 24.6.0.dev2024120905 + version: 24.6.0.dev2024121016 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120905-release.conda - sha256: bb71277508a55875b6011651bc825599e26a47145ab1e9c4e7c2abd853200a00 - md5: 4fc85c9cb1efe841b69d339d4da5b3a1 + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024121016-release.conda + sha256: e2a2514e4570f219e25f3f6f948d9035723b80df4fb9209598f34af17239a4f6 + md5: 0b20302cee375040ce15e8b795d7cda4 depends: - - max-core ==24.6.0.dev2024120905 release + - max-core ==24.6.0.dev2024121016 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 11366 - timestamp: 1733721408720 + size: 23064 + timestamp: 1733849930259 - kind: conda name: multidict version: 6.1.0 @@ -6358,57 +6356,56 @@ packages: timestamp: 1707225809722 - kind: conda name: openjpeg - version: 2.5.2 - build: h0d9d63b_0 + version: 2.5.3 + build: h3f56577_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/openjpeg-2.5.2-h0d9d63b_0.conda - sha256: d83375856601bc67c11295b537548a937a6896ede9d0a51d78bf5e921ab07c6f - md5: fd2898519e839d5ceb778343f39a3176 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/openjpeg-2.5.3-h3f56577_0.conda + sha256: 92d310033e20538e896f4e4b1ea4205eb6604eee7c5c651c4965a0d8d3ca0f1d + md5: 04231368e4af50d11184b50e14250993 depends: - - libgcc-ng >=12 - - libpng >=1.6.43,<1.7.0a0 - - libstdcxx-ng >=12 - - libtiff >=4.6.0,<4.8.0a0 - - libzlib >=1.2.13,<2.0.0a0 + - libgcc >=13 + - libpng >=1.6.44,<1.7.0a0 + - libstdcxx >=13 + - libtiff >=4.7.0,<4.8.0a0 + - libzlib >=1.3.1,<2.0a0 license: BSD-2-Clause - license_family: BSD - size: 374964 - timestamp: 1709159226478 + size: 377796 + timestamp: 1733816683252 - kind: conda name: openjpeg - version: 2.5.2 - build: h488ebb8_0 + version: 2.5.3 + build: h5fbd93e_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.2-h488ebb8_0.conda - sha256: 5600a0b82df042bd27d01e4e687187411561dfc11cc05143a08ce29b64bf2af2 - md5: 7f2e286780f072ed750df46dc2631138 + url: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.3-h5fbd93e_0.conda + sha256: 5bee706ea5ba453ed7fd9da7da8380dd88b865c8d30b5aaec14d2b6dd32dbc39 + md5: 9e5816bc95d285c115a3ebc2f8563564 depends: - - libgcc-ng >=12 - - libpng >=1.6.43,<1.7.0a0 - - libstdcxx-ng >=12 - - libtiff >=4.6.0,<4.8.0a0 - - libzlib >=1.2.13,<2.0.0a0 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libpng >=1.6.44,<1.7.0a0 + - libstdcxx >=13 + - libtiff >=4.7.0,<4.8.0a0 + - libzlib >=1.3.1,<2.0a0 license: BSD-2-Clause - license_family: BSD - size: 341592 - timestamp: 1709159244431 + size: 342988 + timestamp: 1733816638720 - kind: conda name: openjpeg - version: 2.5.2 - build: h9f1df11_0 + version: 2.5.3 + build: h8a3d83b_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/openjpeg-2.5.2-h9f1df11_0.conda - sha256: 472d6eaffc1996e6af35ec8e91c967f472a536a470079bfa56383cc0dbf4d463 - md5: 5029846003f0bc14414b9128a1f7c84b + url: https://conda.anaconda.org/conda-forge/osx-arm64/openjpeg-2.5.3-h8a3d83b_0.conda + sha256: 1d59bc72ca7faac06d349c1a280f5cfb8a57ee5896f1e24225a997189d7418c7 + md5: 4b71d78648dbcf68ce8bf22bb07ff838 depends: - - libcxx >=16 - - libpng >=1.6.43,<1.7.0a0 - - libtiff >=4.6.0,<4.8.0a0 - - libzlib >=1.2.13,<2.0.0a0 + - __osx >=11.0 + - libcxx >=18 + - libpng >=1.6.44,<1.7.0a0 + - libtiff >=4.7.0,<4.8.0a0 + - libzlib >=1.3.1,<2.0a0 license: BSD-2-Clause - license_family: BSD - size: 316603 - timestamp: 1709159627299 + size: 319362 + timestamp: 1733816781741 - kind: conda name: openssl version: 3.4.0 @@ -6471,6 +6468,7 @@ packages: - python >=3.9 - setuptools >=16.0 license: Apache-2.0 + license_family: APACHE size: 44242 timestamp: 1733734361129 - kind: conda @@ -6549,12 +6547,13 @@ packages: - kind: conda name: opentelemetry-sdk version: 1.28.2 - build: pyhff2d567_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.28.2-pyhff2d567_0.conda - sha256: 67c5be0f2b81b329d273f1f24f985a53e000b4b42b8338b56375d75aa8da5bb1 - md5: 742115714b2cbfa599e9f78495233d1a + url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.28.2-pyhd8ed1ab_1.conda + sha256: 9f48ec749f0738910fdd6750f9655f16949182b5379dd2c0771104d3e74bfd74 + md5: bfe29ef92f3a04ab8e59e4f97b28785c depends: - opentelemetry-api 1.28.2 - opentelemetry-semantic-conventions 0.49b2 @@ -6563,8 +6562,8 @@ packages: - typing_extensions >=3.7.4 license: Apache-2.0 license_family: APACHE - size: 78017 - timestamp: 1732070451972 + size: 78090 + timestamp: 1733768582451 - kind: conda name: opentelemetry-semantic-conventions version: 0.49b2 @@ -6580,72 +6579,76 @@ packages: - opentelemetry-api 1.28.2 - python >=3.9 license: Apache-2.0 + license_family: APACHE size: 81099 timestamp: 1733749104727 - kind: conda name: orc version: 2.0.3 - build: h121fd32_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/orc-2.0.3-h121fd32_0.conda - sha256: 4759fd0c3f06c035146100e22ee36a312c9a8226654bd2973e9ca9ac5de5cf1f - md5: 39995f7406b949c1bef74f0c7277afb3 + build: h3c55218_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/orc-2.0.3-h3c55218_1.conda + sha256: 154b26bc4d586de33765a155c9b79ebd7f5bb36c2bbf4b8854e1631bca8d21af + md5: 0a51a3cf028b845c46ec0d1ea2d18629 depends: - - __osx >=11.0 - - libcxx >=18 + - libgcc >=13 - libprotobuf >=5.28.2,<5.28.3.0a0 + - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - - lz4-c >=1.9.3,<1.10.0a0 + - lz4-c >=1.10.0,<1.11.0a0 - snappy >=1.2.1,<1.3.0a0 - tzdata - zstd >=1.5.6,<1.6.0a0 license: Apache-2.0 license_family: Apache - size: 438254 - timestamp: 1731665228473 + size: 1165179 + timestamp: 1733509923825 - kind: conda name: orc version: 2.0.3 - build: h90de224_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/orc-2.0.3-h90de224_0.conda - sha256: 7969db50268b65c2edb14be2e22bfff5656f36336eb5421d53030d29c037fec1 - md5: c07ba3025fe20ccbab9cd7c615953d6f + build: h97ab989_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/orc-2.0.3-h97ab989_1.conda + sha256: 9de7e2746fde57c9b7f08ee87142014f6bb9b2d3a506839ea3e98baa99711576 + md5: 2f46eae652623114e112df13fae311cf depends: + - __glibc >=2.17,<3.0.a0 - libgcc >=13 - libprotobuf >=5.28.2,<5.28.3.0a0 - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - - lz4-c >=1.9.3,<1.10.0a0 + - lz4-c >=1.10.0,<1.11.0a0 - snappy >=1.2.1,<1.3.0a0 - tzdata - zstd >=1.5.6,<1.6.0a0 license: Apache-2.0 license_family: Apache - size: 1170439 - timestamp: 1731665024334 + size: 1189462 + timestamp: 1733509801323 - kind: conda name: orc version: 2.0.3 - build: he039a57_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/orc-2.0.3-he039a57_0.conda - sha256: 9657ae19d6541fe67a61ef0c26ba1012ec508920b49afa897962c7d4b263ba35 - md5: 052499acd6d6b79952197a13b23e2600 + build: hbcee414_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/orc-2.0.3-hbcee414_1.conda + sha256: e5e72438a3cd967ebc774070e8c49500d2d6d4175f349400b327fee75d3bfc05 + md5: e808cf7819eaa1735c8790d7f9f482c7 depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 + - __osx >=11.0 + - libcxx >=18 - libprotobuf >=5.28.2,<5.28.3.0a0 - - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - - lz4-c >=1.9.3,<1.10.0a0 + - lz4-c >=1.10.0,<1.11.0a0 - snappy >=1.2.1,<1.3.0a0 - tzdata - zstd >=1.5.6,<1.6.0a0 license: Apache-2.0 license_family: Apache - size: 1187593 - timestamp: 1731664886527 + size: 437391 + timestamp: 1733510118673 - kind: conda name: packaging version: '24.2' @@ -7240,20 +7243,20 @@ packages: - kind: conda name: pydantic-settings version: 2.6.1 - build: pyh3cfb1c2_0 + build: pyh3cfb1c2_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.6.1-pyh3cfb1c2_0.conda - sha256: b3f331d69f7f3b3272e8e203211bfe39ba728a61fadc9b5c2f091b50084f0187 - md5: 412f950a65ceea20b06263f65d689f6b + url: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.6.1-pyh3cfb1c2_1.conda + sha256: 8cc37e827f0098d07743f57f968283cefce6c11562d9241aba990acc23aedb56 + md5: deabf8afc8d987f20174ef0d8d9b549e depends: - pydantic >=2.7.0 - - python >=3.8 + - python >=3.9 - python-dotenv >=0.21.0 license: MIT - license_family: MIT - size: 30618 - timestamp: 1730473755879 + size: 30832 + timestamp: 1733851937909 - kind: conda name: pygments version: 2.18.0 From 884743165b1f8fe4236201444ce2931bffdb4976 Mon Sep 17 00:00:00 2001 From: Evan Ovadia Date: Tue, 10 Dec 2024 13:15:17 -0500 Subject: [PATCH 075/509] [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 076/509] [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 077/509] [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 078/509] [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 079/509] [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 080/509] [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 081/509] [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 082/509] [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 083/509] [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 084/509] 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 From 9288faa77fbdb109dc9b198f8effbeb35876f3f4 Mon Sep 17 00:00:00 2001 From: Walter Erquinigo Date: Wed, 11 Dec 2024 12:27:06 -0500 Subject: [PATCH 085/509] [Mojo tooling] Update changelog MODULAR_ORIG_COMMIT_REV_ID: 8d06b242b62b243f9a09f1dd8a20d75f93c40a64 --- docs/changelog.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/docs/changelog.md b/docs/changelog.md index cbae1be090..341b25367e 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -30,3 +30,11 @@ what we publish. ### ❌ Removed ### 🛠️ Fixed + +- The Mojo Kernel for Jupyter Notebooks is working again on nightly releases. + +- The command `mojo debug --vscode` now sets the current working directory + properly. + +- The Mojo Language Server doesn't crash anymore on empty **init**.mojo files. + [Issue #3826](https://github.com/modularml/mojo/issues/3826). From bf8869c54eff95a1c8fb6401234860c264fd6e31 Mon Sep 17 00:00:00 2001 From: Patrick Rachford Date: Wed, 11 Dec 2024 13:11:47 -0800 Subject: [PATCH 086/509] [docs] Standardize straight quotation marks and apostrophes Replace curly quotes/apostrophes (`'`) with straight ones (`'`) throughout developer documentation for consistency. MODULAR_ORIG_COMMIT_REV_ID: 7177e1beaa2aaaff3e1421f69d623f1df6eb37e4 --- docs/manual/functions.mdx | 2 +- docs/manual/lifecycle/death.mdx | 6 +++--- docs/manual/lifecycle/life.mdx | 2 +- docs/manual/pointers/index.mdx | 30 +++++++++++++++--------------- docs/manual/structs.mdx | 8 ++++---- docs/manual/types.mdx | 2 +- docs/tools/debugging.mdx | 2 +- docs/tools/testing.mdx | 8 ++++---- 8 files changed, 30 insertions(+), 30 deletions(-) diff --git a/docs/manual/functions.mdx b/docs/manual/functions.mdx index 071255ec24..46cd3f5aaa 100644 --- a/docs/manual/functions.mdx +++ b/docs/manual/functions.mdx @@ -552,7 +552,7 @@ Thus, you can also pass a `StringLiteral` to a function that expects a `String`. When resolving an overloaded function call, the Mojo compiler tries each candidate function and uses the one that works (if only one version works), or it picks the closest match (if it can determine a close match), or it reports -that the call is ambiguous (if it can’t figure out which one to pick). +that the call is ambiguous (if it can't figure out which one to pick). If the compiler can't figure out which function to use, you can resolve the ambiguity by explicitly casting your value to a supported argument type. For diff --git a/docs/manual/lifecycle/death.mdx b/docs/manual/lifecycle/death.mdx index 2f7ee808f7..864f06e365 100644 --- a/docs/manual/lifecycle/death.mdx +++ b/docs/manual/lifecycle/death.mdx @@ -105,7 +105,7 @@ the end of the code scope to destroy values): because the destructor call always happens before the tail call. Additionally, Mojo's ASAP destruction works great within Python-style `def` -functions. That's because Python doesn’t really provide scopes beyond a +functions. That's because Python doesn't really provide scopes beyond a function scope, so the Python garbage collector cleans up resources more often than a scope-based destruction policy would. However, Mojo does not use a garbage collector, so the ASAP destruction policy provides destruction @@ -276,7 +276,7 @@ object. Mojo's policy here is powerful and intentionally straight-forward: fields can be temporarily transferred, but the "whole object" must be constructed with the -aggregate type’s initializer and destroyed with the aggregate destructor. This +aggregate type's initializer and destroyed with the aggregate destructor. This means it's impossible to create an object by initializing only its fields, and it's likewise impossible to destroy an object by destroying only its fields. @@ -316,7 +316,7 @@ to a new instance (read more about the [move constructor](/mojo/manual/lifecycle/life#move-constructor)), while `__del__()` implements the deletion logic for its `self`. As such, they both need to own and transform elements of the `owned` value, and they -definitely don’t want the original `owned` value's destructor to also run—that +definitely don't want the original `owned` value's destructor to also run—that could result in a double-free error, and in the case of the `__del__()` method, it would become an infinite loop. diff --git a/docs/manual/lifecycle/life.mdx b/docs/manual/lifecycle/life.mdx index 360ec57c33..dbdd5f11cd 100644 --- a/docs/manual/lifecycle/life.mdx +++ b/docs/manual/lifecycle/life.mdx @@ -656,7 +656,7 @@ things like a single integer or floating point number. We call these types and destroyed without invoking any custom lifecycle methods. Trivial types are the most common types that surround us, and from a language -perspective, Mojo doesn’t need special support for these written in a struct. +perspective, Mojo doesn't need special support for these written in a struct. Usually, these values are so tiny that they should be passed around in CPU registers, not indirectly through memory. diff --git a/docs/manual/pointers/index.mdx b/docs/manual/pointers/index.mdx index 075fa33ea5..a254c77bc5 100644 --- a/docs/manual/pointers/index.mdx +++ b/docs/manual/pointers/index.mdx @@ -45,7 +45,7 @@ print(ptr[]) ## Pointer terminology -Before we jump into the pointer types, here are a few terms you’ll run across. Some +Before we jump into the pointer types, here are a few terms you'll run across. Some of them may already be familiar to you. - **Safe pointers**: are designed to prevent memory errors. Unless you use one @@ -54,7 +54,7 @@ of them may already be familiar to you. use-after-free. - **Nullable pointers**: can point to an invalid memory location (typically 0, -or a “null pointer”). Safe pointers aren’t nullable. +or a “null pointer”). Safe pointers aren't nullable. - **Smart pointers**: own their pointees, which means that the value they point to may be deallocated when the pointer itself is destroyed. Non-owning @@ -66,10 +66,10 @@ or a “null pointer”). Safe pointers aren’t nullable. allocation can either be implicit (that is, performed automatically when initializing a pointer with a value) or explicit. -- **Uninitialized memory**: refers to memory locations that haven’t been +- **Uninitialized memory**: refers to memory locations that haven't been initialized with a value, which may therefore contain random data. - Newly-allocated memory is uninitialized. The safe pointer types don’t allow - users to access memory that’s uninitialized. Unsafe pointers can allocate a + Newly-allocated memory is uninitialized. The safe pointer types don't allow + users to access memory that's uninitialized. Unsafe pointers can allocate a block of uninitialized memory locations and then initialize them one at a time. Being able to access uninitialized memory is unsafe by definition. @@ -93,7 +93,7 @@ The Mojo standard library includes several pointer types with different characteristics: - [`Pointer`](/mojo/stdlib/memory/pointer/Pointer) is a safe pointer that points - to a single value that it doesn’t own. + to a single value that it doesn't own. - [`OwnedPointer`](/mojo/stdlib/memory/owned_pointer/OwnedPointer) is a smart pointer that points to a single value, and maintains exclusive ownership of @@ -139,10 +139,10 @@ The following sections provide more details on each pointer type. ## `Pointer` The [`Pointer`](/mojo/stdlib/memory/pointer/Pointer) type is a safe pointer that -points to a initialized value that it doesn’t own. Some example use cases for a +points to a initialized value that it doesn't own. Some example use cases for a `Pointer` include: -- Storing a reference to a related type. For example, a list’s iterator object +- Storing a reference to a related type. For example, a list's iterator object might hold a `Pointer` back to the original list. - Passing the memory location for a single value to external code via @@ -181,11 +181,11 @@ either `Movable`, `Copyable`, or `ExplicitlyCopyable`. Since an `OwnedPointer` is designed to enforce single ownership, the pointer itself can be moved, but not copied. -Note: Currently, you can’t create an `Optional[OwnedPointer[T]]` because the +Note: Currently, you can't create an `Optional[OwnedPointer[T]]` because the `Optional` type only works with types that are both movable and copyable. This restricts some use cases that would otherwise be a natural fit for`OwnedPointer`, including self-referential data structures like linked lists -and trees. (Until this use case is supported for `OwnedPointer`, it’s possible +and trees. (Until this use case is supported for `OwnedPointer`, it's possible to use`ArcPointer` where you need a smart pointer that can be `Optional`.) ## `ArcPointer` @@ -241,19 +241,19 @@ def main(): Note: The reference count is stored using an [`Atomic`]([/mojo/stdlib/os/atomic/Atomic](https://docs.modular-staging.com/mojo/stdlib/os/atomic/Atomic)) value to ensure that updates to the reference count are thread-safe. However, -Mojo doesn’t currently enforce exclusive access across thread boundaries, so -it’s possible to form race conditions. +Mojo doesn't currently enforce exclusive access across thread boundaries, so +it's possible to form race conditions. ## UnsafePointer [`UnsafePointer`](/mojo/stdlib/memory/unsafe_pointer/UnsafePointer) is a low-level pointer that can access a block of contiguous memory locations, which -might be uninitialized. It’s analogous to a raw pointer in the C and C++ +might be uninitialized. It's analogous to a raw pointer in the C and C++ programming languages. `UnsafePointer` provides unsafe methods for initializing -and destroying stored values, as well as for accessing the values once they’re +and destroying stored values, as well as for accessing the values once they're initialized. -As the name suggests, `UnsafePointer` doesn’t provide any memory safety +As the name suggests, `UnsafePointer` doesn't provide any memory safety guarantees, so you should reserve it for cases when none of the other pointer types will do the job. Here are some use cases where you might want to use an `UnsafePointer`: diff --git a/docs/manual/structs.mdx b/docs/manual/structs.mdx index 7a32bb323d..818058ba4c 100644 --- a/docs/manual/structs.mdx +++ b/docs/manual/structs.mdx @@ -195,15 +195,15 @@ Syntactically, the biggest difference compared to a Python class is that all fields in a struct must be explicitly declared with `var`. In Mojo, the structure and contents of a struct are set at compile time and -can’t be changed while the program is running. Unlike in Python, where you can -add, remove, or change attributes of an object on the fly, Mojo doesn’t allow +can't be changed while the program is running. Unlike in Python, where you can +add, remove, or change attributes of an object on the fly, Mojo doesn't allow that for structs. However, the static nature of structs helps Mojo run your code faster. The -program knows exactly where to find the struct’s information and how to use it +program knows exactly where to find the struct's information and how to use it without any extra steps or delays at runtime. -Mojo’s structs also work really well with features you might already know from +Mojo's structs also work really well with features you might already know from Python, like operator overloading (which lets you change how math symbols like `+` and `-` work with your own data, using [special methods](#special-methods)). diff --git a/docs/manual/types.mdx b/docs/manual/types.mdx index 4f276c82f9..ee6ddcf586 100644 --- a/docs/manual/types.mdx +++ b/docs/manual/types.mdx @@ -16,7 +16,7 @@ There are a some types that aren't defined as structs: signal "no value." Mojo comes with a standard library that provides a number of useful types and -utility functions. These standard types aren’t privileged. Each of the standard +utility functions. These standard types aren't privileged. Each of the standard library types is defined just like user-defined types—even basic types like [`Int`](/mojo/stdlib/builtin/int/Int) and [`String`](/mojo/stdlib/collections/string/String). But these standard library diff --git a/docs/tools/debugging.mdx b/docs/tools/debugging.mdx index 8631b5cc71..6672ded32d 100644 --- a/docs/tools/debugging.mdx +++ b/docs/tools/debugging.mdx @@ -341,7 +341,7 @@ The debugger currently has the following limitations: * When stepping out of a function, the returned value is not displayed. -* LLDB doesn’t support stopping or resuming individual threads. +* LLDB doesn't support stopping or resuming individual threads. ### Breakpoints diff --git a/docs/tools/testing.mdx b/docs/tools/testing.mdx index ef10b459cf..287e40c690 100644 --- a/docs/tools/testing.mdx +++ b/docs/tools/testing.mdx @@ -14,7 +14,7 @@ consists of a set of assertions defined as part of the ## Get started -Let’s start with a simple example of writing and running Mojo tests. +Let's start with a simple example of writing and running Mojo tests. ### 1. Write tests @@ -106,7 +106,7 @@ its error message. The Mojo standard library includes a [`testing`](/mojo/stdlib/testing/testing/) module that defines several assertion functions for implementing tests. Each -assertion returns `None` if its condition is met or raises an error if it isn’t. +assertion returns `None` if its condition is met or raises an error if it isn't. * [`assert_true()`](/mojo/stdlib/testing/testing/assert_true): Asserts that the input value is `True`. @@ -597,8 +597,8 @@ a += 1 Test suite scopes do *not* nest. In other words, the test suite scope of a module is completely independent of the test suite scope of a function or struct -defined within that module. For example, this means that if a module’s test -suite creates a variable, that variable is *not* accessible to a function’s test +defined within that module. For example, this means that if a module's test +suite creates a variable, that variable is *not* accessible to a function's test suite within the same module. ::: From 9e31af8b08571477777273d3cf3372ba0808ea02 Mon Sep 17 00:00:00 2001 From: Anand Pratap Singh <628125+anandpratap@users.noreply.github.com> Date: Wed, 11 Dec 2024 16:47:58 -0500 Subject: [PATCH 087/509] [stdlib] Selectively revert "[stdlib][GPU] Fix invalid constant addr space" Use address space value of 5 for shared memory on all devices. MODULAR_ORIG_COMMIT_REV_ID: b2dfc4c7ec71e33053b09449a338a795ef322aff --- stdlib/src/memory/pointer.mojo | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/stdlib/src/memory/pointer.mojo b/stdlib/src/memory/pointer.mojo index f3833563f3..1ffd5528f8 100644 --- a/stdlib/src/memory/pointer.mojo +++ b/stdlib/src/memory/pointer.mojo @@ -42,7 +42,7 @@ struct _GPUAddressSpace(EqualityComparable): """Shared address space.""" alias CONSTANT = AddressSpace(4) """Constant address space.""" - alias LOCAL = AddressSpace(5) if is_nvidia_gpu() else AddressSpace(3) + alias LOCAL = AddressSpace(5) """Local address space.""" @always_inline("nodebug") From e166e905986c394739bdc5cd29840b80560b7a07 Mon Sep 17 00:00:00 2001 From: Walter Erquinigo Date: Wed, 11 Dec 2024 20:27:15 -0500 Subject: [PATCH 088/509] [Mojo tooling] Expose struct signatures in the LSP and doc gen - Add a signature field in struct fields in the doc generator - Expose this signature in the symbol outline throught the LSP - Expose the list of traits in the hover popup thorugh the LSP MODULAR_ORIG_COMMIT_REV_ID: 5ef3f95a520cebda8000daeea2873a6fe55ccaf8 --- docs/changelog.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/docs/changelog.md b/docs/changelog.md index 341b25367e..27f3f08ff6 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -27,6 +27,10 @@ what we publish. - mblack (aka `mojo format`) no longer formats non-mojo files. This prevents unexpected formatting of python files. +- Full struct signature information is now exposed in the documentation + generator, and in the symbol outline and hover markdown via the Mojo Language + Server. + ### ❌ Removed ### 🛠️ Fixed From 4d177f12f4b97788e3b8f038ee071f2b2303a3ce Mon Sep 17 00:00:00 2001 From: modularbot Date: Thu, 12 Dec 2024 16:18:56 +0000 Subject: [PATCH 089/509] Update lockfiles to point to latest nightly version: 25.1.0.dev2024121214 --- examples/life/magic.lock | 301 +++++++++++++++--------------- examples/magic.lock | 301 +++++++++++++++--------------- examples/notebooks/magic.lock | 341 +++++++++++++++++----------------- examples/operators/magic.lock | 301 +++++++++++++++--------------- magic.lock | 301 +++++++++++++++--------------- 5 files changed, 775 insertions(+), 770 deletions(-) diff --git a/examples/life/magic.lock b/examples/life/magic.lock index 9fa015dd3f..11ef646bda 100644 --- a/examples/life/magic.lock +++ b/examples/life/magic.lock @@ -113,7 +113,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libcap-2.71-h39aace5_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-25_linux64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libcrc32c-1.1.2-h9c3ff4c_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.10.1-hbbe4b11_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.11.1-h332b0f4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libdb-6.2.32-h9c3ff4c_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.22-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20191231-he28a2e2_2.tar.bz2 @@ -170,12 +170,12 @@ 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-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.modular.com/max-nightly/noarch/max-25.1.0.dev2024121214-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024121214-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024121214-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121214-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-25.1.0.dev2024121105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024121214-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_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.15-py312h98912ed_1.conda @@ -254,7 +254,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda @@ -265,7 +265,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/uvloop-0.21.0-py312h66e93f0_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/watchfiles-1.0.0-py312h12e396e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/watchfiles-1.0.3-py312h12e396e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/websockets-14.1-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.17.0-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libice-1.1.1-hb9d3cd8_1.conda @@ -390,7 +390,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcap-2.71-h51d75a7_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-25_linuxaarch64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcrc32c-1.1.2-h01db608_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcurl-8.10.1-h3ec0cbf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcurl-8.11.1-h6702fde_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libdb-6.2.32-h01db608_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libdeflate-1.22-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20191231-he28a2e2_2.tar.bz2 @@ -447,12 +447,12 @@ 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-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.modular.com/max-nightly/noarch/max-25.1.0.dev2024121214-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024121214-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024121214-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121214-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-25.1.0.dev2024121105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024121214-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_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.15-py312hdd3e373_1.conda @@ -531,7 +531,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py312h52516f5_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda @@ -542,7 +542,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/uvloop-0.21.0-py312hb2c0f52_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/watchfiles-1.0.0-py312h8cbf658_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/watchfiles-1.0.3-py312h8cbf658_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/websockets-14.1-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/wrapt-1.17.0-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libice-1.1.1-h57736b2_1.conda @@ -658,7 +658,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlienc-1.1.0-hd74edd7_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-25_osxarm64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcrc32c-1.1.2-hbdafb3b_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.10.1-h13a7ad3_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.11.1-h73640d1_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.5-ha82da77_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.22-hd74edd7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20191231-hc8eb9b7_2.tar.bz2 @@ -707,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-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.modular.com/max-nightly/noarch/max-25.1.0.dev2024121214-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024121214-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024121214-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121214-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-25.1.0.dev2024121105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024121214-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 @@ -789,7 +789,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda @@ -800,7 +800,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/uvloop-0.21.0-py312h0bf5046_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/watchfiles-1.0.0-py312hcd83bfe_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/watchfiles-1.0.3-py312hcd83bfe_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/websockets-14.1-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/wrapt-1.17.0-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxau-1.0.11-hd74edd7_1.conda @@ -4960,65 +4960,65 @@ packages: timestamp: 1633683992603 - kind: conda name: libcurl - version: 8.10.1 - build: h13a7ad3_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.10.1-h13a7ad3_0.conda - sha256: 983a977c5627f975a930542c8aabb46089ec6ea72f28d9c4d3ee8eafaf2fc25a - md5: d84030d0863ffe7dea00b9a807fee961 + version: 8.11.1 + build: h332b0f4_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.11.1-h332b0f4_0.conda + sha256: 3cd4075b2a7b5562e46c8ec626f6f9ca57aeecaa94ff7df57eca26daa94c9906 + md5: 2b3e0081006dc21e8bf53a91c83a055c depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 - krb5 >=1.21.3,<1.22.0a0 - - libnghttp2 >=1.58.0,<2.0a0 - - libssh2 >=1.11.0,<2.0a0 + - libgcc >=13 + - libnghttp2 >=1.64.0,<2.0a0 + - libssh2 >=1.11.1,<2.0a0 - libzlib >=1.3.1,<2.0a0 - - openssl >=3.3.2,<4.0a0 + - openssl >=3.4.0,<4.0a0 - zstd >=1.5.6,<1.6.0a0 license: curl license_family: MIT - size: 379948 - timestamp: 1726660033582 + size: 423011 + timestamp: 1733999897624 - kind: conda name: libcurl - version: 8.10.1 - build: h3ec0cbf_0 + version: 8.11.1 + build: h6702fde_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libcurl-8.10.1-h3ec0cbf_0.conda - sha256: 7c4983001c727f713b4448280ed4803d301087c184cd2819ba0b788ca62b73d1 - md5: f43539295c4e0cd15202d41bc72b8a26 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libcurl-8.11.1-h6702fde_0.conda + sha256: 9fc65d21a58f4aad1bc39dfb94a178893aeb035850c5cf0ed9736674279f390b + md5: 7dec1cd271c403d1636bda5aa388a55d depends: - krb5 >=1.21.3,<1.22.0a0 - libgcc >=13 - - libnghttp2 >=1.58.0,<2.0a0 - - libssh2 >=1.11.0,<2.0a0 + - libnghttp2 >=1.64.0,<2.0a0 + - libssh2 >=1.11.1,<2.0a0 - libzlib >=1.3.1,<2.0a0 - - openssl >=3.3.2,<4.0a0 + - openssl >=3.4.0,<4.0a0 - zstd >=1.5.6,<1.6.0a0 license: curl license_family: MIT - size: 439171 - timestamp: 1726659843118 + size: 440737 + timestamp: 1733999835504 - kind: conda name: libcurl - version: 8.10.1 - build: hbbe4b11_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.10.1-hbbe4b11_0.conda - sha256: 54e6114dfce566c3a22ad3b7b309657e3600cdb668398e95f1301360d5d52c99 - md5: 6e801c50a40301f6978c53976917b277 + version: 8.11.1 + build: h73640d1_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.11.1-h73640d1_0.conda + sha256: f47c35938144c23278987c7d12096f6a42d7c850ffc277222b032073412383b6 + md5: 46d7524cabfdd199bffe63f8f19a552b depends: - - __glibc >=2.17,<3.0.a0 + - __osx >=11.0 - krb5 >=1.21.3,<1.22.0a0 - - libgcc >=13 - - libnghttp2 >=1.58.0,<2.0a0 - - libssh2 >=1.11.0,<2.0a0 + - libnghttp2 >=1.64.0,<2.0a0 + - libssh2 >=1.11.1,<2.0a0 - libzlib >=1.3.1,<2.0a0 - - openssl >=3.3.2,<4.0a0 + - openssl >=3.4.0,<4.0a0 - zstd >=1.5.6,<1.6.0a0 license: curl license_family: MIT - size: 424900 - timestamp: 1726659794676 + size: 385098 + timestamp: 1734000160270 - kind: conda name: libcxx version: 19.1.5 @@ -7684,76 +7684,76 @@ packages: timestamp: 1733219945697 - kind: conda name: max - version: 25.1.0.dev2024121105 + version: 25.1.0.dev2024121214 build: release subdir: noarch noarch: python - 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 + url: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024121214-release.conda + sha256: eeadd1df827192ff0d8af9e48fc61238f742fb14976023b838413283a4e1798b + md5: 2447f44e5547cfa431e089835e7532b1 + depends: + - max-core ==25.1.0.dev2024121214 release + - max-python >=25.1.0.dev2024121214,<26.0a0 + - mojo-jupyter ==25.1.0.dev2024121214 release + - mblack ==25.1.0.dev2024121214 release license: LicenseRef-Modular-Proprietary - size: 9923 - timestamp: 1733894234676 + size: 9920 + timestamp: 1734015648611 - kind: conda name: max-core - version: 25.1.0.dev2024121105 + version: 25.1.0.dev2024121214 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024121105-release.conda - sha256: 23a9b3a31eddf232c2d91b45362eb79b0a8dfd4842e7d41f2719aa40bc53c37a - md5: c95a33b823ca2f36431033c1122212ba + url: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024121214-release.conda + sha256: 7b4cfef5dabe1854572b902f5a85df32c115133cb230c074db466199cedd2988 + md5: a4a78932539c233f70b75680656a128b depends: - - mblack ==25.1.0.dev2024121105 release + - mblack ==25.1.0.dev2024121214 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 247768202 - timestamp: 1733894244133 + size: 247826462 + timestamp: 1734015648609 - kind: conda name: max-core - version: 25.1.0.dev2024121105 + version: 25.1.0.dev2024121214 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024121105-release.conda - sha256: 22bb680d1e11a3640ae28b9d9faafa089b92a2fd6474ebdcc6b5c0e4da618664 - md5: 6e976d732a16860852a22686f7334ce4 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024121214-release.conda + sha256: e264dadaabf3542d88790a591e5d0007e810d67b777b7f298d71a7e04c1ceb34 + md5: cfffd2826ce46aaefb9553bb965769b6 depends: - - mblack ==25.1.0.dev2024121105 release + - mblack ==25.1.0.dev2024121214 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 251679560 - timestamp: 1733894234674 + size: 251673819 + timestamp: 1734015642960 - kind: conda name: max-core - version: 25.1.0.dev2024121105 + version: 25.1.0.dev2024121214 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024121105-release.conda - sha256: 5733d843377af66e94de2dd91cd8872d8f49baac81c6120ce2294a866d2f227f - md5: 84d6da2eb7585c49e1f71deec028c11a + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024121214-release.conda + sha256: 5f59a57c7bc3832028063c308ee55f3ba5dae88052e08745ae827f971827fb2e + md5: c55ad17758cdcd82a6d62c8d5fa6c50a depends: - - mblack ==25.1.0.dev2024121105 release + - mblack ==25.1.0.dev2024121214 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 212215227 - timestamp: 1733894448570 + size: 212287379 + timestamp: 1734016112398 - kind: conda name: max-python - version: 25.1.0.dev2024121105 + version: 25.1.0.dev2024121214 build: 3.12release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024121105-3.12release.conda - sha256: ad71429b6fa8d4e972a20a0a8f684420b6f162fdb1b22d36c32758a4f0f35d54 - md5: b7acc92cf44907a4c460026ad9c2cc45 + url: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024121214-3.12release.conda + sha256: e275ce2ee258e9b3e5d335758728c62639307b5fbc26ff42137a2d9ba6cef314 + md5: 865bcedcfbd6d2064ca8d896094148b6 depends: - - max-core ==25.1.0.dev2024121105 release + - max-core ==25.1.0.dev2024121214 release - python 3.12.* - fastapi - httpx @@ -7776,18 +7776,18 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 123912464 - timestamp: 1733894244143 + size: 124001405 + timestamp: 1734015648618 - kind: conda name: max-python - version: 25.1.0.dev2024121105 + version: 25.1.0.dev2024121214 build: 3.12release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024121105-3.12release.conda - sha256: 26f0f84532443a5e78098c17127dd0a04ca05a7c107e50aebc6b92abc9fe8a9f - md5: c4908b0138b01e14f9a8002624b42e25 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024121214-3.12release.conda + sha256: fc4ed0f25e87e5ef9082bf23b03f53f9a5f16e00493f5566820c7c62a2038e58 + md5: 705a3d5afebfa45a4d0a97fdabaad520 depends: - - max-core ==25.1.0.dev2024121105 release + - max-core ==25.1.0.dev2024121214 release - python 3.12.* - fastapi - httpx @@ -7810,18 +7810,18 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 127580719 - timestamp: 1733894234684 + size: 127725024 + timestamp: 1734015642970 - kind: conda name: max-python - version: 25.1.0.dev2024121105 + version: 25.1.0.dev2024121214 build: 3.12release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024121105-3.12release.conda - sha256: 42e409756f37919fdfda6e86d45e1814f68c102f23a8be42dd88b4f3dd816fae - md5: 4a180f1ab8a83b78d7282baf60e9280b + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024121214-3.12release.conda + sha256: 289119c20859195f0d86fbd67c4814d65604913c12086cac9591a3371323d1d6 + md5: 8f2676a5b6775eeb835c6e0db97bc3b2 depends: - - max-core ==25.1.0.dev2024121105 release + - max-core ==25.1.0.dev2024121214 release - python 3.12.* - fastapi - httpx @@ -7844,17 +7844,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 112620525 - timestamp: 1733894448573 + size: 112807365 + timestamp: 1734016112401 - kind: conda name: mblack - version: 25.1.0.dev2024121105 + version: 25.1.0.dev2024121214 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121105-release.conda - sha256: ee5c623d7908731bc5c42079cbb5d7ac461481c5bcaf615e25c4c8263f041793 - md5: 1271b7b52a8cc538e26ffbdd22743d3a + url: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121214-release.conda + sha256: 92acaf798bb3834675c7358f2d68f4d792036e166957fa6dbc6ff14f843ede4f + md5: 4de530f1fe2a901756c581249180eca9 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -7864,8 +7864,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130789 - timestamp: 1733894234681 + size: 130794 + timestamp: 1734015648615 - kind: conda name: mdurl version: 0.1.2 @@ -7884,21 +7884,21 @@ packages: timestamp: 1733255681319 - kind: conda name: mojo-jupyter - version: 25.1.0.dev2024121105 + version: 25.1.0.dev2024121214 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024121105-release.conda - sha256: c59130a6e8190e55b8881bd43429377da5368df6afed78b04c8df236d253a047 - md5: 35cc55bad72e3b9d0d490ff7af58c446 + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024121214-release.conda + sha256: 72f123af334c1bcfe47977593401441d281156684350568147ab6c62f7717dc0 + md5: a631623d32a0b423b4ac774dbe79a918 depends: - - max-core ==25.1.0.dev2024121105 release + - max-core ==25.1.0.dev2024121214 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22932 - timestamp: 1733894234682 + size: 22936 + timestamp: 1734015648615 - kind: conda name: mpg123 version: 1.32.9 @@ -10911,19 +10911,20 @@ packages: - kind: conda name: transformers version: 4.47.0 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.0-pyhd8ed1ab_0.conda - sha256: b9cf6ae5fcd6c78dcaa24ebfd41580a4a10b0649ac726a44d3521f70fdece218 - md5: 495745078b8e18fe2dcc3267f4baae0d + url: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.0-pyhd8ed1ab_1.conda + sha256: d31821081219a0ede5c1f356b65a61ce98ac11e2df78b0eaa684c17c73389fbf + md5: 6d2ec1ddee8057d2d724a0ab0bb578a0 depends: - datasets !=2.5.0 - filelock - huggingface_hub >=0.23.0,<1.0 - numpy >=1.17 - packaging >=20.0 - - python >=3.8 + - python >=3.9 - pyyaml >=5.1 - regex !=2019.12.17 - requests @@ -10932,8 +10933,8 @@ packages: - tqdm >=4.27 license: Apache-2.0 license_family: APACHE - size: 3721837 - timestamp: 1733708797762 + size: 3726957 + timestamp: 1733948063517 - kind: conda name: typer version: 0.15.1 @@ -11151,12 +11152,12 @@ packages: timestamp: 1730214606664 - kind: conda name: watchfiles - version: 1.0.0 + version: 1.0.3 build: py312h12e396e_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/watchfiles-1.0.0-py312h12e396e_0.conda - sha256: a2a11a751d3fdd2bec79d876687136cee81d0125be40cebd3518042e1e15c349 - md5: b53a91a5cc50cf07f690a5d3b9f91db5 + url: https://conda.anaconda.org/conda-forge/linux-64/watchfiles-1.0.3-py312h12e396e_0.conda + sha256: c89755d8e8f6384b3ba13e41dcabb40bf690c38b9d61512e963129badb1ad332 + md5: b76a5ad00856af6e74da9c3e85fed0cc depends: - __glibc >=2.17,<3.0.a0 - anyio >=3.0.0 @@ -11167,16 +11168,16 @@ packages: - __glibc >=2.17 license: MIT license_family: MIT - size: 409700 - timestamp: 1732689603044 + size: 410432 + timestamp: 1733998892675 - kind: conda name: watchfiles - version: 1.0.0 + version: 1.0.3 build: py312h8cbf658_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/watchfiles-1.0.0-py312h8cbf658_0.conda - sha256: 1d7fde47edacf01a81c0d9ac3f284d4d30982d33686c505374bfa2c7b02bbf8d - md5: 9ecaaf340ad422209a04fcf854fb4a3f + url: https://conda.anaconda.org/conda-forge/linux-aarch64/watchfiles-1.0.3-py312h8cbf658_0.conda + sha256: 9be9569c279dc6e7881e9b45fe9f0368218538c660641e2f8b0e023e72a6571c + md5: 3465c1a19634233abc2d1832ac01fd31 depends: - anyio >=3.0.0 - libgcc >=13 @@ -11187,16 +11188,16 @@ packages: - __glibc >=2.17 license: MIT license_family: MIT - size: 404235 - timestamp: 1732689685476 + size: 404239 + timestamp: 1733998941045 - kind: conda name: watchfiles - version: 1.0.0 + version: 1.0.3 build: py312hcd83bfe_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/watchfiles-1.0.0-py312hcd83bfe_0.conda - sha256: 554c4550813b744794fc70451c87d540d38138e6dc901993e85515ffa91087d2 - md5: 0eb2c3f65788f61f905d31ac062fe4b6 + url: https://conda.anaconda.org/conda-forge/osx-arm64/watchfiles-1.0.3-py312hcd83bfe_0.conda + sha256: b64b78a7d6384bf72a878256802c783c692fe641ab4b806fd7e9f45e18a5e3b4 + md5: 13b89e1aa72aa773806b1f59ec018b67 depends: - __osx >=11.0 - anyio >=3.0.0 @@ -11207,8 +11208,8 @@ packages: - __osx >=11.0 license: MIT license_family: MIT - size: 356744 - timestamp: 1732689860624 + size: 363162 + timestamp: 1733999215646 - kind: conda name: websockets version: '14.1' diff --git a/examples/magic.lock b/examples/magic.lock index 0294201855..4855da3d70 100644 --- a/examples/magic.lock +++ b/examples/magic.lock @@ -87,7 +87,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.1.0-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-25_linux64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libcrc32c-1.1.2-h9c3ff4c_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.10.1-hbbe4b11_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.11.1-h332b0f4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.22-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20191231-he28a2e2_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda @@ -131,12 +131,12 @@ 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-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.modular.com/max-nightly/noarch/max-25.1.0.dev2024121214-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024121214-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024121214-3.11release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121214-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-25.1.0.dev2024121105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024121214-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 @@ -201,7 +201,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py311h9ecbd09_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda @@ -212,7 +212,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/uvloop-0.21.0-py311h9ecbd09_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/watchfiles-1.0.0-py311h9e33e62_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/watchfiles-1.0.3-py311h9e33e62_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/websockets-14.1-py311h9ecbd09_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.17.0-py311h9ecbd09_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.11-hb9d3cd8_1.conda @@ -306,7 +306,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlienc-1.1.0-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-25_linuxaarch64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcrc32c-1.1.2-h01db608_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcurl-8.10.1-h3ec0cbf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcurl-8.11.1-h6702fde_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libdeflate-1.22-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20191231-he28a2e2_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libev-4.33-h31becfc_2.conda @@ -350,12 +350,12 @@ 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-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.modular.com/max-nightly/noarch/max-25.1.0.dev2024121214-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024121214-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024121214-3.11release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121214-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-25.1.0.dev2024121105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024121214-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 @@ -420,7 +420,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py311h5487e9b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda @@ -431,7 +431,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/uvloop-0.21.0-py311ha879c10_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/watchfiles-1.0.0-py311h0ca61a2_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/watchfiles-1.0.3-py311h0ca61a2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/websockets-14.1-py311ha879c10_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/wrapt-1.17.0-py311ha879c10_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxau-1.0.11-h86ecc28_1.conda @@ -522,7 +522,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlienc-1.1.0-hd74edd7_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-25_osxarm64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcrc32c-1.1.2-hbdafb3b_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.10.1-h13a7ad3_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.11.1-h73640d1_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.5-ha82da77_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.22-hd74edd7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20191231-hc8eb9b7_2.tar.bz2 @@ -560,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-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.modular.com/max-nightly/noarch/max-25.1.0.dev2024121214-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024121214-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024121214-3.11release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121214-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-25.1.0.dev2024121105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024121214-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 @@ -629,7 +629,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py311h917b07b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda @@ -640,7 +640,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/uvloop-0.21.0-py311hae2e1ce_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/watchfiles-1.0.0-py311h3ff9189_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/watchfiles-1.0.3-py311h3ff9189_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/websockets-14.1-py311h917b07b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/wrapt-1.17.0-py311h917b07b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxau-1.0.11-hd74edd7_1.conda @@ -3795,65 +3795,65 @@ packages: timestamp: 1633683992603 - kind: conda name: libcurl - version: 8.10.1 - build: h13a7ad3_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.10.1-h13a7ad3_0.conda - sha256: 983a977c5627f975a930542c8aabb46089ec6ea72f28d9c4d3ee8eafaf2fc25a - md5: d84030d0863ffe7dea00b9a807fee961 + version: 8.11.1 + build: h332b0f4_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.11.1-h332b0f4_0.conda + sha256: 3cd4075b2a7b5562e46c8ec626f6f9ca57aeecaa94ff7df57eca26daa94c9906 + md5: 2b3e0081006dc21e8bf53a91c83a055c depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 - krb5 >=1.21.3,<1.22.0a0 - - libnghttp2 >=1.58.0,<2.0a0 - - libssh2 >=1.11.0,<2.0a0 + - libgcc >=13 + - libnghttp2 >=1.64.0,<2.0a0 + - libssh2 >=1.11.1,<2.0a0 - libzlib >=1.3.1,<2.0a0 - - openssl >=3.3.2,<4.0a0 + - openssl >=3.4.0,<4.0a0 - zstd >=1.5.6,<1.6.0a0 license: curl license_family: MIT - size: 379948 - timestamp: 1726660033582 + size: 423011 + timestamp: 1733999897624 - kind: conda name: libcurl - version: 8.10.1 - build: h3ec0cbf_0 + version: 8.11.1 + build: h6702fde_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libcurl-8.10.1-h3ec0cbf_0.conda - sha256: 7c4983001c727f713b4448280ed4803d301087c184cd2819ba0b788ca62b73d1 - md5: f43539295c4e0cd15202d41bc72b8a26 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libcurl-8.11.1-h6702fde_0.conda + sha256: 9fc65d21a58f4aad1bc39dfb94a178893aeb035850c5cf0ed9736674279f390b + md5: 7dec1cd271c403d1636bda5aa388a55d depends: - krb5 >=1.21.3,<1.22.0a0 - libgcc >=13 - - libnghttp2 >=1.58.0,<2.0a0 - - libssh2 >=1.11.0,<2.0a0 + - libnghttp2 >=1.64.0,<2.0a0 + - libssh2 >=1.11.1,<2.0a0 - libzlib >=1.3.1,<2.0a0 - - openssl >=3.3.2,<4.0a0 + - openssl >=3.4.0,<4.0a0 - zstd >=1.5.6,<1.6.0a0 license: curl license_family: MIT - size: 439171 - timestamp: 1726659843118 + size: 440737 + timestamp: 1733999835504 - kind: conda name: libcurl - version: 8.10.1 - build: hbbe4b11_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.10.1-hbbe4b11_0.conda - sha256: 54e6114dfce566c3a22ad3b7b309657e3600cdb668398e95f1301360d5d52c99 - md5: 6e801c50a40301f6978c53976917b277 + version: 8.11.1 + build: h73640d1_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.11.1-h73640d1_0.conda + sha256: f47c35938144c23278987c7d12096f6a42d7c850ffc277222b032073412383b6 + md5: 46d7524cabfdd199bffe63f8f19a552b depends: - - __glibc >=2.17,<3.0.a0 + - __osx >=11.0 - krb5 >=1.21.3,<1.22.0a0 - - libgcc >=13 - - libnghttp2 >=1.58.0,<2.0a0 - - libssh2 >=1.11.0,<2.0a0 + - libnghttp2 >=1.64.0,<2.0a0 + - libssh2 >=1.11.1,<2.0a0 - libzlib >=1.3.1,<2.0a0 - - openssl >=3.3.2,<4.0a0 + - openssl >=3.4.0,<4.0a0 - zstd >=1.5.6,<1.6.0a0 license: curl license_family: MIT - size: 424900 - timestamp: 1726659794676 + size: 385098 + timestamp: 1734000160270 - kind: conda name: libcxx version: 19.1.5 @@ -5905,76 +5905,76 @@ packages: timestamp: 1733220925299 - kind: conda name: max - version: 25.1.0.dev2024121105 + version: 25.1.0.dev2024121214 build: release subdir: noarch noarch: python - 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 + url: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024121214-release.conda + sha256: eeadd1df827192ff0d8af9e48fc61238f742fb14976023b838413283a4e1798b + md5: 2447f44e5547cfa431e089835e7532b1 + depends: + - max-core ==25.1.0.dev2024121214 release + - max-python >=25.1.0.dev2024121214,<26.0a0 + - mojo-jupyter ==25.1.0.dev2024121214 release + - mblack ==25.1.0.dev2024121214 release license: LicenseRef-Modular-Proprietary - size: 9923 - timestamp: 1733894234676 + size: 9920 + timestamp: 1734015648611 - kind: conda name: max-core - version: 25.1.0.dev2024121105 + version: 25.1.0.dev2024121214 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024121105-release.conda - sha256: 23a9b3a31eddf232c2d91b45362eb79b0a8dfd4842e7d41f2719aa40bc53c37a - md5: c95a33b823ca2f36431033c1122212ba + url: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024121214-release.conda + sha256: 7b4cfef5dabe1854572b902f5a85df32c115133cb230c074db466199cedd2988 + md5: a4a78932539c233f70b75680656a128b depends: - - mblack ==25.1.0.dev2024121105 release + - mblack ==25.1.0.dev2024121214 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 247768202 - timestamp: 1733894244133 + size: 247826462 + timestamp: 1734015648609 - kind: conda name: max-core - version: 25.1.0.dev2024121105 + version: 25.1.0.dev2024121214 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024121105-release.conda - sha256: 22bb680d1e11a3640ae28b9d9faafa089b92a2fd6474ebdcc6b5c0e4da618664 - md5: 6e976d732a16860852a22686f7334ce4 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024121214-release.conda + sha256: e264dadaabf3542d88790a591e5d0007e810d67b777b7f298d71a7e04c1ceb34 + md5: cfffd2826ce46aaefb9553bb965769b6 depends: - - mblack ==25.1.0.dev2024121105 release + - mblack ==25.1.0.dev2024121214 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 251679560 - timestamp: 1733894234674 + size: 251673819 + timestamp: 1734015642960 - kind: conda name: max-core - version: 25.1.0.dev2024121105 + version: 25.1.0.dev2024121214 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024121105-release.conda - sha256: 5733d843377af66e94de2dd91cd8872d8f49baac81c6120ce2294a866d2f227f - md5: 84d6da2eb7585c49e1f71deec028c11a + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024121214-release.conda + sha256: 5f59a57c7bc3832028063c308ee55f3ba5dae88052e08745ae827f971827fb2e + md5: c55ad17758cdcd82a6d62c8d5fa6c50a depends: - - mblack ==25.1.0.dev2024121105 release + - mblack ==25.1.0.dev2024121214 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 212215227 - timestamp: 1733894448570 + size: 212287379 + timestamp: 1734016112398 - kind: conda name: max-python - version: 25.1.0.dev2024121105 + version: 25.1.0.dev2024121214 build: 3.11release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024121105-3.11release.conda - sha256: 904ca17c0fee00733ca99428389e1710336ac34e0241a226ffc8d32bc5c54865 - md5: 3db74bf0ad5e48aeda0116f6206891f7 + url: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024121214-3.11release.conda + sha256: 781df492fb1996ab536f41b6e472f623ac769636de920ac555ce2c23b28511a7 + md5: c1c6d2177328259ecbc27f3da7ed691f depends: - - max-core ==25.1.0.dev2024121105 release + - max-core ==25.1.0.dev2024121214 release - python 3.11.* - fastapi - httpx @@ -5997,18 +5997,18 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 123931619 - timestamp: 1733894244140 + size: 123955669 + timestamp: 1734015648616 - kind: conda name: max-python - version: 25.1.0.dev2024121105 + version: 25.1.0.dev2024121214 build: 3.11release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024121105-3.11release.conda - sha256: db33e9554a5f4cfe9260b8e32c5abee2f58cf32ec62daecc737c57212ca95eae - md5: 6cbaa5d456908961d8c7de2d6f2f8e0d + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024121214-3.11release.conda + sha256: d5c9665860b4a948c63eb39c750a88d1a14606929a990b5b198f28b20aaa6f58 + md5: 4d3290944f1b57aace8cb76e374ba4d5 depends: - - max-core ==25.1.0.dev2024121105 release + - max-core ==25.1.0.dev2024121214 release - python 3.11.* - fastapi - httpx @@ -6031,18 +6031,18 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 127581438 - timestamp: 1733894234682 + size: 127725855 + timestamp: 1734015642968 - kind: conda name: max-python - version: 25.1.0.dev2024121105 + version: 25.1.0.dev2024121214 build: 3.11release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024121105-3.11release.conda - sha256: 38151b14b19c0b000215b4360f445afbeddf072eb65440b73a52d2e74f33a787 - md5: aa8ff7f500e2668163a295dffb7a51cb + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024121214-3.11release.conda + sha256: b6fe592c3845d2feac17cf6fa4cd42558639946053b5c07e3e126b9d75fde240 + md5: e1c65346c61bf3e483697b7533e378ee depends: - - max-core ==25.1.0.dev2024121105 release + - max-core ==25.1.0.dev2024121214 release - python 3.11.* - fastapi - httpx @@ -6065,17 +6065,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 112583374 - timestamp: 1733894448572 + size: 112826439 + timestamp: 1734016112400 - kind: conda name: mblack - version: 25.1.0.dev2024121105 + version: 25.1.0.dev2024121214 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121105-release.conda - sha256: ee5c623d7908731bc5c42079cbb5d7ac461481c5bcaf615e25c4c8263f041793 - md5: 1271b7b52a8cc538e26ffbdd22743d3a + url: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121214-release.conda + sha256: 92acaf798bb3834675c7358f2d68f4d792036e166957fa6dbc6ff14f843ede4f + md5: 4de530f1fe2a901756c581249180eca9 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -6085,8 +6085,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130789 - timestamp: 1733894234681 + size: 130794 + timestamp: 1734015648615 - kind: conda name: mdurl version: 0.1.2 @@ -6105,21 +6105,21 @@ packages: timestamp: 1733255681319 - kind: conda name: mojo-jupyter - version: 25.1.0.dev2024121105 + version: 25.1.0.dev2024121214 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024121105-release.conda - sha256: c59130a6e8190e55b8881bd43429377da5368df6afed78b04c8df236d253a047 - md5: 35cc55bad72e3b9d0d490ff7af58c446 + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024121214-release.conda + sha256: 72f123af334c1bcfe47977593401441d281156684350568147ab6c62f7717dc0 + md5: a631623d32a0b423b4ac774dbe79a918 depends: - - max-core ==25.1.0.dev2024121105 release + - max-core ==25.1.0.dev2024121214 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22932 - timestamp: 1733894234682 + size: 22936 + timestamp: 1734015648615 - kind: conda name: multidict version: 6.1.0 @@ -8385,19 +8385,20 @@ packages: - kind: conda name: transformers version: 4.47.0 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.0-pyhd8ed1ab_0.conda - sha256: b9cf6ae5fcd6c78dcaa24ebfd41580a4a10b0649ac726a44d3521f70fdece218 - md5: 495745078b8e18fe2dcc3267f4baae0d + url: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.0-pyhd8ed1ab_1.conda + sha256: d31821081219a0ede5c1f356b65a61ce98ac11e2df78b0eaa684c17c73389fbf + md5: 6d2ec1ddee8057d2d724a0ab0bb578a0 depends: - datasets !=2.5.0 - filelock - huggingface_hub >=0.23.0,<1.0 - numpy >=1.17 - packaging >=20.0 - - python >=3.8 + - python >=3.9 - pyyaml >=5.1 - regex !=2019.12.17 - requests @@ -8406,8 +8407,8 @@ packages: - tqdm >=4.27 license: Apache-2.0 license_family: APACHE - size: 3721837 - timestamp: 1733708797762 + size: 3726957 + timestamp: 1733948063517 - kind: conda name: typer version: 0.15.1 @@ -8625,12 +8626,12 @@ packages: timestamp: 1730214665776 - kind: conda name: watchfiles - version: 1.0.0 + version: 1.0.3 build: py311h0ca61a2_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/watchfiles-1.0.0-py311h0ca61a2_0.conda - sha256: f47575a2e455d12bd0471a2447cb2a514d183ed84bbc12a2250a9ad87484b682 - md5: a1f03b837b9b1be1cff6765e3002e983 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/watchfiles-1.0.3-py311h0ca61a2_0.conda + sha256: acf468cfad74bc894c0f7263c7390b7b2dfe7f72c7f698a698caad2deb532c7d + md5: 02d887d09e56a37b7416c2c1da6ef8c9 depends: - anyio >=3.0.0 - libgcc >=13 @@ -8641,16 +8642,16 @@ packages: - __glibc >=2.17 license: MIT license_family: MIT - size: 405692 - timestamp: 1732689662727 + size: 404921 + timestamp: 1733998940737 - kind: conda name: watchfiles - version: 1.0.0 + version: 1.0.3 build: py311h3ff9189_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/watchfiles-1.0.0-py311h3ff9189_0.conda - sha256: cf1514bb697ac6db69a1b9a3e43a8789054cf02df3baefa1a5ea946296552ca5 - md5: 2a2e657bc8ef45ccd757e432d81e209d + url: https://conda.anaconda.org/conda-forge/osx-arm64/watchfiles-1.0.3-py311h3ff9189_0.conda + sha256: 86f7ebe3cfb503fb2c80f040e03d039e3b552ac5893cd8e82225c966bac07c44 + md5: bd5b2b35eb23cfcb48be31527ff49944 depends: - __osx >=11.0 - anyio >=3.0.0 @@ -8661,16 +8662,16 @@ packages: - __osx >=11.0 license: MIT license_family: MIT - size: 357633 - timestamp: 1732689799347 + size: 366312 + timestamp: 1733999050046 - kind: conda name: watchfiles - version: 1.0.0 + version: 1.0.3 build: py311h9e33e62_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/watchfiles-1.0.0-py311h9e33e62_0.conda - sha256: a34479c60b23b7b9465aa547891d9e18bffec5b6e56e9f24634491bc71d3c5a5 - md5: 02aaa195aada560b5402a45e5bbece96 + url: https://conda.anaconda.org/conda-forge/linux-64/watchfiles-1.0.3-py311h9e33e62_0.conda + sha256: 066f5725b576dca7a1f5dfafca055836a199f9db97435e2ceca84e6296fc8358 + md5: 558a9c46ef5db2f3a6f425228bc77d43 depends: - __glibc >=2.17,<3.0.a0 - anyio >=3.0.0 @@ -8681,8 +8682,8 @@ packages: - __glibc >=2.17 license: MIT license_family: MIT - size: 409759 - timestamp: 1732689546491 + size: 410904 + timestamp: 1733998882176 - kind: conda name: websockets version: '14.1' diff --git a/examples/notebooks/magic.lock b/examples/notebooks/magic.lock index 7661304812..76b9511344 100644 --- a/examples/notebooks/magic.lock +++ b/examples/notebooks/magic.lock @@ -54,7 +54,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.9-py312h2ec8cdc_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.10-py312h2ec8cdc_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.1.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhd8ed1ab_1.conda @@ -121,7 +121,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.1.0-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-25_linux64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libcrc32c-1.1.2-h9c3ff4c_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.10.1-hbbe4b11_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.11.1-h332b0f4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.22-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20191231-he28a2e2_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda @@ -166,13 +166,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/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-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.modular.com/max-nightly/noarch/max-25.1.0.dev2024121214-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024121214-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024121214-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121214-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-25.1.0.dev2024121105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024121214-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 @@ -264,7 +264,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda @@ -278,7 +278,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/uvloop-0.21.0-py312h66e93f0_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/watchfiles-1.0.0-py312h12e396e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/watchfiles-1.0.3-py312h12e396e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda @@ -343,7 +343,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/debugpy-1.8.9-py312h6f74592_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/debugpy-1.8.10-py312h6f74592_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.1.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhd8ed1ab_1.conda @@ -411,7 +411,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlienc-1.1.0-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-25_linuxaarch64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcrc32c-1.1.2-h01db608_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcurl-8.10.1-h3ec0cbf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcurl-8.11.1-h6702fde_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libdeflate-1.22-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20191231-he28a2e2_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libev-4.33-h31becfc_2.conda @@ -456,13 +456,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/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-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.modular.com/max-nightly/noarch/max-25.1.0.dev2024121214-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024121214-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024121214-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121214-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-25.1.0.dev2024121105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024121214-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 @@ -554,7 +554,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py312h52516f5_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda @@ -568,7 +568,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/uvloop-0.21.0-py312hb2c0f52_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/watchfiles-1.0.0-py312h8cbf658_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/watchfiles-1.0.3-py312h8cbf658_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda @@ -633,7 +633,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/debugpy-1.8.9-py312hd8f9ff3_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/debugpy-1.8.10-py312hd8f9ff3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.1.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhd8ed1ab_1.conda @@ -699,7 +699,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlienc-1.1.0-hd74edd7_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-25_osxarm64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcrc32c-1.1.2-hbdafb3b_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.10.1-h13a7ad3_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.11.1-h73640d1_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.5-ha82da77_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.22-hd74edd7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20191231-hc8eb9b7_2.tar.bz2 @@ -738,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-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.modular.com/max-nightly/noarch/max-25.1.0.dev2024121214-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024121214-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024121214-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121214-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-25.1.0.dev2024121105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024121214-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 @@ -837,7 +837,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda @@ -851,7 +851,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/uvloop-0.21.0-py312h0bf5046_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/watchfiles-1.0.0-py312hcd83bfe_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/watchfiles-1.0.3-py312hcd83bfe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda @@ -2690,12 +2690,12 @@ packages: timestamp: 1691593908658 - kind: conda name: debugpy - version: 1.8.9 + version: 1.8.10 build: py312h2ec8cdc_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.9-py312h2ec8cdc_0.conda - sha256: cf79cac70773567382910fcaf7b10bb0f5242d159f8dd93296d8451cd542af9a - md5: c522fd70ca7a0c2fe1a861dd13987a57 + url: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.10-py312h2ec8cdc_0.conda + sha256: 534a57b12b92b7af802d48633d96610564e9b41229869d4334d5e776a8f3ee08 + md5: ec2f6e5f137d0767686f7348e6003d78 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -2704,16 +2704,16 @@ packages: - python_abi 3.12.* *_cp312 license: MIT license_family: MIT - size: 2605093 - timestamp: 1732236790708 + size: 2622505 + timestamp: 1733945377151 - kind: conda name: debugpy - version: 1.8.9 + version: 1.8.10 build: py312h6f74592_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/debugpy-1.8.9-py312h6f74592_0.conda - sha256: 651761a1bba2af89aeb391ab61391cfb4db67d9031f3bf429720782642873115 - md5: d0238a3a2f6127b05c5144aa383d7081 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/debugpy-1.8.10-py312h6f74592_0.conda + sha256: 370ed3880d521a6222989d122f924d2f8bb2696dc84932070a1e6d7ffca3a546 + md5: c49a976254e049e723e6c196580edaff depends: - libgcc >=13 - libstdcxx >=13 @@ -2722,16 +2722,16 @@ packages: - python_abi 3.12.* *_cp312 license: MIT license_family: MIT - size: 2596779 - timestamp: 1732236921259 + size: 2596147 + timestamp: 1733945465443 - kind: conda name: debugpy - version: 1.8.9 + version: 1.8.10 build: py312hd8f9ff3_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/debugpy-1.8.9-py312hd8f9ff3_0.conda - sha256: d588943ac0392300f31115d9852a2ff4213ec22856c382ef56f5650576523ec6 - md5: 51085e5bb7f21019186cc88fd9a03164 + url: https://conda.anaconda.org/conda-forge/osx-arm64/debugpy-1.8.10-py312hd8f9ff3_0.conda + sha256: 82d92c8b8d20e59c494a0ad9fbba0e2bb3fac660f857d8dbe1a8b39a431267f9 + md5: 89b4e3275df4bdc883425d8675ed1a06 depends: - __osx >=11.0 - libcxx >=18 @@ -2740,8 +2740,8 @@ packages: - python_abi 3.12.* *_cp312 license: MIT license_family: MIT - size: 2512030 - timestamp: 1732236996277 + size: 2556448 + timestamp: 1733945456377 - kind: conda name: decorator version: 5.1.1 @@ -4823,65 +4823,65 @@ packages: timestamp: 1633683992603 - kind: conda name: libcurl - version: 8.10.1 - build: h13a7ad3_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.10.1-h13a7ad3_0.conda - sha256: 983a977c5627f975a930542c8aabb46089ec6ea72f28d9c4d3ee8eafaf2fc25a - md5: d84030d0863ffe7dea00b9a807fee961 + version: 8.11.1 + build: h332b0f4_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.11.1-h332b0f4_0.conda + sha256: 3cd4075b2a7b5562e46c8ec626f6f9ca57aeecaa94ff7df57eca26daa94c9906 + md5: 2b3e0081006dc21e8bf53a91c83a055c depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 - krb5 >=1.21.3,<1.22.0a0 - - libnghttp2 >=1.58.0,<2.0a0 - - libssh2 >=1.11.0,<2.0a0 + - libgcc >=13 + - libnghttp2 >=1.64.0,<2.0a0 + - libssh2 >=1.11.1,<2.0a0 - libzlib >=1.3.1,<2.0a0 - - openssl >=3.3.2,<4.0a0 + - openssl >=3.4.0,<4.0a0 - zstd >=1.5.6,<1.6.0a0 license: curl license_family: MIT - size: 379948 - timestamp: 1726660033582 + size: 423011 + timestamp: 1733999897624 - kind: conda name: libcurl - version: 8.10.1 - build: h3ec0cbf_0 + version: 8.11.1 + build: h6702fde_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libcurl-8.10.1-h3ec0cbf_0.conda - sha256: 7c4983001c727f713b4448280ed4803d301087c184cd2819ba0b788ca62b73d1 - md5: f43539295c4e0cd15202d41bc72b8a26 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libcurl-8.11.1-h6702fde_0.conda + sha256: 9fc65d21a58f4aad1bc39dfb94a178893aeb035850c5cf0ed9736674279f390b + md5: 7dec1cd271c403d1636bda5aa388a55d depends: - krb5 >=1.21.3,<1.22.0a0 - libgcc >=13 - - libnghttp2 >=1.58.0,<2.0a0 - - libssh2 >=1.11.0,<2.0a0 + - libnghttp2 >=1.64.0,<2.0a0 + - libssh2 >=1.11.1,<2.0a0 - libzlib >=1.3.1,<2.0a0 - - openssl >=3.3.2,<4.0a0 + - openssl >=3.4.0,<4.0a0 - zstd >=1.5.6,<1.6.0a0 license: curl license_family: MIT - size: 439171 - timestamp: 1726659843118 + size: 440737 + timestamp: 1733999835504 - kind: conda name: libcurl - version: 8.10.1 - build: hbbe4b11_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.10.1-hbbe4b11_0.conda - sha256: 54e6114dfce566c3a22ad3b7b309657e3600cdb668398e95f1301360d5d52c99 - md5: 6e801c50a40301f6978c53976917b277 + version: 8.11.1 + build: h73640d1_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.11.1-h73640d1_0.conda + sha256: f47c35938144c23278987c7d12096f6a42d7c850ffc277222b032073412383b6 + md5: 46d7524cabfdd199bffe63f8f19a552b depends: - - __glibc >=2.17,<3.0.a0 + - __osx >=11.0 - krb5 >=1.21.3,<1.22.0a0 - - libgcc >=13 - - libnghttp2 >=1.58.0,<2.0a0 - - libssh2 >=1.11.0,<2.0a0 + - libnghttp2 >=1.64.0,<2.0a0 + - libssh2 >=1.11.1,<2.0a0 - libzlib >=1.3.1,<2.0a0 - - openssl >=3.3.2,<4.0a0 + - openssl >=3.4.0,<4.0a0 - zstd >=1.5.6,<1.6.0a0 license: curl license_family: MIT - size: 424900 - timestamp: 1726659794676 + size: 385098 + timestamp: 1734000160270 - kind: conda name: libcxx version: 19.1.5 @@ -6950,76 +6950,76 @@ packages: timestamp: 1733417051523 - kind: conda name: max - version: 25.1.0.dev2024121105 + version: 25.1.0.dev2024121214 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024121105-release.conda - sha256: c53b72587f9fa54a9b0f5cb5345e772711cb0779610100ab4389b1f312a7ebc7 - md5: b91bff8456bcd2fd2aada4bafa51a358 + url: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024121214-release.conda + sha256: eeadd1df827192ff0d8af9e48fc61238f742fb14976023b838413283a4e1798b + md5: 2447f44e5547cfa431e089835e7532b1 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 + - max-core ==25.1.0.dev2024121214 release + - max-python >=25.1.0.dev2024121214,<26.0a0 + - mojo-jupyter ==25.1.0.dev2024121214 release + - mblack ==25.1.0.dev2024121214 release license: LicenseRef-Modular-Proprietary - size: 9923 - timestamp: 1733894234676 + size: 9920 + timestamp: 1734015648611 - kind: conda name: max-core - version: 25.1.0.dev2024121105 + version: 25.1.0.dev2024121214 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024121105-release.conda - sha256: 23a9b3a31eddf232c2d91b45362eb79b0a8dfd4842e7d41f2719aa40bc53c37a - md5: c95a33b823ca2f36431033c1122212ba + url: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024121214-release.conda + sha256: 7b4cfef5dabe1854572b902f5a85df32c115133cb230c074db466199cedd2988 + md5: a4a78932539c233f70b75680656a128b depends: - - mblack ==25.1.0.dev2024121105 release + - mblack ==25.1.0.dev2024121214 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 247768202 - timestamp: 1733894244133 + size: 247826462 + timestamp: 1734015648609 - kind: conda name: max-core - version: 25.1.0.dev2024121105 + version: 25.1.0.dev2024121214 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024121105-release.conda - sha256: 22bb680d1e11a3640ae28b9d9faafa089b92a2fd6474ebdcc6b5c0e4da618664 - md5: 6e976d732a16860852a22686f7334ce4 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024121214-release.conda + sha256: e264dadaabf3542d88790a591e5d0007e810d67b777b7f298d71a7e04c1ceb34 + md5: cfffd2826ce46aaefb9553bb965769b6 depends: - - mblack ==25.1.0.dev2024121105 release + - mblack ==25.1.0.dev2024121214 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 251679560 - timestamp: 1733894234674 + size: 251673819 + timestamp: 1734015642960 - kind: conda name: max-core - version: 25.1.0.dev2024121105 + version: 25.1.0.dev2024121214 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024121105-release.conda - sha256: 5733d843377af66e94de2dd91cd8872d8f49baac81c6120ce2294a866d2f227f - md5: 84d6da2eb7585c49e1f71deec028c11a + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024121214-release.conda + sha256: 5f59a57c7bc3832028063c308ee55f3ba5dae88052e08745ae827f971827fb2e + md5: c55ad17758cdcd82a6d62c8d5fa6c50a depends: - - mblack ==25.1.0.dev2024121105 release + - mblack ==25.1.0.dev2024121214 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 212215227 - timestamp: 1733894448570 + size: 212287379 + timestamp: 1734016112398 - kind: conda name: max-python - version: 25.1.0.dev2024121105 + version: 25.1.0.dev2024121214 build: 3.12release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024121105-3.12release.conda - sha256: ad71429b6fa8d4e972a20a0a8f684420b6f162fdb1b22d36c32758a4f0f35d54 - md5: b7acc92cf44907a4c460026ad9c2cc45 + url: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024121214-3.12release.conda + sha256: e275ce2ee258e9b3e5d335758728c62639307b5fbc26ff42137a2d9ba6cef314 + md5: 865bcedcfbd6d2064ca8d896094148b6 depends: - - max-core ==25.1.0.dev2024121105 release + - max-core ==25.1.0.dev2024121214 release - python 3.12.* - fastapi - httpx @@ -7042,18 +7042,18 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 123912464 - timestamp: 1733894244143 + size: 124001405 + timestamp: 1734015648618 - kind: conda name: max-python - version: 25.1.0.dev2024121105 + version: 25.1.0.dev2024121214 build: 3.12release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024121105-3.12release.conda - sha256: 26f0f84532443a5e78098c17127dd0a04ca05a7c107e50aebc6b92abc9fe8a9f - md5: c4908b0138b01e14f9a8002624b42e25 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024121214-3.12release.conda + sha256: fc4ed0f25e87e5ef9082bf23b03f53f9a5f16e00493f5566820c7c62a2038e58 + md5: 705a3d5afebfa45a4d0a97fdabaad520 depends: - - max-core ==25.1.0.dev2024121105 release + - max-core ==25.1.0.dev2024121214 release - python 3.12.* - fastapi - httpx @@ -7076,18 +7076,18 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 127580719 - timestamp: 1733894234684 + size: 127725024 + timestamp: 1734015642970 - kind: conda name: max-python - version: 25.1.0.dev2024121105 + version: 25.1.0.dev2024121214 build: 3.12release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024121105-3.12release.conda - sha256: 42e409756f37919fdfda6e86d45e1814f68c102f23a8be42dd88b4f3dd816fae - md5: 4a180f1ab8a83b78d7282baf60e9280b + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024121214-3.12release.conda + sha256: 289119c20859195f0d86fbd67c4814d65604913c12086cac9591a3371323d1d6 + md5: 8f2676a5b6775eeb835c6e0db97bc3b2 depends: - - max-core ==25.1.0.dev2024121105 release + - max-core ==25.1.0.dev2024121214 release - python 3.12.* - fastapi - httpx @@ -7110,17 +7110,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 112620525 - timestamp: 1733894448573 + size: 112807365 + timestamp: 1734016112401 - kind: conda name: mblack - version: 25.1.0.dev2024121105 + version: 25.1.0.dev2024121214 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121105-release.conda - sha256: ee5c623d7908731bc5c42079cbb5d7ac461481c5bcaf615e25c4c8263f041793 - md5: 1271b7b52a8cc538e26ffbdd22743d3a + url: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121214-release.conda + sha256: 92acaf798bb3834675c7358f2d68f4d792036e166957fa6dbc6ff14f843ede4f + md5: 4de530f1fe2a901756c581249180eca9 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -7130,8 +7130,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130789 - timestamp: 1733894234681 + size: 130794 + timestamp: 1734015648615 - kind: conda name: mdurl version: 0.1.2 @@ -7166,21 +7166,21 @@ packages: timestamp: 1733258822603 - kind: conda name: mojo-jupyter - version: 25.1.0.dev2024121105 + version: 25.1.0.dev2024121214 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024121105-release.conda - sha256: c59130a6e8190e55b8881bd43429377da5368df6afed78b04c8df236d253a047 - md5: 35cc55bad72e3b9d0d490ff7af58c446 + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024121214-release.conda + sha256: 72f123af334c1bcfe47977593401441d281156684350568147ab6c62f7717dc0 + md5: a631623d32a0b423b4ac774dbe79a918 depends: - - max-core ==25.1.0.dev2024121105 release + - max-core ==25.1.0.dev2024121214 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22932 - timestamp: 1733894234682 + size: 22936 + timestamp: 1734015648615 - kind: conda name: multidict version: 6.1.0 @@ -10059,19 +10059,20 @@ packages: - kind: conda name: transformers version: 4.47.0 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.0-pyhd8ed1ab_0.conda - sha256: b9cf6ae5fcd6c78dcaa24ebfd41580a4a10b0649ac726a44d3521f70fdece218 - md5: 495745078b8e18fe2dcc3267f4baae0d + url: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.0-pyhd8ed1ab_1.conda + sha256: d31821081219a0ede5c1f356b65a61ce98ac11e2df78b0eaa684c17c73389fbf + md5: 6d2ec1ddee8057d2d724a0ab0bb578a0 depends: - datasets !=2.5.0 - filelock - huggingface_hub >=0.23.0,<1.0 - numpy >=1.17 - packaging >=20.0 - - python >=3.8 + - python >=3.9 - pyyaml >=5.1 - regex !=2019.12.17 - requests @@ -10080,8 +10081,8 @@ packages: - tqdm >=4.27 license: Apache-2.0 license_family: APACHE - size: 3721837 - timestamp: 1733708797762 + size: 3726957 + timestamp: 1733948063517 - kind: conda name: typer version: 0.15.1 @@ -10345,12 +10346,12 @@ packages: timestamp: 1730214606664 - kind: conda name: watchfiles - version: 1.0.0 + version: 1.0.3 build: py312h12e396e_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/watchfiles-1.0.0-py312h12e396e_0.conda - sha256: a2a11a751d3fdd2bec79d876687136cee81d0125be40cebd3518042e1e15c349 - md5: b53a91a5cc50cf07f690a5d3b9f91db5 + url: https://conda.anaconda.org/conda-forge/linux-64/watchfiles-1.0.3-py312h12e396e_0.conda + sha256: c89755d8e8f6384b3ba13e41dcabb40bf690c38b9d61512e963129badb1ad332 + md5: b76a5ad00856af6e74da9c3e85fed0cc depends: - __glibc >=2.17,<3.0.a0 - anyio >=3.0.0 @@ -10361,16 +10362,16 @@ packages: - __glibc >=2.17 license: MIT license_family: MIT - size: 409700 - timestamp: 1732689603044 + size: 410432 + timestamp: 1733998892675 - kind: conda name: watchfiles - version: 1.0.0 + version: 1.0.3 build: py312h8cbf658_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/watchfiles-1.0.0-py312h8cbf658_0.conda - sha256: 1d7fde47edacf01a81c0d9ac3f284d4d30982d33686c505374bfa2c7b02bbf8d - md5: 9ecaaf340ad422209a04fcf854fb4a3f + url: https://conda.anaconda.org/conda-forge/linux-aarch64/watchfiles-1.0.3-py312h8cbf658_0.conda + sha256: 9be9569c279dc6e7881e9b45fe9f0368218538c660641e2f8b0e023e72a6571c + md5: 3465c1a19634233abc2d1832ac01fd31 depends: - anyio >=3.0.0 - libgcc >=13 @@ -10381,16 +10382,16 @@ packages: - __glibc >=2.17 license: MIT license_family: MIT - size: 404235 - timestamp: 1732689685476 + size: 404239 + timestamp: 1733998941045 - kind: conda name: watchfiles - version: 1.0.0 + version: 1.0.3 build: py312hcd83bfe_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/watchfiles-1.0.0-py312hcd83bfe_0.conda - sha256: 554c4550813b744794fc70451c87d540d38138e6dc901993e85515ffa91087d2 - md5: 0eb2c3f65788f61f905d31ac062fe4b6 + url: https://conda.anaconda.org/conda-forge/osx-arm64/watchfiles-1.0.3-py312hcd83bfe_0.conda + sha256: b64b78a7d6384bf72a878256802c783c692fe641ab4b806fd7e9f45e18a5e3b4 + md5: 13b89e1aa72aa773806b1f59ec018b67 depends: - __osx >=11.0 - anyio >=3.0.0 @@ -10401,8 +10402,8 @@ packages: - __osx >=11.0 license: MIT license_family: MIT - size: 356744 - timestamp: 1732689860624 + size: 363162 + timestamp: 1733999215646 - kind: conda name: wcwidth version: 0.2.13 diff --git a/examples/operators/magic.lock b/examples/operators/magic.lock index 7d43e54e0f..1c8bfe01d7 100644 --- a/examples/operators/magic.lock +++ b/examples/operators/magic.lock @@ -87,7 +87,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.1.0-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-25_linux64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libcrc32c-1.1.2-h9c3ff4c_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.10.1-hbbe4b11_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.11.1-h332b0f4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.22-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20191231-he28a2e2_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda @@ -131,12 +131,12 @@ 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-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.modular.com/max-nightly/noarch/max-25.1.0.dev2024121214-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024121214-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024121214-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121214-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-25.1.0.dev2024121105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024121214-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 @@ -201,7 +201,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda @@ -212,7 +212,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/uvloop-0.21.0-py312h66e93f0_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/watchfiles-1.0.0-py312h12e396e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/watchfiles-1.0.3-py312h12e396e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/websockets-14.1-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.17.0-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.11-hb9d3cd8_1.conda @@ -306,7 +306,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlienc-1.1.0-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-25_linuxaarch64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcrc32c-1.1.2-h01db608_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcurl-8.10.1-h3ec0cbf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcurl-8.11.1-h6702fde_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libdeflate-1.22-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20191231-he28a2e2_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libev-4.33-h31becfc_2.conda @@ -350,12 +350,12 @@ 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-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.modular.com/max-nightly/noarch/max-25.1.0.dev2024121214-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024121214-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024121214-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121214-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-25.1.0.dev2024121105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024121214-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 @@ -420,7 +420,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py312h52516f5_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda @@ -431,7 +431,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/uvloop-0.21.0-py312hb2c0f52_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/watchfiles-1.0.0-py312h8cbf658_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/watchfiles-1.0.3-py312h8cbf658_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/websockets-14.1-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/wrapt-1.17.0-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxau-1.0.11-h86ecc28_1.conda @@ -522,7 +522,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlienc-1.1.0-hd74edd7_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-25_osxarm64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcrc32c-1.1.2-hbdafb3b_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.10.1-h13a7ad3_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.11.1-h73640d1_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.5-ha82da77_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.22-hd74edd7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20191231-hc8eb9b7_2.tar.bz2 @@ -560,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-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.modular.com/max-nightly/noarch/max-25.1.0.dev2024121214-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024121214-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024121214-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121214-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-25.1.0.dev2024121105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024121214-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 @@ -629,7 +629,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda @@ -640,7 +640,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/uvloop-0.21.0-py312h0bf5046_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/watchfiles-1.0.0-py312hcd83bfe_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/watchfiles-1.0.3-py312hcd83bfe_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/websockets-14.1-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/wrapt-1.17.0-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxau-1.0.11-hd74edd7_1.conda @@ -3795,65 +3795,65 @@ packages: timestamp: 1633683992603 - kind: conda name: libcurl - version: 8.10.1 - build: h13a7ad3_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.10.1-h13a7ad3_0.conda - sha256: 983a977c5627f975a930542c8aabb46089ec6ea72f28d9c4d3ee8eafaf2fc25a - md5: d84030d0863ffe7dea00b9a807fee961 + version: 8.11.1 + build: h332b0f4_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.11.1-h332b0f4_0.conda + sha256: 3cd4075b2a7b5562e46c8ec626f6f9ca57aeecaa94ff7df57eca26daa94c9906 + md5: 2b3e0081006dc21e8bf53a91c83a055c depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 - krb5 >=1.21.3,<1.22.0a0 - - libnghttp2 >=1.58.0,<2.0a0 - - libssh2 >=1.11.0,<2.0a0 + - libgcc >=13 + - libnghttp2 >=1.64.0,<2.0a0 + - libssh2 >=1.11.1,<2.0a0 - libzlib >=1.3.1,<2.0a0 - - openssl >=3.3.2,<4.0a0 + - openssl >=3.4.0,<4.0a0 - zstd >=1.5.6,<1.6.0a0 license: curl license_family: MIT - size: 379948 - timestamp: 1726660033582 + size: 423011 + timestamp: 1733999897624 - kind: conda name: libcurl - version: 8.10.1 - build: h3ec0cbf_0 + version: 8.11.1 + build: h6702fde_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libcurl-8.10.1-h3ec0cbf_0.conda - sha256: 7c4983001c727f713b4448280ed4803d301087c184cd2819ba0b788ca62b73d1 - md5: f43539295c4e0cd15202d41bc72b8a26 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libcurl-8.11.1-h6702fde_0.conda + sha256: 9fc65d21a58f4aad1bc39dfb94a178893aeb035850c5cf0ed9736674279f390b + md5: 7dec1cd271c403d1636bda5aa388a55d depends: - krb5 >=1.21.3,<1.22.0a0 - libgcc >=13 - - libnghttp2 >=1.58.0,<2.0a0 - - libssh2 >=1.11.0,<2.0a0 + - libnghttp2 >=1.64.0,<2.0a0 + - libssh2 >=1.11.1,<2.0a0 - libzlib >=1.3.1,<2.0a0 - - openssl >=3.3.2,<4.0a0 + - openssl >=3.4.0,<4.0a0 - zstd >=1.5.6,<1.6.0a0 license: curl license_family: MIT - size: 439171 - timestamp: 1726659843118 + size: 440737 + timestamp: 1733999835504 - kind: conda name: libcurl - version: 8.10.1 - build: hbbe4b11_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.10.1-hbbe4b11_0.conda - sha256: 54e6114dfce566c3a22ad3b7b309657e3600cdb668398e95f1301360d5d52c99 - md5: 6e801c50a40301f6978c53976917b277 + version: 8.11.1 + build: h73640d1_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.11.1-h73640d1_0.conda + sha256: f47c35938144c23278987c7d12096f6a42d7c850ffc277222b032073412383b6 + md5: 46d7524cabfdd199bffe63f8f19a552b depends: - - __glibc >=2.17,<3.0.a0 + - __osx >=11.0 - krb5 >=1.21.3,<1.22.0a0 - - libgcc >=13 - - libnghttp2 >=1.58.0,<2.0a0 - - libssh2 >=1.11.0,<2.0a0 + - libnghttp2 >=1.64.0,<2.0a0 + - libssh2 >=1.11.1,<2.0a0 - libzlib >=1.3.1,<2.0a0 - - openssl >=3.3.2,<4.0a0 + - openssl >=3.4.0,<4.0a0 - zstd >=1.5.6,<1.6.0a0 license: curl license_family: MIT - size: 424900 - timestamp: 1726659794676 + size: 385098 + timestamp: 1734000160270 - kind: conda name: libcxx version: 19.1.5 @@ -5905,76 +5905,76 @@ packages: timestamp: 1733219945697 - kind: conda name: max - version: 25.1.0.dev2024121105 + version: 25.1.0.dev2024121214 build: release subdir: noarch noarch: python - 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 + url: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024121214-release.conda + sha256: eeadd1df827192ff0d8af9e48fc61238f742fb14976023b838413283a4e1798b + md5: 2447f44e5547cfa431e089835e7532b1 + depends: + - max-core ==25.1.0.dev2024121214 release + - max-python >=25.1.0.dev2024121214,<26.0a0 + - mojo-jupyter ==25.1.0.dev2024121214 release + - mblack ==25.1.0.dev2024121214 release license: LicenseRef-Modular-Proprietary - size: 9923 - timestamp: 1733894234676 + size: 9920 + timestamp: 1734015648611 - kind: conda name: max-core - version: 25.1.0.dev2024121105 + version: 25.1.0.dev2024121214 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024121105-release.conda - sha256: 23a9b3a31eddf232c2d91b45362eb79b0a8dfd4842e7d41f2719aa40bc53c37a - md5: c95a33b823ca2f36431033c1122212ba + url: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024121214-release.conda + sha256: 7b4cfef5dabe1854572b902f5a85df32c115133cb230c074db466199cedd2988 + md5: a4a78932539c233f70b75680656a128b depends: - - mblack ==25.1.0.dev2024121105 release + - mblack ==25.1.0.dev2024121214 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 247768202 - timestamp: 1733894244133 + size: 247826462 + timestamp: 1734015648609 - kind: conda name: max-core - version: 25.1.0.dev2024121105 + version: 25.1.0.dev2024121214 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024121105-release.conda - sha256: 22bb680d1e11a3640ae28b9d9faafa089b92a2fd6474ebdcc6b5c0e4da618664 - md5: 6e976d732a16860852a22686f7334ce4 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024121214-release.conda + sha256: e264dadaabf3542d88790a591e5d0007e810d67b777b7f298d71a7e04c1ceb34 + md5: cfffd2826ce46aaefb9553bb965769b6 depends: - - mblack ==25.1.0.dev2024121105 release + - mblack ==25.1.0.dev2024121214 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 251679560 - timestamp: 1733894234674 + size: 251673819 + timestamp: 1734015642960 - kind: conda name: max-core - version: 25.1.0.dev2024121105 + version: 25.1.0.dev2024121214 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024121105-release.conda - sha256: 5733d843377af66e94de2dd91cd8872d8f49baac81c6120ce2294a866d2f227f - md5: 84d6da2eb7585c49e1f71deec028c11a + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024121214-release.conda + sha256: 5f59a57c7bc3832028063c308ee55f3ba5dae88052e08745ae827f971827fb2e + md5: c55ad17758cdcd82a6d62c8d5fa6c50a depends: - - mblack ==25.1.0.dev2024121105 release + - mblack ==25.1.0.dev2024121214 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 212215227 - timestamp: 1733894448570 + size: 212287379 + timestamp: 1734016112398 - kind: conda name: max-python - version: 25.1.0.dev2024121105 + version: 25.1.0.dev2024121214 build: 3.12release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024121105-3.12release.conda - sha256: ad71429b6fa8d4e972a20a0a8f684420b6f162fdb1b22d36c32758a4f0f35d54 - md5: b7acc92cf44907a4c460026ad9c2cc45 + url: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024121214-3.12release.conda + sha256: e275ce2ee258e9b3e5d335758728c62639307b5fbc26ff42137a2d9ba6cef314 + md5: 865bcedcfbd6d2064ca8d896094148b6 depends: - - max-core ==25.1.0.dev2024121105 release + - max-core ==25.1.0.dev2024121214 release - python 3.12.* - fastapi - httpx @@ -5997,18 +5997,18 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 123912464 - timestamp: 1733894244143 + size: 124001405 + timestamp: 1734015648618 - kind: conda name: max-python - version: 25.1.0.dev2024121105 + version: 25.1.0.dev2024121214 build: 3.12release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024121105-3.12release.conda - sha256: 26f0f84532443a5e78098c17127dd0a04ca05a7c107e50aebc6b92abc9fe8a9f - md5: c4908b0138b01e14f9a8002624b42e25 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024121214-3.12release.conda + sha256: fc4ed0f25e87e5ef9082bf23b03f53f9a5f16e00493f5566820c7c62a2038e58 + md5: 705a3d5afebfa45a4d0a97fdabaad520 depends: - - max-core ==25.1.0.dev2024121105 release + - max-core ==25.1.0.dev2024121214 release - python 3.12.* - fastapi - httpx @@ -6031,18 +6031,18 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 127580719 - timestamp: 1733894234684 + size: 127725024 + timestamp: 1734015642970 - kind: conda name: max-python - version: 25.1.0.dev2024121105 + version: 25.1.0.dev2024121214 build: 3.12release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024121105-3.12release.conda - sha256: 42e409756f37919fdfda6e86d45e1814f68c102f23a8be42dd88b4f3dd816fae - md5: 4a180f1ab8a83b78d7282baf60e9280b + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024121214-3.12release.conda + sha256: 289119c20859195f0d86fbd67c4814d65604913c12086cac9591a3371323d1d6 + md5: 8f2676a5b6775eeb835c6e0db97bc3b2 depends: - - max-core ==25.1.0.dev2024121105 release + - max-core ==25.1.0.dev2024121214 release - python 3.12.* - fastapi - httpx @@ -6065,17 +6065,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 112620525 - timestamp: 1733894448573 + size: 112807365 + timestamp: 1734016112401 - kind: conda name: mblack - version: 25.1.0.dev2024121105 + version: 25.1.0.dev2024121214 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121105-release.conda - sha256: ee5c623d7908731bc5c42079cbb5d7ac461481c5bcaf615e25c4c8263f041793 - md5: 1271b7b52a8cc538e26ffbdd22743d3a + url: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121214-release.conda + sha256: 92acaf798bb3834675c7358f2d68f4d792036e166957fa6dbc6ff14f843ede4f + md5: 4de530f1fe2a901756c581249180eca9 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -6085,8 +6085,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130789 - timestamp: 1733894234681 + size: 130794 + timestamp: 1734015648615 - kind: conda name: mdurl version: 0.1.2 @@ -6105,21 +6105,21 @@ packages: timestamp: 1733255681319 - kind: conda name: mojo-jupyter - version: 25.1.0.dev2024121105 + version: 25.1.0.dev2024121214 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024121105-release.conda - sha256: c59130a6e8190e55b8881bd43429377da5368df6afed78b04c8df236d253a047 - md5: 35cc55bad72e3b9d0d490ff7af58c446 + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024121214-release.conda + sha256: 72f123af334c1bcfe47977593401441d281156684350568147ab6c62f7717dc0 + md5: a631623d32a0b423b4ac774dbe79a918 depends: - - max-core ==25.1.0.dev2024121105 release + - max-core ==25.1.0.dev2024121214 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22932 - timestamp: 1733894234682 + size: 22936 + timestamp: 1734015648615 - kind: conda name: multidict version: 6.1.0 @@ -8385,19 +8385,20 @@ packages: - kind: conda name: transformers version: 4.47.0 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.0-pyhd8ed1ab_0.conda - sha256: b9cf6ae5fcd6c78dcaa24ebfd41580a4a10b0649ac726a44d3521f70fdece218 - md5: 495745078b8e18fe2dcc3267f4baae0d + url: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.0-pyhd8ed1ab_1.conda + sha256: d31821081219a0ede5c1f356b65a61ce98ac11e2df78b0eaa684c17c73389fbf + md5: 6d2ec1ddee8057d2d724a0ab0bb578a0 depends: - datasets !=2.5.0 - filelock - huggingface_hub >=0.23.0,<1.0 - numpy >=1.17 - packaging >=20.0 - - python >=3.8 + - python >=3.9 - pyyaml >=5.1 - regex !=2019.12.17 - requests @@ -8406,8 +8407,8 @@ packages: - tqdm >=4.27 license: Apache-2.0 license_family: APACHE - size: 3721837 - timestamp: 1733708797762 + size: 3726957 + timestamp: 1733948063517 - kind: conda name: typer version: 0.15.1 @@ -8625,12 +8626,12 @@ packages: timestamp: 1730214606664 - kind: conda name: watchfiles - version: 1.0.0 + version: 1.0.3 build: py312h12e396e_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/watchfiles-1.0.0-py312h12e396e_0.conda - sha256: a2a11a751d3fdd2bec79d876687136cee81d0125be40cebd3518042e1e15c349 - md5: b53a91a5cc50cf07f690a5d3b9f91db5 + url: https://conda.anaconda.org/conda-forge/linux-64/watchfiles-1.0.3-py312h12e396e_0.conda + sha256: c89755d8e8f6384b3ba13e41dcabb40bf690c38b9d61512e963129badb1ad332 + md5: b76a5ad00856af6e74da9c3e85fed0cc depends: - __glibc >=2.17,<3.0.a0 - anyio >=3.0.0 @@ -8641,16 +8642,16 @@ packages: - __glibc >=2.17 license: MIT license_family: MIT - size: 409700 - timestamp: 1732689603044 + size: 410432 + timestamp: 1733998892675 - kind: conda name: watchfiles - version: 1.0.0 + version: 1.0.3 build: py312h8cbf658_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/watchfiles-1.0.0-py312h8cbf658_0.conda - sha256: 1d7fde47edacf01a81c0d9ac3f284d4d30982d33686c505374bfa2c7b02bbf8d - md5: 9ecaaf340ad422209a04fcf854fb4a3f + url: https://conda.anaconda.org/conda-forge/linux-aarch64/watchfiles-1.0.3-py312h8cbf658_0.conda + sha256: 9be9569c279dc6e7881e9b45fe9f0368218538c660641e2f8b0e023e72a6571c + md5: 3465c1a19634233abc2d1832ac01fd31 depends: - anyio >=3.0.0 - libgcc >=13 @@ -8661,16 +8662,16 @@ packages: - __glibc >=2.17 license: MIT license_family: MIT - size: 404235 - timestamp: 1732689685476 + size: 404239 + timestamp: 1733998941045 - kind: conda name: watchfiles - version: 1.0.0 + version: 1.0.3 build: py312hcd83bfe_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/watchfiles-1.0.0-py312hcd83bfe_0.conda - sha256: 554c4550813b744794fc70451c87d540d38138e6dc901993e85515ffa91087d2 - md5: 0eb2c3f65788f61f905d31ac062fe4b6 + url: https://conda.anaconda.org/conda-forge/osx-arm64/watchfiles-1.0.3-py312hcd83bfe_0.conda + sha256: b64b78a7d6384bf72a878256802c783c692fe641ab4b806fd7e9f45e18a5e3b4 + md5: 13b89e1aa72aa773806b1f59ec018b67 depends: - __osx >=11.0 - anyio >=3.0.0 @@ -8681,8 +8682,8 @@ packages: - __osx >=11.0 license: MIT license_family: MIT - size: 356744 - timestamp: 1732689860624 + size: 363162 + timestamp: 1733999215646 - kind: conda name: websockets version: '14.1' diff --git a/magic.lock b/magic.lock index 912dc45d9a..128f5e3fff 100644 --- a/magic.lock +++ b/magic.lock @@ -87,7 +87,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.1.0-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-25_linux64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libcrc32c-1.1.2-h9c3ff4c_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.10.1-hbbe4b11_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.11.1-h332b0f4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.22-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20191231-he28a2e2_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda @@ -132,12 +132,12 @@ 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-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.modular.com/max-nightly/noarch/max-25.1.0.dev2024121214-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024121214-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024121214-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121214-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-25.1.0.dev2024121105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024121214-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 @@ -202,7 +202,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda @@ -213,7 +213,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/uvloop-0.21.0-py312h66e93f0_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/watchfiles-1.0.0-py312h12e396e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/watchfiles-1.0.3-py312h12e396e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/websockets-14.1-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.17.0-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.11-hb9d3cd8_1.conda @@ -307,7 +307,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlienc-1.1.0-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-25_linuxaarch64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcrc32c-1.1.2-h01db608_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcurl-8.10.1-h3ec0cbf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcurl-8.11.1-h6702fde_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libdeflate-1.22-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20191231-he28a2e2_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libev-4.33-h31becfc_2.conda @@ -352,12 +352,12 @@ 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-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.modular.com/max-nightly/noarch/max-25.1.0.dev2024121214-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024121214-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024121214-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121214-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-25.1.0.dev2024121105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024121214-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 @@ -422,7 +422,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py312h52516f5_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda @@ -433,7 +433,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/uvloop-0.21.0-py312hb2c0f52_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/watchfiles-1.0.0-py312h8cbf658_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/watchfiles-1.0.3-py312h8cbf658_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/websockets-14.1-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/wrapt-1.17.0-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxau-1.0.11-h86ecc28_1.conda @@ -524,7 +524,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlienc-1.1.0-hd74edd7_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-25_osxarm64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcrc32c-1.1.2-hbdafb3b_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.10.1-h13a7ad3_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.11.1-h73640d1_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.5-ha82da77_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.22-hd74edd7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20191231-hc8eb9b7_2.tar.bz2 @@ -563,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-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.modular.com/max-nightly/noarch/max-25.1.0.dev2024121214-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024121214-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024121214-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121214-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-25.1.0.dev2024121105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024121214-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 @@ -632,7 +632,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda @@ -643,7 +643,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/uvloop-0.21.0-py312h0bf5046_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/watchfiles-1.0.0-py312hcd83bfe_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/watchfiles-1.0.3-py312hcd83bfe_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/websockets-14.1-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/wrapt-1.17.0-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxau-1.0.11-hd74edd7_1.conda @@ -3798,65 +3798,65 @@ packages: timestamp: 1633683992603 - kind: conda name: libcurl - version: 8.10.1 - build: h13a7ad3_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.10.1-h13a7ad3_0.conda - sha256: 983a977c5627f975a930542c8aabb46089ec6ea72f28d9c4d3ee8eafaf2fc25a - md5: d84030d0863ffe7dea00b9a807fee961 + version: 8.11.1 + build: h332b0f4_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.11.1-h332b0f4_0.conda + sha256: 3cd4075b2a7b5562e46c8ec626f6f9ca57aeecaa94ff7df57eca26daa94c9906 + md5: 2b3e0081006dc21e8bf53a91c83a055c depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 - krb5 >=1.21.3,<1.22.0a0 - - libnghttp2 >=1.58.0,<2.0a0 - - libssh2 >=1.11.0,<2.0a0 + - libgcc >=13 + - libnghttp2 >=1.64.0,<2.0a0 + - libssh2 >=1.11.1,<2.0a0 - libzlib >=1.3.1,<2.0a0 - - openssl >=3.3.2,<4.0a0 + - openssl >=3.4.0,<4.0a0 - zstd >=1.5.6,<1.6.0a0 license: curl license_family: MIT - size: 379948 - timestamp: 1726660033582 + size: 423011 + timestamp: 1733999897624 - kind: conda name: libcurl - version: 8.10.1 - build: h3ec0cbf_0 + version: 8.11.1 + build: h6702fde_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libcurl-8.10.1-h3ec0cbf_0.conda - sha256: 7c4983001c727f713b4448280ed4803d301087c184cd2819ba0b788ca62b73d1 - md5: f43539295c4e0cd15202d41bc72b8a26 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libcurl-8.11.1-h6702fde_0.conda + sha256: 9fc65d21a58f4aad1bc39dfb94a178893aeb035850c5cf0ed9736674279f390b + md5: 7dec1cd271c403d1636bda5aa388a55d depends: - krb5 >=1.21.3,<1.22.0a0 - libgcc >=13 - - libnghttp2 >=1.58.0,<2.0a0 - - libssh2 >=1.11.0,<2.0a0 + - libnghttp2 >=1.64.0,<2.0a0 + - libssh2 >=1.11.1,<2.0a0 - libzlib >=1.3.1,<2.0a0 - - openssl >=3.3.2,<4.0a0 + - openssl >=3.4.0,<4.0a0 - zstd >=1.5.6,<1.6.0a0 license: curl license_family: MIT - size: 439171 - timestamp: 1726659843118 + size: 440737 + timestamp: 1733999835504 - kind: conda name: libcurl - version: 8.10.1 - build: hbbe4b11_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.10.1-hbbe4b11_0.conda - sha256: 54e6114dfce566c3a22ad3b7b309657e3600cdb668398e95f1301360d5d52c99 - md5: 6e801c50a40301f6978c53976917b277 + version: 8.11.1 + build: h73640d1_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.11.1-h73640d1_0.conda + sha256: f47c35938144c23278987c7d12096f6a42d7c850ffc277222b032073412383b6 + md5: 46d7524cabfdd199bffe63f8f19a552b depends: - - __glibc >=2.17,<3.0.a0 + - __osx >=11.0 - krb5 >=1.21.3,<1.22.0a0 - - libgcc >=13 - - libnghttp2 >=1.58.0,<2.0a0 - - libssh2 >=1.11.0,<2.0a0 + - libnghttp2 >=1.64.0,<2.0a0 + - libssh2 >=1.11.1,<2.0a0 - libzlib >=1.3.1,<2.0a0 - - openssl >=3.3.2,<4.0a0 + - openssl >=3.4.0,<4.0a0 - zstd >=1.5.6,<1.6.0a0 license: curl license_family: MIT - size: 424900 - timestamp: 1726659794676 + size: 385098 + timestamp: 1734000160270 - kind: conda name: libcxx version: 19.1.5 @@ -5923,76 +5923,76 @@ packages: timestamp: 1733219945697 - kind: conda name: max - version: 25.1.0.dev2024121105 + version: 25.1.0.dev2024121214 build: release subdir: noarch noarch: python - 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 + url: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024121214-release.conda + sha256: eeadd1df827192ff0d8af9e48fc61238f742fb14976023b838413283a4e1798b + md5: 2447f44e5547cfa431e089835e7532b1 + depends: + - max-core ==25.1.0.dev2024121214 release + - max-python >=25.1.0.dev2024121214,<26.0a0 + - mojo-jupyter ==25.1.0.dev2024121214 release + - mblack ==25.1.0.dev2024121214 release license: LicenseRef-Modular-Proprietary - size: 9923 - timestamp: 1733894234676 + size: 9920 + timestamp: 1734015648611 - kind: conda name: max-core - version: 25.1.0.dev2024121105 + version: 25.1.0.dev2024121214 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024121105-release.conda - sha256: 23a9b3a31eddf232c2d91b45362eb79b0a8dfd4842e7d41f2719aa40bc53c37a - md5: c95a33b823ca2f36431033c1122212ba + url: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024121214-release.conda + sha256: 7b4cfef5dabe1854572b902f5a85df32c115133cb230c074db466199cedd2988 + md5: a4a78932539c233f70b75680656a128b depends: - - mblack ==25.1.0.dev2024121105 release + - mblack ==25.1.0.dev2024121214 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 247768202 - timestamp: 1733894244133 + size: 247826462 + timestamp: 1734015648609 - kind: conda name: max-core - version: 25.1.0.dev2024121105 + version: 25.1.0.dev2024121214 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024121105-release.conda - sha256: 22bb680d1e11a3640ae28b9d9faafa089b92a2fd6474ebdcc6b5c0e4da618664 - md5: 6e976d732a16860852a22686f7334ce4 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024121214-release.conda + sha256: e264dadaabf3542d88790a591e5d0007e810d67b777b7f298d71a7e04c1ceb34 + md5: cfffd2826ce46aaefb9553bb965769b6 depends: - - mblack ==25.1.0.dev2024121105 release + - mblack ==25.1.0.dev2024121214 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 251679560 - timestamp: 1733894234674 + size: 251673819 + timestamp: 1734015642960 - kind: conda name: max-core - version: 25.1.0.dev2024121105 + version: 25.1.0.dev2024121214 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024121105-release.conda - sha256: 5733d843377af66e94de2dd91cd8872d8f49baac81c6120ce2294a866d2f227f - md5: 84d6da2eb7585c49e1f71deec028c11a + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024121214-release.conda + sha256: 5f59a57c7bc3832028063c308ee55f3ba5dae88052e08745ae827f971827fb2e + md5: c55ad17758cdcd82a6d62c8d5fa6c50a depends: - - mblack ==25.1.0.dev2024121105 release + - mblack ==25.1.0.dev2024121214 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 212215227 - timestamp: 1733894448570 + size: 212287379 + timestamp: 1734016112398 - kind: conda name: max-python - version: 25.1.0.dev2024121105 + version: 25.1.0.dev2024121214 build: 3.12release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024121105-3.12release.conda - sha256: ad71429b6fa8d4e972a20a0a8f684420b6f162fdb1b22d36c32758a4f0f35d54 - md5: b7acc92cf44907a4c460026ad9c2cc45 + url: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024121214-3.12release.conda + sha256: e275ce2ee258e9b3e5d335758728c62639307b5fbc26ff42137a2d9ba6cef314 + md5: 865bcedcfbd6d2064ca8d896094148b6 depends: - - max-core ==25.1.0.dev2024121105 release + - max-core ==25.1.0.dev2024121214 release - python 3.12.* - fastapi - httpx @@ -6015,18 +6015,18 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 123912464 - timestamp: 1733894244143 + size: 124001405 + timestamp: 1734015648618 - kind: conda name: max-python - version: 25.1.0.dev2024121105 + version: 25.1.0.dev2024121214 build: 3.12release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024121105-3.12release.conda - sha256: 26f0f84532443a5e78098c17127dd0a04ca05a7c107e50aebc6b92abc9fe8a9f - md5: c4908b0138b01e14f9a8002624b42e25 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024121214-3.12release.conda + sha256: fc4ed0f25e87e5ef9082bf23b03f53f9a5f16e00493f5566820c7c62a2038e58 + md5: 705a3d5afebfa45a4d0a97fdabaad520 depends: - - max-core ==25.1.0.dev2024121105 release + - max-core ==25.1.0.dev2024121214 release - python 3.12.* - fastapi - httpx @@ -6049,18 +6049,18 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 127580719 - timestamp: 1733894234684 + size: 127725024 + timestamp: 1734015642970 - kind: conda name: max-python - version: 25.1.0.dev2024121105 + version: 25.1.0.dev2024121214 build: 3.12release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024121105-3.12release.conda - sha256: 42e409756f37919fdfda6e86d45e1814f68c102f23a8be42dd88b4f3dd816fae - md5: 4a180f1ab8a83b78d7282baf60e9280b + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024121214-3.12release.conda + sha256: 289119c20859195f0d86fbd67c4814d65604913c12086cac9591a3371323d1d6 + md5: 8f2676a5b6775eeb835c6e0db97bc3b2 depends: - - max-core ==25.1.0.dev2024121105 release + - max-core ==25.1.0.dev2024121214 release - python 3.12.* - fastapi - httpx @@ -6083,17 +6083,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 112620525 - timestamp: 1733894448573 + size: 112807365 + timestamp: 1734016112401 - kind: conda name: mblack - version: 25.1.0.dev2024121105 + version: 25.1.0.dev2024121214 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121105-release.conda - sha256: ee5c623d7908731bc5c42079cbb5d7ac461481c5bcaf615e25c4c8263f041793 - md5: 1271b7b52a8cc538e26ffbdd22743d3a + url: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121214-release.conda + sha256: 92acaf798bb3834675c7358f2d68f4d792036e166957fa6dbc6ff14f843ede4f + md5: 4de530f1fe2a901756c581249180eca9 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -6103,8 +6103,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130789 - timestamp: 1733894234681 + size: 130794 + timestamp: 1734015648615 - kind: conda name: mdurl version: 0.1.2 @@ -6123,21 +6123,21 @@ packages: timestamp: 1733255681319 - kind: conda name: mojo-jupyter - version: 25.1.0.dev2024121105 + version: 25.1.0.dev2024121214 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024121105-release.conda - sha256: c59130a6e8190e55b8881bd43429377da5368df6afed78b04c8df236d253a047 - md5: 35cc55bad72e3b9d0d490ff7af58c446 + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024121214-release.conda + sha256: 72f123af334c1bcfe47977593401441d281156684350568147ab6c62f7717dc0 + md5: a631623d32a0b423b4ac774dbe79a918 depends: - - max-core ==25.1.0.dev2024121105 release + - max-core ==25.1.0.dev2024121214 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22932 - timestamp: 1733894234682 + size: 22936 + timestamp: 1734015648615 - kind: conda name: multidict version: 6.1.0 @@ -8403,19 +8403,20 @@ packages: - kind: conda name: transformers version: 4.47.0 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.0-pyhd8ed1ab_0.conda - sha256: b9cf6ae5fcd6c78dcaa24ebfd41580a4a10b0649ac726a44d3521f70fdece218 - md5: 495745078b8e18fe2dcc3267f4baae0d + url: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.0-pyhd8ed1ab_1.conda + sha256: d31821081219a0ede5c1f356b65a61ce98ac11e2df78b0eaa684c17c73389fbf + md5: 6d2ec1ddee8057d2d724a0ab0bb578a0 depends: - datasets !=2.5.0 - filelock - huggingface_hub >=0.23.0,<1.0 - numpy >=1.17 - packaging >=20.0 - - python >=3.8 + - python >=3.9 - pyyaml >=5.1 - regex !=2019.12.17 - requests @@ -8424,8 +8425,8 @@ packages: - tqdm >=4.27 license: Apache-2.0 license_family: APACHE - size: 3721837 - timestamp: 1733708797762 + size: 3726957 + timestamp: 1733948063517 - kind: conda name: typer version: 0.15.1 @@ -8643,12 +8644,12 @@ packages: timestamp: 1730214606664 - kind: conda name: watchfiles - version: 1.0.0 + version: 1.0.3 build: py312h12e396e_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/watchfiles-1.0.0-py312h12e396e_0.conda - sha256: a2a11a751d3fdd2bec79d876687136cee81d0125be40cebd3518042e1e15c349 - md5: b53a91a5cc50cf07f690a5d3b9f91db5 + url: https://conda.anaconda.org/conda-forge/linux-64/watchfiles-1.0.3-py312h12e396e_0.conda + sha256: c89755d8e8f6384b3ba13e41dcabb40bf690c38b9d61512e963129badb1ad332 + md5: b76a5ad00856af6e74da9c3e85fed0cc depends: - __glibc >=2.17,<3.0.a0 - anyio >=3.0.0 @@ -8659,16 +8660,16 @@ packages: - __glibc >=2.17 license: MIT license_family: MIT - size: 409700 - timestamp: 1732689603044 + size: 410432 + timestamp: 1733998892675 - kind: conda name: watchfiles - version: 1.0.0 + version: 1.0.3 build: py312h8cbf658_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/watchfiles-1.0.0-py312h8cbf658_0.conda - sha256: 1d7fde47edacf01a81c0d9ac3f284d4d30982d33686c505374bfa2c7b02bbf8d - md5: 9ecaaf340ad422209a04fcf854fb4a3f + url: https://conda.anaconda.org/conda-forge/linux-aarch64/watchfiles-1.0.3-py312h8cbf658_0.conda + sha256: 9be9569c279dc6e7881e9b45fe9f0368218538c660641e2f8b0e023e72a6571c + md5: 3465c1a19634233abc2d1832ac01fd31 depends: - anyio >=3.0.0 - libgcc >=13 @@ -8679,16 +8680,16 @@ packages: - __glibc >=2.17 license: MIT license_family: MIT - size: 404235 - timestamp: 1732689685476 + size: 404239 + timestamp: 1733998941045 - kind: conda name: watchfiles - version: 1.0.0 + version: 1.0.3 build: py312hcd83bfe_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/watchfiles-1.0.0-py312hcd83bfe_0.conda - sha256: 554c4550813b744794fc70451c87d540d38138e6dc901993e85515ffa91087d2 - md5: 0eb2c3f65788f61f905d31ac062fe4b6 + url: https://conda.anaconda.org/conda-forge/osx-arm64/watchfiles-1.0.3-py312hcd83bfe_0.conda + sha256: b64b78a7d6384bf72a878256802c783c692fe641ab4b806fd7e9f45e18a5e3b4 + md5: 13b89e1aa72aa773806b1f59ec018b67 depends: - __osx >=11.0 - anyio >=3.0.0 @@ -8699,8 +8700,8 @@ packages: - __osx >=11.0 license: MIT license_family: MIT - size: 356744 - timestamp: 1732689860624 + size: 363162 + timestamp: 1733999215646 - kind: conda name: websockets version: '14.1' From c05884d66f25db0d5c29b3b7ca8248d6a306f6f5 Mon Sep 17 00:00:00 2001 From: modularbot Date: Fri, 13 Dec 2024 06:31:39 +0000 Subject: [PATCH 090/509] Update lockfiles to point to latest nightly version: 25.1.0.dev2024121305 --- examples/life/magic.lock | 162 +++++++++++++++++----------------- examples/magic.lock | 162 +++++++++++++++++----------------- examples/notebooks/magic.lock | 160 ++++++++++++++++----------------- examples/operators/magic.lock | 162 +++++++++++++++++----------------- magic.lock | 162 +++++++++++++++++----------------- 5 files changed, 404 insertions(+), 404 deletions(-) diff --git a/examples/life/magic.lock b/examples/life/magic.lock index 11ef646bda..fa908ca728 100644 --- a/examples/life/magic.lock +++ b/examples/life/magic.lock @@ -170,12 +170,12 @@ 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-25.1.0.dev2024121214-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024121214-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024121214-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121214-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024121305-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024121305-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024121305-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121305-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-25.1.0.dev2024121214-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024121305-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_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.15-py312h98912ed_1.conda @@ -447,12 +447,12 @@ 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-25.1.0.dev2024121214-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024121214-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024121214-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121214-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024121305-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024121305-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024121305-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121305-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-25.1.0.dev2024121214-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024121305-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_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.15-py312hdd3e373_1.conda @@ -707,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-25.1.0.dev2024121214-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024121214-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024121214-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121214-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024121305-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024121305-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024121305-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121305-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-25.1.0.dev2024121214-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024121305-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 @@ -7684,76 +7684,76 @@ packages: timestamp: 1733219945697 - kind: conda name: max - version: 25.1.0.dev2024121214 + version: 25.1.0.dev2024121305 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024121214-release.conda - sha256: eeadd1df827192ff0d8af9e48fc61238f742fb14976023b838413283a4e1798b - md5: 2447f44e5547cfa431e089835e7532b1 - depends: - - max-core ==25.1.0.dev2024121214 release - - max-python >=25.1.0.dev2024121214,<26.0a0 - - mojo-jupyter ==25.1.0.dev2024121214 release - - mblack ==25.1.0.dev2024121214 release + url: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024121305-release.conda + sha256: 0934ef5364dceceb5e0c786f92bf537a2414e898a00f481b8c8472db5e75f288 + md5: 7e5a852508eeef653e57b0e2d997d6f0 + depends: + - max-core ==25.1.0.dev2024121305 release + - max-python >=25.1.0.dev2024121305,<26.0a0 + - mojo-jupyter ==25.1.0.dev2024121305 release + - mblack ==25.1.0.dev2024121305 release license: LicenseRef-Modular-Proprietary - size: 9920 - timestamp: 1734015648611 + size: 9911 + timestamp: 1734067047897 - kind: conda name: max-core - version: 25.1.0.dev2024121214 + version: 25.1.0.dev2024121305 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024121214-release.conda - sha256: 7b4cfef5dabe1854572b902f5a85df32c115133cb230c074db466199cedd2988 - md5: a4a78932539c233f70b75680656a128b + url: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024121305-release.conda + sha256: 7a345ab21e1bc5db74684e165dbe92172631b15637e5235e8b55b75aa717b36e + md5: a092cd9f73e38d8c5a8e7421a65d6ec2 depends: - - mblack ==25.1.0.dev2024121214 release + - mblack ==25.1.0.dev2024121305 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 247826462 - timestamp: 1734015648609 + size: 247758730 + timestamp: 1734067130820 - kind: conda name: max-core - version: 25.1.0.dev2024121214 + version: 25.1.0.dev2024121305 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024121214-release.conda - sha256: e264dadaabf3542d88790a591e5d0007e810d67b777b7f298d71a7e04c1ceb34 - md5: cfffd2826ce46aaefb9553bb965769b6 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024121305-release.conda + sha256: ad1ba0f0de5a52214dd1a6d9650b82db3bb87ffbdac4426db051c0d23264ee6a + md5: aae29a11aa59123729f374c236e9ae15 depends: - - mblack ==25.1.0.dev2024121214 release + - mblack ==25.1.0.dev2024121305 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 251673819 - timestamp: 1734015642960 + size: 251654128 + timestamp: 1734067047896 - kind: conda name: max-core - version: 25.1.0.dev2024121214 + version: 25.1.0.dev2024121305 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024121214-release.conda - sha256: 5f59a57c7bc3832028063c308ee55f3ba5dae88052e08745ae827f971827fb2e - md5: c55ad17758cdcd82a6d62c8d5fa6c50a + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024121305-release.conda + sha256: 1d4409c69d60650860c24c7833e7b64f5cca00a2fa7f3c8bc3fe69f27d0bb004 + md5: 9cac1246d0cda9ddf123b51868be3da4 depends: - - mblack ==25.1.0.dev2024121214 release + - mblack ==25.1.0.dev2024121305 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 212287379 - timestamp: 1734016112398 + size: 212260365 + timestamp: 1734067231658 - kind: conda name: max-python - version: 25.1.0.dev2024121214 + version: 25.1.0.dev2024121305 build: 3.12release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024121214-3.12release.conda - sha256: e275ce2ee258e9b3e5d335758728c62639307b5fbc26ff42137a2d9ba6cef314 - md5: 865bcedcfbd6d2064ca8d896094148b6 + url: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024121305-3.12release.conda + sha256: 41468e52a6cfaab53f4f1f9227d37e94d97bf0037e3959b5738b17c841aa4853 + md5: 3d0543451b60f19e627a7a02e417dec7 depends: - - max-core ==25.1.0.dev2024121214 release + - max-core ==25.1.0.dev2024121305 release - python 3.12.* - fastapi - httpx @@ -7776,18 +7776,18 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 124001405 - timestamp: 1734015648618 + size: 123962431 + timestamp: 1734067130830 - kind: conda name: max-python - version: 25.1.0.dev2024121214 + version: 25.1.0.dev2024121305 build: 3.12release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024121214-3.12release.conda - sha256: fc4ed0f25e87e5ef9082bf23b03f53f9a5f16e00493f5566820c7c62a2038e58 - md5: 705a3d5afebfa45a4d0a97fdabaad520 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024121305-3.12release.conda + sha256: 7f183e065b118867efe93b52a6e91afccb609bd53b78efc4566671b9a827bf1a + md5: 6a0e9f6376835e0267a6c4e74a126dc6 depends: - - max-core ==25.1.0.dev2024121214 release + - max-core ==25.1.0.dev2024121305 release - python 3.12.* - fastapi - httpx @@ -7810,18 +7810,18 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 127725024 - timestamp: 1734015642970 + size: 127728932 + timestamp: 1734067047906 - kind: conda name: max-python - version: 25.1.0.dev2024121214 + version: 25.1.0.dev2024121305 build: 3.12release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024121214-3.12release.conda - sha256: 289119c20859195f0d86fbd67c4814d65604913c12086cac9591a3371323d1d6 - md5: 8f2676a5b6775eeb835c6e0db97bc3b2 + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024121305-3.12release.conda + sha256: a273ba2302364c8a3163ce7f26dd7b787194c3c3f1bc9ed77e77b2edf483522d + md5: 09d62b97c29133fadc721fd9cb7b0388 depends: - - max-core ==25.1.0.dev2024121214 release + - max-core ==25.1.0.dev2024121305 release - python 3.12.* - fastapi - httpx @@ -7844,17 +7844,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 112807365 - timestamp: 1734016112401 + size: 112812970 + timestamp: 1734067231662 - kind: conda name: mblack - version: 25.1.0.dev2024121214 + version: 25.1.0.dev2024121305 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121214-release.conda - sha256: 92acaf798bb3834675c7358f2d68f4d792036e166957fa6dbc6ff14f843ede4f - md5: 4de530f1fe2a901756c581249180eca9 + url: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121305-release.conda + sha256: abb1e77a5677ba3dff4645ce9d9867da248690f7a64badbd6678afcdb8ba3f35 + md5: 665d00da19a5c6902c00afa7c456a8da depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -7864,8 +7864,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130794 - timestamp: 1734015648615 + size: 130799 + timestamp: 1734067047902 - kind: conda name: mdurl version: 0.1.2 @@ -7884,21 +7884,21 @@ packages: timestamp: 1733255681319 - kind: conda name: mojo-jupyter - version: 25.1.0.dev2024121214 + version: 25.1.0.dev2024121305 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024121214-release.conda - sha256: 72f123af334c1bcfe47977593401441d281156684350568147ab6c62f7717dc0 - md5: a631623d32a0b423b4ac774dbe79a918 + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024121305-release.conda + sha256: 4695f084795165a27b510a6b7c4174141cabad2f84c76c785529b0d6e9cc45ea + md5: 86028b0c146cc15b505e17670db7f139 depends: - - max-core ==25.1.0.dev2024121214 release + - max-core ==25.1.0.dev2024121305 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22936 - timestamp: 1734015648615 + size: 22933 + timestamp: 1734067047904 - kind: conda name: mpg123 version: 1.32.9 diff --git a/examples/magic.lock b/examples/magic.lock index 4855da3d70..c1ee74e1b5 100644 --- a/examples/magic.lock +++ b/examples/magic.lock @@ -131,12 +131,12 @@ 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-25.1.0.dev2024121214-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024121214-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024121214-3.11release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121214-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024121305-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024121305-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024121305-3.11release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121305-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-25.1.0.dev2024121214-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024121305-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 @@ -350,12 +350,12 @@ 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-25.1.0.dev2024121214-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024121214-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024121214-3.11release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121214-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024121305-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024121305-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024121305-3.11release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121305-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-25.1.0.dev2024121214-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024121305-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 @@ -560,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-25.1.0.dev2024121214-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024121214-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024121214-3.11release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121214-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024121305-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024121305-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024121305-3.11release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121305-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-25.1.0.dev2024121214-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024121305-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 @@ -5905,76 +5905,76 @@ packages: timestamp: 1733220925299 - kind: conda name: max - version: 25.1.0.dev2024121214 + version: 25.1.0.dev2024121305 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024121214-release.conda - sha256: eeadd1df827192ff0d8af9e48fc61238f742fb14976023b838413283a4e1798b - md5: 2447f44e5547cfa431e089835e7532b1 - depends: - - max-core ==25.1.0.dev2024121214 release - - max-python >=25.1.0.dev2024121214,<26.0a0 - - mojo-jupyter ==25.1.0.dev2024121214 release - - mblack ==25.1.0.dev2024121214 release + url: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024121305-release.conda + sha256: 0934ef5364dceceb5e0c786f92bf537a2414e898a00f481b8c8472db5e75f288 + md5: 7e5a852508eeef653e57b0e2d997d6f0 + depends: + - max-core ==25.1.0.dev2024121305 release + - max-python >=25.1.0.dev2024121305,<26.0a0 + - mojo-jupyter ==25.1.0.dev2024121305 release + - mblack ==25.1.0.dev2024121305 release license: LicenseRef-Modular-Proprietary - size: 9920 - timestamp: 1734015648611 + size: 9911 + timestamp: 1734067047897 - kind: conda name: max-core - version: 25.1.0.dev2024121214 + version: 25.1.0.dev2024121305 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024121214-release.conda - sha256: 7b4cfef5dabe1854572b902f5a85df32c115133cb230c074db466199cedd2988 - md5: a4a78932539c233f70b75680656a128b + url: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024121305-release.conda + sha256: 7a345ab21e1bc5db74684e165dbe92172631b15637e5235e8b55b75aa717b36e + md5: a092cd9f73e38d8c5a8e7421a65d6ec2 depends: - - mblack ==25.1.0.dev2024121214 release + - mblack ==25.1.0.dev2024121305 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 247826462 - timestamp: 1734015648609 + size: 247758730 + timestamp: 1734067130820 - kind: conda name: max-core - version: 25.1.0.dev2024121214 + version: 25.1.0.dev2024121305 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024121214-release.conda - sha256: e264dadaabf3542d88790a591e5d0007e810d67b777b7f298d71a7e04c1ceb34 - md5: cfffd2826ce46aaefb9553bb965769b6 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024121305-release.conda + sha256: ad1ba0f0de5a52214dd1a6d9650b82db3bb87ffbdac4426db051c0d23264ee6a + md5: aae29a11aa59123729f374c236e9ae15 depends: - - mblack ==25.1.0.dev2024121214 release + - mblack ==25.1.0.dev2024121305 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 251673819 - timestamp: 1734015642960 + size: 251654128 + timestamp: 1734067047896 - kind: conda name: max-core - version: 25.1.0.dev2024121214 + version: 25.1.0.dev2024121305 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024121214-release.conda - sha256: 5f59a57c7bc3832028063c308ee55f3ba5dae88052e08745ae827f971827fb2e - md5: c55ad17758cdcd82a6d62c8d5fa6c50a + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024121305-release.conda + sha256: 1d4409c69d60650860c24c7833e7b64f5cca00a2fa7f3c8bc3fe69f27d0bb004 + md5: 9cac1246d0cda9ddf123b51868be3da4 depends: - - mblack ==25.1.0.dev2024121214 release + - mblack ==25.1.0.dev2024121305 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 212287379 - timestamp: 1734016112398 + size: 212260365 + timestamp: 1734067231658 - kind: conda name: max-python - version: 25.1.0.dev2024121214 + version: 25.1.0.dev2024121305 build: 3.11release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024121214-3.11release.conda - sha256: 781df492fb1996ab536f41b6e472f623ac769636de920ac555ce2c23b28511a7 - md5: c1c6d2177328259ecbc27f3da7ed691f + url: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024121305-3.11release.conda + sha256: b6e71018d9a4f86137db53ae63293548abb8119659de8bafdde5ef14e84232c2 + md5: bcfed118cc71e8274d3631c145727ebc depends: - - max-core ==25.1.0.dev2024121214 release + - max-core ==25.1.0.dev2024121305 release - python 3.11.* - fastapi - httpx @@ -5997,18 +5997,18 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 123955669 - timestamp: 1734015648616 + size: 123987996 + timestamp: 1734067130827 - kind: conda name: max-python - version: 25.1.0.dev2024121214 + version: 25.1.0.dev2024121305 build: 3.11release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024121214-3.11release.conda - sha256: d5c9665860b4a948c63eb39c750a88d1a14606929a990b5b198f28b20aaa6f58 - md5: 4d3290944f1b57aace8cb76e374ba4d5 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024121305-3.11release.conda + sha256: 7a8b3d738588076db50a813c6fc2eb04f38b47d3dbf56ad064451d22edfda487 + md5: 61a95b2d6587e6455442a6727091f78c depends: - - max-core ==25.1.0.dev2024121214 release + - max-core ==25.1.0.dev2024121305 release - python 3.11.* - fastapi - httpx @@ -6031,18 +6031,18 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 127725855 - timestamp: 1734015642968 + size: 127703260 + timestamp: 1734067047903 - kind: conda name: max-python - version: 25.1.0.dev2024121214 + version: 25.1.0.dev2024121305 build: 3.11release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024121214-3.11release.conda - sha256: b6fe592c3845d2feac17cf6fa4cd42558639946053b5c07e3e126b9d75fde240 - md5: e1c65346c61bf3e483697b7533e378ee + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024121305-3.11release.conda + sha256: 4dda1e3041c5bf49507ee5e3d789af6f1e1f989b10abb61db5fafa4cf905aaf4 + md5: b38dadcf8dafa1fab28513675b45d88a depends: - - max-core ==25.1.0.dev2024121214 release + - max-core ==25.1.0.dev2024121305 release - python 3.11.* - fastapi - httpx @@ -6065,17 +6065,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 112826439 - timestamp: 1734016112400 + size: 112825846 + timestamp: 1734067231661 - kind: conda name: mblack - version: 25.1.0.dev2024121214 + version: 25.1.0.dev2024121305 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121214-release.conda - sha256: 92acaf798bb3834675c7358f2d68f4d792036e166957fa6dbc6ff14f843ede4f - md5: 4de530f1fe2a901756c581249180eca9 + url: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121305-release.conda + sha256: abb1e77a5677ba3dff4645ce9d9867da248690f7a64badbd6678afcdb8ba3f35 + md5: 665d00da19a5c6902c00afa7c456a8da depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -6085,8 +6085,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130794 - timestamp: 1734015648615 + size: 130799 + timestamp: 1734067047902 - kind: conda name: mdurl version: 0.1.2 @@ -6105,21 +6105,21 @@ packages: timestamp: 1733255681319 - kind: conda name: mojo-jupyter - version: 25.1.0.dev2024121214 + version: 25.1.0.dev2024121305 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024121214-release.conda - sha256: 72f123af334c1bcfe47977593401441d281156684350568147ab6c62f7717dc0 - md5: a631623d32a0b423b4ac774dbe79a918 + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024121305-release.conda + sha256: 4695f084795165a27b510a6b7c4174141cabad2f84c76c785529b0d6e9cc45ea + md5: 86028b0c146cc15b505e17670db7f139 depends: - - max-core ==25.1.0.dev2024121214 release + - max-core ==25.1.0.dev2024121305 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22936 - timestamp: 1734015648615 + size: 22933 + timestamp: 1734067047904 - kind: conda name: multidict version: 6.1.0 diff --git a/examples/notebooks/magic.lock b/examples/notebooks/magic.lock index 76b9511344..58c3f7195c 100644 --- a/examples/notebooks/magic.lock +++ b/examples/notebooks/magic.lock @@ -166,13 +166,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/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-25.1.0.dev2024121214-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024121214-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024121214-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121214-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024121305-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024121305-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024121305-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121305-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-25.1.0.dev2024121214-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024121305-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 @@ -456,13 +456,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/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-25.1.0.dev2024121214-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024121214-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024121214-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121214-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024121305-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024121305-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024121305-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121305-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-25.1.0.dev2024121214-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024121305-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 @@ -738,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-25.1.0.dev2024121214-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024121214-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024121214-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121214-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024121305-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024121305-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024121305-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121305-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-25.1.0.dev2024121214-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024121305-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 @@ -6950,76 +6950,76 @@ packages: timestamp: 1733417051523 - kind: conda name: max - version: 25.1.0.dev2024121214 + version: 25.1.0.dev2024121305 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024121214-release.conda - sha256: eeadd1df827192ff0d8af9e48fc61238f742fb14976023b838413283a4e1798b - md5: 2447f44e5547cfa431e089835e7532b1 + url: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024121305-release.conda + sha256: 0934ef5364dceceb5e0c786f92bf537a2414e898a00f481b8c8472db5e75f288 + md5: 7e5a852508eeef653e57b0e2d997d6f0 depends: - - max-core ==25.1.0.dev2024121214 release - - max-python >=25.1.0.dev2024121214,<26.0a0 - - mojo-jupyter ==25.1.0.dev2024121214 release - - mblack ==25.1.0.dev2024121214 release + - max-core ==25.1.0.dev2024121305 release + - max-python >=25.1.0.dev2024121305,<26.0a0 + - mojo-jupyter ==25.1.0.dev2024121305 release + - mblack ==25.1.0.dev2024121305 release license: LicenseRef-Modular-Proprietary - size: 9920 - timestamp: 1734015648611 + size: 9911 + timestamp: 1734067047897 - kind: conda name: max-core - version: 25.1.0.dev2024121214 + version: 25.1.0.dev2024121305 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024121214-release.conda - sha256: 7b4cfef5dabe1854572b902f5a85df32c115133cb230c074db466199cedd2988 - md5: a4a78932539c233f70b75680656a128b + url: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024121305-release.conda + sha256: 7a345ab21e1bc5db74684e165dbe92172631b15637e5235e8b55b75aa717b36e + md5: a092cd9f73e38d8c5a8e7421a65d6ec2 depends: - - mblack ==25.1.0.dev2024121214 release + - mblack ==25.1.0.dev2024121305 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 247826462 - timestamp: 1734015648609 + size: 247758730 + timestamp: 1734067130820 - kind: conda name: max-core - version: 25.1.0.dev2024121214 + version: 25.1.0.dev2024121305 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024121214-release.conda - sha256: e264dadaabf3542d88790a591e5d0007e810d67b777b7f298d71a7e04c1ceb34 - md5: cfffd2826ce46aaefb9553bb965769b6 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024121305-release.conda + sha256: ad1ba0f0de5a52214dd1a6d9650b82db3bb87ffbdac4426db051c0d23264ee6a + md5: aae29a11aa59123729f374c236e9ae15 depends: - - mblack ==25.1.0.dev2024121214 release + - mblack ==25.1.0.dev2024121305 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 251673819 - timestamp: 1734015642960 + size: 251654128 + timestamp: 1734067047896 - kind: conda name: max-core - version: 25.1.0.dev2024121214 + version: 25.1.0.dev2024121305 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024121214-release.conda - sha256: 5f59a57c7bc3832028063c308ee55f3ba5dae88052e08745ae827f971827fb2e - md5: c55ad17758cdcd82a6d62c8d5fa6c50a + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024121305-release.conda + sha256: 1d4409c69d60650860c24c7833e7b64f5cca00a2fa7f3c8bc3fe69f27d0bb004 + md5: 9cac1246d0cda9ddf123b51868be3da4 depends: - - mblack ==25.1.0.dev2024121214 release + - mblack ==25.1.0.dev2024121305 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 212287379 - timestamp: 1734016112398 + size: 212260365 + timestamp: 1734067231658 - kind: conda name: max-python - version: 25.1.0.dev2024121214 + version: 25.1.0.dev2024121305 build: 3.12release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024121214-3.12release.conda - sha256: e275ce2ee258e9b3e5d335758728c62639307b5fbc26ff42137a2d9ba6cef314 - md5: 865bcedcfbd6d2064ca8d896094148b6 + url: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024121305-3.12release.conda + sha256: 41468e52a6cfaab53f4f1f9227d37e94d97bf0037e3959b5738b17c841aa4853 + md5: 3d0543451b60f19e627a7a02e417dec7 depends: - - max-core ==25.1.0.dev2024121214 release + - max-core ==25.1.0.dev2024121305 release - python 3.12.* - fastapi - httpx @@ -7042,18 +7042,18 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 124001405 - timestamp: 1734015648618 + size: 123962431 + timestamp: 1734067130830 - kind: conda name: max-python - version: 25.1.0.dev2024121214 + version: 25.1.0.dev2024121305 build: 3.12release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024121214-3.12release.conda - sha256: fc4ed0f25e87e5ef9082bf23b03f53f9a5f16e00493f5566820c7c62a2038e58 - md5: 705a3d5afebfa45a4d0a97fdabaad520 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024121305-3.12release.conda + sha256: 7f183e065b118867efe93b52a6e91afccb609bd53b78efc4566671b9a827bf1a + md5: 6a0e9f6376835e0267a6c4e74a126dc6 depends: - - max-core ==25.1.0.dev2024121214 release + - max-core ==25.1.0.dev2024121305 release - python 3.12.* - fastapi - httpx @@ -7076,18 +7076,18 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 127725024 - timestamp: 1734015642970 + size: 127728932 + timestamp: 1734067047906 - kind: conda name: max-python - version: 25.1.0.dev2024121214 + version: 25.1.0.dev2024121305 build: 3.12release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024121214-3.12release.conda - sha256: 289119c20859195f0d86fbd67c4814d65604913c12086cac9591a3371323d1d6 - md5: 8f2676a5b6775eeb835c6e0db97bc3b2 + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024121305-3.12release.conda + sha256: a273ba2302364c8a3163ce7f26dd7b787194c3c3f1bc9ed77e77b2edf483522d + md5: 09d62b97c29133fadc721fd9cb7b0388 depends: - - max-core ==25.1.0.dev2024121214 release + - max-core ==25.1.0.dev2024121305 release - python 3.12.* - fastapi - httpx @@ -7110,17 +7110,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 112807365 - timestamp: 1734016112401 + size: 112812970 + timestamp: 1734067231662 - kind: conda name: mblack - version: 25.1.0.dev2024121214 + version: 25.1.0.dev2024121305 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121214-release.conda - sha256: 92acaf798bb3834675c7358f2d68f4d792036e166957fa6dbc6ff14f843ede4f - md5: 4de530f1fe2a901756c581249180eca9 + url: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121305-release.conda + sha256: abb1e77a5677ba3dff4645ce9d9867da248690f7a64badbd6678afcdb8ba3f35 + md5: 665d00da19a5c6902c00afa7c456a8da depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -7130,8 +7130,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130794 - timestamp: 1734015648615 + size: 130799 + timestamp: 1734067047902 - kind: conda name: mdurl version: 0.1.2 @@ -7166,21 +7166,21 @@ packages: timestamp: 1733258822603 - kind: conda name: mojo-jupyter - version: 25.1.0.dev2024121214 + version: 25.1.0.dev2024121305 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024121214-release.conda - sha256: 72f123af334c1bcfe47977593401441d281156684350568147ab6c62f7717dc0 - md5: a631623d32a0b423b4ac774dbe79a918 + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024121305-release.conda + sha256: 4695f084795165a27b510a6b7c4174141cabad2f84c76c785529b0d6e9cc45ea + md5: 86028b0c146cc15b505e17670db7f139 depends: - - max-core ==25.1.0.dev2024121214 release + - max-core ==25.1.0.dev2024121305 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22936 - timestamp: 1734015648615 + size: 22933 + timestamp: 1734067047904 - kind: conda name: multidict version: 6.1.0 diff --git a/examples/operators/magic.lock b/examples/operators/magic.lock index 1c8bfe01d7..42227cbb73 100644 --- a/examples/operators/magic.lock +++ b/examples/operators/magic.lock @@ -131,12 +131,12 @@ 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-25.1.0.dev2024121214-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024121214-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024121214-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121214-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024121305-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024121305-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024121305-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121305-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-25.1.0.dev2024121214-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024121305-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 @@ -350,12 +350,12 @@ 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-25.1.0.dev2024121214-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024121214-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024121214-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121214-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024121305-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024121305-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024121305-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121305-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-25.1.0.dev2024121214-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024121305-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 @@ -560,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-25.1.0.dev2024121214-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024121214-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024121214-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121214-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024121305-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024121305-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024121305-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121305-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-25.1.0.dev2024121214-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024121305-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 @@ -5905,76 +5905,76 @@ packages: timestamp: 1733219945697 - kind: conda name: max - version: 25.1.0.dev2024121214 + version: 25.1.0.dev2024121305 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024121214-release.conda - sha256: eeadd1df827192ff0d8af9e48fc61238f742fb14976023b838413283a4e1798b - md5: 2447f44e5547cfa431e089835e7532b1 - depends: - - max-core ==25.1.0.dev2024121214 release - - max-python >=25.1.0.dev2024121214,<26.0a0 - - mojo-jupyter ==25.1.0.dev2024121214 release - - mblack ==25.1.0.dev2024121214 release + url: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024121305-release.conda + sha256: 0934ef5364dceceb5e0c786f92bf537a2414e898a00f481b8c8472db5e75f288 + md5: 7e5a852508eeef653e57b0e2d997d6f0 + depends: + - max-core ==25.1.0.dev2024121305 release + - max-python >=25.1.0.dev2024121305,<26.0a0 + - mojo-jupyter ==25.1.0.dev2024121305 release + - mblack ==25.1.0.dev2024121305 release license: LicenseRef-Modular-Proprietary - size: 9920 - timestamp: 1734015648611 + size: 9911 + timestamp: 1734067047897 - kind: conda name: max-core - version: 25.1.0.dev2024121214 + version: 25.1.0.dev2024121305 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024121214-release.conda - sha256: 7b4cfef5dabe1854572b902f5a85df32c115133cb230c074db466199cedd2988 - md5: a4a78932539c233f70b75680656a128b + url: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024121305-release.conda + sha256: 7a345ab21e1bc5db74684e165dbe92172631b15637e5235e8b55b75aa717b36e + md5: a092cd9f73e38d8c5a8e7421a65d6ec2 depends: - - mblack ==25.1.0.dev2024121214 release + - mblack ==25.1.0.dev2024121305 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 247826462 - timestamp: 1734015648609 + size: 247758730 + timestamp: 1734067130820 - kind: conda name: max-core - version: 25.1.0.dev2024121214 + version: 25.1.0.dev2024121305 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024121214-release.conda - sha256: e264dadaabf3542d88790a591e5d0007e810d67b777b7f298d71a7e04c1ceb34 - md5: cfffd2826ce46aaefb9553bb965769b6 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024121305-release.conda + sha256: ad1ba0f0de5a52214dd1a6d9650b82db3bb87ffbdac4426db051c0d23264ee6a + md5: aae29a11aa59123729f374c236e9ae15 depends: - - mblack ==25.1.0.dev2024121214 release + - mblack ==25.1.0.dev2024121305 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 251673819 - timestamp: 1734015642960 + size: 251654128 + timestamp: 1734067047896 - kind: conda name: max-core - version: 25.1.0.dev2024121214 + version: 25.1.0.dev2024121305 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024121214-release.conda - sha256: 5f59a57c7bc3832028063c308ee55f3ba5dae88052e08745ae827f971827fb2e - md5: c55ad17758cdcd82a6d62c8d5fa6c50a + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024121305-release.conda + sha256: 1d4409c69d60650860c24c7833e7b64f5cca00a2fa7f3c8bc3fe69f27d0bb004 + md5: 9cac1246d0cda9ddf123b51868be3da4 depends: - - mblack ==25.1.0.dev2024121214 release + - mblack ==25.1.0.dev2024121305 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 212287379 - timestamp: 1734016112398 + size: 212260365 + timestamp: 1734067231658 - kind: conda name: max-python - version: 25.1.0.dev2024121214 + version: 25.1.0.dev2024121305 build: 3.12release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024121214-3.12release.conda - sha256: e275ce2ee258e9b3e5d335758728c62639307b5fbc26ff42137a2d9ba6cef314 - md5: 865bcedcfbd6d2064ca8d896094148b6 + url: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024121305-3.12release.conda + sha256: 41468e52a6cfaab53f4f1f9227d37e94d97bf0037e3959b5738b17c841aa4853 + md5: 3d0543451b60f19e627a7a02e417dec7 depends: - - max-core ==25.1.0.dev2024121214 release + - max-core ==25.1.0.dev2024121305 release - python 3.12.* - fastapi - httpx @@ -5997,18 +5997,18 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 124001405 - timestamp: 1734015648618 + size: 123962431 + timestamp: 1734067130830 - kind: conda name: max-python - version: 25.1.0.dev2024121214 + version: 25.1.0.dev2024121305 build: 3.12release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024121214-3.12release.conda - sha256: fc4ed0f25e87e5ef9082bf23b03f53f9a5f16e00493f5566820c7c62a2038e58 - md5: 705a3d5afebfa45a4d0a97fdabaad520 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024121305-3.12release.conda + sha256: 7f183e065b118867efe93b52a6e91afccb609bd53b78efc4566671b9a827bf1a + md5: 6a0e9f6376835e0267a6c4e74a126dc6 depends: - - max-core ==25.1.0.dev2024121214 release + - max-core ==25.1.0.dev2024121305 release - python 3.12.* - fastapi - httpx @@ -6031,18 +6031,18 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 127725024 - timestamp: 1734015642970 + size: 127728932 + timestamp: 1734067047906 - kind: conda name: max-python - version: 25.1.0.dev2024121214 + version: 25.1.0.dev2024121305 build: 3.12release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024121214-3.12release.conda - sha256: 289119c20859195f0d86fbd67c4814d65604913c12086cac9591a3371323d1d6 - md5: 8f2676a5b6775eeb835c6e0db97bc3b2 + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024121305-3.12release.conda + sha256: a273ba2302364c8a3163ce7f26dd7b787194c3c3f1bc9ed77e77b2edf483522d + md5: 09d62b97c29133fadc721fd9cb7b0388 depends: - - max-core ==25.1.0.dev2024121214 release + - max-core ==25.1.0.dev2024121305 release - python 3.12.* - fastapi - httpx @@ -6065,17 +6065,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 112807365 - timestamp: 1734016112401 + size: 112812970 + timestamp: 1734067231662 - kind: conda name: mblack - version: 25.1.0.dev2024121214 + version: 25.1.0.dev2024121305 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121214-release.conda - sha256: 92acaf798bb3834675c7358f2d68f4d792036e166957fa6dbc6ff14f843ede4f - md5: 4de530f1fe2a901756c581249180eca9 + url: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121305-release.conda + sha256: abb1e77a5677ba3dff4645ce9d9867da248690f7a64badbd6678afcdb8ba3f35 + md5: 665d00da19a5c6902c00afa7c456a8da depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -6085,8 +6085,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130794 - timestamp: 1734015648615 + size: 130799 + timestamp: 1734067047902 - kind: conda name: mdurl version: 0.1.2 @@ -6105,21 +6105,21 @@ packages: timestamp: 1733255681319 - kind: conda name: mojo-jupyter - version: 25.1.0.dev2024121214 + version: 25.1.0.dev2024121305 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024121214-release.conda - sha256: 72f123af334c1bcfe47977593401441d281156684350568147ab6c62f7717dc0 - md5: a631623d32a0b423b4ac774dbe79a918 + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024121305-release.conda + sha256: 4695f084795165a27b510a6b7c4174141cabad2f84c76c785529b0d6e9cc45ea + md5: 86028b0c146cc15b505e17670db7f139 depends: - - max-core ==25.1.0.dev2024121214 release + - max-core ==25.1.0.dev2024121305 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22936 - timestamp: 1734015648615 + size: 22933 + timestamp: 1734067047904 - kind: conda name: multidict version: 6.1.0 diff --git a/magic.lock b/magic.lock index 128f5e3fff..96e9e9cb99 100644 --- a/magic.lock +++ b/magic.lock @@ -132,12 +132,12 @@ 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-25.1.0.dev2024121214-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024121214-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024121214-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121214-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024121305-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024121305-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024121305-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121305-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-25.1.0.dev2024121214-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024121305-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 @@ -352,12 +352,12 @@ 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-25.1.0.dev2024121214-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024121214-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024121214-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121214-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024121305-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024121305-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024121305-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121305-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-25.1.0.dev2024121214-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024121305-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 @@ -563,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-25.1.0.dev2024121214-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024121214-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024121214-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121214-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024121305-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024121305-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024121305-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121305-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-25.1.0.dev2024121214-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024121305-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 @@ -5923,76 +5923,76 @@ packages: timestamp: 1733219945697 - kind: conda name: max - version: 25.1.0.dev2024121214 + version: 25.1.0.dev2024121305 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024121214-release.conda - sha256: eeadd1df827192ff0d8af9e48fc61238f742fb14976023b838413283a4e1798b - md5: 2447f44e5547cfa431e089835e7532b1 - depends: - - max-core ==25.1.0.dev2024121214 release - - max-python >=25.1.0.dev2024121214,<26.0a0 - - mojo-jupyter ==25.1.0.dev2024121214 release - - mblack ==25.1.0.dev2024121214 release + url: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024121305-release.conda + sha256: 0934ef5364dceceb5e0c786f92bf537a2414e898a00f481b8c8472db5e75f288 + md5: 7e5a852508eeef653e57b0e2d997d6f0 + depends: + - max-core ==25.1.0.dev2024121305 release + - max-python >=25.1.0.dev2024121305,<26.0a0 + - mojo-jupyter ==25.1.0.dev2024121305 release + - mblack ==25.1.0.dev2024121305 release license: LicenseRef-Modular-Proprietary - size: 9920 - timestamp: 1734015648611 + size: 9911 + timestamp: 1734067047897 - kind: conda name: max-core - version: 25.1.0.dev2024121214 + version: 25.1.0.dev2024121305 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024121214-release.conda - sha256: 7b4cfef5dabe1854572b902f5a85df32c115133cb230c074db466199cedd2988 - md5: a4a78932539c233f70b75680656a128b + url: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024121305-release.conda + sha256: 7a345ab21e1bc5db74684e165dbe92172631b15637e5235e8b55b75aa717b36e + md5: a092cd9f73e38d8c5a8e7421a65d6ec2 depends: - - mblack ==25.1.0.dev2024121214 release + - mblack ==25.1.0.dev2024121305 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 247826462 - timestamp: 1734015648609 + size: 247758730 + timestamp: 1734067130820 - kind: conda name: max-core - version: 25.1.0.dev2024121214 + version: 25.1.0.dev2024121305 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024121214-release.conda - sha256: e264dadaabf3542d88790a591e5d0007e810d67b777b7f298d71a7e04c1ceb34 - md5: cfffd2826ce46aaefb9553bb965769b6 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024121305-release.conda + sha256: ad1ba0f0de5a52214dd1a6d9650b82db3bb87ffbdac4426db051c0d23264ee6a + md5: aae29a11aa59123729f374c236e9ae15 depends: - - mblack ==25.1.0.dev2024121214 release + - mblack ==25.1.0.dev2024121305 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 251673819 - timestamp: 1734015642960 + size: 251654128 + timestamp: 1734067047896 - kind: conda name: max-core - version: 25.1.0.dev2024121214 + version: 25.1.0.dev2024121305 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024121214-release.conda - sha256: 5f59a57c7bc3832028063c308ee55f3ba5dae88052e08745ae827f971827fb2e - md5: c55ad17758cdcd82a6d62c8d5fa6c50a + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024121305-release.conda + sha256: 1d4409c69d60650860c24c7833e7b64f5cca00a2fa7f3c8bc3fe69f27d0bb004 + md5: 9cac1246d0cda9ddf123b51868be3da4 depends: - - mblack ==25.1.0.dev2024121214 release + - mblack ==25.1.0.dev2024121305 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 212287379 - timestamp: 1734016112398 + size: 212260365 + timestamp: 1734067231658 - kind: conda name: max-python - version: 25.1.0.dev2024121214 + version: 25.1.0.dev2024121305 build: 3.12release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024121214-3.12release.conda - sha256: e275ce2ee258e9b3e5d335758728c62639307b5fbc26ff42137a2d9ba6cef314 - md5: 865bcedcfbd6d2064ca8d896094148b6 + url: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024121305-3.12release.conda + sha256: 41468e52a6cfaab53f4f1f9227d37e94d97bf0037e3959b5738b17c841aa4853 + md5: 3d0543451b60f19e627a7a02e417dec7 depends: - - max-core ==25.1.0.dev2024121214 release + - max-core ==25.1.0.dev2024121305 release - python 3.12.* - fastapi - httpx @@ -6015,18 +6015,18 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 124001405 - timestamp: 1734015648618 + size: 123962431 + timestamp: 1734067130830 - kind: conda name: max-python - version: 25.1.0.dev2024121214 + version: 25.1.0.dev2024121305 build: 3.12release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024121214-3.12release.conda - sha256: fc4ed0f25e87e5ef9082bf23b03f53f9a5f16e00493f5566820c7c62a2038e58 - md5: 705a3d5afebfa45a4d0a97fdabaad520 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024121305-3.12release.conda + sha256: 7f183e065b118867efe93b52a6e91afccb609bd53b78efc4566671b9a827bf1a + md5: 6a0e9f6376835e0267a6c4e74a126dc6 depends: - - max-core ==25.1.0.dev2024121214 release + - max-core ==25.1.0.dev2024121305 release - python 3.12.* - fastapi - httpx @@ -6049,18 +6049,18 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 127725024 - timestamp: 1734015642970 + size: 127728932 + timestamp: 1734067047906 - kind: conda name: max-python - version: 25.1.0.dev2024121214 + version: 25.1.0.dev2024121305 build: 3.12release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024121214-3.12release.conda - sha256: 289119c20859195f0d86fbd67c4814d65604913c12086cac9591a3371323d1d6 - md5: 8f2676a5b6775eeb835c6e0db97bc3b2 + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024121305-3.12release.conda + sha256: a273ba2302364c8a3163ce7f26dd7b787194c3c3f1bc9ed77e77b2edf483522d + md5: 09d62b97c29133fadc721fd9cb7b0388 depends: - - max-core ==25.1.0.dev2024121214 release + - max-core ==25.1.0.dev2024121305 release - python 3.12.* - fastapi - httpx @@ -6083,17 +6083,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 112807365 - timestamp: 1734016112401 + size: 112812970 + timestamp: 1734067231662 - kind: conda name: mblack - version: 25.1.0.dev2024121214 + version: 25.1.0.dev2024121305 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121214-release.conda - sha256: 92acaf798bb3834675c7358f2d68f4d792036e166957fa6dbc6ff14f843ede4f - md5: 4de530f1fe2a901756c581249180eca9 + url: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121305-release.conda + sha256: abb1e77a5677ba3dff4645ce9d9867da248690f7a64badbd6678afcdb8ba3f35 + md5: 665d00da19a5c6902c00afa7c456a8da depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -6103,8 +6103,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130794 - timestamp: 1734015648615 + size: 130799 + timestamp: 1734067047902 - kind: conda name: mdurl version: 0.1.2 @@ -6123,21 +6123,21 @@ packages: timestamp: 1733255681319 - kind: conda name: mojo-jupyter - version: 25.1.0.dev2024121214 + version: 25.1.0.dev2024121305 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024121214-release.conda - sha256: 72f123af334c1bcfe47977593401441d281156684350568147ab6c62f7717dc0 - md5: a631623d32a0b423b4ac774dbe79a918 + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024121305-release.conda + sha256: 4695f084795165a27b510a6b7c4174141cabad2f84c76c785529b0d6e9cc45ea + md5: 86028b0c146cc15b505e17670db7f139 depends: - - max-core ==25.1.0.dev2024121214 release + - max-core ==25.1.0.dev2024121305 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22936 - timestamp: 1734015648615 + size: 22933 + timestamp: 1734067047904 - kind: conda name: multidict version: 6.1.0 From 6c25e6547e0525bc37639fad999fd680f2b15198 Mon Sep 17 00:00:00 2001 From: Connor Gray Date: Fri, 13 Dec 2024 12:20:05 -0600 Subject: [PATCH 091/509] [stdlib] feat: Rename of `StringSlice.is_mutable` => `mut` (#52091) This enables a concise syntax for specifying string argument mutability without requiring explicit type parameters. Instead the mutability of the string can be specified using `StringSlice[mut=True]`, and autoparameterization will do the rest. MODULAR_ORIG_COMMIT_REV_ID: 6f495f641a46c50b44cf3c66664e4b018be1d66d --- stdlib/src/builtin/io.mojo | 1 - stdlib/src/builtin/simd.mojo | 2 +- stdlib/src/collections/string.mojo | 6 +++--- stdlib/src/utils/inline_string.mojo | 4 ++-- stdlib/src/utils/string_slice.mojo | 32 +++++++++++++++++++++-------- 5 files changed, 29 insertions(+), 16 deletions(-) diff --git a/stdlib/src/builtin/io.mojo b/stdlib/src/builtin/io.mojo index bb15718f20..fc363fc15c 100644 --- a/stdlib/src/builtin/io.mojo +++ b/stdlib/src/builtin/io.mojo @@ -35,7 +35,6 @@ from memory import UnsafePointer, memcpy from utils import ( StaticString, StringRef, - StringSlice, write_args, write_buffered, ) diff --git a/stdlib/src/builtin/simd.mojo b/stdlib/src/builtin/simd.mojo index 18a87f1903..7bb4c061b6 100644 --- a/stdlib/src/builtin/simd.mojo +++ b/stdlib/src/builtin/simd.mojo @@ -52,7 +52,7 @@ from builtin.io import _snprintf from documentation import doc_private from memory import UnsafePointer, bitcast, Span -from utils import IndexList, StaticTuple, StringSlice +from utils import IndexList, StaticTuple from utils._visualizers import lldb_formatter_wrapping_type from utils.numerics import FPUtils from utils.numerics import isnan as _isnan diff --git a/stdlib/src/collections/string.mojo b/stdlib/src/collections/string.mojo index 7e09a482ff..716ddc9756 100644 --- a/stdlib/src/collections/string.mojo +++ b/stdlib/src/collections/string.mojo @@ -396,7 +396,7 @@ fn _str_to_base_error(base: Int, str_slice: StringSlice) -> String: ) -fn _identify_base(str_slice: StringSlice[_], start: Int) -> Tuple[Int, Int]: +fn _identify_base(str_slice: StringSlice, start: Int) -> Tuple[Int, Int]: var length = str_slice.byte_length() # just 1 digit, assume base 10 if start == (length - 1): @@ -468,11 +468,11 @@ fn atol(str: String, base: Int = 10) raises -> Int: return _atol(str.as_string_slice(), base) -fn _atof_error(str_ref: StringSlice[_]) -> Error: +fn _atof_error(str_ref: StringSlice) -> Error: return Error("String is not convertible to float: '" + str(str_ref) + "'") -fn _atof(str_ref: StringSlice[_]) raises -> Float64: +fn _atof(str_ref: StringSlice) raises -> Float64: """Implementation of `atof` for StringRef inputs. Please see its docstring for details. diff --git a/stdlib/src/utils/inline_string.mojo b/stdlib/src/utils/inline_string.mojo index 8c6cfb3166..7ddb0df082 100644 --- a/stdlib/src/utils/inline_string.mojo +++ b/stdlib/src/utils/inline_string.mojo @@ -119,7 +119,7 @@ struct InlineString(Sized, Stringable, CollectionElement, CollectionElementNew): """ self.__iadd__(string.as_string_slice()) - fn __iadd__(mut self, str_slice: StringSlice[_]): + fn __iadd__(mut self, str_slice: StringSlice): """Appends another string to this string. Args: @@ -412,7 +412,7 @@ struct _FixedString[CAP: Int]( self.__iadd__(string.as_string_slice()) @always_inline - fn __iadd__(mut self, str_slice: StringSlice[_]) raises: + fn __iadd__(mut self, str_slice: StringSlice) raises: """Appends another string to this string. Args: diff --git a/stdlib/src/utils/string_slice.mojo b/stdlib/src/utils/string_slice.mojo index 09372e41e1..64fbc94437 100644 --- a/stdlib/src/utils/string_slice.mojo +++ b/stdlib/src/utils/string_slice.mojo @@ -168,14 +168,14 @@ fn _memrmem[ @value struct _StringSliceIter[ - is_mutable: Bool, //, - origin: Origin[is_mutable], + mut: Bool, //, + origin: Origin[mut], forward: Bool = True, ]: """Iterator for `StringSlice` over unicode characters. Parameters: - is_mutable: Whether the slice is mutable. + mut: Whether the slice is mutable. origin: The origin of the underlying string data. forward: The iteration direction. `False` is backwards. """ @@ -234,7 +234,7 @@ struct _StringSliceIter[ @value @register_passable("trivial") -struct StringSlice[is_mutable: Bool, //, origin: Origin[is_mutable]]( +struct StringSlice[mut: Bool, //, origin: Origin[mut]]( Stringable, Sized, Writable, @@ -245,7 +245,7 @@ struct StringSlice[is_mutable: Bool, //, origin: Origin[is_mutable]]( """A non-owning view to encoded string data. Parameters: - is_mutable: Whether the slice is mutable. + mut: Whether the slice is mutable. origin: The origin of the underlying string data. Notes: @@ -559,7 +559,7 @@ struct StringSlice[is_mutable: Bool, //, origin: Origin[is_mutable]]( buf.append(0) return String(buf^) - fn __contains__(ref self, substr: StringSlice[_]) -> Bool: + fn __contains__(ref self, substr: StringSlice) -> Bool: """Returns True if the substring is contained within the current string. Args: @@ -765,7 +765,7 @@ struct StringSlice[is_mutable: Bool, //, origin: Origin[is_mutable]]( @always_inline fn unsafe_ptr( self, - ) -> UnsafePointer[Byte, is_mutable=is_mutable, origin=origin]: + ) -> UnsafePointer[Byte, is_mutable=mut, origin=origin]: """Gets a pointer to the first element of this string slice. Returns: @@ -783,8 +783,22 @@ struct StringSlice[is_mutable: Bool, //, origin: Origin[is_mutable]]( return len(self.as_bytes()) + fn get_immutable( + self, + ) -> StringSlice[ImmutableOrigin.cast_from[origin].result]: + """ + Return an immutable version of this string slice. + + Returns: + A string slice covering the same elements, but without mutability. + """ + return StringSlice[ImmutableOrigin.cast_from[origin].result]( + ptr=self._slice.unsafe_ptr(), + length=len(self), + ) + fn startswith( - self, prefix: StringSlice[_], start: Int = 0, end: Int = -1 + self, prefix: StringSlice, start: Int = 0, end: Int = -1 ) -> Bool: """Verify if the `StringSlice` starts with the specified prefix between start and end positions. @@ -804,7 +818,7 @@ struct StringSlice[is_mutable: Bool, //, origin: Origin[is_mutable]]( ).startswith(prefix) fn endswith( - self, suffix: StringSlice[_], start: Int = 0, end: Int = -1 + self, suffix: StringSlice, start: Int = 0, end: Int = -1 ) -> Bool: """Verify if the `StringSlice` end with the specified suffix between start and end positions. From 4aea0fe704820fee74372a4dc4f2aa0c0abce974 Mon Sep 17 00:00:00 2001 From: Arthur Evans Date: Fri, 13 Dec 2024 11:08:01 -0800 Subject: [PATCH 092/509] [Docs] Changelog: edit & apply suggestions from review. MODULAR_ORIG_COMMIT_REV_ID: e318d2b9551fbe5725e659a286ab59086e2f1662 --- docs/changelog-released.md | 893 +++++++++++++++++++------------------ 1 file changed, 469 insertions(+), 424 deletions(-) diff --git a/docs/changelog-released.md b/docs/changelog-released.md index 44376a6153..a0d9609952 100644 --- a/docs/changelog-released.md +++ b/docs/changelog-released.md @@ -28,15 +28,20 @@ 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. + and `read`, respectively. A new `out` convention has been added for the `self` + argument in constructors and for named results. See + [Language changes](#24-6-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. +- `Lifetime` and related types in the standard library have been renamed to + [`Origin`](/mojo/stdlib/builtin/type_aliases/Origin) 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, + including being able to specify a union of origins by listing multiple values + in the `__origin_of()` operator or inside the `ref` origin specifier + (`ref [a, b]`). For details, see [Language changes](#24-6-language-changes). For background information and rationale on the name change see [the proposal](https://github.com/modularml/mojo/issues/3623). For more @@ -44,70 +49,92 @@ detailed information in the following sections: [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. +- Implicit conversions are now opt-in using the + [`@implicit`](/mojo/manual/decorators/implicit) decorator. See + [Language changes](#24-6-language-changes) for details. + +- The standard library has added several new types, including + [`Deque`](/mojo/stdlib/collections/deque/Deque) (a double-ended queue) and + [`OwnedPointer`](/mojo/stdlib/memory/owned_pointer/OwnedPointer) (safe, + single-owner, non-nullable smart pointer). See + [Standard library changes](#standard-library-changes-24-6-standard-library-changes) + for details. + +- The VS Code extension now supports setting data breakpoints and function + breakpoints, and the Mojo LLDB debugger supports symbol breakpoints, such + as `b main` or `b my_module::main`. -- Lots of new docs, including a brand new +- We've made a number of improvement to how information is displayed in error + messages, LSP, and generated API documentation. For details, see + [Tooling changes](#24-6-tooling-changes). + +- And we've added a number 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 +### Language changes {#24-6-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. +- Argument convention changes: -- 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: + - The `inout` and `borrowed` argument conventions have been renamed to `mut` + (for "mutate") and `read`, respectively. These verbs reflect what the callee + can do to the argument value passed in by the caller, without requiring the + programmer to know about advanced features like references. - ```mojo - struct Foo: - fn __init__(out self): pass + For information on Mojo's argument conventions, see + [Argument conventions](/mojo/manual/values/ownership/#argument-conventions) + in the Mojo Manual. - fn test(): - # This works now - var fnPtr : fn(out x: Foo)->None = Foo.__init__ + - The argument convention for the `self` argument in the `__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: - var someFoo : Foo - fnPtr(someFoo) # initializes someFoo. - ``` + ```mojo + struct Foo: + fn __init__(out self): pass + + fn test(): + # This works now + var fnPtr : fn(out x: Foo)->None = Foo.__init__ - 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. + var someFoo : Foo + fnPtr(someFoo) # initializes someFoo. + ``` -- 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). + 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. - ```mojo - # This function has type "fn() -> String" - fn example(out result: String): - result = "foo" - ``` + - Similarly, the spelling of named 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). - The parser still accepts the old syntax as a synonym for this, but that will - eventually be deprecated and removed. + ```mojo + # This function has type "fn() -> String" + fn example(out result: String): + result = "foo" + ``` - 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. + 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: +- Single argument constructors now require the + [`@implicit`](/mojo/manual/decorators/implicit) decorator to allow for + implicit conversions. Previously you could define an `__init__` that takes a + single argument: ```mojo struct Foo: @@ -152,85 +179,117 @@ detailed information in the following sections: [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: +- Origin-related changes: - ```mojo - fn my_min[T: Comparable](ref a: T, ref b: T) -> ref [a, b] T: - return a if a < b else b - ``` + - The `AnyLifetime` type (useful for declaring origin types as parameters) has + has been renamed to [`Origin`](/mojo/stdlib/builtin/type_aliases/Origin) and + the `__lifetime_of()` operator renamed to `__origin_of()`. - 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. -- `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`. - - 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]`. - - `ImmutableOrigin` and `MutableOrigin` are now, respectively, just aliases - for `Origin[False]` and `Origin[True]`. + - `Origin` struct values are now supported in the origin specifier of a + `ref [..]` argument. - - `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. - - Added `Origin.cast_from` for casting the mutability of an origin value. + - `ref` arguments and results now allow for 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()`: -- `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 + ``` - ```mojo - fn return_ref(a: String) -> ref [a] String: - return a - ``` + - 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: -- `ref` function arguments without an origin clause are now treated as - `ref [_]`, which is more syntactically convenient and consistent: + ```mojo + fn my_min[T: Comparable](ref a: T, ref b: T) -> ref [a, b] T: + return a if a < b else b + ``` - ```mojo - fn takes_and_return_ref(ref a: String) -> ref [a] String: - return a - ``` + 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 `__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. + - `ref` function arguments without an origin clause are now treated as + `ref [_]`, which is more syntactically convenient and consistent: -- 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 + fn takes_and_return_ref(ref a: String) -> ref [a] String: + return a + ``` - ```mojo - var str = String(...) - var ptr = str.unsafe_ptr() - some_low_level_api(ptr) - _ = str^ # OLD HACK: Explicitly keep string alive until here! - ``` + - 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`](/mojo/stdlib/memory/unsafe_pointer/UnsafePointer). + Consider a typical example working with strings before this change: - 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 + 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`](/mojo/stdlib/memory/unsafe_pointer/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! + + - 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^`!! + ``` - 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! + 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. - Infer-only parameters may now be explicitly bound with keywords, enabling some important patterns in the standard library: @@ -243,6 +302,38 @@ detailed information in the following sections: fn take_imm_slice(a: ImmStringSlice): ... ``` +- 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) + ``` + - 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. @@ -256,30 +347,6 @@ detailed information in the following sections: 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). @@ -295,102 +362,10 @@ detailed information in the following sections: ### 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. +- Introduced a new [`Deque`](/mojo/stdlib/collections/deque/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. @@ -401,92 +376,15 @@ detailed information in the following sections: 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, +- The `Formatter` struct has been replaced with a + [`Writer`](/mojo/stdlib/utils/write/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: + `Formattable` trait is now named + [`Writable`](/mojo/stdlib/utils/write/Writable), and the + `String.format_sequence()` static method to initialize a new `String` has been + renamed to [`String.write()`](/mojo/stdlib/collections/string/String/#write). + Here's an example of using all of the changes: ```mojo from memory import Span @@ -534,49 +432,239 @@ detailed information in the following sections: print(new_string) ``` + ```output Point(1, 2) Point(3, 4) + ``` + +- Python interop changes: + + - Introduced + [`TypedPythonObject`](/mojo/stdlib/python/python_object/TypedPythonObject) + as a light-weight way to annotate + [`PythonObject`](/mojo/stdlib/python/python_object/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()`](/mojo/stdlib/python/python/Python#add_object), to + add a named `PythonObject` value to a Python 'module' object instance. + + - Added + [`Python.unsafe_get_python_exception()`](/mojo/stdlib/python/python/Python#unsafe_get_python_exception), + as an efficient low-level utility to get the Mojo `Error` equivalent of the + current CPython error state. -- You can now use the `+=` and `*` operators on a `StringLiteral` at compile - time using the `alias` keyword: + - Add + [`PythonObject.from_borrowed_ptr()`](/mojo/stdlib/python/python_object/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. + + - 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. + + - Added + [`PythonObject.__contains__()`](/mojo/stdlib/python/python_object/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") + ``` + +- Pointer related changes: + + - The [`UnsafePointer`](/mojo/stdlib/memory/unsafe_pointer/UnsafePointer) type + now has an `origin` parameter that can be used when the `UnsafePointer` + points to a value with a known origin. This origin is propagated through the + `ptr[]` indirection operation. This parameter and other `UnsafePointer` + parameters (other than the type) are now keyword-only. + + - 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]) + ``` + + - 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`. + + - The `Reference` type has been renamed to + [`Pointer`](/mojo/stdlib/memory/pointer/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. + + For an overview of Mojo's pointer types, see the new + [Intro to pointers](/mojo/manual/pointers/) page in the Mojo Manual. + + - A new + [`as_noalias_ptr()`](/mojo/stdlib/memory/unsafe_pointer/UnsafePointer#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. + +- Added the [`Floatable`](/mojo/stdlib/builtin/floatable/Floatable) and + [`FloatableRaising`](/mojo/stdlib/builtin/floatable/FloatableRaising) traits to + denote types that can be converted to a `Float64` value using the builtin + `float` function. Made `SIMD` and `FloatLiteral` conform to the `Floatable` + trait. ([PR #3163](https://github.com/modularml/mojo/pull/3163)) ```mojo - alias original = "mojo" - alias concat = original * 3 - assert_equal("mojomojomojo", concat) + fn foo[F: Floatable](v: F): + ... + + var f = float(Int32(45)) ``` - Or inside a `fn` that is being evaluated at compile time: +- The [`rebind()`](/mojo/stdlib/builtin/rebind/rebind) standard library function + now works with memory-only types in addition to + `@register_passable("trivial")` ones, without requiring a copy. For more + information, see + [The `rebind()` builtin](/mojo/manual/parameters/#the-rebind-builtin) in the + Mojo Manual. - ```mojo - fn add_literal( - owned original: StringLiteral, add: StringLiteral, n: Int - ) -> StringLiteral: - for _ in range(n): - original += add - return original +- Introduced the [`random.shuffle()`](/mojo/stdlib/random/random/shuffle) + function for randomizing the elements of a `List`. + ([PR #3327](https://github.com/modularml/mojo/pull/3327)) + Example: - fn main(): - alias original = "mojo" - alias concat = add_literal(original, "!", 4) - assert_equal("mojo!!!!", concat) + ```mojo + from random import shuffle + + var l = List[Int](1, 2, 3, 4, 5) + shuffle(l) ``` - These operators can't be evaluated at runtime, as a `StringLiteral` must be - written into the binary during compilation. +- The [`Dict.__getitem__()`](/mojo/stdlib/collections/dict/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`](/mojo/stdlib/builtin/builtin_slice/Slice#fields) is now an + `Optional[Int]`, matching the optionality of `slice.step` in Python. + ([PR #3160](https://github.com/modularml/mojo/pull/3160)) + +- There is now a [`Byte`](/mojo/stdlib/builtin/simd/#aliases) alias to better + express intent when working with a pack of bits. + ([PR #3670](https://github.com/modularml/mojo/pull/3670)). + +- Expanded [`os.path`](/mojo/stdlib/os/path/path/) with new functions: + - `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()`](/mojo/stdlib/collections/string/String#reserve) method + and new constructor to the `String` struct to allocate additional capacity. + ([PR #3755](https://github.com/modularml/mojo/pull/3755)). + +- A new + [`StringLiteral.get[some_stringable]()`](/mojo/stdlib/builtin/string_literal/StringLiteral#get) + method is available. It allows forming a runtime-constant `StringLiteral` from + a compile-time-dynamic `Stringable` value. + +- [`Span`](/mojo/stdlib/memory/span/Span) has moved from the `utils` module to + the `memory` module. + +- [`Span`](/mojo/stdlib/memory/span/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]`. + +- A new [`AsBytes`](/mojo/stdlib/memory/span/AsBytes) trait has been added to + enable taking a `Span[Byte]` from any type that implements `as_bytes()`. + `String.as_bytes()` and `String.as_bytes_slice()` have been consolidated under + `String.as_bytes()` to return a `Span[Byte]`. If you require a copy, you can + convert the `Span` to a `List` with `List(my_string.as_bytes())`. + +- [`StringSlice`](/mojo/stdlib/utils/string_slice/StringSlice) now implements + `strip()`, `rstrip()`, and `lstrip()`. + +- [`StringRef`](/mojo/stdlib/utils/stringref/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)) + +- [`StringRef`](/mojo/stdlib/utils/stringref/StringRef) is now representable so + `repr(StringRef("hello"))` will return `StringRef('hello')`. + +- 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`. + +- Restored implicit copyability of [`Tuple`](/mojo/stdlib/builtin/tuple/Tuple) + and [`ListLiteral`](/mojo/stdlib/builtin/builtin_list/ListLiteral). + +- The + [aliases for C foreign function interface (FFI)](/mojo/stdlib/sys/ffi/#aliases) + have been renamed: `C_int` -> `c_int`, `C_long` -> `c_long` and so on. + +- `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 + ``` - 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. + [`IndexList`](/mojo/stdlib/utils/index_/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())`. +- Added [`DLHandle.get_symbol()`](/mojo/stdlib/sys/ffi/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. -### Tooling changes +### Tooling changes {#24-6-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 @@ -597,11 +685,37 @@ detailed information in the following sections: 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 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, for example, `b main` + or `b my_module::main`. + +- 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: -- The Mojo LLDB debugger now supports symbol breakpoints, e.g. `b main` or - `b my_module::main`. + ```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 Mojo Language Server and generated documentation now print parametric + result types correctly, e.g. showing `SIMD[type, simd_width]` instead of + `SIMD[$0, $1]`. + +- Generated API documentation now shows the signatures for structs, and + identifies `@register_passable` and `@register_passable("trivial")` types. - The VS Code extension now allows cancelling the installation of its private MAX SDK. @@ -619,59 +733,10 @@ detailed information in the following sections: - 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. +- 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 @@ -719,31 +784,11 @@ detailed information in the following sections: - 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. + 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: From 9557816183c981704dbaf49c11795d095e60282d Mon Sep 17 00:00:00 2001 From: Connor Gray Date: Fri, 13 Dec 2024 14:36:06 -0600 Subject: [PATCH 093/509] [stdlib] cleanup: Rename `UnsafePointer.is_mutable` to `mut` + changelog recent ptr origin improvements MODULAR_ORIG_COMMIT_REV_ID: ea8c7e5271924305c3397eb483d31ca19886a4a1 --- docs/changelog.md | 40 +++++++++++++++++ stdlib/src/builtin/string_literal.mojo | 8 ++-- stdlib/src/collections/list.mojo | 2 +- stdlib/src/collections/string.mojo | 2 +- stdlib/src/memory/memory.mojo | 2 +- stdlib/src/memory/span.mojo | 6 +-- stdlib/src/memory/unsafe_pointer.mojo | 50 ++++++++++------------ stdlib/src/random/random.mojo | 2 +- stdlib/src/utils/string_slice.mojo | 2 +- stdlib/test/collections/test_string.mojo | 2 +- stdlib/test/memory/test_unsafepointer.mojo | 6 +-- 11 files changed, 77 insertions(+), 45 deletions(-) diff --git a/docs/changelog.md b/docs/changelog.md index 27f3f08ff6..4846564f3b 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -22,6 +22,46 @@ what we publish. ### Standard library changes +- `UnsafePointer` is now parameterized on mutability. Previously, + `UnsafePointer` could only represent mutable pointers. + + The new `mut` parameter can be used to restrict an `UnsafePointer` to a + specific mutability: `UnsafePointer[T, mut=False]` represents a pointer to + an immutable `T` value. This is analogous to a `const *` pointer in C++. + + - `UnsafePointer.address_of()` will now infer the origin and mutability + of the resulting pointer from the argument. For example: + + ```mojo + var local = 10 + # Constructs a mutable pointer, because `local` is a mutable memory location + var ptr = UnsafePointer.address_of(local) + ``` + + To force the construction of an immutable pointer to an otherwise mutable + memory location, use a cast: + + ```mojo + var local = 10 + # Cast the mutable pointer to be immutable. + var ptr = UnsafePointer.address_of(local).bitcast[mut=False]() + ``` + + - The `unsafe_ptr()` method on several standard library collection types have + been updated to use parametric mutability: they will return an `UnsafePointer` + whose mutability is inherited from the mutability of the `ref self` of the + receiver at the call site. For example, `ptr1` will be immutable, while + `ptr2` will be mutable: + + ```mojo + fn take_lists(read list1: List[Int], mut list2: List[Int]): + # Immutable pointer, since receiver is immutable `read` reference + var ptr1 = list1.unsafe_ptr() + + # Mutable pointer, since receiver is mutable `mut` reference + var ptr2 = list2.unsafe_ptr() + ``` + ### Tooling changes - mblack (aka `mojo format`) no longer formats non-mojo files. This prevents diff --git a/stdlib/src/builtin/string_literal.mojo b/stdlib/src/builtin/string_literal.mojo index 727ac65555..581e21de5e 100644 --- a/stdlib/src/builtin/string_literal.mojo +++ b/stdlib/src/builtin/string_literal.mojo @@ -487,7 +487,7 @@ struct StringLiteral( @always_inline("nodebug") fn unsafe_ptr( self, - ) -> UnsafePointer[Byte, is_mutable=False, origin=StaticConstantOrigin]: + ) -> UnsafePointer[Byte, mut=False, origin=StaticConstantOrigin]: """Get raw pointer to the underlying data. Returns: @@ -498,14 +498,12 @@ struct StringLiteral( # TODO(MSTDL-555): # Remove bitcast after changing pop.string.address # return type. - return ptr.bitcast[ - Byte, is_mutable=False, origin=StaticConstantOrigin - ]() + return ptr.bitcast[Byte, mut=False, origin=StaticConstantOrigin]() @always_inline fn unsafe_cstr_ptr( self, - ) -> UnsafePointer[c_char, is_mutable=False, origin=StaticConstantOrigin]: + ) -> UnsafePointer[c_char, mut=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/list.mojo b/stdlib/src/collections/list.mojo index a3a64643a3..f0bc3d0c6a 100644 --- a/stdlib/src/collections/list.mojo +++ b/stdlib/src/collections/list.mojo @@ -927,7 +927,7 @@ struct List[T: CollectionElement, hint_trivial_type: Bool = False]( ref self, ) -> UnsafePointer[ T, - is_mutable = Origin(__origin_of(self)).is_mutable, + mut = Origin(__origin_of(self)).is_mutable, origin = __origin_of(self), ]: """Retrieves a pointer to the underlying memory. diff --git a/stdlib/src/collections/string.mojo b/stdlib/src/collections/string.mojo index 716ddc9756..06cd2afeb5 100644 --- a/stdlib/src/collections/string.mojo +++ b/stdlib/src/collections/string.mojo @@ -1598,7 +1598,7 @@ struct String( ref self, ) -> UnsafePointer[ Byte, - is_mutable = Origin(__origin_of(self)).is_mutable, + mut = Origin(__origin_of(self)).is_mutable, origin = __origin_of(self), ]: """Retrieves a pointer to the underlying memory. diff --git a/stdlib/src/memory/memory.mojo b/stdlib/src/memory/memory.mojo index ed72524482..574c13af04 100644 --- a/stdlib/src/memory/memory.mojo +++ b/stdlib/src/memory/memory.mojo @@ -153,7 +153,7 @@ fn memcmp[ @always_inline fn _memcpy_impl( - dest_data: UnsafePointer[Byte, is_mutable=True, **_], + dest_data: UnsafePointer[Byte, mut=True, **_], src_data: __type_of(dest_data), n: Int, ): diff --git a/stdlib/src/memory/span.mojo b/stdlib/src/memory/span.mojo index 03f860f899..0d9ea2f811 100644 --- a/stdlib/src/memory/span.mojo +++ b/stdlib/src/memory/span.mojo @@ -107,7 +107,7 @@ struct Span[ """ # Field - var _data: UnsafePointer[T, is_mutable=is_mutable, origin=origin] + var _data: UnsafePointer[T, mut=is_mutable, origin=origin] var _len: Int # ===------------------------------------------------------------------===# @@ -250,9 +250,7 @@ struct Span[ # Methods # ===------------------------------------------------------------------===# - fn unsafe_ptr( - self, - ) -> UnsafePointer[T, is_mutable=is_mutable, origin=origin]: + fn unsafe_ptr(self) -> UnsafePointer[T, mut=is_mutable, origin=origin]: """Retrieves a pointer to the underlying memory. Returns: diff --git a/stdlib/src/memory/unsafe_pointer.mojo b/stdlib/src/memory/unsafe_pointer.mojo index a5feb34736..e6e3809b64 100644 --- a/stdlib/src/memory/unsafe_pointer.mojo +++ b/stdlib/src/memory/unsafe_pointer.mojo @@ -55,10 +55,8 @@ struct UnsafePointer[ *, address_space: AddressSpace = AddressSpace.GENERIC, alignment: Int = _default_alignment[type](), - is_mutable: Bool = True, - origin: Origin[is_mutable] = Origin[is_mutable] - .cast_from[MutableAnyOrigin] - .result, + mut: Bool = True, + origin: Origin[mut] = Origin[mut].cast_from[MutableAnyOrigin].result, ]( ImplicitlyBoolable, CollectionElement, @@ -84,7 +82,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. + mut: Whether the origin is mutable. origin: The origin of the memory being addressed. """ @@ -164,7 +162,7 @@ struct UnsafePointer[ type, address_space=address_space, alignment=1, - is_mutable = Origin(__origin_of(arg)).is_mutable, + mut = Origin(__origin_of(arg)).is_mutable, origin = __origin_of(arg), ], ): @@ -638,7 +636,7 @@ struct UnsafePointer[ offset: The offset to store to. val: The value to store. """ - constrained[is_mutable, _must_be_mut_err]() + constrained[mut, _must_be_mut_err]() self.offset(offset)._store[alignment=alignment, volatile=volatile](val) @always_inline @@ -671,7 +669,7 @@ struct UnsafePointer[ offset: The offset to store to. val: The value to store. """ - constrained[is_mutable, _must_be_mut_err]() + constrained[mut, _must_be_mut_err]() self.offset(offset).store[alignment=alignment, volatile=volatile](val) @always_inline @@ -701,7 +699,7 @@ struct UnsafePointer[ offset: The offset to store to. val: The value to store. """ - constrained[is_mutable, _must_be_mut_err]() + constrained[mut, _must_be_mut_err]() constrained[offset_type.is_integral(), "offset must be integer"]() self.offset(int(offset))._store[alignment=alignment, volatile=volatile]( val @@ -736,7 +734,7 @@ struct UnsafePointer[ offset: The offset to store to. val: The value to store. """ - constrained[is_mutable, _must_be_mut_err]() + constrained[mut, _must_be_mut_err]() constrained[offset_type.is_integral(), "offset must be integer"]() self.offset(int(offset))._store[alignment=alignment, volatile=volatile]( val @@ -762,7 +760,7 @@ struct UnsafePointer[ Args: val: The value to store. """ - constrained[is_mutable, _must_be_mut_err]() + constrained[mut, _must_be_mut_err]() self._store[alignment=alignment, volatile=volatile](val) @always_inline("nodebug") @@ -787,7 +785,7 @@ struct UnsafePointer[ Args: val: The value to store. """ - constrained[is_mutable, _must_be_mut_err]() + constrained[mut, _must_be_mut_err]() self._store[alignment=alignment, volatile=volatile](val) @always_inline("nodebug") @@ -798,7 +796,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[mut, _must_be_mut_err]() constrained[width > 0, "width must be a positive integer value"]() constrained[ alignment > 0, "alignment must be a positive integer value" @@ -854,7 +852,7 @@ struct UnsafePointer[ val: The SIMD value to store. stride: The stride between stores. """ - constrained[is_mutable, _must_be_mut_err]() + constrained[mut, _must_be_mut_err]() strided_store(val, self, int(stride), True) @always_inline("nodebug") @@ -954,7 +952,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[mut, _must_be_mut_err]() constrained[ offset.type.is_integral(), "offset type must be an integral type", @@ -979,15 +977,13 @@ struct UnsafePointer[ address_space: AddressSpace = Self.address_space, alignment: Int = Self.alignment, *, - is_mutable: Bool = Self.is_mutable, - origin: Origin[is_mutable] = Origin[is_mutable] - .cast_from[Self.origin] - .result, + mut: Bool = Self.mut, + origin: Origin[mut] = Origin[mut].cast_from[Self.origin].result, ](self) -> UnsafePointer[ T, address_space=address_space, alignment=alignment, - is_mutable=is_mutable, + mut=mut, origin=origin, ]: """Bitcasts a UnsafePointer to a different type. @@ -996,7 +992,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. + mut: Whether the origin is mutable. origin: Origin of the destination pointer. Returns: @@ -1021,7 +1017,7 @@ struct UnsafePointer[ more efficient because it doesn't invoke `__moveinit__`. """ - constrained[is_mutable, _must_be_mut_err]() + constrained[mut, _must_be_mut_err]() _ = __get_address_as_owned_value(self.address) @always_inline @@ -1044,7 +1040,7 @@ struct UnsafePointer[ Returns: The value at the pointer. """ - constrained[is_mutable, _must_be_mut_err]() + constrained[mut, _must_be_mut_err]() return __get_address_as_owned_value(self.address) # TODO: Allow overloading on more specific traits @@ -1071,7 +1067,7 @@ struct UnsafePointer[ Args: value: The value to emplace. """ - constrained[is_mutable, _must_be_mut_err]() + constrained[mut, _must_be_mut_err]() __get_address_as_uninit_lvalue(self.address) = value^ @always_inline @@ -1097,7 +1093,7 @@ struct UnsafePointer[ Args: value: The value to emplace. """ - constrained[is_mutable, _must_be_mut_err]() + constrained[mut, _must_be_mut_err]() __get_address_as_uninit_lvalue(self.address) = value @always_inline @@ -1124,7 +1120,7 @@ struct UnsafePointer[ Args: value: The value to emplace. """ - constrained[is_mutable, _must_be_mut_err]() + constrained[mut, _must_be_mut_err]() __get_address_as_uninit_lvalue(self.address) = T(other=value) @always_inline @@ -1159,7 +1155,7 @@ struct UnsafePointer[ Args: dst: Destination pointer that the value will be moved into. """ - constrained[is_mutable, _must_be_mut_err]() + constrained[mut, _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 e64ec3373b..03d2f57275 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], is_mutable=True, **_], + ptr: UnsafePointer[Scalar[type], mut=True, **_], size: Int, /, *, diff --git a/stdlib/src/utils/string_slice.mojo b/stdlib/src/utils/string_slice.mojo index 64fbc94437..c465811f1b 100644 --- a/stdlib/src/utils/string_slice.mojo +++ b/stdlib/src/utils/string_slice.mojo @@ -765,7 +765,7 @@ struct StringSlice[mut: Bool, //, origin: Origin[mut]]( @always_inline fn unsafe_ptr( self, - ) -> UnsafePointer[Byte, is_mutable=mut, origin=origin]: + ) -> UnsafePointer[Byte, mut=mut, origin=origin]: """Gets a pointer to the first element of this string slice. Returns: diff --git a/stdlib/test/collections/test_string.mojo b/stdlib/test/collections/test_string.mojo index ff5da33ee7..4d9151b279 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().bitcast[is_mutable=True]()[] = ord("1") + v.unsafe_ptr().bitcast[mut=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 3331764e47..168ffc7bdf 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.address_of(local).bitcast[is_mutable=False]() + var p1 = UnsafePointer.address_of(local).bitcast[mut=False]() var p2 = p1 assert_equal(p1, p2) var other_local = 2 - var p3 = UnsafePointer.address_of(other_local).bitcast[is_mutable=False]() + var p3 = UnsafePointer.address_of(other_local).bitcast[mut=False]() assert_not_equal(p1, p3) - var p4 = UnsafePointer.address_of(local).bitcast[is_mutable=False]() + var p4 = UnsafePointer.address_of(local).bitcast[mut=False]() assert_equal(p1, p4) _ = local _ = other_local From 597e07b6441b28a408985388b88f512b02818350 Mon Sep 17 00:00:00 2001 From: Connor Gray Date: Fri, 13 Dec 2024 15:15:45 -0600 Subject: [PATCH 094/509] [stdlib] polish: Rename `Span.is_mutable` to `mut` MODULAR_ORIG_COMMIT_REV_ID: c6efdc7bf6a5d3c8bc0a1da04b7b563a2b31980a --- stdlib/src/memory/span.mojo | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/stdlib/src/memory/span.mojo b/stdlib/src/memory/span.mojo index 0d9ea2f811..66107ea66d 100644 --- a/stdlib/src/memory/span.mojo +++ b/stdlib/src/memory/span.mojo @@ -45,15 +45,15 @@ trait AsBytes: @value struct _SpanIter[ - is_mutable: Bool, //, + mut: Bool, //, T: CollectionElement, - origin: Origin[is_mutable], + origin: Origin[mut], forward: Bool = True, ]: """Iterator for Span. Parameters: - is_mutable: Whether the reference to the span is mutable. + mut: Whether the reference to the span is mutable. T: The type of the elements in the span. origin: The origin of the Span. forward: The iteration direction. `False` is backwards. @@ -94,20 +94,20 @@ struct _SpanIter[ @value @register_passable("trivial") struct Span[ - is_mutable: Bool, //, + mut: Bool, //, T: CollectionElement, - origin: Origin[is_mutable], + origin: Origin[mut], ](CollectionElementNew): """A non owning view of contiguous data. Parameters: - is_mutable: Whether the span is mutable. + mut: Whether the span is mutable. T: The type of the elements in the span. origin: The origin of the Span. """ # Field - var _data: UnsafePointer[T, mut=is_mutable, origin=origin] + var _data: UnsafePointer[T, mut=mut, origin=origin] var _len: Int # ===------------------------------------------------------------------===# @@ -250,7 +250,7 @@ struct Span[ # Methods # ===------------------------------------------------------------------===# - fn unsafe_ptr(self) -> UnsafePointer[T, mut=is_mutable, origin=origin]: + fn unsafe_ptr(self) -> UnsafePointer[T, mut=mut, origin=origin]: """Retrieves a pointer to the underlying memory. Returns: From c61a7ad6e914ab2d8757cb8b60ed78237c91ac15 Mon Sep 17 00:00:00 2001 From: modularbot <116839051+modularbot@users.noreply.github.com> Date: Fri, 13 Dec 2024 15:50:33 -0600 Subject: [PATCH 095/509] [External] [stdlib] Add `Span[Scalar[type]].__contains__()` (#52752) MODULAR_ORIG_COMMIT_REV_ID: cae378ed6401e0c400fc4290cbba46227d361daf --- stdlib/src/memory/span.mojo | 37 +++++++++++++++++++++++++++++++ stdlib/test/memory/test_span.mojo | 10 +++++++++ 2 files changed, 47 insertions(+) diff --git a/stdlib/src/memory/span.mojo b/stdlib/src/memory/span.mojo index 66107ea66d..fcdf2d7aa9 100644 --- a/stdlib/src/memory/span.mojo +++ b/stdlib/src/memory/span.mojo @@ -23,6 +23,7 @@ from memory import Span from collections import InlineArray from memory import Pointer, UnsafePointer +from sys.info import simdwidthof trait AsBytes: @@ -246,6 +247,42 @@ struct Span[ """ return self._len + fn __contains__[ + type: DType, // + ](self: Span[Scalar[type]], value: Scalar[type]) -> Bool: + """Verify if a given value is present in the Span. + + Parameters: + type: The DType of the scalars stored in the Span. + + Args: + value: The value to find. + + Returns: + True if the value is contained in the list, False otherwise. + """ + + alias widths = InlineArray[Int, 6](256, 128, 64, 32, 16, 8) + var ptr = self.unsafe_ptr() + var length = len(self) + var processed = 0 + + @parameter + for i in range(len(widths)): + alias width = widths[i] + + @parameter + if simdwidthof[type]() >= width: + for _ in range((length - processed) // width): + if value in (ptr + processed).load[width=width](): + return True + processed += width + + for i in range(length - processed): + if ptr[processed + i] == value: + return True + return False + # ===------------------------------------------------------------------===# # Methods # ===------------------------------------------------------------------===# diff --git a/stdlib/test/memory/test_span.mojo b/stdlib/test/memory/test_span.mojo index 92c49210c6..4a3b6dd980 100644 --- a/stdlib/test/memory/test_span.mojo +++ b/stdlib/test/memory/test_span.mojo @@ -156,6 +156,15 @@ def test_bool(): assert_true(not s[0:0]) +def test_contains(): + items = List[Byte](1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) + span = Span(items) + assert_true(0 not in span) + assert_true(16 not in span) + for item in items: + assert_true(item[] in span) + + def test_equality(): var l = InlineArray[String, 7]("a", "b", "c", "d", "e", "f", "g") var l2 = List[String]("a", "b", "c", "d", "e", "f", "g") @@ -208,6 +217,7 @@ def main(): test_span_slice() test_equality() test_bool() + test_contains() test_fill() test_ref() test_reversed() From 08a874dfaf09166213ef81ff7a5d4ec5eb56b5b8 Mon Sep 17 00:00:00 2001 From: martinvuyk <110240700+martinvuyk@users.noreply.github.com> Date: Fri, 13 Dec 2024 17:16:57 -0600 Subject: [PATCH 096/509] [External] [stdlib] Remove `StringRef` starts and endswith (#52785) [External] [stdlib] Remove `StringRef` starts and endswith Remove `StringRef` `startswith` and `endswith`. We already have this in `StringSlice`. Co-authored-by: martinvuyk <110240700+martinvuyk@users.noreply.github.com> Closes modularml/mojo#3867 MODULAR_ORIG_COMMIT_REV_ID: 6e510ad4bd401110aa4cb1172f3c4c60dfef2628 --- docs/changelog.md | 3 ++ stdlib/src/utils/stringref.mojo | 40 ---------------------- stdlib/test/utils/test_string_slice.mojo | 42 ++++++++++++++++++++++++ stdlib/test/utils/test_stringref.mojo | 21 ------------ 4 files changed, 45 insertions(+), 61 deletions(-) diff --git a/docs/changelog.md b/docs/changelog.md index 4846564f3b..6babee4c83 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -73,6 +73,9 @@ what we publish. ### ❌ Removed +- `StringRef` is being deprecated. Use `StringSlice` instead. + - removed `StringRef.startswith()` and `StringRef.endswith()` + ### 🛠️ Fixed - The Mojo Kernel for Jupyter Notebooks is working again on nightly releases. diff --git a/stdlib/src/utils/stringref.mojo b/stdlib/src/utils/stringref.mojo index 75e864b405..4e92e96848 100644 --- a/stdlib/src/utils/stringref.mojo +++ b/stdlib/src/utils/stringref.mojo @@ -650,46 +650,6 @@ struct StringRef( current_offset = loc + len(delimiter) return output - fn startswith( - self, prefix: StringRef, start: Int = 0, end: Int = -1 - ) -> Bool: - """Checks if the StringRef starts with the specified prefix between start - and end positions. Returns True if found and False otherwise. - - Args: - prefix: The prefix to check. - start: The start offset from which to check. - end: The end offset from which to check. - - Returns: - True if the self[start:end] is prefixed by the input prefix. - """ - if end == -1: - return self.find(prefix, start) == start - return StringRef(self.unsafe_ptr() + start, end - start).startswith( - prefix - ) - - fn endswith(self, suffix: StringRef, start: Int = 0, end: Int = -1) -> Bool: - """Checks if the StringRef end with the specified suffix between start - and end positions. Returns True if found and False otherwise. - - Args: - suffix: The suffix to check. - start: The start offset from which to check. - end: The end offset from which to check. - - Returns: - True if the self[start:end] is suffixed by the input suffix. - """ - if len(suffix) > len(self): - return False - if end == -1: - return self.rfind(suffix, start) + len(suffix) == len(self) - return StringRef(self.unsafe_ptr() + start, end - start).endswith( - suffix - ) - # ===-----------------------------------------------------------------------===# # Utilities diff --git a/stdlib/test/utils/test_string_slice.mojo b/stdlib/test/utils/test_string_slice.mojo index dfeb37b12f..f88ed32dbb 100644 --- a/stdlib/test/utils/test_string_slice.mojo +++ b/stdlib/test/utils/test_string_slice.mojo @@ -584,6 +584,46 @@ def test_strip(): assert_true(comp_str4_stripped == "\n mississippimississippi \n") +def test_startswith(): + var empty = StringSlice("") + assert_true(empty.startswith("")) + assert_false(empty.startswith("a")) + assert_false(empty.startswith("ab")) + + var a = StringSlice("a") + assert_true(a.startswith("")) + assert_true(a.startswith("a")) + assert_false(a.startswith("ab")) + + var ab = StringSlice("ab") + assert_true(ab.startswith("")) + assert_true(ab.startswith("a")) + assert_false(ab.startswith("b")) + assert_true(ab.startswith("b", start=1)) + assert_true(ab.startswith("a", end=1)) + assert_true(ab.startswith("ab")) + + +def test_endswith(): + var empty = StringSlice("") + assert_true(empty.endswith("")) + assert_false(empty.endswith("a")) + assert_false(empty.endswith("ab")) + + var a = StringSlice("a") + assert_true(a.endswith("")) + assert_true(a.endswith("a")) + assert_false(a.endswith("ab")) + + var ab = StringSlice("ab") + assert_true(ab.endswith("")) + assert_false(ab.endswith("a")) + assert_true(ab.endswith("b")) + assert_true(ab.endswith("b", start=1)) + assert_true(ab.endswith("a", end=1)) + assert_true(ab.endswith("ab")) + + def main(): test_string_literal_byte_span() test_string_byte_span() @@ -605,3 +645,5 @@ def main(): test_rstrip() test_lstrip() test_strip() + test_startswith() + test_endswith() diff --git a/stdlib/test/utils/test_stringref.mojo b/stdlib/test/utils/test_stringref.mojo index 0dc7686197..67965d22a4 100644 --- a/stdlib/test/utils/test_stringref.mojo +++ b/stdlib/test/utils/test_stringref.mojo @@ -108,26 +108,6 @@ def test_find(): assert_equal(StringRef("").find("abc"), -1) -def test_endswith(): - var empty = StringRef("") - assert_true(empty.endswith("")) - assert_false(empty.endswith("a")) - assert_false(empty.endswith("ab")) - - var a = StringRef("a") - assert_true(a.endswith("")) - assert_true(a.endswith("a")) - assert_false(a.endswith("ab")) - - var ab = StringRef("ab") - assert_true(ab.endswith("")) - assert_false(ab.endswith("a")) - assert_true(ab.endswith("b")) - assert_true(ab.endswith("b", start=1)) - assert_true(ab.endswith("a", end=1)) - assert_true(ab.endswith("ab")) - - fn test_stringref_split() raises: # Reject empty delimiters with assert_raises( @@ -195,5 +175,4 @@ def main(): test_intable() test_indexing() test_find() - test_endswith() test_str_and_ref() From 9f4544a9cbb6b023ab907b6942ba1c21a049a534 Mon Sep 17 00:00:00 2001 From: modularbot Date: Sat, 14 Dec 2024 19:15:22 +0000 Subject: [PATCH 097/509] Update lockfiles to point to latest nightly version: 25.1.0.dev2024121405 --- examples/life/magic.lock | 979 ++++++++++++++++--------------- examples/magic.lock | 979 ++++++++++++++++--------------- examples/notebooks/magic.lock | 1019 ++++++++++++++++----------------- examples/operators/magic.lock | 979 ++++++++++++++++--------------- magic.lock | 979 ++++++++++++++++--------------- 5 files changed, 2455 insertions(+), 2480 deletions(-) diff --git a/examples/life/magic.lock b/examples/life/magic.lock index fa908ca728..c9b212466d 100644 --- a/examples/life/magic.lock +++ b/examples/life/magic.lock @@ -17,19 +17,19 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/aom-3.9.1-hac33072_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/attr-2.5.1-h166bdaf_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-h8c8080f_14.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.1-h0f28dba_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.10.5-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.3.0-h9cc6398_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.0-hf811eff_10.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.2-hce7dc5d_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-hfd54f12_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-ha3c2ba9_11.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.5-h55e9418_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.1-h9cc6398_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-h9cc6398_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.7-hed26007_5.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-h571fd1c_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-hb921021_15.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.1-h1a47875_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.10.6-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.3.0-h4e1184b_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.0-h7959bf6_11.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.2-hefd7a92_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-hbf5b6a4_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h11f4f37_12.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.7-hf454442_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.1-h4e1184b_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-h4e1184b_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.7-hd92328a_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-hc430e4a_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.10.0-h113e628_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.13.0-h3cf044e_1.conda @@ -170,12 +170,12 @@ 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-25.1.0.dev2024121305-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024121305-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024121305-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024121405-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024121405-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024121405-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121405-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-25.1.0.dev2024121305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024121405-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_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.15-py312h98912ed_1.conda @@ -212,7 +212,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.3-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.27.1-py312h12e396e_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.6.1-pyh3cfb1c2_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.7.0-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pygame-2.6.1-py312h4fcb14b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyinstrument-5.0.0-py312h66e93f0_0.conda @@ -294,19 +294,19 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aom-3.9.1-hcccb83c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/attr-2.5.1-h4e544f5_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-hb4dd4bb_14.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.1-h1aca5b9_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-common-0.10.5-h86ecc28_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-compression-0.3.0-h10558d5_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-event-stream-0.5.0-ha9733bd_10.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.2-h53134c8_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-h8aa8d47_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h2f8d747_11.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.5-h757e810_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.1-h10558d5_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h10558d5_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.7-hc8d91e0_5.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h2d3f608_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-h2cb9fb3_15.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.1-h740c5af_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-common-0.10.6-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-compression-0.3.0-h0f0193d_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-event-stream-0.5.0-hcbd8f92_11.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.2-h3df160d_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-h92bf595_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h5f50e26_12.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.7-h2080895_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.1-h0f0193d_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h0f0193d_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.7-h8a4e35f_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h849ce1a_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-core-cpp-1.14.0-h1887c18_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-identity-cpp-1.10.0-h47b0b28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-blobs-cpp-12.13.0-h185ecfd_1.conda @@ -447,12 +447,12 @@ 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-25.1.0.dev2024121305-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024121305-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024121305-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024121405-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024121405-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024121405-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121405-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-25.1.0.dev2024121305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024121405-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_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.15-py312hdd3e373_1.conda @@ -489,7 +489,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.3-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pydantic-core-2.27.1-py312h8cbf658_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.6.1-pyh3cfb1c2_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.7.0-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pygame-2.6.1-py312hb2c8110_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyinstrument-5.0.0-py312hb2c0f52_0.conda @@ -568,19 +568,19 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aom-3.9.1-h7bae524_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-h93897a1_14.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.1-h4d88cd7_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.10.5-h5505292_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-compression-0.3.0-h4d88cd7_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.0-h9fa824c_10.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.2-hc68443d_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-h66499f2_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-hd073cef_11.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.5-hb201fd0_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.1-h4d88cd7_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-h4d88cd7_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.7-hb9a023b_5.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-h39838b8_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-h8bc59a9_15.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.1-hc8a0bd2_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.10.6-h5505292_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-compression-0.3.0-hc8a0bd2_5.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.0-h54f970a_11.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.2-h96aa502_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-haba67d1_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h24f418c_12.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.7-h1be5864_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.1-hc8a0bd2_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-hc8a0bd2_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.7-h19a973c_7.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-he0ff2e4_4.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.14.0-hd50102c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.10.0-hc602bab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-blobs-cpp-12.13.0-h7585a09_1.conda @@ -707,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-25.1.0.dev2024121305-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024121305-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024121305-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024121405-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024121405-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024121405-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121405-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-25.1.0.dev2024121305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024121405-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 @@ -748,7 +748,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.3-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.27.1-py312hcd83bfe_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.6.1-pyh3cfb1c2_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.7.0-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pygame-2.6.1-py312hb14fe3b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyinstrument-5.0.0-py312h0bf5046_0.conda @@ -1126,469 +1126,465 @@ packages: - kind: conda name: aws-c-auth version: 0.8.0 - build: h8c8080f_14 - build_number: 14 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-h8c8080f_14.conda - sha256: 7a9f7763e3a151ae1008ead51458f9b889b657f388266d53c6f7fa383dbb2481 - md5: a9284141081982473ebf41b92566bbcb + build: h2cb9fb3_15 + build_number: 15 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-h2cb9fb3_15.conda + sha256: 4ce859dc9ff128bf5515604c43f33fb511386022fc9765ca077990f2a3f23df5 + md5: e524686ace966acefb5b8cbc6e8b3daa depends: - - __glibc >=2.17,<3.0.a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.5,<0.10.6.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 107775 - timestamp: 1733709347751 + size: 111854 + timestamp: 1734021745104 - kind: conda name: aws-c-auth version: 0.8.0 - build: h93897a1_14 - build_number: 14 + build: h8bc59a9_15 + build_number: 15 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-h93897a1_14.conda - sha256: 3ec33500c5def035acb9ba406161f5452e39b1b818c67d8a56103d6def47bda6 - md5: 061e221dc5cca62be8fab49a16bfb99d + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-h8bc59a9_15.conda + sha256: 0e41e56b662e76e024182adebcd91d09a4d38a83b35217c84e4967354dfff9a2 + md5: f688b8893c20ad9477a19e7ce614014a depends: - __osx >=11.0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.5,<0.10.6.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 license: Apache-2.0 license_family: Apache - size: 92250 - timestamp: 1733709418870 + size: 92507 + timestamp: 1734021831330 - kind: conda name: aws-c-auth version: 0.8.0 - build: hb4dd4bb_14 - build_number: 14 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-hb4dd4bb_14.conda - sha256: a9622ac836bbe4a24310e0e77a42ef0a17e5fa0703276f8bbbef945deaca337c - md5: a5b86123507e184fb4463e1f8890b398 + build: hb921021_15 + build_number: 15 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-hb921021_15.conda + sha256: 537006ad6d5097c134494166a6a1dc1451d5d050878d7b82cef498bfda40ba8a + md5: c79d50f64cffa5ad51ecc1a81057962f depends: + - __glibc >=2.17,<3.0.a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.5,<0.10.6.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 111975 - timestamp: 1733709317063 + size: 107614 + timestamp: 1734021692519 - kind: conda name: aws-c-cal version: 0.8.1 - build: h0f28dba_2 - build_number: 2 + build: h1a47875_3 + build_number: 3 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.1-h0f28dba_2.conda - sha256: 023fa0d0618b652b0be5eac73d92fd47136351da7d331334c45d5dd1ee760401 - md5: 94faebd978282d2a4a8514141daec756 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.1-h1a47875_3.conda + sha256: 095ac824ea9303eff67e04090ae531d9eb33d2bf8f82eaade39b839c421e16e8 + md5: 55a8561fdbbbd34f50f57d9be12ed084 depends: - __glibc >=2.17,<3.0.a0 - - aws-c-common >=0.10.5,<0.10.6.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 - libgcc >=13 - openssl >=3.3.1,<4.0a0 license: Apache-2.0 license_family: Apache - size: 47694 - timestamp: 1733390870810 + size: 47601 + timestamp: 1733991564405 - kind: conda name: aws-c-cal version: 0.8.1 - build: h1aca5b9_2 - build_number: 2 + build: h740c5af_3 + build_number: 3 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.1-h1aca5b9_2.conda - sha256: df203473e8675fc27ae5cb62bc09e336fe92655df0a0056e73087cb22aed287e - md5: 31d9e82aac5cd3fe399535bcec0f2975 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.1-h740c5af_3.conda + sha256: c5c7961d48ca7320ed3560c036f7aa5244df4b85d9657f70aacc5faba3e1509a + md5: 57ed2c445d7ef01d121b9bcea0522913 depends: - - aws-c-common >=0.10.5,<0.10.6.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 - libgcc >=13 - openssl >=3.3.1,<4.0a0 license: Apache-2.0 license_family: Apache - size: 49822 - timestamp: 1733390907734 + size: 50036 + timestamp: 1733991581303 - kind: conda name: aws-c-cal version: 0.8.1 - build: h4d88cd7_2 - build_number: 2 + build: hc8a0bd2_3 + build_number: 3 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.1-h4d88cd7_2.conda - sha256: 30e6bc4feea78a280553b084a960515e550dabfae0e63ba511be773c3a9f6b5a - md5: 3cb07f08e5aabe657b0b5fb13945e79a + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.1-hc8a0bd2_3.conda + sha256: 1f44be36e1daa17b4b081debb8aee492d13571084f38b503ad13e869fef24fe4 + md5: 8b0ce61384e5a33d2b301a64f3d22ac5 depends: - __osx >=11.0 - - aws-c-common >=0.10.5,<0.10.6.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 - openssl >=3.3.1,<4.0a0 license: Apache-2.0 license_family: Apache - size: 39878 - timestamp: 1733390962202 + size: 39925 + timestamp: 1733991649383 - kind: conda name: aws-c-common - version: 0.10.5 + version: 0.10.6 build: h5505292_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.10.5-h5505292_0.conda - sha256: 54554886028d25b5c752369e7ae8321852e875fdc780ff9357b72a31f3e5d5b4 - md5: 49f049f8b10cf8c2c5a26660854fd21a + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.10.6-h5505292_0.conda + sha256: 3bde135c8e74987c0f79ecd4fa17ec9cff0d658b3090168727ca1af3815ae57a + md5: 145e5b4c9702ed279d7d68aaf096f77d depends: - __osx >=11.0 license: Apache-2.0 license_family: Apache - size: 222184 - timestamp: 1733324871298 + size: 221863 + timestamp: 1733975576886 - kind: conda name: aws-c-common - version: 0.10.5 + version: 0.10.6 build: h86ecc28_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-common-0.10.5-h86ecc28_0.conda - sha256: bdea66b7be9acd463bbfd583d2f80ff676d376c60480a2d3f9f7de7b4bf6d2b2 - md5: fcd238b0cc98927742a96aa411123e32 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-common-0.10.6-h86ecc28_0.conda + sha256: 57288ec5df35781bea8fc6a8c9099cad6695b747784fc1b8862a0f9e5b3bf5ab + md5: fef806a0f6de853670c746bbece01966 depends: - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 258257 - timestamp: 1733324684433 + size: 259031 + timestamp: 1733975520465 - kind: conda name: aws-c-common - version: 0.10.5 + version: 0.10.6 build: hb9d3cd8_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.10.5-hb9d3cd8_0.conda - sha256: 93e83e2a31f41bac2aa5eae8fbc7f1d31449a04a3df8a64ebcac2433f52a86ad - md5: d8288fbad9d809b9ca139b8beb6553ef + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.10.6-hb9d3cd8_0.conda + sha256: 496e92f2150fdc351eacf6e236015deedb3d0d3114f8e5954341cbf9f3dda257 + md5: d7d4680337a14001b0e043e96529409b depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 237114 - timestamp: 1733324723318 + size: 236574 + timestamp: 1733975453350 - kind: conda name: aws-c-compression version: 0.3.0 - build: h10558d5_4 - build_number: 4 + build: h0f0193d_5 + build_number: 5 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-compression-0.3.0-h10558d5_4.conda - sha256: 45ea74461b6a5453325db2201ba9f728f20e89ead17730e93ddd7411a833c058 - md5: 8ceaf4396978c33bc695129425f12734 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-compression-0.3.0-h0f0193d_5.conda + sha256: 3f05d19f68ef800f33d44ea2a4211003124076516c8469abc7d432236344df53 + md5: 3a1421d12435df5b4c412cc4c8fac64d depends: - - aws-c-common >=0.10.5,<0.10.6.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 19742 - timestamp: 1733391062884 + size: 19740 + timestamp: 1733991625201 - kind: conda name: aws-c-compression version: 0.3.0 - build: h4d88cd7_4 - build_number: 4 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-compression-0.3.0-h4d88cd7_4.conda - sha256: b6900e82b553d18d5528322de236af3a7f64ccb3df08e8320142894144a5c716 - md5: 8c67ff0c68aea28be3efec6f8d799a19 + build: h4e1184b_5 + build_number: 5 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.3.0-h4e1184b_5.conda + sha256: 62ca84da83585e7814a40240a1e750b1563b2680b032a471464eccc001c3309b + md5: 3f4c1197462a6df2be6dc8241828fe93 depends: - - __osx >=11.0 - - aws-c-common >=0.10.5,<0.10.6.0a0 + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 18219 - timestamp: 1733391126008 + size: 19086 + timestamp: 1733991637424 - kind: conda name: aws-c-compression version: 0.3.0 - build: h9cc6398_4 - build_number: 4 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.3.0-h9cc6398_4.conda - sha256: 045a3231b0aacb544ea9e348c22f863d96631f14a3a2b59413a72f61259a32a4 - md5: 076717670d5406e90070120314ff9b4f + build: hc8a0bd2_5 + build_number: 5 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-compression-0.3.0-hc8a0bd2_5.conda + sha256: 47b2813f652ce7e64ac442f771b2a5f7d4af4ad0d07ff51f6075ea80ed2e3f09 + md5: a8b6c17732d14ed49d0e9b59c43186bc depends: - - __glibc >=2.17,<3.0.a0 - - aws-c-common >=0.10.5,<0.10.6.0a0 - - libgcc >=13 + - __osx >=11.0 + - aws-c-common >=0.10.6,<0.10.7.0a0 license: Apache-2.0 license_family: Apache - size: 19029 - timestamp: 1733390975089 + size: 18068 + timestamp: 1733991869211 - kind: conda name: aws-c-event-stream version: 0.5.0 - build: h9fa824c_10 - build_number: 10 + build: h54f970a_11 + build_number: 11 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.0-h9fa824c_10.conda - sha256: 12f2ccc71bb993934cc489af359cb7399f671c3111f64fe2be9c8231819e11bd - md5: 9f6a7984f9ce3c6149fa36865060928a + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.0-h54f970a_11.conda + sha256: f0667935f4e0d4c25e0e51da035640310b5ceeb8f723156734439bde8b848d7d + md5: ba41238f8e653998d7d2f42e3a8db054 depends: - __osx >=11.0 - - aws-c-common >=0.10.5,<0.10.6.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - libcxx >=18 license: Apache-2.0 license_family: Apache - size: 47460 - timestamp: 1733696263921 + size: 47078 + timestamp: 1734024749727 - kind: conda name: aws-c-event-stream version: 0.5.0 - build: ha9733bd_10 - build_number: 10 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-event-stream-0.5.0-ha9733bd_10.conda - sha256: e8189bdd1af1a3f68a460bcb3c852193cfdf7afa2f1a82d687d30055242b20e2 - md5: cb0877c6fcc93454f221ba4eba798cfc + build: h7959bf6_11 + build_number: 11 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.0-h7959bf6_11.conda + sha256: 10d7240c7db0c941fb1a59c4f8ea6689a434b03309ee7b766fa15a809c553c02 + md5: 9b3fb60fe57925a92f399bc3fc42eccf depends: - - aws-c-common >=0.10.5,<0.10.6.0a0 + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 55066 - timestamp: 1733696212604 + size: 54003 + timestamp: 1734024480949 - kind: conda name: aws-c-event-stream version: 0.5.0 - build: hf811eff_10 - build_number: 10 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.0-hf811eff_10.conda - sha256: 3fbc86e70b543f26cc485f98714b7f789c4ece05128046458681893f43b7f5f1 - md5: 5046c78dd139a333b6acd7376a10e0a7 + build: hcbd8f92_11 + build_number: 11 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-event-stream-0.5.0-hcbd8f92_11.conda + sha256: 79aa363c71c891a27496c0498f8d498b2ddc87b3ccb3b6c9da5b50b05936ebb8 + md5: e0772c59af4243a9b2565baa5d79e5b6 depends: - - __glibc >=2.17,<3.0.a0 - - aws-c-common >=0.10.5,<0.10.6.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 53973 - timestamp: 1733696170256 + size: 55207 + timestamp: 1734024546663 - kind: conda name: aws-c-http version: 0.9.2 - build: h53134c8_3 - build_number: 3 + build: h3df160d_4 + build_number: 4 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.2-h53134c8_3.conda - sha256: a4d217f89ad0e9326da57b2d9bd4cd5cb0a95423d092be7ed81e88fb075d4dbe - md5: 2ffd03180381a92332b673cefc602234 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.2-h3df160d_4.conda + sha256: 3a1d2d332945306be9d49e569b95e4cc172d825f10e88715513a172f28ebb59e + md5: 28f00aa7fd9556c4c461328cf146c20b depends: - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.5,<0.10.6.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-compression >=0.3.0,<0.3.1.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 189812 - timestamp: 1733683248290 + size: 190586 + timestamp: 1734008442362 - kind: conda name: aws-c-http version: 0.9.2 - build: hc68443d_3 - build_number: 3 + build: h96aa502_4 + build_number: 4 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.2-hc68443d_3.conda - sha256: 71be93cd1d8dfa5858939ba53431abaee859fbc98bdf9f5033bfa41af76b140a - md5: 6353604cb9803e63fce359388201514e + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.2-h96aa502_4.conda + sha256: 22e4737c8a885995b7c1ae1d79c1f6e78d489e16ec079615980fdde067aeaf76 + md5: 495c93a4f08b17deb3c04894512330e6 depends: - __osx >=11.0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.5,<0.10.6.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-compression >=0.3.0,<0.3.1.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 license: Apache-2.0 license_family: Apache - size: 153237 - timestamp: 1733683327609 + size: 152983 + timestamp: 1734008451473 - kind: conda name: aws-c-http version: 0.9.2 - build: hce7dc5d_3 - build_number: 3 + build: hefd7a92_4 + build_number: 4 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.2-hce7dc5d_3.conda - sha256: 7e864b6d4255c4edbd1b2c0f519849017d2a48e54b282748eaa8f9f0fc98a6f4 - md5: c0f54e8975ad42d2864f4b1918356b3b + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.2-hefd7a92_4.conda + sha256: 4a330206bd51148f6c13ca0b7a4db40f29a46f090642ebacdeb88b8a4abd7f99 + md5: 5ce4df662d32d3123ea8da15571b6f51 depends: - __glibc >=2.17,<3.0.a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.5,<0.10.6.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-compression >=0.3.0,<0.3.1.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 197506 - timestamp: 1733683203582 + size: 197731 + timestamp: 1734008380764 - kind: conda name: aws-c-io version: 0.15.3 - build: h66499f2_3 - build_number: 3 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-h66499f2_3.conda - sha256: 86ff175fa5dced16cf41bcc5c353de080314fcb81f4aed326f29b9f22add9aad - md5: e64159c5b106a0365544cfe9d4ef79ec + build: h92bf595_4 + build_number: 4 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-h92bf595_4.conda + sha256: ffa2fc1ddb01f4b8ac038ab70a5533306119754ba438b23399f2a82a38cf27bf + md5: 539df02c00c506c78aebdf6c0fc75743 depends: - - __osx >=11.0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.5,<0.10.6.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + - s2n >=1.5.9,<1.5.10.0a0 license: Apache-2.0 license_family: Apache - size: 136845 - timestamp: 1733588465582 + size: 161836 + timestamp: 1733997573790 - kind: conda name: aws-c-io version: 0.15.3 - build: h8aa8d47_3 - build_number: 3 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-h8aa8d47_3.conda - sha256: cb08b2e9258637e810ac283600b7de2d7a68f55a61e67226e9cce2537f36a06b - md5: 8ece20a51dafae96444e90c7ddaac41a + build: haba67d1_4 + build_number: 4 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-haba67d1_4.conda + sha256: 2d0859b57439cd98e854577aa3e07eb171b590098d51a8c908bab5ec497a3d38 + md5: 74eace4fab8675263a848075e991d380 depends: + - __osx >=11.0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.5,<0.10.6.0a0 - - libgcc >=13 - - s2n >=1.5.9,<1.5.10.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 license: Apache-2.0 license_family: Apache - size: 161513 - timestamp: 1733588480960 + size: 136213 + timestamp: 1733997647724 - kind: conda name: aws-c-io version: 0.15.3 - build: hfd54f12_3 - build_number: 3 + build: hbf5b6a4_4 + build_number: 4 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-hfd54f12_3.conda - sha256: 6d0bd78d5c7d3ec586691d54c8aebc79d089358ff9e793f0cac857a1f977a1a0 - md5: c0b9f79cd2f5797b913415511bfa2cd6 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-hbf5b6a4_4.conda + sha256: 3195fe431d3c43d6ecf749796d3acb093645c9d0de9998616641dada4b5fa2a6 + md5: ad3a6713063c18b9232c48e89ada03ac depends: - __glibc >=2.17,<3.0.a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.5,<0.10.6.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 - libgcc >=13 - s2n >=1.5.9,<1.5.10.0a0 license: Apache-2.0 license_family: Apache - size: 158115 - timestamp: 1733588386529 + size: 157886 + timestamp: 1733997507332 - kind: conda name: aws-c-mqtt version: 0.11.0 - build: h2f8d747_11 - build_number: 11 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h2f8d747_11.conda - sha256: b66de0de359bfaec5084bdc78fda6dfbd8cf8e71c68a76dcd7b74e8a00ec6052 - md5: f4ccd7c1e73c662fd9a795147ca8ca9f + build: h11f4f37_12 + build_number: 12 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h11f4f37_12.conda + sha256: 512d3969426152d9d5fd886e27b13706122dc3fa90eb08c37b0d51a33d7bb14a + md5: 96c3e0221fa2da97619ee82faa341a73 depends: - - aws-c-common >=0.10.5,<0.10.6.0a0 + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 168898 - timestamp: 1733739548597 + size: 194672 + timestamp: 1734025626798 - kind: conda name: aws-c-mqtt version: 0.11.0 - build: ha3c2ba9_11 - build_number: 11 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-ha3c2ba9_11.conda - sha256: 187787bb41e7b616c9317c12c32a5027aae784d1f9335f9d6d34a3fa7ebcb1ec - md5: 93c5070d6f9b4cb2ed9de52ce247cebb + build: h24f418c_12 + build_number: 12 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h24f418c_12.conda + sha256: 96575ea1dd2a9ea94763882e40a66dcbff9c41f702bf37c9514c4c719b3c11dd + md5: c072045a6206f88015d02fcba1705ea1 depends: - - __glibc >=2.17,<3.0.a0 - - aws-c-common >=0.10.5,<0.10.6.0a0 + - __osx >=11.0 + - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 193829 - timestamp: 1733740033267 + size: 134371 + timestamp: 1734025379525 - kind: conda name: aws-c-mqtt version: 0.11.0 - build: hd073cef_11 - build_number: 11 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-hd073cef_11.conda - sha256: d2ee2cdc651250a38f67b84ec65de3ba5493c760821d22c01edb8defd6393dc9 - md5: 0c1deb6e00f80b4aedcb2c4fcfea6407 + build: h5f50e26_12 + build_number: 12 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h5f50e26_12.conda + sha256: ffeb9100cc8fd4093e1a6fdfd938bc4a396dd77480b7fb17aa42855a4d5e2c70 + md5: 031ca33115d4b1eeb43f435d6215778c depends: - - __osx >=11.0 - - aws-c-common >=0.10.5,<0.10.6.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 + - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 134556 - timestamp: 1733739661152 + size: 169516 + timestamp: 1734025167885 - kind: conda name: aws-c-s3 - version: 0.7.5 - build: h55e9418_4 - build_number: 4 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.5-h55e9418_4.conda - sha256: 04d7fd3574fa76c184f04630125a760afa4ae5d4109eec36f22fe127cc85e164 - md5: faec629f0eb306cfe17ed1615249e188 + version: 0.7.7 + build: h1be5864_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.7-h1be5864_0.conda + sha256: 22966164d63808689fffd35945f57756c95337327e28099b5d77b29fc6a56ecc + md5: a37bba7acb62dd70492ee01eacca3b8f depends: - - __glibc >=2.17,<3.0.a0 + - __osx >=11.0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.5,<0.10.6.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - - libgcc >=13 - - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 113811 - timestamp: 1733717653326 + size: 97598 + timestamp: 1734146239038 - kind: conda name: aws-c-s3 - version: 0.7.5 - build: h757e810_4 - build_number: 4 + version: 0.7.7 + build: h2080895_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.5-h757e810_4.conda - sha256: 3da5e1b88d68c5cb2eb1dd898a7c6192be9e1df0bd2733d39d6c0ffe9fc546a2 - md5: 96a657e5856e9e92755170630067f63c + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.7-h2080895_0.conda + sha256: 20bc2dd60e6518d9b8215c2b652ab5c52ee8a997d3b9a5f69e2dabd28cbf26b2 + md5: ae223efa63fbb4262a2d85c3ab3bc4f5 depends: - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.5,<0.10.6.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 @@ -1596,273 +1592,274 @@ packages: - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 117478 - timestamp: 1733717680655 + size: 117641 + timestamp: 1734146239779 - kind: conda name: aws-c-s3 - version: 0.7.5 - build: hb201fd0_4 - build_number: 4 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.5-hb201fd0_4.conda - sha256: c25c62173770b681083962b497a927f306e7f3d05b459dd59e4c12eaf49e9f0b - md5: 83b9775bbe5419cf4916e646e870b87a + version: 0.7.7 + build: hf454442_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.7-hf454442_0.conda + sha256: c2f205a7bf64c5f40eea373b3a0a7c363c9aa9246a13dd7f3d9c6a4434c4fe2d + md5: 947c82025693bebd557f782bb5d6b469 depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.5,<0.10.6.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 + - libgcc >=13 + - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 97441 - timestamp: 1733717822438 + size: 114156 + timestamp: 1734146123386 - kind: conda name: aws-c-sdkutils version: 0.2.1 - build: h10558d5_3 - build_number: 3 + build: h0f0193d_4 + build_number: 4 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.1-h10558d5_3.conda - sha256: 0f6a15d711bc4d6b2d2b8451ad46bf78af6876235ad56bf142644a4ce2240f52 - md5: 1ba505fc4243ad75507efa8976e1790f + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.1-h0f0193d_4.conda + sha256: ede8e782467c87ac80ceb9c9af9e917d121b7d8b8c698186d18e3cecd36f2210 + md5: 53e798d720dd78b78847a7b2fdb05fc9 depends: - - aws-c-common >=0.10.5,<0.10.6.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 58123 - timestamp: 1733398238726 + size: 58621 + timestamp: 1733994421495 - kind: conda name: aws-c-sdkutils version: 0.2.1 - build: h4d88cd7_3 - build_number: 3 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.1-h4d88cd7_3.conda - sha256: a94ecde4e61de8effd9c93ba3527eb010773b5422d2d079ffdcd796ec77fcd4e - md5: 5ec333d73530fbfc2db670eeb6911bff + build: h4e1184b_4 + build_number: 4 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.1-h4e1184b_4.conda + sha256: df586f42210af1134b1c88ff4c278c3cb6d6c807c84eac48860062464b28554d + md5: a5126a90e74ac739b00564a4c7ddcc36 depends: - - __osx >=11.0 - - aws-c-common >=0.10.5,<0.10.6.0a0 + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 49739 - timestamp: 1733398400904 + size: 56094 + timestamp: 1733994449690 - kind: conda name: aws-c-sdkutils version: 0.2.1 - build: h9cc6398_3 - build_number: 3 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.1-h9cc6398_3.conda - sha256: 917f679da38f162e191c5d6817b35fbf2ae0584b1d335bc229fd01e6077108ee - md5: 10bdb7fc3763760dcea1cd908ece6b2b + build: hc8a0bd2_4 + build_number: 4 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.1-hc8a0bd2_4.conda + sha256: de98343ce42d2e569b3380292d20f47bf39bda08aadabcbb8e650d3f38fd742f + md5: 22f72f8cd7ead211304ac17d337d96e0 depends: - - __glibc >=2.17,<3.0.a0 - - aws-c-common >=0.10.5,<0.10.6.0a0 - - libgcc >=13 + - __osx >=11.0 + - aws-c-common >=0.10.6,<0.10.7.0a0 license: Apache-2.0 license_family: Apache - size: 55864 - timestamp: 1733398187914 + size: 49664 + timestamp: 1733994553014 - kind: conda name: aws-checksums version: 0.2.2 - build: h10558d5_3 - build_number: 3 + build: h0f0193d_4 + build_number: 4 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h10558d5_3.conda - sha256: 108860ae5d61a4dc0b0d91282d0171ba7fd69686c11b4bcbdcd3f8b8efc98adb - md5: 1ded47669f79301e4a3d1d3d469494c0 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h0f0193d_4.conda + sha256: 9f1e3635a587bcf92b61d88c7af7d24cd89c147c6d0ae58afbde08e65bcf48da + md5: 3bd35b0adab3d743f09e0252cc441d6b depends: - - aws-c-common >=0.10.5,<0.10.6.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 72203 - timestamp: 1733398350602 + size: 72154 + timestamp: 1733994384415 - kind: conda name: aws-checksums version: 0.2.2 - build: h4d88cd7_3 - build_number: 3 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-h4d88cd7_3.conda - sha256: 7d0d71e399fa6b0a1e686470d4a982396a9d0d29be29bf07591d83739cc29a0a - md5: 45409e27b510588196b9f116f86c2d51 + build: h4e1184b_4 + build_number: 4 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-h4e1184b_4.conda + sha256: 1ed9a332d06ad595694907fad2d6d801082916c27cd5076096fda4061e6d24a8 + md5: 74e8c3e4df4ceae34aa2959df4b28101 depends: - - __osx >=11.0 - - aws-c-common >=0.10.5,<0.10.6.0a0 + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 70160 - timestamp: 1733398484776 + size: 72762 + timestamp: 1733994347547 - kind: conda name: aws-checksums version: 0.2.2 - build: h9cc6398_3 - build_number: 3 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-h9cc6398_3.conda - sha256: a3aea2fc8ccf85ae64c5ce9c4e507be37173b94909191480e5151c482a220e40 - md5: d6dd8b87b95195d8d26893611d94ba3b + build: hc8a0bd2_4 + build_number: 4 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-hc8a0bd2_4.conda + sha256: 215086d95e8ff1d3fcb0197ada116cc9d7db1fdae7573f5e810d20fa9215b47c + md5: e70e88a357a3749b67679c0788c5b08a depends: - - __glibc >=2.17,<3.0.a0 - - aws-c-common >=0.10.5,<0.10.6.0a0 - - libgcc >=13 + - __osx >=11.0 + - aws-c-common >=0.10.6,<0.10.7.0a0 license: Apache-2.0 license_family: Apache - size: 72681 - timestamp: 1733398331530 + size: 70186 + timestamp: 1733994496998 - kind: conda name: aws-crt-cpp version: 0.29.7 - build: hb9a023b_5 - build_number: 5 + build: h19a973c_7 + build_number: 7 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.7-hb9a023b_5.conda - sha256: d1d89918a1f6e08f16275d82218b2f73012cee2def3ad8f1a8d28af7497e66cc - md5: 70a976e616535dbab5e1f354734a238a + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.7-h19a973c_7.conda + sha256: 8269e6746eb3a5d15b732a3983888bf98dfc1f6594e95250fc8d16b43cfd5ff9 + md5: 95714136bef3e917bd5a2942d4682b20 depends: - __osx >=11.0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.5,<0.10.6.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - - aws-c-s3 >=0.7.5,<0.7.6.0a0 + - aws-c-s3 >=0.7.7,<0.7.8.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - libcxx >=18 license: Apache-2.0 license_family: Apache - size: 236182 - timestamp: 1733767086227 + size: 236249 + timestamp: 1734178020924 - kind: conda name: aws-crt-cpp version: 0.29.7 - build: hc8d91e0_5 - build_number: 5 + build: h8a4e35f_7 + build_number: 7 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.7-hc8d91e0_5.conda - sha256: c3be4f3f77ac7ba716228df1099eb68a5e7a4cbbe386a4732a28f33d6b780cc4 - md5: 8f14e3d651a08c9b2f85c6e5d359e250 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.7-h8a4e35f_7.conda + sha256: 5ba9188e0cb4e3faff9bc96774febb040aa3b802aedba29d847e00e7b5eab84e + md5: d77a9e3d7ce15399903e92825fd651b5 depends: - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.5,<0.10.6.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - - aws-c-s3 >=0.7.5,<0.7.6.0a0 + - aws-c-s3 >=0.7.7,<0.7.8.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 284313 - timestamp: 1733766768643 + size: 283154 + timestamp: 1734177845248 - kind: conda name: aws-crt-cpp version: 0.29.7 - build: hed26007_5 - build_number: 5 + build: hd92328a_7 + build_number: 7 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.7-hed26007_5.conda - sha256: f996cb94f3ef212792f288a0f7c5201ac7f00bb43502702b76e408e50d80132f - md5: 7c64e4ac7a484fc525a4ce7b9baf709a + url: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.7-hd92328a_7.conda + sha256: 094cd81f1e5ba713e9e7a272ee52b5dde3ccc4842ea90f19c0354a00bbdac3d9 + md5: 02b95564257d5c3db9c06beccf711f95 depends: - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.5,<0.10.6.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - - aws-c-s3 >=0.7.5,<0.7.6.0a0 + - aws-c-s3 >=0.7.7,<0.7.8.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 354783 - timestamp: 1733766766977 + size: 354703 + timestamp: 1734177883319 - kind: conda name: aws-sdk-cpp version: 1.11.458 - build: h2d3f608_3 - build_number: 3 + build: h849ce1a_4 + build_number: 4 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h2d3f608_3.conda - sha256: b335dfee7b04117ddae857564300ed6795718e2305141c7d631dcc434503a261 - md5: 57bdfac803ce58e3a3256752d7e5aa6e + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h849ce1a_4.conda + sha256: 51b9e9df8cbab4a13a1b9d39d6ef5ed162aaa29c09a745810e00bbe92e1045c1 + md5: cda7747f4398be8d1fb37362815917a7 depends: - - aws-c-common >=0.10.5,<0.10.6.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - aws-crt-cpp >=0.29.7,<0.29.8.0a0 - - libcurl >=8.10.1,<9.0a0 + - libcurl >=8.11.1,<9.0a0 - libgcc >=13 - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 2896174 - timestamp: 1733808114676 + size: 2920625 + timestamp: 1734093552712 - kind: conda name: aws-sdk-cpp version: 1.11.458 - build: h39838b8_3 - build_number: 3 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-h39838b8_3.conda - sha256: b5ef3a956937d61b59b9dd4b8c23eeb0bc254c37a97028a50c3ff6c8df399deb - md5: 3a6c8f65692febdf791bece561b371c8 + build: hc430e4a_4 + build_number: 4 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-hc430e4a_4.conda + sha256: 2dc09f6f9c49127b5f96e7535b64a9c521b944d76d8b7d03d48ae80257ac1cea + md5: aeefac461bea1f126653c1285cf5af08 depends: - - __osx >=11.0 - - aws-c-common >=0.10.5,<0.10.6.0a0 + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - aws-crt-cpp >=0.29.7,<0.29.8.0a0 - - libcurl >=8.10.1,<9.0a0 - - libcxx >=18 + - libcurl >=8.11.1,<9.0a0 + - libgcc >=13 + - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 2837854 - timestamp: 1733808787914 + size: 3060561 + timestamp: 1734093737431 - kind: conda name: aws-sdk-cpp version: 1.11.458 - build: h571fd1c_3 - build_number: 3 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-h571fd1c_3.conda - sha256: c2f38374a6f4dd804f76c8a071bc7f7d37dfb43e194eb93a473ff789460c011b - md5: 374cf1add8af327b15b1b1e4873f4955 + build: he0ff2e4_4 + build_number: 4 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-he0ff2e4_4.conda + sha256: 535b970aaa13be45f8cab8205c59f044b17364111c41a227f061775a5c834e18 + md5: 0981ed87098b149bdb7d99a4a3fd0e58 depends: - - __glibc >=2.17,<3.0.a0 - - aws-c-common >=0.10.5,<0.10.6.0a0 + - __osx >=11.0 + - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - aws-crt-cpp >=0.29.7,<0.29.8.0a0 - - libcurl >=8.10.1,<9.0a0 - - libgcc >=13 - - libstdcxx >=13 + - libcurl >=8.11.1,<9.0a0 + - libcxx >=18 - libzlib >=1.3.1,<2.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 3062994 - timestamp: 1733808211748 + size: 2826534 + timestamp: 1734094018287 - kind: conda name: azure-core-cpp version: 1.14.0 @@ -7684,76 +7681,76 @@ packages: timestamp: 1733219945697 - kind: conda name: max - version: 25.1.0.dev2024121305 + version: 25.1.0.dev2024121405 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024121305-release.conda - sha256: 0934ef5364dceceb5e0c786f92bf537a2414e898a00f481b8c8472db5e75f288 - md5: 7e5a852508eeef653e57b0e2d997d6f0 - depends: - - max-core ==25.1.0.dev2024121305 release - - max-python >=25.1.0.dev2024121305,<26.0a0 - - mojo-jupyter ==25.1.0.dev2024121305 release - - mblack ==25.1.0.dev2024121305 release + url: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024121405-release.conda + sha256: 6bacaa1d4f27d255a4c3907c28929865eeef5d45d64d61c3991b526aee14766d + md5: 1aec535b4731af73dd1b43472e7b6fa0 + depends: + - max-core ==25.1.0.dev2024121405 release + - max-python >=25.1.0.dev2024121405,<26.0a0 + - mojo-jupyter ==25.1.0.dev2024121405 release + - mblack ==25.1.0.dev2024121405 release license: LicenseRef-Modular-Proprietary - size: 9911 - timestamp: 1734067047897 + size: 9921 + timestamp: 1734153430066 - kind: conda name: max-core - version: 25.1.0.dev2024121305 + version: 25.1.0.dev2024121405 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024121305-release.conda - sha256: 7a345ab21e1bc5db74684e165dbe92172631b15637e5235e8b55b75aa717b36e - md5: a092cd9f73e38d8c5a8e7421a65d6ec2 + url: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024121405-release.conda + sha256: 14f953430105c8f2bb8f3bdf1e3fb7e9acbb20613ad47c9ac1e88462e0cc804d + md5: d88d69b1696ed9d5795c8d346bbd4311 depends: - - mblack ==25.1.0.dev2024121305 release + - mblack ==25.1.0.dev2024121405 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 247758730 - timestamp: 1734067130820 + size: 245597032 + timestamp: 1734153445516 - kind: conda name: max-core - version: 25.1.0.dev2024121305 + version: 25.1.0.dev2024121405 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024121305-release.conda - sha256: ad1ba0f0de5a52214dd1a6d9650b82db3bb87ffbdac4426db051c0d23264ee6a - md5: aae29a11aa59123729f374c236e9ae15 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024121405-release.conda + sha256: e3936f8021fc72f7f2673e2653e7bbd3d325fb44818b868bb49c24e5c1766eaf + md5: ea674f5d9232d89046ad99090cc195a7 depends: - - mblack ==25.1.0.dev2024121305 release + - mblack ==25.1.0.dev2024121405 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 251654128 - timestamp: 1734067047896 + size: 249408423 + timestamp: 1734153430064 - kind: conda name: max-core - version: 25.1.0.dev2024121305 + version: 25.1.0.dev2024121405 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024121305-release.conda - sha256: 1d4409c69d60650860c24c7833e7b64f5cca00a2fa7f3c8bc3fe69f27d0bb004 - md5: 9cac1246d0cda9ddf123b51868be3da4 + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024121405-release.conda + sha256: b6bb97d20f0f7371a647778d18fe78f839e37eef423542ae3f4e75b018ffd8db + md5: 0e2d8c487ef68866164af9dff49f5119 depends: - - mblack ==25.1.0.dev2024121305 release + - mblack ==25.1.0.dev2024121405 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 212260365 - timestamp: 1734067231658 + size: 214323771 + timestamp: 1734153633668 - kind: conda name: max-python - version: 25.1.0.dev2024121305 + version: 25.1.0.dev2024121405 build: 3.12release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024121305-3.12release.conda - sha256: 41468e52a6cfaab53f4f1f9227d37e94d97bf0037e3959b5738b17c841aa4853 - md5: 3d0543451b60f19e627a7a02e417dec7 + url: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024121405-3.12release.conda + sha256: 7ebdc67f58946084f7f4a657f0661899e61707b055f2046d9c18033f21f97008 + md5: 5a8cbae9c5257545459bfe7a262b62a6 depends: - - max-core ==25.1.0.dev2024121305 release + - max-core ==25.1.0.dev2024121405 release - python 3.12.* - fastapi - httpx @@ -7776,18 +7773,18 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 123962431 - timestamp: 1734067130830 + size: 122834581 + timestamp: 1734153445526 - kind: conda name: max-python - version: 25.1.0.dev2024121305 + version: 25.1.0.dev2024121405 build: 3.12release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024121305-3.12release.conda - sha256: 7f183e065b118867efe93b52a6e91afccb609bd53b78efc4566671b9a827bf1a - md5: 6a0e9f6376835e0267a6c4e74a126dc6 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024121405-3.12release.conda + sha256: b74a5c8945a97210778cda3cd9fe98f7404d2c9ff0b1a03738c77af6429b1523 + md5: 099dc5d1f85e4f883e72caef6f0c6e52 depends: - - max-core ==25.1.0.dev2024121305 release + - max-core ==25.1.0.dev2024121405 release - python 3.12.* - fastapi - httpx @@ -7810,18 +7807,18 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 127728932 - timestamp: 1734067047906 + size: 126606485 + timestamp: 1734153430075 - kind: conda name: max-python - version: 25.1.0.dev2024121305 + version: 25.1.0.dev2024121405 build: 3.12release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024121305-3.12release.conda - sha256: a273ba2302364c8a3163ce7f26dd7b787194c3c3f1bc9ed77e77b2edf483522d - md5: 09d62b97c29133fadc721fd9cb7b0388 + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024121405-3.12release.conda + sha256: 24a7ab99d936e5c28f597413e9e643fe34c46ba55916c1febcbe658e79a2ea9f + md5: 661ce5968d3cc1b11a67dfbf77e986b8 depends: - - max-core ==25.1.0.dev2024121305 release + - max-core ==25.1.0.dev2024121405 release - python 3.12.* - fastapi - httpx @@ -7844,17 +7841,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 112812970 - timestamp: 1734067231662 + size: 113414908 + timestamp: 1734153633671 - kind: conda name: mblack - version: 25.1.0.dev2024121305 + version: 25.1.0.dev2024121405 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121305-release.conda - sha256: abb1e77a5677ba3dff4645ce9d9867da248690f7a64badbd6678afcdb8ba3f35 - md5: 665d00da19a5c6902c00afa7c456a8da + url: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121405-release.conda + sha256: ea23ea9fdb019aa4dc05bcb1d1f526f77ce90a94baa3130d26ce71cad0a3647b + md5: 425b85251efa151234c9db33428ee55c depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -7864,8 +7861,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130799 - timestamp: 1734067047902 + size: 130792 + timestamp: 1734153430070 - kind: conda name: mdurl version: 0.1.2 @@ -7884,21 +7881,21 @@ packages: timestamp: 1733255681319 - kind: conda name: mojo-jupyter - version: 25.1.0.dev2024121305 + version: 25.1.0.dev2024121405 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024121305-release.conda - sha256: 4695f084795165a27b510a6b7c4174141cabad2f84c76c785529b0d6e9cc45ea - md5: 86028b0c146cc15b505e17670db7f139 + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024121405-release.conda + sha256: b232fe63e84736d519137d4c98067c886f8acc1cc38a6620a062f4eb079e751a + md5: b7d7fe85425c5120a665795eb2097aa9 depends: - - max-core ==25.1.0.dev2024121305 release + - max-core ==25.1.0.dev2024121405 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22933 - timestamp: 1734067047904 + size: 22934 + timestamp: 1734153430071 - kind: conda name: mpg123 version: 1.32.9 @@ -9360,22 +9357,20 @@ packages: timestamp: 1732254359451 - kind: conda name: pydantic-settings - version: 2.6.1 - build: pyh3cfb1c2_1 - build_number: 1 + version: 2.7.0 + build: pyh3cfb1c2_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.6.1-pyh3cfb1c2_1.conda - sha256: 8cc37e827f0098d07743f57f968283cefce6c11562d9241aba990acc23aedb56 - md5: deabf8afc8d987f20174ef0d8d9b549e + url: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.7.0-pyh3cfb1c2_0.conda + sha256: dd1ac7c8b6a189c8aa18f6c7df019d8f6df495300a259e3fbebdb542fc955c3b + md5: d9f19a7c4199249fa229891b573b6f9b depends: - pydantic >=2.7.0 - python >=3.9 - python-dotenv >=0.21.0 license: MIT - license_family: MIT - size: 30832 - timestamp: 1733851937909 + size: 31426 + timestamp: 1734127929720 - kind: conda name: pygame version: 2.6.1 diff --git a/examples/magic.lock b/examples/magic.lock index c1ee74e1b5..009cc7c7f1 100644 --- a/examples/magic.lock +++ b/examples/magic.lock @@ -14,19 +14,19 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-h8c8080f_14.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.1-h0f28dba_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.10.5-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.3.0-h9cc6398_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.0-hf811eff_10.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.2-hce7dc5d_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-hfd54f12_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-ha3c2ba9_11.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.5-h55e9418_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.1-h9cc6398_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-h9cc6398_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.7-hed26007_5.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-h571fd1c_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-hb921021_15.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.1-h1a47875_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.10.6-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.3.0-h4e1184b_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.0-h7959bf6_11.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.2-hefd7a92_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-hbf5b6a4_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h11f4f37_12.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.7-hf454442_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.1-h4e1184b_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-h4e1184b_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.7-hd92328a_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-hc430e4a_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.10.0-h113e628_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.13.0-h3cf044e_1.conda @@ -131,12 +131,12 @@ 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-25.1.0.dev2024121305-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024121305-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024121305-3.11release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024121405-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024121405-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024121405-3.11release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121405-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-25.1.0.dev2024121305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024121405-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 @@ -166,7 +166,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.3-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.27.1-py311h9e33e62_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.6.1-pyh3cfb1c2_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.7.0-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyinstrument-5.0.0-py311h9ecbd09_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda @@ -232,19 +232,19 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-hb4dd4bb_14.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.1-h1aca5b9_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-common-0.10.5-h86ecc28_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-compression-0.3.0-h10558d5_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-event-stream-0.5.0-ha9733bd_10.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.2-h53134c8_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-h8aa8d47_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h2f8d747_11.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.5-h757e810_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.1-h10558d5_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h10558d5_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.7-hc8d91e0_5.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h2d3f608_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-h2cb9fb3_15.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.1-h740c5af_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-common-0.10.6-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-compression-0.3.0-h0f0193d_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-event-stream-0.5.0-hcbd8f92_11.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.2-h3df160d_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-h92bf595_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h5f50e26_12.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.7-h2080895_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.1-h0f0193d_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h0f0193d_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.7-h8a4e35f_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h849ce1a_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-core-cpp-1.14.0-h1887c18_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-identity-cpp-1.10.0-h47b0b28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-blobs-cpp-12.13.0-h185ecfd_1.conda @@ -350,12 +350,12 @@ 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-25.1.0.dev2024121305-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024121305-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024121305-3.11release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024121405-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024121405-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024121405-3.11release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121405-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-25.1.0.dev2024121305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024121405-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 @@ -385,7 +385,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.3-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pydantic-core-2.27.1-py311h0ca61a2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.6.1-pyh3cfb1c2_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.7.0-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyinstrument-5.0.0-py311ha879c10_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda @@ -450,19 +450,19 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-h93897a1_14.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.1-h4d88cd7_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.10.5-h5505292_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-compression-0.3.0-h4d88cd7_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.0-h9fa824c_10.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.2-hc68443d_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-h66499f2_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-hd073cef_11.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.5-hb201fd0_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.1-h4d88cd7_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-h4d88cd7_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.7-hb9a023b_5.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-h39838b8_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-h8bc59a9_15.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.1-hc8a0bd2_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.10.6-h5505292_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-compression-0.3.0-hc8a0bd2_5.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.0-h54f970a_11.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.2-h96aa502_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-haba67d1_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h24f418c_12.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.7-h1be5864_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.1-hc8a0bd2_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-hc8a0bd2_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.7-h19a973c_7.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-he0ff2e4_4.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.14.0-hd50102c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.10.0-hc602bab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-blobs-cpp-12.13.0-h7585a09_1.conda @@ -560,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-25.1.0.dev2024121305-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024121305-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024121305-3.11release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024121405-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024121405-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024121405-3.11release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121405-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-25.1.0.dev2024121305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024121405-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 @@ -595,7 +595,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.3-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.27.1-py311h3ff9189_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.6.1-pyh3cfb1c2_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.7.0-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyinstrument-5.0.0-py311hae2e1ce_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda @@ -862,469 +862,465 @@ packages: - kind: conda name: aws-c-auth version: 0.8.0 - build: h8c8080f_14 - build_number: 14 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-h8c8080f_14.conda - sha256: 7a9f7763e3a151ae1008ead51458f9b889b657f388266d53c6f7fa383dbb2481 - md5: a9284141081982473ebf41b92566bbcb + build: h2cb9fb3_15 + build_number: 15 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-h2cb9fb3_15.conda + sha256: 4ce859dc9ff128bf5515604c43f33fb511386022fc9765ca077990f2a3f23df5 + md5: e524686ace966acefb5b8cbc6e8b3daa depends: - - __glibc >=2.17,<3.0.a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.5,<0.10.6.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 107775 - timestamp: 1733709347751 + size: 111854 + timestamp: 1734021745104 - kind: conda name: aws-c-auth version: 0.8.0 - build: h93897a1_14 - build_number: 14 + build: h8bc59a9_15 + build_number: 15 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-h93897a1_14.conda - sha256: 3ec33500c5def035acb9ba406161f5452e39b1b818c67d8a56103d6def47bda6 - md5: 061e221dc5cca62be8fab49a16bfb99d + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-h8bc59a9_15.conda + sha256: 0e41e56b662e76e024182adebcd91d09a4d38a83b35217c84e4967354dfff9a2 + md5: f688b8893c20ad9477a19e7ce614014a depends: - __osx >=11.0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.5,<0.10.6.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 license: Apache-2.0 license_family: Apache - size: 92250 - timestamp: 1733709418870 + size: 92507 + timestamp: 1734021831330 - kind: conda name: aws-c-auth version: 0.8.0 - build: hb4dd4bb_14 - build_number: 14 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-hb4dd4bb_14.conda - sha256: a9622ac836bbe4a24310e0e77a42ef0a17e5fa0703276f8bbbef945deaca337c - md5: a5b86123507e184fb4463e1f8890b398 + build: hb921021_15 + build_number: 15 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-hb921021_15.conda + sha256: 537006ad6d5097c134494166a6a1dc1451d5d050878d7b82cef498bfda40ba8a + md5: c79d50f64cffa5ad51ecc1a81057962f depends: + - __glibc >=2.17,<3.0.a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.5,<0.10.6.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 111975 - timestamp: 1733709317063 + size: 107614 + timestamp: 1734021692519 - kind: conda name: aws-c-cal version: 0.8.1 - build: h0f28dba_2 - build_number: 2 + build: h1a47875_3 + build_number: 3 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.1-h0f28dba_2.conda - sha256: 023fa0d0618b652b0be5eac73d92fd47136351da7d331334c45d5dd1ee760401 - md5: 94faebd978282d2a4a8514141daec756 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.1-h1a47875_3.conda + sha256: 095ac824ea9303eff67e04090ae531d9eb33d2bf8f82eaade39b839c421e16e8 + md5: 55a8561fdbbbd34f50f57d9be12ed084 depends: - __glibc >=2.17,<3.0.a0 - - aws-c-common >=0.10.5,<0.10.6.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 - libgcc >=13 - openssl >=3.3.1,<4.0a0 license: Apache-2.0 license_family: Apache - size: 47694 - timestamp: 1733390870810 + size: 47601 + timestamp: 1733991564405 - kind: conda name: aws-c-cal version: 0.8.1 - build: h1aca5b9_2 - build_number: 2 + build: h740c5af_3 + build_number: 3 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.1-h1aca5b9_2.conda - sha256: df203473e8675fc27ae5cb62bc09e336fe92655df0a0056e73087cb22aed287e - md5: 31d9e82aac5cd3fe399535bcec0f2975 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.1-h740c5af_3.conda + sha256: c5c7961d48ca7320ed3560c036f7aa5244df4b85d9657f70aacc5faba3e1509a + md5: 57ed2c445d7ef01d121b9bcea0522913 depends: - - aws-c-common >=0.10.5,<0.10.6.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 - libgcc >=13 - openssl >=3.3.1,<4.0a0 license: Apache-2.0 license_family: Apache - size: 49822 - timestamp: 1733390907734 + size: 50036 + timestamp: 1733991581303 - kind: conda name: aws-c-cal version: 0.8.1 - build: h4d88cd7_2 - build_number: 2 + build: hc8a0bd2_3 + build_number: 3 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.1-h4d88cd7_2.conda - sha256: 30e6bc4feea78a280553b084a960515e550dabfae0e63ba511be773c3a9f6b5a - md5: 3cb07f08e5aabe657b0b5fb13945e79a + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.1-hc8a0bd2_3.conda + sha256: 1f44be36e1daa17b4b081debb8aee492d13571084f38b503ad13e869fef24fe4 + md5: 8b0ce61384e5a33d2b301a64f3d22ac5 depends: - __osx >=11.0 - - aws-c-common >=0.10.5,<0.10.6.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 - openssl >=3.3.1,<4.0a0 license: Apache-2.0 license_family: Apache - size: 39878 - timestamp: 1733390962202 + size: 39925 + timestamp: 1733991649383 - kind: conda name: aws-c-common - version: 0.10.5 + version: 0.10.6 build: h5505292_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.10.5-h5505292_0.conda - sha256: 54554886028d25b5c752369e7ae8321852e875fdc780ff9357b72a31f3e5d5b4 - md5: 49f049f8b10cf8c2c5a26660854fd21a + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.10.6-h5505292_0.conda + sha256: 3bde135c8e74987c0f79ecd4fa17ec9cff0d658b3090168727ca1af3815ae57a + md5: 145e5b4c9702ed279d7d68aaf096f77d depends: - __osx >=11.0 license: Apache-2.0 license_family: Apache - size: 222184 - timestamp: 1733324871298 + size: 221863 + timestamp: 1733975576886 - kind: conda name: aws-c-common - version: 0.10.5 + version: 0.10.6 build: h86ecc28_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-common-0.10.5-h86ecc28_0.conda - sha256: bdea66b7be9acd463bbfd583d2f80ff676d376c60480a2d3f9f7de7b4bf6d2b2 - md5: fcd238b0cc98927742a96aa411123e32 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-common-0.10.6-h86ecc28_0.conda + sha256: 57288ec5df35781bea8fc6a8c9099cad6695b747784fc1b8862a0f9e5b3bf5ab + md5: fef806a0f6de853670c746bbece01966 depends: - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 258257 - timestamp: 1733324684433 + size: 259031 + timestamp: 1733975520465 - kind: conda name: aws-c-common - version: 0.10.5 + version: 0.10.6 build: hb9d3cd8_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.10.5-hb9d3cd8_0.conda - sha256: 93e83e2a31f41bac2aa5eae8fbc7f1d31449a04a3df8a64ebcac2433f52a86ad - md5: d8288fbad9d809b9ca139b8beb6553ef + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.10.6-hb9d3cd8_0.conda + sha256: 496e92f2150fdc351eacf6e236015deedb3d0d3114f8e5954341cbf9f3dda257 + md5: d7d4680337a14001b0e043e96529409b depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 237114 - timestamp: 1733324723318 + size: 236574 + timestamp: 1733975453350 - kind: conda name: aws-c-compression version: 0.3.0 - build: h10558d5_4 - build_number: 4 + build: h0f0193d_5 + build_number: 5 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-compression-0.3.0-h10558d5_4.conda - sha256: 45ea74461b6a5453325db2201ba9f728f20e89ead17730e93ddd7411a833c058 - md5: 8ceaf4396978c33bc695129425f12734 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-compression-0.3.0-h0f0193d_5.conda + sha256: 3f05d19f68ef800f33d44ea2a4211003124076516c8469abc7d432236344df53 + md5: 3a1421d12435df5b4c412cc4c8fac64d depends: - - aws-c-common >=0.10.5,<0.10.6.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 19742 - timestamp: 1733391062884 + size: 19740 + timestamp: 1733991625201 - kind: conda name: aws-c-compression version: 0.3.0 - build: h4d88cd7_4 - build_number: 4 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-compression-0.3.0-h4d88cd7_4.conda - sha256: b6900e82b553d18d5528322de236af3a7f64ccb3df08e8320142894144a5c716 - md5: 8c67ff0c68aea28be3efec6f8d799a19 + build: h4e1184b_5 + build_number: 5 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.3.0-h4e1184b_5.conda + sha256: 62ca84da83585e7814a40240a1e750b1563b2680b032a471464eccc001c3309b + md5: 3f4c1197462a6df2be6dc8241828fe93 depends: - - __osx >=11.0 - - aws-c-common >=0.10.5,<0.10.6.0a0 + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 18219 - timestamp: 1733391126008 + size: 19086 + timestamp: 1733991637424 - kind: conda name: aws-c-compression version: 0.3.0 - build: h9cc6398_4 - build_number: 4 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.3.0-h9cc6398_4.conda - sha256: 045a3231b0aacb544ea9e348c22f863d96631f14a3a2b59413a72f61259a32a4 - md5: 076717670d5406e90070120314ff9b4f + build: hc8a0bd2_5 + build_number: 5 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-compression-0.3.0-hc8a0bd2_5.conda + sha256: 47b2813f652ce7e64ac442f771b2a5f7d4af4ad0d07ff51f6075ea80ed2e3f09 + md5: a8b6c17732d14ed49d0e9b59c43186bc depends: - - __glibc >=2.17,<3.0.a0 - - aws-c-common >=0.10.5,<0.10.6.0a0 - - libgcc >=13 + - __osx >=11.0 + - aws-c-common >=0.10.6,<0.10.7.0a0 license: Apache-2.0 license_family: Apache - size: 19029 - timestamp: 1733390975089 + size: 18068 + timestamp: 1733991869211 - kind: conda name: aws-c-event-stream version: 0.5.0 - build: h9fa824c_10 - build_number: 10 + build: h54f970a_11 + build_number: 11 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.0-h9fa824c_10.conda - sha256: 12f2ccc71bb993934cc489af359cb7399f671c3111f64fe2be9c8231819e11bd - md5: 9f6a7984f9ce3c6149fa36865060928a + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.0-h54f970a_11.conda + sha256: f0667935f4e0d4c25e0e51da035640310b5ceeb8f723156734439bde8b848d7d + md5: ba41238f8e653998d7d2f42e3a8db054 depends: - __osx >=11.0 - - aws-c-common >=0.10.5,<0.10.6.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - libcxx >=18 license: Apache-2.0 license_family: Apache - size: 47460 - timestamp: 1733696263921 + size: 47078 + timestamp: 1734024749727 - kind: conda name: aws-c-event-stream version: 0.5.0 - build: ha9733bd_10 - build_number: 10 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-event-stream-0.5.0-ha9733bd_10.conda - sha256: e8189bdd1af1a3f68a460bcb3c852193cfdf7afa2f1a82d687d30055242b20e2 - md5: cb0877c6fcc93454f221ba4eba798cfc + build: h7959bf6_11 + build_number: 11 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.0-h7959bf6_11.conda + sha256: 10d7240c7db0c941fb1a59c4f8ea6689a434b03309ee7b766fa15a809c553c02 + md5: 9b3fb60fe57925a92f399bc3fc42eccf depends: - - aws-c-common >=0.10.5,<0.10.6.0a0 + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 55066 - timestamp: 1733696212604 + size: 54003 + timestamp: 1734024480949 - kind: conda name: aws-c-event-stream version: 0.5.0 - build: hf811eff_10 - build_number: 10 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.0-hf811eff_10.conda - sha256: 3fbc86e70b543f26cc485f98714b7f789c4ece05128046458681893f43b7f5f1 - md5: 5046c78dd139a333b6acd7376a10e0a7 + build: hcbd8f92_11 + build_number: 11 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-event-stream-0.5.0-hcbd8f92_11.conda + sha256: 79aa363c71c891a27496c0498f8d498b2ddc87b3ccb3b6c9da5b50b05936ebb8 + md5: e0772c59af4243a9b2565baa5d79e5b6 depends: - - __glibc >=2.17,<3.0.a0 - - aws-c-common >=0.10.5,<0.10.6.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 53973 - timestamp: 1733696170256 + size: 55207 + timestamp: 1734024546663 - kind: conda name: aws-c-http version: 0.9.2 - build: h53134c8_3 - build_number: 3 + build: h3df160d_4 + build_number: 4 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.2-h53134c8_3.conda - sha256: a4d217f89ad0e9326da57b2d9bd4cd5cb0a95423d092be7ed81e88fb075d4dbe - md5: 2ffd03180381a92332b673cefc602234 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.2-h3df160d_4.conda + sha256: 3a1d2d332945306be9d49e569b95e4cc172d825f10e88715513a172f28ebb59e + md5: 28f00aa7fd9556c4c461328cf146c20b depends: - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.5,<0.10.6.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-compression >=0.3.0,<0.3.1.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 189812 - timestamp: 1733683248290 + size: 190586 + timestamp: 1734008442362 - kind: conda name: aws-c-http version: 0.9.2 - build: hc68443d_3 - build_number: 3 + build: h96aa502_4 + build_number: 4 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.2-hc68443d_3.conda - sha256: 71be93cd1d8dfa5858939ba53431abaee859fbc98bdf9f5033bfa41af76b140a - md5: 6353604cb9803e63fce359388201514e + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.2-h96aa502_4.conda + sha256: 22e4737c8a885995b7c1ae1d79c1f6e78d489e16ec079615980fdde067aeaf76 + md5: 495c93a4f08b17deb3c04894512330e6 depends: - __osx >=11.0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.5,<0.10.6.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-compression >=0.3.0,<0.3.1.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 license: Apache-2.0 license_family: Apache - size: 153237 - timestamp: 1733683327609 + size: 152983 + timestamp: 1734008451473 - kind: conda name: aws-c-http version: 0.9.2 - build: hce7dc5d_3 - build_number: 3 + build: hefd7a92_4 + build_number: 4 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.2-hce7dc5d_3.conda - sha256: 7e864b6d4255c4edbd1b2c0f519849017d2a48e54b282748eaa8f9f0fc98a6f4 - md5: c0f54e8975ad42d2864f4b1918356b3b + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.2-hefd7a92_4.conda + sha256: 4a330206bd51148f6c13ca0b7a4db40f29a46f090642ebacdeb88b8a4abd7f99 + md5: 5ce4df662d32d3123ea8da15571b6f51 depends: - __glibc >=2.17,<3.0.a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.5,<0.10.6.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-compression >=0.3.0,<0.3.1.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 197506 - timestamp: 1733683203582 + size: 197731 + timestamp: 1734008380764 - kind: conda name: aws-c-io version: 0.15.3 - build: h66499f2_3 - build_number: 3 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-h66499f2_3.conda - sha256: 86ff175fa5dced16cf41bcc5c353de080314fcb81f4aed326f29b9f22add9aad - md5: e64159c5b106a0365544cfe9d4ef79ec + build: h92bf595_4 + build_number: 4 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-h92bf595_4.conda + sha256: ffa2fc1ddb01f4b8ac038ab70a5533306119754ba438b23399f2a82a38cf27bf + md5: 539df02c00c506c78aebdf6c0fc75743 depends: - - __osx >=11.0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.5,<0.10.6.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + - s2n >=1.5.9,<1.5.10.0a0 license: Apache-2.0 license_family: Apache - size: 136845 - timestamp: 1733588465582 + size: 161836 + timestamp: 1733997573790 - kind: conda name: aws-c-io version: 0.15.3 - build: h8aa8d47_3 - build_number: 3 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-h8aa8d47_3.conda - sha256: cb08b2e9258637e810ac283600b7de2d7a68f55a61e67226e9cce2537f36a06b - md5: 8ece20a51dafae96444e90c7ddaac41a + build: haba67d1_4 + build_number: 4 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-haba67d1_4.conda + sha256: 2d0859b57439cd98e854577aa3e07eb171b590098d51a8c908bab5ec497a3d38 + md5: 74eace4fab8675263a848075e991d380 depends: + - __osx >=11.0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.5,<0.10.6.0a0 - - libgcc >=13 - - s2n >=1.5.9,<1.5.10.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 license: Apache-2.0 license_family: Apache - size: 161513 - timestamp: 1733588480960 + size: 136213 + timestamp: 1733997647724 - kind: conda name: aws-c-io version: 0.15.3 - build: hfd54f12_3 - build_number: 3 + build: hbf5b6a4_4 + build_number: 4 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-hfd54f12_3.conda - sha256: 6d0bd78d5c7d3ec586691d54c8aebc79d089358ff9e793f0cac857a1f977a1a0 - md5: c0b9f79cd2f5797b913415511bfa2cd6 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-hbf5b6a4_4.conda + sha256: 3195fe431d3c43d6ecf749796d3acb093645c9d0de9998616641dada4b5fa2a6 + md5: ad3a6713063c18b9232c48e89ada03ac depends: - __glibc >=2.17,<3.0.a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.5,<0.10.6.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 - libgcc >=13 - s2n >=1.5.9,<1.5.10.0a0 license: Apache-2.0 license_family: Apache - size: 158115 - timestamp: 1733588386529 + size: 157886 + timestamp: 1733997507332 - kind: conda name: aws-c-mqtt version: 0.11.0 - build: h2f8d747_11 - build_number: 11 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h2f8d747_11.conda - sha256: b66de0de359bfaec5084bdc78fda6dfbd8cf8e71c68a76dcd7b74e8a00ec6052 - md5: f4ccd7c1e73c662fd9a795147ca8ca9f + build: h11f4f37_12 + build_number: 12 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h11f4f37_12.conda + sha256: 512d3969426152d9d5fd886e27b13706122dc3fa90eb08c37b0d51a33d7bb14a + md5: 96c3e0221fa2da97619ee82faa341a73 depends: - - aws-c-common >=0.10.5,<0.10.6.0a0 + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 168898 - timestamp: 1733739548597 + size: 194672 + timestamp: 1734025626798 - kind: conda name: aws-c-mqtt version: 0.11.0 - build: ha3c2ba9_11 - build_number: 11 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-ha3c2ba9_11.conda - sha256: 187787bb41e7b616c9317c12c32a5027aae784d1f9335f9d6d34a3fa7ebcb1ec - md5: 93c5070d6f9b4cb2ed9de52ce247cebb + build: h24f418c_12 + build_number: 12 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h24f418c_12.conda + sha256: 96575ea1dd2a9ea94763882e40a66dcbff9c41f702bf37c9514c4c719b3c11dd + md5: c072045a6206f88015d02fcba1705ea1 depends: - - __glibc >=2.17,<3.0.a0 - - aws-c-common >=0.10.5,<0.10.6.0a0 + - __osx >=11.0 + - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 193829 - timestamp: 1733740033267 + size: 134371 + timestamp: 1734025379525 - kind: conda name: aws-c-mqtt version: 0.11.0 - build: hd073cef_11 - build_number: 11 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-hd073cef_11.conda - sha256: d2ee2cdc651250a38f67b84ec65de3ba5493c760821d22c01edb8defd6393dc9 - md5: 0c1deb6e00f80b4aedcb2c4fcfea6407 + build: h5f50e26_12 + build_number: 12 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h5f50e26_12.conda + sha256: ffeb9100cc8fd4093e1a6fdfd938bc4a396dd77480b7fb17aa42855a4d5e2c70 + md5: 031ca33115d4b1eeb43f435d6215778c depends: - - __osx >=11.0 - - aws-c-common >=0.10.5,<0.10.6.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 + - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 134556 - timestamp: 1733739661152 + size: 169516 + timestamp: 1734025167885 - kind: conda name: aws-c-s3 - version: 0.7.5 - build: h55e9418_4 - build_number: 4 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.5-h55e9418_4.conda - sha256: 04d7fd3574fa76c184f04630125a760afa4ae5d4109eec36f22fe127cc85e164 - md5: faec629f0eb306cfe17ed1615249e188 + version: 0.7.7 + build: h1be5864_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.7-h1be5864_0.conda + sha256: 22966164d63808689fffd35945f57756c95337327e28099b5d77b29fc6a56ecc + md5: a37bba7acb62dd70492ee01eacca3b8f depends: - - __glibc >=2.17,<3.0.a0 + - __osx >=11.0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.5,<0.10.6.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - - libgcc >=13 - - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 113811 - timestamp: 1733717653326 + size: 97598 + timestamp: 1734146239038 - kind: conda name: aws-c-s3 - version: 0.7.5 - build: h757e810_4 - build_number: 4 + version: 0.7.7 + build: h2080895_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.5-h757e810_4.conda - sha256: 3da5e1b88d68c5cb2eb1dd898a7c6192be9e1df0bd2733d39d6c0ffe9fc546a2 - md5: 96a657e5856e9e92755170630067f63c + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.7-h2080895_0.conda + sha256: 20bc2dd60e6518d9b8215c2b652ab5c52ee8a997d3b9a5f69e2dabd28cbf26b2 + md5: ae223efa63fbb4262a2d85c3ab3bc4f5 depends: - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.5,<0.10.6.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 @@ -1332,273 +1328,274 @@ packages: - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 117478 - timestamp: 1733717680655 + size: 117641 + timestamp: 1734146239779 - kind: conda name: aws-c-s3 - version: 0.7.5 - build: hb201fd0_4 - build_number: 4 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.5-hb201fd0_4.conda - sha256: c25c62173770b681083962b497a927f306e7f3d05b459dd59e4c12eaf49e9f0b - md5: 83b9775bbe5419cf4916e646e870b87a + version: 0.7.7 + build: hf454442_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.7-hf454442_0.conda + sha256: c2f205a7bf64c5f40eea373b3a0a7c363c9aa9246a13dd7f3d9c6a4434c4fe2d + md5: 947c82025693bebd557f782bb5d6b469 depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.5,<0.10.6.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 + - libgcc >=13 + - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 97441 - timestamp: 1733717822438 + size: 114156 + timestamp: 1734146123386 - kind: conda name: aws-c-sdkutils version: 0.2.1 - build: h10558d5_3 - build_number: 3 + build: h0f0193d_4 + build_number: 4 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.1-h10558d5_3.conda - sha256: 0f6a15d711bc4d6b2d2b8451ad46bf78af6876235ad56bf142644a4ce2240f52 - md5: 1ba505fc4243ad75507efa8976e1790f + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.1-h0f0193d_4.conda + sha256: ede8e782467c87ac80ceb9c9af9e917d121b7d8b8c698186d18e3cecd36f2210 + md5: 53e798d720dd78b78847a7b2fdb05fc9 depends: - - aws-c-common >=0.10.5,<0.10.6.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 58123 - timestamp: 1733398238726 + size: 58621 + timestamp: 1733994421495 - kind: conda name: aws-c-sdkutils version: 0.2.1 - build: h4d88cd7_3 - build_number: 3 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.1-h4d88cd7_3.conda - sha256: a94ecde4e61de8effd9c93ba3527eb010773b5422d2d079ffdcd796ec77fcd4e - md5: 5ec333d73530fbfc2db670eeb6911bff + build: h4e1184b_4 + build_number: 4 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.1-h4e1184b_4.conda + sha256: df586f42210af1134b1c88ff4c278c3cb6d6c807c84eac48860062464b28554d + md5: a5126a90e74ac739b00564a4c7ddcc36 depends: - - __osx >=11.0 - - aws-c-common >=0.10.5,<0.10.6.0a0 + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 49739 - timestamp: 1733398400904 + size: 56094 + timestamp: 1733994449690 - kind: conda name: aws-c-sdkutils version: 0.2.1 - build: h9cc6398_3 - build_number: 3 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.1-h9cc6398_3.conda - sha256: 917f679da38f162e191c5d6817b35fbf2ae0584b1d335bc229fd01e6077108ee - md5: 10bdb7fc3763760dcea1cd908ece6b2b + build: hc8a0bd2_4 + build_number: 4 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.1-hc8a0bd2_4.conda + sha256: de98343ce42d2e569b3380292d20f47bf39bda08aadabcbb8e650d3f38fd742f + md5: 22f72f8cd7ead211304ac17d337d96e0 depends: - - __glibc >=2.17,<3.0.a0 - - aws-c-common >=0.10.5,<0.10.6.0a0 - - libgcc >=13 + - __osx >=11.0 + - aws-c-common >=0.10.6,<0.10.7.0a0 license: Apache-2.0 license_family: Apache - size: 55864 - timestamp: 1733398187914 + size: 49664 + timestamp: 1733994553014 - kind: conda name: aws-checksums version: 0.2.2 - build: h10558d5_3 - build_number: 3 + build: h0f0193d_4 + build_number: 4 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h10558d5_3.conda - sha256: 108860ae5d61a4dc0b0d91282d0171ba7fd69686c11b4bcbdcd3f8b8efc98adb - md5: 1ded47669f79301e4a3d1d3d469494c0 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h0f0193d_4.conda + sha256: 9f1e3635a587bcf92b61d88c7af7d24cd89c147c6d0ae58afbde08e65bcf48da + md5: 3bd35b0adab3d743f09e0252cc441d6b depends: - - aws-c-common >=0.10.5,<0.10.6.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 72203 - timestamp: 1733398350602 + size: 72154 + timestamp: 1733994384415 - kind: conda name: aws-checksums version: 0.2.2 - build: h4d88cd7_3 - build_number: 3 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-h4d88cd7_3.conda - sha256: 7d0d71e399fa6b0a1e686470d4a982396a9d0d29be29bf07591d83739cc29a0a - md5: 45409e27b510588196b9f116f86c2d51 + build: h4e1184b_4 + build_number: 4 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-h4e1184b_4.conda + sha256: 1ed9a332d06ad595694907fad2d6d801082916c27cd5076096fda4061e6d24a8 + md5: 74e8c3e4df4ceae34aa2959df4b28101 depends: - - __osx >=11.0 - - aws-c-common >=0.10.5,<0.10.6.0a0 + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 70160 - timestamp: 1733398484776 + size: 72762 + timestamp: 1733994347547 - kind: conda name: aws-checksums version: 0.2.2 - build: h9cc6398_3 - build_number: 3 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-h9cc6398_3.conda - sha256: a3aea2fc8ccf85ae64c5ce9c4e507be37173b94909191480e5151c482a220e40 - md5: d6dd8b87b95195d8d26893611d94ba3b + build: hc8a0bd2_4 + build_number: 4 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-hc8a0bd2_4.conda + sha256: 215086d95e8ff1d3fcb0197ada116cc9d7db1fdae7573f5e810d20fa9215b47c + md5: e70e88a357a3749b67679c0788c5b08a depends: - - __glibc >=2.17,<3.0.a0 - - aws-c-common >=0.10.5,<0.10.6.0a0 - - libgcc >=13 + - __osx >=11.0 + - aws-c-common >=0.10.6,<0.10.7.0a0 license: Apache-2.0 license_family: Apache - size: 72681 - timestamp: 1733398331530 + size: 70186 + timestamp: 1733994496998 - kind: conda name: aws-crt-cpp version: 0.29.7 - build: hb9a023b_5 - build_number: 5 + build: h19a973c_7 + build_number: 7 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.7-hb9a023b_5.conda - sha256: d1d89918a1f6e08f16275d82218b2f73012cee2def3ad8f1a8d28af7497e66cc - md5: 70a976e616535dbab5e1f354734a238a + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.7-h19a973c_7.conda + sha256: 8269e6746eb3a5d15b732a3983888bf98dfc1f6594e95250fc8d16b43cfd5ff9 + md5: 95714136bef3e917bd5a2942d4682b20 depends: - __osx >=11.0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.5,<0.10.6.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - - aws-c-s3 >=0.7.5,<0.7.6.0a0 + - aws-c-s3 >=0.7.7,<0.7.8.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - libcxx >=18 license: Apache-2.0 license_family: Apache - size: 236182 - timestamp: 1733767086227 + size: 236249 + timestamp: 1734178020924 - kind: conda name: aws-crt-cpp version: 0.29.7 - build: hc8d91e0_5 - build_number: 5 + build: h8a4e35f_7 + build_number: 7 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.7-hc8d91e0_5.conda - sha256: c3be4f3f77ac7ba716228df1099eb68a5e7a4cbbe386a4732a28f33d6b780cc4 - md5: 8f14e3d651a08c9b2f85c6e5d359e250 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.7-h8a4e35f_7.conda + sha256: 5ba9188e0cb4e3faff9bc96774febb040aa3b802aedba29d847e00e7b5eab84e + md5: d77a9e3d7ce15399903e92825fd651b5 depends: - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.5,<0.10.6.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - - aws-c-s3 >=0.7.5,<0.7.6.0a0 + - aws-c-s3 >=0.7.7,<0.7.8.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 284313 - timestamp: 1733766768643 + size: 283154 + timestamp: 1734177845248 - kind: conda name: aws-crt-cpp version: 0.29.7 - build: hed26007_5 - build_number: 5 + build: hd92328a_7 + build_number: 7 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.7-hed26007_5.conda - sha256: f996cb94f3ef212792f288a0f7c5201ac7f00bb43502702b76e408e50d80132f - md5: 7c64e4ac7a484fc525a4ce7b9baf709a + url: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.7-hd92328a_7.conda + sha256: 094cd81f1e5ba713e9e7a272ee52b5dde3ccc4842ea90f19c0354a00bbdac3d9 + md5: 02b95564257d5c3db9c06beccf711f95 depends: - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.5,<0.10.6.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - - aws-c-s3 >=0.7.5,<0.7.6.0a0 + - aws-c-s3 >=0.7.7,<0.7.8.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 354783 - timestamp: 1733766766977 + size: 354703 + timestamp: 1734177883319 - kind: conda name: aws-sdk-cpp version: 1.11.458 - build: h2d3f608_3 - build_number: 3 + build: h849ce1a_4 + build_number: 4 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h2d3f608_3.conda - sha256: b335dfee7b04117ddae857564300ed6795718e2305141c7d631dcc434503a261 - md5: 57bdfac803ce58e3a3256752d7e5aa6e + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h849ce1a_4.conda + sha256: 51b9e9df8cbab4a13a1b9d39d6ef5ed162aaa29c09a745810e00bbe92e1045c1 + md5: cda7747f4398be8d1fb37362815917a7 depends: - - aws-c-common >=0.10.5,<0.10.6.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - aws-crt-cpp >=0.29.7,<0.29.8.0a0 - - libcurl >=8.10.1,<9.0a0 + - libcurl >=8.11.1,<9.0a0 - libgcc >=13 - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 2896174 - timestamp: 1733808114676 + size: 2920625 + timestamp: 1734093552712 - kind: conda name: aws-sdk-cpp version: 1.11.458 - build: h39838b8_3 - build_number: 3 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-h39838b8_3.conda - sha256: b5ef3a956937d61b59b9dd4b8c23eeb0bc254c37a97028a50c3ff6c8df399deb - md5: 3a6c8f65692febdf791bece561b371c8 + build: hc430e4a_4 + build_number: 4 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-hc430e4a_4.conda + sha256: 2dc09f6f9c49127b5f96e7535b64a9c521b944d76d8b7d03d48ae80257ac1cea + md5: aeefac461bea1f126653c1285cf5af08 depends: - - __osx >=11.0 - - aws-c-common >=0.10.5,<0.10.6.0a0 + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - aws-crt-cpp >=0.29.7,<0.29.8.0a0 - - libcurl >=8.10.1,<9.0a0 - - libcxx >=18 + - libcurl >=8.11.1,<9.0a0 + - libgcc >=13 + - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 2837854 - timestamp: 1733808787914 + size: 3060561 + timestamp: 1734093737431 - kind: conda name: aws-sdk-cpp version: 1.11.458 - build: h571fd1c_3 - build_number: 3 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-h571fd1c_3.conda - sha256: c2f38374a6f4dd804f76c8a071bc7f7d37dfb43e194eb93a473ff789460c011b - md5: 374cf1add8af327b15b1b1e4873f4955 + build: he0ff2e4_4 + build_number: 4 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-he0ff2e4_4.conda + sha256: 535b970aaa13be45f8cab8205c59f044b17364111c41a227f061775a5c834e18 + md5: 0981ed87098b149bdb7d99a4a3fd0e58 depends: - - __glibc >=2.17,<3.0.a0 - - aws-c-common >=0.10.5,<0.10.6.0a0 + - __osx >=11.0 + - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - aws-crt-cpp >=0.29.7,<0.29.8.0a0 - - libcurl >=8.10.1,<9.0a0 - - libgcc >=13 - - libstdcxx >=13 + - libcurl >=8.11.1,<9.0a0 + - libcxx >=18 - libzlib >=1.3.1,<2.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 3062994 - timestamp: 1733808211748 + size: 2826534 + timestamp: 1734094018287 - kind: conda name: azure-core-cpp version: 1.14.0 @@ -5905,76 +5902,76 @@ packages: timestamp: 1733220925299 - kind: conda name: max - version: 25.1.0.dev2024121305 + version: 25.1.0.dev2024121405 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024121305-release.conda - sha256: 0934ef5364dceceb5e0c786f92bf537a2414e898a00f481b8c8472db5e75f288 - md5: 7e5a852508eeef653e57b0e2d997d6f0 - depends: - - max-core ==25.1.0.dev2024121305 release - - max-python >=25.1.0.dev2024121305,<26.0a0 - - mojo-jupyter ==25.1.0.dev2024121305 release - - mblack ==25.1.0.dev2024121305 release + url: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024121405-release.conda + sha256: 6bacaa1d4f27d255a4c3907c28929865eeef5d45d64d61c3991b526aee14766d + md5: 1aec535b4731af73dd1b43472e7b6fa0 + depends: + - max-core ==25.1.0.dev2024121405 release + - max-python >=25.1.0.dev2024121405,<26.0a0 + - mojo-jupyter ==25.1.0.dev2024121405 release + - mblack ==25.1.0.dev2024121405 release license: LicenseRef-Modular-Proprietary - size: 9911 - timestamp: 1734067047897 + size: 9921 + timestamp: 1734153430066 - kind: conda name: max-core - version: 25.1.0.dev2024121305 + version: 25.1.0.dev2024121405 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024121305-release.conda - sha256: 7a345ab21e1bc5db74684e165dbe92172631b15637e5235e8b55b75aa717b36e - md5: a092cd9f73e38d8c5a8e7421a65d6ec2 + url: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024121405-release.conda + sha256: 14f953430105c8f2bb8f3bdf1e3fb7e9acbb20613ad47c9ac1e88462e0cc804d + md5: d88d69b1696ed9d5795c8d346bbd4311 depends: - - mblack ==25.1.0.dev2024121305 release + - mblack ==25.1.0.dev2024121405 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 247758730 - timestamp: 1734067130820 + size: 245597032 + timestamp: 1734153445516 - kind: conda name: max-core - version: 25.1.0.dev2024121305 + version: 25.1.0.dev2024121405 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024121305-release.conda - sha256: ad1ba0f0de5a52214dd1a6d9650b82db3bb87ffbdac4426db051c0d23264ee6a - md5: aae29a11aa59123729f374c236e9ae15 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024121405-release.conda + sha256: e3936f8021fc72f7f2673e2653e7bbd3d325fb44818b868bb49c24e5c1766eaf + md5: ea674f5d9232d89046ad99090cc195a7 depends: - - mblack ==25.1.0.dev2024121305 release + - mblack ==25.1.0.dev2024121405 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 251654128 - timestamp: 1734067047896 + size: 249408423 + timestamp: 1734153430064 - kind: conda name: max-core - version: 25.1.0.dev2024121305 + version: 25.1.0.dev2024121405 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024121305-release.conda - sha256: 1d4409c69d60650860c24c7833e7b64f5cca00a2fa7f3c8bc3fe69f27d0bb004 - md5: 9cac1246d0cda9ddf123b51868be3da4 + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024121405-release.conda + sha256: b6bb97d20f0f7371a647778d18fe78f839e37eef423542ae3f4e75b018ffd8db + md5: 0e2d8c487ef68866164af9dff49f5119 depends: - - mblack ==25.1.0.dev2024121305 release + - mblack ==25.1.0.dev2024121405 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 212260365 - timestamp: 1734067231658 + size: 214323771 + timestamp: 1734153633668 - kind: conda name: max-python - version: 25.1.0.dev2024121305 + version: 25.1.0.dev2024121405 build: 3.11release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024121305-3.11release.conda - sha256: b6e71018d9a4f86137db53ae63293548abb8119659de8bafdde5ef14e84232c2 - md5: bcfed118cc71e8274d3631c145727ebc + url: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024121405-3.11release.conda + sha256: 502b2762fa8c3c8323c0bc808d20b0b362625e4f14774092b14e059e839553f7 + md5: 4a6c3363d9f3bd1ae8bee0c6f6aa055d depends: - - max-core ==25.1.0.dev2024121305 release + - max-core ==25.1.0.dev2024121405 release - python 3.11.* - fastapi - httpx @@ -5997,18 +5994,18 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 123987996 - timestamp: 1734067130827 + size: 122849243 + timestamp: 1734153445523 - kind: conda name: max-python - version: 25.1.0.dev2024121305 + version: 25.1.0.dev2024121405 build: 3.11release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024121305-3.11release.conda - sha256: 7a8b3d738588076db50a813c6fc2eb04f38b47d3dbf56ad064451d22edfda487 - md5: 61a95b2d6587e6455442a6727091f78c + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024121405-3.11release.conda + sha256: e44d87b086bfeb4de11ba726e3798bb1378c4aaeaca827c286b5f5863bd4bf35 + md5: c4ba0fecf0e7f2c6ccdd888380279c3e depends: - - max-core ==25.1.0.dev2024121305 release + - max-core ==25.1.0.dev2024121405 release - python 3.11.* - fastapi - httpx @@ -6031,18 +6028,18 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 127703260 - timestamp: 1734067047903 + size: 126602880 + timestamp: 1734153430072 - kind: conda name: max-python - version: 25.1.0.dev2024121305 + version: 25.1.0.dev2024121405 build: 3.11release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024121305-3.11release.conda - sha256: 4dda1e3041c5bf49507ee5e3d789af6f1e1f989b10abb61db5fafa4cf905aaf4 - md5: b38dadcf8dafa1fab28513675b45d88a + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024121405-3.11release.conda + sha256: 9200599e66ff284e1a8c5dada708e38514aec5765d4e3877203dc467e547f786 + md5: 8bba2a833d2fc758ff8ede3428fa9595 depends: - - max-core ==25.1.0.dev2024121305 release + - max-core ==25.1.0.dev2024121405 release - python 3.11.* - fastapi - httpx @@ -6065,17 +6062,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 112825846 - timestamp: 1734067231661 + size: 113433542 + timestamp: 1734153633670 - kind: conda name: mblack - version: 25.1.0.dev2024121305 + version: 25.1.0.dev2024121405 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121305-release.conda - sha256: abb1e77a5677ba3dff4645ce9d9867da248690f7a64badbd6678afcdb8ba3f35 - md5: 665d00da19a5c6902c00afa7c456a8da + url: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121405-release.conda + sha256: ea23ea9fdb019aa4dc05bcb1d1f526f77ce90a94baa3130d26ce71cad0a3647b + md5: 425b85251efa151234c9db33428ee55c depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -6085,8 +6082,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130799 - timestamp: 1734067047902 + size: 130792 + timestamp: 1734153430070 - kind: conda name: mdurl version: 0.1.2 @@ -6105,21 +6102,21 @@ packages: timestamp: 1733255681319 - kind: conda name: mojo-jupyter - version: 25.1.0.dev2024121305 + version: 25.1.0.dev2024121405 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024121305-release.conda - sha256: 4695f084795165a27b510a6b7c4174141cabad2f84c76c785529b0d6e9cc45ea - md5: 86028b0c146cc15b505e17670db7f139 + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024121405-release.conda + sha256: b232fe63e84736d519137d4c98067c886f8acc1cc38a6620a062f4eb079e751a + md5: b7d7fe85425c5120a665795eb2097aa9 depends: - - max-core ==25.1.0.dev2024121305 release + - max-core ==25.1.0.dev2024121405 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22933 - timestamp: 1734067047904 + size: 22934 + timestamp: 1734153430071 - kind: conda name: multidict version: 6.1.0 @@ -7246,22 +7243,20 @@ packages: timestamp: 1732254154568 - kind: conda name: pydantic-settings - version: 2.6.1 - build: pyh3cfb1c2_1 - build_number: 1 + version: 2.7.0 + build: pyh3cfb1c2_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.6.1-pyh3cfb1c2_1.conda - sha256: 8cc37e827f0098d07743f57f968283cefce6c11562d9241aba990acc23aedb56 - md5: deabf8afc8d987f20174ef0d8d9b549e + url: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.7.0-pyh3cfb1c2_0.conda + sha256: dd1ac7c8b6a189c8aa18f6c7df019d8f6df495300a259e3fbebdb542fc955c3b + md5: d9f19a7c4199249fa229891b573b6f9b depends: - pydantic >=2.7.0 - python >=3.9 - python-dotenv >=0.21.0 license: MIT - license_family: MIT - size: 30832 - timestamp: 1733851937909 + size: 31426 + timestamp: 1734127929720 - kind: conda name: pygments version: 2.18.0 diff --git a/examples/notebooks/magic.lock b/examples/notebooks/magic.lock index 58c3f7195c..1d42a623d1 100644 --- a/examples/notebooks/magic.lock +++ b/examples/notebooks/magic.lock @@ -19,19 +19,19 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-h8c8080f_14.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.1-h0f28dba_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.10.5-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.3.0-h9cc6398_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.0-hf811eff_10.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.2-hce7dc5d_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-hfd54f12_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-ha3c2ba9_11.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.5-h55e9418_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.1-h9cc6398_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-h9cc6398_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.7-hed26007_5.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-h571fd1c_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-hb921021_15.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.1-h1a47875_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.10.6-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.3.0-h4e1184b_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.0-h7959bf6_11.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.2-hefd7a92_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-hbf5b6a4_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h11f4f37_12.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.7-hf454442_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.1-h4e1184b_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-h4e1184b_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.7-hd92328a_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-hc430e4a_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.10.0-h113e628_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.13.0-h3cf044e_1.conda @@ -54,7 +54,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.10-py312h2ec8cdc_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.11-py312h2ec8cdc_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.1.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhd8ed1ab_1.conda @@ -166,13 +166,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/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-25.1.0.dev2024121305-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024121305-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024121305-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024121405-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024121405-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024121405-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121405-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-25.1.0.dev2024121305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024121405-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 @@ -218,7 +218,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.3-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.27.1-py312h12e396e_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.6.1-pyh3cfb1c2_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.7.0-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyinstrument-5.0.0-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda @@ -308,19 +308,19 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-hb4dd4bb_14.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.1-h1aca5b9_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-common-0.10.5-h86ecc28_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-compression-0.3.0-h10558d5_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-event-stream-0.5.0-ha9733bd_10.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.2-h53134c8_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-h8aa8d47_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h2f8d747_11.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.5-h757e810_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.1-h10558d5_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h10558d5_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.7-hc8d91e0_5.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h2d3f608_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-h2cb9fb3_15.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.1-h740c5af_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-common-0.10.6-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-compression-0.3.0-h0f0193d_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-event-stream-0.5.0-hcbd8f92_11.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.2-h3df160d_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-h92bf595_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h5f50e26_12.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.7-h2080895_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.1-h0f0193d_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h0f0193d_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.7-h8a4e35f_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h849ce1a_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-core-cpp-1.14.0-h1887c18_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-identity-cpp-1.10.0-h47b0b28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-blobs-cpp-12.13.0-h185ecfd_1.conda @@ -343,7 +343,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/debugpy-1.8.10-py312h6f74592_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/debugpy-1.8.11-py312h6f74592_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.1.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhd8ed1ab_1.conda @@ -456,13 +456,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/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-25.1.0.dev2024121305-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024121305-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024121305-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024121405-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024121405-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024121405-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121405-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-25.1.0.dev2024121305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024121405-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 @@ -508,7 +508,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.3-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pydantic-core-2.27.1-py312h8cbf658_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.6.1-pyh3cfb1c2_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.7.0-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyinstrument-5.0.0-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda @@ -598,19 +598,19 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-h93897a1_14.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.1-h4d88cd7_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.10.5-h5505292_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-compression-0.3.0-h4d88cd7_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.0-h9fa824c_10.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.2-hc68443d_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-h66499f2_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-hd073cef_11.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.5-hb201fd0_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.1-h4d88cd7_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-h4d88cd7_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.7-hb9a023b_5.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-h39838b8_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-h8bc59a9_15.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.1-hc8a0bd2_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.10.6-h5505292_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-compression-0.3.0-hc8a0bd2_5.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.0-h54f970a_11.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.2-h96aa502_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-haba67d1_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h24f418c_12.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.7-h1be5864_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.1-hc8a0bd2_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-hc8a0bd2_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.7-h19a973c_7.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-he0ff2e4_4.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.14.0-hd50102c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.10.0-hc602bab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-blobs-cpp-12.13.0-h7585a09_1.conda @@ -633,7 +633,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/debugpy-1.8.10-py312hd8f9ff3_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/debugpy-1.8.11-py312hd8f9ff3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.1.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhd8ed1ab_1.conda @@ -738,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-25.1.0.dev2024121305-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024121305-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024121305-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024121405-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024121405-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024121405-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121405-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-25.1.0.dev2024121305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024121405-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 @@ -790,7 +790,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.3-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.27.1-py312hcd83bfe_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.6.1-pyh3cfb1c2_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.7.0-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyinstrument-5.0.0-py312h0bf5046_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-core-10.3.2-py312hb9d441b_0.conda @@ -1224,469 +1224,465 @@ packages: - kind: conda name: aws-c-auth version: 0.8.0 - build: h8c8080f_14 - build_number: 14 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-h8c8080f_14.conda - sha256: 7a9f7763e3a151ae1008ead51458f9b889b657f388266d53c6f7fa383dbb2481 - md5: a9284141081982473ebf41b92566bbcb + build: h2cb9fb3_15 + build_number: 15 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-h2cb9fb3_15.conda + sha256: 4ce859dc9ff128bf5515604c43f33fb511386022fc9765ca077990f2a3f23df5 + md5: e524686ace966acefb5b8cbc6e8b3daa depends: - - __glibc >=2.17,<3.0.a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.5,<0.10.6.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 107775 - timestamp: 1733709347751 + size: 111854 + timestamp: 1734021745104 - kind: conda name: aws-c-auth version: 0.8.0 - build: h93897a1_14 - build_number: 14 + build: h8bc59a9_15 + build_number: 15 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-h93897a1_14.conda - sha256: 3ec33500c5def035acb9ba406161f5452e39b1b818c67d8a56103d6def47bda6 - md5: 061e221dc5cca62be8fab49a16bfb99d + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-h8bc59a9_15.conda + sha256: 0e41e56b662e76e024182adebcd91d09a4d38a83b35217c84e4967354dfff9a2 + md5: f688b8893c20ad9477a19e7ce614014a depends: - __osx >=11.0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.5,<0.10.6.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 license: Apache-2.0 license_family: Apache - size: 92250 - timestamp: 1733709418870 + size: 92507 + timestamp: 1734021831330 - kind: conda name: aws-c-auth version: 0.8.0 - build: hb4dd4bb_14 - build_number: 14 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-hb4dd4bb_14.conda - sha256: a9622ac836bbe4a24310e0e77a42ef0a17e5fa0703276f8bbbef945deaca337c - md5: a5b86123507e184fb4463e1f8890b398 + build: hb921021_15 + build_number: 15 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-hb921021_15.conda + sha256: 537006ad6d5097c134494166a6a1dc1451d5d050878d7b82cef498bfda40ba8a + md5: c79d50f64cffa5ad51ecc1a81057962f depends: + - __glibc >=2.17,<3.0.a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.5,<0.10.6.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 111975 - timestamp: 1733709317063 + size: 107614 + timestamp: 1734021692519 - kind: conda name: aws-c-cal version: 0.8.1 - build: h0f28dba_2 - build_number: 2 + build: h1a47875_3 + build_number: 3 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.1-h0f28dba_2.conda - sha256: 023fa0d0618b652b0be5eac73d92fd47136351da7d331334c45d5dd1ee760401 - md5: 94faebd978282d2a4a8514141daec756 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.1-h1a47875_3.conda + sha256: 095ac824ea9303eff67e04090ae531d9eb33d2bf8f82eaade39b839c421e16e8 + md5: 55a8561fdbbbd34f50f57d9be12ed084 depends: - __glibc >=2.17,<3.0.a0 - - aws-c-common >=0.10.5,<0.10.6.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 - libgcc >=13 - openssl >=3.3.1,<4.0a0 license: Apache-2.0 license_family: Apache - size: 47694 - timestamp: 1733390870810 + size: 47601 + timestamp: 1733991564405 - kind: conda name: aws-c-cal version: 0.8.1 - build: h1aca5b9_2 - build_number: 2 + build: h740c5af_3 + build_number: 3 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.1-h1aca5b9_2.conda - sha256: df203473e8675fc27ae5cb62bc09e336fe92655df0a0056e73087cb22aed287e - md5: 31d9e82aac5cd3fe399535bcec0f2975 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.1-h740c5af_3.conda + sha256: c5c7961d48ca7320ed3560c036f7aa5244df4b85d9657f70aacc5faba3e1509a + md5: 57ed2c445d7ef01d121b9bcea0522913 depends: - - aws-c-common >=0.10.5,<0.10.6.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 - libgcc >=13 - openssl >=3.3.1,<4.0a0 license: Apache-2.0 license_family: Apache - size: 49822 - timestamp: 1733390907734 + size: 50036 + timestamp: 1733991581303 - kind: conda name: aws-c-cal version: 0.8.1 - build: h4d88cd7_2 - build_number: 2 + build: hc8a0bd2_3 + build_number: 3 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.1-h4d88cd7_2.conda - sha256: 30e6bc4feea78a280553b084a960515e550dabfae0e63ba511be773c3a9f6b5a - md5: 3cb07f08e5aabe657b0b5fb13945e79a + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.1-hc8a0bd2_3.conda + sha256: 1f44be36e1daa17b4b081debb8aee492d13571084f38b503ad13e869fef24fe4 + md5: 8b0ce61384e5a33d2b301a64f3d22ac5 depends: - __osx >=11.0 - - aws-c-common >=0.10.5,<0.10.6.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 - openssl >=3.3.1,<4.0a0 license: Apache-2.0 license_family: Apache - size: 39878 - timestamp: 1733390962202 + size: 39925 + timestamp: 1733991649383 - kind: conda name: aws-c-common - version: 0.10.5 + version: 0.10.6 build: h5505292_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.10.5-h5505292_0.conda - sha256: 54554886028d25b5c752369e7ae8321852e875fdc780ff9357b72a31f3e5d5b4 - md5: 49f049f8b10cf8c2c5a26660854fd21a + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.10.6-h5505292_0.conda + sha256: 3bde135c8e74987c0f79ecd4fa17ec9cff0d658b3090168727ca1af3815ae57a + md5: 145e5b4c9702ed279d7d68aaf096f77d depends: - __osx >=11.0 license: Apache-2.0 license_family: Apache - size: 222184 - timestamp: 1733324871298 + size: 221863 + timestamp: 1733975576886 - kind: conda name: aws-c-common - version: 0.10.5 + version: 0.10.6 build: h86ecc28_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-common-0.10.5-h86ecc28_0.conda - sha256: bdea66b7be9acd463bbfd583d2f80ff676d376c60480a2d3f9f7de7b4bf6d2b2 - md5: fcd238b0cc98927742a96aa411123e32 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-common-0.10.6-h86ecc28_0.conda + sha256: 57288ec5df35781bea8fc6a8c9099cad6695b747784fc1b8862a0f9e5b3bf5ab + md5: fef806a0f6de853670c746bbece01966 depends: - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 258257 - timestamp: 1733324684433 + size: 259031 + timestamp: 1733975520465 - kind: conda name: aws-c-common - version: 0.10.5 + version: 0.10.6 build: hb9d3cd8_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.10.5-hb9d3cd8_0.conda - sha256: 93e83e2a31f41bac2aa5eae8fbc7f1d31449a04a3df8a64ebcac2433f52a86ad - md5: d8288fbad9d809b9ca139b8beb6553ef + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.10.6-hb9d3cd8_0.conda + sha256: 496e92f2150fdc351eacf6e236015deedb3d0d3114f8e5954341cbf9f3dda257 + md5: d7d4680337a14001b0e043e96529409b depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 237114 - timestamp: 1733324723318 + size: 236574 + timestamp: 1733975453350 - kind: conda name: aws-c-compression version: 0.3.0 - build: h10558d5_4 - build_number: 4 + build: h0f0193d_5 + build_number: 5 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-compression-0.3.0-h10558d5_4.conda - sha256: 45ea74461b6a5453325db2201ba9f728f20e89ead17730e93ddd7411a833c058 - md5: 8ceaf4396978c33bc695129425f12734 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-compression-0.3.0-h0f0193d_5.conda + sha256: 3f05d19f68ef800f33d44ea2a4211003124076516c8469abc7d432236344df53 + md5: 3a1421d12435df5b4c412cc4c8fac64d depends: - - aws-c-common >=0.10.5,<0.10.6.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 19742 - timestamp: 1733391062884 + size: 19740 + timestamp: 1733991625201 - kind: conda name: aws-c-compression version: 0.3.0 - build: h4d88cd7_4 - build_number: 4 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-compression-0.3.0-h4d88cd7_4.conda - sha256: b6900e82b553d18d5528322de236af3a7f64ccb3df08e8320142894144a5c716 - md5: 8c67ff0c68aea28be3efec6f8d799a19 + build: h4e1184b_5 + build_number: 5 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.3.0-h4e1184b_5.conda + sha256: 62ca84da83585e7814a40240a1e750b1563b2680b032a471464eccc001c3309b + md5: 3f4c1197462a6df2be6dc8241828fe93 depends: - - __osx >=11.0 - - aws-c-common >=0.10.5,<0.10.6.0a0 + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 18219 - timestamp: 1733391126008 + size: 19086 + timestamp: 1733991637424 - kind: conda name: aws-c-compression version: 0.3.0 - build: h9cc6398_4 - build_number: 4 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.3.0-h9cc6398_4.conda - sha256: 045a3231b0aacb544ea9e348c22f863d96631f14a3a2b59413a72f61259a32a4 - md5: 076717670d5406e90070120314ff9b4f + build: hc8a0bd2_5 + build_number: 5 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-compression-0.3.0-hc8a0bd2_5.conda + sha256: 47b2813f652ce7e64ac442f771b2a5f7d4af4ad0d07ff51f6075ea80ed2e3f09 + md5: a8b6c17732d14ed49d0e9b59c43186bc depends: - - __glibc >=2.17,<3.0.a0 - - aws-c-common >=0.10.5,<0.10.6.0a0 - - libgcc >=13 + - __osx >=11.0 + - aws-c-common >=0.10.6,<0.10.7.0a0 license: Apache-2.0 license_family: Apache - size: 19029 - timestamp: 1733390975089 + size: 18068 + timestamp: 1733991869211 - kind: conda name: aws-c-event-stream version: 0.5.0 - build: h9fa824c_10 - build_number: 10 + build: h54f970a_11 + build_number: 11 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.0-h9fa824c_10.conda - sha256: 12f2ccc71bb993934cc489af359cb7399f671c3111f64fe2be9c8231819e11bd - md5: 9f6a7984f9ce3c6149fa36865060928a + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.0-h54f970a_11.conda + sha256: f0667935f4e0d4c25e0e51da035640310b5ceeb8f723156734439bde8b848d7d + md5: ba41238f8e653998d7d2f42e3a8db054 depends: - __osx >=11.0 - - aws-c-common >=0.10.5,<0.10.6.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - libcxx >=18 license: Apache-2.0 license_family: Apache - size: 47460 - timestamp: 1733696263921 + size: 47078 + timestamp: 1734024749727 - kind: conda name: aws-c-event-stream version: 0.5.0 - build: ha9733bd_10 - build_number: 10 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-event-stream-0.5.0-ha9733bd_10.conda - sha256: e8189bdd1af1a3f68a460bcb3c852193cfdf7afa2f1a82d687d30055242b20e2 - md5: cb0877c6fcc93454f221ba4eba798cfc + build: h7959bf6_11 + build_number: 11 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.0-h7959bf6_11.conda + sha256: 10d7240c7db0c941fb1a59c4f8ea6689a434b03309ee7b766fa15a809c553c02 + md5: 9b3fb60fe57925a92f399bc3fc42eccf depends: - - aws-c-common >=0.10.5,<0.10.6.0a0 + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 55066 - timestamp: 1733696212604 + size: 54003 + timestamp: 1734024480949 - kind: conda name: aws-c-event-stream version: 0.5.0 - build: hf811eff_10 - build_number: 10 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.0-hf811eff_10.conda - sha256: 3fbc86e70b543f26cc485f98714b7f789c4ece05128046458681893f43b7f5f1 - md5: 5046c78dd139a333b6acd7376a10e0a7 + build: hcbd8f92_11 + build_number: 11 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-event-stream-0.5.0-hcbd8f92_11.conda + sha256: 79aa363c71c891a27496c0498f8d498b2ddc87b3ccb3b6c9da5b50b05936ebb8 + md5: e0772c59af4243a9b2565baa5d79e5b6 depends: - - __glibc >=2.17,<3.0.a0 - - aws-c-common >=0.10.5,<0.10.6.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 53973 - timestamp: 1733696170256 + size: 55207 + timestamp: 1734024546663 - kind: conda name: aws-c-http version: 0.9.2 - build: h53134c8_3 - build_number: 3 + build: h3df160d_4 + build_number: 4 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.2-h53134c8_3.conda - sha256: a4d217f89ad0e9326da57b2d9bd4cd5cb0a95423d092be7ed81e88fb075d4dbe - md5: 2ffd03180381a92332b673cefc602234 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.2-h3df160d_4.conda + sha256: 3a1d2d332945306be9d49e569b95e4cc172d825f10e88715513a172f28ebb59e + md5: 28f00aa7fd9556c4c461328cf146c20b depends: - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.5,<0.10.6.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-compression >=0.3.0,<0.3.1.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 189812 - timestamp: 1733683248290 + size: 190586 + timestamp: 1734008442362 - kind: conda name: aws-c-http version: 0.9.2 - build: hc68443d_3 - build_number: 3 + build: h96aa502_4 + build_number: 4 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.2-hc68443d_3.conda - sha256: 71be93cd1d8dfa5858939ba53431abaee859fbc98bdf9f5033bfa41af76b140a - md5: 6353604cb9803e63fce359388201514e + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.2-h96aa502_4.conda + sha256: 22e4737c8a885995b7c1ae1d79c1f6e78d489e16ec079615980fdde067aeaf76 + md5: 495c93a4f08b17deb3c04894512330e6 depends: - __osx >=11.0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.5,<0.10.6.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-compression >=0.3.0,<0.3.1.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 license: Apache-2.0 license_family: Apache - size: 153237 - timestamp: 1733683327609 + size: 152983 + timestamp: 1734008451473 - kind: conda name: aws-c-http version: 0.9.2 - build: hce7dc5d_3 - build_number: 3 + build: hefd7a92_4 + build_number: 4 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.2-hce7dc5d_3.conda - sha256: 7e864b6d4255c4edbd1b2c0f519849017d2a48e54b282748eaa8f9f0fc98a6f4 - md5: c0f54e8975ad42d2864f4b1918356b3b + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.2-hefd7a92_4.conda + sha256: 4a330206bd51148f6c13ca0b7a4db40f29a46f090642ebacdeb88b8a4abd7f99 + md5: 5ce4df662d32d3123ea8da15571b6f51 depends: - __glibc >=2.17,<3.0.a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.5,<0.10.6.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-compression >=0.3.0,<0.3.1.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 197506 - timestamp: 1733683203582 + size: 197731 + timestamp: 1734008380764 - kind: conda name: aws-c-io version: 0.15.3 - build: h66499f2_3 - build_number: 3 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-h66499f2_3.conda - sha256: 86ff175fa5dced16cf41bcc5c353de080314fcb81f4aed326f29b9f22add9aad - md5: e64159c5b106a0365544cfe9d4ef79ec + build: h92bf595_4 + build_number: 4 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-h92bf595_4.conda + sha256: ffa2fc1ddb01f4b8ac038ab70a5533306119754ba438b23399f2a82a38cf27bf + md5: 539df02c00c506c78aebdf6c0fc75743 depends: - - __osx >=11.0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.5,<0.10.6.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + - s2n >=1.5.9,<1.5.10.0a0 license: Apache-2.0 license_family: Apache - size: 136845 - timestamp: 1733588465582 + size: 161836 + timestamp: 1733997573790 - kind: conda name: aws-c-io version: 0.15.3 - build: h8aa8d47_3 - build_number: 3 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-h8aa8d47_3.conda - sha256: cb08b2e9258637e810ac283600b7de2d7a68f55a61e67226e9cce2537f36a06b - md5: 8ece20a51dafae96444e90c7ddaac41a + build: haba67d1_4 + build_number: 4 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-haba67d1_4.conda + sha256: 2d0859b57439cd98e854577aa3e07eb171b590098d51a8c908bab5ec497a3d38 + md5: 74eace4fab8675263a848075e991d380 depends: + - __osx >=11.0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.5,<0.10.6.0a0 - - libgcc >=13 - - s2n >=1.5.9,<1.5.10.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 license: Apache-2.0 license_family: Apache - size: 161513 - timestamp: 1733588480960 + size: 136213 + timestamp: 1733997647724 - kind: conda name: aws-c-io version: 0.15.3 - build: hfd54f12_3 - build_number: 3 + build: hbf5b6a4_4 + build_number: 4 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-hfd54f12_3.conda - sha256: 6d0bd78d5c7d3ec586691d54c8aebc79d089358ff9e793f0cac857a1f977a1a0 - md5: c0b9f79cd2f5797b913415511bfa2cd6 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-hbf5b6a4_4.conda + sha256: 3195fe431d3c43d6ecf749796d3acb093645c9d0de9998616641dada4b5fa2a6 + md5: ad3a6713063c18b9232c48e89ada03ac depends: - __glibc >=2.17,<3.0.a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.5,<0.10.6.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 - libgcc >=13 - s2n >=1.5.9,<1.5.10.0a0 license: Apache-2.0 license_family: Apache - size: 158115 - timestamp: 1733588386529 + size: 157886 + timestamp: 1733997507332 - kind: conda name: aws-c-mqtt version: 0.11.0 - build: h2f8d747_11 - build_number: 11 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h2f8d747_11.conda - sha256: b66de0de359bfaec5084bdc78fda6dfbd8cf8e71c68a76dcd7b74e8a00ec6052 - md5: f4ccd7c1e73c662fd9a795147ca8ca9f + build: h11f4f37_12 + build_number: 12 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h11f4f37_12.conda + sha256: 512d3969426152d9d5fd886e27b13706122dc3fa90eb08c37b0d51a33d7bb14a + md5: 96c3e0221fa2da97619ee82faa341a73 depends: - - aws-c-common >=0.10.5,<0.10.6.0a0 + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 168898 - timestamp: 1733739548597 + size: 194672 + timestamp: 1734025626798 - kind: conda name: aws-c-mqtt version: 0.11.0 - build: ha3c2ba9_11 - build_number: 11 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-ha3c2ba9_11.conda - sha256: 187787bb41e7b616c9317c12c32a5027aae784d1f9335f9d6d34a3fa7ebcb1ec - md5: 93c5070d6f9b4cb2ed9de52ce247cebb + build: h24f418c_12 + build_number: 12 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h24f418c_12.conda + sha256: 96575ea1dd2a9ea94763882e40a66dcbff9c41f702bf37c9514c4c719b3c11dd + md5: c072045a6206f88015d02fcba1705ea1 depends: - - __glibc >=2.17,<3.0.a0 - - aws-c-common >=0.10.5,<0.10.6.0a0 + - __osx >=11.0 + - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 193829 - timestamp: 1733740033267 + size: 134371 + timestamp: 1734025379525 - kind: conda name: aws-c-mqtt version: 0.11.0 - build: hd073cef_11 - build_number: 11 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-hd073cef_11.conda - sha256: d2ee2cdc651250a38f67b84ec65de3ba5493c760821d22c01edb8defd6393dc9 - md5: 0c1deb6e00f80b4aedcb2c4fcfea6407 + build: h5f50e26_12 + build_number: 12 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h5f50e26_12.conda + sha256: ffeb9100cc8fd4093e1a6fdfd938bc4a396dd77480b7fb17aa42855a4d5e2c70 + md5: 031ca33115d4b1eeb43f435d6215778c depends: - - __osx >=11.0 - - aws-c-common >=0.10.5,<0.10.6.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 + - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 134556 - timestamp: 1733739661152 + size: 169516 + timestamp: 1734025167885 - kind: conda name: aws-c-s3 - version: 0.7.5 - build: h55e9418_4 - build_number: 4 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.5-h55e9418_4.conda - sha256: 04d7fd3574fa76c184f04630125a760afa4ae5d4109eec36f22fe127cc85e164 - md5: faec629f0eb306cfe17ed1615249e188 + version: 0.7.7 + build: h1be5864_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.7-h1be5864_0.conda + sha256: 22966164d63808689fffd35945f57756c95337327e28099b5d77b29fc6a56ecc + md5: a37bba7acb62dd70492ee01eacca3b8f depends: - - __glibc >=2.17,<3.0.a0 + - __osx >=11.0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.5,<0.10.6.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - - libgcc >=13 - - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 113811 - timestamp: 1733717653326 + size: 97598 + timestamp: 1734146239038 - kind: conda name: aws-c-s3 - version: 0.7.5 - build: h757e810_4 - build_number: 4 + version: 0.7.7 + build: h2080895_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.5-h757e810_4.conda - sha256: 3da5e1b88d68c5cb2eb1dd898a7c6192be9e1df0bd2733d39d6c0ffe9fc546a2 - md5: 96a657e5856e9e92755170630067f63c + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.7-h2080895_0.conda + sha256: 20bc2dd60e6518d9b8215c2b652ab5c52ee8a997d3b9a5f69e2dabd28cbf26b2 + md5: ae223efa63fbb4262a2d85c3ab3bc4f5 depends: - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.5,<0.10.6.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 @@ -1694,273 +1690,274 @@ packages: - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 117478 - timestamp: 1733717680655 + size: 117641 + timestamp: 1734146239779 - kind: conda name: aws-c-s3 - version: 0.7.5 - build: hb201fd0_4 - build_number: 4 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.5-hb201fd0_4.conda - sha256: c25c62173770b681083962b497a927f306e7f3d05b459dd59e4c12eaf49e9f0b - md5: 83b9775bbe5419cf4916e646e870b87a + version: 0.7.7 + build: hf454442_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.7-hf454442_0.conda + sha256: c2f205a7bf64c5f40eea373b3a0a7c363c9aa9246a13dd7f3d9c6a4434c4fe2d + md5: 947c82025693bebd557f782bb5d6b469 depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.5,<0.10.6.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 + - libgcc >=13 + - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 97441 - timestamp: 1733717822438 + size: 114156 + timestamp: 1734146123386 - kind: conda name: aws-c-sdkutils version: 0.2.1 - build: h10558d5_3 - build_number: 3 + build: h0f0193d_4 + build_number: 4 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.1-h10558d5_3.conda - sha256: 0f6a15d711bc4d6b2d2b8451ad46bf78af6876235ad56bf142644a4ce2240f52 - md5: 1ba505fc4243ad75507efa8976e1790f + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.1-h0f0193d_4.conda + sha256: ede8e782467c87ac80ceb9c9af9e917d121b7d8b8c698186d18e3cecd36f2210 + md5: 53e798d720dd78b78847a7b2fdb05fc9 depends: - - aws-c-common >=0.10.5,<0.10.6.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 58123 - timestamp: 1733398238726 + size: 58621 + timestamp: 1733994421495 - kind: conda name: aws-c-sdkutils version: 0.2.1 - build: h4d88cd7_3 - build_number: 3 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.1-h4d88cd7_3.conda - sha256: a94ecde4e61de8effd9c93ba3527eb010773b5422d2d079ffdcd796ec77fcd4e - md5: 5ec333d73530fbfc2db670eeb6911bff + build: h4e1184b_4 + build_number: 4 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.1-h4e1184b_4.conda + sha256: df586f42210af1134b1c88ff4c278c3cb6d6c807c84eac48860062464b28554d + md5: a5126a90e74ac739b00564a4c7ddcc36 depends: - - __osx >=11.0 - - aws-c-common >=0.10.5,<0.10.6.0a0 + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 49739 - timestamp: 1733398400904 + size: 56094 + timestamp: 1733994449690 - kind: conda name: aws-c-sdkutils version: 0.2.1 - build: h9cc6398_3 - build_number: 3 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.1-h9cc6398_3.conda - sha256: 917f679da38f162e191c5d6817b35fbf2ae0584b1d335bc229fd01e6077108ee - md5: 10bdb7fc3763760dcea1cd908ece6b2b + build: hc8a0bd2_4 + build_number: 4 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.1-hc8a0bd2_4.conda + sha256: de98343ce42d2e569b3380292d20f47bf39bda08aadabcbb8e650d3f38fd742f + md5: 22f72f8cd7ead211304ac17d337d96e0 depends: - - __glibc >=2.17,<3.0.a0 - - aws-c-common >=0.10.5,<0.10.6.0a0 - - libgcc >=13 + - __osx >=11.0 + - aws-c-common >=0.10.6,<0.10.7.0a0 license: Apache-2.0 license_family: Apache - size: 55864 - timestamp: 1733398187914 + size: 49664 + timestamp: 1733994553014 - kind: conda name: aws-checksums version: 0.2.2 - build: h10558d5_3 - build_number: 3 + build: h0f0193d_4 + build_number: 4 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h10558d5_3.conda - sha256: 108860ae5d61a4dc0b0d91282d0171ba7fd69686c11b4bcbdcd3f8b8efc98adb - md5: 1ded47669f79301e4a3d1d3d469494c0 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h0f0193d_4.conda + sha256: 9f1e3635a587bcf92b61d88c7af7d24cd89c147c6d0ae58afbde08e65bcf48da + md5: 3bd35b0adab3d743f09e0252cc441d6b depends: - - aws-c-common >=0.10.5,<0.10.6.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 72203 - timestamp: 1733398350602 + size: 72154 + timestamp: 1733994384415 - kind: conda name: aws-checksums version: 0.2.2 - build: h4d88cd7_3 - build_number: 3 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-h4d88cd7_3.conda - sha256: 7d0d71e399fa6b0a1e686470d4a982396a9d0d29be29bf07591d83739cc29a0a - md5: 45409e27b510588196b9f116f86c2d51 + build: h4e1184b_4 + build_number: 4 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-h4e1184b_4.conda + sha256: 1ed9a332d06ad595694907fad2d6d801082916c27cd5076096fda4061e6d24a8 + md5: 74e8c3e4df4ceae34aa2959df4b28101 depends: - - __osx >=11.0 - - aws-c-common >=0.10.5,<0.10.6.0a0 + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 70160 - timestamp: 1733398484776 + size: 72762 + timestamp: 1733994347547 - kind: conda name: aws-checksums version: 0.2.2 - build: h9cc6398_3 - build_number: 3 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-h9cc6398_3.conda - sha256: a3aea2fc8ccf85ae64c5ce9c4e507be37173b94909191480e5151c482a220e40 - md5: d6dd8b87b95195d8d26893611d94ba3b + build: hc8a0bd2_4 + build_number: 4 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-hc8a0bd2_4.conda + sha256: 215086d95e8ff1d3fcb0197ada116cc9d7db1fdae7573f5e810d20fa9215b47c + md5: e70e88a357a3749b67679c0788c5b08a depends: - - __glibc >=2.17,<3.0.a0 - - aws-c-common >=0.10.5,<0.10.6.0a0 - - libgcc >=13 + - __osx >=11.0 + - aws-c-common >=0.10.6,<0.10.7.0a0 license: Apache-2.0 license_family: Apache - size: 72681 - timestamp: 1733398331530 + size: 70186 + timestamp: 1733994496998 - kind: conda name: aws-crt-cpp version: 0.29.7 - build: hb9a023b_5 - build_number: 5 + build: h19a973c_7 + build_number: 7 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.7-hb9a023b_5.conda - sha256: d1d89918a1f6e08f16275d82218b2f73012cee2def3ad8f1a8d28af7497e66cc - md5: 70a976e616535dbab5e1f354734a238a + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.7-h19a973c_7.conda + sha256: 8269e6746eb3a5d15b732a3983888bf98dfc1f6594e95250fc8d16b43cfd5ff9 + md5: 95714136bef3e917bd5a2942d4682b20 depends: - __osx >=11.0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.5,<0.10.6.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - - aws-c-s3 >=0.7.5,<0.7.6.0a0 + - aws-c-s3 >=0.7.7,<0.7.8.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - libcxx >=18 license: Apache-2.0 license_family: Apache - size: 236182 - timestamp: 1733767086227 + size: 236249 + timestamp: 1734178020924 - kind: conda name: aws-crt-cpp version: 0.29.7 - build: hc8d91e0_5 - build_number: 5 + build: h8a4e35f_7 + build_number: 7 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.7-hc8d91e0_5.conda - sha256: c3be4f3f77ac7ba716228df1099eb68a5e7a4cbbe386a4732a28f33d6b780cc4 - md5: 8f14e3d651a08c9b2f85c6e5d359e250 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.7-h8a4e35f_7.conda + sha256: 5ba9188e0cb4e3faff9bc96774febb040aa3b802aedba29d847e00e7b5eab84e + md5: d77a9e3d7ce15399903e92825fd651b5 depends: - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.5,<0.10.6.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - - aws-c-s3 >=0.7.5,<0.7.6.0a0 + - aws-c-s3 >=0.7.7,<0.7.8.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 284313 - timestamp: 1733766768643 + size: 283154 + timestamp: 1734177845248 - kind: conda name: aws-crt-cpp version: 0.29.7 - build: hed26007_5 - build_number: 5 + build: hd92328a_7 + build_number: 7 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.7-hed26007_5.conda - sha256: f996cb94f3ef212792f288a0f7c5201ac7f00bb43502702b76e408e50d80132f - md5: 7c64e4ac7a484fc525a4ce7b9baf709a + url: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.7-hd92328a_7.conda + sha256: 094cd81f1e5ba713e9e7a272ee52b5dde3ccc4842ea90f19c0354a00bbdac3d9 + md5: 02b95564257d5c3db9c06beccf711f95 depends: - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.5,<0.10.6.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - - aws-c-s3 >=0.7.5,<0.7.6.0a0 + - aws-c-s3 >=0.7.7,<0.7.8.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 354783 - timestamp: 1733766766977 + size: 354703 + timestamp: 1734177883319 - kind: conda name: aws-sdk-cpp version: 1.11.458 - build: h2d3f608_3 - build_number: 3 + build: h849ce1a_4 + build_number: 4 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h2d3f608_3.conda - sha256: b335dfee7b04117ddae857564300ed6795718e2305141c7d631dcc434503a261 - md5: 57bdfac803ce58e3a3256752d7e5aa6e + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h849ce1a_4.conda + sha256: 51b9e9df8cbab4a13a1b9d39d6ef5ed162aaa29c09a745810e00bbe92e1045c1 + md5: cda7747f4398be8d1fb37362815917a7 depends: - - aws-c-common >=0.10.5,<0.10.6.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - aws-crt-cpp >=0.29.7,<0.29.8.0a0 - - libcurl >=8.10.1,<9.0a0 + - libcurl >=8.11.1,<9.0a0 - libgcc >=13 - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 2896174 - timestamp: 1733808114676 + size: 2920625 + timestamp: 1734093552712 - kind: conda name: aws-sdk-cpp version: 1.11.458 - build: h39838b8_3 - build_number: 3 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-h39838b8_3.conda - sha256: b5ef3a956937d61b59b9dd4b8c23eeb0bc254c37a97028a50c3ff6c8df399deb - md5: 3a6c8f65692febdf791bece561b371c8 + build: hc430e4a_4 + build_number: 4 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-hc430e4a_4.conda + sha256: 2dc09f6f9c49127b5f96e7535b64a9c521b944d76d8b7d03d48ae80257ac1cea + md5: aeefac461bea1f126653c1285cf5af08 depends: - - __osx >=11.0 - - aws-c-common >=0.10.5,<0.10.6.0a0 + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - aws-crt-cpp >=0.29.7,<0.29.8.0a0 - - libcurl >=8.10.1,<9.0a0 - - libcxx >=18 + - libcurl >=8.11.1,<9.0a0 + - libgcc >=13 + - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 2837854 - timestamp: 1733808787914 + size: 3060561 + timestamp: 1734093737431 - kind: conda name: aws-sdk-cpp version: 1.11.458 - build: h571fd1c_3 - build_number: 3 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-h571fd1c_3.conda - sha256: c2f38374a6f4dd804f76c8a071bc7f7d37dfb43e194eb93a473ff789460c011b - md5: 374cf1add8af327b15b1b1e4873f4955 + build: he0ff2e4_4 + build_number: 4 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-he0ff2e4_4.conda + sha256: 535b970aaa13be45f8cab8205c59f044b17364111c41a227f061775a5c834e18 + md5: 0981ed87098b149bdb7d99a4a3fd0e58 depends: - - __glibc >=2.17,<3.0.a0 - - aws-c-common >=0.10.5,<0.10.6.0a0 + - __osx >=11.0 + - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - aws-crt-cpp >=0.29.7,<0.29.8.0a0 - - libcurl >=8.10.1,<9.0a0 - - libgcc >=13 - - libstdcxx >=13 + - libcurl >=8.11.1,<9.0a0 + - libcxx >=18 - libzlib >=1.3.1,<2.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 3062994 - timestamp: 1733808211748 + size: 2826534 + timestamp: 1734094018287 - kind: conda name: azure-core-cpp version: 1.14.0 @@ -2690,12 +2687,12 @@ packages: timestamp: 1691593908658 - kind: conda name: debugpy - version: 1.8.10 + version: 1.8.11 build: py312h2ec8cdc_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.10-py312h2ec8cdc_0.conda - sha256: 534a57b12b92b7af802d48633d96610564e9b41229869d4334d5e776a8f3ee08 - md5: ec2f6e5f137d0767686f7348e6003d78 + url: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.11-py312h2ec8cdc_0.conda + sha256: 3d800be438a76d8a636219afd63a617737729867af5800d50fc72e71ac4f27f1 + md5: 0235a6da7d128c7e068973c4de62fc7b depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -2704,16 +2701,16 @@ packages: - python_abi 3.12.* *_cp312 license: MIT license_family: MIT - size: 2622505 - timestamp: 1733945377151 + size: 2668691 + timestamp: 1734159098550 - kind: conda name: debugpy - version: 1.8.10 + version: 1.8.11 build: py312h6f74592_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/debugpy-1.8.10-py312h6f74592_0.conda - sha256: 370ed3880d521a6222989d122f924d2f8bb2696dc84932070a1e6d7ffca3a546 - md5: c49a976254e049e723e6c196580edaff + url: https://conda.anaconda.org/conda-forge/linux-aarch64/debugpy-1.8.11-py312h6f74592_0.conda + sha256: 8c5f73ea1ef9e88906968b9639be89d861b66aa48c132ec7565405293ca09f90 + md5: 3230587917725d0affd61674e74583d2 depends: - libgcc >=13 - libstdcxx >=13 @@ -2722,16 +2719,16 @@ packages: - python_abi 3.12.* *_cp312 license: MIT license_family: MIT - size: 2596147 - timestamp: 1733945465443 + size: 2609965 + timestamp: 1734159267844 - kind: conda name: debugpy - version: 1.8.10 + version: 1.8.11 build: py312hd8f9ff3_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/debugpy-1.8.10-py312hd8f9ff3_0.conda - sha256: 82d92c8b8d20e59c494a0ad9fbba0e2bb3fac660f857d8dbe1a8b39a431267f9 - md5: 89b4e3275df4bdc883425d8675ed1a06 + url: https://conda.anaconda.org/conda-forge/osx-arm64/debugpy-1.8.11-py312hd8f9ff3_0.conda + sha256: c219e3ba0cf97fdd9fa3d8601f8d37a7fe584cc2f31e199a820fa005649871ea + md5: 0f4c9c498b7ca4f010f7de44463c5403 depends: - __osx >=11.0 - libcxx >=18 @@ -2740,8 +2737,8 @@ packages: - python_abi 3.12.* *_cp312 license: MIT license_family: MIT - size: 2556448 - timestamp: 1733945456377 + size: 2517686 + timestamp: 1734159183809 - kind: conda name: decorator version: 5.1.1 @@ -6950,76 +6947,76 @@ packages: timestamp: 1733417051523 - kind: conda name: max - version: 25.1.0.dev2024121305 + version: 25.1.0.dev2024121405 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024121305-release.conda - sha256: 0934ef5364dceceb5e0c786f92bf537a2414e898a00f481b8c8472db5e75f288 - md5: 7e5a852508eeef653e57b0e2d997d6f0 + url: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024121405-release.conda + sha256: 6bacaa1d4f27d255a4c3907c28929865eeef5d45d64d61c3991b526aee14766d + md5: 1aec535b4731af73dd1b43472e7b6fa0 depends: - - max-core ==25.1.0.dev2024121305 release - - max-python >=25.1.0.dev2024121305,<26.0a0 - - mojo-jupyter ==25.1.0.dev2024121305 release - - mblack ==25.1.0.dev2024121305 release + - max-core ==25.1.0.dev2024121405 release + - max-python >=25.1.0.dev2024121405,<26.0a0 + - mojo-jupyter ==25.1.0.dev2024121405 release + - mblack ==25.1.0.dev2024121405 release license: LicenseRef-Modular-Proprietary - size: 9911 - timestamp: 1734067047897 + size: 9921 + timestamp: 1734153430066 - kind: conda name: max-core - version: 25.1.0.dev2024121305 + version: 25.1.0.dev2024121405 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024121305-release.conda - sha256: 7a345ab21e1bc5db74684e165dbe92172631b15637e5235e8b55b75aa717b36e - md5: a092cd9f73e38d8c5a8e7421a65d6ec2 + url: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024121405-release.conda + sha256: 14f953430105c8f2bb8f3bdf1e3fb7e9acbb20613ad47c9ac1e88462e0cc804d + md5: d88d69b1696ed9d5795c8d346bbd4311 depends: - - mblack ==25.1.0.dev2024121305 release + - mblack ==25.1.0.dev2024121405 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 247758730 - timestamp: 1734067130820 + size: 245597032 + timestamp: 1734153445516 - kind: conda name: max-core - version: 25.1.0.dev2024121305 + version: 25.1.0.dev2024121405 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024121305-release.conda - sha256: ad1ba0f0de5a52214dd1a6d9650b82db3bb87ffbdac4426db051c0d23264ee6a - md5: aae29a11aa59123729f374c236e9ae15 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024121405-release.conda + sha256: e3936f8021fc72f7f2673e2653e7bbd3d325fb44818b868bb49c24e5c1766eaf + md5: ea674f5d9232d89046ad99090cc195a7 depends: - - mblack ==25.1.0.dev2024121305 release + - mblack ==25.1.0.dev2024121405 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 251654128 - timestamp: 1734067047896 + size: 249408423 + timestamp: 1734153430064 - kind: conda name: max-core - version: 25.1.0.dev2024121305 + version: 25.1.0.dev2024121405 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024121305-release.conda - sha256: 1d4409c69d60650860c24c7833e7b64f5cca00a2fa7f3c8bc3fe69f27d0bb004 - md5: 9cac1246d0cda9ddf123b51868be3da4 + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024121405-release.conda + sha256: b6bb97d20f0f7371a647778d18fe78f839e37eef423542ae3f4e75b018ffd8db + md5: 0e2d8c487ef68866164af9dff49f5119 depends: - - mblack ==25.1.0.dev2024121305 release + - mblack ==25.1.0.dev2024121405 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 212260365 - timestamp: 1734067231658 + size: 214323771 + timestamp: 1734153633668 - kind: conda name: max-python - version: 25.1.0.dev2024121305 + version: 25.1.0.dev2024121405 build: 3.12release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024121305-3.12release.conda - sha256: 41468e52a6cfaab53f4f1f9227d37e94d97bf0037e3959b5738b17c841aa4853 - md5: 3d0543451b60f19e627a7a02e417dec7 + url: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024121405-3.12release.conda + sha256: 7ebdc67f58946084f7f4a657f0661899e61707b055f2046d9c18033f21f97008 + md5: 5a8cbae9c5257545459bfe7a262b62a6 depends: - - max-core ==25.1.0.dev2024121305 release + - max-core ==25.1.0.dev2024121405 release - python 3.12.* - fastapi - httpx @@ -7042,18 +7039,18 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 123962431 - timestamp: 1734067130830 + size: 122834581 + timestamp: 1734153445526 - kind: conda name: max-python - version: 25.1.0.dev2024121305 + version: 25.1.0.dev2024121405 build: 3.12release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024121305-3.12release.conda - sha256: 7f183e065b118867efe93b52a6e91afccb609bd53b78efc4566671b9a827bf1a - md5: 6a0e9f6376835e0267a6c4e74a126dc6 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024121405-3.12release.conda + sha256: b74a5c8945a97210778cda3cd9fe98f7404d2c9ff0b1a03738c77af6429b1523 + md5: 099dc5d1f85e4f883e72caef6f0c6e52 depends: - - max-core ==25.1.0.dev2024121305 release + - max-core ==25.1.0.dev2024121405 release - python 3.12.* - fastapi - httpx @@ -7076,18 +7073,18 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 127728932 - timestamp: 1734067047906 + size: 126606485 + timestamp: 1734153430075 - kind: conda name: max-python - version: 25.1.0.dev2024121305 + version: 25.1.0.dev2024121405 build: 3.12release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024121305-3.12release.conda - sha256: a273ba2302364c8a3163ce7f26dd7b787194c3c3f1bc9ed77e77b2edf483522d - md5: 09d62b97c29133fadc721fd9cb7b0388 + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024121405-3.12release.conda + sha256: 24a7ab99d936e5c28f597413e9e643fe34c46ba55916c1febcbe658e79a2ea9f + md5: 661ce5968d3cc1b11a67dfbf77e986b8 depends: - - max-core ==25.1.0.dev2024121305 release + - max-core ==25.1.0.dev2024121405 release - python 3.12.* - fastapi - httpx @@ -7110,17 +7107,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 112812970 - timestamp: 1734067231662 + size: 113414908 + timestamp: 1734153633671 - kind: conda name: mblack - version: 25.1.0.dev2024121305 + version: 25.1.0.dev2024121405 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121305-release.conda - sha256: abb1e77a5677ba3dff4645ce9d9867da248690f7a64badbd6678afcdb8ba3f35 - md5: 665d00da19a5c6902c00afa7c456a8da + url: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121405-release.conda + sha256: ea23ea9fdb019aa4dc05bcb1d1f526f77ce90a94baa3130d26ce71cad0a3647b + md5: 425b85251efa151234c9db33428ee55c depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -7130,8 +7127,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130799 - timestamp: 1734067047902 + size: 130792 + timestamp: 1734153430070 - kind: conda name: mdurl version: 0.1.2 @@ -7166,21 +7163,21 @@ packages: timestamp: 1733258822603 - kind: conda name: mojo-jupyter - version: 25.1.0.dev2024121305 + version: 25.1.0.dev2024121405 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024121305-release.conda - sha256: 4695f084795165a27b510a6b7c4174141cabad2f84c76c785529b0d6e9cc45ea - md5: 86028b0c146cc15b505e17670db7f139 + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024121405-release.conda + sha256: b232fe63e84736d519137d4c98067c886f8acc1cc38a6620a062f4eb079e751a + md5: b7d7fe85425c5120a665795eb2097aa9 depends: - - max-core ==25.1.0.dev2024121305 release + - max-core ==25.1.0.dev2024121405 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22933 - timestamp: 1734067047904 + size: 22934 + timestamp: 1734153430071 - kind: conda name: multidict version: 6.1.0 @@ -8622,22 +8619,20 @@ packages: timestamp: 1732254359451 - kind: conda name: pydantic-settings - version: 2.6.1 - build: pyh3cfb1c2_1 - build_number: 1 + version: 2.7.0 + build: pyh3cfb1c2_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.6.1-pyh3cfb1c2_1.conda - sha256: 8cc37e827f0098d07743f57f968283cefce6c11562d9241aba990acc23aedb56 - md5: deabf8afc8d987f20174ef0d8d9b549e + url: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.7.0-pyh3cfb1c2_0.conda + sha256: dd1ac7c8b6a189c8aa18f6c7df019d8f6df495300a259e3fbebdb542fc955c3b + md5: d9f19a7c4199249fa229891b573b6f9b depends: - pydantic >=2.7.0 - python >=3.9 - python-dotenv >=0.21.0 license: MIT - license_family: MIT - size: 30832 - timestamp: 1733851937909 + size: 31426 + timestamp: 1734127929720 - kind: conda name: pygments version: 2.18.0 diff --git a/examples/operators/magic.lock b/examples/operators/magic.lock index 42227cbb73..8dbf0058e9 100644 --- a/examples/operators/magic.lock +++ b/examples/operators/magic.lock @@ -14,19 +14,19 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-h8c8080f_14.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.1-h0f28dba_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.10.5-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.3.0-h9cc6398_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.0-hf811eff_10.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.2-hce7dc5d_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-hfd54f12_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-ha3c2ba9_11.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.5-h55e9418_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.1-h9cc6398_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-h9cc6398_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.7-hed26007_5.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-h571fd1c_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-hb921021_15.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.1-h1a47875_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.10.6-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.3.0-h4e1184b_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.0-h7959bf6_11.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.2-hefd7a92_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-hbf5b6a4_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h11f4f37_12.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.7-hf454442_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.1-h4e1184b_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-h4e1184b_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.7-hd92328a_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-hc430e4a_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.10.0-h113e628_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.13.0-h3cf044e_1.conda @@ -131,12 +131,12 @@ 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-25.1.0.dev2024121305-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024121305-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024121305-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024121405-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024121405-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024121405-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121405-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-25.1.0.dev2024121305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024121405-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 @@ -166,7 +166,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.3-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.27.1-py312h12e396e_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.6.1-pyh3cfb1c2_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.7.0-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyinstrument-5.0.0-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda @@ -232,19 +232,19 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-hb4dd4bb_14.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.1-h1aca5b9_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-common-0.10.5-h86ecc28_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-compression-0.3.0-h10558d5_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-event-stream-0.5.0-ha9733bd_10.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.2-h53134c8_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-h8aa8d47_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h2f8d747_11.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.5-h757e810_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.1-h10558d5_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h10558d5_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.7-hc8d91e0_5.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h2d3f608_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-h2cb9fb3_15.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.1-h740c5af_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-common-0.10.6-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-compression-0.3.0-h0f0193d_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-event-stream-0.5.0-hcbd8f92_11.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.2-h3df160d_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-h92bf595_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h5f50e26_12.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.7-h2080895_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.1-h0f0193d_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h0f0193d_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.7-h8a4e35f_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h849ce1a_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-core-cpp-1.14.0-h1887c18_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-identity-cpp-1.10.0-h47b0b28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-blobs-cpp-12.13.0-h185ecfd_1.conda @@ -350,12 +350,12 @@ 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-25.1.0.dev2024121305-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024121305-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024121305-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024121405-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024121405-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024121405-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121405-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-25.1.0.dev2024121305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024121405-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 @@ -385,7 +385,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.3-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pydantic-core-2.27.1-py312h8cbf658_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.6.1-pyh3cfb1c2_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.7.0-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyinstrument-5.0.0-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda @@ -450,19 +450,19 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-h93897a1_14.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.1-h4d88cd7_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.10.5-h5505292_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-compression-0.3.0-h4d88cd7_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.0-h9fa824c_10.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.2-hc68443d_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-h66499f2_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-hd073cef_11.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.5-hb201fd0_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.1-h4d88cd7_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-h4d88cd7_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.7-hb9a023b_5.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-h39838b8_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-h8bc59a9_15.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.1-hc8a0bd2_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.10.6-h5505292_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-compression-0.3.0-hc8a0bd2_5.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.0-h54f970a_11.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.2-h96aa502_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-haba67d1_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h24f418c_12.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.7-h1be5864_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.1-hc8a0bd2_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-hc8a0bd2_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.7-h19a973c_7.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-he0ff2e4_4.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.14.0-hd50102c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.10.0-hc602bab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-blobs-cpp-12.13.0-h7585a09_1.conda @@ -560,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-25.1.0.dev2024121305-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024121305-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024121305-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024121405-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024121405-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024121405-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121405-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-25.1.0.dev2024121305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024121405-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 @@ -595,7 +595,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.3-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.27.1-py312hcd83bfe_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.6.1-pyh3cfb1c2_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.7.0-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyinstrument-5.0.0-py312h0bf5046_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda @@ -862,469 +862,465 @@ packages: - kind: conda name: aws-c-auth version: 0.8.0 - build: h8c8080f_14 - build_number: 14 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-h8c8080f_14.conda - sha256: 7a9f7763e3a151ae1008ead51458f9b889b657f388266d53c6f7fa383dbb2481 - md5: a9284141081982473ebf41b92566bbcb + build: h2cb9fb3_15 + build_number: 15 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-h2cb9fb3_15.conda + sha256: 4ce859dc9ff128bf5515604c43f33fb511386022fc9765ca077990f2a3f23df5 + md5: e524686ace966acefb5b8cbc6e8b3daa depends: - - __glibc >=2.17,<3.0.a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.5,<0.10.6.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 107775 - timestamp: 1733709347751 + size: 111854 + timestamp: 1734021745104 - kind: conda name: aws-c-auth version: 0.8.0 - build: h93897a1_14 - build_number: 14 + build: h8bc59a9_15 + build_number: 15 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-h93897a1_14.conda - sha256: 3ec33500c5def035acb9ba406161f5452e39b1b818c67d8a56103d6def47bda6 - md5: 061e221dc5cca62be8fab49a16bfb99d + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-h8bc59a9_15.conda + sha256: 0e41e56b662e76e024182adebcd91d09a4d38a83b35217c84e4967354dfff9a2 + md5: f688b8893c20ad9477a19e7ce614014a depends: - __osx >=11.0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.5,<0.10.6.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 license: Apache-2.0 license_family: Apache - size: 92250 - timestamp: 1733709418870 + size: 92507 + timestamp: 1734021831330 - kind: conda name: aws-c-auth version: 0.8.0 - build: hb4dd4bb_14 - build_number: 14 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-hb4dd4bb_14.conda - sha256: a9622ac836bbe4a24310e0e77a42ef0a17e5fa0703276f8bbbef945deaca337c - md5: a5b86123507e184fb4463e1f8890b398 + build: hb921021_15 + build_number: 15 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-hb921021_15.conda + sha256: 537006ad6d5097c134494166a6a1dc1451d5d050878d7b82cef498bfda40ba8a + md5: c79d50f64cffa5ad51ecc1a81057962f depends: + - __glibc >=2.17,<3.0.a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.5,<0.10.6.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 111975 - timestamp: 1733709317063 + size: 107614 + timestamp: 1734021692519 - kind: conda name: aws-c-cal version: 0.8.1 - build: h0f28dba_2 - build_number: 2 + build: h1a47875_3 + build_number: 3 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.1-h0f28dba_2.conda - sha256: 023fa0d0618b652b0be5eac73d92fd47136351da7d331334c45d5dd1ee760401 - md5: 94faebd978282d2a4a8514141daec756 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.1-h1a47875_3.conda + sha256: 095ac824ea9303eff67e04090ae531d9eb33d2bf8f82eaade39b839c421e16e8 + md5: 55a8561fdbbbd34f50f57d9be12ed084 depends: - __glibc >=2.17,<3.0.a0 - - aws-c-common >=0.10.5,<0.10.6.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 - libgcc >=13 - openssl >=3.3.1,<4.0a0 license: Apache-2.0 license_family: Apache - size: 47694 - timestamp: 1733390870810 + size: 47601 + timestamp: 1733991564405 - kind: conda name: aws-c-cal version: 0.8.1 - build: h1aca5b9_2 - build_number: 2 + build: h740c5af_3 + build_number: 3 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.1-h1aca5b9_2.conda - sha256: df203473e8675fc27ae5cb62bc09e336fe92655df0a0056e73087cb22aed287e - md5: 31d9e82aac5cd3fe399535bcec0f2975 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.1-h740c5af_3.conda + sha256: c5c7961d48ca7320ed3560c036f7aa5244df4b85d9657f70aacc5faba3e1509a + md5: 57ed2c445d7ef01d121b9bcea0522913 depends: - - aws-c-common >=0.10.5,<0.10.6.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 - libgcc >=13 - openssl >=3.3.1,<4.0a0 license: Apache-2.0 license_family: Apache - size: 49822 - timestamp: 1733390907734 + size: 50036 + timestamp: 1733991581303 - kind: conda name: aws-c-cal version: 0.8.1 - build: h4d88cd7_2 - build_number: 2 + build: hc8a0bd2_3 + build_number: 3 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.1-h4d88cd7_2.conda - sha256: 30e6bc4feea78a280553b084a960515e550dabfae0e63ba511be773c3a9f6b5a - md5: 3cb07f08e5aabe657b0b5fb13945e79a + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.1-hc8a0bd2_3.conda + sha256: 1f44be36e1daa17b4b081debb8aee492d13571084f38b503ad13e869fef24fe4 + md5: 8b0ce61384e5a33d2b301a64f3d22ac5 depends: - __osx >=11.0 - - aws-c-common >=0.10.5,<0.10.6.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 - openssl >=3.3.1,<4.0a0 license: Apache-2.0 license_family: Apache - size: 39878 - timestamp: 1733390962202 + size: 39925 + timestamp: 1733991649383 - kind: conda name: aws-c-common - version: 0.10.5 + version: 0.10.6 build: h5505292_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.10.5-h5505292_0.conda - sha256: 54554886028d25b5c752369e7ae8321852e875fdc780ff9357b72a31f3e5d5b4 - md5: 49f049f8b10cf8c2c5a26660854fd21a + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.10.6-h5505292_0.conda + sha256: 3bde135c8e74987c0f79ecd4fa17ec9cff0d658b3090168727ca1af3815ae57a + md5: 145e5b4c9702ed279d7d68aaf096f77d depends: - __osx >=11.0 license: Apache-2.0 license_family: Apache - size: 222184 - timestamp: 1733324871298 + size: 221863 + timestamp: 1733975576886 - kind: conda name: aws-c-common - version: 0.10.5 + version: 0.10.6 build: h86ecc28_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-common-0.10.5-h86ecc28_0.conda - sha256: bdea66b7be9acd463bbfd583d2f80ff676d376c60480a2d3f9f7de7b4bf6d2b2 - md5: fcd238b0cc98927742a96aa411123e32 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-common-0.10.6-h86ecc28_0.conda + sha256: 57288ec5df35781bea8fc6a8c9099cad6695b747784fc1b8862a0f9e5b3bf5ab + md5: fef806a0f6de853670c746bbece01966 depends: - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 258257 - timestamp: 1733324684433 + size: 259031 + timestamp: 1733975520465 - kind: conda name: aws-c-common - version: 0.10.5 + version: 0.10.6 build: hb9d3cd8_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.10.5-hb9d3cd8_0.conda - sha256: 93e83e2a31f41bac2aa5eae8fbc7f1d31449a04a3df8a64ebcac2433f52a86ad - md5: d8288fbad9d809b9ca139b8beb6553ef + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.10.6-hb9d3cd8_0.conda + sha256: 496e92f2150fdc351eacf6e236015deedb3d0d3114f8e5954341cbf9f3dda257 + md5: d7d4680337a14001b0e043e96529409b depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 237114 - timestamp: 1733324723318 + size: 236574 + timestamp: 1733975453350 - kind: conda name: aws-c-compression version: 0.3.0 - build: h10558d5_4 - build_number: 4 + build: h0f0193d_5 + build_number: 5 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-compression-0.3.0-h10558d5_4.conda - sha256: 45ea74461b6a5453325db2201ba9f728f20e89ead17730e93ddd7411a833c058 - md5: 8ceaf4396978c33bc695129425f12734 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-compression-0.3.0-h0f0193d_5.conda + sha256: 3f05d19f68ef800f33d44ea2a4211003124076516c8469abc7d432236344df53 + md5: 3a1421d12435df5b4c412cc4c8fac64d depends: - - aws-c-common >=0.10.5,<0.10.6.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 19742 - timestamp: 1733391062884 + size: 19740 + timestamp: 1733991625201 - kind: conda name: aws-c-compression version: 0.3.0 - build: h4d88cd7_4 - build_number: 4 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-compression-0.3.0-h4d88cd7_4.conda - sha256: b6900e82b553d18d5528322de236af3a7f64ccb3df08e8320142894144a5c716 - md5: 8c67ff0c68aea28be3efec6f8d799a19 + build: h4e1184b_5 + build_number: 5 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.3.0-h4e1184b_5.conda + sha256: 62ca84da83585e7814a40240a1e750b1563b2680b032a471464eccc001c3309b + md5: 3f4c1197462a6df2be6dc8241828fe93 depends: - - __osx >=11.0 - - aws-c-common >=0.10.5,<0.10.6.0a0 + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 18219 - timestamp: 1733391126008 + size: 19086 + timestamp: 1733991637424 - kind: conda name: aws-c-compression version: 0.3.0 - build: h9cc6398_4 - build_number: 4 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.3.0-h9cc6398_4.conda - sha256: 045a3231b0aacb544ea9e348c22f863d96631f14a3a2b59413a72f61259a32a4 - md5: 076717670d5406e90070120314ff9b4f + build: hc8a0bd2_5 + build_number: 5 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-compression-0.3.0-hc8a0bd2_5.conda + sha256: 47b2813f652ce7e64ac442f771b2a5f7d4af4ad0d07ff51f6075ea80ed2e3f09 + md5: a8b6c17732d14ed49d0e9b59c43186bc depends: - - __glibc >=2.17,<3.0.a0 - - aws-c-common >=0.10.5,<0.10.6.0a0 - - libgcc >=13 + - __osx >=11.0 + - aws-c-common >=0.10.6,<0.10.7.0a0 license: Apache-2.0 license_family: Apache - size: 19029 - timestamp: 1733390975089 + size: 18068 + timestamp: 1733991869211 - kind: conda name: aws-c-event-stream version: 0.5.0 - build: h9fa824c_10 - build_number: 10 + build: h54f970a_11 + build_number: 11 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.0-h9fa824c_10.conda - sha256: 12f2ccc71bb993934cc489af359cb7399f671c3111f64fe2be9c8231819e11bd - md5: 9f6a7984f9ce3c6149fa36865060928a + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.0-h54f970a_11.conda + sha256: f0667935f4e0d4c25e0e51da035640310b5ceeb8f723156734439bde8b848d7d + md5: ba41238f8e653998d7d2f42e3a8db054 depends: - __osx >=11.0 - - aws-c-common >=0.10.5,<0.10.6.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - libcxx >=18 license: Apache-2.0 license_family: Apache - size: 47460 - timestamp: 1733696263921 + size: 47078 + timestamp: 1734024749727 - kind: conda name: aws-c-event-stream version: 0.5.0 - build: ha9733bd_10 - build_number: 10 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-event-stream-0.5.0-ha9733bd_10.conda - sha256: e8189bdd1af1a3f68a460bcb3c852193cfdf7afa2f1a82d687d30055242b20e2 - md5: cb0877c6fcc93454f221ba4eba798cfc + build: h7959bf6_11 + build_number: 11 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.0-h7959bf6_11.conda + sha256: 10d7240c7db0c941fb1a59c4f8ea6689a434b03309ee7b766fa15a809c553c02 + md5: 9b3fb60fe57925a92f399bc3fc42eccf depends: - - aws-c-common >=0.10.5,<0.10.6.0a0 + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 55066 - timestamp: 1733696212604 + size: 54003 + timestamp: 1734024480949 - kind: conda name: aws-c-event-stream version: 0.5.0 - build: hf811eff_10 - build_number: 10 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.0-hf811eff_10.conda - sha256: 3fbc86e70b543f26cc485f98714b7f789c4ece05128046458681893f43b7f5f1 - md5: 5046c78dd139a333b6acd7376a10e0a7 + build: hcbd8f92_11 + build_number: 11 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-event-stream-0.5.0-hcbd8f92_11.conda + sha256: 79aa363c71c891a27496c0498f8d498b2ddc87b3ccb3b6c9da5b50b05936ebb8 + md5: e0772c59af4243a9b2565baa5d79e5b6 depends: - - __glibc >=2.17,<3.0.a0 - - aws-c-common >=0.10.5,<0.10.6.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 53973 - timestamp: 1733696170256 + size: 55207 + timestamp: 1734024546663 - kind: conda name: aws-c-http version: 0.9.2 - build: h53134c8_3 - build_number: 3 + build: h3df160d_4 + build_number: 4 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.2-h53134c8_3.conda - sha256: a4d217f89ad0e9326da57b2d9bd4cd5cb0a95423d092be7ed81e88fb075d4dbe - md5: 2ffd03180381a92332b673cefc602234 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.2-h3df160d_4.conda + sha256: 3a1d2d332945306be9d49e569b95e4cc172d825f10e88715513a172f28ebb59e + md5: 28f00aa7fd9556c4c461328cf146c20b depends: - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.5,<0.10.6.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-compression >=0.3.0,<0.3.1.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 189812 - timestamp: 1733683248290 + size: 190586 + timestamp: 1734008442362 - kind: conda name: aws-c-http version: 0.9.2 - build: hc68443d_3 - build_number: 3 + build: h96aa502_4 + build_number: 4 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.2-hc68443d_3.conda - sha256: 71be93cd1d8dfa5858939ba53431abaee859fbc98bdf9f5033bfa41af76b140a - md5: 6353604cb9803e63fce359388201514e + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.2-h96aa502_4.conda + sha256: 22e4737c8a885995b7c1ae1d79c1f6e78d489e16ec079615980fdde067aeaf76 + md5: 495c93a4f08b17deb3c04894512330e6 depends: - __osx >=11.0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.5,<0.10.6.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-compression >=0.3.0,<0.3.1.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 license: Apache-2.0 license_family: Apache - size: 153237 - timestamp: 1733683327609 + size: 152983 + timestamp: 1734008451473 - kind: conda name: aws-c-http version: 0.9.2 - build: hce7dc5d_3 - build_number: 3 + build: hefd7a92_4 + build_number: 4 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.2-hce7dc5d_3.conda - sha256: 7e864b6d4255c4edbd1b2c0f519849017d2a48e54b282748eaa8f9f0fc98a6f4 - md5: c0f54e8975ad42d2864f4b1918356b3b + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.2-hefd7a92_4.conda + sha256: 4a330206bd51148f6c13ca0b7a4db40f29a46f090642ebacdeb88b8a4abd7f99 + md5: 5ce4df662d32d3123ea8da15571b6f51 depends: - __glibc >=2.17,<3.0.a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.5,<0.10.6.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-compression >=0.3.0,<0.3.1.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 197506 - timestamp: 1733683203582 + size: 197731 + timestamp: 1734008380764 - kind: conda name: aws-c-io version: 0.15.3 - build: h66499f2_3 - build_number: 3 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-h66499f2_3.conda - sha256: 86ff175fa5dced16cf41bcc5c353de080314fcb81f4aed326f29b9f22add9aad - md5: e64159c5b106a0365544cfe9d4ef79ec + build: h92bf595_4 + build_number: 4 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-h92bf595_4.conda + sha256: ffa2fc1ddb01f4b8ac038ab70a5533306119754ba438b23399f2a82a38cf27bf + md5: 539df02c00c506c78aebdf6c0fc75743 depends: - - __osx >=11.0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.5,<0.10.6.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + - s2n >=1.5.9,<1.5.10.0a0 license: Apache-2.0 license_family: Apache - size: 136845 - timestamp: 1733588465582 + size: 161836 + timestamp: 1733997573790 - kind: conda name: aws-c-io version: 0.15.3 - build: h8aa8d47_3 - build_number: 3 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-h8aa8d47_3.conda - sha256: cb08b2e9258637e810ac283600b7de2d7a68f55a61e67226e9cce2537f36a06b - md5: 8ece20a51dafae96444e90c7ddaac41a + build: haba67d1_4 + build_number: 4 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-haba67d1_4.conda + sha256: 2d0859b57439cd98e854577aa3e07eb171b590098d51a8c908bab5ec497a3d38 + md5: 74eace4fab8675263a848075e991d380 depends: + - __osx >=11.0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.5,<0.10.6.0a0 - - libgcc >=13 - - s2n >=1.5.9,<1.5.10.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 license: Apache-2.0 license_family: Apache - size: 161513 - timestamp: 1733588480960 + size: 136213 + timestamp: 1733997647724 - kind: conda name: aws-c-io version: 0.15.3 - build: hfd54f12_3 - build_number: 3 + build: hbf5b6a4_4 + build_number: 4 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-hfd54f12_3.conda - sha256: 6d0bd78d5c7d3ec586691d54c8aebc79d089358ff9e793f0cac857a1f977a1a0 - md5: c0b9f79cd2f5797b913415511bfa2cd6 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-hbf5b6a4_4.conda + sha256: 3195fe431d3c43d6ecf749796d3acb093645c9d0de9998616641dada4b5fa2a6 + md5: ad3a6713063c18b9232c48e89ada03ac depends: - __glibc >=2.17,<3.0.a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.5,<0.10.6.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 - libgcc >=13 - s2n >=1.5.9,<1.5.10.0a0 license: Apache-2.0 license_family: Apache - size: 158115 - timestamp: 1733588386529 + size: 157886 + timestamp: 1733997507332 - kind: conda name: aws-c-mqtt version: 0.11.0 - build: h2f8d747_11 - build_number: 11 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h2f8d747_11.conda - sha256: b66de0de359bfaec5084bdc78fda6dfbd8cf8e71c68a76dcd7b74e8a00ec6052 - md5: f4ccd7c1e73c662fd9a795147ca8ca9f + build: h11f4f37_12 + build_number: 12 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h11f4f37_12.conda + sha256: 512d3969426152d9d5fd886e27b13706122dc3fa90eb08c37b0d51a33d7bb14a + md5: 96c3e0221fa2da97619ee82faa341a73 depends: - - aws-c-common >=0.10.5,<0.10.6.0a0 + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 168898 - timestamp: 1733739548597 + size: 194672 + timestamp: 1734025626798 - kind: conda name: aws-c-mqtt version: 0.11.0 - build: ha3c2ba9_11 - build_number: 11 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-ha3c2ba9_11.conda - sha256: 187787bb41e7b616c9317c12c32a5027aae784d1f9335f9d6d34a3fa7ebcb1ec - md5: 93c5070d6f9b4cb2ed9de52ce247cebb + build: h24f418c_12 + build_number: 12 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h24f418c_12.conda + sha256: 96575ea1dd2a9ea94763882e40a66dcbff9c41f702bf37c9514c4c719b3c11dd + md5: c072045a6206f88015d02fcba1705ea1 depends: - - __glibc >=2.17,<3.0.a0 - - aws-c-common >=0.10.5,<0.10.6.0a0 + - __osx >=11.0 + - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 193829 - timestamp: 1733740033267 + size: 134371 + timestamp: 1734025379525 - kind: conda name: aws-c-mqtt version: 0.11.0 - build: hd073cef_11 - build_number: 11 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-hd073cef_11.conda - sha256: d2ee2cdc651250a38f67b84ec65de3ba5493c760821d22c01edb8defd6393dc9 - md5: 0c1deb6e00f80b4aedcb2c4fcfea6407 + build: h5f50e26_12 + build_number: 12 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h5f50e26_12.conda + sha256: ffeb9100cc8fd4093e1a6fdfd938bc4a396dd77480b7fb17aa42855a4d5e2c70 + md5: 031ca33115d4b1eeb43f435d6215778c depends: - - __osx >=11.0 - - aws-c-common >=0.10.5,<0.10.6.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 + - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 134556 - timestamp: 1733739661152 + size: 169516 + timestamp: 1734025167885 - kind: conda name: aws-c-s3 - version: 0.7.5 - build: h55e9418_4 - build_number: 4 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.5-h55e9418_4.conda - sha256: 04d7fd3574fa76c184f04630125a760afa4ae5d4109eec36f22fe127cc85e164 - md5: faec629f0eb306cfe17ed1615249e188 + version: 0.7.7 + build: h1be5864_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.7-h1be5864_0.conda + sha256: 22966164d63808689fffd35945f57756c95337327e28099b5d77b29fc6a56ecc + md5: a37bba7acb62dd70492ee01eacca3b8f depends: - - __glibc >=2.17,<3.0.a0 + - __osx >=11.0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.5,<0.10.6.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - - libgcc >=13 - - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 113811 - timestamp: 1733717653326 + size: 97598 + timestamp: 1734146239038 - kind: conda name: aws-c-s3 - version: 0.7.5 - build: h757e810_4 - build_number: 4 + version: 0.7.7 + build: h2080895_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.5-h757e810_4.conda - sha256: 3da5e1b88d68c5cb2eb1dd898a7c6192be9e1df0bd2733d39d6c0ffe9fc546a2 - md5: 96a657e5856e9e92755170630067f63c + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.7-h2080895_0.conda + sha256: 20bc2dd60e6518d9b8215c2b652ab5c52ee8a997d3b9a5f69e2dabd28cbf26b2 + md5: ae223efa63fbb4262a2d85c3ab3bc4f5 depends: - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.5,<0.10.6.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 @@ -1332,273 +1328,274 @@ packages: - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 117478 - timestamp: 1733717680655 + size: 117641 + timestamp: 1734146239779 - kind: conda name: aws-c-s3 - version: 0.7.5 - build: hb201fd0_4 - build_number: 4 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.5-hb201fd0_4.conda - sha256: c25c62173770b681083962b497a927f306e7f3d05b459dd59e4c12eaf49e9f0b - md5: 83b9775bbe5419cf4916e646e870b87a + version: 0.7.7 + build: hf454442_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.7-hf454442_0.conda + sha256: c2f205a7bf64c5f40eea373b3a0a7c363c9aa9246a13dd7f3d9c6a4434c4fe2d + md5: 947c82025693bebd557f782bb5d6b469 depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.5,<0.10.6.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 + - libgcc >=13 + - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 97441 - timestamp: 1733717822438 + size: 114156 + timestamp: 1734146123386 - kind: conda name: aws-c-sdkutils version: 0.2.1 - build: h10558d5_3 - build_number: 3 + build: h0f0193d_4 + build_number: 4 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.1-h10558d5_3.conda - sha256: 0f6a15d711bc4d6b2d2b8451ad46bf78af6876235ad56bf142644a4ce2240f52 - md5: 1ba505fc4243ad75507efa8976e1790f + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.1-h0f0193d_4.conda + sha256: ede8e782467c87ac80ceb9c9af9e917d121b7d8b8c698186d18e3cecd36f2210 + md5: 53e798d720dd78b78847a7b2fdb05fc9 depends: - - aws-c-common >=0.10.5,<0.10.6.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 58123 - timestamp: 1733398238726 + size: 58621 + timestamp: 1733994421495 - kind: conda name: aws-c-sdkutils version: 0.2.1 - build: h4d88cd7_3 - build_number: 3 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.1-h4d88cd7_3.conda - sha256: a94ecde4e61de8effd9c93ba3527eb010773b5422d2d079ffdcd796ec77fcd4e - md5: 5ec333d73530fbfc2db670eeb6911bff + build: h4e1184b_4 + build_number: 4 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.1-h4e1184b_4.conda + sha256: df586f42210af1134b1c88ff4c278c3cb6d6c807c84eac48860062464b28554d + md5: a5126a90e74ac739b00564a4c7ddcc36 depends: - - __osx >=11.0 - - aws-c-common >=0.10.5,<0.10.6.0a0 + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 49739 - timestamp: 1733398400904 + size: 56094 + timestamp: 1733994449690 - kind: conda name: aws-c-sdkutils version: 0.2.1 - build: h9cc6398_3 - build_number: 3 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.1-h9cc6398_3.conda - sha256: 917f679da38f162e191c5d6817b35fbf2ae0584b1d335bc229fd01e6077108ee - md5: 10bdb7fc3763760dcea1cd908ece6b2b + build: hc8a0bd2_4 + build_number: 4 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.1-hc8a0bd2_4.conda + sha256: de98343ce42d2e569b3380292d20f47bf39bda08aadabcbb8e650d3f38fd742f + md5: 22f72f8cd7ead211304ac17d337d96e0 depends: - - __glibc >=2.17,<3.0.a0 - - aws-c-common >=0.10.5,<0.10.6.0a0 - - libgcc >=13 + - __osx >=11.0 + - aws-c-common >=0.10.6,<0.10.7.0a0 license: Apache-2.0 license_family: Apache - size: 55864 - timestamp: 1733398187914 + size: 49664 + timestamp: 1733994553014 - kind: conda name: aws-checksums version: 0.2.2 - build: h10558d5_3 - build_number: 3 + build: h0f0193d_4 + build_number: 4 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h10558d5_3.conda - sha256: 108860ae5d61a4dc0b0d91282d0171ba7fd69686c11b4bcbdcd3f8b8efc98adb - md5: 1ded47669f79301e4a3d1d3d469494c0 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h0f0193d_4.conda + sha256: 9f1e3635a587bcf92b61d88c7af7d24cd89c147c6d0ae58afbde08e65bcf48da + md5: 3bd35b0adab3d743f09e0252cc441d6b depends: - - aws-c-common >=0.10.5,<0.10.6.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 72203 - timestamp: 1733398350602 + size: 72154 + timestamp: 1733994384415 - kind: conda name: aws-checksums version: 0.2.2 - build: h4d88cd7_3 - build_number: 3 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-h4d88cd7_3.conda - sha256: 7d0d71e399fa6b0a1e686470d4a982396a9d0d29be29bf07591d83739cc29a0a - md5: 45409e27b510588196b9f116f86c2d51 + build: h4e1184b_4 + build_number: 4 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-h4e1184b_4.conda + sha256: 1ed9a332d06ad595694907fad2d6d801082916c27cd5076096fda4061e6d24a8 + md5: 74e8c3e4df4ceae34aa2959df4b28101 depends: - - __osx >=11.0 - - aws-c-common >=0.10.5,<0.10.6.0a0 + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 70160 - timestamp: 1733398484776 + size: 72762 + timestamp: 1733994347547 - kind: conda name: aws-checksums version: 0.2.2 - build: h9cc6398_3 - build_number: 3 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-h9cc6398_3.conda - sha256: a3aea2fc8ccf85ae64c5ce9c4e507be37173b94909191480e5151c482a220e40 - md5: d6dd8b87b95195d8d26893611d94ba3b + build: hc8a0bd2_4 + build_number: 4 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-hc8a0bd2_4.conda + sha256: 215086d95e8ff1d3fcb0197ada116cc9d7db1fdae7573f5e810d20fa9215b47c + md5: e70e88a357a3749b67679c0788c5b08a depends: - - __glibc >=2.17,<3.0.a0 - - aws-c-common >=0.10.5,<0.10.6.0a0 - - libgcc >=13 + - __osx >=11.0 + - aws-c-common >=0.10.6,<0.10.7.0a0 license: Apache-2.0 license_family: Apache - size: 72681 - timestamp: 1733398331530 + size: 70186 + timestamp: 1733994496998 - kind: conda name: aws-crt-cpp version: 0.29.7 - build: hb9a023b_5 - build_number: 5 + build: h19a973c_7 + build_number: 7 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.7-hb9a023b_5.conda - sha256: d1d89918a1f6e08f16275d82218b2f73012cee2def3ad8f1a8d28af7497e66cc - md5: 70a976e616535dbab5e1f354734a238a + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.7-h19a973c_7.conda + sha256: 8269e6746eb3a5d15b732a3983888bf98dfc1f6594e95250fc8d16b43cfd5ff9 + md5: 95714136bef3e917bd5a2942d4682b20 depends: - __osx >=11.0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.5,<0.10.6.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - - aws-c-s3 >=0.7.5,<0.7.6.0a0 + - aws-c-s3 >=0.7.7,<0.7.8.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - libcxx >=18 license: Apache-2.0 license_family: Apache - size: 236182 - timestamp: 1733767086227 + size: 236249 + timestamp: 1734178020924 - kind: conda name: aws-crt-cpp version: 0.29.7 - build: hc8d91e0_5 - build_number: 5 + build: h8a4e35f_7 + build_number: 7 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.7-hc8d91e0_5.conda - sha256: c3be4f3f77ac7ba716228df1099eb68a5e7a4cbbe386a4732a28f33d6b780cc4 - md5: 8f14e3d651a08c9b2f85c6e5d359e250 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.7-h8a4e35f_7.conda + sha256: 5ba9188e0cb4e3faff9bc96774febb040aa3b802aedba29d847e00e7b5eab84e + md5: d77a9e3d7ce15399903e92825fd651b5 depends: - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.5,<0.10.6.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - - aws-c-s3 >=0.7.5,<0.7.6.0a0 + - aws-c-s3 >=0.7.7,<0.7.8.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 284313 - timestamp: 1733766768643 + size: 283154 + timestamp: 1734177845248 - kind: conda name: aws-crt-cpp version: 0.29.7 - build: hed26007_5 - build_number: 5 + build: hd92328a_7 + build_number: 7 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.7-hed26007_5.conda - sha256: f996cb94f3ef212792f288a0f7c5201ac7f00bb43502702b76e408e50d80132f - md5: 7c64e4ac7a484fc525a4ce7b9baf709a + url: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.7-hd92328a_7.conda + sha256: 094cd81f1e5ba713e9e7a272ee52b5dde3ccc4842ea90f19c0354a00bbdac3d9 + md5: 02b95564257d5c3db9c06beccf711f95 depends: - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.5,<0.10.6.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - - aws-c-s3 >=0.7.5,<0.7.6.0a0 + - aws-c-s3 >=0.7.7,<0.7.8.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 354783 - timestamp: 1733766766977 + size: 354703 + timestamp: 1734177883319 - kind: conda name: aws-sdk-cpp version: 1.11.458 - build: h2d3f608_3 - build_number: 3 + build: h849ce1a_4 + build_number: 4 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h2d3f608_3.conda - sha256: b335dfee7b04117ddae857564300ed6795718e2305141c7d631dcc434503a261 - md5: 57bdfac803ce58e3a3256752d7e5aa6e + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h849ce1a_4.conda + sha256: 51b9e9df8cbab4a13a1b9d39d6ef5ed162aaa29c09a745810e00bbe92e1045c1 + md5: cda7747f4398be8d1fb37362815917a7 depends: - - aws-c-common >=0.10.5,<0.10.6.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - aws-crt-cpp >=0.29.7,<0.29.8.0a0 - - libcurl >=8.10.1,<9.0a0 + - libcurl >=8.11.1,<9.0a0 - libgcc >=13 - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 2896174 - timestamp: 1733808114676 + size: 2920625 + timestamp: 1734093552712 - kind: conda name: aws-sdk-cpp version: 1.11.458 - build: h39838b8_3 - build_number: 3 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-h39838b8_3.conda - sha256: b5ef3a956937d61b59b9dd4b8c23eeb0bc254c37a97028a50c3ff6c8df399deb - md5: 3a6c8f65692febdf791bece561b371c8 + build: hc430e4a_4 + build_number: 4 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-hc430e4a_4.conda + sha256: 2dc09f6f9c49127b5f96e7535b64a9c521b944d76d8b7d03d48ae80257ac1cea + md5: aeefac461bea1f126653c1285cf5af08 depends: - - __osx >=11.0 - - aws-c-common >=0.10.5,<0.10.6.0a0 + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - aws-crt-cpp >=0.29.7,<0.29.8.0a0 - - libcurl >=8.10.1,<9.0a0 - - libcxx >=18 + - libcurl >=8.11.1,<9.0a0 + - libgcc >=13 + - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 2837854 - timestamp: 1733808787914 + size: 3060561 + timestamp: 1734093737431 - kind: conda name: aws-sdk-cpp version: 1.11.458 - build: h571fd1c_3 - build_number: 3 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-h571fd1c_3.conda - sha256: c2f38374a6f4dd804f76c8a071bc7f7d37dfb43e194eb93a473ff789460c011b - md5: 374cf1add8af327b15b1b1e4873f4955 + build: he0ff2e4_4 + build_number: 4 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-he0ff2e4_4.conda + sha256: 535b970aaa13be45f8cab8205c59f044b17364111c41a227f061775a5c834e18 + md5: 0981ed87098b149bdb7d99a4a3fd0e58 depends: - - __glibc >=2.17,<3.0.a0 - - aws-c-common >=0.10.5,<0.10.6.0a0 + - __osx >=11.0 + - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - aws-crt-cpp >=0.29.7,<0.29.8.0a0 - - libcurl >=8.10.1,<9.0a0 - - libgcc >=13 - - libstdcxx >=13 + - libcurl >=8.11.1,<9.0a0 + - libcxx >=18 - libzlib >=1.3.1,<2.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 3062994 - timestamp: 1733808211748 + size: 2826534 + timestamp: 1734094018287 - kind: conda name: azure-core-cpp version: 1.14.0 @@ -5905,76 +5902,76 @@ packages: timestamp: 1733219945697 - kind: conda name: max - version: 25.1.0.dev2024121305 + version: 25.1.0.dev2024121405 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024121305-release.conda - sha256: 0934ef5364dceceb5e0c786f92bf537a2414e898a00f481b8c8472db5e75f288 - md5: 7e5a852508eeef653e57b0e2d997d6f0 - depends: - - max-core ==25.1.0.dev2024121305 release - - max-python >=25.1.0.dev2024121305,<26.0a0 - - mojo-jupyter ==25.1.0.dev2024121305 release - - mblack ==25.1.0.dev2024121305 release + url: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024121405-release.conda + sha256: 6bacaa1d4f27d255a4c3907c28929865eeef5d45d64d61c3991b526aee14766d + md5: 1aec535b4731af73dd1b43472e7b6fa0 + depends: + - max-core ==25.1.0.dev2024121405 release + - max-python >=25.1.0.dev2024121405,<26.0a0 + - mojo-jupyter ==25.1.0.dev2024121405 release + - mblack ==25.1.0.dev2024121405 release license: LicenseRef-Modular-Proprietary - size: 9911 - timestamp: 1734067047897 + size: 9921 + timestamp: 1734153430066 - kind: conda name: max-core - version: 25.1.0.dev2024121305 + version: 25.1.0.dev2024121405 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024121305-release.conda - sha256: 7a345ab21e1bc5db74684e165dbe92172631b15637e5235e8b55b75aa717b36e - md5: a092cd9f73e38d8c5a8e7421a65d6ec2 + url: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024121405-release.conda + sha256: 14f953430105c8f2bb8f3bdf1e3fb7e9acbb20613ad47c9ac1e88462e0cc804d + md5: d88d69b1696ed9d5795c8d346bbd4311 depends: - - mblack ==25.1.0.dev2024121305 release + - mblack ==25.1.0.dev2024121405 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 247758730 - timestamp: 1734067130820 + size: 245597032 + timestamp: 1734153445516 - kind: conda name: max-core - version: 25.1.0.dev2024121305 + version: 25.1.0.dev2024121405 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024121305-release.conda - sha256: ad1ba0f0de5a52214dd1a6d9650b82db3bb87ffbdac4426db051c0d23264ee6a - md5: aae29a11aa59123729f374c236e9ae15 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024121405-release.conda + sha256: e3936f8021fc72f7f2673e2653e7bbd3d325fb44818b868bb49c24e5c1766eaf + md5: ea674f5d9232d89046ad99090cc195a7 depends: - - mblack ==25.1.0.dev2024121305 release + - mblack ==25.1.0.dev2024121405 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 251654128 - timestamp: 1734067047896 + size: 249408423 + timestamp: 1734153430064 - kind: conda name: max-core - version: 25.1.0.dev2024121305 + version: 25.1.0.dev2024121405 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024121305-release.conda - sha256: 1d4409c69d60650860c24c7833e7b64f5cca00a2fa7f3c8bc3fe69f27d0bb004 - md5: 9cac1246d0cda9ddf123b51868be3da4 + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024121405-release.conda + sha256: b6bb97d20f0f7371a647778d18fe78f839e37eef423542ae3f4e75b018ffd8db + md5: 0e2d8c487ef68866164af9dff49f5119 depends: - - mblack ==25.1.0.dev2024121305 release + - mblack ==25.1.0.dev2024121405 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 212260365 - timestamp: 1734067231658 + size: 214323771 + timestamp: 1734153633668 - kind: conda name: max-python - version: 25.1.0.dev2024121305 + version: 25.1.0.dev2024121405 build: 3.12release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024121305-3.12release.conda - sha256: 41468e52a6cfaab53f4f1f9227d37e94d97bf0037e3959b5738b17c841aa4853 - md5: 3d0543451b60f19e627a7a02e417dec7 + url: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024121405-3.12release.conda + sha256: 7ebdc67f58946084f7f4a657f0661899e61707b055f2046d9c18033f21f97008 + md5: 5a8cbae9c5257545459bfe7a262b62a6 depends: - - max-core ==25.1.0.dev2024121305 release + - max-core ==25.1.0.dev2024121405 release - python 3.12.* - fastapi - httpx @@ -5997,18 +5994,18 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 123962431 - timestamp: 1734067130830 + size: 122834581 + timestamp: 1734153445526 - kind: conda name: max-python - version: 25.1.0.dev2024121305 + version: 25.1.0.dev2024121405 build: 3.12release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024121305-3.12release.conda - sha256: 7f183e065b118867efe93b52a6e91afccb609bd53b78efc4566671b9a827bf1a - md5: 6a0e9f6376835e0267a6c4e74a126dc6 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024121405-3.12release.conda + sha256: b74a5c8945a97210778cda3cd9fe98f7404d2c9ff0b1a03738c77af6429b1523 + md5: 099dc5d1f85e4f883e72caef6f0c6e52 depends: - - max-core ==25.1.0.dev2024121305 release + - max-core ==25.1.0.dev2024121405 release - python 3.12.* - fastapi - httpx @@ -6031,18 +6028,18 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 127728932 - timestamp: 1734067047906 + size: 126606485 + timestamp: 1734153430075 - kind: conda name: max-python - version: 25.1.0.dev2024121305 + version: 25.1.0.dev2024121405 build: 3.12release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024121305-3.12release.conda - sha256: a273ba2302364c8a3163ce7f26dd7b787194c3c3f1bc9ed77e77b2edf483522d - md5: 09d62b97c29133fadc721fd9cb7b0388 + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024121405-3.12release.conda + sha256: 24a7ab99d936e5c28f597413e9e643fe34c46ba55916c1febcbe658e79a2ea9f + md5: 661ce5968d3cc1b11a67dfbf77e986b8 depends: - - max-core ==25.1.0.dev2024121305 release + - max-core ==25.1.0.dev2024121405 release - python 3.12.* - fastapi - httpx @@ -6065,17 +6062,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 112812970 - timestamp: 1734067231662 + size: 113414908 + timestamp: 1734153633671 - kind: conda name: mblack - version: 25.1.0.dev2024121305 + version: 25.1.0.dev2024121405 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121305-release.conda - sha256: abb1e77a5677ba3dff4645ce9d9867da248690f7a64badbd6678afcdb8ba3f35 - md5: 665d00da19a5c6902c00afa7c456a8da + url: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121405-release.conda + sha256: ea23ea9fdb019aa4dc05bcb1d1f526f77ce90a94baa3130d26ce71cad0a3647b + md5: 425b85251efa151234c9db33428ee55c depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -6085,8 +6082,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130799 - timestamp: 1734067047902 + size: 130792 + timestamp: 1734153430070 - kind: conda name: mdurl version: 0.1.2 @@ -6105,21 +6102,21 @@ packages: timestamp: 1733255681319 - kind: conda name: mojo-jupyter - version: 25.1.0.dev2024121305 + version: 25.1.0.dev2024121405 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024121305-release.conda - sha256: 4695f084795165a27b510a6b7c4174141cabad2f84c76c785529b0d6e9cc45ea - md5: 86028b0c146cc15b505e17670db7f139 + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024121405-release.conda + sha256: b232fe63e84736d519137d4c98067c886f8acc1cc38a6620a062f4eb079e751a + md5: b7d7fe85425c5120a665795eb2097aa9 depends: - - max-core ==25.1.0.dev2024121305 release + - max-core ==25.1.0.dev2024121405 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22933 - timestamp: 1734067047904 + size: 22934 + timestamp: 1734153430071 - kind: conda name: multidict version: 6.1.0 @@ -7246,22 +7243,20 @@ packages: timestamp: 1732254359451 - kind: conda name: pydantic-settings - version: 2.6.1 - build: pyh3cfb1c2_1 - build_number: 1 + version: 2.7.0 + build: pyh3cfb1c2_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.6.1-pyh3cfb1c2_1.conda - sha256: 8cc37e827f0098d07743f57f968283cefce6c11562d9241aba990acc23aedb56 - md5: deabf8afc8d987f20174ef0d8d9b549e + url: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.7.0-pyh3cfb1c2_0.conda + sha256: dd1ac7c8b6a189c8aa18f6c7df019d8f6df495300a259e3fbebdb542fc955c3b + md5: d9f19a7c4199249fa229891b573b6f9b depends: - pydantic >=2.7.0 - python >=3.9 - python-dotenv >=0.21.0 license: MIT - license_family: MIT - size: 30832 - timestamp: 1733851937909 + size: 31426 + timestamp: 1734127929720 - kind: conda name: pygments version: 2.18.0 diff --git a/magic.lock b/magic.lock index 96e9e9cb99..4a4f517464 100644 --- a/magic.lock +++ b/magic.lock @@ -14,19 +14,19 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-h8c8080f_14.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.1-h0f28dba_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.10.5-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.3.0-h9cc6398_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.0-hf811eff_10.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.2-hce7dc5d_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-hfd54f12_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-ha3c2ba9_11.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.5-h55e9418_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.1-h9cc6398_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-h9cc6398_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.7-hed26007_5.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-h571fd1c_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-hb921021_15.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.1-h1a47875_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.10.6-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.3.0-h4e1184b_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.0-h7959bf6_11.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.2-hefd7a92_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-hbf5b6a4_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h11f4f37_12.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.7-hf454442_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.1-h4e1184b_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-h4e1184b_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.7-hd92328a_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-hc430e4a_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.10.0-h113e628_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.13.0-h3cf044e_1.conda @@ -132,12 +132,12 @@ 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-25.1.0.dev2024121305-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024121305-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024121305-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024121405-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024121405-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024121405-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121405-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-25.1.0.dev2024121305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024121405-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 @@ -167,7 +167,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.3-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.27.1-py312h12e396e_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.6.1-pyh3cfb1c2_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.7.0-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyinstrument-5.0.0-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda @@ -233,19 +233,19 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-hb4dd4bb_14.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.1-h1aca5b9_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-common-0.10.5-h86ecc28_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-compression-0.3.0-h10558d5_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-event-stream-0.5.0-ha9733bd_10.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.2-h53134c8_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-h8aa8d47_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h2f8d747_11.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.5-h757e810_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.1-h10558d5_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h10558d5_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.7-hc8d91e0_5.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h2d3f608_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-h2cb9fb3_15.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.1-h740c5af_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-common-0.10.6-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-compression-0.3.0-h0f0193d_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-event-stream-0.5.0-hcbd8f92_11.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.2-h3df160d_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-h92bf595_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h5f50e26_12.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.7-h2080895_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.1-h0f0193d_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h0f0193d_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.7-h8a4e35f_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h849ce1a_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-core-cpp-1.14.0-h1887c18_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-identity-cpp-1.10.0-h47b0b28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-blobs-cpp-12.13.0-h185ecfd_1.conda @@ -352,12 +352,12 @@ 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-25.1.0.dev2024121305-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024121305-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024121305-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024121405-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024121405-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024121405-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121405-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-25.1.0.dev2024121305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024121405-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 @@ -387,7 +387,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.3-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pydantic-core-2.27.1-py312h8cbf658_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.6.1-pyh3cfb1c2_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.7.0-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyinstrument-5.0.0-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda @@ -452,19 +452,19 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-h93897a1_14.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.1-h4d88cd7_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.10.5-h5505292_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-compression-0.3.0-h4d88cd7_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.0-h9fa824c_10.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.2-hc68443d_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-h66499f2_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-hd073cef_11.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.5-hb201fd0_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.1-h4d88cd7_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-h4d88cd7_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.7-hb9a023b_5.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-h39838b8_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-h8bc59a9_15.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.1-hc8a0bd2_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.10.6-h5505292_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-compression-0.3.0-hc8a0bd2_5.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.0-h54f970a_11.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.2-h96aa502_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-haba67d1_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h24f418c_12.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.7-h1be5864_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.1-hc8a0bd2_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-hc8a0bd2_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.7-h19a973c_7.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-he0ff2e4_4.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.14.0-hd50102c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.10.0-hc602bab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-blobs-cpp-12.13.0-h7585a09_1.conda @@ -563,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-25.1.0.dev2024121305-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024121305-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024121305-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024121405-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024121405-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024121405-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121405-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-25.1.0.dev2024121305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024121405-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 @@ -598,7 +598,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.3-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.27.1-py312hcd83bfe_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.6.1-pyh3cfb1c2_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.7.0-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyinstrument-5.0.0-py312h0bf5046_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda @@ -865,469 +865,465 @@ packages: - kind: conda name: aws-c-auth version: 0.8.0 - build: h8c8080f_14 - build_number: 14 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-h8c8080f_14.conda - sha256: 7a9f7763e3a151ae1008ead51458f9b889b657f388266d53c6f7fa383dbb2481 - md5: a9284141081982473ebf41b92566bbcb + build: h2cb9fb3_15 + build_number: 15 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-h2cb9fb3_15.conda + sha256: 4ce859dc9ff128bf5515604c43f33fb511386022fc9765ca077990f2a3f23df5 + md5: e524686ace966acefb5b8cbc6e8b3daa depends: - - __glibc >=2.17,<3.0.a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.5,<0.10.6.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 107775 - timestamp: 1733709347751 + size: 111854 + timestamp: 1734021745104 - kind: conda name: aws-c-auth version: 0.8.0 - build: h93897a1_14 - build_number: 14 + build: h8bc59a9_15 + build_number: 15 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-h93897a1_14.conda - sha256: 3ec33500c5def035acb9ba406161f5452e39b1b818c67d8a56103d6def47bda6 - md5: 061e221dc5cca62be8fab49a16bfb99d + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-h8bc59a9_15.conda + sha256: 0e41e56b662e76e024182adebcd91d09a4d38a83b35217c84e4967354dfff9a2 + md5: f688b8893c20ad9477a19e7ce614014a depends: - __osx >=11.0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.5,<0.10.6.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 license: Apache-2.0 license_family: Apache - size: 92250 - timestamp: 1733709418870 + size: 92507 + timestamp: 1734021831330 - kind: conda name: aws-c-auth version: 0.8.0 - build: hb4dd4bb_14 - build_number: 14 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-hb4dd4bb_14.conda - sha256: a9622ac836bbe4a24310e0e77a42ef0a17e5fa0703276f8bbbef945deaca337c - md5: a5b86123507e184fb4463e1f8890b398 + build: hb921021_15 + build_number: 15 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-hb921021_15.conda + sha256: 537006ad6d5097c134494166a6a1dc1451d5d050878d7b82cef498bfda40ba8a + md5: c79d50f64cffa5ad51ecc1a81057962f depends: + - __glibc >=2.17,<3.0.a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.5,<0.10.6.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 111975 - timestamp: 1733709317063 + size: 107614 + timestamp: 1734021692519 - kind: conda name: aws-c-cal version: 0.8.1 - build: h0f28dba_2 - build_number: 2 + build: h1a47875_3 + build_number: 3 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.1-h0f28dba_2.conda - sha256: 023fa0d0618b652b0be5eac73d92fd47136351da7d331334c45d5dd1ee760401 - md5: 94faebd978282d2a4a8514141daec756 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.1-h1a47875_3.conda + sha256: 095ac824ea9303eff67e04090ae531d9eb33d2bf8f82eaade39b839c421e16e8 + md5: 55a8561fdbbbd34f50f57d9be12ed084 depends: - __glibc >=2.17,<3.0.a0 - - aws-c-common >=0.10.5,<0.10.6.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 - libgcc >=13 - openssl >=3.3.1,<4.0a0 license: Apache-2.0 license_family: Apache - size: 47694 - timestamp: 1733390870810 + size: 47601 + timestamp: 1733991564405 - kind: conda name: aws-c-cal version: 0.8.1 - build: h1aca5b9_2 - build_number: 2 + build: h740c5af_3 + build_number: 3 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.1-h1aca5b9_2.conda - sha256: df203473e8675fc27ae5cb62bc09e336fe92655df0a0056e73087cb22aed287e - md5: 31d9e82aac5cd3fe399535bcec0f2975 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.1-h740c5af_3.conda + sha256: c5c7961d48ca7320ed3560c036f7aa5244df4b85d9657f70aacc5faba3e1509a + md5: 57ed2c445d7ef01d121b9bcea0522913 depends: - - aws-c-common >=0.10.5,<0.10.6.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 - libgcc >=13 - openssl >=3.3.1,<4.0a0 license: Apache-2.0 license_family: Apache - size: 49822 - timestamp: 1733390907734 + size: 50036 + timestamp: 1733991581303 - kind: conda name: aws-c-cal version: 0.8.1 - build: h4d88cd7_2 - build_number: 2 + build: hc8a0bd2_3 + build_number: 3 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.1-h4d88cd7_2.conda - sha256: 30e6bc4feea78a280553b084a960515e550dabfae0e63ba511be773c3a9f6b5a - md5: 3cb07f08e5aabe657b0b5fb13945e79a + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.1-hc8a0bd2_3.conda + sha256: 1f44be36e1daa17b4b081debb8aee492d13571084f38b503ad13e869fef24fe4 + md5: 8b0ce61384e5a33d2b301a64f3d22ac5 depends: - __osx >=11.0 - - aws-c-common >=0.10.5,<0.10.6.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 - openssl >=3.3.1,<4.0a0 license: Apache-2.0 license_family: Apache - size: 39878 - timestamp: 1733390962202 + size: 39925 + timestamp: 1733991649383 - kind: conda name: aws-c-common - version: 0.10.5 + version: 0.10.6 build: h5505292_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.10.5-h5505292_0.conda - sha256: 54554886028d25b5c752369e7ae8321852e875fdc780ff9357b72a31f3e5d5b4 - md5: 49f049f8b10cf8c2c5a26660854fd21a + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.10.6-h5505292_0.conda + sha256: 3bde135c8e74987c0f79ecd4fa17ec9cff0d658b3090168727ca1af3815ae57a + md5: 145e5b4c9702ed279d7d68aaf096f77d depends: - __osx >=11.0 license: Apache-2.0 license_family: Apache - size: 222184 - timestamp: 1733324871298 + size: 221863 + timestamp: 1733975576886 - kind: conda name: aws-c-common - version: 0.10.5 + version: 0.10.6 build: h86ecc28_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-common-0.10.5-h86ecc28_0.conda - sha256: bdea66b7be9acd463bbfd583d2f80ff676d376c60480a2d3f9f7de7b4bf6d2b2 - md5: fcd238b0cc98927742a96aa411123e32 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-common-0.10.6-h86ecc28_0.conda + sha256: 57288ec5df35781bea8fc6a8c9099cad6695b747784fc1b8862a0f9e5b3bf5ab + md5: fef806a0f6de853670c746bbece01966 depends: - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 258257 - timestamp: 1733324684433 + size: 259031 + timestamp: 1733975520465 - kind: conda name: aws-c-common - version: 0.10.5 + version: 0.10.6 build: hb9d3cd8_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.10.5-hb9d3cd8_0.conda - sha256: 93e83e2a31f41bac2aa5eae8fbc7f1d31449a04a3df8a64ebcac2433f52a86ad - md5: d8288fbad9d809b9ca139b8beb6553ef + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.10.6-hb9d3cd8_0.conda + sha256: 496e92f2150fdc351eacf6e236015deedb3d0d3114f8e5954341cbf9f3dda257 + md5: d7d4680337a14001b0e043e96529409b depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 237114 - timestamp: 1733324723318 + size: 236574 + timestamp: 1733975453350 - kind: conda name: aws-c-compression version: 0.3.0 - build: h10558d5_4 - build_number: 4 + build: h0f0193d_5 + build_number: 5 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-compression-0.3.0-h10558d5_4.conda - sha256: 45ea74461b6a5453325db2201ba9f728f20e89ead17730e93ddd7411a833c058 - md5: 8ceaf4396978c33bc695129425f12734 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-compression-0.3.0-h0f0193d_5.conda + sha256: 3f05d19f68ef800f33d44ea2a4211003124076516c8469abc7d432236344df53 + md5: 3a1421d12435df5b4c412cc4c8fac64d depends: - - aws-c-common >=0.10.5,<0.10.6.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 19742 - timestamp: 1733391062884 + size: 19740 + timestamp: 1733991625201 - kind: conda name: aws-c-compression version: 0.3.0 - build: h4d88cd7_4 - build_number: 4 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-compression-0.3.0-h4d88cd7_4.conda - sha256: b6900e82b553d18d5528322de236af3a7f64ccb3df08e8320142894144a5c716 - md5: 8c67ff0c68aea28be3efec6f8d799a19 + build: h4e1184b_5 + build_number: 5 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.3.0-h4e1184b_5.conda + sha256: 62ca84da83585e7814a40240a1e750b1563b2680b032a471464eccc001c3309b + md5: 3f4c1197462a6df2be6dc8241828fe93 depends: - - __osx >=11.0 - - aws-c-common >=0.10.5,<0.10.6.0a0 + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 18219 - timestamp: 1733391126008 + size: 19086 + timestamp: 1733991637424 - kind: conda name: aws-c-compression version: 0.3.0 - build: h9cc6398_4 - build_number: 4 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.3.0-h9cc6398_4.conda - sha256: 045a3231b0aacb544ea9e348c22f863d96631f14a3a2b59413a72f61259a32a4 - md5: 076717670d5406e90070120314ff9b4f + build: hc8a0bd2_5 + build_number: 5 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-compression-0.3.0-hc8a0bd2_5.conda + sha256: 47b2813f652ce7e64ac442f771b2a5f7d4af4ad0d07ff51f6075ea80ed2e3f09 + md5: a8b6c17732d14ed49d0e9b59c43186bc depends: - - __glibc >=2.17,<3.0.a0 - - aws-c-common >=0.10.5,<0.10.6.0a0 - - libgcc >=13 + - __osx >=11.0 + - aws-c-common >=0.10.6,<0.10.7.0a0 license: Apache-2.0 license_family: Apache - size: 19029 - timestamp: 1733390975089 + size: 18068 + timestamp: 1733991869211 - kind: conda name: aws-c-event-stream version: 0.5.0 - build: h9fa824c_10 - build_number: 10 + build: h54f970a_11 + build_number: 11 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.0-h9fa824c_10.conda - sha256: 12f2ccc71bb993934cc489af359cb7399f671c3111f64fe2be9c8231819e11bd - md5: 9f6a7984f9ce3c6149fa36865060928a + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.0-h54f970a_11.conda + sha256: f0667935f4e0d4c25e0e51da035640310b5ceeb8f723156734439bde8b848d7d + md5: ba41238f8e653998d7d2f42e3a8db054 depends: - __osx >=11.0 - - aws-c-common >=0.10.5,<0.10.6.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - libcxx >=18 license: Apache-2.0 license_family: Apache - size: 47460 - timestamp: 1733696263921 + size: 47078 + timestamp: 1734024749727 - kind: conda name: aws-c-event-stream version: 0.5.0 - build: ha9733bd_10 - build_number: 10 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-event-stream-0.5.0-ha9733bd_10.conda - sha256: e8189bdd1af1a3f68a460bcb3c852193cfdf7afa2f1a82d687d30055242b20e2 - md5: cb0877c6fcc93454f221ba4eba798cfc + build: h7959bf6_11 + build_number: 11 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.0-h7959bf6_11.conda + sha256: 10d7240c7db0c941fb1a59c4f8ea6689a434b03309ee7b766fa15a809c553c02 + md5: 9b3fb60fe57925a92f399bc3fc42eccf depends: - - aws-c-common >=0.10.5,<0.10.6.0a0 + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 55066 - timestamp: 1733696212604 + size: 54003 + timestamp: 1734024480949 - kind: conda name: aws-c-event-stream version: 0.5.0 - build: hf811eff_10 - build_number: 10 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.0-hf811eff_10.conda - sha256: 3fbc86e70b543f26cc485f98714b7f789c4ece05128046458681893f43b7f5f1 - md5: 5046c78dd139a333b6acd7376a10e0a7 + build: hcbd8f92_11 + build_number: 11 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-event-stream-0.5.0-hcbd8f92_11.conda + sha256: 79aa363c71c891a27496c0498f8d498b2ddc87b3ccb3b6c9da5b50b05936ebb8 + md5: e0772c59af4243a9b2565baa5d79e5b6 depends: - - __glibc >=2.17,<3.0.a0 - - aws-c-common >=0.10.5,<0.10.6.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 53973 - timestamp: 1733696170256 + size: 55207 + timestamp: 1734024546663 - kind: conda name: aws-c-http version: 0.9.2 - build: h53134c8_3 - build_number: 3 + build: h3df160d_4 + build_number: 4 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.2-h53134c8_3.conda - sha256: a4d217f89ad0e9326da57b2d9bd4cd5cb0a95423d092be7ed81e88fb075d4dbe - md5: 2ffd03180381a92332b673cefc602234 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.2-h3df160d_4.conda + sha256: 3a1d2d332945306be9d49e569b95e4cc172d825f10e88715513a172f28ebb59e + md5: 28f00aa7fd9556c4c461328cf146c20b depends: - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.5,<0.10.6.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-compression >=0.3.0,<0.3.1.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 189812 - timestamp: 1733683248290 + size: 190586 + timestamp: 1734008442362 - kind: conda name: aws-c-http version: 0.9.2 - build: hc68443d_3 - build_number: 3 + build: h96aa502_4 + build_number: 4 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.2-hc68443d_3.conda - sha256: 71be93cd1d8dfa5858939ba53431abaee859fbc98bdf9f5033bfa41af76b140a - md5: 6353604cb9803e63fce359388201514e + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.2-h96aa502_4.conda + sha256: 22e4737c8a885995b7c1ae1d79c1f6e78d489e16ec079615980fdde067aeaf76 + md5: 495c93a4f08b17deb3c04894512330e6 depends: - __osx >=11.0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.5,<0.10.6.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-compression >=0.3.0,<0.3.1.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 license: Apache-2.0 license_family: Apache - size: 153237 - timestamp: 1733683327609 + size: 152983 + timestamp: 1734008451473 - kind: conda name: aws-c-http version: 0.9.2 - build: hce7dc5d_3 - build_number: 3 + build: hefd7a92_4 + build_number: 4 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.2-hce7dc5d_3.conda - sha256: 7e864b6d4255c4edbd1b2c0f519849017d2a48e54b282748eaa8f9f0fc98a6f4 - md5: c0f54e8975ad42d2864f4b1918356b3b + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.2-hefd7a92_4.conda + sha256: 4a330206bd51148f6c13ca0b7a4db40f29a46f090642ebacdeb88b8a4abd7f99 + md5: 5ce4df662d32d3123ea8da15571b6f51 depends: - __glibc >=2.17,<3.0.a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.5,<0.10.6.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-compression >=0.3.0,<0.3.1.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 197506 - timestamp: 1733683203582 + size: 197731 + timestamp: 1734008380764 - kind: conda name: aws-c-io version: 0.15.3 - build: h66499f2_3 - build_number: 3 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-h66499f2_3.conda - sha256: 86ff175fa5dced16cf41bcc5c353de080314fcb81f4aed326f29b9f22add9aad - md5: e64159c5b106a0365544cfe9d4ef79ec + build: h92bf595_4 + build_number: 4 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-h92bf595_4.conda + sha256: ffa2fc1ddb01f4b8ac038ab70a5533306119754ba438b23399f2a82a38cf27bf + md5: 539df02c00c506c78aebdf6c0fc75743 depends: - - __osx >=11.0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.5,<0.10.6.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + - s2n >=1.5.9,<1.5.10.0a0 license: Apache-2.0 license_family: Apache - size: 136845 - timestamp: 1733588465582 + size: 161836 + timestamp: 1733997573790 - kind: conda name: aws-c-io version: 0.15.3 - build: h8aa8d47_3 - build_number: 3 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-h8aa8d47_3.conda - sha256: cb08b2e9258637e810ac283600b7de2d7a68f55a61e67226e9cce2537f36a06b - md5: 8ece20a51dafae96444e90c7ddaac41a + build: haba67d1_4 + build_number: 4 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-haba67d1_4.conda + sha256: 2d0859b57439cd98e854577aa3e07eb171b590098d51a8c908bab5ec497a3d38 + md5: 74eace4fab8675263a848075e991d380 depends: + - __osx >=11.0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.5,<0.10.6.0a0 - - libgcc >=13 - - s2n >=1.5.9,<1.5.10.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 license: Apache-2.0 license_family: Apache - size: 161513 - timestamp: 1733588480960 + size: 136213 + timestamp: 1733997647724 - kind: conda name: aws-c-io version: 0.15.3 - build: hfd54f12_3 - build_number: 3 + build: hbf5b6a4_4 + build_number: 4 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-hfd54f12_3.conda - sha256: 6d0bd78d5c7d3ec586691d54c8aebc79d089358ff9e793f0cac857a1f977a1a0 - md5: c0b9f79cd2f5797b913415511bfa2cd6 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-hbf5b6a4_4.conda + sha256: 3195fe431d3c43d6ecf749796d3acb093645c9d0de9998616641dada4b5fa2a6 + md5: ad3a6713063c18b9232c48e89ada03ac depends: - __glibc >=2.17,<3.0.a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.5,<0.10.6.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 - libgcc >=13 - s2n >=1.5.9,<1.5.10.0a0 license: Apache-2.0 license_family: Apache - size: 158115 - timestamp: 1733588386529 + size: 157886 + timestamp: 1733997507332 - kind: conda name: aws-c-mqtt version: 0.11.0 - build: h2f8d747_11 - build_number: 11 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h2f8d747_11.conda - sha256: b66de0de359bfaec5084bdc78fda6dfbd8cf8e71c68a76dcd7b74e8a00ec6052 - md5: f4ccd7c1e73c662fd9a795147ca8ca9f + build: h11f4f37_12 + build_number: 12 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h11f4f37_12.conda + sha256: 512d3969426152d9d5fd886e27b13706122dc3fa90eb08c37b0d51a33d7bb14a + md5: 96c3e0221fa2da97619ee82faa341a73 depends: - - aws-c-common >=0.10.5,<0.10.6.0a0 + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 168898 - timestamp: 1733739548597 + size: 194672 + timestamp: 1734025626798 - kind: conda name: aws-c-mqtt version: 0.11.0 - build: ha3c2ba9_11 - build_number: 11 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-ha3c2ba9_11.conda - sha256: 187787bb41e7b616c9317c12c32a5027aae784d1f9335f9d6d34a3fa7ebcb1ec - md5: 93c5070d6f9b4cb2ed9de52ce247cebb + build: h24f418c_12 + build_number: 12 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h24f418c_12.conda + sha256: 96575ea1dd2a9ea94763882e40a66dcbff9c41f702bf37c9514c4c719b3c11dd + md5: c072045a6206f88015d02fcba1705ea1 depends: - - __glibc >=2.17,<3.0.a0 - - aws-c-common >=0.10.5,<0.10.6.0a0 + - __osx >=11.0 + - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 193829 - timestamp: 1733740033267 + size: 134371 + timestamp: 1734025379525 - kind: conda name: aws-c-mqtt version: 0.11.0 - build: hd073cef_11 - build_number: 11 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-hd073cef_11.conda - sha256: d2ee2cdc651250a38f67b84ec65de3ba5493c760821d22c01edb8defd6393dc9 - md5: 0c1deb6e00f80b4aedcb2c4fcfea6407 + build: h5f50e26_12 + build_number: 12 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h5f50e26_12.conda + sha256: ffeb9100cc8fd4093e1a6fdfd938bc4a396dd77480b7fb17aa42855a4d5e2c70 + md5: 031ca33115d4b1eeb43f435d6215778c depends: - - __osx >=11.0 - - aws-c-common >=0.10.5,<0.10.6.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 + - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 134556 - timestamp: 1733739661152 + size: 169516 + timestamp: 1734025167885 - kind: conda name: aws-c-s3 - version: 0.7.5 - build: h55e9418_4 - build_number: 4 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.5-h55e9418_4.conda - sha256: 04d7fd3574fa76c184f04630125a760afa4ae5d4109eec36f22fe127cc85e164 - md5: faec629f0eb306cfe17ed1615249e188 + version: 0.7.7 + build: h1be5864_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.7-h1be5864_0.conda + sha256: 22966164d63808689fffd35945f57756c95337327e28099b5d77b29fc6a56ecc + md5: a37bba7acb62dd70492ee01eacca3b8f depends: - - __glibc >=2.17,<3.0.a0 + - __osx >=11.0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.5,<0.10.6.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - - libgcc >=13 - - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 113811 - timestamp: 1733717653326 + size: 97598 + timestamp: 1734146239038 - kind: conda name: aws-c-s3 - version: 0.7.5 - build: h757e810_4 - build_number: 4 + version: 0.7.7 + build: h2080895_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.5-h757e810_4.conda - sha256: 3da5e1b88d68c5cb2eb1dd898a7c6192be9e1df0bd2733d39d6c0ffe9fc546a2 - md5: 96a657e5856e9e92755170630067f63c + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.7-h2080895_0.conda + sha256: 20bc2dd60e6518d9b8215c2b652ab5c52ee8a997d3b9a5f69e2dabd28cbf26b2 + md5: ae223efa63fbb4262a2d85c3ab3bc4f5 depends: - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.5,<0.10.6.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 @@ -1335,273 +1331,274 @@ packages: - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 117478 - timestamp: 1733717680655 + size: 117641 + timestamp: 1734146239779 - kind: conda name: aws-c-s3 - version: 0.7.5 - build: hb201fd0_4 - build_number: 4 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.5-hb201fd0_4.conda - sha256: c25c62173770b681083962b497a927f306e7f3d05b459dd59e4c12eaf49e9f0b - md5: 83b9775bbe5419cf4916e646e870b87a + version: 0.7.7 + build: hf454442_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.7-hf454442_0.conda + sha256: c2f205a7bf64c5f40eea373b3a0a7c363c9aa9246a13dd7f3d9c6a4434c4fe2d + md5: 947c82025693bebd557f782bb5d6b469 depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.5,<0.10.6.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 + - libgcc >=13 + - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 97441 - timestamp: 1733717822438 + size: 114156 + timestamp: 1734146123386 - kind: conda name: aws-c-sdkutils version: 0.2.1 - build: h10558d5_3 - build_number: 3 + build: h0f0193d_4 + build_number: 4 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.1-h10558d5_3.conda - sha256: 0f6a15d711bc4d6b2d2b8451ad46bf78af6876235ad56bf142644a4ce2240f52 - md5: 1ba505fc4243ad75507efa8976e1790f + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.1-h0f0193d_4.conda + sha256: ede8e782467c87ac80ceb9c9af9e917d121b7d8b8c698186d18e3cecd36f2210 + md5: 53e798d720dd78b78847a7b2fdb05fc9 depends: - - aws-c-common >=0.10.5,<0.10.6.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 58123 - timestamp: 1733398238726 + size: 58621 + timestamp: 1733994421495 - kind: conda name: aws-c-sdkutils version: 0.2.1 - build: h4d88cd7_3 - build_number: 3 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.1-h4d88cd7_3.conda - sha256: a94ecde4e61de8effd9c93ba3527eb010773b5422d2d079ffdcd796ec77fcd4e - md5: 5ec333d73530fbfc2db670eeb6911bff + build: h4e1184b_4 + build_number: 4 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.1-h4e1184b_4.conda + sha256: df586f42210af1134b1c88ff4c278c3cb6d6c807c84eac48860062464b28554d + md5: a5126a90e74ac739b00564a4c7ddcc36 depends: - - __osx >=11.0 - - aws-c-common >=0.10.5,<0.10.6.0a0 + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 49739 - timestamp: 1733398400904 + size: 56094 + timestamp: 1733994449690 - kind: conda name: aws-c-sdkutils version: 0.2.1 - build: h9cc6398_3 - build_number: 3 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.1-h9cc6398_3.conda - sha256: 917f679da38f162e191c5d6817b35fbf2ae0584b1d335bc229fd01e6077108ee - md5: 10bdb7fc3763760dcea1cd908ece6b2b + build: hc8a0bd2_4 + build_number: 4 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.1-hc8a0bd2_4.conda + sha256: de98343ce42d2e569b3380292d20f47bf39bda08aadabcbb8e650d3f38fd742f + md5: 22f72f8cd7ead211304ac17d337d96e0 depends: - - __glibc >=2.17,<3.0.a0 - - aws-c-common >=0.10.5,<0.10.6.0a0 - - libgcc >=13 + - __osx >=11.0 + - aws-c-common >=0.10.6,<0.10.7.0a0 license: Apache-2.0 license_family: Apache - size: 55864 - timestamp: 1733398187914 + size: 49664 + timestamp: 1733994553014 - kind: conda name: aws-checksums version: 0.2.2 - build: h10558d5_3 - build_number: 3 + build: h0f0193d_4 + build_number: 4 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h10558d5_3.conda - sha256: 108860ae5d61a4dc0b0d91282d0171ba7fd69686c11b4bcbdcd3f8b8efc98adb - md5: 1ded47669f79301e4a3d1d3d469494c0 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h0f0193d_4.conda + sha256: 9f1e3635a587bcf92b61d88c7af7d24cd89c147c6d0ae58afbde08e65bcf48da + md5: 3bd35b0adab3d743f09e0252cc441d6b depends: - - aws-c-common >=0.10.5,<0.10.6.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 72203 - timestamp: 1733398350602 + size: 72154 + timestamp: 1733994384415 - kind: conda name: aws-checksums version: 0.2.2 - build: h4d88cd7_3 - build_number: 3 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-h4d88cd7_3.conda - sha256: 7d0d71e399fa6b0a1e686470d4a982396a9d0d29be29bf07591d83739cc29a0a - md5: 45409e27b510588196b9f116f86c2d51 + build: h4e1184b_4 + build_number: 4 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-h4e1184b_4.conda + sha256: 1ed9a332d06ad595694907fad2d6d801082916c27cd5076096fda4061e6d24a8 + md5: 74e8c3e4df4ceae34aa2959df4b28101 depends: - - __osx >=11.0 - - aws-c-common >=0.10.5,<0.10.6.0a0 + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 70160 - timestamp: 1733398484776 + size: 72762 + timestamp: 1733994347547 - kind: conda name: aws-checksums version: 0.2.2 - build: h9cc6398_3 - build_number: 3 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-h9cc6398_3.conda - sha256: a3aea2fc8ccf85ae64c5ce9c4e507be37173b94909191480e5151c482a220e40 - md5: d6dd8b87b95195d8d26893611d94ba3b + build: hc8a0bd2_4 + build_number: 4 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-hc8a0bd2_4.conda + sha256: 215086d95e8ff1d3fcb0197ada116cc9d7db1fdae7573f5e810d20fa9215b47c + md5: e70e88a357a3749b67679c0788c5b08a depends: - - __glibc >=2.17,<3.0.a0 - - aws-c-common >=0.10.5,<0.10.6.0a0 - - libgcc >=13 + - __osx >=11.0 + - aws-c-common >=0.10.6,<0.10.7.0a0 license: Apache-2.0 license_family: Apache - size: 72681 - timestamp: 1733398331530 + size: 70186 + timestamp: 1733994496998 - kind: conda name: aws-crt-cpp version: 0.29.7 - build: hb9a023b_5 - build_number: 5 + build: h19a973c_7 + build_number: 7 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.7-hb9a023b_5.conda - sha256: d1d89918a1f6e08f16275d82218b2f73012cee2def3ad8f1a8d28af7497e66cc - md5: 70a976e616535dbab5e1f354734a238a + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.7-h19a973c_7.conda + sha256: 8269e6746eb3a5d15b732a3983888bf98dfc1f6594e95250fc8d16b43cfd5ff9 + md5: 95714136bef3e917bd5a2942d4682b20 depends: - __osx >=11.0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.5,<0.10.6.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - - aws-c-s3 >=0.7.5,<0.7.6.0a0 + - aws-c-s3 >=0.7.7,<0.7.8.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - libcxx >=18 license: Apache-2.0 license_family: Apache - size: 236182 - timestamp: 1733767086227 + size: 236249 + timestamp: 1734178020924 - kind: conda name: aws-crt-cpp version: 0.29.7 - build: hc8d91e0_5 - build_number: 5 + build: h8a4e35f_7 + build_number: 7 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.7-hc8d91e0_5.conda - sha256: c3be4f3f77ac7ba716228df1099eb68a5e7a4cbbe386a4732a28f33d6b780cc4 - md5: 8f14e3d651a08c9b2f85c6e5d359e250 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.7-h8a4e35f_7.conda + sha256: 5ba9188e0cb4e3faff9bc96774febb040aa3b802aedba29d847e00e7b5eab84e + md5: d77a9e3d7ce15399903e92825fd651b5 depends: - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.5,<0.10.6.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - - aws-c-s3 >=0.7.5,<0.7.6.0a0 + - aws-c-s3 >=0.7.7,<0.7.8.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 284313 - timestamp: 1733766768643 + size: 283154 + timestamp: 1734177845248 - kind: conda name: aws-crt-cpp version: 0.29.7 - build: hed26007_5 - build_number: 5 + build: hd92328a_7 + build_number: 7 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.7-hed26007_5.conda - sha256: f996cb94f3ef212792f288a0f7c5201ac7f00bb43502702b76e408e50d80132f - md5: 7c64e4ac7a484fc525a4ce7b9baf709a + url: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.7-hd92328a_7.conda + sha256: 094cd81f1e5ba713e9e7a272ee52b5dde3ccc4842ea90f19c0354a00bbdac3d9 + md5: 02b95564257d5c3db9c06beccf711f95 depends: - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.5,<0.10.6.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - - aws-c-s3 >=0.7.5,<0.7.6.0a0 + - aws-c-s3 >=0.7.7,<0.7.8.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 354783 - timestamp: 1733766766977 + size: 354703 + timestamp: 1734177883319 - kind: conda name: aws-sdk-cpp version: 1.11.458 - build: h2d3f608_3 - build_number: 3 + build: h849ce1a_4 + build_number: 4 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h2d3f608_3.conda - sha256: b335dfee7b04117ddae857564300ed6795718e2305141c7d631dcc434503a261 - md5: 57bdfac803ce58e3a3256752d7e5aa6e + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h849ce1a_4.conda + sha256: 51b9e9df8cbab4a13a1b9d39d6ef5ed162aaa29c09a745810e00bbe92e1045c1 + md5: cda7747f4398be8d1fb37362815917a7 depends: - - aws-c-common >=0.10.5,<0.10.6.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - aws-crt-cpp >=0.29.7,<0.29.8.0a0 - - libcurl >=8.10.1,<9.0a0 + - libcurl >=8.11.1,<9.0a0 - libgcc >=13 - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 2896174 - timestamp: 1733808114676 + size: 2920625 + timestamp: 1734093552712 - kind: conda name: aws-sdk-cpp version: 1.11.458 - build: h39838b8_3 - build_number: 3 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-h39838b8_3.conda - sha256: b5ef3a956937d61b59b9dd4b8c23eeb0bc254c37a97028a50c3ff6c8df399deb - md5: 3a6c8f65692febdf791bece561b371c8 + build: hc430e4a_4 + build_number: 4 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-hc430e4a_4.conda + sha256: 2dc09f6f9c49127b5f96e7535b64a9c521b944d76d8b7d03d48ae80257ac1cea + md5: aeefac461bea1f126653c1285cf5af08 depends: - - __osx >=11.0 - - aws-c-common >=0.10.5,<0.10.6.0a0 + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - aws-crt-cpp >=0.29.7,<0.29.8.0a0 - - libcurl >=8.10.1,<9.0a0 - - libcxx >=18 + - libcurl >=8.11.1,<9.0a0 + - libgcc >=13 + - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 2837854 - timestamp: 1733808787914 + size: 3060561 + timestamp: 1734093737431 - kind: conda name: aws-sdk-cpp version: 1.11.458 - build: h571fd1c_3 - build_number: 3 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-h571fd1c_3.conda - sha256: c2f38374a6f4dd804f76c8a071bc7f7d37dfb43e194eb93a473ff789460c011b - md5: 374cf1add8af327b15b1b1e4873f4955 + build: he0ff2e4_4 + build_number: 4 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-he0ff2e4_4.conda + sha256: 535b970aaa13be45f8cab8205c59f044b17364111c41a227f061775a5c834e18 + md5: 0981ed87098b149bdb7d99a4a3fd0e58 depends: - - __glibc >=2.17,<3.0.a0 - - aws-c-common >=0.10.5,<0.10.6.0a0 + - __osx >=11.0 + - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - aws-crt-cpp >=0.29.7,<0.29.8.0a0 - - libcurl >=8.10.1,<9.0a0 - - libgcc >=13 - - libstdcxx >=13 + - libcurl >=8.11.1,<9.0a0 + - libcxx >=18 - libzlib >=1.3.1,<2.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 3062994 - timestamp: 1733808211748 + size: 2826534 + timestamp: 1734094018287 - kind: conda name: azure-core-cpp version: 1.14.0 @@ -5923,76 +5920,76 @@ packages: timestamp: 1733219945697 - kind: conda name: max - version: 25.1.0.dev2024121305 + version: 25.1.0.dev2024121405 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024121305-release.conda - sha256: 0934ef5364dceceb5e0c786f92bf537a2414e898a00f481b8c8472db5e75f288 - md5: 7e5a852508eeef653e57b0e2d997d6f0 - depends: - - max-core ==25.1.0.dev2024121305 release - - max-python >=25.1.0.dev2024121305,<26.0a0 - - mojo-jupyter ==25.1.0.dev2024121305 release - - mblack ==25.1.0.dev2024121305 release + url: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024121405-release.conda + sha256: 6bacaa1d4f27d255a4c3907c28929865eeef5d45d64d61c3991b526aee14766d + md5: 1aec535b4731af73dd1b43472e7b6fa0 + depends: + - max-core ==25.1.0.dev2024121405 release + - max-python >=25.1.0.dev2024121405,<26.0a0 + - mojo-jupyter ==25.1.0.dev2024121405 release + - mblack ==25.1.0.dev2024121405 release license: LicenseRef-Modular-Proprietary - size: 9911 - timestamp: 1734067047897 + size: 9921 + timestamp: 1734153430066 - kind: conda name: max-core - version: 25.1.0.dev2024121305 + version: 25.1.0.dev2024121405 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024121305-release.conda - sha256: 7a345ab21e1bc5db74684e165dbe92172631b15637e5235e8b55b75aa717b36e - md5: a092cd9f73e38d8c5a8e7421a65d6ec2 + url: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024121405-release.conda + sha256: 14f953430105c8f2bb8f3bdf1e3fb7e9acbb20613ad47c9ac1e88462e0cc804d + md5: d88d69b1696ed9d5795c8d346bbd4311 depends: - - mblack ==25.1.0.dev2024121305 release + - mblack ==25.1.0.dev2024121405 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 247758730 - timestamp: 1734067130820 + size: 245597032 + timestamp: 1734153445516 - kind: conda name: max-core - version: 25.1.0.dev2024121305 + version: 25.1.0.dev2024121405 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024121305-release.conda - sha256: ad1ba0f0de5a52214dd1a6d9650b82db3bb87ffbdac4426db051c0d23264ee6a - md5: aae29a11aa59123729f374c236e9ae15 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024121405-release.conda + sha256: e3936f8021fc72f7f2673e2653e7bbd3d325fb44818b868bb49c24e5c1766eaf + md5: ea674f5d9232d89046ad99090cc195a7 depends: - - mblack ==25.1.0.dev2024121305 release + - mblack ==25.1.0.dev2024121405 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 251654128 - timestamp: 1734067047896 + size: 249408423 + timestamp: 1734153430064 - kind: conda name: max-core - version: 25.1.0.dev2024121305 + version: 25.1.0.dev2024121405 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024121305-release.conda - sha256: 1d4409c69d60650860c24c7833e7b64f5cca00a2fa7f3c8bc3fe69f27d0bb004 - md5: 9cac1246d0cda9ddf123b51868be3da4 + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024121405-release.conda + sha256: b6bb97d20f0f7371a647778d18fe78f839e37eef423542ae3f4e75b018ffd8db + md5: 0e2d8c487ef68866164af9dff49f5119 depends: - - mblack ==25.1.0.dev2024121305 release + - mblack ==25.1.0.dev2024121405 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 212260365 - timestamp: 1734067231658 + size: 214323771 + timestamp: 1734153633668 - kind: conda name: max-python - version: 25.1.0.dev2024121305 + version: 25.1.0.dev2024121405 build: 3.12release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024121305-3.12release.conda - sha256: 41468e52a6cfaab53f4f1f9227d37e94d97bf0037e3959b5738b17c841aa4853 - md5: 3d0543451b60f19e627a7a02e417dec7 + url: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024121405-3.12release.conda + sha256: 7ebdc67f58946084f7f4a657f0661899e61707b055f2046d9c18033f21f97008 + md5: 5a8cbae9c5257545459bfe7a262b62a6 depends: - - max-core ==25.1.0.dev2024121305 release + - max-core ==25.1.0.dev2024121405 release - python 3.12.* - fastapi - httpx @@ -6015,18 +6012,18 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 123962431 - timestamp: 1734067130830 + size: 122834581 + timestamp: 1734153445526 - kind: conda name: max-python - version: 25.1.0.dev2024121305 + version: 25.1.0.dev2024121405 build: 3.12release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024121305-3.12release.conda - sha256: 7f183e065b118867efe93b52a6e91afccb609bd53b78efc4566671b9a827bf1a - md5: 6a0e9f6376835e0267a6c4e74a126dc6 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024121405-3.12release.conda + sha256: b74a5c8945a97210778cda3cd9fe98f7404d2c9ff0b1a03738c77af6429b1523 + md5: 099dc5d1f85e4f883e72caef6f0c6e52 depends: - - max-core ==25.1.0.dev2024121305 release + - max-core ==25.1.0.dev2024121405 release - python 3.12.* - fastapi - httpx @@ -6049,18 +6046,18 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 127728932 - timestamp: 1734067047906 + size: 126606485 + timestamp: 1734153430075 - kind: conda name: max-python - version: 25.1.0.dev2024121305 + version: 25.1.0.dev2024121405 build: 3.12release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024121305-3.12release.conda - sha256: a273ba2302364c8a3163ce7f26dd7b787194c3c3f1bc9ed77e77b2edf483522d - md5: 09d62b97c29133fadc721fd9cb7b0388 + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024121405-3.12release.conda + sha256: 24a7ab99d936e5c28f597413e9e643fe34c46ba55916c1febcbe658e79a2ea9f + md5: 661ce5968d3cc1b11a67dfbf77e986b8 depends: - - max-core ==25.1.0.dev2024121305 release + - max-core ==25.1.0.dev2024121405 release - python 3.12.* - fastapi - httpx @@ -6083,17 +6080,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 112812970 - timestamp: 1734067231662 + size: 113414908 + timestamp: 1734153633671 - kind: conda name: mblack - version: 25.1.0.dev2024121305 + version: 25.1.0.dev2024121405 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121305-release.conda - sha256: abb1e77a5677ba3dff4645ce9d9867da248690f7a64badbd6678afcdb8ba3f35 - md5: 665d00da19a5c6902c00afa7c456a8da + url: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121405-release.conda + sha256: ea23ea9fdb019aa4dc05bcb1d1f526f77ce90a94baa3130d26ce71cad0a3647b + md5: 425b85251efa151234c9db33428ee55c depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -6103,8 +6100,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130799 - timestamp: 1734067047902 + size: 130792 + timestamp: 1734153430070 - kind: conda name: mdurl version: 0.1.2 @@ -6123,21 +6120,21 @@ packages: timestamp: 1733255681319 - kind: conda name: mojo-jupyter - version: 25.1.0.dev2024121305 + version: 25.1.0.dev2024121405 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024121305-release.conda - sha256: 4695f084795165a27b510a6b7c4174141cabad2f84c76c785529b0d6e9cc45ea - md5: 86028b0c146cc15b505e17670db7f139 + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024121405-release.conda + sha256: b232fe63e84736d519137d4c98067c886f8acc1cc38a6620a062f4eb079e751a + md5: b7d7fe85425c5120a665795eb2097aa9 depends: - - max-core ==25.1.0.dev2024121305 release + - max-core ==25.1.0.dev2024121405 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22933 - timestamp: 1734067047904 + size: 22934 + timestamp: 1734153430071 - kind: conda name: multidict version: 6.1.0 @@ -7264,22 +7261,20 @@ packages: timestamp: 1732254359451 - kind: conda name: pydantic-settings - version: 2.6.1 - build: pyh3cfb1c2_1 - build_number: 1 + version: 2.7.0 + build: pyh3cfb1c2_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.6.1-pyh3cfb1c2_1.conda - sha256: 8cc37e827f0098d07743f57f968283cefce6c11562d9241aba990acc23aedb56 - md5: deabf8afc8d987f20174ef0d8d9b549e + url: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.7.0-pyh3cfb1c2_0.conda + sha256: dd1ac7c8b6a189c8aa18f6c7df019d8f6df495300a259e3fbebdb542fc955c3b + md5: d9f19a7c4199249fa229891b573b6f9b depends: - pydantic >=2.7.0 - python >=3.9 - python-dotenv >=0.21.0 license: MIT - license_family: MIT - size: 30832 - timestamp: 1733851937909 + size: 31426 + timestamp: 1734127929720 - kind: conda name: pygments version: 2.18.0 From 8882e1b507cff885d4a70aaeb286919cfa1d6f48 Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Sat, 14 Dec 2024 12:13:14 -0800 Subject: [PATCH 098/509] [mojo-lang][LowerSemanticCF] Fix a bug with for/else lowering This changes for/else lowering to not multiply lower the 'else' block. SemanticCF lowering cannot run on pre-lowered operations, e.g. it will hork on pre-lowered finalies. Handle this by dancing around the IR transformation a bit more carefully. This fixes MOCO-1475 and fixes https://github.com/modularml/mojo/issues/3796 MODULAR_ORIG_COMMIT_REV_ID: 521dae77147f52a48d794ca20ff6047a498983cc --- docs/changelog.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/docs/changelog.md b/docs/changelog.md index 6babee4c83..15a2b2a1e0 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -83,5 +83,8 @@ what we publish. - The command `mojo debug --vscode` now sets the current working directory properly. +- [Issue #3796](https://github.com/modularml/mojo/issues/3796) - Compiler crash + handling for-else statement. + - The Mojo Language Server doesn't crash anymore on empty **init**.mojo files. [Issue #3826](https://github.com/modularml/mojo/issues/3826). From 000c0a091f409f3da83bce0a4feb46cfa5d0fd4a Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Sat, 14 Dec 2024 20:43:53 -0800 Subject: [PATCH 099/509] [mojo-stdlib] Modernize initializer calls. initializers return 'self', they don't take self as an argument. Modernize all calls to it, in preparation for making our behavior more strict. MODULAR_ORIG_COMMIT_REV_ID: a1ef5ff41abc46cbc1d8e4b7be9c983409477846 --- stdlib/src/builtin/file.mojo | 2 +- stdlib/src/collections/optional.mojo | 2 +- stdlib/src/collections/set.mojo | 4 ++-- stdlib/src/memory/owned_pointer.mojo | 2 +- stdlib/src/python/_bindings.mojo | 2 +- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/stdlib/src/builtin/file.mojo b/stdlib/src/builtin/file.mojo index f5f4e6e5f6..1692a3458d 100644 --- a/stdlib/src/builtin/file.mojo +++ b/stdlib/src/builtin/file.mojo @@ -85,7 +85,7 @@ struct FileHandle: path: The file path. mode: The mode to open the file in (the mode can be "r" or "w" or "rw"). """ - self.__init__(path.as_string_slice(), mode.as_string_slice()) + self = Self(path.as_string_slice(), mode.as_string_slice()) fn __init__(out self, path: StringSlice, mode: StringSlice) raises: """Construct the FileHandle using the file path and string. diff --git a/stdlib/src/collections/optional.mojo b/stdlib/src/collections/optional.mojo index 73518b55a5..0e318980e9 100644 --- a/stdlib/src/collections/optional.mojo +++ b/stdlib/src/collections/optional.mojo @@ -130,7 +130,7 @@ struct Optional[T: CollectionElement]( Args: other: The Optional to copy. """ - self.__copyinit__(other) + self = other # ===-------------------------------------------------------------------===# # Operator dunders diff --git a/stdlib/src/collections/set.mojo b/stdlib/src/collections/set.mojo index 9c017dbfe8..0defaa9f51 100644 --- a/stdlib/src/collections/set.mojo +++ b/stdlib/src/collections/set.mojo @@ -72,7 +72,7 @@ struct Set[T: KeyElement](Sized, Comparable, Hashable, Boolable): Args: elements: An existing set to copy. """ - self.__init__() + self = Self() for e in elements: self.add(e[]) @@ -83,7 +83,7 @@ struct Set[T: KeyElement](Sized, Comparable, Hashable, Boolable): Args: elements: A vector of elements to add to the set. """ - self.__init__() + self = Self() for e in elements: self.add(e[]) diff --git a/stdlib/src/memory/owned_pointer.mojo b/stdlib/src/memory/owned_pointer.mojo index 4dd473023c..0eb0c33a3c 100644 --- a/stdlib/src/memory/owned_pointer.mojo +++ b/stdlib/src/memory/owned_pointer.mojo @@ -86,7 +86,7 @@ struct OwnedPointer[T: AnyType]: Args: other: The OwnedPointer[] to copy. """ - self.__init__(copy_value=other[]) + self = OwnedPointer[T](copy_value=other[]) fn __moveinit__(out self, owned existing: Self): """Move this OwnedPointer[]. diff --git a/stdlib/src/python/_bindings.mojo b/stdlib/src/python/_bindings.mojo index f5e14cd329..2d0156aa70 100644 --- a/stdlib/src/python/_bindings.mojo +++ b/stdlib/src/python/_bindings.mojo @@ -174,7 +174,7 @@ fn empty_tp_init_wrapper[ # ------------------------------------------------ # TODO(MSTDL-950): Avoid forming ref through uninit pointee. - T.__init__(obj_ptr[]) + obj_ptr[] = T() return 0 except e: From cdeaa479aa8f52d2822732cd7b73d08a6dbb78a3 Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Sun, 15 Dec 2024 16:19:46 -0800 Subject: [PATCH 100/509] [mojo-stdlib] Modernize init calls. Initializers are moving to their out parameter being a result instead of begin a weird mutating argument. Upgrade soon-to-be invalid syntax to something that has always worked. MODULAR_ORIG_COMMIT_REV_ID: 778269b541364e3264c5dc4afbc526c3fef63a18 --- stdlib/src/builtin/simd.mojo | 2 +- stdlib/src/python/python_object.mojo | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/stdlib/src/builtin/simd.mojo b/stdlib/src/builtin/simd.mojo index 7bb4c061b6..0f2508229e 100644 --- a/stdlib/src/builtin/simd.mojo +++ b/stdlib/src/builtin/simd.mojo @@ -304,7 +304,7 @@ struct SIMD[type: DType, size: Int]( # Args: # other: The value to copy. # """ - # self.__copyinit__(other) + # self = other @always_inline("nodebug") @implicit diff --git a/stdlib/src/python/python_object.mojo b/stdlib/src/python/python_object.mojo index 42b2dc6bed..5fb1847f8f 100644 --- a/stdlib/src/python/python_object.mojo +++ b/stdlib/src/python/python_object.mojo @@ -252,7 +252,7 @@ struct PythonObject( fn __init__(out self): """Initialize the object with a `None` value.""" - self.__init__(None) + self = Self(None) fn __init__(out self, *, other: Self): """Copy the object. From c5c4943cbf92707fcd3290da39ea089aa010962a Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Sun, 15 Dec 2024 16:24:39 -0800 Subject: [PATCH 101/509] [mojo-stdlib] Remove pointless code. This removes some code that is problematic with other changes that looks like it is dead. `x|y|1` is always non-zero so the code in the "then" block isn't reachable. I filed MSTDL-1064 to investigate this. MODULAR_ORIG_COMMIT_REV_ID: f091dcf225cf78256f6d218893123f43c73ecb97 --- stdlib/src/builtin/_format_float.mojo | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/stdlib/src/builtin/_format_float.mojo b/stdlib/src/builtin/_format_float.mojo index 95d7e8a30e..bbbc41f239 100644 --- a/stdlib/src/builtin/_format_float.mojo +++ b/stdlib/src/builtin/_format_float.mojo @@ -317,15 +317,8 @@ fn _to_decimal[ while True: if r < deltai: - # Exclude the right endpoint if necessary - if ( - r - | Scalar[CarrierDType](not z_result.is_integer) - | Scalar[CarrierDType](1) - ) == 0: - sig -= 1 - r = FP[type].big_divisor - break + # TODO(MSTDL-1064): Exclude the right endpoint if necessary + pass elif r > deltai: break else: From 6c7310300373b81578f9a6808a528879d4fdbbc3 Mon Sep 17 00:00:00 2001 From: Arthur Evans Date: Mon, 16 Dec 2024 11:56:07 -0800 Subject: [PATCH 102/509] [Docs] Copyedit API doc for memory package. Fixes DOCS-606. MODULAR_ORIG_COMMIT_REV_ID: 08ae06edd62799e04926efe1c27a2b33568227db --- stdlib/src/memory/__init__.mojo | 3 +- stdlib/src/memory/owned_pointer.mojo | 56 ++++++++++++++++----------- stdlib/src/memory/span.mojo | 32 +++++++-------- stdlib/src/memory/unsafe.mojo | 33 +++++++++++++++- stdlib/src/memory/unsafe_pointer.mojo | 15 +++---- 5 files changed, 90 insertions(+), 49 deletions(-) diff --git a/stdlib/src/memory/__init__.mojo b/stdlib/src/memory/__init__.mojo index 2717a5127a..80684d45b5 100644 --- a/stdlib/src/memory/__init__.mojo +++ b/stdlib/src/memory/__init__.mojo @@ -10,7 +10,8 @@ # See the License for the specific language governing permissions and # limitations under the License. # ===----------------------------------------------------------------------=== # -"""Implements the memory package.""" +"""The memory package provides several pointer types, as well +as utility functions for dealing with memory.""" from .arc import ArcPointer from .memory import memcmp, memcpy, memset, memset_zero, stack_allocation diff --git a/stdlib/src/memory/owned_pointer.mojo b/stdlib/src/memory/owned_pointer.mojo index 0eb0c33a3c..fde72fa4bd 100644 --- a/stdlib/src/memory/owned_pointer.mojo +++ b/stdlib/src/memory/owned_pointer.mojo @@ -10,6 +10,15 @@ # See the License for the specific language governing permissions and # limitations under the License. # ===----------------------------------------------------------------------=== # +"""Implements `OwnedPointer`, a safe, single-ownership smart pointer. + +You can import these APIs from the `memory` package. For example: + +```mojo +from memory import OwnedPointer +``` +""" + from memory import UnsafePointer, memcpy, stack_allocation @@ -25,7 +34,7 @@ struct OwnedPointer[T: AnyType]: pointers](/mojo/manual/pointers/) in the Mojo Manual. Parameters: - T: The type to be stored in the OwnedPointer[]. + T: The type to be stored in the `OwnedPointer`. """ var _inner: UnsafePointer[T, address_space = AddressSpace.GENERIC] @@ -35,13 +44,13 @@ struct OwnedPointer[T: AnyType]: # ===-------------------------------------------------------------------===# fn __init__[T: Movable](mut self: OwnedPointer[T], owned value: T): - """Construct a new OwnedPointer[] by moving the passed value into a new backing allocation. + """Construct a new `OwnedPointer` by moving the passed value into a new backing allocation. Parameters: T: The type of the data to store. It is restricted to `Movable` here to allow efficient move construction. Args: - value: The value to move into the OwnedPointer[]. + value: The value to move into the `OwnedPointer`. """ self._inner = UnsafePointer[T].alloc(1) self._inner.init_pointee_move(value^) @@ -49,13 +58,14 @@ struct OwnedPointer[T: AnyType]: fn __init__[ T: ExplicitlyCopyable ](mut self: OwnedPointer[T], *, copy_value: T): - """Construct a new OwnedPointer[] by explicitly copying the passed value into a new backing allocation. + """Construct a new `OwnedPointer` by explicitly copying the passed value into a new backing allocation. Parameters: - T: The type of the data to store. + T: The type of the data to store, which must be + `ExplicitlyCopyable`. Args: - copy_value: The value to explicitly copy into the OwnedPointer[]. + copy_value: The value to explicitly copy into the `OwnedPointer`. """ self._inner = UnsafePointer[T].alloc(1) self._inner.init_pointee_explicit_copy(copy_value) @@ -63,14 +73,14 @@ struct OwnedPointer[T: AnyType]: fn __init__[ T: Copyable, U: NoneType = None ](mut self: OwnedPointer[T], value: T): - """Construct a new OwnedPointer[] by copying the passed value into a new backing allocation. + """Construct a new `OwnedPointer` by copying the passed value into a new backing allocation. Parameters: T: The type of the data to store. U: A dummy type parameter, to lower the selection priority of this ctor. Args: - value: The value to copy into the OwnedPointer[]. + value: The value to copy into the `OwnedPointer`. """ self._inner = UnsafePointer[T].alloc(1) self._inner.init_pointee_copy(value) @@ -78,18 +88,18 @@ struct OwnedPointer[T: AnyType]: fn __init__[ T: ExplicitlyCopyable ](mut self: OwnedPointer[T], *, other: OwnedPointer[T],): - """Construct a new OwnedPointer[] by explicitly copying the value from another OwnedPointer[]. + """Construct a new `OwnedPointer` by explicitly copying the value from another `OwnedPointer`. Parameters: T: The type of the data to store. Args: - other: The OwnedPointer[] to copy. + other: The `OwnedPointer` to copy. """ self = OwnedPointer[T](copy_value=other[]) fn __moveinit__(out self, owned existing: Self): - """Move this OwnedPointer[]. + """Move this `OwnedPointer`. Args: existing: The value to move. @@ -112,7 +122,7 @@ struct OwnedPointer[T: AnyType]: """Returns a reference to the pointers's underlying data with parametric mutability. Returns: - A reference to the data underlying the OwnedPointer[]. + A reference to the data underlying the `OwnedPointer`. """ # This should have a widening conversion here that allows # the mutable ref that is always (potentially unsafely) @@ -126,25 +136,25 @@ struct OwnedPointer[T: AnyType]: # ===-------------------------------------------------------------------===# fn unsafe_ptr(self) -> UnsafePointer[T]: - """UNSAFE: returns the backing pointer for this OwnedPointer[]. + """UNSAFE: returns the backing pointer for this `OwnedPointer`. Returns: - An UnsafePointer to the backing allocation for this OwnedPointer[]. + An UnsafePointer to the backing allocation for this `OwnedPointer`. """ return self._inner fn take[T: Movable](owned self: OwnedPointer[T]) -> T: - """Move the value within the OwnedPointer[] out of it, consuming the - OwnedPointer[] in the process. + """Move the value within the `OwnedPointer` out of it, consuming the + `OwnedPointer` in the process. Parameters: - T: The type of the data backing this OwnedPointer[]. `take()` only exists for T: Movable + T: The type of the data backing this `OwnedPointer`. `take()` only exists for `T: Movable` since this consuming operation only makes sense for types that you want to avoid copying. - For types that are Copy or ExplicitlyCopy but are not Movable, you can copy them through + For types that are `Copyable` or `ExplicitlyCopyable` but are not `Movable`, you can copy them through `__getitem__` as in `var v = some_ptr_var[]`. Returns: - The data that is (was) backing the OwnedPointer[]. + The data that is (was) backing the `OwnedPointer`. """ var r = self._inner.take_pointee() self._inner.free() @@ -156,13 +166,13 @@ struct OwnedPointer[T: AnyType]: """Take ownership over the heap allocated pointer backing this `OwnedPointer`. - Safety: + **Safety:** This function is not unsafe to call, as a memory leak is not considered unsafe. - However, to avoid a memory leak, callers should ensure that the - returned pointer is eventually deinitialized and deallocated. - Failure to do so will leak memory. + However, to avoid a memory leak, callers should ensure that the + returned pointer is eventually deinitialized and deallocated. + Failure to do so will leak memory. Returns: The pointer owned by this instance. diff --git a/stdlib/src/memory/span.mojo b/stdlib/src/memory/span.mojo index fcdf2d7aa9..2a0c2d020b 100644 --- a/stdlib/src/memory/span.mojo +++ b/stdlib/src/memory/span.mojo @@ -11,7 +11,7 @@ # limitations under the License. # ===----------------------------------------------------------------------=== # -"""Implements the Span type. +"""Implements the `Span` type. You can import these APIs from the `memory` module. For example: @@ -56,8 +56,8 @@ struct _SpanIter[ Parameters: mut: Whether the reference to the span is mutable. T: The type of the elements in the span. - origin: The origin of the Span. - forward: The iteration direction. `False` is backwards. + origin: The origin of the `Span`. + forward: The iteration direction. False is backwards. """ var index: Int @@ -99,7 +99,7 @@ struct Span[ T: CollectionElement, origin: Origin[mut], ](CollectionElementNew): - """A non owning view of contiguous data. + """A non-owning view of contiguous data. Parameters: mut: Whether the span is mutable. @@ -128,10 +128,10 @@ struct Span[ @always_inline fn __init__(out self, *, other: Self): - """Explicitly construct a deep copy of the provided Span. + """Explicitly construct a copy of the provided `Span`. Args: - other: The Span to copy. + other: The `Span` to copy. """ self._data = other._data self._len = other._len @@ -139,7 +139,7 @@ struct Span[ @always_inline @implicit fn __init__(out self, ref [origin]list: List[T, *_]): - """Construct a Span from a List. + """Construct a `Span` from a `List`. Args: list: The list to which the span refers. @@ -151,10 +151,10 @@ struct Span[ fn __init__[ size: Int, // ](mut self, ref [origin]array: InlineArray[T, size]): - """Construct a Span from an InlineArray. + """Construct a `Span` from an `InlineArray`. Parameters: - size: The size of the InlineArray. + size: The size of the `InlineArray`. Args: array: The array to which the span refers. @@ -218,19 +218,19 @@ struct Span[ @always_inline fn __iter__(self) -> _SpanIter[T, origin]: - """Get an iterator over the elements of the Span. + """Get an iterator over the elements of the `Span`. Returns: - An iterator over the elements of the Span. + An iterator over the elements of the `Span`. """ return _SpanIter(0, self) @always_inline fn __reversed__(self) -> _SpanIter[T, origin, forward=False]: - """Iterate backwards over the Span. + """Iterate backwards over the `Span`. Returns: - A reversed iterator of the Span elements. + A reversed iterator of the `Span` elements. """ return _SpanIter[forward=False](len(self), self) @@ -297,10 +297,10 @@ struct Span[ fn as_ref(self) -> Pointer[T, origin]: """ - Gets a Pointer to the first element of this slice. + Gets a `Pointer` to the first element of this span. Returns: - A Pointer pointing at the first element of this slice. + A `Pointer` pointing at the first element of this span. """ return Pointer[T, origin].address_of(self._data[0]) @@ -316,7 +316,7 @@ struct Span[ origin: The inferred mutable origin of the data within the Span. Args: - other: The Span to copy all elements from. + other: The `Span` to copy all elements from. """ debug_assert(len(self) == len(other), "Spans must be of equal length") for i in range(len(self)): diff --git a/stdlib/src/memory/unsafe.mojo b/stdlib/src/memory/unsafe.mojo index 450c18d199..2d83992bfb 100644 --- a/stdlib/src/memory/unsafe.mojo +++ b/stdlib/src/memory/unsafe.mojo @@ -10,7 +10,7 @@ # See the License for the specific language governing permissions and # limitations under the License. # ===----------------------------------------------------------------------=== # -"""Implements types that work with unsafe pointers. +"""Provides utility functions for unsafe manipulation of SIMD values. You can import these APIs from the `memory` package. For example: @@ -35,6 +35,23 @@ fn bitcast[ ](val: SIMD[type, width]) -> SIMD[new_type, new_width]: """Bitcasts a SIMD value to another SIMD value. + For a discussion of byte order, see + [Converting data: bitcasting and byte order](/mojo/manual/pointers/unsafe-pointers#converting-data-bitcasting-and-byte-order) + in the Mojo Manual. + + Examples: + + The following example uses `bitcast` to break a 32-bit integer into a vector + of four 8-bit integers: + + ```mojo + from memory import bitcast + + one = SIMD[DType.uint32, 1](4631) + many = bitcast[DType.uint8, 4](one) + print(one, many) # 4631 [23, 18, 0, 0] + ``` + Constraints: The bitwidth of the two types must be the same. @@ -84,7 +101,19 @@ fn pack_bits[ width: Int, //, new_type: DType = _uint(width), ](val: SIMD[DType.bool, width]) -> Scalar[new_type]: - """Packs a SIMD bool into an integer. + """Packs a SIMD vector of `bool` values into an integer. + + Examples: + + This example packs a vector of 8 `bool` values into a single 8-bit integer. + + ```mojo + from memory import pack_bits + + flags = SIMD[DType.bool, 8](1, 1, 0, 1, 0, 0, 0, 0) + i = pack_bits[DType.uint8](flags) + print(flags, i) # [True, True, False, True, False, False, False, False] 11 + ``` Constraints: The width of the bool vector must be the same as the bitwidth of the diff --git a/stdlib/src/memory/unsafe_pointer.mojo b/stdlib/src/memory/unsafe_pointer.mojo index e6e3809b64..f23ed25618 100644 --- a/stdlib/src/memory/unsafe_pointer.mojo +++ b/stdlib/src/memory/unsafe_pointer.mojo @@ -1141,13 +1141,14 @@ struct UnsafePointer[ This transfers the value out of `self` and into `dest` using at most one `__moveinit__()` call. - Safety: - * `self` must be non-null - * `self` must contain a valid, initialized instance of `T` - * `dst` must not be null - * The contents of `dst` should be uninitialized. If `dst` was - previously written with a valid value, that value will be be - overwritten and its destructor will NOT be run. + **Safety:** + + * `self` must be non-null + * `self` must contain a valid, initialized instance of `T` + * `dst` must not be null + * The contents of `dst` should be uninitialized. If `dst` was + previously written with a valid value, that value will be be + overwritten and its destructor will NOT be run. Parameters: T: The type the pointer points to, which must be `Movable`. From 7e7c07f5356efb73fbd57f311c6467e29fd58775 Mon Sep 17 00:00:00 2001 From: Arthur Evans Date: Mon, 16 Dec 2024 12:28:57 -0800 Subject: [PATCH 103/509] [Docs] Changelog: update contributors. MODULAR_ORIG_COMMIT_REV_ID: 55530a200ea933447f39f035553f7350cf5be76a --- docs/changelog-released.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/changelog-released.md b/docs/changelog-released.md index a0d9609952..b420128e7e 100644 --- a/docs/changelog-released.md +++ b/docs/changelog-released.md @@ -799,7 +799,8 @@ Special thanks to our community contributors: [@rd4com](https://github.com/rd4com), [@fknfilewalker](https://github.com/fknfilewalker), [@gabrieldemarmiesse](https://github.com/gabrieldemarmiesse), -[@avitkauskas](https://github.com/avitkauskas) +[@avitkauskas](https://github.com/avitkauskas), and +[@martinvuyk](https://github.com/martinvuyk). ## v24.5 (2024-09-13) From 8427a10959c807aeab7a9cfa898e7a2a2c40c438 Mon Sep 17 00:00:00 2001 From: Connor Gray Date: Mon, 16 Dec 2024 15:13:22 -0600 Subject: [PATCH 104/509] [stdlib] polish: Rename `Pointer.is_mutable` to `mut` MODULAR_ORIG_COMMIT_REV_ID: 4c849e42e6d13da7d3909461a1dcf78db57aefff --- stdlib/src/memory/pointer.mojo | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/stdlib/src/memory/pointer.mojo b/stdlib/src/memory/pointer.mojo index 1ffd5528f8..dca95022cc 100644 --- a/stdlib/src/memory/pointer.mojo +++ b/stdlib/src/memory/pointer.mojo @@ -298,9 +298,9 @@ struct AddressSpace(EqualityComparable, Stringable, Writable): @value @register_passable("trivial") struct Pointer[ - is_mutable: Bool, //, + mut: Bool, //, type: AnyType, - origin: Origin[is_mutable], + origin: Origin[mut], address_space: AddressSpace = AddressSpace.GENERIC, ](CollectionElementNew, Stringable): """Defines a non-nullable safe pointer. @@ -309,7 +309,7 @@ struct Pointer[ pointers](/mojo/manual/pointers/) in the Mojo Manual. Parameters: - is_mutable: Whether the pointee data may be mutated through this. + mut: Whether the pointee data may be mutated through this. type: Type of the underlying data. origin: The origin of the pointer. address_space: The address space of the pointee data. From 403234f6a3ee0ee57500ba56ef579723eed16411 Mon Sep 17 00:00:00 2001 From: Jack Clayton Date: Tue, 17 Dec 2024 07:47:34 +1000 Subject: [PATCH 105/509] [stdlib] Simplify while loop in format_float Remove unnecessary loop to simplify code. MODULAR_ORIG_COMMIT_REV_ID: 3e93088be52fb4bc7a013fd9dc11acef1b9a98fe --- stdlib/src/builtin/_format_float.mojo | 24 +++++++++--------------- 1 file changed, 9 insertions(+), 15 deletions(-) diff --git a/stdlib/src/builtin/_format_float.mojo b/stdlib/src/builtin/_format_float.mojo index bbbc41f239..17f30d7de9 100644 --- a/stdlib/src/builtin/_format_float.mojo +++ b/stdlib/src/builtin/_format_float.mojo @@ -315,23 +315,17 @@ fn _to_decimal[ ](z_result.integer_part) var r = (z_result.integer_part - FP[type].big_divisor * sig) - while True: - if r < deltai: - # TODO(MSTDL-1064): Exclude the right endpoint if necessary - pass - elif r > deltai: - break - else: - # r == deltai, compare fractional parts - var x_result = _compute_mul_parity( - (two_fc - 1).cast[DType.uint64](), cache_index, beta - ) - if not (x_result.parity | x_result.is_integer): - break - # If no break conditions were met + if r < deltai: exp = minus_k + FP[type].kappa + 1 return _remove_trailing_zeros(sig, exp) - + # compare fractional parts if r == deltai + if r == deltai: + var x_result = _compute_mul_parity( + (two_fc - 1).cast[DType.uint64](), cache_index, beta + ) + if x_result.parity | x_result.is_integer: + exp = minus_k + FP[type].kappa + 1 + return _remove_trailing_zeros(sig, exp) ####################################################### # Step 3: Find the significand with the smaller divisor ####################################################### From 4a4f3d0545c66569670b6d0ed0725d115320a01e Mon Sep 17 00:00:00 2001 From: abdul dakkak Date: Mon, 16 Dec 2024 15:51:21 -0800 Subject: [PATCH 106/509] [stdlib] Update hash function type width calculation MODULAR_ORIG_COMMIT_REV_ID: d2746c545d3b29ca1ddd45fb0e450d21dfa2ff32 --- stdlib/src/hashlib/hash.mojo | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/stdlib/src/hashlib/hash.mojo b/stdlib/src/hashlib/hash.mojo index 5eddfc21b8..6b5c028796 100644 --- a/stdlib/src/hashlib/hash.mojo +++ b/stdlib/src/hashlib/hash.mojo @@ -27,7 +27,7 @@ There are a few main tools in this module: import random from collections import InlineArray -from sys import bitwidthof, simdwidthof +from sys import bitwidthof, sizeof, simdwidthof from sys.ffi import _Global from builtin.dtype import _uint_type_of_width @@ -227,7 +227,7 @@ fn hash(bytes: UnsafePointer[UInt8], n: Int) -> UInt: hash collision statistical properties for common data structures. """ alias type = DType.uint64 - alias type_width = bitwidthof[type]() // bitwidthof[DType.int8]() + alias type_width = sizeof[type]() alias simd_width = simdwidthof[type]() # stride is the byte length of the whole SIMD vector alias stride = type_width * simd_width From 9e38ec35fea5439608564fe63a2a7f5dba03bf8e Mon Sep 17 00:00:00 2001 From: abdul dakkak Date: Mon, 16 Dec 2024 17:06:17 -0800 Subject: [PATCH 107/509] [******][GPU] Use str for WGMMA error constraints (#52958) Fixes MSTDL-1065 and uses str in the WGMMA constraints BEGIN_PUBLIC [******][GPU] Use str for WGMMA error constraints END_PubLIC MODULAR_ORIG_COMMIT_REV_ID: aa733aecbd66434a70082ded0337ca8f6c0c535e --- stdlib/src/utils/index.mojo | 62 ++++++++++++++----------------- stdlib/test/utils/test_index.mojo | 17 ++++++--- 2 files changed, 40 insertions(+), 39 deletions(-) diff --git a/stdlib/src/utils/index.mojo b/stdlib/src/utils/index.mojo index 0ea7685fe4..337e195d3b 100644 --- a/stdlib/src/utils/index.mojo +++ b/stdlib/src/utils/index.mojo @@ -723,52 +723,46 @@ struct IndexList[ ) @no_inline - fn __str__(self) -> String: - """Get the tuple as a string. + fn write_to[W: Writer](self, mut writer: W): + """ + Formats this IndexList value to the provided Writer. - Returns: - A string representation. + Parameters: + W: A type conforming to the Writable trait. + + Args: + writer: The object to write to. """ - # Reserve space for opening and closing parentheses, plus each element - # and its trailing commas. - var buf = String._buffer_type() - var initial_buffer_size = 2 - for i in range(size): - initial_buffer_size += _calc_initial_buffer_size(self[i]) + 2 - buf.reserve(initial_buffer_size) - # Print an opening `(`. - buf.size += _snprintf["("](buf.data, 2) + writer.write("(") + for i in range(size): - # Print separators between each element. if i != 0: - buf.size += _snprintf[", "](buf.data + buf.size, 3) - buf.size += _snprintf[_get_dtype_printf_format[DType.index]()]( - buf.data + buf.size, _calc_initial_buffer_size(self[i]), self[i] - ) + writer.write(", ") + + var element = self[i] + + @parameter + if element_bitwidth == 32: + writer.write(Int32(element)) + else: + writer.write(Int64(element)) + # Single element tuples should be printed with a trailing comma. + @parameter if size == 1: - buf.size += _snprintf[","](buf.data + buf.size, 2) - # Print a closing `)`. - buf.size += _snprintf[")"](buf.data + buf.size, 2) + writer.write(",") - buf.size += 1 # for the null terminator. - return buf^ + writer.write(")") @no_inline - fn write_to[W: Writer](self, mut writer: W): - """ - Formats this int tuple to the provided Writer. - - Parameters: - W: A type conforming to the Writable trait. + fn __str__(self) -> String: + """Get the tuple as a string. - Args: - writer: The object to write to. + Returns: + A string representation. """ - - # TODO: Optimize this to avoid the intermediate String allocation. - writer.write(str(self)) + return String.write(self) @always_inline fn cast[ diff --git a/stdlib/test/utils/test_index.mojo b/stdlib/test/utils/test_index.mojo index d262c9fdbe..500fdcf259 100644 --- a/stdlib/test/utils/test_index.mojo +++ b/stdlib/test/utils/test_index.mojo @@ -25,6 +25,10 @@ def test_basics(): def test_cast(): + assert_equal( + str(IndexList[1](1)), + "(1,)", + ) assert_equal( str(IndexList[2](1, 2).cast[DType.int32]()), "(1, 2)", @@ -44,13 +48,16 @@ def test_cast(): "(1, -2)", ) assert_equal( - str( - IndexList[2, element_bitwidth=32](1, 2).cast[ - element_bitwidth=64, unsigned=True - ]() - ), + str(IndexList[2, element_bitwidth=32](1, 2)), "(1, 2)", ) + alias s = str( + IndexList[2, element_bitwidth=32](1, 2).cast[ + element_bitwidth=64, unsigned=True + ]() + ) + assert_equal(s, "(1, 2)") + assert_equal(StringLiteral.get[s](), "(1, 2)") def test_index(): From 2db5e3d445557eb964f199540d154e9f9f8d1517 Mon Sep 17 00:00:00 2001 From: modularbot Date: Tue, 17 Dec 2024 16:40:19 +0000 Subject: [PATCH 108/509] Update lockfiles to point to latest nightly version: 25.1.0.dev2024121705 --- examples/life/magic.lock | 1181 ++++++++++++++++----------------- examples/magic.lock | 1077 +++++++++++++++--------------- examples/notebooks/magic.lock | 1077 +++++++++++++++--------------- examples/operators/magic.lock | 1077 +++++++++++++++--------------- magic.lock | 1077 +++++++++++++++--------------- 5 files changed, 2644 insertions(+), 2845 deletions(-) diff --git a/examples/life/magic.lock b/examples/life/magic.lock index c9b212466d..5a7928b9c1 100644 --- a/examples/life/magic.lock +++ b/examples/life/magic.lock @@ -10,20 +10,20 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.10-py312h178313f_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/alsa-lib-1.2.13-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aom-3.9.1-hac33072_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/attr-2.5.1-h166bdaf_1.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.3.0-pyh71513ae_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-hb921021_15.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.1-h1a47875_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.10.6-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.3.0-h4e1184b_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.0-h7959bf6_11.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.2-hefd7a92_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-hbf5b6a4_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-h831e299_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h11f4f37_12.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.7-hf454442_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.1-h4e1184b_4.conda @@ -38,10 +38,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/backoff-2.2.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py312h2ec8cdc_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.3-hb9d3cd8_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2024.8.30-hbcca054_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.4-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2024.12.14-hbcca054_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.2-h3394656_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.8.30-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.12.14-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py312h06ac9bb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_1.conda @@ -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.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.7-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 @@ -87,7 +87,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-7.0.2-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/jack-1.9.22-h7c63dc7_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda @@ -106,16 +106,16 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libasprintf-0.22.5-he8f35ee_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libasprintf-devel-0.22.5-he8f35ee_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libavif16-1.1.1-h1909e37_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-25_linux64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-26_linux64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.1.0-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libcap-2.71-h39aace5_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-25_linux64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-26_linux64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libcrc32c-1.1.2-h9c3ff4c_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.11.1-h332b0f4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libdb-6.2.32-h9c3ff4c_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.22-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.23-h4ddbbb0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20191231-he28a2e2_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libevent-2.1.12-hf998b51_1.conda @@ -137,7 +137,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.67.1-hc2c308b_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-hd590300_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-25_linux64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-26_linux64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.3-hb9d3cd8_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libmad-0.15.1b-h0b41bf4_1001.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda @@ -157,7 +157,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsystemd0-256.9-h0b6a36f_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libthrift-0.21.0-h0e7cc3e_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hc4654cb_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hd9ff511_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.9.0-hb9d3cd8_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.49.2-hb9d3cd8_0.conda @@ -170,12 +170,12 @@ 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-25.1.0.dev2024121405-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024121405-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024121405-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121405-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024121705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024121705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024121705-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121705-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-25.1.0.dev2024121405-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024121705-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_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.15-py312h98912ed_1.conda @@ -184,13 +184,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.3-h5fbd93e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.0-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.28.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.28.2-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.28.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.29.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.29.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.29.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-prometheus-1.12.0rc1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.28.2-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.28.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh3cfb1c2_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.29.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.29.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.50b0-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/opusfile-0.12-h3358134_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/orc-2.0.3-h97ab989_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda @@ -221,7 +221,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.20-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python-xxhash-3.5.0-py312h66e93f0_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda @@ -235,13 +235,12 @@ environments: - 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/s2n-1.5.10-hb5b8611_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 - conda: https://conda.anaconda.org/conda-forge/linux-64/sdl2_image-2.8.2-h06ee604_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/sdl2_mixer-2.6.3-h8830914_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/sdl2_ttf-2.22.0-h287479f_3.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 - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-h8bd8927_1.conda @@ -262,20 +261,20 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.34.0-pyh31011fe_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.34.0-h31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/uvloop-0.21.0-py312h66e93f0_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/watchfiles-1.0.3-py312h12e396e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/websockets-14.1-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.17.0-py312h66e93f0_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libice-1.1.1-hb9d3cd8_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libsm-1.2.4-he73a12e_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libice-1.1.2-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libsm-1.2.5-he73a12e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libx11-1.8.10-h4f16b4b_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.11-hb9d3cd8_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxext-1.3.6-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxfixes-6.0.1-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrender-0.9.11-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrender-0.9.12-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xxhash-0.8.2-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.18.3-py312h66e93f0_0.conda @@ -287,20 +286,20 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.10-py312hcc812fe_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/alsa-lib-1.2.13-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aom-3.9.1-hcccb83c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/attr-2.5.1-h4e544f5_1.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.3.0-pyh71513ae_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-h2cb9fb3_15.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.1-h740c5af_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-common-0.10.6-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-compression-0.3.0-h0f0193d_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-event-stream-0.5.0-hcbd8f92_11.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.2-h3df160d_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-h92bf595_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-h1a307af_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h5f50e26_12.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.7-h2080895_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.1-h0f0193d_4.conda @@ -315,10 +314,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/backoff-2.2.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/brotli-python-1.1.0-py312h6f74592_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h68df207_7.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/c-ares-1.34.3-h86ecc28_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2024.8.30-hcefe29a_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/c-ares-1.34.4-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2024.12.14-hcefe29a_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cairo-1.18.2-h83712da_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.8.30-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.12.14-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cffi-1.17.1-py312hac81daf_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_1.conda @@ -334,7 +333,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.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.7-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 @@ -364,7 +363,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-7.0.2-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/jack-1.9.22-h5c6c0ed_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda @@ -383,16 +382,16 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libasprintf-0.22.5-h87f4aca_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libasprintf-devel-0.22.5-h87f4aca_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libavif16-1.1.1-h3b0c220_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-25_linuxaarch64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-26_linuxaarch64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlicommon-1.1.0-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlidec-1.1.0-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlienc-1.1.0-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcap-2.71-h51d75a7_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-25_linuxaarch64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-26_linuxaarch64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcrc32c-1.1.2-h01db608_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcurl-8.11.1-h6702fde_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libdb-6.2.32-h01db608_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libdeflate-1.22-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libdeflate-1.23-h5e3c512_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20191231-he28a2e2_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libev-4.33-h31becfc_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libevent-2.1.12-h4ba1bb4_1.conda @@ -414,7 +413,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgrpc-1.67.1-h36c5df4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libiconv-1.17-h31becfc_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libjpeg-turbo-3.0.0-h31becfc_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-25_linuxaarch64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-26_linuxaarch64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.3-h86ecc28_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libmad-0.15.1b-hb4cce97_1001.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnghttp2-1.64.0-hc8609a4_0.conda @@ -434,7 +433,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsystemd0-256.9-ha536d29_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libthrift-0.21.0-h154c74f_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.0-hca96517_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.0-h88f7998_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.9.0-h86ecc28_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuv-1.49.2-h86ecc28_0.conda @@ -447,12 +446,12 @@ 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-25.1.0.dev2024121405-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024121405-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024121405-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121405-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024121705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024121705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024121705-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121705-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-25.1.0.dev2024121405-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024121705-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_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.15-py312hdd3e373_1.conda @@ -461,13 +460,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openjpeg-2.5.3-h3f56577_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.0-h86ecc28_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.28.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.28.2-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.28.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.29.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.29.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.29.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-prometheus-1.12.0rc1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.28.2-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.28.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh3cfb1c2_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.29.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.29.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.50b0-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/opusfile-0.12-hf55b2d5_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/orc-2.0.3-h3c55218_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda @@ -498,7 +497,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.20-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-xxhash-3.5.0-py312h52516f5_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.12-5_cp312.conda @@ -512,13 +511,12 @@ environments: - 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/s2n-1.5.10-h5df210e_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 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sdl2_image-2.8.2-hd95cb85_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sdl2_mixer-2.6.3-h422cae6_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sdl2_ttf-2.22.0-hb1608df_3.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 - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-hd4fb6f5_1.conda @@ -539,20 +537,20 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.34.0-pyh31011fe_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.34.0-h31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/uvloop-0.21.0-py312hb2c0f52_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/watchfiles-1.0.3-py312h8cbf658_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/websockets-14.1-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/wrapt-1.17.0-py312hb2c0f52_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libice-1.1.1-h57736b2_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libsm-1.2.4-hbac51e1_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libice-1.1.2-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libsm-1.2.5-h0808dbd_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libx11-1.8.10-hca56bd8_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxau-1.0.11-h86ecc28_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxau-1.0.12-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxdmcp-1.1.5-h57736b2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxext-1.3.6-h57736b2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxfixes-6.0.1-h57736b2_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxrender-0.9.11-h86ecc28_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxrender-0.9.12-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xxhash-0.8.2-h31becfc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yaml-0.2.5-hf897c2e_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.18.3-py312hb2c0f52_0.conda @@ -563,18 +561,18 @@ environments: osx-arm64: - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.10-py312h998013c_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aom-3.9.1-h7bae524_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.3.0-pyh71513ae_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-h8bc59a9_15.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.1-hc8a0bd2_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.10.6-h5505292_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-compression-0.3.0-hc8a0bd2_5.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.0-h54f970a_11.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.2-h96aa502_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-haba67d1_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-haba67d1_5.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h24f418c_12.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.7-h1be5864_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.1-hc8a0bd2_4.conda @@ -589,10 +587,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/backoff-2.2.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py312hde4cb15_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.3-h5505292_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2024.8.30-hf0a4a13_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.4-h5505292_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2024.12.14-hf0a4a13_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cairo-1.18.2-h6a3b0d2_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.8.30-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.12.14-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.1-py312h0fad829_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_1.conda @@ -606,7 +604,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.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.7-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 @@ -636,7 +634,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-7.0.2-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda @@ -652,15 +650,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libasprintf-0.22.5-h8414b35_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libasprintf-devel-0.22.5-h8414b35_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libavif16-1.1.1-h45b7238_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-25_osxarm64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-26_osxarm64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.1.0-hd74edd7_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.1.0-hd74edd7_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlienc-1.1.0-hd74edd7_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-25_osxarm64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-26_osxarm64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcrc32c-1.1.2-hbdafb3b_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.11.1-h73640d1_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.5-ha82da77_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.22-hd74edd7_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.23-hec38601_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20191231-hc8eb9b7_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libev-4.33-h93a5062_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libevent-2.1.12-h2757513_1.conda @@ -679,7 +677,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libintl-0.22.5-h8414b35_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libintl-devel-0.22.5-h8414b35_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.0.0-hb547adb_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-25_osxarm64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-26_osxarm64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.3-h39f12f2_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libmad-0.15.1b-h1a8c8d9_1001.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.64.0-h6d7220d_0.conda @@ -695,7 +693,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.47.2-h3f77e49_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.1-h9cc3647_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libthrift-0.21.0-h64651cc_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-ha962b0a_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-h551f018_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.9.0-h5505292_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libuv-1.49.2-h7ab814d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libvorbis-1.3.7-h9f76cd9_0.tar.bz2 @@ -707,12 +705,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-25.1.0.dev2024121405-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024121405-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024121405-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121405-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024121705-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024121705-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024121705-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121705-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-25.1.0.dev2024121405-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024121705-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 @@ -721,13 +719,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openjpeg-2.5.3-h8a3d83b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.0-h39f12f2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.28.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.28.2-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.28.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.29.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.29.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.29.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-prometheus-1.12.0rc1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.28.2-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.28.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh3cfb1c2_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.29.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.29.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.50b0-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/opusfile-0.12-h5643135_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/orc-2.0.3-hbcee414_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda @@ -757,7 +755,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.20-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-xxhash-3.5.0-py312h024a12e_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-5_cp312.conda @@ -776,7 +774,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sdl2_image-2.8.2-h376e2e1_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sdl2_mixer-2.6.3-h4fe3bdc_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sdl2_ttf-2.22.0-h443c5de_3.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 - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-h98b9ce2_1.conda @@ -797,13 +794,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.34.0-pyh31011fe_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.34.0-h31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/uvloop-0.21.0-py312h0bf5046_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/watchfiles-1.0.3-py312hcd83bfe_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/websockets-14.1-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/wrapt-1.17.0-py312hea69d52_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxau-1.0.11-hd74edd7_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxau-1.0.12-h5505292_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxdmcp-1.1.5-hd74edd7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xxhash-0.8.2-hb547adb_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 @@ -949,21 +946,20 @@ packages: timestamp: 1733839037447 - kind: conda name: aiosignal - version: 1.3.1 - build: pyhd8ed1ab_1 - build_number: 1 + version: 1.3.2 + build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_1.conda - sha256: 9c7b639ea0cc796ef46c57fa104ec1f2ed53cd11c063518869a5a9d7d3b0b2db - md5: d736bd1b8904d7593dce4893e58a7881 + url: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda + sha256: 7de8ced1918bbdadecf8e1c1c68237fe5709c097bd9e0d254f4cad118f4345d0 + md5: 1a3981115a398535dbe3f6d5faae3d36 depends: - frozenlist >=1.1.0 - python >=3.9 license: Apache-2.0 license_family: APACHE - size: 13157 - timestamp: 1733332198143 + size: 13229 + timestamp: 1734342253061 - kind: conda name: alsa-lib version: 1.2.13 @@ -1109,20 +1105,19 @@ packages: timestamp: 1660065534958 - kind: conda name: attrs - version: 24.2.0 - build: pyh71513ae_1 - build_number: 1 + version: 24.3.0 + build: pyh71513ae_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_1.conda - sha256: 8488a116dffe204015a90b41982c0270534bd1070f44a00b316d59e4a79ae8c7 - md5: 2018839db45c79654b57a924fcdd27d0 + url: https://conda.anaconda.org/conda-forge/noarch/attrs-24.3.0-pyh71513ae_0.conda + sha256: 750186af694a7130eaf7119fbb56db0d2326d8995ad5b8eae23c622b85fea29a + md5: 356927ace43302bf6f5926e2a58dae6a depends: - python >=3.9 license: MIT license_family: MIT - size: 56336 - timestamp: 1733520064905 + size: 56354 + timestamp: 1734348889193 - kind: conda name: aws-c-auth version: 0.8.0 @@ -1447,57 +1442,57 @@ packages: - kind: conda name: aws-c-io version: 0.15.3 - build: h92bf595_4 - build_number: 4 + build: h1a307af_5 + build_number: 5 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-h92bf595_4.conda - sha256: ffa2fc1ddb01f4b8ac038ab70a5533306119754ba438b23399f2a82a38cf27bf - md5: 539df02c00c506c78aebdf6c0fc75743 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-h1a307af_5.conda + sha256: 71f5bf891299f831dceaea12f926c393bf754569e5305387a88b77e1f94612d8 + md5: da8ab0f3eeac93449ec3d531ede92caa depends: - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.6,<0.10.7.0a0 - libgcc >=13 - - s2n >=1.5.9,<1.5.10.0a0 + - s2n >=1.5.10,<1.5.11.0a0 license: Apache-2.0 license_family: Apache - size: 161836 - timestamp: 1733997573790 + size: 161889 + timestamp: 1734433686109 - kind: conda name: aws-c-io version: 0.15.3 - build: haba67d1_4 - build_number: 4 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-haba67d1_4.conda - sha256: 2d0859b57439cd98e854577aa3e07eb171b590098d51a8c908bab5ec497a3d38 - md5: 74eace4fab8675263a848075e991d380 + build: h831e299_5 + build_number: 5 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-h831e299_5.conda + sha256: 5920009b1c6f9a2bc131a36725251894e4b4773fce29c4b1065d4213ae337abe + md5: 80dd9f0ddf935290d1dc00ec75ff3023 depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + - s2n >=1.5.10,<1.5.11.0a0 license: Apache-2.0 license_family: Apache - size: 136213 - timestamp: 1733997647724 + size: 157864 + timestamp: 1734433578570 - kind: conda name: aws-c-io version: 0.15.3 - build: hbf5b6a4_4 - build_number: 4 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-hbf5b6a4_4.conda - sha256: 3195fe431d3c43d6ecf749796d3acb093645c9d0de9998616641dada4b5fa2a6 - md5: ad3a6713063c18b9232c48e89ada03ac + build: haba67d1_5 + build_number: 5 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-haba67d1_5.conda + sha256: c0a1a2b0750225ac3dc07fd258c88c2be866bf8ac67ba3d50bb4ecec852ff8ee + md5: 4c5ff4134e76426a75b8c548984fa933 depends: - - __glibc >=2.17,<3.0.a0 + - __osx >=11.0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.6,<0.10.7.0a0 - - libgcc >=13 - - s2n >=1.5.9,<1.5.10.0a0 license: Apache-2.0 license_family: Apache - size: 157886 - timestamp: 1733997507332 + size: 135729 + timestamp: 1734433832730 - kind: conda name: aws-c-mqtt version: 0.11.0 @@ -2262,83 +2257,80 @@ packages: timestamp: 1720974522888 - kind: conda name: c-ares - version: 1.34.3 - build: h5505292_1 - build_number: 1 + version: 1.34.4 + build: h5505292_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.3-h5505292_1.conda - sha256: 6dfa83cbd9acc8671d439fe9c745a5716faf6cbadf2f1e18c841bcf86cbba5f2 - md5: fb72102e8a8f9bcd38e40af09ff41c42 + url: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.4-h5505292_0.conda + sha256: 09c0c8476e50b2955f474a4a1c17c4c047dd52993b5366b6ea8e968e583b921f + md5: c1c999a38a4303b29d75c636eaa13cf9 depends: - __osx >=11.0 license: MIT license_family: MIT - size: 179318 - timestamp: 1732447193278 + size: 179496 + timestamp: 1734208291879 - kind: conda name: c-ares - version: 1.34.3 - build: h86ecc28_1 - build_number: 1 + version: 1.34.4 + build: h86ecc28_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/c-ares-1.34.3-h86ecc28_1.conda - sha256: 1181db17781d9d66c1478e7fbc3e82dd273e9cb43ed910e1d0f8b3c96b16e290 - md5: 0cd9ebf65479cdceb6a4888b764dafcd + url: https://conda.anaconda.org/conda-forge/linux-aarch64/c-ares-1.34.4-h86ecc28_0.conda + sha256: 1187a41d4bb2afe02cb18690682edc98d1e9f5e0ccda638d8704a75ea1875bbe + md5: 356da36f35d36dcba16e43f1589d4e39 depends: - libgcc >=13 license: MIT license_family: MIT - size: 214791 - timestamp: 1732447020593 + size: 215979 + timestamp: 1734208193181 - kind: conda name: c-ares - version: 1.34.3 - build: hb9d3cd8_1 - build_number: 1 + version: 1.34.4 + build: hb9d3cd8_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.3-hb9d3cd8_1.conda - sha256: 732571ba6286dbccbf4c6450078a581b7a5620204faf876ff0ef282d77a6bfa8 - md5: ee228789a85f961d14567252a03e725f + url: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.4-hb9d3cd8_0.conda + sha256: d4f28d87b6339b94f74762c0076e29c8ef8ddfff51a564a92da2843573c18320 + md5: e2775acf57efd5af15b8e3d1d74d72d3 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 license: MIT license_family: MIT - size: 204857 - timestamp: 1732447031823 + size: 206085 + timestamp: 1734208189009 - kind: conda name: ca-certificates - version: 2024.8.30 + version: 2024.12.14 build: hbcca054_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2024.8.30-hbcca054_0.conda - sha256: afee721baa6d988e27fef1832f68d6f32ac8cc99cdf6015732224c2841a09cea - md5: c27d1c142233b5bc9ca570c6e2e0c244 + url: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2024.12.14-hbcca054_0.conda + sha256: 1afd7274cbc9a334d6d0bc62fa760acc7afdaceb0b91a8df370ec01fd75dc7dd + md5: 720523eb0d6a9b0f6120c16b2aa4e7de license: ISC - size: 159003 - timestamp: 1725018903918 + size: 157088 + timestamp: 1734208393264 - kind: conda name: ca-certificates - version: 2024.8.30 + version: 2024.12.14 build: hcefe29a_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2024.8.30-hcefe29a_0.conda - sha256: 2a2d827bee3775a85f0f1b2f2089291475c4416336d1b3a8cbce2964db547af8 - md5: 70e57e8f59d2c98f86b49c69e5074be5 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2024.12.14-hcefe29a_0.conda + sha256: ad7b43211051332a5a4e788bb4619a2d0ecb5be73e0f76be17f733a87d7effd1 + md5: 83b4ad1e6dc14df5891f3fcfdeb44351 license: ISC - size: 159106 - timestamp: 1725020043153 + size: 157096 + timestamp: 1734209301744 - kind: conda name: ca-certificates - version: 2024.8.30 + version: 2024.12.14 build: hf0a4a13_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2024.8.30-hf0a4a13_0.conda - sha256: 2db1733f4b644575dbbdd7994a8f338e6ef937f5ebdb74acd557e9dda0211709 - md5: 40dec13fd8348dbe303e57be74bd3d35 + url: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2024.12.14-hf0a4a13_0.conda + sha256: 256be633fd0882ccc1a7a32bc278547e1703f85082c0789a87a603ee3ab8fb82 + md5: 7cb381a6783d91902638e4ed1ebd478e license: ISC - size: 158482 - timestamp: 1725019034582 + size: 157091 + timestamp: 1734208344343 - kind: conda name: cairo version: 1.18.2 @@ -2426,18 +2418,18 @@ packages: timestamp: 1733791018944 - kind: conda name: certifi - version: 2024.8.30 + version: 2024.12.14 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.8.30-pyhd8ed1ab_0.conda - sha256: 7020770df338c45ac6b560185956c32f0a5abf4b76179c037f115fc7d687819f - md5: 12f7d00853807b0531775e9be891cb11 + url: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.12.14-pyhd8ed1ab_0.conda + sha256: 048c16a9cbcb1fbad02083414d3bc7c1d0eea4b39aee6aa6bf8d1d5089ca8bad + md5: 6feb87357ecd66733be3279f16a8c400 depends: - - python >=3.7 + - python >=3.9 license: ISC - size: 163752 - timestamp: 1725278204397 + size: 161642 + timestamp: 1734380604767 - kind: conda name: cffi version: 1.17.1 @@ -2808,13 +2800,13 @@ packages: timestamp: 1733362427885 - kind: conda name: fastapi-cli - version: 0.0.6 + version: 0.0.7 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.6-pyhd8ed1ab_0.conda - sha256: f0a900e1d8158915c71d9064699d97fc137058f71f5cdd257d79dbac07a41b63 - md5: 3256783cc0dd4cf3ff17198ce3b1782e + url: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.7-pyhd8ed1ab_0.conda + sha256: 300683731013b7221922339cd40430bb3c2ddeeb658fd7e37f5099ffe64e4db0 + md5: d960e0ea9e1c561aa928f6c4439f04c7 depends: - python >=3.9 - rich-toolkit >=0.11.1 @@ -2822,8 +2814,8 @@ packages: - uvicorn-standard >=0.15.0 license: MIT license_family: MIT - size: 15512 - timestamp: 1733881782160 + size: 15546 + timestamp: 1734302408607 - kind: conda name: filelock version: 3.16.1 @@ -3744,20 +3736,21 @@ packages: timestamp: 1733211921194 - kind: conda name: importlib-metadata - version: 7.0.2 - build: pyha770c72_0 + version: 8.5.0 + build: pyha770c72_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-7.0.2-pyha770c72_0.conda - sha256: 9a26136d2cc81ccac209d6ae24281ceba3365fe34e34b2c45570f2a96e9d9c1b - md5: b050a4bb0e90ebd6e7fa4093d6346867 + url: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_1.conda + sha256: 13766b88fc5b23581530d3a0287c0c58ad82f60401afefab283bf158d2be55a9 + md5: 315607a3030ad5d5227e76e0733798ff depends: - - python >=3.8 + - python >=3.9 - zipp >=0.5 license: Apache-2.0 license_family: APACHE - size: 26900 - timestamp: 1709821273570 + size: 28623 + timestamp: 1733223207185 - kind: conda name: jack version: 1.9.22 @@ -4619,66 +4612,63 @@ packages: - kind: conda name: libblas version: 3.9.0 - build: 25_linux64_openblas - build_number: 25 + build: 26_linux64_openblas + build_number: 26 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-25_linux64_openblas.conda - sha256: d6d12dc437d060f838820e9e61bf73baab651f91935ac594cf10beb9ef1b4450 - md5: 8ea26d42ca88ec5258802715fe1ee10b + url: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-26_linux64_openblas.conda + sha256: 30bd658682b124243f8e52d8edf8a19e7be1bc31e4fe4baec30a64002dc8cd0c + md5: ac52800af2e0c0e7dac770b435ce768a depends: - libopenblas >=0.3.28,<0.3.29.0a0 - libopenblas >=0.3.28,<1.0a0 constrains: - - liblapack 3.9.0 25_linux64_openblas - - libcblas 3.9.0 25_linux64_openblas + - libcblas 3.9.0 26_linux64_openblas + - liblapack 3.9.0 26_linux64_openblas + - liblapacke 3.9.0 26_linux64_openblas - blas * openblas - - liblapacke 3.9.0 25_linux64_openblas license: BSD-3-Clause - license_family: BSD - size: 15677 - timestamp: 1729642900350 + size: 16393 + timestamp: 1734432564346 - kind: conda name: libblas version: 3.9.0 - build: 25_linuxaarch64_openblas - build_number: 25 + build: 26_linuxaarch64_openblas + build_number: 26 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-25_linuxaarch64_openblas.conda - sha256: 5c08f78312874bb61307f5ea737377df2d0f6e7f7833ded21ca58d8820c794ca - md5: f9b8a4a955ed2d0b68b1f453abcc1c9e + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-26_linuxaarch64_openblas.conda + sha256: df6d8ee34d45cf35609ecdd55c1ff03e32e0cd87ae41ebe4ef3747a8e09ead4d + md5: 8d900b7079a00969d70305e9aad550b7 depends: - libopenblas >=0.3.28,<0.3.29.0a0 - libopenblas >=0.3.28,<1.0a0 constrains: - blas * openblas - - liblapacke 3.9.0 25_linuxaarch64_openblas - - liblapack 3.9.0 25_linuxaarch64_openblas - - libcblas 3.9.0 25_linuxaarch64_openblas + - liblapacke 3.9.0 26_linuxaarch64_openblas + - libcblas 3.9.0 26_linuxaarch64_openblas + - liblapack 3.9.0 26_linuxaarch64_openblas license: BSD-3-Clause - license_family: BSD - size: 15808 - timestamp: 1729643002627 + size: 16477 + timestamp: 1734432576699 - kind: conda name: libblas version: 3.9.0 - build: 25_osxarm64_openblas - build_number: 25 + build: 26_osxarm64_openblas + build_number: 26 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-25_osxarm64_openblas.conda - sha256: f1fb9a11af0b2878bd8804b4c77d3733c40076218bcbdb35f575b1c0c9fddf11 - md5: f8cf4d920ff36ce471619010eff59cac + url: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-26_osxarm64_openblas.conda + sha256: 597f9c3779caa979c8c6abbb3ba8c7191b84e1a910d6b0d10e5faf35284c450c + md5: 21be102c9ae80a67ba7de23b129aa7f6 depends: - libopenblas >=0.3.28,<0.3.29.0a0 - libopenblas >=0.3.28,<1.0a0 constrains: + - liblapack 3.9.0 26_osxarm64_openblas + - liblapacke 3.9.0 26_osxarm64_openblas + - libcblas 3.9.0 26_osxarm64_openblas - blas * openblas - - liblapack 3.9.0 25_osxarm64_openblas - - liblapacke 3.9.0 25_osxarm64_openblas - - libcblas 3.9.0 25_osxarm64_openblas license: BSD-3-Clause - license_family: BSD - size: 15913 - timestamp: 1729643265495 + size: 16714 + timestamp: 1734433054681 - kind: conda name: libbrotlicommon version: 1.1.0 @@ -4857,60 +4847,57 @@ packages: - kind: conda name: libcblas version: 3.9.0 - build: 25_linux64_openblas - build_number: 25 + build: 26_linux64_openblas + build_number: 26 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-25_linux64_openblas.conda - sha256: ab87b0477078837c91d9cda62a9faca18fba7c57cc77aa779ae24b3ac783b5dd - md5: 5dbd1b0fc0d01ec5e0e1fbe667281a11 + url: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-26_linux64_openblas.conda + sha256: 9c74e536c9bc868e356ffd43f81c2cb398aec84b40fcadc312315b164a5500ee + md5: ebcc5f37a435aa3c19640533c82f8d76 depends: - - libblas 3.9.0 25_linux64_openblas + - libblas 3.9.0 26_linux64_openblas constrains: - - liblapack 3.9.0 25_linux64_openblas + - liblapack 3.9.0 26_linux64_openblas + - liblapacke 3.9.0 26_linux64_openblas - blas * openblas - - liblapacke 3.9.0 25_linux64_openblas license: BSD-3-Clause - license_family: BSD - size: 15613 - timestamp: 1729642905619 + size: 16336 + timestamp: 1734432570482 - kind: conda name: libcblas version: 3.9.0 - build: 25_linuxaarch64_openblas - build_number: 25 + build: 26_linuxaarch64_openblas + build_number: 26 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-25_linuxaarch64_openblas.conda - sha256: fde797e5528040fed0e9228dd75331be0cf5cbb0bc63641f53c3cca9eb86ec16 - md5: db6af51123c67814572a8c25542cb368 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-26_linuxaarch64_openblas.conda + sha256: 521e78be0c4170f229c43e1a6c94337a72db3ebcbe6e5960f8413aa438dcb8f9 + md5: d77f943ae4083f3aeddca698f2d28262 depends: - - libblas 3.9.0 25_linuxaarch64_openblas + - libblas 3.9.0 26_linuxaarch64_openblas constrains: - blas * openblas - - liblapacke 3.9.0 25_linuxaarch64_openblas - - liblapack 3.9.0 25_linuxaarch64_openblas + - liblapacke 3.9.0 26_linuxaarch64_openblas + - liblapack 3.9.0 26_linuxaarch64_openblas license: BSD-3-Clause - license_family: BSD - size: 15700 - timestamp: 1729643006729 + size: 16398 + timestamp: 1734432580937 - kind: conda name: libcblas version: 3.9.0 - build: 25_osxarm64_openblas - build_number: 25 + build: 26_osxarm64_openblas + build_number: 26 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-25_osxarm64_openblas.conda - sha256: d9fa5b6b11252132a3383bbf87bd2f1b9d6248bef1b7e113c2a8ae41b0376218 - md5: 4df0fae81f0b5bf47d48c882b086da11 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-26_osxarm64_openblas.conda + sha256: 27a29ef6b2fd2179bc3a0bb9db351f078ba140ca10485dca147c399639f84c93 + md5: a0e9980fe12d42f6d0c0ec009f67e948 depends: - - libblas 3.9.0 25_osxarm64_openblas + - libblas 3.9.0 26_osxarm64_openblas constrains: + - liblapack 3.9.0 26_osxarm64_openblas + - liblapacke 3.9.0 26_osxarm64_openblas - blas * openblas - - liblapack 3.9.0 25_osxarm64_openblas - - liblapacke 3.9.0 25_osxarm64_openblas license: BSD-3-Clause - license_family: BSD - size: 15837 - timestamp: 1729643270793 + size: 16628 + timestamp: 1734433061517 - kind: conda name: libcrc32c version: 1.1.2 @@ -5062,47 +5049,44 @@ packages: timestamp: 1609539093147 - kind: conda name: libdeflate - version: '1.22' - build: h86ecc28_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libdeflate-1.22-h86ecc28_0.conda - sha256: 986207f130703897300ddc3637c52e86a5b21c735fe384bf48554d9a6d91c56d - md5: ff6a44e8b1707d02be2fe9a36ea88d4a + version: '1.23' + build: h4ddbbb0_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.23-h4ddbbb0_0.conda + sha256: 511d801626d02f4247a04fff957cc6e9ec4cc7e8622bd9acd076bcdc5de5fe66 + md5: 8dfae1d2e74767e9ce36d5fa0d8605db depends: + - __glibc >=2.17,<3.0.a0 - libgcc >=13 license: MIT - license_family: MIT - size: 69601 - timestamp: 1728177137503 + size: 72255 + timestamp: 1734373823254 - kind: conda name: libdeflate - version: '1.22' - build: hb9d3cd8_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.22-hb9d3cd8_0.conda - sha256: 780f0530a3adfc1497ba49d626931c6afc978c540e1abfde6ccd57128ded6ad6 - md5: b422943d5d772b7cc858b36ad2a92db5 + version: '1.23' + build: h5e3c512_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libdeflate-1.23-h5e3c512_0.conda + sha256: 959419d87cd2b789a9055db95704c614f31aeb70bef7949fa2f734122a3a2863 + md5: 7e7ca2607b11b180120cefc2354fc0cb depends: - - __glibc >=2.17,<3.0.a0 - libgcc >=13 license: MIT - license_family: MIT - size: 72242 - timestamp: 1728177071251 + size: 69862 + timestamp: 1734373858306 - kind: conda name: libdeflate - version: '1.22' - build: hd74edd7_0 + version: '1.23' + build: hec38601_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.22-hd74edd7_0.conda - sha256: 3552894ca62bebc33d05982937cda25a4fa19e56a82af2ff20944ff4c2532fda - md5: 2d3e3f3d8ab315748420ef58d5a3ae0f + url: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.23-hec38601_0.conda + sha256: 887c02deaed6d583459eba6367023e36d8761085b2f7126e389424f57155da53 + md5: 1d8b9588be14e71df38c525767a1ac30 depends: - __osx >=11.0 license: MIT - license_family: MIT - size: 54089 - timestamp: 1728177149927 + size: 54132 + timestamp: 1734373971372 - kind: conda name: libedit version: 3.1.20191231 @@ -6132,60 +6116,57 @@ packages: - kind: conda name: liblapack version: 3.9.0 - build: 25_linux64_openblas - build_number: 25 + build: 26_linux64_openblas + build_number: 26 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-25_linux64_openblas.conda - sha256: 9d1ff017714edb2d84868f0f931a4a0e7c289a971062b2ac66cfc8145df7e20e - md5: 4dc03a53fc69371a6158d0ed37214cd3 + url: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-26_linux64_openblas.conda + sha256: b76458c36331376911e0f98fa68109e02f4d5e5ebfffa79587ac69cef748bba1 + md5: 3792604c43695d6a273bc5faaac47d48 depends: - - libblas 3.9.0 25_linux64_openblas + - libblas 3.9.0 26_linux64_openblas constrains: - - liblapacke 3.9.0 25_linux64_openblas - - libcblas 3.9.0 25_linux64_openblas + - libcblas 3.9.0 26_linux64_openblas + - liblapacke 3.9.0 26_linux64_openblas - blas * openblas license: BSD-3-Clause - license_family: BSD - size: 15608 - timestamp: 1729642910812 + size: 16338 + timestamp: 1734432576650 - kind: conda name: liblapack version: 3.9.0 - build: 25_linuxaarch64_openblas - build_number: 25 + build: 26_linuxaarch64_openblas + build_number: 26 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-25_linuxaarch64_openblas.conda - sha256: 2b399e65e0338bf249657b98333e910cd7086ea1332d4d6f303735883ca49318 - md5: 0eb74e81de46454960bde9e44e7ee378 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-26_linuxaarch64_openblas.conda + sha256: a42bd01498efe2ccf6d08d56ac3cbd3ceab79e06699ff5aac3da8e45a66738f7 + md5: a5d4e18876393633da62fd8492c00156 depends: - - libblas 3.9.0 25_linuxaarch64_openblas + - libblas 3.9.0 26_linuxaarch64_openblas constrains: - blas * openblas - - liblapacke 3.9.0 25_linuxaarch64_openblas - - libcblas 3.9.0 25_linuxaarch64_openblas + - liblapacke 3.9.0 26_linuxaarch64_openblas + - libcblas 3.9.0 26_linuxaarch64_openblas license: BSD-3-Clause - license_family: BSD - size: 15711 - timestamp: 1729643010817 + size: 16403 + timestamp: 1734432585123 - kind: conda name: liblapack version: 3.9.0 - build: 25_osxarm64_openblas - build_number: 25 + build: 26_osxarm64_openblas + build_number: 26 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-25_osxarm64_openblas.conda - sha256: fdd742407672a9af20e70764550cf18b3ab67f12e48bf04163b90492fbc401e7 - md5: 19bbddfec972d401838330453186108d + url: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-26_osxarm64_openblas.conda + sha256: dd6d9a21e672aee4332f019c8229ce70cf5eaf6c2f4cbd1443b105fb66c00dc5 + md5: cebad79038a75cfd28fa90d147a2d34d depends: - - libblas 3.9.0 25_osxarm64_openblas + - libblas 3.9.0 26_osxarm64_openblas constrains: + - liblapacke 3.9.0 26_osxarm64_openblas + - libcblas 3.9.0 26_osxarm64_openblas - blas * openblas - - liblapacke 3.9.0 25_osxarm64_openblas - - libcblas 3.9.0 25_osxarm64_openblas license: BSD-3-Clause - license_family: BSD - size: 15823 - timestamp: 1729643275943 + size: 16624 + timestamp: 1734433068120 - kind: conda name: liblzma version: 5.6.3 @@ -7074,38 +7055,37 @@ packages: - kind: conda name: libtiff version: 4.7.0 - build: ha962b0a_2 - build_number: 2 + build: h551f018_3 + build_number: 3 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-ha962b0a_2.conda - sha256: d9e6835fd189b85eb90dbfdcc51f5375decbf5bb53130042f49bbd6bfb0b24be - md5: 8e14b5225c593f099a21971568e6d7b4 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-h551f018_3.conda + sha256: 91417846157e04992801438a496b151df89604b2e7c6775d6f701fcd0cbed5ae + md5: a5d084a957563e614ec0c0196d890654 depends: - __osx >=11.0 - lerc >=4.0.0,<5.0a0 - libcxx >=18 - - libdeflate >=1.22,<1.23.0a0 + - libdeflate >=1.23,<1.24.0a0 - libjpeg-turbo >=3.0.0,<4.0a0 - liblzma >=5.6.3,<6.0a0 - libwebp-base >=1.4.0,<2.0a0 - libzlib >=1.3.1,<2.0a0 - zstd >=1.5.6,<1.6.0a0 license: HPND - size: 370387 - timestamp: 1733443310502 + size: 370600 + timestamp: 1734398863052 - kind: conda name: libtiff version: 4.7.0 - build: hc4654cb_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hc4654cb_2.conda - sha256: 18653b4a5c73e19c5e86ff72dab9bf59f5cc43d7f404a6be705d152dfd5e0660 - md5: be54fb40ea32e8fe9dbaa94d4528b57e + build: h88f7998_3 + build_number: 3 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.0-h88f7998_3.conda + sha256: 5888bd66ba7606ae8596856c7dac800940ecad0aed77d6aa37db69d434c81cf0 + md5: 36a0ea4a173338c8725dc0807e99cf22 depends: - - __glibc >=2.17,<3.0.a0 - lerc >=4.0.0,<5.0a0 - - libdeflate >=1.22,<1.23.0a0 + - libdeflate >=1.23,<1.24.0a0 - libgcc >=13 - libjpeg-turbo >=3.0.0,<4.0a0 - liblzma >=5.6.3,<6.0a0 @@ -7114,20 +7094,21 @@ packages: - libzlib >=1.3.1,<2.0a0 - zstd >=1.5.6,<1.6.0a0 license: HPND - size: 429018 - timestamp: 1733443013288 + size: 464699 + timestamp: 1734398752249 - kind: conda name: libtiff version: 4.7.0 - build: hca96517_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.0-hca96517_2.conda - sha256: d736d840d1f2446234195adfcb51b132c85797730b6f42ebf058d350fa9d20e8 - md5: 278dcef6d1ea28c04109c3f5dea126cb + build: hd9ff511_3 + build_number: 3 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hd9ff511_3.conda + sha256: b224e16b88d76ea95e4af56e2bc638c603bd26a770b98d117d04541d3aafa002 + md5: 0ea6510969e1296cc19966fad481f6de depends: + - __glibc >=2.17,<3.0.a0 - lerc >=4.0.0,<5.0a0 - - libdeflate >=1.22,<1.23.0a0 + - libdeflate >=1.23,<1.24.0a0 - libgcc >=13 - libjpeg-turbo >=3.0.0,<4.0a0 - liblzma >=5.6.3,<6.0a0 @@ -7136,8 +7117,8 @@ packages: - libzlib >=1.3.1,<2.0a0 - zstd >=1.5.6,<1.6.0a0 license: HPND - size: 464857 - timestamp: 1733443105529 + size: 428173 + timestamp: 1734398813264 - kind: conda name: libutf8proc version: 2.9.0 @@ -7681,76 +7662,76 @@ packages: timestamp: 1733219945697 - kind: conda name: max - version: 25.1.0.dev2024121405 + version: 25.1.0.dev2024121705 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024121405-release.conda - sha256: 6bacaa1d4f27d255a4c3907c28929865eeef5d45d64d61c3991b526aee14766d - md5: 1aec535b4731af73dd1b43472e7b6fa0 - depends: - - max-core ==25.1.0.dev2024121405 release - - max-python >=25.1.0.dev2024121405,<26.0a0 - - mojo-jupyter ==25.1.0.dev2024121405 release - - mblack ==25.1.0.dev2024121405 release + url: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024121705-release.conda + sha256: 83b2265b29c1ee69ae9d9f639ab04899d0ef15b5abc9114e034e2cd382dcad31 + md5: bd7165d97ebb0458ddb1ce616c146c24 + depends: + - max-core ==25.1.0.dev2024121705 release + - max-python >=25.1.0.dev2024121705,<26.0a0 + - mojo-jupyter ==25.1.0.dev2024121705 release + - mblack ==25.1.0.dev2024121705 release license: LicenseRef-Modular-Proprietary size: 9921 - timestamp: 1734153430066 + timestamp: 1734412638047 - kind: conda name: max-core - version: 25.1.0.dev2024121405 + version: 25.1.0.dev2024121705 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024121405-release.conda - sha256: 14f953430105c8f2bb8f3bdf1e3fb7e9acbb20613ad47c9ac1e88462e0cc804d - md5: d88d69b1696ed9d5795c8d346bbd4311 + url: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024121705-release.conda + sha256: 15459b8446d3feb608baae398cf2753a3704e02e07cf2a6c02e166068d8a9304 + md5: 4ca65aff37bd7e944cce1697c1fe203e depends: - - mblack ==25.1.0.dev2024121405 release + - mblack ==25.1.0.dev2024121705 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 245597032 - timestamp: 1734153445516 + size: 245744992 + timestamp: 1734412638045 - kind: conda name: max-core - version: 25.1.0.dev2024121405 + version: 25.1.0.dev2024121705 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024121405-release.conda - sha256: e3936f8021fc72f7f2673e2653e7bbd3d325fb44818b868bb49c24e5c1766eaf - md5: ea674f5d9232d89046ad99090cc195a7 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024121705-release.conda + sha256: e89be4d7691a354a3f6e5d71e25b49447ca9fd1048fe03355c3bc509a726234d + md5: acc4b1208feaba5ad08c1b370192e127 depends: - - mblack ==25.1.0.dev2024121405 release + - mblack ==25.1.0.dev2024121705 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 249408423 - timestamp: 1734153430064 + size: 249373255 + timestamp: 1734412698620 - kind: conda name: max-core - version: 25.1.0.dev2024121405 + version: 25.1.0.dev2024121705 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024121405-release.conda - sha256: b6bb97d20f0f7371a647778d18fe78f839e37eef423542ae3f4e75b018ffd8db - md5: 0e2d8c487ef68866164af9dff49f5119 + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024121705-release.conda + sha256: edd613b122c086c4d6237c7195a55ce09bff9922ab70e0f1ff7a9662d3de41fe + md5: d68326deab9bb460f253bf6df7e903f6 depends: - - mblack ==25.1.0.dev2024121405 release + - mblack ==25.1.0.dev2024121705 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 214323771 - timestamp: 1734153633668 + size: 214152137 + timestamp: 1734412888834 - kind: conda name: max-python - version: 25.1.0.dev2024121405 + version: 25.1.0.dev2024121705 build: 3.12release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024121405-3.12release.conda - sha256: 7ebdc67f58946084f7f4a657f0661899e61707b055f2046d9c18033f21f97008 - md5: 5a8cbae9c5257545459bfe7a262b62a6 + url: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024121705-3.12release.conda + sha256: 11296250671f2a7c5951382f89f8e68a1702b0c8aeef200788e71d9e0e1d2955 + md5: f979494f9de5b3853834ffa1adf606c3 depends: - - max-core ==25.1.0.dev2024121405 release + - max-core ==25.1.0.dev2024121705 release - python 3.12.* - fastapi - httpx @@ -7773,18 +7754,18 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 122834581 - timestamp: 1734153445526 + size: 122755617 + timestamp: 1734412638055 - kind: conda name: max-python - version: 25.1.0.dev2024121405 + version: 25.1.0.dev2024121705 build: 3.12release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024121405-3.12release.conda - sha256: b74a5c8945a97210778cda3cd9fe98f7404d2c9ff0b1a03738c77af6429b1523 - md5: 099dc5d1f85e4f883e72caef6f0c6e52 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024121705-3.12release.conda + sha256: e4a7ded05f33903034e52feefe65f458975942740cf07dcb30e2e9c1f0af53e6 + md5: 9a51b55d48b861487dbecd7c4abc7b68 depends: - - max-core ==25.1.0.dev2024121405 release + - max-core ==25.1.0.dev2024121705 release - python 3.12.* - fastapi - httpx @@ -7807,18 +7788,18 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 126606485 - timestamp: 1734153430075 + size: 126486411 + timestamp: 1734412698632 - kind: conda name: max-python - version: 25.1.0.dev2024121405 + version: 25.1.0.dev2024121705 build: 3.12release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024121405-3.12release.conda - sha256: 24a7ab99d936e5c28f597413e9e643fe34c46ba55916c1febcbe658e79a2ea9f - md5: 661ce5968d3cc1b11a67dfbf77e986b8 + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024121705-3.12release.conda + sha256: 328cee9730cf537d58e6d24b9aa111504271433d724fd47fdcee55b26df222b3 + md5: b1168de7b96e9e7b0fad7c675ecdb426 depends: - - max-core ==25.1.0.dev2024121405 release + - max-core ==25.1.0.dev2024121705 release - python 3.12.* - fastapi - httpx @@ -7841,17 +7822,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 113414908 - timestamp: 1734153633671 + size: 113391631 + timestamp: 1734412888837 - kind: conda name: mblack - version: 25.1.0.dev2024121405 + version: 25.1.0.dev2024121705 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121405-release.conda - sha256: ea23ea9fdb019aa4dc05bcb1d1f526f77ce90a94baa3130d26ce71cad0a3647b - md5: 425b85251efa151234c9db33428ee55c + url: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121705-release.conda + sha256: 44d0c3a0b1242823334d6bad895ad037849719f67bcfbc426c65363c567f80a5 + md5: 93c89483058dabd0282c378812328ba0 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -7861,8 +7842,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130792 - timestamp: 1734153430070 + size: 130801 + timestamp: 1734412638051 - kind: conda name: mdurl version: 0.1.2 @@ -7881,21 +7862,21 @@ packages: timestamp: 1733255681319 - kind: conda name: mojo-jupyter - version: 25.1.0.dev2024121405 + version: 25.1.0.dev2024121705 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024121405-release.conda - sha256: b232fe63e84736d519137d4c98067c886f8acc1cc38a6620a062f4eb079e751a - md5: b7d7fe85425c5120a665795eb2097aa9 + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024121705-release.conda + sha256: 8ef8447f576590d381ccaa82e6c207c530e9355b07ab3174f3df9c9f064d42de + md5: 4c31e34ff54c71cd9d584d3ab8f1c315 depends: - - max-core ==25.1.0.dev2024121405 release + - max-core ==25.1.0.dev2024121705 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22934 - timestamp: 1734153430071 + size: 22937 + timestamp: 1734412638052 - kind: conda name: mpg123 version: 1.32.9 @@ -8280,62 +8261,61 @@ packages: timestamp: 1731377666602 - kind: conda name: opentelemetry-api - version: 1.28.2 + version: 1.29.0 build: pyhd8ed1ab_1 build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.28.2-pyhd8ed1ab_1.conda - sha256: 780dbc942a6075db7bdbaf556023be50c34a6111a99e465878d7bab0e5e0d7f4 - md5: a06f1e9d97c98d26f06675236c9ea554 + url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.29.0-pyhd8ed1ab_1.conda + sha256: 296280c8ace35c0a1cf72bed1077f248b3af903c3bf92332f1783a207cb5abdb + md5: 307b05402c1a382f2f09426492dee8f8 depends: - deprecated >=1.2.6 - - importlib-metadata >=6.0.0,<7.1.0 + - importlib-metadata >=6.0,<=8.5.0 - python >=3.9 - - setuptools >=16.0 license: Apache-2.0 license_family: APACHE - size: 44242 - timestamp: 1733734361129 + size: 44166 + timestamp: 1734132973331 - kind: conda name: opentelemetry-exporter-otlp-proto-common - version: 1.28.2 - build: pyhff2d567_0 + version: 1.29.0 + build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.28.2-pyhff2d567_0.conda - sha256: 838525f5a35f130eb3e6ccf06700ab7574467e8abe19da91e6f0de3b399e77c2 - md5: b00b3a8f0d25d5b18979c73ec051c313 + url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.29.0-pyhd8ed1ab_0.conda + sha256: ae9776efe52564e0d6711cfcee7c54439273e57a3999f7f796f66e862f58aae9 + md5: 0c02e74d26bce3fec93b227cf7ea6e6b depends: - backoff >=1.10.0,<3.0.0 - - opentelemetry-proto 1.28.2 + - opentelemetry-proto 1.29.0 - python >=3.9 license: Apache-2.0 license_family: APACHE - size: 18838 - timestamp: 1731991715474 + size: 18922 + timestamp: 1734310457116 - kind: conda name: opentelemetry-exporter-otlp-proto-http - version: 1.28.2 - build: pyhd8ed1ab_0 + version: 1.29.0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.28.2-pyhd8ed1ab_0.conda - sha256: d89b7b0f28dca5ed84d8c3421e3b16683f764c9eebde66cc8858fc183751af69 - md5: 73810c011d2d60914ce8f92fe99564a0 + url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.29.0-pyhd8ed1ab_1.conda + sha256: 5d61db9d5b4f91b3932f5f2348920d5b7fdaa09e52c8ea054cf7bf3f21677c9c + md5: 223f4e56a29601c887f0dc467034af5b depends: - deprecated >=1.2.6 - - googleapis-common-protos ~=1.52 - - opentelemetry-api ~=1.15 - - opentelemetry-exporter-otlp-proto-common 1.28.2 - - opentelemetry-proto 1.28.2 - - opentelemetry-sdk ~=1.28.2 - - python >=3.8 - - requests ~=2.7 + - googleapis-common-protos >=1.52,<2.dev0 + - opentelemetry-api >=1.15,<2.dev0 + - opentelemetry-exporter-otlp-proto-common 1.29.0 + - opentelemetry-proto 1.29.0 + - opentelemetry-sdk 1.29.0 + - python >=3.9 + - requests >=2.7,<3.dev0 license: Apache-2.0 - license_family: APACHE - size: 17007 - timestamp: 1732094238214 + size: 17147 + timestamp: 1734345675510 - kind: conda name: opentelemetry-exporter-prometheus version: 1.12.0rc1 @@ -8356,58 +8336,56 @@ packages: timestamp: 1695214221489 - kind: conda name: opentelemetry-proto - version: 1.28.2 - build: pyhff2d567_0 + version: 1.29.0 + build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.28.2-pyhff2d567_0.conda - sha256: e68320a465b45e05f569c440a20735db9a0fd7cdb9e52300506660a924d17caf - md5: 54ac33b32171ce2205b6639da1a1ac54 + url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.29.0-pyhd8ed1ab_0.conda + sha256: 200a7cb8acc8a0ddd6ef55c5460cec871b6a265929b240a0296c0ccb9c8d9758 + md5: e2a6d2ad10b813c7fdc1c64aac376128 depends: - protobuf <6.0,>=5.0 - python >=3.9 license: Apache-2.0 license_family: APACHE - size: 37108 - timestamp: 1731988686996 + size: 37235 + timestamp: 1734291034372 - kind: conda name: opentelemetry-sdk - version: 1.28.2 - build: pyhd8ed1ab_1 - build_number: 1 + version: 1.29.0 + build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.28.2-pyhd8ed1ab_1.conda - sha256: 9f48ec749f0738910fdd6750f9655f16949182b5379dd2c0771104d3e74bfd74 - md5: bfe29ef92f3a04ab8e59e4f97b28785c + url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.29.0-pyhd8ed1ab_0.conda + sha256: 7b36629d8b8be8a019fcfd1518d7b7f862dd25de96f8adcadb93e4fd12cf9bd6 + md5: 2a8893f06e6ebda4bfa78875bc923ea4 depends: - - opentelemetry-api 1.28.2 - - opentelemetry-semantic-conventions 0.49b2 + - opentelemetry-api 1.29.0 + - opentelemetry-semantic-conventions 0.50b0 - python >=3.9 - typing-extensions >=3.7.4 - typing_extensions >=3.7.4 license: Apache-2.0 license_family: APACHE - size: 78090 - timestamp: 1733768582451 + size: 77645 + timestamp: 1734297838999 - kind: conda name: opentelemetry-semantic-conventions - version: 0.49b2 - build: pyh3cfb1c2_1 - build_number: 1 + version: 0.50b0 + build: pyh3cfb1c2_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh3cfb1c2_1.conda - sha256: 28180ffa6611f117c782c7d72066b50332c1df0bdcfed0dea4e446a20c4b7d10 - md5: e0ada55d18e6bd5a8e61943b4b5d3a8f + url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.50b0-pyh3cfb1c2_0.conda + sha256: 6526e70368d5bf66ef0eaa51fb800d53782dde71a24bd38f40139919a6f784dc + md5: f7111fa4188d646c8108e232d024cb99 depends: - deprecated >=1.2.6 - - opentelemetry-api 1.28.2 + - opentelemetry-api 1.29.0 - python >=3.9 license: Apache-2.0 license_family: APACHE - size: 81099 - timestamp: 1733749104727 + size: 86084 + timestamp: 1734208980168 - kind: conda name: opusfile version: '0.12' @@ -9369,6 +9347,7 @@ packages: - python >=3.9 - python-dotenv >=0.21.0 license: MIT + license_family: MIT size: 31426 timestamp: 1734127929720 - kind: conda @@ -9679,20 +9658,19 @@ packages: timestamp: 1677079727691 - kind: conda name: python-multipart - version: 0.0.19 - build: pyhff2d567_1 - build_number: 1 + version: 0.0.20 + build: pyhff2d567_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_1.conda - sha256: e6f6bc3d2a51f45ca26d556c5a416efdacf49a918fefcd0b7c340121e608aa5f - md5: c74333aa447ed2b94d49e5db23da5de6 + url: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.20-pyhff2d567_0.conda + sha256: 1b03678d145b1675b757cba165a0d9803885807792f7eb4495e48a38858c3cca + md5: a28c984e0429aff3ab7386f7de56de6f depends: - python >=3.9 license: Apache-2.0 license_family: Apache - size: 27768 - timestamp: 1733323160772 + size: 27913 + timestamp: 1734420869885 - kind: conda name: python-tzdata version: '2024.2' @@ -10192,35 +10170,35 @@ packages: timestamp: 1733750834072 - kind: conda name: s2n - version: 1.5.9 - build: h0fd0ee4_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/s2n-1.5.9-h0fd0ee4_0.conda - sha256: f2c8e55d6caa8d87a482b1f133963c184de1ccb2303b77cc8ca86c794253f151 - md5: f472432f3753c5ca763d2497e2ea30bf + version: 1.5.10 + build: h5df210e_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/s2n-1.5.10-h5df210e_0.conda + sha256: b5e7a9f4b7b1ec5c5c3661e2defc8b47fab543b05cad6fec78739d8007612464 + md5: 3d3979efcc0f44f3f0cef3de03b296cc depends: - - __glibc >=2.17,<3.0.a0 - libgcc >=13 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 355568 - timestamp: 1731541963573 + size: 353450 + timestamp: 1734415474615 - kind: conda name: s2n - version: 1.5.9 - build: h636ded1_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/s2n-1.5.9-h636ded1_0.conda - sha256: 51572714743f836266af564c5b26b37599478131c4379a0d11778f04e647d070 - md5: bf4f84136d9ddb7be1855754a9ac4bb9 + version: 1.5.10 + build: hb5b8611_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/s2n-1.5.10-hb5b8611_0.conda + sha256: f6d451821fddc26b93f45e9313e1ea15e09e5ef049d4e137413a5225d2a5dfba + md5: 999f3673f2a011f59287f2969e3749e4 depends: + - __glibc >=2.17,<3.0.a0 - libgcc >=13 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 352546 - timestamp: 1731542018427 + size: 355142 + timestamp: 1734415467047 - kind: conda name: safetensors version: 0.4.5 @@ -10517,22 +10495,6 @@ packages: license: Zlib size: 56134 timestamp: 1733783877446 -- kind: conda - name: setuptools - version: 75.6.0 - build: pyhff2d567_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_1.conda - sha256: abb12e1dd515b13660aacb5d0fd43835bc2186cab472df25b7716cd65e095111 - md5: fc80f7995e396cbaeabd23cf46c413dc - depends: - - python >=3.9 - license: MIT - license_family: MIT - size: 774252 - timestamp: 1732632769210 - kind: conda name: shellingham version: 1.5.4 @@ -11050,14 +11012,13 @@ packages: timestamp: 1733206968917 - kind: conda name: uvicorn - version: 0.32.1 - build: pyh31011fe_1 - build_number: 1 + version: 0.34.0 + build: pyh31011fe_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_1.conda - sha256: ad1d8470c629679ea3db52351a522ae44eee0111d8d8b254e8c863c4a292e5c4 - md5: 7832640e5e302059e844d56f410487a6 + url: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.34.0-pyh31011fe_0.conda + sha256: 55c160b0cf9274e2b98bc0f7fcce548bffa8d788bc86aa02801877457040f6fa + md5: 5d448feee86e4740498ec8f8eb40e052 depends: - __unix - click >=7.0 @@ -11066,31 +11027,30 @@ packages: - typing_extensions >=4.0 license: BSD-3-Clause license_family: BSD - size: 49340 - timestamp: 1733332048141 + size: 48643 + timestamp: 1734293057914 - kind: conda name: uvicorn-standard - version: 0.32.1 - build: h31011fe_1 - build_number: 1 + version: 0.34.0 + build: h31011fe_0 subdir: noarch noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_1.conda - sha256: 378903c51b2b1136fa48b01c0a2a8dd4634136d038a4a56561c0856fdcbfcabe - md5: 0c233d5c71d398cf01d0281e72194005 + url: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.34.0-h31011fe_0.conda + sha256: 87e1531e175e75122f9f37608eb953af4c977465ab0ae11283cc01fef954e4ec + md5: 32a94143a7f65d76d2d5da37dcb4ed79 depends: - __unix - - httptools >=0.5.0 + - httptools >=0.6.3 - python-dotenv >=0.13 - pyyaml >=5.1 - - uvicorn 0.32.1 pyh31011fe_1 + - uvicorn 0.34.0 pyh31011fe_0 - uvloop >=0.14.0,!=0.15.0,!=0.15.1 - watchfiles >=0.13 - websockets >=10.4 license: BSD-3-Clause license_family: BSD - size: 7094 - timestamp: 1733332049165 + size: 7203 + timestamp: 1734293058849 - kind: conda name: uvloop version: 0.21.0 @@ -11309,70 +11269,66 @@ packages: timestamp: 1732523852129 - kind: conda name: xorg-libice - version: 1.1.1 - build: h57736b2_1 - build_number: 1 + version: 1.1.2 + build: h86ecc28_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libice-1.1.1-h57736b2_1.conda - sha256: 525f197136d0c136dcba68b16d8f3636f27be111d677b2a06d8b99cf3f45ba4a - md5: 99a9c8245a1cc6dacd292ffeca39425f + url: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libice-1.1.2-h86ecc28_0.conda + sha256: a2ba1864403c7eb4194dacbfe2777acf3d596feae43aada8d1b478617ce45031 + md5: c8d8ec3e00cd0fd8a231789b91a7c5b7 depends: - libgcc >=13 license: MIT license_family: MIT - size: 60151 - timestamp: 1727533134400 + size: 60433 + timestamp: 1734229908988 - kind: conda name: xorg-libice - version: 1.1.1 - build: hb9d3cd8_1 - build_number: 1 + version: 1.1.2 + build: hb9d3cd8_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/xorg-libice-1.1.1-hb9d3cd8_1.conda - sha256: ec276da68d1c4a3d34a63195b35ca5b248d4aff0812464dcd843d74649b5cec4 - md5: 19608a9656912805b2b9a2f6bd257b04 + url: https://conda.anaconda.org/conda-forge/linux-64/xorg-libice-1.1.2-hb9d3cd8_0.conda + sha256: c12396aabb21244c212e488bbdc4abcdef0b7404b15761d9329f5a4a39113c4b + md5: fb901ff28063514abb6046c9ec2c4a45 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 license: MIT license_family: MIT - size: 58159 - timestamp: 1727531850109 + size: 58628 + timestamp: 1734227592886 - kind: conda name: xorg-libsm - version: 1.2.4 - build: hbac51e1_1 - build_number: 1 + version: 1.2.5 + build: h0808dbd_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libsm-1.2.4-hbac51e1_1.conda - sha256: 3d3c78a2e2a915d96b8bf8a670ba91e5abba50f55dc3ff699d345c958118e94c - md5: 18655ac9fc6624db89b33a89fed51c5f + url: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libsm-1.2.5-h0808dbd_0.conda + sha256: 2749a32a00ccd8feaab6039d7848ed875880c13d3b2601afd1788600ce5f9075 + md5: 3983c253f53f67a9d8710fc96646950f depends: - libgcc >=13 - libuuid >=2.38.1,<3.0a0 - xorg-libice >=1.1.1,<2.0a0 license: MIT license_family: MIT - size: 28357 - timestamp: 1727635998392 + size: 28061 + timestamp: 1734232077988 - kind: conda name: xorg-libsm - version: 1.2.4 - build: he73a12e_1 - build_number: 1 + version: 1.2.5 + build: he73a12e_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/xorg-libsm-1.2.4-he73a12e_1.conda - sha256: 70e903370977d44c9120a5641ab563887bd48446e9ef6fc2a3f5f60531c2cd6c - md5: 05a8ea5f446de33006171a7afe6ae857 + url: https://conda.anaconda.org/conda-forge/linux-64/xorg-libsm-1.2.5-he73a12e_0.conda + sha256: 760f43df6c2ce8cbbbcb8f2f3b7fc0f306716c011e28d1d340f3dfa8ccf29185 + md5: 4c3e9fab69804ec6077697922d70c6e2 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - libuuid >=2.38.1,<3.0a0 - - xorg-libice >=1.1.1,<2.0a0 + - xorg-libice >=1.1.2,<2.0a0 license: MIT license_family: MIT - size: 27516 - timestamp: 1727634669421 + size: 27198 + timestamp: 1734229639785 - kind: conda name: xorg-libx11 version: 1.8.10 @@ -11408,50 +11364,47 @@ packages: timestamp: 1733325062374 - kind: conda name: xorg-libxau - version: 1.0.11 - build: h86ecc28_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxau-1.0.11-h86ecc28_1.conda - sha256: a00c4c6054209c84fb460c5e4ae7193c335a9ee1851645c9ad59312438e853f7 - md5: c5f72a733c461aa7785518d29b997cc8 + version: 1.0.12 + build: h5505292_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxau-1.0.12-h5505292_0.conda + sha256: f33e6f013fc36ebc200f09ddead83468544cb5c353a3b50499b07b8c34e28a8d + md5: 50901e0764b7701d8ed7343496f4f301 depends: - - libgcc >=13 + - __osx >=11.0 license: MIT license_family: MIT - size: 15690 - timestamp: 1727036097294 + size: 13593 + timestamp: 1734229104321 - kind: conda name: xorg-libxau - version: 1.0.11 - build: hb9d3cd8_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.11-hb9d3cd8_1.conda - sha256: 532a046fee0b3a402db867b6ec55c84ba4cdedb91d817147c8feeae9766be3d6 - md5: 77cbc488235ebbaab2b6e912d3934bae + version: 1.0.12 + build: h86ecc28_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxau-1.0.12-h86ecc28_0.conda + sha256: 7829a0019b99ba462aece7592d2d7f42e12d12ccd3b9614e529de6ddba453685 + md5: d5397424399a66d33c80b1f2345a36a6 depends: - - __glibc >=2.17,<3.0.a0 - libgcc >=13 license: MIT license_family: MIT - size: 14679 - timestamp: 1727034741045 + size: 15873 + timestamp: 1734230458294 - kind: conda name: xorg-libxau - version: 1.0.11 - build: hd74edd7_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxau-1.0.11-hd74edd7_1.conda - sha256: 7113618021cf6c80831a429b2ebb9d639f3c43cf7fe2257d235dc6ae0ab43289 - md5: 7e0125f8fb619620a0011dc9297e2493 + version: 1.0.12 + build: hb9d3cd8_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-hb9d3cd8_0.conda + sha256: ed10c9283974d311855ae08a16dfd7e56241fac632aec3b92e3cfe73cff31038 + md5: f6ebe2cb3f82ba6c057dde5d9debe4f7 depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 license: MIT license_family: MIT - size: 13515 - timestamp: 1727034783560 + size: 14780 + timestamp: 1734229004433 - kind: conda name: xorg-libxdmcp version: 1.1.5 @@ -11559,37 +11512,35 @@ packages: timestamp: 1727794961233 - kind: conda name: xorg-libxrender - version: 0.9.11 - build: h86ecc28_2 - build_number: 2 + version: 0.9.12 + build: h86ecc28_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxrender-0.9.11-h86ecc28_2.conda - sha256: 7862c148e87eb8da9c09aafec22bd63bbd1ee222e1437e1df923f1ff838f60e4 - md5: eef57c0c07175e97d976c2cdfd235c43 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxrender-0.9.12-h86ecc28_0.conda + sha256: ffd77ee860c9635a28cfda46163dcfe9224dc6248c62404c544ae6b564a0be1f + md5: ae2c2dd0e2d38d249887727db2af960e depends: - libgcc >=13 - xorg-libx11 >=1.8.10,<2.0a0 license: MIT license_family: MIT - size: 38333 - timestamp: 1733755940446 + size: 33649 + timestamp: 1734229123157 - kind: conda name: xorg-libxrender - version: 0.9.11 - build: hb9d3cd8_2 - build_number: 2 + version: 0.9.12 + build: hb9d3cd8_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrender-0.9.11-hb9d3cd8_2.conda - sha256: a2f533fe2374789413a9dfa1369322573910f4b010fd24386cdd1c5cd977a087 - md5: eef3132295d92678c17ffc8b114b8371 + url: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrender-0.9.12-hb9d3cd8_0.conda + sha256: 044c7b3153c224c6cedd4484dd91b389d2d7fd9c776ad0f4a34f099b3389f4a1 + md5: 96d57aba173e878a2089d5638016dc5e depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - xorg-libx11 >=1.8.10,<2.0a0 license: MIT license_family: MIT - size: 37638 - timestamp: 1733755897245 + size: 33005 + timestamp: 1734229037766 - kind: conda name: xxhash version: 0.8.2 diff --git a/examples/magic.lock b/examples/magic.lock index 009cc7c7f1..bbc36e1ea4 100644 --- a/examples/magic.lock +++ b/examples/magic.lock @@ -10,17 +10,17 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.10-py311h2dc5d0c_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.7.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.3.0-pyh71513ae_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-hb921021_15.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.1-h1a47875_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.10.6-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.3.0-h4e1184b_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.0-h7959bf6_11.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.2-hefd7a92_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-hbf5b6a4_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-h831e299_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h11f4f37_12.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.7-hf454442_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.1-h4e1184b_4.conda @@ -35,9 +35,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/backoff-2.2.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py311hfdbb021_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.3-hb9d3cd8_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2024.8.30-hbcca054_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.8.30-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.4-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2024.12.14-hbcca054_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.12.14-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py311hf29c0ef_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_1.conda @@ -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.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.7-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 @@ -67,7 +67,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-7.0.2-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda @@ -81,14 +81,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-hcb10f89_6_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-hcb10f89_6_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-h3ee7192_6_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-25_linux64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-26_linux64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.1.0-hb9d3cd8_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-25_linux64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-26_linux64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libcrc32c-1.1.2-h9c3ff4c_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.11.1-h332b0f4_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.22-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.23-h4ddbbb0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20191231-he28a2e2_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libevent-2.1.12-hf998b51_1.conda @@ -104,7 +104,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.67.1-hc2c308b_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-hd590300_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-25_linux64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-26_linux64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.3-hb9d3cd8_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda @@ -119,7 +119,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-hc0a3c3a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libthrift-0.21.0-h0e7cc3e_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hc4654cb_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hd9ff511_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.9.0-hb9d3cd8_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.49.2-hb9d3cd8_0.conda @@ -131,12 +131,12 @@ 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-25.1.0.dev2024121405-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024121405-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024121405-3.11release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121405-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024121705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024121705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024121705-3.11release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121705-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-25.1.0.dev2024121405-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024121705-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 @@ -144,13 +144,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py311h64a7726_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.3-h5fbd93e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.0-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.28.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.28.2-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.28.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.29.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.29.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.29.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-prometheus-1.12.0rc1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.28.2-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.28.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh3cfb1c2_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.29.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.29.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.50b0-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/orc-2.0.3-h97ab989_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.3-py311h7db5c69_1.conda @@ -174,7 +174,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.20-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python-xxhash-3.5.0-py311h9ecbd09_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.11-5_cp311.conda @@ -187,9 +187,8 @@ environments: - 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/s2n-1.5.10-hb5b8611_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 - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-h8bd8927_1.conda @@ -209,13 +208,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.34.0-pyh31011fe_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.34.0-h31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/uvloop-0.21.0-py311h9ecbd09_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/watchfiles-1.0.3-py311h9e33e62_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/websockets-14.1-py311h9ecbd09_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.17.0-py311h9ecbd09_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.11-hb9d3cd8_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xxhash-0.8.2-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 @@ -228,17 +227,17 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.10-py311h58d527c_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.7.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.3.0-pyh71513ae_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-h2cb9fb3_15.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.1-h740c5af_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-common-0.10.6-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-compression-0.3.0-h0f0193d_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-event-stream-0.5.0-hcbd8f92_11.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.2-h3df160d_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-h92bf595_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-h1a307af_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h5f50e26_12.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.7-h2080895_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.1-h0f0193d_4.conda @@ -253,9 +252,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/backoff-2.2.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/brotli-python-1.1.0-py311h89d996e_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h68df207_7.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/c-ares-1.34.3-h86ecc28_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2024.8.30-hcefe29a_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.8.30-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/c-ares-1.34.4-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2024.12.14-hcefe29a_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.12.14-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cffi-1.17.1-py311h14e8bb7_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_1.conda @@ -268,7 +267,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.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.7-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 @@ -286,7 +285,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-7.0.2-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda @@ -300,14 +299,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h3b568fd_6_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h3b568fd_6_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h3ffb4b1_6_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-25_linuxaarch64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-26_linuxaarch64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlicommon-1.1.0-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlidec-1.1.0-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlienc-1.1.0-h86ecc28_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-25_linuxaarch64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-26_linuxaarch64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcrc32c-1.1.2-h01db608_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcurl-8.11.1-h6702fde_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libdeflate-1.22-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libdeflate-1.23-h5e3c512_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20191231-he28a2e2_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libev-4.33-h31becfc_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libevent-2.1.12-h4ba1bb4_1.conda @@ -323,7 +322,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgrpc-1.67.1-h36c5df4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libiconv-1.17-h31becfc_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libjpeg-turbo-3.0.0-h31becfc_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-25_linuxaarch64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-26_linuxaarch64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.3-h86ecc28_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnghttp2-1.64.0-hc8609a4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda @@ -338,7 +337,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libthrift-0.21.0-h154c74f_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.0-hca96517_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.0-h88f7998_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.9.0-h86ecc28_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuv-1.49.2-h86ecc28_0.conda @@ -350,12 +349,12 @@ 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-25.1.0.dev2024121405-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024121405-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024121405-3.11release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121405-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024121705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024121705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024121705-3.11release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121705-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-25.1.0.dev2024121405-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024121705-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 @@ -363,13 +362,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py311h69ead2a_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openjpeg-2.5.3-h3f56577_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.0-h86ecc28_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.28.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.28.2-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.28.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.29.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.29.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.29.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-prometheus-1.12.0rc1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.28.2-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.28.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh3cfb1c2_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.29.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.29.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.50b0-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/orc-2.0.3-h3c55218_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pandas-2.2.3-py311h848c333_1.conda @@ -393,7 +392,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.20-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-xxhash-3.5.0-py311h5487e9b_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.11-5_cp311.conda @@ -406,9 +405,8 @@ environments: - 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/s2n-1.5.10-h5df210e_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 - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-hd4fb6f5_1.conda @@ -428,13 +426,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.34.0-pyh31011fe_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.34.0-h31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/uvloop-0.21.0-py311ha879c10_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/watchfiles-1.0.3-py311h0ca61a2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/websockets-14.1-py311ha879c10_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/wrapt-1.17.0-py311ha879c10_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxau-1.0.11-h86ecc28_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxau-1.0.12-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxdmcp-1.1.5-h57736b2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xxhash-0.8.2-h31becfc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yaml-0.2.5-hf897c2e_2.tar.bz2 @@ -446,17 +444,17 @@ environments: osx-arm64: - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.10-py311h4921393_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.7.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.3.0-pyh71513ae_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-h8bc59a9_15.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.1-hc8a0bd2_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.10.6-h5505292_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-compression-0.3.0-hc8a0bd2_5.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.0-h54f970a_11.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.2-h96aa502_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-haba67d1_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-haba67d1_5.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h24f418c_12.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.7-h1be5864_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.1-hc8a0bd2_4.conda @@ -471,9 +469,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/backoff-2.2.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py311h3f08180_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.3-h5505292_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2024.8.30-hf0a4a13_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.8.30-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.4-h5505292_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2024.12.14-hf0a4a13_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.12.14-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.1-py311h3a79f62_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_1.conda @@ -486,7 +484,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.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.7-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 @@ -504,7 +502,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-7.0.2-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda @@ -516,15 +514,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-hf07054f_6_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-hf07054f_6_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-h86344ea_6_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-25_osxarm64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-26_osxarm64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.1.0-hd74edd7_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.1.0-hd74edd7_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlienc-1.1.0-hd74edd7_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-25_osxarm64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-26_osxarm64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcrc32c-1.1.2-hbdafb3b_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.11.1-h73640d1_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.5-ha82da77_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.22-hd74edd7_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.23-hec38601_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20191231-hc8eb9b7_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libev-4.33-h93a5062_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libevent-2.1.12-h2757513_1.conda @@ -537,7 +535,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgrpc-1.67.1-hc70892a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.17-h0d3ecfb_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.0.0-hb547adb_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-25_osxarm64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-26_osxarm64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.3-h39f12f2_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.64.0-h6d7220d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.28-openmp_hf332438_1.conda @@ -549,7 +547,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.47.2-h3f77e49_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.1-h9cc3647_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libthrift-0.21.0-h64651cc_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-ha962b0a_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-h551f018_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.9.0-h5505292_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libuv-1.49.2-h7ab814d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.4.0-h93a5062_0.conda @@ -560,12 +558,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-25.1.0.dev2024121405-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024121405-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024121405-3.11release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121405-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024121705-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024121705-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024121705-3.11release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121705-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-25.1.0.dev2024121405-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024121705-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 @@ -573,13 +571,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py311h7125741_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openjpeg-2.5.3-h8a3d83b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.0-h39f12f2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.28.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.28.2-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.28.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.29.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.29.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.29.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-prometheus-1.12.0rc1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.28.2-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.28.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh3cfb1c2_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.29.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.29.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.50b0-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/orc-2.0.3-hbcee414_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.3-py311h9cb3ce9_1.conda @@ -603,7 +601,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.20-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-xxhash-3.5.0-py311h460d6c5_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.11-5_cp311.conda @@ -617,7 +615,6 @@ environments: - 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 - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-h98b9ce2_1.conda @@ -637,13 +634,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.34.0-pyh31011fe_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.34.0-h31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/uvloop-0.21.0-py311hae2e1ce_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/watchfiles-1.0.3-py311h3ff9189_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/websockets-14.1-py311h917b07b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/wrapt-1.17.0-py311h917b07b_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxau-1.0.11-hd74edd7_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxau-1.0.12-h5505292_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxdmcp-1.1.5-hd74edd7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xxhash-0.8.2-hb547adb_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 @@ -789,21 +786,20 @@ packages: timestamp: 1733838911893 - kind: conda name: aiosignal - version: 1.3.1 - build: pyhd8ed1ab_1 - build_number: 1 + version: 1.3.2 + build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_1.conda - sha256: 9c7b639ea0cc796ef46c57fa104ec1f2ed53cd11c063518869a5a9d7d3b0b2db - md5: d736bd1b8904d7593dce4893e58a7881 + url: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda + sha256: 7de8ced1918bbdadecf8e1c1c68237fe5709c097bd9e0d254f4cad118f4345d0 + md5: 1a3981115a398535dbe3f6d5faae3d36 depends: - frozenlist >=1.1.0 - python >=3.9 license: Apache-2.0 license_family: APACHE - size: 13157 - timestamp: 1733332198143 + size: 13229 + timestamp: 1734342253061 - kind: conda name: annotated-types version: 0.7.0 @@ -845,20 +841,19 @@ packages: timestamp: 1733532678437 - kind: conda name: attrs - version: 24.2.0 - build: pyh71513ae_1 - build_number: 1 + version: 24.3.0 + build: pyh71513ae_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_1.conda - sha256: 8488a116dffe204015a90b41982c0270534bd1070f44a00b316d59e4a79ae8c7 - md5: 2018839db45c79654b57a924fcdd27d0 + url: https://conda.anaconda.org/conda-forge/noarch/attrs-24.3.0-pyh71513ae_0.conda + sha256: 750186af694a7130eaf7119fbb56db0d2326d8995ad5b8eae23c622b85fea29a + md5: 356927ace43302bf6f5926e2a58dae6a depends: - python >=3.9 license: MIT license_family: MIT - size: 56336 - timestamp: 1733520064905 + size: 56354 + timestamp: 1734348889193 - kind: conda name: aws-c-auth version: 0.8.0 @@ -1183,57 +1178,57 @@ packages: - kind: conda name: aws-c-io version: 0.15.3 - build: h92bf595_4 - build_number: 4 + build: h1a307af_5 + build_number: 5 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-h92bf595_4.conda - sha256: ffa2fc1ddb01f4b8ac038ab70a5533306119754ba438b23399f2a82a38cf27bf - md5: 539df02c00c506c78aebdf6c0fc75743 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-h1a307af_5.conda + sha256: 71f5bf891299f831dceaea12f926c393bf754569e5305387a88b77e1f94612d8 + md5: da8ab0f3eeac93449ec3d531ede92caa depends: - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.6,<0.10.7.0a0 - libgcc >=13 - - s2n >=1.5.9,<1.5.10.0a0 + - s2n >=1.5.10,<1.5.11.0a0 license: Apache-2.0 license_family: Apache - size: 161836 - timestamp: 1733997573790 + size: 161889 + timestamp: 1734433686109 - kind: conda name: aws-c-io version: 0.15.3 - build: haba67d1_4 - build_number: 4 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-haba67d1_4.conda - sha256: 2d0859b57439cd98e854577aa3e07eb171b590098d51a8c908bab5ec497a3d38 - md5: 74eace4fab8675263a848075e991d380 + build: h831e299_5 + build_number: 5 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-h831e299_5.conda + sha256: 5920009b1c6f9a2bc131a36725251894e4b4773fce29c4b1065d4213ae337abe + md5: 80dd9f0ddf935290d1dc00ec75ff3023 depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + - s2n >=1.5.10,<1.5.11.0a0 license: Apache-2.0 license_family: Apache - size: 136213 - timestamp: 1733997647724 + size: 157864 + timestamp: 1734433578570 - kind: conda name: aws-c-io version: 0.15.3 - build: hbf5b6a4_4 - build_number: 4 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-hbf5b6a4_4.conda - sha256: 3195fe431d3c43d6ecf749796d3acb093645c9d0de9998616641dada4b5fa2a6 - md5: ad3a6713063c18b9232c48e89ada03ac + build: haba67d1_5 + build_number: 5 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-haba67d1_5.conda + sha256: c0a1a2b0750225ac3dc07fd258c88c2be866bf8ac67ba3d50bb4ecec852ff8ee + md5: 4c5ff4134e76426a75b8c548984fa933 depends: - - __glibc >=2.17,<3.0.a0 + - __osx >=11.0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.6,<0.10.7.0a0 - - libgcc >=13 - - s2n >=1.5.9,<1.5.10.0a0 license: Apache-2.0 license_family: Apache - size: 157886 - timestamp: 1733997507332 + size: 135729 + timestamp: 1734433832730 - kind: conda name: aws-c-mqtt version: 0.11.0 @@ -1998,97 +1993,94 @@ packages: timestamp: 1720974522888 - kind: conda name: c-ares - version: 1.34.3 - build: h5505292_1 - build_number: 1 + version: 1.34.4 + build: h5505292_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.3-h5505292_1.conda - sha256: 6dfa83cbd9acc8671d439fe9c745a5716faf6cbadf2f1e18c841bcf86cbba5f2 - md5: fb72102e8a8f9bcd38e40af09ff41c42 + url: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.4-h5505292_0.conda + sha256: 09c0c8476e50b2955f474a4a1c17c4c047dd52993b5366b6ea8e968e583b921f + md5: c1c999a38a4303b29d75c636eaa13cf9 depends: - __osx >=11.0 license: MIT license_family: MIT - size: 179318 - timestamp: 1732447193278 + size: 179496 + timestamp: 1734208291879 - kind: conda name: c-ares - version: 1.34.3 - build: h86ecc28_1 - build_number: 1 + version: 1.34.4 + build: h86ecc28_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/c-ares-1.34.3-h86ecc28_1.conda - sha256: 1181db17781d9d66c1478e7fbc3e82dd273e9cb43ed910e1d0f8b3c96b16e290 - md5: 0cd9ebf65479cdceb6a4888b764dafcd + url: https://conda.anaconda.org/conda-forge/linux-aarch64/c-ares-1.34.4-h86ecc28_0.conda + sha256: 1187a41d4bb2afe02cb18690682edc98d1e9f5e0ccda638d8704a75ea1875bbe + md5: 356da36f35d36dcba16e43f1589d4e39 depends: - libgcc >=13 license: MIT license_family: MIT - size: 214791 - timestamp: 1732447020593 + size: 215979 + timestamp: 1734208193181 - kind: conda name: c-ares - version: 1.34.3 - build: hb9d3cd8_1 - build_number: 1 + version: 1.34.4 + build: hb9d3cd8_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.3-hb9d3cd8_1.conda - sha256: 732571ba6286dbccbf4c6450078a581b7a5620204faf876ff0ef282d77a6bfa8 - md5: ee228789a85f961d14567252a03e725f + url: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.4-hb9d3cd8_0.conda + sha256: d4f28d87b6339b94f74762c0076e29c8ef8ddfff51a564a92da2843573c18320 + md5: e2775acf57efd5af15b8e3d1d74d72d3 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 license: MIT license_family: MIT - size: 204857 - timestamp: 1732447031823 + size: 206085 + timestamp: 1734208189009 - kind: conda name: ca-certificates - version: 2024.8.30 + version: 2024.12.14 build: hbcca054_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2024.8.30-hbcca054_0.conda - sha256: afee721baa6d988e27fef1832f68d6f32ac8cc99cdf6015732224c2841a09cea - md5: c27d1c142233b5bc9ca570c6e2e0c244 + url: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2024.12.14-hbcca054_0.conda + sha256: 1afd7274cbc9a334d6d0bc62fa760acc7afdaceb0b91a8df370ec01fd75dc7dd + md5: 720523eb0d6a9b0f6120c16b2aa4e7de license: ISC - size: 159003 - timestamp: 1725018903918 + size: 157088 + timestamp: 1734208393264 - kind: conda name: ca-certificates - version: 2024.8.30 + version: 2024.12.14 build: hcefe29a_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2024.8.30-hcefe29a_0.conda - sha256: 2a2d827bee3775a85f0f1b2f2089291475c4416336d1b3a8cbce2964db547af8 - md5: 70e57e8f59d2c98f86b49c69e5074be5 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2024.12.14-hcefe29a_0.conda + sha256: ad7b43211051332a5a4e788bb4619a2d0ecb5be73e0f76be17f733a87d7effd1 + md5: 83b4ad1e6dc14df5891f3fcfdeb44351 license: ISC - size: 159106 - timestamp: 1725020043153 + size: 157096 + timestamp: 1734209301744 - kind: conda name: ca-certificates - version: 2024.8.30 + version: 2024.12.14 build: hf0a4a13_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2024.8.30-hf0a4a13_0.conda - sha256: 2db1733f4b644575dbbdd7994a8f338e6ef937f5ebdb74acd557e9dda0211709 - md5: 40dec13fd8348dbe303e57be74bd3d35 + url: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2024.12.14-hf0a4a13_0.conda + sha256: 256be633fd0882ccc1a7a32bc278547e1703f85082c0789a87a603ee3ab8fb82 + md5: 7cb381a6783d91902638e4ed1ebd478e license: ISC - size: 158482 - timestamp: 1725019034582 + size: 157091 + timestamp: 1734208344343 - kind: conda name: certifi - version: 2024.8.30 + version: 2024.12.14 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.8.30-pyhd8ed1ab_0.conda - sha256: 7020770df338c45ac6b560185956c32f0a5abf4b76179c037f115fc7d687819f - md5: 12f7d00853807b0531775e9be891cb11 + url: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.12.14-pyhd8ed1ab_0.conda + sha256: 048c16a9cbcb1fbad02083414d3bc7c1d0eea4b39aee6aa6bf8d1d5089ca8bad + md5: 6feb87357ecd66733be3279f16a8c400 depends: - - python >=3.7 + - python >=3.9 license: ISC - size: 163752 - timestamp: 1725278204397 + size: 161642 + timestamp: 1734380604767 - kind: conda name: cffi version: 1.17.1 @@ -2354,13 +2346,13 @@ packages: timestamp: 1733362427885 - kind: conda name: fastapi-cli - version: 0.0.6 + version: 0.0.7 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.6-pyhd8ed1ab_0.conda - sha256: f0a900e1d8158915c71d9064699d97fc137058f71f5cdd257d79dbac07a41b63 - md5: 3256783cc0dd4cf3ff17198ce3b1782e + url: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.7-pyhd8ed1ab_0.conda + sha256: 300683731013b7221922339cd40430bb3c2ddeeb658fd7e37f5099ffe64e4db0 + md5: d960e0ea9e1c561aa928f6c4439f04c7 depends: - python >=3.9 - rich-toolkit >=0.11.1 @@ -2368,8 +2360,8 @@ packages: - uvicorn-standard >=0.15.0 license: MIT license_family: MIT - size: 15512 - timestamp: 1733881782160 + size: 15546 + timestamp: 1734302408607 - kind: conda name: filelock version: 3.16.1 @@ -2841,20 +2833,21 @@ packages: timestamp: 1733211921194 - kind: conda name: importlib-metadata - version: 7.0.2 - build: pyha770c72_0 + version: 8.5.0 + build: pyha770c72_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-7.0.2-pyha770c72_0.conda - sha256: 9a26136d2cc81ccac209d6ae24281ceba3365fe34e34b2c45570f2a96e9d9c1b - md5: b050a4bb0e90ebd6e7fa4093d6346867 + url: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_1.conda + sha256: 13766b88fc5b23581530d3a0287c0c58ad82f60401afefab283bf158d2be55a9 + md5: 315607a3030ad5d5227e76e0733798ff depends: - - python >=3.8 + - python >=3.9 - zipp >=0.5 license: Apache-2.0 license_family: APACHE - size: 26900 - timestamp: 1709821273570 + size: 28623 + timestamp: 1733223207185 - kind: conda name: jinja2 version: 3.1.4 @@ -3485,66 +3478,63 @@ packages: - kind: conda name: libblas version: 3.9.0 - build: 25_linux64_openblas - build_number: 25 + build: 26_linux64_openblas + build_number: 26 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-25_linux64_openblas.conda - sha256: d6d12dc437d060f838820e9e61bf73baab651f91935ac594cf10beb9ef1b4450 - md5: 8ea26d42ca88ec5258802715fe1ee10b + url: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-26_linux64_openblas.conda + sha256: 30bd658682b124243f8e52d8edf8a19e7be1bc31e4fe4baec30a64002dc8cd0c + md5: ac52800af2e0c0e7dac770b435ce768a depends: - libopenblas >=0.3.28,<0.3.29.0a0 - libopenblas >=0.3.28,<1.0a0 constrains: - - liblapack 3.9.0 25_linux64_openblas - - libcblas 3.9.0 25_linux64_openblas + - libcblas 3.9.0 26_linux64_openblas + - liblapack 3.9.0 26_linux64_openblas + - liblapacke 3.9.0 26_linux64_openblas - blas * openblas - - liblapacke 3.9.0 25_linux64_openblas license: BSD-3-Clause - license_family: BSD - size: 15677 - timestamp: 1729642900350 + size: 16393 + timestamp: 1734432564346 - kind: conda name: libblas version: 3.9.0 - build: 25_linuxaarch64_openblas - build_number: 25 + build: 26_linuxaarch64_openblas + build_number: 26 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-25_linuxaarch64_openblas.conda - sha256: 5c08f78312874bb61307f5ea737377df2d0f6e7f7833ded21ca58d8820c794ca - md5: f9b8a4a955ed2d0b68b1f453abcc1c9e + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-26_linuxaarch64_openblas.conda + sha256: df6d8ee34d45cf35609ecdd55c1ff03e32e0cd87ae41ebe4ef3747a8e09ead4d + md5: 8d900b7079a00969d70305e9aad550b7 depends: - libopenblas >=0.3.28,<0.3.29.0a0 - libopenblas >=0.3.28,<1.0a0 constrains: - blas * openblas - - liblapacke 3.9.0 25_linuxaarch64_openblas - - liblapack 3.9.0 25_linuxaarch64_openblas - - libcblas 3.9.0 25_linuxaarch64_openblas + - liblapacke 3.9.0 26_linuxaarch64_openblas + - libcblas 3.9.0 26_linuxaarch64_openblas + - liblapack 3.9.0 26_linuxaarch64_openblas license: BSD-3-Clause - license_family: BSD - size: 15808 - timestamp: 1729643002627 + size: 16477 + timestamp: 1734432576699 - kind: conda name: libblas version: 3.9.0 - build: 25_osxarm64_openblas - build_number: 25 + build: 26_osxarm64_openblas + build_number: 26 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-25_osxarm64_openblas.conda - sha256: f1fb9a11af0b2878bd8804b4c77d3733c40076218bcbdb35f575b1c0c9fddf11 - md5: f8cf4d920ff36ce471619010eff59cac + url: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-26_osxarm64_openblas.conda + sha256: 597f9c3779caa979c8c6abbb3ba8c7191b84e1a910d6b0d10e5faf35284c450c + md5: 21be102c9ae80a67ba7de23b129aa7f6 depends: - libopenblas >=0.3.28,<0.3.29.0a0 - libopenblas >=0.3.28,<1.0a0 constrains: + - liblapack 3.9.0 26_osxarm64_openblas + - liblapacke 3.9.0 26_osxarm64_openblas + - libcblas 3.9.0 26_osxarm64_openblas - blas * openblas - - liblapack 3.9.0 25_osxarm64_openblas - - liblapacke 3.9.0 25_osxarm64_openblas - - libcblas 3.9.0 25_osxarm64_openblas license: BSD-3-Clause - license_family: BSD - size: 15913 - timestamp: 1729643265495 + size: 16714 + timestamp: 1734433054681 - kind: conda name: libbrotlicommon version: 1.1.0 @@ -3692,60 +3682,57 @@ packages: - kind: conda name: libcblas version: 3.9.0 - build: 25_linux64_openblas - build_number: 25 + build: 26_linux64_openblas + build_number: 26 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-25_linux64_openblas.conda - sha256: ab87b0477078837c91d9cda62a9faca18fba7c57cc77aa779ae24b3ac783b5dd - md5: 5dbd1b0fc0d01ec5e0e1fbe667281a11 + url: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-26_linux64_openblas.conda + sha256: 9c74e536c9bc868e356ffd43f81c2cb398aec84b40fcadc312315b164a5500ee + md5: ebcc5f37a435aa3c19640533c82f8d76 depends: - - libblas 3.9.0 25_linux64_openblas + - libblas 3.9.0 26_linux64_openblas constrains: - - liblapack 3.9.0 25_linux64_openblas + - liblapack 3.9.0 26_linux64_openblas + - liblapacke 3.9.0 26_linux64_openblas - blas * openblas - - liblapacke 3.9.0 25_linux64_openblas license: BSD-3-Clause - license_family: BSD - size: 15613 - timestamp: 1729642905619 + size: 16336 + timestamp: 1734432570482 - kind: conda name: libcblas version: 3.9.0 - build: 25_linuxaarch64_openblas - build_number: 25 + build: 26_linuxaarch64_openblas + build_number: 26 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-25_linuxaarch64_openblas.conda - sha256: fde797e5528040fed0e9228dd75331be0cf5cbb0bc63641f53c3cca9eb86ec16 - md5: db6af51123c67814572a8c25542cb368 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-26_linuxaarch64_openblas.conda + sha256: 521e78be0c4170f229c43e1a6c94337a72db3ebcbe6e5960f8413aa438dcb8f9 + md5: d77f943ae4083f3aeddca698f2d28262 depends: - - libblas 3.9.0 25_linuxaarch64_openblas + - libblas 3.9.0 26_linuxaarch64_openblas constrains: - blas * openblas - - liblapacke 3.9.0 25_linuxaarch64_openblas - - liblapack 3.9.0 25_linuxaarch64_openblas + - liblapacke 3.9.0 26_linuxaarch64_openblas + - liblapack 3.9.0 26_linuxaarch64_openblas license: BSD-3-Clause - license_family: BSD - size: 15700 - timestamp: 1729643006729 + size: 16398 + timestamp: 1734432580937 - kind: conda name: libcblas version: 3.9.0 - build: 25_osxarm64_openblas - build_number: 25 + build: 26_osxarm64_openblas + build_number: 26 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-25_osxarm64_openblas.conda - sha256: d9fa5b6b11252132a3383bbf87bd2f1b9d6248bef1b7e113c2a8ae41b0376218 - md5: 4df0fae81f0b5bf47d48c882b086da11 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-26_osxarm64_openblas.conda + sha256: 27a29ef6b2fd2179bc3a0bb9db351f078ba140ca10485dca147c399639f84c93 + md5: a0e9980fe12d42f6d0c0ec009f67e948 depends: - - libblas 3.9.0 25_osxarm64_openblas + - libblas 3.9.0 26_osxarm64_openblas constrains: + - liblapack 3.9.0 26_osxarm64_openblas + - liblapacke 3.9.0 26_osxarm64_openblas - blas * openblas - - liblapack 3.9.0 25_osxarm64_openblas - - liblapacke 3.9.0 25_osxarm64_openblas license: BSD-3-Clause - license_family: BSD - size: 15837 - timestamp: 1729643270793 + size: 16628 + timestamp: 1734433061517 - kind: conda name: libcrc32c version: 1.1.2 @@ -3867,47 +3854,44 @@ packages: timestamp: 1733291654212 - kind: conda name: libdeflate - version: '1.22' - build: h86ecc28_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libdeflate-1.22-h86ecc28_0.conda - sha256: 986207f130703897300ddc3637c52e86a5b21c735fe384bf48554d9a6d91c56d - md5: ff6a44e8b1707d02be2fe9a36ea88d4a + version: '1.23' + build: h4ddbbb0_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.23-h4ddbbb0_0.conda + sha256: 511d801626d02f4247a04fff957cc6e9ec4cc7e8622bd9acd076bcdc5de5fe66 + md5: 8dfae1d2e74767e9ce36d5fa0d8605db depends: + - __glibc >=2.17,<3.0.a0 - libgcc >=13 license: MIT - license_family: MIT - size: 69601 - timestamp: 1728177137503 + size: 72255 + timestamp: 1734373823254 - kind: conda name: libdeflate - version: '1.22' - build: hb9d3cd8_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.22-hb9d3cd8_0.conda - sha256: 780f0530a3adfc1497ba49d626931c6afc978c540e1abfde6ccd57128ded6ad6 - md5: b422943d5d772b7cc858b36ad2a92db5 + version: '1.23' + build: h5e3c512_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libdeflate-1.23-h5e3c512_0.conda + sha256: 959419d87cd2b789a9055db95704c614f31aeb70bef7949fa2f734122a3a2863 + md5: 7e7ca2607b11b180120cefc2354fc0cb depends: - - __glibc >=2.17,<3.0.a0 - libgcc >=13 license: MIT - license_family: MIT - size: 72242 - timestamp: 1728177071251 + size: 69862 + timestamp: 1734373858306 - kind: conda name: libdeflate - version: '1.22' - build: hd74edd7_0 + version: '1.23' + build: hec38601_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.22-hd74edd7_0.conda - sha256: 3552894ca62bebc33d05982937cda25a4fa19e56a82af2ff20944ff4c2532fda - md5: 2d3e3f3d8ab315748420ef58d5a3ae0f + url: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.23-hec38601_0.conda + sha256: 887c02deaed6d583459eba6367023e36d8761085b2f7126e389424f57155da53 + md5: 1d8b9588be14e71df38c525767a1ac30 depends: - __osx >=11.0 license: MIT - license_family: MIT - size: 54089 - timestamp: 1728177149927 + size: 54132 + timestamp: 1734373971372 - kind: conda name: libedit version: 3.1.20191231 @@ -4631,60 +4615,57 @@ packages: - kind: conda name: liblapack version: 3.9.0 - build: 25_linux64_openblas - build_number: 25 + build: 26_linux64_openblas + build_number: 26 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-25_linux64_openblas.conda - sha256: 9d1ff017714edb2d84868f0f931a4a0e7c289a971062b2ac66cfc8145df7e20e - md5: 4dc03a53fc69371a6158d0ed37214cd3 + url: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-26_linux64_openblas.conda + sha256: b76458c36331376911e0f98fa68109e02f4d5e5ebfffa79587ac69cef748bba1 + md5: 3792604c43695d6a273bc5faaac47d48 depends: - - libblas 3.9.0 25_linux64_openblas + - libblas 3.9.0 26_linux64_openblas constrains: - - liblapacke 3.9.0 25_linux64_openblas - - libcblas 3.9.0 25_linux64_openblas + - libcblas 3.9.0 26_linux64_openblas + - liblapacke 3.9.0 26_linux64_openblas - blas * openblas license: BSD-3-Clause - license_family: BSD - size: 15608 - timestamp: 1729642910812 + size: 16338 + timestamp: 1734432576650 - kind: conda name: liblapack version: 3.9.0 - build: 25_linuxaarch64_openblas - build_number: 25 + build: 26_linuxaarch64_openblas + build_number: 26 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-25_linuxaarch64_openblas.conda - sha256: 2b399e65e0338bf249657b98333e910cd7086ea1332d4d6f303735883ca49318 - md5: 0eb74e81de46454960bde9e44e7ee378 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-26_linuxaarch64_openblas.conda + sha256: a42bd01498efe2ccf6d08d56ac3cbd3ceab79e06699ff5aac3da8e45a66738f7 + md5: a5d4e18876393633da62fd8492c00156 depends: - - libblas 3.9.0 25_linuxaarch64_openblas + - libblas 3.9.0 26_linuxaarch64_openblas constrains: - blas * openblas - - liblapacke 3.9.0 25_linuxaarch64_openblas - - libcblas 3.9.0 25_linuxaarch64_openblas + - liblapacke 3.9.0 26_linuxaarch64_openblas + - libcblas 3.9.0 26_linuxaarch64_openblas license: BSD-3-Clause - license_family: BSD - size: 15711 - timestamp: 1729643010817 + size: 16403 + timestamp: 1734432585123 - kind: conda name: liblapack version: 3.9.0 - build: 25_osxarm64_openblas - build_number: 25 + build: 26_osxarm64_openblas + build_number: 26 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-25_osxarm64_openblas.conda - sha256: fdd742407672a9af20e70764550cf18b3ab67f12e48bf04163b90492fbc401e7 - md5: 19bbddfec972d401838330453186108d + url: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-26_osxarm64_openblas.conda + sha256: dd6d9a21e672aee4332f019c8229ce70cf5eaf6c2f4cbd1443b105fb66c00dc5 + md5: cebad79038a75cfd28fa90d147a2d34d depends: - - libblas 3.9.0 25_osxarm64_openblas + - libblas 3.9.0 26_osxarm64_openblas constrains: + - liblapacke 3.9.0 26_osxarm64_openblas + - libcblas 3.9.0 26_osxarm64_openblas - blas * openblas - - liblapacke 3.9.0 25_osxarm64_openblas - - libcblas 3.9.0 25_osxarm64_openblas license: BSD-3-Clause - license_family: BSD - size: 15823 - timestamp: 1729643275943 + size: 16624 + timestamp: 1734433068120 - kind: conda name: liblzma version: 5.6.3 @@ -5341,38 +5322,37 @@ packages: - kind: conda name: libtiff version: 4.7.0 - build: ha962b0a_2 - build_number: 2 + build: h551f018_3 + build_number: 3 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-ha962b0a_2.conda - sha256: d9e6835fd189b85eb90dbfdcc51f5375decbf5bb53130042f49bbd6bfb0b24be - md5: 8e14b5225c593f099a21971568e6d7b4 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-h551f018_3.conda + sha256: 91417846157e04992801438a496b151df89604b2e7c6775d6f701fcd0cbed5ae + md5: a5d084a957563e614ec0c0196d890654 depends: - __osx >=11.0 - lerc >=4.0.0,<5.0a0 - libcxx >=18 - - libdeflate >=1.22,<1.23.0a0 + - libdeflate >=1.23,<1.24.0a0 - libjpeg-turbo >=3.0.0,<4.0a0 - liblzma >=5.6.3,<6.0a0 - libwebp-base >=1.4.0,<2.0a0 - libzlib >=1.3.1,<2.0a0 - zstd >=1.5.6,<1.6.0a0 license: HPND - size: 370387 - timestamp: 1733443310502 + size: 370600 + timestamp: 1734398863052 - kind: conda name: libtiff version: 4.7.0 - build: hc4654cb_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hc4654cb_2.conda - sha256: 18653b4a5c73e19c5e86ff72dab9bf59f5cc43d7f404a6be705d152dfd5e0660 - md5: be54fb40ea32e8fe9dbaa94d4528b57e + build: h88f7998_3 + build_number: 3 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.0-h88f7998_3.conda + sha256: 5888bd66ba7606ae8596856c7dac800940ecad0aed77d6aa37db69d434c81cf0 + md5: 36a0ea4a173338c8725dc0807e99cf22 depends: - - __glibc >=2.17,<3.0.a0 - lerc >=4.0.0,<5.0a0 - - libdeflate >=1.22,<1.23.0a0 + - libdeflate >=1.23,<1.24.0a0 - libgcc >=13 - libjpeg-turbo >=3.0.0,<4.0a0 - liblzma >=5.6.3,<6.0a0 @@ -5381,20 +5361,21 @@ packages: - libzlib >=1.3.1,<2.0a0 - zstd >=1.5.6,<1.6.0a0 license: HPND - size: 429018 - timestamp: 1733443013288 + size: 464699 + timestamp: 1734398752249 - kind: conda name: libtiff version: 4.7.0 - build: hca96517_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.0-hca96517_2.conda - sha256: d736d840d1f2446234195adfcb51b132c85797730b6f42ebf058d350fa9d20e8 - md5: 278dcef6d1ea28c04109c3f5dea126cb + build: hd9ff511_3 + build_number: 3 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hd9ff511_3.conda + sha256: b224e16b88d76ea95e4af56e2bc638c603bd26a770b98d117d04541d3aafa002 + md5: 0ea6510969e1296cc19966fad481f6de depends: + - __glibc >=2.17,<3.0.a0 - lerc >=4.0.0,<5.0a0 - - libdeflate >=1.22,<1.23.0a0 + - libdeflate >=1.23,<1.24.0a0 - libgcc >=13 - libjpeg-turbo >=3.0.0,<4.0a0 - liblzma >=5.6.3,<6.0a0 @@ -5403,8 +5384,8 @@ packages: - libzlib >=1.3.1,<2.0a0 - zstd >=1.5.6,<1.6.0a0 license: HPND - size: 464857 - timestamp: 1733443105529 + size: 428173 + timestamp: 1734398813264 - kind: conda name: libutf8proc version: 2.9.0 @@ -5902,76 +5883,76 @@ packages: timestamp: 1733220925299 - kind: conda name: max - version: 25.1.0.dev2024121405 + version: 25.1.0.dev2024121705 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024121405-release.conda - sha256: 6bacaa1d4f27d255a4c3907c28929865eeef5d45d64d61c3991b526aee14766d - md5: 1aec535b4731af73dd1b43472e7b6fa0 - depends: - - max-core ==25.1.0.dev2024121405 release - - max-python >=25.1.0.dev2024121405,<26.0a0 - - mojo-jupyter ==25.1.0.dev2024121405 release - - mblack ==25.1.0.dev2024121405 release + url: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024121705-release.conda + sha256: 83b2265b29c1ee69ae9d9f639ab04899d0ef15b5abc9114e034e2cd382dcad31 + md5: bd7165d97ebb0458ddb1ce616c146c24 + depends: + - max-core ==25.1.0.dev2024121705 release + - max-python >=25.1.0.dev2024121705,<26.0a0 + - mojo-jupyter ==25.1.0.dev2024121705 release + - mblack ==25.1.0.dev2024121705 release license: LicenseRef-Modular-Proprietary size: 9921 - timestamp: 1734153430066 + timestamp: 1734412638047 - kind: conda name: max-core - version: 25.1.0.dev2024121405 + version: 25.1.0.dev2024121705 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024121405-release.conda - sha256: 14f953430105c8f2bb8f3bdf1e3fb7e9acbb20613ad47c9ac1e88462e0cc804d - md5: d88d69b1696ed9d5795c8d346bbd4311 + url: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024121705-release.conda + sha256: 15459b8446d3feb608baae398cf2753a3704e02e07cf2a6c02e166068d8a9304 + md5: 4ca65aff37bd7e944cce1697c1fe203e depends: - - mblack ==25.1.0.dev2024121405 release + - mblack ==25.1.0.dev2024121705 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 245597032 - timestamp: 1734153445516 + size: 245744992 + timestamp: 1734412638045 - kind: conda name: max-core - version: 25.1.0.dev2024121405 + version: 25.1.0.dev2024121705 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024121405-release.conda - sha256: e3936f8021fc72f7f2673e2653e7bbd3d325fb44818b868bb49c24e5c1766eaf - md5: ea674f5d9232d89046ad99090cc195a7 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024121705-release.conda + sha256: e89be4d7691a354a3f6e5d71e25b49447ca9fd1048fe03355c3bc509a726234d + md5: acc4b1208feaba5ad08c1b370192e127 depends: - - mblack ==25.1.0.dev2024121405 release + - mblack ==25.1.0.dev2024121705 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 249408423 - timestamp: 1734153430064 + size: 249373255 + timestamp: 1734412698620 - kind: conda name: max-core - version: 25.1.0.dev2024121405 + version: 25.1.0.dev2024121705 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024121405-release.conda - sha256: b6bb97d20f0f7371a647778d18fe78f839e37eef423542ae3f4e75b018ffd8db - md5: 0e2d8c487ef68866164af9dff49f5119 + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024121705-release.conda + sha256: edd613b122c086c4d6237c7195a55ce09bff9922ab70e0f1ff7a9662d3de41fe + md5: d68326deab9bb460f253bf6df7e903f6 depends: - - mblack ==25.1.0.dev2024121405 release + - mblack ==25.1.0.dev2024121705 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 214323771 - timestamp: 1734153633668 + size: 214152137 + timestamp: 1734412888834 - kind: conda name: max-python - version: 25.1.0.dev2024121405 + version: 25.1.0.dev2024121705 build: 3.11release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024121405-3.11release.conda - sha256: 502b2762fa8c3c8323c0bc808d20b0b362625e4f14774092b14e059e839553f7 - md5: 4a6c3363d9f3bd1ae8bee0c6f6aa055d + url: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024121705-3.11release.conda + sha256: b5610ed703f232815e735d9c97f50c90463558e7a2077fbf7263e8d92d8720a7 + md5: bd28c42c3fcb0456710f4c1b218086cd depends: - - max-core ==25.1.0.dev2024121405 release + - max-core ==25.1.0.dev2024121705 release - python 3.11.* - fastapi - httpx @@ -5994,18 +5975,18 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 122849243 - timestamp: 1734153445523 + size: 122766289 + timestamp: 1734412638053 - kind: conda name: max-python - version: 25.1.0.dev2024121405 + version: 25.1.0.dev2024121705 build: 3.11release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024121405-3.11release.conda - sha256: e44d87b086bfeb4de11ba726e3798bb1378c4aaeaca827c286b5f5863bd4bf35 - md5: c4ba0fecf0e7f2c6ccdd888380279c3e + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024121705-3.11release.conda + sha256: 3a468f1f2a0deadb88d19cd64dd7d851cc1c532abb21771f3a22774cb09cd924 + md5: 018c6b78b66588ca7bb7ea6e3945cdf7 depends: - - max-core ==25.1.0.dev2024121405 release + - max-core ==25.1.0.dev2024121705 release - python 3.11.* - fastapi - httpx @@ -6028,18 +6009,18 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 126602880 - timestamp: 1734153430072 + size: 126510391 + timestamp: 1734412698629 - kind: conda name: max-python - version: 25.1.0.dev2024121405 + version: 25.1.0.dev2024121705 build: 3.11release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024121405-3.11release.conda - sha256: 9200599e66ff284e1a8c5dada708e38514aec5765d4e3877203dc467e547f786 - md5: 8bba2a833d2fc758ff8ede3428fa9595 + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024121705-3.11release.conda + sha256: 2b5430672662e4db6910032aa5920c120d55172b0bf34a75bcbf4e032d1cf2de + md5: 4be6188642aaf3e4f16ce42c82905992 depends: - - max-core ==25.1.0.dev2024121405 release + - max-core ==25.1.0.dev2024121705 release - python 3.11.* - fastapi - httpx @@ -6062,17 +6043,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 113433542 - timestamp: 1734153633670 + size: 113404099 + timestamp: 1734412888836 - kind: conda name: mblack - version: 25.1.0.dev2024121405 + version: 25.1.0.dev2024121705 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121405-release.conda - sha256: ea23ea9fdb019aa4dc05bcb1d1f526f77ce90a94baa3130d26ce71cad0a3647b - md5: 425b85251efa151234c9db33428ee55c + url: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121705-release.conda + sha256: 44d0c3a0b1242823334d6bad895ad037849719f67bcfbc426c65363c567f80a5 + md5: 93c89483058dabd0282c378812328ba0 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -6082,8 +6063,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130792 - timestamp: 1734153430070 + size: 130801 + timestamp: 1734412638051 - kind: conda name: mdurl version: 0.1.2 @@ -6102,21 +6083,21 @@ packages: timestamp: 1733255681319 - kind: conda name: mojo-jupyter - version: 25.1.0.dev2024121405 + version: 25.1.0.dev2024121705 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024121405-release.conda - sha256: b232fe63e84736d519137d4c98067c886f8acc1cc38a6620a062f4eb079e751a - md5: b7d7fe85425c5120a665795eb2097aa9 + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024121705-release.conda + sha256: 8ef8447f576590d381ccaa82e6c207c530e9355b07ab3174f3df9c9f064d42de + md5: 4c31e34ff54c71cd9d584d3ab8f1c315 depends: - - max-core ==25.1.0.dev2024121405 release + - max-core ==25.1.0.dev2024121705 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22934 - timestamp: 1734153430071 + size: 22937 + timestamp: 1734412638052 - kind: conda name: multidict version: 6.1.0 @@ -6455,62 +6436,61 @@ packages: timestamp: 1731377666602 - kind: conda name: opentelemetry-api - version: 1.28.2 + version: 1.29.0 build: pyhd8ed1ab_1 build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.28.2-pyhd8ed1ab_1.conda - sha256: 780dbc942a6075db7bdbaf556023be50c34a6111a99e465878d7bab0e5e0d7f4 - md5: a06f1e9d97c98d26f06675236c9ea554 + url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.29.0-pyhd8ed1ab_1.conda + sha256: 296280c8ace35c0a1cf72bed1077f248b3af903c3bf92332f1783a207cb5abdb + md5: 307b05402c1a382f2f09426492dee8f8 depends: - deprecated >=1.2.6 - - importlib-metadata >=6.0.0,<7.1.0 + - importlib-metadata >=6.0,<=8.5.0 - python >=3.9 - - setuptools >=16.0 license: Apache-2.0 license_family: APACHE - size: 44242 - timestamp: 1733734361129 + size: 44166 + timestamp: 1734132973331 - kind: conda name: opentelemetry-exporter-otlp-proto-common - version: 1.28.2 - build: pyhff2d567_0 + version: 1.29.0 + build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.28.2-pyhff2d567_0.conda - sha256: 838525f5a35f130eb3e6ccf06700ab7574467e8abe19da91e6f0de3b399e77c2 - md5: b00b3a8f0d25d5b18979c73ec051c313 + url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.29.0-pyhd8ed1ab_0.conda + sha256: ae9776efe52564e0d6711cfcee7c54439273e57a3999f7f796f66e862f58aae9 + md5: 0c02e74d26bce3fec93b227cf7ea6e6b depends: - backoff >=1.10.0,<3.0.0 - - opentelemetry-proto 1.28.2 + - opentelemetry-proto 1.29.0 - python >=3.9 license: Apache-2.0 license_family: APACHE - size: 18838 - timestamp: 1731991715474 + size: 18922 + timestamp: 1734310457116 - kind: conda name: opentelemetry-exporter-otlp-proto-http - version: 1.28.2 - build: pyhd8ed1ab_0 + version: 1.29.0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.28.2-pyhd8ed1ab_0.conda - sha256: d89b7b0f28dca5ed84d8c3421e3b16683f764c9eebde66cc8858fc183751af69 - md5: 73810c011d2d60914ce8f92fe99564a0 + url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.29.0-pyhd8ed1ab_1.conda + sha256: 5d61db9d5b4f91b3932f5f2348920d5b7fdaa09e52c8ea054cf7bf3f21677c9c + md5: 223f4e56a29601c887f0dc467034af5b depends: - deprecated >=1.2.6 - - googleapis-common-protos ~=1.52 - - opentelemetry-api ~=1.15 - - opentelemetry-exporter-otlp-proto-common 1.28.2 - - opentelemetry-proto 1.28.2 - - opentelemetry-sdk ~=1.28.2 - - python >=3.8 - - requests ~=2.7 + - googleapis-common-protos >=1.52,<2.dev0 + - opentelemetry-api >=1.15,<2.dev0 + - opentelemetry-exporter-otlp-proto-common 1.29.0 + - opentelemetry-proto 1.29.0 + - opentelemetry-sdk 1.29.0 + - python >=3.9 + - requests >=2.7,<3.dev0 license: Apache-2.0 - license_family: APACHE - size: 17007 - timestamp: 1732094238214 + size: 17147 + timestamp: 1734345675510 - kind: conda name: opentelemetry-exporter-prometheus version: 1.12.0rc1 @@ -6531,58 +6511,56 @@ packages: timestamp: 1695214221489 - kind: conda name: opentelemetry-proto - version: 1.28.2 - build: pyhff2d567_0 + version: 1.29.0 + build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.28.2-pyhff2d567_0.conda - sha256: e68320a465b45e05f569c440a20735db9a0fd7cdb9e52300506660a924d17caf - md5: 54ac33b32171ce2205b6639da1a1ac54 + url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.29.0-pyhd8ed1ab_0.conda + sha256: 200a7cb8acc8a0ddd6ef55c5460cec871b6a265929b240a0296c0ccb9c8d9758 + md5: e2a6d2ad10b813c7fdc1c64aac376128 depends: - protobuf <6.0,>=5.0 - python >=3.9 license: Apache-2.0 license_family: APACHE - size: 37108 - timestamp: 1731988686996 + size: 37235 + timestamp: 1734291034372 - kind: conda name: opentelemetry-sdk - version: 1.28.2 - build: pyhd8ed1ab_1 - build_number: 1 + version: 1.29.0 + build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.28.2-pyhd8ed1ab_1.conda - sha256: 9f48ec749f0738910fdd6750f9655f16949182b5379dd2c0771104d3e74bfd74 - md5: bfe29ef92f3a04ab8e59e4f97b28785c + url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.29.0-pyhd8ed1ab_0.conda + sha256: 7b36629d8b8be8a019fcfd1518d7b7f862dd25de96f8adcadb93e4fd12cf9bd6 + md5: 2a8893f06e6ebda4bfa78875bc923ea4 depends: - - opentelemetry-api 1.28.2 - - opentelemetry-semantic-conventions 0.49b2 + - opentelemetry-api 1.29.0 + - opentelemetry-semantic-conventions 0.50b0 - python >=3.9 - typing-extensions >=3.7.4 - typing_extensions >=3.7.4 license: Apache-2.0 license_family: APACHE - size: 78090 - timestamp: 1733768582451 + size: 77645 + timestamp: 1734297838999 - kind: conda name: opentelemetry-semantic-conventions - version: 0.49b2 - build: pyh3cfb1c2_1 - build_number: 1 + version: 0.50b0 + build: pyh3cfb1c2_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh3cfb1c2_1.conda - sha256: 28180ffa6611f117c782c7d72066b50332c1df0bdcfed0dea4e446a20c4b7d10 - md5: e0ada55d18e6bd5a8e61943b4b5d3a8f + url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.50b0-pyh3cfb1c2_0.conda + sha256: 6526e70368d5bf66ef0eaa51fb800d53782dde71a24bd38f40139919a6f784dc + md5: f7111fa4188d646c8108e232d024cb99 depends: - deprecated >=1.2.6 - - opentelemetry-api 1.28.2 + - opentelemetry-api 1.29.0 - python >=3.9 license: Apache-2.0 license_family: APACHE - size: 81099 - timestamp: 1733749104727 + size: 86084 + timestamp: 1734208980168 - kind: conda name: orc version: 2.0.3 @@ -7255,6 +7233,7 @@ packages: - python >=3.9 - python-dotenv >=0.21.0 license: MIT + license_family: MIT size: 31426 timestamp: 1734127929720 - kind: conda @@ -7481,20 +7460,19 @@ packages: timestamp: 1677079727691 - kind: conda name: python-multipart - version: 0.0.19 - build: pyhff2d567_1 - build_number: 1 + version: 0.0.20 + build: pyhff2d567_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_1.conda - sha256: e6f6bc3d2a51f45ca26d556c5a416efdacf49a918fefcd0b7c340121e608aa5f - md5: c74333aa447ed2b94d49e5db23da5de6 + url: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.20-pyhff2d567_0.conda + sha256: 1b03678d145b1675b757cba165a0d9803885807792f7eb4495e48a38858c3cca + md5: a28c984e0429aff3ab7386f7de56de6f depends: - python >=3.9 license: Apache-2.0 license_family: Apache - size: 27768 - timestamp: 1733323160772 + size: 27913 + timestamp: 1734420869885 - kind: conda name: python-tzdata version: '2024.2' @@ -7951,35 +7929,35 @@ packages: timestamp: 1733750834072 - kind: conda name: s2n - version: 1.5.9 - build: h0fd0ee4_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/s2n-1.5.9-h0fd0ee4_0.conda - sha256: f2c8e55d6caa8d87a482b1f133963c184de1ccb2303b77cc8ca86c794253f151 - md5: f472432f3753c5ca763d2497e2ea30bf + version: 1.5.10 + build: h5df210e_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/s2n-1.5.10-h5df210e_0.conda + sha256: b5e7a9f4b7b1ec5c5c3661e2defc8b47fab543b05cad6fec78739d8007612464 + md5: 3d3979efcc0f44f3f0cef3de03b296cc depends: - - __glibc >=2.17,<3.0.a0 - libgcc >=13 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 355568 - timestamp: 1731541963573 + size: 353450 + timestamp: 1734415474615 - kind: conda name: s2n - version: 1.5.9 - build: h636ded1_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/s2n-1.5.9-h636ded1_0.conda - sha256: 51572714743f836266af564c5b26b37599478131c4379a0d11778f04e647d070 - md5: bf4f84136d9ddb7be1855754a9ac4bb9 + version: 1.5.10 + build: hb5b8611_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/s2n-1.5.10-hb5b8611_0.conda + sha256: f6d451821fddc26b93f45e9313e1ea15e09e5ef049d4e137413a5225d2a5dfba + md5: 999f3673f2a011f59287f2969e3749e4 depends: + - __glibc >=2.17,<3.0.a0 - libgcc >=13 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 352546 - timestamp: 1731542018427 + size: 355142 + timestamp: 1734415467047 - kind: conda name: safetensors version: 0.4.5 @@ -8037,22 +8015,6 @@ packages: license_family: APACHE size: 403087 timestamp: 1725632204888 -- kind: conda - name: setuptools - version: 75.6.0 - build: pyhff2d567_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_1.conda - sha256: abb12e1dd515b13660aacb5d0fd43835bc2186cab472df25b7716cd65e095111 - md5: fc80f7995e396cbaeabd23cf46c413dc - depends: - - python >=3.9 - license: MIT - license_family: MIT - size: 774252 - timestamp: 1732632769210 - kind: conda name: shellingham version: 1.5.4 @@ -8524,14 +8486,13 @@ packages: timestamp: 1733206968917 - kind: conda name: uvicorn - version: 0.32.1 - build: pyh31011fe_1 - build_number: 1 + version: 0.34.0 + build: pyh31011fe_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_1.conda - sha256: ad1d8470c629679ea3db52351a522ae44eee0111d8d8b254e8c863c4a292e5c4 - md5: 7832640e5e302059e844d56f410487a6 + url: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.34.0-pyh31011fe_0.conda + sha256: 55c160b0cf9274e2b98bc0f7fcce548bffa8d788bc86aa02801877457040f6fa + md5: 5d448feee86e4740498ec8f8eb40e052 depends: - __unix - click >=7.0 @@ -8540,31 +8501,30 @@ packages: - typing_extensions >=4.0 license: BSD-3-Clause license_family: BSD - size: 49340 - timestamp: 1733332048141 + size: 48643 + timestamp: 1734293057914 - kind: conda name: uvicorn-standard - version: 0.32.1 - build: h31011fe_1 - build_number: 1 + version: 0.34.0 + build: h31011fe_0 subdir: noarch noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_1.conda - sha256: 378903c51b2b1136fa48b01c0a2a8dd4634136d038a4a56561c0856fdcbfcabe - md5: 0c233d5c71d398cf01d0281e72194005 + url: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.34.0-h31011fe_0.conda + sha256: 87e1531e175e75122f9f37608eb953af4c977465ab0ae11283cc01fef954e4ec + md5: 32a94143a7f65d76d2d5da37dcb4ed79 depends: - __unix - - httptools >=0.5.0 + - httptools >=0.6.3 - python-dotenv >=0.13 - pyyaml >=5.1 - - uvicorn 0.32.1 pyh31011fe_1 + - uvicorn 0.34.0 pyh31011fe_0 - uvloop >=0.14.0,!=0.15.0,!=0.15.1 - watchfiles >=0.13 - websockets >=10.4 license: BSD-3-Clause license_family: BSD - size: 7094 - timestamp: 1733332049165 + size: 7203 + timestamp: 1734293058849 - kind: conda name: uvloop version: 0.21.0 @@ -8783,50 +8743,47 @@ packages: timestamp: 1732523794589 - kind: conda name: xorg-libxau - version: 1.0.11 - build: h86ecc28_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxau-1.0.11-h86ecc28_1.conda - sha256: a00c4c6054209c84fb460c5e4ae7193c335a9ee1851645c9ad59312438e853f7 - md5: c5f72a733c461aa7785518d29b997cc8 + version: 1.0.12 + build: h5505292_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxau-1.0.12-h5505292_0.conda + sha256: f33e6f013fc36ebc200f09ddead83468544cb5c353a3b50499b07b8c34e28a8d + md5: 50901e0764b7701d8ed7343496f4f301 depends: - - libgcc >=13 + - __osx >=11.0 license: MIT license_family: MIT - size: 15690 - timestamp: 1727036097294 + size: 13593 + timestamp: 1734229104321 - kind: conda name: xorg-libxau - version: 1.0.11 - build: hb9d3cd8_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.11-hb9d3cd8_1.conda - sha256: 532a046fee0b3a402db867b6ec55c84ba4cdedb91d817147c8feeae9766be3d6 - md5: 77cbc488235ebbaab2b6e912d3934bae + version: 1.0.12 + build: h86ecc28_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxau-1.0.12-h86ecc28_0.conda + sha256: 7829a0019b99ba462aece7592d2d7f42e12d12ccd3b9614e529de6ddba453685 + md5: d5397424399a66d33c80b1f2345a36a6 depends: - - __glibc >=2.17,<3.0.a0 - libgcc >=13 license: MIT license_family: MIT - size: 14679 - timestamp: 1727034741045 + size: 15873 + timestamp: 1734230458294 - kind: conda name: xorg-libxau - version: 1.0.11 - build: hd74edd7_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxau-1.0.11-hd74edd7_1.conda - sha256: 7113618021cf6c80831a429b2ebb9d639f3c43cf7fe2257d235dc6ae0ab43289 - md5: 7e0125f8fb619620a0011dc9297e2493 + version: 1.0.12 + build: hb9d3cd8_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-hb9d3cd8_0.conda + sha256: ed10c9283974d311855ae08a16dfd7e56241fac632aec3b92e3cfe73cff31038 + md5: f6ebe2cb3f82ba6c057dde5d9debe4f7 depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 license: MIT license_family: MIT - size: 13515 - timestamp: 1727034783560 + size: 14780 + timestamp: 1734229004433 - kind: conda name: xorg-libxdmcp version: 1.1.5 diff --git a/examples/notebooks/magic.lock b/examples/notebooks/magic.lock index 1d42a623d1..dc6dd9e02c 100644 --- a/examples/notebooks/magic.lock +++ b/examples/notebooks/magic.lock @@ -10,7 +10,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.10-py312h178313f_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_1.conda @@ -18,14 +18,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.3.0-pyh71513ae_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-hb921021_15.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.1-h1a47875_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.10.6-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.3.0-h4e1184b_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.0-h7959bf6_11.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.2-hefd7a92_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-hbf5b6a4_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-h831e299_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h11f4f37_12.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.7-hf454442_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.1-h4e1184b_4.conda @@ -43,11 +43,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py312h2ec8cdc_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.3-hb9d3cd8_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2024.8.30-hbcca054_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.4-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2024.12.14-hbcca054_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.8.30-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.12.14-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py312h06ac9bb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_1.conda @@ -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.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.7-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 @@ -84,7 +84,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-7.0.2-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.4.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh3099207_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-8.30.0-pyh707e725_0.conda @@ -115,14 +115,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-hcb10f89_6_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-hcb10f89_6_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-h3ee7192_6_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-25_linux64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-26_linux64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.1.0-hb9d3cd8_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-25_linux64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-26_linux64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libcrc32c-1.1.2-h9c3ff4c_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.11.1-h332b0f4_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.22-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.23-h4ddbbb0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20191231-he28a2e2_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libevent-2.1.12-hf998b51_1.conda @@ -138,7 +138,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.67.1-hc2c308b_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-hd590300_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-25_linux64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-26_linux64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.3-hb9d3cd8_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda @@ -153,7 +153,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-hc0a3c3a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libthrift-0.21.0-h0e7cc3e_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hc4654cb_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hd9ff511_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.9.0-hb9d3cd8_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.49.2-hb9d3cd8_0.conda @@ -166,13 +166,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/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-25.1.0.dev2024121405-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024121405-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024121405-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121405-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024121705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024121705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024121705-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121705-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-25.1.0.dev2024121405-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024121705-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 @@ -185,13 +185,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.3-h5fbd93e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.0-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.28.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.28.2-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.28.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.29.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.29.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.29.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-prometheus-1.12.0rc1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.28.2-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.28.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh3cfb1c2_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.29.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.29.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.50b0-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/orc-2.0.3-h97ab989_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda @@ -202,7 +202,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-11.0.0-py312h7b63e92_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pip-24.3.1-pyh8b19718_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pip-24.3.1-pyh8b19718_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda @@ -227,7 +227,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.20-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python-xxhash-3.5.0-py312h66e93f0_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda @@ -244,7 +244,7 @@ environments: - 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/s2n-1.5.10-hb5b8611_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/send2trash-1.8.3-pyh0d859eb_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_1.conda @@ -275,8 +275,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.34.0-pyh31011fe_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.34.0-h31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/uvloop-0.21.0-py312h66e93f0_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/watchfiles-1.0.3-py312h12e396e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda @@ -286,7 +286,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/websockets-14.1-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wheel-0.45.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.17.0-py312h66e93f0_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.11-hb9d3cd8_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xxhash-0.8.2-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 @@ -299,7 +299,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.10-py312hcc812fe_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_1.conda @@ -307,14 +307,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.3.0-pyh71513ae_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-h2cb9fb3_15.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.1-h740c5af_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-common-0.10.6-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-compression-0.3.0-h0f0193d_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-event-stream-0.5.0-hcbd8f92_11.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.2-h3df160d_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-h92bf595_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-h1a307af_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h5f50e26_12.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.7-h2080895_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.1-h0f0193d_4.conda @@ -332,11 +332,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/brotli-python-1.1.0-py312h6f74592_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h68df207_7.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/c-ares-1.34.3-h86ecc28_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2024.8.30-hcefe29a_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/c-ares-1.34.4-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2024.12.14-hcefe29a_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.8.30-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.12.14-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cffi-1.17.1-py312hac81daf_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_1.conda @@ -355,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.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.7-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 @@ -374,7 +374,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-7.0.2-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.4.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh3099207_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-8.30.0-pyh707e725_0.conda @@ -405,14 +405,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h3b568fd_6_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h3b568fd_6_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h3ffb4b1_6_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-25_linuxaarch64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-26_linuxaarch64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlicommon-1.1.0-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlidec-1.1.0-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlienc-1.1.0-h86ecc28_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-25_linuxaarch64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-26_linuxaarch64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcrc32c-1.1.2-h01db608_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcurl-8.11.1-h6702fde_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libdeflate-1.22-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libdeflate-1.23-h5e3c512_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20191231-he28a2e2_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libev-4.33-h31becfc_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libevent-2.1.12-h4ba1bb4_1.conda @@ -428,7 +428,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgrpc-1.67.1-h36c5df4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libiconv-1.17-h31becfc_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libjpeg-turbo-3.0.0-h31becfc_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-25_linuxaarch64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-26_linuxaarch64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.3-h86ecc28_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnghttp2-1.64.0-hc8609a4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda @@ -443,7 +443,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libthrift-0.21.0-h154c74f_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.0-hca96517_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.0-h88f7998_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.9.0-h86ecc28_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuv-1.49.2-h86ecc28_0.conda @@ -456,13 +456,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/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-25.1.0.dev2024121405-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024121405-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024121405-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121405-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024121705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024121705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024121705-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121705-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-25.1.0.dev2024121405-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024121705-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 @@ -475,13 +475,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openjpeg-2.5.3-h3f56577_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.0-h86ecc28_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.28.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.28.2-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.28.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.29.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.29.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.29.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-prometheus-1.12.0rc1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.28.2-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.28.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh3cfb1c2_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.29.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.29.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.50b0-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/orc-2.0.3-h3c55218_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda @@ -492,7 +492,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pillow-11.0.0-py312h5ab5af3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pip-24.3.1-pyh8b19718_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pip-24.3.1-pyh8b19718_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda @@ -517,7 +517,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.20-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-xxhash-3.5.0-py312h52516f5_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.12-5_cp312.conda @@ -534,7 +534,7 @@ environments: - 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/s2n-1.5.10-h5df210e_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/send2trash-1.8.3-pyh0d859eb_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_1.conda @@ -565,8 +565,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.34.0-pyh31011fe_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.34.0-h31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/uvloop-0.21.0-py312hb2c0f52_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/watchfiles-1.0.3-py312h8cbf658_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda @@ -576,7 +576,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/websockets-14.1-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wheel-0.45.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/wrapt-1.17.0-py312hb2c0f52_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxau-1.0.11-h86ecc28_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxau-1.0.12-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxdmcp-1.1.5-h57736b2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xxhash-0.8.2-h31becfc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yaml-0.2.5-hf897c2e_2.tar.bz2 @@ -588,7 +588,7 @@ environments: osx-arm64: - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.10-py312h998013c_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/appnope-0.1.4-pyhd8ed1ab_1.conda @@ -597,14 +597,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.3.0-pyh71513ae_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-h8bc59a9_15.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.1-hc8a0bd2_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.10.6-h5505292_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-compression-0.3.0-hc8a0bd2_5.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.0-h54f970a_11.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.2-h96aa502_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-haba67d1_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-haba67d1_5.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h24f418c_12.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.7-h1be5864_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.1-hc8a0bd2_4.conda @@ -622,11 +622,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py312hde4cb15_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.3-h5505292_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2024.8.30-hf0a4a13_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.4-h5505292_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2024.12.14-hf0a4a13_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.8.30-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.12.14-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.1-py312h0fad829_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_1.conda @@ -645,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.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.7-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 @@ -664,7 +664,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-7.0.2-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.4.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh57ce528_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-8.30.0-pyh707e725_0.conda @@ -693,15 +693,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-hf07054f_6_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-hf07054f_6_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-h86344ea_6_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-25_osxarm64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-26_osxarm64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.1.0-hd74edd7_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.1.0-hd74edd7_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlienc-1.1.0-hd74edd7_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-25_osxarm64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-26_osxarm64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcrc32c-1.1.2-hbdafb3b_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.11.1-h73640d1_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.5-ha82da77_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.22-hd74edd7_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.23-hec38601_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20191231-hc8eb9b7_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libev-4.33-h93a5062_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libevent-2.1.12-h2757513_1.conda @@ -714,7 +714,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgrpc-1.67.1-hc70892a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.17-h0d3ecfb_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.0.0-hb547adb_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-25_osxarm64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-26_osxarm64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.3-h39f12f2_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.64.0-h6d7220d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.28-openmp_hf332438_1.conda @@ -726,7 +726,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.47.2-h3f77e49_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.1-h9cc3647_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libthrift-0.21.0-h64651cc_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-ha962b0a_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-h551f018_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.9.0-h5505292_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libuv-1.49.2-h7ab814d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.4.0-h93a5062_0.conda @@ -738,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-25.1.0.dev2024121405-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024121405-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024121405-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121405-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024121705-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024121705-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024121705-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121705-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-25.1.0.dev2024121405-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024121705-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 @@ -757,13 +757,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openjpeg-2.5.3-h8a3d83b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.0-h39f12f2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.28.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.28.2-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.28.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.29.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.29.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.29.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-prometheus-1.12.0rc1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.28.2-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.28.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh3cfb1c2_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.29.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.29.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.50b0-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/orc-2.0.3-hbcee414_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda @@ -774,7 +774,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-11.0.0-py312haf37ca6_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pip-24.3.1-pyh8b19718_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pip-24.3.1-pyh8b19718_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda @@ -801,7 +801,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.20-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-xxhash-3.5.0-py312h024a12e_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-5_cp312.conda @@ -848,8 +848,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.34.0-pyh31011fe_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.34.0-h31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/uvloop-0.21.0-py312h0bf5046_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/watchfiles-1.0.3-py312hcd83bfe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda @@ -859,7 +859,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/websockets-14.1-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wheel-0.45.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/wrapt-1.17.0-py312hea69d52_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxau-1.0.11-hd74edd7_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxau-1.0.12-h5505292_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxdmcp-1.1.5-hd74edd7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xxhash-0.8.2-hb547adb_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 @@ -1005,21 +1005,20 @@ packages: timestamp: 1733839037447 - kind: conda name: aiosignal - version: 1.3.1 - build: pyhd8ed1ab_1 - build_number: 1 + version: 1.3.2 + build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_1.conda - sha256: 9c7b639ea0cc796ef46c57fa104ec1f2ed53cd11c063518869a5a9d7d3b0b2db - md5: d736bd1b8904d7593dce4893e58a7881 + url: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda + sha256: 7de8ced1918bbdadecf8e1c1c68237fe5709c097bd9e0d254f4cad118f4345d0 + md5: 1a3981115a398535dbe3f6d5faae3d36 depends: - frozenlist >=1.1.0 - python >=3.9 license: Apache-2.0 license_family: APACHE - size: 13157 - timestamp: 1733332198143 + size: 13229 + timestamp: 1734342253061 - kind: conda name: annotated-types version: 0.7.0 @@ -1207,20 +1206,19 @@ packages: timestamp: 1733584388228 - kind: conda name: attrs - version: 24.2.0 - build: pyh71513ae_1 - build_number: 1 + version: 24.3.0 + build: pyh71513ae_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_1.conda - sha256: 8488a116dffe204015a90b41982c0270534bd1070f44a00b316d59e4a79ae8c7 - md5: 2018839db45c79654b57a924fcdd27d0 + url: https://conda.anaconda.org/conda-forge/noarch/attrs-24.3.0-pyh71513ae_0.conda + sha256: 750186af694a7130eaf7119fbb56db0d2326d8995ad5b8eae23c622b85fea29a + md5: 356927ace43302bf6f5926e2a58dae6a depends: - python >=3.9 license: MIT license_family: MIT - size: 56336 - timestamp: 1733520064905 + size: 56354 + timestamp: 1734348889193 - kind: conda name: aws-c-auth version: 0.8.0 @@ -1545,57 +1543,57 @@ packages: - kind: conda name: aws-c-io version: 0.15.3 - build: h92bf595_4 - build_number: 4 + build: h1a307af_5 + build_number: 5 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-h92bf595_4.conda - sha256: ffa2fc1ddb01f4b8ac038ab70a5533306119754ba438b23399f2a82a38cf27bf - md5: 539df02c00c506c78aebdf6c0fc75743 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-h1a307af_5.conda + sha256: 71f5bf891299f831dceaea12f926c393bf754569e5305387a88b77e1f94612d8 + md5: da8ab0f3eeac93449ec3d531ede92caa depends: - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.6,<0.10.7.0a0 - libgcc >=13 - - s2n >=1.5.9,<1.5.10.0a0 + - s2n >=1.5.10,<1.5.11.0a0 license: Apache-2.0 license_family: Apache - size: 161836 - timestamp: 1733997573790 + size: 161889 + timestamp: 1734433686109 - kind: conda name: aws-c-io version: 0.15.3 - build: haba67d1_4 - build_number: 4 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-haba67d1_4.conda - sha256: 2d0859b57439cd98e854577aa3e07eb171b590098d51a8c908bab5ec497a3d38 - md5: 74eace4fab8675263a848075e991d380 + build: h831e299_5 + build_number: 5 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-h831e299_5.conda + sha256: 5920009b1c6f9a2bc131a36725251894e4b4773fce29c4b1065d4213ae337abe + md5: 80dd9f0ddf935290d1dc00ec75ff3023 depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + - s2n >=1.5.10,<1.5.11.0a0 license: Apache-2.0 license_family: Apache - size: 136213 - timestamp: 1733997647724 + size: 157864 + timestamp: 1734433578570 - kind: conda name: aws-c-io version: 0.15.3 - build: hbf5b6a4_4 - build_number: 4 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-hbf5b6a4_4.conda - sha256: 3195fe431d3c43d6ecf749796d3acb093645c9d0de9998616641dada4b5fa2a6 - md5: ad3a6713063c18b9232c48e89ada03ac + build: haba67d1_5 + build_number: 5 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-haba67d1_5.conda + sha256: c0a1a2b0750225ac3dc07fd258c88c2be866bf8ac67ba3d50bb4ecec852ff8ee + md5: 4c5ff4134e76426a75b8c548984fa933 depends: - - __glibc >=2.17,<3.0.a0 + - __osx >=11.0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.6,<0.10.7.0a0 - - libgcc >=13 - - s2n >=1.5.9,<1.5.10.0a0 license: Apache-2.0 license_family: Apache - size: 157886 - timestamp: 1733997507332 + size: 135729 + timestamp: 1734433832730 - kind: conda name: aws-c-mqtt version: 0.11.0 @@ -2411,83 +2409,80 @@ packages: timestamp: 1720974522888 - kind: conda name: c-ares - version: 1.34.3 - build: h5505292_1 - build_number: 1 + version: 1.34.4 + build: h5505292_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.3-h5505292_1.conda - sha256: 6dfa83cbd9acc8671d439fe9c745a5716faf6cbadf2f1e18c841bcf86cbba5f2 - md5: fb72102e8a8f9bcd38e40af09ff41c42 + url: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.4-h5505292_0.conda + sha256: 09c0c8476e50b2955f474a4a1c17c4c047dd52993b5366b6ea8e968e583b921f + md5: c1c999a38a4303b29d75c636eaa13cf9 depends: - __osx >=11.0 license: MIT license_family: MIT - size: 179318 - timestamp: 1732447193278 + size: 179496 + timestamp: 1734208291879 - kind: conda name: c-ares - version: 1.34.3 - build: h86ecc28_1 - build_number: 1 + version: 1.34.4 + build: h86ecc28_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/c-ares-1.34.3-h86ecc28_1.conda - sha256: 1181db17781d9d66c1478e7fbc3e82dd273e9cb43ed910e1d0f8b3c96b16e290 - md5: 0cd9ebf65479cdceb6a4888b764dafcd + url: https://conda.anaconda.org/conda-forge/linux-aarch64/c-ares-1.34.4-h86ecc28_0.conda + sha256: 1187a41d4bb2afe02cb18690682edc98d1e9f5e0ccda638d8704a75ea1875bbe + md5: 356da36f35d36dcba16e43f1589d4e39 depends: - libgcc >=13 license: MIT license_family: MIT - size: 214791 - timestamp: 1732447020593 + size: 215979 + timestamp: 1734208193181 - kind: conda name: c-ares - version: 1.34.3 - build: hb9d3cd8_1 - build_number: 1 + version: 1.34.4 + build: hb9d3cd8_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.3-hb9d3cd8_1.conda - sha256: 732571ba6286dbccbf4c6450078a581b7a5620204faf876ff0ef282d77a6bfa8 - md5: ee228789a85f961d14567252a03e725f + url: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.4-hb9d3cd8_0.conda + sha256: d4f28d87b6339b94f74762c0076e29c8ef8ddfff51a564a92da2843573c18320 + md5: e2775acf57efd5af15b8e3d1d74d72d3 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 license: MIT license_family: MIT - size: 204857 - timestamp: 1732447031823 + size: 206085 + timestamp: 1734208189009 - kind: conda name: ca-certificates - version: 2024.8.30 + version: 2024.12.14 build: hbcca054_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2024.8.30-hbcca054_0.conda - sha256: afee721baa6d988e27fef1832f68d6f32ac8cc99cdf6015732224c2841a09cea - md5: c27d1c142233b5bc9ca570c6e2e0c244 + url: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2024.12.14-hbcca054_0.conda + sha256: 1afd7274cbc9a334d6d0bc62fa760acc7afdaceb0b91a8df370ec01fd75dc7dd + md5: 720523eb0d6a9b0f6120c16b2aa4e7de license: ISC - size: 159003 - timestamp: 1725018903918 + size: 157088 + timestamp: 1734208393264 - kind: conda name: ca-certificates - version: 2024.8.30 + version: 2024.12.14 build: hcefe29a_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2024.8.30-hcefe29a_0.conda - sha256: 2a2d827bee3775a85f0f1b2f2089291475c4416336d1b3a8cbce2964db547af8 - md5: 70e57e8f59d2c98f86b49c69e5074be5 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2024.12.14-hcefe29a_0.conda + sha256: ad7b43211051332a5a4e788bb4619a2d0ecb5be73e0f76be17f733a87d7effd1 + md5: 83b4ad1e6dc14df5891f3fcfdeb44351 license: ISC - size: 159106 - timestamp: 1725020043153 + size: 157096 + timestamp: 1734209301744 - kind: conda name: ca-certificates - version: 2024.8.30 + version: 2024.12.14 build: hf0a4a13_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2024.8.30-hf0a4a13_0.conda - sha256: 2db1733f4b644575dbbdd7994a8f338e6ef937f5ebdb74acd557e9dda0211709 - md5: 40dec13fd8348dbe303e57be74bd3d35 + url: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2024.12.14-hf0a4a13_0.conda + sha256: 256be633fd0882ccc1a7a32bc278547e1703f85082c0789a87a603ee3ab8fb82 + md5: 7cb381a6783d91902638e4ed1ebd478e license: ISC - size: 158482 - timestamp: 1725019034582 + size: 157091 + timestamp: 1734208344343 - kind: conda name: cached-property version: 1.5.2 @@ -2522,18 +2517,18 @@ packages: timestamp: 1615209567874 - kind: conda name: certifi - version: 2024.8.30 + version: 2024.12.14 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.8.30-pyhd8ed1ab_0.conda - sha256: 7020770df338c45ac6b560185956c32f0a5abf4b76179c037f115fc7d687819f - md5: 12f7d00853807b0531775e9be891cb11 + url: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.12.14-pyhd8ed1ab_0.conda + sha256: 048c16a9cbcb1fbad02083414d3bc7c1d0eea4b39aee6aa6bf8d1d5089ca8bad + md5: 6feb87357ecd66733be3279f16a8c400 depends: - - python >=3.7 + - python >=3.9 license: ISC - size: 163752 - timestamp: 1725278204397 + size: 161642 + timestamp: 1734380604767 - kind: conda name: cffi version: 1.17.1 @@ -2933,13 +2928,13 @@ packages: timestamp: 1733362427885 - kind: conda name: fastapi-cli - version: 0.0.6 + version: 0.0.7 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.6-pyhd8ed1ab_0.conda - sha256: f0a900e1d8158915c71d9064699d97fc137058f71f5cdd257d79dbac07a41b63 - md5: 3256783cc0dd4cf3ff17198ce3b1782e + url: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.7-pyhd8ed1ab_0.conda + sha256: 300683731013b7221922339cd40430bb3c2ddeeb658fd7e37f5099ffe64e4db0 + md5: d960e0ea9e1c561aa928f6c4439f04c7 depends: - python >=3.9 - rich-toolkit >=0.11.1 @@ -2947,8 +2942,8 @@ packages: - uvicorn-standard >=0.15.0 license: MIT license_family: MIT - size: 15512 - timestamp: 1733881782160 + size: 15546 + timestamp: 1734302408607 - kind: conda name: filelock version: 3.16.1 @@ -3437,20 +3432,21 @@ packages: timestamp: 1733211921194 - kind: conda name: importlib-metadata - version: 7.0.2 - build: pyha770c72_0 + version: 8.5.0 + build: pyha770c72_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-7.0.2-pyha770c72_0.conda - sha256: 9a26136d2cc81ccac209d6ae24281ceba3365fe34e34b2c45570f2a96e9d9c1b - md5: b050a4bb0e90ebd6e7fa4093d6346867 + url: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_1.conda + sha256: 13766b88fc5b23581530d3a0287c0c58ad82f60401afefab283bf158d2be55a9 + md5: 315607a3030ad5d5227e76e0733798ff depends: - - python >=3.8 + - python >=3.9 - zipp >=0.5 license: Apache-2.0 license_family: APACHE - size: 26900 - timestamp: 1709821273570 + size: 28623 + timestamp: 1733223207185 - kind: conda name: importlib_resources version: 6.4.5 @@ -4513,66 +4509,63 @@ packages: - kind: conda name: libblas version: 3.9.0 - build: 25_linux64_openblas - build_number: 25 + build: 26_linux64_openblas + build_number: 26 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-25_linux64_openblas.conda - sha256: d6d12dc437d060f838820e9e61bf73baab651f91935ac594cf10beb9ef1b4450 - md5: 8ea26d42ca88ec5258802715fe1ee10b + url: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-26_linux64_openblas.conda + sha256: 30bd658682b124243f8e52d8edf8a19e7be1bc31e4fe4baec30a64002dc8cd0c + md5: ac52800af2e0c0e7dac770b435ce768a depends: - libopenblas >=0.3.28,<0.3.29.0a0 - libopenblas >=0.3.28,<1.0a0 constrains: - - liblapack 3.9.0 25_linux64_openblas - - libcblas 3.9.0 25_linux64_openblas + - libcblas 3.9.0 26_linux64_openblas + - liblapack 3.9.0 26_linux64_openblas + - liblapacke 3.9.0 26_linux64_openblas - blas * openblas - - liblapacke 3.9.0 25_linux64_openblas license: BSD-3-Clause - license_family: BSD - size: 15677 - timestamp: 1729642900350 + size: 16393 + timestamp: 1734432564346 - kind: conda name: libblas version: 3.9.0 - build: 25_linuxaarch64_openblas - build_number: 25 + build: 26_linuxaarch64_openblas + build_number: 26 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-25_linuxaarch64_openblas.conda - sha256: 5c08f78312874bb61307f5ea737377df2d0f6e7f7833ded21ca58d8820c794ca - md5: f9b8a4a955ed2d0b68b1f453abcc1c9e + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-26_linuxaarch64_openblas.conda + sha256: df6d8ee34d45cf35609ecdd55c1ff03e32e0cd87ae41ebe4ef3747a8e09ead4d + md5: 8d900b7079a00969d70305e9aad550b7 depends: - libopenblas >=0.3.28,<0.3.29.0a0 - libopenblas >=0.3.28,<1.0a0 constrains: - blas * openblas - - liblapacke 3.9.0 25_linuxaarch64_openblas - - liblapack 3.9.0 25_linuxaarch64_openblas - - libcblas 3.9.0 25_linuxaarch64_openblas + - liblapacke 3.9.0 26_linuxaarch64_openblas + - libcblas 3.9.0 26_linuxaarch64_openblas + - liblapack 3.9.0 26_linuxaarch64_openblas license: BSD-3-Clause - license_family: BSD - size: 15808 - timestamp: 1729643002627 + size: 16477 + timestamp: 1734432576699 - kind: conda name: libblas version: 3.9.0 - build: 25_osxarm64_openblas - build_number: 25 + build: 26_osxarm64_openblas + build_number: 26 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-25_osxarm64_openblas.conda - sha256: f1fb9a11af0b2878bd8804b4c77d3733c40076218bcbdb35f575b1c0c9fddf11 - md5: f8cf4d920ff36ce471619010eff59cac + url: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-26_osxarm64_openblas.conda + sha256: 597f9c3779caa979c8c6abbb3ba8c7191b84e1a910d6b0d10e5faf35284c450c + md5: 21be102c9ae80a67ba7de23b129aa7f6 depends: - libopenblas >=0.3.28,<0.3.29.0a0 - libopenblas >=0.3.28,<1.0a0 constrains: + - liblapack 3.9.0 26_osxarm64_openblas + - liblapacke 3.9.0 26_osxarm64_openblas + - libcblas 3.9.0 26_osxarm64_openblas - blas * openblas - - liblapack 3.9.0 25_osxarm64_openblas - - liblapacke 3.9.0 25_osxarm64_openblas - - libcblas 3.9.0 25_osxarm64_openblas license: BSD-3-Clause - license_family: BSD - size: 15913 - timestamp: 1729643265495 + size: 16714 + timestamp: 1734433054681 - kind: conda name: libbrotlicommon version: 1.1.0 @@ -4720,60 +4713,57 @@ packages: - kind: conda name: libcblas version: 3.9.0 - build: 25_linux64_openblas - build_number: 25 + build: 26_linux64_openblas + build_number: 26 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-25_linux64_openblas.conda - sha256: ab87b0477078837c91d9cda62a9faca18fba7c57cc77aa779ae24b3ac783b5dd - md5: 5dbd1b0fc0d01ec5e0e1fbe667281a11 + url: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-26_linux64_openblas.conda + sha256: 9c74e536c9bc868e356ffd43f81c2cb398aec84b40fcadc312315b164a5500ee + md5: ebcc5f37a435aa3c19640533c82f8d76 depends: - - libblas 3.9.0 25_linux64_openblas + - libblas 3.9.0 26_linux64_openblas constrains: - - liblapack 3.9.0 25_linux64_openblas + - liblapack 3.9.0 26_linux64_openblas + - liblapacke 3.9.0 26_linux64_openblas - blas * openblas - - liblapacke 3.9.0 25_linux64_openblas license: BSD-3-Clause - license_family: BSD - size: 15613 - timestamp: 1729642905619 + size: 16336 + timestamp: 1734432570482 - kind: conda name: libcblas version: 3.9.0 - build: 25_linuxaarch64_openblas - build_number: 25 + build: 26_linuxaarch64_openblas + build_number: 26 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-25_linuxaarch64_openblas.conda - sha256: fde797e5528040fed0e9228dd75331be0cf5cbb0bc63641f53c3cca9eb86ec16 - md5: db6af51123c67814572a8c25542cb368 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-26_linuxaarch64_openblas.conda + sha256: 521e78be0c4170f229c43e1a6c94337a72db3ebcbe6e5960f8413aa438dcb8f9 + md5: d77f943ae4083f3aeddca698f2d28262 depends: - - libblas 3.9.0 25_linuxaarch64_openblas + - libblas 3.9.0 26_linuxaarch64_openblas constrains: - blas * openblas - - liblapacke 3.9.0 25_linuxaarch64_openblas - - liblapack 3.9.0 25_linuxaarch64_openblas + - liblapacke 3.9.0 26_linuxaarch64_openblas + - liblapack 3.9.0 26_linuxaarch64_openblas license: BSD-3-Clause - license_family: BSD - size: 15700 - timestamp: 1729643006729 + size: 16398 + timestamp: 1734432580937 - kind: conda name: libcblas version: 3.9.0 - build: 25_osxarm64_openblas - build_number: 25 + build: 26_osxarm64_openblas + build_number: 26 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-25_osxarm64_openblas.conda - sha256: d9fa5b6b11252132a3383bbf87bd2f1b9d6248bef1b7e113c2a8ae41b0376218 - md5: 4df0fae81f0b5bf47d48c882b086da11 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-26_osxarm64_openblas.conda + sha256: 27a29ef6b2fd2179bc3a0bb9db351f078ba140ca10485dca147c399639f84c93 + md5: a0e9980fe12d42f6d0c0ec009f67e948 depends: - - libblas 3.9.0 25_osxarm64_openblas + - libblas 3.9.0 26_osxarm64_openblas constrains: + - liblapack 3.9.0 26_osxarm64_openblas + - liblapacke 3.9.0 26_osxarm64_openblas - blas * openblas - - liblapack 3.9.0 25_osxarm64_openblas - - liblapacke 3.9.0 25_osxarm64_openblas license: BSD-3-Clause - license_family: BSD - size: 15837 - timestamp: 1729643270793 + size: 16628 + timestamp: 1734433061517 - kind: conda name: libcrc32c version: 1.1.2 @@ -4895,47 +4885,44 @@ packages: timestamp: 1733291654212 - kind: conda name: libdeflate - version: '1.22' - build: h86ecc28_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libdeflate-1.22-h86ecc28_0.conda - sha256: 986207f130703897300ddc3637c52e86a5b21c735fe384bf48554d9a6d91c56d - md5: ff6a44e8b1707d02be2fe9a36ea88d4a + version: '1.23' + build: h4ddbbb0_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.23-h4ddbbb0_0.conda + sha256: 511d801626d02f4247a04fff957cc6e9ec4cc7e8622bd9acd076bcdc5de5fe66 + md5: 8dfae1d2e74767e9ce36d5fa0d8605db depends: + - __glibc >=2.17,<3.0.a0 - libgcc >=13 license: MIT - license_family: MIT - size: 69601 - timestamp: 1728177137503 + size: 72255 + timestamp: 1734373823254 - kind: conda name: libdeflate - version: '1.22' - build: hb9d3cd8_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.22-hb9d3cd8_0.conda - sha256: 780f0530a3adfc1497ba49d626931c6afc978c540e1abfde6ccd57128ded6ad6 - md5: b422943d5d772b7cc858b36ad2a92db5 + version: '1.23' + build: h5e3c512_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libdeflate-1.23-h5e3c512_0.conda + sha256: 959419d87cd2b789a9055db95704c614f31aeb70bef7949fa2f734122a3a2863 + md5: 7e7ca2607b11b180120cefc2354fc0cb depends: - - __glibc >=2.17,<3.0.a0 - libgcc >=13 license: MIT - license_family: MIT - size: 72242 - timestamp: 1728177071251 + size: 69862 + timestamp: 1734373858306 - kind: conda name: libdeflate - version: '1.22' - build: hd74edd7_0 + version: '1.23' + build: hec38601_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.22-hd74edd7_0.conda - sha256: 3552894ca62bebc33d05982937cda25a4fa19e56a82af2ff20944ff4c2532fda - md5: 2d3e3f3d8ab315748420ef58d5a3ae0f + url: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.23-hec38601_0.conda + sha256: 887c02deaed6d583459eba6367023e36d8761085b2f7126e389424f57155da53 + md5: 1d8b9588be14e71df38c525767a1ac30 depends: - __osx >=11.0 license: MIT - license_family: MIT - size: 54089 - timestamp: 1728177149927 + size: 54132 + timestamp: 1734373971372 - kind: conda name: libedit version: 3.1.20191231 @@ -5659,60 +5646,57 @@ packages: - kind: conda name: liblapack version: 3.9.0 - build: 25_linux64_openblas - build_number: 25 + build: 26_linux64_openblas + build_number: 26 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-25_linux64_openblas.conda - sha256: 9d1ff017714edb2d84868f0f931a4a0e7c289a971062b2ac66cfc8145df7e20e - md5: 4dc03a53fc69371a6158d0ed37214cd3 + url: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-26_linux64_openblas.conda + sha256: b76458c36331376911e0f98fa68109e02f4d5e5ebfffa79587ac69cef748bba1 + md5: 3792604c43695d6a273bc5faaac47d48 depends: - - libblas 3.9.0 25_linux64_openblas + - libblas 3.9.0 26_linux64_openblas constrains: - - liblapacke 3.9.0 25_linux64_openblas - - libcblas 3.9.0 25_linux64_openblas + - libcblas 3.9.0 26_linux64_openblas + - liblapacke 3.9.0 26_linux64_openblas - blas * openblas license: BSD-3-Clause - license_family: BSD - size: 15608 - timestamp: 1729642910812 + size: 16338 + timestamp: 1734432576650 - kind: conda name: liblapack version: 3.9.0 - build: 25_linuxaarch64_openblas - build_number: 25 + build: 26_linuxaarch64_openblas + build_number: 26 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-25_linuxaarch64_openblas.conda - sha256: 2b399e65e0338bf249657b98333e910cd7086ea1332d4d6f303735883ca49318 - md5: 0eb74e81de46454960bde9e44e7ee378 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-26_linuxaarch64_openblas.conda + sha256: a42bd01498efe2ccf6d08d56ac3cbd3ceab79e06699ff5aac3da8e45a66738f7 + md5: a5d4e18876393633da62fd8492c00156 depends: - - libblas 3.9.0 25_linuxaarch64_openblas + - libblas 3.9.0 26_linuxaarch64_openblas constrains: - blas * openblas - - liblapacke 3.9.0 25_linuxaarch64_openblas - - libcblas 3.9.0 25_linuxaarch64_openblas + - liblapacke 3.9.0 26_linuxaarch64_openblas + - libcblas 3.9.0 26_linuxaarch64_openblas license: BSD-3-Clause - license_family: BSD - size: 15711 - timestamp: 1729643010817 + size: 16403 + timestamp: 1734432585123 - kind: conda name: liblapack version: 3.9.0 - build: 25_osxarm64_openblas - build_number: 25 + build: 26_osxarm64_openblas + build_number: 26 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-25_osxarm64_openblas.conda - sha256: fdd742407672a9af20e70764550cf18b3ab67f12e48bf04163b90492fbc401e7 - md5: 19bbddfec972d401838330453186108d + url: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-26_osxarm64_openblas.conda + sha256: dd6d9a21e672aee4332f019c8229ce70cf5eaf6c2f4cbd1443b105fb66c00dc5 + md5: cebad79038a75cfd28fa90d147a2d34d depends: - - libblas 3.9.0 25_osxarm64_openblas + - libblas 3.9.0 26_osxarm64_openblas constrains: + - liblapacke 3.9.0 26_osxarm64_openblas + - libcblas 3.9.0 26_osxarm64_openblas - blas * openblas - - liblapacke 3.9.0 25_osxarm64_openblas - - libcblas 3.9.0 25_osxarm64_openblas license: BSD-3-Clause - license_family: BSD - size: 15823 - timestamp: 1729643275943 + size: 16624 + timestamp: 1734433068120 - kind: conda name: liblzma version: 5.6.3 @@ -6369,38 +6353,37 @@ packages: - kind: conda name: libtiff version: 4.7.0 - build: ha962b0a_2 - build_number: 2 + build: h551f018_3 + build_number: 3 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-ha962b0a_2.conda - sha256: d9e6835fd189b85eb90dbfdcc51f5375decbf5bb53130042f49bbd6bfb0b24be - md5: 8e14b5225c593f099a21971568e6d7b4 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-h551f018_3.conda + sha256: 91417846157e04992801438a496b151df89604b2e7c6775d6f701fcd0cbed5ae + md5: a5d084a957563e614ec0c0196d890654 depends: - __osx >=11.0 - lerc >=4.0.0,<5.0a0 - libcxx >=18 - - libdeflate >=1.22,<1.23.0a0 + - libdeflate >=1.23,<1.24.0a0 - libjpeg-turbo >=3.0.0,<4.0a0 - liblzma >=5.6.3,<6.0a0 - libwebp-base >=1.4.0,<2.0a0 - libzlib >=1.3.1,<2.0a0 - zstd >=1.5.6,<1.6.0a0 license: HPND - size: 370387 - timestamp: 1733443310502 + size: 370600 + timestamp: 1734398863052 - kind: conda name: libtiff version: 4.7.0 - build: hc4654cb_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hc4654cb_2.conda - sha256: 18653b4a5c73e19c5e86ff72dab9bf59f5cc43d7f404a6be705d152dfd5e0660 - md5: be54fb40ea32e8fe9dbaa94d4528b57e + build: h88f7998_3 + build_number: 3 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.0-h88f7998_3.conda + sha256: 5888bd66ba7606ae8596856c7dac800940ecad0aed77d6aa37db69d434c81cf0 + md5: 36a0ea4a173338c8725dc0807e99cf22 depends: - - __glibc >=2.17,<3.0.a0 - lerc >=4.0.0,<5.0a0 - - libdeflate >=1.22,<1.23.0a0 + - libdeflate >=1.23,<1.24.0a0 - libgcc >=13 - libjpeg-turbo >=3.0.0,<4.0a0 - liblzma >=5.6.3,<6.0a0 @@ -6409,20 +6392,21 @@ packages: - libzlib >=1.3.1,<2.0a0 - zstd >=1.5.6,<1.6.0a0 license: HPND - size: 429018 - timestamp: 1733443013288 + size: 464699 + timestamp: 1734398752249 - kind: conda name: libtiff version: 4.7.0 - build: hca96517_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.0-hca96517_2.conda - sha256: d736d840d1f2446234195adfcb51b132c85797730b6f42ebf058d350fa9d20e8 - md5: 278dcef6d1ea28c04109c3f5dea126cb + build: hd9ff511_3 + build_number: 3 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hd9ff511_3.conda + sha256: b224e16b88d76ea95e4af56e2bc638c603bd26a770b98d117d04541d3aafa002 + md5: 0ea6510969e1296cc19966fad481f6de depends: + - __glibc >=2.17,<3.0.a0 - lerc >=4.0.0,<5.0a0 - - libdeflate >=1.22,<1.23.0a0 + - libdeflate >=1.23,<1.24.0a0 - libgcc >=13 - libjpeg-turbo >=3.0.0,<4.0a0 - liblzma >=5.6.3,<6.0a0 @@ -6431,8 +6415,8 @@ packages: - libzlib >=1.3.1,<2.0a0 - zstd >=1.5.6,<1.6.0a0 license: HPND - size: 464857 - timestamp: 1733443105529 + size: 428173 + timestamp: 1734398813264 - kind: conda name: libutf8proc version: 2.9.0 @@ -6947,76 +6931,76 @@ packages: timestamp: 1733417051523 - kind: conda name: max - version: 25.1.0.dev2024121405 + version: 25.1.0.dev2024121705 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024121405-release.conda - sha256: 6bacaa1d4f27d255a4c3907c28929865eeef5d45d64d61c3991b526aee14766d - md5: 1aec535b4731af73dd1b43472e7b6fa0 + url: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024121705-release.conda + sha256: 83b2265b29c1ee69ae9d9f639ab04899d0ef15b5abc9114e034e2cd382dcad31 + md5: bd7165d97ebb0458ddb1ce616c146c24 depends: - - max-core ==25.1.0.dev2024121405 release - - max-python >=25.1.0.dev2024121405,<26.0a0 - - mojo-jupyter ==25.1.0.dev2024121405 release - - mblack ==25.1.0.dev2024121405 release + - max-core ==25.1.0.dev2024121705 release + - max-python >=25.1.0.dev2024121705,<26.0a0 + - mojo-jupyter ==25.1.0.dev2024121705 release + - mblack ==25.1.0.dev2024121705 release license: LicenseRef-Modular-Proprietary size: 9921 - timestamp: 1734153430066 + timestamp: 1734412638047 - kind: conda name: max-core - version: 25.1.0.dev2024121405 + version: 25.1.0.dev2024121705 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024121405-release.conda - sha256: 14f953430105c8f2bb8f3bdf1e3fb7e9acbb20613ad47c9ac1e88462e0cc804d - md5: d88d69b1696ed9d5795c8d346bbd4311 + url: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024121705-release.conda + sha256: 15459b8446d3feb608baae398cf2753a3704e02e07cf2a6c02e166068d8a9304 + md5: 4ca65aff37bd7e944cce1697c1fe203e depends: - - mblack ==25.1.0.dev2024121405 release + - mblack ==25.1.0.dev2024121705 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 245597032 - timestamp: 1734153445516 + size: 245744992 + timestamp: 1734412638045 - kind: conda name: max-core - version: 25.1.0.dev2024121405 + version: 25.1.0.dev2024121705 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024121405-release.conda - sha256: e3936f8021fc72f7f2673e2653e7bbd3d325fb44818b868bb49c24e5c1766eaf - md5: ea674f5d9232d89046ad99090cc195a7 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024121705-release.conda + sha256: e89be4d7691a354a3f6e5d71e25b49447ca9fd1048fe03355c3bc509a726234d + md5: acc4b1208feaba5ad08c1b370192e127 depends: - - mblack ==25.1.0.dev2024121405 release + - mblack ==25.1.0.dev2024121705 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 249408423 - timestamp: 1734153430064 + size: 249373255 + timestamp: 1734412698620 - kind: conda name: max-core - version: 25.1.0.dev2024121405 + version: 25.1.0.dev2024121705 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024121405-release.conda - sha256: b6bb97d20f0f7371a647778d18fe78f839e37eef423542ae3f4e75b018ffd8db - md5: 0e2d8c487ef68866164af9dff49f5119 + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024121705-release.conda + sha256: edd613b122c086c4d6237c7195a55ce09bff9922ab70e0f1ff7a9662d3de41fe + md5: d68326deab9bb460f253bf6df7e903f6 depends: - - mblack ==25.1.0.dev2024121405 release + - mblack ==25.1.0.dev2024121705 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 214323771 - timestamp: 1734153633668 + size: 214152137 + timestamp: 1734412888834 - kind: conda name: max-python - version: 25.1.0.dev2024121405 + version: 25.1.0.dev2024121705 build: 3.12release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024121405-3.12release.conda - sha256: 7ebdc67f58946084f7f4a657f0661899e61707b055f2046d9c18033f21f97008 - md5: 5a8cbae9c5257545459bfe7a262b62a6 + url: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024121705-3.12release.conda + sha256: 11296250671f2a7c5951382f89f8e68a1702b0c8aeef200788e71d9e0e1d2955 + md5: f979494f9de5b3853834ffa1adf606c3 depends: - - max-core ==25.1.0.dev2024121405 release + - max-core ==25.1.0.dev2024121705 release - python 3.12.* - fastapi - httpx @@ -7039,18 +7023,18 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 122834581 - timestamp: 1734153445526 + size: 122755617 + timestamp: 1734412638055 - kind: conda name: max-python - version: 25.1.0.dev2024121405 + version: 25.1.0.dev2024121705 build: 3.12release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024121405-3.12release.conda - sha256: b74a5c8945a97210778cda3cd9fe98f7404d2c9ff0b1a03738c77af6429b1523 - md5: 099dc5d1f85e4f883e72caef6f0c6e52 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024121705-3.12release.conda + sha256: e4a7ded05f33903034e52feefe65f458975942740cf07dcb30e2e9c1f0af53e6 + md5: 9a51b55d48b861487dbecd7c4abc7b68 depends: - - max-core ==25.1.0.dev2024121405 release + - max-core ==25.1.0.dev2024121705 release - python 3.12.* - fastapi - httpx @@ -7073,18 +7057,18 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 126606485 - timestamp: 1734153430075 + size: 126486411 + timestamp: 1734412698632 - kind: conda name: max-python - version: 25.1.0.dev2024121405 + version: 25.1.0.dev2024121705 build: 3.12release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024121405-3.12release.conda - sha256: 24a7ab99d936e5c28f597413e9e643fe34c46ba55916c1febcbe658e79a2ea9f - md5: 661ce5968d3cc1b11a67dfbf77e986b8 + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024121705-3.12release.conda + sha256: 328cee9730cf537d58e6d24b9aa111504271433d724fd47fdcee55b26df222b3 + md5: b1168de7b96e9e7b0fad7c675ecdb426 depends: - - max-core ==25.1.0.dev2024121405 release + - max-core ==25.1.0.dev2024121705 release - python 3.12.* - fastapi - httpx @@ -7107,17 +7091,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 113414908 - timestamp: 1734153633671 + size: 113391631 + timestamp: 1734412888837 - kind: conda name: mblack - version: 25.1.0.dev2024121405 + version: 25.1.0.dev2024121705 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121405-release.conda - sha256: ea23ea9fdb019aa4dc05bcb1d1f526f77ce90a94baa3130d26ce71cad0a3647b - md5: 425b85251efa151234c9db33428ee55c + url: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121705-release.conda + sha256: 44d0c3a0b1242823334d6bad895ad037849719f67bcfbc426c65363c567f80a5 + md5: 93c89483058dabd0282c378812328ba0 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -7127,8 +7111,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130792 - timestamp: 1734153430070 + size: 130801 + timestamp: 1734412638051 - kind: conda name: mdurl version: 0.1.2 @@ -7163,21 +7147,21 @@ packages: timestamp: 1733258822603 - kind: conda name: mojo-jupyter - version: 25.1.0.dev2024121405 + version: 25.1.0.dev2024121705 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024121405-release.conda - sha256: b232fe63e84736d519137d4c98067c886f8acc1cc38a6620a062f4eb079e751a - md5: b7d7fe85425c5120a665795eb2097aa9 + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024121705-release.conda + sha256: 8ef8447f576590d381ccaa82e6c207c530e9355b07ab3174f3df9c9f064d42de + md5: 4c31e34ff54c71cd9d584d3ab8f1c315 depends: - - max-core ==25.1.0.dev2024121405 release + - max-core ==25.1.0.dev2024121705 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22934 - timestamp: 1734153430071 + size: 22937 + timestamp: 1734412638052 - kind: conda name: multidict version: 6.1.0 @@ -7623,62 +7607,61 @@ packages: timestamp: 1731377666602 - kind: conda name: opentelemetry-api - version: 1.28.2 + version: 1.29.0 build: pyhd8ed1ab_1 build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.28.2-pyhd8ed1ab_1.conda - sha256: 780dbc942a6075db7bdbaf556023be50c34a6111a99e465878d7bab0e5e0d7f4 - md5: a06f1e9d97c98d26f06675236c9ea554 + url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.29.0-pyhd8ed1ab_1.conda + sha256: 296280c8ace35c0a1cf72bed1077f248b3af903c3bf92332f1783a207cb5abdb + md5: 307b05402c1a382f2f09426492dee8f8 depends: - deprecated >=1.2.6 - - importlib-metadata >=6.0.0,<7.1.0 + - importlib-metadata >=6.0,<=8.5.0 - python >=3.9 - - setuptools >=16.0 license: Apache-2.0 license_family: APACHE - size: 44242 - timestamp: 1733734361129 + size: 44166 + timestamp: 1734132973331 - kind: conda name: opentelemetry-exporter-otlp-proto-common - version: 1.28.2 - build: pyhff2d567_0 + version: 1.29.0 + build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.28.2-pyhff2d567_0.conda - sha256: 838525f5a35f130eb3e6ccf06700ab7574467e8abe19da91e6f0de3b399e77c2 - md5: b00b3a8f0d25d5b18979c73ec051c313 + url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.29.0-pyhd8ed1ab_0.conda + sha256: ae9776efe52564e0d6711cfcee7c54439273e57a3999f7f796f66e862f58aae9 + md5: 0c02e74d26bce3fec93b227cf7ea6e6b depends: - backoff >=1.10.0,<3.0.0 - - opentelemetry-proto 1.28.2 + - opentelemetry-proto 1.29.0 - python >=3.9 license: Apache-2.0 license_family: APACHE - size: 18838 - timestamp: 1731991715474 + size: 18922 + timestamp: 1734310457116 - kind: conda name: opentelemetry-exporter-otlp-proto-http - version: 1.28.2 - build: pyhd8ed1ab_0 + version: 1.29.0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.28.2-pyhd8ed1ab_0.conda - sha256: d89b7b0f28dca5ed84d8c3421e3b16683f764c9eebde66cc8858fc183751af69 - md5: 73810c011d2d60914ce8f92fe99564a0 + url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.29.0-pyhd8ed1ab_1.conda + sha256: 5d61db9d5b4f91b3932f5f2348920d5b7fdaa09e52c8ea054cf7bf3f21677c9c + md5: 223f4e56a29601c887f0dc467034af5b depends: - deprecated >=1.2.6 - - googleapis-common-protos ~=1.52 - - opentelemetry-api ~=1.15 - - opentelemetry-exporter-otlp-proto-common 1.28.2 - - opentelemetry-proto 1.28.2 - - opentelemetry-sdk ~=1.28.2 - - python >=3.8 - - requests ~=2.7 + - googleapis-common-protos >=1.52,<2.dev0 + - opentelemetry-api >=1.15,<2.dev0 + - opentelemetry-exporter-otlp-proto-common 1.29.0 + - opentelemetry-proto 1.29.0 + - opentelemetry-sdk 1.29.0 + - python >=3.9 + - requests >=2.7,<3.dev0 license: Apache-2.0 - license_family: APACHE - size: 17007 - timestamp: 1732094238214 + size: 17147 + timestamp: 1734345675510 - kind: conda name: opentelemetry-exporter-prometheus version: 1.12.0rc1 @@ -7699,58 +7682,56 @@ packages: timestamp: 1695214221489 - kind: conda name: opentelemetry-proto - version: 1.28.2 - build: pyhff2d567_0 + version: 1.29.0 + build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.28.2-pyhff2d567_0.conda - sha256: e68320a465b45e05f569c440a20735db9a0fd7cdb9e52300506660a924d17caf - md5: 54ac33b32171ce2205b6639da1a1ac54 + url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.29.0-pyhd8ed1ab_0.conda + sha256: 200a7cb8acc8a0ddd6ef55c5460cec871b6a265929b240a0296c0ccb9c8d9758 + md5: e2a6d2ad10b813c7fdc1c64aac376128 depends: - protobuf <6.0,>=5.0 - python >=3.9 license: Apache-2.0 license_family: APACHE - size: 37108 - timestamp: 1731988686996 + size: 37235 + timestamp: 1734291034372 - kind: conda name: opentelemetry-sdk - version: 1.28.2 - build: pyhd8ed1ab_1 - build_number: 1 + version: 1.29.0 + build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.28.2-pyhd8ed1ab_1.conda - sha256: 9f48ec749f0738910fdd6750f9655f16949182b5379dd2c0771104d3e74bfd74 - md5: bfe29ef92f3a04ab8e59e4f97b28785c + url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.29.0-pyhd8ed1ab_0.conda + sha256: 7b36629d8b8be8a019fcfd1518d7b7f862dd25de96f8adcadb93e4fd12cf9bd6 + md5: 2a8893f06e6ebda4bfa78875bc923ea4 depends: - - opentelemetry-api 1.28.2 - - opentelemetry-semantic-conventions 0.49b2 + - opentelemetry-api 1.29.0 + - opentelemetry-semantic-conventions 0.50b0 - python >=3.9 - typing-extensions >=3.7.4 - typing_extensions >=3.7.4 license: Apache-2.0 license_family: APACHE - size: 78090 - timestamp: 1733768582451 + size: 77645 + timestamp: 1734297838999 - kind: conda name: opentelemetry-semantic-conventions - version: 0.49b2 - build: pyh3cfb1c2_1 - build_number: 1 + version: 0.50b0 + build: pyh3cfb1c2_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh3cfb1c2_1.conda - sha256: 28180ffa6611f117c782c7d72066b50332c1df0bdcfed0dea4e446a20c4b7d10 - md5: e0ada55d18e6bd5a8e61943b4b5d3a8f + url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.50b0-pyh3cfb1c2_0.conda + sha256: 6526e70368d5bf66ef0eaa51fb800d53782dde71a24bd38f40139919a6f784dc + md5: f7111fa4188d646c8108e232d024cb99 depends: - deprecated >=1.2.6 - - opentelemetry-api 1.28.2 + - opentelemetry-api 1.29.0 - python >=3.9 license: Apache-2.0 license_family: APACHE - size: 81099 - timestamp: 1733749104727 + size: 86084 + timestamp: 1734208980168 - kind: conda name: orc version: 2.0.3 @@ -8074,20 +8055,21 @@ packages: - kind: conda name: pip version: 24.3.1 - build: pyh8b19718_0 + build: pyh8b19718_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pip-24.3.1-pyh8b19718_0.conda - sha256: 499313e72e20225f84c2e9690bbaf5b952c8d7e0bf34b728278538f766b81628 - md5: 5dd546fe99b44fda83963d15f84263b7 + url: https://conda.anaconda.org/conda-forge/noarch/pip-24.3.1-pyh8b19718_1.conda + sha256: 376f64a6e0882144bf9f263b47c48bab0af34d6f03a52c3a5758c5225af89d93 + md5: 6727da77383b560d43d9d48338629ff4 depends: - - python >=3.8,<3.13.0a0 + - python >=3.9,<3.13.0a0 - setuptools - wheel license: MIT license_family: MIT - size: 1243168 - timestamp: 1730203795600 + size: 1243486 + timestamp: 1734379069310 - kind: conda name: pkgutil-resolve-name version: 1.3.10 @@ -8631,6 +8613,7 @@ packages: - python >=3.9 - python-dotenv >=0.21.0 license: MIT + license_family: MIT size: 31426 timestamp: 1734127929720 - kind: conda @@ -8910,20 +8893,19 @@ packages: timestamp: 1677079727691 - kind: conda name: python-multipart - version: 0.0.19 - build: pyhff2d567_1 - build_number: 1 + version: 0.0.20 + build: pyhff2d567_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_1.conda - sha256: e6f6bc3d2a51f45ca26d556c5a416efdacf49a918fefcd0b7c340121e608aa5f - md5: c74333aa447ed2b94d49e5db23da5de6 + url: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.20-pyhff2d567_0.conda + sha256: 1b03678d145b1675b757cba165a0d9803885807792f7eb4495e48a38858c3cca + md5: a28c984e0429aff3ab7386f7de56de6f depends: - python >=3.9 license: Apache-2.0 license_family: Apache - size: 27768 - timestamp: 1733323160772 + size: 27913 + timestamp: 1734420869885 - kind: conda name: python-tzdata version: '2024.2' @@ -9487,35 +9469,35 @@ packages: timestamp: 1733367225496 - kind: conda name: s2n - version: 1.5.9 - build: h0fd0ee4_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/s2n-1.5.9-h0fd0ee4_0.conda - sha256: f2c8e55d6caa8d87a482b1f133963c184de1ccb2303b77cc8ca86c794253f151 - md5: f472432f3753c5ca763d2497e2ea30bf + version: 1.5.10 + build: h5df210e_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/s2n-1.5.10-h5df210e_0.conda + sha256: b5e7a9f4b7b1ec5c5c3661e2defc8b47fab543b05cad6fec78739d8007612464 + md5: 3d3979efcc0f44f3f0cef3de03b296cc depends: - - __glibc >=2.17,<3.0.a0 - libgcc >=13 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 355568 - timestamp: 1731541963573 + size: 353450 + timestamp: 1734415474615 - kind: conda name: s2n - version: 1.5.9 - build: h636ded1_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/s2n-1.5.9-h636ded1_0.conda - sha256: 51572714743f836266af564c5b26b37599478131c4379a0d11778f04e647d070 - md5: bf4f84136d9ddb7be1855754a9ac4bb9 + version: 1.5.10 + build: hb5b8611_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/s2n-1.5.10-hb5b8611_0.conda + sha256: f6d451821fddc26b93f45e9313e1ea15e09e5ef049d4e137413a5225d2a5dfba + md5: 999f3673f2a011f59287f2969e3749e4 depends: + - __glibc >=2.17,<3.0.a0 - libgcc >=13 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 352546 - timestamp: 1731542018427 + size: 355142 + timestamp: 1734415467047 - kind: conda name: safetensors version: 0.4.5 @@ -10244,14 +10226,13 @@ packages: timestamp: 1733206968917 - kind: conda name: uvicorn - version: 0.32.1 - build: pyh31011fe_1 - build_number: 1 + version: 0.34.0 + build: pyh31011fe_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_1.conda - sha256: ad1d8470c629679ea3db52351a522ae44eee0111d8d8b254e8c863c4a292e5c4 - md5: 7832640e5e302059e844d56f410487a6 + url: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.34.0-pyh31011fe_0.conda + sha256: 55c160b0cf9274e2b98bc0f7fcce548bffa8d788bc86aa02801877457040f6fa + md5: 5d448feee86e4740498ec8f8eb40e052 depends: - __unix - click >=7.0 @@ -10260,31 +10241,30 @@ packages: - typing_extensions >=4.0 license: BSD-3-Clause license_family: BSD - size: 49340 - timestamp: 1733332048141 + size: 48643 + timestamp: 1734293057914 - kind: conda name: uvicorn-standard - version: 0.32.1 - build: h31011fe_1 - build_number: 1 + version: 0.34.0 + build: h31011fe_0 subdir: noarch noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_1.conda - sha256: 378903c51b2b1136fa48b01c0a2a8dd4634136d038a4a56561c0856fdcbfcabe - md5: 0c233d5c71d398cf01d0281e72194005 + url: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.34.0-h31011fe_0.conda + sha256: 87e1531e175e75122f9f37608eb953af4c977465ab0ae11283cc01fef954e4ec + md5: 32a94143a7f65d76d2d5da37dcb4ed79 depends: - __unix - - httptools >=0.5.0 + - httptools >=0.6.3 - python-dotenv >=0.13 - pyyaml >=5.1 - - uvicorn 0.32.1 pyh31011fe_1 + - uvicorn 0.34.0 pyh31011fe_0 - uvloop >=0.14.0,!=0.15.0,!=0.15.1 - watchfiles >=0.13 - websockets >=10.4 license: BSD-3-Clause license_family: BSD - size: 7094 - timestamp: 1733332049165 + size: 7203 + timestamp: 1734293058849 - kind: conda name: uvloop version: 0.21.0 @@ -10582,50 +10562,47 @@ packages: timestamp: 1732523852129 - kind: conda name: xorg-libxau - version: 1.0.11 - build: h86ecc28_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxau-1.0.11-h86ecc28_1.conda - sha256: a00c4c6054209c84fb460c5e4ae7193c335a9ee1851645c9ad59312438e853f7 - md5: c5f72a733c461aa7785518d29b997cc8 + version: 1.0.12 + build: h5505292_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxau-1.0.12-h5505292_0.conda + sha256: f33e6f013fc36ebc200f09ddead83468544cb5c353a3b50499b07b8c34e28a8d + md5: 50901e0764b7701d8ed7343496f4f301 depends: - - libgcc >=13 + - __osx >=11.0 license: MIT license_family: MIT - size: 15690 - timestamp: 1727036097294 + size: 13593 + timestamp: 1734229104321 - kind: conda name: xorg-libxau - version: 1.0.11 - build: hb9d3cd8_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.11-hb9d3cd8_1.conda - sha256: 532a046fee0b3a402db867b6ec55c84ba4cdedb91d817147c8feeae9766be3d6 - md5: 77cbc488235ebbaab2b6e912d3934bae + version: 1.0.12 + build: h86ecc28_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxau-1.0.12-h86ecc28_0.conda + sha256: 7829a0019b99ba462aece7592d2d7f42e12d12ccd3b9614e529de6ddba453685 + md5: d5397424399a66d33c80b1f2345a36a6 depends: - - __glibc >=2.17,<3.0.a0 - libgcc >=13 license: MIT license_family: MIT - size: 14679 - timestamp: 1727034741045 + size: 15873 + timestamp: 1734230458294 - kind: conda name: xorg-libxau - version: 1.0.11 - build: hd74edd7_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxau-1.0.11-hd74edd7_1.conda - sha256: 7113618021cf6c80831a429b2ebb9d639f3c43cf7fe2257d235dc6ae0ab43289 - md5: 7e0125f8fb619620a0011dc9297e2493 + version: 1.0.12 + build: hb9d3cd8_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-hb9d3cd8_0.conda + sha256: ed10c9283974d311855ae08a16dfd7e56241fac632aec3b92e3cfe73cff31038 + md5: f6ebe2cb3f82ba6c057dde5d9debe4f7 depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 license: MIT license_family: MIT - size: 13515 - timestamp: 1727034783560 + size: 14780 + timestamp: 1734229004433 - kind: conda name: xorg-libxdmcp version: 1.1.5 diff --git a/examples/operators/magic.lock b/examples/operators/magic.lock index 8dbf0058e9..49ec773f50 100644 --- a/examples/operators/magic.lock +++ b/examples/operators/magic.lock @@ -10,17 +10,17 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.10-py312h178313f_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.7.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.3.0-pyh71513ae_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-hb921021_15.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.1-h1a47875_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.10.6-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.3.0-h4e1184b_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.0-h7959bf6_11.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.2-hefd7a92_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-hbf5b6a4_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-h831e299_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h11f4f37_12.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.7-hf454442_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.1-h4e1184b_4.conda @@ -35,9 +35,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/backoff-2.2.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py312h2ec8cdc_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.3-hb9d3cd8_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2024.8.30-hbcca054_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.8.30-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.4-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2024.12.14-hbcca054_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.12.14-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py312h06ac9bb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_1.conda @@ -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.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.7-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 @@ -67,7 +67,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-7.0.2-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda @@ -81,14 +81,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-hcb10f89_6_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-hcb10f89_6_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-h3ee7192_6_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-25_linux64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-26_linux64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.1.0-hb9d3cd8_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-25_linux64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-26_linux64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libcrc32c-1.1.2-h9c3ff4c_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.11.1-h332b0f4_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.22-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.23-h4ddbbb0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20191231-he28a2e2_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libevent-2.1.12-hf998b51_1.conda @@ -104,7 +104,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.67.1-hc2c308b_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-hd590300_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-25_linux64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-26_linux64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.3-hb9d3cd8_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda @@ -119,7 +119,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-hc0a3c3a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libthrift-0.21.0-h0e7cc3e_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hc4654cb_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hd9ff511_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.9.0-hb9d3cd8_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.49.2-hb9d3cd8_0.conda @@ -131,12 +131,12 @@ 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-25.1.0.dev2024121405-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024121405-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024121405-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121405-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024121705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024121705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024121705-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121705-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-25.1.0.dev2024121405-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024121705-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 @@ -144,13 +144,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.3-h5fbd93e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.0-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.28.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.28.2-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.28.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.29.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.29.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.29.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-prometheus-1.12.0rc1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.28.2-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.28.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh3cfb1c2_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.29.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.29.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.50b0-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/orc-2.0.3-h97ab989_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.3-py312hf9745cd_1.conda @@ -174,7 +174,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.20-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python-xxhash-3.5.0-py312h66e93f0_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda @@ -187,9 +187,8 @@ environments: - 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/s2n-1.5.10-hb5b8611_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 - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-h8bd8927_1.conda @@ -209,13 +208,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.34.0-pyh31011fe_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.34.0-h31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/uvloop-0.21.0-py312h66e93f0_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/watchfiles-1.0.3-py312h12e396e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/websockets-14.1-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.17.0-py312h66e93f0_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.11-hb9d3cd8_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xxhash-0.8.2-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 @@ -228,17 +227,17 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.10-py312hcc812fe_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.7.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.3.0-pyh71513ae_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-h2cb9fb3_15.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.1-h740c5af_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-common-0.10.6-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-compression-0.3.0-h0f0193d_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-event-stream-0.5.0-hcbd8f92_11.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.2-h3df160d_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-h92bf595_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-h1a307af_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h5f50e26_12.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.7-h2080895_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.1-h0f0193d_4.conda @@ -253,9 +252,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/backoff-2.2.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/brotli-python-1.1.0-py312h6f74592_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h68df207_7.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/c-ares-1.34.3-h86ecc28_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2024.8.30-hcefe29a_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.8.30-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/c-ares-1.34.4-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2024.12.14-hcefe29a_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.12.14-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cffi-1.17.1-py312hac81daf_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_1.conda @@ -268,7 +267,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.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.7-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 @@ -286,7 +285,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-7.0.2-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda @@ -300,14 +299,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h3b568fd_6_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h3b568fd_6_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h3ffb4b1_6_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-25_linuxaarch64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-26_linuxaarch64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlicommon-1.1.0-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlidec-1.1.0-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlienc-1.1.0-h86ecc28_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-25_linuxaarch64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-26_linuxaarch64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcrc32c-1.1.2-h01db608_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcurl-8.11.1-h6702fde_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libdeflate-1.22-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libdeflate-1.23-h5e3c512_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20191231-he28a2e2_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libev-4.33-h31becfc_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libevent-2.1.12-h4ba1bb4_1.conda @@ -323,7 +322,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgrpc-1.67.1-h36c5df4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libiconv-1.17-h31becfc_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libjpeg-turbo-3.0.0-h31becfc_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-25_linuxaarch64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-26_linuxaarch64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.3-h86ecc28_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnghttp2-1.64.0-hc8609a4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda @@ -338,7 +337,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libthrift-0.21.0-h154c74f_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.0-hca96517_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.0-h88f7998_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.9.0-h86ecc28_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuv-1.49.2-h86ecc28_0.conda @@ -350,12 +349,12 @@ 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-25.1.0.dev2024121405-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024121405-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024121405-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121405-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024121705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024121705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024121705-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121705-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-25.1.0.dev2024121405-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024121705-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 @@ -363,13 +362,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openjpeg-2.5.3-h3f56577_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.0-h86ecc28_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.28.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.28.2-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.28.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.29.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.29.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.29.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-prometheus-1.12.0rc1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.28.2-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.28.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh3cfb1c2_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.29.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.29.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.50b0-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/orc-2.0.3-h3c55218_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pandas-2.2.3-py312ha2895bd_1.conda @@ -393,7 +392,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.20-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-xxhash-3.5.0-py312h52516f5_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.12-5_cp312.conda @@ -406,9 +405,8 @@ environments: - 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/s2n-1.5.10-h5df210e_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 - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-hd4fb6f5_1.conda @@ -428,13 +426,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.34.0-pyh31011fe_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.34.0-h31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/uvloop-0.21.0-py312hb2c0f52_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/watchfiles-1.0.3-py312h8cbf658_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/websockets-14.1-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/wrapt-1.17.0-py312hb2c0f52_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxau-1.0.11-h86ecc28_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxau-1.0.12-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxdmcp-1.1.5-h57736b2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xxhash-0.8.2-h31becfc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yaml-0.2.5-hf897c2e_2.tar.bz2 @@ -446,17 +444,17 @@ environments: osx-arm64: - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.10-py312h998013c_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.7.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.3.0-pyh71513ae_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-h8bc59a9_15.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.1-hc8a0bd2_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.10.6-h5505292_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-compression-0.3.0-hc8a0bd2_5.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.0-h54f970a_11.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.2-h96aa502_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-haba67d1_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-haba67d1_5.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h24f418c_12.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.7-h1be5864_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.1-hc8a0bd2_4.conda @@ -471,9 +469,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/backoff-2.2.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py312hde4cb15_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.3-h5505292_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2024.8.30-hf0a4a13_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.8.30-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.4-h5505292_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2024.12.14-hf0a4a13_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.12.14-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.1-py312h0fad829_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_1.conda @@ -486,7 +484,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.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.7-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 @@ -504,7 +502,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-7.0.2-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda @@ -516,15 +514,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-hf07054f_6_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-hf07054f_6_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-h86344ea_6_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-25_osxarm64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-26_osxarm64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.1.0-hd74edd7_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.1.0-hd74edd7_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlienc-1.1.0-hd74edd7_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-25_osxarm64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-26_osxarm64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcrc32c-1.1.2-hbdafb3b_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.11.1-h73640d1_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.5-ha82da77_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.22-hd74edd7_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.23-hec38601_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20191231-hc8eb9b7_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libev-4.33-h93a5062_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libevent-2.1.12-h2757513_1.conda @@ -537,7 +535,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgrpc-1.67.1-hc70892a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.17-h0d3ecfb_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.0.0-hb547adb_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-25_osxarm64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-26_osxarm64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.3-h39f12f2_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.64.0-h6d7220d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.28-openmp_hf332438_1.conda @@ -549,7 +547,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.47.2-h3f77e49_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.1-h9cc3647_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libthrift-0.21.0-h64651cc_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-ha962b0a_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-h551f018_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.9.0-h5505292_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libuv-1.49.2-h7ab814d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.4.0-h93a5062_0.conda @@ -560,12 +558,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-25.1.0.dev2024121405-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024121405-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024121405-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121405-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024121705-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024121705-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024121705-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121705-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-25.1.0.dev2024121405-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024121705-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 @@ -573,13 +571,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openjpeg-2.5.3-h8a3d83b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.0-h39f12f2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.28.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.28.2-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.28.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.29.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.29.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.29.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-prometheus-1.12.0rc1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.28.2-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.28.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh3cfb1c2_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.29.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.29.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.50b0-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/orc-2.0.3-hbcee414_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.3-py312hcd31e36_1.conda @@ -603,7 +601,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.20-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-xxhash-3.5.0-py312h024a12e_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-5_cp312.conda @@ -617,7 +615,6 @@ environments: - 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 - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-h98b9ce2_1.conda @@ -637,13 +634,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.34.0-pyh31011fe_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.34.0-h31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/uvloop-0.21.0-py312h0bf5046_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/watchfiles-1.0.3-py312hcd83bfe_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/websockets-14.1-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/wrapt-1.17.0-py312hea69d52_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxau-1.0.11-hd74edd7_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxau-1.0.12-h5505292_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxdmcp-1.1.5-hd74edd7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xxhash-0.8.2-hb547adb_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 @@ -789,21 +786,20 @@ packages: timestamp: 1733839037447 - kind: conda name: aiosignal - version: 1.3.1 - build: pyhd8ed1ab_1 - build_number: 1 + version: 1.3.2 + build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_1.conda - sha256: 9c7b639ea0cc796ef46c57fa104ec1f2ed53cd11c063518869a5a9d7d3b0b2db - md5: d736bd1b8904d7593dce4893e58a7881 + url: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda + sha256: 7de8ced1918bbdadecf8e1c1c68237fe5709c097bd9e0d254f4cad118f4345d0 + md5: 1a3981115a398535dbe3f6d5faae3d36 depends: - frozenlist >=1.1.0 - python >=3.9 license: Apache-2.0 license_family: APACHE - size: 13157 - timestamp: 1733332198143 + size: 13229 + timestamp: 1734342253061 - kind: conda name: annotated-types version: 0.7.0 @@ -845,20 +841,19 @@ packages: timestamp: 1733532678437 - kind: conda name: attrs - version: 24.2.0 - build: pyh71513ae_1 - build_number: 1 + version: 24.3.0 + build: pyh71513ae_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_1.conda - sha256: 8488a116dffe204015a90b41982c0270534bd1070f44a00b316d59e4a79ae8c7 - md5: 2018839db45c79654b57a924fcdd27d0 + url: https://conda.anaconda.org/conda-forge/noarch/attrs-24.3.0-pyh71513ae_0.conda + sha256: 750186af694a7130eaf7119fbb56db0d2326d8995ad5b8eae23c622b85fea29a + md5: 356927ace43302bf6f5926e2a58dae6a depends: - python >=3.9 license: MIT license_family: MIT - size: 56336 - timestamp: 1733520064905 + size: 56354 + timestamp: 1734348889193 - kind: conda name: aws-c-auth version: 0.8.0 @@ -1183,57 +1178,57 @@ packages: - kind: conda name: aws-c-io version: 0.15.3 - build: h92bf595_4 - build_number: 4 + build: h1a307af_5 + build_number: 5 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-h92bf595_4.conda - sha256: ffa2fc1ddb01f4b8ac038ab70a5533306119754ba438b23399f2a82a38cf27bf - md5: 539df02c00c506c78aebdf6c0fc75743 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-h1a307af_5.conda + sha256: 71f5bf891299f831dceaea12f926c393bf754569e5305387a88b77e1f94612d8 + md5: da8ab0f3eeac93449ec3d531ede92caa depends: - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.6,<0.10.7.0a0 - libgcc >=13 - - s2n >=1.5.9,<1.5.10.0a0 + - s2n >=1.5.10,<1.5.11.0a0 license: Apache-2.0 license_family: Apache - size: 161836 - timestamp: 1733997573790 + size: 161889 + timestamp: 1734433686109 - kind: conda name: aws-c-io version: 0.15.3 - build: haba67d1_4 - build_number: 4 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-haba67d1_4.conda - sha256: 2d0859b57439cd98e854577aa3e07eb171b590098d51a8c908bab5ec497a3d38 - md5: 74eace4fab8675263a848075e991d380 + build: h831e299_5 + build_number: 5 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-h831e299_5.conda + sha256: 5920009b1c6f9a2bc131a36725251894e4b4773fce29c4b1065d4213ae337abe + md5: 80dd9f0ddf935290d1dc00ec75ff3023 depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + - s2n >=1.5.10,<1.5.11.0a0 license: Apache-2.0 license_family: Apache - size: 136213 - timestamp: 1733997647724 + size: 157864 + timestamp: 1734433578570 - kind: conda name: aws-c-io version: 0.15.3 - build: hbf5b6a4_4 - build_number: 4 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-hbf5b6a4_4.conda - sha256: 3195fe431d3c43d6ecf749796d3acb093645c9d0de9998616641dada4b5fa2a6 - md5: ad3a6713063c18b9232c48e89ada03ac + build: haba67d1_5 + build_number: 5 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-haba67d1_5.conda + sha256: c0a1a2b0750225ac3dc07fd258c88c2be866bf8ac67ba3d50bb4ecec852ff8ee + md5: 4c5ff4134e76426a75b8c548984fa933 depends: - - __glibc >=2.17,<3.0.a0 + - __osx >=11.0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.6,<0.10.7.0a0 - - libgcc >=13 - - s2n >=1.5.9,<1.5.10.0a0 license: Apache-2.0 license_family: Apache - size: 157886 - timestamp: 1733997507332 + size: 135729 + timestamp: 1734433832730 - kind: conda name: aws-c-mqtt version: 0.11.0 @@ -1998,97 +1993,94 @@ packages: timestamp: 1720974522888 - kind: conda name: c-ares - version: 1.34.3 - build: h5505292_1 - build_number: 1 + version: 1.34.4 + build: h5505292_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.3-h5505292_1.conda - sha256: 6dfa83cbd9acc8671d439fe9c745a5716faf6cbadf2f1e18c841bcf86cbba5f2 - md5: fb72102e8a8f9bcd38e40af09ff41c42 + url: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.4-h5505292_0.conda + sha256: 09c0c8476e50b2955f474a4a1c17c4c047dd52993b5366b6ea8e968e583b921f + md5: c1c999a38a4303b29d75c636eaa13cf9 depends: - __osx >=11.0 license: MIT license_family: MIT - size: 179318 - timestamp: 1732447193278 + size: 179496 + timestamp: 1734208291879 - kind: conda name: c-ares - version: 1.34.3 - build: h86ecc28_1 - build_number: 1 + version: 1.34.4 + build: h86ecc28_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/c-ares-1.34.3-h86ecc28_1.conda - sha256: 1181db17781d9d66c1478e7fbc3e82dd273e9cb43ed910e1d0f8b3c96b16e290 - md5: 0cd9ebf65479cdceb6a4888b764dafcd + url: https://conda.anaconda.org/conda-forge/linux-aarch64/c-ares-1.34.4-h86ecc28_0.conda + sha256: 1187a41d4bb2afe02cb18690682edc98d1e9f5e0ccda638d8704a75ea1875bbe + md5: 356da36f35d36dcba16e43f1589d4e39 depends: - libgcc >=13 license: MIT license_family: MIT - size: 214791 - timestamp: 1732447020593 + size: 215979 + timestamp: 1734208193181 - kind: conda name: c-ares - version: 1.34.3 - build: hb9d3cd8_1 - build_number: 1 + version: 1.34.4 + build: hb9d3cd8_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.3-hb9d3cd8_1.conda - sha256: 732571ba6286dbccbf4c6450078a581b7a5620204faf876ff0ef282d77a6bfa8 - md5: ee228789a85f961d14567252a03e725f + url: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.4-hb9d3cd8_0.conda + sha256: d4f28d87b6339b94f74762c0076e29c8ef8ddfff51a564a92da2843573c18320 + md5: e2775acf57efd5af15b8e3d1d74d72d3 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 license: MIT license_family: MIT - size: 204857 - timestamp: 1732447031823 + size: 206085 + timestamp: 1734208189009 - kind: conda name: ca-certificates - version: 2024.8.30 + version: 2024.12.14 build: hbcca054_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2024.8.30-hbcca054_0.conda - sha256: afee721baa6d988e27fef1832f68d6f32ac8cc99cdf6015732224c2841a09cea - md5: c27d1c142233b5bc9ca570c6e2e0c244 + url: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2024.12.14-hbcca054_0.conda + sha256: 1afd7274cbc9a334d6d0bc62fa760acc7afdaceb0b91a8df370ec01fd75dc7dd + md5: 720523eb0d6a9b0f6120c16b2aa4e7de license: ISC - size: 159003 - timestamp: 1725018903918 + size: 157088 + timestamp: 1734208393264 - kind: conda name: ca-certificates - version: 2024.8.30 + version: 2024.12.14 build: hcefe29a_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2024.8.30-hcefe29a_0.conda - sha256: 2a2d827bee3775a85f0f1b2f2089291475c4416336d1b3a8cbce2964db547af8 - md5: 70e57e8f59d2c98f86b49c69e5074be5 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2024.12.14-hcefe29a_0.conda + sha256: ad7b43211051332a5a4e788bb4619a2d0ecb5be73e0f76be17f733a87d7effd1 + md5: 83b4ad1e6dc14df5891f3fcfdeb44351 license: ISC - size: 159106 - timestamp: 1725020043153 + size: 157096 + timestamp: 1734209301744 - kind: conda name: ca-certificates - version: 2024.8.30 + version: 2024.12.14 build: hf0a4a13_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2024.8.30-hf0a4a13_0.conda - sha256: 2db1733f4b644575dbbdd7994a8f338e6ef937f5ebdb74acd557e9dda0211709 - md5: 40dec13fd8348dbe303e57be74bd3d35 + url: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2024.12.14-hf0a4a13_0.conda + sha256: 256be633fd0882ccc1a7a32bc278547e1703f85082c0789a87a603ee3ab8fb82 + md5: 7cb381a6783d91902638e4ed1ebd478e license: ISC - size: 158482 - timestamp: 1725019034582 + size: 157091 + timestamp: 1734208344343 - kind: conda name: certifi - version: 2024.8.30 + version: 2024.12.14 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.8.30-pyhd8ed1ab_0.conda - sha256: 7020770df338c45ac6b560185956c32f0a5abf4b76179c037f115fc7d687819f - md5: 12f7d00853807b0531775e9be891cb11 + url: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.12.14-pyhd8ed1ab_0.conda + sha256: 048c16a9cbcb1fbad02083414d3bc7c1d0eea4b39aee6aa6bf8d1d5089ca8bad + md5: 6feb87357ecd66733be3279f16a8c400 depends: - - python >=3.7 + - python >=3.9 license: ISC - size: 163752 - timestamp: 1725278204397 + size: 161642 + timestamp: 1734380604767 - kind: conda name: cffi version: 1.17.1 @@ -2354,13 +2346,13 @@ packages: timestamp: 1733362427885 - kind: conda name: fastapi-cli - version: 0.0.6 + version: 0.0.7 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.6-pyhd8ed1ab_0.conda - sha256: f0a900e1d8158915c71d9064699d97fc137058f71f5cdd257d79dbac07a41b63 - md5: 3256783cc0dd4cf3ff17198ce3b1782e + url: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.7-pyhd8ed1ab_0.conda + sha256: 300683731013b7221922339cd40430bb3c2ddeeb658fd7e37f5099ffe64e4db0 + md5: d960e0ea9e1c561aa928f6c4439f04c7 depends: - python >=3.9 - rich-toolkit >=0.11.1 @@ -2368,8 +2360,8 @@ packages: - uvicorn-standard >=0.15.0 license: MIT license_family: MIT - size: 15512 - timestamp: 1733881782160 + size: 15546 + timestamp: 1734302408607 - kind: conda name: filelock version: 3.16.1 @@ -2841,20 +2833,21 @@ packages: timestamp: 1733211921194 - kind: conda name: importlib-metadata - version: 7.0.2 - build: pyha770c72_0 + version: 8.5.0 + build: pyha770c72_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-7.0.2-pyha770c72_0.conda - sha256: 9a26136d2cc81ccac209d6ae24281ceba3365fe34e34b2c45570f2a96e9d9c1b - md5: b050a4bb0e90ebd6e7fa4093d6346867 + url: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_1.conda + sha256: 13766b88fc5b23581530d3a0287c0c58ad82f60401afefab283bf158d2be55a9 + md5: 315607a3030ad5d5227e76e0733798ff depends: - - python >=3.8 + - python >=3.9 - zipp >=0.5 license: Apache-2.0 license_family: APACHE - size: 26900 - timestamp: 1709821273570 + size: 28623 + timestamp: 1733223207185 - kind: conda name: jinja2 version: 3.1.4 @@ -3485,66 +3478,63 @@ packages: - kind: conda name: libblas version: 3.9.0 - build: 25_linux64_openblas - build_number: 25 + build: 26_linux64_openblas + build_number: 26 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-25_linux64_openblas.conda - sha256: d6d12dc437d060f838820e9e61bf73baab651f91935ac594cf10beb9ef1b4450 - md5: 8ea26d42ca88ec5258802715fe1ee10b + url: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-26_linux64_openblas.conda + sha256: 30bd658682b124243f8e52d8edf8a19e7be1bc31e4fe4baec30a64002dc8cd0c + md5: ac52800af2e0c0e7dac770b435ce768a depends: - libopenblas >=0.3.28,<0.3.29.0a0 - libopenblas >=0.3.28,<1.0a0 constrains: - - liblapack 3.9.0 25_linux64_openblas - - libcblas 3.9.0 25_linux64_openblas + - libcblas 3.9.0 26_linux64_openblas + - liblapack 3.9.0 26_linux64_openblas + - liblapacke 3.9.0 26_linux64_openblas - blas * openblas - - liblapacke 3.9.0 25_linux64_openblas license: BSD-3-Clause - license_family: BSD - size: 15677 - timestamp: 1729642900350 + size: 16393 + timestamp: 1734432564346 - kind: conda name: libblas version: 3.9.0 - build: 25_linuxaarch64_openblas - build_number: 25 + build: 26_linuxaarch64_openblas + build_number: 26 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-25_linuxaarch64_openblas.conda - sha256: 5c08f78312874bb61307f5ea737377df2d0f6e7f7833ded21ca58d8820c794ca - md5: f9b8a4a955ed2d0b68b1f453abcc1c9e + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-26_linuxaarch64_openblas.conda + sha256: df6d8ee34d45cf35609ecdd55c1ff03e32e0cd87ae41ebe4ef3747a8e09ead4d + md5: 8d900b7079a00969d70305e9aad550b7 depends: - libopenblas >=0.3.28,<0.3.29.0a0 - libopenblas >=0.3.28,<1.0a0 constrains: - blas * openblas - - liblapacke 3.9.0 25_linuxaarch64_openblas - - liblapack 3.9.0 25_linuxaarch64_openblas - - libcblas 3.9.0 25_linuxaarch64_openblas + - liblapacke 3.9.0 26_linuxaarch64_openblas + - libcblas 3.9.0 26_linuxaarch64_openblas + - liblapack 3.9.0 26_linuxaarch64_openblas license: BSD-3-Clause - license_family: BSD - size: 15808 - timestamp: 1729643002627 + size: 16477 + timestamp: 1734432576699 - kind: conda name: libblas version: 3.9.0 - build: 25_osxarm64_openblas - build_number: 25 + build: 26_osxarm64_openblas + build_number: 26 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-25_osxarm64_openblas.conda - sha256: f1fb9a11af0b2878bd8804b4c77d3733c40076218bcbdb35f575b1c0c9fddf11 - md5: f8cf4d920ff36ce471619010eff59cac + url: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-26_osxarm64_openblas.conda + sha256: 597f9c3779caa979c8c6abbb3ba8c7191b84e1a910d6b0d10e5faf35284c450c + md5: 21be102c9ae80a67ba7de23b129aa7f6 depends: - libopenblas >=0.3.28,<0.3.29.0a0 - libopenblas >=0.3.28,<1.0a0 constrains: + - liblapack 3.9.0 26_osxarm64_openblas + - liblapacke 3.9.0 26_osxarm64_openblas + - libcblas 3.9.0 26_osxarm64_openblas - blas * openblas - - liblapack 3.9.0 25_osxarm64_openblas - - liblapacke 3.9.0 25_osxarm64_openblas - - libcblas 3.9.0 25_osxarm64_openblas license: BSD-3-Clause - license_family: BSD - size: 15913 - timestamp: 1729643265495 + size: 16714 + timestamp: 1734433054681 - kind: conda name: libbrotlicommon version: 1.1.0 @@ -3692,60 +3682,57 @@ packages: - kind: conda name: libcblas version: 3.9.0 - build: 25_linux64_openblas - build_number: 25 + build: 26_linux64_openblas + build_number: 26 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-25_linux64_openblas.conda - sha256: ab87b0477078837c91d9cda62a9faca18fba7c57cc77aa779ae24b3ac783b5dd - md5: 5dbd1b0fc0d01ec5e0e1fbe667281a11 + url: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-26_linux64_openblas.conda + sha256: 9c74e536c9bc868e356ffd43f81c2cb398aec84b40fcadc312315b164a5500ee + md5: ebcc5f37a435aa3c19640533c82f8d76 depends: - - libblas 3.9.0 25_linux64_openblas + - libblas 3.9.0 26_linux64_openblas constrains: - - liblapack 3.9.0 25_linux64_openblas + - liblapack 3.9.0 26_linux64_openblas + - liblapacke 3.9.0 26_linux64_openblas - blas * openblas - - liblapacke 3.9.0 25_linux64_openblas license: BSD-3-Clause - license_family: BSD - size: 15613 - timestamp: 1729642905619 + size: 16336 + timestamp: 1734432570482 - kind: conda name: libcblas version: 3.9.0 - build: 25_linuxaarch64_openblas - build_number: 25 + build: 26_linuxaarch64_openblas + build_number: 26 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-25_linuxaarch64_openblas.conda - sha256: fde797e5528040fed0e9228dd75331be0cf5cbb0bc63641f53c3cca9eb86ec16 - md5: db6af51123c67814572a8c25542cb368 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-26_linuxaarch64_openblas.conda + sha256: 521e78be0c4170f229c43e1a6c94337a72db3ebcbe6e5960f8413aa438dcb8f9 + md5: d77f943ae4083f3aeddca698f2d28262 depends: - - libblas 3.9.0 25_linuxaarch64_openblas + - libblas 3.9.0 26_linuxaarch64_openblas constrains: - blas * openblas - - liblapacke 3.9.0 25_linuxaarch64_openblas - - liblapack 3.9.0 25_linuxaarch64_openblas + - liblapacke 3.9.0 26_linuxaarch64_openblas + - liblapack 3.9.0 26_linuxaarch64_openblas license: BSD-3-Clause - license_family: BSD - size: 15700 - timestamp: 1729643006729 + size: 16398 + timestamp: 1734432580937 - kind: conda name: libcblas version: 3.9.0 - build: 25_osxarm64_openblas - build_number: 25 + build: 26_osxarm64_openblas + build_number: 26 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-25_osxarm64_openblas.conda - sha256: d9fa5b6b11252132a3383bbf87bd2f1b9d6248bef1b7e113c2a8ae41b0376218 - md5: 4df0fae81f0b5bf47d48c882b086da11 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-26_osxarm64_openblas.conda + sha256: 27a29ef6b2fd2179bc3a0bb9db351f078ba140ca10485dca147c399639f84c93 + md5: a0e9980fe12d42f6d0c0ec009f67e948 depends: - - libblas 3.9.0 25_osxarm64_openblas + - libblas 3.9.0 26_osxarm64_openblas constrains: + - liblapack 3.9.0 26_osxarm64_openblas + - liblapacke 3.9.0 26_osxarm64_openblas - blas * openblas - - liblapack 3.9.0 25_osxarm64_openblas - - liblapacke 3.9.0 25_osxarm64_openblas license: BSD-3-Clause - license_family: BSD - size: 15837 - timestamp: 1729643270793 + size: 16628 + timestamp: 1734433061517 - kind: conda name: libcrc32c version: 1.1.2 @@ -3867,47 +3854,44 @@ packages: timestamp: 1733291654212 - kind: conda name: libdeflate - version: '1.22' - build: h86ecc28_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libdeflate-1.22-h86ecc28_0.conda - sha256: 986207f130703897300ddc3637c52e86a5b21c735fe384bf48554d9a6d91c56d - md5: ff6a44e8b1707d02be2fe9a36ea88d4a + version: '1.23' + build: h4ddbbb0_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.23-h4ddbbb0_0.conda + sha256: 511d801626d02f4247a04fff957cc6e9ec4cc7e8622bd9acd076bcdc5de5fe66 + md5: 8dfae1d2e74767e9ce36d5fa0d8605db depends: + - __glibc >=2.17,<3.0.a0 - libgcc >=13 license: MIT - license_family: MIT - size: 69601 - timestamp: 1728177137503 + size: 72255 + timestamp: 1734373823254 - kind: conda name: libdeflate - version: '1.22' - build: hb9d3cd8_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.22-hb9d3cd8_0.conda - sha256: 780f0530a3adfc1497ba49d626931c6afc978c540e1abfde6ccd57128ded6ad6 - md5: b422943d5d772b7cc858b36ad2a92db5 + version: '1.23' + build: h5e3c512_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libdeflate-1.23-h5e3c512_0.conda + sha256: 959419d87cd2b789a9055db95704c614f31aeb70bef7949fa2f734122a3a2863 + md5: 7e7ca2607b11b180120cefc2354fc0cb depends: - - __glibc >=2.17,<3.0.a0 - libgcc >=13 license: MIT - license_family: MIT - size: 72242 - timestamp: 1728177071251 + size: 69862 + timestamp: 1734373858306 - kind: conda name: libdeflate - version: '1.22' - build: hd74edd7_0 + version: '1.23' + build: hec38601_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.22-hd74edd7_0.conda - sha256: 3552894ca62bebc33d05982937cda25a4fa19e56a82af2ff20944ff4c2532fda - md5: 2d3e3f3d8ab315748420ef58d5a3ae0f + url: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.23-hec38601_0.conda + sha256: 887c02deaed6d583459eba6367023e36d8761085b2f7126e389424f57155da53 + md5: 1d8b9588be14e71df38c525767a1ac30 depends: - __osx >=11.0 license: MIT - license_family: MIT - size: 54089 - timestamp: 1728177149927 + size: 54132 + timestamp: 1734373971372 - kind: conda name: libedit version: 3.1.20191231 @@ -4631,60 +4615,57 @@ packages: - kind: conda name: liblapack version: 3.9.0 - build: 25_linux64_openblas - build_number: 25 + build: 26_linux64_openblas + build_number: 26 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-25_linux64_openblas.conda - sha256: 9d1ff017714edb2d84868f0f931a4a0e7c289a971062b2ac66cfc8145df7e20e - md5: 4dc03a53fc69371a6158d0ed37214cd3 + url: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-26_linux64_openblas.conda + sha256: b76458c36331376911e0f98fa68109e02f4d5e5ebfffa79587ac69cef748bba1 + md5: 3792604c43695d6a273bc5faaac47d48 depends: - - libblas 3.9.0 25_linux64_openblas + - libblas 3.9.0 26_linux64_openblas constrains: - - liblapacke 3.9.0 25_linux64_openblas - - libcblas 3.9.0 25_linux64_openblas + - libcblas 3.9.0 26_linux64_openblas + - liblapacke 3.9.0 26_linux64_openblas - blas * openblas license: BSD-3-Clause - license_family: BSD - size: 15608 - timestamp: 1729642910812 + size: 16338 + timestamp: 1734432576650 - kind: conda name: liblapack version: 3.9.0 - build: 25_linuxaarch64_openblas - build_number: 25 + build: 26_linuxaarch64_openblas + build_number: 26 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-25_linuxaarch64_openblas.conda - sha256: 2b399e65e0338bf249657b98333e910cd7086ea1332d4d6f303735883ca49318 - md5: 0eb74e81de46454960bde9e44e7ee378 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-26_linuxaarch64_openblas.conda + sha256: a42bd01498efe2ccf6d08d56ac3cbd3ceab79e06699ff5aac3da8e45a66738f7 + md5: a5d4e18876393633da62fd8492c00156 depends: - - libblas 3.9.0 25_linuxaarch64_openblas + - libblas 3.9.0 26_linuxaarch64_openblas constrains: - blas * openblas - - liblapacke 3.9.0 25_linuxaarch64_openblas - - libcblas 3.9.0 25_linuxaarch64_openblas + - liblapacke 3.9.0 26_linuxaarch64_openblas + - libcblas 3.9.0 26_linuxaarch64_openblas license: BSD-3-Clause - license_family: BSD - size: 15711 - timestamp: 1729643010817 + size: 16403 + timestamp: 1734432585123 - kind: conda name: liblapack version: 3.9.0 - build: 25_osxarm64_openblas - build_number: 25 + build: 26_osxarm64_openblas + build_number: 26 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-25_osxarm64_openblas.conda - sha256: fdd742407672a9af20e70764550cf18b3ab67f12e48bf04163b90492fbc401e7 - md5: 19bbddfec972d401838330453186108d + url: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-26_osxarm64_openblas.conda + sha256: dd6d9a21e672aee4332f019c8229ce70cf5eaf6c2f4cbd1443b105fb66c00dc5 + md5: cebad79038a75cfd28fa90d147a2d34d depends: - - libblas 3.9.0 25_osxarm64_openblas + - libblas 3.9.0 26_osxarm64_openblas constrains: + - liblapacke 3.9.0 26_osxarm64_openblas + - libcblas 3.9.0 26_osxarm64_openblas - blas * openblas - - liblapacke 3.9.0 25_osxarm64_openblas - - libcblas 3.9.0 25_osxarm64_openblas license: BSD-3-Clause - license_family: BSD - size: 15823 - timestamp: 1729643275943 + size: 16624 + timestamp: 1734433068120 - kind: conda name: liblzma version: 5.6.3 @@ -5341,38 +5322,37 @@ packages: - kind: conda name: libtiff version: 4.7.0 - build: ha962b0a_2 - build_number: 2 + build: h551f018_3 + build_number: 3 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-ha962b0a_2.conda - sha256: d9e6835fd189b85eb90dbfdcc51f5375decbf5bb53130042f49bbd6bfb0b24be - md5: 8e14b5225c593f099a21971568e6d7b4 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-h551f018_3.conda + sha256: 91417846157e04992801438a496b151df89604b2e7c6775d6f701fcd0cbed5ae + md5: a5d084a957563e614ec0c0196d890654 depends: - __osx >=11.0 - lerc >=4.0.0,<5.0a0 - libcxx >=18 - - libdeflate >=1.22,<1.23.0a0 + - libdeflate >=1.23,<1.24.0a0 - libjpeg-turbo >=3.0.0,<4.0a0 - liblzma >=5.6.3,<6.0a0 - libwebp-base >=1.4.0,<2.0a0 - libzlib >=1.3.1,<2.0a0 - zstd >=1.5.6,<1.6.0a0 license: HPND - size: 370387 - timestamp: 1733443310502 + size: 370600 + timestamp: 1734398863052 - kind: conda name: libtiff version: 4.7.0 - build: hc4654cb_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hc4654cb_2.conda - sha256: 18653b4a5c73e19c5e86ff72dab9bf59f5cc43d7f404a6be705d152dfd5e0660 - md5: be54fb40ea32e8fe9dbaa94d4528b57e + build: h88f7998_3 + build_number: 3 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.0-h88f7998_3.conda + sha256: 5888bd66ba7606ae8596856c7dac800940ecad0aed77d6aa37db69d434c81cf0 + md5: 36a0ea4a173338c8725dc0807e99cf22 depends: - - __glibc >=2.17,<3.0.a0 - lerc >=4.0.0,<5.0a0 - - libdeflate >=1.22,<1.23.0a0 + - libdeflate >=1.23,<1.24.0a0 - libgcc >=13 - libjpeg-turbo >=3.0.0,<4.0a0 - liblzma >=5.6.3,<6.0a0 @@ -5381,20 +5361,21 @@ packages: - libzlib >=1.3.1,<2.0a0 - zstd >=1.5.6,<1.6.0a0 license: HPND - size: 429018 - timestamp: 1733443013288 + size: 464699 + timestamp: 1734398752249 - kind: conda name: libtiff version: 4.7.0 - build: hca96517_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.0-hca96517_2.conda - sha256: d736d840d1f2446234195adfcb51b132c85797730b6f42ebf058d350fa9d20e8 - md5: 278dcef6d1ea28c04109c3f5dea126cb + build: hd9ff511_3 + build_number: 3 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hd9ff511_3.conda + sha256: b224e16b88d76ea95e4af56e2bc638c603bd26a770b98d117d04541d3aafa002 + md5: 0ea6510969e1296cc19966fad481f6de depends: + - __glibc >=2.17,<3.0.a0 - lerc >=4.0.0,<5.0a0 - - libdeflate >=1.22,<1.23.0a0 + - libdeflate >=1.23,<1.24.0a0 - libgcc >=13 - libjpeg-turbo >=3.0.0,<4.0a0 - liblzma >=5.6.3,<6.0a0 @@ -5403,8 +5384,8 @@ packages: - libzlib >=1.3.1,<2.0a0 - zstd >=1.5.6,<1.6.0a0 license: HPND - size: 464857 - timestamp: 1733443105529 + size: 428173 + timestamp: 1734398813264 - kind: conda name: libutf8proc version: 2.9.0 @@ -5902,76 +5883,76 @@ packages: timestamp: 1733219945697 - kind: conda name: max - version: 25.1.0.dev2024121405 + version: 25.1.0.dev2024121705 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024121405-release.conda - sha256: 6bacaa1d4f27d255a4c3907c28929865eeef5d45d64d61c3991b526aee14766d - md5: 1aec535b4731af73dd1b43472e7b6fa0 - depends: - - max-core ==25.1.0.dev2024121405 release - - max-python >=25.1.0.dev2024121405,<26.0a0 - - mojo-jupyter ==25.1.0.dev2024121405 release - - mblack ==25.1.0.dev2024121405 release + url: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024121705-release.conda + sha256: 83b2265b29c1ee69ae9d9f639ab04899d0ef15b5abc9114e034e2cd382dcad31 + md5: bd7165d97ebb0458ddb1ce616c146c24 + depends: + - max-core ==25.1.0.dev2024121705 release + - max-python >=25.1.0.dev2024121705,<26.0a0 + - mojo-jupyter ==25.1.0.dev2024121705 release + - mblack ==25.1.0.dev2024121705 release license: LicenseRef-Modular-Proprietary size: 9921 - timestamp: 1734153430066 + timestamp: 1734412638047 - kind: conda name: max-core - version: 25.1.0.dev2024121405 + version: 25.1.0.dev2024121705 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024121405-release.conda - sha256: 14f953430105c8f2bb8f3bdf1e3fb7e9acbb20613ad47c9ac1e88462e0cc804d - md5: d88d69b1696ed9d5795c8d346bbd4311 + url: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024121705-release.conda + sha256: 15459b8446d3feb608baae398cf2753a3704e02e07cf2a6c02e166068d8a9304 + md5: 4ca65aff37bd7e944cce1697c1fe203e depends: - - mblack ==25.1.0.dev2024121405 release + - mblack ==25.1.0.dev2024121705 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 245597032 - timestamp: 1734153445516 + size: 245744992 + timestamp: 1734412638045 - kind: conda name: max-core - version: 25.1.0.dev2024121405 + version: 25.1.0.dev2024121705 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024121405-release.conda - sha256: e3936f8021fc72f7f2673e2653e7bbd3d325fb44818b868bb49c24e5c1766eaf - md5: ea674f5d9232d89046ad99090cc195a7 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024121705-release.conda + sha256: e89be4d7691a354a3f6e5d71e25b49447ca9fd1048fe03355c3bc509a726234d + md5: acc4b1208feaba5ad08c1b370192e127 depends: - - mblack ==25.1.0.dev2024121405 release + - mblack ==25.1.0.dev2024121705 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 249408423 - timestamp: 1734153430064 + size: 249373255 + timestamp: 1734412698620 - kind: conda name: max-core - version: 25.1.0.dev2024121405 + version: 25.1.0.dev2024121705 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024121405-release.conda - sha256: b6bb97d20f0f7371a647778d18fe78f839e37eef423542ae3f4e75b018ffd8db - md5: 0e2d8c487ef68866164af9dff49f5119 + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024121705-release.conda + sha256: edd613b122c086c4d6237c7195a55ce09bff9922ab70e0f1ff7a9662d3de41fe + md5: d68326deab9bb460f253bf6df7e903f6 depends: - - mblack ==25.1.0.dev2024121405 release + - mblack ==25.1.0.dev2024121705 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 214323771 - timestamp: 1734153633668 + size: 214152137 + timestamp: 1734412888834 - kind: conda name: max-python - version: 25.1.0.dev2024121405 + version: 25.1.0.dev2024121705 build: 3.12release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024121405-3.12release.conda - sha256: 7ebdc67f58946084f7f4a657f0661899e61707b055f2046d9c18033f21f97008 - md5: 5a8cbae9c5257545459bfe7a262b62a6 + url: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024121705-3.12release.conda + sha256: 11296250671f2a7c5951382f89f8e68a1702b0c8aeef200788e71d9e0e1d2955 + md5: f979494f9de5b3853834ffa1adf606c3 depends: - - max-core ==25.1.0.dev2024121405 release + - max-core ==25.1.0.dev2024121705 release - python 3.12.* - fastapi - httpx @@ -5994,18 +5975,18 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 122834581 - timestamp: 1734153445526 + size: 122755617 + timestamp: 1734412638055 - kind: conda name: max-python - version: 25.1.0.dev2024121405 + version: 25.1.0.dev2024121705 build: 3.12release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024121405-3.12release.conda - sha256: b74a5c8945a97210778cda3cd9fe98f7404d2c9ff0b1a03738c77af6429b1523 - md5: 099dc5d1f85e4f883e72caef6f0c6e52 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024121705-3.12release.conda + sha256: e4a7ded05f33903034e52feefe65f458975942740cf07dcb30e2e9c1f0af53e6 + md5: 9a51b55d48b861487dbecd7c4abc7b68 depends: - - max-core ==25.1.0.dev2024121405 release + - max-core ==25.1.0.dev2024121705 release - python 3.12.* - fastapi - httpx @@ -6028,18 +6009,18 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 126606485 - timestamp: 1734153430075 + size: 126486411 + timestamp: 1734412698632 - kind: conda name: max-python - version: 25.1.0.dev2024121405 + version: 25.1.0.dev2024121705 build: 3.12release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024121405-3.12release.conda - sha256: 24a7ab99d936e5c28f597413e9e643fe34c46ba55916c1febcbe658e79a2ea9f - md5: 661ce5968d3cc1b11a67dfbf77e986b8 + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024121705-3.12release.conda + sha256: 328cee9730cf537d58e6d24b9aa111504271433d724fd47fdcee55b26df222b3 + md5: b1168de7b96e9e7b0fad7c675ecdb426 depends: - - max-core ==25.1.0.dev2024121405 release + - max-core ==25.1.0.dev2024121705 release - python 3.12.* - fastapi - httpx @@ -6062,17 +6043,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 113414908 - timestamp: 1734153633671 + size: 113391631 + timestamp: 1734412888837 - kind: conda name: mblack - version: 25.1.0.dev2024121405 + version: 25.1.0.dev2024121705 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121405-release.conda - sha256: ea23ea9fdb019aa4dc05bcb1d1f526f77ce90a94baa3130d26ce71cad0a3647b - md5: 425b85251efa151234c9db33428ee55c + url: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121705-release.conda + sha256: 44d0c3a0b1242823334d6bad895ad037849719f67bcfbc426c65363c567f80a5 + md5: 93c89483058dabd0282c378812328ba0 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -6082,8 +6063,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130792 - timestamp: 1734153430070 + size: 130801 + timestamp: 1734412638051 - kind: conda name: mdurl version: 0.1.2 @@ -6102,21 +6083,21 @@ packages: timestamp: 1733255681319 - kind: conda name: mojo-jupyter - version: 25.1.0.dev2024121405 + version: 25.1.0.dev2024121705 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024121405-release.conda - sha256: b232fe63e84736d519137d4c98067c886f8acc1cc38a6620a062f4eb079e751a - md5: b7d7fe85425c5120a665795eb2097aa9 + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024121705-release.conda + sha256: 8ef8447f576590d381ccaa82e6c207c530e9355b07ab3174f3df9c9f064d42de + md5: 4c31e34ff54c71cd9d584d3ab8f1c315 depends: - - max-core ==25.1.0.dev2024121405 release + - max-core ==25.1.0.dev2024121705 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22934 - timestamp: 1734153430071 + size: 22937 + timestamp: 1734412638052 - kind: conda name: multidict version: 6.1.0 @@ -6455,62 +6436,61 @@ packages: timestamp: 1731377666602 - kind: conda name: opentelemetry-api - version: 1.28.2 + version: 1.29.0 build: pyhd8ed1ab_1 build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.28.2-pyhd8ed1ab_1.conda - sha256: 780dbc942a6075db7bdbaf556023be50c34a6111a99e465878d7bab0e5e0d7f4 - md5: a06f1e9d97c98d26f06675236c9ea554 + url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.29.0-pyhd8ed1ab_1.conda + sha256: 296280c8ace35c0a1cf72bed1077f248b3af903c3bf92332f1783a207cb5abdb + md5: 307b05402c1a382f2f09426492dee8f8 depends: - deprecated >=1.2.6 - - importlib-metadata >=6.0.0,<7.1.0 + - importlib-metadata >=6.0,<=8.5.0 - python >=3.9 - - setuptools >=16.0 license: Apache-2.0 license_family: APACHE - size: 44242 - timestamp: 1733734361129 + size: 44166 + timestamp: 1734132973331 - kind: conda name: opentelemetry-exporter-otlp-proto-common - version: 1.28.2 - build: pyhff2d567_0 + version: 1.29.0 + build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.28.2-pyhff2d567_0.conda - sha256: 838525f5a35f130eb3e6ccf06700ab7574467e8abe19da91e6f0de3b399e77c2 - md5: b00b3a8f0d25d5b18979c73ec051c313 + url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.29.0-pyhd8ed1ab_0.conda + sha256: ae9776efe52564e0d6711cfcee7c54439273e57a3999f7f796f66e862f58aae9 + md5: 0c02e74d26bce3fec93b227cf7ea6e6b depends: - backoff >=1.10.0,<3.0.0 - - opentelemetry-proto 1.28.2 + - opentelemetry-proto 1.29.0 - python >=3.9 license: Apache-2.0 license_family: APACHE - size: 18838 - timestamp: 1731991715474 + size: 18922 + timestamp: 1734310457116 - kind: conda name: opentelemetry-exporter-otlp-proto-http - version: 1.28.2 - build: pyhd8ed1ab_0 + version: 1.29.0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.28.2-pyhd8ed1ab_0.conda - sha256: d89b7b0f28dca5ed84d8c3421e3b16683f764c9eebde66cc8858fc183751af69 - md5: 73810c011d2d60914ce8f92fe99564a0 + url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.29.0-pyhd8ed1ab_1.conda + sha256: 5d61db9d5b4f91b3932f5f2348920d5b7fdaa09e52c8ea054cf7bf3f21677c9c + md5: 223f4e56a29601c887f0dc467034af5b depends: - deprecated >=1.2.6 - - googleapis-common-protos ~=1.52 - - opentelemetry-api ~=1.15 - - opentelemetry-exporter-otlp-proto-common 1.28.2 - - opentelemetry-proto 1.28.2 - - opentelemetry-sdk ~=1.28.2 - - python >=3.8 - - requests ~=2.7 + - googleapis-common-protos >=1.52,<2.dev0 + - opentelemetry-api >=1.15,<2.dev0 + - opentelemetry-exporter-otlp-proto-common 1.29.0 + - opentelemetry-proto 1.29.0 + - opentelemetry-sdk 1.29.0 + - python >=3.9 + - requests >=2.7,<3.dev0 license: Apache-2.0 - license_family: APACHE - size: 17007 - timestamp: 1732094238214 + size: 17147 + timestamp: 1734345675510 - kind: conda name: opentelemetry-exporter-prometheus version: 1.12.0rc1 @@ -6531,58 +6511,56 @@ packages: timestamp: 1695214221489 - kind: conda name: opentelemetry-proto - version: 1.28.2 - build: pyhff2d567_0 + version: 1.29.0 + build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.28.2-pyhff2d567_0.conda - sha256: e68320a465b45e05f569c440a20735db9a0fd7cdb9e52300506660a924d17caf - md5: 54ac33b32171ce2205b6639da1a1ac54 + url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.29.0-pyhd8ed1ab_0.conda + sha256: 200a7cb8acc8a0ddd6ef55c5460cec871b6a265929b240a0296c0ccb9c8d9758 + md5: e2a6d2ad10b813c7fdc1c64aac376128 depends: - protobuf <6.0,>=5.0 - python >=3.9 license: Apache-2.0 license_family: APACHE - size: 37108 - timestamp: 1731988686996 + size: 37235 + timestamp: 1734291034372 - kind: conda name: opentelemetry-sdk - version: 1.28.2 - build: pyhd8ed1ab_1 - build_number: 1 + version: 1.29.0 + build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.28.2-pyhd8ed1ab_1.conda - sha256: 9f48ec749f0738910fdd6750f9655f16949182b5379dd2c0771104d3e74bfd74 - md5: bfe29ef92f3a04ab8e59e4f97b28785c + url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.29.0-pyhd8ed1ab_0.conda + sha256: 7b36629d8b8be8a019fcfd1518d7b7f862dd25de96f8adcadb93e4fd12cf9bd6 + md5: 2a8893f06e6ebda4bfa78875bc923ea4 depends: - - opentelemetry-api 1.28.2 - - opentelemetry-semantic-conventions 0.49b2 + - opentelemetry-api 1.29.0 + - opentelemetry-semantic-conventions 0.50b0 - python >=3.9 - typing-extensions >=3.7.4 - typing_extensions >=3.7.4 license: Apache-2.0 license_family: APACHE - size: 78090 - timestamp: 1733768582451 + size: 77645 + timestamp: 1734297838999 - kind: conda name: opentelemetry-semantic-conventions - version: 0.49b2 - build: pyh3cfb1c2_1 - build_number: 1 + version: 0.50b0 + build: pyh3cfb1c2_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh3cfb1c2_1.conda - sha256: 28180ffa6611f117c782c7d72066b50332c1df0bdcfed0dea4e446a20c4b7d10 - md5: e0ada55d18e6bd5a8e61943b4b5d3a8f + url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.50b0-pyh3cfb1c2_0.conda + sha256: 6526e70368d5bf66ef0eaa51fb800d53782dde71a24bd38f40139919a6f784dc + md5: f7111fa4188d646c8108e232d024cb99 depends: - deprecated >=1.2.6 - - opentelemetry-api 1.28.2 + - opentelemetry-api 1.29.0 - python >=3.9 license: Apache-2.0 license_family: APACHE - size: 81099 - timestamp: 1733749104727 + size: 86084 + timestamp: 1734208980168 - kind: conda name: orc version: 2.0.3 @@ -7255,6 +7233,7 @@ packages: - python >=3.9 - python-dotenv >=0.21.0 license: MIT + license_family: MIT size: 31426 timestamp: 1734127929720 - kind: conda @@ -7481,20 +7460,19 @@ packages: timestamp: 1677079727691 - kind: conda name: python-multipart - version: 0.0.19 - build: pyhff2d567_1 - build_number: 1 + version: 0.0.20 + build: pyhff2d567_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_1.conda - sha256: e6f6bc3d2a51f45ca26d556c5a416efdacf49a918fefcd0b7c340121e608aa5f - md5: c74333aa447ed2b94d49e5db23da5de6 + url: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.20-pyhff2d567_0.conda + sha256: 1b03678d145b1675b757cba165a0d9803885807792f7eb4495e48a38858c3cca + md5: a28c984e0429aff3ab7386f7de56de6f depends: - python >=3.9 license: Apache-2.0 license_family: Apache - size: 27768 - timestamp: 1733323160772 + size: 27913 + timestamp: 1734420869885 - kind: conda name: python-tzdata version: '2024.2' @@ -7951,35 +7929,35 @@ packages: timestamp: 1733750834072 - kind: conda name: s2n - version: 1.5.9 - build: h0fd0ee4_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/s2n-1.5.9-h0fd0ee4_0.conda - sha256: f2c8e55d6caa8d87a482b1f133963c184de1ccb2303b77cc8ca86c794253f151 - md5: f472432f3753c5ca763d2497e2ea30bf + version: 1.5.10 + build: h5df210e_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/s2n-1.5.10-h5df210e_0.conda + sha256: b5e7a9f4b7b1ec5c5c3661e2defc8b47fab543b05cad6fec78739d8007612464 + md5: 3d3979efcc0f44f3f0cef3de03b296cc depends: - - __glibc >=2.17,<3.0.a0 - libgcc >=13 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 355568 - timestamp: 1731541963573 + size: 353450 + timestamp: 1734415474615 - kind: conda name: s2n - version: 1.5.9 - build: h636ded1_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/s2n-1.5.9-h636ded1_0.conda - sha256: 51572714743f836266af564c5b26b37599478131c4379a0d11778f04e647d070 - md5: bf4f84136d9ddb7be1855754a9ac4bb9 + version: 1.5.10 + build: hb5b8611_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/s2n-1.5.10-hb5b8611_0.conda + sha256: f6d451821fddc26b93f45e9313e1ea15e09e5ef049d4e137413a5225d2a5dfba + md5: 999f3673f2a011f59287f2969e3749e4 depends: + - __glibc >=2.17,<3.0.a0 - libgcc >=13 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 352546 - timestamp: 1731542018427 + size: 355142 + timestamp: 1734415467047 - kind: conda name: safetensors version: 0.4.5 @@ -8037,22 +8015,6 @@ packages: license_family: APACHE size: 353606 timestamp: 1725632294079 -- kind: conda - name: setuptools - version: 75.6.0 - build: pyhff2d567_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_1.conda - sha256: abb12e1dd515b13660aacb5d0fd43835bc2186cab472df25b7716cd65e095111 - md5: fc80f7995e396cbaeabd23cf46c413dc - depends: - - python >=3.9 - license: MIT - license_family: MIT - size: 774252 - timestamp: 1732632769210 - kind: conda name: shellingham version: 1.5.4 @@ -8524,14 +8486,13 @@ packages: timestamp: 1733206968917 - kind: conda name: uvicorn - version: 0.32.1 - build: pyh31011fe_1 - build_number: 1 + version: 0.34.0 + build: pyh31011fe_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_1.conda - sha256: ad1d8470c629679ea3db52351a522ae44eee0111d8d8b254e8c863c4a292e5c4 - md5: 7832640e5e302059e844d56f410487a6 + url: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.34.0-pyh31011fe_0.conda + sha256: 55c160b0cf9274e2b98bc0f7fcce548bffa8d788bc86aa02801877457040f6fa + md5: 5d448feee86e4740498ec8f8eb40e052 depends: - __unix - click >=7.0 @@ -8540,31 +8501,30 @@ packages: - typing_extensions >=4.0 license: BSD-3-Clause license_family: BSD - size: 49340 - timestamp: 1733332048141 + size: 48643 + timestamp: 1734293057914 - kind: conda name: uvicorn-standard - version: 0.32.1 - build: h31011fe_1 - build_number: 1 + version: 0.34.0 + build: h31011fe_0 subdir: noarch noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_1.conda - sha256: 378903c51b2b1136fa48b01c0a2a8dd4634136d038a4a56561c0856fdcbfcabe - md5: 0c233d5c71d398cf01d0281e72194005 + url: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.34.0-h31011fe_0.conda + sha256: 87e1531e175e75122f9f37608eb953af4c977465ab0ae11283cc01fef954e4ec + md5: 32a94143a7f65d76d2d5da37dcb4ed79 depends: - __unix - - httptools >=0.5.0 + - httptools >=0.6.3 - python-dotenv >=0.13 - pyyaml >=5.1 - - uvicorn 0.32.1 pyh31011fe_1 + - uvicorn 0.34.0 pyh31011fe_0 - uvloop >=0.14.0,!=0.15.0,!=0.15.1 - watchfiles >=0.13 - websockets >=10.4 license: BSD-3-Clause license_family: BSD - size: 7094 - timestamp: 1733332049165 + size: 7203 + timestamp: 1734293058849 - kind: conda name: uvloop version: 0.21.0 @@ -8783,50 +8743,47 @@ packages: timestamp: 1732523852129 - kind: conda name: xorg-libxau - version: 1.0.11 - build: h86ecc28_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxau-1.0.11-h86ecc28_1.conda - sha256: a00c4c6054209c84fb460c5e4ae7193c335a9ee1851645c9ad59312438e853f7 - md5: c5f72a733c461aa7785518d29b997cc8 + version: 1.0.12 + build: h5505292_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxau-1.0.12-h5505292_0.conda + sha256: f33e6f013fc36ebc200f09ddead83468544cb5c353a3b50499b07b8c34e28a8d + md5: 50901e0764b7701d8ed7343496f4f301 depends: - - libgcc >=13 + - __osx >=11.0 license: MIT license_family: MIT - size: 15690 - timestamp: 1727036097294 + size: 13593 + timestamp: 1734229104321 - kind: conda name: xorg-libxau - version: 1.0.11 - build: hb9d3cd8_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.11-hb9d3cd8_1.conda - sha256: 532a046fee0b3a402db867b6ec55c84ba4cdedb91d817147c8feeae9766be3d6 - md5: 77cbc488235ebbaab2b6e912d3934bae + version: 1.0.12 + build: h86ecc28_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxau-1.0.12-h86ecc28_0.conda + sha256: 7829a0019b99ba462aece7592d2d7f42e12d12ccd3b9614e529de6ddba453685 + md5: d5397424399a66d33c80b1f2345a36a6 depends: - - __glibc >=2.17,<3.0.a0 - libgcc >=13 license: MIT license_family: MIT - size: 14679 - timestamp: 1727034741045 + size: 15873 + timestamp: 1734230458294 - kind: conda name: xorg-libxau - version: 1.0.11 - build: hd74edd7_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxau-1.0.11-hd74edd7_1.conda - sha256: 7113618021cf6c80831a429b2ebb9d639f3c43cf7fe2257d235dc6ae0ab43289 - md5: 7e0125f8fb619620a0011dc9297e2493 + version: 1.0.12 + build: hb9d3cd8_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-hb9d3cd8_0.conda + sha256: ed10c9283974d311855ae08a16dfd7e56241fac632aec3b92e3cfe73cff31038 + md5: f6ebe2cb3f82ba6c057dde5d9debe4f7 depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 license: MIT license_family: MIT - size: 13515 - timestamp: 1727034783560 + size: 14780 + timestamp: 1734229004433 - kind: conda name: xorg-libxdmcp version: 1.1.5 diff --git a/magic.lock b/magic.lock index 4a4f517464..fd858605d2 100644 --- a/magic.lock +++ b/magic.lock @@ -10,17 +10,17 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.10-py312h178313f_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.7.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.3.0-pyh71513ae_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-hb921021_15.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.1-h1a47875_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.10.6-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.3.0-h4e1184b_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.0-h7959bf6_11.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.2-hefd7a92_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-hbf5b6a4_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-h831e299_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h11f4f37_12.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.7-hf454442_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.1-h4e1184b_4.conda @@ -35,9 +35,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/backoff-2.2.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py312h2ec8cdc_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.3-hb9d3cd8_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2024.8.30-hbcca054_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.8.30-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.4-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2024.12.14-hbcca054_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.12.14-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py312h06ac9bb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_1.conda @@ -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.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.7-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 @@ -67,7 +67,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-7.0.2-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda @@ -81,14 +81,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-hcb10f89_6_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-hcb10f89_6_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-h3ee7192_6_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-25_linux64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-26_linux64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.1.0-hb9d3cd8_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-25_linux64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-26_linux64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libcrc32c-1.1.2-h9c3ff4c_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.11.1-h332b0f4_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.22-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.23-h4ddbbb0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20191231-he28a2e2_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libevent-2.1.12-hf998b51_1.conda @@ -104,7 +104,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.67.1-hc2c308b_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-hd590300_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-25_linux64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-26_linux64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.3-hb9d3cd8_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda @@ -119,7 +119,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-hc0a3c3a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libthrift-0.21.0-h0e7cc3e_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hc4654cb_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hd9ff511_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.9.0-hb9d3cd8_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.49.2-hb9d3cd8_0.conda @@ -132,12 +132,12 @@ 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-25.1.0.dev2024121405-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024121405-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024121405-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121405-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024121705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024121705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024121705-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121705-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-25.1.0.dev2024121405-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024121705-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 @@ -145,13 +145,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.3-h5fbd93e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.0-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.28.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.28.2-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.28.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.29.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.29.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.29.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-prometheus-1.12.0rc1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.28.2-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.28.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh3cfb1c2_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.29.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.29.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.50b0-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/orc-2.0.3-h97ab989_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.3-py312hf9745cd_1.conda @@ -175,7 +175,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.20-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python-xxhash-3.5.0-py312h66e93f0_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda @@ -188,9 +188,8 @@ environments: - 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/s2n-1.5.10-hb5b8611_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 - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-h8bd8927_1.conda @@ -210,13 +209,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.34.0-pyh31011fe_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.34.0-h31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/uvloop-0.21.0-py312h66e93f0_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/watchfiles-1.0.3-py312h12e396e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/websockets-14.1-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.17.0-py312h66e93f0_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.11-hb9d3cd8_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xxhash-0.8.2-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 @@ -229,17 +228,17 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.10-py312hcc812fe_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.7.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.3.0-pyh71513ae_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-h2cb9fb3_15.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.1-h740c5af_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-common-0.10.6-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-compression-0.3.0-h0f0193d_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-event-stream-0.5.0-hcbd8f92_11.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.2-h3df160d_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-h92bf595_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-h1a307af_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h5f50e26_12.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.7-h2080895_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.1-h0f0193d_4.conda @@ -254,9 +253,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/backoff-2.2.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/brotli-python-1.1.0-py312h6f74592_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h68df207_7.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/c-ares-1.34.3-h86ecc28_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2024.8.30-hcefe29a_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.8.30-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/c-ares-1.34.4-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2024.12.14-hcefe29a_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.12.14-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cffi-1.17.1-py312hac81daf_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_1.conda @@ -269,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.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.7-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 @@ -287,7 +286,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-7.0.2-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda @@ -301,14 +300,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h3b568fd_6_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h3b568fd_6_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h3ffb4b1_6_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-25_linuxaarch64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-26_linuxaarch64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlicommon-1.1.0-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlidec-1.1.0-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlienc-1.1.0-h86ecc28_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-25_linuxaarch64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-26_linuxaarch64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcrc32c-1.1.2-h01db608_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcurl-8.11.1-h6702fde_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libdeflate-1.22-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libdeflate-1.23-h5e3c512_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20191231-he28a2e2_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libev-4.33-h31becfc_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libevent-2.1.12-h4ba1bb4_1.conda @@ -324,7 +323,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgrpc-1.67.1-h36c5df4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libiconv-1.17-h31becfc_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libjpeg-turbo-3.0.0-h31becfc_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-25_linuxaarch64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-26_linuxaarch64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.3-h86ecc28_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnghttp2-1.64.0-hc8609a4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda @@ -339,7 +338,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libthrift-0.21.0-h154c74f_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.0-hca96517_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.0-h88f7998_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.9.0-h86ecc28_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuv-1.49.2-h86ecc28_0.conda @@ -352,12 +351,12 @@ 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-25.1.0.dev2024121405-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024121405-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024121405-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121405-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024121705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024121705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024121705-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121705-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-25.1.0.dev2024121405-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024121705-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 @@ -365,13 +364,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openjpeg-2.5.3-h3f56577_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.0-h86ecc28_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.28.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.28.2-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.28.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.29.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.29.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.29.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-prometheus-1.12.0rc1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.28.2-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.28.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh3cfb1c2_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.29.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.29.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.50b0-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/orc-2.0.3-h3c55218_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pandas-2.2.3-py312ha2895bd_1.conda @@ -395,7 +394,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.20-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-xxhash-3.5.0-py312h52516f5_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.12-5_cp312.conda @@ -408,9 +407,8 @@ environments: - 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/s2n-1.5.10-h5df210e_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 - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-hd4fb6f5_1.conda @@ -430,13 +428,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.34.0-pyh31011fe_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.34.0-h31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/uvloop-0.21.0-py312hb2c0f52_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/watchfiles-1.0.3-py312h8cbf658_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/websockets-14.1-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/wrapt-1.17.0-py312hb2c0f52_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxau-1.0.11-h86ecc28_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxau-1.0.12-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxdmcp-1.1.5-h57736b2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xxhash-0.8.2-h31becfc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yaml-0.2.5-hf897c2e_2.tar.bz2 @@ -448,17 +446,17 @@ environments: osx-arm64: - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.10-py312h998013c_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.7.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.3.0-pyh71513ae_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-h8bc59a9_15.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.1-hc8a0bd2_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.10.6-h5505292_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-compression-0.3.0-hc8a0bd2_5.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.0-h54f970a_11.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.2-h96aa502_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-haba67d1_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-haba67d1_5.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h24f418c_12.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.7-h1be5864_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.1-hc8a0bd2_4.conda @@ -473,9 +471,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/backoff-2.2.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py312hde4cb15_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.3-h5505292_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2024.8.30-hf0a4a13_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.8.30-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.4-h5505292_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2024.12.14-hf0a4a13_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.12.14-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.1-py312h0fad829_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_1.conda @@ -488,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.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.7-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 @@ -506,7 +504,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-7.0.2-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda @@ -518,15 +516,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-hf07054f_6_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-hf07054f_6_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-h86344ea_6_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-25_osxarm64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-26_osxarm64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.1.0-hd74edd7_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.1.0-hd74edd7_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlienc-1.1.0-hd74edd7_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-25_osxarm64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-26_osxarm64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcrc32c-1.1.2-hbdafb3b_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.11.1-h73640d1_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.5-ha82da77_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.22-hd74edd7_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.23-hec38601_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20191231-hc8eb9b7_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libev-4.33-h93a5062_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libevent-2.1.12-h2757513_1.conda @@ -539,7 +537,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgrpc-1.67.1-hc70892a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.17-h0d3ecfb_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.0.0-hb547adb_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-25_osxarm64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-26_osxarm64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.3-h39f12f2_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.64.0-h6d7220d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.28-openmp_hf332438_1.conda @@ -551,7 +549,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.47.2-h3f77e49_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.1-h9cc3647_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libthrift-0.21.0-h64651cc_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-ha962b0a_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-h551f018_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.9.0-h5505292_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libuv-1.49.2-h7ab814d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.4.0-h93a5062_0.conda @@ -563,12 +561,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-25.1.0.dev2024121405-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024121405-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024121405-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121405-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024121705-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024121705-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024121705-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121705-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-25.1.0.dev2024121405-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024121705-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 @@ -576,13 +574,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openjpeg-2.5.3-h8a3d83b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.0-h39f12f2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.28.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.28.2-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.28.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.29.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.29.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.29.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-prometheus-1.12.0rc1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.28.2-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.28.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh3cfb1c2_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.29.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.29.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.50b0-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/orc-2.0.3-hbcee414_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.3-py312hcd31e36_1.conda @@ -606,7 +604,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.20-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-xxhash-3.5.0-py312h024a12e_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-5_cp312.conda @@ -620,7 +618,6 @@ environments: - 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 - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-h98b9ce2_1.conda @@ -640,13 +637,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.34.0-pyh31011fe_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.34.0-h31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/uvloop-0.21.0-py312h0bf5046_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/watchfiles-1.0.3-py312hcd83bfe_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/websockets-14.1-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/wrapt-1.17.0-py312hea69d52_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxau-1.0.11-hd74edd7_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxau-1.0.12-h5505292_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxdmcp-1.1.5-hd74edd7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xxhash-0.8.2-hb547adb_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 @@ -792,21 +789,20 @@ packages: timestamp: 1733839037447 - kind: conda name: aiosignal - version: 1.3.1 - build: pyhd8ed1ab_1 - build_number: 1 + version: 1.3.2 + build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_1.conda - sha256: 9c7b639ea0cc796ef46c57fa104ec1f2ed53cd11c063518869a5a9d7d3b0b2db - md5: d736bd1b8904d7593dce4893e58a7881 + url: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda + sha256: 7de8ced1918bbdadecf8e1c1c68237fe5709c097bd9e0d254f4cad118f4345d0 + md5: 1a3981115a398535dbe3f6d5faae3d36 depends: - frozenlist >=1.1.0 - python >=3.9 license: Apache-2.0 license_family: APACHE - size: 13157 - timestamp: 1733332198143 + size: 13229 + timestamp: 1734342253061 - kind: conda name: annotated-types version: 0.7.0 @@ -848,20 +844,19 @@ packages: timestamp: 1733532678437 - kind: conda name: attrs - version: 24.2.0 - build: pyh71513ae_1 - build_number: 1 + version: 24.3.0 + build: pyh71513ae_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_1.conda - sha256: 8488a116dffe204015a90b41982c0270534bd1070f44a00b316d59e4a79ae8c7 - md5: 2018839db45c79654b57a924fcdd27d0 + url: https://conda.anaconda.org/conda-forge/noarch/attrs-24.3.0-pyh71513ae_0.conda + sha256: 750186af694a7130eaf7119fbb56db0d2326d8995ad5b8eae23c622b85fea29a + md5: 356927ace43302bf6f5926e2a58dae6a depends: - python >=3.9 license: MIT license_family: MIT - size: 56336 - timestamp: 1733520064905 + size: 56354 + timestamp: 1734348889193 - kind: conda name: aws-c-auth version: 0.8.0 @@ -1186,57 +1181,57 @@ packages: - kind: conda name: aws-c-io version: 0.15.3 - build: h92bf595_4 - build_number: 4 + build: h1a307af_5 + build_number: 5 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-h92bf595_4.conda - sha256: ffa2fc1ddb01f4b8ac038ab70a5533306119754ba438b23399f2a82a38cf27bf - md5: 539df02c00c506c78aebdf6c0fc75743 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-h1a307af_5.conda + sha256: 71f5bf891299f831dceaea12f926c393bf754569e5305387a88b77e1f94612d8 + md5: da8ab0f3eeac93449ec3d531ede92caa depends: - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.6,<0.10.7.0a0 - libgcc >=13 - - s2n >=1.5.9,<1.5.10.0a0 + - s2n >=1.5.10,<1.5.11.0a0 license: Apache-2.0 license_family: Apache - size: 161836 - timestamp: 1733997573790 + size: 161889 + timestamp: 1734433686109 - kind: conda name: aws-c-io version: 0.15.3 - build: haba67d1_4 - build_number: 4 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-haba67d1_4.conda - sha256: 2d0859b57439cd98e854577aa3e07eb171b590098d51a8c908bab5ec497a3d38 - md5: 74eace4fab8675263a848075e991d380 + build: h831e299_5 + build_number: 5 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-h831e299_5.conda + sha256: 5920009b1c6f9a2bc131a36725251894e4b4773fce29c4b1065d4213ae337abe + md5: 80dd9f0ddf935290d1dc00ec75ff3023 depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + - s2n >=1.5.10,<1.5.11.0a0 license: Apache-2.0 license_family: Apache - size: 136213 - timestamp: 1733997647724 + size: 157864 + timestamp: 1734433578570 - kind: conda name: aws-c-io version: 0.15.3 - build: hbf5b6a4_4 - build_number: 4 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-hbf5b6a4_4.conda - sha256: 3195fe431d3c43d6ecf749796d3acb093645c9d0de9998616641dada4b5fa2a6 - md5: ad3a6713063c18b9232c48e89ada03ac + build: haba67d1_5 + build_number: 5 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-haba67d1_5.conda + sha256: c0a1a2b0750225ac3dc07fd258c88c2be866bf8ac67ba3d50bb4ecec852ff8ee + md5: 4c5ff4134e76426a75b8c548984fa933 depends: - - __glibc >=2.17,<3.0.a0 + - __osx >=11.0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.6,<0.10.7.0a0 - - libgcc >=13 - - s2n >=1.5.9,<1.5.10.0a0 license: Apache-2.0 license_family: Apache - size: 157886 - timestamp: 1733997507332 + size: 135729 + timestamp: 1734433832730 - kind: conda name: aws-c-mqtt version: 0.11.0 @@ -2001,97 +1996,94 @@ packages: timestamp: 1720974522888 - kind: conda name: c-ares - version: 1.34.3 - build: h5505292_1 - build_number: 1 + version: 1.34.4 + build: h5505292_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.3-h5505292_1.conda - sha256: 6dfa83cbd9acc8671d439fe9c745a5716faf6cbadf2f1e18c841bcf86cbba5f2 - md5: fb72102e8a8f9bcd38e40af09ff41c42 + url: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.4-h5505292_0.conda + sha256: 09c0c8476e50b2955f474a4a1c17c4c047dd52993b5366b6ea8e968e583b921f + md5: c1c999a38a4303b29d75c636eaa13cf9 depends: - __osx >=11.0 license: MIT license_family: MIT - size: 179318 - timestamp: 1732447193278 + size: 179496 + timestamp: 1734208291879 - kind: conda name: c-ares - version: 1.34.3 - build: h86ecc28_1 - build_number: 1 + version: 1.34.4 + build: h86ecc28_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/c-ares-1.34.3-h86ecc28_1.conda - sha256: 1181db17781d9d66c1478e7fbc3e82dd273e9cb43ed910e1d0f8b3c96b16e290 - md5: 0cd9ebf65479cdceb6a4888b764dafcd + url: https://conda.anaconda.org/conda-forge/linux-aarch64/c-ares-1.34.4-h86ecc28_0.conda + sha256: 1187a41d4bb2afe02cb18690682edc98d1e9f5e0ccda638d8704a75ea1875bbe + md5: 356da36f35d36dcba16e43f1589d4e39 depends: - libgcc >=13 license: MIT license_family: MIT - size: 214791 - timestamp: 1732447020593 + size: 215979 + timestamp: 1734208193181 - kind: conda name: c-ares - version: 1.34.3 - build: hb9d3cd8_1 - build_number: 1 + version: 1.34.4 + build: hb9d3cd8_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.3-hb9d3cd8_1.conda - sha256: 732571ba6286dbccbf4c6450078a581b7a5620204faf876ff0ef282d77a6bfa8 - md5: ee228789a85f961d14567252a03e725f + url: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.4-hb9d3cd8_0.conda + sha256: d4f28d87b6339b94f74762c0076e29c8ef8ddfff51a564a92da2843573c18320 + md5: e2775acf57efd5af15b8e3d1d74d72d3 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 license: MIT license_family: MIT - size: 204857 - timestamp: 1732447031823 + size: 206085 + timestamp: 1734208189009 - kind: conda name: ca-certificates - version: 2024.8.30 + version: 2024.12.14 build: hbcca054_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2024.8.30-hbcca054_0.conda - sha256: afee721baa6d988e27fef1832f68d6f32ac8cc99cdf6015732224c2841a09cea - md5: c27d1c142233b5bc9ca570c6e2e0c244 + url: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2024.12.14-hbcca054_0.conda + sha256: 1afd7274cbc9a334d6d0bc62fa760acc7afdaceb0b91a8df370ec01fd75dc7dd + md5: 720523eb0d6a9b0f6120c16b2aa4e7de license: ISC - size: 159003 - timestamp: 1725018903918 + size: 157088 + timestamp: 1734208393264 - kind: conda name: ca-certificates - version: 2024.8.30 + version: 2024.12.14 build: hcefe29a_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2024.8.30-hcefe29a_0.conda - sha256: 2a2d827bee3775a85f0f1b2f2089291475c4416336d1b3a8cbce2964db547af8 - md5: 70e57e8f59d2c98f86b49c69e5074be5 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2024.12.14-hcefe29a_0.conda + sha256: ad7b43211051332a5a4e788bb4619a2d0ecb5be73e0f76be17f733a87d7effd1 + md5: 83b4ad1e6dc14df5891f3fcfdeb44351 license: ISC - size: 159106 - timestamp: 1725020043153 + size: 157096 + timestamp: 1734209301744 - kind: conda name: ca-certificates - version: 2024.8.30 + version: 2024.12.14 build: hf0a4a13_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2024.8.30-hf0a4a13_0.conda - sha256: 2db1733f4b644575dbbdd7994a8f338e6ef937f5ebdb74acd557e9dda0211709 - md5: 40dec13fd8348dbe303e57be74bd3d35 + url: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2024.12.14-hf0a4a13_0.conda + sha256: 256be633fd0882ccc1a7a32bc278547e1703f85082c0789a87a603ee3ab8fb82 + md5: 7cb381a6783d91902638e4ed1ebd478e license: ISC - size: 158482 - timestamp: 1725019034582 + size: 157091 + timestamp: 1734208344343 - kind: conda name: certifi - version: 2024.8.30 + version: 2024.12.14 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.8.30-pyhd8ed1ab_0.conda - sha256: 7020770df338c45ac6b560185956c32f0a5abf4b76179c037f115fc7d687819f - md5: 12f7d00853807b0531775e9be891cb11 + url: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.12.14-pyhd8ed1ab_0.conda + sha256: 048c16a9cbcb1fbad02083414d3bc7c1d0eea4b39aee6aa6bf8d1d5089ca8bad + md5: 6feb87357ecd66733be3279f16a8c400 depends: - - python >=3.7 + - python >=3.9 license: ISC - size: 163752 - timestamp: 1725278204397 + size: 161642 + timestamp: 1734380604767 - kind: conda name: cffi version: 1.17.1 @@ -2357,13 +2349,13 @@ packages: timestamp: 1733362427885 - kind: conda name: fastapi-cli - version: 0.0.6 + version: 0.0.7 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.6-pyhd8ed1ab_0.conda - sha256: f0a900e1d8158915c71d9064699d97fc137058f71f5cdd257d79dbac07a41b63 - md5: 3256783cc0dd4cf3ff17198ce3b1782e + url: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.7-pyhd8ed1ab_0.conda + sha256: 300683731013b7221922339cd40430bb3c2ddeeb658fd7e37f5099ffe64e4db0 + md5: d960e0ea9e1c561aa928f6c4439f04c7 depends: - python >=3.9 - rich-toolkit >=0.11.1 @@ -2371,8 +2363,8 @@ packages: - uvicorn-standard >=0.15.0 license: MIT license_family: MIT - size: 15512 - timestamp: 1733881782160 + size: 15546 + timestamp: 1734302408607 - kind: conda name: filelock version: 3.16.1 @@ -2844,20 +2836,21 @@ packages: timestamp: 1733211921194 - kind: conda name: importlib-metadata - version: 7.0.2 - build: pyha770c72_0 + version: 8.5.0 + build: pyha770c72_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-7.0.2-pyha770c72_0.conda - sha256: 9a26136d2cc81ccac209d6ae24281ceba3365fe34e34b2c45570f2a96e9d9c1b - md5: b050a4bb0e90ebd6e7fa4093d6346867 + url: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_1.conda + sha256: 13766b88fc5b23581530d3a0287c0c58ad82f60401afefab283bf158d2be55a9 + md5: 315607a3030ad5d5227e76e0733798ff depends: - - python >=3.8 + - python >=3.9 - zipp >=0.5 license: Apache-2.0 license_family: APACHE - size: 26900 - timestamp: 1709821273570 + size: 28623 + timestamp: 1733223207185 - kind: conda name: jinja2 version: 3.1.4 @@ -3488,66 +3481,63 @@ packages: - kind: conda name: libblas version: 3.9.0 - build: 25_linux64_openblas - build_number: 25 + build: 26_linux64_openblas + build_number: 26 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-25_linux64_openblas.conda - sha256: d6d12dc437d060f838820e9e61bf73baab651f91935ac594cf10beb9ef1b4450 - md5: 8ea26d42ca88ec5258802715fe1ee10b + url: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-26_linux64_openblas.conda + sha256: 30bd658682b124243f8e52d8edf8a19e7be1bc31e4fe4baec30a64002dc8cd0c + md5: ac52800af2e0c0e7dac770b435ce768a depends: - libopenblas >=0.3.28,<0.3.29.0a0 - libopenblas >=0.3.28,<1.0a0 constrains: - - liblapack 3.9.0 25_linux64_openblas - - libcblas 3.9.0 25_linux64_openblas + - libcblas 3.9.0 26_linux64_openblas + - liblapack 3.9.0 26_linux64_openblas + - liblapacke 3.9.0 26_linux64_openblas - blas * openblas - - liblapacke 3.9.0 25_linux64_openblas license: BSD-3-Clause - license_family: BSD - size: 15677 - timestamp: 1729642900350 + size: 16393 + timestamp: 1734432564346 - kind: conda name: libblas version: 3.9.0 - build: 25_linuxaarch64_openblas - build_number: 25 + build: 26_linuxaarch64_openblas + build_number: 26 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-25_linuxaarch64_openblas.conda - sha256: 5c08f78312874bb61307f5ea737377df2d0f6e7f7833ded21ca58d8820c794ca - md5: f9b8a4a955ed2d0b68b1f453abcc1c9e + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-26_linuxaarch64_openblas.conda + sha256: df6d8ee34d45cf35609ecdd55c1ff03e32e0cd87ae41ebe4ef3747a8e09ead4d + md5: 8d900b7079a00969d70305e9aad550b7 depends: - libopenblas >=0.3.28,<0.3.29.0a0 - libopenblas >=0.3.28,<1.0a0 constrains: - blas * openblas - - liblapacke 3.9.0 25_linuxaarch64_openblas - - liblapack 3.9.0 25_linuxaarch64_openblas - - libcblas 3.9.0 25_linuxaarch64_openblas + - liblapacke 3.9.0 26_linuxaarch64_openblas + - libcblas 3.9.0 26_linuxaarch64_openblas + - liblapack 3.9.0 26_linuxaarch64_openblas license: BSD-3-Clause - license_family: BSD - size: 15808 - timestamp: 1729643002627 + size: 16477 + timestamp: 1734432576699 - kind: conda name: libblas version: 3.9.0 - build: 25_osxarm64_openblas - build_number: 25 + build: 26_osxarm64_openblas + build_number: 26 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-25_osxarm64_openblas.conda - sha256: f1fb9a11af0b2878bd8804b4c77d3733c40076218bcbdb35f575b1c0c9fddf11 - md5: f8cf4d920ff36ce471619010eff59cac + url: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-26_osxarm64_openblas.conda + sha256: 597f9c3779caa979c8c6abbb3ba8c7191b84e1a910d6b0d10e5faf35284c450c + md5: 21be102c9ae80a67ba7de23b129aa7f6 depends: - libopenblas >=0.3.28,<0.3.29.0a0 - libopenblas >=0.3.28,<1.0a0 constrains: + - liblapack 3.9.0 26_osxarm64_openblas + - liblapacke 3.9.0 26_osxarm64_openblas + - libcblas 3.9.0 26_osxarm64_openblas - blas * openblas - - liblapack 3.9.0 25_osxarm64_openblas - - liblapacke 3.9.0 25_osxarm64_openblas - - libcblas 3.9.0 25_osxarm64_openblas license: BSD-3-Clause - license_family: BSD - size: 15913 - timestamp: 1729643265495 + size: 16714 + timestamp: 1734433054681 - kind: conda name: libbrotlicommon version: 1.1.0 @@ -3695,60 +3685,57 @@ packages: - kind: conda name: libcblas version: 3.9.0 - build: 25_linux64_openblas - build_number: 25 + build: 26_linux64_openblas + build_number: 26 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-25_linux64_openblas.conda - sha256: ab87b0477078837c91d9cda62a9faca18fba7c57cc77aa779ae24b3ac783b5dd - md5: 5dbd1b0fc0d01ec5e0e1fbe667281a11 + url: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-26_linux64_openblas.conda + sha256: 9c74e536c9bc868e356ffd43f81c2cb398aec84b40fcadc312315b164a5500ee + md5: ebcc5f37a435aa3c19640533c82f8d76 depends: - - libblas 3.9.0 25_linux64_openblas + - libblas 3.9.0 26_linux64_openblas constrains: - - liblapack 3.9.0 25_linux64_openblas + - liblapack 3.9.0 26_linux64_openblas + - liblapacke 3.9.0 26_linux64_openblas - blas * openblas - - liblapacke 3.9.0 25_linux64_openblas license: BSD-3-Clause - license_family: BSD - size: 15613 - timestamp: 1729642905619 + size: 16336 + timestamp: 1734432570482 - kind: conda name: libcblas version: 3.9.0 - build: 25_linuxaarch64_openblas - build_number: 25 + build: 26_linuxaarch64_openblas + build_number: 26 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-25_linuxaarch64_openblas.conda - sha256: fde797e5528040fed0e9228dd75331be0cf5cbb0bc63641f53c3cca9eb86ec16 - md5: db6af51123c67814572a8c25542cb368 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-26_linuxaarch64_openblas.conda + sha256: 521e78be0c4170f229c43e1a6c94337a72db3ebcbe6e5960f8413aa438dcb8f9 + md5: d77f943ae4083f3aeddca698f2d28262 depends: - - libblas 3.9.0 25_linuxaarch64_openblas + - libblas 3.9.0 26_linuxaarch64_openblas constrains: - blas * openblas - - liblapacke 3.9.0 25_linuxaarch64_openblas - - liblapack 3.9.0 25_linuxaarch64_openblas + - liblapacke 3.9.0 26_linuxaarch64_openblas + - liblapack 3.9.0 26_linuxaarch64_openblas license: BSD-3-Clause - license_family: BSD - size: 15700 - timestamp: 1729643006729 + size: 16398 + timestamp: 1734432580937 - kind: conda name: libcblas version: 3.9.0 - build: 25_osxarm64_openblas - build_number: 25 + build: 26_osxarm64_openblas + build_number: 26 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-25_osxarm64_openblas.conda - sha256: d9fa5b6b11252132a3383bbf87bd2f1b9d6248bef1b7e113c2a8ae41b0376218 - md5: 4df0fae81f0b5bf47d48c882b086da11 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-26_osxarm64_openblas.conda + sha256: 27a29ef6b2fd2179bc3a0bb9db351f078ba140ca10485dca147c399639f84c93 + md5: a0e9980fe12d42f6d0c0ec009f67e948 depends: - - libblas 3.9.0 25_osxarm64_openblas + - libblas 3.9.0 26_osxarm64_openblas constrains: + - liblapack 3.9.0 26_osxarm64_openblas + - liblapacke 3.9.0 26_osxarm64_openblas - blas * openblas - - liblapack 3.9.0 25_osxarm64_openblas - - liblapacke 3.9.0 25_osxarm64_openblas license: BSD-3-Clause - license_family: BSD - size: 15837 - timestamp: 1729643270793 + size: 16628 + timestamp: 1734433061517 - kind: conda name: libcrc32c version: 1.1.2 @@ -3870,47 +3857,44 @@ packages: timestamp: 1733291654212 - kind: conda name: libdeflate - version: '1.22' - build: h86ecc28_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libdeflate-1.22-h86ecc28_0.conda - sha256: 986207f130703897300ddc3637c52e86a5b21c735fe384bf48554d9a6d91c56d - md5: ff6a44e8b1707d02be2fe9a36ea88d4a + version: '1.23' + build: h4ddbbb0_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.23-h4ddbbb0_0.conda + sha256: 511d801626d02f4247a04fff957cc6e9ec4cc7e8622bd9acd076bcdc5de5fe66 + md5: 8dfae1d2e74767e9ce36d5fa0d8605db depends: + - __glibc >=2.17,<3.0.a0 - libgcc >=13 license: MIT - license_family: MIT - size: 69601 - timestamp: 1728177137503 + size: 72255 + timestamp: 1734373823254 - kind: conda name: libdeflate - version: '1.22' - build: hb9d3cd8_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.22-hb9d3cd8_0.conda - sha256: 780f0530a3adfc1497ba49d626931c6afc978c540e1abfde6ccd57128ded6ad6 - md5: b422943d5d772b7cc858b36ad2a92db5 + version: '1.23' + build: h5e3c512_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libdeflate-1.23-h5e3c512_0.conda + sha256: 959419d87cd2b789a9055db95704c614f31aeb70bef7949fa2f734122a3a2863 + md5: 7e7ca2607b11b180120cefc2354fc0cb depends: - - __glibc >=2.17,<3.0.a0 - libgcc >=13 license: MIT - license_family: MIT - size: 72242 - timestamp: 1728177071251 + size: 69862 + timestamp: 1734373858306 - kind: conda name: libdeflate - version: '1.22' - build: hd74edd7_0 + version: '1.23' + build: hec38601_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.22-hd74edd7_0.conda - sha256: 3552894ca62bebc33d05982937cda25a4fa19e56a82af2ff20944ff4c2532fda - md5: 2d3e3f3d8ab315748420ef58d5a3ae0f + url: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.23-hec38601_0.conda + sha256: 887c02deaed6d583459eba6367023e36d8761085b2f7126e389424f57155da53 + md5: 1d8b9588be14e71df38c525767a1ac30 depends: - __osx >=11.0 license: MIT - license_family: MIT - size: 54089 - timestamp: 1728177149927 + size: 54132 + timestamp: 1734373971372 - kind: conda name: libedit version: 3.1.20191231 @@ -4634,60 +4618,57 @@ packages: - kind: conda name: liblapack version: 3.9.0 - build: 25_linux64_openblas - build_number: 25 + build: 26_linux64_openblas + build_number: 26 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-25_linux64_openblas.conda - sha256: 9d1ff017714edb2d84868f0f931a4a0e7c289a971062b2ac66cfc8145df7e20e - md5: 4dc03a53fc69371a6158d0ed37214cd3 + url: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-26_linux64_openblas.conda + sha256: b76458c36331376911e0f98fa68109e02f4d5e5ebfffa79587ac69cef748bba1 + md5: 3792604c43695d6a273bc5faaac47d48 depends: - - libblas 3.9.0 25_linux64_openblas + - libblas 3.9.0 26_linux64_openblas constrains: - - liblapacke 3.9.0 25_linux64_openblas - - libcblas 3.9.0 25_linux64_openblas + - libcblas 3.9.0 26_linux64_openblas + - liblapacke 3.9.0 26_linux64_openblas - blas * openblas license: BSD-3-Clause - license_family: BSD - size: 15608 - timestamp: 1729642910812 + size: 16338 + timestamp: 1734432576650 - kind: conda name: liblapack version: 3.9.0 - build: 25_linuxaarch64_openblas - build_number: 25 + build: 26_linuxaarch64_openblas + build_number: 26 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-25_linuxaarch64_openblas.conda - sha256: 2b399e65e0338bf249657b98333e910cd7086ea1332d4d6f303735883ca49318 - md5: 0eb74e81de46454960bde9e44e7ee378 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-26_linuxaarch64_openblas.conda + sha256: a42bd01498efe2ccf6d08d56ac3cbd3ceab79e06699ff5aac3da8e45a66738f7 + md5: a5d4e18876393633da62fd8492c00156 depends: - - libblas 3.9.0 25_linuxaarch64_openblas + - libblas 3.9.0 26_linuxaarch64_openblas constrains: - blas * openblas - - liblapacke 3.9.0 25_linuxaarch64_openblas - - libcblas 3.9.0 25_linuxaarch64_openblas + - liblapacke 3.9.0 26_linuxaarch64_openblas + - libcblas 3.9.0 26_linuxaarch64_openblas license: BSD-3-Clause - license_family: BSD - size: 15711 - timestamp: 1729643010817 + size: 16403 + timestamp: 1734432585123 - kind: conda name: liblapack version: 3.9.0 - build: 25_osxarm64_openblas - build_number: 25 + build: 26_osxarm64_openblas + build_number: 26 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-25_osxarm64_openblas.conda - sha256: fdd742407672a9af20e70764550cf18b3ab67f12e48bf04163b90492fbc401e7 - md5: 19bbddfec972d401838330453186108d + url: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-26_osxarm64_openblas.conda + sha256: dd6d9a21e672aee4332f019c8229ce70cf5eaf6c2f4cbd1443b105fb66c00dc5 + md5: cebad79038a75cfd28fa90d147a2d34d depends: - - libblas 3.9.0 25_osxarm64_openblas + - libblas 3.9.0 26_osxarm64_openblas constrains: + - liblapacke 3.9.0 26_osxarm64_openblas + - libcblas 3.9.0 26_osxarm64_openblas - blas * openblas - - liblapacke 3.9.0 25_osxarm64_openblas - - libcblas 3.9.0 25_osxarm64_openblas license: BSD-3-Clause - license_family: BSD - size: 15823 - timestamp: 1729643275943 + size: 16624 + timestamp: 1734433068120 - kind: conda name: liblzma version: 5.6.3 @@ -5344,38 +5325,37 @@ packages: - kind: conda name: libtiff version: 4.7.0 - build: ha962b0a_2 - build_number: 2 + build: h551f018_3 + build_number: 3 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-ha962b0a_2.conda - sha256: d9e6835fd189b85eb90dbfdcc51f5375decbf5bb53130042f49bbd6bfb0b24be - md5: 8e14b5225c593f099a21971568e6d7b4 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-h551f018_3.conda + sha256: 91417846157e04992801438a496b151df89604b2e7c6775d6f701fcd0cbed5ae + md5: a5d084a957563e614ec0c0196d890654 depends: - __osx >=11.0 - lerc >=4.0.0,<5.0a0 - libcxx >=18 - - libdeflate >=1.22,<1.23.0a0 + - libdeflate >=1.23,<1.24.0a0 - libjpeg-turbo >=3.0.0,<4.0a0 - liblzma >=5.6.3,<6.0a0 - libwebp-base >=1.4.0,<2.0a0 - libzlib >=1.3.1,<2.0a0 - zstd >=1.5.6,<1.6.0a0 license: HPND - size: 370387 - timestamp: 1733443310502 + size: 370600 + timestamp: 1734398863052 - kind: conda name: libtiff version: 4.7.0 - build: hc4654cb_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hc4654cb_2.conda - sha256: 18653b4a5c73e19c5e86ff72dab9bf59f5cc43d7f404a6be705d152dfd5e0660 - md5: be54fb40ea32e8fe9dbaa94d4528b57e + build: h88f7998_3 + build_number: 3 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.0-h88f7998_3.conda + sha256: 5888bd66ba7606ae8596856c7dac800940ecad0aed77d6aa37db69d434c81cf0 + md5: 36a0ea4a173338c8725dc0807e99cf22 depends: - - __glibc >=2.17,<3.0.a0 - lerc >=4.0.0,<5.0a0 - - libdeflate >=1.22,<1.23.0a0 + - libdeflate >=1.23,<1.24.0a0 - libgcc >=13 - libjpeg-turbo >=3.0.0,<4.0a0 - liblzma >=5.6.3,<6.0a0 @@ -5384,20 +5364,21 @@ packages: - libzlib >=1.3.1,<2.0a0 - zstd >=1.5.6,<1.6.0a0 license: HPND - size: 429018 - timestamp: 1733443013288 + size: 464699 + timestamp: 1734398752249 - kind: conda name: libtiff version: 4.7.0 - build: hca96517_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.0-hca96517_2.conda - sha256: d736d840d1f2446234195adfcb51b132c85797730b6f42ebf058d350fa9d20e8 - md5: 278dcef6d1ea28c04109c3f5dea126cb + build: hd9ff511_3 + build_number: 3 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hd9ff511_3.conda + sha256: b224e16b88d76ea95e4af56e2bc638c603bd26a770b98d117d04541d3aafa002 + md5: 0ea6510969e1296cc19966fad481f6de depends: + - __glibc >=2.17,<3.0.a0 - lerc >=4.0.0,<5.0a0 - - libdeflate >=1.22,<1.23.0a0 + - libdeflate >=1.23,<1.24.0a0 - libgcc >=13 - libjpeg-turbo >=3.0.0,<4.0a0 - liblzma >=5.6.3,<6.0a0 @@ -5406,8 +5387,8 @@ packages: - libzlib >=1.3.1,<2.0a0 - zstd >=1.5.6,<1.6.0a0 license: HPND - size: 464857 - timestamp: 1733443105529 + size: 428173 + timestamp: 1734398813264 - kind: conda name: libutf8proc version: 2.9.0 @@ -5920,76 +5901,76 @@ packages: timestamp: 1733219945697 - kind: conda name: max - version: 25.1.0.dev2024121405 + version: 25.1.0.dev2024121705 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024121405-release.conda - sha256: 6bacaa1d4f27d255a4c3907c28929865eeef5d45d64d61c3991b526aee14766d - md5: 1aec535b4731af73dd1b43472e7b6fa0 - depends: - - max-core ==25.1.0.dev2024121405 release - - max-python >=25.1.0.dev2024121405,<26.0a0 - - mojo-jupyter ==25.1.0.dev2024121405 release - - mblack ==25.1.0.dev2024121405 release + url: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024121705-release.conda + sha256: 83b2265b29c1ee69ae9d9f639ab04899d0ef15b5abc9114e034e2cd382dcad31 + md5: bd7165d97ebb0458ddb1ce616c146c24 + depends: + - max-core ==25.1.0.dev2024121705 release + - max-python >=25.1.0.dev2024121705,<26.0a0 + - mojo-jupyter ==25.1.0.dev2024121705 release + - mblack ==25.1.0.dev2024121705 release license: LicenseRef-Modular-Proprietary size: 9921 - timestamp: 1734153430066 + timestamp: 1734412638047 - kind: conda name: max-core - version: 25.1.0.dev2024121405 + version: 25.1.0.dev2024121705 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024121405-release.conda - sha256: 14f953430105c8f2bb8f3bdf1e3fb7e9acbb20613ad47c9ac1e88462e0cc804d - md5: d88d69b1696ed9d5795c8d346bbd4311 + url: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024121705-release.conda + sha256: 15459b8446d3feb608baae398cf2753a3704e02e07cf2a6c02e166068d8a9304 + md5: 4ca65aff37bd7e944cce1697c1fe203e depends: - - mblack ==25.1.0.dev2024121405 release + - mblack ==25.1.0.dev2024121705 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 245597032 - timestamp: 1734153445516 + size: 245744992 + timestamp: 1734412638045 - kind: conda name: max-core - version: 25.1.0.dev2024121405 + version: 25.1.0.dev2024121705 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024121405-release.conda - sha256: e3936f8021fc72f7f2673e2653e7bbd3d325fb44818b868bb49c24e5c1766eaf - md5: ea674f5d9232d89046ad99090cc195a7 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024121705-release.conda + sha256: e89be4d7691a354a3f6e5d71e25b49447ca9fd1048fe03355c3bc509a726234d + md5: acc4b1208feaba5ad08c1b370192e127 depends: - - mblack ==25.1.0.dev2024121405 release + - mblack ==25.1.0.dev2024121705 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 249408423 - timestamp: 1734153430064 + size: 249373255 + timestamp: 1734412698620 - kind: conda name: max-core - version: 25.1.0.dev2024121405 + version: 25.1.0.dev2024121705 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024121405-release.conda - sha256: b6bb97d20f0f7371a647778d18fe78f839e37eef423542ae3f4e75b018ffd8db - md5: 0e2d8c487ef68866164af9dff49f5119 + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024121705-release.conda + sha256: edd613b122c086c4d6237c7195a55ce09bff9922ab70e0f1ff7a9662d3de41fe + md5: d68326deab9bb460f253bf6df7e903f6 depends: - - mblack ==25.1.0.dev2024121405 release + - mblack ==25.1.0.dev2024121705 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 214323771 - timestamp: 1734153633668 + size: 214152137 + timestamp: 1734412888834 - kind: conda name: max-python - version: 25.1.0.dev2024121405 + version: 25.1.0.dev2024121705 build: 3.12release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024121405-3.12release.conda - sha256: 7ebdc67f58946084f7f4a657f0661899e61707b055f2046d9c18033f21f97008 - md5: 5a8cbae9c5257545459bfe7a262b62a6 + url: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024121705-3.12release.conda + sha256: 11296250671f2a7c5951382f89f8e68a1702b0c8aeef200788e71d9e0e1d2955 + md5: f979494f9de5b3853834ffa1adf606c3 depends: - - max-core ==25.1.0.dev2024121405 release + - max-core ==25.1.0.dev2024121705 release - python 3.12.* - fastapi - httpx @@ -6012,18 +5993,18 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 122834581 - timestamp: 1734153445526 + size: 122755617 + timestamp: 1734412638055 - kind: conda name: max-python - version: 25.1.0.dev2024121405 + version: 25.1.0.dev2024121705 build: 3.12release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024121405-3.12release.conda - sha256: b74a5c8945a97210778cda3cd9fe98f7404d2c9ff0b1a03738c77af6429b1523 - md5: 099dc5d1f85e4f883e72caef6f0c6e52 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024121705-3.12release.conda + sha256: e4a7ded05f33903034e52feefe65f458975942740cf07dcb30e2e9c1f0af53e6 + md5: 9a51b55d48b861487dbecd7c4abc7b68 depends: - - max-core ==25.1.0.dev2024121405 release + - max-core ==25.1.0.dev2024121705 release - python 3.12.* - fastapi - httpx @@ -6046,18 +6027,18 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 126606485 - timestamp: 1734153430075 + size: 126486411 + timestamp: 1734412698632 - kind: conda name: max-python - version: 25.1.0.dev2024121405 + version: 25.1.0.dev2024121705 build: 3.12release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024121405-3.12release.conda - sha256: 24a7ab99d936e5c28f597413e9e643fe34c46ba55916c1febcbe658e79a2ea9f - md5: 661ce5968d3cc1b11a67dfbf77e986b8 + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024121705-3.12release.conda + sha256: 328cee9730cf537d58e6d24b9aa111504271433d724fd47fdcee55b26df222b3 + md5: b1168de7b96e9e7b0fad7c675ecdb426 depends: - - max-core ==25.1.0.dev2024121405 release + - max-core ==25.1.0.dev2024121705 release - python 3.12.* - fastapi - httpx @@ -6080,17 +6061,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 113414908 - timestamp: 1734153633671 + size: 113391631 + timestamp: 1734412888837 - kind: conda name: mblack - version: 25.1.0.dev2024121405 + version: 25.1.0.dev2024121705 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121405-release.conda - sha256: ea23ea9fdb019aa4dc05bcb1d1f526f77ce90a94baa3130d26ce71cad0a3647b - md5: 425b85251efa151234c9db33428ee55c + url: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121705-release.conda + sha256: 44d0c3a0b1242823334d6bad895ad037849719f67bcfbc426c65363c567f80a5 + md5: 93c89483058dabd0282c378812328ba0 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -6100,8 +6081,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130792 - timestamp: 1734153430070 + size: 130801 + timestamp: 1734412638051 - kind: conda name: mdurl version: 0.1.2 @@ -6120,21 +6101,21 @@ packages: timestamp: 1733255681319 - kind: conda name: mojo-jupyter - version: 25.1.0.dev2024121405 + version: 25.1.0.dev2024121705 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024121405-release.conda - sha256: b232fe63e84736d519137d4c98067c886f8acc1cc38a6620a062f4eb079e751a - md5: b7d7fe85425c5120a665795eb2097aa9 + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024121705-release.conda + sha256: 8ef8447f576590d381ccaa82e6c207c530e9355b07ab3174f3df9c9f064d42de + md5: 4c31e34ff54c71cd9d584d3ab8f1c315 depends: - - max-core ==25.1.0.dev2024121405 release + - max-core ==25.1.0.dev2024121705 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22934 - timestamp: 1734153430071 + size: 22937 + timestamp: 1734412638052 - kind: conda name: multidict version: 6.1.0 @@ -6473,62 +6454,61 @@ packages: timestamp: 1731377666602 - kind: conda name: opentelemetry-api - version: 1.28.2 + version: 1.29.0 build: pyhd8ed1ab_1 build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.28.2-pyhd8ed1ab_1.conda - sha256: 780dbc942a6075db7bdbaf556023be50c34a6111a99e465878d7bab0e5e0d7f4 - md5: a06f1e9d97c98d26f06675236c9ea554 + url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.29.0-pyhd8ed1ab_1.conda + sha256: 296280c8ace35c0a1cf72bed1077f248b3af903c3bf92332f1783a207cb5abdb + md5: 307b05402c1a382f2f09426492dee8f8 depends: - deprecated >=1.2.6 - - importlib-metadata >=6.0.0,<7.1.0 + - importlib-metadata >=6.0,<=8.5.0 - python >=3.9 - - setuptools >=16.0 license: Apache-2.0 license_family: APACHE - size: 44242 - timestamp: 1733734361129 + size: 44166 + timestamp: 1734132973331 - kind: conda name: opentelemetry-exporter-otlp-proto-common - version: 1.28.2 - build: pyhff2d567_0 + version: 1.29.0 + build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.28.2-pyhff2d567_0.conda - sha256: 838525f5a35f130eb3e6ccf06700ab7574467e8abe19da91e6f0de3b399e77c2 - md5: b00b3a8f0d25d5b18979c73ec051c313 + url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.29.0-pyhd8ed1ab_0.conda + sha256: ae9776efe52564e0d6711cfcee7c54439273e57a3999f7f796f66e862f58aae9 + md5: 0c02e74d26bce3fec93b227cf7ea6e6b depends: - backoff >=1.10.0,<3.0.0 - - opentelemetry-proto 1.28.2 + - opentelemetry-proto 1.29.0 - python >=3.9 license: Apache-2.0 license_family: APACHE - size: 18838 - timestamp: 1731991715474 + size: 18922 + timestamp: 1734310457116 - kind: conda name: opentelemetry-exporter-otlp-proto-http - version: 1.28.2 - build: pyhd8ed1ab_0 + version: 1.29.0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.28.2-pyhd8ed1ab_0.conda - sha256: d89b7b0f28dca5ed84d8c3421e3b16683f764c9eebde66cc8858fc183751af69 - md5: 73810c011d2d60914ce8f92fe99564a0 + url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.29.0-pyhd8ed1ab_1.conda + sha256: 5d61db9d5b4f91b3932f5f2348920d5b7fdaa09e52c8ea054cf7bf3f21677c9c + md5: 223f4e56a29601c887f0dc467034af5b depends: - deprecated >=1.2.6 - - googleapis-common-protos ~=1.52 - - opentelemetry-api ~=1.15 - - opentelemetry-exporter-otlp-proto-common 1.28.2 - - opentelemetry-proto 1.28.2 - - opentelemetry-sdk ~=1.28.2 - - python >=3.8 - - requests ~=2.7 + - googleapis-common-protos >=1.52,<2.dev0 + - opentelemetry-api >=1.15,<2.dev0 + - opentelemetry-exporter-otlp-proto-common 1.29.0 + - opentelemetry-proto 1.29.0 + - opentelemetry-sdk 1.29.0 + - python >=3.9 + - requests >=2.7,<3.dev0 license: Apache-2.0 - license_family: APACHE - size: 17007 - timestamp: 1732094238214 + size: 17147 + timestamp: 1734345675510 - kind: conda name: opentelemetry-exporter-prometheus version: 1.12.0rc1 @@ -6549,58 +6529,56 @@ packages: timestamp: 1695214221489 - kind: conda name: opentelemetry-proto - version: 1.28.2 - build: pyhff2d567_0 + version: 1.29.0 + build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.28.2-pyhff2d567_0.conda - sha256: e68320a465b45e05f569c440a20735db9a0fd7cdb9e52300506660a924d17caf - md5: 54ac33b32171ce2205b6639da1a1ac54 + url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.29.0-pyhd8ed1ab_0.conda + sha256: 200a7cb8acc8a0ddd6ef55c5460cec871b6a265929b240a0296c0ccb9c8d9758 + md5: e2a6d2ad10b813c7fdc1c64aac376128 depends: - protobuf <6.0,>=5.0 - python >=3.9 license: Apache-2.0 license_family: APACHE - size: 37108 - timestamp: 1731988686996 + size: 37235 + timestamp: 1734291034372 - kind: conda name: opentelemetry-sdk - version: 1.28.2 - build: pyhd8ed1ab_1 - build_number: 1 + version: 1.29.0 + build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.28.2-pyhd8ed1ab_1.conda - sha256: 9f48ec749f0738910fdd6750f9655f16949182b5379dd2c0771104d3e74bfd74 - md5: bfe29ef92f3a04ab8e59e4f97b28785c + url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.29.0-pyhd8ed1ab_0.conda + sha256: 7b36629d8b8be8a019fcfd1518d7b7f862dd25de96f8adcadb93e4fd12cf9bd6 + md5: 2a8893f06e6ebda4bfa78875bc923ea4 depends: - - opentelemetry-api 1.28.2 - - opentelemetry-semantic-conventions 0.49b2 + - opentelemetry-api 1.29.0 + - opentelemetry-semantic-conventions 0.50b0 - python >=3.9 - typing-extensions >=3.7.4 - typing_extensions >=3.7.4 license: Apache-2.0 license_family: APACHE - size: 78090 - timestamp: 1733768582451 + size: 77645 + timestamp: 1734297838999 - kind: conda name: opentelemetry-semantic-conventions - version: 0.49b2 - build: pyh3cfb1c2_1 - build_number: 1 + version: 0.50b0 + build: pyh3cfb1c2_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh3cfb1c2_1.conda - sha256: 28180ffa6611f117c782c7d72066b50332c1df0bdcfed0dea4e446a20c4b7d10 - md5: e0ada55d18e6bd5a8e61943b4b5d3a8f + url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.50b0-pyh3cfb1c2_0.conda + sha256: 6526e70368d5bf66ef0eaa51fb800d53782dde71a24bd38f40139919a6f784dc + md5: f7111fa4188d646c8108e232d024cb99 depends: - deprecated >=1.2.6 - - opentelemetry-api 1.28.2 + - opentelemetry-api 1.29.0 - python >=3.9 license: Apache-2.0 license_family: APACHE - size: 81099 - timestamp: 1733749104727 + size: 86084 + timestamp: 1734208980168 - kind: conda name: orc version: 2.0.3 @@ -7273,6 +7251,7 @@ packages: - python >=3.9 - python-dotenv >=0.21.0 license: MIT + license_family: MIT size: 31426 timestamp: 1734127929720 - kind: conda @@ -7499,20 +7478,19 @@ packages: timestamp: 1677079727691 - kind: conda name: python-multipart - version: 0.0.19 - build: pyhff2d567_1 - build_number: 1 + version: 0.0.20 + build: pyhff2d567_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_1.conda - sha256: e6f6bc3d2a51f45ca26d556c5a416efdacf49a918fefcd0b7c340121e608aa5f - md5: c74333aa447ed2b94d49e5db23da5de6 + url: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.20-pyhff2d567_0.conda + sha256: 1b03678d145b1675b757cba165a0d9803885807792f7eb4495e48a38858c3cca + md5: a28c984e0429aff3ab7386f7de56de6f depends: - python >=3.9 license: Apache-2.0 license_family: Apache - size: 27768 - timestamp: 1733323160772 + size: 27913 + timestamp: 1734420869885 - kind: conda name: python-tzdata version: '2024.2' @@ -7969,35 +7947,35 @@ packages: timestamp: 1733750834072 - kind: conda name: s2n - version: 1.5.9 - build: h0fd0ee4_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/s2n-1.5.9-h0fd0ee4_0.conda - sha256: f2c8e55d6caa8d87a482b1f133963c184de1ccb2303b77cc8ca86c794253f151 - md5: f472432f3753c5ca763d2497e2ea30bf + version: 1.5.10 + build: h5df210e_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/s2n-1.5.10-h5df210e_0.conda + sha256: b5e7a9f4b7b1ec5c5c3661e2defc8b47fab543b05cad6fec78739d8007612464 + md5: 3d3979efcc0f44f3f0cef3de03b296cc depends: - - __glibc >=2.17,<3.0.a0 - libgcc >=13 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 355568 - timestamp: 1731541963573 + size: 353450 + timestamp: 1734415474615 - kind: conda name: s2n - version: 1.5.9 - build: h636ded1_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/s2n-1.5.9-h636ded1_0.conda - sha256: 51572714743f836266af564c5b26b37599478131c4379a0d11778f04e647d070 - md5: bf4f84136d9ddb7be1855754a9ac4bb9 + version: 1.5.10 + build: hb5b8611_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/s2n-1.5.10-hb5b8611_0.conda + sha256: f6d451821fddc26b93f45e9313e1ea15e09e5ef049d4e137413a5225d2a5dfba + md5: 999f3673f2a011f59287f2969e3749e4 depends: + - __glibc >=2.17,<3.0.a0 - libgcc >=13 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 352546 - timestamp: 1731542018427 + size: 355142 + timestamp: 1734415467047 - kind: conda name: safetensors version: 0.4.5 @@ -8055,22 +8033,6 @@ packages: license_family: APACHE size: 353606 timestamp: 1725632294079 -- kind: conda - name: setuptools - version: 75.6.0 - build: pyhff2d567_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_1.conda - sha256: abb12e1dd515b13660aacb5d0fd43835bc2186cab472df25b7716cd65e095111 - md5: fc80f7995e396cbaeabd23cf46c413dc - depends: - - python >=3.9 - license: MIT - license_family: MIT - size: 774252 - timestamp: 1732632769210 - kind: conda name: shellingham version: 1.5.4 @@ -8542,14 +8504,13 @@ packages: timestamp: 1733206968917 - kind: conda name: uvicorn - version: 0.32.1 - build: pyh31011fe_1 - build_number: 1 + version: 0.34.0 + build: pyh31011fe_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_1.conda - sha256: ad1d8470c629679ea3db52351a522ae44eee0111d8d8b254e8c863c4a292e5c4 - md5: 7832640e5e302059e844d56f410487a6 + url: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.34.0-pyh31011fe_0.conda + sha256: 55c160b0cf9274e2b98bc0f7fcce548bffa8d788bc86aa02801877457040f6fa + md5: 5d448feee86e4740498ec8f8eb40e052 depends: - __unix - click >=7.0 @@ -8558,31 +8519,30 @@ packages: - typing_extensions >=4.0 license: BSD-3-Clause license_family: BSD - size: 49340 - timestamp: 1733332048141 + size: 48643 + timestamp: 1734293057914 - kind: conda name: uvicorn-standard - version: 0.32.1 - build: h31011fe_1 - build_number: 1 + version: 0.34.0 + build: h31011fe_0 subdir: noarch noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_1.conda - sha256: 378903c51b2b1136fa48b01c0a2a8dd4634136d038a4a56561c0856fdcbfcabe - md5: 0c233d5c71d398cf01d0281e72194005 + url: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.34.0-h31011fe_0.conda + sha256: 87e1531e175e75122f9f37608eb953af4c977465ab0ae11283cc01fef954e4ec + md5: 32a94143a7f65d76d2d5da37dcb4ed79 depends: - __unix - - httptools >=0.5.0 + - httptools >=0.6.3 - python-dotenv >=0.13 - pyyaml >=5.1 - - uvicorn 0.32.1 pyh31011fe_1 + - uvicorn 0.34.0 pyh31011fe_0 - uvloop >=0.14.0,!=0.15.0,!=0.15.1 - watchfiles >=0.13 - websockets >=10.4 license: BSD-3-Clause license_family: BSD - size: 7094 - timestamp: 1733332049165 + size: 7203 + timestamp: 1734293058849 - kind: conda name: uvloop version: 0.21.0 @@ -8801,50 +8761,47 @@ packages: timestamp: 1732523852129 - kind: conda name: xorg-libxau - version: 1.0.11 - build: h86ecc28_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxau-1.0.11-h86ecc28_1.conda - sha256: a00c4c6054209c84fb460c5e4ae7193c335a9ee1851645c9ad59312438e853f7 - md5: c5f72a733c461aa7785518d29b997cc8 + version: 1.0.12 + build: h5505292_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxau-1.0.12-h5505292_0.conda + sha256: f33e6f013fc36ebc200f09ddead83468544cb5c353a3b50499b07b8c34e28a8d + md5: 50901e0764b7701d8ed7343496f4f301 depends: - - libgcc >=13 + - __osx >=11.0 license: MIT license_family: MIT - size: 15690 - timestamp: 1727036097294 + size: 13593 + timestamp: 1734229104321 - kind: conda name: xorg-libxau - version: 1.0.11 - build: hb9d3cd8_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.11-hb9d3cd8_1.conda - sha256: 532a046fee0b3a402db867b6ec55c84ba4cdedb91d817147c8feeae9766be3d6 - md5: 77cbc488235ebbaab2b6e912d3934bae + version: 1.0.12 + build: h86ecc28_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxau-1.0.12-h86ecc28_0.conda + sha256: 7829a0019b99ba462aece7592d2d7f42e12d12ccd3b9614e529de6ddba453685 + md5: d5397424399a66d33c80b1f2345a36a6 depends: - - __glibc >=2.17,<3.0.a0 - libgcc >=13 license: MIT license_family: MIT - size: 14679 - timestamp: 1727034741045 + size: 15873 + timestamp: 1734230458294 - kind: conda name: xorg-libxau - version: 1.0.11 - build: hd74edd7_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxau-1.0.11-hd74edd7_1.conda - sha256: 7113618021cf6c80831a429b2ebb9d639f3c43cf7fe2257d235dc6ae0ab43289 - md5: 7e0125f8fb619620a0011dc9297e2493 + version: 1.0.12 + build: hb9d3cd8_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-hb9d3cd8_0.conda + sha256: ed10c9283974d311855ae08a16dfd7e56241fac632aec3b92e3cfe73cff31038 + md5: f6ebe2cb3f82ba6c057dde5d9debe4f7 depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 license: MIT license_family: MIT - size: 13515 - timestamp: 1727034783560 + size: 14780 + timestamp: 1734229004433 - kind: conda name: xorg-libxdmcp version: 1.1.5 From f3432eb9220fec4b12626db7d273ddca53178971 Mon Sep 17 00:00:00 2001 From: Ricardo Guzman Date: Wed, 18 Dec 2024 14:27:33 -0500 Subject: [PATCH 109/509] [docs] Fix typo (#3893) Signed-off-by: Ricardo Guzman --- docs/manual/get-started.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/manual/get-started.mdx b/docs/manual/get-started.mdx index 469542567d..ccb7680952 100644 --- a/docs/manual/get-started.mdx +++ b/docs/manual/get-started.mdx @@ -665,7 +665,7 @@ In the case of `str()`, it requires a type to conform to either the `Stringable` or `StringableRaising` trait. Each trait requires a conforming type to implement a `__str__()` method that returns a `String` representation. The only difference between the two traits is that `Stringable` requires that the method *cannot* -raise and error, whereas `StringableRaising` indicates that the method *might* +raise an error, whereas `StringableRaising` indicates that the method *might* raise an error. (To learn more, read [The `Stringable`, `Representable`, and `Writable` traits](/mojo/manual/traits#the-stringable-representable-and-writable-traits).) From 832e9b9fd5526e3aa9e14d1ebd03412257a9c190 Mon Sep 17 00:00:00 2001 From: Chris Elrod Date: Tue, 17 Dec 2024 09:56:38 -0500 Subject: [PATCH 110/509] [stdlib] Add log2e to math/constants log2e, equal to `log2(e)`, is now a constant available in math/constants. MODULAR_ORIG_COMMIT_REV_ID: 78d9ac514699877f3f04964c4915804223fb4929 --- docs/manual/get-started.mdx | 2 +- stdlib/src/math/constants.mojo | 3 +++ stdlib/src/math/math.mojo | 7 +++---- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/docs/manual/get-started.mdx b/docs/manual/get-started.mdx index ccb7680952..469542567d 100644 --- a/docs/manual/get-started.mdx +++ b/docs/manual/get-started.mdx @@ -665,7 +665,7 @@ In the case of `str()`, it requires a type to conform to either the `Stringable` or `StringableRaising` trait. Each trait requires a conforming type to implement a `__str__()` method that returns a `String` representation. The only difference between the two traits is that `Stringable` requires that the method *cannot* -raise an error, whereas `StringableRaising` indicates that the method *might* +raise and error, whereas `StringableRaising` indicates that the method *might* raise an error. (To learn more, read [The `Stringable`, `Representable`, and `Writable` traits](/mojo/manual/traits#the-stringable-representable-and-writable-traits).) diff --git a/stdlib/src/math/constants.mojo b/stdlib/src/math/constants.mojo index 49c814406a..d24c05e8f3 100644 --- a/stdlib/src/math/constants.mojo +++ b/stdlib/src/math/constants.mojo @@ -28,3 +28,6 @@ alias e = 2.7182818284590452353602874713526624977572470936999595749669676277 alias tau = 2 * pi """The mathematical constant τ = 6.283185.... Tau is a circumference of a circle (2π).""" + +alias log2e = 1.442695040888963407359924681001892137426646 +"""log2e = log2(e), where e is Euler's constant.""" diff --git a/stdlib/src/math/math.mojo b/stdlib/src/math/math.mojo index 9d5f53e0e4..836a0b3c0b 100644 --- a/stdlib/src/math/math.mojo +++ b/stdlib/src/math/math.mojo @@ -42,6 +42,7 @@ from utils.index import IndexList from utils.numerics import FPUtils, isnan, nan from utils.static_tuple import StaticTuple +from .constants import log2e from .polynomial import polynomial_evaluate # ===----------------------------------------------------------------------=== # @@ -572,14 +573,13 @@ fn exp[ """ constrained[type.is_floating_point(), "must be a floating point value"]() alias neg_ln2 = -0.69314718055966295651160180568695068359375 - alias inv_lg2 = 1.442695040888963407359924681001892137426646 @parameter if is_nvidia_gpu(): @parameter if type in (DType.float16, DType.float32): - return exp2(x * inv_lg2) + return exp2(x * log2e) @parameter if type not in (DType.float32, DType.float64): @@ -597,7 +597,7 @@ fn exp[ max_val = 88.3762626647950 var xc = x.clamp(min_val, max_val) - var k = floor(xc.fma(inv_lg2, 0.5)) + var k = floor(xc.fma(log2e, 0.5)) var r = k.fma(neg_ln2, xc) return max(_ldexp_impl(_exp_taylor(r), k), xc) @@ -740,7 +740,6 @@ fn _log_base[ alias ln2 = 0.69314718055994530942 y = exp.fma(ln2, y) else: - alias log2e = 1.4426950408889634073599 y = y.fma(log2e, exp) return (x == 0).select(Scalar[type].MIN, (x > 0).select(y, nan[type]())) From 391edf50b45e8765a35a90bef813a54b0e9c73ce Mon Sep 17 00:00:00 2001 From: Owen Hilyard Date: Tue, 17 Dec 2024 10:47:03 -0600 Subject: [PATCH 111/509] [External] [docs] Update stdlib-insider-docs.md proposal status (#52988) [External] [docs] Update stdlib-insider-docs.md proposal status Update the status to reflect that the proposal has been accepted. Co-authored-by: Owen Hilyard Closes modularml/mojo#3891 MODULAR_ORIG_COMMIT_REV_ID: 9790a42e516d6b8c9409b89b95facce210efe9ca --- proposals/stdlib-insider-docs.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/proposals/stdlib-insider-docs.md b/proposals/stdlib-insider-docs.md index 1bf0abfef2..a21099b151 100644 --- a/proposals/stdlib-insider-docs.md +++ b/proposals/stdlib-insider-docs.md @@ -2,7 +2,7 @@ Owen Hilyard, Created November 17, 2024 -**Status**: Initial Proposal +**Status**: Accepted ## Motivation From 181f899f2f39b5b358808c115c20df876aeff3d1 Mon Sep 17 00:00:00 2001 From: modularbot <116839051+modularbot@users.noreply.github.com> Date: Tue, 17 Dec 2024 13:47:31 -0600 Subject: [PATCH 112/509] [External] [stdlib] Refactor `String` from `StringSlice` constructor (#52967) MODULAR_ORIG_COMMIT_REV_ID: 652e47d7fcdbca8c982d9a935b35639d2ea4d994 --- stdlib/src/collections/string.mojo | 23 +++++++++-------------- 1 file changed, 9 insertions(+), 14 deletions(-) diff --git a/stdlib/src/collections/string.mojo b/stdlib/src/collections/string.mojo index 06cd2afeb5..6ebf4d90ad 100644 --- a/stdlib/src/collections/string.mojo +++ b/stdlib/src/collections/string.mojo @@ -887,24 +887,19 @@ struct String( fn __init__(out self, str_slice: StringSlice): """Construct a string from a string slice. - This will allocate a new string that copies the string contents from - the provided string slice `str_slice`. - Args: str_slice: The string slice from which to construct this string. + + Notes: + This will allocate a new string that copies the string contents from + the provided string slice. """ - # Calculate length in bytes - var length: Int = len(str_slice.as_bytes()) - var buffer = Self._buffer_type() - # +1 for null terminator, initialized to 0 - buffer.resize(length + 1, 0) - memcpy( - dest=buffer.data, - src=str_slice.as_bytes().unsafe_ptr(), - count=length, - ) - self = Self(buffer^) + var length = str_slice.byte_length() + var ptr = UnsafePointer[Byte].alloc(length + 1) # null terminator + memcpy(ptr, str_slice.unsafe_ptr(), length) + ptr[length] = 0 + self = String(ptr=ptr, length=length + 1) @always_inline @implicit From 08b82aeb42df75b965571d5bbddf7da00551febd Mon Sep 17 00:00:00 2001 From: Scott Main Date: Tue, 17 Dec 2024 12:20:04 -0800 Subject: [PATCH 113/509] Fix link for moved Span type MODULAR_ORIG_COMMIT_REV_ID: 100df6d133f0b6d1d1dd4da796c0d8ae2146c928 --- docs/changelog-released.md | 2 +- docs/manual/values/lifetimes.mdx | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/changelog-released.md b/docs/changelog-released.md index b420128e7e..d20de03317 100644 --- a/docs/changelog-released.md +++ b/docs/changelog-released.md @@ -2314,7 +2314,7 @@ Big themes for this release: ([PR 2587#](https://github.com/modularml/mojo/pull/2587)) ([PR #2703](https://github.com/modularml/mojo/pull/2703)) - - Added a new [`Span`](/mojo/stdlib/utils/span/Span) type for taking slices of + - Added a new [`Span`](/mojo/stdlib/memory/span/Span) type for taking slices of contiguous collections. ([PR #2595](https://github.com/modularml/mojo/pull/2595)) diff --git a/docs/manual/values/lifetimes.mdx b/docs/manual/values/lifetimes.mdx index baf5f1e860..3c1871c0d7 100644 --- a/docs/manual/values/lifetimes.mdx +++ b/docs/manual/values/lifetimes.mdx @@ -44,7 +44,7 @@ However, in some cases you'll need to interact with origins directly: * When working with types like [`Pointer`](/mojo/stdlib/memory/pointer/Pointer) or - [`Span`](/mojo/stdlib/utils/span/Span) which are parameterized on the + [`Span`](/mojo/stdlib/memory/span/Span) which are parameterized on the origin of the data they refer to. This section also covers [`ref` arguments](#ref-arguments) and From a4198cf0de4ed29d6a4db4a751e3151421b6d302 Mon Sep 17 00:00:00 2001 From: Joe Loser Date: Tue, 17 Dec 2024 15:48:50 -0600 Subject: [PATCH 114/509] [stdlib] Change `Dict.hash` data member type to be `UInt64` The `Hashable` trait has `__hash__` function return a `UInt` hash value. So, `Dict` storing the hash value as an `Int` is incorrect after the change in the return type from `__hash__` when it used to be `Int`. In the near future, `__hash__` will be changed to return a `UInt64` (whcih also aligns with the new data-flow hashing in progress). So, go ahead and update the `Dict.hash` data member to prepare for this change (this is why we went straight to `UInt64` instead of `UInt`). MODULAR_ORIG_COMMIT_REV_ID: f6782bb4972e7b1c8ee2fc43fc7120105065e426 --- stdlib/src/collections/dict.mojo | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/stdlib/src/collections/dict.mojo b/stdlib/src/collections/dict.mojo index f6b36900dc..3a2634814c 100644 --- a/stdlib/src/collections/dict.mojo +++ b/stdlib/src/collections/dict.mojo @@ -216,7 +216,7 @@ struct DictEntry[K: KeyElement, V: CollectionElement]( V: The value type of the dict. """ - var hash: Int + var hash: UInt64 """`key.__hash__()`, stored so hashing isn't re-computed during dict lookup.""" var key: K """The unique key for the entry.""" @@ -319,7 +319,7 @@ struct _DictIndex: fn __moveinit__(out self, owned existing: Self): self.data = existing.data - fn get_index(self, reserved: Int, slot: Int) -> Int: + fn get_index(self, reserved: Int, slot: UInt64) -> Int: if reserved <= 128: var data = self.data.bitcast[Int8]() return int(data.load(slot & (reserved - 1))) @@ -333,7 +333,7 @@ struct _DictIndex: var data = self.data.bitcast[Int64]() return int(data.load(slot & (reserved - 1))) - fn set_index(mut self, reserved: Int, slot: Int, value: Int): + fn set_index(mut self, reserved: Int, slot: UInt64, value: Int): if reserved <= 128: var data = self.data.bitcast[Int8]() return data.store(slot & (reserved - 1), value) @@ -774,7 +774,7 @@ struct Dict[K: KeyElement, V: CollectionElement]( """ var hash = hash(key) var found: Bool - var slot: Int + var slot: UInt64 var index: Int found, slot, index = self._find_index(hash, key) if found: @@ -839,7 +839,7 @@ struct Dict[K: KeyElement, V: CollectionElement]( """ var hash = hash(key) var found: Bool - var slot: Int + var slot: UInt64 var index: Int found, slot, index = self._find_index(hash, key) if found: @@ -972,7 +972,7 @@ struct Dict[K: KeyElement, V: CollectionElement]( if not safe_context: self._maybe_resize() var found: Bool - var slot: Int + var slot: UInt64 var index: Int found, slot, index = self._find_index(entry.hash, entry.key) @@ -982,30 +982,30 @@ struct Dict[K: KeyElement, V: CollectionElement]( self.size += 1 self._n_entries += 1 - fn _get_index(self, slot: Int) -> Int: + fn _get_index(self, slot: UInt64) -> Int: return self._index.get_index(self._reserved(), slot) - fn _set_index(mut self, slot: Int, index: Int): + fn _set_index(mut self, slot: UInt64, index: Int): return self._index.set_index(self._reserved(), slot, index) - fn _next_index_slot(self, mut slot: Int, mut perturb: UInt64): + fn _next_index_slot(self, mut slot: UInt64, mut perturb: UInt64): alias PERTURB_SHIFT = 5 perturb >>= PERTURB_SHIFT slot = ((5 * slot) + int(perturb + 1)) & (self._reserved() - 1) - fn _find_empty_index(self, hash: Int) -> Int: + fn _find_empty_index(self, hash: UInt64) -> UInt64: var slot = hash & (self._reserved() - 1) - var perturb = bitcast[DType.uint64](Int64(hash)) + var perturb = hash while True: var index = self._get_index(slot) if index == Self.EMPTY: return slot self._next_index_slot(slot, perturb) - fn _find_index(self, hash: Int, key: K) -> (Bool, Int, Int): + fn _find_index(self, hash: UInt64, key: K) -> (Bool, UInt64, Int): # Return (found, slot, index) var slot = hash & (self._reserved() - 1) - var perturb = bitcast[DType.uint64](Int64(hash)) + var perturb = hash while True: var index = self._get_index(slot) if index == Self.EMPTY: From e62fe551d0cd0ff83f3e0590c0a0b12e5065d0ab Mon Sep 17 00:00:00 2001 From: Lukas Hermann <1734032+lsh@users.noreply.github.com> Date: Tue, 17 Dec 2024 15:52:02 -0800 Subject: [PATCH 115/509] [stdlib] Move `count` onto `StringSlice` Moving more immutable `String` methods onto `StringSlice`. MODULAR_ORIG_COMMIT_REV_ID: d3242c64a3cf8dd4b2141837b633bcbdaaf5844e --- stdlib/src/collections/string.mojo | 18 ++------------- stdlib/src/utils/string_slice.mojo | 29 ++++++++++++++++++++++++ stdlib/test/collections/test_string.mojo | 15 ------------ stdlib/test/utils/test_string_slice.mojo | 15 ++++++++++++ 4 files changed, 46 insertions(+), 31 deletions(-) diff --git a/stdlib/src/collections/string.mojo b/stdlib/src/collections/string.mojo index 6ebf4d90ad..b8073bd83d 100644 --- a/stdlib/src/collections/string.mojo +++ b/stdlib/src/collections/string.mojo @@ -1667,7 +1667,7 @@ struct String( self._buffer.capacity = 0 return ptr - fn count(self, substr: String) -> Int: + fn count(self, substr: StringSlice) -> Int: """Return the number of non-overlapping occurrences of substring `substr` in the string. @@ -1680,21 +1680,7 @@ struct String( Returns: The number of occurrences of `substr`. """ - if not substr: - return len(self) + 1 - - var res = 0 - var offset = 0 - - while True: - var pos = self.find(substr, offset) - if pos == -1: - break - res += 1 - - offset = pos + substr.byte_length() - - return res + return self.as_string_slice().count(substr) fn __contains__(self, substr: String) -> Bool: """Returns True if the substring is contained within the current string. diff --git a/stdlib/src/utils/string_slice.mojo b/stdlib/src/utils/string_slice.mojo index c465811f1b..9dc3cd00d5 100644 --- a/stdlib/src/utils/string_slice.mojo +++ b/stdlib/src/utils/string_slice.mojo @@ -1105,6 +1105,35 @@ struct StringSlice[mut: Bool, //, origin: Origin[mut]]( return output^ + fn count(self, substr: StringSlice) -> Int: + """Return the number of non-overlapping occurrences of substring + `substr` in the string. + + If sub is empty, returns the number of empty strings between characters + which is the length of the string plus one. + + Args: + substr: The substring to count. + + Returns: + The number of occurrences of `substr`. + """ + if not substr: + return len(self) + 1 + + var res = 0 + var offset = 0 + + while True: + var pos = self.find(substr, offset) + if pos == -1: + break + res += 1 + + offset = pos + substr.byte_length() + + return res + # ===-----------------------------------------------------------------------===# # Utils diff --git a/stdlib/test/collections/test_string.mojo b/stdlib/test/collections/test_string.mojo index 4d9151b279..a871adae4e 100644 --- a/stdlib/test/collections/test_string.mojo +++ b/stdlib/test/collections/test_string.mojo @@ -640,20 +640,6 @@ def test_find(): assert_equal(-1, String("abc").find("abcd")) -def test_count(): - var str = String("Hello world") - - assert_equal(12, str.count("")) - assert_equal(1, str.count("Hell")) - assert_equal(3, str.count("l")) - assert_equal(1, str.count("ll")) - assert_equal(1, str.count("ld")) - assert_equal(0, str.count("universe")) - - assert_equal(String("aaaaa").count("a"), 5) - assert_equal(String("aaaaaa").count("aa"), 3) - - def test_replace(): # Replace empty var s1 = String("abc") @@ -1617,7 +1603,6 @@ def main(): test_calc_initial_buffer_size_int64() test_contains() test_find() - test_count() test_replace() test_rfind() test_split() diff --git a/stdlib/test/utils/test_string_slice.mojo b/stdlib/test/utils/test_string_slice.mojo index f88ed32dbb..dd7269a956 100644 --- a/stdlib/test/utils/test_string_slice.mojo +++ b/stdlib/test/utils/test_string_slice.mojo @@ -624,6 +624,20 @@ def test_endswith(): assert_true(ab.endswith("ab")) +def test_count(): + var str = StringSlice("Hello world") + + assert_equal(12, str.count("")) + assert_equal(1, str.count("Hell")) + assert_equal(3, str.count("l")) + assert_equal(1, str.count("ll")) + assert_equal(1, str.count("ld")) + assert_equal(0, str.count("universe")) + + assert_equal(StringSlice("aaaaa").count("a"), 5) + assert_equal(StringSlice("aaaaaa").count("aa"), 3) + + def main(): test_string_literal_byte_span() test_string_byte_span() @@ -641,6 +655,7 @@ def main(): test_combination_10_good_utf8_sequences() test_combination_10_good_10_bad_utf8_sequences() test_count_utf8_continuation_bytes() + test_count() test_splitlines() test_rstrip() test_lstrip() From 74c9f3c128c05695ecf8aab7d021d7035266915c Mon Sep 17 00:00:00 2001 From: Connor Gray Date: Tue, 17 Dec 2024 18:15:20 -0600 Subject: [PATCH 116/509] [stdlib] polish: Change `ExplicitlyCopyable` to require `T.copy()` instead of `T(other=self)` This is intended to improve readability "at a glance", making it clearer to readers where copies happen. There is a meaningful advantage to having a consistent, greppable "copy" keyword appear each place a copy is done. Seeing `Foo(value)` means a wider level of context is needed to know if a deep copy is being done vs "mere" object construction. In comparison, `value.copy()` is immediately clear and stands out, particularly in performance sensitive code. MODULAR_ORIG_COMMIT_REV_ID: 8fabcf2392e36b662751bf188cc160bd12deec74 --- docs/changelog.md | 9 +++++ stdlib/src/builtin/bool.mojo | 8 ++--- stdlib/src/builtin/builtin_slice.mojo | 9 ++--- stdlib/src/builtin/dtype.mojo | 8 ++--- stdlib/src/builtin/error.mojo | 8 ++--- stdlib/src/builtin/int.mojo | 9 ++--- stdlib/src/builtin/none.mojo | 8 ++--- stdlib/src/builtin/object.mojo | 34 ++++++------------- stdlib/src/builtin/simd.mojo | 10 ++++++ stdlib/src/builtin/string_literal.mojo | 8 ++--- stdlib/src/builtin/value.mojo | 19 ++++------- stdlib/src/collections/counter.mojo | 10 +++--- stdlib/src/collections/deque.mojo | 33 +++++++++--------- stdlib/src/collections/dict.mojo | 31 +++++++---------- stdlib/src/collections/inline_array.mojo | 16 +++++---- stdlib/src/collections/inline_list.mojo | 2 +- stdlib/src/collections/list.mojo | 19 ++++++----- stdlib/src/collections/optional.mojo | 14 +++++--- stdlib/src/collections/string.mojo | 8 ++--- stdlib/src/collections/vector.mojo | 27 ++++++++------- stdlib/src/memory/arc.mojo | 9 +++-- stdlib/src/memory/maybe_uninitialized.mojo | 12 ++++--- stdlib/src/memory/pointer.mojo | 8 ++--- stdlib/src/memory/span.mojo | 9 +++-- stdlib/src/memory/unsafe_pointer.mojo | 10 +++--- stdlib/src/pathlib/path.mojo | 8 ++--- stdlib/src/python/python_object.mojo | 8 ++--- stdlib/src/sys/ffi.mojo | 13 ++++--- stdlib/src/utils/format.mojo | 14 ++------ stdlib/src/utils/inline_string.mojo | 18 ++++------ stdlib/src/utils/string_slice.mojo | 8 ++--- stdlib/src/utils/stringref.mojo | 9 +++-- stdlib/src/utils/variant.mojo | 16 ++++----- stdlib/test/builtin/test_sort.mojo | 2 +- stdlib/test/collections/test_counter.mojo | 2 +- stdlib/test/collections/test_deque.mojo | 4 +-- stdlib/test/collections/test_dict.mojo | 8 ++--- .../test/collections/test_inline_array.mojo | 2 +- stdlib/test/collections/test_list.mojo | 8 ++--- stdlib/test/collections/test_optional.mojo | 2 +- stdlib/test/memory/test_arc.mojo | 6 ++-- stdlib/test/memory/test_reference.mojo | 2 +- stdlib/test/test_utils/types.mojo | 19 ++++++++--- stdlib/test/utils/test_variant.mojo | 2 +- 44 files changed, 250 insertions(+), 239 deletions(-) diff --git a/docs/changelog.md b/docs/changelog.md index 15a2b2a1e0..9071af42a6 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -62,6 +62,15 @@ what we publish. var ptr2 = list2.unsafe_ptr() ``` +- The `ExplicitlyCopyable` trait has changed to require a + `fn copy(self) -> Self` method. Previously, an initializer with the signature + `fn __init__(out self, *, other: Self)` had been required by + `ExplicitlyCopyable`. + + This improves the "greppability" and at-a-glance readability when a programmer + is looking for places in their code that may be performing copies + unnecessarily. + ### Tooling changes - mblack (aka `mojo format`) no longer formats non-mojo files. This prevents diff --git a/stdlib/src/builtin/bool.mojo b/stdlib/src/builtin/bool.mojo index e48f1c9f5a..6c953bb0b5 100644 --- a/stdlib/src/builtin/bool.mojo +++ b/stdlib/src/builtin/bool.mojo @@ -121,13 +121,13 @@ struct Bool( self = False @always_inline("nodebug") - fn __init__(out self, *, other: Self): + fn copy(self) -> Self: """Explicitly construct a deep copy of the provided value. - Args: - other: The value to copy. + Returns: + A copy of the value. """ - self.value = other.value + return self @doc_private @always_inline("nodebug") diff --git a/stdlib/src/builtin/builtin_slice.mojo b/stdlib/src/builtin/builtin_slice.mojo index b663b9350e..094db42e69 100644 --- a/stdlib/src/builtin/builtin_slice.mojo +++ b/stdlib/src/builtin/builtin_slice.mojo @@ -82,13 +82,13 @@ struct Slice( self.end = end self.step = step - fn __init__(out self, *, other: Self): + fn copy(self) -> Self: """Creates a deep copy of the Slice. - Args: - other: The slice to copy. + Returns: + A copy of the value. """ - self = Self(start=other.start, end=other.end, step=other.step) + return self # ===-------------------------------------------------------------------===# # Trait implementations @@ -206,6 +206,7 @@ struct Slice( var start = self.start var end = self.end + var positive_step = step > 0 if not start: diff --git a/stdlib/src/builtin/dtype.mojo b/stdlib/src/builtin/dtype.mojo index b8a7dff5d6..48bfffaafd 100644 --- a/stdlib/src/builtin/dtype.mojo +++ b/stdlib/src/builtin/dtype.mojo @@ -147,13 +147,13 @@ struct DType( on the system.""" @always_inline - fn __init__(out self, *, other: Self): + fn copy(self) -> Self: """Copy this DType. - Args: - other: The DType to copy. + Returns: + A copy of the value. """ - self = other + return self @always_inline @implicit diff --git a/stdlib/src/builtin/error.mojo b/stdlib/src/builtin/error.mojo index e282d56ba0..1ddae435ff 100644 --- a/stdlib/src/builtin/error.mojo +++ b/stdlib/src/builtin/error.mojo @@ -111,13 +111,13 @@ struct Error( self.data = dest self.loaded_length = -length - fn __init__(out self, *, other: Self): + fn copy(self) -> Self: """Copy the object. - Args: - other: The value to copy. + Returns: + A copy of the value. """ - self = other + return self fn __del__(owned self): """Releases memory if allocated.""" diff --git a/stdlib/src/builtin/int.mojo b/stdlib/src/builtin/int.mojo index 92cb98be75..c0da32d8c5 100644 --- a/stdlib/src/builtin/int.mojo +++ b/stdlib/src/builtin/int.mojo @@ -307,6 +307,7 @@ struct Int( Roundable, IntLike, _HashableWithHasher, + ExplicitlyCopyable, ): """This type represents an integer value.""" @@ -329,13 +330,13 @@ struct Int( """Default constructor that produces zero.""" self.value = __mlir_op.`index.constant`[value = __mlir_attr.`0:index`]() - fn __init__(out self, *, other: Self): + fn copy(self) -> Self: """Explicitly copy the provided value. - Args: - other: The value to copy. + Returns: + A copy of the value. """ - self = other + return self @doc_private @always_inline("nodebug") diff --git a/stdlib/src/builtin/none.mojo b/stdlib/src/builtin/none.mojo index 2e5dc6ef35..c50322306c 100644 --- a/stdlib/src/builtin/none.mojo +++ b/stdlib/src/builtin/none.mojo @@ -48,13 +48,13 @@ struct NoneType( self._value = value @always_inline - fn __init__(out self, *, other: Self): + fn copy(self) -> Self: """Explicit copy constructor. - Args: - other: Another `NoneType` instance to copy. + Returns: + A copy of the value. """ - self._value = None + return Self(None) @no_inline fn __str__(self) -> String: diff --git a/stdlib/src/builtin/object.mojo b/stdlib/src/builtin/object.mojo index c2337934a1..0165d05249 100644 --- a/stdlib/src/builtin/object.mojo +++ b/stdlib/src/builtin/object.mojo @@ -32,8 +32,8 @@ from utils import StringRef, Variant struct _NoneMarker(CollectionElementNew): """This is a trivial class to indicate that an object is `None`.""" - fn __init__(out self, *, other: Self): - pass + fn copy(self) -> Self: + return _NoneMarker {} @register_passable("trivial") @@ -55,8 +55,8 @@ struct _ImmutableString(CollectionElement, CollectionElementNew): self.length = length @always_inline - fn __init__(out self, *, other: Self): - self = other + fn copy(self) -> Self: + return self @always_inline fn string_compare(self, rhs: _ImmutableString) -> Int: @@ -94,10 +94,6 @@ struct _RefCountedListRef(CollectionElement, CollectionElementNew): __get_address_as_uninit_lvalue(ptr.address) = _RefCountedList() self.lst = ptr.bitcast[NoneType]() - @always_inline - fn __init__(out self, *, other: Self): - self.lst = other.lst - @always_inline fn copy(self) -> Self: _ = self.lst.bitcast[_RefCountedList]()[].impl @@ -188,10 +184,6 @@ struct _RefCountedAttrsDictRef(CollectionElement, CollectionElementNew): self.attrs = ptr.bitcast[Int8]() - @always_inline - fn __init__(out self, *, other: Self): - self = other - @always_inline fn copy(self) -> Self: _ = self.attrs.bitcast[_RefCountedAttrsDict]()[].impl @@ -217,8 +209,8 @@ struct _Function(CollectionElement, CollectionElementNew): self.value = f @always_inline - fn __init__(out self, *, other: Self): - self.value = other.value + fn copy(self) -> Self: + return self alias fn0 = fn () raises -> object """Nullary function type.""" @@ -348,15 +340,6 @@ struct _ObjectImpl( fn __init__(out self, value: _RefCountedAttrsDictRef): self.value = Self.type(value) - @always_inline - fn __init__(out self, *, other: Self): - """Copy the object. - - Args: - other: The value to copy. - """ - self = other.value - @always_inline fn __copyinit__(out self, existing: Self): self = existing.value @@ -367,6 +350,11 @@ struct _ObjectImpl( @always_inline fn copy(self) -> Self: + """Copy the object. + + Returns: + A copy of the value. + """ if self.is_str(): var str = self.get_as_string() var impl = _ImmutableString( diff --git a/stdlib/src/builtin/simd.mojo b/stdlib/src/builtin/simd.mojo index 0f2508229e..7ac510fd42 100644 --- a/stdlib/src/builtin/simd.mojo +++ b/stdlib/src/builtin/simd.mojo @@ -238,6 +238,7 @@ struct SIMD[type: DType, size: Int]( CollectionElement, # FIXME(MOCO-1291): Can't implement this due to ambiguity. # CollectionElementNew, + ExplicitlyCopyable, Floatable, Floorable, Writable, @@ -306,6 +307,15 @@ struct SIMD[type: DType, size: Int]( # """ # self = other + @always_inline + fn copy(self) -> Self: + """Explicitly construct a deep copy of the provided value. + + Returns: + A copy of the value. + """ + return self + @always_inline("nodebug") @implicit fn __init__(out self, value: UInt): diff --git a/stdlib/src/builtin/string_literal.mojo b/stdlib/src/builtin/string_literal.mojo index 581e21de5e..406a39dbda 100644 --- a/stdlib/src/builtin/string_literal.mojo +++ b/stdlib/src/builtin/string_literal.mojo @@ -75,13 +75,13 @@ struct StringLiteral( self.value = value @always_inline("nodebug") - fn __init__(out self, *, other: Self): + fn copy(self) -> Self: """Copy constructor. - Args: - other: The string literal to copy. + Returns: + A copy of the value. """ - self = other + return self # TODO(MOCO-1460): This should be: fn __init__[*, value: String](out self): # but Mojo tries to bind the parameter in `StringLiteral["foo"]()` to the diff --git a/stdlib/src/builtin/value.mojo b/stdlib/src/builtin/value.mojo index 3dc291c522..af565bc129 100644 --- a/stdlib/src/builtin/value.mojo +++ b/stdlib/src/builtin/value.mojo @@ -112,7 +112,7 @@ trait ExplicitlyCopyable: a `read-only` argument of `Self`. Example implementing the `ExplicitlyCopyable` trait on `Foo` which requires - the `__init__(.., Self)` method: + the `fn(self) -> Self` method: ```mojo struct Foo(ExplicitlyCopyable): @@ -122,17 +122,16 @@ trait ExplicitlyCopyable: fn __init__(out self, s: String): self.s = s - @implicit - fn __init__(out self, copy: Self): + fn copy(self) -> Self: print("explicitly copying value") - self.s = copy.s + return Foo(self.s) ``` You can now copy objects inside a generic function: ```mojo fn copy_return[T: ExplicitlyCopyable](foo: T) -> T: - var copy = T(foo) + var copy = foo.copy() return copy var foo = Foo("test") @@ -144,15 +143,11 @@ trait ExplicitlyCopyable: ``` """ - # Note: - # `other` is a required named argument for the time being to minimize - # implicit conversion overload ambiguity errors, particularly - # with SIMD and Int. - fn __init__(out self, *, other: Self): + fn copy(self) -> Self: """Explicitly construct a deep copy of the provided value. - Args: - other: The value to copy. + Returns: + A copy of the value. """ ... diff --git a/stdlib/src/collections/counter.mojo b/stdlib/src/collections/counter.mojo index 55baedf606..5992cf585f 100644 --- a/stdlib/src/collections/counter.mojo +++ b/stdlib/src/collections/counter.mojo @@ -70,13 +70,13 @@ struct Counter[V: KeyElement](Sized, CollectionElement, Boolable): self._data[item] = self._data.get(item, 0) + 1 @always_inline - fn __init__(out self, *, other: Self): + fn copy(self) -> Self: """Create a new Counter by copying another Counter. - Args: - other: The Counter to copy. + Returns: + A copy of the value. """ - self._data = Dict[V, Int](other=other._data) + return Self(self._data.copy()) @staticmethod fn fromkeys(keys: List[V, *_], value: Int) -> Self: @@ -295,7 +295,7 @@ struct Counter[V: KeyElement](Sized, CollectionElement, Boolable): A new Counter with the counts from the other Counter subtracted from this Counter. """ - var result = Counter[V](other=self) + var result = self.copy() result.subtract(other) diff --git a/stdlib/src/collections/deque.mojo b/stdlib/src/collections/deque.mojo index e8c1138071..0fb93ea179 100644 --- a/stdlib/src/collections/deque.mojo +++ b/stdlib/src/collections/deque.mojo @@ -168,24 +168,25 @@ struct Deque[ElementType: CollectionElement]( self._tail = args_length - @implicit - fn __init__(out self, other: Self): + fn copy(self) -> Self: """Creates a deepcopy of the given deque. - Args: - other: The deque to copy. + Returns: + A copy of the value. """ - self = Self( - capacity=other._capacity, - min_capacity=other._min_capacity, - maxlen=other._maxlen, - shrink=other._shrink, + var copy = Self( + capacity=self._capacity, + min_capacity=self._min_capacity, + maxlen=self._maxlen, + shrink=self._shrink, ) - for i in range(len(other)): - offset = other._physical_index(other._head + i) - (self._data + i).init_pointee_copy((other._data + offset)[]) + for i in range(len(self)): + offset = self._physical_index(self._head + i) + (copy._data + i).init_pointee_copy((self._data + offset)[]) + + copy._tail = len(self) - self._tail = len(other) + return copy^ fn __moveinit__(out self, owned existing: Self): """Moves data of an existing deque into a new one. @@ -221,7 +222,7 @@ struct Deque[ElementType: CollectionElement]( Returns: The newly created deque with the properties of `self`. """ - new = Self(other=self) + new = self.copy() for element in other: new.append(element[]) return new^ @@ -251,7 +252,7 @@ struct Deque[ElementType: CollectionElement]( maxlen=self._maxlen, shrink=self._shrink, ) - new = Self(other=self) + new = self.copy() for _ in range(n - 1): for element in self: new.append(element[]) @@ -267,7 +268,7 @@ struct Deque[ElementType: CollectionElement]( self.clear() return - orig = Self(other=self) + orig = self.copy() for _ in range(n - 1): for element in orig: self.append(element[]) diff --git a/stdlib/src/collections/dict.mojo b/stdlib/src/collections/dict.mojo index 3a2634814c..214cc78d3f 100644 --- a/stdlib/src/collections/dict.mojo +++ b/stdlib/src/collections/dict.mojo @@ -234,15 +234,13 @@ struct DictEntry[K: KeyElement, V: CollectionElement]( self.key = key^ self.value = value^ - fn __init__(out self, *, other: Self): + fn copy(self) -> Self: """Copy an existing entry. - Args: - other: The existing entry to copy. + Returns: + A copy of the value. """ - self.hash = other.hash - self.key = other.key - self.value = other.value + return self fn reap_value(owned self) -> V as out: """Take the value from an owned entry. @@ -517,16 +515,13 @@ struct Dict[K: KeyElement, V: CollectionElement]( return len(self._entries) @always_inline - fn __init__(out self, *, other: Self): + fn copy(self) -> Self: """Copy an existing dictiontary. - Args: - other: The existing dict. + Returns: + A copy of the value. """ - self.size = other.size - self._n_entries = other._n_entries - self._index = other._index.copy(other._reserved()) - self._entries = other._entries + return self @staticmethod fn fromkeys(keys: List[K, *_], value: V) -> Self: @@ -648,7 +643,7 @@ struct Dict[K: KeyElement, V: CollectionElement]( Returns: The result of the merge. """ - var result = Dict(other=self) + var result = self.copy() result.update(other) return result^ @@ -1087,13 +1082,13 @@ struct OwnedKwargsDict[V: CollectionElement]( """Initialize an empty keyword dictionary.""" self._dict = Dict[Self.key_type, V]() - fn __init__(out self, *, other: Self): + fn copy(self) -> Self: """Copy an existing keyword dictionary. - Args: - other: The existing keyword dictionary. + Returns: + A copy of the value. """ - self._dict = other._dict + return self fn __copyinit__(out self, existing: Self): """Copy an existing keyword dictionary. diff --git a/stdlib/src/collections/inline_array.mojo b/stdlib/src/collections/inline_array.mojo index 6901ed1327..502104561c 100644 --- a/stdlib/src/collections/inline_array.mojo +++ b/stdlib/src/collections/inline_array.mojo @@ -199,18 +199,20 @@ struct InlineArray[ __get_mvalue_as_litref(storage) ) - fn __init__(out self, *, other: Self): + fn copy(self) -> Self: """Explicitly copy the provided value. - Args: - other: The value to copy. + Returns: + A copy of the value. """ - self = Self(unsafe_uninitialized=True) + var copy = Self(unsafe_uninitialized=True) for idx in range(size): - var ptr = self.unsafe_ptr() + idx - ptr.init_pointee_copy(other[idx]) + var ptr = copy.unsafe_ptr() + idx + ptr.init_pointee_copy(self[idx]) + + return copy^ fn __copyinit__(out self, other: Self): """Copy construct the array. @@ -219,7 +221,7 @@ struct InlineArray[ other: The array to copy. """ - self = Self(other=other) + self = other.copy() fn __del__(owned self): """Deallocate the array.""" diff --git a/stdlib/src/collections/inline_list.mojo b/stdlib/src/collections/inline_list.mojo index f98e307940..798f71d5f8 100644 --- a/stdlib/src/collections/inline_list.mojo +++ b/stdlib/src/collections/inline_list.mojo @@ -120,7 +120,7 @@ struct InlineList[ElementType: CollectionElementNew, capacity: Int = 16](Sized): debug_assert(len(values) <= capacity, "List is full.") self = Self() for value in values: - self.append(ElementType(other=value[])) + self.append(value[].copy()) @always_inline fn __del__(owned self): diff --git a/stdlib/src/collections/list.mojo b/stdlib/src/collections/list.mojo index f0bc3d0c6a..5732bc8da5 100644 --- a/stdlib/src/collections/list.mojo +++ b/stdlib/src/collections/list.mojo @@ -114,15 +114,16 @@ struct List[T: CollectionElement, hint_trivial_type: Bool = False]( self.size = 0 self.capacity = 0 - fn __init__(out self, *, other: Self): + fn copy(self) -> Self: """Creates a deep copy of the given list. - Args: - other: The list to copy. + Returns: + A copy of the value. """ - self = Self(capacity=other.capacity) - for e in other: - self.append(e[]) + var copy = Self(capacity=self.capacity) + for e in self: + copy.append(e[]) + return copy^ fn __init__(out self, *, capacity: Int): """Constructs a list with the given capacity. @@ -316,7 +317,7 @@ struct List[T: CollectionElement, hint_trivial_type: Bool = False]( # avoid the copy since it would be cleared immediately anyways if x == 0: return Self() - var result = List(other=self) + var result = self.copy() result.__mul(x) return result^ @@ -337,7 +338,7 @@ struct List[T: CollectionElement, hint_trivial_type: Bool = False]( Returns: The newly created list. """ - var result = List(other=self) + var result = self.copy() result.extend(other^) return result^ @@ -545,7 +546,7 @@ struct List[T: CollectionElement, hint_trivial_type: Bool = False]( if x == 0: self.clear() return - var orig = List(other=self) + var orig = self.copy() self.reserve(len(self) * x) for i in range(x - 1): self.extend(orig) diff --git a/stdlib/src/collections/optional.mojo b/stdlib/src/collections/optional.mojo index 0e318980e9..5d7eb7853a 100644 --- a/stdlib/src/collections/optional.mojo +++ b/stdlib/src/collections/optional.mojo @@ -42,6 +42,12 @@ struct _NoneType(CollectionElement, CollectionElementNew): fn __init__(out self, *, other: Self): pass + fn __copyinit__(out self, other: Self): + pass + + fn copy(self) -> Self: + return _NoneType() + # ===-----------------------------------------------------------------------===# # Optional @@ -124,13 +130,13 @@ struct Optional[T: CollectionElement]( """ self = Self() - fn __init__(out self, *, other: Self): + fn copy(self) -> Self: """Copy construct an Optional. - Args: - other: The Optional to copy. + Returns: + A copy of the value. """ - self = other + return self # ===-------------------------------------------------------------------===# # Operator dunders diff --git a/stdlib/src/collections/string.mojo b/stdlib/src/collections/string.mojo index b8073bd83d..4e5438303c 100644 --- a/stdlib/src/collections/string.mojo +++ b/stdlib/src/collections/string.mojo @@ -861,13 +861,13 @@ struct String( """ self._buffer = Self._buffer_type(capacity=capacity) - fn __init__(out self, *, other: Self): + fn copy(self) -> Self: """Explicitly copy the provided value. - Args: - other: The value to copy. + Returns: + A copy of the value. """ - self = other # Just use the implicit copyinit. + return self # Just use the implicit copyinit. @implicit fn __init__(out self, str: StringRef): diff --git a/stdlib/src/collections/vector.mojo b/stdlib/src/collections/vector.mojo index 62196e6a15..556c343ea2 100644 --- a/stdlib/src/collections/vector.mojo +++ b/stdlib/src/collections/vector.mojo @@ -132,23 +132,26 @@ struct InlinedFixedVector[ self.capacity = capacity @always_inline - @implicit - fn __init__(out self, existing: Self): + fn copy(self) -> Self: """ Copy constructor. - Args: - existing: The `InlinedFixedVector` to copy. + Returns: + A copy of the value. """ - self.static_data = existing.static_data - self.dynamic_data = UnsafePointer[type]() - if existing.dynamic_data: - var ext_len = existing.capacity - size - self.dynamic_data = UnsafePointer[type].alloc(ext_len) - memcpy(self.dynamic_data, existing.dynamic_data, ext_len) + var copy = Self(capacity=self.capacity) - self.current_size = existing.current_size - self.capacity = existing.capacity + copy.static_data = self.static_data + copy.dynamic_data = UnsafePointer[type]() + if self.dynamic_data: + var ext_len = self.capacity - size + copy.dynamic_data = UnsafePointer[type].alloc(ext_len) + memcpy(copy.dynamic_data, self.dynamic_data, ext_len) + + copy.current_size = self.current_size + copy.capacity = self.capacity + + return copy^ @always_inline fn __moveinit__(out self, owned existing: Self): diff --git a/stdlib/src/memory/arc.mojo b/stdlib/src/memory/arc.mojo index 8680d06560..6178892617 100644 --- a/stdlib/src/memory/arc.mojo +++ b/stdlib/src/memory/arc.mojo @@ -104,14 +104,13 @@ struct ArcPointer[T: Movable]( value^ ) - fn __init__(out self, *, other: Self): + fn copy(self) -> Self: """Copy the object. - Args: - other: The value to copy. + Returns: + A copy of the value. """ - other._inner[].add_ref() - self._inner = other._inner + return self fn __copyinit__(out self, existing: Self): """Copy an existing reference. Increment the refcount to the object. diff --git a/stdlib/src/memory/maybe_uninitialized.mojo b/stdlib/src/memory/maybe_uninitialized.mojo index 8d224bdd88..53eeb8404e 100644 --- a/stdlib/src/memory/maybe_uninitialized.mojo +++ b/stdlib/src/memory/maybe_uninitialized.mojo @@ -43,20 +43,22 @@ struct UnsafeMaybeUninitialized[ElementType: AnyType](CollectionElementNew): @doc_private @always_inline - fn __init__(out self, *, other: Self): - """It is not possible to call this method. + fn copy(self) -> Self: + """This method is not intended to be called. Trying to call this method will abort. + + Returns: + Nothing, this method always aborts. """ - abort( - "You should never call the explicit copy constructor of" + return abort[Self]( + "You should never call the copy() method of" " UnsafeMaybeUninitialized because it's ambiguous to copy" " possibly uninitialized memory. Use" " `UnsafeMaybeUninitialized.copy_from()` instead if you want to" " trigger an explicit copy of the content of" " UnsafeMaybeUninitialized. It has very specific semantics." ) - self = Self() @always_inline fn __init__[ diff --git a/stdlib/src/memory/pointer.mojo b/stdlib/src/memory/pointer.mojo index dca95022cc..2d1f5fce52 100644 --- a/stdlib/src/memory/pointer.mojo +++ b/stdlib/src/memory/pointer.mojo @@ -355,15 +355,15 @@ struct Pointer[ """ return Pointer(_mlir_value=__get_mvalue_as_litref(value)) - fn __init__(out self, *, other: Self): + fn copy(self) -> Self: """Constructs a copy from another Pointer. Note that this does **not** copy the underlying data. - Args: - other: The `Pointer` to copy. + Returns: + A copy of the value. """ - self._value = other._value + return Self(_mlir_value=self._value) # ===------------------------------------------------------------------===# # Operator dunders diff --git a/stdlib/src/memory/span.mojo b/stdlib/src/memory/span.mojo index 2a0c2d020b..5d5b780322 100644 --- a/stdlib/src/memory/span.mojo +++ b/stdlib/src/memory/span.mojo @@ -127,14 +127,13 @@ struct Span[ self._len = length @always_inline - fn __init__(out self, *, other: Self): + fn copy(self) -> Self: """Explicitly construct a copy of the provided `Span`. - Args: - other: The `Span` to copy. + Returns: + A copy of the `Span`. """ - self._data = other._data - self._len = other._len + return self @always_inline @implicit diff --git a/stdlib/src/memory/unsafe_pointer.mojo b/stdlib/src/memory/unsafe_pointer.mojo index f23ed25618..60e0762d3c 100644 --- a/stdlib/src/memory/unsafe_pointer.mojo +++ b/stdlib/src/memory/unsafe_pointer.mojo @@ -142,13 +142,13 @@ struct UnsafePointer[ ) @always_inline - fn __init__(out self, *, other: Self): + fn copy(self) -> Self: """Copy an existing pointer. - Args: - other: The value to copy. + Returns: + A copy of the value. """ - self.address = other.address + return UnsafePointer(self.address) # ===-------------------------------------------------------------------===# # Factory methods @@ -1121,7 +1121,7 @@ struct UnsafePointer[ value: The value to emplace. """ constrained[mut, _must_be_mut_err]() - __get_address_as_uninit_lvalue(self.address) = T(other=value) + __get_address_as_uninit_lvalue(self.address) = value.copy() @always_inline fn move_pointee_into[ diff --git a/stdlib/src/pathlib/path.mojo b/stdlib/src/pathlib/path.mojo index 5a0f285db1..b81c184e06 100644 --- a/stdlib/src/pathlib/path.mojo +++ b/stdlib/src/pathlib/path.mojo @@ -92,13 +92,13 @@ struct Path( """ self.path = path - fn __init__(out self, *, other: Self): + fn copy(self) -> Self: """Copy the object. - Args: - other: The value to copy. + Returns: + A copy of the value. """ - self.path = String(other=other.path) + return Self(self.path) fn __truediv__(self, suffix: Self) -> Self: """Joins two paths using the system-defined path separator. diff --git a/stdlib/src/python/python_object.mojo b/stdlib/src/python/python_object.mojo index 5fb1847f8f..caeb85a53b 100644 --- a/stdlib/src/python/python_object.mojo +++ b/stdlib/src/python/python_object.mojo @@ -254,13 +254,13 @@ struct PythonObject( """Initialize the object with a `None` value.""" self = Self(None) - fn __init__(out self, *, other: Self): + fn copy(self) -> Self: """Copy the object. - Args: - other: The value to copy. + Returns: + A copy of the value. """ - self = other + return self @implicit fn __init__(out self, ptr: PyObjectPtr): diff --git a/stdlib/src/sys/ffi.mojo b/stdlib/src/sys/ffi.mojo index 2d6926568d..1c3299a196 100644 --- a/stdlib/src/sys/ffi.mojo +++ b/stdlib/src/sys/ffi.mojo @@ -145,13 +145,13 @@ struct DLHandle(CollectionElement, CollectionElementNew, Boolable): else: self.handle = OpaquePointer() - fn __init__(out self, *, other: Self): + fn copy(self) -> Self: """Copy the object. - Args: - other: The value to copy. + Returns: + A copy of the value. """ - self = other + return self fn check_symbol(self, name: String) -> Bool: """Check that the symbol exists in the dynamic library. @@ -451,7 +451,10 @@ fn _get_global[ destroy_fn: fn (OpaquePointer) -> None, ](payload: OpaquePointer = OpaquePointer()) -> OpaquePointer: return external_call["KGEN_CompilerRT_GetGlobalOrCreate", OpaquePointer]( - StringRef(name), payload, init_fn, destroy_fn + StringRef(name), + payload, + init_fn, + destroy_fn, ) diff --git a/stdlib/src/utils/format.mojo b/stdlib/src/utils/format.mojo index 752a34898d..59d1885c58 100644 --- a/stdlib/src/utils/format.mojo +++ b/stdlib/src/utils/format.mojo @@ -65,17 +65,9 @@ struct _FormatCurlyEntry(CollectionElement, CollectionElementNew): alias _args_t = VariadicPack[element_trait=_CurlyEntryFormattable, *_] """Args types that are formattable by curly entry.""" - fn __init__(out self, *, other: Self): - """Construct a format entry by copying another. - - Args: - other: The other format entry. - """ - self.first_curly = other.first_curly - self.last_curly = other.last_curly - self.conversion_flag = other.conversion_flag - self.field = Self._FieldVariantType(other=other.field) - self.format_spec = other.format_spec + fn copy(self) -> Self: + """Construct a format entry by copying another.""" + return self fn __init__( mut self, diff --git a/stdlib/src/utils/inline_string.mojo b/stdlib/src/utils/inline_string.mojo index 7ddb0df082..5fb4687089 100644 --- a/stdlib/src/utils/inline_string.mojo +++ b/stdlib/src/utils/inline_string.mojo @@ -91,13 +91,13 @@ struct InlineString(Sized, Stringable, CollectionElement, CollectionElementNew): """ self._storage = Self.Layout(heap_string^) - fn __init__(out self, *, other: Self): + fn copy(self) -> Self: """Copy the object. - Args: - other: The value to copy. + Returns: + A copy of the value. """ - self = other + return self # ===------------------------------------------------------------------=== # # Operator dunders @@ -333,13 +333,9 @@ struct _FixedString[CAP: Int]( self.buffer = InlineArray[UInt8, CAP](unsafe_uninitialized=True) self.size = 0 - fn __init__(out self, *, other: Self): - """Copy the object. - - Args: - other: The value to copy. - """ - self = other + fn copy(self) -> Self: + """Copy the object.""" + return self fn __init__(out self, literal: StringLiteral) raises: """Constructs a FixedString value given a string literal. diff --git a/stdlib/src/utils/string_slice.mojo b/stdlib/src/utils/string_slice.mojo index 9dc3cd00d5..d50447ab10 100644 --- a/stdlib/src/utils/string_slice.mojo +++ b/stdlib/src/utils/string_slice.mojo @@ -334,13 +334,13 @@ struct StringSlice[mut: Bool, //, origin: Origin[mut]]( self._slice = Span[Byte, origin](ptr=ptr, length=length) @always_inline - fn __init__(out self, *, other: Self): + fn copy(self) -> Self: """Explicitly construct a deep copy of the provided `StringSlice`. - Args: - other: The `StringSlice` to copy. + Returns: + A copy of the value. """ - self._slice = other._slice + return Self(unsafe_from_utf8=self._slice) @implicit fn __init__[ diff --git a/stdlib/src/utils/stringref.mojo b/stdlib/src/utils/stringref.mojo index 4e92e96848..0699acc424 100644 --- a/stdlib/src/utils/stringref.mojo +++ b/stdlib/src/utils/stringref.mojo @@ -77,14 +77,13 @@ struct StringRef( self = StringRef(UnsafePointer[UInt8](), 0) @always_inline - fn __init__(out self, *, other: Self): + fn copy(self) -> Self: """Copy the object. - Args: - other: The value to copy. + Returns: + A copy of the value. """ - self.data = other.data - self.length = other.length + return StringRef(self.data, self.length) @always_inline @implicit diff --git a/stdlib/src/utils/variant.mojo b/stdlib/src/utils/variant.mojo index 6936a3a003..8efd3ff63c 100644 --- a/stdlib/src/utils/variant.mojo +++ b/stdlib/src/utils/variant.mojo @@ -139,20 +139,20 @@ struct Variant[*Ts: CollectionElement]( self._get_discr() = idx self._get_ptr[T]().init_pointee_move(value^) - fn __init__(out self, *, other: Self): + fn copy(self, out copy: Self): """Explicitly creates a deep copy of an existing variant. - Args: - other: The value to copy from. + Returns: + A copy of the value. """ - self = Self(unsafe_uninitialized=()) - self._get_discr() = other._get_discr() + copy = Self(unsafe_uninitialized=()) + copy._get_discr() = self._get_discr() @parameter for i in range(len(VariadicList(Ts))): alias T = Ts[i] - if self._get_discr() == i: - self._get_ptr[T]().init_pointee_move(other._get_ptr[T]()[]) + if copy._get_discr() == i: + copy._get_ptr[T]().init_pointee_move(self._get_ptr[T]()[]) return fn __copyinit__(out self, other: Self): @@ -163,7 +163,7 @@ struct Variant[*Ts: CollectionElement]( """ # Delegate to explicit copy initializer. - self = Self(other=other) + self = other.copy() fn __moveinit__(out self, owned other: Self): """Move initializer for the variant. diff --git a/stdlib/test/builtin/test_sort.mojo b/stdlib/test/builtin/test_sort.mojo index 3c98be083f..de1a34e151 100644 --- a/stdlib/test/builtin/test_sort.mojo +++ b/stdlib/test/builtin/test_sort.mojo @@ -551,7 +551,7 @@ struct Person(ComparableCollectionElement): var age: Int fn __init__(out self, *, other: Self): - self.name = String(other=other.name) + self.name = other.name.copy() self.age = other.age fn __lt__(self, other: Self) -> Bool: diff --git a/stdlib/test/collections/test_counter.mojo b/stdlib/test/collections/test_counter.mojo index 27f5f3b9e6..a7c7b3e772 100644 --- a/stdlib/test/collections/test_counter.mojo +++ b/stdlib/test/collections/test_counter.mojo @@ -75,7 +75,7 @@ def test_copy(): c["a"] = 1 c["b"] = 2 - var copy = Counter[String](other=c) + var copy = c.copy() assert_equal(copy["a"], 1) assert_equal(copy["b"], 2) diff --git a/stdlib/test/collections/test_deque.mojo b/stdlib/test/collections/test_deque.mojo index fd2db54440..a5fdc772f9 100644 --- a/stdlib/test/collections/test_deque.mojo +++ b/stdlib/test/collections/test_deque.mojo @@ -690,7 +690,7 @@ fn test_init_variadic_list() raises: fn test_copy_trivial() raises: q = Deque(1, 2, 3) - p = Deque(q) + p = q.copy() assert_equal(p[0], q[0]) p[0] = 3 @@ -709,7 +709,7 @@ fn test_copy_list() raises: lst1[0] = 7 assert_equal(q[0], List(1, 2, 3)) - p = Deque(q) + p = q.copy() assert_equal(p[0], q[0]) p[0][0] = 7 diff --git a/stdlib/test/collections/test_dict.mojo b/stdlib/test/collections/test_dict.mojo index 4f8b1e965c..030b16a6a3 100644 --- a/stdlib/test/collections/test_dict.mojo +++ b/stdlib/test/collections/test_dict.mojo @@ -238,7 +238,7 @@ def test_dict_copy(): orig["a"] = 1 # test values copied to new Dict - var copy = Dict(other=orig) + var copy = orig.copy() assert_equal(1, copy["a"]) # test there are two copies of dict and @@ -253,7 +253,7 @@ def test_dict_copy_delete_original(): orig["a"] = 1 # test values copied to new Dict - var copy = Dict(other=orig) + var copy = orig.copy() # don't access the original dict, anymore, confirm that # deleting the original doesn't violate the integrity of the copy assert_equal(1, copy["a"]) @@ -264,7 +264,7 @@ def test_dict_copy_add_new_item(): orig["a"] = 1 # test values copied to new Dict - var copy = Dict(other=orig) + var copy = orig.copy() assert_equal(1, copy["a"]) # test there are two copies of dict and @@ -278,7 +278,7 @@ def test_dict_copy_calls_copy_constructor(): orig["a"] = CopyCounter() # test values copied to new Dict - var copy = Dict(other=orig) + var copy = orig.copy() assert_equal(0, orig["a"].copy_count) assert_equal(1, copy["a"].copy_count) assert_equal(0, orig._find_ref("a").copy_count) diff --git a/stdlib/test/collections/test_inline_array.mojo b/stdlib/test/collections/test_inline_array.mojo index 18a933c6be..29268017ba 100644 --- a/stdlib/test/collections/test_inline_array.mojo +++ b/stdlib/test/collections/test_inline_array.mojo @@ -175,7 +175,7 @@ def test_array_unsafe_assume_initialized_constructor_string(): assert_equal(initialized_arr2[2], "world") # trigger a copy - var initialized_arr3 = InlineArray(other=initialized_arr2) + var initialized_arr3 = initialized_arr2.copy() assert_equal(initialized_arr3[0], "hello") assert_equal(initialized_arr3[1], "mojo") diff --git a/stdlib/test/collections/test_list.mojo b/stdlib/test/collections/test_list.mojo index 56dab6510b..9f45d66f5a 100644 --- a/stdlib/test/collections/test_list.mojo +++ b/stdlib/test/collections/test_list.mojo @@ -531,7 +531,7 @@ def test_2d_dynamic_list(): def test_list_explicit_copy(): var list = List[CopyCounter]() list.append(CopyCounter()) - var list_copy = List(other=list) + var list_copy = list.copy() assert_equal(0, list[0].copy_count) assert_equal(1, list_copy[0].copy_count) @@ -539,7 +539,7 @@ def test_list_explicit_copy(): for i in range(10): l2.append(i) - var l2_copy = List(other=l2) + var l2_copy = l2.copy() assert_equal(len(l2), len(l2_copy)) for i in range(len(l2)): assert_equal(l2[i], l2_copy[i]) @@ -551,8 +551,8 @@ struct CopyCountedStruct(CollectionElement): var value: String fn __init__(out self, *, other: Self): - self.counter = CopyCounter(other=other.counter) - self.value = String(other=other.value) + self.counter = other.counter.copy() + self.value = other.value.copy() @implicit fn __init__(out self, value: String): diff --git a/stdlib/test/collections/test_optional.mojo b/stdlib/test/collections/test_optional.mojo index 70cca5de6f..d606a2b392 100644 --- a/stdlib/test/collections/test_optional.mojo +++ b/stdlib/test/collections/test_optional.mojo @@ -126,7 +126,7 @@ def test_optional_take_mutates(): def test_optional_explicit_copy(): var v1 = Optional[String](String("test")) - var v2 = Optional(other=v1) + var v2 = v1.copy() assert_equal(v1.value(), "test") assert_equal(v2.value(), "test") diff --git a/stdlib/test/memory/test_arc.mojo b/stdlib/test/memory/test_arc.mojo index 82b5342aea..83d0b4e4e4 100644 --- a/stdlib/test/memory/test_arc.mojo +++ b/stdlib/test/memory/test_arc.mojo @@ -54,12 +54,12 @@ def test_deleter_not_called_until_no_references(): def test_deleter_not_called_until_no_references_explicit_copy(): var deleted = False var p = ArcPointer(ObservableDel(UnsafePointer.address_of(deleted))) - var p2 = ArcPointer(other=p) + var p2 = p.copy() _ = p^ assert_false(deleted) var vec = List[ArcPointer[ObservableDel]]() - vec.append(ArcPointer(other=p2)^) + vec.append(p2.copy()) _ = p2^ assert_false(deleted) _ = vec^ @@ -68,7 +68,7 @@ def test_deleter_not_called_until_no_references_explicit_copy(): def test_count(): var a = ArcPointer(10) - var b = ArcPointer(other=a) + var b = a.copy() var c = a assert_equal(3, a.count()) _ = b^ diff --git a/stdlib/test/memory/test_reference.mojo b/stdlib/test/memory/test_reference.mojo index 44d448e791..6b84cbc900 100644 --- a/stdlib/test/memory/test_reference.mojo +++ b/stdlib/test/memory/test_reference.mojo @@ -18,7 +18,7 @@ def test_copy_reference_explicitly(): var a = List[Int](1, 2, 3) var b = Pointer.address_of(a) - var c = Pointer(other=b) + var c = b.copy() c[][0] = 4 assert_equal(a[0], 4) diff --git a/stdlib/test/test_utils/types.mojo b/stdlib/test/test_utils/types.mojo index 0e83d44dca..01870acebc 100644 --- a/stdlib/test/test_utils/types.mojo +++ b/stdlib/test/test_utils/types.mojo @@ -59,9 +59,9 @@ struct ExplicitCopyOnly(ExplicitlyCopyable): self.value = value self.copy_count = 0 - fn __init__(out self, *, other: Self): - self.value = other.value - self.copy_count = other.copy_count + 1 + fn copy(self, out copy: Self): + copy = Self(self.value) + copy.copy_count = self.copy_count + 1 # ===----------------------------------------------------------------------=== # @@ -105,6 +105,9 @@ struct CopyCounter(CollectionElement, ExplicitlyCopyable): fn __copyinit__(out self, existing: Self): self.copy_count = existing.copy_count + 1 + fn copy(self) -> Self: + return self + # ===----------------------------------------------------------------------=== # # MoveCounter @@ -135,7 +138,7 @@ struct MoveCounter[T: CollectionElementNew]( Args: other: The value to copy. """ - self.value = T(other=other.value) + self.value = other.value.copy() self.move_count = other.move_count fn __moveinit__(out self, owned existing: Self): @@ -146,9 +149,12 @@ struct MoveCounter[T: CollectionElementNew]( # CollectionElement at the moment. fn __copyinit__(out self, existing: Self): # print("ERROR: _MoveCounter copy constructor called unexpectedly!") - self.value = T(other=existing.value) + self.value = existing.value.copy() self.move_count = existing.move_count + fn copy(self) -> Self: + return self + # ===----------------------------------------------------------------------=== # # ValueDestructorRecorder @@ -167,6 +173,9 @@ struct ValueDestructorRecorder(ExplicitlyCopyable): fn __del__(owned self): self.destructor_counter[].append(self.value) + fn copy(self) -> Self: + return self + # ===----------------------------------------------------------------------=== # # ObservableDel diff --git a/stdlib/test/utils/test_variant.mojo b/stdlib/test/utils/test_variant.mojo index f07b3aa099..99dae52a54 100644 --- a/stdlib/test/utils/test_variant.mojo +++ b/stdlib/test/utils/test_variant.mojo @@ -116,7 +116,7 @@ def test_explicit_copy(): var v1 = TestVariant(TestCounter()) # Perform explicit copy - var v2 = TestVariant(other=v1) + var v2 = v1.copy() # Test copy counts assert_equal(v1[TestCounter].copied, 0) From 036a187bf1ce9d9eae9ca93b2472ece27cd30598 Mon Sep 17 00:00:00 2001 From: Ricardo Guzman Date: Wed, 18 Dec 2024 13:24:36 -0600 Subject: [PATCH 117/509] [External] [docs] Fix typo (#53093) [External] [docs] Fix typo "[...] requires that the method *cannot* raise and error, [...]" is grammatically incorrect (assumed typo) Co-authored-by: Ricardo Guzman Closes modularml/mojo#3893 MODULAR_ORIG_COMMIT_REV_ID: fa26fa527fa9a8eea719bdbc1e63835a8808db62 --- docs/manual/get-started.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/manual/get-started.mdx b/docs/manual/get-started.mdx index 469542567d..ccb7680952 100644 --- a/docs/manual/get-started.mdx +++ b/docs/manual/get-started.mdx @@ -665,7 +665,7 @@ In the case of `str()`, it requires a type to conform to either the `Stringable` or `StringableRaising` trait. Each trait requires a conforming type to implement a `__str__()` method that returns a `String` representation. The only difference between the two traits is that `Stringable` requires that the method *cannot* -raise and error, whereas `StringableRaising` indicates that the method *might* +raise an error, whereas `StringableRaising` indicates that the method *might* raise an error. (To learn more, read [The `Stringable`, `Representable`, and `Writable` traits](/mojo/manual/traits#the-stringable-representable-and-writable-traits).) From 9dd7bd8d1576c355e126288a9fd668b67844d4a8 Mon Sep 17 00:00:00 2001 From: Lukas Hermann <1734032+lsh@users.noreply.github.com> Date: Wed, 18 Dec 2024 13:29:07 -0800 Subject: [PATCH 118/509] [stdlib] Spin out `address_space_cast` and `origin_cast` from `bitcast`. Right now `bitcast` is kind of a grab bag that does a ton of things. Having more specialized methods makes intent clear. MODULAR_ORIG_COMMIT_REV_ID: 0336403b80737866c7e0ad63cc44cd799bb13e5f --- docs/changelog.md | 6 ++- stdlib/src/builtin/sort.mojo | 16 +++--- stdlib/src/builtin/string_literal.mojo | 2 +- stdlib/src/collections/dict.mojo | 2 +- stdlib/src/memory/memory.mojo | 4 +- stdlib/src/memory/unsafe_pointer.mojo | 59 +++++++++++++++++++--- stdlib/test/collections/test_string.mojo | 2 +- stdlib/test/memory/test_unsafepointer.mojo | 6 +-- 8 files changed, 73 insertions(+), 24 deletions(-) diff --git a/docs/changelog.md b/docs/changelog.md index 9071af42a6..f98b425f32 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -22,6 +22,10 @@ what we publish. ### Standard library changes +- `UnsafePointer`'s `bitcast` method has now been split into `bitcast` + for changing the type, `origin_cast` for changing mutability, + and `address_space_cast` for changing the address space. + - `UnsafePointer` is now parameterized on mutability. Previously, `UnsafePointer` could only represent mutable pointers. @@ -44,7 +48,7 @@ what we publish. ```mojo var local = 10 # Cast the mutable pointer to be immutable. - var ptr = UnsafePointer.address_of(local).bitcast[mut=False]() + var ptr = UnsafePointer.address_of(local).mut_cast[mut=False]() ``` - The `unsafe_ptr()` method on several standard library collection types have diff --git a/stdlib/src/builtin/sort.mojo b/stdlib/src/builtin/sort.mojo index f3f19ba9b2..00243d6f80 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().bitcast[origin=MutableAnyOrigin]() + var array = span.unsafe_ptr().origin_cast[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().bitcast[origin=MutableAnyOrigin]() + var array = span.unsafe_ptr().origin_cast[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().bitcast[origin=MutableAnyOrigin]() + var array = span.unsafe_ptr().origin_cast[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().bitcast[origin=MutableAnyOrigin]() + var array = span.unsafe_ptr().origin_cast[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().bitcast[origin=MutableAnyOrigin]() + var array = span.unsafe_ptr().origin_cast[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().bitcast[origin=MutableAnyOrigin]() + var array = span.unsafe_ptr().origin_cast[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().bitcast[origin=MutableAnyOrigin]() + var array = span.unsafe_ptr().origin_cast[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().bitcast[origin=MutableAnyOrigin]() + var array = span.unsafe_ptr().origin_cast[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 406a39dbda..68bfc7a481 100644 --- a/stdlib/src/builtin/string_literal.mojo +++ b/stdlib/src/builtin/string_literal.mojo @@ -498,7 +498,7 @@ struct StringLiteral( # TODO(MSTDL-555): # Remove bitcast after changing pop.string.address # return type. - return ptr.bitcast[Byte, mut=False, origin=StaticConstantOrigin]() + return ptr.bitcast[Byte]().origin_cast[False, StaticConstantOrigin]() @always_inline fn unsafe_cstr_ptr( diff --git a/stdlib/src/collections/dict.mojo b/stdlib/src/collections/dict.mojo index 214cc78d3f..3dd86b2d39 100644 --- a/stdlib/src/collections/dict.mojo +++ b/stdlib/src/collections/dict.mojo @@ -192,7 +192,7 @@ 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).bitcast[ + UnsafePointer.address_of(entry_ref[].value).origin_cast[ origin=dict_origin ]()[] ) diff --git a/stdlib/src/memory/memory.mojo b/stdlib/src/memory/memory.mojo index 574c13af04..51abfb7b39 100644 --- a/stdlib/src/memory/memory.mojo +++ b/stdlib/src/memory/memory.mojo @@ -255,8 +255,8 @@ fn memcpy[ """ var n = count * sizeof[dest.type]() _memcpy_impl( - dest.bitcast[Byte, origin=MutableAnyOrigin](), - src.bitcast[Byte, origin=MutableAnyOrigin](), + dest.bitcast[Byte]().origin_cast[origin=MutableAnyOrigin](), + src.bitcast[Byte]().origin_cast[origin=MutableAnyOrigin](), n, ) diff --git a/stdlib/src/memory/unsafe_pointer.mojo b/stdlib/src/memory/unsafe_pointer.mojo index 60e0762d3c..1c9dbf9b40 100644 --- a/stdlib/src/memory/unsafe_pointer.mojo +++ b/stdlib/src/memory/unsafe_pointer.mojo @@ -974,11 +974,7 @@ struct UnsafePointer[ fn bitcast[ T: AnyType = Self.type, /, - address_space: AddressSpace = Self.address_space, alignment: Int = Self.alignment, - *, - mut: Bool = Self.mut, - origin: Origin[mut] = Origin[mut].cast_from[Self.origin].result, ](self) -> UnsafePointer[ T, address_space=address_space, @@ -990,10 +986,7 @@ struct UnsafePointer[ Parameters: T: The target type. - address_space: The address space of the result. alignment: Alignment of the destination pointer. - mut: Whether the origin is mutable. - origin: Origin of the destination pointer. Returns: A new UnsafePointer object with the specified type and the same address, @@ -1005,6 +998,58 @@ struct UnsafePointer[ ]._mlir_type, ](self.address) + @always_inline("nodebug") + fn origin_cast[ + mut: Bool = Self.mut, + origin: Origin[mut] = Origin[mut].cast_from[Self.origin].result, + ](self) -> UnsafePointer[ + type, + address_space=address_space, + alignment=alignment, + mut=mut, + origin=origin, + ]: + """Changes the origin or mutability of a pointer. + + Parameters: + mut: Whether the origin is mutable. + origin: Origin of the destination pointer. + + Returns: + A new UnsafePointer object with the same type and the same address, + as the original UnsafePointer and the new specified mutability and origin. + """ + return __mlir_op.`pop.pointer.bitcast`[ + _type = UnsafePointer[ + type, address_space=address_space, alignment=alignment + ]._mlir_type, + ](self.address) + + @always_inline("nodebug") + fn address_space_cast[ + address_space: AddressSpace = Self.address_space, + ](self) -> UnsafePointer[ + type, + address_space=address_space, + alignment=alignment, + mut=mut, + origin=origin, + ]: + """Casts an UnsafePointer to a different address space. + + Parameters: + address_space: The address space of the result. + + Returns: + A new UnsafePointer object with the same type and the same address, + as the original UnsafePointer and the new address space. + """ + return __mlir_op.`pop.pointer.bitcast`[ + _type = UnsafePointer[ + type, address_space=address_space, alignment=alignment + ]._mlir_type, + ](self.address) + @always_inline fn destroy_pointee( self: UnsafePointer[type, address_space = AddressSpace.GENERIC, **_] diff --git a/stdlib/test/collections/test_string.mojo b/stdlib/test/collections/test_string.mojo index a871adae4e..bc76176772 100644 --- a/stdlib/test/collections/test_string.mojo +++ b/stdlib/test/collections/test_string.mojo @@ -1249,7 +1249,7 @@ def test_string_iter(): assert_equal(321, atol(concat)) for v in vs: - v.unsafe_ptr().bitcast[mut=True]()[] = ord("1") + v.unsafe_ptr().origin_cast[mut=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 168ffc7bdf..b57fc793cb 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.address_of(local).bitcast[mut=False]() + var p1 = UnsafePointer.address_of(local).origin_cast[mut=False]() var p2 = p1 assert_equal(p1, p2) var other_local = 2 - var p3 = UnsafePointer.address_of(other_local).bitcast[mut=False]() + var p3 = UnsafePointer.address_of(other_local).origin_cast[mut=False]() assert_not_equal(p1, p3) - var p4 = UnsafePointer.address_of(local).bitcast[mut=False]() + var p4 = UnsafePointer.address_of(local).origin_cast[mut=False]() assert_equal(p1, p4) _ = local _ = other_local From 98498edd830b4a3b476d6cf89c9f8f9bb599e989 Mon Sep 17 00:00:00 2001 From: martinvuyk <110240700+martinvuyk@users.noreply.github.com> Date: Wed, 18 Dec 2024 16:15:22 -0600 Subject: [PATCH 119/509] [External] [stdlib] Rename `bit_ceil` and `bit_floor` (#53092) [External] [stdlib] Rename `bit_ceil` and `bit_floor` Rename `bit_ceil` and `bit_floor`. Closes #3271 Co-authored-by: martinvuyk <110240700+martinvuyk@users.noreply.github.com> Closes modularml/mojo#3895 MODULAR_ORIG_COMMIT_REV_ID: 416856b02b0851cc5725b13fcb6febeee74b957c --- docs/changelog.md | 4 +- stdlib/benchmarks/collections/bench_dict.mojo | 2 +- stdlib/src/bit/__init__.mojo | 4 +- stdlib/src/bit/bit.mojo | 21 ++++-- stdlib/src/collections/deque.mojo | 10 +-- stdlib/test/bit/test_bit.mojo | 70 ++++++++++--------- 6 files changed, 64 insertions(+), 47 deletions(-) diff --git a/docs/changelog.md b/docs/changelog.md index f98b425f32..4614d4c777 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -73,7 +73,9 @@ what we publish. This improves the "greppability" and at-a-glance readability when a programmer is looking for places in their code that may be performing copies - unnecessarily. + +- `bit_ceil` has been renamed to `next_power_of_two`, and `bit_floor` to + `prev_power_of_two`. This is to improve readability and clarity in their use. ### Tooling changes diff --git a/stdlib/benchmarks/collections/bench_dict.mojo b/stdlib/benchmarks/collections/bench_dict.mojo index e93406f837..23b5ad9f8c 100644 --- a/stdlib/benchmarks/collections/bench_dict.mojo +++ b/stdlib/benchmarks/collections/bench_dict.mojo @@ -21,7 +21,7 @@ from random import * from sys import sizeof from benchmark import Bench, BenchConfig, Bencher, BenchId, Unit, keep, run -from bit import bit_ceil +from bit import next_power_of_two # ===-----------------------------------------------------------------------===# diff --git a/stdlib/src/bit/__init__.mojo b/stdlib/src/bit/__init__.mojo index 75004d3618..891b8ea6d1 100644 --- a/stdlib/src/bit/__init__.mojo +++ b/stdlib/src/bit/__init__.mojo @@ -13,8 +13,8 @@ """Implements the bit package.""" from .bit import ( - bit_ceil, - bit_floor, + next_power_of_two, + prev_power_of_two, bit_not, bit_reverse, bit_width, diff --git a/stdlib/src/bit/bit.mojo b/stdlib/src/bit/bit.mojo index fb4170f825..e79dabaa98 100644 --- a/stdlib/src/bit/bit.mojo +++ b/stdlib/src/bit/bit.mojo @@ -412,16 +412,19 @@ fn is_power_of_two[ # ===-----------------------------------------------------------------------===# -# bit_ceil +# next_power_of_two # ===-----------------------------------------------------------------------===# # reference: https://en.cppreference.com/w/cpp/numeric/bit_ceil +# reference: https://doc.rust-lang.org/std/primitive.usize.html#method.next_power_of_two @always_inline -fn bit_ceil(val: Int) -> Int: +fn next_power_of_two(val: Int) -> Int: """Computes the smallest power of 2 that is greater than or equal to the input value. Any integral value less than or equal to 1 will be ceiled to 1. + This operation is called `bit_ceil()` in C++. + Args: val: The input value. @@ -438,13 +441,15 @@ fn bit_ceil(val: Int) -> Int: @always_inline -fn bit_ceil[ +fn next_power_of_two[ type: DType, width: Int, // ](val: SIMD[type, width]) -> SIMD[type, width]: """Computes the smallest power of 2 that is greater than or equal to the input value for each element of a SIMD vector. Any integral value less than or equal to 1 will be ceiled to 1. + This operation is called `bit_ceil()` in C++. + Parameters: type: `dtype` used for the computation. width: SIMD width used for the computation. @@ -468,16 +473,18 @@ fn bit_ceil[ # ===-----------------------------------------------------------------------===# -# bit_floor +# prev_power_of_two # ===-----------------------------------------------------------------------===# # reference: https://en.cppreference.com/w/cpp/numeric/bit_floor @always_inline -fn bit_floor(val: Int) -> Int: +fn prev_power_of_two(val: Int) -> Int: """Computes the largest power of 2 that is less than or equal to the input value. Any integral value less than or equal to 0 will be floored to 0. + This operation is called `bit_floor()` in C++. + Args: val: The input value. @@ -491,13 +498,15 @@ fn bit_floor(val: Int) -> Int: @always_inline -fn bit_floor[ +fn prev_power_of_two[ type: DType, width: Int, // ](val: SIMD[type, width]) -> SIMD[type, width]: """Computes the largest power of 2 that is less than or equal to the input value for each element of a SIMD vector. Any integral value less than or equal to 0 will be floored to 0. + This operation is called `bit_floor()` in C++. + Parameters: type: `dtype` used for the computation. width: SIMD width used for the computation. diff --git a/stdlib/src/collections/deque.mojo b/stdlib/src/collections/deque.mojo index 0fb93ea179..f55c345f79 100644 --- a/stdlib/src/collections/deque.mojo +++ b/stdlib/src/collections/deque.mojo @@ -23,7 +23,7 @@ from collections import Deque from collections import Optional -from bit import bit_ceil +from bit import next_power_of_two from memory import UnsafePointer # ===-----------------------------------------------------------------------===# @@ -105,18 +105,18 @@ struct Deque[ElementType: CollectionElement]( if capacity <= 0: deque_capacity = self.default_capacity else: - deque_capacity = bit_ceil(capacity) + deque_capacity = next_power_of_two(capacity) if min_capacity <= 0: min_deque_capacity = self.default_capacity else: - min_deque_capacity = bit_ceil(min_capacity) + min_deque_capacity = next_power_of_two(min_capacity) if maxlen <= 0: max_deque_len = -1 else: max_deque_len = maxlen - max_deque_capacity = bit_ceil(maxlen) + max_deque_capacity = next_power_of_two(maxlen) if max_deque_capacity == maxlen: max_deque_capacity <<= 1 deque_capacity = min(deque_capacity, max_deque_capacity) @@ -938,7 +938,7 @@ struct Deque[ElementType: CollectionElement]( n_total: The total number of elements the new buffer should support. n_retain: The number of existing elements to keep in the deque. """ - new_capacity = bit_ceil(n_total) + new_capacity = next_power_of_two(n_total) if new_capacity == n_total: new_capacity <<= 1 diff --git a/stdlib/test/bit/test_bit.mojo b/stdlib/test/bit/test_bit.mojo index 1f1063eee0..bedcc02021 100644 --- a/stdlib/test/bit/test_bit.mojo +++ b/stdlib/test/bit/test_bit.mojo @@ -13,8 +13,8 @@ # RUN: %bare-mojo %s from bit import ( - bit_ceil, - bit_floor, + next_power_of_two, + prev_power_of_two, bit_not, bit_reverse, bit_width, @@ -365,17 +365,17 @@ def test_bit_width_simd(): assert_equal(bit_width(var4), SIMD[int64_t, simd_width](27, 0, 22, 60)) -def test_bit_ceil(): - assert_equal(bit_ceil(-(2**59)), 1) - assert_equal(bit_ceil(-2), 1) - assert_equal(bit_ceil(1), 1) - assert_equal(bit_ceil(2), 2) - assert_equal(bit_ceil(4), 4) - assert_equal(bit_ceil(5), 8) - assert_equal(bit_ceil(2**59 - 3), 2**59) +def test_next_power_of_two(): + assert_equal(next_power_of_two(-(2**59)), 1) + assert_equal(next_power_of_two(-2), 1) + assert_equal(next_power_of_two(1), 1) + assert_equal(next_power_of_two(2), 2) + assert_equal(next_power_of_two(4), 4) + assert_equal(next_power_of_two(5), 8) + assert_equal(next_power_of_two(2**59 - 3), 2**59) -def test_bit_ceil_simd(): +def test_next_power_of_two_simd(): alias simd_width = 4 alias int8_t = DType.int8 alias int16_t = DType.int16 @@ -383,16 +383,20 @@ def test_bit_ceil_simd(): alias int64_t = DType.int64 alias var1 = SIMD[int8_t, simd_width](-114, 0, 2**7 - 3, 2**6) - assert_equal(bit_ceil(var1), SIMD[int8_t, simd_width](1, 1, 2**7, 2**6)) + assert_equal( + next_power_of_two(var1), SIMD[int8_t, simd_width](1, 1, 2**7, 2**6) + ) alias var2 = SIMD[int16_t, simd_width](-11444, 0, 2**12 - 3, 2**13) assert_equal( - bit_ceil(var2), SIMD[int16_t, simd_width](1, 1, 2**12, 2**13) + next_power_of_two(var2), + SIMD[int16_t, simd_width](1, 1, 2**12, 2**13), ) alias var3 = SIMD[int32_t, simd_width](-111444, 0, 2**14 - 3, 2**29) assert_equal( - bit_ceil(var3), SIMD[int32_t, simd_width](1, 1, 2**14, 2**29) + next_power_of_two(var3), + SIMD[int32_t, simd_width](1, 1, 2**14, 2**29), ) # TODO: use this line after #2882 is fixed @@ -401,22 +405,22 @@ def test_bit_ceil_simd(): -111444444, 1, 2**22 - 3, 576460752303423488 ) assert_equal( - bit_ceil(var4), + next_power_of_two(var4), SIMD[int64_t, simd_width](1, 1, 2**22, 2**59), ) -def test_bit_floor(): - assert_equal(bit_floor(-(2**59)), 0) - assert_equal(bit_floor(-2), 0) - assert_equal(bit_floor(1), 1) - assert_equal(bit_floor(2), 2) - assert_equal(bit_floor(4), 4) - assert_equal(bit_floor(5), 4) - assert_equal(bit_floor(2**59), 2**59) +def test_prev_power_of_two(): + assert_equal(prev_power_of_two(-(2**59)), 0) + assert_equal(prev_power_of_two(-2), 0) + assert_equal(prev_power_of_two(1), 1) + assert_equal(prev_power_of_two(2), 2) + assert_equal(prev_power_of_two(4), 4) + assert_equal(prev_power_of_two(5), 4) + assert_equal(prev_power_of_two(2**59), 2**59) -def test_bit_floor_simd(): +def test_prev_power_of_two_simd(): alias simd_width = 4 alias int8_t = DType.int8 alias int16_t = DType.int16 @@ -425,17 +429,19 @@ def test_bit_floor_simd(): alias var1 = SIMD[int8_t, simd_width](-114, 0, 2**5 + 3, 2**6) assert_equal( - bit_floor(var1), SIMD[int8_t, simd_width](0, 0, 2**5, 2**6) + prev_power_of_two(var1), SIMD[int8_t, simd_width](0, 0, 2**5, 2**6) ) alias var2 = SIMD[int16_t, simd_width](-11444, 0, 2**12 + 3, 2**13) assert_equal( - bit_floor(var2), SIMD[int16_t, simd_width](0, 0, 2**12, 2**13) + prev_power_of_two(var2), + SIMD[int16_t, simd_width](0, 0, 2**12, 2**13), ) alias var3 = SIMD[int32_t, simd_width](-111444, 0, 2**14 + 3, 2**29) assert_equal( - bit_floor(var3), SIMD[int32_t, simd_width](0, 0, 2**14, 2**29) + prev_power_of_two(var3), + SIMD[int32_t, simd_width](0, 0, 2**14, 2**29), ) # TODO: use this line after #2882 is fixed @@ -444,7 +450,7 @@ def test_bit_floor_simd(): -111444444, 1, 2**22 + 3, 576460752303423488 ) assert_equal( - bit_floor(var4), + prev_power_of_two(var4), SIMD[int64_t, simd_width](0, 1, 2**22, 2**59), ) @@ -526,10 +532,10 @@ def test_log2_floor(): def main(): test_rotate_bits_int() test_rotate_bits_simd() - test_bit_ceil() - test_bit_ceil_simd() - test_bit_floor() - test_bit_floor_simd() + test_next_power_of_two() + test_next_power_of_two_simd() + test_prev_power_of_two() + test_prev_power_of_two_simd() test_bit_width() test_bit_width_simd() test_is_power_of_two() From 8fae8597d733b22c75a6939545679efa546860c6 Mon Sep 17 00:00:00 2001 From: Connor Gray Date: Wed, 18 Dec 2024 16:16:40 -0600 Subject: [PATCH 120/509] [stdlib] cleanup: Use `_Global` and new `_OwnedDLHandle` to simplify `_get_dylib_function()` interface MODULAR_ORIG_COMMIT_REV_ID: 11f71a3c91de0eba9d09194cbc19afd0753eebba --- stdlib/src/sys/ffi.mojo | 60 ++++++++++++++++++++++++++++------------- 1 file changed, 42 insertions(+), 18 deletions(-) diff --git a/stdlib/src/sys/ffi.mojo b/stdlib/src/sys/ffi.mojo index 1c3299a196..397bc099a3 100644 --- a/stdlib/src/sys/ffi.mojo +++ b/stdlib/src/sys/ffi.mojo @@ -113,6 +113,40 @@ struct RTLD: alias DEFAULT_RTLD = RTLD.NOW | RTLD.GLOBAL +struct _OwnedDLHandle: + """Represents an owned handle to a dynamically linked library that can be + loaded and unloaded. + + This type is intended to replace `DLHandle`, by incrementally introducing + ownership semantics to `DLHandle`. + """ + + var _handle: DLHandle + + # ===-------------------------------------------------------------------===# + # Life cycle methods + # ===-------------------------------------------------------------------===# + + @always_inline + fn __init__(out self, path: String, flags: Int = DEFAULT_RTLD): + self._handle = DLHandle(path, flags) + + fn __moveinit__(out self, owned other: Self): + self._handle = other._handle + + fn __del__(owned self): + """Delete the DLHandle object unloading the associated dynamic library. + """ + self._handle.close() + + # ===-------------------------------------------------------------------===# + # Methods + # ===-------------------------------------------------------------------===# + + fn handle(self) -> DLHandle: + return self._handle + + @value @register_passable("trivial") struct DLHandle(CollectionElement, CollectionElementNew, Boolable): @@ -367,35 +401,22 @@ struct DLHandle(CollectionElement, CollectionElementNew, Boolable): return self.get_function[fn (__type_of(v)) -> return_type](name)(v) -@always_inline -fn _get_dylib[ - name: StringLiteral, - init_fn: fn (OpaquePointer) -> OpaquePointer, - destroy_fn: fn (OpaquePointer) -> None, -](payload: OpaquePointer = OpaquePointer()) -> DLHandle: - var ptr = _get_global[name, init_fn, destroy_fn](payload).bitcast[ - DLHandle - ]() - return ptr[] - - @always_inline fn _get_dylib_function[ - name: StringLiteral, + dylib_global: _Global[_, _OwnedDLHandle, _], func_name: StringLiteral, - init_fn: fn (OpaquePointer) -> OpaquePointer, - destroy_fn: fn (OpaquePointer) -> None, result_type: AnyTrivialRegType, -](payload: OpaquePointer = OpaquePointer()) -> result_type: - alias func_cache_name = name + "/" + func_name +]() -> result_type: + alias func_cache_name = dylib_global.name + "/" + func_name var func_ptr = _get_global_or_null[func_cache_name]() if func_ptr: var result = UnsafePointer.address_of(func_ptr).bitcast[result_type]()[] _ = func_ptr return result - var dylib = _get_dylib[name, init_fn, destroy_fn](payload) + var dylib = dylib_global.get_or_create_ptr()[].handle() var new_func = dylib._get_function[func_name, result_type]() + external_call["KGEN_CompilerRT_InsertGlobal", NoneType]( StringRef(func_cache_name), UnsafePointer.address_of(new_func).bitcast[OpaquePointer]()[], @@ -414,6 +435,9 @@ struct _Global[ storage_type: Movable, init_fn: fn () -> storage_type, ]: + fn __init__(out self): + pass + @staticmethod fn _init_wrapper(payload: OpaquePointer) -> OpaquePointer: # Struct-based globals don't get to take arguments to their initializer. From 6eb0b8947e3560825fe89fd081d2bc97d40dbcf8 Mon Sep 17 00:00:00 2001 From: modularbot <116839051+modularbot@users.noreply.github.com> Date: Wed, 18 Dec 2024 16:19:36 -0600 Subject: [PATCH 121/509] [External] [stdlib] Add `List[Scalar[D]].extend()` from `SIMD` and `Span[Scalar[D]]` (#52584) [External] [stdlib] Add `List[Scalar[D]].extend()` from `SIMD` and `Span[Scalar[D]]` Add `List[Scalar[D]].extend()` from `SIMD` and `Span[Scalar[D]]` Split off from modularml/mojo#3814. This is needed to enable efficient appending of scalar value sequences to a `List` without having to resort to `UnsafePointer` manually. ORIGINAL_AUTHOR=martinvuyk <110240700+martinvuyk@users.noreply.github.com> PUBLIC_PR_LINK=modularml/mojo#3854 Co-authored-by: martinvuyk <110240700+martinvuyk@users.noreply.github.com> Co-authored-by: Connor Gray Closes modularml/mojo#3854 MODULAR_ORIG_COMMIT_REV_ID: 7d0c724497ba0671ae660f4de5758d6c4baad7bc --- docs/changelog.md | 5 ++ stdlib/src/base64/_b64encode.mojo | 28 +---------- stdlib/src/collections/list.mojo | 64 +++++++++++++++++++++++++- stdlib/src/testing/testing.mojo | 39 +++++++++++++++- stdlib/src/utils/inline_string.mojo | 25 +++------- stdlib/test/collections/test_list.mojo | 48 ++++++++++--------- 6 files changed, 140 insertions(+), 69 deletions(-) diff --git a/docs/changelog.md b/docs/changelog.md index 4614d4c777..ef7aec9af6 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -66,6 +66,11 @@ what we publish. var ptr2 = list2.unsafe_ptr() ``` +- Added new `List.extend()` overloads taking `SIMD` and `Span`. These enable + growing a `List[Scalar[..]]` by copying the elements of a `SIMD` vector or + `Span[Scalar[..]]`, simplifying the writing of some optimized SIMD-aware + functionality. + - The `ExplicitlyCopyable` trait has changed to require a `fn copy(self) -> Self` method. Previously, an initializer with the signature `fn __init__(out self, *, other: Self)` had been required by diff --git a/stdlib/src/base64/_b64encode.mojo b/stdlib/src/base64/_b64encode.mojo index 74b8c31501..35b7f4c5d9 100644 --- a/stdlib/src/base64/_b64encode.mojo +++ b/stdlib/src/base64/_b64encode.mojo @@ -195,21 +195,6 @@ fn load_incomplete_simd[ return result -fn store_incomplete_simd[ - simd_width: Int -]( - pointer: UnsafePointer[UInt8], - owned simd_vector: SIMD[DType.uint8, simd_width], - nb_of_elements_to_store: Int, -): - var tmp_buffer_pointer = UnsafePointer.address_of(simd_vector).bitcast[ - UInt8 - ]() - - memcpy(dest=pointer, src=tmp_buffer_pointer, count=nb_of_elements_to_store) - _ = simd_vector # We make it live long enough - - # TODO: Use Span instead of List as input when Span is easier to use @no_inline fn b64encode_with_buffers( @@ -229,11 +214,7 @@ fn b64encode_with_buffers( var input_vector = start_of_input_chunk.load[width=simd_width]() - result_vector = _to_b64_ascii(input_vector) - - (result.unsafe_ptr() + len(result)).store(result_vector) - - result.size += simd_width + result.extend(_to_b64_ascii(input_vector)) input_index += input_simd_width # We handle the last 0, 1 or 2 chunks @@ -268,12 +249,7 @@ fn b64encode_with_buffers( ]( nb_of_elements_to_load ) - store_incomplete_simd( - result.unsafe_ptr() + len(result), - result_vector_with_equals, - nb_of_elements_to_store, - ) - result.size += nb_of_elements_to_store + result.extend(result_vector_with_equals, count=nb_of_elements_to_store) input_index += input_simd_width diff --git a/stdlib/src/collections/list.mojo b/stdlib/src/collections/list.mojo index 5732bc8da5..f537f7151f 100644 --- a/stdlib/src/collections/list.mojo +++ b/stdlib/src/collections/list.mojo @@ -497,9 +497,13 @@ struct List[T: CollectionElement, hint_trivial_type: Bool = False]( Args: value: The value to append. + + Notes: + If there is no capacity left, resizes to twice the current capacity. + Except for 0 capacity where it sets 1. """ if self.size >= self.capacity: - self._realloc(max(1, self.capacity * 2)) + self._realloc(self.capacity * 2 | int(self.capacity == 0)) (self.data + self.size).init_pointee_move(value^) self.size += 1 @@ -591,6 +595,64 @@ struct List[T: CollectionElement, hint_trivial_type: Bool = False]( # list. self.size = final_size + fn extend[ + D: DType, // + ](mut self: List[Scalar[D], *_, **_], value: SIMD[D, _]): + """Extends this list with the elements of a vector. + + Parameters: + D: The DType. + + Args: + value: The value to append. + + Notes: + If there is no capacity left, resizes to `len(self) + value.size`. + """ + self.reserve(self.size + value.size) + (self.data + self.size).store(value) + self.size += value.size + + fn extend[ + D: DType, // + ](mut self: List[Scalar[D], *_, **_], value: SIMD[D, _], *, count: Int): + """Extends this list with `count` number of elements from a vector. + + Parameters: + D: The DType. + + Args: + value: The value to append. + count: The ammount of items to append. Must be less than or equal to + `value.size`. + + Notes: + If there is no capacity left, resizes to `len(self) + count`. + """ + debug_assert(count <= value.size, "count must be <= value.size") + self.reserve(self.size + count) + var v_ptr = UnsafePointer.address_of(value).bitcast[Scalar[D]]() + memcpy(self.data + self.size, v_ptr, count) + self.size += count + + fn extend[ + D: DType, // + ](mut self: List[Scalar[D], *_, **_], value: Span[Scalar[D]]): + """Extends this list with the elements of a `Span`. + + Parameters: + D: The DType. + + Args: + value: The value to append. + + Notes: + If there is no capacity left, resizes to `len(self) + len(value)`. + """ + self.reserve(self.size + len(value)) + memcpy(self.data + self.size, value.unsafe_ptr(), len(value)) + self.size += len(value) + fn pop(mut self, i: Int = -1) -> T: """Pops a value from the list at the given index. diff --git a/stdlib/src/testing/testing.mojo b/stdlib/src/testing/testing.mojo index 20173be736..ef39769ff8 100644 --- a/stdlib/src/testing/testing.mojo +++ b/stdlib/src/testing/testing.mojo @@ -32,7 +32,7 @@ def main(): """ from collections import Optional from math import isclose - +from memory import memcmp from builtin._location import __call_location, _SourceLocation # ===----------------------------------------------------------------------=== # @@ -236,6 +236,43 @@ fn assert_equal[ ) +@always_inline +fn assert_equal[ + D: DType +]( + lhs: List[Scalar[D]], + rhs: List[Scalar[D]], + msg: String = "", + *, + location: Optional[_SourceLocation] = None, +) raises: + """Asserts that two lists are equal. + + Parameters: + D: A DType. + + Args: + lhs: The left-hand side list. + rhs: The right-hand side list. + msg: The message to be printed if the assertion fails. + location: The location of the error (default to the `__call_location`). + + Raises: + An Error with the provided message if assert fails and `None` otherwise. + """ + var length = len(lhs) + if ( + length != len(rhs) + or memcmp(lhs.unsafe_ptr(), rhs.unsafe_ptr(), length) != 0 + ): + raise _assert_cmp_error["`left == right` comparison"]( + lhs.__str__(), + rhs.__str__(), + msg=msg, + loc=location.or_else(__call_location()), + ) + + @always_inline fn assert_not_equal[ T: Testable diff --git a/stdlib/src/utils/inline_string.mojo b/stdlib/src/utils/inline_string.mojo index 5fb4687089..9be3326019 100644 --- a/stdlib/src/utils/inline_string.mojo +++ b/stdlib/src/utils/inline_string.mojo @@ -147,28 +147,15 @@ struct InlineString(Sized, Stringable, CollectionElement, CollectionElementNew): # Begin by heap allocating enough space to store the combined # string. var buffer = List[UInt8](capacity=total_len) - # Copy the bytes from the current small string layout - memcpy( - dest=buffer.unsafe_ptr(), - src=self._storage[_FixedString[Self.SMALL_CAP]].unsafe_ptr(), - count=len(self), + var span_self = Span[Byte, __origin_of(self)]( + ptr=self._storage[_FixedString[Self.SMALL_CAP]].unsafe_ptr(), + length=len(self), ) - + buffer.extend(span_self) # Copy the bytes from the additional string. - memcpy( - dest=buffer.unsafe_ptr() + len(self), - src=str_slice.unsafe_ptr(), - count=str_slice.byte_length(), - ) - - # Record that we've initialized `total_len` count of elements - # in `buffer` - buffer.size = total_len - - # Add the NUL byte - buffer.append(0) - + buffer.extend(str_slice.as_bytes()) + buffer.append(0) # Add the NUL byte self._storage = Self.Layout(String(buffer^)) fn __add__(self, other: StringLiteral) -> Self: diff --git a/stdlib/test/collections/test_list.mojo b/stdlib/test/collections/test_list.mojo index 9f45d66f5a..c6b3e4fb1e 100644 --- a/stdlib/test/collections/test_list.mojo +++ b/stdlib/test/collections/test_list.mojo @@ -437,32 +437,35 @@ def test_list_index(): _ = test_list_b.index(20, start=4, stop=5) -def test_list_extend(): - # - # Test extending the list [1, 2, 3] with itself - # +def test_list_append(): + var items = List[UInt32]() + items.append(1) + items.append(2) + items.append(3) + assert_equal(items, List[UInt32](1, 2, 3)) - vec = List[Int]() - vec.append(1) - vec.append(2) - vec.append(3) - assert_equal(len(vec), 3) - assert_equal(vec[0], 1) - assert_equal(vec[1], 2) - assert_equal(vec[2], 3) +def test_list_extend(): + var items = List[UInt32](1, 2, 3) + var copy = items + items.extend(copy) + assert_equal(items, List[UInt32](1, 2, 3, 1, 2, 3)) + + items = List[UInt32](1, 2, 3) + copy = List[UInt32](1, 2, 3) - var copy = vec - vec.extend(copy) + # Extend with span + items.extend(Span(copy)) + assert_equal(items, List[UInt32](1, 2, 3, 1, 2, 3)) - # vec == [1, 2, 3, 1, 2, 3] - assert_equal(len(vec), 6) - assert_equal(vec[0], 1) - assert_equal(vec[1], 2) - assert_equal(vec[2], 3) - assert_equal(vec[3], 1) - assert_equal(vec[4], 2) - assert_equal(vec[5], 3) + # Extend with whole SIMD + items = List[UInt32](1, 2, 3) + items.extend(SIMD[DType.uint32, 4](1, 2, 3, 4)) + assert_equal(items, List[UInt32](1, 2, 3, 1, 2, 3, 4)) + # Extend with part of SIMD + items = List[UInt32](1, 2, 3) + items.extend(SIMD[DType.uint32, 4](1, 2, 3, 4), count=3) + assert_equal(items, List[UInt32](1, 2, 3, 1, 2, 3)) def test_list_extend_non_trivial(): @@ -952,6 +955,7 @@ def main(): test_list_reverse_move_count() test_list_insert() test_list_index() + test_list_append() test_list_extend() test_list_extend_non_trivial() test_list_explicit_copy() From f075bf263ba0e27b7874abd848848544d7b2bf7d Mon Sep 17 00:00:00 2001 From: modularbot <116839051+modularbot@users.noreply.github.com> Date: Wed, 18 Dec 2024 18:34:59 -0600 Subject: [PATCH 122/509] [External] [stdlib] Doc improvements and cleanups around low-level `VariadicPack` use (#48996) [External] [stdlib] Doc improvements and cleanups around low-level VariadicPack use #48996 This includes changes from modularml/mojo#3632, minus parts which ended up conflicting with internal changes doing the same refactoring. Context: https://github.com/modularml/mojo/pull/3632#issuecomment-2462756696 Original commit description: [External] [stdlib] Refactor `external_call()` and inline `_LITRefPackHelper` into `VariadicPack` Refactor `external_call()` and inline most of `_LITRefPackHelper` into `VariadicPack`, leave `_LITRefPackHelper` itself intact since I found no way to inline the `AddressSpace` parameter into `VariadicPack`. ORIGINAL_AUTHOR=martinvuyk <110240700+martinvuyk@users.noreply.github.com> PUBLIC_PR_LINK=modularml/mojo#3632 Co-authored-by: martinvuyk <110240700+martinvuyk@users.noreply.github.com> Closes modularml/mojo#3632 MODULAR_ORIG_COMMIT_REV_ID: 8a1c1a5a92c6910039158108ab47046583ae9586 --- stdlib/src/builtin/builtin_list.mojo | 26 ++++++------ stdlib/src/builtin/io.mojo | 15 ++++--- stdlib/src/sys/_assembly.mojo | 4 +- stdlib/src/sys/ffi.mojo | 63 +++++++++++++++++++--------- stdlib/src/sys/intrinsics.mojo | 21 +++++----- 5 files changed, 79 insertions(+), 50 deletions(-) diff --git a/stdlib/src/builtin/builtin_list.mojo b/stdlib/src/builtin/builtin_list.mojo index e74b93cad3..50e63d02d2 100644 --- a/stdlib/src/builtin/builtin_list.mojo +++ b/stdlib/src/builtin/builtin_list.mojo @@ -605,29 +605,30 @@ struct VariadicPack[ # C Pack Utilities # ===-------------------------------------------------------------------===# - # This is the element_types list lowered to `variadic` type for kgen. alias _kgen_element_types = rebind[ __mlir_type.`!kgen.variadic` ](Self.element_types) - - # Use variadic_ptr_map to construct the type list of the !kgen.pack that the - # !lit.ref.pack will lower to. It exposes the pointers introduced by the - # references. + """This is the element_types list lowered to `variadic` type for kgen. + """ alias _variadic_pointer_types = __mlir_attr[ `#kgen.param.expr: !kgen.variadic`, ] - - # This is the !kgen.pack type with pointer elements. + """Use variadic_ptr_map to construct the type list of the !kgen.pack that + the !lit.ref.pack will lower to. It exposes the pointers introduced by the + references. + """ alias _kgen_pack_with_pointer_type = __mlir_type[ `!kgen.pack<:variadic `, Self._variadic_pointer_types, `>` ] + """This is the !kgen.pack type with pointer elements.""" - # This rebinds `in_pack` to the equivalent `!kgen.pack` with kgen pointers. @doc_private @always_inline("nodebug") fn get_as_kgen_pack(self) -> Self._kgen_pack_with_pointer_type: + """This rebinds `in_pack` to the equivalent `!kgen.pack` with kgen + pointers.""" return rebind[Self._kgen_pack_with_pointer_type](self._value) alias _variadic_with_pointers_removed = __mlir_attr[ @@ -635,15 +636,16 @@ struct VariadicPack[ Self._variadic_pointer_types, `>: !kgen.variadic`, ] - - # This is the `!kgen.pack` type that happens if one loads all the elements - # of the pack. alias _loaded_kgen_pack_type = __mlir_type[ `!kgen.pack<:variadic `, Self._variadic_with_pointers_removed, `>` ] + """This is the `!kgen.pack` type that happens if one loads all the elements + of the pack. + """ - # This returns the stored KGEN pack after loading all of the elements. @doc_private @always_inline("nodebug") fn get_loaded_kgen_pack(self) -> Self._loaded_kgen_pack_type: + """This returns the stored KGEN pack after loading all of the elements. + """ return __mlir_op.`kgen.pack.load`(self.get_as_kgen_pack()) diff --git a/stdlib/src/builtin/io.mojo b/stdlib/src/builtin/io.mojo index fc363fc15c..a409c35c62 100644 --- a/stdlib/src/builtin/io.mojo +++ b/stdlib/src/builtin/io.mojo @@ -26,7 +26,7 @@ from sys import ( stdout, ) from sys._libc import dup, fclose, fdopen, fflush -from sys.ffi import OpaquePointer +from sys.ffi import OpaquePointer, c_char from builtin.dtype import _get_dtype_printf_format from builtin.file_descriptor import FileDescriptor @@ -165,11 +165,11 @@ fn _flush(file: FileDescriptor = stdout): @no_inline fn _printf[ fmt: StringLiteral, *types: AnyType -](*arguments: *types, file: FileDescriptor = stdout): +](*args: *types, file: FileDescriptor = stdout): # The argument pack will contain references for each value in the pack, # but we want to pass their values directly into the C printf call. Load # all the members of the pack. - var loaded_pack = arguments.get_loaded_kgen_pack() + var loaded_pack = args.get_loaded_kgen_pack() @parameter if is_nvidia_gpu(): @@ -181,6 +181,7 @@ fn _printf[ pass else: with _fdopen(file) as fd: + # FIXME: external_call should handle this _ = __mlir_op.`pop.external_call`[ func = "KGEN_CompilerRT_fprintf".value, variadicType = __mlir_attr[ @@ -201,7 +202,7 @@ fn _printf[ @no_inline fn _snprintf[ fmt: StringLiteral, *types: AnyType -](str: UnsafePointer[UInt8], size: Int, *arguments: *types) -> Int: +](str: UnsafePointer[UInt8], size: Int, *args: *types) -> Int: """Writes a format string into an output pointer. Parameters: @@ -211,16 +212,18 @@ fn _snprintf[ Args: str: A pointer into which the format string is written. size: At most, `size - 1` bytes are written into the output string. - arguments: Arguments interpolated into the format string. + args: Arguments interpolated into the format string. Returns: The number of bytes written into the output string. """ + # The argument pack will contain references for each value in the pack, # but we want to pass their values directly into the C snprintf call. Load # all the members of the pack. - var loaded_pack = arguments.get_loaded_kgen_pack() + var loaded_pack = args.get_loaded_kgen_pack() + # FIXME: external_call should handle this return int( __mlir_op.`pop.external_call`[ func = "snprintf".value, diff --git a/stdlib/src/sys/_assembly.mojo b/stdlib/src/sys/_assembly.mojo index 2074afde29..c48f518cd6 100644 --- a/stdlib/src/sys/_assembly.mojo +++ b/stdlib/src/sys/_assembly.mojo @@ -26,9 +26,9 @@ fn inlined_assembly[ *types: AnyType, constraints: StringLiteral, has_side_effect: Bool = True, -](*arguments: *types) -> result_type: +](*args: *types) -> result_type: """Generates assembly via inline assembly.""" - var loaded_pack = arguments.get_loaded_kgen_pack() + var loaded_pack = args.get_loaded_kgen_pack() @parameter if _mlirtype_is_eq[result_type, NoneType](): diff --git a/stdlib/src/sys/ffi.mojo b/stdlib/src/sys/ffi.mojo index 397bc099a3..429dd1e0f7 100644 --- a/stdlib/src/sys/ffi.mojo +++ b/stdlib/src/sys/ffi.mojo @@ -496,37 +496,60 @@ fn _get_global_or_null[name: StringLiteral]() -> OpaquePointer: @always_inline("nodebug") fn external_call[ - callee: StringLiteral, type: AnyTrivialRegType, *types: AnyType -](*arguments: *types) -> type: + callee: StringLiteral, + return_type: AnyTrivialRegType, + *types: AnyType, +](*args: *types) -> return_type: """Calls an external function. Args: - arguments: The arguments to pass to the external function. + args: The arguments to pass to the external function. Parameters: - callee: The name of the external function. - type: The return type. - types: The argument types. + callee: The name of the external function. + return_type: The return type. + types: The argument types. Returns: - The external call result. + The external call result. + """ + return external_call[callee, return_type](args) + + +@always_inline("nodebug") +fn external_call[ + callee: StringLiteral, + return_type: AnyTrivialRegType, +](args: VariadicPack[element_trait=AnyType]) -> return_type: + """Calls an external function. + + Parameters: + callee: The name of the external function. + return_type: The return type. + + Args: + args: The arguments to pass to the external function. + + Returns: + The external call result. """ # The argument pack will contain references for each value in the pack, # but we want to pass their values directly into the C printf call. Load # all the members of the pack. - var loaded_pack = arguments.get_loaded_kgen_pack() + var loaded_pack = args.get_loaded_kgen_pack() @parameter - if _mlirtype_is_eq[type, NoneType](): + if _mlirtype_is_eq[return_type, NoneType](): __mlir_op.`pop.external_call`[func = callee.value, _type=None]( loaded_pack ) - return rebind[type](None) + return rebind[return_type](None) else: - return __mlir_op.`pop.external_call`[func = callee.value, _type=type]( - loaded_pack - ) + return __mlir_op.`pop.external_call`[ + func = callee.value, + _type=return_type, + ](loaded_pack) # ===-----------------------------------------------------------------------===# @@ -536,18 +559,20 @@ fn external_call[ @always_inline("nodebug") fn _external_call_const[ - callee: StringLiteral, type: AnyTrivialRegType, *types: AnyType -](*arguments: *types) -> type: + callee: StringLiteral, + return_type: AnyTrivialRegType, + *types: AnyType, +](*args: *types) -> return_type: """Mark the external function call as having no observable effects to the program state. This allows the compiler to optimize away successive calls to the same function. Args: - arguments: The arguments to pass to the external function. + args: The arguments to pass to the external function. Parameters: callee: The name of the external function. - type: The return type. + return_type: The return type. types: The argument types. Returns: @@ -557,7 +582,7 @@ fn _external_call_const[ # The argument pack will contain references for each value in the pack, # but we want to pass their values directly into the C printf call. Load # all the members of the pack. - var loaded_pack = arguments.get_loaded_kgen_pack() + var loaded_pack = args.get_loaded_kgen_pack() return __mlir_op.`pop.external_call`[ func = callee.value, @@ -568,5 +593,5 @@ fn _external_call_const[ `argMem = none, `, `inaccessibleMem = none>`, ], - _type=type, + _type=return_type, ](loaded_pack) diff --git a/stdlib/src/sys/intrinsics.mojo b/stdlib/src/sys/intrinsics.mojo index 3eb81a505a..1a7242cc63 100644 --- a/stdlib/src/sys/intrinsics.mojo +++ b/stdlib/src/sys/intrinsics.mojo @@ -37,25 +37,24 @@ fn llvm_intrinsic[ type: AnyTrivialRegType, *types: AnyType, has_side_effect: Bool = True, -](*arguments: *types) -> type: - """Calls an LLVM intrinsic with no arguments. - - Calls an LLVM intrinsic with the name intrin and return type type. +](*args: *types) -> type: + """Calls an LLVM intrinsic with the name `intrin` and return type `type`. Parameters: - intrin: The name of the llvm intrinsic. - type: The return type of the intrinsic. - types: The argument types for the function. - has_side_effect: If `True` the intrinsic will have side effects, otherwise its pure. + intrin: The name of the llvm intrinsic. + type: The return type of the intrinsic. + types: The argument types for the function. + has_side_effect: If `True` the intrinsic will have side effects, + otherwise its pure. Args: - arguments: The arguments to the function. + args: The arguments to the function. Returns: - The result of calling the llvm intrinsic with no arguments. + The result of calling the llvm intrinsic with no arguments. """ - var loaded_pack = arguments.get_loaded_kgen_pack() + var loaded_pack = args.get_loaded_kgen_pack() @parameter if _mlirtype_is_eq[type, NoneType](): From 7d8897a2fc8c8f2007c478bff0370060d3d4164e Mon Sep 17 00:00:00 2001 From: soraros Date: Thu, 19 Dec 2024 16:20:24 -0600 Subject: [PATCH 123/509] [External] [stdlib] Explicitly add the inferred parameter dtype in `min/max` (#53150) [External] [stdlib] Explicitly add the inferred parameter dtype in `min/max` This allows us to disambiguate and use them in higher-order functions like `f[min[dtype=...]]()`. Co-authored-by: soraros Closes modularml/mojo#3901 MODULAR_ORIG_COMMIT_REV_ID: 1148ff7987a426aef43e5198c23e0feca3e154b8 --- stdlib/src/builtin/math.mojo | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/stdlib/src/builtin/math.mojo b/stdlib/src/builtin/math.mojo index 428407f857..843b380e88 100644 --- a/stdlib/src/builtin/math.mojo +++ b/stdlib/src/builtin/math.mojo @@ -175,7 +175,7 @@ fn max(x: UInt, y: UInt, /) -> UInt: @always_inline("nodebug") -fn max(x: SIMD, y: __type_of(x), /) -> __type_of(x): +fn max[dtype: DType, //](x: SIMD[dtype, _], y: __type_of(x), /) -> __type_of(x): """Performs elementwise maximum of x and y. An element of the result SIMD vector will be the maximum of the @@ -184,6 +184,9 @@ fn max(x: SIMD, y: __type_of(x), /) -> __type_of(x): Constraints: The type of the inputs must be numeric or boolean. + Parameters: + dtype: The data type of the SIMD vector. + Args: x: First SIMD vector. y: Second SIMD vector. @@ -237,7 +240,7 @@ fn min(x: UInt, y: UInt, /) -> UInt: @always_inline("nodebug") -fn min(x: SIMD, y: __type_of(x), /) -> __type_of(x): +fn min[dtype: DType, //](x: SIMD[dtype, _], y: __type_of(x), /) -> __type_of(x): """Gets the elementwise minimum of x and y. An element of the result SIMD vector will be the minimum of the @@ -246,6 +249,9 @@ fn min(x: SIMD, y: __type_of(x), /) -> __type_of(x): Constraints: The type of the inputs must be numeric or boolean. + Parameters: + dtype: The data type of the SIMD vector. + Args: x: First SIMD vector. y: Second SIMD vector. From 8ba85b66d0c60408e68417cdb48d9b1fe8f9e3c8 Mon Sep 17 00:00:00 2001 From: Ken Jones <165197230+KenJones-Modular@users.noreply.github.com> Date: Thu, 19 Dec 2024 15:01:32 -0800 Subject: [PATCH 124/509] Fixed typo in @parameter documentation MODULAR_ORIG_COMMIT_REV_ID: 7d7f165ee7ad39beca388458632d90282aab0ca1 --- docs/manual/decorators/parameter.md | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/docs/manual/decorators/parameter.md b/docs/manual/decorators/parameter.md index 2b9f27e9e0..c7a717e22c 100644 --- a/docs/manual/decorators/parameter.md +++ b/docs/manual/decorators/parameter.md @@ -5,10 +5,11 @@ codeTitle: true --- -You can add the `@parameter` decorator on an `if` statement or on a nested -function to run that code at compile time. +You can add the `@parameter` decorator on an `if` or `for` statement to run that +code at compile time, or on a nested function to create a [parametric +closure](#parametric-closure). -## Parametric if statement +## Parametric `if` statement You can add `@parameter` to any `if` condition that's based on a valid parameter expression (it's an expression that evaluates at compile time). This @@ -27,7 +28,7 @@ else: this will be included in the binary ``` -## Parametric for statement +## Parametric `for` statement 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 @@ -39,7 +40,7 @@ This has the effect of "unrolling" the loop. ```mojo fn parameter_for[max: Int](): @parameter - for i in range(max) + for i in range(max): @parameter if i == 10: print("found 10!") @@ -61,8 +62,8 @@ differences when compared to the parametric `for` statement: (see below) and executes it a specified number of times. - The parametric `for` statement is more versatile, since you can do anything - you can do in a `for` statement: including using arbitrary sequences, - early-exiting from the loop, skipping iterations with `continue` and so on. + you can do in a `for` statement including: using arbitrary sequences, + early-exiting from the loop, skipping iterations with `continue`, and so on. By contrast, `unroll()` simply takes a function and a count, and executes the function the specified number of times. From 3988d06145095fd181bffac869985f857ebaa740 Mon Sep 17 00:00:00 2001 From: martinvuyk <110240700+martinvuyk@users.noreply.github.com> Date: Thu, 19 Dec 2024 18:10:20 -0600 Subject: [PATCH 125/509] [External] [stdlib] Create new string sub-package (#52916) [External] [stdlib] Create new string sub-package Closes https://github.com/modularml/mojo/issues/3871 Co-authored-by: martinvuyk <110240700+martinvuyk@users.noreply.github.com> Closes modularml/mojo#3880 MODULAR_ORIG_COMMIT_REV_ID: cd800d9888d1fe472fcb587c5b275781f94c0c87 --- .../benchmarks/collections/bench_string.mojo | 2 +- stdlib/src/builtin/int.mojo | 2 +- stdlib/src/builtin/simd.mojo | 3 ++- stdlib/src/builtin/string_literal.mojo | 9 +++---- stdlib/src/collections/string/__init__.mojo | 27 +++++++++++++++++++ .../string}/_unicode.mojo | 4 +-- .../string}/_unicode_lookups.mojo | 0 .../string}/_utf8_validation.mojo | 2 +- .../{utils => collections/string}/format.mojo | 2 +- .../string}/inline_string.mojo | 6 ++--- .../src/collections/{ => string}/string.mojo | 13 ++++----- .../string}/string_slice.mojo | 22 +++++++-------- stdlib/src/utils/__init__.mojo | 4 +-- stdlib/src/utils/index.mojo | 2 +- stdlib/src/utils/stringref.mojo | 4 +-- .../string}/test_inlined_string.mojo | 4 +-- .../collections/{ => string}/test_string.mojo | 18 ++++++------- .../string}/test_string_slice.mojo | 8 +++--- .../{test_format.mojo => test_write.mojo} | 2 +- ..._stdout.mojo => test_write_to_stdout.mojo} | 0 20 files changed, 79 insertions(+), 55 deletions(-) create mode 100644 stdlib/src/collections/string/__init__.mojo rename stdlib/src/{utils => collections/string}/_unicode.mojo (99%) rename stdlib/src/{utils => collections/string}/_unicode_lookups.mojo (100%) rename stdlib/src/{utils => collections/string}/_utf8_validation.mojo (100%) rename stdlib/src/{utils => collections/string}/format.mojo (99%) rename stdlib/src/{utils => collections/string}/inline_string.mojo (99%) rename stdlib/src/collections/{ => string}/string.mojo (99%) rename stdlib/src/{utils => collections/string}/string_slice.mojo (98%) rename stdlib/test/{utils => collections/string}/test_inlined_string.mojo (97%) rename stdlib/test/collections/{ => string}/test_string.mojo (99%) rename stdlib/test/{utils => collections/string}/test_string_slice.mojo (99%) rename stdlib/test/utils/{test_format.mojo => test_write.mojo} (97%) rename stdlib/test/utils/{test_format_to_stdout.mojo => test_write_to_stdout.mojo} (100%) diff --git a/stdlib/benchmarks/collections/bench_string.mojo b/stdlib/benchmarks/collections/bench_string.mojo index fc5dfc718e..8805ac9d06 100644 --- a/stdlib/benchmarks/collections/bench_string.mojo +++ b/stdlib/benchmarks/collections/bench_string.mojo @@ -22,7 +22,7 @@ from random import random_si64, seed from benchmark import Bench, BenchConfig, Bencher, BenchId, Unit, keep, run -from utils._utf8_validation import _is_valid_utf8 +from collections.string._utf8_validation import _is_valid_utf8 # ===-----------------------------------------------------------------------===# diff --git a/stdlib/src/builtin/int.mojo b/stdlib/src/builtin/int.mojo index c0da32d8c5..d90969f07f 100644 --- a/stdlib/src/builtin/int.mojo +++ b/stdlib/src/builtin/int.mojo @@ -16,7 +16,7 @@ These are Mojo built-ins, so you don't need to import them. """ from collections import KeyElement -from collections.string import ( +from collections.string.string import ( _calc_initial_buffer_size_int32, _calc_initial_buffer_size_int64, ) diff --git a/stdlib/src/builtin/simd.mojo b/stdlib/src/builtin/simd.mojo index 7ac510fd42..b720d4fb86 100644 --- a/stdlib/src/builtin/simd.mojo +++ b/stdlib/src/builtin/simd.mojo @@ -17,7 +17,8 @@ These are Mojo built-ins, so you don't need to import them. import math from collections import InlineArray -from collections.string import ( +from collections.string import StringSlice +from collections.string.string import ( _calc_format_buffer_size, _calc_initial_buffer_size, ) diff --git a/stdlib/src/builtin/string_literal.mojo b/stdlib/src/builtin/string_literal.mojo index 68bfc7a481..84f59e6abb 100644 --- a/stdlib/src/builtin/string_literal.mojo +++ b/stdlib/src/builtin/string_literal.mojo @@ -16,15 +16,14 @@ These are Mojo built-ins, so you don't need to import them. """ from collections import List +from collections.string.format import _CurlyEntryFormattable, _FormatCurlyEntry +from collections.string.string_slice import _StringSliceIter, _to_string_list from hashlib._hasher import _HashableWithHasher, _Hasher -from sys.ffi import c_char - from memory import UnsafePointer, memcpy, Span - +from sys.ffi import c_char from utils import StaticString, StringRef, StringSlice, Writable, Writer from utils._visualizers import lldb_formatter_wrapping_type -from utils.format import _CurlyEntryFormattable, _FormatCurlyEntry -from utils.string_slice import _StringSliceIter, _to_string_list + # ===-----------------------------------------------------------------------===# # StringLiteral diff --git a/stdlib/src/collections/string/__init__.mojo b/stdlib/src/collections/string/__init__.mojo new file mode 100644 index 0000000000..97f9fdc563 --- /dev/null +++ b/stdlib/src/collections/string/__init__.mojo @@ -0,0 +1,27 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2024, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # +"""Implements the string package.""" + +from .string import ( + String, + ascii, + atof, + atol, + chr, + isdigit, + islower, + isprintable, + isupper, + ord, +) +from .string_slice import StringSlice, StaticString diff --git a/stdlib/src/utils/_unicode.mojo b/stdlib/src/collections/string/_unicode.mojo similarity index 99% rename from stdlib/src/utils/_unicode.mojo rename to stdlib/src/collections/string/_unicode.mojo index fb61a24cd9..69bb129418 100644 --- a/stdlib/src/utils/_unicode.mojo +++ b/stdlib/src/collections/string/_unicode.mojo @@ -10,10 +10,10 @@ # See the License for the specific language governing permissions and # limitations under the License. # ===----------------------------------------------------------------------=== # + from bit import count_leading_zeros from memory import UnsafePointer, memcpy - -from ._unicode_lookups import * +from collections.string._unicode_lookups import * fn _uppercase_mapping_index(rune: Int) -> Int: diff --git a/stdlib/src/utils/_unicode_lookups.mojo b/stdlib/src/collections/string/_unicode_lookups.mojo similarity index 100% rename from stdlib/src/utils/_unicode_lookups.mojo rename to stdlib/src/collections/string/_unicode_lookups.mojo diff --git a/stdlib/src/utils/_utf8_validation.mojo b/stdlib/src/collections/string/_utf8_validation.mojo similarity index 100% rename from stdlib/src/utils/_utf8_validation.mojo rename to stdlib/src/collections/string/_utf8_validation.mojo index eb514733ca..31327dce89 100644 --- a/stdlib/src/utils/_utf8_validation.mojo +++ b/stdlib/src/collections/string/_utf8_validation.mojo @@ -26,9 +26,9 @@ https://github.com/simdutf/SimdUnicode/blob/main/src/UTF8.cs """ from base64._b64encode import _sub_with_saturation +from memory import UnsafePointer, Span from sys.intrinsics import llvm_intrinsic -from memory import UnsafePointer, Span alias TOO_SHORT: UInt8 = 1 << 0 alias TOO_LONG: UInt8 = 1 << 1 diff --git a/stdlib/src/utils/format.mojo b/stdlib/src/collections/string/format.mojo similarity index 99% rename from stdlib/src/utils/format.mojo rename to stdlib/src/collections/string/format.mojo index 59d1885c58..abaeb26c10 100644 --- a/stdlib/src/utils/format.mojo +++ b/stdlib/src/collections/string/format.mojo @@ -13,8 +13,8 @@ """Implements Formatting utilities.""" from collections import Optional - from memory import UnsafePointer +from utils import Variant # TODO: _FormatCurlyEntry and _FormatSpec should be public in the future for # people who want to write their own templating engines. This is not yet done diff --git a/stdlib/src/utils/inline_string.mojo b/stdlib/src/collections/string/inline_string.mojo similarity index 99% rename from stdlib/src/utils/inline_string.mojo rename to stdlib/src/collections/string/inline_string.mojo index 9be3326019..93703b8450 100644 --- a/stdlib/src/utils/inline_string.mojo +++ b/stdlib/src/collections/string/inline_string.mojo @@ -16,12 +16,12 @@ """ from collections import InlineArray, Optional +from collections.string import StringSlice +from memory import UnsafePointer, memcpy, Span from os import abort from sys import sizeof +from utils import Variant, StringRef -from memory import UnsafePointer, memcpy, Span - -from utils import StringSlice, Variant # ===-----------------------------------------------------------------------===# # InlineString diff --git a/stdlib/src/collections/string.mojo b/stdlib/src/collections/string/string.mojo similarity index 99% rename from stdlib/src/collections/string.mojo rename to stdlib/src/collections/string/string.mojo index 4e5438303c..b31dbf6a49 100644 --- a/stdlib/src/collections/string.mojo +++ b/stdlib/src/collections/string/string.mojo @@ -10,10 +10,7 @@ # See the License for the specific language governing permissions and # limitations under the License. # ===----------------------------------------------------------------------=== # -"""Implements basic object methods for working with strings. - -These are Mojo built-ins, so you don't need to import them. -""" +"""Implements basic object methods for working with strings.""" from collections import KeyElement, List, Optional from collections._index_normalization import normalize_index @@ -30,20 +27,20 @@ from utils import ( IndexList, StaticString, StringRef, - StringSlice, Variant, Writable, Writer, write_args, ) -from utils._unicode import ( +from collections.string._unicode import ( is_lowercase, is_uppercase, to_lowercase, to_uppercase, ) -from utils.format import _CurlyEntryFormattable, _FormatCurlyEntry -from utils.string_slice import ( +from collections.string.format import _CurlyEntryFormattable, _FormatCurlyEntry +from collections.string.string_slice import ( + StringSlice, _shift_unicode_to_utf8, _StringSliceIter, _to_string_list, diff --git a/stdlib/src/utils/string_slice.mojo b/stdlib/src/collections/string/string_slice.mojo similarity index 98% rename from stdlib/src/utils/string_slice.mojo rename to stdlib/src/collections/string/string_slice.mojo index d50447ab10..fb70f03a9a 100644 --- a/stdlib/src/utils/string_slice.mojo +++ b/stdlib/src/collections/string/string_slice.mojo @@ -12,27 +12,25 @@ # ===----------------------------------------------------------------------=== # """Implements the StringSlice type. -You can import these APIs from the `utils.string_slice` module. +You can import these APIs from the `collections.string.string_slice` module. Examples: ```mojo -from utils import StringSlice +from collections.string import StringSlice ``` """ -from collections import List, Optional -from collections.string import _atof, _atol, _isspace -from sys import bitwidthof, simdwidthof -from sys.intrinsics import unlikely, likely - from bit import count_leading_zeros +from collections import List, Optional +from collections.string.format import _CurlyEntryFormattable, _FormatCurlyEntry +from collections.string._utf8_validation import _is_valid_utf8 +from collections.string.string import _atof, _atol, _isspace from memory import UnsafePointer, memcmp, memcpy, Span from memory.memory import _memcmp_impl_unconstrained - -from utils.format import _CurlyEntryFormattable, _FormatCurlyEntry - -from ._utf8_validation import _is_valid_utf8 +from sys import bitwidthof, simdwidthof +from sys.intrinsics import unlikely, likely +from utils.stringref import StringRef, _memmem alias StaticString = StringSlice[StaticConstantOrigin] """An immutable static string slice.""" @@ -926,7 +924,7 @@ struct StringSlice[mut: Bool, //, origin: Origin[mut]]( # is positive, and offset from the end if `start` is negative. var haystack_str = self._from_start(start) - var loc = stringref._memmem( + var loc = _memmem( haystack_str.unsafe_ptr(), haystack_str.byte_length(), substr.unsafe_ptr(), diff --git a/stdlib/src/utils/__init__.mojo b/stdlib/src/utils/__init__.mojo index fa6129cc1c..2e3a0ea21f 100644 --- a/stdlib/src/utils/__init__.mojo +++ b/stdlib/src/utils/__init__.mojo @@ -13,11 +13,11 @@ """Implements the utils package.""" from .index import Index, IndexList, product -from .inline_string import InlineString +from collections.string.inline_string import InlineString from .lock import BlockingScopedLock, BlockingSpinLock, SpinWaiter from .loop import unroll from .static_tuple import StaticTuple -from .string_slice import StaticString, StringSlice +from collections.string.string_slice import StaticString, StringSlice from .stringref import StringRef from .variant import Variant from .write import Writable, Writer, write_args, write_buffered diff --git a/stdlib/src/utils/index.mojo b/stdlib/src/utils/index.mojo index 337e195d3b..91b36e464d 100644 --- a/stdlib/src/utils/index.mojo +++ b/stdlib/src/utils/index.mojo @@ -20,7 +20,7 @@ from utils import IndexList ``` """ -from collections.string import _calc_initial_buffer_size +from collections.string.string import _calc_initial_buffer_size from sys import bitwidthof from builtin.dtype import _int_type_of_width, _uint_type_of_width diff --git a/stdlib/src/utils/stringref.mojo b/stdlib/src/utils/stringref.mojo index 0699acc424..0b6877c9a1 100644 --- a/stdlib/src/utils/stringref.mojo +++ b/stdlib/src/utils/stringref.mojo @@ -13,7 +13,8 @@ """Implements the StringRef class. """ -from collections.string import _atol, _isspace +from collections.string import StringSlice +from collections.string.string import _atol, _isspace from hashlib._hasher import _HashableWithHasher, _Hasher from sys import simdwidthof from sys.ffi import c_char @@ -23,7 +24,6 @@ from builtin.dtype import _uint_type_of_width from memory import UnsafePointer, memcmp, pack_bits, Span from memory.memory import _memcmp_impl_unconstrained -from utils import StringSlice # ===----------------------------------------------------------------------=== # # Utilities diff --git a/stdlib/test/utils/test_inlined_string.mojo b/stdlib/test/collections/string/test_inlined_string.mojo similarity index 97% rename from stdlib/test/utils/test_inlined_string.mojo rename to stdlib/test/collections/string/test_inlined_string.mojo index b2bc0d1956..83a191b0a7 100644 --- a/stdlib/test/utils/test_inlined_string.mojo +++ b/stdlib/test/collections/string/test_inlined_string.mojo @@ -17,8 +17,8 @@ from os import abort from testing import assert_equal, assert_true -from utils import InlineString -from utils.inline_string import _FixedString +from collections.string import InlineString +from collections.string.inline_string import _FixedString def main(): diff --git a/stdlib/test/collections/test_string.mojo b/stdlib/test/collections/string/test_string.mojo similarity index 99% rename from stdlib/test/collections/test_string.mojo rename to stdlib/test/collections/string/test_string.mojo index bc76176772..74ae492479 100644 --- a/stdlib/test/collections/test_string.mojo +++ b/stdlib/test/collections/string/test_string.mojo @@ -12,14 +12,6 @@ # ===----------------------------------------------------------------------=== # # RUN: %mojo %s -from collections.string import ( - _calc_initial_buffer_size_int32, - _calc_initial_buffer_size_int64, - _isspace, -) - -from memory import UnsafePointer -from python import Python from testing import ( assert_equal, assert_false, @@ -28,7 +20,15 @@ from testing import ( assert_true, ) -from utils import StringRef, StringSlice +from collections.string import StringSlice +from collections.string.string import ( + _calc_initial_buffer_size_int32, + _calc_initial_buffer_size_int64, + _isspace, +) +from memory import UnsafePointer +from python import Python +from utils import StringRef @value diff --git a/stdlib/test/utils/test_string_slice.mojo b/stdlib/test/collections/string/test_string_slice.mojo similarity index 99% rename from stdlib/test/utils/test_string_slice.mojo rename to stdlib/test/collections/string/test_string_slice.mojo index dd7269a956..eb106c2e60 100644 --- a/stdlib/test/utils/test_string_slice.mojo +++ b/stdlib/test/collections/string/test_string_slice.mojo @@ -14,10 +14,12 @@ from testing import assert_equal, assert_false, assert_true +from collections.string.string_slice import ( + StringSlice, + _count_utf8_continuation_bytes, +) +from collections.string._utf8_validation import _is_valid_utf8 from memory import Span -from utils import StringSlice -from utils._utf8_validation import _is_valid_utf8 -from utils.string_slice import _count_utf8_continuation_bytes fn test_string_literal_byte_span() raises: diff --git a/stdlib/test/utils/test_format.mojo b/stdlib/test/utils/test_write.mojo similarity index 97% rename from stdlib/test/utils/test_format.mojo rename to stdlib/test/utils/test_write.mojo index 975d26464b..579b573892 100644 --- a/stdlib/test/utils/test_format.mojo +++ b/stdlib/test/utils/test_write.mojo @@ -15,7 +15,7 @@ from testing import assert_equal from utils import Writable, Writer -from utils.inline_string import _FixedString +from collections.string.inline_string import _FixedString fn main() raises: diff --git a/stdlib/test/utils/test_format_to_stdout.mojo b/stdlib/test/utils/test_write_to_stdout.mojo similarity index 100% rename from stdlib/test/utils/test_format_to_stdout.mojo rename to stdlib/test/utils/test_write_to_stdout.mojo From 9576a00c4a96111562af99c76030e36f3ef181ea Mon Sep 17 00:00:00 2001 From: Connor Gray Date: Thu, 19 Dec 2024 21:00:37 -0600 Subject: [PATCH 126/509] [stdlib] feat: Avoid `try/catch` in Dict.get() + add `Optional.copied()` This changes the implementation to `Dict.get()` so that `try/catch` is not used. `try/catch` are not currently supported as part of compile-time evaluations. * Add `Dict.get_ptr() -> Optional[Pointer[T]]` method. * Add `Optional.copied()` convenience method for copying an `Optional[Pointer[T]]`. Fixes MSTDL-1069 MODULAR_ORIG_COMMIT_REV_ID: f002e54b60b60f0f8d9b9a764816b841527596ef --- docs/changelog.md | 7 ++++ stdlib/src/collections/dict.mojo | 32 +++++++++++++---- stdlib/src/collections/optional.mojo | 42 ++++++++++++++++++++++ stdlib/test/collections/test_optional.mojo | 14 ++++++++ 4 files changed, 88 insertions(+), 7 deletions(-) diff --git a/docs/changelog.md b/docs/changelog.md index ef7aec9af6..04ede5b915 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -66,6 +66,13 @@ what we publish. var ptr2 = list2.unsafe_ptr() ``` +- Added `Optional.copied()` for constructing an owned `Optional[T]` from an + `Optional[Pointer[T]]` by copying the pointee value. + +- Added `Dict.get_ptr()` which returns an `Optional[Pointer[V]]`. If the given + key is present in the dictionary, the optional will hold a pointer to the + value. Otherwise, an empty optional is returned. + - Added new `List.extend()` overloads taking `SIMD` and `Span`. These enable growing a `List[Scalar[..]]` by copying the elements of a `SIMD` vector or `Span[Scalar[..]]`, simplifying the writing of some optimized SIMD-aware diff --git a/stdlib/src/collections/dict.mojo b/stdlib/src/collections/dict.mojo index 3dd86b2d39..244f615bf7 100644 --- a/stdlib/src/collections/dict.mojo +++ b/stdlib/src/collections/dict.mojo @@ -749,12 +749,11 @@ struct Dict[K: KeyElement, V: CollectionElement]( An optional value containing a copy of the value if it was present, otherwise an empty Optional. """ - try: # TODO(MOCO-604): push usage through - return self._find_ref(key) - except: - return None - # TODO(MOCO-604): Return Optional[Pointer] instead of raising + # TODO(MOCO-604): push usage through + # TODO(MOCO-1522): Drop `[T=V]` after fixing param inference issue. + return self.get_ptr(key).copied[T=V]() + fn _find_ref( ref self, key: K ) raises -> ref [self._entries[0].value().value] Self.V: @@ -767,6 +766,24 @@ struct Dict[K: KeyElement, V: CollectionElement]( An optional value containing a reference to the value if it is present, otherwise an empty Optional. """ + if entry := self.get_ptr(key): + # SAFETY: We just checked that `entry` is populated. + return entry.unsafe_value()[] + else: + raise "KeyError" + + fn get_ptr( + ref self, key: K + ) -> Optional[Pointer[V, __origin_of(self._entries[0].value().value)]]: + """Get a pointer to a value in the dictionary by key. + + Args: + key: The key to search for in the dictionary. + + Returns: + An optional value containing a pointer to the value if it is + present, otherwise an empty Optional. + """ var hash = hash(key) var found: Bool var slot: UInt64 @@ -775,8 +792,9 @@ struct Dict[K: KeyElement, V: CollectionElement]( if found: var entry = Pointer.address_of(self._entries[index]) debug_assert(entry[].__bool__(), "entry in index must be full") - return entry[].value().value - raise "KeyError" + return Pointer.address_of(entry[].value().value) + + return None fn get(self, key: K) -> Optional[V]: """Get a value from the dictionary by key. diff --git a/stdlib/src/collections/optional.mojo b/stdlib/src/collections/optional.mojo index 5d7eb7853a..b96d3d694a 100644 --- a/stdlib/src/collections/optional.mojo +++ b/stdlib/src/collections/optional.mojo @@ -388,6 +388,48 @@ struct Optional[T: CollectionElement]( return self._value[T] return default + fn copied[ + mut: Bool, + origin: Origin[mut], //, + T: CollectionElement, + ](self: Optional[Pointer[T, origin]]) -> Optional[T]: + """Converts an Optional containing a Pointer to an Optional of an owned + value by copying. + + If `self` is an empty `Optional`, the returned `Optional` will be empty + as well. + + Parameters: + mut: Mutability of the pointee origin. + origin: Origin of the contained `Pointer`. + T: Type of the owned result value. + + Returns: + An Optional containing an owned copy of the pointee value. + + # Examples + + Copy the value of an `Optional[Pointer[_]]` + + ```mojo + from collections import Optional + + var data = String("foo") + + var opt = Optional(Pointer.address_of(data)) + + # TODO(MOCO-1522): Drop `[T=String]` after fixing param inference issue. + var opt_owned: Optional[String] = opt.copied[T=String]() + ``` + . + """ + if self: + # SAFETY: We just checked that `self` is populated. + # Perform an implicit copy + return self.unsafe_value()[] + else: + return None + # ===-----------------------------------------------------------------------===# # OptionalReg diff --git a/stdlib/test/collections/test_optional.mojo b/stdlib/test/collections/test_optional.mojo index d606a2b392..6fe264cafd 100644 --- a/stdlib/test/collections/test_optional.mojo +++ b/stdlib/test/collections/test_optional.mojo @@ -157,6 +157,19 @@ def test_optional_equality(): assert_true(n == None) +def test_optional_copied(): + var data = String("foo") + + var opt_ref: Optional[Pointer[String, __origin_of(data)]] = Optional( + Pointer.address_of(data) + ) + + # Copy the optional Pointer value. + var opt_owned: Optional[String] = opt_ref.copied[T=String]() + + assert_equal(opt_owned.value(), String("foo")) + + def main(): test_basic() test_optional_reg_basic() @@ -168,3 +181,4 @@ def main(): test_optional_explicit_copy() test_optional_str_repr() test_optional_equality() + test_optional_copied() From fa2bca6fdf1b2f3eab3df8499d32996ebc53218c Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Fri, 20 Dec 2024 20:07:08 +1100 Subject: [PATCH 127/509] [mojo-lang] Replace `InitSelf` convention with `ByRefResult` This replaces the use of the InitSelf convention with the existing ByRefResult convention, making inits static functions that return Self. This simplifies the compiler by removing a concept entirely. As a consequence of this, the 'self' argument to inits is passed as the last argument in the IR instead of the first. MODULAR_ORIG_COMMIT_REV_ID: 8d6124b11312eadace129cc1bc3344d4c13915ba --- docs/changelog.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/docs/changelog.md b/docs/changelog.md index 04ede5b915..3a7dcb5ae1 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -20,6 +20,13 @@ what we publish. ### Language changes +- Initializers are now treated as static methods that return an instance of + `Self`. This means the `out` argument of an initializer is now treated the + same as a any other function result or `out` argument. This is generally + invisible, except that patterns like `instance.__init__()` and + `x.__copyinit__(y)` no longer work. Simply replace them with `instance = T()` + and `x = y` respectively. + ### Standard library changes - `UnsafePointer`'s `bitcast` method has now been split into `bitcast` From 5c54dca859b4e7beb06482b56354ff6e69b162d1 Mon Sep 17 00:00:00 2001 From: abdul dakkak Date: Fri, 20 Dec 2024 07:49:15 -0800 Subject: [PATCH 128/509] [Stdlib] Add test case for compile time dict operations MODULAR_ORIG_COMMIT_REV_ID: cea44ab2a2ea8715b78580c9e8709af97899eeb5 --- stdlib/test/collections/test_dict.mojo | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/stdlib/test/collections/test_dict.mojo b/stdlib/test/collections/test_dict.mojo index 030b16a6a3..d9252d8f3d 100644 --- a/stdlib/test/collections/test_dict.mojo +++ b/stdlib/test/collections/test_dict.mojo @@ -602,6 +602,23 @@ fn test_dict_setdefault() raises: assert_equal(0, other_dict["b"].copy_count) +def test_compile_time_dict(): + alias N = 10 + + fn _get_dict() -> Dict[String, Int32]: + var res = Dict[String, Int32]() + for i in range(N): + res[str(i)] = i + return res + + alias my_dict = _get_dict() + + @parameter + for i in range(N): + alias val = my_dict.get(str(i)).value() + assert_equal(val, i) + + def main(): test_dict() test_dict_fromkeys() @@ -615,3 +632,4 @@ def main(): test_clear() test_init_initial_capacity() test_dict_setdefault() + test_compile_time_dict() From 104f66a19b96d945866b070f243505faf93dc395 Mon Sep 17 00:00:00 2001 From: Connor Gray Date: Fri, 20 Dec 2024 13:41:09 -0600 Subject: [PATCH 129/509] [stdlib] comment: Add standard comment heads to `Dict` MODULAR_ORIG_COMMIT_REV_ID: 1420859c42d336f259f27f1ab2ee59e08c77290b --- stdlib/src/collections/dict.mojo | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/stdlib/src/collections/dict.mojo b/stdlib/src/collections/dict.mojo index 244f615bf7..76a5a14007 100644 --- a/stdlib/src/collections/dict.mojo +++ b/stdlib/src/collections/dict.mojo @@ -453,11 +453,18 @@ struct Dict[K: KeyElement, V: CollectionElement]( # don't churn and compact on repeated insert/delete, and instead amortize # compaction cost to O(1) amortized cost. - # Fields + # ===-------------------------------------------------------------------===# + # Aliases + # ===-------------------------------------------------------------------===# + alias EMPTY = _EMPTY alias REMOVED = _REMOVED alias _initial_reservation = 8 + # ===-------------------------------------------------------------------===# + # Fields + # ===-------------------------------------------------------------------===# + var size: Int """The number of elements currently stored in the dict.""" var _n_entries: Int From f8025f252c456fc65327414657eae7a1b43d533b Mon Sep 17 00:00:00 2001 From: Connor Gray Date: Fri, 20 Dec 2024 14:17:29 -0600 Subject: [PATCH 130/509] [stdlib] cleanup: Use `unsafe_value()` to avoid redundant `Optional` check MODULAR_ORIG_COMMIT_REV_ID: 429e0636e6a548e282cf1ff094b543579cd124b1 --- stdlib/src/collections/dict.mojo | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/stdlib/src/collections/dict.mojo b/stdlib/src/collections/dict.mojo index 76a5a14007..d84fc02797 100644 --- a/stdlib/src/collections/dict.mojo +++ b/stdlib/src/collections/dict.mojo @@ -799,7 +799,8 @@ struct Dict[K: KeyElement, V: CollectionElement]( if found: var entry = Pointer.address_of(self._entries[index]) debug_assert(entry[].__bool__(), "entry in index must be full") - return Pointer.address_of(entry[].value().value) + # SAFETY: We just checked that `entry` is present. + return Pointer.address_of(entry[].unsafe_value().value) return None From c33509ec9a4aa5e4bdee1641bab852fe9692a3f5 Mon Sep 17 00:00:00 2001 From: Lukas Hermann <1734032+lsh@users.noreply.github.com> Date: Fri, 20 Dec 2024 14:23:02 -0800 Subject: [PATCH 131/509] [stdlib] Move UnsafePointer Alignment Casting To Its Own Method As a follow up from splitting up `bitcast`, alignment is the odd one out, so we should split that off too. MODULAR_ORIG_COMMIT_REV_ID: 19c2b3149e9f6f6c318f7765df74e0507b46b564 --- docs/changelog.md | 3 +- stdlib/src/memory/unsafe_pointer.mojo | 38 ++++++++++++++++++++-- stdlib/test/memory/test_unsafepointer.mojo | 4 ++- 3 files changed, 40 insertions(+), 5 deletions(-) diff --git a/docs/changelog.md b/docs/changelog.md index 3a7dcb5ae1..2101a9ff44 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -31,6 +31,7 @@ what we publish. - `UnsafePointer`'s `bitcast` method has now been split into `bitcast` for changing the type, `origin_cast` for changing mutability, + `static_alignment_cast` for changing alignment, and `address_space_cast` for changing the address space. - `UnsafePointer` is now parameterized on mutability. Previously, @@ -55,7 +56,7 @@ what we publish. ```mojo var local = 10 # Cast the mutable pointer to be immutable. - var ptr = UnsafePointer.address_of(local).mut_cast[mut=False]() + var ptr = UnsafePointer.address_of(local).origin_cast[mut=False]() ``` - The `unsafe_ptr()` method on several standard library collection types have diff --git a/stdlib/src/memory/unsafe_pointer.mojo b/stdlib/src/memory/unsafe_pointer.mojo index 1c9dbf9b40..efe6018cd9 100644 --- a/stdlib/src/memory/unsafe_pointer.mojo +++ b/stdlib/src/memory/unsafe_pointer.mojo @@ -973,8 +973,6 @@ struct UnsafePointer[ @always_inline("nodebug") fn bitcast[ T: AnyType = Self.type, - /, - alignment: Int = Self.alignment, ](self) -> UnsafePointer[ T, address_space=address_space, @@ -986,7 +984,6 @@ struct UnsafePointer[ Parameters: T: The target type. - alignment: Alignment of the destination pointer. Returns: A new UnsafePointer object with the specified type and the same address, @@ -998,6 +995,41 @@ struct UnsafePointer[ ]._mlir_type, ](self.address) + @always_inline("nodebug") + fn static_alignment_cast[ + alignment: Int = Self.alignment + ](self) -> UnsafePointer[ + type, + address_space=address_space, + alignment=alignment, + mut=mut, + origin=origin, + ]: + """Changes the `alignment` of an `UnsafePointer`. + + The static alignment of an UnsafePointer must be greater + or equal to the actual alignment of the runtime pointer + value. Casting an UnsafePointer to a static alignment greater + than its runtime alignment may cause undefined behavior". + + This only changes the compile-time alignment encoded in the type of + this pointer. This does not change the alignment of the pointer address + at runtime. + + + Parameters: + alignment: Alignment of the destination pointer. + + Returns: + A new UnsafePointer object with the same type, address_space, and address, + as the original UnsafePointer, and the new specified alignment. + """ + return __mlir_op.`pop.pointer.bitcast`[ + _type = UnsafePointer[ + type, address_space=address_space, alignment=alignment + ]._mlir_type, + ](self.address) + @always_inline("nodebug") fn origin_cast[ mut: Bool = Self.mut, diff --git a/stdlib/test/memory/test_unsafepointer.mojo b/stdlib/test/memory/test_unsafepointer.mojo index b57fc793cb..09b7d11f70 100644 --- a/stdlib/test/memory/test_unsafepointer.mojo +++ b/stdlib/test/memory/test_unsafepointer.mojo @@ -133,7 +133,9 @@ def test_bitcast(): assert_equal(int(ptr), int(aliased_ptr)) - assert_equal(ptr.bitcast[ptr.type, alignment=33]().alignment, 33) + assert_equal( + ptr.bitcast[ptr.type]().static_alignment_cast[33]().alignment, 33 + ) _ = local From 019e4dda1cc647b1f41eda9a929a1697ab91a59b Mon Sep 17 00:00:00 2001 From: Connor Gray Date: Fri, 20 Dec 2024 20:51:09 -0600 Subject: [PATCH 132/509] [stdlib] feat: Add `StringSlice.from_utf8()` This adds a new convenience factory method to `StringSlice`, used for constructing a `StringSlice` to data containing valid UTF-8 encoded data. This method will raise an exception if the provided buffer does not contain valid UTF-8. This is part of pushing to do greater validating that `StringSlice` and `String` always contain valid UTF-8. All of the existing initializers for `StringSlice` are unsafe, and assume they've been given UTF-8 encoded data. MODULAR_ORIG_COMMIT_REV_ID: 2411144ce4399edaa71a31a27c60be691c9ca964 --- docs/changelog.md | 4 +++ .../src/collections/string/string_slice.mojo | 27 +++++++++++++++++++ .../collections/string/test_string_slice.mojo | 14 +++++++++- 3 files changed, 44 insertions(+), 1 deletion(-) diff --git a/docs/changelog.md b/docs/changelog.md index 2101a9ff44..df4f5fb50e 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -86,6 +86,10 @@ what we publish. `Span[Scalar[..]]`, simplifying the writing of some optimized SIMD-aware functionality. +- Added `StringSlice.from_utf()` factor method, for validated construction of + a `StringSlice` from a buffer containing UTF-8 encoded data. This method will + raise if the buffer contents are not valid UTF-8. + - The `ExplicitlyCopyable` trait has changed to require a `fn copy(self) -> Self` method. Previously, an initializer with the signature `fn __init__(out self, *, other: Self)` had been required by diff --git a/stdlib/src/collections/string/string_slice.mojo b/stdlib/src/collections/string/string_slice.mojo index fb70f03a9a..e4d8a60bdb 100644 --- a/stdlib/src/collections/string/string_slice.mojo +++ b/stdlib/src/collections/string/string_slice.mojo @@ -358,6 +358,33 @@ struct StringSlice[mut: Bool, //, origin: Origin[mut]]( ) self = StringSlice[O](unsafe_from_utf8=value.as_bytes()) + # ===-------------------------------------------------------------------===# + # Factory methods + # ===-------------------------------------------------------------------===# + + # TODO: Change to `__init__(out self, *, from_utf8: Span[..])` once ambiguity + # with existing `unsafe_from_utf8` overload is fixed. Would require + # signature comparision to take into account required named arguments. + @staticmethod + fn from_utf8(from_utf8: Span[Byte, origin]) raises -> StringSlice[origin]: + """Construct a new `StringSlice` from a buffer containing UTF-8 encoded + data. + + Args: + from_utf8: A span of bytes containing UTF-8 encoded data. + + Returns: + A new validated `StringSlice` pointing to the provided buffer. + + Raises: + An exception is raised if the provided buffer byte values do not + form valid UTF-8 encoded codepoints. + """ + if not _is_valid_utf8(from_utf8): + raise Error("StringSlice: buffer is not valid UTF-8") + + return StringSlice[origin](unsafe_from_utf8=from_utf8) + # ===------------------------------------------------------------------===# # Trait implementations # ===------------------------------------------------------------------===# diff --git a/stdlib/test/collections/string/test_string_slice.mojo b/stdlib/test/collections/string/test_string_slice.mojo index eb106c2e60..14e84ac80d 100644 --- a/stdlib/test/collections/string/test_string_slice.mojo +++ b/stdlib/test/collections/string/test_string_slice.mojo @@ -12,7 +12,7 @@ # ===----------------------------------------------------------------------=== # # RUN: %mojo %s -from testing import assert_equal, assert_false, assert_true +from testing import assert_equal, assert_false, assert_true, assert_raises from collections.string.string_slice import ( StringSlice, @@ -351,6 +351,17 @@ def test_bad_utf8_sequences(): assert_false(validate_utf8(sequence[])) +def test_stringslice_from_utf8(): + for sequence in GOOD_SEQUENCES: + var bytes = sequence[].as_bytes() + _ = StringSlice.from_utf8(bytes) + + for sequence in BAD_SEQUENCES: + with assert_raises(contains="buffer is not valid UTF-8"): + var bytes = sequence[].as_bytes() + _ = StringSlice.from_utf8(bytes) + + def test_combination_good_utf8_sequences(): # any combination of good sequences should be good for i in range(0, len(GOOD_SEQUENCES)): @@ -651,6 +662,7 @@ def main(): test_find() test_good_utf8_sequences() test_bad_utf8_sequences() + test_stringslice_from_utf8() test_combination_good_utf8_sequences() test_combination_bad_utf8_sequences() test_combination_good_bad_utf8_sequences() From f4b34fc038db51a4ec4ae9e8b08244d20300bd9e Mon Sep 17 00:00:00 2001 From: modularbot Date: Sat, 21 Dec 2024 20:31:12 +0000 Subject: [PATCH 133/509] Update lockfiles to point to latest nightly version: 25.1.0.dev2024122105 --- examples/life/magic.lock | 418 ++++++++++++------------- examples/magic.lock | 418 ++++++++++++------------- examples/notebooks/magic.lock | 556 +++++++++++++++++----------------- examples/operators/magic.lock | 418 ++++++++++++------------- magic.lock | 436 +++++++++++++------------- 5 files changed, 1153 insertions(+), 1093 deletions(-) diff --git a/examples/life/magic.lock b/examples/life/magic.lock index 5a7928b9c1..f9b11ce876 100644 --- a/examples/life/magic.lock +++ b/examples/life/magic.lock @@ -9,7 +9,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.10-py312h178313f_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.11-py312h178313f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/alsa-lib-1.2.13-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda @@ -69,7 +69,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2 - 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 - - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.12.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gettext-0.22.5-he02047a_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gettext-tools-0.22.5-he02047a_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gflags-2.2.2-h5888daf_1005.conda @@ -162,7 +162,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.49.2-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libvorbis-1.3.7-h9c3ff4c_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.4.0-hd590300_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.5.0-h851e524_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.5-h8d12d68_1.conda @@ -170,12 +170,12 @@ 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-25.1.0.dev2024121705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024121705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024121705-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122105-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024122105-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024122105-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122105-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-25.1.0.dev2024121705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122105-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_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.15-py312h98912ed_1.conda @@ -210,8 +210,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-18.1.0-py312h7900ff3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-18.1.0-py312h01725c0_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.3-pyh3cfb1c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.27.1-py312h12e396e_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.4-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.27.2-py312h12e396e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.7.0-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pygame-2.6.1-py312h4fcb14b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_1.conda @@ -253,7 +253,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda @@ -285,7 +285,7 @@ environments: linux-aarch64: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.10-py312hcc812fe_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.11-py312hcc812fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/alsa-lib-1.2.13-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda @@ -345,7 +345,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2 - 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 - - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.12.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gettext-0.22.5-h0a1ffab_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gettext-tools-0.22.5-h0a1ffab_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gflags-2.2.2-h5ad3122_1005.conda @@ -438,7 +438,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuv-1.49.2-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libvorbis-1.3.7-h01db608_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libwebp-base-1.4.0-h31becfc_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libwebp-base-1.5.0-h0886dbf_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcb-1.17.0-h262b8f6_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.5-h2e0c361_1.conda @@ -446,12 +446,12 @@ 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-25.1.0.dev2024121705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024121705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024121705-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122105-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024122105-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024122105-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122105-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-25.1.0.dev2024121705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122105-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_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.15-py312hdd3e373_1.conda @@ -486,8 +486,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-18.1.0-py312h8025657_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-18.1.0-py312h66f7834_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.3-pyh3cfb1c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pydantic-core-2.27.1-py312h8cbf658_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.4-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pydantic-core-2.27.2-py312h8cbf658_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.7.0-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pygame-2.6.1-py312hb2c8110_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_1.conda @@ -529,7 +529,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py312h52516f5_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda @@ -560,7 +560,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.6-h02f22dd_0.conda osx-arm64: - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.10-py312h998013c_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.11-py312h998013c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.7.0-pyhd8ed1ab_0.conda @@ -616,7 +616,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2 - 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 - - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.12.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gettext-0.22.5-h8414b35_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gettext-tools-0.22.5-h8414b35_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gflags-2.2.2-hf9b8971_1005.conda @@ -657,7 +657,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-26_osxarm64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcrc32c-1.1.2-hbdafb3b_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.11.1-h73640d1_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.5-ha82da77_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.6-ha82da77_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.23-hec38601_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20191231-hc8eb9b7_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libev-4.33-h93a5062_2.conda @@ -697,20 +697,20 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.9.0-h5505292_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libuv-1.49.2-h7ab814d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libvorbis-1.3.7-h9f76cd9_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.4.0-h93a5062_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.5.0-h2471fea_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxcb-1.17.0-hdb1d25a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.5-h178c5d8_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.5-hdb05f8b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.6-hdb05f8b_0.conda - 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-25.1.0.dev2024121705-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024121705-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024121705-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122105-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024122105-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024122105-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122105-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-25.1.0.dev2024121705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122105-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 @@ -744,8 +744,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-18.1.0-py312h1f38498_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-18.1.0-py312hc40f475_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.3-pyh3cfb1c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.27.1-py312hcd83bfe_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.4-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.27.2-py312hcd83bfe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.7.0-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pygame-2.6.1-py312hb14fe3b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_1.conda @@ -786,7 +786,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda @@ -874,12 +874,12 @@ packages: timestamp: 1733332029649 - kind: conda name: aiohttp - version: 3.11.10 + version: 3.11.11 build: py312h178313f_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.10-py312h178313f_0.conda - sha256: dc8ebdd99e9d7a07454a7063a295cdc7a86264648647fec10b2ceae97478e200 - md5: 3e92784b8e32ab7d0b95ee296ba79a99 + url: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.11-py312h178313f_0.conda + sha256: 2e817805e8a4fed33f23f116ff5649f8651af693328e9ed82d9d11a951338693 + md5: 8219afa093757bbe07b9825eb1973ed9 depends: - __glibc >=2.17,<3.0.a0 - aiohappyeyeballs >=2.3.0 @@ -894,16 +894,16 @@ packages: - yarl >=1.17.0,<2.0 license: MIT AND Apache-2.0 license_family: Apache - size: 914378 - timestamp: 1733839626367 + size: 915358 + timestamp: 1734597073870 - kind: conda name: aiohttp - version: 3.11.10 + version: 3.11.11 build: py312h998013c_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.10-py312h998013c_0.conda - sha256: 69eb9c89dce6a7ae960099172daffba9f77fef39344f37e581685a8e3c5debe6 - md5: 642356223364539ba7ba36556fcf49ee + url: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.11-py312h998013c_0.conda + sha256: 446f078e7a7b892894d7f4851a278b7834ffb4f5632313646a55c3abe13690d4 + md5: c69c904691364cfb27d15aa7153e9c29 depends: - __osx >=11.0 - aiohappyeyeballs >=2.3.0 @@ -918,16 +918,16 @@ packages: - yarl >=1.17.0,<2.0 license: MIT AND Apache-2.0 license_family: Apache - size: 874135 - timestamp: 1733839113411 + size: 875711 + timestamp: 1734597277258 - kind: conda name: aiohttp - version: 3.11.10 + version: 3.11.11 build: py312hcc812fe_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.10-py312hcc812fe_0.conda - sha256: df694a9fec546e575a4ea7e1c3ac476c0bda53c0fad44c046ad3ebdd5b75a0a8 - md5: a8c9ec59e6323b38418bbf04deaa0c02 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.11-py312hcc812fe_0.conda + sha256: f28e81e458d19df4ca0002f8a92d7f647fa25e8179887a8676801dfe44edb1f2 + md5: 11fa88136d9bf39d2136b2378f7c10be depends: - aiohappyeyeballs >=2.3.0 - aiosignal >=1.1.2 @@ -942,8 +942,8 @@ packages: - yarl >=1.17.0,<2.0 license: MIT AND Apache-2.0 license_family: Apache - size: 900931 - timestamp: 1733839037447 + size: 902422 + timestamp: 1734597104529 - kind: conda name: aiosignal version: 1.3.2 @@ -3141,20 +3141,19 @@ packages: timestamp: 1729699642726 - kind: conda name: fsspec - version: 2024.10.0 - build: pyhd8ed1ab_1 - build_number: 1 + version: 2024.12.0 + build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhd8ed1ab_1.conda - sha256: 790a50b4f94042951518f911a914a886a837c926094c6a14ed1d9d03ce336807 - md5: 906fe13095e734cb413b57a49116cdc8 + url: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.12.0-pyhd8ed1ab_0.conda + sha256: 3320970c4604989eadf908397a9475f9e6a96a773c185915111399cbfbe47817 + md5: e041ad4c43ab5e10c74587f95378ebc7 depends: - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 134726 - timestamp: 1733493445080 + size: 137756 + timestamp: 1734650349242 - kind: conda name: gettext version: 0.22.5 @@ -4627,6 +4626,7 @@ packages: - liblapacke 3.9.0 26_linux64_openblas - blas * openblas license: BSD-3-Clause + license_family: BSD size: 16393 timestamp: 1734432564346 - kind: conda @@ -4647,6 +4647,7 @@ packages: - libcblas 3.9.0 26_linuxaarch64_openblas - liblapack 3.9.0 26_linuxaarch64_openblas license: BSD-3-Clause + license_family: BSD size: 16477 timestamp: 1734432576699 - kind: conda @@ -4667,6 +4668,7 @@ packages: - libcblas 3.9.0 26_osxarm64_openblas - blas * openblas license: BSD-3-Clause + license_family: BSD size: 16714 timestamp: 1734433054681 - kind: conda @@ -4860,6 +4862,7 @@ packages: - liblapacke 3.9.0 26_linux64_openblas - blas * openblas license: BSD-3-Clause + license_family: BSD size: 16336 timestamp: 1734432570482 - kind: conda @@ -4878,6 +4881,7 @@ packages: - liblapacke 3.9.0 26_linuxaarch64_openblas - liblapack 3.9.0 26_linuxaarch64_openblas license: BSD-3-Clause + license_family: BSD size: 16398 timestamp: 1734432580937 - kind: conda @@ -4896,6 +4900,7 @@ packages: - liblapacke 3.9.0 26_osxarm64_openblas - blas * openblas license: BSD-3-Clause + license_family: BSD size: 16628 timestamp: 1734433061517 - kind: conda @@ -5005,18 +5010,19 @@ packages: timestamp: 1734000160270 - kind: conda name: libcxx - version: 19.1.5 - build: ha82da77_0 + version: 19.1.6 + build: ha82da77_1 + build_number: 1 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.5-ha82da77_0.conda - sha256: 7918cc0bb7a6554cdd3eee634c3dc414a1ab8ec49faeca1567367bb92118f9d7 - md5: 3c7be0df28ccda1d193ea6de56dcb5ff + url: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.6-ha82da77_1.conda + sha256: 2b2443404503cd862385fd2f2a2c73f9624686fd1e5a45050b4034cfc06904ec + md5: ce5252d8db110cdb4ae4173d0a63c7c5 depends: - __osx >=11.0 license: Apache-2.0 WITH LLVM-exception license_family: Apache - size: 519819 - timestamp: 1733291654212 + size: 520992 + timestamp: 1734494699681 - kind: conda name: libdb version: 6.2.32 @@ -5059,6 +5065,7 @@ packages: - __glibc >=2.17,<3.0.a0 - libgcc >=13 license: MIT + license_family: MIT size: 72255 timestamp: 1734373823254 - kind: conda @@ -5072,6 +5079,7 @@ packages: depends: - libgcc >=13 license: MIT + license_family: MIT size: 69862 timestamp: 1734373858306 - kind: conda @@ -5085,6 +5093,7 @@ packages: depends: - __osx >=11.0 license: MIT + license_family: MIT size: 54132 timestamp: 1734373971372 - kind: conda @@ -6129,6 +6138,7 @@ packages: - liblapacke 3.9.0 26_linux64_openblas - blas * openblas license: BSD-3-Clause + license_family: BSD size: 16338 timestamp: 1734432576650 - kind: conda @@ -6147,6 +6157,7 @@ packages: - liblapacke 3.9.0 26_linuxaarch64_openblas - libcblas 3.9.0 26_linuxaarch64_openblas license: BSD-3-Clause + license_family: BSD size: 16403 timestamp: 1734432585123 - kind: conda @@ -6165,6 +6176,7 @@ packages: - libcblas 3.9.0 26_osxarm64_openblas - blas * openblas license: BSD-3-Clause + license_family: BSD size: 16624 timestamp: 1734433068120 - kind: conda @@ -7285,50 +7297,50 @@ packages: timestamp: 1610609991029 - kind: conda name: libwebp-base - version: 1.4.0 - build: h31becfc_0 + version: 1.5.0 + build: h0886dbf_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libwebp-base-1.4.0-h31becfc_0.conda - sha256: 10dded60f274e29c573cfacf6e96f5d0fc374ee431250374a44cbd773916ab9d - md5: 5fd7ab3e5f382c70607fbac6335e6e19 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libwebp-base-1.5.0-h0886dbf_0.conda + sha256: b3d881a0ae08bb07fff7fa8ead506c8d2e0388733182fe4f216f3ec5d61ffcf0 + md5: 95ef4a689b8cc1b7e18b53784d88f96b depends: - - libgcc-ng >=12 + - libgcc >=13 constrains: - - libwebp 1.4.0 + - libwebp 1.5.0 license: BSD-3-Clause - license_family: BSD - size: 363577 - timestamp: 1713201785160 + size: 362623 + timestamp: 1734779054659 - kind: conda name: libwebp-base - version: 1.4.0 - build: h93a5062_0 + version: 1.5.0 + build: h2471fea_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.4.0-h93a5062_0.conda - sha256: 0d4bad713a512d79bfeb4d61821f447afab8b0792aca823f505ce6b195e9fde5 - md5: c0af0edfebe780b19940e94871f1a765 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.5.0-h2471fea_0.conda + sha256: f8bdb876b4bc8cb5df47c28af29188de8911c3fea4b799a33743500149de3f4a + md5: 569466afeb84f90d5bb88c11cc23d746 + depends: + - __osx >=11.0 constrains: - - libwebp 1.4.0 + - libwebp 1.5.0 license: BSD-3-Clause - license_family: BSD - size: 287750 - timestamp: 1713200194013 + size: 290013 + timestamp: 1734777593617 - kind: conda name: libwebp-base - version: 1.4.0 - build: hd590300_0 + version: 1.5.0 + build: h851e524_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.4.0-hd590300_0.conda - sha256: 49bc5f6b1e11cb2babf2a2a731d1a680a5e08a858280876a779dbda06c78c35f - md5: b26e8aa824079e1be0294e7152ca4559 + url: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.5.0-h851e524_0.conda + sha256: c45283fd3e90df5f0bd3dbcd31f59cdd2b001d424cf30a07223655413b158eaf + md5: 63f790534398730f59e1b899c3644d4a depends: - - libgcc-ng >=12 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 constrains: - - libwebp 1.4.0 + - libwebp 1.5.0 license: BSD-3-Clause - license_family: BSD - size: 438953 - timestamp: 1713199854503 + size: 429973 + timestamp: 1734777489810 - kind: conda name: libxcb version: 1.17.0 @@ -7521,20 +7533,20 @@ packages: timestamp: 1727963148474 - kind: conda name: llvm-openmp - version: 19.1.5 + version: 19.1.6 build: hdb05f8b_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.5-hdb05f8b_0.conda - sha256: e7ba0d8b718925efdcf1309f5e776e3264cc172d3af8d4048b39627c50a1abc0 - md5: f2c2e187a1d2637d282e34dc92021a70 + url: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.6-hdb05f8b_0.conda + sha256: a0f3e9139ab16f0a67b9d2bbabc15b78977168f4a5b5503fed4962dcb9a96102 + md5: 34fdeffa0555a1a56f38839415cc066c depends: - __osx >=11.0 constrains: - - openmp 19.1.5|19.1.5.* + - openmp 19.1.6|19.1.6.* license: Apache-2.0 WITH LLVM-exception license_family: APACHE - size: 281120 - timestamp: 1733376089600 + size: 281251 + timestamp: 1734520462311 - kind: conda name: lz4-c version: 1.10.0 @@ -7662,76 +7674,76 @@ packages: timestamp: 1733219945697 - kind: conda name: max - version: 25.1.0.dev2024121705 + version: 25.1.0.dev2024122105 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024121705-release.conda - sha256: 83b2265b29c1ee69ae9d9f639ab04899d0ef15b5abc9114e034e2cd382dcad31 - md5: bd7165d97ebb0458ddb1ce616c146c24 - depends: - - max-core ==25.1.0.dev2024121705 release - - max-python >=25.1.0.dev2024121705,<26.0a0 - - mojo-jupyter ==25.1.0.dev2024121705 release - - mblack ==25.1.0.dev2024121705 release + url: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122105-release.conda + sha256: 1e0513f880a8177c497d6834629f07b87081c1330ea744dafc95fe46be8027a0 + md5: f4c30ea26051f5bbf5000a3adec295e7 + depends: + - max-core ==25.1.0.dev2024122105 release + - max-python >=25.1.0.dev2024122105,<26.0a0 + - mojo-jupyter ==25.1.0.dev2024122105 release + - mblack ==25.1.0.dev2024122105 release license: LicenseRef-Modular-Proprietary - size: 9921 - timestamp: 1734412638047 + size: 9918 + timestamp: 1734758299194 - kind: conda name: max-core - version: 25.1.0.dev2024121705 + version: 25.1.0.dev2024122105 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024121705-release.conda - sha256: 15459b8446d3feb608baae398cf2753a3704e02e07cf2a6c02e166068d8a9304 - md5: 4ca65aff37bd7e944cce1697c1fe203e + url: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024122105-release.conda + sha256: 032159ddcf04826995c272caac82a2ae428dea443f7f2c6f3b382fc0efe0aa8a + md5: fb9e0c204a52897ac821ca65725fbbca depends: - - mblack ==25.1.0.dev2024121705 release + - mblack ==25.1.0.dev2024122105 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 245744992 - timestamp: 1734412638045 + size: 245838806 + timestamp: 1734758213295 - kind: conda name: max-core - version: 25.1.0.dev2024121705 + version: 25.1.0.dev2024122105 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024121705-release.conda - sha256: e89be4d7691a354a3f6e5d71e25b49447ca9fd1048fe03355c3bc509a726234d - md5: acc4b1208feaba5ad08c1b370192e127 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024122105-release.conda + sha256: d73be9f89391173a0a3c9b7d3c362733f8bf9d23b28aac0013992d65576bef3e + md5: cd364e29f1586ab5922873e2f7ba0e45 depends: - - mblack ==25.1.0.dev2024121705 release + - mblack ==25.1.0.dev2024122105 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 249373255 - timestamp: 1734412698620 + size: 249745867 + timestamp: 1734758299192 - kind: conda name: max-core - version: 25.1.0.dev2024121705 + version: 25.1.0.dev2024122105 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024121705-release.conda - sha256: edd613b122c086c4d6237c7195a55ce09bff9922ab70e0f1ff7a9662d3de41fe - md5: d68326deab9bb460f253bf6df7e903f6 + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024122105-release.conda + sha256: 630d1501ad7e70694bf4a131a90363ea44dfc5cebc46ded681b2535ed7377e76 + md5: c8e19c79e0049db94a0e287dd725eb96 depends: - - mblack ==25.1.0.dev2024121705 release + - mblack ==25.1.0.dev2024122105 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 214152137 - timestamp: 1734412888834 + size: 214335752 + timestamp: 1734807721655 - kind: conda name: max-python - version: 25.1.0.dev2024121705 + version: 25.1.0.dev2024122105 build: 3.12release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024121705-3.12release.conda - sha256: 11296250671f2a7c5951382f89f8e68a1702b0c8aeef200788e71d9e0e1d2955 - md5: f979494f9de5b3853834ffa1adf606c3 + url: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024122105-3.12release.conda + sha256: ea496197a0d531c7fd9b6f61879dff9d780e7faa9ce9223a9213ac27cb6f45d3 + md5: 06ccf6c3c46efd01d28ff4d192ff44d2 depends: - - max-core ==25.1.0.dev2024121705 release + - max-core ==25.1.0.dev2024122105 release - python 3.12.* - fastapi - httpx @@ -7754,18 +7766,18 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 122755617 - timestamp: 1734412638055 + size: 122928729 + timestamp: 1734758213305 - kind: conda name: max-python - version: 25.1.0.dev2024121705 + version: 25.1.0.dev2024122105 build: 3.12release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024121705-3.12release.conda - sha256: e4a7ded05f33903034e52feefe65f458975942740cf07dcb30e2e9c1f0af53e6 - md5: 9a51b55d48b861487dbecd7c4abc7b68 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024122105-3.12release.conda + sha256: 9520d2d8b908a48897a52c7f27f2a73d6f747a340333e98100cfb12547623aef + md5: b09a49c3d8bc27360c4e997609eb7149 depends: - - max-core ==25.1.0.dev2024121705 release + - max-core ==25.1.0.dev2024122105 release - python 3.12.* - fastapi - httpx @@ -7788,18 +7800,18 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 126486411 - timestamp: 1734412698632 + size: 126633261 + timestamp: 1734758299202 - kind: conda name: max-python - version: 25.1.0.dev2024121705 + version: 25.1.0.dev2024122105 build: 3.12release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024121705-3.12release.conda - sha256: 328cee9730cf537d58e6d24b9aa111504271433d724fd47fdcee55b26df222b3 - md5: b1168de7b96e9e7b0fad7c675ecdb426 + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024122105-3.12release.conda + sha256: 9888cc5976df9db0a45b374269ae02686d458438ce0fe906f94faabf626ee02b + md5: 3bf68dd30a73b233d47a739c07a47673 depends: - - max-core ==25.1.0.dev2024121705 release + - max-core ==25.1.0.dev2024122105 release - python 3.12.* - fastapi - httpx @@ -7822,17 +7834,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 113391631 - timestamp: 1734412888837 + size: 113518449 + timestamp: 1734807721659 - kind: conda name: mblack - version: 25.1.0.dev2024121705 + version: 25.1.0.dev2024122105 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121705-release.conda - sha256: 44d0c3a0b1242823334d6bad895ad037849719f67bcfbc426c65363c567f80a5 - md5: 93c89483058dabd0282c378812328ba0 + url: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122105-release.conda + sha256: baed1b93405745ade9759deffb26dc7ca1ba26ae33aa0c77a42527327d8b6825 + md5: eea3c5abc46eae804b254ef8b6fba00e depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -7842,8 +7854,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130801 - timestamp: 1734412638051 + size: 130807 + timestamp: 1734758299199 - kind: conda name: mdurl version: 0.1.2 @@ -7862,21 +7874,21 @@ packages: timestamp: 1733255681319 - kind: conda name: mojo-jupyter - version: 25.1.0.dev2024121705 + version: 25.1.0.dev2024122105 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024121705-release.conda - sha256: 8ef8447f576590d381ccaa82e6c207c530e9355b07ab3174f3df9c9f064d42de - md5: 4c31e34ff54c71cd9d584d3ab8f1c315 + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122105-release.conda + sha256: da4de3db554f0079a53da970d790520c31d94b7c78b1ccb9561cdf1eff940c03 + md5: 64ca82739f0503be3407f3b94406734e depends: - - max-core ==25.1.0.dev2024121705 release + - max-core ==25.1.0.dev2024122105 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22937 - timestamp: 1734412638052 + size: 22933 + timestamp: 1734758299200 - kind: conda name: mpg123 version: 1.32.9 @@ -8314,6 +8326,7 @@ packages: - python >=3.9 - requests >=2.7,<3.dev0 license: Apache-2.0 + license_family: APACHE size: 17147 timestamp: 1734345675510 - kind: conda @@ -9256,31 +9269,31 @@ packages: timestamp: 1733195786147 - kind: conda name: pydantic - version: 2.10.3 + version: 2.10.4 build: pyh3cfb1c2_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.3-pyh3cfb1c2_0.conda - sha256: cac9eebd3d5f8d8a497a9025d756257ddc75b8b3393e6737cb45077bd744d4f8 - md5: 194ef7f91286978521350f171b117f01 + url: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.4-pyh3cfb1c2_0.conda + sha256: e68400714532a33f34b44ddaee3e27e8dd6c83c3f31c7892ec10b84d13aa8b59 + md5: 93bccf4d7a58c9140d59491de21e044b depends: - annotated-types >=0.6.0 - - pydantic-core 2.27.1 + - pydantic-core 2.27.2 - python >=3.9 - typing-extensions >=4.6.1 - typing_extensions >=4.12.2 license: MIT license_family: MIT - size: 317037 - timestamp: 1733316963547 + size: 296557 + timestamp: 1734609427697 - kind: conda name: pydantic-core - version: 2.27.1 + version: 2.27.2 build: py312h12e396e_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.27.1-py312h12e396e_0.conda - sha256: c89741f4eff395f8de70975f42e1f20591f0e0870929d440af35b13399976b09 - md5: 114030cb28527db2c385f07038e914c8 + url: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.27.2-py312h12e396e_0.conda + sha256: 81602a4592ad2ac1a1cb57372fd25214e63b1c477d5818b0c21cde0f1f85c001 + md5: bae01b2563030c085f5158c518b84e86 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -9291,16 +9304,16 @@ packages: - __glibc >=2.17 license: MIT license_family: MIT - size: 1635156 - timestamp: 1732254225040 + size: 1641402 + timestamp: 1734571789895 - kind: conda name: pydantic-core - version: 2.27.1 + version: 2.27.2 build: py312h8cbf658_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/pydantic-core-2.27.1-py312h8cbf658_0.conda - sha256: 1f59bc1914f77faed3c95217e4d093310771baee4e93a15c0479359559e3fa19 - md5: d980860b8bf193f53d30a19c5d2bf070 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/pydantic-core-2.27.2-py312h8cbf658_0.conda + sha256: 623e0f3846f15d035ce7ab7ae445fc8d9e547b6684ab55858b6f44510d24b097 + md5: 9677f6ab4bf27ba3c2aee70d08c7b27c depends: - libgcc >=13 - python >=3.12,<3.13.0a0 @@ -9311,16 +9324,16 @@ packages: - __glibc >=2.17 license: MIT license_family: MIT - size: 1503747 - timestamp: 1732254331303 + size: 1505076 + timestamp: 1734571966615 - kind: conda name: pydantic-core - version: 2.27.1 + version: 2.27.2 build: py312hcd83bfe_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.27.1-py312hcd83bfe_0.conda - sha256: 5bba8de2bbbbdb39390abb1e2aff310e8cfd49646ae5a0e0ea4d6582bd1d52ba - md5: 3847a96eaf24a877b6091150ff9c4955 + url: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.27.2-py312hcd83bfe_0.conda + sha256: cfa7201f890d5d08ce29ff70e65a96787d5793a1718776733666b44bbd4a1205 + md5: dcb307e02f17d38c6e1cbfbf8c602852 depends: - __osx >=11.0 - python >=3.12,<3.13.0a0 @@ -9331,8 +9344,8 @@ packages: - __osx >=11.0 license: MIT license_family: MIT - size: 1449057 - timestamp: 1732254359451 + size: 1593461 + timestamp: 1734571986644 - kind: conda name: pydantic-settings version: 2.7.0 @@ -10867,14 +10880,13 @@ packages: timestamp: 1733367480074 - kind: conda name: transformers - version: 4.47.0 - build: pyhd8ed1ab_1 - build_number: 1 + version: 4.47.1 + build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.0-pyhd8ed1ab_1.conda - sha256: d31821081219a0ede5c1f356b65a61ce98ac11e2df78b0eaa684c17c73389fbf - md5: 6d2ec1ddee8057d2d724a0ab0bb578a0 + url: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.1-pyhd8ed1ab_0.conda + sha256: df8238c3cccbb6bb1d5657e6a75977ac0b832ab61155d5e3d8560c1c4f52abeb + md5: 931d66db156680c42c62812d6533cbf7 depends: - datasets !=2.5.0 - filelock @@ -10890,8 +10902,8 @@ packages: - tqdm >=4.27 license: Apache-2.0 license_family: APACHE - size: 3726957 - timestamp: 1733948063517 + size: 3680276 + timestamp: 1734499046193 - kind: conda name: typer version: 0.15.1 diff --git a/examples/magic.lock b/examples/magic.lock index bbc36e1ea4..e9764d9d99 100644 --- a/examples/magic.lock +++ b/examples/magic.lock @@ -9,7 +9,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.10-py311h2dc5d0c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.11-py311h2dc5d0c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.7.0-pyhd8ed1ab_0.conda @@ -54,7 +54,7 @@ environments: - 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 - - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.12.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gflags-2.2.2-h5888daf_1005.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/glog-0.7.1-hbabe93e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda @@ -123,7 +123,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.9.0-hb9d3cd8_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.49.2-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.4.0-hd590300_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.5.0-h851e524_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.5-h0d44e9d_1.conda @@ -131,12 +131,12 @@ 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-25.1.0.dev2024121705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024121705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024121705-3.11release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122105-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024122105-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024122105-3.11release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122105-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-25.1.0.dev2024121705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122105-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 @@ -164,8 +164,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-18.1.0-py311h38be061_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-18.1.0-py311h4854187_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.3-pyh3cfb1c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.27.1-py311h9e33e62_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.4-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.27.2-py311h9e33e62_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.7.0-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyinstrument-5.0.0-py311h9ecbd09_0.conda @@ -200,7 +200,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py311h9ecbd09_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda @@ -226,7 +226,7 @@ environments: linux-aarch64: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.10-py311h58d527c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.11-py311h58d527c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.7.0-pyhd8ed1ab_0.conda @@ -271,7 +271,7 @@ environments: - 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 - - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.12.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gflags-2.2.2-h5ad3122_1005.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/glog-0.7.1-h468a4a4_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda @@ -341,7 +341,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.9.0-h86ecc28_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuv-1.49.2-h86ecc28_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libwebp-base-1.4.0-h31becfc_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libwebp-base-1.5.0-h0886dbf_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcb-1.17.0-h262b8f6_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.5-h2e0c361_1.conda @@ -349,12 +349,12 @@ 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-25.1.0.dev2024121705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024121705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024121705-3.11release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122105-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024122105-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024122105-3.11release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122105-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-25.1.0.dev2024121705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122105-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 @@ -382,8 +382,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-18.1.0-py311hfecb2dc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-18.1.0-py311ha6d2531_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.3-pyh3cfb1c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pydantic-core-2.27.1-py311h0ca61a2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.4-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pydantic-core-2.27.2-py311h0ca61a2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.7.0-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyinstrument-5.0.0-py311ha879c10_0.conda @@ -418,7 +418,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py311h5487e9b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda @@ -443,7 +443,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.6-h02f22dd_0.conda osx-arm64: - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.10-py311h4921393_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.11-py311h4921393_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.7.0-pyhd8ed1ab_0.conda @@ -488,7 +488,7 @@ environments: - 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 - - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.12.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gflags-2.2.2-hf9b8971_1005.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/glog-0.7.1-heb240a5_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda @@ -521,7 +521,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-26_osxarm64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcrc32c-1.1.2-hbdafb3b_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.11.1-h73640d1_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.5-ha82da77_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.6-ha82da77_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.23-hec38601_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20191231-hc8eb9b7_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libev-4.33-h93a5062_2.conda @@ -550,20 +550,20 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-h551f018_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.9.0-h5505292_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libuv-1.49.2-h7ab814d_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.4.0-h93a5062_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.5.0-h2471fea_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxcb-1.17.0-hdb1d25a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.5-h178c5d8_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.5-hdb05f8b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.6-hdb05f8b_0.conda - 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-25.1.0.dev2024121705-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024121705-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024121705-3.11release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122105-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024122105-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024122105-3.11release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122105-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-25.1.0.dev2024121705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122105-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 @@ -591,8 +591,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-18.1.0-py311ha1ab1f8_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-18.1.0-py311he04fa90_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.3-pyh3cfb1c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.27.1-py311h3ff9189_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.4-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.27.2-py311h3ff9189_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.7.0-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyinstrument-5.0.0-py311hae2e1ce_0.conda @@ -626,7 +626,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py311h917b07b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda @@ -714,12 +714,12 @@ packages: timestamp: 1733332029649 - kind: conda name: aiohttp - version: 3.11.10 + version: 3.11.11 build: py311h2dc5d0c_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.10-py311h2dc5d0c_0.conda - sha256: 387a234321dd956e6b18aa338aae28a42fa804cb121292b5ab767410a92a5dca - md5: 7ddc4f7d7120a103af3e06cf7f7e7fb1 + url: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.11-py311h2dc5d0c_0.conda + sha256: 36f9d3a88ece3048582551435f85f494911c805b188650b2589ffded2b52d74f + md5: 098c05da2799d9300eec94c24a7c8bda depends: - __glibc >=2.17,<3.0.a0 - aiohappyeyeballs >=2.3.0 @@ -734,16 +734,16 @@ packages: - yarl >=1.17.0,<2.0 license: MIT AND Apache-2.0 license_family: Apache - size: 921209 - timestamp: 1733839979846 + size: 922661 + timestamp: 1734597050134 - kind: conda name: aiohttp - version: 3.11.10 + version: 3.11.11 build: py311h4921393_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.10-py311h4921393_0.conda - sha256: 27867a0d1f300689560328cda025eff7d41d0d8496a9a01631aaa930c6646d3d - md5: 6fa633c40fb67bf8f957e442a6acaaab + url: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.11-py311h4921393_0.conda + sha256: ab72cf46f71f1a611c0ad9a8abf144b8cfd6d5d49363513d9a9d9c14d97ead97 + md5: a478957d38ef52e856c11429fd505ec6 depends: - __osx >=11.0 - aiohappyeyeballs >=2.3.0 @@ -758,16 +758,16 @@ packages: - yarl >=1.17.0,<2.0 license: MIT AND Apache-2.0 license_family: Apache - size: 880378 - timestamp: 1733839047160 + size: 881820 + timestamp: 1734597274648 - kind: conda name: aiohttp - version: 3.11.10 + version: 3.11.11 build: py311h58d527c_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.10-py311h58d527c_0.conda - sha256: ec2384157e169b6ad1e470a4855ed987bf2f19dac69a9156785f19bbb114d33b - md5: 899276b5c5a33aa77fdb738be26f83ed + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.11-py311h58d527c_0.conda + sha256: c2e4d66d513172964276b234f4ce083ced8bbcad66dd587af43712c3c64f0aa8 + md5: 768cae9a9d28a575e7242f189b5fefb7 depends: - aiohappyeyeballs >=2.3.0 - aiosignal >=1.1.2 @@ -782,8 +782,8 @@ packages: - yarl >=1.17.0,<2.0 license: MIT AND Apache-2.0 license_family: Apache - size: 915134 - timestamp: 1733838911893 + size: 915731 + timestamp: 1734597110765 - kind: conda name: aiosignal version: 1.3.2 @@ -2477,20 +2477,19 @@ packages: timestamp: 1729699703032 - kind: conda name: fsspec - version: 2024.10.0 - build: pyhd8ed1ab_1 - build_number: 1 + version: 2024.12.0 + build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhd8ed1ab_1.conda - sha256: 790a50b4f94042951518f911a914a886a837c926094c6a14ed1d9d03ce336807 - md5: 906fe13095e734cb413b57a49116cdc8 + url: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.12.0-pyhd8ed1ab_0.conda + sha256: 3320970c4604989eadf908397a9475f9e6a96a773c185915111399cbfbe47817 + md5: e041ad4c43ab5e10c74587f95378ebc7 depends: - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 134726 - timestamp: 1733493445080 + size: 137756 + timestamp: 1734650349242 - kind: conda name: gflags version: 2.2.2 @@ -3493,6 +3492,7 @@ packages: - liblapacke 3.9.0 26_linux64_openblas - blas * openblas license: BSD-3-Clause + license_family: BSD size: 16393 timestamp: 1734432564346 - kind: conda @@ -3513,6 +3513,7 @@ packages: - libcblas 3.9.0 26_linuxaarch64_openblas - liblapack 3.9.0 26_linuxaarch64_openblas license: BSD-3-Clause + license_family: BSD size: 16477 timestamp: 1734432576699 - kind: conda @@ -3533,6 +3534,7 @@ packages: - libcblas 3.9.0 26_osxarm64_openblas - blas * openblas license: BSD-3-Clause + license_family: BSD size: 16714 timestamp: 1734433054681 - kind: conda @@ -3695,6 +3697,7 @@ packages: - liblapacke 3.9.0 26_linux64_openblas - blas * openblas license: BSD-3-Clause + license_family: BSD size: 16336 timestamp: 1734432570482 - kind: conda @@ -3713,6 +3716,7 @@ packages: - liblapacke 3.9.0 26_linuxaarch64_openblas - liblapack 3.9.0 26_linuxaarch64_openblas license: BSD-3-Clause + license_family: BSD size: 16398 timestamp: 1734432580937 - kind: conda @@ -3731,6 +3735,7 @@ packages: - liblapacke 3.9.0 26_osxarm64_openblas - blas * openblas license: BSD-3-Clause + license_family: BSD size: 16628 timestamp: 1734433061517 - kind: conda @@ -3840,18 +3845,19 @@ packages: timestamp: 1734000160270 - kind: conda name: libcxx - version: 19.1.5 - build: ha82da77_0 + version: 19.1.6 + build: ha82da77_1 + build_number: 1 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.5-ha82da77_0.conda - sha256: 7918cc0bb7a6554cdd3eee634c3dc414a1ab8ec49faeca1567367bb92118f9d7 - md5: 3c7be0df28ccda1d193ea6de56dcb5ff + url: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.6-ha82da77_1.conda + sha256: 2b2443404503cd862385fd2f2a2c73f9624686fd1e5a45050b4034cfc06904ec + md5: ce5252d8db110cdb4ae4173d0a63c7c5 depends: - __osx >=11.0 license: Apache-2.0 WITH LLVM-exception license_family: Apache - size: 519819 - timestamp: 1733291654212 + size: 520992 + timestamp: 1734494699681 - kind: conda name: libdeflate version: '1.23' @@ -3864,6 +3870,7 @@ packages: - __glibc >=2.17,<3.0.a0 - libgcc >=13 license: MIT + license_family: MIT size: 72255 timestamp: 1734373823254 - kind: conda @@ -3877,6 +3884,7 @@ packages: depends: - libgcc >=13 license: MIT + license_family: MIT size: 69862 timestamp: 1734373858306 - kind: conda @@ -3890,6 +3898,7 @@ packages: depends: - __osx >=11.0 license: MIT + license_family: MIT size: 54132 timestamp: 1734373971372 - kind: conda @@ -4628,6 +4637,7 @@ packages: - liblapacke 3.9.0 26_linux64_openblas - blas * openblas license: BSD-3-Clause + license_family: BSD size: 16338 timestamp: 1734432576650 - kind: conda @@ -4646,6 +4656,7 @@ packages: - liblapacke 3.9.0 26_linuxaarch64_openblas - libcblas 3.9.0 26_linuxaarch64_openblas license: BSD-3-Clause + license_family: BSD size: 16403 timestamp: 1734432585123 - kind: conda @@ -4664,6 +4675,7 @@ packages: - libcblas 3.9.0 26_osxarm64_openblas - blas * openblas license: BSD-3-Clause + license_family: BSD size: 16624 timestamp: 1734433068120 - kind: conda @@ -5505,50 +5517,50 @@ packages: timestamp: 1729322566955 - kind: conda name: libwebp-base - version: 1.4.0 - build: h31becfc_0 + version: 1.5.0 + build: h0886dbf_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libwebp-base-1.4.0-h31becfc_0.conda - sha256: 10dded60f274e29c573cfacf6e96f5d0fc374ee431250374a44cbd773916ab9d - md5: 5fd7ab3e5f382c70607fbac6335e6e19 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libwebp-base-1.5.0-h0886dbf_0.conda + sha256: b3d881a0ae08bb07fff7fa8ead506c8d2e0388733182fe4f216f3ec5d61ffcf0 + md5: 95ef4a689b8cc1b7e18b53784d88f96b depends: - - libgcc-ng >=12 + - libgcc >=13 constrains: - - libwebp 1.4.0 + - libwebp 1.5.0 license: BSD-3-Clause - license_family: BSD - size: 363577 - timestamp: 1713201785160 + size: 362623 + timestamp: 1734779054659 - kind: conda name: libwebp-base - version: 1.4.0 - build: h93a5062_0 + version: 1.5.0 + build: h2471fea_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.4.0-h93a5062_0.conda - sha256: 0d4bad713a512d79bfeb4d61821f447afab8b0792aca823f505ce6b195e9fde5 - md5: c0af0edfebe780b19940e94871f1a765 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.5.0-h2471fea_0.conda + sha256: f8bdb876b4bc8cb5df47c28af29188de8911c3fea4b799a33743500149de3f4a + md5: 569466afeb84f90d5bb88c11cc23d746 + depends: + - __osx >=11.0 constrains: - - libwebp 1.4.0 + - libwebp 1.5.0 license: BSD-3-Clause - license_family: BSD - size: 287750 - timestamp: 1713200194013 + size: 290013 + timestamp: 1734777593617 - kind: conda name: libwebp-base - version: 1.4.0 - build: hd590300_0 + version: 1.5.0 + build: h851e524_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.4.0-hd590300_0.conda - sha256: 49bc5f6b1e11cb2babf2a2a731d1a680a5e08a858280876a779dbda06c78c35f - md5: b26e8aa824079e1be0294e7152ca4559 + url: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.5.0-h851e524_0.conda + sha256: c45283fd3e90df5f0bd3dbcd31f59cdd2b001d424cf30a07223655413b158eaf + md5: 63f790534398730f59e1b899c3644d4a depends: - - libgcc-ng >=12 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 constrains: - - libwebp 1.4.0 + - libwebp 1.5.0 license: BSD-3-Clause - license_family: BSD - size: 438953 - timestamp: 1713199854503 + size: 429973 + timestamp: 1734777489810 - kind: conda name: libxcb version: 1.17.0 @@ -5742,20 +5754,20 @@ packages: timestamp: 1727963148474 - kind: conda name: llvm-openmp - version: 19.1.5 + version: 19.1.6 build: hdb05f8b_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.5-hdb05f8b_0.conda - sha256: e7ba0d8b718925efdcf1309f5e776e3264cc172d3af8d4048b39627c50a1abc0 - md5: f2c2e187a1d2637d282e34dc92021a70 + url: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.6-hdb05f8b_0.conda + sha256: a0f3e9139ab16f0a67b9d2bbabc15b78977168f4a5b5503fed4962dcb9a96102 + md5: 34fdeffa0555a1a56f38839415cc066c depends: - __osx >=11.0 constrains: - - openmp 19.1.5|19.1.5.* + - openmp 19.1.6|19.1.6.* license: Apache-2.0 WITH LLVM-exception license_family: APACHE - size: 281120 - timestamp: 1733376089600 + size: 281251 + timestamp: 1734520462311 - kind: conda name: lz4-c version: 1.10.0 @@ -5883,76 +5895,76 @@ packages: timestamp: 1733220925299 - kind: conda name: max - version: 25.1.0.dev2024121705 + version: 25.1.0.dev2024122105 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024121705-release.conda - sha256: 83b2265b29c1ee69ae9d9f639ab04899d0ef15b5abc9114e034e2cd382dcad31 - md5: bd7165d97ebb0458ddb1ce616c146c24 - depends: - - max-core ==25.1.0.dev2024121705 release - - max-python >=25.1.0.dev2024121705,<26.0a0 - - mojo-jupyter ==25.1.0.dev2024121705 release - - mblack ==25.1.0.dev2024121705 release + url: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122105-release.conda + sha256: 1e0513f880a8177c497d6834629f07b87081c1330ea744dafc95fe46be8027a0 + md5: f4c30ea26051f5bbf5000a3adec295e7 + depends: + - max-core ==25.1.0.dev2024122105 release + - max-python >=25.1.0.dev2024122105,<26.0a0 + - mojo-jupyter ==25.1.0.dev2024122105 release + - mblack ==25.1.0.dev2024122105 release license: LicenseRef-Modular-Proprietary - size: 9921 - timestamp: 1734412638047 + size: 9918 + timestamp: 1734758299194 - kind: conda name: max-core - version: 25.1.0.dev2024121705 + version: 25.1.0.dev2024122105 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024121705-release.conda - sha256: 15459b8446d3feb608baae398cf2753a3704e02e07cf2a6c02e166068d8a9304 - md5: 4ca65aff37bd7e944cce1697c1fe203e + url: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024122105-release.conda + sha256: 032159ddcf04826995c272caac82a2ae428dea443f7f2c6f3b382fc0efe0aa8a + md5: fb9e0c204a52897ac821ca65725fbbca depends: - - mblack ==25.1.0.dev2024121705 release + - mblack ==25.1.0.dev2024122105 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 245744992 - timestamp: 1734412638045 + size: 245838806 + timestamp: 1734758213295 - kind: conda name: max-core - version: 25.1.0.dev2024121705 + version: 25.1.0.dev2024122105 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024121705-release.conda - sha256: e89be4d7691a354a3f6e5d71e25b49447ca9fd1048fe03355c3bc509a726234d - md5: acc4b1208feaba5ad08c1b370192e127 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024122105-release.conda + sha256: d73be9f89391173a0a3c9b7d3c362733f8bf9d23b28aac0013992d65576bef3e + md5: cd364e29f1586ab5922873e2f7ba0e45 depends: - - mblack ==25.1.0.dev2024121705 release + - mblack ==25.1.0.dev2024122105 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 249373255 - timestamp: 1734412698620 + size: 249745867 + timestamp: 1734758299192 - kind: conda name: max-core - version: 25.1.0.dev2024121705 + version: 25.1.0.dev2024122105 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024121705-release.conda - sha256: edd613b122c086c4d6237c7195a55ce09bff9922ab70e0f1ff7a9662d3de41fe - md5: d68326deab9bb460f253bf6df7e903f6 + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024122105-release.conda + sha256: 630d1501ad7e70694bf4a131a90363ea44dfc5cebc46ded681b2535ed7377e76 + md5: c8e19c79e0049db94a0e287dd725eb96 depends: - - mblack ==25.1.0.dev2024121705 release + - mblack ==25.1.0.dev2024122105 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 214152137 - timestamp: 1734412888834 + size: 214335752 + timestamp: 1734807721655 - kind: conda name: max-python - version: 25.1.0.dev2024121705 + version: 25.1.0.dev2024122105 build: 3.11release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024121705-3.11release.conda - sha256: b5610ed703f232815e735d9c97f50c90463558e7a2077fbf7263e8d92d8720a7 - md5: bd28c42c3fcb0456710f4c1b218086cd + url: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024122105-3.11release.conda + sha256: 564d3407ba8458bbc9ff6059a1efb7eafac737a5c38910835968b2372c6e9373 + md5: 81f905c2afa941d0d49dff40c1b3562a depends: - - max-core ==25.1.0.dev2024121705 release + - max-core ==25.1.0.dev2024122105 release - python 3.11.* - fastapi - httpx @@ -5975,18 +5987,18 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 122766289 - timestamp: 1734412638053 + size: 122979589 + timestamp: 1734758213303 - kind: conda name: max-python - version: 25.1.0.dev2024121705 + version: 25.1.0.dev2024122105 build: 3.11release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024121705-3.11release.conda - sha256: 3a468f1f2a0deadb88d19cd64dd7d851cc1c532abb21771f3a22774cb09cd924 - md5: 018c6b78b66588ca7bb7ea6e3945cdf7 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024122105-3.11release.conda + sha256: b17dbc0de6f9374dd2806c3d7e547b39447e4d3115e4830f0e9c513a451c4031 + md5: 0a391501138dcc904d0073a3bbfcb942 depends: - - max-core ==25.1.0.dev2024121705 release + - max-core ==25.1.0.dev2024122105 release - python 3.11.* - fastapi - httpx @@ -6009,18 +6021,18 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 126510391 - timestamp: 1734412698629 + size: 126648274 + timestamp: 1734758299199 - kind: conda name: max-python - version: 25.1.0.dev2024121705 + version: 25.1.0.dev2024122105 build: 3.11release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024121705-3.11release.conda - sha256: 2b5430672662e4db6910032aa5920c120d55172b0bf34a75bcbf4e032d1cf2de - md5: 4be6188642aaf3e4f16ce42c82905992 + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024122105-3.11release.conda + sha256: a5a6e01fd47c9eb13921be735ceb3055766429aea3c310cb88e82475445d295a + md5: 3013c42a5c98ed73a14c4e8e9525451d depends: - - max-core ==25.1.0.dev2024121705 release + - max-core ==25.1.0.dev2024122105 release - python 3.11.* - fastapi - httpx @@ -6043,17 +6055,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 113404099 - timestamp: 1734412888836 + size: 113572368 + timestamp: 1734807721658 - kind: conda name: mblack - version: 25.1.0.dev2024121705 + version: 25.1.0.dev2024122105 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121705-release.conda - sha256: 44d0c3a0b1242823334d6bad895ad037849719f67bcfbc426c65363c567f80a5 - md5: 93c89483058dabd0282c378812328ba0 + url: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122105-release.conda + sha256: baed1b93405745ade9759deffb26dc7ca1ba26ae33aa0c77a42527327d8b6825 + md5: eea3c5abc46eae804b254ef8b6fba00e depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -6063,8 +6075,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130801 - timestamp: 1734412638051 + size: 130807 + timestamp: 1734758299199 - kind: conda name: mdurl version: 0.1.2 @@ -6083,21 +6095,21 @@ packages: timestamp: 1733255681319 - kind: conda name: mojo-jupyter - version: 25.1.0.dev2024121705 + version: 25.1.0.dev2024122105 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024121705-release.conda - sha256: 8ef8447f576590d381ccaa82e6c207c530e9355b07ab3174f3df9c9f064d42de - md5: 4c31e34ff54c71cd9d584d3ab8f1c315 + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122105-release.conda + sha256: da4de3db554f0079a53da970d790520c31d94b7c78b1ccb9561cdf1eff940c03 + md5: 64ca82739f0503be3407f3b94406734e depends: - - max-core ==25.1.0.dev2024121705 release + - max-core ==25.1.0.dev2024122105 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22937 - timestamp: 1734412638052 + size: 22933 + timestamp: 1734758299200 - kind: conda name: multidict version: 6.1.0 @@ -6489,6 +6501,7 @@ packages: - python >=3.9 - requests >=2.7,<3.dev0 license: Apache-2.0 + license_family: APACHE size: 17147 timestamp: 1734345675510 - kind: conda @@ -7142,31 +7155,31 @@ packages: timestamp: 1733195786147 - kind: conda name: pydantic - version: 2.10.3 + version: 2.10.4 build: pyh3cfb1c2_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.3-pyh3cfb1c2_0.conda - sha256: cac9eebd3d5f8d8a497a9025d756257ddc75b8b3393e6737cb45077bd744d4f8 - md5: 194ef7f91286978521350f171b117f01 + url: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.4-pyh3cfb1c2_0.conda + sha256: e68400714532a33f34b44ddaee3e27e8dd6c83c3f31c7892ec10b84d13aa8b59 + md5: 93bccf4d7a58c9140d59491de21e044b depends: - annotated-types >=0.6.0 - - pydantic-core 2.27.1 + - pydantic-core 2.27.2 - python >=3.9 - typing-extensions >=4.6.1 - typing_extensions >=4.12.2 license: MIT license_family: MIT - size: 317037 - timestamp: 1733316963547 + size: 296557 + timestamp: 1734609427697 - kind: conda name: pydantic-core - version: 2.27.1 + version: 2.27.2 build: py311h0ca61a2_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/pydantic-core-2.27.1-py311h0ca61a2_0.conda - sha256: 03794e4aa320059163ddeaa347cfec2dae2f5af9bcdbc0b1d7765e81523b43cb - md5: 86aee7900360de3d463d4014a8cef705 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/pydantic-core-2.27.2-py311h0ca61a2_0.conda + sha256: bae487615db914258d64e44ddb698f8826a3785e97989b37ca2d310069e86e28 + md5: a082086545ee0bcb6c3e7e393532fe03 depends: - libgcc >=13 - python >=3.11,<3.12.0a0 @@ -7177,16 +7190,16 @@ packages: - __glibc >=2.17 license: MIT license_family: MIT - size: 1503196 - timestamp: 1732254269904 + size: 1504928 + timestamp: 1734572100526 - kind: conda name: pydantic-core - version: 2.27.1 + version: 2.27.2 build: py311h3ff9189_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.27.1-py311h3ff9189_0.conda - sha256: fda69a0024647c988a1571a78f31d05cefb95c8580c7fea29106dc5e08b654fa - md5: 9a65f7d97aaa139bd8471429e192ac61 + url: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.27.2-py311h3ff9189_0.conda + sha256: 5163982ef229292ca5b9fe96e756ac29b6c6453d56c9f1dfaf48f5796de78d05 + md5: b96fba96baad08b81c57fd157b481b22 depends: - __osx >=11.0 - python >=3.11,<3.12.0a0 @@ -7197,16 +7210,16 @@ packages: - __osx >=11.0 license: MIT license_family: MIT - size: 1451573 - timestamp: 1732254367639 + size: 1595471 + timestamp: 1734572148778 - kind: conda name: pydantic-core - version: 2.27.1 + version: 2.27.2 build: py311h9e33e62_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.27.1-py311h9e33e62_0.conda - sha256: 0ae49448c55affa0e9df0e876d02aee77ad42678500a34679f9689bf3682000e - md5: e5192dfb2dae866470c3eec81dbe5727 + url: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.27.2-py311h9e33e62_0.conda + sha256: 8ead97151b2f349cd327456fe4a6fcf7c51a3ab6c06f48f4330f86de0d848bd1 + md5: 675cb6079b6b3b4ef4f20399fedf6666 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -7217,8 +7230,8 @@ packages: - __glibc >=2.17 license: MIT license_family: MIT - size: 1632797 - timestamp: 1732254154568 + size: 1640287 + timestamp: 1734571788310 - kind: conda name: pydantic-settings version: 2.7.0 @@ -8341,14 +8354,13 @@ packages: timestamp: 1733367480074 - kind: conda name: transformers - version: 4.47.0 - build: pyhd8ed1ab_1 - build_number: 1 + version: 4.47.1 + build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.0-pyhd8ed1ab_1.conda - sha256: d31821081219a0ede5c1f356b65a61ce98ac11e2df78b0eaa684c17c73389fbf - md5: 6d2ec1ddee8057d2d724a0ab0bb578a0 + url: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.1-pyhd8ed1ab_0.conda + sha256: df8238c3cccbb6bb1d5657e6a75977ac0b832ab61155d5e3d8560c1c4f52abeb + md5: 931d66db156680c42c62812d6533cbf7 depends: - datasets !=2.5.0 - filelock @@ -8364,8 +8376,8 @@ packages: - tqdm >=4.27 license: Apache-2.0 license_family: APACHE - size: 3726957 - timestamp: 1733948063517 + size: 3680276 + timestamp: 1734499046193 - kind: conda name: typer version: 0.15.1 diff --git a/examples/notebooks/magic.lock b/examples/notebooks/magic.lock index dc6dd9e02c..e4dac70f88 100644 --- a/examples/notebooks/magic.lock +++ b/examples/notebooks/magic.lock @@ -9,7 +9,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.10-py312h178313f_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.11-py312h178313f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.7.0-pyhd8ed1ab_0.conda @@ -71,7 +71,7 @@ environments: - 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 - conda: https://conda.anaconda.org/conda-forge/linux-64/frozenlist-1.5.0-py312h66e93f0_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.12.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gflags-2.2.2-h5888daf_1005.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/glog-0.7.1-hbabe93e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda @@ -87,7 +87,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.4.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh3099207_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-8.30.0-pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-8.31.0-pyh707e725_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_1.conda @@ -99,10 +99,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.10.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.14.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.11.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.15.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.3.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.3.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 @@ -157,7 +157,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.9.0-hb9d3cd8_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.49.2-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.4.0-hd590300_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.5.0-h851e524_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.5-h0d44e9d_1.conda @@ -166,17 +166,17 @@ 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-25.1.0.dev2024121705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024121705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024121705-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122105-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024122105-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024122105-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122105-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-25.1.0.dev2024121705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122105-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 + - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.4-pyhff2d567_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-he02047a_1.conda @@ -193,7 +193,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.29.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.50b0-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/orc-2.0.3-h97ab989_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.2-py312h1d6d2e6_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 @@ -202,7 +202,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-11.0.0-py312h7b63e92_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pip-24.3.1-pyh8b19718_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pip-24.3.1-pyh8b19718_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda @@ -216,8 +216,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-18.1.0-py312h7900ff3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-18.1.0-py312h01725c0_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.3-pyh3cfb1c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.27.1-py312h12e396e_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.4-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.27.2-py312h12e396e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.7.0-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyinstrument-5.0.0-py312h66e93f0_0.conda @@ -264,7 +264,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda @@ -298,7 +298,7 @@ environments: linux-aarch64: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.10-py312hcc812fe_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.11-py312hcc812fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.7.0-pyhd8ed1ab_0.conda @@ -360,7 +360,7 @@ environments: - 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 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/frozenlist-1.5.0-py312hb2c0f52_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.12.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gflags-2.2.2-h5ad3122_1005.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/glog-0.7.1-h468a4a4_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda @@ -377,7 +377,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.4.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh3099207_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-8.30.0-pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-8.31.0-pyh707e725_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_1.conda @@ -389,10 +389,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.10.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.14.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.11.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.15.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.3.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.3.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/keyutils-1.6.1-h4e544f5_0.tar.bz2 @@ -447,7 +447,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.9.0-h86ecc28_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuv-1.49.2-h86ecc28_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libwebp-base-1.4.0-h31becfc_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libwebp-base-1.5.0-h0886dbf_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcb-1.17.0-h262b8f6_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.5-h2e0c361_1.conda @@ -456,17 +456,17 @@ 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-25.1.0.dev2024121705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024121705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024121705-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122105-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024122105-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024122105-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122105-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-25.1.0.dev2024121705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122105-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 + - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.4-pyhff2d567_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-hcccb83c_1.conda @@ -483,7 +483,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.29.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.50b0-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/orc-2.0.3-h3c55218_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pandas-2.2.2-py312h14eacfc_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 @@ -492,7 +492,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pillow-11.0.0-py312h5ab5af3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pip-24.3.1-pyh8b19718_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pip-24.3.1-pyh8b19718_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda @@ -506,8 +506,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-18.1.0-py312h8025657_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-18.1.0-py312h66f7834_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.3-pyh3cfb1c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pydantic-core-2.27.1-py312h8cbf658_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.4-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pydantic-core-2.27.2-py312h8cbf658_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.7.0-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyinstrument-5.0.0-py312hb2c0f52_0.conda @@ -554,7 +554,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py312h52516f5_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda @@ -587,7 +587,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.6-h02f22dd_0.conda osx-arm64: - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.10-py312h998013c_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.11-py312h998013c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.7.0-pyhd8ed1ab_0.conda @@ -650,7 +650,7 @@ environments: - 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 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/frozenlist-1.5.0-py312h0bf5046_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.12.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gflags-2.2.2-hf9b8971_1005.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/glog-0.7.1-heb240a5_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda @@ -667,7 +667,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.4.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh57ce528_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-8.30.0-pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-8.31.0-pyh707e725_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_1.conda @@ -679,10 +679,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.10.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.14.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.11.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.15.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.3.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.3.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda @@ -700,7 +700,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-26_osxarm64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcrc32c-1.1.2-hbdafb3b_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.11.1-h73640d1_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.5-ha82da77_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.6-ha82da77_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.23-hec38601_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20191231-hc8eb9b7_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libev-4.33-h93a5062_2.conda @@ -729,26 +729,26 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-h551f018_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.9.0-h5505292_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libuv-1.49.2-h7ab814d_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.4.0-h93a5062_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.5.0-h2471fea_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxcb-1.17.0-hdb1d25a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.5-h178c5d8_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.5-hdb05f8b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.6-hdb05f8b_0.conda - 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.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024121705-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024121705-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024121705-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122105-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024122105-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024122105-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122105-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-25.1.0.dev2024121705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122105-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 - - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.4-pyhff2d567_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h7bae524_1.conda @@ -765,7 +765,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.29.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.50b0-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/orc-2.0.3-hbcee414_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.2-py312h8ae5369_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 @@ -774,7 +774,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-11.0.0-py312haf37ca6_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pip-24.3.1-pyh8b19718_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pip-24.3.1-pyh8b19718_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda @@ -788,8 +788,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-18.1.0-py312h1f38498_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-18.1.0-py312hc40f475_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.3-pyh3cfb1c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.27.1-py312hcd83bfe_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.4-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.27.2-py312hcd83bfe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.7.0-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyinstrument-5.0.0-py312h0bf5046_0.conda @@ -837,7 +837,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda @@ -933,12 +933,12 @@ packages: timestamp: 1733332029649 - kind: conda name: aiohttp - version: 3.11.10 + version: 3.11.11 build: py312h178313f_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.10-py312h178313f_0.conda - sha256: dc8ebdd99e9d7a07454a7063a295cdc7a86264648647fec10b2ceae97478e200 - md5: 3e92784b8e32ab7d0b95ee296ba79a99 + url: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.11-py312h178313f_0.conda + sha256: 2e817805e8a4fed33f23f116ff5649f8651af693328e9ed82d9d11a951338693 + md5: 8219afa093757bbe07b9825eb1973ed9 depends: - __glibc >=2.17,<3.0.a0 - aiohappyeyeballs >=2.3.0 @@ -953,16 +953,16 @@ packages: - yarl >=1.17.0,<2.0 license: MIT AND Apache-2.0 license_family: Apache - size: 914378 - timestamp: 1733839626367 + size: 915358 + timestamp: 1734597073870 - kind: conda name: aiohttp - version: 3.11.10 + version: 3.11.11 build: py312h998013c_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.10-py312h998013c_0.conda - sha256: 69eb9c89dce6a7ae960099172daffba9f77fef39344f37e581685a8e3c5debe6 - md5: 642356223364539ba7ba36556fcf49ee + url: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.11-py312h998013c_0.conda + sha256: 446f078e7a7b892894d7f4851a278b7834ffb4f5632313646a55c3abe13690d4 + md5: c69c904691364cfb27d15aa7153e9c29 depends: - __osx >=11.0 - aiohappyeyeballs >=2.3.0 @@ -977,16 +977,16 @@ packages: - yarl >=1.17.0,<2.0 license: MIT AND Apache-2.0 license_family: Apache - size: 874135 - timestamp: 1733839113411 + size: 875711 + timestamp: 1734597277258 - kind: conda name: aiohttp - version: 3.11.10 + version: 3.11.11 build: py312hcc812fe_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.10-py312hcc812fe_0.conda - sha256: df694a9fec546e575a4ea7e1c3ac476c0bda53c0fad44c046ad3ebdd5b75a0a8 - md5: a8c9ec59e6323b38418bbf04deaa0c02 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.11-py312hcc812fe_0.conda + sha256: f28e81e458d19df4ca0002f8a92d7f647fa25e8179887a8676801dfe44edb1f2 + md5: 11fa88136d9bf39d2136b2378f7c10be depends: - aiohappyeyeballs >=2.3.0 - aiosignal >=1.1.2 @@ -1001,8 +1001,8 @@ packages: - yarl >=1.17.0,<2.0 license: MIT AND Apache-2.0 license_family: Apache - size: 900931 - timestamp: 1733839037447 + size: 902422 + timestamp: 1734597104529 - kind: conda name: aiosignal version: 1.3.2 @@ -3076,20 +3076,19 @@ packages: timestamp: 1729699642726 - kind: conda name: fsspec - version: 2024.10.0 - build: pyhd8ed1ab_1 - build_number: 1 + version: 2024.12.0 + build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhd8ed1ab_1.conda - sha256: 790a50b4f94042951518f911a914a886a837c926094c6a14ed1d9d03ce336807 - md5: 906fe13095e734cb413b57a49116cdc8 + url: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.12.0-pyhd8ed1ab_0.conda + sha256: 3320970c4604989eadf908397a9475f9e6a96a773c185915111399cbfbe47817 + md5: e041ad4c43ab5e10c74587f95378ebc7 depends: - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 134726 - timestamp: 1733493445080 + size: 137756 + timestamp: 1734650349242 - kind: conda name: gflags version: 2.2.2 @@ -3525,13 +3524,13 @@ packages: timestamp: 1719845667420 - kind: conda name: ipython - version: 8.30.0 + version: 8.31.0 build: pyh707e725_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/ipython-8.30.0-pyh707e725_0.conda - sha256: 65cdc105e5effea2943d3979cc1592590c923a589009b484d07672faaf047af1 - md5: 5d6e5cb3a4b820f61b2073f0ad5431f1 + url: https://conda.anaconda.org/conda-forge/noarch/ipython-8.31.0-pyh707e725_0.conda + sha256: e10d1172ebf950f8f087f0d9310d215f5ddb8f3ad247bfa58ab5a909b3cabbdc + md5: 1d7fcd803dfa936a6c3bd051b293241c depends: - __unix - decorator @@ -3548,8 +3547,8 @@ packages: - typing_extensions >=4.6 license: BSD-3-Clause license_family: BSD - size: 600248 - timestamp: 1732897026255 + size: 600761 + timestamp: 1734788248334 - kind: conda name: isoduration version: 20.11.0 @@ -3790,16 +3789,16 @@ packages: timestamp: 1727163547058 - kind: conda name: jupyter_events - version: 0.10.0 - build: pyhd8ed1ab_1 - build_number: 1 + version: 0.11.0 + build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.10.0-pyhd8ed1ab_1.conda - sha256: d7fa4c627d56ce8dc02f09f358757f8fd49eb6137216dc99340a6b4efc7e0491 - md5: 62186e6383f38cc6a3466f0fadde3f2e + url: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.11.0-pyhd8ed1ab_0.conda + sha256: eeb32aa58d37b130387628d5c151092f6d3fcf0a6964294bef06d6bac117f3c4 + md5: 2d8876ca6bda213622dfbc3d1da56ecb depends: - jsonschema-with-format-nongpl >=4.18.0 + - packaging - python >=3.9 - python-json-logger >=2.0.4 - pyyaml >=5.3 @@ -3809,25 +3808,24 @@ packages: - traitlets >=5.3 license: BSD-3-Clause license_family: BSD - size: 21434 - timestamp: 1733441420606 + size: 22160 + timestamp: 1734531779868 - kind: conda name: jupyter_server - version: 2.14.2 - build: pyhd8ed1ab_1 - build_number: 1 + version: 2.15.0 + build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.14.2-pyhd8ed1ab_1.conda - sha256: 082d3517455339c8baea245a257af249758ccec26b8832d969ac928901c234cc - md5: 81ea84b3212287f926e35b9036192963 + url: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.15.0-pyhd8ed1ab_0.conda + sha256: be5f9774065d94c4a988f53812b83b67618bec33fcaaa005a98067d506613f8a + md5: 6ba8c206b5c6f52b82435056cf74ee46 depends: - anyio >=3.1.0 - argon2-cffi >=21.1 - jinja2 >=3.0.3 - jupyter_client >=7.4.4 - jupyter_core >=4.12,!=5.0.* - - jupyter_events >=0.9.0 + - jupyter_events >=0.11.0 - jupyter_server_terminals >=0.4.4 - nbconvert-core >=6.4.4 - nbformat >=5.3.0 @@ -3843,8 +3841,8 @@ packages: - websocket-client >=1.7 license: BSD-3-Clause license_family: BSD - size: 324289 - timestamp: 1733428731329 + size: 327747 + timestamp: 1734702771032 - kind: conda name: jupyter_server_terminals version: 0.5.3 @@ -3864,13 +3862,13 @@ packages: timestamp: 1733428049134 - kind: conda name: jupyterlab - version: 4.3.3 + version: 4.3.4 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.3.3-pyhd8ed1ab_0.conda - sha256: 63aa00427abd4a3e7c1738257b8e296f5e0ba04a4a1ab9ff3bc186440c8b9fdc - md5: 0707e62d944a89c365ba11da4898f8af + url: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.3.4-pyhd8ed1ab_0.conda + sha256: bcf9fc0ea4bd6cf06a7a23b7f8b7bb7d8520eea8d0cdd6d3b975ede7793ed69b + md5: edc13687180382b4444d9f143a2e1ef7 depends: - async-lru >=1.0.0 - httpx >=0.25.0 @@ -3890,8 +3888,8 @@ packages: - traitlets license: BSD-3-Clause license_family: BSD - size: 7972675 - timestamp: 1733836496011 + size: 7257751 + timestamp: 1734539283837 - kind: conda name: jupyterlab_pygments version: 0.3.0 @@ -4524,6 +4522,7 @@ packages: - liblapacke 3.9.0 26_linux64_openblas - blas * openblas license: BSD-3-Clause + license_family: BSD size: 16393 timestamp: 1734432564346 - kind: conda @@ -4544,6 +4543,7 @@ packages: - libcblas 3.9.0 26_linuxaarch64_openblas - liblapack 3.9.0 26_linuxaarch64_openblas license: BSD-3-Clause + license_family: BSD size: 16477 timestamp: 1734432576699 - kind: conda @@ -4564,6 +4564,7 @@ packages: - libcblas 3.9.0 26_osxarm64_openblas - blas * openblas license: BSD-3-Clause + license_family: BSD size: 16714 timestamp: 1734433054681 - kind: conda @@ -4726,6 +4727,7 @@ packages: - liblapacke 3.9.0 26_linux64_openblas - blas * openblas license: BSD-3-Clause + license_family: BSD size: 16336 timestamp: 1734432570482 - kind: conda @@ -4744,6 +4746,7 @@ packages: - liblapacke 3.9.0 26_linuxaarch64_openblas - liblapack 3.9.0 26_linuxaarch64_openblas license: BSD-3-Clause + license_family: BSD size: 16398 timestamp: 1734432580937 - kind: conda @@ -4762,6 +4765,7 @@ packages: - liblapacke 3.9.0 26_osxarm64_openblas - blas * openblas license: BSD-3-Clause + license_family: BSD size: 16628 timestamp: 1734433061517 - kind: conda @@ -4871,18 +4875,19 @@ packages: timestamp: 1734000160270 - kind: conda name: libcxx - version: 19.1.5 - build: ha82da77_0 + version: 19.1.6 + build: ha82da77_1 + build_number: 1 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.5-ha82da77_0.conda - sha256: 7918cc0bb7a6554cdd3eee634c3dc414a1ab8ec49faeca1567367bb92118f9d7 - md5: 3c7be0df28ccda1d193ea6de56dcb5ff + url: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.6-ha82da77_1.conda + sha256: 2b2443404503cd862385fd2f2a2c73f9624686fd1e5a45050b4034cfc06904ec + md5: ce5252d8db110cdb4ae4173d0a63c7c5 depends: - __osx >=11.0 license: Apache-2.0 WITH LLVM-exception license_family: Apache - size: 519819 - timestamp: 1733291654212 + size: 520992 + timestamp: 1734494699681 - kind: conda name: libdeflate version: '1.23' @@ -4895,6 +4900,7 @@ packages: - __glibc >=2.17,<3.0.a0 - libgcc >=13 license: MIT + license_family: MIT size: 72255 timestamp: 1734373823254 - kind: conda @@ -4908,6 +4914,7 @@ packages: depends: - libgcc >=13 license: MIT + license_family: MIT size: 69862 timestamp: 1734373858306 - kind: conda @@ -4921,6 +4928,7 @@ packages: depends: - __osx >=11.0 license: MIT + license_family: MIT size: 54132 timestamp: 1734373971372 - kind: conda @@ -5659,6 +5667,7 @@ packages: - liblapacke 3.9.0 26_linux64_openblas - blas * openblas license: BSD-3-Clause + license_family: BSD size: 16338 timestamp: 1734432576650 - kind: conda @@ -5677,6 +5686,7 @@ packages: - liblapacke 3.9.0 26_linuxaarch64_openblas - libcblas 3.9.0 26_linuxaarch64_openblas license: BSD-3-Clause + license_family: BSD size: 16403 timestamp: 1734432585123 - kind: conda @@ -5695,6 +5705,7 @@ packages: - libcblas 3.9.0 26_osxarm64_openblas - blas * openblas license: BSD-3-Clause + license_family: BSD size: 16624 timestamp: 1734433068120 - kind: conda @@ -6536,50 +6547,50 @@ packages: timestamp: 1729322566955 - kind: conda name: libwebp-base - version: 1.4.0 - build: h31becfc_0 + version: 1.5.0 + build: h0886dbf_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libwebp-base-1.4.0-h31becfc_0.conda - sha256: 10dded60f274e29c573cfacf6e96f5d0fc374ee431250374a44cbd773916ab9d - md5: 5fd7ab3e5f382c70607fbac6335e6e19 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libwebp-base-1.5.0-h0886dbf_0.conda + sha256: b3d881a0ae08bb07fff7fa8ead506c8d2e0388733182fe4f216f3ec5d61ffcf0 + md5: 95ef4a689b8cc1b7e18b53784d88f96b depends: - - libgcc-ng >=12 + - libgcc >=13 constrains: - - libwebp 1.4.0 + - libwebp 1.5.0 license: BSD-3-Clause - license_family: BSD - size: 363577 - timestamp: 1713201785160 + size: 362623 + timestamp: 1734779054659 - kind: conda name: libwebp-base - version: 1.4.0 - build: h93a5062_0 + version: 1.5.0 + build: h2471fea_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.4.0-h93a5062_0.conda - sha256: 0d4bad713a512d79bfeb4d61821f447afab8b0792aca823f505ce6b195e9fde5 - md5: c0af0edfebe780b19940e94871f1a765 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.5.0-h2471fea_0.conda + sha256: f8bdb876b4bc8cb5df47c28af29188de8911c3fea4b799a33743500149de3f4a + md5: 569466afeb84f90d5bb88c11cc23d746 + depends: + - __osx >=11.0 constrains: - - libwebp 1.4.0 + - libwebp 1.5.0 license: BSD-3-Clause - license_family: BSD - size: 287750 - timestamp: 1713200194013 + size: 290013 + timestamp: 1734777593617 - kind: conda name: libwebp-base - version: 1.4.0 - build: hd590300_0 + version: 1.5.0 + build: h851e524_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.4.0-hd590300_0.conda - sha256: 49bc5f6b1e11cb2babf2a2a731d1a680a5e08a858280876a779dbda06c78c35f - md5: b26e8aa824079e1be0294e7152ca4559 + url: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.5.0-h851e524_0.conda + sha256: c45283fd3e90df5f0bd3dbcd31f59cdd2b001d424cf30a07223655413b158eaf + md5: 63f790534398730f59e1b899c3644d4a depends: - - libgcc-ng >=12 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 constrains: - - libwebp 1.4.0 + - libwebp 1.5.0 license: BSD-3-Clause - license_family: BSD - size: 438953 - timestamp: 1713199854503 + size: 429973 + timestamp: 1734777489810 - kind: conda name: libxcb version: 1.17.0 @@ -6773,20 +6784,20 @@ packages: timestamp: 1727963148474 - kind: conda name: llvm-openmp - version: 19.1.5 + version: 19.1.6 build: hdb05f8b_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.5-hdb05f8b_0.conda - sha256: e7ba0d8b718925efdcf1309f5e776e3264cc172d3af8d4048b39627c50a1abc0 - md5: f2c2e187a1d2637d282e34dc92021a70 + url: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.6-hdb05f8b_0.conda + sha256: a0f3e9139ab16f0a67b9d2bbabc15b78977168f4a5b5503fed4962dcb9a96102 + md5: 34fdeffa0555a1a56f38839415cc066c depends: - __osx >=11.0 constrains: - - openmp 19.1.5|19.1.5.* + - openmp 19.1.6|19.1.6.* license: Apache-2.0 WITH LLVM-exception license_family: APACHE - size: 281120 - timestamp: 1733376089600 + size: 281251 + timestamp: 1734520462311 - kind: conda name: lz4-c version: 1.10.0 @@ -6931,76 +6942,76 @@ packages: timestamp: 1733417051523 - kind: conda name: max - version: 25.1.0.dev2024121705 + version: 25.1.0.dev2024122105 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024121705-release.conda - sha256: 83b2265b29c1ee69ae9d9f639ab04899d0ef15b5abc9114e034e2cd382dcad31 - md5: bd7165d97ebb0458ddb1ce616c146c24 + url: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122105-release.conda + sha256: 1e0513f880a8177c497d6834629f07b87081c1330ea744dafc95fe46be8027a0 + md5: f4c30ea26051f5bbf5000a3adec295e7 depends: - - max-core ==25.1.0.dev2024121705 release - - max-python >=25.1.0.dev2024121705,<26.0a0 - - mojo-jupyter ==25.1.0.dev2024121705 release - - mblack ==25.1.0.dev2024121705 release + - max-core ==25.1.0.dev2024122105 release + - max-python >=25.1.0.dev2024122105,<26.0a0 + - mojo-jupyter ==25.1.0.dev2024122105 release + - mblack ==25.1.0.dev2024122105 release license: LicenseRef-Modular-Proprietary - size: 9921 - timestamp: 1734412638047 + size: 9918 + timestamp: 1734758299194 - kind: conda name: max-core - version: 25.1.0.dev2024121705 + version: 25.1.0.dev2024122105 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024121705-release.conda - sha256: 15459b8446d3feb608baae398cf2753a3704e02e07cf2a6c02e166068d8a9304 - md5: 4ca65aff37bd7e944cce1697c1fe203e + url: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024122105-release.conda + sha256: 032159ddcf04826995c272caac82a2ae428dea443f7f2c6f3b382fc0efe0aa8a + md5: fb9e0c204a52897ac821ca65725fbbca depends: - - mblack ==25.1.0.dev2024121705 release + - mblack ==25.1.0.dev2024122105 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 245744992 - timestamp: 1734412638045 + size: 245838806 + timestamp: 1734758213295 - kind: conda name: max-core - version: 25.1.0.dev2024121705 + version: 25.1.0.dev2024122105 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024121705-release.conda - sha256: e89be4d7691a354a3f6e5d71e25b49447ca9fd1048fe03355c3bc509a726234d - md5: acc4b1208feaba5ad08c1b370192e127 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024122105-release.conda + sha256: d73be9f89391173a0a3c9b7d3c362733f8bf9d23b28aac0013992d65576bef3e + md5: cd364e29f1586ab5922873e2f7ba0e45 depends: - - mblack ==25.1.0.dev2024121705 release + - mblack ==25.1.0.dev2024122105 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 249373255 - timestamp: 1734412698620 + size: 249745867 + timestamp: 1734758299192 - kind: conda name: max-core - version: 25.1.0.dev2024121705 + version: 25.1.0.dev2024122105 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024121705-release.conda - sha256: edd613b122c086c4d6237c7195a55ce09bff9922ab70e0f1ff7a9662d3de41fe - md5: d68326deab9bb460f253bf6df7e903f6 + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024122105-release.conda + sha256: 630d1501ad7e70694bf4a131a90363ea44dfc5cebc46ded681b2535ed7377e76 + md5: c8e19c79e0049db94a0e287dd725eb96 depends: - - mblack ==25.1.0.dev2024121705 release + - mblack ==25.1.0.dev2024122105 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 214152137 - timestamp: 1734412888834 + size: 214335752 + timestamp: 1734807721655 - kind: conda name: max-python - version: 25.1.0.dev2024121705 + version: 25.1.0.dev2024122105 build: 3.12release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024121705-3.12release.conda - sha256: 11296250671f2a7c5951382f89f8e68a1702b0c8aeef200788e71d9e0e1d2955 - md5: f979494f9de5b3853834ffa1adf606c3 + url: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024122105-3.12release.conda + sha256: ea496197a0d531c7fd9b6f61879dff9d780e7faa9ce9223a9213ac27cb6f45d3 + md5: 06ccf6c3c46efd01d28ff4d192ff44d2 depends: - - max-core ==25.1.0.dev2024121705 release + - max-core ==25.1.0.dev2024122105 release - python 3.12.* - fastapi - httpx @@ -7023,18 +7034,18 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 122755617 - timestamp: 1734412638055 + size: 122928729 + timestamp: 1734758213305 - kind: conda name: max-python - version: 25.1.0.dev2024121705 + version: 25.1.0.dev2024122105 build: 3.12release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024121705-3.12release.conda - sha256: e4a7ded05f33903034e52feefe65f458975942740cf07dcb30e2e9c1f0af53e6 - md5: 9a51b55d48b861487dbecd7c4abc7b68 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024122105-3.12release.conda + sha256: 9520d2d8b908a48897a52c7f27f2a73d6f747a340333e98100cfb12547623aef + md5: b09a49c3d8bc27360c4e997609eb7149 depends: - - max-core ==25.1.0.dev2024121705 release + - max-core ==25.1.0.dev2024122105 release - python 3.12.* - fastapi - httpx @@ -7057,18 +7068,18 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 126486411 - timestamp: 1734412698632 + size: 126633261 + timestamp: 1734758299202 - kind: conda name: max-python - version: 25.1.0.dev2024121705 + version: 25.1.0.dev2024122105 build: 3.12release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024121705-3.12release.conda - sha256: 328cee9730cf537d58e6d24b9aa111504271433d724fd47fdcee55b26df222b3 - md5: b1168de7b96e9e7b0fad7c675ecdb426 + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024122105-3.12release.conda + sha256: 9888cc5976df9db0a45b374269ae02686d458438ce0fe906f94faabf626ee02b + md5: 3bf68dd30a73b233d47a739c07a47673 depends: - - max-core ==25.1.0.dev2024121705 release + - max-core ==25.1.0.dev2024122105 release - python 3.12.* - fastapi - httpx @@ -7091,17 +7102,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 113391631 - timestamp: 1734412888837 + size: 113518449 + timestamp: 1734807721659 - kind: conda name: mblack - version: 25.1.0.dev2024121705 + version: 25.1.0.dev2024122105 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121705-release.conda - sha256: 44d0c3a0b1242823334d6bad895ad037849719f67bcfbc426c65363c567f80a5 - md5: 93c89483058dabd0282c378812328ba0 + url: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122105-release.conda + sha256: baed1b93405745ade9759deffb26dc7ca1ba26ae33aa0c77a42527327d8b6825 + md5: eea3c5abc46eae804b254ef8b6fba00e depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -7111,8 +7122,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130801 - timestamp: 1734412638051 + size: 130807 + timestamp: 1734758299199 - kind: conda name: mdurl version: 0.1.2 @@ -7147,21 +7158,21 @@ packages: timestamp: 1733258822603 - kind: conda name: mojo-jupyter - version: 25.1.0.dev2024121705 + version: 25.1.0.dev2024122105 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024121705-release.conda - sha256: 8ef8447f576590d381ccaa82e6c207c530e9355b07ab3174f3df9c9f064d42de - md5: 4c31e34ff54c71cd9d584d3ab8f1c315 + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122105-release.conda + sha256: da4de3db554f0079a53da970d790520c31d94b7c78b1ccb9561cdf1eff940c03 + md5: 64ca82739f0503be3407f3b94406734e depends: - - max-core ==25.1.0.dev2024121705 release + - max-core ==25.1.0.dev2024122105 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22937 - timestamp: 1734412638052 + size: 22933 + timestamp: 1734758299200 - kind: conda name: multidict version: 6.1.0 @@ -7289,13 +7300,13 @@ packages: timestamp: 1733230986902 - kind: conda name: nbclient - version: 0.10.1 + version: 0.10.2 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.1-pyhd8ed1ab_0.conda - sha256: 564e22c4048f2f00c7ee79417dea364f95cf069a1f2565dc26d5ece1fc3fd779 - md5: 3ee79082e59a28e1db11e2a9c3bcd85a + url: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.2-pyhd8ed1ab_0.conda + sha256: a20cff739d66c2f89f413e4ba4c6f6b59c50d5c30b5f0d840c13e8c9c2df9135 + md5: 6bb0d77277061742744176ab555b723c depends: - jupyter_client >=6.1.12 - jupyter_core >=4.12,!=5.0.* @@ -7304,8 +7315,8 @@ packages: - traitlets >=5.4 license: BSD-3-Clause license_family: BSD - size: 27878 - timestamp: 1732882434219 + size: 28045 + timestamp: 1734628936013 - kind: conda name: nbconvert-core version: 7.16.4 @@ -7660,6 +7671,7 @@ packages: - python >=3.9 - requests >=2.7,<3.dev0 license: Apache-2.0 + license_family: APACHE size: 17147 timestamp: 1734345675510 - kind: conda @@ -7802,19 +7814,20 @@ packages: - kind: conda name: overrides version: 7.7.0 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_0.conda - sha256: 5e238e5e646414d517a13f6786c7227206ace58271e3ef63f6adca4d6a4c2839 - md5: 24fba5a9d161ad8103d4e84c0e1a3ed4 + url: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda + sha256: 1840bd90d25d4930d60f57b4f38d4e0ae3f5b8db2819638709c36098c6ba770c + md5: e51f1e4089cad105b6cac64bd8166587 depends: - - python >=3.6 + - python >=3.9 - typing_utils license: Apache-2.0 license_family: APACHE - size: 30232 - timestamp: 1706394723472 + size: 30139 + timestamp: 1734587755455 - kind: conda name: packaging version: '24.2' @@ -8055,21 +8068,21 @@ packages: - kind: conda name: pip version: 24.3.1 - build: pyh8b19718_1 - build_number: 1 + build: pyh8b19718_2 + build_number: 2 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pip-24.3.1-pyh8b19718_1.conda - sha256: 376f64a6e0882144bf9f263b47c48bab0af34d6f03a52c3a5758c5225af89d93 - md5: 6727da77383b560d43d9d48338629ff4 + url: https://conda.anaconda.org/conda-forge/noarch/pip-24.3.1-pyh8b19718_2.conda + sha256: da8c8888de10c1e4234ebcaa1550ac2b4b5408ac20f093fe641e4bc8c9c9f3eb + md5: 04e691b9fadd93a8a9fad87a81d4fd8f depends: - python >=3.9,<3.13.0a0 - setuptools - wheel license: MIT license_family: MIT - size: 1243486 - timestamp: 1734379069310 + size: 1245116 + timestamp: 1734466348103 - kind: conda name: pkgutil-resolve-name version: 1.3.10 @@ -8522,31 +8535,31 @@ packages: timestamp: 1733195786147 - kind: conda name: pydantic - version: 2.10.3 + version: 2.10.4 build: pyh3cfb1c2_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.3-pyh3cfb1c2_0.conda - sha256: cac9eebd3d5f8d8a497a9025d756257ddc75b8b3393e6737cb45077bd744d4f8 - md5: 194ef7f91286978521350f171b117f01 + url: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.4-pyh3cfb1c2_0.conda + sha256: e68400714532a33f34b44ddaee3e27e8dd6c83c3f31c7892ec10b84d13aa8b59 + md5: 93bccf4d7a58c9140d59491de21e044b depends: - annotated-types >=0.6.0 - - pydantic-core 2.27.1 + - pydantic-core 2.27.2 - python >=3.9 - typing-extensions >=4.6.1 - typing_extensions >=4.12.2 license: MIT license_family: MIT - size: 317037 - timestamp: 1733316963547 + size: 296557 + timestamp: 1734609427697 - kind: conda name: pydantic-core - version: 2.27.1 + version: 2.27.2 build: py312h12e396e_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.27.1-py312h12e396e_0.conda - sha256: c89741f4eff395f8de70975f42e1f20591f0e0870929d440af35b13399976b09 - md5: 114030cb28527db2c385f07038e914c8 + url: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.27.2-py312h12e396e_0.conda + sha256: 81602a4592ad2ac1a1cb57372fd25214e63b1c477d5818b0c21cde0f1f85c001 + md5: bae01b2563030c085f5158c518b84e86 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -8557,16 +8570,16 @@ packages: - __glibc >=2.17 license: MIT license_family: MIT - size: 1635156 - timestamp: 1732254225040 + size: 1641402 + timestamp: 1734571789895 - kind: conda name: pydantic-core - version: 2.27.1 + version: 2.27.2 build: py312h8cbf658_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/pydantic-core-2.27.1-py312h8cbf658_0.conda - sha256: 1f59bc1914f77faed3c95217e4d093310771baee4e93a15c0479359559e3fa19 - md5: d980860b8bf193f53d30a19c5d2bf070 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/pydantic-core-2.27.2-py312h8cbf658_0.conda + sha256: 623e0f3846f15d035ce7ab7ae445fc8d9e547b6684ab55858b6f44510d24b097 + md5: 9677f6ab4bf27ba3c2aee70d08c7b27c depends: - libgcc >=13 - python >=3.12,<3.13.0a0 @@ -8577,16 +8590,16 @@ packages: - __glibc >=2.17 license: MIT license_family: MIT - size: 1503747 - timestamp: 1732254331303 + size: 1505076 + timestamp: 1734571966615 - kind: conda name: pydantic-core - version: 2.27.1 + version: 2.27.2 build: py312hcd83bfe_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.27.1-py312hcd83bfe_0.conda - sha256: 5bba8de2bbbbdb39390abb1e2aff310e8cfd49646ae5a0e0ea4d6582bd1d52ba - md5: 3847a96eaf24a877b6091150ff9c4955 + url: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.27.2-py312hcd83bfe_0.conda + sha256: cfa7201f890d5d08ce29ff70e65a96787d5793a1718776733666b44bbd4a1205 + md5: dcb307e02f17d38c6e1cbfbf8c602852 depends: - __osx >=11.0 - python >=3.12,<3.13.0a0 @@ -8597,8 +8610,8 @@ packages: - __osx >=11.0 license: MIT license_family: MIT - size: 1449057 - timestamp: 1732254359451 + size: 1593461 + timestamp: 1734571986644 - kind: conda name: pydantic-settings version: 2.7.0 @@ -10035,14 +10048,13 @@ packages: timestamp: 1733367480074 - kind: conda name: transformers - version: 4.47.0 - build: pyhd8ed1ab_1 - build_number: 1 + version: 4.47.1 + build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.0-pyhd8ed1ab_1.conda - sha256: d31821081219a0ede5c1f356b65a61ce98ac11e2df78b0eaa684c17c73389fbf - md5: 6d2ec1ddee8057d2d724a0ab0bb578a0 + url: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.1-pyhd8ed1ab_0.conda + sha256: df8238c3cccbb6bb1d5657e6a75977ac0b832ab61155d5e3d8560c1c4f52abeb + md5: 931d66db156680c42c62812d6533cbf7 depends: - datasets !=2.5.0 - filelock @@ -10058,8 +10070,8 @@ packages: - tqdm >=4.27 license: Apache-2.0 license_family: APACHE - size: 3726957 - timestamp: 1733948063517 + size: 3680276 + timestamp: 1734499046193 - kind: conda name: typer version: 0.15.1 diff --git a/examples/operators/magic.lock b/examples/operators/magic.lock index 49ec773f50..eb595c8b1b 100644 --- a/examples/operators/magic.lock +++ b/examples/operators/magic.lock @@ -9,7 +9,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.10-py312h178313f_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.11-py312h178313f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.7.0-pyhd8ed1ab_0.conda @@ -54,7 +54,7 @@ environments: - 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 - - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.12.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gflags-2.2.2-h5888daf_1005.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/glog-0.7.1-hbabe93e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda @@ -123,7 +123,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.9.0-hb9d3cd8_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.49.2-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.4.0-hd590300_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.5.0-h851e524_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.5-h0d44e9d_1.conda @@ -131,12 +131,12 @@ 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-25.1.0.dev2024121705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024121705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024121705-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122105-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024122105-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024122105-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122105-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-25.1.0.dev2024121705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122105-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 @@ -164,8 +164,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-18.1.0-py312h7900ff3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-18.1.0-py312h01725c0_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.3-pyh3cfb1c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.27.1-py312h12e396e_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.4-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.27.2-py312h12e396e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.7.0-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyinstrument-5.0.0-py312h66e93f0_0.conda @@ -200,7 +200,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda @@ -226,7 +226,7 @@ environments: linux-aarch64: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.10-py312hcc812fe_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.11-py312hcc812fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.7.0-pyhd8ed1ab_0.conda @@ -271,7 +271,7 @@ environments: - 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 - - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.12.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gflags-2.2.2-h5ad3122_1005.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/glog-0.7.1-h468a4a4_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda @@ -341,7 +341,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.9.0-h86ecc28_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuv-1.49.2-h86ecc28_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libwebp-base-1.4.0-h31becfc_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libwebp-base-1.5.0-h0886dbf_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcb-1.17.0-h262b8f6_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.5-h2e0c361_1.conda @@ -349,12 +349,12 @@ 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-25.1.0.dev2024121705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024121705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024121705-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122105-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024122105-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024122105-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122105-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-25.1.0.dev2024121705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122105-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 @@ -382,8 +382,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-18.1.0-py312h8025657_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-18.1.0-py312h66f7834_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.3-pyh3cfb1c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pydantic-core-2.27.1-py312h8cbf658_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.4-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pydantic-core-2.27.2-py312h8cbf658_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.7.0-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyinstrument-5.0.0-py312hb2c0f52_0.conda @@ -418,7 +418,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py312h52516f5_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda @@ -443,7 +443,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.6-h02f22dd_0.conda osx-arm64: - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.10-py312h998013c_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.11-py312h998013c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.7.0-pyhd8ed1ab_0.conda @@ -488,7 +488,7 @@ environments: - 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 - - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.12.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gflags-2.2.2-hf9b8971_1005.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/glog-0.7.1-heb240a5_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda @@ -521,7 +521,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-26_osxarm64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcrc32c-1.1.2-hbdafb3b_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.11.1-h73640d1_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.5-ha82da77_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.6-ha82da77_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.23-hec38601_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20191231-hc8eb9b7_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libev-4.33-h93a5062_2.conda @@ -550,20 +550,20 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-h551f018_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.9.0-h5505292_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libuv-1.49.2-h7ab814d_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.4.0-h93a5062_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.5.0-h2471fea_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxcb-1.17.0-hdb1d25a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.5-h178c5d8_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.5-hdb05f8b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.6-hdb05f8b_0.conda - 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-25.1.0.dev2024121705-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024121705-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024121705-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122105-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024122105-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024122105-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122105-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-25.1.0.dev2024121705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122105-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 @@ -591,8 +591,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-18.1.0-py312h1f38498_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-18.1.0-py312hc40f475_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.3-pyh3cfb1c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.27.1-py312hcd83bfe_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.4-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.27.2-py312hcd83bfe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.7.0-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyinstrument-5.0.0-py312h0bf5046_0.conda @@ -626,7 +626,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda @@ -714,12 +714,12 @@ packages: timestamp: 1733332029649 - kind: conda name: aiohttp - version: 3.11.10 + version: 3.11.11 build: py312h178313f_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.10-py312h178313f_0.conda - sha256: dc8ebdd99e9d7a07454a7063a295cdc7a86264648647fec10b2ceae97478e200 - md5: 3e92784b8e32ab7d0b95ee296ba79a99 + url: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.11-py312h178313f_0.conda + sha256: 2e817805e8a4fed33f23f116ff5649f8651af693328e9ed82d9d11a951338693 + md5: 8219afa093757bbe07b9825eb1973ed9 depends: - __glibc >=2.17,<3.0.a0 - aiohappyeyeballs >=2.3.0 @@ -734,16 +734,16 @@ packages: - yarl >=1.17.0,<2.0 license: MIT AND Apache-2.0 license_family: Apache - size: 914378 - timestamp: 1733839626367 + size: 915358 + timestamp: 1734597073870 - kind: conda name: aiohttp - version: 3.11.10 + version: 3.11.11 build: py312h998013c_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.10-py312h998013c_0.conda - sha256: 69eb9c89dce6a7ae960099172daffba9f77fef39344f37e581685a8e3c5debe6 - md5: 642356223364539ba7ba36556fcf49ee + url: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.11-py312h998013c_0.conda + sha256: 446f078e7a7b892894d7f4851a278b7834ffb4f5632313646a55c3abe13690d4 + md5: c69c904691364cfb27d15aa7153e9c29 depends: - __osx >=11.0 - aiohappyeyeballs >=2.3.0 @@ -758,16 +758,16 @@ packages: - yarl >=1.17.0,<2.0 license: MIT AND Apache-2.0 license_family: Apache - size: 874135 - timestamp: 1733839113411 + size: 875711 + timestamp: 1734597277258 - kind: conda name: aiohttp - version: 3.11.10 + version: 3.11.11 build: py312hcc812fe_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.10-py312hcc812fe_0.conda - sha256: df694a9fec546e575a4ea7e1c3ac476c0bda53c0fad44c046ad3ebdd5b75a0a8 - md5: a8c9ec59e6323b38418bbf04deaa0c02 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.11-py312hcc812fe_0.conda + sha256: f28e81e458d19df4ca0002f8a92d7f647fa25e8179887a8676801dfe44edb1f2 + md5: 11fa88136d9bf39d2136b2378f7c10be depends: - aiohappyeyeballs >=2.3.0 - aiosignal >=1.1.2 @@ -782,8 +782,8 @@ packages: - yarl >=1.17.0,<2.0 license: MIT AND Apache-2.0 license_family: Apache - size: 900931 - timestamp: 1733839037447 + size: 902422 + timestamp: 1734597104529 - kind: conda name: aiosignal version: 1.3.2 @@ -2477,20 +2477,19 @@ packages: timestamp: 1729699642726 - kind: conda name: fsspec - version: 2024.10.0 - build: pyhd8ed1ab_1 - build_number: 1 + version: 2024.12.0 + build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhd8ed1ab_1.conda - sha256: 790a50b4f94042951518f911a914a886a837c926094c6a14ed1d9d03ce336807 - md5: 906fe13095e734cb413b57a49116cdc8 + url: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.12.0-pyhd8ed1ab_0.conda + sha256: 3320970c4604989eadf908397a9475f9e6a96a773c185915111399cbfbe47817 + md5: e041ad4c43ab5e10c74587f95378ebc7 depends: - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 134726 - timestamp: 1733493445080 + size: 137756 + timestamp: 1734650349242 - kind: conda name: gflags version: 2.2.2 @@ -3493,6 +3492,7 @@ packages: - liblapacke 3.9.0 26_linux64_openblas - blas * openblas license: BSD-3-Clause + license_family: BSD size: 16393 timestamp: 1734432564346 - kind: conda @@ -3513,6 +3513,7 @@ packages: - libcblas 3.9.0 26_linuxaarch64_openblas - liblapack 3.9.0 26_linuxaarch64_openblas license: BSD-3-Clause + license_family: BSD size: 16477 timestamp: 1734432576699 - kind: conda @@ -3533,6 +3534,7 @@ packages: - libcblas 3.9.0 26_osxarm64_openblas - blas * openblas license: BSD-3-Clause + license_family: BSD size: 16714 timestamp: 1734433054681 - kind: conda @@ -3695,6 +3697,7 @@ packages: - liblapacke 3.9.0 26_linux64_openblas - blas * openblas license: BSD-3-Clause + license_family: BSD size: 16336 timestamp: 1734432570482 - kind: conda @@ -3713,6 +3716,7 @@ packages: - liblapacke 3.9.0 26_linuxaarch64_openblas - liblapack 3.9.0 26_linuxaarch64_openblas license: BSD-3-Clause + license_family: BSD size: 16398 timestamp: 1734432580937 - kind: conda @@ -3731,6 +3735,7 @@ packages: - liblapacke 3.9.0 26_osxarm64_openblas - blas * openblas license: BSD-3-Clause + license_family: BSD size: 16628 timestamp: 1734433061517 - kind: conda @@ -3840,18 +3845,19 @@ packages: timestamp: 1734000160270 - kind: conda name: libcxx - version: 19.1.5 - build: ha82da77_0 + version: 19.1.6 + build: ha82da77_1 + build_number: 1 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.5-ha82da77_0.conda - sha256: 7918cc0bb7a6554cdd3eee634c3dc414a1ab8ec49faeca1567367bb92118f9d7 - md5: 3c7be0df28ccda1d193ea6de56dcb5ff + url: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.6-ha82da77_1.conda + sha256: 2b2443404503cd862385fd2f2a2c73f9624686fd1e5a45050b4034cfc06904ec + md5: ce5252d8db110cdb4ae4173d0a63c7c5 depends: - __osx >=11.0 license: Apache-2.0 WITH LLVM-exception license_family: Apache - size: 519819 - timestamp: 1733291654212 + size: 520992 + timestamp: 1734494699681 - kind: conda name: libdeflate version: '1.23' @@ -3864,6 +3870,7 @@ packages: - __glibc >=2.17,<3.0.a0 - libgcc >=13 license: MIT + license_family: MIT size: 72255 timestamp: 1734373823254 - kind: conda @@ -3877,6 +3884,7 @@ packages: depends: - libgcc >=13 license: MIT + license_family: MIT size: 69862 timestamp: 1734373858306 - kind: conda @@ -3890,6 +3898,7 @@ packages: depends: - __osx >=11.0 license: MIT + license_family: MIT size: 54132 timestamp: 1734373971372 - kind: conda @@ -4628,6 +4637,7 @@ packages: - liblapacke 3.9.0 26_linux64_openblas - blas * openblas license: BSD-3-Clause + license_family: BSD size: 16338 timestamp: 1734432576650 - kind: conda @@ -4646,6 +4656,7 @@ packages: - liblapacke 3.9.0 26_linuxaarch64_openblas - libcblas 3.9.0 26_linuxaarch64_openblas license: BSD-3-Clause + license_family: BSD size: 16403 timestamp: 1734432585123 - kind: conda @@ -4664,6 +4675,7 @@ packages: - libcblas 3.9.0 26_osxarm64_openblas - blas * openblas license: BSD-3-Clause + license_family: BSD size: 16624 timestamp: 1734433068120 - kind: conda @@ -5505,50 +5517,50 @@ packages: timestamp: 1729322566955 - kind: conda name: libwebp-base - version: 1.4.0 - build: h31becfc_0 + version: 1.5.0 + build: h0886dbf_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libwebp-base-1.4.0-h31becfc_0.conda - sha256: 10dded60f274e29c573cfacf6e96f5d0fc374ee431250374a44cbd773916ab9d - md5: 5fd7ab3e5f382c70607fbac6335e6e19 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libwebp-base-1.5.0-h0886dbf_0.conda + sha256: b3d881a0ae08bb07fff7fa8ead506c8d2e0388733182fe4f216f3ec5d61ffcf0 + md5: 95ef4a689b8cc1b7e18b53784d88f96b depends: - - libgcc-ng >=12 + - libgcc >=13 constrains: - - libwebp 1.4.0 + - libwebp 1.5.0 license: BSD-3-Clause - license_family: BSD - size: 363577 - timestamp: 1713201785160 + size: 362623 + timestamp: 1734779054659 - kind: conda name: libwebp-base - version: 1.4.0 - build: h93a5062_0 + version: 1.5.0 + build: h2471fea_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.4.0-h93a5062_0.conda - sha256: 0d4bad713a512d79bfeb4d61821f447afab8b0792aca823f505ce6b195e9fde5 - md5: c0af0edfebe780b19940e94871f1a765 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.5.0-h2471fea_0.conda + sha256: f8bdb876b4bc8cb5df47c28af29188de8911c3fea4b799a33743500149de3f4a + md5: 569466afeb84f90d5bb88c11cc23d746 + depends: + - __osx >=11.0 constrains: - - libwebp 1.4.0 + - libwebp 1.5.0 license: BSD-3-Clause - license_family: BSD - size: 287750 - timestamp: 1713200194013 + size: 290013 + timestamp: 1734777593617 - kind: conda name: libwebp-base - version: 1.4.0 - build: hd590300_0 + version: 1.5.0 + build: h851e524_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.4.0-hd590300_0.conda - sha256: 49bc5f6b1e11cb2babf2a2a731d1a680a5e08a858280876a779dbda06c78c35f - md5: b26e8aa824079e1be0294e7152ca4559 + url: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.5.0-h851e524_0.conda + sha256: c45283fd3e90df5f0bd3dbcd31f59cdd2b001d424cf30a07223655413b158eaf + md5: 63f790534398730f59e1b899c3644d4a depends: - - libgcc-ng >=12 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 constrains: - - libwebp 1.4.0 + - libwebp 1.5.0 license: BSD-3-Clause - license_family: BSD - size: 438953 - timestamp: 1713199854503 + size: 429973 + timestamp: 1734777489810 - kind: conda name: libxcb version: 1.17.0 @@ -5742,20 +5754,20 @@ packages: timestamp: 1727963148474 - kind: conda name: llvm-openmp - version: 19.1.5 + version: 19.1.6 build: hdb05f8b_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.5-hdb05f8b_0.conda - sha256: e7ba0d8b718925efdcf1309f5e776e3264cc172d3af8d4048b39627c50a1abc0 - md5: f2c2e187a1d2637d282e34dc92021a70 + url: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.6-hdb05f8b_0.conda + sha256: a0f3e9139ab16f0a67b9d2bbabc15b78977168f4a5b5503fed4962dcb9a96102 + md5: 34fdeffa0555a1a56f38839415cc066c depends: - __osx >=11.0 constrains: - - openmp 19.1.5|19.1.5.* + - openmp 19.1.6|19.1.6.* license: Apache-2.0 WITH LLVM-exception license_family: APACHE - size: 281120 - timestamp: 1733376089600 + size: 281251 + timestamp: 1734520462311 - kind: conda name: lz4-c version: 1.10.0 @@ -5883,76 +5895,76 @@ packages: timestamp: 1733219945697 - kind: conda name: max - version: 25.1.0.dev2024121705 + version: 25.1.0.dev2024122105 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024121705-release.conda - sha256: 83b2265b29c1ee69ae9d9f639ab04899d0ef15b5abc9114e034e2cd382dcad31 - md5: bd7165d97ebb0458ddb1ce616c146c24 - depends: - - max-core ==25.1.0.dev2024121705 release - - max-python >=25.1.0.dev2024121705,<26.0a0 - - mojo-jupyter ==25.1.0.dev2024121705 release - - mblack ==25.1.0.dev2024121705 release + url: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122105-release.conda + sha256: 1e0513f880a8177c497d6834629f07b87081c1330ea744dafc95fe46be8027a0 + md5: f4c30ea26051f5bbf5000a3adec295e7 + depends: + - max-core ==25.1.0.dev2024122105 release + - max-python >=25.1.0.dev2024122105,<26.0a0 + - mojo-jupyter ==25.1.0.dev2024122105 release + - mblack ==25.1.0.dev2024122105 release license: LicenseRef-Modular-Proprietary - size: 9921 - timestamp: 1734412638047 + size: 9918 + timestamp: 1734758299194 - kind: conda name: max-core - version: 25.1.0.dev2024121705 + version: 25.1.0.dev2024122105 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024121705-release.conda - sha256: 15459b8446d3feb608baae398cf2753a3704e02e07cf2a6c02e166068d8a9304 - md5: 4ca65aff37bd7e944cce1697c1fe203e + url: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024122105-release.conda + sha256: 032159ddcf04826995c272caac82a2ae428dea443f7f2c6f3b382fc0efe0aa8a + md5: fb9e0c204a52897ac821ca65725fbbca depends: - - mblack ==25.1.0.dev2024121705 release + - mblack ==25.1.0.dev2024122105 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 245744992 - timestamp: 1734412638045 + size: 245838806 + timestamp: 1734758213295 - kind: conda name: max-core - version: 25.1.0.dev2024121705 + version: 25.1.0.dev2024122105 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024121705-release.conda - sha256: e89be4d7691a354a3f6e5d71e25b49447ca9fd1048fe03355c3bc509a726234d - md5: acc4b1208feaba5ad08c1b370192e127 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024122105-release.conda + sha256: d73be9f89391173a0a3c9b7d3c362733f8bf9d23b28aac0013992d65576bef3e + md5: cd364e29f1586ab5922873e2f7ba0e45 depends: - - mblack ==25.1.0.dev2024121705 release + - mblack ==25.1.0.dev2024122105 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 249373255 - timestamp: 1734412698620 + size: 249745867 + timestamp: 1734758299192 - kind: conda name: max-core - version: 25.1.0.dev2024121705 + version: 25.1.0.dev2024122105 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024121705-release.conda - sha256: edd613b122c086c4d6237c7195a55ce09bff9922ab70e0f1ff7a9662d3de41fe - md5: d68326deab9bb460f253bf6df7e903f6 + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024122105-release.conda + sha256: 630d1501ad7e70694bf4a131a90363ea44dfc5cebc46ded681b2535ed7377e76 + md5: c8e19c79e0049db94a0e287dd725eb96 depends: - - mblack ==25.1.0.dev2024121705 release + - mblack ==25.1.0.dev2024122105 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 214152137 - timestamp: 1734412888834 + size: 214335752 + timestamp: 1734807721655 - kind: conda name: max-python - version: 25.1.0.dev2024121705 + version: 25.1.0.dev2024122105 build: 3.12release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024121705-3.12release.conda - sha256: 11296250671f2a7c5951382f89f8e68a1702b0c8aeef200788e71d9e0e1d2955 - md5: f979494f9de5b3853834ffa1adf606c3 + url: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024122105-3.12release.conda + sha256: ea496197a0d531c7fd9b6f61879dff9d780e7faa9ce9223a9213ac27cb6f45d3 + md5: 06ccf6c3c46efd01d28ff4d192ff44d2 depends: - - max-core ==25.1.0.dev2024121705 release + - max-core ==25.1.0.dev2024122105 release - python 3.12.* - fastapi - httpx @@ -5975,18 +5987,18 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 122755617 - timestamp: 1734412638055 + size: 122928729 + timestamp: 1734758213305 - kind: conda name: max-python - version: 25.1.0.dev2024121705 + version: 25.1.0.dev2024122105 build: 3.12release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024121705-3.12release.conda - sha256: e4a7ded05f33903034e52feefe65f458975942740cf07dcb30e2e9c1f0af53e6 - md5: 9a51b55d48b861487dbecd7c4abc7b68 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024122105-3.12release.conda + sha256: 9520d2d8b908a48897a52c7f27f2a73d6f747a340333e98100cfb12547623aef + md5: b09a49c3d8bc27360c4e997609eb7149 depends: - - max-core ==25.1.0.dev2024121705 release + - max-core ==25.1.0.dev2024122105 release - python 3.12.* - fastapi - httpx @@ -6009,18 +6021,18 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 126486411 - timestamp: 1734412698632 + size: 126633261 + timestamp: 1734758299202 - kind: conda name: max-python - version: 25.1.0.dev2024121705 + version: 25.1.0.dev2024122105 build: 3.12release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024121705-3.12release.conda - sha256: 328cee9730cf537d58e6d24b9aa111504271433d724fd47fdcee55b26df222b3 - md5: b1168de7b96e9e7b0fad7c675ecdb426 + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024122105-3.12release.conda + sha256: 9888cc5976df9db0a45b374269ae02686d458438ce0fe906f94faabf626ee02b + md5: 3bf68dd30a73b233d47a739c07a47673 depends: - - max-core ==25.1.0.dev2024121705 release + - max-core ==25.1.0.dev2024122105 release - python 3.12.* - fastapi - httpx @@ -6043,17 +6055,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 113391631 - timestamp: 1734412888837 + size: 113518449 + timestamp: 1734807721659 - kind: conda name: mblack - version: 25.1.0.dev2024121705 + version: 25.1.0.dev2024122105 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121705-release.conda - sha256: 44d0c3a0b1242823334d6bad895ad037849719f67bcfbc426c65363c567f80a5 - md5: 93c89483058dabd0282c378812328ba0 + url: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122105-release.conda + sha256: baed1b93405745ade9759deffb26dc7ca1ba26ae33aa0c77a42527327d8b6825 + md5: eea3c5abc46eae804b254ef8b6fba00e depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -6063,8 +6075,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130801 - timestamp: 1734412638051 + size: 130807 + timestamp: 1734758299199 - kind: conda name: mdurl version: 0.1.2 @@ -6083,21 +6095,21 @@ packages: timestamp: 1733255681319 - kind: conda name: mojo-jupyter - version: 25.1.0.dev2024121705 + version: 25.1.0.dev2024122105 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024121705-release.conda - sha256: 8ef8447f576590d381ccaa82e6c207c530e9355b07ab3174f3df9c9f064d42de - md5: 4c31e34ff54c71cd9d584d3ab8f1c315 + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122105-release.conda + sha256: da4de3db554f0079a53da970d790520c31d94b7c78b1ccb9561cdf1eff940c03 + md5: 64ca82739f0503be3407f3b94406734e depends: - - max-core ==25.1.0.dev2024121705 release + - max-core ==25.1.0.dev2024122105 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22937 - timestamp: 1734412638052 + size: 22933 + timestamp: 1734758299200 - kind: conda name: multidict version: 6.1.0 @@ -6489,6 +6501,7 @@ packages: - python >=3.9 - requests >=2.7,<3.dev0 license: Apache-2.0 + license_family: APACHE size: 17147 timestamp: 1734345675510 - kind: conda @@ -7142,31 +7155,31 @@ packages: timestamp: 1733195786147 - kind: conda name: pydantic - version: 2.10.3 + version: 2.10.4 build: pyh3cfb1c2_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.3-pyh3cfb1c2_0.conda - sha256: cac9eebd3d5f8d8a497a9025d756257ddc75b8b3393e6737cb45077bd744d4f8 - md5: 194ef7f91286978521350f171b117f01 + url: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.4-pyh3cfb1c2_0.conda + sha256: e68400714532a33f34b44ddaee3e27e8dd6c83c3f31c7892ec10b84d13aa8b59 + md5: 93bccf4d7a58c9140d59491de21e044b depends: - annotated-types >=0.6.0 - - pydantic-core 2.27.1 + - pydantic-core 2.27.2 - python >=3.9 - typing-extensions >=4.6.1 - typing_extensions >=4.12.2 license: MIT license_family: MIT - size: 317037 - timestamp: 1733316963547 + size: 296557 + timestamp: 1734609427697 - kind: conda name: pydantic-core - version: 2.27.1 + version: 2.27.2 build: py312h12e396e_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.27.1-py312h12e396e_0.conda - sha256: c89741f4eff395f8de70975f42e1f20591f0e0870929d440af35b13399976b09 - md5: 114030cb28527db2c385f07038e914c8 + url: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.27.2-py312h12e396e_0.conda + sha256: 81602a4592ad2ac1a1cb57372fd25214e63b1c477d5818b0c21cde0f1f85c001 + md5: bae01b2563030c085f5158c518b84e86 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -7177,16 +7190,16 @@ packages: - __glibc >=2.17 license: MIT license_family: MIT - size: 1635156 - timestamp: 1732254225040 + size: 1641402 + timestamp: 1734571789895 - kind: conda name: pydantic-core - version: 2.27.1 + version: 2.27.2 build: py312h8cbf658_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/pydantic-core-2.27.1-py312h8cbf658_0.conda - sha256: 1f59bc1914f77faed3c95217e4d093310771baee4e93a15c0479359559e3fa19 - md5: d980860b8bf193f53d30a19c5d2bf070 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/pydantic-core-2.27.2-py312h8cbf658_0.conda + sha256: 623e0f3846f15d035ce7ab7ae445fc8d9e547b6684ab55858b6f44510d24b097 + md5: 9677f6ab4bf27ba3c2aee70d08c7b27c depends: - libgcc >=13 - python >=3.12,<3.13.0a0 @@ -7197,16 +7210,16 @@ packages: - __glibc >=2.17 license: MIT license_family: MIT - size: 1503747 - timestamp: 1732254331303 + size: 1505076 + timestamp: 1734571966615 - kind: conda name: pydantic-core - version: 2.27.1 + version: 2.27.2 build: py312hcd83bfe_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.27.1-py312hcd83bfe_0.conda - sha256: 5bba8de2bbbbdb39390abb1e2aff310e8cfd49646ae5a0e0ea4d6582bd1d52ba - md5: 3847a96eaf24a877b6091150ff9c4955 + url: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.27.2-py312hcd83bfe_0.conda + sha256: cfa7201f890d5d08ce29ff70e65a96787d5793a1718776733666b44bbd4a1205 + md5: dcb307e02f17d38c6e1cbfbf8c602852 depends: - __osx >=11.0 - python >=3.12,<3.13.0a0 @@ -7217,8 +7230,8 @@ packages: - __osx >=11.0 license: MIT license_family: MIT - size: 1449057 - timestamp: 1732254359451 + size: 1593461 + timestamp: 1734571986644 - kind: conda name: pydantic-settings version: 2.7.0 @@ -8341,14 +8354,13 @@ packages: timestamp: 1733367480074 - kind: conda name: transformers - version: 4.47.0 - build: pyhd8ed1ab_1 - build_number: 1 + version: 4.47.1 + build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.0-pyhd8ed1ab_1.conda - sha256: d31821081219a0ede5c1f356b65a61ce98ac11e2df78b0eaa684c17c73389fbf - md5: 6d2ec1ddee8057d2d724a0ab0bb578a0 + url: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.1-pyhd8ed1ab_0.conda + sha256: df8238c3cccbb6bb1d5657e6a75977ac0b832ab61155d5e3d8560c1c4f52abeb + md5: 931d66db156680c42c62812d6533cbf7 depends: - datasets !=2.5.0 - filelock @@ -8364,8 +8376,8 @@ packages: - tqdm >=4.27 license: Apache-2.0 license_family: APACHE - size: 3726957 - timestamp: 1733948063517 + size: 3680276 + timestamp: 1734499046193 - kind: conda name: typer version: 0.15.1 diff --git a/magic.lock b/magic.lock index fd858605d2..c547700255 100644 --- a/magic.lock +++ b/magic.lock @@ -9,7 +9,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.10-py312h178313f_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.11-py312h178313f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.7.0-pyhd8ed1ab_0.conda @@ -54,7 +54,7 @@ environments: - 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 - - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.12.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gflags-2.2.2-h5888daf_1005.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/glog-0.7.1-hbabe93e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda @@ -123,21 +123,21 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.9.0-hb9d3cd8_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.49.2-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.4.0-hd590300_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.5.0-h851e524_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.5-h0d44e9d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/lit-19.1.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/lit-19.1.6-pyhd8ed1ab_0.conda - 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-25.1.0.dev2024121705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024121705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024121705-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122105-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024122105-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024122105-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122105-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-25.1.0.dev2024121705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122105-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 @@ -165,8 +165,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-18.1.0-py312h7900ff3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-18.1.0-py312h01725c0_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.3-pyh3cfb1c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.27.1-py312h12e396e_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.4-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.27.2-py312h12e396e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.7.0-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyinstrument-5.0.0-py312h66e93f0_0.conda @@ -201,7 +201,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda @@ -227,7 +227,7 @@ environments: linux-aarch64: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.10-py312hcc812fe_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.11-py312hcc812fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.7.0-pyhd8ed1ab_0.conda @@ -272,7 +272,7 @@ environments: - 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 - - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.12.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gflags-2.2.2-h5ad3122_1005.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/glog-0.7.1-h468a4a4_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda @@ -342,21 +342,21 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.9.0-h86ecc28_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuv-1.49.2-h86ecc28_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libwebp-base-1.4.0-h31becfc_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libwebp-base-1.5.0-h0886dbf_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcb-1.17.0-h262b8f6_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.5-h2e0c361_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/lit-19.1.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/lit-19.1.6-pyhd8ed1ab_0.conda - 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-25.1.0.dev2024121705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024121705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024121705-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122105-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024122105-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024122105-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122105-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-25.1.0.dev2024121705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122105-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 @@ -384,8 +384,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-18.1.0-py312h8025657_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-18.1.0-py312h66f7834_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.3-pyh3cfb1c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pydantic-core-2.27.1-py312h8cbf658_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.4-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pydantic-core-2.27.2-py312h8cbf658_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.7.0-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyinstrument-5.0.0-py312hb2c0f52_0.conda @@ -420,7 +420,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py312h52516f5_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda @@ -445,7 +445,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.6-h02f22dd_0.conda osx-arm64: - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.10-py312h998013c_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.11-py312h998013c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.7.0-pyhd8ed1ab_0.conda @@ -490,7 +490,7 @@ environments: - 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 - - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.12.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gflags-2.2.2-hf9b8971_1005.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/glog-0.7.1-heb240a5_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda @@ -523,7 +523,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-26_osxarm64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcrc32c-1.1.2-hbdafb3b_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.11.1-h73640d1_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.5-ha82da77_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.6-ha82da77_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.23-hec38601_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20191231-hc8eb9b7_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libev-4.33-h93a5062_2.conda @@ -552,21 +552,21 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-h551f018_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.9.0-h5505292_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libuv-1.49.2-h7ab814d_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.4.0-h93a5062_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.5.0-h2471fea_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxcb-1.17.0-hdb1d25a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.5-h178c5d8_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/lit-19.1.5-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.5-hdb05f8b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/lit-19.1.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.6-hdb05f8b_0.conda - 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-25.1.0.dev2024121705-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024121705-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024121705-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122105-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024122105-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024122105-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122105-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-25.1.0.dev2024121705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122105-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 @@ -594,8 +594,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-18.1.0-py312h1f38498_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-18.1.0-py312hc40f475_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.3-pyh3cfb1c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.27.1-py312hcd83bfe_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.4-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.27.2-py312hcd83bfe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.7.0-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyinstrument-5.0.0-py312h0bf5046_0.conda @@ -629,7 +629,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda @@ -717,12 +717,12 @@ packages: timestamp: 1733332029649 - kind: conda name: aiohttp - version: 3.11.10 + version: 3.11.11 build: py312h178313f_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.10-py312h178313f_0.conda - sha256: dc8ebdd99e9d7a07454a7063a295cdc7a86264648647fec10b2ceae97478e200 - md5: 3e92784b8e32ab7d0b95ee296ba79a99 + url: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.11-py312h178313f_0.conda + sha256: 2e817805e8a4fed33f23f116ff5649f8651af693328e9ed82d9d11a951338693 + md5: 8219afa093757bbe07b9825eb1973ed9 depends: - __glibc >=2.17,<3.0.a0 - aiohappyeyeballs >=2.3.0 @@ -737,16 +737,16 @@ packages: - yarl >=1.17.0,<2.0 license: MIT AND Apache-2.0 license_family: Apache - size: 914378 - timestamp: 1733839626367 + size: 915358 + timestamp: 1734597073870 - kind: conda name: aiohttp - version: 3.11.10 + version: 3.11.11 build: py312h998013c_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.10-py312h998013c_0.conda - sha256: 69eb9c89dce6a7ae960099172daffba9f77fef39344f37e581685a8e3c5debe6 - md5: 642356223364539ba7ba36556fcf49ee + url: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.11-py312h998013c_0.conda + sha256: 446f078e7a7b892894d7f4851a278b7834ffb4f5632313646a55c3abe13690d4 + md5: c69c904691364cfb27d15aa7153e9c29 depends: - __osx >=11.0 - aiohappyeyeballs >=2.3.0 @@ -761,16 +761,16 @@ packages: - yarl >=1.17.0,<2.0 license: MIT AND Apache-2.0 license_family: Apache - size: 874135 - timestamp: 1733839113411 + size: 875711 + timestamp: 1734597277258 - kind: conda name: aiohttp - version: 3.11.10 + version: 3.11.11 build: py312hcc812fe_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.10-py312hcc812fe_0.conda - sha256: df694a9fec546e575a4ea7e1c3ac476c0bda53c0fad44c046ad3ebdd5b75a0a8 - md5: a8c9ec59e6323b38418bbf04deaa0c02 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.11-py312hcc812fe_0.conda + sha256: f28e81e458d19df4ca0002f8a92d7f647fa25e8179887a8676801dfe44edb1f2 + md5: 11fa88136d9bf39d2136b2378f7c10be depends: - aiohappyeyeballs >=2.3.0 - aiosignal >=1.1.2 @@ -785,8 +785,8 @@ packages: - yarl >=1.17.0,<2.0 license: MIT AND Apache-2.0 license_family: Apache - size: 900931 - timestamp: 1733839037447 + size: 902422 + timestamp: 1734597104529 - kind: conda name: aiosignal version: 1.3.2 @@ -2480,20 +2480,19 @@ packages: timestamp: 1729699642726 - kind: conda name: fsspec - version: 2024.10.0 - build: pyhd8ed1ab_1 - build_number: 1 + version: 2024.12.0 + build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhd8ed1ab_1.conda - sha256: 790a50b4f94042951518f911a914a886a837c926094c6a14ed1d9d03ce336807 - md5: 906fe13095e734cb413b57a49116cdc8 + url: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.12.0-pyhd8ed1ab_0.conda + sha256: 3320970c4604989eadf908397a9475f9e6a96a773c185915111399cbfbe47817 + md5: e041ad4c43ab5e10c74587f95378ebc7 depends: - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 134726 - timestamp: 1733493445080 + size: 137756 + timestamp: 1734650349242 - kind: conda name: gflags version: 2.2.2 @@ -3496,6 +3495,7 @@ packages: - liblapacke 3.9.0 26_linux64_openblas - blas * openblas license: BSD-3-Clause + license_family: BSD size: 16393 timestamp: 1734432564346 - kind: conda @@ -3516,6 +3516,7 @@ packages: - libcblas 3.9.0 26_linuxaarch64_openblas - liblapack 3.9.0 26_linuxaarch64_openblas license: BSD-3-Clause + license_family: BSD size: 16477 timestamp: 1734432576699 - kind: conda @@ -3536,6 +3537,7 @@ packages: - libcblas 3.9.0 26_osxarm64_openblas - blas * openblas license: BSD-3-Clause + license_family: BSD size: 16714 timestamp: 1734433054681 - kind: conda @@ -3698,6 +3700,7 @@ packages: - liblapacke 3.9.0 26_linux64_openblas - blas * openblas license: BSD-3-Clause + license_family: BSD size: 16336 timestamp: 1734432570482 - kind: conda @@ -3716,6 +3719,7 @@ packages: - liblapacke 3.9.0 26_linuxaarch64_openblas - liblapack 3.9.0 26_linuxaarch64_openblas license: BSD-3-Clause + license_family: BSD size: 16398 timestamp: 1734432580937 - kind: conda @@ -3734,6 +3738,7 @@ packages: - liblapacke 3.9.0 26_osxarm64_openblas - blas * openblas license: BSD-3-Clause + license_family: BSD size: 16628 timestamp: 1734433061517 - kind: conda @@ -3843,18 +3848,19 @@ packages: timestamp: 1734000160270 - kind: conda name: libcxx - version: 19.1.5 - build: ha82da77_0 + version: 19.1.6 + build: ha82da77_1 + build_number: 1 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.5-ha82da77_0.conda - sha256: 7918cc0bb7a6554cdd3eee634c3dc414a1ab8ec49faeca1567367bb92118f9d7 - md5: 3c7be0df28ccda1d193ea6de56dcb5ff + url: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.6-ha82da77_1.conda + sha256: 2b2443404503cd862385fd2f2a2c73f9624686fd1e5a45050b4034cfc06904ec + md5: ce5252d8db110cdb4ae4173d0a63c7c5 depends: - __osx >=11.0 license: Apache-2.0 WITH LLVM-exception license_family: Apache - size: 519819 - timestamp: 1733291654212 + size: 520992 + timestamp: 1734494699681 - kind: conda name: libdeflate version: '1.23' @@ -3867,6 +3873,7 @@ packages: - __glibc >=2.17,<3.0.a0 - libgcc >=13 license: MIT + license_family: MIT size: 72255 timestamp: 1734373823254 - kind: conda @@ -3880,6 +3887,7 @@ packages: depends: - libgcc >=13 license: MIT + license_family: MIT size: 69862 timestamp: 1734373858306 - kind: conda @@ -3893,6 +3901,7 @@ packages: depends: - __osx >=11.0 license: MIT + license_family: MIT size: 54132 timestamp: 1734373971372 - kind: conda @@ -4631,6 +4640,7 @@ packages: - liblapacke 3.9.0 26_linux64_openblas - blas * openblas license: BSD-3-Clause + license_family: BSD size: 16338 timestamp: 1734432576650 - kind: conda @@ -4649,6 +4659,7 @@ packages: - liblapacke 3.9.0 26_linuxaarch64_openblas - libcblas 3.9.0 26_linuxaarch64_openblas license: BSD-3-Clause + license_family: BSD size: 16403 timestamp: 1734432585123 - kind: conda @@ -4667,6 +4678,7 @@ packages: - libcblas 3.9.0 26_osxarm64_openblas - blas * openblas license: BSD-3-Clause + license_family: BSD size: 16624 timestamp: 1734433068120 - kind: conda @@ -5508,50 +5520,50 @@ packages: timestamp: 1729322566955 - kind: conda name: libwebp-base - version: 1.4.0 - build: h31becfc_0 + version: 1.5.0 + build: h0886dbf_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libwebp-base-1.4.0-h31becfc_0.conda - sha256: 10dded60f274e29c573cfacf6e96f5d0fc374ee431250374a44cbd773916ab9d - md5: 5fd7ab3e5f382c70607fbac6335e6e19 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libwebp-base-1.5.0-h0886dbf_0.conda + sha256: b3d881a0ae08bb07fff7fa8ead506c8d2e0388733182fe4f216f3ec5d61ffcf0 + md5: 95ef4a689b8cc1b7e18b53784d88f96b depends: - - libgcc-ng >=12 + - libgcc >=13 constrains: - - libwebp 1.4.0 + - libwebp 1.5.0 license: BSD-3-Clause - license_family: BSD - size: 363577 - timestamp: 1713201785160 + size: 362623 + timestamp: 1734779054659 - kind: conda name: libwebp-base - version: 1.4.0 - build: h93a5062_0 + version: 1.5.0 + build: h2471fea_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.4.0-h93a5062_0.conda - sha256: 0d4bad713a512d79bfeb4d61821f447afab8b0792aca823f505ce6b195e9fde5 - md5: c0af0edfebe780b19940e94871f1a765 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.5.0-h2471fea_0.conda + sha256: f8bdb876b4bc8cb5df47c28af29188de8911c3fea4b799a33743500149de3f4a + md5: 569466afeb84f90d5bb88c11cc23d746 + depends: + - __osx >=11.0 constrains: - - libwebp 1.4.0 + - libwebp 1.5.0 license: BSD-3-Clause - license_family: BSD - size: 287750 - timestamp: 1713200194013 + size: 290013 + timestamp: 1734777593617 - kind: conda name: libwebp-base - version: 1.4.0 - build: hd590300_0 + version: 1.5.0 + build: h851e524_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.4.0-hd590300_0.conda - sha256: 49bc5f6b1e11cb2babf2a2a731d1a680a5e08a858280876a779dbda06c78c35f - md5: b26e8aa824079e1be0294e7152ca4559 + url: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.5.0-h851e524_0.conda + sha256: c45283fd3e90df5f0bd3dbcd31f59cdd2b001d424cf30a07223655413b158eaf + md5: 63f790534398730f59e1b899c3644d4a depends: - - libgcc-ng >=12 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 constrains: - - libwebp 1.4.0 + - libwebp 1.5.0 license: BSD-3-Clause - license_family: BSD - size: 438953 - timestamp: 1713199854503 + size: 429973 + timestamp: 1734777489810 - kind: conda name: libxcb version: 1.17.0 @@ -5745,35 +5757,35 @@ packages: timestamp: 1727963148474 - kind: conda name: lit - version: 19.1.5 + version: 19.1.6 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/lit-19.1.5-pyhd8ed1ab_0.conda - sha256: 07854df4ab39a333155b4813338caf8e0f6fe5a9abc84518d9409aa5cd91f94c - md5: ad3f4f4e25b666610c281c6fb92f06f9 + url: https://conda.anaconda.org/conda-forge/noarch/lit-19.1.6-pyhd8ed1ab_0.conda + sha256: db850690a15523a42f6e526d069a4a065d516793360d0b20e67258316bcf14f1 + md5: 367b485a667684bd797fddb1abf66969 depends: - python >=3 license: Apache-2.0 WITH LLVM-exception license_family: Apache - size: 128621 - timestamp: 1733310809397 + size: 128368 + timestamp: 1734486415918 - kind: conda name: llvm-openmp - version: 19.1.5 + version: 19.1.6 build: hdb05f8b_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.5-hdb05f8b_0.conda - sha256: e7ba0d8b718925efdcf1309f5e776e3264cc172d3af8d4048b39627c50a1abc0 - md5: f2c2e187a1d2637d282e34dc92021a70 + url: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.6-hdb05f8b_0.conda + sha256: a0f3e9139ab16f0a67b9d2bbabc15b78977168f4a5b5503fed4962dcb9a96102 + md5: 34fdeffa0555a1a56f38839415cc066c depends: - __osx >=11.0 constrains: - - openmp 19.1.5|19.1.5.* + - openmp 19.1.6|19.1.6.* license: Apache-2.0 WITH LLVM-exception license_family: APACHE - size: 281120 - timestamp: 1733376089600 + size: 281251 + timestamp: 1734520462311 - kind: conda name: lz4-c version: 1.10.0 @@ -5901,76 +5913,76 @@ packages: timestamp: 1733219945697 - kind: conda name: max - version: 25.1.0.dev2024121705 + version: 25.1.0.dev2024122105 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024121705-release.conda - sha256: 83b2265b29c1ee69ae9d9f639ab04899d0ef15b5abc9114e034e2cd382dcad31 - md5: bd7165d97ebb0458ddb1ce616c146c24 - depends: - - max-core ==25.1.0.dev2024121705 release - - max-python >=25.1.0.dev2024121705,<26.0a0 - - mojo-jupyter ==25.1.0.dev2024121705 release - - mblack ==25.1.0.dev2024121705 release + url: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122105-release.conda + sha256: 1e0513f880a8177c497d6834629f07b87081c1330ea744dafc95fe46be8027a0 + md5: f4c30ea26051f5bbf5000a3adec295e7 + depends: + - max-core ==25.1.0.dev2024122105 release + - max-python >=25.1.0.dev2024122105,<26.0a0 + - mojo-jupyter ==25.1.0.dev2024122105 release + - mblack ==25.1.0.dev2024122105 release license: LicenseRef-Modular-Proprietary - size: 9921 - timestamp: 1734412638047 + size: 9918 + timestamp: 1734758299194 - kind: conda name: max-core - version: 25.1.0.dev2024121705 + version: 25.1.0.dev2024122105 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024121705-release.conda - sha256: 15459b8446d3feb608baae398cf2753a3704e02e07cf2a6c02e166068d8a9304 - md5: 4ca65aff37bd7e944cce1697c1fe203e + url: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024122105-release.conda + sha256: 032159ddcf04826995c272caac82a2ae428dea443f7f2c6f3b382fc0efe0aa8a + md5: fb9e0c204a52897ac821ca65725fbbca depends: - - mblack ==25.1.0.dev2024121705 release + - mblack ==25.1.0.dev2024122105 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 245744992 - timestamp: 1734412638045 + size: 245838806 + timestamp: 1734758213295 - kind: conda name: max-core - version: 25.1.0.dev2024121705 + version: 25.1.0.dev2024122105 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024121705-release.conda - sha256: e89be4d7691a354a3f6e5d71e25b49447ca9fd1048fe03355c3bc509a726234d - md5: acc4b1208feaba5ad08c1b370192e127 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024122105-release.conda + sha256: d73be9f89391173a0a3c9b7d3c362733f8bf9d23b28aac0013992d65576bef3e + md5: cd364e29f1586ab5922873e2f7ba0e45 depends: - - mblack ==25.1.0.dev2024121705 release + - mblack ==25.1.0.dev2024122105 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 249373255 - timestamp: 1734412698620 + size: 249745867 + timestamp: 1734758299192 - kind: conda name: max-core - version: 25.1.0.dev2024121705 + version: 25.1.0.dev2024122105 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024121705-release.conda - sha256: edd613b122c086c4d6237c7195a55ce09bff9922ab70e0f1ff7a9662d3de41fe - md5: d68326deab9bb460f253bf6df7e903f6 + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024122105-release.conda + sha256: 630d1501ad7e70694bf4a131a90363ea44dfc5cebc46ded681b2535ed7377e76 + md5: c8e19c79e0049db94a0e287dd725eb96 depends: - - mblack ==25.1.0.dev2024121705 release + - mblack ==25.1.0.dev2024122105 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 214152137 - timestamp: 1734412888834 + size: 214335752 + timestamp: 1734807721655 - kind: conda name: max-python - version: 25.1.0.dev2024121705 + version: 25.1.0.dev2024122105 build: 3.12release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024121705-3.12release.conda - sha256: 11296250671f2a7c5951382f89f8e68a1702b0c8aeef200788e71d9e0e1d2955 - md5: f979494f9de5b3853834ffa1adf606c3 + url: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024122105-3.12release.conda + sha256: ea496197a0d531c7fd9b6f61879dff9d780e7faa9ce9223a9213ac27cb6f45d3 + md5: 06ccf6c3c46efd01d28ff4d192ff44d2 depends: - - max-core ==25.1.0.dev2024121705 release + - max-core ==25.1.0.dev2024122105 release - python 3.12.* - fastapi - httpx @@ -5993,18 +6005,18 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 122755617 - timestamp: 1734412638055 + size: 122928729 + timestamp: 1734758213305 - kind: conda name: max-python - version: 25.1.0.dev2024121705 + version: 25.1.0.dev2024122105 build: 3.12release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024121705-3.12release.conda - sha256: e4a7ded05f33903034e52feefe65f458975942740cf07dcb30e2e9c1f0af53e6 - md5: 9a51b55d48b861487dbecd7c4abc7b68 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024122105-3.12release.conda + sha256: 9520d2d8b908a48897a52c7f27f2a73d6f747a340333e98100cfb12547623aef + md5: b09a49c3d8bc27360c4e997609eb7149 depends: - - max-core ==25.1.0.dev2024121705 release + - max-core ==25.1.0.dev2024122105 release - python 3.12.* - fastapi - httpx @@ -6027,18 +6039,18 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 126486411 - timestamp: 1734412698632 + size: 126633261 + timestamp: 1734758299202 - kind: conda name: max-python - version: 25.1.0.dev2024121705 + version: 25.1.0.dev2024122105 build: 3.12release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024121705-3.12release.conda - sha256: 328cee9730cf537d58e6d24b9aa111504271433d724fd47fdcee55b26df222b3 - md5: b1168de7b96e9e7b0fad7c675ecdb426 + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024122105-3.12release.conda + sha256: 9888cc5976df9db0a45b374269ae02686d458438ce0fe906f94faabf626ee02b + md5: 3bf68dd30a73b233d47a739c07a47673 depends: - - max-core ==25.1.0.dev2024121705 release + - max-core ==25.1.0.dev2024122105 release - python 3.12.* - fastapi - httpx @@ -6061,17 +6073,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 113391631 - timestamp: 1734412888837 + size: 113518449 + timestamp: 1734807721659 - kind: conda name: mblack - version: 25.1.0.dev2024121705 + version: 25.1.0.dev2024122105 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024121705-release.conda - sha256: 44d0c3a0b1242823334d6bad895ad037849719f67bcfbc426c65363c567f80a5 - md5: 93c89483058dabd0282c378812328ba0 + url: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122105-release.conda + sha256: baed1b93405745ade9759deffb26dc7ca1ba26ae33aa0c77a42527327d8b6825 + md5: eea3c5abc46eae804b254ef8b6fba00e depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -6081,8 +6093,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130801 - timestamp: 1734412638051 + size: 130807 + timestamp: 1734758299199 - kind: conda name: mdurl version: 0.1.2 @@ -6101,21 +6113,21 @@ packages: timestamp: 1733255681319 - kind: conda name: mojo-jupyter - version: 25.1.0.dev2024121705 + version: 25.1.0.dev2024122105 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024121705-release.conda - sha256: 8ef8447f576590d381ccaa82e6c207c530e9355b07ab3174f3df9c9f064d42de - md5: 4c31e34ff54c71cd9d584d3ab8f1c315 + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122105-release.conda + sha256: da4de3db554f0079a53da970d790520c31d94b7c78b1ccb9561cdf1eff940c03 + md5: 64ca82739f0503be3407f3b94406734e depends: - - max-core ==25.1.0.dev2024121705 release + - max-core ==25.1.0.dev2024122105 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22937 - timestamp: 1734412638052 + size: 22933 + timestamp: 1734758299200 - kind: conda name: multidict version: 6.1.0 @@ -6507,6 +6519,7 @@ packages: - python >=3.9 - requests >=2.7,<3.dev0 license: Apache-2.0 + license_family: APACHE size: 17147 timestamp: 1734345675510 - kind: conda @@ -7160,31 +7173,31 @@ packages: timestamp: 1733195786147 - kind: conda name: pydantic - version: 2.10.3 + version: 2.10.4 build: pyh3cfb1c2_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.3-pyh3cfb1c2_0.conda - sha256: cac9eebd3d5f8d8a497a9025d756257ddc75b8b3393e6737cb45077bd744d4f8 - md5: 194ef7f91286978521350f171b117f01 + url: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.4-pyh3cfb1c2_0.conda + sha256: e68400714532a33f34b44ddaee3e27e8dd6c83c3f31c7892ec10b84d13aa8b59 + md5: 93bccf4d7a58c9140d59491de21e044b depends: - annotated-types >=0.6.0 - - pydantic-core 2.27.1 + - pydantic-core 2.27.2 - python >=3.9 - typing-extensions >=4.6.1 - typing_extensions >=4.12.2 license: MIT license_family: MIT - size: 317037 - timestamp: 1733316963547 + size: 296557 + timestamp: 1734609427697 - kind: conda name: pydantic-core - version: 2.27.1 + version: 2.27.2 build: py312h12e396e_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.27.1-py312h12e396e_0.conda - sha256: c89741f4eff395f8de70975f42e1f20591f0e0870929d440af35b13399976b09 - md5: 114030cb28527db2c385f07038e914c8 + url: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.27.2-py312h12e396e_0.conda + sha256: 81602a4592ad2ac1a1cb57372fd25214e63b1c477d5818b0c21cde0f1f85c001 + md5: bae01b2563030c085f5158c518b84e86 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -7195,16 +7208,16 @@ packages: - __glibc >=2.17 license: MIT license_family: MIT - size: 1635156 - timestamp: 1732254225040 + size: 1641402 + timestamp: 1734571789895 - kind: conda name: pydantic-core - version: 2.27.1 + version: 2.27.2 build: py312h8cbf658_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/pydantic-core-2.27.1-py312h8cbf658_0.conda - sha256: 1f59bc1914f77faed3c95217e4d093310771baee4e93a15c0479359559e3fa19 - md5: d980860b8bf193f53d30a19c5d2bf070 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/pydantic-core-2.27.2-py312h8cbf658_0.conda + sha256: 623e0f3846f15d035ce7ab7ae445fc8d9e547b6684ab55858b6f44510d24b097 + md5: 9677f6ab4bf27ba3c2aee70d08c7b27c depends: - libgcc >=13 - python >=3.12,<3.13.0a0 @@ -7215,16 +7228,16 @@ packages: - __glibc >=2.17 license: MIT license_family: MIT - size: 1503747 - timestamp: 1732254331303 + size: 1505076 + timestamp: 1734571966615 - kind: conda name: pydantic-core - version: 2.27.1 + version: 2.27.2 build: py312hcd83bfe_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.27.1-py312hcd83bfe_0.conda - sha256: 5bba8de2bbbbdb39390abb1e2aff310e8cfd49646ae5a0e0ea4d6582bd1d52ba - md5: 3847a96eaf24a877b6091150ff9c4955 + url: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.27.2-py312hcd83bfe_0.conda + sha256: cfa7201f890d5d08ce29ff70e65a96787d5793a1718776733666b44bbd4a1205 + md5: dcb307e02f17d38c6e1cbfbf8c602852 depends: - __osx >=11.0 - python >=3.12,<3.13.0a0 @@ -7235,8 +7248,8 @@ packages: - __osx >=11.0 license: MIT license_family: MIT - size: 1449057 - timestamp: 1732254359451 + size: 1593461 + timestamp: 1734571986644 - kind: conda name: pydantic-settings version: 2.7.0 @@ -8359,14 +8372,13 @@ packages: timestamp: 1733367480074 - kind: conda name: transformers - version: 4.47.0 - build: pyhd8ed1ab_1 - build_number: 1 + version: 4.47.1 + build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.0-pyhd8ed1ab_1.conda - sha256: d31821081219a0ede5c1f356b65a61ce98ac11e2df78b0eaa684c17c73389fbf - md5: 6d2ec1ddee8057d2d724a0ab0bb578a0 + url: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.1-pyhd8ed1ab_0.conda + sha256: df8238c3cccbb6bb1d5657e6a75977ac0b832ab61155d5e3d8560c1c4f52abeb + md5: 931d66db156680c42c62812d6533cbf7 depends: - datasets !=2.5.0 - filelock @@ -8382,8 +8394,8 @@ packages: - tqdm >=4.27 license: Apache-2.0 license_family: APACHE - size: 3726957 - timestamp: 1733948063517 + size: 3680276 + timestamp: 1734499046193 - kind: conda name: typer version: 0.15.1 From 22aa305bc066a5db7b4d7e2552ff230d1355a494 Mon Sep 17 00:00:00 2001 From: modularbot Date: Mon, 23 Dec 2024 23:37:43 +0000 Subject: [PATCH 134/509] Update lockfiles to point to latest nightly version: 25.1.0.dev2024122305 --- examples/life/magic.lock | 252 +++++++++++++++++----------------- examples/magic.lock | 252 +++++++++++++++++----------------- examples/notebooks/magic.lock | 250 ++++++++++++++++----------------- examples/operators/magic.lock | 252 +++++++++++++++++----------------- magic.lock | 252 +++++++++++++++++----------------- 5 files changed, 614 insertions(+), 644 deletions(-) diff --git a/examples/life/magic.lock b/examples/life/magic.lock index f9b11ce876..1b8c6db189 100644 --- a/examples/life/magic.lock +++ b/examples/life/magic.lock @@ -44,7 +44,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.12.14-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py312h06ac9bb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/dav1d-1.2.1-hd590300_0.conda @@ -89,7 +89,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/jack-1.9.22-h7c63dc7_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 @@ -170,12 +170,12 @@ 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-25.1.0.dev2024122105-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024122105-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024122105-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122305-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024122305-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024122305-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122305-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-25.1.0.dev2024122105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122305-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_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.15-py312h98912ed_1.conda @@ -245,7 +245,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-h8bd8927_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.1.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/svt-av1-2.3.0-h5888daf_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda @@ -260,7 +260,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.34.0-pyh31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.34.0-h31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/uvloop-0.21.0-py312h66e93f0_1.conda @@ -320,7 +320,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.12.14-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cffi-1.17.1-py312hac81daf_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/dav1d-1.2.1-h31becfc_0.conda @@ -365,7 +365,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/jack-1.9.22-h5c6c0ed_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/keyutils-1.6.1-h4e544f5_0.tar.bz2 @@ -446,12 +446,12 @@ 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-25.1.0.dev2024122105-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024122105-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024122105-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122305-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024122305-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024122305-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122305-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-25.1.0.dev2024122105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122305-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_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.15-py312hdd3e373_1.conda @@ -521,7 +521,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-hd4fb6f5_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.1.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/svt-av1-2.3.0-h5ad3122_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda @@ -536,7 +536,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.34.0-pyh31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.34.0-h31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/uvloop-0.21.0-py312hb2c0f52_1.conda @@ -593,7 +593,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.12.14-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.1-py312h0fad829_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/dav1d-1.2.1-hb547adb_0.conda @@ -635,7 +635,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda @@ -705,12 +705,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-25.1.0.dev2024122105-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024122105-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024122105-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122305-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024122305-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024122305-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122305-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-25.1.0.dev2024122105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122305-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 @@ -778,7 +778,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-h98b9ce2_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.1.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/svt-av1-2.3.0-hf24288c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda @@ -793,7 +793,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.34.0-pyh31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.34.0-h31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/uvloop-0.21.0-py312h0bf5046_1.conda @@ -2504,21 +2504,20 @@ packages: timestamp: 1733218182393 - kind: conda name: click - version: 8.1.7 - build: unix_pyh707e725_1 - build_number: 1 + version: 8.1.8 + build: pyh707e725_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_1.conda - sha256: 1cd5fc6ccdd5141378e51252a7a3810b07fd5a7e6934a5b4a7eccba66566224b - md5: cb8e52f28f5e592598190c562e7b5bf1 + url: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda + sha256: c920d23cd1fcf565031c679adb62d848af60d6fbb0edc2d50ba475cea4f0d8ab + md5: f22f4d4970e09d68a10b922cbb0408d3 depends: - __unix - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 84513 - timestamp: 1733221925078 + size: 84705 + timestamp: 1734858922844 - kind: conda name: colorama version: 0.4.6 @@ -3790,21 +3789,19 @@ packages: timestamp: 1693879949990 - kind: conda name: jinja2 - version: 3.1.4 - build: pyhd8ed1ab_1 - build_number: 1 + version: 3.1.5 + build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_1.conda - sha256: 85a7169c078b8065bd9d121b0e7b99c8b88c42a411314b6ae5fcd81c48c4710a - md5: 08cce3151bde4ecad7885bd9fb647532 + url: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.5-pyhd8ed1ab_0.conda + sha256: 98977694b9ecaa3218662f843425f39501f81973c450f995eec68f1803ed71c3 + md5: 2752a6ed44105bfb18c9bef1177d9dcd depends: - markupsafe >=2.0 - python >=3.9 license: BSD-3-Clause - license_family: BSD - size: 110963 - timestamp: 1733217424408 + size: 112561 + timestamp: 1734824044952 - kind: conda name: jupyter_client version: 8.6.3 @@ -7674,76 +7671,76 @@ packages: timestamp: 1733219945697 - kind: conda name: max - version: 25.1.0.dev2024122105 + version: 25.1.0.dev2024122305 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122105-release.conda - sha256: 1e0513f880a8177c497d6834629f07b87081c1330ea744dafc95fe46be8027a0 - md5: f4c30ea26051f5bbf5000a3adec295e7 - depends: - - max-core ==25.1.0.dev2024122105 release - - max-python >=25.1.0.dev2024122105,<26.0a0 - - mojo-jupyter ==25.1.0.dev2024122105 release - - mblack ==25.1.0.dev2024122105 release + url: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122305-release.conda + sha256: 3d41962e708b802bdb9bed0477ed87c09220db8f79c69c7f89100446ab47379b + md5: 71fda8b443ffe33ad9604d490b69b137 + depends: + - max-core ==25.1.0.dev2024122305 release + - max-python >=25.1.0.dev2024122305,<26.0a0 + - mojo-jupyter ==25.1.0.dev2024122305 release + - mblack ==25.1.0.dev2024122305 release license: LicenseRef-Modular-Proprietary - size: 9918 - timestamp: 1734758299194 + size: 9914 + timestamp: 1734931092581 - kind: conda name: max-core - version: 25.1.0.dev2024122105 + version: 25.1.0.dev2024122305 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024122105-release.conda - sha256: 032159ddcf04826995c272caac82a2ae428dea443f7f2c6f3b382fc0efe0aa8a - md5: fb9e0c204a52897ac821ca65725fbbca + url: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024122305-release.conda + sha256: 1032bb0ae02634332d69429dd7e0622f54a94338248c2225743b18d92697f160 + md5: ee626ed4feac127b6d68433b1c7650ad depends: - - mblack ==25.1.0.dev2024122105 release + - mblack ==25.1.0.dev2024122305 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 245838806 - timestamp: 1734758213295 + size: 245865434 + timestamp: 1734931102523 - kind: conda name: max-core - version: 25.1.0.dev2024122105 + version: 25.1.0.dev2024122305 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024122105-release.conda - sha256: d73be9f89391173a0a3c9b7d3c362733f8bf9d23b28aac0013992d65576bef3e - md5: cd364e29f1586ab5922873e2f7ba0e45 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024122305-release.conda + sha256: a277abac670d966eccb7d4b0804eab694aa3a0ae3f8d3be0fab6d813f56c77d8 + md5: 59e964fe846e294029da392482e3f82c depends: - - mblack ==25.1.0.dev2024122105 release + - mblack ==25.1.0.dev2024122305 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 249745867 - timestamp: 1734758299192 + size: 249729693 + timestamp: 1734931092579 - kind: conda name: max-core - version: 25.1.0.dev2024122105 + version: 25.1.0.dev2024122305 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024122105-release.conda - sha256: 630d1501ad7e70694bf4a131a90363ea44dfc5cebc46ded681b2535ed7377e76 - md5: c8e19c79e0049db94a0e287dd725eb96 + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024122305-release.conda + sha256: f72340995c59c3a148c9378935363370936c734431d88bfd0db11c4461406a51 + md5: a5ac18a65291496df2d96bb745237a02 depends: - - mblack ==25.1.0.dev2024122105 release + - mblack ==25.1.0.dev2024122305 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 214335752 - timestamp: 1734807721655 + size: 214359730 + timestamp: 1734931396861 - kind: conda name: max-python - version: 25.1.0.dev2024122105 + version: 25.1.0.dev2024122305 build: 3.12release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024122105-3.12release.conda - sha256: ea496197a0d531c7fd9b6f61879dff9d780e7faa9ce9223a9213ac27cb6f45d3 - md5: 06ccf6c3c46efd01d28ff4d192ff44d2 + url: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024122305-3.12release.conda + sha256: 2b6cbf710cb2b5411f62e0ccbb0e5973f7c8913eb8122dfcb74c2d41087ed4b3 + md5: d3a108c46dd79a0ae7b6419a9bb0f296 depends: - - max-core ==25.1.0.dev2024122105 release + - max-core ==25.1.0.dev2024122305 release - python 3.12.* - fastapi - httpx @@ -7766,18 +7763,18 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 122928729 - timestamp: 1734758213305 + size: 122979283 + timestamp: 1734931102532 - kind: conda name: max-python - version: 25.1.0.dev2024122105 + version: 25.1.0.dev2024122305 build: 3.12release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024122105-3.12release.conda - sha256: 9520d2d8b908a48897a52c7f27f2a73d6f747a340333e98100cfb12547623aef - md5: b09a49c3d8bc27360c4e997609eb7149 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024122305-3.12release.conda + sha256: fbc51b6575086874eb8267e1e16519405815e6f183f17fc27f1d23b076ceae0c + md5: c5694c94bb62c6d1af10fbc770e0afb9 depends: - - max-core ==25.1.0.dev2024122105 release + - max-core ==25.1.0.dev2024122305 release - python 3.12.* - fastapi - httpx @@ -7800,18 +7797,18 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 126633261 - timestamp: 1734758299202 + size: 126649049 + timestamp: 1734931092590 - kind: conda name: max-python - version: 25.1.0.dev2024122105 + version: 25.1.0.dev2024122305 build: 3.12release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024122105-3.12release.conda - sha256: 9888cc5976df9db0a45b374269ae02686d458438ce0fe906f94faabf626ee02b - md5: 3bf68dd30a73b233d47a739c07a47673 + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024122305-3.12release.conda + sha256: 32818ac0ad2ccd208b140d76539ee3e5aad9c4ba04330a3a0047e8f1c62e6396 + md5: 3672eac3366d9fe227ab90f978c0b647 depends: - - max-core ==25.1.0.dev2024122105 release + - max-core ==25.1.0.dev2024122305 release - python 3.12.* - fastapi - httpx @@ -7834,17 +7831,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 113518449 - timestamp: 1734807721659 + size: 113549070 + timestamp: 1734931396864 - kind: conda name: mblack - version: 25.1.0.dev2024122105 + version: 25.1.0.dev2024122305 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122105-release.conda - sha256: baed1b93405745ade9759deffb26dc7ca1ba26ae33aa0c77a42527327d8b6825 - md5: eea3c5abc46eae804b254ef8b6fba00e + url: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122305-release.conda + sha256: 0798bcfdd85c6801d2295e8b661df05291873483a58db0d8ee000b920ccb24ae + md5: 7d0b409716c4a607313c466510583eab depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -7854,8 +7851,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130807 - timestamp: 1734758299199 + size: 130803 + timestamp: 1734931092586 - kind: conda name: mdurl version: 0.1.2 @@ -7874,21 +7871,21 @@ packages: timestamp: 1733255681319 - kind: conda name: mojo-jupyter - version: 25.1.0.dev2024122105 + version: 25.1.0.dev2024122305 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122105-release.conda - sha256: da4de3db554f0079a53da970d790520c31d94b7c78b1ccb9561cdf1eff940c03 - md5: 64ca82739f0503be3407f3b94406734e + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122305-release.conda + sha256: b192e6b96f2445f9347261a5d8778ef6656e3ebbc93a7ccdb0af311620ff0d55 + md5: 22ed016d14e656600acd83326d153da9 depends: - - max-core ==25.1.0.dev2024122105 release + - max-core ==25.1.0.dev2024122305 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22933 - timestamp: 1734758299200 + size: 22934 + timestamp: 1734931092588 - kind: conda name: mpg123 version: 1.32.9 @@ -10606,22 +10603,20 @@ packages: timestamp: 1733244175724 - kind: conda name: sse-starlette - version: 2.1.3 + version: 2.2.0 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.1.3-pyhd8ed1ab_0.conda - sha256: 6d671a66333410ec7e5e7858a252565a9001366726d1fe3c3a506d7156169085 - md5: 3918255c942c242ed5599e10329e8d0e + url: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.2.0-pyhd8ed1ab_0.conda + sha256: 0c1d5ae5493d0ad7a5d8906230e3e0fb4ecaf0f4fabf57377200dd640e1b6f6a + md5: b0d012dd070ade4c4a7c395104caecc1 depends: - - anyio - - python >=3.8 - - starlette - - uvicorn + - anyio >=4.7.0 + - python >=3.9 + - starlette >=0.41.3 license: BSD-3-Clause - license_family: BSD - size: 14712 - timestamp: 1722520112550 + size: 15307 + timestamp: 1734870191367 - kind: conda name: starlette version: 0.41.3 @@ -11004,14 +10999,13 @@ packages: timestamp: 1728047496079 - kind: conda name: urllib3 - version: 2.2.3 - build: pyhd8ed1ab_1 - build_number: 1 + version: 2.3.0 + build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_1.conda - sha256: 416e30a1c3262275f01a3e22e783118d9e9d2872a739a9ed860d06fa9c7593d5 - md5: 4a2d8ef7c37b8808c5b9b750501fffce + url: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda + sha256: 114919ffa80c328127dab9c8e7a38f9d563c617691fb81fccb11c1e86763727e + md5: 32674f8dbfb7b26410ed580dd3c10a29 depends: - brotli-python >=1.0.9 - h2 >=4,<5 @@ -11020,8 +11014,8 @@ packages: - zstandard >=0.18.0 license: MIT license_family: MIT - size: 98077 - timestamp: 1733206968917 + size: 100102 + timestamp: 1734859520452 - kind: conda name: uvicorn version: 0.34.0 diff --git a/examples/magic.lock b/examples/magic.lock index e9764d9d99..e988998943 100644 --- a/examples/magic.lock +++ b/examples/magic.lock @@ -40,7 +40,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.12.14-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py311hf29c0ef_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhd8ed1ab_1.conda @@ -68,7 +68,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 @@ -131,12 +131,12 @@ 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-25.1.0.dev2024122105-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024122105-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024122105-3.11release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122305-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024122305-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024122305-3.11release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122305-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-25.1.0.dev2024122105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122305-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 @@ -193,7 +193,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-h8bd8927_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.1.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.21.0-py311h182c674_0.conda @@ -207,7 +207,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.34.0-pyh31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.34.0-h31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/uvloop-0.21.0-py311h9ecbd09_1.conda @@ -257,7 +257,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.12.14-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cffi-1.17.1-py311h14e8bb7_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhd8ed1ab_1.conda @@ -286,7 +286,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/keyutils-1.6.1-h4e544f5_0.tar.bz2 @@ -349,12 +349,12 @@ 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-25.1.0.dev2024122105-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024122105-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024122105-3.11release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122305-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024122305-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024122305-3.11release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122305-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-25.1.0.dev2024122105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122305-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 @@ -411,7 +411,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-hd4fb6f5_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.1.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.21.0-py311h5e37e04_0.conda @@ -425,7 +425,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.34.0-pyh31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.34.0-h31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/uvloop-0.21.0-py311ha879c10_1.conda @@ -474,7 +474,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.12.14-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.1-py311h3a79f62_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhd8ed1ab_1.conda @@ -503,7 +503,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda @@ -558,12 +558,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-25.1.0.dev2024122105-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024122105-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024122105-3.11release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122305-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024122305-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024122305-3.11release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122305-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-25.1.0.dev2024122105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122305-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 @@ -619,7 +619,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-h98b9ce2_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.1.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.21.0-py311h82b0fb8_0.conda @@ -633,7 +633,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.34.0-pyh31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.34.0-h31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/uvloop-0.21.0-py311hae2e1ce_1.conda @@ -2155,21 +2155,20 @@ packages: timestamp: 1733218182393 - kind: conda name: click - version: 8.1.7 - build: unix_pyh707e725_1 - build_number: 1 + version: 8.1.8 + build: pyh707e725_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_1.conda - sha256: 1cd5fc6ccdd5141378e51252a7a3810b07fd5a7e6934a5b4a7eccba66566224b - md5: cb8e52f28f5e592598190c562e7b5bf1 + url: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda + sha256: c920d23cd1fcf565031c679adb62d848af60d6fbb0edc2d50ba475cea4f0d8ab + md5: f22f4d4970e09d68a10b922cbb0408d3 depends: - __unix - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 84513 - timestamp: 1733221925078 + size: 84705 + timestamp: 1734858922844 - kind: conda name: colorama version: 0.4.6 @@ -2849,21 +2848,19 @@ packages: timestamp: 1733223207185 - kind: conda name: jinja2 - version: 3.1.4 - build: pyhd8ed1ab_1 - build_number: 1 + version: 3.1.5 + build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_1.conda - sha256: 85a7169c078b8065bd9d121b0e7b99c8b88c42a411314b6ae5fcd81c48c4710a - md5: 08cce3151bde4ecad7885bd9fb647532 + url: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.5-pyhd8ed1ab_0.conda + sha256: 98977694b9ecaa3218662f843425f39501f81973c450f995eec68f1803ed71c3 + md5: 2752a6ed44105bfb18c9bef1177d9dcd depends: - markupsafe >=2.0 - python >=3.9 license: BSD-3-Clause - license_family: BSD - size: 110963 - timestamp: 1733217424408 + size: 112561 + timestamp: 1734824044952 - kind: conda name: jupyter_client version: 8.6.3 @@ -5895,76 +5892,76 @@ packages: timestamp: 1733220925299 - kind: conda name: max - version: 25.1.0.dev2024122105 + version: 25.1.0.dev2024122305 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122105-release.conda - sha256: 1e0513f880a8177c497d6834629f07b87081c1330ea744dafc95fe46be8027a0 - md5: f4c30ea26051f5bbf5000a3adec295e7 - depends: - - max-core ==25.1.0.dev2024122105 release - - max-python >=25.1.0.dev2024122105,<26.0a0 - - mojo-jupyter ==25.1.0.dev2024122105 release - - mblack ==25.1.0.dev2024122105 release + url: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122305-release.conda + sha256: 3d41962e708b802bdb9bed0477ed87c09220db8f79c69c7f89100446ab47379b + md5: 71fda8b443ffe33ad9604d490b69b137 + depends: + - max-core ==25.1.0.dev2024122305 release + - max-python >=25.1.0.dev2024122305,<26.0a0 + - mojo-jupyter ==25.1.0.dev2024122305 release + - mblack ==25.1.0.dev2024122305 release license: LicenseRef-Modular-Proprietary - size: 9918 - timestamp: 1734758299194 + size: 9914 + timestamp: 1734931092581 - kind: conda name: max-core - version: 25.1.0.dev2024122105 + version: 25.1.0.dev2024122305 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024122105-release.conda - sha256: 032159ddcf04826995c272caac82a2ae428dea443f7f2c6f3b382fc0efe0aa8a - md5: fb9e0c204a52897ac821ca65725fbbca + url: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024122305-release.conda + sha256: 1032bb0ae02634332d69429dd7e0622f54a94338248c2225743b18d92697f160 + md5: ee626ed4feac127b6d68433b1c7650ad depends: - - mblack ==25.1.0.dev2024122105 release + - mblack ==25.1.0.dev2024122305 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 245838806 - timestamp: 1734758213295 + size: 245865434 + timestamp: 1734931102523 - kind: conda name: max-core - version: 25.1.0.dev2024122105 + version: 25.1.0.dev2024122305 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024122105-release.conda - sha256: d73be9f89391173a0a3c9b7d3c362733f8bf9d23b28aac0013992d65576bef3e - md5: cd364e29f1586ab5922873e2f7ba0e45 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024122305-release.conda + sha256: a277abac670d966eccb7d4b0804eab694aa3a0ae3f8d3be0fab6d813f56c77d8 + md5: 59e964fe846e294029da392482e3f82c depends: - - mblack ==25.1.0.dev2024122105 release + - mblack ==25.1.0.dev2024122305 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 249745867 - timestamp: 1734758299192 + size: 249729693 + timestamp: 1734931092579 - kind: conda name: max-core - version: 25.1.0.dev2024122105 + version: 25.1.0.dev2024122305 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024122105-release.conda - sha256: 630d1501ad7e70694bf4a131a90363ea44dfc5cebc46ded681b2535ed7377e76 - md5: c8e19c79e0049db94a0e287dd725eb96 + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024122305-release.conda + sha256: f72340995c59c3a148c9378935363370936c734431d88bfd0db11c4461406a51 + md5: a5ac18a65291496df2d96bb745237a02 depends: - - mblack ==25.1.0.dev2024122105 release + - mblack ==25.1.0.dev2024122305 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 214335752 - timestamp: 1734807721655 + size: 214359730 + timestamp: 1734931396861 - kind: conda name: max-python - version: 25.1.0.dev2024122105 + version: 25.1.0.dev2024122305 build: 3.11release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024122105-3.11release.conda - sha256: 564d3407ba8458bbc9ff6059a1efb7eafac737a5c38910835968b2372c6e9373 - md5: 81f905c2afa941d0d49dff40c1b3562a + url: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024122305-3.11release.conda + sha256: 010e511da8cb580876a61a8100235c08ba8a881b93189189c091745ab9bc8748 + md5: 1d02d39e8d74bf821874635bac42d65e depends: - - max-core ==25.1.0.dev2024122105 release + - max-core ==25.1.0.dev2024122305 release - python 3.11.* - fastapi - httpx @@ -5987,18 +5984,18 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 122979589 - timestamp: 1734758213303 + size: 122987076 + timestamp: 1734931102529 - kind: conda name: max-python - version: 25.1.0.dev2024122105 + version: 25.1.0.dev2024122305 build: 3.11release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024122105-3.11release.conda - sha256: b17dbc0de6f9374dd2806c3d7e547b39447e4d3115e4830f0e9c513a451c4031 - md5: 0a391501138dcc904d0073a3bbfcb942 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024122305-3.11release.conda + sha256: 73404340c50dc2f127ebaf13721c68516f8e4059f974cfd384caf4453a53c59e + md5: cbac0dda2778c0484b2f7784b14644f3 depends: - - max-core ==25.1.0.dev2024122105 release + - max-core ==25.1.0.dev2024122305 release - python 3.11.* - fastapi - httpx @@ -6021,18 +6018,18 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 126648274 - timestamp: 1734758299199 + size: 126658342 + timestamp: 1734931092587 - kind: conda name: max-python - version: 25.1.0.dev2024122105 + version: 25.1.0.dev2024122305 build: 3.11release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024122105-3.11release.conda - sha256: a5a6e01fd47c9eb13921be735ceb3055766429aea3c310cb88e82475445d295a - md5: 3013c42a5c98ed73a14c4e8e9525451d + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024122305-3.11release.conda + sha256: 0cc6a4fad4a5b32928b3380c74d0d5a3ad3e8221d6e8c06ec172ee8b78233e53 + md5: f83f5b6dd2a5b0ea13dc5c1d4e627874 depends: - - max-core ==25.1.0.dev2024122105 release + - max-core ==25.1.0.dev2024122305 release - python 3.11.* - fastapi - httpx @@ -6055,17 +6052,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 113572368 - timestamp: 1734807721658 + size: 113606813 + timestamp: 1734931396863 - kind: conda name: mblack - version: 25.1.0.dev2024122105 + version: 25.1.0.dev2024122305 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122105-release.conda - sha256: baed1b93405745ade9759deffb26dc7ca1ba26ae33aa0c77a42527327d8b6825 - md5: eea3c5abc46eae804b254ef8b6fba00e + url: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122305-release.conda + sha256: 0798bcfdd85c6801d2295e8b661df05291873483a58db0d8ee000b920ccb24ae + md5: 7d0b409716c4a607313c466510583eab depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -6075,8 +6072,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130807 - timestamp: 1734758299199 + size: 130803 + timestamp: 1734931092586 - kind: conda name: mdurl version: 0.1.2 @@ -6095,21 +6092,21 @@ packages: timestamp: 1733255681319 - kind: conda name: mojo-jupyter - version: 25.1.0.dev2024122105 + version: 25.1.0.dev2024122305 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122105-release.conda - sha256: da4de3db554f0079a53da970d790520c31d94b7c78b1ccb9561cdf1eff940c03 - md5: 64ca82739f0503be3407f3b94406734e + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122305-release.conda + sha256: b192e6b96f2445f9347261a5d8778ef6656e3ebbc93a7ccdb0af311620ff0d55 + md5: 22ed016d14e656600acd83326d153da9 depends: - - max-core ==25.1.0.dev2024122105 release + - max-core ==25.1.0.dev2024122305 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22933 - timestamp: 1734758299200 + size: 22934 + timestamp: 1734931092588 - kind: conda name: multidict version: 6.1.0 @@ -8126,22 +8123,20 @@ packages: timestamp: 1733244175724 - kind: conda name: sse-starlette - version: 2.1.3 + version: 2.2.0 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.1.3-pyhd8ed1ab_0.conda - sha256: 6d671a66333410ec7e5e7858a252565a9001366726d1fe3c3a506d7156169085 - md5: 3918255c942c242ed5599e10329e8d0e + url: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.2.0-pyhd8ed1ab_0.conda + sha256: 0c1d5ae5493d0ad7a5d8906230e3e0fb4ecaf0f4fabf57377200dd640e1b6f6a + md5: b0d012dd070ade4c4a7c395104caecc1 depends: - - anyio - - python >=3.8 - - starlette - - uvicorn + - anyio >=4.7.0 + - python >=3.9 + - starlette >=0.41.3 license: BSD-3-Clause - license_family: BSD - size: 14712 - timestamp: 1722520112550 + size: 15307 + timestamp: 1734870191367 - kind: conda name: starlette version: 0.41.3 @@ -8478,14 +8473,13 @@ packages: timestamp: 1728047496079 - kind: conda name: urllib3 - version: 2.2.3 - build: pyhd8ed1ab_1 - build_number: 1 + version: 2.3.0 + build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_1.conda - sha256: 416e30a1c3262275f01a3e22e783118d9e9d2872a739a9ed860d06fa9c7593d5 - md5: 4a2d8ef7c37b8808c5b9b750501fffce + url: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda + sha256: 114919ffa80c328127dab9c8e7a38f9d563c617691fb81fccb11c1e86763727e + md5: 32674f8dbfb7b26410ed580dd3c10a29 depends: - brotli-python >=1.0.9 - h2 >=4,<5 @@ -8494,8 +8488,8 @@ packages: - zstandard >=0.18.0 license: MIT license_family: MIT - size: 98077 - timestamp: 1733206968917 + size: 100102 + timestamp: 1734859520452 - kind: conda name: uvicorn version: 0.34.0 diff --git a/examples/notebooks/magic.lock b/examples/notebooks/magic.lock index e4dac70f88..8d7102edef 100644 --- a/examples/notebooks/magic.lock +++ b/examples/notebooks/magic.lock @@ -50,7 +50,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.12.14-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py312h06ac9bb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda @@ -90,7 +90,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-8.31.0-pyh707e725_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.10.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/jsonpointer-3.0.0-py312h7900ff3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_1.conda @@ -166,13 +166,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/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-25.1.0.dev2024122105-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024122105-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024122105-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122305-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024122305-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024122305-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122305-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-25.1.0.dev2024122105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122305-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 @@ -253,7 +253,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-h8bd8927_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.5-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.1.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh0d859eb_0.conda @@ -274,7 +274,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.34.0-pyh31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.34.0-h31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/uvloop-0.21.0-py312h66e93f0_1.conda @@ -339,7 +339,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.12.14-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cffi-1.17.1-py312hac81daf_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda @@ -380,7 +380,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-8.31.0-pyh707e725_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.10.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/jsonpointer-3.0.0-py312h996f985_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_1.conda @@ -456,13 +456,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/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-25.1.0.dev2024122105-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024122105-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024122105-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122305-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024122305-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024122305-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122305-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-25.1.0.dev2024122105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122305-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 @@ -543,7 +543,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-hd4fb6f5_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.5-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.1.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh0d859eb_0.conda @@ -564,7 +564,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.34.0-pyh31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.34.0-h31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/uvloop-0.21.0-py312hb2c0f52_1.conda @@ -629,7 +629,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.12.14-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.1-py312h0fad829_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda @@ -670,7 +670,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-8.31.0-pyh707e725_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.10.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/jsonpointer-3.0.0-py312h81bd7bf_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_1.conda @@ -738,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-25.1.0.dev2024122105-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024122105-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024122105-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122305-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024122305-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024122305-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122305-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-25.1.0.dev2024122105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122305-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 @@ -826,7 +826,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-h98b9ce2_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.5-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.1.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh31c8845_0.conda @@ -847,7 +847,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.34.0-pyh31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.34.0-h31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/uvloop-0.21.0-py312h0bf5046_1.conda @@ -2603,21 +2603,20 @@ packages: timestamp: 1733218182393 - kind: conda name: click - version: 8.1.7 - build: unix_pyh707e725_1 - build_number: 1 + version: 8.1.8 + build: pyh707e725_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_1.conda - sha256: 1cd5fc6ccdd5141378e51252a7a3810b07fd5a7e6934a5b4a7eccba66566224b - md5: cb8e52f28f5e592598190c562e7b5bf1 + url: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda + sha256: c920d23cd1fcf565031c679adb62d848af60d6fbb0edc2d50ba475cea4f0d8ab + md5: f22f4d4970e09d68a10b922cbb0408d3 depends: - __unix - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 84513 - timestamp: 1733221925078 + size: 84705 + timestamp: 1734858922844 - kind: conda name: colorama version: 0.4.6 @@ -3584,21 +3583,19 @@ packages: timestamp: 1733300981994 - kind: conda name: jinja2 - version: 3.1.4 - build: pyhd8ed1ab_1 - build_number: 1 + version: 3.1.5 + build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_1.conda - sha256: 85a7169c078b8065bd9d121b0e7b99c8b88c42a411314b6ae5fcd81c48c4710a - md5: 08cce3151bde4ecad7885bd9fb647532 + url: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.5-pyhd8ed1ab_0.conda + sha256: 98977694b9ecaa3218662f843425f39501f81973c450f995eec68f1803ed71c3 + md5: 2752a6ed44105bfb18c9bef1177d9dcd depends: - markupsafe >=2.0 - python >=3.9 license: BSD-3-Clause - license_family: BSD - size: 110963 - timestamp: 1733217424408 + size: 112561 + timestamp: 1734824044952 - kind: conda name: json5 version: 0.10.0 @@ -6942,76 +6939,76 @@ packages: timestamp: 1733417051523 - kind: conda name: max - version: 25.1.0.dev2024122105 + version: 25.1.0.dev2024122305 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122105-release.conda - sha256: 1e0513f880a8177c497d6834629f07b87081c1330ea744dafc95fe46be8027a0 - md5: f4c30ea26051f5bbf5000a3adec295e7 + url: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122305-release.conda + sha256: 3d41962e708b802bdb9bed0477ed87c09220db8f79c69c7f89100446ab47379b + md5: 71fda8b443ffe33ad9604d490b69b137 depends: - - max-core ==25.1.0.dev2024122105 release - - max-python >=25.1.0.dev2024122105,<26.0a0 - - mojo-jupyter ==25.1.0.dev2024122105 release - - mblack ==25.1.0.dev2024122105 release + - max-core ==25.1.0.dev2024122305 release + - max-python >=25.1.0.dev2024122305,<26.0a0 + - mojo-jupyter ==25.1.0.dev2024122305 release + - mblack ==25.1.0.dev2024122305 release license: LicenseRef-Modular-Proprietary - size: 9918 - timestamp: 1734758299194 + size: 9914 + timestamp: 1734931092581 - kind: conda name: max-core - version: 25.1.0.dev2024122105 + version: 25.1.0.dev2024122305 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024122105-release.conda - sha256: 032159ddcf04826995c272caac82a2ae428dea443f7f2c6f3b382fc0efe0aa8a - md5: fb9e0c204a52897ac821ca65725fbbca + url: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024122305-release.conda + sha256: 1032bb0ae02634332d69429dd7e0622f54a94338248c2225743b18d92697f160 + md5: ee626ed4feac127b6d68433b1c7650ad depends: - - mblack ==25.1.0.dev2024122105 release + - mblack ==25.1.0.dev2024122305 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 245838806 - timestamp: 1734758213295 + size: 245865434 + timestamp: 1734931102523 - kind: conda name: max-core - version: 25.1.0.dev2024122105 + version: 25.1.0.dev2024122305 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024122105-release.conda - sha256: d73be9f89391173a0a3c9b7d3c362733f8bf9d23b28aac0013992d65576bef3e - md5: cd364e29f1586ab5922873e2f7ba0e45 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024122305-release.conda + sha256: a277abac670d966eccb7d4b0804eab694aa3a0ae3f8d3be0fab6d813f56c77d8 + md5: 59e964fe846e294029da392482e3f82c depends: - - mblack ==25.1.0.dev2024122105 release + - mblack ==25.1.0.dev2024122305 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 249745867 - timestamp: 1734758299192 + size: 249729693 + timestamp: 1734931092579 - kind: conda name: max-core - version: 25.1.0.dev2024122105 + version: 25.1.0.dev2024122305 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024122105-release.conda - sha256: 630d1501ad7e70694bf4a131a90363ea44dfc5cebc46ded681b2535ed7377e76 - md5: c8e19c79e0049db94a0e287dd725eb96 + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024122305-release.conda + sha256: f72340995c59c3a148c9378935363370936c734431d88bfd0db11c4461406a51 + md5: a5ac18a65291496df2d96bb745237a02 depends: - - mblack ==25.1.0.dev2024122105 release + - mblack ==25.1.0.dev2024122305 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 214335752 - timestamp: 1734807721655 + size: 214359730 + timestamp: 1734931396861 - kind: conda name: max-python - version: 25.1.0.dev2024122105 + version: 25.1.0.dev2024122305 build: 3.12release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024122105-3.12release.conda - sha256: ea496197a0d531c7fd9b6f61879dff9d780e7faa9ce9223a9213ac27cb6f45d3 - md5: 06ccf6c3c46efd01d28ff4d192ff44d2 + url: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024122305-3.12release.conda + sha256: 2b6cbf710cb2b5411f62e0ccbb0e5973f7c8913eb8122dfcb74c2d41087ed4b3 + md5: d3a108c46dd79a0ae7b6419a9bb0f296 depends: - - max-core ==25.1.0.dev2024122105 release + - max-core ==25.1.0.dev2024122305 release - python 3.12.* - fastapi - httpx @@ -7034,18 +7031,18 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 122928729 - timestamp: 1734758213305 + size: 122979283 + timestamp: 1734931102532 - kind: conda name: max-python - version: 25.1.0.dev2024122105 + version: 25.1.0.dev2024122305 build: 3.12release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024122105-3.12release.conda - sha256: 9520d2d8b908a48897a52c7f27f2a73d6f747a340333e98100cfb12547623aef - md5: b09a49c3d8bc27360c4e997609eb7149 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024122305-3.12release.conda + sha256: fbc51b6575086874eb8267e1e16519405815e6f183f17fc27f1d23b076ceae0c + md5: c5694c94bb62c6d1af10fbc770e0afb9 depends: - - max-core ==25.1.0.dev2024122105 release + - max-core ==25.1.0.dev2024122305 release - python 3.12.* - fastapi - httpx @@ -7068,18 +7065,18 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 126633261 - timestamp: 1734758299202 + size: 126649049 + timestamp: 1734931092590 - kind: conda name: max-python - version: 25.1.0.dev2024122105 + version: 25.1.0.dev2024122305 build: 3.12release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024122105-3.12release.conda - sha256: 9888cc5976df9db0a45b374269ae02686d458438ce0fe906f94faabf626ee02b - md5: 3bf68dd30a73b233d47a739c07a47673 + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024122305-3.12release.conda + sha256: 32818ac0ad2ccd208b140d76539ee3e5aad9c4ba04330a3a0047e8f1c62e6396 + md5: 3672eac3366d9fe227ab90f978c0b647 depends: - - max-core ==25.1.0.dev2024122105 release + - max-core ==25.1.0.dev2024122305 release - python 3.12.* - fastapi - httpx @@ -7102,17 +7099,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 113518449 - timestamp: 1734807721659 + size: 113549070 + timestamp: 1734931396864 - kind: conda name: mblack - version: 25.1.0.dev2024122105 + version: 25.1.0.dev2024122305 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122105-release.conda - sha256: baed1b93405745ade9759deffb26dc7ca1ba26ae33aa0c77a42527327d8b6825 - md5: eea3c5abc46eae804b254ef8b6fba00e + url: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122305-release.conda + sha256: 0798bcfdd85c6801d2295e8b661df05291873483a58db0d8ee000b920ccb24ae + md5: 7d0b409716c4a607313c466510583eab depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -7122,8 +7119,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130807 - timestamp: 1734758299199 + size: 130803 + timestamp: 1734931092586 - kind: conda name: mdurl version: 0.1.2 @@ -7158,21 +7155,21 @@ packages: timestamp: 1733258822603 - kind: conda name: mojo-jupyter - version: 25.1.0.dev2024122105 + version: 25.1.0.dev2024122305 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122105-release.conda - sha256: da4de3db554f0079a53da970d790520c31d94b7c78b1ccb9561cdf1eff940c03 - md5: 64ca82739f0503be3407f3b94406734e + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122305-release.conda + sha256: b192e6b96f2445f9347261a5d8778ef6656e3ebbc93a7ccdb0af311620ff0d55 + md5: 22ed016d14e656600acd83326d153da9 depends: - - max-core ==25.1.0.dev2024122105 release + - max-core ==25.1.0.dev2024122305 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22933 - timestamp: 1734758299200 + size: 22934 + timestamp: 1734931092588 - kind: conda name: multidict version: 6.1.0 @@ -9733,22 +9730,20 @@ packages: timestamp: 1693929424267 - kind: conda name: sse-starlette - version: 2.1.3 + version: 2.2.0 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.1.3-pyhd8ed1ab_0.conda - sha256: 6d671a66333410ec7e5e7858a252565a9001366726d1fe3c3a506d7156169085 - md5: 3918255c942c242ed5599e10329e8d0e + url: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.2.0-pyhd8ed1ab_0.conda + sha256: 0c1d5ae5493d0ad7a5d8906230e3e0fb4ecaf0f4fabf57377200dd640e1b6f6a + md5: b0d012dd070ade4c4a7c395104caecc1 depends: - - anyio - - python >=3.8 - - starlette - - uvicorn + - anyio >=4.7.0 + - python >=3.9 + - starlette >=0.41.3 license: BSD-3-Clause - license_family: BSD - size: 14712 - timestamp: 1722520112550 + size: 15307 + timestamp: 1734870191367 - kind: conda name: stack_data version: 0.6.3 @@ -10218,14 +10213,13 @@ packages: timestamp: 1733323714454 - kind: conda name: urllib3 - version: 2.2.3 - build: pyhd8ed1ab_1 - build_number: 1 + version: 2.3.0 + build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_1.conda - sha256: 416e30a1c3262275f01a3e22e783118d9e9d2872a739a9ed860d06fa9c7593d5 - md5: 4a2d8ef7c37b8808c5b9b750501fffce + url: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda + sha256: 114919ffa80c328127dab9c8e7a38f9d563c617691fb81fccb11c1e86763727e + md5: 32674f8dbfb7b26410ed580dd3c10a29 depends: - brotli-python >=1.0.9 - h2 >=4,<5 @@ -10234,8 +10228,8 @@ packages: - zstandard >=0.18.0 license: MIT license_family: MIT - size: 98077 - timestamp: 1733206968917 + size: 100102 + timestamp: 1734859520452 - kind: conda name: uvicorn version: 0.34.0 diff --git a/examples/operators/magic.lock b/examples/operators/magic.lock index eb595c8b1b..fb164fbdee 100644 --- a/examples/operators/magic.lock +++ b/examples/operators/magic.lock @@ -40,7 +40,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.12.14-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py312h06ac9bb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhd8ed1ab_1.conda @@ -68,7 +68,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 @@ -131,12 +131,12 @@ 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-25.1.0.dev2024122105-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024122105-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024122105-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122305-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024122305-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024122305-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122305-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-25.1.0.dev2024122105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122305-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 @@ -193,7 +193,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-h8bd8927_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.1.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.21.0-py312h8360d73_0.conda @@ -207,7 +207,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.34.0-pyh31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.34.0-h31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/uvloop-0.21.0-py312h66e93f0_1.conda @@ -257,7 +257,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.12.14-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cffi-1.17.1-py312hac81daf_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhd8ed1ab_1.conda @@ -286,7 +286,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/keyutils-1.6.1-h4e544f5_0.tar.bz2 @@ -349,12 +349,12 @@ 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-25.1.0.dev2024122105-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024122105-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024122105-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122305-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024122305-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024122305-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122305-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-25.1.0.dev2024122105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122305-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 @@ -411,7 +411,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-hd4fb6f5_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.1.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.21.0-py312ha0d6ea1_0.conda @@ -425,7 +425,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.34.0-pyh31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.34.0-h31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/uvloop-0.21.0-py312hb2c0f52_1.conda @@ -474,7 +474,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.12.14-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.1-py312h0fad829_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhd8ed1ab_1.conda @@ -503,7 +503,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda @@ -558,12 +558,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-25.1.0.dev2024122105-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024122105-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024122105-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122305-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024122305-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024122305-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122305-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-25.1.0.dev2024122105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122305-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 @@ -619,7 +619,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-h98b9ce2_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.1.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.21.0-py312hf3e4074_0.conda @@ -633,7 +633,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.34.0-pyh31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.34.0-h31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/uvloop-0.21.0-py312h0bf5046_1.conda @@ -2155,21 +2155,20 @@ packages: timestamp: 1733218182393 - kind: conda name: click - version: 8.1.7 - build: unix_pyh707e725_1 - build_number: 1 + version: 8.1.8 + build: pyh707e725_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_1.conda - sha256: 1cd5fc6ccdd5141378e51252a7a3810b07fd5a7e6934a5b4a7eccba66566224b - md5: cb8e52f28f5e592598190c562e7b5bf1 + url: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda + sha256: c920d23cd1fcf565031c679adb62d848af60d6fbb0edc2d50ba475cea4f0d8ab + md5: f22f4d4970e09d68a10b922cbb0408d3 depends: - __unix - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 84513 - timestamp: 1733221925078 + size: 84705 + timestamp: 1734858922844 - kind: conda name: colorama version: 0.4.6 @@ -2849,21 +2848,19 @@ packages: timestamp: 1733223207185 - kind: conda name: jinja2 - version: 3.1.4 - build: pyhd8ed1ab_1 - build_number: 1 + version: 3.1.5 + build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_1.conda - sha256: 85a7169c078b8065bd9d121b0e7b99c8b88c42a411314b6ae5fcd81c48c4710a - md5: 08cce3151bde4ecad7885bd9fb647532 + url: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.5-pyhd8ed1ab_0.conda + sha256: 98977694b9ecaa3218662f843425f39501f81973c450f995eec68f1803ed71c3 + md5: 2752a6ed44105bfb18c9bef1177d9dcd depends: - markupsafe >=2.0 - python >=3.9 license: BSD-3-Clause - license_family: BSD - size: 110963 - timestamp: 1733217424408 + size: 112561 + timestamp: 1734824044952 - kind: conda name: jupyter_client version: 8.6.3 @@ -5895,76 +5892,76 @@ packages: timestamp: 1733219945697 - kind: conda name: max - version: 25.1.0.dev2024122105 + version: 25.1.0.dev2024122305 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122105-release.conda - sha256: 1e0513f880a8177c497d6834629f07b87081c1330ea744dafc95fe46be8027a0 - md5: f4c30ea26051f5bbf5000a3adec295e7 - depends: - - max-core ==25.1.0.dev2024122105 release - - max-python >=25.1.0.dev2024122105,<26.0a0 - - mojo-jupyter ==25.1.0.dev2024122105 release - - mblack ==25.1.0.dev2024122105 release + url: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122305-release.conda + sha256: 3d41962e708b802bdb9bed0477ed87c09220db8f79c69c7f89100446ab47379b + md5: 71fda8b443ffe33ad9604d490b69b137 + depends: + - max-core ==25.1.0.dev2024122305 release + - max-python >=25.1.0.dev2024122305,<26.0a0 + - mojo-jupyter ==25.1.0.dev2024122305 release + - mblack ==25.1.0.dev2024122305 release license: LicenseRef-Modular-Proprietary - size: 9918 - timestamp: 1734758299194 + size: 9914 + timestamp: 1734931092581 - kind: conda name: max-core - version: 25.1.0.dev2024122105 + version: 25.1.0.dev2024122305 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024122105-release.conda - sha256: 032159ddcf04826995c272caac82a2ae428dea443f7f2c6f3b382fc0efe0aa8a - md5: fb9e0c204a52897ac821ca65725fbbca + url: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024122305-release.conda + sha256: 1032bb0ae02634332d69429dd7e0622f54a94338248c2225743b18d92697f160 + md5: ee626ed4feac127b6d68433b1c7650ad depends: - - mblack ==25.1.0.dev2024122105 release + - mblack ==25.1.0.dev2024122305 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 245838806 - timestamp: 1734758213295 + size: 245865434 + timestamp: 1734931102523 - kind: conda name: max-core - version: 25.1.0.dev2024122105 + version: 25.1.0.dev2024122305 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024122105-release.conda - sha256: d73be9f89391173a0a3c9b7d3c362733f8bf9d23b28aac0013992d65576bef3e - md5: cd364e29f1586ab5922873e2f7ba0e45 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024122305-release.conda + sha256: a277abac670d966eccb7d4b0804eab694aa3a0ae3f8d3be0fab6d813f56c77d8 + md5: 59e964fe846e294029da392482e3f82c depends: - - mblack ==25.1.0.dev2024122105 release + - mblack ==25.1.0.dev2024122305 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 249745867 - timestamp: 1734758299192 + size: 249729693 + timestamp: 1734931092579 - kind: conda name: max-core - version: 25.1.0.dev2024122105 + version: 25.1.0.dev2024122305 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024122105-release.conda - sha256: 630d1501ad7e70694bf4a131a90363ea44dfc5cebc46ded681b2535ed7377e76 - md5: c8e19c79e0049db94a0e287dd725eb96 + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024122305-release.conda + sha256: f72340995c59c3a148c9378935363370936c734431d88bfd0db11c4461406a51 + md5: a5ac18a65291496df2d96bb745237a02 depends: - - mblack ==25.1.0.dev2024122105 release + - mblack ==25.1.0.dev2024122305 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 214335752 - timestamp: 1734807721655 + size: 214359730 + timestamp: 1734931396861 - kind: conda name: max-python - version: 25.1.0.dev2024122105 + version: 25.1.0.dev2024122305 build: 3.12release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024122105-3.12release.conda - sha256: ea496197a0d531c7fd9b6f61879dff9d780e7faa9ce9223a9213ac27cb6f45d3 - md5: 06ccf6c3c46efd01d28ff4d192ff44d2 + url: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024122305-3.12release.conda + sha256: 2b6cbf710cb2b5411f62e0ccbb0e5973f7c8913eb8122dfcb74c2d41087ed4b3 + md5: d3a108c46dd79a0ae7b6419a9bb0f296 depends: - - max-core ==25.1.0.dev2024122105 release + - max-core ==25.1.0.dev2024122305 release - python 3.12.* - fastapi - httpx @@ -5987,18 +5984,18 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 122928729 - timestamp: 1734758213305 + size: 122979283 + timestamp: 1734931102532 - kind: conda name: max-python - version: 25.1.0.dev2024122105 + version: 25.1.0.dev2024122305 build: 3.12release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024122105-3.12release.conda - sha256: 9520d2d8b908a48897a52c7f27f2a73d6f747a340333e98100cfb12547623aef - md5: b09a49c3d8bc27360c4e997609eb7149 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024122305-3.12release.conda + sha256: fbc51b6575086874eb8267e1e16519405815e6f183f17fc27f1d23b076ceae0c + md5: c5694c94bb62c6d1af10fbc770e0afb9 depends: - - max-core ==25.1.0.dev2024122105 release + - max-core ==25.1.0.dev2024122305 release - python 3.12.* - fastapi - httpx @@ -6021,18 +6018,18 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 126633261 - timestamp: 1734758299202 + size: 126649049 + timestamp: 1734931092590 - kind: conda name: max-python - version: 25.1.0.dev2024122105 + version: 25.1.0.dev2024122305 build: 3.12release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024122105-3.12release.conda - sha256: 9888cc5976df9db0a45b374269ae02686d458438ce0fe906f94faabf626ee02b - md5: 3bf68dd30a73b233d47a739c07a47673 + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024122305-3.12release.conda + sha256: 32818ac0ad2ccd208b140d76539ee3e5aad9c4ba04330a3a0047e8f1c62e6396 + md5: 3672eac3366d9fe227ab90f978c0b647 depends: - - max-core ==25.1.0.dev2024122105 release + - max-core ==25.1.0.dev2024122305 release - python 3.12.* - fastapi - httpx @@ -6055,17 +6052,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 113518449 - timestamp: 1734807721659 + size: 113549070 + timestamp: 1734931396864 - kind: conda name: mblack - version: 25.1.0.dev2024122105 + version: 25.1.0.dev2024122305 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122105-release.conda - sha256: baed1b93405745ade9759deffb26dc7ca1ba26ae33aa0c77a42527327d8b6825 - md5: eea3c5abc46eae804b254ef8b6fba00e + url: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122305-release.conda + sha256: 0798bcfdd85c6801d2295e8b661df05291873483a58db0d8ee000b920ccb24ae + md5: 7d0b409716c4a607313c466510583eab depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -6075,8 +6072,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130807 - timestamp: 1734758299199 + size: 130803 + timestamp: 1734931092586 - kind: conda name: mdurl version: 0.1.2 @@ -6095,21 +6092,21 @@ packages: timestamp: 1733255681319 - kind: conda name: mojo-jupyter - version: 25.1.0.dev2024122105 + version: 25.1.0.dev2024122305 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122105-release.conda - sha256: da4de3db554f0079a53da970d790520c31d94b7c78b1ccb9561cdf1eff940c03 - md5: 64ca82739f0503be3407f3b94406734e + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122305-release.conda + sha256: b192e6b96f2445f9347261a5d8778ef6656e3ebbc93a7ccdb0af311620ff0d55 + md5: 22ed016d14e656600acd83326d153da9 depends: - - max-core ==25.1.0.dev2024122105 release + - max-core ==25.1.0.dev2024122305 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22933 - timestamp: 1734758299200 + size: 22934 + timestamp: 1734931092588 - kind: conda name: multidict version: 6.1.0 @@ -8126,22 +8123,20 @@ packages: timestamp: 1733244175724 - kind: conda name: sse-starlette - version: 2.1.3 + version: 2.2.0 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.1.3-pyhd8ed1ab_0.conda - sha256: 6d671a66333410ec7e5e7858a252565a9001366726d1fe3c3a506d7156169085 - md5: 3918255c942c242ed5599e10329e8d0e + url: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.2.0-pyhd8ed1ab_0.conda + sha256: 0c1d5ae5493d0ad7a5d8906230e3e0fb4ecaf0f4fabf57377200dd640e1b6f6a + md5: b0d012dd070ade4c4a7c395104caecc1 depends: - - anyio - - python >=3.8 - - starlette - - uvicorn + - anyio >=4.7.0 + - python >=3.9 + - starlette >=0.41.3 license: BSD-3-Clause - license_family: BSD - size: 14712 - timestamp: 1722520112550 + size: 15307 + timestamp: 1734870191367 - kind: conda name: starlette version: 0.41.3 @@ -8478,14 +8473,13 @@ packages: timestamp: 1728047496079 - kind: conda name: urllib3 - version: 2.2.3 - build: pyhd8ed1ab_1 - build_number: 1 + version: 2.3.0 + build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_1.conda - sha256: 416e30a1c3262275f01a3e22e783118d9e9d2872a739a9ed860d06fa9c7593d5 - md5: 4a2d8ef7c37b8808c5b9b750501fffce + url: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda + sha256: 114919ffa80c328127dab9c8e7a38f9d563c617691fb81fccb11c1e86763727e + md5: 32674f8dbfb7b26410ed580dd3c10a29 depends: - brotli-python >=1.0.9 - h2 >=4,<5 @@ -8494,8 +8488,8 @@ packages: - zstandard >=0.18.0 license: MIT license_family: MIT - size: 98077 - timestamp: 1733206968917 + size: 100102 + timestamp: 1734859520452 - kind: conda name: uvicorn version: 0.34.0 diff --git a/magic.lock b/magic.lock index c547700255..64202bb788 100644 --- a/magic.lock +++ b/magic.lock @@ -40,7 +40,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.12.14-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py312h06ac9bb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhd8ed1ab_1.conda @@ -68,7 +68,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 @@ -132,12 +132,12 @@ 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-25.1.0.dev2024122105-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024122105-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024122105-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122305-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024122305-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024122305-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122305-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-25.1.0.dev2024122105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122305-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 @@ -194,7 +194,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-h8bd8927_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.1.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.21.0-py312h8360d73_0.conda @@ -208,7 +208,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.34.0-pyh31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.34.0-h31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/uvloop-0.21.0-py312h66e93f0_1.conda @@ -258,7 +258,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.12.14-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cffi-1.17.1-py312hac81daf_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhd8ed1ab_1.conda @@ -287,7 +287,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/keyutils-1.6.1-h4e544f5_0.tar.bz2 @@ -351,12 +351,12 @@ 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-25.1.0.dev2024122105-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024122105-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024122105-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122305-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024122305-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024122305-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122305-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-25.1.0.dev2024122105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122305-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 @@ -413,7 +413,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-hd4fb6f5_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.1.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.21.0-py312ha0d6ea1_0.conda @@ -427,7 +427,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.34.0-pyh31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.34.0-h31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/uvloop-0.21.0-py312hb2c0f52_1.conda @@ -476,7 +476,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.12.14-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.1-py312h0fad829_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhd8ed1ab_1.conda @@ -505,7 +505,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda @@ -561,12 +561,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-25.1.0.dev2024122105-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024122105-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024122105-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122305-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024122305-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024122305-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122305-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-25.1.0.dev2024122105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122305-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 @@ -622,7 +622,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-h98b9ce2_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.1.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.21.0-py312hf3e4074_0.conda @@ -636,7 +636,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.34.0-pyh31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.34.0-h31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/uvloop-0.21.0-py312h0bf5046_1.conda @@ -2158,21 +2158,20 @@ packages: timestamp: 1733218182393 - kind: conda name: click - version: 8.1.7 - build: unix_pyh707e725_1 - build_number: 1 + version: 8.1.8 + build: pyh707e725_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_1.conda - sha256: 1cd5fc6ccdd5141378e51252a7a3810b07fd5a7e6934a5b4a7eccba66566224b - md5: cb8e52f28f5e592598190c562e7b5bf1 + url: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda + sha256: c920d23cd1fcf565031c679adb62d848af60d6fbb0edc2d50ba475cea4f0d8ab + md5: f22f4d4970e09d68a10b922cbb0408d3 depends: - __unix - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 84513 - timestamp: 1733221925078 + size: 84705 + timestamp: 1734858922844 - kind: conda name: colorama version: 0.4.6 @@ -2852,21 +2851,19 @@ packages: timestamp: 1733223207185 - kind: conda name: jinja2 - version: 3.1.4 - build: pyhd8ed1ab_1 - build_number: 1 + version: 3.1.5 + build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_1.conda - sha256: 85a7169c078b8065bd9d121b0e7b99c8b88c42a411314b6ae5fcd81c48c4710a - md5: 08cce3151bde4ecad7885bd9fb647532 + url: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.5-pyhd8ed1ab_0.conda + sha256: 98977694b9ecaa3218662f843425f39501f81973c450f995eec68f1803ed71c3 + md5: 2752a6ed44105bfb18c9bef1177d9dcd depends: - markupsafe >=2.0 - python >=3.9 license: BSD-3-Clause - license_family: BSD - size: 110963 - timestamp: 1733217424408 + size: 112561 + timestamp: 1734824044952 - kind: conda name: jupyter_client version: 8.6.3 @@ -5913,76 +5910,76 @@ packages: timestamp: 1733219945697 - kind: conda name: max - version: 25.1.0.dev2024122105 + version: 25.1.0.dev2024122305 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122105-release.conda - sha256: 1e0513f880a8177c497d6834629f07b87081c1330ea744dafc95fe46be8027a0 - md5: f4c30ea26051f5bbf5000a3adec295e7 - depends: - - max-core ==25.1.0.dev2024122105 release - - max-python >=25.1.0.dev2024122105,<26.0a0 - - mojo-jupyter ==25.1.0.dev2024122105 release - - mblack ==25.1.0.dev2024122105 release + url: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122305-release.conda + sha256: 3d41962e708b802bdb9bed0477ed87c09220db8f79c69c7f89100446ab47379b + md5: 71fda8b443ffe33ad9604d490b69b137 + depends: + - max-core ==25.1.0.dev2024122305 release + - max-python >=25.1.0.dev2024122305,<26.0a0 + - mojo-jupyter ==25.1.0.dev2024122305 release + - mblack ==25.1.0.dev2024122305 release license: LicenseRef-Modular-Proprietary - size: 9918 - timestamp: 1734758299194 + size: 9914 + timestamp: 1734931092581 - kind: conda name: max-core - version: 25.1.0.dev2024122105 + version: 25.1.0.dev2024122305 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024122105-release.conda - sha256: 032159ddcf04826995c272caac82a2ae428dea443f7f2c6f3b382fc0efe0aa8a - md5: fb9e0c204a52897ac821ca65725fbbca + url: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024122305-release.conda + sha256: 1032bb0ae02634332d69429dd7e0622f54a94338248c2225743b18d92697f160 + md5: ee626ed4feac127b6d68433b1c7650ad depends: - - mblack ==25.1.0.dev2024122105 release + - mblack ==25.1.0.dev2024122305 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 245838806 - timestamp: 1734758213295 + size: 245865434 + timestamp: 1734931102523 - kind: conda name: max-core - version: 25.1.0.dev2024122105 + version: 25.1.0.dev2024122305 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024122105-release.conda - sha256: d73be9f89391173a0a3c9b7d3c362733f8bf9d23b28aac0013992d65576bef3e - md5: cd364e29f1586ab5922873e2f7ba0e45 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024122305-release.conda + sha256: a277abac670d966eccb7d4b0804eab694aa3a0ae3f8d3be0fab6d813f56c77d8 + md5: 59e964fe846e294029da392482e3f82c depends: - - mblack ==25.1.0.dev2024122105 release + - mblack ==25.1.0.dev2024122305 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 249745867 - timestamp: 1734758299192 + size: 249729693 + timestamp: 1734931092579 - kind: conda name: max-core - version: 25.1.0.dev2024122105 + version: 25.1.0.dev2024122305 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024122105-release.conda - sha256: 630d1501ad7e70694bf4a131a90363ea44dfc5cebc46ded681b2535ed7377e76 - md5: c8e19c79e0049db94a0e287dd725eb96 + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024122305-release.conda + sha256: f72340995c59c3a148c9378935363370936c734431d88bfd0db11c4461406a51 + md5: a5ac18a65291496df2d96bb745237a02 depends: - - mblack ==25.1.0.dev2024122105 release + - mblack ==25.1.0.dev2024122305 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 214335752 - timestamp: 1734807721655 + size: 214359730 + timestamp: 1734931396861 - kind: conda name: max-python - version: 25.1.0.dev2024122105 + version: 25.1.0.dev2024122305 build: 3.12release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024122105-3.12release.conda - sha256: ea496197a0d531c7fd9b6f61879dff9d780e7faa9ce9223a9213ac27cb6f45d3 - md5: 06ccf6c3c46efd01d28ff4d192ff44d2 + url: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024122305-3.12release.conda + sha256: 2b6cbf710cb2b5411f62e0ccbb0e5973f7c8913eb8122dfcb74c2d41087ed4b3 + md5: d3a108c46dd79a0ae7b6419a9bb0f296 depends: - - max-core ==25.1.0.dev2024122105 release + - max-core ==25.1.0.dev2024122305 release - python 3.12.* - fastapi - httpx @@ -6005,18 +6002,18 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 122928729 - timestamp: 1734758213305 + size: 122979283 + timestamp: 1734931102532 - kind: conda name: max-python - version: 25.1.0.dev2024122105 + version: 25.1.0.dev2024122305 build: 3.12release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024122105-3.12release.conda - sha256: 9520d2d8b908a48897a52c7f27f2a73d6f747a340333e98100cfb12547623aef - md5: b09a49c3d8bc27360c4e997609eb7149 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024122305-3.12release.conda + sha256: fbc51b6575086874eb8267e1e16519405815e6f183f17fc27f1d23b076ceae0c + md5: c5694c94bb62c6d1af10fbc770e0afb9 depends: - - max-core ==25.1.0.dev2024122105 release + - max-core ==25.1.0.dev2024122305 release - python 3.12.* - fastapi - httpx @@ -6039,18 +6036,18 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 126633261 - timestamp: 1734758299202 + size: 126649049 + timestamp: 1734931092590 - kind: conda name: max-python - version: 25.1.0.dev2024122105 + version: 25.1.0.dev2024122305 build: 3.12release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024122105-3.12release.conda - sha256: 9888cc5976df9db0a45b374269ae02686d458438ce0fe906f94faabf626ee02b - md5: 3bf68dd30a73b233d47a739c07a47673 + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024122305-3.12release.conda + sha256: 32818ac0ad2ccd208b140d76539ee3e5aad9c4ba04330a3a0047e8f1c62e6396 + md5: 3672eac3366d9fe227ab90f978c0b647 depends: - - max-core ==25.1.0.dev2024122105 release + - max-core ==25.1.0.dev2024122305 release - python 3.12.* - fastapi - httpx @@ -6073,17 +6070,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 113518449 - timestamp: 1734807721659 + size: 113549070 + timestamp: 1734931396864 - kind: conda name: mblack - version: 25.1.0.dev2024122105 + version: 25.1.0.dev2024122305 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122105-release.conda - sha256: baed1b93405745ade9759deffb26dc7ca1ba26ae33aa0c77a42527327d8b6825 - md5: eea3c5abc46eae804b254ef8b6fba00e + url: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122305-release.conda + sha256: 0798bcfdd85c6801d2295e8b661df05291873483a58db0d8ee000b920ccb24ae + md5: 7d0b409716c4a607313c466510583eab depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -6093,8 +6090,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130807 - timestamp: 1734758299199 + size: 130803 + timestamp: 1734931092586 - kind: conda name: mdurl version: 0.1.2 @@ -6113,21 +6110,21 @@ packages: timestamp: 1733255681319 - kind: conda name: mojo-jupyter - version: 25.1.0.dev2024122105 + version: 25.1.0.dev2024122305 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122105-release.conda - sha256: da4de3db554f0079a53da970d790520c31d94b7c78b1ccb9561cdf1eff940c03 - md5: 64ca82739f0503be3407f3b94406734e + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122305-release.conda + sha256: b192e6b96f2445f9347261a5d8778ef6656e3ebbc93a7ccdb0af311620ff0d55 + md5: 22ed016d14e656600acd83326d153da9 depends: - - max-core ==25.1.0.dev2024122105 release + - max-core ==25.1.0.dev2024122305 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22933 - timestamp: 1734758299200 + size: 22934 + timestamp: 1734931092588 - kind: conda name: multidict version: 6.1.0 @@ -8144,22 +8141,20 @@ packages: timestamp: 1733244175724 - kind: conda name: sse-starlette - version: 2.1.3 + version: 2.2.0 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.1.3-pyhd8ed1ab_0.conda - sha256: 6d671a66333410ec7e5e7858a252565a9001366726d1fe3c3a506d7156169085 - md5: 3918255c942c242ed5599e10329e8d0e + url: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.2.0-pyhd8ed1ab_0.conda + sha256: 0c1d5ae5493d0ad7a5d8906230e3e0fb4ecaf0f4fabf57377200dd640e1b6f6a + md5: b0d012dd070ade4c4a7c395104caecc1 depends: - - anyio - - python >=3.8 - - starlette - - uvicorn + - anyio >=4.7.0 + - python >=3.9 + - starlette >=0.41.3 license: BSD-3-Clause - license_family: BSD - size: 14712 - timestamp: 1722520112550 + size: 15307 + timestamp: 1734870191367 - kind: conda name: starlette version: 0.41.3 @@ -8496,14 +8491,13 @@ packages: timestamp: 1728047496079 - kind: conda name: urllib3 - version: 2.2.3 - build: pyhd8ed1ab_1 - build_number: 1 + version: 2.3.0 + build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_1.conda - sha256: 416e30a1c3262275f01a3e22e783118d9e9d2872a739a9ed860d06fa9c7593d5 - md5: 4a2d8ef7c37b8808c5b9b750501fffce + url: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda + sha256: 114919ffa80c328127dab9c8e7a38f9d563c617691fb81fccb11c1e86763727e + md5: 32674f8dbfb7b26410ed580dd3c10a29 depends: - brotli-python >=1.0.9 - h2 >=4,<5 @@ -8512,8 +8506,8 @@ packages: - zstandard >=0.18.0 license: MIT license_family: MIT - size: 98077 - timestamp: 1733206968917 + size: 100102 + timestamp: 1734859520452 - kind: conda name: uvicorn version: 0.34.0 From 33a35d26f8fe38cef1035845e463e99e17d4b6ec Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Mon, 23 Dec 2024 19:14:55 +1100 Subject: [PATCH 135/509] [mojo-lang] Substantially rewrite named result slot handling. This aligns register results with normal result processing, among other things, this fixes https://github.com/modularml/mojo/issues/3540 Initializers are still not fully on the same model but will come shortly. MODULAR_ORIG_COMMIT_REV_ID: 0fea2d900644c2ac26cd1937cfe5c9a6b90eb769 --- docs/changelog.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/docs/changelog.md b/docs/changelog.md index df4f5fb50e..9e2bf3509d 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -125,5 +125,8 @@ what we publish. - [Issue #3796](https://github.com/modularml/mojo/issues/3796) - Compiler crash handling for-else statement. +- [Issue #3540](https://github.com/modularml/mojo/issues/3540) - Using named + output slot breaks trait conformance + - The Mojo Language Server doesn't crash anymore on empty **init**.mojo files. [Issue #3826](https://github.com/modularml/mojo/issues/3826). From c5f431fca7d1c558ff1489504ed889f27d0412ae Mon Sep 17 00:00:00 2001 From: abdul dakkak Date: Mon, 23 Dec 2024 04:29:22 -0800 Subject: [PATCH 136/509] [******][GPU] Make MatmulConfig hashable, NFC MODULAR_ORIG_COMMIT_REV_ID: 2cbc9ae5186444b89b34a6fe1d17f31ed3762cf8 --- stdlib/src/builtin/bool.mojo | 12 ++++++++++++ stdlib/src/utils/index.mojo | 15 +++++++++++++++ 2 files changed, 27 insertions(+) diff --git a/stdlib/src/builtin/bool.mojo b/stdlib/src/builtin/bool.mojo index 6c953bb0b5..3b9c3a2569 100644 --- a/stdlib/src/builtin/bool.mojo +++ b/stdlib/src/builtin/bool.mojo @@ -19,6 +19,7 @@ from collections import List, Set from utils._select import _select_register_value from utils._visualizers import lldb_formatter_wrapping_type +from hashlib._hasher import _Hasher # ===----------------------------------------------------------------------=== # # Boolable @@ -505,6 +506,17 @@ struct Bool( """ return __mlir_op.`index.casts`[_type = __mlir_type.index](self.value) + fn __hash__[H: _Hasher](self, mut hasher: H): + """Updates hasher with the underlying bytes. + + Parameters: + H: The hasher type. + + Args: + hasher: The hasher instance. + """ + hasher._update_with_simd(Scalar[DType.bool](self)) + # ===----------------------------------------------------------------------=== # # bool diff --git a/stdlib/src/utils/index.mojo b/stdlib/src/utils/index.mojo index 91b36e464d..1585123785 100644 --- a/stdlib/src/utils/index.mojo +++ b/stdlib/src/utils/index.mojo @@ -28,6 +28,7 @@ from builtin.io import _get_dtype_printf_format, _snprintf from . import unroll from .static_tuple import StaticTuple +from hashlib._hasher import _Hasher # ===-----------------------------------------------------------------------===# # Utilities @@ -828,6 +829,20 @@ struct IndexList[ self.cast[_type_of_width[element_bitwidth, unsigned]()]() ) + fn __hash__[H: _Hasher](self, mut hasher: H): + """Updates hasher with the underlying bytes. + + Parameters: + H: The hasher type. + + Args: + hasher: The hasher instance. + """ + + @parameter + for i in range(size): + hasher.update(self.data[i]) + # ===-----------------------------------------------------------------------===# # Factory functions for creating index. From c08eb1fb64a4b4bfe7388280d5df6c2c865a8135 Mon Sep 17 00:00:00 2001 From: modularbot Date: Tue, 24 Dec 2024 07:20:27 +0000 Subject: [PATCH 137/509] Update lockfiles to point to latest nightly version: 25.1.0.dev2024122405 --- examples/life/magic.lock | 162 +++++++++++++++++----------------- examples/magic.lock | 162 +++++++++++++++++----------------- examples/notebooks/magic.lock | 160 ++++++++++++++++----------------- examples/operators/magic.lock | 162 +++++++++++++++++----------------- magic.lock | 162 +++++++++++++++++----------------- 5 files changed, 404 insertions(+), 404 deletions(-) diff --git a/examples/life/magic.lock b/examples/life/magic.lock index 1b8c6db189..ddd2ccc481 100644 --- a/examples/life/magic.lock +++ b/examples/life/magic.lock @@ -170,12 +170,12 @@ 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-25.1.0.dev2024122305-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024122305-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024122305-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122405-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024122405-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024122405-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122405-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-25.1.0.dev2024122305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122405-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_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.15-py312h98912ed_1.conda @@ -446,12 +446,12 @@ 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-25.1.0.dev2024122305-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024122305-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024122305-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122405-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024122405-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024122405-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122405-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-25.1.0.dev2024122305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122405-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_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.15-py312hdd3e373_1.conda @@ -705,12 +705,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-25.1.0.dev2024122305-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024122305-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024122305-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122405-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024122405-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024122405-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122405-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-25.1.0.dev2024122305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122405-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 @@ -7671,76 +7671,76 @@ packages: timestamp: 1733219945697 - kind: conda name: max - version: 25.1.0.dev2024122305 + version: 25.1.0.dev2024122405 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122305-release.conda - sha256: 3d41962e708b802bdb9bed0477ed87c09220db8f79c69c7f89100446ab47379b - md5: 71fda8b443ffe33ad9604d490b69b137 - depends: - - max-core ==25.1.0.dev2024122305 release - - max-python >=25.1.0.dev2024122305,<26.0a0 - - mojo-jupyter ==25.1.0.dev2024122305 release - - mblack ==25.1.0.dev2024122305 release + url: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122405-release.conda + sha256: 9d575c55713737487e859830f4b6e43c4c6c2912ad39435baaea7277410a8fc0 + md5: 08a1819345d049ed1bd197d964daa0d0 + depends: + - max-core ==25.1.0.dev2024122405 release + - max-python >=25.1.0.dev2024122405,<26.0a0 + - mojo-jupyter ==25.1.0.dev2024122405 release + - mblack ==25.1.0.dev2024122405 release license: LicenseRef-Modular-Proprietary - size: 9914 - timestamp: 1734931092581 + size: 9916 + timestamp: 1735017427764 - kind: conda name: max-core - version: 25.1.0.dev2024122305 + version: 25.1.0.dev2024122405 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024122305-release.conda - sha256: 1032bb0ae02634332d69429dd7e0622f54a94338248c2225743b18d92697f160 - md5: ee626ed4feac127b6d68433b1c7650ad + url: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024122405-release.conda + sha256: 42eb8fc98f253aba358d4607d327b1f2bca1e4b6cd54d161f1b11973b9187f3b + md5: af04d85044771d215cf01c9a9d044777 depends: - - mblack ==25.1.0.dev2024122305 release + - mblack ==25.1.0.dev2024122405 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 245865434 - timestamp: 1734931102523 + size: 245801487 + timestamp: 1735017427762 - kind: conda name: max-core - version: 25.1.0.dev2024122305 + version: 25.1.0.dev2024122405 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024122305-release.conda - sha256: a277abac670d966eccb7d4b0804eab694aa3a0ae3f8d3be0fab6d813f56c77d8 - md5: 59e964fe846e294029da392482e3f82c + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024122405-release.conda + sha256: 9580693294aaee7af61ef55861a423642dc48442d5301abf0a0b52034d7c82af + md5: ebdf260ab3a9619d5b155773bfc78595 depends: - - mblack ==25.1.0.dev2024122305 release + - mblack ==25.1.0.dev2024122405 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 249729693 - timestamp: 1734931092579 + size: 249636236 + timestamp: 1735017507355 - kind: conda name: max-core - version: 25.1.0.dev2024122305 + version: 25.1.0.dev2024122405 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024122305-release.conda - sha256: f72340995c59c3a148c9378935363370936c734431d88bfd0db11c4461406a51 - md5: a5ac18a65291496df2d96bb745237a02 + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024122405-release.conda + sha256: ea177a079df19b761ea62632d11217844b809a132335655ca8d849f4fdb38c3d + md5: 2464bccb67c4782d3176a47e159c3572 depends: - - mblack ==25.1.0.dev2024122305 release + - mblack ==25.1.0.dev2024122405 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 214359730 - timestamp: 1734931396861 + size: 214260318 + timestamp: 1735018071764 - kind: conda name: max-python - version: 25.1.0.dev2024122305 + version: 25.1.0.dev2024122405 build: 3.12release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024122305-3.12release.conda - sha256: 2b6cbf710cb2b5411f62e0ccbb0e5973f7c8913eb8122dfcb74c2d41087ed4b3 - md5: d3a108c46dd79a0ae7b6419a9bb0f296 + url: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024122405-3.12release.conda + sha256: 09e20c06c112f75a6f269d745b742d64a548bab83a86106fa83c4828925b43ce + md5: 67297ef5d02d1f4680aabccec12df49b depends: - - max-core ==25.1.0.dev2024122305 release + - max-core ==25.1.0.dev2024122405 release - python 3.12.* - fastapi - httpx @@ -7763,18 +7763,18 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 122979283 - timestamp: 1734931102532 + size: 122948337 + timestamp: 1735017427771 - kind: conda name: max-python - version: 25.1.0.dev2024122305 + version: 25.1.0.dev2024122405 build: 3.12release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024122305-3.12release.conda - sha256: fbc51b6575086874eb8267e1e16519405815e6f183f17fc27f1d23b076ceae0c - md5: c5694c94bb62c6d1af10fbc770e0afb9 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024122405-3.12release.conda + sha256: c81163ce93158382e8ce6ac9e969f3aca27b617b046b97e1188b791bd085a730 + md5: 47df554cfa2b647d81c3a2850ae0266c depends: - - max-core ==25.1.0.dev2024122305 release + - max-core ==25.1.0.dev2024122405 release - python 3.12.* - fastapi - httpx @@ -7797,18 +7797,18 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 126649049 - timestamp: 1734931092590 + size: 126619439 + timestamp: 1735017507366 - kind: conda name: max-python - version: 25.1.0.dev2024122305 + version: 25.1.0.dev2024122405 build: 3.12release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024122305-3.12release.conda - sha256: 32818ac0ad2ccd208b140d76539ee3e5aad9c4ba04330a3a0047e8f1c62e6396 - md5: 3672eac3366d9fe227ab90f978c0b647 + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024122405-3.12release.conda + sha256: 81d6e4a4c9fa591a53999d1e4d0a83263cca72aee561b66665b787f440a80907 + md5: d05af20971b8b1a4b2978e1495bd29f2 depends: - - max-core ==25.1.0.dev2024122305 release + - max-core ==25.1.0.dev2024122405 release - python 3.12.* - fastapi - httpx @@ -7831,17 +7831,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 113549070 - timestamp: 1734931396864 + size: 113525334 + timestamp: 1735018071767 - kind: conda name: mblack - version: 25.1.0.dev2024122305 + version: 25.1.0.dev2024122405 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122305-release.conda - sha256: 0798bcfdd85c6801d2295e8b661df05291873483a58db0d8ee000b920ccb24ae - md5: 7d0b409716c4a607313c466510583eab + url: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122405-release.conda + sha256: c9f51e06c2312e4d3c9ddc7be8ac0df093f8cd3d6d1742294cc9b42577230c94 + md5: dcce1799bfcc49909a8eff68ef7c946b depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -7851,8 +7851,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130803 - timestamp: 1734931092586 + size: 130809 + timestamp: 1735017427768 - kind: conda name: mdurl version: 0.1.2 @@ -7871,21 +7871,21 @@ packages: timestamp: 1733255681319 - kind: conda name: mojo-jupyter - version: 25.1.0.dev2024122305 + version: 25.1.0.dev2024122405 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122305-release.conda - sha256: b192e6b96f2445f9347261a5d8778ef6656e3ebbc93a7ccdb0af311620ff0d55 - md5: 22ed016d14e656600acd83326d153da9 + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122405-release.conda + sha256: f94b572ac223871866d2e4fa6401f492d4396f1f6948676bdeba496136d8923c + md5: f79467d35eb2237032e802ac5ece411b depends: - - max-core ==25.1.0.dev2024122305 release + - max-core ==25.1.0.dev2024122405 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22934 - timestamp: 1734931092588 + size: 22945 + timestamp: 1735017427768 - kind: conda name: mpg123 version: 1.32.9 diff --git a/examples/magic.lock b/examples/magic.lock index e988998943..814dfa2bff 100644 --- a/examples/magic.lock +++ b/examples/magic.lock @@ -131,12 +131,12 @@ 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-25.1.0.dev2024122305-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024122305-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024122305-3.11release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122405-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024122405-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024122405-3.11release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122405-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-25.1.0.dev2024122305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122405-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 @@ -349,12 +349,12 @@ 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-25.1.0.dev2024122305-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024122305-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024122305-3.11release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122405-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024122405-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024122405-3.11release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122405-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-25.1.0.dev2024122305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122405-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 @@ -558,12 +558,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-25.1.0.dev2024122305-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024122305-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024122305-3.11release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122405-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024122405-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024122405-3.11release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122405-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-25.1.0.dev2024122305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122405-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 @@ -5892,76 +5892,76 @@ packages: timestamp: 1733220925299 - kind: conda name: max - version: 25.1.0.dev2024122305 + version: 25.1.0.dev2024122405 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122305-release.conda - sha256: 3d41962e708b802bdb9bed0477ed87c09220db8f79c69c7f89100446ab47379b - md5: 71fda8b443ffe33ad9604d490b69b137 - depends: - - max-core ==25.1.0.dev2024122305 release - - max-python >=25.1.0.dev2024122305,<26.0a0 - - mojo-jupyter ==25.1.0.dev2024122305 release - - mblack ==25.1.0.dev2024122305 release + url: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122405-release.conda + sha256: 9d575c55713737487e859830f4b6e43c4c6c2912ad39435baaea7277410a8fc0 + md5: 08a1819345d049ed1bd197d964daa0d0 + depends: + - max-core ==25.1.0.dev2024122405 release + - max-python >=25.1.0.dev2024122405,<26.0a0 + - mojo-jupyter ==25.1.0.dev2024122405 release + - mblack ==25.1.0.dev2024122405 release license: LicenseRef-Modular-Proprietary - size: 9914 - timestamp: 1734931092581 + size: 9916 + timestamp: 1735017427764 - kind: conda name: max-core - version: 25.1.0.dev2024122305 + version: 25.1.0.dev2024122405 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024122305-release.conda - sha256: 1032bb0ae02634332d69429dd7e0622f54a94338248c2225743b18d92697f160 - md5: ee626ed4feac127b6d68433b1c7650ad + url: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024122405-release.conda + sha256: 42eb8fc98f253aba358d4607d327b1f2bca1e4b6cd54d161f1b11973b9187f3b + md5: af04d85044771d215cf01c9a9d044777 depends: - - mblack ==25.1.0.dev2024122305 release + - mblack ==25.1.0.dev2024122405 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 245865434 - timestamp: 1734931102523 + size: 245801487 + timestamp: 1735017427762 - kind: conda name: max-core - version: 25.1.0.dev2024122305 + version: 25.1.0.dev2024122405 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024122305-release.conda - sha256: a277abac670d966eccb7d4b0804eab694aa3a0ae3f8d3be0fab6d813f56c77d8 - md5: 59e964fe846e294029da392482e3f82c + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024122405-release.conda + sha256: 9580693294aaee7af61ef55861a423642dc48442d5301abf0a0b52034d7c82af + md5: ebdf260ab3a9619d5b155773bfc78595 depends: - - mblack ==25.1.0.dev2024122305 release + - mblack ==25.1.0.dev2024122405 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 249729693 - timestamp: 1734931092579 + size: 249636236 + timestamp: 1735017507355 - kind: conda name: max-core - version: 25.1.0.dev2024122305 + version: 25.1.0.dev2024122405 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024122305-release.conda - sha256: f72340995c59c3a148c9378935363370936c734431d88bfd0db11c4461406a51 - md5: a5ac18a65291496df2d96bb745237a02 + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024122405-release.conda + sha256: ea177a079df19b761ea62632d11217844b809a132335655ca8d849f4fdb38c3d + md5: 2464bccb67c4782d3176a47e159c3572 depends: - - mblack ==25.1.0.dev2024122305 release + - mblack ==25.1.0.dev2024122405 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 214359730 - timestamp: 1734931396861 + size: 214260318 + timestamp: 1735018071764 - kind: conda name: max-python - version: 25.1.0.dev2024122305 + version: 25.1.0.dev2024122405 build: 3.11release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024122305-3.11release.conda - sha256: 010e511da8cb580876a61a8100235c08ba8a881b93189189c091745ab9bc8748 - md5: 1d02d39e8d74bf821874635bac42d65e + url: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024122405-3.11release.conda + sha256: de071b19f03b1fbd8915f1811d86c52085b99728fd43d51dc3d37faf8afd19a3 + md5: 03df1e5b3a92d520c2dcfa7e762e946e depends: - - max-core ==25.1.0.dev2024122305 release + - max-core ==25.1.0.dev2024122405 release - python 3.11.* - fastapi - httpx @@ -5984,18 +5984,18 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 122987076 - timestamp: 1734931102529 + size: 122983137 + timestamp: 1735017427769 - kind: conda name: max-python - version: 25.1.0.dev2024122305 + version: 25.1.0.dev2024122405 build: 3.11release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024122305-3.11release.conda - sha256: 73404340c50dc2f127ebaf13721c68516f8e4059f974cfd384caf4453a53c59e - md5: cbac0dda2778c0484b2f7784b14644f3 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024122405-3.11release.conda + sha256: 2fcb94d8bad3583c1e878015eafaaf5235f85dc15c60d7d3e511e068600e7f40 + md5: 8b264afbfd96b74acaae9936987a7bba depends: - - max-core ==25.1.0.dev2024122305 release + - max-core ==25.1.0.dev2024122405 release - python 3.11.* - fastapi - httpx @@ -6018,18 +6018,18 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 126658342 - timestamp: 1734931092587 + size: 126631610 + timestamp: 1735017507363 - kind: conda name: max-python - version: 25.1.0.dev2024122305 + version: 25.1.0.dev2024122405 build: 3.11release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024122305-3.11release.conda - sha256: 0cc6a4fad4a5b32928b3380c74d0d5a3ad3e8221d6e8c06ec172ee8b78233e53 - md5: f83f5b6dd2a5b0ea13dc5c1d4e627874 + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024122405-3.11release.conda + sha256: 632a8f51da7e94034de153d910a66ec83eea76d22ea4abdfa311ed5c92b18d82 + md5: f8c922a5b1145f956c4db0f704eb8ab1 depends: - - max-core ==25.1.0.dev2024122305 release + - max-core ==25.1.0.dev2024122405 release - python 3.11.* - fastapi - httpx @@ -6052,17 +6052,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 113606813 - timestamp: 1734931396863 + size: 113581471 + timestamp: 1735018071766 - kind: conda name: mblack - version: 25.1.0.dev2024122305 + version: 25.1.0.dev2024122405 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122305-release.conda - sha256: 0798bcfdd85c6801d2295e8b661df05291873483a58db0d8ee000b920ccb24ae - md5: 7d0b409716c4a607313c466510583eab + url: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122405-release.conda + sha256: c9f51e06c2312e4d3c9ddc7be8ac0df093f8cd3d6d1742294cc9b42577230c94 + md5: dcce1799bfcc49909a8eff68ef7c946b depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -6072,8 +6072,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130803 - timestamp: 1734931092586 + size: 130809 + timestamp: 1735017427768 - kind: conda name: mdurl version: 0.1.2 @@ -6092,21 +6092,21 @@ packages: timestamp: 1733255681319 - kind: conda name: mojo-jupyter - version: 25.1.0.dev2024122305 + version: 25.1.0.dev2024122405 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122305-release.conda - sha256: b192e6b96f2445f9347261a5d8778ef6656e3ebbc93a7ccdb0af311620ff0d55 - md5: 22ed016d14e656600acd83326d153da9 + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122405-release.conda + sha256: f94b572ac223871866d2e4fa6401f492d4396f1f6948676bdeba496136d8923c + md5: f79467d35eb2237032e802ac5ece411b depends: - - max-core ==25.1.0.dev2024122305 release + - max-core ==25.1.0.dev2024122405 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22934 - timestamp: 1734931092588 + size: 22945 + timestamp: 1735017427768 - kind: conda name: multidict version: 6.1.0 diff --git a/examples/notebooks/magic.lock b/examples/notebooks/magic.lock index 8d7102edef..35edee0a9c 100644 --- a/examples/notebooks/magic.lock +++ b/examples/notebooks/magic.lock @@ -166,13 +166,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/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-25.1.0.dev2024122305-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024122305-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024122305-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122405-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024122405-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024122405-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122405-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-25.1.0.dev2024122305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122405-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 @@ -456,13 +456,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/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-25.1.0.dev2024122305-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024122305-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024122305-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122405-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024122405-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024122405-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122405-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-25.1.0.dev2024122305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122405-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 @@ -738,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-25.1.0.dev2024122305-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024122305-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024122305-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122405-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024122405-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024122405-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122405-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-25.1.0.dev2024122305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122405-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 @@ -6939,76 +6939,76 @@ packages: timestamp: 1733417051523 - kind: conda name: max - version: 25.1.0.dev2024122305 + version: 25.1.0.dev2024122405 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122305-release.conda - sha256: 3d41962e708b802bdb9bed0477ed87c09220db8f79c69c7f89100446ab47379b - md5: 71fda8b443ffe33ad9604d490b69b137 + url: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122405-release.conda + sha256: 9d575c55713737487e859830f4b6e43c4c6c2912ad39435baaea7277410a8fc0 + md5: 08a1819345d049ed1bd197d964daa0d0 depends: - - max-core ==25.1.0.dev2024122305 release - - max-python >=25.1.0.dev2024122305,<26.0a0 - - mojo-jupyter ==25.1.0.dev2024122305 release - - mblack ==25.1.0.dev2024122305 release + - max-core ==25.1.0.dev2024122405 release + - max-python >=25.1.0.dev2024122405,<26.0a0 + - mojo-jupyter ==25.1.0.dev2024122405 release + - mblack ==25.1.0.dev2024122405 release license: LicenseRef-Modular-Proprietary - size: 9914 - timestamp: 1734931092581 + size: 9916 + timestamp: 1735017427764 - kind: conda name: max-core - version: 25.1.0.dev2024122305 + version: 25.1.0.dev2024122405 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024122305-release.conda - sha256: 1032bb0ae02634332d69429dd7e0622f54a94338248c2225743b18d92697f160 - md5: ee626ed4feac127b6d68433b1c7650ad + url: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024122405-release.conda + sha256: 42eb8fc98f253aba358d4607d327b1f2bca1e4b6cd54d161f1b11973b9187f3b + md5: af04d85044771d215cf01c9a9d044777 depends: - - mblack ==25.1.0.dev2024122305 release + - mblack ==25.1.0.dev2024122405 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 245865434 - timestamp: 1734931102523 + size: 245801487 + timestamp: 1735017427762 - kind: conda name: max-core - version: 25.1.0.dev2024122305 + version: 25.1.0.dev2024122405 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024122305-release.conda - sha256: a277abac670d966eccb7d4b0804eab694aa3a0ae3f8d3be0fab6d813f56c77d8 - md5: 59e964fe846e294029da392482e3f82c + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024122405-release.conda + sha256: 9580693294aaee7af61ef55861a423642dc48442d5301abf0a0b52034d7c82af + md5: ebdf260ab3a9619d5b155773bfc78595 depends: - - mblack ==25.1.0.dev2024122305 release + - mblack ==25.1.0.dev2024122405 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 249729693 - timestamp: 1734931092579 + size: 249636236 + timestamp: 1735017507355 - kind: conda name: max-core - version: 25.1.0.dev2024122305 + version: 25.1.0.dev2024122405 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024122305-release.conda - sha256: f72340995c59c3a148c9378935363370936c734431d88bfd0db11c4461406a51 - md5: a5ac18a65291496df2d96bb745237a02 + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024122405-release.conda + sha256: ea177a079df19b761ea62632d11217844b809a132335655ca8d849f4fdb38c3d + md5: 2464bccb67c4782d3176a47e159c3572 depends: - - mblack ==25.1.0.dev2024122305 release + - mblack ==25.1.0.dev2024122405 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 214359730 - timestamp: 1734931396861 + size: 214260318 + timestamp: 1735018071764 - kind: conda name: max-python - version: 25.1.0.dev2024122305 + version: 25.1.0.dev2024122405 build: 3.12release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024122305-3.12release.conda - sha256: 2b6cbf710cb2b5411f62e0ccbb0e5973f7c8913eb8122dfcb74c2d41087ed4b3 - md5: d3a108c46dd79a0ae7b6419a9bb0f296 + url: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024122405-3.12release.conda + sha256: 09e20c06c112f75a6f269d745b742d64a548bab83a86106fa83c4828925b43ce + md5: 67297ef5d02d1f4680aabccec12df49b depends: - - max-core ==25.1.0.dev2024122305 release + - max-core ==25.1.0.dev2024122405 release - python 3.12.* - fastapi - httpx @@ -7031,18 +7031,18 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 122979283 - timestamp: 1734931102532 + size: 122948337 + timestamp: 1735017427771 - kind: conda name: max-python - version: 25.1.0.dev2024122305 + version: 25.1.0.dev2024122405 build: 3.12release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024122305-3.12release.conda - sha256: fbc51b6575086874eb8267e1e16519405815e6f183f17fc27f1d23b076ceae0c - md5: c5694c94bb62c6d1af10fbc770e0afb9 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024122405-3.12release.conda + sha256: c81163ce93158382e8ce6ac9e969f3aca27b617b046b97e1188b791bd085a730 + md5: 47df554cfa2b647d81c3a2850ae0266c depends: - - max-core ==25.1.0.dev2024122305 release + - max-core ==25.1.0.dev2024122405 release - python 3.12.* - fastapi - httpx @@ -7065,18 +7065,18 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 126649049 - timestamp: 1734931092590 + size: 126619439 + timestamp: 1735017507366 - kind: conda name: max-python - version: 25.1.0.dev2024122305 + version: 25.1.0.dev2024122405 build: 3.12release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024122305-3.12release.conda - sha256: 32818ac0ad2ccd208b140d76539ee3e5aad9c4ba04330a3a0047e8f1c62e6396 - md5: 3672eac3366d9fe227ab90f978c0b647 + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024122405-3.12release.conda + sha256: 81d6e4a4c9fa591a53999d1e4d0a83263cca72aee561b66665b787f440a80907 + md5: d05af20971b8b1a4b2978e1495bd29f2 depends: - - max-core ==25.1.0.dev2024122305 release + - max-core ==25.1.0.dev2024122405 release - python 3.12.* - fastapi - httpx @@ -7099,17 +7099,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 113549070 - timestamp: 1734931396864 + size: 113525334 + timestamp: 1735018071767 - kind: conda name: mblack - version: 25.1.0.dev2024122305 + version: 25.1.0.dev2024122405 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122305-release.conda - sha256: 0798bcfdd85c6801d2295e8b661df05291873483a58db0d8ee000b920ccb24ae - md5: 7d0b409716c4a607313c466510583eab + url: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122405-release.conda + sha256: c9f51e06c2312e4d3c9ddc7be8ac0df093f8cd3d6d1742294cc9b42577230c94 + md5: dcce1799bfcc49909a8eff68ef7c946b depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -7119,8 +7119,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130803 - timestamp: 1734931092586 + size: 130809 + timestamp: 1735017427768 - kind: conda name: mdurl version: 0.1.2 @@ -7155,21 +7155,21 @@ packages: timestamp: 1733258822603 - kind: conda name: mojo-jupyter - version: 25.1.0.dev2024122305 + version: 25.1.0.dev2024122405 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122305-release.conda - sha256: b192e6b96f2445f9347261a5d8778ef6656e3ebbc93a7ccdb0af311620ff0d55 - md5: 22ed016d14e656600acd83326d153da9 + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122405-release.conda + sha256: f94b572ac223871866d2e4fa6401f492d4396f1f6948676bdeba496136d8923c + md5: f79467d35eb2237032e802ac5ece411b depends: - - max-core ==25.1.0.dev2024122305 release + - max-core ==25.1.0.dev2024122405 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22934 - timestamp: 1734931092588 + size: 22945 + timestamp: 1735017427768 - kind: conda name: multidict version: 6.1.0 diff --git a/examples/operators/magic.lock b/examples/operators/magic.lock index fb164fbdee..1a98067699 100644 --- a/examples/operators/magic.lock +++ b/examples/operators/magic.lock @@ -131,12 +131,12 @@ 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-25.1.0.dev2024122305-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024122305-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024122305-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122405-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024122405-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024122405-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122405-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-25.1.0.dev2024122305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122405-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 @@ -349,12 +349,12 @@ 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-25.1.0.dev2024122305-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024122305-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024122305-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122405-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024122405-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024122405-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122405-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-25.1.0.dev2024122305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122405-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 @@ -558,12 +558,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-25.1.0.dev2024122305-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024122305-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024122305-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122405-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024122405-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024122405-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122405-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-25.1.0.dev2024122305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122405-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 @@ -5892,76 +5892,76 @@ packages: timestamp: 1733219945697 - kind: conda name: max - version: 25.1.0.dev2024122305 + version: 25.1.0.dev2024122405 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122305-release.conda - sha256: 3d41962e708b802bdb9bed0477ed87c09220db8f79c69c7f89100446ab47379b - md5: 71fda8b443ffe33ad9604d490b69b137 - depends: - - max-core ==25.1.0.dev2024122305 release - - max-python >=25.1.0.dev2024122305,<26.0a0 - - mojo-jupyter ==25.1.0.dev2024122305 release - - mblack ==25.1.0.dev2024122305 release + url: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122405-release.conda + sha256: 9d575c55713737487e859830f4b6e43c4c6c2912ad39435baaea7277410a8fc0 + md5: 08a1819345d049ed1bd197d964daa0d0 + depends: + - max-core ==25.1.0.dev2024122405 release + - max-python >=25.1.0.dev2024122405,<26.0a0 + - mojo-jupyter ==25.1.0.dev2024122405 release + - mblack ==25.1.0.dev2024122405 release license: LicenseRef-Modular-Proprietary - size: 9914 - timestamp: 1734931092581 + size: 9916 + timestamp: 1735017427764 - kind: conda name: max-core - version: 25.1.0.dev2024122305 + version: 25.1.0.dev2024122405 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024122305-release.conda - sha256: 1032bb0ae02634332d69429dd7e0622f54a94338248c2225743b18d92697f160 - md5: ee626ed4feac127b6d68433b1c7650ad + url: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024122405-release.conda + sha256: 42eb8fc98f253aba358d4607d327b1f2bca1e4b6cd54d161f1b11973b9187f3b + md5: af04d85044771d215cf01c9a9d044777 depends: - - mblack ==25.1.0.dev2024122305 release + - mblack ==25.1.0.dev2024122405 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 245865434 - timestamp: 1734931102523 + size: 245801487 + timestamp: 1735017427762 - kind: conda name: max-core - version: 25.1.0.dev2024122305 + version: 25.1.0.dev2024122405 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024122305-release.conda - sha256: a277abac670d966eccb7d4b0804eab694aa3a0ae3f8d3be0fab6d813f56c77d8 - md5: 59e964fe846e294029da392482e3f82c + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024122405-release.conda + sha256: 9580693294aaee7af61ef55861a423642dc48442d5301abf0a0b52034d7c82af + md5: ebdf260ab3a9619d5b155773bfc78595 depends: - - mblack ==25.1.0.dev2024122305 release + - mblack ==25.1.0.dev2024122405 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 249729693 - timestamp: 1734931092579 + size: 249636236 + timestamp: 1735017507355 - kind: conda name: max-core - version: 25.1.0.dev2024122305 + version: 25.1.0.dev2024122405 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024122305-release.conda - sha256: f72340995c59c3a148c9378935363370936c734431d88bfd0db11c4461406a51 - md5: a5ac18a65291496df2d96bb745237a02 + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024122405-release.conda + sha256: ea177a079df19b761ea62632d11217844b809a132335655ca8d849f4fdb38c3d + md5: 2464bccb67c4782d3176a47e159c3572 depends: - - mblack ==25.1.0.dev2024122305 release + - mblack ==25.1.0.dev2024122405 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 214359730 - timestamp: 1734931396861 + size: 214260318 + timestamp: 1735018071764 - kind: conda name: max-python - version: 25.1.0.dev2024122305 + version: 25.1.0.dev2024122405 build: 3.12release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024122305-3.12release.conda - sha256: 2b6cbf710cb2b5411f62e0ccbb0e5973f7c8913eb8122dfcb74c2d41087ed4b3 - md5: d3a108c46dd79a0ae7b6419a9bb0f296 + url: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024122405-3.12release.conda + sha256: 09e20c06c112f75a6f269d745b742d64a548bab83a86106fa83c4828925b43ce + md5: 67297ef5d02d1f4680aabccec12df49b depends: - - max-core ==25.1.0.dev2024122305 release + - max-core ==25.1.0.dev2024122405 release - python 3.12.* - fastapi - httpx @@ -5984,18 +5984,18 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 122979283 - timestamp: 1734931102532 + size: 122948337 + timestamp: 1735017427771 - kind: conda name: max-python - version: 25.1.0.dev2024122305 + version: 25.1.0.dev2024122405 build: 3.12release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024122305-3.12release.conda - sha256: fbc51b6575086874eb8267e1e16519405815e6f183f17fc27f1d23b076ceae0c - md5: c5694c94bb62c6d1af10fbc770e0afb9 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024122405-3.12release.conda + sha256: c81163ce93158382e8ce6ac9e969f3aca27b617b046b97e1188b791bd085a730 + md5: 47df554cfa2b647d81c3a2850ae0266c depends: - - max-core ==25.1.0.dev2024122305 release + - max-core ==25.1.0.dev2024122405 release - python 3.12.* - fastapi - httpx @@ -6018,18 +6018,18 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 126649049 - timestamp: 1734931092590 + size: 126619439 + timestamp: 1735017507366 - kind: conda name: max-python - version: 25.1.0.dev2024122305 + version: 25.1.0.dev2024122405 build: 3.12release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024122305-3.12release.conda - sha256: 32818ac0ad2ccd208b140d76539ee3e5aad9c4ba04330a3a0047e8f1c62e6396 - md5: 3672eac3366d9fe227ab90f978c0b647 + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024122405-3.12release.conda + sha256: 81d6e4a4c9fa591a53999d1e4d0a83263cca72aee561b66665b787f440a80907 + md5: d05af20971b8b1a4b2978e1495bd29f2 depends: - - max-core ==25.1.0.dev2024122305 release + - max-core ==25.1.0.dev2024122405 release - python 3.12.* - fastapi - httpx @@ -6052,17 +6052,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 113549070 - timestamp: 1734931396864 + size: 113525334 + timestamp: 1735018071767 - kind: conda name: mblack - version: 25.1.0.dev2024122305 + version: 25.1.0.dev2024122405 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122305-release.conda - sha256: 0798bcfdd85c6801d2295e8b661df05291873483a58db0d8ee000b920ccb24ae - md5: 7d0b409716c4a607313c466510583eab + url: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122405-release.conda + sha256: c9f51e06c2312e4d3c9ddc7be8ac0df093f8cd3d6d1742294cc9b42577230c94 + md5: dcce1799bfcc49909a8eff68ef7c946b depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -6072,8 +6072,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130803 - timestamp: 1734931092586 + size: 130809 + timestamp: 1735017427768 - kind: conda name: mdurl version: 0.1.2 @@ -6092,21 +6092,21 @@ packages: timestamp: 1733255681319 - kind: conda name: mojo-jupyter - version: 25.1.0.dev2024122305 + version: 25.1.0.dev2024122405 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122305-release.conda - sha256: b192e6b96f2445f9347261a5d8778ef6656e3ebbc93a7ccdb0af311620ff0d55 - md5: 22ed016d14e656600acd83326d153da9 + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122405-release.conda + sha256: f94b572ac223871866d2e4fa6401f492d4396f1f6948676bdeba496136d8923c + md5: f79467d35eb2237032e802ac5ece411b depends: - - max-core ==25.1.0.dev2024122305 release + - max-core ==25.1.0.dev2024122405 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22934 - timestamp: 1734931092588 + size: 22945 + timestamp: 1735017427768 - kind: conda name: multidict version: 6.1.0 diff --git a/magic.lock b/magic.lock index 64202bb788..5d4e51b7e0 100644 --- a/magic.lock +++ b/magic.lock @@ -132,12 +132,12 @@ 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-25.1.0.dev2024122305-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024122305-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024122305-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122405-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024122405-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024122405-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122405-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-25.1.0.dev2024122305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122405-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 @@ -351,12 +351,12 @@ 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-25.1.0.dev2024122305-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024122305-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024122305-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122405-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024122405-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024122405-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122405-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-25.1.0.dev2024122305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122405-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 @@ -561,12 +561,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-25.1.0.dev2024122305-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024122305-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024122305-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122405-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024122405-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024122405-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122405-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-25.1.0.dev2024122305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122405-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 @@ -5910,76 +5910,76 @@ packages: timestamp: 1733219945697 - kind: conda name: max - version: 25.1.0.dev2024122305 + version: 25.1.0.dev2024122405 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122305-release.conda - sha256: 3d41962e708b802bdb9bed0477ed87c09220db8f79c69c7f89100446ab47379b - md5: 71fda8b443ffe33ad9604d490b69b137 - depends: - - max-core ==25.1.0.dev2024122305 release - - max-python >=25.1.0.dev2024122305,<26.0a0 - - mojo-jupyter ==25.1.0.dev2024122305 release - - mblack ==25.1.0.dev2024122305 release + url: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122405-release.conda + sha256: 9d575c55713737487e859830f4b6e43c4c6c2912ad39435baaea7277410a8fc0 + md5: 08a1819345d049ed1bd197d964daa0d0 + depends: + - max-core ==25.1.0.dev2024122405 release + - max-python >=25.1.0.dev2024122405,<26.0a0 + - mojo-jupyter ==25.1.0.dev2024122405 release + - mblack ==25.1.0.dev2024122405 release license: LicenseRef-Modular-Proprietary - size: 9914 - timestamp: 1734931092581 + size: 9916 + timestamp: 1735017427764 - kind: conda name: max-core - version: 25.1.0.dev2024122305 + version: 25.1.0.dev2024122405 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024122305-release.conda - sha256: 1032bb0ae02634332d69429dd7e0622f54a94338248c2225743b18d92697f160 - md5: ee626ed4feac127b6d68433b1c7650ad + url: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024122405-release.conda + sha256: 42eb8fc98f253aba358d4607d327b1f2bca1e4b6cd54d161f1b11973b9187f3b + md5: af04d85044771d215cf01c9a9d044777 depends: - - mblack ==25.1.0.dev2024122305 release + - mblack ==25.1.0.dev2024122405 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 245865434 - timestamp: 1734931102523 + size: 245801487 + timestamp: 1735017427762 - kind: conda name: max-core - version: 25.1.0.dev2024122305 + version: 25.1.0.dev2024122405 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024122305-release.conda - sha256: a277abac670d966eccb7d4b0804eab694aa3a0ae3f8d3be0fab6d813f56c77d8 - md5: 59e964fe846e294029da392482e3f82c + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024122405-release.conda + sha256: 9580693294aaee7af61ef55861a423642dc48442d5301abf0a0b52034d7c82af + md5: ebdf260ab3a9619d5b155773bfc78595 depends: - - mblack ==25.1.0.dev2024122305 release + - mblack ==25.1.0.dev2024122405 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 249729693 - timestamp: 1734931092579 + size: 249636236 + timestamp: 1735017507355 - kind: conda name: max-core - version: 25.1.0.dev2024122305 + version: 25.1.0.dev2024122405 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024122305-release.conda - sha256: f72340995c59c3a148c9378935363370936c734431d88bfd0db11c4461406a51 - md5: a5ac18a65291496df2d96bb745237a02 + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024122405-release.conda + sha256: ea177a079df19b761ea62632d11217844b809a132335655ca8d849f4fdb38c3d + md5: 2464bccb67c4782d3176a47e159c3572 depends: - - mblack ==25.1.0.dev2024122305 release + - mblack ==25.1.0.dev2024122405 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 214359730 - timestamp: 1734931396861 + size: 214260318 + timestamp: 1735018071764 - kind: conda name: max-python - version: 25.1.0.dev2024122305 + version: 25.1.0.dev2024122405 build: 3.12release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024122305-3.12release.conda - sha256: 2b6cbf710cb2b5411f62e0ccbb0e5973f7c8913eb8122dfcb74c2d41087ed4b3 - md5: d3a108c46dd79a0ae7b6419a9bb0f296 + url: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024122405-3.12release.conda + sha256: 09e20c06c112f75a6f269d745b742d64a548bab83a86106fa83c4828925b43ce + md5: 67297ef5d02d1f4680aabccec12df49b depends: - - max-core ==25.1.0.dev2024122305 release + - max-core ==25.1.0.dev2024122405 release - python 3.12.* - fastapi - httpx @@ -6002,18 +6002,18 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 122979283 - timestamp: 1734931102532 + size: 122948337 + timestamp: 1735017427771 - kind: conda name: max-python - version: 25.1.0.dev2024122305 + version: 25.1.0.dev2024122405 build: 3.12release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024122305-3.12release.conda - sha256: fbc51b6575086874eb8267e1e16519405815e6f183f17fc27f1d23b076ceae0c - md5: c5694c94bb62c6d1af10fbc770e0afb9 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024122405-3.12release.conda + sha256: c81163ce93158382e8ce6ac9e969f3aca27b617b046b97e1188b791bd085a730 + md5: 47df554cfa2b647d81c3a2850ae0266c depends: - - max-core ==25.1.0.dev2024122305 release + - max-core ==25.1.0.dev2024122405 release - python 3.12.* - fastapi - httpx @@ -6036,18 +6036,18 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 126649049 - timestamp: 1734931092590 + size: 126619439 + timestamp: 1735017507366 - kind: conda name: max-python - version: 25.1.0.dev2024122305 + version: 25.1.0.dev2024122405 build: 3.12release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024122305-3.12release.conda - sha256: 32818ac0ad2ccd208b140d76539ee3e5aad9c4ba04330a3a0047e8f1c62e6396 - md5: 3672eac3366d9fe227ab90f978c0b647 + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024122405-3.12release.conda + sha256: 81d6e4a4c9fa591a53999d1e4d0a83263cca72aee561b66665b787f440a80907 + md5: d05af20971b8b1a4b2978e1495bd29f2 depends: - - max-core ==25.1.0.dev2024122305 release + - max-core ==25.1.0.dev2024122405 release - python 3.12.* - fastapi - httpx @@ -6070,17 +6070,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 113549070 - timestamp: 1734931396864 + size: 113525334 + timestamp: 1735018071767 - kind: conda name: mblack - version: 25.1.0.dev2024122305 + version: 25.1.0.dev2024122405 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122305-release.conda - sha256: 0798bcfdd85c6801d2295e8b661df05291873483a58db0d8ee000b920ccb24ae - md5: 7d0b409716c4a607313c466510583eab + url: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122405-release.conda + sha256: c9f51e06c2312e4d3c9ddc7be8ac0df093f8cd3d6d1742294cc9b42577230c94 + md5: dcce1799bfcc49909a8eff68ef7c946b depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -6090,8 +6090,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130803 - timestamp: 1734931092586 + size: 130809 + timestamp: 1735017427768 - kind: conda name: mdurl version: 0.1.2 @@ -6110,21 +6110,21 @@ packages: timestamp: 1733255681319 - kind: conda name: mojo-jupyter - version: 25.1.0.dev2024122305 + version: 25.1.0.dev2024122405 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122305-release.conda - sha256: b192e6b96f2445f9347261a5d8778ef6656e3ebbc93a7ccdb0af311620ff0d55 - md5: 22ed016d14e656600acd83326d153da9 + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122405-release.conda + sha256: f94b572ac223871866d2e4fa6401f492d4396f1f6948676bdeba496136d8923c + md5: f79467d35eb2237032e802ac5ece411b depends: - - max-core ==25.1.0.dev2024122305 release + - max-core ==25.1.0.dev2024122405 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22934 - timestamp: 1734931092588 + size: 22945 + timestamp: 1735017427768 - kind: conda name: multidict version: 6.1.0 From ea0d7ad4dbd35e8516ce8017180638b41bc3e5a9 Mon Sep 17 00:00:00 2001 From: Connor Gray Date: Tue, 24 Dec 2024 12:25:05 -0600 Subject: [PATCH 138/509] [stdlib] polish: Change `sys.argv()` to return `StringSlice`'s (was `StringRef`) This also adds tests and documents that `StringSlice` MUST have the same ABI as `llvm::StringRef`. This is a necessary part of replacing `StringRef` uses with `StringSlice` across the CompilerRT ABI boundary. This is a reasonable constraint to put on `StringSlice`, because `StringSlice` is only intended to be a basic pointer + length "view" type, same as the LLVM `StringRef` type, the Rust `&str` type, or the C++ `std::string_view` type. MODULAR_ORIG_COMMIT_REV_ID: f5bb8c177aec50a8799675089cc5fab5017a2a74 --- docs/changelog.md | 1 + .../src/collections/string/string_slice.mojo | 17 +++++++++++++ stdlib/src/sys/arg.mojo | 9 +++++-- .../collections/string/test_string_slice.mojo | 25 ++++++++++++++++++- 4 files changed, 49 insertions(+), 3 deletions(-) diff --git a/docs/changelog.md b/docs/changelog.md index 9e2bf3509d..c362404b7f 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -113,6 +113,7 @@ what we publish. ### ❌ Removed - `StringRef` is being deprecated. Use `StringSlice` instead. + - Changed `sys.argv()` to return list of `StringSlice`. - removed `StringRef.startswith()` and `StringRef.endswith()` ### 🛠️ Fixed diff --git a/stdlib/src/collections/string/string_slice.mojo b/stdlib/src/collections/string/string_slice.mojo index e4d8a60bdb..f632e806fd 100644 --- a/stdlib/src/collections/string/string_slice.mojo +++ b/stdlib/src/collections/string/string_slice.mojo @@ -31,6 +31,7 @@ from memory.memory import _memcmp_impl_unconstrained from sys import bitwidthof, simdwidthof from sys.intrinsics import unlikely, likely from utils.stringref import StringRef, _memmem +from os import PathLike alias StaticString = StringSlice[StaticConstantOrigin] """An immutable static string slice.""" @@ -239,9 +240,13 @@ struct StringSlice[mut: Bool, //, origin: Origin[mut]]( CollectionElement, CollectionElementNew, Hashable, + PathLike, ): """A non-owning view to encoded string data. + This type is guaranteed to have the same ABI (size, alignment, and field + layout) as the `llvm::StringRef` type. + Parameters: mut: Whether the slice is mutable. origin: The origin of the underlying string data. @@ -438,6 +443,18 @@ struct StringSlice[mut: Bool, //, origin: Origin[mut]]( """ return hash(self._slice._data, self._slice._len) + fn __fspath__(self) -> String: + """Return the file system path representation of this string. + + Returns: + The file system path representation as a string. + """ + return String(self) + + # ===------------------------------------------------------------------===# + # Operator dunders + # ===------------------------------------------------------------------===# + # This decorator informs the compiler that indirect address spaces are not # dereferenced by the method. # TODO: replace with a safe model that checks the body of the method for diff --git a/stdlib/src/sys/arg.mojo b/stdlib/src/sys/arg.mojo index 69a0093630..df777a5adf 100644 --- a/stdlib/src/sys/arg.mojo +++ b/stdlib/src/sys/arg.mojo @@ -34,17 +34,22 @@ from sys import external_call from memory import UnsafePointer +from collections.string import StringSlice + from utils import StringRef # TODO: When we have global variables, this should be a global list. -fn argv() -> VariadicList[StringRef]: +fn argv() -> VariadicList[StringSlice[StaticConstantOrigin]]: """The list of command line arguments. Returns: The list of command line arguments provided when mojo was invoked. """ - var result = VariadicList[StringRef]("") + # SAFETY: + # It is valid to use `StringSlice` here because `StringSlice` is + # guaranteed to be ABI compatible with llvm::StringRef. + var result = VariadicList[StringSlice[StaticConstantOrigin]]("") external_call["KGEN_CompilerRT_GetArgV", NoneType]( Pointer.address_of(result) ) diff --git a/stdlib/test/collections/string/test_string_slice.mojo b/stdlib/test/collections/string/test_string_slice.mojo index 14e84ac80d..ecdcf4ddf2 100644 --- a/stdlib/test/collections/string/test_string_slice.mojo +++ b/stdlib/test/collections/string/test_string_slice.mojo @@ -19,7 +19,29 @@ from collections.string.string_slice import ( _count_utf8_continuation_bytes, ) from collections.string._utf8_validation import _is_valid_utf8 -from memory import Span +from memory import Span, UnsafePointer + +from sys.info import sizeof, alignof + + +fn test_string_slice_layout() raises: + # Test that the layout of `StringSlice` is the same as `llvm::StringRef`. + # This is necessary for `StringSlice` to be validly bitcasted to and from + # `llvm::StringRef` + + # StringSlice should be two words in size. + assert_equal(sizeof[StringSlice[MutableAnyOrigin]](), 2 * sizeof[Int]()) + + var str_slice = StringSlice("") + + var base_ptr = int(UnsafePointer.address_of(str_slice)) + var first_word_ptr = int(UnsafePointer.address_of(str_slice._slice._data)) + var second_word_ptr = int(UnsafePointer.address_of(str_slice._slice._len)) + + # 1st field should be at 0-byte offset from base ptr + assert_equal(first_word_ptr - base_ptr, 0) + # 2nd field should at 1-word offset from base ptr + assert_equal(second_word_ptr - base_ptr, sizeof[Int]()) fn test_string_literal_byte_span() raises: @@ -652,6 +674,7 @@ def test_count(): def main(): + test_string_slice_layout() test_string_literal_byte_span() test_string_byte_span() test_heap_string_from_string_slice() From 134f9e52d50e6cd66dda9b1f11b310beafa1bde8 Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Wed, 25 Dec 2024 13:19:46 +1100 Subject: [PATCH 139/509] [mojo-stdlib] Switch StaticTuple to use mark_initialized instead of kgen.unknown `#kgen.unknown` is a special attribute that is used in the Mojo frontend, not a generalized `undef` value. Using it in StaticTuple can break things at comptime because the interpreter ends up breaking invariants, e.g. something of SIMD type can only be used with SIMDAttr. MODULAR_ORIG_COMMIT_REV_ID: 645671840daa1e6f17343805ec54480aa0b9dac5 --- stdlib/src/utils/static_tuple.mojo | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/stdlib/src/utils/static_tuple.mojo b/stdlib/src/utils/static_tuple.mojo index 0788b54b43..9ef6da0baf 100644 --- a/stdlib/src/utils/static_tuple.mojo +++ b/stdlib/src/utils/static_tuple.mojo @@ -129,10 +129,7 @@ struct StaticTuple[element_type: AnyTrivialRegType, size: Int](Sized): fn __init__(out self): """Constructs an empty (undefined) tuple.""" _static_tuple_construction_checks[size]() - self.array = __mlir_op.`kgen.param.constant`[ - _type = Self.type, - value = __mlir_attr[`#kgen.unknown : `, Self.type], - ]() + __mlir_op.`lit.ownership.mark_initialized`(__get_mvalue_as_litref(self)) @always_inline @implicit From ea7e65acf6cc2fee10eb48e4e4b6855e04311345 Mon Sep 17 00:00:00 2001 From: modularbot Date: Wed, 25 Dec 2024 07:12:18 +0000 Subject: [PATCH 140/509] Update lockfiles to point to latest nightly version: 25.1.0.dev2024122505 --- examples/life/magic.lock | 162 +++++++++++++++++----------------- examples/magic.lock | 162 +++++++++++++++++----------------- examples/notebooks/magic.lock | 160 ++++++++++++++++----------------- examples/operators/magic.lock | 162 +++++++++++++++++----------------- magic.lock | 162 +++++++++++++++++----------------- 5 files changed, 404 insertions(+), 404 deletions(-) diff --git a/examples/life/magic.lock b/examples/life/magic.lock index ddd2ccc481..e2092c5f93 100644 --- a/examples/life/magic.lock +++ b/examples/life/magic.lock @@ -170,12 +170,12 @@ 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-25.1.0.dev2024122405-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024122405-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024122405-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122405-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122505-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024122505-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024122505-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122505-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-25.1.0.dev2024122405-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122505-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_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.15-py312h98912ed_1.conda @@ -446,12 +446,12 @@ 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-25.1.0.dev2024122405-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024122405-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024122405-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122405-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122505-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024122505-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024122505-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122505-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-25.1.0.dev2024122405-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122505-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_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.15-py312hdd3e373_1.conda @@ -705,12 +705,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-25.1.0.dev2024122405-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024122405-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024122405-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122405-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122505-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024122505-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024122505-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122505-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-25.1.0.dev2024122405-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122505-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 @@ -7671,76 +7671,76 @@ packages: timestamp: 1733219945697 - kind: conda name: max - version: 25.1.0.dev2024122405 + version: 25.1.0.dev2024122505 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122405-release.conda - sha256: 9d575c55713737487e859830f4b6e43c4c6c2912ad39435baaea7277410a8fc0 - md5: 08a1819345d049ed1bd197d964daa0d0 - depends: - - max-core ==25.1.0.dev2024122405 release - - max-python >=25.1.0.dev2024122405,<26.0a0 - - mojo-jupyter ==25.1.0.dev2024122405 release - - mblack ==25.1.0.dev2024122405 release + url: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122505-release.conda + sha256: be85c495a7aa74b46b5d2a5618bedc0f9c32f072e2798cca020f4c7c7702cdba + md5: 363f393bb2de03dcbaa2f481c89b373d + depends: + - max-core ==25.1.0.dev2024122505 release + - max-python >=25.1.0.dev2024122505,<26.0a0 + - mojo-jupyter ==25.1.0.dev2024122505 release + - mblack ==25.1.0.dev2024122505 release license: LicenseRef-Modular-Proprietary - size: 9916 - timestamp: 1735017427764 + size: 9918 + timestamp: 1735104162221 - kind: conda name: max-core - version: 25.1.0.dev2024122405 + version: 25.1.0.dev2024122505 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024122405-release.conda - sha256: 42eb8fc98f253aba358d4607d327b1f2bca1e4b6cd54d161f1b11973b9187f3b - md5: af04d85044771d215cf01c9a9d044777 + url: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024122505-release.conda + sha256: a3badee77074c8b66aa36c8e8d582f36e3f2d8ce05088623e79fa3bef3e12101 + md5: f633695f4323543ca6748d2f881c31d8 depends: - - mblack ==25.1.0.dev2024122405 release + - mblack ==25.1.0.dev2024122505 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 245801487 - timestamp: 1735017427762 + size: 245711364 + timestamp: 1735103963145 - kind: conda name: max-core - version: 25.1.0.dev2024122405 + version: 25.1.0.dev2024122505 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024122405-release.conda - sha256: 9580693294aaee7af61ef55861a423642dc48442d5301abf0a0b52034d7c82af - md5: ebdf260ab3a9619d5b155773bfc78595 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024122505-release.conda + sha256: 4f877781e609d37f1163f9836f00f98198479a56e3d1765c00f57172100a9b11 + md5: 1b7b0d38f533662c5386e71d249b2c77 depends: - - mblack ==25.1.0.dev2024122405 release + - mblack ==25.1.0.dev2024122505 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 249636236 - timestamp: 1735017507355 + size: 249584655 + timestamp: 1735104162219 - kind: conda name: max-core - version: 25.1.0.dev2024122405 + version: 25.1.0.dev2024122505 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024122405-release.conda - sha256: ea177a079df19b761ea62632d11217844b809a132335655ca8d849f4fdb38c3d - md5: 2464bccb67c4782d3176a47e159c3572 + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024122505-release.conda + sha256: dc241547bcc99cee9bafb2571d08ab687eb4bd66cd05800ac9a9f23613ea9525 + md5: 2d6dfc974dc4fab4fe6c099f5b7b4143 depends: - - mblack ==25.1.0.dev2024122405 release + - mblack ==25.1.0.dev2024122505 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 214260318 - timestamp: 1735018071764 + size: 214227862 + timestamp: 1735104051652 - kind: conda name: max-python - version: 25.1.0.dev2024122405 + version: 25.1.0.dev2024122505 build: 3.12release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024122405-3.12release.conda - sha256: 09e20c06c112f75a6f269d745b742d64a548bab83a86106fa83c4828925b43ce - md5: 67297ef5d02d1f4680aabccec12df49b + url: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024122505-3.12release.conda + sha256: 4d899d4b5ed3428c226daca01396306023e833cafe659e6f371179b4f8448e17 + md5: 7501e0b5af7bcb9ef802a245956fd649 depends: - - max-core ==25.1.0.dev2024122405 release + - max-core ==25.1.0.dev2024122505 release - python 3.12.* - fastapi - httpx @@ -7763,18 +7763,18 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 122948337 - timestamp: 1735017427771 + size: 122861701 + timestamp: 1735103963154 - kind: conda name: max-python - version: 25.1.0.dev2024122405 + version: 25.1.0.dev2024122505 build: 3.12release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024122405-3.12release.conda - sha256: c81163ce93158382e8ce6ac9e969f3aca27b617b046b97e1188b791bd085a730 - md5: 47df554cfa2b647d81c3a2850ae0266c + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024122505-3.12release.conda + sha256: 0d010401f960cc0b7d0d6346f98e61f3d81754d90349f31cfb599fb1f393fc3d + md5: cb6713b913436eb5cf069ffc2dbf2e14 depends: - - max-core ==25.1.0.dev2024122405 release + - max-core ==25.1.0.dev2024122505 release - python 3.12.* - fastapi - httpx @@ -7797,18 +7797,18 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 126619439 - timestamp: 1735017507366 + size: 126543466 + timestamp: 1735104162230 - kind: conda name: max-python - version: 25.1.0.dev2024122405 + version: 25.1.0.dev2024122505 build: 3.12release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024122405-3.12release.conda - sha256: 81d6e4a4c9fa591a53999d1e4d0a83263cca72aee561b66665b787f440a80907 - md5: d05af20971b8b1a4b2978e1495bd29f2 + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024122505-3.12release.conda + sha256: 586bf6650d0ef68e85fae844737b18f3f74cd846f8d6ffa2b2a247cee1c18bfd + md5: 05cd9bdaff9bf46c79ee21e44273a8c1 depends: - - max-core ==25.1.0.dev2024122405 release + - max-core ==25.1.0.dev2024122505 release - python 3.12.* - fastapi - httpx @@ -7831,17 +7831,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 113525334 - timestamp: 1735018071767 + size: 113429767 + timestamp: 1735104051655 - kind: conda name: mblack - version: 25.1.0.dev2024122405 + version: 25.1.0.dev2024122505 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122405-release.conda - sha256: c9f51e06c2312e4d3c9ddc7be8ac0df093f8cd3d6d1742294cc9b42577230c94 - md5: dcce1799bfcc49909a8eff68ef7c946b + url: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122505-release.conda + sha256: 7ec5547ca5b6f4a7f169dfbf60ac827f7c7ca6abee21a6b70c6a65a03e8f951c + md5: 7f56bdf07679feb4648b2ed20c711f44 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -7851,8 +7851,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130809 - timestamp: 1735017427768 + size: 130803 + timestamp: 1735104162225 - kind: conda name: mdurl version: 0.1.2 @@ -7871,21 +7871,21 @@ packages: timestamp: 1733255681319 - kind: conda name: mojo-jupyter - version: 25.1.0.dev2024122405 + version: 25.1.0.dev2024122505 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122405-release.conda - sha256: f94b572ac223871866d2e4fa6401f492d4396f1f6948676bdeba496136d8923c - md5: f79467d35eb2237032e802ac5ece411b + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122505-release.conda + sha256: 596f48156650da6cc09b489ccdcd1532c982f37a61da16d5cea96b8c0b2b2a41 + md5: 3e9b1b3897e6044c6c3ce6a962818c12 depends: - - max-core ==25.1.0.dev2024122405 release + - max-core ==25.1.0.dev2024122505 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22945 - timestamp: 1735017427768 + size: 22942 + timestamp: 1735104162226 - kind: conda name: mpg123 version: 1.32.9 diff --git a/examples/magic.lock b/examples/magic.lock index 814dfa2bff..ce8cc93404 100644 --- a/examples/magic.lock +++ b/examples/magic.lock @@ -131,12 +131,12 @@ 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-25.1.0.dev2024122405-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024122405-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024122405-3.11release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122405-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122505-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024122505-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024122505-3.11release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122505-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-25.1.0.dev2024122405-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122505-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 @@ -349,12 +349,12 @@ 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-25.1.0.dev2024122405-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024122405-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024122405-3.11release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122405-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122505-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024122505-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024122505-3.11release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122505-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-25.1.0.dev2024122405-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122505-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 @@ -558,12 +558,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-25.1.0.dev2024122405-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024122405-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024122405-3.11release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122405-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122505-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024122505-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024122505-3.11release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122505-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-25.1.0.dev2024122405-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122505-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 @@ -5892,76 +5892,76 @@ packages: timestamp: 1733220925299 - kind: conda name: max - version: 25.1.0.dev2024122405 + version: 25.1.0.dev2024122505 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122405-release.conda - sha256: 9d575c55713737487e859830f4b6e43c4c6c2912ad39435baaea7277410a8fc0 - md5: 08a1819345d049ed1bd197d964daa0d0 - depends: - - max-core ==25.1.0.dev2024122405 release - - max-python >=25.1.0.dev2024122405,<26.0a0 - - mojo-jupyter ==25.1.0.dev2024122405 release - - mblack ==25.1.0.dev2024122405 release + url: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122505-release.conda + sha256: be85c495a7aa74b46b5d2a5618bedc0f9c32f072e2798cca020f4c7c7702cdba + md5: 363f393bb2de03dcbaa2f481c89b373d + depends: + - max-core ==25.1.0.dev2024122505 release + - max-python >=25.1.0.dev2024122505,<26.0a0 + - mojo-jupyter ==25.1.0.dev2024122505 release + - mblack ==25.1.0.dev2024122505 release license: LicenseRef-Modular-Proprietary - size: 9916 - timestamp: 1735017427764 + size: 9918 + timestamp: 1735104162221 - kind: conda name: max-core - version: 25.1.0.dev2024122405 + version: 25.1.0.dev2024122505 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024122405-release.conda - sha256: 42eb8fc98f253aba358d4607d327b1f2bca1e4b6cd54d161f1b11973b9187f3b - md5: af04d85044771d215cf01c9a9d044777 + url: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024122505-release.conda + sha256: a3badee77074c8b66aa36c8e8d582f36e3f2d8ce05088623e79fa3bef3e12101 + md5: f633695f4323543ca6748d2f881c31d8 depends: - - mblack ==25.1.0.dev2024122405 release + - mblack ==25.1.0.dev2024122505 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 245801487 - timestamp: 1735017427762 + size: 245711364 + timestamp: 1735103963145 - kind: conda name: max-core - version: 25.1.0.dev2024122405 + version: 25.1.0.dev2024122505 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024122405-release.conda - sha256: 9580693294aaee7af61ef55861a423642dc48442d5301abf0a0b52034d7c82af - md5: ebdf260ab3a9619d5b155773bfc78595 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024122505-release.conda + sha256: 4f877781e609d37f1163f9836f00f98198479a56e3d1765c00f57172100a9b11 + md5: 1b7b0d38f533662c5386e71d249b2c77 depends: - - mblack ==25.1.0.dev2024122405 release + - mblack ==25.1.0.dev2024122505 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 249636236 - timestamp: 1735017507355 + size: 249584655 + timestamp: 1735104162219 - kind: conda name: max-core - version: 25.1.0.dev2024122405 + version: 25.1.0.dev2024122505 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024122405-release.conda - sha256: ea177a079df19b761ea62632d11217844b809a132335655ca8d849f4fdb38c3d - md5: 2464bccb67c4782d3176a47e159c3572 + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024122505-release.conda + sha256: dc241547bcc99cee9bafb2571d08ab687eb4bd66cd05800ac9a9f23613ea9525 + md5: 2d6dfc974dc4fab4fe6c099f5b7b4143 depends: - - mblack ==25.1.0.dev2024122405 release + - mblack ==25.1.0.dev2024122505 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 214260318 - timestamp: 1735018071764 + size: 214227862 + timestamp: 1735104051652 - kind: conda name: max-python - version: 25.1.0.dev2024122405 + version: 25.1.0.dev2024122505 build: 3.11release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024122405-3.11release.conda - sha256: de071b19f03b1fbd8915f1811d86c52085b99728fd43d51dc3d37faf8afd19a3 - md5: 03df1e5b3a92d520c2dcfa7e762e946e + url: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024122505-3.11release.conda + sha256: 5f4632c6929789175e6f263e0a0ac95bf43838b4e5362d6f514143762cd1eedf + md5: f387a7713ddf3db08696b07e496f8082 depends: - - max-core ==25.1.0.dev2024122405 release + - max-core ==25.1.0.dev2024122505 release - python 3.11.* - fastapi - httpx @@ -5984,18 +5984,18 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 122983137 - timestamp: 1735017427769 + size: 122884498 + timestamp: 1735103963152 - kind: conda name: max-python - version: 25.1.0.dev2024122405 + version: 25.1.0.dev2024122505 build: 3.11release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024122405-3.11release.conda - sha256: 2fcb94d8bad3583c1e878015eafaaf5235f85dc15c60d7d3e511e068600e7f40 - md5: 8b264afbfd96b74acaae9936987a7bba + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024122505-3.11release.conda + sha256: 5c918868e85f1a3291706699932e4d6e22f26592b56150a7af001c1eda25f2bd + md5: 24d5b77caaa410cedc23971990710276 depends: - - max-core ==25.1.0.dev2024122405 release + - max-core ==25.1.0.dev2024122505 release - python 3.11.* - fastapi - httpx @@ -6018,18 +6018,18 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 126631610 - timestamp: 1735017507363 + size: 126542671 + timestamp: 1735104162227 - kind: conda name: max-python - version: 25.1.0.dev2024122405 + version: 25.1.0.dev2024122505 build: 3.11release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024122405-3.11release.conda - sha256: 632a8f51da7e94034de153d910a66ec83eea76d22ea4abdfa311ed5c92b18d82 - md5: f8c922a5b1145f956c4db0f704eb8ab1 + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024122505-3.11release.conda + sha256: 5cdb49d3a650cacfe1122a60cc0ccda5f48c591c1a3a6324370e2b3a8ad8544b + md5: e31555c7cb0ee82c57a644331829c952 depends: - - max-core ==25.1.0.dev2024122405 release + - max-core ==25.1.0.dev2024122505 release - python 3.11.* - fastapi - httpx @@ -6052,17 +6052,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 113581471 - timestamp: 1735018071766 + size: 113488067 + timestamp: 1735104051654 - kind: conda name: mblack - version: 25.1.0.dev2024122405 + version: 25.1.0.dev2024122505 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122405-release.conda - sha256: c9f51e06c2312e4d3c9ddc7be8ac0df093f8cd3d6d1742294cc9b42577230c94 - md5: dcce1799bfcc49909a8eff68ef7c946b + url: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122505-release.conda + sha256: 7ec5547ca5b6f4a7f169dfbf60ac827f7c7ca6abee21a6b70c6a65a03e8f951c + md5: 7f56bdf07679feb4648b2ed20c711f44 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -6072,8 +6072,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130809 - timestamp: 1735017427768 + size: 130803 + timestamp: 1735104162225 - kind: conda name: mdurl version: 0.1.2 @@ -6092,21 +6092,21 @@ packages: timestamp: 1733255681319 - kind: conda name: mojo-jupyter - version: 25.1.0.dev2024122405 + version: 25.1.0.dev2024122505 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122405-release.conda - sha256: f94b572ac223871866d2e4fa6401f492d4396f1f6948676bdeba496136d8923c - md5: f79467d35eb2237032e802ac5ece411b + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122505-release.conda + sha256: 596f48156650da6cc09b489ccdcd1532c982f37a61da16d5cea96b8c0b2b2a41 + md5: 3e9b1b3897e6044c6c3ce6a962818c12 depends: - - max-core ==25.1.0.dev2024122405 release + - max-core ==25.1.0.dev2024122505 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22945 - timestamp: 1735017427768 + size: 22942 + timestamp: 1735104162226 - kind: conda name: multidict version: 6.1.0 diff --git a/examples/notebooks/magic.lock b/examples/notebooks/magic.lock index 35edee0a9c..12fdefc7b4 100644 --- a/examples/notebooks/magic.lock +++ b/examples/notebooks/magic.lock @@ -166,13 +166,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/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-25.1.0.dev2024122405-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024122405-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024122405-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122405-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122505-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024122505-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024122505-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122505-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-25.1.0.dev2024122405-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122505-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 @@ -456,13 +456,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/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-25.1.0.dev2024122405-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024122405-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024122405-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122405-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122505-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024122505-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024122505-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122505-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-25.1.0.dev2024122405-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122505-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 @@ -738,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-25.1.0.dev2024122405-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024122405-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024122405-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122405-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122505-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024122505-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024122505-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122505-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-25.1.0.dev2024122405-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122505-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 @@ -6939,76 +6939,76 @@ packages: timestamp: 1733417051523 - kind: conda name: max - version: 25.1.0.dev2024122405 + version: 25.1.0.dev2024122505 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122405-release.conda - sha256: 9d575c55713737487e859830f4b6e43c4c6c2912ad39435baaea7277410a8fc0 - md5: 08a1819345d049ed1bd197d964daa0d0 + url: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122505-release.conda + sha256: be85c495a7aa74b46b5d2a5618bedc0f9c32f072e2798cca020f4c7c7702cdba + md5: 363f393bb2de03dcbaa2f481c89b373d depends: - - max-core ==25.1.0.dev2024122405 release - - max-python >=25.1.0.dev2024122405,<26.0a0 - - mojo-jupyter ==25.1.0.dev2024122405 release - - mblack ==25.1.0.dev2024122405 release + - max-core ==25.1.0.dev2024122505 release + - max-python >=25.1.0.dev2024122505,<26.0a0 + - mojo-jupyter ==25.1.0.dev2024122505 release + - mblack ==25.1.0.dev2024122505 release license: LicenseRef-Modular-Proprietary - size: 9916 - timestamp: 1735017427764 + size: 9918 + timestamp: 1735104162221 - kind: conda name: max-core - version: 25.1.0.dev2024122405 + version: 25.1.0.dev2024122505 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024122405-release.conda - sha256: 42eb8fc98f253aba358d4607d327b1f2bca1e4b6cd54d161f1b11973b9187f3b - md5: af04d85044771d215cf01c9a9d044777 + url: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024122505-release.conda + sha256: a3badee77074c8b66aa36c8e8d582f36e3f2d8ce05088623e79fa3bef3e12101 + md5: f633695f4323543ca6748d2f881c31d8 depends: - - mblack ==25.1.0.dev2024122405 release + - mblack ==25.1.0.dev2024122505 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 245801487 - timestamp: 1735017427762 + size: 245711364 + timestamp: 1735103963145 - kind: conda name: max-core - version: 25.1.0.dev2024122405 + version: 25.1.0.dev2024122505 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024122405-release.conda - sha256: 9580693294aaee7af61ef55861a423642dc48442d5301abf0a0b52034d7c82af - md5: ebdf260ab3a9619d5b155773bfc78595 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024122505-release.conda + sha256: 4f877781e609d37f1163f9836f00f98198479a56e3d1765c00f57172100a9b11 + md5: 1b7b0d38f533662c5386e71d249b2c77 depends: - - mblack ==25.1.0.dev2024122405 release + - mblack ==25.1.0.dev2024122505 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 249636236 - timestamp: 1735017507355 + size: 249584655 + timestamp: 1735104162219 - kind: conda name: max-core - version: 25.1.0.dev2024122405 + version: 25.1.0.dev2024122505 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024122405-release.conda - sha256: ea177a079df19b761ea62632d11217844b809a132335655ca8d849f4fdb38c3d - md5: 2464bccb67c4782d3176a47e159c3572 + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024122505-release.conda + sha256: dc241547bcc99cee9bafb2571d08ab687eb4bd66cd05800ac9a9f23613ea9525 + md5: 2d6dfc974dc4fab4fe6c099f5b7b4143 depends: - - mblack ==25.1.0.dev2024122405 release + - mblack ==25.1.0.dev2024122505 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 214260318 - timestamp: 1735018071764 + size: 214227862 + timestamp: 1735104051652 - kind: conda name: max-python - version: 25.1.0.dev2024122405 + version: 25.1.0.dev2024122505 build: 3.12release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024122405-3.12release.conda - sha256: 09e20c06c112f75a6f269d745b742d64a548bab83a86106fa83c4828925b43ce - md5: 67297ef5d02d1f4680aabccec12df49b + url: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024122505-3.12release.conda + sha256: 4d899d4b5ed3428c226daca01396306023e833cafe659e6f371179b4f8448e17 + md5: 7501e0b5af7bcb9ef802a245956fd649 depends: - - max-core ==25.1.0.dev2024122405 release + - max-core ==25.1.0.dev2024122505 release - python 3.12.* - fastapi - httpx @@ -7031,18 +7031,18 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 122948337 - timestamp: 1735017427771 + size: 122861701 + timestamp: 1735103963154 - kind: conda name: max-python - version: 25.1.0.dev2024122405 + version: 25.1.0.dev2024122505 build: 3.12release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024122405-3.12release.conda - sha256: c81163ce93158382e8ce6ac9e969f3aca27b617b046b97e1188b791bd085a730 - md5: 47df554cfa2b647d81c3a2850ae0266c + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024122505-3.12release.conda + sha256: 0d010401f960cc0b7d0d6346f98e61f3d81754d90349f31cfb599fb1f393fc3d + md5: cb6713b913436eb5cf069ffc2dbf2e14 depends: - - max-core ==25.1.0.dev2024122405 release + - max-core ==25.1.0.dev2024122505 release - python 3.12.* - fastapi - httpx @@ -7065,18 +7065,18 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 126619439 - timestamp: 1735017507366 + size: 126543466 + timestamp: 1735104162230 - kind: conda name: max-python - version: 25.1.0.dev2024122405 + version: 25.1.0.dev2024122505 build: 3.12release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024122405-3.12release.conda - sha256: 81d6e4a4c9fa591a53999d1e4d0a83263cca72aee561b66665b787f440a80907 - md5: d05af20971b8b1a4b2978e1495bd29f2 + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024122505-3.12release.conda + sha256: 586bf6650d0ef68e85fae844737b18f3f74cd846f8d6ffa2b2a247cee1c18bfd + md5: 05cd9bdaff9bf46c79ee21e44273a8c1 depends: - - max-core ==25.1.0.dev2024122405 release + - max-core ==25.1.0.dev2024122505 release - python 3.12.* - fastapi - httpx @@ -7099,17 +7099,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 113525334 - timestamp: 1735018071767 + size: 113429767 + timestamp: 1735104051655 - kind: conda name: mblack - version: 25.1.0.dev2024122405 + version: 25.1.0.dev2024122505 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122405-release.conda - sha256: c9f51e06c2312e4d3c9ddc7be8ac0df093f8cd3d6d1742294cc9b42577230c94 - md5: dcce1799bfcc49909a8eff68ef7c946b + url: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122505-release.conda + sha256: 7ec5547ca5b6f4a7f169dfbf60ac827f7c7ca6abee21a6b70c6a65a03e8f951c + md5: 7f56bdf07679feb4648b2ed20c711f44 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -7119,8 +7119,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130809 - timestamp: 1735017427768 + size: 130803 + timestamp: 1735104162225 - kind: conda name: mdurl version: 0.1.2 @@ -7155,21 +7155,21 @@ packages: timestamp: 1733258822603 - kind: conda name: mojo-jupyter - version: 25.1.0.dev2024122405 + version: 25.1.0.dev2024122505 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122405-release.conda - sha256: f94b572ac223871866d2e4fa6401f492d4396f1f6948676bdeba496136d8923c - md5: f79467d35eb2237032e802ac5ece411b + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122505-release.conda + sha256: 596f48156650da6cc09b489ccdcd1532c982f37a61da16d5cea96b8c0b2b2a41 + md5: 3e9b1b3897e6044c6c3ce6a962818c12 depends: - - max-core ==25.1.0.dev2024122405 release + - max-core ==25.1.0.dev2024122505 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22945 - timestamp: 1735017427768 + size: 22942 + timestamp: 1735104162226 - kind: conda name: multidict version: 6.1.0 diff --git a/examples/operators/magic.lock b/examples/operators/magic.lock index 1a98067699..5ea9c23cb5 100644 --- a/examples/operators/magic.lock +++ b/examples/operators/magic.lock @@ -131,12 +131,12 @@ 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-25.1.0.dev2024122405-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024122405-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024122405-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122405-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122505-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024122505-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024122505-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122505-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-25.1.0.dev2024122405-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122505-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 @@ -349,12 +349,12 @@ 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-25.1.0.dev2024122405-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024122405-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024122405-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122405-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122505-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024122505-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024122505-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122505-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-25.1.0.dev2024122405-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122505-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 @@ -558,12 +558,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-25.1.0.dev2024122405-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024122405-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024122405-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122405-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122505-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024122505-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024122505-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122505-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-25.1.0.dev2024122405-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122505-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 @@ -5892,76 +5892,76 @@ packages: timestamp: 1733219945697 - kind: conda name: max - version: 25.1.0.dev2024122405 + version: 25.1.0.dev2024122505 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122405-release.conda - sha256: 9d575c55713737487e859830f4b6e43c4c6c2912ad39435baaea7277410a8fc0 - md5: 08a1819345d049ed1bd197d964daa0d0 - depends: - - max-core ==25.1.0.dev2024122405 release - - max-python >=25.1.0.dev2024122405,<26.0a0 - - mojo-jupyter ==25.1.0.dev2024122405 release - - mblack ==25.1.0.dev2024122405 release + url: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122505-release.conda + sha256: be85c495a7aa74b46b5d2a5618bedc0f9c32f072e2798cca020f4c7c7702cdba + md5: 363f393bb2de03dcbaa2f481c89b373d + depends: + - max-core ==25.1.0.dev2024122505 release + - max-python >=25.1.0.dev2024122505,<26.0a0 + - mojo-jupyter ==25.1.0.dev2024122505 release + - mblack ==25.1.0.dev2024122505 release license: LicenseRef-Modular-Proprietary - size: 9916 - timestamp: 1735017427764 + size: 9918 + timestamp: 1735104162221 - kind: conda name: max-core - version: 25.1.0.dev2024122405 + version: 25.1.0.dev2024122505 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024122405-release.conda - sha256: 42eb8fc98f253aba358d4607d327b1f2bca1e4b6cd54d161f1b11973b9187f3b - md5: af04d85044771d215cf01c9a9d044777 + url: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024122505-release.conda + sha256: a3badee77074c8b66aa36c8e8d582f36e3f2d8ce05088623e79fa3bef3e12101 + md5: f633695f4323543ca6748d2f881c31d8 depends: - - mblack ==25.1.0.dev2024122405 release + - mblack ==25.1.0.dev2024122505 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 245801487 - timestamp: 1735017427762 + size: 245711364 + timestamp: 1735103963145 - kind: conda name: max-core - version: 25.1.0.dev2024122405 + version: 25.1.0.dev2024122505 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024122405-release.conda - sha256: 9580693294aaee7af61ef55861a423642dc48442d5301abf0a0b52034d7c82af - md5: ebdf260ab3a9619d5b155773bfc78595 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024122505-release.conda + sha256: 4f877781e609d37f1163f9836f00f98198479a56e3d1765c00f57172100a9b11 + md5: 1b7b0d38f533662c5386e71d249b2c77 depends: - - mblack ==25.1.0.dev2024122405 release + - mblack ==25.1.0.dev2024122505 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 249636236 - timestamp: 1735017507355 + size: 249584655 + timestamp: 1735104162219 - kind: conda name: max-core - version: 25.1.0.dev2024122405 + version: 25.1.0.dev2024122505 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024122405-release.conda - sha256: ea177a079df19b761ea62632d11217844b809a132335655ca8d849f4fdb38c3d - md5: 2464bccb67c4782d3176a47e159c3572 + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024122505-release.conda + sha256: dc241547bcc99cee9bafb2571d08ab687eb4bd66cd05800ac9a9f23613ea9525 + md5: 2d6dfc974dc4fab4fe6c099f5b7b4143 depends: - - mblack ==25.1.0.dev2024122405 release + - mblack ==25.1.0.dev2024122505 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 214260318 - timestamp: 1735018071764 + size: 214227862 + timestamp: 1735104051652 - kind: conda name: max-python - version: 25.1.0.dev2024122405 + version: 25.1.0.dev2024122505 build: 3.12release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024122405-3.12release.conda - sha256: 09e20c06c112f75a6f269d745b742d64a548bab83a86106fa83c4828925b43ce - md5: 67297ef5d02d1f4680aabccec12df49b + url: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024122505-3.12release.conda + sha256: 4d899d4b5ed3428c226daca01396306023e833cafe659e6f371179b4f8448e17 + md5: 7501e0b5af7bcb9ef802a245956fd649 depends: - - max-core ==25.1.0.dev2024122405 release + - max-core ==25.1.0.dev2024122505 release - python 3.12.* - fastapi - httpx @@ -5984,18 +5984,18 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 122948337 - timestamp: 1735017427771 + size: 122861701 + timestamp: 1735103963154 - kind: conda name: max-python - version: 25.1.0.dev2024122405 + version: 25.1.0.dev2024122505 build: 3.12release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024122405-3.12release.conda - sha256: c81163ce93158382e8ce6ac9e969f3aca27b617b046b97e1188b791bd085a730 - md5: 47df554cfa2b647d81c3a2850ae0266c + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024122505-3.12release.conda + sha256: 0d010401f960cc0b7d0d6346f98e61f3d81754d90349f31cfb599fb1f393fc3d + md5: cb6713b913436eb5cf069ffc2dbf2e14 depends: - - max-core ==25.1.0.dev2024122405 release + - max-core ==25.1.0.dev2024122505 release - python 3.12.* - fastapi - httpx @@ -6018,18 +6018,18 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 126619439 - timestamp: 1735017507366 + size: 126543466 + timestamp: 1735104162230 - kind: conda name: max-python - version: 25.1.0.dev2024122405 + version: 25.1.0.dev2024122505 build: 3.12release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024122405-3.12release.conda - sha256: 81d6e4a4c9fa591a53999d1e4d0a83263cca72aee561b66665b787f440a80907 - md5: d05af20971b8b1a4b2978e1495bd29f2 + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024122505-3.12release.conda + sha256: 586bf6650d0ef68e85fae844737b18f3f74cd846f8d6ffa2b2a247cee1c18bfd + md5: 05cd9bdaff9bf46c79ee21e44273a8c1 depends: - - max-core ==25.1.0.dev2024122405 release + - max-core ==25.1.0.dev2024122505 release - python 3.12.* - fastapi - httpx @@ -6052,17 +6052,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 113525334 - timestamp: 1735018071767 + size: 113429767 + timestamp: 1735104051655 - kind: conda name: mblack - version: 25.1.0.dev2024122405 + version: 25.1.0.dev2024122505 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122405-release.conda - sha256: c9f51e06c2312e4d3c9ddc7be8ac0df093f8cd3d6d1742294cc9b42577230c94 - md5: dcce1799bfcc49909a8eff68ef7c946b + url: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122505-release.conda + sha256: 7ec5547ca5b6f4a7f169dfbf60ac827f7c7ca6abee21a6b70c6a65a03e8f951c + md5: 7f56bdf07679feb4648b2ed20c711f44 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -6072,8 +6072,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130809 - timestamp: 1735017427768 + size: 130803 + timestamp: 1735104162225 - kind: conda name: mdurl version: 0.1.2 @@ -6092,21 +6092,21 @@ packages: timestamp: 1733255681319 - kind: conda name: mojo-jupyter - version: 25.1.0.dev2024122405 + version: 25.1.0.dev2024122505 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122405-release.conda - sha256: f94b572ac223871866d2e4fa6401f492d4396f1f6948676bdeba496136d8923c - md5: f79467d35eb2237032e802ac5ece411b + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122505-release.conda + sha256: 596f48156650da6cc09b489ccdcd1532c982f37a61da16d5cea96b8c0b2b2a41 + md5: 3e9b1b3897e6044c6c3ce6a962818c12 depends: - - max-core ==25.1.0.dev2024122405 release + - max-core ==25.1.0.dev2024122505 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22945 - timestamp: 1735017427768 + size: 22942 + timestamp: 1735104162226 - kind: conda name: multidict version: 6.1.0 diff --git a/magic.lock b/magic.lock index 5d4e51b7e0..bbe31ce716 100644 --- a/magic.lock +++ b/magic.lock @@ -132,12 +132,12 @@ 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-25.1.0.dev2024122405-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024122405-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024122405-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122405-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122505-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024122505-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024122505-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122505-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-25.1.0.dev2024122405-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122505-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 @@ -351,12 +351,12 @@ 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-25.1.0.dev2024122405-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024122405-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024122405-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122405-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122505-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024122505-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024122505-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122505-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-25.1.0.dev2024122405-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122505-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 @@ -561,12 +561,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-25.1.0.dev2024122405-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024122405-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024122405-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122405-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122505-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024122505-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024122505-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122505-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-25.1.0.dev2024122405-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122505-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 @@ -5910,76 +5910,76 @@ packages: timestamp: 1733219945697 - kind: conda name: max - version: 25.1.0.dev2024122405 + version: 25.1.0.dev2024122505 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122405-release.conda - sha256: 9d575c55713737487e859830f4b6e43c4c6c2912ad39435baaea7277410a8fc0 - md5: 08a1819345d049ed1bd197d964daa0d0 - depends: - - max-core ==25.1.0.dev2024122405 release - - max-python >=25.1.0.dev2024122405,<26.0a0 - - mojo-jupyter ==25.1.0.dev2024122405 release - - mblack ==25.1.0.dev2024122405 release + url: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122505-release.conda + sha256: be85c495a7aa74b46b5d2a5618bedc0f9c32f072e2798cca020f4c7c7702cdba + md5: 363f393bb2de03dcbaa2f481c89b373d + depends: + - max-core ==25.1.0.dev2024122505 release + - max-python >=25.1.0.dev2024122505,<26.0a0 + - mojo-jupyter ==25.1.0.dev2024122505 release + - mblack ==25.1.0.dev2024122505 release license: LicenseRef-Modular-Proprietary - size: 9916 - timestamp: 1735017427764 + size: 9918 + timestamp: 1735104162221 - kind: conda name: max-core - version: 25.1.0.dev2024122405 + version: 25.1.0.dev2024122505 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024122405-release.conda - sha256: 42eb8fc98f253aba358d4607d327b1f2bca1e4b6cd54d161f1b11973b9187f3b - md5: af04d85044771d215cf01c9a9d044777 + url: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024122505-release.conda + sha256: a3badee77074c8b66aa36c8e8d582f36e3f2d8ce05088623e79fa3bef3e12101 + md5: f633695f4323543ca6748d2f881c31d8 depends: - - mblack ==25.1.0.dev2024122405 release + - mblack ==25.1.0.dev2024122505 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 245801487 - timestamp: 1735017427762 + size: 245711364 + timestamp: 1735103963145 - kind: conda name: max-core - version: 25.1.0.dev2024122405 + version: 25.1.0.dev2024122505 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024122405-release.conda - sha256: 9580693294aaee7af61ef55861a423642dc48442d5301abf0a0b52034d7c82af - md5: ebdf260ab3a9619d5b155773bfc78595 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024122505-release.conda + sha256: 4f877781e609d37f1163f9836f00f98198479a56e3d1765c00f57172100a9b11 + md5: 1b7b0d38f533662c5386e71d249b2c77 depends: - - mblack ==25.1.0.dev2024122405 release + - mblack ==25.1.0.dev2024122505 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 249636236 - timestamp: 1735017507355 + size: 249584655 + timestamp: 1735104162219 - kind: conda name: max-core - version: 25.1.0.dev2024122405 + version: 25.1.0.dev2024122505 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024122405-release.conda - sha256: ea177a079df19b761ea62632d11217844b809a132335655ca8d849f4fdb38c3d - md5: 2464bccb67c4782d3176a47e159c3572 + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024122505-release.conda + sha256: dc241547bcc99cee9bafb2571d08ab687eb4bd66cd05800ac9a9f23613ea9525 + md5: 2d6dfc974dc4fab4fe6c099f5b7b4143 depends: - - mblack ==25.1.0.dev2024122405 release + - mblack ==25.1.0.dev2024122505 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 214260318 - timestamp: 1735018071764 + size: 214227862 + timestamp: 1735104051652 - kind: conda name: max-python - version: 25.1.0.dev2024122405 + version: 25.1.0.dev2024122505 build: 3.12release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024122405-3.12release.conda - sha256: 09e20c06c112f75a6f269d745b742d64a548bab83a86106fa83c4828925b43ce - md5: 67297ef5d02d1f4680aabccec12df49b + url: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024122505-3.12release.conda + sha256: 4d899d4b5ed3428c226daca01396306023e833cafe659e6f371179b4f8448e17 + md5: 7501e0b5af7bcb9ef802a245956fd649 depends: - - max-core ==25.1.0.dev2024122405 release + - max-core ==25.1.0.dev2024122505 release - python 3.12.* - fastapi - httpx @@ -6002,18 +6002,18 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 122948337 - timestamp: 1735017427771 + size: 122861701 + timestamp: 1735103963154 - kind: conda name: max-python - version: 25.1.0.dev2024122405 + version: 25.1.0.dev2024122505 build: 3.12release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024122405-3.12release.conda - sha256: c81163ce93158382e8ce6ac9e969f3aca27b617b046b97e1188b791bd085a730 - md5: 47df554cfa2b647d81c3a2850ae0266c + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024122505-3.12release.conda + sha256: 0d010401f960cc0b7d0d6346f98e61f3d81754d90349f31cfb599fb1f393fc3d + md5: cb6713b913436eb5cf069ffc2dbf2e14 depends: - - max-core ==25.1.0.dev2024122405 release + - max-core ==25.1.0.dev2024122505 release - python 3.12.* - fastapi - httpx @@ -6036,18 +6036,18 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 126619439 - timestamp: 1735017507366 + size: 126543466 + timestamp: 1735104162230 - kind: conda name: max-python - version: 25.1.0.dev2024122405 + version: 25.1.0.dev2024122505 build: 3.12release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024122405-3.12release.conda - sha256: 81d6e4a4c9fa591a53999d1e4d0a83263cca72aee561b66665b787f440a80907 - md5: d05af20971b8b1a4b2978e1495bd29f2 + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024122505-3.12release.conda + sha256: 586bf6650d0ef68e85fae844737b18f3f74cd846f8d6ffa2b2a247cee1c18bfd + md5: 05cd9bdaff9bf46c79ee21e44273a8c1 depends: - - max-core ==25.1.0.dev2024122405 release + - max-core ==25.1.0.dev2024122505 release - python 3.12.* - fastapi - httpx @@ -6070,17 +6070,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 113525334 - timestamp: 1735018071767 + size: 113429767 + timestamp: 1735104051655 - kind: conda name: mblack - version: 25.1.0.dev2024122405 + version: 25.1.0.dev2024122505 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122405-release.conda - sha256: c9f51e06c2312e4d3c9ddc7be8ac0df093f8cd3d6d1742294cc9b42577230c94 - md5: dcce1799bfcc49909a8eff68ef7c946b + url: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122505-release.conda + sha256: 7ec5547ca5b6f4a7f169dfbf60ac827f7c7ca6abee21a6b70c6a65a03e8f951c + md5: 7f56bdf07679feb4648b2ed20c711f44 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -6090,8 +6090,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130809 - timestamp: 1735017427768 + size: 130803 + timestamp: 1735104162225 - kind: conda name: mdurl version: 0.1.2 @@ -6110,21 +6110,21 @@ packages: timestamp: 1733255681319 - kind: conda name: mojo-jupyter - version: 25.1.0.dev2024122405 + version: 25.1.0.dev2024122505 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122405-release.conda - sha256: f94b572ac223871866d2e4fa6401f492d4396f1f6948676bdeba496136d8923c - md5: f79467d35eb2237032e802ac5ece411b + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122505-release.conda + sha256: 596f48156650da6cc09b489ccdcd1532c982f37a61da16d5cea96b8c0b2b2a41 + md5: 3e9b1b3897e6044c6c3ce6a962818c12 depends: - - max-core ==25.1.0.dev2024122405 release + - max-core ==25.1.0.dev2024122505 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22945 - timestamp: 1735017427768 + size: 22942 + timestamp: 1735104162226 - kind: conda name: multidict version: 6.1.0 From 23e335b0dde0e2657e8c6ff52789ac39ca8ae447 Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Wed, 25 Dec 2024 18:44:03 +1000 Subject: [PATCH 141/509] [mojo-lang] Warn about legacy arg convention syntax. This teaches the parser to warn about the old keyword syntax, which we'll do for a release before removing them. MODULAR_ORIG_COMMIT_REV_ID: 50f8e7d0bf00d19fd29bc0376e00f8748dbe9624 --- docs/changelog.md | 3 +++ stdlib/src/collections/dict.mojo | 4 ++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/docs/changelog.md b/docs/changelog.md index c362404b7f..74c5137d6e 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -27,6 +27,9 @@ what we publish. `x.__copyinit__(y)` no longer work. Simply replace them with `instance = T()` and `x = y` respectively. +- The legacy `borrowed`/`inout` keywords and `-> T as foo` syntax now generate + a warning. Please move to `read`/`mut`/`out` argument syntax instead. + ### Standard library changes - `UnsafePointer`'s `bitcast` method has now been split into `bitcast` diff --git a/stdlib/src/collections/dict.mojo b/stdlib/src/collections/dict.mojo index d84fc02797..9761dec244 100644 --- a/stdlib/src/collections/dict.mojo +++ b/stdlib/src/collections/dict.mojo @@ -242,13 +242,13 @@ struct DictEntry[K: KeyElement, V: CollectionElement]( """ return self - fn reap_value(owned self) -> V as out: + fn reap_value(owned self, out result: V): """Take the value from an owned entry. Returns: The value of the entry. """ - out = self.value^ + result = self.value^ __disable_del self From 2c8c0766ad99d3c75d910d17b90641db653bbf3c Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Thu, 26 Dec 2024 09:17:12 +1000 Subject: [PATCH 142/509] [mojo-lang][KGEN] Move interpreter off `#kgen.unknown` for uninit mem. (#53334) This patch introduces a dedicated `#interp.uninitmem` attribute to represent the use of uninitialized memory, making it easier to reason about where it is coming from, and enabling the `InterpreterState::writeAttributeToMemory` function to handle all stores of uninit memory consistently without a layering violation. It would be a layering violation for interp to know about kgen, because kgen depends on interp not the other way around. MODULAR_ORIG_COMMIT_REV_ID: 1c4db631bfdf703e97f62324159367b2d2ce7920 --- stdlib/src/builtin/simd.mojo | 27 ++++++---------------- stdlib/src/collections/inline_array.mojo | 26 ++++----------------- stdlib/src/memory/maybe_uninitialized.mojo | 5 +--- stdlib/src/utils/static_tuple.mojo | 9 ++------ stdlib/src/utils/variant.mojo | 6 ++--- 5 files changed, 18 insertions(+), 55 deletions(-) diff --git a/stdlib/src/builtin/simd.mojo b/stdlib/src/builtin/simd.mojo index b720d4fb86..7f4a0e8576 100644 --- a/stdlib/src/builtin/simd.mojo +++ b/stdlib/src/builtin/simd.mojo @@ -461,15 +461,7 @@ struct SIMD[type: DType, size: Int]( ), ) - self = __mlir_op.`kgen.param.constant`[ - _type = __mlir_type[ - `!pop.simd<`, size.value, `, `, type.value, `>` - ], - value = __mlir_attr[ - `#kgen.unknown : `, - __mlir_type[`!pop.simd<`, size.value, `, `, type.value, `>`], - ], - ]() + __mlir_op.`lit.ownership.mark_initialized`(__get_mvalue_as_litref(self)) @parameter for i in range(size): @@ -2022,17 +2014,12 @@ struct SIMD[type: DType, size: Int]( fn _convert_variadic_to_pop_array[ *mask: Int ]() -> __mlir_type[`!pop.array<`, output_size.value, `, `, Int, `>`]: - var array = __mlir_op.`kgen.param.constant`[ - _type = __mlir_type[ - `!pop.array<`, output_size.value, `, `, Int, `>` - ], - value = __mlir_attr[ - `#kgen.unknown : `, - __mlir_type[ - `!pop.array<`, output_size.value, `, `, Int, `>` - ], - ], - ]() + var array: __mlir_type[ + `!pop.array<`, output_size.value, `, `, Int, `>` + ] + __mlir_op.`lit.ownership.mark_initialized`( + __get_mvalue_as_litref(array) + ) var array_ptr = UnsafePointer.address_of(array) diff --git a/stdlib/src/collections/inline_array.mojo b/stdlib/src/collections/inline_array.mojo index 502104561c..973406574b 100644 --- a/stdlib/src/collections/inline_array.mojo +++ b/stdlib/src/collections/inline_array.mojo @@ -80,10 +80,7 @@ struct InlineArray[ " 'unsafe_uninitialized'." ), ]() - self._array = __mlir_op.`kgen.param.constant`[ - _type = Self.type, - value = __mlir_attr[`#kgen.unknown : `, Self.type], - ]() + __mlir_op.`lit.ownership.mark_initialized`(__get_mvalue_as_litref(self)) @always_inline fn __init__(out self, *, unsafe_uninitialized: Bool): @@ -106,10 +103,7 @@ struct InlineArray[ Always set to `True` (it's not actually used inside the constructor). """ _inline_array_construction_checks[size]() - self._array = __mlir_op.`kgen.param.constant`[ - _type = Self.type, - value = __mlir_attr[`#kgen.unknown : `, Self.type], - ]() + __mlir_op.`lit.ownership.mark_initialized`(__get_mvalue_as_litref(self)) fn __init__( mut self, @@ -129,11 +123,7 @@ struct InlineArray[ unsafe_assume_initialized: The array of `UnsafeMaybeUninitialized` elements. """ - self._array = __mlir_op.`kgen.param.constant`[ - _type = Self.type, - value = __mlir_attr[`#kgen.unknown : `, Self.type], - ]() - + __mlir_op.`lit.ownership.mark_initialized`(__get_mvalue_as_litref(self)) for i in range(Self.size): unsafe_assume_initialized[i].unsafe_ptr().move_pointee_into( self.unsafe_ptr() + i @@ -148,10 +138,7 @@ struct InlineArray[ fill: The element to fill each index. """ _inline_array_construction_checks[size]() - self._array = __mlir_op.`kgen.param.constant`[ - _type = Self.type, - value = __mlir_attr[`#kgen.unknown : `, Self.type], - ]() + __mlir_op.`lit.ownership.mark_initialized`(__get_mvalue_as_litref(self)) @parameter for i in range(size): @@ -183,10 +170,7 @@ struct InlineArray[ debug_assert(len(storage) == size, "Elements must be of length size") _inline_array_construction_checks[size]() - self._array = __mlir_op.`kgen.param.constant`[ - _type = Self.type, - value = __mlir_attr[`#kgen.unknown : `, Self.type], - ]() + __mlir_op.`lit.ownership.mark_initialized`(__get_mvalue_as_litref(self)) # Move each element into the array storage. @parameter diff --git a/stdlib/src/memory/maybe_uninitialized.mojo b/stdlib/src/memory/maybe_uninitialized.mojo index 53eeb8404e..9ebf803bcb 100644 --- a/stdlib/src/memory/maybe_uninitialized.mojo +++ b/stdlib/src/memory/maybe_uninitialized.mojo @@ -36,10 +36,7 @@ struct UnsafeMaybeUninitialized[ElementType: AnyType](CollectionElementNew): @always_inline fn __init__(out self): """The memory is now considered uninitialized.""" - self._array = __mlir_op.`kgen.param.constant`[ - _type = Self.type, - value = __mlir_attr[`#kgen.unknown : `, Self.type], - ]() + __mlir_op.`lit.ownership.mark_initialized`(__get_mvalue_as_litref(self)) @doc_private @always_inline diff --git a/stdlib/src/utils/static_tuple.mojo b/stdlib/src/utils/static_tuple.mojo index 9ef6da0baf..0f118f6486 100644 --- a/stdlib/src/utils/static_tuple.mojo +++ b/stdlib/src/utils/static_tuple.mojo @@ -78,13 +78,8 @@ fn _create_array[ debug_assert(size == len(lst), "mismatch in the number of elements") - var array = __mlir_op.`kgen.param.constant`[ - _type = __mlir_type[`!pop.array<`, size.value, `, `, type, `>`], - value = __mlir_attr[ - `#kgen.unknown : `, - __mlir_type[`!pop.array<`, size.value, `, `, type, `>`], - ], - ]() + var array: __mlir_type[`!pop.array<`, size.value, `, `, type, `>`] + __mlir_op.`lit.ownership.mark_initialized`(__get_mvalue_as_litref(array)) @parameter for idx in range(size): diff --git a/stdlib/src/utils/variant.mojo b/stdlib/src/utils/variant.mojo index 8efd3ff63c..60d9279a30 100644 --- a/stdlib/src/utils/variant.mojo +++ b/stdlib/src/utils/variant.mojo @@ -121,7 +121,7 @@ struct Variant[*Ts: CollectionElement]( Args: unsafe_uninitialized: Marker argument indicating this initializer is unsafe. """ - self._impl = __mlir_attr[`#kgen.unknown : `, Self._mlir_type] + __mlir_op.`lit.ownership.mark_initialized`(__get_mvalue_as_litref(self)) @implicit fn __init__[T: CollectionElement](mut self, owned value: T): @@ -134,7 +134,7 @@ struct Variant[*Ts: CollectionElement]( Args: value: The value to initialize the variant with. """ - self._impl = __mlir_attr[`#kgen.unknown : `, self._mlir_type] + __mlir_op.`lit.ownership.mark_initialized`(__get_mvalue_as_litref(self)) alias idx = Self._check[T]() self._get_discr() = idx self._get_ptr[T]().init_pointee_move(value^) @@ -171,7 +171,7 @@ struct Variant[*Ts: CollectionElement]( Args: other: The variant to move. """ - self._impl = __mlir_attr[`#kgen.unknown : `, self._mlir_type] + __mlir_op.`lit.ownership.mark_initialized`(__get_mvalue_as_litref(self)) self._get_discr() = other._get_discr() @parameter From da8e0db396f46ed20b6f3ed12de95d5770adf048 Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Thu, 26 Dec 2024 13:07:06 +1000 Subject: [PATCH 143/509] [mojo-lang] Convert trivial type inits to return by register. (#53331) This finishes the unifications of 'out' argument conventions with normal result types, across all declarations and all forms, making Mojo more consistent and simpler for users. This also reduces the amount of IR generated for trivial types which might be a small compile time improvement. MODULAR_ORIG_COMMIT_REV_ID: 68f5c91fe45b628fb75520a6dc6c48c6703e9cbf --- stdlib/src/utils/index.mojo | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/stdlib/src/utils/index.mojo b/stdlib/src/utils/index.mojo index 1585123785..8c87763619 100644 --- a/stdlib/src/utils/index.mojo +++ b/stdlib/src/utils/index.mojo @@ -514,7 +514,9 @@ struct IndexList[ The resulting index tuple. """ - @always_inline + # FIXME(#53331) - nodebug is required otherwise we crash in debug + # information generation. + @always_inline("nodebug") fn apply_fn[ type: DType ](a: Scalar[type], b: Scalar[type]) -> Scalar[type]: From d8ab58bced698f83d0aea13d2387cf4298196cd0 Mon Sep 17 00:00:00 2001 From: modularbot Date: Thu, 26 Dec 2024 07:46:02 +0000 Subject: [PATCH 144/509] Update lockfiles to point to latest nightly version: 25.1.0.dev2024122605 --- examples/life/magic.lock | 180 +++++++++++++++++----------------- examples/magic.lock | 180 +++++++++++++++++----------------- examples/notebooks/magic.lock | 178 ++++++++++++++++----------------- examples/operators/magic.lock | 180 +++++++++++++++++----------------- magic.lock | 180 +++++++++++++++++----------------- 5 files changed, 449 insertions(+), 449 deletions(-) diff --git a/examples/life/magic.lock b/examples/life/magic.lock index e2092c5f93..93547f7467 100644 --- a/examples/life/magic.lock +++ b/examples/life/magic.lock @@ -170,12 +170,12 @@ 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-25.1.0.dev2024122505-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024122505-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024122505-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122605-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024122605-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024122605-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122605-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-25.1.0.dev2024122505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122605-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_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.15-py312h98912ed_1.conda @@ -245,7 +245,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-h8bd8927_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/svt-av1-2.3.0-h5888daf_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda @@ -446,12 +446,12 @@ 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-25.1.0.dev2024122505-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024122505-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024122505-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122605-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024122605-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024122605-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122605-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-25.1.0.dev2024122505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122605-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_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.15-py312hdd3e373_1.conda @@ -521,7 +521,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-hd4fb6f5_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/svt-av1-2.3.0-h5ad3122_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda @@ -705,12 +705,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-25.1.0.dev2024122505-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024122505-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024122505-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122605-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024122605-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024122605-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122605-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-25.1.0.dev2024122505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122605-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 @@ -778,7 +778,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-h98b9ce2_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/svt-av1-2.3.0-hf24288c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda @@ -7671,76 +7671,76 @@ packages: timestamp: 1733219945697 - kind: conda name: max - version: 25.1.0.dev2024122505 + version: 25.1.0.dev2024122605 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122505-release.conda - sha256: be85c495a7aa74b46b5d2a5618bedc0f9c32f072e2798cca020f4c7c7702cdba - md5: 363f393bb2de03dcbaa2f481c89b373d - depends: - - max-core ==25.1.0.dev2024122505 release - - max-python >=25.1.0.dev2024122505,<26.0a0 - - mojo-jupyter ==25.1.0.dev2024122505 release - - mblack ==25.1.0.dev2024122505 release + url: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122605-release.conda + sha256: e26e3e71125ec70957b2ac651fee9c4ba182eea8d34a9dbe1212a7725c1e8128 + md5: 99c833210594028dd43a4cb39bb8af54 + depends: + - max-core ==25.1.0.dev2024122605 release + - max-python >=25.1.0.dev2024122605,<26.0a0 + - mojo-jupyter ==25.1.0.dev2024122605 release + - mblack ==25.1.0.dev2024122605 release license: LicenseRef-Modular-Proprietary - size: 9918 - timestamp: 1735104162221 + size: 9916 + timestamp: 1735190248444 - kind: conda name: max-core - version: 25.1.0.dev2024122505 + version: 25.1.0.dev2024122605 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024122505-release.conda - sha256: a3badee77074c8b66aa36c8e8d582f36e3f2d8ce05088623e79fa3bef3e12101 - md5: f633695f4323543ca6748d2f881c31d8 + url: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024122605-release.conda + sha256: fa5be2b2c2e3de51640e7f6b2bf490ca351739982ce349d92ed3e8bc1632d629 + md5: 549dbd3055f80dd69b920c09e35ead41 depends: - - mblack ==25.1.0.dev2024122505 release + - mblack ==25.1.0.dev2024122605 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 245711364 - timestamp: 1735103963145 + size: 245455479 + timestamp: 1735190248443 - kind: conda name: max-core - version: 25.1.0.dev2024122505 + version: 25.1.0.dev2024122605 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024122505-release.conda - sha256: 4f877781e609d37f1163f9836f00f98198479a56e3d1765c00f57172100a9b11 - md5: 1b7b0d38f533662c5386e71d249b2c77 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024122605-release.conda + sha256: 6f7dcbcda52ff67b3ead85dfe979597ad4fb51bb755641c70dc8b2d182808283 + md5: 0e596d0aa43c0c260ec4157253ab4bdc depends: - - mblack ==25.1.0.dev2024122505 release + - mblack ==25.1.0.dev2024122605 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 249584655 - timestamp: 1735104162219 + size: 249331722 + timestamp: 1735190238128 - kind: conda name: max-core - version: 25.1.0.dev2024122505 + version: 25.1.0.dev2024122605 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024122505-release.conda - sha256: dc241547bcc99cee9bafb2571d08ab687eb4bd66cd05800ac9a9f23613ea9525 - md5: 2d6dfc974dc4fab4fe6c099f5b7b4143 + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024122605-release.conda + sha256: 7f93e1d6a06cb197702841135bcf052a157db6778b9f0c07561f82ac07851951 + md5: f68ed248c3950a4fc82b576a5760f723 depends: - - mblack ==25.1.0.dev2024122505 release + - mblack ==25.1.0.dev2024122605 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 214227862 - timestamp: 1735104051652 + size: 214151967 + timestamp: 1735192563676 - kind: conda name: max-python - version: 25.1.0.dev2024122505 + version: 25.1.0.dev2024122605 build: 3.12release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024122505-3.12release.conda - sha256: 4d899d4b5ed3428c226daca01396306023e833cafe659e6f371179b4f8448e17 - md5: 7501e0b5af7bcb9ef802a245956fd649 + url: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024122605-3.12release.conda + sha256: 37f3abf17b713ed888bbb6bb534801c4b141f9da3a7ca9a690bffbfd361d2053 + md5: 1344cafc7fe5f236f4989356912d4533 depends: - - max-core ==25.1.0.dev2024122505 release + - max-core ==25.1.0.dev2024122605 release - python 3.12.* - fastapi - httpx @@ -7763,18 +7763,18 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 122861701 - timestamp: 1735103963154 + size: 122798599 + timestamp: 1735190248451 - kind: conda name: max-python - version: 25.1.0.dev2024122505 + version: 25.1.0.dev2024122605 build: 3.12release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024122505-3.12release.conda - sha256: 0d010401f960cc0b7d0d6346f98e61f3d81754d90349f31cfb599fb1f393fc3d - md5: cb6713b913436eb5cf069ffc2dbf2e14 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024122605-3.12release.conda + sha256: 3cd3a2e836b5c7c9c22e04e1f452d7d476999a4ff7e8f096379b88cec9ce9452 + md5: 80296d454fd036ce473d6a3bd3e6501d depends: - - max-core ==25.1.0.dev2024122505 release + - max-core ==25.1.0.dev2024122605 release - python 3.12.* - fastapi - httpx @@ -7797,18 +7797,18 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 126543466 - timestamp: 1735104162230 + size: 126472950 + timestamp: 1735190238138 - kind: conda name: max-python - version: 25.1.0.dev2024122505 + version: 25.1.0.dev2024122605 build: 3.12release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024122505-3.12release.conda - sha256: 586bf6650d0ef68e85fae844737b18f3f74cd846f8d6ffa2b2a247cee1c18bfd - md5: 05cd9bdaff9bf46c79ee21e44273a8c1 + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024122605-3.12release.conda + sha256: 4cc94c09b26b640a12292727a98f31fd2a72e6c635c02595e0adf7297d0bdea6 + md5: 1758e3b7dea3d0dbf0ecab55341be24f depends: - - max-core ==25.1.0.dev2024122505 release + - max-core ==25.1.0.dev2024122605 release - python 3.12.* - fastapi - httpx @@ -7831,17 +7831,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 113429767 - timestamp: 1735104051655 + size: 113427237 + timestamp: 1735192563679 - kind: conda name: mblack - version: 25.1.0.dev2024122505 + version: 25.1.0.dev2024122605 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122505-release.conda - sha256: 7ec5547ca5b6f4a7f169dfbf60ac827f7c7ca6abee21a6b70c6a65a03e8f951c - md5: 7f56bdf07679feb4648b2ed20c711f44 + url: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122605-release.conda + sha256: 5b0b3833010934f9de78f86a56ff597a8d60f99c134595a5e68cdf09db991158 + md5: e7f487bd03b1d709f9c3b0837a15ef23 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -7851,8 +7851,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130803 - timestamp: 1735104162225 + size: 130799 + timestamp: 1735190248448 - kind: conda name: mdurl version: 0.1.2 @@ -7871,21 +7871,21 @@ packages: timestamp: 1733255681319 - kind: conda name: mojo-jupyter - version: 25.1.0.dev2024122505 + version: 25.1.0.dev2024122605 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122505-release.conda - sha256: 596f48156650da6cc09b489ccdcd1532c982f37a61da16d5cea96b8c0b2b2a41 - md5: 3e9b1b3897e6044c6c3ce6a962818c12 + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122605-release.conda + sha256: e6252f113f976d0247d33170b6a7116a38d1fecbd56f9d03b2ddae8353befb7d + md5: 16754e1b5992db2b6ba29a0b6c2f38ea depends: - - max-core ==25.1.0.dev2024122505 release + - max-core ==25.1.0.dev2024122605 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22942 - timestamp: 1735104162226 + size: 22939 + timestamp: 1735190248449 - kind: conda name: mpg123 version: 1.32.9 @@ -10603,20 +10603,20 @@ packages: timestamp: 1733244175724 - kind: conda name: sse-starlette - version: 2.2.0 + version: 2.2.1 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.2.0-pyhd8ed1ab_0.conda - sha256: 0c1d5ae5493d0ad7a5d8906230e3e0fb4ecaf0f4fabf57377200dd640e1b6f6a - md5: b0d012dd070ade4c4a7c395104caecc1 + url: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.2.1-pyhd8ed1ab_0.conda + sha256: 3c6a476e7afb702d841e23c61a0c4cc491929d2e39376d329e67e94c40a236cc + md5: c1ef6bc13dd2caa4b406fb3cb06c2791 depends: - anyio >=4.7.0 - python >=3.9 - starlette >=0.41.3 license: BSD-3-Clause - size: 15307 - timestamp: 1734870191367 + size: 15324 + timestamp: 1735126414893 - kind: conda name: starlette version: 0.41.3 diff --git a/examples/magic.lock b/examples/magic.lock index ce8cc93404..33ef6daaf5 100644 --- a/examples/magic.lock +++ b/examples/magic.lock @@ -131,12 +131,12 @@ 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-25.1.0.dev2024122505-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024122505-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024122505-3.11release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122605-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024122605-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024122605-3.11release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122605-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-25.1.0.dev2024122505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122605-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 @@ -193,7 +193,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-h8bd8927_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.21.0-py311h182c674_0.conda @@ -349,12 +349,12 @@ 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-25.1.0.dev2024122505-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024122505-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024122505-3.11release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122605-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024122605-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024122605-3.11release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122605-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-25.1.0.dev2024122505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122605-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 @@ -411,7 +411,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-hd4fb6f5_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.21.0-py311h5e37e04_0.conda @@ -558,12 +558,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-25.1.0.dev2024122505-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024122505-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024122505-3.11release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122605-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024122605-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024122605-3.11release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122605-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-25.1.0.dev2024122505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122605-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 @@ -619,7 +619,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-h98b9ce2_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.21.0-py311h82b0fb8_0.conda @@ -5892,76 +5892,76 @@ packages: timestamp: 1733220925299 - kind: conda name: max - version: 25.1.0.dev2024122505 + version: 25.1.0.dev2024122605 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122505-release.conda - sha256: be85c495a7aa74b46b5d2a5618bedc0f9c32f072e2798cca020f4c7c7702cdba - md5: 363f393bb2de03dcbaa2f481c89b373d - depends: - - max-core ==25.1.0.dev2024122505 release - - max-python >=25.1.0.dev2024122505,<26.0a0 - - mojo-jupyter ==25.1.0.dev2024122505 release - - mblack ==25.1.0.dev2024122505 release + url: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122605-release.conda + sha256: e26e3e71125ec70957b2ac651fee9c4ba182eea8d34a9dbe1212a7725c1e8128 + md5: 99c833210594028dd43a4cb39bb8af54 + depends: + - max-core ==25.1.0.dev2024122605 release + - max-python >=25.1.0.dev2024122605,<26.0a0 + - mojo-jupyter ==25.1.0.dev2024122605 release + - mblack ==25.1.0.dev2024122605 release license: LicenseRef-Modular-Proprietary - size: 9918 - timestamp: 1735104162221 + size: 9916 + timestamp: 1735190248444 - kind: conda name: max-core - version: 25.1.0.dev2024122505 + version: 25.1.0.dev2024122605 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024122505-release.conda - sha256: a3badee77074c8b66aa36c8e8d582f36e3f2d8ce05088623e79fa3bef3e12101 - md5: f633695f4323543ca6748d2f881c31d8 + url: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024122605-release.conda + sha256: fa5be2b2c2e3de51640e7f6b2bf490ca351739982ce349d92ed3e8bc1632d629 + md5: 549dbd3055f80dd69b920c09e35ead41 depends: - - mblack ==25.1.0.dev2024122505 release + - mblack ==25.1.0.dev2024122605 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 245711364 - timestamp: 1735103963145 + size: 245455479 + timestamp: 1735190248443 - kind: conda name: max-core - version: 25.1.0.dev2024122505 + version: 25.1.0.dev2024122605 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024122505-release.conda - sha256: 4f877781e609d37f1163f9836f00f98198479a56e3d1765c00f57172100a9b11 - md5: 1b7b0d38f533662c5386e71d249b2c77 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024122605-release.conda + sha256: 6f7dcbcda52ff67b3ead85dfe979597ad4fb51bb755641c70dc8b2d182808283 + md5: 0e596d0aa43c0c260ec4157253ab4bdc depends: - - mblack ==25.1.0.dev2024122505 release + - mblack ==25.1.0.dev2024122605 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 249584655 - timestamp: 1735104162219 + size: 249331722 + timestamp: 1735190238128 - kind: conda name: max-core - version: 25.1.0.dev2024122505 + version: 25.1.0.dev2024122605 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024122505-release.conda - sha256: dc241547bcc99cee9bafb2571d08ab687eb4bd66cd05800ac9a9f23613ea9525 - md5: 2d6dfc974dc4fab4fe6c099f5b7b4143 + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024122605-release.conda + sha256: 7f93e1d6a06cb197702841135bcf052a157db6778b9f0c07561f82ac07851951 + md5: f68ed248c3950a4fc82b576a5760f723 depends: - - mblack ==25.1.0.dev2024122505 release + - mblack ==25.1.0.dev2024122605 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 214227862 - timestamp: 1735104051652 + size: 214151967 + timestamp: 1735192563676 - kind: conda name: max-python - version: 25.1.0.dev2024122505 + version: 25.1.0.dev2024122605 build: 3.11release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024122505-3.11release.conda - sha256: 5f4632c6929789175e6f263e0a0ac95bf43838b4e5362d6f514143762cd1eedf - md5: f387a7713ddf3db08696b07e496f8082 + url: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024122605-3.11release.conda + sha256: e577fc0c1e912cd5f62da5312ed9a50bab4d419387a65f113d5a52f33f730fd6 + md5: 52bbf242c09bd1231f9a1c9e7bc96fdc depends: - - max-core ==25.1.0.dev2024122505 release + - max-core ==25.1.0.dev2024122605 release - python 3.11.* - fastapi - httpx @@ -5984,18 +5984,18 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 122884498 - timestamp: 1735103963152 + size: 122822038 + timestamp: 1735190248449 - kind: conda name: max-python - version: 25.1.0.dev2024122505 + version: 25.1.0.dev2024122605 build: 3.11release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024122505-3.11release.conda - sha256: 5c918868e85f1a3291706699932e4d6e22f26592b56150a7af001c1eda25f2bd - md5: 24d5b77caaa410cedc23971990710276 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024122605-3.11release.conda + sha256: 4d83f403d103d0b595a99451c4e22ebceeb52f49e9769ae2bcc657677eff272a + md5: 253de68ea5c6491d39b8f8089c840c3b depends: - - max-core ==25.1.0.dev2024122505 release + - max-core ==25.1.0.dev2024122605 release - python 3.11.* - fastapi - httpx @@ -6018,18 +6018,18 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 126542671 - timestamp: 1735104162227 + size: 126482216 + timestamp: 1735190238135 - kind: conda name: max-python - version: 25.1.0.dev2024122505 + version: 25.1.0.dev2024122605 build: 3.11release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024122505-3.11release.conda - sha256: 5cdb49d3a650cacfe1122a60cc0ccda5f48c591c1a3a6324370e2b3a8ad8544b - md5: e31555c7cb0ee82c57a644331829c952 + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024122605-3.11release.conda + sha256: 28b57116d95e9d746532758f2a8735564d6b3f74322d635a80f53594f58fb896 + md5: addd87b077d926d26721708746733f4e depends: - - max-core ==25.1.0.dev2024122505 release + - max-core ==25.1.0.dev2024122605 release - python 3.11.* - fastapi - httpx @@ -6052,17 +6052,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 113488067 - timestamp: 1735104051654 + size: 113449494 + timestamp: 1735192563678 - kind: conda name: mblack - version: 25.1.0.dev2024122505 + version: 25.1.0.dev2024122605 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122505-release.conda - sha256: 7ec5547ca5b6f4a7f169dfbf60ac827f7c7ca6abee21a6b70c6a65a03e8f951c - md5: 7f56bdf07679feb4648b2ed20c711f44 + url: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122605-release.conda + sha256: 5b0b3833010934f9de78f86a56ff597a8d60f99c134595a5e68cdf09db991158 + md5: e7f487bd03b1d709f9c3b0837a15ef23 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -6072,8 +6072,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130803 - timestamp: 1735104162225 + size: 130799 + timestamp: 1735190248448 - kind: conda name: mdurl version: 0.1.2 @@ -6092,21 +6092,21 @@ packages: timestamp: 1733255681319 - kind: conda name: mojo-jupyter - version: 25.1.0.dev2024122505 + version: 25.1.0.dev2024122605 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122505-release.conda - sha256: 596f48156650da6cc09b489ccdcd1532c982f37a61da16d5cea96b8c0b2b2a41 - md5: 3e9b1b3897e6044c6c3ce6a962818c12 + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122605-release.conda + sha256: e6252f113f976d0247d33170b6a7116a38d1fecbd56f9d03b2ddae8353befb7d + md5: 16754e1b5992db2b6ba29a0b6c2f38ea depends: - - max-core ==25.1.0.dev2024122505 release + - max-core ==25.1.0.dev2024122605 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22942 - timestamp: 1735104162226 + size: 22939 + timestamp: 1735190248449 - kind: conda name: multidict version: 6.1.0 @@ -8123,20 +8123,20 @@ packages: timestamp: 1733244175724 - kind: conda name: sse-starlette - version: 2.2.0 + version: 2.2.1 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.2.0-pyhd8ed1ab_0.conda - sha256: 0c1d5ae5493d0ad7a5d8906230e3e0fb4ecaf0f4fabf57377200dd640e1b6f6a - md5: b0d012dd070ade4c4a7c395104caecc1 + url: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.2.1-pyhd8ed1ab_0.conda + sha256: 3c6a476e7afb702d841e23c61a0c4cc491929d2e39376d329e67e94c40a236cc + md5: c1ef6bc13dd2caa4b406fb3cb06c2791 depends: - anyio >=4.7.0 - python >=3.9 - starlette >=0.41.3 license: BSD-3-Clause - size: 15307 - timestamp: 1734870191367 + size: 15324 + timestamp: 1735126414893 - kind: conda name: starlette version: 0.41.3 diff --git a/examples/notebooks/magic.lock b/examples/notebooks/magic.lock index 12fdefc7b4..ea73f94295 100644 --- a/examples/notebooks/magic.lock +++ b/examples/notebooks/magic.lock @@ -166,13 +166,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/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-25.1.0.dev2024122505-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024122505-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024122505-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122605-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024122605-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024122605-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122605-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-25.1.0.dev2024122505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122605-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 @@ -253,7 +253,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-h8bd8927_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.5-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh0d859eb_0.conda @@ -456,13 +456,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/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-25.1.0.dev2024122505-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024122505-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024122505-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122605-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024122605-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024122605-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122605-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-25.1.0.dev2024122505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122605-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 @@ -543,7 +543,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-hd4fb6f5_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.5-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh0d859eb_0.conda @@ -738,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-25.1.0.dev2024122505-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024122505-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024122505-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122605-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024122605-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024122605-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122605-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-25.1.0.dev2024122505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122605-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 @@ -826,7 +826,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-h98b9ce2_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.5-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh31c8845_0.conda @@ -6939,76 +6939,76 @@ packages: timestamp: 1733417051523 - kind: conda name: max - version: 25.1.0.dev2024122505 + version: 25.1.0.dev2024122605 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122505-release.conda - sha256: be85c495a7aa74b46b5d2a5618bedc0f9c32f072e2798cca020f4c7c7702cdba - md5: 363f393bb2de03dcbaa2f481c89b373d + url: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122605-release.conda + sha256: e26e3e71125ec70957b2ac651fee9c4ba182eea8d34a9dbe1212a7725c1e8128 + md5: 99c833210594028dd43a4cb39bb8af54 depends: - - max-core ==25.1.0.dev2024122505 release - - max-python >=25.1.0.dev2024122505,<26.0a0 - - mojo-jupyter ==25.1.0.dev2024122505 release - - mblack ==25.1.0.dev2024122505 release + - max-core ==25.1.0.dev2024122605 release + - max-python >=25.1.0.dev2024122605,<26.0a0 + - mojo-jupyter ==25.1.0.dev2024122605 release + - mblack ==25.1.0.dev2024122605 release license: LicenseRef-Modular-Proprietary - size: 9918 - timestamp: 1735104162221 + size: 9916 + timestamp: 1735190248444 - kind: conda name: max-core - version: 25.1.0.dev2024122505 + version: 25.1.0.dev2024122605 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024122505-release.conda - sha256: a3badee77074c8b66aa36c8e8d582f36e3f2d8ce05088623e79fa3bef3e12101 - md5: f633695f4323543ca6748d2f881c31d8 + url: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024122605-release.conda + sha256: fa5be2b2c2e3de51640e7f6b2bf490ca351739982ce349d92ed3e8bc1632d629 + md5: 549dbd3055f80dd69b920c09e35ead41 depends: - - mblack ==25.1.0.dev2024122505 release + - mblack ==25.1.0.dev2024122605 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 245711364 - timestamp: 1735103963145 + size: 245455479 + timestamp: 1735190248443 - kind: conda name: max-core - version: 25.1.0.dev2024122505 + version: 25.1.0.dev2024122605 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024122505-release.conda - sha256: 4f877781e609d37f1163f9836f00f98198479a56e3d1765c00f57172100a9b11 - md5: 1b7b0d38f533662c5386e71d249b2c77 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024122605-release.conda + sha256: 6f7dcbcda52ff67b3ead85dfe979597ad4fb51bb755641c70dc8b2d182808283 + md5: 0e596d0aa43c0c260ec4157253ab4bdc depends: - - mblack ==25.1.0.dev2024122505 release + - mblack ==25.1.0.dev2024122605 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 249584655 - timestamp: 1735104162219 + size: 249331722 + timestamp: 1735190238128 - kind: conda name: max-core - version: 25.1.0.dev2024122505 + version: 25.1.0.dev2024122605 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024122505-release.conda - sha256: dc241547bcc99cee9bafb2571d08ab687eb4bd66cd05800ac9a9f23613ea9525 - md5: 2d6dfc974dc4fab4fe6c099f5b7b4143 + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024122605-release.conda + sha256: 7f93e1d6a06cb197702841135bcf052a157db6778b9f0c07561f82ac07851951 + md5: f68ed248c3950a4fc82b576a5760f723 depends: - - mblack ==25.1.0.dev2024122505 release + - mblack ==25.1.0.dev2024122605 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 214227862 - timestamp: 1735104051652 + size: 214151967 + timestamp: 1735192563676 - kind: conda name: max-python - version: 25.1.0.dev2024122505 + version: 25.1.0.dev2024122605 build: 3.12release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024122505-3.12release.conda - sha256: 4d899d4b5ed3428c226daca01396306023e833cafe659e6f371179b4f8448e17 - md5: 7501e0b5af7bcb9ef802a245956fd649 + url: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024122605-3.12release.conda + sha256: 37f3abf17b713ed888bbb6bb534801c4b141f9da3a7ca9a690bffbfd361d2053 + md5: 1344cafc7fe5f236f4989356912d4533 depends: - - max-core ==25.1.0.dev2024122505 release + - max-core ==25.1.0.dev2024122605 release - python 3.12.* - fastapi - httpx @@ -7031,18 +7031,18 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 122861701 - timestamp: 1735103963154 + size: 122798599 + timestamp: 1735190248451 - kind: conda name: max-python - version: 25.1.0.dev2024122505 + version: 25.1.0.dev2024122605 build: 3.12release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024122505-3.12release.conda - sha256: 0d010401f960cc0b7d0d6346f98e61f3d81754d90349f31cfb599fb1f393fc3d - md5: cb6713b913436eb5cf069ffc2dbf2e14 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024122605-3.12release.conda + sha256: 3cd3a2e836b5c7c9c22e04e1f452d7d476999a4ff7e8f096379b88cec9ce9452 + md5: 80296d454fd036ce473d6a3bd3e6501d depends: - - max-core ==25.1.0.dev2024122505 release + - max-core ==25.1.0.dev2024122605 release - python 3.12.* - fastapi - httpx @@ -7065,18 +7065,18 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 126543466 - timestamp: 1735104162230 + size: 126472950 + timestamp: 1735190238138 - kind: conda name: max-python - version: 25.1.0.dev2024122505 + version: 25.1.0.dev2024122605 build: 3.12release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024122505-3.12release.conda - sha256: 586bf6650d0ef68e85fae844737b18f3f74cd846f8d6ffa2b2a247cee1c18bfd - md5: 05cd9bdaff9bf46c79ee21e44273a8c1 + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024122605-3.12release.conda + sha256: 4cc94c09b26b640a12292727a98f31fd2a72e6c635c02595e0adf7297d0bdea6 + md5: 1758e3b7dea3d0dbf0ecab55341be24f depends: - - max-core ==25.1.0.dev2024122505 release + - max-core ==25.1.0.dev2024122605 release - python 3.12.* - fastapi - httpx @@ -7099,17 +7099,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 113429767 - timestamp: 1735104051655 + size: 113427237 + timestamp: 1735192563679 - kind: conda name: mblack - version: 25.1.0.dev2024122505 + version: 25.1.0.dev2024122605 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122505-release.conda - sha256: 7ec5547ca5b6f4a7f169dfbf60ac827f7c7ca6abee21a6b70c6a65a03e8f951c - md5: 7f56bdf07679feb4648b2ed20c711f44 + url: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122605-release.conda + sha256: 5b0b3833010934f9de78f86a56ff597a8d60f99c134595a5e68cdf09db991158 + md5: e7f487bd03b1d709f9c3b0837a15ef23 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -7119,8 +7119,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130803 - timestamp: 1735104162225 + size: 130799 + timestamp: 1735190248448 - kind: conda name: mdurl version: 0.1.2 @@ -7155,21 +7155,21 @@ packages: timestamp: 1733258822603 - kind: conda name: mojo-jupyter - version: 25.1.0.dev2024122505 + version: 25.1.0.dev2024122605 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122505-release.conda - sha256: 596f48156650da6cc09b489ccdcd1532c982f37a61da16d5cea96b8c0b2b2a41 - md5: 3e9b1b3897e6044c6c3ce6a962818c12 + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122605-release.conda + sha256: e6252f113f976d0247d33170b6a7116a38d1fecbd56f9d03b2ddae8353befb7d + md5: 16754e1b5992db2b6ba29a0b6c2f38ea depends: - - max-core ==25.1.0.dev2024122505 release + - max-core ==25.1.0.dev2024122605 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22942 - timestamp: 1735104162226 + size: 22939 + timestamp: 1735190248449 - kind: conda name: multidict version: 6.1.0 @@ -9730,20 +9730,20 @@ packages: timestamp: 1693929424267 - kind: conda name: sse-starlette - version: 2.2.0 + version: 2.2.1 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.2.0-pyhd8ed1ab_0.conda - sha256: 0c1d5ae5493d0ad7a5d8906230e3e0fb4ecaf0f4fabf57377200dd640e1b6f6a - md5: b0d012dd070ade4c4a7c395104caecc1 + url: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.2.1-pyhd8ed1ab_0.conda + sha256: 3c6a476e7afb702d841e23c61a0c4cc491929d2e39376d329e67e94c40a236cc + md5: c1ef6bc13dd2caa4b406fb3cb06c2791 depends: - anyio >=4.7.0 - python >=3.9 - starlette >=0.41.3 license: BSD-3-Clause - size: 15307 - timestamp: 1734870191367 + size: 15324 + timestamp: 1735126414893 - kind: conda name: stack_data version: 0.6.3 diff --git a/examples/operators/magic.lock b/examples/operators/magic.lock index 5ea9c23cb5..b5134ca512 100644 --- a/examples/operators/magic.lock +++ b/examples/operators/magic.lock @@ -131,12 +131,12 @@ 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-25.1.0.dev2024122505-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024122505-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024122505-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122605-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024122605-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024122605-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122605-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-25.1.0.dev2024122505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122605-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 @@ -193,7 +193,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-h8bd8927_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.21.0-py312h8360d73_0.conda @@ -349,12 +349,12 @@ 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-25.1.0.dev2024122505-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024122505-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024122505-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122605-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024122605-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024122605-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122605-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-25.1.0.dev2024122505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122605-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 @@ -411,7 +411,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-hd4fb6f5_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.21.0-py312ha0d6ea1_0.conda @@ -558,12 +558,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-25.1.0.dev2024122505-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024122505-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024122505-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122605-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024122605-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024122605-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122605-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-25.1.0.dev2024122505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122605-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 @@ -619,7 +619,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-h98b9ce2_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.21.0-py312hf3e4074_0.conda @@ -5892,76 +5892,76 @@ packages: timestamp: 1733219945697 - kind: conda name: max - version: 25.1.0.dev2024122505 + version: 25.1.0.dev2024122605 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122505-release.conda - sha256: be85c495a7aa74b46b5d2a5618bedc0f9c32f072e2798cca020f4c7c7702cdba - md5: 363f393bb2de03dcbaa2f481c89b373d - depends: - - max-core ==25.1.0.dev2024122505 release - - max-python >=25.1.0.dev2024122505,<26.0a0 - - mojo-jupyter ==25.1.0.dev2024122505 release - - mblack ==25.1.0.dev2024122505 release + url: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122605-release.conda + sha256: e26e3e71125ec70957b2ac651fee9c4ba182eea8d34a9dbe1212a7725c1e8128 + md5: 99c833210594028dd43a4cb39bb8af54 + depends: + - max-core ==25.1.0.dev2024122605 release + - max-python >=25.1.0.dev2024122605,<26.0a0 + - mojo-jupyter ==25.1.0.dev2024122605 release + - mblack ==25.1.0.dev2024122605 release license: LicenseRef-Modular-Proprietary - size: 9918 - timestamp: 1735104162221 + size: 9916 + timestamp: 1735190248444 - kind: conda name: max-core - version: 25.1.0.dev2024122505 + version: 25.1.0.dev2024122605 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024122505-release.conda - sha256: a3badee77074c8b66aa36c8e8d582f36e3f2d8ce05088623e79fa3bef3e12101 - md5: f633695f4323543ca6748d2f881c31d8 + url: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024122605-release.conda + sha256: fa5be2b2c2e3de51640e7f6b2bf490ca351739982ce349d92ed3e8bc1632d629 + md5: 549dbd3055f80dd69b920c09e35ead41 depends: - - mblack ==25.1.0.dev2024122505 release + - mblack ==25.1.0.dev2024122605 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 245711364 - timestamp: 1735103963145 + size: 245455479 + timestamp: 1735190248443 - kind: conda name: max-core - version: 25.1.0.dev2024122505 + version: 25.1.0.dev2024122605 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024122505-release.conda - sha256: 4f877781e609d37f1163f9836f00f98198479a56e3d1765c00f57172100a9b11 - md5: 1b7b0d38f533662c5386e71d249b2c77 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024122605-release.conda + sha256: 6f7dcbcda52ff67b3ead85dfe979597ad4fb51bb755641c70dc8b2d182808283 + md5: 0e596d0aa43c0c260ec4157253ab4bdc depends: - - mblack ==25.1.0.dev2024122505 release + - mblack ==25.1.0.dev2024122605 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 249584655 - timestamp: 1735104162219 + size: 249331722 + timestamp: 1735190238128 - kind: conda name: max-core - version: 25.1.0.dev2024122505 + version: 25.1.0.dev2024122605 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024122505-release.conda - sha256: dc241547bcc99cee9bafb2571d08ab687eb4bd66cd05800ac9a9f23613ea9525 - md5: 2d6dfc974dc4fab4fe6c099f5b7b4143 + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024122605-release.conda + sha256: 7f93e1d6a06cb197702841135bcf052a157db6778b9f0c07561f82ac07851951 + md5: f68ed248c3950a4fc82b576a5760f723 depends: - - mblack ==25.1.0.dev2024122505 release + - mblack ==25.1.0.dev2024122605 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 214227862 - timestamp: 1735104051652 + size: 214151967 + timestamp: 1735192563676 - kind: conda name: max-python - version: 25.1.0.dev2024122505 + version: 25.1.0.dev2024122605 build: 3.12release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024122505-3.12release.conda - sha256: 4d899d4b5ed3428c226daca01396306023e833cafe659e6f371179b4f8448e17 - md5: 7501e0b5af7bcb9ef802a245956fd649 + url: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024122605-3.12release.conda + sha256: 37f3abf17b713ed888bbb6bb534801c4b141f9da3a7ca9a690bffbfd361d2053 + md5: 1344cafc7fe5f236f4989356912d4533 depends: - - max-core ==25.1.0.dev2024122505 release + - max-core ==25.1.0.dev2024122605 release - python 3.12.* - fastapi - httpx @@ -5984,18 +5984,18 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 122861701 - timestamp: 1735103963154 + size: 122798599 + timestamp: 1735190248451 - kind: conda name: max-python - version: 25.1.0.dev2024122505 + version: 25.1.0.dev2024122605 build: 3.12release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024122505-3.12release.conda - sha256: 0d010401f960cc0b7d0d6346f98e61f3d81754d90349f31cfb599fb1f393fc3d - md5: cb6713b913436eb5cf069ffc2dbf2e14 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024122605-3.12release.conda + sha256: 3cd3a2e836b5c7c9c22e04e1f452d7d476999a4ff7e8f096379b88cec9ce9452 + md5: 80296d454fd036ce473d6a3bd3e6501d depends: - - max-core ==25.1.0.dev2024122505 release + - max-core ==25.1.0.dev2024122605 release - python 3.12.* - fastapi - httpx @@ -6018,18 +6018,18 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 126543466 - timestamp: 1735104162230 + size: 126472950 + timestamp: 1735190238138 - kind: conda name: max-python - version: 25.1.0.dev2024122505 + version: 25.1.0.dev2024122605 build: 3.12release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024122505-3.12release.conda - sha256: 586bf6650d0ef68e85fae844737b18f3f74cd846f8d6ffa2b2a247cee1c18bfd - md5: 05cd9bdaff9bf46c79ee21e44273a8c1 + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024122605-3.12release.conda + sha256: 4cc94c09b26b640a12292727a98f31fd2a72e6c635c02595e0adf7297d0bdea6 + md5: 1758e3b7dea3d0dbf0ecab55341be24f depends: - - max-core ==25.1.0.dev2024122505 release + - max-core ==25.1.0.dev2024122605 release - python 3.12.* - fastapi - httpx @@ -6052,17 +6052,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 113429767 - timestamp: 1735104051655 + size: 113427237 + timestamp: 1735192563679 - kind: conda name: mblack - version: 25.1.0.dev2024122505 + version: 25.1.0.dev2024122605 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122505-release.conda - sha256: 7ec5547ca5b6f4a7f169dfbf60ac827f7c7ca6abee21a6b70c6a65a03e8f951c - md5: 7f56bdf07679feb4648b2ed20c711f44 + url: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122605-release.conda + sha256: 5b0b3833010934f9de78f86a56ff597a8d60f99c134595a5e68cdf09db991158 + md5: e7f487bd03b1d709f9c3b0837a15ef23 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -6072,8 +6072,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130803 - timestamp: 1735104162225 + size: 130799 + timestamp: 1735190248448 - kind: conda name: mdurl version: 0.1.2 @@ -6092,21 +6092,21 @@ packages: timestamp: 1733255681319 - kind: conda name: mojo-jupyter - version: 25.1.0.dev2024122505 + version: 25.1.0.dev2024122605 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122505-release.conda - sha256: 596f48156650da6cc09b489ccdcd1532c982f37a61da16d5cea96b8c0b2b2a41 - md5: 3e9b1b3897e6044c6c3ce6a962818c12 + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122605-release.conda + sha256: e6252f113f976d0247d33170b6a7116a38d1fecbd56f9d03b2ddae8353befb7d + md5: 16754e1b5992db2b6ba29a0b6c2f38ea depends: - - max-core ==25.1.0.dev2024122505 release + - max-core ==25.1.0.dev2024122605 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22942 - timestamp: 1735104162226 + size: 22939 + timestamp: 1735190248449 - kind: conda name: multidict version: 6.1.0 @@ -8123,20 +8123,20 @@ packages: timestamp: 1733244175724 - kind: conda name: sse-starlette - version: 2.2.0 + version: 2.2.1 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.2.0-pyhd8ed1ab_0.conda - sha256: 0c1d5ae5493d0ad7a5d8906230e3e0fb4ecaf0f4fabf57377200dd640e1b6f6a - md5: b0d012dd070ade4c4a7c395104caecc1 + url: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.2.1-pyhd8ed1ab_0.conda + sha256: 3c6a476e7afb702d841e23c61a0c4cc491929d2e39376d329e67e94c40a236cc + md5: c1ef6bc13dd2caa4b406fb3cb06c2791 depends: - anyio >=4.7.0 - python >=3.9 - starlette >=0.41.3 license: BSD-3-Clause - size: 15307 - timestamp: 1734870191367 + size: 15324 + timestamp: 1735126414893 - kind: conda name: starlette version: 0.41.3 diff --git a/magic.lock b/magic.lock index bbe31ce716..237a157c10 100644 --- a/magic.lock +++ b/magic.lock @@ -132,12 +132,12 @@ 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-25.1.0.dev2024122505-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024122505-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024122505-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122605-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024122605-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024122605-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122605-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-25.1.0.dev2024122505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122605-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 @@ -194,7 +194,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-h8bd8927_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.21.0-py312h8360d73_0.conda @@ -351,12 +351,12 @@ 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-25.1.0.dev2024122505-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024122505-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024122505-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122605-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024122605-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024122605-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122605-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-25.1.0.dev2024122505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122605-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 @@ -413,7 +413,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-hd4fb6f5_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.21.0-py312ha0d6ea1_0.conda @@ -561,12 +561,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-25.1.0.dev2024122505-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024122505-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024122505-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122605-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024122605-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024122605-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122605-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-25.1.0.dev2024122505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122605-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 @@ -622,7 +622,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-h98b9ce2_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.21.0-py312hf3e4074_0.conda @@ -5910,76 +5910,76 @@ packages: timestamp: 1733219945697 - kind: conda name: max - version: 25.1.0.dev2024122505 + version: 25.1.0.dev2024122605 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122505-release.conda - sha256: be85c495a7aa74b46b5d2a5618bedc0f9c32f072e2798cca020f4c7c7702cdba - md5: 363f393bb2de03dcbaa2f481c89b373d - depends: - - max-core ==25.1.0.dev2024122505 release - - max-python >=25.1.0.dev2024122505,<26.0a0 - - mojo-jupyter ==25.1.0.dev2024122505 release - - mblack ==25.1.0.dev2024122505 release + url: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122605-release.conda + sha256: e26e3e71125ec70957b2ac651fee9c4ba182eea8d34a9dbe1212a7725c1e8128 + md5: 99c833210594028dd43a4cb39bb8af54 + depends: + - max-core ==25.1.0.dev2024122605 release + - max-python >=25.1.0.dev2024122605,<26.0a0 + - mojo-jupyter ==25.1.0.dev2024122605 release + - mblack ==25.1.0.dev2024122605 release license: LicenseRef-Modular-Proprietary - size: 9918 - timestamp: 1735104162221 + size: 9916 + timestamp: 1735190248444 - kind: conda name: max-core - version: 25.1.0.dev2024122505 + version: 25.1.0.dev2024122605 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024122505-release.conda - sha256: a3badee77074c8b66aa36c8e8d582f36e3f2d8ce05088623e79fa3bef3e12101 - md5: f633695f4323543ca6748d2f881c31d8 + url: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024122605-release.conda + sha256: fa5be2b2c2e3de51640e7f6b2bf490ca351739982ce349d92ed3e8bc1632d629 + md5: 549dbd3055f80dd69b920c09e35ead41 depends: - - mblack ==25.1.0.dev2024122505 release + - mblack ==25.1.0.dev2024122605 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 245711364 - timestamp: 1735103963145 + size: 245455479 + timestamp: 1735190248443 - kind: conda name: max-core - version: 25.1.0.dev2024122505 + version: 25.1.0.dev2024122605 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024122505-release.conda - sha256: 4f877781e609d37f1163f9836f00f98198479a56e3d1765c00f57172100a9b11 - md5: 1b7b0d38f533662c5386e71d249b2c77 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024122605-release.conda + sha256: 6f7dcbcda52ff67b3ead85dfe979597ad4fb51bb755641c70dc8b2d182808283 + md5: 0e596d0aa43c0c260ec4157253ab4bdc depends: - - mblack ==25.1.0.dev2024122505 release + - mblack ==25.1.0.dev2024122605 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 249584655 - timestamp: 1735104162219 + size: 249331722 + timestamp: 1735190238128 - kind: conda name: max-core - version: 25.1.0.dev2024122505 + version: 25.1.0.dev2024122605 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024122505-release.conda - sha256: dc241547bcc99cee9bafb2571d08ab687eb4bd66cd05800ac9a9f23613ea9525 - md5: 2d6dfc974dc4fab4fe6c099f5b7b4143 + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024122605-release.conda + sha256: 7f93e1d6a06cb197702841135bcf052a157db6778b9f0c07561f82ac07851951 + md5: f68ed248c3950a4fc82b576a5760f723 depends: - - mblack ==25.1.0.dev2024122505 release + - mblack ==25.1.0.dev2024122605 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 214227862 - timestamp: 1735104051652 + size: 214151967 + timestamp: 1735192563676 - kind: conda name: max-python - version: 25.1.0.dev2024122505 + version: 25.1.0.dev2024122605 build: 3.12release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024122505-3.12release.conda - sha256: 4d899d4b5ed3428c226daca01396306023e833cafe659e6f371179b4f8448e17 - md5: 7501e0b5af7bcb9ef802a245956fd649 + url: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024122605-3.12release.conda + sha256: 37f3abf17b713ed888bbb6bb534801c4b141f9da3a7ca9a690bffbfd361d2053 + md5: 1344cafc7fe5f236f4989356912d4533 depends: - - max-core ==25.1.0.dev2024122505 release + - max-core ==25.1.0.dev2024122605 release - python 3.12.* - fastapi - httpx @@ -6002,18 +6002,18 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 122861701 - timestamp: 1735103963154 + size: 122798599 + timestamp: 1735190248451 - kind: conda name: max-python - version: 25.1.0.dev2024122505 + version: 25.1.0.dev2024122605 build: 3.12release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024122505-3.12release.conda - sha256: 0d010401f960cc0b7d0d6346f98e61f3d81754d90349f31cfb599fb1f393fc3d - md5: cb6713b913436eb5cf069ffc2dbf2e14 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024122605-3.12release.conda + sha256: 3cd3a2e836b5c7c9c22e04e1f452d7d476999a4ff7e8f096379b88cec9ce9452 + md5: 80296d454fd036ce473d6a3bd3e6501d depends: - - max-core ==25.1.0.dev2024122505 release + - max-core ==25.1.0.dev2024122605 release - python 3.12.* - fastapi - httpx @@ -6036,18 +6036,18 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 126543466 - timestamp: 1735104162230 + size: 126472950 + timestamp: 1735190238138 - kind: conda name: max-python - version: 25.1.0.dev2024122505 + version: 25.1.0.dev2024122605 build: 3.12release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024122505-3.12release.conda - sha256: 586bf6650d0ef68e85fae844737b18f3f74cd846f8d6ffa2b2a247cee1c18bfd - md5: 05cd9bdaff9bf46c79ee21e44273a8c1 + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024122605-3.12release.conda + sha256: 4cc94c09b26b640a12292727a98f31fd2a72e6c635c02595e0adf7297d0bdea6 + md5: 1758e3b7dea3d0dbf0ecab55341be24f depends: - - max-core ==25.1.0.dev2024122505 release + - max-core ==25.1.0.dev2024122605 release - python 3.12.* - fastapi - httpx @@ -6070,17 +6070,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 113429767 - timestamp: 1735104051655 + size: 113427237 + timestamp: 1735192563679 - kind: conda name: mblack - version: 25.1.0.dev2024122505 + version: 25.1.0.dev2024122605 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122505-release.conda - sha256: 7ec5547ca5b6f4a7f169dfbf60ac827f7c7ca6abee21a6b70c6a65a03e8f951c - md5: 7f56bdf07679feb4648b2ed20c711f44 + url: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122605-release.conda + sha256: 5b0b3833010934f9de78f86a56ff597a8d60f99c134595a5e68cdf09db991158 + md5: e7f487bd03b1d709f9c3b0837a15ef23 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -6090,8 +6090,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130803 - timestamp: 1735104162225 + size: 130799 + timestamp: 1735190248448 - kind: conda name: mdurl version: 0.1.2 @@ -6110,21 +6110,21 @@ packages: timestamp: 1733255681319 - kind: conda name: mojo-jupyter - version: 25.1.0.dev2024122505 + version: 25.1.0.dev2024122605 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122505-release.conda - sha256: 596f48156650da6cc09b489ccdcd1532c982f37a61da16d5cea96b8c0b2b2a41 - md5: 3e9b1b3897e6044c6c3ce6a962818c12 + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122605-release.conda + sha256: e6252f113f976d0247d33170b6a7116a38d1fecbd56f9d03b2ddae8353befb7d + md5: 16754e1b5992db2b6ba29a0b6c2f38ea depends: - - max-core ==25.1.0.dev2024122505 release + - max-core ==25.1.0.dev2024122605 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22942 - timestamp: 1735104162226 + size: 22939 + timestamp: 1735190248449 - kind: conda name: multidict version: 6.1.0 @@ -8141,20 +8141,20 @@ packages: timestamp: 1733244175724 - kind: conda name: sse-starlette - version: 2.2.0 + version: 2.2.1 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.2.0-pyhd8ed1ab_0.conda - sha256: 0c1d5ae5493d0ad7a5d8906230e3e0fb4ecaf0f4fabf57377200dd640e1b6f6a - md5: b0d012dd070ade4c4a7c395104caecc1 + url: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.2.1-pyhd8ed1ab_0.conda + sha256: 3c6a476e7afb702d841e23c61a0c4cc491929d2e39376d329e67e94c40a236cc + md5: c1ef6bc13dd2caa4b406fb3cb06c2791 depends: - anyio >=4.7.0 - python >=3.9 - starlette >=0.41.3 license: BSD-3-Clause - size: 15307 - timestamp: 1734870191367 + size: 15324 + timestamp: 1735126414893 - kind: conda name: starlette version: 0.41.3 From 105a2e9f42aa21bd266088759a4597d94bba6508 Mon Sep 17 00:00:00 2001 From: modularbot Date: Fri, 27 Dec 2024 07:10:28 +0000 Subject: [PATCH 145/509] Update lockfiles to point to latest nightly version: 25.1.0.dev2024122705 --- examples/life/magic.lock | 160 +++++++++++++++++----------------- examples/magic.lock | 160 +++++++++++++++++----------------- examples/notebooks/magic.lock | 158 ++++++++++++++++----------------- examples/operators/magic.lock | 160 +++++++++++++++++----------------- magic.lock | 160 +++++++++++++++++----------------- 5 files changed, 399 insertions(+), 399 deletions(-) diff --git a/examples/life/magic.lock b/examples/life/magic.lock index 93547f7467..88ec51f6c7 100644 --- a/examples/life/magic.lock +++ b/examples/life/magic.lock @@ -170,12 +170,12 @@ 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-25.1.0.dev2024122605-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024122605-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024122605-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024122705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024122705-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122705-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-25.1.0.dev2024122605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122705-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_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.15-py312h98912ed_1.conda @@ -446,12 +446,12 @@ 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-25.1.0.dev2024122605-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024122605-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024122605-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024122705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024122705-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122705-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-25.1.0.dev2024122605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122705-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_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.15-py312hdd3e373_1.conda @@ -705,12 +705,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-25.1.0.dev2024122605-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024122605-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024122605-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122705-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024122705-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024122705-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122705-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-25.1.0.dev2024122605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122705-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 @@ -7671,76 +7671,76 @@ packages: timestamp: 1733219945697 - kind: conda name: max - version: 25.1.0.dev2024122605 + version: 25.1.0.dev2024122705 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122605-release.conda - sha256: e26e3e71125ec70957b2ac651fee9c4ba182eea8d34a9dbe1212a7725c1e8128 - md5: 99c833210594028dd43a4cb39bb8af54 - depends: - - max-core ==25.1.0.dev2024122605 release - - max-python >=25.1.0.dev2024122605,<26.0a0 - - mojo-jupyter ==25.1.0.dev2024122605 release - - mblack ==25.1.0.dev2024122605 release + url: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122705-release.conda + sha256: 915cee0f8db3306792c7717e14f877276925d168b95f37e8b2e35416d1563920 + md5: 370a4e78ec709a5b4ac926f2229e961f + depends: + - max-core ==25.1.0.dev2024122705 release + - max-python >=25.1.0.dev2024122705,<26.0a0 + - mojo-jupyter ==25.1.0.dev2024122705 release + - mblack ==25.1.0.dev2024122705 release license: LicenseRef-Modular-Proprietary - size: 9916 - timestamp: 1735190248444 + size: 9908 + timestamp: 1735276646121 - kind: conda name: max-core - version: 25.1.0.dev2024122605 + version: 25.1.0.dev2024122705 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024122605-release.conda - sha256: fa5be2b2c2e3de51640e7f6b2bf490ca351739982ce349d92ed3e8bc1632d629 - md5: 549dbd3055f80dd69b920c09e35ead41 + url: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024122705-release.conda + sha256: 8bd565d34d7e04c5b2f0faef7139a6da9375a413ef7d78e410ad7ff8cb3ce88f + md5: 0888729c6e2dc47c60eea220d90ba7fb depends: - - mblack ==25.1.0.dev2024122605 release + - mblack ==25.1.0.dev2024122705 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 245455479 - timestamp: 1735190248443 + size: 245480850 + timestamp: 1735276702592 - kind: conda name: max-core - version: 25.1.0.dev2024122605 + version: 25.1.0.dev2024122705 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024122605-release.conda - sha256: 6f7dcbcda52ff67b3ead85dfe979597ad4fb51bb755641c70dc8b2d182808283 - md5: 0e596d0aa43c0c260ec4157253ab4bdc + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024122705-release.conda + sha256: bd8c74ee47bae57872fd40efec49df8d21fbb668d0f4ec777498c25103f7e89d + md5: 1c3e0517ec78b93c3d8a3562fd5ea1ac depends: - - mblack ==25.1.0.dev2024122605 release + - mblack ==25.1.0.dev2024122705 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 249331722 - timestamp: 1735190238128 + size: 249350600 + timestamp: 1735276646119 - kind: conda name: max-core - version: 25.1.0.dev2024122605 + version: 25.1.0.dev2024122705 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024122605-release.conda - sha256: 7f93e1d6a06cb197702841135bcf052a157db6778b9f0c07561f82ac07851951 - md5: f68ed248c3950a4fc82b576a5760f723 + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024122705-release.conda + sha256: 2199e4897952016704225b19fa193f11400d18b2d08054ec1a3e5d120578b12f + md5: 874a5f8b35e6cde2d10f978ae37de6b9 depends: - - mblack ==25.1.0.dev2024122605 release + - mblack ==25.1.0.dev2024122705 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 214151967 - timestamp: 1735192563676 + size: 214148461 + timestamp: 1735276875577 - kind: conda name: max-python - version: 25.1.0.dev2024122605 + version: 25.1.0.dev2024122705 build: 3.12release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024122605-3.12release.conda - sha256: 37f3abf17b713ed888bbb6bb534801c4b141f9da3a7ca9a690bffbfd361d2053 - md5: 1344cafc7fe5f236f4989356912d4533 + url: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024122705-3.12release.conda + sha256: 0754a230be7ae3df9427d9c851d2e2bebb99d4b04c9e8e87c0d4c4ad99a55517 + md5: 1f7f91b1e9b7a78b02f57922417b477a depends: - - max-core ==25.1.0.dev2024122605 release + - max-core ==25.1.0.dev2024122705 release - python 3.12.* - fastapi - httpx @@ -7763,18 +7763,18 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 122798599 - timestamp: 1735190248451 + size: 122815019 + timestamp: 1735276702602 - kind: conda name: max-python - version: 25.1.0.dev2024122605 + version: 25.1.0.dev2024122705 build: 3.12release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024122605-3.12release.conda - sha256: 3cd3a2e836b5c7c9c22e04e1f452d7d476999a4ff7e8f096379b88cec9ce9452 - md5: 80296d454fd036ce473d6a3bd3e6501d + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024122705-3.12release.conda + sha256: fc0638c821e95d39231b2912d21a7dcac06b27dbb74099970e12c72d6399d553 + md5: b610bbf33c17a6cd3803441969021e94 depends: - - max-core ==25.1.0.dev2024122605 release + - max-core ==25.1.0.dev2024122705 release - python 3.12.* - fastapi - httpx @@ -7797,18 +7797,18 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 126472950 - timestamp: 1735190238138 + size: 126488278 + timestamp: 1735276646129 - kind: conda name: max-python - version: 25.1.0.dev2024122605 + version: 25.1.0.dev2024122705 build: 3.12release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024122605-3.12release.conda - sha256: 4cc94c09b26b640a12292727a98f31fd2a72e6c635c02595e0adf7297d0bdea6 - md5: 1758e3b7dea3d0dbf0ecab55341be24f + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024122705-3.12release.conda + sha256: 5f9ebe2d2db72339a02af83e1b19d3b1654f29d7d27239696147863d8a3099ac + md5: a4f4dde5759c45b2b6ab4c63443df95e depends: - - max-core ==25.1.0.dev2024122605 release + - max-core ==25.1.0.dev2024122705 release - python 3.12.* - fastapi - httpx @@ -7831,17 +7831,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 113427237 - timestamp: 1735192563679 + size: 113438495 + timestamp: 1735276875580 - kind: conda name: mblack - version: 25.1.0.dev2024122605 + version: 25.1.0.dev2024122705 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122605-release.conda - sha256: 5b0b3833010934f9de78f86a56ff597a8d60f99c134595a5e68cdf09db991158 - md5: e7f487bd03b1d709f9c3b0837a15ef23 + url: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122705-release.conda + sha256: 438131b7a1a9eed7b667fe5a0b0c3a99b77276ab3fb31b0d2d9dfa88dc2ac06f + md5: 8f0828de9e2cbceb70e9573f4d44dcc0 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -7851,8 +7851,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130799 - timestamp: 1735190248448 + size: 130800 + timestamp: 1735276646126 - kind: conda name: mdurl version: 0.1.2 @@ -7871,21 +7871,21 @@ packages: timestamp: 1733255681319 - kind: conda name: mojo-jupyter - version: 25.1.0.dev2024122605 + version: 25.1.0.dev2024122705 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122605-release.conda - sha256: e6252f113f976d0247d33170b6a7116a38d1fecbd56f9d03b2ddae8353befb7d - md5: 16754e1b5992db2b6ba29a0b6c2f38ea + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122705-release.conda + sha256: 277c342ea4164d79ee7ac0923bb29dda0c5b7ae14f00ae15b7da0cbd8e2c3741 + md5: 912349d661371a646442b3fb995521a9 depends: - - max-core ==25.1.0.dev2024122605 release + - max-core ==25.1.0.dev2024122705 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary size: 22939 - timestamp: 1735190248449 + timestamp: 1735276646127 - kind: conda name: mpg123 version: 1.32.9 diff --git a/examples/magic.lock b/examples/magic.lock index 33ef6daaf5..f086ebc5b8 100644 --- a/examples/magic.lock +++ b/examples/magic.lock @@ -131,12 +131,12 @@ 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-25.1.0.dev2024122605-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024122605-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024122605-3.11release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024122705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024122705-3.11release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122705-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-25.1.0.dev2024122605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122705-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 @@ -349,12 +349,12 @@ 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-25.1.0.dev2024122605-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024122605-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024122605-3.11release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024122705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024122705-3.11release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122705-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-25.1.0.dev2024122605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122705-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 @@ -558,12 +558,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-25.1.0.dev2024122605-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024122605-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024122605-3.11release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122705-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024122705-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024122705-3.11release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122705-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-25.1.0.dev2024122605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122705-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 @@ -5892,76 +5892,76 @@ packages: timestamp: 1733220925299 - kind: conda name: max - version: 25.1.0.dev2024122605 + version: 25.1.0.dev2024122705 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122605-release.conda - sha256: e26e3e71125ec70957b2ac651fee9c4ba182eea8d34a9dbe1212a7725c1e8128 - md5: 99c833210594028dd43a4cb39bb8af54 - depends: - - max-core ==25.1.0.dev2024122605 release - - max-python >=25.1.0.dev2024122605,<26.0a0 - - mojo-jupyter ==25.1.0.dev2024122605 release - - mblack ==25.1.0.dev2024122605 release + url: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122705-release.conda + sha256: 915cee0f8db3306792c7717e14f877276925d168b95f37e8b2e35416d1563920 + md5: 370a4e78ec709a5b4ac926f2229e961f + depends: + - max-core ==25.1.0.dev2024122705 release + - max-python >=25.1.0.dev2024122705,<26.0a0 + - mojo-jupyter ==25.1.0.dev2024122705 release + - mblack ==25.1.0.dev2024122705 release license: LicenseRef-Modular-Proprietary - size: 9916 - timestamp: 1735190248444 + size: 9908 + timestamp: 1735276646121 - kind: conda name: max-core - version: 25.1.0.dev2024122605 + version: 25.1.0.dev2024122705 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024122605-release.conda - sha256: fa5be2b2c2e3de51640e7f6b2bf490ca351739982ce349d92ed3e8bc1632d629 - md5: 549dbd3055f80dd69b920c09e35ead41 + url: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024122705-release.conda + sha256: 8bd565d34d7e04c5b2f0faef7139a6da9375a413ef7d78e410ad7ff8cb3ce88f + md5: 0888729c6e2dc47c60eea220d90ba7fb depends: - - mblack ==25.1.0.dev2024122605 release + - mblack ==25.1.0.dev2024122705 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 245455479 - timestamp: 1735190248443 + size: 245480850 + timestamp: 1735276702592 - kind: conda name: max-core - version: 25.1.0.dev2024122605 + version: 25.1.0.dev2024122705 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024122605-release.conda - sha256: 6f7dcbcda52ff67b3ead85dfe979597ad4fb51bb755641c70dc8b2d182808283 - md5: 0e596d0aa43c0c260ec4157253ab4bdc + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024122705-release.conda + sha256: bd8c74ee47bae57872fd40efec49df8d21fbb668d0f4ec777498c25103f7e89d + md5: 1c3e0517ec78b93c3d8a3562fd5ea1ac depends: - - mblack ==25.1.0.dev2024122605 release + - mblack ==25.1.0.dev2024122705 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 249331722 - timestamp: 1735190238128 + size: 249350600 + timestamp: 1735276646119 - kind: conda name: max-core - version: 25.1.0.dev2024122605 + version: 25.1.0.dev2024122705 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024122605-release.conda - sha256: 7f93e1d6a06cb197702841135bcf052a157db6778b9f0c07561f82ac07851951 - md5: f68ed248c3950a4fc82b576a5760f723 + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024122705-release.conda + sha256: 2199e4897952016704225b19fa193f11400d18b2d08054ec1a3e5d120578b12f + md5: 874a5f8b35e6cde2d10f978ae37de6b9 depends: - - mblack ==25.1.0.dev2024122605 release + - mblack ==25.1.0.dev2024122705 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 214151967 - timestamp: 1735192563676 + size: 214148461 + timestamp: 1735276875577 - kind: conda name: max-python - version: 25.1.0.dev2024122605 + version: 25.1.0.dev2024122705 build: 3.11release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024122605-3.11release.conda - sha256: e577fc0c1e912cd5f62da5312ed9a50bab4d419387a65f113d5a52f33f730fd6 - md5: 52bbf242c09bd1231f9a1c9e7bc96fdc + url: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024122705-3.11release.conda + sha256: 2bb652a8267527d849d10d6c4ad49ec4ea45cec7cd2cf39ddbb575823509d49b + md5: 9377080666219904e0d1f590018e3331 depends: - - max-core ==25.1.0.dev2024122605 release + - max-core ==25.1.0.dev2024122705 release - python 3.11.* - fastapi - httpx @@ -5984,18 +5984,18 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 122822038 - timestamp: 1735190248449 + size: 122841025 + timestamp: 1735276702599 - kind: conda name: max-python - version: 25.1.0.dev2024122605 + version: 25.1.0.dev2024122705 build: 3.11release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024122605-3.11release.conda - sha256: 4d83f403d103d0b595a99451c4e22ebceeb52f49e9769ae2bcc657677eff272a - md5: 253de68ea5c6491d39b8f8089c840c3b + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024122705-3.11release.conda + sha256: dbe55774f579b00f1c0f5f53115d532efc2cd8b5879456cbd83dc0ff6f8bbaa6 + md5: d721e343462af05de7e5a10af99eac68 depends: - - max-core ==25.1.0.dev2024122605 release + - max-core ==25.1.0.dev2024122705 release - python 3.11.* - fastapi - httpx @@ -6018,18 +6018,18 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 126482216 - timestamp: 1735190238135 + size: 126504832 + timestamp: 1735276646126 - kind: conda name: max-python - version: 25.1.0.dev2024122605 + version: 25.1.0.dev2024122705 build: 3.11release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024122605-3.11release.conda - sha256: 28b57116d95e9d746532758f2a8735564d6b3f74322d635a80f53594f58fb896 - md5: addd87b077d926d26721708746733f4e + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024122705-3.11release.conda + sha256: 0ece383095e06ec8f55680a3ed79fa40f4f9dfb1b03592602f449a7d78f57b8a + md5: a0f6f26256ba2d65527c2f316ba42787 depends: - - max-core ==25.1.0.dev2024122605 release + - max-core ==25.1.0.dev2024122705 release - python 3.11.* - fastapi - httpx @@ -6052,17 +6052,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 113449494 - timestamp: 1735192563678 + size: 113458707 + timestamp: 1735276875579 - kind: conda name: mblack - version: 25.1.0.dev2024122605 + version: 25.1.0.dev2024122705 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122605-release.conda - sha256: 5b0b3833010934f9de78f86a56ff597a8d60f99c134595a5e68cdf09db991158 - md5: e7f487bd03b1d709f9c3b0837a15ef23 + url: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122705-release.conda + sha256: 438131b7a1a9eed7b667fe5a0b0c3a99b77276ab3fb31b0d2d9dfa88dc2ac06f + md5: 8f0828de9e2cbceb70e9573f4d44dcc0 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -6072,8 +6072,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130799 - timestamp: 1735190248448 + size: 130800 + timestamp: 1735276646126 - kind: conda name: mdurl version: 0.1.2 @@ -6092,21 +6092,21 @@ packages: timestamp: 1733255681319 - kind: conda name: mojo-jupyter - version: 25.1.0.dev2024122605 + version: 25.1.0.dev2024122705 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122605-release.conda - sha256: e6252f113f976d0247d33170b6a7116a38d1fecbd56f9d03b2ddae8353befb7d - md5: 16754e1b5992db2b6ba29a0b6c2f38ea + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122705-release.conda + sha256: 277c342ea4164d79ee7ac0923bb29dda0c5b7ae14f00ae15b7da0cbd8e2c3741 + md5: 912349d661371a646442b3fb995521a9 depends: - - max-core ==25.1.0.dev2024122605 release + - max-core ==25.1.0.dev2024122705 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary size: 22939 - timestamp: 1735190248449 + timestamp: 1735276646127 - kind: conda name: multidict version: 6.1.0 diff --git a/examples/notebooks/magic.lock b/examples/notebooks/magic.lock index ea73f94295..9280e2b33f 100644 --- a/examples/notebooks/magic.lock +++ b/examples/notebooks/magic.lock @@ -166,13 +166,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/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-25.1.0.dev2024122605-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024122605-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024122605-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024122705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024122705-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122705-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-25.1.0.dev2024122605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122705-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 @@ -456,13 +456,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/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-25.1.0.dev2024122605-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024122605-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024122605-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024122705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024122705-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122705-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-25.1.0.dev2024122605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122705-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 @@ -738,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-25.1.0.dev2024122605-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024122605-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024122605-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122705-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024122705-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024122705-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122705-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-25.1.0.dev2024122605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122705-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 @@ -6939,76 +6939,76 @@ packages: timestamp: 1733417051523 - kind: conda name: max - version: 25.1.0.dev2024122605 + version: 25.1.0.dev2024122705 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122605-release.conda - sha256: e26e3e71125ec70957b2ac651fee9c4ba182eea8d34a9dbe1212a7725c1e8128 - md5: 99c833210594028dd43a4cb39bb8af54 + url: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122705-release.conda + sha256: 915cee0f8db3306792c7717e14f877276925d168b95f37e8b2e35416d1563920 + md5: 370a4e78ec709a5b4ac926f2229e961f depends: - - max-core ==25.1.0.dev2024122605 release - - max-python >=25.1.0.dev2024122605,<26.0a0 - - mojo-jupyter ==25.1.0.dev2024122605 release - - mblack ==25.1.0.dev2024122605 release + - max-core ==25.1.0.dev2024122705 release + - max-python >=25.1.0.dev2024122705,<26.0a0 + - mojo-jupyter ==25.1.0.dev2024122705 release + - mblack ==25.1.0.dev2024122705 release license: LicenseRef-Modular-Proprietary - size: 9916 - timestamp: 1735190248444 + size: 9908 + timestamp: 1735276646121 - kind: conda name: max-core - version: 25.1.0.dev2024122605 + version: 25.1.0.dev2024122705 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024122605-release.conda - sha256: fa5be2b2c2e3de51640e7f6b2bf490ca351739982ce349d92ed3e8bc1632d629 - md5: 549dbd3055f80dd69b920c09e35ead41 + url: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024122705-release.conda + sha256: 8bd565d34d7e04c5b2f0faef7139a6da9375a413ef7d78e410ad7ff8cb3ce88f + md5: 0888729c6e2dc47c60eea220d90ba7fb depends: - - mblack ==25.1.0.dev2024122605 release + - mblack ==25.1.0.dev2024122705 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 245455479 - timestamp: 1735190248443 + size: 245480850 + timestamp: 1735276702592 - kind: conda name: max-core - version: 25.1.0.dev2024122605 + version: 25.1.0.dev2024122705 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024122605-release.conda - sha256: 6f7dcbcda52ff67b3ead85dfe979597ad4fb51bb755641c70dc8b2d182808283 - md5: 0e596d0aa43c0c260ec4157253ab4bdc + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024122705-release.conda + sha256: bd8c74ee47bae57872fd40efec49df8d21fbb668d0f4ec777498c25103f7e89d + md5: 1c3e0517ec78b93c3d8a3562fd5ea1ac depends: - - mblack ==25.1.0.dev2024122605 release + - mblack ==25.1.0.dev2024122705 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 249331722 - timestamp: 1735190238128 + size: 249350600 + timestamp: 1735276646119 - kind: conda name: max-core - version: 25.1.0.dev2024122605 + version: 25.1.0.dev2024122705 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024122605-release.conda - sha256: 7f93e1d6a06cb197702841135bcf052a157db6778b9f0c07561f82ac07851951 - md5: f68ed248c3950a4fc82b576a5760f723 + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024122705-release.conda + sha256: 2199e4897952016704225b19fa193f11400d18b2d08054ec1a3e5d120578b12f + md5: 874a5f8b35e6cde2d10f978ae37de6b9 depends: - - mblack ==25.1.0.dev2024122605 release + - mblack ==25.1.0.dev2024122705 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 214151967 - timestamp: 1735192563676 + size: 214148461 + timestamp: 1735276875577 - kind: conda name: max-python - version: 25.1.0.dev2024122605 + version: 25.1.0.dev2024122705 build: 3.12release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024122605-3.12release.conda - sha256: 37f3abf17b713ed888bbb6bb534801c4b141f9da3a7ca9a690bffbfd361d2053 - md5: 1344cafc7fe5f236f4989356912d4533 + url: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024122705-3.12release.conda + sha256: 0754a230be7ae3df9427d9c851d2e2bebb99d4b04c9e8e87c0d4c4ad99a55517 + md5: 1f7f91b1e9b7a78b02f57922417b477a depends: - - max-core ==25.1.0.dev2024122605 release + - max-core ==25.1.0.dev2024122705 release - python 3.12.* - fastapi - httpx @@ -7031,18 +7031,18 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 122798599 - timestamp: 1735190248451 + size: 122815019 + timestamp: 1735276702602 - kind: conda name: max-python - version: 25.1.0.dev2024122605 + version: 25.1.0.dev2024122705 build: 3.12release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024122605-3.12release.conda - sha256: 3cd3a2e836b5c7c9c22e04e1f452d7d476999a4ff7e8f096379b88cec9ce9452 - md5: 80296d454fd036ce473d6a3bd3e6501d + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024122705-3.12release.conda + sha256: fc0638c821e95d39231b2912d21a7dcac06b27dbb74099970e12c72d6399d553 + md5: b610bbf33c17a6cd3803441969021e94 depends: - - max-core ==25.1.0.dev2024122605 release + - max-core ==25.1.0.dev2024122705 release - python 3.12.* - fastapi - httpx @@ -7065,18 +7065,18 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 126472950 - timestamp: 1735190238138 + size: 126488278 + timestamp: 1735276646129 - kind: conda name: max-python - version: 25.1.0.dev2024122605 + version: 25.1.0.dev2024122705 build: 3.12release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024122605-3.12release.conda - sha256: 4cc94c09b26b640a12292727a98f31fd2a72e6c635c02595e0adf7297d0bdea6 - md5: 1758e3b7dea3d0dbf0ecab55341be24f + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024122705-3.12release.conda + sha256: 5f9ebe2d2db72339a02af83e1b19d3b1654f29d7d27239696147863d8a3099ac + md5: a4f4dde5759c45b2b6ab4c63443df95e depends: - - max-core ==25.1.0.dev2024122605 release + - max-core ==25.1.0.dev2024122705 release - python 3.12.* - fastapi - httpx @@ -7099,17 +7099,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 113427237 - timestamp: 1735192563679 + size: 113438495 + timestamp: 1735276875580 - kind: conda name: mblack - version: 25.1.0.dev2024122605 + version: 25.1.0.dev2024122705 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122605-release.conda - sha256: 5b0b3833010934f9de78f86a56ff597a8d60f99c134595a5e68cdf09db991158 - md5: e7f487bd03b1d709f9c3b0837a15ef23 + url: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122705-release.conda + sha256: 438131b7a1a9eed7b667fe5a0b0c3a99b77276ab3fb31b0d2d9dfa88dc2ac06f + md5: 8f0828de9e2cbceb70e9573f4d44dcc0 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -7119,8 +7119,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130799 - timestamp: 1735190248448 + size: 130800 + timestamp: 1735276646126 - kind: conda name: mdurl version: 0.1.2 @@ -7155,21 +7155,21 @@ packages: timestamp: 1733258822603 - kind: conda name: mojo-jupyter - version: 25.1.0.dev2024122605 + version: 25.1.0.dev2024122705 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122605-release.conda - sha256: e6252f113f976d0247d33170b6a7116a38d1fecbd56f9d03b2ddae8353befb7d - md5: 16754e1b5992db2b6ba29a0b6c2f38ea + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122705-release.conda + sha256: 277c342ea4164d79ee7ac0923bb29dda0c5b7ae14f00ae15b7da0cbd8e2c3741 + md5: 912349d661371a646442b3fb995521a9 depends: - - max-core ==25.1.0.dev2024122605 release + - max-core ==25.1.0.dev2024122705 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary size: 22939 - timestamp: 1735190248449 + timestamp: 1735276646127 - kind: conda name: multidict version: 6.1.0 diff --git a/examples/operators/magic.lock b/examples/operators/magic.lock index b5134ca512..02a2f02a62 100644 --- a/examples/operators/magic.lock +++ b/examples/operators/magic.lock @@ -131,12 +131,12 @@ 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-25.1.0.dev2024122605-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024122605-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024122605-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024122705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024122705-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122705-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-25.1.0.dev2024122605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122705-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 @@ -349,12 +349,12 @@ 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-25.1.0.dev2024122605-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024122605-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024122605-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024122705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024122705-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122705-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-25.1.0.dev2024122605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122705-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 @@ -558,12 +558,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-25.1.0.dev2024122605-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024122605-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024122605-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122705-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024122705-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024122705-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122705-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-25.1.0.dev2024122605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122705-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 @@ -5892,76 +5892,76 @@ packages: timestamp: 1733219945697 - kind: conda name: max - version: 25.1.0.dev2024122605 + version: 25.1.0.dev2024122705 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122605-release.conda - sha256: e26e3e71125ec70957b2ac651fee9c4ba182eea8d34a9dbe1212a7725c1e8128 - md5: 99c833210594028dd43a4cb39bb8af54 - depends: - - max-core ==25.1.0.dev2024122605 release - - max-python >=25.1.0.dev2024122605,<26.0a0 - - mojo-jupyter ==25.1.0.dev2024122605 release - - mblack ==25.1.0.dev2024122605 release + url: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122705-release.conda + sha256: 915cee0f8db3306792c7717e14f877276925d168b95f37e8b2e35416d1563920 + md5: 370a4e78ec709a5b4ac926f2229e961f + depends: + - max-core ==25.1.0.dev2024122705 release + - max-python >=25.1.0.dev2024122705,<26.0a0 + - mojo-jupyter ==25.1.0.dev2024122705 release + - mblack ==25.1.0.dev2024122705 release license: LicenseRef-Modular-Proprietary - size: 9916 - timestamp: 1735190248444 + size: 9908 + timestamp: 1735276646121 - kind: conda name: max-core - version: 25.1.0.dev2024122605 + version: 25.1.0.dev2024122705 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024122605-release.conda - sha256: fa5be2b2c2e3de51640e7f6b2bf490ca351739982ce349d92ed3e8bc1632d629 - md5: 549dbd3055f80dd69b920c09e35ead41 + url: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024122705-release.conda + sha256: 8bd565d34d7e04c5b2f0faef7139a6da9375a413ef7d78e410ad7ff8cb3ce88f + md5: 0888729c6e2dc47c60eea220d90ba7fb depends: - - mblack ==25.1.0.dev2024122605 release + - mblack ==25.1.0.dev2024122705 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 245455479 - timestamp: 1735190248443 + size: 245480850 + timestamp: 1735276702592 - kind: conda name: max-core - version: 25.1.0.dev2024122605 + version: 25.1.0.dev2024122705 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024122605-release.conda - sha256: 6f7dcbcda52ff67b3ead85dfe979597ad4fb51bb755641c70dc8b2d182808283 - md5: 0e596d0aa43c0c260ec4157253ab4bdc + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024122705-release.conda + sha256: bd8c74ee47bae57872fd40efec49df8d21fbb668d0f4ec777498c25103f7e89d + md5: 1c3e0517ec78b93c3d8a3562fd5ea1ac depends: - - mblack ==25.1.0.dev2024122605 release + - mblack ==25.1.0.dev2024122705 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 249331722 - timestamp: 1735190238128 + size: 249350600 + timestamp: 1735276646119 - kind: conda name: max-core - version: 25.1.0.dev2024122605 + version: 25.1.0.dev2024122705 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024122605-release.conda - sha256: 7f93e1d6a06cb197702841135bcf052a157db6778b9f0c07561f82ac07851951 - md5: f68ed248c3950a4fc82b576a5760f723 + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024122705-release.conda + sha256: 2199e4897952016704225b19fa193f11400d18b2d08054ec1a3e5d120578b12f + md5: 874a5f8b35e6cde2d10f978ae37de6b9 depends: - - mblack ==25.1.0.dev2024122605 release + - mblack ==25.1.0.dev2024122705 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 214151967 - timestamp: 1735192563676 + size: 214148461 + timestamp: 1735276875577 - kind: conda name: max-python - version: 25.1.0.dev2024122605 + version: 25.1.0.dev2024122705 build: 3.12release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024122605-3.12release.conda - sha256: 37f3abf17b713ed888bbb6bb534801c4b141f9da3a7ca9a690bffbfd361d2053 - md5: 1344cafc7fe5f236f4989356912d4533 + url: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024122705-3.12release.conda + sha256: 0754a230be7ae3df9427d9c851d2e2bebb99d4b04c9e8e87c0d4c4ad99a55517 + md5: 1f7f91b1e9b7a78b02f57922417b477a depends: - - max-core ==25.1.0.dev2024122605 release + - max-core ==25.1.0.dev2024122705 release - python 3.12.* - fastapi - httpx @@ -5984,18 +5984,18 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 122798599 - timestamp: 1735190248451 + size: 122815019 + timestamp: 1735276702602 - kind: conda name: max-python - version: 25.1.0.dev2024122605 + version: 25.1.0.dev2024122705 build: 3.12release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024122605-3.12release.conda - sha256: 3cd3a2e836b5c7c9c22e04e1f452d7d476999a4ff7e8f096379b88cec9ce9452 - md5: 80296d454fd036ce473d6a3bd3e6501d + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024122705-3.12release.conda + sha256: fc0638c821e95d39231b2912d21a7dcac06b27dbb74099970e12c72d6399d553 + md5: b610bbf33c17a6cd3803441969021e94 depends: - - max-core ==25.1.0.dev2024122605 release + - max-core ==25.1.0.dev2024122705 release - python 3.12.* - fastapi - httpx @@ -6018,18 +6018,18 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 126472950 - timestamp: 1735190238138 + size: 126488278 + timestamp: 1735276646129 - kind: conda name: max-python - version: 25.1.0.dev2024122605 + version: 25.1.0.dev2024122705 build: 3.12release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024122605-3.12release.conda - sha256: 4cc94c09b26b640a12292727a98f31fd2a72e6c635c02595e0adf7297d0bdea6 - md5: 1758e3b7dea3d0dbf0ecab55341be24f + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024122705-3.12release.conda + sha256: 5f9ebe2d2db72339a02af83e1b19d3b1654f29d7d27239696147863d8a3099ac + md5: a4f4dde5759c45b2b6ab4c63443df95e depends: - - max-core ==25.1.0.dev2024122605 release + - max-core ==25.1.0.dev2024122705 release - python 3.12.* - fastapi - httpx @@ -6052,17 +6052,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 113427237 - timestamp: 1735192563679 + size: 113438495 + timestamp: 1735276875580 - kind: conda name: mblack - version: 25.1.0.dev2024122605 + version: 25.1.0.dev2024122705 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122605-release.conda - sha256: 5b0b3833010934f9de78f86a56ff597a8d60f99c134595a5e68cdf09db991158 - md5: e7f487bd03b1d709f9c3b0837a15ef23 + url: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122705-release.conda + sha256: 438131b7a1a9eed7b667fe5a0b0c3a99b77276ab3fb31b0d2d9dfa88dc2ac06f + md5: 8f0828de9e2cbceb70e9573f4d44dcc0 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -6072,8 +6072,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130799 - timestamp: 1735190248448 + size: 130800 + timestamp: 1735276646126 - kind: conda name: mdurl version: 0.1.2 @@ -6092,21 +6092,21 @@ packages: timestamp: 1733255681319 - kind: conda name: mojo-jupyter - version: 25.1.0.dev2024122605 + version: 25.1.0.dev2024122705 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122605-release.conda - sha256: e6252f113f976d0247d33170b6a7116a38d1fecbd56f9d03b2ddae8353befb7d - md5: 16754e1b5992db2b6ba29a0b6c2f38ea + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122705-release.conda + sha256: 277c342ea4164d79ee7ac0923bb29dda0c5b7ae14f00ae15b7da0cbd8e2c3741 + md5: 912349d661371a646442b3fb995521a9 depends: - - max-core ==25.1.0.dev2024122605 release + - max-core ==25.1.0.dev2024122705 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary size: 22939 - timestamp: 1735190248449 + timestamp: 1735276646127 - kind: conda name: multidict version: 6.1.0 diff --git a/magic.lock b/magic.lock index 237a157c10..f50b5d9ae9 100644 --- a/magic.lock +++ b/magic.lock @@ -132,12 +132,12 @@ 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-25.1.0.dev2024122605-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024122605-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024122605-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024122705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024122705-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122705-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-25.1.0.dev2024122605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122705-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 @@ -351,12 +351,12 @@ 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-25.1.0.dev2024122605-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024122605-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024122605-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024122705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024122705-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122705-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-25.1.0.dev2024122605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122705-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 @@ -561,12 +561,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-25.1.0.dev2024122605-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024122605-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024122605-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122705-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024122705-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024122705-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122705-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-25.1.0.dev2024122605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122705-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 @@ -5910,76 +5910,76 @@ packages: timestamp: 1733219945697 - kind: conda name: max - version: 25.1.0.dev2024122605 + version: 25.1.0.dev2024122705 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122605-release.conda - sha256: e26e3e71125ec70957b2ac651fee9c4ba182eea8d34a9dbe1212a7725c1e8128 - md5: 99c833210594028dd43a4cb39bb8af54 - depends: - - max-core ==25.1.0.dev2024122605 release - - max-python >=25.1.0.dev2024122605,<26.0a0 - - mojo-jupyter ==25.1.0.dev2024122605 release - - mblack ==25.1.0.dev2024122605 release + url: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122705-release.conda + sha256: 915cee0f8db3306792c7717e14f877276925d168b95f37e8b2e35416d1563920 + md5: 370a4e78ec709a5b4ac926f2229e961f + depends: + - max-core ==25.1.0.dev2024122705 release + - max-python >=25.1.0.dev2024122705,<26.0a0 + - mojo-jupyter ==25.1.0.dev2024122705 release + - mblack ==25.1.0.dev2024122705 release license: LicenseRef-Modular-Proprietary - size: 9916 - timestamp: 1735190248444 + size: 9908 + timestamp: 1735276646121 - kind: conda name: max-core - version: 25.1.0.dev2024122605 + version: 25.1.0.dev2024122705 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024122605-release.conda - sha256: fa5be2b2c2e3de51640e7f6b2bf490ca351739982ce349d92ed3e8bc1632d629 - md5: 549dbd3055f80dd69b920c09e35ead41 + url: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024122705-release.conda + sha256: 8bd565d34d7e04c5b2f0faef7139a6da9375a413ef7d78e410ad7ff8cb3ce88f + md5: 0888729c6e2dc47c60eea220d90ba7fb depends: - - mblack ==25.1.0.dev2024122605 release + - mblack ==25.1.0.dev2024122705 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 245455479 - timestamp: 1735190248443 + size: 245480850 + timestamp: 1735276702592 - kind: conda name: max-core - version: 25.1.0.dev2024122605 + version: 25.1.0.dev2024122705 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024122605-release.conda - sha256: 6f7dcbcda52ff67b3ead85dfe979597ad4fb51bb755641c70dc8b2d182808283 - md5: 0e596d0aa43c0c260ec4157253ab4bdc + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024122705-release.conda + sha256: bd8c74ee47bae57872fd40efec49df8d21fbb668d0f4ec777498c25103f7e89d + md5: 1c3e0517ec78b93c3d8a3562fd5ea1ac depends: - - mblack ==25.1.0.dev2024122605 release + - mblack ==25.1.0.dev2024122705 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 249331722 - timestamp: 1735190238128 + size: 249350600 + timestamp: 1735276646119 - kind: conda name: max-core - version: 25.1.0.dev2024122605 + version: 25.1.0.dev2024122705 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024122605-release.conda - sha256: 7f93e1d6a06cb197702841135bcf052a157db6778b9f0c07561f82ac07851951 - md5: f68ed248c3950a4fc82b576a5760f723 + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024122705-release.conda + sha256: 2199e4897952016704225b19fa193f11400d18b2d08054ec1a3e5d120578b12f + md5: 874a5f8b35e6cde2d10f978ae37de6b9 depends: - - mblack ==25.1.0.dev2024122605 release + - mblack ==25.1.0.dev2024122705 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 214151967 - timestamp: 1735192563676 + size: 214148461 + timestamp: 1735276875577 - kind: conda name: max-python - version: 25.1.0.dev2024122605 + version: 25.1.0.dev2024122705 build: 3.12release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024122605-3.12release.conda - sha256: 37f3abf17b713ed888bbb6bb534801c4b141f9da3a7ca9a690bffbfd361d2053 - md5: 1344cafc7fe5f236f4989356912d4533 + url: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024122705-3.12release.conda + sha256: 0754a230be7ae3df9427d9c851d2e2bebb99d4b04c9e8e87c0d4c4ad99a55517 + md5: 1f7f91b1e9b7a78b02f57922417b477a depends: - - max-core ==25.1.0.dev2024122605 release + - max-core ==25.1.0.dev2024122705 release - python 3.12.* - fastapi - httpx @@ -6002,18 +6002,18 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 122798599 - timestamp: 1735190248451 + size: 122815019 + timestamp: 1735276702602 - kind: conda name: max-python - version: 25.1.0.dev2024122605 + version: 25.1.0.dev2024122705 build: 3.12release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024122605-3.12release.conda - sha256: 3cd3a2e836b5c7c9c22e04e1f452d7d476999a4ff7e8f096379b88cec9ce9452 - md5: 80296d454fd036ce473d6a3bd3e6501d + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024122705-3.12release.conda + sha256: fc0638c821e95d39231b2912d21a7dcac06b27dbb74099970e12c72d6399d553 + md5: b610bbf33c17a6cd3803441969021e94 depends: - - max-core ==25.1.0.dev2024122605 release + - max-core ==25.1.0.dev2024122705 release - python 3.12.* - fastapi - httpx @@ -6036,18 +6036,18 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 126472950 - timestamp: 1735190238138 + size: 126488278 + timestamp: 1735276646129 - kind: conda name: max-python - version: 25.1.0.dev2024122605 + version: 25.1.0.dev2024122705 build: 3.12release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024122605-3.12release.conda - sha256: 4cc94c09b26b640a12292727a98f31fd2a72e6c635c02595e0adf7297d0bdea6 - md5: 1758e3b7dea3d0dbf0ecab55341be24f + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024122705-3.12release.conda + sha256: 5f9ebe2d2db72339a02af83e1b19d3b1654f29d7d27239696147863d8a3099ac + md5: a4f4dde5759c45b2b6ab4c63443df95e depends: - - max-core ==25.1.0.dev2024122605 release + - max-core ==25.1.0.dev2024122705 release - python 3.12.* - fastapi - httpx @@ -6070,17 +6070,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 113427237 - timestamp: 1735192563679 + size: 113438495 + timestamp: 1735276875580 - kind: conda name: mblack - version: 25.1.0.dev2024122605 + version: 25.1.0.dev2024122705 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122605-release.conda - sha256: 5b0b3833010934f9de78f86a56ff597a8d60f99c134595a5e68cdf09db991158 - md5: e7f487bd03b1d709f9c3b0837a15ef23 + url: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122705-release.conda + sha256: 438131b7a1a9eed7b667fe5a0b0c3a99b77276ab3fb31b0d2d9dfa88dc2ac06f + md5: 8f0828de9e2cbceb70e9573f4d44dcc0 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -6090,8 +6090,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130799 - timestamp: 1735190248448 + size: 130800 + timestamp: 1735276646126 - kind: conda name: mdurl version: 0.1.2 @@ -6110,21 +6110,21 @@ packages: timestamp: 1733255681319 - kind: conda name: mojo-jupyter - version: 25.1.0.dev2024122605 + version: 25.1.0.dev2024122705 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122605-release.conda - sha256: e6252f113f976d0247d33170b6a7116a38d1fecbd56f9d03b2ddae8353befb7d - md5: 16754e1b5992db2b6ba29a0b6c2f38ea + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122705-release.conda + sha256: 277c342ea4164d79ee7ac0923bb29dda0c5b7ae14f00ae15b7da0cbd8e2c3741 + md5: 912349d661371a646442b3fb995521a9 depends: - - max-core ==25.1.0.dev2024122605 release + - max-core ==25.1.0.dev2024122705 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary size: 22939 - timestamp: 1735190248449 + timestamp: 1735276646127 - kind: conda name: multidict version: 6.1.0 From bd78294efa6c2bc5b62dae0df702243a62e66838 Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Fri, 27 Dec 2024 18:15:35 +1000 Subject: [PATCH 146/509] [mojo-lang][KGEN] Simplify handling of `UnknownAttr` (#53338) This removes some old code that isn't needed anymore. MODULAR_ORIG_COMMIT_REV_ID: 9a7491551a76491c4ad6b739c856bdac6515da10 --- stdlib/src/builtin/_stubs.mojo | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/stdlib/src/builtin/_stubs.mojo b/stdlib/src/builtin/_stubs.mojo index 3b5a12fdac..4879a225fb 100644 --- a/stdlib/src/builtin/_stubs.mojo +++ b/stdlib/src/builtin/_stubs.mojo @@ -95,12 +95,11 @@ fn parameter_for_generator[ fn _generator[ IteratorT: _IntIter ](it: IteratorT) -> _ParamForIterator[IteratorT]: - if it.__len__() == 0: - return _ParamForIterator[IteratorT]( - __mlir_attr[`#kgen.unknown : !kgen.paramref<`, IteratorT, `>`], - 0, - True, - ) - var next_it = it - var value = next_it.__next__() - return _ParamForIterator(next_it, value, False) + if it.__len__() != 0: + var next_it = it + var value = next_it.__next__() + return _ParamForIterator(next_it, value, False) + + var value: IteratorT + __mlir_op.`lit.ownership.mark_initialized`(__get_mvalue_as_litref(value)) + return _ParamForIterator(value^, 0, True) From f8e856dbff23b991f65bf454db8422326f0a9887 Mon Sep 17 00:00:00 2001 From: modularbot Date: Sat, 28 Dec 2024 07:42:53 +0000 Subject: [PATCH 147/509] Update lockfiles to point to latest nightly version: 25.1.0.dev2024122805 --- examples/life/magic.lock | 162 ++++++++++++------------- examples/magic.lock | 162 ++++++++++++------------- examples/notebooks/magic.lock | 222 +++++++++++++++++----------------- examples/operators/magic.lock | 162 ++++++++++++------------- magic.lock | 162 ++++++++++++------------- 5 files changed, 435 insertions(+), 435 deletions(-) diff --git a/examples/life/magic.lock b/examples/life/magic.lock index 88ec51f6c7..621b2095cd 100644 --- a/examples/life/magic.lock +++ b/examples/life/magic.lock @@ -170,12 +170,12 @@ 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-25.1.0.dev2024122705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024122705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024122705-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024122805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024122805-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122805-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-25.1.0.dev2024122705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122805-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_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.15-py312h98912ed_1.conda @@ -446,12 +446,12 @@ 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-25.1.0.dev2024122705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024122705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024122705-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024122805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024122805-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122805-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-25.1.0.dev2024122705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122805-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_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.15-py312hdd3e373_1.conda @@ -705,12 +705,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-25.1.0.dev2024122705-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024122705-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024122705-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122805-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024122805-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024122805-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122805-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-25.1.0.dev2024122705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122805-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 @@ -7671,76 +7671,76 @@ packages: timestamp: 1733219945697 - kind: conda name: max - version: 25.1.0.dev2024122705 + version: 25.1.0.dev2024122805 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122705-release.conda - sha256: 915cee0f8db3306792c7717e14f877276925d168b95f37e8b2e35416d1563920 - md5: 370a4e78ec709a5b4ac926f2229e961f - depends: - - max-core ==25.1.0.dev2024122705 release - - max-python >=25.1.0.dev2024122705,<26.0a0 - - mojo-jupyter ==25.1.0.dev2024122705 release - - mblack ==25.1.0.dev2024122705 release + url: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122805-release.conda + sha256: fe2812cf8bb718133a1ee6e2a720e0adb3a234443cd1bdb012ed3845fc100c7e + md5: d2ab5ff45c394ef59d4c89a35dbc0e20 + depends: + - max-core ==25.1.0.dev2024122805 release + - max-python >=25.1.0.dev2024122805,<26.0a0 + - mojo-jupyter ==25.1.0.dev2024122805 release + - mblack ==25.1.0.dev2024122805 release license: LicenseRef-Modular-Proprietary - size: 9908 - timestamp: 1735276646121 + size: 9913 + timestamp: 1735363020600 - kind: conda name: max-core - version: 25.1.0.dev2024122705 + version: 25.1.0.dev2024122805 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024122705-release.conda - sha256: 8bd565d34d7e04c5b2f0faef7139a6da9375a413ef7d78e410ad7ff8cb3ce88f - md5: 0888729c6e2dc47c60eea220d90ba7fb + url: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024122805-release.conda + sha256: d0f6942e8fb4461129dd0b3b459e5d975fa392661fbf9ce002992044249c7df0 + md5: 99412132bd807caa43dba507054a2691 depends: - - mblack ==25.1.0.dev2024122705 release + - mblack ==25.1.0.dev2024122805 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 245480850 - timestamp: 1735276702592 + size: 245436370 + timestamp: 1735363025528 - kind: conda name: max-core - version: 25.1.0.dev2024122705 + version: 25.1.0.dev2024122805 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024122705-release.conda - sha256: bd8c74ee47bae57872fd40efec49df8d21fbb668d0f4ec777498c25103f7e89d - md5: 1c3e0517ec78b93c3d8a3562fd5ea1ac + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024122805-release.conda + sha256: 19aa7627330555204af1573e241f86ced1f34e5773fe2047f03d2df77d296de7 + md5: c83934dfd0b0e2285a2959be586f8e4b depends: - - mblack ==25.1.0.dev2024122705 release + - mblack ==25.1.0.dev2024122805 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 249350600 - timestamp: 1735276646119 + size: 249341674 + timestamp: 1735363020598 - kind: conda name: max-core - version: 25.1.0.dev2024122705 + version: 25.1.0.dev2024122805 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024122705-release.conda - sha256: 2199e4897952016704225b19fa193f11400d18b2d08054ec1a3e5d120578b12f - md5: 874a5f8b35e6cde2d10f978ae37de6b9 + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024122805-release.conda + sha256: d65a30747c6623a9a73d02e35d617cf2425fc151839f18badbef093a045c1bd5 + md5: d45b98ffbd949783e9c8ee20e28a6970 depends: - - mblack ==25.1.0.dev2024122705 release + - mblack ==25.1.0.dev2024122805 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 214148461 - timestamp: 1735276875577 + size: 214123206 + timestamp: 1735365284895 - kind: conda name: max-python - version: 25.1.0.dev2024122705 + version: 25.1.0.dev2024122805 build: 3.12release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024122705-3.12release.conda - sha256: 0754a230be7ae3df9427d9c851d2e2bebb99d4b04c9e8e87c0d4c4ad99a55517 - md5: 1f7f91b1e9b7a78b02f57922417b477a + url: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024122805-3.12release.conda + sha256: 1666cdc4f1460979cb2bad7ddaa745256f137e03a32c8688a988f359bcc4a1b6 + md5: fda0864df873c814f836064daa86e4d6 depends: - - max-core ==25.1.0.dev2024122705 release + - max-core ==25.1.0.dev2024122805 release - python 3.12.* - fastapi - httpx @@ -7763,18 +7763,18 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 122815019 - timestamp: 1735276702602 + size: 122818679 + timestamp: 1735363025537 - kind: conda name: max-python - version: 25.1.0.dev2024122705 + version: 25.1.0.dev2024122805 build: 3.12release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024122705-3.12release.conda - sha256: fc0638c821e95d39231b2912d21a7dcac06b27dbb74099970e12c72d6399d553 - md5: b610bbf33c17a6cd3803441969021e94 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024122805-3.12release.conda + sha256: 00bb77ee09d7ec7aa407452fd11a227980cc273e738fbec28fe2c7f8df0b8d21 + md5: 6e0f158c866d00b4dd04602211e184cd depends: - - max-core ==25.1.0.dev2024122705 release + - max-core ==25.1.0.dev2024122805 release - python 3.12.* - fastapi - httpx @@ -7797,18 +7797,18 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 126488278 - timestamp: 1735276646129 + size: 126488257 + timestamp: 1735363020609 - kind: conda name: max-python - version: 25.1.0.dev2024122705 + version: 25.1.0.dev2024122805 build: 3.12release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024122705-3.12release.conda - sha256: 5f9ebe2d2db72339a02af83e1b19d3b1654f29d7d27239696147863d8a3099ac - md5: a4f4dde5759c45b2b6ab4c63443df95e + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024122805-3.12release.conda + sha256: 81c22f0a8d33e7d8091959a4bf837993246308712b22e384d0c853404ab45c15 + md5: 207d5360c0a7fcb6e8d7933e3a577a07 depends: - - max-core ==25.1.0.dev2024122705 release + - max-core ==25.1.0.dev2024122805 release - python 3.12.* - fastapi - httpx @@ -7831,17 +7831,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 113438495 - timestamp: 1735276875580 + size: 113429204 + timestamp: 1735365284899 - kind: conda name: mblack - version: 25.1.0.dev2024122705 + version: 25.1.0.dev2024122805 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122705-release.conda - sha256: 438131b7a1a9eed7b667fe5a0b0c3a99b77276ab3fb31b0d2d9dfa88dc2ac06f - md5: 8f0828de9e2cbceb70e9573f4d44dcc0 + url: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122805-release.conda + sha256: 46d7d50f46fc589cd4fd53c614020666b9ac4ea90d0d861bc2888ff8a8968fc7 + md5: e140a619b5afdf6730ee181c6ca0dd1d depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -7851,8 +7851,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130800 - timestamp: 1735276646126 + size: 130809 + timestamp: 1735363020604 - kind: conda name: mdurl version: 0.1.2 @@ -7871,21 +7871,21 @@ packages: timestamp: 1733255681319 - kind: conda name: mojo-jupyter - version: 25.1.0.dev2024122705 + version: 25.1.0.dev2024122805 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122705-release.conda - sha256: 277c342ea4164d79ee7ac0923bb29dda0c5b7ae14f00ae15b7da0cbd8e2c3741 - md5: 912349d661371a646442b3fb995521a9 + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122805-release.conda + sha256: cdfcbb3354be4888b5b86eab0b3ee26c1fdaf9df9e9421e2fe60ab18cd053402 + md5: 6606e99ea0f956a5f786bc5a376c4fa2 depends: - - max-core ==25.1.0.dev2024122705 release + - max-core ==25.1.0.dev2024122805 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22939 - timestamp: 1735276646127 + size: 22932 + timestamp: 1735363020605 - kind: conda name: mpg123 version: 1.32.9 diff --git a/examples/magic.lock b/examples/magic.lock index f086ebc5b8..f5da75b14f 100644 --- a/examples/magic.lock +++ b/examples/magic.lock @@ -131,12 +131,12 @@ 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-25.1.0.dev2024122705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024122705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024122705-3.11release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024122805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024122805-3.11release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122805-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-25.1.0.dev2024122705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122805-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 @@ -349,12 +349,12 @@ 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-25.1.0.dev2024122705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024122705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024122705-3.11release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024122805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024122805-3.11release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122805-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-25.1.0.dev2024122705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122805-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 @@ -558,12 +558,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-25.1.0.dev2024122705-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024122705-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024122705-3.11release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122805-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024122805-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024122805-3.11release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122805-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-25.1.0.dev2024122705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122805-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 @@ -5892,76 +5892,76 @@ packages: timestamp: 1733220925299 - kind: conda name: max - version: 25.1.0.dev2024122705 + version: 25.1.0.dev2024122805 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122705-release.conda - sha256: 915cee0f8db3306792c7717e14f877276925d168b95f37e8b2e35416d1563920 - md5: 370a4e78ec709a5b4ac926f2229e961f - depends: - - max-core ==25.1.0.dev2024122705 release - - max-python >=25.1.0.dev2024122705,<26.0a0 - - mojo-jupyter ==25.1.0.dev2024122705 release - - mblack ==25.1.0.dev2024122705 release + url: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122805-release.conda + sha256: fe2812cf8bb718133a1ee6e2a720e0adb3a234443cd1bdb012ed3845fc100c7e + md5: d2ab5ff45c394ef59d4c89a35dbc0e20 + depends: + - max-core ==25.1.0.dev2024122805 release + - max-python >=25.1.0.dev2024122805,<26.0a0 + - mojo-jupyter ==25.1.0.dev2024122805 release + - mblack ==25.1.0.dev2024122805 release license: LicenseRef-Modular-Proprietary - size: 9908 - timestamp: 1735276646121 + size: 9913 + timestamp: 1735363020600 - kind: conda name: max-core - version: 25.1.0.dev2024122705 + version: 25.1.0.dev2024122805 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024122705-release.conda - sha256: 8bd565d34d7e04c5b2f0faef7139a6da9375a413ef7d78e410ad7ff8cb3ce88f - md5: 0888729c6e2dc47c60eea220d90ba7fb + url: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024122805-release.conda + sha256: d0f6942e8fb4461129dd0b3b459e5d975fa392661fbf9ce002992044249c7df0 + md5: 99412132bd807caa43dba507054a2691 depends: - - mblack ==25.1.0.dev2024122705 release + - mblack ==25.1.0.dev2024122805 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 245480850 - timestamp: 1735276702592 + size: 245436370 + timestamp: 1735363025528 - kind: conda name: max-core - version: 25.1.0.dev2024122705 + version: 25.1.0.dev2024122805 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024122705-release.conda - sha256: bd8c74ee47bae57872fd40efec49df8d21fbb668d0f4ec777498c25103f7e89d - md5: 1c3e0517ec78b93c3d8a3562fd5ea1ac + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024122805-release.conda + sha256: 19aa7627330555204af1573e241f86ced1f34e5773fe2047f03d2df77d296de7 + md5: c83934dfd0b0e2285a2959be586f8e4b depends: - - mblack ==25.1.0.dev2024122705 release + - mblack ==25.1.0.dev2024122805 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 249350600 - timestamp: 1735276646119 + size: 249341674 + timestamp: 1735363020598 - kind: conda name: max-core - version: 25.1.0.dev2024122705 + version: 25.1.0.dev2024122805 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024122705-release.conda - sha256: 2199e4897952016704225b19fa193f11400d18b2d08054ec1a3e5d120578b12f - md5: 874a5f8b35e6cde2d10f978ae37de6b9 + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024122805-release.conda + sha256: d65a30747c6623a9a73d02e35d617cf2425fc151839f18badbef093a045c1bd5 + md5: d45b98ffbd949783e9c8ee20e28a6970 depends: - - mblack ==25.1.0.dev2024122705 release + - mblack ==25.1.0.dev2024122805 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 214148461 - timestamp: 1735276875577 + size: 214123206 + timestamp: 1735365284895 - kind: conda name: max-python - version: 25.1.0.dev2024122705 + version: 25.1.0.dev2024122805 build: 3.11release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024122705-3.11release.conda - sha256: 2bb652a8267527d849d10d6c4ad49ec4ea45cec7cd2cf39ddbb575823509d49b - md5: 9377080666219904e0d1f590018e3331 + url: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024122805-3.11release.conda + sha256: 22a7983aa6ef0dba49c625f3f86e2aadc15b6d8765d5954a5097952bc15b65f7 + md5: 27cda7b8b0bcbb9b46b4f50c720a0aa7 depends: - - max-core ==25.1.0.dev2024122705 release + - max-core ==25.1.0.dev2024122805 release - python 3.11.* - fastapi - httpx @@ -5984,18 +5984,18 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 122841025 - timestamp: 1735276702599 + size: 122845658 + timestamp: 1735363025535 - kind: conda name: max-python - version: 25.1.0.dev2024122705 + version: 25.1.0.dev2024122805 build: 3.11release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024122705-3.11release.conda - sha256: dbe55774f579b00f1c0f5f53115d532efc2cd8b5879456cbd83dc0ff6f8bbaa6 - md5: d721e343462af05de7e5a10af99eac68 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024122805-3.11release.conda + sha256: 0a6ae72f8a579cd49e0afe4b7c59a0518c131405c93761c89ca685d5337dbe88 + md5: b4cdee5b1de61e82e057035ae822f0db depends: - - max-core ==25.1.0.dev2024122705 release + - max-core ==25.1.0.dev2024122805 release - python 3.11.* - fastapi - httpx @@ -6018,18 +6018,18 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 126504832 - timestamp: 1735276646126 + size: 126502979 + timestamp: 1735363020606 - kind: conda name: max-python - version: 25.1.0.dev2024122705 + version: 25.1.0.dev2024122805 build: 3.11release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024122705-3.11release.conda - sha256: 0ece383095e06ec8f55680a3ed79fa40f4f9dfb1b03592602f449a7d78f57b8a - md5: a0f6f26256ba2d65527c2f316ba42787 + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024122805-3.11release.conda + sha256: 058e5175addf88c4730b36489dab704ecf4331a1edbc6a5755c8f32ca771969c + md5: 6f1fb876d4ae440ceb681a7a493c0968 depends: - - max-core ==25.1.0.dev2024122705 release + - max-core ==25.1.0.dev2024122805 release - python 3.11.* - fastapi - httpx @@ -6052,17 +6052,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 113458707 - timestamp: 1735276875579 + size: 113444838 + timestamp: 1735365284898 - kind: conda name: mblack - version: 25.1.0.dev2024122705 + version: 25.1.0.dev2024122805 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122705-release.conda - sha256: 438131b7a1a9eed7b667fe5a0b0c3a99b77276ab3fb31b0d2d9dfa88dc2ac06f - md5: 8f0828de9e2cbceb70e9573f4d44dcc0 + url: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122805-release.conda + sha256: 46d7d50f46fc589cd4fd53c614020666b9ac4ea90d0d861bc2888ff8a8968fc7 + md5: e140a619b5afdf6730ee181c6ca0dd1d depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -6072,8 +6072,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130800 - timestamp: 1735276646126 + size: 130809 + timestamp: 1735363020604 - kind: conda name: mdurl version: 0.1.2 @@ -6092,21 +6092,21 @@ packages: timestamp: 1733255681319 - kind: conda name: mojo-jupyter - version: 25.1.0.dev2024122705 + version: 25.1.0.dev2024122805 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122705-release.conda - sha256: 277c342ea4164d79ee7ac0923bb29dda0c5b7ae14f00ae15b7da0cbd8e2c3741 - md5: 912349d661371a646442b3fb995521a9 + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122805-release.conda + sha256: cdfcbb3354be4888b5b86eab0b3ee26c1fdaf9df9e9421e2fe60ab18cd053402 + md5: 6606e99ea0f956a5f786bc5a376c4fa2 depends: - - max-core ==25.1.0.dev2024122705 release + - max-core ==25.1.0.dev2024122805 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22939 - timestamp: 1735276646127 + size: 22932 + timestamp: 1735363020605 - kind: conda name: multidict version: 6.1.0 diff --git a/examples/notebooks/magic.lock b/examples/notebooks/magic.lock index 9280e2b33f..65050002d0 100644 --- a/examples/notebooks/magic.lock +++ b/examples/notebooks/magic.lock @@ -166,13 +166,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/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-25.1.0.dev2024122705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024122705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024122705-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024122805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024122805-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122805-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-25.1.0.dev2024122705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122805-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 @@ -209,7 +209,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.48-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.1-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/protobuf-5.28.2-py312h2ec8cdc_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/psutil-6.1.0-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/psutil-6.1.1-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda @@ -456,13 +456,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/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-25.1.0.dev2024122705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024122705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024122705-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024122805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024122805-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122805-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-25.1.0.dev2024122705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122805-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 @@ -499,7 +499,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.48-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.2.1-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/protobuf-5.28.2-py312h6f74592_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/psutil-6.1.0-py312hb2c0f52_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/psutil-6.1.1-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pthread-stubs-0.4-h86ecc28_1002.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda @@ -738,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-25.1.0.dev2024122705-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024122705-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024122705-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122805-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024122805-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024122805-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122805-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-25.1.0.dev2024122705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122805-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 @@ -781,7 +781,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.48-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.1-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/protobuf-5.28.2-py312hf02c72a_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/psutil-6.1.0-py312h0bf5046_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/psutil-6.1.1-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pthread-stubs-0.4-hd74edd7_1002.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda @@ -6939,76 +6939,76 @@ packages: timestamp: 1733417051523 - kind: conda name: max - version: 25.1.0.dev2024122705 + version: 25.1.0.dev2024122805 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122705-release.conda - sha256: 915cee0f8db3306792c7717e14f877276925d168b95f37e8b2e35416d1563920 - md5: 370a4e78ec709a5b4ac926f2229e961f + url: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122805-release.conda + sha256: fe2812cf8bb718133a1ee6e2a720e0adb3a234443cd1bdb012ed3845fc100c7e + md5: d2ab5ff45c394ef59d4c89a35dbc0e20 depends: - - max-core ==25.1.0.dev2024122705 release - - max-python >=25.1.0.dev2024122705,<26.0a0 - - mojo-jupyter ==25.1.0.dev2024122705 release - - mblack ==25.1.0.dev2024122705 release + - max-core ==25.1.0.dev2024122805 release + - max-python >=25.1.0.dev2024122805,<26.0a0 + - mojo-jupyter ==25.1.0.dev2024122805 release + - mblack ==25.1.0.dev2024122805 release license: LicenseRef-Modular-Proprietary - size: 9908 - timestamp: 1735276646121 + size: 9913 + timestamp: 1735363020600 - kind: conda name: max-core - version: 25.1.0.dev2024122705 + version: 25.1.0.dev2024122805 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024122705-release.conda - sha256: 8bd565d34d7e04c5b2f0faef7139a6da9375a413ef7d78e410ad7ff8cb3ce88f - md5: 0888729c6e2dc47c60eea220d90ba7fb + url: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024122805-release.conda + sha256: d0f6942e8fb4461129dd0b3b459e5d975fa392661fbf9ce002992044249c7df0 + md5: 99412132bd807caa43dba507054a2691 depends: - - mblack ==25.1.0.dev2024122705 release + - mblack ==25.1.0.dev2024122805 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 245480850 - timestamp: 1735276702592 + size: 245436370 + timestamp: 1735363025528 - kind: conda name: max-core - version: 25.1.0.dev2024122705 + version: 25.1.0.dev2024122805 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024122705-release.conda - sha256: bd8c74ee47bae57872fd40efec49df8d21fbb668d0f4ec777498c25103f7e89d - md5: 1c3e0517ec78b93c3d8a3562fd5ea1ac + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024122805-release.conda + sha256: 19aa7627330555204af1573e241f86ced1f34e5773fe2047f03d2df77d296de7 + md5: c83934dfd0b0e2285a2959be586f8e4b depends: - - mblack ==25.1.0.dev2024122705 release + - mblack ==25.1.0.dev2024122805 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 249350600 - timestamp: 1735276646119 + size: 249341674 + timestamp: 1735363020598 - kind: conda name: max-core - version: 25.1.0.dev2024122705 + version: 25.1.0.dev2024122805 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024122705-release.conda - sha256: 2199e4897952016704225b19fa193f11400d18b2d08054ec1a3e5d120578b12f - md5: 874a5f8b35e6cde2d10f978ae37de6b9 + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024122805-release.conda + sha256: d65a30747c6623a9a73d02e35d617cf2425fc151839f18badbef093a045c1bd5 + md5: d45b98ffbd949783e9c8ee20e28a6970 depends: - - mblack ==25.1.0.dev2024122705 release + - mblack ==25.1.0.dev2024122805 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 214148461 - timestamp: 1735276875577 + size: 214123206 + timestamp: 1735365284895 - kind: conda name: max-python - version: 25.1.0.dev2024122705 + version: 25.1.0.dev2024122805 build: 3.12release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024122705-3.12release.conda - sha256: 0754a230be7ae3df9427d9c851d2e2bebb99d4b04c9e8e87c0d4c4ad99a55517 - md5: 1f7f91b1e9b7a78b02f57922417b477a + url: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024122805-3.12release.conda + sha256: 1666cdc4f1460979cb2bad7ddaa745256f137e03a32c8688a988f359bcc4a1b6 + md5: fda0864df873c814f836064daa86e4d6 depends: - - max-core ==25.1.0.dev2024122705 release + - max-core ==25.1.0.dev2024122805 release - python 3.12.* - fastapi - httpx @@ -7031,18 +7031,18 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 122815019 - timestamp: 1735276702602 + size: 122818679 + timestamp: 1735363025537 - kind: conda name: max-python - version: 25.1.0.dev2024122705 + version: 25.1.0.dev2024122805 build: 3.12release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024122705-3.12release.conda - sha256: fc0638c821e95d39231b2912d21a7dcac06b27dbb74099970e12c72d6399d553 - md5: b610bbf33c17a6cd3803441969021e94 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024122805-3.12release.conda + sha256: 00bb77ee09d7ec7aa407452fd11a227980cc273e738fbec28fe2c7f8df0b8d21 + md5: 6e0f158c866d00b4dd04602211e184cd depends: - - max-core ==25.1.0.dev2024122705 release + - max-core ==25.1.0.dev2024122805 release - python 3.12.* - fastapi - httpx @@ -7065,18 +7065,18 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 126488278 - timestamp: 1735276646129 + size: 126488257 + timestamp: 1735363020609 - kind: conda name: max-python - version: 25.1.0.dev2024122705 + version: 25.1.0.dev2024122805 build: 3.12release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024122705-3.12release.conda - sha256: 5f9ebe2d2db72339a02af83e1b19d3b1654f29d7d27239696147863d8a3099ac - md5: a4f4dde5759c45b2b6ab4c63443df95e + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024122805-3.12release.conda + sha256: 81c22f0a8d33e7d8091959a4bf837993246308712b22e384d0c853404ab45c15 + md5: 207d5360c0a7fcb6e8d7933e3a577a07 depends: - - max-core ==25.1.0.dev2024122705 release + - max-core ==25.1.0.dev2024122805 release - python 3.12.* - fastapi - httpx @@ -7099,17 +7099,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 113438495 - timestamp: 1735276875580 + size: 113429204 + timestamp: 1735365284899 - kind: conda name: mblack - version: 25.1.0.dev2024122705 + version: 25.1.0.dev2024122805 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122705-release.conda - sha256: 438131b7a1a9eed7b667fe5a0b0c3a99b77276ab3fb31b0d2d9dfa88dc2ac06f - md5: 8f0828de9e2cbceb70e9573f4d44dcc0 + url: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122805-release.conda + sha256: 46d7d50f46fc589cd4fd53c614020666b9ac4ea90d0d861bc2888ff8a8968fc7 + md5: e140a619b5afdf6730ee181c6ca0dd1d depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -7119,8 +7119,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130800 - timestamp: 1735276646126 + size: 130809 + timestamp: 1735363020604 - kind: conda name: mdurl version: 0.1.2 @@ -7155,21 +7155,21 @@ packages: timestamp: 1733258822603 - kind: conda name: mojo-jupyter - version: 25.1.0.dev2024122705 + version: 25.1.0.dev2024122805 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122705-release.conda - sha256: 277c342ea4164d79ee7ac0923bb29dda0c5b7ae14f00ae15b7da0cbd8e2c3741 - md5: 912349d661371a646442b3fb995521a9 + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122805-release.conda + sha256: cdfcbb3354be4888b5b86eab0b3ee26c1fdaf9df9e9421e2fe60ab18cd053402 + md5: 6606e99ea0f956a5f786bc5a376c4fa2 depends: - - max-core ==25.1.0.dev2024122705 release + - max-core ==25.1.0.dev2024122805 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22939 - timestamp: 1735276646127 + size: 22932 + timestamp: 1735363020605 - kind: conda name: multidict version: 6.1.0 @@ -8258,55 +8258,55 @@ packages: timestamp: 1728669902591 - kind: conda name: psutil - version: 6.1.0 - build: py312h0bf5046_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/psutil-6.1.0-py312h0bf5046_0.conda - sha256: 143a40f9c72d803744ebd6a60801c5cd17af152b293f8d59e90111ce62b53569 - md5: 61566f5c6e1d29d1d12882eb93e28532 + version: 6.1.1 + build: py312h66e93f0_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/psutil-6.1.1-py312h66e93f0_0.conda + sha256: 55d4fd0b294aeada0d7810fcc25503b59ec34c4390630789bd61c085b9ce649f + md5: add2c79595fa8a9b6d653d7e4e2cf05f depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 license: BSD-3-Clause license_family: BSD - size: 493431 - timestamp: 1729847279283 + size: 487053 + timestamp: 1735327468212 - kind: conda name: psutil - version: 6.1.0 - build: py312h66e93f0_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/psutil-6.1.0-py312h66e93f0_0.conda - sha256: 0f309b435174e037d5cfe5ed26c1c5ad8152c68cfe61af17709ec31ec3d9f096 - md5: 0524eb91d3d78d76d671c6e3cd7cee82 + version: 6.1.1 + build: py312hb2c0f52_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/psutil-6.1.1-py312hb2c0f52_0.conda + sha256: b2db43b7a2d01b998dadd91dd19c2de1f3778b5f8b7bf90020e35acf577cf79e + md5: 3bd3fe4f02e4ff211d9d35b6a3aed824 depends: - - __glibc >=2.17,<3.0.a0 - libgcc >=13 - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 license: BSD-3-Clause license_family: BSD - size: 488462 - timestamp: 1729847159916 + size: 487185 + timestamp: 1735327601306 - kind: conda name: psutil - version: 6.1.0 - build: py312hb2c0f52_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/psutil-6.1.0-py312hb2c0f52_0.conda - sha256: f6ac1a743440e4228ad00fd6ff1a4ed99736d215ca52318db73217d07cd7180b - md5: 98849e1e8ea2bcd57667359c0a36dd3b + version: 6.1.1 + build: py312hea69d52_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/psutil-6.1.1-py312hea69d52_0.conda + sha256: 90332053dad4056fe752217fa311ffa61cb37dc693b1721e37580e71a2a6fe04 + md5: 90724dac996a4e9d629a88a4b1ffe694 depends: - - libgcc >=13 + - __osx >=11.0 - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 license: BSD-3-Clause license_family: BSD - size: 488976 - timestamp: 1729847306692 + size: 495397 + timestamp: 1735327574477 - kind: conda name: pthread-stubs version: '0.4' diff --git a/examples/operators/magic.lock b/examples/operators/magic.lock index 02a2f02a62..0f45d17189 100644 --- a/examples/operators/magic.lock +++ b/examples/operators/magic.lock @@ -131,12 +131,12 @@ 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-25.1.0.dev2024122705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024122705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024122705-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024122805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024122805-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122805-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-25.1.0.dev2024122705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122805-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 @@ -349,12 +349,12 @@ 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-25.1.0.dev2024122705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024122705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024122705-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024122805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024122805-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122805-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-25.1.0.dev2024122705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122805-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 @@ -558,12 +558,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-25.1.0.dev2024122705-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024122705-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024122705-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122805-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024122805-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024122805-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122805-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-25.1.0.dev2024122705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122805-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 @@ -5892,76 +5892,76 @@ packages: timestamp: 1733219945697 - kind: conda name: max - version: 25.1.0.dev2024122705 + version: 25.1.0.dev2024122805 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122705-release.conda - sha256: 915cee0f8db3306792c7717e14f877276925d168b95f37e8b2e35416d1563920 - md5: 370a4e78ec709a5b4ac926f2229e961f - depends: - - max-core ==25.1.0.dev2024122705 release - - max-python >=25.1.0.dev2024122705,<26.0a0 - - mojo-jupyter ==25.1.0.dev2024122705 release - - mblack ==25.1.0.dev2024122705 release + url: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122805-release.conda + sha256: fe2812cf8bb718133a1ee6e2a720e0adb3a234443cd1bdb012ed3845fc100c7e + md5: d2ab5ff45c394ef59d4c89a35dbc0e20 + depends: + - max-core ==25.1.0.dev2024122805 release + - max-python >=25.1.0.dev2024122805,<26.0a0 + - mojo-jupyter ==25.1.0.dev2024122805 release + - mblack ==25.1.0.dev2024122805 release license: LicenseRef-Modular-Proprietary - size: 9908 - timestamp: 1735276646121 + size: 9913 + timestamp: 1735363020600 - kind: conda name: max-core - version: 25.1.0.dev2024122705 + version: 25.1.0.dev2024122805 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024122705-release.conda - sha256: 8bd565d34d7e04c5b2f0faef7139a6da9375a413ef7d78e410ad7ff8cb3ce88f - md5: 0888729c6e2dc47c60eea220d90ba7fb + url: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024122805-release.conda + sha256: d0f6942e8fb4461129dd0b3b459e5d975fa392661fbf9ce002992044249c7df0 + md5: 99412132bd807caa43dba507054a2691 depends: - - mblack ==25.1.0.dev2024122705 release + - mblack ==25.1.0.dev2024122805 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 245480850 - timestamp: 1735276702592 + size: 245436370 + timestamp: 1735363025528 - kind: conda name: max-core - version: 25.1.0.dev2024122705 + version: 25.1.0.dev2024122805 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024122705-release.conda - sha256: bd8c74ee47bae57872fd40efec49df8d21fbb668d0f4ec777498c25103f7e89d - md5: 1c3e0517ec78b93c3d8a3562fd5ea1ac + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024122805-release.conda + sha256: 19aa7627330555204af1573e241f86ced1f34e5773fe2047f03d2df77d296de7 + md5: c83934dfd0b0e2285a2959be586f8e4b depends: - - mblack ==25.1.0.dev2024122705 release + - mblack ==25.1.0.dev2024122805 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 249350600 - timestamp: 1735276646119 + size: 249341674 + timestamp: 1735363020598 - kind: conda name: max-core - version: 25.1.0.dev2024122705 + version: 25.1.0.dev2024122805 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024122705-release.conda - sha256: 2199e4897952016704225b19fa193f11400d18b2d08054ec1a3e5d120578b12f - md5: 874a5f8b35e6cde2d10f978ae37de6b9 + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024122805-release.conda + sha256: d65a30747c6623a9a73d02e35d617cf2425fc151839f18badbef093a045c1bd5 + md5: d45b98ffbd949783e9c8ee20e28a6970 depends: - - mblack ==25.1.0.dev2024122705 release + - mblack ==25.1.0.dev2024122805 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 214148461 - timestamp: 1735276875577 + size: 214123206 + timestamp: 1735365284895 - kind: conda name: max-python - version: 25.1.0.dev2024122705 + version: 25.1.0.dev2024122805 build: 3.12release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024122705-3.12release.conda - sha256: 0754a230be7ae3df9427d9c851d2e2bebb99d4b04c9e8e87c0d4c4ad99a55517 - md5: 1f7f91b1e9b7a78b02f57922417b477a + url: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024122805-3.12release.conda + sha256: 1666cdc4f1460979cb2bad7ddaa745256f137e03a32c8688a988f359bcc4a1b6 + md5: fda0864df873c814f836064daa86e4d6 depends: - - max-core ==25.1.0.dev2024122705 release + - max-core ==25.1.0.dev2024122805 release - python 3.12.* - fastapi - httpx @@ -5984,18 +5984,18 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 122815019 - timestamp: 1735276702602 + size: 122818679 + timestamp: 1735363025537 - kind: conda name: max-python - version: 25.1.0.dev2024122705 + version: 25.1.0.dev2024122805 build: 3.12release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024122705-3.12release.conda - sha256: fc0638c821e95d39231b2912d21a7dcac06b27dbb74099970e12c72d6399d553 - md5: b610bbf33c17a6cd3803441969021e94 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024122805-3.12release.conda + sha256: 00bb77ee09d7ec7aa407452fd11a227980cc273e738fbec28fe2c7f8df0b8d21 + md5: 6e0f158c866d00b4dd04602211e184cd depends: - - max-core ==25.1.0.dev2024122705 release + - max-core ==25.1.0.dev2024122805 release - python 3.12.* - fastapi - httpx @@ -6018,18 +6018,18 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 126488278 - timestamp: 1735276646129 + size: 126488257 + timestamp: 1735363020609 - kind: conda name: max-python - version: 25.1.0.dev2024122705 + version: 25.1.0.dev2024122805 build: 3.12release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024122705-3.12release.conda - sha256: 5f9ebe2d2db72339a02af83e1b19d3b1654f29d7d27239696147863d8a3099ac - md5: a4f4dde5759c45b2b6ab4c63443df95e + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024122805-3.12release.conda + sha256: 81c22f0a8d33e7d8091959a4bf837993246308712b22e384d0c853404ab45c15 + md5: 207d5360c0a7fcb6e8d7933e3a577a07 depends: - - max-core ==25.1.0.dev2024122705 release + - max-core ==25.1.0.dev2024122805 release - python 3.12.* - fastapi - httpx @@ -6052,17 +6052,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 113438495 - timestamp: 1735276875580 + size: 113429204 + timestamp: 1735365284899 - kind: conda name: mblack - version: 25.1.0.dev2024122705 + version: 25.1.0.dev2024122805 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122705-release.conda - sha256: 438131b7a1a9eed7b667fe5a0b0c3a99b77276ab3fb31b0d2d9dfa88dc2ac06f - md5: 8f0828de9e2cbceb70e9573f4d44dcc0 + url: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122805-release.conda + sha256: 46d7d50f46fc589cd4fd53c614020666b9ac4ea90d0d861bc2888ff8a8968fc7 + md5: e140a619b5afdf6730ee181c6ca0dd1d depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -6072,8 +6072,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130800 - timestamp: 1735276646126 + size: 130809 + timestamp: 1735363020604 - kind: conda name: mdurl version: 0.1.2 @@ -6092,21 +6092,21 @@ packages: timestamp: 1733255681319 - kind: conda name: mojo-jupyter - version: 25.1.0.dev2024122705 + version: 25.1.0.dev2024122805 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122705-release.conda - sha256: 277c342ea4164d79ee7ac0923bb29dda0c5b7ae14f00ae15b7da0cbd8e2c3741 - md5: 912349d661371a646442b3fb995521a9 + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122805-release.conda + sha256: cdfcbb3354be4888b5b86eab0b3ee26c1fdaf9df9e9421e2fe60ab18cd053402 + md5: 6606e99ea0f956a5f786bc5a376c4fa2 depends: - - max-core ==25.1.0.dev2024122705 release + - max-core ==25.1.0.dev2024122805 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22939 - timestamp: 1735276646127 + size: 22932 + timestamp: 1735363020605 - kind: conda name: multidict version: 6.1.0 diff --git a/magic.lock b/magic.lock index f50b5d9ae9..c019b7beb8 100644 --- a/magic.lock +++ b/magic.lock @@ -132,12 +132,12 @@ 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-25.1.0.dev2024122705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024122705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024122705-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024122805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024122805-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122805-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-25.1.0.dev2024122705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122805-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 @@ -351,12 +351,12 @@ 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-25.1.0.dev2024122705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024122705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024122705-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024122805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024122805-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122805-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-25.1.0.dev2024122705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122805-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 @@ -561,12 +561,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-25.1.0.dev2024122705-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024122705-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024122705-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122805-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024122805-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024122805-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122805-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-25.1.0.dev2024122705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122805-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 @@ -5910,76 +5910,76 @@ packages: timestamp: 1733219945697 - kind: conda name: max - version: 25.1.0.dev2024122705 + version: 25.1.0.dev2024122805 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122705-release.conda - sha256: 915cee0f8db3306792c7717e14f877276925d168b95f37e8b2e35416d1563920 - md5: 370a4e78ec709a5b4ac926f2229e961f - depends: - - max-core ==25.1.0.dev2024122705 release - - max-python >=25.1.0.dev2024122705,<26.0a0 - - mojo-jupyter ==25.1.0.dev2024122705 release - - mblack ==25.1.0.dev2024122705 release + url: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122805-release.conda + sha256: fe2812cf8bb718133a1ee6e2a720e0adb3a234443cd1bdb012ed3845fc100c7e + md5: d2ab5ff45c394ef59d4c89a35dbc0e20 + depends: + - max-core ==25.1.0.dev2024122805 release + - max-python >=25.1.0.dev2024122805,<26.0a0 + - mojo-jupyter ==25.1.0.dev2024122805 release + - mblack ==25.1.0.dev2024122805 release license: LicenseRef-Modular-Proprietary - size: 9908 - timestamp: 1735276646121 + size: 9913 + timestamp: 1735363020600 - kind: conda name: max-core - version: 25.1.0.dev2024122705 + version: 25.1.0.dev2024122805 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024122705-release.conda - sha256: 8bd565d34d7e04c5b2f0faef7139a6da9375a413ef7d78e410ad7ff8cb3ce88f - md5: 0888729c6e2dc47c60eea220d90ba7fb + url: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024122805-release.conda + sha256: d0f6942e8fb4461129dd0b3b459e5d975fa392661fbf9ce002992044249c7df0 + md5: 99412132bd807caa43dba507054a2691 depends: - - mblack ==25.1.0.dev2024122705 release + - mblack ==25.1.0.dev2024122805 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 245480850 - timestamp: 1735276702592 + size: 245436370 + timestamp: 1735363025528 - kind: conda name: max-core - version: 25.1.0.dev2024122705 + version: 25.1.0.dev2024122805 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024122705-release.conda - sha256: bd8c74ee47bae57872fd40efec49df8d21fbb668d0f4ec777498c25103f7e89d - md5: 1c3e0517ec78b93c3d8a3562fd5ea1ac + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024122805-release.conda + sha256: 19aa7627330555204af1573e241f86ced1f34e5773fe2047f03d2df77d296de7 + md5: c83934dfd0b0e2285a2959be586f8e4b depends: - - mblack ==25.1.0.dev2024122705 release + - mblack ==25.1.0.dev2024122805 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 249350600 - timestamp: 1735276646119 + size: 249341674 + timestamp: 1735363020598 - kind: conda name: max-core - version: 25.1.0.dev2024122705 + version: 25.1.0.dev2024122805 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024122705-release.conda - sha256: 2199e4897952016704225b19fa193f11400d18b2d08054ec1a3e5d120578b12f - md5: 874a5f8b35e6cde2d10f978ae37de6b9 + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024122805-release.conda + sha256: d65a30747c6623a9a73d02e35d617cf2425fc151839f18badbef093a045c1bd5 + md5: d45b98ffbd949783e9c8ee20e28a6970 depends: - - mblack ==25.1.0.dev2024122705 release + - mblack ==25.1.0.dev2024122805 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 214148461 - timestamp: 1735276875577 + size: 214123206 + timestamp: 1735365284895 - kind: conda name: max-python - version: 25.1.0.dev2024122705 + version: 25.1.0.dev2024122805 build: 3.12release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024122705-3.12release.conda - sha256: 0754a230be7ae3df9427d9c851d2e2bebb99d4b04c9e8e87c0d4c4ad99a55517 - md5: 1f7f91b1e9b7a78b02f57922417b477a + url: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024122805-3.12release.conda + sha256: 1666cdc4f1460979cb2bad7ddaa745256f137e03a32c8688a988f359bcc4a1b6 + md5: fda0864df873c814f836064daa86e4d6 depends: - - max-core ==25.1.0.dev2024122705 release + - max-core ==25.1.0.dev2024122805 release - python 3.12.* - fastapi - httpx @@ -6002,18 +6002,18 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 122815019 - timestamp: 1735276702602 + size: 122818679 + timestamp: 1735363025537 - kind: conda name: max-python - version: 25.1.0.dev2024122705 + version: 25.1.0.dev2024122805 build: 3.12release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024122705-3.12release.conda - sha256: fc0638c821e95d39231b2912d21a7dcac06b27dbb74099970e12c72d6399d553 - md5: b610bbf33c17a6cd3803441969021e94 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024122805-3.12release.conda + sha256: 00bb77ee09d7ec7aa407452fd11a227980cc273e738fbec28fe2c7f8df0b8d21 + md5: 6e0f158c866d00b4dd04602211e184cd depends: - - max-core ==25.1.0.dev2024122705 release + - max-core ==25.1.0.dev2024122805 release - python 3.12.* - fastapi - httpx @@ -6036,18 +6036,18 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 126488278 - timestamp: 1735276646129 + size: 126488257 + timestamp: 1735363020609 - kind: conda name: max-python - version: 25.1.0.dev2024122705 + version: 25.1.0.dev2024122805 build: 3.12release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024122705-3.12release.conda - sha256: 5f9ebe2d2db72339a02af83e1b19d3b1654f29d7d27239696147863d8a3099ac - md5: a4f4dde5759c45b2b6ab4c63443df95e + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024122805-3.12release.conda + sha256: 81c22f0a8d33e7d8091959a4bf837993246308712b22e384d0c853404ab45c15 + md5: 207d5360c0a7fcb6e8d7933e3a577a07 depends: - - max-core ==25.1.0.dev2024122705 release + - max-core ==25.1.0.dev2024122805 release - python 3.12.* - fastapi - httpx @@ -6070,17 +6070,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 113438495 - timestamp: 1735276875580 + size: 113429204 + timestamp: 1735365284899 - kind: conda name: mblack - version: 25.1.0.dev2024122705 + version: 25.1.0.dev2024122805 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122705-release.conda - sha256: 438131b7a1a9eed7b667fe5a0b0c3a99b77276ab3fb31b0d2d9dfa88dc2ac06f - md5: 8f0828de9e2cbceb70e9573f4d44dcc0 + url: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122805-release.conda + sha256: 46d7d50f46fc589cd4fd53c614020666b9ac4ea90d0d861bc2888ff8a8968fc7 + md5: e140a619b5afdf6730ee181c6ca0dd1d depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -6090,8 +6090,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130800 - timestamp: 1735276646126 + size: 130809 + timestamp: 1735363020604 - kind: conda name: mdurl version: 0.1.2 @@ -6110,21 +6110,21 @@ packages: timestamp: 1733255681319 - kind: conda name: mojo-jupyter - version: 25.1.0.dev2024122705 + version: 25.1.0.dev2024122805 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122705-release.conda - sha256: 277c342ea4164d79ee7ac0923bb29dda0c5b7ae14f00ae15b7da0cbd8e2c3741 - md5: 912349d661371a646442b3fb995521a9 + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122805-release.conda + sha256: cdfcbb3354be4888b5b86eab0b3ee26c1fdaf9df9e9421e2fe60ab18cd053402 + md5: 6606e99ea0f956a5f786bc5a376c4fa2 depends: - - max-core ==25.1.0.dev2024122705 release + - max-core ==25.1.0.dev2024122805 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22939 - timestamp: 1735276646127 + size: 22932 + timestamp: 1735363020605 - kind: conda name: multidict version: 6.1.0 From 739eae0647580b0ccde01e5ef10e3d262ee2dc41 Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Fri, 3 Jan 2025 19:42:42 -0800 Subject: [PATCH 148/509] [mojo-lang] Fix memberwise init synthesis vs `!lit.ref` arguments. Memberwise initializer synthesize was using "flip" instead of "set" to determine if one was already present, and considering 'ref' arguments to be part of the equation. This fixes https://github.com/modularml/mojo/issues/3617 MODULAR_ORIG_COMMIT_REV_ID: 1b596feebdb324d885e582ee1be3174a82a114b6 --- docs/changelog.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/docs/changelog.md b/docs/changelog.md index 74c5137d6e..69c235f28c 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -132,5 +132,8 @@ what we publish. - [Issue #3540](https://github.com/modularml/mojo/issues/3540) - Using named output slot breaks trait conformance +- [Issue #3617](https://github.com/modularml/mojo/issues/3617) - Can't generate + the constructors for a type wrapping `!lit.ref` + - The Mojo Language Server doesn't crash anymore on empty **init**.mojo files. [Issue #3826](https://github.com/modularml/mojo/issues/3826). From 9137d83e6eea1e8f374f746d4d2bc8c21b93e695 Mon Sep 17 00:00:00 2001 From: modularbot Date: Mon, 6 Jan 2025 20:59:34 +0000 Subject: [PATCH 149/509] Update lockfiles to point to latest nightly version: 25.1.0.dev2025010605 --- examples/life/magic.lock | 1450 ++++++++++++++++---------------- examples/magic.lock | 1395 ++++++++++++++++--------------- examples/notebooks/magic.lock | 1471 +++++++++++++++++---------------- examples/operators/magic.lock | 1395 ++++++++++++++++--------------- magic.lock | 1395 ++++++++++++++++--------------- 5 files changed, 3600 insertions(+), 3506 deletions(-) diff --git a/examples/life/magic.lock b/examples/life/magic.lock index 621b2095cd..3edbd9c9da 100644 --- a/examples/life/magic.lock +++ b/examples/life/magic.lock @@ -13,7 +13,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/alsa-lib-1.2.13-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.7.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.8.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aom-3.9.1-hac33072_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/attr-2.5.1-h166bdaf_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.3.0-pyh71513ae_0.conda @@ -43,7 +43,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.2-h3394656_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.12.14-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py312h06ac9bb_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda @@ -98,11 +98,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.16-hb7c19ff_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_h5888daf_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-h44a453e_6_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-hcb10f89_6_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-hcb10f89_6_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-h3ee7192_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-hd595efa_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-hcb10f89_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-hcb10f89_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-h08228c5_7_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libasprintf-0.22.5-he8f35ee_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libasprintf-devel-0.22.5-he8f35ee_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libavif16-1.1.1-h1909e37_2.conda @@ -116,7 +116,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.11.1-h332b0f4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libdb-6.2.32-h9c3ff4c_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.23-h4ddbbb0_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20191231-he28a2e2_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20240808-pl5321h7949ede_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libevent-2.1.12-hf998b51_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda @@ -131,10 +131,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hd5240d6_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.82.2-h2ff4ddf_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h77fa898_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.32.0-h804f50b_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.32.0-h0121fbd_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.33.0-h2b5623c_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.33.0-h0121fbd_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgpg-error-1.51-hbd13f7d_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.67.1-hc2c308b_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.67.1-h25350d4_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-hd590300_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-26_linux64_openblas.conda @@ -145,10 +145,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libogg-1.3.5-h4ab18f5_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.28-pthreads_h94d23a6_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopus-1.3.1-h7f98852_1.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-h081d1f1_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-h081d1f1_7_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.44-hadc24fc_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.2-h5b01275_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsndfile-1.2.2-hc60ed4a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.47.2-hee588c1_0.conda @@ -170,12 +170,12 @@ 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-25.1.0.dev2024122805-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024122805-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024122805-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025010605-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025010605-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025010605-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025010605-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-25.1.0.dev2024122805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025010605-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_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.15-py312h98912ed_1.conda @@ -183,7 +183,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-he02047a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.3-h5fbd93e_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.0-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.0-h7b32b05_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.29.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.29.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.29.0-pyhd8ed1ab_1.conda @@ -192,19 +192,19 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.29.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.50b0-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/opusfile-0.12-h3358134_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/orc-2.0.3-h97ab989_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/orc-2.0.3-h12ee42a_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.3-py312hf9745cd_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.44-hba22ea6_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-11.0.0-py312h7b63e92_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-11.1.0-py312h80c1187_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.44.2-h29eaf8c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/portaudio-19.6.0-h7c63dc7_9.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/portmidi-2.0.4-h7c63dc7_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.1-py312h66e93f0_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/protobuf-5.28.2-py312h2ec8cdc_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/protobuf-5.28.3-py312h2ec8cdc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pulseaudio-client-17.0-hb77b528_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-18.1.0-py312h7900ff3_0.conda @@ -212,7 +212,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.4-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.27.2-py312h12e396e_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.7.0-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.7.1-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pygame-2.6.1-py312h4fcb14b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyinstrument-5.0.0-py312h66e93f0_0.conda @@ -229,18 +229,18 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py312h66e93f0_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.0-py312hbf22597_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/rav1e-0.6.6-he8a937b_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/re2-2024.07.02-h77b4e00_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/re2-2024.07.02-h9925aae_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda - 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.10-hb5b8611_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/safetensors-0.5.0-py312h12e396e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/sdl2-2.30.10-h63c27ac_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/sdl2_image-2.8.2-h06ee604_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/sdl2_mixer-2.6.3-h8830914_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/sdl2_ttf-2.22.0-h287479f_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sdl2_ttf-2.24.0-h287479f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-h8bd8927_1.conda @@ -251,7 +251,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.21.0-py312h8360d73_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda @@ -289,7 +289,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/alsa-lib-1.2.13-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.7.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.8.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aom-3.9.1-hcccb83c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/attr-2.5.1-h4e544f5_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.3.0-pyh71513ae_0.conda @@ -319,7 +319,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cairo-1.18.2-h83712da_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.12.14-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cffi-1.17.1-py312hac81daf_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda @@ -374,11 +374,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lcms2-2.16-h922389a_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.0.0-h4de3ea5_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h5ad3122_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-h1b535d6_6_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h3b568fd_6_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h3b568fd_6_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h3ffb4b1_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h18dbdb1_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-hb7781cd_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h3b568fd_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h3b568fd_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h1e9d426_7_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libasprintf-0.22.5-h87f4aca_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libasprintf-devel-0.22.5-h87f4aca_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libavif16-1.1.1-h3b0c220_2.conda @@ -392,7 +392,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcurl-8.11.1-h6702fde_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libdb-6.2.32-h01db608_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libdeflate-1.23-h5e3c512_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20191231-he28a2e2_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20240808-pl5321h976ea20_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libev-4.33-h31becfc_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libevent-2.1.12-h4ba1bb4_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.6.4-h5ad3122_0.conda @@ -407,10 +407,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libglib-2.82.2-hc486b8e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-2.32.0-h3888205_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-storage-2.32.0-hb9b2b65_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-2.33.0-hccf9d24_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-storage-2.33.0-hb9b2b65_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgpg-error-1.51-h05609ea_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgrpc-1.67.1-h36c5df4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgrpc-1.67.1-hf7ccdd3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libiconv-1.17-h31becfc_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libjpeg-turbo-3.0.0-h31becfc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-26_linuxaarch64_openblas.conda @@ -421,10 +421,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libogg-1.3.5-h0b9eccb_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.28-pthreads_h9d3fd7e_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopus-1.3.1-hf897c2e_1.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-hfc78867_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-hfc78867_7_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.44-hc4a20ef_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.2-h029595c_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.3-h44a3b7b_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsndfile-1.2.2-h79657aa_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.20-h68df207_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.47.2-h5eb1b54_0.conda @@ -446,12 +446,12 @@ 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-25.1.0.dev2024122805-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024122805-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024122805-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025010605-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025010605-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025010605-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025010605-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-25.1.0.dev2024122805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025010605-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_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.15-py312hdd3e373_1.conda @@ -459,7 +459,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-hcccb83c_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openjpeg-2.5.3-h3f56577_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.0-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.0-hd08dc88_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.29.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.29.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.29.0-pyhd8ed1ab_1.conda @@ -468,19 +468,19 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.29.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.50b0-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/opusfile-0.12-hf55b2d5_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/orc-2.0.3-h3c55218_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/orc-2.0.3-hdd485aa_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pandas-2.2.3-py312ha2895bd_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pcre2-10.44-h070dd5b_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pillow-11.0.0-py312h5ab5af3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pillow-11.1.0-py312h719f0cf_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pixman-0.44.2-h86a87f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/portaudio-19.6.0-h5c6c0ed_9.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/portmidi-2.0.4-h5c6c0ed_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.2.1-py312hb2c0f52_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/protobuf-5.28.2-py312h6f74592_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/protobuf-5.28.3-py312h6f74592_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pthread-stubs-0.4-h86ecc28_1002.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pulseaudio-client-17.0-h729494f_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-18.1.0-py312h8025657_0.conda @@ -488,7 +488,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.4-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pydantic-core-2.27.2-py312h8cbf658_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.7.0-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.7.1-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pygame-2.6.1-py312hb2c8110_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyinstrument-5.0.0-py312hb2c0f52_0.conda @@ -505,18 +505,18 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyyaml-6.0.2-py312hb2c0f52_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyzmq-26.2.0-py312h2427ae1_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/rav1e-0.6.6-h1d8f897_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/re2-2024.07.02-h2d3a13d_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/re2-2024.07.02-haa97905_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8fc344f_1.conda - 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.10-h5df210e_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/safetensors-0.5.0-py312h8cbf658_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sdl2-2.30.10-h93e764a_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sdl2_image-2.8.2-hd95cb85_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sdl2_mixer-2.6.3-h422cae6_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sdl2_ttf-2.22.0-hb1608df_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sdl2_ttf-2.24.0-hb1608df_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-hd4fb6f5_1.conda @@ -527,7 +527,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.21.0-py312ha0d6ea1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py312h52516f5_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda @@ -563,7 +563,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.11-py312h998013c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.7.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.8.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aom-3.9.1-h7bae524_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.3.0-pyh71513ae_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-h8bc59a9_15.conda @@ -592,7 +592,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cairo-1.18.2-h6a3b0d2_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.12.14-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.1-py312h0fad829_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda @@ -642,11 +642,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lame-3.100-h1a8c8d9_1003.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.16-ha0e7c42_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_hf9b8971_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-h4a2f8bd_6_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-hf07054f_6_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-hf07054f_6_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-h86344ea_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_h07bc746_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-h0ad35bc_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-hf07054f_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-hf07054f_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-h4239455_7_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libasprintf-0.22.5-h8414b35_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libasprintf-devel-0.22.5-h8414b35_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libavif16-1.1.1-h45b7238_2.conda @@ -659,7 +659,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.11.1-h73640d1_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.6-ha82da77_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.23-hec38601_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20191231-hc8eb9b7_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20240808-pl5321hafb1f1b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libev-4.33-h93a5062_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libevent-2.1.12-h2757513_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.4-h286801f_0.conda @@ -670,9 +670,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libglib-2.82.2-h07bd6cf_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-2.32.0-h8d8be31_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-storage-2.32.0-h7081f7f_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgrpc-1.67.1-hc70892a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-2.33.0-hdbe95d5_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-storage-2.33.0-h7081f7f_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgrpc-1.67.1-h0a426d6_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.17-h0d3ecfb_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libintl-0.22.5-h8414b35_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libintl-devel-0.22.5-h8414b35_3.conda @@ -684,10 +684,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libogg-1.3.5-h99b78c6_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.28-openmp_hf332438_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopus-1.3.1-h27ca646_1.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-h636d7b7_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-h636d7b7_7_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.44-hc14010f_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.2-h8f0b736_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h2348fd5_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.3-h3bd63a1_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h07bc746_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsndfile-1.2.2-h9739721_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.47.2-h3f77e49_0.conda @@ -705,12 +705,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-25.1.0.dev2024122805-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024122805-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024122805-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025010605-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025010605-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025010605-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025010605-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-25.1.0.dev2024122805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025010605-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 @@ -718,7 +718,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h7bae524_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openjpeg-2.5.3-h8a3d83b_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.0-h39f12f2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.0-h81ee809_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.29.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.29.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.29.0-pyhd8ed1ab_1.conda @@ -727,26 +727,26 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.29.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.50b0-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/opusfile-0.12-h5643135_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/orc-2.0.3-hbcee414_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/orc-2.0.3-h0ff2369_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.3-py312hcd31e36_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pcre2-10.44-h297a79d_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-11.0.0-py312haf37ca6_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-11.1.0-py312h50aef2c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pixman-0.44.2-h2f9eb0b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/portaudio-19.6.0-h13dd4ca_9.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/portmidi-2.0.4-h13dd4ca_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.1-py312hea69d52_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/protobuf-5.28.2-py312hf02c72a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/protobuf-5.28.3-py312hd8f9ff3_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pthread-stubs-0.4-hd74edd7_1002.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-18.1.0-py312h1f38498_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-18.1.0-py312hc40f475_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.4-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.27.2-py312hcd83bfe_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.7.0-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.7.1-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pygame-2.6.1-py312hb14fe3b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyinstrument-5.0.0-py312h0bf5046_0.conda @@ -763,17 +763,17 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py312h024a12e_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.0-py312hf8a1cbd_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/rav1e-0.6.6-h69fbcac_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/re2-2024.07.02-hcd0e937_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/re2-2024.07.02-h6589ca4_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h92ec313_1.conda - 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/safetensors-0.5.0-py312hcd83bfe_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 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sdl2_mixer-2.6.3-h4fe3bdc_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sdl2_ttf-2.22.0-h443c5de_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sdl2_ttf-2.24.0-h443c5de_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-h98b9ce2_1.conda @@ -784,7 +784,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.21.0-py312hf3e4074_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda @@ -1008,13 +1008,13 @@ packages: timestamp: 1733247158254 - kind: conda name: anyio - version: 4.7.0 + version: 4.8.0 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/anyio-4.7.0-pyhd8ed1ab_0.conda - sha256: 687537ee3af30f8784986bf40cac30e88138770b16e51ca9850c9c23c09aeba1 - md5: c88107912954a983c2caf25f7fd55158 + url: https://conda.anaconda.org/conda-forge/noarch/anyio-4.8.0-pyhd8ed1ab_0.conda + sha256: f1455d2953e3eb6d71bc49881c8558d8e01888469dfd21061dd48afb6183e836 + md5: 848d25bfbadf020ee4d4ba90e5668252 depends: - exceptiongroup >=1.0.2 - idna >=2.8 @@ -1026,8 +1026,8 @@ packages: - uvloop >=0.21 license: MIT license_family: MIT - size: 112730 - timestamp: 1733532678437 + size: 115305 + timestamp: 1736174485476 - kind: conda name: aom version: 3.9.1 @@ -2488,20 +2488,19 @@ packages: timestamp: 1725561779888 - kind: conda name: charset-normalizer - version: 3.4.0 - build: pyhd8ed1ab_1 - build_number: 1 + version: 3.4.1 + build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_1.conda - sha256: 63022ee2c6a157a9f980250a66f54bdcdf5abee817348d0f9a74c2441a6fbf0e - md5: 6581a17bba6b948bb60130026404a9d6 + url: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda + sha256: 4e0ee91b97e5de3e74567bdacea27f0139709fceca4db8adffbe24deffccb09b + md5: e83a31202d1c0a000fce3e9cf3825875 depends: - python >=3.9 license: MIT license_family: MIT - size: 47533 - timestamp: 1733218182393 + size: 47438 + timestamp: 1735929811779 - kind: conda name: click version: 8.1.8 @@ -3800,6 +3799,7 @@ packages: - markupsafe >=2.0 - python >=3.9 license: BSD-3-Clause + license_family: BSD size: 112561 timestamp: 1734824044952 - kind: conda @@ -4094,32 +4094,31 @@ packages: - kind: conda name: libabseil version: '20240722.0' - build: cxx17_h5888daf_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_h5888daf_1.conda - sha256: 8f91429091183c26950f1e7ffa730e8632f0627ba35d2fccd71df31628c9b4e5 - md5: e1f604644fe8d78e22660e2fec6756bc + build: cxx17_h07bc746_4 + build_number: 4 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_h07bc746_4.conda + sha256: 05fa5e5e908962b9c5aba95f962e2ca81d9599c4715aebe5e4ddb72b309d1770 + md5: c2d95bd7aa8d564a9bd7eca5e571a5b3 depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libstdcxx >=13 + - __osx >=11.0 + - libcxx >=18 constrains: - libabseil-static =20240722.0=cxx17* - abseil-cpp =20240722.0 license: Apache-2.0 license_family: Apache - size: 1310521 - timestamp: 1727295454064 + size: 1178260 + timestamp: 1736008642885 - kind: conda name: libabseil version: '20240722.0' - build: cxx17_h5ad3122_1 - build_number: 1 + build: cxx17_h18dbdb1_4 + build_number: 4 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h5ad3122_1.conda - sha256: 590e47dce38031a8893e70491f3b71e214de7781cab53b6f017aa6f6841cb076 - md5: 6fe6b3694c4792a8e26755d3b06f0b80 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h18dbdb1_4.conda + sha256: bb6c5fb3b8de5f90735c5252b57efb3c268ee222c755569dac18065f05147670 + md5: 633b9fe454ffea2aaf29e191d946a83b depends: - libgcc >=13 - libstdcxx >=13 @@ -4128,37 +4127,39 @@ packages: - libabseil-static =20240722.0=cxx17* license: Apache-2.0 license_family: Apache - size: 1328502 - timestamp: 1727295490806 + size: 1334844 + timestamp: 1736008472455 - kind: conda name: libabseil version: '20240722.0' - build: cxx17_hf9b8971_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_hf9b8971_1.conda - sha256: 90bf08a75506dfcf28a70977da8ab050bcf594cd02abd3a9d84a22c9e8161724 - md5: 706da5e791c569a7b9814877098a6a0a + build: cxx17_hbbce691_4 + build_number: 4 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda + sha256: 143a586aa67d50622ef703de57b9d43f44945836d6568e0e7aa174bd8c45e0d4 + md5: 488f260ccda0afaf08acb286db439c2f depends: - - __osx >=11.0 - - libcxx >=17 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 constrains: - libabseil-static =20240722.0=cxx17* - abseil-cpp =20240722.0 license: Apache-2.0 license_family: Apache - size: 1179072 - timestamp: 1727295571173 + size: 1311599 + timestamp: 1736008414161 - kind: conda name: libarrow version: 18.1.0 - build: h1b535d6_6_cpu - build_number: 6 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-h1b535d6_6_cpu.conda - sha256: 087b579aebf351ca41c54214121d86a15a41c92051cbd432d6f3a3f58a8c31b0 - md5: 4c0ad68efba1113ac5833975c67b565d + build: h0ad35bc_7_cpu + build_number: 7 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-h0ad35bc_7_cpu.conda + sha256: 4fbdd8bb89d912bf03f10f9373a8d96a1cdd7a7851e107393418a3d2715bc27e + md5: 4ba2173203f44bbf03d19aaba6ed07d3 depends: + - __osx >=11.0 - aws-crt-cpp >=0.29.7,<0.29.8.0a0 - aws-sdk-cpp >=1.11.458,<1.11.459.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 @@ -4166,17 +4167,15 @@ packages: - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 - bzip2 >=1.0.8,<2.0a0 - - gflags >=2.2.2,<2.3.0a0 - glog >=0.7.1,<0.8.0a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - libbrotlidec >=1.1.0,<1.2.0a0 - libbrotlienc >=1.1.0,<1.2.0a0 - - libgcc >=13 - - libgoogle-cloud >=2.32.0,<2.33.0a0 - - libgoogle-cloud-storage >=2.32.0,<2.33.0a0 + - libcxx >=18 + - libgoogle-cloud >=2.33.0,<2.34.0a0 + - libgoogle-cloud-storage >=2.33.0,<2.34.0a0 - libre2-11 >=2024.7.2 - - libstdcxx >=13 - libutf8proc >=2.9.0,<2.10.0a0 - libzlib >=1.3.1,<2.0a0 - lz4-c >=1.10.0,<1.11.0a0 @@ -4185,24 +4184,23 @@ packages: - snappy >=1.2.1,<1.3.0a0 - zstd >=1.5.6,<1.6.0a0 constrains: - - parquet-cpp <0.0a0 - arrow-cpp <0.0a0 + - parquet-cpp <0.0a0 - apache-arrow-proc =*=cpu license: Apache-2.0 license_family: APACHE - size: 8040629 - timestamp: 1733810319239 + size: 5506699 + timestamp: 1735682962976 - kind: conda name: libarrow version: 18.1.0 - build: h44a453e_6_cpu - build_number: 6 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-h44a453e_6_cpu.conda - sha256: abf17e99b03356a9d6248e965826c1352ff01b00d3a62cc51393bb0744d72803 - md5: 2cf6d608d6e66506f69797d5c6944c35 + build: hb7781cd_7_cpu + build_number: 7 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-hb7781cd_7_cpu.conda + sha256: f6107506bd16788560b47a4d18c1457b4df30a49334364d32613fe3f53ba6cbb + md5: 98cf7127ca7b3854c5d1c8bef1ed6e53 depends: - - __glibc >=2.17,<3.0.a0 - aws-crt-cpp >=0.29.7,<0.29.8.0a0 - aws-sdk-cpp >=1.11.458,<1.11.459.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 @@ -4217,8 +4215,8 @@ packages: - libbrotlidec >=1.1.0,<1.2.0a0 - libbrotlienc >=1.1.0,<1.2.0a0 - libgcc >=13 - - libgoogle-cloud >=2.32.0,<2.33.0a0 - - libgoogle-cloud-storage >=2.32.0,<2.33.0a0 + - libgoogle-cloud >=2.33.0,<2.34.0a0 + - libgoogle-cloud-storage >=2.33.0,<2.34.0a0 - libre2-11 >=2024.7.2 - libstdcxx >=13 - libutf8proc >=2.9.0,<2.10.0a0 @@ -4229,24 +4227,24 @@ packages: - snappy >=1.2.1,<1.3.0a0 - zstd >=1.5.6,<1.6.0a0 constrains: - - parquet-cpp <0.0a0 - arrow-cpp <0.0a0 + - parquet-cpp <0.0a0 - apache-arrow-proc =*=cpu license: Apache-2.0 license_family: APACHE - size: 8786061 - timestamp: 1733810643966 + size: 8026714 + timestamp: 1735685336542 - kind: conda name: libarrow version: 18.1.0 - build: h4a2f8bd_6_cpu - build_number: 6 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-h4a2f8bd_6_cpu.conda - sha256: 9ed3ea1bc15005c0df187268ef91407afaa908cf82f36f5acbbf50ac24d7f806 - md5: 835cdd84195b84dc34d128bd5d3580b9 + build: hd595efa_7_cpu + build_number: 7 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-hd595efa_7_cpu.conda + sha256: 554ffa338264c1dc34d95adb7eb856d50a2f25e7fa303a1a51e4372301b7c96f + md5: 08d4aff5ee6dee9a1b9ab13fca927697 depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 - aws-crt-cpp >=0.29.7,<0.29.8.0a0 - aws-sdk-cpp >=1.11.458,<1.11.459.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 @@ -4254,15 +4252,17 @@ packages: - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 - bzip2 >=1.0.8,<2.0a0 + - gflags >=2.2.2,<2.3.0a0 - glog >=0.7.1,<0.8.0a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - libbrotlidec >=1.1.0,<1.2.0a0 - libbrotlienc >=1.1.0,<1.2.0a0 - - libcxx >=18 - - libgoogle-cloud >=2.32.0,<2.33.0a0 - - libgoogle-cloud-storage >=2.32.0,<2.33.0a0 + - libgcc >=13 + - libgoogle-cloud >=2.33.0,<2.34.0a0 + - libgoogle-cloud-storage >=2.33.0,<2.34.0a0 - libre2-11 >=2024.7.2 + - libstdcxx >=13 - libutf8proc >=2.9.0,<2.10.0a0 - libzlib >=1.3.1,<2.0a0 - lz4-c >=1.10.0,<1.11.0a0 @@ -4271,190 +4271,190 @@ packages: - snappy >=1.2.1,<1.3.0a0 - zstd >=1.5.6,<1.6.0a0 constrains: - - apache-arrow-proc =*=cpu - arrow-cpp <0.0a0 - parquet-cpp <0.0a0 + - apache-arrow-proc =*=cpu license: Apache-2.0 license_family: APACHE - size: 5494797 - timestamp: 1733808145854 + size: 8770256 + timestamp: 1735684696564 - kind: conda name: libarrow-acero version: 18.1.0 - build: h3b568fd_6_cpu - build_number: 6 + build: h3b568fd_7_cpu + build_number: 7 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h3b568fd_6_cpu.conda - sha256: fdb70e2499e59b730084ecd53008b361a6f6090b5fb49624feda06b7e84c7b8c - md5: c50907eefe2ae22d826e7cb2e4d712f5 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h3b568fd_7_cpu.conda + sha256: 42cbfc87096f745d565d814d65b7228c82d985f1898859d5e456016d73e81c82 + md5: 4c1d8c3feea249782148d3cd6a25392e depends: - - libarrow 18.1.0 h1b535d6_6_cpu + - libarrow 18.1.0 hb7781cd_7_cpu - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 license_family: APACHE - size: 578091 - timestamp: 1733810378092 + size: 578222 + timestamp: 1735685424850 - kind: conda name: libarrow-acero version: 18.1.0 - build: hcb10f89_6_cpu - build_number: 6 + build: hcb10f89_7_cpu + build_number: 7 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-hcb10f89_6_cpu.conda - sha256: a32fa1d71415afc02b5cf3cd4c0a6ec0af9e749308829cc65ff79689222ce479 - md5: 143f9288b64759a6427563f058c62f2b + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-hcb10f89_7_cpu.conda + sha256: 87ea5d6a84d922d73975dce8661fccf257e72e755175b12c30e1181a34e37987 + md5: 12d84228204c56fec6ed113288014d11 depends: - __glibc >=2.17,<3.0.a0 - - libarrow 18.1.0 h44a453e_6_cpu + - libarrow 18.1.0 hd595efa_7_cpu - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 license_family: APACHE - size: 611745 - timestamp: 1733810698469 + size: 612463 + timestamp: 1735684749868 - kind: conda name: libarrow-acero version: 18.1.0 - build: hf07054f_6_cpu - build_number: 6 + build: hf07054f_7_cpu + build_number: 7 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-hf07054f_6_cpu.conda - sha256: e1cae46409927470439ef9ae93ed09b3493d0579501ca9ebfa79ded212ee98d8 - md5: 97fc01254714e1572624baefdd7cc898 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-hf07054f_7_cpu.conda + sha256: 86e20cebfdb4f335e98265c1b88f5053bf3e3648768a317856295846bfdbf2b4 + md5: 3eaf71fe987de13061db795e03bb1a1c depends: - __osx >=11.0 - - libarrow 18.1.0 h4a2f8bd_6_cpu + - libarrow 18.1.0 h0ad35bc_7_cpu - libcxx >=18 license: Apache-2.0 license_family: APACHE - size: 483713 - timestamp: 1733808246880 + size: 485185 + timestamp: 1735683071232 - kind: conda name: libarrow-dataset version: 18.1.0 - build: h3b568fd_6_cpu - build_number: 6 + build: h3b568fd_7_cpu + build_number: 7 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h3b568fd_6_cpu.conda - sha256: 2a08f5a1017ff660c37ae0c24343a119cb2511c6edd69e23d0a5090a0967ea35 - md5: bb1548ad011c4f9107fcc4cc548473bf + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h3b568fd_7_cpu.conda + sha256: 13ba7d3d08015aa26569eca9e198e2f8b2a0cd2d9c420e41c78cc2e5d5170f26 + md5: f39f5d725c2ca94c2e7b19e2717fd4ab depends: - - libarrow 18.1.0 h1b535d6_6_cpu - - libarrow-acero 18.1.0 h3b568fd_6_cpu + - libarrow 18.1.0 hb7781cd_7_cpu + - libarrow-acero 18.1.0 h3b568fd_7_cpu - libgcc >=13 - - libparquet 18.1.0 hfc78867_6_cpu + - libparquet 18.1.0 hfc78867_7_cpu - libstdcxx >=13 license: Apache-2.0 license_family: APACHE - size: 559673 - timestamp: 1733810461646 + size: 560329 + timestamp: 1735685518922 - kind: conda name: libarrow-dataset version: 18.1.0 - build: hcb10f89_6_cpu - build_number: 6 + build: hcb10f89_7_cpu + build_number: 7 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-hcb10f89_6_cpu.conda - sha256: 74eeb178070002842d3ed721769399320e3a68a0843319eaf899a092a31def26 - md5: 20ca46a6bc714a6ab189d5b3f46e66d8 + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-hcb10f89_7_cpu.conda + sha256: 99c12511fba79c7947f78d676eae5857659084f687f375f68bc20bd4cddb0a0e + md5: 0a81eb63d7cd150f598c752e86388d57 depends: - __glibc >=2.17,<3.0.a0 - - libarrow 18.1.0 h44a453e_6_cpu - - libarrow-acero 18.1.0 hcb10f89_6_cpu + - libarrow 18.1.0 hd595efa_7_cpu + - libarrow-acero 18.1.0 hcb10f89_7_cpu - libgcc >=13 - - libparquet 18.1.0 h081d1f1_6_cpu + - libparquet 18.1.0 h081d1f1_7_cpu - libstdcxx >=13 license: Apache-2.0 license_family: APACHE - size: 586627 - timestamp: 1733810842604 + size: 587497 + timestamp: 1735684880531 - kind: conda name: libarrow-dataset version: 18.1.0 - build: hf07054f_6_cpu - build_number: 6 + build: hf07054f_7_cpu + build_number: 7 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-hf07054f_6_cpu.conda - sha256: 6eba942ce926419f74e6e0a7c3994a7d78ab6be47115e6bb70e02136554736be - md5: 0774276be6659aaa0007f1b0f6ee19b0 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-hf07054f_7_cpu.conda + sha256: 52c5c4e9cd5f2ac91dcebb6a920ab2536febcea116ff8767e5439329d7da820b + md5: 97a2d3606682d94f7d73112e9ad684ae depends: - __osx >=11.0 - - libarrow 18.1.0 h4a2f8bd_6_cpu - - libarrow-acero 18.1.0 hf07054f_6_cpu + - libarrow 18.1.0 h0ad35bc_7_cpu + - libarrow-acero 18.1.0 hf07054f_7_cpu - libcxx >=18 - - libparquet 18.1.0 h636d7b7_6_cpu + - libparquet 18.1.0 h636d7b7_7_cpu license: Apache-2.0 license_family: APACHE - size: 489948 - timestamp: 1733809328231 + size: 491237 + timestamp: 1735684688308 - kind: conda name: libarrow-substrait version: 18.1.0 - build: h3ee7192_6_cpu - build_number: 6 + build: h08228c5_7_cpu + build_number: 7 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-h3ee7192_6_cpu.conda - sha256: bda6728db019dd0c409b1996ad9ef6ab0bcee3a94dc66a8045e8c1049c566055 - md5: aa313b3168caf98d00b3753f5ba27650 + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-h08228c5_7_cpu.conda + sha256: 53ea53a06e137c2f81ebfdff3f978babb8b59e31f705a19b57056ec8754c1abf + md5: e128def53c133e8a23ac00cd4a479335 depends: - __glibc >=2.17,<3.0.a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.1.0 h44a453e_6_cpu - - libarrow-acero 18.1.0 hcb10f89_6_cpu - - libarrow-dataset 18.1.0 hcb10f89_6_cpu + - libarrow 18.1.0 hd595efa_7_cpu + - libarrow-acero 18.1.0 hcb10f89_7_cpu + - libarrow-dataset 18.1.0 hcb10f89_7_cpu - libgcc >=13 - - libprotobuf >=5.28.2,<5.28.3.0a0 + - libprotobuf >=5.28.3,<5.28.4.0a0 - libstdcxx >=13 license: Apache-2.0 license_family: APACHE - size: 519989 - timestamp: 1733810903274 + size: 521861 + timestamp: 1735684940668 - kind: conda name: libarrow-substrait version: 18.1.0 - build: h3ffb4b1_6_cpu - build_number: 6 + build: h1e9d426_7_cpu + build_number: 7 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h3ffb4b1_6_cpu.conda - sha256: 9f78c55c5d7122e588a6f226cbf7e909c479d66ed18edc633d68324323d386b9 - md5: 5db2e6832397b8ca70a6f7b00e0c3629 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h1e9d426_7_cpu.conda + sha256: 252e2a0d8c733f36b50499786480a05a59577d617f291868149c80534c1e8ffc + md5: 6da921d9e1c4e2ab2679eeea7cbd4c82 depends: - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.1.0 h1b535d6_6_cpu - - libarrow-acero 18.1.0 h3b568fd_6_cpu - - libarrow-dataset 18.1.0 h3b568fd_6_cpu + - libarrow 18.1.0 hb7781cd_7_cpu + - libarrow-acero 18.1.0 h3b568fd_7_cpu + - libarrow-dataset 18.1.0 h3b568fd_7_cpu - libgcc >=13 - - libprotobuf >=5.28.2,<5.28.3.0a0 + - libprotobuf >=5.28.3,<5.28.4.0a0 - libstdcxx >=13 license: Apache-2.0 license_family: APACHE - size: 515928 - timestamp: 1733810503359 + size: 516014 + timestamp: 1735685565929 - kind: conda name: libarrow-substrait version: 18.1.0 - build: h86344ea_6_cpu - build_number: 6 + build: h4239455_7_cpu + build_number: 7 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-h86344ea_6_cpu.conda - sha256: bafd9ca59ebb5ad34b77aff316ef7b59c5fb1eb8a7b6a15de8dcbdf3ce37556d - md5: c1c162f5bf569cff8bed6def705a899f + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-h4239455_7_cpu.conda + sha256: a45bbdd6932aed972d6c6ce30a7439aa8ec9d9b8ee5affb350d41e50abdc0127 + md5: 91927747173f65695e441346c7145e26 depends: - __osx >=11.0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.1.0 h4a2f8bd_6_cpu - - libarrow-acero 18.1.0 hf07054f_6_cpu - - libarrow-dataset 18.1.0 hf07054f_6_cpu + - libarrow 18.1.0 h0ad35bc_7_cpu + - libarrow-acero 18.1.0 hf07054f_7_cpu + - libarrow-dataset 18.1.0 hf07054f_7_cpu - libcxx >=18 - - libprotobuf >=5.28.2,<5.28.3.0a0 + - libprotobuf >=5.28.3,<5.28.4.0a0 license: Apache-2.0 license_family: APACHE - size: 451623 - timestamp: 1733809487176 + size: 452385 + timestamp: 1735684993831 - kind: conda name: libasprintf version: 0.22.5 @@ -5095,51 +5095,50 @@ packages: timestamp: 1734373971372 - kind: conda name: libedit - version: 3.1.20191231 - build: hc8eb9b7_2 - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20191231-hc8eb9b7_2.tar.bz2 - sha256: 3912636197933ecfe4692634119e8644904b41a58f30cad9d1fc02f6ba4d9fca - md5: 30e4362988a2623e9eb34337b83e01f9 + version: 3.1.20240808 + build: pl5321h7949ede_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20240808-pl5321h7949ede_0.conda + sha256: 4d0d69ddf9cc7d724a1ccf3a9852e44c8aea9825692582bac2c4e8d21ec95ccd + md5: 8247f80f3dc464d9322e85007e307fe8 depends: - - ncurses >=6.2,<7.0.0a0 + - ncurses + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - ncurses >=6.5,<7.0a0 license: BSD-2-Clause - license_family: BSD - size: 96607 - timestamp: 1597616630749 + size: 134657 + timestamp: 1736191912705 - kind: conda name: libedit - version: 3.1.20191231 - build: he28a2e2_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20191231-he28a2e2_2.tar.bz2 - sha256: a57d37c236d8f7c886e01656f4949d9dcca131d2a0728609c6f7fa338b65f1cf - md5: 4d331e44109e3f0e19b4cb8f9b82f3e1 + version: 3.1.20240808 + build: pl5321h976ea20_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20240808-pl5321h976ea20_0.conda + sha256: 031daea98cf278f858b7957ad5dc475f1b5673cd5e718850529401ced64cef2c + md5: 0be40129d3dd1a152fff29a85f0785d0 depends: - - libgcc-ng >=7.5.0 - - ncurses >=6.2,<7.0.0a0 + - ncurses + - libgcc >=13 + - ncurses >=6.5,<7.0a0 license: BSD-2-Clause - license_family: BSD - size: 123878 - timestamp: 1597616541093 + size: 148120 + timestamp: 1736192137151 - kind: conda name: libedit - version: 3.1.20191231 - build: he28a2e2_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20191231-he28a2e2_2.tar.bz2 - sha256: debc31fb2f07ba2b0363f90e455873670734082822926ba4a9556431ec0bf36d - md5: 29371161d77933a54fccf1bb66b96529 + version: 3.1.20240808 + build: pl5321hafb1f1b_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20240808-pl5321hafb1f1b_0.conda + sha256: fb934d7a03279ec8eae4bf1913ac9058fcf6fed35290d8ffa6e04157f396a3b1 + md5: af89aa84ffb5ee551ce0c137b951a3b5 depends: - - libgcc-ng >=7.5.0 - - ncurses >=6.2,<7.0.0a0 + - ncurses + - __osx >=11.0 + - ncurses >=6.5,<7.0a0 license: BSD-2-Clause - license_family: BSD - size: 134104 - timestamp: 1597617110769 + size: 107634 + timestamp: 1736192034117 - kind: conda name: libev version: '4.33' @@ -5761,138 +5760,144 @@ packages: timestamp: 1729089357313 - kind: conda name: libgoogle-cloud - version: 2.32.0 - build: h3888205_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-2.32.0-h3888205_0.conda - sha256: 36af2844ce8fafd477214d51117746144461132f76759a7d29963b4583b577be - md5: a40b948bf4eabcc1ce708c40ffd7c06d + version: 2.33.0 + build: h2b5623c_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.33.0-h2b5623c_1.conda + sha256: ae48ee93e2c226bf682f1e389c2fd51ae7bf77c2ce4b3aee069764f4be1c63f2 + md5: 61829a8dd5f4e2327e707572065bae41 depends: + - __glibc >=2.17,<3.0.a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libcurl >=8.10.1,<9.0a0 + - libcurl >=8.11.1,<9.0a0 - libgcc >=13 - libgrpc >=1.67.1,<1.68.0a0 - - libprotobuf >=5.28.2,<5.28.3.0a0 + - libprotobuf >=5.28.3,<5.28.4.0a0 - libstdcxx >=13 - openssl >=3.4.0,<4.0a0 constrains: - - libgoogle-cloud 2.32.0 *_0 + - libgoogle-cloud 2.33.0 *_1 license: Apache-2.0 license_family: Apache - size: 1248560 - timestamp: 1733512309504 + size: 1254656 + timestamp: 1735648569457 - kind: conda name: libgoogle-cloud - version: 2.32.0 - build: h804f50b_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.32.0-h804f50b_0.conda - sha256: 126856add750013390dff664a3c3cd0f6f0cbbc683b0025a7ce9d1618968bc70 - md5: 3d96df4d6b1c88455e05b94ce8a14a53 + version: 2.33.0 + build: hccf9d24_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-2.33.0-hccf9d24_1.conda + sha256: d3d4def86d880431928799ba90ca97e57c2f05677c03af8de2337502926c492c + md5: a2724014eb04f14bd71d35f45b062dd0 depends: - - __glibc >=2.17,<3.0.a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libcurl >=8.10.1,<9.0a0 + - libcurl >=8.11.1,<9.0a0 - libgcc >=13 - libgrpc >=1.67.1,<1.68.0a0 - - libprotobuf >=5.28.2,<5.28.3.0a0 + - libprotobuf >=5.28.3,<5.28.4.0a0 - libstdcxx >=13 - openssl >=3.4.0,<4.0a0 constrains: - - libgoogle-cloud 2.32.0 *_0 + - libgoogle-cloud 2.33.0 *_1 license: Apache-2.0 license_family: Apache - size: 1249557 - timestamp: 1733512191906 + size: 1253019 + timestamp: 1735649566849 - kind: conda name: libgoogle-cloud - version: 2.32.0 - build: h8d8be31_0 + version: 2.33.0 + build: hdbe95d5_1 + build_number: 1 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-2.32.0-h8d8be31_0.conda - sha256: 722e49dbdc4486105d9f5b79a7ba4f9064602fe20c4015e97684c898ab8d3386 - md5: d7ab9e0eb7d55eac4943913073de61d7 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-2.33.0-hdbe95d5_1.conda + sha256: ce95aca02451694a4154c7770b6addf4fb859abf17912de6ec947da8469a56ce + md5: 91de1fbab8610974c0094c266bc63435 depends: - __osx >=11.0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libcurl >=8.10.1,<9.0a0 + - libcurl >=8.11.1,<9.0a0 - libcxx >=18 - libgrpc >=1.67.1,<1.68.0a0 - - libprotobuf >=5.28.2,<5.28.3.0a0 + - libprotobuf >=5.28.3,<5.28.4.0a0 - openssl >=3.4.0,<4.0a0 constrains: - - libgoogle-cloud 2.32.0 *_0 + - libgoogle-cloud 2.33.0 *_1 license: Apache-2.0 license_family: Apache - size: 876210 - timestamp: 1733512539476 + size: 877594 + timestamp: 1735648230965 - kind: conda name: libgoogle-cloud-storage - version: 2.32.0 - build: h0121fbd_0 + version: 2.33.0 + build: h0121fbd_1 + build_number: 1 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.32.0-h0121fbd_0.conda - sha256: d1b53d17df38b52a4bc6d1fe6af0e611d6480ce10b0af570c84bd38c8aa83b91 - md5: 877a5ec0431a5af83bf0cd0522bfe661 + url: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.33.0-h0121fbd_1.conda + sha256: 41022523320ca8633a6c615710823e596efadb50f06d724e1a0c81e27994f257 + md5: b0cfb5044685a7a9fa43ae669124f0a0 depends: - __glibc >=2.17,<3.0.a0 - libabseil - libcrc32c >=1.1.2,<1.2.0a0 - libcurl - libgcc >=13 - - libgoogle-cloud 2.32.0 h804f50b_0 + - libgoogle-cloud 2.33.0 h2b5623c_1 - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - openssl license: Apache-2.0 license_family: Apache - size: 782108 - timestamp: 1733512329104 + size: 784357 + timestamp: 1735648759177 - kind: conda name: libgoogle-cloud-storage - version: 2.32.0 - build: h7081f7f_0 + version: 2.33.0 + build: h7081f7f_1 + build_number: 1 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-storage-2.32.0-h7081f7f_0.conda - sha256: 609df2cf376ba66460f40143f835fc567cae4458df80705587cd2efd59c09bf1 - md5: 28f5ab5cf95170dfacd05d2bb301e573 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-storage-2.33.0-h7081f7f_1.conda + sha256: c0524a22064bc17f5c037da09ba54cc9e767741ef645178e499750c44bec2531 + md5: af8e51382464d4cc2d0054977c40a732 depends: - __osx >=11.0 - libabseil - libcrc32c >=1.1.2,<1.2.0a0 - libcurl - libcxx >=18 - - libgoogle-cloud 2.32.0 h8d8be31_0 + - libgoogle-cloud 2.33.0 hdbe95d5_1 - libzlib >=1.3.1,<2.0a0 - openssl license: Apache-2.0 license_family: Apache - size: 526895 - timestamp: 1733513644846 + size: 526963 + timestamp: 1735649222088 - kind: conda name: libgoogle-cloud-storage - version: 2.32.0 - build: hb9b2b65_0 + version: 2.33.0 + build: hb9b2b65_1 + build_number: 1 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-storage-2.32.0-hb9b2b65_0.conda - sha256: e120e7b6c9c9d25baa8ae903106babdd3c969523ae25278a615ed9de4bd0fc35 - md5: 925ab0ca33baca4fcfee585cecb94169 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-storage-2.33.0-hb9b2b65_1.conda + sha256: 5eda1cbba68709b91b370b3792c9cfd7bec4ac4e2262f0887d12e1f000ae1191 + md5: 45df2267ff4d8ce532e8d300ce0b0829 depends: - libabseil - libcrc32c >=1.1.2,<1.2.0a0 - libcurl - libgcc >=13 - - libgoogle-cloud 2.32.0 h3888205_0 + - libgoogle-cloud 2.33.0 hccf9d24_1 - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - openssl license: Apache-2.0 license_family: Apache - size: 737964 - timestamp: 1733512457785 + size: 737518 + timestamp: 1735649773462 - kind: conda name: libgpg-error version: '1.51' @@ -5929,79 +5934,82 @@ packages: - kind: conda name: libgrpc version: 1.67.1 - build: h36c5df4_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libgrpc-1.67.1-h36c5df4_0.conda - sha256: 1f6673d9d866048c9cf28fd56e6874ffc7e2c53c47d7071cb367d5fc2dde16a7 - md5: b946137e362e98a55a77fdf0b20a7739 + build: h0a426d6_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libgrpc-1.67.1-h0a426d6_1.conda + sha256: 630edf63981818ff590367cb95fddbed0f5a390464d0952c90ec81de899e84a6 + md5: 8a3cba079d6ac985e7d73c76a678fbb4 depends: - - c-ares >=1.32.3,<2.0a0 + - __osx >=11.0 + - c-ares >=1.34.4,<2.0a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libgcc >=13 - - libprotobuf >=5.28.2,<5.28.3.0a0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 - libre2-11 >=2024.7.2 - - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - - openssl >=3.3.2,<4.0a0 + - openssl >=3.4.0,<4.0a0 - re2 constrains: - grpc-cpp =1.67.1 license: Apache-2.0 license_family: APACHE - size: 7131846 - timestamp: 1730236305327 + size: 5311706 + timestamp: 1735585137716 - kind: conda name: libgrpc version: 1.67.1 - build: hc2c308b_0 + build: h25350d4_1 + build_number: 1 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.67.1-hc2c308b_0.conda - sha256: 870550c1faf524e9a695262cd4c31441b18ad542f16893bd3c5dbc93106705f7 - md5: 4606a4647bfe857e3cfe21ca12ac3afb + url: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.67.1-h25350d4_1.conda + sha256: 014627485b3cf0ea18e04c0bab07be7fb98722a3aeeb58477acc7e1c3d2f911e + md5: 0c6497a760b99a926c7c12b74951a39c depends: - __glibc >=2.17,<3.0.a0 - - c-ares >=1.32.3,<2.0a0 + - c-ares >=1.34.4,<2.0a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - libgcc >=13 - - libprotobuf >=5.28.2,<5.28.3.0a0 + - libprotobuf >=5.28.3,<5.28.4.0a0 - libre2-11 >=2024.7.2 - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - - openssl >=3.3.2,<4.0a0 + - openssl >=3.4.0,<4.0a0 - re2 constrains: - grpc-cpp =1.67.1 license: Apache-2.0 license_family: APACHE - size: 7362336 - timestamp: 1730236333879 + size: 7792251 + timestamp: 1735584856826 - kind: conda name: libgrpc version: 1.67.1 - build: hc70892a_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libgrpc-1.67.1-hc70892a_0.conda - sha256: d2393fcd3c3584e5d58da4122f48bcf297567d2f6f14b3d1fcbd34fdd5040694 - md5: 624e27571fde34f8acc2afec840ac435 + build: hf7ccdd3_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libgrpc-1.67.1-hf7ccdd3_1.conda + sha256: 3fa173dc1d7456aac2b26937daae86a08432a31640e3d6569c62edc661fc9bbe + md5: 8fb41a425bebaeb3d0fa568503612e64 depends: - - __osx >=11.0 - - c-ares >=1.34.2,<2.0a0 + - c-ares >=1.34.4,<2.0a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libcxx >=17 - - libprotobuf >=5.28.2,<5.28.3.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 - libre2-11 >=2024.7.2 + - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - - openssl >=3.3.2,<4.0a0 + - openssl >=3.4.0,<4.0a0 - re2 constrains: - grpc-cpp =1.67.1 license: Apache-2.0 license_family: APACHE - size: 4882208 - timestamp: 1730236299095 + size: 7430006 + timestamp: 1735585769731 - kind: conda name: libiconv version: '1.17' @@ -6498,61 +6506,61 @@ packages: - kind: conda name: libparquet version: 18.1.0 - build: h081d1f1_6_cpu - build_number: 6 + build: h081d1f1_7_cpu + build_number: 7 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-h081d1f1_6_cpu.conda - sha256: c691a59f1ebb6cedbf827f49f6cf414e08b0eec911f589133e6a8321e8ac701c - md5: 68788df49ce7480187eb6387f15b2b67 + url: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-h081d1f1_7_cpu.conda + sha256: 55945b761130f60abdecf1551907ecfd05cb4a5958cf74d855b30c005ecb3592 + md5: b97013ef4e1dd2cf11594f06d5b5e83a depends: - __glibc >=2.17,<3.0.a0 - - libarrow 18.1.0 h44a453e_6_cpu + - libarrow 18.1.0 hd595efa_7_cpu - libgcc >=13 - libstdcxx >=13 - 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 + size: 1205598 + timestamp: 1735684849150 - kind: conda name: libparquet version: 18.1.0 - build: h636d7b7_6_cpu - build_number: 6 + build: h636d7b7_7_cpu + build_number: 7 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-h636d7b7_6_cpu.conda - sha256: 88c1e810bede65c54f1ebc51c14400f9e8cf0fc1f88a8c0a99210e2f5dfed582 - md5: 9b333c3a38e55f6c1b8733222e22f528 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-h636d7b7_7_cpu.conda + sha256: bf42e43542a90edd86ba5aa5fd4543671625f1bc35f62be32688f00e18bae990 + md5: 93de9ba66a20db32a2646d313794b3a8 depends: - __osx >=11.0 - - libarrow 18.1.0 h4a2f8bd_6_cpu + - libarrow 18.1.0 h0ad35bc_7_cpu - libcxx >=18 - 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 + size: 873251 + timestamp: 1735684582558 - kind: conda name: libparquet version: 18.1.0 - build: hfc78867_6_cpu - build_number: 6 + build: hfc78867_7_cpu + build_number: 7 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-hfc78867_6_cpu.conda - sha256: 38aab34c422519c530d0e9a3e0ffd1624db1c1e163983c46ae341e831b2eb6b5 - md5: 1ab6d4a9a982920b9dc5f2c700777b27 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-hfc78867_7_cpu.conda + sha256: 6dff9bbe731dc2cefe96bd9c7981d2cbef2b564a3152840a29c9b6a493ea50d9 + md5: 184bec7a9392ab6ba8134041e81971d6 depends: - - libarrow 18.1.0 h1b535d6_6_cpu + - libarrow 18.1.0 hb7781cd_7_cpu - libgcc >=13 - libstdcxx >=13 - 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 + size: 1117825 + timestamp: 1735685495511 - kind: conda name: libpng version: 1.6.44 @@ -6598,32 +6606,33 @@ packages: timestamp: 1726236639270 - kind: conda name: libprotobuf - version: 5.28.2 - build: h029595c_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.2-h029595c_0.conda - sha256: d8c7b6f851bfc53494d9b8e54d473c4f11ab26483a6e64df6f7967563df166b1 - md5: 538dbe0ad9f248e2e109abb9b6809ea5 + version: 5.28.3 + build: h3bd63a1_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.3-h3bd63a1_1.conda + sha256: f58a16b13ad53346903c833e266f83c3d770a43a432659b98710aed85ca885e7 + md5: bdbfea4cf45ae36652c6bbcc2e7ebe91 depends: + - __osx >=11.0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libgcc >=13 - - libstdcxx >=13 + - libcxx >=18 - libzlib >=1.3.1,<2.0a0 license: BSD-3-Clause license_family: BSD - size: 2802876 - timestamp: 1728564881988 + size: 2271580 + timestamp: 1735576361997 - kind: conda name: libprotobuf - version: 5.28.2 - build: h5b01275_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.2-h5b01275_0.conda - sha256: 5e8fd4aa00193c85602ce6101dd28fe31306dff85c9725048f6dc828dfa7c421 - md5: ab0bff36363bec94720275a681af8b83 + version: 5.28.3 + build: h44a3b7b_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.3-h44a3b7b_1.conda + sha256: ecb69f2b1668e784b41ba667493be846662d5ef702bef64fb2e013bb1364cdc4 + md5: 68f807f7cc13951652bbe048253fd405 depends: - - __glibc >=2.17,<3.0.a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - libgcc >=13 @@ -6631,75 +6640,77 @@ packages: - libzlib >=1.3.1,<2.0a0 license: BSD-3-Clause license_family: BSD - size: 2945348 - timestamp: 1728565355702 + size: 2788074 + timestamp: 1735576315676 - kind: conda name: libprotobuf - version: 5.28.2 - build: h8f0b736_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.2-h8f0b736_0.conda - sha256: f732a6fa918428e2d5ba61e78fe11bb44a002cc8f6bb74c94ee5b1297fefcfd8 - md5: d2cb5991f2fb8eb079c80084435e9ce6 + version: 5.28.3 + build: h6128344_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda + sha256: 51125ebb8b7152e4a4e69fd2398489c4ec8473195c27cde3cbdf1cb6d18c5493 + md5: d8703f1ffe5a06356f06467f1d0b9464 depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libcxx >=17 + - libgcc >=13 + - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 license: BSD-3-Clause license_family: BSD - size: 2374965 - timestamp: 1728565334796 + size: 2960815 + timestamp: 1735577210663 - kind: conda name: libre2-11 version: 2024.07.02 - build: h18dbdb1_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_1.conda - sha256: 96d4fdac28d5af38c38f90c22cb0aa9a90affae13ca8ba24bd1eb60b789df8ff - md5: f1800796b0efc4bbc5b001d845545111 + build: h07bc746_2 + build_number: 2 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h07bc746_2.conda + sha256: 112a73ad483353751d4c5d63648c69a4d6fcebf5e1b698a860a3f5124fc3db96 + md5: 6b1e3624d3488016ca4f1ca0c412efaa depends: + - __osx >=11.0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libgcc >=13 - - libstdcxx >=13 + - libcxx >=18 constrains: - re2 2024.07.02.* license: BSD-3-Clause license_family: BSD - size: 203516 - timestamp: 1728778974654 + size: 167155 + timestamp: 1735541067807 - kind: conda name: libre2-11 version: 2024.07.02 - build: h2348fd5_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h2348fd5_1.conda - sha256: 6facca42cfc85a05b33e484a8b0df7857cc092db34806946d022270098d8d20f - md5: 5a7065309a66097738be6a06fd04b7ef + build: h18dbdb1_2 + build_number: 2 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_2.conda + sha256: 862c20de0120f802e618dcb25913d00c5b82f91f4be60b2d46a774e851adc2f6 + md5: 9a7dbbaab49f76a6f36e5c9d98e323a7 depends: - - __osx >=11.0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libcxx >=17 + - libgcc >=13 + - libstdcxx >=13 constrains: - re2 2024.07.02.* license: BSD-3-Clause license_family: BSD - size: 165956 - timestamp: 1728779107218 + size: 204305 + timestamp: 1735540986919 - kind: conda name: libre2-11 version: 2024.07.02 - build: hbbce691_1 - build_number: 1 + build: hbbce691_2 + build_number: 2 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_1.conda - sha256: f8ad6a4f6d4fd54ebe3e5e712a01e663222fc57f49d16b6b8b10c30990dafb8f - md5: 2124de47357b7a516c0a3efd8f88c143 + url: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_2.conda + sha256: 4420f8362c71251892ba1eeb957c5e445e4e1596c0c651c28d0d8b415fe120c7 + md5: b2fede24428726dd867611664fb372e8 depends: - __glibc >=2.17,<3.0.a0 - libabseil * cxx17* @@ -6710,8 +6721,8 @@ packages: - re2 2024.07.02.* license: BSD-3-Clause license_family: BSD - size: 211096 - timestamp: 1728778964655 + size: 209793 + timestamp: 1735541054068 - kind: conda name: libsndfile version: 1.2.2 @@ -7305,6 +7316,7 @@ packages: constrains: - libwebp 1.5.0 license: BSD-3-Clause + license_family: BSD size: 362623 timestamp: 1734779054659 - kind: conda @@ -7320,6 +7332,7 @@ packages: constrains: - libwebp 1.5.0 license: BSD-3-Clause + license_family: BSD size: 290013 timestamp: 1734777593617 - kind: conda @@ -7336,6 +7349,7 @@ packages: constrains: - libwebp 1.5.0 license: BSD-3-Clause + license_family: BSD size: 429973 timestamp: 1734777489810 - kind: conda @@ -7671,76 +7685,76 @@ packages: timestamp: 1733219945697 - kind: conda name: max - version: 25.1.0.dev2024122805 + version: 25.1.0.dev2025010605 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122805-release.conda - sha256: fe2812cf8bb718133a1ee6e2a720e0adb3a234443cd1bdb012ed3845fc100c7e - md5: d2ab5ff45c394ef59d4c89a35dbc0e20 - depends: - - max-core ==25.1.0.dev2024122805 release - - max-python >=25.1.0.dev2024122805,<26.0a0 - - mojo-jupyter ==25.1.0.dev2024122805 release - - mblack ==25.1.0.dev2024122805 release + url: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025010605-release.conda + sha256: f806f7b7519e01cd68fbae2c714d1c1a9e1e96f144e920ce51c47512f81a1db3 + md5: 1bae0e6863939e6792d7129bec77983c + depends: + - max-core ==25.1.0.dev2025010605 release + - max-python >=25.1.0.dev2025010605,<26.0a0 + - mojo-jupyter ==25.1.0.dev2025010605 release + - mblack ==25.1.0.dev2025010605 release license: LicenseRef-Modular-Proprietary - size: 9913 - timestamp: 1735363020600 + size: 9914 + timestamp: 1736140643481 - kind: conda name: max-core - version: 25.1.0.dev2024122805 + version: 25.1.0.dev2025010605 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024122805-release.conda - sha256: d0f6942e8fb4461129dd0b3b459e5d975fa392661fbf9ce002992044249c7df0 - md5: 99412132bd807caa43dba507054a2691 + url: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025010605-release.conda + sha256: 315ad791e417ed45fcee42fe7227428bca1d77427c10b81fb5a65583a5844279 + md5: c40747b8b9245abb69db013a14266b6c depends: - - mblack ==25.1.0.dev2024122805 release + - mblack ==25.1.0.dev2025010605 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 245436370 - timestamp: 1735363025528 + size: 244726382 + timestamp: 1736140669107 - kind: conda name: max-core - version: 25.1.0.dev2024122805 + version: 25.1.0.dev2025010605 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024122805-release.conda - sha256: 19aa7627330555204af1573e241f86ced1f34e5773fe2047f03d2df77d296de7 - md5: c83934dfd0b0e2285a2959be586f8e4b + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025010605-release.conda + sha256: dd574ac5ce9effc0f713ea63992a5a4aeaf8fa80f2c968a9c00c664703b70932 + md5: 65f814591335d2910a5e30d5f6968aff depends: - - mblack ==25.1.0.dev2024122805 release + - mblack ==25.1.0.dev2025010605 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 249341674 - timestamp: 1735363020598 + size: 248381825 + timestamp: 1736140643479 - kind: conda name: max-core - version: 25.1.0.dev2024122805 + version: 25.1.0.dev2025010605 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024122805-release.conda - sha256: d65a30747c6623a9a73d02e35d617cf2425fc151839f18badbef093a045c1bd5 - md5: d45b98ffbd949783e9c8ee20e28a6970 + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025010605-release.conda + sha256: ff28dea1ddf5adb0586a5d6a41fb6b6d0a0ee332eb4440cbaffa9b041de16db0 + md5: 1e134821c4eae4e6fa711c1cd2b8cc00 depends: - - mblack ==25.1.0.dev2024122805 release + - mblack ==25.1.0.dev2025010605 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 214123206 - timestamp: 1735365284895 + size: 213059614 + timestamp: 1736141300718 - kind: conda name: max-python - version: 25.1.0.dev2024122805 + version: 25.1.0.dev2025010605 build: 3.12release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024122805-3.12release.conda - sha256: 1666cdc4f1460979cb2bad7ddaa745256f137e03a32c8688a988f359bcc4a1b6 - md5: fda0864df873c814f836064daa86e4d6 + url: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025010605-3.12release.conda + sha256: 80e1b3a95eb37bd76396c470b8a17168fdd1b0a2e193d66981824760bd82e768 + md5: 28ecc247a48f0de9dee4f6fe6d1be095 depends: - - max-core ==25.1.0.dev2024122805 release + - max-core ==25.1.0.dev2025010605 release - python 3.12.* - fastapi - httpx @@ -7763,18 +7777,18 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 122818679 - timestamp: 1735363025537 + size: 122702106 + timestamp: 1736140669117 - kind: conda name: max-python - version: 25.1.0.dev2024122805 + version: 25.1.0.dev2025010605 build: 3.12release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024122805-3.12release.conda - sha256: 00bb77ee09d7ec7aa407452fd11a227980cc273e738fbec28fe2c7f8df0b8d21 - md5: 6e0f158c866d00b4dd04602211e184cd + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025010605-3.12release.conda + sha256: 90a8fa8b7b654e35adc36cf2309898d4a965b5b85f0c6ac912ec1b7439d247c2 + md5: fc56c27a4041f32ce7f03c94141e6fd9 depends: - - max-core ==25.1.0.dev2024122805 release + - max-core ==25.1.0.dev2025010605 release - python 3.12.* - fastapi - httpx @@ -7797,18 +7811,18 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 126488257 - timestamp: 1735363020609 + size: 126373708 + timestamp: 1736140643490 - kind: conda name: max-python - version: 25.1.0.dev2024122805 + version: 25.1.0.dev2025010605 build: 3.12release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024122805-3.12release.conda - sha256: 81c22f0a8d33e7d8091959a4bf837993246308712b22e384d0c853404ab45c15 - md5: 207d5360c0a7fcb6e8d7933e3a577a07 + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025010605-3.12release.conda + sha256: 6948694d15390b9baf752a38f17fa7c4e0712b3b71f893955037e65a84fb72c9 + md5: f7c5e210de943e91a2550a9a0ed51e59 depends: - - max-core ==25.1.0.dev2024122805 release + - max-core ==25.1.0.dev2025010605 release - python 3.12.* - fastapi - httpx @@ -7831,17 +7845,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 113429204 - timestamp: 1735365284899 + size: 113299681 + timestamp: 1736141300722 - kind: conda name: mblack - version: 25.1.0.dev2024122805 + version: 25.1.0.dev2025010605 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122805-release.conda - sha256: 46d7d50f46fc589cd4fd53c614020666b9ac4ea90d0d861bc2888ff8a8968fc7 - md5: e140a619b5afdf6730ee181c6ca0dd1d + url: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025010605-release.conda + sha256: 2166e3aa028121c737e9a7f3cde3711c8f87d83757045318467ee0d54da95fdc + md5: 90216ac95ad02c40a72aea621bb2d54e depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -7852,7 +7866,7 @@ packages: - python license: MIT size: 130809 - timestamp: 1735363020604 + timestamp: 1736140643485 - kind: conda name: mdurl version: 0.1.2 @@ -7871,21 +7885,21 @@ packages: timestamp: 1733255681319 - kind: conda name: mojo-jupyter - version: 25.1.0.dev2024122805 + version: 25.1.0.dev2025010605 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122805-release.conda - sha256: cdfcbb3354be4888b5b86eab0b3ee26c1fdaf9df9e9421e2fe60ab18cd053402 - md5: 6606e99ea0f956a5f786bc5a376c4fa2 + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025010605-release.conda + sha256: 5d25a6cbeb7e23d0e751085fd4a8728224f4fb46667007046322109437fde8cc + md5: 0d7c538d4488f3d729c380af437148e3 depends: - - max-core ==25.1.0.dev2024122805 release + - max-core ==25.1.0.dev2025010605 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22932 - timestamp: 1735363020605 + size: 22938 + timestamp: 1736140643486 - kind: conda name: mpg123 version: 1.32.9 @@ -8225,49 +8239,52 @@ packages: - kind: conda name: openssl version: 3.4.0 - build: h39f12f2_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.0-h39f12f2_0.conda - sha256: bd1d58ced46e75efa3b842c61642fd12272c69e9fe4d7261078bc082153a1d53 - md5: df307bbc703324722df0293c9ca2e418 + build: h7b32b05_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.0-h7b32b05_1.conda + sha256: f62f6bca4a33ca5109b6d571b052a394d836956d21b25b7ffd03376abf7a481f + md5: 4ce6875f75469b2757a65e10a5d05e31 depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 - ca-certificates + - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 2935176 - timestamp: 1731377561525 + size: 2937158 + timestamp: 1736086387286 - kind: conda name: openssl version: 3.4.0 - build: h86ecc28_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.0-h86ecc28_0.conda - sha256: 64dbbdd6384fa56338124783197f7ad9048c989a02264bcd2e07355e3570f113 - md5: b2f202b5bddafac824eb610b65dde98f + build: h81ee809_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.0-h81ee809_1.conda + sha256: 97772762abc70b3a537683ca9fc3ff3d6099eb64e4aba3b9c99e6fce48422d21 + md5: 22f971393637480bda8c679f374d8861 depends: + - __osx >=11.0 - ca-certificates - - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 3474825 - timestamp: 1731379200886 + size: 2936415 + timestamp: 1736086108693 - kind: conda name: openssl version: 3.4.0 - build: hb9d3cd8_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.0-hb9d3cd8_0.conda - sha256: 814b9dff1847b132c676ee6cc1a8cb2d427320779b93e1b6d76552275c128705 - md5: 23cc74f77eb99315c0360ec3533147a9 + build: hd08dc88_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.0-hd08dc88_1.conda + sha256: 60d34454b861501d7355f25a7b39fdb5de8d56fca49b5bcbe8b8142b7d82dce4 + md5: e21c4767e783a58c373fdb99de6211bf depends: - - __glibc >=2.17,<3.0.a0 - ca-certificates - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 2947466 - timestamp: 1731377666602 + size: 3469279 + timestamp: 1736088141230 - kind: conda name: opentelemetry-api version: 1.29.0 @@ -8452,16 +8469,16 @@ packages: - kind: conda name: orc version: 2.0.3 - build: h3c55218_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/orc-2.0.3-h3c55218_1.conda - sha256: 154b26bc4d586de33765a155c9b79ebd7f5bb36c2bbf4b8854e1631bca8d21af - md5: 0a51a3cf028b845c46ec0d1ea2d18629 + build: h0ff2369_2 + build_number: 2 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/orc-2.0.3-h0ff2369_2.conda + sha256: cca330695f3bdb8c0e46350c29cd4af3345865544e36f1d7c9ba9190ad22f5f4 + md5: 24b1897c0d24afbb70704ba998793b78 depends: - - libgcc >=13 - - libprotobuf >=5.28.2,<5.28.3.0a0 - - libstdcxx >=13 + - __osx >=11.0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 - libzlib >=1.3.1,<2.0a0 - lz4-c >=1.10.0,<1.11.0a0 - snappy >=1.2.1,<1.3.0a0 @@ -8469,21 +8486,21 @@ packages: - zstd >=1.5.6,<1.6.0a0 license: Apache-2.0 license_family: Apache - size: 1165179 - timestamp: 1733509923825 + size: 438520 + timestamp: 1735630624140 - kind: conda name: orc version: 2.0.3 - build: h97ab989_1 - build_number: 1 + build: h12ee42a_2 + build_number: 2 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/orc-2.0.3-h97ab989_1.conda - sha256: 9de7e2746fde57c9b7f08ee87142014f6bb9b2d3a506839ea3e98baa99711576 - md5: 2f46eae652623114e112df13fae311cf + url: https://conda.anaconda.org/conda-forge/linux-64/orc-2.0.3-h12ee42a_2.conda + sha256: dff5cc8023905782c86b3459055f26d4b97890e403b0698477c9fed15d8669cc + md5: 4f6f9f3f80354ad185e276c120eac3f0 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - - libprotobuf >=5.28.2,<5.28.3.0a0 + - libprotobuf >=5.28.3,<5.28.4.0a0 - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - lz4-c >=1.10.0,<1.11.0a0 @@ -8492,21 +8509,21 @@ packages: - zstd >=1.5.6,<1.6.0a0 license: Apache-2.0 license_family: Apache - size: 1189462 - timestamp: 1733509801323 + size: 1188881 + timestamp: 1735630209320 - kind: conda name: orc version: 2.0.3 - build: hbcee414_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/orc-2.0.3-hbcee414_1.conda - sha256: e5e72438a3cd967ebc774070e8c49500d2d6d4175f349400b327fee75d3bfc05 - md5: e808cf7819eaa1735c8790d7f9f482c7 + build: hdd485aa_2 + build_number: 2 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/orc-2.0.3-hdd485aa_2.conda + sha256: b6c67542352a86cdf143c3066d5cda855b74454a156eedcd8958b494c6a32a83 + md5: d19f01b42e5d6a2908b65df435aff42f depends: - - __osx >=11.0 - - libcxx >=18 - - libprotobuf >=5.28.2,<5.28.3.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - lz4-c >=1.10.0,<1.11.0a0 - snappy >=1.2.1,<1.3.0a0 @@ -8514,8 +8531,8 @@ packages: - zstd >=1.5.6,<1.6.0a0 license: Apache-2.0 license_family: Apache - size: 437391 - timestamp: 1733510118673 + size: 1167714 + timestamp: 1735630248837 - kind: conda name: packaging version: '24.2' @@ -8674,78 +8691,78 @@ packages: timestamp: 1723488734144 - kind: conda name: pillow - version: 11.0.0 - build: py312h5ab5af3_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/pillow-11.0.0-py312h5ab5af3_0.conda - sha256: 3cf43a5eb1f67f3a5f3ef1ec3a685f8767019cce24dbe46c4b76fee8a54fbacf - md5: 1c4bdfe659cfdedd372685ce2494e97b + version: 11.1.0 + build: py312h50aef2c_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-11.1.0-py312h50aef2c_0.conda + sha256: b29b7c915053e06a7a5b4118760202c572c9c35d23bd6ce8e73270b6a50e50ee + md5: 94d6ba8cd468668a9fb04193b0f4b36e depends: + - __osx >=11.0 - freetype >=2.12.1,<3.0a0 - lcms2 >=2.16,<3.0a0 - - libgcc >=13 - libjpeg-turbo >=3.0.0,<4.0a0 - libtiff >=4.7.0,<4.8.0a0 - - libwebp-base >=1.4.0,<2.0a0 + - libwebp-base >=1.5.0,<2.0a0 - libxcb >=1.17.0,<2.0a0 - libzlib >=1.3.1,<2.0a0 - - openjpeg >=2.5.2,<3.0a0 + - openjpeg >=2.5.3,<3.0a0 - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 - tk >=8.6.13,<8.7.0a0 license: HPND - size: 41756471 - timestamp: 1729068045876 + size: 42852329 + timestamp: 1735930118976 - kind: conda name: pillow - version: 11.0.0 - build: py312h7b63e92_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/pillow-11.0.0-py312h7b63e92_0.conda - sha256: 13a464bea02c0df0199c20ef6bad24a6bc336aaf55bf8d6a133d0fe664463224 - md5: 385f46a4df6f97892503a841121a9acf + version: 11.1.0 + build: py312h719f0cf_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/pillow-11.1.0-py312h719f0cf_0.conda + sha256: 7559556ffc44bda777f85c2e5acd6b5756fa5822c0271b329b7b9a3c6bb20349 + md5: 77e0ec0a6fc847d317f204aa15b59f6b depends: - - __glibc >=2.17,<3.0.a0 - freetype >=2.12.1,<3.0a0 - lcms2 >=2.16,<3.0a0 - libgcc >=13 - libjpeg-turbo >=3.0.0,<4.0a0 - libtiff >=4.7.0,<4.8.0a0 - - libwebp-base >=1.4.0,<2.0a0 + - libwebp-base >=1.5.0,<2.0a0 - libxcb >=1.17.0,<2.0a0 - libzlib >=1.3.1,<2.0a0 - - openjpeg >=2.5.2,<3.0a0 + - openjpeg >=2.5.3,<3.0a0 - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 - tk >=8.6.13,<8.7.0a0 license: HPND - size: 41948418 - timestamp: 1729065846594 + size: 41362848 + timestamp: 1735932311857 - kind: conda name: pillow - version: 11.0.0 - build: py312haf37ca6_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-11.0.0-py312haf37ca6_0.conda - sha256: 727b4c3faecdb6f6809cf20c5f32d2df4af34e0d5b9146b7588383bcba7990e8 - md5: dc9b51fbd2b6f7fea9b5123458864dbb + version: 11.1.0 + build: py312h80c1187_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/pillow-11.1.0-py312h80c1187_0.conda + sha256: 5c347962202b55ae4d8a463e0555c5c6ca33396266a08284bf1384399894e541 + md5: d3894405f05b2c0f351d5de3ae26fa9c depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 - freetype >=2.12.1,<3.0a0 - lcms2 >=2.16,<3.0a0 + - libgcc >=13 - libjpeg-turbo >=3.0.0,<4.0a0 - libtiff >=4.7.0,<4.8.0a0 - - libwebp-base >=1.4.0,<2.0a0 + - libwebp-base >=1.5.0,<2.0a0 - libxcb >=1.17.0,<2.0a0 - libzlib >=1.3.1,<2.0a0 - - openjpeg >=2.5.2,<3.0a0 + - openjpeg >=2.5.3,<3.0a0 - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 - tk >=8.6.13,<8.7.0a0 license: HPND - size: 41737424 - timestamp: 1729065920347 + size: 42749785 + timestamp: 1735929845390 - kind: conda name: pixman version: 0.44.2 @@ -8974,12 +8991,12 @@ packages: timestamp: 1733392308901 - kind: conda name: protobuf - version: 5.28.2 + version: 5.28.3 build: py312h2ec8cdc_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/protobuf-5.28.2-py312h2ec8cdc_0.conda - sha256: 4884f8161602f0148ebbc1af8d3176cec80b96c83243f68aafd651986b573817 - md5: 586bead4a9dfa46faf88deb7d3a742bb + url: https://conda.anaconda.org/conda-forge/linux-64/protobuf-5.28.3-py312h2ec8cdc_0.conda + sha256: acb2e0ee948e3941f8ed191cb77f654e06538638aed8ccd71cbc78a15242ebbb + md5: 9d7e427d159c1b2d516cc047ff177c48 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -8987,19 +9004,19 @@ packages: - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 constrains: - - libprotobuf 5.28.2 + - libprotobuf 5.28.3 license: BSD-3-Clause license_family: BSD - size: 464548 - timestamp: 1728669645013 + size: 464794 + timestamp: 1731366525051 - kind: conda name: protobuf - version: 5.28.2 + version: 5.28.3 build: py312h6f74592_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/protobuf-5.28.2-py312h6f74592_0.conda - sha256: f874ffd38b9ae2b810e9d2e43fd8d3b778cdeaf7dea4a3e6ee4adeafe2d936cf - md5: 4b9b22bd7c53d938b207f9d0f79db183 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/protobuf-5.28.3-py312h6f74592_0.conda + sha256: 9c575d5035c7ecb114ab9e17906c0a54087d9598dd6a2104c02fe33f0a29dd46 + md5: 06513608c94fb1c1b17136ace77063a9 depends: - libgcc >=13 - libstdcxx >=13 @@ -9007,31 +9024,31 @@ packages: - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 constrains: - - libprotobuf 5.28.2 + - libprotobuf 5.28.3 license: BSD-3-Clause license_family: BSD - size: 472764 - timestamp: 1728669483611 + size: 473242 + timestamp: 1731366577844 - kind: conda name: protobuf - version: 5.28.2 - build: py312hf02c72a_0 + version: 5.28.3 + build: py312hd8f9ff3_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/protobuf-5.28.2-py312hf02c72a_0.conda - sha256: dbcec117510ced5c12097e3eb06ebbf4512dc255733a9ace33c4249fb7e6a364 - md5: 6fda46c82abd0a080ca33de7d16ca877 + url: https://conda.anaconda.org/conda-forge/osx-arm64/protobuf-5.28.3-py312hd8f9ff3_0.conda + sha256: 9d572a97419bdace14d7c7cc8cc8c4bf2dcb22b56965dac87a27fbdb5061b926 + md5: 5afbe52a59f04dd1fe566d0d17590d7e depends: - __osx >=11.0 - - libcxx >=17 + - libcxx >=18 - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 constrains: - - libprotobuf 5.28.2 + - libprotobuf 5.28.3 license: BSD-3-Clause license_family: BSD - size: 447369 - timestamp: 1728669902591 + size: 448803 + timestamp: 1731367010746 - kind: conda name: pthread-stubs version: '0.4' @@ -9345,21 +9362,21 @@ packages: timestamp: 1734571986644 - kind: conda name: pydantic-settings - version: 2.7.0 + version: 2.7.1 build: pyh3cfb1c2_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.7.0-pyh3cfb1c2_0.conda - sha256: dd1ac7c8b6a189c8aa18f6c7df019d8f6df495300a259e3fbebdb542fc955c3b - md5: d9f19a7c4199249fa229891b573b6f9b + url: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.7.1-pyh3cfb1c2_0.conda + sha256: 082fb1ec29917d2c9ed6a862cb8eb9beb88c208ea62c9fef1aeb5f4f3e0e0b06 + md5: d71d76b62bed332b037d7adfc0f3989a depends: - pydantic >=2.7.0 - python >=3.9 - python-dotenv >=0.21.0 license: MIT license_family: MIT - size: 31426 - timestamp: 1734127929720 + size: 31822 + timestamp: 1735650532951 - kind: conda name: pygame version: 2.6.1 @@ -9978,48 +9995,48 @@ packages: - kind: conda name: re2 version: 2024.07.02 - build: h2d3a13d_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/re2-2024.07.02-h2d3a13d_1.conda - sha256: 55e7be480bfb979fa8595a16d7f2adea3a5ac9a77b2e97cd0f7ac40e989edb6c - md5: 83f4e47229834c895a92c18383e1cd9d + build: h6589ca4_2 + build_number: 2 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/re2-2024.07.02-h6589ca4_2.conda + sha256: 4d3799c05f8f662922a0acd129d119774760a3281b883603678e128d1cb307fb + md5: 7a8b4ad8c58a3408ca89d78788c78178 depends: - - libre2-11 2024.07.02 h18dbdb1_1 + - libre2-11 2024.07.02 h07bc746_2 license: BSD-3-Clause license_family: BSD - size: 26747 - timestamp: 1728778986331 + size: 26861 + timestamp: 1735541088455 - kind: conda name: re2 version: 2024.07.02 - build: h77b4e00_1 - build_number: 1 + build: h9925aae_2 + build_number: 2 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/re2-2024.07.02-h77b4e00_1.conda - sha256: c1721cb80f7201652fc9801f49c214c88aee835d957f2376e301bd40a8415742 - md5: 01093ff37c1b5e6bf9f17c0116747d11 + url: https://conda.anaconda.org/conda-forge/linux-64/re2-2024.07.02-h9925aae_2.conda + sha256: d213c44958d49ce7e0d4d5b81afec23640cce5016685dbb2d23571a99caa4474 + md5: e84ddf12bde691e8ec894b00ea829ddf depends: - - libre2-11 2024.07.02 hbbce691_1 + - libre2-11 2024.07.02 hbbce691_2 license: BSD-3-Clause license_family: BSD - size: 26665 - timestamp: 1728778975855 + size: 26786 + timestamp: 1735541074034 - kind: conda name: re2 version: 2024.07.02 - build: hcd0e937_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/re2-2024.07.02-hcd0e937_1.conda - sha256: eebddde6cb10b146507810b701ef6df122d5309cd5151a39d0828aa44dc53725 - md5: 19e29f2ccc9168eb0a39dc40c04c0e21 + build: haa97905_2 + build_number: 2 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/re2-2024.07.02-haa97905_2.conda + sha256: 040848655df9119bae5a549fb5c8956a5537120859416c1d9d0712b7bac9f12e + md5: 1bf0135339b4a7419a198a795d2d4be0 depends: - - libre2-11 2024.07.02 h2348fd5_1 + - libre2-11 2024.07.02 h18dbdb1_2 license: BSD-3-Clause license_family: BSD - size: 26860 - timestamp: 1728779123653 + size: 26830 + timestamp: 1735540999398 - kind: conda name: readline version: '8.2' @@ -10211,12 +10228,12 @@ packages: timestamp: 1734415467047 - kind: conda name: safetensors - version: 0.4.5 + version: 0.5.0 build: py312h12e396e_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/safetensors-0.4.5-py312h12e396e_0.conda - sha256: e44515f875c10efb5e041efcb250dfd18f2cb66ec3f268237549ead6284c6922 - md5: 3b87a00bcaab069172d6cef8124b7142 + url: https://conda.anaconda.org/conda-forge/linux-64/safetensors-0.5.0-py312h12e396e_0.conda + sha256: f9d0a4fbfbd2bcded116b81afd69d00aa5d5bac0d431dd47737cec1b1d24c2e2 + md5: 4b33e7c3e9bbc3936e08150fc9e17708 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -10226,16 +10243,16 @@ packages: - __glibc >=2.17 license: Apache-2.0 license_family: APACHE - size: 402547 - timestamp: 1725632183154 + size: 424699 + timestamp: 1735917812729 - kind: conda name: safetensors - version: 0.4.5 + version: 0.5.0 build: py312h8cbf658_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/safetensors-0.4.5-py312h8cbf658_0.conda - sha256: e83ebeaba4a07bbe4a1d6c7eef0b4f7ae19901ef365bca043808d16e4c8faad8 - md5: 82ef253c37308b082a478fb92924cad6 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/safetensors-0.5.0-py312h8cbf658_0.conda + sha256: aee581ce5c744f81ac4848b1810a88a750041ef91da646234f75092a8b4e06d1 + md5: 9c317f54bd3c95a830e98b7baee11ea9 depends: - libgcc >=13 - python >=3.12,<3.13.0a0 @@ -10245,16 +10262,16 @@ packages: - __glibc >=2.17 license: Apache-2.0 license_family: APACHE - size: 400284 - timestamp: 1725632278147 + size: 408792 + timestamp: 1735917879258 - kind: conda name: safetensors - version: 0.4.5 - build: py312he431725_0 + version: 0.5.0 + build: py312hcd83bfe_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/safetensors-0.4.5-py312he431725_0.conda - sha256: 93a085d0d64237db7f4ff395c446f268c575dc2c324d8e3e5c5d7d836896295e - md5: ccb978cf1e3151c25a44c4ae65c1f20e + url: https://conda.anaconda.org/conda-forge/osx-arm64/safetensors-0.5.0-py312hcd83bfe_0.conda + sha256: 8992f78362793a465c3009be2fd80582c93e2151bc17d07ebd39ce7af757358a + md5: acbbbac2271653f4914cef842a84190f depends: - __osx >=11.0 - python >=3.12,<3.13.0a0 @@ -10264,8 +10281,8 @@ packages: - __osx >=11.0 license: Apache-2.0 license_family: APACHE - size: 353606 - timestamp: 1725632294079 + size: 377533 + timestamp: 1735918206452 - kind: conda name: sdl2 version: 2.30.10 @@ -10453,58 +10470,55 @@ packages: timestamp: 1695761744535 - kind: conda name: sdl2_ttf - version: 2.22.0 - build: h287479f_3 - build_number: 3 + version: 2.24.0 + build: h287479f_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/sdl2_ttf-2.22.0-h287479f_3.conda - sha256: 382554ee6135183548ae98adf984b3de31615d429751b497a509724c017d1f1f - md5: 2ab241725f0baa88ca26d53bb6eff58a + url: https://conda.anaconda.org/conda-forge/linux-64/sdl2_ttf-2.24.0-h287479f_0.conda + sha256: 431d19b666db6e7a4f09c37c43c83f115176a006b2ac321853ca26bee888c519 + md5: bccd5b74eb55a523dfcc66b857555714 depends: - __glibc >=2.17,<3.0.a0 - freetype >=2.12.1,<3.0a0 - harfbuzz >=10.1.0,<11.0a0 - libgcc >=13 - libzlib >=1.3.1,<2.0a0 - - sdl2 >=2.30.7,<3.0a0 + - sdl2 >=2.30.10,<3.0a0 license: Zlib - size: 62581 - timestamp: 1733782803716 + size: 61954 + timestamp: 1736117956977 - kind: conda name: sdl2_ttf - version: 2.22.0 - build: h443c5de_3 - build_number: 3 + version: 2.24.0 + build: h443c5de_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/sdl2_ttf-2.22.0-h443c5de_3.conda - sha256: 5325195729d91c0f4f6075cb70a2d4f67db7e42b3e3cf875c9fd4f7e21fdabc4 - md5: add02757e1fa038364df05ba0aaf3ca5 + url: https://conda.anaconda.org/conda-forge/osx-arm64/sdl2_ttf-2.24.0-h443c5de_0.conda + sha256: 5dc56fd1de51dec2f7b63b1a9069ab35ab0494d9cd5af164ab0019cbd9564cf6 + md5: 3cf5cf83deccb663b4e932d3d4b28f57 depends: - __osx >=11.0 - freetype >=2.12.1,<3.0a0 - harfbuzz >=10.1.0,<11.0a0 - sdl2 >=2.30.10,<3.0a0 license: Zlib - size: 46057 - timestamp: 1733782993569 + size: 45429 + timestamp: 1736118165229 - kind: conda name: sdl2_ttf - version: 2.22.0 - build: hb1608df_3 - build_number: 3 + version: 2.24.0 + build: hb1608df_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/sdl2_ttf-2.22.0-hb1608df_3.conda - sha256: 7bf20660944556420a499c95c46e9bc57f0ed1445218d3899f85478fa8ec367c - md5: 7ac7f17a1b2bd1ccf6161644ee03ade8 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/sdl2_ttf-2.24.0-hb1608df_0.conda + sha256: f9ee162a8efbd9cb0131500c57807e470b95f454aedb921dbf5960176b505ee4 + md5: 63b580a2a1005d91ffcb06a7e58d75f8 depends: - freetype >=2.12.1,<3.0a0 - harfbuzz >=10.1.0,<11.0a0 - libgcc >=13 - libzlib >=1.3.1,<2.0a0 - - sdl2 >=2.30.7,<3.0a0 + - sdl2 >=2.30.10,<3.0a0 license: Zlib - size: 56134 - timestamp: 1733783877446 + size: 55411 + timestamp: 1736119336293 - kind: conda name: shellingham version: 1.5.4 @@ -10615,6 +10629,7 @@ packages: - python >=3.9 - starlette >=0.41.3 license: BSD-3-Clause + license_family: BSD size: 15324 timestamp: 1735126414893 - kind: conda @@ -10845,18 +10860,19 @@ packages: - kind: conda name: tqdm version: 4.67.1 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda - sha256: 5673b7104350a6998cb86cccf1d0058217d86950e8d6c927d8530606028edb1d - md5: 4085c9db273a148e149c03627350e22c + url: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + sha256: 11e2c85468ae9902d24a27137b6b39b4a78099806e551d390e394a8c34b48e40 + md5: 9efbfdc37242619130ea42b1cc4ed861 depends: - colorama - - python >=3.7 + - python >=3.9 license: MPL-2.0 or MIT - size: 89484 - timestamp: 1732497312317 + size: 89498 + timestamp: 1735661472632 - kind: conda name: traitlets version: 5.14.3 diff --git a/examples/magic.lock b/examples/magic.lock index f5da75b14f..d0b4e528d9 100644 --- a/examples/magic.lock +++ b/examples/magic.lock @@ -12,7 +12,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.11-py311h2dc5d0c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.7.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.8.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.3.0-pyh71513ae_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-hb921021_15.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.1-h1a47875_3.conda @@ -39,7 +39,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2024.12.14-hbcca054_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.12.14-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py311hf29c0ef_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda @@ -76,11 +76,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.16-hb7c19ff_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_h5888daf_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-h44a453e_6_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-hcb10f89_6_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-hcb10f89_6_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-h3ee7192_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-hd595efa_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-hcb10f89_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-hcb10f89_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-h08228c5_7_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-26_linux64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hb9d3cd8_2.conda @@ -89,7 +89,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libcrc32c-1.1.2-h9c3ff4c_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.11.1-h332b0f4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.23-h4ddbbb0_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20191231-he28a2e2_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20240808-pl5321h7949ede_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libevent-2.1.12-hf998b51_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda @@ -99,9 +99,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hd5240d6_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h77fa898_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.32.0-h804f50b_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.32.0-h0121fbd_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.67.1-hc2c308b_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.33.0-h2b5623c_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.33.0-h0121fbd_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.67.1-h25350d4_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-hd590300_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-26_linux64_openblas.conda @@ -109,10 +109,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.28-pthreads_h94d23a6_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-h081d1f1_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-h081d1f1_7_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.44-hadc24fc_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.2-h5b01275_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.47.2-hee588c1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hf672d98_0.conda @@ -131,19 +131,19 @@ 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-25.1.0.dev2024122805-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024122805-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024122805-3.11release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025010605-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025010605-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025010605-3.11release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025010605-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-25.1.0.dev2024122805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025010605-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 - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py311h64a7726_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.3-h5fbd93e_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.0-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.0-h7b32b05_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.29.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.29.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.29.0-pyhd8ed1ab_1.conda @@ -151,22 +151,22 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.29.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.29.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.50b0-pyh3cfb1c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/orc-2.0.3-h97ab989_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/orc-2.0.3-h12ee42a_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.3-py311h7db5c69_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-11.0.0-py311h49e9ac3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-11.1.0-py311h1322bbf_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.1-py311h9ecbd09_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/protobuf-5.28.2-py311hfdbb021_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/protobuf-5.28.3-py311hfdbb021_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-18.1.0-py311h38be061_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-18.1.0-py311h4854187_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.4-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.27.2-py311h9e33e62_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.7.0-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.7.1-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyinstrument-5.0.0-py311h9ecbd09_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda @@ -181,14 +181,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py311h9ecbd09_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.0-py311h7deb3e3_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/re2-2024.07.02-h77b4e00_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/re2-2024.07.02-h9925aae_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda - 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.10-hb5b8611_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/linux-64/safetensors-0.5.0-py311h9e33e62_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-h8bd8927_1.conda @@ -198,7 +198,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.21.0-py311h182c674_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py311h9ecbd09_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda @@ -229,7 +229,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.11-py311h58d527c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.7.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.8.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.3.0-pyh71513ae_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-h2cb9fb3_15.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.1-h740c5af_3.conda @@ -256,7 +256,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2024.12.14-hcefe29a_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.12.14-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cffi-1.17.1-py311h14e8bb7_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda @@ -294,11 +294,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lcms2-2.16-h922389a_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.0.0-h4de3ea5_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h5ad3122_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-h1b535d6_6_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h3b568fd_6_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h3b568fd_6_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h3ffb4b1_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h18dbdb1_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-hb7781cd_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h3b568fd_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h3b568fd_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h1e9d426_7_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-26_linuxaarch64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlicommon-1.1.0-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlidec-1.1.0-h86ecc28_2.conda @@ -307,7 +307,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcrc32c-1.1.2-h01db608_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcurl-8.11.1-h6702fde_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libdeflate-1.23-h5e3c512_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20191231-he28a2e2_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20240808-pl5321h976ea20_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libev-4.33-h31becfc_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libevent-2.1.12-h4ba1bb4_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.6.4-h5ad3122_0.conda @@ -317,9 +317,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-2.32.0-h3888205_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-storage-2.32.0-hb9b2b65_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgrpc-1.67.1-h36c5df4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-2.33.0-hccf9d24_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-storage-2.33.0-hb9b2b65_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgrpc-1.67.1-hf7ccdd3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libiconv-1.17-h31becfc_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libjpeg-turbo-3.0.0-h31becfc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-26_linuxaarch64_openblas.conda @@ -327,10 +327,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnghttp2-1.64.0-hc8609a4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.28-pthreads_h9d3fd7e_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-hfc78867_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-hfc78867_7_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.44-hc4a20ef_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.2-h029595c_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.3-h44a3b7b_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.20-h68df207_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.47.2-h5eb1b54_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libssh2-1.11.1-ha41c0db_0.conda @@ -349,19 +349,19 @@ 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-25.1.0.dev2024122805-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024122805-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024122805-3.11release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025010605-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025010605-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025010605-3.11release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025010605-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-25.1.0.dev2024122805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025010605-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 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py311h69ead2a_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openjpeg-2.5.3-h3f56577_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.0-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.0-hd08dc88_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.29.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.29.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.29.0-pyhd8ed1ab_1.conda @@ -369,22 +369,22 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.29.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.29.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.50b0-pyh3cfb1c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/orc-2.0.3-h3c55218_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/orc-2.0.3-hdd485aa_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pandas-2.2.3-py311h848c333_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pillow-11.0.0-py311hb2a0dd2_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pillow-11.1.0-py311ha4eaa5e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.2.1-py311ha879c10_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/protobuf-5.28.2-py311h89d996e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/protobuf-5.28.3-py311h89d996e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pthread-stubs-0.4-h86ecc28_1002.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-18.1.0-py311hfecb2dc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-18.1.0-py311ha6d2531_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.4-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pydantic-core-2.27.2-py311h0ca61a2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.7.0-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.7.1-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyinstrument-5.0.0-py311ha879c10_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda @@ -399,14 +399,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyyaml-6.0.2-py311ha879c10_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyzmq-26.2.0-py311h826da9f_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/re2-2024.07.02-h2d3a13d_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/re2-2024.07.02-haa97905_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8fc344f_1.conda - 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.10-h5df210e_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/linux-aarch64/safetensors-0.5.0-py311h0ca61a2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-hd4fb6f5_1.conda @@ -416,7 +416,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.21.0-py311h5e37e04_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py311h5487e9b_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda @@ -446,7 +446,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.11-py311h4921393_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.7.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.8.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.3.0-pyh71513ae_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-h8bc59a9_15.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.1-hc8a0bd2_3.conda @@ -473,7 +473,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2024.12.14-hf0a4a13_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.12.14-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.1-py311h3a79f62_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda @@ -509,11 +509,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.16-ha0e7c42_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_hf9b8971_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-h4a2f8bd_6_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-hf07054f_6_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-hf07054f_6_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-h86344ea_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_h07bc746_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-h0ad35bc_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-hf07054f_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-hf07054f_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-h4239455_7_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-26_osxarm64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.1.0-hd74edd7_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.1.0-hd74edd7_2.conda @@ -523,26 +523,26 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.11.1-h73640d1_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.6-ha82da77_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.23-hec38601_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20191231-hc8eb9b7_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20240808-pl5321hafb1f1b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libev-4.33-h93a5062_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libevent-2.1.12-h2757513_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.4-h286801f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-2.32.0-h8d8be31_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-storage-2.32.0-h7081f7f_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgrpc-1.67.1-hc70892a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-2.33.0-hdbe95d5_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-storage-2.33.0-h7081f7f_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgrpc-1.67.1-h0a426d6_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.17-h0d3ecfb_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.0.0-hb547adb_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-26_osxarm64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.3-h39f12f2_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.64.0-h6d7220d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.28-openmp_hf332438_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-h636d7b7_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-h636d7b7_7_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.44-hc14010f_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.2-h8f0b736_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h2348fd5_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.3-h3bd63a1_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h07bc746_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.47.2-h3f77e49_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.1-h9cc3647_0.conda @@ -558,19 +558,19 @@ 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-25.1.0.dev2024122805-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024122805-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024122805-3.11release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025010605-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025010605-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025010605-3.11release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025010605-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-25.1.0.dev2024122805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025010605-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 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h7bae524_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py311h7125741_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openjpeg-2.5.3-h8a3d83b_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.0-h39f12f2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.0-h81ee809_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.29.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.29.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.29.0-pyhd8ed1ab_1.conda @@ -578,22 +578,22 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.29.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.29.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.50b0-pyh3cfb1c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/orc-2.0.3-hbcee414_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/orc-2.0.3-h0ff2369_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.3-py311h9cb3ce9_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-11.0.0-py311h3894ae9_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-11.1.0-py311hb9ba9e9_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.1-py311h917b07b_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/protobuf-5.28.2-py311h6885ffc_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/protobuf-5.28.3-py311h155a34a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pthread-stubs-0.4-hd74edd7_1002.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-18.1.0-py311ha1ab1f8_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-18.1.0-py311he04fa90_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.4-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.27.2-py311h3ff9189_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.7.0-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.7.1-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyinstrument-5.0.0-py311hae2e1ce_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda @@ -608,13 +608,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py311h460d6c5_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.0-py311h730b646_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/re2-2024.07.02-hcd0e937_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/re2-2024.07.02-h6589ca4_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h92ec313_1.conda - 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/osx-arm64/safetensors-0.5.0-py311h3ff9189_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-h98b9ce2_1.conda @@ -624,7 +624,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.21.0-py311h82b0fb8_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py311h917b07b_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda @@ -819,13 +819,13 @@ packages: timestamp: 1733247158254 - kind: conda name: anyio - version: 4.7.0 + version: 4.8.0 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/anyio-4.7.0-pyhd8ed1ab_0.conda - sha256: 687537ee3af30f8784986bf40cac30e88138770b16e51ca9850c9c23c09aeba1 - md5: c88107912954a983c2caf25f7fd55158 + url: https://conda.anaconda.org/conda-forge/noarch/anyio-4.8.0-pyhd8ed1ab_0.conda + sha256: f1455d2953e3eb6d71bc49881c8558d8e01888469dfd21061dd48afb6183e836 + md5: 848d25bfbadf020ee4d4ba90e5668252 depends: - exceptiongroup >=1.0.2 - idna >=2.8 @@ -837,8 +837,8 @@ packages: - uvloop >=0.21 license: MIT license_family: MIT - size: 112730 - timestamp: 1733532678437 + size: 115305 + timestamp: 1736174485476 - kind: conda name: attrs version: 24.3.0 @@ -2139,20 +2139,19 @@ packages: timestamp: 1725560701719 - kind: conda name: charset-normalizer - version: 3.4.0 - build: pyhd8ed1ab_1 - build_number: 1 + version: 3.4.1 + build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_1.conda - sha256: 63022ee2c6a157a9f980250a66f54bdcdf5abee817348d0f9a74c2441a6fbf0e - md5: 6581a17bba6b948bb60130026404a9d6 + url: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda + sha256: 4e0ee91b97e5de3e74567bdacea27f0139709fceca4db8adffbe24deffccb09b + md5: e83a31202d1c0a000fce3e9cf3825875 depends: - python >=3.9 license: MIT license_family: MIT - size: 47533 - timestamp: 1733218182393 + size: 47438 + timestamp: 1735929811779 - kind: conda name: click version: 8.1.8 @@ -2859,6 +2858,7 @@ packages: - markupsafe >=2.0 - python >=3.9 license: BSD-3-Clause + license_family: BSD size: 112561 timestamp: 1734824044952 - kind: conda @@ -3110,32 +3110,31 @@ packages: - kind: conda name: libabseil version: '20240722.0' - build: cxx17_h5888daf_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_h5888daf_1.conda - sha256: 8f91429091183c26950f1e7ffa730e8632f0627ba35d2fccd71df31628c9b4e5 - md5: e1f604644fe8d78e22660e2fec6756bc + build: cxx17_h07bc746_4 + build_number: 4 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_h07bc746_4.conda + sha256: 05fa5e5e908962b9c5aba95f962e2ca81d9599c4715aebe5e4ddb72b309d1770 + md5: c2d95bd7aa8d564a9bd7eca5e571a5b3 depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libstdcxx >=13 + - __osx >=11.0 + - libcxx >=18 constrains: - libabseil-static =20240722.0=cxx17* - abseil-cpp =20240722.0 license: Apache-2.0 license_family: Apache - size: 1310521 - timestamp: 1727295454064 + size: 1178260 + timestamp: 1736008642885 - kind: conda name: libabseil version: '20240722.0' - build: cxx17_h5ad3122_1 - build_number: 1 + build: cxx17_h18dbdb1_4 + build_number: 4 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h5ad3122_1.conda - sha256: 590e47dce38031a8893e70491f3b71e214de7781cab53b6f017aa6f6841cb076 - md5: 6fe6b3694c4792a8e26755d3b06f0b80 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h18dbdb1_4.conda + sha256: bb6c5fb3b8de5f90735c5252b57efb3c268ee222c755569dac18065f05147670 + md5: 633b9fe454ffea2aaf29e191d946a83b depends: - libgcc >=13 - libstdcxx >=13 @@ -3144,37 +3143,39 @@ packages: - libabseil-static =20240722.0=cxx17* license: Apache-2.0 license_family: Apache - size: 1328502 - timestamp: 1727295490806 + size: 1334844 + timestamp: 1736008472455 - kind: conda name: libabseil version: '20240722.0' - build: cxx17_hf9b8971_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_hf9b8971_1.conda - sha256: 90bf08a75506dfcf28a70977da8ab050bcf594cd02abd3a9d84a22c9e8161724 - md5: 706da5e791c569a7b9814877098a6a0a + build: cxx17_hbbce691_4 + build_number: 4 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda + sha256: 143a586aa67d50622ef703de57b9d43f44945836d6568e0e7aa174bd8c45e0d4 + md5: 488f260ccda0afaf08acb286db439c2f depends: - - __osx >=11.0 - - libcxx >=17 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 constrains: - libabseil-static =20240722.0=cxx17* - abseil-cpp =20240722.0 license: Apache-2.0 license_family: Apache - size: 1179072 - timestamp: 1727295571173 + size: 1311599 + timestamp: 1736008414161 - kind: conda name: libarrow version: 18.1.0 - build: h1b535d6_6_cpu - build_number: 6 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-h1b535d6_6_cpu.conda - sha256: 087b579aebf351ca41c54214121d86a15a41c92051cbd432d6f3a3f58a8c31b0 - md5: 4c0ad68efba1113ac5833975c67b565d + build: h0ad35bc_7_cpu + build_number: 7 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-h0ad35bc_7_cpu.conda + sha256: 4fbdd8bb89d912bf03f10f9373a8d96a1cdd7a7851e107393418a3d2715bc27e + md5: 4ba2173203f44bbf03d19aaba6ed07d3 depends: + - __osx >=11.0 - aws-crt-cpp >=0.29.7,<0.29.8.0a0 - aws-sdk-cpp >=1.11.458,<1.11.459.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 @@ -3182,17 +3183,15 @@ packages: - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 - bzip2 >=1.0.8,<2.0a0 - - gflags >=2.2.2,<2.3.0a0 - glog >=0.7.1,<0.8.0a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - libbrotlidec >=1.1.0,<1.2.0a0 - libbrotlienc >=1.1.0,<1.2.0a0 - - libgcc >=13 - - libgoogle-cloud >=2.32.0,<2.33.0a0 - - libgoogle-cloud-storage >=2.32.0,<2.33.0a0 + - libcxx >=18 + - libgoogle-cloud >=2.33.0,<2.34.0a0 + - libgoogle-cloud-storage >=2.33.0,<2.34.0a0 - libre2-11 >=2024.7.2 - - libstdcxx >=13 - libutf8proc >=2.9.0,<2.10.0a0 - libzlib >=1.3.1,<2.0a0 - lz4-c >=1.10.0,<1.11.0a0 @@ -3201,24 +3200,23 @@ packages: - snappy >=1.2.1,<1.3.0a0 - zstd >=1.5.6,<1.6.0a0 constrains: - - parquet-cpp <0.0a0 - arrow-cpp <0.0a0 + - parquet-cpp <0.0a0 - apache-arrow-proc =*=cpu license: Apache-2.0 license_family: APACHE - size: 8040629 - timestamp: 1733810319239 + size: 5506699 + timestamp: 1735682962976 - kind: conda name: libarrow version: 18.1.0 - build: h44a453e_6_cpu - build_number: 6 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-h44a453e_6_cpu.conda - sha256: abf17e99b03356a9d6248e965826c1352ff01b00d3a62cc51393bb0744d72803 - md5: 2cf6d608d6e66506f69797d5c6944c35 + build: hb7781cd_7_cpu + build_number: 7 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-hb7781cd_7_cpu.conda + sha256: f6107506bd16788560b47a4d18c1457b4df30a49334364d32613fe3f53ba6cbb + md5: 98cf7127ca7b3854c5d1c8bef1ed6e53 depends: - - __glibc >=2.17,<3.0.a0 - aws-crt-cpp >=0.29.7,<0.29.8.0a0 - aws-sdk-cpp >=1.11.458,<1.11.459.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 @@ -3233,8 +3231,8 @@ packages: - libbrotlidec >=1.1.0,<1.2.0a0 - libbrotlienc >=1.1.0,<1.2.0a0 - libgcc >=13 - - libgoogle-cloud >=2.32.0,<2.33.0a0 - - libgoogle-cloud-storage >=2.32.0,<2.33.0a0 + - libgoogle-cloud >=2.33.0,<2.34.0a0 + - libgoogle-cloud-storage >=2.33.0,<2.34.0a0 - libre2-11 >=2024.7.2 - libstdcxx >=13 - libutf8proc >=2.9.0,<2.10.0a0 @@ -3245,24 +3243,24 @@ packages: - snappy >=1.2.1,<1.3.0a0 - zstd >=1.5.6,<1.6.0a0 constrains: - - parquet-cpp <0.0a0 - arrow-cpp <0.0a0 + - parquet-cpp <0.0a0 - apache-arrow-proc =*=cpu license: Apache-2.0 license_family: APACHE - size: 8786061 - timestamp: 1733810643966 + size: 8026714 + timestamp: 1735685336542 - kind: conda name: libarrow version: 18.1.0 - build: h4a2f8bd_6_cpu - build_number: 6 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-h4a2f8bd_6_cpu.conda - sha256: 9ed3ea1bc15005c0df187268ef91407afaa908cf82f36f5acbbf50ac24d7f806 - md5: 835cdd84195b84dc34d128bd5d3580b9 + build: hd595efa_7_cpu + build_number: 7 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-hd595efa_7_cpu.conda + sha256: 554ffa338264c1dc34d95adb7eb856d50a2f25e7fa303a1a51e4372301b7c96f + md5: 08d4aff5ee6dee9a1b9ab13fca927697 depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 - aws-crt-cpp >=0.29.7,<0.29.8.0a0 - aws-sdk-cpp >=1.11.458,<1.11.459.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 @@ -3270,15 +3268,17 @@ packages: - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 - bzip2 >=1.0.8,<2.0a0 + - gflags >=2.2.2,<2.3.0a0 - glog >=0.7.1,<0.8.0a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - libbrotlidec >=1.1.0,<1.2.0a0 - libbrotlienc >=1.1.0,<1.2.0a0 - - libcxx >=18 - - libgoogle-cloud >=2.32.0,<2.33.0a0 - - libgoogle-cloud-storage >=2.32.0,<2.33.0a0 + - libgcc >=13 + - libgoogle-cloud >=2.33.0,<2.34.0a0 + - libgoogle-cloud-storage >=2.33.0,<2.34.0a0 - libre2-11 >=2024.7.2 + - libstdcxx >=13 - libutf8proc >=2.9.0,<2.10.0a0 - libzlib >=1.3.1,<2.0a0 - lz4-c >=1.10.0,<1.11.0a0 @@ -3287,190 +3287,190 @@ packages: - snappy >=1.2.1,<1.3.0a0 - zstd >=1.5.6,<1.6.0a0 constrains: - - apache-arrow-proc =*=cpu - arrow-cpp <0.0a0 - parquet-cpp <0.0a0 + - apache-arrow-proc =*=cpu license: Apache-2.0 license_family: APACHE - size: 5494797 - timestamp: 1733808145854 + size: 8770256 + timestamp: 1735684696564 - kind: conda name: libarrow-acero version: 18.1.0 - build: h3b568fd_6_cpu - build_number: 6 + build: h3b568fd_7_cpu + build_number: 7 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h3b568fd_6_cpu.conda - sha256: fdb70e2499e59b730084ecd53008b361a6f6090b5fb49624feda06b7e84c7b8c - md5: c50907eefe2ae22d826e7cb2e4d712f5 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h3b568fd_7_cpu.conda + sha256: 42cbfc87096f745d565d814d65b7228c82d985f1898859d5e456016d73e81c82 + md5: 4c1d8c3feea249782148d3cd6a25392e depends: - - libarrow 18.1.0 h1b535d6_6_cpu + - libarrow 18.1.0 hb7781cd_7_cpu - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 license_family: APACHE - size: 578091 - timestamp: 1733810378092 + size: 578222 + timestamp: 1735685424850 - kind: conda name: libarrow-acero version: 18.1.0 - build: hcb10f89_6_cpu - build_number: 6 + build: hcb10f89_7_cpu + build_number: 7 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-hcb10f89_6_cpu.conda - sha256: a32fa1d71415afc02b5cf3cd4c0a6ec0af9e749308829cc65ff79689222ce479 - md5: 143f9288b64759a6427563f058c62f2b + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-hcb10f89_7_cpu.conda + sha256: 87ea5d6a84d922d73975dce8661fccf257e72e755175b12c30e1181a34e37987 + md5: 12d84228204c56fec6ed113288014d11 depends: - __glibc >=2.17,<3.0.a0 - - libarrow 18.1.0 h44a453e_6_cpu + - libarrow 18.1.0 hd595efa_7_cpu - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 license_family: APACHE - size: 611745 - timestamp: 1733810698469 + size: 612463 + timestamp: 1735684749868 - kind: conda name: libarrow-acero version: 18.1.0 - build: hf07054f_6_cpu - build_number: 6 + build: hf07054f_7_cpu + build_number: 7 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-hf07054f_6_cpu.conda - sha256: e1cae46409927470439ef9ae93ed09b3493d0579501ca9ebfa79ded212ee98d8 - md5: 97fc01254714e1572624baefdd7cc898 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-hf07054f_7_cpu.conda + sha256: 86e20cebfdb4f335e98265c1b88f5053bf3e3648768a317856295846bfdbf2b4 + md5: 3eaf71fe987de13061db795e03bb1a1c depends: - __osx >=11.0 - - libarrow 18.1.0 h4a2f8bd_6_cpu + - libarrow 18.1.0 h0ad35bc_7_cpu - libcxx >=18 license: Apache-2.0 license_family: APACHE - size: 483713 - timestamp: 1733808246880 + size: 485185 + timestamp: 1735683071232 - kind: conda name: libarrow-dataset version: 18.1.0 - build: h3b568fd_6_cpu - build_number: 6 + build: h3b568fd_7_cpu + build_number: 7 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h3b568fd_6_cpu.conda - sha256: 2a08f5a1017ff660c37ae0c24343a119cb2511c6edd69e23d0a5090a0967ea35 - md5: bb1548ad011c4f9107fcc4cc548473bf + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h3b568fd_7_cpu.conda + sha256: 13ba7d3d08015aa26569eca9e198e2f8b2a0cd2d9c420e41c78cc2e5d5170f26 + md5: f39f5d725c2ca94c2e7b19e2717fd4ab depends: - - libarrow 18.1.0 h1b535d6_6_cpu - - libarrow-acero 18.1.0 h3b568fd_6_cpu + - libarrow 18.1.0 hb7781cd_7_cpu + - libarrow-acero 18.1.0 h3b568fd_7_cpu - libgcc >=13 - - libparquet 18.1.0 hfc78867_6_cpu + - libparquet 18.1.0 hfc78867_7_cpu - libstdcxx >=13 license: Apache-2.0 license_family: APACHE - size: 559673 - timestamp: 1733810461646 + size: 560329 + timestamp: 1735685518922 - kind: conda name: libarrow-dataset version: 18.1.0 - build: hcb10f89_6_cpu - build_number: 6 + build: hcb10f89_7_cpu + build_number: 7 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-hcb10f89_6_cpu.conda - sha256: 74eeb178070002842d3ed721769399320e3a68a0843319eaf899a092a31def26 - md5: 20ca46a6bc714a6ab189d5b3f46e66d8 + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-hcb10f89_7_cpu.conda + sha256: 99c12511fba79c7947f78d676eae5857659084f687f375f68bc20bd4cddb0a0e + md5: 0a81eb63d7cd150f598c752e86388d57 depends: - __glibc >=2.17,<3.0.a0 - - libarrow 18.1.0 h44a453e_6_cpu - - libarrow-acero 18.1.0 hcb10f89_6_cpu + - libarrow 18.1.0 hd595efa_7_cpu + - libarrow-acero 18.1.0 hcb10f89_7_cpu - libgcc >=13 - - libparquet 18.1.0 h081d1f1_6_cpu + - libparquet 18.1.0 h081d1f1_7_cpu - libstdcxx >=13 license: Apache-2.0 license_family: APACHE - size: 586627 - timestamp: 1733810842604 + size: 587497 + timestamp: 1735684880531 - kind: conda name: libarrow-dataset version: 18.1.0 - build: hf07054f_6_cpu - build_number: 6 + build: hf07054f_7_cpu + build_number: 7 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-hf07054f_6_cpu.conda - sha256: 6eba942ce926419f74e6e0a7c3994a7d78ab6be47115e6bb70e02136554736be - md5: 0774276be6659aaa0007f1b0f6ee19b0 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-hf07054f_7_cpu.conda + sha256: 52c5c4e9cd5f2ac91dcebb6a920ab2536febcea116ff8767e5439329d7da820b + md5: 97a2d3606682d94f7d73112e9ad684ae depends: - __osx >=11.0 - - libarrow 18.1.0 h4a2f8bd_6_cpu - - libarrow-acero 18.1.0 hf07054f_6_cpu + - libarrow 18.1.0 h0ad35bc_7_cpu + - libarrow-acero 18.1.0 hf07054f_7_cpu - libcxx >=18 - - libparquet 18.1.0 h636d7b7_6_cpu + - libparquet 18.1.0 h636d7b7_7_cpu license: Apache-2.0 license_family: APACHE - size: 489948 - timestamp: 1733809328231 + size: 491237 + timestamp: 1735684688308 - kind: conda name: libarrow-substrait version: 18.1.0 - build: h3ee7192_6_cpu - build_number: 6 + build: h08228c5_7_cpu + build_number: 7 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-h3ee7192_6_cpu.conda - sha256: bda6728db019dd0c409b1996ad9ef6ab0bcee3a94dc66a8045e8c1049c566055 - md5: aa313b3168caf98d00b3753f5ba27650 + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-h08228c5_7_cpu.conda + sha256: 53ea53a06e137c2f81ebfdff3f978babb8b59e31f705a19b57056ec8754c1abf + md5: e128def53c133e8a23ac00cd4a479335 depends: - __glibc >=2.17,<3.0.a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.1.0 h44a453e_6_cpu - - libarrow-acero 18.1.0 hcb10f89_6_cpu - - libarrow-dataset 18.1.0 hcb10f89_6_cpu + - libarrow 18.1.0 hd595efa_7_cpu + - libarrow-acero 18.1.0 hcb10f89_7_cpu + - libarrow-dataset 18.1.0 hcb10f89_7_cpu - libgcc >=13 - - libprotobuf >=5.28.2,<5.28.3.0a0 + - libprotobuf >=5.28.3,<5.28.4.0a0 - libstdcxx >=13 license: Apache-2.0 license_family: APACHE - size: 519989 - timestamp: 1733810903274 + size: 521861 + timestamp: 1735684940668 - kind: conda name: libarrow-substrait version: 18.1.0 - build: h3ffb4b1_6_cpu - build_number: 6 + build: h1e9d426_7_cpu + build_number: 7 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h3ffb4b1_6_cpu.conda - sha256: 9f78c55c5d7122e588a6f226cbf7e909c479d66ed18edc633d68324323d386b9 - md5: 5db2e6832397b8ca70a6f7b00e0c3629 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h1e9d426_7_cpu.conda + sha256: 252e2a0d8c733f36b50499786480a05a59577d617f291868149c80534c1e8ffc + md5: 6da921d9e1c4e2ab2679eeea7cbd4c82 depends: - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.1.0 h1b535d6_6_cpu - - libarrow-acero 18.1.0 h3b568fd_6_cpu - - libarrow-dataset 18.1.0 h3b568fd_6_cpu + - libarrow 18.1.0 hb7781cd_7_cpu + - libarrow-acero 18.1.0 h3b568fd_7_cpu + - libarrow-dataset 18.1.0 h3b568fd_7_cpu - libgcc >=13 - - libprotobuf >=5.28.2,<5.28.3.0a0 + - libprotobuf >=5.28.3,<5.28.4.0a0 - libstdcxx >=13 license: Apache-2.0 license_family: APACHE - size: 515928 - timestamp: 1733810503359 + size: 516014 + timestamp: 1735685565929 - kind: conda name: libarrow-substrait version: 18.1.0 - build: h86344ea_6_cpu - build_number: 6 + build: h4239455_7_cpu + build_number: 7 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-h86344ea_6_cpu.conda - sha256: bafd9ca59ebb5ad34b77aff316ef7b59c5fb1eb8a7b6a15de8dcbdf3ce37556d - md5: c1c162f5bf569cff8bed6def705a899f + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-h4239455_7_cpu.conda + sha256: a45bbdd6932aed972d6c6ce30a7439aa8ec9d9b8ee5affb350d41e50abdc0127 + md5: 91927747173f65695e441346c7145e26 depends: - __osx >=11.0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.1.0 h4a2f8bd_6_cpu - - libarrow-acero 18.1.0 hf07054f_6_cpu - - libarrow-dataset 18.1.0 hf07054f_6_cpu + - libarrow 18.1.0 h0ad35bc_7_cpu + - libarrow-acero 18.1.0 hf07054f_7_cpu + - libarrow-dataset 18.1.0 hf07054f_7_cpu - libcxx >=18 - - libprotobuf >=5.28.2,<5.28.3.0a0 + - libprotobuf >=5.28.3,<5.28.4.0a0 license: Apache-2.0 license_family: APACHE - size: 451623 - timestamp: 1733809487176 + size: 452385 + timestamp: 1735684993831 - kind: conda name: libblas version: 3.9.0 @@ -3900,51 +3900,50 @@ packages: timestamp: 1734373971372 - kind: conda name: libedit - version: 3.1.20191231 - build: hc8eb9b7_2 - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20191231-hc8eb9b7_2.tar.bz2 - sha256: 3912636197933ecfe4692634119e8644904b41a58f30cad9d1fc02f6ba4d9fca - md5: 30e4362988a2623e9eb34337b83e01f9 + version: 3.1.20240808 + build: pl5321h7949ede_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20240808-pl5321h7949ede_0.conda + sha256: 4d0d69ddf9cc7d724a1ccf3a9852e44c8aea9825692582bac2c4e8d21ec95ccd + md5: 8247f80f3dc464d9322e85007e307fe8 depends: - - ncurses >=6.2,<7.0.0a0 + - ncurses + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - ncurses >=6.5,<7.0a0 license: BSD-2-Clause - license_family: BSD - size: 96607 - timestamp: 1597616630749 + size: 134657 + timestamp: 1736191912705 - kind: conda name: libedit - version: 3.1.20191231 - build: he28a2e2_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20191231-he28a2e2_2.tar.bz2 - sha256: a57d37c236d8f7c886e01656f4949d9dcca131d2a0728609c6f7fa338b65f1cf - md5: 4d331e44109e3f0e19b4cb8f9b82f3e1 + version: 3.1.20240808 + build: pl5321h976ea20_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20240808-pl5321h976ea20_0.conda + sha256: 031daea98cf278f858b7957ad5dc475f1b5673cd5e718850529401ced64cef2c + md5: 0be40129d3dd1a152fff29a85f0785d0 depends: - - libgcc-ng >=7.5.0 - - ncurses >=6.2,<7.0.0a0 + - ncurses + - libgcc >=13 + - ncurses >=6.5,<7.0a0 license: BSD-2-Clause - license_family: BSD - size: 123878 - timestamp: 1597616541093 + size: 148120 + timestamp: 1736192137151 - kind: conda name: libedit - version: 3.1.20191231 - build: he28a2e2_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20191231-he28a2e2_2.tar.bz2 - sha256: debc31fb2f07ba2b0363f90e455873670734082822926ba4a9556431ec0bf36d - md5: 29371161d77933a54fccf1bb66b96529 + version: 3.1.20240808 + build: pl5321hafb1f1b_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20240808-pl5321hafb1f1b_0.conda + sha256: fb934d7a03279ec8eae4bf1913ac9058fcf6fed35290d8ffa6e04157f396a3b1 + md5: af89aa84ffb5ee551ce0c137b951a3b5 depends: - - libgcc-ng >=7.5.0 - - ncurses >=6.2,<7.0.0a0 + - ncurses + - __osx >=11.0 + - ncurses >=6.5,<7.0a0 license: BSD-2-Clause - license_family: BSD - size: 134104 - timestamp: 1597617110769 + size: 107634 + timestamp: 1736192034117 - kind: conda name: libev version: '4.33' @@ -4324,214 +4323,223 @@ packages: timestamp: 1729089357313 - kind: conda name: libgoogle-cloud - version: 2.32.0 - build: h3888205_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-2.32.0-h3888205_0.conda - sha256: 36af2844ce8fafd477214d51117746144461132f76759a7d29963b4583b577be - md5: a40b948bf4eabcc1ce708c40ffd7c06d + version: 2.33.0 + build: h2b5623c_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.33.0-h2b5623c_1.conda + sha256: ae48ee93e2c226bf682f1e389c2fd51ae7bf77c2ce4b3aee069764f4be1c63f2 + md5: 61829a8dd5f4e2327e707572065bae41 depends: + - __glibc >=2.17,<3.0.a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libcurl >=8.10.1,<9.0a0 + - libcurl >=8.11.1,<9.0a0 - libgcc >=13 - libgrpc >=1.67.1,<1.68.0a0 - - libprotobuf >=5.28.2,<5.28.3.0a0 + - libprotobuf >=5.28.3,<5.28.4.0a0 - libstdcxx >=13 - openssl >=3.4.0,<4.0a0 constrains: - - libgoogle-cloud 2.32.0 *_0 + - libgoogle-cloud 2.33.0 *_1 license: Apache-2.0 license_family: Apache - size: 1248560 - timestamp: 1733512309504 + size: 1254656 + timestamp: 1735648569457 - kind: conda name: libgoogle-cloud - version: 2.32.0 - build: h804f50b_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.32.0-h804f50b_0.conda - sha256: 126856add750013390dff664a3c3cd0f6f0cbbc683b0025a7ce9d1618968bc70 - md5: 3d96df4d6b1c88455e05b94ce8a14a53 + version: 2.33.0 + build: hccf9d24_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-2.33.0-hccf9d24_1.conda + sha256: d3d4def86d880431928799ba90ca97e57c2f05677c03af8de2337502926c492c + md5: a2724014eb04f14bd71d35f45b062dd0 depends: - - __glibc >=2.17,<3.0.a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libcurl >=8.10.1,<9.0a0 + - libcurl >=8.11.1,<9.0a0 - libgcc >=13 - libgrpc >=1.67.1,<1.68.0a0 - - libprotobuf >=5.28.2,<5.28.3.0a0 + - libprotobuf >=5.28.3,<5.28.4.0a0 - libstdcxx >=13 - openssl >=3.4.0,<4.0a0 constrains: - - libgoogle-cloud 2.32.0 *_0 + - libgoogle-cloud 2.33.0 *_1 license: Apache-2.0 license_family: Apache - size: 1249557 - timestamp: 1733512191906 + size: 1253019 + timestamp: 1735649566849 - kind: conda name: libgoogle-cloud - version: 2.32.0 - build: h8d8be31_0 + version: 2.33.0 + build: hdbe95d5_1 + build_number: 1 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-2.32.0-h8d8be31_0.conda - sha256: 722e49dbdc4486105d9f5b79a7ba4f9064602fe20c4015e97684c898ab8d3386 - md5: d7ab9e0eb7d55eac4943913073de61d7 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-2.33.0-hdbe95d5_1.conda + sha256: ce95aca02451694a4154c7770b6addf4fb859abf17912de6ec947da8469a56ce + md5: 91de1fbab8610974c0094c266bc63435 depends: - __osx >=11.0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libcurl >=8.10.1,<9.0a0 + - libcurl >=8.11.1,<9.0a0 - libcxx >=18 - libgrpc >=1.67.1,<1.68.0a0 - - libprotobuf >=5.28.2,<5.28.3.0a0 + - libprotobuf >=5.28.3,<5.28.4.0a0 - openssl >=3.4.0,<4.0a0 constrains: - - libgoogle-cloud 2.32.0 *_0 + - libgoogle-cloud 2.33.0 *_1 license: Apache-2.0 license_family: Apache - size: 876210 - timestamp: 1733512539476 + size: 877594 + timestamp: 1735648230965 - kind: conda name: libgoogle-cloud-storage - version: 2.32.0 - build: h0121fbd_0 + version: 2.33.0 + build: h0121fbd_1 + build_number: 1 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.32.0-h0121fbd_0.conda - sha256: d1b53d17df38b52a4bc6d1fe6af0e611d6480ce10b0af570c84bd38c8aa83b91 - md5: 877a5ec0431a5af83bf0cd0522bfe661 + url: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.33.0-h0121fbd_1.conda + sha256: 41022523320ca8633a6c615710823e596efadb50f06d724e1a0c81e27994f257 + md5: b0cfb5044685a7a9fa43ae669124f0a0 depends: - __glibc >=2.17,<3.0.a0 - libabseil - libcrc32c >=1.1.2,<1.2.0a0 - libcurl - libgcc >=13 - - libgoogle-cloud 2.32.0 h804f50b_0 + - libgoogle-cloud 2.33.0 h2b5623c_1 - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - openssl license: Apache-2.0 license_family: Apache - size: 782108 - timestamp: 1733512329104 + size: 784357 + timestamp: 1735648759177 - kind: conda name: libgoogle-cloud-storage - version: 2.32.0 - build: h7081f7f_0 + version: 2.33.0 + build: h7081f7f_1 + build_number: 1 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-storage-2.32.0-h7081f7f_0.conda - sha256: 609df2cf376ba66460f40143f835fc567cae4458df80705587cd2efd59c09bf1 - md5: 28f5ab5cf95170dfacd05d2bb301e573 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-storage-2.33.0-h7081f7f_1.conda + sha256: c0524a22064bc17f5c037da09ba54cc9e767741ef645178e499750c44bec2531 + md5: af8e51382464d4cc2d0054977c40a732 depends: - __osx >=11.0 - libabseil - libcrc32c >=1.1.2,<1.2.0a0 - libcurl - libcxx >=18 - - libgoogle-cloud 2.32.0 h8d8be31_0 + - libgoogle-cloud 2.33.0 hdbe95d5_1 - libzlib >=1.3.1,<2.0a0 - openssl license: Apache-2.0 license_family: Apache - size: 526895 - timestamp: 1733513644846 + size: 526963 + timestamp: 1735649222088 - kind: conda name: libgoogle-cloud-storage - version: 2.32.0 - build: hb9b2b65_0 + version: 2.33.0 + build: hb9b2b65_1 + build_number: 1 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-storage-2.32.0-hb9b2b65_0.conda - sha256: e120e7b6c9c9d25baa8ae903106babdd3c969523ae25278a615ed9de4bd0fc35 - md5: 925ab0ca33baca4fcfee585cecb94169 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-storage-2.33.0-hb9b2b65_1.conda + sha256: 5eda1cbba68709b91b370b3792c9cfd7bec4ac4e2262f0887d12e1f000ae1191 + md5: 45df2267ff4d8ce532e8d300ce0b0829 depends: - libabseil - libcrc32c >=1.1.2,<1.2.0a0 - libcurl - libgcc >=13 - - libgoogle-cloud 2.32.0 h3888205_0 + - libgoogle-cloud 2.33.0 hccf9d24_1 - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - openssl license: Apache-2.0 license_family: Apache - size: 737964 - timestamp: 1733512457785 + size: 737518 + timestamp: 1735649773462 - kind: conda name: libgrpc version: 1.67.1 - build: h36c5df4_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libgrpc-1.67.1-h36c5df4_0.conda - sha256: 1f6673d9d866048c9cf28fd56e6874ffc7e2c53c47d7071cb367d5fc2dde16a7 - md5: b946137e362e98a55a77fdf0b20a7739 + build: h0a426d6_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libgrpc-1.67.1-h0a426d6_1.conda + sha256: 630edf63981818ff590367cb95fddbed0f5a390464d0952c90ec81de899e84a6 + md5: 8a3cba079d6ac985e7d73c76a678fbb4 depends: - - c-ares >=1.32.3,<2.0a0 + - __osx >=11.0 + - c-ares >=1.34.4,<2.0a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libgcc >=13 - - libprotobuf >=5.28.2,<5.28.3.0a0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 - libre2-11 >=2024.7.2 - - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - - openssl >=3.3.2,<4.0a0 + - openssl >=3.4.0,<4.0a0 - re2 constrains: - grpc-cpp =1.67.1 license: Apache-2.0 license_family: APACHE - size: 7131846 - timestamp: 1730236305327 + size: 5311706 + timestamp: 1735585137716 - kind: conda name: libgrpc version: 1.67.1 - build: hc2c308b_0 + build: h25350d4_1 + build_number: 1 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.67.1-hc2c308b_0.conda - sha256: 870550c1faf524e9a695262cd4c31441b18ad542f16893bd3c5dbc93106705f7 - md5: 4606a4647bfe857e3cfe21ca12ac3afb + url: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.67.1-h25350d4_1.conda + sha256: 014627485b3cf0ea18e04c0bab07be7fb98722a3aeeb58477acc7e1c3d2f911e + md5: 0c6497a760b99a926c7c12b74951a39c depends: - __glibc >=2.17,<3.0.a0 - - c-ares >=1.32.3,<2.0a0 + - c-ares >=1.34.4,<2.0a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - libgcc >=13 - - libprotobuf >=5.28.2,<5.28.3.0a0 + - libprotobuf >=5.28.3,<5.28.4.0a0 - libre2-11 >=2024.7.2 - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - - openssl >=3.3.2,<4.0a0 + - openssl >=3.4.0,<4.0a0 - re2 constrains: - grpc-cpp =1.67.1 license: Apache-2.0 license_family: APACHE - size: 7362336 - timestamp: 1730236333879 + size: 7792251 + timestamp: 1735584856826 - kind: conda name: libgrpc version: 1.67.1 - build: hc70892a_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libgrpc-1.67.1-hc70892a_0.conda - sha256: d2393fcd3c3584e5d58da4122f48bcf297567d2f6f14b3d1fcbd34fdd5040694 - md5: 624e27571fde34f8acc2afec840ac435 + build: hf7ccdd3_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libgrpc-1.67.1-hf7ccdd3_1.conda + sha256: 3fa173dc1d7456aac2b26937daae86a08432a31640e3d6569c62edc661fc9bbe + md5: 8fb41a425bebaeb3d0fa568503612e64 depends: - - __osx >=11.0 - - c-ares >=1.34.2,<2.0a0 + - c-ares >=1.34.4,<2.0a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libcxx >=17 - - libprotobuf >=5.28.2,<5.28.3.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 - libre2-11 >=2024.7.2 + - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - - openssl >=3.3.2,<4.0a0 + - openssl >=3.4.0,<4.0a0 - re2 constrains: - grpc-cpp =1.67.1 license: Apache-2.0 license_family: APACHE - size: 4882208 - timestamp: 1730236299095 + size: 7430006 + timestamp: 1735585769731 - kind: conda name: libiconv version: '1.17' @@ -4869,61 +4877,61 @@ packages: - kind: conda name: libparquet version: 18.1.0 - build: h081d1f1_6_cpu - build_number: 6 + build: h081d1f1_7_cpu + build_number: 7 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-h081d1f1_6_cpu.conda - sha256: c691a59f1ebb6cedbf827f49f6cf414e08b0eec911f589133e6a8321e8ac701c - md5: 68788df49ce7480187eb6387f15b2b67 + url: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-h081d1f1_7_cpu.conda + sha256: 55945b761130f60abdecf1551907ecfd05cb4a5958cf74d855b30c005ecb3592 + md5: b97013ef4e1dd2cf11594f06d5b5e83a depends: - __glibc >=2.17,<3.0.a0 - - libarrow 18.1.0 h44a453e_6_cpu + - libarrow 18.1.0 hd595efa_7_cpu - libgcc >=13 - libstdcxx >=13 - 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 + size: 1205598 + timestamp: 1735684849150 - kind: conda name: libparquet version: 18.1.0 - build: h636d7b7_6_cpu - build_number: 6 + build: h636d7b7_7_cpu + build_number: 7 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-h636d7b7_6_cpu.conda - sha256: 88c1e810bede65c54f1ebc51c14400f9e8cf0fc1f88a8c0a99210e2f5dfed582 - md5: 9b333c3a38e55f6c1b8733222e22f528 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-h636d7b7_7_cpu.conda + sha256: bf42e43542a90edd86ba5aa5fd4543671625f1bc35f62be32688f00e18bae990 + md5: 93de9ba66a20db32a2646d313794b3a8 depends: - __osx >=11.0 - - libarrow 18.1.0 h4a2f8bd_6_cpu + - libarrow 18.1.0 h0ad35bc_7_cpu - libcxx >=18 - 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 + size: 873251 + timestamp: 1735684582558 - kind: conda name: libparquet version: 18.1.0 - build: hfc78867_6_cpu - build_number: 6 + build: hfc78867_7_cpu + build_number: 7 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-hfc78867_6_cpu.conda - sha256: 38aab34c422519c530d0e9a3e0ffd1624db1c1e163983c46ae341e831b2eb6b5 - md5: 1ab6d4a9a982920b9dc5f2c700777b27 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-hfc78867_7_cpu.conda + sha256: 6dff9bbe731dc2cefe96bd9c7981d2cbef2b564a3152840a29c9b6a493ea50d9 + md5: 184bec7a9392ab6ba8134041e81971d6 depends: - - libarrow 18.1.0 h1b535d6_6_cpu + - libarrow 18.1.0 hb7781cd_7_cpu - libgcc >=13 - libstdcxx >=13 - 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 + size: 1117825 + timestamp: 1735685495511 - kind: conda name: libpng version: 1.6.44 @@ -4969,32 +4977,33 @@ packages: timestamp: 1726236639270 - kind: conda name: libprotobuf - version: 5.28.2 - build: h029595c_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.2-h029595c_0.conda - sha256: d8c7b6f851bfc53494d9b8e54d473c4f11ab26483a6e64df6f7967563df166b1 - md5: 538dbe0ad9f248e2e109abb9b6809ea5 + version: 5.28.3 + build: h3bd63a1_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.3-h3bd63a1_1.conda + sha256: f58a16b13ad53346903c833e266f83c3d770a43a432659b98710aed85ca885e7 + md5: bdbfea4cf45ae36652c6bbcc2e7ebe91 depends: + - __osx >=11.0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libgcc >=13 - - libstdcxx >=13 + - libcxx >=18 - libzlib >=1.3.1,<2.0a0 license: BSD-3-Clause license_family: BSD - size: 2802876 - timestamp: 1728564881988 + size: 2271580 + timestamp: 1735576361997 - kind: conda name: libprotobuf - version: 5.28.2 - build: h5b01275_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.2-h5b01275_0.conda - sha256: 5e8fd4aa00193c85602ce6101dd28fe31306dff85c9725048f6dc828dfa7c421 - md5: ab0bff36363bec94720275a681af8b83 + version: 5.28.3 + build: h44a3b7b_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.3-h44a3b7b_1.conda + sha256: ecb69f2b1668e784b41ba667493be846662d5ef702bef64fb2e013bb1364cdc4 + md5: 68f807f7cc13951652bbe048253fd405 depends: - - __glibc >=2.17,<3.0.a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - libgcc >=13 @@ -5002,75 +5011,77 @@ packages: - libzlib >=1.3.1,<2.0a0 license: BSD-3-Clause license_family: BSD - size: 2945348 - timestamp: 1728565355702 + size: 2788074 + timestamp: 1735576315676 - kind: conda name: libprotobuf - version: 5.28.2 - build: h8f0b736_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.2-h8f0b736_0.conda - sha256: f732a6fa918428e2d5ba61e78fe11bb44a002cc8f6bb74c94ee5b1297fefcfd8 - md5: d2cb5991f2fb8eb079c80084435e9ce6 + version: 5.28.3 + build: h6128344_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda + sha256: 51125ebb8b7152e4a4e69fd2398489c4ec8473195c27cde3cbdf1cb6d18c5493 + md5: d8703f1ffe5a06356f06467f1d0b9464 depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libcxx >=17 + - libgcc >=13 + - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 license: BSD-3-Clause license_family: BSD - size: 2374965 - timestamp: 1728565334796 + size: 2960815 + timestamp: 1735577210663 - kind: conda name: libre2-11 version: 2024.07.02 - build: h18dbdb1_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_1.conda - sha256: 96d4fdac28d5af38c38f90c22cb0aa9a90affae13ca8ba24bd1eb60b789df8ff - md5: f1800796b0efc4bbc5b001d845545111 + build: h07bc746_2 + build_number: 2 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h07bc746_2.conda + sha256: 112a73ad483353751d4c5d63648c69a4d6fcebf5e1b698a860a3f5124fc3db96 + md5: 6b1e3624d3488016ca4f1ca0c412efaa depends: + - __osx >=11.0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libgcc >=13 - - libstdcxx >=13 + - libcxx >=18 constrains: - re2 2024.07.02.* license: BSD-3-Clause license_family: BSD - size: 203516 - timestamp: 1728778974654 + size: 167155 + timestamp: 1735541067807 - kind: conda name: libre2-11 version: 2024.07.02 - build: h2348fd5_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h2348fd5_1.conda - sha256: 6facca42cfc85a05b33e484a8b0df7857cc092db34806946d022270098d8d20f - md5: 5a7065309a66097738be6a06fd04b7ef + build: h18dbdb1_2 + build_number: 2 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_2.conda + sha256: 862c20de0120f802e618dcb25913d00c5b82f91f4be60b2d46a774e851adc2f6 + md5: 9a7dbbaab49f76a6f36e5c9d98e323a7 depends: - - __osx >=11.0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libcxx >=17 + - libgcc >=13 + - libstdcxx >=13 constrains: - re2 2024.07.02.* license: BSD-3-Clause license_family: BSD - size: 165956 - timestamp: 1728779107218 + size: 204305 + timestamp: 1735540986919 - kind: conda name: libre2-11 version: 2024.07.02 - build: hbbce691_1 - build_number: 1 + build: hbbce691_2 + build_number: 2 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_1.conda - sha256: f8ad6a4f6d4fd54ebe3e5e712a01e663222fc57f49d16b6b8b10c30990dafb8f - md5: 2124de47357b7a516c0a3efd8f88c143 + url: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_2.conda + sha256: 4420f8362c71251892ba1eeb957c5e445e4e1596c0c651c28d0d8b415fe120c7 + md5: b2fede24428726dd867611664fb372e8 depends: - __glibc >=2.17,<3.0.a0 - libabseil * cxx17* @@ -5081,8 +5092,8 @@ packages: - re2 2024.07.02.* license: BSD-3-Clause license_family: BSD - size: 211096 - timestamp: 1728778964655 + size: 209793 + timestamp: 1735541054068 - kind: conda name: libsodium version: 1.0.20 @@ -5525,6 +5536,7 @@ packages: constrains: - libwebp 1.5.0 license: BSD-3-Clause + license_family: BSD size: 362623 timestamp: 1734779054659 - kind: conda @@ -5540,6 +5552,7 @@ packages: constrains: - libwebp 1.5.0 license: BSD-3-Clause + license_family: BSD size: 290013 timestamp: 1734777593617 - kind: conda @@ -5556,6 +5569,7 @@ packages: constrains: - libwebp 1.5.0 license: BSD-3-Clause + license_family: BSD size: 429973 timestamp: 1734777489810 - kind: conda @@ -5892,76 +5906,76 @@ packages: timestamp: 1733220925299 - kind: conda name: max - version: 25.1.0.dev2024122805 + version: 25.1.0.dev2025010605 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122805-release.conda - sha256: fe2812cf8bb718133a1ee6e2a720e0adb3a234443cd1bdb012ed3845fc100c7e - md5: d2ab5ff45c394ef59d4c89a35dbc0e20 - depends: - - max-core ==25.1.0.dev2024122805 release - - max-python >=25.1.0.dev2024122805,<26.0a0 - - mojo-jupyter ==25.1.0.dev2024122805 release - - mblack ==25.1.0.dev2024122805 release + url: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025010605-release.conda + sha256: f806f7b7519e01cd68fbae2c714d1c1a9e1e96f144e920ce51c47512f81a1db3 + md5: 1bae0e6863939e6792d7129bec77983c + depends: + - max-core ==25.1.0.dev2025010605 release + - max-python >=25.1.0.dev2025010605,<26.0a0 + - mojo-jupyter ==25.1.0.dev2025010605 release + - mblack ==25.1.0.dev2025010605 release license: LicenseRef-Modular-Proprietary - size: 9913 - timestamp: 1735363020600 + size: 9914 + timestamp: 1736140643481 - kind: conda name: max-core - version: 25.1.0.dev2024122805 + version: 25.1.0.dev2025010605 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024122805-release.conda - sha256: d0f6942e8fb4461129dd0b3b459e5d975fa392661fbf9ce002992044249c7df0 - md5: 99412132bd807caa43dba507054a2691 + url: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025010605-release.conda + sha256: 315ad791e417ed45fcee42fe7227428bca1d77427c10b81fb5a65583a5844279 + md5: c40747b8b9245abb69db013a14266b6c depends: - - mblack ==25.1.0.dev2024122805 release + - mblack ==25.1.0.dev2025010605 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 245436370 - timestamp: 1735363025528 + size: 244726382 + timestamp: 1736140669107 - kind: conda name: max-core - version: 25.1.0.dev2024122805 + version: 25.1.0.dev2025010605 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024122805-release.conda - sha256: 19aa7627330555204af1573e241f86ced1f34e5773fe2047f03d2df77d296de7 - md5: c83934dfd0b0e2285a2959be586f8e4b + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025010605-release.conda + sha256: dd574ac5ce9effc0f713ea63992a5a4aeaf8fa80f2c968a9c00c664703b70932 + md5: 65f814591335d2910a5e30d5f6968aff depends: - - mblack ==25.1.0.dev2024122805 release + - mblack ==25.1.0.dev2025010605 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 249341674 - timestamp: 1735363020598 + size: 248381825 + timestamp: 1736140643479 - kind: conda name: max-core - version: 25.1.0.dev2024122805 + version: 25.1.0.dev2025010605 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024122805-release.conda - sha256: d65a30747c6623a9a73d02e35d617cf2425fc151839f18badbef093a045c1bd5 - md5: d45b98ffbd949783e9c8ee20e28a6970 + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025010605-release.conda + sha256: ff28dea1ddf5adb0586a5d6a41fb6b6d0a0ee332eb4440cbaffa9b041de16db0 + md5: 1e134821c4eae4e6fa711c1cd2b8cc00 depends: - - mblack ==25.1.0.dev2024122805 release + - mblack ==25.1.0.dev2025010605 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 214123206 - timestamp: 1735365284895 + size: 213059614 + timestamp: 1736141300718 - kind: conda name: max-python - version: 25.1.0.dev2024122805 + version: 25.1.0.dev2025010605 build: 3.11release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024122805-3.11release.conda - sha256: 22a7983aa6ef0dba49c625f3f86e2aadc15b6d8765d5954a5097952bc15b65f7 - md5: 27cda7b8b0bcbb9b46b4f50c720a0aa7 + url: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025010605-3.11release.conda + sha256: 03979f0bfe8fe8367ecb19e7bf12482b3c5162c0c39f2a632f764d4cc067b66a + md5: 9ccd8dd46d231d5bc68cd91a866a9379 depends: - - max-core ==25.1.0.dev2024122805 release + - max-core ==25.1.0.dev2025010605 release - python 3.11.* - fastapi - httpx @@ -5984,18 +5998,18 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 122845658 - timestamp: 1735363025535 + size: 122723691 + timestamp: 1736140669114 - kind: conda name: max-python - version: 25.1.0.dev2024122805 + version: 25.1.0.dev2025010605 build: 3.11release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024122805-3.11release.conda - sha256: 0a6ae72f8a579cd49e0afe4b7c59a0518c131405c93761c89ca685d5337dbe88 - md5: b4cdee5b1de61e82e057035ae822f0db + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025010605-3.11release.conda + sha256: 27dac35e9ff38c0679b2addbbe47b2c224efdcff827148514bd49f2dd54c3dde + md5: baae3632c01d344ff53af0f7d4378f9c depends: - - max-core ==25.1.0.dev2024122805 release + - max-core ==25.1.0.dev2025010605 release - python 3.11.* - fastapi - httpx @@ -6018,18 +6032,18 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 126502979 - timestamp: 1735363020606 + size: 126393049 + timestamp: 1736140643487 - kind: conda name: max-python - version: 25.1.0.dev2024122805 + version: 25.1.0.dev2025010605 build: 3.11release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024122805-3.11release.conda - sha256: 058e5175addf88c4730b36489dab704ecf4331a1edbc6a5755c8f32ca771969c - md5: 6f1fb876d4ae440ceb681a7a493c0968 + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025010605-3.11release.conda + sha256: 9ec41838b6bf33a0bf700c318447e7771b31d935ff1ecc1a3b6cd0a82bf0b703 + md5: fad4fa6db32d9323df3a1d954126c368 depends: - - max-core ==25.1.0.dev2024122805 release + - max-core ==25.1.0.dev2025010605 release - python 3.11.* - fastapi - httpx @@ -6052,17 +6066,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 113444838 - timestamp: 1735365284898 + size: 113311162 + timestamp: 1736141300721 - kind: conda name: mblack - version: 25.1.0.dev2024122805 + version: 25.1.0.dev2025010605 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122805-release.conda - sha256: 46d7d50f46fc589cd4fd53c614020666b9ac4ea90d0d861bc2888ff8a8968fc7 - md5: e140a619b5afdf6730ee181c6ca0dd1d + url: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025010605-release.conda + sha256: 2166e3aa028121c737e9a7f3cde3711c8f87d83757045318467ee0d54da95fdc + md5: 90216ac95ad02c40a72aea621bb2d54e depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -6073,7 +6087,7 @@ packages: - python license: MIT size: 130809 - timestamp: 1735363020604 + timestamp: 1736140643485 - kind: conda name: mdurl version: 0.1.2 @@ -6092,21 +6106,21 @@ packages: timestamp: 1733255681319 - kind: conda name: mojo-jupyter - version: 25.1.0.dev2024122805 + version: 25.1.0.dev2025010605 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122805-release.conda - sha256: cdfcbb3354be4888b5b86eab0b3ee26c1fdaf9df9e9421e2fe60ab18cd053402 - md5: 6606e99ea0f956a5f786bc5a376c4fa2 + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025010605-release.conda + sha256: 5d25a6cbeb7e23d0e751085fd4a8728224f4fb46667007046322109437fde8cc + md5: 0d7c538d4488f3d729c380af437148e3 depends: - - max-core ==25.1.0.dev2024122805 release + - max-core ==25.1.0.dev2025010605 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22932 - timestamp: 1735363020605 + size: 22938 + timestamp: 1736140643486 - kind: conda name: multidict version: 6.1.0 @@ -6400,49 +6414,52 @@ packages: - kind: conda name: openssl version: 3.4.0 - build: h39f12f2_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.0-h39f12f2_0.conda - sha256: bd1d58ced46e75efa3b842c61642fd12272c69e9fe4d7261078bc082153a1d53 - md5: df307bbc703324722df0293c9ca2e418 + build: h7b32b05_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.0-h7b32b05_1.conda + sha256: f62f6bca4a33ca5109b6d571b052a394d836956d21b25b7ffd03376abf7a481f + md5: 4ce6875f75469b2757a65e10a5d05e31 depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 - ca-certificates + - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 2935176 - timestamp: 1731377561525 + size: 2937158 + timestamp: 1736086387286 - kind: conda name: openssl version: 3.4.0 - build: h86ecc28_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.0-h86ecc28_0.conda - sha256: 64dbbdd6384fa56338124783197f7ad9048c989a02264bcd2e07355e3570f113 - md5: b2f202b5bddafac824eb610b65dde98f + build: h81ee809_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.0-h81ee809_1.conda + sha256: 97772762abc70b3a537683ca9fc3ff3d6099eb64e4aba3b9c99e6fce48422d21 + md5: 22f971393637480bda8c679f374d8861 depends: + - __osx >=11.0 - ca-certificates - - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 3474825 - timestamp: 1731379200886 + size: 2936415 + timestamp: 1736086108693 - kind: conda name: openssl version: 3.4.0 - build: hb9d3cd8_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.0-hb9d3cd8_0.conda - sha256: 814b9dff1847b132c676ee6cc1a8cb2d427320779b93e1b6d76552275c128705 - md5: 23cc74f77eb99315c0360ec3533147a9 + build: hd08dc88_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.0-hd08dc88_1.conda + sha256: 60d34454b861501d7355f25a7b39fdb5de8d56fca49b5bcbe8b8142b7d82dce4 + md5: e21c4767e783a58c373fdb99de6211bf depends: - - __glibc >=2.17,<3.0.a0 - ca-certificates - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 2947466 - timestamp: 1731377666602 + size: 3469279 + timestamp: 1736088141230 - kind: conda name: opentelemetry-api version: 1.29.0 @@ -6574,16 +6591,16 @@ packages: - kind: conda name: orc version: 2.0.3 - build: h3c55218_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/orc-2.0.3-h3c55218_1.conda - sha256: 154b26bc4d586de33765a155c9b79ebd7f5bb36c2bbf4b8854e1631bca8d21af - md5: 0a51a3cf028b845c46ec0d1ea2d18629 + build: h0ff2369_2 + build_number: 2 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/orc-2.0.3-h0ff2369_2.conda + sha256: cca330695f3bdb8c0e46350c29cd4af3345865544e36f1d7c9ba9190ad22f5f4 + md5: 24b1897c0d24afbb70704ba998793b78 depends: - - libgcc >=13 - - libprotobuf >=5.28.2,<5.28.3.0a0 - - libstdcxx >=13 + - __osx >=11.0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 - libzlib >=1.3.1,<2.0a0 - lz4-c >=1.10.0,<1.11.0a0 - snappy >=1.2.1,<1.3.0a0 @@ -6591,21 +6608,21 @@ packages: - zstd >=1.5.6,<1.6.0a0 license: Apache-2.0 license_family: Apache - size: 1165179 - timestamp: 1733509923825 + size: 438520 + timestamp: 1735630624140 - kind: conda name: orc version: 2.0.3 - build: h97ab989_1 - build_number: 1 + build: h12ee42a_2 + build_number: 2 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/orc-2.0.3-h97ab989_1.conda - sha256: 9de7e2746fde57c9b7f08ee87142014f6bb9b2d3a506839ea3e98baa99711576 - md5: 2f46eae652623114e112df13fae311cf + url: https://conda.anaconda.org/conda-forge/linux-64/orc-2.0.3-h12ee42a_2.conda + sha256: dff5cc8023905782c86b3459055f26d4b97890e403b0698477c9fed15d8669cc + md5: 4f6f9f3f80354ad185e276c120eac3f0 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - - libprotobuf >=5.28.2,<5.28.3.0a0 + - libprotobuf >=5.28.3,<5.28.4.0a0 - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - lz4-c >=1.10.0,<1.11.0a0 @@ -6614,21 +6631,21 @@ packages: - zstd >=1.5.6,<1.6.0a0 license: Apache-2.0 license_family: Apache - size: 1189462 - timestamp: 1733509801323 + size: 1188881 + timestamp: 1735630209320 - kind: conda name: orc version: 2.0.3 - build: hbcee414_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/orc-2.0.3-hbcee414_1.conda - sha256: e5e72438a3cd967ebc774070e8c49500d2d6d4175f349400b327fee75d3bfc05 - md5: e808cf7819eaa1735c8790d7f9f482c7 + build: hdd485aa_2 + build_number: 2 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/orc-2.0.3-hdd485aa_2.conda + sha256: b6c67542352a86cdf143c3066d5cda855b74454a156eedcd8958b494c6a32a83 + md5: d19f01b42e5d6a2908b65df435aff42f depends: - - __osx >=11.0 - - libcxx >=18 - - libprotobuf >=5.28.2,<5.28.3.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - lz4-c >=1.10.0,<1.11.0a0 - snappy >=1.2.1,<1.3.0a0 @@ -6636,8 +6653,8 @@ packages: - zstd >=1.5.6,<1.6.0a0 license: Apache-2.0 license_family: Apache - size: 437391 - timestamp: 1733510118673 + size: 1167714 + timestamp: 1735630248837 - kind: conda name: packaging version: '24.2' @@ -6744,78 +6761,78 @@ packages: timestamp: 1733233471940 - kind: conda name: pillow - version: 11.0.0 - build: py311h3894ae9_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-11.0.0-py311h3894ae9_0.conda - sha256: 6d5307fed000e6b72b98d54dd1fea7b155f9a6453476a937522b89dde7b3d673 - md5: a9a4adae1c4178f50ac3d1fd5d64bb85 + version: 11.1.0 + build: py311h1322bbf_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/pillow-11.1.0-py311h1322bbf_0.conda + sha256: 71e0ce18201695adec3bbbfbab74e82b0ab05fe8929ad046d2c507a71c8a3c63 + md5: 9f4f5593335f76c1dbf7381c11fe7155 depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 - freetype >=2.12.1,<3.0a0 - lcms2 >=2.16,<3.0a0 + - libgcc >=13 - libjpeg-turbo >=3.0.0,<4.0a0 - libtiff >=4.7.0,<4.8.0a0 - - libwebp-base >=1.4.0,<2.0a0 + - libwebp-base >=1.5.0,<2.0a0 - libxcb >=1.17.0,<2.0a0 - libzlib >=1.3.1,<2.0a0 - - openjpeg >=2.5.2,<3.0a0 + - openjpeg >=2.5.3,<3.0a0 - python >=3.11,<3.12.0a0 - - python >=3.11,<3.12.0a0 *_cpython - python_abi 3.11.* *_cp311 - tk >=8.6.13,<8.7.0a0 license: HPND - size: 41856994 - timestamp: 1729066060042 + size: 42021920 + timestamp: 1735929841160 - kind: conda name: pillow - version: 11.0.0 - build: py311h49e9ac3_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/pillow-11.0.0-py311h49e9ac3_0.conda - sha256: f0f792596ae99cba01f829d064058b1e99ca84080fc89f72d925bfe473cfc1b6 - md5: 2bd3d0f839ec0d1eaca817c9d1feb7c2 + version: 11.1.0 + build: py311ha4eaa5e_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/pillow-11.1.0-py311ha4eaa5e_0.conda + sha256: d31c5eed4a5b0a5f7aee0da620c255d217ac154b59022dca1970395e744f3ba9 + md5: 588cc6d9e6adc21508221b3655cb5949 depends: - - __glibc >=2.17,<3.0.a0 - freetype >=2.12.1,<3.0a0 - lcms2 >=2.16,<3.0a0 - libgcc >=13 - libjpeg-turbo >=3.0.0,<4.0a0 - libtiff >=4.7.0,<4.8.0a0 - - libwebp-base >=1.4.0,<2.0a0 + - libwebp-base >=1.5.0,<2.0a0 - libxcb >=1.17.0,<2.0a0 - libzlib >=1.3.1,<2.0a0 - - openjpeg >=2.5.2,<3.0a0 + - openjpeg >=2.5.3,<3.0a0 - python >=3.11,<3.12.0a0 - python_abi 3.11.* *_cp311 - tk >=8.6.13,<8.7.0a0 license: HPND - size: 42421065 - timestamp: 1729065780130 + size: 42077620 + timestamp: 1735931287216 - kind: conda name: pillow - version: 11.0.0 - build: py311hb2a0dd2_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/pillow-11.0.0-py311hb2a0dd2_0.conda - sha256: 19b3a8399b7f7d5c80c5bcef17881e7036826fc739e13ccd97d21b0212408827 - md5: 6454f9200cf6d04192bbdee9ab6a9761 + version: 11.1.0 + build: py311hb9ba9e9_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-11.1.0-py311hb9ba9e9_0.conda + sha256: 9d9274b1456e463401169a8b7bfc35378c09686cfac56d2b96a1393085f3fd8f + md5: d8bb4736b33791e270c998dd68a76621 depends: + - __osx >=11.0 - freetype >=2.12.1,<3.0a0 - lcms2 >=2.16,<3.0a0 - - libgcc >=13 - libjpeg-turbo >=3.0.0,<4.0a0 - libtiff >=4.7.0,<4.8.0a0 - - libwebp-base >=1.4.0,<2.0a0 + - libwebp-base >=1.5.0,<2.0a0 - libxcb >=1.17.0,<2.0a0 - libzlib >=1.3.1,<2.0a0 - - openjpeg >=2.5.2,<3.0a0 + - openjpeg >=2.5.3,<3.0a0 - python >=3.11,<3.12.0a0 + - python >=3.11,<3.12.0a0 *_cpython - python_abi 3.11.* *_cp311 - tk >=8.6.13,<8.7.0a0 license: HPND - size: 41973113 - timestamp: 1729067980140 + size: 42451890 + timestamp: 1735929996422 - kind: conda name: platformdirs version: 4.3.6 @@ -6900,32 +6917,32 @@ packages: timestamp: 1733392060312 - kind: conda name: protobuf - version: 5.28.2 - build: py311h6885ffc_0 + version: 5.28.3 + build: py311h155a34a_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/protobuf-5.28.2-py311h6885ffc_0.conda - sha256: e3c9aadc12678327f8349d1f043d90a320ab287d733eae8e00f1a5d205d6792a - md5: 1a922ee234494a42a52e3f7225920b41 + url: https://conda.anaconda.org/conda-forge/osx-arm64/protobuf-5.28.3-py311h155a34a_0.conda + sha256: 18a1b3e59b76c27b03318818e85f7a66b035de77c6b32f077e4af72efbc12269 + md5: ab0b501f96671046b577316280ddb72b depends: - __osx >=11.0 - - libcxx >=17 + - libcxx >=18 - python >=3.11,<3.12.0a0 - python >=3.11,<3.12.0a0 *_cpython - python_abi 3.11.* *_cp311 constrains: - - libprotobuf 5.28.2 + - libprotobuf 5.28.3 license: BSD-3-Clause license_family: BSD - size: 453427 - timestamp: 1728669805249 + size: 457403 + timestamp: 1731367189837 - kind: conda name: protobuf - version: 5.28.2 + version: 5.28.3 build: py311h89d996e_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/protobuf-5.28.2-py311h89d996e_0.conda - sha256: e31883a2a0134a337dad1cc42730a4c1c212f13d69843cb8643f30cfcdaf134c - md5: 9e0fb694cb431de5b4ed52697a629f38 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/protobuf-5.28.3-py311h89d996e_0.conda + sha256: d09135eb40d9d00741337459e3bc3c28bf30a8817e93874594096a37851d3eca + md5: 6dd92bec86836581e235fb7c42de7df2 depends: - libgcc >=13 - libstdcxx >=13 @@ -6933,19 +6950,19 @@ packages: - python >=3.11,<3.12.0a0 *_cpython - python_abi 3.11.* *_cp311 constrains: - - libprotobuf 5.28.2 + - libprotobuf 5.28.3 license: BSD-3-Clause license_family: BSD - size: 480827 - timestamp: 1728669731679 + size: 479273 + timestamp: 1731366544077 - kind: conda name: protobuf - version: 5.28.2 + version: 5.28.3 build: py311hfdbb021_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/protobuf-5.28.2-py311hfdbb021_0.conda - sha256: a002b1606e63dcdf8da3a6f570f73dbeeef60ce552f62c9c672711a2a31d4921 - md5: 83ce49456829de025312e1de9b4395a5 + url: https://conda.anaconda.org/conda-forge/linux-64/protobuf-5.28.3-py311hfdbb021_0.conda + sha256: 2d9b2b9a7549e7dd58138cd3211a11893b8f6dee5a1137529623bf92cddba45b + md5: ddf920c3b5d1cbd5ffbea591d2ad09ea depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -6953,11 +6970,11 @@ packages: - python >=3.11,<3.12.0a0 - python_abi 3.11.* *_cp311 constrains: - - libprotobuf 5.28.2 + - libprotobuf 5.28.3 license: BSD-3-Clause license_family: BSD - size: 472879 - timestamp: 1728669387714 + size: 471398 + timestamp: 1731366737017 - kind: conda name: pthread-stubs version: '0.4' @@ -7231,21 +7248,21 @@ packages: timestamp: 1734571788310 - kind: conda name: pydantic-settings - version: 2.7.0 + version: 2.7.1 build: pyh3cfb1c2_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.7.0-pyh3cfb1c2_0.conda - sha256: dd1ac7c8b6a189c8aa18f6c7df019d8f6df495300a259e3fbebdb542fc955c3b - md5: d9f19a7c4199249fa229891b573b6f9b + url: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.7.1-pyh3cfb1c2_0.conda + sha256: 082fb1ec29917d2c9ed6a862cb8eb9beb88c208ea62c9fef1aeb5f4f3e0e0b06 + md5: d71d76b62bed332b037d7adfc0f3989a depends: - pydantic >=2.7.0 - python >=3.9 - python-dotenv >=0.21.0 license: MIT license_family: MIT - size: 31426 - timestamp: 1734127929720 + size: 31822 + timestamp: 1735650532951 - kind: conda name: pygments version: 2.18.0 @@ -7737,48 +7754,48 @@ packages: - kind: conda name: re2 version: 2024.07.02 - build: h2d3a13d_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/re2-2024.07.02-h2d3a13d_1.conda - sha256: 55e7be480bfb979fa8595a16d7f2adea3a5ac9a77b2e97cd0f7ac40e989edb6c - md5: 83f4e47229834c895a92c18383e1cd9d + build: h6589ca4_2 + build_number: 2 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/re2-2024.07.02-h6589ca4_2.conda + sha256: 4d3799c05f8f662922a0acd129d119774760a3281b883603678e128d1cb307fb + md5: 7a8b4ad8c58a3408ca89d78788c78178 depends: - - libre2-11 2024.07.02 h18dbdb1_1 + - libre2-11 2024.07.02 h07bc746_2 license: BSD-3-Clause license_family: BSD - size: 26747 - timestamp: 1728778986331 + size: 26861 + timestamp: 1735541088455 - kind: conda name: re2 version: 2024.07.02 - build: h77b4e00_1 - build_number: 1 + build: h9925aae_2 + build_number: 2 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/re2-2024.07.02-h77b4e00_1.conda - sha256: c1721cb80f7201652fc9801f49c214c88aee835d957f2376e301bd40a8415742 - md5: 01093ff37c1b5e6bf9f17c0116747d11 + url: https://conda.anaconda.org/conda-forge/linux-64/re2-2024.07.02-h9925aae_2.conda + sha256: d213c44958d49ce7e0d4d5b81afec23640cce5016685dbb2d23571a99caa4474 + md5: e84ddf12bde691e8ec894b00ea829ddf depends: - - libre2-11 2024.07.02 hbbce691_1 + - libre2-11 2024.07.02 hbbce691_2 license: BSD-3-Clause license_family: BSD - size: 26665 - timestamp: 1728778975855 + size: 26786 + timestamp: 1735541074034 - kind: conda name: re2 version: 2024.07.02 - build: hcd0e937_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/re2-2024.07.02-hcd0e937_1.conda - sha256: eebddde6cb10b146507810b701ef6df122d5309cd5151a39d0828aa44dc53725 - md5: 19e29f2ccc9168eb0a39dc40c04c0e21 + build: haa97905_2 + build_number: 2 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/re2-2024.07.02-haa97905_2.conda + sha256: 040848655df9119bae5a549fb5c8956a5537120859416c1d9d0712b7bac9f12e + md5: 1bf0135339b4a7419a198a795d2d4be0 depends: - - libre2-11 2024.07.02 h2348fd5_1 + - libre2-11 2024.07.02 h18dbdb1_2 license: BSD-3-Clause license_family: BSD - size: 26860 - timestamp: 1728779123653 + size: 26830 + timestamp: 1735540999398 - kind: conda name: readline version: '8.2' @@ -7970,12 +7987,12 @@ packages: timestamp: 1734415467047 - kind: conda name: safetensors - version: 0.4.5 + version: 0.5.0 build: py311h0ca61a2_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/safetensors-0.4.5-py311h0ca61a2_0.conda - sha256: ce3aa18752eb47e6e55256c0c52ef67786429fdcb2611dd0f7b490049671ef25 - md5: 7d4236d529bacc6d2217a57348965400 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/safetensors-0.5.0-py311h0ca61a2_0.conda + sha256: 15c65a029e25ef87f17a702b8fdee33543637f9e81595723480e66d9b167924b + md5: b7872918f1ba84a18ca3862e99f8925d depends: - libgcc >=13 - python >=3.11,<3.12.0a0 @@ -7985,16 +8002,16 @@ packages: - __glibc >=2.17 license: Apache-2.0 license_family: APACHE - size: 401351 - timestamp: 1725632381591 + size: 410162 + timestamp: 1735917983294 - kind: conda name: safetensors - version: 0.4.5 - build: py311h481aa64_0 + version: 0.5.0 + build: py311h3ff9189_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/safetensors-0.4.5-py311h481aa64_0.conda - sha256: 283f79e9fe2b09d8c21b28807e914c49ba5cbe09dce731633ee5aa088c234d54 - md5: 0b444f05b9ea222404ea115a35da9131 + url: https://conda.anaconda.org/conda-forge/osx-arm64/safetensors-0.5.0-py311h3ff9189_0.conda + sha256: 26ba9b0d16b482fda3e1d0497cfc525297a749a31c96f096c90e182214f3fda7 + md5: 735ed8cf26d3d07b2a95d15c68bcecc7 depends: - __osx >=11.0 - python >=3.11,<3.12.0a0 @@ -8004,16 +8021,16 @@ packages: - __osx >=11.0 license: Apache-2.0 license_family: APACHE - size: 353541 - timestamp: 1725632251967 + size: 378693 + timestamp: 1735918276628 - kind: conda name: safetensors - version: 0.4.5 + version: 0.5.0 build: py311h9e33e62_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/safetensors-0.4.5-py311h9e33e62_0.conda - sha256: 65cad4de4bf04878abdcede4363f8818ebb895d105b03e996e9b98dcc9a23d01 - md5: 5a58520e8eb4a0119b137fd67a02bb2a + url: https://conda.anaconda.org/conda-forge/linux-64/safetensors-0.5.0-py311h9e33e62_0.conda + sha256: 6e5146ac486dc1e07d68b627c0a0dee5e7974b196ae78a8f03b584a291ae0f7c + md5: 9fbe1879708145e8501218f27bf4062e depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -8023,8 +8040,8 @@ packages: - __glibc >=2.17 license: Apache-2.0 license_family: APACHE - size: 403087 - timestamp: 1725632204888 + size: 424801 + timestamp: 1735917839397 - kind: conda name: shellingham version: 1.5.4 @@ -8135,6 +8152,7 @@ packages: - python >=3.9 - starlette >=0.41.3 license: BSD-3-Clause + license_family: BSD size: 15324 timestamp: 1735126414893 - kind: conda @@ -8319,18 +8337,19 @@ packages: - kind: conda name: tqdm version: 4.67.1 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda - sha256: 5673b7104350a6998cb86cccf1d0058217d86950e8d6c927d8530606028edb1d - md5: 4085c9db273a148e149c03627350e22c + url: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + sha256: 11e2c85468ae9902d24a27137b6b39b4a78099806e551d390e394a8c34b48e40 + md5: 9efbfdc37242619130ea42b1cc4ed861 depends: - colorama - - python >=3.7 + - python >=3.9 license: MPL-2.0 or MIT - size: 89484 - timestamp: 1732497312317 + size: 89498 + timestamp: 1735661472632 - kind: conda name: traitlets version: 5.14.3 diff --git a/examples/notebooks/magic.lock b/examples/notebooks/magic.lock index 65050002d0..caa722190d 100644 --- a/examples/notebooks/magic.lock +++ b/examples/notebooks/magic.lock @@ -12,7 +12,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.11-py312h178313f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.7.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.8.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/argon2-cffi-bindings-21.2.0-py312h66e93f0_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_1.conda @@ -40,7 +40,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.16.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/backoff-2.2.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.12.3-pyha770c72_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyhd8ed1ab_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py312h2ec8cdc_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.4-hb9d3cd8_0.conda @@ -49,7 +49,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.12.14-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py312h06ac9bb_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda @@ -110,11 +110,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.16-hb7c19ff_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_h5888daf_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-h44a453e_6_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-hcb10f89_6_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-hcb10f89_6_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-h3ee7192_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-hd595efa_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-hcb10f89_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-hcb10f89_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-h08228c5_7_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-26_linux64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hb9d3cd8_2.conda @@ -123,7 +123,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libcrc32c-1.1.2-h9c3ff4c_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.11.1-h332b0f4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.23-h4ddbbb0_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20191231-he28a2e2_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20240808-pl5321h7949ede_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libevent-2.1.12-hf998b51_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda @@ -133,9 +133,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hd5240d6_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h77fa898_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.32.0-h804f50b_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.32.0-h0121fbd_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.67.1-hc2c308b_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.33.0-h2b5623c_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.33.0-h0121fbd_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.67.1-h25350d4_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-hd590300_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-26_linux64_openblas.conda @@ -143,10 +143,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.28-pthreads_h94d23a6_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-h081d1f1_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-h081d1f1_7_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.44-hadc24fc_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.2-h5b01275_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.47.2-hee588c1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hf672d98_0.conda @@ -166,25 +166,25 @@ 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-25.1.0.dev2024122805-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024122805-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024122805-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025010605-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025010605-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025010605-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025010605-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-25.1.0.dev2024122805-release.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025010605-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.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.4-pyhff2d567_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-he02047a_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.3-h5fbd93e_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.0-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.0-h7b32b05_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.29.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.29.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.29.0-pyhd8ed1ab_1.conda @@ -192,7 +192,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.29.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.29.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.50b0-pyh3cfb1c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/orc-2.0.3-h97ab989_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/orc-2.0.3-h12ee42a_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.2-py312h1d6d2e6_1.conda @@ -201,14 +201,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-11.0.0-py312h7b63e92_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-11.1.0-py312h80c1187_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pip-24.3.1-pyh8b19718_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.48-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.1-py312h66e93f0_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/protobuf-5.28.2-py312h2ec8cdc_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/protobuf-5.28.3-py312h2ec8cdc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/psutil-6.1.1-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda @@ -218,7 +218,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.4-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.27.2-py312h12e396e_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.7.0-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.7.1-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyinstrument-5.0.0-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda @@ -234,7 +234,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py312h66e93f0_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.0-py312hbf22597_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/re2-2024.07.02-h77b4e00_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/re2-2024.07.02-h9925aae_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.35.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/regex-2024.11.6-py312h66e93f0_0.conda @@ -245,7 +245,7 @@ environments: - 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.10-hb5b8611_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/safetensors-0.5.0-py312h12e396e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh0d859eb_1.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 @@ -262,7 +262,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.21.0-py312h8360d73_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda @@ -301,7 +301,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.11-py312hcc812fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.7.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.8.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/argon2-cffi-bindings-21.2.0-py312hb2c0f52_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_1.conda @@ -329,7 +329,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.16.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/backoff-2.2.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.12.3-pyha770c72_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyhd8ed1ab_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/brotli-python-1.1.0-py312h6f74592_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h68df207_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/c-ares-1.34.4-h86ecc28_0.conda @@ -338,7 +338,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.12.14-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cffi-1.17.1-py312hac81daf_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda @@ -400,11 +400,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lcms2-2.16-h922389a_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.0.0-h4de3ea5_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h5ad3122_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-h1b535d6_6_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h3b568fd_6_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h3b568fd_6_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h3ffb4b1_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h18dbdb1_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-hb7781cd_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h3b568fd_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h3b568fd_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h1e9d426_7_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-26_linuxaarch64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlicommon-1.1.0-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlidec-1.1.0-h86ecc28_2.conda @@ -413,7 +413,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcrc32c-1.1.2-h01db608_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcurl-8.11.1-h6702fde_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libdeflate-1.23-h5e3c512_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20191231-he28a2e2_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20240808-pl5321h976ea20_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libev-4.33-h31becfc_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libevent-2.1.12-h4ba1bb4_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.6.4-h5ad3122_0.conda @@ -423,9 +423,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-2.32.0-h3888205_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-storage-2.32.0-hb9b2b65_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgrpc-1.67.1-h36c5df4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-2.33.0-hccf9d24_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-storage-2.33.0-hb9b2b65_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgrpc-1.67.1-hf7ccdd3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libiconv-1.17-h31becfc_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libjpeg-turbo-3.0.0-h31becfc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-26_linuxaarch64_openblas.conda @@ -433,10 +433,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnghttp2-1.64.0-hc8609a4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.28-pthreads_h9d3fd7e_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-hfc78867_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-hfc78867_7_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.44-hc4a20ef_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.2-h029595c_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.3-h44a3b7b_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.20-h68df207_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.47.2-h5eb1b54_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libssh2-1.11.1-ha41c0db_0.conda @@ -456,25 +456,25 @@ 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-25.1.0.dev2024122805-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024122805-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024122805-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025010605-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025010605-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025010605-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025010605-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-25.1.0.dev2024122805-release.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025010605-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.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.4-pyhff2d567_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-hcccb83c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openjpeg-2.5.3-h3f56577_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.0-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.0-hd08dc88_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.29.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.29.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.29.0-pyhd8ed1ab_1.conda @@ -482,7 +482,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.29.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.29.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.50b0-pyh3cfb1c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/orc-2.0.3-h3c55218_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/orc-2.0.3-hdd485aa_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pandas-2.2.2-py312h14eacfc_1.conda @@ -491,14 +491,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pillow-11.0.0-py312h5ab5af3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pillow-11.1.0-py312h719f0cf_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pip-24.3.1-pyh8b19718_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.48-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.2.1-py312hb2c0f52_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/protobuf-5.28.2-py312h6f74592_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/protobuf-5.28.3-py312h6f74592_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/psutil-6.1.1-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pthread-stubs-0.4-h86ecc28_1002.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda @@ -508,7 +508,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.4-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pydantic-core-2.27.2-py312h8cbf658_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.7.0-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.7.1-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyinstrument-5.0.0-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda @@ -524,7 +524,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyyaml-6.0.2-py312hb2c0f52_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyzmq-26.2.0-py312h2427ae1_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/re2-2024.07.02-h2d3a13d_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/re2-2024.07.02-haa97905_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8fc344f_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.35.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/regex-2024.11.6-py312hb2c0f52_0.conda @@ -535,7 +535,7 @@ environments: - 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.10-h5df210e_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/safetensors-0.5.0-py312h8cbf658_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh0d859eb_1.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 @@ -552,7 +552,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.21.0-py312ha0d6ea1_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py312h52516f5_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda @@ -590,7 +590,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.11-py312h998013c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.7.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.8.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/appnope-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/argon2-cffi-bindings-21.2.0-py312h024a12e_5.conda @@ -619,7 +619,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.16.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/backoff-2.2.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.12.3-pyha770c72_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyhd8ed1ab_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py312hde4cb15_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.4-h5505292_0.conda @@ -628,7 +628,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.12.14-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.1-py312h0fad829_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda @@ -688,11 +688,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.16-ha0e7c42_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_hf9b8971_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-h4a2f8bd_6_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-hf07054f_6_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-hf07054f_6_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-h86344ea_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_h07bc746_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-h0ad35bc_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-hf07054f_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-hf07054f_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-h4239455_7_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-26_osxarm64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.1.0-hd74edd7_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.1.0-hd74edd7_2.conda @@ -702,26 +702,26 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.11.1-h73640d1_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.6-ha82da77_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.23-hec38601_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20191231-hc8eb9b7_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20240808-pl5321hafb1f1b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libev-4.33-h93a5062_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libevent-2.1.12-h2757513_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.4-h286801f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-2.32.0-h8d8be31_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-storage-2.32.0-h7081f7f_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgrpc-1.67.1-hc70892a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-2.33.0-hdbe95d5_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-storage-2.33.0-h7081f7f_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgrpc-1.67.1-h0a426d6_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.17-h0d3ecfb_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.0.0-hb547adb_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-26_osxarm64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.3-h39f12f2_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.64.0-h6d7220d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.28-openmp_hf332438_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-h636d7b7_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-h636d7b7_7_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.44-hc14010f_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.2-h8f0b736_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h2348fd5_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.3-h3bd63a1_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h07bc746_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.47.2-h3f77e49_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.1-h9cc3647_0.conda @@ -738,25 +738,25 @@ 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-25.1.0.dev2024122805-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024122805-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024122805-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025010605-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025010605-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025010605-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025010605-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-25.1.0.dev2024122805-release.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025010605-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 - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.4-pyhff2d567_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h7bae524_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openjpeg-2.5.3-h8a3d83b_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.0-h39f12f2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.0-h81ee809_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.29.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.29.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.29.0-pyhd8ed1ab_1.conda @@ -764,7 +764,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.29.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.29.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.50b0-pyh3cfb1c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/orc-2.0.3-hbcee414_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/orc-2.0.3-h0ff2369_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.2-py312h8ae5369_1.conda @@ -773,14 +773,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-11.0.0-py312haf37ca6_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-11.1.0-py312h50aef2c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pip-24.3.1-pyh8b19718_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.48-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.1-py312hea69d52_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/protobuf-5.28.2-py312hf02c72a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/protobuf-5.28.3-py312hd8f9ff3_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/psutil-6.1.1-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pthread-stubs-0.4-hd74edd7_1002.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda @@ -790,7 +790,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.4-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.27.2-py312hcd83bfe_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.7.0-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.7.1-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyinstrument-5.0.0-py312h0bf5046_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-core-10.3.2-py312hb9d441b_0.conda @@ -808,7 +808,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py312h024a12e_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.0-py312hf8a1cbd_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/re2-2024.07.02-hcd0e937_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/re2-2024.07.02-h6589ca4_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h92ec313_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.35.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/regex-2024.11.6-py312hea69d52_0.conda @@ -818,7 +818,7 @@ environments: - 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/osx-arm64/safetensors-0.5.0-py312hcd83bfe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh31c8845_1.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 @@ -835,7 +835,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.21.0-py312hf3e4074_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda @@ -1038,13 +1038,13 @@ packages: timestamp: 1733247158254 - kind: conda name: anyio - version: 4.7.0 + version: 4.8.0 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/anyio-4.7.0-pyhd8ed1ab_0.conda - sha256: 687537ee3af30f8784986bf40cac30e88138770b16e51ca9850c9c23c09aeba1 - md5: c88107912954a983c2caf25f7fd55158 + url: https://conda.anaconda.org/conda-forge/noarch/anyio-4.8.0-pyhd8ed1ab_0.conda + sha256: f1455d2953e3eb6d71bc49881c8558d8e01888469dfd21061dd48afb6183e836 + md5: 848d25bfbadf020ee4d4ba90e5668252 depends: - exceptiongroup >=1.0.2 - idna >=2.8 @@ -1056,8 +1056,8 @@ packages: - uvloop >=0.21 license: MIT license_family: MIT - size: 112730 - timestamp: 1733532678437 + size: 115305 + timestamp: 1736174485476 - kind: conda name: appnope version: 0.1.4 @@ -2284,20 +2284,22 @@ packages: - kind: conda name: bleach version: 6.2.0 - build: pyhd8ed1ab_1 - build_number: 1 + build: pyhd8ed1ab_3 + build_number: 3 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyhd8ed1ab_1.conda - sha256: ffc8e4e53cd92aec0f0ea0bc9e28f5fd1b1e67bde46b0b298170e6fb78eecce1 - md5: 707af59db75b066217403a8f00c1d826 + url: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyhd8ed1ab_3.conda + sha256: 9278622f54b6b4bce5d73663b282a8ab35d1b331d6ff92f4112906a526039827 + md5: b33551d9bac06d754762e8ccb3c4df03 depends: - python >=3.9 - webencodings + constrains: + - tinycss2 >=1.1.0,<1.5 license: Apache-2.0 AND MIT license_family: Apache - size: 132933 - timestamp: 1733302409510 + size: 132550 + timestamp: 1736148590971 - kind: conda name: brotli-python version: 1.1.0 @@ -2587,20 +2589,19 @@ packages: timestamp: 1725561779888 - kind: conda name: charset-normalizer - version: 3.4.0 - build: pyhd8ed1ab_1 - build_number: 1 + version: 3.4.1 + build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_1.conda - sha256: 63022ee2c6a157a9f980250a66f54bdcdf5abee817348d0f9a74c2441a6fbf0e - md5: 6581a17bba6b948bb60130026404a9d6 + url: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda + sha256: 4e0ee91b97e5de3e74567bdacea27f0139709fceca4db8adffbe24deffccb09b + md5: e83a31202d1c0a000fce3e9cf3825875 depends: - python >=3.9 license: MIT license_family: MIT - size: 47533 - timestamp: 1733218182393 + size: 47438 + timestamp: 1735929811779 - kind: conda name: click version: 8.1.8 @@ -3594,6 +3595,7 @@ packages: - markupsafe >=2.0 - python >=3.9 license: BSD-3-Clause + license_family: BSD size: 112561 timestamp: 1734824044952 - kind: conda @@ -4140,32 +4142,31 @@ packages: - kind: conda name: libabseil version: '20240722.0' - build: cxx17_h5888daf_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_h5888daf_1.conda - sha256: 8f91429091183c26950f1e7ffa730e8632f0627ba35d2fccd71df31628c9b4e5 - md5: e1f604644fe8d78e22660e2fec6756bc + build: cxx17_h07bc746_4 + build_number: 4 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_h07bc746_4.conda + sha256: 05fa5e5e908962b9c5aba95f962e2ca81d9599c4715aebe5e4ddb72b309d1770 + md5: c2d95bd7aa8d564a9bd7eca5e571a5b3 depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libstdcxx >=13 + - __osx >=11.0 + - libcxx >=18 constrains: - libabseil-static =20240722.0=cxx17* - abseil-cpp =20240722.0 license: Apache-2.0 license_family: Apache - size: 1310521 - timestamp: 1727295454064 + size: 1178260 + timestamp: 1736008642885 - kind: conda name: libabseil version: '20240722.0' - build: cxx17_h5ad3122_1 - build_number: 1 + build: cxx17_h18dbdb1_4 + build_number: 4 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h5ad3122_1.conda - sha256: 590e47dce38031a8893e70491f3b71e214de7781cab53b6f017aa6f6841cb076 - md5: 6fe6b3694c4792a8e26755d3b06f0b80 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h18dbdb1_4.conda + sha256: bb6c5fb3b8de5f90735c5252b57efb3c268ee222c755569dac18065f05147670 + md5: 633b9fe454ffea2aaf29e191d946a83b depends: - libgcc >=13 - libstdcxx >=13 @@ -4174,37 +4175,39 @@ packages: - libabseil-static =20240722.0=cxx17* license: Apache-2.0 license_family: Apache - size: 1328502 - timestamp: 1727295490806 + size: 1334844 + timestamp: 1736008472455 - kind: conda name: libabseil version: '20240722.0' - build: cxx17_hf9b8971_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_hf9b8971_1.conda - sha256: 90bf08a75506dfcf28a70977da8ab050bcf594cd02abd3a9d84a22c9e8161724 - md5: 706da5e791c569a7b9814877098a6a0a + build: cxx17_hbbce691_4 + build_number: 4 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda + sha256: 143a586aa67d50622ef703de57b9d43f44945836d6568e0e7aa174bd8c45e0d4 + md5: 488f260ccda0afaf08acb286db439c2f depends: - - __osx >=11.0 - - libcxx >=17 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 constrains: - libabseil-static =20240722.0=cxx17* - abseil-cpp =20240722.0 license: Apache-2.0 license_family: Apache - size: 1179072 - timestamp: 1727295571173 + size: 1311599 + timestamp: 1736008414161 - kind: conda name: libarrow version: 18.1.0 - build: h1b535d6_6_cpu - build_number: 6 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-h1b535d6_6_cpu.conda - sha256: 087b579aebf351ca41c54214121d86a15a41c92051cbd432d6f3a3f58a8c31b0 - md5: 4c0ad68efba1113ac5833975c67b565d + build: h0ad35bc_7_cpu + build_number: 7 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-h0ad35bc_7_cpu.conda + sha256: 4fbdd8bb89d912bf03f10f9373a8d96a1cdd7a7851e107393418a3d2715bc27e + md5: 4ba2173203f44bbf03d19aaba6ed07d3 depends: + - __osx >=11.0 - aws-crt-cpp >=0.29.7,<0.29.8.0a0 - aws-sdk-cpp >=1.11.458,<1.11.459.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 @@ -4212,17 +4215,15 @@ packages: - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 - bzip2 >=1.0.8,<2.0a0 - - gflags >=2.2.2,<2.3.0a0 - glog >=0.7.1,<0.8.0a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - libbrotlidec >=1.1.0,<1.2.0a0 - libbrotlienc >=1.1.0,<1.2.0a0 - - libgcc >=13 - - libgoogle-cloud >=2.32.0,<2.33.0a0 - - libgoogle-cloud-storage >=2.32.0,<2.33.0a0 + - libcxx >=18 + - libgoogle-cloud >=2.33.0,<2.34.0a0 + - libgoogle-cloud-storage >=2.33.0,<2.34.0a0 - libre2-11 >=2024.7.2 - - libstdcxx >=13 - libutf8proc >=2.9.0,<2.10.0a0 - libzlib >=1.3.1,<2.0a0 - lz4-c >=1.10.0,<1.11.0a0 @@ -4231,24 +4232,23 @@ packages: - snappy >=1.2.1,<1.3.0a0 - zstd >=1.5.6,<1.6.0a0 constrains: - - parquet-cpp <0.0a0 - arrow-cpp <0.0a0 + - parquet-cpp <0.0a0 - apache-arrow-proc =*=cpu license: Apache-2.0 license_family: APACHE - size: 8040629 - timestamp: 1733810319239 + size: 5506699 + timestamp: 1735682962976 - kind: conda name: libarrow version: 18.1.0 - build: h44a453e_6_cpu - build_number: 6 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-h44a453e_6_cpu.conda - sha256: abf17e99b03356a9d6248e965826c1352ff01b00d3a62cc51393bb0744d72803 - md5: 2cf6d608d6e66506f69797d5c6944c35 + build: hb7781cd_7_cpu + build_number: 7 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-hb7781cd_7_cpu.conda + sha256: f6107506bd16788560b47a4d18c1457b4df30a49334364d32613fe3f53ba6cbb + md5: 98cf7127ca7b3854c5d1c8bef1ed6e53 depends: - - __glibc >=2.17,<3.0.a0 - aws-crt-cpp >=0.29.7,<0.29.8.0a0 - aws-sdk-cpp >=1.11.458,<1.11.459.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 @@ -4263,8 +4263,8 @@ packages: - libbrotlidec >=1.1.0,<1.2.0a0 - libbrotlienc >=1.1.0,<1.2.0a0 - libgcc >=13 - - libgoogle-cloud >=2.32.0,<2.33.0a0 - - libgoogle-cloud-storage >=2.32.0,<2.33.0a0 + - libgoogle-cloud >=2.33.0,<2.34.0a0 + - libgoogle-cloud-storage >=2.33.0,<2.34.0a0 - libre2-11 >=2024.7.2 - libstdcxx >=13 - libutf8proc >=2.9.0,<2.10.0a0 @@ -4275,24 +4275,24 @@ packages: - snappy >=1.2.1,<1.3.0a0 - zstd >=1.5.6,<1.6.0a0 constrains: - - parquet-cpp <0.0a0 - arrow-cpp <0.0a0 + - parquet-cpp <0.0a0 - apache-arrow-proc =*=cpu license: Apache-2.0 license_family: APACHE - size: 8786061 - timestamp: 1733810643966 + size: 8026714 + timestamp: 1735685336542 - kind: conda name: libarrow version: 18.1.0 - build: h4a2f8bd_6_cpu - build_number: 6 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-h4a2f8bd_6_cpu.conda - sha256: 9ed3ea1bc15005c0df187268ef91407afaa908cf82f36f5acbbf50ac24d7f806 - md5: 835cdd84195b84dc34d128bd5d3580b9 + build: hd595efa_7_cpu + build_number: 7 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-hd595efa_7_cpu.conda + sha256: 554ffa338264c1dc34d95adb7eb856d50a2f25e7fa303a1a51e4372301b7c96f + md5: 08d4aff5ee6dee9a1b9ab13fca927697 depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 - aws-crt-cpp >=0.29.7,<0.29.8.0a0 - aws-sdk-cpp >=1.11.458,<1.11.459.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 @@ -4300,15 +4300,17 @@ packages: - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 - bzip2 >=1.0.8,<2.0a0 + - gflags >=2.2.2,<2.3.0a0 - glog >=0.7.1,<0.8.0a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - libbrotlidec >=1.1.0,<1.2.0a0 - libbrotlienc >=1.1.0,<1.2.0a0 - - libcxx >=18 - - libgoogle-cloud >=2.32.0,<2.33.0a0 - - libgoogle-cloud-storage >=2.32.0,<2.33.0a0 + - libgcc >=13 + - libgoogle-cloud >=2.33.0,<2.34.0a0 + - libgoogle-cloud-storage >=2.33.0,<2.34.0a0 - libre2-11 >=2024.7.2 + - libstdcxx >=13 - libutf8proc >=2.9.0,<2.10.0a0 - libzlib >=1.3.1,<2.0a0 - lz4-c >=1.10.0,<1.11.0a0 @@ -4317,190 +4319,190 @@ packages: - snappy >=1.2.1,<1.3.0a0 - zstd >=1.5.6,<1.6.0a0 constrains: - - apache-arrow-proc =*=cpu - arrow-cpp <0.0a0 - parquet-cpp <0.0a0 + - apache-arrow-proc =*=cpu license: Apache-2.0 license_family: APACHE - size: 5494797 - timestamp: 1733808145854 + size: 8770256 + timestamp: 1735684696564 - kind: conda name: libarrow-acero version: 18.1.0 - build: h3b568fd_6_cpu - build_number: 6 + build: h3b568fd_7_cpu + build_number: 7 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h3b568fd_6_cpu.conda - sha256: fdb70e2499e59b730084ecd53008b361a6f6090b5fb49624feda06b7e84c7b8c - md5: c50907eefe2ae22d826e7cb2e4d712f5 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h3b568fd_7_cpu.conda + sha256: 42cbfc87096f745d565d814d65b7228c82d985f1898859d5e456016d73e81c82 + md5: 4c1d8c3feea249782148d3cd6a25392e depends: - - libarrow 18.1.0 h1b535d6_6_cpu + - libarrow 18.1.0 hb7781cd_7_cpu - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 license_family: APACHE - size: 578091 - timestamp: 1733810378092 + size: 578222 + timestamp: 1735685424850 - kind: conda name: libarrow-acero version: 18.1.0 - build: hcb10f89_6_cpu - build_number: 6 + build: hcb10f89_7_cpu + build_number: 7 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-hcb10f89_6_cpu.conda - sha256: a32fa1d71415afc02b5cf3cd4c0a6ec0af9e749308829cc65ff79689222ce479 - md5: 143f9288b64759a6427563f058c62f2b + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-hcb10f89_7_cpu.conda + sha256: 87ea5d6a84d922d73975dce8661fccf257e72e755175b12c30e1181a34e37987 + md5: 12d84228204c56fec6ed113288014d11 depends: - __glibc >=2.17,<3.0.a0 - - libarrow 18.1.0 h44a453e_6_cpu + - libarrow 18.1.0 hd595efa_7_cpu - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 license_family: APACHE - size: 611745 - timestamp: 1733810698469 + size: 612463 + timestamp: 1735684749868 - kind: conda name: libarrow-acero version: 18.1.0 - build: hf07054f_6_cpu - build_number: 6 + build: hf07054f_7_cpu + build_number: 7 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-hf07054f_6_cpu.conda - sha256: e1cae46409927470439ef9ae93ed09b3493d0579501ca9ebfa79ded212ee98d8 - md5: 97fc01254714e1572624baefdd7cc898 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-hf07054f_7_cpu.conda + sha256: 86e20cebfdb4f335e98265c1b88f5053bf3e3648768a317856295846bfdbf2b4 + md5: 3eaf71fe987de13061db795e03bb1a1c depends: - __osx >=11.0 - - libarrow 18.1.0 h4a2f8bd_6_cpu + - libarrow 18.1.0 h0ad35bc_7_cpu - libcxx >=18 license: Apache-2.0 license_family: APACHE - size: 483713 - timestamp: 1733808246880 + size: 485185 + timestamp: 1735683071232 - kind: conda name: libarrow-dataset version: 18.1.0 - build: h3b568fd_6_cpu - build_number: 6 + build: h3b568fd_7_cpu + build_number: 7 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h3b568fd_6_cpu.conda - sha256: 2a08f5a1017ff660c37ae0c24343a119cb2511c6edd69e23d0a5090a0967ea35 - md5: bb1548ad011c4f9107fcc4cc548473bf + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h3b568fd_7_cpu.conda + sha256: 13ba7d3d08015aa26569eca9e198e2f8b2a0cd2d9c420e41c78cc2e5d5170f26 + md5: f39f5d725c2ca94c2e7b19e2717fd4ab depends: - - libarrow 18.1.0 h1b535d6_6_cpu - - libarrow-acero 18.1.0 h3b568fd_6_cpu + - libarrow 18.1.0 hb7781cd_7_cpu + - libarrow-acero 18.1.0 h3b568fd_7_cpu - libgcc >=13 - - libparquet 18.1.0 hfc78867_6_cpu + - libparquet 18.1.0 hfc78867_7_cpu - libstdcxx >=13 license: Apache-2.0 license_family: APACHE - size: 559673 - timestamp: 1733810461646 + size: 560329 + timestamp: 1735685518922 - kind: conda name: libarrow-dataset version: 18.1.0 - build: hcb10f89_6_cpu - build_number: 6 + build: hcb10f89_7_cpu + build_number: 7 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-hcb10f89_6_cpu.conda - sha256: 74eeb178070002842d3ed721769399320e3a68a0843319eaf899a092a31def26 - md5: 20ca46a6bc714a6ab189d5b3f46e66d8 + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-hcb10f89_7_cpu.conda + sha256: 99c12511fba79c7947f78d676eae5857659084f687f375f68bc20bd4cddb0a0e + md5: 0a81eb63d7cd150f598c752e86388d57 depends: - __glibc >=2.17,<3.0.a0 - - libarrow 18.1.0 h44a453e_6_cpu - - libarrow-acero 18.1.0 hcb10f89_6_cpu + - libarrow 18.1.0 hd595efa_7_cpu + - libarrow-acero 18.1.0 hcb10f89_7_cpu - libgcc >=13 - - libparquet 18.1.0 h081d1f1_6_cpu + - libparquet 18.1.0 h081d1f1_7_cpu - libstdcxx >=13 license: Apache-2.0 license_family: APACHE - size: 586627 - timestamp: 1733810842604 + size: 587497 + timestamp: 1735684880531 - kind: conda name: libarrow-dataset version: 18.1.0 - build: hf07054f_6_cpu - build_number: 6 + build: hf07054f_7_cpu + build_number: 7 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-hf07054f_6_cpu.conda - sha256: 6eba942ce926419f74e6e0a7c3994a7d78ab6be47115e6bb70e02136554736be - md5: 0774276be6659aaa0007f1b0f6ee19b0 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-hf07054f_7_cpu.conda + sha256: 52c5c4e9cd5f2ac91dcebb6a920ab2536febcea116ff8767e5439329d7da820b + md5: 97a2d3606682d94f7d73112e9ad684ae depends: - __osx >=11.0 - - libarrow 18.1.0 h4a2f8bd_6_cpu - - libarrow-acero 18.1.0 hf07054f_6_cpu + - libarrow 18.1.0 h0ad35bc_7_cpu + - libarrow-acero 18.1.0 hf07054f_7_cpu - libcxx >=18 - - libparquet 18.1.0 h636d7b7_6_cpu + - libparquet 18.1.0 h636d7b7_7_cpu license: Apache-2.0 license_family: APACHE - size: 489948 - timestamp: 1733809328231 + size: 491237 + timestamp: 1735684688308 - kind: conda name: libarrow-substrait version: 18.1.0 - build: h3ee7192_6_cpu - build_number: 6 + build: h08228c5_7_cpu + build_number: 7 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-h3ee7192_6_cpu.conda - sha256: bda6728db019dd0c409b1996ad9ef6ab0bcee3a94dc66a8045e8c1049c566055 - md5: aa313b3168caf98d00b3753f5ba27650 + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-h08228c5_7_cpu.conda + sha256: 53ea53a06e137c2f81ebfdff3f978babb8b59e31f705a19b57056ec8754c1abf + md5: e128def53c133e8a23ac00cd4a479335 depends: - __glibc >=2.17,<3.0.a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.1.0 h44a453e_6_cpu - - libarrow-acero 18.1.0 hcb10f89_6_cpu - - libarrow-dataset 18.1.0 hcb10f89_6_cpu + - libarrow 18.1.0 hd595efa_7_cpu + - libarrow-acero 18.1.0 hcb10f89_7_cpu + - libarrow-dataset 18.1.0 hcb10f89_7_cpu - libgcc >=13 - - libprotobuf >=5.28.2,<5.28.3.0a0 + - libprotobuf >=5.28.3,<5.28.4.0a0 - libstdcxx >=13 license: Apache-2.0 license_family: APACHE - size: 519989 - timestamp: 1733810903274 + size: 521861 + timestamp: 1735684940668 - kind: conda name: libarrow-substrait version: 18.1.0 - build: h3ffb4b1_6_cpu - build_number: 6 + build: h1e9d426_7_cpu + build_number: 7 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h3ffb4b1_6_cpu.conda - sha256: 9f78c55c5d7122e588a6f226cbf7e909c479d66ed18edc633d68324323d386b9 - md5: 5db2e6832397b8ca70a6f7b00e0c3629 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h1e9d426_7_cpu.conda + sha256: 252e2a0d8c733f36b50499786480a05a59577d617f291868149c80534c1e8ffc + md5: 6da921d9e1c4e2ab2679eeea7cbd4c82 depends: - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.1.0 h1b535d6_6_cpu - - libarrow-acero 18.1.0 h3b568fd_6_cpu - - libarrow-dataset 18.1.0 h3b568fd_6_cpu + - libarrow 18.1.0 hb7781cd_7_cpu + - libarrow-acero 18.1.0 h3b568fd_7_cpu + - libarrow-dataset 18.1.0 h3b568fd_7_cpu - libgcc >=13 - - libprotobuf >=5.28.2,<5.28.3.0a0 + - libprotobuf >=5.28.3,<5.28.4.0a0 - libstdcxx >=13 license: Apache-2.0 license_family: APACHE - size: 515928 - timestamp: 1733810503359 + size: 516014 + timestamp: 1735685565929 - kind: conda name: libarrow-substrait version: 18.1.0 - build: h86344ea_6_cpu - build_number: 6 + build: h4239455_7_cpu + build_number: 7 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-h86344ea_6_cpu.conda - sha256: bafd9ca59ebb5ad34b77aff316ef7b59c5fb1eb8a7b6a15de8dcbdf3ce37556d - md5: c1c162f5bf569cff8bed6def705a899f + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-h4239455_7_cpu.conda + sha256: a45bbdd6932aed972d6c6ce30a7439aa8ec9d9b8ee5affb350d41e50abdc0127 + md5: 91927747173f65695e441346c7145e26 depends: - __osx >=11.0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.1.0 h4a2f8bd_6_cpu - - libarrow-acero 18.1.0 hf07054f_6_cpu - - libarrow-dataset 18.1.0 hf07054f_6_cpu + - libarrow 18.1.0 h0ad35bc_7_cpu + - libarrow-acero 18.1.0 hf07054f_7_cpu + - libarrow-dataset 18.1.0 hf07054f_7_cpu - libcxx >=18 - - libprotobuf >=5.28.2,<5.28.3.0a0 + - libprotobuf >=5.28.3,<5.28.4.0a0 license: Apache-2.0 license_family: APACHE - size: 451623 - timestamp: 1733809487176 + size: 452385 + timestamp: 1735684993831 - kind: conda name: libblas version: 3.9.0 @@ -4930,51 +4932,50 @@ packages: timestamp: 1734373971372 - kind: conda name: libedit - version: 3.1.20191231 - build: hc8eb9b7_2 - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20191231-hc8eb9b7_2.tar.bz2 - sha256: 3912636197933ecfe4692634119e8644904b41a58f30cad9d1fc02f6ba4d9fca - md5: 30e4362988a2623e9eb34337b83e01f9 + version: 3.1.20240808 + build: pl5321h7949ede_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20240808-pl5321h7949ede_0.conda + sha256: 4d0d69ddf9cc7d724a1ccf3a9852e44c8aea9825692582bac2c4e8d21ec95ccd + md5: 8247f80f3dc464d9322e85007e307fe8 depends: - - ncurses >=6.2,<7.0.0a0 + - ncurses + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - ncurses >=6.5,<7.0a0 license: BSD-2-Clause - license_family: BSD - size: 96607 - timestamp: 1597616630749 + size: 134657 + timestamp: 1736191912705 - kind: conda name: libedit - version: 3.1.20191231 - build: he28a2e2_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20191231-he28a2e2_2.tar.bz2 - sha256: a57d37c236d8f7c886e01656f4949d9dcca131d2a0728609c6f7fa338b65f1cf - md5: 4d331e44109e3f0e19b4cb8f9b82f3e1 + version: 3.1.20240808 + build: pl5321h976ea20_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20240808-pl5321h976ea20_0.conda + sha256: 031daea98cf278f858b7957ad5dc475f1b5673cd5e718850529401ced64cef2c + md5: 0be40129d3dd1a152fff29a85f0785d0 depends: - - libgcc-ng >=7.5.0 - - ncurses >=6.2,<7.0.0a0 + - ncurses + - libgcc >=13 + - ncurses >=6.5,<7.0a0 license: BSD-2-Clause - license_family: BSD - size: 123878 - timestamp: 1597616541093 + size: 148120 + timestamp: 1736192137151 - kind: conda name: libedit - version: 3.1.20191231 - build: he28a2e2_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20191231-he28a2e2_2.tar.bz2 - sha256: debc31fb2f07ba2b0363f90e455873670734082822926ba4a9556431ec0bf36d - md5: 29371161d77933a54fccf1bb66b96529 + version: 3.1.20240808 + build: pl5321hafb1f1b_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20240808-pl5321hafb1f1b_0.conda + sha256: fb934d7a03279ec8eae4bf1913ac9058fcf6fed35290d8ffa6e04157f396a3b1 + md5: af89aa84ffb5ee551ce0c137b951a3b5 depends: - - libgcc-ng >=7.5.0 - - ncurses >=6.2,<7.0.0a0 + - ncurses + - __osx >=11.0 + - ncurses >=6.5,<7.0a0 license: BSD-2-Clause - license_family: BSD - size: 134104 - timestamp: 1597617110769 + size: 107634 + timestamp: 1736192034117 - kind: conda name: libev version: '4.33' @@ -5354,214 +5355,223 @@ packages: timestamp: 1729089357313 - kind: conda name: libgoogle-cloud - version: 2.32.0 - build: h3888205_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-2.32.0-h3888205_0.conda - sha256: 36af2844ce8fafd477214d51117746144461132f76759a7d29963b4583b577be - md5: a40b948bf4eabcc1ce708c40ffd7c06d + version: 2.33.0 + build: h2b5623c_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.33.0-h2b5623c_1.conda + sha256: ae48ee93e2c226bf682f1e389c2fd51ae7bf77c2ce4b3aee069764f4be1c63f2 + md5: 61829a8dd5f4e2327e707572065bae41 depends: + - __glibc >=2.17,<3.0.a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libcurl >=8.10.1,<9.0a0 + - libcurl >=8.11.1,<9.0a0 - libgcc >=13 - libgrpc >=1.67.1,<1.68.0a0 - - libprotobuf >=5.28.2,<5.28.3.0a0 + - libprotobuf >=5.28.3,<5.28.4.0a0 - libstdcxx >=13 - openssl >=3.4.0,<4.0a0 constrains: - - libgoogle-cloud 2.32.0 *_0 + - libgoogle-cloud 2.33.0 *_1 license: Apache-2.0 license_family: Apache - size: 1248560 - timestamp: 1733512309504 + size: 1254656 + timestamp: 1735648569457 - kind: conda name: libgoogle-cloud - version: 2.32.0 - build: h804f50b_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.32.0-h804f50b_0.conda - sha256: 126856add750013390dff664a3c3cd0f6f0cbbc683b0025a7ce9d1618968bc70 - md5: 3d96df4d6b1c88455e05b94ce8a14a53 + version: 2.33.0 + build: hccf9d24_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-2.33.0-hccf9d24_1.conda + sha256: d3d4def86d880431928799ba90ca97e57c2f05677c03af8de2337502926c492c + md5: a2724014eb04f14bd71d35f45b062dd0 depends: - - __glibc >=2.17,<3.0.a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libcurl >=8.10.1,<9.0a0 + - libcurl >=8.11.1,<9.0a0 - libgcc >=13 - libgrpc >=1.67.1,<1.68.0a0 - - libprotobuf >=5.28.2,<5.28.3.0a0 + - libprotobuf >=5.28.3,<5.28.4.0a0 - libstdcxx >=13 - openssl >=3.4.0,<4.0a0 constrains: - - libgoogle-cloud 2.32.0 *_0 + - libgoogle-cloud 2.33.0 *_1 license: Apache-2.0 license_family: Apache - size: 1249557 - timestamp: 1733512191906 + size: 1253019 + timestamp: 1735649566849 - kind: conda name: libgoogle-cloud - version: 2.32.0 - build: h8d8be31_0 + version: 2.33.0 + build: hdbe95d5_1 + build_number: 1 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-2.32.0-h8d8be31_0.conda - sha256: 722e49dbdc4486105d9f5b79a7ba4f9064602fe20c4015e97684c898ab8d3386 - md5: d7ab9e0eb7d55eac4943913073de61d7 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-2.33.0-hdbe95d5_1.conda + sha256: ce95aca02451694a4154c7770b6addf4fb859abf17912de6ec947da8469a56ce + md5: 91de1fbab8610974c0094c266bc63435 depends: - __osx >=11.0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libcurl >=8.10.1,<9.0a0 + - libcurl >=8.11.1,<9.0a0 - libcxx >=18 - libgrpc >=1.67.1,<1.68.0a0 - - libprotobuf >=5.28.2,<5.28.3.0a0 + - libprotobuf >=5.28.3,<5.28.4.0a0 - openssl >=3.4.0,<4.0a0 constrains: - - libgoogle-cloud 2.32.0 *_0 + - libgoogle-cloud 2.33.0 *_1 license: Apache-2.0 license_family: Apache - size: 876210 - timestamp: 1733512539476 + size: 877594 + timestamp: 1735648230965 - kind: conda name: libgoogle-cloud-storage - version: 2.32.0 - build: h0121fbd_0 + version: 2.33.0 + build: h0121fbd_1 + build_number: 1 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.32.0-h0121fbd_0.conda - sha256: d1b53d17df38b52a4bc6d1fe6af0e611d6480ce10b0af570c84bd38c8aa83b91 - md5: 877a5ec0431a5af83bf0cd0522bfe661 + url: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.33.0-h0121fbd_1.conda + sha256: 41022523320ca8633a6c615710823e596efadb50f06d724e1a0c81e27994f257 + md5: b0cfb5044685a7a9fa43ae669124f0a0 depends: - __glibc >=2.17,<3.0.a0 - libabseil - libcrc32c >=1.1.2,<1.2.0a0 - libcurl - libgcc >=13 - - libgoogle-cloud 2.32.0 h804f50b_0 + - libgoogle-cloud 2.33.0 h2b5623c_1 - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - openssl license: Apache-2.0 license_family: Apache - size: 782108 - timestamp: 1733512329104 + size: 784357 + timestamp: 1735648759177 - kind: conda name: libgoogle-cloud-storage - version: 2.32.0 - build: h7081f7f_0 + version: 2.33.0 + build: h7081f7f_1 + build_number: 1 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-storage-2.32.0-h7081f7f_0.conda - sha256: 609df2cf376ba66460f40143f835fc567cae4458df80705587cd2efd59c09bf1 - md5: 28f5ab5cf95170dfacd05d2bb301e573 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-storage-2.33.0-h7081f7f_1.conda + sha256: c0524a22064bc17f5c037da09ba54cc9e767741ef645178e499750c44bec2531 + md5: af8e51382464d4cc2d0054977c40a732 depends: - __osx >=11.0 - libabseil - libcrc32c >=1.1.2,<1.2.0a0 - libcurl - libcxx >=18 - - libgoogle-cloud 2.32.0 h8d8be31_0 + - libgoogle-cloud 2.33.0 hdbe95d5_1 - libzlib >=1.3.1,<2.0a0 - openssl license: Apache-2.0 license_family: Apache - size: 526895 - timestamp: 1733513644846 + size: 526963 + timestamp: 1735649222088 - kind: conda name: libgoogle-cloud-storage - version: 2.32.0 - build: hb9b2b65_0 + version: 2.33.0 + build: hb9b2b65_1 + build_number: 1 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-storage-2.32.0-hb9b2b65_0.conda - sha256: e120e7b6c9c9d25baa8ae903106babdd3c969523ae25278a615ed9de4bd0fc35 - md5: 925ab0ca33baca4fcfee585cecb94169 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-storage-2.33.0-hb9b2b65_1.conda + sha256: 5eda1cbba68709b91b370b3792c9cfd7bec4ac4e2262f0887d12e1f000ae1191 + md5: 45df2267ff4d8ce532e8d300ce0b0829 depends: - libabseil - libcrc32c >=1.1.2,<1.2.0a0 - libcurl - libgcc >=13 - - libgoogle-cloud 2.32.0 h3888205_0 + - libgoogle-cloud 2.33.0 hccf9d24_1 - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - openssl license: Apache-2.0 license_family: Apache - size: 737964 - timestamp: 1733512457785 + size: 737518 + timestamp: 1735649773462 - kind: conda name: libgrpc version: 1.67.1 - build: h36c5df4_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libgrpc-1.67.1-h36c5df4_0.conda - sha256: 1f6673d9d866048c9cf28fd56e6874ffc7e2c53c47d7071cb367d5fc2dde16a7 - md5: b946137e362e98a55a77fdf0b20a7739 + build: h0a426d6_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libgrpc-1.67.1-h0a426d6_1.conda + sha256: 630edf63981818ff590367cb95fddbed0f5a390464d0952c90ec81de899e84a6 + md5: 8a3cba079d6ac985e7d73c76a678fbb4 depends: - - c-ares >=1.32.3,<2.0a0 + - __osx >=11.0 + - c-ares >=1.34.4,<2.0a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libgcc >=13 - - libprotobuf >=5.28.2,<5.28.3.0a0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 - libre2-11 >=2024.7.2 - - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - - openssl >=3.3.2,<4.0a0 + - openssl >=3.4.0,<4.0a0 - re2 constrains: - grpc-cpp =1.67.1 license: Apache-2.0 license_family: APACHE - size: 7131846 - timestamp: 1730236305327 + size: 5311706 + timestamp: 1735585137716 - kind: conda name: libgrpc version: 1.67.1 - build: hc2c308b_0 + build: h25350d4_1 + build_number: 1 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.67.1-hc2c308b_0.conda - sha256: 870550c1faf524e9a695262cd4c31441b18ad542f16893bd3c5dbc93106705f7 - md5: 4606a4647bfe857e3cfe21ca12ac3afb + url: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.67.1-h25350d4_1.conda + sha256: 014627485b3cf0ea18e04c0bab07be7fb98722a3aeeb58477acc7e1c3d2f911e + md5: 0c6497a760b99a926c7c12b74951a39c depends: - __glibc >=2.17,<3.0.a0 - - c-ares >=1.32.3,<2.0a0 + - c-ares >=1.34.4,<2.0a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - libgcc >=13 - - libprotobuf >=5.28.2,<5.28.3.0a0 + - libprotobuf >=5.28.3,<5.28.4.0a0 - libre2-11 >=2024.7.2 - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - - openssl >=3.3.2,<4.0a0 + - openssl >=3.4.0,<4.0a0 - re2 constrains: - grpc-cpp =1.67.1 license: Apache-2.0 license_family: APACHE - size: 7362336 - timestamp: 1730236333879 + size: 7792251 + timestamp: 1735584856826 - kind: conda name: libgrpc version: 1.67.1 - build: hc70892a_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libgrpc-1.67.1-hc70892a_0.conda - sha256: d2393fcd3c3584e5d58da4122f48bcf297567d2f6f14b3d1fcbd34fdd5040694 - md5: 624e27571fde34f8acc2afec840ac435 + build: hf7ccdd3_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libgrpc-1.67.1-hf7ccdd3_1.conda + sha256: 3fa173dc1d7456aac2b26937daae86a08432a31640e3d6569c62edc661fc9bbe + md5: 8fb41a425bebaeb3d0fa568503612e64 depends: - - __osx >=11.0 - - c-ares >=1.34.2,<2.0a0 + - c-ares >=1.34.4,<2.0a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libcxx >=17 - - libprotobuf >=5.28.2,<5.28.3.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 - libre2-11 >=2024.7.2 + - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - - openssl >=3.3.2,<4.0a0 + - openssl >=3.4.0,<4.0a0 - re2 constrains: - grpc-cpp =1.67.1 license: Apache-2.0 license_family: APACHE - size: 4882208 - timestamp: 1730236299095 + size: 7430006 + timestamp: 1735585769731 - kind: conda name: libiconv version: '1.17' @@ -5899,61 +5909,61 @@ packages: - kind: conda name: libparquet version: 18.1.0 - build: h081d1f1_6_cpu - build_number: 6 + build: h081d1f1_7_cpu + build_number: 7 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-h081d1f1_6_cpu.conda - sha256: c691a59f1ebb6cedbf827f49f6cf414e08b0eec911f589133e6a8321e8ac701c - md5: 68788df49ce7480187eb6387f15b2b67 + url: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-h081d1f1_7_cpu.conda + sha256: 55945b761130f60abdecf1551907ecfd05cb4a5958cf74d855b30c005ecb3592 + md5: b97013ef4e1dd2cf11594f06d5b5e83a depends: - __glibc >=2.17,<3.0.a0 - - libarrow 18.1.0 h44a453e_6_cpu + - libarrow 18.1.0 hd595efa_7_cpu - libgcc >=13 - libstdcxx >=13 - 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 + size: 1205598 + timestamp: 1735684849150 - kind: conda name: libparquet version: 18.1.0 - build: h636d7b7_6_cpu - build_number: 6 + build: h636d7b7_7_cpu + build_number: 7 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-h636d7b7_6_cpu.conda - sha256: 88c1e810bede65c54f1ebc51c14400f9e8cf0fc1f88a8c0a99210e2f5dfed582 - md5: 9b333c3a38e55f6c1b8733222e22f528 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-h636d7b7_7_cpu.conda + sha256: bf42e43542a90edd86ba5aa5fd4543671625f1bc35f62be32688f00e18bae990 + md5: 93de9ba66a20db32a2646d313794b3a8 depends: - __osx >=11.0 - - libarrow 18.1.0 h4a2f8bd_6_cpu + - libarrow 18.1.0 h0ad35bc_7_cpu - libcxx >=18 - 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 + size: 873251 + timestamp: 1735684582558 - kind: conda name: libparquet version: 18.1.0 - build: hfc78867_6_cpu - build_number: 6 + build: hfc78867_7_cpu + build_number: 7 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-hfc78867_6_cpu.conda - sha256: 38aab34c422519c530d0e9a3e0ffd1624db1c1e163983c46ae341e831b2eb6b5 - md5: 1ab6d4a9a982920b9dc5f2c700777b27 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-hfc78867_7_cpu.conda + sha256: 6dff9bbe731dc2cefe96bd9c7981d2cbef2b564a3152840a29c9b6a493ea50d9 + md5: 184bec7a9392ab6ba8134041e81971d6 depends: - - libarrow 18.1.0 h1b535d6_6_cpu + - libarrow 18.1.0 hb7781cd_7_cpu - libgcc >=13 - libstdcxx >=13 - 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 + size: 1117825 + timestamp: 1735685495511 - kind: conda name: libpng version: 1.6.44 @@ -5999,32 +6009,33 @@ packages: timestamp: 1726236639270 - kind: conda name: libprotobuf - version: 5.28.2 - build: h029595c_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.2-h029595c_0.conda - sha256: d8c7b6f851bfc53494d9b8e54d473c4f11ab26483a6e64df6f7967563df166b1 - md5: 538dbe0ad9f248e2e109abb9b6809ea5 + version: 5.28.3 + build: h3bd63a1_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.3-h3bd63a1_1.conda + sha256: f58a16b13ad53346903c833e266f83c3d770a43a432659b98710aed85ca885e7 + md5: bdbfea4cf45ae36652c6bbcc2e7ebe91 depends: + - __osx >=11.0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libgcc >=13 - - libstdcxx >=13 + - libcxx >=18 - libzlib >=1.3.1,<2.0a0 license: BSD-3-Clause license_family: BSD - size: 2802876 - timestamp: 1728564881988 + size: 2271580 + timestamp: 1735576361997 - kind: conda name: libprotobuf - version: 5.28.2 - build: h5b01275_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.2-h5b01275_0.conda - sha256: 5e8fd4aa00193c85602ce6101dd28fe31306dff85c9725048f6dc828dfa7c421 - md5: ab0bff36363bec94720275a681af8b83 + version: 5.28.3 + build: h44a3b7b_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.3-h44a3b7b_1.conda + sha256: ecb69f2b1668e784b41ba667493be846662d5ef702bef64fb2e013bb1364cdc4 + md5: 68f807f7cc13951652bbe048253fd405 depends: - - __glibc >=2.17,<3.0.a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - libgcc >=13 @@ -6032,75 +6043,77 @@ packages: - libzlib >=1.3.1,<2.0a0 license: BSD-3-Clause license_family: BSD - size: 2945348 - timestamp: 1728565355702 + size: 2788074 + timestamp: 1735576315676 - kind: conda name: libprotobuf - version: 5.28.2 - build: h8f0b736_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.2-h8f0b736_0.conda - sha256: f732a6fa918428e2d5ba61e78fe11bb44a002cc8f6bb74c94ee5b1297fefcfd8 - md5: d2cb5991f2fb8eb079c80084435e9ce6 + version: 5.28.3 + build: h6128344_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda + sha256: 51125ebb8b7152e4a4e69fd2398489c4ec8473195c27cde3cbdf1cb6d18c5493 + md5: d8703f1ffe5a06356f06467f1d0b9464 depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libcxx >=17 + - libgcc >=13 + - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 license: BSD-3-Clause license_family: BSD - size: 2374965 - timestamp: 1728565334796 + size: 2960815 + timestamp: 1735577210663 - kind: conda name: libre2-11 version: 2024.07.02 - build: h18dbdb1_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_1.conda - sha256: 96d4fdac28d5af38c38f90c22cb0aa9a90affae13ca8ba24bd1eb60b789df8ff - md5: f1800796b0efc4bbc5b001d845545111 + build: h07bc746_2 + build_number: 2 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h07bc746_2.conda + sha256: 112a73ad483353751d4c5d63648c69a4d6fcebf5e1b698a860a3f5124fc3db96 + md5: 6b1e3624d3488016ca4f1ca0c412efaa depends: + - __osx >=11.0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libgcc >=13 - - libstdcxx >=13 + - libcxx >=18 constrains: - re2 2024.07.02.* license: BSD-3-Clause license_family: BSD - size: 203516 - timestamp: 1728778974654 + size: 167155 + timestamp: 1735541067807 - kind: conda name: libre2-11 version: 2024.07.02 - build: h2348fd5_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h2348fd5_1.conda - sha256: 6facca42cfc85a05b33e484a8b0df7857cc092db34806946d022270098d8d20f - md5: 5a7065309a66097738be6a06fd04b7ef + build: h18dbdb1_2 + build_number: 2 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_2.conda + sha256: 862c20de0120f802e618dcb25913d00c5b82f91f4be60b2d46a774e851adc2f6 + md5: 9a7dbbaab49f76a6f36e5c9d98e323a7 depends: - - __osx >=11.0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libcxx >=17 + - libgcc >=13 + - libstdcxx >=13 constrains: - re2 2024.07.02.* license: BSD-3-Clause license_family: BSD - size: 165956 - timestamp: 1728779107218 + size: 204305 + timestamp: 1735540986919 - kind: conda name: libre2-11 version: 2024.07.02 - build: hbbce691_1 - build_number: 1 + build: hbbce691_2 + build_number: 2 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_1.conda - sha256: f8ad6a4f6d4fd54ebe3e5e712a01e663222fc57f49d16b6b8b10c30990dafb8f - md5: 2124de47357b7a516c0a3efd8f88c143 + url: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_2.conda + sha256: 4420f8362c71251892ba1eeb957c5e445e4e1596c0c651c28d0d8b415fe120c7 + md5: b2fede24428726dd867611664fb372e8 depends: - __glibc >=2.17,<3.0.a0 - libabseil * cxx17* @@ -6111,8 +6124,8 @@ packages: - re2 2024.07.02.* license: BSD-3-Clause license_family: BSD - size: 211096 - timestamp: 1728778964655 + size: 209793 + timestamp: 1735541054068 - kind: conda name: libsodium version: 1.0.20 @@ -6555,6 +6568,7 @@ packages: constrains: - libwebp 1.5.0 license: BSD-3-Clause + license_family: BSD size: 362623 timestamp: 1734779054659 - kind: conda @@ -6570,6 +6584,7 @@ packages: constrains: - libwebp 1.5.0 license: BSD-3-Clause + license_family: BSD size: 290013 timestamp: 1734777593617 - kind: conda @@ -6586,6 +6601,7 @@ packages: constrains: - libwebp 1.5.0 license: BSD-3-Clause + license_family: BSD size: 429973 timestamp: 1734777489810 - kind: conda @@ -6939,76 +6955,76 @@ packages: timestamp: 1733417051523 - kind: conda name: max - version: 25.1.0.dev2024122805 + version: 25.1.0.dev2025010605 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122805-release.conda - sha256: fe2812cf8bb718133a1ee6e2a720e0adb3a234443cd1bdb012ed3845fc100c7e - md5: d2ab5ff45c394ef59d4c89a35dbc0e20 + url: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025010605-release.conda + sha256: f806f7b7519e01cd68fbae2c714d1c1a9e1e96f144e920ce51c47512f81a1db3 + md5: 1bae0e6863939e6792d7129bec77983c depends: - - max-core ==25.1.0.dev2024122805 release - - max-python >=25.1.0.dev2024122805,<26.0a0 - - mojo-jupyter ==25.1.0.dev2024122805 release - - mblack ==25.1.0.dev2024122805 release + - max-core ==25.1.0.dev2025010605 release + - max-python >=25.1.0.dev2025010605,<26.0a0 + - mojo-jupyter ==25.1.0.dev2025010605 release + - mblack ==25.1.0.dev2025010605 release license: LicenseRef-Modular-Proprietary - size: 9913 - timestamp: 1735363020600 + size: 9914 + timestamp: 1736140643481 - kind: conda name: max-core - version: 25.1.0.dev2024122805 + version: 25.1.0.dev2025010605 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024122805-release.conda - sha256: d0f6942e8fb4461129dd0b3b459e5d975fa392661fbf9ce002992044249c7df0 - md5: 99412132bd807caa43dba507054a2691 + url: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025010605-release.conda + sha256: 315ad791e417ed45fcee42fe7227428bca1d77427c10b81fb5a65583a5844279 + md5: c40747b8b9245abb69db013a14266b6c depends: - - mblack ==25.1.0.dev2024122805 release + - mblack ==25.1.0.dev2025010605 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 245436370 - timestamp: 1735363025528 + size: 244726382 + timestamp: 1736140669107 - kind: conda name: max-core - version: 25.1.0.dev2024122805 + version: 25.1.0.dev2025010605 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024122805-release.conda - sha256: 19aa7627330555204af1573e241f86ced1f34e5773fe2047f03d2df77d296de7 - md5: c83934dfd0b0e2285a2959be586f8e4b + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025010605-release.conda + sha256: dd574ac5ce9effc0f713ea63992a5a4aeaf8fa80f2c968a9c00c664703b70932 + md5: 65f814591335d2910a5e30d5f6968aff depends: - - mblack ==25.1.0.dev2024122805 release + - mblack ==25.1.0.dev2025010605 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 249341674 - timestamp: 1735363020598 + size: 248381825 + timestamp: 1736140643479 - kind: conda name: max-core - version: 25.1.0.dev2024122805 + version: 25.1.0.dev2025010605 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024122805-release.conda - sha256: d65a30747c6623a9a73d02e35d617cf2425fc151839f18badbef093a045c1bd5 - md5: d45b98ffbd949783e9c8ee20e28a6970 + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025010605-release.conda + sha256: ff28dea1ddf5adb0586a5d6a41fb6b6d0a0ee332eb4440cbaffa9b041de16db0 + md5: 1e134821c4eae4e6fa711c1cd2b8cc00 depends: - - mblack ==25.1.0.dev2024122805 release + - mblack ==25.1.0.dev2025010605 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 214123206 - timestamp: 1735365284895 + size: 213059614 + timestamp: 1736141300718 - kind: conda name: max-python - version: 25.1.0.dev2024122805 + version: 25.1.0.dev2025010605 build: 3.12release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024122805-3.12release.conda - sha256: 1666cdc4f1460979cb2bad7ddaa745256f137e03a32c8688a988f359bcc4a1b6 - md5: fda0864df873c814f836064daa86e4d6 + url: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025010605-3.12release.conda + sha256: 80e1b3a95eb37bd76396c470b8a17168fdd1b0a2e193d66981824760bd82e768 + md5: 28ecc247a48f0de9dee4f6fe6d1be095 depends: - - max-core ==25.1.0.dev2024122805 release + - max-core ==25.1.0.dev2025010605 release - python 3.12.* - fastapi - httpx @@ -7031,18 +7047,18 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 122818679 - timestamp: 1735363025537 + size: 122702106 + timestamp: 1736140669117 - kind: conda name: max-python - version: 25.1.0.dev2024122805 + version: 25.1.0.dev2025010605 build: 3.12release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024122805-3.12release.conda - sha256: 00bb77ee09d7ec7aa407452fd11a227980cc273e738fbec28fe2c7f8df0b8d21 - md5: 6e0f158c866d00b4dd04602211e184cd + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025010605-3.12release.conda + sha256: 90a8fa8b7b654e35adc36cf2309898d4a965b5b85f0c6ac912ec1b7439d247c2 + md5: fc56c27a4041f32ce7f03c94141e6fd9 depends: - - max-core ==25.1.0.dev2024122805 release + - max-core ==25.1.0.dev2025010605 release - python 3.12.* - fastapi - httpx @@ -7065,18 +7081,18 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 126488257 - timestamp: 1735363020609 + size: 126373708 + timestamp: 1736140643490 - kind: conda name: max-python - version: 25.1.0.dev2024122805 + version: 25.1.0.dev2025010605 build: 3.12release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024122805-3.12release.conda - sha256: 81c22f0a8d33e7d8091959a4bf837993246308712b22e384d0c853404ab45c15 - md5: 207d5360c0a7fcb6e8d7933e3a577a07 + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025010605-3.12release.conda + sha256: 6948694d15390b9baf752a38f17fa7c4e0712b3b71f893955037e65a84fb72c9 + md5: f7c5e210de943e91a2550a9a0ed51e59 depends: - - max-core ==25.1.0.dev2024122805 release + - max-core ==25.1.0.dev2025010605 release - python 3.12.* - fastapi - httpx @@ -7099,17 +7115,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 113429204 - timestamp: 1735365284899 + size: 113299681 + timestamp: 1736141300722 - kind: conda name: mblack - version: 25.1.0.dev2024122805 + version: 25.1.0.dev2025010605 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122805-release.conda - sha256: 46d7d50f46fc589cd4fd53c614020666b9ac4ea90d0d861bc2888ff8a8968fc7 - md5: e140a619b5afdf6730ee181c6ca0dd1d + url: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025010605-release.conda + sha256: 2166e3aa028121c737e9a7f3cde3711c8f87d83757045318467ee0d54da95fdc + md5: 90216ac95ad02c40a72aea621bb2d54e depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -7120,7 +7136,7 @@ packages: - python license: MIT size: 130809 - timestamp: 1735363020604 + timestamp: 1736140643485 - kind: conda name: mdurl version: 0.1.2 @@ -7139,37 +7155,37 @@ packages: timestamp: 1733255681319 - kind: conda name: mistune - version: 3.0.2 - build: pyhd8ed1ab_1 - build_number: 1 + version: 3.1.0 + build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/mistune-3.0.2-pyhd8ed1ab_1.conda - sha256: 0a9faaf1692b74f321cedbd37a44f108a1ec3f5d9638bc5bbf860cb3b6ff6db4 - md5: c46df05cae629e55426773ac1f85d68f + url: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.0-pyhd8ed1ab_0.conda + sha256: d932404dc610464130db5f36f59cd29947a687d9708daaad369d0020707de41a + md5: d10024c163a52eeecbb166fdeaef8b12 depends: - python >=3.9 + - typing_extensions license: BSD-3-Clause license_family: BSD - size: 65901 - timestamp: 1733258822603 + size: 68803 + timestamp: 1735686983426 - kind: conda name: mojo-jupyter - version: 25.1.0.dev2024122805 + version: 25.1.0.dev2025010605 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122805-release.conda - sha256: cdfcbb3354be4888b5b86eab0b3ee26c1fdaf9df9e9421e2fe60ab18cd053402 - md5: 6606e99ea0f956a5f786bc5a376c4fa2 + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025010605-release.conda + sha256: 5d25a6cbeb7e23d0e751085fd4a8728224f4fb46667007046322109437fde8cc + md5: 0d7c538d4488f3d729c380af437148e3 depends: - - max-core ==25.1.0.dev2024122805 release + - max-core ==25.1.0.dev2025010605 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22932 - timestamp: 1735363020605 + size: 22938 + timestamp: 1736140643486 - kind: conda name: multidict version: 6.1.0 @@ -7316,39 +7332,39 @@ packages: timestamp: 1734628936013 - kind: conda name: nbconvert-core - version: 7.16.4 - build: pyhff2d567_2 - build_number: 2 + version: 7.16.5 + build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.4-pyhff2d567_2.conda - sha256: 03a1303ce135a8214b450e751d93c9048f55edb37f3f9f06c5e9d78ba3ef2a89 - md5: 0457fdf55c88e52e0e7b63691eafcc48 + url: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.5-pyhd8ed1ab_0.conda + sha256: b68320693e2864d3d246ce6e92c3e7313397ee26d21fcd3c21ebcaccb741aed5 + md5: 4b55bdb10ff17f070b31b2ab52b189d0 depends: - beautifulsoup4 - - bleach + - bleach !=5.0.0 - defusedxml - entrypoints >=0.2.2 + - importlib-metadata >=3.6 - jinja2 >=3.0 - jupyter_core >=4.7 - jupyterlab_pygments - markupsafe >=2.0 - mistune >=2.0.3,<4 - nbclient >=0.5.0 - - nbformat >=5.1 + - nbformat >=5.7 - packaging - pandocfilters >=1.4.1 - pygments >=2.4.1 - - python >=3.8 - - tinycss2 - - traitlets >=5.0 + - python >=3.9 + - tinycss2 >=1.1.0,<1.5 + - traitlets >=5.1 constrains: - - nbconvert =7.16.4=*_2 + - nbconvert =7.16.5=*_0 - pandoc >=2.9.2,<4.0.0 license: BSD-3-Clause license_family: BSD - size: 188505 - timestamp: 1733405603619 + size: 189317 + timestamp: 1735858344122 - kind: conda name: nbformat version: 5.10.4 @@ -7570,49 +7586,52 @@ packages: - kind: conda name: openssl version: 3.4.0 - build: h39f12f2_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.0-h39f12f2_0.conda - sha256: bd1d58ced46e75efa3b842c61642fd12272c69e9fe4d7261078bc082153a1d53 - md5: df307bbc703324722df0293c9ca2e418 + build: h7b32b05_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.0-h7b32b05_1.conda + sha256: f62f6bca4a33ca5109b6d571b052a394d836956d21b25b7ffd03376abf7a481f + md5: 4ce6875f75469b2757a65e10a5d05e31 depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 - ca-certificates + - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 2935176 - timestamp: 1731377561525 + size: 2937158 + timestamp: 1736086387286 - kind: conda name: openssl version: 3.4.0 - build: h86ecc28_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.0-h86ecc28_0.conda - sha256: 64dbbdd6384fa56338124783197f7ad9048c989a02264bcd2e07355e3570f113 - md5: b2f202b5bddafac824eb610b65dde98f + build: h81ee809_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.0-h81ee809_1.conda + sha256: 97772762abc70b3a537683ca9fc3ff3d6099eb64e4aba3b9c99e6fce48422d21 + md5: 22f971393637480bda8c679f374d8861 depends: + - __osx >=11.0 - ca-certificates - - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 3474825 - timestamp: 1731379200886 + size: 2936415 + timestamp: 1736086108693 - kind: conda name: openssl version: 3.4.0 - build: hb9d3cd8_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.0-hb9d3cd8_0.conda - sha256: 814b9dff1847b132c676ee6cc1a8cb2d427320779b93e1b6d76552275c128705 - md5: 23cc74f77eb99315c0360ec3533147a9 + build: hd08dc88_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.0-hd08dc88_1.conda + sha256: 60d34454b861501d7355f25a7b39fdb5de8d56fca49b5bcbe8b8142b7d82dce4 + md5: e21c4767e783a58c373fdb99de6211bf depends: - - __glibc >=2.17,<3.0.a0 - ca-certificates - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 2947466 - timestamp: 1731377666602 + size: 3469279 + timestamp: 1736088141230 - kind: conda name: opentelemetry-api version: 1.29.0 @@ -7744,16 +7763,16 @@ packages: - kind: conda name: orc version: 2.0.3 - build: h3c55218_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/orc-2.0.3-h3c55218_1.conda - sha256: 154b26bc4d586de33765a155c9b79ebd7f5bb36c2bbf4b8854e1631bca8d21af - md5: 0a51a3cf028b845c46ec0d1ea2d18629 + build: h0ff2369_2 + build_number: 2 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/orc-2.0.3-h0ff2369_2.conda + sha256: cca330695f3bdb8c0e46350c29cd4af3345865544e36f1d7c9ba9190ad22f5f4 + md5: 24b1897c0d24afbb70704ba998793b78 depends: - - libgcc >=13 - - libprotobuf >=5.28.2,<5.28.3.0a0 - - libstdcxx >=13 + - __osx >=11.0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 - libzlib >=1.3.1,<2.0a0 - lz4-c >=1.10.0,<1.11.0a0 - snappy >=1.2.1,<1.3.0a0 @@ -7761,21 +7780,21 @@ packages: - zstd >=1.5.6,<1.6.0a0 license: Apache-2.0 license_family: Apache - size: 1165179 - timestamp: 1733509923825 + size: 438520 + timestamp: 1735630624140 - kind: conda name: orc version: 2.0.3 - build: h97ab989_1 - build_number: 1 + build: h12ee42a_2 + build_number: 2 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/orc-2.0.3-h97ab989_1.conda - sha256: 9de7e2746fde57c9b7f08ee87142014f6bb9b2d3a506839ea3e98baa99711576 - md5: 2f46eae652623114e112df13fae311cf + url: https://conda.anaconda.org/conda-forge/linux-64/orc-2.0.3-h12ee42a_2.conda + sha256: dff5cc8023905782c86b3459055f26d4b97890e403b0698477c9fed15d8669cc + md5: 4f6f9f3f80354ad185e276c120eac3f0 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - - libprotobuf >=5.28.2,<5.28.3.0a0 + - libprotobuf >=5.28.3,<5.28.4.0a0 - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - lz4-c >=1.10.0,<1.11.0a0 @@ -7784,21 +7803,21 @@ packages: - zstd >=1.5.6,<1.6.0a0 license: Apache-2.0 license_family: Apache - size: 1189462 - timestamp: 1733509801323 + size: 1188881 + timestamp: 1735630209320 - kind: conda name: orc version: 2.0.3 - build: hbcee414_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/orc-2.0.3-hbcee414_1.conda - sha256: e5e72438a3cd967ebc774070e8c49500d2d6d4175f349400b327fee75d3bfc05 - md5: e808cf7819eaa1735c8790d7f9f482c7 + build: hdd485aa_2 + build_number: 2 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/orc-2.0.3-hdd485aa_2.conda + sha256: b6c67542352a86cdf143c3066d5cda855b74454a156eedcd8958b494c6a32a83 + md5: d19f01b42e5d6a2908b65df435aff42f depends: - - __osx >=11.0 - - libcxx >=18 - - libprotobuf >=5.28.2,<5.28.3.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - lz4-c >=1.10.0,<1.11.0a0 - snappy >=1.2.1,<1.3.0a0 @@ -7806,8 +7825,8 @@ packages: - zstd >=1.5.6,<1.6.0a0 license: Apache-2.0 license_family: Apache - size: 437391 - timestamp: 1733510118673 + size: 1167714 + timestamp: 1735630248837 - kind: conda name: overrides version: 7.7.0 @@ -7990,78 +8009,78 @@ packages: timestamp: 1733327448200 - kind: conda name: pillow - version: 11.0.0 - build: py312h5ab5af3_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/pillow-11.0.0-py312h5ab5af3_0.conda - sha256: 3cf43a5eb1f67f3a5f3ef1ec3a685f8767019cce24dbe46c4b76fee8a54fbacf - md5: 1c4bdfe659cfdedd372685ce2494e97b + version: 11.1.0 + build: py312h50aef2c_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-11.1.0-py312h50aef2c_0.conda + sha256: b29b7c915053e06a7a5b4118760202c572c9c35d23bd6ce8e73270b6a50e50ee + md5: 94d6ba8cd468668a9fb04193b0f4b36e depends: + - __osx >=11.0 - freetype >=2.12.1,<3.0a0 - lcms2 >=2.16,<3.0a0 - - libgcc >=13 - libjpeg-turbo >=3.0.0,<4.0a0 - libtiff >=4.7.0,<4.8.0a0 - - libwebp-base >=1.4.0,<2.0a0 + - libwebp-base >=1.5.0,<2.0a0 - libxcb >=1.17.0,<2.0a0 - libzlib >=1.3.1,<2.0a0 - - openjpeg >=2.5.2,<3.0a0 + - openjpeg >=2.5.3,<3.0a0 - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 - tk >=8.6.13,<8.7.0a0 license: HPND - size: 41756471 - timestamp: 1729068045876 + size: 42852329 + timestamp: 1735930118976 - kind: conda name: pillow - version: 11.0.0 - build: py312h7b63e92_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/pillow-11.0.0-py312h7b63e92_0.conda - sha256: 13a464bea02c0df0199c20ef6bad24a6bc336aaf55bf8d6a133d0fe664463224 - md5: 385f46a4df6f97892503a841121a9acf + version: 11.1.0 + build: py312h719f0cf_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/pillow-11.1.0-py312h719f0cf_0.conda + sha256: 7559556ffc44bda777f85c2e5acd6b5756fa5822c0271b329b7b9a3c6bb20349 + md5: 77e0ec0a6fc847d317f204aa15b59f6b depends: - - __glibc >=2.17,<3.0.a0 - freetype >=2.12.1,<3.0a0 - lcms2 >=2.16,<3.0a0 - libgcc >=13 - libjpeg-turbo >=3.0.0,<4.0a0 - libtiff >=4.7.0,<4.8.0a0 - - libwebp-base >=1.4.0,<2.0a0 + - libwebp-base >=1.5.0,<2.0a0 - libxcb >=1.17.0,<2.0a0 - libzlib >=1.3.1,<2.0a0 - - openjpeg >=2.5.2,<3.0a0 + - openjpeg >=2.5.3,<3.0a0 - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 - tk >=8.6.13,<8.7.0a0 license: HPND - size: 41948418 - timestamp: 1729065846594 + size: 41362848 + timestamp: 1735932311857 - kind: conda name: pillow - version: 11.0.0 - build: py312haf37ca6_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-11.0.0-py312haf37ca6_0.conda - sha256: 727b4c3faecdb6f6809cf20c5f32d2df4af34e0d5b9146b7588383bcba7990e8 - md5: dc9b51fbd2b6f7fea9b5123458864dbb + version: 11.1.0 + build: py312h80c1187_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/pillow-11.1.0-py312h80c1187_0.conda + sha256: 5c347962202b55ae4d8a463e0555c5c6ca33396266a08284bf1384399894e541 + md5: d3894405f05b2c0f351d5de3ae26fa9c depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 - freetype >=2.12.1,<3.0a0 - lcms2 >=2.16,<3.0a0 + - libgcc >=13 - libjpeg-turbo >=3.0.0,<4.0a0 - libtiff >=4.7.0,<4.8.0a0 - - libwebp-base >=1.4.0,<2.0a0 + - libwebp-base >=1.5.0,<2.0a0 - libxcb >=1.17.0,<2.0a0 - libzlib >=1.3.1,<2.0a0 - - openjpeg >=2.5.2,<3.0a0 + - openjpeg >=2.5.3,<3.0a0 - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 - tk >=8.6.13,<8.7.0a0 license: HPND - size: 41737424 - timestamp: 1729065920347 + size: 42749785 + timestamp: 1735929845390 - kind: conda name: pip version: 24.3.1 @@ -8198,12 +8217,12 @@ packages: timestamp: 1733392308901 - kind: conda name: protobuf - version: 5.28.2 + version: 5.28.3 build: py312h2ec8cdc_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/protobuf-5.28.2-py312h2ec8cdc_0.conda - sha256: 4884f8161602f0148ebbc1af8d3176cec80b96c83243f68aafd651986b573817 - md5: 586bead4a9dfa46faf88deb7d3a742bb + url: https://conda.anaconda.org/conda-forge/linux-64/protobuf-5.28.3-py312h2ec8cdc_0.conda + sha256: acb2e0ee948e3941f8ed191cb77f654e06538638aed8ccd71cbc78a15242ebbb + md5: 9d7e427d159c1b2d516cc047ff177c48 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -8211,19 +8230,19 @@ packages: - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 constrains: - - libprotobuf 5.28.2 + - libprotobuf 5.28.3 license: BSD-3-Clause license_family: BSD - size: 464548 - timestamp: 1728669645013 + size: 464794 + timestamp: 1731366525051 - kind: conda name: protobuf - version: 5.28.2 + version: 5.28.3 build: py312h6f74592_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/protobuf-5.28.2-py312h6f74592_0.conda - sha256: f874ffd38b9ae2b810e9d2e43fd8d3b778cdeaf7dea4a3e6ee4adeafe2d936cf - md5: 4b9b22bd7c53d938b207f9d0f79db183 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/protobuf-5.28.3-py312h6f74592_0.conda + sha256: 9c575d5035c7ecb114ab9e17906c0a54087d9598dd6a2104c02fe33f0a29dd46 + md5: 06513608c94fb1c1b17136ace77063a9 depends: - libgcc >=13 - libstdcxx >=13 @@ -8231,31 +8250,31 @@ packages: - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 constrains: - - libprotobuf 5.28.2 + - libprotobuf 5.28.3 license: BSD-3-Clause license_family: BSD - size: 472764 - timestamp: 1728669483611 + size: 473242 + timestamp: 1731366577844 - kind: conda name: protobuf - version: 5.28.2 - build: py312hf02c72a_0 + version: 5.28.3 + build: py312hd8f9ff3_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/protobuf-5.28.2-py312hf02c72a_0.conda - sha256: dbcec117510ced5c12097e3eb06ebbf4512dc255733a9ace33c4249fb7e6a364 - md5: 6fda46c82abd0a080ca33de7d16ca877 + url: https://conda.anaconda.org/conda-forge/osx-arm64/protobuf-5.28.3-py312hd8f9ff3_0.conda + sha256: 9d572a97419bdace14d7c7cc8cc8c4bf2dcb22b56965dac87a27fbdb5061b926 + md5: 5afbe52a59f04dd1fe566d0d17590d7e depends: - __osx >=11.0 - - libcxx >=17 + - libcxx >=18 - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 constrains: - - libprotobuf 5.28.2 + - libprotobuf 5.28.3 license: BSD-3-Clause license_family: BSD - size: 447369 - timestamp: 1728669902591 + size: 448803 + timestamp: 1731367010746 - kind: conda name: psutil version: 6.1.1 @@ -8611,21 +8630,21 @@ packages: timestamp: 1734571986644 - kind: conda name: pydantic-settings - version: 2.7.0 + version: 2.7.1 build: pyh3cfb1c2_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.7.0-pyh3cfb1c2_0.conda - sha256: dd1ac7c8b6a189c8aa18f6c7df019d8f6df495300a259e3fbebdb542fc955c3b - md5: d9f19a7c4199249fa229891b573b6f9b + url: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.7.1-pyh3cfb1c2_0.conda + sha256: 082fb1ec29917d2c9ed6a862cb8eb9beb88c208ea62c9fef1aeb5f4f3e0e0b06 + md5: d71d76b62bed332b037d7adfc0f3989a depends: - pydantic >=2.7.0 - python >=3.9 - python-dotenv >=0.21.0 license: MIT license_family: MIT - size: 31426 - timestamp: 1734127929720 + size: 31822 + timestamp: 1735650532951 - kind: conda name: pygments version: 2.18.0 @@ -9171,48 +9190,48 @@ packages: - kind: conda name: re2 version: 2024.07.02 - build: h2d3a13d_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/re2-2024.07.02-h2d3a13d_1.conda - sha256: 55e7be480bfb979fa8595a16d7f2adea3a5ac9a77b2e97cd0f7ac40e989edb6c - md5: 83f4e47229834c895a92c18383e1cd9d + build: h6589ca4_2 + build_number: 2 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/re2-2024.07.02-h6589ca4_2.conda + sha256: 4d3799c05f8f662922a0acd129d119774760a3281b883603678e128d1cb307fb + md5: 7a8b4ad8c58a3408ca89d78788c78178 depends: - - libre2-11 2024.07.02 h18dbdb1_1 + - libre2-11 2024.07.02 h07bc746_2 license: BSD-3-Clause license_family: BSD - size: 26747 - timestamp: 1728778986331 + size: 26861 + timestamp: 1735541088455 - kind: conda name: re2 version: 2024.07.02 - build: h77b4e00_1 - build_number: 1 + build: h9925aae_2 + build_number: 2 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/re2-2024.07.02-h77b4e00_1.conda - sha256: c1721cb80f7201652fc9801f49c214c88aee835d957f2376e301bd40a8415742 - md5: 01093ff37c1b5e6bf9f17c0116747d11 + url: https://conda.anaconda.org/conda-forge/linux-64/re2-2024.07.02-h9925aae_2.conda + sha256: d213c44958d49ce7e0d4d5b81afec23640cce5016685dbb2d23571a99caa4474 + md5: e84ddf12bde691e8ec894b00ea829ddf depends: - - libre2-11 2024.07.02 hbbce691_1 + - libre2-11 2024.07.02 hbbce691_2 license: BSD-3-Clause license_family: BSD - size: 26665 - timestamp: 1728778975855 + size: 26786 + timestamp: 1735541074034 - kind: conda name: re2 version: 2024.07.02 - build: hcd0e937_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/re2-2024.07.02-hcd0e937_1.conda - sha256: eebddde6cb10b146507810b701ef6df122d5309cd5151a39d0828aa44dc53725 - md5: 19e29f2ccc9168eb0a39dc40c04c0e21 + build: haa97905_2 + build_number: 2 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/re2-2024.07.02-haa97905_2.conda + sha256: 040848655df9119bae5a549fb5c8956a5537120859416c1d9d0712b7bac9f12e + md5: 1bf0135339b4a7419a198a795d2d4be0 depends: - - libre2-11 2024.07.02 h2348fd5_1 + - libre2-11 2024.07.02 h18dbdb1_2 license: BSD-3-Clause license_family: BSD - size: 26860 - timestamp: 1728779123653 + size: 26830 + timestamp: 1735540999398 - kind: conda name: readline version: '8.2' @@ -9510,12 +9529,12 @@ packages: timestamp: 1734415467047 - kind: conda name: safetensors - version: 0.4.5 + version: 0.5.0 build: py312h12e396e_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/safetensors-0.4.5-py312h12e396e_0.conda - sha256: e44515f875c10efb5e041efcb250dfd18f2cb66ec3f268237549ead6284c6922 - md5: 3b87a00bcaab069172d6cef8124b7142 + url: https://conda.anaconda.org/conda-forge/linux-64/safetensors-0.5.0-py312h12e396e_0.conda + sha256: f9d0a4fbfbd2bcded116b81afd69d00aa5d5bac0d431dd47737cec1b1d24c2e2 + md5: 4b33e7c3e9bbc3936e08150fc9e17708 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -9525,16 +9544,16 @@ packages: - __glibc >=2.17 license: Apache-2.0 license_family: APACHE - size: 402547 - timestamp: 1725632183154 + size: 424699 + timestamp: 1735917812729 - kind: conda name: safetensors - version: 0.4.5 + version: 0.5.0 build: py312h8cbf658_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/safetensors-0.4.5-py312h8cbf658_0.conda - sha256: e83ebeaba4a07bbe4a1d6c7eef0b4f7ae19901ef365bca043808d16e4c8faad8 - md5: 82ef253c37308b082a478fb92924cad6 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/safetensors-0.5.0-py312h8cbf658_0.conda + sha256: aee581ce5c744f81ac4848b1810a88a750041ef91da646234f75092a8b4e06d1 + md5: 9c317f54bd3c95a830e98b7baee11ea9 depends: - libgcc >=13 - python >=3.12,<3.13.0a0 @@ -9544,16 +9563,16 @@ packages: - __glibc >=2.17 license: Apache-2.0 license_family: APACHE - size: 400284 - timestamp: 1725632278147 + size: 408792 + timestamp: 1735917879258 - kind: conda name: safetensors - version: 0.4.5 - build: py312he431725_0 + version: 0.5.0 + build: py312hcd83bfe_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/safetensors-0.4.5-py312he431725_0.conda - sha256: 93a085d0d64237db7f4ff395c446f268c575dc2c324d8e3e5c5d7d836896295e - md5: ccb978cf1e3151c25a44c4ae65c1f20e + url: https://conda.anaconda.org/conda-forge/osx-arm64/safetensors-0.5.0-py312hcd83bfe_0.conda + sha256: 8992f78362793a465c3009be2fd80582c93e2151bc17d07ebd39ce7af757358a + md5: acbbbac2271653f4914cef842a84190f depends: - __osx >=11.0 - python >=3.12,<3.13.0a0 @@ -9563,8 +9582,8 @@ packages: - __osx >=11.0 license: Apache-2.0 license_family: APACHE - size: 353606 - timestamp: 1725632294079 + size: 377533 + timestamp: 1735918206452 - kind: conda name: send2trash version: 1.8.3 @@ -9742,6 +9761,7 @@ packages: - python >=3.9 - starlette >=0.41.3 license: BSD-3-Clause + license_family: BSD size: 15324 timestamp: 1735126414893 - kind: conda @@ -10013,18 +10033,19 @@ packages: - kind: conda name: tqdm version: 4.67.1 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda - sha256: 5673b7104350a6998cb86cccf1d0058217d86950e8d6c927d8530606028edb1d - md5: 4085c9db273a148e149c03627350e22c + url: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + sha256: 11e2c85468ae9902d24a27137b6b39b4a78099806e551d390e394a8c34b48e40 + md5: 9efbfdc37242619130ea42b1cc4ed861 depends: - colorama - - python >=3.7 + - python >=3.9 license: MPL-2.0 or MIT - size: 89484 - timestamp: 1732497312317 + size: 89498 + timestamp: 1735661472632 - kind: conda name: traitlets version: 5.14.3 diff --git a/examples/operators/magic.lock b/examples/operators/magic.lock index 0f45d17189..321e2e76aa 100644 --- a/examples/operators/magic.lock +++ b/examples/operators/magic.lock @@ -12,7 +12,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.11-py312h178313f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.7.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.8.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.3.0-pyh71513ae_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-hb921021_15.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.1-h1a47875_3.conda @@ -39,7 +39,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2024.12.14-hbcca054_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.12.14-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py312h06ac9bb_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda @@ -76,11 +76,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.16-hb7c19ff_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_h5888daf_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-h44a453e_6_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-hcb10f89_6_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-hcb10f89_6_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-h3ee7192_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-hd595efa_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-hcb10f89_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-hcb10f89_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-h08228c5_7_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-26_linux64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hb9d3cd8_2.conda @@ -89,7 +89,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libcrc32c-1.1.2-h9c3ff4c_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.11.1-h332b0f4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.23-h4ddbbb0_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20191231-he28a2e2_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20240808-pl5321h7949ede_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libevent-2.1.12-hf998b51_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda @@ -99,9 +99,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hd5240d6_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h77fa898_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.32.0-h804f50b_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.32.0-h0121fbd_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.67.1-hc2c308b_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.33.0-h2b5623c_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.33.0-h0121fbd_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.67.1-h25350d4_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-hd590300_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-26_linux64_openblas.conda @@ -109,10 +109,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.28-pthreads_h94d23a6_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-h081d1f1_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-h081d1f1_7_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.44-hadc24fc_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.2-h5b01275_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.47.2-hee588c1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hf672d98_0.conda @@ -131,19 +131,19 @@ 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-25.1.0.dev2024122805-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024122805-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024122805-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025010605-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025010605-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025010605-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025010605-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-25.1.0.dev2024122805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025010605-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 - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.3-h5fbd93e_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.0-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.0-h7b32b05_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.29.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.29.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.29.0-pyhd8ed1ab_1.conda @@ -151,22 +151,22 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.29.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.29.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.50b0-pyh3cfb1c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/orc-2.0.3-h97ab989_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/orc-2.0.3-h12ee42a_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.3-py312hf9745cd_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-11.0.0-py312h7b63e92_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-11.1.0-py312h80c1187_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.1-py312h66e93f0_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/protobuf-5.28.2-py312h2ec8cdc_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/protobuf-5.28.3-py312h2ec8cdc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-18.1.0-py312h7900ff3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-18.1.0-py312h01725c0_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.4-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.27.2-py312h12e396e_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.7.0-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.7.1-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyinstrument-5.0.0-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda @@ -181,14 +181,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py312h66e93f0_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.0-py312hbf22597_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/re2-2024.07.02-h77b4e00_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/re2-2024.07.02-h9925aae_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda - 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.10-hb5b8611_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/safetensors-0.5.0-py312h12e396e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-h8bd8927_1.conda @@ -198,7 +198,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.21.0-py312h8360d73_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda @@ -229,7 +229,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.11-py312hcc812fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.7.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.8.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.3.0-pyh71513ae_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-h2cb9fb3_15.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.1-h740c5af_3.conda @@ -256,7 +256,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2024.12.14-hcefe29a_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.12.14-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cffi-1.17.1-py312hac81daf_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda @@ -294,11 +294,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lcms2-2.16-h922389a_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.0.0-h4de3ea5_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h5ad3122_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-h1b535d6_6_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h3b568fd_6_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h3b568fd_6_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h3ffb4b1_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h18dbdb1_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-hb7781cd_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h3b568fd_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h3b568fd_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h1e9d426_7_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-26_linuxaarch64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlicommon-1.1.0-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlidec-1.1.0-h86ecc28_2.conda @@ -307,7 +307,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcrc32c-1.1.2-h01db608_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcurl-8.11.1-h6702fde_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libdeflate-1.23-h5e3c512_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20191231-he28a2e2_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20240808-pl5321h976ea20_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libev-4.33-h31becfc_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libevent-2.1.12-h4ba1bb4_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.6.4-h5ad3122_0.conda @@ -317,9 +317,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-2.32.0-h3888205_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-storage-2.32.0-hb9b2b65_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgrpc-1.67.1-h36c5df4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-2.33.0-hccf9d24_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-storage-2.33.0-hb9b2b65_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgrpc-1.67.1-hf7ccdd3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libiconv-1.17-h31becfc_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libjpeg-turbo-3.0.0-h31becfc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-26_linuxaarch64_openblas.conda @@ -327,10 +327,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnghttp2-1.64.0-hc8609a4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.28-pthreads_h9d3fd7e_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-hfc78867_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-hfc78867_7_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.44-hc4a20ef_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.2-h029595c_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.3-h44a3b7b_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.20-h68df207_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.47.2-h5eb1b54_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libssh2-1.11.1-ha41c0db_0.conda @@ -349,19 +349,19 @@ 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-25.1.0.dev2024122805-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024122805-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024122805-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025010605-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025010605-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025010605-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025010605-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-25.1.0.dev2024122805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025010605-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 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openjpeg-2.5.3-h3f56577_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.0-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.0-hd08dc88_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.29.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.29.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.29.0-pyhd8ed1ab_1.conda @@ -369,22 +369,22 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.29.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.29.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.50b0-pyh3cfb1c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/orc-2.0.3-h3c55218_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/orc-2.0.3-hdd485aa_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pandas-2.2.3-py312ha2895bd_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pillow-11.0.0-py312h5ab5af3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pillow-11.1.0-py312h719f0cf_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.2.1-py312hb2c0f52_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/protobuf-5.28.2-py312h6f74592_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/protobuf-5.28.3-py312h6f74592_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pthread-stubs-0.4-h86ecc28_1002.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-18.1.0-py312h8025657_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-18.1.0-py312h66f7834_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.4-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pydantic-core-2.27.2-py312h8cbf658_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.7.0-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.7.1-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyinstrument-5.0.0-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda @@ -399,14 +399,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyyaml-6.0.2-py312hb2c0f52_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyzmq-26.2.0-py312h2427ae1_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/re2-2024.07.02-h2d3a13d_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/re2-2024.07.02-haa97905_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8fc344f_1.conda - 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.10-h5df210e_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/safetensors-0.5.0-py312h8cbf658_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-hd4fb6f5_1.conda @@ -416,7 +416,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.21.0-py312ha0d6ea1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py312h52516f5_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda @@ -446,7 +446,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.11-py312h998013c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.7.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.8.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.3.0-pyh71513ae_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-h8bc59a9_15.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.1-hc8a0bd2_3.conda @@ -473,7 +473,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2024.12.14-hf0a4a13_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.12.14-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.1-py312h0fad829_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda @@ -509,11 +509,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.16-ha0e7c42_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_hf9b8971_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-h4a2f8bd_6_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-hf07054f_6_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-hf07054f_6_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-h86344ea_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_h07bc746_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-h0ad35bc_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-hf07054f_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-hf07054f_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-h4239455_7_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-26_osxarm64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.1.0-hd74edd7_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.1.0-hd74edd7_2.conda @@ -523,26 +523,26 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.11.1-h73640d1_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.6-ha82da77_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.23-hec38601_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20191231-hc8eb9b7_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20240808-pl5321hafb1f1b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libev-4.33-h93a5062_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libevent-2.1.12-h2757513_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.4-h286801f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-2.32.0-h8d8be31_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-storage-2.32.0-h7081f7f_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgrpc-1.67.1-hc70892a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-2.33.0-hdbe95d5_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-storage-2.33.0-h7081f7f_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgrpc-1.67.1-h0a426d6_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.17-h0d3ecfb_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.0.0-hb547adb_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-26_osxarm64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.3-h39f12f2_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.64.0-h6d7220d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.28-openmp_hf332438_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-h636d7b7_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-h636d7b7_7_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.44-hc14010f_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.2-h8f0b736_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h2348fd5_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.3-h3bd63a1_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h07bc746_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.47.2-h3f77e49_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.1-h9cc3647_0.conda @@ -558,19 +558,19 @@ 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-25.1.0.dev2024122805-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024122805-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024122805-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025010605-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025010605-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025010605-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025010605-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-25.1.0.dev2024122805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025010605-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 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h7bae524_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openjpeg-2.5.3-h8a3d83b_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.0-h39f12f2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.0-h81ee809_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.29.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.29.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.29.0-pyhd8ed1ab_1.conda @@ -578,22 +578,22 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.29.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.29.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.50b0-pyh3cfb1c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/orc-2.0.3-hbcee414_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/orc-2.0.3-h0ff2369_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.3-py312hcd31e36_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-11.0.0-py312haf37ca6_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-11.1.0-py312h50aef2c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.1-py312hea69d52_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/protobuf-5.28.2-py312hf02c72a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/protobuf-5.28.3-py312hd8f9ff3_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pthread-stubs-0.4-hd74edd7_1002.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-18.1.0-py312h1f38498_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-18.1.0-py312hc40f475_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.4-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.27.2-py312hcd83bfe_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.7.0-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.7.1-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyinstrument-5.0.0-py312h0bf5046_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda @@ -608,13 +608,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py312h024a12e_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.0-py312hf8a1cbd_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/re2-2024.07.02-hcd0e937_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/re2-2024.07.02-h6589ca4_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h92ec313_1.conda - 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/safetensors-0.5.0-py312hcd83bfe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-h98b9ce2_1.conda @@ -624,7 +624,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.21.0-py312hf3e4074_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda @@ -819,13 +819,13 @@ packages: timestamp: 1733247158254 - kind: conda name: anyio - version: 4.7.0 + version: 4.8.0 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/anyio-4.7.0-pyhd8ed1ab_0.conda - sha256: 687537ee3af30f8784986bf40cac30e88138770b16e51ca9850c9c23c09aeba1 - md5: c88107912954a983c2caf25f7fd55158 + url: https://conda.anaconda.org/conda-forge/noarch/anyio-4.8.0-pyhd8ed1ab_0.conda + sha256: f1455d2953e3eb6d71bc49881c8558d8e01888469dfd21061dd48afb6183e836 + md5: 848d25bfbadf020ee4d4ba90e5668252 depends: - exceptiongroup >=1.0.2 - idna >=2.8 @@ -837,8 +837,8 @@ packages: - uvloop >=0.21 license: MIT license_family: MIT - size: 112730 - timestamp: 1733532678437 + size: 115305 + timestamp: 1736174485476 - kind: conda name: attrs version: 24.3.0 @@ -2139,20 +2139,19 @@ packages: timestamp: 1725561779888 - kind: conda name: charset-normalizer - version: 3.4.0 - build: pyhd8ed1ab_1 - build_number: 1 + version: 3.4.1 + build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_1.conda - sha256: 63022ee2c6a157a9f980250a66f54bdcdf5abee817348d0f9a74c2441a6fbf0e - md5: 6581a17bba6b948bb60130026404a9d6 + url: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda + sha256: 4e0ee91b97e5de3e74567bdacea27f0139709fceca4db8adffbe24deffccb09b + md5: e83a31202d1c0a000fce3e9cf3825875 depends: - python >=3.9 license: MIT license_family: MIT - size: 47533 - timestamp: 1733218182393 + size: 47438 + timestamp: 1735929811779 - kind: conda name: click version: 8.1.8 @@ -2859,6 +2858,7 @@ packages: - markupsafe >=2.0 - python >=3.9 license: BSD-3-Clause + license_family: BSD size: 112561 timestamp: 1734824044952 - kind: conda @@ -3110,32 +3110,31 @@ packages: - kind: conda name: libabseil version: '20240722.0' - build: cxx17_h5888daf_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_h5888daf_1.conda - sha256: 8f91429091183c26950f1e7ffa730e8632f0627ba35d2fccd71df31628c9b4e5 - md5: e1f604644fe8d78e22660e2fec6756bc + build: cxx17_h07bc746_4 + build_number: 4 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_h07bc746_4.conda + sha256: 05fa5e5e908962b9c5aba95f962e2ca81d9599c4715aebe5e4ddb72b309d1770 + md5: c2d95bd7aa8d564a9bd7eca5e571a5b3 depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libstdcxx >=13 + - __osx >=11.0 + - libcxx >=18 constrains: - libabseil-static =20240722.0=cxx17* - abseil-cpp =20240722.0 license: Apache-2.0 license_family: Apache - size: 1310521 - timestamp: 1727295454064 + size: 1178260 + timestamp: 1736008642885 - kind: conda name: libabseil version: '20240722.0' - build: cxx17_h5ad3122_1 - build_number: 1 + build: cxx17_h18dbdb1_4 + build_number: 4 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h5ad3122_1.conda - sha256: 590e47dce38031a8893e70491f3b71e214de7781cab53b6f017aa6f6841cb076 - md5: 6fe6b3694c4792a8e26755d3b06f0b80 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h18dbdb1_4.conda + sha256: bb6c5fb3b8de5f90735c5252b57efb3c268ee222c755569dac18065f05147670 + md5: 633b9fe454ffea2aaf29e191d946a83b depends: - libgcc >=13 - libstdcxx >=13 @@ -3144,37 +3143,39 @@ packages: - libabseil-static =20240722.0=cxx17* license: Apache-2.0 license_family: Apache - size: 1328502 - timestamp: 1727295490806 + size: 1334844 + timestamp: 1736008472455 - kind: conda name: libabseil version: '20240722.0' - build: cxx17_hf9b8971_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_hf9b8971_1.conda - sha256: 90bf08a75506dfcf28a70977da8ab050bcf594cd02abd3a9d84a22c9e8161724 - md5: 706da5e791c569a7b9814877098a6a0a + build: cxx17_hbbce691_4 + build_number: 4 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda + sha256: 143a586aa67d50622ef703de57b9d43f44945836d6568e0e7aa174bd8c45e0d4 + md5: 488f260ccda0afaf08acb286db439c2f depends: - - __osx >=11.0 - - libcxx >=17 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 constrains: - libabseil-static =20240722.0=cxx17* - abseil-cpp =20240722.0 license: Apache-2.0 license_family: Apache - size: 1179072 - timestamp: 1727295571173 + size: 1311599 + timestamp: 1736008414161 - kind: conda name: libarrow version: 18.1.0 - build: h1b535d6_6_cpu - build_number: 6 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-h1b535d6_6_cpu.conda - sha256: 087b579aebf351ca41c54214121d86a15a41c92051cbd432d6f3a3f58a8c31b0 - md5: 4c0ad68efba1113ac5833975c67b565d + build: h0ad35bc_7_cpu + build_number: 7 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-h0ad35bc_7_cpu.conda + sha256: 4fbdd8bb89d912bf03f10f9373a8d96a1cdd7a7851e107393418a3d2715bc27e + md5: 4ba2173203f44bbf03d19aaba6ed07d3 depends: + - __osx >=11.0 - aws-crt-cpp >=0.29.7,<0.29.8.0a0 - aws-sdk-cpp >=1.11.458,<1.11.459.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 @@ -3182,17 +3183,15 @@ packages: - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 - bzip2 >=1.0.8,<2.0a0 - - gflags >=2.2.2,<2.3.0a0 - glog >=0.7.1,<0.8.0a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - libbrotlidec >=1.1.0,<1.2.0a0 - libbrotlienc >=1.1.0,<1.2.0a0 - - libgcc >=13 - - libgoogle-cloud >=2.32.0,<2.33.0a0 - - libgoogle-cloud-storage >=2.32.0,<2.33.0a0 + - libcxx >=18 + - libgoogle-cloud >=2.33.0,<2.34.0a0 + - libgoogle-cloud-storage >=2.33.0,<2.34.0a0 - libre2-11 >=2024.7.2 - - libstdcxx >=13 - libutf8proc >=2.9.0,<2.10.0a0 - libzlib >=1.3.1,<2.0a0 - lz4-c >=1.10.0,<1.11.0a0 @@ -3201,24 +3200,23 @@ packages: - snappy >=1.2.1,<1.3.0a0 - zstd >=1.5.6,<1.6.0a0 constrains: - - parquet-cpp <0.0a0 - arrow-cpp <0.0a0 + - parquet-cpp <0.0a0 - apache-arrow-proc =*=cpu license: Apache-2.0 license_family: APACHE - size: 8040629 - timestamp: 1733810319239 + size: 5506699 + timestamp: 1735682962976 - kind: conda name: libarrow version: 18.1.0 - build: h44a453e_6_cpu - build_number: 6 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-h44a453e_6_cpu.conda - sha256: abf17e99b03356a9d6248e965826c1352ff01b00d3a62cc51393bb0744d72803 - md5: 2cf6d608d6e66506f69797d5c6944c35 + build: hb7781cd_7_cpu + build_number: 7 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-hb7781cd_7_cpu.conda + sha256: f6107506bd16788560b47a4d18c1457b4df30a49334364d32613fe3f53ba6cbb + md5: 98cf7127ca7b3854c5d1c8bef1ed6e53 depends: - - __glibc >=2.17,<3.0.a0 - aws-crt-cpp >=0.29.7,<0.29.8.0a0 - aws-sdk-cpp >=1.11.458,<1.11.459.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 @@ -3233,8 +3231,8 @@ packages: - libbrotlidec >=1.1.0,<1.2.0a0 - libbrotlienc >=1.1.0,<1.2.0a0 - libgcc >=13 - - libgoogle-cloud >=2.32.0,<2.33.0a0 - - libgoogle-cloud-storage >=2.32.0,<2.33.0a0 + - libgoogle-cloud >=2.33.0,<2.34.0a0 + - libgoogle-cloud-storage >=2.33.0,<2.34.0a0 - libre2-11 >=2024.7.2 - libstdcxx >=13 - libutf8proc >=2.9.0,<2.10.0a0 @@ -3245,24 +3243,24 @@ packages: - snappy >=1.2.1,<1.3.0a0 - zstd >=1.5.6,<1.6.0a0 constrains: - - parquet-cpp <0.0a0 - arrow-cpp <0.0a0 + - parquet-cpp <0.0a0 - apache-arrow-proc =*=cpu license: Apache-2.0 license_family: APACHE - size: 8786061 - timestamp: 1733810643966 + size: 8026714 + timestamp: 1735685336542 - kind: conda name: libarrow version: 18.1.0 - build: h4a2f8bd_6_cpu - build_number: 6 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-h4a2f8bd_6_cpu.conda - sha256: 9ed3ea1bc15005c0df187268ef91407afaa908cf82f36f5acbbf50ac24d7f806 - md5: 835cdd84195b84dc34d128bd5d3580b9 + build: hd595efa_7_cpu + build_number: 7 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-hd595efa_7_cpu.conda + sha256: 554ffa338264c1dc34d95adb7eb856d50a2f25e7fa303a1a51e4372301b7c96f + md5: 08d4aff5ee6dee9a1b9ab13fca927697 depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 - aws-crt-cpp >=0.29.7,<0.29.8.0a0 - aws-sdk-cpp >=1.11.458,<1.11.459.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 @@ -3270,15 +3268,17 @@ packages: - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 - bzip2 >=1.0.8,<2.0a0 + - gflags >=2.2.2,<2.3.0a0 - glog >=0.7.1,<0.8.0a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - libbrotlidec >=1.1.0,<1.2.0a0 - libbrotlienc >=1.1.0,<1.2.0a0 - - libcxx >=18 - - libgoogle-cloud >=2.32.0,<2.33.0a0 - - libgoogle-cloud-storage >=2.32.0,<2.33.0a0 + - libgcc >=13 + - libgoogle-cloud >=2.33.0,<2.34.0a0 + - libgoogle-cloud-storage >=2.33.0,<2.34.0a0 - libre2-11 >=2024.7.2 + - libstdcxx >=13 - libutf8proc >=2.9.0,<2.10.0a0 - libzlib >=1.3.1,<2.0a0 - lz4-c >=1.10.0,<1.11.0a0 @@ -3287,190 +3287,190 @@ packages: - snappy >=1.2.1,<1.3.0a0 - zstd >=1.5.6,<1.6.0a0 constrains: - - apache-arrow-proc =*=cpu - arrow-cpp <0.0a0 - parquet-cpp <0.0a0 + - apache-arrow-proc =*=cpu license: Apache-2.0 license_family: APACHE - size: 5494797 - timestamp: 1733808145854 + size: 8770256 + timestamp: 1735684696564 - kind: conda name: libarrow-acero version: 18.1.0 - build: h3b568fd_6_cpu - build_number: 6 + build: h3b568fd_7_cpu + build_number: 7 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h3b568fd_6_cpu.conda - sha256: fdb70e2499e59b730084ecd53008b361a6f6090b5fb49624feda06b7e84c7b8c - md5: c50907eefe2ae22d826e7cb2e4d712f5 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h3b568fd_7_cpu.conda + sha256: 42cbfc87096f745d565d814d65b7228c82d985f1898859d5e456016d73e81c82 + md5: 4c1d8c3feea249782148d3cd6a25392e depends: - - libarrow 18.1.0 h1b535d6_6_cpu + - libarrow 18.1.0 hb7781cd_7_cpu - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 license_family: APACHE - size: 578091 - timestamp: 1733810378092 + size: 578222 + timestamp: 1735685424850 - kind: conda name: libarrow-acero version: 18.1.0 - build: hcb10f89_6_cpu - build_number: 6 + build: hcb10f89_7_cpu + build_number: 7 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-hcb10f89_6_cpu.conda - sha256: a32fa1d71415afc02b5cf3cd4c0a6ec0af9e749308829cc65ff79689222ce479 - md5: 143f9288b64759a6427563f058c62f2b + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-hcb10f89_7_cpu.conda + sha256: 87ea5d6a84d922d73975dce8661fccf257e72e755175b12c30e1181a34e37987 + md5: 12d84228204c56fec6ed113288014d11 depends: - __glibc >=2.17,<3.0.a0 - - libarrow 18.1.0 h44a453e_6_cpu + - libarrow 18.1.0 hd595efa_7_cpu - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 license_family: APACHE - size: 611745 - timestamp: 1733810698469 + size: 612463 + timestamp: 1735684749868 - kind: conda name: libarrow-acero version: 18.1.0 - build: hf07054f_6_cpu - build_number: 6 + build: hf07054f_7_cpu + build_number: 7 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-hf07054f_6_cpu.conda - sha256: e1cae46409927470439ef9ae93ed09b3493d0579501ca9ebfa79ded212ee98d8 - md5: 97fc01254714e1572624baefdd7cc898 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-hf07054f_7_cpu.conda + sha256: 86e20cebfdb4f335e98265c1b88f5053bf3e3648768a317856295846bfdbf2b4 + md5: 3eaf71fe987de13061db795e03bb1a1c depends: - __osx >=11.0 - - libarrow 18.1.0 h4a2f8bd_6_cpu + - libarrow 18.1.0 h0ad35bc_7_cpu - libcxx >=18 license: Apache-2.0 license_family: APACHE - size: 483713 - timestamp: 1733808246880 + size: 485185 + timestamp: 1735683071232 - kind: conda name: libarrow-dataset version: 18.1.0 - build: h3b568fd_6_cpu - build_number: 6 + build: h3b568fd_7_cpu + build_number: 7 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h3b568fd_6_cpu.conda - sha256: 2a08f5a1017ff660c37ae0c24343a119cb2511c6edd69e23d0a5090a0967ea35 - md5: bb1548ad011c4f9107fcc4cc548473bf + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h3b568fd_7_cpu.conda + sha256: 13ba7d3d08015aa26569eca9e198e2f8b2a0cd2d9c420e41c78cc2e5d5170f26 + md5: f39f5d725c2ca94c2e7b19e2717fd4ab depends: - - libarrow 18.1.0 h1b535d6_6_cpu - - libarrow-acero 18.1.0 h3b568fd_6_cpu + - libarrow 18.1.0 hb7781cd_7_cpu + - libarrow-acero 18.1.0 h3b568fd_7_cpu - libgcc >=13 - - libparquet 18.1.0 hfc78867_6_cpu + - libparquet 18.1.0 hfc78867_7_cpu - libstdcxx >=13 license: Apache-2.0 license_family: APACHE - size: 559673 - timestamp: 1733810461646 + size: 560329 + timestamp: 1735685518922 - kind: conda name: libarrow-dataset version: 18.1.0 - build: hcb10f89_6_cpu - build_number: 6 + build: hcb10f89_7_cpu + build_number: 7 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-hcb10f89_6_cpu.conda - sha256: 74eeb178070002842d3ed721769399320e3a68a0843319eaf899a092a31def26 - md5: 20ca46a6bc714a6ab189d5b3f46e66d8 + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-hcb10f89_7_cpu.conda + sha256: 99c12511fba79c7947f78d676eae5857659084f687f375f68bc20bd4cddb0a0e + md5: 0a81eb63d7cd150f598c752e86388d57 depends: - __glibc >=2.17,<3.0.a0 - - libarrow 18.1.0 h44a453e_6_cpu - - libarrow-acero 18.1.0 hcb10f89_6_cpu + - libarrow 18.1.0 hd595efa_7_cpu + - libarrow-acero 18.1.0 hcb10f89_7_cpu - libgcc >=13 - - libparquet 18.1.0 h081d1f1_6_cpu + - libparquet 18.1.0 h081d1f1_7_cpu - libstdcxx >=13 license: Apache-2.0 license_family: APACHE - size: 586627 - timestamp: 1733810842604 + size: 587497 + timestamp: 1735684880531 - kind: conda name: libarrow-dataset version: 18.1.0 - build: hf07054f_6_cpu - build_number: 6 + build: hf07054f_7_cpu + build_number: 7 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-hf07054f_6_cpu.conda - sha256: 6eba942ce926419f74e6e0a7c3994a7d78ab6be47115e6bb70e02136554736be - md5: 0774276be6659aaa0007f1b0f6ee19b0 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-hf07054f_7_cpu.conda + sha256: 52c5c4e9cd5f2ac91dcebb6a920ab2536febcea116ff8767e5439329d7da820b + md5: 97a2d3606682d94f7d73112e9ad684ae depends: - __osx >=11.0 - - libarrow 18.1.0 h4a2f8bd_6_cpu - - libarrow-acero 18.1.0 hf07054f_6_cpu + - libarrow 18.1.0 h0ad35bc_7_cpu + - libarrow-acero 18.1.0 hf07054f_7_cpu - libcxx >=18 - - libparquet 18.1.0 h636d7b7_6_cpu + - libparquet 18.1.0 h636d7b7_7_cpu license: Apache-2.0 license_family: APACHE - size: 489948 - timestamp: 1733809328231 + size: 491237 + timestamp: 1735684688308 - kind: conda name: libarrow-substrait version: 18.1.0 - build: h3ee7192_6_cpu - build_number: 6 + build: h08228c5_7_cpu + build_number: 7 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-h3ee7192_6_cpu.conda - sha256: bda6728db019dd0c409b1996ad9ef6ab0bcee3a94dc66a8045e8c1049c566055 - md5: aa313b3168caf98d00b3753f5ba27650 + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-h08228c5_7_cpu.conda + sha256: 53ea53a06e137c2f81ebfdff3f978babb8b59e31f705a19b57056ec8754c1abf + md5: e128def53c133e8a23ac00cd4a479335 depends: - __glibc >=2.17,<3.0.a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.1.0 h44a453e_6_cpu - - libarrow-acero 18.1.0 hcb10f89_6_cpu - - libarrow-dataset 18.1.0 hcb10f89_6_cpu + - libarrow 18.1.0 hd595efa_7_cpu + - libarrow-acero 18.1.0 hcb10f89_7_cpu + - libarrow-dataset 18.1.0 hcb10f89_7_cpu - libgcc >=13 - - libprotobuf >=5.28.2,<5.28.3.0a0 + - libprotobuf >=5.28.3,<5.28.4.0a0 - libstdcxx >=13 license: Apache-2.0 license_family: APACHE - size: 519989 - timestamp: 1733810903274 + size: 521861 + timestamp: 1735684940668 - kind: conda name: libarrow-substrait version: 18.1.0 - build: h3ffb4b1_6_cpu - build_number: 6 + build: h1e9d426_7_cpu + build_number: 7 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h3ffb4b1_6_cpu.conda - sha256: 9f78c55c5d7122e588a6f226cbf7e909c479d66ed18edc633d68324323d386b9 - md5: 5db2e6832397b8ca70a6f7b00e0c3629 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h1e9d426_7_cpu.conda + sha256: 252e2a0d8c733f36b50499786480a05a59577d617f291868149c80534c1e8ffc + md5: 6da921d9e1c4e2ab2679eeea7cbd4c82 depends: - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.1.0 h1b535d6_6_cpu - - libarrow-acero 18.1.0 h3b568fd_6_cpu - - libarrow-dataset 18.1.0 h3b568fd_6_cpu + - libarrow 18.1.0 hb7781cd_7_cpu + - libarrow-acero 18.1.0 h3b568fd_7_cpu + - libarrow-dataset 18.1.0 h3b568fd_7_cpu - libgcc >=13 - - libprotobuf >=5.28.2,<5.28.3.0a0 + - libprotobuf >=5.28.3,<5.28.4.0a0 - libstdcxx >=13 license: Apache-2.0 license_family: APACHE - size: 515928 - timestamp: 1733810503359 + size: 516014 + timestamp: 1735685565929 - kind: conda name: libarrow-substrait version: 18.1.0 - build: h86344ea_6_cpu - build_number: 6 + build: h4239455_7_cpu + build_number: 7 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-h86344ea_6_cpu.conda - sha256: bafd9ca59ebb5ad34b77aff316ef7b59c5fb1eb8a7b6a15de8dcbdf3ce37556d - md5: c1c162f5bf569cff8bed6def705a899f + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-h4239455_7_cpu.conda + sha256: a45bbdd6932aed972d6c6ce30a7439aa8ec9d9b8ee5affb350d41e50abdc0127 + md5: 91927747173f65695e441346c7145e26 depends: - __osx >=11.0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.1.0 h4a2f8bd_6_cpu - - libarrow-acero 18.1.0 hf07054f_6_cpu - - libarrow-dataset 18.1.0 hf07054f_6_cpu + - libarrow 18.1.0 h0ad35bc_7_cpu + - libarrow-acero 18.1.0 hf07054f_7_cpu + - libarrow-dataset 18.1.0 hf07054f_7_cpu - libcxx >=18 - - libprotobuf >=5.28.2,<5.28.3.0a0 + - libprotobuf >=5.28.3,<5.28.4.0a0 license: Apache-2.0 license_family: APACHE - size: 451623 - timestamp: 1733809487176 + size: 452385 + timestamp: 1735684993831 - kind: conda name: libblas version: 3.9.0 @@ -3900,51 +3900,50 @@ packages: timestamp: 1734373971372 - kind: conda name: libedit - version: 3.1.20191231 - build: hc8eb9b7_2 - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20191231-hc8eb9b7_2.tar.bz2 - sha256: 3912636197933ecfe4692634119e8644904b41a58f30cad9d1fc02f6ba4d9fca - md5: 30e4362988a2623e9eb34337b83e01f9 + version: 3.1.20240808 + build: pl5321h7949ede_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20240808-pl5321h7949ede_0.conda + sha256: 4d0d69ddf9cc7d724a1ccf3a9852e44c8aea9825692582bac2c4e8d21ec95ccd + md5: 8247f80f3dc464d9322e85007e307fe8 depends: - - ncurses >=6.2,<7.0.0a0 + - ncurses + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - ncurses >=6.5,<7.0a0 license: BSD-2-Clause - license_family: BSD - size: 96607 - timestamp: 1597616630749 + size: 134657 + timestamp: 1736191912705 - kind: conda name: libedit - version: 3.1.20191231 - build: he28a2e2_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20191231-he28a2e2_2.tar.bz2 - sha256: a57d37c236d8f7c886e01656f4949d9dcca131d2a0728609c6f7fa338b65f1cf - md5: 4d331e44109e3f0e19b4cb8f9b82f3e1 + version: 3.1.20240808 + build: pl5321h976ea20_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20240808-pl5321h976ea20_0.conda + sha256: 031daea98cf278f858b7957ad5dc475f1b5673cd5e718850529401ced64cef2c + md5: 0be40129d3dd1a152fff29a85f0785d0 depends: - - libgcc-ng >=7.5.0 - - ncurses >=6.2,<7.0.0a0 + - ncurses + - libgcc >=13 + - ncurses >=6.5,<7.0a0 license: BSD-2-Clause - license_family: BSD - size: 123878 - timestamp: 1597616541093 + size: 148120 + timestamp: 1736192137151 - kind: conda name: libedit - version: 3.1.20191231 - build: he28a2e2_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20191231-he28a2e2_2.tar.bz2 - sha256: debc31fb2f07ba2b0363f90e455873670734082822926ba4a9556431ec0bf36d - md5: 29371161d77933a54fccf1bb66b96529 + version: 3.1.20240808 + build: pl5321hafb1f1b_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20240808-pl5321hafb1f1b_0.conda + sha256: fb934d7a03279ec8eae4bf1913ac9058fcf6fed35290d8ffa6e04157f396a3b1 + md5: af89aa84ffb5ee551ce0c137b951a3b5 depends: - - libgcc-ng >=7.5.0 - - ncurses >=6.2,<7.0.0a0 + - ncurses + - __osx >=11.0 + - ncurses >=6.5,<7.0a0 license: BSD-2-Clause - license_family: BSD - size: 134104 - timestamp: 1597617110769 + size: 107634 + timestamp: 1736192034117 - kind: conda name: libev version: '4.33' @@ -4324,214 +4323,223 @@ packages: timestamp: 1729089357313 - kind: conda name: libgoogle-cloud - version: 2.32.0 - build: h3888205_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-2.32.0-h3888205_0.conda - sha256: 36af2844ce8fafd477214d51117746144461132f76759a7d29963b4583b577be - md5: a40b948bf4eabcc1ce708c40ffd7c06d + version: 2.33.0 + build: h2b5623c_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.33.0-h2b5623c_1.conda + sha256: ae48ee93e2c226bf682f1e389c2fd51ae7bf77c2ce4b3aee069764f4be1c63f2 + md5: 61829a8dd5f4e2327e707572065bae41 depends: + - __glibc >=2.17,<3.0.a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libcurl >=8.10.1,<9.0a0 + - libcurl >=8.11.1,<9.0a0 - libgcc >=13 - libgrpc >=1.67.1,<1.68.0a0 - - libprotobuf >=5.28.2,<5.28.3.0a0 + - libprotobuf >=5.28.3,<5.28.4.0a0 - libstdcxx >=13 - openssl >=3.4.0,<4.0a0 constrains: - - libgoogle-cloud 2.32.0 *_0 + - libgoogle-cloud 2.33.0 *_1 license: Apache-2.0 license_family: Apache - size: 1248560 - timestamp: 1733512309504 + size: 1254656 + timestamp: 1735648569457 - kind: conda name: libgoogle-cloud - version: 2.32.0 - build: h804f50b_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.32.0-h804f50b_0.conda - sha256: 126856add750013390dff664a3c3cd0f6f0cbbc683b0025a7ce9d1618968bc70 - md5: 3d96df4d6b1c88455e05b94ce8a14a53 + version: 2.33.0 + build: hccf9d24_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-2.33.0-hccf9d24_1.conda + sha256: d3d4def86d880431928799ba90ca97e57c2f05677c03af8de2337502926c492c + md5: a2724014eb04f14bd71d35f45b062dd0 depends: - - __glibc >=2.17,<3.0.a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libcurl >=8.10.1,<9.0a0 + - libcurl >=8.11.1,<9.0a0 - libgcc >=13 - libgrpc >=1.67.1,<1.68.0a0 - - libprotobuf >=5.28.2,<5.28.3.0a0 + - libprotobuf >=5.28.3,<5.28.4.0a0 - libstdcxx >=13 - openssl >=3.4.0,<4.0a0 constrains: - - libgoogle-cloud 2.32.0 *_0 + - libgoogle-cloud 2.33.0 *_1 license: Apache-2.0 license_family: Apache - size: 1249557 - timestamp: 1733512191906 + size: 1253019 + timestamp: 1735649566849 - kind: conda name: libgoogle-cloud - version: 2.32.0 - build: h8d8be31_0 + version: 2.33.0 + build: hdbe95d5_1 + build_number: 1 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-2.32.0-h8d8be31_0.conda - sha256: 722e49dbdc4486105d9f5b79a7ba4f9064602fe20c4015e97684c898ab8d3386 - md5: d7ab9e0eb7d55eac4943913073de61d7 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-2.33.0-hdbe95d5_1.conda + sha256: ce95aca02451694a4154c7770b6addf4fb859abf17912de6ec947da8469a56ce + md5: 91de1fbab8610974c0094c266bc63435 depends: - __osx >=11.0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libcurl >=8.10.1,<9.0a0 + - libcurl >=8.11.1,<9.0a0 - libcxx >=18 - libgrpc >=1.67.1,<1.68.0a0 - - libprotobuf >=5.28.2,<5.28.3.0a0 + - libprotobuf >=5.28.3,<5.28.4.0a0 - openssl >=3.4.0,<4.0a0 constrains: - - libgoogle-cloud 2.32.0 *_0 + - libgoogle-cloud 2.33.0 *_1 license: Apache-2.0 license_family: Apache - size: 876210 - timestamp: 1733512539476 + size: 877594 + timestamp: 1735648230965 - kind: conda name: libgoogle-cloud-storage - version: 2.32.0 - build: h0121fbd_0 + version: 2.33.0 + build: h0121fbd_1 + build_number: 1 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.32.0-h0121fbd_0.conda - sha256: d1b53d17df38b52a4bc6d1fe6af0e611d6480ce10b0af570c84bd38c8aa83b91 - md5: 877a5ec0431a5af83bf0cd0522bfe661 + url: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.33.0-h0121fbd_1.conda + sha256: 41022523320ca8633a6c615710823e596efadb50f06d724e1a0c81e27994f257 + md5: b0cfb5044685a7a9fa43ae669124f0a0 depends: - __glibc >=2.17,<3.0.a0 - libabseil - libcrc32c >=1.1.2,<1.2.0a0 - libcurl - libgcc >=13 - - libgoogle-cloud 2.32.0 h804f50b_0 + - libgoogle-cloud 2.33.0 h2b5623c_1 - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - openssl license: Apache-2.0 license_family: Apache - size: 782108 - timestamp: 1733512329104 + size: 784357 + timestamp: 1735648759177 - kind: conda name: libgoogle-cloud-storage - version: 2.32.0 - build: h7081f7f_0 + version: 2.33.0 + build: h7081f7f_1 + build_number: 1 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-storage-2.32.0-h7081f7f_0.conda - sha256: 609df2cf376ba66460f40143f835fc567cae4458df80705587cd2efd59c09bf1 - md5: 28f5ab5cf95170dfacd05d2bb301e573 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-storage-2.33.0-h7081f7f_1.conda + sha256: c0524a22064bc17f5c037da09ba54cc9e767741ef645178e499750c44bec2531 + md5: af8e51382464d4cc2d0054977c40a732 depends: - __osx >=11.0 - libabseil - libcrc32c >=1.1.2,<1.2.0a0 - libcurl - libcxx >=18 - - libgoogle-cloud 2.32.0 h8d8be31_0 + - libgoogle-cloud 2.33.0 hdbe95d5_1 - libzlib >=1.3.1,<2.0a0 - openssl license: Apache-2.0 license_family: Apache - size: 526895 - timestamp: 1733513644846 + size: 526963 + timestamp: 1735649222088 - kind: conda name: libgoogle-cloud-storage - version: 2.32.0 - build: hb9b2b65_0 + version: 2.33.0 + build: hb9b2b65_1 + build_number: 1 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-storage-2.32.0-hb9b2b65_0.conda - sha256: e120e7b6c9c9d25baa8ae903106babdd3c969523ae25278a615ed9de4bd0fc35 - md5: 925ab0ca33baca4fcfee585cecb94169 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-storage-2.33.0-hb9b2b65_1.conda + sha256: 5eda1cbba68709b91b370b3792c9cfd7bec4ac4e2262f0887d12e1f000ae1191 + md5: 45df2267ff4d8ce532e8d300ce0b0829 depends: - libabseil - libcrc32c >=1.1.2,<1.2.0a0 - libcurl - libgcc >=13 - - libgoogle-cloud 2.32.0 h3888205_0 + - libgoogle-cloud 2.33.0 hccf9d24_1 - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - openssl license: Apache-2.0 license_family: Apache - size: 737964 - timestamp: 1733512457785 + size: 737518 + timestamp: 1735649773462 - kind: conda name: libgrpc version: 1.67.1 - build: h36c5df4_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libgrpc-1.67.1-h36c5df4_0.conda - sha256: 1f6673d9d866048c9cf28fd56e6874ffc7e2c53c47d7071cb367d5fc2dde16a7 - md5: b946137e362e98a55a77fdf0b20a7739 + build: h0a426d6_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libgrpc-1.67.1-h0a426d6_1.conda + sha256: 630edf63981818ff590367cb95fddbed0f5a390464d0952c90ec81de899e84a6 + md5: 8a3cba079d6ac985e7d73c76a678fbb4 depends: - - c-ares >=1.32.3,<2.0a0 + - __osx >=11.0 + - c-ares >=1.34.4,<2.0a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libgcc >=13 - - libprotobuf >=5.28.2,<5.28.3.0a0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 - libre2-11 >=2024.7.2 - - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - - openssl >=3.3.2,<4.0a0 + - openssl >=3.4.0,<4.0a0 - re2 constrains: - grpc-cpp =1.67.1 license: Apache-2.0 license_family: APACHE - size: 7131846 - timestamp: 1730236305327 + size: 5311706 + timestamp: 1735585137716 - kind: conda name: libgrpc version: 1.67.1 - build: hc2c308b_0 + build: h25350d4_1 + build_number: 1 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.67.1-hc2c308b_0.conda - sha256: 870550c1faf524e9a695262cd4c31441b18ad542f16893bd3c5dbc93106705f7 - md5: 4606a4647bfe857e3cfe21ca12ac3afb + url: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.67.1-h25350d4_1.conda + sha256: 014627485b3cf0ea18e04c0bab07be7fb98722a3aeeb58477acc7e1c3d2f911e + md5: 0c6497a760b99a926c7c12b74951a39c depends: - __glibc >=2.17,<3.0.a0 - - c-ares >=1.32.3,<2.0a0 + - c-ares >=1.34.4,<2.0a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - libgcc >=13 - - libprotobuf >=5.28.2,<5.28.3.0a0 + - libprotobuf >=5.28.3,<5.28.4.0a0 - libre2-11 >=2024.7.2 - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - - openssl >=3.3.2,<4.0a0 + - openssl >=3.4.0,<4.0a0 - re2 constrains: - grpc-cpp =1.67.1 license: Apache-2.0 license_family: APACHE - size: 7362336 - timestamp: 1730236333879 + size: 7792251 + timestamp: 1735584856826 - kind: conda name: libgrpc version: 1.67.1 - build: hc70892a_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libgrpc-1.67.1-hc70892a_0.conda - sha256: d2393fcd3c3584e5d58da4122f48bcf297567d2f6f14b3d1fcbd34fdd5040694 - md5: 624e27571fde34f8acc2afec840ac435 + build: hf7ccdd3_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libgrpc-1.67.1-hf7ccdd3_1.conda + sha256: 3fa173dc1d7456aac2b26937daae86a08432a31640e3d6569c62edc661fc9bbe + md5: 8fb41a425bebaeb3d0fa568503612e64 depends: - - __osx >=11.0 - - c-ares >=1.34.2,<2.0a0 + - c-ares >=1.34.4,<2.0a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libcxx >=17 - - libprotobuf >=5.28.2,<5.28.3.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 - libre2-11 >=2024.7.2 + - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - - openssl >=3.3.2,<4.0a0 + - openssl >=3.4.0,<4.0a0 - re2 constrains: - grpc-cpp =1.67.1 license: Apache-2.0 license_family: APACHE - size: 4882208 - timestamp: 1730236299095 + size: 7430006 + timestamp: 1735585769731 - kind: conda name: libiconv version: '1.17' @@ -4869,61 +4877,61 @@ packages: - kind: conda name: libparquet version: 18.1.0 - build: h081d1f1_6_cpu - build_number: 6 + build: h081d1f1_7_cpu + build_number: 7 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-h081d1f1_6_cpu.conda - sha256: c691a59f1ebb6cedbf827f49f6cf414e08b0eec911f589133e6a8321e8ac701c - md5: 68788df49ce7480187eb6387f15b2b67 + url: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-h081d1f1_7_cpu.conda + sha256: 55945b761130f60abdecf1551907ecfd05cb4a5958cf74d855b30c005ecb3592 + md5: b97013ef4e1dd2cf11594f06d5b5e83a depends: - __glibc >=2.17,<3.0.a0 - - libarrow 18.1.0 h44a453e_6_cpu + - libarrow 18.1.0 hd595efa_7_cpu - libgcc >=13 - libstdcxx >=13 - 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 + size: 1205598 + timestamp: 1735684849150 - kind: conda name: libparquet version: 18.1.0 - build: h636d7b7_6_cpu - build_number: 6 + build: h636d7b7_7_cpu + build_number: 7 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-h636d7b7_6_cpu.conda - sha256: 88c1e810bede65c54f1ebc51c14400f9e8cf0fc1f88a8c0a99210e2f5dfed582 - md5: 9b333c3a38e55f6c1b8733222e22f528 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-h636d7b7_7_cpu.conda + sha256: bf42e43542a90edd86ba5aa5fd4543671625f1bc35f62be32688f00e18bae990 + md5: 93de9ba66a20db32a2646d313794b3a8 depends: - __osx >=11.0 - - libarrow 18.1.0 h4a2f8bd_6_cpu + - libarrow 18.1.0 h0ad35bc_7_cpu - libcxx >=18 - 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 + size: 873251 + timestamp: 1735684582558 - kind: conda name: libparquet version: 18.1.0 - build: hfc78867_6_cpu - build_number: 6 + build: hfc78867_7_cpu + build_number: 7 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-hfc78867_6_cpu.conda - sha256: 38aab34c422519c530d0e9a3e0ffd1624db1c1e163983c46ae341e831b2eb6b5 - md5: 1ab6d4a9a982920b9dc5f2c700777b27 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-hfc78867_7_cpu.conda + sha256: 6dff9bbe731dc2cefe96bd9c7981d2cbef2b564a3152840a29c9b6a493ea50d9 + md5: 184bec7a9392ab6ba8134041e81971d6 depends: - - libarrow 18.1.0 h1b535d6_6_cpu + - libarrow 18.1.0 hb7781cd_7_cpu - libgcc >=13 - libstdcxx >=13 - 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 + size: 1117825 + timestamp: 1735685495511 - kind: conda name: libpng version: 1.6.44 @@ -4969,32 +4977,33 @@ packages: timestamp: 1726236639270 - kind: conda name: libprotobuf - version: 5.28.2 - build: h029595c_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.2-h029595c_0.conda - sha256: d8c7b6f851bfc53494d9b8e54d473c4f11ab26483a6e64df6f7967563df166b1 - md5: 538dbe0ad9f248e2e109abb9b6809ea5 + version: 5.28.3 + build: h3bd63a1_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.3-h3bd63a1_1.conda + sha256: f58a16b13ad53346903c833e266f83c3d770a43a432659b98710aed85ca885e7 + md5: bdbfea4cf45ae36652c6bbcc2e7ebe91 depends: + - __osx >=11.0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libgcc >=13 - - libstdcxx >=13 + - libcxx >=18 - libzlib >=1.3.1,<2.0a0 license: BSD-3-Clause license_family: BSD - size: 2802876 - timestamp: 1728564881988 + size: 2271580 + timestamp: 1735576361997 - kind: conda name: libprotobuf - version: 5.28.2 - build: h5b01275_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.2-h5b01275_0.conda - sha256: 5e8fd4aa00193c85602ce6101dd28fe31306dff85c9725048f6dc828dfa7c421 - md5: ab0bff36363bec94720275a681af8b83 + version: 5.28.3 + build: h44a3b7b_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.3-h44a3b7b_1.conda + sha256: ecb69f2b1668e784b41ba667493be846662d5ef702bef64fb2e013bb1364cdc4 + md5: 68f807f7cc13951652bbe048253fd405 depends: - - __glibc >=2.17,<3.0.a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - libgcc >=13 @@ -5002,75 +5011,77 @@ packages: - libzlib >=1.3.1,<2.0a0 license: BSD-3-Clause license_family: BSD - size: 2945348 - timestamp: 1728565355702 + size: 2788074 + timestamp: 1735576315676 - kind: conda name: libprotobuf - version: 5.28.2 - build: h8f0b736_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.2-h8f0b736_0.conda - sha256: f732a6fa918428e2d5ba61e78fe11bb44a002cc8f6bb74c94ee5b1297fefcfd8 - md5: d2cb5991f2fb8eb079c80084435e9ce6 + version: 5.28.3 + build: h6128344_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda + sha256: 51125ebb8b7152e4a4e69fd2398489c4ec8473195c27cde3cbdf1cb6d18c5493 + md5: d8703f1ffe5a06356f06467f1d0b9464 depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libcxx >=17 + - libgcc >=13 + - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 license: BSD-3-Clause license_family: BSD - size: 2374965 - timestamp: 1728565334796 + size: 2960815 + timestamp: 1735577210663 - kind: conda name: libre2-11 version: 2024.07.02 - build: h18dbdb1_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_1.conda - sha256: 96d4fdac28d5af38c38f90c22cb0aa9a90affae13ca8ba24bd1eb60b789df8ff - md5: f1800796b0efc4bbc5b001d845545111 + build: h07bc746_2 + build_number: 2 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h07bc746_2.conda + sha256: 112a73ad483353751d4c5d63648c69a4d6fcebf5e1b698a860a3f5124fc3db96 + md5: 6b1e3624d3488016ca4f1ca0c412efaa depends: + - __osx >=11.0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libgcc >=13 - - libstdcxx >=13 + - libcxx >=18 constrains: - re2 2024.07.02.* license: BSD-3-Clause license_family: BSD - size: 203516 - timestamp: 1728778974654 + size: 167155 + timestamp: 1735541067807 - kind: conda name: libre2-11 version: 2024.07.02 - build: h2348fd5_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h2348fd5_1.conda - sha256: 6facca42cfc85a05b33e484a8b0df7857cc092db34806946d022270098d8d20f - md5: 5a7065309a66097738be6a06fd04b7ef + build: h18dbdb1_2 + build_number: 2 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_2.conda + sha256: 862c20de0120f802e618dcb25913d00c5b82f91f4be60b2d46a774e851adc2f6 + md5: 9a7dbbaab49f76a6f36e5c9d98e323a7 depends: - - __osx >=11.0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libcxx >=17 + - libgcc >=13 + - libstdcxx >=13 constrains: - re2 2024.07.02.* license: BSD-3-Clause license_family: BSD - size: 165956 - timestamp: 1728779107218 + size: 204305 + timestamp: 1735540986919 - kind: conda name: libre2-11 version: 2024.07.02 - build: hbbce691_1 - build_number: 1 + build: hbbce691_2 + build_number: 2 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_1.conda - sha256: f8ad6a4f6d4fd54ebe3e5e712a01e663222fc57f49d16b6b8b10c30990dafb8f - md5: 2124de47357b7a516c0a3efd8f88c143 + url: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_2.conda + sha256: 4420f8362c71251892ba1eeb957c5e445e4e1596c0c651c28d0d8b415fe120c7 + md5: b2fede24428726dd867611664fb372e8 depends: - __glibc >=2.17,<3.0.a0 - libabseil * cxx17* @@ -5081,8 +5092,8 @@ packages: - re2 2024.07.02.* license: BSD-3-Clause license_family: BSD - size: 211096 - timestamp: 1728778964655 + size: 209793 + timestamp: 1735541054068 - kind: conda name: libsodium version: 1.0.20 @@ -5525,6 +5536,7 @@ packages: constrains: - libwebp 1.5.0 license: BSD-3-Clause + license_family: BSD size: 362623 timestamp: 1734779054659 - kind: conda @@ -5540,6 +5552,7 @@ packages: constrains: - libwebp 1.5.0 license: BSD-3-Clause + license_family: BSD size: 290013 timestamp: 1734777593617 - kind: conda @@ -5556,6 +5569,7 @@ packages: constrains: - libwebp 1.5.0 license: BSD-3-Clause + license_family: BSD size: 429973 timestamp: 1734777489810 - kind: conda @@ -5892,76 +5906,76 @@ packages: timestamp: 1733219945697 - kind: conda name: max - version: 25.1.0.dev2024122805 + version: 25.1.0.dev2025010605 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122805-release.conda - sha256: fe2812cf8bb718133a1ee6e2a720e0adb3a234443cd1bdb012ed3845fc100c7e - md5: d2ab5ff45c394ef59d4c89a35dbc0e20 - depends: - - max-core ==25.1.0.dev2024122805 release - - max-python >=25.1.0.dev2024122805,<26.0a0 - - mojo-jupyter ==25.1.0.dev2024122805 release - - mblack ==25.1.0.dev2024122805 release + url: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025010605-release.conda + sha256: f806f7b7519e01cd68fbae2c714d1c1a9e1e96f144e920ce51c47512f81a1db3 + md5: 1bae0e6863939e6792d7129bec77983c + depends: + - max-core ==25.1.0.dev2025010605 release + - max-python >=25.1.0.dev2025010605,<26.0a0 + - mojo-jupyter ==25.1.0.dev2025010605 release + - mblack ==25.1.0.dev2025010605 release license: LicenseRef-Modular-Proprietary - size: 9913 - timestamp: 1735363020600 + size: 9914 + timestamp: 1736140643481 - kind: conda name: max-core - version: 25.1.0.dev2024122805 + version: 25.1.0.dev2025010605 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024122805-release.conda - sha256: d0f6942e8fb4461129dd0b3b459e5d975fa392661fbf9ce002992044249c7df0 - md5: 99412132bd807caa43dba507054a2691 + url: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025010605-release.conda + sha256: 315ad791e417ed45fcee42fe7227428bca1d77427c10b81fb5a65583a5844279 + md5: c40747b8b9245abb69db013a14266b6c depends: - - mblack ==25.1.0.dev2024122805 release + - mblack ==25.1.0.dev2025010605 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 245436370 - timestamp: 1735363025528 + size: 244726382 + timestamp: 1736140669107 - kind: conda name: max-core - version: 25.1.0.dev2024122805 + version: 25.1.0.dev2025010605 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024122805-release.conda - sha256: 19aa7627330555204af1573e241f86ced1f34e5773fe2047f03d2df77d296de7 - md5: c83934dfd0b0e2285a2959be586f8e4b + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025010605-release.conda + sha256: dd574ac5ce9effc0f713ea63992a5a4aeaf8fa80f2c968a9c00c664703b70932 + md5: 65f814591335d2910a5e30d5f6968aff depends: - - mblack ==25.1.0.dev2024122805 release + - mblack ==25.1.0.dev2025010605 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 249341674 - timestamp: 1735363020598 + size: 248381825 + timestamp: 1736140643479 - kind: conda name: max-core - version: 25.1.0.dev2024122805 + version: 25.1.0.dev2025010605 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024122805-release.conda - sha256: d65a30747c6623a9a73d02e35d617cf2425fc151839f18badbef093a045c1bd5 - md5: d45b98ffbd949783e9c8ee20e28a6970 + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025010605-release.conda + sha256: ff28dea1ddf5adb0586a5d6a41fb6b6d0a0ee332eb4440cbaffa9b041de16db0 + md5: 1e134821c4eae4e6fa711c1cd2b8cc00 depends: - - mblack ==25.1.0.dev2024122805 release + - mblack ==25.1.0.dev2025010605 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 214123206 - timestamp: 1735365284895 + size: 213059614 + timestamp: 1736141300718 - kind: conda name: max-python - version: 25.1.0.dev2024122805 + version: 25.1.0.dev2025010605 build: 3.12release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024122805-3.12release.conda - sha256: 1666cdc4f1460979cb2bad7ddaa745256f137e03a32c8688a988f359bcc4a1b6 - md5: fda0864df873c814f836064daa86e4d6 + url: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025010605-3.12release.conda + sha256: 80e1b3a95eb37bd76396c470b8a17168fdd1b0a2e193d66981824760bd82e768 + md5: 28ecc247a48f0de9dee4f6fe6d1be095 depends: - - max-core ==25.1.0.dev2024122805 release + - max-core ==25.1.0.dev2025010605 release - python 3.12.* - fastapi - httpx @@ -5984,18 +5998,18 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 122818679 - timestamp: 1735363025537 + size: 122702106 + timestamp: 1736140669117 - kind: conda name: max-python - version: 25.1.0.dev2024122805 + version: 25.1.0.dev2025010605 build: 3.12release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024122805-3.12release.conda - sha256: 00bb77ee09d7ec7aa407452fd11a227980cc273e738fbec28fe2c7f8df0b8d21 - md5: 6e0f158c866d00b4dd04602211e184cd + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025010605-3.12release.conda + sha256: 90a8fa8b7b654e35adc36cf2309898d4a965b5b85f0c6ac912ec1b7439d247c2 + md5: fc56c27a4041f32ce7f03c94141e6fd9 depends: - - max-core ==25.1.0.dev2024122805 release + - max-core ==25.1.0.dev2025010605 release - python 3.12.* - fastapi - httpx @@ -6018,18 +6032,18 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 126488257 - timestamp: 1735363020609 + size: 126373708 + timestamp: 1736140643490 - kind: conda name: max-python - version: 25.1.0.dev2024122805 + version: 25.1.0.dev2025010605 build: 3.12release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024122805-3.12release.conda - sha256: 81c22f0a8d33e7d8091959a4bf837993246308712b22e384d0c853404ab45c15 - md5: 207d5360c0a7fcb6e8d7933e3a577a07 + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025010605-3.12release.conda + sha256: 6948694d15390b9baf752a38f17fa7c4e0712b3b71f893955037e65a84fb72c9 + md5: f7c5e210de943e91a2550a9a0ed51e59 depends: - - max-core ==25.1.0.dev2024122805 release + - max-core ==25.1.0.dev2025010605 release - python 3.12.* - fastapi - httpx @@ -6052,17 +6066,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 113429204 - timestamp: 1735365284899 + size: 113299681 + timestamp: 1736141300722 - kind: conda name: mblack - version: 25.1.0.dev2024122805 + version: 25.1.0.dev2025010605 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122805-release.conda - sha256: 46d7d50f46fc589cd4fd53c614020666b9ac4ea90d0d861bc2888ff8a8968fc7 - md5: e140a619b5afdf6730ee181c6ca0dd1d + url: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025010605-release.conda + sha256: 2166e3aa028121c737e9a7f3cde3711c8f87d83757045318467ee0d54da95fdc + md5: 90216ac95ad02c40a72aea621bb2d54e depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -6073,7 +6087,7 @@ packages: - python license: MIT size: 130809 - timestamp: 1735363020604 + timestamp: 1736140643485 - kind: conda name: mdurl version: 0.1.2 @@ -6092,21 +6106,21 @@ packages: timestamp: 1733255681319 - kind: conda name: mojo-jupyter - version: 25.1.0.dev2024122805 + version: 25.1.0.dev2025010605 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122805-release.conda - sha256: cdfcbb3354be4888b5b86eab0b3ee26c1fdaf9df9e9421e2fe60ab18cd053402 - md5: 6606e99ea0f956a5f786bc5a376c4fa2 + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025010605-release.conda + sha256: 5d25a6cbeb7e23d0e751085fd4a8728224f4fb46667007046322109437fde8cc + md5: 0d7c538d4488f3d729c380af437148e3 depends: - - max-core ==25.1.0.dev2024122805 release + - max-core ==25.1.0.dev2025010605 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22932 - timestamp: 1735363020605 + size: 22938 + timestamp: 1736140643486 - kind: conda name: multidict version: 6.1.0 @@ -6400,49 +6414,52 @@ packages: - kind: conda name: openssl version: 3.4.0 - build: h39f12f2_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.0-h39f12f2_0.conda - sha256: bd1d58ced46e75efa3b842c61642fd12272c69e9fe4d7261078bc082153a1d53 - md5: df307bbc703324722df0293c9ca2e418 + build: h7b32b05_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.0-h7b32b05_1.conda + sha256: f62f6bca4a33ca5109b6d571b052a394d836956d21b25b7ffd03376abf7a481f + md5: 4ce6875f75469b2757a65e10a5d05e31 depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 - ca-certificates + - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 2935176 - timestamp: 1731377561525 + size: 2937158 + timestamp: 1736086387286 - kind: conda name: openssl version: 3.4.0 - build: h86ecc28_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.0-h86ecc28_0.conda - sha256: 64dbbdd6384fa56338124783197f7ad9048c989a02264bcd2e07355e3570f113 - md5: b2f202b5bddafac824eb610b65dde98f + build: h81ee809_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.0-h81ee809_1.conda + sha256: 97772762abc70b3a537683ca9fc3ff3d6099eb64e4aba3b9c99e6fce48422d21 + md5: 22f971393637480bda8c679f374d8861 depends: + - __osx >=11.0 - ca-certificates - - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 3474825 - timestamp: 1731379200886 + size: 2936415 + timestamp: 1736086108693 - kind: conda name: openssl version: 3.4.0 - build: hb9d3cd8_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.0-hb9d3cd8_0.conda - sha256: 814b9dff1847b132c676ee6cc1a8cb2d427320779b93e1b6d76552275c128705 - md5: 23cc74f77eb99315c0360ec3533147a9 + build: hd08dc88_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.0-hd08dc88_1.conda + sha256: 60d34454b861501d7355f25a7b39fdb5de8d56fca49b5bcbe8b8142b7d82dce4 + md5: e21c4767e783a58c373fdb99de6211bf depends: - - __glibc >=2.17,<3.0.a0 - ca-certificates - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 2947466 - timestamp: 1731377666602 + size: 3469279 + timestamp: 1736088141230 - kind: conda name: opentelemetry-api version: 1.29.0 @@ -6574,16 +6591,16 @@ packages: - kind: conda name: orc version: 2.0.3 - build: h3c55218_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/orc-2.0.3-h3c55218_1.conda - sha256: 154b26bc4d586de33765a155c9b79ebd7f5bb36c2bbf4b8854e1631bca8d21af - md5: 0a51a3cf028b845c46ec0d1ea2d18629 + build: h0ff2369_2 + build_number: 2 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/orc-2.0.3-h0ff2369_2.conda + sha256: cca330695f3bdb8c0e46350c29cd4af3345865544e36f1d7c9ba9190ad22f5f4 + md5: 24b1897c0d24afbb70704ba998793b78 depends: - - libgcc >=13 - - libprotobuf >=5.28.2,<5.28.3.0a0 - - libstdcxx >=13 + - __osx >=11.0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 - libzlib >=1.3.1,<2.0a0 - lz4-c >=1.10.0,<1.11.0a0 - snappy >=1.2.1,<1.3.0a0 @@ -6591,21 +6608,21 @@ packages: - zstd >=1.5.6,<1.6.0a0 license: Apache-2.0 license_family: Apache - size: 1165179 - timestamp: 1733509923825 + size: 438520 + timestamp: 1735630624140 - kind: conda name: orc version: 2.0.3 - build: h97ab989_1 - build_number: 1 + build: h12ee42a_2 + build_number: 2 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/orc-2.0.3-h97ab989_1.conda - sha256: 9de7e2746fde57c9b7f08ee87142014f6bb9b2d3a506839ea3e98baa99711576 - md5: 2f46eae652623114e112df13fae311cf + url: https://conda.anaconda.org/conda-forge/linux-64/orc-2.0.3-h12ee42a_2.conda + sha256: dff5cc8023905782c86b3459055f26d4b97890e403b0698477c9fed15d8669cc + md5: 4f6f9f3f80354ad185e276c120eac3f0 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - - libprotobuf >=5.28.2,<5.28.3.0a0 + - libprotobuf >=5.28.3,<5.28.4.0a0 - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - lz4-c >=1.10.0,<1.11.0a0 @@ -6614,21 +6631,21 @@ packages: - zstd >=1.5.6,<1.6.0a0 license: Apache-2.0 license_family: Apache - size: 1189462 - timestamp: 1733509801323 + size: 1188881 + timestamp: 1735630209320 - kind: conda name: orc version: 2.0.3 - build: hbcee414_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/orc-2.0.3-hbcee414_1.conda - sha256: e5e72438a3cd967ebc774070e8c49500d2d6d4175f349400b327fee75d3bfc05 - md5: e808cf7819eaa1735c8790d7f9f482c7 + build: hdd485aa_2 + build_number: 2 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/orc-2.0.3-hdd485aa_2.conda + sha256: b6c67542352a86cdf143c3066d5cda855b74454a156eedcd8958b494c6a32a83 + md5: d19f01b42e5d6a2908b65df435aff42f depends: - - __osx >=11.0 - - libcxx >=18 - - libprotobuf >=5.28.2,<5.28.3.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - lz4-c >=1.10.0,<1.11.0a0 - snappy >=1.2.1,<1.3.0a0 @@ -6636,8 +6653,8 @@ packages: - zstd >=1.5.6,<1.6.0a0 license: Apache-2.0 license_family: Apache - size: 437391 - timestamp: 1733510118673 + size: 1167714 + timestamp: 1735630248837 - kind: conda name: packaging version: '24.2' @@ -6744,78 +6761,78 @@ packages: timestamp: 1733233471940 - kind: conda name: pillow - version: 11.0.0 - build: py312h5ab5af3_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/pillow-11.0.0-py312h5ab5af3_0.conda - sha256: 3cf43a5eb1f67f3a5f3ef1ec3a685f8767019cce24dbe46c4b76fee8a54fbacf - md5: 1c4bdfe659cfdedd372685ce2494e97b + version: 11.1.0 + build: py312h50aef2c_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-11.1.0-py312h50aef2c_0.conda + sha256: b29b7c915053e06a7a5b4118760202c572c9c35d23bd6ce8e73270b6a50e50ee + md5: 94d6ba8cd468668a9fb04193b0f4b36e depends: + - __osx >=11.0 - freetype >=2.12.1,<3.0a0 - lcms2 >=2.16,<3.0a0 - - libgcc >=13 - libjpeg-turbo >=3.0.0,<4.0a0 - libtiff >=4.7.0,<4.8.0a0 - - libwebp-base >=1.4.0,<2.0a0 + - libwebp-base >=1.5.0,<2.0a0 - libxcb >=1.17.0,<2.0a0 - libzlib >=1.3.1,<2.0a0 - - openjpeg >=2.5.2,<3.0a0 + - openjpeg >=2.5.3,<3.0a0 - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 - tk >=8.6.13,<8.7.0a0 license: HPND - size: 41756471 - timestamp: 1729068045876 + size: 42852329 + timestamp: 1735930118976 - kind: conda name: pillow - version: 11.0.0 - build: py312h7b63e92_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/pillow-11.0.0-py312h7b63e92_0.conda - sha256: 13a464bea02c0df0199c20ef6bad24a6bc336aaf55bf8d6a133d0fe664463224 - md5: 385f46a4df6f97892503a841121a9acf + version: 11.1.0 + build: py312h719f0cf_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/pillow-11.1.0-py312h719f0cf_0.conda + sha256: 7559556ffc44bda777f85c2e5acd6b5756fa5822c0271b329b7b9a3c6bb20349 + md5: 77e0ec0a6fc847d317f204aa15b59f6b depends: - - __glibc >=2.17,<3.0.a0 - freetype >=2.12.1,<3.0a0 - lcms2 >=2.16,<3.0a0 - libgcc >=13 - libjpeg-turbo >=3.0.0,<4.0a0 - libtiff >=4.7.0,<4.8.0a0 - - libwebp-base >=1.4.0,<2.0a0 + - libwebp-base >=1.5.0,<2.0a0 - libxcb >=1.17.0,<2.0a0 - libzlib >=1.3.1,<2.0a0 - - openjpeg >=2.5.2,<3.0a0 + - openjpeg >=2.5.3,<3.0a0 - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 - tk >=8.6.13,<8.7.0a0 license: HPND - size: 41948418 - timestamp: 1729065846594 + size: 41362848 + timestamp: 1735932311857 - kind: conda name: pillow - version: 11.0.0 - build: py312haf37ca6_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-11.0.0-py312haf37ca6_0.conda - sha256: 727b4c3faecdb6f6809cf20c5f32d2df4af34e0d5b9146b7588383bcba7990e8 - md5: dc9b51fbd2b6f7fea9b5123458864dbb + version: 11.1.0 + build: py312h80c1187_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/pillow-11.1.0-py312h80c1187_0.conda + sha256: 5c347962202b55ae4d8a463e0555c5c6ca33396266a08284bf1384399894e541 + md5: d3894405f05b2c0f351d5de3ae26fa9c depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 - freetype >=2.12.1,<3.0a0 - lcms2 >=2.16,<3.0a0 + - libgcc >=13 - libjpeg-turbo >=3.0.0,<4.0a0 - libtiff >=4.7.0,<4.8.0a0 - - libwebp-base >=1.4.0,<2.0a0 + - libwebp-base >=1.5.0,<2.0a0 - libxcb >=1.17.0,<2.0a0 - libzlib >=1.3.1,<2.0a0 - - openjpeg >=2.5.2,<3.0a0 + - openjpeg >=2.5.3,<3.0a0 - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 - tk >=8.6.13,<8.7.0a0 license: HPND - size: 41737424 - timestamp: 1729065920347 + size: 42749785 + timestamp: 1735929845390 - kind: conda name: platformdirs version: 4.3.6 @@ -6900,12 +6917,12 @@ packages: timestamp: 1733392308901 - kind: conda name: protobuf - version: 5.28.2 + version: 5.28.3 build: py312h2ec8cdc_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/protobuf-5.28.2-py312h2ec8cdc_0.conda - sha256: 4884f8161602f0148ebbc1af8d3176cec80b96c83243f68aafd651986b573817 - md5: 586bead4a9dfa46faf88deb7d3a742bb + url: https://conda.anaconda.org/conda-forge/linux-64/protobuf-5.28.3-py312h2ec8cdc_0.conda + sha256: acb2e0ee948e3941f8ed191cb77f654e06538638aed8ccd71cbc78a15242ebbb + md5: 9d7e427d159c1b2d516cc047ff177c48 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -6913,19 +6930,19 @@ packages: - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 constrains: - - libprotobuf 5.28.2 + - libprotobuf 5.28.3 license: BSD-3-Clause license_family: BSD - size: 464548 - timestamp: 1728669645013 + size: 464794 + timestamp: 1731366525051 - kind: conda name: protobuf - version: 5.28.2 + version: 5.28.3 build: py312h6f74592_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/protobuf-5.28.2-py312h6f74592_0.conda - sha256: f874ffd38b9ae2b810e9d2e43fd8d3b778cdeaf7dea4a3e6ee4adeafe2d936cf - md5: 4b9b22bd7c53d938b207f9d0f79db183 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/protobuf-5.28.3-py312h6f74592_0.conda + sha256: 9c575d5035c7ecb114ab9e17906c0a54087d9598dd6a2104c02fe33f0a29dd46 + md5: 06513608c94fb1c1b17136ace77063a9 depends: - libgcc >=13 - libstdcxx >=13 @@ -6933,31 +6950,31 @@ packages: - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 constrains: - - libprotobuf 5.28.2 + - libprotobuf 5.28.3 license: BSD-3-Clause license_family: BSD - size: 472764 - timestamp: 1728669483611 + size: 473242 + timestamp: 1731366577844 - kind: conda name: protobuf - version: 5.28.2 - build: py312hf02c72a_0 + version: 5.28.3 + build: py312hd8f9ff3_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/protobuf-5.28.2-py312hf02c72a_0.conda - sha256: dbcec117510ced5c12097e3eb06ebbf4512dc255733a9ace33c4249fb7e6a364 - md5: 6fda46c82abd0a080ca33de7d16ca877 + url: https://conda.anaconda.org/conda-forge/osx-arm64/protobuf-5.28.3-py312hd8f9ff3_0.conda + sha256: 9d572a97419bdace14d7c7cc8cc8c4bf2dcb22b56965dac87a27fbdb5061b926 + md5: 5afbe52a59f04dd1fe566d0d17590d7e depends: - __osx >=11.0 - - libcxx >=17 + - libcxx >=18 - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 constrains: - - libprotobuf 5.28.2 + - libprotobuf 5.28.3 license: BSD-3-Clause license_family: BSD - size: 447369 - timestamp: 1728669902591 + size: 448803 + timestamp: 1731367010746 - kind: conda name: pthread-stubs version: '0.4' @@ -7231,21 +7248,21 @@ packages: timestamp: 1734571986644 - kind: conda name: pydantic-settings - version: 2.7.0 + version: 2.7.1 build: pyh3cfb1c2_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.7.0-pyh3cfb1c2_0.conda - sha256: dd1ac7c8b6a189c8aa18f6c7df019d8f6df495300a259e3fbebdb542fc955c3b - md5: d9f19a7c4199249fa229891b573b6f9b + url: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.7.1-pyh3cfb1c2_0.conda + sha256: 082fb1ec29917d2c9ed6a862cb8eb9beb88c208ea62c9fef1aeb5f4f3e0e0b06 + md5: d71d76b62bed332b037d7adfc0f3989a depends: - pydantic >=2.7.0 - python >=3.9 - python-dotenv >=0.21.0 license: MIT license_family: MIT - size: 31426 - timestamp: 1734127929720 + size: 31822 + timestamp: 1735650532951 - kind: conda name: pygments version: 2.18.0 @@ -7737,48 +7754,48 @@ packages: - kind: conda name: re2 version: 2024.07.02 - build: h2d3a13d_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/re2-2024.07.02-h2d3a13d_1.conda - sha256: 55e7be480bfb979fa8595a16d7f2adea3a5ac9a77b2e97cd0f7ac40e989edb6c - md5: 83f4e47229834c895a92c18383e1cd9d + build: h6589ca4_2 + build_number: 2 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/re2-2024.07.02-h6589ca4_2.conda + sha256: 4d3799c05f8f662922a0acd129d119774760a3281b883603678e128d1cb307fb + md5: 7a8b4ad8c58a3408ca89d78788c78178 depends: - - libre2-11 2024.07.02 h18dbdb1_1 + - libre2-11 2024.07.02 h07bc746_2 license: BSD-3-Clause license_family: BSD - size: 26747 - timestamp: 1728778986331 + size: 26861 + timestamp: 1735541088455 - kind: conda name: re2 version: 2024.07.02 - build: h77b4e00_1 - build_number: 1 + build: h9925aae_2 + build_number: 2 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/re2-2024.07.02-h77b4e00_1.conda - sha256: c1721cb80f7201652fc9801f49c214c88aee835d957f2376e301bd40a8415742 - md5: 01093ff37c1b5e6bf9f17c0116747d11 + url: https://conda.anaconda.org/conda-forge/linux-64/re2-2024.07.02-h9925aae_2.conda + sha256: d213c44958d49ce7e0d4d5b81afec23640cce5016685dbb2d23571a99caa4474 + md5: e84ddf12bde691e8ec894b00ea829ddf depends: - - libre2-11 2024.07.02 hbbce691_1 + - libre2-11 2024.07.02 hbbce691_2 license: BSD-3-Clause license_family: BSD - size: 26665 - timestamp: 1728778975855 + size: 26786 + timestamp: 1735541074034 - kind: conda name: re2 version: 2024.07.02 - build: hcd0e937_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/re2-2024.07.02-hcd0e937_1.conda - sha256: eebddde6cb10b146507810b701ef6df122d5309cd5151a39d0828aa44dc53725 - md5: 19e29f2ccc9168eb0a39dc40c04c0e21 + build: haa97905_2 + build_number: 2 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/re2-2024.07.02-haa97905_2.conda + sha256: 040848655df9119bae5a549fb5c8956a5537120859416c1d9d0712b7bac9f12e + md5: 1bf0135339b4a7419a198a795d2d4be0 depends: - - libre2-11 2024.07.02 h2348fd5_1 + - libre2-11 2024.07.02 h18dbdb1_2 license: BSD-3-Clause license_family: BSD - size: 26860 - timestamp: 1728779123653 + size: 26830 + timestamp: 1735540999398 - kind: conda name: readline version: '8.2' @@ -7970,12 +7987,12 @@ packages: timestamp: 1734415467047 - kind: conda name: safetensors - version: 0.4.5 + version: 0.5.0 build: py312h12e396e_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/safetensors-0.4.5-py312h12e396e_0.conda - sha256: e44515f875c10efb5e041efcb250dfd18f2cb66ec3f268237549ead6284c6922 - md5: 3b87a00bcaab069172d6cef8124b7142 + url: https://conda.anaconda.org/conda-forge/linux-64/safetensors-0.5.0-py312h12e396e_0.conda + sha256: f9d0a4fbfbd2bcded116b81afd69d00aa5d5bac0d431dd47737cec1b1d24c2e2 + md5: 4b33e7c3e9bbc3936e08150fc9e17708 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -7985,16 +8002,16 @@ packages: - __glibc >=2.17 license: Apache-2.0 license_family: APACHE - size: 402547 - timestamp: 1725632183154 + size: 424699 + timestamp: 1735917812729 - kind: conda name: safetensors - version: 0.4.5 + version: 0.5.0 build: py312h8cbf658_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/safetensors-0.4.5-py312h8cbf658_0.conda - sha256: e83ebeaba4a07bbe4a1d6c7eef0b4f7ae19901ef365bca043808d16e4c8faad8 - md5: 82ef253c37308b082a478fb92924cad6 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/safetensors-0.5.0-py312h8cbf658_0.conda + sha256: aee581ce5c744f81ac4848b1810a88a750041ef91da646234f75092a8b4e06d1 + md5: 9c317f54bd3c95a830e98b7baee11ea9 depends: - libgcc >=13 - python >=3.12,<3.13.0a0 @@ -8004,16 +8021,16 @@ packages: - __glibc >=2.17 license: Apache-2.0 license_family: APACHE - size: 400284 - timestamp: 1725632278147 + size: 408792 + timestamp: 1735917879258 - kind: conda name: safetensors - version: 0.4.5 - build: py312he431725_0 + version: 0.5.0 + build: py312hcd83bfe_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/safetensors-0.4.5-py312he431725_0.conda - sha256: 93a085d0d64237db7f4ff395c446f268c575dc2c324d8e3e5c5d7d836896295e - md5: ccb978cf1e3151c25a44c4ae65c1f20e + url: https://conda.anaconda.org/conda-forge/osx-arm64/safetensors-0.5.0-py312hcd83bfe_0.conda + sha256: 8992f78362793a465c3009be2fd80582c93e2151bc17d07ebd39ce7af757358a + md5: acbbbac2271653f4914cef842a84190f depends: - __osx >=11.0 - python >=3.12,<3.13.0a0 @@ -8023,8 +8040,8 @@ packages: - __osx >=11.0 license: Apache-2.0 license_family: APACHE - size: 353606 - timestamp: 1725632294079 + size: 377533 + timestamp: 1735918206452 - kind: conda name: shellingham version: 1.5.4 @@ -8135,6 +8152,7 @@ packages: - python >=3.9 - starlette >=0.41.3 license: BSD-3-Clause + license_family: BSD size: 15324 timestamp: 1735126414893 - kind: conda @@ -8319,18 +8337,19 @@ packages: - kind: conda name: tqdm version: 4.67.1 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda - sha256: 5673b7104350a6998cb86cccf1d0058217d86950e8d6c927d8530606028edb1d - md5: 4085c9db273a148e149c03627350e22c + url: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + sha256: 11e2c85468ae9902d24a27137b6b39b4a78099806e551d390e394a8c34b48e40 + md5: 9efbfdc37242619130ea42b1cc4ed861 depends: - colorama - - python >=3.7 + - python >=3.9 license: MPL-2.0 or MIT - size: 89484 - timestamp: 1732497312317 + size: 89498 + timestamp: 1735661472632 - kind: conda name: traitlets version: 5.14.3 diff --git a/magic.lock b/magic.lock index c019b7beb8..491bf49764 100644 --- a/magic.lock +++ b/magic.lock @@ -12,7 +12,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.11-py312h178313f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.7.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.8.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.3.0-pyh71513ae_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-hb921021_15.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.1-h1a47875_3.conda @@ -39,7 +39,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2024.12.14-hbcca054_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.12.14-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py312h06ac9bb_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda @@ -76,11 +76,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.16-hb7c19ff_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_h5888daf_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-h44a453e_6_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-hcb10f89_6_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-hcb10f89_6_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-h3ee7192_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-hd595efa_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-hcb10f89_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-hcb10f89_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-h08228c5_7_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-26_linux64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hb9d3cd8_2.conda @@ -89,7 +89,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libcrc32c-1.1.2-h9c3ff4c_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.11.1-h332b0f4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.23-h4ddbbb0_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20191231-he28a2e2_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20240808-pl5321h7949ede_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libevent-2.1.12-hf998b51_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda @@ -99,9 +99,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hd5240d6_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h77fa898_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.32.0-h804f50b_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.32.0-h0121fbd_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.67.1-hc2c308b_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.33.0-h2b5623c_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.33.0-h0121fbd_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.67.1-h25350d4_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-hd590300_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-26_linux64_openblas.conda @@ -109,10 +109,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.28-pthreads_h94d23a6_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-h081d1f1_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-h081d1f1_7_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.44-hadc24fc_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.2-h5b01275_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.47.2-hee588c1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hf672d98_0.conda @@ -132,19 +132,19 @@ 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-25.1.0.dev2024122805-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024122805-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024122805-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025010605-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025010605-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025010605-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025010605-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-25.1.0.dev2024122805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025010605-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 - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.3-h5fbd93e_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.0-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.0-h7b32b05_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.29.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.29.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.29.0-pyhd8ed1ab_1.conda @@ -152,22 +152,22 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.29.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.29.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.50b0-pyh3cfb1c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/orc-2.0.3-h97ab989_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/orc-2.0.3-h12ee42a_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.3-py312hf9745cd_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-11.0.0-py312h7b63e92_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-11.1.0-py312h80c1187_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.1-py312h66e93f0_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/protobuf-5.28.2-py312h2ec8cdc_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/protobuf-5.28.3-py312h2ec8cdc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-18.1.0-py312h7900ff3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-18.1.0-py312h01725c0_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.4-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.27.2-py312h12e396e_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.7.0-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.7.1-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyinstrument-5.0.0-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda @@ -182,14 +182,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py312h66e93f0_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.0-py312hbf22597_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/re2-2024.07.02-h77b4e00_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/re2-2024.07.02-h9925aae_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda - 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.10-hb5b8611_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/safetensors-0.5.0-py312h12e396e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-h8bd8927_1.conda @@ -199,7 +199,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.21.0-py312h8360d73_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda @@ -230,7 +230,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.11-py312hcc812fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.7.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.8.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.3.0-pyh71513ae_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-h2cb9fb3_15.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.1-h740c5af_3.conda @@ -257,7 +257,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2024.12.14-hcefe29a_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.12.14-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cffi-1.17.1-py312hac81daf_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda @@ -295,11 +295,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lcms2-2.16-h922389a_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.0.0-h4de3ea5_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h5ad3122_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-h1b535d6_6_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h3b568fd_6_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h3b568fd_6_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h3ffb4b1_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h18dbdb1_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-hb7781cd_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h3b568fd_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h3b568fd_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h1e9d426_7_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-26_linuxaarch64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlicommon-1.1.0-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlidec-1.1.0-h86ecc28_2.conda @@ -308,7 +308,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcrc32c-1.1.2-h01db608_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcurl-8.11.1-h6702fde_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libdeflate-1.23-h5e3c512_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20191231-he28a2e2_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20240808-pl5321h976ea20_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libev-4.33-h31becfc_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libevent-2.1.12-h4ba1bb4_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.6.4-h5ad3122_0.conda @@ -318,9 +318,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-2.32.0-h3888205_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-storage-2.32.0-hb9b2b65_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgrpc-1.67.1-h36c5df4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-2.33.0-hccf9d24_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-storage-2.33.0-hb9b2b65_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgrpc-1.67.1-hf7ccdd3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libiconv-1.17-h31becfc_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libjpeg-turbo-3.0.0-h31becfc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-26_linuxaarch64_openblas.conda @@ -328,10 +328,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnghttp2-1.64.0-hc8609a4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.28-pthreads_h9d3fd7e_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-hfc78867_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-hfc78867_7_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.44-hc4a20ef_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.2-h029595c_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.3-h44a3b7b_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.20-h68df207_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.47.2-h5eb1b54_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libssh2-1.11.1-ha41c0db_0.conda @@ -351,19 +351,19 @@ 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-25.1.0.dev2024122805-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024122805-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024122805-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025010605-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025010605-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025010605-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025010605-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-25.1.0.dev2024122805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025010605-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 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openjpeg-2.5.3-h3f56577_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.0-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.0-hd08dc88_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.29.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.29.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.29.0-pyhd8ed1ab_1.conda @@ -371,22 +371,22 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.29.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.29.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.50b0-pyh3cfb1c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/orc-2.0.3-h3c55218_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/orc-2.0.3-hdd485aa_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pandas-2.2.3-py312ha2895bd_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pillow-11.0.0-py312h5ab5af3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pillow-11.1.0-py312h719f0cf_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.2.1-py312hb2c0f52_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/protobuf-5.28.2-py312h6f74592_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/protobuf-5.28.3-py312h6f74592_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pthread-stubs-0.4-h86ecc28_1002.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-18.1.0-py312h8025657_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-18.1.0-py312h66f7834_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.4-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pydantic-core-2.27.2-py312h8cbf658_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.7.0-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.7.1-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyinstrument-5.0.0-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda @@ -401,14 +401,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyyaml-6.0.2-py312hb2c0f52_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyzmq-26.2.0-py312h2427ae1_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/re2-2024.07.02-h2d3a13d_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/re2-2024.07.02-haa97905_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8fc344f_1.conda - 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.10-h5df210e_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/safetensors-0.5.0-py312h8cbf658_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-hd4fb6f5_1.conda @@ -418,7 +418,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.21.0-py312ha0d6ea1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py312h52516f5_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda @@ -448,7 +448,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.11-py312h998013c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.7.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.8.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.3.0-pyh71513ae_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-h8bc59a9_15.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.1-hc8a0bd2_3.conda @@ -475,7 +475,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2024.12.14-hf0a4a13_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.12.14-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.1-py312h0fad829_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda @@ -511,11 +511,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.16-ha0e7c42_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_hf9b8971_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-h4a2f8bd_6_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-hf07054f_6_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-hf07054f_6_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-h86344ea_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_h07bc746_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-h0ad35bc_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-hf07054f_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-hf07054f_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-h4239455_7_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-26_osxarm64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.1.0-hd74edd7_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.1.0-hd74edd7_2.conda @@ -525,26 +525,26 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.11.1-h73640d1_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.6-ha82da77_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.23-hec38601_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20191231-hc8eb9b7_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20240808-pl5321hafb1f1b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libev-4.33-h93a5062_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libevent-2.1.12-h2757513_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.4-h286801f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-2.32.0-h8d8be31_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-storage-2.32.0-h7081f7f_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgrpc-1.67.1-hc70892a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-2.33.0-hdbe95d5_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-storage-2.33.0-h7081f7f_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgrpc-1.67.1-h0a426d6_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.17-h0d3ecfb_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.0.0-hb547adb_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-26_osxarm64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.3-h39f12f2_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.64.0-h6d7220d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.28-openmp_hf332438_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-h636d7b7_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-h636d7b7_7_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.44-hc14010f_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.2-h8f0b736_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h2348fd5_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.3-h3bd63a1_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h07bc746_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.47.2-h3f77e49_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.1-h9cc3647_0.conda @@ -561,19 +561,19 @@ 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-25.1.0.dev2024122805-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024122805-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024122805-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025010605-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025010605-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025010605-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025010605-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-25.1.0.dev2024122805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025010605-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 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h7bae524_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openjpeg-2.5.3-h8a3d83b_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.0-h39f12f2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.0-h81ee809_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.29.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.29.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.29.0-pyhd8ed1ab_1.conda @@ -581,22 +581,22 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.29.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.29.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.50b0-pyh3cfb1c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/orc-2.0.3-hbcee414_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/orc-2.0.3-h0ff2369_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.3-py312hcd31e36_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-11.0.0-py312haf37ca6_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-11.1.0-py312h50aef2c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.1-py312hea69d52_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/protobuf-5.28.2-py312hf02c72a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/protobuf-5.28.3-py312hd8f9ff3_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pthread-stubs-0.4-hd74edd7_1002.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-18.1.0-py312h1f38498_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-18.1.0-py312hc40f475_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.4-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.27.2-py312hcd83bfe_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.7.0-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.7.1-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyinstrument-5.0.0-py312h0bf5046_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda @@ -611,13 +611,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py312h024a12e_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.0-py312hf8a1cbd_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/re2-2024.07.02-hcd0e937_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/re2-2024.07.02-h6589ca4_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h92ec313_1.conda - 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/safetensors-0.5.0-py312hcd83bfe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-h98b9ce2_1.conda @@ -627,7 +627,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.21.0-py312hf3e4074_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda @@ -822,13 +822,13 @@ packages: timestamp: 1733247158254 - kind: conda name: anyio - version: 4.7.0 + version: 4.8.0 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/anyio-4.7.0-pyhd8ed1ab_0.conda - sha256: 687537ee3af30f8784986bf40cac30e88138770b16e51ca9850c9c23c09aeba1 - md5: c88107912954a983c2caf25f7fd55158 + url: https://conda.anaconda.org/conda-forge/noarch/anyio-4.8.0-pyhd8ed1ab_0.conda + sha256: f1455d2953e3eb6d71bc49881c8558d8e01888469dfd21061dd48afb6183e836 + md5: 848d25bfbadf020ee4d4ba90e5668252 depends: - exceptiongroup >=1.0.2 - idna >=2.8 @@ -840,8 +840,8 @@ packages: - uvloop >=0.21 license: MIT license_family: MIT - size: 112730 - timestamp: 1733532678437 + size: 115305 + timestamp: 1736174485476 - kind: conda name: attrs version: 24.3.0 @@ -2142,20 +2142,19 @@ packages: timestamp: 1725561779888 - kind: conda name: charset-normalizer - version: 3.4.0 - build: pyhd8ed1ab_1 - build_number: 1 + version: 3.4.1 + build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_1.conda - sha256: 63022ee2c6a157a9f980250a66f54bdcdf5abee817348d0f9a74c2441a6fbf0e - md5: 6581a17bba6b948bb60130026404a9d6 + url: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda + sha256: 4e0ee91b97e5de3e74567bdacea27f0139709fceca4db8adffbe24deffccb09b + md5: e83a31202d1c0a000fce3e9cf3825875 depends: - python >=3.9 license: MIT license_family: MIT - size: 47533 - timestamp: 1733218182393 + size: 47438 + timestamp: 1735929811779 - kind: conda name: click version: 8.1.8 @@ -2862,6 +2861,7 @@ packages: - markupsafe >=2.0 - python >=3.9 license: BSD-3-Clause + license_family: BSD size: 112561 timestamp: 1734824044952 - kind: conda @@ -3113,32 +3113,31 @@ packages: - kind: conda name: libabseil version: '20240722.0' - build: cxx17_h5888daf_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_h5888daf_1.conda - sha256: 8f91429091183c26950f1e7ffa730e8632f0627ba35d2fccd71df31628c9b4e5 - md5: e1f604644fe8d78e22660e2fec6756bc + build: cxx17_h07bc746_4 + build_number: 4 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_h07bc746_4.conda + sha256: 05fa5e5e908962b9c5aba95f962e2ca81d9599c4715aebe5e4ddb72b309d1770 + md5: c2d95bd7aa8d564a9bd7eca5e571a5b3 depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libstdcxx >=13 + - __osx >=11.0 + - libcxx >=18 constrains: - libabseil-static =20240722.0=cxx17* - abseil-cpp =20240722.0 license: Apache-2.0 license_family: Apache - size: 1310521 - timestamp: 1727295454064 + size: 1178260 + timestamp: 1736008642885 - kind: conda name: libabseil version: '20240722.0' - build: cxx17_h5ad3122_1 - build_number: 1 + build: cxx17_h18dbdb1_4 + build_number: 4 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h5ad3122_1.conda - sha256: 590e47dce38031a8893e70491f3b71e214de7781cab53b6f017aa6f6841cb076 - md5: 6fe6b3694c4792a8e26755d3b06f0b80 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h18dbdb1_4.conda + sha256: bb6c5fb3b8de5f90735c5252b57efb3c268ee222c755569dac18065f05147670 + md5: 633b9fe454ffea2aaf29e191d946a83b depends: - libgcc >=13 - libstdcxx >=13 @@ -3147,37 +3146,39 @@ packages: - libabseil-static =20240722.0=cxx17* license: Apache-2.0 license_family: Apache - size: 1328502 - timestamp: 1727295490806 + size: 1334844 + timestamp: 1736008472455 - kind: conda name: libabseil version: '20240722.0' - build: cxx17_hf9b8971_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_hf9b8971_1.conda - sha256: 90bf08a75506dfcf28a70977da8ab050bcf594cd02abd3a9d84a22c9e8161724 - md5: 706da5e791c569a7b9814877098a6a0a + build: cxx17_hbbce691_4 + build_number: 4 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda + sha256: 143a586aa67d50622ef703de57b9d43f44945836d6568e0e7aa174bd8c45e0d4 + md5: 488f260ccda0afaf08acb286db439c2f depends: - - __osx >=11.0 - - libcxx >=17 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 constrains: - libabseil-static =20240722.0=cxx17* - abseil-cpp =20240722.0 license: Apache-2.0 license_family: Apache - size: 1179072 - timestamp: 1727295571173 + size: 1311599 + timestamp: 1736008414161 - kind: conda name: libarrow version: 18.1.0 - build: h1b535d6_6_cpu - build_number: 6 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-h1b535d6_6_cpu.conda - sha256: 087b579aebf351ca41c54214121d86a15a41c92051cbd432d6f3a3f58a8c31b0 - md5: 4c0ad68efba1113ac5833975c67b565d + build: h0ad35bc_7_cpu + build_number: 7 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-h0ad35bc_7_cpu.conda + sha256: 4fbdd8bb89d912bf03f10f9373a8d96a1cdd7a7851e107393418a3d2715bc27e + md5: 4ba2173203f44bbf03d19aaba6ed07d3 depends: + - __osx >=11.0 - aws-crt-cpp >=0.29.7,<0.29.8.0a0 - aws-sdk-cpp >=1.11.458,<1.11.459.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 @@ -3185,17 +3186,15 @@ packages: - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 - bzip2 >=1.0.8,<2.0a0 - - gflags >=2.2.2,<2.3.0a0 - glog >=0.7.1,<0.8.0a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - libbrotlidec >=1.1.0,<1.2.0a0 - libbrotlienc >=1.1.0,<1.2.0a0 - - libgcc >=13 - - libgoogle-cloud >=2.32.0,<2.33.0a0 - - libgoogle-cloud-storage >=2.32.0,<2.33.0a0 + - libcxx >=18 + - libgoogle-cloud >=2.33.0,<2.34.0a0 + - libgoogle-cloud-storage >=2.33.0,<2.34.0a0 - libre2-11 >=2024.7.2 - - libstdcxx >=13 - libutf8proc >=2.9.0,<2.10.0a0 - libzlib >=1.3.1,<2.0a0 - lz4-c >=1.10.0,<1.11.0a0 @@ -3204,24 +3203,23 @@ packages: - snappy >=1.2.1,<1.3.0a0 - zstd >=1.5.6,<1.6.0a0 constrains: - - parquet-cpp <0.0a0 - arrow-cpp <0.0a0 + - parquet-cpp <0.0a0 - apache-arrow-proc =*=cpu license: Apache-2.0 license_family: APACHE - size: 8040629 - timestamp: 1733810319239 + size: 5506699 + timestamp: 1735682962976 - kind: conda name: libarrow version: 18.1.0 - build: h44a453e_6_cpu - build_number: 6 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-h44a453e_6_cpu.conda - sha256: abf17e99b03356a9d6248e965826c1352ff01b00d3a62cc51393bb0744d72803 - md5: 2cf6d608d6e66506f69797d5c6944c35 + build: hb7781cd_7_cpu + build_number: 7 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-hb7781cd_7_cpu.conda + sha256: f6107506bd16788560b47a4d18c1457b4df30a49334364d32613fe3f53ba6cbb + md5: 98cf7127ca7b3854c5d1c8bef1ed6e53 depends: - - __glibc >=2.17,<3.0.a0 - aws-crt-cpp >=0.29.7,<0.29.8.0a0 - aws-sdk-cpp >=1.11.458,<1.11.459.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 @@ -3236,8 +3234,8 @@ packages: - libbrotlidec >=1.1.0,<1.2.0a0 - libbrotlienc >=1.1.0,<1.2.0a0 - libgcc >=13 - - libgoogle-cloud >=2.32.0,<2.33.0a0 - - libgoogle-cloud-storage >=2.32.0,<2.33.0a0 + - libgoogle-cloud >=2.33.0,<2.34.0a0 + - libgoogle-cloud-storage >=2.33.0,<2.34.0a0 - libre2-11 >=2024.7.2 - libstdcxx >=13 - libutf8proc >=2.9.0,<2.10.0a0 @@ -3248,24 +3246,24 @@ packages: - snappy >=1.2.1,<1.3.0a0 - zstd >=1.5.6,<1.6.0a0 constrains: - - parquet-cpp <0.0a0 - arrow-cpp <0.0a0 + - parquet-cpp <0.0a0 - apache-arrow-proc =*=cpu license: Apache-2.0 license_family: APACHE - size: 8786061 - timestamp: 1733810643966 + size: 8026714 + timestamp: 1735685336542 - kind: conda name: libarrow version: 18.1.0 - build: h4a2f8bd_6_cpu - build_number: 6 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-h4a2f8bd_6_cpu.conda - sha256: 9ed3ea1bc15005c0df187268ef91407afaa908cf82f36f5acbbf50ac24d7f806 - md5: 835cdd84195b84dc34d128bd5d3580b9 + build: hd595efa_7_cpu + build_number: 7 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-hd595efa_7_cpu.conda + sha256: 554ffa338264c1dc34d95adb7eb856d50a2f25e7fa303a1a51e4372301b7c96f + md5: 08d4aff5ee6dee9a1b9ab13fca927697 depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 - aws-crt-cpp >=0.29.7,<0.29.8.0a0 - aws-sdk-cpp >=1.11.458,<1.11.459.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 @@ -3273,15 +3271,17 @@ packages: - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 - bzip2 >=1.0.8,<2.0a0 + - gflags >=2.2.2,<2.3.0a0 - glog >=0.7.1,<0.8.0a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - libbrotlidec >=1.1.0,<1.2.0a0 - libbrotlienc >=1.1.0,<1.2.0a0 - - libcxx >=18 - - libgoogle-cloud >=2.32.0,<2.33.0a0 - - libgoogle-cloud-storage >=2.32.0,<2.33.0a0 + - libgcc >=13 + - libgoogle-cloud >=2.33.0,<2.34.0a0 + - libgoogle-cloud-storage >=2.33.0,<2.34.0a0 - libre2-11 >=2024.7.2 + - libstdcxx >=13 - libutf8proc >=2.9.0,<2.10.0a0 - libzlib >=1.3.1,<2.0a0 - lz4-c >=1.10.0,<1.11.0a0 @@ -3290,190 +3290,190 @@ packages: - snappy >=1.2.1,<1.3.0a0 - zstd >=1.5.6,<1.6.0a0 constrains: - - apache-arrow-proc =*=cpu - arrow-cpp <0.0a0 - parquet-cpp <0.0a0 + - apache-arrow-proc =*=cpu license: Apache-2.0 license_family: APACHE - size: 5494797 - timestamp: 1733808145854 + size: 8770256 + timestamp: 1735684696564 - kind: conda name: libarrow-acero version: 18.1.0 - build: h3b568fd_6_cpu - build_number: 6 + build: h3b568fd_7_cpu + build_number: 7 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h3b568fd_6_cpu.conda - sha256: fdb70e2499e59b730084ecd53008b361a6f6090b5fb49624feda06b7e84c7b8c - md5: c50907eefe2ae22d826e7cb2e4d712f5 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h3b568fd_7_cpu.conda + sha256: 42cbfc87096f745d565d814d65b7228c82d985f1898859d5e456016d73e81c82 + md5: 4c1d8c3feea249782148d3cd6a25392e depends: - - libarrow 18.1.0 h1b535d6_6_cpu + - libarrow 18.1.0 hb7781cd_7_cpu - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 license_family: APACHE - size: 578091 - timestamp: 1733810378092 + size: 578222 + timestamp: 1735685424850 - kind: conda name: libarrow-acero version: 18.1.0 - build: hcb10f89_6_cpu - build_number: 6 + build: hcb10f89_7_cpu + build_number: 7 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-hcb10f89_6_cpu.conda - sha256: a32fa1d71415afc02b5cf3cd4c0a6ec0af9e749308829cc65ff79689222ce479 - md5: 143f9288b64759a6427563f058c62f2b + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-hcb10f89_7_cpu.conda + sha256: 87ea5d6a84d922d73975dce8661fccf257e72e755175b12c30e1181a34e37987 + md5: 12d84228204c56fec6ed113288014d11 depends: - __glibc >=2.17,<3.0.a0 - - libarrow 18.1.0 h44a453e_6_cpu + - libarrow 18.1.0 hd595efa_7_cpu - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 license_family: APACHE - size: 611745 - timestamp: 1733810698469 + size: 612463 + timestamp: 1735684749868 - kind: conda name: libarrow-acero version: 18.1.0 - build: hf07054f_6_cpu - build_number: 6 + build: hf07054f_7_cpu + build_number: 7 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-hf07054f_6_cpu.conda - sha256: e1cae46409927470439ef9ae93ed09b3493d0579501ca9ebfa79ded212ee98d8 - md5: 97fc01254714e1572624baefdd7cc898 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-hf07054f_7_cpu.conda + sha256: 86e20cebfdb4f335e98265c1b88f5053bf3e3648768a317856295846bfdbf2b4 + md5: 3eaf71fe987de13061db795e03bb1a1c depends: - __osx >=11.0 - - libarrow 18.1.0 h4a2f8bd_6_cpu + - libarrow 18.1.0 h0ad35bc_7_cpu - libcxx >=18 license: Apache-2.0 license_family: APACHE - size: 483713 - timestamp: 1733808246880 + size: 485185 + timestamp: 1735683071232 - kind: conda name: libarrow-dataset version: 18.1.0 - build: h3b568fd_6_cpu - build_number: 6 + build: h3b568fd_7_cpu + build_number: 7 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h3b568fd_6_cpu.conda - sha256: 2a08f5a1017ff660c37ae0c24343a119cb2511c6edd69e23d0a5090a0967ea35 - md5: bb1548ad011c4f9107fcc4cc548473bf + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h3b568fd_7_cpu.conda + sha256: 13ba7d3d08015aa26569eca9e198e2f8b2a0cd2d9c420e41c78cc2e5d5170f26 + md5: f39f5d725c2ca94c2e7b19e2717fd4ab depends: - - libarrow 18.1.0 h1b535d6_6_cpu - - libarrow-acero 18.1.0 h3b568fd_6_cpu + - libarrow 18.1.0 hb7781cd_7_cpu + - libarrow-acero 18.1.0 h3b568fd_7_cpu - libgcc >=13 - - libparquet 18.1.0 hfc78867_6_cpu + - libparquet 18.1.0 hfc78867_7_cpu - libstdcxx >=13 license: Apache-2.0 license_family: APACHE - size: 559673 - timestamp: 1733810461646 + size: 560329 + timestamp: 1735685518922 - kind: conda name: libarrow-dataset version: 18.1.0 - build: hcb10f89_6_cpu - build_number: 6 + build: hcb10f89_7_cpu + build_number: 7 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-hcb10f89_6_cpu.conda - sha256: 74eeb178070002842d3ed721769399320e3a68a0843319eaf899a092a31def26 - md5: 20ca46a6bc714a6ab189d5b3f46e66d8 + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-hcb10f89_7_cpu.conda + sha256: 99c12511fba79c7947f78d676eae5857659084f687f375f68bc20bd4cddb0a0e + md5: 0a81eb63d7cd150f598c752e86388d57 depends: - __glibc >=2.17,<3.0.a0 - - libarrow 18.1.0 h44a453e_6_cpu - - libarrow-acero 18.1.0 hcb10f89_6_cpu + - libarrow 18.1.0 hd595efa_7_cpu + - libarrow-acero 18.1.0 hcb10f89_7_cpu - libgcc >=13 - - libparquet 18.1.0 h081d1f1_6_cpu + - libparquet 18.1.0 h081d1f1_7_cpu - libstdcxx >=13 license: Apache-2.0 license_family: APACHE - size: 586627 - timestamp: 1733810842604 + size: 587497 + timestamp: 1735684880531 - kind: conda name: libarrow-dataset version: 18.1.0 - build: hf07054f_6_cpu - build_number: 6 + build: hf07054f_7_cpu + build_number: 7 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-hf07054f_6_cpu.conda - sha256: 6eba942ce926419f74e6e0a7c3994a7d78ab6be47115e6bb70e02136554736be - md5: 0774276be6659aaa0007f1b0f6ee19b0 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-hf07054f_7_cpu.conda + sha256: 52c5c4e9cd5f2ac91dcebb6a920ab2536febcea116ff8767e5439329d7da820b + md5: 97a2d3606682d94f7d73112e9ad684ae depends: - __osx >=11.0 - - libarrow 18.1.0 h4a2f8bd_6_cpu - - libarrow-acero 18.1.0 hf07054f_6_cpu + - libarrow 18.1.0 h0ad35bc_7_cpu + - libarrow-acero 18.1.0 hf07054f_7_cpu - libcxx >=18 - - libparquet 18.1.0 h636d7b7_6_cpu + - libparquet 18.1.0 h636d7b7_7_cpu license: Apache-2.0 license_family: APACHE - size: 489948 - timestamp: 1733809328231 + size: 491237 + timestamp: 1735684688308 - kind: conda name: libarrow-substrait version: 18.1.0 - build: h3ee7192_6_cpu - build_number: 6 + build: h08228c5_7_cpu + build_number: 7 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-h3ee7192_6_cpu.conda - sha256: bda6728db019dd0c409b1996ad9ef6ab0bcee3a94dc66a8045e8c1049c566055 - md5: aa313b3168caf98d00b3753f5ba27650 + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-h08228c5_7_cpu.conda + sha256: 53ea53a06e137c2f81ebfdff3f978babb8b59e31f705a19b57056ec8754c1abf + md5: e128def53c133e8a23ac00cd4a479335 depends: - __glibc >=2.17,<3.0.a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.1.0 h44a453e_6_cpu - - libarrow-acero 18.1.0 hcb10f89_6_cpu - - libarrow-dataset 18.1.0 hcb10f89_6_cpu + - libarrow 18.1.0 hd595efa_7_cpu + - libarrow-acero 18.1.0 hcb10f89_7_cpu + - libarrow-dataset 18.1.0 hcb10f89_7_cpu - libgcc >=13 - - libprotobuf >=5.28.2,<5.28.3.0a0 + - libprotobuf >=5.28.3,<5.28.4.0a0 - libstdcxx >=13 license: Apache-2.0 license_family: APACHE - size: 519989 - timestamp: 1733810903274 + size: 521861 + timestamp: 1735684940668 - kind: conda name: libarrow-substrait version: 18.1.0 - build: h3ffb4b1_6_cpu - build_number: 6 + build: h1e9d426_7_cpu + build_number: 7 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h3ffb4b1_6_cpu.conda - sha256: 9f78c55c5d7122e588a6f226cbf7e909c479d66ed18edc633d68324323d386b9 - md5: 5db2e6832397b8ca70a6f7b00e0c3629 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h1e9d426_7_cpu.conda + sha256: 252e2a0d8c733f36b50499786480a05a59577d617f291868149c80534c1e8ffc + md5: 6da921d9e1c4e2ab2679eeea7cbd4c82 depends: - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.1.0 h1b535d6_6_cpu - - libarrow-acero 18.1.0 h3b568fd_6_cpu - - libarrow-dataset 18.1.0 h3b568fd_6_cpu + - libarrow 18.1.0 hb7781cd_7_cpu + - libarrow-acero 18.1.0 h3b568fd_7_cpu + - libarrow-dataset 18.1.0 h3b568fd_7_cpu - libgcc >=13 - - libprotobuf >=5.28.2,<5.28.3.0a0 + - libprotobuf >=5.28.3,<5.28.4.0a0 - libstdcxx >=13 license: Apache-2.0 license_family: APACHE - size: 515928 - timestamp: 1733810503359 + size: 516014 + timestamp: 1735685565929 - kind: conda name: libarrow-substrait version: 18.1.0 - build: h86344ea_6_cpu - build_number: 6 + build: h4239455_7_cpu + build_number: 7 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-h86344ea_6_cpu.conda - sha256: bafd9ca59ebb5ad34b77aff316ef7b59c5fb1eb8a7b6a15de8dcbdf3ce37556d - md5: c1c162f5bf569cff8bed6def705a899f + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-h4239455_7_cpu.conda + sha256: a45bbdd6932aed972d6c6ce30a7439aa8ec9d9b8ee5affb350d41e50abdc0127 + md5: 91927747173f65695e441346c7145e26 depends: - __osx >=11.0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.1.0 h4a2f8bd_6_cpu - - libarrow-acero 18.1.0 hf07054f_6_cpu - - libarrow-dataset 18.1.0 hf07054f_6_cpu + - libarrow 18.1.0 h0ad35bc_7_cpu + - libarrow-acero 18.1.0 hf07054f_7_cpu + - libarrow-dataset 18.1.0 hf07054f_7_cpu - libcxx >=18 - - libprotobuf >=5.28.2,<5.28.3.0a0 + - libprotobuf >=5.28.3,<5.28.4.0a0 license: Apache-2.0 license_family: APACHE - size: 451623 - timestamp: 1733809487176 + size: 452385 + timestamp: 1735684993831 - kind: conda name: libblas version: 3.9.0 @@ -3903,51 +3903,50 @@ packages: timestamp: 1734373971372 - kind: conda name: libedit - version: 3.1.20191231 - build: hc8eb9b7_2 - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20191231-hc8eb9b7_2.tar.bz2 - sha256: 3912636197933ecfe4692634119e8644904b41a58f30cad9d1fc02f6ba4d9fca - md5: 30e4362988a2623e9eb34337b83e01f9 + version: 3.1.20240808 + build: pl5321h7949ede_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20240808-pl5321h7949ede_0.conda + sha256: 4d0d69ddf9cc7d724a1ccf3a9852e44c8aea9825692582bac2c4e8d21ec95ccd + md5: 8247f80f3dc464d9322e85007e307fe8 depends: - - ncurses >=6.2,<7.0.0a0 + - ncurses + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - ncurses >=6.5,<7.0a0 license: BSD-2-Clause - license_family: BSD - size: 96607 - timestamp: 1597616630749 + size: 134657 + timestamp: 1736191912705 - kind: conda name: libedit - version: 3.1.20191231 - build: he28a2e2_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20191231-he28a2e2_2.tar.bz2 - sha256: a57d37c236d8f7c886e01656f4949d9dcca131d2a0728609c6f7fa338b65f1cf - md5: 4d331e44109e3f0e19b4cb8f9b82f3e1 + version: 3.1.20240808 + build: pl5321h976ea20_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20240808-pl5321h976ea20_0.conda + sha256: 031daea98cf278f858b7957ad5dc475f1b5673cd5e718850529401ced64cef2c + md5: 0be40129d3dd1a152fff29a85f0785d0 depends: - - libgcc-ng >=7.5.0 - - ncurses >=6.2,<7.0.0a0 + - ncurses + - libgcc >=13 + - ncurses >=6.5,<7.0a0 license: BSD-2-Clause - license_family: BSD - size: 123878 - timestamp: 1597616541093 + size: 148120 + timestamp: 1736192137151 - kind: conda name: libedit - version: 3.1.20191231 - build: he28a2e2_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20191231-he28a2e2_2.tar.bz2 - sha256: debc31fb2f07ba2b0363f90e455873670734082822926ba4a9556431ec0bf36d - md5: 29371161d77933a54fccf1bb66b96529 + version: 3.1.20240808 + build: pl5321hafb1f1b_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20240808-pl5321hafb1f1b_0.conda + sha256: fb934d7a03279ec8eae4bf1913ac9058fcf6fed35290d8ffa6e04157f396a3b1 + md5: af89aa84ffb5ee551ce0c137b951a3b5 depends: - - libgcc-ng >=7.5.0 - - ncurses >=6.2,<7.0.0a0 + - ncurses + - __osx >=11.0 + - ncurses >=6.5,<7.0a0 license: BSD-2-Clause - license_family: BSD - size: 134104 - timestamp: 1597617110769 + size: 107634 + timestamp: 1736192034117 - kind: conda name: libev version: '4.33' @@ -4327,214 +4326,223 @@ packages: timestamp: 1729089357313 - kind: conda name: libgoogle-cloud - version: 2.32.0 - build: h3888205_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-2.32.0-h3888205_0.conda - sha256: 36af2844ce8fafd477214d51117746144461132f76759a7d29963b4583b577be - md5: a40b948bf4eabcc1ce708c40ffd7c06d + version: 2.33.0 + build: h2b5623c_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.33.0-h2b5623c_1.conda + sha256: ae48ee93e2c226bf682f1e389c2fd51ae7bf77c2ce4b3aee069764f4be1c63f2 + md5: 61829a8dd5f4e2327e707572065bae41 depends: + - __glibc >=2.17,<3.0.a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libcurl >=8.10.1,<9.0a0 + - libcurl >=8.11.1,<9.0a0 - libgcc >=13 - libgrpc >=1.67.1,<1.68.0a0 - - libprotobuf >=5.28.2,<5.28.3.0a0 + - libprotobuf >=5.28.3,<5.28.4.0a0 - libstdcxx >=13 - openssl >=3.4.0,<4.0a0 constrains: - - libgoogle-cloud 2.32.0 *_0 + - libgoogle-cloud 2.33.0 *_1 license: Apache-2.0 license_family: Apache - size: 1248560 - timestamp: 1733512309504 + size: 1254656 + timestamp: 1735648569457 - kind: conda name: libgoogle-cloud - version: 2.32.0 - build: h804f50b_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.32.0-h804f50b_0.conda - sha256: 126856add750013390dff664a3c3cd0f6f0cbbc683b0025a7ce9d1618968bc70 - md5: 3d96df4d6b1c88455e05b94ce8a14a53 + version: 2.33.0 + build: hccf9d24_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-2.33.0-hccf9d24_1.conda + sha256: d3d4def86d880431928799ba90ca97e57c2f05677c03af8de2337502926c492c + md5: a2724014eb04f14bd71d35f45b062dd0 depends: - - __glibc >=2.17,<3.0.a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libcurl >=8.10.1,<9.0a0 + - libcurl >=8.11.1,<9.0a0 - libgcc >=13 - libgrpc >=1.67.1,<1.68.0a0 - - libprotobuf >=5.28.2,<5.28.3.0a0 + - libprotobuf >=5.28.3,<5.28.4.0a0 - libstdcxx >=13 - openssl >=3.4.0,<4.0a0 constrains: - - libgoogle-cloud 2.32.0 *_0 + - libgoogle-cloud 2.33.0 *_1 license: Apache-2.0 license_family: Apache - size: 1249557 - timestamp: 1733512191906 + size: 1253019 + timestamp: 1735649566849 - kind: conda name: libgoogle-cloud - version: 2.32.0 - build: h8d8be31_0 + version: 2.33.0 + build: hdbe95d5_1 + build_number: 1 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-2.32.0-h8d8be31_0.conda - sha256: 722e49dbdc4486105d9f5b79a7ba4f9064602fe20c4015e97684c898ab8d3386 - md5: d7ab9e0eb7d55eac4943913073de61d7 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-2.33.0-hdbe95d5_1.conda + sha256: ce95aca02451694a4154c7770b6addf4fb859abf17912de6ec947da8469a56ce + md5: 91de1fbab8610974c0094c266bc63435 depends: - __osx >=11.0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libcurl >=8.10.1,<9.0a0 + - libcurl >=8.11.1,<9.0a0 - libcxx >=18 - libgrpc >=1.67.1,<1.68.0a0 - - libprotobuf >=5.28.2,<5.28.3.0a0 + - libprotobuf >=5.28.3,<5.28.4.0a0 - openssl >=3.4.0,<4.0a0 constrains: - - libgoogle-cloud 2.32.0 *_0 + - libgoogle-cloud 2.33.0 *_1 license: Apache-2.0 license_family: Apache - size: 876210 - timestamp: 1733512539476 + size: 877594 + timestamp: 1735648230965 - kind: conda name: libgoogle-cloud-storage - version: 2.32.0 - build: h0121fbd_0 + version: 2.33.0 + build: h0121fbd_1 + build_number: 1 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.32.0-h0121fbd_0.conda - sha256: d1b53d17df38b52a4bc6d1fe6af0e611d6480ce10b0af570c84bd38c8aa83b91 - md5: 877a5ec0431a5af83bf0cd0522bfe661 + url: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.33.0-h0121fbd_1.conda + sha256: 41022523320ca8633a6c615710823e596efadb50f06d724e1a0c81e27994f257 + md5: b0cfb5044685a7a9fa43ae669124f0a0 depends: - __glibc >=2.17,<3.0.a0 - libabseil - libcrc32c >=1.1.2,<1.2.0a0 - libcurl - libgcc >=13 - - libgoogle-cloud 2.32.0 h804f50b_0 + - libgoogle-cloud 2.33.0 h2b5623c_1 - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - openssl license: Apache-2.0 license_family: Apache - size: 782108 - timestamp: 1733512329104 + size: 784357 + timestamp: 1735648759177 - kind: conda name: libgoogle-cloud-storage - version: 2.32.0 - build: h7081f7f_0 + version: 2.33.0 + build: h7081f7f_1 + build_number: 1 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-storage-2.32.0-h7081f7f_0.conda - sha256: 609df2cf376ba66460f40143f835fc567cae4458df80705587cd2efd59c09bf1 - md5: 28f5ab5cf95170dfacd05d2bb301e573 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-storage-2.33.0-h7081f7f_1.conda + sha256: c0524a22064bc17f5c037da09ba54cc9e767741ef645178e499750c44bec2531 + md5: af8e51382464d4cc2d0054977c40a732 depends: - __osx >=11.0 - libabseil - libcrc32c >=1.1.2,<1.2.0a0 - libcurl - libcxx >=18 - - libgoogle-cloud 2.32.0 h8d8be31_0 + - libgoogle-cloud 2.33.0 hdbe95d5_1 - libzlib >=1.3.1,<2.0a0 - openssl license: Apache-2.0 license_family: Apache - size: 526895 - timestamp: 1733513644846 + size: 526963 + timestamp: 1735649222088 - kind: conda name: libgoogle-cloud-storage - version: 2.32.0 - build: hb9b2b65_0 + version: 2.33.0 + build: hb9b2b65_1 + build_number: 1 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-storage-2.32.0-hb9b2b65_0.conda - sha256: e120e7b6c9c9d25baa8ae903106babdd3c969523ae25278a615ed9de4bd0fc35 - md5: 925ab0ca33baca4fcfee585cecb94169 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-storage-2.33.0-hb9b2b65_1.conda + sha256: 5eda1cbba68709b91b370b3792c9cfd7bec4ac4e2262f0887d12e1f000ae1191 + md5: 45df2267ff4d8ce532e8d300ce0b0829 depends: - libabseil - libcrc32c >=1.1.2,<1.2.0a0 - libcurl - libgcc >=13 - - libgoogle-cloud 2.32.0 h3888205_0 + - libgoogle-cloud 2.33.0 hccf9d24_1 - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - openssl license: Apache-2.0 license_family: Apache - size: 737964 - timestamp: 1733512457785 + size: 737518 + timestamp: 1735649773462 - kind: conda name: libgrpc version: 1.67.1 - build: h36c5df4_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libgrpc-1.67.1-h36c5df4_0.conda - sha256: 1f6673d9d866048c9cf28fd56e6874ffc7e2c53c47d7071cb367d5fc2dde16a7 - md5: b946137e362e98a55a77fdf0b20a7739 + build: h0a426d6_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libgrpc-1.67.1-h0a426d6_1.conda + sha256: 630edf63981818ff590367cb95fddbed0f5a390464d0952c90ec81de899e84a6 + md5: 8a3cba079d6ac985e7d73c76a678fbb4 depends: - - c-ares >=1.32.3,<2.0a0 + - __osx >=11.0 + - c-ares >=1.34.4,<2.0a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libgcc >=13 - - libprotobuf >=5.28.2,<5.28.3.0a0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 - libre2-11 >=2024.7.2 - - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - - openssl >=3.3.2,<4.0a0 + - openssl >=3.4.0,<4.0a0 - re2 constrains: - grpc-cpp =1.67.1 license: Apache-2.0 license_family: APACHE - size: 7131846 - timestamp: 1730236305327 + size: 5311706 + timestamp: 1735585137716 - kind: conda name: libgrpc version: 1.67.1 - build: hc2c308b_0 + build: h25350d4_1 + build_number: 1 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.67.1-hc2c308b_0.conda - sha256: 870550c1faf524e9a695262cd4c31441b18ad542f16893bd3c5dbc93106705f7 - md5: 4606a4647bfe857e3cfe21ca12ac3afb + url: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.67.1-h25350d4_1.conda + sha256: 014627485b3cf0ea18e04c0bab07be7fb98722a3aeeb58477acc7e1c3d2f911e + md5: 0c6497a760b99a926c7c12b74951a39c depends: - __glibc >=2.17,<3.0.a0 - - c-ares >=1.32.3,<2.0a0 + - c-ares >=1.34.4,<2.0a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - libgcc >=13 - - libprotobuf >=5.28.2,<5.28.3.0a0 + - libprotobuf >=5.28.3,<5.28.4.0a0 - libre2-11 >=2024.7.2 - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - - openssl >=3.3.2,<4.0a0 + - openssl >=3.4.0,<4.0a0 - re2 constrains: - grpc-cpp =1.67.1 license: Apache-2.0 license_family: APACHE - size: 7362336 - timestamp: 1730236333879 + size: 7792251 + timestamp: 1735584856826 - kind: conda name: libgrpc version: 1.67.1 - build: hc70892a_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libgrpc-1.67.1-hc70892a_0.conda - sha256: d2393fcd3c3584e5d58da4122f48bcf297567d2f6f14b3d1fcbd34fdd5040694 - md5: 624e27571fde34f8acc2afec840ac435 + build: hf7ccdd3_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libgrpc-1.67.1-hf7ccdd3_1.conda + sha256: 3fa173dc1d7456aac2b26937daae86a08432a31640e3d6569c62edc661fc9bbe + md5: 8fb41a425bebaeb3d0fa568503612e64 depends: - - __osx >=11.0 - - c-ares >=1.34.2,<2.0a0 + - c-ares >=1.34.4,<2.0a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libcxx >=17 - - libprotobuf >=5.28.2,<5.28.3.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 - libre2-11 >=2024.7.2 + - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - - openssl >=3.3.2,<4.0a0 + - openssl >=3.4.0,<4.0a0 - re2 constrains: - grpc-cpp =1.67.1 license: Apache-2.0 license_family: APACHE - size: 4882208 - timestamp: 1730236299095 + size: 7430006 + timestamp: 1735585769731 - kind: conda name: libiconv version: '1.17' @@ -4872,61 +4880,61 @@ packages: - kind: conda name: libparquet version: 18.1.0 - build: h081d1f1_6_cpu - build_number: 6 + build: h081d1f1_7_cpu + build_number: 7 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-h081d1f1_6_cpu.conda - sha256: c691a59f1ebb6cedbf827f49f6cf414e08b0eec911f589133e6a8321e8ac701c - md5: 68788df49ce7480187eb6387f15b2b67 + url: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-h081d1f1_7_cpu.conda + sha256: 55945b761130f60abdecf1551907ecfd05cb4a5958cf74d855b30c005ecb3592 + md5: b97013ef4e1dd2cf11594f06d5b5e83a depends: - __glibc >=2.17,<3.0.a0 - - libarrow 18.1.0 h44a453e_6_cpu + - libarrow 18.1.0 hd595efa_7_cpu - libgcc >=13 - libstdcxx >=13 - 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 + size: 1205598 + timestamp: 1735684849150 - kind: conda name: libparquet version: 18.1.0 - build: h636d7b7_6_cpu - build_number: 6 + build: h636d7b7_7_cpu + build_number: 7 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-h636d7b7_6_cpu.conda - sha256: 88c1e810bede65c54f1ebc51c14400f9e8cf0fc1f88a8c0a99210e2f5dfed582 - md5: 9b333c3a38e55f6c1b8733222e22f528 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-h636d7b7_7_cpu.conda + sha256: bf42e43542a90edd86ba5aa5fd4543671625f1bc35f62be32688f00e18bae990 + md5: 93de9ba66a20db32a2646d313794b3a8 depends: - __osx >=11.0 - - libarrow 18.1.0 h4a2f8bd_6_cpu + - libarrow 18.1.0 h0ad35bc_7_cpu - libcxx >=18 - 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 + size: 873251 + timestamp: 1735684582558 - kind: conda name: libparquet version: 18.1.0 - build: hfc78867_6_cpu - build_number: 6 + build: hfc78867_7_cpu + build_number: 7 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-hfc78867_6_cpu.conda - sha256: 38aab34c422519c530d0e9a3e0ffd1624db1c1e163983c46ae341e831b2eb6b5 - md5: 1ab6d4a9a982920b9dc5f2c700777b27 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-hfc78867_7_cpu.conda + sha256: 6dff9bbe731dc2cefe96bd9c7981d2cbef2b564a3152840a29c9b6a493ea50d9 + md5: 184bec7a9392ab6ba8134041e81971d6 depends: - - libarrow 18.1.0 h1b535d6_6_cpu + - libarrow 18.1.0 hb7781cd_7_cpu - libgcc >=13 - libstdcxx >=13 - 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 + size: 1117825 + timestamp: 1735685495511 - kind: conda name: libpng version: 1.6.44 @@ -4972,32 +4980,33 @@ packages: timestamp: 1726236639270 - kind: conda name: libprotobuf - version: 5.28.2 - build: h029595c_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.2-h029595c_0.conda - sha256: d8c7b6f851bfc53494d9b8e54d473c4f11ab26483a6e64df6f7967563df166b1 - md5: 538dbe0ad9f248e2e109abb9b6809ea5 + version: 5.28.3 + build: h3bd63a1_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.3-h3bd63a1_1.conda + sha256: f58a16b13ad53346903c833e266f83c3d770a43a432659b98710aed85ca885e7 + md5: bdbfea4cf45ae36652c6bbcc2e7ebe91 depends: + - __osx >=11.0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libgcc >=13 - - libstdcxx >=13 + - libcxx >=18 - libzlib >=1.3.1,<2.0a0 license: BSD-3-Clause license_family: BSD - size: 2802876 - timestamp: 1728564881988 + size: 2271580 + timestamp: 1735576361997 - kind: conda name: libprotobuf - version: 5.28.2 - build: h5b01275_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.2-h5b01275_0.conda - sha256: 5e8fd4aa00193c85602ce6101dd28fe31306dff85c9725048f6dc828dfa7c421 - md5: ab0bff36363bec94720275a681af8b83 + version: 5.28.3 + build: h44a3b7b_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.3-h44a3b7b_1.conda + sha256: ecb69f2b1668e784b41ba667493be846662d5ef702bef64fb2e013bb1364cdc4 + md5: 68f807f7cc13951652bbe048253fd405 depends: - - __glibc >=2.17,<3.0.a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - libgcc >=13 @@ -5005,75 +5014,77 @@ packages: - libzlib >=1.3.1,<2.0a0 license: BSD-3-Clause license_family: BSD - size: 2945348 - timestamp: 1728565355702 + size: 2788074 + timestamp: 1735576315676 - kind: conda name: libprotobuf - version: 5.28.2 - build: h8f0b736_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.2-h8f0b736_0.conda - sha256: f732a6fa918428e2d5ba61e78fe11bb44a002cc8f6bb74c94ee5b1297fefcfd8 - md5: d2cb5991f2fb8eb079c80084435e9ce6 + version: 5.28.3 + build: h6128344_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda + sha256: 51125ebb8b7152e4a4e69fd2398489c4ec8473195c27cde3cbdf1cb6d18c5493 + md5: d8703f1ffe5a06356f06467f1d0b9464 depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libcxx >=17 + - libgcc >=13 + - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 license: BSD-3-Clause license_family: BSD - size: 2374965 - timestamp: 1728565334796 + size: 2960815 + timestamp: 1735577210663 - kind: conda name: libre2-11 version: 2024.07.02 - build: h18dbdb1_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_1.conda - sha256: 96d4fdac28d5af38c38f90c22cb0aa9a90affae13ca8ba24bd1eb60b789df8ff - md5: f1800796b0efc4bbc5b001d845545111 + build: h07bc746_2 + build_number: 2 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h07bc746_2.conda + sha256: 112a73ad483353751d4c5d63648c69a4d6fcebf5e1b698a860a3f5124fc3db96 + md5: 6b1e3624d3488016ca4f1ca0c412efaa depends: + - __osx >=11.0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libgcc >=13 - - libstdcxx >=13 + - libcxx >=18 constrains: - re2 2024.07.02.* license: BSD-3-Clause license_family: BSD - size: 203516 - timestamp: 1728778974654 + size: 167155 + timestamp: 1735541067807 - kind: conda name: libre2-11 version: 2024.07.02 - build: h2348fd5_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h2348fd5_1.conda - sha256: 6facca42cfc85a05b33e484a8b0df7857cc092db34806946d022270098d8d20f - md5: 5a7065309a66097738be6a06fd04b7ef + build: h18dbdb1_2 + build_number: 2 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_2.conda + sha256: 862c20de0120f802e618dcb25913d00c5b82f91f4be60b2d46a774e851adc2f6 + md5: 9a7dbbaab49f76a6f36e5c9d98e323a7 depends: - - __osx >=11.0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libcxx >=17 + - libgcc >=13 + - libstdcxx >=13 constrains: - re2 2024.07.02.* license: BSD-3-Clause license_family: BSD - size: 165956 - timestamp: 1728779107218 + size: 204305 + timestamp: 1735540986919 - kind: conda name: libre2-11 version: 2024.07.02 - build: hbbce691_1 - build_number: 1 + build: hbbce691_2 + build_number: 2 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_1.conda - sha256: f8ad6a4f6d4fd54ebe3e5e712a01e663222fc57f49d16b6b8b10c30990dafb8f - md5: 2124de47357b7a516c0a3efd8f88c143 + url: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_2.conda + sha256: 4420f8362c71251892ba1eeb957c5e445e4e1596c0c651c28d0d8b415fe120c7 + md5: b2fede24428726dd867611664fb372e8 depends: - __glibc >=2.17,<3.0.a0 - libabseil * cxx17* @@ -5084,8 +5095,8 @@ packages: - re2 2024.07.02.* license: BSD-3-Clause license_family: BSD - size: 211096 - timestamp: 1728778964655 + size: 209793 + timestamp: 1735541054068 - kind: conda name: libsodium version: 1.0.20 @@ -5528,6 +5539,7 @@ packages: constrains: - libwebp 1.5.0 license: BSD-3-Clause + license_family: BSD size: 362623 timestamp: 1734779054659 - kind: conda @@ -5543,6 +5555,7 @@ packages: constrains: - libwebp 1.5.0 license: BSD-3-Clause + license_family: BSD size: 290013 timestamp: 1734777593617 - kind: conda @@ -5559,6 +5572,7 @@ packages: constrains: - libwebp 1.5.0 license: BSD-3-Clause + license_family: BSD size: 429973 timestamp: 1734777489810 - kind: conda @@ -5910,76 +5924,76 @@ packages: timestamp: 1733219945697 - kind: conda name: max - version: 25.1.0.dev2024122805 + version: 25.1.0.dev2025010605 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2024122805-release.conda - sha256: fe2812cf8bb718133a1ee6e2a720e0adb3a234443cd1bdb012ed3845fc100c7e - md5: d2ab5ff45c394ef59d4c89a35dbc0e20 - depends: - - max-core ==25.1.0.dev2024122805 release - - max-python >=25.1.0.dev2024122805,<26.0a0 - - mojo-jupyter ==25.1.0.dev2024122805 release - - mblack ==25.1.0.dev2024122805 release + url: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025010605-release.conda + sha256: f806f7b7519e01cd68fbae2c714d1c1a9e1e96f144e920ce51c47512f81a1db3 + md5: 1bae0e6863939e6792d7129bec77983c + depends: + - max-core ==25.1.0.dev2025010605 release + - max-python >=25.1.0.dev2025010605,<26.0a0 + - mojo-jupyter ==25.1.0.dev2025010605 release + - mblack ==25.1.0.dev2025010605 release license: LicenseRef-Modular-Proprietary - size: 9913 - timestamp: 1735363020600 + size: 9914 + timestamp: 1736140643481 - kind: conda name: max-core - version: 25.1.0.dev2024122805 + version: 25.1.0.dev2025010605 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2024122805-release.conda - sha256: d0f6942e8fb4461129dd0b3b459e5d975fa392661fbf9ce002992044249c7df0 - md5: 99412132bd807caa43dba507054a2691 + url: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025010605-release.conda + sha256: 315ad791e417ed45fcee42fe7227428bca1d77427c10b81fb5a65583a5844279 + md5: c40747b8b9245abb69db013a14266b6c depends: - - mblack ==25.1.0.dev2024122805 release + - mblack ==25.1.0.dev2025010605 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 245436370 - timestamp: 1735363025528 + size: 244726382 + timestamp: 1736140669107 - kind: conda name: max-core - version: 25.1.0.dev2024122805 + version: 25.1.0.dev2025010605 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2024122805-release.conda - sha256: 19aa7627330555204af1573e241f86ced1f34e5773fe2047f03d2df77d296de7 - md5: c83934dfd0b0e2285a2959be586f8e4b + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025010605-release.conda + sha256: dd574ac5ce9effc0f713ea63992a5a4aeaf8fa80f2c968a9c00c664703b70932 + md5: 65f814591335d2910a5e30d5f6968aff depends: - - mblack ==25.1.0.dev2024122805 release + - mblack ==25.1.0.dev2025010605 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 249341674 - timestamp: 1735363020598 + size: 248381825 + timestamp: 1736140643479 - kind: conda name: max-core - version: 25.1.0.dev2024122805 + version: 25.1.0.dev2025010605 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2024122805-release.conda - sha256: d65a30747c6623a9a73d02e35d617cf2425fc151839f18badbef093a045c1bd5 - md5: d45b98ffbd949783e9c8ee20e28a6970 + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025010605-release.conda + sha256: ff28dea1ddf5adb0586a5d6a41fb6b6d0a0ee332eb4440cbaffa9b041de16db0 + md5: 1e134821c4eae4e6fa711c1cd2b8cc00 depends: - - mblack ==25.1.0.dev2024122805 release + - mblack ==25.1.0.dev2025010605 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 214123206 - timestamp: 1735365284895 + size: 213059614 + timestamp: 1736141300718 - kind: conda name: max-python - version: 25.1.0.dev2024122805 + version: 25.1.0.dev2025010605 build: 3.12release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2024122805-3.12release.conda - sha256: 1666cdc4f1460979cb2bad7ddaa745256f137e03a32c8688a988f359bcc4a1b6 - md5: fda0864df873c814f836064daa86e4d6 + url: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025010605-3.12release.conda + sha256: 80e1b3a95eb37bd76396c470b8a17168fdd1b0a2e193d66981824760bd82e768 + md5: 28ecc247a48f0de9dee4f6fe6d1be095 depends: - - max-core ==25.1.0.dev2024122805 release + - max-core ==25.1.0.dev2025010605 release - python 3.12.* - fastapi - httpx @@ -6002,18 +6016,18 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 122818679 - timestamp: 1735363025537 + size: 122702106 + timestamp: 1736140669117 - kind: conda name: max-python - version: 25.1.0.dev2024122805 + version: 25.1.0.dev2025010605 build: 3.12release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2024122805-3.12release.conda - sha256: 00bb77ee09d7ec7aa407452fd11a227980cc273e738fbec28fe2c7f8df0b8d21 - md5: 6e0f158c866d00b4dd04602211e184cd + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025010605-3.12release.conda + sha256: 90a8fa8b7b654e35adc36cf2309898d4a965b5b85f0c6ac912ec1b7439d247c2 + md5: fc56c27a4041f32ce7f03c94141e6fd9 depends: - - max-core ==25.1.0.dev2024122805 release + - max-core ==25.1.0.dev2025010605 release - python 3.12.* - fastapi - httpx @@ -6036,18 +6050,18 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 126488257 - timestamp: 1735363020609 + size: 126373708 + timestamp: 1736140643490 - kind: conda name: max-python - version: 25.1.0.dev2024122805 + version: 25.1.0.dev2025010605 build: 3.12release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2024122805-3.12release.conda - sha256: 81c22f0a8d33e7d8091959a4bf837993246308712b22e384d0c853404ab45c15 - md5: 207d5360c0a7fcb6e8d7933e3a577a07 + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025010605-3.12release.conda + sha256: 6948694d15390b9baf752a38f17fa7c4e0712b3b71f893955037e65a84fb72c9 + md5: f7c5e210de943e91a2550a9a0ed51e59 depends: - - max-core ==25.1.0.dev2024122805 release + - max-core ==25.1.0.dev2025010605 release - python 3.12.* - fastapi - httpx @@ -6070,17 +6084,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 113429204 - timestamp: 1735365284899 + size: 113299681 + timestamp: 1736141300722 - kind: conda name: mblack - version: 25.1.0.dev2024122805 + version: 25.1.0.dev2025010605 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2024122805-release.conda - sha256: 46d7d50f46fc589cd4fd53c614020666b9ac4ea90d0d861bc2888ff8a8968fc7 - md5: e140a619b5afdf6730ee181c6ca0dd1d + url: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025010605-release.conda + sha256: 2166e3aa028121c737e9a7f3cde3711c8f87d83757045318467ee0d54da95fdc + md5: 90216ac95ad02c40a72aea621bb2d54e depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -6091,7 +6105,7 @@ packages: - python license: MIT size: 130809 - timestamp: 1735363020604 + timestamp: 1736140643485 - kind: conda name: mdurl version: 0.1.2 @@ -6110,21 +6124,21 @@ packages: timestamp: 1733255681319 - kind: conda name: mojo-jupyter - version: 25.1.0.dev2024122805 + version: 25.1.0.dev2025010605 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2024122805-release.conda - sha256: cdfcbb3354be4888b5b86eab0b3ee26c1fdaf9df9e9421e2fe60ab18cd053402 - md5: 6606e99ea0f956a5f786bc5a376c4fa2 + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025010605-release.conda + sha256: 5d25a6cbeb7e23d0e751085fd4a8728224f4fb46667007046322109437fde8cc + md5: 0d7c538d4488f3d729c380af437148e3 depends: - - max-core ==25.1.0.dev2024122805 release + - max-core ==25.1.0.dev2025010605 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22932 - timestamp: 1735363020605 + size: 22938 + timestamp: 1736140643486 - kind: conda name: multidict version: 6.1.0 @@ -6418,49 +6432,52 @@ packages: - kind: conda name: openssl version: 3.4.0 - build: h39f12f2_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.0-h39f12f2_0.conda - sha256: bd1d58ced46e75efa3b842c61642fd12272c69e9fe4d7261078bc082153a1d53 - md5: df307bbc703324722df0293c9ca2e418 + build: h7b32b05_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.0-h7b32b05_1.conda + sha256: f62f6bca4a33ca5109b6d571b052a394d836956d21b25b7ffd03376abf7a481f + md5: 4ce6875f75469b2757a65e10a5d05e31 depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 - ca-certificates + - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 2935176 - timestamp: 1731377561525 + size: 2937158 + timestamp: 1736086387286 - kind: conda name: openssl version: 3.4.0 - build: h86ecc28_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.0-h86ecc28_0.conda - sha256: 64dbbdd6384fa56338124783197f7ad9048c989a02264bcd2e07355e3570f113 - md5: b2f202b5bddafac824eb610b65dde98f + build: h81ee809_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.0-h81ee809_1.conda + sha256: 97772762abc70b3a537683ca9fc3ff3d6099eb64e4aba3b9c99e6fce48422d21 + md5: 22f971393637480bda8c679f374d8861 depends: + - __osx >=11.0 - ca-certificates - - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 3474825 - timestamp: 1731379200886 + size: 2936415 + timestamp: 1736086108693 - kind: conda name: openssl version: 3.4.0 - build: hb9d3cd8_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.0-hb9d3cd8_0.conda - sha256: 814b9dff1847b132c676ee6cc1a8cb2d427320779b93e1b6d76552275c128705 - md5: 23cc74f77eb99315c0360ec3533147a9 + build: hd08dc88_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.0-hd08dc88_1.conda + sha256: 60d34454b861501d7355f25a7b39fdb5de8d56fca49b5bcbe8b8142b7d82dce4 + md5: e21c4767e783a58c373fdb99de6211bf depends: - - __glibc >=2.17,<3.0.a0 - ca-certificates - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 2947466 - timestamp: 1731377666602 + size: 3469279 + timestamp: 1736088141230 - kind: conda name: opentelemetry-api version: 1.29.0 @@ -6592,16 +6609,16 @@ packages: - kind: conda name: orc version: 2.0.3 - build: h3c55218_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/orc-2.0.3-h3c55218_1.conda - sha256: 154b26bc4d586de33765a155c9b79ebd7f5bb36c2bbf4b8854e1631bca8d21af - md5: 0a51a3cf028b845c46ec0d1ea2d18629 + build: h0ff2369_2 + build_number: 2 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/orc-2.0.3-h0ff2369_2.conda + sha256: cca330695f3bdb8c0e46350c29cd4af3345865544e36f1d7c9ba9190ad22f5f4 + md5: 24b1897c0d24afbb70704ba998793b78 depends: - - libgcc >=13 - - libprotobuf >=5.28.2,<5.28.3.0a0 - - libstdcxx >=13 + - __osx >=11.0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 - libzlib >=1.3.1,<2.0a0 - lz4-c >=1.10.0,<1.11.0a0 - snappy >=1.2.1,<1.3.0a0 @@ -6609,21 +6626,21 @@ packages: - zstd >=1.5.6,<1.6.0a0 license: Apache-2.0 license_family: Apache - size: 1165179 - timestamp: 1733509923825 + size: 438520 + timestamp: 1735630624140 - kind: conda name: orc version: 2.0.3 - build: h97ab989_1 - build_number: 1 + build: h12ee42a_2 + build_number: 2 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/orc-2.0.3-h97ab989_1.conda - sha256: 9de7e2746fde57c9b7f08ee87142014f6bb9b2d3a506839ea3e98baa99711576 - md5: 2f46eae652623114e112df13fae311cf + url: https://conda.anaconda.org/conda-forge/linux-64/orc-2.0.3-h12ee42a_2.conda + sha256: dff5cc8023905782c86b3459055f26d4b97890e403b0698477c9fed15d8669cc + md5: 4f6f9f3f80354ad185e276c120eac3f0 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - - libprotobuf >=5.28.2,<5.28.3.0a0 + - libprotobuf >=5.28.3,<5.28.4.0a0 - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - lz4-c >=1.10.0,<1.11.0a0 @@ -6632,21 +6649,21 @@ packages: - zstd >=1.5.6,<1.6.0a0 license: Apache-2.0 license_family: Apache - size: 1189462 - timestamp: 1733509801323 + size: 1188881 + timestamp: 1735630209320 - kind: conda name: orc version: 2.0.3 - build: hbcee414_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/orc-2.0.3-hbcee414_1.conda - sha256: e5e72438a3cd967ebc774070e8c49500d2d6d4175f349400b327fee75d3bfc05 - md5: e808cf7819eaa1735c8790d7f9f482c7 + build: hdd485aa_2 + build_number: 2 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/orc-2.0.3-hdd485aa_2.conda + sha256: b6c67542352a86cdf143c3066d5cda855b74454a156eedcd8958b494c6a32a83 + md5: d19f01b42e5d6a2908b65df435aff42f depends: - - __osx >=11.0 - - libcxx >=18 - - libprotobuf >=5.28.2,<5.28.3.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - lz4-c >=1.10.0,<1.11.0a0 - snappy >=1.2.1,<1.3.0a0 @@ -6654,8 +6671,8 @@ packages: - zstd >=1.5.6,<1.6.0a0 license: Apache-2.0 license_family: Apache - size: 437391 - timestamp: 1733510118673 + size: 1167714 + timestamp: 1735630248837 - kind: conda name: packaging version: '24.2' @@ -6762,78 +6779,78 @@ packages: timestamp: 1733233471940 - kind: conda name: pillow - version: 11.0.0 - build: py312h5ab5af3_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/pillow-11.0.0-py312h5ab5af3_0.conda - sha256: 3cf43a5eb1f67f3a5f3ef1ec3a685f8767019cce24dbe46c4b76fee8a54fbacf - md5: 1c4bdfe659cfdedd372685ce2494e97b + version: 11.1.0 + build: py312h50aef2c_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-11.1.0-py312h50aef2c_0.conda + sha256: b29b7c915053e06a7a5b4118760202c572c9c35d23bd6ce8e73270b6a50e50ee + md5: 94d6ba8cd468668a9fb04193b0f4b36e depends: + - __osx >=11.0 - freetype >=2.12.1,<3.0a0 - lcms2 >=2.16,<3.0a0 - - libgcc >=13 - libjpeg-turbo >=3.0.0,<4.0a0 - libtiff >=4.7.0,<4.8.0a0 - - libwebp-base >=1.4.0,<2.0a0 + - libwebp-base >=1.5.0,<2.0a0 - libxcb >=1.17.0,<2.0a0 - libzlib >=1.3.1,<2.0a0 - - openjpeg >=2.5.2,<3.0a0 + - openjpeg >=2.5.3,<3.0a0 - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 - tk >=8.6.13,<8.7.0a0 license: HPND - size: 41756471 - timestamp: 1729068045876 + size: 42852329 + timestamp: 1735930118976 - kind: conda name: pillow - version: 11.0.0 - build: py312h7b63e92_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/pillow-11.0.0-py312h7b63e92_0.conda - sha256: 13a464bea02c0df0199c20ef6bad24a6bc336aaf55bf8d6a133d0fe664463224 - md5: 385f46a4df6f97892503a841121a9acf + version: 11.1.0 + build: py312h719f0cf_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/pillow-11.1.0-py312h719f0cf_0.conda + sha256: 7559556ffc44bda777f85c2e5acd6b5756fa5822c0271b329b7b9a3c6bb20349 + md5: 77e0ec0a6fc847d317f204aa15b59f6b depends: - - __glibc >=2.17,<3.0.a0 - freetype >=2.12.1,<3.0a0 - lcms2 >=2.16,<3.0a0 - libgcc >=13 - libjpeg-turbo >=3.0.0,<4.0a0 - libtiff >=4.7.0,<4.8.0a0 - - libwebp-base >=1.4.0,<2.0a0 + - libwebp-base >=1.5.0,<2.0a0 - libxcb >=1.17.0,<2.0a0 - libzlib >=1.3.1,<2.0a0 - - openjpeg >=2.5.2,<3.0a0 + - openjpeg >=2.5.3,<3.0a0 - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 - tk >=8.6.13,<8.7.0a0 license: HPND - size: 41948418 - timestamp: 1729065846594 + size: 41362848 + timestamp: 1735932311857 - kind: conda name: pillow - version: 11.0.0 - build: py312haf37ca6_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-11.0.0-py312haf37ca6_0.conda - sha256: 727b4c3faecdb6f6809cf20c5f32d2df4af34e0d5b9146b7588383bcba7990e8 - md5: dc9b51fbd2b6f7fea9b5123458864dbb + version: 11.1.0 + build: py312h80c1187_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/pillow-11.1.0-py312h80c1187_0.conda + sha256: 5c347962202b55ae4d8a463e0555c5c6ca33396266a08284bf1384399894e541 + md5: d3894405f05b2c0f351d5de3ae26fa9c depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 - freetype >=2.12.1,<3.0a0 - lcms2 >=2.16,<3.0a0 + - libgcc >=13 - libjpeg-turbo >=3.0.0,<4.0a0 - libtiff >=4.7.0,<4.8.0a0 - - libwebp-base >=1.4.0,<2.0a0 + - libwebp-base >=1.5.0,<2.0a0 - libxcb >=1.17.0,<2.0a0 - libzlib >=1.3.1,<2.0a0 - - openjpeg >=2.5.2,<3.0a0 + - openjpeg >=2.5.3,<3.0a0 - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 - tk >=8.6.13,<8.7.0a0 license: HPND - size: 41737424 - timestamp: 1729065920347 + size: 42749785 + timestamp: 1735929845390 - kind: conda name: platformdirs version: 4.3.6 @@ -6918,12 +6935,12 @@ packages: timestamp: 1733392308901 - kind: conda name: protobuf - version: 5.28.2 + version: 5.28.3 build: py312h2ec8cdc_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/protobuf-5.28.2-py312h2ec8cdc_0.conda - sha256: 4884f8161602f0148ebbc1af8d3176cec80b96c83243f68aafd651986b573817 - md5: 586bead4a9dfa46faf88deb7d3a742bb + url: https://conda.anaconda.org/conda-forge/linux-64/protobuf-5.28.3-py312h2ec8cdc_0.conda + sha256: acb2e0ee948e3941f8ed191cb77f654e06538638aed8ccd71cbc78a15242ebbb + md5: 9d7e427d159c1b2d516cc047ff177c48 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -6931,19 +6948,19 @@ packages: - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 constrains: - - libprotobuf 5.28.2 + - libprotobuf 5.28.3 license: BSD-3-Clause license_family: BSD - size: 464548 - timestamp: 1728669645013 + size: 464794 + timestamp: 1731366525051 - kind: conda name: protobuf - version: 5.28.2 + version: 5.28.3 build: py312h6f74592_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/protobuf-5.28.2-py312h6f74592_0.conda - sha256: f874ffd38b9ae2b810e9d2e43fd8d3b778cdeaf7dea4a3e6ee4adeafe2d936cf - md5: 4b9b22bd7c53d938b207f9d0f79db183 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/protobuf-5.28.3-py312h6f74592_0.conda + sha256: 9c575d5035c7ecb114ab9e17906c0a54087d9598dd6a2104c02fe33f0a29dd46 + md5: 06513608c94fb1c1b17136ace77063a9 depends: - libgcc >=13 - libstdcxx >=13 @@ -6951,31 +6968,31 @@ packages: - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 constrains: - - libprotobuf 5.28.2 + - libprotobuf 5.28.3 license: BSD-3-Clause license_family: BSD - size: 472764 - timestamp: 1728669483611 + size: 473242 + timestamp: 1731366577844 - kind: conda name: protobuf - version: 5.28.2 - build: py312hf02c72a_0 + version: 5.28.3 + build: py312hd8f9ff3_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/protobuf-5.28.2-py312hf02c72a_0.conda - sha256: dbcec117510ced5c12097e3eb06ebbf4512dc255733a9ace33c4249fb7e6a364 - md5: 6fda46c82abd0a080ca33de7d16ca877 + url: https://conda.anaconda.org/conda-forge/osx-arm64/protobuf-5.28.3-py312hd8f9ff3_0.conda + sha256: 9d572a97419bdace14d7c7cc8cc8c4bf2dcb22b56965dac87a27fbdb5061b926 + md5: 5afbe52a59f04dd1fe566d0d17590d7e depends: - __osx >=11.0 - - libcxx >=17 + - libcxx >=18 - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 constrains: - - libprotobuf 5.28.2 + - libprotobuf 5.28.3 license: BSD-3-Clause license_family: BSD - size: 447369 - timestamp: 1728669902591 + size: 448803 + timestamp: 1731367010746 - kind: conda name: pthread-stubs version: '0.4' @@ -7249,21 +7266,21 @@ packages: timestamp: 1734571986644 - kind: conda name: pydantic-settings - version: 2.7.0 + version: 2.7.1 build: pyh3cfb1c2_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.7.0-pyh3cfb1c2_0.conda - sha256: dd1ac7c8b6a189c8aa18f6c7df019d8f6df495300a259e3fbebdb542fc955c3b - md5: d9f19a7c4199249fa229891b573b6f9b + url: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.7.1-pyh3cfb1c2_0.conda + sha256: 082fb1ec29917d2c9ed6a862cb8eb9beb88c208ea62c9fef1aeb5f4f3e0e0b06 + md5: d71d76b62bed332b037d7adfc0f3989a depends: - pydantic >=2.7.0 - python >=3.9 - python-dotenv >=0.21.0 license: MIT license_family: MIT - size: 31426 - timestamp: 1734127929720 + size: 31822 + timestamp: 1735650532951 - kind: conda name: pygments version: 2.18.0 @@ -7755,48 +7772,48 @@ packages: - kind: conda name: re2 version: 2024.07.02 - build: h2d3a13d_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/re2-2024.07.02-h2d3a13d_1.conda - sha256: 55e7be480bfb979fa8595a16d7f2adea3a5ac9a77b2e97cd0f7ac40e989edb6c - md5: 83f4e47229834c895a92c18383e1cd9d + build: h6589ca4_2 + build_number: 2 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/re2-2024.07.02-h6589ca4_2.conda + sha256: 4d3799c05f8f662922a0acd129d119774760a3281b883603678e128d1cb307fb + md5: 7a8b4ad8c58a3408ca89d78788c78178 depends: - - libre2-11 2024.07.02 h18dbdb1_1 + - libre2-11 2024.07.02 h07bc746_2 license: BSD-3-Clause license_family: BSD - size: 26747 - timestamp: 1728778986331 + size: 26861 + timestamp: 1735541088455 - kind: conda name: re2 version: 2024.07.02 - build: h77b4e00_1 - build_number: 1 + build: h9925aae_2 + build_number: 2 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/re2-2024.07.02-h77b4e00_1.conda - sha256: c1721cb80f7201652fc9801f49c214c88aee835d957f2376e301bd40a8415742 - md5: 01093ff37c1b5e6bf9f17c0116747d11 + url: https://conda.anaconda.org/conda-forge/linux-64/re2-2024.07.02-h9925aae_2.conda + sha256: d213c44958d49ce7e0d4d5b81afec23640cce5016685dbb2d23571a99caa4474 + md5: e84ddf12bde691e8ec894b00ea829ddf depends: - - libre2-11 2024.07.02 hbbce691_1 + - libre2-11 2024.07.02 hbbce691_2 license: BSD-3-Clause license_family: BSD - size: 26665 - timestamp: 1728778975855 + size: 26786 + timestamp: 1735541074034 - kind: conda name: re2 version: 2024.07.02 - build: hcd0e937_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/re2-2024.07.02-hcd0e937_1.conda - sha256: eebddde6cb10b146507810b701ef6df122d5309cd5151a39d0828aa44dc53725 - md5: 19e29f2ccc9168eb0a39dc40c04c0e21 + build: haa97905_2 + build_number: 2 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/re2-2024.07.02-haa97905_2.conda + sha256: 040848655df9119bae5a549fb5c8956a5537120859416c1d9d0712b7bac9f12e + md5: 1bf0135339b4a7419a198a795d2d4be0 depends: - - libre2-11 2024.07.02 h2348fd5_1 + - libre2-11 2024.07.02 h18dbdb1_2 license: BSD-3-Clause license_family: BSD - size: 26860 - timestamp: 1728779123653 + size: 26830 + timestamp: 1735540999398 - kind: conda name: readline version: '8.2' @@ -7988,12 +8005,12 @@ packages: timestamp: 1734415467047 - kind: conda name: safetensors - version: 0.4.5 + version: 0.5.0 build: py312h12e396e_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/safetensors-0.4.5-py312h12e396e_0.conda - sha256: e44515f875c10efb5e041efcb250dfd18f2cb66ec3f268237549ead6284c6922 - md5: 3b87a00bcaab069172d6cef8124b7142 + url: https://conda.anaconda.org/conda-forge/linux-64/safetensors-0.5.0-py312h12e396e_0.conda + sha256: f9d0a4fbfbd2bcded116b81afd69d00aa5d5bac0d431dd47737cec1b1d24c2e2 + md5: 4b33e7c3e9bbc3936e08150fc9e17708 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -8003,16 +8020,16 @@ packages: - __glibc >=2.17 license: Apache-2.0 license_family: APACHE - size: 402547 - timestamp: 1725632183154 + size: 424699 + timestamp: 1735917812729 - kind: conda name: safetensors - version: 0.4.5 + version: 0.5.0 build: py312h8cbf658_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/safetensors-0.4.5-py312h8cbf658_0.conda - sha256: e83ebeaba4a07bbe4a1d6c7eef0b4f7ae19901ef365bca043808d16e4c8faad8 - md5: 82ef253c37308b082a478fb92924cad6 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/safetensors-0.5.0-py312h8cbf658_0.conda + sha256: aee581ce5c744f81ac4848b1810a88a750041ef91da646234f75092a8b4e06d1 + md5: 9c317f54bd3c95a830e98b7baee11ea9 depends: - libgcc >=13 - python >=3.12,<3.13.0a0 @@ -8022,16 +8039,16 @@ packages: - __glibc >=2.17 license: Apache-2.0 license_family: APACHE - size: 400284 - timestamp: 1725632278147 + size: 408792 + timestamp: 1735917879258 - kind: conda name: safetensors - version: 0.4.5 - build: py312he431725_0 + version: 0.5.0 + build: py312hcd83bfe_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/safetensors-0.4.5-py312he431725_0.conda - sha256: 93a085d0d64237db7f4ff395c446f268c575dc2c324d8e3e5c5d7d836896295e - md5: ccb978cf1e3151c25a44c4ae65c1f20e + url: https://conda.anaconda.org/conda-forge/osx-arm64/safetensors-0.5.0-py312hcd83bfe_0.conda + sha256: 8992f78362793a465c3009be2fd80582c93e2151bc17d07ebd39ce7af757358a + md5: acbbbac2271653f4914cef842a84190f depends: - __osx >=11.0 - python >=3.12,<3.13.0a0 @@ -8041,8 +8058,8 @@ packages: - __osx >=11.0 license: Apache-2.0 license_family: APACHE - size: 353606 - timestamp: 1725632294079 + size: 377533 + timestamp: 1735918206452 - kind: conda name: shellingham version: 1.5.4 @@ -8153,6 +8170,7 @@ packages: - python >=3.9 - starlette >=0.41.3 license: BSD-3-Clause + license_family: BSD size: 15324 timestamp: 1735126414893 - kind: conda @@ -8337,18 +8355,19 @@ packages: - kind: conda name: tqdm version: 4.67.1 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda - sha256: 5673b7104350a6998cb86cccf1d0058217d86950e8d6c927d8530606028edb1d - md5: 4085c9db273a148e149c03627350e22c + url: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + sha256: 11e2c85468ae9902d24a27137b6b39b4a78099806e551d390e394a8c34b48e40 + md5: 9efbfdc37242619130ea42b1cc4ed861 depends: - colorama - - python >=3.7 + - python >=3.9 license: MPL-2.0 or MIT - size: 89484 - timestamp: 1732497312317 + size: 89498 + timestamp: 1735661472632 - kind: conda name: traitlets version: 5.14.3 From 8412429b4c3706ca42bdc6ab4ad05efbde706dda Mon Sep 17 00:00:00 2001 From: Jack Clayton Date: Tue, 7 Jan 2025 05:51:09 +1000 Subject: [PATCH 150/509] [stdlib] Remove legacy `Int` SIMD ctors There were some legacy SIMD ctors still in `Int` that are now covered by the `Intable` trait and `SIMD.__int__`. MODULAR_ORIG_COMMIT_REV_ID: 5b0378be3f5df299f2abf014c86fe71f4e7fcc0e --- stdlib/benchmarks/collections/bench_dict.mojo | 4 +- stdlib/src/builtin/file.mojo | 11 ++--- stdlib/src/builtin/int.mojo | 45 ------------------- stdlib/src/builtin/object.mojo | 6 +-- 4 files changed, 11 insertions(+), 55 deletions(-) diff --git a/stdlib/benchmarks/collections/bench_dict.mojo b/stdlib/benchmarks/collections/bench_dict.mojo index 23b5ad9f8c..359d922c5e 100644 --- a/stdlib/benchmarks/collections/bench_dict.mojo +++ b/stdlib/benchmarks/collections/bench_dict.mojo @@ -30,7 +30,7 @@ from bit import next_power_of_two fn make_dict[size: Int]() -> Dict[Int, Int]: var d = Dict[Int, Int]() for i in range(0, size): - d[i] = random.random_si64(0, size).value + d[i] = int(random.random_si64(0, size)) return d @@ -62,7 +62,7 @@ fn bench_dict_insert[size: Int](mut b: Bencher) raises: @parameter fn call_fn() raises: for key in range(size, size + 100): - items[key] = random.random_si64(0, size).value + items[key] = int(random.random_si64(0, size)) b.iter[call_fn]() keep(bool(items)) diff --git a/stdlib/src/builtin/file.mojo b/stdlib/src/builtin/file.mojo index 1692a3458d..c622989871 100644 --- a/stdlib/src/builtin/file.mojo +++ b/stdlib/src/builtin/file.mojo @@ -472,11 +472,12 @@ struct FileHandle: return self^ fn _get_raw_fd(self) -> Int: - var i64_res = external_call[ - "KGEN_CompilerRT_IO_GetFD", - Int64, - ](self.handle) - return Int(i64_res.value) + return int( + external_call[ + "KGEN_CompilerRT_IO_GetFD", + Int64, + ](self.handle) + ) fn open[ diff --git a/stdlib/src/builtin/int.mojo b/stdlib/src/builtin/int.mojo index d90969f07f..698722f6f1 100644 --- a/stdlib/src/builtin/int.mojo +++ b/stdlib/src/builtin/int.mojo @@ -349,51 +349,6 @@ struct Int( """ self.value = value - @doc_private - @always_inline("nodebug") - @implicit - fn __init__(out self, value: __mlir_type.`!pop.scalar`): - """Construct Int from the given Int16 value. - - Args: - value: The init value. - """ - self = Self( - __mlir_op.`pop.cast`[_type = __mlir_type.`!pop.scalar`]( - value - ) - ) - - @doc_private - @always_inline("nodebug") - @implicit - fn __init__(out self, value: __mlir_type.`!pop.scalar`): - """Construct Int from the given Int32 value. - - Args: - value: The init value. - """ - self = Self( - __mlir_op.`pop.cast`[_type = __mlir_type.`!pop.scalar`]( - value - ) - ) - - @doc_private - @always_inline("nodebug") - @implicit - fn __init__(out self, value: __mlir_type.`!pop.scalar`): - """Construct Int from the given Int64 value. - - Args: - value: The init value. - """ - self = Self( - __mlir_op.`pop.cast`[_type = __mlir_type.`!pop.scalar`]( - value - ) - ) - @doc_private @always_inline("nodebug") @implicit diff --git a/stdlib/src/builtin/object.mojo b/stdlib/src/builtin/object.mojo index 0165d05249..cdd023ce36 100644 --- a/stdlib/src/builtin/object.mojo +++ b/stdlib/src/builtin/object.mojo @@ -1824,10 +1824,10 @@ struct object( @always_inline fn _convert_index_to_int(i: object) raises -> Int: if i._value.is_bool(): - return i._value.convert_bool_to_int().get_as_int().value + return int(i._value.convert_bool_to_int().get_as_int()) elif not i._value.is_int(): raise Error("TypeError: string indices must be integers") - return i._value.get_as_int().value + return int(i._value.get_as_int()) @always_inline fn __getitem__(self, i: object) raises -> object: @@ -1853,7 +1853,7 @@ struct object( var char = self._value.get_as_string().data[index] impl.data.init_pointee_move(char) return object(impl) - return self._value.get_list_element(i._value.get_as_int().value) + return self._value.get_list_element(int(i._value.get_as_int())) @always_inline fn __getitem__(self, *index: object) raises -> object: From 13296ee8d28ba92b0460675f164099c433ef3d34 Mon Sep 17 00:00:00 2001 From: "Ahmed S. Taei" Date: Mon, 6 Jan 2025 12:26:52 -0800 Subject: [PATCH 151/509] [stdlib] Remove FP8 SIMD constrains Otherwise we can't construct host data for FP8 tests. MODULAR_ORIG_COMMIT_REV_ID: 604d7e27bfdfc6e9c753119b07fb1b1e6281534e --- stdlib/src/builtin/simd.mojo | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/stdlib/src/builtin/simd.mojo b/stdlib/src/builtin/simd.mojo index 7f4a0e8576..0a56cdd820 100644 --- a/stdlib/src/builtin/simd.mojo +++ b/stdlib/src/builtin/simd.mojo @@ -184,17 +184,6 @@ fn _simd_construction_checks[type: DType, size: Int](): not (type is DType.bfloat16 and has_neon()), "bf16 is not supported for ARM architectures", ]() - constrained[ - not (type.is_float8() and not _has_native_f8_support()), - "f8 is not supported on non sm_89 and sm_90 architectures", - ]() - constrained[ - not ( - type in (DType.float8e4m3fnuz, DType.float8e5m2fnuz) - and not is_amd_gpu() - ), - "f8 fnuz variants is only supported for AMD GPU.", - ]() @always_inline("nodebug") From 3f23359edc03771ef5f11a22afd8a28aad5ed471 Mon Sep 17 00:00:00 2001 From: Connor Gray Date: Mon, 6 Jan 2025 16:01:06 -0600 Subject: [PATCH 152/509] [stdlib] polish: Take `StringSlice` instead of `String` in `atol()`/`atof()` (#53329) This changes several standard library functions to take a `StringSlice` instead of a `String`. Taking `String` requires that the passed in string value had been heap allocated, which may not need to be the case if the string was a literal, or if the calling code itself was passed only a `StringSlice`. MODULAR_ORIG_COMMIT_REV_ID: 452007e585132cb3dedf8f6698d31b6b21948cd6 --- docs/changelog.md | 7 ++ stdlib/src/collections/string/string.mojo | 118 ++++++++---------- .../src/collections/string/string_slice.mojo | 6 +- stdlib/src/utils/stringref.mojo | 4 +- .../test/collections/string/test_string.mojo | 74 +++++------ 5 files changed, 101 insertions(+), 108 deletions(-) diff --git a/docs/changelog.md b/docs/changelog.md index 69c235f28c..90b7c0ffc0 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -93,6 +93,13 @@ what we publish. a `StringSlice` from a buffer containing UTF-8 encoded data. This method will raise if the buffer contents are not valid UTF-8. +- Several standard library functions have been changed to take `StringSlice` + instead of `String`. This generalizes them to be used for any appropriately + encoded string in memory, without requiring that the string be heap allocated. + + - `atol()` + - `atof()` + - The `ExplicitlyCopyable` trait has changed to require a `fn copy(self) -> Self` method. Previously, an initializer with the signature `fn __init__(out self, *, other: Self)` had been required by diff --git a/stdlib/src/collections/string/string.mojo b/stdlib/src/collections/string/string.mojo index b31dbf6a49..0bbc5d09a4 100644 --- a/stdlib/src/collections/string/string.mojo +++ b/stdlib/src/collections/string/string.mojo @@ -229,11 +229,42 @@ fn ascii(value: String) -> String: # ===----------------------------------------------------------------------=== # -fn _atol(str_slice: StringSlice, base: Int = 10) raises -> Int: - """Implementation of `atol` for StringSlice inputs. +fn atol(str_slice: StringSlice, base: Int = 10) raises -> Int: + """Parses and returns the given string as an integer in the given base. + + If base is set to 0, the string is parsed as an Integer literal, with the + following considerations: + - '0b' or '0B' prefix indicates binary (base 2) + - '0o' or '0O' prefix indicates octal (base 8) + - '0x' or '0X' prefix indicates hexadecimal (base 16) + - Without a prefix, it's treated as decimal (base 10) + + Args: + str_slice: A string to be parsed as an integer in the given base. + base: Base used for conversion, value must be between 2 and 36, or 0. - Please see its docstring for details. + Returns: + An integer value that represents the string. + + Raises: + If the given string cannot be parsed as an integer value or if an + incorrect base is provided. + + Examples: + >>> atol("32") + 32 + >>> atol("FF", 16) + 255 + >>> atol("0xFF", 0) + 255 + >>> atol("0b1010", 0) + 10 + + Notes: + This follows [Python's integer literals]( + https://docs.python.org/3/reference/lexical_analysis.html#integers). """ + if (base != 0) and (base < 2 or base > 36): raise Error("Base must be >= 2 and <= 36, or 0.") if not str_slice: @@ -427,55 +458,28 @@ fn _identify_base(str_slice: StringSlice, start: Int) -> Tuple[Int, Int]: return 10, start -fn atol(str: String, base: Int = 10) raises -> Int: - """Parses and returns the given string as an integer in the given base. +fn _atof_error(str_ref: StringSlice) -> Error: + return Error("String is not convertible to float: '" + str(str_ref) + "'") - If base is set to 0, the string is parsed as an Integer literal, with the - following considerations: - - '0b' or '0B' prefix indicates binary (base 2) - - '0o' or '0O' prefix indicates octal (base 8) - - '0x' or '0X' prefix indicates hexadecimal (base 16) - - Without a prefix, it's treated as decimal (base 10) - Args: - str: A string to be parsed as an integer in the given base. - base: Base used for conversion, value must be between 2 and 36, or 0. +fn atof(str_slice: StringSlice) raises -> Float64: + """Parses the given string as a floating point and returns that value. - Returns: - An integer value that represents the string. + For example, `atof("2.25")` returns `2.25`. Raises: - If the given string cannot be parsed as an integer value or if an - incorrect base is provided. + If the given string cannot be parsed as an floating point value, for + example in `atof("hi")`. - Examples: - >>> atol("32") - 32 - >>> atol("FF", 16) - 255 - >>> atol("0xFF", 0) - 255 - >>> atol("0b1010", 0) - 10 + Args: + str_slice: A string to be parsed as a floating point. - Notes: - This follows [Python's integer literals]( - https://docs.python.org/3/reference/lexical_analysis.html#integers). + Returns: + An floating point value that represents the string, or otherwise raises. """ - return _atol(str.as_string_slice(), base) - -fn _atof_error(str_ref: StringSlice) -> Error: - return Error("String is not convertible to float: '" + str(str_ref) + "'") - - -fn _atof(str_ref: StringSlice) raises -> Float64: - """Implementation of `atof` for StringRef inputs. - - Please see its docstring for details. - """ - if not str_ref: - raise _atof_error(str_ref) + if not str_slice: + raise _atof_error(str_slice) var result: Float64 = 0.0 var exponent: Int = 0 @@ -492,9 +496,9 @@ fn _atof(str_ref: StringSlice) raises -> Float64: alias ord_E = UInt8(ord("E")) var start: Int = 0 - var str_ref_strip = str_ref.strip() - var str_len = len(str_ref_strip) - var buff = str_ref_strip.unsafe_ptr() + var str_slice_strip = str_slice.strip() + var str_len = len(str_slice_strip) + var buff = str_slice_strip.unsafe_ptr() # check sign, inf, nan if buff[start] == ord_plus: @@ -543,13 +547,13 @@ fn _atof(str_ref: StringSlice) raises -> Float64: start += 1 exponent += sign * shift if not has_number: - raise _atof_error(str_ref) + raise _atof_error(str_slice) # check for f/F at the end if buff[start] == ord_f or buff[start] == ord_F: start += 1 # check if string got fully parsed if start != str_len: - raise _atof_error(str_ref) + raise _atof_error(str_slice) # apply shift # NOTE: Instead of `var result *= 10.0 ** exponent`, we calculate a positive # integer factor as shift and multiply or divide by it based on the shift @@ -564,24 +568,6 @@ fn _atof(str_ref: StringSlice) raises -> Float64: return result * sign -fn atof(str: String) raises -> Float64: - """Parses the given string as a floating point and returns that value. - - For example, `atof("2.25")` returns `2.25`. - - Raises: - If the given string cannot be parsed as an floating point value, for - example in `atof("hi")`. - - Args: - str: A string to be parsed as a floating point. - - Returns: - An floating point value that represents the string, or otherwise raises. - """ - return _atof(str.as_string_slice()) - - # ===----------------------------------------------------------------------=== # # isdigit # ===----------------------------------------------------------------------=== # diff --git a/stdlib/src/collections/string/string_slice.mojo b/stdlib/src/collections/string/string_slice.mojo index f632e806fd..3bcaf35268 100644 --- a/stdlib/src/collections/string/string_slice.mojo +++ b/stdlib/src/collections/string/string_slice.mojo @@ -25,7 +25,7 @@ from bit import count_leading_zeros from collections import List, Optional from collections.string.format import _CurlyEntryFormattable, _FormatCurlyEntry from collections.string._utf8_validation import _is_valid_utf8 -from collections.string.string import _atof, _atol, _isspace +from collections.string.string import _isspace from memory import UnsafePointer, memcmp, memcpy, Span from memory.memory import _memcmp_impl_unconstrained from sys import bitwidthof, simdwidthof @@ -620,7 +620,7 @@ struct StringSlice[mut: Bool, //, origin: Origin[mut]]( Returns: An integer value that represents the string, or otherwise raises. """ - return _atol(self) + return atol(self) @always_inline fn __float__(self) raises -> Float64: @@ -630,7 +630,7 @@ struct StringSlice[mut: Bool, //, origin: Origin[mut]]( Returns: A float value that represents the string, or otherwise raises. """ - return _atof(self) + return atof(self) fn __mul__(self, n: Int) -> String: """Concatenates the string `n` times. diff --git a/stdlib/src/utils/stringref.mojo b/stdlib/src/utils/stringref.mojo index 0b6877c9a1..bcf0a5669f 100644 --- a/stdlib/src/utils/stringref.mojo +++ b/stdlib/src/utils/stringref.mojo @@ -14,7 +14,7 @@ """ from collections.string import StringSlice -from collections.string.string import _atol, _isspace +from collections.string.string import _isspace from hashlib._hasher import _HashableWithHasher, _Hasher from sys import simdwidthof from sys.ffi import c_char @@ -380,7 +380,7 @@ struct StringRef( var str_slice = StringSlice[ImmutableAnyOrigin]( unsafe_from_utf8_strref=self ) - return _atol(str_slice) + return atol(str_slice) @always_inline fn __len__(self) -> Int: diff --git a/stdlib/test/collections/string/test_string.mojo b/stdlib/test/collections/string/test_string.mojo index 74ae492479..ce7b2cf7d4 100644 --- a/stdlib/test/collections/string/test_string.mojo +++ b/stdlib/test/collections/string/test_string.mojo @@ -363,13 +363,13 @@ def test_string_indexing(): def test_atol(): # base 10 - assert_equal(375, atol(String("375"))) - assert_equal(1, atol(String("001"))) - assert_equal(5, atol(String(" 005"))) - assert_equal(13, atol(String(" 013 "))) - assert_equal(-89, atol(String("-89"))) - assert_equal(-52, atol(String(" -52"))) - assert_equal(-69, atol(String(" -69 "))) + assert_equal(375, atol("375")) + assert_equal(1, atol("001")) + assert_equal(5, atol(" 005")) + assert_equal(13, atol(" 013 ")) + assert_equal(-89, atol("-89")) + assert_equal(-52, atol(" -52")) + assert_equal(-69, atol(" -69 ")) assert_equal(1_100_200, atol(" 1_100_200")) # other bases @@ -393,12 +393,12 @@ def test_atol(): with assert_raises( contains="String is not convertible to integer with base 10: '9.03'" ): - _ = atol(String("9.03")) + _ = atol("9.03") with assert_raises( contains="String is not convertible to integer with base 10: ' 10 1'" ): - _ = atol(String(" 10 1")) + _ = atol(" 10 1") # start/end with underscore double underscores with assert_raises( @@ -455,12 +455,12 @@ def test_atol(): with assert_raises( contains="String is not convertible to integer with base 10: ''" ): - _ = atol(String("")) + _ = atol("") with assert_raises( contains="String expresses an integer too large to store in Int." ): - _ = atol(String("9223372036854775832")) + _ = atol("9223372036854775832") def test_atol_base_0(): @@ -521,63 +521,63 @@ def test_atol_base_0(): def test_atof(): - assert_equal(375.0, atof(String("375.f"))) - assert_equal(1.0, atof(String("001."))) - assert_equal(+5.0, atof(String(" +005."))) - assert_equal(13.0, atof(String(" 013.f "))) - assert_equal(-89, atof(String("-89"))) - assert_equal(-0.3, atof(String(" -0.3"))) - assert_equal(-69e3, atof(String(" -69E+3 "))) - assert_equal(123.2e1, atof(String(" 123.2E1 "))) - assert_equal(23e3, atof(String(" 23E3 "))) - assert_equal(989343e-13, atof(String(" 989343E-13 "))) - assert_equal(1.123, atof(String(" 1.123f"))) - assert_equal(0.78, atof(String(" .78 "))) - assert_equal(121234.0, atof(String(" 121234. "))) - assert_equal(985031234.0, atof(String(" 985031234.F "))) - assert_equal(FloatLiteral.negative_zero, atof(String("-0"))) - assert_equal(FloatLiteral.nan, atof(String(" nan"))) - assert_equal(FloatLiteral.infinity, atof(String(" inf "))) - assert_equal(FloatLiteral.negative_infinity, atof(String("-inf "))) + assert_equal(375.0, atof("375.f")) + assert_equal(1.0, atof("001.")) + assert_equal(+5.0, atof(" +005.")) + assert_equal(13.0, atof(" 013.f ")) + assert_equal(-89, atof("-89")) + assert_equal(-0.3, atof(" -0.3")) + assert_equal(-69e3, atof(" -69E+3 ")) + assert_equal(123.2e1, atof(" 123.2E1 ")) + assert_equal(23e3, atof(" 23E3 ")) + assert_equal(989343e-13, atof(" 989343E-13 ")) + assert_equal(1.123, atof(" 1.123f")) + assert_equal(0.78, atof(" .78 ")) + assert_equal(121234.0, atof(" 121234. ")) + assert_equal(985031234.0, atof(" 985031234.F ")) + assert_equal(FloatLiteral.negative_zero, atof("-0")) + assert_equal(FloatLiteral.nan, atof(" nan")) + assert_equal(FloatLiteral.infinity, atof(" inf ")) + assert_equal(FloatLiteral.negative_infinity, atof("-inf ")) # Negative cases with assert_raises(contains="String is not convertible to float: ''"): - _ = atof(String("")) + _ = atof("") with assert_raises( contains="String is not convertible to float: ' 123 asd'" ): - _ = atof(String(" 123 asd")) + _ = atof(" 123 asd") with assert_raises( contains="String is not convertible to float: ' f.9123 '" ): - _ = atof(String(" f.9123 ")) + _ = atof(" f.9123 ") with assert_raises( contains="String is not convertible to float: ' 989343E-1A3 '" ): - _ = atof(String(" 989343E-1A3 ")) + _ = atof(" 989343E-1A3 ") with assert_raises( contains="String is not convertible to float: ' 124124124_2134124124 '" ): - _ = atof(String(" 124124124_2134124124 ")) + _ = atof(" 124124124_2134124124 ") with assert_raises( contains="String is not convertible to float: ' 123.2E '" ): - _ = atof(String(" 123.2E ")) + _ = atof(" 123.2E ") with assert_raises( contains="String is not convertible to float: ' --958.23 '" ): - _ = atof(String(" --958.23 ")) + _ = atof(" --958.23 ") with assert_raises( contains="String is not convertible to float: ' ++94. '" ): - _ = atof(String(" ++94. ")) + _ = atof(" ++94. ") def test_calc_initial_buffer_size_int32(): From 4903cf9fbc979646aab2e6b7c181004bfa3623f3 Mon Sep 17 00:00:00 2001 From: Connor Gray Date: Mon, 6 Jan 2025 17:07:51 -0600 Subject: [PATCH 153/509] [stdlib] polish: Remove `@implicit` from `String.__init__({StringSlice, StringRef})` Also added `Path.__init__(StringSlice)` constructor. This allows the following pattern to continue to compile: var args = argv() var path = Path(args[index]) Previously, the `args[index]` `StringRef` result would implicitly coerce to the `String` argument taken by the `Path` initializer (implicitly performing an allocation that was immediately thrown away). With this change, the same code continues to compile, but without the temporary intermediate allocation. MODULAR_ORIG_COMMIT_REV_ID: 7f01194c5b05581b47645d12d824f7b4bf98750b --- docs/changelog.md | 10 ++++++++++ stdlib/src/builtin/string_literal.mojo | 12 ++++++------ stdlib/src/collections/string/inline_string.mojo | 4 ++-- stdlib/src/collections/string/string.mojo | 12 +++++------- stdlib/src/collections/string/string_slice.mojo | 11 ++++++++--- stdlib/src/os/os.mojo | 4 ++-- stdlib/src/os/path/path.mojo | 4 ++-- stdlib/src/pathlib/path.mojo | 10 ++++++++++ stdlib/test/builtin/test_string_literal.mojo | 6 +++--- stdlib/test/collections/string/test_string.mojo | 10 +++++----- 10 files changed, 53 insertions(+), 30 deletions(-) diff --git a/docs/changelog.md b/docs/changelog.md index 90b7c0ffc0..e0ea494658 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -100,6 +100,15 @@ what we publish. - `atol()` - `atof()` +- Removed `@implicit` decorator from some standard library initializer methods + that perform allocation. This reduces places where Mojo code could implicitly + allocate where the user may not be aware. + + Remove `@implicit` from: + + - `String.__init__(out self, StringRef)` + - `String.__init__(out self, StringSlice)` + - The `ExplicitlyCopyable` trait has changed to require a `fn copy(self) -> Self` method. Previously, an initializer with the signature `fn __init__(out self, *, other: Self)` had been required by @@ -124,6 +133,7 @@ what we publish. - `StringRef` is being deprecated. Use `StringSlice` instead. - Changed `sys.argv()` to return list of `StringSlice`. + - Added `Path` explicit constructor from `StringSlice`. - removed `StringRef.startswith()` and `StringRef.endswith()` ### 🛠️ Fixed diff --git a/stdlib/src/builtin/string_literal.mojo b/stdlib/src/builtin/string_literal.mojo index 84f59e6abb..d20e8634d5 100644 --- a/stdlib/src/builtin/string_literal.mojo +++ b/stdlib/src/builtin/string_literal.mojo @@ -897,7 +897,7 @@ struct StringLiteral( Returns: A string with no leading or trailing whitespaces. """ - return self.lstrip().rstrip() + return String(self.lstrip().rstrip()) fn strip(self, chars: String) -> String: """Return a copy of the string literal with leading and trailing characters @@ -910,7 +910,7 @@ struct StringLiteral( A string with no leading or trailing characters. """ - return self.lstrip(chars).rstrip(chars) + return String(self.lstrip(chars).rstrip(chars)) fn rstrip(self, chars: String) -> String: """Return a copy of the string literal with trailing characters removed. @@ -921,7 +921,7 @@ struct StringLiteral( Returns: A string with no trailing characters. """ - return str(self).rstrip(chars) + return String(str(self).rstrip(chars)) fn rstrip(self) -> String: """Return a copy of the string with trailing whitespaces removed. This @@ -931,7 +931,7 @@ struct StringLiteral( Returns: A copy of the string with no trailing whitespaces. """ - return str(self).rstrip() + return String(str(self).rstrip()) fn lstrip(self, chars: String) -> String: """Return a copy of the string with leading characters removed. @@ -942,7 +942,7 @@ struct StringLiteral( Returns: A copy of the string with no leading characters. """ - return str(self).lstrip(chars) + return String(str(self).lstrip(chars)) fn lstrip(self) -> String: """Return a copy of the string with leading whitespaces removed. This @@ -952,4 +952,4 @@ struct StringLiteral( Returns: A copy of the string with no leading whitespaces. """ - return str(self).lstrip() + return String(str(self).lstrip()) diff --git a/stdlib/src/collections/string/inline_string.mojo b/stdlib/src/collections/string/inline_string.mojo index 93703b8450..783eafe207 100644 --- a/stdlib/src/collections/string/inline_string.mojo +++ b/stdlib/src/collections/string/inline_string.mojo @@ -109,7 +109,7 @@ struct InlineString(Sized, Stringable, CollectionElement, CollectionElementNew): Args: literal: The string to append. """ - self.__iadd__(StringRef(literal)) + self.__iadd__(StringSlice(literal)) fn __iadd__(mut self, string: String): """Appends another string to this string. @@ -169,7 +169,7 @@ struct InlineString(Sized, Stringable, CollectionElement, CollectionElementNew): """ var string = self - string += StringRef(other) + string += StringSlice(other) return string fn __add__(self, other: String) -> Self: diff --git a/stdlib/src/collections/string/string.mojo b/stdlib/src/collections/string/string.mojo index 0bbc5d09a4..62856c74ae 100644 --- a/stdlib/src/collections/string/string.mojo +++ b/stdlib/src/collections/string/string.mojo @@ -852,21 +852,19 @@ struct String( """ return self # Just use the implicit copyinit. - @implicit - fn __init__(out self, str: StringRef): + fn __init__(out self, strref: StringRef): """Construct a string from a StringRef object. Args: - str: The StringRef from which to construct this string object. + strref: The StringRef from which to construct this string object. """ - var length = len(str) + var length = len(strref) var buffer = Self._buffer_type() # +1 for null terminator, initialized to 0 buffer.resize(length + 1, 0) - memcpy(dest=buffer.data, src=str.data, count=length) + memcpy(dest=buffer.data, src=strref.data, count=length) self = Self(buffer^) - @implicit fn __init__(out self, str_slice: StringSlice): """Construct a string from a string slice. @@ -1087,7 +1085,7 @@ struct String( start, end, step = span.indices(self.byte_length()) var r = range(start, end, step) if step == 1: - return StringRef(self._buffer.data + start, len(r)) + return String(StringRef(self._buffer.data + start, len(r))) var buffer = Self._buffer_type() var result_len = len(r) diff --git a/stdlib/src/collections/string/string_slice.mojo b/stdlib/src/collections/string/string_slice.mojo index 3bcaf35268..b0b0841260 100644 --- a/stdlib/src/collections/string/string_slice.mojo +++ b/stdlib/src/collections/string/string_slice.mojo @@ -358,9 +358,14 @@ struct StringSlice[mut: Bool, //, origin: Origin[mut]]( value: The string value. """ - debug_assert( - _is_valid_utf8(value.as_bytes()), "value is not valid utf8" - ) + # TODO(MOCO-1525): + # Support skipping UTF-8 during comptime evaluations, or support + # the necessary SIMD intrinsics to allow this to evaluate at compile + # time. + # debug_assert( + # _is_valid_utf8(value.as_bytes()), "value is not valid utf8" + # ) + self = StringSlice[O](unsafe_from_utf8=value.as_bytes()) # ===-------------------------------------------------------------------===# diff --git a/stdlib/src/os/os.mojo b/stdlib/src/os/os.mojo index 86c793fa6b..e80fb30e54 100644 --- a/stdlib/src/os/os.mojo +++ b/stdlib/src/os/os.mojo @@ -154,7 +154,7 @@ struct _DirHandle: ) if name_str == "." or name_str == "..": continue - res.append(name_str) + res.append(String(name_str)) _ = name^ return res @@ -180,7 +180,7 @@ struct _DirHandle: ) if name_str == "." or name_str == "..": continue - res.append(name_str) + res.append(String(name_str)) _ = name^ return res diff --git a/stdlib/src/os/path/path.mojo b/stdlib/src/os/path/path.mojo index 4e65dfbf34..16083fa864 100644 --- a/stdlib/src/os/path/path.mojo +++ b/stdlib/src/os/path/path.mojo @@ -233,7 +233,7 @@ fn dirname[PathLike: os.PathLike, //](path: PathLike) -> String: var i = fspath.rfind(os.sep) + 1 var head = fspath[:i] if head and head != os.sep * len(head): - return head.rstrip(os.sep) + return String(head.rstrip(String(os.sep))) return head @@ -389,7 +389,7 @@ fn basename[PathLike: os.PathLike, //](path: PathLike) -> String: var i = fspath.rfind(os.sep) + 1 var head = fspath[i:] if head and head != os.sep * len(head): - return head.rstrip(os.sep) + return String(head.rstrip(String(os.sep))) return head diff --git a/stdlib/src/pathlib/path.mojo b/stdlib/src/pathlib/path.mojo index b81c184e06..8e2f5c5042 100644 --- a/stdlib/src/pathlib/path.mojo +++ b/stdlib/src/pathlib/path.mojo @@ -15,6 +15,7 @@ import os from collections import List +from collections.string import StringSlice from hashlib._hasher import _HashableWithHasher, _Hasher from os import PathLike, listdir, stat_result from sys import external_call, os_is_windows @@ -83,6 +84,15 @@ struct Path( """Initializes a path with the current directory.""" self = cwd() + # Note: Not @implicit so that allocation is not implicit. + fn __init__(out self, path: StringSlice): + """Initializes a path with the provided path. + + Args: + path: The file system path. + """ + self.path = String(path) + @implicit fn __init__(out self, path: String): """Initializes a path with the provided path. diff --git a/stdlib/test/builtin/test_string_literal.mojo b/stdlib/test/builtin/test_string_literal.mojo index 28ca91a1af..8db79b38c2 100644 --- a/stdlib/test/builtin/test_string_literal.mojo +++ b/stdlib/test/builtin/test_string_literal.mojo @@ -263,11 +263,11 @@ def test_iter(): var i = 0 for c in s: if i == 0: - assert_equal(c, "o") + assert_equal(String(c), "o") elif i == 1: - assert_equal(c, "n") + assert_equal(String(c), "n") elif i == 2: - assert_equal(c, "e") + assert_equal(String(c), "e") def test_layout(): diff --git a/stdlib/test/collections/string/test_string.mojo b/stdlib/test/collections/string/test_string.mojo index ce7b2cf7d4..0e2b3acfad 100644 --- a/stdlib/test/collections/string/test_string.mojo +++ b/stdlib/test/collections/string/test_string.mojo @@ -1262,19 +1262,19 @@ def test_string_iter(): var iterator = vs.__iter__() assert_equal(5, len(iterator)) var item = iterator.__next__() - assert_equal("m", item) + assert_equal(String("m"), String(item)) assert_equal(4, len(iterator)) item = iterator.__next__() - assert_equal("o", item) + assert_equal(String("o"), String(item)) assert_equal(3, len(iterator)) item = iterator.__next__() - assert_equal("j", item) + assert_equal(String("j"), String(item)) assert_equal(2, len(iterator)) item = iterator.__next__() - assert_equal("o", item) + assert_equal(String("o"), String(item)) assert_equal(1, len(iterator)) item = iterator.__next__() - assert_equal("🔥", item) + assert_equal(String("🔥"), String(item)) assert_equal(0, len(iterator)) var items = List[String]( From a802063167f91dde1530d2f92c9fbac6d0f016a8 Mon Sep 17 00:00:00 2001 From: Bernhard Merkle Date: Mon, 6 Jan 2025 17:30:01 -0800 Subject: [PATCH 154/509] Removed premature import of `random` in a step of the Intro to Mojo tutorial. MODULAR_ORIG_COMMIT_REV_ID: 0ea2a0a935a23dd0d0dd4d8159409afd84b43401 --- docs/manual/get-started.mdx | 2 -- 1 file changed, 2 deletions(-) diff --git a/docs/manual/get-started.mdx b/docs/manual/get-started.mdx index ccb7680952..cc9403b854 100644 --- a/docs/manual/get-started.mdx +++ b/docs/manual/get-started.mdx @@ -786,8 +786,6 @@ struct Grid(StringableRaising):

Click here to see the complete `gridv1.mojo` so far: ```mojo title="gridv1.mojo" -import random - @value struct Grid(StringableRaising): var rows: Int From ab7bfa581d7eab59afd6890db0cd42023988efa3 Mon Sep 17 00:00:00 2001 From: Manuel Saelices Date: Mon, 6 Jan 2025 18:52:29 -0800 Subject: [PATCH 155/509] [External] [stdlib] Implement `Int.from_bytes()` and `Int.as_bytes()` (#53303) [External] [stdlib] Implement `Int.from_bytes()` and `Int.as_bytes()` Similar to the Python's [int.from_bytes()](https://docs.python.org/3/library/stdtypes.html#int.from_bytes) and [int.to_bytes()](https://docs.python.org/3/library/stdtypes.html#int.to_bytes) one. Co-authored-by: Manuel Saelices Co-authored-by: Lukas Hermann <1734032+lsh@users.noreply.github.com> Closes modularml/mojo#3795 MODULAR_ORIG_COMMIT_REV_ID: 1e78cc9dd643009a98c7f3de77c4c250e7c5ea3f --- docs/changelog.md | 5 +++ stdlib/src/builtin/int.mojo | 33 +++++++++++++++- stdlib/src/builtin/simd.mojo | 60 ++++++++++++++++++++++++++++- stdlib/test/builtin/test_int.mojo | 62 +++++++++++++++++++++++++++++- stdlib/test/builtin/test_simd.mojo | 45 ++++++++++++++++++++++ 5 files changed, 200 insertions(+), 5 deletions(-) diff --git a/docs/changelog.md b/docs/changelog.md index e0ea494658..1ad44a3195 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -18,6 +18,11 @@ what we publish. ### ✨ Highlights +- New `Int.from_bytes()`, `Int.as_bytes()`, `SIMD.from_bytes()` and `SIMD.as_bytes()` + functions to convert a list of bytes to an integer and vice versa, accepting the + endianess as an argument. Similar to Python `int.from_bytes()` and `int.to_bytes()` + functions. + ### Language changes - Initializers are now treated as static methods that return an instance of diff --git a/stdlib/src/builtin/int.mojo b/stdlib/src/builtin/int.mojo index 698722f6f1..5c02ac8333 100644 --- a/stdlib/src/builtin/int.mojo +++ b/stdlib/src/builtin/int.mojo @@ -15,7 +15,7 @@ These are Mojo built-ins, so you don't need to import them. """ -from collections import KeyElement +from collections import InlineArray, KeyElement from collections.string.string import ( _calc_initial_buffer_size_int32, _calc_initial_buffer_size_int64, @@ -1168,6 +1168,37 @@ struct Int( writer.write(self) + @staticmethod + fn from_bytes[ + big_endian: Bool = False + ](bytes: InlineArray[Byte, DType.int64.sizeof()]) -> Self: + """Converts a byte array to an integer. + + Args: + bytes: The byte array to convert. + + Parameters: + big_endian: Whether the byte array is big-endian. + + Returns: + The integer value. + """ + return int(Scalar[DType.int64].from_bytes[big_endian](bytes)) + + fn as_bytes[ + big_endian: Bool = False + ](self) -> InlineArray[Byte, DType.int64.sizeof()]: + """Convert the integer to a byte array. + + Parameters: + big_endian: Whether the byte array should be big-endian. + + Returns: + The byte array. + """ + var value = Scalar[DType.int64](self) + return value.as_bytes[big_endian]() + @always_inline("nodebug") fn __mlir_index__(self) -> __mlir_type.index: """Convert to index. diff --git a/stdlib/src/builtin/simd.mojo b/stdlib/src/builtin/simd.mojo index 0a56cdd820..c651891e07 100644 --- a/stdlib/src/builtin/simd.mojo +++ b/stdlib/src/builtin/simd.mojo @@ -34,6 +34,7 @@ from sys import ( bitwidthof, has_neon, is_amd_gpu, + is_big_endian, is_gpu, is_nvidia_gpu, is_x86, @@ -45,13 +46,13 @@ from sys import ( from sys._assembly import inlined_assembly from sys.info import _current_arch, _is_sm_8x, _is_sm_9x -from bit import pop_count +from bit import pop_count, byte_swap from builtin._format_float import _write_float from builtin.dtype import _uint_type_of_width from builtin.format_int import _try_write_int from builtin.io import _snprintf from documentation import doc_private -from memory import UnsafePointer, bitcast, Span +from memory import UnsafePointer, bitcast, memcpy, Span from utils import IndexList, StaticTuple from utils._visualizers import lldb_formatter_wrapping_type @@ -257,6 +258,7 @@ struct SIMD[type: DType, size: Int]( alias _Mask = SIMD[DType.bool, size] alias element_type = type + alias type_len = type.sizeof() var value: __mlir_type[`!pop.simd<`, size.value, `, `, type.value, `>`] """The underlying storage for the vector.""" @@ -1871,6 +1873,60 @@ struct SIMD[type: DType, size: Int]( return bitcast[_integral_type_of[type](), size](self).cast[int_dtype]() + @staticmethod + fn from_bytes[ + big_endian: Bool = False + ](bytes: InlineArray[Byte, Self.type_len]) -> Scalar[type]: + """Converts a byte array to an integer. + + Args: + bytes: The byte array to convert. + + Parameters: + big_endian: Whether the byte array is big-endian. + + Returns: + The integer value. + """ + var ptr: UnsafePointer[Scalar[type]] = bytes.unsafe_ptr().bitcast[ + Scalar[type] + ]() + var value = ptr[] + + @parameter + if is_big_endian() and not big_endian: + value = byte_swap(value) + elif not is_big_endian() and big_endian: + value = byte_swap(value) + return value + + fn as_bytes[ + big_endian: Bool = False + ](self) -> InlineArray[Byte, Self.type_len]: + """Convert the integer to a byte array. + + Parameters: + big_endian: Whether the byte array should be big-endian. + + Returns: + The byte array. + """ + var value = self + + @parameter + if is_big_endian() and not big_endian: + value = byte_swap(value) + elif not is_big_endian() and big_endian: + value = byte_swap(value) + + var ptr = UnsafePointer.address_of(value) + var array = InlineArray[Byte, Self.type_len](fill=0) + + # TODO: Maybe this can be a List.extend(ptr, count) method + memcpy(array.unsafe_ptr(), ptr.bitcast[Byte](), Self.type_len) + + return array^ + fn _floor_ceil_trunc_impl[intrinsic: StringLiteral](self) -> Self: constrained[ intrinsic == "llvm.floor" diff --git a/stdlib/test/builtin/test_int.mojo b/stdlib/test/builtin/test_int.mojo index 9919b2f636..8f1083c4cf 100644 --- a/stdlib/test/builtin/test_int.mojo +++ b/stdlib/test/builtin/test_int.mojo @@ -12,10 +12,10 @@ # ===----------------------------------------------------------------------=== # # RUN: %mojo %s -from sys.info import bitwidthof - +from collections import InlineArray from memory import UnsafePointer from python import PythonObject +from sys.info import bitwidthof from testing import assert_equal, assert_false, assert_raises, assert_true @@ -245,6 +245,63 @@ def test_conversion_from_python(): assert_equal(Int.try_from_python(PythonObject(-1)), -1) +def test_from_bytes_as_bytes(): + alias EightBytes = InlineArray[Byte, DType.int64.sizeof()] + + assert_equal( + Int.from_bytes[big_endian=True](EightBytes(0, 0, 0, 0, 0, 0, 0, 16)), 16 + ) + assert_equal( + Int.from_bytes[big_endian=False](EightBytes(0, 0, 0, 0, 0, 0, 1, 0)), + 281474976710656, + ) + assert_equal( + Int.from_bytes[big_endian=False](EightBytes(0, 16, 0, 0, 0, 0, 0, 0)), + 4096, + ) + assert_equal( + Int.from_bytes[big_endian=False](EightBytes(252, 0, 0, 0, 0, 0, 0, 0)), + 252, + ) + assert_equal( + Int.from_bytes[big_endian=True](EightBytes(102, 0, 0, 0, 0, 0, 0, 0)), + 7349874591868649472, + ) + assert_equal( + Int.from_bytes[big_endian=False](EightBytes(252, 0, 0, 0, 0, 0, 0, 0)), + 252, + ) + assert_equal( + Int.from_bytes[big_endian=False](EightBytes(0, 0, 0, 1, 0, 0, 0, 0)), + 16777216, + ) + assert_equal( + Int.from_bytes[big_endian=True](EightBytes(1, 0, 0, 0, 0, 0, 0, 0)), + 72057594037927936, + ) + assert_equal( + Int.from_bytes[big_endian=True](EightBytes(1, 0, 0, 1, 0, 0, 0, 0)), + 72057598332895232, + ) + assert_equal( + Int.from_bytes[big_endian=False](EightBytes(1, 0, 0, 1, 0, 0, 0, 0)), + 16777217, + ) + assert_equal( + Int.from_bytes[big_endian=True](EightBytes(255, 0, 0, 0, 0, 0, 0, 0)), + -72057594037927936, + ) + for x_ref in List[Int](10, 100, -12, 0, 1, -1, 1000, -1000): + x = x_ref[] + + @parameter + for b in range(2): + assert_equal( + Int.from_bytes[big_endian=b](Int(x).as_bytes[big_endian=b]()), + x, + ) + + def main(): test_properties() test_add() @@ -268,3 +325,4 @@ def main(): test_int_uint() test_float_conversion() test_conversion_from_python() + test_from_bytes_as_bytes() diff --git a/stdlib/test/builtin/test_simd.mojo b/stdlib/test/builtin/test_simd.mojo index d7bd8928b4..1bddab4501 100644 --- a/stdlib/test/builtin/test_simd.mojo +++ b/stdlib/test/builtin/test_simd.mojo @@ -1818,6 +1818,50 @@ def test_float_conversion(): assert_almost_equal(float(UInt64(36)), 36.0) +def test_from_bytes_as_bytes(): + alias TwoBytes = InlineArray[Byte, DType.int16.sizeof()] + alias TwoUBytes = InlineArray[Byte, DType.uint16.sizeof()] + alias FourBytes = InlineArray[Byte, DType.int32.sizeof()] + + assert_equal(Int16.from_bytes[big_endian=True](TwoBytes(0, 16)), 16) + assert_equal(Int16.from_bytes[big_endian=False](TwoBytes(0, 16)), 4096) + assert_equal(Int16.from_bytes[big_endian=True](TwoBytes(252, 0)), -1024) + assert_equal(UInt16.from_bytes[big_endian=True](TwoUBytes(252, 0)), 64512) + assert_equal(Int16.from_bytes[big_endian=False](TwoBytes(252, 0)), 252) + assert_equal(Int32.from_bytes[big_endian=True](FourBytes(0, 0, 0, 1)), 1) + assert_equal( + Int32.from_bytes[big_endian=False](FourBytes(0, 0, 0, 1)), + 16777216, + ) + assert_equal( + Int32.from_bytes[big_endian=True](FourBytes(1, 0, 0, 0)), + 16777216, + ) + assert_equal( + Int32.from_bytes[big_endian=True](FourBytes(1, 0, 0, 1)), + 16777217, + ) + assert_equal( + Int32.from_bytes[big_endian=False](FourBytes(1, 0, 0, 1)), + 16777217, + ) + assert_equal( + Int32.from_bytes[big_endian=True](FourBytes(255, 0, 0, 0)), + -16777216, + ) + for x_ref in List[Int16](10, 100, -12, 0, 1, -1, 1000, -1000): + x = x_ref[] + + @parameter + for b in range(2): + assert_equal( + Int16.from_bytes[big_endian=b]( + Int16(x).as_bytes[big_endian=b]() + ), + x, + ) + + def test_reversed(): fn test[D: DType]() raises: assert_equal(SIMD[D, 4](1, 2, 3, 4).reversed(), SIMD[D, 4](4, 3, 2, 1)) @@ -1847,6 +1891,7 @@ def main(): test_extract() test_floor() test_floordiv() + test_from_bytes_as_bytes() test_iadd() test_indexing() test_insert() From cdc60d0e6645dd6ef40c92578dcd4b221b3b7b63 Mon Sep 17 00:00:00 2001 From: abdul dakkak Date: Mon, 6 Jan 2025 20:26:26 -0800 Subject: [PATCH 156/509] Revert "[External] [stdlib] Implement Int.from_bytes() and Int.as_bytes()" MODULAR_ORIG_COMMIT_REV_ID: e9f0a71cc6000e50355ac49dd45d34da348817d9 --- docs/changelog.md | 5 --- stdlib/src/builtin/int.mojo | 33 +--------------- stdlib/src/builtin/simd.mojo | 60 +---------------------------- stdlib/test/builtin/test_int.mojo | 62 +----------------------------- stdlib/test/builtin/test_simd.mojo | 45 ---------------------- 5 files changed, 5 insertions(+), 200 deletions(-) diff --git a/docs/changelog.md b/docs/changelog.md index 1ad44a3195..e0ea494658 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -18,11 +18,6 @@ what we publish. ### ✨ Highlights -- New `Int.from_bytes()`, `Int.as_bytes()`, `SIMD.from_bytes()` and `SIMD.as_bytes()` - functions to convert a list of bytes to an integer and vice versa, accepting the - endianess as an argument. Similar to Python `int.from_bytes()` and `int.to_bytes()` - functions. - ### Language changes - Initializers are now treated as static methods that return an instance of diff --git a/stdlib/src/builtin/int.mojo b/stdlib/src/builtin/int.mojo index 5c02ac8333..698722f6f1 100644 --- a/stdlib/src/builtin/int.mojo +++ b/stdlib/src/builtin/int.mojo @@ -15,7 +15,7 @@ These are Mojo built-ins, so you don't need to import them. """ -from collections import InlineArray, KeyElement +from collections import KeyElement from collections.string.string import ( _calc_initial_buffer_size_int32, _calc_initial_buffer_size_int64, @@ -1168,37 +1168,6 @@ struct Int( writer.write(self) - @staticmethod - fn from_bytes[ - big_endian: Bool = False - ](bytes: InlineArray[Byte, DType.int64.sizeof()]) -> Self: - """Converts a byte array to an integer. - - Args: - bytes: The byte array to convert. - - Parameters: - big_endian: Whether the byte array is big-endian. - - Returns: - The integer value. - """ - return int(Scalar[DType.int64].from_bytes[big_endian](bytes)) - - fn as_bytes[ - big_endian: Bool = False - ](self) -> InlineArray[Byte, DType.int64.sizeof()]: - """Convert the integer to a byte array. - - Parameters: - big_endian: Whether the byte array should be big-endian. - - Returns: - The byte array. - """ - var value = Scalar[DType.int64](self) - return value.as_bytes[big_endian]() - @always_inline("nodebug") fn __mlir_index__(self) -> __mlir_type.index: """Convert to index. diff --git a/stdlib/src/builtin/simd.mojo b/stdlib/src/builtin/simd.mojo index c651891e07..0a56cdd820 100644 --- a/stdlib/src/builtin/simd.mojo +++ b/stdlib/src/builtin/simd.mojo @@ -34,7 +34,6 @@ from sys import ( bitwidthof, has_neon, is_amd_gpu, - is_big_endian, is_gpu, is_nvidia_gpu, is_x86, @@ -46,13 +45,13 @@ from sys import ( from sys._assembly import inlined_assembly from sys.info import _current_arch, _is_sm_8x, _is_sm_9x -from bit import pop_count, byte_swap +from bit import pop_count from builtin._format_float import _write_float from builtin.dtype import _uint_type_of_width from builtin.format_int import _try_write_int from builtin.io import _snprintf from documentation import doc_private -from memory import UnsafePointer, bitcast, memcpy, Span +from memory import UnsafePointer, bitcast, Span from utils import IndexList, StaticTuple from utils._visualizers import lldb_formatter_wrapping_type @@ -258,7 +257,6 @@ struct SIMD[type: DType, size: Int]( alias _Mask = SIMD[DType.bool, size] alias element_type = type - alias type_len = type.sizeof() var value: __mlir_type[`!pop.simd<`, size.value, `, `, type.value, `>`] """The underlying storage for the vector.""" @@ -1873,60 +1871,6 @@ struct SIMD[type: DType, size: Int]( return bitcast[_integral_type_of[type](), size](self).cast[int_dtype]() - @staticmethod - fn from_bytes[ - big_endian: Bool = False - ](bytes: InlineArray[Byte, Self.type_len]) -> Scalar[type]: - """Converts a byte array to an integer. - - Args: - bytes: The byte array to convert. - - Parameters: - big_endian: Whether the byte array is big-endian. - - Returns: - The integer value. - """ - var ptr: UnsafePointer[Scalar[type]] = bytes.unsafe_ptr().bitcast[ - Scalar[type] - ]() - var value = ptr[] - - @parameter - if is_big_endian() and not big_endian: - value = byte_swap(value) - elif not is_big_endian() and big_endian: - value = byte_swap(value) - return value - - fn as_bytes[ - big_endian: Bool = False - ](self) -> InlineArray[Byte, Self.type_len]: - """Convert the integer to a byte array. - - Parameters: - big_endian: Whether the byte array should be big-endian. - - Returns: - The byte array. - """ - var value = self - - @parameter - if is_big_endian() and not big_endian: - value = byte_swap(value) - elif not is_big_endian() and big_endian: - value = byte_swap(value) - - var ptr = UnsafePointer.address_of(value) - var array = InlineArray[Byte, Self.type_len](fill=0) - - # TODO: Maybe this can be a List.extend(ptr, count) method - memcpy(array.unsafe_ptr(), ptr.bitcast[Byte](), Self.type_len) - - return array^ - fn _floor_ceil_trunc_impl[intrinsic: StringLiteral](self) -> Self: constrained[ intrinsic == "llvm.floor" diff --git a/stdlib/test/builtin/test_int.mojo b/stdlib/test/builtin/test_int.mojo index 8f1083c4cf..9919b2f636 100644 --- a/stdlib/test/builtin/test_int.mojo +++ b/stdlib/test/builtin/test_int.mojo @@ -12,10 +12,10 @@ # ===----------------------------------------------------------------------=== # # RUN: %mojo %s -from collections import InlineArray +from sys.info import bitwidthof + from memory import UnsafePointer from python import PythonObject -from sys.info import bitwidthof from testing import assert_equal, assert_false, assert_raises, assert_true @@ -245,63 +245,6 @@ def test_conversion_from_python(): assert_equal(Int.try_from_python(PythonObject(-1)), -1) -def test_from_bytes_as_bytes(): - alias EightBytes = InlineArray[Byte, DType.int64.sizeof()] - - assert_equal( - Int.from_bytes[big_endian=True](EightBytes(0, 0, 0, 0, 0, 0, 0, 16)), 16 - ) - assert_equal( - Int.from_bytes[big_endian=False](EightBytes(0, 0, 0, 0, 0, 0, 1, 0)), - 281474976710656, - ) - assert_equal( - Int.from_bytes[big_endian=False](EightBytes(0, 16, 0, 0, 0, 0, 0, 0)), - 4096, - ) - assert_equal( - Int.from_bytes[big_endian=False](EightBytes(252, 0, 0, 0, 0, 0, 0, 0)), - 252, - ) - assert_equal( - Int.from_bytes[big_endian=True](EightBytes(102, 0, 0, 0, 0, 0, 0, 0)), - 7349874591868649472, - ) - assert_equal( - Int.from_bytes[big_endian=False](EightBytes(252, 0, 0, 0, 0, 0, 0, 0)), - 252, - ) - assert_equal( - Int.from_bytes[big_endian=False](EightBytes(0, 0, 0, 1, 0, 0, 0, 0)), - 16777216, - ) - assert_equal( - Int.from_bytes[big_endian=True](EightBytes(1, 0, 0, 0, 0, 0, 0, 0)), - 72057594037927936, - ) - assert_equal( - Int.from_bytes[big_endian=True](EightBytes(1, 0, 0, 1, 0, 0, 0, 0)), - 72057598332895232, - ) - assert_equal( - Int.from_bytes[big_endian=False](EightBytes(1, 0, 0, 1, 0, 0, 0, 0)), - 16777217, - ) - assert_equal( - Int.from_bytes[big_endian=True](EightBytes(255, 0, 0, 0, 0, 0, 0, 0)), - -72057594037927936, - ) - for x_ref in List[Int](10, 100, -12, 0, 1, -1, 1000, -1000): - x = x_ref[] - - @parameter - for b in range(2): - assert_equal( - Int.from_bytes[big_endian=b](Int(x).as_bytes[big_endian=b]()), - x, - ) - - def main(): test_properties() test_add() @@ -325,4 +268,3 @@ def main(): test_int_uint() test_float_conversion() test_conversion_from_python() - test_from_bytes_as_bytes() diff --git a/stdlib/test/builtin/test_simd.mojo b/stdlib/test/builtin/test_simd.mojo index 1bddab4501..d7bd8928b4 100644 --- a/stdlib/test/builtin/test_simd.mojo +++ b/stdlib/test/builtin/test_simd.mojo @@ -1818,50 +1818,6 @@ def test_float_conversion(): assert_almost_equal(float(UInt64(36)), 36.0) -def test_from_bytes_as_bytes(): - alias TwoBytes = InlineArray[Byte, DType.int16.sizeof()] - alias TwoUBytes = InlineArray[Byte, DType.uint16.sizeof()] - alias FourBytes = InlineArray[Byte, DType.int32.sizeof()] - - assert_equal(Int16.from_bytes[big_endian=True](TwoBytes(0, 16)), 16) - assert_equal(Int16.from_bytes[big_endian=False](TwoBytes(0, 16)), 4096) - assert_equal(Int16.from_bytes[big_endian=True](TwoBytes(252, 0)), -1024) - assert_equal(UInt16.from_bytes[big_endian=True](TwoUBytes(252, 0)), 64512) - assert_equal(Int16.from_bytes[big_endian=False](TwoBytes(252, 0)), 252) - assert_equal(Int32.from_bytes[big_endian=True](FourBytes(0, 0, 0, 1)), 1) - assert_equal( - Int32.from_bytes[big_endian=False](FourBytes(0, 0, 0, 1)), - 16777216, - ) - assert_equal( - Int32.from_bytes[big_endian=True](FourBytes(1, 0, 0, 0)), - 16777216, - ) - assert_equal( - Int32.from_bytes[big_endian=True](FourBytes(1, 0, 0, 1)), - 16777217, - ) - assert_equal( - Int32.from_bytes[big_endian=False](FourBytes(1, 0, 0, 1)), - 16777217, - ) - assert_equal( - Int32.from_bytes[big_endian=True](FourBytes(255, 0, 0, 0)), - -16777216, - ) - for x_ref in List[Int16](10, 100, -12, 0, 1, -1, 1000, -1000): - x = x_ref[] - - @parameter - for b in range(2): - assert_equal( - Int16.from_bytes[big_endian=b]( - Int16(x).as_bytes[big_endian=b]() - ), - x, - ) - - def test_reversed(): fn test[D: DType]() raises: assert_equal(SIMD[D, 4](1, 2, 3, 4).reversed(), SIMD[D, 4](4, 3, 2, 1)) @@ -1891,7 +1847,6 @@ def main(): test_extract() test_floor() test_floordiv() - test_from_bytes_as_bytes() test_iadd() test_indexing() test_insert() From 4af59dbd2207e9dddebb29ca24eb643ce9f8cbd1 Mon Sep 17 00:00:00 2001 From: modularbot Date: Tue, 7 Jan 2025 17:45:45 +0000 Subject: [PATCH 157/509] Update lockfiles to point to latest nightly version: 25.1.0.dev2025010705 --- examples/life/magic.lock | 187 ++++++++++++------------- examples/magic.lock | 187 ++++++++++++------------- examples/notebooks/magic.lock | 252 ++++++++++++++++++---------------- examples/operators/magic.lock | 187 ++++++++++++------------- magic.lock | 187 ++++++++++++------------- 5 files changed, 510 insertions(+), 490 deletions(-) diff --git a/examples/life/magic.lock b/examples/life/magic.lock index 3edbd9c9da..2dbac0c094 100644 --- a/examples/life/magic.lock +++ b/examples/life/magic.lock @@ -170,12 +170,12 @@ 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-25.1.0.dev2025010605-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025010605-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025010605-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025010605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025010705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025010705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025010705-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025010705-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-25.1.0.dev2025010605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025010705-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_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.15-py312h98912ed_1.conda @@ -214,7 +214,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.27.2-py312h12e396e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.7.1-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pygame-2.6.1-py312h4fcb14b_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyinstrument-5.0.0-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.8-h9e4cc4f_1_cpython.conda @@ -446,12 +446,12 @@ 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-25.1.0.dev2025010605-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025010605-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025010605-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025010605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025010705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025010705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025010705-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025010705-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-25.1.0.dev2025010605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025010705-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_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.15-py312hdd3e373_1.conda @@ -490,7 +490,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pydantic-core-2.27.2-py312h8cbf658_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.7.1-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pygame-2.6.1-py312hb2c8110_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyinstrument-5.0.0-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.8-h1683364_1_cpython.conda @@ -705,12 +705,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-25.1.0.dev2025010605-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025010605-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025010605-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025010605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025010705-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025010705-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025010705-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025010705-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-25.1.0.dev2025010605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025010705-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 @@ -748,7 +748,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.27.2-py312hcd83bfe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.7.1-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pygame-2.6.1-py312hb14fe3b_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyinstrument-5.0.0-py312h0bf5046_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.8-hc22306f_1_cpython.conda @@ -5107,6 +5107,7 @@ packages: - libgcc >=13 - ncurses >=6.5,<7.0a0 license: BSD-2-Clause + license_family: BSD size: 134657 timestamp: 1736191912705 - kind: conda @@ -5122,6 +5123,7 @@ packages: - libgcc >=13 - ncurses >=6.5,<7.0a0 license: BSD-2-Clause + license_family: BSD size: 148120 timestamp: 1736192137151 - kind: conda @@ -5137,6 +5139,7 @@ packages: - __osx >=11.0 - ncurses >=6.5,<7.0a0 license: BSD-2-Clause + license_family: BSD size: 107634 timestamp: 1736192034117 - kind: conda @@ -7685,76 +7688,76 @@ packages: timestamp: 1733219945697 - kind: conda name: max - version: 25.1.0.dev2025010605 + version: 25.1.0.dev2025010705 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025010605-release.conda - sha256: f806f7b7519e01cd68fbae2c714d1c1a9e1e96f144e920ce51c47512f81a1db3 - md5: 1bae0e6863939e6792d7129bec77983c - depends: - - max-core ==25.1.0.dev2025010605 release - - max-python >=25.1.0.dev2025010605,<26.0a0 - - mojo-jupyter ==25.1.0.dev2025010605 release - - mblack ==25.1.0.dev2025010605 release + url: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025010705-release.conda + sha256: 4f71937f851b3b8b20a6ece6ba12b390ba0d26caec64282cc85db4b3aa556157 + md5: e5cf52dd6e155fff57a8a27101b8a331 + depends: + - max-core ==25.1.0.dev2025010705 release + - max-python >=25.1.0.dev2025010705,<26.0a0 + - mojo-jupyter ==25.1.0.dev2025010705 release + - mblack ==25.1.0.dev2025010705 release license: LicenseRef-Modular-Proprietary - size: 9914 - timestamp: 1736140643481 + size: 9923 + timestamp: 1736227019263 - kind: conda name: max-core - version: 25.1.0.dev2025010605 + version: 25.1.0.dev2025010705 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025010605-release.conda - sha256: 315ad791e417ed45fcee42fe7227428bca1d77427c10b81fb5a65583a5844279 - md5: c40747b8b9245abb69db013a14266b6c + url: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025010705-release.conda + sha256: 57134626c86869f5e0b86172330a5579e2da6b576a58f5af56c27354b820c03e + md5: b2853511eb0e0871e7f28c00a63807d8 depends: - - mblack ==25.1.0.dev2025010605 release + - mblack ==25.1.0.dev2025010705 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 244726382 - timestamp: 1736140669107 + size: 247227693 + timestamp: 1736227019261 - kind: conda name: max-core - version: 25.1.0.dev2025010605 + version: 25.1.0.dev2025010705 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025010605-release.conda - sha256: dd574ac5ce9effc0f713ea63992a5a4aeaf8fa80f2c968a9c00c664703b70932 - md5: 65f814591335d2910a5e30d5f6968aff + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025010705-release.conda + sha256: 533dee921a80b6313d09c5eb2fddbe756794c89cce36e236afaa66bc6278b692 + md5: 0949e8de33bf8292b9c11bbcbc6bfb9e depends: - - mblack ==25.1.0.dev2025010605 release + - mblack ==25.1.0.dev2025010705 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 248381825 - timestamp: 1736140643479 + size: 251241180 + timestamp: 1736231934331 - kind: conda name: max-core - version: 25.1.0.dev2025010605 + version: 25.1.0.dev2025010705 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025010605-release.conda - sha256: ff28dea1ddf5adb0586a5d6a41fb6b6d0a0ee332eb4440cbaffa9b041de16db0 - md5: 1e134821c4eae4e6fa711c1cd2b8cc00 + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025010705-release.conda + sha256: 5e44a91c7f08caad35255918dc8a370931eeff635f0cd93a240fa884996f2f46 + md5: d3a439dc2f5637aa1cfdf26fbe0a7e83 depends: - - mblack ==25.1.0.dev2025010605 release + - mblack ==25.1.0.dev2025010705 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 213059614 - timestamp: 1736141300718 + size: 208980248 + timestamp: 1736227147664 - kind: conda name: max-python - version: 25.1.0.dev2025010605 + version: 25.1.0.dev2025010705 build: 3.12release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025010605-3.12release.conda - sha256: 80e1b3a95eb37bd76396c470b8a17168fdd1b0a2e193d66981824760bd82e768 - md5: 28ecc247a48f0de9dee4f6fe6d1be095 + url: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025010705-3.12release.conda + sha256: a3072934203369556802b32afe2c7b3b70383ce910e45fff41330ece05d385bf + md5: 5c9ca83a2cd807b07247873216a76317 depends: - - max-core ==25.1.0.dev2025010605 release + - max-core ==25.1.0.dev2025010705 release - python 3.12.* - fastapi - httpx @@ -7777,18 +7780,18 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 122702106 - timestamp: 1736140669117 + size: 124176244 + timestamp: 1736227019271 - kind: conda name: max-python - version: 25.1.0.dev2025010605 + version: 25.1.0.dev2025010705 build: 3.12release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025010605-3.12release.conda - sha256: 90a8fa8b7b654e35adc36cf2309898d4a965b5b85f0c6ac912ec1b7439d247c2 - md5: fc56c27a4041f32ce7f03c94141e6fd9 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025010705-3.12release.conda + sha256: b7e6bc5c4acb7803626e494139aca2e1b997f588e8b8d44bd9165ef55e05048a + md5: e4b5ecb54c41900473643742021af465 depends: - - max-core ==25.1.0.dev2025010605 release + - max-core ==25.1.0.dev2025010705 release - python 3.12.* - fastapi - httpx @@ -7811,18 +7814,18 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 126373708 - timestamp: 1736140643490 + size: 128068854 + timestamp: 1736231934342 - kind: conda name: max-python - version: 25.1.0.dev2025010605 + version: 25.1.0.dev2025010705 build: 3.12release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025010605-3.12release.conda - sha256: 6948694d15390b9baf752a38f17fa7c4e0712b3b71f893955037e65a84fb72c9 - md5: f7c5e210de943e91a2550a9a0ed51e59 + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025010705-3.12release.conda + sha256: 29812e40f9474a260aeab5d76253ffd35a9feecaff301b7e2895e755a61932ce + md5: 7811e97d595835fe8f312c1b7d2ccfc1 depends: - - max-core ==25.1.0.dev2025010605 release + - max-core ==25.1.0.dev2025010705 release - python 3.12.* - fastapi - httpx @@ -7845,17 +7848,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 113299681 - timestamp: 1736141300722 + size: 110696918 + timestamp: 1736227147667 - kind: conda name: mblack - version: 25.1.0.dev2025010605 + version: 25.1.0.dev2025010705 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025010605-release.conda - sha256: 2166e3aa028121c737e9a7f3cde3711c8f87d83757045318467ee0d54da95fdc - md5: 90216ac95ad02c40a72aea621bb2d54e + url: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025010705-release.conda + sha256: 0ef71e28927a9e4ce6c3b91929581483352b024972a0c267de613590684ac38a + md5: 32936fc5667f32a465daf218c9c6decb depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -7865,8 +7868,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130809 - timestamp: 1736140643485 + size: 130819 + timestamp: 1736227019267 - kind: conda name: mdurl version: 0.1.2 @@ -7885,21 +7888,21 @@ packages: timestamp: 1733255681319 - kind: conda name: mojo-jupyter - version: 25.1.0.dev2025010605 + version: 25.1.0.dev2025010705 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025010605-release.conda - sha256: 5d25a6cbeb7e23d0e751085fd4a8728224f4fb46667007046322109437fde8cc - md5: 0d7c538d4488f3d729c380af437148e3 + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025010705-release.conda + sha256: 5dca1179e4a37aa94b597fdb4c9d758b071f9ab3acc72ad525290c590db6b8c7 + md5: 6cc10303055ec07e344cb2a7bfdb493f depends: - - max-core ==25.1.0.dev2025010605 release + - max-core ==25.1.0.dev2025010705 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22938 - timestamp: 1736140643486 + size: 22937 + timestamp: 1736227019268 - kind: conda name: mpg123 version: 1.32.9 @@ -9463,20 +9466,18 @@ packages: timestamp: 1727636776938 - kind: conda name: pygments - version: 2.18.0 - build: pyhd8ed1ab_1 - build_number: 1 + version: 2.19.1 + build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_1.conda - sha256: 0d6133545f268b2b89c2617c196fc791f365b538d4057ecd636d658c3b1e885d - md5: b38dc0206e2a530e5c2cf11dc086b31a + url: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda + sha256: 28a3e3161390a9d23bc02b4419448f8d27679d9e2c250e29849e37749c8de86b + md5: 232fb4577b6687b2d503ef8e254270c9 depends: - python >=3.9 license: BSD-2-Clause - license_family: BSD - size: 876700 - timestamp: 1733221731178 + size: 888600 + timestamp: 1736243563082 - kind: conda name: pyinstrument version: 5.0.0 diff --git a/examples/magic.lock b/examples/magic.lock index d0b4e528d9..bf6bd16058 100644 --- a/examples/magic.lock +++ b/examples/magic.lock @@ -131,12 +131,12 @@ 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-25.1.0.dev2025010605-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025010605-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025010605-3.11release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025010605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025010705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025010705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025010705-3.11release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025010705-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-25.1.0.dev2025010605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025010705-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 @@ -167,7 +167,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.4-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.27.2-py311h9e33e62_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.7.1-pyh3cfb1c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyinstrument-5.0.0-py311h9ecbd09_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.11.11-h9e4cc4f_1_cpython.conda @@ -349,12 +349,12 @@ 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-25.1.0.dev2025010605-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025010605-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025010605-3.11release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025010605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025010705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025010705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025010705-3.11release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025010705-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-25.1.0.dev2025010605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025010705-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 @@ -385,7 +385,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.4-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pydantic-core-2.27.2-py311h0ca61a2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.7.1-pyh3cfb1c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyinstrument-5.0.0-py311ha879c10_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.11.11-h1683364_1_cpython.conda @@ -558,12 +558,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-25.1.0.dev2025010605-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025010605-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025010605-3.11release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025010605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025010705-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025010705-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025010705-3.11release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025010705-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-25.1.0.dev2025010605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025010705-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 @@ -594,7 +594,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.4-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.27.2-py311h3ff9189_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.7.1-pyh3cfb1c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyinstrument-5.0.0-py311hae2e1ce_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.11.11-hc22306f_1_cpython.conda @@ -3912,6 +3912,7 @@ packages: - libgcc >=13 - ncurses >=6.5,<7.0a0 license: BSD-2-Clause + license_family: BSD size: 134657 timestamp: 1736191912705 - kind: conda @@ -3927,6 +3928,7 @@ packages: - libgcc >=13 - ncurses >=6.5,<7.0a0 license: BSD-2-Clause + license_family: BSD size: 148120 timestamp: 1736192137151 - kind: conda @@ -3942,6 +3944,7 @@ packages: - __osx >=11.0 - ncurses >=6.5,<7.0a0 license: BSD-2-Clause + license_family: BSD size: 107634 timestamp: 1736192034117 - kind: conda @@ -5906,76 +5909,76 @@ packages: timestamp: 1733220925299 - kind: conda name: max - version: 25.1.0.dev2025010605 + version: 25.1.0.dev2025010705 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025010605-release.conda - sha256: f806f7b7519e01cd68fbae2c714d1c1a9e1e96f144e920ce51c47512f81a1db3 - md5: 1bae0e6863939e6792d7129bec77983c - depends: - - max-core ==25.1.0.dev2025010605 release - - max-python >=25.1.0.dev2025010605,<26.0a0 - - mojo-jupyter ==25.1.0.dev2025010605 release - - mblack ==25.1.0.dev2025010605 release + url: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025010705-release.conda + sha256: 4f71937f851b3b8b20a6ece6ba12b390ba0d26caec64282cc85db4b3aa556157 + md5: e5cf52dd6e155fff57a8a27101b8a331 + depends: + - max-core ==25.1.0.dev2025010705 release + - max-python >=25.1.0.dev2025010705,<26.0a0 + - mojo-jupyter ==25.1.0.dev2025010705 release + - mblack ==25.1.0.dev2025010705 release license: LicenseRef-Modular-Proprietary - size: 9914 - timestamp: 1736140643481 + size: 9923 + timestamp: 1736227019263 - kind: conda name: max-core - version: 25.1.0.dev2025010605 + version: 25.1.0.dev2025010705 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025010605-release.conda - sha256: 315ad791e417ed45fcee42fe7227428bca1d77427c10b81fb5a65583a5844279 - md5: c40747b8b9245abb69db013a14266b6c + url: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025010705-release.conda + sha256: 57134626c86869f5e0b86172330a5579e2da6b576a58f5af56c27354b820c03e + md5: b2853511eb0e0871e7f28c00a63807d8 depends: - - mblack ==25.1.0.dev2025010605 release + - mblack ==25.1.0.dev2025010705 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 244726382 - timestamp: 1736140669107 + size: 247227693 + timestamp: 1736227019261 - kind: conda name: max-core - version: 25.1.0.dev2025010605 + version: 25.1.0.dev2025010705 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025010605-release.conda - sha256: dd574ac5ce9effc0f713ea63992a5a4aeaf8fa80f2c968a9c00c664703b70932 - md5: 65f814591335d2910a5e30d5f6968aff + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025010705-release.conda + sha256: 533dee921a80b6313d09c5eb2fddbe756794c89cce36e236afaa66bc6278b692 + md5: 0949e8de33bf8292b9c11bbcbc6bfb9e depends: - - mblack ==25.1.0.dev2025010605 release + - mblack ==25.1.0.dev2025010705 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 248381825 - timestamp: 1736140643479 + size: 251241180 + timestamp: 1736231934331 - kind: conda name: max-core - version: 25.1.0.dev2025010605 + version: 25.1.0.dev2025010705 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025010605-release.conda - sha256: ff28dea1ddf5adb0586a5d6a41fb6b6d0a0ee332eb4440cbaffa9b041de16db0 - md5: 1e134821c4eae4e6fa711c1cd2b8cc00 + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025010705-release.conda + sha256: 5e44a91c7f08caad35255918dc8a370931eeff635f0cd93a240fa884996f2f46 + md5: d3a439dc2f5637aa1cfdf26fbe0a7e83 depends: - - mblack ==25.1.0.dev2025010605 release + - mblack ==25.1.0.dev2025010705 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 213059614 - timestamp: 1736141300718 + size: 208980248 + timestamp: 1736227147664 - kind: conda name: max-python - version: 25.1.0.dev2025010605 + version: 25.1.0.dev2025010705 build: 3.11release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025010605-3.11release.conda - sha256: 03979f0bfe8fe8367ecb19e7bf12482b3c5162c0c39f2a632f764d4cc067b66a - md5: 9ccd8dd46d231d5bc68cd91a866a9379 + url: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025010705-3.11release.conda + sha256: 0ff2a0e3943c7eb51db1df4a2d04b9eb6cc3632ffb5ec161a3d56072e85fbe8d + md5: 2300cdd658658c85adc5bb1410435ef5 depends: - - max-core ==25.1.0.dev2025010605 release + - max-core ==25.1.0.dev2025010705 release - python 3.11.* - fastapi - httpx @@ -5998,18 +6001,18 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 122723691 - timestamp: 1736140669114 + size: 124182414 + timestamp: 1736227019268 - kind: conda name: max-python - version: 25.1.0.dev2025010605 + version: 25.1.0.dev2025010705 build: 3.11release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025010605-3.11release.conda - sha256: 27dac35e9ff38c0679b2addbbe47b2c224efdcff827148514bd49f2dd54c3dde - md5: baae3632c01d344ff53af0f7d4378f9c + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025010705-3.11release.conda + sha256: ca2ce1f220a650c2f7e4728830d68b2fff05836633dc6ff5c7568e6a8f0cb29e + md5: 83b1e6c42dcb6a8669824c5d29ab8f05 depends: - - max-core ==25.1.0.dev2025010605 release + - max-core ==25.1.0.dev2025010705 release - python 3.11.* - fastapi - httpx @@ -6032,18 +6035,18 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 126393049 - timestamp: 1736140643487 + size: 128062027 + timestamp: 1736231934339 - kind: conda name: max-python - version: 25.1.0.dev2025010605 + version: 25.1.0.dev2025010705 build: 3.11release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025010605-3.11release.conda - sha256: 9ec41838b6bf33a0bf700c318447e7771b31d935ff1ecc1a3b6cd0a82bf0b703 - md5: fad4fa6db32d9323df3a1d954126c368 + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025010705-3.11release.conda + sha256: b60f9b2a9c0f467e84a676e4d73430cb61630aa4c2adf0c8ddf74127898986da + md5: b7d022a6db5692e65df63db764efad29 depends: - - max-core ==25.1.0.dev2025010605 release + - max-core ==25.1.0.dev2025010705 release - python 3.11.* - fastapi - httpx @@ -6066,17 +6069,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 113311162 - timestamp: 1736141300721 + size: 110728455 + timestamp: 1736227147666 - kind: conda name: mblack - version: 25.1.0.dev2025010605 + version: 25.1.0.dev2025010705 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025010605-release.conda - sha256: 2166e3aa028121c737e9a7f3cde3711c8f87d83757045318467ee0d54da95fdc - md5: 90216ac95ad02c40a72aea621bb2d54e + url: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025010705-release.conda + sha256: 0ef71e28927a9e4ce6c3b91929581483352b024972a0c267de613590684ac38a + md5: 32936fc5667f32a465daf218c9c6decb depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -6086,8 +6089,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130809 - timestamp: 1736140643485 + size: 130819 + timestamp: 1736227019267 - kind: conda name: mdurl version: 0.1.2 @@ -6106,21 +6109,21 @@ packages: timestamp: 1733255681319 - kind: conda name: mojo-jupyter - version: 25.1.0.dev2025010605 + version: 25.1.0.dev2025010705 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025010605-release.conda - sha256: 5d25a6cbeb7e23d0e751085fd4a8728224f4fb46667007046322109437fde8cc - md5: 0d7c538d4488f3d729c380af437148e3 + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025010705-release.conda + sha256: 5dca1179e4a37aa94b597fdb4c9d758b071f9ab3acc72ad525290c590db6b8c7 + md5: 6cc10303055ec07e344cb2a7bfdb493f depends: - - max-core ==25.1.0.dev2025010605 release + - max-core ==25.1.0.dev2025010705 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22938 - timestamp: 1736140643486 + size: 22937 + timestamp: 1736227019268 - kind: conda name: multidict version: 6.1.0 @@ -7265,20 +7268,18 @@ packages: timestamp: 1735650532951 - kind: conda name: pygments - version: 2.18.0 - build: pyhd8ed1ab_1 - build_number: 1 + version: 2.19.1 + build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_1.conda - sha256: 0d6133545f268b2b89c2617c196fc791f365b538d4057ecd636d658c3b1e885d - md5: b38dc0206e2a530e5c2cf11dc086b31a + url: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda + sha256: 28a3e3161390a9d23bc02b4419448f8d27679d9e2c250e29849e37749c8de86b + md5: 232fb4577b6687b2d503ef8e254270c9 depends: - python >=3.9 license: BSD-2-Clause - license_family: BSD - size: 876700 - timestamp: 1733221731178 + size: 888600 + timestamp: 1736243563082 - kind: conda name: pyinstrument version: 5.0.0 diff --git a/examples/notebooks/magic.lock b/examples/notebooks/magic.lock index caa722190d..acaa918264 100644 --- a/examples/notebooks/magic.lock +++ b/examples/notebooks/magic.lock @@ -41,6 +41,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/backoff-2.2.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.12.3-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyhd8ed1ab_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.2.0-hd8ed1ab_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py312h2ec8cdc_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.4-hb9d3cd8_0.conda @@ -85,7 +86,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.4.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh3099207_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-8.31.0-pyh707e725_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda @@ -166,18 +167,18 @@ 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-25.1.0.dev2025010605-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025010605-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025010605-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025010605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025010705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025010705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025010705-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025010705-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.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025010605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025010705-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.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-he02047a_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda @@ -219,7 +220,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.4-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.27.2-py312h12e396e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.7.1-pyh3cfb1c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyinstrument-5.0.0-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.8-h9e4cc4f_1_cpython.conda @@ -330,6 +331,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/backoff-2.2.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.12.3-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyhd8ed1ab_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.2.0-hd8ed1ab_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/brotli-python-1.1.0-py312h6f74592_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h68df207_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/c-ares-1.34.4-h86ecc28_0.conda @@ -375,7 +377,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.4.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh3099207_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-8.31.0-pyh707e725_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda @@ -456,18 +458,18 @@ 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-25.1.0.dev2025010605-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025010605-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025010605-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025010605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025010705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025010705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025010705-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025010705-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.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025010605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025010705-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.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-hcccb83c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda @@ -509,7 +511,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.4-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pydantic-core-2.27.2-py312h8cbf658_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.7.1-pyh3cfb1c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyinstrument-5.0.0-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.8-h1683364_1_cpython.conda @@ -620,6 +622,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/backoff-2.2.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.12.3-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyhd8ed1ab_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.2.0-hd8ed1ab_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py312hde4cb15_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.4-h5505292_0.conda @@ -665,7 +668,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.4.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh57ce528_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-8.31.0-pyh707e725_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda @@ -738,18 +741,18 @@ 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-25.1.0.dev2025010605-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025010605-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025010605-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025010605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025010705-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025010705-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025010705-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025010705-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.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025010605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025010705-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 - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h7bae524_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda @@ -791,7 +794,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.4-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.27.2-py312hcd83bfe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.7.1-pyh3cfb1c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyinstrument-5.0.0-py312h0bf5046_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-core-10.3.2-py312hb9d441b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-framework-cocoa-10.3.2-py312hb9d441b_0.conda @@ -2300,6 +2303,21 @@ packages: license_family: Apache size: 132550 timestamp: 1736148590971 +- kind: conda + name: bleach-with-css + version: 6.2.0 + build: hd8ed1ab_3 + build_number: 3 + subdir: noarch + noarch: generic + url: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.2.0-hd8ed1ab_3.conda + sha256: 8161cf35253f7646a1fd39f90abbcc6cb69248b8fdff61cfffce4cc8448f8c02 + md5: e250a492fc70bf604737328dbe02846c + depends: + - bleach 6.2.0 pyhd8ed1ab_3 + - tinycss2 + size: 5745 + timestamp: 1736148591923 - kind: conda name: brotli-python version: 1.1.0 @@ -3448,23 +3466,21 @@ packages: timestamp: 1733223207185 - kind: conda name: importlib_resources - version: 6.4.5 - build: pyhd8ed1ab_1 - build_number: 1 + version: 6.5.2 + build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.4.5-pyhd8ed1ab_1.conda - sha256: 461199e429a3db01f0a673f8beaac5e0be75b88895952fb9183f2ab01c5c3c24 - md5: 15798fa69312d433af690c8c42b3fb36 + url: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda + sha256: acc1d991837c0afb67c75b77fdc72b4bf022aac71fedd8b9ea45918ac9b08a80 + md5: c85c76dc67d75619a92f51dfbce06992 depends: - python >=3.9 - zipp >=3.1.0 constrains: - - importlib-resources >=6.4.5,<6.4.6.0a0 + - importlib-resources >=6.5.2,<6.5.3.0a0 license: Apache-2.0 - license_family: APACHE - size: 32701 - timestamp: 1733231441973 + size: 33781 + timestamp: 1736252433366 - kind: conda name: ipykernel version: 6.29.5 @@ -4944,6 +4960,7 @@ packages: - libgcc >=13 - ncurses >=6.5,<7.0a0 license: BSD-2-Clause + license_family: BSD size: 134657 timestamp: 1736191912705 - kind: conda @@ -4959,6 +4976,7 @@ packages: - libgcc >=13 - ncurses >=6.5,<7.0a0 license: BSD-2-Clause + license_family: BSD size: 148120 timestamp: 1736192137151 - kind: conda @@ -4974,6 +4992,7 @@ packages: - __osx >=11.0 - ncurses >=6.5,<7.0a0 license: BSD-2-Clause + license_family: BSD size: 107634 timestamp: 1736192034117 - kind: conda @@ -6955,76 +6974,76 @@ packages: timestamp: 1733417051523 - kind: conda name: max - version: 25.1.0.dev2025010605 + version: 25.1.0.dev2025010705 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025010605-release.conda - sha256: f806f7b7519e01cd68fbae2c714d1c1a9e1e96f144e920ce51c47512f81a1db3 - md5: 1bae0e6863939e6792d7129bec77983c + url: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025010705-release.conda + sha256: 4f71937f851b3b8b20a6ece6ba12b390ba0d26caec64282cc85db4b3aa556157 + md5: e5cf52dd6e155fff57a8a27101b8a331 depends: - - max-core ==25.1.0.dev2025010605 release - - max-python >=25.1.0.dev2025010605,<26.0a0 - - mojo-jupyter ==25.1.0.dev2025010605 release - - mblack ==25.1.0.dev2025010605 release + - max-core ==25.1.0.dev2025010705 release + - max-python >=25.1.0.dev2025010705,<26.0a0 + - mojo-jupyter ==25.1.0.dev2025010705 release + - mblack ==25.1.0.dev2025010705 release license: LicenseRef-Modular-Proprietary - size: 9914 - timestamp: 1736140643481 + size: 9923 + timestamp: 1736227019263 - kind: conda name: max-core - version: 25.1.0.dev2025010605 + version: 25.1.0.dev2025010705 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025010605-release.conda - sha256: 315ad791e417ed45fcee42fe7227428bca1d77427c10b81fb5a65583a5844279 - md5: c40747b8b9245abb69db013a14266b6c + url: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025010705-release.conda + sha256: 57134626c86869f5e0b86172330a5579e2da6b576a58f5af56c27354b820c03e + md5: b2853511eb0e0871e7f28c00a63807d8 depends: - - mblack ==25.1.0.dev2025010605 release + - mblack ==25.1.0.dev2025010705 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 244726382 - timestamp: 1736140669107 + size: 247227693 + timestamp: 1736227019261 - kind: conda name: max-core - version: 25.1.0.dev2025010605 + version: 25.1.0.dev2025010705 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025010605-release.conda - sha256: dd574ac5ce9effc0f713ea63992a5a4aeaf8fa80f2c968a9c00c664703b70932 - md5: 65f814591335d2910a5e30d5f6968aff + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025010705-release.conda + sha256: 533dee921a80b6313d09c5eb2fddbe756794c89cce36e236afaa66bc6278b692 + md5: 0949e8de33bf8292b9c11bbcbc6bfb9e depends: - - mblack ==25.1.0.dev2025010605 release + - mblack ==25.1.0.dev2025010705 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 248381825 - timestamp: 1736140643479 + size: 251241180 + timestamp: 1736231934331 - kind: conda name: max-core - version: 25.1.0.dev2025010605 + version: 25.1.0.dev2025010705 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025010605-release.conda - sha256: ff28dea1ddf5adb0586a5d6a41fb6b6d0a0ee332eb4440cbaffa9b041de16db0 - md5: 1e134821c4eae4e6fa711c1cd2b8cc00 + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025010705-release.conda + sha256: 5e44a91c7f08caad35255918dc8a370931eeff635f0cd93a240fa884996f2f46 + md5: d3a439dc2f5637aa1cfdf26fbe0a7e83 depends: - - mblack ==25.1.0.dev2025010605 release + - mblack ==25.1.0.dev2025010705 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 213059614 - timestamp: 1736141300718 + size: 208980248 + timestamp: 1736227147664 - kind: conda name: max-python - version: 25.1.0.dev2025010605 + version: 25.1.0.dev2025010705 build: 3.12release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025010605-3.12release.conda - sha256: 80e1b3a95eb37bd76396c470b8a17168fdd1b0a2e193d66981824760bd82e768 - md5: 28ecc247a48f0de9dee4f6fe6d1be095 + url: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025010705-3.12release.conda + sha256: a3072934203369556802b32afe2c7b3b70383ce910e45fff41330ece05d385bf + md5: 5c9ca83a2cd807b07247873216a76317 depends: - - max-core ==25.1.0.dev2025010605 release + - max-core ==25.1.0.dev2025010705 release - python 3.12.* - fastapi - httpx @@ -7047,18 +7066,18 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 122702106 - timestamp: 1736140669117 + size: 124176244 + timestamp: 1736227019271 - kind: conda name: max-python - version: 25.1.0.dev2025010605 + version: 25.1.0.dev2025010705 build: 3.12release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025010605-3.12release.conda - sha256: 90a8fa8b7b654e35adc36cf2309898d4a965b5b85f0c6ac912ec1b7439d247c2 - md5: fc56c27a4041f32ce7f03c94141e6fd9 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025010705-3.12release.conda + sha256: b7e6bc5c4acb7803626e494139aca2e1b997f588e8b8d44bd9165ef55e05048a + md5: e4b5ecb54c41900473643742021af465 depends: - - max-core ==25.1.0.dev2025010605 release + - max-core ==25.1.0.dev2025010705 release - python 3.12.* - fastapi - httpx @@ -7081,18 +7100,18 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 126373708 - timestamp: 1736140643490 + size: 128068854 + timestamp: 1736231934342 - kind: conda name: max-python - version: 25.1.0.dev2025010605 + version: 25.1.0.dev2025010705 build: 3.12release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025010605-3.12release.conda - sha256: 6948694d15390b9baf752a38f17fa7c4e0712b3b71f893955037e65a84fb72c9 - md5: f7c5e210de943e91a2550a9a0ed51e59 + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025010705-3.12release.conda + sha256: 29812e40f9474a260aeab5d76253ffd35a9feecaff301b7e2895e755a61932ce + md5: 7811e97d595835fe8f312c1b7d2ccfc1 depends: - - max-core ==25.1.0.dev2025010605 release + - max-core ==25.1.0.dev2025010705 release - python 3.12.* - fastapi - httpx @@ -7115,17 +7134,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 113299681 - timestamp: 1736141300722 + size: 110696918 + timestamp: 1736227147667 - kind: conda name: mblack - version: 25.1.0.dev2025010605 + version: 25.1.0.dev2025010705 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025010605-release.conda - sha256: 2166e3aa028121c737e9a7f3cde3711c8f87d83757045318467ee0d54da95fdc - md5: 90216ac95ad02c40a72aea621bb2d54e + url: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025010705-release.conda + sha256: 0ef71e28927a9e4ce6c3b91929581483352b024972a0c267de613590684ac38a + md5: 32936fc5667f32a465daf218c9c6decb depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -7135,8 +7154,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130809 - timestamp: 1736140643485 + size: 130819 + timestamp: 1736227019267 - kind: conda name: mdurl version: 0.1.2 @@ -7171,21 +7190,21 @@ packages: timestamp: 1735686983426 - kind: conda name: mojo-jupyter - version: 25.1.0.dev2025010605 + version: 25.1.0.dev2025010705 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025010605-release.conda - sha256: 5d25a6cbeb7e23d0e751085fd4a8728224f4fb46667007046322109437fde8cc - md5: 0d7c538d4488f3d729c380af437148e3 + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025010705-release.conda + sha256: 5dca1179e4a37aa94b597fdb4c9d758b071f9ab3acc72ad525290c590db6b8c7 + md5: 6cc10303055ec07e344cb2a7bfdb493f depends: - - max-core ==25.1.0.dev2025010605 release + - max-core ==25.1.0.dev2025010705 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22938 - timestamp: 1736140643486 + size: 22937 + timestamp: 1736227019268 - kind: conda name: multidict version: 6.1.0 @@ -7333,15 +7352,16 @@ packages: - kind: conda name: nbconvert-core version: 7.16.5 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.5-pyhd8ed1ab_0.conda - sha256: b68320693e2864d3d246ce6e92c3e7313397ee26d21fcd3c21ebcaccb741aed5 - md5: 4b55bdb10ff17f070b31b2ab52b189d0 + url: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.5-pyhd8ed1ab_1.conda + sha256: 9eed80365c012ab3bbb0f0ed1446af496d6810063dfa07dde33ae4a6d8a392ef + md5: dd50a122c5b9782b1e9b2695473bfd95 depends: - beautifulsoup4 - - bleach !=5.0.0 + - bleach-with-css !=5.0.0 - defusedxml - entrypoints >=0.2.2 - importlib-metadata >=3.6 @@ -7356,15 +7376,13 @@ packages: - pandocfilters >=1.4.1 - pygments >=2.4.1 - python >=3.9 - - tinycss2 >=1.1.0,<1.5 - traitlets >=5.1 constrains: - - nbconvert =7.16.5=*_0 + - nbconvert =7.16.5=*_1 - pandoc >=2.9.2,<4.0.0 license: BSD-3-Clause - license_family: BSD - size: 189317 - timestamp: 1735858344122 + size: 189127 + timestamp: 1736258775758 - kind: conda name: nbformat version: 5.10.4 @@ -8647,20 +8665,18 @@ packages: timestamp: 1735650532951 - kind: conda name: pygments - version: 2.18.0 - build: pyhd8ed1ab_1 - build_number: 1 + version: 2.19.1 + build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_1.conda - sha256: 0d6133545f268b2b89c2617c196fc791f365b538d4057ecd636d658c3b1e885d - md5: b38dc0206e2a530e5c2cf11dc086b31a + url: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda + sha256: 28a3e3161390a9d23bc02b4419448f8d27679d9e2c250e29849e37749c8de86b + md5: 232fb4577b6687b2d503ef8e254270c9 depends: - python >=3.9 license: BSD-2-Clause - license_family: BSD - size: 876700 - timestamp: 1733221731178 + size: 888600 + timestamp: 1736243563082 - kind: conda name: pyinstrument version: 5.0.0 diff --git a/examples/operators/magic.lock b/examples/operators/magic.lock index 321e2e76aa..d5de2596e1 100644 --- a/examples/operators/magic.lock +++ b/examples/operators/magic.lock @@ -131,12 +131,12 @@ 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-25.1.0.dev2025010605-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025010605-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025010605-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025010605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025010705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025010705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025010705-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025010705-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-25.1.0.dev2025010605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025010705-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 @@ -167,7 +167,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.4-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.27.2-py312h12e396e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.7.1-pyh3cfb1c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyinstrument-5.0.0-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.8-h9e4cc4f_1_cpython.conda @@ -349,12 +349,12 @@ 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-25.1.0.dev2025010605-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025010605-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025010605-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025010605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025010705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025010705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025010705-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025010705-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-25.1.0.dev2025010605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025010705-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 @@ -385,7 +385,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.4-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pydantic-core-2.27.2-py312h8cbf658_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.7.1-pyh3cfb1c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyinstrument-5.0.0-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.8-h1683364_1_cpython.conda @@ -558,12 +558,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-25.1.0.dev2025010605-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025010605-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025010605-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025010605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025010705-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025010705-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025010705-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025010705-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-25.1.0.dev2025010605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025010705-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 @@ -594,7 +594,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.4-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.27.2-py312hcd83bfe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.7.1-pyh3cfb1c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyinstrument-5.0.0-py312h0bf5046_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.8-hc22306f_1_cpython.conda @@ -3912,6 +3912,7 @@ packages: - libgcc >=13 - ncurses >=6.5,<7.0a0 license: BSD-2-Clause + license_family: BSD size: 134657 timestamp: 1736191912705 - kind: conda @@ -3927,6 +3928,7 @@ packages: - libgcc >=13 - ncurses >=6.5,<7.0a0 license: BSD-2-Clause + license_family: BSD size: 148120 timestamp: 1736192137151 - kind: conda @@ -3942,6 +3944,7 @@ packages: - __osx >=11.0 - ncurses >=6.5,<7.0a0 license: BSD-2-Clause + license_family: BSD size: 107634 timestamp: 1736192034117 - kind: conda @@ -5906,76 +5909,76 @@ packages: timestamp: 1733219945697 - kind: conda name: max - version: 25.1.0.dev2025010605 + version: 25.1.0.dev2025010705 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025010605-release.conda - sha256: f806f7b7519e01cd68fbae2c714d1c1a9e1e96f144e920ce51c47512f81a1db3 - md5: 1bae0e6863939e6792d7129bec77983c - depends: - - max-core ==25.1.0.dev2025010605 release - - max-python >=25.1.0.dev2025010605,<26.0a0 - - mojo-jupyter ==25.1.0.dev2025010605 release - - mblack ==25.1.0.dev2025010605 release + url: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025010705-release.conda + sha256: 4f71937f851b3b8b20a6ece6ba12b390ba0d26caec64282cc85db4b3aa556157 + md5: e5cf52dd6e155fff57a8a27101b8a331 + depends: + - max-core ==25.1.0.dev2025010705 release + - max-python >=25.1.0.dev2025010705,<26.0a0 + - mojo-jupyter ==25.1.0.dev2025010705 release + - mblack ==25.1.0.dev2025010705 release license: LicenseRef-Modular-Proprietary - size: 9914 - timestamp: 1736140643481 + size: 9923 + timestamp: 1736227019263 - kind: conda name: max-core - version: 25.1.0.dev2025010605 + version: 25.1.0.dev2025010705 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025010605-release.conda - sha256: 315ad791e417ed45fcee42fe7227428bca1d77427c10b81fb5a65583a5844279 - md5: c40747b8b9245abb69db013a14266b6c + url: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025010705-release.conda + sha256: 57134626c86869f5e0b86172330a5579e2da6b576a58f5af56c27354b820c03e + md5: b2853511eb0e0871e7f28c00a63807d8 depends: - - mblack ==25.1.0.dev2025010605 release + - mblack ==25.1.0.dev2025010705 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 244726382 - timestamp: 1736140669107 + size: 247227693 + timestamp: 1736227019261 - kind: conda name: max-core - version: 25.1.0.dev2025010605 + version: 25.1.0.dev2025010705 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025010605-release.conda - sha256: dd574ac5ce9effc0f713ea63992a5a4aeaf8fa80f2c968a9c00c664703b70932 - md5: 65f814591335d2910a5e30d5f6968aff + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025010705-release.conda + sha256: 533dee921a80b6313d09c5eb2fddbe756794c89cce36e236afaa66bc6278b692 + md5: 0949e8de33bf8292b9c11bbcbc6bfb9e depends: - - mblack ==25.1.0.dev2025010605 release + - mblack ==25.1.0.dev2025010705 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 248381825 - timestamp: 1736140643479 + size: 251241180 + timestamp: 1736231934331 - kind: conda name: max-core - version: 25.1.0.dev2025010605 + version: 25.1.0.dev2025010705 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025010605-release.conda - sha256: ff28dea1ddf5adb0586a5d6a41fb6b6d0a0ee332eb4440cbaffa9b041de16db0 - md5: 1e134821c4eae4e6fa711c1cd2b8cc00 + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025010705-release.conda + sha256: 5e44a91c7f08caad35255918dc8a370931eeff635f0cd93a240fa884996f2f46 + md5: d3a439dc2f5637aa1cfdf26fbe0a7e83 depends: - - mblack ==25.1.0.dev2025010605 release + - mblack ==25.1.0.dev2025010705 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 213059614 - timestamp: 1736141300718 + size: 208980248 + timestamp: 1736227147664 - kind: conda name: max-python - version: 25.1.0.dev2025010605 + version: 25.1.0.dev2025010705 build: 3.12release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025010605-3.12release.conda - sha256: 80e1b3a95eb37bd76396c470b8a17168fdd1b0a2e193d66981824760bd82e768 - md5: 28ecc247a48f0de9dee4f6fe6d1be095 + url: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025010705-3.12release.conda + sha256: a3072934203369556802b32afe2c7b3b70383ce910e45fff41330ece05d385bf + md5: 5c9ca83a2cd807b07247873216a76317 depends: - - max-core ==25.1.0.dev2025010605 release + - max-core ==25.1.0.dev2025010705 release - python 3.12.* - fastapi - httpx @@ -5998,18 +6001,18 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 122702106 - timestamp: 1736140669117 + size: 124176244 + timestamp: 1736227019271 - kind: conda name: max-python - version: 25.1.0.dev2025010605 + version: 25.1.0.dev2025010705 build: 3.12release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025010605-3.12release.conda - sha256: 90a8fa8b7b654e35adc36cf2309898d4a965b5b85f0c6ac912ec1b7439d247c2 - md5: fc56c27a4041f32ce7f03c94141e6fd9 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025010705-3.12release.conda + sha256: b7e6bc5c4acb7803626e494139aca2e1b997f588e8b8d44bd9165ef55e05048a + md5: e4b5ecb54c41900473643742021af465 depends: - - max-core ==25.1.0.dev2025010605 release + - max-core ==25.1.0.dev2025010705 release - python 3.12.* - fastapi - httpx @@ -6032,18 +6035,18 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 126373708 - timestamp: 1736140643490 + size: 128068854 + timestamp: 1736231934342 - kind: conda name: max-python - version: 25.1.0.dev2025010605 + version: 25.1.0.dev2025010705 build: 3.12release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025010605-3.12release.conda - sha256: 6948694d15390b9baf752a38f17fa7c4e0712b3b71f893955037e65a84fb72c9 - md5: f7c5e210de943e91a2550a9a0ed51e59 + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025010705-3.12release.conda + sha256: 29812e40f9474a260aeab5d76253ffd35a9feecaff301b7e2895e755a61932ce + md5: 7811e97d595835fe8f312c1b7d2ccfc1 depends: - - max-core ==25.1.0.dev2025010605 release + - max-core ==25.1.0.dev2025010705 release - python 3.12.* - fastapi - httpx @@ -6066,17 +6069,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 113299681 - timestamp: 1736141300722 + size: 110696918 + timestamp: 1736227147667 - kind: conda name: mblack - version: 25.1.0.dev2025010605 + version: 25.1.0.dev2025010705 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025010605-release.conda - sha256: 2166e3aa028121c737e9a7f3cde3711c8f87d83757045318467ee0d54da95fdc - md5: 90216ac95ad02c40a72aea621bb2d54e + url: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025010705-release.conda + sha256: 0ef71e28927a9e4ce6c3b91929581483352b024972a0c267de613590684ac38a + md5: 32936fc5667f32a465daf218c9c6decb depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -6086,8 +6089,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130809 - timestamp: 1736140643485 + size: 130819 + timestamp: 1736227019267 - kind: conda name: mdurl version: 0.1.2 @@ -6106,21 +6109,21 @@ packages: timestamp: 1733255681319 - kind: conda name: mojo-jupyter - version: 25.1.0.dev2025010605 + version: 25.1.0.dev2025010705 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025010605-release.conda - sha256: 5d25a6cbeb7e23d0e751085fd4a8728224f4fb46667007046322109437fde8cc - md5: 0d7c538d4488f3d729c380af437148e3 + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025010705-release.conda + sha256: 5dca1179e4a37aa94b597fdb4c9d758b071f9ab3acc72ad525290c590db6b8c7 + md5: 6cc10303055ec07e344cb2a7bfdb493f depends: - - max-core ==25.1.0.dev2025010605 release + - max-core ==25.1.0.dev2025010705 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22938 - timestamp: 1736140643486 + size: 22937 + timestamp: 1736227019268 - kind: conda name: multidict version: 6.1.0 @@ -7265,20 +7268,18 @@ packages: timestamp: 1735650532951 - kind: conda name: pygments - version: 2.18.0 - build: pyhd8ed1ab_1 - build_number: 1 + version: 2.19.1 + build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_1.conda - sha256: 0d6133545f268b2b89c2617c196fc791f365b538d4057ecd636d658c3b1e885d - md5: b38dc0206e2a530e5c2cf11dc086b31a + url: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda + sha256: 28a3e3161390a9d23bc02b4419448f8d27679d9e2c250e29849e37749c8de86b + md5: 232fb4577b6687b2d503ef8e254270c9 depends: - python >=3.9 license: BSD-2-Clause - license_family: BSD - size: 876700 - timestamp: 1733221731178 + size: 888600 + timestamp: 1736243563082 - kind: conda name: pyinstrument version: 5.0.0 diff --git a/magic.lock b/magic.lock index 491bf49764..e015b725a8 100644 --- a/magic.lock +++ b/magic.lock @@ -132,12 +132,12 @@ 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-25.1.0.dev2025010605-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025010605-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025010605-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025010605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025010705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025010705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025010705-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025010705-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-25.1.0.dev2025010605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025010705-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 @@ -168,7 +168,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.4-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.27.2-py312h12e396e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.7.1-pyh3cfb1c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyinstrument-5.0.0-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.8-h9e4cc4f_1_cpython.conda @@ -351,12 +351,12 @@ 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-25.1.0.dev2025010605-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025010605-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025010605-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025010605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025010705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025010705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025010705-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025010705-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-25.1.0.dev2025010605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025010705-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 @@ -387,7 +387,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.4-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pydantic-core-2.27.2-py312h8cbf658_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.7.1-pyh3cfb1c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyinstrument-5.0.0-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.8-h1683364_1_cpython.conda @@ -561,12 +561,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-25.1.0.dev2025010605-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025010605-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025010605-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025010605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025010705-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025010705-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025010705-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025010705-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-25.1.0.dev2025010605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025010705-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 @@ -597,7 +597,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.4-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.27.2-py312hcd83bfe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.7.1-pyh3cfb1c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyinstrument-5.0.0-py312h0bf5046_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.8-hc22306f_1_cpython.conda @@ -3915,6 +3915,7 @@ packages: - libgcc >=13 - ncurses >=6.5,<7.0a0 license: BSD-2-Clause + license_family: BSD size: 134657 timestamp: 1736191912705 - kind: conda @@ -3930,6 +3931,7 @@ packages: - libgcc >=13 - ncurses >=6.5,<7.0a0 license: BSD-2-Clause + license_family: BSD size: 148120 timestamp: 1736192137151 - kind: conda @@ -3945,6 +3947,7 @@ packages: - __osx >=11.0 - ncurses >=6.5,<7.0a0 license: BSD-2-Clause + license_family: BSD size: 107634 timestamp: 1736192034117 - kind: conda @@ -5924,76 +5927,76 @@ packages: timestamp: 1733219945697 - kind: conda name: max - version: 25.1.0.dev2025010605 + version: 25.1.0.dev2025010705 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025010605-release.conda - sha256: f806f7b7519e01cd68fbae2c714d1c1a9e1e96f144e920ce51c47512f81a1db3 - md5: 1bae0e6863939e6792d7129bec77983c - depends: - - max-core ==25.1.0.dev2025010605 release - - max-python >=25.1.0.dev2025010605,<26.0a0 - - mojo-jupyter ==25.1.0.dev2025010605 release - - mblack ==25.1.0.dev2025010605 release + url: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025010705-release.conda + sha256: 4f71937f851b3b8b20a6ece6ba12b390ba0d26caec64282cc85db4b3aa556157 + md5: e5cf52dd6e155fff57a8a27101b8a331 + depends: + - max-core ==25.1.0.dev2025010705 release + - max-python >=25.1.0.dev2025010705,<26.0a0 + - mojo-jupyter ==25.1.0.dev2025010705 release + - mblack ==25.1.0.dev2025010705 release license: LicenseRef-Modular-Proprietary - size: 9914 - timestamp: 1736140643481 + size: 9923 + timestamp: 1736227019263 - kind: conda name: max-core - version: 25.1.0.dev2025010605 + version: 25.1.0.dev2025010705 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025010605-release.conda - sha256: 315ad791e417ed45fcee42fe7227428bca1d77427c10b81fb5a65583a5844279 - md5: c40747b8b9245abb69db013a14266b6c + url: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025010705-release.conda + sha256: 57134626c86869f5e0b86172330a5579e2da6b576a58f5af56c27354b820c03e + md5: b2853511eb0e0871e7f28c00a63807d8 depends: - - mblack ==25.1.0.dev2025010605 release + - mblack ==25.1.0.dev2025010705 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 244726382 - timestamp: 1736140669107 + size: 247227693 + timestamp: 1736227019261 - kind: conda name: max-core - version: 25.1.0.dev2025010605 + version: 25.1.0.dev2025010705 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025010605-release.conda - sha256: dd574ac5ce9effc0f713ea63992a5a4aeaf8fa80f2c968a9c00c664703b70932 - md5: 65f814591335d2910a5e30d5f6968aff + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025010705-release.conda + sha256: 533dee921a80b6313d09c5eb2fddbe756794c89cce36e236afaa66bc6278b692 + md5: 0949e8de33bf8292b9c11bbcbc6bfb9e depends: - - mblack ==25.1.0.dev2025010605 release + - mblack ==25.1.0.dev2025010705 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 248381825 - timestamp: 1736140643479 + size: 251241180 + timestamp: 1736231934331 - kind: conda name: max-core - version: 25.1.0.dev2025010605 + version: 25.1.0.dev2025010705 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025010605-release.conda - sha256: ff28dea1ddf5adb0586a5d6a41fb6b6d0a0ee332eb4440cbaffa9b041de16db0 - md5: 1e134821c4eae4e6fa711c1cd2b8cc00 + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025010705-release.conda + sha256: 5e44a91c7f08caad35255918dc8a370931eeff635f0cd93a240fa884996f2f46 + md5: d3a439dc2f5637aa1cfdf26fbe0a7e83 depends: - - mblack ==25.1.0.dev2025010605 release + - mblack ==25.1.0.dev2025010705 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 213059614 - timestamp: 1736141300718 + size: 208980248 + timestamp: 1736227147664 - kind: conda name: max-python - version: 25.1.0.dev2025010605 + version: 25.1.0.dev2025010705 build: 3.12release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025010605-3.12release.conda - sha256: 80e1b3a95eb37bd76396c470b8a17168fdd1b0a2e193d66981824760bd82e768 - md5: 28ecc247a48f0de9dee4f6fe6d1be095 + url: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025010705-3.12release.conda + sha256: a3072934203369556802b32afe2c7b3b70383ce910e45fff41330ece05d385bf + md5: 5c9ca83a2cd807b07247873216a76317 depends: - - max-core ==25.1.0.dev2025010605 release + - max-core ==25.1.0.dev2025010705 release - python 3.12.* - fastapi - httpx @@ -6016,18 +6019,18 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 122702106 - timestamp: 1736140669117 + size: 124176244 + timestamp: 1736227019271 - kind: conda name: max-python - version: 25.1.0.dev2025010605 + version: 25.1.0.dev2025010705 build: 3.12release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025010605-3.12release.conda - sha256: 90a8fa8b7b654e35adc36cf2309898d4a965b5b85f0c6ac912ec1b7439d247c2 - md5: fc56c27a4041f32ce7f03c94141e6fd9 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025010705-3.12release.conda + sha256: b7e6bc5c4acb7803626e494139aca2e1b997f588e8b8d44bd9165ef55e05048a + md5: e4b5ecb54c41900473643742021af465 depends: - - max-core ==25.1.0.dev2025010605 release + - max-core ==25.1.0.dev2025010705 release - python 3.12.* - fastapi - httpx @@ -6050,18 +6053,18 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 126373708 - timestamp: 1736140643490 + size: 128068854 + timestamp: 1736231934342 - kind: conda name: max-python - version: 25.1.0.dev2025010605 + version: 25.1.0.dev2025010705 build: 3.12release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025010605-3.12release.conda - sha256: 6948694d15390b9baf752a38f17fa7c4e0712b3b71f893955037e65a84fb72c9 - md5: f7c5e210de943e91a2550a9a0ed51e59 + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025010705-3.12release.conda + sha256: 29812e40f9474a260aeab5d76253ffd35a9feecaff301b7e2895e755a61932ce + md5: 7811e97d595835fe8f312c1b7d2ccfc1 depends: - - max-core ==25.1.0.dev2025010605 release + - max-core ==25.1.0.dev2025010705 release - python 3.12.* - fastapi - httpx @@ -6084,17 +6087,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 113299681 - timestamp: 1736141300722 + size: 110696918 + timestamp: 1736227147667 - kind: conda name: mblack - version: 25.1.0.dev2025010605 + version: 25.1.0.dev2025010705 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025010605-release.conda - sha256: 2166e3aa028121c737e9a7f3cde3711c8f87d83757045318467ee0d54da95fdc - md5: 90216ac95ad02c40a72aea621bb2d54e + url: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025010705-release.conda + sha256: 0ef71e28927a9e4ce6c3b91929581483352b024972a0c267de613590684ac38a + md5: 32936fc5667f32a465daf218c9c6decb depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -6104,8 +6107,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130809 - timestamp: 1736140643485 + size: 130819 + timestamp: 1736227019267 - kind: conda name: mdurl version: 0.1.2 @@ -6124,21 +6127,21 @@ packages: timestamp: 1733255681319 - kind: conda name: mojo-jupyter - version: 25.1.0.dev2025010605 + version: 25.1.0.dev2025010705 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025010605-release.conda - sha256: 5d25a6cbeb7e23d0e751085fd4a8728224f4fb46667007046322109437fde8cc - md5: 0d7c538d4488f3d729c380af437148e3 + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025010705-release.conda + sha256: 5dca1179e4a37aa94b597fdb4c9d758b071f9ab3acc72ad525290c590db6b8c7 + md5: 6cc10303055ec07e344cb2a7bfdb493f depends: - - max-core ==25.1.0.dev2025010605 release + - max-core ==25.1.0.dev2025010705 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22938 - timestamp: 1736140643486 + size: 22937 + timestamp: 1736227019268 - kind: conda name: multidict version: 6.1.0 @@ -7283,20 +7286,18 @@ packages: timestamp: 1735650532951 - kind: conda name: pygments - version: 2.18.0 - build: pyhd8ed1ab_1 - build_number: 1 + version: 2.19.1 + build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_1.conda - sha256: 0d6133545f268b2b89c2617c196fc791f365b538d4057ecd636d658c3b1e885d - md5: b38dc0206e2a530e5c2cf11dc086b31a + url: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda + sha256: 28a3e3161390a9d23bc02b4419448f8d27679d9e2c250e29849e37749c8de86b + md5: 232fb4577b6687b2d503ef8e254270c9 depends: - python >=3.9 license: BSD-2-Clause - license_family: BSD - size: 876700 - timestamp: 1733221731178 + size: 888600 + timestamp: 1736243563082 - kind: conda name: pyinstrument version: 5.0.0 From 86ea8563dade98b0459590f37513572202f9fd8b Mon Sep 17 00:00:00 2001 From: Lukas Hermann <1734032+lsh@users.noreply.github.com> Date: Mon, 6 Jan 2025 21:21:52 -0800 Subject: [PATCH 158/509] [stdlib] Make Span's InlineArray constructor implicit (#53351) MODULAR_ORIG_COMMIT_REV_ID: bd8c2e30eaa734f63306eabfe15d1aea6a272d4f --- stdlib/src/memory/span.mojo | 1 + stdlib/test/memory/test_span.mojo | 13 +++++++++++++ 2 files changed, 14 insertions(+) diff --git a/stdlib/src/memory/span.mojo b/stdlib/src/memory/span.mojo index 5d5b780322..5a19312929 100644 --- a/stdlib/src/memory/span.mojo +++ b/stdlib/src/memory/span.mojo @@ -147,6 +147,7 @@ struct Span[ self._len = len(list) @always_inline + @implicit fn __init__[ size: Int, // ](mut self, ref [origin]array: InlineArray[T, size]): diff --git a/stdlib/test/memory/test_span.mojo b/stdlib/test/memory/test_span.mojo index 4a3b6dd980..9b52577109 100644 --- a/stdlib/test/memory/test_span.mojo +++ b/stdlib/test/memory/test_span.mojo @@ -208,6 +208,19 @@ def test_reversed(): i += 1 +# We don't actually need to call this test +# but we want to make sure it compiles +def test_span_coerce(): + var l = List[Int](1, 2, 3) + var a = InlineArray[Int, 3](1, 2, 3) + + fn takes_span(s: Span[Int]): + pass + + takes_span(l) + takes_span(a) + + def main(): test_span_list_int() test_span_list_str() From e1e9f244c29df28b32a611b7ca0268fa0963a489 Mon Sep 17 00:00:00 2001 From: Connor Gray Date: Tue, 7 Jan 2025 12:24:14 -0600 Subject: [PATCH 159/509] [stdlib] polish: Remove `@implicit` from `List.__init__({*values: T, Span[T]})` This removes the implicitness of two `List` initializers that take, respectively, a `Span[T]` and a variadic list of `T`. Note that one subtle effect of this change is that you may no longer pass a "scalar" `T` to an argument expecting a `List[T]`. You must now allocate the list explicitly. MODULAR_ORIG_COMMIT_REV_ID: 69490345dce3f9e9a91fb28ec2693c52f561fedf --- docs/changelog.md | 2 ++ stdlib/src/collections/list.mojo | 2 -- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/changelog.md b/docs/changelog.md index e0ea494658..1ba3d70a26 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -108,6 +108,8 @@ what we publish. - `String.__init__(out self, StringRef)` - `String.__init__(out self, StringSlice)` + - `List.__init__(out self, owned *values: T)` + - `List.__init__(out self, span: Span[T])` - The `ExplicitlyCopyable` trait has changed to require a `fn copy(self) -> Self` method. Previously, an initializer with the signature diff --git a/stdlib/src/collections/list.mojo b/stdlib/src/collections/list.mojo index f537f7151f..c4d5bff5ca 100644 --- a/stdlib/src/collections/list.mojo +++ b/stdlib/src/collections/list.mojo @@ -135,7 +135,6 @@ struct List[T: CollectionElement, hint_trivial_type: Bool = False]( self.size = 0 self.capacity = capacity - @implicit fn __init__(out self, owned *values: T): """Constructs a list from the given values. @@ -167,7 +166,6 @@ struct List[T: CollectionElement, hint_trivial_type: Bool = False]( self.size = length - @implicit fn __init__(out self, span: Span[T]): """Constructs a list from the a Span of values. From f8b96d773a31fa14a67f96e457548ffffece23a8 Mon Sep 17 00:00:00 2001 From: Eric Hein Date: Tue, 7 Jan 2025 13:48:42 -0500 Subject: [PATCH 160/509] [stdlib] Disable printing from debug_assert on AMD GPU Until printf is supported on AMD GPU, we cannot print from debug_assert. MODULAR_ORIG_COMMIT_REV_ID: 652650d2013b8f1246489f7164b89f1041a177b5 --- stdlib/src/builtin/debug_assert.mojo | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/stdlib/src/builtin/debug_assert.mojo b/stdlib/src/builtin/debug_assert.mojo index e66c968189..d20ea0444d 100644 --- a/stdlib/src/builtin/debug_assert.mojo +++ b/stdlib/src/builtin/debug_assert.mojo @@ -17,7 +17,7 @@ These are Mojo built-ins, so you don't need to import them. from os import abort -from sys import is_gpu, is_nvidia_gpu, llvm_intrinsic +from sys import is_gpu, is_nvidia_gpu, is_amd_gpu, llvm_intrinsic from sys._build import is_debug_build from sys.ffi import c_char, c_size_t, c_uint, external_call from sys.param_env import env_get_string @@ -241,7 +241,10 @@ fn _debug_assert_msg( var stdout = sys.stdout @parameter - if is_gpu(): + if is_amd_gpu(): + # FIXME: debug_assert printing is disabled on AMD GPU, see KERN-1448 + pass + elif is_nvidia_gpu(): # Count the total length of bytes to allocate only once var arg_bytes = _ArgBytes() arg_bytes.write( @@ -269,10 +272,6 @@ fn _debug_assert_msg( Span[Byte, ImmutableAnyOrigin](ptr=buffer.data, length=buffer.pos) ) - @parameter - if defined_mode != "warn": - abort() - else: var buffer = _WriteBufferStack[4096](stdout) buffer.write("At ", loc, ": ") @@ -286,9 +285,9 @@ fn _debug_assert_msg( write_args(buffer, messages, end="\n") buffer.flush() - @parameter - if defined_mode != "warn": - abort() + @parameter + if defined_mode != "warn": + abort() struct _ThreadContext(Writable): From a35a4ad2b916f45fced8c8c38c7d240c965859da Mon Sep 17 00:00:00 2001 From: Connor Gray Date: Tue, 7 Jan 2025 13:48:55 -0600 Subject: [PATCH 161/509] [stdlib] feat: Implement `Representable` for `StringSlice` * Move implemention of `String.__repr__()` to `StringSlice`. MODULAR_ORIG_COMMIT_REV_ID: 6dfe815435dca6008366b883046dd7e931cc9c06 --- docs/changelog.md | 6 +++ stdlib/src/builtin/string_literal.mojo | 2 +- stdlib/src/collections/string/string.mojo | 29 +-------------- .../src/collections/string/string_slice.mojo | 37 +++++++++++++++++++ .../test/collections/string/test_string.mojo | 27 -------------- .../collections/string/test_string_slice.mojo | 29 +++++++++++++++ 6 files changed, 74 insertions(+), 56 deletions(-) diff --git a/docs/changelog.md b/docs/changelog.md index 1ba3d70a26..ea416dff84 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -100,6 +100,12 @@ what we publish. - `atol()` - `atof()` +- Various functionality has moved from `String` and `StringRef` to the more + general `StringSlice` type. + + - `StringSlice` now implements `Representable`, and that implementation is now + used by `String.__repr__()` and `StringRef.__repr__()`. + - Removed `@implicit` decorator from some standard library initializer methods that perform allocation. This reduces places where Mojo code could implicitly allocate where the user may not be aware. diff --git a/stdlib/src/builtin/string_literal.mojo b/stdlib/src/builtin/string_literal.mojo index d20e8634d5..bcc671ccce 100644 --- a/stdlib/src/builtin/string_literal.mojo +++ b/stdlib/src/builtin/string_literal.mojo @@ -402,7 +402,7 @@ struct StringLiteral( Returns: A new representation of the string. """ - return self.__str__().__repr__() + return repr(self.as_string_slice()) fn __hash__(self) -> UInt: """Hash the underlying buffer using builtin hash. diff --git a/stdlib/src/collections/string/string.mojo b/stdlib/src/collections/string/string.mojo index 62856c74ae..c59532861f 100644 --- a/stdlib/src/collections/string/string.mojo +++ b/stdlib/src/collections/string/string.mojo @@ -1389,34 +1389,7 @@ struct String( Returns: A new representation of the string. """ - var result = String() - var use_dquote = False - for s in self: - use_dquote = use_dquote or (s == "'") - - if s == "\\": - result += r"\\" - elif s == "\t": - result += r"\t" - elif s == "\n": - result += r"\n" - elif s == "\r": - result += r"\r" - else: - var codepoint = ord(s) - if isprintable(codepoint): - result += s - elif codepoint < 0x10: - result += hex(codepoint, prefix=r"\x0") - elif codepoint < 0x20 or codepoint == 0x7F: - result += hex(codepoint, prefix=r"\x") - else: # multi-byte character - result += s - - if use_dquote: - return '"' + result + '"' - else: - return "'" + result + "'" + return repr(StringSlice(self)) fn __fspath__(self) -> String: """Return the file system path representation (just the string itself). diff --git a/stdlib/src/collections/string/string_slice.mojo b/stdlib/src/collections/string/string_slice.mojo index b0b0841260..00d9f2849a 100644 --- a/stdlib/src/collections/string/string_slice.mojo +++ b/stdlib/src/collections/string/string_slice.mojo @@ -235,6 +235,7 @@ struct _StringSliceIter[ @register_passable("trivial") struct StringSlice[mut: Bool, //, origin: Origin[mut]]( Stringable, + Representable, Sized, Writable, CollectionElement, @@ -408,6 +409,42 @@ struct StringSlice[mut: Bool, //, origin: Origin[mut]]( """ return String(str_slice=self) + fn __repr__(self) -> String: + """Return a Mojo-compatible representation of this string slice. + + Returns: + Representation of this string slice as a Mojo string literal input + form syntax. + """ + var result = String() + var use_dquote = False + for s in self: + use_dquote = use_dquote or (s == "'") + + if s == "\\": + result += r"\\" + elif s == "\t": + result += r"\t" + elif s == "\n": + result += r"\n" + elif s == "\r": + result += r"\r" + else: + var codepoint = ord(s) + if isprintable(codepoint): + result += s + elif codepoint < 0x10: + result += hex(codepoint, prefix=r"\x0") + elif codepoint < 0x20 or codepoint == 0x7F: + result += hex(codepoint, prefix=r"\x") + else: # multi-byte character + result += s + + if use_dquote: + return '"' + result + '"' + else: + return "'" + result + "'" + fn __len__(self) -> Int: """Nominally returns the _length in Unicode codepoints_ (not bytes!). diff --git a/stdlib/test/collections/string/test_string.mojo b/stdlib/test/collections/string/test_string.mojo index 0e2b3acfad..c9b9c411e1 100644 --- a/stdlib/test/collections/string/test_string.mojo +++ b/stdlib/test/collections/string/test_string.mojo @@ -44,32 +44,6 @@ def test_stringable(): assert_equal("a string", str(AString())) -def test_repr(): - # Standard single-byte characters - assert_equal(String.__repr__("hello"), "'hello'") - assert_equal(String.__repr__(str(0)), "'0'") - assert_equal(String.__repr__("A"), "'A'") - assert_equal(String.__repr__(" "), "' '") - assert_equal(String.__repr__("~"), "'~'") - - # Special single-byte characters - assert_equal(String.__repr__("\0"), r"'\x00'") - assert_equal(String.__repr__("\x06"), r"'\x06'") - assert_equal(String.__repr__("\x09"), r"'\t'") - assert_equal(String.__repr__("\n"), r"'\n'") - assert_equal(String.__repr__("\x0d"), r"'\r'") - assert_equal(String.__repr__("\x0e"), r"'\x0e'") - assert_equal(String.__repr__("\x1f"), r"'\x1f'") - assert_equal(String.__repr__("'"), '"\'"') - assert_equal(String.__repr__("\\"), r"'\\'") - assert_equal(String.__repr__("\x7f"), r"'\x7f'") - - # Multi-byte characters - assert_equal(String.__repr__("Örnsköldsvik"), "'Örnsköldsvik'") # 2-byte - assert_equal(String.__repr__("你好!"), "'你好!'") # 3-byte - assert_equal(String.__repr__("hello 🔥!"), "'hello 🔥!'") # 4-byte - - def test_constructors(): # Default construction assert_equal(0, len(String())) @@ -1587,7 +1561,6 @@ def main(): test_add() test_add_string_slice() test_stringable() - test_repr() test_string_join() test_string_literal_join() test_stringref() diff --git a/stdlib/test/collections/string/test_string_slice.mojo b/stdlib/test/collections/string/test_string_slice.mojo index ecdcf4ddf2..a82f43d4c1 100644 --- a/stdlib/test/collections/string/test_string_slice.mojo +++ b/stdlib/test/collections/string/test_string_slice.mojo @@ -202,6 +202,34 @@ fn test_slice_bool() raises: assert_true(not str2.as_string_slice().__bool__()) +def test_slice_repr(): + # Standard single-byte characters + assert_equal(StringSlice.__repr__("hello"), "'hello'") + assert_equal(StringSlice.__repr__(str(0)), "'0'") + assert_equal(StringSlice.__repr__("A"), "'A'") + assert_equal(StringSlice.__repr__(" "), "' '") + assert_equal(StringSlice.__repr__("~"), "'~'") + + # Special single-byte characters + assert_equal(StringSlice.__repr__("\0"), r"'\x00'") + assert_equal(StringSlice.__repr__("\x06"), r"'\x06'") + assert_equal(StringSlice.__repr__("\x09"), r"'\t'") + assert_equal(StringSlice.__repr__("\n"), r"'\n'") + assert_equal(StringSlice.__repr__("\x0d"), r"'\r'") + assert_equal(StringSlice.__repr__("\x0e"), r"'\x0e'") + assert_equal(StringSlice.__repr__("\x1f"), r"'\x1f'") + assert_equal(StringSlice.__repr__("'"), '"\'"') + assert_equal(StringSlice.__repr__("\\"), r"'\\'") + assert_equal(StringSlice.__repr__("\x7f"), r"'\x7f'") + + # Multi-byte characters + assert_equal( + StringSlice.__repr__("Örnsköldsvik"), "'Örnsköldsvik'" + ) # 2-byte + assert_equal(StringSlice.__repr__("你好!"), "'你好!'") # 3-byte + assert_equal(StringSlice.__repr__("hello 🔥!"), "'hello 🔥!'") # 4-byte + + fn test_utf8_validation() raises: var text = """Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam varius tellus quis tincidunt dictum. Donec eros orci, ultricies ac metus non @@ -681,6 +709,7 @@ def main(): test_slice_len() test_slice_eq() test_slice_bool() + test_slice_repr() test_utf8_validation() test_find() test_good_utf8_sequences() From 27f1361f15861677aadca90c1f815ae17e38f866 Mon Sep 17 00:00:00 2001 From: modularbot <116839051+modularbot@users.noreply.github.com> Date: Tue, 7 Jan 2025 12:45:44 -0800 Subject: [PATCH 162/509] [External] [stdlib] Remove `StringRef.strip()` (#53298) Remove `StringRef.strip()`. We already have this in `StringSlice`. ORIGINAL_AUTHOR=martinvuyk <110240700+martinvuyk@users.noreply.github.com> PUBLIC_PR_LINK=modularml/mojo#3868 Co-authored-by: martinvuyk <110240700+martinvuyk@users.noreply.github.com> Closes modularml/mojo#3868 MODULAR_ORIG_COMMIT_REV_ID: 9a85ef521475c07ee7f9f537e42a9d2f5d3f8a78 --- docs/changelog.md | 1 + stdlib/src/utils/stringref.mojo | 18 ------ stdlib/test/builtin/test_string_literal.mojo | 12 ++++ .../test/collections/string/test_string.mojo | 58 ------------------- stdlib/test/utils/test_stringref.mojo | 39 ++++++++++++- 5 files changed, 51 insertions(+), 77 deletions(-) diff --git a/docs/changelog.md b/docs/changelog.md index ea416dff84..242b60abd1 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -143,6 +143,7 @@ what we publish. - Changed `sys.argv()` to return list of `StringSlice`. - Added `Path` explicit constructor from `StringSlice`. - removed `StringRef.startswith()` and `StringRef.endswith()` + - removed `StringRef.strip()` ### 🛠️ Fixed diff --git a/stdlib/src/utils/stringref.mojo b/stdlib/src/utils/stringref.mojo index bcf0a5669f..ad78d89db9 100644 --- a/stdlib/src/utils/stringref.mojo +++ b/stdlib/src/utils/stringref.mojo @@ -596,24 +596,6 @@ struct StringRef( return StringRef(data, length) - fn strip(self) -> StringRef: - """Gets a StringRef with leading and trailing whitespaces removed. - This only takes C spaces into account: " \\t\\n\\v\\f\\r". - - For example, `" mojo "` returns `"mojo"`. - - Returns: - A StringRef with leading and trailing whitespaces removed. - """ - var start: Int = 0 - var end: Int = len(self) - var ptr = self.unsafe_ptr() - while start < end and _isspace(ptr[start]): - start += 1 - while end > start and _isspace(ptr[end - 1]): - end -= 1 - return StringRef(ptr + start, end - start) - fn split(self, delimiter: StringRef) raises -> List[StringRef]: """Split the StringRef by a delimiter. diff --git a/stdlib/test/builtin/test_string_literal.mojo b/stdlib/test/builtin/test_string_literal.mojo index 8db79b38c2..c549a9423c 100644 --- a/stdlib/test/builtin/test_string_literal.mojo +++ b/stdlib/test/builtin/test_string_literal.mojo @@ -232,6 +232,18 @@ def test_join(): assert_equal(sep.join(1, 2, 3), "1,2,3") assert_equal(sep.join(1, "abc", 3), "1,abc,3") + var s2 = ",".join(List[UInt8](1, 2, 3)) + assert_equal(s2, "1,2,3") + + var s3 = ",".join(List[UInt8](1, 2, 3, 4, 5, 6, 7, 8, 9)) + assert_equal(s3, "1,2,3,4,5,6,7,8,9") + + var s4 = ",".join(List[UInt8]()) + assert_equal(s4, "") + + var s5 = ",".join(List[UInt8](1)) + assert_equal(s5, "1") + def test_isdigit(): assert_true("123".isdigit()) diff --git a/stdlib/test/collections/string/test_string.mojo b/stdlib/test/collections/string/test_string.mojo index c9b9c411e1..53f9f6ace8 100644 --- a/stdlib/test/collections/string/test_string.mojo +++ b/stdlib/test/collections/string/test_string.mojo @@ -209,60 +209,6 @@ def test_string_join(): assert_equal(s6, "1,2,3") -def test_string_literal_join(): - var s2 = ",".join(List[UInt8](1, 2, 3)) - assert_equal(s2, "1,2,3") - - var s3 = ",".join(List[UInt8](1, 2, 3, 4, 5, 6, 7, 8, 9)) - assert_equal(s3, "1,2,3,4,5,6,7,8,9") - - var s4 = ",".join(List[UInt8]()) - assert_equal(s4, "") - - var s5 = ",".join(List[UInt8](1)) - assert_equal(s5, "1") - - -def test_stringref(): - var a = StringRef("AAA") - var b = StringRef("BBB") - var c = StringRef("AAA") - - assert_equal(3, len(a)) - assert_equal(3, len(b)) - assert_equal(3, len(c)) - assert_equal(4, len("ABBA")) - - # Equality operators - assert_not_equal(a, b) - assert_not_equal(b, a) - - # Self equality - assert_equal(a, a) - - # Value equality - assert_equal(a, c) - - -def test_stringref_from_dtypepointer(): - var a = StringRef("AAA") - var b = StringRef(ptr=a.data) - assert_equal(3, len(a)) - assert_equal(3, len(b)) - assert_equal(a, b) - - -def test_stringref_strip(): - var a = StringRef(" mojo rocks ") - var b = StringRef("mojo ") - var c = StringRef(" mojo") - var d = StringRef("") - assert_equal(a.strip(), "mojo rocks") - assert_equal(b.strip(), "mojo") - assert_equal(c.strip(), "mojo") - assert_equal(d.strip(), "") - - def test_ord(): # Regular ASCII assert_equal(ord("A"), 65) @@ -1562,10 +1508,6 @@ def main(): test_add_string_slice() test_stringable() test_string_join() - test_string_literal_join() - test_stringref() - test_stringref_from_dtypepointer() - test_stringref_strip() test_ord() test_chr() test_string_indexing() diff --git a/stdlib/test/utils/test_stringref.mojo b/stdlib/test/utils/test_stringref.mojo index 67965d22a4..18f319d4be 100644 --- a/stdlib/test/utils/test_stringref.mojo +++ b/stdlib/test/utils/test_stringref.mojo @@ -12,11 +12,46 @@ # ===----------------------------------------------------------------------=== # # RUN: %mojo %s -from testing import assert_equal, assert_false, assert_raises, assert_true +from testing import ( + assert_equal, + assert_false, + assert_raises, + assert_true, + assert_not_equal, +) from utils import StringRef +def test_stringref(): + var a = StringRef("AAA") + var b = StringRef("BBB") + var c = StringRef("AAA") + + assert_equal(3, len(a)) + assert_equal(3, len(b)) + assert_equal(3, len(c)) + assert_equal(4, len("ABBA")) + + # Equality operators + assert_not_equal(a, b) + assert_not_equal(b, a) + + # Self equality + assert_equal(a, a) + + # Value equality + assert_equal(a, c) + + +def test_stringref_from_pointer(): + var a = StringRef("AAA") + var b = StringRef(ptr=a.data) + assert_equal(3, len(a)) + assert_equal(3, len(b)) + assert_equal(a, b) + + def test_strref_from_start(): var str = StringRef("Hello") @@ -169,6 +204,8 @@ def test_str_and_ref(): def main(): + test_stringref() + test_stringref_from_pointer() test_strref_from_start() test_stringref_split() test_comparison_operators() From 88840a0492f945398a79769a05f5b80d458266d6 Mon Sep 17 00:00:00 2001 From: modularbot <116839051+modularbot@users.noreply.github.com> Date: Tue, 7 Jan 2025 14:40:19 -0800 Subject: [PATCH 163/509] [External] [stdlib] [NFC] Fix change `UnsafePointer` constructors to receive length as a `UInt` (#53492) [External] [stdlib] [NFC] Fix change `UnsafePointer` constructors to receive length as a `UInt` Fix change `UnsafePointer` constructors to receive length as a `UInt` ORIGINAL_AUTHOR=martinvuyk <110240700+martinvuyk@users.noreply.github.com> PUBLIC_PR_LINK=modularml/mojo#3923 Co-authored-by: martinvuyk <110240700+martinvuyk@users.noreply.github.com> Closes modularml/mojo#3923 MODULAR_ORIG_COMMIT_REV_ID: 85aef9fef4e4ec76da0c1716a390698c3637e392 --- stdlib/src/builtin/string_literal.mojo | 4 ++-- stdlib/src/collections/list.mojo | 4 +++- stdlib/src/collections/string/string.mojo | 6 +++--- stdlib/src/collections/string/string_slice.mojo | 12 ++++++------ stdlib/src/memory/span.mojo | 2 +- 5 files changed, 15 insertions(+), 13 deletions(-) diff --git a/stdlib/src/builtin/string_literal.mojo b/stdlib/src/builtin/string_literal.mojo index bcc671ccce..e680979614 100644 --- a/stdlib/src/builtin/string_literal.mojo +++ b/stdlib/src/builtin/string_literal.mojo @@ -440,7 +440,7 @@ struct StringLiteral( An iterator over the string. """ return _StringSliceIter[StaticConstantOrigin]( - unsafe_pointer=self.unsafe_ptr(), length=self.byte_length() + ptr=self.unsafe_ptr(), length=self.byte_length() ) fn __reversed__(self) -> _StringSliceIter[StaticConstantOrigin, False]: @@ -450,7 +450,7 @@ struct StringLiteral( A reversed iterator over the string. """ return _StringSliceIter[StaticConstantOrigin, False]( - unsafe_pointer=self.unsafe_ptr(), length=self.byte_length() + ptr=self.unsafe_ptr(), length=self.byte_length() ) fn __getitem__[IndexerType: Indexer](self, idx: IndexerType) -> String: diff --git a/stdlib/src/collections/list.mojo b/stdlib/src/collections/list.mojo index c4d5bff5ca..abe62df9ee 100644 --- a/stdlib/src/collections/list.mojo +++ b/stdlib/src/collections/list.mojo @@ -176,7 +176,9 @@ struct List[T: CollectionElement, hint_trivial_type: Bool = False]( for value in span: self.append(value[]) - fn __init__(mut self, *, ptr: UnsafePointer[T], length: Int, capacity: Int): + fn __init__( + out self, *, ptr: UnsafePointer[T], length: UInt, capacity: UInt + ): """Constructs a list from a pointer, its length, and its capacity. Args: diff --git a/stdlib/src/collections/string/string.mojo b/stdlib/src/collections/string/string.mojo index c59532861f..6bf5cc24e1 100644 --- a/stdlib/src/collections/string/string.mojo +++ b/stdlib/src/collections/string/string.mojo @@ -893,7 +893,7 @@ struct String( self = literal.__str__() @always_inline - fn __init__(out self, *, ptr: UnsafePointer[Byte], length: Int): + fn __init__(out self, *, ptr: UnsafePointer[Byte], length: UInt): """Creates a string from the buffer. Note that the string now owns the buffer. @@ -1328,7 +1328,7 @@ struct String( An iterator of references to the string elements. """ return _StringSliceIter[__origin_of(self)]( - unsafe_pointer=self.unsafe_ptr(), length=self.byte_length() + ptr=self.unsafe_ptr(), length=self.byte_length() ) fn __reversed__(self) -> _StringSliceIter[__origin_of(self), False]: @@ -1338,7 +1338,7 @@ struct String( A reversed iterator of references to the string elements. """ return _StringSliceIter[__origin_of(self), forward=False]( - unsafe_pointer=self.unsafe_ptr(), length=self.byte_length() + ptr=self.unsafe_ptr(), length=self.byte_length() ) # ===------------------------------------------------------------------=== # diff --git a/stdlib/src/collections/string/string_slice.mojo b/stdlib/src/collections/string/string_slice.mojo index 00d9f2849a..b4709c14fe 100644 --- a/stdlib/src/collections/string/string_slice.mojo +++ b/stdlib/src/collections/string/string_slice.mojo @@ -183,9 +183,9 @@ struct _StringSliceIter[ var ptr: UnsafePointer[Byte] var length: Int - fn __init__(mut self, *, unsafe_pointer: UnsafePointer[Byte], length: Int): + fn __init__(out self, *, ptr: UnsafePointer[Byte], length: UInt): self.index = 0 if forward else length - self.ptr = unsafe_pointer + self.ptr = ptr self.length = length fn __iter__(self) -> Self: @@ -321,7 +321,7 @@ struct StringSlice[mut: Bool, //, origin: Origin[mut]]( self = Self(unsafe_from_utf8=byte_slice) @always_inline - fn __init__(out self, *, ptr: UnsafePointer[Byte], length: Int): + fn __init__(out self, *, ptr: UnsafePointer[Byte], length: UInt): """Construct a `StringSlice` from a pointer to a sequence of UTF-8 encoded bytes and a length. @@ -335,7 +335,7 @@ struct StringSlice[mut: Bool, //, origin: Origin[mut]]( - `ptr` must point to data that is live for the duration of `origin`. """ - self._slice = Span[Byte, origin](ptr=ptr, length=length) + self = Self(unsafe_from_utf8=Span[Byte, origin](ptr=ptr, length=length)) @always_inline fn copy(self) -> Self: @@ -612,7 +612,7 @@ struct StringSlice[mut: Bool, //, origin: Origin[mut]]( An iterator of references to the string elements. """ return _StringSliceIter[origin]( - unsafe_pointer=self.unsafe_ptr(), length=self.byte_length() + ptr=self.unsafe_ptr(), length=self.byte_length() ) fn __reversed__(self) -> _StringSliceIter[origin, False]: @@ -622,7 +622,7 @@ struct StringSlice[mut: Bool, //, origin: Origin[mut]]( A reversed iterator of references to the string elements. """ return _StringSliceIter[origin, forward=False]( - unsafe_pointer=self.unsafe_ptr(), length=self.byte_length() + ptr=self.unsafe_ptr(), length=self.byte_length() ) fn __getitem__[IndexerType: Indexer](self, idx: IndexerType) -> String: diff --git a/stdlib/src/memory/span.mojo b/stdlib/src/memory/span.mojo index 5a19312929..c0d919dff0 100644 --- a/stdlib/src/memory/span.mojo +++ b/stdlib/src/memory/span.mojo @@ -116,7 +116,7 @@ struct Span[ # ===------------------------------------------------------------------===# @always_inline - fn __init__(out self, *, ptr: UnsafePointer[T], length: Int): + fn __init__(out self, *, ptr: UnsafePointer[T], length: UInt): """Unsafe construction from a pointer and length. Args: From 1026f40c7f99ca7019a2c8d11fd237d1d1cfa35c Mon Sep 17 00:00:00 2001 From: Connor Gray Date: Tue, 7 Jan 2025 17:41:13 -0600 Subject: [PATCH 164/509] [stdlib] polish: Take non-owning view args in `ord()`, `ascii()`, and `b64encode()` This removes a redundant `ord(String)` overload; changes `ascii()` to take a `StringSlice`; and changes `b64encode()` to take either `StringSlice` instead of a `String`, and a `Span` instead of a `List`. MODULAR_ORIG_COMMIT_REV_ID: 8711a35219b337ffa29f544b694f2b6b49c49fe9 --- docs/changelog.md | 5 +++++ stdlib/src/base64/_b64encode.mojo | 6 +++--- stdlib/src/base64/base64.mojo | 9 ++++----- stdlib/src/collections/string/string.mojo | 22 +++------------------- 4 files changed, 15 insertions(+), 27 deletions(-) diff --git a/docs/changelog.md b/docs/changelog.md index 242b60abd1..130d856dcb 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -99,6 +99,11 @@ what we publish. - `atol()` - `atof()` + - `ord()` + - `ascii()` + - `b64encode()` + - The `b64encode()` overload that previously took `List` has been changed to + take a `Span`. - Various functionality has moved from `String` and `StringRef` to the more general `StringSlice` type. diff --git a/stdlib/src/base64/_b64encode.mojo b/stdlib/src/base64/_b64encode.mojo index 35b7f4c5d9..9bd946b308 100644 --- a/stdlib/src/base64/_b64encode.mojo +++ b/stdlib/src/base64/_b64encode.mojo @@ -28,7 +28,7 @@ from collections import InlineArray from math.math import _compile_time_iota from sys import llvm_intrinsic -from memory import UnsafePointer, bitcast, memcpy +from memory import Span, UnsafePointer, bitcast, memcpy from utils import IndexList @@ -195,10 +195,10 @@ fn load_incomplete_simd[ return result -# TODO: Use Span instead of List as input when Span is easier to use @no_inline fn b64encode_with_buffers( - input_bytes: List[UInt8, _], mut result: List[UInt8, _] + input_bytes: Span[Byte, _], + mut result: List[UInt8, _], ): alias simd_width = sys.simdbytewidth() alias input_simd_width = simd_width * 3 // 4 diff --git a/stdlib/src/base64/base64.mojo b/stdlib/src/base64/base64.mojo index 6a9d585fb5..9a88b3fc14 100644 --- a/stdlib/src/base64/base64.mojo +++ b/stdlib/src/base64/base64.mojo @@ -20,6 +20,7 @@ from base64 import b64encode """ from collections import List +from memory import Span from sys import simdwidthof import bit @@ -64,8 +65,7 @@ fn _ascii_to_value(char: String) -> Int: # ===-----------------------------------------------------------------------===# -# TODO: Use Span instead of List as input when Span is easier to use -fn b64encode(input_bytes: List[UInt8, _], mut result: List[UInt8, _]): +fn b64encode(input_bytes: Span[Byte, _], mut result: List[Byte, _]): """Performs base64 encoding on the input string. Args: @@ -85,11 +85,10 @@ fn b64encode(input_string: String) -> String: Returns: The ASCII base64 encoded string. """ - # Slicing triggers a copy, but it should work with Span later on. - return b64encode(input_string._buffer[:-1]) + return b64encode(input_string.as_bytes()) -fn b64encode(input_bytes: List[UInt8, _]) -> String: +fn b64encode(input_bytes: Span[Byte, _]) -> String: """Performs base64 encoding on the input string. Args: diff --git a/stdlib/src/collections/string/string.mojo b/stdlib/src/collections/string/string.mojo index 6bf5cc24e1..1657f947d8 100644 --- a/stdlib/src/collections/string/string.mojo +++ b/stdlib/src/collections/string/string.mojo @@ -53,22 +53,6 @@ from collections.string.string_slice import ( # ===----------------------------------------------------------------------=== # -fn ord(s: String) -> Int: - """Returns an integer that represents the given one-character string. - - Given a string representing one character, return an integer - representing the code point of that character. For example, `ord("a")` - returns the integer `97`. This is the inverse of the `chr()` function. - - Args: - s: The input string slice, which must contain only a single character. - - Returns: - An integer representing the code point of the given character. - """ - return ord(s.as_string_slice()) - - fn ord(s: StringSlice) -> Int: """Returns an integer that represents the given one-character string. @@ -200,7 +184,7 @@ fn _repr_ascii(c: UInt8) -> String: @always_inline -fn ascii(value: String) -> String: +fn ascii(value: StringSlice) -> String: """Get the ASCII representation of the object. Args: @@ -213,8 +197,8 @@ fn ascii(value: String) -> String: var result = String() var use_dquote = False - for idx in range(len(value._buffer) - 1): - var char = value._buffer[idx] + for idx in range(len(value._slice)): + var char = value._slice[idx] result += _repr_ascii(char) use_dquote = use_dquote or (char == ord_squote) From ad50d45f8dc6a4496f69b3e88f788f9c246e8569 Mon Sep 17 00:00:00 2001 From: martinvuyk <110240700+martinvuyk@users.noreply.github.com> Date: Tue, 7 Jan 2025 16:14:36 -0800 Subject: [PATCH 165/509] [External] [stdlib] Remove `StringLiteral` `StringRef` dependencies (#53297) Remove `StringLiteral` `StringRef` dependencies Co-authored-by: martinvuyk <110240700+martinvuyk@users.noreply.github.com> Closes modularml/mojo#3869 MODULAR_ORIG_COMMIT_REV_ID: b864aaf6dc01163588ad5775879912dea0544ea3 --- stdlib/src/builtin/string_literal.mojo | 19 ++++++++++++------- .../src/collections/string/string_slice.mojo | 15 +++++++-------- 2 files changed, 19 insertions(+), 15 deletions(-) diff --git a/stdlib/src/builtin/string_literal.mojo b/stdlib/src/builtin/string_literal.mojo index e680979614..c5af9cef8d 100644 --- a/stdlib/src/builtin/string_literal.mojo +++ b/stdlib/src/builtin/string_literal.mojo @@ -17,11 +17,16 @@ These are Mojo built-ins, so you don't need to import them. from collections import List from collections.string.format import _CurlyEntryFormattable, _FormatCurlyEntry -from collections.string.string_slice import _StringSliceIter, _to_string_list +from collections.string.string_slice import ( + StringSlice, + StaticString, + _StringSliceIter, + _to_string_list, +) from hashlib._hasher import _HashableWithHasher, _Hasher from memory import UnsafePointer, memcpy, Span from sys.ffi import c_char -from utils import StaticString, StringRef, StringSlice, Writable, Writer +from utils import Writable, Writer from utils._visualizers import lldb_formatter_wrapping_type @@ -240,7 +245,7 @@ struct StringLiteral( Returns: True if they are not equal. """ - return StringRef(self) != StringRef(rhs) + return self.as_string_slice() != rhs.as_string_slice() @always_inline("nodebug") fn __eq__(self, rhs: StringSlice) -> Bool: @@ -276,7 +281,7 @@ struct StringLiteral( Returns: True if this StringLiteral is strictly less than the RHS StringLiteral and False otherwise. """ - return StringRef(self) < StringRef(rhs) + return self.as_string_slice() < rhs.as_string_slice() @always_inline("nodebug") fn __le__(self, rhs: StringLiteral) -> Bool: @@ -323,7 +328,7 @@ struct StringLiteral( Returns: True if the string contains the substring. """ - return substr in StringRef(self) + return substr in self.as_string_slice() # ===-------------------------------------------------------------------===# # Trait implementations @@ -603,7 +608,7 @@ struct StringLiteral( Returns: The offset of `substr` relative to the beginning of the string. """ - return StringRef(self).find(substr, start=start) + return self.as_string_slice().find(substr, start=start) fn rfind(self, substr: StringLiteral, start: Int = 0) -> Int: """Finds the offset of the last occurrence of `substr` starting at @@ -616,7 +621,7 @@ struct StringLiteral( Returns: The offset of `substr` relative to the beginning of the string. """ - return StringRef(self).rfind(substr, start=start) + return self.as_string_slice().rfind(substr, start=start) fn replace(self, old: StringLiteral, new: StringLiteral) -> StringLiteral: """Return a copy of the string with all occurrences of substring `old` diff --git a/stdlib/src/collections/string/string_slice.mojo b/stdlib/src/collections/string/string_slice.mojo index b4709c14fe..f340747683 100644 --- a/stdlib/src/collections/string/string_slice.mojo +++ b/stdlib/src/collections/string/string_slice.mojo @@ -511,17 +511,16 @@ struct StringSlice[mut: Bool, //, origin: Origin[mut]]( Returns: If the `StringSlice` is equal to the input in length and contents. """ - if not self and not rhs: - return True - if len(self) != len(rhs): + + var s_len = self.byte_length() + var s_ptr = self.unsafe_ptr() + var rhs_ptr = rhs.unsafe_ptr() + if s_len != rhs.byte_length(): return False # same pointer and length, so equal - if self._slice.unsafe_ptr() == rhs._slice.unsafe_ptr(): + elif s_len == 0 or s_ptr == rhs_ptr: return True - for i in range(len(self)): - if self._slice[i] != rhs._slice.unsafe_ptr()[i]: - return False - return True + return memcmp(s_ptr, rhs_ptr, s_len) == 0 @always_inline fn __eq__(self, rhs: String) -> Bool: From 4c2c201e4eb6d2d5d35dad8171e8c06c75d39d21 Mon Sep 17 00:00:00 2001 From: Connor Gray Date: Tue, 7 Jan 2025 18:25:45 -0600 Subject: [PATCH 166/509] [stdlib] polish: Remove `@implicit` from `String` from `List` buffer constructor Constructing a String from a null-terminated buffer is subtle enough that it should not happen implicitly. For example, it will be incorrect and may error in the future if the buffer does not contain valid UTF-8 encoded data. * Additionally, remove redundant `String` constructor that is forced to always perform a copy. - Simplify the remaining constructor by introducing a `List._cast_hint_trivial_type()` method. MODULAR_ORIG_COMMIT_REV_ID: c0a7deeb40a2183dad77eb3567baabba24a5621b --- stdlib/src/base64/base64.mojo | 5 ++- stdlib/src/collections/list.mojo | 13 ++++++ stdlib/src/collections/string/string.mojo | 51 +++-------------------- stdlib/test/builtin/test_file.mojo | 2 +- 4 files changed, 22 insertions(+), 49 deletions(-) diff --git a/stdlib/src/base64/base64.mojo b/stdlib/src/base64/base64.mojo index 9a88b3fc14..0a48b8caf4 100644 --- a/stdlib/src/base64/base64.mojo +++ b/stdlib/src/base64/base64.mojo @@ -149,7 +149,8 @@ fn b64decode(str: String) -> String: p.append(((c & 0x03) << 6) | d) p.append(0) - return p + + return String(p^) # ===-----------------------------------------------------------------------===# @@ -231,4 +232,4 @@ fn b16decode(str: String) -> String: p.append(decode(hi) << 4 | decode(lo)) p.append(0) - return p + return String(p) diff --git a/stdlib/src/collections/list.mojo b/stdlib/src/collections/list.mojo index abe62df9ee..1f0d42bde8 100644 --- a/stdlib/src/collections/list.mojo +++ b/stdlib/src/collections/list.mojo @@ -1000,6 +1000,19 @@ struct List[T: CollectionElement, hint_trivial_type: Bool = False]( """ return self.data + fn _cast_hint_trivial_type[ + hint_trivial_type: Bool + ](owned self) -> List[T, hint_trivial_type]: + var size = self.size + var capacity = self.capacity + + # TODO: Why doesn't `__disable_del self` work here? + var data = self.steal_data() + + return List[T, hint_trivial_type]( + ptr=data, length=size, capacity=capacity + ) + fn _clip(value: Int, start: Int, end: Int) -> Int: return max(start, min(value, end)) diff --git a/stdlib/src/collections/string/string.mojo b/stdlib/src/collections/string/string.mojo index 1657f947d8..d08381f298 100644 --- a/stdlib/src/collections/string/string.mojo +++ b/stdlib/src/collections/string/string.mojo @@ -750,8 +750,7 @@ struct String( # ===------------------------------------------------------------------=== # @always_inline - @implicit - fn __init__(out self, owned impl: List[UInt8, *_]): + fn __init__(out self, owned buffer: List[UInt8, *_]): """Construct a string from a buffer of bytes without copying the allocated data. @@ -762,57 +761,17 @@ struct String( buf.append(ord('H')) buf.append(ord('i')) buf.append(0) - var hi = String(buf) - ``` - - Args: - impl: The buffer. - """ - debug_assert( - len(impl) > 0 and impl[-1] == 0, - "expected last element of String buffer to be null terminator", - ) - # We make a backup because steal_data() will clear size and capacity. - var size = impl.size - debug_assert( - impl[size - 1] == 0, - "expected last element of String buffer to be null terminator", - ) - var capacity = impl.capacity - self._buffer = Self._buffer_type( - ptr=impl.steal_data(), length=size, capacity=capacity - ) - - @always_inline - @implicit - fn __init__(out self, impl: Self._buffer_type): - """Construct a string from a buffer of bytes, copying the allocated - data. Use the transfer operator ^ to avoid the copy. - - The buffer must be terminated with a null byte: - - ```mojo - var buf = List[UInt8]() - buf.append(ord('H')) - buf.append(ord('i')) - buf.append(0) - var hi = String(buf) + var hi = String(buffer=buf) ``` Args: - impl: The buffer. + buffer: The buffer. """ debug_assert( - len(impl) > 0 and impl[-1] == 0, - "expected last element of String buffer to be null terminator", - ) - # We make a backup because steal_data() will clear size and capacity. - var size = impl.size - debug_assert( - impl[size - 1] == 0, + len(buffer) > 0 and buffer[-1] == 0, "expected last element of String buffer to be null terminator", ) - self._buffer = impl + self._buffer = buffer^._cast_hint_trivial_type[True]() @always_inline fn __init__(out self): diff --git a/stdlib/test/builtin/test_file.mojo b/stdlib/test/builtin/test_file.mojo index d30091958e..96043d9952 100644 --- a/stdlib/test/builtin/test_file.mojo +++ b/stdlib/test/builtin/test_file.mojo @@ -224,7 +224,7 @@ struct Word: word.append(self.fourth_letter) word.append(self.fith_letter) word.append(0) - return word + return String(word) def test_file_read_to_dtype_pointer(): From f444d8e53db56a9964fcd8b9d31dcb1b7e7bedb2 Mon Sep 17 00:00:00 2001 From: martinvuyk <110240700+martinvuyk@users.noreply.github.com> Date: Tue, 7 Jan 2025 17:12:29 -0800 Subject: [PATCH 167/509] [External] [stdlib] Add `assert_equal(List[StringSlice], List[StringSlice])` (#53253) Add `assert_equal(List[StringSlice], List[StringSlice])`. Ideally we should be able to generalize over this at some point, it still needs language features. Co-authored-by: martinvuyk <110240700+martinvuyk@users.noreply.github.com> Co-authored-by: Connor Gray Closes modularml/mojo#3898 MODULAR_ORIG_COMMIT_REV_ID: ffe60f2036972e3d7a64785246a7b9653a21f98f --- docs/changelog.md | 8 ++++ .../src/collections/string/string_slice.mojo | 31 +++++++++++++ stdlib/src/testing/testing.mojo | 45 +++++++++++++++++++ .../collections/string/test_string_slice.mojo | 32 +++++-------- stdlib/test/testing/test_assertion.mojo | 45 +++++++++++++++++-- 5 files changed, 137 insertions(+), 24 deletions(-) diff --git a/docs/changelog.md b/docs/changelog.md index 130d856dcb..527bb8b642 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -111,6 +111,14 @@ what we publish. - `StringSlice` now implements `Representable`, and that implementation is now used by `String.__repr__()` and `StringRef.__repr__()`. +- `StringSlice` now implements `EqualityComparable`. + + Up until now, `StringSlice` has implemented a more general `__eq__` and + `__ne__` comparision with `StringSlice` types that had arbitrary other + origins. However, to satisfy `EqualityComparable`, `StringSlice` now also + has narrower comparison methods that support comparing only with + `StringSlice`'s with the exact same origin. + - Removed `@implicit` decorator from some standard library initializer methods that perform allocation. This reduces places where Mojo code could implicitly allocate where the user may not be aware. diff --git a/stdlib/src/collections/string/string_slice.mojo b/stdlib/src/collections/string/string_slice.mojo index f340747683..78268211da 100644 --- a/stdlib/src/collections/string/string_slice.mojo +++ b/stdlib/src/collections/string/string_slice.mojo @@ -240,6 +240,7 @@ struct StringSlice[mut: Bool, //, origin: Origin[mut]]( Writable, CollectionElement, CollectionElementNew, + EqualityComparable, Hashable, PathLike, ): @@ -497,6 +498,23 @@ struct StringSlice[mut: Bool, //, origin: Origin[mut]]( # Operator dunders # ===------------------------------------------------------------------===# + # This decorator informs the compiler that indirect address spaces are not + # dereferenced by the method. + # TODO: replace with a safe model that checks the body of the method for + # accesses to the origin. + @__unsafe_disable_nested_origin_exclusivity + fn __eq__(self, rhs_same: Self) -> Bool: + """Verify if a `StringSlice` is equal to another `StringSlice` with the + same origin. + + Args: + rhs_same: The `StringSlice` to compare against. + + Returns: + If the `StringSlice` is equal to the input in length and contents. + """ + return Self.__eq__(self, rhs=rhs_same) + # This decorator informs the compiler that indirect address spaces are not # dereferenced by the method. # TODO: replace with a safe model that checks the body of the method for @@ -546,6 +564,19 @@ struct StringSlice[mut: Bool, //, origin: Origin[mut]]( """ return self == rhs.as_string_slice() + fn __ne__(self, rhs_same: Self) -> Bool: + """Verify if a `StringSlice` is not equal to another `StringSlice` with + the same origin. + + Args: + rhs_same: The `StringSlice` to compare against. + + Returns: + If the `StringSlice` is not equal to the input in length and + contents. + """ + return Self.__ne__(self, rhs=rhs_same) + @__unsafe_disable_nested_origin_exclusivity @always_inline fn __ne__(self, rhs: StringSlice) -> Bool: diff --git a/stdlib/src/testing/testing.mojo b/stdlib/src/testing/testing.mojo index ef39769ff8..e6235bc616 100644 --- a/stdlib/src/testing/testing.mojo +++ b/stdlib/src/testing/testing.mojo @@ -34,6 +34,7 @@ from collections import Optional from math import isclose from memory import memcmp from builtin._location import __call_location, _SourceLocation +from utils import StringSlice # ===----------------------------------------------------------------------=== # # Assertions @@ -236,6 +237,50 @@ fn assert_equal[ ) +# TODO(MSTDL-1071): +# Once Mojo supports parametric traits, implement EqualityComparable for +# StringSlice such that string slices with different origin types can be +# compared, then drop this overload. +@always_inline +fn assert_equal[ + O1: ImmutableOrigin, + O2: ImmutableOrigin, +]( + lhs: List[StringSlice[O1]], + rhs: List[StringSlice[O2]], + msg: String = "", + *, + location: Optional[_SourceLocation] = None, +) raises: + """Asserts that two lists are equal. + + Parameters: + O1: The origin of lhs. + O2: The origin of rhs. + + Args: + lhs: The left-hand side list. + rhs: The right-hand side list. + msg: The message to be printed if the assertion fails. + location: The location of the error (default to the `__call_location`). + + Raises: + An Error with the provided message if assert fails and `None` otherwise. + """ + + # Cast `rhs` to have the same origin as `lhs`, so that we can delegate to + # `List.__ne__`. + var rhs_origin_casted = rebind[List[StringSlice[O1]]](rhs) + + if lhs != rhs_origin_casted: + raise _assert_cmp_error["`left == right` comparison"]( + lhs.__str__(), + rhs.__str__(), + msg=msg, + loc=location.or_else(__call_location()), + ) + + @always_inline fn assert_equal[ D: DType diff --git a/stdlib/test/collections/string/test_string_slice.mojo b/stdlib/test/collections/string/test_string_slice.mojo index a82f43d4c1..32b6da2bf9 100644 --- a/stdlib/test/collections/string/test_string_slice.mojo +++ b/stdlib/test/collections/string/test_string_slice.mojo @@ -483,14 +483,6 @@ def test_splitlines(): alias S = StringSlice[StaticConstantOrigin] alias L = List[StringSlice[StaticConstantOrigin]] - # FIXME: remove once StringSlice conforms to TestableCollectionElement - fn _assert_equal[ - O1: ImmutableOrigin, O2: ImmutableOrigin - ](l1: List[StringSlice[O1]], l2: List[StringSlice[O2]]) raises: - assert_equal(len(l1), len(l2)) - for i in range(len(l1)): - assert_equal(str(l1[i]), str(l2[i])) - # FIXME: remove once StringSlice conforms to TestableCollectionElement fn _assert_equal[ O1: ImmutableOrigin @@ -500,36 +492,36 @@ def test_splitlines(): assert_equal(str(l1[i]), l2[i]) # Test with no line breaks - _assert_equal(S("hello world").splitlines(), L("hello world")) + assert_equal(S("hello world").splitlines(), L("hello world")) # Test with line breaks - _assert_equal(S("hello\nworld").splitlines(), L("hello", "world")) - _assert_equal(S("hello\rworld").splitlines(), L("hello", "world")) - _assert_equal(S("hello\r\nworld").splitlines(), L("hello", "world")) + assert_equal(S("hello\nworld").splitlines(), L("hello", "world")) + assert_equal(S("hello\rworld").splitlines(), L("hello", "world")) + assert_equal(S("hello\r\nworld").splitlines(), L("hello", "world")) # Test with multiple different line breaks s1 = S("hello\nworld\r\nmojo\rlanguage\r\n") hello_mojo = L("hello", "world", "mojo", "language") - _assert_equal(s1.splitlines(), hello_mojo) - _assert_equal( + assert_equal(s1.splitlines(), hello_mojo) + assert_equal( s1.splitlines(keepends=True), L("hello\n", "world\r\n", "mojo\r", "language\r\n"), ) # Test with an empty string - _assert_equal(S("").splitlines(), L()) + assert_equal(S("").splitlines(), L()) # test \v \f \x1c \x1d s2 = S("hello\vworld\fmojo\x1clanguage\x1d") - _assert_equal(s2.splitlines(), hello_mojo) - _assert_equal( + assert_equal(s2.splitlines(), hello_mojo) + assert_equal( s2.splitlines(keepends=True), L("hello\v", "world\f", "mojo\x1c", "language\x1d"), ) # test \x1c \x1d \x1e s3 = S("hello\x1cworld\x1dmojo\x1elanguage\x1e") - _assert_equal(s3.splitlines(), hello_mojo) - _assert_equal( + assert_equal(s3.splitlines(), hello_mojo) + assert_equal( s3.splitlines(keepends=True), L("hello\x1c", "world\x1d", "mojo\x1e", "language\x1e"), ) @@ -546,7 +538,7 @@ def test_splitlines(): u = i[] item = String("").join("hello", u, "world", u, "mojo", u, "language", u) s = StringSlice(item) - _assert_equal(s.splitlines(), hello_mojo) + assert_equal(s.splitlines(), hello_mojo) items = List("hello" + u, "world" + u, "mojo" + u, "language" + u) _assert_equal(s.splitlines(keepends=True), items) diff --git a/stdlib/test/testing/test_assertion.mojo b/stdlib/test/testing/test_assertion.mojo index 35283b7088..c9aaaf6d9d 100644 --- a/stdlib/test/testing/test_assertion.mojo +++ b/stdlib/test/testing/test_assertion.mojo @@ -26,28 +26,31 @@ from testing import ( ) from utils.numerics import inf, nan +from utils import StringSlice def test_assert_messages(): + assertion = "test_assertion.mojo:" + assertion_error = ": AssertionError:" try: assert_true(False) except e: - assert_true("test_assertion.mojo:33:20: AssertionError:" in str(e)) + assert_true(assertion in str(e) and assertion_error in str(e)) try: assert_false(True) except e: - assert_true("test_assertion.mojo:38:21: AssertionError:" in str(e)) + assert_true(assertion in str(e) and assertion_error in str(e)) try: assert_equal(1, 0) except e: - assert_true("test_assertion.mojo:43:21: AssertionError:" in str(e)) + assert_true(assertion in str(e) and assertion_error in str(e)) try: assert_not_equal(0, 0) except e: - assert_true("test_assertion.mojo:48:25: AssertionError:" in str(e)) + assert_true(assertion in str(e) and assertion_error in str(e)) @value @@ -237,6 +240,39 @@ def test_assert_custom_location(): assert_true("always_false" in str(e)) +def test_assert_equal_stringslice(): + str1 = "This is Mojo" + str2 = String("This is Mojo") + str3 = "This is mojo" + + fn _build( + value: StringLiteral, start: Int, end: Int + ) -> StringSlice[StaticConstantOrigin]: + return StringSlice[StaticConstantOrigin]( + ptr=value.unsafe_ptr() + start, length=end - start + ) + + fn _build( + read value: String, start: Int, end: Int + ) -> StringSlice[__origin_of(value)]: + return StringSlice[__origin_of(value)]( + ptr=value.unsafe_ptr() + start, length=end - start + ) + + l1 = List(_build(str1, 0, 4), _build(str1, 5, 7), _build(str1, 8, 12)) + l2 = List(_build(str2, 0, 4), _build(str2, 5, 7), _build(str2, 8, 12)) + l3 = List(_build(str3, 0, 4), _build(str3, 5, 7), _build(str3, 8, 12)) + assert_equal(l1, l1) + assert_equal(l2, l2) + assert_equal(l1, l2) + + with assert_raises(): + assert_equal(l1, l3) + + with assert_raises(): + assert_equal(l2, l3) + + def main(): test_assert_equal_is_generic() test_assert_not_equal_is_generic() @@ -248,3 +284,4 @@ def main(): test_assert_is() test_assert_is_not() test_assert_custom_location() + test_assert_equal_stringslice() From cbfcfd80cb04e0db86b64125544cd7f8d9a9878e Mon Sep 17 00:00:00 2001 From: Scott Main Date: Tue, 7 Jan 2025 17:38:05 -0800 Subject: [PATCH 168/509] Fix broken links MODULAR_ORIG_COMMIT_REV_ID: 7837532a5115d95418270a12ae5dbba876a41477 --- docs/manual/get-started.mdx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/manual/get-started.mdx b/docs/manual/get-started.mdx index cc9403b854..261a8b7fb4 100644 --- a/docs/manual/get-started.mdx +++ b/docs/manual/get-started.mdx @@ -175,9 +175,9 @@ Hello, World! Let's extend this basic program by prompting the user for their name and including that in the greeting printed. The built-in [`input()`](/mojo/stdlib/builtin/io/input) function accepts an optional -[`String`](/mojo/stdlib/collections/string/String) argument to use as a prompt, -and returns a `String` consisting of the characters the user entered (with the -newline character at the end stripped off). +[`String`](/mojo/stdlib/collections/string/string/String) argument to use as a +prompt, and returns a `String` consisting of the characters the user entered +(with the newline character at the end stripped off). So let's declare a variable, assign the return value from `input()` to it, and build a customized greeting. From aa14dcf87c83cd315839b62dff1a759247a91ba1 Mon Sep 17 00:00:00 2001 From: abdul dakkak Date: Tue, 7 Jan 2025 17:46:23 -0800 Subject: [PATCH 169/509] [******][GPU] Remove the thread indexing in debug_assert (#53435) We do not need two implementations and the implementation was incorrect for amd. MODULAR_ORIG_COMMIT_REV_ID: 07dd468c7b6671fd4d40e3419c155f5547d855c1 --- stdlib/src/builtin/debug_assert.mojo | 4 ---- 1 file changed, 4 deletions(-) diff --git a/stdlib/src/builtin/debug_assert.mojo b/stdlib/src/builtin/debug_assert.mojo index d20ea0444d..52dde896aa 100644 --- a/stdlib/src/builtin/debug_assert.mojo +++ b/stdlib/src/builtin/debug_assert.mojo @@ -250,8 +250,6 @@ fn _debug_assert_msg( arg_bytes.write( "At ", loc, - ": ", - _ThreadContext(), " Assert ", "Warning: " if defined_mode == "warn" else " Error: ", ) @@ -261,8 +259,6 @@ fn _debug_assert_msg( buffer.write( "At ", loc, - ": ", - _ThreadContext(), " Assert ", "Warning: " if defined_mode == "warn" else "Error: ", ) From 497fdc0ec137f460fa8499ba09054150d8a8fcc3 Mon Sep 17 00:00:00 2001 From: Connor Gray Date: Tue, 7 Jan 2025 20:41:36 -0600 Subject: [PATCH 170/509] [stdlib] polish: Take `StringSlice` instead of `String` in b16/b64 encode/decode funcs MODULAR_ORIG_COMMIT_REV_ID: 0e9545201cb8d7cec6511f212e42ad3503f8332d --- docs/changelog.md | 6 +++++- stdlib/src/base64/base64.mojo | 21 +++++++++++---------- 2 files changed, 16 insertions(+), 11 deletions(-) diff --git a/docs/changelog.md b/docs/changelog.md index 527bb8b642..86a8b15c41 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -102,8 +102,12 @@ what we publish. - `ord()` - `ascii()` - `b64encode()` - - The `b64encode()` overload that previously took `List` has been changed to + - Additionally, the `b64encode()` overload that previously took `List` has + been changed to take a `Span`. + - `b64decode()` + - `b16encode()` + - `b16decode()` - Various functionality has moved from `String` and `StringRef` to the more general `StringSlice` type. diff --git a/stdlib/src/base64/base64.mojo b/stdlib/src/base64/base64.mojo index 0a48b8caf4..b0f467f745 100644 --- a/stdlib/src/base64/base64.mojo +++ b/stdlib/src/base64/base64.mojo @@ -20,6 +20,7 @@ from base64 import b64encode """ from collections import List +from collections.string import StringSlice from memory import Span from sys import simdwidthof @@ -33,7 +34,7 @@ from ._b64encode import b64encode_with_buffers as _b64encode_with_buffers @always_inline -fn _ascii_to_value(char: String) -> Int: +fn _ascii_to_value(char: StringSlice) -> Int: """Converts an ASCII character to its integer value for base64 decoding. Args: @@ -76,7 +77,7 @@ fn b64encode(input_bytes: Span[Byte, _], mut result: List[Byte, _]): # For a nicer API, we provide those overloads: -fn b64encode(input_string: String) -> String: +fn b64encode(input_string: StringSlice) -> String: """Performs base64 encoding on the input string. Args: @@ -111,7 +112,7 @@ fn b64encode(input_bytes: Span[Byte, _]) -> String: @always_inline -fn b64decode(str: String) -> String: +fn b64decode(str: StringSlice) -> String: """Performs base64 decoding on the input string. Args: @@ -158,11 +159,11 @@ fn b64decode(str: String) -> String: # ===-----------------------------------------------------------------------===# -fn b16encode(str: String) -> String: - """Performs base16 encoding on the input string. +fn b16encode(str: StringSlice) -> String: + """Performs base16 encoding on the input string slice. Args: - str: The input string. + str: The input string slice. Returns: Base16 encoding of the input string. @@ -176,7 +177,7 @@ fn b16encode(str: String) -> String: @parameter @always_inline fn str_bytes(idx: UInt8) -> UInt8: - return str._buffer[int(idx)] + return str._slice[int(idx)] for i in range(length): var str_byte = str_bytes(i) @@ -196,7 +197,7 @@ fn b16encode(str: String) -> String: @always_inline -fn b16decode(str: String) -> String: +fn b16decode(str: StringSlice) -> String: """Performs base16 decoding on the input string. Args: @@ -209,7 +210,7 @@ fn b16decode(str: String) -> String: # TODO: Replace with dict literal when possible @parameter @always_inline - fn decode(c: String) -> Int: + fn decode(c: StringSlice) -> Int: var char_val = ord(c) if ord("A") <= char_val <= ord("Z"): @@ -232,4 +233,4 @@ fn b16decode(str: String) -> String: p.append(decode(hi) << 4 | decode(lo)) p.append(0) - return String(p) + return String(p^) From bf6db3fc7c1629f2e01011030331b5d8af717d47 Mon Sep 17 00:00:00 2001 From: modularbot <116839051+modularbot@users.noreply.github.com> Date: Tue, 7 Jan 2025 18:51:08 -0800 Subject: [PATCH 171/509] [External] [docs] Fix incorrect implicit type conversion output in variables.mdx documentation. (#53434) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [External] [docs] Fix incorrect implicit type conversion output in variables.mdx documentation. …ntation - The "Implicit type conversion" section shows the output of implicitly converting an Integer to Float64 as an Integer. It should have been a Float. Updated it to 1.0 instead of 1 - Also added a print statement in that code snippet. ORIGINAL_AUTHOR=Eldho Ittan George <7940237+el2e10@users.noreply.github.com> PUBLIC_PR_LINK=modularml/mojo#3907 Co-authored-by: Eldho Ittan George <7940237+el2e10@users.noreply.github.com> Closes modularml/mojo#3907 MODULAR_ORIG_COMMIT_REV_ID: b4a85f2d75730556075d394e54b770134f0d1f3e --- docs/manual/variables.mdx | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/manual/variables.mdx b/docs/manual/variables.mdx index 9247ff5c9f..f9e1c5c249 100644 --- a/docs/manual/variables.mdx +++ b/docs/manual/variables.mdx @@ -184,10 +184,11 @@ floating-point type, it converts the value instead of giving a compiler error: ```mojo var number: Float64 = Int(1) +print(number) ``` ```output -1 +1.0 ``` As shown above, value assignment can be converted into a constructor call if the From 4de698b5cbbbb8c5b4261f414ea5cd957f4ba581 Mon Sep 17 00:00:00 2001 From: Connor Gray Date: Wed, 8 Jan 2025 10:49:42 -0600 Subject: [PATCH 172/509] [stdlib] cleanup: Remove redundant operator overloads for String/StringLiteral args The functionality of each of the removed methods is fulfilled by the remaining `StringSlice`-taking methods. For example, we don't need all three of: String.__iadd__(StringLiteral) String.__iadd__(String) String.__iadd__(StringSlice) StringLiteral and String can both implicitly coerce to StringSlice, so any callers currently calling one of those two overloads will gracefully fallback to simply calling the StringSlice-taking overload. MODULAR_ORIG_COMMIT_REV_ID: 24e87313c0d5a0df8764d98cb8828d32c0ee1a6a --- .../src/collections/string/inline_string.mojo | 52 +-------------- stdlib/src/collections/string/string.mojo | 66 ------------------- .../src/collections/string/string_slice.mojo | 50 -------------- 3 files changed, 3 insertions(+), 165 deletions(-) diff --git a/stdlib/src/collections/string/inline_string.mojo b/stdlib/src/collections/string/inline_string.mojo index 783eafe207..6cb7203e6d 100644 --- a/stdlib/src/collections/string/inline_string.mojo +++ b/stdlib/src/collections/string/inline_string.mojo @@ -103,22 +103,6 @@ struct InlineString(Sized, Stringable, CollectionElement, CollectionElementNew): # Operator dunders # ===------------------------------------------------------------------=== # - fn __iadd__(mut self, literal: StringLiteral): - """Appends another string to this string. - - Args: - literal: The string to append. - """ - self.__iadd__(StringSlice(literal)) - - fn __iadd__(mut self, string: String): - """Appends another string to this string. - - Args: - string: The string to append. - """ - self.__iadd__(string.as_string_slice()) - fn __iadd__(mut self, str_slice: StringSlice): """Appends another string to this string. @@ -158,21 +142,7 @@ struct InlineString(Sized, Stringable, CollectionElement, CollectionElementNew): buffer.append(0) # Add the NUL byte self._storage = Self.Layout(String(buffer^)) - fn __add__(self, other: StringLiteral) -> Self: - """Construct a string by appending another string at the end of this string. - - Args: - other: The string to append. - - Returns: - A new string containing the concatenation of `self` and `other`. - """ - - var string = self - string += StringSlice(other) - return string - - fn __add__(self, other: String) -> Self: + fn __add__(self, other: StringSlice) -> Self: """Construct a string by appending another string at the end of this string. Args: @@ -183,8 +153,8 @@ struct InlineString(Sized, Stringable, CollectionElement, CollectionElementNew): """ var string = self - string += other.as_string_slice() - return string + string += other + return string^ fn __add__(self, other: InlineString) -> Self: """Construct a string by appending another string at the end of this string. @@ -378,22 +348,6 @@ struct _FixedString[CAP: Int]( # Operator dunders # ===------------------------------------------------------------------=== # - fn __iadd__(mut self, literal: StringLiteral) raises: - """Appends another string to this string. - - Args: - literal: The string to append. - """ - self.__iadd__(literal.as_string_slice()) - - fn __iadd__(mut self, string: String) raises: - """Appends another string to this string. - - Args: - string: The string to append. - """ - self.__iadd__(string.as_string_slice()) - @always_inline fn __iadd__(mut self, str_slice: StringSlice) raises: """Appends another string to this string. diff --git a/stdlib/src/collections/string/string.mojo b/stdlib/src/collections/string/string.mojo index d08381f298..7cbbd2a884 100644 --- a/stdlib/src/collections/string/string.mojo +++ b/stdlib/src/collections/string/string.mojo @@ -1145,30 +1145,6 @@ struct String( ptr[sum_len] = 0 return Self(buffer^) - @always_inline - fn __add__(self, other: String) -> String: - """Creates a string by appending another string at the end. - - Args: - other: The string to append. - - Returns: - The new constructed string. - """ - return Self._add[True](self.as_bytes(), other.as_bytes()) - - @always_inline - fn __add__(self, other: StringLiteral) -> String: - """Creates a string by appending a string literal at the end. - - Args: - other: The string literal to append. - - Returns: - The new constructed string. - """ - return Self._add[False](self.as_bytes(), other.as_bytes()) - @always_inline fn __add__(self, other: StringSlice) -> String: """Creates a string by appending a string slice at the end. @@ -1181,30 +1157,6 @@ struct String( """ return Self._add[False](self.as_bytes(), other.as_bytes()) - @always_inline - fn __radd__(self, other: String) -> String: - """Creates a string by prepending another string to the start. - - Args: - other: The string to prepend. - - Returns: - The new constructed string. - """ - return Self._add[True](other.as_bytes(), self.as_bytes()) - - @always_inline - fn __radd__(self, other: StringLiteral) -> String: - """Creates a string by prepending another string literal to the start. - - Args: - other: The string to prepend. - - Returns: - The new constructed string. - """ - return Self._add[True](other.as_bytes(), self.as_bytes()) - @always_inline fn __radd__(self, other: StringSlice) -> String: """Creates a string by prepending another string slice to the start. @@ -1237,24 +1189,6 @@ struct String( if not has_null: s_ptr[sum_len] = 0 - @always_inline - fn __iadd__(mut self, other: String): - """Appends another string to this string. - - Args: - other: The string to append. - """ - self._iadd[True](other.as_bytes()) - - @always_inline - fn __iadd__(mut self, other: StringLiteral): - """Appends another string literal to this string. - - Args: - other: The string to append. - """ - self._iadd[False](other.as_bytes()) - @always_inline fn __iadd__(mut self, other: StringSlice): """Appends another string slice to this string. diff --git a/stdlib/src/collections/string/string_slice.mojo b/stdlib/src/collections/string/string_slice.mojo index 78268211da..977f5b7f76 100644 --- a/stdlib/src/collections/string/string_slice.mojo +++ b/stdlib/src/collections/string/string_slice.mojo @@ -540,30 +540,6 @@ struct StringSlice[mut: Bool, //, origin: Origin[mut]]( return True return memcmp(s_ptr, rhs_ptr, s_len) == 0 - @always_inline - fn __eq__(self, rhs: String) -> Bool: - """Verify if a `StringSlice` is equal to a string. - - Args: - rhs: The `String` to compare against. - - Returns: - If the `StringSlice` is equal to the input in length and contents. - """ - return self == rhs.as_string_slice() - - @always_inline - fn __eq__(self, rhs: StringLiteral) -> Bool: - """Verify if a `StringSlice` is equal to a literal. - - Args: - rhs: The `StringLiteral` to compare against. - - Returns: - If the `StringSlice` is equal to the input in length and contents. - """ - return self == rhs.as_string_slice() - fn __ne__(self, rhs_same: Self) -> Bool: """Verify if a `StringSlice` is not equal to another `StringSlice` with the same origin. @@ -591,32 +567,6 @@ struct StringSlice[mut: Bool, //, origin: Origin[mut]]( """ return not self == rhs - @always_inline - fn __ne__(self, rhs: String) -> Bool: - """Verify if span is not equal to another `StringSlice`. - - Args: - rhs: The `StringSlice` to compare against. - - Returns: - If the `StringSlice` is not equal to the input in length and - contents. - """ - return not self == rhs - - @always_inline - fn __ne__(self, rhs: StringLiteral) -> Bool: - """Verify if span is not equal to a `StringLiteral`. - - Args: - rhs: The `StringLiteral` to compare against. - - Returns: - If the `StringSlice` is not equal to the input in length and - contents. - """ - return not self == rhs - @always_inline fn __lt__(self, rhs: StringSlice) -> Bool: """Verify if the `StringSlice` bytes are strictly less than the input in From 6708625aa7535a2fd76fd8484188567b9f790dad Mon Sep 17 00:00:00 2001 From: modularbot Date: Wed, 8 Jan 2025 19:30:14 +0000 Subject: [PATCH 173/509] Update lockfiles to point to latest nightly version: 25.1.0.dev2025010817 --- examples/life/magic.lock | 284 +++++++++++++++++----------------- examples/magic.lock | 284 +++++++++++++++++----------------- examples/notebooks/magic.lock | 284 +++++++++++++++++----------------- examples/operators/magic.lock | 284 +++++++++++++++++----------------- magic.lock | 284 +++++++++++++++++----------------- 5 files changed, 711 insertions(+), 709 deletions(-) diff --git a/examples/life/magic.lock b/examples/life/magic.lock index 2dbac0c094..9d24a3a9a5 100644 --- a/examples/life/magic.lock +++ b/examples/life/magic.lock @@ -83,7 +83,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/httptools-0.6.4-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.27.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda @@ -146,7 +146,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.28-pthreads_h94d23a6_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopus-1.3.1-h7f98852_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-h081d1f1_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.44-hadc24fc_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.45-h943b412_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsndfile-1.2.2-hc60ed4a_1.conda @@ -170,12 +170,12 @@ 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-25.1.0.dev2025010705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025010705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025010705-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025010705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025010817-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025010817-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025010817-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025010817-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-25.1.0.dev2025010705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025010817-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_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.15-py312h98912ed_1.conda @@ -236,7 +236,7 @@ environments: - 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.10-hb5b8611_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/safetensors-0.5.0-py312h12e396e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/safetensors-0.5.1-py312h12e396e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/sdl2-2.30.10-h63c27ac_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/sdl2_image-2.8.2-h06ee604_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/sdl2_mixer-2.6.3-h8830914_1.conda @@ -359,7 +359,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/httptools-0.6.4-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.27.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda @@ -422,7 +422,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.28-pthreads_h9d3fd7e_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopus-1.3.1-hf897c2e_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-hfc78867_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.44-hc4a20ef_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.45-hec79eb8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.3-h44a3b7b_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsndfile-1.2.2-h79657aa_1.conda @@ -446,12 +446,12 @@ 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-25.1.0.dev2025010705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025010705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025010705-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025010705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025010817-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025010817-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025010817-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025010817-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-25.1.0.dev2025010705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025010817-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_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.15-py312hdd3e373_1.conda @@ -512,7 +512,7 @@ environments: - 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.10-h5df210e_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/safetensors-0.5.0-py312h8cbf658_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/safetensors-0.5.1-py312h8cbf658_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sdl2-2.30.10-h93e764a_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sdl2_image-2.8.2-hd95cb85_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sdl2_mixer-2.6.3-h422cae6_1.conda @@ -630,7 +630,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/httptools-0.6.4-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.27.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda @@ -685,7 +685,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.28-openmp_hf332438_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopus-1.3.1-h27ca646_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-h636d7b7_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.44-hc14010f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.45-h3783ad8_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.3-h3bd63a1_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h07bc746_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsndfile-1.2.2-h9739721_1.conda @@ -705,12 +705,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-25.1.0.dev2025010705-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025010705-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025010705-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025010705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025010817-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025010817-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025010817-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025010817-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-25.1.0.dev2025010705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025010817-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 @@ -769,7 +769,7 @@ environments: - 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.5.0-py312hcd83bfe_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/safetensors-0.5.1-py312hcd83bfe_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 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sdl2_mixer-2.6.3-h4fe3bdc_1.conda @@ -3632,14 +3632,13 @@ packages: timestamp: 1733663449209 - kind: conda name: huggingface_hub - version: 0.26.5 - build: pyhd8ed1ab_1 - build_number: 1 + version: 0.27.1 + build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.5-pyhd8ed1ab_1.conda - sha256: 0c75532d914a04c73222be298ed2c6868739dd475b1b1a9137c52abe79873952 - md5: 73937038e21117fe401f8ea64fbaeacc + url: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.27.1-pyhd8ed1ab_0.conda + sha256: 4597d7aa720f4acdddacc27b3f9e8d4336cb79477c53aee2d7ab96d136169cdb + md5: 8c9a53ecd0c3c278efbdac567dd12ed0 depends: - filelock - fsspec >=2023.5.0 @@ -3652,8 +3651,8 @@ packages: - typing_extensions >=3.7.4.3 license: Apache-2.0 license_family: APACHE - size: 275466 - timestamp: 1733852454004 + size: 278363 + timestamp: 1736350219225 - kind: conda name: hyperframe version: 6.0.1 @@ -6566,47 +6565,47 @@ packages: timestamp: 1735685495511 - kind: conda name: libpng - version: 1.6.44 - build: hadc24fc_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.44-hadc24fc_0.conda - sha256: e5b14f7a01c2db4362d8591f42f82f336ed48d5e4079e4d1f65d0c2a3637ea78 - md5: f4cc49d7aa68316213e4b12be35308d1 + version: 1.6.45 + build: h3783ad8_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.45-h3783ad8_0.conda + sha256: ddcc81c049b32fb5eb3ac1f9a6d3a589c08325c8ec6f89eb912208b19330d68c + md5: d554c806d065b1763cb9e1cb1d25741d depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 + - __osx >=11.0 - libzlib >=1.3.1,<2.0a0 license: zlib-acknowledgement - size: 290661 - timestamp: 1726234747153 + size: 263151 + timestamp: 1736339184358 - kind: conda name: libpng - version: 1.6.44 - build: hc14010f_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.44-hc14010f_0.conda - sha256: 38f8759a3eb8060deabd4db41f0f023514d853e46ddcbd0ba21768fc4e563bb1 - md5: fb36e93f0ea6a6f5d2b99984f34b049e + version: 1.6.45 + build: h943b412_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.45-h943b412_0.conda + sha256: b8f5b5ba9a14dedf7c97c01300de492b1b52b68eacbc3249a13fdbfa82349a2f + md5: 85cbdaacad93808395ac295b5667d25b depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 - libzlib >=1.3.1,<2.0a0 license: zlib-acknowledgement - size: 263385 - timestamp: 1726234714421 + size: 289426 + timestamp: 1736339058310 - kind: conda name: libpng - version: 1.6.44 - build: hc4a20ef_0 + version: 1.6.45 + build: hec79eb8_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.44-hc4a20ef_0.conda - sha256: 23b5ce15cf9c6017641a8396bab00ae807dd9f662718cfa7f61de114d0c97647 - md5: 5d25802b25fcc7419fa13e21affaeb3a + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.45-hec79eb8_0.conda + sha256: a06daa523a0d5775acb96e6e3f083adc2ab1383eb8f664513dbc663f439c9cca + md5: 9a8716c16b40acc7148263de1d0a403b depends: - libgcc >=13 - libzlib >=1.3.1,<2.0a0 license: zlib-acknowledgement - size: 294907 - timestamp: 1726236639270 + size: 299051 + timestamp: 1736344007986 - kind: conda name: libprotobuf version: 5.28.3 @@ -7688,76 +7687,76 @@ packages: timestamp: 1733219945697 - kind: conda name: max - version: 25.1.0.dev2025010705 + version: 25.1.0.dev2025010817 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025010705-release.conda - sha256: 4f71937f851b3b8b20a6ece6ba12b390ba0d26caec64282cc85db4b3aa556157 - md5: e5cf52dd6e155fff57a8a27101b8a331 - depends: - - max-core ==25.1.0.dev2025010705 release - - max-python >=25.1.0.dev2025010705,<26.0a0 - - mojo-jupyter ==25.1.0.dev2025010705 release - - mblack ==25.1.0.dev2025010705 release + url: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025010817-release.conda + sha256: 4ce81189e26dd06f188129580db0464f8ee9a081e195dad7082b2fa25fcf738e + md5: b46d770a5f45597ffc008bd224d8e91c + depends: + - max-core ==25.1.0.dev2025010817 release + - max-python >=25.1.0.dev2025010817,<26.0a0 + - mojo-jupyter ==25.1.0.dev2025010817 release + - mblack ==25.1.0.dev2025010817 release license: LicenseRef-Modular-Proprietary - size: 9923 - timestamp: 1736227019263 + size: 9922 + timestamp: 1736357145809 - kind: conda name: max-core - version: 25.1.0.dev2025010705 + version: 25.1.0.dev2025010817 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025010705-release.conda - sha256: 57134626c86869f5e0b86172330a5579e2da6b576a58f5af56c27354b820c03e - md5: b2853511eb0e0871e7f28c00a63807d8 + url: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025010817-release.conda + sha256: 5459a1f6c379b01231649212ca7f5062c49208b5c0b2b17047b55011872727c2 + md5: 5bbb293b5216b098c424e7602823a460 depends: - - mblack ==25.1.0.dev2025010705 release + - mblack ==25.1.0.dev2025010817 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 247227693 - timestamp: 1736227019261 + size: 247646542 + timestamp: 1736357145807 - kind: conda name: max-core - version: 25.1.0.dev2025010705 + version: 25.1.0.dev2025010817 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025010705-release.conda - sha256: 533dee921a80b6313d09c5eb2fddbe756794c89cce36e236afaa66bc6278b692 - md5: 0949e8de33bf8292b9c11bbcbc6bfb9e + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025010817-release.conda + sha256: 18715c3fc8071d5eeb9f1893512fe65967919e9900738423958a5cb4f09148da + md5: 4a7b6e800f8fdabf0498727c1bff57d3 depends: - - mblack ==25.1.0.dev2025010705 release + - mblack ==25.1.0.dev2025010817 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 251241180 - timestamp: 1736231934331 + size: 251608988 + timestamp: 1736357045232 - kind: conda name: max-core - version: 25.1.0.dev2025010705 + version: 25.1.0.dev2025010817 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025010705-release.conda - sha256: 5e44a91c7f08caad35255918dc8a370931eeff635f0cd93a240fa884996f2f46 - md5: d3a439dc2f5637aa1cfdf26fbe0a7e83 + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025010817-release.conda + sha256: 5a23bdc48d6fe2cfe439097b7a0fc0f1bd2b23be081478638ef4b945267d8015 + md5: 1f54b615e5199ac268f123c89cfbabda depends: - - mblack ==25.1.0.dev2025010705 release + - mblack ==25.1.0.dev2025010817 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 208980248 - timestamp: 1736227147664 + size: 209267317 + timestamp: 1736357278969 - kind: conda name: max-python - version: 25.1.0.dev2025010705 + version: 25.1.0.dev2025010817 build: 3.12release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025010705-3.12release.conda - sha256: a3072934203369556802b32afe2c7b3b70383ce910e45fff41330ece05d385bf - md5: 5c9ca83a2cd807b07247873216a76317 + url: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025010817-3.12release.conda + sha256: 7bd73eb5b2c8f796bb2bf947e68b46f9fa0302c1999905321bd18c453be5d410 + md5: 58d7a8476c07a36c0412fcd983faebfc depends: - - max-core ==25.1.0.dev2025010705 release + - max-core ==25.1.0.dev2025010817 release - python 3.12.* - fastapi - httpx @@ -7780,18 +7779,18 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 124176244 - timestamp: 1736227019271 + size: 124309678 + timestamp: 1736357145817 - kind: conda name: max-python - version: 25.1.0.dev2025010705 + version: 25.1.0.dev2025010817 build: 3.12release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025010705-3.12release.conda - sha256: b7e6bc5c4acb7803626e494139aca2e1b997f588e8b8d44bd9165ef55e05048a - md5: e4b5ecb54c41900473643742021af465 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025010817-3.12release.conda + sha256: 1faa8dea2f87c25b20f467758a46589d2d464d8367fda4fa7fa61c73120b62f9 + md5: be84f3b39ee757dd73d27ac241c37d5a depends: - - max-core ==25.1.0.dev2025010705 release + - max-core ==25.1.0.dev2025010817 release - python 3.12.* - fastapi - httpx @@ -7814,18 +7813,18 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 128068854 - timestamp: 1736231934342 + size: 128047180 + timestamp: 1736357045243 - kind: conda name: max-python - version: 25.1.0.dev2025010705 + version: 25.1.0.dev2025010817 build: 3.12release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025010705-3.12release.conda - sha256: 29812e40f9474a260aeab5d76253ffd35a9feecaff301b7e2895e755a61932ce - md5: 7811e97d595835fe8f312c1b7d2ccfc1 + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025010817-3.12release.conda + sha256: c8b10ed04f57bc9a9e67d447ad97404ea06f3efbc903dced4723f3828c93ab2c + md5: aa8c692e6393c51283419173f7cb69a2 depends: - - max-core ==25.1.0.dev2025010705 release + - max-core ==25.1.0.dev2025010817 release - python 3.12.* - fastapi - httpx @@ -7848,17 +7847,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 110696918 - timestamp: 1736227147667 + size: 110680624 + timestamp: 1736357278972 - kind: conda name: mblack - version: 25.1.0.dev2025010705 + version: 25.1.0.dev2025010817 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025010705-release.conda - sha256: 0ef71e28927a9e4ce6c3b91929581483352b024972a0c267de613590684ac38a - md5: 32936fc5667f32a465daf218c9c6decb + url: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025010817-release.conda + sha256: 8bc21a826d3edc5a8719deeeadcee5b3fc8fbd83313ce2c7ebc8c620075608e1 + md5: ee664fe2390706d36d2d60b1f2bd69df depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -7868,8 +7867,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130819 - timestamp: 1736227019267 + size: 130813 + timestamp: 1736357145814 - kind: conda name: mdurl version: 0.1.2 @@ -7888,21 +7887,21 @@ packages: timestamp: 1733255681319 - kind: conda name: mojo-jupyter - version: 25.1.0.dev2025010705 + version: 25.1.0.dev2025010817 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025010705-release.conda - sha256: 5dca1179e4a37aa94b597fdb4c9d758b071f9ab3acc72ad525290c590db6b8c7 - md5: 6cc10303055ec07e344cb2a7bfdb493f + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025010817-release.conda + sha256: a92d02809c43a9a92abc363e69396738f6c9802c12d8827cc008d316cea4e107 + md5: 0533034ac307140f160cf43c5f36b2ed depends: - - max-core ==25.1.0.dev2025010705 release + - max-core ==25.1.0.dev2025010817 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22937 - timestamp: 1736227019268 + size: 22926 + timestamp: 1736357145815 - kind: conda name: mpg123 version: 1.32.9 @@ -9476,6 +9475,7 @@ packages: depends: - python >=3.9 license: BSD-2-Clause + license_family: BSD size: 888600 timestamp: 1736243563082 - kind: conda @@ -10229,12 +10229,12 @@ packages: timestamp: 1734415467047 - kind: conda name: safetensors - version: 0.5.0 + version: 0.5.1 build: py312h12e396e_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/safetensors-0.5.0-py312h12e396e_0.conda - sha256: f9d0a4fbfbd2bcded116b81afd69d00aa5d5bac0d431dd47737cec1b1d24c2e2 - md5: 4b33e7c3e9bbc3936e08150fc9e17708 + url: https://conda.anaconda.org/conda-forge/linux-64/safetensors-0.5.1-py312h12e396e_0.conda + sha256: 61a4a49bc98a7b529c7c9e2af9be1dc3350b8ea1c78f985e8a051543e8845ffa + md5: 19b54f64e926aca46d0cc2ff0ecf4f34 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -10244,16 +10244,16 @@ packages: - __glibc >=2.17 license: Apache-2.0 license_family: APACHE - size: 424699 - timestamp: 1735917812729 + size: 424642 + timestamp: 1736278244485 - kind: conda name: safetensors - version: 0.5.0 + version: 0.5.1 build: py312h8cbf658_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/safetensors-0.5.0-py312h8cbf658_0.conda - sha256: aee581ce5c744f81ac4848b1810a88a750041ef91da646234f75092a8b4e06d1 - md5: 9c317f54bd3c95a830e98b7baee11ea9 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/safetensors-0.5.1-py312h8cbf658_0.conda + sha256: ee66da0efb1d6897ad74156cb115277dfb8ca7f6c8bdfb17bd6a6fb205495622 + md5: f91072f99af78ed0c1941ba5d6f30cf8 depends: - libgcc >=13 - python >=3.12,<3.13.0a0 @@ -10263,16 +10263,16 @@ packages: - __glibc >=2.17 license: Apache-2.0 license_family: APACHE - size: 408792 - timestamp: 1735917879258 + size: 409549 + timestamp: 1736278357702 - kind: conda name: safetensors - version: 0.5.0 + version: 0.5.1 build: py312hcd83bfe_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/safetensors-0.5.0-py312hcd83bfe_0.conda - sha256: 8992f78362793a465c3009be2fd80582c93e2151bc17d07ebd39ce7af757358a - md5: acbbbac2271653f4914cef842a84190f + url: https://conda.anaconda.org/conda-forge/osx-arm64/safetensors-0.5.1-py312hcd83bfe_0.conda + sha256: e61cbac0c1b38731543a600e2e40c4cc686e5e565f6c9809d5dcc467e2e8f220 + md5: d12e134445366752e52acec1a86c845f depends: - __osx >=11.0 - python >=3.12,<3.13.0a0 @@ -10282,8 +10282,8 @@ packages: - __osx >=11.0 license: Apache-2.0 license_family: APACHE - size: 377533 - timestamp: 1735918206452 + size: 378562 + timestamp: 1736278448037 - kind: conda name: sdl2 version: 2.30.10 diff --git a/examples/magic.lock b/examples/magic.lock index bf6bd16058..f98b64cfd2 100644 --- a/examples/magic.lock +++ b/examples/magic.lock @@ -64,7 +64,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/httptools-0.6.4-py311h9ecbd09_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.27.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_1.conda @@ -110,7 +110,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.28-pthreads_h94d23a6_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-h081d1f1_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.44-hadc24fc_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.45-h943b412_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda @@ -131,12 +131,12 @@ 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-25.1.0.dev2025010705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025010705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025010705-3.11release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025010705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025010817-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025010817-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025010817-3.11release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025010817-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-25.1.0.dev2025010705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025010817-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 @@ -188,7 +188,7 @@ environments: - 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.10-hb5b8611_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/safetensors-0.5.0-py311h9e33e62_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/safetensors-0.5.1-py311h9e33e62_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-h8bd8927_1.conda @@ -281,7 +281,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/httptools-0.6.4-py311ha879c10_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.27.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda @@ -328,7 +328,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.28-pthreads_h9d3fd7e_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-hfc78867_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.44-hc4a20ef_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.45-hec79eb8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.3-h44a3b7b_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.20-h68df207_0.conda @@ -349,12 +349,12 @@ 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-25.1.0.dev2025010705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025010705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025010705-3.11release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025010705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025010817-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025010817-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025010817-3.11release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025010817-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-25.1.0.dev2025010705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025010817-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 @@ -406,7 +406,7 @@ environments: - 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.10-h5df210e_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/safetensors-0.5.0-py311h0ca61a2_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/safetensors-0.5.1-py311h0ca61a2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-hd4fb6f5_1.conda @@ -498,7 +498,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/httptools-0.6.4-py311h917b07b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.27.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda @@ -540,7 +540,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.64.0-h6d7220d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.28-openmp_hf332438_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-h636d7b7_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.44-hc14010f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.45-h3783ad8_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.3-h3bd63a1_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h07bc746_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda @@ -558,12 +558,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-25.1.0.dev2025010705-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025010705-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025010705-3.11release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025010705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025010817-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025010817-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025010817-3.11release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025010817-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-25.1.0.dev2025010705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025010817-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 @@ -614,7 +614,7 @@ environments: - 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.5.0-py311h3ff9189_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/safetensors-0.5.1-py311h3ff9189_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-h98b9ce2_1.conda @@ -2745,14 +2745,13 @@ packages: timestamp: 1733663449209 - kind: conda name: huggingface_hub - version: 0.26.5 - build: pyhd8ed1ab_1 - build_number: 1 + version: 0.27.1 + build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.5-pyhd8ed1ab_1.conda - sha256: 0c75532d914a04c73222be298ed2c6868739dd475b1b1a9137c52abe79873952 - md5: 73937038e21117fe401f8ea64fbaeacc + url: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.27.1-pyhd8ed1ab_0.conda + sha256: 4597d7aa720f4acdddacc27b3f9e8d4336cb79477c53aee2d7ab96d136169cdb + md5: 8c9a53ecd0c3c278efbdac567dd12ed0 depends: - filelock - fsspec >=2023.5.0 @@ -2765,8 +2764,8 @@ packages: - typing_extensions >=3.7.4.3 license: Apache-2.0 license_family: APACHE - size: 275466 - timestamp: 1733852454004 + size: 278363 + timestamp: 1736350219225 - kind: conda name: hyperframe version: 6.0.1 @@ -4937,47 +4936,47 @@ packages: timestamp: 1735685495511 - kind: conda name: libpng - version: 1.6.44 - build: hadc24fc_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.44-hadc24fc_0.conda - sha256: e5b14f7a01c2db4362d8591f42f82f336ed48d5e4079e4d1f65d0c2a3637ea78 - md5: f4cc49d7aa68316213e4b12be35308d1 + version: 1.6.45 + build: h3783ad8_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.45-h3783ad8_0.conda + sha256: ddcc81c049b32fb5eb3ac1f9a6d3a589c08325c8ec6f89eb912208b19330d68c + md5: d554c806d065b1763cb9e1cb1d25741d depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 + - __osx >=11.0 - libzlib >=1.3.1,<2.0a0 license: zlib-acknowledgement - size: 290661 - timestamp: 1726234747153 + size: 263151 + timestamp: 1736339184358 - kind: conda name: libpng - version: 1.6.44 - build: hc14010f_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.44-hc14010f_0.conda - sha256: 38f8759a3eb8060deabd4db41f0f023514d853e46ddcbd0ba21768fc4e563bb1 - md5: fb36e93f0ea6a6f5d2b99984f34b049e + version: 1.6.45 + build: h943b412_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.45-h943b412_0.conda + sha256: b8f5b5ba9a14dedf7c97c01300de492b1b52b68eacbc3249a13fdbfa82349a2f + md5: 85cbdaacad93808395ac295b5667d25b depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 - libzlib >=1.3.1,<2.0a0 license: zlib-acknowledgement - size: 263385 - timestamp: 1726234714421 + size: 289426 + timestamp: 1736339058310 - kind: conda name: libpng - version: 1.6.44 - build: hc4a20ef_0 + version: 1.6.45 + build: hec79eb8_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.44-hc4a20ef_0.conda - sha256: 23b5ce15cf9c6017641a8396bab00ae807dd9f662718cfa7f61de114d0c97647 - md5: 5d25802b25fcc7419fa13e21affaeb3a + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.45-hec79eb8_0.conda + sha256: a06daa523a0d5775acb96e6e3f083adc2ab1383eb8f664513dbc663f439c9cca + md5: 9a8716c16b40acc7148263de1d0a403b depends: - libgcc >=13 - libzlib >=1.3.1,<2.0a0 license: zlib-acknowledgement - size: 294907 - timestamp: 1726236639270 + size: 299051 + timestamp: 1736344007986 - kind: conda name: libprotobuf version: 5.28.3 @@ -5909,76 +5908,76 @@ packages: timestamp: 1733220925299 - kind: conda name: max - version: 25.1.0.dev2025010705 + version: 25.1.0.dev2025010817 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025010705-release.conda - sha256: 4f71937f851b3b8b20a6ece6ba12b390ba0d26caec64282cc85db4b3aa556157 - md5: e5cf52dd6e155fff57a8a27101b8a331 - depends: - - max-core ==25.1.0.dev2025010705 release - - max-python >=25.1.0.dev2025010705,<26.0a0 - - mojo-jupyter ==25.1.0.dev2025010705 release - - mblack ==25.1.0.dev2025010705 release + url: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025010817-release.conda + sha256: 4ce81189e26dd06f188129580db0464f8ee9a081e195dad7082b2fa25fcf738e + md5: b46d770a5f45597ffc008bd224d8e91c + depends: + - max-core ==25.1.0.dev2025010817 release + - max-python >=25.1.0.dev2025010817,<26.0a0 + - mojo-jupyter ==25.1.0.dev2025010817 release + - mblack ==25.1.0.dev2025010817 release license: LicenseRef-Modular-Proprietary - size: 9923 - timestamp: 1736227019263 + size: 9922 + timestamp: 1736357145809 - kind: conda name: max-core - version: 25.1.0.dev2025010705 + version: 25.1.0.dev2025010817 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025010705-release.conda - sha256: 57134626c86869f5e0b86172330a5579e2da6b576a58f5af56c27354b820c03e - md5: b2853511eb0e0871e7f28c00a63807d8 + url: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025010817-release.conda + sha256: 5459a1f6c379b01231649212ca7f5062c49208b5c0b2b17047b55011872727c2 + md5: 5bbb293b5216b098c424e7602823a460 depends: - - mblack ==25.1.0.dev2025010705 release + - mblack ==25.1.0.dev2025010817 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 247227693 - timestamp: 1736227019261 + size: 247646542 + timestamp: 1736357145807 - kind: conda name: max-core - version: 25.1.0.dev2025010705 + version: 25.1.0.dev2025010817 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025010705-release.conda - sha256: 533dee921a80b6313d09c5eb2fddbe756794c89cce36e236afaa66bc6278b692 - md5: 0949e8de33bf8292b9c11bbcbc6bfb9e + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025010817-release.conda + sha256: 18715c3fc8071d5eeb9f1893512fe65967919e9900738423958a5cb4f09148da + md5: 4a7b6e800f8fdabf0498727c1bff57d3 depends: - - mblack ==25.1.0.dev2025010705 release + - mblack ==25.1.0.dev2025010817 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 251241180 - timestamp: 1736231934331 + size: 251608988 + timestamp: 1736357045232 - kind: conda name: max-core - version: 25.1.0.dev2025010705 + version: 25.1.0.dev2025010817 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025010705-release.conda - sha256: 5e44a91c7f08caad35255918dc8a370931eeff635f0cd93a240fa884996f2f46 - md5: d3a439dc2f5637aa1cfdf26fbe0a7e83 + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025010817-release.conda + sha256: 5a23bdc48d6fe2cfe439097b7a0fc0f1bd2b23be081478638ef4b945267d8015 + md5: 1f54b615e5199ac268f123c89cfbabda depends: - - mblack ==25.1.0.dev2025010705 release + - mblack ==25.1.0.dev2025010817 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 208980248 - timestamp: 1736227147664 + size: 209267317 + timestamp: 1736357278969 - kind: conda name: max-python - version: 25.1.0.dev2025010705 + version: 25.1.0.dev2025010817 build: 3.11release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025010705-3.11release.conda - sha256: 0ff2a0e3943c7eb51db1df4a2d04b9eb6cc3632ffb5ec161a3d56072e85fbe8d - md5: 2300cdd658658c85adc5bb1410435ef5 + url: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025010817-3.11release.conda + sha256: 484df097270c6e3e17e974a8d819bfcfb3f76c416b24435d3b56c6ad2aa680d3 + md5: c0483878bb68b87901c6586283b218f0 depends: - - max-core ==25.1.0.dev2025010705 release + - max-core ==25.1.0.dev2025010817 release - python 3.11.* - fastapi - httpx @@ -6001,18 +6000,18 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 124182414 - timestamp: 1736227019268 + size: 124310656 + timestamp: 1736357145815 - kind: conda name: max-python - version: 25.1.0.dev2025010705 + version: 25.1.0.dev2025010817 build: 3.11release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025010705-3.11release.conda - sha256: ca2ce1f220a650c2f7e4728830d68b2fff05836633dc6ff5c7568e6a8f0cb29e - md5: 83b1e6c42dcb6a8669824c5d29ab8f05 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025010817-3.11release.conda + sha256: 9129d7aaf336c2681222ea59ee93adf7a1b96265f98a5ccfef554376fd9e6f5b + md5: 8d027a2fc8187f587e4beb684d46cd31 depends: - - max-core ==25.1.0.dev2025010705 release + - max-core ==25.1.0.dev2025010817 release - python 3.11.* - fastapi - httpx @@ -6035,18 +6034,18 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 128062027 - timestamp: 1736231934339 + size: 128032940 + timestamp: 1736357045240 - kind: conda name: max-python - version: 25.1.0.dev2025010705 + version: 25.1.0.dev2025010817 build: 3.11release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025010705-3.11release.conda - sha256: b60f9b2a9c0f467e84a676e4d73430cb61630aa4c2adf0c8ddf74127898986da - md5: b7d022a6db5692e65df63db764efad29 + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025010817-3.11release.conda + sha256: 9701c9fc8c163efcb36ad073936b3b848e03a97eb444efc7d73d5aa71ed8b928 + md5: fdc5f29f20fe879a8752ac6da859dd5c depends: - - max-core ==25.1.0.dev2025010705 release + - max-core ==25.1.0.dev2025010817 release - python 3.11.* - fastapi - httpx @@ -6069,17 +6068,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 110728455 - timestamp: 1736227147666 + size: 110679362 + timestamp: 1736357278971 - kind: conda name: mblack - version: 25.1.0.dev2025010705 + version: 25.1.0.dev2025010817 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025010705-release.conda - sha256: 0ef71e28927a9e4ce6c3b91929581483352b024972a0c267de613590684ac38a - md5: 32936fc5667f32a465daf218c9c6decb + url: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025010817-release.conda + sha256: 8bc21a826d3edc5a8719deeeadcee5b3fc8fbd83313ce2c7ebc8c620075608e1 + md5: ee664fe2390706d36d2d60b1f2bd69df depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -6089,8 +6088,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130819 - timestamp: 1736227019267 + size: 130813 + timestamp: 1736357145814 - kind: conda name: mdurl version: 0.1.2 @@ -6109,21 +6108,21 @@ packages: timestamp: 1733255681319 - kind: conda name: mojo-jupyter - version: 25.1.0.dev2025010705 + version: 25.1.0.dev2025010817 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025010705-release.conda - sha256: 5dca1179e4a37aa94b597fdb4c9d758b071f9ab3acc72ad525290c590db6b8c7 - md5: 6cc10303055ec07e344cb2a7bfdb493f + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025010817-release.conda + sha256: a92d02809c43a9a92abc363e69396738f6c9802c12d8827cc008d316cea4e107 + md5: 0533034ac307140f160cf43c5f36b2ed depends: - - max-core ==25.1.0.dev2025010705 release + - max-core ==25.1.0.dev2025010817 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22937 - timestamp: 1736227019268 + size: 22926 + timestamp: 1736357145815 - kind: conda name: multidict version: 6.1.0 @@ -7278,6 +7277,7 @@ packages: depends: - python >=3.9 license: BSD-2-Clause + license_family: BSD size: 888600 timestamp: 1736243563082 - kind: conda @@ -7988,12 +7988,12 @@ packages: timestamp: 1734415467047 - kind: conda name: safetensors - version: 0.5.0 + version: 0.5.1 build: py311h0ca61a2_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/safetensors-0.5.0-py311h0ca61a2_0.conda - sha256: 15c65a029e25ef87f17a702b8fdee33543637f9e81595723480e66d9b167924b - md5: b7872918f1ba84a18ca3862e99f8925d + url: https://conda.anaconda.org/conda-forge/linux-aarch64/safetensors-0.5.1-py311h0ca61a2_0.conda + sha256: f51755ad78863e2f0451443c3c902aff9c066e11463d8b1782d7f73e3686fae7 + md5: f468136337bcd292514e2554f6783033 depends: - libgcc >=13 - python >=3.11,<3.12.0a0 @@ -8003,16 +8003,16 @@ packages: - __glibc >=2.17 license: Apache-2.0 license_family: APACHE - size: 410162 - timestamp: 1735917983294 + size: 409136 + timestamp: 1736278320399 - kind: conda name: safetensors - version: 0.5.0 + version: 0.5.1 build: py311h3ff9189_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/safetensors-0.5.0-py311h3ff9189_0.conda - sha256: 26ba9b0d16b482fda3e1d0497cfc525297a749a31c96f096c90e182214f3fda7 - md5: 735ed8cf26d3d07b2a95d15c68bcecc7 + url: https://conda.anaconda.org/conda-forge/osx-arm64/safetensors-0.5.1-py311h3ff9189_0.conda + sha256: c9be8e19d4068571b95502dd1f4203e763686ae41fa433752339209caa0c3053 + md5: 1f5ed6825b119ec40a3309c3adb5a737 depends: - __osx >=11.0 - python >=3.11,<3.12.0a0 @@ -8022,16 +8022,16 @@ packages: - __osx >=11.0 license: Apache-2.0 license_family: APACHE - size: 378693 - timestamp: 1735918276628 + size: 378288 + timestamp: 1736278483932 - kind: conda name: safetensors - version: 0.5.0 + version: 0.5.1 build: py311h9e33e62_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/safetensors-0.5.0-py311h9e33e62_0.conda - sha256: 6e5146ac486dc1e07d68b627c0a0dee5e7974b196ae78a8f03b584a291ae0f7c - md5: 9fbe1879708145e8501218f27bf4062e + url: https://conda.anaconda.org/conda-forge/linux-64/safetensors-0.5.1-py311h9e33e62_0.conda + sha256: ca2f11077f6edd1938adcc51711f09e59d45ea9066c546df0b8422ee977ee9d4 + md5: 5a37c50e5cf8269918e3c225fb7d6d48 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -8041,8 +8041,8 @@ packages: - __glibc >=2.17 license: Apache-2.0 license_family: APACHE - size: 424801 - timestamp: 1735917839397 + size: 424734 + timestamp: 1736278241935 - kind: conda name: shellingham version: 1.5.4 diff --git a/examples/notebooks/magic.lock b/examples/notebooks/magic.lock index acaa918264..c0fbd109f5 100644 --- a/examples/notebooks/magic.lock +++ b/examples/notebooks/magic.lock @@ -82,7 +82,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/httptools-0.6.4-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.27.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_1.conda @@ -145,7 +145,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.28-pthreads_h94d23a6_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-h081d1f1_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.44-hadc24fc_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.45-h943b412_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda @@ -167,13 +167,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/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-25.1.0.dev2025010705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025010705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025010705-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025010705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025010817-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025010817-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025010817-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025010817-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.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025010705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025010817-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 @@ -246,7 +246,7 @@ environments: - 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.10-hb5b8611_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/safetensors-0.5.0-py312h12e396e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/safetensors-0.5.1-py312h12e396e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh0d859eb_1.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 @@ -372,7 +372,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/httptools-0.6.4-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.27.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda @@ -436,7 +436,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.28-pthreads_h9d3fd7e_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-hfc78867_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.44-hc4a20ef_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.45-hec79eb8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.3-h44a3b7b_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.20-h68df207_0.conda @@ -458,13 +458,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/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-25.1.0.dev2025010705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025010705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025010705-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025010705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025010817-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025010817-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025010817-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025010817-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.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025010705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025010817-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 @@ -537,7 +537,7 @@ environments: - 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.10-h5df210e_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/safetensors-0.5.0-py312h8cbf658_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/safetensors-0.5.1-py312h8cbf658_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh0d859eb_1.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 @@ -663,7 +663,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/httptools-0.6.4-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.27.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda @@ -722,7 +722,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.64.0-h6d7220d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.28-openmp_hf332438_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-h636d7b7_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.44-hc14010f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.45-h3783ad8_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.3-h3bd63a1_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h07bc746_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda @@ -741,13 +741,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-25.1.0.dev2025010705-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025010705-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025010705-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025010705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025010817-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025010817-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025010817-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025010817-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.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025010705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025010817-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 @@ -821,7 +821,7 @@ environments: - 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.5.0-py312hcd83bfe_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/safetensors-0.5.1-py312hcd83bfe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh31c8845_1.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 @@ -3364,14 +3364,13 @@ packages: timestamp: 1733663449209 - kind: conda name: huggingface_hub - version: 0.26.5 - build: pyhd8ed1ab_1 - build_number: 1 + version: 0.27.1 + build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.5-pyhd8ed1ab_1.conda - sha256: 0c75532d914a04c73222be298ed2c6868739dd475b1b1a9137c52abe79873952 - md5: 73937038e21117fe401f8ea64fbaeacc + url: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.27.1-pyhd8ed1ab_0.conda + sha256: 4597d7aa720f4acdddacc27b3f9e8d4336cb79477c53aee2d7ab96d136169cdb + md5: 8c9a53ecd0c3c278efbdac567dd12ed0 depends: - filelock - fsspec >=2023.5.0 @@ -3384,8 +3383,8 @@ packages: - typing_extensions >=3.7.4.3 license: Apache-2.0 license_family: APACHE - size: 275466 - timestamp: 1733852454004 + size: 278363 + timestamp: 1736350219225 - kind: conda name: hyperframe version: 6.0.1 @@ -3479,6 +3478,7 @@ packages: constrains: - importlib-resources >=6.5.2,<6.5.3.0a0 license: Apache-2.0 + license_family: APACHE size: 33781 timestamp: 1736252433366 - kind: conda @@ -5985,47 +5985,47 @@ packages: timestamp: 1735685495511 - kind: conda name: libpng - version: 1.6.44 - build: hadc24fc_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.44-hadc24fc_0.conda - sha256: e5b14f7a01c2db4362d8591f42f82f336ed48d5e4079e4d1f65d0c2a3637ea78 - md5: f4cc49d7aa68316213e4b12be35308d1 + version: 1.6.45 + build: h3783ad8_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.45-h3783ad8_0.conda + sha256: ddcc81c049b32fb5eb3ac1f9a6d3a589c08325c8ec6f89eb912208b19330d68c + md5: d554c806d065b1763cb9e1cb1d25741d depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 + - __osx >=11.0 - libzlib >=1.3.1,<2.0a0 license: zlib-acknowledgement - size: 290661 - timestamp: 1726234747153 + size: 263151 + timestamp: 1736339184358 - kind: conda name: libpng - version: 1.6.44 - build: hc14010f_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.44-hc14010f_0.conda - sha256: 38f8759a3eb8060deabd4db41f0f023514d853e46ddcbd0ba21768fc4e563bb1 - md5: fb36e93f0ea6a6f5d2b99984f34b049e + version: 1.6.45 + build: h943b412_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.45-h943b412_0.conda + sha256: b8f5b5ba9a14dedf7c97c01300de492b1b52b68eacbc3249a13fdbfa82349a2f + md5: 85cbdaacad93808395ac295b5667d25b depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 - libzlib >=1.3.1,<2.0a0 license: zlib-acknowledgement - size: 263385 - timestamp: 1726234714421 + size: 289426 + timestamp: 1736339058310 - kind: conda name: libpng - version: 1.6.44 - build: hc4a20ef_0 + version: 1.6.45 + build: hec79eb8_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.44-hc4a20ef_0.conda - sha256: 23b5ce15cf9c6017641a8396bab00ae807dd9f662718cfa7f61de114d0c97647 - md5: 5d25802b25fcc7419fa13e21affaeb3a + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.45-hec79eb8_0.conda + sha256: a06daa523a0d5775acb96e6e3f083adc2ab1383eb8f664513dbc663f439c9cca + md5: 9a8716c16b40acc7148263de1d0a403b depends: - libgcc >=13 - libzlib >=1.3.1,<2.0a0 license: zlib-acknowledgement - size: 294907 - timestamp: 1726236639270 + size: 299051 + timestamp: 1736344007986 - kind: conda name: libprotobuf version: 5.28.3 @@ -6974,76 +6974,76 @@ packages: timestamp: 1733417051523 - kind: conda name: max - version: 25.1.0.dev2025010705 + version: 25.1.0.dev2025010817 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025010705-release.conda - sha256: 4f71937f851b3b8b20a6ece6ba12b390ba0d26caec64282cc85db4b3aa556157 - md5: e5cf52dd6e155fff57a8a27101b8a331 + url: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025010817-release.conda + sha256: 4ce81189e26dd06f188129580db0464f8ee9a081e195dad7082b2fa25fcf738e + md5: b46d770a5f45597ffc008bd224d8e91c depends: - - max-core ==25.1.0.dev2025010705 release - - max-python >=25.1.0.dev2025010705,<26.0a0 - - mojo-jupyter ==25.1.0.dev2025010705 release - - mblack ==25.1.0.dev2025010705 release + - max-core ==25.1.0.dev2025010817 release + - max-python >=25.1.0.dev2025010817,<26.0a0 + - mojo-jupyter ==25.1.0.dev2025010817 release + - mblack ==25.1.0.dev2025010817 release license: LicenseRef-Modular-Proprietary - size: 9923 - timestamp: 1736227019263 + size: 9922 + timestamp: 1736357145809 - kind: conda name: max-core - version: 25.1.0.dev2025010705 + version: 25.1.0.dev2025010817 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025010705-release.conda - sha256: 57134626c86869f5e0b86172330a5579e2da6b576a58f5af56c27354b820c03e - md5: b2853511eb0e0871e7f28c00a63807d8 + url: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025010817-release.conda + sha256: 5459a1f6c379b01231649212ca7f5062c49208b5c0b2b17047b55011872727c2 + md5: 5bbb293b5216b098c424e7602823a460 depends: - - mblack ==25.1.0.dev2025010705 release + - mblack ==25.1.0.dev2025010817 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 247227693 - timestamp: 1736227019261 + size: 247646542 + timestamp: 1736357145807 - kind: conda name: max-core - version: 25.1.0.dev2025010705 + version: 25.1.0.dev2025010817 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025010705-release.conda - sha256: 533dee921a80b6313d09c5eb2fddbe756794c89cce36e236afaa66bc6278b692 - md5: 0949e8de33bf8292b9c11bbcbc6bfb9e + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025010817-release.conda + sha256: 18715c3fc8071d5eeb9f1893512fe65967919e9900738423958a5cb4f09148da + md5: 4a7b6e800f8fdabf0498727c1bff57d3 depends: - - mblack ==25.1.0.dev2025010705 release + - mblack ==25.1.0.dev2025010817 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 251241180 - timestamp: 1736231934331 + size: 251608988 + timestamp: 1736357045232 - kind: conda name: max-core - version: 25.1.0.dev2025010705 + version: 25.1.0.dev2025010817 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025010705-release.conda - sha256: 5e44a91c7f08caad35255918dc8a370931eeff635f0cd93a240fa884996f2f46 - md5: d3a439dc2f5637aa1cfdf26fbe0a7e83 + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025010817-release.conda + sha256: 5a23bdc48d6fe2cfe439097b7a0fc0f1bd2b23be081478638ef4b945267d8015 + md5: 1f54b615e5199ac268f123c89cfbabda depends: - - mblack ==25.1.0.dev2025010705 release + - mblack ==25.1.0.dev2025010817 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 208980248 - timestamp: 1736227147664 + size: 209267317 + timestamp: 1736357278969 - kind: conda name: max-python - version: 25.1.0.dev2025010705 + version: 25.1.0.dev2025010817 build: 3.12release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025010705-3.12release.conda - sha256: a3072934203369556802b32afe2c7b3b70383ce910e45fff41330ece05d385bf - md5: 5c9ca83a2cd807b07247873216a76317 + url: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025010817-3.12release.conda + sha256: 7bd73eb5b2c8f796bb2bf947e68b46f9fa0302c1999905321bd18c453be5d410 + md5: 58d7a8476c07a36c0412fcd983faebfc depends: - - max-core ==25.1.0.dev2025010705 release + - max-core ==25.1.0.dev2025010817 release - python 3.12.* - fastapi - httpx @@ -7066,18 +7066,18 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 124176244 - timestamp: 1736227019271 + size: 124309678 + timestamp: 1736357145817 - kind: conda name: max-python - version: 25.1.0.dev2025010705 + version: 25.1.0.dev2025010817 build: 3.12release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025010705-3.12release.conda - sha256: b7e6bc5c4acb7803626e494139aca2e1b997f588e8b8d44bd9165ef55e05048a - md5: e4b5ecb54c41900473643742021af465 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025010817-3.12release.conda + sha256: 1faa8dea2f87c25b20f467758a46589d2d464d8367fda4fa7fa61c73120b62f9 + md5: be84f3b39ee757dd73d27ac241c37d5a depends: - - max-core ==25.1.0.dev2025010705 release + - max-core ==25.1.0.dev2025010817 release - python 3.12.* - fastapi - httpx @@ -7100,18 +7100,18 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 128068854 - timestamp: 1736231934342 + size: 128047180 + timestamp: 1736357045243 - kind: conda name: max-python - version: 25.1.0.dev2025010705 + version: 25.1.0.dev2025010817 build: 3.12release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025010705-3.12release.conda - sha256: 29812e40f9474a260aeab5d76253ffd35a9feecaff301b7e2895e755a61932ce - md5: 7811e97d595835fe8f312c1b7d2ccfc1 + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025010817-3.12release.conda + sha256: c8b10ed04f57bc9a9e67d447ad97404ea06f3efbc903dced4723f3828c93ab2c + md5: aa8c692e6393c51283419173f7cb69a2 depends: - - max-core ==25.1.0.dev2025010705 release + - max-core ==25.1.0.dev2025010817 release - python 3.12.* - fastapi - httpx @@ -7134,17 +7134,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 110696918 - timestamp: 1736227147667 + size: 110680624 + timestamp: 1736357278972 - kind: conda name: mblack - version: 25.1.0.dev2025010705 + version: 25.1.0.dev2025010817 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025010705-release.conda - sha256: 0ef71e28927a9e4ce6c3b91929581483352b024972a0c267de613590684ac38a - md5: 32936fc5667f32a465daf218c9c6decb + url: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025010817-release.conda + sha256: 8bc21a826d3edc5a8719deeeadcee5b3fc8fbd83313ce2c7ebc8c620075608e1 + md5: ee664fe2390706d36d2d60b1f2bd69df depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -7154,8 +7154,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130819 - timestamp: 1736227019267 + size: 130813 + timestamp: 1736357145814 - kind: conda name: mdurl version: 0.1.2 @@ -7190,21 +7190,21 @@ packages: timestamp: 1735686983426 - kind: conda name: mojo-jupyter - version: 25.1.0.dev2025010705 + version: 25.1.0.dev2025010817 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025010705-release.conda - sha256: 5dca1179e4a37aa94b597fdb4c9d758b071f9ab3acc72ad525290c590db6b8c7 - md5: 6cc10303055ec07e344cb2a7bfdb493f + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025010817-release.conda + sha256: a92d02809c43a9a92abc363e69396738f6c9802c12d8827cc008d316cea4e107 + md5: 0533034ac307140f160cf43c5f36b2ed depends: - - max-core ==25.1.0.dev2025010705 release + - max-core ==25.1.0.dev2025010817 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22937 - timestamp: 1736227019268 + size: 22926 + timestamp: 1736357145815 - kind: conda name: multidict version: 6.1.0 @@ -7381,6 +7381,7 @@ packages: - nbconvert =7.16.5=*_1 - pandoc >=2.9.2,<4.0.0 license: BSD-3-Clause + license_family: BSD size: 189127 timestamp: 1736258775758 - kind: conda @@ -8675,6 +8676,7 @@ packages: depends: - python >=3.9 license: BSD-2-Clause + license_family: BSD size: 888600 timestamp: 1736243563082 - kind: conda @@ -9545,12 +9547,12 @@ packages: timestamp: 1734415467047 - kind: conda name: safetensors - version: 0.5.0 + version: 0.5.1 build: py312h12e396e_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/safetensors-0.5.0-py312h12e396e_0.conda - sha256: f9d0a4fbfbd2bcded116b81afd69d00aa5d5bac0d431dd47737cec1b1d24c2e2 - md5: 4b33e7c3e9bbc3936e08150fc9e17708 + url: https://conda.anaconda.org/conda-forge/linux-64/safetensors-0.5.1-py312h12e396e_0.conda + sha256: 61a4a49bc98a7b529c7c9e2af9be1dc3350b8ea1c78f985e8a051543e8845ffa + md5: 19b54f64e926aca46d0cc2ff0ecf4f34 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -9560,16 +9562,16 @@ packages: - __glibc >=2.17 license: Apache-2.0 license_family: APACHE - size: 424699 - timestamp: 1735917812729 + size: 424642 + timestamp: 1736278244485 - kind: conda name: safetensors - version: 0.5.0 + version: 0.5.1 build: py312h8cbf658_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/safetensors-0.5.0-py312h8cbf658_0.conda - sha256: aee581ce5c744f81ac4848b1810a88a750041ef91da646234f75092a8b4e06d1 - md5: 9c317f54bd3c95a830e98b7baee11ea9 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/safetensors-0.5.1-py312h8cbf658_0.conda + sha256: ee66da0efb1d6897ad74156cb115277dfb8ca7f6c8bdfb17bd6a6fb205495622 + md5: f91072f99af78ed0c1941ba5d6f30cf8 depends: - libgcc >=13 - python >=3.12,<3.13.0a0 @@ -9579,16 +9581,16 @@ packages: - __glibc >=2.17 license: Apache-2.0 license_family: APACHE - size: 408792 - timestamp: 1735917879258 + size: 409549 + timestamp: 1736278357702 - kind: conda name: safetensors - version: 0.5.0 + version: 0.5.1 build: py312hcd83bfe_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/safetensors-0.5.0-py312hcd83bfe_0.conda - sha256: 8992f78362793a465c3009be2fd80582c93e2151bc17d07ebd39ce7af757358a - md5: acbbbac2271653f4914cef842a84190f + url: https://conda.anaconda.org/conda-forge/osx-arm64/safetensors-0.5.1-py312hcd83bfe_0.conda + sha256: e61cbac0c1b38731543a600e2e40c4cc686e5e565f6c9809d5dcc467e2e8f220 + md5: d12e134445366752e52acec1a86c845f depends: - __osx >=11.0 - python >=3.12,<3.13.0a0 @@ -9598,8 +9600,8 @@ packages: - __osx >=11.0 license: Apache-2.0 license_family: APACHE - size: 377533 - timestamp: 1735918206452 + size: 378562 + timestamp: 1736278448037 - kind: conda name: send2trash version: 1.8.3 diff --git a/examples/operators/magic.lock b/examples/operators/magic.lock index d5de2596e1..9513564aaa 100644 --- a/examples/operators/magic.lock +++ b/examples/operators/magic.lock @@ -64,7 +64,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/httptools-0.6.4-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.27.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_1.conda @@ -110,7 +110,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.28-pthreads_h94d23a6_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-h081d1f1_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.44-hadc24fc_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.45-h943b412_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda @@ -131,12 +131,12 @@ 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-25.1.0.dev2025010705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025010705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025010705-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025010705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025010817-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025010817-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025010817-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025010817-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-25.1.0.dev2025010705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025010817-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 @@ -188,7 +188,7 @@ environments: - 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.10-hb5b8611_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/safetensors-0.5.0-py312h12e396e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/safetensors-0.5.1-py312h12e396e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-h8bd8927_1.conda @@ -281,7 +281,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/httptools-0.6.4-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.27.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda @@ -328,7 +328,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.28-pthreads_h9d3fd7e_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-hfc78867_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.44-hc4a20ef_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.45-hec79eb8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.3-h44a3b7b_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.20-h68df207_0.conda @@ -349,12 +349,12 @@ 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-25.1.0.dev2025010705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025010705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025010705-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025010705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025010817-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025010817-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025010817-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025010817-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-25.1.0.dev2025010705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025010817-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 @@ -406,7 +406,7 @@ environments: - 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.10-h5df210e_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/safetensors-0.5.0-py312h8cbf658_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/safetensors-0.5.1-py312h8cbf658_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-hd4fb6f5_1.conda @@ -498,7 +498,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/httptools-0.6.4-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.27.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda @@ -540,7 +540,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.64.0-h6d7220d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.28-openmp_hf332438_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-h636d7b7_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.44-hc14010f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.45-h3783ad8_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.3-h3bd63a1_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h07bc746_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda @@ -558,12 +558,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-25.1.0.dev2025010705-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025010705-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025010705-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025010705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025010817-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025010817-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025010817-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025010817-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-25.1.0.dev2025010705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025010817-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 @@ -614,7 +614,7 @@ environments: - 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.5.0-py312hcd83bfe_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/safetensors-0.5.1-py312hcd83bfe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-h98b9ce2_1.conda @@ -2745,14 +2745,13 @@ packages: timestamp: 1733663449209 - kind: conda name: huggingface_hub - version: 0.26.5 - build: pyhd8ed1ab_1 - build_number: 1 + version: 0.27.1 + build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.5-pyhd8ed1ab_1.conda - sha256: 0c75532d914a04c73222be298ed2c6868739dd475b1b1a9137c52abe79873952 - md5: 73937038e21117fe401f8ea64fbaeacc + url: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.27.1-pyhd8ed1ab_0.conda + sha256: 4597d7aa720f4acdddacc27b3f9e8d4336cb79477c53aee2d7ab96d136169cdb + md5: 8c9a53ecd0c3c278efbdac567dd12ed0 depends: - filelock - fsspec >=2023.5.0 @@ -2765,8 +2764,8 @@ packages: - typing_extensions >=3.7.4.3 license: Apache-2.0 license_family: APACHE - size: 275466 - timestamp: 1733852454004 + size: 278363 + timestamp: 1736350219225 - kind: conda name: hyperframe version: 6.0.1 @@ -4937,47 +4936,47 @@ packages: timestamp: 1735685495511 - kind: conda name: libpng - version: 1.6.44 - build: hadc24fc_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.44-hadc24fc_0.conda - sha256: e5b14f7a01c2db4362d8591f42f82f336ed48d5e4079e4d1f65d0c2a3637ea78 - md5: f4cc49d7aa68316213e4b12be35308d1 + version: 1.6.45 + build: h3783ad8_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.45-h3783ad8_0.conda + sha256: ddcc81c049b32fb5eb3ac1f9a6d3a589c08325c8ec6f89eb912208b19330d68c + md5: d554c806d065b1763cb9e1cb1d25741d depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 + - __osx >=11.0 - libzlib >=1.3.1,<2.0a0 license: zlib-acknowledgement - size: 290661 - timestamp: 1726234747153 + size: 263151 + timestamp: 1736339184358 - kind: conda name: libpng - version: 1.6.44 - build: hc14010f_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.44-hc14010f_0.conda - sha256: 38f8759a3eb8060deabd4db41f0f023514d853e46ddcbd0ba21768fc4e563bb1 - md5: fb36e93f0ea6a6f5d2b99984f34b049e + version: 1.6.45 + build: h943b412_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.45-h943b412_0.conda + sha256: b8f5b5ba9a14dedf7c97c01300de492b1b52b68eacbc3249a13fdbfa82349a2f + md5: 85cbdaacad93808395ac295b5667d25b depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 - libzlib >=1.3.1,<2.0a0 license: zlib-acknowledgement - size: 263385 - timestamp: 1726234714421 + size: 289426 + timestamp: 1736339058310 - kind: conda name: libpng - version: 1.6.44 - build: hc4a20ef_0 + version: 1.6.45 + build: hec79eb8_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.44-hc4a20ef_0.conda - sha256: 23b5ce15cf9c6017641a8396bab00ae807dd9f662718cfa7f61de114d0c97647 - md5: 5d25802b25fcc7419fa13e21affaeb3a + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.45-hec79eb8_0.conda + sha256: a06daa523a0d5775acb96e6e3f083adc2ab1383eb8f664513dbc663f439c9cca + md5: 9a8716c16b40acc7148263de1d0a403b depends: - libgcc >=13 - libzlib >=1.3.1,<2.0a0 license: zlib-acknowledgement - size: 294907 - timestamp: 1726236639270 + size: 299051 + timestamp: 1736344007986 - kind: conda name: libprotobuf version: 5.28.3 @@ -5909,76 +5908,76 @@ packages: timestamp: 1733219945697 - kind: conda name: max - version: 25.1.0.dev2025010705 + version: 25.1.0.dev2025010817 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025010705-release.conda - sha256: 4f71937f851b3b8b20a6ece6ba12b390ba0d26caec64282cc85db4b3aa556157 - md5: e5cf52dd6e155fff57a8a27101b8a331 - depends: - - max-core ==25.1.0.dev2025010705 release - - max-python >=25.1.0.dev2025010705,<26.0a0 - - mojo-jupyter ==25.1.0.dev2025010705 release - - mblack ==25.1.0.dev2025010705 release + url: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025010817-release.conda + sha256: 4ce81189e26dd06f188129580db0464f8ee9a081e195dad7082b2fa25fcf738e + md5: b46d770a5f45597ffc008bd224d8e91c + depends: + - max-core ==25.1.0.dev2025010817 release + - max-python >=25.1.0.dev2025010817,<26.0a0 + - mojo-jupyter ==25.1.0.dev2025010817 release + - mblack ==25.1.0.dev2025010817 release license: LicenseRef-Modular-Proprietary - size: 9923 - timestamp: 1736227019263 + size: 9922 + timestamp: 1736357145809 - kind: conda name: max-core - version: 25.1.0.dev2025010705 + version: 25.1.0.dev2025010817 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025010705-release.conda - sha256: 57134626c86869f5e0b86172330a5579e2da6b576a58f5af56c27354b820c03e - md5: b2853511eb0e0871e7f28c00a63807d8 + url: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025010817-release.conda + sha256: 5459a1f6c379b01231649212ca7f5062c49208b5c0b2b17047b55011872727c2 + md5: 5bbb293b5216b098c424e7602823a460 depends: - - mblack ==25.1.0.dev2025010705 release + - mblack ==25.1.0.dev2025010817 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 247227693 - timestamp: 1736227019261 + size: 247646542 + timestamp: 1736357145807 - kind: conda name: max-core - version: 25.1.0.dev2025010705 + version: 25.1.0.dev2025010817 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025010705-release.conda - sha256: 533dee921a80b6313d09c5eb2fddbe756794c89cce36e236afaa66bc6278b692 - md5: 0949e8de33bf8292b9c11bbcbc6bfb9e + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025010817-release.conda + sha256: 18715c3fc8071d5eeb9f1893512fe65967919e9900738423958a5cb4f09148da + md5: 4a7b6e800f8fdabf0498727c1bff57d3 depends: - - mblack ==25.1.0.dev2025010705 release + - mblack ==25.1.0.dev2025010817 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 251241180 - timestamp: 1736231934331 + size: 251608988 + timestamp: 1736357045232 - kind: conda name: max-core - version: 25.1.0.dev2025010705 + version: 25.1.0.dev2025010817 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025010705-release.conda - sha256: 5e44a91c7f08caad35255918dc8a370931eeff635f0cd93a240fa884996f2f46 - md5: d3a439dc2f5637aa1cfdf26fbe0a7e83 + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025010817-release.conda + sha256: 5a23bdc48d6fe2cfe439097b7a0fc0f1bd2b23be081478638ef4b945267d8015 + md5: 1f54b615e5199ac268f123c89cfbabda depends: - - mblack ==25.1.0.dev2025010705 release + - mblack ==25.1.0.dev2025010817 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 208980248 - timestamp: 1736227147664 + size: 209267317 + timestamp: 1736357278969 - kind: conda name: max-python - version: 25.1.0.dev2025010705 + version: 25.1.0.dev2025010817 build: 3.12release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025010705-3.12release.conda - sha256: a3072934203369556802b32afe2c7b3b70383ce910e45fff41330ece05d385bf - md5: 5c9ca83a2cd807b07247873216a76317 + url: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025010817-3.12release.conda + sha256: 7bd73eb5b2c8f796bb2bf947e68b46f9fa0302c1999905321bd18c453be5d410 + md5: 58d7a8476c07a36c0412fcd983faebfc depends: - - max-core ==25.1.0.dev2025010705 release + - max-core ==25.1.0.dev2025010817 release - python 3.12.* - fastapi - httpx @@ -6001,18 +6000,18 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 124176244 - timestamp: 1736227019271 + size: 124309678 + timestamp: 1736357145817 - kind: conda name: max-python - version: 25.1.0.dev2025010705 + version: 25.1.0.dev2025010817 build: 3.12release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025010705-3.12release.conda - sha256: b7e6bc5c4acb7803626e494139aca2e1b997f588e8b8d44bd9165ef55e05048a - md5: e4b5ecb54c41900473643742021af465 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025010817-3.12release.conda + sha256: 1faa8dea2f87c25b20f467758a46589d2d464d8367fda4fa7fa61c73120b62f9 + md5: be84f3b39ee757dd73d27ac241c37d5a depends: - - max-core ==25.1.0.dev2025010705 release + - max-core ==25.1.0.dev2025010817 release - python 3.12.* - fastapi - httpx @@ -6035,18 +6034,18 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 128068854 - timestamp: 1736231934342 + size: 128047180 + timestamp: 1736357045243 - kind: conda name: max-python - version: 25.1.0.dev2025010705 + version: 25.1.0.dev2025010817 build: 3.12release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025010705-3.12release.conda - sha256: 29812e40f9474a260aeab5d76253ffd35a9feecaff301b7e2895e755a61932ce - md5: 7811e97d595835fe8f312c1b7d2ccfc1 + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025010817-3.12release.conda + sha256: c8b10ed04f57bc9a9e67d447ad97404ea06f3efbc903dced4723f3828c93ab2c + md5: aa8c692e6393c51283419173f7cb69a2 depends: - - max-core ==25.1.0.dev2025010705 release + - max-core ==25.1.0.dev2025010817 release - python 3.12.* - fastapi - httpx @@ -6069,17 +6068,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 110696918 - timestamp: 1736227147667 + size: 110680624 + timestamp: 1736357278972 - kind: conda name: mblack - version: 25.1.0.dev2025010705 + version: 25.1.0.dev2025010817 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025010705-release.conda - sha256: 0ef71e28927a9e4ce6c3b91929581483352b024972a0c267de613590684ac38a - md5: 32936fc5667f32a465daf218c9c6decb + url: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025010817-release.conda + sha256: 8bc21a826d3edc5a8719deeeadcee5b3fc8fbd83313ce2c7ebc8c620075608e1 + md5: ee664fe2390706d36d2d60b1f2bd69df depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -6089,8 +6088,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130819 - timestamp: 1736227019267 + size: 130813 + timestamp: 1736357145814 - kind: conda name: mdurl version: 0.1.2 @@ -6109,21 +6108,21 @@ packages: timestamp: 1733255681319 - kind: conda name: mojo-jupyter - version: 25.1.0.dev2025010705 + version: 25.1.0.dev2025010817 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025010705-release.conda - sha256: 5dca1179e4a37aa94b597fdb4c9d758b071f9ab3acc72ad525290c590db6b8c7 - md5: 6cc10303055ec07e344cb2a7bfdb493f + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025010817-release.conda + sha256: a92d02809c43a9a92abc363e69396738f6c9802c12d8827cc008d316cea4e107 + md5: 0533034ac307140f160cf43c5f36b2ed depends: - - max-core ==25.1.0.dev2025010705 release + - max-core ==25.1.0.dev2025010817 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22937 - timestamp: 1736227019268 + size: 22926 + timestamp: 1736357145815 - kind: conda name: multidict version: 6.1.0 @@ -7278,6 +7277,7 @@ packages: depends: - python >=3.9 license: BSD-2-Clause + license_family: BSD size: 888600 timestamp: 1736243563082 - kind: conda @@ -7988,12 +7988,12 @@ packages: timestamp: 1734415467047 - kind: conda name: safetensors - version: 0.5.0 + version: 0.5.1 build: py312h12e396e_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/safetensors-0.5.0-py312h12e396e_0.conda - sha256: f9d0a4fbfbd2bcded116b81afd69d00aa5d5bac0d431dd47737cec1b1d24c2e2 - md5: 4b33e7c3e9bbc3936e08150fc9e17708 + url: https://conda.anaconda.org/conda-forge/linux-64/safetensors-0.5.1-py312h12e396e_0.conda + sha256: 61a4a49bc98a7b529c7c9e2af9be1dc3350b8ea1c78f985e8a051543e8845ffa + md5: 19b54f64e926aca46d0cc2ff0ecf4f34 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -8003,16 +8003,16 @@ packages: - __glibc >=2.17 license: Apache-2.0 license_family: APACHE - size: 424699 - timestamp: 1735917812729 + size: 424642 + timestamp: 1736278244485 - kind: conda name: safetensors - version: 0.5.0 + version: 0.5.1 build: py312h8cbf658_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/safetensors-0.5.0-py312h8cbf658_0.conda - sha256: aee581ce5c744f81ac4848b1810a88a750041ef91da646234f75092a8b4e06d1 - md5: 9c317f54bd3c95a830e98b7baee11ea9 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/safetensors-0.5.1-py312h8cbf658_0.conda + sha256: ee66da0efb1d6897ad74156cb115277dfb8ca7f6c8bdfb17bd6a6fb205495622 + md5: f91072f99af78ed0c1941ba5d6f30cf8 depends: - libgcc >=13 - python >=3.12,<3.13.0a0 @@ -8022,16 +8022,16 @@ packages: - __glibc >=2.17 license: Apache-2.0 license_family: APACHE - size: 408792 - timestamp: 1735917879258 + size: 409549 + timestamp: 1736278357702 - kind: conda name: safetensors - version: 0.5.0 + version: 0.5.1 build: py312hcd83bfe_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/safetensors-0.5.0-py312hcd83bfe_0.conda - sha256: 8992f78362793a465c3009be2fd80582c93e2151bc17d07ebd39ce7af757358a - md5: acbbbac2271653f4914cef842a84190f + url: https://conda.anaconda.org/conda-forge/osx-arm64/safetensors-0.5.1-py312hcd83bfe_0.conda + sha256: e61cbac0c1b38731543a600e2e40c4cc686e5e565f6c9809d5dcc467e2e8f220 + md5: d12e134445366752e52acec1a86c845f depends: - __osx >=11.0 - python >=3.12,<3.13.0a0 @@ -8041,8 +8041,8 @@ packages: - __osx >=11.0 license: Apache-2.0 license_family: APACHE - size: 377533 - timestamp: 1735918206452 + size: 378562 + timestamp: 1736278448037 - kind: conda name: shellingham version: 1.5.4 diff --git a/magic.lock b/magic.lock index e015b725a8..737e2e299b 100644 --- a/magic.lock +++ b/magic.lock @@ -64,7 +64,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/httptools-0.6.4-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.27.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_1.conda @@ -110,7 +110,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.28-pthreads_h94d23a6_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-h081d1f1_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.44-hadc24fc_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.45-h943b412_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda @@ -132,12 +132,12 @@ 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-25.1.0.dev2025010705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025010705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025010705-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025010705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025010817-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025010817-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025010817-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025010817-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-25.1.0.dev2025010705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025010817-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 @@ -189,7 +189,7 @@ environments: - 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.10-hb5b8611_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/safetensors-0.5.0-py312h12e396e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/safetensors-0.5.1-py312h12e396e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-h8bd8927_1.conda @@ -282,7 +282,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/httptools-0.6.4-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.27.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda @@ -329,7 +329,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.28-pthreads_h9d3fd7e_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-hfc78867_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.44-hc4a20ef_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.45-hec79eb8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.3-h44a3b7b_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.20-h68df207_0.conda @@ -351,12 +351,12 @@ 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-25.1.0.dev2025010705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025010705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025010705-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025010705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025010817-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025010817-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025010817-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025010817-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-25.1.0.dev2025010705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025010817-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 @@ -408,7 +408,7 @@ environments: - 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.10-h5df210e_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/safetensors-0.5.0-py312h8cbf658_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/safetensors-0.5.1-py312h8cbf658_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-hd4fb6f5_1.conda @@ -500,7 +500,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/httptools-0.6.4-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.27.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda @@ -542,7 +542,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.64.0-h6d7220d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.28-openmp_hf332438_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-h636d7b7_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.44-hc14010f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.45-h3783ad8_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.3-h3bd63a1_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h07bc746_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda @@ -561,12 +561,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-25.1.0.dev2025010705-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025010705-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025010705-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025010705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025010817-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025010817-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025010817-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025010817-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-25.1.0.dev2025010705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025010817-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 @@ -617,7 +617,7 @@ environments: - 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.5.0-py312hcd83bfe_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/safetensors-0.5.1-py312hcd83bfe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-h98b9ce2_1.conda @@ -2748,14 +2748,13 @@ packages: timestamp: 1733663449209 - kind: conda name: huggingface_hub - version: 0.26.5 - build: pyhd8ed1ab_1 - build_number: 1 + version: 0.27.1 + build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.5-pyhd8ed1ab_1.conda - sha256: 0c75532d914a04c73222be298ed2c6868739dd475b1b1a9137c52abe79873952 - md5: 73937038e21117fe401f8ea64fbaeacc + url: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.27.1-pyhd8ed1ab_0.conda + sha256: 4597d7aa720f4acdddacc27b3f9e8d4336cb79477c53aee2d7ab96d136169cdb + md5: 8c9a53ecd0c3c278efbdac567dd12ed0 depends: - filelock - fsspec >=2023.5.0 @@ -2768,8 +2767,8 @@ packages: - typing_extensions >=3.7.4.3 license: Apache-2.0 license_family: APACHE - size: 275466 - timestamp: 1733852454004 + size: 278363 + timestamp: 1736350219225 - kind: conda name: hyperframe version: 6.0.1 @@ -4940,47 +4939,47 @@ packages: timestamp: 1735685495511 - kind: conda name: libpng - version: 1.6.44 - build: hadc24fc_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.44-hadc24fc_0.conda - sha256: e5b14f7a01c2db4362d8591f42f82f336ed48d5e4079e4d1f65d0c2a3637ea78 - md5: f4cc49d7aa68316213e4b12be35308d1 + version: 1.6.45 + build: h3783ad8_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.45-h3783ad8_0.conda + sha256: ddcc81c049b32fb5eb3ac1f9a6d3a589c08325c8ec6f89eb912208b19330d68c + md5: d554c806d065b1763cb9e1cb1d25741d depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 + - __osx >=11.0 - libzlib >=1.3.1,<2.0a0 license: zlib-acknowledgement - size: 290661 - timestamp: 1726234747153 + size: 263151 + timestamp: 1736339184358 - kind: conda name: libpng - version: 1.6.44 - build: hc14010f_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.44-hc14010f_0.conda - sha256: 38f8759a3eb8060deabd4db41f0f023514d853e46ddcbd0ba21768fc4e563bb1 - md5: fb36e93f0ea6a6f5d2b99984f34b049e + version: 1.6.45 + build: h943b412_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.45-h943b412_0.conda + sha256: b8f5b5ba9a14dedf7c97c01300de492b1b52b68eacbc3249a13fdbfa82349a2f + md5: 85cbdaacad93808395ac295b5667d25b depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 - libzlib >=1.3.1,<2.0a0 license: zlib-acknowledgement - size: 263385 - timestamp: 1726234714421 + size: 289426 + timestamp: 1736339058310 - kind: conda name: libpng - version: 1.6.44 - build: hc4a20ef_0 + version: 1.6.45 + build: hec79eb8_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.44-hc4a20ef_0.conda - sha256: 23b5ce15cf9c6017641a8396bab00ae807dd9f662718cfa7f61de114d0c97647 - md5: 5d25802b25fcc7419fa13e21affaeb3a + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.45-hec79eb8_0.conda + sha256: a06daa523a0d5775acb96e6e3f083adc2ab1383eb8f664513dbc663f439c9cca + md5: 9a8716c16b40acc7148263de1d0a403b depends: - libgcc >=13 - libzlib >=1.3.1,<2.0a0 license: zlib-acknowledgement - size: 294907 - timestamp: 1726236639270 + size: 299051 + timestamp: 1736344007986 - kind: conda name: libprotobuf version: 5.28.3 @@ -5927,76 +5926,76 @@ packages: timestamp: 1733219945697 - kind: conda name: max - version: 25.1.0.dev2025010705 + version: 25.1.0.dev2025010817 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025010705-release.conda - sha256: 4f71937f851b3b8b20a6ece6ba12b390ba0d26caec64282cc85db4b3aa556157 - md5: e5cf52dd6e155fff57a8a27101b8a331 - depends: - - max-core ==25.1.0.dev2025010705 release - - max-python >=25.1.0.dev2025010705,<26.0a0 - - mojo-jupyter ==25.1.0.dev2025010705 release - - mblack ==25.1.0.dev2025010705 release + url: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025010817-release.conda + sha256: 4ce81189e26dd06f188129580db0464f8ee9a081e195dad7082b2fa25fcf738e + md5: b46d770a5f45597ffc008bd224d8e91c + depends: + - max-core ==25.1.0.dev2025010817 release + - max-python >=25.1.0.dev2025010817,<26.0a0 + - mojo-jupyter ==25.1.0.dev2025010817 release + - mblack ==25.1.0.dev2025010817 release license: LicenseRef-Modular-Proprietary - size: 9923 - timestamp: 1736227019263 + size: 9922 + timestamp: 1736357145809 - kind: conda name: max-core - version: 25.1.0.dev2025010705 + version: 25.1.0.dev2025010817 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025010705-release.conda - sha256: 57134626c86869f5e0b86172330a5579e2da6b576a58f5af56c27354b820c03e - md5: b2853511eb0e0871e7f28c00a63807d8 + url: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025010817-release.conda + sha256: 5459a1f6c379b01231649212ca7f5062c49208b5c0b2b17047b55011872727c2 + md5: 5bbb293b5216b098c424e7602823a460 depends: - - mblack ==25.1.0.dev2025010705 release + - mblack ==25.1.0.dev2025010817 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 247227693 - timestamp: 1736227019261 + size: 247646542 + timestamp: 1736357145807 - kind: conda name: max-core - version: 25.1.0.dev2025010705 + version: 25.1.0.dev2025010817 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025010705-release.conda - sha256: 533dee921a80b6313d09c5eb2fddbe756794c89cce36e236afaa66bc6278b692 - md5: 0949e8de33bf8292b9c11bbcbc6bfb9e + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025010817-release.conda + sha256: 18715c3fc8071d5eeb9f1893512fe65967919e9900738423958a5cb4f09148da + md5: 4a7b6e800f8fdabf0498727c1bff57d3 depends: - - mblack ==25.1.0.dev2025010705 release + - mblack ==25.1.0.dev2025010817 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 251241180 - timestamp: 1736231934331 + size: 251608988 + timestamp: 1736357045232 - kind: conda name: max-core - version: 25.1.0.dev2025010705 + version: 25.1.0.dev2025010817 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025010705-release.conda - sha256: 5e44a91c7f08caad35255918dc8a370931eeff635f0cd93a240fa884996f2f46 - md5: d3a439dc2f5637aa1cfdf26fbe0a7e83 + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025010817-release.conda + sha256: 5a23bdc48d6fe2cfe439097b7a0fc0f1bd2b23be081478638ef4b945267d8015 + md5: 1f54b615e5199ac268f123c89cfbabda depends: - - mblack ==25.1.0.dev2025010705 release + - mblack ==25.1.0.dev2025010817 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 208980248 - timestamp: 1736227147664 + size: 209267317 + timestamp: 1736357278969 - kind: conda name: max-python - version: 25.1.0.dev2025010705 + version: 25.1.0.dev2025010817 build: 3.12release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025010705-3.12release.conda - sha256: a3072934203369556802b32afe2c7b3b70383ce910e45fff41330ece05d385bf - md5: 5c9ca83a2cd807b07247873216a76317 + url: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025010817-3.12release.conda + sha256: 7bd73eb5b2c8f796bb2bf947e68b46f9fa0302c1999905321bd18c453be5d410 + md5: 58d7a8476c07a36c0412fcd983faebfc depends: - - max-core ==25.1.0.dev2025010705 release + - max-core ==25.1.0.dev2025010817 release - python 3.12.* - fastapi - httpx @@ -6019,18 +6018,18 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 124176244 - timestamp: 1736227019271 + size: 124309678 + timestamp: 1736357145817 - kind: conda name: max-python - version: 25.1.0.dev2025010705 + version: 25.1.0.dev2025010817 build: 3.12release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025010705-3.12release.conda - sha256: b7e6bc5c4acb7803626e494139aca2e1b997f588e8b8d44bd9165ef55e05048a - md5: e4b5ecb54c41900473643742021af465 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025010817-3.12release.conda + sha256: 1faa8dea2f87c25b20f467758a46589d2d464d8367fda4fa7fa61c73120b62f9 + md5: be84f3b39ee757dd73d27ac241c37d5a depends: - - max-core ==25.1.0.dev2025010705 release + - max-core ==25.1.0.dev2025010817 release - python 3.12.* - fastapi - httpx @@ -6053,18 +6052,18 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 128068854 - timestamp: 1736231934342 + size: 128047180 + timestamp: 1736357045243 - kind: conda name: max-python - version: 25.1.0.dev2025010705 + version: 25.1.0.dev2025010817 build: 3.12release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025010705-3.12release.conda - sha256: 29812e40f9474a260aeab5d76253ffd35a9feecaff301b7e2895e755a61932ce - md5: 7811e97d595835fe8f312c1b7d2ccfc1 + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025010817-3.12release.conda + sha256: c8b10ed04f57bc9a9e67d447ad97404ea06f3efbc903dced4723f3828c93ab2c + md5: aa8c692e6393c51283419173f7cb69a2 depends: - - max-core ==25.1.0.dev2025010705 release + - max-core ==25.1.0.dev2025010817 release - python 3.12.* - fastapi - httpx @@ -6087,17 +6086,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 110696918 - timestamp: 1736227147667 + size: 110680624 + timestamp: 1736357278972 - kind: conda name: mblack - version: 25.1.0.dev2025010705 + version: 25.1.0.dev2025010817 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025010705-release.conda - sha256: 0ef71e28927a9e4ce6c3b91929581483352b024972a0c267de613590684ac38a - md5: 32936fc5667f32a465daf218c9c6decb + url: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025010817-release.conda + sha256: 8bc21a826d3edc5a8719deeeadcee5b3fc8fbd83313ce2c7ebc8c620075608e1 + md5: ee664fe2390706d36d2d60b1f2bd69df depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -6107,8 +6106,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130819 - timestamp: 1736227019267 + size: 130813 + timestamp: 1736357145814 - kind: conda name: mdurl version: 0.1.2 @@ -6127,21 +6126,21 @@ packages: timestamp: 1733255681319 - kind: conda name: mojo-jupyter - version: 25.1.0.dev2025010705 + version: 25.1.0.dev2025010817 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025010705-release.conda - sha256: 5dca1179e4a37aa94b597fdb4c9d758b071f9ab3acc72ad525290c590db6b8c7 - md5: 6cc10303055ec07e344cb2a7bfdb493f + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025010817-release.conda + sha256: a92d02809c43a9a92abc363e69396738f6c9802c12d8827cc008d316cea4e107 + md5: 0533034ac307140f160cf43c5f36b2ed depends: - - max-core ==25.1.0.dev2025010705 release + - max-core ==25.1.0.dev2025010817 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22937 - timestamp: 1736227019268 + size: 22926 + timestamp: 1736357145815 - kind: conda name: multidict version: 6.1.0 @@ -7296,6 +7295,7 @@ packages: depends: - python >=3.9 license: BSD-2-Clause + license_family: BSD size: 888600 timestamp: 1736243563082 - kind: conda @@ -8006,12 +8006,12 @@ packages: timestamp: 1734415467047 - kind: conda name: safetensors - version: 0.5.0 + version: 0.5.1 build: py312h12e396e_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/safetensors-0.5.0-py312h12e396e_0.conda - sha256: f9d0a4fbfbd2bcded116b81afd69d00aa5d5bac0d431dd47737cec1b1d24c2e2 - md5: 4b33e7c3e9bbc3936e08150fc9e17708 + url: https://conda.anaconda.org/conda-forge/linux-64/safetensors-0.5.1-py312h12e396e_0.conda + sha256: 61a4a49bc98a7b529c7c9e2af9be1dc3350b8ea1c78f985e8a051543e8845ffa + md5: 19b54f64e926aca46d0cc2ff0ecf4f34 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -8021,16 +8021,16 @@ packages: - __glibc >=2.17 license: Apache-2.0 license_family: APACHE - size: 424699 - timestamp: 1735917812729 + size: 424642 + timestamp: 1736278244485 - kind: conda name: safetensors - version: 0.5.0 + version: 0.5.1 build: py312h8cbf658_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/safetensors-0.5.0-py312h8cbf658_0.conda - sha256: aee581ce5c744f81ac4848b1810a88a750041ef91da646234f75092a8b4e06d1 - md5: 9c317f54bd3c95a830e98b7baee11ea9 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/safetensors-0.5.1-py312h8cbf658_0.conda + sha256: ee66da0efb1d6897ad74156cb115277dfb8ca7f6c8bdfb17bd6a6fb205495622 + md5: f91072f99af78ed0c1941ba5d6f30cf8 depends: - libgcc >=13 - python >=3.12,<3.13.0a0 @@ -8040,16 +8040,16 @@ packages: - __glibc >=2.17 license: Apache-2.0 license_family: APACHE - size: 408792 - timestamp: 1735917879258 + size: 409549 + timestamp: 1736278357702 - kind: conda name: safetensors - version: 0.5.0 + version: 0.5.1 build: py312hcd83bfe_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/safetensors-0.5.0-py312hcd83bfe_0.conda - sha256: 8992f78362793a465c3009be2fd80582c93e2151bc17d07ebd39ce7af757358a - md5: acbbbac2271653f4914cef842a84190f + url: https://conda.anaconda.org/conda-forge/osx-arm64/safetensors-0.5.1-py312hcd83bfe_0.conda + sha256: e61cbac0c1b38731543a600e2e40c4cc686e5e565f6c9809d5dcc467e2e8f220 + md5: d12e134445366752e52acec1a86c845f depends: - __osx >=11.0 - python >=3.12,<3.13.0a0 @@ -8059,8 +8059,8 @@ packages: - __osx >=11.0 license: Apache-2.0 license_family: APACHE - size: 377533 - timestamp: 1735918206452 + size: 378562 + timestamp: 1736278448037 - kind: conda name: shellingham version: 1.5.4 From 79c4236f2d6f149ccae2469fba888e2deacbddfc Mon Sep 17 00:00:00 2001 From: modularbot Date: Wed, 8 Jan 2025 23:45:31 +0000 Subject: [PATCH 174/509] Update lockfiles to point to latest nightly version: 25.1.0.dev2025010817 --- examples/life/magic.lock | 40 +++++++++++++++++++--------------------- 1 file changed, 19 insertions(+), 21 deletions(-) diff --git a/examples/life/magic.lock b/examples/life/magic.lock index 9d24a3a9a5..3a66c8dfbe 100644 --- a/examples/life/magic.lock +++ b/examples/life/magic.lock @@ -155,7 +155,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hf672d98_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-hc0a3c3a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libsystemd0-256.9-h0b6a36f_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsystemd0-257.2-h3dc2cb9_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libthrift-0.21.0-h0e7cc3e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hd9ff511_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.9.0-hb9d3cd8_1.conda @@ -431,7 +431,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libssh2-1.11.1-ha41c0db_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsystemd0-256.9-ha536d29_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsystemd0-257.2-h27834fc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libthrift-0.21.0-h154c74f_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.0-h88f7998_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.9.0-h86ecc28_1.conda @@ -6982,15 +6982,13 @@ packages: timestamp: 1729089498541 - kind: conda name: libsystemd0 - version: '256.9' - build: h0b6a36f_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libsystemd0-256.9-h0b6a36f_2.conda - sha256: 28e1a3c4bd242e7eb3bd0bcd35e558680d186e7a1d61482d371dde2a0f1bfb42 - md5: 135bbeb376345b6847c065115be4221a + version: '257.2' + build: h27834fc_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libsystemd0-257.2-h27834fc_0.conda + sha256: 7b95a42f507479c4e76855dbffe65a3b51fa5f1465649be00a1940dec6cdb9a8 + md5: 18fbe3093009820c6fb7d6f1c710fd66 depends: - - __glibc >=2.17,<3.0.a0 - libcap >=2.71,<2.72.0a0 - libgcc >=13 - libgcrypt-lib >=1.11.0,<2.0a0 @@ -6998,18 +6996,18 @@ packages: - lz4-c >=1.10.0,<1.11.0a0 - zstd >=1.5.6,<1.6.0a0 license: LGPL-2.1-or-later - size: 410566 - timestamp: 1733679350245 + size: 512091 + timestamp: 1736377189744 - kind: conda name: libsystemd0 - version: '256.9' - build: ha536d29_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libsystemd0-256.9-ha536d29_2.conda - sha256: 2cf3b22760674612fa13ad9748164dffc993d58dd3fc05c343b646ce31375af7 - md5: 5ef220ea7aa46bd59f83ac7afe14910b + version: '257.2' + build: h3dc2cb9_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libsystemd0-257.2-h3dc2cb9_0.conda + sha256: 03f532cae9ca0417b29ead19490a9fa0fa5e6ad73f1bfc7ea0d4d3bd4c41156e + md5: 40c12fdd396297db83f789722027f5ed depends: + - __glibc >=2.17,<3.0.a0 - libcap >=2.71,<2.72.0a0 - libgcc >=13 - libgcrypt-lib >=1.11.0,<2.0a0 @@ -7017,8 +7015,8 @@ packages: - lz4-c >=1.10.0,<1.11.0a0 - zstd >=1.5.6,<1.6.0a0 license: LGPL-2.1-or-later - size: 432708 - timestamp: 1733679350109 + size: 487652 + timestamp: 1736377129372 - kind: conda name: libthrift version: 0.21.0 From ed424609486d908f3d83c40628b570de4d2fdc42 Mon Sep 17 00:00:00 2001 From: martinvuyk <110240700+martinvuyk@users.noreply.github.com> Date: Wed, 8 Jan 2025 11:35:36 -0800 Subject: [PATCH 175/509] [External] [stdlib] Improve `startswith()` and `endswith()` (#53548) Improve `startswith()` and `endswith()` This changes these methods to take `StringSlice`, and simplifies their implementation on `String` and `StringLiteral` to simply delegate to `StringSlice`'s implementation of the same operation. Closes https://github.com/modularml/mojo/issues/3903. Solves the current CI failure with `check_licences.mojo` passing a `StringSlice` to `String.startswith()`. Co-authored-by: Connor Gray Closes modularml/mojo#3922 MODULAR_ORIG_COMMIT_REV_ID: 8b078da9d23edc4e118dc9854763e0fb69887fba --- stdlib/src/builtin/string_literal.mojo | 36 +++++++++------- stdlib/src/collections/string/string.mojo | 42 +++++++------------ .../src/collections/string/string_slice.mojo | 26 +++++------- 3 files changed, 45 insertions(+), 59 deletions(-) diff --git a/stdlib/src/builtin/string_literal.mojo b/stdlib/src/builtin/string_literal.mojo index c5af9cef8d..7fb34ade4e 100644 --- a/stdlib/src/builtin/string_literal.mojo +++ b/stdlib/src/builtin/string_literal.mojo @@ -832,33 +832,37 @@ struct StringLiteral( """ return str(self).center(width, fillchar) - fn startswith(self, prefix: String, start: Int = 0, end: Int = -1) -> Bool: - """Checks if the string literal starts with the specified prefix between start - and end positions. Returns True if found and False otherwise. + fn startswith( + self, prefix: StringSlice, start: Int = 0, end: Int = -1 + ) -> Bool: + """Checks if the string literal starts with the specified prefix between + start and end positions. Returns True if found and False otherwise. Args: - prefix: The prefix to check. - start: The start offset from which to check. - end: The end offset from which to check. + prefix: The prefix to check. + start: The start offset from which to check. + end: The end offset from which to check. Returns: - True if the self[start:end] is prefixed by the input prefix. + True if the `self[start:end]` is prefixed by the input prefix. """ - return str(self).startswith(prefix, start, end) + return self.as_string_slice().startswith(prefix, start, end) - fn endswith(self, suffix: String, start: Int = 0, end: Int = -1) -> Bool: - """Checks if the string literal end with the specified suffix between start - and end positions. Returns True if found and False otherwise. + fn endswith( + self, suffix: StringSlice, start: Int = 0, end: Int = -1 + ) -> Bool: + """Checks if the string literal end with the specified suffix between + start and end positions. Returns True if found and False otherwise. Args: - suffix: The suffix to check. - start: The start offset from which to check. - end: The end offset from which to check. + suffix: The suffix to check. + start: The start offset from which to check. + end: The end offset from which to check. Returns: - True if the self[start:end] is suffixed by the input suffix. + True if the `self[start:end]` is suffixed by the input suffix. """ - return str(self).endswith(suffix, start, end) + return self.as_string_slice().endswith(suffix, start, end) fn isdigit(self) -> Bool: """Returns True if all characters in the string literal are digits. diff --git a/stdlib/src/collections/string/string.mojo b/stdlib/src/collections/string/string.mojo index 7cbbd2a884..70e5ab003f 100644 --- a/stdlib/src/collections/string/string.mojo +++ b/stdlib/src/collections/string/string.mojo @@ -1888,50 +1888,36 @@ struct String( return to_uppercase(self) fn startswith( - ref self, prefix: String, start: Int = 0, end: Int = -1 + self, prefix: StringSlice, start: Int = 0, end: Int = -1 ) -> Bool: """Checks if the string starts with the specified prefix between start and end positions. Returns True if found and False otherwise. Args: - prefix: The prefix to check. - start: The start offset from which to check. - end: The end offset from which to check. + prefix: The prefix to check. + start: The start offset from which to check. + end: The end offset from which to check. Returns: - True if the self[start:end] is prefixed by the input prefix. + True if the `self[start:end]` is prefixed by the input prefix. """ - if end == -1: - return StringSlice[__origin_of(self)]( - ptr=self.unsafe_ptr() + start, - length=self.byte_length() - start, - ).startswith(prefix.as_string_slice()) + return self.as_string_slice().startswith(prefix, start, end) - return StringSlice[__origin_of(self)]( - ptr=self.unsafe_ptr() + start, length=end - start - ).startswith(prefix.as_string_slice()) - - fn endswith(self, suffix: String, start: Int = 0, end: Int = -1) -> Bool: + fn endswith( + self, suffix: StringSlice, start: Int = 0, end: Int = -1 + ) -> Bool: """Checks if the string end with the specified suffix between start and end positions. Returns True if found and False otherwise. Args: - suffix: The suffix to check. - start: The start offset from which to check. - end: The end offset from which to check. + suffix: The suffix to check. + start: The start offset from which to check. + end: The end offset from which to check. Returns: - True if the self[start:end] is suffixed by the input suffix. + True if the `self[start:end]` is suffixed by the input suffix. """ - if end == -1: - return StringSlice[__origin_of(self)]( - ptr=self.unsafe_ptr() + start, - length=self.byte_length() - start, - ).endswith(suffix.as_string_slice()) - - return StringSlice[__origin_of(self)]( - ptr=self.unsafe_ptr() + start, length=end - start - ).endswith(suffix.as_string_slice()) + return self.as_string_slice().endswith(suffix, start, end) fn removeprefix(self, prefix: String, /) -> String: """Returns a new string with the prefix removed if it was present. diff --git a/stdlib/src/collections/string/string_slice.mojo b/stdlib/src/collections/string/string_slice.mojo index 977f5b7f76..881b2df713 100644 --- a/stdlib/src/collections/string/string_slice.mojo +++ b/stdlib/src/collections/string/string_slice.mojo @@ -279,11 +279,6 @@ struct StringSlice[mut: Bool, //, origin: Origin[mut]]( # StringLiteral is guaranteed to use UTF-8 encoding. # FIXME(MSTDL-160): # Ensure StringLiteral _actually_ always uses UTF-8 encoding. - # FIXME: this gets practically stuck at compile time - # debug_assert( - # _is_valid_utf8(lit.as_bytes()), - # "StringLiteral doesn't have valid UTF-8 encoding", - # ) self = StaticString(unsafe_from_utf8=lit.as_bytes()) @always_inline @@ -296,7 +291,14 @@ struct StringSlice[mut: Bool, //, origin: Origin[mut]]( Safety: `unsafe_from_utf8` MUST be valid UTF-8 encoded data. """ - + # FIXME(#3706): can't run at compile time + # TODO(MOCO-1525): + # Support skipping UTF-8 during comptime evaluations, or support + # the necessary SIMD intrinsics to allow this to evaluate at compile + # time. + # debug_assert( + # _is_valid_utf8(value.as_bytes()), "value is not valid utf8" + # ) self._slice = unsafe_from_utf8 fn __init__(out self, *, unsafe_from_utf8_strref: StringRef): @@ -359,15 +361,6 @@ struct StringSlice[mut: Bool, //, origin: Origin[mut]]( Args: value: The string value. """ - - # TODO(MOCO-1525): - # Support skipping UTF-8 during comptime evaluations, or support - # the necessary SIMD intrinsics to allow this to evaluate at compile - # time. - # debug_assert( - # _is_valid_utf8(value.as_bytes()), "value is not valid utf8" - # ) - self = StringSlice[O](unsafe_from_utf8=value.as_bytes()) # ===-------------------------------------------------------------------===# @@ -877,6 +870,7 @@ struct StringSlice[mut: Bool, //, origin: Origin[mut]]( """ if end == -1: return self.find(prefix, start) == start + # FIXME: use normalize_index return StringSlice[origin]( ptr=self.unsafe_ptr() + start, length=end - start ).startswith(prefix) @@ -899,6 +893,7 @@ struct StringSlice[mut: Bool, //, origin: Origin[mut]]( return False if end == -1: return self.rfind(suffix, start) + len(suffix) == len(self) + # FIXME: use normalize_index return StringSlice[origin]( ptr=self.unsafe_ptr() + start, length=end - start ).endswith(suffix) @@ -915,6 +910,7 @@ struct StringSlice[mut: Bool, //, origin: Origin[mut]]( A `StringSlice` borrowed from the current string containing the characters of the slice starting at start. """ + # FIXME: use normalize_index var self_len = self.byte_length() From dbd90f692459f12f35e7c26ff01bf7c4d9c8ce5d Mon Sep 17 00:00:00 2001 From: modularbot <116839051+modularbot@users.noreply.github.com> Date: Wed, 8 Jan 2025 11:35:47 -0800 Subject: [PATCH 176/509] [External] [docs] update broken link to nightly branch (#53524) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [External] [docs] update broken link to nightly branch - The link to the example of implementing operators for a custom type was broken, as it pointed to the `main` branch. - Updated the URL to point to the correct `nightly` branch, ensuring the link now leads to the correct example: https://github.com/modularml/mojo/tree/nightly/examples/operators - The change was made on the page: https://docs.modular-dev.com/nightly/mojo/manual/operators/#an-example-of-implementing-operators-for-a-custom-type ORIGINAL_AUTHOR=Miguel Cárdenas <78029302+miguelcsx@users.noreply.github.com> PUBLIC_PR_LINK=modularml/mojo#3885 Co-authored-by: Miguel Cárdenas <78029302+miguelcsx@users.noreply.github.com> Closes modularml/mojo#3885 MODULAR_ORIG_COMMIT_REV_ID: 24c0200789225bff5266771ede4f8994f3a94260 --- docs/manual/operators.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/manual/operators.mdx b/docs/manual/operators.mdx index a11cbd2cd8..b4ac20d127 100644 --- a/docs/manual/operators.mdx +++ b/docs/manual/operators.mdx @@ -1030,7 +1030,7 @@ operations like printing complex values. We'll also allow mixing `Complex` and This example builds our `Complex` struct incrementally. You can also find the [complete example in the public Mojo GitHub -repo](https://github.com/modularml/mojo/tree/main/examples/operators). +repo](https://github.com/modularml/mojo/tree/nightly/examples/operators). :::note From b19e2fdbbe14199bb7316fb911b46fe523883079 Mon Sep 17 00:00:00 2001 From: Connor Gray Date: Wed, 8 Jan 2025 16:56:54 -0600 Subject: [PATCH 177/509] [stdlib] cleanup: Remove `@implicit` from `Tuple` and `ListLiteral` variadic init These don't seem to be used widely, and can cause problems with overload resolution, since they can implicit convert from essentially anything. I specifically ran into the problem that: PythonObject("Foo") was ambiguous if you have both: PythonObject.__init__(ListLiteral[T]) PythonObject.__init__(StringSlice) because both are 1 implicit conversion step away from a StringLiteral. MODULAR_ORIG_COMMIT_REV_ID: c13da6ad20f728a044c7762508f66c213fcbdad8 --- stdlib/src/builtin/builtin_list.mojo | 1 - stdlib/src/builtin/tuple.mojo | 1 - 2 files changed, 2 deletions(-) diff --git a/stdlib/src/builtin/builtin_list.mojo b/stdlib/src/builtin/builtin_list.mojo index 50e63d02d2..c24ecb8d25 100644 --- a/stdlib/src/builtin/builtin_list.mojo +++ b/stdlib/src/builtin/builtin_list.mojo @@ -39,7 +39,6 @@ struct ListLiteral[*Ts: CollectionElement](Sized, CollectionElement): # ===-------------------------------------------------------------------===# @always_inline - @implicit fn __init__(out self, owned *args: *Ts): """Construct the list literal from the given values. diff --git a/stdlib/src/builtin/tuple.mojo b/stdlib/src/builtin/tuple.mojo index b18221e3b3..ea6ad3390c 100644 --- a/stdlib/src/builtin/tuple.mojo +++ b/stdlib/src/builtin/tuple.mojo @@ -48,7 +48,6 @@ struct Tuple[*element_types: CollectionElement](Sized, CollectionElement): """The underlying storage for the tuple.""" @always_inline("nodebug") - @implicit fn __init__(out self, owned *args: *element_types): """Construct the tuple. From 7e6963370aca3b85c5d2b84d256fb0d6820fd6a7 Mon Sep 17 00:00:00 2001 From: Connor Gray Date: Wed, 8 Jan 2025 19:01:49 -0600 Subject: [PATCH 178/509] [stdlib] polish: Change almost all `read arg: String` to `StringSlice` This PR changes almost all uses of immutable `String` reference arguments to instead take a `StringSlice`. This gives more flexibility to callers, who may have string data not locally stored as a heap-allocated `String` (for example, a string literal or borrowed string data). Exceptions: * Functions that pass `String` data to C, and so depend on the NUL terminator character that `String` guarantees. Removed: * `FileHandle.__init__(path: String, mode: String)` - Redundant with existing StringSlice-taking initializer * `PythonObject.__init__(StringLiteral)` * `PythonObject.__init__(StringRef)` Misc: * string_literal.mojo: Change some uses of `str(self).foo()` to `self.as_string_slice().foo()` to avoid unnecessary allocations. * Change calls to `String.unsafe_ptr()` to `String.unsafe_cstr_ptr()`, to make it clear that these depend on the NUL terminator. This will act as a speedbump to anyone trying to change these instancdes of `String` to `StringSlice` who might unknowningly not realize `StringSlice` does NOT guarantee a NUL terminator. * Avoid unnecessary intermediate `String` allocations in code like: `string += foo + bar` where the RHS `foo + bar` could copy / reallocate the `foo` `String`. MODULAR_ORIG_COMMIT_REV_ID: 52a716fa25520a268e3aff37349d1f2adf1fe00d --- stdlib/src/builtin/dtype.mojo | 47 ++++++++++--------- stdlib/src/builtin/error.mojo | 1 + stdlib/src/builtin/file.mojo | 13 +---- stdlib/src/builtin/int.mojo | 3 +- stdlib/src/builtin/io.mojo | 3 +- stdlib/src/builtin/string_literal.mojo | 14 +++--- stdlib/src/collections/string/_unicode.mojo | 8 ++-- stdlib/src/collections/string/string.mojo | 26 +++++----- stdlib/src/os/env.mojo | 10 ++-- stdlib/src/os/os.mojo | 2 +- stdlib/src/os/path/path.mojo | 7 ++- stdlib/src/pathlib/path.mojo | 16 ++++--- stdlib/src/python/python.mojo | 4 +- stdlib/src/python/python_object.mojo | 28 +++++++---- stdlib/src/tempfile/tempfile.mojo | 3 +- .../collections/string/test_string_slice.mojo | 2 +- stdlib/test/python/test_python_object.mojo | 13 ----- 17 files changed, 101 insertions(+), 99 deletions(-) diff --git a/stdlib/src/builtin/dtype.mojo b/stdlib/src/builtin/dtype.mojo index 48bfffaafd..f46f28a89a 100644 --- a/stdlib/src/builtin/dtype.mojo +++ b/stdlib/src/builtin/dtype.mojo @@ -16,6 +16,7 @@ These are Mojo built-ins, so you don't need to import them. """ from collections import KeyElement +from collections.string import StringSlice from hashlib._hasher import _HashableWithHasher, _Hasher from sys import bitwidthof, os_is_windows, sizeof @@ -166,53 +167,53 @@ struct DType( self.value = value @staticmethod - fn _from_str(str: String) -> DType: + fn _from_str(str: StringSlice) -> DType: """Construct a DType from a string. Args: str: The name of the DType. """ - if str.startswith(String("DType.")): - return Self._from_str(str.removeprefix("DType.")) - elif str == String("bool"): + if str.startswith("DType."): + return Self._from_str(String(str).removeprefix("DType.")) + elif str == "bool": return DType.bool - elif str == String("int8"): + elif str == "int8": return DType.int8 - elif str == String("uint8"): + elif str == "uint8": return DType.uint8 - elif str == String("int16"): + elif str == "int16": return DType.int16 - elif str == String("uint16"): + elif str == "uint16": return DType.uint16 - elif str == String("int32"): + elif str == "int32": return DType.int32 - elif str == String("uint32"): + elif str == "uint32": return DType.uint32 - elif str == String("int64"): + elif str == "int64": return DType.int64 - elif str == String("uint64"): + elif str == "uint64": return DType.uint64 - elif str == String("index"): + elif str == "index": return DType.index - elif str == String("float8e5m2"): + elif str == "float8e5m2": return DType.float8e5m2 - elif str == String("float8e5m2fnuz"): + elif str == "float8e5m2fnuz": return DType.float8e5m2fnuz - elif str == String("float8e4m3"): + elif str == "float8e4m3": return DType.float8e4m3 - elif str == String("float8e4m3fnuz"): + elif str == "float8e4m3fnuz": return DType.float8e4m3fnuz - elif str == String("bfloat16"): + elif str == "bfloat16": return DType.bfloat16 - elif str == String("float16"): + elif str == "float16": return DType.float16 - elif str == String("float32"): + elif str == "float32": return DType.float32 - elif str == String("float64"): + elif str == "float64": return DType.float64 - elif str == String("tensor_float32"): + elif str == "tensor_float32": return DType.tensor_float32 - elif str == String("invalid"): + elif str == "invalid": return DType.invalid else: return DType.invalid diff --git a/stdlib/src/builtin/error.mojo b/stdlib/src/builtin/error.mojo index 1ddae435ff..6d78fa5191 100644 --- a/stdlib/src/builtin/error.mojo +++ b/stdlib/src/builtin/error.mojo @@ -20,6 +20,7 @@ from sys.ffi import c_char from memory import UnsafePointer, memcpy from memory.memory import _free +from collections.string import StringSlice from utils import StringRef diff --git a/stdlib/src/builtin/file.mojo b/stdlib/src/builtin/file.mojo index c622989871..c2bbdf295c 100644 --- a/stdlib/src/builtin/file.mojo +++ b/stdlib/src/builtin/file.mojo @@ -78,17 +78,8 @@ struct FileHandle: """Default constructor.""" self.handle = OpaquePointer() - fn __init__(out self, path: String, mode: String) raises: - """Construct the FileHandle using the file path and mode. - - Args: - path: The file path. - mode: The mode to open the file in (the mode can be "r" or "w" or "rw"). - """ - self = Self(path.as_string_slice(), mode.as_string_slice()) - fn __init__(out self, path: StringSlice, mode: StringSlice) raises: - """Construct the FileHandle using the file path and string. + """Construct the FileHandle using the file path and mode. Args: path: The file path. @@ -482,7 +473,7 @@ struct FileHandle: fn open[ PathLike: os.PathLike -](path: PathLike, mode: String) raises -> FileHandle: +](path: PathLike, mode: StringSlice) raises -> FileHandle: """Opens the file specified by path using the mode provided, returning a FileHandle. diff --git a/stdlib/src/builtin/int.mojo b/stdlib/src/builtin/int.mojo index 698722f6f1..0f271cad42 100644 --- a/stdlib/src/builtin/int.mojo +++ b/stdlib/src/builtin/int.mojo @@ -16,6 +16,7 @@ These are Mojo built-ins, so you don't need to import them. """ from collections import KeyElement +from collections.string import StringSlice from collections.string.string import ( _calc_initial_buffer_size_int32, _calc_initial_buffer_size_int64, @@ -240,7 +241,7 @@ fn int[T: IntableRaising](value: T) raises -> Int: return value.__int__() -fn int(value: String, base: Int = 10) raises -> Int: +fn int(value: StringSlice, base: Int = 10) raises -> Int: """Parses and returns the given string as an integer in the given base. If base is set to 0, the string is parsed as an Integer literal, with the diff --git a/stdlib/src/builtin/io.mojo b/stdlib/src/builtin/io.mojo index a409c35c62..4e4c4afff6 100644 --- a/stdlib/src/builtin/io.mojo +++ b/stdlib/src/builtin/io.mojo @@ -16,6 +16,7 @@ These are Mojo built-ins, so you don't need to import them. """ from collections import InlineArray +from collections.string import StringSlice from sys import _libc as libc from sys import ( bitwidthof, @@ -94,7 +95,7 @@ struct _fdopen[mode: StringLiteral = "a"]: """ return self.read_until_delimiter("\n") - fn read_until_delimiter(self, delimiter: String) -> String: + fn read_until_delimiter(self, delimiter: StringSlice) -> String: """Reads an entire line from a stream, up to the `delimiter`. Does not include the delimiter in the result. diff --git a/stdlib/src/builtin/string_literal.mojo b/stdlib/src/builtin/string_literal.mojo index 7fb34ade4e..a6fa37dd03 100644 --- a/stdlib/src/builtin/string_literal.mojo +++ b/stdlib/src/builtin/string_literal.mojo @@ -694,7 +694,7 @@ struct StringLiteral( elems.each[add_elt]() return result - fn split(self, sep: String, maxsplit: Int = -1) raises -> List[String]: + fn split(self, sep: StringSlice, maxsplit: Int = -1) raises -> List[String]: """Split the string literal by a separator. Args: @@ -761,7 +761,7 @@ struct StringLiteral( """ return _to_string_list(self.as_string_slice().splitlines(keepends)) - fn count(self, substr: String) -> Int: + fn count(self, substr: StringSlice) -> Int: """Return the number of non-overlapping occurrences of substring `substr` in the string literal. @@ -908,7 +908,7 @@ struct StringLiteral( """ return String(self.lstrip().rstrip()) - fn strip(self, chars: String) -> String: + fn strip(self, chars: StringSlice) -> String: """Return a copy of the string literal with leading and trailing characters removed. @@ -921,7 +921,7 @@ struct StringLiteral( return String(self.lstrip(chars).rstrip(chars)) - fn rstrip(self, chars: String) -> String: + fn rstrip(self, chars: StringSlice) -> String: """Return a copy of the string literal with trailing characters removed. Args: @@ -940,9 +940,9 @@ struct StringLiteral( Returns: A copy of the string with no trailing whitespaces. """ - return String(str(self).rstrip()) + return String(self.as_string_slice().rstrip()) - fn lstrip(self, chars: String) -> String: + fn lstrip(self, chars: StringSlice) -> String: """Return a copy of the string with leading characters removed. Args: @@ -951,7 +951,7 @@ struct StringLiteral( Returns: A copy of the string with no leading characters. """ - return String(str(self).lstrip(chars)) + return String(self.as_string_slice().lstrip(chars)) fn lstrip(self) -> String: """Return a copy of the string with leading whitespaces removed. This diff --git a/stdlib/src/collections/string/_unicode.mojo b/stdlib/src/collections/string/_unicode.mojo index 69bb129418..f9b26ca604 100644 --- a/stdlib/src/collections/string/_unicode.mojo +++ b/stdlib/src/collections/string/_unicode.mojo @@ -54,7 +54,7 @@ fn _to_index[lookup: List[UInt32, **_]](rune: Int) -> Int: return cursor if b.load(cursor) == x else -1 -fn is_uppercase(s: String) -> Bool: +fn is_uppercase(s: StringSlice) -> Bool: """Returns True if all characters in the string are uppercase, and there is at least one cased character. @@ -84,7 +84,7 @@ fn is_uppercase(s: String) -> Bool: return found -fn is_lowercase(s: String) -> Bool: +fn is_lowercase(s: StringSlice) -> Bool: """Returns True if all characters in the string are lowercase, and there is at least one cased character. @@ -161,7 +161,7 @@ fn _write_rune(rune: UInt32, p: UnsafePointer[UInt8]) -> Int: return num_bytes -fn to_lowercase(s: String) -> String: +fn to_lowercase(s: StringSlice) -> String: """Returns a new string with all characters converted to uppercase. Args: @@ -206,7 +206,7 @@ fn to_lowercase(s: String) -> String: return String(list) -fn to_uppercase(s: String) -> String: +fn to_uppercase(s: StringSlice) -> String: """Returns a new string with all characters converted to uppercase. Args: diff --git a/stdlib/src/collections/string/string.mojo b/stdlib/src/collections/string/string.mojo index 70e5ab003f..d82435643f 100644 --- a/stdlib/src/collections/string/string.mojo +++ b/stdlib/src/collections/string/string.mojo @@ -628,7 +628,7 @@ fn _is_ascii_lowercase(c: UInt8) -> Bool: # ===----------------------------------------------------------------------=== # -fn _isspace(c: String) -> Bool: +fn _isspace(c: StringSlice) -> Bool: """Determines whether the given character is a whitespace character. This only respects the default "C" locale, i.e. returns True only if the @@ -1513,7 +1513,7 @@ struct String( """ return self.as_string_slice().count(substr) - fn __contains__(self, substr: String) -> Bool: + fn __contains__(self, substr: StringSlice) -> Bool: """Returns True if the substring is contained within the current string. Args: @@ -1522,9 +1522,9 @@ struct String( Returns: True if the string contains the substring. """ - return substr.as_string_slice() in self.as_string_slice() + return substr in self.as_string_slice() - fn find(self, substr: String, start: Int = 0) -> Int: + fn find(self, substr: StringSlice, start: Int = 0) -> Int: """Finds the offset of the first occurrence of `substr` starting at `start`. If not found, returns -1. @@ -1536,9 +1536,9 @@ struct String( The offset of `substr` relative to the beginning of the string. """ - return self.as_string_slice().find(substr.as_string_slice(), start) + return self.as_string_slice().find(substr, start) - fn rfind(self, substr: String, start: Int = 0) -> Int: + fn rfind(self, substr: StringSlice, start: Int = 0) -> Int: """Finds the offset of the last occurrence of `substr` starting at `start`. If not found, returns -1. @@ -1550,9 +1550,7 @@ struct String( The offset of `substr` relative to the beginning of the string. """ - return self.as_string_slice().rfind( - substr.as_string_slice(), start=start - ) + return self.as_string_slice().rfind(substr, start=start) fn isspace(self) -> Bool: """Determines whether every character in the given String is a @@ -1567,7 +1565,7 @@ struct String( """ return self.as_string_slice().isspace() - fn split(self, sep: String, maxsplit: Int = -1) raises -> List[String]: + fn split(self, sep: StringSlice, maxsplit: Int = -1) raises -> List[String]: """Split the string by a separator. Args: @@ -1708,7 +1706,7 @@ struct String( """ return _to_string_list(self.as_string_slice().splitlines(keepends)) - fn replace(self, old: String, new: String) -> String: + fn replace(self, old: StringSlice, new: StringSlice) -> String: """Return a copy of the string with all occurrences of substring `old` if replaced by `new`. @@ -1853,7 +1851,7 @@ struct String( """ hasher._update_with_bytes(self.unsafe_ptr(), self.byte_length()) - fn _interleave(self, val: String) -> String: + fn _interleave(self, val: StringSlice) -> String: var res = Self._buffer_type() var val_ptr = val.unsafe_ptr() var self_ptr = self.unsafe_ptr() @@ -1919,7 +1917,7 @@ struct String( """ return self.as_string_slice().endswith(suffix, start, end) - fn removeprefix(self, prefix: String, /) -> String: + fn removeprefix(self, prefix: StringSlice, /) -> String: """Returns a new string with the prefix removed if it was present. For example: @@ -1942,7 +1940,7 @@ struct String( return self[prefix.byte_length() :] return self - fn removesuffix(self, suffix: String, /) -> String: + fn removesuffix(self, suffix: StringSlice, /) -> String: """Returns a new string with the suffix removed if it was present. For example: diff --git a/stdlib/src/os/env.mojo b/stdlib/src/os/env.mojo index 9ffe0eb2d8..b0403ca378 100644 --- a/stdlib/src/os/env.mojo +++ b/stdlib/src/os/env.mojo @@ -48,7 +48,9 @@ fn setenv(name: String, value: String, overwrite: Bool = True) -> Bool: return False var status = external_call["setenv", Int32]( - name.unsafe_ptr(), value.unsafe_ptr(), Int32(1 if overwrite else 0) + name.unsafe_cstr_ptr(), + value.unsafe_cstr_ptr(), + Int32(1 if overwrite else 0), ) return status == 0 @@ -66,7 +68,7 @@ fn unsetenv(name: String) -> Bool: not os_is_windows(), "operating system must be Linux or macOS" ]() - return external_call["unsetenv", c_int](name.unsafe_ptr()) == 0 + return external_call["unsetenv", c_int](name.unsafe_cstr_ptr()) == 0 fn getenv(name: String, default: String = "") -> String: @@ -89,7 +91,9 @@ fn getenv(name: String, default: String = "") -> String: if not os_is_supported: return default - var ptr = external_call["getenv", UnsafePointer[UInt8]](name.unsafe_ptr()) + var ptr = external_call["getenv", UnsafePointer[UInt8]]( + name.unsafe_cstr_ptr() + ) if not ptr: return default return String(StringRef(ptr=ptr)) diff --git a/stdlib/src/os/os.mojo b/stdlib/src/os/os.mojo index e80fb30e54..3a8baa7aee 100644 --- a/stdlib/src/os/os.mojo +++ b/stdlib/src/os/os.mojo @@ -110,7 +110,7 @@ struct _DirHandle: raise "the directory '" + path + "' does not exist" self._handle = external_call["opendir", OpaquePointer]( - path.unsafe_ptr() + path.unsafe_cstr_ptr() ) if not self._handle: diff --git a/stdlib/src/os/path/path.mojo b/stdlib/src/os/path/path.mojo index 16083fa864..97a9737635 100644 --- a/stdlib/src/os/path/path.mojo +++ b/stdlib/src/os/path/path.mojo @@ -312,7 +312,10 @@ fn getsize[PathLike: os.PathLike, //](path: PathLike) raises -> Int: # ===----------------------------------------------------------------------=== # -fn join(path: String, *paths: String) -> String: +# TODO(MOCO-1532): +# Use StringSlice here once param inference bug for empty variadic +# list of parameterized types is fixed. +fn join(owned path: String, *paths: String) -> String: """Join two or more pathname components, inserting '/' as needed. If any component is an absolute path, all previous path components will be discarded. An empty last part will result in a path that @@ -335,7 +338,7 @@ fn join(path: String, *paths: String) -> String: else: joined_path += sep + cur_path[] - return joined_path + return joined_path^ # ===----------------------------------------------------------------------=== # diff --git a/stdlib/src/pathlib/path.mojo b/stdlib/src/pathlib/path.mojo index 8e2f5c5042..4cfbf1357a 100644 --- a/stdlib/src/pathlib/path.mojo +++ b/stdlib/src/pathlib/path.mojo @@ -119,9 +119,9 @@ struct Path( Returns: A new path with the suffix appended to the current path. """ - return self.__truediv__(suffix.path) + return self.__truediv__(StringSlice(suffix.path)) - fn __truediv__(self, suffix: String) -> Self: + fn __truediv__(self, suffix: StringSlice) -> Self: """Joins two paths using the system-defined path separator. Args: @@ -134,7 +134,7 @@ struct Path( res /= suffix return res - fn __itruediv__(mut self, suffix: String): + fn __itruediv__(mut self, suffix: StringSlice): """Joins two paths using the system-defined path separator. Args: @@ -143,7 +143,8 @@ struct Path( if self.path.endswith(DIR_SEPARATOR): self.path += suffix else: - self.path += DIR_SEPARATOR + suffix + self.path += DIR_SEPARATOR + self.path += suffix @no_inline fn __str__(self) -> String: @@ -204,7 +205,7 @@ struct Path( """ return str(self) == str(other) - fn __eq__(self, other: String) -> Bool: + fn __eq__(self, other: StringSlice) -> Bool: """Returns True if the two paths are equal. Args: @@ -213,7 +214,7 @@ struct Path( Returns: True if the String and Path are equal, and False otherwise. """ - return self.path == other + return self.path.as_string_slice() == other fn __ne__(self, other: Self) -> Bool: """Returns True if the two paths are not equal. @@ -358,6 +359,9 @@ struct Path( return "" + # TODO(MOCO-1532): + # Use StringSlice here once param inference bug for empty variadic + # list of parameterized types is fixed. fn joinpath(self, *pathsegments: String) -> Path: """Joins the Path using the pathsegments. diff --git a/stdlib/src/python/python.mojo b/stdlib/src/python/python.mojo index 8771e54c6f..ca1ccab3ab 100644 --- a/stdlib/src/python/python.mojo +++ b/stdlib/src/python/python.mojo @@ -20,6 +20,7 @@ from python import Python """ from collections import Dict +from collections.string import StringSlice from os import abort, getenv from sys import external_call, sizeof from sys.ffi import _Global @@ -172,7 +173,7 @@ struct Python: return PythonObject(result) @staticmethod - fn add_to_path(dir_path: String) raises: + fn add_to_path(dir_path: StringSlice) raises: """Adds a directory to the Python path. This might be necessary to import a Python module via `import_module()`. @@ -194,6 +195,7 @@ struct Python: var cpython = _get_global_python_itf().cpython() var sys = Python.import_module("sys") var directory: PythonObject = dir_path + _ = sys.path.append(directory) # ===-------------------------------------------------------------------===# diff --git a/stdlib/src/python/python_object.mojo b/stdlib/src/python/python_object.mojo index caeb85a53b..b1ff31ec2c 100644 --- a/stdlib/src/python/python_object.mojo +++ b/stdlib/src/python/python_object.mojo @@ -20,6 +20,7 @@ from python import PythonObject """ from collections import Dict +from collections.string import StringSlice from hashlib._hasher import _HashableWithHasher, _Hasher from sys.ffi import c_ssize_t from sys.intrinsics import _type_is_eq @@ -404,27 +405,26 @@ struct PythonObject( Args: value: The string value. """ - self = PythonObject(str(value)) + self = PythonObject(value.as_string_slice()) @implicit - fn __init__(out self, strref: StringRef): - """Initialize the object from a string reference. + fn __init__(out self, value: String): + """Initialize the object from a string. Args: - strref: The string reference. + value: The string value. """ - cpython = _get_global_python_itf().cpython() - self.py_object = cpython.PyUnicode_DecodeUTF8(strref) + self = PythonObject(value.as_string_slice()) @implicit - fn __init__(out self, string: String): + fn __init__(out self, string: StringSlice): """Initialize the object from a string. Args: string: The string value. """ cpython = _get_global_python_itf().cpython() - self.py_object = cpython.PyUnicode_DecodeUTF8(string.as_string_slice()) + self.py_object = cpython.PyUnicode_DecodeUTF8(string) @implicit fn __init__[*Ts: CollectionElement](mut self, value: ListLiteral[*Ts]): @@ -457,7 +457,11 @@ struct PythonObject( elif _type_is_eq[T, Bool](): obj = PythonObject(value.get[i, Bool]()) elif _type_is_eq[T, StringRef](): - obj = PythonObject(value.get[i, StringRef]()) + obj = PythonObject( + StringSlice[MutableAnyOrigin]( + unsafe_from_utf8_strref=value.get[i, StringRef]() + ) + ) elif _type_is_eq[T, StringLiteral](): obj = PythonObject(value.get[i, StringLiteral]()) else: @@ -501,7 +505,11 @@ struct PythonObject( elif _type_is_eq[T, Bool](): obj = PythonObject(value.get[i, Bool]()) elif _type_is_eq[T, StringRef](): - obj = PythonObject(value.get[i, StringRef]()) + obj = PythonObject( + StringSlice[MutableAnyOrigin]( + unsafe_from_utf8_strref=value.get[i, StringRef]() + ) + ) elif _type_is_eq[T, StringLiteral](): obj = PythonObject(value.get[i, StringLiteral]()) else: diff --git a/stdlib/src/tempfile/tempfile.mojo b/stdlib/src/tempfile/tempfile.mojo index 48ccb1ddcd..2ad3b91d60 100644 --- a/stdlib/src/tempfile/tempfile.mojo +++ b/stdlib/src/tempfile/tempfile.mojo @@ -22,6 +22,7 @@ from tempfile import gettempdir import os import sys from collections import List, Optional +from collections.string import StringSlice from pathlib import Path from memory import Span @@ -89,7 +90,7 @@ fn _get_default_tempdir() raises -> String: raise Error("No usable temporary directory found") -fn _try_to_create_file(dir: String) -> Bool: +fn _try_to_create_file(dir: StringSlice) -> Bool: for _ in range(TMP_MAX): var name = _get_random_name() # TODO use os.join when it exists diff --git a/stdlib/test/collections/string/test_string_slice.mojo b/stdlib/test/collections/string/test_string_slice.mojo index 32b6da2bf9..8abe0fb5c1 100644 --- a/stdlib/test/collections/string/test_string_slice.mojo +++ b/stdlib/test/collections/string/test_string_slice.mojo @@ -387,7 +387,7 @@ alias BAD_SEQUENCES = List[String]( ) -fn validate_utf8(slice: String) -> Bool: +fn validate_utf8(slice: StringSlice) -> Bool: return _is_valid_utf8(slice.as_bytes()) diff --git a/stdlib/test/python/test_python_object.mojo b/stdlib/test/python/test_python_object.mojo index b1c6799157..50540361ef 100644 --- a/stdlib/test/python/test_python_object.mojo +++ b/stdlib/test/python/test_python_object.mojo @@ -273,18 +273,6 @@ fn test_string_conversions() raises -> None: except e: print("Error occurred") - fn test_string_ref() -> None: - try: - var mojo_str: StringLiteral = "mojo" - var mojo_strref = StringRef(mojo_str) - var py_str = PythonObject(mojo_strref) - var py_capitalized = py_str.capitalize() - var py = Python() - var mojo_capitalized = py.__str__(py_capitalized) - assert_equal(mojo_capitalized, "Mojo") - except e: - print("Error occurred") - fn test_string() -> None: try: var mo_str = String("mo") @@ -305,7 +293,6 @@ fn test_string_conversions() raises -> None: assert_equal(str(type_obj), "") test_string_literal() - test_string_ref() test_string() test_type_object() From 7a05c5cfbe7a54284f71421aa0ddffdd9c9a8f87 Mon Sep 17 00:00:00 2001 From: soraros Date: Thu, 9 Jan 2025 08:54:17 -0800 Subject: [PATCH 179/509] [External] [stdlib] Mark `assume` as `has_side_effect=False` (#49220) [External] [stdlib] Mark assume as has_side_effect=False To enable DCE when calling `assume` Co-authored-by: soraros Closes modularml/mojo#3658 MODULAR_ORIG_COMMIT_REV_ID: 6e6a12d09ecfa9e75c3c0bb75b383df01a205e62 --- stdlib/src/sys/intrinsics.mojo | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/stdlib/src/sys/intrinsics.mojo b/stdlib/src/sys/intrinsics.mojo index 1a7242cc63..818ff9bd17 100644 --- a/stdlib/src/sys/intrinsics.mojo +++ b/stdlib/src/sys/intrinsics.mojo @@ -859,4 +859,4 @@ fn assume(val: Bool): Args: val: The input value which is assumed to be `True`. """ - llvm_intrinsic["llvm.assume", NoneType](val) + llvm_intrinsic["llvm.assume", NoneType, has_side_effect=False](val) From f09bcce6b9b612241ad8c93b92c01dc5b21feea9 Mon Sep 17 00:00:00 2001 From: Connor Gray Date: Thu, 9 Jan 2025 15:15:24 -0600 Subject: [PATCH 180/509] [stdlib] feat: Add `Char` type for representing characters This adds a bare bones initial `Char` type, defined to store a single Unicode scalar value using a UInt32. At the moment all this type does is provide checked and unchecked constructor methods. There is much future work to do integrating this type throughout the standard library APIs. MODULAR_ORIG_COMMIT_REV_ID: f28059669f65e41fdbac247f1acb9f9fc6e168c4 --- docs/changelog.md | 2 + stdlib/src/builtin/char.mojo | 87 ++++++++++++++++++++++++++++++ stdlib/src/prelude/__init__.mojo | 1 + stdlib/test/builtin/test_char.mojo | 45 ++++++++++++++++ 4 files changed, 135 insertions(+) create mode 100644 stdlib/src/builtin/char.mojo create mode 100644 stdlib/test/builtin/test_char.mojo diff --git a/docs/changelog.md b/docs/changelog.md index 86a8b15c41..306a5a6bd5 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -89,6 +89,8 @@ what we publish. `Span[Scalar[..]]`, simplifying the writing of some optimized SIMD-aware functionality. +- Added `Char`, for representing and storing single Unicode characters. + - Added `StringSlice.from_utf()` factor method, for validated construction of a `StringSlice` from a buffer containing UTF-8 encoded data. This method will raise if the buffer contents are not valid UTF-8. diff --git a/stdlib/src/builtin/char.mojo b/stdlib/src/builtin/char.mojo new file mode 100644 index 0000000000..3116e454a2 --- /dev/null +++ b/stdlib/src/builtin/char.mojo @@ -0,0 +1,87 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2024, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # +"""Implements the `Char` type for representing single characters.""" + +from collections import Optional + + +@always_inline +fn _is_unicode_scalar_value(codepoint: UInt32) -> Bool: + """Returns True if `codepoint` is a valid Unicode scalar value. + + Args: + codepoint: The codepoint integer value to check. + + Returns: + True if `codepoint` is a valid Unicode scalar value; False otherwise. + """ + return codepoint <= 0xD7FF or ( + codepoint >= 0xE000 and codepoint <= 0x10FFFF + ) + + +@value +struct Char(CollectionElement): + """A single textual character. + + This type represents a single textual character. Specifically, this type + stores a single Unicode [*scalar value*][1], typically encoding a single + user-recognizable character. + + All valid Unicode scalar values are in the range(s) 0 to 0xD7FF and + 0xE000 to 0x10FFFF, inclusive. This type guarantees that the stored integer + value falls in these ranges. + + [1]: https://www.unicode.org/glossary/#unicode_scalar_value + """ + + var _codepoint: UInt32 + """The Unicode scalar value represented by this type.""" + + fn __init__(out self, *, unsafe_unchecked_codepoint: UInt32): + """Construct a `Char` from a code point value without checking that it + falls in the valid range. + + Safety: + The provided codepoint value MUST be a valid Unicode scalar value. + Providing a value outside of the valid range could lead to undefined + behavior in algorithms that depend on the validity guarantees of + this type. + + Args: + unsafe_unchecked_codepoint: A valid Unicode scalar value code point. + """ + debug_assert( + _is_unicode_scalar_value(unsafe_unchecked_codepoint), + "codepoint is not a valid Unicode scalar value", + ) + + self._codepoint = unsafe_unchecked_codepoint + + @staticmethod + fn from_u32(codepoint: UInt32) -> Optional[Self]: + """Construct a `Char` from a code point value. Returns None if the + provided `codepoint` is not in the valid range. + + Args: + codepoint: An integer representing a Unicode scalar value. + + Returns: + A `Char` if `codepoint` falls in the valid range for Unicode scalar + values, otherwise None. + """ + + if _is_unicode_scalar_value(codepoint): + return Char(unsafe_unchecked_codepoint=codepoint) + else: + return None diff --git a/stdlib/src/prelude/__init__.mojo b/stdlib/src/prelude/__init__.mojo index 3cb066f0d4..add29683cd 100644 --- a/stdlib/src/prelude/__init__.mojo +++ b/stdlib/src/prelude/__init__.mojo @@ -39,6 +39,7 @@ from builtin.builtin_list import ( VariadicPack, ) from builtin.builtin_slice import Slice, slice +from builtin.char import Char from builtin.comparable import Comparable from builtin.constrained import constrained from builtin.coroutine import AnyCoroutine, Coroutine, RaisingCoroutine diff --git a/stdlib/test/builtin/test_char.mojo b/stdlib/test/builtin/test_char.mojo new file mode 100644 index 0000000000..97c2a56978 --- /dev/null +++ b/stdlib/test/builtin/test_char.mojo @@ -0,0 +1,45 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2024, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # +# RUN: %mojo %s + +from testing import assert_true, assert_false, assert_equal + + +def test_char_validity(): + # Check that basic unchecked constructor behaves as expected. + var c1 = Char(unsafe_unchecked_codepoint=32) + assert_equal(c1._codepoint, 32) + + assert_true(Char.from_u32(0)) + + # For a visual intuition of what constitues a valid scalar value: + # https://connorgray.com/ephemera/project-log#2025-01-09 + + # Last valid code point in the smaller scalar value range. + assert_true(Char.from_u32(0xD7FF)) + + # First surrogate code point, not valid. + assert_false(Char.from_u32(0xD7FF + 1)) + + # Last surrogate code point, not valid + assert_false(Char.from_u32(0xDFFF)) + + # First valid code point in the larger scalar value range. + assert_true(Char.from_u32(0xE000)) + + # Beyond Unicode's committed range of code points. + assert_false(Char.from_u32(0x10FFFF + 1)) + + +def main(): + test_char_validity() From be605c7c7425cb39600b82e081e60303dbb5e29e Mon Sep 17 00:00:00 2001 From: Jack Clayton Date: Thu, 9 Jan 2025 15:24:04 -0600 Subject: [PATCH 181/509] [stdlib] Combine indexer traits and optimize uint indexing This sets up removing the Uint -> Int implicit conversion, the majority of which occur when indexing into collections, pointers, or creating n-dimensional index types. It removes the `__index__(self) -> Int` trait which was the same sig as `__int__(self) -> Int`, and instead uses a single `Indexer` trait for all indexing. This enables optimizing away the check to normalize a negative number when using a UInt, and using SIMD scalar integer types as an index across a wider variety of collections. The `Indexer` trait was also used to enable implicit conversions to `Int` on a few types such as `Bool` and `PythonObject`, this has been moved to `ImplicitlyIntable` to align with `ImplicitlyBoolable`. MODULAR_ORIG_COMMIT_REV_ID: 3d5968b3155b4751bd73aaa3d90709ebdfa43aa0 --- docs/changelog.md | 17 ++++ stdlib/src/builtin/bool.mojo | 18 +++- stdlib/src/builtin/builtin_list.mojo | 7 +- stdlib/src/builtin/format_int.mojo | 16 +-- stdlib/src/builtin/int.mojo | 98 +++++++++---------- stdlib/src/builtin/int_literal.mojo | 21 ++-- stdlib/src/builtin/range.mojo | 16 +-- stdlib/src/builtin/simd.mojo | 8 +- stdlib/src/builtin/uint.mojo | 25 +++-- stdlib/src/collections/inline_array.mojo | 50 +++++++--- stdlib/src/collections/inline_list.mojo | 18 ++-- stdlib/src/collections/list.mojo | 33 ++++--- stdlib/src/collections/string/string.mojo | 8 +- .../src/collections/string/string_slice.mojo | 4 +- stdlib/src/collections/vector.mojo | 44 ++++++--- stdlib/src/memory/pointer.mojo | 2 +- stdlib/src/memory/span.mojo | 9 +- stdlib/src/memory/unsafe_pointer.mojo | 48 ++++----- stdlib/src/prelude/__init__.mojo | 2 +- stdlib/src/python/python_object.mojo | 26 +++-- stdlib/src/utils/index.mojo | 17 ++-- stdlib/src/utils/static_tuple.mojo | 32 +++--- stdlib/src/utils/stringref.mojo | 7 +- stdlib/test/builtin/test_bool.mojo | 4 +- stdlib/test/builtin/test_format_int.mojo | 8 +- stdlib/test/builtin/test_int.mojo | 4 +- stdlib/test/builtin/test_int_literal.mojo | 4 +- stdlib/test/builtin/test_uint.mojo | 4 +- 28 files changed, 311 insertions(+), 239 deletions(-) diff --git a/docs/changelog.md b/docs/changelog.md index 306a5a6bd5..0e14258db3 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -147,6 +147,23 @@ what we publish. - `bit_ceil` has been renamed to `next_power_of_two`, and `bit_floor` to `prev_power_of_two`. This is to improve readability and clarity in their use. +- The `Indexer` and `IntLike` traits which were previously both used for + indexing have been combined. This enables SIMD scalar integer types and UInt + to be used for indexing into all of the collection types, as well as + optimizing away normalization checks for UInt indexing. + +- The `ImplicitlyIntable` trait has been added, allowing types to be implicitly + converted to an `Int` by implementing the `__as_int__` method: + + ```mojo + @value + struct Foo(ImplicitlyIntable): + var i: Int + + fn __as_int__(self) -> Int: + return self.i + ``` + ### Tooling changes - mblack (aka `mojo format`) no longer formats non-mojo files. This prevents diff --git a/stdlib/src/builtin/bool.mojo b/stdlib/src/builtin/bool.mojo index 3b9c3a2569..a0a65229dc 100644 --- a/stdlib/src/builtin/bool.mojo +++ b/stdlib/src/builtin/bool.mojo @@ -104,8 +104,8 @@ struct Bool( ComparableCollectionElement, Defaultable, ImplicitlyBoolable, + ImplicitlyIntable, Indexer, - Intable, Representable, Stringable, Writable, @@ -259,6 +259,16 @@ struct Bool( """ return _select_register_value(self, Int(1), Int(0)) + @always_inline("nodebug") + fn __as_int__(self) -> Int: + """Implicitly convert to an integral representation of the value, + wherever an `Int` is expected. + + Returns: + The integral representation of the value. + """ + return self.__int__() + @always_inline("nodebug") fn __float__(self) -> Float64: """Convert this Bool to a float. @@ -269,13 +279,13 @@ struct Bool( return _select_register_value(self, Float64(1.0), Float64(0.0)) @always_inline("nodebug") - fn __index__(self) -> Int: - """Convert this Bool to an integer for indexing purposes. + fn __index__(self) -> __mlir_type.index: + """Convert to index. Returns: 1 if the Bool is True, 0 otherwise. """ - return self.__int__() + return int(self).value @always_inline("nodebug") fn __eq__(self, rhs: Bool) -> Bool: diff --git a/stdlib/src/builtin/builtin_list.mojo b/stdlib/src/builtin/builtin_list.mojo index c24ecb8d25..516fdbe06c 100644 --- a/stdlib/src/builtin/builtin_list.mojo +++ b/stdlib/src/builtin/builtin_list.mojo @@ -195,16 +195,19 @@ struct VariadicList[type: AnyTrivialRegType](Sized): return __mlir_op.`pop.variadic.size`(self.value) @always_inline - fn __getitem__(self, idx: Int) -> type: + fn __getitem__[I: Indexer](self, idx: I) -> type: """Gets a single element on the variadic list. Args: idx: The index of the element to access on the list. + Parameters: + I: A type that can be used as an index. + Returns: The element on the list corresponding to the given index. """ - return __mlir_op.`pop.variadic.get`(self.value, idx.value) + return __mlir_op.`pop.variadic.get`(self.value, index(idx)) @always_inline fn __iter__(self) -> Self.IterType: diff --git a/stdlib/src/builtin/format_int.mojo b/stdlib/src/builtin/format_int.mojo index 0598bb816a..2f9bf016db 100644 --- a/stdlib/src/builtin/format_int.mojo +++ b/stdlib/src/builtin/format_int.mojo @@ -66,11 +66,11 @@ fn bin(b: Scalar[DType.bool], /, *, prefix: StaticString = "0b") -> String: return bin(b.cast[DType.int8](), prefix=prefix) -fn bin[T: Indexer, //](num: T, /, *, prefix: StaticString = "0b") -> String: +fn bin[T: Intable, //](num: T, /, *, prefix: StaticString = "0b") -> String: """Returns the binary representation of an indexer type. Parameters: - T: The Indexer type. + T: The Intable type. Args: num: An indexer value. @@ -79,7 +79,7 @@ fn bin[T: Indexer, //](num: T, /, *, prefix: StaticString = "0b") -> String: Returns: The binary string representation of num. """ - return bin(Scalar[DType.index](index(num)), prefix=prefix) + return bin(Scalar[DType.index](int(num)), prefix=prefix) # ===-----------------------------------------------------------------------===# @@ -105,7 +105,7 @@ fn hex(value: Scalar, /, *, prefix: StaticString = "0x") -> String: return _try_format_int(value, 16, prefix=prefix) -fn hex[T: Indexer, //](value: T, /, *, prefix: StaticString = "0x") -> String: +fn hex[T: Intable, //](value: T, /, *, prefix: StaticString = "0x") -> String: """Returns the hex string representation of the given integer. The hexadecimal representation is a base-16 encoding of the integer value. @@ -123,7 +123,7 @@ fn hex[T: Indexer, //](value: T, /, *, prefix: StaticString = "0x") -> String: Returns: A string containing the hex representation of the given integer. """ - return hex(Scalar[DType.index](index(value)), prefix=prefix) + return hex(Scalar[DType.index](int(value)), prefix=prefix) fn hex(value: Scalar[DType.bool], /, *, prefix: StaticString = "0x") -> String: @@ -167,7 +167,7 @@ fn oct(value: Scalar, /, *, prefix: StaticString = "0o") -> String: return _try_format_int(value, 8, prefix=prefix) -fn oct[T: Indexer, //](value: T, /, *, prefix: StaticString = "0o") -> String: +fn oct[T: Intable, //](value: T, /, *, prefix: StaticString = "0o") -> String: """Returns the octal string representation of the given integer. The octal representation is a base-8 encoding of the integer value. @@ -176,7 +176,7 @@ fn oct[T: Indexer, //](value: T, /, *, prefix: StaticString = "0o") -> String: subsequent digits are octal. Parameters: - T: The indexer type to represent in octal. + T: The intable type to represent in octal. Args: value: The integer value to format. @@ -185,7 +185,7 @@ fn oct[T: Indexer, //](value: T, /, *, prefix: StaticString = "0o") -> String: Returns: A string containing the octal representation of the given integer. """ - return oct(Scalar[DType.index](index(value)), prefix=prefix) + return oct(Scalar[DType.index](int(value)), prefix=prefix) fn oct(value: Scalar[DType.bool], /, *, prefix: StaticString = "0o") -> String: diff --git a/stdlib/src/builtin/int.mojo b/stdlib/src/builtin/int.mojo index 0f271cad42..8205ad6886 100644 --- a/stdlib/src/builtin/int.mojo +++ b/stdlib/src/builtin/int.mojo @@ -40,24 +40,22 @@ from utils._visualizers import lldb_formatter_wrapping_type # ===----------------------------------------------------------------------=== # -trait Indexer: - """This trait denotes a type that can be used to index a container that - handles integral index values. - - This solves the issue of being able to index data structures such as `List` - with the various integral types without being too broad and allowing types - that are coercible to `Int` (e.g. floating point values that have `__int__` - method). In contrast to `Intable`, types conforming to `Indexer` must be - convertible to `Int` in a lossless way. - - Note that types conforming to `Indexer` are implicitly convertible to `Int`. +trait Indexer( + Intable, +): + """ + The `Indexer` trait is used for types that can index into a collection or + pointer. The type returned is the underlying __mlir_type.index, enabling + types like `UInt` to not have to be converted to an `Int` first. This type + is implicitly convertable to an `Int`, so can be used anywhere an `Int` can + e.g. for comparisons. """ - fn __index__(self) -> Int: - """Return the index value. + fn __index__(self) -> __mlir_type.index: + """Convert to index. Returns: - The index value of the object. + The corresponding __mlir_type.index value. """ ... @@ -68,7 +66,7 @@ trait Indexer: @always_inline("nodebug") -fn index[T: Indexer](idx: T, /) -> Int: +fn index[T: Indexer](idx: T, /) -> __mlir_type.index: """Returns the value of `__index__` for the given value. Parameters: @@ -78,7 +76,7 @@ fn index[T: Indexer](idx: T, /) -> Int: idx: The value. Returns: - An `Int` representing the index value. + An `__mlir_type` representing the index value. """ return idx.__index__() @@ -173,30 +171,38 @@ trait IntableRaising: ... -# ===----------------------------------------------------------------------=== # -# IntLike -# ===----------------------------------------------------------------------=== # +trait ImplicitlyIntable(Intable): + """The `ImplicitlyIntable` trait describes a type that can be converted to + an Int implicitly. + This trait requires the type to implement the `__as_int__()` method. For + example: -trait IntLike( - Absable, - Ceilable, - Floorable, - Writable, - Powable, - Stringable, - Truncable, -): - """ - The `IntLike` trait is a tag for `Int` or `UInt`. This allows writing - functions that works on either. + ```mojo + @value + struct Foo(ImplicitlyIntable): + var i: Int + + fn __as_int__(self) -> Int: + return self.i + ``` + + Now you can use `Foo` anywhere that an `Int` is expected, e.g. equality + checks: + + ```mojo + %# from testing import assert_equal + foo = Foo(42) + assert_equal(foo, 42) + ``` """ - fn __mlir_index__(self) -> __mlir_type.index: - """Convert to index. + fn __as_int__(self) -> Int: + """Implicitly convert to an integral representation of the value, + wherever an `Int` is expected. Returns: - The corresponding __mlir_type.index value. + The integral representation of the value. """ ... @@ -302,11 +308,9 @@ fn int(value: UInt) -> Int: struct Int( CeilDivable, Indexer, - Intable, ImplicitlyBoolable, KeyElement, Roundable, - IntLike, _HashableWithHasher, ExplicitlyCopyable, ): @@ -375,16 +379,16 @@ struct Int( @always_inline("nodebug") @implicit - fn __init__[IndexerTy: Indexer](mut self, value: IndexerTy): - """Construct Int from the given Indexer value. + fn __init__[I: ImplicitlyIntable](out self, value: I): + """Construct Int from implicitly convertable type. Parameters: - IndexerTy: A type conforming to Indexer. + I: The type that is implicitly convertable to an `Int`. Args: value: The init value. """ - self = value.__index__() + self = value.__as_int__() @always_inline("nodebug") @implicit @@ -988,18 +992,6 @@ struct Int( """ return self.__bool__() - @always_inline("nodebug") - fn __index__(self) -> Int: - """Return self converted to an integer, if self is suitable for use as - an index into a list. - - For Int type this is simply the value. - - Returns: - The corresponding Int value. - """ - return self - @always_inline("nodebug") fn __int__(self) -> Int: """Gets the integral value (this is an identity function for Int). @@ -1170,7 +1162,7 @@ struct Int( writer.write(self) @always_inline("nodebug") - fn __mlir_index__(self) -> __mlir_type.index: + fn __index__(self) -> __mlir_type.index: """Convert to index. Returns: diff --git a/stdlib/src/builtin/int_literal.mojo b/stdlib/src/builtin/int_literal.mojo index 3d50918458..f7b72d9ea0 100644 --- a/stdlib/src/builtin/int_literal.mojo +++ b/stdlib/src/builtin/int_literal.mojo @@ -25,8 +25,8 @@ struct IntLiteral( Comparable, Floorable, ImplicitlyBoolable, + ImplicitlyIntable, Indexer, - Intable, Roundable, Stringable, Truncable, @@ -593,23 +593,22 @@ struct IntLiteral( return self.__bool__() @always_inline("nodebug") - fn __index__(self) -> Int: - """Return self converted to an integer, if self is suitable for use as - an index into a list. + fn __int__(self) -> Int: + """Convert from IntLiteral to Int. Returns: - The corresponding Int value. + The value as an integer of platform-specific width. """ - return self.__int__() + return self.__index__() @always_inline("nodebug") - fn __int__(self) -> Int: - """Convert from IntLiteral to Int. + fn __as_int__(self) -> Int: + """Implicitly convert to an Int. Returns: - The value as an integer of platform-specific width. + An integral value that represents this object. """ - return Int(self.__as_mlir_index()) + return self.__int__() @always_inline("nodebug") fn __uint__(self) -> UInt: @@ -731,7 +730,7 @@ struct IntLiteral( return __mlir_op.`kgen.int_literal.bit_width`(self.value) @always_inline("nodebug") - fn __as_mlir_index(self) -> __mlir_type.index: + fn __index__(self) -> __mlir_type.index: """Convert from IntLiteral to index. Returns: diff --git a/stdlib/src/builtin/range.mojo b/stdlib/src/builtin/range.mojo index 2af6fb942d..b011c350d5 100644 --- a/stdlib/src/builtin/range.mojo +++ b/stdlib/src/builtin/range.mojo @@ -74,8 +74,8 @@ struct _ZeroStartingRange(Sized, ReversibleRange, _IntIterable): return self.curr @always_inline - fn __getitem__(self, idx: Int) -> Int: - debug_assert(idx < self.__len__(), "index out of range") + fn __getitem__[I: Indexer](self, idx: I) -> Int: + debug_assert(int(idx) < self.__len__(), "index out of range") return index(idx) @always_inline @@ -108,8 +108,8 @@ struct _SequentialRange(Sized, ReversibleRange, _IntIterable): return max(0, self.end - self.start) @always_inline - fn __getitem__(self, idx: Int) -> Int: - debug_assert(idx < self.__len__(), "index out of range") + fn __getitem__[I: Indexer](self, idx: I) -> Int: + debug_assert(self.__len__() > index(idx), "index out of range") return self.start + index(idx) @always_inline @@ -189,8 +189,8 @@ struct _StridedRange(Sized, ReversibleRange, _StridedIterable): return ceildiv(select(cnd, 0, numerator), select(cnd, 1, denominator)) @always_inline - fn __getitem__(self, idx: Int) -> Int: - debug_assert(idx < self.__len__(), "index out of range") + fn __getitem__[I: Indexer](self, idx: I) -> Int: + debug_assert(self.__len__() > index(idx), "index out of range") return self.start + index(idx) * self.step @always_inline @@ -274,7 +274,7 @@ fn range[ @always_inline fn range[ - t0: Intable, t1: Intable, t2: Intable + t0: Indexer, t1: Indexer, t2: Indexer ](start: t0, end: t1, step: t2) -> _StridedRange: """Constructs a [start; end) Range with a given step. @@ -291,7 +291,7 @@ fn range[ Returns: The constructed range. """ - return _StridedRange(int(start), int(end), int(step)) + return _StridedRange(index(start), index(end), index(step)) @always_inline diff --git a/stdlib/src/builtin/simd.mojo b/stdlib/src/builtin/simd.mojo index 0a56cdd820..a74d707205 100644 --- a/stdlib/src/builtin/simd.mojo +++ b/stdlib/src/builtin/simd.mojo @@ -235,7 +235,7 @@ struct SIMD[type: DType, size: Int]( Hashable, _HashableWithHasher, Intable, - IntLike, + Indexer, Representable, Roundable, Sized, @@ -650,7 +650,7 @@ struct SIMD[type: DType, size: Int]( """ return __mlir_op.`pop.simd.extractelement`[ _type = __mlir_type[`!pop.scalar<`, type.value, `>`] - ](self.value, index(idx).value) + ](self.value, idx.value) @always_inline("nodebug") fn __setitem__(mut self, idx: Int, val: Scalar[type]): @@ -661,7 +661,7 @@ struct SIMD[type: DType, size: Int]( val: The value to set. """ self.value = __mlir_op.`pop.simd.insertelement`( - self.value, val.value, index(idx).value + self.value, val.value, idx.value ) fn __contains__(self, value: Scalar[type]) -> Bool: @@ -1523,7 +1523,7 @@ struct SIMD[type: DType, size: Int]( ](rebind[Scalar[type]](self).value) @always_inline("nodebug") - fn __mlir_index__(self) -> __mlir_type.index: + fn __index__(self) -> __mlir_type.index: """Convert to index. Returns: diff --git a/stdlib/src/builtin/uint.mojo b/stdlib/src/builtin/uint.mojo index 9c3feb155f..7067e94d68 100644 --- a/stdlib/src/builtin/uint.mojo +++ b/stdlib/src/builtin/uint.mojo @@ -27,7 +27,7 @@ from utils._visualizers import lldb_formatter_wrapping_type @lldb_formatter_wrapping_type @value @register_passable("trivial") -struct UInt(IntLike, _HashableWithHasher): +struct UInt(Indexer, _HashableWithHasher): """This type represents an unsigned integer. An unsigned integer represents a positive integral number. @@ -105,7 +105,7 @@ struct UInt(IntLike, _HashableWithHasher): self = value.__uint__() @always_inline("nodebug") - fn __mlir_index__(self) -> __mlir_type.index: + fn __index__(self) -> __mlir_type.index: """Convert to index. Returns: @@ -142,6 +142,15 @@ struct UInt(IntLike, _HashableWithHasher): writer.write(UInt64(self)) + @always_inline("nodebug") + fn __int__(self) -> Int: + """Gets the integral value, wrapping to a negative number on overflow. + + Returns: + The value as an integer. + """ + return self.value + fn __repr__(self) -> String: """Convert this UInt to a string. @@ -728,18 +737,6 @@ struct UInt(IntLike, _HashableWithHasher): """ return self != 0 - @always_inline("nodebug") - fn __index__(self) -> UInt: - """Return self converted to an unsigned integer, if self is suitable for use as - an index into a list. - - For Int type this is simply the value. - - Returns: - The corresponding Int value. - """ - return self - @always_inline("nodebug") fn __ceil__(self) -> Self: """Return the ceiling of the UInt value, which is itself. diff --git a/stdlib/src/collections/inline_array.mojo b/stdlib/src/collections/inline_array.mojo index 973406574b..f24d4dbe75 100644 --- a/stdlib/src/collections/inline_array.mojo +++ b/stdlib/src/collections/inline_array.mojo @@ -223,37 +223,54 @@ struct InlineArray[ # ===------------------------------------------------------------------===# @always_inline - fn __getitem__(ref self, idx: Int) -> ref [self] Self.ElementType: + fn __getitem__[I: Indexer](ref self, idx: I) -> ref [self] Self.ElementType: """Get a `Pointer` to the element at the given index. + Parameters: + I: A type that can be used as an index. + Args: idx: The index of the item. Returns: A reference to the item at the given index. """ - var normalized_index = normalize_index["InlineArray"](idx, self) - return self.unsafe_get(normalized_index) + + @parameter + if _type_is_eq[I, UInt](): + return self.unsafe_get(idx) + else: + var normalized_index = normalize_index["InlineArray"]( + int(idx), self + ) + return self.unsafe_get(normalized_index) @always_inline - fn __getitem__[idx: Int](ref self) -> ref [self] Self.ElementType: + fn __getitem__[ + I: Indexer, //, idx: I + ](ref self) -> ref [self] Self.ElementType: """Get a `Pointer` to the element at the given index. Parameters: + I: A type that can be used as an index. idx: The index of the item. Returns: A reference to the item at the given index. """ - constrained[-size <= idx < size, "Index must be within bounds."]() - - var normalized_idx = idx + constrained[-size <= int(idx) < size, "Index must be within bounds."]() @parameter - if idx < 0: - normalized_idx += size + if _type_is_eq[I, UInt](): + return self.unsafe_get(idx) + else: + var normalized_idx = int(idx) + + @parameter + if int(idx) < 0: + normalized_idx += size - return self.unsafe_get(normalized_idx) + return self.unsafe_get(normalized_idx) # ===------------------------------------------------------------------=== # # Trait implementations @@ -273,7 +290,7 @@ struct InlineArray[ # ===------------------------------------------------------------------===# @always_inline - fn unsafe_get(ref self, idx: Int) -> ref [self] Self.ElementType: + fn unsafe_get[I: Indexer](ref self, idx: I) -> ref [self] Self.ElementType: """Get a reference to an element of self without checking index bounds. Users should opt for `__getitem__` instead of this method as it is @@ -285,20 +302,23 @@ struct InlineArray[ Args: idx: The index of the element to get. + Parameters: + I: A type that can be used as an index. + Returns: A reference to the element at the given index. """ - var idx_as_int = index(idx) + var i = index(idx) debug_assert( - 0 <= idx_as_int < size, + 0 <= int(i) < size, " InlineArray.unsafe_get() index out of bounds: ", - idx_as_int, + int(idx), " should be less than: ", size, ) var ptr = __mlir_op.`pop.array.gep`( UnsafePointer.address_of(self._array).address, - idx_as_int.value, + i, ) return UnsafePointer(ptr)[] diff --git a/stdlib/src/collections/inline_list.mojo b/stdlib/src/collections/inline_list.mojo index 798f71d5f8..733fd917b3 100644 --- a/stdlib/src/collections/inline_list.mojo +++ b/stdlib/src/collections/inline_list.mojo @@ -133,25 +133,29 @@ struct InlineList[ElementType: CollectionElementNew, capacity: Int = 16](Sized): # ===-------------------------------------------------------------------===# @always_inline - fn __getitem__( - ref self, owned idx: Int - ) -> ref [self._array] Self.ElementType: + fn __getitem__[ + I: Indexer + ](ref self, idx: I) -> ref [self._array] Self.ElementType: """Get a `Pointer` to the element at the given index. + Parameters: + I: A type that can be used as an index. + Args: idx: The index of the item. Returns: A reference to the item at the given index. """ + var index = int(idx) debug_assert( - -self._size <= idx < self._size, "Index must be within bounds." + -self._size <= index < self._size, "Index must be within bounds." ) - if idx < 0: - idx += len(self) + if index < 0: + index += len(self) - return self._array[idx].assume_initialized() + return self._array[index].assume_initialized() # ===-------------------------------------------------------------------===# # Trait implementations diff --git a/stdlib/src/collections/list.mojo b/stdlib/src/collections/list.mojo index 1f0d42bde8..561079a10e 100644 --- a/stdlib/src/collections/list.mojo +++ b/stdlib/src/collections/list.mojo @@ -22,6 +22,7 @@ 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 @@ -850,29 +851,35 @@ struct List[T: CollectionElement, hint_trivial_type: Bool = False]( return res^ - fn __getitem__(ref self, idx: Int) -> ref [self] T: + fn __getitem__[I: Indexer](ref self, idx: I) -> ref [self] T: """Gets the list element at the given index. Args: idx: The index of the element. + Parameters: + I: A type that can be used as an index. + Returns: A reference to the element at the given index. """ - var normalized_idx = idx - - debug_assert( - -self.size <= normalized_idx < self.size, - "index: ", - normalized_idx, - " is out of bounds for `List` of size: ", - self.size, - ) - if normalized_idx < 0: - normalized_idx += len(self) + @parameter + if _type_is_eq[I, UInt](): + return (self.data + idx)[] + else: + var normalized_idx = int(idx) + debug_assert( + -self.size <= normalized_idx < self.size, + "index: ", + normalized_idx, + " is out of bounds for `List` of size: ", + self.size, + ) + if normalized_idx < 0: + normalized_idx += len(self) - return (self.data + normalized_idx)[] + return (self.data + normalized_idx)[] @always_inline fn unsafe_get(ref self, idx: Int) -> ref [self] Self.T: diff --git a/stdlib/src/collections/string/string.mojo b/stdlib/src/collections/string/string.mojo index d82435643f..2ca4d03112 100644 --- a/stdlib/src/collections/string/string.mojo +++ b/stdlib/src/collections/string/string.mojo @@ -362,7 +362,7 @@ fn _trim_and_handle_sign(str_slice: StringSlice, str_len: Int) -> (Int, Bool): start += 1 var p: Bool = buff[start] == ord("+") var n: Bool = buff[start] == ord("-") - return start + (p or n), n + return start + (int(p) or int(n)), n @always_inline @@ -992,11 +992,11 @@ struct String( # Operator dunders # ===------------------------------------------------------------------=== # - fn __getitem__[IndexerType: Indexer](self, idx: IndexerType) -> String: + fn __getitem__[I: Indexer](self, idx: I) -> String: """Gets the character at the specified position. Parameters: - IndexerType: The inferred type of an indexer argument. + I: A type that can be used as an index. Args: idx: The index value. @@ -1005,7 +1005,7 @@ struct String( A new string containing the character at the specified position. """ # TODO(#933): implement this for unicode when we support llvm intrinsic evaluation at compile time - var normalized_idx = normalize_index["String"](idx, self) + var normalized_idx = normalize_index["String"](index(idx), self) var buf = Self._buffer_type(capacity=1) buf.append(self._buffer[normalized_idx]) buf.append(0) diff --git a/stdlib/src/collections/string/string_slice.mojo b/stdlib/src/collections/string/string_slice.mojo index 881b2df713..614f4dd472 100644 --- a/stdlib/src/collections/string/string_slice.mojo +++ b/stdlib/src/collections/string/string_slice.mojo @@ -598,11 +598,11 @@ struct StringSlice[mut: Bool, //, origin: Origin[mut]]( ptr=self.unsafe_ptr(), length=self.byte_length() ) - fn __getitem__[IndexerType: Indexer](self, idx: IndexerType) -> String: + fn __getitem__[I: Indexer](self, idx: I) -> String: """Gets the character at the specified position. Parameters: - IndexerType: The inferred type of an indexer argument. + I: A type that can be used as an index. Args: idx: The index value. diff --git a/stdlib/src/collections/vector.mojo b/stdlib/src/collections/vector.mojo index 556c343ea2..1466c23f9d 100644 --- a/stdlib/src/collections/vector.mojo +++ b/stdlib/src/collections/vector.mojo @@ -20,6 +20,7 @@ from collections import InlinedFixedVector """ from sys import sizeof +from sys.intrinsics import _type_is_eq from memory import Pointer, UnsafePointer, memcpy @@ -204,49 +205,60 @@ struct InlinedFixedVector[ return self.current_size @always_inline - fn __getitem__(self, idx: Int) -> type: + fn __getitem__[I: Indexer](self, idx: I) -> type: """Gets a vector element at the given index. Args: idx: The index of the element. + Parameters: + I: A type that can be used as an index. + Returns: The element at the given index. """ - var normalized_idx = idx + var index = int(idx) debug_assert( - -self.current_size <= normalized_idx < self.current_size, + -self.current_size <= index < self.current_size, "index must be within bounds", ) - if normalized_idx < 0: - normalized_idx += len(self) + @parameter + if not _type_is_eq[I, UInt](): + if index < 0: + index += len(self) - if normalized_idx < Self.static_size: - return self.static_data[normalized_idx] + if index < Self.static_size: + return self.static_data[index] - return self.dynamic_data[normalized_idx - Self.static_size] + return self.dynamic_data[index - Self.static_size] @always_inline - fn __setitem__(mut self, idx: Int, value: type): + fn __setitem__[I: Indexer](mut self, idx: I, value: type): """Sets a vector element at the given index. + Parameters: + I: A type that can be used as an index. + Args: idx: The index of the element. value: The value to assign. """ - var normalized_idx = idx + var index = int(idx) debug_assert( - -self.current_size <= normalized_idx < self.current_size, + -self.current_size <= index < self.current_size, "index must be within bounds", ) - if normalized_idx < 0: - normalized_idx += len(self) - if normalized_idx < Self.static_size: - self.static_data[normalized_idx] = value + @parameter + if not _type_is_eq[I, UInt](): + if index < 0: + index += len(self) + + if index < Self.static_size: + self.static_data[index] = value else: - self.dynamic_data[normalized_idx - Self.static_size] = value + self.dynamic_data[index - Self.static_size] = value fn clear(mut self): """Clears the elements in the vector.""" diff --git a/stdlib/src/memory/pointer.mojo b/stdlib/src/memory/pointer.mojo index 2d1f5fce52..280cc5fd3d 100644 --- a/stdlib/src/memory/pointer.mojo +++ b/stdlib/src/memory/pointer.mojo @@ -208,7 +208,7 @@ struct AddressSpace(EqualityComparable, Stringable, Writable): return self._value @always_inline("nodebug") - fn __mlir_index__(self) -> __mlir_type.index: + fn __index__(self) -> __mlir_type.index: """Convert to index. Returns: diff --git a/stdlib/src/memory/span.mojo b/stdlib/src/memory/span.mojo index c0d919dff0..099c798bed 100644 --- a/stdlib/src/memory/span.mojo +++ b/stdlib/src/memory/span.mojo @@ -168,12 +168,15 @@ struct Span[ # ===------------------------------------------------------------------===# @always_inline - fn __getitem__(self, idx: Int) -> ref [origin] T: + fn __getitem__[I: Indexer](self, idx: I) -> ref [origin] T: """Get a reference to an element in the span. Args: idx: The index of the value to return. + Parameters: + I: A type that can be used as an index. + Returns: An element reference. """ @@ -181,8 +184,8 @@ struct Span[ debug_assert( -self._len <= int(idx) < self._len, "index must be within bounds" ) - - var offset = idx + # TODO(MSTDL-1086): optimize away SIMD/UInt normalization check + var offset = int(idx) if offset < 0: offset += len(self) return self._data[offset] diff --git a/stdlib/src/memory/unsafe_pointer.mojo b/stdlib/src/memory/unsafe_pointer.mojo index efe6018cd9..cf6c8d3cc6 100644 --- a/stdlib/src/memory/unsafe_pointer.mojo +++ b/stdlib/src/memory/unsafe_pointer.mojo @@ -218,11 +218,11 @@ struct UnsafePointer[ ) @always_inline - fn offset[T: IntLike, //](self, idx: T) -> Self: + fn offset[I: Indexer, //](self, idx: I) -> Self: """Returns a new pointer shifted by the specified offset. Parameters: - T: The type of idx; either `Int` or `UInt`. + I: A type that can be used as an index. Args: idx: The offset of the new pointer. @@ -230,16 +230,16 @@ struct UnsafePointer[ Returns: The new constructed UnsafePointer. """ - return __mlir_op.`pop.offset`(self.address, idx.__mlir_index__()) + return __mlir_op.`pop.offset`(self.address, index(idx)) @always_inline fn __getitem__[ - IntLike: IntLike, // - ](self, offset: IntLike) -> ref [origin, address_space] type: + I: Indexer, // + ](self, offset: I) -> ref [origin, address_space] type: """Return a reference to the underlying data, offset by the given index. Parameters: - IntLike: The type of idx; either `Int` or `UInt`. + I: A type that can be used as an index. Args: offset: The offset index. @@ -250,11 +250,11 @@ struct UnsafePointer[ return (self + offset)[] @always_inline - fn __add__[T: IntLike, //](self, offset: T) -> Self: + fn __add__[I: Indexer, //](self, offset: I) -> Self: """Return a pointer at an offset from the current one. Parameters: - T: The type of idx; either `Int` or `UInt`. + I: A type that can be used as an index. Args: offset: The offset index. @@ -265,11 +265,11 @@ struct UnsafePointer[ return self.offset(offset) @always_inline - fn __sub__[T: IntLike, //](self, offset: T) -> Self: + fn __sub__[I: Indexer, //](self, offset: I) -> Self: """Return a pointer at an offset from the current one. Parameters: - T: The type of idx; either `Int` or `UInt`. + I: A type that can be used as an index. Args: offset: The offset index. @@ -277,14 +277,14 @@ struct UnsafePointer[ Returns: An offset pointer. """ - return self + (-1 * Int(offset.__mlir_index__())) + return self + (-1 * index(offset)) @always_inline - fn __iadd__[T: IntLike, //](mut self, offset: T): + fn __iadd__[I: Indexer, //](mut self, offset: I): """Add an offset to this pointer. Parameters: - T: The type of idx; either `Int` or `UInt`. + I: A type that can be used as an index. Args: offset: The offset index. @@ -292,11 +292,11 @@ struct UnsafePointer[ self = self + offset @always_inline - fn __isub__[T: IntLike, //](mut self, offset: T): + fn __isub__[I: Indexer, //](mut self, offset: I): """Subtract an offset from this pointer. Parameters: - T: The type of idx; either `Int` or `UInt`. + I: A type that can be used as an index. Args: offset: The offset index. @@ -578,21 +578,21 @@ struct UnsafePointer[ @always_inline("nodebug") fn load[ - T: IntLike, + I: Indexer, type: DType, //, width: Int = 1, *, alignment: Int = _default_alignment[type, width](), volatile: Bool = False, invariant: Bool = False, - ](self: UnsafePointer[Scalar[type], **_], offset: T) -> SIMD[type, width]: + ](self: UnsafePointer[Scalar[type], **_], offset: I) -> SIMD[type, width]: """Loads the value the pointer points to with the given offset. Constraints: The width and alignment must be positive integer values. Parameters: - T: The type of offset, either `Int` or `UInt`. + I: A type that can be used as an index. type: The data type of SIMD vector elements. width: The size of the SIMD vector. alignment: The minimal alignment of the address. @@ -614,12 +614,12 @@ struct UnsafePointer[ @always_inline fn store[ - T: IntLike, + I: Indexer, type: DType, //, *, alignment: Int = _default_alignment[type](), volatile: Bool = False, - ](self: UnsafePointer[Scalar[type], **_], offset: T, val: Scalar[type],): + ](self: UnsafePointer[Scalar[type], **_], offset: I, val: Scalar[type],): """Stores a single element value at the given offset. Constraints: @@ -627,7 +627,7 @@ struct UnsafePointer[ The offset must be integer. Parameters: - T: The type of offset, either `Int` or `UInt`. + I: A type that can be used as an index. type: The data type of SIMD vector elements. alignment: The minimal alignment of the address. volatile: Whether the operation is volatile or not. @@ -641,7 +641,7 @@ struct UnsafePointer[ @always_inline fn store[ - T: IntLike, + I: Indexer, type: DType, width: Int, //, *, @@ -649,7 +649,7 @@ struct UnsafePointer[ volatile: Bool = False, ]( self: UnsafePointer[Scalar[type], **_], - offset: T, + offset: I, val: SIMD[type, width], ): """Stores a single element value at the given offset. @@ -659,7 +659,7 @@ struct UnsafePointer[ The offset must be integer. Parameters: - T: The type of offset, either `Int` or `UInt`. + I: A type that can be used as an index. type: The data type of SIMD vector elements. width: The size of the SIMD vector. alignment: The minimal alignment of the address. diff --git a/stdlib/src/prelude/__init__.mojo b/stdlib/src/prelude/__init__.mojo index add29683cd..50c1cb8d1b 100644 --- a/stdlib/src/prelude/__init__.mojo +++ b/stdlib/src/prelude/__init__.mojo @@ -57,8 +57,8 @@ from builtin.int import ( Indexer, Int, Intable, + ImplicitlyIntable, IntableRaising, - IntLike, index, int, ) diff --git a/stdlib/src/python/python_object.mojo b/stdlib/src/python/python_object.mojo index b1ff31ec2c..7492ce0c40 100644 --- a/stdlib/src/python/python_object.mojo +++ b/stdlib/src/python/python_object.mojo @@ -200,15 +200,17 @@ struct TypedPythonObject[type_hint: StringLiteral]( # 'Tuple' Operations # ===-------------------------------------------------------------------===# - fn __getitem__( - self: TypedPythonObject["Tuple"], - pos: Int, - ) raises -> PythonObject: + fn __getitem__[ + I: Indexer + ](self: TypedPythonObject["Tuple"], pos: I,) raises -> PythonObject: """Get an element from this tuple. Args: pos: The tuple element position to retrieve. + Parameters: + I: A type that can be used as an index. + Returns: The value of the tuple element at the specified position. """ @@ -216,7 +218,7 @@ struct TypedPythonObject[type_hint: StringLiteral]( var item: PyObjectPtr = cpython.PyTuple_GetItem( self.unsafe_as_py_object_ptr(), - pos, + index(pos), ) if item.is_null(): @@ -230,8 +232,8 @@ struct TypedPythonObject[type_hint: StringLiteral]( @register_passable struct PythonObject( ImplicitlyBoolable, + ImplicitlyIntable, Indexer, - Intable, KeyElement, SizedRaising, Stringable, @@ -1456,13 +1458,13 @@ struct PythonObject( debug_assert(result != -1, "object is not hashable") hasher.update(result) - fn __index__(self) -> Int: + fn __index__(self) -> __mlir_type.index: """Returns an index representation of the object. Returns: An index value that represents this object. """ - return self.__int__() + return self.__int__().value fn __int__(self) -> Int: """Returns an integral representation of the object. @@ -1473,6 +1475,14 @@ struct PythonObject( cpython = _get_global_python_itf().cpython() return cpython.PyLong_AsSsize_t(self.py_object) + fn __as_int__(self) -> Int: + """Implicitly convert to an Int. + + Returns: + An integral value that represents this object. + """ + return self.__int__() + fn __float__(self) -> Float64: """Returns a float representation of the object. diff --git a/stdlib/src/utils/index.mojo b/stdlib/src/utils/index.mojo index 8c87763619..4e66f31f28 100644 --- a/stdlib/src/utils/index.mojo +++ b/stdlib/src/utils/index.mojo @@ -393,9 +393,12 @@ struct IndexList[ return int(self.data.__getitem__[idx]()) @always_inline("nodebug") - fn __getitem__(self, idx: Int) -> Int: + fn __getitem__[I: Indexer](self, idx: I) -> Int: """Gets an element from the tuple by index. + Parameters: + I: A type that can be used as an index. + Args: idx: The element index. @@ -405,28 +408,28 @@ struct IndexList[ return int(self.data[idx]) @always_inline("nodebug") - fn __setitem__[index: Int](mut self, val: Int): + fn __setitem__[idx: Int](mut self, val: Int): """Sets an element in the tuple at the given static index. Parameters: - index: The element index. + idx: The element index. Args: val: The value to store. """ - self.data.__setitem__[index](val) + self.data.__setitem__[idx](val) @always_inline("nodebug") - fn __setitem__[index: Int](mut self, val: Self._int_type): + fn __setitem__[idx: Int](mut self, val: Self._int_type): """Sets an element in the tuple at the given static index. Parameters: - index: The element index. + idx: The element index. Args: val: The value to store. """ - self.data.__setitem__[index](val) + self.data.__setitem__[idx](val) @always_inline("nodebug") fn __setitem__(mut self, idx: Int, val: Int): diff --git a/stdlib/src/utils/static_tuple.mojo b/stdlib/src/utils/static_tuple.mojo index 0f118f6486..3808906c12 100644 --- a/stdlib/src/utils/static_tuple.mojo +++ b/stdlib/src/utils/static_tuple.mojo @@ -193,13 +193,11 @@ struct StaticTuple[element_type: AnyTrivialRegType, size: Int](Sized): return val @always_inline("nodebug") - fn __getitem__[ - IntLike: IntLike, // - ](self, idx: IntLike) -> Self.element_type: + fn __getitem__[I: Indexer, //](self, idx: I) -> Self.element_type: """Returns the value of the tuple at the given dynamic index. Parameters: - IntLike: The type of idx; either `Int` or `UInt`. + I: A type that can be used as an index. Args: idx: The index into the tuple. @@ -207,46 +205,40 @@ struct StaticTuple[element_type: AnyTrivialRegType, size: Int](Sized): Returns: The value at the specified position. """ - debug_assert( - int(idx.__mlir_index__()) < size, "index must be within bounds" - ) + debug_assert(size > index(idx), "index must be within bounds") var ptr = __mlir_op.`pop.array.gep`( - UnsafePointer.address_of(self.array).address, idx.__mlir_index__() + UnsafePointer.address_of(self.array).address, index(idx) ) return UnsafePointer(ptr)[] @always_inline("nodebug") - fn __setitem__[ - IntLike: IntLike, // - ](mut self, idx: IntLike, val: Self.element_type): + fn __setitem__[I: Indexer, //](mut self, idx: I, val: Self.element_type): """Stores a single value into the tuple at the specified dynamic index. Parameters: - IntLike: The type of idx; either `Int` or `UInt`. + I: A type that can be used as an index. Args: idx: The index into the tuple. val: The value to store. """ - debug_assert( - int(idx.__mlir_index__()) < size, "index must be within bounds" - ) + debug_assert(size > index(idx), "index must be within bounds") var tmp = self var ptr = __mlir_op.`pop.array.gep`( - UnsafePointer.address_of(tmp.array).address, idx.__mlir_index__() + UnsafePointer.address_of(tmp.array).address, index(idx) ) UnsafePointer(ptr)[] = val self = tmp @always_inline("nodebug") - fn __setitem__[index: Int](mut self, val: Self.element_type): + fn __setitem__[idx: Int](mut self, val: Self.element_type): """Stores a single value into the tuple at the specified index. Parameters: - index: The index into the tuple. + idx: The index into the tuple. Args: val: The value to store. """ - constrained[index < size]() - _set_array_elem[index, size, Self.element_type](val, self.array) + constrained[idx < size]() + _set_array_elem[idx, size, Self.element_type](val, self.array) diff --git a/stdlib/src/utils/stringref.mojo b/stdlib/src/utils/stringref.mojo index ad78d89db9..a24d71c9bc 100644 --- a/stdlib/src/utils/stringref.mojo +++ b/stdlib/src/utils/stringref.mojo @@ -229,16 +229,19 @@ struct StringRef( # ===-------------------------------------------------------------------===# @always_inline("nodebug") - fn __getitem__(self, idx: Int) -> StringRef: + fn __getitem__[I: Indexer](self, idx: I) -> StringRef: """Get the string value at the specified position. Args: idx: The index position. + Parameters: + I: A type that can be used as an index. + Returns: The character at the specified position. """ - return StringRef {data: self.data + idx, length: 1} + return StringRef {data: self.data + int(idx), length: 1} @always_inline fn __eq__(self, rhs: StringRef) -> Bool: diff --git a/stdlib/test/builtin/test_bool.mojo b/stdlib/test/builtin/test_bool.mojo index bb3079a48e..ccde4536d2 100644 --- a/stdlib/test/builtin/test_bool.mojo +++ b/stdlib/test/builtin/test_bool.mojo @@ -113,8 +113,8 @@ def test_neg(): def test_indexer(): - assert_equal(1, Bool.__index__(True)) - assert_equal(0, Bool.__index__(False)) + assert_true(1 == index(Bool(True))) + assert_true(0 == index(Bool(False))) def test_comparisons(): diff --git a/stdlib/test/builtin/test_format_int.mojo b/stdlib/test/builtin/test_format_int.mojo index 58d8308c9b..990f0feb9d 100644 --- a/stdlib/test/builtin/test_format_int.mojo +++ b/stdlib/test/builtin/test_format_int.mojo @@ -78,8 +78,8 @@ fn test_hex() raises: @value -struct Ind(Indexer): - fn __index__(self) -> Int: +struct Ind(Intable): + fn __int__(self) -> Int: return 1 @@ -128,7 +128,7 @@ def test_oct_bool(): assert_equal(oct(False), "0o0") -def test_indexer(): +def test_intable(): assert_equal(bin(Ind()), "0b1") assert_equal(hex(Ind()), "0x1") assert_equal(oct(Ind()), "0o1") @@ -158,7 +158,7 @@ def main(): test_bin_scalar() test_bin_int() test_bin_bool() - test_indexer() + test_intable() test_oct_scalar() test_oct_bool() test_oct_int() diff --git a/stdlib/test/builtin/test_int.mojo b/stdlib/test/builtin/test_int.mojo index 9919b2f636..d6d306c391 100644 --- a/stdlib/test/builtin/test_int.mojo +++ b/stdlib/test/builtin/test_int.mojo @@ -153,8 +153,8 @@ def test_int_representation(): def test_indexer(): - assert_equal(5, Int(5).__index__()) - assert_equal(987, Int(987).__index__()) + assert_true(5 == index(Int(5))) + assert_true(987 == index(Int(987))) def test_bool(): diff --git a/stdlib/test/builtin/test_int_literal.mojo b/stdlib/test/builtin/test_int_literal.mojo index 9651e564b5..8bc148e4fd 100644 --- a/stdlib/test/builtin/test_int_literal.mojo +++ b/stdlib/test/builtin/test_int_literal.mojo @@ -92,8 +92,8 @@ def test_abs(): def test_indexer(): - assert_equal(1, IntLiteral.__index__(1)) - assert_equal(88, IntLiteral.__index__(88)) + assert_true(1 == index(1)) + assert_true(88 == index(88)) def test_divmod(): diff --git a/stdlib/test/builtin/test_uint.mojo b/stdlib/test/builtin/test_uint.mojo index 1af1d2f125..005c7ee43f 100644 --- a/stdlib/test/builtin/test_uint.mojo +++ b/stdlib/test/builtin/test_uint.mojo @@ -212,8 +212,8 @@ def test_int_representation(): def test_indexer(): - assert_equal(UInt(5), UInt(5).__index__()) - assert_equal(UInt(987), UInt(987).__index__()) + assert_true(5 == index(UInt(5))) + assert_true(987 == index(UInt(987))) def test_comparison(): From b505895a3bda7d04f013bfc96b6edffb86114d47 Mon Sep 17 00:00:00 2001 From: Connor Gray Date: Thu, 9 Jan 2025 15:27:48 -0600 Subject: [PATCH 182/509] [mojo] Add `ExplicitlyCopyable` support for `@value` and in MLIR types With this change, the `@value` annotation now will add an implementation of the `fn copy(self) -> Self` method required by the `ExplicitlyCopyable` trait. This change obviates the main ergonomics issue with the `ExplicitlyCopyable` trait today, which is that it has to be written out explicitly by type authors, even though its implementation is typically trivially `return self` for any type that also implements `__copyinit__()`. This will enable further changes to replace `Copyable` as a requirement of `CollectionElement` with `ExplicitlyCopyable`, advancing the cause of minimizing where implicit copies are done in core Mojo container implementations by making those copies explicit to authors and readers. MODULAR_ORIG_COMMIT_REV_ID: eb8b20da08b36588294e40d6e9031bcc463dabc3 --- docs/changelog.md | 4 ++++ stdlib/src/builtin/_stubs.mojo | 5 ++++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/docs/changelog.md b/docs/changelog.md index 0e14258db3..c3780544a8 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -30,6 +30,10 @@ what we publish. - The legacy `borrowed`/`inout` keywords and `-> T as foo` syntax now generate a warning. Please move to `read`/`mut`/`out` argument syntax instead. +- The `@value` decorator now additionally derives an implementation of the + `ExplicitlyCopyable` trait. This will ease the transition to explicit + copyablility requirements by default in the Mojo collection types. + ### Standard library changes - `UnsafePointer`'s `bitcast` method has now been split into `bitcast` diff --git a/stdlib/src/builtin/_stubs.mojo b/stdlib/src/builtin/_stubs.mojo index 4879a225fb..8a6bcaaf16 100644 --- a/stdlib/src/builtin/_stubs.mojo +++ b/stdlib/src/builtin/_stubs.mojo @@ -19,9 +19,12 @@ from builtin.range import _StridedRangeIterator, _UIntStridedRangeIterator @register_passable("trivial") -struct __MLIRType[T: AnyTrivialRegType](Movable, Copyable): +struct __MLIRType[T: AnyTrivialRegType](Movable, Copyable, ExplicitlyCopyable): var value: T + fn copy(self) -> Self: + return self + # ===-----------------------------------------------------------------------===# # parameter_for From 8bb74cdecd47da99557a2e35b63c2f8532680287 Mon Sep 17 00:00:00 2001 From: Lukas Hermann <1734032+lsh@users.noreply.github.com> Date: Thu, 9 Jan 2025 15:13:21 -0800 Subject: [PATCH 183/509] [******] AMD print (#53623) MODULAR_ORIG_COMMIT_REV_ID: cfdbd432318f0e2a77f548d090411ffb102c19ea --- stdlib/src/os/atomic.mojo | 47 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/stdlib/src/os/atomic.mojo b/stdlib/src/os/atomic.mojo index 5eaac49644..5b34c70298 100644 --- a/stdlib/src/os/atomic.mojo +++ b/stdlib/src/os/atomic.mojo @@ -91,6 +91,53 @@ struct Atomic[type: DType, *, scope: StringLiteral = ""]: rhs.value, ) + @staticmethod + @always_inline + fn _xchg( + ptr: UnsafePointer[Scalar[type], **_], value: Scalar[type] + ) -> Scalar[type]: + """Performs an atomic exchange. + The operation is a read-modify-write operation. Memory + is affected according to the value of order which is sequentially + consistent. + + Args: + ptr: The source pointer. + value: The to exchange. + + Returns: + The value of the value before the operation. + """ + return __mlir_op.`pop.atomic.rmw`[ + bin_op = __mlir_attr.`#pop`, + ordering = __mlir_attr.`#pop`, + _type = __mlir_type[`!pop.scalar<`, type.value, `>`], + ]( + ptr.bitcast[__mlir_type[`!pop.scalar<`, type.value, `>`]]().address, + value.value, + ) + + @staticmethod + @always_inline + fn store(ptr: UnsafePointer[Scalar[type], **_], value: Scalar[type]): + """Performs atomic store. + The operation is a read-modify-write operation. Memory + is affected according to the value of order which is sequentially + consistent. + + Args: + ptr: The source pointer. + value: The value to store. + """ + _ = __mlir_op.`pop.atomic.rmw`[ + bin_op = __mlir_attr.`#pop`, + ordering = __mlir_attr.`#pop`, + _type = __mlir_type[`!pop.scalar<`, type.value, `>`], + ]( + ptr.bitcast[__mlir_type[`!pop.scalar<`, type.value, `>`]]().address, + value.value, + ) + @always_inline fn fetch_add(mut self, rhs: Scalar[type]) -> Scalar[type]: """Performs atomic in-place add. From 50111d965dbf43669a511246df4e67859ecea9df Mon Sep 17 00:00:00 2001 From: Lukas Hermann <1734032+lsh@users.noreply.github.com> Date: Thu, 9 Jan 2025 17:05:04 -0800 Subject: [PATCH 184/509] [stdlib] Add several GPU intrinsics These intrinsics will be needed for follow up work. MODULAR_ORIG_COMMIT_REV_ID: 1d4ca2a5bb741dfdc56929ec53a64ac0019c70b6 --- stdlib/src/sys/intrinsics.mojo | 107 ++++++++++++++++++++++++++++++++- 1 file changed, 106 insertions(+), 1 deletion(-) diff --git a/stdlib/src/sys/intrinsics.mojo b/stdlib/src/sys/intrinsics.mojo index 818ff9bd17..3244052f14 100644 --- a/stdlib/src/sys/intrinsics.mojo +++ b/stdlib/src/sys/intrinsics.mojo @@ -22,9 +22,10 @@ from sys import PrefetchLocality import math from memory import AddressSpace, UnsafePointer +from memory.pointer import _GPUAddressSpace from ._assembly import inlined_assembly -from .info import is_nvidia_gpu, sizeof +from .info import is_nvidia_gpu, is_amd_gpu, sizeof # ===-----------------------------------------------------------------------===# # llvm_intrinsic @@ -860,3 +861,107 @@ fn assume(val: Bool): val: The input value which is assumed to be `True`. """ llvm_intrinsic["llvm.assume", NoneType, has_side_effect=False](val) + + +# ===-----------------------------------------------------------------------===# +# lane_id +# ===-----------------------------------------------------------------------===# + + +@always_inline("nodebug") +fn lane_id() -> UInt: + """Returns the lane ID of the current thread. + + Returns: + The lane ID of the the current thread. + """ + constrained[is_gpu(), "This function only applies to GPUs."]() + + @parameter + if is_nvidia_gpu(): + return UInt( + int( + llvm_intrinsic[ + "llvm.nvvm.read.ptx.sreg.laneid", + Int32, + has_side_effect=False, + ]().cast[DType.uint32]() + ) + ) + + else: + alias none = Scalar[DType.int32](-1) + alias zero = Scalar[DType.int32](0) + var t = llvm_intrinsic[ + "llvm.amdgcn.mbcnt.lo", Int32, has_side_effect=False + ](none, zero) + return UInt( + int( + llvm_intrinsic[ + "llvm.amdgcn.mbcnt.hi", Int32, has_side_effect=False + ](none, t).cast[DType.uint32]() + ) + ) + + +# ===-----------------------------------------------------------------------===# +# implicitarg_ptr +# ===-----------------------------------------------------------------------===# + + +@always_inline +fn implicitarg_ptr() -> ( + UnsafePointer[UInt8, address_space = _GPUAddressSpace.CONSTANT] +): + """ + Get a pointer to AMD's implicit arguments table. + + Returns: + A pointer to LLVM's implicit arguments table. + """ + constrained[is_amd_gpu(), "This intrinsic is only defined for AMD GPUs"]() + return llvm_intrinsic[ + "llvm.amdgcn.implicitarg.ptr", + UnsafePointer[UInt8, address_space=4], + ]() + + +# ===-----------------------------------------------------------------------===# +# readfirstlane +# ===-----------------------------------------------------------------------===# + + +@always_inline +fn readfirstlane(value: Int32) -> Int32: + """ + Get the lowest acitve lane of the input operand. + + Args: + value: The input thread. + + Returns: + The value in the lowest active lane of the input operand. + """ + constrained[is_amd_gpu(), "This intrinsic is only defined for AMD GPUs"]() + return llvm_intrinsic["llvm.amdgcn.readfirstlane.i32", Int32, Int32](value) + + +# ===-----------------------------------------------------------------------===# +# sendmsg +# ===-----------------------------------------------------------------------===# + + +@always_inline +fn sendmsg(opcode: Int32, msg: Int32): + """ + Send a message to fixed function hardware. + Refer to the specific ISA manual for the ops and messages. + + Args: + opcode: The operation to perform. + msg: The message to send. + """ + constrained[is_amd_gpu(), "This intrinsic is only defined for AMD GPUs"]() + _ = llvm_intrinsic["llvm.amdgcn.s.sendmsg", NoneType, Int32, Int32]( + opcode, msg + ) From 6254a8c052adae41b4ecc3bb61d926f5fe32800f Mon Sep 17 00:00:00 2001 From: Connor Gray Date: Thu, 9 Jan 2025 19:17:53 -0600 Subject: [PATCH 185/509] [stdlib][NFC] cleanup: Implement `ExplicitlyCopyable` for a bunch of types As part of preparing to making `CollectionElement` require `ExplicitlyCopyable`, preemptively implement `ExplicitlyCopyable` for many types. MODULAR_ORIG_COMMIT_REV_ID: df2db3e3de2944b18664fb0597ffb5b0dc10e983 --- stdlib/src/builtin/builtin_list.mojo | 9 +++++++++ stdlib/src/builtin/object.mojo | 9 +++++++++ stdlib/src/builtin/simd.mojo | 4 ++-- stdlib/src/builtin/tuple.mojo | 9 +++++++++ stdlib/src/builtin/value.mojo | 4 ++-- stdlib/src/collections/counter.mojo | 8 ++++++++ stdlib/test/collections/test_list.mojo | 3 +++ stdlib/test/utils/test_variant.mojo | 7 +++++++ 8 files changed, 49 insertions(+), 4 deletions(-) diff --git a/stdlib/src/builtin/builtin_list.mojo b/stdlib/src/builtin/builtin_list.mojo index 516fdbe06c..535ccf206f 100644 --- a/stdlib/src/builtin/builtin_list.mojo +++ b/stdlib/src/builtin/builtin_list.mojo @@ -56,6 +56,15 @@ struct ListLiteral[*Ts: CollectionElement](Sized, CollectionElement): """ self.storage = existing.storage + @always_inline + fn copy(self) -> Self: + """Explicitly construct a copy of self. + + Returns: + A copy of this value. + """ + return self + fn __moveinit__(out self, owned existing: Self): """Move construct the list. diff --git a/stdlib/src/builtin/object.mojo b/stdlib/src/builtin/object.mojo index cdd023ce36..e307fac5f6 100644 --- a/stdlib/src/builtin/object.mojo +++ b/stdlib/src/builtin/object.mojo @@ -936,6 +936,15 @@ struct object( """ self._value = existing._value.copy() + @always_inline + fn copy(self) -> Self: + """Explicitly construct a copy of self. + + Returns: + A copy of this value. + """ + return self + @always_inline fn __del__(owned self): """Delete the object and release any owned memory.""" diff --git a/stdlib/src/builtin/simd.mojo b/stdlib/src/builtin/simd.mojo index a74d707205..d03a77c431 100644 --- a/stdlib/src/builtin/simd.mojo +++ b/stdlib/src/builtin/simd.mojo @@ -299,10 +299,10 @@ struct SIMD[type: DType, size: Int]( @always_inline fn copy(self) -> Self: - """Explicitly construct a deep copy of the provided value. + """Explicitly construct a copy of self. Returns: - A copy of the value. + A copy of this value. """ return self diff --git a/stdlib/src/builtin/tuple.mojo b/stdlib/src/builtin/tuple.mojo index ea6ad3390c..523e322ebc 100644 --- a/stdlib/src/builtin/tuple.mojo +++ b/stdlib/src/builtin/tuple.mojo @@ -110,6 +110,15 @@ struct Tuple[*element_types: CollectionElement](Sized, CollectionElement): for i in range(Self.__len__()): UnsafePointer.address_of(self[i]).init_pointee_copy(existing[i]) + @always_inline + fn copy(self) -> Self: + """Explicitly construct a copy of self. + + Returns: + A copy of this value. + """ + return self + @always_inline("nodebug") fn __moveinit__(out self, owned existing: Self): """Move construct the tuple. diff --git a/stdlib/src/builtin/value.mojo b/stdlib/src/builtin/value.mojo index af565bc129..7376977778 100644 --- a/stdlib/src/builtin/value.mojo +++ b/stdlib/src/builtin/value.mojo @@ -144,10 +144,10 @@ trait ExplicitlyCopyable: """ fn copy(self) -> Self: - """Explicitly construct a deep copy of the provided value. + """Explicitly construct a copy of self. Returns: - A copy of the value. + A copy of this value. """ ... diff --git a/stdlib/src/collections/counter.mojo b/stdlib/src/collections/counter.mojo index 5992cf585f..abe33c2fb8 100644 --- a/stdlib/src/collections/counter.mojo +++ b/stdlib/src/collections/counter.mojo @@ -633,6 +633,14 @@ struct CountTuple[V: KeyElement]( self._value = other._value self._count = other._count + fn copy(self) -> Self: + """Explicitly construct a copy of self. + + Returns: + A copy of this value. + """ + return self + fn __moveinit__(out self, owned other: Self): """Create a new CountTuple by moving another CountTuple. diff --git a/stdlib/test/collections/test_list.mojo b/stdlib/test/collections/test_list.mojo index c6b3e4fb1e..6f69672a60 100644 --- a/stdlib/test/collections/test_list.mojo +++ b/stdlib/test/collections/test_list.mojo @@ -888,6 +888,9 @@ struct DtorCounter(CollectionElement): fn __copyinit__(out self, existing: Self, /): self.payload = existing.payload + fn copy(self) -> Self: + return self + fn __moveinit__(out self, owned existing: Self, /): self.payload = existing.payload existing.payload = 0 diff --git a/stdlib/test/utils/test_variant.mojo b/stdlib/test/utils/test_variant.mojo index 99dae52a54..264e1dd088 100644 --- a/stdlib/test/utils/test_variant.mojo +++ b/stdlib/test/utils/test_variant.mojo @@ -36,6 +36,9 @@ struct TestCounter(CollectionElement): self.copied = other.copied + 1 self.moved = other.moved + fn copy(self) -> Self: + return self + fn __moveinit__(out self, owned other: Self): self.copied = other.copied self.moved = other.moved + 1 @@ -68,6 +71,10 @@ struct Poison(CollectionElement): fn __copyinit__(out self, other: Self): _poison_ptr().init_pointee_move(True) + fn copy(self) -> Self: + # Invokes __copyinit__, which sets the poision value. + return self + fn __moveinit__(out self, owned other: Self): _poison_ptr().init_pointee_move(True) From 41a7e724dab42adc0f492865a45a191aa430ba13 Mon Sep 17 00:00:00 2001 From: modularbot Date: Sat, 11 Jan 2025 03:55:28 +0000 Subject: [PATCH 186/509] Update lockfiles to point to latest nightly version: 25.1.0.dev2025011022 --- examples/life/magic.lock | 8771 ++++++++++++--------------------- examples/magic.lock | 6607 +++++++++---------------- examples/notebooks/magic.lock | 7326 +++++++++------------------ examples/operators/magic.lock | 6511 +++++++++--------------- magic.lock | 6519 +++++++++--------------- 5 files changed, 12490 insertions(+), 23244 deletions(-) diff --git a/examples/life/magic.lock b/examples/life/magic.lock index 3a66c8dfbe..e7b8af260a 100644 --- a/examples/life/magic.lock +++ b/examples/life/magic.lock @@ -1,4 +1,4 @@ -version: 5 +version: 6 environments: default: channels: @@ -170,12 +170,12 @@ 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-25.1.0.dev2025010817-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025010817-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025010817-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025010817-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011022-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025011022-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025011022-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011022-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-25.1.0.dev2025010817-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011022-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_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.15-py312h98912ed_1.conda @@ -210,7 +210,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-18.1.0-py312h7900ff3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-18.1.0-py312h01725c0_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.4-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.5-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.27.2-py312h12e396e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.7.1-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pygame-2.6.1-py312h4fcb14b_0.conda @@ -236,7 +236,7 @@ environments: - 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.10-hb5b8611_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/safetensors-0.5.1-py312h12e396e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/safetensors-0.5.2-py312h12e396e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/sdl2-2.30.10-h63c27ac_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/sdl2_image-2.8.2-h06ee604_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/sdl2_mixer-2.6.3-h8830914_1.conda @@ -253,7 +253,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.48.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda @@ -264,7 +264,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.34.0-pyh31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.34.0-h31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/uvloop-0.21.0-py312h66e93f0_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/watchfiles-1.0.3-py312h12e396e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/watchfiles-1.0.4-py312h12e396e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/websockets-14.1-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.17.0-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libice-1.1.2-hb9d3cd8_0.conda @@ -446,12 +446,12 @@ 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-25.1.0.dev2025010817-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025010817-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025010817-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025010817-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011022-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025011022-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025011022-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011022-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-25.1.0.dev2025010817-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011022-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_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.15-py312hdd3e373_1.conda @@ -486,7 +486,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-18.1.0-py312h8025657_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-18.1.0-py312h66f7834_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.4-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.5-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pydantic-core-2.27.2-py312h8cbf658_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.7.1-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pygame-2.6.1-py312hb2c8110_0.conda @@ -512,7 +512,7 @@ environments: - 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.10-h5df210e_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/safetensors-0.5.1-py312h8cbf658_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/safetensors-0.5.2-py312h8cbf658_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sdl2-2.30.10-h93e764a_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sdl2_image-2.8.2-hd95cb85_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sdl2_mixer-2.6.3-h422cae6_1.conda @@ -529,7 +529,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py312h52516f5_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.48.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda @@ -540,7 +540,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.34.0-pyh31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.34.0-h31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/uvloop-0.21.0-py312hb2c0f52_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/watchfiles-1.0.3-py312h8cbf658_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/watchfiles-1.0.4-py312h8cbf658_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/websockets-14.1-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/wrapt-1.17.0-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libice-1.1.2-h86ecc28_0.conda @@ -705,12 +705,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-25.1.0.dev2025010817-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025010817-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025010817-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025010817-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011022-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025011022-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025011022-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011022-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-25.1.0.dev2025010817-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011022-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 @@ -744,7 +744,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-18.1.0-py312h1f38498_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-18.1.0-py312hc40f475_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.4-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.5-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.27.2-py312hcd83bfe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.7.1-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pygame-2.6.1-py312hb14fe3b_0.conda @@ -769,7 +769,7 @@ environments: - 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.5.1-py312hcd83bfe_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/safetensors-0.5.2-py312hcd83bfe_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 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sdl2_mixer-2.6.3-h4fe3bdc_1.conda @@ -786,7 +786,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.48.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda @@ -797,7 +797,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.34.0-pyh31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.34.0-h31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/uvloop-0.21.0-py312h0bf5046_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/watchfiles-1.0.3-py312hcd83bfe_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/watchfiles-1.0.4-py312hcd83bfe_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/websockets-14.1-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/wrapt-1.17.0-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxau-1.0.12-h5505292_0.conda @@ -810,24 +810,16 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py312h15fbf35_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.6-hb46c0d2_0.conda packages: -- kind: conda - name: _libgcc_mutex - version: '0.1' - build: conda_forge - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 sha256: fe51de6107f9edc7aa4f786a70f4a883943bc9d39b3bb7307c04c41410990726 md5: d7c89558ba9fa0495403155b64376d81 + arch: x86_64 + platform: linux license: None size: 2562 timestamp: 1578324546067 -- kind: conda - name: _openmp_mutex - version: '4.5' - build: 2_gnu +- conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 build_number: 16 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 sha256: fbe2c5e56a653bebb982eda4876a9178aedfc2b545f25d0ce9c4c0b508253d22 md5: 73aaf86a425cc6e73fcf236a5a46396d depends: @@ -835,35 +827,27 @@ packages: - libgomp >=7.5.0 constrains: - openmp_impl 9999 + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD size: 23621 timestamp: 1650670423406 -- kind: conda - name: _openmp_mutex - version: '4.5' - build: 2_gnu +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2 build_number: 16 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2 sha256: 3702bef2f0a4d38bd8288bbe54aace623602a1343c2cfbefd3fa188e015bebf0 md5: 6168d71addc746e8f2b8d57dfd2edcea depends: - libgomp >=7.5.0 constrains: - openmp_impl 9999 + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD size: 23712 timestamp: 1650670790230 -- kind: conda - name: aiohappyeyeballs - version: 2.4.4 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_1.conda sha256: 95d4713e49ea92ae50cf42393683ede706b7875af5f7cb14c253438180afa732 md5: 296b403617bafa89df4971567af79013 depends: @@ -872,12 +856,7 @@ packages: license_family: PSF size: 19351 timestamp: 1733332029649 -- kind: conda - name: aiohttp - version: 3.11.11 - build: py312h178313f_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.11-py312h178313f_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.11-py312h178313f_0.conda sha256: 2e817805e8a4fed33f23f116ff5649f8651af693328e9ed82d9d11a951338693 md5: 8219afa093757bbe07b9825eb1973ed9 depends: @@ -892,65 +871,55 @@ packages: - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 - yarl >=1.17.0,<2.0 + arch: x86_64 + platform: linux license: MIT AND Apache-2.0 license_family: Apache size: 915358 timestamp: 1734597073870 -- kind: conda - name: aiohttp - version: 3.11.11 - build: py312h998013c_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.11-py312h998013c_0.conda - sha256: 446f078e7a7b892894d7f4851a278b7834ffb4f5632313646a55c3abe13690d4 - md5: c69c904691364cfb27d15aa7153e9c29 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.11-py312hcc812fe_0.conda + sha256: f28e81e458d19df4ca0002f8a92d7f647fa25e8179887a8676801dfe44edb1f2 + md5: 11fa88136d9bf39d2136b2378f7c10be depends: - - __osx >=11.0 - aiohappyeyeballs >=2.3.0 - aiosignal >=1.1.2 - attrs >=17.3.0 - frozenlist >=1.1.1 + - libgcc >=13 - multidict >=4.5,<7.0 - propcache >=0.2.0 - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 - yarl >=1.17.0,<2.0 + arch: aarch64 + platform: linux license: MIT AND Apache-2.0 license_family: Apache - size: 875711 - timestamp: 1734597277258 -- kind: conda - name: aiohttp - version: 3.11.11 - build: py312hcc812fe_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.11-py312hcc812fe_0.conda - sha256: f28e81e458d19df4ca0002f8a92d7f647fa25e8179887a8676801dfe44edb1f2 - md5: 11fa88136d9bf39d2136b2378f7c10be + size: 902422 + timestamp: 1734597104529 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.11-py312h998013c_0.conda + sha256: 446f078e7a7b892894d7f4851a278b7834ffb4f5632313646a55c3abe13690d4 + md5: c69c904691364cfb27d15aa7153e9c29 depends: + - __osx >=11.0 - aiohappyeyeballs >=2.3.0 - aiosignal >=1.1.2 - attrs >=17.3.0 - frozenlist >=1.1.1 - - libgcc >=13 - multidict >=4.5,<7.0 - propcache >=0.2.0 - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 - yarl >=1.17.0,<2.0 + arch: arm64 + platform: osx license: MIT AND Apache-2.0 license_family: Apache - size: 902422 - timestamp: 1734597104529 -- kind: conda - name: aiosignal - version: 1.3.2 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda + size: 875711 + timestamp: 1734597277258 +- conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda sha256: 7de8ced1918bbdadecf8e1c1c68237fe5709c097bd9e0d254f4cad118f4345d0 md5: 1a3981115a398535dbe3f6d5faae3d36 depends: @@ -960,43 +929,30 @@ packages: license_family: APACHE size: 13229 timestamp: 1734342253061 -- kind: conda - name: alsa-lib - version: 1.2.13 - build: h86ecc28_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/alsa-lib-1.2.13-h86ecc28_0.conda - sha256: 4141180b0304559fefa8ca66f1cc217a1d957b03aa959f955daf33718162042f - md5: f643bb02c4bbcfe7de161a8ca5df530b - depends: - - libgcc >=13 - license: LGPL-2.1-or-later - license_family: GPL - size: 591318 - timestamp: 1731489774660 -- kind: conda - name: alsa-lib - version: 1.2.13 - build: hb9d3cd8_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/alsa-lib-1.2.13-hb9d3cd8_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/alsa-lib-1.2.13-hb9d3cd8_0.conda sha256: f507b58f77eabc0cc133723cb7fc45c053d551f234df85e70fb3ede082b0cd53 md5: ae1370588aa6a5157c34c73e9bbb36a0 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 + arch: x86_64 + platform: linux license: LGPL-2.1-or-later license_family: GPL size: 560238 timestamp: 1731489643707 -- kind: conda - name: annotated-types - version: 0.7.0 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/alsa-lib-1.2.13-h86ecc28_0.conda + sha256: 4141180b0304559fefa8ca66f1cc217a1d957b03aa959f955daf33718162042f + md5: f643bb02c4bbcfe7de161a8ca5df530b + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: LGPL-2.1-or-later + license_family: GPL + size: 591318 + timestamp: 1731489774660 +- conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda sha256: e0ea1ba78fbb64f17062601edda82097fcf815012cf52bb704150a2668110d48 md5: 2934f256a8acfe48f6ebb4fce6cde29c depends: @@ -1006,13 +962,7 @@ packages: license_family: MIT size: 18074 timestamp: 1733247158254 -- kind: conda - name: anyio - version: 4.8.0 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/anyio-4.8.0-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.8.0-pyhd8ed1ab_0.conda sha256: f1455d2953e3eb6d71bc49881c8558d8e01888469dfd21061dd48afb6183e836 md5: 848d25bfbadf020ee4d4ba90e5668252 depends: @@ -1028,88 +978,65 @@ packages: license_family: MIT size: 115305 timestamp: 1736174485476 -- kind: conda - name: aom - version: 3.9.1 - build: h7bae524_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aom-3.9.1-h7bae524_0.conda - sha256: ec238f18ce8140485645252351a0eca9ef4f7a1c568a420f240a585229bc12ef - md5: 7adba36492a1bb22d98ffffe4f6fc6de - depends: - - __osx >=11.0 - - libcxx >=16 - license: BSD-2-Clause - license_family: BSD - size: 2235747 - timestamp: 1718551382432 -- kind: conda - name: aom - version: 3.9.1 - build: hac33072_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aom-3.9.1-hac33072_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/aom-3.9.1-hac33072_0.conda sha256: b08ef033817b5f9f76ce62dfcac7694e7b6b4006420372de22494503decac855 md5: 346722a0be40f6edc53f12640d301338 depends: - libgcc-ng >=12 - libstdcxx-ng >=12 + arch: x86_64 + platform: linux license: BSD-2-Clause license_family: BSD size: 2706396 timestamp: 1718551242397 -- kind: conda - name: aom - version: 3.9.1 - build: hcccb83c_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aom-3.9.1-hcccb83c_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aom-3.9.1-hcccb83c_0.conda sha256: ac438ce5d3d3673a9188b535fc7cda413b479f0d52536aeeac1bd82faa656ea0 md5: cc744ac4efe5bcaa8cca51ff5b850df0 depends: - libgcc-ng >=12 - libstdcxx-ng >=12 + arch: aarch64 + platform: linux license: BSD-2-Clause license_family: BSD size: 3250813 timestamp: 1718551360260 -- kind: conda - name: attr - version: 2.5.1 - build: h166bdaf_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/attr-2.5.1-h166bdaf_1.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aom-3.9.1-h7bae524_0.conda + sha256: ec238f18ce8140485645252351a0eca9ef4f7a1c568a420f240a585229bc12ef + md5: 7adba36492a1bb22d98ffffe4f6fc6de + depends: + - __osx >=11.0 + - libcxx >=16 + arch: arm64 + platform: osx + license: BSD-2-Clause + license_family: BSD + size: 2235747 + timestamp: 1718551382432 +- conda: https://conda.anaconda.org/conda-forge/linux-64/attr-2.5.1-h166bdaf_1.tar.bz2 sha256: 82c13b1772c21fc4a17441734de471d3aabf82b61db9b11f4a1bd04a9c4ac324 md5: d9c69a24ad678ffce24c6543a0176b00 depends: - libgcc-ng >=12 + arch: x86_64 + platform: linux license: GPL-2.0-or-later license_family: GPL size: 71042 timestamp: 1660065501192 -- kind: conda - name: attr - version: 2.5.1 - build: h4e544f5_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/attr-2.5.1-h4e544f5_1.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/attr-2.5.1-h4e544f5_1.tar.bz2 sha256: 2c793b48e835a8fac93f1664c706442972a0206963bf8ca202e83f7f4d29a7d7 md5: 1ef6c06fec1b6f5ee99ffe2152e53568 depends: - libgcc-ng >=12 + arch: aarch64 + platform: linux license: GPL-2.0-or-later license_family: GPL size: 74992 timestamp: 1660065534958 -- kind: conda - name: attrs - version: 24.3.0 - build: pyh71513ae_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/attrs-24.3.0-pyh71513ae_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.3.0-pyh71513ae_0.conda sha256: 750186af694a7130eaf7119fbb56db0d2326d8995ad5b8eae23c622b85fea29a md5: 356927ace43302bf6f5926e2a58dae6a depends: @@ -1118,13 +1045,24 @@ packages: license_family: MIT size: 56354 timestamp: 1734348889193 -- kind: conda - name: aws-c-auth - version: 0.8.0 - build: h2cb9fb3_15 - build_number: 15 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-h2cb9fb3_15.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-hb921021_15.conda + sha256: 537006ad6d5097c134494166a6a1dc1451d5d050878d7b82cef498bfda40ba8a + md5: c79d50f64cffa5ad51ecc1a81057962f + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 107614 + timestamp: 1734021692519 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-h2cb9fb3_15.conda sha256: 4ce859dc9ff128bf5515604c43f33fb511386022fc9765ca077990f2a3f23df5 md5: e524686ace966acefb5b8cbc6e8b3daa depends: @@ -1134,17 +1072,13 @@ packages: - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - libgcc >=13 + arch: aarch64 + platform: linux license: Apache-2.0 license_family: Apache size: 111854 timestamp: 1734021745104 -- kind: conda - name: aws-c-auth - version: 0.8.0 - build: h8bc59a9_15 - build_number: 15 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-h8bc59a9_15.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-h8bc59a9_15.conda sha256: 0e41e56b662e76e024182adebcd91d09a4d38a83b35217c84e4967354dfff9a2 md5: f688b8893c20ad9477a19e7ce614014a depends: @@ -1154,38 +1088,13 @@ packages: - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 + arch: arm64 + platform: osx license: Apache-2.0 license_family: Apache size: 92507 timestamp: 1734021831330 -- kind: conda - name: aws-c-auth - version: 0.8.0 - build: hb921021_15 - build_number: 15 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-hb921021_15.conda - sha256: 537006ad6d5097c134494166a6a1dc1451d5d050878d7b82cef498bfda40ba8a - md5: c79d50f64cffa5ad51ecc1a81057962f - depends: - - __glibc >=2.17,<3.0.a0 - - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - aws-c-http >=0.9.2,<0.9.3.0a0 - - aws-c-io >=0.15.3,<0.15.4.0a0 - - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - - libgcc >=13 - license: Apache-2.0 - license_family: Apache - size: 107614 - timestamp: 1734021692519 -- kind: conda - name: aws-c-cal - version: 0.8.1 - build: h1a47875_3 - build_number: 3 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.1-h1a47875_3.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.1-h1a47875_3.conda sha256: 095ac824ea9303eff67e04090ae531d9eb33d2bf8f82eaade39b839c421e16e8 md5: 55a8561fdbbbd34f50f57d9be12ed084 depends: @@ -1193,162 +1102,110 @@ packages: - aws-c-common >=0.10.6,<0.10.7.0a0 - libgcc >=13 - openssl >=3.3.1,<4.0a0 + arch: x86_64 + platform: linux license: Apache-2.0 license_family: Apache size: 47601 timestamp: 1733991564405 -- kind: conda - name: aws-c-cal - version: 0.8.1 - build: h740c5af_3 - build_number: 3 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.1-h740c5af_3.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.1-h740c5af_3.conda sha256: c5c7961d48ca7320ed3560c036f7aa5244df4b85d9657f70aacc5faba3e1509a md5: 57ed2c445d7ef01d121b9bcea0522913 depends: - aws-c-common >=0.10.6,<0.10.7.0a0 - libgcc >=13 - openssl >=3.3.1,<4.0a0 + arch: aarch64 + platform: linux license: Apache-2.0 license_family: Apache size: 50036 timestamp: 1733991581303 -- kind: conda - name: aws-c-cal - version: 0.8.1 - build: hc8a0bd2_3 - build_number: 3 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.1-hc8a0bd2_3.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.1-hc8a0bd2_3.conda sha256: 1f44be36e1daa17b4b081debb8aee492d13571084f38b503ad13e869fef24fe4 md5: 8b0ce61384e5a33d2b301a64f3d22ac5 depends: - __osx >=11.0 - aws-c-common >=0.10.6,<0.10.7.0a0 - openssl >=3.3.1,<4.0a0 + arch: arm64 + platform: osx license: Apache-2.0 license_family: Apache size: 39925 timestamp: 1733991649383 -- kind: conda - name: aws-c-common - version: 0.10.6 - build: h5505292_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.10.6-h5505292_0.conda - sha256: 3bde135c8e74987c0f79ecd4fa17ec9cff0d658b3090168727ca1af3815ae57a - md5: 145e5b4c9702ed279d7d68aaf096f77d +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.10.6-hb9d3cd8_0.conda + sha256: 496e92f2150fdc351eacf6e236015deedb3d0d3114f8e5954341cbf9f3dda257 + md5: d7d4680337a14001b0e043e96529409b depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux license: Apache-2.0 license_family: Apache - size: 221863 - timestamp: 1733975576886 -- kind: conda - name: aws-c-common - version: 0.10.6 - build: h86ecc28_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-common-0.10.6-h86ecc28_0.conda + size: 236574 + timestamp: 1733975453350 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-common-0.10.6-h86ecc28_0.conda sha256: 57288ec5df35781bea8fc6a8c9099cad6695b747784fc1b8862a0f9e5b3bf5ab md5: fef806a0f6de853670c746bbece01966 depends: - libgcc >=13 + arch: aarch64 + platform: linux license: Apache-2.0 license_family: Apache size: 259031 timestamp: 1733975520465 -- kind: conda - name: aws-c-common - version: 0.10.6 - build: hb9d3cd8_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.10.6-hb9d3cd8_0.conda - sha256: 496e92f2150fdc351eacf6e236015deedb3d0d3114f8e5954341cbf9f3dda257 - md5: d7d4680337a14001b0e043e96529409b +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.10.6-h5505292_0.conda + sha256: 3bde135c8e74987c0f79ecd4fa17ec9cff0d658b3090168727ca1af3815ae57a + md5: 145e5b4c9702ed279d7d68aaf096f77d + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 221863 + timestamp: 1733975576886 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.3.0-h4e1184b_5.conda + sha256: 62ca84da83585e7814a40240a1e750b1563b2680b032a471464eccc001c3309b + md5: 3f4c1197462a6df2be6dc8241828fe93 depends: - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 - libgcc >=13 + arch: x86_64 + platform: linux license: Apache-2.0 license_family: Apache - size: 236574 - timestamp: 1733975453350 -- kind: conda - name: aws-c-compression - version: 0.3.0 - build: h0f0193d_5 - build_number: 5 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-compression-0.3.0-h0f0193d_5.conda + size: 19086 + timestamp: 1733991637424 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-compression-0.3.0-h0f0193d_5.conda sha256: 3f05d19f68ef800f33d44ea2a4211003124076516c8469abc7d432236344df53 md5: 3a1421d12435df5b4c412cc4c8fac64d depends: - aws-c-common >=0.10.6,<0.10.7.0a0 - libgcc >=13 + arch: aarch64 + platform: linux license: Apache-2.0 license_family: Apache size: 19740 timestamp: 1733991625201 -- kind: conda - name: aws-c-compression - version: 0.3.0 - build: h4e1184b_5 - build_number: 5 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.3.0-h4e1184b_5.conda - sha256: 62ca84da83585e7814a40240a1e750b1563b2680b032a471464eccc001c3309b - md5: 3f4c1197462a6df2be6dc8241828fe93 - depends: - - __glibc >=2.17,<3.0.a0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - libgcc >=13 - license: Apache-2.0 - license_family: Apache - size: 19086 - timestamp: 1733991637424 -- kind: conda - name: aws-c-compression - version: 0.3.0 - build: hc8a0bd2_5 - build_number: 5 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-compression-0.3.0-hc8a0bd2_5.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-compression-0.3.0-hc8a0bd2_5.conda sha256: 47b2813f652ce7e64ac442f771b2a5f7d4af4ad0d07ff51f6075ea80ed2e3f09 md5: a8b6c17732d14ed49d0e9b59c43186bc depends: - __osx >=11.0 - aws-c-common >=0.10.6,<0.10.7.0a0 + arch: arm64 + platform: osx license: Apache-2.0 license_family: Apache size: 18068 timestamp: 1733991869211 -- kind: conda - name: aws-c-event-stream - version: 0.5.0 - build: h54f970a_11 - build_number: 11 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.0-h54f970a_11.conda - sha256: f0667935f4e0d4c25e0e51da035640310b5ceeb8f723156734439bde8b848d7d - md5: ba41238f8e653998d7d2f42e3a8db054 - depends: - - __osx >=11.0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - aws-c-io >=0.15.3,<0.15.4.0a0 - - aws-checksums >=0.2.2,<0.2.3.0a0 - - libcxx >=18 - license: Apache-2.0 - license_family: Apache - size: 47078 - timestamp: 1734024749727 -- kind: conda - name: aws-c-event-stream - version: 0.5.0 - build: h7959bf6_11 - build_number: 11 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.0-h7959bf6_11.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.0-h7959bf6_11.conda sha256: 10d7240c7db0c941fb1a59c4f8ea6689a434b03309ee7b766fa15a809c553c02 md5: 9b3fb60fe57925a92f399bc3fc42eccf depends: @@ -1358,17 +1215,13 @@ packages: - aws-checksums >=0.2.2,<0.2.3.0a0 - libgcc >=13 - libstdcxx >=13 + arch: x86_64 + platform: linux license: Apache-2.0 license_family: Apache size: 54003 timestamp: 1734024480949 -- kind: conda - name: aws-c-event-stream - version: 0.5.0 - build: hcbd8f92_11 - build_number: 11 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-event-stream-0.5.0-hcbd8f92_11.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-event-stream-0.5.0-hcbd8f92_11.conda sha256: 79aa363c71c891a27496c0498f8d498b2ddc87b3ccb3b6c9da5b50b05936ebb8 md5: e0772c59af4243a9b2565baa5d79e5b6 depends: @@ -1377,17 +1230,44 @@ packages: - aws-checksums >=0.2.2,<0.2.3.0a0 - libgcc >=13 - libstdcxx >=13 + arch: aarch64 + platform: linux license: Apache-2.0 license_family: Apache size: 55207 timestamp: 1734024546663 -- kind: conda - name: aws-c-http - version: 0.9.2 - build: h3df160d_4 - build_number: 4 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.2-h3df160d_4.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.0-h54f970a_11.conda + sha256: f0667935f4e0d4c25e0e51da035640310b5ceeb8f723156734439bde8b848d7d + md5: ba41238f8e653998d7d2f42e3a8db054 + depends: + - __osx >=11.0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + - libcxx >=18 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 47078 + timestamp: 1734024749727 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.2-hefd7a92_4.conda + sha256: 4a330206bd51148f6c13ca0b7a4db40f29a46f090642ebacdeb88b8a4abd7f99 + md5: 5ce4df662d32d3123ea8da15571b6f51 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-compression >=0.3.0,<0.3.1.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 197731 + timestamp: 1734008380764 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.2-h3df160d_4.conda sha256: 3a1d2d332945306be9d49e569b95e4cc172d825f10e88715513a172f28ebb59e md5: 28f00aa7fd9556c4c461328cf146c20b depends: @@ -1396,17 +1276,13 @@ packages: - aws-c-compression >=0.3.0,<0.3.1.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - libgcc >=13 + arch: aarch64 + platform: linux license: Apache-2.0 license_family: Apache size: 190586 timestamp: 1734008442362 -- kind: conda - name: aws-c-http - version: 0.9.2 - build: h96aa502_4 - build_number: 4 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.2-h96aa502_4.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.2-h96aa502_4.conda sha256: 22e4737c8a885995b7c1ae1d79c1f6e78d489e16ec079615980fdde067aeaf76 md5: 495c93a4f08b17deb3c04894512330e6 depends: @@ -1415,37 +1291,28 @@ packages: - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-compression >=0.3.0,<0.3.1.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 + arch: arm64 + platform: osx license: Apache-2.0 license_family: Apache size: 152983 timestamp: 1734008451473 -- kind: conda - name: aws-c-http - version: 0.9.2 - build: hefd7a92_4 - build_number: 4 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.2-hefd7a92_4.conda - sha256: 4a330206bd51148f6c13ca0b7a4db40f29a46f090642ebacdeb88b8a4abd7f99 - md5: 5ce4df662d32d3123ea8da15571b6f51 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-h831e299_5.conda + sha256: 5920009b1c6f9a2bc131a36725251894e4b4773fce29c4b1065d4213ae337abe + md5: 80dd9f0ddf935290d1dc00ec75ff3023 depends: - __glibc >=2.17,<3.0.a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.6,<0.10.7.0a0 - - aws-c-compression >=0.3.0,<0.3.1.0a0 - - aws-c-io >=0.15.3,<0.15.4.0a0 - libgcc >=13 + - s2n >=1.5.10,<1.5.11.0a0 + arch: x86_64 + platform: linux license: Apache-2.0 license_family: Apache - size: 197731 - timestamp: 1734008380764 -- kind: conda - name: aws-c-io - version: 0.15.3 - build: h1a307af_5 - build_number: 5 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-h1a307af_5.conda + size: 157864 + timestamp: 1734433578570 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-h1a307af_5.conda sha256: 71f5bf891299f831dceaea12f926c393bf754569e5305387a88b77e1f94612d8 md5: da8ab0f3eeac93449ec3d531ede92caa depends: @@ -1453,53 +1320,26 @@ packages: - aws-c-common >=0.10.6,<0.10.7.0a0 - libgcc >=13 - s2n >=1.5.10,<1.5.11.0a0 + arch: aarch64 + platform: linux license: Apache-2.0 license_family: Apache size: 161889 timestamp: 1734433686109 -- kind: conda - name: aws-c-io - version: 0.15.3 - build: h831e299_5 - build_number: 5 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-h831e299_5.conda - sha256: 5920009b1c6f9a2bc131a36725251894e4b4773fce29c4b1065d4213ae337abe - md5: 80dd9f0ddf935290d1dc00ec75ff3023 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-haba67d1_5.conda + sha256: c0a1a2b0750225ac3dc07fd258c88c2be866bf8ac67ba3d50bb4ecec852ff8ee + md5: 4c5ff4134e76426a75b8c548984fa933 depends: - - __glibc >=2.17,<3.0.a0 - - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - libgcc >=13 - - s2n >=1.5.10,<1.5.11.0a0 - license: Apache-2.0 - license_family: Apache - size: 157864 - timestamp: 1734433578570 -- kind: conda - name: aws-c-io - version: 0.15.3 - build: haba67d1_5 - build_number: 5 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-haba67d1_5.conda - sha256: c0a1a2b0750225ac3dc07fd258c88c2be866bf8ac67ba3d50bb4ecec852ff8ee - md5: 4c5ff4134e76426a75b8c548984fa933 - depends: - - __osx >=11.0 + - __osx >=11.0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.6,<0.10.7.0a0 + arch: arm64 + platform: osx license: Apache-2.0 license_family: Apache size: 135729 timestamp: 1734433832730 -- kind: conda - name: aws-c-mqtt - version: 0.11.0 - build: h11f4f37_12 - build_number: 12 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h11f4f37_12.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h11f4f37_12.conda sha256: 512d3969426152d9d5fd886e27b13706122dc3fa90eb08c37b0d51a33d7bb14a md5: 96c3e0221fa2da97619ee82faa341a73 depends: @@ -1508,35 +1348,13 @@ packages: - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - libgcc >=13 + arch: x86_64 + platform: linux license: Apache-2.0 license_family: Apache size: 194672 timestamp: 1734025626798 -- kind: conda - name: aws-c-mqtt - version: 0.11.0 - build: h24f418c_12 - build_number: 12 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h24f418c_12.conda - sha256: 96575ea1dd2a9ea94763882e40a66dcbff9c41f702bf37c9514c4c719b3c11dd - md5: c072045a6206f88015d02fcba1705ea1 - depends: - - __osx >=11.0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - aws-c-http >=0.9.2,<0.9.3.0a0 - - aws-c-io >=0.15.3,<0.15.4.0a0 - license: Apache-2.0 - license_family: Apache - size: 134371 - timestamp: 1734025379525 -- kind: conda - name: aws-c-mqtt - version: 0.11.0 - build: h5f50e26_12 - build_number: 12 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h5f50e26_12.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h5f50e26_12.conda sha256: ffeb9100cc8fd4093e1a6fdfd938bc4a396dd77480b7fb17aa42855a4d5e2c70 md5: 031ca33115d4b1eeb43f435d6215778c depends: @@ -1544,36 +1362,46 @@ packages: - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - libgcc >=13 + arch: aarch64 + platform: linux license: Apache-2.0 license_family: Apache size: 169516 timestamp: 1734025167885 -- kind: conda - name: aws-c-s3 - version: 0.7.7 - build: h1be5864_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.7-h1be5864_0.conda - sha256: 22966164d63808689fffd35945f57756c95337327e28099b5d77b29fc6a56ecc - md5: a37bba7acb62dd70492ee01eacca3b8f +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h24f418c_12.conda + sha256: 96575ea1dd2a9ea94763882e40a66dcbff9c41f702bf37c9514c4c719b3c11dd + md5: c072045a6206f88015d02fcba1705ea1 depends: - __osx >=11.0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 134371 + timestamp: 1734025379525 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.7-hf454442_0.conda + sha256: c2f205a7bf64c5f40eea373b3a0a7c363c9aa9246a13dd7f3d9c6a4434c4fe2d + md5: 947c82025693bebd557f782bb5d6b469 + depends: + - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 + - libgcc >=13 + - openssl >=3.4.0,<4.0a0 + arch: x86_64 + platform: linux license: Apache-2.0 license_family: Apache - size: 97598 - timestamp: 1734146239038 -- kind: conda - name: aws-c-s3 - version: 0.7.7 - build: h2080895_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.7-h2080895_0.conda + size: 114156 + timestamp: 1734146123386 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.7-h2080895_0.conda sha256: 20bc2dd60e6518d9b8215c2b652ab5c52ee8a997d3b9a5f69e2dabd28cbf26b2 md5: ae223efa63fbb4262a2d85c3ab3bc4f5 depends: @@ -1585,141 +1413,108 @@ packages: - aws-checksums >=0.2.2,<0.2.3.0a0 - libgcc >=13 - openssl >=3.4.0,<4.0a0 + arch: aarch64 + platform: linux license: Apache-2.0 license_family: Apache size: 117641 timestamp: 1734146239779 -- kind: conda - name: aws-c-s3 - version: 0.7.7 - build: hf454442_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.7-hf454442_0.conda - sha256: c2f205a7bf64c5f40eea373b3a0a7c363c9aa9246a13dd7f3d9c6a4434c4fe2d - md5: 947c82025693bebd557f782bb5d6b469 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.7-h1be5864_0.conda + sha256: 22966164d63808689fffd35945f57756c95337327e28099b5d77b29fc6a56ecc + md5: a37bba7acb62dd70492ee01eacca3b8f depends: - - __glibc >=2.17,<3.0.a0 + - __osx >=11.0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - - libgcc >=13 - - openssl >=3.4.0,<4.0a0 - license: Apache-2.0 - license_family: Apache - size: 114156 - timestamp: 1734146123386 -- kind: conda - name: aws-c-sdkutils - version: 0.2.1 - build: h0f0193d_4 - build_number: 4 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.1-h0f0193d_4.conda - sha256: ede8e782467c87ac80ceb9c9af9e917d121b7d8b8c698186d18e3cecd36f2210 - md5: 53e798d720dd78b78847a7b2fdb05fc9 - depends: - - aws-c-common >=0.10.6,<0.10.7.0a0 - - libgcc >=13 + arch: arm64 + platform: osx license: Apache-2.0 license_family: Apache - size: 58621 - timestamp: 1733994421495 -- kind: conda - name: aws-c-sdkutils - version: 0.2.1 - build: h4e1184b_4 - build_number: 4 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.1-h4e1184b_4.conda + size: 97598 + timestamp: 1734146239038 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.1-h4e1184b_4.conda sha256: df586f42210af1134b1c88ff4c278c3cb6d6c807c84eac48860062464b28554d md5: a5126a90e74ac739b00564a4c7ddcc36 depends: - __glibc >=2.17,<3.0.a0 - aws-c-common >=0.10.6,<0.10.7.0a0 - libgcc >=13 + arch: x86_64 + platform: linux license: Apache-2.0 license_family: Apache size: 56094 timestamp: 1733994449690 -- kind: conda - name: aws-c-sdkutils - version: 0.2.1 - build: hc8a0bd2_4 - build_number: 4 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.1-hc8a0bd2_4.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.1-h0f0193d_4.conda + sha256: ede8e782467c87ac80ceb9c9af9e917d121b7d8b8c698186d18e3cecd36f2210 + md5: 53e798d720dd78b78847a7b2fdb05fc9 + depends: + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 58621 + timestamp: 1733994421495 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.1-hc8a0bd2_4.conda sha256: de98343ce42d2e569b3380292d20f47bf39bda08aadabcbb8e650d3f38fd742f md5: 22f72f8cd7ead211304ac17d337d96e0 depends: - __osx >=11.0 - aws-c-common >=0.10.6,<0.10.7.0a0 + arch: arm64 + platform: osx license: Apache-2.0 license_family: Apache size: 49664 timestamp: 1733994553014 -- kind: conda - name: aws-checksums - version: 0.2.2 - build: h0f0193d_4 - build_number: 4 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h0f0193d_4.conda - sha256: 9f1e3635a587bcf92b61d88c7af7d24cd89c147c6d0ae58afbde08e65bcf48da - md5: 3bd35b0adab3d743f09e0252cc441d6b - depends: - - aws-c-common >=0.10.6,<0.10.7.0a0 - - libgcc >=13 - license: Apache-2.0 - license_family: Apache - size: 72154 - timestamp: 1733994384415 -- kind: conda - name: aws-checksums - version: 0.2.2 - build: h4e1184b_4 - build_number: 4 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-h4e1184b_4.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-h4e1184b_4.conda sha256: 1ed9a332d06ad595694907fad2d6d801082916c27cd5076096fda4061e6d24a8 md5: 74e8c3e4df4ceae34aa2959df4b28101 depends: - __glibc >=2.17,<3.0.a0 - aws-c-common >=0.10.6,<0.10.7.0a0 - libgcc >=13 + arch: x86_64 + platform: linux license: Apache-2.0 license_family: Apache size: 72762 timestamp: 1733994347547 -- kind: conda - name: aws-checksums - version: 0.2.2 - build: hc8a0bd2_4 - build_number: 4 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-hc8a0bd2_4.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h0f0193d_4.conda + sha256: 9f1e3635a587bcf92b61d88c7af7d24cd89c147c6d0ae58afbde08e65bcf48da + md5: 3bd35b0adab3d743f09e0252cc441d6b + depends: + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 72154 + timestamp: 1733994384415 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-hc8a0bd2_4.conda sha256: 215086d95e8ff1d3fcb0197ada116cc9d7db1fdae7573f5e810d20fa9215b47c md5: e70e88a357a3749b67679c0788c5b08a depends: - __osx >=11.0 - aws-c-common >=0.10.6,<0.10.7.0a0 + arch: arm64 + platform: osx license: Apache-2.0 license_family: Apache size: 70186 timestamp: 1733994496998 -- kind: conda - name: aws-crt-cpp - version: 0.29.7 - build: h19a973c_7 - build_number: 7 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.7-h19a973c_7.conda - sha256: 8269e6746eb3a5d15b732a3983888bf98dfc1f6594e95250fc8d16b43cfd5ff9 - md5: 95714136bef3e917bd5a2942d4682b20 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.7-hd92328a_7.conda + sha256: 094cd81f1e5ba713e9e7a272ee52b5dde3ccc4842ea90f19c0354a00bbdac3d9 + md5: 02b95564257d5c3db9c06beccf711f95 depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.6,<0.10.7.0a0 @@ -1729,18 +1524,15 @@ packages: - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - aws-c-s3 >=0.7.7,<0.7.8.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - - libcxx >=18 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux license: Apache-2.0 license_family: Apache - size: 236249 - timestamp: 1734178020924 -- kind: conda - name: aws-crt-cpp - version: 0.29.7 - build: h8a4e35f_7 - build_number: 7 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.7-h8a4e35f_7.conda + size: 354703 + timestamp: 1734177883319 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.7-h8a4e35f_7.conda sha256: 5ba9188e0cb4e3faff9bc96774febb040aa3b802aedba29d847e00e7b5eab84e md5: d77a9e3d7ce15399903e92825fd651b5 depends: @@ -1755,21 +1547,17 @@ packages: - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - libgcc >=13 - libstdcxx >=13 + arch: aarch64 + platform: linux license: Apache-2.0 license_family: Apache size: 283154 timestamp: 1734177845248 -- kind: conda - name: aws-crt-cpp - version: 0.29.7 - build: hd92328a_7 - build_number: 7 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.7-hd92328a_7.conda - sha256: 094cd81f1e5ba713e9e7a272ee52b5dde3ccc4842ea90f19c0354a00bbdac3d9 - md5: 02b95564257d5c3db9c06beccf711f95 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.7-h19a973c_7.conda + sha256: 8269e6746eb3a5d15b732a3983888bf98dfc1f6594e95250fc8d16b43cfd5ff9 + md5: 95714136bef3e917bd5a2942d4682b20 depends: - - __glibc >=2.17,<3.0.a0 + - __osx >=11.0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.6,<0.10.7.0a0 @@ -1779,22 +1567,18 @@ packages: - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - aws-c-s3 >=0.7.7,<0.7.8.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - - libgcc >=13 - - libstdcxx >=13 + - libcxx >=18 + arch: arm64 + platform: osx license: Apache-2.0 license_family: Apache - size: 354703 - timestamp: 1734177883319 -- kind: conda - name: aws-sdk-cpp - version: 1.11.458 - build: h849ce1a_4 - build_number: 4 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h849ce1a_4.conda - sha256: 51b9e9df8cbab4a13a1b9d39d6ef5ed162aaa29c09a745810e00bbe92e1045c1 - md5: cda7747f4398be8d1fb37362815917a7 + size: 236249 + timestamp: 1734178020924 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-hc430e4a_4.conda + sha256: 2dc09f6f9c49127b5f96e7535b64a9c521b944d76d8b7d03d48ae80257ac1cea + md5: aeefac461bea1f126653c1285cf5af08 depends: + - __glibc >=2.17,<3.0.a0 - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 @@ -1804,21 +1588,16 @@ packages: - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - openssl >=3.4.0,<4.0a0 + arch: x86_64 + platform: linux license: Apache-2.0 license_family: Apache - size: 2920625 - timestamp: 1734093552712 -- kind: conda - name: aws-sdk-cpp - version: 1.11.458 - build: hc430e4a_4 - build_number: 4 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-hc430e4a_4.conda - sha256: 2dc09f6f9c49127b5f96e7535b64a9c521b944d76d8b7d03d48ae80257ac1cea - md5: aeefac461bea1f126653c1285cf5af08 + size: 3060561 + timestamp: 1734093737431 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h849ce1a_4.conda + sha256: 51b9e9df8cbab4a13a1b9d39d6ef5ed162aaa29c09a745810e00bbe92e1045c1 + md5: cda7747f4398be8d1fb37362815917a7 depends: - - __glibc >=2.17,<3.0.a0 - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 @@ -1828,17 +1607,13 @@ packages: - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - openssl >=3.4.0,<4.0a0 + arch: aarch64 + platform: linux license: Apache-2.0 license_family: Apache - size: 3060561 - timestamp: 1734093737431 -- kind: conda - name: aws-sdk-cpp - version: 1.11.458 - build: he0ff2e4_4 - build_number: 4 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-he0ff2e4_4.conda + size: 2920625 + timestamp: 1734093552712 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-he0ff2e4_4.conda sha256: 535b970aaa13be45f8cab8205c59f044b17364111c41a227f061775a5c834e18 md5: 0981ed87098b149bdb7d99a4a3fd0e58 depends: @@ -1851,51 +1626,42 @@ packages: - libcxx >=18 - libzlib >=1.3.1,<2.0a0 - openssl >=3.4.0,<4.0a0 + arch: arm64 + platform: osx license: Apache-2.0 license_family: Apache size: 2826534 timestamp: 1734094018287 -- kind: conda - name: azure-core-cpp - version: 1.14.0 - build: h1887c18_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-core-cpp-1.14.0-h1887c18_0.conda - sha256: 8967b3ccee4d74e61f6ec82dd8efb9deb854ee7ba012dfe767b7a92e0ac77724 - md5: e0c3a906a41be769f0ae20ca3e31cfc0 +- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda + sha256: fe07debdb089a3db17f40a7f20d283d75284bb4fc269ef727b8ba6fc93f7cb5a + md5: 0a8838771cc2e985cd295e01ae83baf1 depends: + - __glibc >=2.17,<3.0.a0 - libcurl >=8.10.1,<9.0a0 - libgcc >=13 - libstdcxx >=13 - openssl >=3.3.2,<4.0a0 + arch: x86_64 + platform: linux license: MIT license_family: MIT - size: 338650 - timestamp: 1728055589907 -- kind: conda - name: azure-core-cpp - version: 1.14.0 - build: h5cfcd09_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda - sha256: fe07debdb089a3db17f40a7f20d283d75284bb4fc269ef727b8ba6fc93f7cb5a - md5: 0a8838771cc2e985cd295e01ae83baf1 + size: 345117 + timestamp: 1728053909574 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-core-cpp-1.14.0-h1887c18_0.conda + sha256: 8967b3ccee4d74e61f6ec82dd8efb9deb854ee7ba012dfe767b7a92e0ac77724 + md5: e0c3a906a41be769f0ae20ca3e31cfc0 depends: - - __glibc >=2.17,<3.0.a0 - libcurl >=8.10.1,<9.0a0 - libgcc >=13 - libstdcxx >=13 - openssl >=3.3.2,<4.0a0 + arch: aarch64 + platform: linux license: MIT license_family: MIT - size: 345117 - timestamp: 1728053909574 -- kind: conda - name: azure-core-cpp - version: 1.14.0 - build: hd50102c_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.14.0-hd50102c_0.conda + size: 338650 + timestamp: 1728055589907 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.14.0-hd50102c_0.conda sha256: f5b91329ed59ffc0be8747784c6e4cc7e56250c54032883a83bc11808ef6a87e md5: f093a11dcf3cdcca010b20a818fcc6dc depends: @@ -1903,16 +1669,13 @@ packages: - libcurl >=8.10.1,<9.0a0 - libcxx >=17 - openssl >=3.3.2,<4.0a0 + arch: arm64 + platform: osx license: MIT license_family: MIT size: 294299 timestamp: 1728054014060 -- kind: conda - name: azure-identity-cpp - version: 1.10.0 - build: h113e628_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.10.0-h113e628_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.10.0-h113e628_0.conda sha256: 286b31616c191486626cb49e9ceb5920d29394b9e913c23adb7eb637629ba4de md5: 73f73f60854f325a55f1d31459f2ab73 depends: @@ -1921,16 +1684,13 @@ packages: - libgcc >=13 - libstdcxx >=13 - openssl >=3.3.2,<4.0a0 + arch: x86_64 + platform: linux license: MIT license_family: MIT size: 232351 timestamp: 1728486729511 -- kind: conda - name: azure-identity-cpp - version: 1.10.0 - build: h47b0b28_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-identity-cpp-1.10.0-h47b0b28_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-identity-cpp-1.10.0-h47b0b28_0.conda sha256: 1c72423b9beba167d2f01b80dc204da77240a8266f1edb3d89510c852b300d69 md5: 94e73a7877743a85c57091d8afab2348 depends: @@ -1938,16 +1698,13 @@ packages: - libgcc >=13 - libstdcxx >=13 - openssl >=3.3.2,<4.0a0 + arch: aarch64 + platform: linux license: MIT license_family: MIT size: 217132 timestamp: 1728488096615 -- kind: conda - name: azure-identity-cpp - version: 1.10.0 - build: hc602bab_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.10.0-hc602bab_0.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.10.0-hc602bab_0.conda sha256: bde446b916fff5150606f8ed3e6058ffc55a3aa72381e46f1ab346590b1ae40a md5: d7b71593a937459f2d4b67e1a4727dc2 depends: @@ -1955,54 +1712,42 @@ packages: - azure-core-cpp >=1.14.0,<1.14.1.0a0 - libcxx >=17 - openssl >=3.3.2,<4.0a0 + arch: arm64 + platform: osx license: MIT license_family: MIT size: 166907 timestamp: 1728486882502 -- kind: conda - name: azure-storage-blobs-cpp - version: 12.13.0 - build: h185ecfd_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-blobs-cpp-12.13.0-h185ecfd_1.conda - sha256: 280ec70009a92626054f58e45b168fce393e71a9710587488bd8401628cda481 - md5: 221e1e5ecb2643e113f32b3229d5ba33 +- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.13.0-h3cf044e_1.conda + sha256: 2606260e5379eed255bcdc6adc39b93fb31477337bcd911c121fc43cd29bf394 + md5: 7eb66060455c7a47d9dcdbfa9f46579b depends: + - __glibc >=2.17,<3.0.a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 - libgcc >=13 - libstdcxx >=13 + arch: x86_64 + platform: linux license: MIT license_family: MIT - size: 502934 - timestamp: 1728580241002 -- kind: conda - name: azure-storage-blobs-cpp - version: 12.13.0 - build: h3cf044e_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.13.0-h3cf044e_1.conda - sha256: 2606260e5379eed255bcdc6adc39b93fb31477337bcd911c121fc43cd29bf394 - md5: 7eb66060455c7a47d9dcdbfa9f46579b + size: 549342 + timestamp: 1728578123088 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-blobs-cpp-12.13.0-h185ecfd_1.conda + sha256: 280ec70009a92626054f58e45b168fce393e71a9710587488bd8401628cda481 + md5: 221e1e5ecb2643e113f32b3229d5ba33 depends: - - __glibc >=2.17,<3.0.a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 - libgcc >=13 - libstdcxx >=13 + arch: aarch64 + platform: linux license: MIT license_family: MIT - size: 549342 - timestamp: 1728578123088 -- kind: conda - name: azure-storage-blobs-cpp - version: 12.13.0 - build: h7585a09_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-blobs-cpp-12.13.0-h7585a09_1.conda + size: 502934 + timestamp: 1728580241002 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-blobs-cpp-12.13.0-h7585a09_1.conda sha256: 08d52d130addc0fb55d5ba10d9fa483e39be25d69bac7f4c676c2c3069207590 md5: 704238ef05d46144dae2e6b5853df8bc depends: @@ -2010,56 +1755,44 @@ packages: - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 - libcxx >=17 + arch: arm64 + platform: osx license: MIT license_family: MIT size: 438636 timestamp: 1728578216193 -- kind: conda - name: azure-storage-common-cpp - version: 12.8.0 - build: h1b94036_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-common-cpp-12.8.0-h1b94036_1.conda - sha256: 146e76aac169e3dbdce5d3b142b7930ac643795c765e7655d1989905ec7d3231 - md5: 793b1080ab2d958980f137a8643cd6e8 +- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-common-cpp-12.8.0-h736e048_1.conda + sha256: 273475f002b091b66ce7366da04bf164c3732c03f8692ab2ee2d23335b6a82ba + md5: 13de36be8de3ae3f05ba127631599213 depends: + - __glibc >=2.17,<3.0.a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - libgcc >=13 - libstdcxx >=13 - libxml2 >=2.12.7,<3.0a0 - openssl >=3.3.2,<4.0a0 + arch: x86_64 + platform: linux license: MIT license_family: MIT - size: 140832 - timestamp: 1728565334900 -- kind: conda - name: azure-storage-common-cpp - version: 12.8.0 - build: h736e048_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-common-cpp-12.8.0-h736e048_1.conda - sha256: 273475f002b091b66ce7366da04bf164c3732c03f8692ab2ee2d23335b6a82ba - md5: 13de36be8de3ae3f05ba127631599213 + size: 149312 + timestamp: 1728563338704 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-common-cpp-12.8.0-h1b94036_1.conda + sha256: 146e76aac169e3dbdce5d3b142b7930ac643795c765e7655d1989905ec7d3231 + md5: 793b1080ab2d958980f137a8643cd6e8 depends: - - __glibc >=2.17,<3.0.a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - libgcc >=13 - libstdcxx >=13 - libxml2 >=2.12.7,<3.0a0 - openssl >=3.3.2,<4.0a0 + arch: aarch64 + platform: linux license: MIT license_family: MIT - size: 149312 - timestamp: 1728563338704 -- kind: conda - name: azure-storage-common-cpp - version: 12.8.0 - build: h9ca1f76_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-common-cpp-12.8.0-h9ca1f76_1.conda + size: 140832 + timestamp: 1728565334900 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-common-cpp-12.8.0-h9ca1f76_1.conda sha256: 77ab04e8fe5636a2de9c718f72a43645f7502cd208868c8a91ffba385547d585 md5: 7a187cd7b1445afc80253bb186a607cc depends: @@ -2068,56 +1801,44 @@ packages: - libcxx >=17 - libxml2 >=2.12.7,<3.0a0 - openssl >=3.3.2,<4.0a0 + arch: arm64 + platform: osx license: MIT license_family: MIT size: 121278 timestamp: 1728563418777 -- kind: conda - name: azure-storage-files-datalake-cpp - version: 12.12.0 - build: h37d6d07_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-files-datalake-cpp-12.12.0-h37d6d07_1.conda - sha256: 4079c617a75682e49bae63670d58fd6078ccfbbe55ca1f994acab3a74ab6bbcc - md5: b724f3b4b7f4e9b36c58cbe3ed8610a2 +- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-files-datalake-cpp-12.12.0-ha633028_1.conda + sha256: 5371e4f3f920933bb89b926a85a67f24388227419abd6e99f6086481e5e8d5f2 + md5: 7c1980f89dd41b097549782121a73490 depends: + - __glibc >=2.17,<3.0.a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 - libgcc >=13 - libstdcxx >=13 + arch: x86_64 + platform: linux license: MIT license_family: MIT - size: 260547 - timestamp: 1728730924071 -- kind: conda - name: azure-storage-files-datalake-cpp - version: 12.12.0 - build: ha633028_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-files-datalake-cpp-12.12.0-ha633028_1.conda - sha256: 5371e4f3f920933bb89b926a85a67f24388227419abd6e99f6086481e5e8d5f2 - md5: 7c1980f89dd41b097549782121a73490 + size: 287366 + timestamp: 1728729530295 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-files-datalake-cpp-12.12.0-h37d6d07_1.conda + sha256: 4079c617a75682e49bae63670d58fd6078ccfbbe55ca1f994acab3a74ab6bbcc + md5: b724f3b4b7f4e9b36c58cbe3ed8610a2 depends: - - __glibc >=2.17,<3.0.a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 - libgcc >=13 - libstdcxx >=13 + arch: aarch64 + platform: linux license: MIT license_family: MIT - size: 287366 - timestamp: 1728729530295 -- kind: conda - name: azure-storage-files-datalake-cpp - version: 12.12.0 - build: hcdd55da_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-files-datalake-cpp-12.12.0-hcdd55da_1.conda + size: 260547 + timestamp: 1728730924071 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-files-datalake-cpp-12.12.0-hcdd55da_1.conda sha256: f48523f8aa0b5b80f45a92f0556b388dd96f44ac2dc2f44a01d08c1822eec97d md5: c49fbc5233fcbaa86391162ff1adef38 depends: @@ -2126,18 +1847,13 @@ packages: - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 - libcxx >=17 + arch: arm64 + platform: osx license: MIT license_family: MIT size: 196032 timestamp: 1728729672889 -- kind: conda - name: backoff - version: 2.2.1 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/backoff-2.2.1-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/backoff-2.2.1-pyhd8ed1ab_1.conda sha256: f334115c6b0c6c2cd0d28595365f205ec7eaa60bcc5ff91a75d7245f728be820 md5: a38b801f2bcc12af80c2e02a9e4ce7d9 depends: @@ -2146,13 +1862,7 @@ packages: license_family: MIT size: 18816 timestamp: 1733771192649 -- kind: conda - name: brotli-python - version: 1.1.0 - build: py312h2ec8cdc_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py312h2ec8cdc_2.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py312h2ec8cdc_2.conda sha256: f2a59ccd20b4816dea9a2a5cb917eb69728271dbf1aeab4e1b7e609330a50b6f md5: b0b867af6fc74b2a0aa206da29c0f3cf depends: @@ -2163,17 +1873,13 @@ packages: - python_abi 3.12.* *_cp312 constrains: - libbrotlicommon 1.1.0 hb9d3cd8_2 + arch: x86_64 + platform: linux license: MIT license_family: MIT size: 349867 timestamp: 1725267732089 -- kind: conda - name: brotli-python - version: 1.1.0 - build: py312h6f74592_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/brotli-python-1.1.0-py312h6f74592_2.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/brotli-python-1.1.0-py312h6f74592_2.conda sha256: 9736bf660a0e4260c68f81d2635b51067f817813e6490ac9e8abd9a835dcbf6d md5: e1e9727063057168d95f27a032acd0a4 depends: @@ -2184,17 +1890,13 @@ packages: - python_abi 3.12.* *_cp312 constrains: - libbrotlicommon 1.1.0 h86ecc28_2 + arch: aarch64 + platform: linux license: MIT license_family: MIT size: 356878 timestamp: 1725267878508 -- kind: conda - name: brotli-python - version: 1.1.0 - build: py312hde4cb15_2 - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py312hde4cb15_2.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py312hde4cb15_2.conda sha256: 254b411fa78ccc226f42daf606772972466f93e9bc6895eabb4cfda22f5178af md5: a83c2ef76ccb11bc2349f4f17696b15d depends: @@ -2205,139 +1907,105 @@ packages: - python_abi 3.12.* *_cp312 constrains: - libbrotlicommon 1.1.0 hd74edd7_2 + arch: arm64 + platform: osx license: MIT license_family: MIT size: 339360 timestamp: 1725268143995 -- kind: conda - name: bzip2 - version: 1.0.8 - build: h4bc722e_7 - build_number: 7 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda sha256: 5ced96500d945fb286c9c838e54fa759aa04a7129c59800f0846b4335cee770d md5: 62ee74e96c5ebb0af99386de58cf9553 depends: - __glibc >=2.17,<3.0.a0 - libgcc-ng >=12 + arch: x86_64 + platform: linux license: bzip2-1.0.6 license_family: BSD size: 252783 timestamp: 1720974456583 -- kind: conda - name: bzip2 - version: 1.0.8 - build: h68df207_7 - build_number: 7 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h68df207_7.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h68df207_7.conda sha256: 2258b0b33e1cb3a9852d47557984abb6e7ea58e3d7f92706ec1f8e879290c4cb md5: 56398c28220513b9ea13d7b450acfb20 depends: - libgcc-ng >=12 + arch: aarch64 + platform: linux license: bzip2-1.0.6 license_family: BSD size: 189884 timestamp: 1720974504976 -- kind: conda - name: bzip2 - version: 1.0.8 - build: h99b78c6_7 - build_number: 7 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda sha256: adfa71f158cbd872a36394c56c3568e6034aa55c623634b37a4836bd036e6b91 md5: fc6948412dbbbe9a4c9ddbbcfe0a79ab depends: - __osx >=11.0 + arch: arm64 + platform: osx license: bzip2-1.0.6 license_family: BSD size: 122909 timestamp: 1720974522888 -- kind: conda - name: c-ares - version: 1.34.4 - build: h5505292_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.4-h5505292_0.conda - sha256: 09c0c8476e50b2955f474a4a1c17c4c047dd52993b5366b6ea8e968e583b921f - md5: c1c999a38a4303b29d75c636eaa13cf9 +- conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.4-hb9d3cd8_0.conda + sha256: d4f28d87b6339b94f74762c0076e29c8ef8ddfff51a564a92da2843573c18320 + md5: e2775acf57efd5af15b8e3d1d74d72d3 depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux license: MIT license_family: MIT - size: 179496 - timestamp: 1734208291879 -- kind: conda - name: c-ares - version: 1.34.4 - build: h86ecc28_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/c-ares-1.34.4-h86ecc28_0.conda + size: 206085 + timestamp: 1734208189009 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/c-ares-1.34.4-h86ecc28_0.conda sha256: 1187a41d4bb2afe02cb18690682edc98d1e9f5e0ccda638d8704a75ea1875bbe md5: 356da36f35d36dcba16e43f1589d4e39 depends: - libgcc >=13 + arch: aarch64 + platform: linux license: MIT license_family: MIT size: 215979 timestamp: 1734208193181 -- kind: conda - name: c-ares - version: 1.34.4 - build: hb9d3cd8_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.4-hb9d3cd8_0.conda - sha256: d4f28d87b6339b94f74762c0076e29c8ef8ddfff51a564a92da2843573c18320 - md5: e2775acf57efd5af15b8e3d1d74d72d3 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.4-h5505292_0.conda + sha256: 09c0c8476e50b2955f474a4a1c17c4c047dd52993b5366b6ea8e968e583b921f + md5: c1c999a38a4303b29d75c636eaa13cf9 depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 + - __osx >=11.0 + arch: arm64 + platform: osx license: MIT license_family: MIT - size: 206085 - timestamp: 1734208189009 -- kind: conda - name: ca-certificates - version: 2024.12.14 - build: hbcca054_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2024.12.14-hbcca054_0.conda + size: 179496 + timestamp: 1734208291879 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2024.12.14-hbcca054_0.conda sha256: 1afd7274cbc9a334d6d0bc62fa760acc7afdaceb0b91a8df370ec01fd75dc7dd md5: 720523eb0d6a9b0f6120c16b2aa4e7de + arch: x86_64 + platform: linux license: ISC size: 157088 timestamp: 1734208393264 -- kind: conda - name: ca-certificates - version: 2024.12.14 - build: hcefe29a_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2024.12.14-hcefe29a_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2024.12.14-hcefe29a_0.conda sha256: ad7b43211051332a5a4e788bb4619a2d0ecb5be73e0f76be17f733a87d7effd1 md5: 83b4ad1e6dc14df5891f3fcfdeb44351 + arch: aarch64 + platform: linux license: ISC size: 157096 timestamp: 1734209301744 -- kind: conda - name: ca-certificates - version: 2024.12.14 - build: hf0a4a13_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2024.12.14-hf0a4a13_0.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2024.12.14-hf0a4a13_0.conda sha256: 256be633fd0882ccc1a7a32bc278547e1703f85082c0789a87a603ee3ab8fb82 md5: 7cb381a6783d91902638e4ed1ebd478e + arch: arm64 + platform: osx license: ISC size: 157091 timestamp: 1734208344343 -- kind: conda - name: cairo - version: 1.18.2 - build: h3394656_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.2-h3394656_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.2-h3394656_1.conda sha256: de7d0d094e53decc005cb13e527be2635b8f604978da497d4c0d282c7dc08385 md5: b34c2833a1f56db610aeb27f206d800d depends: @@ -2359,40 +2027,12 @@ packages: - xorg-libx11 >=1.8.10,<2.0a0 - xorg-libxext >=1.3.6,<2.0a0 - xorg-libxrender >=0.9.11,<0.10.0a0 + arch: x86_64 + platform: linux license: LGPL-2.1-only or MPL-1.1 size: 978868 timestamp: 1733790976384 -- kind: conda - name: cairo - version: 1.18.2 - build: h6a3b0d2_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/cairo-1.18.2-h6a3b0d2_1.conda - sha256: 9a28344e806b89c87fda0cdabd2fb961e5d2ff97107dba25bac9f5dc57220cc3 - md5: 8e3666c3f6e2c3e57aa261ab103a3600 - depends: - - __osx >=11.0 - - fontconfig >=2.15.0,<3.0a0 - - fonts-conda-ecosystem - - freetype >=2.12.1,<3.0a0 - - icu >=75.1,<76.0a0 - - libcxx >=18 - - libexpat >=2.6.4,<3.0a0 - - libglib >=2.82.2,<3.0a0 - - libpng >=1.6.44,<1.7.0a0 - - libzlib >=1.3.1,<2.0a0 - - pixman >=0.44.2,<1.0a0 - license: LGPL-2.1-only or MPL-1.1 - size: 894517 - timestamp: 1733791145035 -- kind: conda - name: cairo - version: 1.18.2 - build: h83712da_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/cairo-1.18.2-h83712da_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cairo-1.18.2-h83712da_1.conda sha256: 0353e175859c4989251628e4c8f9fb2dc52546b0c031ffe4541eb087ac586573 md5: e7b46975d2c9a4666da0e9bb8a087f28 depends: @@ -2413,16 +2053,32 @@ packages: - xorg-libx11 >=1.8.10,<2.0a0 - xorg-libxext >=1.3.6,<2.0a0 - xorg-libxrender >=0.9.11,<0.10.0a0 + arch: aarch64 + platform: linux license: LGPL-2.1-only or MPL-1.1 size: 980455 timestamp: 1733791018944 -- kind: conda - name: certifi - version: 2024.12.14 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.12.14-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/cairo-1.18.2-h6a3b0d2_1.conda + sha256: 9a28344e806b89c87fda0cdabd2fb961e5d2ff97107dba25bac9f5dc57220cc3 + md5: 8e3666c3f6e2c3e57aa261ab103a3600 + depends: + - __osx >=11.0 + - fontconfig >=2.15.0,<3.0a0 + - fonts-conda-ecosystem + - freetype >=2.12.1,<3.0a0 + - icu >=75.1,<76.0a0 + - libcxx >=18 + - libexpat >=2.6.4,<3.0a0 + - libglib >=2.82.2,<3.0a0 + - libpng >=1.6.44,<1.7.0a0 + - libzlib >=1.3.1,<2.0a0 + - pixman >=0.44.2,<1.0a0 + arch: arm64 + platform: osx + license: LGPL-2.1-only or MPL-1.1 + size: 894517 + timestamp: 1733791145035 +- conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.12.14-pyhd8ed1ab_0.conda sha256: 048c16a9cbcb1fbad02083414d3bc7c1d0eea4b39aee6aa6bf8d1d5089ca8bad md5: 6feb87357ecd66733be3279f16a8c400 depends: @@ -2430,12 +2086,7 @@ packages: license: ISC size: 161642 timestamp: 1734380604767 -- kind: conda - name: cffi - version: 1.17.1 - build: py312h06ac9bb_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py312h06ac9bb_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py312h06ac9bb_0.conda sha256: cba6ea83c4b0b4f5b5dc59cb19830519b28f95d7ebef7c9c5cf1c14843621457 md5: a861504bbea4161a9170b85d4d2be840 depends: @@ -2445,54 +2096,44 @@ packages: - pycparser - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux license: MIT license_family: MIT size: 294403 timestamp: 1725560714366 -- kind: conda - name: cffi - version: 1.17.1 - build: py312h0fad829_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.1-py312h0fad829_0.conda - sha256: 8d91a0d01358b5c3f20297c6c536c5d24ccd3e0c2ddd37f9d0593d0f0070226f - md5: 19a5456f72f505881ba493979777b24e +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cffi-1.17.1-py312hac81daf_0.conda + sha256: 1162e3ca039e7ca7c0e78f0a020ed1bde968096841b663e3f393c966eb82f0f0 + md5: 1a256e5581b1099e9295cb84d53db3ea depends: - - __osx >=11.0 - libffi >=3.4,<4.0a0 + - libgcc >=13 - pycparser - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux license: MIT license_family: MIT - size: 281206 - timestamp: 1725560813378 -- kind: conda - name: cffi - version: 1.17.1 - build: py312hac81daf_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/cffi-1.17.1-py312hac81daf_0.conda - sha256: 1162e3ca039e7ca7c0e78f0a020ed1bde968096841b663e3f393c966eb82f0f0 - md5: 1a256e5581b1099e9295cb84d53db3ea + size: 312892 + timestamp: 1725561779888 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.1-py312h0fad829_0.conda + sha256: 8d91a0d01358b5c3f20297c6c536c5d24ccd3e0c2ddd37f9d0593d0f0070226f + md5: 19a5456f72f505881ba493979777b24e depends: + - __osx >=11.0 - libffi >=3.4,<4.0a0 - - libgcc >=13 - pycparser - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx license: MIT license_family: MIT - size: 312892 - timestamp: 1725561779888 -- kind: conda - name: charset-normalizer - version: 3.4.1 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda + size: 281206 + timestamp: 1725560813378 +- conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda sha256: 4e0ee91b97e5de3e74567bdacea27f0139709fceca4db8adffbe24deffccb09b md5: e83a31202d1c0a000fce3e9cf3825875 depends: @@ -2501,13 +2142,7 @@ packages: license_family: MIT size: 47438 timestamp: 1735929811779 -- kind: conda - name: click - version: 8.1.8 - build: pyh707e725_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda sha256: c920d23cd1fcf565031c679adb62d848af60d6fbb0edc2d50ba475cea4f0d8ab md5: f22f4d4970e09d68a10b922cbb0408d3 depends: @@ -2517,14 +2152,7 @@ packages: license_family: BSD size: 84705 timestamp: 1734858922844 -- kind: conda - name: colorama - version: 0.4.6 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda sha256: ab29d57dc70786c1269633ba3dff20288b81664d3ff8d21af995742e2bb03287 md5: 962b9857ee8e7018c22f2776ffa0b2d7 depends: @@ -2533,13 +2161,7 @@ packages: license_family: BSD size: 27011 timestamp: 1733218222191 -- kind: conda - name: datasets - version: 2.14.4 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda sha256: 7e09bd083a609138b780fcc4535924cb96814d2c908a36d4c64a2ba9ee3efe7f md5: 3e087f072ce03c43a9b60522f5d0ca2f depends: @@ -2562,88 +2184,64 @@ packages: license_family: Apache size: 347303 timestamp: 1691593908658 -- kind: conda - name: dav1d - version: 1.2.1 - build: h31becfc_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/dav1d-1.2.1-h31becfc_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/dav1d-1.2.1-hd590300_0.conda + sha256: 22053a5842ca8ee1cf8e1a817138cdb5e647eb2c46979f84153f6ad7bde73020 + md5: 418c6ca5929a611cbd69204907a83995 + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + size: 760229 + timestamp: 1685695754230 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/dav1d-1.2.1-h31becfc_0.conda sha256: 33fe66d025cf5bac7745196d1a3dd7a437abcf2dbce66043e9745218169f7e17 md5: 6e5a87182d66b2d1328a96b61ca43a62 depends: - libgcc-ng >=12 + arch: aarch64 + platform: linux license: BSD-2-Clause license_family: BSD size: 347363 timestamp: 1685696690003 -- kind: conda - name: dav1d - version: 1.2.1 - build: hb547adb_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/dav1d-1.2.1-hb547adb_0.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/dav1d-1.2.1-hb547adb_0.conda sha256: 93e077b880a85baec8227e8c72199220c7f87849ad32d02c14fb3807368260b8 md5: 5a74cdee497e6b65173e10d94582fae6 + arch: arm64 + platform: osx license: BSD-2-Clause license_family: BSD size: 316394 timestamp: 1685695959391 -- kind: conda - name: dav1d - version: 1.2.1 - build: hd590300_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/dav1d-1.2.1-hd590300_0.conda - sha256: 22053a5842ca8ee1cf8e1a817138cdb5e647eb2c46979f84153f6ad7bde73020 - md5: 418c6ca5929a611cbd69204907a83995 - depends: - - libgcc-ng >=12 - license: BSD-2-Clause - license_family: BSD - size: 760229 - timestamp: 1685695754230 -- kind: conda - name: dbus - version: 1.13.6 - build: h12b9eeb_3 - build_number: 3 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/dbus-1.13.6-h12b9eeb_3.tar.bz2 - sha256: 5fe76bdf27a142cfb9da0fb3197c562e528d2622b573765bee5c9904cf5e6b6b - md5: f3d63805602166bac09386741e00935e +- conda: https://conda.anaconda.org/conda-forge/linux-64/dbus-1.13.6-h5008d03_3.tar.bz2 + sha256: 8f5f995699a2d9dbdd62c61385bfeeb57c82a681a7c8c5313c395aa0ccab68a5 + md5: ecfff944ba3960ecb334b9a2663d708d depends: - expat >=2.4.2,<3.0a0 - libgcc-ng >=9.4.0 - libglib >=2.70.2,<3.0a0 + arch: x86_64 + platform: linux license: GPL-2.0-or-later license_family: GPL - size: 672759 - timestamp: 1640113663539 -- kind: conda - name: dbus - version: 1.13.6 - build: h5008d03_3 - build_number: 3 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/dbus-1.13.6-h5008d03_3.tar.bz2 - sha256: 8f5f995699a2d9dbdd62c61385bfeeb57c82a681a7c8c5313c395aa0ccab68a5 - md5: ecfff944ba3960ecb334b9a2663d708d + size: 618596 + timestamp: 1640112124844 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/dbus-1.13.6-h12b9eeb_3.tar.bz2 + sha256: 5fe76bdf27a142cfb9da0fb3197c562e528d2622b573765bee5c9904cf5e6b6b + md5: f3d63805602166bac09386741e00935e depends: - expat >=2.4.2,<3.0a0 - libgcc-ng >=9.4.0 - libglib >=2.70.2,<3.0a0 + arch: aarch64 + platform: linux license: GPL-2.0-or-later license_family: GPL - size: 618596 - timestamp: 1640112124844 -- kind: conda - name: deprecated - version: 1.2.15 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhd8ed1ab_1.conda + size: 672759 + timestamp: 1640113663539 +- conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhd8ed1ab_1.conda sha256: a20ebf2c9b02a6eb32412ceb5c4cffaae49417db7e75414a76417538293a9402 md5: eaef2e94d5bd76f758545d172c1fda67 depends: @@ -2653,13 +2251,7 @@ packages: license_family: MIT size: 14297 timestamp: 1733662697343 -- kind: conda - name: dill - version: 0.3.7 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda sha256: 4ff20c6be028be2825235631c45d9e4a75bca1de65f8840c02dfb28ea0137c45 md5: 5e4f3466526c52bc9af2d2353a1460bd depends: @@ -2668,14 +2260,7 @@ packages: license_family: BSD size: 87553 timestamp: 1690101185422 -- kind: conda - name: dnspython - version: 2.7.0 - build: pyhff2d567_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda sha256: 3ec40ccf63f2450c5e6c7dd579e42fc2e97caf0d8cd4ba24aa434e6fc264eda0 md5: 5fbd60d61d21b4bd2f9d7a48fe100418 depends: @@ -2694,14 +2279,7 @@ packages: license_family: OTHER size: 172172 timestamp: 1733256829961 -- kind: conda - name: email-validator - version: 2.2.0 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda sha256: b91a19eb78edfc2dbb36de9a67f74ee2416f1b5273dd7327abe53f2dbf864736 md5: da16dd3b0b71339060cd44cb7110ddf9 depends: @@ -2711,14 +2289,7 @@ packages: license: Unlicense size: 44401 timestamp: 1733300827551 -- kind: conda - name: email_validator - version: 2.2.0 - build: hd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_1.conda sha256: e0d0fdf587aa0ed0ff08b2bce3ab355f46687b87b0775bfba01cc80a859ee6a2 md5: 0794f8807ff2c6f020422cacb1bd7bfa depends: @@ -2726,14 +2297,7 @@ packages: license: Unlicense size: 6552 timestamp: 1733300828176 -- kind: conda - name: exceptiongroup - version: 1.2.2 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda sha256: cbde2c64ec317118fc06b223c5fd87c8a680255e7348dd60e7b292d2e103e701 md5: a16662747cdeb9abbac74d0057cc976e depends: @@ -2741,44 +2305,32 @@ packages: license: MIT and PSF-2.0 size: 20486 timestamp: 1733208916977 -- kind: conda - name: expat - version: 2.6.4 - build: h5888daf_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/expat-2.6.4-h5888daf_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/expat-2.6.4-h5888daf_0.conda sha256: 1848c7db9e264e3b8036ee133d570dd880422983cd20dd9585a505289606d276 md5: 1d6afef758879ef5ee78127eb4cd2c4a depends: - __glibc >=2.17,<3.0.a0 - libexpat 2.6.4 h5888daf_0 - libgcc >=13 + arch: x86_64 + platform: linux license: MIT license_family: MIT size: 138145 timestamp: 1730967050578 -- kind: conda - name: expat - version: 2.6.4 - build: h5ad3122_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/expat-2.6.4-h5ad3122_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/expat-2.6.4-h5ad3122_0.conda sha256: 13905ad49c2f43776bac0e464ffd3c9ec10ef35cc7dd7e187af6f66f843fa29a md5: e8f1d587055376ea2419cc78696abd0b depends: - libexpat 2.6.4 h5ad3122_0 - libgcc >=13 + arch: aarch64 + platform: linux license: MIT license_family: MIT size: 130354 timestamp: 1730967212801 -- kind: conda - name: fastapi - version: 0.115.6 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.6-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.6-pyhd8ed1ab_0.conda sha256: d7826d537c667093c9de96411a09585a8d620c84a830a0195e58e9a0df45f018 md5: 1b1e0c97830cdf75f1f371bd467ab657 depends: @@ -2796,13 +2348,7 @@ packages: license_family: MIT size: 73084 timestamp: 1733362427885 -- kind: conda - name: fastapi-cli - version: 0.0.7 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.7-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.7-pyhd8ed1ab_0.conda sha256: 300683731013b7221922339cd40430bb3c2ddeeb658fd7e37f5099ffe64e4db0 md5: d960e0ea9e1c561aa928f6c4439f04c7 depends: @@ -2814,14 +2360,7 @@ packages: license_family: MIT size: 15546 timestamp: 1734302408607 -- kind: conda - name: filelock - version: 3.16.1 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_1.conda sha256: 18dca6e2194732df7ebf824abaefe999e4765ebe8e8a061269406ab88fc418b9 md5: d692e9ba6f92dc51484bf3477e36ce7c depends: @@ -2829,12 +2368,28 @@ packages: license: Unlicense size: 17441 timestamp: 1733240909987 -- kind: conda - name: fluidsynth - version: 2.3.7 - build: h4f58cef_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/fluidsynth-2.3.7-h4f58cef_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/fluidsynth-2.3.7-hd992666_0.conda + sha256: 0bf26d25ae79e6f5f01a49a00e9ba3b60b10dd4c12ec43bdba51055c26bc9dd6 + md5: dd6c7b8a1b217ef7522ca987c465651d + depends: + - __glibc >=2.17,<3.0.a0 + - alsa-lib >=1.2.12,<1.3.0a0 + - jack >=1.9.22,<1.10.0a0 + - libgcc >=13 + - libglib >=2.82.2,<3.0a0 + - libsndfile >=1.2.2,<1.3.0a0 + - libstdcxx >=13 + - portaudio >=19.6.0,<19.7.0a0 + - pulseaudio-client >=17.0,<17.1.0a0 + - readline >=8.2,<9.0a0 + - sdl2 >=2.30.7,<3.0a0 + arch: x86_64 + platform: linux + license: GPL-2.0-or-later + license_family: LGPL + size: 279996 + timestamp: 1729590344462 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/fluidsynth-2.3.7-h4f58cef_0.conda sha256: e557d4fcb40f224180d61cc5e57fe3d5d5793a255c7d5a29546e524ef2ffa298 md5: 0207cc67431f4d12605cae60d8d323d7 depends: @@ -2848,16 +2403,13 @@ packages: - pulseaudio-client >=17.0,<17.1.0a0 - readline >=8.2,<9.0a0 - sdl2 >=2.30.7,<3.0a0 + arch: aarch64 + platform: linux license: GPL-2.0-or-later license_family: LGPL size: 292770 timestamp: 1729590405853 -- kind: conda - name: fluidsynth - version: 2.3.7 - build: h80fea77_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/fluidsynth-2.3.7-h80fea77_0.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/fluidsynth-2.3.7-h80fea77_0.conda sha256: e4c39119797493d4f085cd6274e123372bec77e05ef93203ccf5dee714bfd9c3 md5: dc2fc082a05af6a790d3e8e3e6489e6c depends: @@ -2868,112 +2420,41 @@ packages: - portaudio >=19.6.0,<19.7.0a0 - readline >=8.2,<9.0a0 - sdl2 >=2.30.7,<3.0a0 + arch: arm64 + platform: osx license: GPL-2.0-or-later license_family: LGPL size: 234967 timestamp: 1729590579216 -- kind: conda - name: fluidsynth - version: 2.3.7 - build: hd992666_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/fluidsynth-2.3.7-hd992666_0.conda - sha256: 0bf26d25ae79e6f5f01a49a00e9ba3b60b10dd4c12ec43bdba51055c26bc9dd6 - md5: dd6c7b8a1b217ef7522ca987c465651d - depends: - - __glibc >=2.17,<3.0.a0 - - alsa-lib >=1.2.12,<1.3.0a0 - - jack >=1.9.22,<1.10.0a0 - - libgcc >=13 - - libglib >=2.82.2,<3.0a0 - - libsndfile >=1.2.2,<1.3.0a0 - - libstdcxx >=13 - - portaudio >=19.6.0,<19.7.0a0 - - pulseaudio-client >=17.0,<17.1.0a0 - - readline >=8.2,<9.0a0 - - sdl2 >=2.30.7,<3.0a0 - license: GPL-2.0-or-later - license_family: LGPL - size: 279996 - timestamp: 1729590344462 -- kind: conda - name: font-ttf-dejavu-sans-mono - version: '2.37' - build: hab24e00_0 - subdir: noarch - noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 sha256: 58d7f40d2940dd0a8aa28651239adbf5613254df0f75789919c4e6762054403b md5: 0c96522c6bdaed4b1566d11387caaf45 license: BSD-3-Clause license_family: BSD size: 397370 timestamp: 1566932522327 -- kind: conda - name: font-ttf-inconsolata - version: '3.000' - build: h77eed37_0 - subdir: noarch - noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 sha256: c52a29fdac682c20d252facc50f01e7c2e7ceac52aa9817aaf0bb83f7559ec5c md5: 34893075a5c9e55cdafac56607368fc6 license: OFL-1.1 license_family: Other size: 96530 timestamp: 1620479909603 -- kind: conda - name: font-ttf-source-code-pro - version: '2.038' - build: h77eed37_0 - subdir: noarch - noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 sha256: 00925c8c055a2275614b4d983e1df637245e19058d79fc7dd1a93b8d9fb4b139 md5: 4d59c254e01d9cde7957100457e2d5fb license: OFL-1.1 license_family: Other size: 700814 timestamp: 1620479612257 -- kind: conda - name: font-ttf-ubuntu - version: '0.83' - build: h77eed37_3 - build_number: 3 - subdir: noarch - noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_3.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_3.conda sha256: 2821ec1dc454bd8b9a31d0ed22a7ce22422c0aef163c59f49dfdf915d0f0ca14 md5: 49023d73832ef61042f6a237cb2687e7 license: LicenseRef-Ubuntu-Font-Licence-Version-1.0 license_family: Other size: 1620504 timestamp: 1727511233259 -- kind: conda - name: fontconfig - version: 2.15.0 - build: h1383a14_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/fontconfig-2.15.0-h1383a14_1.conda - sha256: f79d3d816fafbd6a2b0f75ebc3251a30d3294b08af9bb747194121f5efa364bc - md5: 7b29f48742cea5d1ccb5edd839cb5621 - depends: - - __osx >=11.0 - - freetype >=2.12.1,<3.0a0 - - libexpat >=2.6.3,<3.0a0 - - libzlib >=1.3.1,<2.0a0 - license: MIT - license_family: MIT - size: 234227 - timestamp: 1730284037572 -- kind: conda - name: fontconfig - version: 2.15.0 - build: h7e30c49_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/fontconfig-2.15.0-h7e30c49_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/fontconfig-2.15.0-h7e30c49_1.conda sha256: 7093aa19d6df5ccb6ca50329ef8510c6acb6b0d8001191909397368b65b02113 md5: 8f5b0b297b59e1ac160ad4beec99dbee depends: @@ -2983,17 +2464,13 @@ packages: - libgcc >=13 - libuuid >=2.38.1,<3.0a0 - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux license: MIT license_family: MIT size: 265599 timestamp: 1730283881107 -- kind: conda - name: fontconfig - version: 2.15.0 - build: h8dda3cd_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/fontconfig-2.15.0-h8dda3cd_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/fontconfig-2.15.0-h8dda3cd_1.conda sha256: fe023bb8917c8a3138af86ef537b70c8c5d60c44f93946a87d1e8bb1a6634b55 md5: 112b71b6af28b47c624bcbeefeea685b depends: @@ -3002,17 +2479,27 @@ packages: - libgcc >=13 - libuuid >=2.38.1,<3.0a0 - libzlib >=1.3.1,<2.0a0 + arch: aarch64 + platform: linux license: MIT license_family: MIT size: 277832 timestamp: 1730284967179 -- kind: conda - name: fonts-conda-ecosystem - version: '1' - build: '0' - subdir: noarch - noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/fontconfig-2.15.0-h1383a14_1.conda + sha256: f79d3d816fafbd6a2b0f75ebc3251a30d3294b08af9bb747194121f5efa364bc + md5: 7b29f48742cea5d1ccb5edd839cb5621 + depends: + - __osx >=11.0 + - freetype >=2.12.1,<3.0a0 + - libexpat >=2.6.3,<3.0a0 + - libzlib >=1.3.1,<2.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 234227 + timestamp: 1730284037572 +- conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 sha256: a997f2f1921bb9c9d76e6fa2f6b408b7fa549edd349a77639c9fe7a23ea93e61 md5: fee5683a3f04bd15cbd8318b096a27ab depends: @@ -3021,13 +2508,7 @@ packages: license_family: BSD size: 3667 timestamp: 1566974674465 -- kind: conda - name: fonts-conda-forge - version: '1' - build: '0' - subdir: noarch - noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2 sha256: 53f23a3319466053818540bcdf2091f253cbdbab1e0e9ae7b9e509dcaa2a5e38 md5: f766549260d6815b0c52253f1fb1bb29 depends: @@ -3039,76 +2520,42 @@ packages: license_family: BSD size: 4102 timestamp: 1566932280397 -- kind: conda - name: freetype - version: 2.12.1 - build: h267a509_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.12.1-h267a509_2.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.12.1-h267a509_2.conda sha256: b2e3c449ec9d907dd4656cb0dc93e140f447175b125a3824b31368b06c666bb6 md5: 9ae35c3d96db2c94ce0cef86efdfa2cb depends: - libgcc-ng >=12 - libpng >=1.6.39,<1.7.0a0 - libzlib >=1.2.13,<2.0.0a0 + arch: x86_64 + platform: linux license: GPL-2.0-only OR FTL size: 634972 timestamp: 1694615932610 -- kind: conda - name: freetype - version: 2.12.1 - build: hadb7bae_2 - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/freetype-2.12.1-hadb7bae_2.conda - sha256: 791673127e037a2dc0eebe122dc4f904cb3f6e635bb888f42cbe1a76b48748d9 - md5: e6085e516a3e304ce41a8ee08b9b89ad - depends: - - libpng >=1.6.39,<1.7.0a0 - - libzlib >=1.2.13,<2.0.0a0 - license: GPL-2.0-only OR FTL - size: 596430 - timestamp: 1694616332835 -- kind: conda - name: freetype - version: 2.12.1 - build: hf0a5ef3_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/freetype-2.12.1-hf0a5ef3_2.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/freetype-2.12.1-hf0a5ef3_2.conda sha256: 7af93030f4407f076dce181062360efac2cd54dce863b5d7765287a6f5382537 md5: a5ab74c5bd158c3d5532b66d8d83d907 depends: - libgcc-ng >=12 - libpng >=1.6.39,<1.7.0a0 - libzlib >=1.2.13,<2.0.0a0 + arch: aarch64 + platform: linux license: GPL-2.0-only OR FTL size: 642092 timestamp: 1694617858496 -- kind: conda - name: frozenlist - version: 1.5.0 - build: py312h0bf5046_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/frozenlist-1.5.0-py312h0bf5046_0.conda - sha256: 44d6d6b332421e621c029fb149f12dba1ccb5ed6ac632e2e807a9d92d6cb2864 - md5: 7960352935cc95ac23883c9b8c97f2ff +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/freetype-2.12.1-hadb7bae_2.conda + sha256: 791673127e037a2dc0eebe122dc4f904cb3f6e635bb888f42cbe1a76b48748d9 + md5: e6085e516a3e304ce41a8ee08b9b89ad depends: - - __osx >=11.0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - license: Apache-2.0 - license_family: APACHE - size: 53366 - timestamp: 1729699762631 -- kind: conda - name: frozenlist - version: 1.5.0 - build: py312h66e93f0_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/frozenlist-1.5.0-py312h66e93f0_0.conda + - libpng >=1.6.39,<1.7.0a0 + - libzlib >=1.2.13,<2.0.0a0 + arch: arm64 + platform: osx + license: GPL-2.0-only OR FTL + size: 596430 + timestamp: 1694616332835 +- conda: https://conda.anaconda.org/conda-forge/linux-64/frozenlist-1.5.0-py312h66e93f0_0.conda sha256: 7e0c12983b20f2816b3712729b5a35ecb7ee152132ca7cf805427c62395ea823 md5: f98e36c96b2c66d9043187179ddb04f4 depends: @@ -3116,16 +2563,13 @@ packages: - libgcc >=13 - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux license: Apache-2.0 license_family: APACHE size: 60968 timestamp: 1729699568442 -- kind: conda - name: frozenlist - version: 1.5.0 - build: py312hb2c0f52_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/frozenlist-1.5.0-py312hb2c0f52_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/frozenlist-1.5.0-py312hb2c0f52_0.conda sha256: b0a9ff3e71452eed70877b2f3175d41cd85070da6deac381c5f3f61e1f19bccb md5: 62fc11b0738ca15e0dd19b60cf280d12 depends: @@ -3133,17 +2577,27 @@ packages: - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux license: Apache-2.0 license_family: APACHE size: 59967 timestamp: 1729699642726 -- kind: conda - name: fsspec - version: 2024.12.0 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.12.0-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/frozenlist-1.5.0-py312h0bf5046_0.conda + sha256: 44d6d6b332421e621c029fb149f12dba1ccb5ed6ac632e2e807a9d92d6cb2864 + md5: 7960352935cc95ac23883c9b8c97f2ff + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + size: 53366 + timestamp: 1729699762631 +- conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.12.0-pyhd8ed1ab_0.conda sha256: 3320970c4604989eadf908397a9475f9e6a96a773c185915111399cbfbe47817 md5: e041ad4c43ab5e10c74587f95378ebc7 depends: @@ -3152,13 +2606,24 @@ packages: license_family: BSD size: 137756 timestamp: 1734650349242 -- kind: conda - name: gettext - version: 0.22.5 - build: h0a1ffab_3 - build_number: 3 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/gettext-0.22.5-h0a1ffab_3.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/gettext-0.22.5-he02047a_3.conda + sha256: c3d9a453f523acbf2b3e1c82a42edfc7c7111b4686a2180ab48cb9b51a274218 + md5: c7f243bbaea97cd6ea1edd693270100e + depends: + - __glibc >=2.17,<3.0.a0 + - gettext-tools 0.22.5 he02047a_3 + - libasprintf 0.22.5 he8f35ee_3 + - libasprintf-devel 0.22.5 he8f35ee_3 + - libgcc-ng >=12 + - libgettextpo 0.22.5 he02047a_3 + - libgettextpo-devel 0.22.5 he02047a_3 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LGPL-2.1-or-later AND GPL-3.0-or-later + size: 479452 + timestamp: 1723626088190 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gettext-0.22.5-h0a1ffab_3.conda sha256: 25b0b40329537f374a7394474376b01fd226e31f3ff3aa9254e8d328b23c2145 md5: be78ccdd273e43e27e66fc1629df6576 depends: @@ -3169,16 +2634,12 @@ packages: - libgettextpo 0.22.5 h0a1ffab_3 - libgettextpo-devel 0.22.5 h0a1ffab_3 - libstdcxx-ng >=12 + arch: aarch64 + platform: linux license: LGPL-2.1-or-later AND GPL-3.0-or-later size: 481962 timestamp: 1723626297896 -- kind: conda - name: gettext - version: 0.22.5 - build: h8414b35_3 - build_number: 3 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/gettext-0.22.5-h8414b35_3.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/gettext-0.22.5-h8414b35_3.conda sha256: 634e11f6e6560568ede805f823a2be8634c6a0a2fa6743880ec403d925923138 md5: 89b31a91b3ac2b7b3b0e5bc4eb99c39d depends: @@ -3192,182 +2653,124 @@ packages: - libiconv >=1.17,<2.0a0 - libintl 0.22.5 h8414b35_3 - libintl-devel 0.22.5 h8414b35_3 + arch: arm64 + platform: osx license: LGPL-2.1-or-later AND GPL-3.0-or-later size: 483255 timestamp: 1723627203687 -- kind: conda - name: gettext - version: 0.22.5 - build: he02047a_3 - build_number: 3 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/gettext-0.22.5-he02047a_3.conda - sha256: c3d9a453f523acbf2b3e1c82a42edfc7c7111b4686a2180ab48cb9b51a274218 - md5: c7f243bbaea97cd6ea1edd693270100e +- conda: https://conda.anaconda.org/conda-forge/linux-64/gettext-tools-0.22.5-he02047a_3.conda + sha256: 0fd003953ce1ce9f4569458aab9ffaa397e3be2bc069250e2f05fd93b0ad2976 + md5: fcd2016d1d299f654f81021e27496818 depends: - __glibc >=2.17,<3.0.a0 - - gettext-tools 0.22.5 he02047a_3 - - libasprintf 0.22.5 he8f35ee_3 - - libasprintf-devel 0.22.5 he8f35ee_3 - libgcc-ng >=12 - - libgettextpo 0.22.5 he02047a_3 - - libgettextpo-devel 0.22.5 he02047a_3 - - libstdcxx-ng >=12 - license: LGPL-2.1-or-later AND GPL-3.0-or-later - size: 479452 - timestamp: 1723626088190 -- kind: conda - name: gettext-tools - version: 0.22.5 - build: h0a1ffab_3 - build_number: 3 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/gettext-tools-0.22.5-h0a1ffab_3.conda + arch: x86_64 + platform: linux + license: GPL-3.0-or-later + license_family: GPL + size: 2750908 + timestamp: 1723626056740 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gettext-tools-0.22.5-h0a1ffab_3.conda sha256: 9846b9d2e3d081cc8cb9ac7800c7e02a7b63bceea8619e0c51cfa271f89afdb2 md5: 5fc8dfe3163ead62e0af82d97ce6b486 depends: - libgcc-ng >=12 + arch: aarch64 + platform: linux license: GPL-3.0-or-later license_family: GPL size: 2954814 timestamp: 1723626262722 -- kind: conda - name: gettext-tools - version: 0.22.5 - build: h8414b35_3 - build_number: 3 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/gettext-tools-0.22.5-h8414b35_3.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/gettext-tools-0.22.5-h8414b35_3.conda sha256: 50b530cf2326938b80330f78cf4056492fa8c6a5c7e313d92069ebbbb2f4d264 md5: 47071f4b2915032e1d47119f779f9d9c depends: - __osx >=11.0 - libiconv >=1.17,<2.0a0 - libintl 0.22.5 h8414b35_3 + arch: arm64 + platform: osx license: GPL-3.0-or-later license_family: GPL size: 2467439 timestamp: 1723627140130 -- kind: conda - name: gettext-tools - version: 0.22.5 - build: he02047a_3 - build_number: 3 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/gettext-tools-0.22.5-he02047a_3.conda - sha256: 0fd003953ce1ce9f4569458aab9ffaa397e3be2bc069250e2f05fd93b0ad2976 - md5: fcd2016d1d299f654f81021e27496818 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc-ng >=12 - license: GPL-3.0-or-later - license_family: GPL - size: 2750908 - timestamp: 1723626056740 -- kind: conda - name: gflags - version: 2.2.2 - build: h5888daf_1005 - build_number: 1005 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/gflags-2.2.2-h5888daf_1005.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/gflags-2.2.2-h5888daf_1005.conda sha256: 6c33bf0c4d8f418546ba9c250db4e4221040936aef8956353bc764d4877bc39a md5: d411fc29e338efb48c5fd4576d71d881 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - libstdcxx >=13 + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD size: 119654 timestamp: 1726600001928 -- kind: conda - name: gflags - version: 2.2.2 - build: h5ad3122_1005 - build_number: 1005 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/gflags-2.2.2-h5ad3122_1005.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gflags-2.2.2-h5ad3122_1005.conda sha256: 28fe6b40b20454106d5e4ef6947cf298c13cc72a46347bbc49b563cd3a463bfa md5: 4ff634d515abbf664774b5e1168a9744 depends: - libgcc >=13 - libstdcxx >=13 + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD size: 106638 timestamp: 1726599967617 -- kind: conda - name: gflags - version: 2.2.2 - build: hf9b8971_1005 - build_number: 1005 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/gflags-2.2.2-hf9b8971_1005.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/gflags-2.2.2-hf9b8971_1005.conda sha256: fd56ed8a1dab72ab90d8a8929b6f916a6d9220ca297ff077f8f04c5ed3408e20 md5: 57a511a5905caa37540eb914dfcbf1fb depends: - __osx >=11.0 - libcxx >=17 + arch: arm64 + platform: osx license: BSD-3-Clause license_family: BSD size: 82090 timestamp: 1726600145480 -- kind: conda - name: glog - version: 0.7.1 - build: h468a4a4_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/glog-0.7.1-h468a4a4_0.conda - sha256: 920795d4f775a9f47e91c2223e64847f0b212b3fedc56c137c5889e32efe8ba0 - md5: 08940a32c6ced3703d1412dd37df4f62 +- conda: https://conda.anaconda.org/conda-forge/linux-64/glog-0.7.1-hbabe93e_0.conda + sha256: dc824dc1d0aa358e28da2ecbbb9f03d932d976c8dca11214aa1dcdfcbd054ba2 + md5: ff862eebdfeb2fd048ae9dc92510baca depends: - gflags >=2.2.2,<2.3.0a0 - libgcc-ng >=12 - libstdcxx-ng >=12 + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD - size: 145811 - timestamp: 1718284208668 -- kind: conda - name: glog - version: 0.7.1 - build: hbabe93e_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/glog-0.7.1-hbabe93e_0.conda - sha256: dc824dc1d0aa358e28da2ecbbb9f03d932d976c8dca11214aa1dcdfcbd054ba2 - md5: ff862eebdfeb2fd048ae9dc92510baca + size: 143452 + timestamp: 1718284177264 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/glog-0.7.1-h468a4a4_0.conda + sha256: 920795d4f775a9f47e91c2223e64847f0b212b3fedc56c137c5889e32efe8ba0 + md5: 08940a32c6ced3703d1412dd37df4f62 depends: - gflags >=2.2.2,<2.3.0a0 - libgcc-ng >=12 - libstdcxx-ng >=12 + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD - size: 143452 - timestamp: 1718284177264 -- kind: conda - name: glog - version: 0.7.1 - build: heb240a5_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/glog-0.7.1-heb240a5_0.conda + size: 145811 + timestamp: 1718284208668 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/glog-0.7.1-heb240a5_0.conda sha256: 9fc77de416953aa959039db72bc41bfa4600ae3ff84acad04a7d0c1ab9552602 md5: fef68d0a95aa5b84b5c1a4f6f3bf40e1 depends: - __osx >=11.0 - gflags >=2.2.2,<2.3.0a0 - libcxx >=16 + arch: arm64 + platform: osx license: BSD-3-Clause license_family: BSD size: 112215 timestamp: 1718284365403 -- kind: conda - name: googleapis-common-protos - version: 1.66.0 - build: pyhff2d567_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda sha256: d8d19575a827f2c62500949b9536efdd6b5406c9f546a73b6a87ac90b03a5875 md5: 4861e30ff0cd566ea6fb4593e3b7c22a depends: @@ -3377,61 +2780,42 @@ packages: license_family: APACHE size: 116522 timestamp: 1731459019854 -- kind: conda - name: graphite2 - version: 1.3.13 - build: h2f0025b_1003 - build_number: 1003 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/graphite2-1.3.13-h2f0025b_1003.conda - sha256: c7585e1fb536120583790080f3b3875c04d5f2d64eafbc87e9aa39895e4118c0 - md5: f33009add6a08358bc12d114ceec1304 +- conda: https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.13-h59595ed_1003.conda + sha256: 0595b009f20f8f60f13a6398e7cdcbd2acea5f986633adcf85f5a2283c992add + md5: f87c7b7c2cb45f323ffbce941c78ab7c depends: - libgcc-ng >=12 - libstdcxx-ng >=12 + arch: x86_64 + platform: linux license: LGPL-2.0-or-later license_family: LGPL - size: 99453 - timestamp: 1711634223220 -- kind: conda - name: graphite2 - version: 1.3.13 - build: h59595ed_1003 - build_number: 1003 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.13-h59595ed_1003.conda - sha256: 0595b009f20f8f60f13a6398e7cdcbd2acea5f986633adcf85f5a2283c992add - md5: f87c7b7c2cb45f323ffbce941c78ab7c + size: 96855 + timestamp: 1711634169756 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/graphite2-1.3.13-h2f0025b_1003.conda + sha256: c7585e1fb536120583790080f3b3875c04d5f2d64eafbc87e9aa39895e4118c0 + md5: f33009add6a08358bc12d114ceec1304 depends: - libgcc-ng >=12 - libstdcxx-ng >=12 + arch: aarch64 + platform: linux license: LGPL-2.0-or-later license_family: LGPL - size: 96855 - timestamp: 1711634169756 -- kind: conda - name: graphite2 - version: 1.3.13 - build: hebf3989_1003 - build_number: 1003 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/graphite2-1.3.13-hebf3989_1003.conda + size: 99453 + timestamp: 1711634223220 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/graphite2-1.3.13-hebf3989_1003.conda sha256: 2eadafbfc52f5e7df3da3c3b7e5bbe34d970bea1d645ffe60b0b1c3a216657f5 md5: 339991336eeddb70076d8ca826dac625 depends: - libcxx >=16 + arch: arm64 + platform: osx license: LGPL-2.0-or-later license_family: LGPL size: 79774 timestamp: 1711634444608 -- kind: conda - name: h11 - version: 0.14.0 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda sha256: 622516185a7c740d5c7f27016d0c15b45782c1501e5611deec63fd70344ce7c8 md5: 7ee49e89531c0dcbba9466f6d115d585 depends: @@ -3441,14 +2825,7 @@ packages: license_family: MIT size: 51846 timestamp: 1733327599467 -- kind: conda - name: h2 - version: 4.1.0 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_1.conda sha256: 843ddad410c370672a8250470697027618f104153612439076d4d7b91eeb7b5c md5: 825927dc7b0f287ef8d4d0011bb113b1 depends: @@ -3459,12 +2836,7 @@ packages: license_family: MIT size: 52000 timestamp: 1733298867359 -- kind: conda - name: harfbuzz - version: 10.1.0 - build: h0b3b770_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-10.1.0-h0b3b770_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-10.1.0-h0b3b770_0.conda sha256: da2b3b3c1fc34444fa484ed227e4c2d313cdff2ed3ce5a45d01f07b78f9273f8 md5: ab1d7d56034814f4c3ed9f69f8c68806 depends: @@ -3477,60 +2849,49 @@ packages: - libgcc >=13 - libglib >=2.82.2,<3.0a0 - libstdcxx >=13 + arch: x86_64 + platform: linux license: MIT license_family: MIT size: 1600521 timestamp: 1733706966476 -- kind: conda - name: harfbuzz - version: 10.1.0 - build: h9df47df_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/harfbuzz-10.1.0-h9df47df_0.conda - sha256: 8b56a8e0847a2a86a80211f5c5e4f19d0d7fa0be12cc1a5337e555857757cc6d - md5: bbd10a18fb41d0892fbb3aa810b4937d +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/harfbuzz-10.1.0-hbdc1db7_0.conda + sha256: 69a269f04f72632f5949e422c2ff673e408a76a9bf451e4e4e58a0996e1e8e65 + md5: 881e8d9b31e1a7335d4dea4d66851bc0 depends: - - __osx >=11.0 - cairo >=1.18.2,<2.0a0 - freetype >=2.12.1,<3.0a0 - graphite2 - icu >=75.1,<76.0a0 - - libcxx >=18 - libexpat >=2.6.4,<3.0a0 + - libgcc >=13 - libglib >=2.82.2,<3.0a0 + - libstdcxx >=13 + arch: aarch64 + platform: linux license: MIT license_family: MIT - size: 1357252 - timestamp: 1733707517728 -- kind: conda - name: harfbuzz - version: 10.1.0 - build: hbdc1db7_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/harfbuzz-10.1.0-hbdc1db7_0.conda - sha256: 69a269f04f72632f5949e422c2ff673e408a76a9bf451e4e4e58a0996e1e8e65 - md5: 881e8d9b31e1a7335d4dea4d66851bc0 + size: 1626591 + timestamp: 1733709685847 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/harfbuzz-10.1.0-h9df47df_0.conda + sha256: 8b56a8e0847a2a86a80211f5c5e4f19d0d7fa0be12cc1a5337e555857757cc6d + md5: bbd10a18fb41d0892fbb3aa810b4937d depends: + - __osx >=11.0 - cairo >=1.18.2,<2.0a0 - freetype >=2.12.1,<3.0a0 - graphite2 - icu >=75.1,<76.0a0 + - libcxx >=18 - libexpat >=2.6.4,<3.0a0 - - libgcc >=13 - libglib >=2.82.2,<3.0a0 - - libstdcxx >=13 + arch: arm64 + platform: osx license: MIT license_family: MIT - size: 1626591 - timestamp: 1733709685847 -- kind: conda - name: hpack - version: 4.0.0 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda + size: 1357252 + timestamp: 1733707517728 +- conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda sha256: ec89b7e5b8aa2f0219f666084446e1fb7b54545861e9caa892acb24d125761b5 md5: 2aa5ff7fa34a81b9196532c84c10d865 depends: @@ -3539,14 +2900,7 @@ packages: license_family: MIT size: 29412 timestamp: 1733299296857 -- kind: conda - name: httpcore - version: 1.0.7 - build: pyh29332c3_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda sha256: c84d012a245171f3ed666a8bf9319580c269b7843ffa79f26468842da3abd5df md5: 2ca8e6dbc86525c8b95e3c0ffa26442e depends: @@ -3560,12 +2914,7 @@ packages: license_family: BSD size: 48959 timestamp: 1731707562362 -- kind: conda - name: httptools - version: 0.6.4 - build: py312h66e93f0_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/httptools-0.6.4-py312h66e93f0_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/httptools-0.6.4-py312h66e93f0_0.conda sha256: 621e7e050b888e5239d33e37ea72d6419f8367e5babcad38b755586f20264796 md5: 8b1160b32557290b64d5be68db3d996d depends: @@ -3573,16 +2922,13 @@ packages: - libgcc >=13 - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux license: MIT license_family: MIT size: 101872 timestamp: 1732707756745 -- kind: conda - name: httptools - version: 0.6.4 - build: py312hb2c0f52_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/httptools-0.6.4-py312hb2c0f52_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/httptools-0.6.4-py312hb2c0f52_0.conda sha256: 0bd1f30224af142711d11033a7469ae402a1147143f399f7341bbc1d8178c722 md5: 5e70a6de59352f9a52e9caa7f3447390 depends: @@ -3590,16 +2936,13 @@ packages: - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux license: MIT license_family: MIT size: 101255 timestamp: 1732707891645 -- kind: conda - name: httptools - version: 0.6.4 - build: py312hea69d52_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/httptools-0.6.4-py312hea69d52_0.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/httptools-0.6.4-py312hea69d52_0.conda sha256: 5e93cda79e32e8c0039e05ea1939e688da336187dab025f699b42ef529e848be md5: e1747a8e8d2aca5499aaea9993bf31ff depends: @@ -3607,17 +2950,13 @@ packages: - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx license: MIT license_family: MIT size: 85623 timestamp: 1732707871414 -- kind: conda - name: httpx - version: 0.28.1 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda sha256: cd0f1de3697b252df95f98383e9edb1d00386bfdd03fdf607fa42fe5fcb09950 md5: d6989ead454181f4f9bc987d3dc4e285 depends: @@ -3630,13 +2969,7 @@ packages: license_family: BSD size: 63082 timestamp: 1733663449209 -- kind: conda - name: huggingface_hub - version: 0.27.1 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.27.1-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.27.1-pyhd8ed1ab_0.conda sha256: 4597d7aa720f4acdddacc27b3f9e8d4336cb79477c53aee2d7ab96d136169cdb md5: 8c9a53ecd0c3c278efbdac567dd12ed0 depends: @@ -3653,14 +2986,7 @@ packages: license_family: APACHE size: 278363 timestamp: 1736350219225 -- kind: conda - name: hyperframe - version: 6.0.1 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda sha256: e91c6ef09d076e1d9a02819cd00fa7ee18ecf30cdd667605c853980216584d1b md5: 566e75c90c1d0c8c459eb0ad9833dc7a depends: @@ -3669,59 +2995,43 @@ packages: license_family: MIT size: 17239 timestamp: 1733298862681 -- kind: conda - name: icu - version: '75.1' - build: he02047a_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda sha256: 71e750d509f5fa3421087ba88ef9a7b9be11c53174af3aa4d06aff4c18b38e8e md5: 8b189310083baabfb622af68fd9d3ae3 depends: - __glibc >=2.17,<3.0.a0 - libgcc-ng >=12 - libstdcxx-ng >=12 + arch: x86_64 + platform: linux license: MIT license_family: MIT size: 12129203 timestamp: 1720853576813 -- kind: conda - name: icu - version: '75.1' - build: hf9b3779_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda sha256: 813298f2e54ef087dbfc9cc2e56e08ded41de65cff34c639cc8ba4e27e4540c9 md5: 268203e8b983fddb6412b36f2024e75c depends: - libgcc-ng >=12 - libstdcxx-ng >=12 + arch: aarch64 + platform: linux license: MIT license_family: MIT size: 12282786 timestamp: 1720853454991 -- kind: conda - name: icu - version: '75.1' - build: hfee45f7_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda sha256: 9ba12c93406f3df5ab0a43db8a4b4ef67a5871dfd401010fbe29b218b2cbe620 md5: 5eb22c1d7b3fc4abb50d92d621583137 depends: - __osx >=11.0 + arch: arm64 + platform: osx license: MIT license_family: MIT size: 11857802 timestamp: 1720853997952 -- kind: conda - name: idna - version: '3.10' - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda sha256: d7a472c9fd479e2e8dcb83fb8d433fce971ea369d704ece380e876f9c3494e87 md5: 39a4f67be3286c86d696df570b1201b7 depends: @@ -3730,14 +3040,7 @@ packages: license_family: BSD size: 49765 timestamp: 1733211921194 -- kind: conda - name: importlib-metadata - version: 8.5.0 - build: pyha770c72_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_1.conda sha256: 13766b88fc5b23581530d3a0287c0c58ad82f60401afefab283bf158d2be55a9 md5: 315607a3030ad5d5227e76e0733798ff depends: @@ -3747,51 +3050,37 @@ packages: license_family: APACHE size: 28623 timestamp: 1733223207185 -- kind: conda - name: jack - version: 1.9.22 - build: h5c6c0ed_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/jack-1.9.22-h5c6c0ed_2.conda - sha256: 4b5714f0798fb38e19d0aced7e5a9069eebf3c8ee9f541d643d4e6d0edcf388f - md5: e6abd2a51bd727a1b62a54524f760864 +- conda: https://conda.anaconda.org/conda-forge/linux-64/jack-1.9.22-h7c63dc7_2.conda + sha256: 5e44a3a4b9791d1268636811628555ad40d4a8dd5c3be3334062df75580ae25b + md5: f56277b7f079f1b13cbf7fb9b4f194c4 depends: - alsa-lib >=1.2.10,<1.3.0.0a0 - libdb >=6.2.32,<6.3.0a0 - libgcc-ng >=12 - libopus >=1.3.1,<2.0a0 - libstdcxx-ng >=12 + arch: x86_64 + platform: linux license: LGPL-2.0-only license_family: LGPL - size: 489040 - timestamp: 1693881455137 -- kind: conda - name: jack - version: 1.9.22 - build: h7c63dc7_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/jack-1.9.22-h7c63dc7_2.conda - sha256: 5e44a3a4b9791d1268636811628555ad40d4a8dd5c3be3334062df75580ae25b - md5: f56277b7f079f1b13cbf7fb9b4f194c4 + size: 464144 + timestamp: 1693879949990 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/jack-1.9.22-h5c6c0ed_2.conda + sha256: 4b5714f0798fb38e19d0aced7e5a9069eebf3c8ee9f541d643d4e6d0edcf388f + md5: e6abd2a51bd727a1b62a54524f760864 depends: - alsa-lib >=1.2.10,<1.3.0.0a0 - libdb >=6.2.32,<6.3.0a0 - libgcc-ng >=12 - libopus >=1.3.1,<2.0a0 - libstdcxx-ng >=12 + arch: aarch64 + platform: linux license: LGPL-2.0-only license_family: LGPL - size: 464144 - timestamp: 1693879949990 -- kind: conda - name: jinja2 - version: 3.1.5 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.5-pyhd8ed1ab_0.conda + size: 489040 + timestamp: 1693881455137 +- conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.5-pyhd8ed1ab_0.conda sha256: 98977694b9ecaa3218662f843425f39501f81973c450f995eec68f1803ed71c3 md5: 2752a6ed44105bfb18c9bef1177d9dcd depends: @@ -3801,14 +3090,7 @@ packages: license_family: BSD size: 112561 timestamp: 1734824044952 -- kind: conda - name: jupyter_client - version: 8.6.3 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda sha256: 19d8bd5bb2fde910ec59e081eeb59529491995ce0d653a5209366611023a0b3a md5: 4ebae00eae9705b0c3d6d1018a81d047 depends: @@ -3823,14 +3105,7 @@ packages: license_family: BSD size: 106342 timestamp: 1733441040958 -- kind: conda - name: jupyter_core - version: 5.7.2 - build: pyh31011fe_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda sha256: 732b1e8536bc22a5a174baa79842d79db2f4956d90293dd82dc1b3f6099bcccd md5: 0a2980dada0dd7fd0998f0342308b1b1 depends: @@ -3842,56 +3117,43 @@ packages: license_family: BSD size: 57671 timestamp: 1727163547058 -- kind: conda - name: keyutils - version: 1.6.1 - build: h166bdaf_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 sha256: 150c05a6e538610ca7c43beb3a40d65c90537497a4f6a5f4d15ec0451b6f5ebb md5: 30186d27e2c9fa62b45fb1476b7200e3 depends: - libgcc-ng >=10.3.0 + arch: x86_64 + platform: linux license: LGPL-2.1-or-later size: 117831 timestamp: 1646151697040 -- kind: conda - name: keyutils - version: 1.6.1 - build: h4e544f5_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/keyutils-1.6.1-h4e544f5_0.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/keyutils-1.6.1-h4e544f5_0.tar.bz2 sha256: 6d4233d97a9b38acbb26e1268bcf8c10a8e79c2aed7e5a385ec3769967e3e65b md5: 1f24853e59c68892452ef94ddd8afd4b depends: - libgcc-ng >=10.3.0 + arch: aarch64 + platform: linux license: LGPL-2.1-or-later size: 112327 timestamp: 1646166857935 -- kind: conda - name: krb5 - version: 1.21.3 - build: h237132a_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda - sha256: 4442f957c3c77d69d9da3521268cad5d54c9033f1a73f99cde0a3658937b159b - md5: c6dc8a0fdec13a0565936655c33069a1 +- conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda + sha256: 99df692f7a8a5c27cd14b5fb1374ee55e756631b9c3d659ed3ee60830249b238 + md5: 3f43953b7d3fb3aaa1d0d0723d91e368 depends: - - __osx >=11.0 - - libcxx >=16 + - keyutils >=1.6.1,<2.0a0 - libedit >=3.1.20191231,<3.2.0a0 - libedit >=3.1.20191231,<4.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 - openssl >=3.3.1,<4.0a0 + arch: x86_64 + platform: linux license: MIT license_family: MIT - size: 1155530 - timestamp: 1719463474401 -- kind: conda - name: krb5 - version: 1.21.3 - build: h50a48e9_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/krb5-1.21.3-h50a48e9_0.conda + size: 1370023 + timestamp: 1719463201255 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/krb5-1.21.3-h50a48e9_0.conda sha256: 0ec272afcf7ea7fbf007e07a3b4678384b7da4047348107b2ae02630a570a815 md5: 29c10432a2ca1472b53f299ffb2ffa37 depends: @@ -3901,221 +3163,172 @@ packages: - libgcc-ng >=12 - libstdcxx-ng >=12 - openssl >=3.3.1,<4.0a0 + arch: aarch64 + platform: linux license: MIT license_family: MIT size: 1474620 timestamp: 1719463205834 -- kind: conda - name: krb5 - version: 1.21.3 - build: h659f571_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda - sha256: 99df692f7a8a5c27cd14b5fb1374ee55e756631b9c3d659ed3ee60830249b238 - md5: 3f43953b7d3fb3aaa1d0d0723d91e368 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda + sha256: 4442f957c3c77d69d9da3521268cad5d54c9033f1a73f99cde0a3658937b159b + md5: c6dc8a0fdec13a0565936655c33069a1 depends: - - keyutils >=1.6.1,<2.0a0 + - __osx >=11.0 + - libcxx >=16 - libedit >=3.1.20191231,<3.2.0a0 - libedit >=3.1.20191231,<4.0a0 - - libgcc-ng >=12 - - libstdcxx-ng >=12 - openssl >=3.3.1,<4.0a0 + arch: arm64 + platform: osx license: MIT license_family: MIT - size: 1370023 - timestamp: 1719463201255 -- kind: conda - name: lame - version: '3.100' - build: h166bdaf_1003 - build_number: 1003 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/lame-3.100-h166bdaf_1003.tar.bz2 + size: 1155530 + timestamp: 1719463474401 +- conda: https://conda.anaconda.org/conda-forge/linux-64/lame-3.100-h166bdaf_1003.tar.bz2 sha256: aad2a703b9d7b038c0f745b853c6bb5f122988fe1a7a096e0e606d9cbec4eaab md5: a8832b479f93521a9e7b5b743803be51 depends: - libgcc-ng >=12 + arch: x86_64 + platform: linux license: LGPL-2.0-only license_family: LGPL size: 508258 timestamp: 1664996250081 -- kind: conda - name: lame - version: '3.100' - build: h1a8c8d9_1003 - build_number: 1003 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/lame-3.100-h1a8c8d9_1003.tar.bz2 - sha256: f40ce7324b2cf5338b766d4cdb8e0453e4156a4f83c2f31bbfff750785de304c - md5: bff0e851d66725f78dc2fd8b032ddb7e - license: LGPL-2.0-only - license_family: LGPL - size: 528805 - timestamp: 1664996399305 -- kind: conda - name: lame - version: '3.100' - build: h4e544f5_1003 - build_number: 1003 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/lame-3.100-h4e544f5_1003.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lame-3.100-h4e544f5_1003.tar.bz2 sha256: 2502904a42df6d94bd743f7b73915415391dd6d31d5f50cb57c0a54a108e7b0a md5: ab05bcf82d8509b4243f07e93bada144 depends: - libgcc-ng >=12 + arch: aarch64 + platform: linux license: LGPL-2.0-only license_family: LGPL size: 604863 timestamp: 1664997611416 -- kind: conda - name: lcms2 - version: '2.16' - build: h922389a_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/lcms2-2.16-h922389a_0.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/lame-3.100-h1a8c8d9_1003.tar.bz2 + sha256: f40ce7324b2cf5338b766d4cdb8e0453e4156a4f83c2f31bbfff750785de304c + md5: bff0e851d66725f78dc2fd8b032ddb7e + arch: arm64 + platform: osx + license: LGPL-2.0-only + license_family: LGPL + size: 528805 + timestamp: 1664996399305 +- conda: https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.16-hb7c19ff_0.conda + sha256: 5c878d104b461b7ef922abe6320711c0d01772f4cd55de18b674f88547870041 + md5: 51bb7010fc86f70eee639b4bb7a894f5 + depends: + - libgcc-ng >=12 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libtiff >=4.6.0,<4.8.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 245247 + timestamp: 1701647787198 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lcms2-2.16-h922389a_0.conda sha256: be4847b1014d3cbbc524a53bdbf66182f86125775020563e11d914c8468dd97d md5: ffdd8267a04c515e7ce69c727b051414 depends: - libgcc-ng >=12 - libjpeg-turbo >=3.0.0,<4.0a0 - libtiff >=4.6.0,<4.8.0a0 + arch: aarch64 + platform: linux license: MIT license_family: MIT size: 296219 timestamp: 1701647961116 -- kind: conda - name: lcms2 - version: '2.16' - build: ha0e7c42_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.16-ha0e7c42_0.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.16-ha0e7c42_0.conda sha256: 151e0c84feb7e0747fabcc85006b8973b22f5abbc3af76a9add0b0ef0320ebe4 md5: 66f6c134e76fe13cce8a9ea5814b5dd5 depends: - libjpeg-turbo >=3.0.0,<4.0a0 - libtiff >=4.6.0,<4.8.0a0 + arch: arm64 + platform: osx license: MIT license_family: MIT size: 211959 timestamp: 1701647962657 -- kind: conda - name: lcms2 - version: '2.16' - build: hb7c19ff_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.16-hb7c19ff_0.conda - sha256: 5c878d104b461b7ef922abe6320711c0d01772f4cd55de18b674f88547870041 - md5: 51bb7010fc86f70eee639b4bb7a894f5 - depends: - - libgcc-ng >=12 - - libjpeg-turbo >=3.0.0,<4.0a0 - - libtiff >=4.6.0,<4.8.0a0 - license: MIT - license_family: MIT - size: 245247 - timestamp: 1701647787198 -- kind: conda - name: ld_impl_linux-64 - version: '2.43' - build: h712a8e2_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_2.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_2.conda sha256: 7c91cea91b13f4314d125d1bedb9d03a29ebbd5080ccdea70260363424646dbe md5: 048b02e3962f066da18efe3a21b77672 depends: - __glibc >=2.17,<3.0.a0 constrains: - binutils_impl_linux-64 2.43 + arch: x86_64 + platform: linux license: GPL-3.0-only license_family: GPL size: 669211 timestamp: 1729655358674 -- kind: conda - name: ld_impl_linux-aarch64 - version: '2.43' - build: h80caac9_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_2.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_2.conda sha256: 80ec7e8f006196808fac5bd4b3773a652847f97bbf08044cd87731424ac64f8b md5: fcbde5ea19d55468953bf588770c0501 constrains: - binutils_impl_linux-aarch64 2.43 + arch: aarch64 + platform: linux license: GPL-3.0-only license_family: GPL size: 698245 timestamp: 1729655345825 -- kind: conda - name: lerc - version: 4.0.0 - build: h27087fc_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 sha256: cb55f36dcd898203927133280ae1dc643368af041a48bcf7c026acb7c47b0c12 md5: 76bbff344f0134279f225174e9064c8f depends: - libgcc-ng >=12 - libstdcxx-ng >=12 + arch: x86_64 + platform: linux license: Apache-2.0 license_family: Apache size: 281798 timestamp: 1657977462600 -- kind: conda - name: lerc - version: 4.0.0 - build: h4de3ea5_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.0.0-h4de3ea5_0.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.0.0-h4de3ea5_0.tar.bz2 sha256: 2d09ef9b7796d83364957e420b41c32d94e628c3f0520b61c332518a7b5cd586 md5: 1a0ffc65e03ce81559dbcb0695ad1476 depends: - libgcc-ng >=12 - libstdcxx-ng >=12 + arch: aarch64 + platform: linux license: Apache-2.0 license_family: Apache size: 262096 timestamp: 1657978241894 -- kind: conda - name: lerc - version: 4.0.0 - build: h9a09cb3_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 sha256: 6f068bb53dfb6147d3147d981bb851bb5477e769407ad4e6a68edf482fdcb958 md5: de462d5aacda3b30721b512c5da4e742 depends: - libcxx >=13.0.1 + arch: arm64 + platform: osx license: Apache-2.0 license_family: Apache size: 215721 timestamp: 1657977558796 -- kind: conda - name: libabseil - version: '20240722.0' - build: cxx17_h07bc746_4 - build_number: 4 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_h07bc746_4.conda - sha256: 05fa5e5e908962b9c5aba95f962e2ca81d9599c4715aebe5e4ddb72b309d1770 - md5: c2d95bd7aa8d564a9bd7eca5e571a5b3 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda + sha256: 143a586aa67d50622ef703de57b9d43f44945836d6568e0e7aa174bd8c45e0d4 + md5: 488f260ccda0afaf08acb286db439c2f depends: - - __osx >=11.0 - - libcxx >=18 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 constrains: - libabseil-static =20240722.0=cxx17* - abseil-cpp =20240722.0 + arch: x86_64 + platform: linux license: Apache-2.0 license_family: Apache - size: 1178260 - timestamp: 1736008642885 -- kind: conda - name: libabseil - version: '20240722.0' - build: cxx17_h18dbdb1_4 - build_number: 4 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h18dbdb1_4.conda + size: 1311599 + timestamp: 1736008414161 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h18dbdb1_4.conda sha256: bb6c5fb3b8de5f90735c5252b57efb3c268ee222c755569dac18065f05147670 md5: 633b9fe454ffea2aaf29e191d946a83b depends: @@ -4124,41 +3337,33 @@ packages: constrains: - abseil-cpp =20240722.0 - libabseil-static =20240722.0=cxx17* + arch: aarch64 + platform: linux license: Apache-2.0 license_family: Apache size: 1334844 timestamp: 1736008472455 -- kind: conda - name: libabseil - version: '20240722.0' - build: cxx17_hbbce691_4 - build_number: 4 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda - sha256: 143a586aa67d50622ef703de57b9d43f44945836d6568e0e7aa174bd8c45e0d4 - md5: 488f260ccda0afaf08acb286db439c2f +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_h07bc746_4.conda + sha256: 05fa5e5e908962b9c5aba95f962e2ca81d9599c4715aebe5e4ddb72b309d1770 + md5: c2d95bd7aa8d564a9bd7eca5e571a5b3 depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libstdcxx >=13 + - __osx >=11.0 + - libcxx >=18 constrains: - libabseil-static =20240722.0=cxx17* - abseil-cpp =20240722.0 + arch: arm64 + platform: osx license: Apache-2.0 license_family: Apache - size: 1311599 - timestamp: 1736008414161 -- kind: conda - name: libarrow - version: 18.1.0 - build: h0ad35bc_7_cpu + size: 1178260 + timestamp: 1736008642885 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-hd595efa_7_cpu.conda build_number: 7 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-h0ad35bc_7_cpu.conda - sha256: 4fbdd8bb89d912bf03f10f9373a8d96a1cdd7a7851e107393418a3d2715bc27e - md5: 4ba2173203f44bbf03d19aaba6ed07d3 + sha256: 554ffa338264c1dc34d95adb7eb856d50a2f25e7fa303a1a51e4372301b7c96f + md5: 08d4aff5ee6dee9a1b9ab13fca927697 depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 - aws-crt-cpp >=0.29.7,<0.29.8.0a0 - aws-sdk-cpp >=1.11.458,<1.11.459.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 @@ -4166,15 +3371,17 @@ packages: - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 - bzip2 >=1.0.8,<2.0a0 + - gflags >=2.2.2,<2.3.0a0 - glog >=0.7.1,<0.8.0a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - libbrotlidec >=1.1.0,<1.2.0a0 - libbrotlienc >=1.1.0,<1.2.0a0 - - libcxx >=18 + - libgcc >=13 - libgoogle-cloud >=2.33.0,<2.34.0a0 - libgoogle-cloud-storage >=2.33.0,<2.34.0a0 - libre2-11 >=2024.7.2 + - libstdcxx >=13 - libutf8proc >=2.9.0,<2.10.0a0 - libzlib >=1.3.1,<2.0a0 - lz4-c >=1.10.0,<1.11.0a0 @@ -4186,17 +3393,14 @@ packages: - arrow-cpp <0.0a0 - parquet-cpp <0.0a0 - apache-arrow-proc =*=cpu + arch: x86_64 + platform: linux license: Apache-2.0 license_family: APACHE - size: 5506699 - timestamp: 1735682962976 -- kind: conda - name: libarrow - version: 18.1.0 - build: hb7781cd_7_cpu + size: 8770256 + timestamp: 1735684696564 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-hb7781cd_7_cpu.conda build_number: 7 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-hb7781cd_7_cpu.conda sha256: f6107506bd16788560b47a4d18c1457b4df30a49334364d32613fe3f53ba6cbb md5: 98cf7127ca7b3854c5d1c8bef1ed6e53 depends: @@ -4229,21 +3433,18 @@ packages: - arrow-cpp <0.0a0 - parquet-cpp <0.0a0 - apache-arrow-proc =*=cpu + arch: aarch64 + platform: linux license: Apache-2.0 license_family: APACHE size: 8026714 timestamp: 1735685336542 -- kind: conda - name: libarrow - version: 18.1.0 - build: hd595efa_7_cpu +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-h0ad35bc_7_cpu.conda build_number: 7 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-hd595efa_7_cpu.conda - sha256: 554ffa338264c1dc34d95adb7eb856d50a2f25e7fa303a1a51e4372301b7c96f - md5: 08d4aff5ee6dee9a1b9ab13fca927697 + sha256: 4fbdd8bb89d912bf03f10f9373a8d96a1cdd7a7851e107393418a3d2715bc27e + md5: 4ba2173203f44bbf03d19aaba6ed07d3 depends: - - __glibc >=2.17,<3.0.a0 + - __osx >=11.0 - aws-crt-cpp >=0.29.7,<0.29.8.0a0 - aws-sdk-cpp >=1.11.458,<1.11.459.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 @@ -4251,17 +3452,15 @@ packages: - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 - bzip2 >=1.0.8,<2.0a0 - - gflags >=2.2.2,<2.3.0a0 - glog >=0.7.1,<0.8.0a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - libbrotlidec >=1.1.0,<1.2.0a0 - libbrotlienc >=1.1.0,<1.2.0a0 - - libgcc >=13 + - libcxx >=18 - libgoogle-cloud >=2.33.0,<2.34.0a0 - libgoogle-cloud-storage >=2.33.0,<2.34.0a0 - libre2-11 >=2024.7.2 - - libstdcxx >=13 - libutf8proc >=2.9.0,<2.10.0a0 - libzlib >=1.3.1,<2.0a0 - lz4-c >=1.10.0,<1.11.0a0 @@ -4273,34 +3472,14 @@ packages: - arrow-cpp <0.0a0 - parquet-cpp <0.0a0 - apache-arrow-proc =*=cpu + arch: arm64 + platform: osx license: Apache-2.0 license_family: APACHE - size: 8770256 - timestamp: 1735684696564 -- kind: conda - name: libarrow-acero - version: 18.1.0 - build: h3b568fd_7_cpu - build_number: 7 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h3b568fd_7_cpu.conda - sha256: 42cbfc87096f745d565d814d65b7228c82d985f1898859d5e456016d73e81c82 - md5: 4c1d8c3feea249782148d3cd6a25392e - depends: - - libarrow 18.1.0 hb7781cd_7_cpu - - libgcc >=13 - - libstdcxx >=13 - license: Apache-2.0 - license_family: APACHE - size: 578222 - timestamp: 1735685424850 -- kind: conda - name: libarrow-acero - version: 18.1.0 - build: hcb10f89_7_cpu + size: 5506699 + timestamp: 1735682962976 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-hcb10f89_7_cpu.conda build_number: 7 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-hcb10f89_7_cpu.conda sha256: 87ea5d6a84d922d73975dce8661fccf257e72e755175b12c30e1181a34e37987 md5: 12d84228204c56fec6ed113288014d11 depends: @@ -4308,53 +3487,42 @@ packages: - libarrow 18.1.0 hd595efa_7_cpu - libgcc >=13 - libstdcxx >=13 + arch: x86_64 + platform: linux license: Apache-2.0 license_family: APACHE size: 612463 timestamp: 1735684749868 -- kind: conda - name: libarrow-acero - version: 18.1.0 - build: hf07054f_7_cpu +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h3b568fd_7_cpu.conda + build_number: 7 + sha256: 42cbfc87096f745d565d814d65b7228c82d985f1898859d5e456016d73e81c82 + md5: 4c1d8c3feea249782148d3cd6a25392e + depends: + - libarrow 18.1.0 hb7781cd_7_cpu + - libgcc >=13 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 578222 + timestamp: 1735685424850 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-hf07054f_7_cpu.conda build_number: 7 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-hf07054f_7_cpu.conda sha256: 86e20cebfdb4f335e98265c1b88f5053bf3e3648768a317856295846bfdbf2b4 md5: 3eaf71fe987de13061db795e03bb1a1c depends: - __osx >=11.0 - libarrow 18.1.0 h0ad35bc_7_cpu - libcxx >=18 + arch: arm64 + platform: osx license: Apache-2.0 license_family: APACHE size: 485185 timestamp: 1735683071232 -- kind: conda - name: libarrow-dataset - version: 18.1.0 - build: h3b568fd_7_cpu - build_number: 7 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h3b568fd_7_cpu.conda - sha256: 13ba7d3d08015aa26569eca9e198e2f8b2a0cd2d9c420e41c78cc2e5d5170f26 - md5: f39f5d725c2ca94c2e7b19e2717fd4ab - depends: - - libarrow 18.1.0 hb7781cd_7_cpu - - libarrow-acero 18.1.0 h3b568fd_7_cpu - - libgcc >=13 - - libparquet 18.1.0 hfc78867_7_cpu - - libstdcxx >=13 - license: Apache-2.0 - license_family: APACHE - size: 560329 - timestamp: 1735685518922 -- kind: conda - name: libarrow-dataset - version: 18.1.0 - build: hcb10f89_7_cpu +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-hcb10f89_7_cpu.conda build_number: 7 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-hcb10f89_7_cpu.conda sha256: 99c12511fba79c7947f78d676eae5857659084f687f375f68bc20bd4cddb0a0e md5: 0a81eb63d7cd150f598c752e86388d57 depends: @@ -4364,17 +3532,30 @@ packages: - libgcc >=13 - libparquet 18.1.0 h081d1f1_7_cpu - libstdcxx >=13 + arch: x86_64 + platform: linux license: Apache-2.0 license_family: APACHE size: 587497 timestamp: 1735684880531 -- kind: conda - name: libarrow-dataset - version: 18.1.0 - build: hf07054f_7_cpu +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h3b568fd_7_cpu.conda + build_number: 7 + sha256: 13ba7d3d08015aa26569eca9e198e2f8b2a0cd2d9c420e41c78cc2e5d5170f26 + md5: f39f5d725c2ca94c2e7b19e2717fd4ab + depends: + - libarrow 18.1.0 hb7781cd_7_cpu + - libarrow-acero 18.1.0 h3b568fd_7_cpu + - libgcc >=13 + - libparquet 18.1.0 hfc78867_7_cpu + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 560329 + timestamp: 1735685518922 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-hf07054f_7_cpu.conda build_number: 7 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-hf07054f_7_cpu.conda sha256: 52c5c4e9cd5f2ac91dcebb6a920ab2536febcea116ff8767e5439329d7da820b md5: 97a2d3606682d94f7d73112e9ad684ae depends: @@ -4383,17 +3564,14 @@ packages: - libarrow-acero 18.1.0 hf07054f_7_cpu - libcxx >=18 - libparquet 18.1.0 h636d7b7_7_cpu + arch: arm64 + platform: osx license: Apache-2.0 license_family: APACHE size: 491237 timestamp: 1735684688308 -- kind: conda - name: libarrow-substrait - version: 18.1.0 - build: h08228c5_7_cpu +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-h08228c5_7_cpu.conda build_number: 7 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-h08228c5_7_cpu.conda sha256: 53ea53a06e137c2f81ebfdff3f978babb8b59e31f705a19b57056ec8754c1abf md5: e128def53c133e8a23ac00cd4a479335 depends: @@ -4406,17 +3584,14 @@ packages: - libgcc >=13 - libprotobuf >=5.28.3,<5.28.4.0a0 - libstdcxx >=13 + arch: x86_64 + platform: linux license: Apache-2.0 license_family: APACHE size: 521861 timestamp: 1735684940668 -- kind: conda - name: libarrow-substrait - version: 18.1.0 - build: h1e9d426_7_cpu +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h1e9d426_7_cpu.conda build_number: 7 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h1e9d426_7_cpu.conda sha256: 252e2a0d8c733f36b50499786480a05a59577d617f291868149c80534c1e8ffc md5: 6da921d9e1c4e2ab2679eeea7cbd4c82 depends: @@ -4428,17 +3603,14 @@ packages: - libgcc >=13 - libprotobuf >=5.28.3,<5.28.4.0a0 - libstdcxx >=13 + arch: aarch64 + platform: linux license: Apache-2.0 license_family: APACHE size: 516014 timestamp: 1735685565929 -- kind: conda - name: libarrow-substrait - version: 18.1.0 - build: h4239455_7_cpu +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-h4239455_7_cpu.conda build_number: 7 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-h4239455_7_cpu.conda sha256: a45bbdd6932aed972d6c6ce30a7439aa8ec9d9b8ee5affb350d41e50abdc0127 md5: 91927747173f65695e441346c7145e26 depends: @@ -4450,109 +3622,81 @@ packages: - libarrow-dataset 18.1.0 hf07054f_7_cpu - libcxx >=18 - libprotobuf >=5.28.3,<5.28.4.0a0 + arch: arm64 + platform: osx license: Apache-2.0 license_family: APACHE size: 452385 timestamp: 1735684993831 -- kind: conda - name: libasprintf - version: 0.22.5 - build: h8414b35_3 - build_number: 3 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libasprintf-0.22.5-h8414b35_3.conda - sha256: 819bf95543470658f48db53a267a3fabe1616797c4031cf88e63f451c5029e6f - md5: 472b673c083175195965a48f2f4808f8 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libasprintf-0.22.5-he8f35ee_3.conda + sha256: 2da5c735811cbf38c7f7844ab457ff8b25046bbf5fe5ebd5dc1c2fafdf4fbe1c + md5: 4fab9799da9571266d05ca5503330655 depends: - - __osx >=11.0 - - libcxx >=16 + - __glibc >=2.17,<3.0.a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux license: LGPL-2.1-or-later - size: 40657 - timestamp: 1723626937704 -- kind: conda - name: libasprintf - version: 0.22.5 - build: h87f4aca_3 - build_number: 3 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libasprintf-0.22.5-h87f4aca_3.conda + size: 42817 + timestamp: 1723626012203 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libasprintf-0.22.5-h87f4aca_3.conda sha256: b438814a7190a541950da68d3cde8ecbcc55629ce677eb65afbb01cfa1e4e651 md5: 332ce64c2dec75dc0849e7ffcdf7a3a4 depends: - libgcc-ng >=12 - libstdcxx-ng >=12 + arch: aarch64 + platform: linux license: LGPL-2.1-or-later size: 42627 timestamp: 1723626204541 -- kind: conda - name: libasprintf - version: 0.22.5 - build: he8f35ee_3 - build_number: 3 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libasprintf-0.22.5-he8f35ee_3.conda - sha256: 2da5c735811cbf38c7f7844ab457ff8b25046bbf5fe5ebd5dc1c2fafdf4fbe1c - md5: 4fab9799da9571266d05ca5503330655 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libasprintf-0.22.5-h8414b35_3.conda + sha256: 819bf95543470658f48db53a267a3fabe1616797c4031cf88e63f451c5029e6f + md5: 472b673c083175195965a48f2f4808f8 depends: - - __glibc >=2.17,<3.0.a0 - - libgcc-ng >=12 - - libstdcxx-ng >=12 + - __osx >=11.0 + - libcxx >=16 + arch: arm64 + platform: osx license: LGPL-2.1-or-later - size: 42817 - timestamp: 1723626012203 -- kind: conda - name: libasprintf-devel - version: 0.22.5 - build: h8414b35_3 - build_number: 3 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libasprintf-devel-0.22.5-h8414b35_3.conda - sha256: ca7322f7c3f1a68cb36630eaa88a44c774261150d42d70a4be3d77bc9ed28d5d - md5: a03ca97f9fabf5626660697c2e0b8850 + size: 40657 + timestamp: 1723626937704 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libasprintf-devel-0.22.5-he8f35ee_3.conda + sha256: ccc7967e298ddf3124c8ad9741c7180dc6f778ae4135ec87978214f7b3c64dc2 + md5: 1091193789bb830127ed067a9e01ac57 depends: - - __osx >=11.0 - - libasprintf 0.22.5 h8414b35_3 + - __glibc >=2.17,<3.0.a0 + - libasprintf 0.22.5 he8f35ee_3 + - libgcc-ng >=12 + arch: x86_64 + platform: linux license: LGPL-2.1-or-later - size: 34648 - timestamp: 1723626983419 -- kind: conda - name: libasprintf-devel - version: 0.22.5 - build: h87f4aca_3 - build_number: 3 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libasprintf-devel-0.22.5-h87f4aca_3.conda + size: 34172 + timestamp: 1723626026096 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libasprintf-devel-0.22.5-h87f4aca_3.conda sha256: c9eda86140a5a023b72a8997f82629f4b071df17d57d00ba75a66b65a0525a5e md5: dbaa9d8c0030bda3e3d22d325ea48191 depends: - libasprintf 0.22.5 h87f4aca_3 - libgcc-ng >=12 + arch: aarch64 + platform: linux license: LGPL-2.1-or-later size: 34359 timestamp: 1723626223953 -- kind: conda - name: libasprintf-devel - version: 0.22.5 - build: he8f35ee_3 - build_number: 3 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libasprintf-devel-0.22.5-he8f35ee_3.conda - sha256: ccc7967e298ddf3124c8ad9741c7180dc6f778ae4135ec87978214f7b3c64dc2 - md5: 1091193789bb830127ed067a9e01ac57 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libasprintf-devel-0.22.5-h8414b35_3.conda + sha256: ca7322f7c3f1a68cb36630eaa88a44c774261150d42d70a4be3d77bc9ed28d5d + md5: a03ca97f9fabf5626660697c2e0b8850 depends: - - __glibc >=2.17,<3.0.a0 - - libasprintf 0.22.5 he8f35ee_3 - - libgcc-ng >=12 + - __osx >=11.0 + - libasprintf 0.22.5 h8414b35_3 + arch: arm64 + platform: osx license: LGPL-2.1-or-later - size: 34172 - timestamp: 1723626026096 -- kind: conda - name: libavif16 - version: 1.1.1 - build: h1909e37_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libavif16-1.1.1-h1909e37_2.conda + size: 34648 + timestamp: 1723626983419 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libavif16-1.1.1-h1909e37_2.conda sha256: e06da844b007a64a9ac35d4e3dc4dbc66583f79b57d08166cf58f2f08723a6e8 md5: 21e468ed3786ebcb2124b123aa2484b7 depends: @@ -4562,17 +3706,13 @@ packages: - libgcc >=13 - rav1e >=0.6.6,<1.0a0 - svt-av1 >=2.3.0,<2.3.1.0a0 + arch: x86_64 + platform: linux license: BSD-2-Clause license_family: BSD size: 116202 timestamp: 1730268687453 -- kind: conda - name: libavif16 - version: 1.1.1 - build: h3b0c220_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libavif16-1.1.1-h3b0c220_2.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libavif16-1.1.1-h3b0c220_2.conda sha256: 8284693096532fb5d1af7fd5c170a4d4f0a54593ba29c881667327b61a7cd7bb md5: 58ec6027e7b6ea460a4a7ed7112842d8 depends: @@ -4581,17 +3721,13 @@ packages: - libgcc >=13 - rav1e >=0.6.6,<1.0a0 - svt-av1 >=2.3.0,<2.3.1.0a0 + arch: aarch64 + platform: linux license: BSD-2-Clause license_family: BSD size: 116097 timestamp: 1730268695528 -- kind: conda - name: libavif16 - version: 1.1.1 - build: h45b7238_2 - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libavif16-1.1.1-h45b7238_2.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libavif16-1.1.1-h45b7238_2.conda sha256: c671365e8c822d29b53f20c4573fdbc70f18b50ff9a4b5b2b6b3c8f7ad2ac2a9 md5: 7571064a60bc193ff5c25f36ed23394a depends: @@ -4600,17 +3736,14 @@ packages: - dav1d >=1.2.1,<1.2.2.0a0 - rav1e >=0.6.6,<1.0a0 - svt-av1 >=2.3.0,<2.3.1.0a0 + arch: arm64 + platform: osx license: BSD-2-Clause license_family: BSD size: 96781 timestamp: 1730268761553 -- kind: conda - name: libblas - version: 3.9.0 - build: 26_linux64_openblas +- conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-26_linux64_openblas.conda build_number: 26 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-26_linux64_openblas.conda sha256: 30bd658682b124243f8e52d8edf8a19e7be1bc31e4fe4baec30a64002dc8cd0c md5: ac52800af2e0c0e7dac770b435ce768a depends: @@ -4621,17 +3754,14 @@ packages: - liblapack 3.9.0 26_linux64_openblas - liblapacke 3.9.0 26_linux64_openblas - blas * openblas + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD size: 16393 timestamp: 1734432564346 -- kind: conda - name: libblas - version: 3.9.0 - build: 26_linuxaarch64_openblas +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-26_linuxaarch64_openblas.conda build_number: 26 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-26_linuxaarch64_openblas.conda sha256: df6d8ee34d45cf35609ecdd55c1ff03e32e0cd87ae41ebe4ef3747a8e09ead4d md5: 8d900b7079a00969d70305e9aad550b7 depends: @@ -4642,17 +3772,14 @@ packages: - liblapacke 3.9.0 26_linuxaarch64_openblas - libcblas 3.9.0 26_linuxaarch64_openblas - liblapack 3.9.0 26_linuxaarch64_openblas + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD size: 16477 timestamp: 1734432576699 -- kind: conda - name: libblas - version: 3.9.0 - build: 26_osxarm64_openblas +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-26_osxarm64_openblas.conda build_number: 26 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-26_osxarm64_openblas.conda sha256: 597f9c3779caa979c8c6abbb3ba8c7191b84e1a910d6b0d10e5faf35284c450c md5: 21be102c9ae80a67ba7de23b129aa7f6 depends: @@ -4663,192 +3790,147 @@ packages: - liblapacke 3.9.0 26_osxarm64_openblas - libcblas 3.9.0 26_osxarm64_openblas - blas * openblas + arch: arm64 + platform: osx license: BSD-3-Clause license_family: BSD size: 16714 timestamp: 1734433054681 -- kind: conda - name: libbrotlicommon - version: 1.1.0 - build: h86ecc28_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlicommon-1.1.0-h86ecc28_2.conda - sha256: 64112af913974b309d67fd342e065fd184347043a6387933b3db796778a28019 - md5: 3ee026955c688f551a9999840cff4c67 - depends: - - libgcc >=13 - license: MIT - license_family: MIT - size: 68982 - timestamp: 1725267774142 -- kind: conda - name: libbrotlicommon - version: 1.1.0 - build: hb9d3cd8_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hb9d3cd8_2.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hb9d3cd8_2.conda sha256: d9db2de60ea917298e658143354a530e9ca5f9c63471c65cf47ab39fd2f429e3 md5: 41b599ed2b02abcfdd84302bff174b23 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 + arch: x86_64 + platform: linux license: MIT license_family: MIT size: 68851 timestamp: 1725267660471 -- kind: conda - name: libbrotlicommon - version: 1.1.0 - build: hd74edd7_2 - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.1.0-hd74edd7_2.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlicommon-1.1.0-h86ecc28_2.conda + sha256: 64112af913974b309d67fd342e065fd184347043a6387933b3db796778a28019 + md5: 3ee026955c688f551a9999840cff4c67 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 68982 + timestamp: 1725267774142 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.1.0-hd74edd7_2.conda sha256: 839dacb741bdbb25e58f42088a2001b649f4f12195aeb700b5ddfca3267749e5 md5: d0bf1dff146b799b319ea0434b93f779 depends: - __osx >=11.0 + arch: arm64 + platform: osx license: MIT license_family: MIT size: 68426 timestamp: 1725267943211 -- kind: conda - name: libbrotlidec - version: 1.1.0 - build: h86ecc28_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlidec-1.1.0-h86ecc28_2.conda - sha256: 94c808d9ca3eb6ef30976a9843e27f027cf3a1e84e8c6835cbb696b7bdb35c4c - md5: e64d0f3b59c7c4047446b97a8624a72d - depends: - - libbrotlicommon 1.1.0 h86ecc28_2 - - libgcc >=13 - license: MIT - license_family: MIT - size: 31708 - timestamp: 1725267783442 -- kind: conda - name: libbrotlidec - version: 1.1.0 - build: hb9d3cd8_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hb9d3cd8_2.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hb9d3cd8_2.conda sha256: 2892d512cad096cb03f1b66361deeab58b64e15ba525d6592bb6d609e7045edf md5: 9566f0bd264fbd463002e759b8a82401 depends: - __glibc >=2.17,<3.0.a0 - libbrotlicommon 1.1.0 hb9d3cd8_2 - libgcc >=13 + arch: x86_64 + platform: linux license: MIT license_family: MIT size: 32696 timestamp: 1725267669305 -- kind: conda - name: libbrotlidec - version: 1.1.0 - build: hd74edd7_2 - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.1.0-hd74edd7_2.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlidec-1.1.0-h86ecc28_2.conda + sha256: 94c808d9ca3eb6ef30976a9843e27f027cf3a1e84e8c6835cbb696b7bdb35c4c + md5: e64d0f3b59c7c4047446b97a8624a72d + depends: + - libbrotlicommon 1.1.0 h86ecc28_2 + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 31708 + timestamp: 1725267783442 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.1.0-hd74edd7_2.conda sha256: 6c6862eb274f21a7c0b60e5345467a12e6dda8b9af4438c66d496a2c1a538264 md5: 55e66e68ce55523a6811633dd1ac74e2 depends: - __osx >=11.0 - libbrotlicommon 1.1.0 hd74edd7_2 + arch: arm64 + platform: osx license: MIT license_family: MIT size: 28378 timestamp: 1725267980316 -- kind: conda - name: libbrotlienc - version: 1.1.0 - build: h86ecc28_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlienc-1.1.0-h86ecc28_2.conda - sha256: 41385e17bc73834b235c5aff12d6d82eccb534acb3c30986996f9dad92a0d54c - md5: 0e9bd365480c72b25c71a448257b537d - depends: - - libbrotlicommon 1.1.0 h86ecc28_2 - - libgcc >=13 - license: MIT - license_family: MIT - size: 290230 - timestamp: 1725267792697 -- kind: conda - name: libbrotlienc - version: 1.1.0 - build: hb9d3cd8_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.1.0-hb9d3cd8_2.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.1.0-hb9d3cd8_2.conda sha256: 779f58174e99de3600e939fa46eddb453ec5d3c60bb46cdaa8b4c127224dbf29 md5: 06f70867945ea6a84d35836af780f1de depends: - __glibc >=2.17,<3.0.a0 - libbrotlicommon 1.1.0 hb9d3cd8_2 - libgcc >=13 + arch: x86_64 + platform: linux license: MIT license_family: MIT size: 281750 timestamp: 1725267679782 -- kind: conda - name: libbrotlienc - version: 1.1.0 - build: hd74edd7_2 - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlienc-1.1.0-hd74edd7_2.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlienc-1.1.0-h86ecc28_2.conda + sha256: 41385e17bc73834b235c5aff12d6d82eccb534acb3c30986996f9dad92a0d54c + md5: 0e9bd365480c72b25c71a448257b537d + depends: + - libbrotlicommon 1.1.0 h86ecc28_2 + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 290230 + timestamp: 1725267792697 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlienc-1.1.0-hd74edd7_2.conda sha256: eeb1eb0d58b9d02bc1b98dc0a058f104ab168eb2f7d1c7bfa0570a12cfcdb7b7 md5: 4f3a434504c67b2c42565c0b85c1885c depends: - __osx >=11.0 - libbrotlicommon 1.1.0 hd74edd7_2 + arch: arm64 + platform: osx license: MIT license_family: MIT size: 279644 timestamp: 1725268003553 -- kind: conda - name: libcap - version: '2.71' - build: h39aace5_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libcap-2.71-h39aace5_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcap-2.71-h39aace5_0.conda sha256: 2bbefac94f4ab8ff7c64dc843238b6c8edcc9ff1f2b5a0a48407a904dc7ccfb2 md5: dd19e4e3043f6948bd7454b946ee0983 depends: - __glibc >=2.17,<3.0.a0 - attr >=2.5.1,<2.6.0a0 - libgcc >=13 + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD size: 102268 timestamp: 1729940917945 -- kind: conda - name: libcap - version: '2.71' - build: h51d75a7_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libcap-2.71-h51d75a7_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcap-2.71-h51d75a7_0.conda sha256: 2b66e66e6a0768e833e7edc764649679881ec0a6b37d9bf254b1ceb3b8b434ef md5: 29f6092b6e938516ca0b042837e64fa5 depends: - attr >=2.5.1,<2.6.0a0 - libgcc >=13 + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD size: 106877 timestamp: 1729940936697 -- kind: conda - name: libcblas - version: 3.9.0 - build: 26_linux64_openblas +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-26_linux64_openblas.conda build_number: 26 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-26_linux64_openblas.conda sha256: 9c74e536c9bc868e356ffd43f81c2cb398aec84b40fcadc312315b164a5500ee md5: ebcc5f37a435aa3c19640533c82f8d76 depends: @@ -4857,17 +3939,14 @@ packages: - liblapack 3.9.0 26_linux64_openblas - liblapacke 3.9.0 26_linux64_openblas - blas * openblas + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD size: 16336 timestamp: 1734432570482 -- kind: conda - name: libcblas - version: 3.9.0 - build: 26_linuxaarch64_openblas +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-26_linuxaarch64_openblas.conda build_number: 26 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-26_linuxaarch64_openblas.conda sha256: 521e78be0c4170f229c43e1a6c94337a72db3ebcbe6e5960f8413aa438dcb8f9 md5: d77f943ae4083f3aeddca698f2d28262 depends: @@ -4876,17 +3955,14 @@ packages: - blas * openblas - liblapacke 3.9.0 26_linuxaarch64_openblas - liblapack 3.9.0 26_linuxaarch64_openblas + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD size: 16398 timestamp: 1734432580937 -- kind: conda - name: libcblas - version: 3.9.0 - build: 26_osxarm64_openblas +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-26_osxarm64_openblas.conda build_number: 26 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-26_osxarm64_openblas.conda sha256: 27a29ef6b2fd2179bc3a0bb9db351f078ba140ca10485dca147c399639f84c93 md5: a0e9980fe12d42f6d0c0ec009f67e948 depends: @@ -4895,60 +3971,48 @@ packages: - liblapack 3.9.0 26_osxarm64_openblas - liblapacke 3.9.0 26_osxarm64_openblas - blas * openblas + arch: arm64 + platform: osx license: BSD-3-Clause license_family: BSD size: 16628 timestamp: 1734433061517 -- kind: conda - name: libcrc32c - version: 1.1.2 - build: h01db608_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libcrc32c-1.1.2-h01db608_0.tar.bz2 - sha256: b8b8c57a87da86b3ea24280fd6aa8efaf92f4e684b606bf2db5d3cb06ffbe2ea - md5: 268ee639c17ada0002fb04dd21816cc2 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcrc32c-1.1.2-h9c3ff4c_0.tar.bz2 + sha256: fd1d153962764433fe6233f34a72cdeed5dcf8a883a85769e8295ce940b5b0c5 + md5: c965a5aa0d5c1c37ffc62dff36e28400 depends: - libgcc-ng >=9.4.0 - libstdcxx-ng >=9.4.0 + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD - size: 18669 - timestamp: 1633683724891 -- kind: conda - name: libcrc32c - version: 1.1.2 - build: h9c3ff4c_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libcrc32c-1.1.2-h9c3ff4c_0.tar.bz2 - sha256: fd1d153962764433fe6233f34a72cdeed5dcf8a883a85769e8295ce940b5b0c5 - md5: c965a5aa0d5c1c37ffc62dff36e28400 + size: 20440 + timestamp: 1633683576494 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcrc32c-1.1.2-h01db608_0.tar.bz2 + sha256: b8b8c57a87da86b3ea24280fd6aa8efaf92f4e684b606bf2db5d3cb06ffbe2ea + md5: 268ee639c17ada0002fb04dd21816cc2 depends: - libgcc-ng >=9.4.0 - libstdcxx-ng >=9.4.0 + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD - size: 20440 - timestamp: 1633683576494 -- kind: conda - name: libcrc32c - version: 1.1.2 - build: hbdafb3b_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libcrc32c-1.1.2-hbdafb3b_0.tar.bz2 + size: 18669 + timestamp: 1633683724891 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcrc32c-1.1.2-hbdafb3b_0.tar.bz2 sha256: 58477b67cc719060b5b069ba57161e20ba69b8695d154a719cb4b60caf577929 md5: 32bd82a6a625ea6ce090a81c3d34edeb depends: - libcxx >=11.1.0 + arch: arm64 + platform: osx license: BSD-3-Clause license_family: BSD size: 18765 timestamp: 1633683992603 -- kind: conda - name: libcurl - version: 8.11.1 - build: h332b0f4_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.11.1-h332b0f4_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.11.1-h332b0f4_0.conda sha256: 3cd4075b2a7b5562e46c8ec626f6f9ca57aeecaa94ff7df57eca26daa94c9906 md5: 2b3e0081006dc21e8bf53a91c83a055c depends: @@ -4960,16 +4024,13 @@ packages: - libzlib >=1.3.1,<2.0a0 - openssl >=3.4.0,<4.0a0 - zstd >=1.5.6,<1.6.0a0 + arch: x86_64 + platform: linux license: curl license_family: MIT size: 423011 timestamp: 1733999897624 -- kind: conda - name: libcurl - version: 8.11.1 - build: h6702fde_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libcurl-8.11.1-h6702fde_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcurl-8.11.1-h6702fde_0.conda sha256: 9fc65d21a58f4aad1bc39dfb94a178893aeb035850c5cf0ed9736674279f390b md5: 7dec1cd271c403d1636bda5aa388a55d depends: @@ -4980,16 +4041,13 @@ packages: - libzlib >=1.3.1,<2.0a0 - openssl >=3.4.0,<4.0a0 - zstd >=1.5.6,<1.6.0a0 + arch: aarch64 + platform: linux license: curl license_family: MIT size: 440737 timestamp: 1733999835504 -- kind: conda - name: libcurl - version: 8.11.1 - build: h73640d1_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.11.1-h73640d1_0.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.11.1-h73640d1_0.conda sha256: f47c35938144c23278987c7d12096f6a42d7c850ffc277222b032073412383b6 md5: 46d7524cabfdd199bffe63f8f19a552b depends: @@ -5000,104 +4058,82 @@ packages: - libzlib >=1.3.1,<2.0a0 - openssl >=3.4.0,<4.0a0 - zstd >=1.5.6,<1.6.0a0 + arch: arm64 + platform: osx license: curl license_family: MIT size: 385098 timestamp: 1734000160270 -- kind: conda - name: libcxx - version: 19.1.6 - build: ha82da77_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.6-ha82da77_1.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.6-ha82da77_1.conda sha256: 2b2443404503cd862385fd2f2a2c73f9624686fd1e5a45050b4034cfc06904ec md5: ce5252d8db110cdb4ae4173d0a63c7c5 depends: - __osx >=11.0 + arch: arm64 + platform: osx license: Apache-2.0 WITH LLVM-exception license_family: Apache size: 520992 timestamp: 1734494699681 -- kind: conda - name: libdb - version: 6.2.32 - build: h01db608_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libdb-6.2.32-h01db608_0.tar.bz2 - sha256: 1f74d30c72d95c39315c6b5c3f1b328d00c4d5a2feff1e871fe5b71b4cb26811 - md5: 7cbfba14d5adfa65db945d5112909394 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libdb-6.2.32-h9c3ff4c_0.tar.bz2 + sha256: 21fac1012ff05b131d4b5d284003dbbe7b5c4c652aa9e401b46279ed5a784372 + md5: 3f3258d8f841fbac63b36b75bdac1afd depends: - libgcc-ng >=9.3.0 - libstdcxx-ng >=9.3.0 + arch: x86_64 + platform: linux license: AGPL-3.0-only license_family: AGPL - size: 24449415 - timestamp: 1609538998176 -- kind: conda - name: libdb - version: 6.2.32 - build: h9c3ff4c_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libdb-6.2.32-h9c3ff4c_0.tar.bz2 - sha256: 21fac1012ff05b131d4b5d284003dbbe7b5c4c652aa9e401b46279ed5a784372 - md5: 3f3258d8f841fbac63b36b75bdac1afd + size: 24409456 + timestamp: 1609539093147 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libdb-6.2.32-h01db608_0.tar.bz2 + sha256: 1f74d30c72d95c39315c6b5c3f1b328d00c4d5a2feff1e871fe5b71b4cb26811 + md5: 7cbfba14d5adfa65db945d5112909394 depends: - libgcc-ng >=9.3.0 - libstdcxx-ng >=9.3.0 + arch: aarch64 + platform: linux license: AGPL-3.0-only license_family: AGPL - size: 24409456 - timestamp: 1609539093147 -- kind: conda - name: libdeflate - version: '1.23' - build: h4ddbbb0_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.23-h4ddbbb0_0.conda + size: 24449415 + timestamp: 1609538998176 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.23-h4ddbbb0_0.conda sha256: 511d801626d02f4247a04fff957cc6e9ec4cc7e8622bd9acd076bcdc5de5fe66 md5: 8dfae1d2e74767e9ce36d5fa0d8605db depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 + arch: x86_64 + platform: linux license: MIT license_family: MIT size: 72255 timestamp: 1734373823254 -- kind: conda - name: libdeflate - version: '1.23' - build: h5e3c512_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libdeflate-1.23-h5e3c512_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libdeflate-1.23-h5e3c512_0.conda sha256: 959419d87cd2b789a9055db95704c614f31aeb70bef7949fa2f734122a3a2863 md5: 7e7ca2607b11b180120cefc2354fc0cb depends: - libgcc >=13 + arch: aarch64 + platform: linux license: MIT license_family: MIT size: 69862 timestamp: 1734373858306 -- kind: conda - name: libdeflate - version: '1.23' - build: hec38601_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.23-hec38601_0.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.23-hec38601_0.conda sha256: 887c02deaed6d583459eba6367023e36d8761085b2f7126e389424f57155da53 md5: 1d8b9588be14e71df38c525767a1ac30 depends: - __osx >=11.0 + arch: arm64 + platform: osx license: MIT license_family: MIT size: 54132 timestamp: 1734373971372 -- kind: conda - name: libedit - version: 3.1.20240808 - build: pl5321h7949ede_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20240808-pl5321h7949ede_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20240808-pl5321h7949ede_0.conda sha256: 4d0d69ddf9cc7d724a1ccf3a9852e44c8aea9825692582bac2c4e8d21ec95ccd md5: 8247f80f3dc464d9322e85007e307fe8 depends: @@ -5105,266 +4141,206 @@ packages: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - ncurses >=6.5,<7.0a0 + arch: x86_64 + platform: linux license: BSD-2-Clause license_family: BSD size: 134657 timestamp: 1736191912705 -- kind: conda - name: libedit - version: 3.1.20240808 - build: pl5321h976ea20_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20240808-pl5321h976ea20_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20240808-pl5321h976ea20_0.conda sha256: 031daea98cf278f858b7957ad5dc475f1b5673cd5e718850529401ced64cef2c md5: 0be40129d3dd1a152fff29a85f0785d0 depends: - ncurses - libgcc >=13 - ncurses >=6.5,<7.0a0 + arch: aarch64 + platform: linux license: BSD-2-Clause license_family: BSD size: 148120 timestamp: 1736192137151 -- kind: conda - name: libedit - version: 3.1.20240808 - build: pl5321hafb1f1b_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20240808-pl5321hafb1f1b_0.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20240808-pl5321hafb1f1b_0.conda sha256: fb934d7a03279ec8eae4bf1913ac9058fcf6fed35290d8ffa6e04157f396a3b1 md5: af89aa84ffb5ee551ce0c137b951a3b5 depends: - ncurses - __osx >=11.0 - ncurses >=6.5,<7.0a0 + arch: arm64 + platform: osx license: BSD-2-Clause license_family: BSD size: 107634 timestamp: 1736192034117 -- kind: conda - name: libev - version: '4.33' - build: h31becfc_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libev-4.33-h31becfc_2.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda + sha256: 1cd6048169fa0395af74ed5d8f1716e22c19a81a8a36f934c110ca3ad4dd27b4 + md5: 172bf1cd1ff8629f2b1179945ed45055 + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + size: 112766 + timestamp: 1702146165126 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libev-4.33-h31becfc_2.conda sha256: 973af77e297f1955dd1f69c2cbdc5ab9dfc88388a5576cd152cda178af0fd006 md5: a9a13cb143bbaa477b1ebaefbe47a302 depends: - libgcc-ng >=12 + arch: aarch64 + platform: linux license: BSD-2-Clause license_family: BSD size: 115123 timestamp: 1702146237623 -- kind: conda - name: libev - version: '4.33' - build: h93a5062_2 - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libev-4.33-h93a5062_2.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libev-4.33-h93a5062_2.conda sha256: 95cecb3902fbe0399c3a7e67a5bed1db813e5ab0e22f4023a5e0f722f2cc214f md5: 36d33e440c31857372a72137f78bacf5 + arch: arm64 + platform: osx license: BSD-2-Clause license_family: BSD size: 107458 timestamp: 1702146414478 -- kind: conda - name: libev - version: '4.33' - build: hd590300_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda - sha256: 1cd6048169fa0395af74ed5d8f1716e22c19a81a8a36f934c110ca3ad4dd27b4 - md5: 172bf1cd1ff8629f2b1179945ed45055 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libevent-2.1.12-hf998b51_1.conda + sha256: 2e14399d81fb348e9d231a82ca4d816bf855206923759b69ad006ba482764131 + md5: a1cfcc585f0c42bf8d5546bb1dfb668d depends: - libgcc-ng >=12 - license: BSD-2-Clause - license_family: BSD - size: 112766 - timestamp: 1702146165126 -- kind: conda - name: libevent - version: 2.1.12 - build: h2757513_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libevent-2.1.12-h2757513_1.conda - sha256: 8c136d7586259bb5c0d2b913aaadc5b9737787ae4f40e3ad1beaf96c80b919b7 - md5: 1a109764bff3bdc7bdd84088347d71dc - depends: - openssl >=3.1.1,<4.0a0 + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD - size: 368167 - timestamp: 1685726248899 -- kind: conda - name: libevent - version: 2.1.12 - build: h4ba1bb4_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libevent-2.1.12-h4ba1bb4_1.conda + size: 427426 + timestamp: 1685725977222 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libevent-2.1.12-h4ba1bb4_1.conda sha256: 01333cc7d6e6985dd5700b43660d90e9e58049182017fd24862088ecbe1458e4 md5: 96ae6083cd1ac9f6bc81631ac835b317 depends: - libgcc-ng >=12 - openssl >=3.1.1,<4.0a0 + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD size: 438992 timestamp: 1685726046519 -- kind: conda - name: libevent - version: 2.1.12 - build: hf998b51_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libevent-2.1.12-hf998b51_1.conda - sha256: 2e14399d81fb348e9d231a82ca4d816bf855206923759b69ad006ba482764131 - md5: a1cfcc585f0c42bf8d5546bb1dfb668d +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libevent-2.1.12-h2757513_1.conda + sha256: 8c136d7586259bb5c0d2b913aaadc5b9737787ae4f40e3ad1beaf96c80b919b7 + md5: 1a109764bff3bdc7bdd84088347d71dc depends: - - libgcc-ng >=12 - openssl >=3.1.1,<4.0a0 + arch: arm64 + platform: osx license: BSD-3-Clause license_family: BSD - size: 427426 - timestamp: 1685725977222 -- kind: conda - name: libexpat - version: 2.6.4 - build: h286801f_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.4-h286801f_0.conda - sha256: e42ab5ace927ee7c84e3f0f7d813671e1cf3529f5f06ee5899606630498c2745 - md5: 38d2656dd914feb0cab8c629370768bf + size: 368167 + timestamp: 1685726248899 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda + sha256: 56541b98447b58e52d824bd59d6382d609e11de1f8adf20b23143e353d2b8d26 + md5: db833e03127376d461e1e13e76f09b6c depends: - - __osx >=11.0 - constrains: - - expat 2.6.4.* - license: MIT - license_family: MIT - size: 64693 - timestamp: 1730967175868 -- kind: conda - name: libexpat - version: 2.6.4 - build: h5888daf_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda - sha256: 56541b98447b58e52d824bd59d6382d609e11de1f8adf20b23143e353d2b8d26 - md5: db833e03127376d461e1e13e76f09b6c - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 constrains: - expat 2.6.4.* + arch: x86_64 + platform: linux license: MIT license_family: MIT size: 73304 timestamp: 1730967041968 -- kind: conda - name: libexpat - version: 2.6.4 - build: h5ad3122_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.6.4-h5ad3122_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.6.4-h5ad3122_0.conda sha256: f42e758009ba9db90d1fe7992bc3e60d0c52f71fb20923375d2c44ae69a5a2b3 md5: f1b3fab36861b3ce945a13f0dfdfc688 depends: - libgcc >=13 constrains: - expat 2.6.4.* + arch: aarch64 + platform: linux license: MIT license_family: MIT size: 72345 timestamp: 1730967203789 -- kind: conda - name: libffi - version: 3.4.2 - build: h3422bc3_5 - build_number: 5 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 - sha256: 41b3d13efb775e340e4dba549ab5c029611ea6918703096b2eaa9c015c0750ca - md5: 086914b672be056eb70fd4285b6783b6 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.4-h286801f_0.conda + sha256: e42ab5ace927ee7c84e3f0f7d813671e1cf3529f5f06ee5899606630498c2745 + md5: 38d2656dd914feb0cab8c629370768bf + depends: + - __osx >=11.0 + constrains: + - expat 2.6.4.* + arch: arm64 + platform: osx license: MIT license_family: MIT - size: 39020 - timestamp: 1636488587153 -- kind: conda - name: libffi - version: 3.4.2 - build: h3557bc0_5 - build_number: 5 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.4.2-h3557bc0_5.tar.bz2 + size: 64693 + timestamp: 1730967175868 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.2-h7f98852_5.tar.bz2 + sha256: ab6e9856c21709b7b517e940ae7028ae0737546122f83c2aa5d692860c3b149e + md5: d645c6d2ac96843a2bfaccd2d62b3ac3 + depends: + - libgcc-ng >=9.4.0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 58292 + timestamp: 1636488182923 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.4.2-h3557bc0_5.tar.bz2 sha256: 7e9258a102480757fe3faeb225a3ca04dffd10fecd2a958c65cdb4cdf75f2c3c md5: dddd85f4d52121fab0a8b099c5e06501 depends: - libgcc-ng >=9.4.0 + arch: aarch64 + platform: linux license: MIT license_family: MIT size: 59450 timestamp: 1636488255090 -- kind: conda - name: libffi - version: 3.4.2 - build: h7f98852_5 - build_number: 5 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.2-h7f98852_5.tar.bz2 - sha256: ab6e9856c21709b7b517e940ae7028ae0737546122f83c2aa5d692860c3b149e - md5: d645c6d2ac96843a2bfaccd2d62b3ac3 - depends: - - libgcc-ng >=9.4.0 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 + sha256: 41b3d13efb775e340e4dba549ab5c029611ea6918703096b2eaa9c015c0750ca + md5: 086914b672be056eb70fd4285b6783b6 + arch: arm64 + platform: osx license: MIT license_family: MIT - size: 58292 - timestamp: 1636488182923 -- kind: conda - name: libflac - version: 1.4.3 - build: h2f0025b_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libflac-1.4.3-h2f0025b_0.conda - sha256: b54935360349d3418b0663d787f20b3cba0b7ce3fcdf3ba5e7ef02b884759049 - md5: 520b12eab32a92e19b1f239ac545ec03 + size: 39020 + timestamp: 1636488587153 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libflac-1.4.3-h59595ed_0.conda + sha256: 65908b75fa7003167b8a8f0001e11e58ed5b1ef5e98b96ab2ba66d7c1b822c7d + md5: ee48bf17cc83a00f59ca1494d5646869 depends: - gettext >=0.21.1,<1.0a0 - libgcc-ng >=12 - libogg 1.3.* - libogg >=1.3.4,<1.4.0a0 - libstdcxx-ng >=12 + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD - size: 371550 - timestamp: 1687765491794 -- kind: conda - name: libflac - version: 1.4.3 - build: h59595ed_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libflac-1.4.3-h59595ed_0.conda - sha256: 65908b75fa7003167b8a8f0001e11e58ed5b1ef5e98b96ab2ba66d7c1b822c7d - md5: ee48bf17cc83a00f59ca1494d5646869 + size: 394383 + timestamp: 1687765514062 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libflac-1.4.3-h2f0025b_0.conda + sha256: b54935360349d3418b0663d787f20b3cba0b7ce3fcdf3ba5e7ef02b884759049 + md5: 520b12eab32a92e19b1f239ac545ec03 depends: - gettext >=0.21.1,<1.0a0 - libgcc-ng >=12 - libogg 1.3.* - libogg >=1.3.4,<1.4.0a0 - libstdcxx-ng >=12 + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD - size: 394383 - timestamp: 1687765514062 -- kind: conda - name: libflac - version: 1.4.3 - build: hb765f3a_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libflac-1.4.3-hb765f3a_0.conda + size: 371550 + timestamp: 1687765491794 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libflac-1.4.3-hb765f3a_0.conda sha256: 3990b52782fe7207ab642df25368ed443094f6d1a7ea61854935c24192b388aa md5: 356faba64411660f6c4d24ea31640733 depends: @@ -5372,17 +4348,13 @@ packages: - libcxx >=15.0.7 - libogg 1.3.* - libogg >=1.3.4,<1.4.0a0 + arch: arm64 + platform: osx license: BSD-3-Clause license_family: BSD size: 314408 timestamp: 1687766236790 -- kind: conda - name: libgcc - version: 14.2.0 - build: h77fa898_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h77fa898_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h77fa898_1.conda sha256: 53eb8a79365e58849e7b1a068d31f4f9e718dc938d6f2c03e960345739a03569 md5: 3cb76c3f10d3bc7f1105b2fc9db984df depends: @@ -5391,17 +4363,13 @@ packages: constrains: - libgomp 14.2.0 h77fa898_1 - libgcc-ng ==14.2.0=*_1 + arch: x86_64 + platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL size: 848745 timestamp: 1729027721139 -- kind: conda - name: libgcc - version: 14.2.0 - build: he277a41_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-14.2.0-he277a41_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-14.2.0-he277a41_1.conda sha256: 5d56757ccad208c79214395b00d006d8d18929a4ba49c47bd9460789a7620943 md5: 511b511c5445e324066c3377481bcab8 depends: @@ -5409,142 +4377,119 @@ packages: constrains: - libgcc-ng ==14.2.0=*_1 - libgomp 14.2.0 he277a41_1 + arch: aarch64 + platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL size: 535243 timestamp: 1729089435134 -- kind: conda - name: libgcc-ng - version: 14.2.0 - build: h69a702a_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_1.conda sha256: 3a76969c80e9af8b6e7a55090088bc41da4cffcde9e2c71b17f44d37b7cb87f7 md5: e39480b9ca41323497b05492a63bc35b depends: - libgcc 14.2.0 h77fa898_1 + arch: x86_64 + platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL size: 54142 timestamp: 1729027726517 -- kind: conda - name: libgcc-ng - version: 14.2.0 - build: he9431aa_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-14.2.0-he9431aa_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-14.2.0-he9431aa_1.conda sha256: 9b5cf168a6c7361cae869cb74b716766ee7c6d6b3f6172b32ba9bf91135efdc4 md5: 0694c249c61469f2c0f7e2990782af21 depends: - libgcc 14.2.0 he277a41_1 + arch: aarch64 + platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL size: 54104 timestamp: 1729089444587 -- kind: conda - name: libgcrypt-lib - version: 1.11.0 - build: h86ecc28_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcrypt-lib-1.11.0-h86ecc28_2.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcrypt-lib-1.11.0-hb9d3cd8_2.conda + sha256: ffc3602f9298da248786f46b00d0594d26a18feeb1b07ce88f3d7d61075e39e6 + md5: e55712ff40a054134d51b89afca57dbc + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libgpg-error >=1.51,<2.0a0 + arch: x86_64 + platform: linux + license: LGPL-2.1-or-later + size: 586185 + timestamp: 1732523190369 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcrypt-lib-1.11.0-h86ecc28_2.conda sha256: 7b0b59e11511e1c20e4d1b89ac458b4a0799da2ef10980302a5f033ecc434dee md5: 07c1e27a75b217e5502bff34cd23c353 depends: - libgcc >=13 - libgpg-error >=1.51,<2.0a0 + arch: aarch64 + platform: linux license: LGPL-2.1-or-later size: 635094 timestamp: 1732523317415 -- kind: conda - name: libgcrypt-lib - version: 1.11.0 - build: hb9d3cd8_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libgcrypt-lib-1.11.0-hb9d3cd8_2.conda - sha256: ffc3602f9298da248786f46b00d0594d26a18feeb1b07ce88f3d7d61075e39e6 - md5: e55712ff40a054134d51b89afca57dbc +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgettextpo-0.22.5-he02047a_3.conda + sha256: 7f2d1f4d69973e2c3c3d2b6420d5eb989982baba97d63ab2d7a2b25a92d886b4 + md5: efab66b82ec976930b96d62a976de8e7 depends: - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libgpg-error >=1.51,<2.0a0 - license: LGPL-2.1-or-later - size: 586185 - timestamp: 1732523190369 -- kind: conda - name: libgettextpo - version: 0.22.5 - build: h0a1ffab_3 - build_number: 3 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libgettextpo-0.22.5-h0a1ffab_3.conda + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: GPL-3.0-or-later + license_family: GPL + size: 170646 + timestamp: 1723626019265 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgettextpo-0.22.5-h0a1ffab_3.conda sha256: f816747b63432def4bfe2bfa517057149b2b94a48101fe13e7fcc2c223ec2042 md5: 263a0b8af4b3fcdb35acc4038bb5bff5 depends: - libgcc-ng >=12 + arch: aarch64 + platform: linux license: GPL-3.0-or-later license_family: GPL size: 199824 timestamp: 1723626215655 -- kind: conda - name: libgettextpo - version: 0.22.5 - build: h8414b35_3 - build_number: 3 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libgettextpo-0.22.5-h8414b35_3.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgettextpo-0.22.5-h8414b35_3.conda sha256: bc446fad58155e96a01b28e99254415c2151bdddf57f9a2c00c44e6f0298bb62 md5: c8cd7295cfb7bda5cbabea4fef904349 depends: - __osx >=11.0 - libiconv >=1.17,<2.0a0 - libintl 0.22.5 h8414b35_3 + arch: arm64 + platform: osx license: GPL-3.0-or-later license_family: GPL size: 159800 timestamp: 1723627007035 -- kind: conda - name: libgettextpo - version: 0.22.5 - build: he02047a_3 - build_number: 3 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libgettextpo-0.22.5-he02047a_3.conda - sha256: 7f2d1f4d69973e2c3c3d2b6420d5eb989982baba97d63ab2d7a2b25a92d886b4 - md5: efab66b82ec976930b96d62a976de8e7 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgettextpo-devel-0.22.5-he02047a_3.conda + sha256: 0a66cdd46d1cd5201061252535cd91905b3222328a9294c1a5bcd32e85531545 + md5: 9aba7960731e6b4547b3a52f812ed801 depends: - __glibc >=2.17,<3.0.a0 - libgcc-ng >=12 + - libgettextpo 0.22.5 he02047a_3 + arch: x86_64 + platform: linux license: GPL-3.0-or-later license_family: GPL - size: 170646 - timestamp: 1723626019265 -- kind: conda - name: libgettextpo-devel - version: 0.22.5 - build: h0a1ffab_3 - build_number: 3 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libgettextpo-devel-0.22.5-h0a1ffab_3.conda + size: 36790 + timestamp: 1723626032786 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgettextpo-devel-0.22.5-h0a1ffab_3.conda sha256: 677df7af241b36c6b06dff52528c2a8e4f42f8cf40d962e693caa707b563c86c md5: 5c1498c4da030824d57072f05220aad8 depends: - libgcc-ng >=12 - libgettextpo 0.22.5 h0a1ffab_3 + arch: aarch64 + platform: linux license: GPL-3.0-or-later license_family: GPL size: 36989 timestamp: 1723626232155 -- kind: conda - name: libgettextpo-devel - version: 0.22.5 - build: h8414b35_3 - build_number: 3 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libgettextpo-devel-0.22.5-h8414b35_3.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgettextpo-devel-0.22.5-h8414b35_3.conda sha256: ea3ca757bf11ed25965b39466b50411c7c2a43f3b90ab4a36fc0ef43f7ab98ac md5: 7074dc1c9aae1bb5d7bccb4ff03746ca depends: @@ -5552,153 +4497,89 @@ packages: - libgettextpo 0.22.5 h8414b35_3 - libiconv >=1.17,<2.0a0 - libintl 0.22.5 h8414b35_3 + arch: arm64 + platform: osx license: GPL-3.0-or-later license_family: GPL size: 37153 timestamp: 1723627048279 -- kind: conda - name: libgettextpo-devel - version: 0.22.5 - build: he02047a_3 - build_number: 3 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libgettextpo-devel-0.22.5-he02047a_3.conda - sha256: 0a66cdd46d1cd5201061252535cd91905b3222328a9294c1a5bcd32e85531545 - md5: 9aba7960731e6b4547b3a52f812ed801 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc-ng >=12 - - libgettextpo 0.22.5 he02047a_3 - license: GPL-3.0-or-later - license_family: GPL - size: 36790 - timestamp: 1723626032786 -- kind: conda - name: libgfortran - version: 5.0.0 - build: 13_2_0_hd922786_3 - build_number: 3 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda - sha256: 44e541b4821c96b28b27fef5630883a60ce4fee91fd9c79f25a199f8f73f337b - md5: 4a55d9e169114b2b90d3ec4604cd7bbf - depends: - - libgfortran5 13.2.0 hf226fd6_3 - license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - size: 110233 - timestamp: 1707330749033 -- kind: conda - name: libgfortran - version: 14.2.0 - build: h69a702a_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_1.conda sha256: fc9e7f22a17faf74da904ebfc4d88699013d2992e55505e4aa0eb01770290977 md5: f1fd30127802683586f768875127a987 depends: - libgfortran5 14.2.0 hd5240d6_1 constrains: - libgfortran-ng ==14.2.0=*_1 + arch: x86_64 + platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL size: 53997 timestamp: 1729027752995 -- kind: conda - name: libgfortran - version: 14.2.0 - build: he9431aa_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_1.conda sha256: cb66e411fa32a5c6040f4e5e2a63c00897aae4c3133a9c004c2e929ccf19575b md5: 0294b92d2f47a240bebb1e3336b495f1 depends: - libgfortran5 14.2.0 hb6113d0_1 constrains: - libgfortran-ng ==14.2.0=*_1 + arch: aarch64 + platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL size: 54105 timestamp: 1729089471124 -- kind: conda - name: libgfortran5 - version: 13.2.0 - build: hf226fd6_3 - build_number: 3 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda - sha256: bafc679eedb468a86aa4636061c55966186399ee0a04b605920d208d97ac579a - md5: 66ac81d54e95c534ae488726c1f698ea +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda + sha256: 44e541b4821c96b28b27fef5630883a60ce4fee91fd9c79f25a199f8f73f337b + md5: 4a55d9e169114b2b90d3ec4604cd7bbf depends: - - llvm-openmp >=8.0.0 + - libgfortran5 13.2.0 hf226fd6_3 + arch: arm64 + platform: osx + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 110233 + timestamp: 1707330749033 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hd5240d6_1.conda + sha256: d149a37ca73611e425041f33b9d8dbed6e52ec506fe8cc1fc0ee054bddeb6d5d + md5: 9822b874ea29af082e5d36098d25427d + depends: + - libgcc >=14.2.0 constrains: - - libgfortran 5.0.0 13_2_0_*_3 + - libgfortran 14.2.0 + arch: x86_64 + platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 997381 - timestamp: 1707330687590 -- kind: conda - name: libgfortran5 - version: 14.2.0 - build: hb6113d0_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_1.conda + size: 1462645 + timestamp: 1729027735353 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_1.conda sha256: a87ff46d19916403cbf68cf1d785bf56b4d1ab7b2552468d2ea775d70782493f md5: fc068e11b10e18f184e027782baa12b6 depends: - libgcc >=14.2.0 constrains: - libgfortran 14.2.0 + arch: aarch64 + platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL size: 1102158 timestamp: 1729089452640 -- kind: conda - name: libgfortran5 - version: 14.2.0 - build: hd5240d6_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hd5240d6_1.conda - sha256: d149a37ca73611e425041f33b9d8dbed6e52ec506fe8cc1fc0ee054bddeb6d5d - md5: 9822b874ea29af082e5d36098d25427d +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda + sha256: bafc679eedb468a86aa4636061c55966186399ee0a04b605920d208d97ac579a + md5: 66ac81d54e95c534ae488726c1f698ea depends: - - libgcc >=14.2.0 + - llvm-openmp >=8.0.0 constrains: - - libgfortran 14.2.0 + - libgfortran 5.0.0 13_2_0_*_3 + arch: arm64 + platform: osx license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 1462645 - timestamp: 1729027735353 -- kind: conda - name: libglib - version: 2.82.2 - build: h07bd6cf_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libglib-2.82.2-h07bd6cf_0.conda - sha256: 101fb31c509d6a69ac5d612b51d4088ddbc675fca18cf0c3589cfee26cd01ca0 - md5: 890783f64502fa6bfcdc723cfbf581b4 - depends: - - __osx >=11.0 - - libffi >=3.4,<4.0a0 - - libiconv >=1.17,<2.0a0 - - libintl >=0.22.5,<1.0a0 - - libzlib >=1.3.1,<2.0a0 - - pcre2 >=10.44,<10.45.0a0 - constrains: - - glib 2.82.2 *_0 - license: LGPL-2.1-or-later - size: 3635416 - timestamp: 1729191799117 -- kind: conda - name: libglib - version: 2.82.2 - build: h2ff4ddf_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.82.2-h2ff4ddf_0.conda + size: 997381 + timestamp: 1707330687590 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.82.2-h2ff4ddf_0.conda sha256: 49ee9401d483a76423461c50dcd37f91d070efaec7e4dc2828d8cdd2ce694231 md5: 13e8e54035ddd2b91875ba399f0f7c04 depends: @@ -5710,15 +4591,12 @@ packages: - pcre2 >=10.44,<10.45.0a0 constrains: - glib 2.82.2 *_0 + arch: x86_64 + platform: linux license: LGPL-2.1-or-later size: 3931898 timestamp: 1729191404130 -- kind: conda - name: libglib - version: 2.82.2 - build: hc486b8e_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libglib-2.82.2-hc486b8e_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libglib-2.82.2-hc486b8e_0.conda sha256: 6797d24de7acd298f81a86078c64e4f3fea6d551a3e8892205c9e72a37a7cc3c md5: 47f6d85fe47b865e56c539f2ba5f4dad depends: @@ -5729,44 +4607,49 @@ packages: - pcre2 >=10.44,<10.45.0a0 constrains: - glib 2.82.2 *_0 + arch: aarch64 + platform: linux license: LGPL-2.1-or-later size: 4020802 timestamp: 1729191545578 -- kind: conda - name: libgomp - version: 14.2.0 - build: h77fa898_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h77fa898_1.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libglib-2.82.2-h07bd6cf_0.conda + sha256: 101fb31c509d6a69ac5d612b51d4088ddbc675fca18cf0c3589cfee26cd01ca0 + md5: 890783f64502fa6bfcdc723cfbf581b4 + depends: + - __osx >=11.0 + - libffi >=3.4,<4.0a0 + - libiconv >=1.17,<2.0a0 + - libintl >=0.22.5,<1.0a0 + - libzlib >=1.3.1,<2.0a0 + - pcre2 >=10.44,<10.45.0a0 + constrains: + - glib 2.82.2 *_0 + arch: arm64 + platform: osx + license: LGPL-2.1-or-later + size: 3635416 + timestamp: 1729191799117 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h77fa898_1.conda sha256: 1911c29975ec99b6b906904040c855772ccb265a1c79d5d75c8ceec4ed89cd63 md5: cc3573974587f12dda90d96e3e55a702 depends: - _libgcc_mutex 0.1 conda_forge + arch: x86_64 + platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL size: 460992 timestamp: 1729027639220 -- kind: conda - name: libgomp - version: 14.2.0 - build: he277a41_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_1.conda sha256: 5aa53874a5e57a00f2e0c2e2910684eb674429cd5fcb803619b226a73e89aedf md5: 376f0e73abbda6d23c0cb749adc195ef + arch: aarch64 + platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL size: 463521 timestamp: 1729089357313 -- kind: conda - name: libgoogle-cloud - version: 2.33.0 - build: h2b5623c_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.33.0-h2b5623c_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.33.0-h2b5623c_1.conda sha256: ae48ee93e2c226bf682f1e389c2fd51ae7bf77c2ce4b3aee069764f4be1c63f2 md5: 61829a8dd5f4e2327e707572065bae41 depends: @@ -5781,17 +4664,13 @@ packages: - openssl >=3.4.0,<4.0a0 constrains: - libgoogle-cloud 2.33.0 *_1 + arch: x86_64 + platform: linux license: Apache-2.0 license_family: Apache size: 1254656 timestamp: 1735648569457 -- kind: conda - name: libgoogle-cloud - version: 2.33.0 - build: hccf9d24_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-2.33.0-hccf9d24_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-2.33.0-hccf9d24_1.conda sha256: d3d4def86d880431928799ba90ca97e57c2f05677c03af8de2337502926c492c md5: a2724014eb04f14bd71d35f45b062dd0 depends: @@ -5805,17 +4684,13 @@ packages: - openssl >=3.4.0,<4.0a0 constrains: - libgoogle-cloud 2.33.0 *_1 + arch: aarch64 + platform: linux license: Apache-2.0 license_family: Apache size: 1253019 timestamp: 1735649566849 -- kind: conda - name: libgoogle-cloud - version: 2.33.0 - build: hdbe95d5_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-2.33.0-hdbe95d5_1.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-2.33.0-hdbe95d5_1.conda sha256: ce95aca02451694a4154c7770b6addf4fb859abf17912de6ec947da8469a56ce md5: 91de1fbab8610974c0094c266bc63435 depends: @@ -5829,17 +4704,13 @@ packages: - openssl >=3.4.0,<4.0a0 constrains: - libgoogle-cloud 2.33.0 *_1 + arch: arm64 + platform: osx license: Apache-2.0 license_family: Apache size: 877594 timestamp: 1735648230965 -- kind: conda - name: libgoogle-cloud-storage - version: 2.33.0 - build: h0121fbd_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.33.0-h0121fbd_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.33.0-h0121fbd_1.conda sha256: 41022523320ca8633a6c615710823e596efadb50f06d724e1a0c81e27994f257 md5: b0cfb5044685a7a9fa43ae669124f0a0 depends: @@ -5852,18 +4723,32 @@ packages: - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - openssl + arch: x86_64 + platform: linux license: Apache-2.0 license_family: Apache size: 784357 timestamp: 1735648759177 -- kind: conda - name: libgoogle-cloud-storage - version: 2.33.0 - build: h7081f7f_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-storage-2.33.0-h7081f7f_1.conda - sha256: c0524a22064bc17f5c037da09ba54cc9e767741ef645178e499750c44bec2531 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-storage-2.33.0-hb9b2b65_1.conda + sha256: 5eda1cbba68709b91b370b3792c9cfd7bec4ac4e2262f0887d12e1f000ae1191 + md5: 45df2267ff4d8ce532e8d300ce0b0829 + depends: + - libabseil + - libcrc32c >=1.1.2,<1.2.0a0 + - libcurl + - libgcc >=13 + - libgoogle-cloud 2.33.0 hccf9d24_1 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 737518 + timestamp: 1735649773462 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-storage-2.33.0-h7081f7f_1.conda + sha256: c0524a22064bc17f5c037da09ba54cc9e767741ef645178e499750c44bec2531 md5: af8e51382464d4cc2d0054977c40a732 depends: - __osx >=11.0 @@ -5874,102 +4759,64 @@ packages: - libgoogle-cloud 2.33.0 hdbe95d5_1 - libzlib >=1.3.1,<2.0a0 - openssl + arch: arm64 + platform: osx license: Apache-2.0 license_family: Apache size: 526963 timestamp: 1735649222088 -- kind: conda - name: libgoogle-cloud-storage - version: 2.33.0 - build: hb9b2b65_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-storage-2.33.0-hb9b2b65_1.conda - sha256: 5eda1cbba68709b91b370b3792c9cfd7bec4ac4e2262f0887d12e1f000ae1191 - md5: 45df2267ff4d8ce532e8d300ce0b0829 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgpg-error-1.51-hbd13f7d_1.conda + sha256: 9e0c09c1faf2151ade3ccb64e52d3c1f2dde85c00e37c6a3e6a8bced2aba68be + md5: 168cc19c031482f83b23c4eebbb94e26 depends: - - libabseil - - libcrc32c >=1.1.2,<1.2.0a0 - - libcurl + - __glibc >=2.17,<3.0.a0 - libgcc >=13 - - libgoogle-cloud 2.33.0 hccf9d24_1 - libstdcxx >=13 - - libzlib >=1.3.1,<2.0a0 - - openssl - license: Apache-2.0 - license_family: Apache - size: 737518 - timestamp: 1735649773462 -- kind: conda - name: libgpg-error - version: '1.51' - build: h05609ea_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libgpg-error-1.51-h05609ea_1.conda + arch: x86_64 + platform: linux + license: LGPL-2.1-only + license_family: GPL + size: 268740 + timestamp: 1731920927644 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgpg-error-1.51-h05609ea_1.conda sha256: e819b3ba47dc7e195e8e8a9c874d0b45690cccb2fa741f1abd55b28323f9fc43 md5: 9cabbbc1c3c8e9fa30e90748f14534dd depends: - libgcc >=13 - libstdcxx >=13 + arch: aarch64 + platform: linux license: LGPL-2.1-only license_family: GPL size: 277785 timestamp: 1731920977846 -- kind: conda - name: libgpg-error - version: '1.51' - build: hbd13f7d_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libgpg-error-1.51-hbd13f7d_1.conda - sha256: 9e0c09c1faf2151ade3ccb64e52d3c1f2dde85c00e37c6a3e6a8bced2aba68be - md5: 168cc19c031482f83b23c4eebbb94e26 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.67.1-h25350d4_1.conda + sha256: 014627485b3cf0ea18e04c0bab07be7fb98722a3aeeb58477acc7e1c3d2f911e + md5: 0c6497a760b99a926c7c12b74951a39c depends: - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libstdcxx >=13 - license: LGPL-2.1-only - license_family: GPL - size: 268740 - timestamp: 1731920927644 -- kind: conda - name: libgrpc - version: 1.67.1 - build: h0a426d6_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libgrpc-1.67.1-h0a426d6_1.conda - sha256: 630edf63981818ff590367cb95fddbed0f5a390464d0952c90ec81de899e84a6 - md5: 8a3cba079d6ac985e7d73c76a678fbb4 - depends: - - __osx >=11.0 - c-ares >=1.34.4,<2.0a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libcxx >=18 + - libgcc >=13 - libprotobuf >=5.28.3,<5.28.4.0a0 - libre2-11 >=2024.7.2 + - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - openssl >=3.4.0,<4.0a0 - re2 constrains: - grpc-cpp =1.67.1 + arch: x86_64 + platform: linux license: Apache-2.0 license_family: APACHE - size: 5311706 - timestamp: 1735585137716 -- kind: conda - name: libgrpc - version: 1.67.1 - build: h25350d4_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.67.1-h25350d4_1.conda - sha256: 014627485b3cf0ea18e04c0bab07be7fb98722a3aeeb58477acc7e1c3d2f911e - md5: 0c6497a760b99a926c7c12b74951a39c + size: 7792251 + timestamp: 1735584856826 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgrpc-1.67.1-hf7ccdd3_1.conda + sha256: 3fa173dc1d7456aac2b26937daae86a08432a31640e3d6569c62edc661fc9bbe + md5: 8fb41a425bebaeb3d0fa568503612e64 depends: - - __glibc >=2.17,<3.0.a0 - c-ares >=1.34.4,<2.0a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 @@ -5982,160 +4829,121 @@ packages: - re2 constrains: - grpc-cpp =1.67.1 + arch: aarch64 + platform: linux license: Apache-2.0 license_family: APACHE - size: 7792251 - timestamp: 1735584856826 -- kind: conda - name: libgrpc - version: 1.67.1 - build: hf7ccdd3_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libgrpc-1.67.1-hf7ccdd3_1.conda - sha256: 3fa173dc1d7456aac2b26937daae86a08432a31640e3d6569c62edc661fc9bbe - md5: 8fb41a425bebaeb3d0fa568503612e64 + size: 7430006 + timestamp: 1735585769731 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgrpc-1.67.1-h0a426d6_1.conda + sha256: 630edf63981818ff590367cb95fddbed0f5a390464d0952c90ec81de899e84a6 + md5: 8a3cba079d6ac985e7d73c76a678fbb4 depends: + - __osx >=11.0 - c-ares >=1.34.4,<2.0a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libgcc >=13 + - libcxx >=18 - libprotobuf >=5.28.3,<5.28.4.0a0 - libre2-11 >=2024.7.2 - - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - openssl >=3.4.0,<4.0a0 - re2 constrains: - grpc-cpp =1.67.1 + arch: arm64 + platform: osx license: Apache-2.0 license_family: APACHE - size: 7430006 - timestamp: 1735585769731 -- kind: conda - name: libiconv - version: '1.17' - build: h0d3ecfb_2 - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.17-h0d3ecfb_2.conda - sha256: bc7de5097b97bcafcf7deaaed505f7ce02f648aac8eccc0d5a47cc599a1d0304 - md5: 69bda57310071cf6d2b86caf11573d2d + size: 5311706 + timestamp: 1735585137716 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-hd590300_2.conda + sha256: 8ac2f6a9f186e76539439e50505d98581472fedb347a20e7d1f36429849f05c9 + md5: d66573916ffcf376178462f1b61c941e + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux license: LGPL-2.1-only - size: 676469 - timestamp: 1702682458114 -- kind: conda - name: libiconv - version: '1.17' - build: h31becfc_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libiconv-1.17-h31becfc_2.conda + size: 705775 + timestamp: 1702682170569 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libiconv-1.17-h31becfc_2.conda sha256: a30e09d089cb75a0d5b8e5c354694c1317da98261185ed65aa3793e741060614 md5: 9a8eb13f14de7d761555a98712e6df65 depends: - libgcc-ng >=12 + arch: aarch64 + platform: linux license: LGPL-2.1-only size: 705787 timestamp: 1702684557134 -- kind: conda - name: libiconv - version: '1.17' - build: hd590300_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-hd590300_2.conda - sha256: 8ac2f6a9f186e76539439e50505d98581472fedb347a20e7d1f36429849f05c9 - md5: d66573916ffcf376178462f1b61c941e - depends: - - libgcc-ng >=12 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.17-h0d3ecfb_2.conda + sha256: bc7de5097b97bcafcf7deaaed505f7ce02f648aac8eccc0d5a47cc599a1d0304 + md5: 69bda57310071cf6d2b86caf11573d2d + arch: arm64 + platform: osx license: LGPL-2.1-only - size: 705775 - timestamp: 1702682170569 -- kind: conda - name: libintl - version: 0.22.5 - build: h8414b35_3 - build_number: 3 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libintl-0.22.5-h8414b35_3.conda + size: 676469 + timestamp: 1702682458114 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libintl-0.22.5-h8414b35_3.conda sha256: 7c1d238d4333af385e594c89ebcb520caad7ed83a735c901099ec0970a87a891 md5: 3b98ec32e91b3b59ad53dbb9c96dd334 depends: - __osx >=11.0 - libiconv >=1.17,<2.0a0 + arch: arm64 + platform: osx license: LGPL-2.1-or-later size: 81171 timestamp: 1723626968270 -- kind: conda - name: libintl-devel - version: 0.22.5 - build: h8414b35_3 - build_number: 3 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libintl-devel-0.22.5-h8414b35_3.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libintl-devel-0.22.5-h8414b35_3.conda sha256: c9d1d4fdfb5775828e54bc9fb443b1a6de9319a04b81d1bac52c26114a763154 md5: 271646de11b018c66e81eb4c4717b291 depends: - __osx >=11.0 - libiconv >=1.17,<2.0a0 - libintl 0.22.5 h8414b35_3 + arch: arm64 + platform: osx license: LGPL-2.1-or-later size: 38584 timestamp: 1723627022409 -- kind: conda - name: libjpeg-turbo - version: 3.0.0 - build: h31becfc_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libjpeg-turbo-3.0.0-h31becfc_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda + sha256: b954e09b7e49c2f2433d6f3bb73868eda5e378278b0f8c1dd10a7ef090e14f2f + md5: ea25936bb4080d843790b586850f82b8 + depends: + - libgcc-ng >=12 + constrains: + - jpeg <0.0.0a + arch: x86_64 + platform: linux + license: IJG AND BSD-3-Clause AND Zlib + size: 618575 + timestamp: 1694474974816 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libjpeg-turbo-3.0.0-h31becfc_1.conda sha256: 675bc1f2a8581cd34a86c412663ec29c5f90c1d9f8d11866aa1ade5cdbdf8429 md5: ed24e702928be089d9ba3f05618515c6 depends: - libgcc-ng >=12 constrains: - jpeg <0.0.0a + arch: aarch64 + platform: linux license: IJG AND BSD-3-Clause AND Zlib size: 647126 timestamp: 1694475003570 -- kind: conda - name: libjpeg-turbo - version: 3.0.0 - build: hb547adb_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.0.0-hb547adb_1.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.0.0-hb547adb_1.conda sha256: a42054eaa38e84fc1e5ab443facac4bbc9d1b6b6f23f54b7bf4f1eb687e1d993 md5: 3ff1e053dc3a2b8e36b9bfa4256a58d1 constrains: - jpeg <0.0.0a + arch: arm64 + platform: osx license: IJG AND BSD-3-Clause AND Zlib size: 547541 timestamp: 1694475104253 -- kind: conda - name: libjpeg-turbo - version: 3.0.0 - build: hd590300_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda - sha256: b954e09b7e49c2f2433d6f3bb73868eda5e378278b0f8c1dd10a7ef090e14f2f - md5: ea25936bb4080d843790b586850f82b8 - depends: - - libgcc-ng >=12 - constrains: - - jpeg <0.0.0a - license: IJG AND BSD-3-Clause AND Zlib - size: 618575 - timestamp: 1694474974816 -- kind: conda - name: liblapack - version: 3.9.0 - build: 26_linux64_openblas +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-26_linux64_openblas.conda build_number: 26 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-26_linux64_openblas.conda sha256: b76458c36331376911e0f98fa68109e02f4d5e5ebfffa79587ac69cef748bba1 md5: 3792604c43695d6a273bc5faaac47d48 depends: @@ -6144,17 +4952,14 @@ packages: - libcblas 3.9.0 26_linux64_openblas - liblapacke 3.9.0 26_linux64_openblas - blas * openblas + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD size: 16338 timestamp: 1734432576650 -- kind: conda - name: liblapack - version: 3.9.0 - build: 26_linuxaarch64_openblas +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-26_linuxaarch64_openblas.conda build_number: 26 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-26_linuxaarch64_openblas.conda sha256: a42bd01498efe2ccf6d08d56ac3cbd3ceab79e06699ff5aac3da8e45a66738f7 md5: a5d4e18876393633da62fd8492c00156 depends: @@ -6163,17 +4968,14 @@ packages: - blas * openblas - liblapacke 3.9.0 26_linuxaarch64_openblas - libcblas 3.9.0 26_linuxaarch64_openblas + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD size: 16403 timestamp: 1734432585123 -- kind: conda - name: liblapack - version: 3.9.0 - build: 26_osxarm64_openblas +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-26_osxarm64_openblas.conda build_number: 26 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-26_osxarm64_openblas.conda sha256: dd6d9a21e672aee4332f019c8229ce70cf5eaf6c2f4cbd1443b105fb66c00dc5 md5: cebad79038a75cfd28fa90d147a2d34d depends: @@ -6182,102 +4984,75 @@ packages: - liblapacke 3.9.0 26_osxarm64_openblas - libcblas 3.9.0 26_osxarm64_openblas - blas * openblas + arch: arm64 + platform: osx license: BSD-3-Clause license_family: BSD size: 16624 timestamp: 1734433068120 -- kind: conda - name: liblzma - version: 5.6.3 - build: h39f12f2_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.3-h39f12f2_1.conda - sha256: d863b8257406918ffdc50ae65502f2b2d6cede29404d09a094f59509d6a0aaf1 - md5: b2553114a7f5e20ccd02378a77d836aa +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.3-hb9d3cd8_1.conda + sha256: e6e425252f3839e2756e4af1ea2074dffd3396c161bf460629f9dfd6a65f15c6 + md5: 2ecf2f1c7e4e21fcfe6423a51a992d84 depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux license: 0BSD - size: 99129 - timestamp: 1733407496073 -- kind: conda - name: liblzma - version: 5.6.3 - build: h86ecc28_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.3-h86ecc28_1.conda + size: 111132 + timestamp: 1733407410083 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.3-h86ecc28_1.conda sha256: d1cce0b7d62d1e54e2164d3e0667ee808efc6c3870256e5b47a150cd0bf46824 md5: eb08b903681f9f2432c320e8ed626723 depends: - libgcc >=13 + arch: aarch64 + platform: linux license: 0BSD size: 124138 timestamp: 1733409137214 -- kind: conda - name: liblzma - version: 5.6.3 - build: hb9d3cd8_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.3-hb9d3cd8_1.conda - sha256: e6e425252f3839e2756e4af1ea2074dffd3396c161bf460629f9dfd6a65f15c6 - md5: 2ecf2f1c7e4e21fcfe6423a51a992d84 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.3-h39f12f2_1.conda + sha256: d863b8257406918ffdc50ae65502f2b2d6cede29404d09a094f59509d6a0aaf1 + md5: b2553114a7f5e20ccd02378a77d836aa depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 + - __osx >=11.0 + arch: arm64 + platform: osx license: 0BSD - size: 111132 - timestamp: 1733407410083 -- kind: conda - name: libmad - version: 0.15.1b - build: h0b41bf4_1001 - build_number: 1001 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libmad-0.15.1b-h0b41bf4_1001.conda + size: 99129 + timestamp: 1733407496073 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libmad-0.15.1b-h0b41bf4_1001.conda sha256: 9e94cec54c4baadaa652c761179b8d32771fe7fa55faf6c78c2e35f942367f74 md5: dc5cc4700f02ffeecc48253c9f29025b depends: - libgcc-ng >=12 + arch: x86_64 + platform: linux license: GPL-2.0-only license_family: GPL size: 78561 timestamp: 1670815547616 -- kind: conda - name: libmad - version: 0.15.1b - build: h1a8c8d9_1001 - build_number: 1001 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libmad-0.15.1b-h1a8c8d9_1001.conda - sha256: 8e9209acf4bf6865760e61dc0d86116ffc9efc3e13c7f559eb1ea78532a3a625 - md5: 1eb30852ed396fbe6e301fe6d715aef9 - license: GPL-2.0-only - license_family: GPL - size: 77255 - timestamp: 1670815732700 -- kind: conda - name: libmad - version: 0.15.1b - build: hb4cce97_1001 - build_number: 1001 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libmad-0.15.1b-hb4cce97_1001.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libmad-0.15.1b-hb4cce97_1001.conda sha256: f39c36ce40bc75bc2eb101e8569caf166d6a02e0b1ef95403146b4f9310df0e3 md5: 10814f7a570b160cea0c885bc1c5e8d5 depends: - libgcc-ng >=12 + arch: aarch64 + platform: linux license: GPL-2.0-only license_family: GPL size: 79598 timestamp: 1673354561940 -- kind: conda - name: libnghttp2 - version: 1.64.0 - build: h161d5f1_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libmad-0.15.1b-h1a8c8d9_1001.conda + sha256: 8e9209acf4bf6865760e61dc0d86116ffc9efc3e13c7f559eb1ea78532a3a625 + md5: 1eb30852ed396fbe6e301fe6d715aef9 + arch: arm64 + platform: osx + license: GPL-2.0-only + license_family: GPL + size: 77255 + timestamp: 1670815732700 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda sha256: b0f2b3695b13a989f75d8fd7f4778e1c7aabe3b36db83f0fe80b2cd812c0e975 md5: 19e57602824042dfd0446292ef90488b depends: @@ -6289,36 +5064,13 @@ packages: - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - openssl >=3.3.2,<4.0a0 + arch: x86_64 + platform: linux license: MIT license_family: MIT size: 647599 timestamp: 1729571887612 -- kind: conda - name: libnghttp2 - version: 1.64.0 - build: h6d7220d_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.64.0-h6d7220d_0.conda - sha256: 00cc685824f39f51be5233b54e19f45abd60de5d8847f1a56906f8936648b72f - md5: 3408c02539cee5f1141f9f11450b6a51 - depends: - - __osx >=11.0 - - c-ares >=1.34.2,<2.0a0 - - libcxx >=17 - - libev >=4.33,<4.34.0a0 - - libev >=4.33,<5.0a0 - - libzlib >=1.3.1,<2.0a0 - - openssl >=3.3.2,<4.0a0 - license: MIT - license_family: MIT - size: 566719 - timestamp: 1729572385640 -- kind: conda - name: libnghttp2 - version: 1.64.0 - build: hc8609a4_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libnghttp2-1.64.0-hc8609a4_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnghttp2-1.64.0-hc8609a4_0.conda sha256: c093c6d370aadbf0409c20b6c54c488ee2f6fea976181919fcc63e87ee232673 md5: f52c614fa214a8bedece9421c771670d depends: @@ -6329,107 +5081,85 @@ packages: - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - openssl >=3.3.2,<4.0a0 + arch: aarch64 + platform: linux license: MIT license_family: MIT size: 714610 timestamp: 1729571912479 -- kind: conda - name: libnsl - version: 2.0.1 - build: h31becfc_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda - sha256: fd18c2b75d7411096428d36a70b36b1a17e31f7b8956b6905d145792d49e97f8 - md5: c14f32510f694e3185704d89967ec422 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.64.0-h6d7220d_0.conda + sha256: 00cc685824f39f51be5233b54e19f45abd60de5d8847f1a56906f8936648b72f + md5: 3408c02539cee5f1141f9f11450b6a51 depends: - - libgcc-ng >=12 - license: LGPL-2.1-only - license_family: GPL - size: 34501 - timestamp: 1697358973269 -- kind: conda - name: libnsl - version: 2.0.1 - build: hd590300_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda + - __osx >=11.0 + - c-ares >=1.34.2,<2.0a0 + - libcxx >=17 + - libev >=4.33,<4.34.0a0 + - libev >=4.33,<5.0a0 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.3.2,<4.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 566719 + timestamp: 1729572385640 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda sha256: 26d77a3bb4dceeedc2a41bd688564fe71bf2d149fdcf117049970bc02ff1add6 md5: 30fd6e37fe21f86f4bd26d6ee73eeec7 depends: - libgcc-ng >=12 + arch: x86_64 + platform: linux license: LGPL-2.1-only license_family: GPL size: 33408 timestamp: 1697359010159 -- kind: conda - name: libogg - version: 1.3.5 - build: h0b9eccb_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libogg-1.3.5-h0b9eccb_0.conda - sha256: e65acc318b7535fb8f2b5e994fe6eac3ae0be3bdb2acbe6037841d033c51f290 - md5: 15cb67b1b9dd0d4b37c81daba785e6ad +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda + sha256: fd18c2b75d7411096428d36a70b36b1a17e31f7b8956b6905d145792d49e97f8 + md5: c14f32510f694e3185704d89967ec422 depends: - libgcc-ng >=12 - license: BSD-3-Clause - license_family: BSD - size: 208233 - timestamp: 1719301637185 -- kind: conda - name: libogg - version: 1.3.5 - build: h4ab18f5_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libogg-1.3.5-h4ab18f5_0.conda + arch: aarch64 + platform: linux + license: LGPL-2.1-only + license_family: GPL + size: 34501 + timestamp: 1697358973269 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libogg-1.3.5-h4ab18f5_0.conda sha256: 5eda3fe92b99b25dd4737226a9485078ab405672d9f621be75edcb68f1e9026d md5: 601bfb4b3c6f0b844443bb81a56651e0 depends: - libgcc-ng >=12 + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD size: 205914 timestamp: 1719301575771 -- kind: conda - name: libogg - version: 1.3.5 - build: h99b78c6_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libogg-1.3.5-h99b78c6_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libogg-1.3.5-h0b9eccb_0.conda + sha256: e65acc318b7535fb8f2b5e994fe6eac3ae0be3bdb2acbe6037841d033c51f290 + md5: 15cb67b1b9dd0d4b37c81daba785e6ad + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 208233 + timestamp: 1719301637185 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libogg-1.3.5-h99b78c6_0.conda sha256: 685f73b7241978007dfe0cecb9cae46c6a26d87d192b6f85a09eb65023c0b99e md5: 57b668b9b78dea2c08e44bb2385d57c0 depends: - __osx >=11.0 + arch: arm64 + platform: osx license: BSD-3-Clause license_family: BSD size: 205451 timestamp: 1719301708541 -- kind: conda - name: libopenblas - version: 0.3.28 - build: openmp_hf332438_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.28-openmp_hf332438_1.conda - sha256: 62bb669c37a845129096f73d446cdb6bb170e4927f2fea2b661329680dbbc373 - md5: 40803a48d947c8639da6704e9a44d3ce - depends: - - __osx >=11.0 - - libgfortran 5.* - - libgfortran5 >=13.2.0 - - llvm-openmp >=18.1.8 - constrains: - - openblas >=0.3.28,<0.3.29.0a0 - license: BSD-3-Clause - license_family: BSD - size: 4165774 - timestamp: 1730772154295 -- kind: conda - name: libopenblas - version: 0.3.28 - build: pthreads_h94d23a6_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.28-pthreads_h94d23a6_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.28-pthreads_h94d23a6_1.conda sha256: 99ba271d8a80a1af2723f2e124ffd91d850074c0389c067e6d96d72a2dbfeabe md5: 62857b389e42b36b686331bec0922050 depends: @@ -6439,17 +5169,13 @@ packages: - libgfortran5 >=14.2.0 constrains: - openblas >=0.3.28,<0.3.29.0a0 + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD size: 5578513 timestamp: 1730772671118 -- kind: conda - name: libopenblas - version: 0.3.28 - build: pthreads_h9d3fd7e_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.28-pthreads_h9d3fd7e_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.28-pthreads_h9d3fd7e_1.conda sha256: 30623a40764e935aa77e0d4db54c1a1589189a9bf3a03fdb445505c1e319b5a6 md5: e8dde93dd199da3c1f2c1fcfd0042cd4 depends: @@ -6458,60 +5184,61 @@ packages: - libgfortran5 >=14.2.0 constrains: - openblas >=0.3.28,<0.3.29.0a0 + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD size: 4793435 timestamp: 1730773029647 -- kind: conda - name: libopus - version: 1.3.1 - build: h27ca646_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libopus-1.3.1-h27ca646_1.tar.bz2 - sha256: e9912101a58cbc609a1917c5289f3bd1f600c82ed3a1c90a6dd4ca02df77958a - md5: 3d0dbee0ccd2f6d6781d270313627b62 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.28-openmp_hf332438_1.conda + sha256: 62bb669c37a845129096f73d446cdb6bb170e4927f2fea2b661329680dbbc373 + md5: 40803a48d947c8639da6704e9a44d3ce + depends: + - __osx >=11.0 + - libgfortran 5.* + - libgfortran5 >=13.2.0 + - llvm-openmp >=18.1.8 + constrains: + - openblas >=0.3.28,<0.3.29.0a0 + arch: arm64 + platform: osx license: BSD-3-Clause license_family: BSD - size: 252854 - timestamp: 1606823635137 -- kind: conda - name: libopus - version: 1.3.1 - build: h7f98852_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libopus-1.3.1-h7f98852_1.tar.bz2 + size: 4165774 + timestamp: 1730772154295 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libopus-1.3.1-h7f98852_1.tar.bz2 sha256: 0e1c2740ebd1c93226dc5387461bbcf8142c518f2092f3ea7551f77755decc8f md5: 15345e56d527b330e1cacbdf58676e8f depends: - libgcc-ng >=9.3.0 + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD size: 260658 timestamp: 1606823578035 -- kind: conda - name: libopus - version: 1.3.1 - build: hf897c2e_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libopus-1.3.1-hf897c2e_1.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopus-1.3.1-hf897c2e_1.tar.bz2 sha256: 92a87ade11af2cff41c35cf941f1a79390fde1f113f8e51e1cce30d31b7c8305 md5: ac7534c50934ed25e4749d74b04c667a depends: - libgcc-ng >=9.3.0 + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD size: 328825 timestamp: 1606823775764 -- kind: conda - name: libparquet - version: 18.1.0 - build: h081d1f1_7_cpu +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopus-1.3.1-h27ca646_1.tar.bz2 + sha256: e9912101a58cbc609a1917c5289f3bd1f600c82ed3a1c90a6dd4ca02df77958a + md5: 3d0dbee0ccd2f6d6781d270313627b62 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 252854 + timestamp: 1606823635137 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-h081d1f1_7_cpu.conda build_number: 7 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-h081d1f1_7_cpu.conda sha256: 55945b761130f60abdecf1551907ecfd05cb4a5958cf74d855b30c005ecb3592 md5: b97013ef4e1dd2cf11594f06d5b5e83a depends: @@ -6521,36 +5248,14 @@ packages: - libstdcxx >=13 - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 + arch: x86_64 + platform: linux license: Apache-2.0 license_family: APACHE size: 1205598 timestamp: 1735684849150 -- kind: conda - name: libparquet - version: 18.1.0 - build: h636d7b7_7_cpu - build_number: 7 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-h636d7b7_7_cpu.conda - sha256: bf42e43542a90edd86ba5aa5fd4543671625f1bc35f62be32688f00e18bae990 - md5: 93de9ba66a20db32a2646d313794b3a8 - depends: - - __osx >=11.0 - - libarrow 18.1.0 h0ad35bc_7_cpu - - libcxx >=18 - - libthrift >=0.21.0,<0.21.1.0a0 - - openssl >=3.4.0,<4.0a0 - license: Apache-2.0 - license_family: APACHE - size: 873251 - timestamp: 1735684582558 -- kind: conda - name: libparquet - version: 18.1.0 - build: hfc78867_7_cpu +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-hfc78867_7_cpu.conda build_number: 7 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-hfc78867_7_cpu.conda sha256: 6dff9bbe731dc2cefe96bd9c7981d2cbef2b564a3152840a29c9b6a493ea50d9 md5: 184bec7a9392ab6ba8134041e81971d6 depends: @@ -6559,79 +5264,79 @@ packages: - libstdcxx >=13 - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 + arch: aarch64 + platform: linux license: Apache-2.0 license_family: APACHE size: 1117825 timestamp: 1735685495511 -- kind: conda - name: libpng - version: 1.6.45 - build: h3783ad8_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.45-h3783ad8_0.conda - sha256: ddcc81c049b32fb5eb3ac1f9a6d3a589c08325c8ec6f89eb912208b19330d68c - md5: d554c806d065b1763cb9e1cb1d25741d +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-h636d7b7_7_cpu.conda + build_number: 7 + sha256: bf42e43542a90edd86ba5aa5fd4543671625f1bc35f62be32688f00e18bae990 + md5: 93de9ba66a20db32a2646d313794b3a8 depends: - __osx >=11.0 - - libzlib >=1.3.1,<2.0a0 - license: zlib-acknowledgement - size: 263151 - timestamp: 1736339184358 -- kind: conda - name: libpng - version: 1.6.45 - build: h943b412_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.45-h943b412_0.conda + - libarrow 18.1.0 h0ad35bc_7_cpu + - libcxx >=18 + - libthrift >=0.21.0,<0.21.1.0a0 + - openssl >=3.4.0,<4.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + size: 873251 + timestamp: 1735684582558 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.45-h943b412_0.conda sha256: b8f5b5ba9a14dedf7c97c01300de492b1b52b68eacbc3249a13fdbfa82349a2f md5: 85cbdaacad93808395ac295b5667d25b depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux license: zlib-acknowledgement size: 289426 timestamp: 1736339058310 -- kind: conda - name: libpng - version: 1.6.45 - build: hec79eb8_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.45-hec79eb8_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.45-hec79eb8_0.conda sha256: a06daa523a0d5775acb96e6e3f083adc2ab1383eb8f664513dbc663f439c9cca md5: 9a8716c16b40acc7148263de1d0a403b depends: - libgcc >=13 - libzlib >=1.3.1,<2.0a0 + arch: aarch64 + platform: linux license: zlib-acknowledgement size: 299051 timestamp: 1736344007986 -- kind: conda - name: libprotobuf - version: 5.28.3 - build: h3bd63a1_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.3-h3bd63a1_1.conda - sha256: f58a16b13ad53346903c833e266f83c3d770a43a432659b98710aed85ca885e7 - md5: bdbfea4cf45ae36652c6bbcc2e7ebe91 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.45-h3783ad8_0.conda + sha256: ddcc81c049b32fb5eb3ac1f9a6d3a589c08325c8ec6f89eb912208b19330d68c + md5: d554c806d065b1763cb9e1cb1d25741d depends: - __osx >=11.0 + - libzlib >=1.3.1,<2.0a0 + arch: arm64 + platform: osx + license: zlib-acknowledgement + size: 263151 + timestamp: 1736339184358 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda + sha256: 51125ebb8b7152e4a4e69fd2398489c4ec8473195c27cde3cbdf1cb6d18c5493 + md5: d8703f1ffe5a06356f06467f1d0b9464 + depends: + - __glibc >=2.17,<3.0.a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libcxx >=18 + - libgcc >=13 + - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD - size: 2271580 - timestamp: 1735576361997 -- kind: conda - name: libprotobuf - version: 5.28.3 - build: h44a3b7b_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.3-h44a3b7b_1.conda + size: 2960815 + timestamp: 1735577210663 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.3-h44a3b7b_1.conda sha256: ecb69f2b1668e784b41ba667493be846662d5ef702bef64fb2e013bb1364cdc4 md5: 68f807f7cc13951652bbe048253fd405 depends: @@ -6640,57 +5345,45 @@ packages: - libgcc >=13 - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD size: 2788074 timestamp: 1735576315676 -- kind: conda - name: libprotobuf - version: 5.28.3 - build: h6128344_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda - sha256: 51125ebb8b7152e4a4e69fd2398489c4ec8473195c27cde3cbdf1cb6d18c5493 - md5: d8703f1ffe5a06356f06467f1d0b9464 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.3-h3bd63a1_1.conda + sha256: f58a16b13ad53346903c833e266f83c3d770a43a432659b98710aed85ca885e7 + md5: bdbfea4cf45ae36652c6bbcc2e7ebe91 depends: - - __glibc >=2.17,<3.0.a0 + - __osx >=11.0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libgcc >=13 - - libstdcxx >=13 + - libcxx >=18 - libzlib >=1.3.1,<2.0a0 + arch: arm64 + platform: osx license: BSD-3-Clause license_family: BSD - size: 2960815 - timestamp: 1735577210663 -- kind: conda - name: libre2-11 - version: 2024.07.02 - build: h07bc746_2 - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h07bc746_2.conda - sha256: 112a73ad483353751d4c5d63648c69a4d6fcebf5e1b698a860a3f5124fc3db96 - md5: 6b1e3624d3488016ca4f1ca0c412efaa + size: 2271580 + timestamp: 1735576361997 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_2.conda + sha256: 4420f8362c71251892ba1eeb957c5e445e4e1596c0c651c28d0d8b415fe120c7 + md5: b2fede24428726dd867611664fb372e8 depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libcxx >=18 + - libgcc >=13 + - libstdcxx >=13 constrains: - re2 2024.07.02.* + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD - size: 167155 - timestamp: 1735541067807 -- kind: conda - name: libre2-11 - version: 2024.07.02 - build: h18dbdb1_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_2.conda + size: 209793 + timestamp: 1735541054068 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_2.conda sha256: 862c20de0120f802e618dcb25913d00c5b82f91f4be60b2d46a774e851adc2f6 md5: 9a7dbbaab49f76a6f36e5c9d98e323a7 depends: @@ -6700,38 +5393,47 @@ packages: - libstdcxx >=13 constrains: - re2 2024.07.02.* + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD size: 204305 timestamp: 1735540986919 -- kind: conda - name: libre2-11 - version: 2024.07.02 - build: hbbce691_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_2.conda - sha256: 4420f8362c71251892ba1eeb957c5e445e4e1596c0c651c28d0d8b415fe120c7 - md5: b2fede24428726dd867611664fb372e8 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h07bc746_2.conda + sha256: 112a73ad483353751d4c5d63648c69a4d6fcebf5e1b698a860a3f5124fc3db96 + md5: 6b1e3624d3488016ca4f1ca0c412efaa depends: - - __glibc >=2.17,<3.0.a0 + - __osx >=11.0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libgcc >=13 - - libstdcxx >=13 + - libcxx >=18 constrains: - re2 2024.07.02.* + arch: arm64 + platform: osx license: BSD-3-Clause license_family: BSD - size: 209793 - timestamp: 1735541054068 -- kind: conda - name: libsndfile - version: 1.2.2 - build: h79657aa_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libsndfile-1.2.2-h79657aa_1.conda + size: 167155 + timestamp: 1735541067807 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsndfile-1.2.2-hc60ed4a_1.conda + sha256: f709cbede3d4f3aee4e2f8d60bd9e256057f410bd60b8964cb8cf82ec1457573 + md5: ef1910918dd895516a769ed36b5b3a4e + depends: + - lame >=3.100,<3.101.0a0 + - libflac >=1.4.3,<1.5.0a0 + - libgcc-ng >=12 + - libogg >=1.3.4,<1.4.0a0 + - libopus >=1.3.1,<2.0a0 + - libstdcxx-ng >=12 + - libvorbis >=1.3.7,<1.4.0a0 + - mpg123 >=1.32.1,<1.33.0a0 + arch: x86_64 + platform: linux + license: LGPL-2.1-or-later + license_family: LGPL + size: 354372 + timestamp: 1695747735668 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsndfile-1.2.2-h79657aa_1.conda sha256: 8fcd5e45d6fb071e8baf492ebb8710203fd5eedf0cb791e007265db373c89942 md5: ad8e62c0faec46b1442f960489c80b49 depends: @@ -6743,17 +5445,13 @@ packages: - libstdcxx-ng >=12 - libvorbis >=1.3.7,<1.4.0a0 - mpg123 >=1.32.1,<1.33.0a0 + arch: aarch64 + platform: linux license: LGPL-2.1-or-later license_family: LGPL size: 396501 timestamp: 1695747749825 -- kind: conda - name: libsndfile - version: 1.2.2 - build: h9739721_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libsndfile-1.2.2-h9739721_1.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsndfile-1.2.2-h9739721_1.conda sha256: e559f2f72bb03a554aa5b74230fa19160d33c7981ed385294f1eea9a5871cc03 md5: 77d552455cbc52e089cdb9df5b283199 depends: @@ -6764,265 +5462,191 @@ packages: - libopus >=1.3.1,<2.0a0 - libvorbis >=1.3.7,<1.4.0a0 - mpg123 >=1.32.1,<1.33.0a0 + arch: arm64 + platform: osx license: LGPL-2.1-or-later license_family: LGPL size: 317185 timestamp: 1695747981394 -- kind: conda - name: libsndfile - version: 1.2.2 - build: hc60ed4a_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libsndfile-1.2.2-hc60ed4a_1.conda - sha256: f709cbede3d4f3aee4e2f8d60bd9e256057f410bd60b8964cb8cf82ec1457573 - md5: ef1910918dd895516a769ed36b5b3a4e - depends: - - lame >=3.100,<3.101.0a0 - - libflac >=1.4.3,<1.5.0a0 - - libgcc-ng >=12 - - libogg >=1.3.4,<1.4.0a0 - - libopus >=1.3.1,<2.0a0 - - libstdcxx-ng >=12 - - libvorbis >=1.3.7,<1.4.0a0 - - mpg123 >=1.32.1,<1.33.0a0 - license: LGPL-2.1-or-later - license_family: LGPL - size: 354372 - timestamp: 1695747735668 -- kind: conda - name: libsodium - version: 1.0.20 - build: h4ab18f5_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda sha256: 0105bd108f19ea8e6a78d2d994a6d4a8db16d19a41212070d2d1d48a63c34161 md5: a587892d3c13b6621a6091be690dbca2 depends: - libgcc-ng >=12 + arch: x86_64 + platform: linux license: ISC size: 205978 timestamp: 1716828628198 -- kind: conda - name: libsodium - version: 1.0.20 - build: h68df207_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.20-h68df207_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.20-h68df207_0.conda sha256: 448df5ea3c5cf1af785aad46858d7a5be0522f4234a4dc9bb764f4d11ff3b981 md5: 2e4a8f23bebdcb85ca8e5a0fbe75666a depends: - libgcc-ng >=12 + arch: aarch64 + platform: linux license: ISC size: 177394 timestamp: 1716828514515 -- kind: conda - name: libsodium - version: 1.0.20 - build: h99b78c6_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda sha256: fade8223e1e1004367d7101dd17261003b60aa576df6d7802191f8972f7470b1 md5: a7ce36e284c5faaf93c220dfc39e3abd depends: - __osx >=11.0 + arch: arm64 + platform: osx license: ISC size: 164972 timestamp: 1716828607917 -- kind: conda - name: libsqlite - version: 3.47.2 - build: h3f77e49_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.47.2-h3f77e49_0.conda - sha256: f192f3c8973de9ec4c214990715f13b781965247a5cedf9162e7f9e699cfc3c4 - md5: 122d6f29470f1a991e85608e77e56a8a +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.47.2-hee588c1_0.conda + sha256: 48af21ebc2cbf358976f1e0f4a0ab9e91dfc83d0ef337cf3837c6f5bc22fb352 + md5: b58da17db24b6e08bcbf8fed2fb8c915 depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux license: Unlicense - size: 850553 - timestamp: 1733762057506 -- kind: conda - name: libsqlite - version: 3.47.2 - build: h5eb1b54_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.47.2-h5eb1b54_0.conda + size: 873551 + timestamp: 1733761824646 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.47.2-h5eb1b54_0.conda sha256: 885a27fa84a5a73ed9779168c02b6c386e2fc7a53f0566b32a09ceca146b42b4 md5: d4bf59f8783a4a66c0aec568f6de3ff4 depends: - libgcc >=13 - libzlib >=1.3.1,<2.0a0 + arch: aarch64 + platform: linux license: Unlicense size: 1042182 timestamp: 1733761913736 -- kind: conda - name: libsqlite - version: 3.47.2 - build: hee588c1_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.47.2-hee588c1_0.conda - sha256: 48af21ebc2cbf358976f1e0f4a0ab9e91dfc83d0ef337cf3837c6f5bc22fb352 - md5: b58da17db24b6e08bcbf8fed2fb8c915 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.47.2-h3f77e49_0.conda + sha256: f192f3c8973de9ec4c214990715f13b781965247a5cedf9162e7f9e699cfc3c4 + md5: 122d6f29470f1a991e85608e77e56a8a depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 + - __osx >=11.0 - libzlib >=1.3.1,<2.0a0 + arch: arm64 + platform: osx license: Unlicense - size: 873551 - timestamp: 1733761824646 -- kind: conda - name: libssh2 - version: 1.11.1 - build: h9cc3647_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.1-h9cc3647_0.conda - sha256: f7047c6ed44bcaeb04432e8c74da87591940d091b0a3940c0d884b7faa8062e9 - md5: ddc7194676c285513706e5fc64f214d7 + size: 850553 + timestamp: 1733762057506 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hf672d98_0.conda + sha256: 0407ac9fda2bb67e11e357066eff144c845801d00b5f664efbc48813af1e7bb9 + md5: be2de152d8073ef1c01b7728475f2fe7 depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 - libzlib >=1.3.1,<2.0a0 - openssl >=3.4.0,<4.0a0 + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD - size: 279028 - timestamp: 1732349599461 -- kind: conda - name: libssh2 - version: 1.11.1 - build: ha41c0db_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libssh2-1.11.1-ha41c0db_0.conda + size: 304278 + timestamp: 1732349402869 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libssh2-1.11.1-ha41c0db_0.conda sha256: 40f2af5357457546bd11cd64a3b9043d83865180f65ce602515c35f353be35c7 md5: aeffe03c0e598f015aab08dbb04f6ee4 depends: - libgcc >=13 - libzlib >=1.3.1,<2.0a0 - openssl >=3.4.0,<4.0a0 + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD size: 311577 timestamp: 1732349396421 -- kind: conda - name: libssh2 - version: 1.11.1 - build: hf672d98_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hf672d98_0.conda - sha256: 0407ac9fda2bb67e11e357066eff144c845801d00b5f664efbc48813af1e7bb9 - md5: be2de152d8073ef1c01b7728475f2fe7 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.1-h9cc3647_0.conda + sha256: f7047c6ed44bcaeb04432e8c74da87591940d091b0a3940c0d884b7faa8062e9 + md5: ddc7194676c285513706e5fc64f214d7 depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - libzlib >=1.3.1,<2.0a0 - openssl >=3.4.0,<4.0a0 + arch: arm64 + platform: osx license: BSD-3-Clause license_family: BSD - size: 304278 - timestamp: 1732349402869 -- kind: conda - name: libstdcxx - version: 14.2.0 - build: h3f4de04_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_1.conda - sha256: 519556d2c93f1b487091ce046d62e762286177f4a670ec10e16005177d0bcab3 - md5: 37f489acd39e22b623d2d1e5ac6d195c - depends: - - libgcc 14.2.0 he277a41_1 - license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - size: 3816794 - timestamp: 1729089463404 -- kind: conda - name: libstdcxx - version: 14.2.0 - build: hc0a3c3a_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-hc0a3c3a_1.conda + size: 279028 + timestamp: 1732349599461 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-hc0a3c3a_1.conda sha256: 4661af0eb9bdcbb5fb33e5d0023b001ad4be828fccdcc56500059d56f9869462 md5: 234a5554c53625688d51062645337328 depends: - libgcc 14.2.0 h77fa898_1 + arch: x86_64 + platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL size: 3893695 timestamp: 1729027746910 -- kind: conda - name: libstdcxx-ng - version: 14.2.0 - build: h4852527_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_1.conda + sha256: 519556d2c93f1b487091ce046d62e762286177f4a670ec10e16005177d0bcab3 + md5: 37f489acd39e22b623d2d1e5ac6d195c + depends: + - libgcc 14.2.0 he277a41_1 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 3816794 + timestamp: 1729089463404 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_1.conda sha256: 25bb30b827d4f6d6f0522cc0579e431695503822f144043b93c50237017fffd8 md5: 8371ac6457591af2cf6159439c1fd051 depends: - libstdcxx 14.2.0 hc0a3c3a_1 + arch: x86_64 + platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL size: 54105 timestamp: 1729027780628 -- kind: conda - name: libstdcxx-ng - version: 14.2.0 - build: hf1166c9_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_1.conda sha256: 9f97461bd55a2745a7a0941f3502a047f15bfe7bb2952dc7fb204b3202f866fd md5: 0e75771b8a03afae5a2c6ce71bc733f5 depends: - libstdcxx 14.2.0 h3f4de04_1 + arch: aarch64 + platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL size: 54133 timestamp: 1729089498541 -- kind: conda - name: libsystemd0 - version: '257.2' - build: h27834fc_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libsystemd0-257.2-h27834fc_0.conda - sha256: 7b95a42f507479c4e76855dbffe65a3b51fa5f1465649be00a1940dec6cdb9a8 - md5: 18fbe3093009820c6fb7d6f1c710fd66 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsystemd0-257.2-h3dc2cb9_0.conda + sha256: 03f532cae9ca0417b29ead19490a9fa0fa5e6ad73f1bfc7ea0d4d3bd4c41156e + md5: 40c12fdd396297db83f789722027f5ed depends: + - __glibc >=2.17,<3.0.a0 - libcap >=2.71,<2.72.0a0 - libgcc >=13 - libgcrypt-lib >=1.11.0,<2.0a0 - liblzma >=5.6.3,<6.0a0 - lz4-c >=1.10.0,<1.11.0a0 - zstd >=1.5.6,<1.6.0a0 + arch: x86_64 + platform: linux license: LGPL-2.1-or-later - size: 512091 - timestamp: 1736377189744 -- kind: conda - name: libsystemd0 - version: '257.2' - build: h3dc2cb9_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libsystemd0-257.2-h3dc2cb9_0.conda - sha256: 03f532cae9ca0417b29ead19490a9fa0fa5e6ad73f1bfc7ea0d4d3bd4c41156e - md5: 40c12fdd396297db83f789722027f5ed + size: 487652 + timestamp: 1736377129372 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsystemd0-257.2-h27834fc_0.conda + sha256: 7b95a42f507479c4e76855dbffe65a3b51fa5f1465649be00a1940dec6cdb9a8 + md5: 18fbe3093009820c6fb7d6f1c710fd66 depends: - - __glibc >=2.17,<3.0.a0 - libcap >=2.71,<2.72.0a0 - libgcc >=13 - libgcrypt-lib >=1.11.0,<2.0a0 - liblzma >=5.6.3,<6.0a0 - lz4-c >=1.10.0,<1.11.0a0 - zstd >=1.5.6,<1.6.0a0 + arch: aarch64 + platform: linux license: LGPL-2.1-or-later - size: 487652 - timestamp: 1736377129372 -- kind: conda - name: libthrift - version: 0.21.0 - build: h0e7cc3e_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libthrift-0.21.0-h0e7cc3e_0.conda + size: 512091 + timestamp: 1736377189744 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libthrift-0.21.0-h0e7cc3e_0.conda sha256: ebb395232973c18745b86c9a399a4725b2c39293c9a91b8e59251be013db42f0 md5: dcb95c0a98ba9ff737f7ae482aef7833 depends: @@ -7032,16 +5656,13 @@ packages: - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - openssl >=3.3.2,<4.0a0 + arch: x86_64 + platform: linux license: Apache-2.0 license_family: APACHE size: 425773 timestamp: 1727205853307 -- kind: conda - name: libthrift - version: 0.21.0 - build: h154c74f_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libthrift-0.21.0-h154c74f_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libthrift-0.21.0-h154c74f_0.conda sha256: f04ab1417aca1687edff9c30d8423ace285eb8c053dc16d595c6e47cfeefb274 md5: c28792bf37f4ecdce8e3cb9e40750650 depends: @@ -7050,16 +5671,13 @@ packages: - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - openssl >=3.3.2,<4.0a0 + arch: aarch64 + platform: linux license: Apache-2.0 license_family: APACHE size: 417329 timestamp: 1727205944238 -- kind: conda - name: libthrift - version: 0.21.0 - build: h64651cc_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libthrift-0.21.0-h64651cc_0.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libthrift-0.21.0-h64651cc_0.conda sha256: 7a6c7d5f58cbbc2ccd6493b4b821639fdb0701b9b04c737a949e8cb6adf1c9ad md5: 7ce2bd2f650f8c31ad7ba4c7bfea61b7 depends: @@ -7068,39 +5686,32 @@ packages: - libevent >=2.1.12,<2.1.13.0a0 - libzlib >=1.3.1,<2.0a0 - openssl >=3.3.2,<4.0a0 + arch: arm64 + platform: osx license: Apache-2.0 license_family: APACHE size: 324342 timestamp: 1727206096912 -- kind: conda - name: libtiff - version: 4.7.0 - build: h551f018_3 - build_number: 3 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-h551f018_3.conda - sha256: 91417846157e04992801438a496b151df89604b2e7c6775d6f701fcd0cbed5ae - md5: a5d084a957563e614ec0c0196d890654 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hd9ff511_3.conda + sha256: b224e16b88d76ea95e4af56e2bc638c603bd26a770b98d117d04541d3aafa002 + md5: 0ea6510969e1296cc19966fad481f6de depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 - lerc >=4.0.0,<5.0a0 - - libcxx >=18 - libdeflate >=1.23,<1.24.0a0 + - libgcc >=13 - libjpeg-turbo >=3.0.0,<4.0a0 - liblzma >=5.6.3,<6.0a0 + - libstdcxx >=13 - libwebp-base >=1.4.0,<2.0a0 - libzlib >=1.3.1,<2.0a0 - zstd >=1.5.6,<1.6.0a0 + arch: x86_64 + platform: linux license: HPND - size: 370600 - timestamp: 1734398863052 -- kind: conda - name: libtiff - version: 4.7.0 - build: h88f7998_3 - build_number: 3 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.0-h88f7998_3.conda + size: 428173 + timestamp: 1734398813264 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.0-h88f7998_3.conda sha256: 5888bd66ba7606ae8596856c7dac800940ecad0aed77d6aa37db69d434c81cf0 md5: 36a0ea4a173338c8725dc0807e99cf22 depends: @@ -7113,286 +5724,227 @@ packages: - libwebp-base >=1.4.0,<2.0a0 - libzlib >=1.3.1,<2.0a0 - zstd >=1.5.6,<1.6.0a0 + arch: aarch64 + platform: linux license: HPND size: 464699 timestamp: 1734398752249 -- kind: conda - name: libtiff - version: 4.7.0 - build: hd9ff511_3 - build_number: 3 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hd9ff511_3.conda - sha256: b224e16b88d76ea95e4af56e2bc638c603bd26a770b98d117d04541d3aafa002 - md5: 0ea6510969e1296cc19966fad481f6de +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-h551f018_3.conda + sha256: 91417846157e04992801438a496b151df89604b2e7c6775d6f701fcd0cbed5ae + md5: a5d084a957563e614ec0c0196d890654 depends: - - __glibc >=2.17,<3.0.a0 + - __osx >=11.0 - lerc >=4.0.0,<5.0a0 + - libcxx >=18 - libdeflate >=1.23,<1.24.0a0 - - libgcc >=13 - libjpeg-turbo >=3.0.0,<4.0a0 - liblzma >=5.6.3,<6.0a0 - - libstdcxx >=13 - libwebp-base >=1.4.0,<2.0a0 - libzlib >=1.3.1,<2.0a0 - zstd >=1.5.6,<1.6.0a0 + arch: arm64 + platform: osx license: HPND - size: 428173 - timestamp: 1734398813264 -- kind: conda - name: libutf8proc - version: 2.9.0 - build: h5505292_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.9.0-h5505292_1.conda - sha256: ea88f06e97ef8fa2490f7594f8885bb542577226edf8abba3144302d951a53c2 - md5: f777470d31c78cd0abe1903a2fda436f + size: 370600 + timestamp: 1734398863052 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.9.0-hb9d3cd8_1.conda + sha256: 9794e6388e780c3310d46f773bbc924d4053375c3fcdb07a704b57f4616db928 + md5: 1e936bd23d737aac62a18e9a1e7f8b18 depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux license: MIT license_family: MIT - size: 83000 - timestamp: 1732868631531 -- kind: conda - name: libutf8proc - version: 2.9.0 - build: h86ecc28_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.9.0-h86ecc28_1.conda + size: 81500 + timestamp: 1732868419835 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.9.0-h86ecc28_1.conda sha256: 37a1833c55f9945724cd4b3eb6a1469032cc754a1dd725f191c34154ad2ba7e4 md5: 699f155da290be3a1a64c932c6728991 depends: - libgcc >=13 + arch: aarch64 + platform: linux license: MIT license_family: MIT size: 81526 timestamp: 1732868466862 -- kind: conda - name: libutf8proc - version: 2.9.0 - build: hb9d3cd8_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.9.0-hb9d3cd8_1.conda - sha256: 9794e6388e780c3310d46f773bbc924d4053375c3fcdb07a704b57f4616db928 - md5: 1e936bd23d737aac62a18e9a1e7f8b18 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.9.0-h5505292_1.conda + sha256: ea88f06e97ef8fa2490f7594f8885bb542577226edf8abba3144302d951a53c2 + md5: f777470d31c78cd0abe1903a2fda436f depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 + - __osx >=11.0 + arch: arm64 + platform: osx license: MIT license_family: MIT - size: 81500 - timestamp: 1732868419835 -- kind: conda - name: libuuid - version: 2.38.1 - build: h0b41bf4_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda + size: 83000 + timestamp: 1732868631531 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda sha256: 787eb542f055a2b3de553614b25f09eefb0a0931b0c87dbcce6efdfd92f04f18 md5: 40b61aab5c7ba9ff276c41cfffe6b80b depends: - libgcc-ng >=12 + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD size: 33601 timestamp: 1680112270483 -- kind: conda - name: libuuid - version: 2.38.1 - build: hb4cce97_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda sha256: 616277b0c5f7616c2cdf36f6c316ea3f9aa5bb35f2d4476a349ab58b9b91675f md5: 000e30b09db0b7c775b21695dff30969 depends: - libgcc-ng >=12 + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD size: 35720 timestamp: 1680113474501 -- kind: conda - name: libuv - version: 1.49.2 - build: h7ab814d_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libuv-1.49.2-h7ab814d_0.conda - sha256: 0e5176af1e788ad5006cf261c4ea5a288a935fda48993b0240ddd2e562dc3d02 - md5: 4bc348e3a1a74d20a3f9beb866d75e0a +- conda: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.49.2-hb9d3cd8_0.conda + sha256: a35cd81cd1a9add11024097da83cc06b0aae83186fe4124b77710876f37d8f31 + md5: 070e3c9ddab77e38799d5c30b109c633 depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux license: MIT license_family: MIT - size: 410500 - timestamp: 1729322654121 -- kind: conda - name: libuv - version: 1.49.2 - build: h86ecc28_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libuv-1.49.2-h86ecc28_0.conda + size: 884647 + timestamp: 1729322566955 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuv-1.49.2-h86ecc28_0.conda sha256: adf4eca89339ac7780f2394e7e6699be81259eb91f79f9d9fdf2c1bc6b26f210 md5: 1899e1ec2be63386c41c4db31d3056af depends: - libgcc >=13 + arch: aarch64 + platform: linux license: MIT license_family: MIT size: 627484 timestamp: 1729322575379 -- kind: conda - name: libuv - version: 1.49.2 - build: hb9d3cd8_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.49.2-hb9d3cd8_0.conda - sha256: a35cd81cd1a9add11024097da83cc06b0aae83186fe4124b77710876f37d8f31 - md5: 070e3c9ddab77e38799d5c30b109c633 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libuv-1.49.2-h7ab814d_0.conda + sha256: 0e5176af1e788ad5006cf261c4ea5a288a935fda48993b0240ddd2e562dc3d02 + md5: 4bc348e3a1a74d20a3f9beb866d75e0a depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 + - __osx >=11.0 + arch: arm64 + platform: osx license: MIT license_family: MIT - size: 884647 - timestamp: 1729322566955 -- kind: conda - name: libvorbis - version: 1.3.7 - build: h01db608_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libvorbis-1.3.7-h01db608_0.tar.bz2 - sha256: 1ade4727be5c52b287001b8094d02af66342dfe0ba13ef69222aaaf2e9be4342 - md5: c2863ff72c6d8a59054f8b9102c206e9 + size: 410500 + timestamp: 1729322654121 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libvorbis-1.3.7-h9c3ff4c_0.tar.bz2 + sha256: 53080d72388a57b3c31ad5805c93a7328e46ff22fab7c44ad2a86d712740af33 + md5: 309dec04b70a3cc0f1e84a4013683bc0 depends: - libgcc-ng >=9.3.0 - libogg >=1.3.4,<1.4.0a0 - libstdcxx-ng >=9.3.0 + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD - size: 292082 - timestamp: 1610616294416 -- kind: conda - name: libvorbis - version: 1.3.7 - build: h9c3ff4c_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libvorbis-1.3.7-h9c3ff4c_0.tar.bz2 - sha256: 53080d72388a57b3c31ad5805c93a7328e46ff22fab7c44ad2a86d712740af33 - md5: 309dec04b70a3cc0f1e84a4013683bc0 + size: 286280 + timestamp: 1610609811627 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libvorbis-1.3.7-h01db608_0.tar.bz2 + sha256: 1ade4727be5c52b287001b8094d02af66342dfe0ba13ef69222aaaf2e9be4342 + md5: c2863ff72c6d8a59054f8b9102c206e9 depends: - libgcc-ng >=9.3.0 - libogg >=1.3.4,<1.4.0a0 - libstdcxx-ng >=9.3.0 + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD - size: 286280 - timestamp: 1610609811627 -- kind: conda - name: libvorbis - version: 1.3.7 - build: h9f76cd9_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libvorbis-1.3.7-h9f76cd9_0.tar.bz2 + size: 292082 + timestamp: 1610616294416 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libvorbis-1.3.7-h9f76cd9_0.tar.bz2 sha256: 60457217e20d8b24a8390c81338a8fa69c8656b440c067cd82f802a09da93cb9 md5: 92a1a88d1a1d468c19d9e1659ac8d3df depends: - libcxx >=11.0.0 - libogg >=1.3.4,<1.4.0a0 + arch: arm64 + platform: osx license: BSD-3-Clause license_family: BSD size: 254839 timestamp: 1610609991029 -- kind: conda - name: libwebp-base - version: 1.5.0 - build: h0886dbf_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libwebp-base-1.5.0-h0886dbf_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.5.0-h851e524_0.conda + sha256: c45283fd3e90df5f0bd3dbcd31f59cdd2b001d424cf30a07223655413b158eaf + md5: 63f790534398730f59e1b899c3644d4a + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + constrains: + - libwebp 1.5.0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 429973 + timestamp: 1734777489810 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libwebp-base-1.5.0-h0886dbf_0.conda sha256: b3d881a0ae08bb07fff7fa8ead506c8d2e0388733182fe4f216f3ec5d61ffcf0 md5: 95ef4a689b8cc1b7e18b53784d88f96b depends: - libgcc >=13 constrains: - libwebp 1.5.0 + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD size: 362623 timestamp: 1734779054659 -- kind: conda - name: libwebp-base - version: 1.5.0 - build: h2471fea_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.5.0-h2471fea_0.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.5.0-h2471fea_0.conda sha256: f8bdb876b4bc8cb5df47c28af29188de8911c3fea4b799a33743500149de3f4a md5: 569466afeb84f90d5bb88c11cc23d746 depends: - __osx >=11.0 constrains: - libwebp 1.5.0 + arch: arm64 + platform: osx license: BSD-3-Clause license_family: BSD size: 290013 timestamp: 1734777593617 -- kind: conda - name: libwebp-base - version: 1.5.0 - build: h851e524_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.5.0-h851e524_0.conda - sha256: c45283fd3e90df5f0bd3dbcd31f59cdd2b001d424cf30a07223655413b158eaf - md5: 63f790534398730f59e1b899c3644d4a +- conda: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda + sha256: 666c0c431b23c6cec6e492840b176dde533d48b7e6fb8883f5071223433776aa + md5: 92ed62436b625154323d40d5f2f11dd7 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - constrains: - - libwebp 1.5.0 - license: BSD-3-Clause - license_family: BSD - size: 429973 - timestamp: 1734777489810 -- kind: conda - name: libxcb - version: 1.17.0 - build: h262b8f6_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcb-1.17.0-h262b8f6_0.conda - sha256: 461cab3d5650ac6db73a367de5c8eca50363966e862dcf60181d693236b1ae7b - md5: cd14ee5cca2464a425b1dbfc24d90db2 - depends: - - libgcc >=13 - pthread-stubs - xorg-libxau >=1.0.11,<2.0a0 - xorg-libxdmcp + arch: x86_64 + platform: linux license: MIT license_family: MIT - size: 397493 - timestamp: 1727280745441 -- kind: conda - name: libxcb - version: 1.17.0 - build: h8a09558_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda - sha256: 666c0c431b23c6cec6e492840b176dde533d48b7e6fb8883f5071223433776aa - md5: 92ed62436b625154323d40d5f2f11dd7 + size: 395888 + timestamp: 1727278577118 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcb-1.17.0-h262b8f6_0.conda + sha256: 461cab3d5650ac6db73a367de5c8eca50363966e862dcf60181d693236b1ae7b + md5: cd14ee5cca2464a425b1dbfc24d90db2 depends: - - __glibc >=2.17,<3.0.a0 - libgcc >=13 - pthread-stubs - xorg-libxau >=1.0.11,<2.0a0 - xorg-libxdmcp + arch: aarch64 + platform: linux license: MIT license_family: MIT - size: 395888 - timestamp: 1727278577118 -- kind: conda - name: libxcb - version: 1.17.0 - build: hdb1d25a_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libxcb-1.17.0-hdb1d25a_0.conda + size: 397493 + timestamp: 1727280745441 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxcb-1.17.0-hdb1d25a_0.conda sha256: bd3816218924b1e43b275863e21a3e13a5db4a6da74cca8e60bc3c213eb62f71 md5: af523aae2eca6dfa1c8eec693f5b9a79 depends: @@ -7400,64 +5952,49 @@ packages: - pthread-stubs - xorg-libxau >=1.0.11,<2.0a0 - xorg-libxdmcp + arch: arm64 + platform: osx license: MIT license_family: MIT size: 323658 timestamp: 1727278733917 -- kind: conda - name: libxcrypt - version: 4.4.36 - build: h31becfc_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda - sha256: 6b46c397644091b8a26a3048636d10b989b1bf266d4be5e9474bf763f828f41f - md5: b4df5d7d4b63579d081fd3a4cf99740e - depends: - - libgcc-ng >=12 - license: LGPL-2.1-or-later - size: 114269 - timestamp: 1702724369203 -- kind: conda - name: libxcrypt - version: 4.4.36 - build: hd590300_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda sha256: 6ae68e0b86423ef188196fff6207ed0c8195dd84273cb5623b85aa08033a410c md5: 5aa797f8787fe7a17d1b0821485b5adc depends: - libgcc-ng >=12 + arch: x86_64 + platform: linux license: LGPL-2.1-or-later size: 100393 timestamp: 1702724383534 -- kind: conda - name: libxml2 - version: 2.13.5 - build: h178c5d8_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.5-h178c5d8_1.conda - sha256: d7af3f25a4cece170502acd38f2dafbea4521f373f46dcb28a37fbe6ac2da544 - md5: 3dc3cff0eca1640a6acbbfab2f78139e +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda + sha256: 6b46c397644091b8a26a3048636d10b989b1bf266d4be5e9474bf763f828f41f + md5: b4df5d7d4b63579d081fd3a4cf99740e depends: - - __osx >=11.0 + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: LGPL-2.1-or-later + size: 114269 + timestamp: 1702724369203 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.5-h8d12d68_1.conda + sha256: c3b05bdc40d27a9249f0bb60f3f71718f94104b8bcd200163a6c9d4ade7aa052 + md5: 1a21e49e190d1ffe58531a81b6e400e1 + depends: + - __glibc >=2.17,<3.0.a0 - icu >=75.1,<76.0a0 + - libgcc >=13 - libiconv >=1.17,<2.0a0 - liblzma >=5.6.3,<6.0a0 - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux license: MIT license_family: MIT - size: 582898 - timestamp: 1733443841584 -- kind: conda - name: libxml2 - version: 2.13.5 - build: h2e0c361_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.5-h2e0c361_1.conda + size: 690589 + timestamp: 1733443667823 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.5-h2e0c361_1.conda sha256: dc0e86d35a836af6e99d18f50c6551fc64c53ed3a3da5a9fea90e78763cf14b4 md5: 63410f85031930cde371dfe0ee89109a depends: @@ -7466,155 +6003,118 @@ packages: - libiconv >=1.17,<2.0a0 - liblzma >=5.6.3,<6.0a0 - libzlib >=1.3.1,<2.0a0 + arch: aarch64 + platform: linux license: MIT license_family: MIT size: 732155 timestamp: 1733443825814 -- kind: conda - name: libxml2 - version: 2.13.5 - build: h8d12d68_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.5-h8d12d68_1.conda - sha256: c3b05bdc40d27a9249f0bb60f3f71718f94104b8bcd200163a6c9d4ade7aa052 - md5: 1a21e49e190d1ffe58531a81b6e400e1 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.5-h178c5d8_1.conda + sha256: d7af3f25a4cece170502acd38f2dafbea4521f373f46dcb28a37fbe6ac2da544 + md5: 3dc3cff0eca1640a6acbbfab2f78139e depends: - - __glibc >=2.17,<3.0.a0 + - __osx >=11.0 - icu >=75.1,<76.0a0 - - libgcc >=13 - libiconv >=1.17,<2.0a0 - liblzma >=5.6.3,<6.0a0 - libzlib >=1.3.1,<2.0a0 + arch: arm64 + platform: osx license: MIT license_family: MIT - size: 690589 - timestamp: 1733443667823 -- kind: conda - name: libzlib - version: 1.3.1 - build: h8359307_2 - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - sha256: ce34669eadaba351cd54910743e6a2261b67009624dbc7daeeafdef93616711b - md5: 369964e85dc26bfe78f41399b366c435 + size: 582898 + timestamp: 1733443841584 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda + sha256: d4bfe88d7cb447768e31650f06257995601f89076080e76df55e3112d4e47dc4 + md5: edb0dca6bc32e4f4789199455a1dbeb8 depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 constrains: - zlib 1.3.1 *_2 + arch: x86_64 + platform: linux license: Zlib license_family: Other - size: 46438 - timestamp: 1727963202283 -- kind: conda - name: libzlib - version: 1.3.1 - build: h86ecc28_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda + size: 60963 + timestamp: 1727963148474 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda sha256: 5a2c1eeef69342e88a98d1d95bff1603727ab1ff4ee0e421522acd8813439b84 md5: 08aad7cbe9f5a6b460d0976076b6ae64 depends: - libgcc >=13 constrains: - zlib 1.3.1 *_2 + arch: aarch64 + platform: linux license: Zlib license_family: Other size: 66657 timestamp: 1727963199518 -- kind: conda - name: libzlib - version: 1.3.1 - build: hb9d3cd8_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - sha256: d4bfe88d7cb447768e31650f06257995601f89076080e76df55e3112d4e47dc4 - md5: edb0dca6bc32e4f4789199455a1dbeb8 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda + sha256: ce34669eadaba351cd54910743e6a2261b67009624dbc7daeeafdef93616711b + md5: 369964e85dc26bfe78f41399b366c435 depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 + - __osx >=11.0 constrains: - zlib 1.3.1 *_2 + arch: arm64 + platform: osx license: Zlib license_family: Other - size: 60963 - timestamp: 1727963148474 -- kind: conda - name: llvm-openmp - version: 19.1.6 - build: hdb05f8b_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.6-hdb05f8b_0.conda + size: 46438 + timestamp: 1727963202283 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.6-hdb05f8b_0.conda sha256: a0f3e9139ab16f0a67b9d2bbabc15b78977168f4a5b5503fed4962dcb9a96102 md5: 34fdeffa0555a1a56f38839415cc066c depends: - __osx >=11.0 constrains: - openmp 19.1.6|19.1.6.* + arch: arm64 + platform: osx license: Apache-2.0 WITH LLVM-exception license_family: APACHE size: 281251 timestamp: 1734520462311 -- kind: conda - name: lz4-c - version: 1.10.0 - build: h286801f_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.10.0-h286801f_1.conda - sha256: 94d3e2a485dab8bdfdd4837880bde3dd0d701e2b97d6134b8806b7c8e69c8652 - md5: 01511afc6cc1909c5303cf31be17b44f - depends: - - __osx >=11.0 - - libcxx >=18 - license: BSD-2-Clause - license_family: BSD - size: 148824 - timestamp: 1733741047892 -- kind: conda - name: lz4-c - version: 1.10.0 - build: h5888daf_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.10.0-h5888daf_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.10.0-h5888daf_1.conda sha256: 47326f811392a5fd3055f0f773036c392d26fdb32e4d8e7a8197eed951489346 md5: 9de5350a85c4a20c685259b889aa6393 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - libstdcxx >=13 + arch: x86_64 + platform: linux license: BSD-2-Clause license_family: BSD size: 167055 timestamp: 1733741040117 -- kind: conda - name: lz4-c - version: 1.10.0 - build: h5ad3122_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.10.0-h5ad3122_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.10.0-h5ad3122_1.conda sha256: 67e55058d275beea76c1882399640c37b5be8be4eb39354c94b610928e9a0573 md5: 6654e411da94011e8fbe004eacb8fe11 depends: - libgcc >=13 - libstdcxx >=13 + arch: aarch64 + platform: linux license: BSD-2-Clause license_family: BSD size: 184953 timestamp: 1733740984533 -- kind: conda - name: markdown-it-py - version: 3.0.0 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: 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/lz4-c-1.10.0-h286801f_1.conda + sha256: 94d3e2a485dab8bdfdd4837880bde3dd0d701e2b97d6134b8806b7c8e69c8652 + md5: 01511afc6cc1909c5303cf31be17b44f + depends: + - __osx >=11.0 + - libcxx >=18 + arch: arm64 + platform: osx + license: BSD-2-Clause + license_family: BSD + size: 148824 + timestamp: 1733741047892 +- conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_1.conda sha256: 0fbacdfb31e55964152b24d5567e9a9996e1e7902fb08eb7d91b5fd6ce60803a md5: fee3164ac23dfca50cfcc8b85ddefb81 depends: @@ -7624,13 +6124,7 @@ packages: license_family: MIT size: 64430 timestamp: 1733250550053 -- kind: conda - name: markupsafe - version: 3.0.2 - build: py312h178313f_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_1.conda sha256: 4a6bf68d2a2b669fecc9a4a009abd1cf8e72c2289522ff00d81b5a6e51ae78f5 md5: eb227c3e0bf58f5bd69c0532b157975b depends: @@ -7640,17 +6134,13 @@ packages: - python_abi 3.12.* *_cp312 constrains: - jinja2 >=3.0.0 + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD size: 24604 timestamp: 1733219911494 -- kind: conda - name: markupsafe - version: 3.0.2 - build: py312h74ce7d3_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.2-py312h74ce7d3_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.2-py312h74ce7d3_1.conda sha256: 1d500158262f30b9c23e37d1c861fe76e127a3926d69b3b38c25d20d3faa6f9f md5: bc8607ab678073a0441808a31465f4fb depends: @@ -7659,17 +6149,13 @@ packages: - python_abi 3.12.* *_cp312 constrains: - jinja2 >=3.0.0 + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD size: 25079 timestamp: 1733220639175 -- kind: conda - name: markupsafe - version: 3.0.2 - build: py312h998013c_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312h998013c_1.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312h998013c_1.conda sha256: 4aa997b244014d3707eeef54ab0ee497d12c0d0d184018960cce096169758283 md5: 46e547061080fddf9cf95a0327e8aba6 depends: @@ -7679,82 +6165,53 @@ packages: - python_abi 3.12.* *_cp312 constrains: - jinja2 >=3.0.0 + arch: arm64 + platform: osx license: BSD-3-Clause license_family: BSD size: 24048 timestamp: 1733219945697 -- kind: conda - name: max - version: 25.1.0.dev2025010817 - build: release - subdir: noarch +- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011022-release.conda noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025010817-release.conda - sha256: 4ce81189e26dd06f188129580db0464f8ee9a081e195dad7082b2fa25fcf738e - md5: b46d770a5f45597ffc008bd224d8e91c - depends: - - max-core ==25.1.0.dev2025010817 release - - max-python >=25.1.0.dev2025010817,<26.0a0 - - mojo-jupyter ==25.1.0.dev2025010817 release - - mblack ==25.1.0.dev2025010817 release + sha256: fae148fb87d78d496ca5596fec75af7ec2c29e60416fcb856be56031cf798901 + md5: 59903ff40dee24c089ca2051858e6422 + depends: + - max-core ==25.1.0.dev2025011022 release + - max-python >=25.1.0.dev2025011022,<26.0a0 + - mojo-jupyter ==25.1.0.dev2025011022 release + - mblack ==25.1.0.dev2025011022 release license: LicenseRef-Modular-Proprietary - size: 9922 - timestamp: 1736357145809 -- kind: conda - name: max-core - version: 25.1.0.dev2025010817 - build: release - subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025010817-release.conda - sha256: 5459a1f6c379b01231649212ca7f5062c49208b5c0b2b17047b55011872727c2 - md5: 5bbb293b5216b098c424e7602823a460 + size: 9917 + timestamp: 1736547478654 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025011022-release.conda + sha256: 237e4007c732a59a619fcb0669f6b55a2a2c7f22bfa7b663ed68fde09ea02f69 + md5: 51be3ab7a5232a42df62bb75e983d05b depends: - - mblack ==25.1.0.dev2025010817 release - arch: x86_64 - platform: linux + - mblack ==25.1.0.dev2025011022 release license: LicenseRef-Modular-Proprietary - size: 247646542 - timestamp: 1736357145807 -- kind: conda - name: max-core - version: 25.1.0.dev2025010817 - build: release - subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025010817-release.conda - sha256: 18715c3fc8071d5eeb9f1893512fe65967919e9900738423958a5cb4f09148da - md5: 4a7b6e800f8fdabf0498727c1bff57d3 + size: 243253667 + timestamp: 1736547516482 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025011022-release.conda + sha256: 7d0b9d872d69308cb7dd70eb68fdf90816a4a33135089eb8ba29877f6be6f89f + md5: 321080690171af0ed4087069d3d3a057 depends: - - mblack ==25.1.0.dev2025010817 release - arch: aarch64 - platform: linux + - mblack ==25.1.0.dev2025011022 release license: LicenseRef-Modular-Proprietary - size: 251608988 - timestamp: 1736357045232 -- kind: conda - name: max-core - version: 25.1.0.dev2025010817 - build: release - subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025010817-release.conda - sha256: 5a23bdc48d6fe2cfe439097b7a0fc0f1bd2b23be081478638ef4b945267d8015 - md5: 1f54b615e5199ac268f123c89cfbabda + size: 247039443 + timestamp: 1736547478652 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025011022-release.conda + sha256: bec13a3ff3e08404e60a3bd9e606168a422effbf9a94180fb17181eaf3686666 + md5: 11895a6758a61c5abc9a29d48f814794 depends: - - mblack ==25.1.0.dev2025010817 release - arch: arm64 - platform: osx + - mblack ==25.1.0.dev2025011022 release license: LicenseRef-Modular-Proprietary - size: 209267317 - timestamp: 1736357278969 -- kind: conda - name: max-python - version: 25.1.0.dev2025010817 - build: 3.12release - subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025010817-3.12release.conda - sha256: 7bd73eb5b2c8f796bb2bf947e68b46f9fa0302c1999905321bd18c453be5d410 - md5: 58d7a8476c07a36c0412fcd983faebfc - depends: - - max-core ==25.1.0.dev2025010817 release + size: 205521630 + timestamp: 1736547263030 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025011022-3.12release.conda + sha256: ea9bb62d5a012c5aa8859bf11e998b1d3f25f0325641812825573f5f2532ac2c + md5: e19353c678746a77f2668ad25f9cb543 + depends: + - max-core ==25.1.0.dev2025011022 release - python 3.12.* - fastapi - httpx @@ -7774,21 +6231,14 @@ packages: - typing_extensions - uvicorn - python_abi 3.12.* *_cp312 - arch: x86_64 - platform: linux license: LicenseRef-Modular-Proprietary - size: 124309678 - timestamp: 1736357145817 -- kind: conda - name: max-python - version: 25.1.0.dev2025010817 - build: 3.12release - subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025010817-3.12release.conda - sha256: 1faa8dea2f87c25b20f467758a46589d2d464d8367fda4fa7fa61c73120b62f9 - md5: be84f3b39ee757dd73d27ac241c37d5a - depends: - - max-core ==25.1.0.dev2025010817 release + size: 124126143 + timestamp: 1736547516492 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025011022-3.12release.conda + sha256: f7848a875d82d2f62341d528c1400f32b9e540bdecef0602089d975d4492316a + md5: 1ea09052240a8e4df4cd85658a770dbe + depends: + - max-core ==25.1.0.dev2025011022 release - python 3.12.* - fastapi - httpx @@ -7808,21 +6258,14 @@ packages: - typing_extensions - uvicorn - python_abi 3.12.* *_cp312 - arch: aarch64 - platform: linux license: LicenseRef-Modular-Proprietary - size: 128047180 - timestamp: 1736357045243 -- kind: conda - name: max-python - version: 25.1.0.dev2025010817 - build: 3.12release - subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025010817-3.12release.conda - sha256: c8b10ed04f57bc9a9e67d447ad97404ea06f3efbc903dced4723f3828c93ab2c - md5: aa8c692e6393c51283419173f7cb69a2 - depends: - - max-core ==25.1.0.dev2025010817 release + size: 127905369 + timestamp: 1736547478664 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025011022-3.12release.conda + sha256: f1da578221c4b7c7eb054da59ad7d3a86a2943191466e95aedf18087d6878412 + md5: dd6127789e9eabee6f42ad50ca81cde1 + depends: + - max-core ==25.1.0.dev2025011022 release - python 3.12.* - fastapi - httpx @@ -7842,20 +6285,13 @@ packages: - typing_extensions - uvicorn - python_abi 3.12.* *_cp312 - arch: arm64 - platform: osx license: LicenseRef-Modular-Proprietary - size: 110680624 - timestamp: 1736357278972 -- kind: conda - name: mblack - version: 25.1.0.dev2025010817 - build: release - subdir: noarch + size: 110533786 + timestamp: 1736547263033 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011022-release.conda noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025010817-release.conda - sha256: 8bc21a826d3edc5a8719deeeadcee5b3fc8fbd83313ce2c7ebc8c620075608e1 - md5: ee664fe2390706d36d2d60b1f2bd69df + sha256: 00a2f2b377584f27171e8b832203b9107f081a5b2aaf4ac3921730fbd2c73594 + md5: b571b4d34e8fa8021413b97e1b1c5efe depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -7865,16 +6301,9 @@ packages: - platformdirs >=2 - python license: MIT - size: 130813 - timestamp: 1736357145814 -- kind: conda - name: mdurl - version: 0.1.2 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda + size: 130807 + timestamp: 1736547478660 +- conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda sha256: 78c1bbe1723449c52b7a9df1af2ee5f005209f67e40b6e1d3c7619127c43b1c7 md5: 592132998493b3ff25fd7479396e8351 depends: @@ -7883,76 +6312,56 @@ packages: license_family: MIT size: 14465 timestamp: 1733255681319 -- kind: conda - name: mojo-jupyter - version: 25.1.0.dev2025010817 - build: release - subdir: noarch +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011022-release.conda noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025010817-release.conda - sha256: a92d02809c43a9a92abc363e69396738f6c9802c12d8827cc008d316cea4e107 - md5: 0533034ac307140f160cf43c5f36b2ed + sha256: 0c619f3bff0c0fa6cdc1a314bcc34b450058779c41676b6673acec10030c5fea + md5: 12e9bb285b21a65333d0031a9225e0f0 depends: - - max-core ==25.1.0.dev2025010817 release + - max-core ==25.1.0.dev2025011022 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22926 - timestamp: 1736357145815 -- kind: conda - name: mpg123 - version: 1.32.9 - build: h65af167_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/mpg123-1.32.9-h65af167_0.conda - sha256: d65d5a00278544639ba4f99887154be00a1f57afb0b34d80b08e5cba40a17072 - md5: cdf140c7690ab0132106d3bc48bce47d - depends: - - libgcc >=13 - - libstdcxx >=13 - license: LGPL-2.1-only - license_family: LGPL - size: 558708 - timestamp: 1730581372400 -- kind: conda - name: mpg123 - version: 1.32.9 - build: hc50e24c_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/mpg123-1.32.9-hc50e24c_0.conda + size: 22934 + timestamp: 1736547478660 +- conda: https://conda.anaconda.org/conda-forge/linux-64/mpg123-1.32.9-hc50e24c_0.conda sha256: 39c4700fb3fbe403a77d8cc27352fa72ba744db487559d5d44bf8411bb4ea200 md5: c7f302fd11eeb0987a6a5e1f3aed6a21 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - libstdcxx >=13 + arch: x86_64 + platform: linux license: LGPL-2.1-only license_family: LGPL size: 491140 timestamp: 1730581373280 -- kind: conda - name: mpg123 - version: 1.32.9 - build: hf642e45_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/mpg123-1.32.9-hf642e45_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/mpg123-1.32.9-h65af167_0.conda + sha256: d65d5a00278544639ba4f99887154be00a1f57afb0b34d80b08e5cba40a17072 + md5: cdf140c7690ab0132106d3bc48bce47d + depends: + - libgcc >=13 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: LGPL-2.1-only + license_family: LGPL + size: 558708 + timestamp: 1730581372400 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/mpg123-1.32.9-hf642e45_0.conda sha256: 070bbbbb96856c325c0b6637638ce535afdc49adbaff306e2238c6032d28dddf md5: d2b4857bdc3b76c36e23236172d09840 depends: - __osx >=11.0 - libcxx >=18 + arch: arm64 + platform: osx license: LGPL-2.1-only license_family: LGPL size: 360712 timestamp: 1730581491116 -- kind: conda - name: multidict - version: 6.1.0 - build: py312h178313f_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py312h178313f_2.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py312h178313f_2.conda sha256: b05bc8252a6e957bf4a776ed5e0e61d1ba88cdc46ccb55890c72cc58b10371f4 md5: 5b5e3267d915a107eca793d52e1b780a depends: @@ -7960,17 +6369,13 @@ packages: - libgcc >=13 - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux license: Apache-2.0 license_family: APACHE size: 61507 timestamp: 1733913288935 -- kind: conda - name: multidict - version: 6.1.0 - build: py312hcc812fe_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/multidict-6.1.0-py312hcc812fe_2.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multidict-6.1.0-py312hcc812fe_2.conda sha256: ff9f767ba4df68e9ac2a380529a83a2fb6abd985beee9eab16608f7e2c3ccc6e md5: dcf3ae213cf0ab40ebcc10452e1ed9fa depends: @@ -7978,17 +6383,13 @@ packages: - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux license: Apache-2.0 license_family: APACHE size: 63077 timestamp: 1733913233032 -- kind: conda - name: multidict - version: 6.1.0 - build: py312hdb8e49c_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/multidict-6.1.0-py312hdb8e49c_1.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/multidict-6.1.0-py312hdb8e49c_1.conda sha256: 482fd09fb798090dc8cce2285fa69f43b1459099122eac2fb112d9b922b9f916 md5: 0048335516fed938e4dd2c457b4c5b9b depends: @@ -7996,35 +6397,13 @@ packages: - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx license: Apache-2.0 license_family: APACHE size: 55968 timestamp: 1729065664275 -- kind: conda - name: multiprocess - version: 0.70.15 - build: py312h02f2b3b_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/multiprocess-0.70.15-py312h02f2b3b_1.conda - sha256: 8041371e3ec3fbc2ca13c71b0180672896e6382e62892d9f6b11a4c5dd675951 - md5: 910ef2223c71902175418d9163152788 - depends: - - dill >=0.3.6 - - python >=3.12.0rc3,<3.13.0a0 - - python >=3.12.0rc3,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - license: BSD-3-Clause - license_family: BSD - size: 335147 - timestamp: 1695459275360 -- kind: conda - name: multiprocess - version: 0.70.15 - build: py312h98912ed_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.15-py312h98912ed_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.15-py312h98912ed_1.conda sha256: bb612a921fafda6375a2204ffebd8811db8dd3b8f25ac9886cc9bcbff7e3664e md5: 5a64b9f44790d9a187a85366dd0ffa8d depends: @@ -8032,17 +6411,13 @@ packages: - libgcc-ng >=12 - python >=3.12.0rc3,<3.13.0a0 - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD size: 335666 timestamp: 1695459025249 -- kind: conda - name: multiprocess - version: 0.70.15 - build: py312hdd3e373_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.15-py312hdd3e373_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.15-py312hdd3e373_1.conda sha256: c53362cdf346f314e111faddc53061e3fd2ece0ba68ca303f5dd109976df158f md5: 173a1692d2b3ddc265dc6afd21a869b3 depends: @@ -8051,18 +6426,27 @@ packages: - python >=3.12.0rc3,<3.13.0a0 - python >=3.12.0rc3,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD size: 336110 timestamp: 1695459137796 -- kind: conda - name: mypy_extensions - version: 1.0.0 - build: pyha770c72_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/multiprocess-0.70.15-py312h02f2b3b_1.conda + sha256: 8041371e3ec3fbc2ca13c71b0180672896e6382e62892d9f6b11a4c5dd675951 + md5: 910ef2223c71902175418d9163152788 + depends: + - dill >=0.3.6 + - python >=3.12.0rc3,<3.13.0a0 + - python >=3.12.0rc3,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 335147 + timestamp: 1695459275360 +- conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda sha256: 1895f47b7d68581a6facde5cb13ab8c2764c2e53a76bd746f8f98910dc4e08fe md5: 29097e7ea634a45cc5386b95cac6568f depends: @@ -8071,57 +6455,40 @@ packages: license_family: MIT size: 10854 timestamp: 1733230986902 -- kind: conda - name: ncurses - version: '6.5' - build: h7bae524_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h7bae524_1.conda - sha256: 27d0b9ff78ad46e1f3a6c96c479ab44beda5f96def88e2fe626e0a49429d8afc - md5: cb2b0ea909b97b3d70cd3921d1445e1a +- conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-he02047a_1.conda + sha256: 6a1d5d8634c1a07913f1c525db6455918cbc589d745fac46d9d6e30340c8731a + md5: 70caf8bb6cf39a0b6b7efc885f51c0fe depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 + - libgcc-ng >=12 + arch: x86_64 + platform: linux license: X11 AND BSD-3-Clause - size: 802321 - timestamp: 1724658775723 -- kind: conda - name: ncurses - version: '6.5' - build: hcccb83c_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-hcccb83c_1.conda + size: 889086 + timestamp: 1724658547447 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-hcccb83c_1.conda sha256: acad4cf1f57b12ee1e42995e6fac646fa06aa026529f05eb8c07eb0a84a47a84 md5: 91d49c85cacd92caa40cf375ef72a25d depends: - libgcc-ng >=12 + arch: aarch64 + platform: linux license: X11 AND BSD-3-Clause size: 924472 timestamp: 1724658573518 -- kind: conda - name: ncurses - version: '6.5' - build: he02047a_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-he02047a_1.conda - sha256: 6a1d5d8634c1a07913f1c525db6455918cbc589d745fac46d9d6e30340c8731a - md5: 70caf8bb6cf39a0b6b7efc885f51c0fe +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h7bae524_1.conda + sha256: 27d0b9ff78ad46e1f3a6c96c479ab44beda5f96def88e2fe626e0a49429d8afc + md5: cb2b0ea909b97b3d70cd3921d1445e1a depends: - - __glibc >=2.17,<3.0.a0 - - libgcc-ng >=12 + - __osx >=11.0 + arch: arm64 + platform: osx license: X11 AND BSD-3-Clause - size: 889086 - timestamp: 1724658547447 -- kind: conda - name: numpy - version: 1.26.4 - build: py312h470d778_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda - sha256: 23767677a7790bee5457d5e75ebd508b9a31c5354216f4310dd1acfca3f7a6f9 - md5: 9cebf5a06cb87d4569cd68df887af476 + size: 802321 + timestamp: 1724658775723 +- conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda + sha256: fe3459c75cf84dcef6ef14efcc4adb0ade66038ddd27cadb894f34f4797687d8 + md5: d8285bea2a350f63fab23bf460221f3f depends: - libblas >=3.9.0,<4.0a0 - libcblas >=3.9.0,<4.0a0 @@ -8129,101 +6496,86 @@ packages: - liblapack >=3.9.0,<4.0a0 - libstdcxx-ng >=12 - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 constrains: - numpy-base <0a0 + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD - size: 6614296 - timestamp: 1707225994762 -- kind: conda - name: numpy - version: 1.26.4 - build: py312h8442bc7_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda - sha256: c8841d6d6f61fd70ca80682efbab6bdb8606dc77c68d8acabfbd7c222054f518 - md5: d83fc83d589e2625a3451c9a7e21047c + size: 7484186 + timestamp: 1707225809722 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda + sha256: 23767677a7790bee5457d5e75ebd508b9a31c5354216f4310dd1acfca3f7a6f9 + md5: 9cebf5a06cb87d4569cd68df887af476 depends: - libblas >=3.9.0,<4.0a0 - libcblas >=3.9.0,<4.0a0 - - libcxx >=16 + - libgcc-ng >=12 - liblapack >=3.9.0,<4.0a0 + - libstdcxx-ng >=12 - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 constrains: - numpy-base <0a0 + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD - size: 6073136 - timestamp: 1707226249608 -- kind: conda - name: numpy - version: 1.26.4 - build: py312heda63a1_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda - sha256: fe3459c75cf84dcef6ef14efcc4adb0ade66038ddd27cadb894f34f4797687d8 - md5: d8285bea2a350f63fab23bf460221f3f + size: 6614296 + timestamp: 1707225994762 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda + sha256: c8841d6d6f61fd70ca80682efbab6bdb8606dc77c68d8acabfbd7c222054f518 + md5: d83fc83d589e2625a3451c9a7e21047c depends: - libblas >=3.9.0,<4.0a0 - libcblas >=3.9.0,<4.0a0 - - libgcc-ng >=12 + - libcxx >=16 - liblapack >=3.9.0,<4.0a0 - - libstdcxx-ng >=12 - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 constrains: - numpy-base <0a0 + arch: arm64 + platform: osx license: BSD-3-Clause license_family: BSD - size: 7484186 - timestamp: 1707225809722 -- kind: conda - name: openjpeg - version: 2.5.3 - build: h3f56577_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/openjpeg-2.5.3-h3f56577_0.conda - sha256: 92d310033e20538e896f4e4b1ea4205eb6604eee7c5c651c4965a0d8d3ca0f1d - md5: 04231368e4af50d11184b50e14250993 + size: 6073136 + timestamp: 1707226249608 +- conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.3-h5fbd93e_0.conda + sha256: 5bee706ea5ba453ed7fd9da7da8380dd88b865c8d30b5aaec14d2b6dd32dbc39 + md5: 9e5816bc95d285c115a3ebc2f8563564 depends: + - __glibc >=2.17,<3.0.a0 - libgcc >=13 - libpng >=1.6.44,<1.7.0a0 - libstdcxx >=13 - libtiff >=4.7.0,<4.8.0a0 - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux license: BSD-2-Clause license_family: BSD - size: 377796 - timestamp: 1733816683252 -- kind: conda - name: openjpeg - version: 2.5.3 - build: h5fbd93e_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.3-h5fbd93e_0.conda - sha256: 5bee706ea5ba453ed7fd9da7da8380dd88b865c8d30b5aaec14d2b6dd32dbc39 - md5: 9e5816bc95d285c115a3ebc2f8563564 + size: 342988 + timestamp: 1733816638720 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openjpeg-2.5.3-h3f56577_0.conda + sha256: 92d310033e20538e896f4e4b1ea4205eb6604eee7c5c651c4965a0d8d3ca0f1d + md5: 04231368e4af50d11184b50e14250993 depends: - - __glibc >=2.17,<3.0.a0 - libgcc >=13 - libpng >=1.6.44,<1.7.0a0 - libstdcxx >=13 - libtiff >=4.7.0,<4.8.0a0 - libzlib >=1.3.1,<2.0a0 + arch: aarch64 + platform: linux license: BSD-2-Clause license_family: BSD - size: 342988 - timestamp: 1733816638720 -- kind: conda - name: openjpeg - version: 2.5.3 - build: h8a3d83b_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/openjpeg-2.5.3-h8a3d83b_0.conda + size: 377796 + timestamp: 1733816683252 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/openjpeg-2.5.3-h8a3d83b_0.conda sha256: 1d59bc72ca7faac06d349c1a280f5cfb8a57ee5896f1e24225a997189d7418c7 md5: 4b71d78648dbcf68ce8bf22bb07ff838 depends: @@ -8232,67 +6584,50 @@ packages: - libpng >=1.6.44,<1.7.0a0 - libtiff >=4.7.0,<4.8.0a0 - libzlib >=1.3.1,<2.0a0 + arch: arm64 + platform: osx license: BSD-2-Clause license_family: BSD size: 319362 timestamp: 1733816781741 -- kind: conda - name: openssl - version: 3.4.0 - build: h7b32b05_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.0-h7b32b05_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.0-h7b32b05_1.conda sha256: f62f6bca4a33ca5109b6d571b052a394d836956d21b25b7ffd03376abf7a481f md5: 4ce6875f75469b2757a65e10a5d05e31 depends: - __glibc >=2.17,<3.0.a0 - ca-certificates - libgcc >=13 + arch: x86_64 + platform: linux license: Apache-2.0 license_family: Apache size: 2937158 timestamp: 1736086387286 -- kind: conda - name: openssl - version: 3.4.0 - build: h81ee809_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.0-h81ee809_1.conda - sha256: 97772762abc70b3a537683ca9fc3ff3d6099eb64e4aba3b9c99e6fce48422d21 - md5: 22f971393637480bda8c679f374d8861 - depends: - - __osx >=11.0 - - ca-certificates - license: Apache-2.0 - license_family: Apache - size: 2936415 - timestamp: 1736086108693 -- kind: conda - name: openssl - version: 3.4.0 - build: hd08dc88_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.0-hd08dc88_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.0-hd08dc88_1.conda sha256: 60d34454b861501d7355f25a7b39fdb5de8d56fca49b5bcbe8b8142b7d82dce4 md5: e21c4767e783a58c373fdb99de6211bf depends: - ca-certificates - libgcc >=13 + arch: aarch64 + platform: linux license: Apache-2.0 license_family: Apache size: 3469279 timestamp: 1736088141230 -- kind: conda - name: opentelemetry-api - version: 1.29.0 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.29.0-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.0-h81ee809_1.conda + sha256: 97772762abc70b3a537683ca9fc3ff3d6099eb64e4aba3b9c99e6fce48422d21 + md5: 22f971393637480bda8c679f374d8861 + depends: + - __osx >=11.0 + - ca-certificates + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 2936415 + timestamp: 1736086108693 +- conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.29.0-pyhd8ed1ab_1.conda sha256: 296280c8ace35c0a1cf72bed1077f248b3af903c3bf92332f1783a207cb5abdb md5: 307b05402c1a382f2f09426492dee8f8 depends: @@ -8303,13 +6638,7 @@ packages: license_family: APACHE size: 44166 timestamp: 1734132973331 -- kind: conda - name: opentelemetry-exporter-otlp-proto-common - version: 1.29.0 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.29.0-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.29.0-pyhd8ed1ab_0.conda sha256: ae9776efe52564e0d6711cfcee7c54439273e57a3999f7f796f66e862f58aae9 md5: 0c02e74d26bce3fec93b227cf7ea6e6b depends: @@ -8320,14 +6649,7 @@ packages: license_family: APACHE size: 18922 timestamp: 1734310457116 -- kind: conda - name: opentelemetry-exporter-otlp-proto-http - version: 1.29.0 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.29.0-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.29.0-pyhd8ed1ab_1.conda sha256: 5d61db9d5b4f91b3932f5f2348920d5b7fdaa09e52c8ea054cf7bf3f21677c9c md5: 223f4e56a29601c887f0dc467034af5b depends: @@ -8343,13 +6665,7 @@ packages: license_family: APACHE size: 17147 timestamp: 1734345675510 -- kind: conda - name: opentelemetry-exporter-prometheus - version: 1.12.0rc1 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-prometheus-1.12.0rc1-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-prometheus-1.12.0rc1-pyhd8ed1ab_0.conda sha256: b8239230dbbdb491401e41b53bd9f21d60551cedef1a8d5807fca1bf9bdd331c md5: 1ddc95052b31147d1e10d818cf519cf5 depends: @@ -8361,13 +6677,7 @@ packages: license_family: APACHE size: 14721 timestamp: 1695214221489 -- kind: conda - name: opentelemetry-proto - version: 1.29.0 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.29.0-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.29.0-pyhd8ed1ab_0.conda sha256: 200a7cb8acc8a0ddd6ef55c5460cec871b6a265929b240a0296c0ccb9c8d9758 md5: e2a6d2ad10b813c7fdc1c64aac376128 depends: @@ -8377,13 +6687,7 @@ packages: license_family: APACHE size: 37235 timestamp: 1734291034372 -- kind: conda - name: opentelemetry-sdk - version: 1.29.0 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.29.0-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.29.0-pyhd8ed1ab_0.conda sha256: 7b36629d8b8be8a019fcfd1518d7b7f862dd25de96f8adcadb93e4fd12cf9bd6 md5: 2a8893f06e6ebda4bfa78875bc923ea4 depends: @@ -8396,13 +6700,7 @@ packages: license_family: APACHE size: 77645 timestamp: 1734297838999 -- kind: conda - name: opentelemetry-semantic-conventions - version: 0.50b0 - build: pyh3cfb1c2_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.50b0-pyh3cfb1c2_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.50b0-pyh3cfb1c2_0.conda sha256: 6526e70368d5bf66ef0eaa51fb800d53782dde71a24bd38f40139919a6f784dc md5: f7111fa4188d646c8108e232d024cb99 depends: @@ -8413,13 +6711,7 @@ packages: license_family: APACHE size: 86084 timestamp: 1734208980168 -- kind: conda - name: opusfile - version: '0.12' - build: h3358134_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/opusfile-0.12-h3358134_2.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/opusfile-0.12-h3358134_2.conda sha256: f4df9df880e405e5c856383f869d5b9d434f78fb7c234c9e7b099ab604fb7fc3 md5: 5931bcae00b98f952696b6bcdd0be34b depends: @@ -8427,34 +6719,13 @@ packages: - libogg >=1.3.4,<1.4.0a0 - libopus >=1.3.1,<2.0a0 - openssl >=3.0.7,<4.0a0 + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD size: 65901 timestamp: 1670387479735 -- kind: conda - name: opusfile - version: '0.12' - build: h5643135_2 - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/opusfile-0.12-h5643135_2.conda - sha256: 108dbee936a8e3c21d2aa5618326343844df8f1fe14067c4dc5a731d7945ecc0 - md5: e34e472ae04beeb642c5e937a2aeeebf - depends: - - libogg >=1.3.4,<1.4.0a0 - - libopus >=1.3.1,<2.0a0 - - openssl >=3.0.7,<4.0a0 - license: BSD-3-Clause - license_family: BSD - size: 80128 - timestamp: 1670387790769 -- kind: conda - name: opusfile - version: '0.12' - build: hf55b2d5_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/opusfile-0.12-hf55b2d5_2.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/opusfile-0.12-hf55b2d5_2.conda sha256: a0ffa8054df68fad5f3533338557c7b985480ee3cf39f0e251ee6b03ff6896cf md5: a9a71d77aec174e4532f91f560bc413b depends: @@ -8462,39 +6733,26 @@ packages: - libogg >=1.3.4,<1.4.0a0 - libopus >=1.3.1,<2.0a0 - openssl >=3.0.7,<4.0a0 + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD size: 91662 timestamp: 1673436651852 -- kind: conda - name: orc - version: 2.0.3 - build: h0ff2369_2 - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/orc-2.0.3-h0ff2369_2.conda - sha256: cca330695f3bdb8c0e46350c29cd4af3345865544e36f1d7c9ba9190ad22f5f4 - md5: 24b1897c0d24afbb70704ba998793b78 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/opusfile-0.12-h5643135_2.conda + sha256: 108dbee936a8e3c21d2aa5618326343844df8f1fe14067c4dc5a731d7945ecc0 + md5: e34e472ae04beeb642c5e937a2aeeebf depends: - - __osx >=11.0 - - libcxx >=18 - - libprotobuf >=5.28.3,<5.28.4.0a0 - - libzlib >=1.3.1,<2.0a0 - - lz4-c >=1.10.0,<1.11.0a0 - - snappy >=1.2.1,<1.3.0a0 - - tzdata - - zstd >=1.5.6,<1.6.0a0 - license: Apache-2.0 - license_family: Apache - size: 438520 - timestamp: 1735630624140 -- kind: conda - name: orc - version: 2.0.3 - build: h12ee42a_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/orc-2.0.3-h12ee42a_2.conda + - libogg >=1.3.4,<1.4.0a0 + - libopus >=1.3.1,<2.0a0 + - openssl >=3.0.7,<4.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 80128 + timestamp: 1670387790769 +- conda: https://conda.anaconda.org/conda-forge/linux-64/orc-2.0.3-h12ee42a_2.conda sha256: dff5cc8023905782c86b3459055f26d4b97890e403b0698477c9fed15d8669cc md5: 4f6f9f3f80354ad185e276c120eac3f0 depends: @@ -8507,17 +6765,13 @@ packages: - snappy >=1.2.1,<1.3.0a0 - tzdata - zstd >=1.5.6,<1.6.0a0 + arch: x86_64 + platform: linux license: Apache-2.0 license_family: Apache size: 1188881 timestamp: 1735630209320 -- kind: conda - name: orc - version: 2.0.3 - build: hdd485aa_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/orc-2.0.3-hdd485aa_2.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/orc-2.0.3-hdd485aa_2.conda sha256: b6c67542352a86cdf143c3066d5cda855b74454a156eedcd8958b494c6a32a83 md5: d19f01b42e5d6a2908b65df435aff42f depends: @@ -8529,18 +6783,31 @@ packages: - snappy >=1.2.1,<1.3.0a0 - tzdata - zstd >=1.5.6,<1.6.0a0 + arch: aarch64 + platform: linux license: Apache-2.0 license_family: Apache size: 1167714 timestamp: 1735630248837 -- kind: conda - name: packaging - version: '24.2' - build: pyhd8ed1ab_2 - build_number: 2 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/orc-2.0.3-h0ff2369_2.conda + sha256: cca330695f3bdb8c0e46350c29cd4af3345865544e36f1d7c9ba9190ad22f5f4 + md5: 24b1897c0d24afbb70704ba998793b78 + depends: + - __osx >=11.0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libzlib >=1.3.1,<2.0a0 + - lz4-c >=1.10.0,<1.11.0a0 + - snappy >=1.2.1,<1.3.0a0 + - tzdata + - zstd >=1.5.6,<1.6.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 438520 + timestamp: 1735630624140 +- conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda sha256: da157b19bcd398b9804c5c52fc000fcb8ab0525bdb9c70f95beaa0bb42f85af1 md5: 3bfed7e6228ebf2f7b9eaa47f1b4e2aa depends: @@ -8549,13 +6816,27 @@ packages: license_family: APACHE size: 60164 timestamp: 1733203368787 -- kind: conda - name: pandas - version: 2.2.3 - build: py312ha2895bd_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/pandas-2.2.3-py312ha2895bd_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.3-py312hf9745cd_1.conda + sha256: ad275a83bfebfa8a8fee9b0569aaf6f513ada6a246b2f5d5b85903d8ca61887e + md5: 8bce4f6caaf8c5448c7ac86d87e26b4b + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + - numpy >=1.19,<3 + - numpy >=1.22.4 + - python >=3.12,<3.13.0a0 + - python-dateutil >=2.8.1 + - python-tzdata >=2022a + - python_abi 3.12.* *_cp312 + - pytz >=2020.1,<2024.2 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 15436913 + timestamp: 1726879054912 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pandas-2.2.3-py312ha2895bd_1.conda sha256: 585e05f95d14afe3df43ded14f86800c70da26b27e27b59de95932f8888af5d3 md5: 80b873ac4fdf36641afa0eaafff3a664 depends: @@ -8569,17 +6850,13 @@ packages: - python-tzdata >=2022a - python_abi 3.12.* *_cp312 - pytz >=2020.1,<2024.2 + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD size: 15159625 timestamp: 1726879151211 -- kind: conda - name: pandas - version: 2.2.3 - build: py312hcd31e36_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.3-py312hcd31e36_1.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.3-py312hcd31e36_1.conda sha256: ff0cb54b5d058c7987b4a0984066e893642d1865a7bb695294b6172e2fcdc457 md5: c68bfa69e6086c381c74e16fd72613a8 depends: @@ -8593,42 +6870,13 @@ packages: - python-tzdata >=2022a - python_abi 3.12.* *_cp312 - pytz >=2020.1,<2024.2 + arch: arm64 + platform: osx license: BSD-3-Clause license_family: BSD size: 14470437 timestamp: 1726878887799 -- kind: conda - name: pandas - version: 2.2.3 - build: py312hf9745cd_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.3-py312hf9745cd_1.conda - sha256: ad275a83bfebfa8a8fee9b0569aaf6f513ada6a246b2f5d5b85903d8ca61887e - md5: 8bce4f6caaf8c5448c7ac86d87e26b4b - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libstdcxx >=13 - - numpy >=1.19,<3 - - numpy >=1.22.4 - - python >=3.12,<3.13.0a0 - - python-dateutil >=2.8.1 - - python-tzdata >=2022a - - python_abi 3.12.* *_cp312 - - pytz >=2020.1,<2024.2 - license: BSD-3-Clause - license_family: BSD - size: 15436913 - timestamp: 1726879054912 -- kind: conda - name: pathspec - version: 0.12.1 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda sha256: 9f64009cdf5b8e529995f18e03665b03f5d07c0b17445b8badef45bde76249ee md5: 617f15191456cc6a13db418a275435e5 depends: @@ -8637,70 +6885,54 @@ packages: license_family: MOZILLA size: 41075 timestamp: 1733233471940 -- kind: conda - name: pcre2 - version: '10.44' - build: h070dd5b_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/pcre2-10.44-h070dd5b_2.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.44-hba22ea6_2.conda + sha256: 1087716b399dab91cc9511d6499036ccdc53eb29a288bebcb19cf465c51d7c0d + md5: df359c09c41cd186fffb93a2d87aa6f5 + depends: + - __glibc >=2.17,<3.0.a0 + - bzip2 >=1.0.8,<2.0a0 + - libgcc-ng >=12 + - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 952308 + timestamp: 1723488734144 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pcre2-10.44-h070dd5b_2.conda sha256: e9f4b912e48514771d477f2ee955f59d4ff4ef799c3d4d16e4d0f335ce91df67 md5: 94022de9682cb1a0bb18a99cbc3541b3 depends: - bzip2 >=1.0.8,<2.0a0 - libgcc-ng >=12 - libzlib >=1.3.1,<2.0a0 + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD size: 884590 timestamp: 1723488793100 -- kind: conda - name: pcre2 - version: '10.44' - build: h297a79d_2 - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/pcre2-10.44-h297a79d_2.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pcre2-10.44-h297a79d_2.conda sha256: 83153c7d8fd99cab33c92ce820aa7bfed0f1c94fc57010cf227b6e3c50cb7796 md5: 147c83e5e44780c7492998acbacddf52 depends: - - __osx >=11.0 - - bzip2 >=1.0.8,<2.0a0 - - libzlib >=1.3.1,<2.0a0 - license: BSD-3-Clause - license_family: BSD - size: 618973 - timestamp: 1723488853807 -- kind: conda - name: pcre2 - version: '10.44' - build: hba22ea6_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.44-hba22ea6_2.conda - sha256: 1087716b399dab91cc9511d6499036ccdc53eb29a288bebcb19cf465c51d7c0d - md5: df359c09c41cd186fffb93a2d87aa6f5 - depends: - - __glibc >=2.17,<3.0.a0 + - __osx >=11.0 - bzip2 >=1.0.8,<2.0a0 - - libgcc-ng >=12 - libzlib >=1.3.1,<2.0a0 + arch: arm64 + platform: osx license: BSD-3-Clause license_family: BSD - size: 952308 - timestamp: 1723488734144 -- kind: conda - name: pillow - version: 11.1.0 - build: py312h50aef2c_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-11.1.0-py312h50aef2c_0.conda - sha256: b29b7c915053e06a7a5b4118760202c572c9c35d23bd6ce8e73270b6a50e50ee - md5: 94d6ba8cd468668a9fb04193b0f4b36e + size: 618973 + timestamp: 1723488853807 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-11.1.0-py312h80c1187_0.conda + sha256: 5c347962202b55ae4d8a463e0555c5c6ca33396266a08284bf1384399894e541 + md5: d3894405f05b2c0f351d5de3ae26fa9c depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 - freetype >=2.12.1,<3.0a0 - lcms2 >=2.16,<3.0a0 + - libgcc >=13 - libjpeg-turbo >=3.0.0,<4.0a0 - libtiff >=4.7.0,<4.8.0a0 - libwebp-base >=1.5.0,<2.0a0 @@ -8708,18 +6940,14 @@ packages: - libzlib >=1.3.1,<2.0a0 - openjpeg >=2.5.3,<3.0a0 - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 - tk >=8.6.13,<8.7.0a0 + arch: x86_64 + platform: linux license: HPND - size: 42852329 - timestamp: 1735930118976 -- kind: conda - name: pillow - version: 11.1.0 - build: py312h719f0cf_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/pillow-11.1.0-py312h719f0cf_0.conda + size: 42749785 + timestamp: 1735929845390 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pillow-11.1.0-py312h719f0cf_0.conda sha256: 7559556ffc44bda777f85c2e5acd6b5756fa5822c0271b329b7b9a3c6bb20349 md5: 77e0ec0a6fc847d317f204aa15b59f6b depends: @@ -8735,22 +6963,18 @@ packages: - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 - tk >=8.6.13,<8.7.0a0 + arch: aarch64 + platform: linux license: HPND size: 41362848 timestamp: 1735932311857 -- kind: conda - name: pillow - version: 11.1.0 - build: py312h80c1187_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/pillow-11.1.0-py312h80c1187_0.conda - sha256: 5c347962202b55ae4d8a463e0555c5c6ca33396266a08284bf1384399894e541 - md5: d3894405f05b2c0f351d5de3ae26fa9c +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-11.1.0-py312h50aef2c_0.conda + sha256: b29b7c915053e06a7a5b4118760202c572c9c35d23bd6ce8e73270b6a50e50ee + md5: 94d6ba8cd468668a9fb04193b0f4b36e depends: - - __glibc >=2.17,<3.0.a0 + - __osx >=11.0 - freetype >=2.12.1,<3.0a0 - lcms2 >=2.16,<3.0a0 - - libgcc >=13 - libjpeg-turbo >=3.0.0,<4.0a0 - libtiff >=4.7.0,<4.8.0a0 - libwebp-base >=1.5.0,<2.0a0 @@ -8758,65 +6982,52 @@ packages: - libzlib >=1.3.1,<2.0a0 - openjpeg >=2.5.3,<3.0a0 - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 - tk >=8.6.13,<8.7.0a0 + arch: arm64 + platform: osx license: HPND - size: 42749785 - timestamp: 1735929845390 -- kind: conda - name: pixman - version: 0.44.2 - build: h29eaf8c_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.44.2-h29eaf8c_0.conda + size: 42852329 + timestamp: 1735930118976 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.44.2-h29eaf8c_0.conda sha256: 747c58db800d5583fee78e76240bf89cbaeedf7ab1ef339c2990602332b9c4be md5: 5e2a7acfa2c24188af39e7944e1b3604 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - libstdcxx >=13 + arch: x86_64 + platform: linux license: MIT license_family: MIT size: 381072 timestamp: 1733698987122 -- kind: conda - name: pixman - version: 0.44.2 - build: h2f9eb0b_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/pixman-0.44.2-h2f9eb0b_0.conda - sha256: 28855d4cb2d9fc9a6bd9196dadbaecd6868ec706394cec2f88824a61ba4b1bc0 - md5: fa8e429fdb9e5b757281f69b8cc4330b - depends: - - __osx >=11.0 - - libcxx >=18 - license: MIT - license_family: MIT - size: 201076 - timestamp: 1733699127167 -- kind: conda - name: pixman - version: 0.44.2 - build: h86a87f0_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/pixman-0.44.2-h86a87f0_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pixman-0.44.2-h86a87f0_0.conda sha256: 289c88d26530e427234adf7a8eb11e762d2beaf3c0a337c1c9887f60480e33e1 md5: 95689fc369832398e82d17c56ff5df8a depends: - libgcc >=13 - libstdcxx >=13 + arch: aarch64 + platform: linux license: MIT license_family: MIT size: 288697 timestamp: 1733700860569 -- kind: conda - name: platformdirs - version: 4.3.6 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pixman-0.44.2-h2f9eb0b_0.conda + sha256: 28855d4cb2d9fc9a6bd9196dadbaecd6868ec706394cec2f88824a61ba4b1bc0 + md5: fa8e429fdb9e5b757281f69b8cc4330b + depends: + - __osx >=11.0 + - libcxx >=18 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 201076 + timestamp: 1733699127167 +- conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda sha256: bb50f6499e8bc1d1a26f17716c97984671121608dc0c3ecd34858112bce59a27 md5: 577852c7e53901ddccc7e6a9959ddebe depends: @@ -8825,111 +7036,81 @@ packages: license_family: MIT size: 20448 timestamp: 1733232756001 -- kind: conda - name: portaudio - version: 19.6.0 - build: h13dd4ca_9 - build_number: 9 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/portaudio-19.6.0-h13dd4ca_9.conda - sha256: 5ff2b55d685c29dfe632ef856796a4b862305088543d4982f0b807e8d9bb756e - md5: d325d46394b6c46d15718c855fb20b4a +- conda: https://conda.anaconda.org/conda-forge/linux-64/portaudio-19.6.0-h7c63dc7_9.conda + sha256: c09ae032d0303abfea34c0957834538b48133b0431283852741ed3e0f66fdb36 + md5: 893f2c33af6b03cfd04820a8c31f5798 depends: - - libcxx >=15.0.7 + - alsa-lib >=1.2.10,<1.3.0.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux license: MIT license_family: MIT - size: 78863 - timestamp: 1693868663440 -- kind: conda - name: portaudio - version: 19.6.0 - build: h5c6c0ed_9 - build_number: 9 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/portaudio-19.6.0-h5c6c0ed_9.conda + size: 115512 + timestamp: 1693868383 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/portaudio-19.6.0-h5c6c0ed_9.conda sha256: a73e31c5fe9d717cd42470b394018f4e48eed4a439b9371d2c6d380c86aed591 md5: ab049f8223bccc6f621975beaa75c624 depends: - alsa-lib >=1.2.10,<1.3.0.0a0 - libgcc-ng >=12 - libstdcxx-ng >=12 + arch: aarch64 + platform: linux license: MIT license_family: MIT size: 118203 timestamp: 1693868376750 -- kind: conda - name: portaudio - version: 19.6.0 - build: h7c63dc7_9 - build_number: 9 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/portaudio-19.6.0-h7c63dc7_9.conda - sha256: c09ae032d0303abfea34c0957834538b48133b0431283852741ed3e0f66fdb36 - md5: 893f2c33af6b03cfd04820a8c31f5798 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/portaudio-19.6.0-h13dd4ca_9.conda + sha256: 5ff2b55d685c29dfe632ef856796a4b862305088543d4982f0b807e8d9bb756e + md5: d325d46394b6c46d15718c855fb20b4a depends: - - alsa-lib >=1.2.10,<1.3.0.0a0 - - libgcc-ng >=12 - - libstdcxx-ng >=12 + - libcxx >=15.0.7 + arch: arm64 + platform: osx license: MIT license_family: MIT - size: 115512 - timestamp: 1693868383 -- kind: conda - name: portmidi - version: 2.0.4 - build: h13dd4ca_2 - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/portmidi-2.0.4-h13dd4ca_2.conda - sha256: b948bea6ef3203d049997ca348ba0d751a3d891579388e53d323693b20896af6 - md5: fe77195a950275fe63e560b1b855e818 + size: 78863 + timestamp: 1693868663440 +- conda: https://conda.anaconda.org/conda-forge/linux-64/portmidi-2.0.4-h7c63dc7_2.conda + sha256: f4e1245409e97b5b46e655ba301da5e9bc1d6ae64f5ae46004583dae31214868 + md5: 5b2518aa80f149ee6881f5ad959f5d59 depends: - - libcxx >=15.0.7 + - alsa-lib >=1.2.10,<1.3.0.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux license: MIT license_family: MIT - size: 47319 - timestamp: 1693882007724 -- kind: conda - name: portmidi - version: 2.0.4 - build: h5c6c0ed_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/portmidi-2.0.4-h5c6c0ed_2.conda + size: 43765 + timestamp: 1693881734349 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/portmidi-2.0.4-h5c6c0ed_2.conda sha256: 64ed7bdebe45af7987f65402506fa5ad6f9fd339a93f8fe7a57c6bcce497022f md5: 8ee28835da08f915cba9317fccb6396d depends: - alsa-lib >=1.2.10,<1.3.0.0a0 - libgcc-ng >=12 - libstdcxx-ng >=12 + arch: aarch64 + platform: linux license: MIT license_family: MIT size: 45266 timestamp: 1693882668197 -- kind: conda - name: portmidi - version: 2.0.4 - build: h7c63dc7_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/portmidi-2.0.4-h7c63dc7_2.conda - sha256: f4e1245409e97b5b46e655ba301da5e9bc1d6ae64f5ae46004583dae31214868 - md5: 5b2518aa80f149ee6881f5ad959f5d59 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/portmidi-2.0.4-h13dd4ca_2.conda + sha256: b948bea6ef3203d049997ca348ba0d751a3d891579388e53d323693b20896af6 + md5: fe77195a950275fe63e560b1b855e818 depends: - - alsa-lib >=1.2.10,<1.3.0.0a0 - - libgcc-ng >=12 - - libstdcxx-ng >=12 + - libcxx >=15.0.7 + arch: arm64 + platform: osx license: MIT license_family: MIT - size: 43765 - timestamp: 1693881734349 -- kind: conda - name: prometheus_client - version: 0.21.1 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda + size: 47319 + timestamp: 1693882007724 +- conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda sha256: bc8f00d5155deb7b47702cb8370f233935704100dbc23e30747c161d1b6cf3ab md5: 3e01e386307acc60b2f89af0b2e161aa depends: @@ -8938,12 +7119,7 @@ packages: license_family: Apache size: 49002 timestamp: 1733327434163 -- kind: conda - name: propcache - version: 0.2.1 - build: py312h66e93f0_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.1-py312h66e93f0_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.1-py312h66e93f0_0.conda sha256: 5771311fb5ded614ca349c92579a0b752af55a310f40b71fc533e20625965391 md5: 55d5742a696d7da1c1262e99b6217ceb depends: @@ -8951,16 +7127,13 @@ packages: - libgcc >=13 - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux license: Apache-2.0 license_family: APACHE size: 52747 timestamp: 1733391916349 -- kind: conda - name: propcache - version: 0.2.1 - build: py312hb2c0f52_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.2.1-py312hb2c0f52_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.2.1-py312hb2c0f52_0.conda sha256: c7f62c11ed929ccf1f3d4a1e200e28be01e8d0e0786bf8f76c5893f2ea681e1b md5: 50ab8953e7ff1333a4a47cda32e68123 depends: @@ -8968,16 +7141,13 @@ packages: - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux license: Apache-2.0 license_family: APACHE size: 52484 timestamp: 1733391993461 -- kind: conda - name: propcache - version: 0.2.1 - build: py312hea69d52_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.1-py312hea69d52_0.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.1-py312hea69d52_0.conda sha256: f8c266c494aa1e4cfb8bf0b6fca060044b2f3d65afe4c5062ebeea382e77aa6d md5: c84e3dd97fe25a17322c4a0f670c6750 depends: @@ -8985,16 +7155,13 @@ packages: - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx license: Apache-2.0 license_family: APACHE size: 48225 timestamp: 1733392308901 -- kind: conda - name: protobuf - version: 5.28.3 - build: py312h2ec8cdc_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/protobuf-5.28.3-py312h2ec8cdc_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/protobuf-5.28.3-py312h2ec8cdc_0.conda sha256: acb2e0ee948e3941f8ed191cb77f654e06538638aed8ccd71cbc78a15242ebbb md5: 9d7e427d159c1b2d516cc047ff177c48 depends: @@ -9005,16 +7172,13 @@ packages: - python_abi 3.12.* *_cp312 constrains: - libprotobuf 5.28.3 + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD size: 464794 timestamp: 1731366525051 -- kind: conda - name: protobuf - version: 5.28.3 - build: py312h6f74592_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/protobuf-5.28.3-py312h6f74592_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/protobuf-5.28.3-py312h6f74592_0.conda sha256: 9c575d5035c7ecb114ab9e17906c0a54087d9598dd6a2104c02fe33f0a29dd46 md5: 06513608c94fb1c1b17136ace77063a9 depends: @@ -9025,16 +7189,13 @@ packages: - python_abi 3.12.* *_cp312 constrains: - libprotobuf 5.28.3 + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD size: 473242 timestamp: 1731366577844 -- kind: conda - name: protobuf - version: 5.28.3 - build: py312hd8f9ff3_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/protobuf-5.28.3-py312hd8f9ff3_0.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/protobuf-5.28.3-py312hd8f9ff3_0.conda sha256: 9d572a97419bdace14d7c7cc8cc8c4bf2dcb22b56965dac87a27fbdb5061b926 md5: 5afbe52a59f04dd1fe566d0d17590d7e depends: @@ -9045,64 +7206,49 @@ packages: - python_abi 3.12.* *_cp312 constrains: - libprotobuf 5.28.3 + arch: arm64 + platform: osx license: BSD-3-Clause license_family: BSD size: 448803 timestamp: 1731367010746 -- kind: conda - name: pthread-stubs - version: '0.4' - build: h86ecc28_1002 - build_number: 1002 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/pthread-stubs-0.4-h86ecc28_1002.conda - sha256: 977dfb0cb3935d748521dd80262fe7169ab82920afd38ed14b7fee2ea5ec01ba - md5: bb5a90c93e3bac3d5690acf76b4a6386 - depends: - - libgcc >=13 - license: MIT - license_family: MIT - size: 8342 - timestamp: 1726803319942 -- kind: conda - name: pthread-stubs - version: '0.4' - build: hb9d3cd8_1002 - build_number: 1002 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda sha256: 9c88f8c64590e9567c6c80823f0328e58d3b1efb0e1c539c0315ceca764e0973 md5: b3c17d95b5a10c6e64a21fa17573e70e depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 + arch: x86_64 + platform: linux license: MIT license_family: MIT size: 8252 timestamp: 1726802366959 -- kind: conda - name: pthread-stubs - version: '0.4' - build: hd74edd7_1002 - build_number: 1002 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/pthread-stubs-0.4-hd74edd7_1002.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pthread-stubs-0.4-h86ecc28_1002.conda + sha256: 977dfb0cb3935d748521dd80262fe7169ab82920afd38ed14b7fee2ea5ec01ba + md5: bb5a90c93e3bac3d5690acf76b4a6386 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 8342 + timestamp: 1726803319942 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pthread-stubs-0.4-hd74edd7_1002.conda sha256: 8ed65e17fbb0ca944bfb8093b60086e3f9dd678c3448b5de212017394c247ee3 md5: 415816daf82e0b23a736a069a75e9da7 depends: - __osx >=11.0 + arch: arm64 + platform: osx license: MIT license_family: MIT size: 8381 timestamp: 1726802424786 -- kind: conda - name: pulseaudio-client - version: '17.0' - build: h729494f_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/pulseaudio-client-17.0-h729494f_0.conda - sha256: 209eac3123ee2c84a35401626941c4aa64e04e2c9854084ddeba6432c6078a41 - md5: f35f57712d5c2abca98c85a51a408bc1 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pulseaudio-client-17.0-hb77b528_0.conda + sha256: b27c0c8671bd95c205a61aeeac807c095b60bc76eb5021863f919036d7a964fc + md5: 07f45f1be1c25345faddb8db0de8039b depends: - dbus >=1.13.6,<2.0a0 - libgcc-ng >=12 @@ -9111,18 +7257,15 @@ packages: - libsystemd0 >=255 constrains: - pulseaudio 17.0 *_0 + arch: x86_64 + platform: linux license: LGPL-2.1-or-later license_family: LGPL - size: 766184 - timestamp: 1705690164726 -- kind: conda - name: pulseaudio-client - version: '17.0' - build: hb77b528_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/pulseaudio-client-17.0-hb77b528_0.conda - sha256: b27c0c8671bd95c205a61aeeac807c095b60bc76eb5021863f919036d7a964fc - md5: 07f45f1be1c25345faddb8db0de8039b + size: 757633 + timestamp: 1705690081905 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pulseaudio-client-17.0-h729494f_0.conda + sha256: 209eac3123ee2c84a35401626941c4aa64e04e2c9854084ddeba6432c6078a41 + md5: f35f57712d5c2abca98c85a51a408bc1 depends: - dbus >=1.13.6,<2.0a0 - libgcc-ng >=12 @@ -9131,18 +7274,15 @@ packages: - libsystemd0 >=255 constrains: - pulseaudio 17.0 *_0 + arch: aarch64 + platform: linux license: LGPL-2.1-or-later license_family: LGPL - size: 757633 - timestamp: 1705690081905 -- kind: conda - name: pyarrow - version: 18.1.0 - build: py312h1f38498_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-18.1.0-py312h1f38498_0.conda - sha256: 06c0e208d5bf15051874097366c8e8e5db176dffba38526f227a34e80cc8e9bc - md5: 3710616b880b31d0c8afd8ae7e12392a + size: 766184 + timestamp: 1705690164726 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-18.1.0-py312h7900ff3_0.conda + sha256: 46a61c29375d3bf1933eae61c7861394c168898915d59fc99bf05e46de2ff5ad + md5: ac65b70df28687c6af4270923c020bdd depends: - libarrow-acero 18.1.0.* - libarrow-dataset 18.1.0.* @@ -9151,18 +7291,15 @@ packages: - pyarrow-core 18.1.0 *_0_* - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux license: Apache-2.0 license_family: APACHE - size: 25375 - timestamp: 1732610892198 -- kind: conda - name: pyarrow - version: 18.1.0 - build: py312h7900ff3_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-18.1.0-py312h7900ff3_0.conda - sha256: 46a61c29375d3bf1933eae61c7861394c168898915d59fc99bf05e46de2ff5ad - md5: ac65b70df28687c6af4270923c020bdd + size: 25213 + timestamp: 1732610785600 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-18.1.0-py312h8025657_0.conda + sha256: 49db959887cb89b44053a44a98d0f35644fc0b2003587492f02b56046de0b60a + md5: 9bb7d32e96a5dcb5ea7fd90a11a83656 depends: - libarrow-acero 18.1.0.* - libarrow-dataset 18.1.0.* @@ -9171,18 +7308,15 @@ packages: - pyarrow-core 18.1.0 *_0_* - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux license: Apache-2.0 license_family: APACHE - size: 25213 - timestamp: 1732610785600 -- kind: conda - name: pyarrow - version: 18.1.0 - build: py312h8025657_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-18.1.0-py312h8025657_0.conda - sha256: 49db959887cb89b44053a44a98d0f35644fc0b2003587492f02b56046de0b60a - md5: 9bb7d32e96a5dcb5ea7fd90a11a83656 + size: 25374 + timestamp: 1732611006864 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-18.1.0-py312h1f38498_0.conda + sha256: 06c0e208d5bf15051874097366c8e8e5db176dffba38526f227a34e80cc8e9bc + md5: 3710616b880b31d0c8afd8ae7e12392a depends: - libarrow-acero 18.1.0.* - libarrow-dataset 18.1.0.* @@ -9191,16 +7325,13 @@ packages: - pyarrow-core 18.1.0 *_0_* - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx license: Apache-2.0 license_family: APACHE - size: 25374 - timestamp: 1732611006864 -- kind: conda - name: pyarrow-core - version: 18.1.0 - build: py312h01725c0_0_cpu - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-18.1.0-py312h01725c0_0_cpu.conda + size: 25375 + timestamp: 1732610892198 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-18.1.0-py312h01725c0_0_cpu.conda sha256: 948a4161c56f846d374a3721a657e58ddbc992a29b3b3e7a6411975c30361d94 md5: ee80934a6c280ff8635f8db5dec11e04 depends: @@ -9214,16 +7345,13 @@ packages: constrains: - numpy >=1.21,<3 - apache-arrow-proc =*=cpu + arch: x86_64 + platform: linux license: Apache-2.0 license_family: APACHE size: 4612916 timestamp: 1732610377259 -- kind: conda - name: pyarrow-core - version: 18.1.0 - build: py312h66f7834_0_cpu - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-18.1.0-py312h66f7834_0_cpu.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-18.1.0-py312h66f7834_0_cpu.conda sha256: e7eb062145be554c23dfefa0ebe8c5f6ae8c59635117a6921e66403d6addcda3 md5: 3390c8b8f57e85506c92a37cf750bdd7 depends: @@ -9237,16 +7365,13 @@ packages: constrains: - numpy >=1.21,<3 - apache-arrow-proc =*=cpu + arch: aarch64 + platform: linux license: Apache-2.0 license_family: APACHE size: 4406662 timestamp: 1732610939832 -- kind: conda - name: pyarrow-core - version: 18.1.0 - build: py312hc40f475_0_cpu - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-18.1.0-py312hc40f475_0_cpu.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-18.1.0-py312hc40f475_0_cpu.conda sha256: 063eb168a29d4ce6d9ed865e9e1ad3b6e141712189955a79e06b24ddc0cbbc9c md5: 9859e7c4b94bbf69772dbf0511101cec depends: @@ -9260,18 +7385,13 @@ packages: constrains: - numpy >=1.21,<3 - apache-arrow-proc =*=cpu + arch: arm64 + platform: osx license: Apache-2.0 license_family: APACHE size: 3909116 timestamp: 1732610863261 -- kind: conda - name: pycparser - version: '2.22' - build: pyh29332c3_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda sha256: 79db7928d13fab2d892592223d7570f5061c192f27b9febd1a418427b719acc6 md5: 12c566707c80111f9799308d9e265aef depends: @@ -9281,15 +7401,9 @@ packages: license_family: BSD size: 110100 timestamp: 1733195786147 -- kind: conda - name: pydantic - version: 2.10.4 - build: pyh3cfb1c2_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.4-pyh3cfb1c2_0.conda - sha256: e68400714532a33f34b44ddaee3e27e8dd6c83c3f31c7892ec10b84d13aa8b59 - md5: 93bccf4d7a58c9140d59491de21e044b +- conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.5-pyh3cfb1c2_0.conda + sha256: 0f32c30ddc610cd1113335d8b4f311f20f4d72754b7c1a5d0d9493f597cf11d2 + md5: e8ea30925c8271c4128375810d7d3d7a depends: - annotated-types >=0.6.0 - pydantic-core 2.27.2 @@ -9298,14 +7412,9 @@ packages: - typing_extensions >=4.12.2 license: MIT license_family: MIT - size: 296557 - timestamp: 1734609427697 -- kind: conda - name: pydantic-core - version: 2.27.2 - build: py312h12e396e_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.27.2-py312h12e396e_0.conda + size: 296805 + timestamp: 1736458364196 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.27.2-py312h12e396e_0.conda sha256: 81602a4592ad2ac1a1cb57372fd25214e63b1c477d5818b0c21cde0f1f85c001 md5: bae01b2563030c085f5158c518b84e86 depends: @@ -9316,16 +7425,13 @@ packages: - typing-extensions >=4.6.0,!=4.7.0 constrains: - __glibc >=2.17 + arch: x86_64 + platform: linux license: MIT license_family: MIT size: 1641402 timestamp: 1734571789895 -- kind: conda - name: pydantic-core - version: 2.27.2 - build: py312h8cbf658_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/pydantic-core-2.27.2-py312h8cbf658_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pydantic-core-2.27.2-py312h8cbf658_0.conda sha256: 623e0f3846f15d035ce7ab7ae445fc8d9e547b6684ab55858b6f44510d24b097 md5: 9677f6ab4bf27ba3c2aee70d08c7b27c depends: @@ -9336,16 +7442,13 @@ packages: - typing-extensions >=4.6.0,!=4.7.0 constrains: - __glibc >=2.17 + arch: aarch64 + platform: linux license: MIT license_family: MIT size: 1505076 timestamp: 1734571966615 -- kind: conda - name: pydantic-core - version: 2.27.2 - build: py312hcd83bfe_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.27.2-py312hcd83bfe_0.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.27.2-py312hcd83bfe_0.conda sha256: cfa7201f890d5d08ce29ff70e65a96787d5793a1718776733666b44bbd4a1205 md5: dcb307e02f17d38c6e1cbfbf8c602852 depends: @@ -9356,17 +7459,13 @@ packages: - typing-extensions >=4.6.0,!=4.7.0 constrains: - __osx >=11.0 + arch: arm64 + platform: osx license: MIT license_family: MIT size: 1593461 timestamp: 1734571986644 -- kind: conda - name: pydantic-settings - version: 2.7.1 - build: pyh3cfb1c2_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.7.1-pyh3cfb1c2_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.7.1-pyh3cfb1c2_0.conda sha256: 082fb1ec29917d2c9ed6a862cb8eb9beb88c208ea62c9fef1aeb5f4f3e0e0b06 md5: d71d76b62bed332b037d7adfc0f3989a depends: @@ -9377,12 +7476,7 @@ packages: license_family: MIT size: 31822 timestamp: 1735650532951 -- kind: conda - name: pygame - version: 2.6.1 - build: py312h4fcb14b_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/pygame-2.6.1-py312h4fcb14b_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/pygame-2.6.1-py312h4fcb14b_0.conda sha256: 7a5582c3eed17d0223cbd79dfb25ebae1ec7f8b06eb550fb65e163adb5f1c75b md5: 80c4be6aac23ad6dfc2aeca1b1ab7d1f depends: @@ -9402,25 +7496,22 @@ packages: - sdl2_image >=2.8.2,<3.0a0 - sdl2_mixer >=2.6.3,<3.0a0 - sdl2_ttf >=2.22.0,<3.0a0 + arch: x86_64 + platform: linux license: LGPL-2.1-only size: 2984508 timestamp: 1727636750824 -- kind: conda - name: pygame - version: 2.6.1 - build: py312hb14fe3b_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/pygame-2.6.1-py312hb14fe3b_0.conda - sha256: 78b91e7b4cee736829f96ec8445674d03b60c03cc51da6f74cac1a14286fe686 - md5: 3a2a4db46a57a51f36f4d79f9f9b6c97 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pygame-2.6.1-py312hb2c8110_0.conda + sha256: 347dc650cbcb5b25f632ae62c87357c15db79849ff582887f6910ae245dc7d4f + md5: f4a1a0e1e2a435699366317ffeabd1bc depends: - - __osx >=11.0 - fontconfig >=2.14.2,<3.0a0 - fonts-conda-ecosystem - freetype >=2.12.1,<3.0a0 - - libcxx >=17 + - libgcc >=13 - libjpeg-turbo >=3.0.0,<4.0a0 - libpng >=1.6.44,<1.7.0a0 + - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - portmidi >=2.0.4,<3.0a0 - python >=3.12,<3.13.0a0 @@ -9430,25 +7521,22 @@ packages: - sdl2_image >=2.8.2,<3.0a0 - sdl2_mixer >=2.6.3,<3.0a0 - sdl2_ttf >=2.22.0,<3.0a0 + arch: aarch64 + platform: linux license: LGPL-2.1-only - size: 2932509 - timestamp: 1727636775263 -- kind: conda - name: pygame - version: 2.6.1 - build: py312hb2c8110_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/pygame-2.6.1-py312hb2c8110_0.conda - sha256: 347dc650cbcb5b25f632ae62c87357c15db79849ff582887f6910ae245dc7d4f - md5: f4a1a0e1e2a435699366317ffeabd1bc + size: 2979554 + timestamp: 1727636776938 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pygame-2.6.1-py312hb14fe3b_0.conda + sha256: 78b91e7b4cee736829f96ec8445674d03b60c03cc51da6f74cac1a14286fe686 + md5: 3a2a4db46a57a51f36f4d79f9f9b6c97 depends: + - __osx >=11.0 - fontconfig >=2.14.2,<3.0a0 - fonts-conda-ecosystem - freetype >=2.12.1,<3.0a0 - - libgcc >=13 + - libcxx >=17 - libjpeg-turbo >=3.0.0,<4.0a0 - libpng >=1.6.44,<1.7.0a0 - - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - portmidi >=2.0.4,<3.0a0 - python >=3.12,<3.13.0a0 @@ -9458,16 +7546,12 @@ packages: - sdl2_image >=2.8.2,<3.0a0 - sdl2_mixer >=2.6.3,<3.0a0 - sdl2_ttf >=2.22.0,<3.0a0 + arch: arm64 + platform: osx license: LGPL-2.1-only - size: 2979554 - timestamp: 1727636776938 -- kind: conda - name: pygments - version: 2.19.1 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda + size: 2932509 + timestamp: 1727636775263 +- conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda sha256: 28a3e3161390a9d23bc02b4419448f8d27679d9e2c250e29849e37749c8de86b md5: 232fb4577b6687b2d503ef8e254270c9 depends: @@ -9476,29 +7560,7 @@ packages: license_family: BSD size: 888600 timestamp: 1736243563082 -- kind: conda - name: pyinstrument - version: 5.0.0 - build: py312h0bf5046_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/pyinstrument-5.0.0-py312h0bf5046_0.conda - sha256: 6879d52fb0ec2258e2850476786a652c394220d53883c53691ed5390183ae925 - md5: f0e4a98d54477083ddc9d2f33507f848 - depends: - - __osx >=11.0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - license: BSD-3-Clause - license_family: BSD - size: 181512 - timestamp: 1728714205508 -- kind: conda - name: pyinstrument - version: 5.0.0 - build: py312h66e93f0_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/pyinstrument-5.0.0-py312h66e93f0_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyinstrument-5.0.0-py312h66e93f0_0.conda sha256: 8a006507a4003fb01eeee2f9ba79f994478694766ea3b445273da5c11cf8e763 md5: 798f42d9bfdf125dc80ffbec0e96e0b6 depends: @@ -9506,16 +7568,13 @@ packages: - libgcc >=13 - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD size: 182021 timestamp: 1728714164706 -- kind: conda - name: pyinstrument - version: 5.0.0 - build: py312hb2c0f52_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/pyinstrument-5.0.0-py312hb2c0f52_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyinstrument-5.0.0-py312hb2c0f52_0.conda sha256: 7967b94b8f0ff75847302444e9c43ac11a391d74da24cb14fba1049fac9e5ba9 md5: 5274663cb05dfbe316db50af6da4389f depends: @@ -9523,18 +7582,27 @@ packages: - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD size: 183141 timestamp: 1728714267954 -- kind: conda - name: pysocks - version: 1.7.1 - build: pyha55dd90_7 - build_number: 7 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyinstrument-5.0.0-py312h0bf5046_0.conda + sha256: 6879d52fb0ec2258e2850476786a652c394220d53883c53691ed5390183ae925 + md5: f0e4a98d54477083ddc9d2f33507f848 + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 181512 + timestamp: 1728714205508 +- conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda sha256: ba3b032fa52709ce0d9fd388f63d330a026754587a2f461117cac9ab73d8d0d8 md5: 461219d1a5bd61342293efa2c0c90eac depends: @@ -9544,18 +7612,14 @@ packages: license_family: BSD size: 21085 timestamp: 1733217331982 -- kind: conda - name: python - version: 3.12.8 - build: h1683364_1_cpython +- conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.8-h9e4cc4f_1_cpython.conda build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.8-h1683364_1_cpython.conda - sha256: 85573582d5b0f79923fed0a8365d3d74d21eee9f0a5fa1b9345f191e006363ab - md5: 09ec612ea05370989eaa3d81abf0f369 + sha256: 3f0e0518c992d8ccfe62b189125721309836fe48a010dc424240583e157f9ff0 + md5: 7fd2fd79436d9b473812f14e86746844 depends: + - __glibc >=2.17,<3.0.a0 - bzip2 >=1.0.8,<2.0a0 - - ld_impl_linux-aarch64 >=2.36.1 + - ld_impl_linux-64 >=2.36.1 - libexpat >=2.6.4,<3.0a0 - libffi >=3.4,<4.0a0 - libgcc >=13 @@ -9572,22 +7636,18 @@ packages: - tzdata constrains: - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux license: Python-2.0 - size: 13760816 - timestamp: 1733407890896 -- kind: conda - name: python - version: 3.12.8 - build: h9e4cc4f_1_cpython + size: 31565686 + timestamp: 1733410597922 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.8-h1683364_1_cpython.conda build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.8-h9e4cc4f_1_cpython.conda - sha256: 3f0e0518c992d8ccfe62b189125721309836fe48a010dc424240583e157f9ff0 - md5: 7fd2fd79436d9b473812f14e86746844 + sha256: 85573582d5b0f79923fed0a8365d3d74d21eee9f0a5fa1b9345f191e006363ab + md5: 09ec612ea05370989eaa3d81abf0f369 depends: - - __glibc >=2.17,<3.0.a0 - bzip2 >=1.0.8,<2.0a0 - - ld_impl_linux-64 >=2.36.1 + - ld_impl_linux-aarch64 >=2.36.1 - libexpat >=2.6.4,<3.0a0 - libffi >=3.4,<4.0a0 - libgcc >=13 @@ -9604,16 +7664,13 @@ packages: - tzdata constrains: - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux license: Python-2.0 - size: 31565686 - timestamp: 1733410597922 -- kind: conda - name: python - version: 3.12.8 - build: hc22306f_1_cpython + size: 13760816 + timestamp: 1733407890896 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.8-hc22306f_1_cpython.conda build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.8-hc22306f_1_cpython.conda sha256: 7586a711b1b08a9df8864e26efdc06980bdfb0e18d5ac4651d0fee30a8d3e3a0 md5: 54ca5b5d92ef3a3ba61e195ee882a518 depends: @@ -9631,17 +7688,12 @@ packages: - tzdata constrains: - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx license: Python-2.0 size: 12998673 timestamp: 1733408900971 -- kind: conda - name: python-dateutil - version: 2.9.0.post0 - build: pyhff2d567_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda sha256: a50052536f1ef8516ed11a844f9413661829aa083304dc624c5925298d078d79 md5: 5ba79d7c71f03c678c8ead841f347d6e depends: @@ -9651,14 +7703,7 @@ packages: license_family: APACHE size: 222505 timestamp: 1733215763718 -- kind: conda - name: python-dotenv - version: 1.0.1 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda sha256: 99713f6b534fef94995c6c16fd21d59f3548784e9111775d692bdc7c44678f02 md5: e5c6ed218664802d305e79cc2d4491de depends: @@ -9667,13 +7712,7 @@ packages: license_family: BSD size: 24215 timestamp: 1733243277223 -- kind: conda - name: python-json-logger - version: 2.0.7 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda sha256: 4790787fe1f4e8da616edca4acf6a4f8ed4e7c6967aa31b920208fc8f95efcca md5: a61bf9ec79426938ff785eb69dbb1960 depends: @@ -9682,13 +7721,7 @@ packages: license_family: BSD size: 13383 timestamp: 1677079727691 -- kind: conda - name: python-multipart - version: 0.0.20 - build: pyhff2d567_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.20-pyhff2d567_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.20-pyhff2d567_0.conda sha256: 1b03678d145b1675b757cba165a0d9803885807792f7eb4495e48a38858c3cca md5: a28c984e0429aff3ab7386f7de56de6f depends: @@ -9697,14 +7730,7 @@ packages: license_family: Apache size: 27913 timestamp: 1734420869885 -- kind: conda - name: python-tzdata - version: '2024.2' - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_1.conda sha256: 57c9a02ec25926fb48edca59b9ede107823e5d5c473b94a0e05cc0b9a193a642 md5: c0def296b2f6d2dd7b030c2a7f66bb1f depends: @@ -9713,32 +7739,22 @@ packages: license_family: APACHE size: 142235 timestamp: 1733235414217 -- kind: conda - name: python-xxhash - version: 3.5.0 - build: py312h024a12e_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/python-xxhash-3.5.0-py312h024a12e_1.conda - sha256: 28204ef48f028a4d872e22040da0dad7ebd703549b010a1bb511b6dd94cf466d - md5: 266fe1ae54a7bb17990206664d0f0ae4 +- conda: https://conda.anaconda.org/conda-forge/linux-64/python-xxhash-3.5.0-py312h66e93f0_1.conda + sha256: 20851b1e59fee127d49e01fc73195a88ab0779f103b7d6ffc90d11142a83678f + md5: 39aed2afe4d0cf76ab3d6b09eecdbea7 depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 - xxhash >=0.8.2,<0.8.3.0a0 + arch: x86_64 + platform: linux license: BSD-2-Clause license_family: BSD - size: 21765 - timestamp: 1725272382968 -- kind: conda - name: python-xxhash - version: 3.5.0 - build: py312h52516f5_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/python-xxhash-3.5.0-py312h52516f5_1.conda + size: 23162 + timestamp: 1725272139519 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-xxhash-3.5.0-py312h52516f5_1.conda sha256: 0fa5ba80073a43391ee90303814adbc9fd826175de1fdac273ba0e5b711aa255 md5: 591c4ae6d8338dfd07b951e00433a405 depends: @@ -9746,81 +7762,64 @@ packages: - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 - xxhash >=0.8.2,<0.8.3.0a0 + arch: aarch64 + platform: linux license: BSD-2-Clause license_family: BSD size: 23589 timestamp: 1725273317965 -- kind: conda - name: python-xxhash - version: 3.5.0 - build: py312h66e93f0_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/python-xxhash-3.5.0-py312h66e93f0_1.conda - sha256: 20851b1e59fee127d49e01fc73195a88ab0779f103b7d6ffc90d11142a83678f - md5: 39aed2afe4d0cf76ab3d6b09eecdbea7 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-xxhash-3.5.0-py312h024a12e_1.conda + sha256: 28204ef48f028a4d872e22040da0dad7ebd703549b010a1bb511b6dd94cf466d + md5: 266fe1ae54a7bb17990206664d0f0ae4 depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 + - __osx >=11.0 - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 - xxhash >=0.8.2,<0.8.3.0a0 + arch: arm64 + platform: osx license: BSD-2-Clause license_family: BSD - size: 23162 - timestamp: 1725272139519 -- kind: conda - name: python_abi - version: '3.12' - build: 5_cp312 + size: 21765 + timestamp: 1725272382968 +- conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda build_number: 5 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda sha256: d10e93d759931ffb6372b45d65ff34d95c6000c61a07e298d162a3bc2accebb0 md5: 0424ae29b104430108f5218a66db7260 constrains: - python 3.12.* *_cpython + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD size: 6238 timestamp: 1723823388266 -- kind: conda - name: python_abi - version: '3.12' - build: 5_cp312 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.12-5_cp312.conda build_number: 5 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.12-5_cp312.conda sha256: 5ccdad9981753cc4a2d126e356673a21c0cd5b34e209cb8d476a3947d4ad9b39 md5: 62b20f305498284a07dc6c45fd0e5c87 constrains: - python 3.12.* *_cpython + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD size: 6329 timestamp: 1723823366253 -- kind: conda - name: python_abi - version: '3.12' - build: 5_cp312 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-5_cp312.conda build_number: 5 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-5_cp312.conda sha256: 49d624e4b809c799d2bf257b22c23cf3fc4460f5570d9a58e7ad86350aeaa1f4 md5: b76f9b1c862128e56ac7aa8cd2333de9 constrains: - python 3.12.* *_cpython + arch: arm64 + platform: osx license: BSD-3-Clause license_family: BSD size: 6278 timestamp: 1723823099686 -- kind: conda - name: pytz - version: '2024.1' - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda sha256: 1a7d6b233f7e6e3bbcbad054c8fd51e690a67b129a899a056a5e45dd9f00cb41 md5: 3eeeeb9e4827ace8c0c1419c85d590ad depends: @@ -9829,32 +7828,7 @@ packages: license_family: MIT size: 188538 timestamp: 1706886944988 -- kind: conda - name: pyyaml - version: 6.0.2 - build: py312h024a12e_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py312h024a12e_1.conda - sha256: b06f1c15fb39695bbf707ae8fb554b9a77519af577b5556784534c7db10b52e3 - md5: 1ee23620cf46cb15900f70a1300bae55 - depends: - - __osx >=11.0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - - yaml >=0.2.5,<0.3.0a0 - license: MIT - license_family: MIT - size: 187143 - timestamp: 1725456547263 -- kind: conda - name: pyyaml - version: 6.0.2 - build: py312h66e93f0_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py312h66e93f0_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py312h66e93f0_1.conda sha256: a60705971e958724168f2ebbb8ed4853067f1d3f7059843df3903e3092bbcffa md5: 549e5930e768548a89c23f595dac5a95 depends: @@ -9863,17 +7837,13 @@ packages: - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 - yaml >=0.2.5,<0.3.0a0 + arch: x86_64 + platform: linux license: MIT license_family: MIT size: 206553 timestamp: 1725456256213 -- kind: conda - name: pyyaml - version: 6.0.2 - build: py312hb2c0f52_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/pyyaml-6.0.2-py312hb2c0f52_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyyaml-6.0.2-py312hb2c0f52_1.conda sha256: 8c515ebe1e7e85d972d72b75760af9dfac06fd11a9dba7e05c42d69aedbb303c md5: dc5de424f7dbb9772da720dbb81317b2 depends: @@ -9882,58 +7852,61 @@ packages: - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 - yaml >=0.2.5,<0.3.0a0 + arch: aarch64 + platform: linux license: MIT license_family: MIT size: 199141 timestamp: 1725456356043 -- kind: conda - name: pyzmq - version: 26.2.0 - build: py312h2427ae1_3 - build_number: 3 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/pyzmq-26.2.0-py312h2427ae1_3.conda - sha256: cfc4ea87d68b5f0ed64a61f500d5ea0a2310d1f281a4f95afa06c703ea1bdf7d - md5: 1f0779280c3dc1e72cfd86bd1e59791d +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py312h024a12e_1.conda + sha256: b06f1c15fb39695bbf707ae8fb554b9a77519af577b5556784534c7db10b52e3 + md5: 1ee23620cf46cb15900f70a1300bae55 + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - yaml >=0.2.5,<0.3.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 187143 + timestamp: 1725456547263 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.0-py312hbf22597_3.conda + sha256: bc303f9b11e04a515f79cd5ad3bfa0e84b9dfec76552626d6263b38789fe6678 + md5: 746ce19f0829ec3e19c93007b1a224d3 depends: + - __glibc >=2.17,<3.0.a0 - libgcc >=13 - libsodium >=1.0.20,<1.0.21.0a0 - libstdcxx >=13 - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 - zeromq >=4.3.5,<4.4.0a0 + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD - size: 371730 - timestamp: 1728644030875 -- kind: conda - name: pyzmq - version: 26.2.0 - build: py312hbf22597_3 - build_number: 3 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.0-py312hbf22597_3.conda - sha256: bc303f9b11e04a515f79cd5ad3bfa0e84b9dfec76552626d6263b38789fe6678 - md5: 746ce19f0829ec3e19c93007b1a224d3 + size: 378126 + timestamp: 1728642454632 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyzmq-26.2.0-py312h2427ae1_3.conda + sha256: cfc4ea87d68b5f0ed64a61f500d5ea0a2310d1f281a4f95afa06c703ea1bdf7d + md5: 1f0779280c3dc1e72cfd86bd1e59791d depends: - - __glibc >=2.17,<3.0.a0 - libgcc >=13 - libsodium >=1.0.20,<1.0.21.0a0 - libstdcxx >=13 - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 - zeromq >=4.3.5,<4.4.0a0 + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD - size: 378126 - timestamp: 1728642454632 -- kind: conda - name: pyzmq - version: 26.2.0 - build: py312hf8a1cbd_3 - build_number: 3 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.0-py312hf8a1cbd_3.conda + size: 371730 + timestamp: 1728644030875 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.0-py312hf8a1cbd_3.conda sha256: 2e0ca1bb9ab3af5d1f9b38548d65be7097ba0246e7e63c908c9b1323df3f45b5 md5: 7bdaa4c2a84b744ef26c8b2ba65c3d0e depends: @@ -9944,151 +7917,112 @@ packages: - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 - zeromq >=4.3.5,<4.4.0a0 + arch: arm64 + platform: osx license: BSD-3-Clause license_family: BSD size: 361674 timestamp: 1728642457661 -- kind: conda - name: rav1e - version: 0.6.6 - build: h1d8f897_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/rav1e-0.6.6-h1d8f897_2.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/rav1e-0.6.6-he8a937b_2.conda + sha256: 91b3c1ced90d04ee2eded1f72cf3cbc19ff05a25e41876ef0758266a5bab009f + md5: 77d9955b4abddb811cb8ab1aa7d743e4 + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + size: 15423721 + timestamp: 1694329261357 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/rav1e-0.6.6-h1d8f897_2.conda sha256: 093f21277dc5763cf0397e016e8291c2b796926ebbb173428dc9cdf5d012f328 md5: 12c850a42b1ad1ed46a284a93959ee6a depends: - libgcc-ng >=12 + arch: aarch64 + platform: linux license: BSD-2-Clause license_family: BSD size: 14347236 timestamp: 1694329141875 -- kind: conda - name: rav1e - version: 0.6.6 - build: h69fbcac_2 - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/rav1e-0.6.6-h69fbcac_2.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/rav1e-0.6.6-h69fbcac_2.conda sha256: be6174970193cb4d0ffa7d731a93a4c9542881dbc7ab24e74b460ef312161169 md5: e309ae86569b1cd55a0285fa4e939844 + arch: arm64 + platform: osx license: BSD-2-Clause license_family: BSD size: 1526706 timestamp: 1694329743011 -- kind: conda - name: rav1e - version: 0.6.6 - build: he8a937b_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/rav1e-0.6.6-he8a937b_2.conda - sha256: 91b3c1ced90d04ee2eded1f72cf3cbc19ff05a25e41876ef0758266a5bab009f - md5: 77d9955b4abddb811cb8ab1aa7d743e4 - depends: - - libgcc-ng >=12 - license: BSD-2-Clause - license_family: BSD - size: 15423721 - timestamp: 1694329261357 -- kind: conda - name: re2 - version: 2024.07.02 - build: h6589ca4_2 - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/re2-2024.07.02-h6589ca4_2.conda - sha256: 4d3799c05f8f662922a0acd129d119774760a3281b883603678e128d1cb307fb - md5: 7a8b4ad8c58a3408ca89d78788c78178 - depends: - - libre2-11 2024.07.02 h07bc746_2 - license: BSD-3-Clause - license_family: BSD - size: 26861 - timestamp: 1735541088455 -- kind: conda - name: re2 - version: 2024.07.02 - build: h9925aae_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/re2-2024.07.02-h9925aae_2.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/re2-2024.07.02-h9925aae_2.conda sha256: d213c44958d49ce7e0d4d5b81afec23640cce5016685dbb2d23571a99caa4474 md5: e84ddf12bde691e8ec894b00ea829ddf depends: - libre2-11 2024.07.02 hbbce691_2 + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD size: 26786 timestamp: 1735541074034 -- kind: conda - name: re2 - version: 2024.07.02 - build: haa97905_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/re2-2024.07.02-haa97905_2.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/re2-2024.07.02-haa97905_2.conda sha256: 040848655df9119bae5a549fb5c8956a5537120859416c1d9d0712b7bac9f12e md5: 1bf0135339b4a7419a198a795d2d4be0 depends: - libre2-11 2024.07.02 h18dbdb1_2 + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD size: 26830 timestamp: 1735540999398 -- kind: conda - name: readline - version: '8.2' - build: h8228510_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/re2-2024.07.02-h6589ca4_2.conda + sha256: 4d3799c05f8f662922a0acd129d119774760a3281b883603678e128d1cb307fb + md5: 7a8b4ad8c58a3408ca89d78788c78178 + depends: + - libre2-11 2024.07.02 h07bc746_2 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 26861 + timestamp: 1735541088455 +- conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda sha256: 5435cf39d039387fbdc977b0a762357ea909a7694d9528ab40f005e9208744d7 md5: 47d31b792659ce70f470b5c82fdfb7a4 depends: - libgcc-ng >=12 - ncurses >=6.3,<7.0a0 + arch: x86_64 + platform: linux license: GPL-3.0-only license_family: GPL size: 281456 timestamp: 1679532220005 -- kind: conda - name: readline - version: '8.2' - build: h8fc344f_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8fc344f_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8fc344f_1.conda sha256: 4c99f7417419734e3797d45bc355e61c26520e111893b0d7087a01a7fbfbe3dd md5: 105eb1e16bf83bfb2eb380a48032b655 depends: - libgcc-ng >=12 - ncurses >=6.3,<7.0a0 + arch: aarch64 + platform: linux license: GPL-3.0-only license_family: GPL size: 294092 timestamp: 1679532238805 -- kind: conda - name: readline - version: '8.2' - build: h92ec313_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h92ec313_1.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h92ec313_1.conda sha256: a1dfa679ac3f6007362386576a704ad2d0d7a02e98f5d0b115f207a2da63e884 md5: 8cbb776a2f641b943d413b3e19df71f4 depends: - ncurses >=6.3,<7.0a0 + arch: arm64 + platform: osx license: GPL-3.0-only license_family: GPL size: 250351 timestamp: 1679532511311 -- kind: conda - name: regex - version: 2024.11.6 - build: py312h66e93f0_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/regex-2024.11.6-py312h66e93f0_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/regex-2024.11.6-py312h66e93f0_0.conda sha256: fcb5687d3ec5fff580b64b8fb649d9d65c999a91a5c3108a313ecdd2de99f06b md5: 647770db979b43f9c9ca25dcfa7dc4e4 depends: @@ -10096,16 +8030,13 @@ packages: - libgcc >=13 - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux license: Python-2.0 license_family: PSF size: 402821 timestamp: 1730952378415 -- kind: conda - name: regex - version: 2024.11.6 - build: py312hb2c0f52_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/regex-2024.11.6-py312hb2c0f52_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/regex-2024.11.6-py312hb2c0f52_0.conda sha256: ec2c416860de29224e447e2031f8686a05476759c17da1f32f61d4307e540ec8 md5: fa8b589107567f532fa1380e66f91776 depends: @@ -10113,16 +8044,13 @@ packages: - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux license: Python-2.0 license_family: PSF size: 398947 timestamp: 1730952477463 -- kind: conda - name: regex - version: 2024.11.6 - build: py312hea69d52_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/regex-2024.11.6-py312hea69d52_0.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/regex-2024.11.6-py312hea69d52_0.conda sha256: dcdec32f2c7dd37986baa692bedf9db126ad34e92e5e9b64f707cba3d04d2525 md5: e73cda1f18846b608284bd784f061eac depends: @@ -10130,18 +8058,13 @@ packages: - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx license: Python-2.0 license_family: PSF size: 366374 timestamp: 1730952427552 -- kind: conda - name: requests - version: 2.32.3 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda sha256: d701ca1136197aa121bbbe0e8c18db6b5c94acbd041c2b43c70e5ae104e1d8ad md5: a9b9368f3701a417eac9edbcae7cb737 depends: @@ -10156,14 +8079,7 @@ packages: license_family: APACHE size: 58723 timestamp: 1733217126197 -- kind: conda - name: rich - version: 13.9.4 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_1.conda sha256: 06a760c5ae572e72e865d5a87e9fe3cc171e1a9c996e63daf3db52ff1a0b4457 md5: 7aed65d4ff222bfb7335997aa40b7da5 depends: @@ -10175,13 +8091,7 @@ 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 +- conda: https://conda.anaconda.org/conda-forge/noarch/rich-toolkit-0.11.3-pyh29332c3_0.conda sha256: e558f8c254a9ff9164d069110da162fc79497d70c60f2c09a5d3d0d7101c5628 md5: 4ba15ae9388b67d09782798347481f69 depends: @@ -10194,45 +8104,34 @@ packages: license_family: MIT size: 17357 timestamp: 1733750834072 -- kind: conda - name: s2n - version: 1.5.10 - build: h5df210e_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/s2n-1.5.10-h5df210e_0.conda - sha256: b5e7a9f4b7b1ec5c5c3661e2defc8b47fab543b05cad6fec78739d8007612464 - md5: 3d3979efcc0f44f3f0cef3de03b296cc - depends: - - libgcc >=13 - - openssl >=3.4.0,<4.0a0 - license: Apache-2.0 - license_family: Apache - size: 353450 - timestamp: 1734415474615 -- kind: conda - name: s2n - version: 1.5.10 - build: hb5b8611_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/s2n-1.5.10-hb5b8611_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/s2n-1.5.10-hb5b8611_0.conda sha256: f6d451821fddc26b93f45e9313e1ea15e09e5ef049d4e137413a5225d2a5dfba md5: 999f3673f2a011f59287f2969e3749e4 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - openssl >=3.4.0,<4.0a0 + arch: x86_64 + platform: linux license: Apache-2.0 license_family: Apache size: 355142 timestamp: 1734415467047 -- kind: conda - name: safetensors - version: 0.5.1 - build: py312h12e396e_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/safetensors-0.5.1-py312h12e396e_0.conda - sha256: 61a4a49bc98a7b529c7c9e2af9be1dc3350b8ea1c78f985e8a051543e8845ffa - md5: 19b54f64e926aca46d0cc2ff0ecf4f34 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/s2n-1.5.10-h5df210e_0.conda + sha256: b5e7a9f4b7b1ec5c5c3661e2defc8b47fab543b05cad6fec78739d8007612464 + md5: 3d3979efcc0f44f3f0cef3de03b296cc + depends: + - libgcc >=13 + - openssl >=3.4.0,<4.0a0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 353450 + timestamp: 1734415474615 +- conda: https://conda.anaconda.org/conda-forge/linux-64/safetensors-0.5.2-py312h12e396e_0.conda + sha256: 98b8dfa5eec083e0b3ace00906a7f7e748b1e2446dca17e87473f43278fcc036 + md5: 999ca9d87d2bb8b4c01e62c755b928cf depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -10240,18 +8139,15 @@ packages: - python_abi 3.12.* *_cp312 constrains: - __glibc >=2.17 + arch: x86_64 + platform: linux license: Apache-2.0 license_family: APACHE - size: 424642 - timestamp: 1736278244485 -- kind: conda - name: safetensors - version: 0.5.1 - build: py312h8cbf658_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/safetensors-0.5.1-py312h8cbf658_0.conda - sha256: ee66da0efb1d6897ad74156cb115277dfb8ca7f6c8bdfb17bd6a6fb205495622 - md5: f91072f99af78ed0c1941ba5d6f30cf8 + size: 424409 + timestamp: 1736383159339 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/safetensors-0.5.2-py312h8cbf658_0.conda + sha256: 3e230060c1366cbaf03f4315b021dfe47f5147f3af88f17975d661c08fe15ad3 + md5: 2c77c961c4e813b1d05122ac4d803d80 depends: - libgcc >=13 - python >=3.12,<3.13.0a0 @@ -10259,18 +8155,15 @@ packages: - python_abi 3.12.* *_cp312 constrains: - __glibc >=2.17 + arch: aarch64 + platform: linux license: Apache-2.0 license_family: APACHE - size: 409549 - timestamp: 1736278357702 -- kind: conda - name: safetensors - version: 0.5.1 - build: py312hcd83bfe_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/safetensors-0.5.1-py312hcd83bfe_0.conda - sha256: e61cbac0c1b38731543a600e2e40c4cc686e5e565f6c9809d5dcc467e2e8f220 - md5: d12e134445366752e52acec1a86c845f + size: 408166 + timestamp: 1736383184569 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/safetensors-0.5.2-py312hcd83bfe_0.conda + sha256: 0aeb3e654095ca0261d560d1fc05912d0e94d547a7dc435d7f4cedeba966d176 + md5: fc0383682805e293eba9b8afc9ad0931 depends: - __osx >=11.0 - python >=3.12,<3.13.0a0 @@ -10278,16 +8171,13 @@ packages: - python_abi 3.12.* *_cp312 constrains: - __osx >=11.0 + arch: arm64 + platform: osx license: Apache-2.0 license_family: APACHE - size: 378562 - timestamp: 1736278448037 -- kind: conda - name: sdl2 - version: 2.30.10 - build: h63c27ac_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/sdl2-2.30.10-h63c27ac_0.conda + size: 378060 + timestamp: 1736383410115 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sdl2-2.30.10-h63c27ac_0.conda sha256: 639325326d51cd70f56a55ffd3c1fa778e61751f16d66d0baea155375f1a139c md5: 5cecf6d327e4f8c5dfafc71b4a8556e7 depends: @@ -10298,15 +8188,12 @@ packages: - xorg-libx11 >=1.8.10,<2.0a0 - xorg-libxext >=1.3.6,<2.0a0 - xorg-libxfixes >=6.0.1,<7.0a0 + arch: x86_64 + platform: linux license: Zlib size: 1352990 timestamp: 1733624788165 -- kind: conda - name: sdl2 - version: 2.30.10 - build: h93e764a_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/sdl2-2.30.10-h93e764a_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sdl2-2.30.10-h93e764a_0.conda sha256: 8f03f2abcb4227e95d19b28124e0a5428f634b084b92ab91f3af7c825b626403 md5: bcbf24da778bbdd20b09cf6ed52cefc2 depends: @@ -10316,30 +8203,23 @@ packages: - xorg-libx11 >=1.8.10,<2.0a0 - xorg-libxext >=1.3.6,<2.0a0 - xorg-libxfixes >=6.0.1,<7.0a0 + arch: aarch64 + platform: linux license: Zlib size: 1277076 timestamp: 1733624829558 -- kind: conda - name: sdl2 - version: 2.30.10 - build: h994913f_0 - subdir: osx-arm64 - url: 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-2.30.10-h994913f_0.conda sha256: 7ff3167b6482c5fe7389c6c1836343c280a0eeb160524888e661f0f991708bd8 md5: 4001ae6f1b1886583e82ab0dac5b575b depends: - __osx >=11.0 - libcxx >=18 + arch: arm64 + platform: osx license: Zlib size: 1251116 timestamp: 1733624861414 -- kind: conda - name: sdl2_image - version: 2.8.2 - build: h06ee604_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/sdl2_image-2.8.2-h06ee604_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/sdl2_image-2.8.2-h06ee604_1.conda sha256: f18184e016e2e57306d1540dea584d38f4617d7ddb6aad4af6b5f21c52fa39ea md5: 65e113270b460dcdfc4dc0a80bb3d11c depends: @@ -10352,62 +8232,50 @@ packages: - libwebp-base >=1.4.0,<2.0a0 - libzlib >=1.2.13,<2.0.0a0 - sdl2 >=2.30.2,<3.0a0 + arch: x86_64 + platform: linux license: Zlib size: 152110 timestamp: 1716857107234 -- kind: conda - name: sdl2_image - version: 2.8.2 - build: h376e2e1_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/sdl2_image-2.8.2-h376e2e1_1.conda - sha256: 8c385478a7b6a6e34b3b3f3d48ed48f504698544987ad331f03a7b43b11d689a - md5: 247d2c5a873901ef51f378c69a2c708e +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sdl2_image-2.8.2-hd95cb85_1.conda + sha256: 8bdd72e4789616b0db5fc8e756a4156d3bd7fd35cf96c1cb892d9f6bff3f6508 + md5: 45fbcda052d64b07fa601d965a41cb69 depends: - - __osx >=11.0 - libavif16 >=1.0.4,<2.0a0 - - libcxx >=16 + - libgcc-ng >=12 - libjpeg-turbo >=3.0.0,<4.0a0 - libpng >=1.6.43,<1.7.0a0 + - libstdcxx-ng >=12 - libtiff >=4.6.0,<4.8.0a0 - libwebp-base >=1.4.0,<2.0a0 - libzlib >=1.2.13,<2.0.0a0 - sdl2 >=2.30.2,<3.0a0 + arch: aarch64 + platform: linux license: Zlib - size: 118041 - timestamp: 1716857215118 -- kind: conda - name: sdl2_image - version: 2.8.2 - build: hd95cb85_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/sdl2_image-2.8.2-hd95cb85_1.conda - sha256: 8bdd72e4789616b0db5fc8e756a4156d3bd7fd35cf96c1cb892d9f6bff3f6508 - md5: 45fbcda052d64b07fa601d965a41cb69 + size: 151138 + timestamp: 1716858240454 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sdl2_image-2.8.2-h376e2e1_1.conda + sha256: 8c385478a7b6a6e34b3b3f3d48ed48f504698544987ad331f03a7b43b11d689a + md5: 247d2c5a873901ef51f378c69a2c708e depends: + - __osx >=11.0 - libavif16 >=1.0.4,<2.0a0 - - libgcc-ng >=12 + - libcxx >=16 - libjpeg-turbo >=3.0.0,<4.0a0 - libpng >=1.6.43,<1.7.0a0 - - libstdcxx-ng >=12 - libtiff >=4.6.0,<4.8.0a0 - libwebp-base >=1.4.0,<2.0a0 - libzlib >=1.2.13,<2.0.0a0 - sdl2 >=2.30.2,<3.0a0 + arch: arm64 + platform: osx license: Zlib - size: 151138 - timestamp: 1716858240454 -- kind: conda - name: sdl2_mixer - version: 2.6.3 - build: h422cae6_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/sdl2_mixer-2.6.3-h422cae6_1.conda - sha256: 8fa4580bddd4d33f5fbddf5c54873613a7f8fcd9f781656fbf9fd1b27975b196 - md5: 75e56f84030bd1244d8bff3c55e8418e + size: 118041 + timestamp: 1716857215118 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sdl2_mixer-2.6.3-h8830914_1.conda + sha256: c3e99e222b091f26cfd1d6be22c5a2973df9e7caa020262f9d9523f340344a95 + md5: 1a2b60be4d860a0c419a87176c85c3ad depends: - fluidsynth >=2.3.4,<2.4.0a0 - libflac >=1.4.3,<1.5.0a0 @@ -10419,60 +8287,49 @@ packages: - mpg123 >=1.32.1,<1.33.0a0 - opusfile >=0.12,<0.13.0a0 - sdl2 >=2.28.3,<3.0a0 + arch: x86_64 + platform: linux license: Zlib - size: 238285 - timestamp: 1695761803447 -- kind: conda - name: sdl2_mixer - version: 2.6.3 - build: h4fe3bdc_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/sdl2_mixer-2.6.3-h4fe3bdc_1.conda - sha256: fcaaf1b589aed11498f5b9735b996fb92ff18e4673a4c804bbfa28eb00264e06 - md5: b92222911d46f08faa583df51191bd7f + size: 202966 + timestamp: 1695761744535 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sdl2_mixer-2.6.3-h422cae6_1.conda + sha256: 8fa4580bddd4d33f5fbddf5c54873613a7f8fcd9f781656fbf9fd1b27975b196 + md5: 75e56f84030bd1244d8bff3c55e8418e depends: - fluidsynth >=2.3.4,<2.4.0a0 - - libcxx >=15.0.7 - libflac >=1.4.3,<1.5.0a0 + - libgcc-ng >=12 - libmad >=0.15.1b,<0.16.0a0 - libogg >=1.3.4,<1.4.0a0 + - libstdcxx-ng >=12 - libvorbis >=1.3.7,<1.4.0a0 - mpg123 >=1.32.1,<1.33.0a0 - opusfile >=0.12,<0.13.0a0 - sdl2 >=2.28.3,<3.0a0 + arch: aarch64 + platform: linux license: Zlib - size: 188504 - timestamp: 1695762176058 -- kind: conda - name: sdl2_mixer - version: 2.6.3 - build: h8830914_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/sdl2_mixer-2.6.3-h8830914_1.conda - sha256: c3e99e222b091f26cfd1d6be22c5a2973df9e7caa020262f9d9523f340344a95 - md5: 1a2b60be4d860a0c419a87176c85c3ad + size: 238285 + timestamp: 1695761803447 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sdl2_mixer-2.6.3-h4fe3bdc_1.conda + sha256: fcaaf1b589aed11498f5b9735b996fb92ff18e4673a4c804bbfa28eb00264e06 + md5: b92222911d46f08faa583df51191bd7f depends: - fluidsynth >=2.3.4,<2.4.0a0 + - libcxx >=15.0.7 - libflac >=1.4.3,<1.5.0a0 - - libgcc-ng >=12 - libmad >=0.15.1b,<0.16.0a0 - libogg >=1.3.4,<1.4.0a0 - - libstdcxx-ng >=12 - libvorbis >=1.3.7,<1.4.0a0 - mpg123 >=1.32.1,<1.33.0a0 - opusfile >=0.12,<0.13.0a0 - sdl2 >=2.28.3,<3.0a0 + arch: arm64 + platform: osx license: Zlib - size: 202966 - timestamp: 1695761744535 -- kind: conda - name: sdl2_ttf - version: 2.24.0 - build: h287479f_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/sdl2_ttf-2.24.0-h287479f_0.conda + size: 188504 + timestamp: 1695762176058 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sdl2_ttf-2.24.0-h287479f_0.conda sha256: 431d19b666db6e7a4f09c37c43c83f115176a006b2ac321853ca26bee888c519 md5: bccd5b74eb55a523dfcc66b857555714 depends: @@ -10482,31 +8339,12 @@ packages: - libgcc >=13 - libzlib >=1.3.1,<2.0a0 - sdl2 >=2.30.10,<3.0a0 + arch: x86_64 + platform: linux license: Zlib size: 61954 timestamp: 1736117956977 -- kind: conda - name: sdl2_ttf - version: 2.24.0 - build: h443c5de_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/sdl2_ttf-2.24.0-h443c5de_0.conda - sha256: 5dc56fd1de51dec2f7b63b1a9069ab35ab0494d9cd5af164ab0019cbd9564cf6 - md5: 3cf5cf83deccb663b4e932d3d4b28f57 - depends: - - __osx >=11.0 - - freetype >=2.12.1,<3.0a0 - - harfbuzz >=10.1.0,<11.0a0 - - sdl2 >=2.30.10,<3.0a0 - license: Zlib - size: 45429 - timestamp: 1736118165229 -- kind: conda - name: sdl2_ttf - version: 2.24.0 - build: hb1608df_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/sdl2_ttf-2.24.0-hb1608df_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sdl2_ttf-2.24.0-hb1608df_0.conda sha256: f9ee162a8efbd9cb0131500c57807e470b95f454aedb921dbf5960176b505ee4 md5: 63b580a2a1005d91ffcb06a7e58d75f8 depends: @@ -10515,17 +8353,25 @@ packages: - libgcc >=13 - libzlib >=1.3.1,<2.0a0 - sdl2 >=2.30.10,<3.0a0 + arch: aarch64 + platform: linux license: Zlib size: 55411 timestamp: 1736119336293 -- kind: conda - name: shellingham - version: 1.5.4 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sdl2_ttf-2.24.0-h443c5de_0.conda + sha256: 5dc56fd1de51dec2f7b63b1a9069ab35ab0494d9cd5af164ab0019cbd9564cf6 + md5: 3cf5cf83deccb663b4e932d3d4b28f57 + depends: + - __osx >=11.0 + - freetype >=2.12.1,<3.0a0 + - harfbuzz >=10.1.0,<11.0a0 + - sdl2 >=2.30.10,<3.0a0 + arch: arm64 + platform: osx + license: Zlib + size: 45429 + timestamp: 1736118165229 +- conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda sha256: 0557c090913aa63cdbe821dbdfa038a321b488e22bc80196c4b3b1aace4914ef md5: 7c3c2a0f3ebdea2bbc35538d162b43bf depends: @@ -10534,13 +8380,7 @@ packages: license_family: MIT size: 14462 timestamp: 1733301007770 -- kind: conda - name: six - version: 1.17.0 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda sha256: 41db0180680cc67c3fa76544ffd48d6a5679d96f4b71d7498a759e94edc9a2db md5: a451d576819089b0d672f18768be0f65 depends: @@ -10549,63 +8389,44 @@ packages: license_family: MIT size: 16385 timestamp: 1733381032766 -- kind: conda - name: snappy - version: 1.2.1 - build: h8bd8927_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-h8bd8927_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-h8bd8927_1.conda sha256: ec91e86eeb2c6bbf09d51351b851e945185d70661d2ada67204c9a6419d282d3 md5: 3b3e64af585eadfb52bb90b553db5edf depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - libstdcxx >=13 + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD size: 42739 timestamp: 1733501881851 -- kind: conda - name: snappy - version: 1.2.1 - build: h98b9ce2_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-h98b9ce2_1.conda - sha256: 4242f95b215127a006eb664fe26ed5a82df87e90cbdbc7ce7ff4971f0720997f - md5: ded86dee325290da2967a3fea3800eb5 - depends: - - __osx >=11.0 - - libcxx >=18 - license: BSD-3-Clause - license_family: BSD - size: 35857 - timestamp: 1733502172664 -- kind: conda - name: snappy - version: 1.2.1 - build: hd4fb6f5_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-hd4fb6f5_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-hd4fb6f5_1.conda sha256: c4a07ae5def8d55128f25a567a296ef9d7bf99a3bc79d46bd5160c076a5f50af md5: 2fcc6cd1e5550deb509073fd2e6693e1 depends: - libgcc >=13 - libstdcxx >=13 + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD size: 43032 timestamp: 1733501964775 -- kind: conda - name: sniffio - version: 1.3.1 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-h98b9ce2_1.conda + sha256: 4242f95b215127a006eb664fe26ed5a82df87e90cbdbc7ce7ff4971f0720997f + md5: ded86dee325290da2967a3fea3800eb5 + depends: + - __osx >=11.0 + - libcxx >=18 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 35857 + timestamp: 1733502172664 +- conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda sha256: c2248418c310bdd1719b186796ae50a8a77ce555228b6acd32768e2543a15012 md5: bf7a226e58dfb8346c70df36065d86c9 depends: @@ -10614,13 +8435,7 @@ packages: license_family: Apache size: 15019 timestamp: 1733244175724 -- kind: conda - name: sse-starlette - version: 2.2.1 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.2.1-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.2.1-pyhd8ed1ab_0.conda sha256: 3c6a476e7afb702d841e23c61a0c4cc491929d2e39376d329e67e94c40a236cc md5: c1ef6bc13dd2caa4b406fb3cb06c2791 depends: @@ -10631,14 +8446,7 @@ packages: license_family: BSD size: 15324 timestamp: 1735126414893 -- kind: conda - name: starlette - version: 0.41.3 - build: pyha770c72_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyha770c72_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyha770c72_1.conda sha256: b74fc76107487eb26624c01fc55bfab7eed03ae82e003333c86d8a1eeac53672 md5: 0207dac04ae2200701fab697f0aaaac4 depends: @@ -10649,104 +8457,79 @@ packages: license_family: BSD size: 58838 timestamp: 1733344472634 -- kind: conda - name: svt-av1 - version: 2.3.0 - build: h5888daf_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/svt-av1-2.3.0-h5888daf_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/svt-av1-2.3.0-h5888daf_0.conda sha256: df30a9be29f1a8b5a2e314dd5b16ccfbcbd1cc6a4f659340e8bc2bd4de37bc6f md5: 355898d24394b2af353eb96358db9fdd depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - libstdcxx >=13 + arch: x86_64 + platform: linux license: BSD-2-Clause license_family: BSD size: 2746291 timestamp: 1730246036363 -- kind: conda - name: svt-av1 - version: 2.3.0 - build: h5ad3122_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/svt-av1-2.3.0-h5ad3122_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/svt-av1-2.3.0-h5ad3122_0.conda sha256: 2fad2496a21d198ea72f5dabfdace2fae0ced5cc3ea243922cb372fcf4c18222 md5: efb60b536bbf64772929b57f6b30298b depends: - libgcc >=13 - libstdcxx >=13 + arch: aarch64 + platform: linux license: BSD-2-Clause license_family: BSD size: 1796731 timestamp: 1730246027014 -- kind: conda - name: svt-av1 - version: 2.3.0 - build: hf24288c_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/svt-av1-2.3.0-hf24288c_0.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/svt-av1-2.3.0-hf24288c_0.conda sha256: ab876ed8bdd20e22a868dcb8d03e9ce9bbba7762d7e652d49bfff6af768a5b8f md5: 114c33e9eec335a379c9ee6c498bb807 depends: - __osx >=11.0 - libcxx >=17 + arch: arm64 + platform: osx license: BSD-2-Clause license_family: BSD size: 1387330 timestamp: 1730246134730 -- kind: conda - name: tk - version: 8.6.13 - build: h194ca79_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda + sha256: e0569c9caa68bf476bead1bed3d79650bb080b532c64a4af7d8ca286c08dea4e + md5: d453b98d9c83e71da0741bb0ff4d76bc + depends: + - libgcc-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 + arch: x86_64 + platform: linux + license: TCL + license_family: BSD + size: 3318875 + timestamp: 1699202167581 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda sha256: 7fa27cc512d3a783f38bd16bbbffc008807372499d5b65d089a8e43bde9db267 md5: f75105e0585851f818e0009dd1dde4dc depends: - libgcc-ng >=12 - libzlib >=1.2.13,<2.0.0a0 + arch: aarch64 + platform: linux license: TCL license_family: BSD size: 3351802 timestamp: 1695506242997 -- kind: conda - name: tk - version: 8.6.13 - build: h5083fa2_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda sha256: 72457ad031b4c048e5891f3f6cb27a53cb479db68a52d965f796910e71a403a8 md5: b50a57ba89c32b62428b71a875291c9b depends: - libzlib >=1.2.13,<2.0.0a0 + arch: arm64 + platform: osx license: TCL license_family: BSD size: 3145523 timestamp: 1699202432999 -- kind: conda - name: tk - version: 8.6.13 - build: noxft_h4845f30_101 - build_number: 101 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda - sha256: e0569c9caa68bf476bead1bed3d79650bb080b532c64a4af7d8ca286c08dea4e - md5: d453b98d9c83e71da0741bb0ff4d76bc - depends: - - libgcc-ng >=12 - - libzlib >=1.2.13,<2.0.0a0 - license: TCL - license_family: BSD - size: 3318875 - timestamp: 1699202167581 -- kind: conda - name: tokenizers - version: 0.21.0 - build: py312h8360d73_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.21.0-py312h8360d73_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.21.0-py312h8360d73_0.conda sha256: 4f504a5e9d77c6d88a8f735c4319429d8bf40b742384f908a2efe0a09acc3cc5 md5: f953aa733207f3d37acf4a3efbedba89 depends: @@ -10759,16 +8542,13 @@ packages: - python_abi 3.12.* *_cp312 constrains: - __glibc >=2.17 + arch: x86_64 + platform: linux license: Apache-2.0 license_family: APACHE size: 2258007 timestamp: 1732734202127 -- kind: conda - name: tokenizers - version: 0.21.0 - build: py312ha0d6ea1_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.21.0-py312ha0d6ea1_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.21.0-py312ha0d6ea1_0.conda sha256: ef0f4d4e2c798b1821187ea0ba4c86484e48abaa0e9a19fe68030fa7ff5dde84 md5: 077f48c9e0c08a30d842e15c51df4143 depends: @@ -10781,16 +8561,13 @@ packages: - python_abi 3.12.* *_cp312 constrains: - __glibc >=2.17 + arch: aarch64 + platform: linux license: Apache-2.0 license_family: APACHE size: 2331194 timestamp: 1732734303196 -- kind: conda - name: tokenizers - version: 0.21.0 - build: py312hf3e4074_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.21.0-py312hf3e4074_0.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.21.0-py312hf3e4074_0.conda sha256: 5d395333fcb22dc611140286c1f2ea8b3fa220a4931c583587cb612238091555 md5: 4c732c74b485ef7ac8ec1c548dd45e8e depends: @@ -10802,49 +8579,40 @@ packages: - python_abi 3.12.* *_cp312 constrains: - __osx >=11.0 + arch: arm64 + platform: osx license: Apache-2.0 license_family: APACHE size: 1931389 timestamp: 1732734727624 -- kind: conda - name: tornado - version: 6.4.2 - build: py312h52516f5_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py312h52516f5_0.conda - sha256: 4c19a544354172b2273553267e734795a6da3c78a04c2d19f8e9e159ca3178bc - md5: e28996d9d2d44d777b7e6fb12f63715b +- conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda + sha256: 062a3a3a37fa8615ce57929ba7e982c76f5a5810bcebd435950f6d6c4147c310 + md5: e417822cb989e80a0d2b1b576fdd1657 depends: + - __glibc >=2.17,<3.0.a0 - libgcc >=13 - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux license: Apache-2.0 license_family: Apache - size: 841662 - timestamp: 1732616934923 -- kind: conda - name: tornado - version: 6.4.2 - build: py312h66e93f0_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda - sha256: 062a3a3a37fa8615ce57929ba7e982c76f5a5810bcebd435950f6d6c4147c310 - md5: e417822cb989e80a0d2b1b576fdd1657 + size: 840414 + timestamp: 1732616043734 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py312h52516f5_0.conda + sha256: 4c19a544354172b2273553267e734795a6da3c78a04c2d19f8e9e159ca3178bc + md5: e28996d9d2d44d777b7e6fb12f63715b depends: - - __glibc >=2.17,<3.0.a0 - libgcc >=13 - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux license: Apache-2.0 license_family: Apache - size: 840414 - timestamp: 1732616043734 -- kind: conda - name: tornado - version: 6.4.2 - build: py312hea69d52_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda + size: 841662 + timestamp: 1732616934923 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda sha256: 964a2705a36c50040c967b18b45b9cc8de3c2aff4af546979a574e0b38e58e39 md5: fb0605888a475d6a380ae1d1a819d976 depends: @@ -10852,18 +8620,13 @@ packages: - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx license: Apache-2.0 license_family: Apache size: 842549 timestamp: 1732616081362 -- kind: conda - name: tqdm - version: 4.67.1 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda sha256: 11e2c85468ae9902d24a27137b6b39b4a78099806e551d390e394a8c34b48e40 md5: 9efbfdc37242619130ea42b1cc4ed861 depends: @@ -10872,14 +8635,7 @@ packages: license: MPL-2.0 or MIT size: 89498 timestamp: 1735661472632 -- kind: conda - name: traitlets - version: 5.14.3 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda sha256: f39a5620c6e8e9e98357507262a7869de2ae8cc07da8b7f84e517c9fd6c2b959 md5: 019a7385be9af33791c989871317e1ed depends: @@ -10888,15 +8644,9 @@ packages: license_family: BSD size: 110051 timestamp: 1733367480074 -- kind: conda - name: transformers - version: 4.47.1 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.1-pyhd8ed1ab_0.conda - sha256: df8238c3cccbb6bb1d5657e6a75977ac0b832ab61155d5e3d8560c1c4f52abeb - md5: 931d66db156680c42c62812d6533cbf7 +- conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.48.0-pyhd8ed1ab_0.conda + sha256: c8dd6d69e4ef67c7d507dec2be4b6964f6ddbe1ce35a822ddf4089505d702f33 + md5: 2c57d4af7b8952484962b40a59cf1537 depends: - datasets !=2.5.0 - filelock @@ -10912,15 +8662,9 @@ packages: - tqdm >=4.27 license: Apache-2.0 license_family: APACHE - size: 3680276 - timestamp: 1734499046193 -- kind: conda - name: typer - version: 0.15.1 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda + size: 3408277 + timestamp: 1736534112195 +- conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda sha256: ef695490e895c2ad552c77ec497b899b09fd4ad4ab07edcf5649f5994cf92a35 md5: 170a0398946d8f5b454e592672b6fc20 depends: @@ -10930,13 +8674,7 @@ packages: license_family: MIT size: 56175 timestamp: 1733408582623 -- kind: conda - name: typer-slim - version: 0.15.1 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda sha256: d4965516f35e0805199de6596c4ac76c4ad3d6b012be35e532102f9e53ecb860 md5: 0218b16f5a1dd569e575a7a6415489db depends: @@ -10951,13 +8689,7 @@ packages: license_family: MIT size: 43592 timestamp: 1733408569554 -- kind: conda - name: typer-slim-standard - version: 0.15.1 - build: hd8ed1ab_0 - subdir: noarch - noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda sha256: f31c56fe98315da8b9ce848256c17e0b9f87896b41a6ccf0c9cc74644dcef20f md5: 4e603c43bfdfc7b533be087c3e070cc9 depends: @@ -10968,14 +8700,8 @@ packages: license_family: MIT size: 49531 timestamp: 1733408570063 -- kind: conda - name: typing-extensions - version: 4.12.2 - build: hd8ed1ab_1 - build_number: 1 - subdir: noarch +- conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda sha256: c8e9c1c467b5f960b627d7adc1c65fece8e929a3de89967e91ef0f726422fd32 md5: b6a408c64b78ec7b779a3e5c7a902433 depends: @@ -10984,14 +8710,7 @@ packages: license_family: PSF size: 10075 timestamp: 1733188758872 -- kind: conda - name: typing_extensions - version: 4.12.2 - build: pyha770c72_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda sha256: 337be7af5af8b2817f115b3b68870208b30c31d3439bec07bfb2d8f4823e3568 md5: d17f13df8b65464ca316cbc000a3cb64 depends: @@ -11000,25 +8719,13 @@ packages: license_family: PSF size: 39637 timestamp: 1733188758212 -- kind: conda - name: tzdata - version: 2024b - build: hc8b5060_0 - subdir: noarch - noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda sha256: 4fde5c3008bf5d2db82f2b50204464314cc3c91c1d953652f7bd01d9e52aefdf md5: 8ac3367aafb1cc0a068483c580af8015 license: LicenseRef-Public-Domain size: 122354 timestamp: 1728047496079 -- kind: conda - name: urllib3 - version: 2.3.0 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda sha256: 114919ffa80c328127dab9c8e7a38f9d563c617691fb81fccb11c1e86763727e md5: 32674f8dbfb7b26410ed580dd3c10a29 depends: @@ -11031,13 +8738,7 @@ packages: license_family: MIT size: 100102 timestamp: 1734859520452 -- kind: conda - name: uvicorn - version: 0.34.0 - build: pyh31011fe_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.34.0-pyh31011fe_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.34.0-pyh31011fe_0.conda sha256: 55c160b0cf9274e2b98bc0f7fcce548bffa8d788bc86aa02801877457040f6fa md5: 5d448feee86e4740498ec8f8eb40e052 depends: @@ -11050,13 +8751,7 @@ packages: license_family: BSD size: 48643 timestamp: 1734293057914 -- kind: conda - name: uvicorn-standard - version: 0.34.0 - build: h31011fe_0 - subdir: noarch - noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.34.0-h31011fe_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.34.0-h31011fe_0.conda sha256: 87e1531e175e75122f9f37608eb953af4c977465ab0ae11283cc01fef954e4ec md5: 32a94143a7f65d76d2d5da37dcb4ed79 depends: @@ -11072,31 +8767,7 @@ packages: license_family: BSD size: 7203 timestamp: 1734293058849 -- kind: conda - name: uvloop - version: 0.21.0 - build: py312h0bf5046_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/uvloop-0.21.0-py312h0bf5046_1.conda - sha256: b1efa77aa4871d7bb09c8dd297fa9bd9070ba7f0f95f2d12ae9cdd31ce8b6b22 - md5: 4f5110253ba80ebf27e55c4ab333880a - depends: - - __osx >=11.0 - - libuv >=1.49.2,<2.0a0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - license: MIT OR Apache-2.0 - size: 544097 - timestamp: 1730214653726 -- kind: conda - name: uvloop - version: 0.21.0 - build: py312h66e93f0_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/uvloop-0.21.0-py312h66e93f0_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/uvloop-0.21.0-py312h66e93f0_1.conda sha256: 9337a80165fcf70b06b9d6ba920dad702260ca966419ae77560a15540e41ab72 md5: 998e481e17c1b6a74572e73b06f2df08 depends: @@ -11105,16 +8776,12 @@ packages: - libuv >=1.49.2,<2.0a0 - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux license: MIT OR Apache-2.0 size: 701355 timestamp: 1730214506716 -- kind: conda - name: uvloop - version: 0.21.0 - build: py312hb2c0f52_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/uvloop-0.21.0-py312hb2c0f52_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/uvloop-0.21.0-py312hb2c0f52_1.conda sha256: 807eede6698bd00a1d739a3e19ee6ae6a03a66d2ddd2ef150f2dfd198c3b0292 md5: d83e107ba16c77aba2feec47b7b666a4 depends: @@ -11123,17 +8790,28 @@ packages: - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux license: MIT OR Apache-2.0 size: 655266 timestamp: 1730214606664 -- kind: conda - name: watchfiles - version: 1.0.3 - build: py312h12e396e_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/watchfiles-1.0.3-py312h12e396e_0.conda - sha256: c89755d8e8f6384b3ba13e41dcabb40bf690c38b9d61512e963129badb1ad332 - md5: b76a5ad00856af6e74da9c3e85fed0cc +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/uvloop-0.21.0-py312h0bf5046_1.conda + sha256: b1efa77aa4871d7bb09c8dd297fa9bd9070ba7f0f95f2d12ae9cdd31ce8b6b22 + md5: 4f5110253ba80ebf27e55c4ab333880a + depends: + - __osx >=11.0 + - libuv >=1.49.2,<2.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: MIT OR Apache-2.0 + size: 544097 + timestamp: 1730214653726 +- conda: https://conda.anaconda.org/conda-forge/linux-64/watchfiles-1.0.4-py312h12e396e_0.conda + sha256: b728f525dcae2c10524f9942255346eba62aee9c820ff269d7dd4f7caffb7ffb + md5: df87129c4cb7afc4a3cbad71a1b9e223 depends: - __glibc >=2.17,<3.0.a0 - anyio >=3.0.0 @@ -11142,18 +8820,14 @@ packages: - python_abi 3.12.* *_cp312 constrains: - __glibc >=2.17 + arch: x86_64 + platform: linux license: MIT - license_family: MIT - size: 410432 - timestamp: 1733998892675 -- kind: conda - name: watchfiles - version: 1.0.3 - build: py312h8cbf658_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/watchfiles-1.0.3-py312h8cbf658_0.conda - sha256: 9be9569c279dc6e7881e9b45fe9f0368218538c660641e2f8b0e023e72a6571c - md5: 3465c1a19634233abc2d1832ac01fd31 + size: 410192 + timestamp: 1736550568524 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/watchfiles-1.0.4-py312h8cbf658_0.conda + sha256: 45193910f6bafc287c784442d173745161b18f96223f0f990a9a744fda753787 + md5: ed958a27e610c31de625e167d4c11a04 depends: - anyio >=3.0.0 - libgcc >=13 @@ -11162,18 +8836,14 @@ packages: - python_abi 3.12.* *_cp312 constrains: - __glibc >=2.17 + arch: aarch64 + platform: linux license: MIT - license_family: MIT - size: 404239 - timestamp: 1733998941045 -- kind: conda - name: watchfiles - version: 1.0.3 - build: py312hcd83bfe_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/watchfiles-1.0.3-py312hcd83bfe_0.conda - sha256: b64b78a7d6384bf72a878256802c783c692fe641ab4b806fd7e9f45e18a5e3b4 - md5: 13b89e1aa72aa773806b1f59ec018b67 + size: 403791 + timestamp: 1736550743174 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/watchfiles-1.0.4-py312hcd83bfe_0.conda + sha256: 84122e3712f2263e12c9d2be75d122eaf2d269801183df4b73aadcb670943b17 + md5: 946eb0208d09b811a671fad9b2831f4e depends: - __osx >=11.0 - anyio >=3.0.0 @@ -11182,16 +8852,12 @@ packages: - python_abi 3.12.* *_cp312 constrains: - __osx >=11.0 + arch: arm64 + platform: osx license: MIT - license_family: MIT - size: 363162 - timestamp: 1733999215646 -- kind: conda - name: websockets - version: '14.1' - build: py312h66e93f0_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/websockets-14.1-py312h66e93f0_0.conda + size: 363822 + timestamp: 1736550859472 +- conda: https://conda.anaconda.org/conda-forge/linux-64/websockets-14.1-py312h66e93f0_0.conda sha256: 5998940f91765ba991cf286c863c20bcb53db92bb976a2b5a714566b86b0e763 md5: a79f7ce618bd0a9f4c00c59a03570fcd depends: @@ -11199,16 +8865,13 @@ packages: - libgcc >=13 - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD size: 242145 timestamp: 1731498716195 -- kind: conda - name: websockets - version: '14.1' - build: py312hb2c0f52_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/websockets-14.1-py312hb2c0f52_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/websockets-14.1-py312hb2c0f52_0.conda sha256: c292a8badcbe4040537e225fbeb237bfaf272808eab060067d965d3da98ccd5c md5: 7e2a0ef2a1a87f88f9745f9c7059186e depends: @@ -11216,16 +8879,13 @@ packages: - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD size: 242912 timestamp: 1731498811466 -- kind: conda - name: websockets - version: '14.1' - build: py312hea69d52_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/websockets-14.1-py312hea69d52_0.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/websockets-14.1-py312hea69d52_0.conda sha256: 98fb04a1a0f53dc604378f94b5795d0b8e462fee01bf0a887cb34d0efdf5d21f md5: 89b79a9baa7db46ce21f5738a5a3dfda depends: @@ -11233,16 +8893,13 @@ packages: - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx license: BSD-3-Clause license_family: BSD size: 243131 timestamp: 1731498944076 -- kind: conda - name: wrapt - version: 1.17.0 - build: py312h66e93f0_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.17.0-py312h66e93f0_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.17.0-py312h66e93f0_0.conda sha256: a6fc0f4e90643d0c1fd4aab669b6a79f44a305a5474256f6f2da3354d2310fb4 md5: ddbe3bb0e1356cb9074dd848570694f9 depends: @@ -11250,16 +8907,13 @@ packages: - libgcc >=13 - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux license: BSD-2-Clause license_family: BSD size: 63807 timestamp: 1732523690292 -- kind: conda - name: wrapt - version: 1.17.0 - build: py312hb2c0f52_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/wrapt-1.17.0-py312hb2c0f52_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/wrapt-1.17.0-py312hb2c0f52_0.conda sha256: b9aa760a987ccc6bc9c61f57badba6798d9a3dcbd0814e5fb8df6d8d2935af73 md5: 120d5d1c05386d8ce3efd65a4c86431f depends: @@ -11267,16 +8921,13 @@ packages: - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux license: BSD-2-Clause license_family: BSD size: 64783 timestamp: 1732523806 -- kind: conda - name: wrapt - version: 1.17.0 - build: py312hea69d52_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/wrapt-1.17.0-py312hea69d52_0.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/wrapt-1.17.0-py312hea69d52_0.conda sha256: 0fb35c3d1642f9f47db87bdb33148f88ef19a3af1eb0ee99b5491551c57269c7 md5: 73414acdb779a8694a14527865b4357a depends: @@ -11284,61 +8935,36 @@ packages: - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx license: BSD-2-Clause license_family: BSD size: 61043 timestamp: 1732523852129 -- kind: conda - name: xorg-libice - version: 1.1.2 - build: h86ecc28_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libice-1.1.2-h86ecc28_0.conda - sha256: a2ba1864403c7eb4194dacbfe2777acf3d596feae43aada8d1b478617ce45031 - md5: c8d8ec3e00cd0fd8a231789b91a7c5b7 - depends: - - libgcc >=13 - license: MIT - license_family: MIT - size: 60433 - timestamp: 1734229908988 -- kind: conda - name: xorg-libice - version: 1.1.2 - build: hb9d3cd8_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/xorg-libice-1.1.2-hb9d3cd8_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libice-1.1.2-hb9d3cd8_0.conda sha256: c12396aabb21244c212e488bbdc4abcdef0b7404b15761d9329f5a4a39113c4b md5: fb901ff28063514abb6046c9ec2c4a45 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 + arch: x86_64 + platform: linux license: MIT license_family: MIT size: 58628 timestamp: 1734227592886 -- kind: conda - name: xorg-libsm - version: 1.2.5 - build: h0808dbd_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libsm-1.2.5-h0808dbd_0.conda - sha256: 2749a32a00ccd8feaab6039d7848ed875880c13d3b2601afd1788600ce5f9075 - md5: 3983c253f53f67a9d8710fc96646950f +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libice-1.1.2-h86ecc28_0.conda + sha256: a2ba1864403c7eb4194dacbfe2777acf3d596feae43aada8d1b478617ce45031 + md5: c8d8ec3e00cd0fd8a231789b91a7c5b7 depends: - libgcc >=13 - - libuuid >=2.38.1,<3.0a0 - - xorg-libice >=1.1.1,<2.0a0 + arch: aarch64 + platform: linux license: MIT license_family: MIT - size: 28061 - timestamp: 1734232077988 -- kind: conda - name: xorg-libsm - version: 1.2.5 - build: he73a12e_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/xorg-libsm-1.2.5-he73a12e_0.conda + size: 60433 + timestamp: 1734229908988 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libsm-1.2.5-he73a12e_0.conda sha256: 760f43df6c2ce8cbbbcb8f2f3b7fc0f306716c011e28d1d340f3dfa8ccf29185 md5: 4c3e9fab69804ec6077697922d70c6e2 depends: @@ -11346,311 +8972,256 @@ packages: - libgcc >=13 - libuuid >=2.38.1,<3.0a0 - xorg-libice >=1.1.2,<2.0a0 + arch: x86_64 + platform: linux license: MIT license_family: MIT size: 27198 timestamp: 1734229639785 -- kind: conda - name: xorg-libx11 - version: 1.8.10 - build: h4f16b4b_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/xorg-libx11-1.8.10-h4f16b4b_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libsm-1.2.5-h0808dbd_0.conda + sha256: 2749a32a00ccd8feaab6039d7848ed875880c13d3b2601afd1788600ce5f9075 + md5: 3983c253f53f67a9d8710fc96646950f + depends: + - libgcc >=13 + - libuuid >=2.38.1,<3.0a0 + - xorg-libice >=1.1.1,<2.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 28061 + timestamp: 1734232077988 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libx11-1.8.10-h4f16b4b_1.conda sha256: f53994d54f0604df881c4e984279b3cf6a1648a22d4b2113e2c89829968784c9 md5: 125f34a17d7b4bea418a83904ea82ea6 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - libxcb >=1.17.0,<2.0a0 + arch: x86_64 + platform: linux license: MIT license_family: MIT size: 837524 timestamp: 1733324962639 -- kind: conda - name: xorg-libx11 - version: 1.8.10 - build: hca56bd8_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libx11-1.8.10-hca56bd8_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libx11-1.8.10-hca56bd8_1.conda sha256: 5604f295906dfc496a4590e8ec19f775ccb40c5d503e6dfbac0781b5446b5391 md5: 6e3e980940b26a060e553266ae0181a9 depends: - libgcc >=13 - libxcb >=1.17.0,<2.0a0 + arch: aarch64 + platform: linux license: MIT license_family: MIT size: 858427 timestamp: 1733325062374 -- kind: conda - name: xorg-libxau - version: 1.0.12 - build: h5505292_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxau-1.0.12-h5505292_0.conda - sha256: f33e6f013fc36ebc200f09ddead83468544cb5c353a3b50499b07b8c34e28a8d - md5: 50901e0764b7701d8ed7343496f4f301 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-hb9d3cd8_0.conda + sha256: ed10c9283974d311855ae08a16dfd7e56241fac632aec3b92e3cfe73cff31038 + md5: f6ebe2cb3f82ba6c057dde5d9debe4f7 depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux license: MIT license_family: MIT - size: 13593 - timestamp: 1734229104321 -- kind: conda - name: xorg-libxau - version: 1.0.12 - build: h86ecc28_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxau-1.0.12-h86ecc28_0.conda + size: 14780 + timestamp: 1734229004433 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxau-1.0.12-h86ecc28_0.conda sha256: 7829a0019b99ba462aece7592d2d7f42e12d12ccd3b9614e529de6ddba453685 md5: d5397424399a66d33c80b1f2345a36a6 depends: - libgcc >=13 + arch: aarch64 + platform: linux license: MIT license_family: MIT size: 15873 timestamp: 1734230458294 -- kind: conda - name: xorg-libxau - version: 1.0.12 - build: hb9d3cd8_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-hb9d3cd8_0.conda - sha256: ed10c9283974d311855ae08a16dfd7e56241fac632aec3b92e3cfe73cff31038 - md5: f6ebe2cb3f82ba6c057dde5d9debe4f7 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxau-1.0.12-h5505292_0.conda + sha256: f33e6f013fc36ebc200f09ddead83468544cb5c353a3b50499b07b8c34e28a8d + md5: 50901e0764b7701d8ed7343496f4f301 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 13593 + timestamp: 1734229104321 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb9d3cd8_0.conda + sha256: 6b250f3e59db07c2514057944a3ea2044d6a8cdde8a47b6497c254520fade1ee + md5: 8035c64cb77ed555e3f150b7b3972480 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 + arch: x86_64 + platform: linux license: MIT license_family: MIT - size: 14780 - timestamp: 1734229004433 -- kind: conda - name: xorg-libxdmcp - version: 1.1.5 - build: h57736b2_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxdmcp-1.1.5-h57736b2_0.conda + size: 19901 + timestamp: 1727794976192 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxdmcp-1.1.5-h57736b2_0.conda sha256: efcc150da5926cf244f757b8376d96a4db78bc15b8d90ca9f56ac6e75755971f md5: 25a5a7b797fe6e084e04ffe2db02fc62 depends: - libgcc >=13 + arch: aarch64 + platform: linux license: MIT license_family: MIT size: 20615 timestamp: 1727796660574 -- kind: conda - name: xorg-libxdmcp - version: 1.1.5 - build: hb9d3cd8_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb9d3cd8_0.conda - sha256: 6b250f3e59db07c2514057944a3ea2044d6a8cdde8a47b6497c254520fade1ee - md5: 8035c64cb77ed555e3f150b7b3972480 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - license: MIT - license_family: MIT - size: 19901 - timestamp: 1727794976192 -- kind: conda - name: xorg-libxdmcp - version: 1.1.5 - build: hd74edd7_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxdmcp-1.1.5-hd74edd7_0.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxdmcp-1.1.5-hd74edd7_0.conda sha256: 9939a166d780700d81023546759102b33fdc2c5f11ef09f5f66c77210fd334c8 md5: 77c447f48cab5d3a15ac224edb86a968 depends: - __osx >=11.0 + arch: arm64 + platform: osx license: MIT license_family: MIT size: 18487 timestamp: 1727795205022 -- kind: conda - name: xorg-libxext - version: 1.3.6 - build: h57736b2_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxext-1.3.6-h57736b2_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxext-1.3.6-hb9d3cd8_0.conda + sha256: da5dc921c017c05f38a38bd75245017463104457b63a1ce633ed41f214159c14 + md5: febbab7d15033c913d53c7a2c102309d + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - xorg-libx11 >=1.8.10,<2.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 50060 + timestamp: 1727752228921 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxext-1.3.6-h57736b2_0.conda sha256: 8e216b024f52e367463b4173f237af97cf7053c77d9ce3e958bc62473a053f71 md5: bd1e86dd8aa3afd78a4bfdb4ef918165 depends: - libgcc >=13 - xorg-libx11 >=1.8.9,<2.0a0 + arch: aarch64 + platform: linux license: MIT license_family: MIT size: 50746 timestamp: 1727754268156 -- kind: conda - name: xorg-libxext - version: 1.3.6 - build: hb9d3cd8_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxext-1.3.6-hb9d3cd8_0.conda - sha256: da5dc921c017c05f38a38bd75245017463104457b63a1ce633ed41f214159c14 - md5: febbab7d15033c913d53c7a2c102309d +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxfixes-6.0.1-hb9d3cd8_0.conda + sha256: 2fef37e660985794617716eb915865ce157004a4d567ed35ec16514960ae9271 + md5: 4bdb303603e9821baf5fe5fdff1dc8f8 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - xorg-libx11 >=1.8.10,<2.0a0 + arch: x86_64 + platform: linux license: MIT license_family: MIT - size: 50060 - timestamp: 1727752228921 -- kind: conda - name: xorg-libxfixes - version: 6.0.1 - build: h57736b2_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxfixes-6.0.1-h57736b2_0.conda + size: 19575 + timestamp: 1727794961233 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxfixes-6.0.1-h57736b2_0.conda sha256: f5c71e0555681a82a65c483374b91d91b2cb9a9903b3a22ddc00f36719fce549 md5: 78f8715c002cc66991d7c11e3cf66039 depends: - libgcc >=13 - xorg-libx11 >=1.8.9,<2.0a0 + arch: aarch64 + platform: linux license: MIT license_family: MIT size: 20289 timestamp: 1727796500830 -- kind: conda - name: xorg-libxfixes - version: 6.0.1 - build: hb9d3cd8_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxfixes-6.0.1-hb9d3cd8_0.conda - sha256: 2fef37e660985794617716eb915865ce157004a4d567ed35ec16514960ae9271 - md5: 4bdb303603e9821baf5fe5fdff1dc8f8 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrender-0.9.12-hb9d3cd8_0.conda + sha256: 044c7b3153c224c6cedd4484dd91b389d2d7fd9c776ad0f4a34f099b3389f4a1 + md5: 96d57aba173e878a2089d5638016dc5e depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - xorg-libx11 >=1.8.10,<2.0a0 + arch: x86_64 + platform: linux license: MIT license_family: MIT - size: 19575 - timestamp: 1727794961233 -- kind: conda - name: xorg-libxrender - version: 0.9.12 - build: h86ecc28_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxrender-0.9.12-h86ecc28_0.conda + size: 33005 + timestamp: 1734229037766 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxrender-0.9.12-h86ecc28_0.conda sha256: ffd77ee860c9635a28cfda46163dcfe9224dc6248c62404c544ae6b564a0be1f md5: ae2c2dd0e2d38d249887727db2af960e depends: - libgcc >=13 - xorg-libx11 >=1.8.10,<2.0a0 + arch: aarch64 + platform: linux license: MIT license_family: MIT size: 33649 timestamp: 1734229123157 -- kind: conda - name: xorg-libxrender - version: 0.9.12 - build: hb9d3cd8_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrender-0.9.12-hb9d3cd8_0.conda - sha256: 044c7b3153c224c6cedd4484dd91b389d2d7fd9c776ad0f4a34f099b3389f4a1 - md5: 96d57aba173e878a2089d5638016dc5e +- conda: https://conda.anaconda.org/conda-forge/linux-64/xxhash-0.8.2-hd590300_0.conda + sha256: 6fe74a8fd84ab0dc25e4dc3e0c22388dd8accb212897a208b14fe5d4fbb8fc2f + md5: f08fb5c89edfc4aadee1c81d4cfb1fa1 depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - xorg-libx11 >=1.8.10,<2.0a0 - license: MIT - license_family: MIT - size: 33005 - timestamp: 1734229037766 -- kind: conda - name: xxhash - version: 0.8.2 - build: h31becfc_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/xxhash-0.8.2-h31becfc_0.conda + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + size: 97691 + timestamp: 1689951608120 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xxhash-0.8.2-h31becfc_0.conda sha256: 4c526aed70b579d80e5c20d32130b6bc8bde59b3250d43c2b5269755f4da8a9b md5: bb9faf6857108a9f62ebb4dab6ef05da depends: - libgcc-ng >=12 + arch: aarch64 + platform: linux license: BSD-2-Clause license_family: BSD size: 102442 timestamp: 1689951682147 -- kind: conda - name: xxhash - version: 0.8.2 - build: hb547adb_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/xxhash-0.8.2-hb547adb_0.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/xxhash-0.8.2-hb547adb_0.conda sha256: a70f59f7221ee72c45b39a6b36a33eb9c717ba01921cce1a3c361a4676979a2e md5: 144cd3b88706507f332f5eb5fb83a33b + arch: arm64 + platform: osx license: BSD-2-Clause license_family: BSD size: 97593 timestamp: 1689951969732 -- kind: conda - name: xxhash - version: 0.8.2 - build: hd590300_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/xxhash-0.8.2-hd590300_0.conda - sha256: 6fe74a8fd84ab0dc25e4dc3e0c22388dd8accb212897a208b14fe5d4fbb8fc2f - md5: f08fb5c89edfc4aadee1c81d4cfb1fa1 - depends: - - libgcc-ng >=12 - license: BSD-2-Clause - license_family: BSD - size: 97691 - timestamp: 1689951608120 -- kind: conda - name: yaml - version: 0.2.5 - build: h3422bc3_2 - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 - sha256: 93181a04ba8cfecfdfb162fc958436d868cc37db504c58078eab4c1a3e57fbb7 - md5: 4bb3f014845110883a3c5ee811fd84b4 - license: MIT - license_family: MIT - size: 88016 - timestamp: 1641347076660 -- kind: conda - name: yaml - version: 0.2.5 - build: h7f98852_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 sha256: a4e34c710eeb26945bdbdaba82d3d74f60a78f54a874ec10d373811a5d217535 md5: 4cb3ad778ec2d5a7acbdf254eb1c42ae depends: - libgcc-ng >=9.4.0 + arch: x86_64 + platform: linux license: MIT license_family: MIT size: 89141 timestamp: 1641346969816 -- kind: conda - name: yaml - version: 0.2.5 - build: hf897c2e_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/yaml-0.2.5-hf897c2e_2.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yaml-0.2.5-hf897c2e_2.tar.bz2 sha256: 8bc601d6dbe249eba44b3c456765265cd8f42ef1e778f8df9b0c9c88b8558d7e md5: b853307650cb226731f653aa623936a4 depends: - libgcc-ng >=9.4.0 + arch: aarch64 + platform: linux license: MIT license_family: MIT size: 92927 timestamp: 1641347626613 -- kind: conda - name: yarl - version: 1.18.3 - build: py312h66e93f0_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.18.3-py312h66e93f0_0.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 + sha256: 93181a04ba8cfecfdfb162fc958436d868cc37db504c58078eab4c1a3e57fbb7 + md5: 4bb3f014845110883a3c5ee811fd84b4 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 88016 + timestamp: 1641347076660 +- conda: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.18.3-py312h66e93f0_0.conda sha256: a0d93c3bef723e384cff8a29a82a2c6b7a73b39328088f3a2d97c901f56e9a63 md5: 91df2efaa08730416bec2a4502309275 depends: @@ -11661,16 +9232,13 @@ packages: - propcache >=0.2.1 - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux license: Apache-2.0 license_family: Apache size: 151393 timestamp: 1733428897813 -- kind: conda - name: yarl - version: 1.18.3 - build: py312hb2c0f52_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.18.3-py312hb2c0f52_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.18.3-py312hb2c0f52_0.conda sha256: 470b5b0f3ac89acd143095281167dc2ac1a56d4fa22e1794bd8f3b00bb604540 md5: 0b3c640697bca798d0ab428f530ed24c depends: @@ -11681,16 +9249,13 @@ packages: - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux license: Apache-2.0 license_family: Apache size: 150004 timestamp: 1733429056665 -- kind: conda - name: yarl - version: 1.18.3 - build: py312hea69d52_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.18.3-py312hea69d52_0.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.18.3-py312hea69d52_0.conda sha256: 69c7863809e11bc90c0d935c16e7f151dcc925add08b3894f06059263a8cb9ba md5: f32f9b16361866a62d6e061fcd7eb400 depends: @@ -11701,17 +9266,13 @@ packages: - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx license: Apache-2.0 license_family: Apache size: 141556 timestamp: 1733429104990 -- kind: conda - name: zeromq - version: 4.3.5 - build: h3b0a872_7 - build_number: 7 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda sha256: a4dc72c96848f764bb5a5176aa93dd1e9b9e52804137b99daeebba277b31ea10 md5: 3947a35e916fcc6b9825449affbf4214 depends: @@ -11720,17 +9281,13 @@ packages: - libgcc >=13 - libsodium >=1.0.20,<1.0.21.0a0 - libstdcxx >=13 + arch: x86_64 + platform: linux license: MPL-2.0 license_family: MOZILLA size: 335400 timestamp: 1731585026517 -- kind: conda - name: zeromq - version: 4.3.5 - build: h5efb499_7 - build_number: 7 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/zeromq-4.3.5-h5efb499_7.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zeromq-4.3.5-h5efb499_7.conda sha256: a6003096dc0570a86492040ba32b04ce7662b159600be2252b7a0dfb9414e21c md5: f2f3282559a4b87b7256ecafb4610107 depends: @@ -11738,17 +9295,13 @@ packages: - libgcc >=13 - libsodium >=1.0.20,<1.0.21.0a0 - libstdcxx >=13 + arch: aarch64 + platform: linux license: MPL-2.0 license_family: MOZILLA size: 371419 timestamp: 1731589490850 -- kind: conda - name: zeromq - version: 4.3.5 - build: hc1bb282_7 - build_number: 7 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda sha256: 9e585569fe2e7d3bea71972cd4b9f06b1a7ab8fa7c5139f92a31cbceecf25a8a md5: f7e6b65943cb73bce0143737fded08f1 depends: @@ -11756,18 +9309,13 @@ packages: - krb5 >=1.21.3,<1.22.0a0 - libcxx >=18 - libsodium >=1.0.20,<1.0.21.0a0 + arch: arm64 + platform: osx license: MPL-2.0 license_family: MOZILLA size: 281565 timestamp: 1731585108039 -- kind: conda - name: zipp - version: 3.21.0 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda sha256: 567c04f124525c97a096b65769834b7acb047db24b15a56888a322bf3966c3e1 md5: 0c3cc595284c5e8f0f9900a9b228a332 depends: @@ -11776,34 +9324,24 @@ packages: license_family: MIT size: 21809 timestamp: 1732827613585 -- kind: conda - name: zstandard - version: 0.23.0 - build: py312h15fbf35_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py312h15fbf35_1.conda - sha256: d00ca25c1e28fd31199b26a94f8c96574475704a825d244d7a6351ad3745eeeb - md5: a4cde595509a7ad9c13b1a3809bcfe51 +- conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312hef9b889_1.conda + sha256: b97015e146437283f2213ff0e95abdc8e2480150634d81fbae6b96ee09f5e50b + md5: 8b7069e9792ee4e5b4919a7a306d2e67 depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 - cffi >=1.11 + - libgcc >=13 - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 - zstd >=1.5.6,<1.5.7.0a0 - zstd >=1.5.6,<1.6.0a0 + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD - size: 330788 - timestamp: 1725305806565 -- kind: conda - name: zstandard - version: 0.23.0 - build: py312hb698573_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/zstandard-0.23.0-py312hb698573_1.conda + size: 419552 + timestamp: 1725305670210 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstandard-0.23.0-py312hb698573_1.conda sha256: 2681c2a249752bdc7978e59ee2f34fcdfcbfda80029b84b8e5fec8dbc9e3af25 md5: ffcb8e97e62af42075e0e5f46bb9856e depends: @@ -11814,74 +9352,63 @@ packages: - python_abi 3.12.* *_cp312 - zstd >=1.5.6,<1.5.7.0a0 - zstd >=1.5.6,<1.6.0a0 + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD size: 392496 timestamp: 1725305808244 -- kind: conda - name: zstandard - version: 0.23.0 - build: py312hef9b889_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312hef9b889_1.conda - sha256: b97015e146437283f2213ff0e95abdc8e2480150634d81fbae6b96ee09f5e50b - md5: 8b7069e9792ee4e5b4919a7a306d2e67 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py312h15fbf35_1.conda + sha256: d00ca25c1e28fd31199b26a94f8c96574475704a825d244d7a6351ad3745eeeb + md5: a4cde595509a7ad9c13b1a3809bcfe51 depends: - - __glibc >=2.17,<3.0.a0 + - __osx >=11.0 - cffi >=1.11 - - libgcc >=13 - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 - zstd >=1.5.6,<1.5.7.0a0 - zstd >=1.5.6,<1.6.0a0 + arch: arm64 + platform: osx license: BSD-3-Clause license_family: BSD - size: 419552 - timestamp: 1725305670210 -- kind: conda - name: zstd - version: 1.5.6 - build: h02f22dd_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.6-h02f22dd_0.conda - sha256: 484f9d0722c77685ae379fbff3ccd662af9ead7e59eb39cd6d0c677cdf25ff6c - md5: be8d5f8cf21aed237b8b182ea86b3dd6 + size: 330788 + timestamp: 1725305806565 +- conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda + sha256: c558b9cc01d9c1444031bd1ce4b9cff86f9085765f17627a6cd85fc623c8a02b + md5: 4d056880988120e29d75bfff282e0f45 depends: - libgcc-ng >=12 - libstdcxx-ng >=12 - libzlib >=1.2.13,<2.0.0a0 + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD - size: 539937 - timestamp: 1714723130243 -- kind: conda - name: zstd - version: 1.5.6 - build: ha6fb4c9_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda - sha256: c558b9cc01d9c1444031bd1ce4b9cff86f9085765f17627a6cd85fc623c8a02b - md5: 4d056880988120e29d75bfff282e0f45 + size: 554846 + timestamp: 1714722996770 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.6-h02f22dd_0.conda + sha256: 484f9d0722c77685ae379fbff3ccd662af9ead7e59eb39cd6d0c677cdf25ff6c + md5: be8d5f8cf21aed237b8b182ea86b3dd6 depends: - libgcc-ng >=12 - libstdcxx-ng >=12 - libzlib >=1.2.13,<2.0.0a0 + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD - size: 554846 - timestamp: 1714722996770 -- kind: conda - name: zstd - version: 1.5.6 - build: hb46c0d2_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.6-hb46c0d2_0.conda + size: 539937 + timestamp: 1714723130243 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.6-hb46c0d2_0.conda sha256: 2d4fd1ff7ee79cd954ca8e81abf11d9d49954dd1fef80f27289e2402ae9c2e09 md5: d96942c06c3e84bfcc5efb038724a7fd depends: - __osx >=11.0 - libzlib >=1.2.13,<2.0.0a0 + arch: arm64 + platform: osx license: BSD-3-Clause license_family: BSD size: 405089 diff --git a/examples/magic.lock b/examples/magic.lock index f98b64cfd2..f73f236929 100644 --- a/examples/magic.lock +++ b/examples/magic.lock @@ -1,4 +1,4 @@ -version: 5 +version: 6 environments: default: channels: @@ -131,12 +131,12 @@ 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-25.1.0.dev2025010817-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025010817-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025010817-3.11release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025010817-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011022-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025011022-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025011022-3.11release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011022-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-25.1.0.dev2025010817-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011022-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 @@ -164,7 +164,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-18.1.0-py311h38be061_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-18.1.0-py311h4854187_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.4-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.5-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.27.2-py311h9e33e62_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.7.1-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda @@ -188,7 +188,7 @@ environments: - 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.10-hb5b8611_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/safetensors-0.5.1-py311h9e33e62_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/safetensors-0.5.2-py311h9e33e62_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-h8bd8927_1.conda @@ -200,7 +200,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py311h9ecbd09_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.48.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda @@ -211,7 +211,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.34.0-pyh31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.34.0-h31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/uvloop-0.21.0-py311h9ecbd09_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/watchfiles-1.0.3-py311h9e33e62_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/watchfiles-1.0.4-py311h9e33e62_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/websockets-14.1-py311h9ecbd09_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.17.0-py311h9ecbd09_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-hb9d3cd8_0.conda @@ -349,12 +349,12 @@ 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-25.1.0.dev2025010817-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025010817-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025010817-3.11release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025010817-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011022-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025011022-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025011022-3.11release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011022-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-25.1.0.dev2025010817-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011022-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 @@ -382,7 +382,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-18.1.0-py311hfecb2dc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-18.1.0-py311ha6d2531_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.4-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.5-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pydantic-core-2.27.2-py311h0ca61a2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.7.1-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda @@ -406,7 +406,7 @@ environments: - 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.10-h5df210e_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/safetensors-0.5.1-py311h0ca61a2_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/safetensors-0.5.2-py311h0ca61a2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-hd4fb6f5_1.conda @@ -418,7 +418,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py311h5487e9b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.48.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda @@ -429,7 +429,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.34.0-pyh31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.34.0-h31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/uvloop-0.21.0-py311ha879c10_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/watchfiles-1.0.3-py311h0ca61a2_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/watchfiles-1.0.4-py311h0ca61a2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/websockets-14.1-py311ha879c10_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/wrapt-1.17.0-py311ha879c10_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxau-1.0.12-h86ecc28_0.conda @@ -558,12 +558,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-25.1.0.dev2025010817-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025010817-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025010817-3.11release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025010817-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011022-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025011022-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025011022-3.11release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011022-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-25.1.0.dev2025010817-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011022-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 @@ -591,7 +591,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-18.1.0-py311ha1ab1f8_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-18.1.0-py311he04fa90_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.4-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.5-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.27.2-py311h3ff9189_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.7.1-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda @@ -614,7 +614,7 @@ environments: - 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.5.1-py311h3ff9189_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/safetensors-0.5.2-py311h3ff9189_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-h98b9ce2_1.conda @@ -626,7 +626,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py311h917b07b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.48.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda @@ -637,7 +637,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.34.0-pyh31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.34.0-h31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/uvloop-0.21.0-py311hae2e1ce_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/watchfiles-1.0.3-py311h3ff9189_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/watchfiles-1.0.4-py311h3ff9189_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/websockets-14.1-py311h917b07b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/wrapt-1.17.0-py311h917b07b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxau-1.0.12-h5505292_0.conda @@ -650,24 +650,16 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py311ha60cc69_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.6-hb46c0d2_0.conda packages: -- kind: conda - name: _libgcc_mutex - version: '0.1' - build: conda_forge - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 sha256: fe51de6107f9edc7aa4f786a70f4a883943bc9d39b3bb7307c04c41410990726 md5: d7c89558ba9fa0495403155b64376d81 + arch: x86_64 + platform: linux license: None size: 2562 timestamp: 1578324546067 -- kind: conda - name: _openmp_mutex - version: '4.5' - build: 2_gnu +- conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 build_number: 16 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 sha256: fbe2c5e56a653bebb982eda4876a9178aedfc2b545f25d0ce9c4c0b508253d22 md5: 73aaf86a425cc6e73fcf236a5a46396d depends: @@ -675,35 +667,27 @@ packages: - libgomp >=7.5.0 constrains: - openmp_impl 9999 + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD size: 23621 timestamp: 1650670423406 -- kind: conda - name: _openmp_mutex - version: '4.5' - build: 2_gnu +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2 build_number: 16 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2 sha256: 3702bef2f0a4d38bd8288bbe54aace623602a1343c2cfbefd3fa188e015bebf0 md5: 6168d71addc746e8f2b8d57dfd2edcea depends: - libgomp >=7.5.0 constrains: - openmp_impl 9999 + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD size: 23712 timestamp: 1650670790230 -- kind: conda - name: aiohappyeyeballs - version: 2.4.4 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_1.conda sha256: 95d4713e49ea92ae50cf42393683ede706b7875af5f7cb14c253438180afa732 md5: 296b403617bafa89df4971567af79013 depends: @@ -712,12 +696,7 @@ packages: license_family: PSF size: 19351 timestamp: 1733332029649 -- kind: conda - name: aiohttp - version: 3.11.11 - build: py311h2dc5d0c_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.11-py311h2dc5d0c_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.11-py311h2dc5d0c_0.conda sha256: 36f9d3a88ece3048582551435f85f494911c805b188650b2589ffded2b52d74f md5: 098c05da2799d9300eec94c24a7c8bda depends: @@ -732,65 +711,55 @@ packages: - python >=3.11,<3.12.0a0 - python_abi 3.11.* *_cp311 - yarl >=1.17.0,<2.0 + arch: x86_64 + platform: linux license: MIT AND Apache-2.0 license_family: Apache size: 922661 timestamp: 1734597050134 -- kind: conda - name: aiohttp - version: 3.11.11 - build: py311h4921393_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.11-py311h4921393_0.conda - sha256: ab72cf46f71f1a611c0ad9a8abf144b8cfd6d5d49363513d9a9d9c14d97ead97 - md5: a478957d38ef52e856c11429fd505ec6 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.11-py311h58d527c_0.conda + sha256: c2e4d66d513172964276b234f4ce083ced8bbcad66dd587af43712c3c64f0aa8 + md5: 768cae9a9d28a575e7242f189b5fefb7 depends: - - __osx >=11.0 - aiohappyeyeballs >=2.3.0 - aiosignal >=1.1.2 - attrs >=17.3.0 - frozenlist >=1.1.1 + - libgcc >=13 - multidict >=4.5,<7.0 - propcache >=0.2.0 - python >=3.11,<3.12.0a0 - python >=3.11,<3.12.0a0 *_cpython - python_abi 3.11.* *_cp311 - yarl >=1.17.0,<2.0 + arch: aarch64 + platform: linux license: MIT AND Apache-2.0 license_family: Apache - size: 881820 - timestamp: 1734597274648 -- kind: conda - name: aiohttp - version: 3.11.11 - build: py311h58d527c_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.11-py311h58d527c_0.conda - sha256: c2e4d66d513172964276b234f4ce083ced8bbcad66dd587af43712c3c64f0aa8 - md5: 768cae9a9d28a575e7242f189b5fefb7 + size: 915731 + timestamp: 1734597110765 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.11-py311h4921393_0.conda + sha256: ab72cf46f71f1a611c0ad9a8abf144b8cfd6d5d49363513d9a9d9c14d97ead97 + md5: a478957d38ef52e856c11429fd505ec6 depends: + - __osx >=11.0 - aiohappyeyeballs >=2.3.0 - aiosignal >=1.1.2 - attrs >=17.3.0 - frozenlist >=1.1.1 - - libgcc >=13 - multidict >=4.5,<7.0 - propcache >=0.2.0 - python >=3.11,<3.12.0a0 - python >=3.11,<3.12.0a0 *_cpython - python_abi 3.11.* *_cp311 - yarl >=1.17.0,<2.0 + arch: arm64 + platform: osx license: MIT AND Apache-2.0 license_family: Apache - size: 915731 - timestamp: 1734597110765 -- kind: conda - name: aiosignal - version: 1.3.2 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda + size: 881820 + timestamp: 1734597274648 +- conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda sha256: 7de8ced1918bbdadecf8e1c1c68237fe5709c097bd9e0d254f4cad118f4345d0 md5: 1a3981115a398535dbe3f6d5faae3d36 depends: @@ -800,14 +769,7 @@ packages: license_family: APACHE size: 13229 timestamp: 1734342253061 -- kind: conda - name: annotated-types - version: 0.7.0 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda sha256: e0ea1ba78fbb64f17062601edda82097fcf815012cf52bb704150a2668110d48 md5: 2934f256a8acfe48f6ebb4fce6cde29c depends: @@ -817,13 +779,7 @@ packages: license_family: MIT size: 18074 timestamp: 1733247158254 -- kind: conda - name: anyio - version: 4.8.0 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/anyio-4.8.0-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.8.0-pyhd8ed1ab_0.conda sha256: f1455d2953e3eb6d71bc49881c8558d8e01888469dfd21061dd48afb6183e836 md5: 848d25bfbadf020ee4d4ba90e5668252 depends: @@ -839,13 +795,7 @@ packages: license_family: MIT size: 115305 timestamp: 1736174485476 -- kind: conda - name: attrs - version: 24.3.0 - build: pyh71513ae_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/attrs-24.3.0-pyh71513ae_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.3.0-pyh71513ae_0.conda sha256: 750186af694a7130eaf7119fbb56db0d2326d8995ad5b8eae23c622b85fea29a md5: 356927ace43302bf6f5926e2a58dae6a depends: @@ -854,13 +804,24 @@ packages: license_family: MIT size: 56354 timestamp: 1734348889193 -- kind: conda - name: aws-c-auth - version: 0.8.0 - build: h2cb9fb3_15 - build_number: 15 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-h2cb9fb3_15.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-hb921021_15.conda + sha256: 537006ad6d5097c134494166a6a1dc1451d5d050878d7b82cef498bfda40ba8a + md5: c79d50f64cffa5ad51ecc1a81057962f + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 107614 + timestamp: 1734021692519 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-h2cb9fb3_15.conda sha256: 4ce859dc9ff128bf5515604c43f33fb511386022fc9765ca077990f2a3f23df5 md5: e524686ace966acefb5b8cbc6e8b3daa depends: @@ -870,17 +831,13 @@ packages: - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - libgcc >=13 + arch: aarch64 + platform: linux license: Apache-2.0 license_family: Apache size: 111854 timestamp: 1734021745104 -- kind: conda - name: aws-c-auth - version: 0.8.0 - build: h8bc59a9_15 - build_number: 15 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-h8bc59a9_15.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-h8bc59a9_15.conda sha256: 0e41e56b662e76e024182adebcd91d09a4d38a83b35217c84e4967354dfff9a2 md5: f688b8893c20ad9477a19e7ce614014a depends: @@ -890,38 +847,13 @@ packages: - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 + arch: arm64 + platform: osx license: Apache-2.0 license_family: Apache size: 92507 timestamp: 1734021831330 -- kind: conda - name: aws-c-auth - version: 0.8.0 - build: hb921021_15 - build_number: 15 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-hb921021_15.conda - sha256: 537006ad6d5097c134494166a6a1dc1451d5d050878d7b82cef498bfda40ba8a - md5: c79d50f64cffa5ad51ecc1a81057962f - depends: - - __glibc >=2.17,<3.0.a0 - - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - aws-c-http >=0.9.2,<0.9.3.0a0 - - aws-c-io >=0.15.3,<0.15.4.0a0 - - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - - libgcc >=13 - license: Apache-2.0 - license_family: Apache - size: 107614 - timestamp: 1734021692519 -- kind: conda - name: aws-c-cal - version: 0.8.1 - build: h1a47875_3 - build_number: 3 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.1-h1a47875_3.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.1-h1a47875_3.conda sha256: 095ac824ea9303eff67e04090ae531d9eb33d2bf8f82eaade39b839c421e16e8 md5: 55a8561fdbbbd34f50f57d9be12ed084 depends: @@ -929,162 +861,110 @@ packages: - aws-c-common >=0.10.6,<0.10.7.0a0 - libgcc >=13 - openssl >=3.3.1,<4.0a0 + arch: x86_64 + platform: linux license: Apache-2.0 license_family: Apache size: 47601 timestamp: 1733991564405 -- kind: conda - name: aws-c-cal - version: 0.8.1 - build: h740c5af_3 - build_number: 3 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.1-h740c5af_3.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.1-h740c5af_3.conda sha256: c5c7961d48ca7320ed3560c036f7aa5244df4b85d9657f70aacc5faba3e1509a md5: 57ed2c445d7ef01d121b9bcea0522913 depends: - aws-c-common >=0.10.6,<0.10.7.0a0 - libgcc >=13 - openssl >=3.3.1,<4.0a0 + arch: aarch64 + platform: linux license: Apache-2.0 license_family: Apache size: 50036 timestamp: 1733991581303 -- kind: conda - name: aws-c-cal - version: 0.8.1 - build: hc8a0bd2_3 - build_number: 3 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.1-hc8a0bd2_3.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.1-hc8a0bd2_3.conda sha256: 1f44be36e1daa17b4b081debb8aee492d13571084f38b503ad13e869fef24fe4 md5: 8b0ce61384e5a33d2b301a64f3d22ac5 depends: - __osx >=11.0 - aws-c-common >=0.10.6,<0.10.7.0a0 - openssl >=3.3.1,<4.0a0 + arch: arm64 + platform: osx license: Apache-2.0 license_family: Apache size: 39925 timestamp: 1733991649383 -- kind: conda - name: aws-c-common - version: 0.10.6 - build: h5505292_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.10.6-h5505292_0.conda - sha256: 3bde135c8e74987c0f79ecd4fa17ec9cff0d658b3090168727ca1af3815ae57a - md5: 145e5b4c9702ed279d7d68aaf096f77d +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.10.6-hb9d3cd8_0.conda + sha256: 496e92f2150fdc351eacf6e236015deedb3d0d3114f8e5954341cbf9f3dda257 + md5: d7d4680337a14001b0e043e96529409b depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux license: Apache-2.0 license_family: Apache - size: 221863 - timestamp: 1733975576886 -- kind: conda - name: aws-c-common - version: 0.10.6 - build: h86ecc28_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-common-0.10.6-h86ecc28_0.conda + size: 236574 + timestamp: 1733975453350 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-common-0.10.6-h86ecc28_0.conda sha256: 57288ec5df35781bea8fc6a8c9099cad6695b747784fc1b8862a0f9e5b3bf5ab md5: fef806a0f6de853670c746bbece01966 depends: - libgcc >=13 + arch: aarch64 + platform: linux license: Apache-2.0 license_family: Apache size: 259031 timestamp: 1733975520465 -- kind: conda - name: aws-c-common - version: 0.10.6 - build: hb9d3cd8_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.10.6-hb9d3cd8_0.conda - sha256: 496e92f2150fdc351eacf6e236015deedb3d0d3114f8e5954341cbf9f3dda257 - md5: d7d4680337a14001b0e043e96529409b +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.10.6-h5505292_0.conda + sha256: 3bde135c8e74987c0f79ecd4fa17ec9cff0d658b3090168727ca1af3815ae57a + md5: 145e5b4c9702ed279d7d68aaf096f77d + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 221863 + timestamp: 1733975576886 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.3.0-h4e1184b_5.conda + sha256: 62ca84da83585e7814a40240a1e750b1563b2680b032a471464eccc001c3309b + md5: 3f4c1197462a6df2be6dc8241828fe93 depends: - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 - libgcc >=13 + arch: x86_64 + platform: linux license: Apache-2.0 license_family: Apache - size: 236574 - timestamp: 1733975453350 -- kind: conda - name: aws-c-compression - version: 0.3.0 - build: h0f0193d_5 - build_number: 5 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-compression-0.3.0-h0f0193d_5.conda + size: 19086 + timestamp: 1733991637424 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-compression-0.3.0-h0f0193d_5.conda sha256: 3f05d19f68ef800f33d44ea2a4211003124076516c8469abc7d432236344df53 md5: 3a1421d12435df5b4c412cc4c8fac64d depends: - aws-c-common >=0.10.6,<0.10.7.0a0 - libgcc >=13 + arch: aarch64 + platform: linux license: Apache-2.0 license_family: Apache size: 19740 timestamp: 1733991625201 -- kind: conda - name: aws-c-compression - version: 0.3.0 - build: h4e1184b_5 - build_number: 5 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.3.0-h4e1184b_5.conda - sha256: 62ca84da83585e7814a40240a1e750b1563b2680b032a471464eccc001c3309b - md5: 3f4c1197462a6df2be6dc8241828fe93 - depends: - - __glibc >=2.17,<3.0.a0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - libgcc >=13 - license: Apache-2.0 - license_family: Apache - size: 19086 - timestamp: 1733991637424 -- kind: conda - name: aws-c-compression - version: 0.3.0 - build: hc8a0bd2_5 - build_number: 5 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-compression-0.3.0-hc8a0bd2_5.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-compression-0.3.0-hc8a0bd2_5.conda sha256: 47b2813f652ce7e64ac442f771b2a5f7d4af4ad0d07ff51f6075ea80ed2e3f09 md5: a8b6c17732d14ed49d0e9b59c43186bc depends: - __osx >=11.0 - aws-c-common >=0.10.6,<0.10.7.0a0 + arch: arm64 + platform: osx license: Apache-2.0 license_family: Apache size: 18068 timestamp: 1733991869211 -- kind: conda - name: aws-c-event-stream - version: 0.5.0 - build: h54f970a_11 - build_number: 11 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.0-h54f970a_11.conda - sha256: f0667935f4e0d4c25e0e51da035640310b5ceeb8f723156734439bde8b848d7d - md5: ba41238f8e653998d7d2f42e3a8db054 - depends: - - __osx >=11.0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - aws-c-io >=0.15.3,<0.15.4.0a0 - - aws-checksums >=0.2.2,<0.2.3.0a0 - - libcxx >=18 - license: Apache-2.0 - license_family: Apache - size: 47078 - timestamp: 1734024749727 -- kind: conda - name: aws-c-event-stream - version: 0.5.0 - build: h7959bf6_11 - build_number: 11 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.0-h7959bf6_11.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.0-h7959bf6_11.conda sha256: 10d7240c7db0c941fb1a59c4f8ea6689a434b03309ee7b766fa15a809c553c02 md5: 9b3fb60fe57925a92f399bc3fc42eccf depends: @@ -1094,17 +974,13 @@ packages: - aws-checksums >=0.2.2,<0.2.3.0a0 - libgcc >=13 - libstdcxx >=13 + arch: x86_64 + platform: linux license: Apache-2.0 license_family: Apache size: 54003 timestamp: 1734024480949 -- kind: conda - name: aws-c-event-stream - version: 0.5.0 - build: hcbd8f92_11 - build_number: 11 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-event-stream-0.5.0-hcbd8f92_11.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-event-stream-0.5.0-hcbd8f92_11.conda sha256: 79aa363c71c891a27496c0498f8d498b2ddc87b3ccb3b6c9da5b50b05936ebb8 md5: e0772c59af4243a9b2565baa5d79e5b6 depends: @@ -1113,17 +989,44 @@ packages: - aws-checksums >=0.2.2,<0.2.3.0a0 - libgcc >=13 - libstdcxx >=13 + arch: aarch64 + platform: linux license: Apache-2.0 license_family: Apache size: 55207 timestamp: 1734024546663 -- kind: conda - name: aws-c-http - version: 0.9.2 - build: h3df160d_4 - build_number: 4 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.2-h3df160d_4.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.0-h54f970a_11.conda + sha256: f0667935f4e0d4c25e0e51da035640310b5ceeb8f723156734439bde8b848d7d + md5: ba41238f8e653998d7d2f42e3a8db054 + depends: + - __osx >=11.0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + - libcxx >=18 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 47078 + timestamp: 1734024749727 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.2-hefd7a92_4.conda + sha256: 4a330206bd51148f6c13ca0b7a4db40f29a46f090642ebacdeb88b8a4abd7f99 + md5: 5ce4df662d32d3123ea8da15571b6f51 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-compression >=0.3.0,<0.3.1.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 197731 + timestamp: 1734008380764 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.2-h3df160d_4.conda sha256: 3a1d2d332945306be9d49e569b95e4cc172d825f10e88715513a172f28ebb59e md5: 28f00aa7fd9556c4c461328cf146c20b depends: @@ -1132,17 +1035,13 @@ packages: - aws-c-compression >=0.3.0,<0.3.1.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - libgcc >=13 + arch: aarch64 + platform: linux license: Apache-2.0 license_family: Apache size: 190586 timestamp: 1734008442362 -- kind: conda - name: aws-c-http - version: 0.9.2 - build: h96aa502_4 - build_number: 4 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.2-h96aa502_4.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.2-h96aa502_4.conda sha256: 22e4737c8a885995b7c1ae1d79c1f6e78d489e16ec079615980fdde067aeaf76 md5: 495c93a4f08b17deb3c04894512330e6 depends: @@ -1151,37 +1050,28 @@ packages: - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-compression >=0.3.0,<0.3.1.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 + arch: arm64 + platform: osx license: Apache-2.0 license_family: Apache size: 152983 timestamp: 1734008451473 -- kind: conda - name: aws-c-http - version: 0.9.2 - build: hefd7a92_4 - build_number: 4 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.2-hefd7a92_4.conda - sha256: 4a330206bd51148f6c13ca0b7a4db40f29a46f090642ebacdeb88b8a4abd7f99 - md5: 5ce4df662d32d3123ea8da15571b6f51 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-h831e299_5.conda + sha256: 5920009b1c6f9a2bc131a36725251894e4b4773fce29c4b1065d4213ae337abe + md5: 80dd9f0ddf935290d1dc00ec75ff3023 depends: - __glibc >=2.17,<3.0.a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.6,<0.10.7.0a0 - - aws-c-compression >=0.3.0,<0.3.1.0a0 - - aws-c-io >=0.15.3,<0.15.4.0a0 - libgcc >=13 + - s2n >=1.5.10,<1.5.11.0a0 + arch: x86_64 + platform: linux license: Apache-2.0 license_family: Apache - size: 197731 - timestamp: 1734008380764 -- kind: conda - name: aws-c-io - version: 0.15.3 - build: h1a307af_5 - build_number: 5 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-h1a307af_5.conda + size: 157864 + timestamp: 1734433578570 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-h1a307af_5.conda sha256: 71f5bf891299f831dceaea12f926c393bf754569e5305387a88b77e1f94612d8 md5: da8ab0f3eeac93449ec3d531ede92caa depends: @@ -1189,53 +1079,26 @@ packages: - aws-c-common >=0.10.6,<0.10.7.0a0 - libgcc >=13 - s2n >=1.5.10,<1.5.11.0a0 + arch: aarch64 + platform: linux license: Apache-2.0 license_family: Apache size: 161889 timestamp: 1734433686109 -- kind: conda - name: aws-c-io - version: 0.15.3 - build: h831e299_5 - build_number: 5 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-h831e299_5.conda - sha256: 5920009b1c6f9a2bc131a36725251894e4b4773fce29c4b1065d4213ae337abe - md5: 80dd9f0ddf935290d1dc00ec75ff3023 - depends: - - __glibc >=2.17,<3.0.a0 - - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - libgcc >=13 - - s2n >=1.5.10,<1.5.11.0a0 - license: Apache-2.0 - license_family: Apache - size: 157864 - timestamp: 1734433578570 -- kind: conda - name: aws-c-io - version: 0.15.3 - build: haba67d1_5 - build_number: 5 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-haba67d1_5.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-haba67d1_5.conda sha256: c0a1a2b0750225ac3dc07fd258c88c2be866bf8ac67ba3d50bb4ecec852ff8ee md5: 4c5ff4134e76426a75b8c548984fa933 depends: - __osx >=11.0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.6,<0.10.7.0a0 + arch: arm64 + platform: osx license: Apache-2.0 license_family: Apache size: 135729 timestamp: 1734433832730 -- kind: conda - name: aws-c-mqtt - version: 0.11.0 - build: h11f4f37_12 - build_number: 12 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h11f4f37_12.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h11f4f37_12.conda sha256: 512d3969426152d9d5fd886e27b13706122dc3fa90eb08c37b0d51a33d7bb14a md5: 96c3e0221fa2da97619ee82faa341a73 depends: @@ -1244,35 +1107,13 @@ packages: - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - libgcc >=13 + arch: x86_64 + platform: linux license: Apache-2.0 license_family: Apache size: 194672 timestamp: 1734025626798 -- kind: conda - name: aws-c-mqtt - version: 0.11.0 - build: h24f418c_12 - build_number: 12 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h24f418c_12.conda - sha256: 96575ea1dd2a9ea94763882e40a66dcbff9c41f702bf37c9514c4c719b3c11dd - md5: c072045a6206f88015d02fcba1705ea1 - depends: - - __osx >=11.0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - aws-c-http >=0.9.2,<0.9.3.0a0 - - aws-c-io >=0.15.3,<0.15.4.0a0 - license: Apache-2.0 - license_family: Apache - size: 134371 - timestamp: 1734025379525 -- kind: conda - name: aws-c-mqtt - version: 0.11.0 - build: h5f50e26_12 - build_number: 12 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h5f50e26_12.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h5f50e26_12.conda sha256: ffeb9100cc8fd4093e1a6fdfd938bc4a396dd77480b7fb17aa42855a4d5e2c70 md5: 031ca33115d4b1eeb43f435d6215778c depends: @@ -1280,36 +1121,46 @@ packages: - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - libgcc >=13 + arch: aarch64 + platform: linux license: Apache-2.0 license_family: Apache size: 169516 timestamp: 1734025167885 -- kind: conda - name: aws-c-s3 - version: 0.7.7 - build: h1be5864_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.7-h1be5864_0.conda - sha256: 22966164d63808689fffd35945f57756c95337327e28099b5d77b29fc6a56ecc - md5: a37bba7acb62dd70492ee01eacca3b8f +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h24f418c_12.conda + sha256: 96575ea1dd2a9ea94763882e40a66dcbff9c41f702bf37c9514c4c719b3c11dd + md5: c072045a6206f88015d02fcba1705ea1 depends: - __osx >=11.0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 134371 + timestamp: 1734025379525 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.7-hf454442_0.conda + sha256: c2f205a7bf64c5f40eea373b3a0a7c363c9aa9246a13dd7f3d9c6a4434c4fe2d + md5: 947c82025693bebd557f782bb5d6b469 + depends: + - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 + - libgcc >=13 + - openssl >=3.4.0,<4.0a0 + arch: x86_64 + platform: linux license: Apache-2.0 license_family: Apache - size: 97598 - timestamp: 1734146239038 -- kind: conda - name: aws-c-s3 - version: 0.7.7 - build: h2080895_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.7-h2080895_0.conda + size: 114156 + timestamp: 1734146123386 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.7-h2080895_0.conda sha256: 20bc2dd60e6518d9b8215c2b652ab5c52ee8a997d3b9a5f69e2dabd28cbf26b2 md5: ae223efa63fbb4262a2d85c3ab3bc4f5 depends: @@ -1321,141 +1172,108 @@ packages: - aws-checksums >=0.2.2,<0.2.3.0a0 - libgcc >=13 - openssl >=3.4.0,<4.0a0 + arch: aarch64 + platform: linux license: Apache-2.0 license_family: Apache size: 117641 timestamp: 1734146239779 -- kind: conda - name: aws-c-s3 - version: 0.7.7 - build: hf454442_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.7-hf454442_0.conda - sha256: c2f205a7bf64c5f40eea373b3a0a7c363c9aa9246a13dd7f3d9c6a4434c4fe2d - md5: 947c82025693bebd557f782bb5d6b469 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.7-h1be5864_0.conda + sha256: 22966164d63808689fffd35945f57756c95337327e28099b5d77b29fc6a56ecc + md5: a37bba7acb62dd70492ee01eacca3b8f depends: - - __glibc >=2.17,<3.0.a0 + - __osx >=11.0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - - libgcc >=13 - - openssl >=3.4.0,<4.0a0 - license: Apache-2.0 - license_family: Apache - size: 114156 - timestamp: 1734146123386 -- kind: conda - name: aws-c-sdkutils - version: 0.2.1 - build: h0f0193d_4 - build_number: 4 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.1-h0f0193d_4.conda - sha256: ede8e782467c87ac80ceb9c9af9e917d121b7d8b8c698186d18e3cecd36f2210 - md5: 53e798d720dd78b78847a7b2fdb05fc9 - depends: - - aws-c-common >=0.10.6,<0.10.7.0a0 - - libgcc >=13 + arch: arm64 + platform: osx license: Apache-2.0 license_family: Apache - size: 58621 - timestamp: 1733994421495 -- kind: conda - name: aws-c-sdkutils - version: 0.2.1 - build: h4e1184b_4 - build_number: 4 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.1-h4e1184b_4.conda + size: 97598 + timestamp: 1734146239038 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.1-h4e1184b_4.conda sha256: df586f42210af1134b1c88ff4c278c3cb6d6c807c84eac48860062464b28554d md5: a5126a90e74ac739b00564a4c7ddcc36 depends: - __glibc >=2.17,<3.0.a0 - aws-c-common >=0.10.6,<0.10.7.0a0 - libgcc >=13 + arch: x86_64 + platform: linux license: Apache-2.0 license_family: Apache size: 56094 timestamp: 1733994449690 -- kind: conda - name: aws-c-sdkutils - version: 0.2.1 - build: hc8a0bd2_4 - build_number: 4 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.1-hc8a0bd2_4.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.1-h0f0193d_4.conda + sha256: ede8e782467c87ac80ceb9c9af9e917d121b7d8b8c698186d18e3cecd36f2210 + md5: 53e798d720dd78b78847a7b2fdb05fc9 + depends: + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 58621 + timestamp: 1733994421495 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.1-hc8a0bd2_4.conda sha256: de98343ce42d2e569b3380292d20f47bf39bda08aadabcbb8e650d3f38fd742f md5: 22f72f8cd7ead211304ac17d337d96e0 depends: - __osx >=11.0 - aws-c-common >=0.10.6,<0.10.7.0a0 + arch: arm64 + platform: osx license: Apache-2.0 license_family: Apache size: 49664 timestamp: 1733994553014 -- kind: conda - name: aws-checksums - version: 0.2.2 - build: h0f0193d_4 - build_number: 4 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h0f0193d_4.conda - sha256: 9f1e3635a587bcf92b61d88c7af7d24cd89c147c6d0ae58afbde08e65bcf48da - md5: 3bd35b0adab3d743f09e0252cc441d6b - depends: - - aws-c-common >=0.10.6,<0.10.7.0a0 - - libgcc >=13 - license: Apache-2.0 - license_family: Apache - size: 72154 - timestamp: 1733994384415 -- kind: conda - name: aws-checksums - version: 0.2.2 - build: h4e1184b_4 - build_number: 4 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-h4e1184b_4.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-h4e1184b_4.conda sha256: 1ed9a332d06ad595694907fad2d6d801082916c27cd5076096fda4061e6d24a8 md5: 74e8c3e4df4ceae34aa2959df4b28101 depends: - __glibc >=2.17,<3.0.a0 - aws-c-common >=0.10.6,<0.10.7.0a0 - libgcc >=13 + arch: x86_64 + platform: linux license: Apache-2.0 license_family: Apache size: 72762 timestamp: 1733994347547 -- kind: conda - name: aws-checksums - version: 0.2.2 - build: hc8a0bd2_4 - build_number: 4 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-hc8a0bd2_4.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h0f0193d_4.conda + sha256: 9f1e3635a587bcf92b61d88c7af7d24cd89c147c6d0ae58afbde08e65bcf48da + md5: 3bd35b0adab3d743f09e0252cc441d6b + depends: + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 72154 + timestamp: 1733994384415 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-hc8a0bd2_4.conda sha256: 215086d95e8ff1d3fcb0197ada116cc9d7db1fdae7573f5e810d20fa9215b47c md5: e70e88a357a3749b67679c0788c5b08a depends: - __osx >=11.0 - aws-c-common >=0.10.6,<0.10.7.0a0 + arch: arm64 + platform: osx license: Apache-2.0 license_family: Apache size: 70186 timestamp: 1733994496998 -- kind: conda - name: aws-crt-cpp - version: 0.29.7 - build: h19a973c_7 - build_number: 7 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.7-h19a973c_7.conda - sha256: 8269e6746eb3a5d15b732a3983888bf98dfc1f6594e95250fc8d16b43cfd5ff9 - md5: 95714136bef3e917bd5a2942d4682b20 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.7-hd92328a_7.conda + sha256: 094cd81f1e5ba713e9e7a272ee52b5dde3ccc4842ea90f19c0354a00bbdac3d9 + md5: 02b95564257d5c3db9c06beccf711f95 depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.6,<0.10.7.0a0 @@ -1465,18 +1283,15 @@ packages: - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - aws-c-s3 >=0.7.7,<0.7.8.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - - libcxx >=18 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux license: Apache-2.0 license_family: Apache - size: 236249 - timestamp: 1734178020924 -- kind: conda - name: aws-crt-cpp - version: 0.29.7 - build: h8a4e35f_7 - build_number: 7 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.7-h8a4e35f_7.conda + size: 354703 + timestamp: 1734177883319 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.7-h8a4e35f_7.conda sha256: 5ba9188e0cb4e3faff9bc96774febb040aa3b802aedba29d847e00e7b5eab84e md5: d77a9e3d7ce15399903e92825fd651b5 depends: @@ -1491,21 +1306,17 @@ packages: - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - libgcc >=13 - libstdcxx >=13 + arch: aarch64 + platform: linux license: Apache-2.0 license_family: Apache size: 283154 timestamp: 1734177845248 -- kind: conda - name: aws-crt-cpp - version: 0.29.7 - build: hd92328a_7 - build_number: 7 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.7-hd92328a_7.conda - sha256: 094cd81f1e5ba713e9e7a272ee52b5dde3ccc4842ea90f19c0354a00bbdac3d9 - md5: 02b95564257d5c3db9c06beccf711f95 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.7-h19a973c_7.conda + sha256: 8269e6746eb3a5d15b732a3983888bf98dfc1f6594e95250fc8d16b43cfd5ff9 + md5: 95714136bef3e917bd5a2942d4682b20 depends: - - __glibc >=2.17,<3.0.a0 + - __osx >=11.0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.6,<0.10.7.0a0 @@ -1515,22 +1326,18 @@ packages: - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - aws-c-s3 >=0.7.7,<0.7.8.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - - libgcc >=13 - - libstdcxx >=13 + - libcxx >=18 + arch: arm64 + platform: osx license: Apache-2.0 license_family: Apache - size: 354703 - timestamp: 1734177883319 -- kind: conda - name: aws-sdk-cpp - version: 1.11.458 - build: h849ce1a_4 - build_number: 4 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h849ce1a_4.conda - sha256: 51b9e9df8cbab4a13a1b9d39d6ef5ed162aaa29c09a745810e00bbe92e1045c1 - md5: cda7747f4398be8d1fb37362815917a7 + size: 236249 + timestamp: 1734178020924 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-hc430e4a_4.conda + sha256: 2dc09f6f9c49127b5f96e7535b64a9c521b944d76d8b7d03d48ae80257ac1cea + md5: aeefac461bea1f126653c1285cf5af08 depends: + - __glibc >=2.17,<3.0.a0 - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 @@ -1540,21 +1347,16 @@ packages: - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - openssl >=3.4.0,<4.0a0 + arch: x86_64 + platform: linux license: Apache-2.0 license_family: Apache - size: 2920625 - timestamp: 1734093552712 -- kind: conda - name: aws-sdk-cpp - version: 1.11.458 - build: hc430e4a_4 - build_number: 4 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-hc430e4a_4.conda - sha256: 2dc09f6f9c49127b5f96e7535b64a9c521b944d76d8b7d03d48ae80257ac1cea - md5: aeefac461bea1f126653c1285cf5af08 + size: 3060561 + timestamp: 1734093737431 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h849ce1a_4.conda + sha256: 51b9e9df8cbab4a13a1b9d39d6ef5ed162aaa29c09a745810e00bbe92e1045c1 + md5: cda7747f4398be8d1fb37362815917a7 depends: - - __glibc >=2.17,<3.0.a0 - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 @@ -1564,17 +1366,13 @@ packages: - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - openssl >=3.4.0,<4.0a0 + arch: aarch64 + platform: linux license: Apache-2.0 license_family: Apache - size: 3060561 - timestamp: 1734093737431 -- kind: conda - name: aws-sdk-cpp - version: 1.11.458 - build: he0ff2e4_4 - build_number: 4 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-he0ff2e4_4.conda + size: 2920625 + timestamp: 1734093552712 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-he0ff2e4_4.conda sha256: 535b970aaa13be45f8cab8205c59f044b17364111c41a227f061775a5c834e18 md5: 0981ed87098b149bdb7d99a4a3fd0e58 depends: @@ -1587,51 +1385,42 @@ packages: - libcxx >=18 - libzlib >=1.3.1,<2.0a0 - openssl >=3.4.0,<4.0a0 + arch: arm64 + platform: osx license: Apache-2.0 license_family: Apache size: 2826534 timestamp: 1734094018287 -- kind: conda - name: azure-core-cpp - version: 1.14.0 - build: h1887c18_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-core-cpp-1.14.0-h1887c18_0.conda - sha256: 8967b3ccee4d74e61f6ec82dd8efb9deb854ee7ba012dfe767b7a92e0ac77724 - md5: e0c3a906a41be769f0ae20ca3e31cfc0 +- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda + sha256: fe07debdb089a3db17f40a7f20d283d75284bb4fc269ef727b8ba6fc93f7cb5a + md5: 0a8838771cc2e985cd295e01ae83baf1 depends: + - __glibc >=2.17,<3.0.a0 - libcurl >=8.10.1,<9.0a0 - libgcc >=13 - libstdcxx >=13 - openssl >=3.3.2,<4.0a0 + arch: x86_64 + platform: linux license: MIT license_family: MIT - size: 338650 - timestamp: 1728055589907 -- kind: conda - name: azure-core-cpp - version: 1.14.0 - build: h5cfcd09_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda - sha256: fe07debdb089a3db17f40a7f20d283d75284bb4fc269ef727b8ba6fc93f7cb5a - md5: 0a8838771cc2e985cd295e01ae83baf1 + size: 345117 + timestamp: 1728053909574 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-core-cpp-1.14.0-h1887c18_0.conda + sha256: 8967b3ccee4d74e61f6ec82dd8efb9deb854ee7ba012dfe767b7a92e0ac77724 + md5: e0c3a906a41be769f0ae20ca3e31cfc0 depends: - - __glibc >=2.17,<3.0.a0 - libcurl >=8.10.1,<9.0a0 - libgcc >=13 - libstdcxx >=13 - openssl >=3.3.2,<4.0a0 + arch: aarch64 + platform: linux license: MIT license_family: MIT - size: 345117 - timestamp: 1728053909574 -- kind: conda - name: azure-core-cpp - version: 1.14.0 - build: hd50102c_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.14.0-hd50102c_0.conda + size: 338650 + timestamp: 1728055589907 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.14.0-hd50102c_0.conda sha256: f5b91329ed59ffc0be8747784c6e4cc7e56250c54032883a83bc11808ef6a87e md5: f093a11dcf3cdcca010b20a818fcc6dc depends: @@ -1639,16 +1428,13 @@ packages: - libcurl >=8.10.1,<9.0a0 - libcxx >=17 - openssl >=3.3.2,<4.0a0 + arch: arm64 + platform: osx license: MIT license_family: MIT size: 294299 timestamp: 1728054014060 -- kind: conda - name: azure-identity-cpp - version: 1.10.0 - build: h113e628_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.10.0-h113e628_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.10.0-h113e628_0.conda sha256: 286b31616c191486626cb49e9ceb5920d29394b9e913c23adb7eb637629ba4de md5: 73f73f60854f325a55f1d31459f2ab73 depends: @@ -1657,16 +1443,13 @@ packages: - libgcc >=13 - libstdcxx >=13 - openssl >=3.3.2,<4.0a0 + arch: x86_64 + platform: linux license: MIT license_family: MIT size: 232351 timestamp: 1728486729511 -- kind: conda - name: azure-identity-cpp - version: 1.10.0 - build: h47b0b28_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-identity-cpp-1.10.0-h47b0b28_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-identity-cpp-1.10.0-h47b0b28_0.conda sha256: 1c72423b9beba167d2f01b80dc204da77240a8266f1edb3d89510c852b300d69 md5: 94e73a7877743a85c57091d8afab2348 depends: @@ -1674,16 +1457,13 @@ packages: - libgcc >=13 - libstdcxx >=13 - openssl >=3.3.2,<4.0a0 + arch: aarch64 + platform: linux license: MIT license_family: MIT size: 217132 timestamp: 1728488096615 -- kind: conda - name: azure-identity-cpp - version: 1.10.0 - build: hc602bab_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.10.0-hc602bab_0.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.10.0-hc602bab_0.conda sha256: bde446b916fff5150606f8ed3e6058ffc55a3aa72381e46f1ab346590b1ae40a md5: d7b71593a937459f2d4b67e1a4727dc2 depends: @@ -1691,54 +1471,42 @@ packages: - azure-core-cpp >=1.14.0,<1.14.1.0a0 - libcxx >=17 - openssl >=3.3.2,<4.0a0 + arch: arm64 + platform: osx license: MIT license_family: MIT size: 166907 timestamp: 1728486882502 -- kind: conda - name: azure-storage-blobs-cpp - version: 12.13.0 - build: h185ecfd_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-blobs-cpp-12.13.0-h185ecfd_1.conda - sha256: 280ec70009a92626054f58e45b168fce393e71a9710587488bd8401628cda481 - md5: 221e1e5ecb2643e113f32b3229d5ba33 +- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.13.0-h3cf044e_1.conda + sha256: 2606260e5379eed255bcdc6adc39b93fb31477337bcd911c121fc43cd29bf394 + md5: 7eb66060455c7a47d9dcdbfa9f46579b depends: + - __glibc >=2.17,<3.0.a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 - libgcc >=13 - libstdcxx >=13 + arch: x86_64 + platform: linux license: MIT license_family: MIT - size: 502934 - timestamp: 1728580241002 -- kind: conda - name: azure-storage-blobs-cpp - version: 12.13.0 - build: h3cf044e_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.13.0-h3cf044e_1.conda - sha256: 2606260e5379eed255bcdc6adc39b93fb31477337bcd911c121fc43cd29bf394 - md5: 7eb66060455c7a47d9dcdbfa9f46579b + size: 549342 + timestamp: 1728578123088 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-blobs-cpp-12.13.0-h185ecfd_1.conda + sha256: 280ec70009a92626054f58e45b168fce393e71a9710587488bd8401628cda481 + md5: 221e1e5ecb2643e113f32b3229d5ba33 depends: - - __glibc >=2.17,<3.0.a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 - libgcc >=13 - libstdcxx >=13 + arch: aarch64 + platform: linux license: MIT license_family: MIT - size: 549342 - timestamp: 1728578123088 -- kind: conda - name: azure-storage-blobs-cpp - version: 12.13.0 - build: h7585a09_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-blobs-cpp-12.13.0-h7585a09_1.conda + size: 502934 + timestamp: 1728580241002 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-blobs-cpp-12.13.0-h7585a09_1.conda sha256: 08d52d130addc0fb55d5ba10d9fa483e39be25d69bac7f4c676c2c3069207590 md5: 704238ef05d46144dae2e6b5853df8bc depends: @@ -1746,56 +1514,44 @@ packages: - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 - libcxx >=17 + arch: arm64 + platform: osx license: MIT license_family: MIT size: 438636 timestamp: 1728578216193 -- kind: conda - name: azure-storage-common-cpp - version: 12.8.0 - build: h1b94036_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-common-cpp-12.8.0-h1b94036_1.conda - sha256: 146e76aac169e3dbdce5d3b142b7930ac643795c765e7655d1989905ec7d3231 - md5: 793b1080ab2d958980f137a8643cd6e8 +- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-common-cpp-12.8.0-h736e048_1.conda + sha256: 273475f002b091b66ce7366da04bf164c3732c03f8692ab2ee2d23335b6a82ba + md5: 13de36be8de3ae3f05ba127631599213 depends: + - __glibc >=2.17,<3.0.a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - libgcc >=13 - libstdcxx >=13 - libxml2 >=2.12.7,<3.0a0 - openssl >=3.3.2,<4.0a0 + arch: x86_64 + platform: linux license: MIT license_family: MIT - size: 140832 - timestamp: 1728565334900 -- kind: conda - name: azure-storage-common-cpp - version: 12.8.0 - build: h736e048_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-common-cpp-12.8.0-h736e048_1.conda - sha256: 273475f002b091b66ce7366da04bf164c3732c03f8692ab2ee2d23335b6a82ba - md5: 13de36be8de3ae3f05ba127631599213 + size: 149312 + timestamp: 1728563338704 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-common-cpp-12.8.0-h1b94036_1.conda + sha256: 146e76aac169e3dbdce5d3b142b7930ac643795c765e7655d1989905ec7d3231 + md5: 793b1080ab2d958980f137a8643cd6e8 depends: - - __glibc >=2.17,<3.0.a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - libgcc >=13 - libstdcxx >=13 - libxml2 >=2.12.7,<3.0a0 - openssl >=3.3.2,<4.0a0 + arch: aarch64 + platform: linux license: MIT license_family: MIT - size: 149312 - timestamp: 1728563338704 -- kind: conda - name: azure-storage-common-cpp - version: 12.8.0 - build: h9ca1f76_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-common-cpp-12.8.0-h9ca1f76_1.conda + size: 140832 + timestamp: 1728565334900 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-common-cpp-12.8.0-h9ca1f76_1.conda sha256: 77ab04e8fe5636a2de9c718f72a43645f7502cd208868c8a91ffba385547d585 md5: 7a187cd7b1445afc80253bb186a607cc depends: @@ -1804,56 +1560,44 @@ packages: - libcxx >=17 - libxml2 >=2.12.7,<3.0a0 - openssl >=3.3.2,<4.0a0 + arch: arm64 + platform: osx license: MIT license_family: MIT size: 121278 timestamp: 1728563418777 -- kind: conda - name: azure-storage-files-datalake-cpp - version: 12.12.0 - build: h37d6d07_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-files-datalake-cpp-12.12.0-h37d6d07_1.conda - sha256: 4079c617a75682e49bae63670d58fd6078ccfbbe55ca1f994acab3a74ab6bbcc - md5: b724f3b4b7f4e9b36c58cbe3ed8610a2 +- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-files-datalake-cpp-12.12.0-ha633028_1.conda + sha256: 5371e4f3f920933bb89b926a85a67f24388227419abd6e99f6086481e5e8d5f2 + md5: 7c1980f89dd41b097549782121a73490 depends: + - __glibc >=2.17,<3.0.a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 - libgcc >=13 - libstdcxx >=13 + arch: x86_64 + platform: linux license: MIT license_family: MIT - size: 260547 - timestamp: 1728730924071 -- kind: conda - name: azure-storage-files-datalake-cpp - version: 12.12.0 - build: ha633028_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-files-datalake-cpp-12.12.0-ha633028_1.conda - sha256: 5371e4f3f920933bb89b926a85a67f24388227419abd6e99f6086481e5e8d5f2 - md5: 7c1980f89dd41b097549782121a73490 + size: 287366 + timestamp: 1728729530295 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-files-datalake-cpp-12.12.0-h37d6d07_1.conda + sha256: 4079c617a75682e49bae63670d58fd6078ccfbbe55ca1f994acab3a74ab6bbcc + md5: b724f3b4b7f4e9b36c58cbe3ed8610a2 depends: - - __glibc >=2.17,<3.0.a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 - libgcc >=13 - libstdcxx >=13 + arch: aarch64 + platform: linux license: MIT license_family: MIT - size: 287366 - timestamp: 1728729530295 -- kind: conda - name: azure-storage-files-datalake-cpp - version: 12.12.0 - build: hcdd55da_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-files-datalake-cpp-12.12.0-hcdd55da_1.conda + size: 260547 + timestamp: 1728730924071 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-files-datalake-cpp-12.12.0-hcdd55da_1.conda sha256: f48523f8aa0b5b80f45a92f0556b388dd96f44ac2dc2f44a01d08c1822eec97d md5: c49fbc5233fcbaa86391162ff1adef38 depends: @@ -1862,18 +1606,13 @@ packages: - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 - libcxx >=17 + arch: arm64 + platform: osx license: MIT license_family: MIT size: 196032 timestamp: 1728729672889 -- kind: conda - name: backoff - version: 2.2.1 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/backoff-2.2.1-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/backoff-2.2.1-pyhd8ed1ab_1.conda sha256: f334115c6b0c6c2cd0d28595365f205ec7eaa60bcc5ff91a75d7245f728be820 md5: a38b801f2bcc12af80c2e02a9e4ce7d9 depends: @@ -1882,34 +1621,24 @@ packages: license_family: MIT size: 18816 timestamp: 1733771192649 -- kind: conda - name: brotli-python - version: 1.1.0 - build: py311h3f08180_2 - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py311h3f08180_2.conda - sha256: f507d65e740777a629ceacb062c768829ab76fde01446b191699a734521ecaad - md5: c8793a23206344faa25f4e0b5d0e7908 +- conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py311hfdbb021_2.conda + sha256: 949913bbd1f74d1af202d3e4bff2e0a4e792ec00271dc4dd08641d4221aa2e12 + md5: d21daab070d76490cb39a8f1d1729d79 depends: - - __osx >=11.0 - - libcxx >=17 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 - python >=3.11,<3.12.0a0 - - python >=3.11,<3.12.0a0 *_cpython - python_abi 3.11.* *_cp311 constrains: - - libbrotlicommon 1.1.0 hd74edd7_2 + - libbrotlicommon 1.1.0 hb9d3cd8_2 + arch: x86_64 + platform: linux license: MIT license_family: MIT - size: 339584 - timestamp: 1725268241628 -- kind: conda - name: brotli-python - version: 1.1.0 - build: py311h89d996e_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/brotli-python-1.1.0-py311h89d996e_2.conda + size: 350367 + timestamp: 1725267768486 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/brotli-python-1.1.0-py311h89d996e_2.conda sha256: 8f299ccbda87e19f393bf9c01381415343650b06b9ef088dc2129ddcd48c05d4 md5: c62b4c4d3eb1d13dfe16abbe648c28b7 depends: @@ -1920,160 +1649,122 @@ packages: - python_abi 3.11.* *_cp311 constrains: - libbrotlicommon 1.1.0 h86ecc28_2 + arch: aarch64 + platform: linux license: MIT license_family: MIT size: 356967 timestamp: 1725268124383 -- kind: conda - name: brotli-python - version: 1.1.0 - build: py311hfdbb021_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py311hfdbb021_2.conda - sha256: 949913bbd1f74d1af202d3e4bff2e0a4e792ec00271dc4dd08641d4221aa2e12 - md5: d21daab070d76490cb39a8f1d1729d79 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libstdcxx >=13 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py311h3f08180_2.conda + sha256: f507d65e740777a629ceacb062c768829ab76fde01446b191699a734521ecaad + md5: c8793a23206344faa25f4e0b5d0e7908 + depends: + - __osx >=11.0 + - libcxx >=17 - python >=3.11,<3.12.0a0 + - python >=3.11,<3.12.0a0 *_cpython - python_abi 3.11.* *_cp311 constrains: - - libbrotlicommon 1.1.0 hb9d3cd8_2 + - libbrotlicommon 1.1.0 hd74edd7_2 + arch: arm64 + platform: osx license: MIT license_family: MIT - size: 350367 - timestamp: 1725267768486 -- kind: conda - name: bzip2 - version: 1.0.8 - build: h4bc722e_7 - build_number: 7 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda + size: 339584 + timestamp: 1725268241628 +- conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda sha256: 5ced96500d945fb286c9c838e54fa759aa04a7129c59800f0846b4335cee770d md5: 62ee74e96c5ebb0af99386de58cf9553 depends: - __glibc >=2.17,<3.0.a0 - libgcc-ng >=12 + arch: x86_64 + platform: linux license: bzip2-1.0.6 license_family: BSD size: 252783 timestamp: 1720974456583 -- kind: conda - name: bzip2 - version: 1.0.8 - build: h68df207_7 - build_number: 7 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h68df207_7.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h68df207_7.conda sha256: 2258b0b33e1cb3a9852d47557984abb6e7ea58e3d7f92706ec1f8e879290c4cb md5: 56398c28220513b9ea13d7b450acfb20 depends: - libgcc-ng >=12 + arch: aarch64 + platform: linux license: bzip2-1.0.6 license_family: BSD size: 189884 timestamp: 1720974504976 -- kind: conda - name: bzip2 - version: 1.0.8 - build: h99b78c6_7 - build_number: 7 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda sha256: adfa71f158cbd872a36394c56c3568e6034aa55c623634b37a4836bd036e6b91 md5: fc6948412dbbbe9a4c9ddbbcfe0a79ab depends: - __osx >=11.0 + arch: arm64 + platform: osx license: bzip2-1.0.6 license_family: BSD size: 122909 timestamp: 1720974522888 -- kind: conda - name: c-ares - version: 1.34.4 - build: h5505292_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.4-h5505292_0.conda - sha256: 09c0c8476e50b2955f474a4a1c17c4c047dd52993b5366b6ea8e968e583b921f - md5: c1c999a38a4303b29d75c636eaa13cf9 +- conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.4-hb9d3cd8_0.conda + sha256: d4f28d87b6339b94f74762c0076e29c8ef8ddfff51a564a92da2843573c18320 + md5: e2775acf57efd5af15b8e3d1d74d72d3 depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux license: MIT license_family: MIT - size: 179496 - timestamp: 1734208291879 -- kind: conda - name: c-ares - version: 1.34.4 - build: h86ecc28_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/c-ares-1.34.4-h86ecc28_0.conda + size: 206085 + timestamp: 1734208189009 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/c-ares-1.34.4-h86ecc28_0.conda sha256: 1187a41d4bb2afe02cb18690682edc98d1e9f5e0ccda638d8704a75ea1875bbe md5: 356da36f35d36dcba16e43f1589d4e39 depends: - libgcc >=13 + arch: aarch64 + platform: linux license: MIT license_family: MIT size: 215979 timestamp: 1734208193181 -- kind: conda - name: c-ares - version: 1.34.4 - build: hb9d3cd8_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.4-hb9d3cd8_0.conda - sha256: d4f28d87b6339b94f74762c0076e29c8ef8ddfff51a564a92da2843573c18320 - md5: e2775acf57efd5af15b8e3d1d74d72d3 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.4-h5505292_0.conda + sha256: 09c0c8476e50b2955f474a4a1c17c4c047dd52993b5366b6ea8e968e583b921f + md5: c1c999a38a4303b29d75c636eaa13cf9 depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 + - __osx >=11.0 + arch: arm64 + platform: osx license: MIT license_family: MIT - size: 206085 - timestamp: 1734208189009 -- kind: conda - name: ca-certificates - version: 2024.12.14 - build: hbcca054_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2024.12.14-hbcca054_0.conda + size: 179496 + timestamp: 1734208291879 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2024.12.14-hbcca054_0.conda sha256: 1afd7274cbc9a334d6d0bc62fa760acc7afdaceb0b91a8df370ec01fd75dc7dd md5: 720523eb0d6a9b0f6120c16b2aa4e7de + arch: x86_64 + platform: linux license: ISC size: 157088 timestamp: 1734208393264 -- kind: conda - name: ca-certificates - version: 2024.12.14 - build: hcefe29a_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2024.12.14-hcefe29a_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2024.12.14-hcefe29a_0.conda sha256: ad7b43211051332a5a4e788bb4619a2d0ecb5be73e0f76be17f733a87d7effd1 md5: 83b4ad1e6dc14df5891f3fcfdeb44351 + arch: aarch64 + platform: linux license: ISC size: 157096 timestamp: 1734209301744 -- kind: conda - name: ca-certificates - version: 2024.12.14 - build: hf0a4a13_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2024.12.14-hf0a4a13_0.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2024.12.14-hf0a4a13_0.conda sha256: 256be633fd0882ccc1a7a32bc278547e1703f85082c0789a87a603ee3ab8fb82 md5: 7cb381a6783d91902638e4ed1ebd478e + arch: arm64 + platform: osx license: ISC size: 157091 timestamp: 1734208344343 -- kind: conda - name: certifi - version: 2024.12.14 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.12.14-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.12.14-pyhd8ed1ab_0.conda sha256: 048c16a9cbcb1fbad02083414d3bc7c1d0eea4b39aee6aa6bf8d1d5089ca8bad md5: 6feb87357ecd66733be3279f16a8c400 depends: @@ -2081,12 +1772,23 @@ packages: license: ISC size: 161642 timestamp: 1734380604767 -- kind: conda - name: cffi - version: 1.17.1 - build: py311h14e8bb7_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/cffi-1.17.1-py311h14e8bb7_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py311hf29c0ef_0.conda + sha256: bc47aa39c8254e9e487b8bcd74cfa3b4a3de3648869eb1a0b89905986b668e35 + md5: 55553ecd5328336368db611f350b7039 + depends: + - __glibc >=2.17,<3.0.a0 + - libffi >=3.4,<4.0a0 + - libgcc >=13 + - pycparser + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 302115 + timestamp: 1725560701719 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cffi-1.17.1-py311h14e8bb7_0.conda sha256: 3d220020c9782ebd4f23cd0a6148b419e4397590ee414e6e69b9be810c57d2ca md5: 616d65d1eea809af7e2b5f7ea36350fc depends: @@ -2095,16 +1797,13 @@ packages: - pycparser - python >=3.11,<3.12.0a0 - python_abi 3.11.* *_cp311 + arch: aarch64 + platform: linux license: MIT license_family: MIT size: 319122 timestamp: 1725562148568 -- kind: conda - name: cffi - version: 1.17.1 - build: py311h3a79f62_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.1-py311h3a79f62_0.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.1-py311h3a79f62_0.conda sha256: 253605b305cc4548b8f97eb7c2e146697e0c7672b099c4862ec5ca7e8e995307 md5: a42272c5dbb6ffbc1a5af70f24c7b448 depends: @@ -2114,36 +1813,13 @@ packages: - python >=3.11,<3.12.0a0 - python >=3.11,<3.12.0a0 *_cpython - python_abi 3.11.* *_cp311 + arch: arm64 + platform: osx license: MIT license_family: MIT size: 288211 timestamp: 1725560745212 -- kind: conda - name: cffi - version: 1.17.1 - build: py311hf29c0ef_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py311hf29c0ef_0.conda - sha256: bc47aa39c8254e9e487b8bcd74cfa3b4a3de3648869eb1a0b89905986b668e35 - md5: 55553ecd5328336368db611f350b7039 - depends: - - __glibc >=2.17,<3.0.a0 - - libffi >=3.4,<4.0a0 - - libgcc >=13 - - pycparser - - python >=3.11,<3.12.0a0 - - python_abi 3.11.* *_cp311 - license: MIT - license_family: MIT - size: 302115 - timestamp: 1725560701719 -- kind: conda - name: charset-normalizer - version: 3.4.1 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda sha256: 4e0ee91b97e5de3e74567bdacea27f0139709fceca4db8adffbe24deffccb09b md5: e83a31202d1c0a000fce3e9cf3825875 depends: @@ -2152,13 +1828,7 @@ packages: license_family: MIT size: 47438 timestamp: 1735929811779 -- kind: conda - name: click - version: 8.1.8 - build: pyh707e725_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda sha256: c920d23cd1fcf565031c679adb62d848af60d6fbb0edc2d50ba475cea4f0d8ab md5: f22f4d4970e09d68a10b922cbb0408d3 depends: @@ -2168,14 +1838,7 @@ packages: license_family: BSD size: 84705 timestamp: 1734858922844 -- kind: conda - name: colorama - version: 0.4.6 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda sha256: ab29d57dc70786c1269633ba3dff20288b81664d3ff8d21af995742e2bb03287 md5: 962b9857ee8e7018c22f2776ffa0b2d7 depends: @@ -2184,13 +1847,7 @@ packages: license_family: BSD size: 27011 timestamp: 1733218222191 -- kind: conda - name: datasets - version: 2.14.4 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda sha256: 7e09bd083a609138b780fcc4535924cb96814d2c908a36d4c64a2ba9ee3efe7f md5: 3e087f072ce03c43a9b60522f5d0ca2f depends: @@ -2213,14 +1870,7 @@ packages: license_family: Apache size: 347303 timestamp: 1691593908658 -- kind: conda - name: deprecated - version: 1.2.15 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhd8ed1ab_1.conda sha256: a20ebf2c9b02a6eb32412ceb5c4cffaae49417db7e75414a76417538293a9402 md5: eaef2e94d5bd76f758545d172c1fda67 depends: @@ -2230,13 +1880,7 @@ packages: license_family: MIT size: 14297 timestamp: 1733662697343 -- kind: conda - name: dill - version: 0.3.7 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda sha256: 4ff20c6be028be2825235631c45d9e4a75bca1de65f8840c02dfb28ea0137c45 md5: 5e4f3466526c52bc9af2d2353a1460bd depends: @@ -2245,14 +1889,7 @@ packages: license_family: BSD size: 87553 timestamp: 1690101185422 -- kind: conda - name: dnspython - version: 2.7.0 - build: pyhff2d567_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda sha256: 3ec40ccf63f2450c5e6c7dd579e42fc2e97caf0d8cd4ba24aa434e6fc264eda0 md5: 5fbd60d61d21b4bd2f9d7a48fe100418 depends: @@ -2271,14 +1908,7 @@ packages: license_family: OTHER size: 172172 timestamp: 1733256829961 -- kind: conda - name: email-validator - version: 2.2.0 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda sha256: b91a19eb78edfc2dbb36de9a67f74ee2416f1b5273dd7327abe53f2dbf864736 md5: da16dd3b0b71339060cd44cb7110ddf9 depends: @@ -2288,14 +1918,7 @@ packages: license: Unlicense size: 44401 timestamp: 1733300827551 -- kind: conda - name: email_validator - version: 2.2.0 - build: hd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_1.conda sha256: e0d0fdf587aa0ed0ff08b2bce3ab355f46687b87b0775bfba01cc80a859ee6a2 md5: 0794f8807ff2c6f020422cacb1bd7bfa depends: @@ -2303,14 +1926,7 @@ packages: license: Unlicense size: 6552 timestamp: 1733300828176 -- kind: conda - name: exceptiongroup - version: 1.2.2 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda sha256: cbde2c64ec317118fc06b223c5fd87c8a680255e7348dd60e7b292d2e103e701 md5: a16662747cdeb9abbac74d0057cc976e depends: @@ -2318,13 +1934,7 @@ packages: license: MIT and PSF-2.0 size: 20486 timestamp: 1733208916977 -- kind: conda - name: fastapi - version: 0.115.6 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.6-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.6-pyhd8ed1ab_0.conda sha256: d7826d537c667093c9de96411a09585a8d620c84a830a0195e58e9a0df45f018 md5: 1b1e0c97830cdf75f1f371bd467ab657 depends: @@ -2342,13 +1952,7 @@ packages: license_family: MIT size: 73084 timestamp: 1733362427885 -- kind: conda - name: fastapi-cli - version: 0.0.7 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.7-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.7-pyhd8ed1ab_0.conda sha256: 300683731013b7221922339cd40430bb3c2ddeeb658fd7e37f5099ffe64e4db0 md5: d960e0ea9e1c561aa928f6c4439f04c7 depends: @@ -2360,14 +1964,7 @@ packages: license_family: MIT size: 15546 timestamp: 1734302408607 -- kind: conda - name: filelock - version: 3.16.1 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_1.conda sha256: 18dca6e2194732df7ebf824abaefe999e4765ebe8e8a061269406ab88fc418b9 md5: d692e9ba6f92dc51484bf3477e36ce7c depends: @@ -2375,59 +1972,42 @@ packages: license: Unlicense size: 17441 timestamp: 1733240909987 -- kind: conda - name: freetype - version: 2.12.1 - build: h267a509_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.12.1-h267a509_2.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.12.1-h267a509_2.conda sha256: b2e3c449ec9d907dd4656cb0dc93e140f447175b125a3824b31368b06c666bb6 md5: 9ae35c3d96db2c94ce0cef86efdfa2cb depends: - libgcc-ng >=12 - libpng >=1.6.39,<1.7.0a0 - libzlib >=1.2.13,<2.0.0a0 + arch: x86_64 + platform: linux license: GPL-2.0-only OR FTL size: 634972 timestamp: 1694615932610 -- kind: conda - name: freetype - version: 2.12.1 - build: hadb7bae_2 - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/freetype-2.12.1-hadb7bae_2.conda - sha256: 791673127e037a2dc0eebe122dc4f904cb3f6e635bb888f42cbe1a76b48748d9 - md5: e6085e516a3e304ce41a8ee08b9b89ad - depends: - - libpng >=1.6.39,<1.7.0a0 - - libzlib >=1.2.13,<2.0.0a0 - license: GPL-2.0-only OR FTL - size: 596430 - timestamp: 1694616332835 -- kind: conda - name: freetype - version: 2.12.1 - build: hf0a5ef3_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/freetype-2.12.1-hf0a5ef3_2.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/freetype-2.12.1-hf0a5ef3_2.conda sha256: 7af93030f4407f076dce181062360efac2cd54dce863b5d7765287a6f5382537 md5: a5ab74c5bd158c3d5532b66d8d83d907 depends: - libgcc-ng >=12 - libpng >=1.6.39,<1.7.0a0 - libzlib >=1.2.13,<2.0.0a0 + arch: aarch64 + platform: linux license: GPL-2.0-only OR FTL size: 642092 timestamp: 1694617858496 -- kind: conda - name: frozenlist - version: 1.5.0 - build: py311h9ecbd09_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/frozenlist-1.5.0-py311h9ecbd09_0.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/freetype-2.12.1-hadb7bae_2.conda + sha256: 791673127e037a2dc0eebe122dc4f904cb3f6e635bb888f42cbe1a76b48748d9 + md5: e6085e516a3e304ce41a8ee08b9b89ad + depends: + - libpng >=1.6.39,<1.7.0a0 + - libzlib >=1.2.13,<2.0.0a0 + arch: arm64 + platform: osx + license: GPL-2.0-only OR FTL + size: 596430 + timestamp: 1694616332835 +- conda: https://conda.anaconda.org/conda-forge/linux-64/frozenlist-1.5.0-py311h9ecbd09_0.conda sha256: 5bde4e41dd1bdf42488f1b86039f38914e87f4a6b46c15224c217651f964de8b md5: 75424a18fb275a18b288c099b869c3bc depends: @@ -2435,16 +2015,13 @@ packages: - libgcc >=13 - python >=3.11,<3.12.0a0 - python_abi 3.11.* *_cp311 + arch: x86_64 + platform: linux license: Apache-2.0 license_family: APACHE size: 60988 timestamp: 1729699558841 -- kind: conda - name: frozenlist - version: 1.5.0 - build: py311ha879c10_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/frozenlist-1.5.0-py311ha879c10_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/frozenlist-1.5.0-py311ha879c10_0.conda sha256: 1b31825a689aa35a07ce4a7f1994668f2c2344cfdb7efdb05e820d8fc1ca6949 md5: ea2f2c07a1173d0b1823fe4471203d6d depends: @@ -2452,16 +2029,13 @@ packages: - python >=3.11,<3.12.0a0 - python >=3.11,<3.12.0a0 *_cpython - python_abi 3.11.* *_cp311 + arch: aarch64 + platform: linux license: Apache-2.0 license_family: APACHE size: 60923 timestamp: 1729699681174 -- kind: conda - name: frozenlist - version: 1.5.0 - build: py311hae2e1ce_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/frozenlist-1.5.0-py311hae2e1ce_0.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/frozenlist-1.5.0-py311hae2e1ce_0.conda sha256: 3df51bbf74052c5d29a33cf8c8c57302699937f883e0e4e9e506c7e0b09e45a5 md5: 7f28e6daf0b4963be1061291cbe10bfb depends: @@ -2469,17 +2043,13 @@ packages: - python >=3.11,<3.12.0a0 - python >=3.11,<3.12.0a0 *_cpython - python_abi 3.11.* *_cp311 + arch: arm64 + platform: osx license: Apache-2.0 license_family: APACHE size: 54023 timestamp: 1729699703032 -- kind: conda - name: fsspec - version: 2024.12.0 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.12.0-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.12.0-pyhd8ed1ab_0.conda sha256: 3320970c4604989eadf908397a9475f9e6a96a773c185915111399cbfbe47817 md5: e041ad4c43ab5e10c74587f95378ebc7 depends: @@ -2488,110 +2058,83 @@ packages: license_family: BSD size: 137756 timestamp: 1734650349242 -- kind: conda - name: gflags - version: 2.2.2 - build: h5888daf_1005 - build_number: 1005 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/gflags-2.2.2-h5888daf_1005.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/gflags-2.2.2-h5888daf_1005.conda sha256: 6c33bf0c4d8f418546ba9c250db4e4221040936aef8956353bc764d4877bc39a md5: d411fc29e338efb48c5fd4576d71d881 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - libstdcxx >=13 + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD size: 119654 timestamp: 1726600001928 -- kind: conda - name: gflags - version: 2.2.2 - build: h5ad3122_1005 - build_number: 1005 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/gflags-2.2.2-h5ad3122_1005.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gflags-2.2.2-h5ad3122_1005.conda sha256: 28fe6b40b20454106d5e4ef6947cf298c13cc72a46347bbc49b563cd3a463bfa md5: 4ff634d515abbf664774b5e1168a9744 depends: - libgcc >=13 - libstdcxx >=13 + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD size: 106638 timestamp: 1726599967617 -- kind: conda - name: gflags - version: 2.2.2 - build: hf9b8971_1005 - build_number: 1005 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/gflags-2.2.2-hf9b8971_1005.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/gflags-2.2.2-hf9b8971_1005.conda sha256: fd56ed8a1dab72ab90d8a8929b6f916a6d9220ca297ff077f8f04c5ed3408e20 md5: 57a511a5905caa37540eb914dfcbf1fb depends: - __osx >=11.0 - libcxx >=17 + arch: arm64 + platform: osx license: BSD-3-Clause license_family: BSD size: 82090 timestamp: 1726600145480 -- kind: conda - name: glog - version: 0.7.1 - build: h468a4a4_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/glog-0.7.1-h468a4a4_0.conda - sha256: 920795d4f775a9f47e91c2223e64847f0b212b3fedc56c137c5889e32efe8ba0 - md5: 08940a32c6ced3703d1412dd37df4f62 +- conda: https://conda.anaconda.org/conda-forge/linux-64/glog-0.7.1-hbabe93e_0.conda + sha256: dc824dc1d0aa358e28da2ecbbb9f03d932d976c8dca11214aa1dcdfcbd054ba2 + md5: ff862eebdfeb2fd048ae9dc92510baca depends: - gflags >=2.2.2,<2.3.0a0 - libgcc-ng >=12 - libstdcxx-ng >=12 + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD - size: 145811 - timestamp: 1718284208668 -- kind: conda - name: glog - version: 0.7.1 - build: hbabe93e_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/glog-0.7.1-hbabe93e_0.conda - sha256: dc824dc1d0aa358e28da2ecbbb9f03d932d976c8dca11214aa1dcdfcbd054ba2 - md5: ff862eebdfeb2fd048ae9dc92510baca + size: 143452 + timestamp: 1718284177264 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/glog-0.7.1-h468a4a4_0.conda + sha256: 920795d4f775a9f47e91c2223e64847f0b212b3fedc56c137c5889e32efe8ba0 + md5: 08940a32c6ced3703d1412dd37df4f62 depends: - gflags >=2.2.2,<2.3.0a0 - libgcc-ng >=12 - libstdcxx-ng >=12 + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD - size: 143452 - timestamp: 1718284177264 -- kind: conda - name: glog - version: 0.7.1 - build: heb240a5_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/glog-0.7.1-heb240a5_0.conda + size: 145811 + timestamp: 1718284208668 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/glog-0.7.1-heb240a5_0.conda sha256: 9fc77de416953aa959039db72bc41bfa4600ae3ff84acad04a7d0c1ab9552602 md5: fef68d0a95aa5b84b5c1a4f6f3bf40e1 depends: - __osx >=11.0 - gflags >=2.2.2,<2.3.0a0 - libcxx >=16 + arch: arm64 + platform: osx license: BSD-3-Clause license_family: BSD size: 112215 timestamp: 1718284365403 -- kind: conda - name: googleapis-common-protos - version: 1.66.0 - build: pyhff2d567_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda sha256: d8d19575a827f2c62500949b9536efdd6b5406c9f546a73b6a87ac90b03a5875 md5: 4861e30ff0cd566ea6fb4593e3b7c22a depends: @@ -2601,14 +2144,7 @@ packages: license_family: APACHE size: 116522 timestamp: 1731459019854 -- kind: conda - name: h11 - version: 0.14.0 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda sha256: 622516185a7c740d5c7f27016d0c15b45782c1501e5611deec63fd70344ce7c8 md5: 7ee49e89531c0dcbba9466f6d115d585 depends: @@ -2618,14 +2154,7 @@ packages: license_family: MIT size: 51846 timestamp: 1733327599467 -- kind: conda - name: h2 - version: 4.1.0 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_1.conda sha256: 843ddad410c370672a8250470697027618f104153612439076d4d7b91eeb7b5c md5: 825927dc7b0f287ef8d4d0011bb113b1 depends: @@ -2636,14 +2165,7 @@ packages: license_family: MIT size: 52000 timestamp: 1733298867359 -- kind: conda - name: hpack - version: 4.0.0 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda sha256: ec89b7e5b8aa2f0219f666084446e1fb7b54545861e9caa892acb24d125761b5 md5: 2aa5ff7fa34a81b9196532c84c10d865 depends: @@ -2652,14 +2174,7 @@ packages: license_family: MIT size: 29412 timestamp: 1733299296857 -- kind: conda - name: httpcore - version: 1.0.7 - build: pyh29332c3_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda sha256: c84d012a245171f3ed666a8bf9319580c269b7843ffa79f26468842da3abd5df md5: 2ca8e6dbc86525c8b95e3c0ffa26442e depends: @@ -2673,29 +2188,7 @@ packages: license_family: BSD size: 48959 timestamp: 1731707562362 -- kind: conda - name: httptools - version: 0.6.4 - build: py311h917b07b_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/httptools-0.6.4-py311h917b07b_0.conda - sha256: 47af7c9e41ea0327f12757527cea28c430ef84aade923d81cc397ebb2bf9eb28 - md5: 4aca39fe9eb4224026c907e1aa8156fb - depends: - - __osx >=11.0 - - python >=3.11,<3.12.0a0 - - python >=3.11,<3.12.0a0 *_cpython - - python_abi 3.11.* *_cp311 - license: MIT - license_family: MIT - size: 84562 - timestamp: 1732707884099 -- kind: conda - name: httptools - version: 0.6.4 - build: py311h9ecbd09_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/httptools-0.6.4-py311h9ecbd09_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/httptools-0.6.4-py311h9ecbd09_0.conda sha256: 1775083ed07111778559e9a0b47033c13cbe6f1c489eaceff204f6cf7a9e02da md5: c16a94f3d0c6a2a495b3071cff3f598d depends: @@ -2703,16 +2196,13 @@ packages: - libgcc >=13 - python >=3.11,<3.12.0a0 - python_abi 3.11.* *_cp311 + arch: x86_64 + platform: linux license: MIT license_family: MIT size: 99955 timestamp: 1732707791797 -- kind: conda - name: httptools - version: 0.6.4 - build: py311ha879c10_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/httptools-0.6.4-py311ha879c10_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/httptools-0.6.4-py311ha879c10_0.conda sha256: f33cd0bb6db6bf8ad44bb908a0befe5564921a570c4c39784c518be81ddd6ab0 md5: fd2dfd6afe96a5843af75eb4f085ed56 depends: @@ -2720,17 +2210,27 @@ packages: - python >=3.11,<3.12.0a0 - python >=3.11,<3.12.0a0 *_cpython - python_abi 3.11.* *_cp311 + arch: aarch64 + platform: linux license: MIT license_family: MIT size: 98813 timestamp: 1732707937311 -- kind: conda - name: httpx - version: 0.28.1 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/httptools-0.6.4-py311h917b07b_0.conda + sha256: 47af7c9e41ea0327f12757527cea28c430ef84aade923d81cc397ebb2bf9eb28 + md5: 4aca39fe9eb4224026c907e1aa8156fb + depends: + - __osx >=11.0 + - python >=3.11,<3.12.0a0 + - python >=3.11,<3.12.0a0 *_cpython + - python_abi 3.11.* *_cp311 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 84562 + timestamp: 1732707884099 +- conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda sha256: cd0f1de3697b252df95f98383e9edb1d00386bfdd03fdf607fa42fe5fcb09950 md5: d6989ead454181f4f9bc987d3dc4e285 depends: @@ -2743,13 +2243,7 @@ packages: license_family: BSD size: 63082 timestamp: 1733663449209 -- kind: conda - name: huggingface_hub - version: 0.27.1 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.27.1-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.27.1-pyhd8ed1ab_0.conda sha256: 4597d7aa720f4acdddacc27b3f9e8d4336cb79477c53aee2d7ab96d136169cdb md5: 8c9a53ecd0c3c278efbdac567dd12ed0 depends: @@ -2766,14 +2260,7 @@ packages: license_family: APACHE size: 278363 timestamp: 1736350219225 -- kind: conda - name: hyperframe - version: 6.0.1 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda sha256: e91c6ef09d076e1d9a02819cd00fa7ee18ecf30cdd667605c853980216584d1b md5: 566e75c90c1d0c8c459eb0ad9833dc7a depends: @@ -2782,43 +2269,30 @@ packages: license_family: MIT size: 17239 timestamp: 1733298862681 -- kind: conda - name: icu - version: '75.1' - build: hf9b3779_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda sha256: 813298f2e54ef087dbfc9cc2e56e08ded41de65cff34c639cc8ba4e27e4540c9 md5: 268203e8b983fddb6412b36f2024e75c depends: - libgcc-ng >=12 - libstdcxx-ng >=12 + arch: aarch64 + platform: linux license: MIT license_family: MIT size: 12282786 timestamp: 1720853454991 -- kind: conda - name: icu - version: '75.1' - build: hfee45f7_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda sha256: 9ba12c93406f3df5ab0a43db8a4b4ef67a5871dfd401010fbe29b218b2cbe620 md5: 5eb22c1d7b3fc4abb50d92d621583137 depends: - __osx >=11.0 + arch: arm64 + platform: osx license: MIT license_family: MIT size: 11857802 timestamp: 1720853997952 -- kind: conda - name: idna - version: '3.10' - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda sha256: d7a472c9fd479e2e8dcb83fb8d433fce971ea369d704ece380e876f9c3494e87 md5: 39a4f67be3286c86d696df570b1201b7 depends: @@ -2827,14 +2301,7 @@ packages: license_family: BSD size: 49765 timestamp: 1733211921194 -- kind: conda - name: importlib-metadata - version: 8.5.0 - build: pyha770c72_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_1.conda sha256: 13766b88fc5b23581530d3a0287c0c58ad82f60401afefab283bf158d2be55a9 md5: 315607a3030ad5d5227e76e0733798ff depends: @@ -2844,13 +2311,7 @@ packages: license_family: APACHE size: 28623 timestamp: 1733223207185 -- kind: conda - name: jinja2 - version: 3.1.5 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.5-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.5-pyhd8ed1ab_0.conda sha256: 98977694b9ecaa3218662f843425f39501f81973c450f995eec68f1803ed71c3 md5: 2752a6ed44105bfb18c9bef1177d9dcd depends: @@ -2860,14 +2321,7 @@ packages: license_family: BSD size: 112561 timestamp: 1734824044952 -- kind: conda - name: jupyter_client - version: 8.6.3 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda sha256: 19d8bd5bb2fde910ec59e081eeb59529491995ce0d653a5209366611023a0b3a md5: 4ebae00eae9705b0c3d6d1018a81d047 depends: @@ -2882,14 +2336,7 @@ packages: license_family: BSD size: 106342 timestamp: 1733441040958 -- kind: conda - name: jupyter_core - version: 5.7.2 - build: pyh31011fe_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda sha256: 732b1e8536bc22a5a174baa79842d79db2f4956d90293dd82dc1b3f6099bcccd md5: 0a2980dada0dd7fd0998f0342308b1b1 depends: @@ -2901,56 +2348,43 @@ packages: license_family: BSD size: 57671 timestamp: 1727163547058 -- kind: conda - name: keyutils - version: 1.6.1 - build: h166bdaf_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 sha256: 150c05a6e538610ca7c43beb3a40d65c90537497a4f6a5f4d15ec0451b6f5ebb md5: 30186d27e2c9fa62b45fb1476b7200e3 depends: - libgcc-ng >=10.3.0 + arch: x86_64 + platform: linux license: LGPL-2.1-or-later size: 117831 timestamp: 1646151697040 -- kind: conda - name: keyutils - version: 1.6.1 - build: h4e544f5_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/keyutils-1.6.1-h4e544f5_0.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/keyutils-1.6.1-h4e544f5_0.tar.bz2 sha256: 6d4233d97a9b38acbb26e1268bcf8c10a8e79c2aed7e5a385ec3769967e3e65b md5: 1f24853e59c68892452ef94ddd8afd4b depends: - libgcc-ng >=10.3.0 + arch: aarch64 + platform: linux license: LGPL-2.1-or-later size: 112327 timestamp: 1646166857935 -- kind: conda - name: krb5 - version: 1.21.3 - build: h237132a_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda - sha256: 4442f957c3c77d69d9da3521268cad5d54c9033f1a73f99cde0a3658937b159b - md5: c6dc8a0fdec13a0565936655c33069a1 +- conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda + sha256: 99df692f7a8a5c27cd14b5fb1374ee55e756631b9c3d659ed3ee60830249b238 + md5: 3f43953b7d3fb3aaa1d0d0723d91e368 depends: - - __osx >=11.0 - - libcxx >=16 + - keyutils >=1.6.1,<2.0a0 - libedit >=3.1.20191231,<3.2.0a0 - libedit >=3.1.20191231,<4.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 - openssl >=3.3.1,<4.0a0 + arch: x86_64 + platform: linux license: MIT license_family: MIT - size: 1155530 - timestamp: 1719463474401 -- kind: conda - name: krb5 - version: 1.21.3 - build: h50a48e9_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/krb5-1.21.3-h50a48e9_0.conda + size: 1370023 + timestamp: 1719463201255 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/krb5-1.21.3-h50a48e9_0.conda sha256: 0ec272afcf7ea7fbf007e07a3b4678384b7da4047348107b2ae02630a570a815 md5: 29c10432a2ca1472b53f299ffb2ffa37 depends: @@ -2960,178 +2394,141 @@ packages: - libgcc-ng >=12 - libstdcxx-ng >=12 - openssl >=3.3.1,<4.0a0 + arch: aarch64 + platform: linux license: MIT license_family: MIT size: 1474620 timestamp: 1719463205834 -- kind: conda - name: krb5 - version: 1.21.3 - build: h659f571_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda - sha256: 99df692f7a8a5c27cd14b5fb1374ee55e756631b9c3d659ed3ee60830249b238 - md5: 3f43953b7d3fb3aaa1d0d0723d91e368 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda + sha256: 4442f957c3c77d69d9da3521268cad5d54c9033f1a73f99cde0a3658937b159b + md5: c6dc8a0fdec13a0565936655c33069a1 depends: - - keyutils >=1.6.1,<2.0a0 + - __osx >=11.0 + - libcxx >=16 - libedit >=3.1.20191231,<3.2.0a0 - libedit >=3.1.20191231,<4.0a0 - - libgcc-ng >=12 - - libstdcxx-ng >=12 - openssl >=3.3.1,<4.0a0 + arch: arm64 + platform: osx license: MIT license_family: MIT - size: 1370023 - timestamp: 1719463201255 -- kind: conda - name: lcms2 - version: '2.16' - build: h922389a_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/lcms2-2.16-h922389a_0.conda + size: 1155530 + timestamp: 1719463474401 +- conda: https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.16-hb7c19ff_0.conda + sha256: 5c878d104b461b7ef922abe6320711c0d01772f4cd55de18b674f88547870041 + md5: 51bb7010fc86f70eee639b4bb7a894f5 + depends: + - libgcc-ng >=12 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libtiff >=4.6.0,<4.8.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 245247 + timestamp: 1701647787198 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lcms2-2.16-h922389a_0.conda sha256: be4847b1014d3cbbc524a53bdbf66182f86125775020563e11d914c8468dd97d md5: ffdd8267a04c515e7ce69c727b051414 depends: - libgcc-ng >=12 - libjpeg-turbo >=3.0.0,<4.0a0 - libtiff >=4.6.0,<4.8.0a0 + arch: aarch64 + platform: linux license: MIT license_family: MIT size: 296219 timestamp: 1701647961116 -- kind: conda - name: lcms2 - version: '2.16' - build: ha0e7c42_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.16-ha0e7c42_0.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.16-ha0e7c42_0.conda sha256: 151e0c84feb7e0747fabcc85006b8973b22f5abbc3af76a9add0b0ef0320ebe4 md5: 66f6c134e76fe13cce8a9ea5814b5dd5 depends: - libjpeg-turbo >=3.0.0,<4.0a0 - libtiff >=4.6.0,<4.8.0a0 + arch: arm64 + platform: osx license: MIT license_family: MIT size: 211959 timestamp: 1701647962657 -- kind: conda - name: lcms2 - version: '2.16' - build: hb7c19ff_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.16-hb7c19ff_0.conda - sha256: 5c878d104b461b7ef922abe6320711c0d01772f4cd55de18b674f88547870041 - md5: 51bb7010fc86f70eee639b4bb7a894f5 - depends: - - libgcc-ng >=12 - - libjpeg-turbo >=3.0.0,<4.0a0 - - libtiff >=4.6.0,<4.8.0a0 - license: MIT - license_family: MIT - size: 245247 - timestamp: 1701647787198 -- kind: conda - name: ld_impl_linux-64 - version: '2.43' - build: h712a8e2_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_2.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_2.conda sha256: 7c91cea91b13f4314d125d1bedb9d03a29ebbd5080ccdea70260363424646dbe md5: 048b02e3962f066da18efe3a21b77672 depends: - __glibc >=2.17,<3.0.a0 constrains: - binutils_impl_linux-64 2.43 + arch: x86_64 + platform: linux license: GPL-3.0-only license_family: GPL size: 669211 timestamp: 1729655358674 -- kind: conda - name: ld_impl_linux-aarch64 - version: '2.43' - build: h80caac9_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_2.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_2.conda sha256: 80ec7e8f006196808fac5bd4b3773a652847f97bbf08044cd87731424ac64f8b md5: fcbde5ea19d55468953bf588770c0501 constrains: - binutils_impl_linux-aarch64 2.43 + arch: aarch64 + platform: linux license: GPL-3.0-only license_family: GPL size: 698245 timestamp: 1729655345825 -- kind: conda - name: lerc - version: 4.0.0 - build: h27087fc_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 sha256: cb55f36dcd898203927133280ae1dc643368af041a48bcf7c026acb7c47b0c12 md5: 76bbff344f0134279f225174e9064c8f depends: - libgcc-ng >=12 - libstdcxx-ng >=12 + arch: x86_64 + platform: linux license: Apache-2.0 license_family: Apache size: 281798 timestamp: 1657977462600 -- kind: conda - name: lerc - version: 4.0.0 - build: h4de3ea5_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.0.0-h4de3ea5_0.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.0.0-h4de3ea5_0.tar.bz2 sha256: 2d09ef9b7796d83364957e420b41c32d94e628c3f0520b61c332518a7b5cd586 md5: 1a0ffc65e03ce81559dbcb0695ad1476 depends: - libgcc-ng >=12 - libstdcxx-ng >=12 + arch: aarch64 + platform: linux license: Apache-2.0 license_family: Apache size: 262096 timestamp: 1657978241894 -- kind: conda - name: lerc - version: 4.0.0 - build: h9a09cb3_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 sha256: 6f068bb53dfb6147d3147d981bb851bb5477e769407ad4e6a68edf482fdcb958 md5: de462d5aacda3b30721b512c5da4e742 depends: - libcxx >=13.0.1 + arch: arm64 + platform: osx license: Apache-2.0 license_family: Apache size: 215721 timestamp: 1657977558796 -- kind: conda - name: libabseil - version: '20240722.0' - build: cxx17_h07bc746_4 - build_number: 4 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_h07bc746_4.conda - sha256: 05fa5e5e908962b9c5aba95f962e2ca81d9599c4715aebe5e4ddb72b309d1770 - md5: c2d95bd7aa8d564a9bd7eca5e571a5b3 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda + sha256: 143a586aa67d50622ef703de57b9d43f44945836d6568e0e7aa174bd8c45e0d4 + md5: 488f260ccda0afaf08acb286db439c2f depends: - - __osx >=11.0 - - libcxx >=18 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 constrains: - libabseil-static =20240722.0=cxx17* - abseil-cpp =20240722.0 + arch: x86_64 + platform: linux license: Apache-2.0 license_family: Apache - size: 1178260 - timestamp: 1736008642885 -- kind: conda - name: libabseil - version: '20240722.0' - build: cxx17_h18dbdb1_4 - build_number: 4 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h18dbdb1_4.conda + size: 1311599 + timestamp: 1736008414161 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h18dbdb1_4.conda sha256: bb6c5fb3b8de5f90735c5252b57efb3c268ee222c755569dac18065f05147670 md5: 633b9fe454ffea2aaf29e191d946a83b depends: @@ -3140,41 +2537,33 @@ packages: constrains: - abseil-cpp =20240722.0 - libabseil-static =20240722.0=cxx17* + arch: aarch64 + platform: linux license: Apache-2.0 license_family: Apache size: 1334844 timestamp: 1736008472455 -- kind: conda - name: libabseil - version: '20240722.0' - build: cxx17_hbbce691_4 - build_number: 4 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda - sha256: 143a586aa67d50622ef703de57b9d43f44945836d6568e0e7aa174bd8c45e0d4 - md5: 488f260ccda0afaf08acb286db439c2f +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_h07bc746_4.conda + sha256: 05fa5e5e908962b9c5aba95f962e2ca81d9599c4715aebe5e4ddb72b309d1770 + md5: c2d95bd7aa8d564a9bd7eca5e571a5b3 depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libstdcxx >=13 + - __osx >=11.0 + - libcxx >=18 constrains: - libabseil-static =20240722.0=cxx17* - abseil-cpp =20240722.0 + arch: arm64 + platform: osx license: Apache-2.0 license_family: Apache - size: 1311599 - timestamp: 1736008414161 -- kind: conda - name: libarrow - version: 18.1.0 - build: h0ad35bc_7_cpu + size: 1178260 + timestamp: 1736008642885 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-hd595efa_7_cpu.conda build_number: 7 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-h0ad35bc_7_cpu.conda - sha256: 4fbdd8bb89d912bf03f10f9373a8d96a1cdd7a7851e107393418a3d2715bc27e - md5: 4ba2173203f44bbf03d19aaba6ed07d3 + sha256: 554ffa338264c1dc34d95adb7eb856d50a2f25e7fa303a1a51e4372301b7c96f + md5: 08d4aff5ee6dee9a1b9ab13fca927697 depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 - aws-crt-cpp >=0.29.7,<0.29.8.0a0 - aws-sdk-cpp >=1.11.458,<1.11.459.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 @@ -3182,15 +2571,17 @@ packages: - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 - bzip2 >=1.0.8,<2.0a0 + - gflags >=2.2.2,<2.3.0a0 - glog >=0.7.1,<0.8.0a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - libbrotlidec >=1.1.0,<1.2.0a0 - libbrotlienc >=1.1.0,<1.2.0a0 - - libcxx >=18 + - libgcc >=13 - libgoogle-cloud >=2.33.0,<2.34.0a0 - libgoogle-cloud-storage >=2.33.0,<2.34.0a0 - libre2-11 >=2024.7.2 + - libstdcxx >=13 - libutf8proc >=2.9.0,<2.10.0a0 - libzlib >=1.3.1,<2.0a0 - lz4-c >=1.10.0,<1.11.0a0 @@ -3202,17 +2593,14 @@ packages: - arrow-cpp <0.0a0 - parquet-cpp <0.0a0 - apache-arrow-proc =*=cpu + arch: x86_64 + platform: linux license: Apache-2.0 license_family: APACHE - size: 5506699 - timestamp: 1735682962976 -- kind: conda - name: libarrow - version: 18.1.0 - build: hb7781cd_7_cpu + size: 8770256 + timestamp: 1735684696564 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-hb7781cd_7_cpu.conda build_number: 7 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-hb7781cd_7_cpu.conda sha256: f6107506bd16788560b47a4d18c1457b4df30a49334364d32613fe3f53ba6cbb md5: 98cf7127ca7b3854c5d1c8bef1ed6e53 depends: @@ -3245,21 +2633,18 @@ packages: - arrow-cpp <0.0a0 - parquet-cpp <0.0a0 - apache-arrow-proc =*=cpu + arch: aarch64 + platform: linux license: Apache-2.0 license_family: APACHE size: 8026714 timestamp: 1735685336542 -- kind: conda - name: libarrow - version: 18.1.0 - build: hd595efa_7_cpu +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-h0ad35bc_7_cpu.conda build_number: 7 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-hd595efa_7_cpu.conda - sha256: 554ffa338264c1dc34d95adb7eb856d50a2f25e7fa303a1a51e4372301b7c96f - md5: 08d4aff5ee6dee9a1b9ab13fca927697 + sha256: 4fbdd8bb89d912bf03f10f9373a8d96a1cdd7a7851e107393418a3d2715bc27e + md5: 4ba2173203f44bbf03d19aaba6ed07d3 depends: - - __glibc >=2.17,<3.0.a0 + - __osx >=11.0 - aws-crt-cpp >=0.29.7,<0.29.8.0a0 - aws-sdk-cpp >=1.11.458,<1.11.459.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 @@ -3267,17 +2652,15 @@ packages: - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 - bzip2 >=1.0.8,<2.0a0 - - gflags >=2.2.2,<2.3.0a0 - glog >=0.7.1,<0.8.0a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - libbrotlidec >=1.1.0,<1.2.0a0 - libbrotlienc >=1.1.0,<1.2.0a0 - - libgcc >=13 + - libcxx >=18 - libgoogle-cloud >=2.33.0,<2.34.0a0 - libgoogle-cloud-storage >=2.33.0,<2.34.0a0 - libre2-11 >=2024.7.2 - - libstdcxx >=13 - libutf8proc >=2.9.0,<2.10.0a0 - libzlib >=1.3.1,<2.0a0 - lz4-c >=1.10.0,<1.11.0a0 @@ -3289,34 +2672,14 @@ packages: - arrow-cpp <0.0a0 - parquet-cpp <0.0a0 - apache-arrow-proc =*=cpu + arch: arm64 + platform: osx license: Apache-2.0 license_family: APACHE - size: 8770256 - timestamp: 1735684696564 -- kind: conda - name: libarrow-acero - version: 18.1.0 - build: h3b568fd_7_cpu - build_number: 7 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h3b568fd_7_cpu.conda - sha256: 42cbfc87096f745d565d814d65b7228c82d985f1898859d5e456016d73e81c82 - md5: 4c1d8c3feea249782148d3cd6a25392e - depends: - - libarrow 18.1.0 hb7781cd_7_cpu - - libgcc >=13 - - libstdcxx >=13 - license: Apache-2.0 - license_family: APACHE - size: 578222 - timestamp: 1735685424850 -- kind: conda - name: libarrow-acero - version: 18.1.0 - build: hcb10f89_7_cpu + size: 5506699 + timestamp: 1735682962976 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-hcb10f89_7_cpu.conda build_number: 7 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-hcb10f89_7_cpu.conda sha256: 87ea5d6a84d922d73975dce8661fccf257e72e755175b12c30e1181a34e37987 md5: 12d84228204c56fec6ed113288014d11 depends: @@ -3324,53 +2687,42 @@ packages: - libarrow 18.1.0 hd595efa_7_cpu - libgcc >=13 - libstdcxx >=13 + arch: x86_64 + platform: linux license: Apache-2.0 license_family: APACHE size: 612463 timestamp: 1735684749868 -- kind: conda - name: libarrow-acero - version: 18.1.0 - build: hf07054f_7_cpu +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h3b568fd_7_cpu.conda + build_number: 7 + sha256: 42cbfc87096f745d565d814d65b7228c82d985f1898859d5e456016d73e81c82 + md5: 4c1d8c3feea249782148d3cd6a25392e + depends: + - libarrow 18.1.0 hb7781cd_7_cpu + - libgcc >=13 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 578222 + timestamp: 1735685424850 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-hf07054f_7_cpu.conda build_number: 7 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-hf07054f_7_cpu.conda sha256: 86e20cebfdb4f335e98265c1b88f5053bf3e3648768a317856295846bfdbf2b4 md5: 3eaf71fe987de13061db795e03bb1a1c depends: - __osx >=11.0 - libarrow 18.1.0 h0ad35bc_7_cpu - libcxx >=18 + arch: arm64 + platform: osx license: Apache-2.0 license_family: APACHE size: 485185 timestamp: 1735683071232 -- kind: conda - name: libarrow-dataset - version: 18.1.0 - build: h3b568fd_7_cpu - build_number: 7 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h3b568fd_7_cpu.conda - sha256: 13ba7d3d08015aa26569eca9e198e2f8b2a0cd2d9c420e41c78cc2e5d5170f26 - md5: f39f5d725c2ca94c2e7b19e2717fd4ab - depends: - - libarrow 18.1.0 hb7781cd_7_cpu - - libarrow-acero 18.1.0 h3b568fd_7_cpu - - libgcc >=13 - - libparquet 18.1.0 hfc78867_7_cpu - - libstdcxx >=13 - license: Apache-2.0 - license_family: APACHE - size: 560329 - timestamp: 1735685518922 -- kind: conda - name: libarrow-dataset - version: 18.1.0 - build: hcb10f89_7_cpu +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-hcb10f89_7_cpu.conda build_number: 7 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-hcb10f89_7_cpu.conda sha256: 99c12511fba79c7947f78d676eae5857659084f687f375f68bc20bd4cddb0a0e md5: 0a81eb63d7cd150f598c752e86388d57 depends: @@ -3380,17 +2732,30 @@ packages: - libgcc >=13 - libparquet 18.1.0 h081d1f1_7_cpu - libstdcxx >=13 + arch: x86_64 + platform: linux license: Apache-2.0 license_family: APACHE size: 587497 timestamp: 1735684880531 -- kind: conda - name: libarrow-dataset - version: 18.1.0 - build: hf07054f_7_cpu +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h3b568fd_7_cpu.conda + build_number: 7 + sha256: 13ba7d3d08015aa26569eca9e198e2f8b2a0cd2d9c420e41c78cc2e5d5170f26 + md5: f39f5d725c2ca94c2e7b19e2717fd4ab + depends: + - libarrow 18.1.0 hb7781cd_7_cpu + - libarrow-acero 18.1.0 h3b568fd_7_cpu + - libgcc >=13 + - libparquet 18.1.0 hfc78867_7_cpu + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 560329 + timestamp: 1735685518922 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-hf07054f_7_cpu.conda build_number: 7 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-hf07054f_7_cpu.conda sha256: 52c5c4e9cd5f2ac91dcebb6a920ab2536febcea116ff8767e5439329d7da820b md5: 97a2d3606682d94f7d73112e9ad684ae depends: @@ -3399,17 +2764,14 @@ packages: - libarrow-acero 18.1.0 hf07054f_7_cpu - libcxx >=18 - libparquet 18.1.0 h636d7b7_7_cpu + arch: arm64 + platform: osx license: Apache-2.0 license_family: APACHE size: 491237 timestamp: 1735684688308 -- kind: conda - name: libarrow-substrait - version: 18.1.0 - build: h08228c5_7_cpu +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-h08228c5_7_cpu.conda build_number: 7 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-h08228c5_7_cpu.conda sha256: 53ea53a06e137c2f81ebfdff3f978babb8b59e31f705a19b57056ec8754c1abf md5: e128def53c133e8a23ac00cd4a479335 depends: @@ -3422,17 +2784,14 @@ packages: - libgcc >=13 - libprotobuf >=5.28.3,<5.28.4.0a0 - libstdcxx >=13 + arch: x86_64 + platform: linux license: Apache-2.0 license_family: APACHE size: 521861 timestamp: 1735684940668 -- kind: conda - name: libarrow-substrait - version: 18.1.0 - build: h1e9d426_7_cpu +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h1e9d426_7_cpu.conda build_number: 7 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h1e9d426_7_cpu.conda sha256: 252e2a0d8c733f36b50499786480a05a59577d617f291868149c80534c1e8ffc md5: 6da921d9e1c4e2ab2679eeea7cbd4c82 depends: @@ -3444,17 +2803,14 @@ packages: - libgcc >=13 - libprotobuf >=5.28.3,<5.28.4.0a0 - libstdcxx >=13 + arch: aarch64 + platform: linux license: Apache-2.0 license_family: APACHE size: 516014 timestamp: 1735685565929 -- kind: conda - name: libarrow-substrait - version: 18.1.0 - build: h4239455_7_cpu +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-h4239455_7_cpu.conda build_number: 7 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-h4239455_7_cpu.conda sha256: a45bbdd6932aed972d6c6ce30a7439aa8ec9d9b8ee5affb350d41e50abdc0127 md5: 91927747173f65695e441346c7145e26 depends: @@ -3466,17 +2822,14 @@ packages: - libarrow-dataset 18.1.0 hf07054f_7_cpu - libcxx >=18 - libprotobuf >=5.28.3,<5.28.4.0a0 + arch: arm64 + platform: osx license: Apache-2.0 license_family: APACHE size: 452385 timestamp: 1735684993831 -- kind: conda - name: libblas - version: 3.9.0 - build: 26_linux64_openblas +- conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-26_linux64_openblas.conda build_number: 26 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-26_linux64_openblas.conda sha256: 30bd658682b124243f8e52d8edf8a19e7be1bc31e4fe4baec30a64002dc8cd0c md5: ac52800af2e0c0e7dac770b435ce768a depends: @@ -3487,17 +2840,14 @@ packages: - liblapack 3.9.0 26_linux64_openblas - liblapacke 3.9.0 26_linux64_openblas - blas * openblas + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD size: 16393 timestamp: 1734432564346 -- kind: conda - name: libblas - version: 3.9.0 - build: 26_linuxaarch64_openblas +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-26_linuxaarch64_openblas.conda build_number: 26 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-26_linuxaarch64_openblas.conda sha256: df6d8ee34d45cf35609ecdd55c1ff03e32e0cd87ae41ebe4ef3747a8e09ead4d md5: 8d900b7079a00969d70305e9aad550b7 depends: @@ -3508,17 +2858,14 @@ packages: - liblapacke 3.9.0 26_linuxaarch64_openblas - libcblas 3.9.0 26_linuxaarch64_openblas - liblapack 3.9.0 26_linuxaarch64_openblas + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD size: 16477 timestamp: 1734432576699 -- kind: conda - name: libblas - version: 3.9.0 - build: 26_osxarm64_openblas +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-26_osxarm64_openblas.conda build_number: 26 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-26_osxarm64_openblas.conda sha256: 597f9c3779caa979c8c6abbb3ba8c7191b84e1a910d6b0d10e5faf35284c450c md5: 21be102c9ae80a67ba7de23b129aa7f6 depends: @@ -3529,161 +2876,122 @@ packages: - liblapacke 3.9.0 26_osxarm64_openblas - libcblas 3.9.0 26_osxarm64_openblas - blas * openblas + arch: arm64 + platform: osx license: BSD-3-Clause license_family: BSD size: 16714 timestamp: 1734433054681 -- kind: conda - name: libbrotlicommon - version: 1.1.0 - build: h86ecc28_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlicommon-1.1.0-h86ecc28_2.conda - sha256: 64112af913974b309d67fd342e065fd184347043a6387933b3db796778a28019 - md5: 3ee026955c688f551a9999840cff4c67 - depends: - - libgcc >=13 - license: MIT - license_family: MIT - size: 68982 - timestamp: 1725267774142 -- kind: conda - name: libbrotlicommon - version: 1.1.0 - build: hb9d3cd8_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hb9d3cd8_2.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hb9d3cd8_2.conda sha256: d9db2de60ea917298e658143354a530e9ca5f9c63471c65cf47ab39fd2f429e3 md5: 41b599ed2b02abcfdd84302bff174b23 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 + arch: x86_64 + platform: linux license: MIT license_family: MIT size: 68851 timestamp: 1725267660471 -- kind: conda - name: libbrotlicommon - version: 1.1.0 - build: hd74edd7_2 - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.1.0-hd74edd7_2.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlicommon-1.1.0-h86ecc28_2.conda + sha256: 64112af913974b309d67fd342e065fd184347043a6387933b3db796778a28019 + md5: 3ee026955c688f551a9999840cff4c67 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 68982 + timestamp: 1725267774142 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.1.0-hd74edd7_2.conda sha256: 839dacb741bdbb25e58f42088a2001b649f4f12195aeb700b5ddfca3267749e5 md5: d0bf1dff146b799b319ea0434b93f779 depends: - __osx >=11.0 + arch: arm64 + platform: osx license: MIT license_family: MIT size: 68426 timestamp: 1725267943211 -- kind: conda - name: libbrotlidec - version: 1.1.0 - build: h86ecc28_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlidec-1.1.0-h86ecc28_2.conda - sha256: 94c808d9ca3eb6ef30976a9843e27f027cf3a1e84e8c6835cbb696b7bdb35c4c - md5: e64d0f3b59c7c4047446b97a8624a72d - depends: - - libbrotlicommon 1.1.0 h86ecc28_2 - - libgcc >=13 - license: MIT - license_family: MIT - size: 31708 - timestamp: 1725267783442 -- kind: conda - name: libbrotlidec - version: 1.1.0 - build: hb9d3cd8_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hb9d3cd8_2.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hb9d3cd8_2.conda sha256: 2892d512cad096cb03f1b66361deeab58b64e15ba525d6592bb6d609e7045edf md5: 9566f0bd264fbd463002e759b8a82401 depends: - __glibc >=2.17,<3.0.a0 - libbrotlicommon 1.1.0 hb9d3cd8_2 - libgcc >=13 + arch: x86_64 + platform: linux license: MIT license_family: MIT size: 32696 timestamp: 1725267669305 -- kind: conda - name: libbrotlidec - version: 1.1.0 - build: hd74edd7_2 - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.1.0-hd74edd7_2.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlidec-1.1.0-h86ecc28_2.conda + sha256: 94c808d9ca3eb6ef30976a9843e27f027cf3a1e84e8c6835cbb696b7bdb35c4c + md5: e64d0f3b59c7c4047446b97a8624a72d + depends: + - libbrotlicommon 1.1.0 h86ecc28_2 + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 31708 + timestamp: 1725267783442 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.1.0-hd74edd7_2.conda sha256: 6c6862eb274f21a7c0b60e5345467a12e6dda8b9af4438c66d496a2c1a538264 md5: 55e66e68ce55523a6811633dd1ac74e2 depends: - __osx >=11.0 - libbrotlicommon 1.1.0 hd74edd7_2 + arch: arm64 + platform: osx license: MIT license_family: MIT size: 28378 timestamp: 1725267980316 -- kind: conda - name: libbrotlienc - version: 1.1.0 - build: h86ecc28_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlienc-1.1.0-h86ecc28_2.conda - sha256: 41385e17bc73834b235c5aff12d6d82eccb534acb3c30986996f9dad92a0d54c - md5: 0e9bd365480c72b25c71a448257b537d - depends: - - libbrotlicommon 1.1.0 h86ecc28_2 - - libgcc >=13 - license: MIT - license_family: MIT - size: 290230 - timestamp: 1725267792697 -- kind: conda - name: libbrotlienc - version: 1.1.0 - build: hb9d3cd8_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.1.0-hb9d3cd8_2.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.1.0-hb9d3cd8_2.conda sha256: 779f58174e99de3600e939fa46eddb453ec5d3c60bb46cdaa8b4c127224dbf29 md5: 06f70867945ea6a84d35836af780f1de depends: - __glibc >=2.17,<3.0.a0 - libbrotlicommon 1.1.0 hb9d3cd8_2 - libgcc >=13 + arch: x86_64 + platform: linux license: MIT license_family: MIT size: 281750 timestamp: 1725267679782 -- kind: conda - name: libbrotlienc - version: 1.1.0 - build: hd74edd7_2 - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlienc-1.1.0-hd74edd7_2.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlienc-1.1.0-h86ecc28_2.conda + sha256: 41385e17bc73834b235c5aff12d6d82eccb534acb3c30986996f9dad92a0d54c + md5: 0e9bd365480c72b25c71a448257b537d + depends: + - libbrotlicommon 1.1.0 h86ecc28_2 + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 290230 + timestamp: 1725267792697 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlienc-1.1.0-hd74edd7_2.conda sha256: eeb1eb0d58b9d02bc1b98dc0a058f104ab168eb2f7d1c7bfa0570a12cfcdb7b7 md5: 4f3a434504c67b2c42565c0b85c1885c depends: - __osx >=11.0 - libbrotlicommon 1.1.0 hd74edd7_2 + arch: arm64 + platform: osx license: MIT license_family: MIT size: 279644 timestamp: 1725268003553 -- kind: conda - name: libcblas - version: 3.9.0 - build: 26_linux64_openblas +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-26_linux64_openblas.conda build_number: 26 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-26_linux64_openblas.conda sha256: 9c74e536c9bc868e356ffd43f81c2cb398aec84b40fcadc312315b164a5500ee md5: ebcc5f37a435aa3c19640533c82f8d76 depends: @@ -3692,17 +3000,14 @@ packages: - liblapack 3.9.0 26_linux64_openblas - liblapacke 3.9.0 26_linux64_openblas - blas * openblas + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD size: 16336 timestamp: 1734432570482 -- kind: conda - name: libcblas - version: 3.9.0 - build: 26_linuxaarch64_openblas +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-26_linuxaarch64_openblas.conda build_number: 26 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-26_linuxaarch64_openblas.conda sha256: 521e78be0c4170f229c43e1a6c94337a72db3ebcbe6e5960f8413aa438dcb8f9 md5: d77f943ae4083f3aeddca698f2d28262 depends: @@ -3711,17 +3016,14 @@ packages: - blas * openblas - liblapacke 3.9.0 26_linuxaarch64_openblas - liblapack 3.9.0 26_linuxaarch64_openblas + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD size: 16398 timestamp: 1734432580937 -- kind: conda - name: libcblas - version: 3.9.0 - build: 26_osxarm64_openblas +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-26_osxarm64_openblas.conda build_number: 26 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-26_osxarm64_openblas.conda sha256: 27a29ef6b2fd2179bc3a0bb9db351f078ba140ca10485dca147c399639f84c93 md5: a0e9980fe12d42f6d0c0ec009f67e948 depends: @@ -3730,60 +3032,48 @@ packages: - liblapack 3.9.0 26_osxarm64_openblas - liblapacke 3.9.0 26_osxarm64_openblas - blas * openblas + arch: arm64 + platform: osx license: BSD-3-Clause license_family: BSD size: 16628 timestamp: 1734433061517 -- kind: conda - name: libcrc32c - version: 1.1.2 - build: h01db608_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libcrc32c-1.1.2-h01db608_0.tar.bz2 - sha256: b8b8c57a87da86b3ea24280fd6aa8efaf92f4e684b606bf2db5d3cb06ffbe2ea - md5: 268ee639c17ada0002fb04dd21816cc2 - depends: - - libgcc-ng >=9.4.0 - - libstdcxx-ng >=9.4.0 - license: BSD-3-Clause - license_family: BSD - size: 18669 - timestamp: 1633683724891 -- kind: conda - name: libcrc32c - version: 1.1.2 - build: h9c3ff4c_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libcrc32c-1.1.2-h9c3ff4c_0.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcrc32c-1.1.2-h9c3ff4c_0.tar.bz2 sha256: fd1d153962764433fe6233f34a72cdeed5dcf8a883a85769e8295ce940b5b0c5 md5: c965a5aa0d5c1c37ffc62dff36e28400 depends: - libgcc-ng >=9.4.0 - libstdcxx-ng >=9.4.0 + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD size: 20440 timestamp: 1633683576494 -- kind: conda - name: libcrc32c - version: 1.1.2 - build: hbdafb3b_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libcrc32c-1.1.2-hbdafb3b_0.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcrc32c-1.1.2-h01db608_0.tar.bz2 + sha256: b8b8c57a87da86b3ea24280fd6aa8efaf92f4e684b606bf2db5d3cb06ffbe2ea + md5: 268ee639c17ada0002fb04dd21816cc2 + depends: + - libgcc-ng >=9.4.0 + - libstdcxx-ng >=9.4.0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 18669 + timestamp: 1633683724891 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcrc32c-1.1.2-hbdafb3b_0.tar.bz2 sha256: 58477b67cc719060b5b069ba57161e20ba69b8695d154a719cb4b60caf577929 md5: 32bd82a6a625ea6ce090a81c3d34edeb depends: - libcxx >=11.1.0 + arch: arm64 + platform: osx license: BSD-3-Clause license_family: BSD size: 18765 timestamp: 1633683992603 -- kind: conda - name: libcurl - version: 8.11.1 - build: h332b0f4_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.11.1-h332b0f4_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.11.1-h332b0f4_0.conda sha256: 3cd4075b2a7b5562e46c8ec626f6f9ca57aeecaa94ff7df57eca26daa94c9906 md5: 2b3e0081006dc21e8bf53a91c83a055c depends: @@ -3795,16 +3085,13 @@ packages: - libzlib >=1.3.1,<2.0a0 - openssl >=3.4.0,<4.0a0 - zstd >=1.5.6,<1.6.0a0 + arch: x86_64 + platform: linux license: curl license_family: MIT size: 423011 timestamp: 1733999897624 -- kind: conda - name: libcurl - version: 8.11.1 - build: h6702fde_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libcurl-8.11.1-h6702fde_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcurl-8.11.1-h6702fde_0.conda sha256: 9fc65d21a58f4aad1bc39dfb94a178893aeb035850c5cf0ed9736674279f390b md5: 7dec1cd271c403d1636bda5aa388a55d depends: @@ -3815,16 +3102,13 @@ packages: - libzlib >=1.3.1,<2.0a0 - openssl >=3.4.0,<4.0a0 - zstd >=1.5.6,<1.6.0a0 + arch: aarch64 + platform: linux license: curl license_family: MIT size: 440737 timestamp: 1733999835504 -- kind: conda - name: libcurl - version: 8.11.1 - build: h73640d1_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.11.1-h73640d1_0.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.11.1-h73640d1_0.conda sha256: f47c35938144c23278987c7d12096f6a42d7c850ffc277222b032073412383b6 md5: 46d7524cabfdd199bffe63f8f19a552b depends: @@ -3835,74 +3119,58 @@ packages: - libzlib >=1.3.1,<2.0a0 - openssl >=3.4.0,<4.0a0 - zstd >=1.5.6,<1.6.0a0 + arch: arm64 + platform: osx license: curl license_family: MIT size: 385098 timestamp: 1734000160270 -- kind: conda - name: libcxx - version: 19.1.6 - build: ha82da77_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.6-ha82da77_1.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.6-ha82da77_1.conda sha256: 2b2443404503cd862385fd2f2a2c73f9624686fd1e5a45050b4034cfc06904ec md5: ce5252d8db110cdb4ae4173d0a63c7c5 depends: - __osx >=11.0 + arch: arm64 + platform: osx license: Apache-2.0 WITH LLVM-exception license_family: Apache size: 520992 timestamp: 1734494699681 -- kind: conda - name: libdeflate - version: '1.23' - build: h4ddbbb0_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.23-h4ddbbb0_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.23-h4ddbbb0_0.conda sha256: 511d801626d02f4247a04fff957cc6e9ec4cc7e8622bd9acd076bcdc5de5fe66 md5: 8dfae1d2e74767e9ce36d5fa0d8605db depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 + arch: x86_64 + platform: linux license: MIT license_family: MIT size: 72255 timestamp: 1734373823254 -- kind: conda - name: libdeflate - version: '1.23' - build: h5e3c512_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libdeflate-1.23-h5e3c512_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libdeflate-1.23-h5e3c512_0.conda sha256: 959419d87cd2b789a9055db95704c614f31aeb70bef7949fa2f734122a3a2863 md5: 7e7ca2607b11b180120cefc2354fc0cb depends: - libgcc >=13 + arch: aarch64 + platform: linux license: MIT license_family: MIT size: 69862 timestamp: 1734373858306 -- kind: conda - name: libdeflate - version: '1.23' - build: hec38601_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.23-hec38601_0.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.23-hec38601_0.conda sha256: 887c02deaed6d583459eba6367023e36d8761085b2f7126e389424f57155da53 md5: 1d8b9588be14e71df38c525767a1ac30 depends: - __osx >=11.0 + arch: arm64 + platform: osx license: MIT license_family: MIT size: 54132 timestamp: 1734373971372 -- kind: conda - name: libedit - version: 3.1.20240808 - build: pl5321h7949ede_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20240808-pl5321h7949ede_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20240808-pl5321h7949ede_0.conda sha256: 4d0d69ddf9cc7d724a1ccf3a9852e44c8aea9825692582bac2c4e8d21ec95ccd md5: 8247f80f3dc464d9322e85007e307fe8 depends: @@ -3910,154 +3178,105 @@ packages: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - ncurses >=6.5,<7.0a0 + arch: x86_64 + platform: linux license: BSD-2-Clause license_family: BSD size: 134657 timestamp: 1736191912705 -- kind: conda - name: libedit - version: 3.1.20240808 - build: pl5321h976ea20_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20240808-pl5321h976ea20_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20240808-pl5321h976ea20_0.conda sha256: 031daea98cf278f858b7957ad5dc475f1b5673cd5e718850529401ced64cef2c md5: 0be40129d3dd1a152fff29a85f0785d0 depends: - ncurses - libgcc >=13 - ncurses >=6.5,<7.0a0 + arch: aarch64 + platform: linux license: BSD-2-Clause license_family: BSD size: 148120 timestamp: 1736192137151 -- kind: conda - name: libedit - version: 3.1.20240808 - build: pl5321hafb1f1b_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20240808-pl5321hafb1f1b_0.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20240808-pl5321hafb1f1b_0.conda sha256: fb934d7a03279ec8eae4bf1913ac9058fcf6fed35290d8ffa6e04157f396a3b1 md5: af89aa84ffb5ee551ce0c137b951a3b5 depends: - ncurses - __osx >=11.0 - ncurses >=6.5,<7.0a0 + arch: arm64 + platform: osx license: BSD-2-Clause license_family: BSD size: 107634 timestamp: 1736192034117 -- kind: conda - name: libev - version: '4.33' - build: h31becfc_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libev-4.33-h31becfc_2.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda + sha256: 1cd6048169fa0395af74ed5d8f1716e22c19a81a8a36f934c110ca3ad4dd27b4 + md5: 172bf1cd1ff8629f2b1179945ed45055 + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + size: 112766 + timestamp: 1702146165126 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libev-4.33-h31becfc_2.conda sha256: 973af77e297f1955dd1f69c2cbdc5ab9dfc88388a5576cd152cda178af0fd006 md5: a9a13cb143bbaa477b1ebaefbe47a302 depends: - libgcc-ng >=12 + arch: aarch64 + platform: linux license: BSD-2-Clause license_family: BSD size: 115123 timestamp: 1702146237623 -- kind: conda - name: libev - version: '4.33' - build: h93a5062_2 - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libev-4.33-h93a5062_2.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libev-4.33-h93a5062_2.conda sha256: 95cecb3902fbe0399c3a7e67a5bed1db813e5ab0e22f4023a5e0f722f2cc214f md5: 36d33e440c31857372a72137f78bacf5 + arch: arm64 + platform: osx license: BSD-2-Clause license_family: BSD size: 107458 timestamp: 1702146414478 -- kind: conda - name: libev - version: '4.33' - build: hd590300_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda - sha256: 1cd6048169fa0395af74ed5d8f1716e22c19a81a8a36f934c110ca3ad4dd27b4 - md5: 172bf1cd1ff8629f2b1179945ed45055 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libevent-2.1.12-hf998b51_1.conda + sha256: 2e14399d81fb348e9d231a82ca4d816bf855206923759b69ad006ba482764131 + md5: a1cfcc585f0c42bf8d5546bb1dfb668d depends: - libgcc-ng >=12 - license: BSD-2-Clause - license_family: BSD - size: 112766 - timestamp: 1702146165126 -- kind: conda - name: libevent - version: 2.1.12 - build: h2757513_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libevent-2.1.12-h2757513_1.conda - sha256: 8c136d7586259bb5c0d2b913aaadc5b9737787ae4f40e3ad1beaf96c80b919b7 - md5: 1a109764bff3bdc7bdd84088347d71dc - depends: - openssl >=3.1.1,<4.0a0 + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD - size: 368167 - timestamp: 1685726248899 -- kind: conda - name: libevent - version: 2.1.12 - build: h4ba1bb4_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libevent-2.1.12-h4ba1bb4_1.conda + size: 427426 + timestamp: 1685725977222 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libevent-2.1.12-h4ba1bb4_1.conda sha256: 01333cc7d6e6985dd5700b43660d90e9e58049182017fd24862088ecbe1458e4 md5: 96ae6083cd1ac9f6bc81631ac835b317 depends: - libgcc-ng >=12 - openssl >=3.1.1,<4.0a0 + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD size: 438992 timestamp: 1685726046519 -- kind: conda - name: libevent - version: 2.1.12 - build: hf998b51_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libevent-2.1.12-hf998b51_1.conda - sha256: 2e14399d81fb348e9d231a82ca4d816bf855206923759b69ad006ba482764131 - md5: a1cfcc585f0c42bf8d5546bb1dfb668d +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libevent-2.1.12-h2757513_1.conda + sha256: 8c136d7586259bb5c0d2b913aaadc5b9737787ae4f40e3ad1beaf96c80b919b7 + md5: 1a109764bff3bdc7bdd84088347d71dc depends: - - libgcc-ng >=12 - openssl >=3.1.1,<4.0a0 + arch: arm64 + platform: osx license: BSD-3-Clause license_family: BSD - size: 427426 - timestamp: 1685725977222 -- kind: conda - name: libexpat - version: 2.6.4 - build: h286801f_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.4-h286801f_0.conda - sha256: e42ab5ace927ee7c84e3f0f7d813671e1cf3529f5f06ee5899606630498c2745 - md5: 38d2656dd914feb0cab8c629370768bf - depends: - - __osx >=11.0 - constrains: - - expat 2.6.4.* - license: MIT - license_family: MIT - size: 64693 - timestamp: 1730967175868 -- kind: conda - name: libexpat - version: 2.6.4 - build: h5888daf_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda + size: 368167 + timestamp: 1685726248899 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda sha256: 56541b98447b58e52d824bd59d6382d609e11de1f8adf20b23143e353d2b8d26 md5: db833e03127376d461e1e13e76f09b6c depends: @@ -4065,76 +3284,70 @@ packages: - libgcc >=13 constrains: - expat 2.6.4.* + arch: x86_64 + platform: linux license: MIT license_family: MIT size: 73304 timestamp: 1730967041968 -- kind: conda - name: libexpat - version: 2.6.4 - build: h5ad3122_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.6.4-h5ad3122_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.6.4-h5ad3122_0.conda sha256: f42e758009ba9db90d1fe7992bc3e60d0c52f71fb20923375d2c44ae69a5a2b3 md5: f1b3fab36861b3ce945a13f0dfdfc688 depends: - libgcc >=13 constrains: - expat 2.6.4.* + arch: aarch64 + platform: linux license: MIT license_family: MIT size: 72345 timestamp: 1730967203789 -- kind: conda - name: libffi - version: 3.4.2 - build: h3422bc3_5 - build_number: 5 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 - sha256: 41b3d13efb775e340e4dba549ab5c029611ea6918703096b2eaa9c015c0750ca - md5: 086914b672be056eb70fd4285b6783b6 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.4-h286801f_0.conda + sha256: e42ab5ace927ee7c84e3f0f7d813671e1cf3529f5f06ee5899606630498c2745 + md5: 38d2656dd914feb0cab8c629370768bf + depends: + - __osx >=11.0 + constrains: + - expat 2.6.4.* + arch: arm64 + platform: osx license: MIT license_family: MIT - size: 39020 - timestamp: 1636488587153 -- kind: conda - name: libffi - version: 3.4.2 - build: h3557bc0_5 - build_number: 5 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.4.2-h3557bc0_5.tar.bz2 + size: 64693 + timestamp: 1730967175868 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.2-h7f98852_5.tar.bz2 + sha256: ab6e9856c21709b7b517e940ae7028ae0737546122f83c2aa5d692860c3b149e + md5: d645c6d2ac96843a2bfaccd2d62b3ac3 + depends: + - libgcc-ng >=9.4.0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 58292 + timestamp: 1636488182923 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.4.2-h3557bc0_5.tar.bz2 sha256: 7e9258a102480757fe3faeb225a3ca04dffd10fecd2a958c65cdb4cdf75f2c3c md5: dddd85f4d52121fab0a8b099c5e06501 depends: - libgcc-ng >=9.4.0 + arch: aarch64 + platform: linux license: MIT license_family: MIT size: 59450 timestamp: 1636488255090 -- kind: conda - name: libffi - version: 3.4.2 - build: h7f98852_5 - build_number: 5 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.2-h7f98852_5.tar.bz2 - sha256: ab6e9856c21709b7b517e940ae7028ae0737546122f83c2aa5d692860c3b149e - md5: d645c6d2ac96843a2bfaccd2d62b3ac3 - depends: - - libgcc-ng >=9.4.0 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 + sha256: 41b3d13efb775e340e4dba549ab5c029611ea6918703096b2eaa9c015c0750ca + md5: 086914b672be056eb70fd4285b6783b6 + arch: arm64 + platform: osx license: MIT license_family: MIT - size: 58292 - timestamp: 1636488182923 -- kind: conda - name: libgcc - version: 14.2.0 - build: h77fa898_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h77fa898_1.conda + size: 39020 + timestamp: 1636488587153 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h77fa898_1.conda sha256: 53eb8a79365e58849e7b1a068d31f4f9e718dc938d6f2c03e960345739a03569 md5: 3cb76c3f10d3bc7f1105b2fc9db984df depends: @@ -4143,17 +3356,13 @@ packages: constrains: - libgomp 14.2.0 h77fa898_1 - libgcc-ng ==14.2.0=*_1 + arch: x86_64 + platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL size: 848745 timestamp: 1729027721139 -- kind: conda - name: libgcc - version: 14.2.0 - build: he277a41_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-14.2.0-he277a41_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-14.2.0-he277a41_1.conda sha256: 5d56757ccad208c79214395b00d006d8d18929a4ba49c47bd9460789a7620943 md5: 511b511c5445e324066c3377481bcab8 depends: @@ -4161,175 +3370,131 @@ packages: constrains: - libgcc-ng ==14.2.0=*_1 - libgomp 14.2.0 he277a41_1 + arch: aarch64 + platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL size: 535243 timestamp: 1729089435134 -- kind: conda - name: libgcc-ng - version: 14.2.0 - build: h69a702a_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_1.conda sha256: 3a76969c80e9af8b6e7a55090088bc41da4cffcde9e2c71b17f44d37b7cb87f7 md5: e39480b9ca41323497b05492a63bc35b depends: - libgcc 14.2.0 h77fa898_1 + arch: x86_64 + platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL size: 54142 timestamp: 1729027726517 -- kind: conda - name: libgcc-ng - version: 14.2.0 - build: he9431aa_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-14.2.0-he9431aa_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-14.2.0-he9431aa_1.conda sha256: 9b5cf168a6c7361cae869cb74b716766ee7c6d6b3f6172b32ba9bf91135efdc4 md5: 0694c249c61469f2c0f7e2990782af21 depends: - libgcc 14.2.0 he277a41_1 + arch: aarch64 + platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL size: 54104 timestamp: 1729089444587 -- kind: conda - name: libgfortran - version: 5.0.0 - build: 13_2_0_hd922786_3 - build_number: 3 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda - sha256: 44e541b4821c96b28b27fef5630883a60ce4fee91fd9c79f25a199f8f73f337b - md5: 4a55d9e169114b2b90d3ec4604cd7bbf - depends: - - libgfortran5 13.2.0 hf226fd6_3 - license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - size: 110233 - timestamp: 1707330749033 -- kind: conda - name: libgfortran - version: 14.2.0 - build: h69a702a_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_1.conda sha256: fc9e7f22a17faf74da904ebfc4d88699013d2992e55505e4aa0eb01770290977 md5: f1fd30127802683586f768875127a987 depends: - libgfortran5 14.2.0 hd5240d6_1 constrains: - libgfortran-ng ==14.2.0=*_1 + arch: x86_64 + platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL size: 53997 timestamp: 1729027752995 -- kind: conda - name: libgfortran - version: 14.2.0 - build: he9431aa_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_1.conda sha256: cb66e411fa32a5c6040f4e5e2a63c00897aae4c3133a9c004c2e929ccf19575b md5: 0294b92d2f47a240bebb1e3336b495f1 depends: - libgfortran5 14.2.0 hb6113d0_1 constrains: - libgfortran-ng ==14.2.0=*_1 + arch: aarch64 + platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL size: 54105 timestamp: 1729089471124 -- kind: conda - name: libgfortran5 - version: 13.2.0 - build: hf226fd6_3 - build_number: 3 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda - sha256: bafc679eedb468a86aa4636061c55966186399ee0a04b605920d208d97ac579a - md5: 66ac81d54e95c534ae488726c1f698ea +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda + sha256: 44e541b4821c96b28b27fef5630883a60ce4fee91fd9c79f25a199f8f73f337b + md5: 4a55d9e169114b2b90d3ec4604cd7bbf depends: - - llvm-openmp >=8.0.0 + - libgfortran5 13.2.0 hf226fd6_3 + arch: arm64 + platform: osx + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 110233 + timestamp: 1707330749033 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hd5240d6_1.conda + sha256: d149a37ca73611e425041f33b9d8dbed6e52ec506fe8cc1fc0ee054bddeb6d5d + md5: 9822b874ea29af082e5d36098d25427d + depends: + - libgcc >=14.2.0 constrains: - - libgfortran 5.0.0 13_2_0_*_3 + - libgfortran 14.2.0 + arch: x86_64 + platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 997381 - timestamp: 1707330687590 -- kind: conda - name: libgfortran5 - version: 14.2.0 - build: hb6113d0_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_1.conda + size: 1462645 + timestamp: 1729027735353 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_1.conda sha256: a87ff46d19916403cbf68cf1d785bf56b4d1ab7b2552468d2ea775d70782493f md5: fc068e11b10e18f184e027782baa12b6 depends: - libgcc >=14.2.0 constrains: - libgfortran 14.2.0 + arch: aarch64 + platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL size: 1102158 timestamp: 1729089452640 -- kind: conda - name: libgfortran5 - version: 14.2.0 - build: hd5240d6_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hd5240d6_1.conda - sha256: d149a37ca73611e425041f33b9d8dbed6e52ec506fe8cc1fc0ee054bddeb6d5d - md5: 9822b874ea29af082e5d36098d25427d +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda + sha256: bafc679eedb468a86aa4636061c55966186399ee0a04b605920d208d97ac579a + md5: 66ac81d54e95c534ae488726c1f698ea depends: - - libgcc >=14.2.0 + - llvm-openmp >=8.0.0 constrains: - - libgfortran 14.2.0 + - libgfortran 5.0.0 13_2_0_*_3 + arch: arm64 + platform: osx license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 1462645 - timestamp: 1729027735353 -- kind: conda - name: libgomp - version: 14.2.0 - build: h77fa898_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h77fa898_1.conda + size: 997381 + timestamp: 1707330687590 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h77fa898_1.conda sha256: 1911c29975ec99b6b906904040c855772ccb265a1c79d5d75c8ceec4ed89cd63 md5: cc3573974587f12dda90d96e3e55a702 depends: - _libgcc_mutex 0.1 conda_forge + arch: x86_64 + platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL size: 460992 timestamp: 1729027639220 -- kind: conda - name: libgomp - version: 14.2.0 - build: he277a41_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_1.conda sha256: 5aa53874a5e57a00f2e0c2e2910684eb674429cd5fcb803619b226a73e89aedf md5: 376f0e73abbda6d23c0cb749adc195ef + arch: aarch64 + platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL size: 463521 timestamp: 1729089357313 -- kind: conda - name: libgoogle-cloud - version: 2.33.0 - build: h2b5623c_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.33.0-h2b5623c_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.33.0-h2b5623c_1.conda sha256: ae48ee93e2c226bf682f1e389c2fd51ae7bf77c2ce4b3aee069764f4be1c63f2 md5: 61829a8dd5f4e2327e707572065bae41 depends: @@ -4344,17 +3509,13 @@ packages: - openssl >=3.4.0,<4.0a0 constrains: - libgoogle-cloud 2.33.0 *_1 + arch: x86_64 + platform: linux license: Apache-2.0 license_family: Apache size: 1254656 timestamp: 1735648569457 -- kind: conda - name: libgoogle-cloud - version: 2.33.0 - build: hccf9d24_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-2.33.0-hccf9d24_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-2.33.0-hccf9d24_1.conda sha256: d3d4def86d880431928799ba90ca97e57c2f05677c03af8de2337502926c492c md5: a2724014eb04f14bd71d35f45b062dd0 depends: @@ -4368,17 +3529,13 @@ packages: - openssl >=3.4.0,<4.0a0 constrains: - libgoogle-cloud 2.33.0 *_1 + arch: aarch64 + platform: linux license: Apache-2.0 license_family: Apache size: 1253019 timestamp: 1735649566849 -- kind: conda - name: libgoogle-cloud - version: 2.33.0 - build: hdbe95d5_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-2.33.0-hdbe95d5_1.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-2.33.0-hdbe95d5_1.conda sha256: ce95aca02451694a4154c7770b6addf4fb859abf17912de6ec947da8469a56ce md5: 91de1fbab8610974c0094c266bc63435 depends: @@ -4392,17 +3549,13 @@ packages: - openssl >=3.4.0,<4.0a0 constrains: - libgoogle-cloud 2.33.0 *_1 + arch: arm64 + platform: osx license: Apache-2.0 license_family: Apache size: 877594 timestamp: 1735648230965 -- kind: conda - name: libgoogle-cloud-storage - version: 2.33.0 - build: h0121fbd_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.33.0-h0121fbd_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.33.0-h0121fbd_1.conda sha256: 41022523320ca8633a6c615710823e596efadb50f06d724e1a0c81e27994f257 md5: b0cfb5044685a7a9fa43ae669124f0a0 depends: @@ -4415,39 +3568,13 @@ packages: - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - openssl + arch: x86_64 + platform: linux license: Apache-2.0 license_family: Apache size: 784357 timestamp: 1735648759177 -- kind: conda - name: libgoogle-cloud-storage - version: 2.33.0 - build: h7081f7f_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-storage-2.33.0-h7081f7f_1.conda - sha256: c0524a22064bc17f5c037da09ba54cc9e767741ef645178e499750c44bec2531 - md5: af8e51382464d4cc2d0054977c40a732 - depends: - - __osx >=11.0 - - libabseil - - libcrc32c >=1.1.2,<1.2.0a0 - - libcurl - - libcxx >=18 - - libgoogle-cloud 2.33.0 hdbe95d5_1 - - libzlib >=1.3.1,<2.0a0 - - openssl - license: Apache-2.0 - license_family: Apache - size: 526963 - timestamp: 1735649222088 -- kind: conda - name: libgoogle-cloud-storage - version: 2.33.0 - build: hb9b2b65_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-storage-2.33.0-hb9b2b65_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-storage-2.33.0-hb9b2b65_1.conda sha256: 5eda1cbba68709b91b370b3792c9cfd7bec4ac4e2262f0887d12e1f000ae1191 md5: 45df2267ff4d8ce532e8d300ce0b0829 depends: @@ -4459,43 +3586,31 @@ packages: - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - openssl + arch: aarch64 + platform: linux license: Apache-2.0 license_family: Apache size: 737518 timestamp: 1735649773462 -- kind: conda - name: libgrpc - version: 1.67.1 - build: h0a426d6_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libgrpc-1.67.1-h0a426d6_1.conda - sha256: 630edf63981818ff590367cb95fddbed0f5a390464d0952c90ec81de899e84a6 - md5: 8a3cba079d6ac985e7d73c76a678fbb4 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-storage-2.33.0-h7081f7f_1.conda + sha256: c0524a22064bc17f5c037da09ba54cc9e767741ef645178e499750c44bec2531 + md5: af8e51382464d4cc2d0054977c40a732 depends: - __osx >=11.0 - - c-ares >=1.34.4,<2.0a0 - - libabseil * cxx17* - - libabseil >=20240722.0,<20240723.0a0 + - libabseil + - libcrc32c >=1.1.2,<1.2.0a0 + - libcurl - libcxx >=18 - - libprotobuf >=5.28.3,<5.28.4.0a0 - - libre2-11 >=2024.7.2 + - libgoogle-cloud 2.33.0 hdbe95d5_1 - libzlib >=1.3.1,<2.0a0 - - openssl >=3.4.0,<4.0a0 - - re2 - constrains: - - grpc-cpp =1.67.1 + - openssl + arch: arm64 + platform: osx license: Apache-2.0 - license_family: APACHE - size: 5311706 - timestamp: 1735585137716 -- kind: conda - name: libgrpc - version: 1.67.1 - build: h25350d4_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.67.1-h25350d4_1.conda + license_family: Apache + size: 526963 + timestamp: 1735649222088 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.67.1-h25350d4_1.conda sha256: 014627485b3cf0ea18e04c0bab07be7fb98722a3aeeb58477acc7e1c3d2f911e md5: 0c6497a760b99a926c7c12b74951a39c depends: @@ -4512,17 +3627,13 @@ packages: - re2 constrains: - grpc-cpp =1.67.1 + arch: x86_64 + platform: linux license: Apache-2.0 license_family: APACHE size: 7792251 timestamp: 1735584856826 -- kind: conda - name: libgrpc - version: 1.67.1 - build: hf7ccdd3_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libgrpc-1.67.1-hf7ccdd3_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgrpc-1.67.1-hf7ccdd3_1.conda sha256: 3fa173dc1d7456aac2b26937daae86a08432a31640e3d6569c62edc661fc9bbe md5: 8fb41a425bebaeb3d0fa568503612e64 depends: @@ -4538,103 +3649,98 @@ packages: - re2 constrains: - grpc-cpp =1.67.1 + arch: aarch64 + platform: linux license: Apache-2.0 license_family: APACHE size: 7430006 timestamp: 1735585769731 -- kind: conda - name: libiconv - version: '1.17' - build: h0d3ecfb_2 - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.17-h0d3ecfb_2.conda - sha256: bc7de5097b97bcafcf7deaaed505f7ce02f648aac8eccc0d5a47cc599a1d0304 - md5: 69bda57310071cf6d2b86caf11573d2d +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgrpc-1.67.1-h0a426d6_1.conda + sha256: 630edf63981818ff590367cb95fddbed0f5a390464d0952c90ec81de899e84a6 + md5: 8a3cba079d6ac985e7d73c76a678fbb4 + depends: + - __osx >=11.0 + - c-ares >=1.34.4,<2.0a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libre2-11 >=2024.7.2 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + - re2 + constrains: + - grpc-cpp =1.67.1 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + size: 5311706 + timestamp: 1735585137716 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-hd590300_2.conda + sha256: 8ac2f6a9f186e76539439e50505d98581472fedb347a20e7d1f36429849f05c9 + md5: d66573916ffcf376178462f1b61c941e + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux license: LGPL-2.1-only - size: 676469 - timestamp: 1702682458114 -- kind: conda - name: libiconv - version: '1.17' - build: h31becfc_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libiconv-1.17-h31becfc_2.conda + size: 705775 + timestamp: 1702682170569 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libiconv-1.17-h31becfc_2.conda sha256: a30e09d089cb75a0d5b8e5c354694c1317da98261185ed65aa3793e741060614 md5: 9a8eb13f14de7d761555a98712e6df65 depends: - libgcc-ng >=12 + arch: aarch64 + platform: linux license: LGPL-2.1-only size: 705787 timestamp: 1702684557134 -- kind: conda - name: libiconv - version: '1.17' - build: hd590300_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-hd590300_2.conda - sha256: 8ac2f6a9f186e76539439e50505d98581472fedb347a20e7d1f36429849f05c9 - md5: d66573916ffcf376178462f1b61c941e +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.17-h0d3ecfb_2.conda + sha256: bc7de5097b97bcafcf7deaaed505f7ce02f648aac8eccc0d5a47cc599a1d0304 + md5: 69bda57310071cf6d2b86caf11573d2d + arch: arm64 + platform: osx + license: LGPL-2.1-only + size: 676469 + timestamp: 1702682458114 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda + sha256: b954e09b7e49c2f2433d6f3bb73868eda5e378278b0f8c1dd10a7ef090e14f2f + md5: ea25936bb4080d843790b586850f82b8 depends: - libgcc-ng >=12 - license: LGPL-2.1-only - size: 705775 - timestamp: 1702682170569 -- kind: conda - name: libjpeg-turbo - version: 3.0.0 - build: h31becfc_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libjpeg-turbo-3.0.0-h31becfc_1.conda + constrains: + - jpeg <0.0.0a + arch: x86_64 + platform: linux + license: IJG AND BSD-3-Clause AND Zlib + size: 618575 + timestamp: 1694474974816 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libjpeg-turbo-3.0.0-h31becfc_1.conda sha256: 675bc1f2a8581cd34a86c412663ec29c5f90c1d9f8d11866aa1ade5cdbdf8429 md5: ed24e702928be089d9ba3f05618515c6 depends: - libgcc-ng >=12 constrains: - jpeg <0.0.0a + arch: aarch64 + platform: linux license: IJG AND BSD-3-Clause AND Zlib size: 647126 timestamp: 1694475003570 -- kind: conda - name: libjpeg-turbo - version: 3.0.0 - build: hb547adb_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.0.0-hb547adb_1.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.0.0-hb547adb_1.conda sha256: a42054eaa38e84fc1e5ab443facac4bbc9d1b6b6f23f54b7bf4f1eb687e1d993 md5: 3ff1e053dc3a2b8e36b9bfa4256a58d1 constrains: - jpeg <0.0.0a + arch: arm64 + platform: osx license: IJG AND BSD-3-Clause AND Zlib size: 547541 timestamp: 1694475104253 -- kind: conda - name: libjpeg-turbo - version: 3.0.0 - build: hd590300_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda - sha256: b954e09b7e49c2f2433d6f3bb73868eda5e378278b0f8c1dd10a7ef090e14f2f - md5: ea25936bb4080d843790b586850f82b8 - depends: - - libgcc-ng >=12 - constrains: - - jpeg <0.0.0a - license: IJG AND BSD-3-Clause AND Zlib - size: 618575 - timestamp: 1694474974816 -- kind: conda - name: liblapack - version: 3.9.0 - build: 26_linux64_openblas +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-26_linux64_openblas.conda build_number: 26 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-26_linux64_openblas.conda sha256: b76458c36331376911e0f98fa68109e02f4d5e5ebfffa79587ac69cef748bba1 md5: 3792604c43695d6a273bc5faaac47d48 depends: @@ -4643,17 +3749,14 @@ packages: - libcblas 3.9.0 26_linux64_openblas - liblapacke 3.9.0 26_linux64_openblas - blas * openblas + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD size: 16338 timestamp: 1734432576650 -- kind: conda - name: liblapack - version: 3.9.0 - build: 26_linuxaarch64_openblas +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-26_linuxaarch64_openblas.conda build_number: 26 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-26_linuxaarch64_openblas.conda sha256: a42bd01498efe2ccf6d08d56ac3cbd3ceab79e06699ff5aac3da8e45a66738f7 md5: a5d4e18876393633da62fd8492c00156 depends: @@ -4662,17 +3765,14 @@ packages: - blas * openblas - liblapacke 3.9.0 26_linuxaarch64_openblas - libcblas 3.9.0 26_linuxaarch64_openblas + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD size: 16403 timestamp: 1734432585123 -- kind: conda - name: liblapack - version: 3.9.0 - build: 26_osxarm64_openblas +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-26_osxarm64_openblas.conda build_number: 26 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-26_osxarm64_openblas.conda sha256: dd6d9a21e672aee4332f019c8229ce70cf5eaf6c2f4cbd1443b105fb66c00dc5 md5: cebad79038a75cfd28fa90d147a2d34d depends: @@ -4681,59 +3781,44 @@ packages: - liblapacke 3.9.0 26_osxarm64_openblas - libcblas 3.9.0 26_osxarm64_openblas - blas * openblas + arch: arm64 + platform: osx license: BSD-3-Clause license_family: BSD size: 16624 timestamp: 1734433068120 -- kind: conda - name: liblzma - version: 5.6.3 - build: h39f12f2_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.3-h39f12f2_1.conda - sha256: d863b8257406918ffdc50ae65502f2b2d6cede29404d09a094f59509d6a0aaf1 - md5: b2553114a7f5e20ccd02378a77d836aa +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.3-hb9d3cd8_1.conda + sha256: e6e425252f3839e2756e4af1ea2074dffd3396c161bf460629f9dfd6a65f15c6 + md5: 2ecf2f1c7e4e21fcfe6423a51a992d84 depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux license: 0BSD - size: 99129 - timestamp: 1733407496073 -- kind: conda - name: liblzma - version: 5.6.3 - build: h86ecc28_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.3-h86ecc28_1.conda + size: 111132 + timestamp: 1733407410083 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.3-h86ecc28_1.conda sha256: d1cce0b7d62d1e54e2164d3e0667ee808efc6c3870256e5b47a150cd0bf46824 md5: eb08b903681f9f2432c320e8ed626723 depends: - libgcc >=13 + arch: aarch64 + platform: linux license: 0BSD size: 124138 timestamp: 1733409137214 -- kind: conda - name: liblzma - version: 5.6.3 - build: hb9d3cd8_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.3-hb9d3cd8_1.conda - sha256: e6e425252f3839e2756e4af1ea2074dffd3396c161bf460629f9dfd6a65f15c6 - md5: 2ecf2f1c7e4e21fcfe6423a51a992d84 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.3-h39f12f2_1.conda + sha256: d863b8257406918ffdc50ae65502f2b2d6cede29404d09a094f59509d6a0aaf1 + md5: b2553114a7f5e20ccd02378a77d836aa depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 + - __osx >=11.0 + arch: arm64 + platform: osx license: 0BSD - size: 111132 - timestamp: 1733407410083 -- kind: conda - name: libnghttp2 - version: 1.64.0 - build: h161d5f1_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda + size: 99129 + timestamp: 1733407496073 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda sha256: b0f2b3695b13a989f75d8fd7f4778e1c7aabe3b36db83f0fe80b2cd812c0e975 md5: 19e57602824042dfd0446292ef90488b depends: @@ -4745,36 +3830,13 @@ packages: - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - openssl >=3.3.2,<4.0a0 + arch: x86_64 + platform: linux license: MIT license_family: MIT size: 647599 timestamp: 1729571887612 -- kind: conda - name: libnghttp2 - version: 1.64.0 - build: h6d7220d_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.64.0-h6d7220d_0.conda - sha256: 00cc685824f39f51be5233b54e19f45abd60de5d8847f1a56906f8936648b72f - md5: 3408c02539cee5f1141f9f11450b6a51 - depends: - - __osx >=11.0 - - c-ares >=1.34.2,<2.0a0 - - libcxx >=17 - - libev >=4.33,<4.34.0a0 - - libev >=4.33,<5.0a0 - - libzlib >=1.3.1,<2.0a0 - - openssl >=3.3.2,<4.0a0 - license: MIT - license_family: MIT - size: 566719 - timestamp: 1729572385640 -- kind: conda - name: libnghttp2 - version: 1.64.0 - build: hc8609a4_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libnghttp2-1.64.0-hc8609a4_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnghttp2-1.64.0-hc8609a4_0.conda sha256: c093c6d370aadbf0409c20b6c54c488ee2f6fea976181919fcc63e87ee232673 md5: f52c614fa214a8bedece9421c771670d depends: @@ -4785,65 +3847,52 @@ packages: - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - openssl >=3.3.2,<4.0a0 + arch: aarch64 + platform: linux license: MIT license_family: MIT size: 714610 timestamp: 1729571912479 -- kind: conda - name: libnsl - version: 2.0.1 - build: h31becfc_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda - sha256: fd18c2b75d7411096428d36a70b36b1a17e31f7b8956b6905d145792d49e97f8 - md5: c14f32510f694e3185704d89967ec422 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.64.0-h6d7220d_0.conda + sha256: 00cc685824f39f51be5233b54e19f45abd60de5d8847f1a56906f8936648b72f + md5: 3408c02539cee5f1141f9f11450b6a51 depends: - - libgcc-ng >=12 - license: LGPL-2.1-only - license_family: GPL - size: 34501 - timestamp: 1697358973269 -- kind: conda - name: libnsl - version: 2.0.1 - build: hd590300_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda + - __osx >=11.0 + - c-ares >=1.34.2,<2.0a0 + - libcxx >=17 + - libev >=4.33,<4.34.0a0 + - libev >=4.33,<5.0a0 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.3.2,<4.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 566719 + timestamp: 1729572385640 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda sha256: 26d77a3bb4dceeedc2a41bd688564fe71bf2d149fdcf117049970bc02ff1add6 md5: 30fd6e37fe21f86f4bd26d6ee73eeec7 depends: - libgcc-ng >=12 + arch: x86_64 + platform: linux license: LGPL-2.1-only license_family: GPL size: 33408 timestamp: 1697359010159 -- kind: conda - name: libopenblas - version: 0.3.28 - build: openmp_hf332438_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.28-openmp_hf332438_1.conda - sha256: 62bb669c37a845129096f73d446cdb6bb170e4927f2fea2b661329680dbbc373 - md5: 40803a48d947c8639da6704e9a44d3ce +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda + sha256: fd18c2b75d7411096428d36a70b36b1a17e31f7b8956b6905d145792d49e97f8 + md5: c14f32510f694e3185704d89967ec422 depends: - - __osx >=11.0 - - libgfortran 5.* - - libgfortran5 >=13.2.0 - - llvm-openmp >=18.1.8 - constrains: - - openblas >=0.3.28,<0.3.29.0a0 - license: BSD-3-Clause - license_family: BSD - size: 4165774 - timestamp: 1730772154295 -- kind: conda - name: libopenblas - version: 0.3.28 - build: pthreads_h94d23a6_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.28-pthreads_h94d23a6_1.conda + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: LGPL-2.1-only + license_family: GPL + size: 34501 + timestamp: 1697358973269 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.28-pthreads_h94d23a6_1.conda sha256: 99ba271d8a80a1af2723f2e124ffd91d850074c0389c067e6d96d72a2dbfeabe md5: 62857b389e42b36b686331bec0922050 depends: @@ -4853,17 +3902,13 @@ packages: - libgfortran5 >=14.2.0 constrains: - openblas >=0.3.28,<0.3.29.0a0 + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD size: 5578513 timestamp: 1730772671118 -- kind: conda - name: libopenblas - version: 0.3.28 - build: pthreads_h9d3fd7e_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.28-pthreads_h9d3fd7e_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.28-pthreads_h9d3fd7e_1.conda sha256: 30623a40764e935aa77e0d4db54c1a1589189a9bf3a03fdb445505c1e319b5a6 md5: e8dde93dd199da3c1f2c1fcfd0042cd4 depends: @@ -4872,17 +3917,30 @@ packages: - libgfortran5 >=14.2.0 constrains: - openblas >=0.3.28,<0.3.29.0a0 + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD size: 4793435 timestamp: 1730773029647 -- kind: conda - name: libparquet - version: 18.1.0 - build: h081d1f1_7_cpu +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.28-openmp_hf332438_1.conda + sha256: 62bb669c37a845129096f73d446cdb6bb170e4927f2fea2b661329680dbbc373 + md5: 40803a48d947c8639da6704e9a44d3ce + depends: + - __osx >=11.0 + - libgfortran 5.* + - libgfortran5 >=13.2.0 + - llvm-openmp >=18.1.8 + constrains: + - openblas >=0.3.28,<0.3.29.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 4165774 + timestamp: 1730772154295 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-h081d1f1_7_cpu.conda build_number: 7 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-h081d1f1_7_cpu.conda sha256: 55945b761130f60abdecf1551907ecfd05cb4a5958cf74d855b30c005ecb3592 md5: b97013ef4e1dd2cf11594f06d5b5e83a depends: @@ -4892,36 +3950,14 @@ packages: - libstdcxx >=13 - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 + arch: x86_64 + platform: linux license: Apache-2.0 license_family: APACHE size: 1205598 timestamp: 1735684849150 -- kind: conda - name: libparquet - version: 18.1.0 - build: h636d7b7_7_cpu - build_number: 7 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-h636d7b7_7_cpu.conda - sha256: bf42e43542a90edd86ba5aa5fd4543671625f1bc35f62be32688f00e18bae990 - md5: 93de9ba66a20db32a2646d313794b3a8 - depends: - - __osx >=11.0 - - libarrow 18.1.0 h0ad35bc_7_cpu - - libcxx >=18 - - libthrift >=0.21.0,<0.21.1.0a0 - - openssl >=3.4.0,<4.0a0 - license: Apache-2.0 - license_family: APACHE - size: 873251 - timestamp: 1735684582558 -- kind: conda - name: libparquet - version: 18.1.0 - build: hfc78867_7_cpu +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-hfc78867_7_cpu.conda build_number: 7 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-hfc78867_7_cpu.conda sha256: 6dff9bbe731dc2cefe96bd9c7981d2cbef2b564a3152840a29c9b6a493ea50d9 md5: 184bec7a9392ab6ba8134041e81971d6 depends: @@ -4930,79 +3966,79 @@ packages: - libstdcxx >=13 - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 + arch: aarch64 + platform: linux license: Apache-2.0 license_family: APACHE size: 1117825 timestamp: 1735685495511 -- kind: conda - name: libpng - version: 1.6.45 - build: h3783ad8_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.45-h3783ad8_0.conda - sha256: ddcc81c049b32fb5eb3ac1f9a6d3a589c08325c8ec6f89eb912208b19330d68c - md5: d554c806d065b1763cb9e1cb1d25741d +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-h636d7b7_7_cpu.conda + build_number: 7 + sha256: bf42e43542a90edd86ba5aa5fd4543671625f1bc35f62be32688f00e18bae990 + md5: 93de9ba66a20db32a2646d313794b3a8 depends: - __osx >=11.0 - - libzlib >=1.3.1,<2.0a0 - license: zlib-acknowledgement - size: 263151 - timestamp: 1736339184358 -- kind: conda - name: libpng - version: 1.6.45 - build: h943b412_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.45-h943b412_0.conda + - libarrow 18.1.0 h0ad35bc_7_cpu + - libcxx >=18 + - libthrift >=0.21.0,<0.21.1.0a0 + - openssl >=3.4.0,<4.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + size: 873251 + timestamp: 1735684582558 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.45-h943b412_0.conda sha256: b8f5b5ba9a14dedf7c97c01300de492b1b52b68eacbc3249a13fdbfa82349a2f md5: 85cbdaacad93808395ac295b5667d25b depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux license: zlib-acknowledgement size: 289426 timestamp: 1736339058310 -- kind: conda - name: libpng - version: 1.6.45 - build: hec79eb8_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.45-hec79eb8_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.45-hec79eb8_0.conda sha256: a06daa523a0d5775acb96e6e3f083adc2ab1383eb8f664513dbc663f439c9cca md5: 9a8716c16b40acc7148263de1d0a403b depends: - libgcc >=13 - libzlib >=1.3.1,<2.0a0 + arch: aarch64 + platform: linux license: zlib-acknowledgement size: 299051 timestamp: 1736344007986 -- kind: conda - name: libprotobuf - version: 5.28.3 - build: h3bd63a1_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.3-h3bd63a1_1.conda - sha256: f58a16b13ad53346903c833e266f83c3d770a43a432659b98710aed85ca885e7 - md5: bdbfea4cf45ae36652c6bbcc2e7ebe91 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.45-h3783ad8_0.conda + sha256: ddcc81c049b32fb5eb3ac1f9a6d3a589c08325c8ec6f89eb912208b19330d68c + md5: d554c806d065b1763cb9e1cb1d25741d depends: - __osx >=11.0 + - libzlib >=1.3.1,<2.0a0 + arch: arm64 + platform: osx + license: zlib-acknowledgement + size: 263151 + timestamp: 1736339184358 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda + sha256: 51125ebb8b7152e4a4e69fd2398489c4ec8473195c27cde3cbdf1cb6d18c5493 + md5: d8703f1ffe5a06356f06467f1d0b9464 + depends: + - __glibc >=2.17,<3.0.a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libcxx >=18 + - libgcc >=13 + - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD - size: 2271580 - timestamp: 1735576361997 -- kind: conda - name: libprotobuf - version: 5.28.3 - build: h44a3b7b_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.3-h44a3b7b_1.conda + size: 2960815 + timestamp: 1735577210663 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.3-h44a3b7b_1.conda sha256: ecb69f2b1668e784b41ba667493be846662d5ef702bef64fb2e013bb1364cdc4 md5: 68f807f7cc13951652bbe048253fd405 depends: @@ -5011,57 +4047,45 @@ packages: - libgcc >=13 - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD size: 2788074 timestamp: 1735576315676 -- kind: conda - name: libprotobuf - version: 5.28.3 - build: h6128344_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda - sha256: 51125ebb8b7152e4a4e69fd2398489c4ec8473195c27cde3cbdf1cb6d18c5493 - md5: d8703f1ffe5a06356f06467f1d0b9464 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.3-h3bd63a1_1.conda + sha256: f58a16b13ad53346903c833e266f83c3d770a43a432659b98710aed85ca885e7 + md5: bdbfea4cf45ae36652c6bbcc2e7ebe91 depends: - - __glibc >=2.17,<3.0.a0 + - __osx >=11.0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libgcc >=13 - - libstdcxx >=13 + - libcxx >=18 - libzlib >=1.3.1,<2.0a0 + arch: arm64 + platform: osx license: BSD-3-Clause license_family: BSD - size: 2960815 - timestamp: 1735577210663 -- kind: conda - name: libre2-11 - version: 2024.07.02 - build: h07bc746_2 - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h07bc746_2.conda - sha256: 112a73ad483353751d4c5d63648c69a4d6fcebf5e1b698a860a3f5124fc3db96 - md5: 6b1e3624d3488016ca4f1ca0c412efaa + size: 2271580 + timestamp: 1735576361997 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_2.conda + sha256: 4420f8362c71251892ba1eeb957c5e445e4e1596c0c651c28d0d8b415fe120c7 + md5: b2fede24428726dd867611664fb372e8 depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libcxx >=18 + - libgcc >=13 + - libstdcxx >=13 constrains: - re2 2024.07.02.* + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD - size: 167155 - timestamp: 1735541067807 -- kind: conda - name: libre2-11 - version: 2024.07.02 - build: h18dbdb1_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_2.conda + size: 209793 + timestamp: 1735541054068 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_2.conda sha256: 862c20de0120f802e618dcb25913d00c5b82f91f4be60b2d46a774e851adc2f6 md5: 9a7dbbaab49f76a6f36e5c9d98e323a7 depends: @@ -5071,227 +4095,176 @@ packages: - libstdcxx >=13 constrains: - re2 2024.07.02.* + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD size: 204305 timestamp: 1735540986919 -- kind: conda - name: libre2-11 - version: 2024.07.02 - build: hbbce691_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_2.conda - sha256: 4420f8362c71251892ba1eeb957c5e445e4e1596c0c651c28d0d8b415fe120c7 - md5: b2fede24428726dd867611664fb372e8 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h07bc746_2.conda + sha256: 112a73ad483353751d4c5d63648c69a4d6fcebf5e1b698a860a3f5124fc3db96 + md5: 6b1e3624d3488016ca4f1ca0c412efaa depends: - - __glibc >=2.17,<3.0.a0 + - __osx >=11.0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libgcc >=13 - - libstdcxx >=13 + - libcxx >=18 constrains: - re2 2024.07.02.* + arch: arm64 + platform: osx license: BSD-3-Clause license_family: BSD - size: 209793 - timestamp: 1735541054068 -- kind: conda - name: libsodium - version: 1.0.20 - build: h4ab18f5_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda + size: 167155 + timestamp: 1735541067807 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda sha256: 0105bd108f19ea8e6a78d2d994a6d4a8db16d19a41212070d2d1d48a63c34161 md5: a587892d3c13b6621a6091be690dbca2 depends: - libgcc-ng >=12 + arch: x86_64 + platform: linux license: ISC size: 205978 timestamp: 1716828628198 -- kind: conda - name: libsodium - version: 1.0.20 - build: h68df207_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.20-h68df207_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.20-h68df207_0.conda sha256: 448df5ea3c5cf1af785aad46858d7a5be0522f4234a4dc9bb764f4d11ff3b981 md5: 2e4a8f23bebdcb85ca8e5a0fbe75666a depends: - libgcc-ng >=12 + arch: aarch64 + platform: linux license: ISC size: 177394 timestamp: 1716828514515 -- kind: conda - name: libsodium - version: 1.0.20 - build: h99b78c6_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda sha256: fade8223e1e1004367d7101dd17261003b60aa576df6d7802191f8972f7470b1 md5: a7ce36e284c5faaf93c220dfc39e3abd depends: - __osx >=11.0 + arch: arm64 + platform: osx license: ISC size: 164972 timestamp: 1716828607917 -- kind: conda - name: libsqlite - version: 3.47.2 - build: h3f77e49_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.47.2-h3f77e49_0.conda - sha256: f192f3c8973de9ec4c214990715f13b781965247a5cedf9162e7f9e699cfc3c4 - md5: 122d6f29470f1a991e85608e77e56a8a +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.47.2-hee588c1_0.conda + sha256: 48af21ebc2cbf358976f1e0f4a0ab9e91dfc83d0ef337cf3837c6f5bc22fb352 + md5: b58da17db24b6e08bcbf8fed2fb8c915 depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux license: Unlicense - size: 850553 - timestamp: 1733762057506 -- kind: conda - name: libsqlite - version: 3.47.2 - build: h5eb1b54_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.47.2-h5eb1b54_0.conda + size: 873551 + timestamp: 1733761824646 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.47.2-h5eb1b54_0.conda sha256: 885a27fa84a5a73ed9779168c02b6c386e2fc7a53f0566b32a09ceca146b42b4 md5: d4bf59f8783a4a66c0aec568f6de3ff4 depends: - libgcc >=13 - libzlib >=1.3.1,<2.0a0 + arch: aarch64 + platform: linux license: Unlicense size: 1042182 timestamp: 1733761913736 -- kind: conda - name: libsqlite - version: 3.47.2 - build: hee588c1_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.47.2-hee588c1_0.conda - sha256: 48af21ebc2cbf358976f1e0f4a0ab9e91dfc83d0ef337cf3837c6f5bc22fb352 - md5: b58da17db24b6e08bcbf8fed2fb8c915 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.47.2-h3f77e49_0.conda + sha256: f192f3c8973de9ec4c214990715f13b781965247a5cedf9162e7f9e699cfc3c4 + md5: 122d6f29470f1a991e85608e77e56a8a depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 + - __osx >=11.0 - libzlib >=1.3.1,<2.0a0 + arch: arm64 + platform: osx license: Unlicense - size: 873551 - timestamp: 1733761824646 -- kind: conda - name: libssh2 - version: 1.11.1 - build: h9cc3647_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.1-h9cc3647_0.conda - sha256: f7047c6ed44bcaeb04432e8c74da87591940d091b0a3940c0d884b7faa8062e9 - md5: ddc7194676c285513706e5fc64f214d7 + size: 850553 + timestamp: 1733762057506 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hf672d98_0.conda + sha256: 0407ac9fda2bb67e11e357066eff144c845801d00b5f664efbc48813af1e7bb9 + md5: be2de152d8073ef1c01b7728475f2fe7 depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 - libzlib >=1.3.1,<2.0a0 - openssl >=3.4.0,<4.0a0 + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD - size: 279028 - timestamp: 1732349599461 -- kind: conda - name: libssh2 - version: 1.11.1 - build: ha41c0db_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libssh2-1.11.1-ha41c0db_0.conda + size: 304278 + timestamp: 1732349402869 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libssh2-1.11.1-ha41c0db_0.conda sha256: 40f2af5357457546bd11cd64a3b9043d83865180f65ce602515c35f353be35c7 md5: aeffe03c0e598f015aab08dbb04f6ee4 depends: - libgcc >=13 - libzlib >=1.3.1,<2.0a0 - openssl >=3.4.0,<4.0a0 + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD size: 311577 timestamp: 1732349396421 -- kind: conda - name: libssh2 - version: 1.11.1 - build: hf672d98_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hf672d98_0.conda - sha256: 0407ac9fda2bb67e11e357066eff144c845801d00b5f664efbc48813af1e7bb9 - md5: be2de152d8073ef1c01b7728475f2fe7 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.1-h9cc3647_0.conda + sha256: f7047c6ed44bcaeb04432e8c74da87591940d091b0a3940c0d884b7faa8062e9 + md5: ddc7194676c285513706e5fc64f214d7 depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - libzlib >=1.3.1,<2.0a0 - openssl >=3.4.0,<4.0a0 + arch: arm64 + platform: osx license: BSD-3-Clause license_family: BSD - size: 304278 - timestamp: 1732349402869 -- kind: conda - name: libstdcxx - version: 14.2.0 - build: h3f4de04_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_1.conda - sha256: 519556d2c93f1b487091ce046d62e762286177f4a670ec10e16005177d0bcab3 - md5: 37f489acd39e22b623d2d1e5ac6d195c - depends: - - libgcc 14.2.0 he277a41_1 - license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - size: 3816794 - timestamp: 1729089463404 -- kind: conda - name: libstdcxx - version: 14.2.0 - build: hc0a3c3a_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-hc0a3c3a_1.conda + size: 279028 + timestamp: 1732349599461 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-hc0a3c3a_1.conda sha256: 4661af0eb9bdcbb5fb33e5d0023b001ad4be828fccdcc56500059d56f9869462 md5: 234a5554c53625688d51062645337328 depends: - libgcc 14.2.0 h77fa898_1 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 3893695 + timestamp: 1729027746910 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_1.conda + sha256: 519556d2c93f1b487091ce046d62e762286177f4a670ec10e16005177d0bcab3 + md5: 37f489acd39e22b623d2d1e5ac6d195c + depends: + - libgcc 14.2.0 he277a41_1 + arch: aarch64 + platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 3893695 - timestamp: 1729027746910 -- kind: conda - name: libstdcxx-ng - version: 14.2.0 - build: h4852527_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_1.conda + size: 3816794 + timestamp: 1729089463404 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_1.conda sha256: 25bb30b827d4f6d6f0522cc0579e431695503822f144043b93c50237017fffd8 md5: 8371ac6457591af2cf6159439c1fd051 depends: - libstdcxx 14.2.0 hc0a3c3a_1 + arch: x86_64 + platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL size: 54105 timestamp: 1729027780628 -- kind: conda - name: libstdcxx-ng - version: 14.2.0 - build: hf1166c9_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_1.conda sha256: 9f97461bd55a2745a7a0941f3502a047f15bfe7bb2952dc7fb204b3202f866fd md5: 0e75771b8a03afae5a2c6ce71bc733f5 depends: - libstdcxx 14.2.0 h3f4de04_1 + arch: aarch64 + platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL size: 54133 timestamp: 1729089498541 -- kind: conda - name: libthrift - version: 0.21.0 - build: h0e7cc3e_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libthrift-0.21.0-h0e7cc3e_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/libthrift-0.21.0-h0e7cc3e_0.conda sha256: ebb395232973c18745b86c9a399a4725b2c39293c9a91b8e59251be013db42f0 md5: dcb95c0a98ba9ff737f7ae482aef7833 depends: @@ -5301,16 +4274,13 @@ packages: - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - openssl >=3.3.2,<4.0a0 + arch: x86_64 + platform: linux license: Apache-2.0 license_family: APACHE size: 425773 timestamp: 1727205853307 -- kind: conda - name: libthrift - version: 0.21.0 - build: h154c74f_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libthrift-0.21.0-h154c74f_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libthrift-0.21.0-h154c74f_0.conda sha256: f04ab1417aca1687edff9c30d8423ace285eb8c053dc16d595c6e47cfeefb274 md5: c28792bf37f4ecdce8e3cb9e40750650 depends: @@ -5319,16 +4289,13 @@ packages: - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - openssl >=3.3.2,<4.0a0 + arch: aarch64 + platform: linux license: Apache-2.0 license_family: APACHE size: 417329 timestamp: 1727205944238 -- kind: conda - name: libthrift - version: 0.21.0 - build: h64651cc_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libthrift-0.21.0-h64651cc_0.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libthrift-0.21.0-h64651cc_0.conda sha256: 7a6c7d5f58cbbc2ccd6493b4b821639fdb0701b9b04c737a949e8cb6adf1c9ad md5: 7ce2bd2f650f8c31ad7ba4c7bfea61b7 depends: @@ -5337,39 +4304,32 @@ packages: - libevent >=2.1.12,<2.1.13.0a0 - libzlib >=1.3.1,<2.0a0 - openssl >=3.3.2,<4.0a0 + arch: arm64 + platform: osx license: Apache-2.0 license_family: APACHE size: 324342 timestamp: 1727206096912 -- kind: conda - name: libtiff - version: 4.7.0 - build: h551f018_3 - build_number: 3 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-h551f018_3.conda - sha256: 91417846157e04992801438a496b151df89604b2e7c6775d6f701fcd0cbed5ae - md5: a5d084a957563e614ec0c0196d890654 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hd9ff511_3.conda + sha256: b224e16b88d76ea95e4af56e2bc638c603bd26a770b98d117d04541d3aafa002 + md5: 0ea6510969e1296cc19966fad481f6de depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 - lerc >=4.0.0,<5.0a0 - - libcxx >=18 - libdeflate >=1.23,<1.24.0a0 + - libgcc >=13 - libjpeg-turbo >=3.0.0,<4.0a0 - liblzma >=5.6.3,<6.0a0 + - libstdcxx >=13 - libwebp-base >=1.4.0,<2.0a0 - libzlib >=1.3.1,<2.0a0 - zstd >=1.5.6,<1.6.0a0 + arch: x86_64 + platform: linux license: HPND - size: 370600 - timestamp: 1734398863052 -- kind: conda - name: libtiff - version: 4.7.0 - build: h88f7998_3 - build_number: 3 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.0-h88f7998_3.conda + size: 428173 + timestamp: 1734398813264 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.0-h88f7998_3.conda sha256: 5888bd66ba7606ae8596856c7dac800940ecad0aed77d6aa37db69d434c81cf0 md5: 36a0ea4a173338c8725dc0807e99cf22 depends: @@ -5382,239 +4342,189 @@ packages: - libwebp-base >=1.4.0,<2.0a0 - libzlib >=1.3.1,<2.0a0 - zstd >=1.5.6,<1.6.0a0 + arch: aarch64 + platform: linux license: HPND size: 464699 timestamp: 1734398752249 -- kind: conda - name: libtiff - version: 4.7.0 - build: hd9ff511_3 - build_number: 3 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hd9ff511_3.conda - sha256: b224e16b88d76ea95e4af56e2bc638c603bd26a770b98d117d04541d3aafa002 - md5: 0ea6510969e1296cc19966fad481f6de +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-h551f018_3.conda + sha256: 91417846157e04992801438a496b151df89604b2e7c6775d6f701fcd0cbed5ae + md5: a5d084a957563e614ec0c0196d890654 depends: - - __glibc >=2.17,<3.0.a0 + - __osx >=11.0 - lerc >=4.0.0,<5.0a0 + - libcxx >=18 - libdeflate >=1.23,<1.24.0a0 - - libgcc >=13 - libjpeg-turbo >=3.0.0,<4.0a0 - liblzma >=5.6.3,<6.0a0 - - libstdcxx >=13 - libwebp-base >=1.4.0,<2.0a0 - libzlib >=1.3.1,<2.0a0 - zstd >=1.5.6,<1.6.0a0 + arch: arm64 + platform: osx license: HPND - size: 428173 - timestamp: 1734398813264 -- kind: conda - name: libutf8proc - version: 2.9.0 - build: h5505292_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.9.0-h5505292_1.conda - sha256: ea88f06e97ef8fa2490f7594f8885bb542577226edf8abba3144302d951a53c2 - md5: f777470d31c78cd0abe1903a2fda436f + size: 370600 + timestamp: 1734398863052 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.9.0-hb9d3cd8_1.conda + sha256: 9794e6388e780c3310d46f773bbc924d4053375c3fcdb07a704b57f4616db928 + md5: 1e936bd23d737aac62a18e9a1e7f8b18 depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux license: MIT license_family: MIT - size: 83000 - timestamp: 1732868631531 -- kind: conda - name: libutf8proc - version: 2.9.0 - build: h86ecc28_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.9.0-h86ecc28_1.conda + size: 81500 + timestamp: 1732868419835 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.9.0-h86ecc28_1.conda sha256: 37a1833c55f9945724cd4b3eb6a1469032cc754a1dd725f191c34154ad2ba7e4 md5: 699f155da290be3a1a64c932c6728991 depends: - libgcc >=13 + arch: aarch64 + platform: linux license: MIT license_family: MIT size: 81526 timestamp: 1732868466862 -- kind: conda - name: libutf8proc - version: 2.9.0 - build: hb9d3cd8_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.9.0-hb9d3cd8_1.conda - sha256: 9794e6388e780c3310d46f773bbc924d4053375c3fcdb07a704b57f4616db928 - md5: 1e936bd23d737aac62a18e9a1e7f8b18 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.9.0-h5505292_1.conda + sha256: ea88f06e97ef8fa2490f7594f8885bb542577226edf8abba3144302d951a53c2 + md5: f777470d31c78cd0abe1903a2fda436f depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 + - __osx >=11.0 + arch: arm64 + platform: osx license: MIT license_family: MIT - size: 81500 - timestamp: 1732868419835 -- kind: conda - name: libuuid - version: 2.38.1 - build: h0b41bf4_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda + size: 83000 + timestamp: 1732868631531 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda sha256: 787eb542f055a2b3de553614b25f09eefb0a0931b0c87dbcce6efdfd92f04f18 md5: 40b61aab5c7ba9ff276c41cfffe6b80b depends: - libgcc-ng >=12 + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD size: 33601 timestamp: 1680112270483 -- kind: conda - name: libuuid - version: 2.38.1 - build: hb4cce97_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda sha256: 616277b0c5f7616c2cdf36f6c316ea3f9aa5bb35f2d4476a349ab58b9b91675f md5: 000e30b09db0b7c775b21695dff30969 depends: - libgcc-ng >=12 + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD size: 35720 timestamp: 1680113474501 -- kind: conda - name: libuv - version: 1.49.2 - build: h7ab814d_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libuv-1.49.2-h7ab814d_0.conda - sha256: 0e5176af1e788ad5006cf261c4ea5a288a935fda48993b0240ddd2e562dc3d02 - md5: 4bc348e3a1a74d20a3f9beb866d75e0a +- conda: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.49.2-hb9d3cd8_0.conda + sha256: a35cd81cd1a9add11024097da83cc06b0aae83186fe4124b77710876f37d8f31 + md5: 070e3c9ddab77e38799d5c30b109c633 depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux license: MIT license_family: MIT - size: 410500 - timestamp: 1729322654121 -- kind: conda - name: libuv - version: 1.49.2 - build: h86ecc28_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libuv-1.49.2-h86ecc28_0.conda + size: 884647 + timestamp: 1729322566955 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuv-1.49.2-h86ecc28_0.conda sha256: adf4eca89339ac7780f2394e7e6699be81259eb91f79f9d9fdf2c1bc6b26f210 md5: 1899e1ec2be63386c41c4db31d3056af depends: - libgcc >=13 + arch: aarch64 + platform: linux license: MIT license_family: MIT size: 627484 timestamp: 1729322575379 -- kind: conda - name: libuv - version: 1.49.2 - build: hb9d3cd8_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.49.2-hb9d3cd8_0.conda - sha256: a35cd81cd1a9add11024097da83cc06b0aae83186fe4124b77710876f37d8f31 - md5: 070e3c9ddab77e38799d5c30b109c633 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libuv-1.49.2-h7ab814d_0.conda + sha256: 0e5176af1e788ad5006cf261c4ea5a288a935fda48993b0240ddd2e562dc3d02 + md5: 4bc348e3a1a74d20a3f9beb866d75e0a depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 + - __osx >=11.0 + arch: arm64 + platform: osx license: MIT license_family: MIT - size: 884647 - timestamp: 1729322566955 -- kind: conda - name: libwebp-base - version: 1.5.0 - build: h0886dbf_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libwebp-base-1.5.0-h0886dbf_0.conda + size: 410500 + timestamp: 1729322654121 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.5.0-h851e524_0.conda + sha256: c45283fd3e90df5f0bd3dbcd31f59cdd2b001d424cf30a07223655413b158eaf + md5: 63f790534398730f59e1b899c3644d4a + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + constrains: + - libwebp 1.5.0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 429973 + timestamp: 1734777489810 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libwebp-base-1.5.0-h0886dbf_0.conda sha256: b3d881a0ae08bb07fff7fa8ead506c8d2e0388733182fe4f216f3ec5d61ffcf0 md5: 95ef4a689b8cc1b7e18b53784d88f96b depends: - libgcc >=13 constrains: - libwebp 1.5.0 + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD size: 362623 timestamp: 1734779054659 -- kind: conda - name: libwebp-base - version: 1.5.0 - build: h2471fea_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.5.0-h2471fea_0.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.5.0-h2471fea_0.conda sha256: f8bdb876b4bc8cb5df47c28af29188de8911c3fea4b799a33743500149de3f4a md5: 569466afeb84f90d5bb88c11cc23d746 depends: - __osx >=11.0 constrains: - libwebp 1.5.0 + arch: arm64 + platform: osx license: BSD-3-Clause license_family: BSD size: 290013 timestamp: 1734777593617 -- kind: conda - name: libwebp-base - version: 1.5.0 - build: h851e524_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.5.0-h851e524_0.conda - sha256: c45283fd3e90df5f0bd3dbcd31f59cdd2b001d424cf30a07223655413b158eaf - md5: 63f790534398730f59e1b899c3644d4a +- conda: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda + sha256: 666c0c431b23c6cec6e492840b176dde533d48b7e6fb8883f5071223433776aa + md5: 92ed62436b625154323d40d5f2f11dd7 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - constrains: - - libwebp 1.5.0 - license: BSD-3-Clause - license_family: BSD - size: 429973 - timestamp: 1734777489810 -- kind: conda - name: libxcb - version: 1.17.0 - build: h262b8f6_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcb-1.17.0-h262b8f6_0.conda - sha256: 461cab3d5650ac6db73a367de5c8eca50363966e862dcf60181d693236b1ae7b - md5: cd14ee5cca2464a425b1dbfc24d90db2 - depends: - - libgcc >=13 - pthread-stubs - xorg-libxau >=1.0.11,<2.0a0 - xorg-libxdmcp + arch: x86_64 + platform: linux license: MIT license_family: MIT - size: 397493 - timestamp: 1727280745441 -- kind: conda - name: libxcb - version: 1.17.0 - build: h8a09558_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda - sha256: 666c0c431b23c6cec6e492840b176dde533d48b7e6fb8883f5071223433776aa - md5: 92ed62436b625154323d40d5f2f11dd7 + size: 395888 + timestamp: 1727278577118 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcb-1.17.0-h262b8f6_0.conda + sha256: 461cab3d5650ac6db73a367de5c8eca50363966e862dcf60181d693236b1ae7b + md5: cd14ee5cca2464a425b1dbfc24d90db2 depends: - - __glibc >=2.17,<3.0.a0 - libgcc >=13 - pthread-stubs - xorg-libxau >=1.0.11,<2.0a0 - xorg-libxdmcp + arch: aarch64 + platform: linux license: MIT license_family: MIT - size: 395888 - timestamp: 1727278577118 -- kind: conda - name: libxcb - version: 1.17.0 - build: hdb1d25a_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libxcb-1.17.0-hdb1d25a_0.conda + size: 397493 + timestamp: 1727280745441 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxcb-1.17.0-hdb1d25a_0.conda sha256: bd3816218924b1e43b275863e21a3e13a5db4a6da74cca8e60bc3c213eb62f71 md5: af523aae2eca6dfa1c8eec693f5b9a79 depends: @@ -5622,45 +4532,33 @@ packages: - pthread-stubs - xorg-libxau >=1.0.11,<2.0a0 - xorg-libxdmcp + arch: arm64 + platform: osx license: MIT license_family: MIT size: 323658 timestamp: 1727278733917 -- kind: conda - name: libxcrypt - version: 4.4.36 - build: h31becfc_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda - sha256: 6b46c397644091b8a26a3048636d10b989b1bf266d4be5e9474bf763f828f41f - md5: b4df5d7d4b63579d081fd3a4cf99740e - depends: - - libgcc-ng >=12 - license: LGPL-2.1-or-later - size: 114269 - timestamp: 1702724369203 -- kind: conda - name: libxcrypt - version: 4.4.36 - build: hd590300_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda sha256: 6ae68e0b86423ef188196fff6207ed0c8195dd84273cb5623b85aa08033a410c md5: 5aa797f8787fe7a17d1b0821485b5adc depends: - libgcc-ng >=12 + arch: x86_64 + platform: linux license: LGPL-2.1-or-later size: 100393 timestamp: 1702724383534 -- kind: conda - name: libxml2 - version: 2.13.5 - build: h0d44e9d_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.5-h0d44e9d_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda + sha256: 6b46c397644091b8a26a3048636d10b989b1bf266d4be5e9474bf763f828f41f + md5: b4df5d7d4b63579d081fd3a4cf99740e + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: LGPL-2.1-or-later + size: 114269 + timestamp: 1702724369203 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.5-h0d44e9d_1.conda sha256: 306e18aa647d8208ad2cd0e62d84933222b2fbe93d2d53cd5283d2256b1d54de md5: f5b05674697ae7d2c5932766695945e1 depends: @@ -5671,173 +4569,133 @@ packages: - libzlib >=1.3.1,<2.0a0 constrains: - icu <0.0a0 + arch: x86_64 + platform: linux license: MIT license_family: MIT size: 689993 timestamp: 1733443678322 -- kind: conda - name: libxml2 - version: 2.13.5 - build: h178c5d8_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.5-h178c5d8_1.conda - sha256: d7af3f25a4cece170502acd38f2dafbea4521f373f46dcb28a37fbe6ac2da544 - md5: 3dc3cff0eca1640a6acbbfab2f78139e +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.5-h2e0c361_1.conda + sha256: dc0e86d35a836af6e99d18f50c6551fc64c53ed3a3da5a9fea90e78763cf14b4 + md5: 63410f85031930cde371dfe0ee89109a depends: - - __osx >=11.0 - icu >=75.1,<76.0a0 + - libgcc >=13 - libiconv >=1.17,<2.0a0 - liblzma >=5.6.3,<6.0a0 - libzlib >=1.3.1,<2.0a0 + arch: aarch64 + platform: linux license: MIT license_family: MIT - size: 582898 - timestamp: 1733443841584 -- kind: conda - name: libxml2 - version: 2.13.5 - build: h2e0c361_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.5-h2e0c361_1.conda - sha256: dc0e86d35a836af6e99d18f50c6551fc64c53ed3a3da5a9fea90e78763cf14b4 - md5: 63410f85031930cde371dfe0ee89109a + size: 732155 + timestamp: 1733443825814 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.5-h178c5d8_1.conda + sha256: d7af3f25a4cece170502acd38f2dafbea4521f373f46dcb28a37fbe6ac2da544 + md5: 3dc3cff0eca1640a6acbbfab2f78139e depends: + - __osx >=11.0 - icu >=75.1,<76.0a0 - - libgcc >=13 - libiconv >=1.17,<2.0a0 - liblzma >=5.6.3,<6.0a0 - libzlib >=1.3.1,<2.0a0 + arch: arm64 + platform: osx license: MIT license_family: MIT - size: 732155 - timestamp: 1733443825814 -- kind: conda - name: libzlib - version: 1.3.1 - build: h8359307_2 - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - sha256: ce34669eadaba351cd54910743e6a2261b67009624dbc7daeeafdef93616711b - md5: 369964e85dc26bfe78f41399b366c435 + size: 582898 + timestamp: 1733443841584 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda + sha256: d4bfe88d7cb447768e31650f06257995601f89076080e76df55e3112d4e47dc4 + md5: edb0dca6bc32e4f4789199455a1dbeb8 depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 constrains: - zlib 1.3.1 *_2 + arch: x86_64 + platform: linux license: Zlib license_family: Other - size: 46438 - timestamp: 1727963202283 -- kind: conda - name: libzlib - version: 1.3.1 - build: h86ecc28_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda + size: 60963 + timestamp: 1727963148474 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda sha256: 5a2c1eeef69342e88a98d1d95bff1603727ab1ff4ee0e421522acd8813439b84 md5: 08aad7cbe9f5a6b460d0976076b6ae64 depends: - libgcc >=13 constrains: - zlib 1.3.1 *_2 + arch: aarch64 + platform: linux license: Zlib license_family: Other size: 66657 timestamp: 1727963199518 -- kind: conda - name: libzlib - version: 1.3.1 - build: hb9d3cd8_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - sha256: d4bfe88d7cb447768e31650f06257995601f89076080e76df55e3112d4e47dc4 - md5: edb0dca6bc32e4f4789199455a1dbeb8 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda + sha256: ce34669eadaba351cd54910743e6a2261b67009624dbc7daeeafdef93616711b + md5: 369964e85dc26bfe78f41399b366c435 depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 + - __osx >=11.0 constrains: - zlib 1.3.1 *_2 + arch: arm64 + platform: osx license: Zlib license_family: Other - size: 60963 - timestamp: 1727963148474 -- kind: conda - name: llvm-openmp - version: 19.1.6 - build: hdb05f8b_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.6-hdb05f8b_0.conda + size: 46438 + timestamp: 1727963202283 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.6-hdb05f8b_0.conda sha256: a0f3e9139ab16f0a67b9d2bbabc15b78977168f4a5b5503fed4962dcb9a96102 md5: 34fdeffa0555a1a56f38839415cc066c depends: - __osx >=11.0 constrains: - openmp 19.1.6|19.1.6.* - license: Apache-2.0 WITH LLVM-exception - license_family: APACHE - size: 281251 - timestamp: 1734520462311 -- kind: conda - name: lz4-c - version: 1.10.0 - build: h286801f_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.10.0-h286801f_1.conda - sha256: 94d3e2a485dab8bdfdd4837880bde3dd0d701e2b97d6134b8806b7c8e69c8652 - md5: 01511afc6cc1909c5303cf31be17b44f - depends: - - __osx >=11.0 - - libcxx >=18 - license: BSD-2-Clause - license_family: BSD - size: 148824 - timestamp: 1733741047892 -- kind: conda - name: lz4-c - version: 1.10.0 - build: h5888daf_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.10.0-h5888daf_1.conda + arch: arm64 + platform: osx + license: Apache-2.0 WITH LLVM-exception + license_family: APACHE + size: 281251 + timestamp: 1734520462311 +- conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.10.0-h5888daf_1.conda sha256: 47326f811392a5fd3055f0f773036c392d26fdb32e4d8e7a8197eed951489346 md5: 9de5350a85c4a20c685259b889aa6393 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - libstdcxx >=13 + arch: x86_64 + platform: linux license: BSD-2-Clause license_family: BSD size: 167055 timestamp: 1733741040117 -- kind: conda - name: lz4-c - version: 1.10.0 - build: h5ad3122_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.10.0-h5ad3122_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.10.0-h5ad3122_1.conda sha256: 67e55058d275beea76c1882399640c37b5be8be4eb39354c94b610928e9a0573 md5: 6654e411da94011e8fbe004eacb8fe11 depends: - libgcc >=13 - libstdcxx >=13 + arch: aarch64 + platform: linux license: BSD-2-Clause license_family: BSD size: 184953 timestamp: 1733740984533 -- kind: conda - name: markdown-it-py - version: 3.0.0 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: 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/lz4-c-1.10.0-h286801f_1.conda + sha256: 94d3e2a485dab8bdfdd4837880bde3dd0d701e2b97d6134b8806b7c8e69c8652 + md5: 01511afc6cc1909c5303cf31be17b44f + depends: + - __osx >=11.0 + - libcxx >=18 + arch: arm64 + platform: osx + license: BSD-2-Clause + license_family: BSD + size: 148824 + timestamp: 1733741047892 +- conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_1.conda sha256: 0fbacdfb31e55964152b24d5567e9a9996e1e7902fb08eb7d91b5fd6ce60803a md5: fee3164ac23dfca50cfcc8b85ddefb81 depends: @@ -5847,13 +4705,7 @@ packages: license_family: MIT size: 64430 timestamp: 1733250550053 -- kind: conda - name: markupsafe - version: 3.0.2 - build: py311h2dc5d0c_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py311h2dc5d0c_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py311h2dc5d0c_1.conda sha256: 0291d90706ac6d3eea73e66cd290ef6d805da3fad388d1d476b8536ec92ca9a8 md5: 6565a715337ae279e351d0abd8ffe88a depends: @@ -5863,121 +4715,84 @@ packages: - python_abi 3.11.* *_cp311 constrains: - jinja2 >=3.0.0 + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD size: 25354 timestamp: 1733219879408 -- kind: conda - name: markupsafe - version: 3.0.2 - build: py311h4921393_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py311h4921393_1.conda - sha256: 4f738a7c80e34e5e5d558e946b06d08e7c40e3cc4bdf08140bf782c359845501 - md5: 249e2f6f5393bb6b36b3d3a3eebdcdf9 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.2-py311ha09ea12_1.conda + sha256: 0af0d9357e309876adf6ca61fa574afee74741fb1628755ce1f36028d294e854 + md5: eb3611be0cc15845bf6e5075adc520ee depends: - - __osx >=11.0 + - libgcc >=13 - python >=3.11,<3.12.0a0 - - python >=3.11,<3.12.0a0 *_cpython - python_abi 3.11.* *_cp311 constrains: - jinja2 >=3.0.0 + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD - size: 24976 - timestamp: 1733219849253 -- kind: conda - name: markupsafe - version: 3.0.2 - build: py311ha09ea12_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.2-py311ha09ea12_1.conda - sha256: 0af0d9357e309876adf6ca61fa574afee74741fb1628755ce1f36028d294e854 - md5: eb3611be0cc15845bf6e5075adc520ee + size: 25787 + timestamp: 1733220925299 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py311h4921393_1.conda + sha256: 4f738a7c80e34e5e5d558e946b06d08e7c40e3cc4bdf08140bf782c359845501 + md5: 249e2f6f5393bb6b36b3d3a3eebdcdf9 depends: - - libgcc >=13 + - __osx >=11.0 - python >=3.11,<3.12.0a0 + - python >=3.11,<3.12.0a0 *_cpython - python_abi 3.11.* *_cp311 constrains: - jinja2 >=3.0.0 + arch: arm64 + platform: osx license: BSD-3-Clause license_family: BSD - size: 25787 - timestamp: 1733220925299 -- kind: conda - name: max - version: 25.1.0.dev2025010817 - build: release - subdir: noarch + size: 24976 + timestamp: 1733219849253 +- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011022-release.conda noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025010817-release.conda - sha256: 4ce81189e26dd06f188129580db0464f8ee9a081e195dad7082b2fa25fcf738e - md5: b46d770a5f45597ffc008bd224d8e91c - depends: - - max-core ==25.1.0.dev2025010817 release - - max-python >=25.1.0.dev2025010817,<26.0a0 - - mojo-jupyter ==25.1.0.dev2025010817 release - - mblack ==25.1.0.dev2025010817 release + sha256: fae148fb87d78d496ca5596fec75af7ec2c29e60416fcb856be56031cf798901 + md5: 59903ff40dee24c089ca2051858e6422 + depends: + - max-core ==25.1.0.dev2025011022 release + - max-python >=25.1.0.dev2025011022,<26.0a0 + - mojo-jupyter ==25.1.0.dev2025011022 release + - mblack ==25.1.0.dev2025011022 release license: LicenseRef-Modular-Proprietary - size: 9922 - timestamp: 1736357145809 -- kind: conda - name: max-core - version: 25.1.0.dev2025010817 - build: release - subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025010817-release.conda - sha256: 5459a1f6c379b01231649212ca7f5062c49208b5c0b2b17047b55011872727c2 - md5: 5bbb293b5216b098c424e7602823a460 + size: 9917 + timestamp: 1736547478654 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025011022-release.conda + sha256: 237e4007c732a59a619fcb0669f6b55a2a2c7f22bfa7b663ed68fde09ea02f69 + md5: 51be3ab7a5232a42df62bb75e983d05b depends: - - mblack ==25.1.0.dev2025010817 release - arch: x86_64 - platform: linux + - mblack ==25.1.0.dev2025011022 release license: LicenseRef-Modular-Proprietary - size: 247646542 - timestamp: 1736357145807 -- kind: conda - name: max-core - version: 25.1.0.dev2025010817 - build: release - subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025010817-release.conda - sha256: 18715c3fc8071d5eeb9f1893512fe65967919e9900738423958a5cb4f09148da - md5: 4a7b6e800f8fdabf0498727c1bff57d3 + size: 243253667 + timestamp: 1736547516482 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025011022-release.conda + sha256: 7d0b9d872d69308cb7dd70eb68fdf90816a4a33135089eb8ba29877f6be6f89f + md5: 321080690171af0ed4087069d3d3a057 depends: - - mblack ==25.1.0.dev2025010817 release - arch: aarch64 - platform: linux + - mblack ==25.1.0.dev2025011022 release license: LicenseRef-Modular-Proprietary - size: 251608988 - timestamp: 1736357045232 -- kind: conda - name: max-core - version: 25.1.0.dev2025010817 - build: release - subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025010817-release.conda - sha256: 5a23bdc48d6fe2cfe439097b7a0fc0f1bd2b23be081478638ef4b945267d8015 - md5: 1f54b615e5199ac268f123c89cfbabda - depends: - - mblack ==25.1.0.dev2025010817 release - arch: arm64 - platform: osx + size: 247039443 + timestamp: 1736547478652 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025011022-release.conda + sha256: bec13a3ff3e08404e60a3bd9e606168a422effbf9a94180fb17181eaf3686666 + md5: 11895a6758a61c5abc9a29d48f814794 + depends: + - mblack ==25.1.0.dev2025011022 release license: LicenseRef-Modular-Proprietary - size: 209267317 - timestamp: 1736357278969 -- kind: conda - name: max-python - version: 25.1.0.dev2025010817 - build: 3.11release - subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025010817-3.11release.conda - sha256: 484df097270c6e3e17e974a8d819bfcfb3f76c416b24435d3b56c6ad2aa680d3 - md5: c0483878bb68b87901c6586283b218f0 - depends: - - max-core ==25.1.0.dev2025010817 release + size: 205521630 + timestamp: 1736547263030 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025011022-3.11release.conda + sha256: b2a632b8ce51f4ece3181294b845d50c14a9cb3e04e59233aa0750a69a73c014 + md5: 83ff8a5952b94a70cf9a6e2ea18e40ce + depends: + - max-core ==25.1.0.dev2025011022 release - python 3.11.* - fastapi - httpx @@ -5997,21 +4812,14 @@ packages: - typing_extensions - uvicorn - python_abi 3.11.* *_cp311 - arch: x86_64 - platform: linux license: LicenseRef-Modular-Proprietary - size: 124310656 - timestamp: 1736357145815 -- kind: conda - name: max-python - version: 25.1.0.dev2025010817 - build: 3.11release - subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025010817-3.11release.conda - sha256: 9129d7aaf336c2681222ea59ee93adf7a1b96265f98a5ccfef554376fd9e6f5b - md5: 8d027a2fc8187f587e4beb684d46cd31 - depends: - - max-core ==25.1.0.dev2025010817 release + size: 124129174 + timestamp: 1736547516490 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025011022-3.11release.conda + sha256: 0788294c7e5c20fa554b1e73f38e57165b9e69ecbf9e2e554732140cf0fa4913 + md5: c9f3981394b055f623ece7ed094493ad + depends: + - max-core ==25.1.0.dev2025011022 release - python 3.11.* - fastapi - httpx @@ -6031,21 +4839,14 @@ packages: - typing_extensions - uvicorn - python_abi 3.11.* *_cp311 - arch: aarch64 - platform: linux license: LicenseRef-Modular-Proprietary - size: 128032940 - timestamp: 1736357045240 -- kind: conda - name: max-python - version: 25.1.0.dev2025010817 - build: 3.11release - subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025010817-3.11release.conda - sha256: 9701c9fc8c163efcb36ad073936b3b848e03a97eb444efc7d73d5aa71ed8b928 - md5: fdc5f29f20fe879a8752ac6da859dd5c - depends: - - max-core ==25.1.0.dev2025010817 release + size: 127915077 + timestamp: 1736547478661 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025011022-3.11release.conda + sha256: 63c85f361f0b69716a36d796b54c0e19da94e4754159422837554271debc5bda + md5: 907647aa491ebd23f036ede363b1992a + depends: + - max-core ==25.1.0.dev2025011022 release - python 3.11.* - fastapi - httpx @@ -6065,20 +4866,13 @@ packages: - typing_extensions - uvicorn - python_abi 3.11.* *_cp311 - arch: arm64 - platform: osx license: LicenseRef-Modular-Proprietary - size: 110679362 - timestamp: 1736357278971 -- kind: conda - name: mblack - version: 25.1.0.dev2025010817 - build: release - subdir: noarch + size: 110529043 + timestamp: 1736547263032 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011022-release.conda noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025010817-release.conda - sha256: 8bc21a826d3edc5a8719deeeadcee5b3fc8fbd83313ce2c7ebc8c620075608e1 - md5: ee664fe2390706d36d2d60b1f2bd69df + sha256: 00a2f2b377584f27171e8b832203b9107f081a5b2aaf4ac3921730fbd2c73594 + md5: b571b4d34e8fa8021413b97e1b1c5efe depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -6088,16 +4882,9 @@ packages: - platformdirs >=2 - python license: MIT - size: 130813 - timestamp: 1736357145814 -- kind: conda - name: mdurl - version: 0.1.2 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda + size: 130807 + timestamp: 1736547478660 +- conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda sha256: 78c1bbe1723449c52b7a9df1af2ee5f005209f67e40b6e1d3c7619127c43b1c7 md5: 592132998493b3ff25fd7479396e8351 depends: @@ -6106,30 +4893,19 @@ packages: license_family: MIT size: 14465 timestamp: 1733255681319 -- kind: conda - name: mojo-jupyter - version: 25.1.0.dev2025010817 - build: release - subdir: noarch +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011022-release.conda noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025010817-release.conda - sha256: a92d02809c43a9a92abc363e69396738f6c9802c12d8827cc008d316cea4e107 - md5: 0533034ac307140f160cf43c5f36b2ed + sha256: 0c619f3bff0c0fa6cdc1a314bcc34b450058779c41676b6673acec10030c5fea + md5: 12e9bb285b21a65333d0031a9225e0f0 depends: - - max-core ==25.1.0.dev2025010817 release + - max-core ==25.1.0.dev2025011022 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22926 - timestamp: 1736357145815 -- kind: conda - name: multidict - version: 6.1.0 - build: py311h2dc5d0c_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py311h2dc5d0c_2.conda + size: 22934 + timestamp: 1736547478660 +- conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py311h2dc5d0c_2.conda sha256: afaab7a028281d8b5336db2b994fd3f9694862b6ca372c079dc4e84ad768c20a md5: bb8ca118919836624d920b4c44383a15 depends: @@ -6137,53 +4913,41 @@ packages: - libgcc >=13 - python >=3.11,<3.12.0a0 - python_abi 3.11.* *_cp311 + arch: x86_64 + platform: linux license: Apache-2.0 license_family: APACHE size: 62595 timestamp: 1733913166104 -- kind: conda - name: multidict - version: 6.1.0 - build: py311h30e7462_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/multidict-6.1.0-py311h30e7462_1.conda - sha256: 9e7beeeef3c13e000e2e9dab38dff3a5284a8c8665019be149db50b4eff9a340 - md5: ff4227ea49745aeddbf45edef09036bc +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multidict-6.1.0-py311h58d527c_2.conda + sha256: d892579630fb36f03325cfe6164d625cc14956f37055d1801c9a140a87a7406f + md5: 6951744a4c40630a76a7e976fb858952 depends: - - __osx >=11.0 + - libgcc >=13 - python >=3.11,<3.12.0a0 - python >=3.11,<3.12.0a0 *_cpython - python_abi 3.11.* *_cp311 + arch: aarch64 + platform: linux license: Apache-2.0 license_family: APACHE - size: 56769 - timestamp: 1729065684471 -- kind: conda - name: multidict - version: 6.1.0 - build: py311h58d527c_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/multidict-6.1.0-py311h58d527c_2.conda - sha256: d892579630fb36f03325cfe6164d625cc14956f37055d1801c9a140a87a7406f - md5: 6951744a4c40630a76a7e976fb858952 + size: 63847 + timestamp: 1733913235773 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/multidict-6.1.0-py311h30e7462_1.conda + sha256: 9e7beeeef3c13e000e2e9dab38dff3a5284a8c8665019be149db50b4eff9a340 + md5: ff4227ea49745aeddbf45edef09036bc depends: - - libgcc >=13 + - __osx >=11.0 - python >=3.11,<3.12.0a0 - python >=3.11,<3.12.0a0 *_cpython - python_abi 3.11.* *_cp311 + arch: arm64 + platform: osx license: Apache-2.0 license_family: APACHE - size: 63847 - timestamp: 1733913235773 -- kind: conda - name: multiprocess - version: 0.70.15 - build: py311h459d7ec_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.15-py311h459d7ec_1.conda + size: 56769 + timestamp: 1729065684471 +- conda: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.15-py311h459d7ec_1.conda sha256: eca27e6fb5fb4ee73f04ae030bce29f5daa46fea3d6abdabb91740646f0d188e md5: cebd02a02b199549a57e0d70aed7e2dc depends: @@ -6191,17 +4955,13 @@ packages: - libgcc-ng >=12 - python >=3.11,<3.12.0a0 - python_abi 3.11.* *_cp311 + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD size: 339543 timestamp: 1695459055911 -- kind: conda - name: multiprocess - version: 0.70.15 - build: py311hcd402e7_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.15-py311hcd402e7_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.15-py311hcd402e7_1.conda sha256: 126190f2f981ea84cbf891a2ff6ff52e1bdd681c48392db40b79da0e9e786af8 md5: bd07035dd460220466bcab62cefced4d depends: @@ -6210,17 +4970,13 @@ packages: - python >=3.11,<3.12.0a0 - python >=3.11,<3.12.0a0 *_cpython - python_abi 3.11.* *_cp311 + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD size: 339518 timestamp: 1695459050286 -- kind: conda - name: multiprocess - version: 0.70.15 - build: py311heffc1b2_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/multiprocess-0.70.15-py311heffc1b2_1.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/multiprocess-0.70.15-py311heffc1b2_1.conda sha256: 1bf6f7bd6b3515f26fbd977ad26bfb7012516fb3854fe9f2d715a6fbbf28a5de md5: 68b2ed99d42d6eea3cecd25b6a151cc9 depends: @@ -6228,18 +4984,13 @@ packages: - python >=3.11,<3.12.0a0 - python >=3.11,<3.12.0a0 *_cpython - python_abi 3.11.* *_cp311 + arch: arm64 + platform: osx license: BSD-3-Clause license_family: BSD size: 339630 timestamp: 1695459263809 -- kind: conda - name: mypy_extensions - version: 1.0.0 - build: pyha770c72_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda sha256: 1895f47b7d68581a6facde5cb13ab8c2764c2e53a76bd746f8f98910dc4e08fe md5: 29097e7ea634a45cc5386b95cac6568f depends: @@ -6248,55 +4999,38 @@ packages: license_family: MIT size: 10854 timestamp: 1733230986902 -- kind: conda - name: ncurses - version: '6.5' - build: h7bae524_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h7bae524_1.conda - sha256: 27d0b9ff78ad46e1f3a6c96c479ab44beda5f96def88e2fe626e0a49429d8afc - md5: cb2b0ea909b97b3d70cd3921d1445e1a +- conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-he02047a_1.conda + sha256: 6a1d5d8634c1a07913f1c525db6455918cbc589d745fac46d9d6e30340c8731a + md5: 70caf8bb6cf39a0b6b7efc885f51c0fe depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 + - libgcc-ng >=12 + arch: x86_64 + platform: linux license: X11 AND BSD-3-Clause - size: 802321 - timestamp: 1724658775723 -- kind: conda - name: ncurses - version: '6.5' - build: hcccb83c_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-hcccb83c_1.conda + size: 889086 + timestamp: 1724658547447 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-hcccb83c_1.conda sha256: acad4cf1f57b12ee1e42995e6fac646fa06aa026529f05eb8c07eb0a84a47a84 md5: 91d49c85cacd92caa40cf375ef72a25d depends: - libgcc-ng >=12 + arch: aarch64 + platform: linux license: X11 AND BSD-3-Clause size: 924472 timestamp: 1724658573518 -- kind: conda - name: ncurses - version: '6.5' - build: he02047a_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-he02047a_1.conda - sha256: 6a1d5d8634c1a07913f1c525db6455918cbc589d745fac46d9d6e30340c8731a - md5: 70caf8bb6cf39a0b6b7efc885f51c0fe +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h7bae524_1.conda + sha256: 27d0b9ff78ad46e1f3a6c96c479ab44beda5f96def88e2fe626e0a49429d8afc + md5: cb2b0ea909b97b3d70cd3921d1445e1a depends: - - __glibc >=2.17,<3.0.a0 - - libgcc-ng >=12 + - __osx >=11.0 + arch: arm64 + platform: osx license: X11 AND BSD-3-Clause - size: 889086 - timestamp: 1724658547447 -- kind: conda - name: numpy - version: 1.26.4 - build: py311h64a7726_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py311h64a7726_0.conda + size: 802321 + timestamp: 1724658775723 +- conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py311h64a7726_0.conda sha256: 3f4365e11b28e244c95ba8579942b0802761ba7bb31c026f50d1a9ea9c728149 md5: a502d7aad449a1206efb366d6a12c52d depends: @@ -6309,16 +5043,13 @@ packages: - python_abi 3.11.* *_cp311 constrains: - numpy-base <0a0 + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD size: 8065890 timestamp: 1707225944355 -- kind: conda - name: numpy - version: 1.26.4 - build: py311h69ead2a_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py311h69ead2a_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py311h69ead2a_0.conda sha256: 88800a1d9d11c2fccab09d40d36f7001616f5119eaf0ec86186562f33564e651 md5: 3fd00dd400c8d3f9da12bf33061dd28d depends: @@ -6332,16 +5063,13 @@ packages: - python_abi 3.11.* *_cp311 constrains: - numpy-base <0a0 + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD size: 7234391 timestamp: 1707225781489 -- kind: conda - name: numpy - version: 1.26.4 - build: py311h7125741_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py311h7125741_0.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py311h7125741_0.conda sha256: 160a52a01fea44fe9753a2ed22cf13d7b55c8a89ea0b8738546fdbf4795d6514 md5: 3160b93669a0def35a7a8158ebb33816 depends: @@ -6354,53 +5082,44 @@ packages: - python_abi 3.11.* *_cp311 constrains: - numpy-base <0a0 + arch: arm64 + platform: osx license: BSD-3-Clause license_family: BSD size: 6652352 timestamp: 1707226297967 -- kind: conda - name: openjpeg - version: 2.5.3 - build: h3f56577_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/openjpeg-2.5.3-h3f56577_0.conda - sha256: 92d310033e20538e896f4e4b1ea4205eb6604eee7c5c651c4965a0d8d3ca0f1d - md5: 04231368e4af50d11184b50e14250993 +- conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.3-h5fbd93e_0.conda + sha256: 5bee706ea5ba453ed7fd9da7da8380dd88b865c8d30b5aaec14d2b6dd32dbc39 + md5: 9e5816bc95d285c115a3ebc2f8563564 depends: + - __glibc >=2.17,<3.0.a0 - libgcc >=13 - libpng >=1.6.44,<1.7.0a0 - libstdcxx >=13 - libtiff >=4.7.0,<4.8.0a0 - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux license: BSD-2-Clause license_family: BSD - size: 377796 - timestamp: 1733816683252 -- kind: conda - name: openjpeg - version: 2.5.3 - build: h5fbd93e_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.3-h5fbd93e_0.conda - sha256: 5bee706ea5ba453ed7fd9da7da8380dd88b865c8d30b5aaec14d2b6dd32dbc39 - md5: 9e5816bc95d285c115a3ebc2f8563564 + size: 342988 + timestamp: 1733816638720 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openjpeg-2.5.3-h3f56577_0.conda + sha256: 92d310033e20538e896f4e4b1ea4205eb6604eee7c5c651c4965a0d8d3ca0f1d + md5: 04231368e4af50d11184b50e14250993 depends: - - __glibc >=2.17,<3.0.a0 - libgcc >=13 - libpng >=1.6.44,<1.7.0a0 - libstdcxx >=13 - libtiff >=4.7.0,<4.8.0a0 - libzlib >=1.3.1,<2.0a0 + arch: aarch64 + platform: linux license: BSD-2-Clause license_family: BSD - size: 342988 - timestamp: 1733816638720 -- kind: conda - name: openjpeg - version: 2.5.3 - build: h8a3d83b_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/openjpeg-2.5.3-h8a3d83b_0.conda + size: 377796 + timestamp: 1733816683252 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/openjpeg-2.5.3-h8a3d83b_0.conda sha256: 1d59bc72ca7faac06d349c1a280f5cfb8a57ee5896f1e24225a997189d7418c7 md5: 4b71d78648dbcf68ce8bf22bb07ff838 depends: @@ -6409,67 +5128,50 @@ packages: - libpng >=1.6.44,<1.7.0a0 - libtiff >=4.7.0,<4.8.0a0 - libzlib >=1.3.1,<2.0a0 + arch: arm64 + platform: osx license: BSD-2-Clause license_family: BSD size: 319362 timestamp: 1733816781741 -- kind: conda - name: openssl - version: 3.4.0 - build: h7b32b05_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.0-h7b32b05_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.0-h7b32b05_1.conda sha256: f62f6bca4a33ca5109b6d571b052a394d836956d21b25b7ffd03376abf7a481f md5: 4ce6875f75469b2757a65e10a5d05e31 depends: - __glibc >=2.17,<3.0.a0 - ca-certificates - libgcc >=13 + arch: x86_64 + platform: linux license: Apache-2.0 license_family: Apache size: 2937158 timestamp: 1736086387286 -- kind: conda - name: openssl - version: 3.4.0 - build: h81ee809_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.0-h81ee809_1.conda - sha256: 97772762abc70b3a537683ca9fc3ff3d6099eb64e4aba3b9c99e6fce48422d21 - md5: 22f971393637480bda8c679f374d8861 - depends: - - __osx >=11.0 - - ca-certificates - license: Apache-2.0 - license_family: Apache - size: 2936415 - timestamp: 1736086108693 -- kind: conda - name: openssl - version: 3.4.0 - build: hd08dc88_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.0-hd08dc88_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.0-hd08dc88_1.conda sha256: 60d34454b861501d7355f25a7b39fdb5de8d56fca49b5bcbe8b8142b7d82dce4 md5: e21c4767e783a58c373fdb99de6211bf depends: - ca-certificates - libgcc >=13 + arch: aarch64 + platform: linux license: Apache-2.0 license_family: Apache size: 3469279 timestamp: 1736088141230 -- kind: conda - name: opentelemetry-api - version: 1.29.0 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.29.0-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.0-h81ee809_1.conda + sha256: 97772762abc70b3a537683ca9fc3ff3d6099eb64e4aba3b9c99e6fce48422d21 + md5: 22f971393637480bda8c679f374d8861 + depends: + - __osx >=11.0 + - ca-certificates + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 2936415 + timestamp: 1736086108693 +- conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.29.0-pyhd8ed1ab_1.conda sha256: 296280c8ace35c0a1cf72bed1077f248b3af903c3bf92332f1783a207cb5abdb md5: 307b05402c1a382f2f09426492dee8f8 depends: @@ -6480,13 +5182,7 @@ packages: license_family: APACHE size: 44166 timestamp: 1734132973331 -- kind: conda - name: opentelemetry-exporter-otlp-proto-common - version: 1.29.0 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.29.0-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.29.0-pyhd8ed1ab_0.conda sha256: ae9776efe52564e0d6711cfcee7c54439273e57a3999f7f796f66e862f58aae9 md5: 0c02e74d26bce3fec93b227cf7ea6e6b depends: @@ -6497,14 +5193,7 @@ packages: license_family: APACHE size: 18922 timestamp: 1734310457116 -- kind: conda - name: opentelemetry-exporter-otlp-proto-http - version: 1.29.0 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.29.0-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.29.0-pyhd8ed1ab_1.conda sha256: 5d61db9d5b4f91b3932f5f2348920d5b7fdaa09e52c8ea054cf7bf3f21677c9c md5: 223f4e56a29601c887f0dc467034af5b depends: @@ -6520,13 +5209,7 @@ packages: license_family: APACHE size: 17147 timestamp: 1734345675510 -- kind: conda - name: opentelemetry-exporter-prometheus - version: 1.12.0rc1 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-prometheus-1.12.0rc1-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-prometheus-1.12.0rc1-pyhd8ed1ab_0.conda sha256: b8239230dbbdb491401e41b53bd9f21d60551cedef1a8d5807fca1bf9bdd331c md5: 1ddc95052b31147d1e10d818cf519cf5 depends: @@ -6538,13 +5221,7 @@ packages: license_family: APACHE size: 14721 timestamp: 1695214221489 -- kind: conda - name: opentelemetry-proto - version: 1.29.0 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.29.0-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.29.0-pyhd8ed1ab_0.conda sha256: 200a7cb8acc8a0ddd6ef55c5460cec871b6a265929b240a0296c0ccb9c8d9758 md5: e2a6d2ad10b813c7fdc1c64aac376128 depends: @@ -6554,13 +5231,7 @@ packages: license_family: APACHE size: 37235 timestamp: 1734291034372 -- kind: conda - name: opentelemetry-sdk - version: 1.29.0 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.29.0-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.29.0-pyhd8ed1ab_0.conda sha256: 7b36629d8b8be8a019fcfd1518d7b7f862dd25de96f8adcadb93e4fd12cf9bd6 md5: 2a8893f06e6ebda4bfa78875bc923ea4 depends: @@ -6573,13 +5244,7 @@ packages: license_family: APACHE size: 77645 timestamp: 1734297838999 -- kind: conda - name: opentelemetry-semantic-conventions - version: 0.50b0 - build: pyh3cfb1c2_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.50b0-pyh3cfb1c2_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.50b0-pyh3cfb1c2_0.conda sha256: 6526e70368d5bf66ef0eaa51fb800d53782dde71a24bd38f40139919a6f784dc md5: f7111fa4188d646c8108e232d024cb99 depends: @@ -6590,35 +5255,7 @@ packages: license_family: APACHE size: 86084 timestamp: 1734208980168 -- kind: conda - name: orc - version: 2.0.3 - build: h0ff2369_2 - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/orc-2.0.3-h0ff2369_2.conda - sha256: cca330695f3bdb8c0e46350c29cd4af3345865544e36f1d7c9ba9190ad22f5f4 - md5: 24b1897c0d24afbb70704ba998793b78 - depends: - - __osx >=11.0 - - libcxx >=18 - - libprotobuf >=5.28.3,<5.28.4.0a0 - - libzlib >=1.3.1,<2.0a0 - - lz4-c >=1.10.0,<1.11.0a0 - - snappy >=1.2.1,<1.3.0a0 - - tzdata - - zstd >=1.5.6,<1.6.0a0 - license: Apache-2.0 - license_family: Apache - size: 438520 - timestamp: 1735630624140 -- kind: conda - name: orc - version: 2.0.3 - build: h12ee42a_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/orc-2.0.3-h12ee42a_2.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/orc-2.0.3-h12ee42a_2.conda sha256: dff5cc8023905782c86b3459055f26d4b97890e403b0698477c9fed15d8669cc md5: 4f6f9f3f80354ad185e276c120eac3f0 depends: @@ -6631,17 +5268,13 @@ packages: - snappy >=1.2.1,<1.3.0a0 - tzdata - zstd >=1.5.6,<1.6.0a0 + arch: x86_64 + platform: linux license: Apache-2.0 license_family: Apache size: 1188881 timestamp: 1735630209320 -- kind: conda - name: orc - version: 2.0.3 - build: hdd485aa_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/orc-2.0.3-hdd485aa_2.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/orc-2.0.3-hdd485aa_2.conda sha256: b6c67542352a86cdf143c3066d5cda855b74454a156eedcd8958b494c6a32a83 md5: d19f01b42e5d6a2908b65df435aff42f depends: @@ -6653,18 +5286,31 @@ packages: - snappy >=1.2.1,<1.3.0a0 - tzdata - zstd >=1.5.6,<1.6.0a0 + arch: aarch64 + platform: linux license: Apache-2.0 license_family: Apache size: 1167714 timestamp: 1735630248837 -- kind: conda - name: packaging - version: '24.2' - build: pyhd8ed1ab_2 - build_number: 2 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/orc-2.0.3-h0ff2369_2.conda + sha256: cca330695f3bdb8c0e46350c29cd4af3345865544e36f1d7c9ba9190ad22f5f4 + md5: 24b1897c0d24afbb70704ba998793b78 + depends: + - __osx >=11.0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libzlib >=1.3.1,<2.0a0 + - lz4-c >=1.10.0,<1.11.0a0 + - snappy >=1.2.1,<1.3.0a0 + - tzdata + - zstd >=1.5.6,<1.6.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 438520 + timestamp: 1735630624140 +- conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda sha256: da157b19bcd398b9804c5c52fc000fcb8ab0525bdb9c70f95beaa0bb42f85af1 md5: 3bfed7e6228ebf2f7b9eaa47f1b4e2aa depends: @@ -6673,13 +5319,7 @@ packages: license_family: APACHE size: 60164 timestamp: 1733203368787 -- kind: conda - name: pandas - version: 2.2.3 - build: py311h7db5c69_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.3-py311h7db5c69_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.3-py311h7db5c69_1.conda sha256: dce121d3838996b77b810ca9097cc17068552075c761408a9b2eb788cf8fd1b0 md5: 643f8cb35133eb1be4919fb953f0a25f depends: @@ -6693,17 +5333,13 @@ packages: - python-tzdata >=2022a - python_abi 3.11.* *_cp311 - pytz >=2020.1,<2024.2 + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD size: 15695466 timestamp: 1726879158862 -- kind: conda - name: pandas - version: 2.2.3 - build: py311h848c333_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/pandas-2.2.3-py311h848c333_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pandas-2.2.3-py311h848c333_1.conda sha256: 8b368a4871bc9c8c9c582fc3539c00a44ae41eb239ca330ee55f9c8bd85a0bfd md5: 609f8498e89280eeda12a0be33efed35 depends: @@ -6717,17 +5353,13 @@ packages: - python-tzdata >=2022a - python_abi 3.11.* *_cp311 - pytz >=2020.1,<2024.2 + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD size: 15390929 timestamp: 1726879096370 -- kind: conda - name: pandas - version: 2.2.3 - build: py311h9cb3ce9_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.3-py311h9cb3ce9_1.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.3-py311h9cb3ce9_1.conda sha256: 0a08027b25e4f6034d7733c7366f44283246d61cb82d1721f8789d50ebfef287 md5: 9ffa9dee175c76e68ea5de5aa1168d83 depends: @@ -6741,18 +5373,13 @@ packages: - python-tzdata >=2022a - python_abi 3.11.* *_cp311 - pytz >=2020.1,<2024.2 + arch: arm64 + platform: osx license: BSD-3-Clause license_family: BSD size: 14807397 timestamp: 1726879116250 -- kind: conda - name: pathspec - version: 0.12.1 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda sha256: 9f64009cdf5b8e529995f18e03665b03f5d07c0b17445b8badef45bde76249ee md5: 617f15191456cc6a13db418a275435e5 depends: @@ -6761,12 +5388,7 @@ packages: license_family: MOZILLA size: 41075 timestamp: 1733233471940 -- kind: conda - name: pillow - version: 11.1.0 - build: py311h1322bbf_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/pillow-11.1.0-py311h1322bbf_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-11.1.0-py311h1322bbf_0.conda sha256: 71e0ce18201695adec3bbbfbab74e82b0ab05fe8929ad046d2c507a71c8a3c63 md5: 9f4f5593335f76c1dbf7381c11fe7155 depends: @@ -6783,15 +5405,12 @@ packages: - python >=3.11,<3.12.0a0 - python_abi 3.11.* *_cp311 - tk >=8.6.13,<8.7.0a0 + arch: x86_64 + platform: linux license: HPND size: 42021920 timestamp: 1735929841160 -- kind: conda - name: pillow - version: 11.1.0 - build: py311ha4eaa5e_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/pillow-11.1.0-py311ha4eaa5e_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pillow-11.1.0-py311ha4eaa5e_0.conda sha256: d31c5eed4a5b0a5f7aee0da620c255d217ac154b59022dca1970395e744f3ba9 md5: 588cc6d9e6adc21508221b3655cb5949 depends: @@ -6807,15 +5426,12 @@ packages: - python >=3.11,<3.12.0a0 - python_abi 3.11.* *_cp311 - tk >=8.6.13,<8.7.0a0 + arch: aarch64 + platform: linux license: HPND size: 42077620 timestamp: 1735931287216 -- kind: conda - name: pillow - version: 11.1.0 - build: py311hb9ba9e9_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-11.1.0-py311hb9ba9e9_0.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-11.1.0-py311hb9ba9e9_0.conda sha256: 9d9274b1456e463401169a8b7bfc35378c09686cfac56d2b96a1393085f3fd8f md5: d8bb4736b33791e270c998dd68a76621 depends: @@ -6832,17 +5448,12 @@ packages: - python >=3.11,<3.12.0a0 *_cpython - python_abi 3.11.* *_cp311 - tk >=8.6.13,<8.7.0a0 + arch: arm64 + platform: osx license: HPND size: 42451890 timestamp: 1735929996422 -- kind: conda - name: platformdirs - version: 4.3.6 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda sha256: bb50f6499e8bc1d1a26f17716c97984671121608dc0c3ecd34858112bce59a27 md5: 577852c7e53901ddccc7e6a9959ddebe depends: @@ -6851,13 +5462,7 @@ packages: license_family: MIT size: 20448 timestamp: 1733232756001 -- kind: conda - name: prometheus_client - version: 0.21.1 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda sha256: bc8f00d5155deb7b47702cb8370f233935704100dbc23e30747c161d1b6cf3ab md5: 3e01e386307acc60b2f89af0b2e161aa depends: @@ -6866,29 +5471,7 @@ packages: license_family: Apache size: 49002 timestamp: 1733327434163 -- kind: conda - name: propcache - version: 0.2.1 - build: py311h917b07b_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.1-py311h917b07b_0.conda - sha256: 7d4185519514a4d357348e7a31974afb713ab6e0d7ea3a9f27a36f3b6515b638 - md5: f0599cb37e2cf8710eaae4b4d85f7759 - depends: - - __osx >=11.0 - - python >=3.11,<3.12.0a0 - - python >=3.11,<3.12.0a0 *_cpython - - python_abi 3.11.* *_cp311 - license: Apache-2.0 - license_family: APACHE - size: 48002 - timestamp: 1733392010497 -- kind: conda - name: propcache - version: 0.2.1 - build: py311h9ecbd09_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.1-py311h9ecbd09_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.1-py311h9ecbd09_0.conda sha256: 3323f2ed707a9fe89ee142c9ea1adef0cf8f75fb005ec414b50e8cc0381b57f4 md5: 20d1c4ad24ac50f0941c63e81e4a86b7 depends: @@ -6896,16 +5479,13 @@ packages: - libgcc >=13 - python >=3.11,<3.12.0a0 - python_abi 3.11.* *_cp311 + arch: x86_64 + platform: linux license: Apache-2.0 license_family: APACHE size: 53315 timestamp: 1733391912538 -- kind: conda - name: propcache - version: 0.2.1 - build: py311ha879c10_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.2.1-py311ha879c10_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.2.1-py311ha879c10_0.conda sha256: 9d6ed4a29efa5ea64b50097c450429944f116d06d883d23e5b5493eab0c68393 md5: 15d3518828453960069fd7874fe88468 depends: @@ -6913,36 +5493,44 @@ packages: - python >=3.11,<3.12.0a0 - python >=3.11,<3.12.0a0 *_cpython - python_abi 3.11.* *_cp311 + arch: aarch64 + platform: linux license: Apache-2.0 license_family: APACHE size: 52970 timestamp: 1733392060312 -- kind: conda - name: protobuf - version: 5.28.3 - build: py311h155a34a_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/protobuf-5.28.3-py311h155a34a_0.conda - sha256: 18a1b3e59b76c27b03318818e85f7a66b035de77c6b32f077e4af72efbc12269 - md5: ab0b501f96671046b577316280ddb72b +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.1-py311h917b07b_0.conda + sha256: 7d4185519514a4d357348e7a31974afb713ab6e0d7ea3a9f27a36f3b6515b638 + md5: f0599cb37e2cf8710eaae4b4d85f7759 depends: - __osx >=11.0 - - libcxx >=18 - python >=3.11,<3.12.0a0 - python >=3.11,<3.12.0a0 *_cpython - python_abi 3.11.* *_cp311 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + size: 48002 + timestamp: 1733392010497 +- conda: https://conda.anaconda.org/conda-forge/linux-64/protobuf-5.28.3-py311hfdbb021_0.conda + sha256: 2d9b2b9a7549e7dd58138cd3211a11893b8f6dee5a1137529623bf92cddba45b + md5: ddf920c3b5d1cbd5ffbea591d2ad09ea + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 constrains: - libprotobuf 5.28.3 + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD - size: 457403 - timestamp: 1731367189837 -- kind: conda - name: protobuf - version: 5.28.3 - build: py311h89d996e_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/protobuf-5.28.3-py311h89d996e_0.conda + size: 471398 + timestamp: 1731366737017 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/protobuf-5.28.3-py311h89d996e_0.conda sha256: d09135eb40d9d00741337459e3bc3c28bf30a8817e93874594096a37851d3eca md5: 6dd92bec86836581e235fb7c42de7df2 depends: @@ -6953,82 +5541,64 @@ packages: - python_abi 3.11.* *_cp311 constrains: - libprotobuf 5.28.3 + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD size: 479273 timestamp: 1731366544077 -- kind: conda - name: protobuf - version: 5.28.3 - build: py311hfdbb021_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/protobuf-5.28.3-py311hfdbb021_0.conda - sha256: 2d9b2b9a7549e7dd58138cd3211a11893b8f6dee5a1137529623bf92cddba45b - md5: ddf920c3b5d1cbd5ffbea591d2ad09ea +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/protobuf-5.28.3-py311h155a34a_0.conda + sha256: 18a1b3e59b76c27b03318818e85f7a66b035de77c6b32f077e4af72efbc12269 + md5: ab0b501f96671046b577316280ddb72b depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libstdcxx >=13 + - __osx >=11.0 + - libcxx >=18 - python >=3.11,<3.12.0a0 + - python >=3.11,<3.12.0a0 *_cpython - python_abi 3.11.* *_cp311 constrains: - libprotobuf 5.28.3 + arch: arm64 + platform: osx license: BSD-3-Clause license_family: BSD - size: 471398 - timestamp: 1731366737017 -- kind: conda - name: pthread-stubs - version: '0.4' - build: h86ecc28_1002 - build_number: 1002 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/pthread-stubs-0.4-h86ecc28_1002.conda - sha256: 977dfb0cb3935d748521dd80262fe7169ab82920afd38ed14b7fee2ea5ec01ba - md5: bb5a90c93e3bac3d5690acf76b4a6386 - depends: - - libgcc >=13 - license: MIT - license_family: MIT - size: 8342 - timestamp: 1726803319942 -- kind: conda - name: pthread-stubs - version: '0.4' - build: hb9d3cd8_1002 - build_number: 1002 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda + size: 457403 + timestamp: 1731367189837 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda sha256: 9c88f8c64590e9567c6c80823f0328e58d3b1efb0e1c539c0315ceca764e0973 md5: b3c17d95b5a10c6e64a21fa17573e70e depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 + arch: x86_64 + platform: linux license: MIT license_family: MIT size: 8252 timestamp: 1726802366959 -- kind: conda - name: pthread-stubs - version: '0.4' - build: hd74edd7_1002 - build_number: 1002 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/pthread-stubs-0.4-hd74edd7_1002.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pthread-stubs-0.4-h86ecc28_1002.conda + sha256: 977dfb0cb3935d748521dd80262fe7169ab82920afd38ed14b7fee2ea5ec01ba + md5: bb5a90c93e3bac3d5690acf76b4a6386 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 8342 + timestamp: 1726803319942 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pthread-stubs-0.4-hd74edd7_1002.conda sha256: 8ed65e17fbb0ca944bfb8093b60086e3f9dd678c3448b5de212017394c247ee3 md5: 415816daf82e0b23a736a069a75e9da7 depends: - __osx >=11.0 + arch: arm64 + platform: osx license: MIT license_family: MIT size: 8381 timestamp: 1726802424786 -- kind: conda - name: pyarrow - version: 18.1.0 - build: py311h38be061_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-18.1.0-py311h38be061_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-18.1.0-py311h38be061_0.conda sha256: 9cfd158a1bb76c4af1a51237a5c5db4a36b2e83bad625ddf6c2b65ee232c16ba md5: 47b8624012486e05e66f6acf7267aa22 depends: @@ -7039,18 +5609,15 @@ packages: - pyarrow-core 18.1.0 *_0_* - python >=3.11,<3.12.0a0 - python_abi 3.11.* *_cp311 + arch: x86_64 + platform: linux license: Apache-2.0 license_family: APACHE size: 25199 timestamp: 1732610760700 -- kind: conda - name: pyarrow - version: 18.1.0 - build: py311ha1ab1f8_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-18.1.0-py311ha1ab1f8_0.conda - sha256: c93f3ede66be0502b5b9afc5bc3fde50d6f8c3863d29b138ff5f536a116457f3 - md5: 7a3b822fa6abb937651bee20878f087a +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-18.1.0-py311hfecb2dc_0.conda + sha256: 2af68c0d11cf480a043b213eb4d1e0908f3edff25dc418b9c55f1002f46dc45b + md5: b66ff73d40f84cca2d7a4f755b21d956 depends: - libarrow-acero 18.1.0.* - libarrow-dataset 18.1.0.* @@ -7059,18 +5626,15 @@ packages: - pyarrow-core 18.1.0 *_0_* - python >=3.11,<3.12.0a0 - python_abi 3.11.* *_cp311 + arch: aarch64 + platform: linux license: Apache-2.0 license_family: APACHE - size: 25322 - timestamp: 1732611121491 -- kind: conda - name: pyarrow - version: 18.1.0 - build: py311hfecb2dc_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-18.1.0-py311hfecb2dc_0.conda - sha256: 2af68c0d11cf480a043b213eb4d1e0908f3edff25dc418b9c55f1002f46dc45b - md5: b66ff73d40f84cca2d7a4f755b21d956 + size: 25373 + timestamp: 1732611450659 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-18.1.0-py311ha1ab1f8_0.conda + sha256: c93f3ede66be0502b5b9afc5bc3fde50d6f8c3863d29b138ff5f536a116457f3 + md5: 7a3b822fa6abb937651bee20878f087a depends: - libarrow-acero 18.1.0.* - libarrow-dataset 18.1.0.* @@ -7079,16 +5643,13 @@ packages: - pyarrow-core 18.1.0 *_0_* - python >=3.11,<3.12.0a0 - python_abi 3.11.* *_cp311 + arch: arm64 + platform: osx license: Apache-2.0 license_family: APACHE - size: 25373 - timestamp: 1732611450659 -- kind: conda - name: pyarrow-core - version: 18.1.0 - build: py311h4854187_0_cpu - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-18.1.0-py311h4854187_0_cpu.conda + size: 25322 + timestamp: 1732611121491 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-18.1.0-py311h4854187_0_cpu.conda sha256: db147a0cc22b55ea3c35553b39336eb0392c33371f6efd7f9fb4efed2b728e34 md5: 830a64ee7a65e588c7ea615be84db2e3 depends: @@ -7102,16 +5663,13 @@ packages: constrains: - numpy >=1.21,<3 - apache-arrow-proc =*=cpu + arch: x86_64 + platform: linux license: Apache-2.0 license_family: APACHE size: 4562010 timestamp: 1732610600424 -- kind: conda - name: pyarrow-core - version: 18.1.0 - build: py311ha6d2531_0_cpu - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-18.1.0-py311ha6d2531_0_cpu.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-18.1.0-py311ha6d2531_0_cpu.conda sha256: 3187321dc45106c2c87e5a70ab94ecbc0633f5b43caabcf173f4d372e5f6d8d8 md5: 8cddcf0bb4b3e674ae6bbdda5266693f depends: @@ -7125,16 +5683,13 @@ packages: constrains: - apache-arrow-proc =*=cpu - numpy >=1.21,<3 + arch: aarch64 + platform: linux license: Apache-2.0 license_family: APACHE size: 4484447 timestamp: 1732610567027 -- kind: conda - name: pyarrow-core - version: 18.1.0 - build: py311he04fa90_0_cpu - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-18.1.0-py311he04fa90_0_cpu.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-18.1.0-py311he04fa90_0_cpu.conda sha256: 4563e2d4f41b3874b89e8e2bdebf42588c1c819bd050ae858200f60e30bae860 md5: 09b4a27f615d22f194466d8c274ef13e depends: @@ -7148,18 +5703,13 @@ packages: constrains: - numpy >=1.21,<3 - apache-arrow-proc =*=cpu + arch: arm64 + platform: osx license: Apache-2.0 license_family: APACHE size: 3974075 timestamp: 1732611073316 -- kind: conda - name: pycparser - version: '2.22' - build: pyh29332c3_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda sha256: 79db7928d13fab2d892592223d7570f5061c192f27b9febd1a418427b719acc6 md5: 12c566707c80111f9799308d9e265aef depends: @@ -7169,15 +5719,9 @@ packages: license_family: BSD size: 110100 timestamp: 1733195786147 -- kind: conda - name: pydantic - version: 2.10.4 - build: pyh3cfb1c2_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.4-pyh3cfb1c2_0.conda - sha256: e68400714532a33f34b44ddaee3e27e8dd6c83c3f31c7892ec10b84d13aa8b59 - md5: 93bccf4d7a58c9140d59491de21e044b +- conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.5-pyh3cfb1c2_0.conda + sha256: 0f32c30ddc610cd1113335d8b4f311f20f4d72754b7c1a5d0d9493f597cf11d2 + md5: e8ea30925c8271c4128375810d7d3d7a depends: - annotated-types >=0.6.0 - pydantic-core 2.27.2 @@ -7186,14 +5730,26 @@ packages: - typing_extensions >=4.12.2 license: MIT license_family: MIT - size: 296557 - timestamp: 1734609427697 -- kind: conda - name: pydantic-core - version: 2.27.2 - build: py311h0ca61a2_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/pydantic-core-2.27.2-py311h0ca61a2_0.conda + size: 296805 + timestamp: 1736458364196 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.27.2-py311h9e33e62_0.conda + sha256: 8ead97151b2f349cd327456fe4a6fcf7c51a3ab6c06f48f4330f86de0d848bd1 + md5: 675cb6079b6b3b4ef4f20399fedf6666 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 + - typing-extensions >=4.6.0,!=4.7.0 + constrains: + - __glibc >=2.17 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 1640287 + timestamp: 1734571788310 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pydantic-core-2.27.2-py311h0ca61a2_0.conda sha256: bae487615db914258d64e44ddb698f8826a3785e97989b37ca2d310069e86e28 md5: a082086545ee0bcb6c3e7e393532fe03 depends: @@ -7204,16 +5760,13 @@ packages: - typing-extensions >=4.6.0,!=4.7.0 constrains: - __glibc >=2.17 + arch: aarch64 + platform: linux license: MIT license_family: MIT size: 1504928 timestamp: 1734572100526 -- kind: conda - name: pydantic-core - version: 2.27.2 - build: py311h3ff9189_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.27.2-py311h3ff9189_0.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.27.2-py311h3ff9189_0.conda sha256: 5163982ef229292ca5b9fe96e756ac29b6c6453d56c9f1dfaf48f5796de78d05 md5: b96fba96baad08b81c57fd157b481b22 depends: @@ -7224,37 +5777,13 @@ packages: - typing-extensions >=4.6.0,!=4.7.0 constrains: - __osx >=11.0 + arch: arm64 + platform: osx license: MIT license_family: MIT size: 1595471 timestamp: 1734572148778 -- kind: conda - name: pydantic-core - version: 2.27.2 - build: py311h9e33e62_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.27.2-py311h9e33e62_0.conda - sha256: 8ead97151b2f349cd327456fe4a6fcf7c51a3ab6c06f48f4330f86de0d848bd1 - md5: 675cb6079b6b3b4ef4f20399fedf6666 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - python >=3.11,<3.12.0a0 - - python_abi 3.11.* *_cp311 - - typing-extensions >=4.6.0,!=4.7.0 - constrains: - - __glibc >=2.17 - license: MIT - license_family: MIT - size: 1640287 - timestamp: 1734571788310 -- kind: conda - name: pydantic-settings - version: 2.7.1 - build: pyh3cfb1c2_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.7.1-pyh3cfb1c2_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.7.1-pyh3cfb1c2_0.conda sha256: 082fb1ec29917d2c9ed6a862cb8eb9beb88c208ea62c9fef1aeb5f4f3e0e0b06 md5: d71d76b62bed332b037d7adfc0f3989a depends: @@ -7265,13 +5794,7 @@ packages: license_family: MIT size: 31822 timestamp: 1735650532951 -- kind: conda - name: pygments - version: 2.19.1 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda sha256: 28a3e3161390a9d23bc02b4419448f8d27679d9e2c250e29849e37749c8de86b md5: 232fb4577b6687b2d503ef8e254270c9 depends: @@ -7280,12 +5803,7 @@ packages: license_family: BSD size: 888600 timestamp: 1736243563082 -- kind: conda - name: pyinstrument - version: 5.0.0 - build: py311h9ecbd09_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/pyinstrument-5.0.0-py311h9ecbd09_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyinstrument-5.0.0-py311h9ecbd09_0.conda sha256: 389847e94097f5bb4e50e79fcafb69d29536704f5d8e6197e2db15aa18ce79bb md5: dac09216d0e2048338c501ba88708ee5 depends: @@ -7293,16 +5811,13 @@ packages: - libgcc >=13 - python >=3.11,<3.12.0a0 - python_abi 3.11.* *_cp311 + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD size: 184141 timestamp: 1728714174689 -- kind: conda - name: pyinstrument - version: 5.0.0 - build: py311ha879c10_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/pyinstrument-5.0.0-py311ha879c10_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyinstrument-5.0.0-py311ha879c10_0.conda sha256: cf6065cfd429b2947ed8529f7bacdc55911743cfcc77999a91376e7e31a732d1 md5: 33339e64f325437f8b4806a84d40418b depends: @@ -7310,16 +5825,13 @@ packages: - python >=3.11,<3.12.0a0 - python >=3.11,<3.12.0a0 *_cpython - python_abi 3.11.* *_cp311 + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD size: 186594 timestamp: 1728714239127 -- kind: conda - name: pyinstrument - version: 5.0.0 - build: py311hae2e1ce_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/pyinstrument-5.0.0-py311hae2e1ce_0.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyinstrument-5.0.0-py311hae2e1ce_0.conda sha256: d54db4d4895ba9d56c81ec6ca4b431eff4b380e45baf1ca415956d978791d3f6 md5: 03b6ef0cf70c84871b11cc017e010d12 depends: @@ -7327,18 +5839,13 @@ packages: - python >=3.11,<3.12.0a0 - python >=3.11,<3.12.0a0 *_cpython - python_abi 3.11.* *_cp311 + arch: arm64 + platform: osx license: BSD-3-Clause license_family: BSD size: 184916 timestamp: 1728714210932 -- kind: conda - name: pysocks - version: 1.7.1 - build: pyha55dd90_7 - build_number: 7 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda sha256: ba3b032fa52709ce0d9fd388f63d330a026754587a2f461117cac9ab73d8d0d8 md5: 461219d1a5bd61342293efa2c0c90eac depends: @@ -7348,18 +5855,14 @@ packages: license_family: BSD size: 21085 timestamp: 1733217331982 -- kind: conda - name: python - version: 3.11.11 - build: h1683364_1_cpython +- conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.11.11-h9e4cc4f_1_cpython.conda build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.11.11-h1683364_1_cpython.conda - sha256: b39a2253510b26213093cb29e27722cb33782aec213c020dfd17cd74d58f68e7 - md5: 7e8786cbe7b83e7011e681a4780c9b7f + sha256: b29ce0836fce55bdff8d5c5b71c4921a23f87d3b950aea89a9e75784120b06b0 + md5: 8387070aa413ce9a8cc35a509fae938b depends: + - __glibc >=2.17,<3.0.a0 - bzip2 >=1.0.8,<2.0a0 - - ld_impl_linux-aarch64 >=2.36.1 + - ld_impl_linux-64 >=2.36.1 - libexpat >=2.6.4,<3.0a0 - libffi >=3.4,<4.0a0 - libgcc >=13 @@ -7376,22 +5879,18 @@ packages: - tzdata constrains: - python_abi 3.11.* *_cp311 + arch: x86_64 + platform: linux license: Python-2.0 - size: 15234582 - timestamp: 1733407838276 -- kind: conda - name: python - version: 3.11.11 - build: h9e4cc4f_1_cpython + size: 30624804 + timestamp: 1733409665928 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.11.11-h1683364_1_cpython.conda build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/python-3.11.11-h9e4cc4f_1_cpython.conda - sha256: b29ce0836fce55bdff8d5c5b71c4921a23f87d3b950aea89a9e75784120b06b0 - md5: 8387070aa413ce9a8cc35a509fae938b + sha256: b39a2253510b26213093cb29e27722cb33782aec213c020dfd17cd74d58f68e7 + md5: 7e8786cbe7b83e7011e681a4780c9b7f depends: - - __glibc >=2.17,<3.0.a0 - bzip2 >=1.0.8,<2.0a0 - - ld_impl_linux-64 >=2.36.1 + - ld_impl_linux-aarch64 >=2.36.1 - libexpat >=2.6.4,<3.0a0 - libffi >=3.4,<4.0a0 - libgcc >=13 @@ -7408,16 +5907,13 @@ packages: - tzdata constrains: - python_abi 3.11.* *_cp311 + arch: aarch64 + platform: linux license: Python-2.0 - size: 30624804 - timestamp: 1733409665928 -- kind: conda - name: python - version: 3.11.11 - build: hc22306f_1_cpython + size: 15234582 + timestamp: 1733407838276 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.11.11-hc22306f_1_cpython.conda build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.11.11-hc22306f_1_cpython.conda sha256: 94e198f6a5affa1431401fca7e3b27fda68c59f5ee726083288bff1f6bed8c7f md5: 8d81dcd0be5bdcdd98e0f2482bf63784 depends: @@ -7435,17 +5931,12 @@ packages: - tzdata constrains: - python_abi 3.11.* *_cp311 + arch: arm64 + platform: osx license: Python-2.0 size: 14647146 timestamp: 1733409012105 -- kind: conda - name: python-dateutil - version: 2.9.0.post0 - build: pyhff2d567_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda sha256: a50052536f1ef8516ed11a844f9413661829aa083304dc624c5925298d078d79 md5: 5ba79d7c71f03c678c8ead841f347d6e depends: @@ -7455,14 +5946,7 @@ packages: license_family: APACHE size: 222505 timestamp: 1733215763718 -- kind: conda - name: python-dotenv - version: 1.0.1 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda sha256: 99713f6b534fef94995c6c16fd21d59f3548784e9111775d692bdc7c44678f02 md5: e5c6ed218664802d305e79cc2d4491de depends: @@ -7471,13 +5955,7 @@ packages: license_family: BSD size: 24215 timestamp: 1733243277223 -- kind: conda - name: python-json-logger - version: 2.0.7 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda sha256: 4790787fe1f4e8da616edca4acf6a4f8ed4e7c6967aa31b920208fc8f95efcca md5: a61bf9ec79426938ff785eb69dbb1960 depends: @@ -7486,13 +5964,7 @@ packages: license_family: BSD size: 13383 timestamp: 1677079727691 -- kind: conda - name: python-multipart - version: 0.0.20 - build: pyhff2d567_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.20-pyhff2d567_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.20-pyhff2d567_0.conda sha256: 1b03678d145b1675b757cba165a0d9803885807792f7eb4495e48a38858c3cca md5: a28c984e0429aff3ab7386f7de56de6f depends: @@ -7501,14 +5973,7 @@ packages: license_family: Apache size: 27913 timestamp: 1734420869885 -- kind: conda - name: python-tzdata - version: '2024.2' - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_1.conda sha256: 57c9a02ec25926fb48edca59b9ede107823e5d5c473b94a0e05cc0b9a193a642 md5: c0def296b2f6d2dd7b030c2a7f66bb1f depends: @@ -7517,32 +5982,22 @@ packages: license_family: APACHE size: 142235 timestamp: 1733235414217 -- kind: conda - name: python-xxhash - version: 3.5.0 - build: py311h460d6c5_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/python-xxhash-3.5.0-py311h460d6c5_1.conda - sha256: fbed29039fd5eabf7c8e55dcfba2533673e1e48346efdc16096d2a2bb785e262 - md5: f4d1c51beffde2a6612b993bb9a63622 +- conda: https://conda.anaconda.org/conda-forge/linux-64/python-xxhash-3.5.0-py311h9ecbd09_1.conda + sha256: 77d1b380b672cdcb9b0b79b9d37b7617014219246d26462f92fae0e40fa72d05 + md5: b1796d741ca619dbacb79917b20e5a05 depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 - python >=3.11,<3.12.0a0 - - python >=3.11,<3.12.0a0 *_cpython - python_abi 3.11.* *_cp311 - xxhash >=0.8.2,<0.8.3.0a0 + arch: x86_64 + platform: linux license: BSD-2-Clause license_family: BSD - size: 21621 - timestamp: 1725272333568 -- kind: conda - name: python-xxhash - version: 3.5.0 - build: py311h5487e9b_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/python-xxhash-3.5.0-py311h5487e9b_1.conda + size: 23052 + timestamp: 1725272142790 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-xxhash-3.5.0-py311h5487e9b_1.conda sha256: b6afb0cf56db20f58746caf340ef6506e97c393c75d3606bc24f250146c31da0 md5: 5236c2ea626886210fd14e7c005ac732 depends: @@ -7550,115 +6005,73 @@ packages: - python >=3.11,<3.12.0a0 - python_abi 3.11.* *_cp311 - xxhash >=0.8.2,<0.8.3.0a0 + arch: aarch64 + platform: linux license: BSD-2-Clause license_family: BSD size: 23601 timestamp: 1725273164263 -- kind: conda - name: python-xxhash - version: 3.5.0 - build: py311h9ecbd09_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/python-xxhash-3.5.0-py311h9ecbd09_1.conda - sha256: 77d1b380b672cdcb9b0b79b9d37b7617014219246d26462f92fae0e40fa72d05 - md5: b1796d741ca619dbacb79917b20e5a05 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-xxhash-3.5.0-py311h460d6c5_1.conda + sha256: fbed29039fd5eabf7c8e55dcfba2533673e1e48346efdc16096d2a2bb785e262 + md5: f4d1c51beffde2a6612b993bb9a63622 depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 + - __osx >=11.0 - python >=3.11,<3.12.0a0 + - python >=3.11,<3.12.0a0 *_cpython - python_abi 3.11.* *_cp311 - xxhash >=0.8.2,<0.8.3.0a0 + arch: arm64 + platform: osx license: BSD-2-Clause license_family: BSD - size: 23052 - timestamp: 1725272142790 -- kind: conda - name: python_abi - version: '3.11' - build: 5_cp311 + size: 21621 + timestamp: 1725272333568 +- conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.11-5_cp311.conda build_number: 5 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.11-5_cp311.conda sha256: 2660b8059b3ee854bc5d3c6b1fce946e5bd2fe8fbca7827de2c5885ead6209de md5: 139a8d40c8a2f430df31048949e450de constrains: - python 3.11.* *_cpython + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD size: 6211 timestamp: 1723823324668 -- kind: conda - name: python_abi - version: '3.11' - build: 5_cp311 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.11-5_cp311.conda build_number: 5 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.11-5_cp311.conda sha256: 76974c2732919ace87b5f3a634eac93fed6900d557fcae0575787ec0a33c370e md5: c2078141f21872cc34d9305123ba08f2 constrains: - python 3.11.* *_cpython + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD size: 6300 timestamp: 1723823316891 -- kind: conda - name: python_abi - version: '3.11' - build: 5_cp311 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.11-5_cp311.conda build_number: 5 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.11-5_cp311.conda sha256: adc05729b7e0aca7b436e60a86f10822a92185dfcb48d66d6444e3629d3a1f6a md5: 3b855e3734344134cb56c410f729c340 constrains: - python 3.11.* *_cpython + arch: arm64 + platform: osx license: BSD-3-Clause license_family: BSD size: 6308 timestamp: 1723823096865 -- kind: conda - name: pytz - version: '2024.1' - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda sha256: 1a7d6b233f7e6e3bbcbad054c8fd51e690a67b129a899a056a5e45dd9f00cb41 md5: 3eeeeb9e4827ace8c0c1419c85d590ad depends: - python >=3.7 license: MIT - license_family: MIT - size: 188538 - timestamp: 1706886944988 -- kind: conda - name: pyyaml - version: 6.0.2 - build: py311h460d6c5_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py311h460d6c5_1.conda - sha256: 9ae182eef4e96a7c2f46cc9add19496276612663e17429500432631dce31a831 - md5: d32590e7bd388f18b036c6fc402a0cb1 - depends: - - __osx >=11.0 - - python >=3.11,<3.12.0a0 - - python >=3.11,<3.12.0a0 *_cpython - - python_abi 3.11.* *_cp311 - - yaml >=0.2.5,<0.3.0a0 - license: MIT - license_family: MIT - size: 192321 - timestamp: 1725456528007 -- kind: conda - name: pyyaml - version: 6.0.2 - build: py311h9ecbd09_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py311h9ecbd09_1.conda + license_family: MIT + size: 188538 + timestamp: 1706886944988 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py311h9ecbd09_1.conda sha256: e721e5ff389a7b2135917c04b27391be3d3382e261bb60a369b1620655365c3d md5: abeb54d40f439b86f75ea57045ab8496 depends: @@ -7667,17 +6080,13 @@ packages: - python >=3.11,<3.12.0a0 - python_abi 3.11.* *_cp311 - yaml >=0.2.5,<0.3.0a0 + arch: x86_64 + platform: linux license: MIT license_family: MIT size: 212644 timestamp: 1725456264282 -- kind: conda - name: pyyaml - version: 6.0.2 - build: py311ha879c10_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/pyyaml-6.0.2-py311ha879c10_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyyaml-6.0.2-py311ha879c10_1.conda sha256: c0f373c2944cf18da2cec19bae76284ef54cef44b3925c249d53821e4021d59a md5: ad89d09994540880f297259742a8428a depends: @@ -7686,38 +6095,28 @@ packages: - python >=3.11,<3.12.0a0 *_cpython - python_abi 3.11.* *_cp311 - yaml >=0.2.5,<0.3.0a0 + arch: aarch64 + platform: linux license: MIT license_family: MIT size: 205817 timestamp: 1725456351893 -- kind: conda - name: pyzmq - version: 26.2.0 - build: py311h730b646_3 - build_number: 3 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.0-py311h730b646_3.conda - sha256: 7e75589d9c3723ecf314435f15a7b486cebafa89ebf00bb616354e37587dc7ae - md5: b6f3e527de0c0384cd78cfa779bd6ddf +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py311h460d6c5_1.conda + sha256: 9ae182eef4e96a7c2f46cc9add19496276612663e17429500432631dce31a831 + md5: d32590e7bd388f18b036c6fc402a0cb1 depends: - __osx >=11.0 - - libcxx >=17 - - libsodium >=1.0.20,<1.0.21.0a0 - python >=3.11,<3.12.0a0 - python >=3.11,<3.12.0a0 *_cpython - python_abi 3.11.* *_cp311 - - zeromq >=4.3.5,<4.4.0a0 - license: BSD-3-Clause - license_family: BSD - size: 365841 - timestamp: 1728642472021 -- kind: conda - name: pyzmq - version: 26.2.0 - build: py311h7deb3e3_3 - build_number: 3 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.0-py311h7deb3e3_3.conda + - yaml >=0.2.5,<0.3.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 192321 + timestamp: 1725456528007 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.0-py311h7deb3e3_3.conda sha256: 3fdef7b3c43474b7225868776a373289a8fd92787ffdf8bed11cf7f39b4ac741 md5: e0897de1d8979a3bb20ef031ae1f7d28 depends: @@ -7728,17 +6127,13 @@ packages: - python >=3.11,<3.12.0a0 - python_abi 3.11.* *_cp311 - zeromq >=4.3.5,<4.4.0a0 + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD size: 389074 timestamp: 1728642373938 -- kind: conda - name: pyzmq - version: 26.2.0 - build: py311h826da9f_3 - build_number: 3 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/pyzmq-26.2.0-py311h826da9f_3.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyzmq-26.2.0-py311h826da9f_3.conda sha256: 4bffb8caa7b44ec2974d18a2660bbf9c53553d3343c114a33442ca4a8e192f1a md5: 2d901569f3142d9c7ea9e89f6f965369 depends: @@ -7748,125 +6143,98 @@ packages: - python >=3.11,<3.12.0a0 - python_abi 3.11.* *_cp311 - zeromq >=4.3.5,<4.4.0a0 + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD size: 382698 timestamp: 1728644123354 -- kind: conda - name: re2 - version: 2024.07.02 - build: h6589ca4_2 - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/re2-2024.07.02-h6589ca4_2.conda - sha256: 4d3799c05f8f662922a0acd129d119774760a3281b883603678e128d1cb307fb - md5: 7a8b4ad8c58a3408ca89d78788c78178 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.0-py311h730b646_3.conda + sha256: 7e75589d9c3723ecf314435f15a7b486cebafa89ebf00bb616354e37587dc7ae + md5: b6f3e527de0c0384cd78cfa779bd6ddf depends: - - libre2-11 2024.07.02 h07bc746_2 + - __osx >=11.0 + - libcxx >=17 + - libsodium >=1.0.20,<1.0.21.0a0 + - python >=3.11,<3.12.0a0 + - python >=3.11,<3.12.0a0 *_cpython + - python_abi 3.11.* *_cp311 + - zeromq >=4.3.5,<4.4.0a0 + arch: arm64 + platform: osx license: BSD-3-Clause license_family: BSD - size: 26861 - timestamp: 1735541088455 -- kind: conda - name: re2 - version: 2024.07.02 - build: h9925aae_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/re2-2024.07.02-h9925aae_2.conda + size: 365841 + timestamp: 1728642472021 +- conda: https://conda.anaconda.org/conda-forge/linux-64/re2-2024.07.02-h9925aae_2.conda sha256: d213c44958d49ce7e0d4d5b81afec23640cce5016685dbb2d23571a99caa4474 md5: e84ddf12bde691e8ec894b00ea829ddf depends: - libre2-11 2024.07.02 hbbce691_2 + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD size: 26786 timestamp: 1735541074034 -- kind: conda - name: re2 - version: 2024.07.02 - build: haa97905_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/re2-2024.07.02-haa97905_2.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/re2-2024.07.02-haa97905_2.conda sha256: 040848655df9119bae5a549fb5c8956a5537120859416c1d9d0712b7bac9f12e md5: 1bf0135339b4a7419a198a795d2d4be0 depends: - libre2-11 2024.07.02 h18dbdb1_2 + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD size: 26830 timestamp: 1735540999398 -- kind: conda - name: readline - version: '8.2' - build: h8228510_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/re2-2024.07.02-h6589ca4_2.conda + sha256: 4d3799c05f8f662922a0acd129d119774760a3281b883603678e128d1cb307fb + md5: 7a8b4ad8c58a3408ca89d78788c78178 + depends: + - libre2-11 2024.07.02 h07bc746_2 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 26861 + timestamp: 1735541088455 +- conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda sha256: 5435cf39d039387fbdc977b0a762357ea909a7694d9528ab40f005e9208744d7 md5: 47d31b792659ce70f470b5c82fdfb7a4 depends: - libgcc-ng >=12 - ncurses >=6.3,<7.0a0 + arch: x86_64 + platform: linux license: GPL-3.0-only license_family: GPL size: 281456 timestamp: 1679532220005 -- kind: conda - name: readline - version: '8.2' - build: h8fc344f_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8fc344f_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8fc344f_1.conda sha256: 4c99f7417419734e3797d45bc355e61c26520e111893b0d7087a01a7fbfbe3dd md5: 105eb1e16bf83bfb2eb380a48032b655 depends: - libgcc-ng >=12 - ncurses >=6.3,<7.0a0 + arch: aarch64 + platform: linux license: GPL-3.0-only license_family: GPL size: 294092 timestamp: 1679532238805 -- kind: conda - name: readline - version: '8.2' - build: h92ec313_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h92ec313_1.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h92ec313_1.conda sha256: a1dfa679ac3f6007362386576a704ad2d0d7a02e98f5d0b115f207a2da63e884 md5: 8cbb776a2f641b943d413b3e19df71f4 depends: - ncurses >=6.3,<7.0a0 + arch: arm64 + platform: osx license: GPL-3.0-only license_family: GPL size: 250351 timestamp: 1679532511311 -- kind: conda - name: regex - version: 2024.11.6 - build: py311h917b07b_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/regex-2024.11.6-py311h917b07b_0.conda - sha256: 508beb88118fcb9977346cbb95ada84c478381f12108d40787f64e9355b9370e - md5: 8ee270aa3c07b51b22e5288e51dd3efb - depends: - - __osx >=11.0 - - python >=3.11,<3.12.0a0 - - python >=3.11,<3.12.0a0 *_cpython - - python_abi 3.11.* *_cp311 - license: Python-2.0 - license_family: PSF - size: 375284 - timestamp: 1730952380791 -- kind: conda - name: regex - version: 2024.11.6 - build: py311h9ecbd09_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/regex-2024.11.6-py311h9ecbd09_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/regex-2024.11.6-py311h9ecbd09_0.conda sha256: 5151d752339013a81d62632f807b370a231faaff5a6b550cb848e53fbcaf581f md5: 08f56182b69c47595c7fbbbc195f4867 depends: @@ -7874,16 +6242,13 @@ packages: - libgcc >=13 - python >=3.11,<3.12.0a0 - python_abi 3.11.* *_cp311 + arch: x86_64 + platform: linux license: Python-2.0 license_family: PSF size: 409743 timestamp: 1730952290379 -- kind: conda - name: regex - version: 2024.11.6 - build: py311ha879c10_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/regex-2024.11.6-py311ha879c10_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/regex-2024.11.6-py311ha879c10_0.conda sha256: 6de016ed6900c06b0536f7797e4056e7baebd4158663c1df2498990433da437e md5: 8981724b818c01d6d0d2d7b9750b1d7e depends: @@ -7891,18 +6256,27 @@ packages: - python >=3.11,<3.12.0a0 - python >=3.11,<3.12.0a0 *_cpython - python_abi 3.11.* *_cp311 + arch: aarch64 + platform: linux license: Python-2.0 license_family: PSF size: 404338 timestamp: 1730952422447 -- kind: conda - name: requests - version: 2.32.3 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/regex-2024.11.6-py311h917b07b_0.conda + sha256: 508beb88118fcb9977346cbb95ada84c478381f12108d40787f64e9355b9370e + md5: 8ee270aa3c07b51b22e5288e51dd3efb + depends: + - __osx >=11.0 + - python >=3.11,<3.12.0a0 + - python >=3.11,<3.12.0a0 *_cpython + - python_abi 3.11.* *_cp311 + arch: arm64 + platform: osx + license: Python-2.0 + license_family: PSF + size: 375284 + timestamp: 1730952380791 +- conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda sha256: d701ca1136197aa121bbbe0e8c18db6b5c94acbd041c2b43c70e5ae104e1d8ad md5: a9b9368f3701a417eac9edbcae7cb737 depends: @@ -7917,14 +6291,7 @@ packages: license_family: APACHE size: 58723 timestamp: 1733217126197 -- kind: conda - name: rich - version: 13.9.4 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_1.conda sha256: 06a760c5ae572e72e865d5a87e9fe3cc171e1a9c996e63daf3db52ff1a0b4457 md5: 7aed65d4ff222bfb7335997aa40b7da5 depends: @@ -7936,13 +6303,7 @@ 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 +- conda: https://conda.anaconda.org/conda-forge/noarch/rich-toolkit-0.11.3-pyh29332c3_0.conda sha256: e558f8c254a9ff9164d069110da162fc79497d70c60f2c09a5d3d0d7101c5628 md5: 4ba15ae9388b67d09782798347481f69 depends: @@ -7955,102 +6316,80 @@ packages: license_family: MIT size: 17357 timestamp: 1733750834072 -- kind: conda - name: s2n - version: 1.5.10 - build: h5df210e_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/s2n-1.5.10-h5df210e_0.conda - sha256: b5e7a9f4b7b1ec5c5c3661e2defc8b47fab543b05cad6fec78739d8007612464 - md5: 3d3979efcc0f44f3f0cef3de03b296cc - depends: - - libgcc >=13 - - openssl >=3.4.0,<4.0a0 - license: Apache-2.0 - license_family: Apache - size: 353450 - timestamp: 1734415474615 -- kind: conda - name: s2n - version: 1.5.10 - build: hb5b8611_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/s2n-1.5.10-hb5b8611_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/s2n-1.5.10-hb5b8611_0.conda sha256: f6d451821fddc26b93f45e9313e1ea15e09e5ef049d4e137413a5225d2a5dfba md5: 999f3673f2a011f59287f2969e3749e4 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - openssl >=3.4.0,<4.0a0 + arch: x86_64 + platform: linux license: Apache-2.0 license_family: Apache size: 355142 timestamp: 1734415467047 -- kind: conda - name: safetensors - version: 0.5.1 - build: py311h0ca61a2_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/safetensors-0.5.1-py311h0ca61a2_0.conda - sha256: f51755ad78863e2f0451443c3c902aff9c066e11463d8b1782d7f73e3686fae7 - md5: f468136337bcd292514e2554f6783033 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/s2n-1.5.10-h5df210e_0.conda + sha256: b5e7a9f4b7b1ec5c5c3661e2defc8b47fab543b05cad6fec78739d8007612464 + md5: 3d3979efcc0f44f3f0cef3de03b296cc + depends: + - libgcc >=13 + - openssl >=3.4.0,<4.0a0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 353450 + timestamp: 1734415474615 +- conda: https://conda.anaconda.org/conda-forge/linux-64/safetensors-0.5.2-py311h9e33e62_0.conda + sha256: 44cd1d3def08f2aaad270263f08a07c2237fb38f2de40a26d1d23a3b9f01e542 + md5: 167fe161b7ba7c613676e67eb5e81335 depends: + - __glibc >=2.17,<3.0.a0 - libgcc >=13 - python >=3.11,<3.12.0a0 - - python >=3.11,<3.12.0a0 *_cpython - python_abi 3.11.* *_cp311 constrains: - __glibc >=2.17 + arch: x86_64 + platform: linux license: Apache-2.0 license_family: APACHE - size: 409136 - timestamp: 1736278320399 -- kind: conda - name: safetensors - version: 0.5.1 - build: py311h3ff9189_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/safetensors-0.5.1-py311h3ff9189_0.conda - sha256: c9be8e19d4068571b95502dd1f4203e763686ae41fa433752339209caa0c3053 - md5: 1f5ed6825b119ec40a3309c3adb5a737 + size: 424244 + timestamp: 1736383224621 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/safetensors-0.5.2-py311h0ca61a2_0.conda + sha256: 37368ad91632f174c7320080a0e585757d107e4ed96293b4c105ea4cd94b27af + md5: b7e3ca91aed0f0e599674b337b2ff1de depends: - - __osx >=11.0 + - libgcc >=13 - python >=3.11,<3.12.0a0 - python >=3.11,<3.12.0a0 *_cpython - python_abi 3.11.* *_cp311 constrains: - - __osx >=11.0 + - __glibc >=2.17 + arch: aarch64 + platform: linux license: Apache-2.0 license_family: APACHE - size: 378288 - timestamp: 1736278483932 -- kind: conda - name: safetensors - version: 0.5.1 - build: py311h9e33e62_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/safetensors-0.5.1-py311h9e33e62_0.conda - sha256: ca2f11077f6edd1938adcc51711f09e59d45ea9066c546df0b8422ee977ee9d4 - md5: 5a37c50e5cf8269918e3c225fb7d6d48 + size: 410151 + timestamp: 1736383157694 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/safetensors-0.5.2-py311h3ff9189_0.conda + sha256: bdc212832af1daef1769d4ec087a9e0de167a7874d2194b38b8c19a5e1b2b4d6 + md5: c9c0839c2dc7b9a35ce0adf722562c34 depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 + - __osx >=11.0 - python >=3.11,<3.12.0a0 + - python >=3.11,<3.12.0a0 *_cpython - python_abi 3.11.* *_cp311 constrains: - - __glibc >=2.17 + - __osx >=11.0 + arch: arm64 + platform: osx license: Apache-2.0 license_family: APACHE - size: 424734 - timestamp: 1736278241935 -- kind: conda - name: shellingham - version: 1.5.4 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda + size: 379719 + timestamp: 1736383534476 +- conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda sha256: 0557c090913aa63cdbe821dbdfa038a321b488e22bc80196c4b3b1aace4914ef md5: 7c3c2a0f3ebdea2bbc35538d162b43bf depends: @@ -8059,13 +6398,7 @@ packages: license_family: MIT size: 14462 timestamp: 1733301007770 -- kind: conda - name: six - version: 1.17.0 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda sha256: 41db0180680cc67c3fa76544ffd48d6a5679d96f4b71d7498a759e94edc9a2db md5: a451d576819089b0d672f18768be0f65 depends: @@ -8074,63 +6407,44 @@ packages: license_family: MIT size: 16385 timestamp: 1733381032766 -- kind: conda - name: snappy - version: 1.2.1 - build: h8bd8927_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-h8bd8927_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-h8bd8927_1.conda sha256: ec91e86eeb2c6bbf09d51351b851e945185d70661d2ada67204c9a6419d282d3 md5: 3b3e64af585eadfb52bb90b553db5edf depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - libstdcxx >=13 + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD size: 42739 timestamp: 1733501881851 -- kind: conda - name: snappy - version: 1.2.1 - build: h98b9ce2_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-h98b9ce2_1.conda - sha256: 4242f95b215127a006eb664fe26ed5a82df87e90cbdbc7ce7ff4971f0720997f - md5: ded86dee325290da2967a3fea3800eb5 - depends: - - __osx >=11.0 - - libcxx >=18 - license: BSD-3-Clause - license_family: BSD - size: 35857 - timestamp: 1733502172664 -- kind: conda - name: snappy - version: 1.2.1 - build: hd4fb6f5_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-hd4fb6f5_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-hd4fb6f5_1.conda sha256: c4a07ae5def8d55128f25a567a296ef9d7bf99a3bc79d46bd5160c076a5f50af md5: 2fcc6cd1e5550deb509073fd2e6693e1 depends: - libgcc >=13 - libstdcxx >=13 + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD size: 43032 timestamp: 1733501964775 -- kind: conda - name: sniffio - version: 1.3.1 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-h98b9ce2_1.conda + sha256: 4242f95b215127a006eb664fe26ed5a82df87e90cbdbc7ce7ff4971f0720997f + md5: ded86dee325290da2967a3fea3800eb5 + depends: + - __osx >=11.0 + - libcxx >=18 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 35857 + timestamp: 1733502172664 +- conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda sha256: c2248418c310bdd1719b186796ae50a8a77ce555228b6acd32768e2543a15012 md5: bf7a226e58dfb8346c70df36065d86c9 depends: @@ -8139,13 +6453,7 @@ packages: license_family: Apache size: 15019 timestamp: 1733244175724 -- kind: conda - name: sse-starlette - version: 2.2.1 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.2.1-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.2.1-pyhd8ed1ab_0.conda sha256: 3c6a476e7afb702d841e23c61a0c4cc491929d2e39376d329e67e94c40a236cc md5: c1ef6bc13dd2caa4b406fb3cb06c2791 depends: @@ -8156,14 +6464,7 @@ packages: license_family: BSD size: 15324 timestamp: 1735126414893 -- kind: conda - name: starlette - version: 0.41.3 - build: pyha770c72_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyha770c72_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyha770c72_1.conda sha256: b74fc76107487eb26624c01fc55bfab7eed03ae82e003333c86d8a1eeac53672 md5: 0207dac04ae2200701fab697f0aaaac4 depends: @@ -8174,58 +6475,42 @@ packages: license_family: BSD size: 58838 timestamp: 1733344472634 -- kind: conda - name: tk - version: 8.6.13 - build: h194ca79_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda + sha256: e0569c9caa68bf476bead1bed3d79650bb080b532c64a4af7d8ca286c08dea4e + md5: d453b98d9c83e71da0741bb0ff4d76bc + depends: + - libgcc-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 + arch: x86_64 + platform: linux + license: TCL + license_family: BSD + size: 3318875 + timestamp: 1699202167581 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda sha256: 7fa27cc512d3a783f38bd16bbbffc008807372499d5b65d089a8e43bde9db267 md5: f75105e0585851f818e0009dd1dde4dc depends: - libgcc-ng >=12 - libzlib >=1.2.13,<2.0.0a0 + arch: aarch64 + platform: linux license: TCL license_family: BSD size: 3351802 timestamp: 1695506242997 -- kind: conda - name: tk - version: 8.6.13 - build: h5083fa2_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda sha256: 72457ad031b4c048e5891f3f6cb27a53cb479db68a52d965f796910e71a403a8 md5: b50a57ba89c32b62428b71a875291c9b depends: - libzlib >=1.2.13,<2.0.0a0 + arch: arm64 + platform: osx license: TCL license_family: BSD size: 3145523 timestamp: 1699202432999 -- kind: conda - name: tk - version: 8.6.13 - build: noxft_h4845f30_101 - build_number: 101 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda - sha256: e0569c9caa68bf476bead1bed3d79650bb080b532c64a4af7d8ca286c08dea4e - md5: d453b98d9c83e71da0741bb0ff4d76bc - depends: - - libgcc-ng >=12 - - libzlib >=1.2.13,<2.0.0a0 - license: TCL - license_family: BSD - size: 3318875 - timestamp: 1699202167581 -- kind: conda - name: tokenizers - version: 0.21.0 - build: py311h182c674_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.21.0-py311h182c674_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.21.0-py311h182c674_0.conda sha256: 231ecde88bb291437a8060e4eaee74d87318ee635b4ceac5d74fc82343f137d0 md5: 7e9304388022ef7f7f21b94953a5181b depends: @@ -8238,16 +6523,13 @@ packages: - python_abi 3.11.* *_cp311 constrains: - __glibc >=2.17 + arch: x86_64 + platform: linux license: Apache-2.0 license_family: APACHE size: 2264312 timestamp: 1732734291587 -- kind: conda - name: tokenizers - version: 0.21.0 - build: py311h5e37e04_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.21.0-py311h5e37e04_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.21.0-py311h5e37e04_0.conda sha256: 02fad918a39c9e10feedac2937e3bee619fa49707734ae478e0342a85784fb98 md5: 833844038ba171a27678bf201c3f4c74 depends: @@ -8260,16 +6542,13 @@ packages: - python_abi 3.11.* *_cp311 constrains: - __glibc >=2.17 + arch: aarch64 + platform: linux license: Apache-2.0 license_family: APACHE size: 2329972 timestamp: 1732734458949 -- kind: conda - name: tokenizers - version: 0.21.0 - build: py311h82b0fb8_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.21.0-py311h82b0fb8_0.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.21.0-py311h82b0fb8_0.conda sha256: 8f2a22323b67a75d57192d37bb031fb44a51f013d3232f18a0df3c453ea68ab9 md5: d1543e49d59c7537c7c97f6d70544b00 depends: @@ -8281,32 +6560,40 @@ packages: - python_abi 3.11.* *_cp311 constrains: - __osx >=11.0 + arch: arm64 + platform: osx license: Apache-2.0 license_family: APACHE size: 1935264 timestamp: 1732734431057 -- kind: conda - name: tornado - version: 6.4.2 - build: py311h5487e9b_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py311h5487e9b_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py311h9ecbd09_0.conda + sha256: afa3489113154b5cb0724b0bf120b62df91f426dabfe5d02f2ba09e90d346b28 + md5: df3aee9c3e44489257a840b8354e77b9 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 855653 + timestamp: 1732616048886 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py311h5487e9b_0.conda sha256: 0619169eb95f8d7285dd267be3559d3f71af071954792cdd9591a90602992cee md5: fe331d12b7fccca2348a114c4742a0e0 depends: - libgcc >=13 - python >=3.11,<3.12.0a0 - python_abi 3.11.* *_cp311 + arch: aarch64 + platform: linux license: Apache-2.0 license_family: Apache size: 859892 timestamp: 1732616872562 -- kind: conda - name: tornado - version: 6.4.2 - build: py311h917b07b_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py311h917b07b_0.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py311h917b07b_0.conda sha256: 80b79a7d4ed8e16019b8c634cca66935d18fc98be358c76a6ead8c611306ee14 md5: 183b74c576dc7f920dae168997dbd1dd depends: @@ -8314,35 +6601,13 @@ packages: - python >=3.11,<3.12.0a0 - python >=3.11,<3.12.0a0 *_cpython - python_abi 3.11.* *_cp311 + arch: arm64 + platform: osx license: Apache-2.0 license_family: Apache size: 858954 timestamp: 1732616142626 -- kind: conda - name: tornado - version: 6.4.2 - build: py311h9ecbd09_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py311h9ecbd09_0.conda - sha256: afa3489113154b5cb0724b0bf120b62df91f426dabfe5d02f2ba09e90d346b28 - md5: df3aee9c3e44489257a840b8354e77b9 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - python >=3.11,<3.12.0a0 - - python_abi 3.11.* *_cp311 - license: Apache-2.0 - license_family: Apache - size: 855653 - timestamp: 1732616048886 -- kind: conda - name: tqdm - version: 4.67.1 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda sha256: 11e2c85468ae9902d24a27137b6b39b4a78099806e551d390e394a8c34b48e40 md5: 9efbfdc37242619130ea42b1cc4ed861 depends: @@ -8351,14 +6616,7 @@ packages: license: MPL-2.0 or MIT size: 89498 timestamp: 1735661472632 -- kind: conda - name: traitlets - version: 5.14.3 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda sha256: f39a5620c6e8e9e98357507262a7869de2ae8cc07da8b7f84e517c9fd6c2b959 md5: 019a7385be9af33791c989871317e1ed depends: @@ -8367,15 +6625,9 @@ packages: license_family: BSD size: 110051 timestamp: 1733367480074 -- kind: conda - name: transformers - version: 4.47.1 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.1-pyhd8ed1ab_0.conda - sha256: df8238c3cccbb6bb1d5657e6a75977ac0b832ab61155d5e3d8560c1c4f52abeb - md5: 931d66db156680c42c62812d6533cbf7 +- conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.48.0-pyhd8ed1ab_0.conda + sha256: c8dd6d69e4ef67c7d507dec2be4b6964f6ddbe1ce35a822ddf4089505d702f33 + md5: 2c57d4af7b8952484962b40a59cf1537 depends: - datasets !=2.5.0 - filelock @@ -8391,15 +6643,9 @@ packages: - tqdm >=4.27 license: Apache-2.0 license_family: APACHE - size: 3680276 - timestamp: 1734499046193 -- kind: conda - name: typer - version: 0.15.1 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda + size: 3408277 + timestamp: 1736534112195 +- conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda sha256: ef695490e895c2ad552c77ec497b899b09fd4ad4ab07edcf5649f5994cf92a35 md5: 170a0398946d8f5b454e592672b6fc20 depends: @@ -8409,13 +6655,7 @@ packages: license_family: MIT size: 56175 timestamp: 1733408582623 -- kind: conda - name: typer-slim - version: 0.15.1 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda sha256: d4965516f35e0805199de6596c4ac76c4ad3d6b012be35e532102f9e53ecb860 md5: 0218b16f5a1dd569e575a7a6415489db depends: @@ -8430,13 +6670,7 @@ packages: license_family: MIT size: 43592 timestamp: 1733408569554 -- kind: conda - name: typer-slim-standard - version: 0.15.1 - build: hd8ed1ab_0 - subdir: noarch - noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda sha256: f31c56fe98315da8b9ce848256c17e0b9f87896b41a6ccf0c9cc74644dcef20f md5: 4e603c43bfdfc7b533be087c3e070cc9 depends: @@ -8447,14 +6681,8 @@ packages: license_family: MIT size: 49531 timestamp: 1733408570063 -- kind: conda - name: typing-extensions - version: 4.12.2 - build: hd8ed1ab_1 - build_number: 1 - subdir: noarch +- conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda sha256: c8e9c1c467b5f960b627d7adc1c65fece8e929a3de89967e91ef0f726422fd32 md5: b6a408c64b78ec7b779a3e5c7a902433 depends: @@ -8463,14 +6691,7 @@ packages: license_family: PSF size: 10075 timestamp: 1733188758872 -- kind: conda - name: typing_extensions - version: 4.12.2 - build: pyha770c72_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda sha256: 337be7af5af8b2817f115b3b68870208b30c31d3439bec07bfb2d8f4823e3568 md5: d17f13df8b65464ca316cbc000a3cb64 depends: @@ -8479,25 +6700,13 @@ packages: license_family: PSF size: 39637 timestamp: 1733188758212 -- kind: conda - name: tzdata - version: 2024b - build: hc8b5060_0 - subdir: noarch - noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda sha256: 4fde5c3008bf5d2db82f2b50204464314cc3c91c1d953652f7bd01d9e52aefdf md5: 8ac3367aafb1cc0a068483c580af8015 license: LicenseRef-Public-Domain size: 122354 timestamp: 1728047496079 -- kind: conda - name: urllib3 - version: 2.3.0 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda sha256: 114919ffa80c328127dab9c8e7a38f9d563c617691fb81fccb11c1e86763727e md5: 32674f8dbfb7b26410ed580dd3c10a29 depends: @@ -8510,13 +6719,7 @@ packages: license_family: MIT size: 100102 timestamp: 1734859520452 -- kind: conda - name: uvicorn - version: 0.34.0 - build: pyh31011fe_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.34.0-pyh31011fe_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.34.0-pyh31011fe_0.conda sha256: 55c160b0cf9274e2b98bc0f7fcce548bffa8d788bc86aa02801877457040f6fa md5: 5d448feee86e4740498ec8f8eb40e052 depends: @@ -8529,13 +6732,7 @@ packages: license_family: BSD size: 48643 timestamp: 1734293057914 -- kind: conda - name: uvicorn-standard - version: 0.34.0 - build: h31011fe_0 - subdir: noarch - noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.34.0-h31011fe_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.34.0-h31011fe_0.conda sha256: 87e1531e175e75122f9f37608eb953af4c977465ab0ae11283cc01fef954e4ec md5: 32a94143a7f65d76d2d5da37dcb4ed79 depends: @@ -8551,13 +6748,7 @@ packages: license_family: BSD size: 7203 timestamp: 1734293058849 -- kind: conda - name: uvloop - version: 0.21.0 - build: py311h9ecbd09_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/uvloop-0.21.0-py311h9ecbd09_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/uvloop-0.21.0-py311h9ecbd09_1.conda sha256: 9421eeb1e15b99985bb15dec9cf0f337d332106cea584a147449c91c389a4418 md5: 66890e34ed6a9bd84f1c189043a928f8 depends: @@ -8566,16 +6757,12 @@ packages: - libuv >=1.49.2,<2.0a0 - python >=3.11,<3.12.0a0 - python_abi 3.11.* *_cp311 + arch: x86_64 + platform: linux license: MIT OR Apache-2.0 size: 677289 timestamp: 1730214493601 -- kind: conda - name: uvloop - version: 0.21.0 - build: py311ha879c10_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/uvloop-0.21.0-py311ha879c10_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/uvloop-0.21.0-py311ha879c10_1.conda sha256: 23e592499434da8a721164ab163765152e6f5f94b1a4cea5447803a0cdfd00fb md5: 744b9c908ae05f4712bf4ea9d98e45c5 depends: @@ -8584,16 +6771,12 @@ packages: - python >=3.11,<3.12.0a0 - python >=3.11,<3.12.0a0 *_cpython - python_abi 3.11.* *_cp311 + arch: aarch64 + platform: linux license: MIT OR Apache-2.0 size: 643444 timestamp: 1730214665299 -- kind: conda - name: uvloop - version: 0.21.0 - build: py311hae2e1ce_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/uvloop-0.21.0-py311hae2e1ce_1.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/uvloop-0.21.0-py311hae2e1ce_1.conda sha256: f42e2ca33beedef252d234d3aac7642432bf8545a6d37c11e58a69f6aee36898 md5: bc9ca85e86e305b58432c4791b732ae6 depends: @@ -8602,92 +6785,60 @@ packages: - python >=3.11,<3.12.0a0 - python >=3.11,<3.12.0a0 *_cpython - python_abi 3.11.* *_cp311 + arch: arm64 + platform: osx license: MIT OR Apache-2.0 size: 544025 timestamp: 1730214665776 -- kind: conda - name: watchfiles - version: 1.0.3 - build: py311h0ca61a2_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/watchfiles-1.0.3-py311h0ca61a2_0.conda - sha256: acf468cfad74bc894c0f7263c7390b7b2dfe7f72c7f698a698caad2deb532c7d - md5: 02d887d09e56a37b7416c2c1da6ef8c9 +- conda: https://conda.anaconda.org/conda-forge/linux-64/watchfiles-1.0.4-py311h9e33e62_0.conda + sha256: 30d0b7c7173c979b0770fac8e7a3206b6d6a7cfd2c0da671af3d98d1399bff7c + md5: dbad881039736bed1cc0956f9fd20f8c depends: + - __glibc >=2.17,<3.0.a0 - anyio >=3.0.0 - libgcc >=13 - python >=3.11,<3.12.0a0 - - python >=3.11,<3.12.0a0 *_cpython - python_abi 3.11.* *_cp311 constrains: - __glibc >=2.17 + arch: x86_64 + platform: linux license: MIT - license_family: MIT - size: 404921 - timestamp: 1733998940737 -- kind: conda - name: watchfiles - version: 1.0.3 - build: py311h3ff9189_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/watchfiles-1.0.3-py311h3ff9189_0.conda - sha256: 86f7ebe3cfb503fb2c80f040e03d039e3b552ac5893cd8e82225c966bac07c44 - md5: bd5b2b35eb23cfcb48be31527ff49944 - depends: - - __osx >=11.0 - - anyio >=3.0.0 - - python >=3.11,<3.12.0a0 - - python >=3.11,<3.12.0a0 *_cpython - - python_abi 3.11.* *_cp311 - constrains: - - __osx >=11.0 - license: MIT - license_family: MIT - size: 366312 - timestamp: 1733999050046 -- kind: conda - name: watchfiles - version: 1.0.3 - build: py311h9e33e62_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/watchfiles-1.0.3-py311h9e33e62_0.conda - sha256: 066f5725b576dca7a1f5dfafca055836a199f9db97435e2ceca84e6296fc8358 - md5: 558a9c46ef5db2f3a6f425228bc77d43 + size: 409870 + timestamp: 1736550564534 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/watchfiles-1.0.4-py311h0ca61a2_0.conda + sha256: 4cd394860f79aff4b0ad083a852a6104b3e80edd83d9072f333dd86f5165a998 + md5: 289764aac62dd48cb5a6a20e3252508a depends: - - __glibc >=2.17,<3.0.a0 - anyio >=3.0.0 - libgcc >=13 - python >=3.11,<3.12.0a0 + - python >=3.11,<3.12.0a0 *_cpython - python_abi 3.11.* *_cp311 constrains: - __glibc >=2.17 + arch: aarch64 + platform: linux license: MIT - license_family: MIT - size: 410904 - timestamp: 1733998882176 -- kind: conda - name: websockets - version: '14.1' - build: py311h917b07b_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/websockets-14.1-py311h917b07b_0.conda - sha256: dd645f8c0b89df0c56a15a21504057d5e03ec9e782127722172ade4e1d93d8a5 - md5: c0f90c40248823402e4bdf335fab7cde + size: 404840 + timestamp: 1736550636184 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/watchfiles-1.0.4-py311h3ff9189_0.conda + sha256: cbf65f73e95b19623ded1d4fd1f7feb6b2b88ea7931299f1d41ed3446aa1e636 + md5: 0dc7429ff1ce8cdc986fb56295a0c122 depends: - __osx >=11.0 + - anyio >=3.0.0 - python >=3.11,<3.12.0a0 - python >=3.11,<3.12.0a0 *_cpython - python_abi 3.11.* *_cp311 - license: BSD-3-Clause - license_family: BSD - size: 240817 - timestamp: 1731498829166 -- kind: conda - name: websockets - version: '14.1' - build: py311h9ecbd09_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/websockets-14.1-py311h9ecbd09_0.conda + constrains: + - __osx >=11.0 + arch: arm64 + platform: osx + license: MIT + size: 365948 + timestamp: 1736550860802 +- conda: https://conda.anaconda.org/conda-forge/linux-64/websockets-14.1-py311h9ecbd09_0.conda sha256: 38f67b5f2cd27da85198a973cc6113cffe1069190c69f5555fcaa9ed8f8c30bd md5: 99cff696db893d6f22a379a90cbe90df depends: @@ -8695,16 +6846,13 @@ packages: - libgcc >=13 - python >=3.11,<3.12.0a0 - python_abi 3.11.* *_cp311 + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD size: 241556 timestamp: 1731498753625 -- kind: conda - name: websockets - version: '14.1' - build: py311ha879c10_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/websockets-14.1-py311ha879c10_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/websockets-14.1-py311ha879c10_0.conda sha256: 1a05cabbf96c453627a4950c7e4983025db1499e72fba9e4d0de1b65e23ba7b1 md5: 1c289239f321e075aee07035087652ce depends: @@ -8712,33 +6860,27 @@ packages: - python >=3.11,<3.12.0a0 - python >=3.11,<3.12.0a0 *_cpython - python_abi 3.11.* *_cp311 + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD size: 241161 timestamp: 1731498790453 -- kind: conda - name: wrapt - version: 1.17.0 - build: py311h917b07b_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/wrapt-1.17.0-py311h917b07b_0.conda - sha256: fff7f86570f0a3fd90878b75b552bafddb854e8f4d68a171cd427a13e9eb160c - md5: a56950191b7efa9406bbaff925173d20 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/websockets-14.1-py311h917b07b_0.conda + sha256: dd645f8c0b89df0c56a15a21504057d5e03ec9e782127722172ade4e1d93d8a5 + md5: c0f90c40248823402e4bdf335fab7cde depends: - __osx >=11.0 - python >=3.11,<3.12.0a0 - python >=3.11,<3.12.0a0 *_cpython - python_abi 3.11.* *_cp311 - license: BSD-2-Clause + arch: arm64 + platform: osx + license: BSD-3-Clause license_family: BSD - size: 62309 - timestamp: 1732524074190 -- kind: conda - name: wrapt - version: 1.17.0 - build: py311h9ecbd09_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.17.0-py311h9ecbd09_0.conda + size: 240817 + timestamp: 1731498829166 +- conda: https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.17.0-py311h9ecbd09_0.conda sha256: 8e9a7a1a69d0d59b3cb0066fbdbf16dc7a0d9554ffc2a365e67eca72230ca3e8 md5: 452e39fb544b1ec9cc6c5b2ac9c47efa depends: @@ -8746,16 +6888,13 @@ packages: - libgcc >=13 - python >=3.11,<3.12.0a0 - python_abi 3.11.* *_cp311 + arch: x86_64 + platform: linux license: BSD-2-Clause license_family: BSD size: 65396 timestamp: 1732523677157 -- kind: conda - name: wrapt - version: 1.17.0 - build: py311ha879c10_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/wrapt-1.17.0-py311ha879c10_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/wrapt-1.17.0-py311ha879c10_0.conda sha256: 33e12fc8188dc0f649ff9fbc3770bff61912722e88ebae806accff72d01ca34f md5: e2d4e19306f4df6953c7f23d15ab3805 depends: @@ -8763,205 +6902,157 @@ packages: - python >=3.11,<3.12.0a0 - python >=3.11,<3.12.0a0 *_cpython - python_abi 3.11.* *_cp311 + arch: aarch64 + platform: linux license: BSD-2-Clause license_family: BSD size: 65780 timestamp: 1732523794589 -- kind: conda - name: xorg-libxau - version: 1.0.12 - build: h5505292_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxau-1.0.12-h5505292_0.conda - sha256: f33e6f013fc36ebc200f09ddead83468544cb5c353a3b50499b07b8c34e28a8d - md5: 50901e0764b7701d8ed7343496f4f301 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/wrapt-1.17.0-py311h917b07b_0.conda + sha256: fff7f86570f0a3fd90878b75b552bafddb854e8f4d68a171cd427a13e9eb160c + md5: a56950191b7efa9406bbaff925173d20 depends: - __osx >=11.0 + - python >=3.11,<3.12.0a0 + - python >=3.11,<3.12.0a0 *_cpython + - python_abi 3.11.* *_cp311 + arch: arm64 + platform: osx + license: BSD-2-Clause + license_family: BSD + size: 62309 + timestamp: 1732524074190 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-hb9d3cd8_0.conda + sha256: ed10c9283974d311855ae08a16dfd7e56241fac632aec3b92e3cfe73cff31038 + md5: f6ebe2cb3f82ba6c057dde5d9debe4f7 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux license: MIT license_family: MIT - size: 13593 - timestamp: 1734229104321 -- kind: conda - name: xorg-libxau - version: 1.0.12 - build: h86ecc28_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxau-1.0.12-h86ecc28_0.conda + size: 14780 + timestamp: 1734229004433 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxau-1.0.12-h86ecc28_0.conda sha256: 7829a0019b99ba462aece7592d2d7f42e12d12ccd3b9614e529de6ddba453685 md5: d5397424399a66d33c80b1f2345a36a6 depends: - libgcc >=13 + arch: aarch64 + platform: linux license: MIT license_family: MIT size: 15873 timestamp: 1734230458294 -- kind: conda - name: xorg-libxau - version: 1.0.12 - build: hb9d3cd8_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-hb9d3cd8_0.conda - sha256: ed10c9283974d311855ae08a16dfd7e56241fac632aec3b92e3cfe73cff31038 - md5: f6ebe2cb3f82ba6c057dde5d9debe4f7 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxau-1.0.12-h5505292_0.conda + sha256: f33e6f013fc36ebc200f09ddead83468544cb5c353a3b50499b07b8c34e28a8d + md5: 50901e0764b7701d8ed7343496f4f301 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 13593 + timestamp: 1734229104321 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb9d3cd8_0.conda + sha256: 6b250f3e59db07c2514057944a3ea2044d6a8cdde8a47b6497c254520fade1ee + md5: 8035c64cb77ed555e3f150b7b3972480 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 + arch: x86_64 + platform: linux license: MIT license_family: MIT - size: 14780 - timestamp: 1734229004433 -- kind: conda - name: xorg-libxdmcp - version: 1.1.5 - build: h57736b2_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxdmcp-1.1.5-h57736b2_0.conda + size: 19901 + timestamp: 1727794976192 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxdmcp-1.1.5-h57736b2_0.conda sha256: efcc150da5926cf244f757b8376d96a4db78bc15b8d90ca9f56ac6e75755971f md5: 25a5a7b797fe6e084e04ffe2db02fc62 depends: - libgcc >=13 + arch: aarch64 + platform: linux license: MIT license_family: MIT size: 20615 timestamp: 1727796660574 -- kind: conda - name: xorg-libxdmcp - version: 1.1.5 - build: hb9d3cd8_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb9d3cd8_0.conda - sha256: 6b250f3e59db07c2514057944a3ea2044d6a8cdde8a47b6497c254520fade1ee - md5: 8035c64cb77ed555e3f150b7b3972480 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - license: MIT - license_family: MIT - size: 19901 - timestamp: 1727794976192 -- kind: conda - name: xorg-libxdmcp - version: 1.1.5 - build: hd74edd7_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxdmcp-1.1.5-hd74edd7_0.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxdmcp-1.1.5-hd74edd7_0.conda sha256: 9939a166d780700d81023546759102b33fdc2c5f11ef09f5f66c77210fd334c8 md5: 77c447f48cab5d3a15ac224edb86a968 depends: - __osx >=11.0 + arch: arm64 + platform: osx license: MIT license_family: MIT size: 18487 timestamp: 1727795205022 -- kind: conda - name: xxhash - version: 0.8.2 - build: h31becfc_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/xxhash-0.8.2-h31becfc_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/xxhash-0.8.2-hd590300_0.conda + sha256: 6fe74a8fd84ab0dc25e4dc3e0c22388dd8accb212897a208b14fe5d4fbb8fc2f + md5: f08fb5c89edfc4aadee1c81d4cfb1fa1 + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + size: 97691 + timestamp: 1689951608120 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xxhash-0.8.2-h31becfc_0.conda sha256: 4c526aed70b579d80e5c20d32130b6bc8bde59b3250d43c2b5269755f4da8a9b md5: bb9faf6857108a9f62ebb4dab6ef05da depends: - libgcc-ng >=12 + arch: aarch64 + platform: linux license: BSD-2-Clause license_family: BSD size: 102442 timestamp: 1689951682147 -- kind: conda - name: xxhash - version: 0.8.2 - build: hb547adb_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/xxhash-0.8.2-hb547adb_0.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/xxhash-0.8.2-hb547adb_0.conda sha256: a70f59f7221ee72c45b39a6b36a33eb9c717ba01921cce1a3c361a4676979a2e md5: 144cd3b88706507f332f5eb5fb83a33b + arch: arm64 + platform: osx license: BSD-2-Clause license_family: BSD size: 97593 timestamp: 1689951969732 -- kind: conda - name: xxhash - version: 0.8.2 - build: hd590300_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/xxhash-0.8.2-hd590300_0.conda - sha256: 6fe74a8fd84ab0dc25e4dc3e0c22388dd8accb212897a208b14fe5d4fbb8fc2f - md5: f08fb5c89edfc4aadee1c81d4cfb1fa1 - depends: - - libgcc-ng >=12 - license: BSD-2-Clause - license_family: BSD - size: 97691 - timestamp: 1689951608120 -- kind: conda - name: yaml - version: 0.2.5 - build: h3422bc3_2 - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 - sha256: 93181a04ba8cfecfdfb162fc958436d868cc37db504c58078eab4c1a3e57fbb7 - md5: 4bb3f014845110883a3c5ee811fd84b4 - license: MIT - license_family: MIT - size: 88016 - timestamp: 1641347076660 -- kind: conda - name: yaml - version: 0.2.5 - build: h7f98852_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 sha256: a4e34c710eeb26945bdbdaba82d3d74f60a78f54a874ec10d373811a5d217535 md5: 4cb3ad778ec2d5a7acbdf254eb1c42ae depends: - libgcc-ng >=9.4.0 + arch: x86_64 + platform: linux license: MIT license_family: MIT size: 89141 timestamp: 1641346969816 -- kind: conda - name: yaml - version: 0.2.5 - build: hf897c2e_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/yaml-0.2.5-hf897c2e_2.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yaml-0.2.5-hf897c2e_2.tar.bz2 sha256: 8bc601d6dbe249eba44b3c456765265cd8f42ef1e778f8df9b0c9c88b8558d7e md5: b853307650cb226731f653aa623936a4 depends: - libgcc-ng >=9.4.0 + arch: aarch64 + platform: linux license: MIT license_family: MIT size: 92927 timestamp: 1641347626613 -- kind: conda - name: yarl - version: 1.18.3 - build: py311h917b07b_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.18.3-py311h917b07b_0.conda - sha256: 2df31b9adcd55b29985935d0a23ae6069808e319c2c24bbe212cbd3f3dca71ed - md5: 134c0091a508239d35505d9ac74d4c0f - depends: - - __osx >=11.0 - - idna >=2.0 - - multidict >=4.0 - - propcache >=0.2.1 - - python >=3.11,<3.12.0a0 - - python >=3.11,<3.12.0a0 *_cpython - - python_abi 3.11.* *_cp311 - license: Apache-2.0 - license_family: Apache - size: 144071 - timestamp: 1733429148299 -- kind: conda - name: yarl - version: 1.18.3 - build: py311h9ecbd09_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.18.3-py311h9ecbd09_0.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 + sha256: 93181a04ba8cfecfdfb162fc958436d868cc37db504c58078eab4c1a3e57fbb7 + md5: 4bb3f014845110883a3c5ee811fd84b4 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 88016 + timestamp: 1641347076660 +- conda: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.18.3-py311h9ecbd09_0.conda sha256: 4af34cbcf4dda72aad779c8a12eb508aee6f98d0523c26174639a75ae31df180 md5: 385d54815a5d2e74e68374d77446030b depends: @@ -8972,16 +7063,13 @@ packages: - propcache >=0.2.1 - python >=3.11,<3.12.0a0 - python_abi 3.11.* *_cp311 + arch: x86_64 + platform: linux license: Apache-2.0 license_family: Apache size: 153749 timestamp: 1733428888714 -- kind: conda - name: yarl - version: 1.18.3 - build: py311ha879c10_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.18.3-py311ha879c10_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.18.3-py311ha879c10_0.conda sha256: c60d0e75b147dc836b497b2f7c773a2b2998821056614eead6aae84fbedc7416 md5: 049bc4ea1dd2a1db3a752fadbda1b55c depends: @@ -8992,17 +7080,30 @@ packages: - python >=3.11,<3.12.0a0 - python >=3.11,<3.12.0a0 *_cpython - python_abi 3.11.* *_cp311 + arch: aarch64 + platform: linux license: Apache-2.0 license_family: Apache size: 151968 timestamp: 1733429000649 -- kind: conda - name: zeromq - version: 4.3.5 - build: h3b0a872_7 - build_number: 7 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.18.3-py311h917b07b_0.conda + sha256: 2df31b9adcd55b29985935d0a23ae6069808e319c2c24bbe212cbd3f3dca71ed + md5: 134c0091a508239d35505d9ac74d4c0f + depends: + - __osx >=11.0 + - idna >=2.0 + - multidict >=4.0 + - propcache >=0.2.1 + - python >=3.11,<3.12.0a0 + - python >=3.11,<3.12.0a0 *_cpython + - python_abi 3.11.* *_cp311 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 144071 + timestamp: 1733429148299 +- conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda sha256: a4dc72c96848f764bb5a5176aa93dd1e9b9e52804137b99daeebba277b31ea10 md5: 3947a35e916fcc6b9825449affbf4214 depends: @@ -9011,17 +7112,13 @@ packages: - libgcc >=13 - libsodium >=1.0.20,<1.0.21.0a0 - libstdcxx >=13 + arch: x86_64 + platform: linux license: MPL-2.0 license_family: MOZILLA size: 335400 timestamp: 1731585026517 -- kind: conda - name: zeromq - version: 4.3.5 - build: h5efb499_7 - build_number: 7 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/zeromq-4.3.5-h5efb499_7.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zeromq-4.3.5-h5efb499_7.conda sha256: a6003096dc0570a86492040ba32b04ce7662b159600be2252b7a0dfb9414e21c md5: f2f3282559a4b87b7256ecafb4610107 depends: @@ -9029,17 +7126,13 @@ packages: - libgcc >=13 - libsodium >=1.0.20,<1.0.21.0a0 - libstdcxx >=13 + arch: aarch64 + platform: linux license: MPL-2.0 license_family: MOZILLA size: 371419 timestamp: 1731589490850 -- kind: conda - name: zeromq - version: 4.3.5 - build: hc1bb282_7 - build_number: 7 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda sha256: 9e585569fe2e7d3bea71972cd4b9f06b1a7ab8fa7c5139f92a31cbceecf25a8a md5: f7e6b65943cb73bce0143737fded08f1 depends: @@ -9047,18 +7140,13 @@ packages: - krb5 >=1.21.3,<1.22.0a0 - libcxx >=18 - libsodium >=1.0.20,<1.0.21.0a0 + arch: arm64 + platform: osx license: MPL-2.0 license_family: MOZILLA size: 281565 timestamp: 1731585108039 -- kind: conda - name: zipp - version: 3.21.0 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda sha256: 567c04f124525c97a096b65769834b7acb047db24b15a56888a322bf3966c3e1 md5: 0c3cc595284c5e8f0f9900a9b228a332 depends: @@ -9067,34 +7155,7 @@ packages: license_family: MIT size: 21809 timestamp: 1732827613585 -- kind: conda - name: zstandard - version: 0.23.0 - build: py311ha60cc69_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py311ha60cc69_1.conda - sha256: d2f2f1a408e2353fc61d2bf064313270be2260ee212fe827dcf3cfd3754f1354 - md5: 29d320d6450b2948740a9be3761b2e9d - depends: - - __osx >=11.0 - - cffi >=1.11 - - python >=3.11,<3.12.0a0 - - python >=3.11,<3.12.0a0 *_cpython - - python_abi 3.11.* *_cp311 - - zstd >=1.5.6,<1.5.7.0a0 - - zstd >=1.5.6,<1.6.0a0 - license: BSD-3-Clause - license_family: BSD - size: 332271 - timestamp: 1725305847224 -- kind: conda - name: zstandard - version: 0.23.0 - build: py311hbc35293_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py311hbc35293_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py311hbc35293_1.conda sha256: a5cf0eef1ffce0d710eb3dffcb07d9d5922d4f7a141abc96f6476b98600f718f md5: aec590674ba365e50ae83aa2d6e1efae depends: @@ -9105,17 +7166,13 @@ packages: - python_abi 3.11.* *_cp311 - zstd >=1.5.6,<1.5.7.0a0 - zstd >=1.5.6,<1.6.0a0 + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD size: 417923 timestamp: 1725305669690 -- kind: conda - name: zstandard - version: 0.23.0 - build: py311hd5293d8_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/zstandard-0.23.0-py311hd5293d8_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstandard-0.23.0-py311hd5293d8_1.conda sha256: 44c4c8e718f7f50c985d9b3de23760fb01987e6307301eef0bcfc26862094690 md5: 7a022310d8759b7d251717b09242ee13 depends: @@ -9126,53 +7183,63 @@ packages: - python_abi 3.11.* *_cp311 - zstd >=1.5.6,<1.5.7.0a0 - zstd >=1.5.6,<1.6.0a0 + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD size: 391826 timestamp: 1725305804278 -- kind: conda - name: zstd - version: 1.5.6 - build: h02f22dd_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.6-h02f22dd_0.conda - sha256: 484f9d0722c77685ae379fbff3ccd662af9ead7e59eb39cd6d0c677cdf25ff6c - md5: be8d5f8cf21aed237b8b182ea86b3dd6 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py311ha60cc69_1.conda + sha256: d2f2f1a408e2353fc61d2bf064313270be2260ee212fe827dcf3cfd3754f1354 + md5: 29d320d6450b2948740a9be3761b2e9d depends: - - libgcc-ng >=12 - - libstdcxx-ng >=12 - - libzlib >=1.2.13,<2.0.0a0 + - __osx >=11.0 + - cffi >=1.11 + - python >=3.11,<3.12.0a0 + - python >=3.11,<3.12.0a0 *_cpython + - python_abi 3.11.* *_cp311 + - zstd >=1.5.6,<1.5.7.0a0 + - zstd >=1.5.6,<1.6.0a0 + arch: arm64 + platform: osx license: BSD-3-Clause license_family: BSD - size: 539937 - timestamp: 1714723130243 -- kind: conda - name: zstd - version: 1.5.6 - build: ha6fb4c9_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda + size: 332271 + timestamp: 1725305847224 +- conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda sha256: c558b9cc01d9c1444031bd1ce4b9cff86f9085765f17627a6cd85fc623c8a02b md5: 4d056880988120e29d75bfff282e0f45 depends: - libgcc-ng >=12 - libstdcxx-ng >=12 - libzlib >=1.2.13,<2.0.0a0 + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD size: 554846 timestamp: 1714722996770 -- kind: conda - name: zstd - version: 1.5.6 - build: hb46c0d2_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.6-hb46c0d2_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.6-h02f22dd_0.conda + sha256: 484f9d0722c77685ae379fbff3ccd662af9ead7e59eb39cd6d0c677cdf25ff6c + md5: be8d5f8cf21aed237b8b182ea86b3dd6 + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 539937 + timestamp: 1714723130243 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.6-hb46c0d2_0.conda sha256: 2d4fd1ff7ee79cd954ca8e81abf11d9d49954dd1fef80f27289e2402ae9c2e09 md5: d96942c06c3e84bfcc5efb038724a7fd depends: - __osx >=11.0 - libzlib >=1.2.13,<2.0.0a0 + arch: arm64 + platform: osx license: BSD-3-Clause license_family: BSD size: 405089 diff --git a/examples/notebooks/magic.lock b/examples/notebooks/magic.lock index c0fbd109f5..fccb43a80c 100644 --- a/examples/notebooks/magic.lock +++ b/examples/notebooks/magic.lock @@ -1,4 +1,4 @@ -version: 5 +version: 6 environments: default: channels: @@ -167,13 +167,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/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-25.1.0.dev2025010817-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025010817-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025010817-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025010817-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011022-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025011022-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025011022-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011022-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.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025010817-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011022-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 @@ -217,7 +217,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-18.1.0-py312h7900ff3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-18.1.0-py312h01725c0_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.4-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.5-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.27.2-py312h12e396e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.7.1-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda @@ -246,9 +246,9 @@ environments: - 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.10-hb5b8611_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/safetensors-0.5.1-py312h12e396e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/safetensors-0.5.2-py312h12e396e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh0d859eb_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.8.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-h8bd8927_1.conda @@ -265,7 +265,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.48.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda @@ -279,7 +279,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.34.0-pyh31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.34.0-h31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/uvloop-0.21.0-py312h66e93f0_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/watchfiles-1.0.3-py312h12e396e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/watchfiles-1.0.4-py312h12e396e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda @@ -458,13 +458,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/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-25.1.0.dev2025010817-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025010817-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025010817-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025010817-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011022-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025011022-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025011022-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011022-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.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025010817-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011022-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 @@ -508,7 +508,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-18.1.0-py312h8025657_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-18.1.0-py312h66f7834_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.4-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.5-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pydantic-core-2.27.2-py312h8cbf658_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.7.1-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda @@ -537,9 +537,9 @@ environments: - 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.10-h5df210e_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/safetensors-0.5.1-py312h8cbf658_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/safetensors-0.5.2-py312h8cbf658_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh0d859eb_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.8.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-hd4fb6f5_1.conda @@ -556,7 +556,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py312h52516f5_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.48.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda @@ -570,7 +570,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.34.0-pyh31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.34.0-h31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/uvloop-0.21.0-py312hb2c0f52_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/watchfiles-1.0.3-py312h8cbf658_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/watchfiles-1.0.4-py312h8cbf658_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda @@ -741,13 +741,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-25.1.0.dev2025010817-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025010817-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025010817-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025010817-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011022-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025011022-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025011022-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011022-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.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025010817-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011022-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 @@ -791,7 +791,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-18.1.0-py312h1f38498_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-18.1.0-py312hc40f475_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.4-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.5-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.27.2-py312hcd83bfe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.7.1-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda @@ -821,9 +821,9 @@ environments: - 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.5.1-py312hcd83bfe_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/safetensors-0.5.2-py312hcd83bfe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh31c8845_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.8.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-h98b9ce2_1.conda @@ -840,7 +840,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.48.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda @@ -854,7 +854,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.34.0-pyh31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.34.0-h31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/uvloop-0.21.0-py312h0bf5046_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/watchfiles-1.0.3-py312hcd83bfe_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/watchfiles-1.0.4-py312hcd83bfe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda @@ -872,24 +872,16 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py312h15fbf35_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.6-hb46c0d2_0.conda packages: -- kind: conda - name: _libgcc_mutex - version: '0.1' - build: conda_forge - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 sha256: fe51de6107f9edc7aa4f786a70f4a883943bc9d39b3bb7307c04c41410990726 md5: d7c89558ba9fa0495403155b64376d81 + arch: x86_64 + platform: linux license: None size: 2562 timestamp: 1578324546067 -- kind: conda - name: _openmp_mutex - version: '4.5' - build: 2_gnu +- conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 build_number: 16 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 sha256: fbe2c5e56a653bebb982eda4876a9178aedfc2b545f25d0ce9c4c0b508253d22 md5: 73aaf86a425cc6e73fcf236a5a46396d depends: @@ -897,35 +889,27 @@ packages: - libgomp >=7.5.0 constrains: - openmp_impl 9999 + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD size: 23621 timestamp: 1650670423406 -- kind: conda - name: _openmp_mutex - version: '4.5' - build: 2_gnu +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2 build_number: 16 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2 sha256: 3702bef2f0a4d38bd8288bbe54aace623602a1343c2cfbefd3fa188e015bebf0 md5: 6168d71addc746e8f2b8d57dfd2edcea depends: - libgomp >=7.5.0 constrains: - openmp_impl 9999 + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD size: 23712 timestamp: 1650670790230 -- kind: conda - name: aiohappyeyeballs - version: 2.4.4 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_1.conda sha256: 95d4713e49ea92ae50cf42393683ede706b7875af5f7cb14c253438180afa732 md5: 296b403617bafa89df4971567af79013 depends: @@ -934,12 +918,7 @@ packages: license_family: PSF size: 19351 timestamp: 1733332029649 -- kind: conda - name: aiohttp - version: 3.11.11 - build: py312h178313f_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.11-py312h178313f_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.11-py312h178313f_0.conda sha256: 2e817805e8a4fed33f23f116ff5649f8651af693328e9ed82d9d11a951338693 md5: 8219afa093757bbe07b9825eb1973ed9 depends: @@ -954,65 +933,55 @@ packages: - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 - yarl >=1.17.0,<2.0 + arch: x86_64 + platform: linux license: MIT AND Apache-2.0 license_family: Apache size: 915358 timestamp: 1734597073870 -- kind: conda - name: aiohttp - version: 3.11.11 - build: py312h998013c_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.11-py312h998013c_0.conda - sha256: 446f078e7a7b892894d7f4851a278b7834ffb4f5632313646a55c3abe13690d4 - md5: c69c904691364cfb27d15aa7153e9c29 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.11-py312hcc812fe_0.conda + sha256: f28e81e458d19df4ca0002f8a92d7f647fa25e8179887a8676801dfe44edb1f2 + md5: 11fa88136d9bf39d2136b2378f7c10be depends: - - __osx >=11.0 - aiohappyeyeballs >=2.3.0 - aiosignal >=1.1.2 - attrs >=17.3.0 - frozenlist >=1.1.1 + - libgcc >=13 - multidict >=4.5,<7.0 - propcache >=0.2.0 - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 - yarl >=1.17.0,<2.0 + arch: aarch64 + platform: linux license: MIT AND Apache-2.0 license_family: Apache - size: 875711 - timestamp: 1734597277258 -- kind: conda - name: aiohttp - version: 3.11.11 - build: py312hcc812fe_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.11-py312hcc812fe_0.conda - sha256: f28e81e458d19df4ca0002f8a92d7f647fa25e8179887a8676801dfe44edb1f2 - md5: 11fa88136d9bf39d2136b2378f7c10be + size: 902422 + timestamp: 1734597104529 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.11-py312h998013c_0.conda + sha256: 446f078e7a7b892894d7f4851a278b7834ffb4f5632313646a55c3abe13690d4 + md5: c69c904691364cfb27d15aa7153e9c29 depends: + - __osx >=11.0 - aiohappyeyeballs >=2.3.0 - aiosignal >=1.1.2 - attrs >=17.3.0 - frozenlist >=1.1.1 - - libgcc >=13 - multidict >=4.5,<7.0 - propcache >=0.2.0 - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 - yarl >=1.17.0,<2.0 + arch: arm64 + platform: osx license: MIT AND Apache-2.0 license_family: Apache - size: 902422 - timestamp: 1734597104529 -- kind: conda - name: aiosignal - version: 1.3.2 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda + size: 875711 + timestamp: 1734597277258 +- conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda sha256: 7de8ced1918bbdadecf8e1c1c68237fe5709c097bd9e0d254f4cad118f4345d0 md5: 1a3981115a398535dbe3f6d5faae3d36 depends: @@ -1022,14 +991,7 @@ packages: license_family: APACHE size: 13229 timestamp: 1734342253061 -- kind: conda - name: annotated-types - version: 0.7.0 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda sha256: e0ea1ba78fbb64f17062601edda82097fcf815012cf52bb704150a2668110d48 md5: 2934f256a8acfe48f6ebb4fce6cde29c depends: @@ -1039,13 +1001,7 @@ packages: license_family: MIT size: 18074 timestamp: 1733247158254 -- kind: conda - name: anyio - version: 4.8.0 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/anyio-4.8.0-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.8.0-pyhd8ed1ab_0.conda sha256: f1455d2953e3eb6d71bc49881c8558d8e01888469dfd21061dd48afb6183e836 md5: 848d25bfbadf020ee4d4ba90e5668252 depends: @@ -1061,14 +1017,7 @@ packages: license_family: MIT size: 115305 timestamp: 1736174485476 -- kind: conda - name: appnope - version: 0.1.4 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/appnope-0.1.4-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/appnope-0.1.4-pyhd8ed1ab_1.conda sha256: 8f032b140ea4159806e4969a68b4a3c0a7cab1ad936eb958a2b5ffe5335e19bf md5: 54898d0f524c9dee622d44bbb081a8ab depends: @@ -1077,14 +1026,7 @@ packages: license_family: BSD size: 10076 timestamp: 1733332433806 -- kind: conda - name: argon2-cffi - version: 23.1.0 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_1.conda sha256: 7af62339394986bc470a7a231c7f37ad0173ffb41f6bc0e8e31b0be9e3b9d20f md5: a7ee488b71c30ada51c48468337b85ba depends: @@ -1097,32 +1039,7 @@ packages: license_family: MIT size: 18594 timestamp: 1733311166338 -- kind: conda - name: argon2-cffi-bindings - version: 21.2.0 - build: py312h024a12e_5 - build_number: 5 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/argon2-cffi-bindings-21.2.0-py312h024a12e_5.conda - sha256: 0e32ddd41f273f505956254d81ffadaf982ed1cb7dfd70d9251a8c5b705c7267 - md5: 6ccaeafe1a52b0d0e7ebfbf53a374649 - depends: - - __osx >=11.0 - - cffi >=1.0.1 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - license: MIT - license_family: MIT - size: 32838 - timestamp: 1725356954187 -- kind: conda - name: argon2-cffi-bindings - version: 21.2.0 - build: py312h66e93f0_5 - build_number: 5 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/argon2-cffi-bindings-21.2.0-py312h66e93f0_5.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/argon2-cffi-bindings-21.2.0-py312h66e93f0_5.conda sha256: 3cbc3b026f5c3f26de696ead10607db8d80cbb003d87669ac3b02e884f711978 md5: 1505fc57c305c0a3174ea7aae0a0db25 depends: @@ -1131,17 +1048,13 @@ packages: - libgcc >=13 - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux license: MIT license_family: MIT size: 34847 timestamp: 1725356749774 -- kind: conda - name: argon2-cffi-bindings - version: 21.2.0 - build: py312hb2c0f52_5 - build_number: 5 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/argon2-cffi-bindings-21.2.0-py312hb2c0f52_5.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/argon2-cffi-bindings-21.2.0-py312hb2c0f52_5.conda sha256: a1a0e246c70b738e20dc01785e6bc0e497c7dfc8e586d1db142e7d77f80e0dfa md5: c3b818a44ce51af3de80cf6523cfe216 depends: @@ -1150,18 +1063,28 @@ packages: - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux license: MIT license_family: MIT size: 36280 timestamp: 1725356972478 -- kind: conda - name: arrow - version: 1.3.0 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/argon2-cffi-bindings-21.2.0-py312h024a12e_5.conda + sha256: 0e32ddd41f273f505956254d81ffadaf982ed1cb7dfd70d9251a8c5b705c7267 + md5: 6ccaeafe1a52b0d0e7ebfbf53a374649 + depends: + - __osx >=11.0 + - cffi >=1.0.1 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 32838 + timestamp: 1725356954187 +- conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_1.conda sha256: c4b0bdb3d5dee50b60db92f99da3e4c524d5240aafc0a5fcc15e45ae2d1a3cd1 md5: 46b53236fdd990271b03c3978d4218a9 depends: @@ -1172,14 +1095,7 @@ packages: license_family: Apache size: 99951 timestamp: 1733584345583 -- kind: conda - name: asttokens - version: 3.0.0 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda sha256: 93b14414b3b3ed91e286e1cbe4e7a60c4e1b1c730b0814d1e452a8ac4b9af593 md5: 8f587de4bcf981e26228f268df374a9b depends: @@ -1190,14 +1106,7 @@ packages: license_family: Apache size: 28206 timestamp: 1733250564754 -- kind: conda - name: async-lru - version: 2.0.4 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.4-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.4-pyhd8ed1ab_1.conda sha256: 344157f396dfdc929d1dff8fe010abe173cd168d22a56648583e616495f2929e md5: 40c673c7d585623b8f1ee650c8734eb6 depends: @@ -1207,13 +1116,7 @@ packages: license_family: MIT size: 15318 timestamp: 1733584388228 -- kind: conda - name: attrs - version: 24.3.0 - build: pyh71513ae_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/attrs-24.3.0-pyh71513ae_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.3.0-pyh71513ae_0.conda sha256: 750186af694a7130eaf7119fbb56db0d2326d8995ad5b8eae23c622b85fea29a md5: 356927ace43302bf6f5926e2a58dae6a depends: @@ -1222,13 +1125,24 @@ packages: license_family: MIT size: 56354 timestamp: 1734348889193 -- kind: conda - name: aws-c-auth - version: 0.8.0 - build: h2cb9fb3_15 - build_number: 15 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-h2cb9fb3_15.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-hb921021_15.conda + sha256: 537006ad6d5097c134494166a6a1dc1451d5d050878d7b82cef498bfda40ba8a + md5: c79d50f64cffa5ad51ecc1a81057962f + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 107614 + timestamp: 1734021692519 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-h2cb9fb3_15.conda sha256: 4ce859dc9ff128bf5515604c43f33fb511386022fc9765ca077990f2a3f23df5 md5: e524686ace966acefb5b8cbc6e8b3daa depends: @@ -1238,17 +1152,13 @@ packages: - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - libgcc >=13 + arch: aarch64 + platform: linux license: Apache-2.0 license_family: Apache size: 111854 timestamp: 1734021745104 -- kind: conda - name: aws-c-auth - version: 0.8.0 - build: h8bc59a9_15 - build_number: 15 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-h8bc59a9_15.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-h8bc59a9_15.conda sha256: 0e41e56b662e76e024182adebcd91d09a4d38a83b35217c84e4967354dfff9a2 md5: f688b8893c20ad9477a19e7ce614014a depends: @@ -1258,38 +1168,13 @@ packages: - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 + arch: arm64 + platform: osx license: Apache-2.0 license_family: Apache size: 92507 timestamp: 1734021831330 -- kind: conda - name: aws-c-auth - version: 0.8.0 - build: hb921021_15 - build_number: 15 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-hb921021_15.conda - sha256: 537006ad6d5097c134494166a6a1dc1451d5d050878d7b82cef498bfda40ba8a - md5: c79d50f64cffa5ad51ecc1a81057962f - depends: - - __glibc >=2.17,<3.0.a0 - - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - aws-c-http >=0.9.2,<0.9.3.0a0 - - aws-c-io >=0.15.3,<0.15.4.0a0 - - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - - libgcc >=13 - license: Apache-2.0 - license_family: Apache - size: 107614 - timestamp: 1734021692519 -- kind: conda - name: aws-c-cal - version: 0.8.1 - build: h1a47875_3 - build_number: 3 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.1-h1a47875_3.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.1-h1a47875_3.conda sha256: 095ac824ea9303eff67e04090ae531d9eb33d2bf8f82eaade39b839c421e16e8 md5: 55a8561fdbbbd34f50f57d9be12ed084 depends: @@ -1297,162 +1182,110 @@ packages: - aws-c-common >=0.10.6,<0.10.7.0a0 - libgcc >=13 - openssl >=3.3.1,<4.0a0 + arch: x86_64 + platform: linux license: Apache-2.0 license_family: Apache size: 47601 timestamp: 1733991564405 -- kind: conda - name: aws-c-cal - version: 0.8.1 - build: h740c5af_3 - build_number: 3 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.1-h740c5af_3.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.1-h740c5af_3.conda sha256: c5c7961d48ca7320ed3560c036f7aa5244df4b85d9657f70aacc5faba3e1509a md5: 57ed2c445d7ef01d121b9bcea0522913 depends: - aws-c-common >=0.10.6,<0.10.7.0a0 - libgcc >=13 - openssl >=3.3.1,<4.0a0 + arch: aarch64 + platform: linux license: Apache-2.0 license_family: Apache size: 50036 timestamp: 1733991581303 -- kind: conda - name: aws-c-cal - version: 0.8.1 - build: hc8a0bd2_3 - build_number: 3 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.1-hc8a0bd2_3.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.1-hc8a0bd2_3.conda sha256: 1f44be36e1daa17b4b081debb8aee492d13571084f38b503ad13e869fef24fe4 md5: 8b0ce61384e5a33d2b301a64f3d22ac5 depends: - __osx >=11.0 - aws-c-common >=0.10.6,<0.10.7.0a0 - openssl >=3.3.1,<4.0a0 + arch: arm64 + platform: osx license: Apache-2.0 license_family: Apache size: 39925 timestamp: 1733991649383 -- kind: conda - name: aws-c-common - version: 0.10.6 - build: h5505292_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.10.6-h5505292_0.conda - sha256: 3bde135c8e74987c0f79ecd4fa17ec9cff0d658b3090168727ca1af3815ae57a - md5: 145e5b4c9702ed279d7d68aaf096f77d +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.10.6-hb9d3cd8_0.conda + sha256: 496e92f2150fdc351eacf6e236015deedb3d0d3114f8e5954341cbf9f3dda257 + md5: d7d4680337a14001b0e043e96529409b depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux license: Apache-2.0 license_family: Apache - size: 221863 - timestamp: 1733975576886 -- kind: conda - name: aws-c-common - version: 0.10.6 - build: h86ecc28_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-common-0.10.6-h86ecc28_0.conda + size: 236574 + timestamp: 1733975453350 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-common-0.10.6-h86ecc28_0.conda sha256: 57288ec5df35781bea8fc6a8c9099cad6695b747784fc1b8862a0f9e5b3bf5ab md5: fef806a0f6de853670c746bbece01966 depends: - libgcc >=13 + arch: aarch64 + platform: linux license: Apache-2.0 license_family: Apache size: 259031 timestamp: 1733975520465 -- kind: conda - name: aws-c-common - version: 0.10.6 - build: hb9d3cd8_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.10.6-hb9d3cd8_0.conda - sha256: 496e92f2150fdc351eacf6e236015deedb3d0d3114f8e5954341cbf9f3dda257 - md5: d7d4680337a14001b0e043e96529409b +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.10.6-h5505292_0.conda + sha256: 3bde135c8e74987c0f79ecd4fa17ec9cff0d658b3090168727ca1af3815ae57a + md5: 145e5b4c9702ed279d7d68aaf096f77d + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 221863 + timestamp: 1733975576886 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.3.0-h4e1184b_5.conda + sha256: 62ca84da83585e7814a40240a1e750b1563b2680b032a471464eccc001c3309b + md5: 3f4c1197462a6df2be6dc8241828fe93 depends: - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 - libgcc >=13 + arch: x86_64 + platform: linux license: Apache-2.0 license_family: Apache - size: 236574 - timestamp: 1733975453350 -- kind: conda - name: aws-c-compression - version: 0.3.0 - build: h0f0193d_5 - build_number: 5 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-compression-0.3.0-h0f0193d_5.conda + size: 19086 + timestamp: 1733991637424 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-compression-0.3.0-h0f0193d_5.conda sha256: 3f05d19f68ef800f33d44ea2a4211003124076516c8469abc7d432236344df53 md5: 3a1421d12435df5b4c412cc4c8fac64d depends: - aws-c-common >=0.10.6,<0.10.7.0a0 - libgcc >=13 + arch: aarch64 + platform: linux license: Apache-2.0 license_family: Apache size: 19740 timestamp: 1733991625201 -- kind: conda - name: aws-c-compression - version: 0.3.0 - build: h4e1184b_5 - build_number: 5 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.3.0-h4e1184b_5.conda - sha256: 62ca84da83585e7814a40240a1e750b1563b2680b032a471464eccc001c3309b - md5: 3f4c1197462a6df2be6dc8241828fe93 - depends: - - __glibc >=2.17,<3.0.a0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - libgcc >=13 - license: Apache-2.0 - license_family: Apache - size: 19086 - timestamp: 1733991637424 -- kind: conda - name: aws-c-compression - version: 0.3.0 - build: hc8a0bd2_5 - build_number: 5 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-compression-0.3.0-hc8a0bd2_5.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-compression-0.3.0-hc8a0bd2_5.conda sha256: 47b2813f652ce7e64ac442f771b2a5f7d4af4ad0d07ff51f6075ea80ed2e3f09 md5: a8b6c17732d14ed49d0e9b59c43186bc depends: - __osx >=11.0 - aws-c-common >=0.10.6,<0.10.7.0a0 + arch: arm64 + platform: osx license: Apache-2.0 license_family: Apache size: 18068 timestamp: 1733991869211 -- kind: conda - name: aws-c-event-stream - version: 0.5.0 - build: h54f970a_11 - build_number: 11 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.0-h54f970a_11.conda - sha256: f0667935f4e0d4c25e0e51da035640310b5ceeb8f723156734439bde8b848d7d - md5: ba41238f8e653998d7d2f42e3a8db054 - depends: - - __osx >=11.0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - aws-c-io >=0.15.3,<0.15.4.0a0 - - aws-checksums >=0.2.2,<0.2.3.0a0 - - libcxx >=18 - license: Apache-2.0 - license_family: Apache - size: 47078 - timestamp: 1734024749727 -- kind: conda - name: aws-c-event-stream - version: 0.5.0 - build: h7959bf6_11 - build_number: 11 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.0-h7959bf6_11.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.0-h7959bf6_11.conda sha256: 10d7240c7db0c941fb1a59c4f8ea6689a434b03309ee7b766fa15a809c553c02 md5: 9b3fb60fe57925a92f399bc3fc42eccf depends: @@ -1462,17 +1295,13 @@ packages: - aws-checksums >=0.2.2,<0.2.3.0a0 - libgcc >=13 - libstdcxx >=13 + arch: x86_64 + platform: linux license: Apache-2.0 license_family: Apache size: 54003 timestamp: 1734024480949 -- kind: conda - name: aws-c-event-stream - version: 0.5.0 - build: hcbd8f92_11 - build_number: 11 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-event-stream-0.5.0-hcbd8f92_11.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-event-stream-0.5.0-hcbd8f92_11.conda sha256: 79aa363c71c891a27496c0498f8d498b2ddc87b3ccb3b6c9da5b50b05936ebb8 md5: e0772c59af4243a9b2565baa5d79e5b6 depends: @@ -1481,17 +1310,44 @@ packages: - aws-checksums >=0.2.2,<0.2.3.0a0 - libgcc >=13 - libstdcxx >=13 + arch: aarch64 + platform: linux license: Apache-2.0 license_family: Apache size: 55207 timestamp: 1734024546663 -- kind: conda - name: aws-c-http - version: 0.9.2 - build: h3df160d_4 - build_number: 4 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.2-h3df160d_4.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.0-h54f970a_11.conda + sha256: f0667935f4e0d4c25e0e51da035640310b5ceeb8f723156734439bde8b848d7d + md5: ba41238f8e653998d7d2f42e3a8db054 + depends: + - __osx >=11.0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + - libcxx >=18 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 47078 + timestamp: 1734024749727 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.2-hefd7a92_4.conda + sha256: 4a330206bd51148f6c13ca0b7a4db40f29a46f090642ebacdeb88b8a4abd7f99 + md5: 5ce4df662d32d3123ea8da15571b6f51 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-compression >=0.3.0,<0.3.1.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 197731 + timestamp: 1734008380764 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.2-h3df160d_4.conda sha256: 3a1d2d332945306be9d49e569b95e4cc172d825f10e88715513a172f28ebb59e md5: 28f00aa7fd9556c4c461328cf146c20b depends: @@ -1500,17 +1356,13 @@ packages: - aws-c-compression >=0.3.0,<0.3.1.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - libgcc >=13 + arch: aarch64 + platform: linux license: Apache-2.0 license_family: Apache size: 190586 timestamp: 1734008442362 -- kind: conda - name: aws-c-http - version: 0.9.2 - build: h96aa502_4 - build_number: 4 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.2-h96aa502_4.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.2-h96aa502_4.conda sha256: 22e4737c8a885995b7c1ae1d79c1f6e78d489e16ec079615980fdde067aeaf76 md5: 495c93a4f08b17deb3c04894512330e6 depends: @@ -1519,37 +1371,28 @@ packages: - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-compression >=0.3.0,<0.3.1.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 + arch: arm64 + platform: osx license: Apache-2.0 license_family: Apache size: 152983 timestamp: 1734008451473 -- kind: conda - name: aws-c-http - version: 0.9.2 - build: hefd7a92_4 - build_number: 4 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.2-hefd7a92_4.conda - sha256: 4a330206bd51148f6c13ca0b7a4db40f29a46f090642ebacdeb88b8a4abd7f99 - md5: 5ce4df662d32d3123ea8da15571b6f51 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-h831e299_5.conda + sha256: 5920009b1c6f9a2bc131a36725251894e4b4773fce29c4b1065d4213ae337abe + md5: 80dd9f0ddf935290d1dc00ec75ff3023 depends: - __glibc >=2.17,<3.0.a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.6,<0.10.7.0a0 - - aws-c-compression >=0.3.0,<0.3.1.0a0 - - aws-c-io >=0.15.3,<0.15.4.0a0 - libgcc >=13 + - s2n >=1.5.10,<1.5.11.0a0 + arch: x86_64 + platform: linux license: Apache-2.0 license_family: Apache - size: 197731 - timestamp: 1734008380764 -- kind: conda - name: aws-c-io - version: 0.15.3 - build: h1a307af_5 - build_number: 5 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-h1a307af_5.conda + size: 157864 + timestamp: 1734433578570 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-h1a307af_5.conda sha256: 71f5bf891299f831dceaea12f926c393bf754569e5305387a88b77e1f94612d8 md5: da8ab0f3eeac93449ec3d531ede92caa depends: @@ -1557,53 +1400,26 @@ packages: - aws-c-common >=0.10.6,<0.10.7.0a0 - libgcc >=13 - s2n >=1.5.10,<1.5.11.0a0 + arch: aarch64 + platform: linux license: Apache-2.0 license_family: Apache size: 161889 timestamp: 1734433686109 -- kind: conda - name: aws-c-io - version: 0.15.3 - build: h831e299_5 - build_number: 5 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-h831e299_5.conda - sha256: 5920009b1c6f9a2bc131a36725251894e4b4773fce29c4b1065d4213ae337abe - md5: 80dd9f0ddf935290d1dc00ec75ff3023 - depends: - - __glibc >=2.17,<3.0.a0 - - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - libgcc >=13 - - s2n >=1.5.10,<1.5.11.0a0 - license: Apache-2.0 - license_family: Apache - size: 157864 - timestamp: 1734433578570 -- kind: conda - name: aws-c-io - version: 0.15.3 - build: haba67d1_5 - build_number: 5 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-haba67d1_5.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-haba67d1_5.conda sha256: c0a1a2b0750225ac3dc07fd258c88c2be866bf8ac67ba3d50bb4ecec852ff8ee md5: 4c5ff4134e76426a75b8c548984fa933 depends: - __osx >=11.0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.6,<0.10.7.0a0 + arch: arm64 + platform: osx license: Apache-2.0 license_family: Apache size: 135729 timestamp: 1734433832730 -- kind: conda - name: aws-c-mqtt - version: 0.11.0 - build: h11f4f37_12 - build_number: 12 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h11f4f37_12.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h11f4f37_12.conda sha256: 512d3969426152d9d5fd886e27b13706122dc3fa90eb08c37b0d51a33d7bb14a md5: 96c3e0221fa2da97619ee82faa341a73 depends: @@ -1612,35 +1428,13 @@ packages: - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - libgcc >=13 + arch: x86_64 + platform: linux license: Apache-2.0 license_family: Apache size: 194672 timestamp: 1734025626798 -- kind: conda - name: aws-c-mqtt - version: 0.11.0 - build: h24f418c_12 - build_number: 12 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h24f418c_12.conda - sha256: 96575ea1dd2a9ea94763882e40a66dcbff9c41f702bf37c9514c4c719b3c11dd - md5: c072045a6206f88015d02fcba1705ea1 - depends: - - __osx >=11.0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - aws-c-http >=0.9.2,<0.9.3.0a0 - - aws-c-io >=0.15.3,<0.15.4.0a0 - license: Apache-2.0 - license_family: Apache - size: 134371 - timestamp: 1734025379525 -- kind: conda - name: aws-c-mqtt - version: 0.11.0 - build: h5f50e26_12 - build_number: 12 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h5f50e26_12.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h5f50e26_12.conda sha256: ffeb9100cc8fd4093e1a6fdfd938bc4a396dd77480b7fb17aa42855a4d5e2c70 md5: 031ca33115d4b1eeb43f435d6215778c depends: @@ -1648,36 +1442,46 @@ packages: - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - libgcc >=13 + arch: aarch64 + platform: linux license: Apache-2.0 license_family: Apache size: 169516 timestamp: 1734025167885 -- kind: conda - name: aws-c-s3 - version: 0.7.7 - build: h1be5864_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.7-h1be5864_0.conda - sha256: 22966164d63808689fffd35945f57756c95337327e28099b5d77b29fc6a56ecc - md5: a37bba7acb62dd70492ee01eacca3b8f +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h24f418c_12.conda + sha256: 96575ea1dd2a9ea94763882e40a66dcbff9c41f702bf37c9514c4c719b3c11dd + md5: c072045a6206f88015d02fcba1705ea1 depends: - __osx >=11.0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 134371 + timestamp: 1734025379525 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.7-hf454442_0.conda + sha256: c2f205a7bf64c5f40eea373b3a0a7c363c9aa9246a13dd7f3d9c6a4434c4fe2d + md5: 947c82025693bebd557f782bb5d6b469 + depends: + - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 + - libgcc >=13 + - openssl >=3.4.0,<4.0a0 + arch: x86_64 + platform: linux license: Apache-2.0 license_family: Apache - size: 97598 - timestamp: 1734146239038 -- kind: conda - name: aws-c-s3 - version: 0.7.7 - build: h2080895_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.7-h2080895_0.conda + size: 114156 + timestamp: 1734146123386 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.7-h2080895_0.conda sha256: 20bc2dd60e6518d9b8215c2b652ab5c52ee8a997d3b9a5f69e2dabd28cbf26b2 md5: ae223efa63fbb4262a2d85c3ab3bc4f5 depends: @@ -1689,141 +1493,108 @@ packages: - aws-checksums >=0.2.2,<0.2.3.0a0 - libgcc >=13 - openssl >=3.4.0,<4.0a0 + arch: aarch64 + platform: linux license: Apache-2.0 license_family: Apache size: 117641 timestamp: 1734146239779 -- kind: conda - name: aws-c-s3 - version: 0.7.7 - build: hf454442_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.7-hf454442_0.conda - sha256: c2f205a7bf64c5f40eea373b3a0a7c363c9aa9246a13dd7f3d9c6a4434c4fe2d - md5: 947c82025693bebd557f782bb5d6b469 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.7-h1be5864_0.conda + sha256: 22966164d63808689fffd35945f57756c95337327e28099b5d77b29fc6a56ecc + md5: a37bba7acb62dd70492ee01eacca3b8f depends: - - __glibc >=2.17,<3.0.a0 + - __osx >=11.0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - - libgcc >=13 - - openssl >=3.4.0,<4.0a0 - license: Apache-2.0 - license_family: Apache - size: 114156 - timestamp: 1734146123386 -- kind: conda - name: aws-c-sdkutils - version: 0.2.1 - build: h0f0193d_4 - build_number: 4 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.1-h0f0193d_4.conda - sha256: ede8e782467c87ac80ceb9c9af9e917d121b7d8b8c698186d18e3cecd36f2210 - md5: 53e798d720dd78b78847a7b2fdb05fc9 - depends: - - aws-c-common >=0.10.6,<0.10.7.0a0 - - libgcc >=13 + arch: arm64 + platform: osx license: Apache-2.0 license_family: Apache - size: 58621 - timestamp: 1733994421495 -- kind: conda - name: aws-c-sdkutils - version: 0.2.1 - build: h4e1184b_4 - build_number: 4 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.1-h4e1184b_4.conda + size: 97598 + timestamp: 1734146239038 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.1-h4e1184b_4.conda sha256: df586f42210af1134b1c88ff4c278c3cb6d6c807c84eac48860062464b28554d md5: a5126a90e74ac739b00564a4c7ddcc36 depends: - __glibc >=2.17,<3.0.a0 - aws-c-common >=0.10.6,<0.10.7.0a0 - libgcc >=13 + arch: x86_64 + platform: linux license: Apache-2.0 license_family: Apache size: 56094 timestamp: 1733994449690 -- kind: conda - name: aws-c-sdkutils - version: 0.2.1 - build: hc8a0bd2_4 - build_number: 4 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.1-hc8a0bd2_4.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.1-h0f0193d_4.conda + sha256: ede8e782467c87ac80ceb9c9af9e917d121b7d8b8c698186d18e3cecd36f2210 + md5: 53e798d720dd78b78847a7b2fdb05fc9 + depends: + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 58621 + timestamp: 1733994421495 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.1-hc8a0bd2_4.conda sha256: de98343ce42d2e569b3380292d20f47bf39bda08aadabcbb8e650d3f38fd742f md5: 22f72f8cd7ead211304ac17d337d96e0 depends: - __osx >=11.0 - aws-c-common >=0.10.6,<0.10.7.0a0 + arch: arm64 + platform: osx license: Apache-2.0 license_family: Apache size: 49664 timestamp: 1733994553014 -- kind: conda - name: aws-checksums - version: 0.2.2 - build: h0f0193d_4 - build_number: 4 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h0f0193d_4.conda - sha256: 9f1e3635a587bcf92b61d88c7af7d24cd89c147c6d0ae58afbde08e65bcf48da - md5: 3bd35b0adab3d743f09e0252cc441d6b - depends: - - aws-c-common >=0.10.6,<0.10.7.0a0 - - libgcc >=13 - license: Apache-2.0 - license_family: Apache - size: 72154 - timestamp: 1733994384415 -- kind: conda - name: aws-checksums - version: 0.2.2 - build: h4e1184b_4 - build_number: 4 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-h4e1184b_4.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-h4e1184b_4.conda sha256: 1ed9a332d06ad595694907fad2d6d801082916c27cd5076096fda4061e6d24a8 md5: 74e8c3e4df4ceae34aa2959df4b28101 depends: - __glibc >=2.17,<3.0.a0 - aws-c-common >=0.10.6,<0.10.7.0a0 - libgcc >=13 + arch: x86_64 + platform: linux license: Apache-2.0 license_family: Apache size: 72762 timestamp: 1733994347547 -- kind: conda - name: aws-checksums - version: 0.2.2 - build: hc8a0bd2_4 - build_number: 4 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-hc8a0bd2_4.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h0f0193d_4.conda + sha256: 9f1e3635a587bcf92b61d88c7af7d24cd89c147c6d0ae58afbde08e65bcf48da + md5: 3bd35b0adab3d743f09e0252cc441d6b + depends: + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 72154 + timestamp: 1733994384415 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-hc8a0bd2_4.conda sha256: 215086d95e8ff1d3fcb0197ada116cc9d7db1fdae7573f5e810d20fa9215b47c md5: e70e88a357a3749b67679c0788c5b08a depends: - __osx >=11.0 - aws-c-common >=0.10.6,<0.10.7.0a0 + arch: arm64 + platform: osx license: Apache-2.0 license_family: Apache size: 70186 timestamp: 1733994496998 -- kind: conda - name: aws-crt-cpp - version: 0.29.7 - build: h19a973c_7 - build_number: 7 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.7-h19a973c_7.conda - sha256: 8269e6746eb3a5d15b732a3983888bf98dfc1f6594e95250fc8d16b43cfd5ff9 - md5: 95714136bef3e917bd5a2942d4682b20 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.7-hd92328a_7.conda + sha256: 094cd81f1e5ba713e9e7a272ee52b5dde3ccc4842ea90f19c0354a00bbdac3d9 + md5: 02b95564257d5c3db9c06beccf711f95 depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.6,<0.10.7.0a0 @@ -1833,18 +1604,15 @@ packages: - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - aws-c-s3 >=0.7.7,<0.7.8.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - - libcxx >=18 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux license: Apache-2.0 license_family: Apache - size: 236249 - timestamp: 1734178020924 -- kind: conda - name: aws-crt-cpp - version: 0.29.7 - build: h8a4e35f_7 - build_number: 7 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.7-h8a4e35f_7.conda + size: 354703 + timestamp: 1734177883319 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.7-h8a4e35f_7.conda sha256: 5ba9188e0cb4e3faff9bc96774febb040aa3b802aedba29d847e00e7b5eab84e md5: d77a9e3d7ce15399903e92825fd651b5 depends: @@ -1859,21 +1627,17 @@ packages: - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - libgcc >=13 - libstdcxx >=13 + arch: aarch64 + platform: linux license: Apache-2.0 license_family: Apache size: 283154 timestamp: 1734177845248 -- kind: conda - name: aws-crt-cpp - version: 0.29.7 - build: hd92328a_7 - build_number: 7 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.7-hd92328a_7.conda - sha256: 094cd81f1e5ba713e9e7a272ee52b5dde3ccc4842ea90f19c0354a00bbdac3d9 - md5: 02b95564257d5c3db9c06beccf711f95 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.7-h19a973c_7.conda + sha256: 8269e6746eb3a5d15b732a3983888bf98dfc1f6594e95250fc8d16b43cfd5ff9 + md5: 95714136bef3e917bd5a2942d4682b20 depends: - - __glibc >=2.17,<3.0.a0 + - __osx >=11.0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.6,<0.10.7.0a0 @@ -1883,22 +1647,18 @@ packages: - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - aws-c-s3 >=0.7.7,<0.7.8.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - - libgcc >=13 - - libstdcxx >=13 + - libcxx >=18 + arch: arm64 + platform: osx license: Apache-2.0 license_family: Apache - size: 354703 - timestamp: 1734177883319 -- kind: conda - name: aws-sdk-cpp - version: 1.11.458 - build: h849ce1a_4 - build_number: 4 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h849ce1a_4.conda - sha256: 51b9e9df8cbab4a13a1b9d39d6ef5ed162aaa29c09a745810e00bbe92e1045c1 - md5: cda7747f4398be8d1fb37362815917a7 + size: 236249 + timestamp: 1734178020924 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-hc430e4a_4.conda + sha256: 2dc09f6f9c49127b5f96e7535b64a9c521b944d76d8b7d03d48ae80257ac1cea + md5: aeefac461bea1f126653c1285cf5af08 depends: + - __glibc >=2.17,<3.0.a0 - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 @@ -1908,21 +1668,16 @@ packages: - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - openssl >=3.4.0,<4.0a0 + arch: x86_64 + platform: linux license: Apache-2.0 license_family: Apache - size: 2920625 - timestamp: 1734093552712 -- kind: conda - name: aws-sdk-cpp - version: 1.11.458 - build: hc430e4a_4 - build_number: 4 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-hc430e4a_4.conda - sha256: 2dc09f6f9c49127b5f96e7535b64a9c521b944d76d8b7d03d48ae80257ac1cea - md5: aeefac461bea1f126653c1285cf5af08 + size: 3060561 + timestamp: 1734093737431 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h849ce1a_4.conda + sha256: 51b9e9df8cbab4a13a1b9d39d6ef5ed162aaa29c09a745810e00bbe92e1045c1 + md5: cda7747f4398be8d1fb37362815917a7 depends: - - __glibc >=2.17,<3.0.a0 - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 @@ -1932,17 +1687,13 @@ packages: - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - openssl >=3.4.0,<4.0a0 + arch: aarch64 + platform: linux license: Apache-2.0 license_family: Apache - size: 3060561 - timestamp: 1734093737431 -- kind: conda - name: aws-sdk-cpp - version: 1.11.458 - build: he0ff2e4_4 - build_number: 4 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-he0ff2e4_4.conda + size: 2920625 + timestamp: 1734093552712 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-he0ff2e4_4.conda sha256: 535b970aaa13be45f8cab8205c59f044b17364111c41a227f061775a5c834e18 md5: 0981ed87098b149bdb7d99a4a3fd0e58 depends: @@ -1955,51 +1706,42 @@ packages: - libcxx >=18 - libzlib >=1.3.1,<2.0a0 - openssl >=3.4.0,<4.0a0 + arch: arm64 + platform: osx license: Apache-2.0 license_family: Apache size: 2826534 timestamp: 1734094018287 -- kind: conda - name: azure-core-cpp - version: 1.14.0 - build: h1887c18_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-core-cpp-1.14.0-h1887c18_0.conda - sha256: 8967b3ccee4d74e61f6ec82dd8efb9deb854ee7ba012dfe767b7a92e0ac77724 - md5: e0c3a906a41be769f0ae20ca3e31cfc0 +- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda + sha256: fe07debdb089a3db17f40a7f20d283d75284bb4fc269ef727b8ba6fc93f7cb5a + md5: 0a8838771cc2e985cd295e01ae83baf1 depends: + - __glibc >=2.17,<3.0.a0 - libcurl >=8.10.1,<9.0a0 - libgcc >=13 - libstdcxx >=13 - openssl >=3.3.2,<4.0a0 + arch: x86_64 + platform: linux license: MIT license_family: MIT - size: 338650 - timestamp: 1728055589907 -- kind: conda - name: azure-core-cpp - version: 1.14.0 - build: h5cfcd09_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda - sha256: fe07debdb089a3db17f40a7f20d283d75284bb4fc269ef727b8ba6fc93f7cb5a - md5: 0a8838771cc2e985cd295e01ae83baf1 + size: 345117 + timestamp: 1728053909574 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-core-cpp-1.14.0-h1887c18_0.conda + sha256: 8967b3ccee4d74e61f6ec82dd8efb9deb854ee7ba012dfe767b7a92e0ac77724 + md5: e0c3a906a41be769f0ae20ca3e31cfc0 depends: - - __glibc >=2.17,<3.0.a0 - libcurl >=8.10.1,<9.0a0 - libgcc >=13 - libstdcxx >=13 - openssl >=3.3.2,<4.0a0 + arch: aarch64 + platform: linux license: MIT license_family: MIT - size: 345117 - timestamp: 1728053909574 -- kind: conda - name: azure-core-cpp - version: 1.14.0 - build: hd50102c_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.14.0-hd50102c_0.conda + size: 338650 + timestamp: 1728055589907 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.14.0-hd50102c_0.conda sha256: f5b91329ed59ffc0be8747784c6e4cc7e56250c54032883a83bc11808ef6a87e md5: f093a11dcf3cdcca010b20a818fcc6dc depends: @@ -2007,16 +1749,13 @@ packages: - libcurl >=8.10.1,<9.0a0 - libcxx >=17 - openssl >=3.3.2,<4.0a0 + arch: arm64 + platform: osx license: MIT license_family: MIT size: 294299 timestamp: 1728054014060 -- kind: conda - name: azure-identity-cpp - version: 1.10.0 - build: h113e628_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.10.0-h113e628_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.10.0-h113e628_0.conda sha256: 286b31616c191486626cb49e9ceb5920d29394b9e913c23adb7eb637629ba4de md5: 73f73f60854f325a55f1d31459f2ab73 depends: @@ -2025,16 +1764,13 @@ packages: - libgcc >=13 - libstdcxx >=13 - openssl >=3.3.2,<4.0a0 + arch: x86_64 + platform: linux license: MIT license_family: MIT size: 232351 timestamp: 1728486729511 -- kind: conda - name: azure-identity-cpp - version: 1.10.0 - build: h47b0b28_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-identity-cpp-1.10.0-h47b0b28_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-identity-cpp-1.10.0-h47b0b28_0.conda sha256: 1c72423b9beba167d2f01b80dc204da77240a8266f1edb3d89510c852b300d69 md5: 94e73a7877743a85c57091d8afab2348 depends: @@ -2042,16 +1778,13 @@ packages: - libgcc >=13 - libstdcxx >=13 - openssl >=3.3.2,<4.0a0 + arch: aarch64 + platform: linux license: MIT license_family: MIT size: 217132 timestamp: 1728488096615 -- kind: conda - name: azure-identity-cpp - version: 1.10.0 - build: hc602bab_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.10.0-hc602bab_0.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.10.0-hc602bab_0.conda sha256: bde446b916fff5150606f8ed3e6058ffc55a3aa72381e46f1ab346590b1ae40a md5: d7b71593a937459f2d4b67e1a4727dc2 depends: @@ -2059,54 +1792,42 @@ packages: - azure-core-cpp >=1.14.0,<1.14.1.0a0 - libcxx >=17 - openssl >=3.3.2,<4.0a0 + arch: arm64 + platform: osx license: MIT license_family: MIT size: 166907 timestamp: 1728486882502 -- kind: conda - name: azure-storage-blobs-cpp - version: 12.13.0 - build: h185ecfd_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-blobs-cpp-12.13.0-h185ecfd_1.conda - sha256: 280ec70009a92626054f58e45b168fce393e71a9710587488bd8401628cda481 - md5: 221e1e5ecb2643e113f32b3229d5ba33 +- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.13.0-h3cf044e_1.conda + sha256: 2606260e5379eed255bcdc6adc39b93fb31477337bcd911c121fc43cd29bf394 + md5: 7eb66060455c7a47d9dcdbfa9f46579b depends: + - __glibc >=2.17,<3.0.a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 - libgcc >=13 - libstdcxx >=13 + arch: x86_64 + platform: linux license: MIT license_family: MIT - size: 502934 - timestamp: 1728580241002 -- kind: conda - name: azure-storage-blobs-cpp - version: 12.13.0 - build: h3cf044e_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.13.0-h3cf044e_1.conda - sha256: 2606260e5379eed255bcdc6adc39b93fb31477337bcd911c121fc43cd29bf394 - md5: 7eb66060455c7a47d9dcdbfa9f46579b + size: 549342 + timestamp: 1728578123088 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-blobs-cpp-12.13.0-h185ecfd_1.conda + sha256: 280ec70009a92626054f58e45b168fce393e71a9710587488bd8401628cda481 + md5: 221e1e5ecb2643e113f32b3229d5ba33 depends: - - __glibc >=2.17,<3.0.a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 - libgcc >=13 - libstdcxx >=13 + arch: aarch64 + platform: linux license: MIT license_family: MIT - size: 549342 - timestamp: 1728578123088 -- kind: conda - name: azure-storage-blobs-cpp - version: 12.13.0 - build: h7585a09_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-blobs-cpp-12.13.0-h7585a09_1.conda + size: 502934 + timestamp: 1728580241002 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-blobs-cpp-12.13.0-h7585a09_1.conda sha256: 08d52d130addc0fb55d5ba10d9fa483e39be25d69bac7f4c676c2c3069207590 md5: 704238ef05d46144dae2e6b5853df8bc depends: @@ -2114,56 +1835,44 @@ packages: - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 - libcxx >=17 + arch: arm64 + platform: osx license: MIT license_family: MIT size: 438636 timestamp: 1728578216193 -- kind: conda - name: azure-storage-common-cpp - version: 12.8.0 - build: h1b94036_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-common-cpp-12.8.0-h1b94036_1.conda - sha256: 146e76aac169e3dbdce5d3b142b7930ac643795c765e7655d1989905ec7d3231 - md5: 793b1080ab2d958980f137a8643cd6e8 +- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-common-cpp-12.8.0-h736e048_1.conda + sha256: 273475f002b091b66ce7366da04bf164c3732c03f8692ab2ee2d23335b6a82ba + md5: 13de36be8de3ae3f05ba127631599213 depends: + - __glibc >=2.17,<3.0.a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - libgcc >=13 - libstdcxx >=13 - libxml2 >=2.12.7,<3.0a0 - openssl >=3.3.2,<4.0a0 + arch: x86_64 + platform: linux license: MIT license_family: MIT - size: 140832 - timestamp: 1728565334900 -- kind: conda - name: azure-storage-common-cpp - version: 12.8.0 - build: h736e048_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-common-cpp-12.8.0-h736e048_1.conda - sha256: 273475f002b091b66ce7366da04bf164c3732c03f8692ab2ee2d23335b6a82ba - md5: 13de36be8de3ae3f05ba127631599213 + size: 149312 + timestamp: 1728563338704 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-common-cpp-12.8.0-h1b94036_1.conda + sha256: 146e76aac169e3dbdce5d3b142b7930ac643795c765e7655d1989905ec7d3231 + md5: 793b1080ab2d958980f137a8643cd6e8 depends: - - __glibc >=2.17,<3.0.a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - libgcc >=13 - libstdcxx >=13 - libxml2 >=2.12.7,<3.0a0 - openssl >=3.3.2,<4.0a0 + arch: aarch64 + platform: linux license: MIT license_family: MIT - size: 149312 - timestamp: 1728563338704 -- kind: conda - name: azure-storage-common-cpp - version: 12.8.0 - build: h9ca1f76_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-common-cpp-12.8.0-h9ca1f76_1.conda + size: 140832 + timestamp: 1728565334900 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-common-cpp-12.8.0-h9ca1f76_1.conda sha256: 77ab04e8fe5636a2de9c718f72a43645f7502cd208868c8a91ffba385547d585 md5: 7a187cd7b1445afc80253bb186a607cc depends: @@ -2172,56 +1881,44 @@ packages: - libcxx >=17 - libxml2 >=2.12.7,<3.0a0 - openssl >=3.3.2,<4.0a0 + arch: arm64 + platform: osx license: MIT license_family: MIT size: 121278 timestamp: 1728563418777 -- kind: conda - name: azure-storage-files-datalake-cpp - version: 12.12.0 - build: h37d6d07_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-files-datalake-cpp-12.12.0-h37d6d07_1.conda - sha256: 4079c617a75682e49bae63670d58fd6078ccfbbe55ca1f994acab3a74ab6bbcc - md5: b724f3b4b7f4e9b36c58cbe3ed8610a2 +- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-files-datalake-cpp-12.12.0-ha633028_1.conda + sha256: 5371e4f3f920933bb89b926a85a67f24388227419abd6e99f6086481e5e8d5f2 + md5: 7c1980f89dd41b097549782121a73490 depends: + - __glibc >=2.17,<3.0.a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 - libgcc >=13 - libstdcxx >=13 + arch: x86_64 + platform: linux license: MIT license_family: MIT - size: 260547 - timestamp: 1728730924071 -- kind: conda - name: azure-storage-files-datalake-cpp - version: 12.12.0 - build: ha633028_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-files-datalake-cpp-12.12.0-ha633028_1.conda - sha256: 5371e4f3f920933bb89b926a85a67f24388227419abd6e99f6086481e5e8d5f2 - md5: 7c1980f89dd41b097549782121a73490 + size: 287366 + timestamp: 1728729530295 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-files-datalake-cpp-12.12.0-h37d6d07_1.conda + sha256: 4079c617a75682e49bae63670d58fd6078ccfbbe55ca1f994acab3a74ab6bbcc + md5: b724f3b4b7f4e9b36c58cbe3ed8610a2 depends: - - __glibc >=2.17,<3.0.a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 - libgcc >=13 - libstdcxx >=13 + arch: aarch64 + platform: linux license: MIT license_family: MIT - size: 287366 - timestamp: 1728729530295 -- kind: conda - name: azure-storage-files-datalake-cpp - version: 12.12.0 - build: hcdd55da_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-files-datalake-cpp-12.12.0-hcdd55da_1.conda + size: 260547 + timestamp: 1728730924071 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-files-datalake-cpp-12.12.0-hcdd55da_1.conda sha256: f48523f8aa0b5b80f45a92f0556b388dd96f44ac2dc2f44a01d08c1822eec97d md5: c49fbc5233fcbaa86391162ff1adef38 depends: @@ -2230,18 +1927,13 @@ packages: - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 - libcxx >=17 + arch: arm64 + platform: osx license: MIT license_family: MIT size: 196032 timestamp: 1728729672889 -- kind: conda - name: babel - version: 2.16.0 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/babel-2.16.0-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.16.0-pyhd8ed1ab_1.conda sha256: f6205d3a62e87447e06e98d911559be0208d824976d77ab092796c9176611fcb md5: 3e23f7db93ec14c80525257d8affac28 depends: @@ -2251,14 +1943,7 @@ packages: license_family: BSD size: 6551057 timestamp: 1733236466015 -- kind: conda - name: backoff - version: 2.2.1 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/backoff-2.2.1-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/backoff-2.2.1-pyhd8ed1ab_1.conda sha256: f334115c6b0c6c2cd0d28595365f205ec7eaa60bcc5ff91a75d7245f728be820 md5: a38b801f2bcc12af80c2e02a9e4ce7d9 depends: @@ -2267,14 +1952,7 @@ packages: license_family: MIT size: 18816 timestamp: 1733771192649 -- kind: conda - name: beautifulsoup4 - version: 4.12.3 - build: pyha770c72_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.12.3-pyha770c72_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.12.3-pyha770c72_1.conda sha256: fca842ab7be052eea1037ebee17ac25cc79c626382dd2187b5c6e007b9d9f65f md5: d48f7e9fdec44baf6d1da416fe402b04 depends: @@ -2284,14 +1962,7 @@ packages: license_family: MIT size: 118042 timestamp: 1733230951790 -- kind: conda - name: bleach - version: 6.2.0 - build: pyhd8ed1ab_3 - build_number: 3 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyhd8ed1ab_3.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyhd8ed1ab_3.conda sha256: 9278622f54b6b4bce5d73663b282a8ab35d1b331d6ff92f4112906a526039827 md5: b33551d9bac06d754762e8ccb3c4df03 depends: @@ -2303,14 +1974,7 @@ packages: license_family: Apache size: 132550 timestamp: 1736148590971 -- kind: conda - name: bleach-with-css - version: 6.2.0 - build: hd8ed1ab_3 - build_number: 3 - subdir: noarch - noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.2.0-hd8ed1ab_3.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.2.0-hd8ed1ab_3.conda sha256: 8161cf35253f7646a1fd39f90abbcc6cb69248b8fdff61cfffce4cc8448f8c02 md5: e250a492fc70bf604737328dbe02846c depends: @@ -2318,13 +1982,7 @@ packages: - tinycss2 size: 5745 timestamp: 1736148591923 -- kind: conda - name: brotli-python - version: 1.1.0 - build: py312h2ec8cdc_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py312h2ec8cdc_2.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py312h2ec8cdc_2.conda sha256: f2a59ccd20b4816dea9a2a5cb917eb69728271dbf1aeab4e1b7e609330a50b6f md5: b0b867af6fc74b2a0aa206da29c0f3cf depends: @@ -2335,17 +1993,13 @@ packages: - python_abi 3.12.* *_cp312 constrains: - libbrotlicommon 1.1.0 hb9d3cd8_2 + arch: x86_64 + platform: linux license: MIT license_family: MIT size: 349867 timestamp: 1725267732089 -- kind: conda - name: brotli-python - version: 1.1.0 - build: py312h6f74592_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/brotli-python-1.1.0-py312h6f74592_2.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/brotli-python-1.1.0-py312h6f74592_2.conda sha256: 9736bf660a0e4260c68f81d2635b51067f817813e6490ac9e8abd9a835dcbf6d md5: e1e9727063057168d95f27a032acd0a4 depends: @@ -2356,17 +2010,13 @@ packages: - python_abi 3.12.* *_cp312 constrains: - libbrotlicommon 1.1.0 h86ecc28_2 + arch: aarch64 + platform: linux license: MIT license_family: MIT size: 356878 timestamp: 1725267878508 -- kind: conda - name: brotli-python - version: 1.1.0 - build: py312hde4cb15_2 - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py312hde4cb15_2.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py312hde4cb15_2.conda sha256: 254b411fa78ccc226f42daf606772972466f93e9bc6895eabb4cfda22f5178af md5: a83c2ef76ccb11bc2349f4f17696b15d depends: @@ -2377,140 +2027,106 @@ packages: - python_abi 3.12.* *_cp312 constrains: - libbrotlicommon 1.1.0 hd74edd7_2 + arch: arm64 + platform: osx license: MIT license_family: MIT size: 339360 timestamp: 1725268143995 -- kind: conda - name: bzip2 - version: 1.0.8 - build: h4bc722e_7 - build_number: 7 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda sha256: 5ced96500d945fb286c9c838e54fa759aa04a7129c59800f0846b4335cee770d md5: 62ee74e96c5ebb0af99386de58cf9553 depends: - __glibc >=2.17,<3.0.a0 - libgcc-ng >=12 + arch: x86_64 + platform: linux license: bzip2-1.0.6 license_family: BSD size: 252783 timestamp: 1720974456583 -- kind: conda - name: bzip2 - version: 1.0.8 - build: h68df207_7 - build_number: 7 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h68df207_7.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h68df207_7.conda sha256: 2258b0b33e1cb3a9852d47557984abb6e7ea58e3d7f92706ec1f8e879290c4cb md5: 56398c28220513b9ea13d7b450acfb20 depends: - libgcc-ng >=12 + arch: aarch64 + platform: linux license: bzip2-1.0.6 license_family: BSD size: 189884 timestamp: 1720974504976 -- kind: conda - name: bzip2 - version: 1.0.8 - build: h99b78c6_7 - build_number: 7 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda sha256: adfa71f158cbd872a36394c56c3568e6034aa55c623634b37a4836bd036e6b91 md5: fc6948412dbbbe9a4c9ddbbcfe0a79ab depends: - __osx >=11.0 + arch: arm64 + platform: osx license: bzip2-1.0.6 license_family: BSD size: 122909 timestamp: 1720974522888 -- kind: conda - name: c-ares - version: 1.34.4 - build: h5505292_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.4-h5505292_0.conda - sha256: 09c0c8476e50b2955f474a4a1c17c4c047dd52993b5366b6ea8e968e583b921f - md5: c1c999a38a4303b29d75c636eaa13cf9 +- conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.4-hb9d3cd8_0.conda + sha256: d4f28d87b6339b94f74762c0076e29c8ef8ddfff51a564a92da2843573c18320 + md5: e2775acf57efd5af15b8e3d1d74d72d3 depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux license: MIT license_family: MIT - size: 179496 - timestamp: 1734208291879 -- kind: conda - name: c-ares - version: 1.34.4 - build: h86ecc28_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/c-ares-1.34.4-h86ecc28_0.conda + size: 206085 + timestamp: 1734208189009 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/c-ares-1.34.4-h86ecc28_0.conda sha256: 1187a41d4bb2afe02cb18690682edc98d1e9f5e0ccda638d8704a75ea1875bbe md5: 356da36f35d36dcba16e43f1589d4e39 depends: - libgcc >=13 + arch: aarch64 + platform: linux license: MIT license_family: MIT size: 215979 timestamp: 1734208193181 -- kind: conda - name: c-ares - version: 1.34.4 - build: hb9d3cd8_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.4-hb9d3cd8_0.conda - sha256: d4f28d87b6339b94f74762c0076e29c8ef8ddfff51a564a92da2843573c18320 - md5: e2775acf57efd5af15b8e3d1d74d72d3 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.4-h5505292_0.conda + sha256: 09c0c8476e50b2955f474a4a1c17c4c047dd52993b5366b6ea8e968e583b921f + md5: c1c999a38a4303b29d75c636eaa13cf9 depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 + - __osx >=11.0 + arch: arm64 + platform: osx license: MIT license_family: MIT - size: 206085 - timestamp: 1734208189009 -- kind: conda - name: ca-certificates - version: 2024.12.14 - build: hbcca054_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2024.12.14-hbcca054_0.conda + size: 179496 + timestamp: 1734208291879 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2024.12.14-hbcca054_0.conda sha256: 1afd7274cbc9a334d6d0bc62fa760acc7afdaceb0b91a8df370ec01fd75dc7dd md5: 720523eb0d6a9b0f6120c16b2aa4e7de + arch: x86_64 + platform: linux license: ISC size: 157088 timestamp: 1734208393264 -- kind: conda - name: ca-certificates - version: 2024.12.14 - build: hcefe29a_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2024.12.14-hcefe29a_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2024.12.14-hcefe29a_0.conda sha256: ad7b43211051332a5a4e788bb4619a2d0ecb5be73e0f76be17f733a87d7effd1 md5: 83b4ad1e6dc14df5891f3fcfdeb44351 + arch: aarch64 + platform: linux license: ISC size: 157096 timestamp: 1734209301744 -- kind: conda - name: ca-certificates - version: 2024.12.14 - build: hf0a4a13_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2024.12.14-hf0a4a13_0.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2024.12.14-hf0a4a13_0.conda sha256: 256be633fd0882ccc1a7a32bc278547e1703f85082c0789a87a603ee3ab8fb82 md5: 7cb381a6783d91902638e4ed1ebd478e + arch: arm64 + platform: osx license: ISC size: 157091 timestamp: 1734208344343 -- kind: conda - name: cached-property - version: 1.5.2 - build: hd8ed1ab_1 - build_number: 1 - subdir: noarch +- conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 sha256: 561e6660f26c35d137ee150187d89767c988413c978e1b712d53f27ddf70ea17 md5: 9b347a7ec10940d3f7941ff6c460b551 depends: @@ -2519,14 +2135,7 @@ packages: license_family: BSD size: 4134 timestamp: 1615209571450 -- kind: conda - name: cached_property - version: 1.5.2 - build: pyha770c72_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 sha256: 6dbf7a5070cc43d90a1e4c2ec0c541c69d8e30a0e25f50ce9f6e4a432e42c5d7 md5: 576d629e47797577ab0f1b351297ef4a depends: @@ -2535,13 +2144,7 @@ packages: license_family: BSD size: 11065 timestamp: 1615209567874 -- kind: conda - name: certifi - version: 2024.12.14 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.12.14-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.12.14-pyhd8ed1ab_0.conda sha256: 048c16a9cbcb1fbad02083414d3bc7c1d0eea4b39aee6aa6bf8d1d5089ca8bad md5: 6feb87357ecd66733be3279f16a8c400 depends: @@ -2549,12 +2152,7 @@ packages: license: ISC size: 161642 timestamp: 1734380604767 -- kind: conda - name: cffi - version: 1.17.1 - build: py312h06ac9bb_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py312h06ac9bb_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py312h06ac9bb_0.conda sha256: cba6ea83c4b0b4f5b5dc59cb19830519b28f95d7ebef7c9c5cf1c14843621457 md5: a861504bbea4161a9170b85d4d2be840 depends: @@ -2564,54 +2162,44 @@ packages: - pycparser - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux license: MIT license_family: MIT size: 294403 timestamp: 1725560714366 -- kind: conda - name: cffi - version: 1.17.1 - build: py312h0fad829_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.1-py312h0fad829_0.conda - sha256: 8d91a0d01358b5c3f20297c6c536c5d24ccd3e0c2ddd37f9d0593d0f0070226f - md5: 19a5456f72f505881ba493979777b24e +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cffi-1.17.1-py312hac81daf_0.conda + sha256: 1162e3ca039e7ca7c0e78f0a020ed1bde968096841b663e3f393c966eb82f0f0 + md5: 1a256e5581b1099e9295cb84d53db3ea depends: - - __osx >=11.0 - libffi >=3.4,<4.0a0 + - libgcc >=13 - pycparser - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux license: MIT license_family: MIT - size: 281206 - timestamp: 1725560813378 -- kind: conda - name: cffi - version: 1.17.1 - build: py312hac81daf_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/cffi-1.17.1-py312hac81daf_0.conda - sha256: 1162e3ca039e7ca7c0e78f0a020ed1bde968096841b663e3f393c966eb82f0f0 - md5: 1a256e5581b1099e9295cb84d53db3ea + size: 312892 + timestamp: 1725561779888 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.1-py312h0fad829_0.conda + sha256: 8d91a0d01358b5c3f20297c6c536c5d24ccd3e0c2ddd37f9d0593d0f0070226f + md5: 19a5456f72f505881ba493979777b24e depends: + - __osx >=11.0 - libffi >=3.4,<4.0a0 - - libgcc >=13 - pycparser - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx license: MIT license_family: MIT - size: 312892 - timestamp: 1725561779888 -- kind: conda - name: charset-normalizer - version: 3.4.1 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda + size: 281206 + timestamp: 1725560813378 +- conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda sha256: 4e0ee91b97e5de3e74567bdacea27f0139709fceca4db8adffbe24deffccb09b md5: e83a31202d1c0a000fce3e9cf3825875 depends: @@ -2620,13 +2208,7 @@ packages: license_family: MIT size: 47438 timestamp: 1735929811779 -- kind: conda - name: click - version: 8.1.8 - build: pyh707e725_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda sha256: c920d23cd1fcf565031c679adb62d848af60d6fbb0edc2d50ba475cea4f0d8ab md5: f22f4d4970e09d68a10b922cbb0408d3 depends: @@ -2636,14 +2218,7 @@ packages: license_family: BSD size: 84705 timestamp: 1734858922844 -- kind: conda - name: colorama - version: 0.4.6 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda sha256: ab29d57dc70786c1269633ba3dff20288b81664d3ff8d21af995742e2bb03287 md5: 962b9857ee8e7018c22f2776ffa0b2d7 depends: @@ -2652,14 +2227,7 @@ packages: license_family: BSD size: 27011 timestamp: 1733218222191 -- kind: conda - name: comm - version: 0.2.2 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda sha256: 7e87ef7c91574d9fac19faedaaee328a70f718c9b4ddadfdc0ba9ac021bd64af md5: 74673132601ec2b7fc592755605f4c1b depends: @@ -2669,13 +2237,7 @@ packages: license_family: BSD size: 12103 timestamp: 1733503053903 -- kind: conda - name: datasets - version: 2.14.4 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda sha256: 7e09bd083a609138b780fcc4535924cb96814d2c908a36d4c64a2ba9ee3efe7f md5: 3e087f072ce03c43a9b60522f5d0ca2f depends: @@ -2698,12 +2260,7 @@ packages: license_family: Apache size: 347303 timestamp: 1691593908658 -- kind: conda - name: debugpy - version: 1.8.11 - build: py312h2ec8cdc_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.11-py312h2ec8cdc_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.11-py312h2ec8cdc_0.conda sha256: 3d800be438a76d8a636219afd63a617737729867af5800d50fc72e71ac4f27f1 md5: 0235a6da7d128c7e068973c4de62fc7b depends: @@ -2712,16 +2269,13 @@ packages: - libstdcxx >=13 - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux license: MIT license_family: MIT size: 2668691 timestamp: 1734159098550 -- kind: conda - name: debugpy - version: 1.8.11 - build: py312h6f74592_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/debugpy-1.8.11-py312h6f74592_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/debugpy-1.8.11-py312h6f74592_0.conda sha256: 8c5f73ea1ef9e88906968b9639be89d861b66aa48c132ec7565405293ca09f90 md5: 3230587917725d0affd61674e74583d2 depends: @@ -2730,16 +2284,13 @@ packages: - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux license: MIT license_family: MIT size: 2609965 timestamp: 1734159267844 -- kind: conda - name: debugpy - version: 1.8.11 - build: py312hd8f9ff3_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/debugpy-1.8.11-py312hd8f9ff3_0.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/debugpy-1.8.11-py312hd8f9ff3_0.conda sha256: c219e3ba0cf97fdd9fa3d8601f8d37a7fe584cc2f31e199a820fa005649871ea md5: 0f4c9c498b7ca4f010f7de44463c5403 depends: @@ -2748,18 +2299,13 @@ packages: - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx license: MIT license_family: MIT size: 2517686 timestamp: 1734159183809 -- kind: conda - name: decorator - version: 5.1.1 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/decorator-5.1.1-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.1.1-pyhd8ed1ab_1.conda sha256: 84e5120c97502a3785e8c3241c3bf51f64b4d445f13b4d2445db00d9816fe479 md5: d622d8d7ee8868870f9cbe259f381181 depends: @@ -2768,13 +2314,7 @@ packages: license_family: BSD size: 14068 timestamp: 1733236549190 -- kind: conda - name: defusedxml - version: 0.7.1 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 sha256: 9717a059677553562a8f38ff07f3b9f61727bd614f505658b0a5ecbcf8df89be md5: 961b3a227b437d82ad7054484cfa71b2 depends: @@ -2783,14 +2323,7 @@ packages: license_family: PSF size: 24062 timestamp: 1615232388757 -- kind: conda - name: deprecated - version: 1.2.15 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhd8ed1ab_1.conda sha256: a20ebf2c9b02a6eb32412ceb5c4cffaae49417db7e75414a76417538293a9402 md5: eaef2e94d5bd76f758545d172c1fda67 depends: @@ -2800,13 +2333,7 @@ packages: license_family: MIT size: 14297 timestamp: 1733662697343 -- kind: conda - name: dill - version: 0.3.7 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda sha256: 4ff20c6be028be2825235631c45d9e4a75bca1de65f8840c02dfb28ea0137c45 md5: 5e4f3466526c52bc9af2d2353a1460bd depends: @@ -2815,14 +2342,7 @@ packages: license_family: BSD size: 87553 timestamp: 1690101185422 -- kind: conda - name: dnspython - version: 2.7.0 - build: pyhff2d567_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda sha256: 3ec40ccf63f2450c5e6c7dd579e42fc2e97caf0d8cd4ba24aa434e6fc264eda0 md5: 5fbd60d61d21b4bd2f9d7a48fe100418 depends: @@ -2841,14 +2361,7 @@ packages: license_family: OTHER size: 172172 timestamp: 1733256829961 -- kind: conda - name: email-validator - version: 2.2.0 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda sha256: b91a19eb78edfc2dbb36de9a67f74ee2416f1b5273dd7327abe53f2dbf864736 md5: da16dd3b0b71339060cd44cb7110ddf9 depends: @@ -2858,14 +2371,7 @@ packages: license: Unlicense size: 44401 timestamp: 1733300827551 -- kind: conda - name: email_validator - version: 2.2.0 - build: hd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_1.conda sha256: e0d0fdf587aa0ed0ff08b2bce3ab355f46687b87b0775bfba01cc80a859ee6a2 md5: 0794f8807ff2c6f020422cacb1bd7bfa depends: @@ -2873,14 +2379,7 @@ packages: license: Unlicense size: 6552 timestamp: 1733300828176 -- kind: conda - name: entrypoints - version: '0.4' - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/entrypoints-0.4-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/entrypoints-0.4-pyhd8ed1ab_1.conda sha256: 80f579bfc71b3dab5bef74114b89e26c85cb0df8caf4c27ab5ffc16363d57ee7 md5: 3366592d3c219f2731721f11bc93755c depends: @@ -2889,14 +2388,7 @@ packages: license_family: MIT size: 11259 timestamp: 1733327239578 -- kind: conda - name: exceptiongroup - version: 1.2.2 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda sha256: cbde2c64ec317118fc06b223c5fd87c8a680255e7348dd60e7b292d2e103e701 md5: a16662747cdeb9abbac74d0057cc976e depends: @@ -2904,14 +2396,7 @@ packages: license: MIT and PSF-2.0 size: 20486 timestamp: 1733208916977 -- kind: conda - name: executing - version: 2.1.0 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/executing-2.1.0-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.1.0-pyhd8ed1ab_1.conda sha256: 28d25ea375ebab4bf7479228f8430db20986187b04999136ff5c722ebd32eb60 md5: ef8b5fca76806159fc25b4f48d8737eb depends: @@ -2920,13 +2405,7 @@ packages: license_family: MIT size: 28348 timestamp: 1733569440265 -- kind: conda - name: fastapi - version: 0.115.6 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.6-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.6-pyhd8ed1ab_0.conda sha256: d7826d537c667093c9de96411a09585a8d620c84a830a0195e58e9a0df45f018 md5: 1b1e0c97830cdf75f1f371bd467ab657 depends: @@ -2944,13 +2423,7 @@ packages: license_family: MIT size: 73084 timestamp: 1733362427885 -- kind: conda - name: fastapi-cli - version: 0.0.7 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.7-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.7-pyhd8ed1ab_0.conda sha256: 300683731013b7221922339cd40430bb3c2ddeeb658fd7e37f5099ffe64e4db0 md5: d960e0ea9e1c561aa928f6c4439f04c7 depends: @@ -2962,14 +2435,7 @@ packages: license_family: MIT size: 15546 timestamp: 1734302408607 -- kind: conda - name: filelock - version: 3.16.1 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_1.conda sha256: 18dca6e2194732df7ebf824abaefe999e4765ebe8e8a061269406ab88fc418b9 md5: d692e9ba6f92dc51484bf3477e36ce7c depends: @@ -2977,14 +2443,7 @@ packages: license: Unlicense size: 17441 timestamp: 1733240909987 -- kind: conda - name: fqdn - version: 1.5.1 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_1.conda sha256: 2509992ec2fd38ab27c7cdb42cf6cadc566a1cc0d1021a2673475d9fa87c6276 md5: d3549fd50d450b6d9e7dddff25dd2110 depends: @@ -2994,76 +2453,42 @@ packages: license_family: MOZILLA size: 16705 timestamp: 1733327494780 -- kind: conda - name: freetype - version: 2.12.1 - build: h267a509_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.12.1-h267a509_2.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.12.1-h267a509_2.conda sha256: b2e3c449ec9d907dd4656cb0dc93e140f447175b125a3824b31368b06c666bb6 md5: 9ae35c3d96db2c94ce0cef86efdfa2cb depends: - libgcc-ng >=12 - libpng >=1.6.39,<1.7.0a0 - libzlib >=1.2.13,<2.0.0a0 + arch: x86_64 + platform: linux license: GPL-2.0-only OR FTL size: 634972 timestamp: 1694615932610 -- kind: conda - name: freetype - version: 2.12.1 - build: hadb7bae_2 - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/freetype-2.12.1-hadb7bae_2.conda - sha256: 791673127e037a2dc0eebe122dc4f904cb3f6e635bb888f42cbe1a76b48748d9 - md5: e6085e516a3e304ce41a8ee08b9b89ad - depends: - - libpng >=1.6.39,<1.7.0a0 - - libzlib >=1.2.13,<2.0.0a0 - license: GPL-2.0-only OR FTL - size: 596430 - timestamp: 1694616332835 -- kind: conda - name: freetype - version: 2.12.1 - build: hf0a5ef3_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/freetype-2.12.1-hf0a5ef3_2.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/freetype-2.12.1-hf0a5ef3_2.conda sha256: 7af93030f4407f076dce181062360efac2cd54dce863b5d7765287a6f5382537 md5: a5ab74c5bd158c3d5532b66d8d83d907 depends: - libgcc-ng >=12 - libpng >=1.6.39,<1.7.0a0 - libzlib >=1.2.13,<2.0.0a0 + arch: aarch64 + platform: linux license: GPL-2.0-only OR FTL size: 642092 timestamp: 1694617858496 -- kind: conda - name: frozenlist - version: 1.5.0 - build: py312h0bf5046_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/frozenlist-1.5.0-py312h0bf5046_0.conda - sha256: 44d6d6b332421e621c029fb149f12dba1ccb5ed6ac632e2e807a9d92d6cb2864 - md5: 7960352935cc95ac23883c9b8c97f2ff +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/freetype-2.12.1-hadb7bae_2.conda + sha256: 791673127e037a2dc0eebe122dc4f904cb3f6e635bb888f42cbe1a76b48748d9 + md5: e6085e516a3e304ce41a8ee08b9b89ad depends: - - __osx >=11.0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - license: Apache-2.0 - license_family: APACHE - size: 53366 - timestamp: 1729699762631 -- kind: conda - name: frozenlist - version: 1.5.0 - build: py312h66e93f0_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/frozenlist-1.5.0-py312h66e93f0_0.conda + - libpng >=1.6.39,<1.7.0a0 + - libzlib >=1.2.13,<2.0.0a0 + arch: arm64 + platform: osx + license: GPL-2.0-only OR FTL + size: 596430 + timestamp: 1694616332835 +- conda: https://conda.anaconda.org/conda-forge/linux-64/frozenlist-1.5.0-py312h66e93f0_0.conda sha256: 7e0c12983b20f2816b3712729b5a35ecb7ee152132ca7cf805427c62395ea823 md5: f98e36c96b2c66d9043187179ddb04f4 depends: @@ -3071,16 +2496,13 @@ packages: - libgcc >=13 - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux license: Apache-2.0 license_family: APACHE size: 60968 timestamp: 1729699568442 -- kind: conda - name: frozenlist - version: 1.5.0 - build: py312hb2c0f52_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/frozenlist-1.5.0-py312hb2c0f52_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/frozenlist-1.5.0-py312hb2c0f52_0.conda sha256: b0a9ff3e71452eed70877b2f3175d41cd85070da6deac381c5f3f61e1f19bccb md5: 62fc11b0738ca15e0dd19b60cf280d12 depends: @@ -3088,17 +2510,27 @@ packages: - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux license: Apache-2.0 license_family: APACHE size: 59967 timestamp: 1729699642726 -- kind: conda - name: fsspec - version: 2024.12.0 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.12.0-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/frozenlist-1.5.0-py312h0bf5046_0.conda + sha256: 44d6d6b332421e621c029fb149f12dba1ccb5ed6ac632e2e807a9d92d6cb2864 + md5: 7960352935cc95ac23883c9b8c97f2ff + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + size: 53366 + timestamp: 1729699762631 +- conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.12.0-pyhd8ed1ab_0.conda sha256: 3320970c4604989eadf908397a9475f9e6a96a773c185915111399cbfbe47817 md5: e041ad4c43ab5e10c74587f95378ebc7 depends: @@ -3107,110 +2539,83 @@ packages: license_family: BSD size: 137756 timestamp: 1734650349242 -- kind: conda - name: gflags - version: 2.2.2 - build: h5888daf_1005 - build_number: 1005 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/gflags-2.2.2-h5888daf_1005.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/gflags-2.2.2-h5888daf_1005.conda sha256: 6c33bf0c4d8f418546ba9c250db4e4221040936aef8956353bc764d4877bc39a md5: d411fc29e338efb48c5fd4576d71d881 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - libstdcxx >=13 + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD size: 119654 timestamp: 1726600001928 -- kind: conda - name: gflags - version: 2.2.2 - build: h5ad3122_1005 - build_number: 1005 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/gflags-2.2.2-h5ad3122_1005.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gflags-2.2.2-h5ad3122_1005.conda sha256: 28fe6b40b20454106d5e4ef6947cf298c13cc72a46347bbc49b563cd3a463bfa md5: 4ff634d515abbf664774b5e1168a9744 depends: - libgcc >=13 - libstdcxx >=13 + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD size: 106638 timestamp: 1726599967617 -- kind: conda - name: gflags - version: 2.2.2 - build: hf9b8971_1005 - build_number: 1005 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/gflags-2.2.2-hf9b8971_1005.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/gflags-2.2.2-hf9b8971_1005.conda sha256: fd56ed8a1dab72ab90d8a8929b6f916a6d9220ca297ff077f8f04c5ed3408e20 md5: 57a511a5905caa37540eb914dfcbf1fb depends: - __osx >=11.0 - libcxx >=17 + arch: arm64 + platform: osx license: BSD-3-Clause license_family: BSD size: 82090 timestamp: 1726600145480 -- kind: conda - name: glog - version: 0.7.1 - build: h468a4a4_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/glog-0.7.1-h468a4a4_0.conda - sha256: 920795d4f775a9f47e91c2223e64847f0b212b3fedc56c137c5889e32efe8ba0 - md5: 08940a32c6ced3703d1412dd37df4f62 +- conda: https://conda.anaconda.org/conda-forge/linux-64/glog-0.7.1-hbabe93e_0.conda + sha256: dc824dc1d0aa358e28da2ecbbb9f03d932d976c8dca11214aa1dcdfcbd054ba2 + md5: ff862eebdfeb2fd048ae9dc92510baca depends: - gflags >=2.2.2,<2.3.0a0 - libgcc-ng >=12 - libstdcxx-ng >=12 + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD - size: 145811 - timestamp: 1718284208668 -- kind: conda - name: glog - version: 0.7.1 - build: hbabe93e_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/glog-0.7.1-hbabe93e_0.conda - sha256: dc824dc1d0aa358e28da2ecbbb9f03d932d976c8dca11214aa1dcdfcbd054ba2 - md5: ff862eebdfeb2fd048ae9dc92510baca + size: 143452 + timestamp: 1718284177264 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/glog-0.7.1-h468a4a4_0.conda + sha256: 920795d4f775a9f47e91c2223e64847f0b212b3fedc56c137c5889e32efe8ba0 + md5: 08940a32c6ced3703d1412dd37df4f62 depends: - gflags >=2.2.2,<2.3.0a0 - libgcc-ng >=12 - libstdcxx-ng >=12 + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD - size: 143452 - timestamp: 1718284177264 -- kind: conda - name: glog - version: 0.7.1 - build: heb240a5_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/glog-0.7.1-heb240a5_0.conda + size: 145811 + timestamp: 1718284208668 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/glog-0.7.1-heb240a5_0.conda sha256: 9fc77de416953aa959039db72bc41bfa4600ae3ff84acad04a7d0c1ab9552602 md5: fef68d0a95aa5b84b5c1a4f6f3bf40e1 depends: - __osx >=11.0 - gflags >=2.2.2,<2.3.0a0 - libcxx >=16 + arch: arm64 + platform: osx license: BSD-3-Clause license_family: BSD size: 112215 timestamp: 1718284365403 -- kind: conda - name: googleapis-common-protos - version: 1.66.0 - build: pyhff2d567_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda sha256: d8d19575a827f2c62500949b9536efdd6b5406c9f546a73b6a87ac90b03a5875 md5: 4861e30ff0cd566ea6fb4593e3b7c22a depends: @@ -3220,14 +2625,7 @@ packages: license_family: APACHE size: 116522 timestamp: 1731459019854 -- kind: conda - name: h11 - version: 0.14.0 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda sha256: 622516185a7c740d5c7f27016d0c15b45782c1501e5611deec63fd70344ce7c8 md5: 7ee49e89531c0dcbba9466f6d115d585 depends: @@ -3237,14 +2635,7 @@ packages: license_family: MIT size: 51846 timestamp: 1733327599467 -- kind: conda - name: h2 - version: 4.1.0 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_1.conda sha256: 843ddad410c370672a8250470697027618f104153612439076d4d7b91eeb7b5c md5: 825927dc7b0f287ef8d4d0011bb113b1 depends: @@ -3255,14 +2646,7 @@ packages: license_family: MIT size: 52000 timestamp: 1733298867359 -- kind: conda - name: hpack - version: 4.0.0 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda sha256: ec89b7e5b8aa2f0219f666084446e1fb7b54545861e9caa892acb24d125761b5 md5: 2aa5ff7fa34a81b9196532c84c10d865 depends: @@ -3271,14 +2655,7 @@ packages: license_family: MIT size: 29412 timestamp: 1733299296857 -- kind: conda - name: httpcore - version: 1.0.7 - build: pyh29332c3_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda sha256: c84d012a245171f3ed666a8bf9319580c269b7843ffa79f26468842da3abd5df md5: 2ca8e6dbc86525c8b95e3c0ffa26442e depends: @@ -3292,12 +2669,7 @@ packages: license_family: BSD size: 48959 timestamp: 1731707562362 -- kind: conda - name: httptools - version: 0.6.4 - build: py312h66e93f0_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/httptools-0.6.4-py312h66e93f0_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/httptools-0.6.4-py312h66e93f0_0.conda sha256: 621e7e050b888e5239d33e37ea72d6419f8367e5babcad38b755586f20264796 md5: 8b1160b32557290b64d5be68db3d996d depends: @@ -3305,16 +2677,13 @@ packages: - libgcc >=13 - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux license: MIT license_family: MIT size: 101872 timestamp: 1732707756745 -- kind: conda - name: httptools - version: 0.6.4 - build: py312hb2c0f52_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/httptools-0.6.4-py312hb2c0f52_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/httptools-0.6.4-py312hb2c0f52_0.conda sha256: 0bd1f30224af142711d11033a7469ae402a1147143f399f7341bbc1d8178c722 md5: 5e70a6de59352f9a52e9caa7f3447390 depends: @@ -3322,16 +2691,13 @@ packages: - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux license: MIT license_family: MIT size: 101255 timestamp: 1732707891645 -- kind: conda - name: httptools - version: 0.6.4 - build: py312hea69d52_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/httptools-0.6.4-py312hea69d52_0.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/httptools-0.6.4-py312hea69d52_0.conda sha256: 5e93cda79e32e8c0039e05ea1939e688da336187dab025f699b42ef529e848be md5: e1747a8e8d2aca5499aaea9993bf31ff depends: @@ -3339,17 +2705,13 @@ packages: - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx license: MIT license_family: MIT size: 85623 timestamp: 1732707871414 -- kind: conda - name: httpx - version: 0.28.1 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda sha256: cd0f1de3697b252df95f98383e9edb1d00386bfdd03fdf607fa42fe5fcb09950 md5: d6989ead454181f4f9bc987d3dc4e285 depends: @@ -3362,13 +2724,7 @@ packages: license_family: BSD size: 63082 timestamp: 1733663449209 -- kind: conda - name: huggingface_hub - version: 0.27.1 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.27.1-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.27.1-pyhd8ed1ab_0.conda sha256: 4597d7aa720f4acdddacc27b3f9e8d4336cb79477c53aee2d7ab96d136169cdb md5: 8c9a53ecd0c3c278efbdac567dd12ed0 depends: @@ -3385,14 +2741,7 @@ packages: license_family: APACHE size: 278363 timestamp: 1736350219225 -- kind: conda - name: hyperframe - version: 6.0.1 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda sha256: e91c6ef09d076e1d9a02819cd00fa7ee18ecf30cdd667605c853980216584d1b md5: 566e75c90c1d0c8c459eb0ad9833dc7a depends: @@ -3401,43 +2750,30 @@ packages: license_family: MIT size: 17239 timestamp: 1733298862681 -- kind: conda - name: icu - version: '75.1' - build: hf9b3779_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda sha256: 813298f2e54ef087dbfc9cc2e56e08ded41de65cff34c639cc8ba4e27e4540c9 md5: 268203e8b983fddb6412b36f2024e75c depends: - libgcc-ng >=12 - libstdcxx-ng >=12 + arch: aarch64 + platform: linux license: MIT license_family: MIT size: 12282786 timestamp: 1720853454991 -- kind: conda - name: icu - version: '75.1' - build: hfee45f7_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda sha256: 9ba12c93406f3df5ab0a43db8a4b4ef67a5871dfd401010fbe29b218b2cbe620 md5: 5eb22c1d7b3fc4abb50d92d621583137 depends: - __osx >=11.0 + arch: arm64 + platform: osx license: MIT license_family: MIT size: 11857802 timestamp: 1720853997952 -- kind: conda - name: idna - version: '3.10' - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda sha256: d7a472c9fd479e2e8dcb83fb8d433fce971ea369d704ece380e876f9c3494e87 md5: 39a4f67be3286c86d696df570b1201b7 depends: @@ -3446,14 +2782,7 @@ packages: license_family: BSD size: 49765 timestamp: 1733211921194 -- kind: conda - name: importlib-metadata - version: 8.5.0 - build: pyha770c72_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_1.conda sha256: 13766b88fc5b23581530d3a0287c0c58ad82f60401afefab283bf158d2be55a9 md5: 315607a3030ad5d5227e76e0733798ff depends: @@ -3463,13 +2792,7 @@ packages: license_family: APACHE size: 28623 timestamp: 1733223207185 -- kind: conda - name: importlib_resources - version: 6.5.2 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda sha256: acc1d991837c0afb67c75b77fdc72b4bf022aac71fedd8b9ea45918ac9b08a80 md5: c85c76dc67d75619a92f51dfbce06992 depends: @@ -3481,13 +2804,7 @@ packages: license_family: APACHE size: 33781 timestamp: 1736252433366 -- kind: conda - name: ipykernel - version: 6.29.5 - build: pyh3099207_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh3099207_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh3099207_0.conda sha256: 33cfd339bb4efac56edf93474b37ddc049e08b1b4930cf036c893cc1f5a1f32a md5: b40131ab6a36ac2c09b7c57d4d3fbf99 depends: @@ -3509,13 +2826,7 @@ packages: license_family: BSD size: 119084 timestamp: 1719845605084 -- kind: conda - name: ipykernel - version: 6.29.5 - build: pyh57ce528_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh57ce528_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh57ce528_0.conda sha256: 072534d4d379225b2c3a4e38bc7730b65ae171ac7f0c2d401141043336e97980 md5: 9eb15d654daa0ef5a98802f586bb4ffc depends: @@ -3538,13 +2849,7 @@ packages: license_family: BSD size: 119568 timestamp: 1719845667420 -- kind: conda - name: ipython - version: 8.31.0 - build: pyh707e725_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/ipython-8.31.0-pyh707e725_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/ipython-8.31.0-pyh707e725_0.conda sha256: e10d1172ebf950f8f087f0d9310d215f5ddb8f3ad247bfa58ab5a909b3cabbdc md5: 1d7fcd803dfa936a6c3bd051b293241c depends: @@ -3565,14 +2870,7 @@ packages: license_family: BSD size: 600761 timestamp: 1734788248334 -- kind: conda - name: isoduration - version: 20.11.0 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda sha256: 08e838d29c134a7684bca0468401d26840f41c92267c4126d7b43a6b533b0aed md5: 0b0154421989637d424ccf0f104be51a depends: @@ -3582,14 +2880,7 @@ packages: license_family: MIT size: 19832 timestamp: 1733493720346 -- kind: conda - name: jedi - version: 0.19.2 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda sha256: 92c4d217e2dc68983f724aa983cca5464dcb929c566627b26a2511159667dba8 md5: a4f4c5dc9b80bc50e0d3dc4e6e8f1bd9 depends: @@ -3598,13 +2889,7 @@ packages: license: Apache-2.0 AND MIT size: 843646 timestamp: 1733300981994 -- kind: conda - name: jinja2 - version: 3.1.5 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.5-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.5-pyhd8ed1ab_0.conda sha256: 98977694b9ecaa3218662f843425f39501f81973c450f995eec68f1803ed71c3 md5: 2752a6ed44105bfb18c9bef1177d9dcd depends: @@ -3614,14 +2899,7 @@ packages: license_family: BSD size: 112561 timestamp: 1734824044952 -- kind: conda - name: json5 - version: 0.10.0 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/json5-0.10.0-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.10.0-pyhd8ed1ab_1.conda sha256: 61bca2dac194c44603446944745566d7b4e55407280f6f6cea8bbe4de26b558f md5: cd170f82d8e5b355dfdea6adab23e4af depends: @@ -3630,64 +2908,45 @@ packages: license_family: APACHE size: 31573 timestamp: 1733272196759 -- kind: conda - name: jsonpointer - version: 3.0.0 - build: py312h7900ff3_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/jsonpointer-3.0.0-py312h7900ff3_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/jsonpointer-3.0.0-py312h7900ff3_1.conda sha256: 76ccb7bffc7761d1d3133ffbe1f7f1710a0f0d9aaa9f7ea522652e799f3601f4 md5: 6b51f7459ea4073eeb5057207e2e1e3d depends: - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD size: 17277 timestamp: 1725303032027 -- kind: conda - name: jsonpointer - version: 3.0.0 - build: py312h81bd7bf_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/jsonpointer-3.0.0-py312h81bd7bf_1.conda - sha256: f6fb3734e967d1cd0cde32844ee952809f6c0a49895da7ec1c8cfdf97739b947 - md5: 80f403c03290e1662be03e026fb5f8ab +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/jsonpointer-3.0.0-py312h996f985_1.conda + sha256: 908448e2946c8fd8e28f5c7de4ed52548d227fae2994febf1050179b2590dbdc + md5: 2257c5f33024274faadf6a88a7d62807 depends: - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD - size: 17865 - timestamp: 1725303130815 -- kind: conda - name: jsonpointer - version: 3.0.0 - build: py312h996f985_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/jsonpointer-3.0.0-py312h996f985_1.conda - sha256: 908448e2946c8fd8e28f5c7de4ed52548d227fae2994febf1050179b2590dbdc - md5: 2257c5f33024274faadf6a88a7d62807 + size: 17821 + timestamp: 1725303138276 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/jsonpointer-3.0.0-py312h81bd7bf_1.conda + sha256: f6fb3734e967d1cd0cde32844ee952809f6c0a49895da7ec1c8cfdf97739b947 + md5: 80f403c03290e1662be03e026fb5f8ab depends: - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx license: BSD-3-Clause license_family: BSD - size: 17821 - timestamp: 1725303138276 -- kind: conda - name: jsonschema - version: 4.23.0 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_1.conda + size: 17865 + timestamp: 1725303130815 +- conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_1.conda sha256: be992a99e589146f229c58fe5083e0b60551d774511c494f91fe011931bd7893 md5: a3cead9264b331b32fe8f0aabc967522 depends: @@ -3702,14 +2961,7 @@ packages: license_family: MIT size: 74256 timestamp: 1733472818764 -- kind: conda - name: jsonschema-specifications - version: 2024.10.1 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2024.10.1-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2024.10.1-pyhd8ed1ab_1.conda sha256: 37127133837444cf0e6d1a95ff5a505f8214ed4e89e8e9343284840e674c6891 md5: 3b519bc21bc80e60b456f1e62962a766 depends: @@ -3719,14 +2971,7 @@ packages: license_family: MIT size: 16170 timestamp: 1733493624968 -- kind: conda - name: jsonschema-with-format-nongpl - version: 4.23.0 - build: hd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_1.conda sha256: 6e0184530011961a0802fda100ecdfd4b0eca634ed94c37e553b72e21c26627d md5: a5b1a8065857cc4bd8b7a38d063bb728 depends: @@ -3743,14 +2988,7 @@ packages: license_family: MIT size: 7135 timestamp: 1733472820035 -- kind: conda - name: jupyter-lsp - version: 2.2.5 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_1.conda sha256: 1565c8b1423a37fca00fe0ab2a17cd8992c2ecf23e7867a1c9f6f86a9831c196 md5: 0b4c3908e5a38ea22ebb98ee5888c768 depends: @@ -3761,14 +2999,7 @@ packages: license_family: BSD size: 55221 timestamp: 1733493006611 -- kind: conda - name: jupyter_client - version: 8.6.3 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda sha256: 19d8bd5bb2fde910ec59e081eeb59529491995ce0d653a5209366611023a0b3a md5: 4ebae00eae9705b0c3d6d1018a81d047 depends: @@ -3783,14 +3014,7 @@ packages: license_family: BSD size: 106342 timestamp: 1733441040958 -- kind: conda - name: jupyter_core - version: 5.7.2 - build: pyh31011fe_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda sha256: 732b1e8536bc22a5a174baa79842d79db2f4956d90293dd82dc1b3f6099bcccd md5: 0a2980dada0dd7fd0998f0342308b1b1 depends: @@ -3802,13 +3026,7 @@ packages: license_family: BSD size: 57671 timestamp: 1727163547058 -- kind: conda - name: jupyter_events - version: 0.11.0 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.11.0-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.11.0-pyhd8ed1ab_0.conda sha256: eeb32aa58d37b130387628d5c151092f6d3fcf0a6964294bef06d6bac117f3c4 md5: 2d8876ca6bda213622dfbc3d1da56ecb depends: @@ -3825,13 +3043,7 @@ packages: license_family: BSD size: 22160 timestamp: 1734531779868 -- kind: conda - name: jupyter_server - version: 2.15.0 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.15.0-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.15.0-pyhd8ed1ab_0.conda sha256: be5f9774065d94c4a988f53812b83b67618bec33fcaaa005a98067d506613f8a md5: 6ba8c206b5c6f52b82435056cf74ee46 depends: @@ -3858,14 +3070,7 @@ packages: license_family: BSD size: 327747 timestamp: 1734702771032 -- kind: conda - name: jupyter_server_terminals - version: 0.5.3 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda sha256: 0890fc79422191bc29edf17d7b42cff44ba254aa225d31eb30819f8772b775b8 md5: 2d983ff1b82a1ccb6f2e9d8784bdd6bd depends: @@ -3875,13 +3080,7 @@ packages: license_family: BSD size: 19711 timestamp: 1733428049134 -- kind: conda - name: jupyterlab - version: 4.3.4 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.3.4-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.3.4-pyhd8ed1ab_0.conda sha256: bcf9fc0ea4bd6cf06a7a23b7f8b7bb7d8520eea8d0cdd6d3b975ede7793ed69b md5: edc13687180382b4444d9f143a2e1ef7 depends: @@ -3905,14 +3104,7 @@ packages: license_family: BSD size: 7257751 timestamp: 1734539283837 -- kind: conda - name: jupyterlab_pygments - version: 0.3.0 - build: pyhd8ed1ab_2 - build_number: 2 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda sha256: dc24b900742fdaf1e077d9a3458fd865711de80bca95fe3c6d46610c532c6ef0 md5: fd312693df06da3578383232528c468d depends: @@ -3924,14 +3116,7 @@ packages: license_family: BSD size: 18711 timestamp: 1733328194037 -- kind: conda - name: jupyterlab_server - version: 2.27.3 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda sha256: d03d0b7e23fa56d322993bc9786b3a43b88ccc26e58b77c756619a921ab30e86 md5: 9dc4b2b0f41f0de41d27f3293e319357 depends: @@ -3950,56 +3135,43 @@ packages: license_family: BSD size: 49449 timestamp: 1733599666357 -- kind: conda - name: keyutils - version: 1.6.1 - build: h166bdaf_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 sha256: 150c05a6e538610ca7c43beb3a40d65c90537497a4f6a5f4d15ec0451b6f5ebb md5: 30186d27e2c9fa62b45fb1476b7200e3 depends: - libgcc-ng >=10.3.0 + arch: x86_64 + platform: linux license: LGPL-2.1-or-later size: 117831 timestamp: 1646151697040 -- kind: conda - name: keyutils - version: 1.6.1 - build: h4e544f5_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/keyutils-1.6.1-h4e544f5_0.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/keyutils-1.6.1-h4e544f5_0.tar.bz2 sha256: 6d4233d97a9b38acbb26e1268bcf8c10a8e79c2aed7e5a385ec3769967e3e65b md5: 1f24853e59c68892452ef94ddd8afd4b depends: - libgcc-ng >=10.3.0 + arch: aarch64 + platform: linux license: LGPL-2.1-or-later size: 112327 timestamp: 1646166857935 -- kind: conda - name: krb5 - version: 1.21.3 - build: h237132a_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda - sha256: 4442f957c3c77d69d9da3521268cad5d54c9033f1a73f99cde0a3658937b159b - md5: c6dc8a0fdec13a0565936655c33069a1 +- conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda + sha256: 99df692f7a8a5c27cd14b5fb1374ee55e756631b9c3d659ed3ee60830249b238 + md5: 3f43953b7d3fb3aaa1d0d0723d91e368 depends: - - __osx >=11.0 - - libcxx >=16 + - keyutils >=1.6.1,<2.0a0 - libedit >=3.1.20191231,<3.2.0a0 - libedit >=3.1.20191231,<4.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 - openssl >=3.3.1,<4.0a0 + arch: x86_64 + platform: linux license: MIT license_family: MIT - size: 1155530 - timestamp: 1719463474401 -- kind: conda - name: krb5 - version: 1.21.3 - build: h50a48e9_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/krb5-1.21.3-h50a48e9_0.conda + size: 1370023 + timestamp: 1719463201255 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/krb5-1.21.3-h50a48e9_0.conda sha256: 0ec272afcf7ea7fbf007e07a3b4678384b7da4047348107b2ae02630a570a815 md5: 29c10432a2ca1472b53f299ffb2ffa37 depends: @@ -4009,178 +3181,141 @@ packages: - libgcc-ng >=12 - libstdcxx-ng >=12 - openssl >=3.3.1,<4.0a0 + arch: aarch64 + platform: linux license: MIT license_family: MIT size: 1474620 timestamp: 1719463205834 -- kind: conda - name: krb5 - version: 1.21.3 - build: h659f571_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda - sha256: 99df692f7a8a5c27cd14b5fb1374ee55e756631b9c3d659ed3ee60830249b238 - md5: 3f43953b7d3fb3aaa1d0d0723d91e368 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda + sha256: 4442f957c3c77d69d9da3521268cad5d54c9033f1a73f99cde0a3658937b159b + md5: c6dc8a0fdec13a0565936655c33069a1 depends: - - keyutils >=1.6.1,<2.0a0 + - __osx >=11.0 + - libcxx >=16 - libedit >=3.1.20191231,<3.2.0a0 - libedit >=3.1.20191231,<4.0a0 - - libgcc-ng >=12 - - libstdcxx-ng >=12 - openssl >=3.3.1,<4.0a0 + arch: arm64 + platform: osx license: MIT license_family: MIT - size: 1370023 - timestamp: 1719463201255 -- kind: conda - name: lcms2 - version: '2.16' - build: h922389a_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/lcms2-2.16-h922389a_0.conda + size: 1155530 + timestamp: 1719463474401 +- conda: https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.16-hb7c19ff_0.conda + sha256: 5c878d104b461b7ef922abe6320711c0d01772f4cd55de18b674f88547870041 + md5: 51bb7010fc86f70eee639b4bb7a894f5 + depends: + - libgcc-ng >=12 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libtiff >=4.6.0,<4.8.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 245247 + timestamp: 1701647787198 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lcms2-2.16-h922389a_0.conda sha256: be4847b1014d3cbbc524a53bdbf66182f86125775020563e11d914c8468dd97d md5: ffdd8267a04c515e7ce69c727b051414 depends: - libgcc-ng >=12 - libjpeg-turbo >=3.0.0,<4.0a0 - libtiff >=4.6.0,<4.8.0a0 + arch: aarch64 + platform: linux license: MIT license_family: MIT size: 296219 timestamp: 1701647961116 -- kind: conda - name: lcms2 - version: '2.16' - build: ha0e7c42_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.16-ha0e7c42_0.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.16-ha0e7c42_0.conda sha256: 151e0c84feb7e0747fabcc85006b8973b22f5abbc3af76a9add0b0ef0320ebe4 md5: 66f6c134e76fe13cce8a9ea5814b5dd5 depends: - libjpeg-turbo >=3.0.0,<4.0a0 - libtiff >=4.6.0,<4.8.0a0 + arch: arm64 + platform: osx license: MIT license_family: MIT size: 211959 timestamp: 1701647962657 -- kind: conda - name: lcms2 - version: '2.16' - build: hb7c19ff_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.16-hb7c19ff_0.conda - sha256: 5c878d104b461b7ef922abe6320711c0d01772f4cd55de18b674f88547870041 - md5: 51bb7010fc86f70eee639b4bb7a894f5 - depends: - - libgcc-ng >=12 - - libjpeg-turbo >=3.0.0,<4.0a0 - - libtiff >=4.6.0,<4.8.0a0 - license: MIT - license_family: MIT - size: 245247 - timestamp: 1701647787198 -- kind: conda - name: ld_impl_linux-64 - version: '2.43' - build: h712a8e2_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_2.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_2.conda sha256: 7c91cea91b13f4314d125d1bedb9d03a29ebbd5080ccdea70260363424646dbe md5: 048b02e3962f066da18efe3a21b77672 depends: - __glibc >=2.17,<3.0.a0 constrains: - binutils_impl_linux-64 2.43 + arch: x86_64 + platform: linux license: GPL-3.0-only license_family: GPL size: 669211 timestamp: 1729655358674 -- kind: conda - name: ld_impl_linux-aarch64 - version: '2.43' - build: h80caac9_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_2.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_2.conda sha256: 80ec7e8f006196808fac5bd4b3773a652847f97bbf08044cd87731424ac64f8b md5: fcbde5ea19d55468953bf588770c0501 constrains: - binutils_impl_linux-aarch64 2.43 + arch: aarch64 + platform: linux license: GPL-3.0-only license_family: GPL size: 698245 timestamp: 1729655345825 -- kind: conda - name: lerc - version: 4.0.0 - build: h27087fc_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 sha256: cb55f36dcd898203927133280ae1dc643368af041a48bcf7c026acb7c47b0c12 md5: 76bbff344f0134279f225174e9064c8f depends: - libgcc-ng >=12 - libstdcxx-ng >=12 + arch: x86_64 + platform: linux license: Apache-2.0 license_family: Apache size: 281798 timestamp: 1657977462600 -- kind: conda - name: lerc - version: 4.0.0 - build: h4de3ea5_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.0.0-h4de3ea5_0.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.0.0-h4de3ea5_0.tar.bz2 sha256: 2d09ef9b7796d83364957e420b41c32d94e628c3f0520b61c332518a7b5cd586 md5: 1a0ffc65e03ce81559dbcb0695ad1476 depends: - libgcc-ng >=12 - libstdcxx-ng >=12 + arch: aarch64 + platform: linux license: Apache-2.0 license_family: Apache size: 262096 timestamp: 1657978241894 -- kind: conda - name: lerc - version: 4.0.0 - build: h9a09cb3_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 sha256: 6f068bb53dfb6147d3147d981bb851bb5477e769407ad4e6a68edf482fdcb958 md5: de462d5aacda3b30721b512c5da4e742 depends: - libcxx >=13.0.1 + arch: arm64 + platform: osx license: Apache-2.0 license_family: Apache size: 215721 timestamp: 1657977558796 -- kind: conda - name: libabseil - version: '20240722.0' - build: cxx17_h07bc746_4 - build_number: 4 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_h07bc746_4.conda - sha256: 05fa5e5e908962b9c5aba95f962e2ca81d9599c4715aebe5e4ddb72b309d1770 - md5: c2d95bd7aa8d564a9bd7eca5e571a5b3 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda + sha256: 143a586aa67d50622ef703de57b9d43f44945836d6568e0e7aa174bd8c45e0d4 + md5: 488f260ccda0afaf08acb286db439c2f depends: - - __osx >=11.0 - - libcxx >=18 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 constrains: - libabseil-static =20240722.0=cxx17* - abseil-cpp =20240722.0 + arch: x86_64 + platform: linux license: Apache-2.0 license_family: Apache - size: 1178260 - timestamp: 1736008642885 -- kind: conda - name: libabseil - version: '20240722.0' - build: cxx17_h18dbdb1_4 - build_number: 4 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h18dbdb1_4.conda + size: 1311599 + timestamp: 1736008414161 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h18dbdb1_4.conda sha256: bb6c5fb3b8de5f90735c5252b57efb3c268ee222c755569dac18065f05147670 md5: 633b9fe454ffea2aaf29e191d946a83b depends: @@ -4189,41 +3324,33 @@ packages: constrains: - abseil-cpp =20240722.0 - libabseil-static =20240722.0=cxx17* + arch: aarch64 + platform: linux license: Apache-2.0 license_family: Apache size: 1334844 timestamp: 1736008472455 -- kind: conda - name: libabseil - version: '20240722.0' - build: cxx17_hbbce691_4 - build_number: 4 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda - sha256: 143a586aa67d50622ef703de57b9d43f44945836d6568e0e7aa174bd8c45e0d4 - md5: 488f260ccda0afaf08acb286db439c2f +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_h07bc746_4.conda + sha256: 05fa5e5e908962b9c5aba95f962e2ca81d9599c4715aebe5e4ddb72b309d1770 + md5: c2d95bd7aa8d564a9bd7eca5e571a5b3 depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libstdcxx >=13 + - __osx >=11.0 + - libcxx >=18 constrains: - libabseil-static =20240722.0=cxx17* - abseil-cpp =20240722.0 + arch: arm64 + platform: osx license: Apache-2.0 license_family: Apache - size: 1311599 - timestamp: 1736008414161 -- kind: conda - name: libarrow - version: 18.1.0 - build: h0ad35bc_7_cpu + size: 1178260 + timestamp: 1736008642885 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-hd595efa_7_cpu.conda build_number: 7 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-h0ad35bc_7_cpu.conda - sha256: 4fbdd8bb89d912bf03f10f9373a8d96a1cdd7a7851e107393418a3d2715bc27e - md5: 4ba2173203f44bbf03d19aaba6ed07d3 + sha256: 554ffa338264c1dc34d95adb7eb856d50a2f25e7fa303a1a51e4372301b7c96f + md5: 08d4aff5ee6dee9a1b9ab13fca927697 depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 - aws-crt-cpp >=0.29.7,<0.29.8.0a0 - aws-sdk-cpp >=1.11.458,<1.11.459.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 @@ -4231,15 +3358,17 @@ packages: - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 - bzip2 >=1.0.8,<2.0a0 + - gflags >=2.2.2,<2.3.0a0 - glog >=0.7.1,<0.8.0a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - libbrotlidec >=1.1.0,<1.2.0a0 - libbrotlienc >=1.1.0,<1.2.0a0 - - libcxx >=18 + - libgcc >=13 - libgoogle-cloud >=2.33.0,<2.34.0a0 - libgoogle-cloud-storage >=2.33.0,<2.34.0a0 - libre2-11 >=2024.7.2 + - libstdcxx >=13 - libutf8proc >=2.9.0,<2.10.0a0 - libzlib >=1.3.1,<2.0a0 - lz4-c >=1.10.0,<1.11.0a0 @@ -4251,17 +3380,14 @@ packages: - arrow-cpp <0.0a0 - parquet-cpp <0.0a0 - apache-arrow-proc =*=cpu + arch: x86_64 + platform: linux license: Apache-2.0 license_family: APACHE - size: 5506699 - timestamp: 1735682962976 -- kind: conda - name: libarrow - version: 18.1.0 - build: hb7781cd_7_cpu + size: 8770256 + timestamp: 1735684696564 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-hb7781cd_7_cpu.conda build_number: 7 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-hb7781cd_7_cpu.conda sha256: f6107506bd16788560b47a4d18c1457b4df30a49334364d32613fe3f53ba6cbb md5: 98cf7127ca7b3854c5d1c8bef1ed6e53 depends: @@ -4294,21 +3420,18 @@ packages: - arrow-cpp <0.0a0 - parquet-cpp <0.0a0 - apache-arrow-proc =*=cpu + arch: aarch64 + platform: linux license: Apache-2.0 license_family: APACHE size: 8026714 timestamp: 1735685336542 -- kind: conda - name: libarrow - version: 18.1.0 - build: hd595efa_7_cpu +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-h0ad35bc_7_cpu.conda build_number: 7 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-hd595efa_7_cpu.conda - sha256: 554ffa338264c1dc34d95adb7eb856d50a2f25e7fa303a1a51e4372301b7c96f - md5: 08d4aff5ee6dee9a1b9ab13fca927697 + sha256: 4fbdd8bb89d912bf03f10f9373a8d96a1cdd7a7851e107393418a3d2715bc27e + md5: 4ba2173203f44bbf03d19aaba6ed07d3 depends: - - __glibc >=2.17,<3.0.a0 + - __osx >=11.0 - aws-crt-cpp >=0.29.7,<0.29.8.0a0 - aws-sdk-cpp >=1.11.458,<1.11.459.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 @@ -4316,17 +3439,15 @@ packages: - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 - bzip2 >=1.0.8,<2.0a0 - - gflags >=2.2.2,<2.3.0a0 - glog >=0.7.1,<0.8.0a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - libbrotlidec >=1.1.0,<1.2.0a0 - libbrotlienc >=1.1.0,<1.2.0a0 - - libgcc >=13 + - libcxx >=18 - libgoogle-cloud >=2.33.0,<2.34.0a0 - libgoogle-cloud-storage >=2.33.0,<2.34.0a0 - libre2-11 >=2024.7.2 - - libstdcxx >=13 - libutf8proc >=2.9.0,<2.10.0a0 - libzlib >=1.3.1,<2.0a0 - lz4-c >=1.10.0,<1.11.0a0 @@ -4338,34 +3459,14 @@ packages: - arrow-cpp <0.0a0 - parquet-cpp <0.0a0 - apache-arrow-proc =*=cpu + arch: arm64 + platform: osx license: Apache-2.0 license_family: APACHE - size: 8770256 - timestamp: 1735684696564 -- kind: conda - name: libarrow-acero - version: 18.1.0 - build: h3b568fd_7_cpu - build_number: 7 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h3b568fd_7_cpu.conda - sha256: 42cbfc87096f745d565d814d65b7228c82d985f1898859d5e456016d73e81c82 - md5: 4c1d8c3feea249782148d3cd6a25392e - depends: - - libarrow 18.1.0 hb7781cd_7_cpu - - libgcc >=13 - - libstdcxx >=13 - license: Apache-2.0 - license_family: APACHE - size: 578222 - timestamp: 1735685424850 -- kind: conda - name: libarrow-acero - version: 18.1.0 - build: hcb10f89_7_cpu + size: 5506699 + timestamp: 1735682962976 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-hcb10f89_7_cpu.conda build_number: 7 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-hcb10f89_7_cpu.conda sha256: 87ea5d6a84d922d73975dce8661fccf257e72e755175b12c30e1181a34e37987 md5: 12d84228204c56fec6ed113288014d11 depends: @@ -4373,53 +3474,42 @@ packages: - libarrow 18.1.0 hd595efa_7_cpu - libgcc >=13 - libstdcxx >=13 + arch: x86_64 + platform: linux license: Apache-2.0 license_family: APACHE size: 612463 timestamp: 1735684749868 -- kind: conda - name: libarrow-acero - version: 18.1.0 - build: hf07054f_7_cpu +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h3b568fd_7_cpu.conda + build_number: 7 + sha256: 42cbfc87096f745d565d814d65b7228c82d985f1898859d5e456016d73e81c82 + md5: 4c1d8c3feea249782148d3cd6a25392e + depends: + - libarrow 18.1.0 hb7781cd_7_cpu + - libgcc >=13 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 578222 + timestamp: 1735685424850 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-hf07054f_7_cpu.conda build_number: 7 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-hf07054f_7_cpu.conda sha256: 86e20cebfdb4f335e98265c1b88f5053bf3e3648768a317856295846bfdbf2b4 md5: 3eaf71fe987de13061db795e03bb1a1c depends: - __osx >=11.0 - libarrow 18.1.0 h0ad35bc_7_cpu - libcxx >=18 + arch: arm64 + platform: osx license: Apache-2.0 license_family: APACHE size: 485185 timestamp: 1735683071232 -- kind: conda - name: libarrow-dataset - version: 18.1.0 - build: h3b568fd_7_cpu - build_number: 7 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h3b568fd_7_cpu.conda - sha256: 13ba7d3d08015aa26569eca9e198e2f8b2a0cd2d9c420e41c78cc2e5d5170f26 - md5: f39f5d725c2ca94c2e7b19e2717fd4ab - depends: - - libarrow 18.1.0 hb7781cd_7_cpu - - libarrow-acero 18.1.0 h3b568fd_7_cpu - - libgcc >=13 - - libparquet 18.1.0 hfc78867_7_cpu - - libstdcxx >=13 - license: Apache-2.0 - license_family: APACHE - size: 560329 - timestamp: 1735685518922 -- kind: conda - name: libarrow-dataset - version: 18.1.0 - build: hcb10f89_7_cpu +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-hcb10f89_7_cpu.conda build_number: 7 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-hcb10f89_7_cpu.conda sha256: 99c12511fba79c7947f78d676eae5857659084f687f375f68bc20bd4cddb0a0e md5: 0a81eb63d7cd150f598c752e86388d57 depends: @@ -4429,17 +3519,30 @@ packages: - libgcc >=13 - libparquet 18.1.0 h081d1f1_7_cpu - libstdcxx >=13 + arch: x86_64 + platform: linux license: Apache-2.0 license_family: APACHE size: 587497 timestamp: 1735684880531 -- kind: conda - name: libarrow-dataset - version: 18.1.0 - build: hf07054f_7_cpu +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h3b568fd_7_cpu.conda + build_number: 7 + sha256: 13ba7d3d08015aa26569eca9e198e2f8b2a0cd2d9c420e41c78cc2e5d5170f26 + md5: f39f5d725c2ca94c2e7b19e2717fd4ab + depends: + - libarrow 18.1.0 hb7781cd_7_cpu + - libarrow-acero 18.1.0 h3b568fd_7_cpu + - libgcc >=13 + - libparquet 18.1.0 hfc78867_7_cpu + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 560329 + timestamp: 1735685518922 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-hf07054f_7_cpu.conda build_number: 7 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-hf07054f_7_cpu.conda sha256: 52c5c4e9cd5f2ac91dcebb6a920ab2536febcea116ff8767e5439329d7da820b md5: 97a2d3606682d94f7d73112e9ad684ae depends: @@ -4448,17 +3551,14 @@ packages: - libarrow-acero 18.1.0 hf07054f_7_cpu - libcxx >=18 - libparquet 18.1.0 h636d7b7_7_cpu + arch: arm64 + platform: osx license: Apache-2.0 license_family: APACHE size: 491237 timestamp: 1735684688308 -- kind: conda - name: libarrow-substrait - version: 18.1.0 - build: h08228c5_7_cpu +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-h08228c5_7_cpu.conda build_number: 7 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-h08228c5_7_cpu.conda sha256: 53ea53a06e137c2f81ebfdff3f978babb8b59e31f705a19b57056ec8754c1abf md5: e128def53c133e8a23ac00cd4a479335 depends: @@ -4471,17 +3571,14 @@ packages: - libgcc >=13 - libprotobuf >=5.28.3,<5.28.4.0a0 - libstdcxx >=13 + arch: x86_64 + platform: linux license: Apache-2.0 license_family: APACHE size: 521861 timestamp: 1735684940668 -- kind: conda - name: libarrow-substrait - version: 18.1.0 - build: h1e9d426_7_cpu +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h1e9d426_7_cpu.conda build_number: 7 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h1e9d426_7_cpu.conda sha256: 252e2a0d8c733f36b50499786480a05a59577d617f291868149c80534c1e8ffc md5: 6da921d9e1c4e2ab2679eeea7cbd4c82 depends: @@ -4493,17 +3590,14 @@ packages: - libgcc >=13 - libprotobuf >=5.28.3,<5.28.4.0a0 - libstdcxx >=13 + arch: aarch64 + platform: linux license: Apache-2.0 license_family: APACHE size: 516014 timestamp: 1735685565929 -- kind: conda - name: libarrow-substrait - version: 18.1.0 - build: h4239455_7_cpu +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-h4239455_7_cpu.conda build_number: 7 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-h4239455_7_cpu.conda sha256: a45bbdd6932aed972d6c6ce30a7439aa8ec9d9b8ee5affb350d41e50abdc0127 md5: 91927747173f65695e441346c7145e26 depends: @@ -4515,17 +3609,14 @@ packages: - libarrow-dataset 18.1.0 hf07054f_7_cpu - libcxx >=18 - libprotobuf >=5.28.3,<5.28.4.0a0 + arch: arm64 + platform: osx license: Apache-2.0 license_family: APACHE size: 452385 timestamp: 1735684993831 -- kind: conda - name: libblas - version: 3.9.0 - build: 26_linux64_openblas +- conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-26_linux64_openblas.conda build_number: 26 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-26_linux64_openblas.conda sha256: 30bd658682b124243f8e52d8edf8a19e7be1bc31e4fe4baec30a64002dc8cd0c md5: ac52800af2e0c0e7dac770b435ce768a depends: @@ -4536,17 +3627,14 @@ packages: - liblapack 3.9.0 26_linux64_openblas - liblapacke 3.9.0 26_linux64_openblas - blas * openblas + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD size: 16393 timestamp: 1734432564346 -- kind: conda - name: libblas - version: 3.9.0 - build: 26_linuxaarch64_openblas +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-26_linuxaarch64_openblas.conda build_number: 26 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-26_linuxaarch64_openblas.conda sha256: df6d8ee34d45cf35609ecdd55c1ff03e32e0cd87ae41ebe4ef3747a8e09ead4d md5: 8d900b7079a00969d70305e9aad550b7 depends: @@ -4557,17 +3645,14 @@ packages: - liblapacke 3.9.0 26_linuxaarch64_openblas - libcblas 3.9.0 26_linuxaarch64_openblas - liblapack 3.9.0 26_linuxaarch64_openblas + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD size: 16477 timestamp: 1734432576699 -- kind: conda - name: libblas - version: 3.9.0 - build: 26_osxarm64_openblas +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-26_osxarm64_openblas.conda build_number: 26 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-26_osxarm64_openblas.conda sha256: 597f9c3779caa979c8c6abbb3ba8c7191b84e1a910d6b0d10e5faf35284c450c md5: 21be102c9ae80a67ba7de23b129aa7f6 depends: @@ -4578,161 +3663,122 @@ packages: - liblapacke 3.9.0 26_osxarm64_openblas - libcblas 3.9.0 26_osxarm64_openblas - blas * openblas + arch: arm64 + platform: osx license: BSD-3-Clause license_family: BSD size: 16714 timestamp: 1734433054681 -- kind: conda - name: libbrotlicommon - version: 1.1.0 - build: h86ecc28_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlicommon-1.1.0-h86ecc28_2.conda - sha256: 64112af913974b309d67fd342e065fd184347043a6387933b3db796778a28019 - md5: 3ee026955c688f551a9999840cff4c67 - depends: - - libgcc >=13 - license: MIT - license_family: MIT - size: 68982 - timestamp: 1725267774142 -- kind: conda - name: libbrotlicommon - version: 1.1.0 - build: hb9d3cd8_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hb9d3cd8_2.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hb9d3cd8_2.conda sha256: d9db2de60ea917298e658143354a530e9ca5f9c63471c65cf47ab39fd2f429e3 md5: 41b599ed2b02abcfdd84302bff174b23 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 + arch: x86_64 + platform: linux license: MIT license_family: MIT size: 68851 timestamp: 1725267660471 -- kind: conda - name: libbrotlicommon - version: 1.1.0 - build: hd74edd7_2 - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.1.0-hd74edd7_2.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlicommon-1.1.0-h86ecc28_2.conda + sha256: 64112af913974b309d67fd342e065fd184347043a6387933b3db796778a28019 + md5: 3ee026955c688f551a9999840cff4c67 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 68982 + timestamp: 1725267774142 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.1.0-hd74edd7_2.conda sha256: 839dacb741bdbb25e58f42088a2001b649f4f12195aeb700b5ddfca3267749e5 md5: d0bf1dff146b799b319ea0434b93f779 depends: - __osx >=11.0 + arch: arm64 + platform: osx license: MIT license_family: MIT size: 68426 timestamp: 1725267943211 -- kind: conda - name: libbrotlidec - version: 1.1.0 - build: h86ecc28_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlidec-1.1.0-h86ecc28_2.conda - sha256: 94c808d9ca3eb6ef30976a9843e27f027cf3a1e84e8c6835cbb696b7bdb35c4c - md5: e64d0f3b59c7c4047446b97a8624a72d - depends: - - libbrotlicommon 1.1.0 h86ecc28_2 - - libgcc >=13 - license: MIT - license_family: MIT - size: 31708 - timestamp: 1725267783442 -- kind: conda - name: libbrotlidec - version: 1.1.0 - build: hb9d3cd8_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hb9d3cd8_2.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hb9d3cd8_2.conda sha256: 2892d512cad096cb03f1b66361deeab58b64e15ba525d6592bb6d609e7045edf md5: 9566f0bd264fbd463002e759b8a82401 depends: - __glibc >=2.17,<3.0.a0 - libbrotlicommon 1.1.0 hb9d3cd8_2 - libgcc >=13 + arch: x86_64 + platform: linux license: MIT license_family: MIT size: 32696 timestamp: 1725267669305 -- kind: conda - name: libbrotlidec - version: 1.1.0 - build: hd74edd7_2 - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.1.0-hd74edd7_2.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlidec-1.1.0-h86ecc28_2.conda + sha256: 94c808d9ca3eb6ef30976a9843e27f027cf3a1e84e8c6835cbb696b7bdb35c4c + md5: e64d0f3b59c7c4047446b97a8624a72d + depends: + - libbrotlicommon 1.1.0 h86ecc28_2 + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 31708 + timestamp: 1725267783442 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.1.0-hd74edd7_2.conda sha256: 6c6862eb274f21a7c0b60e5345467a12e6dda8b9af4438c66d496a2c1a538264 md5: 55e66e68ce55523a6811633dd1ac74e2 depends: - __osx >=11.0 - libbrotlicommon 1.1.0 hd74edd7_2 + arch: arm64 + platform: osx license: MIT license_family: MIT size: 28378 timestamp: 1725267980316 -- kind: conda - name: libbrotlienc - version: 1.1.0 - build: h86ecc28_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlienc-1.1.0-h86ecc28_2.conda - sha256: 41385e17bc73834b235c5aff12d6d82eccb534acb3c30986996f9dad92a0d54c - md5: 0e9bd365480c72b25c71a448257b537d - depends: - - libbrotlicommon 1.1.0 h86ecc28_2 - - libgcc >=13 - license: MIT - license_family: MIT - size: 290230 - timestamp: 1725267792697 -- kind: conda - name: libbrotlienc - version: 1.1.0 - build: hb9d3cd8_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.1.0-hb9d3cd8_2.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.1.0-hb9d3cd8_2.conda sha256: 779f58174e99de3600e939fa46eddb453ec5d3c60bb46cdaa8b4c127224dbf29 md5: 06f70867945ea6a84d35836af780f1de depends: - __glibc >=2.17,<3.0.a0 - libbrotlicommon 1.1.0 hb9d3cd8_2 - libgcc >=13 + arch: x86_64 + platform: linux license: MIT license_family: MIT size: 281750 timestamp: 1725267679782 -- kind: conda - name: libbrotlienc - version: 1.1.0 - build: hd74edd7_2 - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlienc-1.1.0-hd74edd7_2.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlienc-1.1.0-h86ecc28_2.conda + sha256: 41385e17bc73834b235c5aff12d6d82eccb534acb3c30986996f9dad92a0d54c + md5: 0e9bd365480c72b25c71a448257b537d + depends: + - libbrotlicommon 1.1.0 h86ecc28_2 + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 290230 + timestamp: 1725267792697 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlienc-1.1.0-hd74edd7_2.conda sha256: eeb1eb0d58b9d02bc1b98dc0a058f104ab168eb2f7d1c7bfa0570a12cfcdb7b7 md5: 4f3a434504c67b2c42565c0b85c1885c depends: - __osx >=11.0 - libbrotlicommon 1.1.0 hd74edd7_2 + arch: arm64 + platform: osx license: MIT license_family: MIT size: 279644 timestamp: 1725268003553 -- kind: conda - name: libcblas - version: 3.9.0 - build: 26_linux64_openblas +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-26_linux64_openblas.conda build_number: 26 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-26_linux64_openblas.conda sha256: 9c74e536c9bc868e356ffd43f81c2cb398aec84b40fcadc312315b164a5500ee md5: ebcc5f37a435aa3c19640533c82f8d76 depends: @@ -4741,17 +3787,14 @@ packages: - liblapack 3.9.0 26_linux64_openblas - liblapacke 3.9.0 26_linux64_openblas - blas * openblas + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD size: 16336 timestamp: 1734432570482 -- kind: conda - name: libcblas - version: 3.9.0 - build: 26_linuxaarch64_openblas +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-26_linuxaarch64_openblas.conda build_number: 26 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-26_linuxaarch64_openblas.conda sha256: 521e78be0c4170f229c43e1a6c94337a72db3ebcbe6e5960f8413aa438dcb8f9 md5: d77f943ae4083f3aeddca698f2d28262 depends: @@ -4760,17 +3803,14 @@ packages: - blas * openblas - liblapacke 3.9.0 26_linuxaarch64_openblas - liblapack 3.9.0 26_linuxaarch64_openblas + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD size: 16398 timestamp: 1734432580937 -- kind: conda - name: libcblas - version: 3.9.0 - build: 26_osxarm64_openblas +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-26_osxarm64_openblas.conda build_number: 26 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-26_osxarm64_openblas.conda sha256: 27a29ef6b2fd2179bc3a0bb9db351f078ba140ca10485dca147c399639f84c93 md5: a0e9980fe12d42f6d0c0ec009f67e948 depends: @@ -4779,60 +3819,48 @@ packages: - liblapack 3.9.0 26_osxarm64_openblas - liblapacke 3.9.0 26_osxarm64_openblas - blas * openblas + arch: arm64 + platform: osx license: BSD-3-Clause license_family: BSD size: 16628 timestamp: 1734433061517 -- kind: conda - name: libcrc32c - version: 1.1.2 - build: h01db608_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libcrc32c-1.1.2-h01db608_0.tar.bz2 - sha256: b8b8c57a87da86b3ea24280fd6aa8efaf92f4e684b606bf2db5d3cb06ffbe2ea - md5: 268ee639c17ada0002fb04dd21816cc2 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcrc32c-1.1.2-h9c3ff4c_0.tar.bz2 + sha256: fd1d153962764433fe6233f34a72cdeed5dcf8a883a85769e8295ce940b5b0c5 + md5: c965a5aa0d5c1c37ffc62dff36e28400 depends: - libgcc-ng >=9.4.0 - libstdcxx-ng >=9.4.0 + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD - size: 18669 - timestamp: 1633683724891 -- kind: conda - name: libcrc32c - version: 1.1.2 - build: h9c3ff4c_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libcrc32c-1.1.2-h9c3ff4c_0.tar.bz2 - sha256: fd1d153962764433fe6233f34a72cdeed5dcf8a883a85769e8295ce940b5b0c5 - md5: c965a5aa0d5c1c37ffc62dff36e28400 + size: 20440 + timestamp: 1633683576494 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcrc32c-1.1.2-h01db608_0.tar.bz2 + sha256: b8b8c57a87da86b3ea24280fd6aa8efaf92f4e684b606bf2db5d3cb06ffbe2ea + md5: 268ee639c17ada0002fb04dd21816cc2 depends: - libgcc-ng >=9.4.0 - libstdcxx-ng >=9.4.0 + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD - size: 20440 - timestamp: 1633683576494 -- kind: conda - name: libcrc32c - version: 1.1.2 - build: hbdafb3b_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libcrc32c-1.1.2-hbdafb3b_0.tar.bz2 + size: 18669 + timestamp: 1633683724891 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcrc32c-1.1.2-hbdafb3b_0.tar.bz2 sha256: 58477b67cc719060b5b069ba57161e20ba69b8695d154a719cb4b60caf577929 md5: 32bd82a6a625ea6ce090a81c3d34edeb depends: - libcxx >=11.1.0 + arch: arm64 + platform: osx license: BSD-3-Clause license_family: BSD size: 18765 timestamp: 1633683992603 -- kind: conda - name: libcurl - version: 8.11.1 - build: h332b0f4_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.11.1-h332b0f4_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.11.1-h332b0f4_0.conda sha256: 3cd4075b2a7b5562e46c8ec626f6f9ca57aeecaa94ff7df57eca26daa94c9906 md5: 2b3e0081006dc21e8bf53a91c83a055c depends: @@ -4844,16 +3872,13 @@ packages: - libzlib >=1.3.1,<2.0a0 - openssl >=3.4.0,<4.0a0 - zstd >=1.5.6,<1.6.0a0 + arch: x86_64 + platform: linux license: curl license_family: MIT size: 423011 timestamp: 1733999897624 -- kind: conda - name: libcurl - version: 8.11.1 - build: h6702fde_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libcurl-8.11.1-h6702fde_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcurl-8.11.1-h6702fde_0.conda sha256: 9fc65d21a58f4aad1bc39dfb94a178893aeb035850c5cf0ed9736674279f390b md5: 7dec1cd271c403d1636bda5aa388a55d depends: @@ -4864,16 +3889,13 @@ packages: - libzlib >=1.3.1,<2.0a0 - openssl >=3.4.0,<4.0a0 - zstd >=1.5.6,<1.6.0a0 + arch: aarch64 + platform: linux license: curl license_family: MIT size: 440737 timestamp: 1733999835504 -- kind: conda - name: libcurl - version: 8.11.1 - build: h73640d1_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.11.1-h73640d1_0.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.11.1-h73640d1_0.conda sha256: f47c35938144c23278987c7d12096f6a42d7c850ffc277222b032073412383b6 md5: 46d7524cabfdd199bffe63f8f19a552b depends: @@ -4884,74 +3906,58 @@ packages: - libzlib >=1.3.1,<2.0a0 - openssl >=3.4.0,<4.0a0 - zstd >=1.5.6,<1.6.0a0 + arch: arm64 + platform: osx license: curl license_family: MIT size: 385098 timestamp: 1734000160270 -- kind: conda - name: libcxx - version: 19.1.6 - build: ha82da77_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.6-ha82da77_1.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.6-ha82da77_1.conda sha256: 2b2443404503cd862385fd2f2a2c73f9624686fd1e5a45050b4034cfc06904ec md5: ce5252d8db110cdb4ae4173d0a63c7c5 depends: - __osx >=11.0 + arch: arm64 + platform: osx license: Apache-2.0 WITH LLVM-exception license_family: Apache size: 520992 timestamp: 1734494699681 -- kind: conda - name: libdeflate - version: '1.23' - build: h4ddbbb0_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.23-h4ddbbb0_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.23-h4ddbbb0_0.conda sha256: 511d801626d02f4247a04fff957cc6e9ec4cc7e8622bd9acd076bcdc5de5fe66 md5: 8dfae1d2e74767e9ce36d5fa0d8605db depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 + arch: x86_64 + platform: linux license: MIT license_family: MIT size: 72255 timestamp: 1734373823254 -- kind: conda - name: libdeflate - version: '1.23' - build: h5e3c512_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libdeflate-1.23-h5e3c512_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libdeflate-1.23-h5e3c512_0.conda sha256: 959419d87cd2b789a9055db95704c614f31aeb70bef7949fa2f734122a3a2863 md5: 7e7ca2607b11b180120cefc2354fc0cb depends: - libgcc >=13 + arch: aarch64 + platform: linux license: MIT license_family: MIT size: 69862 timestamp: 1734373858306 -- kind: conda - name: libdeflate - version: '1.23' - build: hec38601_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.23-hec38601_0.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.23-hec38601_0.conda sha256: 887c02deaed6d583459eba6367023e36d8761085b2f7126e389424f57155da53 md5: 1d8b9588be14e71df38c525767a1ac30 depends: - __osx >=11.0 + arch: arm64 + platform: osx license: MIT license_family: MIT size: 54132 timestamp: 1734373971372 -- kind: conda - name: libedit - version: 3.1.20240808 - build: pl5321h7949ede_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20240808-pl5321h7949ede_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20240808-pl5321h7949ede_0.conda sha256: 4d0d69ddf9cc7d724a1ccf3a9852e44c8aea9825692582bac2c4e8d21ec95ccd md5: 8247f80f3dc464d9322e85007e307fe8 depends: @@ -4959,154 +3965,105 @@ packages: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - ncurses >=6.5,<7.0a0 + arch: x86_64 + platform: linux license: BSD-2-Clause license_family: BSD size: 134657 timestamp: 1736191912705 -- kind: conda - name: libedit - version: 3.1.20240808 - build: pl5321h976ea20_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20240808-pl5321h976ea20_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20240808-pl5321h976ea20_0.conda sha256: 031daea98cf278f858b7957ad5dc475f1b5673cd5e718850529401ced64cef2c md5: 0be40129d3dd1a152fff29a85f0785d0 depends: - ncurses - libgcc >=13 - ncurses >=6.5,<7.0a0 + arch: aarch64 + platform: linux license: BSD-2-Clause license_family: BSD size: 148120 timestamp: 1736192137151 -- kind: conda - name: libedit - version: 3.1.20240808 - build: pl5321hafb1f1b_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20240808-pl5321hafb1f1b_0.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20240808-pl5321hafb1f1b_0.conda sha256: fb934d7a03279ec8eae4bf1913ac9058fcf6fed35290d8ffa6e04157f396a3b1 md5: af89aa84ffb5ee551ce0c137b951a3b5 depends: - ncurses - __osx >=11.0 - ncurses >=6.5,<7.0a0 + arch: arm64 + platform: osx license: BSD-2-Clause license_family: BSD size: 107634 timestamp: 1736192034117 -- kind: conda - name: libev - version: '4.33' - build: h31becfc_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libev-4.33-h31becfc_2.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda + sha256: 1cd6048169fa0395af74ed5d8f1716e22c19a81a8a36f934c110ca3ad4dd27b4 + md5: 172bf1cd1ff8629f2b1179945ed45055 + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + size: 112766 + timestamp: 1702146165126 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libev-4.33-h31becfc_2.conda sha256: 973af77e297f1955dd1f69c2cbdc5ab9dfc88388a5576cd152cda178af0fd006 md5: a9a13cb143bbaa477b1ebaefbe47a302 depends: - libgcc-ng >=12 + arch: aarch64 + platform: linux license: BSD-2-Clause license_family: BSD size: 115123 timestamp: 1702146237623 -- kind: conda - name: libev - version: '4.33' - build: h93a5062_2 - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libev-4.33-h93a5062_2.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libev-4.33-h93a5062_2.conda sha256: 95cecb3902fbe0399c3a7e67a5bed1db813e5ab0e22f4023a5e0f722f2cc214f md5: 36d33e440c31857372a72137f78bacf5 + arch: arm64 + platform: osx license: BSD-2-Clause license_family: BSD size: 107458 timestamp: 1702146414478 -- kind: conda - name: libev - version: '4.33' - build: hd590300_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda - sha256: 1cd6048169fa0395af74ed5d8f1716e22c19a81a8a36f934c110ca3ad4dd27b4 - md5: 172bf1cd1ff8629f2b1179945ed45055 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libevent-2.1.12-hf998b51_1.conda + sha256: 2e14399d81fb348e9d231a82ca4d816bf855206923759b69ad006ba482764131 + md5: a1cfcc585f0c42bf8d5546bb1dfb668d depends: - libgcc-ng >=12 - license: BSD-2-Clause - license_family: BSD - size: 112766 - timestamp: 1702146165126 -- kind: conda - name: libevent - version: 2.1.12 - build: h2757513_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libevent-2.1.12-h2757513_1.conda - sha256: 8c136d7586259bb5c0d2b913aaadc5b9737787ae4f40e3ad1beaf96c80b919b7 - md5: 1a109764bff3bdc7bdd84088347d71dc - depends: - openssl >=3.1.1,<4.0a0 + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD - size: 368167 - timestamp: 1685726248899 -- kind: conda - name: libevent - version: 2.1.12 - build: h4ba1bb4_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libevent-2.1.12-h4ba1bb4_1.conda + size: 427426 + timestamp: 1685725977222 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libevent-2.1.12-h4ba1bb4_1.conda sha256: 01333cc7d6e6985dd5700b43660d90e9e58049182017fd24862088ecbe1458e4 md5: 96ae6083cd1ac9f6bc81631ac835b317 depends: - libgcc-ng >=12 - openssl >=3.1.1,<4.0a0 + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD size: 438992 timestamp: 1685726046519 -- kind: conda - name: libevent - version: 2.1.12 - build: hf998b51_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libevent-2.1.12-hf998b51_1.conda - sha256: 2e14399d81fb348e9d231a82ca4d816bf855206923759b69ad006ba482764131 - md5: a1cfcc585f0c42bf8d5546bb1dfb668d +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libevent-2.1.12-h2757513_1.conda + sha256: 8c136d7586259bb5c0d2b913aaadc5b9737787ae4f40e3ad1beaf96c80b919b7 + md5: 1a109764bff3bdc7bdd84088347d71dc depends: - - libgcc-ng >=12 - openssl >=3.1.1,<4.0a0 + arch: arm64 + platform: osx license: BSD-3-Clause license_family: BSD - size: 427426 - timestamp: 1685725977222 -- kind: conda - name: libexpat - version: 2.6.4 - build: h286801f_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.4-h286801f_0.conda - sha256: e42ab5ace927ee7c84e3f0f7d813671e1cf3529f5f06ee5899606630498c2745 - md5: 38d2656dd914feb0cab8c629370768bf - depends: - - __osx >=11.0 - constrains: - - expat 2.6.4.* - license: MIT - license_family: MIT - size: 64693 - timestamp: 1730967175868 -- kind: conda - name: libexpat - version: 2.6.4 - build: h5888daf_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda + size: 368167 + timestamp: 1685726248899 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda sha256: 56541b98447b58e52d824bd59d6382d609e11de1f8adf20b23143e353d2b8d26 md5: db833e03127376d461e1e13e76f09b6c depends: @@ -5114,76 +4071,70 @@ packages: - libgcc >=13 constrains: - expat 2.6.4.* + arch: x86_64 + platform: linux license: MIT license_family: MIT size: 73304 timestamp: 1730967041968 -- kind: conda - name: libexpat - version: 2.6.4 - build: h5ad3122_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.6.4-h5ad3122_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.6.4-h5ad3122_0.conda sha256: f42e758009ba9db90d1fe7992bc3e60d0c52f71fb20923375d2c44ae69a5a2b3 md5: f1b3fab36861b3ce945a13f0dfdfc688 depends: - libgcc >=13 constrains: - expat 2.6.4.* + arch: aarch64 + platform: linux license: MIT license_family: MIT size: 72345 timestamp: 1730967203789 -- kind: conda - name: libffi - version: 3.4.2 - build: h3422bc3_5 - build_number: 5 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 - sha256: 41b3d13efb775e340e4dba549ab5c029611ea6918703096b2eaa9c015c0750ca - md5: 086914b672be056eb70fd4285b6783b6 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.4-h286801f_0.conda + sha256: e42ab5ace927ee7c84e3f0f7d813671e1cf3529f5f06ee5899606630498c2745 + md5: 38d2656dd914feb0cab8c629370768bf + depends: + - __osx >=11.0 + constrains: + - expat 2.6.4.* + arch: arm64 + platform: osx license: MIT license_family: MIT - size: 39020 - timestamp: 1636488587153 -- kind: conda - name: libffi - version: 3.4.2 - build: h3557bc0_5 - build_number: 5 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.4.2-h3557bc0_5.tar.bz2 + size: 64693 + timestamp: 1730967175868 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.2-h7f98852_5.tar.bz2 + sha256: ab6e9856c21709b7b517e940ae7028ae0737546122f83c2aa5d692860c3b149e + md5: d645c6d2ac96843a2bfaccd2d62b3ac3 + depends: + - libgcc-ng >=9.4.0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 58292 + timestamp: 1636488182923 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.4.2-h3557bc0_5.tar.bz2 sha256: 7e9258a102480757fe3faeb225a3ca04dffd10fecd2a958c65cdb4cdf75f2c3c md5: dddd85f4d52121fab0a8b099c5e06501 depends: - libgcc-ng >=9.4.0 + arch: aarch64 + platform: linux license: MIT license_family: MIT size: 59450 timestamp: 1636488255090 -- kind: conda - name: libffi - version: 3.4.2 - build: h7f98852_5 - build_number: 5 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.2-h7f98852_5.tar.bz2 - sha256: ab6e9856c21709b7b517e940ae7028ae0737546122f83c2aa5d692860c3b149e - md5: d645c6d2ac96843a2bfaccd2d62b3ac3 - depends: - - libgcc-ng >=9.4.0 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 + sha256: 41b3d13efb775e340e4dba549ab5c029611ea6918703096b2eaa9c015c0750ca + md5: 086914b672be056eb70fd4285b6783b6 + arch: arm64 + platform: osx license: MIT license_family: MIT - size: 58292 - timestamp: 1636488182923 -- kind: conda - name: libgcc - version: 14.2.0 - build: h77fa898_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h77fa898_1.conda + size: 39020 + timestamp: 1636488587153 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h77fa898_1.conda sha256: 53eb8a79365e58849e7b1a068d31f4f9e718dc938d6f2c03e960345739a03569 md5: 3cb76c3f10d3bc7f1105b2fc9db984df depends: @@ -5192,17 +4143,13 @@ packages: constrains: - libgomp 14.2.0 h77fa898_1 - libgcc-ng ==14.2.0=*_1 + arch: x86_64 + platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL size: 848745 timestamp: 1729027721139 -- kind: conda - name: libgcc - version: 14.2.0 - build: he277a41_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-14.2.0-he277a41_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-14.2.0-he277a41_1.conda sha256: 5d56757ccad208c79214395b00d006d8d18929a4ba49c47bd9460789a7620943 md5: 511b511c5445e324066c3377481bcab8 depends: @@ -5210,175 +4157,131 @@ packages: constrains: - libgcc-ng ==14.2.0=*_1 - libgomp 14.2.0 he277a41_1 + arch: aarch64 + platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL size: 535243 timestamp: 1729089435134 -- kind: conda - name: libgcc-ng - version: 14.2.0 - build: h69a702a_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_1.conda sha256: 3a76969c80e9af8b6e7a55090088bc41da4cffcde9e2c71b17f44d37b7cb87f7 md5: e39480b9ca41323497b05492a63bc35b depends: - libgcc 14.2.0 h77fa898_1 + arch: x86_64 + platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL size: 54142 timestamp: 1729027726517 -- kind: conda - name: libgcc-ng - version: 14.2.0 - build: he9431aa_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-14.2.0-he9431aa_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-14.2.0-he9431aa_1.conda sha256: 9b5cf168a6c7361cae869cb74b716766ee7c6d6b3f6172b32ba9bf91135efdc4 md5: 0694c249c61469f2c0f7e2990782af21 depends: - libgcc 14.2.0 he277a41_1 + arch: aarch64 + platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL size: 54104 timestamp: 1729089444587 -- kind: conda - name: libgfortran - version: 5.0.0 - build: 13_2_0_hd922786_3 - build_number: 3 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda - sha256: 44e541b4821c96b28b27fef5630883a60ce4fee91fd9c79f25a199f8f73f337b - md5: 4a55d9e169114b2b90d3ec4604cd7bbf - depends: - - libgfortran5 13.2.0 hf226fd6_3 - license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - size: 110233 - timestamp: 1707330749033 -- kind: conda - name: libgfortran - version: 14.2.0 - build: h69a702a_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_1.conda sha256: fc9e7f22a17faf74da904ebfc4d88699013d2992e55505e4aa0eb01770290977 md5: f1fd30127802683586f768875127a987 depends: - libgfortran5 14.2.0 hd5240d6_1 constrains: - libgfortran-ng ==14.2.0=*_1 + arch: x86_64 + platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL size: 53997 timestamp: 1729027752995 -- kind: conda - name: libgfortran - version: 14.2.0 - build: he9431aa_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_1.conda sha256: cb66e411fa32a5c6040f4e5e2a63c00897aae4c3133a9c004c2e929ccf19575b md5: 0294b92d2f47a240bebb1e3336b495f1 depends: - libgfortran5 14.2.0 hb6113d0_1 constrains: - libgfortran-ng ==14.2.0=*_1 + arch: aarch64 + platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL size: 54105 timestamp: 1729089471124 -- kind: conda - name: libgfortran5 - version: 13.2.0 - build: hf226fd6_3 - build_number: 3 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda - sha256: bafc679eedb468a86aa4636061c55966186399ee0a04b605920d208d97ac579a - md5: 66ac81d54e95c534ae488726c1f698ea +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda + sha256: 44e541b4821c96b28b27fef5630883a60ce4fee91fd9c79f25a199f8f73f337b + md5: 4a55d9e169114b2b90d3ec4604cd7bbf depends: - - llvm-openmp >=8.0.0 - constrains: - - libgfortran 5.0.0 13_2_0_*_3 + - libgfortran5 13.2.0 hf226fd6_3 + arch: arm64 + platform: osx license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 997381 - timestamp: 1707330687590 -- kind: conda - name: libgfortran5 - version: 14.2.0 - build: hb6113d0_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_1.conda + size: 110233 + timestamp: 1707330749033 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hd5240d6_1.conda + sha256: d149a37ca73611e425041f33b9d8dbed6e52ec506fe8cc1fc0ee054bddeb6d5d + md5: 9822b874ea29af082e5d36098d25427d + depends: + - libgcc >=14.2.0 + constrains: + - libgfortran 14.2.0 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 1462645 + timestamp: 1729027735353 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_1.conda sha256: a87ff46d19916403cbf68cf1d785bf56b4d1ab7b2552468d2ea775d70782493f md5: fc068e11b10e18f184e027782baa12b6 depends: - libgcc >=14.2.0 constrains: - libgfortran 14.2.0 + arch: aarch64 + platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL size: 1102158 timestamp: 1729089452640 -- kind: conda - name: libgfortran5 - version: 14.2.0 - build: hd5240d6_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hd5240d6_1.conda - sha256: d149a37ca73611e425041f33b9d8dbed6e52ec506fe8cc1fc0ee054bddeb6d5d - md5: 9822b874ea29af082e5d36098d25427d +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda + sha256: bafc679eedb468a86aa4636061c55966186399ee0a04b605920d208d97ac579a + md5: 66ac81d54e95c534ae488726c1f698ea depends: - - libgcc >=14.2.0 + - llvm-openmp >=8.0.0 constrains: - - libgfortran 14.2.0 + - libgfortran 5.0.0 13_2_0_*_3 + arch: arm64 + platform: osx license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 1462645 - timestamp: 1729027735353 -- kind: conda - name: libgomp - version: 14.2.0 - build: h77fa898_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h77fa898_1.conda + size: 997381 + timestamp: 1707330687590 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h77fa898_1.conda sha256: 1911c29975ec99b6b906904040c855772ccb265a1c79d5d75c8ceec4ed89cd63 md5: cc3573974587f12dda90d96e3e55a702 depends: - _libgcc_mutex 0.1 conda_forge + arch: x86_64 + platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL size: 460992 timestamp: 1729027639220 -- kind: conda - name: libgomp - version: 14.2.0 - build: he277a41_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_1.conda sha256: 5aa53874a5e57a00f2e0c2e2910684eb674429cd5fcb803619b226a73e89aedf md5: 376f0e73abbda6d23c0cb749adc195ef + arch: aarch64 + platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL size: 463521 timestamp: 1729089357313 -- kind: conda - name: libgoogle-cloud - version: 2.33.0 - build: h2b5623c_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.33.0-h2b5623c_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.33.0-h2b5623c_1.conda sha256: ae48ee93e2c226bf682f1e389c2fd51ae7bf77c2ce4b3aee069764f4be1c63f2 md5: 61829a8dd5f4e2327e707572065bae41 depends: @@ -5393,17 +4296,13 @@ packages: - openssl >=3.4.0,<4.0a0 constrains: - libgoogle-cloud 2.33.0 *_1 + arch: x86_64 + platform: linux license: Apache-2.0 license_family: Apache size: 1254656 timestamp: 1735648569457 -- kind: conda - name: libgoogle-cloud - version: 2.33.0 - build: hccf9d24_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-2.33.0-hccf9d24_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-2.33.0-hccf9d24_1.conda sha256: d3d4def86d880431928799ba90ca97e57c2f05677c03af8de2337502926c492c md5: a2724014eb04f14bd71d35f45b062dd0 depends: @@ -5417,17 +4316,13 @@ packages: - openssl >=3.4.0,<4.0a0 constrains: - libgoogle-cloud 2.33.0 *_1 + arch: aarch64 + platform: linux license: Apache-2.0 license_family: Apache size: 1253019 timestamp: 1735649566849 -- kind: conda - name: libgoogle-cloud - version: 2.33.0 - build: hdbe95d5_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-2.33.0-hdbe95d5_1.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-2.33.0-hdbe95d5_1.conda sha256: ce95aca02451694a4154c7770b6addf4fb859abf17912de6ec947da8469a56ce md5: 91de1fbab8610974c0094c266bc63435 depends: @@ -5441,17 +4336,13 @@ packages: - openssl >=3.4.0,<4.0a0 constrains: - libgoogle-cloud 2.33.0 *_1 + arch: arm64 + platform: osx license: Apache-2.0 license_family: Apache size: 877594 timestamp: 1735648230965 -- kind: conda - name: libgoogle-cloud-storage - version: 2.33.0 - build: h0121fbd_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.33.0-h0121fbd_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.33.0-h0121fbd_1.conda sha256: 41022523320ca8633a6c615710823e596efadb50f06d724e1a0c81e27994f257 md5: b0cfb5044685a7a9fa43ae669124f0a0 depends: @@ -5464,39 +4355,13 @@ packages: - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - openssl + arch: x86_64 + platform: linux license: Apache-2.0 license_family: Apache size: 784357 timestamp: 1735648759177 -- kind: conda - name: libgoogle-cloud-storage - version: 2.33.0 - build: h7081f7f_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-storage-2.33.0-h7081f7f_1.conda - sha256: c0524a22064bc17f5c037da09ba54cc9e767741ef645178e499750c44bec2531 - md5: af8e51382464d4cc2d0054977c40a732 - depends: - - __osx >=11.0 - - libabseil - - libcrc32c >=1.1.2,<1.2.0a0 - - libcurl - - libcxx >=18 - - libgoogle-cloud 2.33.0 hdbe95d5_1 - - libzlib >=1.3.1,<2.0a0 - - openssl - license: Apache-2.0 - license_family: Apache - size: 526963 - timestamp: 1735649222088 -- kind: conda - name: libgoogle-cloud-storage - version: 2.33.0 - build: hb9b2b65_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-storage-2.33.0-hb9b2b65_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-storage-2.33.0-hb9b2b65_1.conda sha256: 5eda1cbba68709b91b370b3792c9cfd7bec4ac4e2262f0887d12e1f000ae1191 md5: 45df2267ff4d8ce532e8d300ce0b0829 depends: @@ -5508,43 +4373,31 @@ packages: - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - openssl + arch: aarch64 + platform: linux license: Apache-2.0 license_family: Apache size: 737518 timestamp: 1735649773462 -- kind: conda - name: libgrpc - version: 1.67.1 - build: h0a426d6_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libgrpc-1.67.1-h0a426d6_1.conda - sha256: 630edf63981818ff590367cb95fddbed0f5a390464d0952c90ec81de899e84a6 - md5: 8a3cba079d6ac985e7d73c76a678fbb4 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-storage-2.33.0-h7081f7f_1.conda + sha256: c0524a22064bc17f5c037da09ba54cc9e767741ef645178e499750c44bec2531 + md5: af8e51382464d4cc2d0054977c40a732 depends: - __osx >=11.0 - - c-ares >=1.34.4,<2.0a0 - - libabseil * cxx17* - - libabseil >=20240722.0,<20240723.0a0 + - libabseil + - libcrc32c >=1.1.2,<1.2.0a0 + - libcurl - libcxx >=18 - - libprotobuf >=5.28.3,<5.28.4.0a0 - - libre2-11 >=2024.7.2 + - libgoogle-cloud 2.33.0 hdbe95d5_1 - libzlib >=1.3.1,<2.0a0 - - openssl >=3.4.0,<4.0a0 - - re2 - constrains: - - grpc-cpp =1.67.1 + - openssl + arch: arm64 + platform: osx license: Apache-2.0 - license_family: APACHE - size: 5311706 - timestamp: 1735585137716 -- kind: conda - name: libgrpc - version: 1.67.1 - build: h25350d4_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.67.1-h25350d4_1.conda + license_family: Apache + size: 526963 + timestamp: 1735649222088 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.67.1-h25350d4_1.conda sha256: 014627485b3cf0ea18e04c0bab07be7fb98722a3aeeb58477acc7e1c3d2f911e md5: 0c6497a760b99a926c7c12b74951a39c depends: @@ -5561,17 +4414,13 @@ packages: - re2 constrains: - grpc-cpp =1.67.1 + arch: x86_64 + platform: linux license: Apache-2.0 license_family: APACHE size: 7792251 timestamp: 1735584856826 -- kind: conda - name: libgrpc - version: 1.67.1 - build: hf7ccdd3_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libgrpc-1.67.1-hf7ccdd3_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgrpc-1.67.1-hf7ccdd3_1.conda sha256: 3fa173dc1d7456aac2b26937daae86a08432a31640e3d6569c62edc661fc9bbe md5: 8fb41a425bebaeb3d0fa568503612e64 depends: @@ -5587,103 +4436,98 @@ packages: - re2 constrains: - grpc-cpp =1.67.1 + arch: aarch64 + platform: linux license: Apache-2.0 license_family: APACHE size: 7430006 timestamp: 1735585769731 -- kind: conda - name: libiconv - version: '1.17' - build: h0d3ecfb_2 - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.17-h0d3ecfb_2.conda - sha256: bc7de5097b97bcafcf7deaaed505f7ce02f648aac8eccc0d5a47cc599a1d0304 - md5: 69bda57310071cf6d2b86caf11573d2d +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgrpc-1.67.1-h0a426d6_1.conda + sha256: 630edf63981818ff590367cb95fddbed0f5a390464d0952c90ec81de899e84a6 + md5: 8a3cba079d6ac985e7d73c76a678fbb4 + depends: + - __osx >=11.0 + - c-ares >=1.34.4,<2.0a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libre2-11 >=2024.7.2 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + - re2 + constrains: + - grpc-cpp =1.67.1 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + size: 5311706 + timestamp: 1735585137716 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-hd590300_2.conda + sha256: 8ac2f6a9f186e76539439e50505d98581472fedb347a20e7d1f36429849f05c9 + md5: d66573916ffcf376178462f1b61c941e + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux license: LGPL-2.1-only - size: 676469 - timestamp: 1702682458114 -- kind: conda - name: libiconv - version: '1.17' - build: h31becfc_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libiconv-1.17-h31becfc_2.conda + size: 705775 + timestamp: 1702682170569 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libiconv-1.17-h31becfc_2.conda sha256: a30e09d089cb75a0d5b8e5c354694c1317da98261185ed65aa3793e741060614 md5: 9a8eb13f14de7d761555a98712e6df65 depends: - libgcc-ng >=12 + arch: aarch64 + platform: linux license: LGPL-2.1-only size: 705787 timestamp: 1702684557134 -- kind: conda - name: libiconv - version: '1.17' - build: hd590300_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-hd590300_2.conda - sha256: 8ac2f6a9f186e76539439e50505d98581472fedb347a20e7d1f36429849f05c9 - md5: d66573916ffcf376178462f1b61c941e +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.17-h0d3ecfb_2.conda + sha256: bc7de5097b97bcafcf7deaaed505f7ce02f648aac8eccc0d5a47cc599a1d0304 + md5: 69bda57310071cf6d2b86caf11573d2d + arch: arm64 + platform: osx + license: LGPL-2.1-only + size: 676469 + timestamp: 1702682458114 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda + sha256: b954e09b7e49c2f2433d6f3bb73868eda5e378278b0f8c1dd10a7ef090e14f2f + md5: ea25936bb4080d843790b586850f82b8 depends: - libgcc-ng >=12 - license: LGPL-2.1-only - size: 705775 - timestamp: 1702682170569 -- kind: conda - name: libjpeg-turbo - version: 3.0.0 - build: h31becfc_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libjpeg-turbo-3.0.0-h31becfc_1.conda + constrains: + - jpeg <0.0.0a + arch: x86_64 + platform: linux + license: IJG AND BSD-3-Clause AND Zlib + size: 618575 + timestamp: 1694474974816 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libjpeg-turbo-3.0.0-h31becfc_1.conda sha256: 675bc1f2a8581cd34a86c412663ec29c5f90c1d9f8d11866aa1ade5cdbdf8429 md5: ed24e702928be089d9ba3f05618515c6 depends: - libgcc-ng >=12 constrains: - jpeg <0.0.0a + arch: aarch64 + platform: linux license: IJG AND BSD-3-Clause AND Zlib size: 647126 timestamp: 1694475003570 -- kind: conda - name: libjpeg-turbo - version: 3.0.0 - build: hb547adb_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.0.0-hb547adb_1.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.0.0-hb547adb_1.conda sha256: a42054eaa38e84fc1e5ab443facac4bbc9d1b6b6f23f54b7bf4f1eb687e1d993 md5: 3ff1e053dc3a2b8e36b9bfa4256a58d1 constrains: - jpeg <0.0.0a + arch: arm64 + platform: osx license: IJG AND BSD-3-Clause AND Zlib size: 547541 timestamp: 1694475104253 -- kind: conda - name: libjpeg-turbo - version: 3.0.0 - build: hd590300_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda - sha256: b954e09b7e49c2f2433d6f3bb73868eda5e378278b0f8c1dd10a7ef090e14f2f - md5: ea25936bb4080d843790b586850f82b8 - depends: - - libgcc-ng >=12 - constrains: - - jpeg <0.0.0a - license: IJG AND BSD-3-Clause AND Zlib - size: 618575 - timestamp: 1694474974816 -- kind: conda - name: liblapack - version: 3.9.0 - build: 26_linux64_openblas +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-26_linux64_openblas.conda build_number: 26 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-26_linux64_openblas.conda sha256: b76458c36331376911e0f98fa68109e02f4d5e5ebfffa79587ac69cef748bba1 md5: 3792604c43695d6a273bc5faaac47d48 depends: @@ -5692,17 +4536,14 @@ packages: - libcblas 3.9.0 26_linux64_openblas - liblapacke 3.9.0 26_linux64_openblas - blas * openblas + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD size: 16338 timestamp: 1734432576650 -- kind: conda - name: liblapack - version: 3.9.0 - build: 26_linuxaarch64_openblas +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-26_linuxaarch64_openblas.conda build_number: 26 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-26_linuxaarch64_openblas.conda sha256: a42bd01498efe2ccf6d08d56ac3cbd3ceab79e06699ff5aac3da8e45a66738f7 md5: a5d4e18876393633da62fd8492c00156 depends: @@ -5711,17 +4552,14 @@ packages: - blas * openblas - liblapacke 3.9.0 26_linuxaarch64_openblas - libcblas 3.9.0 26_linuxaarch64_openblas + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD size: 16403 timestamp: 1734432585123 -- kind: conda - name: liblapack - version: 3.9.0 - build: 26_osxarm64_openblas +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-26_osxarm64_openblas.conda build_number: 26 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-26_osxarm64_openblas.conda sha256: dd6d9a21e672aee4332f019c8229ce70cf5eaf6c2f4cbd1443b105fb66c00dc5 md5: cebad79038a75cfd28fa90d147a2d34d depends: @@ -5730,59 +4568,44 @@ packages: - liblapacke 3.9.0 26_osxarm64_openblas - libcblas 3.9.0 26_osxarm64_openblas - blas * openblas + arch: arm64 + platform: osx license: BSD-3-Clause license_family: BSD size: 16624 timestamp: 1734433068120 -- kind: conda - name: liblzma - version: 5.6.3 - build: h39f12f2_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.3-h39f12f2_1.conda - sha256: d863b8257406918ffdc50ae65502f2b2d6cede29404d09a094f59509d6a0aaf1 - md5: b2553114a7f5e20ccd02378a77d836aa +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.3-hb9d3cd8_1.conda + sha256: e6e425252f3839e2756e4af1ea2074dffd3396c161bf460629f9dfd6a65f15c6 + md5: 2ecf2f1c7e4e21fcfe6423a51a992d84 depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux license: 0BSD - size: 99129 - timestamp: 1733407496073 -- kind: conda - name: liblzma - version: 5.6.3 - build: h86ecc28_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.3-h86ecc28_1.conda + size: 111132 + timestamp: 1733407410083 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.3-h86ecc28_1.conda sha256: d1cce0b7d62d1e54e2164d3e0667ee808efc6c3870256e5b47a150cd0bf46824 md5: eb08b903681f9f2432c320e8ed626723 depends: - libgcc >=13 + arch: aarch64 + platform: linux license: 0BSD size: 124138 timestamp: 1733409137214 -- kind: conda - name: liblzma - version: 5.6.3 - build: hb9d3cd8_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.3-hb9d3cd8_1.conda - sha256: e6e425252f3839e2756e4af1ea2074dffd3396c161bf460629f9dfd6a65f15c6 - md5: 2ecf2f1c7e4e21fcfe6423a51a992d84 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.3-h39f12f2_1.conda + sha256: d863b8257406918ffdc50ae65502f2b2d6cede29404d09a094f59509d6a0aaf1 + md5: b2553114a7f5e20ccd02378a77d836aa depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 + - __osx >=11.0 + arch: arm64 + platform: osx license: 0BSD - size: 111132 - timestamp: 1733407410083 -- kind: conda - name: libnghttp2 - version: 1.64.0 - build: h161d5f1_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda + size: 99129 + timestamp: 1733407496073 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda sha256: b0f2b3695b13a989f75d8fd7f4778e1c7aabe3b36db83f0fe80b2cd812c0e975 md5: 19e57602824042dfd0446292ef90488b depends: @@ -5794,36 +4617,13 @@ packages: - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - openssl >=3.3.2,<4.0a0 + arch: x86_64 + platform: linux license: MIT license_family: MIT size: 647599 timestamp: 1729571887612 -- kind: conda - name: libnghttp2 - version: 1.64.0 - build: h6d7220d_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.64.0-h6d7220d_0.conda - sha256: 00cc685824f39f51be5233b54e19f45abd60de5d8847f1a56906f8936648b72f - md5: 3408c02539cee5f1141f9f11450b6a51 - depends: - - __osx >=11.0 - - c-ares >=1.34.2,<2.0a0 - - libcxx >=17 - - libev >=4.33,<4.34.0a0 - - libev >=4.33,<5.0a0 - - libzlib >=1.3.1,<2.0a0 - - openssl >=3.3.2,<4.0a0 - license: MIT - license_family: MIT - size: 566719 - timestamp: 1729572385640 -- kind: conda - name: libnghttp2 - version: 1.64.0 - build: hc8609a4_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libnghttp2-1.64.0-hc8609a4_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnghttp2-1.64.0-hc8609a4_0.conda sha256: c093c6d370aadbf0409c20b6c54c488ee2f6fea976181919fcc63e87ee232673 md5: f52c614fa214a8bedece9421c771670d depends: @@ -5834,65 +4634,52 @@ packages: - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - openssl >=3.3.2,<4.0a0 + arch: aarch64 + platform: linux license: MIT license_family: MIT size: 714610 timestamp: 1729571912479 -- kind: conda - name: libnsl - version: 2.0.1 - build: h31becfc_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda - sha256: fd18c2b75d7411096428d36a70b36b1a17e31f7b8956b6905d145792d49e97f8 - md5: c14f32510f694e3185704d89967ec422 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.64.0-h6d7220d_0.conda + sha256: 00cc685824f39f51be5233b54e19f45abd60de5d8847f1a56906f8936648b72f + md5: 3408c02539cee5f1141f9f11450b6a51 depends: - - libgcc-ng >=12 - license: LGPL-2.1-only - license_family: GPL - size: 34501 - timestamp: 1697358973269 -- kind: conda - name: libnsl - version: 2.0.1 - build: hd590300_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda + - __osx >=11.0 + - c-ares >=1.34.2,<2.0a0 + - libcxx >=17 + - libev >=4.33,<4.34.0a0 + - libev >=4.33,<5.0a0 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.3.2,<4.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 566719 + timestamp: 1729572385640 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda sha256: 26d77a3bb4dceeedc2a41bd688564fe71bf2d149fdcf117049970bc02ff1add6 md5: 30fd6e37fe21f86f4bd26d6ee73eeec7 depends: - libgcc-ng >=12 + arch: x86_64 + platform: linux license: LGPL-2.1-only license_family: GPL size: 33408 timestamp: 1697359010159 -- kind: conda - name: libopenblas - version: 0.3.28 - build: openmp_hf332438_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.28-openmp_hf332438_1.conda - sha256: 62bb669c37a845129096f73d446cdb6bb170e4927f2fea2b661329680dbbc373 - md5: 40803a48d947c8639da6704e9a44d3ce +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda + sha256: fd18c2b75d7411096428d36a70b36b1a17e31f7b8956b6905d145792d49e97f8 + md5: c14f32510f694e3185704d89967ec422 depends: - - __osx >=11.0 - - libgfortran 5.* - - libgfortran5 >=13.2.0 - - llvm-openmp >=18.1.8 - constrains: - - openblas >=0.3.28,<0.3.29.0a0 - license: BSD-3-Clause - license_family: BSD - size: 4165774 - timestamp: 1730772154295 -- kind: conda - name: libopenblas - version: 0.3.28 - build: pthreads_h94d23a6_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.28-pthreads_h94d23a6_1.conda + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: LGPL-2.1-only + license_family: GPL + size: 34501 + timestamp: 1697358973269 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.28-pthreads_h94d23a6_1.conda sha256: 99ba271d8a80a1af2723f2e124ffd91d850074c0389c067e6d96d72a2dbfeabe md5: 62857b389e42b36b686331bec0922050 depends: @@ -5902,17 +4689,13 @@ packages: - libgfortran5 >=14.2.0 constrains: - openblas >=0.3.28,<0.3.29.0a0 + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD size: 5578513 timestamp: 1730772671118 -- kind: conda - name: libopenblas - version: 0.3.28 - build: pthreads_h9d3fd7e_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.28-pthreads_h9d3fd7e_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.28-pthreads_h9d3fd7e_1.conda sha256: 30623a40764e935aa77e0d4db54c1a1589189a9bf3a03fdb445505c1e319b5a6 md5: e8dde93dd199da3c1f2c1fcfd0042cd4 depends: @@ -5921,17 +4704,30 @@ packages: - libgfortran5 >=14.2.0 constrains: - openblas >=0.3.28,<0.3.29.0a0 + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD size: 4793435 timestamp: 1730773029647 -- kind: conda - name: libparquet - version: 18.1.0 - build: h081d1f1_7_cpu +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.28-openmp_hf332438_1.conda + sha256: 62bb669c37a845129096f73d446cdb6bb170e4927f2fea2b661329680dbbc373 + md5: 40803a48d947c8639da6704e9a44d3ce + depends: + - __osx >=11.0 + - libgfortran 5.* + - libgfortran5 >=13.2.0 + - llvm-openmp >=18.1.8 + constrains: + - openblas >=0.3.28,<0.3.29.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 4165774 + timestamp: 1730772154295 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-h081d1f1_7_cpu.conda build_number: 7 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-h081d1f1_7_cpu.conda sha256: 55945b761130f60abdecf1551907ecfd05cb4a5958cf74d855b30c005ecb3592 md5: b97013ef4e1dd2cf11594f06d5b5e83a depends: @@ -5941,36 +4737,14 @@ packages: - libstdcxx >=13 - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 + arch: x86_64 + platform: linux license: Apache-2.0 license_family: APACHE size: 1205598 timestamp: 1735684849150 -- kind: conda - name: libparquet - version: 18.1.0 - build: h636d7b7_7_cpu +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-hfc78867_7_cpu.conda build_number: 7 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-h636d7b7_7_cpu.conda - sha256: bf42e43542a90edd86ba5aa5fd4543671625f1bc35f62be32688f00e18bae990 - md5: 93de9ba66a20db32a2646d313794b3a8 - depends: - - __osx >=11.0 - - libarrow 18.1.0 h0ad35bc_7_cpu - - libcxx >=18 - - libthrift >=0.21.0,<0.21.1.0a0 - - openssl >=3.4.0,<4.0a0 - license: Apache-2.0 - license_family: APACHE - size: 873251 - timestamp: 1735684582558 -- kind: conda - name: libparquet - version: 18.1.0 - build: hfc78867_7_cpu - build_number: 7 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-hfc78867_7_cpu.conda sha256: 6dff9bbe731dc2cefe96bd9c7981d2cbef2b564a3152840a29c9b6a493ea50d9 md5: 184bec7a9392ab6ba8134041e81971d6 depends: @@ -5979,79 +4753,79 @@ packages: - libstdcxx >=13 - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 + arch: aarch64 + platform: linux license: Apache-2.0 license_family: APACHE size: 1117825 timestamp: 1735685495511 -- kind: conda - name: libpng - version: 1.6.45 - build: h3783ad8_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.45-h3783ad8_0.conda - sha256: ddcc81c049b32fb5eb3ac1f9a6d3a589c08325c8ec6f89eb912208b19330d68c - md5: d554c806d065b1763cb9e1cb1d25741d +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-h636d7b7_7_cpu.conda + build_number: 7 + sha256: bf42e43542a90edd86ba5aa5fd4543671625f1bc35f62be32688f00e18bae990 + md5: 93de9ba66a20db32a2646d313794b3a8 depends: - __osx >=11.0 - - libzlib >=1.3.1,<2.0a0 - license: zlib-acknowledgement - size: 263151 - timestamp: 1736339184358 -- kind: conda - name: libpng - version: 1.6.45 - build: h943b412_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.45-h943b412_0.conda + - libarrow 18.1.0 h0ad35bc_7_cpu + - libcxx >=18 + - libthrift >=0.21.0,<0.21.1.0a0 + - openssl >=3.4.0,<4.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + size: 873251 + timestamp: 1735684582558 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.45-h943b412_0.conda sha256: b8f5b5ba9a14dedf7c97c01300de492b1b52b68eacbc3249a13fdbfa82349a2f md5: 85cbdaacad93808395ac295b5667d25b depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux license: zlib-acknowledgement size: 289426 timestamp: 1736339058310 -- kind: conda - name: libpng - version: 1.6.45 - build: hec79eb8_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.45-hec79eb8_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.45-hec79eb8_0.conda sha256: a06daa523a0d5775acb96e6e3f083adc2ab1383eb8f664513dbc663f439c9cca md5: 9a8716c16b40acc7148263de1d0a403b depends: - libgcc >=13 - libzlib >=1.3.1,<2.0a0 + arch: aarch64 + platform: linux license: zlib-acknowledgement size: 299051 timestamp: 1736344007986 -- kind: conda - name: libprotobuf - version: 5.28.3 - build: h3bd63a1_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.3-h3bd63a1_1.conda - sha256: f58a16b13ad53346903c833e266f83c3d770a43a432659b98710aed85ca885e7 - md5: bdbfea4cf45ae36652c6bbcc2e7ebe91 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.45-h3783ad8_0.conda + sha256: ddcc81c049b32fb5eb3ac1f9a6d3a589c08325c8ec6f89eb912208b19330d68c + md5: d554c806d065b1763cb9e1cb1d25741d depends: - __osx >=11.0 + - libzlib >=1.3.1,<2.0a0 + arch: arm64 + platform: osx + license: zlib-acknowledgement + size: 263151 + timestamp: 1736339184358 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda + sha256: 51125ebb8b7152e4a4e69fd2398489c4ec8473195c27cde3cbdf1cb6d18c5493 + md5: d8703f1ffe5a06356f06467f1d0b9464 + depends: + - __glibc >=2.17,<3.0.a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libcxx >=18 + - libgcc >=13 + - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD - size: 2271580 - timestamp: 1735576361997 -- kind: conda - name: libprotobuf - version: 5.28.3 - build: h44a3b7b_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.3-h44a3b7b_1.conda + size: 2960815 + timestamp: 1735577210663 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.3-h44a3b7b_1.conda sha256: ecb69f2b1668e784b41ba667493be846662d5ef702bef64fb2e013bb1364cdc4 md5: 68f807f7cc13951652bbe048253fd405 depends: @@ -6060,57 +4834,45 @@ packages: - libgcc >=13 - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD size: 2788074 timestamp: 1735576315676 -- kind: conda - name: libprotobuf - version: 5.28.3 - build: h6128344_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda - sha256: 51125ebb8b7152e4a4e69fd2398489c4ec8473195c27cde3cbdf1cb6d18c5493 - md5: d8703f1ffe5a06356f06467f1d0b9464 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.3-h3bd63a1_1.conda + sha256: f58a16b13ad53346903c833e266f83c3d770a43a432659b98710aed85ca885e7 + md5: bdbfea4cf45ae36652c6bbcc2e7ebe91 depends: - - __glibc >=2.17,<3.0.a0 + - __osx >=11.0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libgcc >=13 - - libstdcxx >=13 + - libcxx >=18 - libzlib >=1.3.1,<2.0a0 + arch: arm64 + platform: osx license: BSD-3-Clause license_family: BSD - size: 2960815 - timestamp: 1735577210663 -- kind: conda - name: libre2-11 - version: 2024.07.02 - build: h07bc746_2 - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h07bc746_2.conda - sha256: 112a73ad483353751d4c5d63648c69a4d6fcebf5e1b698a860a3f5124fc3db96 - md5: 6b1e3624d3488016ca4f1ca0c412efaa + size: 2271580 + timestamp: 1735576361997 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_2.conda + sha256: 4420f8362c71251892ba1eeb957c5e445e4e1596c0c651c28d0d8b415fe120c7 + md5: b2fede24428726dd867611664fb372e8 depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libcxx >=18 + - libgcc >=13 + - libstdcxx >=13 constrains: - re2 2024.07.02.* + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD - size: 167155 - timestamp: 1735541067807 -- kind: conda - name: libre2-11 - version: 2024.07.02 - build: h18dbdb1_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_2.conda + size: 209793 + timestamp: 1735541054068 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_2.conda sha256: 862c20de0120f802e618dcb25913d00c5b82f91f4be60b2d46a774e851adc2f6 md5: 9a7dbbaab49f76a6f36e5c9d98e323a7 depends: @@ -6120,227 +4882,176 @@ packages: - libstdcxx >=13 constrains: - re2 2024.07.02.* + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD size: 204305 timestamp: 1735540986919 -- kind: conda - name: libre2-11 - version: 2024.07.02 - build: hbbce691_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_2.conda - sha256: 4420f8362c71251892ba1eeb957c5e445e4e1596c0c651c28d0d8b415fe120c7 - md5: b2fede24428726dd867611664fb372e8 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h07bc746_2.conda + sha256: 112a73ad483353751d4c5d63648c69a4d6fcebf5e1b698a860a3f5124fc3db96 + md5: 6b1e3624d3488016ca4f1ca0c412efaa depends: - - __glibc >=2.17,<3.0.a0 + - __osx >=11.0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libgcc >=13 - - libstdcxx >=13 + - libcxx >=18 constrains: - re2 2024.07.02.* + arch: arm64 + platform: osx license: BSD-3-Clause license_family: BSD - size: 209793 - timestamp: 1735541054068 -- kind: conda - name: libsodium - version: 1.0.20 - build: h4ab18f5_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda + size: 167155 + timestamp: 1735541067807 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda sha256: 0105bd108f19ea8e6a78d2d994a6d4a8db16d19a41212070d2d1d48a63c34161 md5: a587892d3c13b6621a6091be690dbca2 depends: - libgcc-ng >=12 + arch: x86_64 + platform: linux license: ISC size: 205978 timestamp: 1716828628198 -- kind: conda - name: libsodium - version: 1.0.20 - build: h68df207_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.20-h68df207_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.20-h68df207_0.conda sha256: 448df5ea3c5cf1af785aad46858d7a5be0522f4234a4dc9bb764f4d11ff3b981 md5: 2e4a8f23bebdcb85ca8e5a0fbe75666a depends: - libgcc-ng >=12 + arch: aarch64 + platform: linux license: ISC size: 177394 timestamp: 1716828514515 -- kind: conda - name: libsodium - version: 1.0.20 - build: h99b78c6_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda sha256: fade8223e1e1004367d7101dd17261003b60aa576df6d7802191f8972f7470b1 md5: a7ce36e284c5faaf93c220dfc39e3abd depends: - __osx >=11.0 + arch: arm64 + platform: osx license: ISC size: 164972 timestamp: 1716828607917 -- kind: conda - name: libsqlite - version: 3.47.2 - build: h3f77e49_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.47.2-h3f77e49_0.conda - sha256: f192f3c8973de9ec4c214990715f13b781965247a5cedf9162e7f9e699cfc3c4 - md5: 122d6f29470f1a991e85608e77e56a8a +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.47.2-hee588c1_0.conda + sha256: 48af21ebc2cbf358976f1e0f4a0ab9e91dfc83d0ef337cf3837c6f5bc22fb352 + md5: b58da17db24b6e08bcbf8fed2fb8c915 depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux license: Unlicense - size: 850553 - timestamp: 1733762057506 -- kind: conda - name: libsqlite - version: 3.47.2 - build: h5eb1b54_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.47.2-h5eb1b54_0.conda + size: 873551 + timestamp: 1733761824646 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.47.2-h5eb1b54_0.conda sha256: 885a27fa84a5a73ed9779168c02b6c386e2fc7a53f0566b32a09ceca146b42b4 md5: d4bf59f8783a4a66c0aec568f6de3ff4 depends: - libgcc >=13 - libzlib >=1.3.1,<2.0a0 + arch: aarch64 + platform: linux license: Unlicense size: 1042182 timestamp: 1733761913736 -- kind: conda - name: libsqlite - version: 3.47.2 - build: hee588c1_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.47.2-hee588c1_0.conda - sha256: 48af21ebc2cbf358976f1e0f4a0ab9e91dfc83d0ef337cf3837c6f5bc22fb352 - md5: b58da17db24b6e08bcbf8fed2fb8c915 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.47.2-h3f77e49_0.conda + sha256: f192f3c8973de9ec4c214990715f13b781965247a5cedf9162e7f9e699cfc3c4 + md5: 122d6f29470f1a991e85608e77e56a8a depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 + - __osx >=11.0 - libzlib >=1.3.1,<2.0a0 + arch: arm64 + platform: osx license: Unlicense - size: 873551 - timestamp: 1733761824646 -- kind: conda - name: libssh2 - version: 1.11.1 - build: h9cc3647_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.1-h9cc3647_0.conda - sha256: f7047c6ed44bcaeb04432e8c74da87591940d091b0a3940c0d884b7faa8062e9 - md5: ddc7194676c285513706e5fc64f214d7 + size: 850553 + timestamp: 1733762057506 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hf672d98_0.conda + sha256: 0407ac9fda2bb67e11e357066eff144c845801d00b5f664efbc48813af1e7bb9 + md5: be2de152d8073ef1c01b7728475f2fe7 depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 - libzlib >=1.3.1,<2.0a0 - openssl >=3.4.0,<4.0a0 + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD - size: 279028 - timestamp: 1732349599461 -- kind: conda - name: libssh2 - version: 1.11.1 - build: ha41c0db_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libssh2-1.11.1-ha41c0db_0.conda + size: 304278 + timestamp: 1732349402869 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libssh2-1.11.1-ha41c0db_0.conda sha256: 40f2af5357457546bd11cd64a3b9043d83865180f65ce602515c35f353be35c7 md5: aeffe03c0e598f015aab08dbb04f6ee4 depends: - libgcc >=13 - libzlib >=1.3.1,<2.0a0 - openssl >=3.4.0,<4.0a0 + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD size: 311577 timestamp: 1732349396421 -- kind: conda - name: libssh2 - version: 1.11.1 - build: hf672d98_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hf672d98_0.conda - sha256: 0407ac9fda2bb67e11e357066eff144c845801d00b5f664efbc48813af1e7bb9 - md5: be2de152d8073ef1c01b7728475f2fe7 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.1-h9cc3647_0.conda + sha256: f7047c6ed44bcaeb04432e8c74da87591940d091b0a3940c0d884b7faa8062e9 + md5: ddc7194676c285513706e5fc64f214d7 depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - libzlib >=1.3.1,<2.0a0 - openssl >=3.4.0,<4.0a0 + arch: arm64 + platform: osx license: BSD-3-Clause license_family: BSD - size: 304278 - timestamp: 1732349402869 -- kind: conda - name: libstdcxx - version: 14.2.0 - build: h3f4de04_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_1.conda - sha256: 519556d2c93f1b487091ce046d62e762286177f4a670ec10e16005177d0bcab3 - md5: 37f489acd39e22b623d2d1e5ac6d195c - depends: - - libgcc 14.2.0 he277a41_1 - license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - size: 3816794 - timestamp: 1729089463404 -- kind: conda - name: libstdcxx - version: 14.2.0 - build: hc0a3c3a_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-hc0a3c3a_1.conda + size: 279028 + timestamp: 1732349599461 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-hc0a3c3a_1.conda sha256: 4661af0eb9bdcbb5fb33e5d0023b001ad4be828fccdcc56500059d56f9869462 md5: 234a5554c53625688d51062645337328 depends: - libgcc 14.2.0 h77fa898_1 + arch: x86_64 + platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL size: 3893695 timestamp: 1729027746910 -- kind: conda - name: libstdcxx-ng - version: 14.2.0 - build: h4852527_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_1.conda + sha256: 519556d2c93f1b487091ce046d62e762286177f4a670ec10e16005177d0bcab3 + md5: 37f489acd39e22b623d2d1e5ac6d195c + depends: + - libgcc 14.2.0 he277a41_1 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 3816794 + timestamp: 1729089463404 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_1.conda sha256: 25bb30b827d4f6d6f0522cc0579e431695503822f144043b93c50237017fffd8 md5: 8371ac6457591af2cf6159439c1fd051 depends: - libstdcxx 14.2.0 hc0a3c3a_1 + arch: x86_64 + platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL size: 54105 timestamp: 1729027780628 -- kind: conda - name: libstdcxx-ng - version: 14.2.0 - build: hf1166c9_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_1.conda sha256: 9f97461bd55a2745a7a0941f3502a047f15bfe7bb2952dc7fb204b3202f866fd md5: 0e75771b8a03afae5a2c6ce71bc733f5 depends: - libstdcxx 14.2.0 h3f4de04_1 + arch: aarch64 + platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL size: 54133 timestamp: 1729089498541 -- kind: conda - name: libthrift - version: 0.21.0 - build: h0e7cc3e_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libthrift-0.21.0-h0e7cc3e_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/libthrift-0.21.0-h0e7cc3e_0.conda sha256: ebb395232973c18745b86c9a399a4725b2c39293c9a91b8e59251be013db42f0 md5: dcb95c0a98ba9ff737f7ae482aef7833 depends: @@ -6350,16 +5061,13 @@ packages: - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - openssl >=3.3.2,<4.0a0 + arch: x86_64 + platform: linux license: Apache-2.0 license_family: APACHE size: 425773 timestamp: 1727205853307 -- kind: conda - name: libthrift - version: 0.21.0 - build: h154c74f_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libthrift-0.21.0-h154c74f_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libthrift-0.21.0-h154c74f_0.conda sha256: f04ab1417aca1687edff9c30d8423ace285eb8c053dc16d595c6e47cfeefb274 md5: c28792bf37f4ecdce8e3cb9e40750650 depends: @@ -6368,16 +5076,13 @@ packages: - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - openssl >=3.3.2,<4.0a0 + arch: aarch64 + platform: linux license: Apache-2.0 license_family: APACHE size: 417329 timestamp: 1727205944238 -- kind: conda - name: libthrift - version: 0.21.0 - build: h64651cc_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libthrift-0.21.0-h64651cc_0.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libthrift-0.21.0-h64651cc_0.conda sha256: 7a6c7d5f58cbbc2ccd6493b4b821639fdb0701b9b04c737a949e8cb6adf1c9ad md5: 7ce2bd2f650f8c31ad7ba4c7bfea61b7 depends: @@ -6386,39 +5091,32 @@ packages: - libevent >=2.1.12,<2.1.13.0a0 - libzlib >=1.3.1,<2.0a0 - openssl >=3.3.2,<4.0a0 + arch: arm64 + platform: osx license: Apache-2.0 license_family: APACHE size: 324342 timestamp: 1727206096912 -- kind: conda - name: libtiff - version: 4.7.0 - build: h551f018_3 - build_number: 3 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-h551f018_3.conda - sha256: 91417846157e04992801438a496b151df89604b2e7c6775d6f701fcd0cbed5ae - md5: a5d084a957563e614ec0c0196d890654 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hd9ff511_3.conda + sha256: b224e16b88d76ea95e4af56e2bc638c603bd26a770b98d117d04541d3aafa002 + md5: 0ea6510969e1296cc19966fad481f6de depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 - lerc >=4.0.0,<5.0a0 - - libcxx >=18 - libdeflate >=1.23,<1.24.0a0 + - libgcc >=13 - libjpeg-turbo >=3.0.0,<4.0a0 - liblzma >=5.6.3,<6.0a0 + - libstdcxx >=13 - libwebp-base >=1.4.0,<2.0a0 - libzlib >=1.3.1,<2.0a0 - zstd >=1.5.6,<1.6.0a0 + arch: x86_64 + platform: linux license: HPND - size: 370600 - timestamp: 1734398863052 -- kind: conda - name: libtiff - version: 4.7.0 - build: h88f7998_3 - build_number: 3 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.0-h88f7998_3.conda + size: 428173 + timestamp: 1734398813264 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.0-h88f7998_3.conda sha256: 5888bd66ba7606ae8596856c7dac800940ecad0aed77d6aa37db69d434c81cf0 md5: 36a0ea4a173338c8725dc0807e99cf22 depends: @@ -6431,239 +5129,189 @@ packages: - libwebp-base >=1.4.0,<2.0a0 - libzlib >=1.3.1,<2.0a0 - zstd >=1.5.6,<1.6.0a0 + arch: aarch64 + platform: linux license: HPND size: 464699 timestamp: 1734398752249 -- kind: conda - name: libtiff - version: 4.7.0 - build: hd9ff511_3 - build_number: 3 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hd9ff511_3.conda - sha256: b224e16b88d76ea95e4af56e2bc638c603bd26a770b98d117d04541d3aafa002 - md5: 0ea6510969e1296cc19966fad481f6de +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-h551f018_3.conda + sha256: 91417846157e04992801438a496b151df89604b2e7c6775d6f701fcd0cbed5ae + md5: a5d084a957563e614ec0c0196d890654 depends: - - __glibc >=2.17,<3.0.a0 + - __osx >=11.0 - lerc >=4.0.0,<5.0a0 + - libcxx >=18 - libdeflate >=1.23,<1.24.0a0 - - libgcc >=13 - libjpeg-turbo >=3.0.0,<4.0a0 - liblzma >=5.6.3,<6.0a0 - - libstdcxx >=13 - libwebp-base >=1.4.0,<2.0a0 - libzlib >=1.3.1,<2.0a0 - zstd >=1.5.6,<1.6.0a0 + arch: arm64 + platform: osx license: HPND - size: 428173 - timestamp: 1734398813264 -- kind: conda - name: libutf8proc - version: 2.9.0 - build: h5505292_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.9.0-h5505292_1.conda - sha256: ea88f06e97ef8fa2490f7594f8885bb542577226edf8abba3144302d951a53c2 - md5: f777470d31c78cd0abe1903a2fda436f + size: 370600 + timestamp: 1734398863052 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.9.0-hb9d3cd8_1.conda + sha256: 9794e6388e780c3310d46f773bbc924d4053375c3fcdb07a704b57f4616db928 + md5: 1e936bd23d737aac62a18e9a1e7f8b18 depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux license: MIT license_family: MIT - size: 83000 - timestamp: 1732868631531 -- kind: conda - name: libutf8proc - version: 2.9.0 - build: h86ecc28_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.9.0-h86ecc28_1.conda + size: 81500 + timestamp: 1732868419835 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.9.0-h86ecc28_1.conda sha256: 37a1833c55f9945724cd4b3eb6a1469032cc754a1dd725f191c34154ad2ba7e4 md5: 699f155da290be3a1a64c932c6728991 depends: - libgcc >=13 + arch: aarch64 + platform: linux license: MIT license_family: MIT size: 81526 timestamp: 1732868466862 -- kind: conda - name: libutf8proc - version: 2.9.0 - build: hb9d3cd8_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.9.0-hb9d3cd8_1.conda - sha256: 9794e6388e780c3310d46f773bbc924d4053375c3fcdb07a704b57f4616db928 - md5: 1e936bd23d737aac62a18e9a1e7f8b18 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.9.0-h5505292_1.conda + sha256: ea88f06e97ef8fa2490f7594f8885bb542577226edf8abba3144302d951a53c2 + md5: f777470d31c78cd0abe1903a2fda436f depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 + - __osx >=11.0 + arch: arm64 + platform: osx license: MIT license_family: MIT - size: 81500 - timestamp: 1732868419835 -- kind: conda - name: libuuid - version: 2.38.1 - build: h0b41bf4_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda + size: 83000 + timestamp: 1732868631531 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda sha256: 787eb542f055a2b3de553614b25f09eefb0a0931b0c87dbcce6efdfd92f04f18 md5: 40b61aab5c7ba9ff276c41cfffe6b80b depends: - libgcc-ng >=12 + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD size: 33601 timestamp: 1680112270483 -- kind: conda - name: libuuid - version: 2.38.1 - build: hb4cce97_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda sha256: 616277b0c5f7616c2cdf36f6c316ea3f9aa5bb35f2d4476a349ab58b9b91675f md5: 000e30b09db0b7c775b21695dff30969 depends: - libgcc-ng >=12 + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD size: 35720 timestamp: 1680113474501 -- kind: conda - name: libuv - version: 1.49.2 - build: h7ab814d_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libuv-1.49.2-h7ab814d_0.conda - sha256: 0e5176af1e788ad5006cf261c4ea5a288a935fda48993b0240ddd2e562dc3d02 - md5: 4bc348e3a1a74d20a3f9beb866d75e0a +- conda: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.49.2-hb9d3cd8_0.conda + sha256: a35cd81cd1a9add11024097da83cc06b0aae83186fe4124b77710876f37d8f31 + md5: 070e3c9ddab77e38799d5c30b109c633 depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux license: MIT license_family: MIT - size: 410500 - timestamp: 1729322654121 -- kind: conda - name: libuv - version: 1.49.2 - build: h86ecc28_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libuv-1.49.2-h86ecc28_0.conda + size: 884647 + timestamp: 1729322566955 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuv-1.49.2-h86ecc28_0.conda sha256: adf4eca89339ac7780f2394e7e6699be81259eb91f79f9d9fdf2c1bc6b26f210 md5: 1899e1ec2be63386c41c4db31d3056af depends: - libgcc >=13 + arch: aarch64 + platform: linux license: MIT license_family: MIT size: 627484 timestamp: 1729322575379 -- kind: conda - name: libuv - version: 1.49.2 - build: hb9d3cd8_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.49.2-hb9d3cd8_0.conda - sha256: a35cd81cd1a9add11024097da83cc06b0aae83186fe4124b77710876f37d8f31 - md5: 070e3c9ddab77e38799d5c30b109c633 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libuv-1.49.2-h7ab814d_0.conda + sha256: 0e5176af1e788ad5006cf261c4ea5a288a935fda48993b0240ddd2e562dc3d02 + md5: 4bc348e3a1a74d20a3f9beb866d75e0a depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 + - __osx >=11.0 + arch: arm64 + platform: osx license: MIT license_family: MIT - size: 884647 - timestamp: 1729322566955 -- kind: conda - name: libwebp-base - version: 1.5.0 - build: h0886dbf_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libwebp-base-1.5.0-h0886dbf_0.conda + size: 410500 + timestamp: 1729322654121 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.5.0-h851e524_0.conda + sha256: c45283fd3e90df5f0bd3dbcd31f59cdd2b001d424cf30a07223655413b158eaf + md5: 63f790534398730f59e1b899c3644d4a + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + constrains: + - libwebp 1.5.0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 429973 + timestamp: 1734777489810 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libwebp-base-1.5.0-h0886dbf_0.conda sha256: b3d881a0ae08bb07fff7fa8ead506c8d2e0388733182fe4f216f3ec5d61ffcf0 md5: 95ef4a689b8cc1b7e18b53784d88f96b depends: - libgcc >=13 constrains: - libwebp 1.5.0 + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD size: 362623 timestamp: 1734779054659 -- kind: conda - name: libwebp-base - version: 1.5.0 - build: h2471fea_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.5.0-h2471fea_0.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.5.0-h2471fea_0.conda sha256: f8bdb876b4bc8cb5df47c28af29188de8911c3fea4b799a33743500149de3f4a md5: 569466afeb84f90d5bb88c11cc23d746 depends: - __osx >=11.0 constrains: - libwebp 1.5.0 + arch: arm64 + platform: osx license: BSD-3-Clause license_family: BSD size: 290013 timestamp: 1734777593617 -- kind: conda - name: libwebp-base - version: 1.5.0 - build: h851e524_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.5.0-h851e524_0.conda - sha256: c45283fd3e90df5f0bd3dbcd31f59cdd2b001d424cf30a07223655413b158eaf - md5: 63f790534398730f59e1b899c3644d4a +- conda: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda + sha256: 666c0c431b23c6cec6e492840b176dde533d48b7e6fb8883f5071223433776aa + md5: 92ed62436b625154323d40d5f2f11dd7 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - constrains: - - libwebp 1.5.0 - license: BSD-3-Clause - license_family: BSD - size: 429973 - timestamp: 1734777489810 -- kind: conda - name: libxcb - version: 1.17.0 - build: h262b8f6_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcb-1.17.0-h262b8f6_0.conda - sha256: 461cab3d5650ac6db73a367de5c8eca50363966e862dcf60181d693236b1ae7b - md5: cd14ee5cca2464a425b1dbfc24d90db2 - depends: - - libgcc >=13 - pthread-stubs - xorg-libxau >=1.0.11,<2.0a0 - xorg-libxdmcp + arch: x86_64 + platform: linux license: MIT license_family: MIT - size: 397493 - timestamp: 1727280745441 -- kind: conda - name: libxcb - version: 1.17.0 - build: h8a09558_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda - sha256: 666c0c431b23c6cec6e492840b176dde533d48b7e6fb8883f5071223433776aa - md5: 92ed62436b625154323d40d5f2f11dd7 + size: 395888 + timestamp: 1727278577118 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcb-1.17.0-h262b8f6_0.conda + sha256: 461cab3d5650ac6db73a367de5c8eca50363966e862dcf60181d693236b1ae7b + md5: cd14ee5cca2464a425b1dbfc24d90db2 depends: - - __glibc >=2.17,<3.0.a0 - libgcc >=13 - pthread-stubs - xorg-libxau >=1.0.11,<2.0a0 - xorg-libxdmcp + arch: aarch64 + platform: linux license: MIT license_family: MIT - size: 395888 - timestamp: 1727278577118 -- kind: conda - name: libxcb - version: 1.17.0 - build: hdb1d25a_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libxcb-1.17.0-hdb1d25a_0.conda + size: 397493 + timestamp: 1727280745441 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxcb-1.17.0-hdb1d25a_0.conda sha256: bd3816218924b1e43b275863e21a3e13a5db4a6da74cca8e60bc3c213eb62f71 md5: af523aae2eca6dfa1c8eec693f5b9a79 depends: @@ -6671,45 +5319,33 @@ packages: - pthread-stubs - xorg-libxau >=1.0.11,<2.0a0 - xorg-libxdmcp + arch: arm64 + platform: osx license: MIT license_family: MIT size: 323658 timestamp: 1727278733917 -- kind: conda - name: libxcrypt - version: 4.4.36 - build: h31becfc_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda - sha256: 6b46c397644091b8a26a3048636d10b989b1bf266d4be5e9474bf763f828f41f - md5: b4df5d7d4b63579d081fd3a4cf99740e - depends: - - libgcc-ng >=12 - license: LGPL-2.1-or-later - size: 114269 - timestamp: 1702724369203 -- kind: conda - name: libxcrypt - version: 4.4.36 - build: hd590300_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda sha256: 6ae68e0b86423ef188196fff6207ed0c8195dd84273cb5623b85aa08033a410c md5: 5aa797f8787fe7a17d1b0821485b5adc depends: - libgcc-ng >=12 + arch: x86_64 + platform: linux license: LGPL-2.1-or-later size: 100393 timestamp: 1702724383534 -- kind: conda - name: libxml2 - version: 2.13.5 - build: h0d44e9d_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.5-h0d44e9d_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda + sha256: 6b46c397644091b8a26a3048636d10b989b1bf266d4be5e9474bf763f828f41f + md5: b4df5d7d4b63579d081fd3a4cf99740e + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: LGPL-2.1-or-later + size: 114269 + timestamp: 1702724369203 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.5-h0d44e9d_1.conda sha256: 306e18aa647d8208ad2cd0e62d84933222b2fbe93d2d53cd5283d2256b1d54de md5: f5b05674697ae7d2c5932766695945e1 depends: @@ -6720,173 +5356,133 @@ packages: - libzlib >=1.3.1,<2.0a0 constrains: - icu <0.0a0 + arch: x86_64 + platform: linux license: MIT license_family: MIT size: 689993 timestamp: 1733443678322 -- kind: conda - name: libxml2 - version: 2.13.5 - build: h178c5d8_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.5-h178c5d8_1.conda - sha256: d7af3f25a4cece170502acd38f2dafbea4521f373f46dcb28a37fbe6ac2da544 - md5: 3dc3cff0eca1640a6acbbfab2f78139e +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.5-h2e0c361_1.conda + sha256: dc0e86d35a836af6e99d18f50c6551fc64c53ed3a3da5a9fea90e78763cf14b4 + md5: 63410f85031930cde371dfe0ee89109a depends: - - __osx >=11.0 - icu >=75.1,<76.0a0 + - libgcc >=13 - libiconv >=1.17,<2.0a0 - liblzma >=5.6.3,<6.0a0 - libzlib >=1.3.1,<2.0a0 + arch: aarch64 + platform: linux license: MIT license_family: MIT - size: 582898 - timestamp: 1733443841584 -- kind: conda - name: libxml2 - version: 2.13.5 - build: h2e0c361_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.5-h2e0c361_1.conda - sha256: dc0e86d35a836af6e99d18f50c6551fc64c53ed3a3da5a9fea90e78763cf14b4 - md5: 63410f85031930cde371dfe0ee89109a + size: 732155 + timestamp: 1733443825814 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.5-h178c5d8_1.conda + sha256: d7af3f25a4cece170502acd38f2dafbea4521f373f46dcb28a37fbe6ac2da544 + md5: 3dc3cff0eca1640a6acbbfab2f78139e depends: + - __osx >=11.0 - icu >=75.1,<76.0a0 - - libgcc >=13 - libiconv >=1.17,<2.0a0 - liblzma >=5.6.3,<6.0a0 - libzlib >=1.3.1,<2.0a0 + arch: arm64 + platform: osx license: MIT license_family: MIT - size: 732155 - timestamp: 1733443825814 -- kind: conda - name: libzlib - version: 1.3.1 - build: h8359307_2 - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - sha256: ce34669eadaba351cd54910743e6a2261b67009624dbc7daeeafdef93616711b - md5: 369964e85dc26bfe78f41399b366c435 + size: 582898 + timestamp: 1733443841584 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda + sha256: d4bfe88d7cb447768e31650f06257995601f89076080e76df55e3112d4e47dc4 + md5: edb0dca6bc32e4f4789199455a1dbeb8 depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 constrains: - zlib 1.3.1 *_2 + arch: x86_64 + platform: linux license: Zlib license_family: Other - size: 46438 - timestamp: 1727963202283 -- kind: conda - name: libzlib - version: 1.3.1 - build: h86ecc28_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda + size: 60963 + timestamp: 1727963148474 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda sha256: 5a2c1eeef69342e88a98d1d95bff1603727ab1ff4ee0e421522acd8813439b84 md5: 08aad7cbe9f5a6b460d0976076b6ae64 depends: - libgcc >=13 constrains: - zlib 1.3.1 *_2 + arch: aarch64 + platform: linux license: Zlib license_family: Other size: 66657 timestamp: 1727963199518 -- kind: conda - name: libzlib - version: 1.3.1 - build: hb9d3cd8_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - sha256: d4bfe88d7cb447768e31650f06257995601f89076080e76df55e3112d4e47dc4 - md5: edb0dca6bc32e4f4789199455a1dbeb8 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda + sha256: ce34669eadaba351cd54910743e6a2261b67009624dbc7daeeafdef93616711b + md5: 369964e85dc26bfe78f41399b366c435 depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 + - __osx >=11.0 constrains: - zlib 1.3.1 *_2 + arch: arm64 + platform: osx license: Zlib license_family: Other - size: 60963 - timestamp: 1727963148474 -- kind: conda - name: llvm-openmp - version: 19.1.6 - build: hdb05f8b_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.6-hdb05f8b_0.conda + size: 46438 + timestamp: 1727963202283 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.6-hdb05f8b_0.conda sha256: a0f3e9139ab16f0a67b9d2bbabc15b78977168f4a5b5503fed4962dcb9a96102 md5: 34fdeffa0555a1a56f38839415cc066c depends: - __osx >=11.0 constrains: - openmp 19.1.6|19.1.6.* + arch: arm64 + platform: osx license: Apache-2.0 WITH LLVM-exception license_family: APACHE size: 281251 timestamp: 1734520462311 -- kind: conda - name: lz4-c - version: 1.10.0 - build: h286801f_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.10.0-h286801f_1.conda - sha256: 94d3e2a485dab8bdfdd4837880bde3dd0d701e2b97d6134b8806b7c8e69c8652 - md5: 01511afc6cc1909c5303cf31be17b44f - depends: - - __osx >=11.0 - - libcxx >=18 - license: BSD-2-Clause - license_family: BSD - size: 148824 - timestamp: 1733741047892 -- kind: conda - name: lz4-c - version: 1.10.0 - build: h5888daf_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.10.0-h5888daf_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.10.0-h5888daf_1.conda sha256: 47326f811392a5fd3055f0f773036c392d26fdb32e4d8e7a8197eed951489346 md5: 9de5350a85c4a20c685259b889aa6393 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - libstdcxx >=13 + arch: x86_64 + platform: linux license: BSD-2-Clause license_family: BSD size: 167055 timestamp: 1733741040117 -- kind: conda - name: lz4-c - version: 1.10.0 - build: h5ad3122_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.10.0-h5ad3122_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.10.0-h5ad3122_1.conda sha256: 67e55058d275beea76c1882399640c37b5be8be4eb39354c94b610928e9a0573 md5: 6654e411da94011e8fbe004eacb8fe11 depends: - libgcc >=13 - libstdcxx >=13 + arch: aarch64 + platform: linux license: BSD-2-Clause license_family: BSD size: 184953 timestamp: 1733740984533 -- kind: conda - name: markdown-it-py - version: 3.0.0 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: 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/lz4-c-1.10.0-h286801f_1.conda + sha256: 94d3e2a485dab8bdfdd4837880bde3dd0d701e2b97d6134b8806b7c8e69c8652 + md5: 01511afc6cc1909c5303cf31be17b44f + depends: + - __osx >=11.0 + - libcxx >=18 + arch: arm64 + platform: osx + license: BSD-2-Clause + license_family: BSD + size: 148824 + timestamp: 1733741047892 +- conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_1.conda sha256: 0fbacdfb31e55964152b24d5567e9a9996e1e7902fb08eb7d91b5fd6ce60803a md5: fee3164ac23dfca50cfcc8b85ddefb81 depends: @@ -6896,13 +5492,7 @@ packages: license_family: MIT size: 64430 timestamp: 1733250550053 -- kind: conda - name: markupsafe - version: 3.0.2 - build: py312h178313f_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_1.conda sha256: 4a6bf68d2a2b669fecc9a4a009abd1cf8e72c2289522ff00d81b5a6e51ae78f5 md5: eb227c3e0bf58f5bd69c0532b157975b depends: @@ -6912,17 +5502,13 @@ packages: - python_abi 3.12.* *_cp312 constrains: - jinja2 >=3.0.0 + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD size: 24604 timestamp: 1733219911494 -- kind: conda - name: markupsafe - version: 3.0.2 - build: py312h74ce7d3_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.2-py312h74ce7d3_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.2-py312h74ce7d3_1.conda sha256: 1d500158262f30b9c23e37d1c861fe76e127a3926d69b3b38c25d20d3faa6f9f md5: bc8607ab678073a0441808a31465f4fb depends: @@ -6931,17 +5517,13 @@ packages: - python_abi 3.12.* *_cp312 constrains: - jinja2 >=3.0.0 + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD size: 25079 timestamp: 1733220639175 -- kind: conda - name: markupsafe - version: 3.0.2 - build: py312h998013c_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312h998013c_1.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312h998013c_1.conda sha256: 4aa997b244014d3707eeef54ab0ee497d12c0d0d184018960cce096169758283 md5: 46e547061080fddf9cf95a0327e8aba6 depends: @@ -6951,18 +5533,13 @@ packages: - python_abi 3.12.* *_cp312 constrains: - jinja2 >=3.0.0 + arch: arm64 + platform: osx license: BSD-3-Clause license_family: BSD size: 24048 timestamp: 1733219945697 -- kind: conda - name: matplotlib-inline - version: 0.1.7 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda sha256: 69b7dc7131703d3d60da9b0faa6dd8acbf6f6c396224cf6aef3e855b8c0c41c6 md5: af6ab708897df59bd6e7283ceab1b56b depends: @@ -6972,78 +5549,47 @@ packages: license_family: BSD size: 14467 timestamp: 1733417051523 -- kind: conda - name: max - version: 25.1.0.dev2025010817 - build: release - subdir: noarch +- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011022-release.conda noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025010817-release.conda - sha256: 4ce81189e26dd06f188129580db0464f8ee9a081e195dad7082b2fa25fcf738e - md5: b46d770a5f45597ffc008bd224d8e91c - depends: - - max-core ==25.1.0.dev2025010817 release - - max-python >=25.1.0.dev2025010817,<26.0a0 - - mojo-jupyter ==25.1.0.dev2025010817 release - - mblack ==25.1.0.dev2025010817 release + sha256: fae148fb87d78d496ca5596fec75af7ec2c29e60416fcb856be56031cf798901 + md5: 59903ff40dee24c089ca2051858e6422 + depends: + - max-core ==25.1.0.dev2025011022 release + - max-python >=25.1.0.dev2025011022,<26.0a0 + - mojo-jupyter ==25.1.0.dev2025011022 release + - mblack ==25.1.0.dev2025011022 release license: LicenseRef-Modular-Proprietary - size: 9922 - timestamp: 1736357145809 -- kind: conda - name: max-core - version: 25.1.0.dev2025010817 - build: release - subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025010817-release.conda - sha256: 5459a1f6c379b01231649212ca7f5062c49208b5c0b2b17047b55011872727c2 - md5: 5bbb293b5216b098c424e7602823a460 + size: 9917 + timestamp: 1736547478654 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025011022-release.conda + sha256: 237e4007c732a59a619fcb0669f6b55a2a2c7f22bfa7b663ed68fde09ea02f69 + md5: 51be3ab7a5232a42df62bb75e983d05b depends: - - mblack ==25.1.0.dev2025010817 release - arch: x86_64 - platform: linux + - mblack ==25.1.0.dev2025011022 release license: LicenseRef-Modular-Proprietary - size: 247646542 - timestamp: 1736357145807 -- kind: conda - name: max-core - version: 25.1.0.dev2025010817 - build: release - subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025010817-release.conda - sha256: 18715c3fc8071d5eeb9f1893512fe65967919e9900738423958a5cb4f09148da - md5: 4a7b6e800f8fdabf0498727c1bff57d3 + size: 243253667 + timestamp: 1736547516482 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025011022-release.conda + sha256: 7d0b9d872d69308cb7dd70eb68fdf90816a4a33135089eb8ba29877f6be6f89f + md5: 321080690171af0ed4087069d3d3a057 depends: - - mblack ==25.1.0.dev2025010817 release - arch: aarch64 - platform: linux + - mblack ==25.1.0.dev2025011022 release license: LicenseRef-Modular-Proprietary - size: 251608988 - timestamp: 1736357045232 -- kind: conda - name: max-core - version: 25.1.0.dev2025010817 - build: release - subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025010817-release.conda - sha256: 5a23bdc48d6fe2cfe439097b7a0fc0f1bd2b23be081478638ef4b945267d8015 - md5: 1f54b615e5199ac268f123c89cfbabda + size: 247039443 + timestamp: 1736547478652 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025011022-release.conda + sha256: bec13a3ff3e08404e60a3bd9e606168a422effbf9a94180fb17181eaf3686666 + md5: 11895a6758a61c5abc9a29d48f814794 depends: - - mblack ==25.1.0.dev2025010817 release - arch: arm64 - platform: osx + - mblack ==25.1.0.dev2025011022 release license: LicenseRef-Modular-Proprietary - size: 209267317 - timestamp: 1736357278969 -- kind: conda - name: max-python - version: 25.1.0.dev2025010817 - build: 3.12release - subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025010817-3.12release.conda - sha256: 7bd73eb5b2c8f796bb2bf947e68b46f9fa0302c1999905321bd18c453be5d410 - md5: 58d7a8476c07a36c0412fcd983faebfc - depends: - - max-core ==25.1.0.dev2025010817 release + size: 205521630 + timestamp: 1736547263030 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025011022-3.12release.conda + sha256: ea9bb62d5a012c5aa8859bf11e998b1d3f25f0325641812825573f5f2532ac2c + md5: e19353c678746a77f2668ad25f9cb543 + depends: + - max-core ==25.1.0.dev2025011022 release - python 3.12.* - fastapi - httpx @@ -7063,21 +5609,14 @@ packages: - typing_extensions - uvicorn - python_abi 3.12.* *_cp312 - arch: x86_64 - platform: linux license: LicenseRef-Modular-Proprietary - size: 124309678 - timestamp: 1736357145817 -- kind: conda - name: max-python - version: 25.1.0.dev2025010817 - build: 3.12release - subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025010817-3.12release.conda - sha256: 1faa8dea2f87c25b20f467758a46589d2d464d8367fda4fa7fa61c73120b62f9 - md5: be84f3b39ee757dd73d27ac241c37d5a - depends: - - max-core ==25.1.0.dev2025010817 release + size: 124126143 + timestamp: 1736547516492 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025011022-3.12release.conda + sha256: f7848a875d82d2f62341d528c1400f32b9e540bdecef0602089d975d4492316a + md5: 1ea09052240a8e4df4cd85658a770dbe + depends: + - max-core ==25.1.0.dev2025011022 release - python 3.12.* - fastapi - httpx @@ -7097,21 +5636,14 @@ packages: - typing_extensions - uvicorn - python_abi 3.12.* *_cp312 - arch: aarch64 - platform: linux license: LicenseRef-Modular-Proprietary - size: 128047180 - timestamp: 1736357045243 -- kind: conda - name: max-python - version: 25.1.0.dev2025010817 - build: 3.12release - subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025010817-3.12release.conda - sha256: c8b10ed04f57bc9a9e67d447ad97404ea06f3efbc903dced4723f3828c93ab2c - md5: aa8c692e6393c51283419173f7cb69a2 - depends: - - max-core ==25.1.0.dev2025010817 release + size: 127905369 + timestamp: 1736547478664 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025011022-3.12release.conda + sha256: f1da578221c4b7c7eb054da59ad7d3a86a2943191466e95aedf18087d6878412 + md5: dd6127789e9eabee6f42ad50ca81cde1 + depends: + - max-core ==25.1.0.dev2025011022 release - python 3.12.* - fastapi - httpx @@ -7131,20 +5663,13 @@ packages: - typing_extensions - uvicorn - python_abi 3.12.* *_cp312 - arch: arm64 - platform: osx license: LicenseRef-Modular-Proprietary - size: 110680624 - timestamp: 1736357278972 -- kind: conda - name: mblack - version: 25.1.0.dev2025010817 - build: release - subdir: noarch + size: 110533786 + timestamp: 1736547263033 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011022-release.conda noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025010817-release.conda - sha256: 8bc21a826d3edc5a8719deeeadcee5b3fc8fbd83313ce2c7ebc8c620075608e1 - md5: ee664fe2390706d36d2d60b1f2bd69df + sha256: 00a2f2b377584f27171e8b832203b9107f081a5b2aaf4ac3921730fbd2c73594 + md5: b571b4d34e8fa8021413b97e1b1c5efe depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -7154,16 +5679,9 @@ packages: - platformdirs >=2 - python license: MIT - size: 130813 - timestamp: 1736357145814 -- kind: conda - name: mdurl - version: 0.1.2 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda + size: 130807 + timestamp: 1736547478660 +- conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda sha256: 78c1bbe1723449c52b7a9df1af2ee5f005209f67e40b6e1d3c7619127c43b1c7 md5: 592132998493b3ff25fd7479396e8351 depends: @@ -7172,13 +5690,7 @@ packages: license_family: MIT size: 14465 timestamp: 1733255681319 -- kind: conda - name: mistune - version: 3.1.0 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.0-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.0-pyhd8ed1ab_0.conda sha256: d932404dc610464130db5f36f59cd29947a687d9708daaad369d0020707de41a md5: d10024c163a52eeecbb166fdeaef8b12 depends: @@ -7188,30 +5700,19 @@ packages: license_family: BSD size: 68803 timestamp: 1735686983426 -- kind: conda - name: mojo-jupyter - version: 25.1.0.dev2025010817 - build: release - subdir: noarch +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011022-release.conda noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025010817-release.conda - sha256: a92d02809c43a9a92abc363e69396738f6c9802c12d8827cc008d316cea4e107 - md5: 0533034ac307140f160cf43c5f36b2ed + sha256: 0c619f3bff0c0fa6cdc1a314bcc34b450058779c41676b6673acec10030c5fea + md5: 12e9bb285b21a65333d0031a9225e0f0 depends: - - max-core ==25.1.0.dev2025010817 release + - max-core ==25.1.0.dev2025011022 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22926 - timestamp: 1736357145815 -- kind: conda - name: multidict - version: 6.1.0 - build: py312h178313f_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py312h178313f_2.conda + size: 22934 + timestamp: 1736547478660 +- conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py312h178313f_2.conda sha256: b05bc8252a6e957bf4a776ed5e0e61d1ba88cdc46ccb55890c72cc58b10371f4 md5: 5b5e3267d915a107eca793d52e1b780a depends: @@ -7219,17 +5720,13 @@ packages: - libgcc >=13 - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux license: Apache-2.0 license_family: APACHE size: 61507 timestamp: 1733913288935 -- kind: conda - name: multidict - version: 6.1.0 - build: py312hcc812fe_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/multidict-6.1.0-py312hcc812fe_2.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multidict-6.1.0-py312hcc812fe_2.conda sha256: ff9f767ba4df68e9ac2a380529a83a2fb6abd985beee9eab16608f7e2c3ccc6e md5: dcf3ae213cf0ab40ebcc10452e1ed9fa depends: @@ -7237,17 +5734,13 @@ packages: - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux license: Apache-2.0 license_family: APACHE size: 63077 timestamp: 1733913233032 -- kind: conda - name: multidict - version: 6.1.0 - build: py312hdb8e49c_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/multidict-6.1.0-py312hdb8e49c_1.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/multidict-6.1.0-py312hdb8e49c_1.conda sha256: 482fd09fb798090dc8cce2285fa69f43b1459099122eac2fb112d9b922b9f916 md5: 0048335516fed938e4dd2c457b4c5b9b depends: @@ -7255,35 +5748,13 @@ packages: - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx license: Apache-2.0 license_family: APACHE size: 55968 timestamp: 1729065664275 -- kind: conda - name: multiprocess - version: 0.70.15 - build: py312h02f2b3b_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/multiprocess-0.70.15-py312h02f2b3b_1.conda - sha256: 8041371e3ec3fbc2ca13c71b0180672896e6382e62892d9f6b11a4c5dd675951 - md5: 910ef2223c71902175418d9163152788 - depends: - - dill >=0.3.6 - - python >=3.12.0rc3,<3.13.0a0 - - python >=3.12.0rc3,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - license: BSD-3-Clause - license_family: BSD - size: 335147 - timestamp: 1695459275360 -- kind: conda - name: multiprocess - version: 0.70.15 - build: py312h98912ed_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.15-py312h98912ed_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.15-py312h98912ed_1.conda sha256: bb612a921fafda6375a2204ffebd8811db8dd3b8f25ac9886cc9bcbff7e3664e md5: 5a64b9f44790d9a187a85366dd0ffa8d depends: @@ -7291,17 +5762,13 @@ packages: - libgcc-ng >=12 - python >=3.12.0rc3,<3.13.0a0 - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD size: 335666 timestamp: 1695459025249 -- kind: conda - name: multiprocess - version: 0.70.15 - build: py312hdd3e373_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.15-py312hdd3e373_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.15-py312hdd3e373_1.conda sha256: c53362cdf346f314e111faddc53061e3fd2ece0ba68ca303f5dd109976df158f md5: 173a1692d2b3ddc265dc6afd21a869b3 depends: @@ -7310,18 +5777,27 @@ packages: - python >=3.12.0rc3,<3.13.0a0 - python >=3.12.0rc3,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD size: 336110 timestamp: 1695459137796 -- kind: conda - name: mypy_extensions - version: 1.0.0 - build: pyha770c72_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/multiprocess-0.70.15-py312h02f2b3b_1.conda + sha256: 8041371e3ec3fbc2ca13c71b0180672896e6382e62892d9f6b11a4c5dd675951 + md5: 910ef2223c71902175418d9163152788 + depends: + - dill >=0.3.6 + - python >=3.12.0rc3,<3.13.0a0 + - python >=3.12.0rc3,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 335147 + timestamp: 1695459275360 +- conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda sha256: 1895f47b7d68581a6facde5cb13ab8c2764c2e53a76bd746f8f98910dc4e08fe md5: 29097e7ea634a45cc5386b95cac6568f depends: @@ -7330,13 +5806,7 @@ packages: license_family: MIT size: 10854 timestamp: 1733230986902 -- kind: conda - name: nbclient - version: 0.10.2 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.2-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.2-pyhd8ed1ab_0.conda sha256: a20cff739d66c2f89f413e4ba4c6f6b59c50d5c30b5f0d840c13e8c9c2df9135 md5: 6bb0d77277061742744176ab555b723c depends: @@ -7349,14 +5819,7 @@ packages: license_family: BSD size: 28045 timestamp: 1734628936013 -- kind: conda - name: nbconvert-core - version: 7.16.5 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.5-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.5-pyhd8ed1ab_1.conda sha256: 9eed80365c012ab3bbb0f0ed1446af496d6810063dfa07dde33ae4a6d8a392ef md5: dd50a122c5b9782b1e9b2695473bfd95 depends: @@ -7384,14 +5847,7 @@ packages: license_family: BSD size: 189127 timestamp: 1736258775758 -- kind: conda - name: nbformat - version: 5.10.4 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda sha256: 7a5bd30a2e7ddd7b85031a5e2e14f290898098dc85bea5b3a5bf147c25122838 md5: bbe1963f1e47f594070ffe87cdf612ea depends: @@ -7404,57 +5860,38 @@ packages: license_family: BSD size: 100945 timestamp: 1733402844974 -- kind: conda - name: ncurses - version: '6.5' - build: h7bae524_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h7bae524_1.conda - sha256: 27d0b9ff78ad46e1f3a6c96c479ab44beda5f96def88e2fe626e0a49429d8afc - md5: cb2b0ea909b97b3d70cd3921d1445e1a +- conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-he02047a_1.conda + sha256: 6a1d5d8634c1a07913f1c525db6455918cbc589d745fac46d9d6e30340c8731a + md5: 70caf8bb6cf39a0b6b7efc885f51c0fe depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 + - libgcc-ng >=12 + arch: x86_64 + platform: linux license: X11 AND BSD-3-Clause - size: 802321 - timestamp: 1724658775723 -- kind: conda - name: ncurses - version: '6.5' - build: hcccb83c_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-hcccb83c_1.conda + size: 889086 + timestamp: 1724658547447 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-hcccb83c_1.conda sha256: acad4cf1f57b12ee1e42995e6fac646fa06aa026529f05eb8c07eb0a84a47a84 md5: 91d49c85cacd92caa40cf375ef72a25d depends: - libgcc-ng >=12 + arch: aarch64 + platform: linux license: X11 AND BSD-3-Clause size: 924472 timestamp: 1724658573518 -- kind: conda - name: ncurses - version: '6.5' - build: he02047a_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-he02047a_1.conda - sha256: 6a1d5d8634c1a07913f1c525db6455918cbc589d745fac46d9d6e30340c8731a - md5: 70caf8bb6cf39a0b6b7efc885f51c0fe +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h7bae524_1.conda + sha256: 27d0b9ff78ad46e1f3a6c96c479ab44beda5f96def88e2fe626e0a49429d8afc + md5: cb2b0ea909b97b3d70cd3921d1445e1a depends: - - __glibc >=2.17,<3.0.a0 - - libgcc-ng >=12 + - __osx >=11.0 + arch: arm64 + platform: osx license: X11 AND BSD-3-Clause - size: 889086 - timestamp: 1724658547447 -- kind: conda - name: nest-asyncio - version: 1.6.0 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda + size: 802321 + timestamp: 1724658775723 +- conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda sha256: bb7b21d7fd0445ddc0631f64e66d91a179de4ba920b8381f29b9d006a42788c0 md5: 598fd7d4d0de2455fb74f56063969a97 depends: @@ -7463,14 +5900,7 @@ packages: license_family: BSD size: 11543 timestamp: 1733325673691 -- kind: conda - name: notebook-shim - version: 0.2.4 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda sha256: 7b920e46b9f7a2d2aa6434222e5c8d739021dbc5cc75f32d124a8191d86f9056 md5: e7f89ea5f7ea9401642758ff50a2d9c1 depends: @@ -7480,14 +5910,9 @@ packages: license_family: BSD size: 16817 timestamp: 1733408419340 -- kind: conda - name: numpy - version: 1.26.4 - build: py312h470d778_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda - sha256: 23767677a7790bee5457d5e75ebd508b9a31c5354216f4310dd1acfca3f7a6f9 - md5: 9cebf5a06cb87d4569cd68df887af476 +- conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda + sha256: fe3459c75cf84dcef6ef14efcc4adb0ade66038ddd27cadb894f34f4797687d8 + md5: d8285bea2a350f63fab23bf460221f3f depends: - libblas >=3.9.0,<4.0a0 - libcblas >=3.9.0,<4.0a0 @@ -7495,101 +5920,86 @@ packages: - liblapack >=3.9.0,<4.0a0 - libstdcxx-ng >=12 - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 constrains: - numpy-base <0a0 + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD - size: 6614296 - timestamp: 1707225994762 -- kind: conda - name: numpy - version: 1.26.4 - build: py312h8442bc7_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda - sha256: c8841d6d6f61fd70ca80682efbab6bdb8606dc77c68d8acabfbd7c222054f518 - md5: d83fc83d589e2625a3451c9a7e21047c + size: 7484186 + timestamp: 1707225809722 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda + sha256: 23767677a7790bee5457d5e75ebd508b9a31c5354216f4310dd1acfca3f7a6f9 + md5: 9cebf5a06cb87d4569cd68df887af476 depends: - libblas >=3.9.0,<4.0a0 - libcblas >=3.9.0,<4.0a0 - - libcxx >=16 + - libgcc-ng >=12 - liblapack >=3.9.0,<4.0a0 + - libstdcxx-ng >=12 - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 constrains: - numpy-base <0a0 + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD - size: 6073136 - timestamp: 1707226249608 -- kind: conda - name: numpy - version: 1.26.4 - build: py312heda63a1_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda - sha256: fe3459c75cf84dcef6ef14efcc4adb0ade66038ddd27cadb894f34f4797687d8 - md5: d8285bea2a350f63fab23bf460221f3f + size: 6614296 + timestamp: 1707225994762 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda + sha256: c8841d6d6f61fd70ca80682efbab6bdb8606dc77c68d8acabfbd7c222054f518 + md5: d83fc83d589e2625a3451c9a7e21047c depends: - libblas >=3.9.0,<4.0a0 - libcblas >=3.9.0,<4.0a0 - - libgcc-ng >=12 + - libcxx >=16 - liblapack >=3.9.0,<4.0a0 - - libstdcxx-ng >=12 - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 constrains: - numpy-base <0a0 + arch: arm64 + platform: osx license: BSD-3-Clause license_family: BSD - size: 7484186 - timestamp: 1707225809722 -- kind: conda - name: openjpeg - version: 2.5.3 - build: h3f56577_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/openjpeg-2.5.3-h3f56577_0.conda - sha256: 92d310033e20538e896f4e4b1ea4205eb6604eee7c5c651c4965a0d8d3ca0f1d - md5: 04231368e4af50d11184b50e14250993 + size: 6073136 + timestamp: 1707226249608 +- conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.3-h5fbd93e_0.conda + sha256: 5bee706ea5ba453ed7fd9da7da8380dd88b865c8d30b5aaec14d2b6dd32dbc39 + md5: 9e5816bc95d285c115a3ebc2f8563564 depends: + - __glibc >=2.17,<3.0.a0 - libgcc >=13 - libpng >=1.6.44,<1.7.0a0 - libstdcxx >=13 - libtiff >=4.7.0,<4.8.0a0 - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux license: BSD-2-Clause license_family: BSD - size: 377796 - timestamp: 1733816683252 -- kind: conda - name: openjpeg - version: 2.5.3 - build: h5fbd93e_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.3-h5fbd93e_0.conda - sha256: 5bee706ea5ba453ed7fd9da7da8380dd88b865c8d30b5aaec14d2b6dd32dbc39 - md5: 9e5816bc95d285c115a3ebc2f8563564 + size: 342988 + timestamp: 1733816638720 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openjpeg-2.5.3-h3f56577_0.conda + sha256: 92d310033e20538e896f4e4b1ea4205eb6604eee7c5c651c4965a0d8d3ca0f1d + md5: 04231368e4af50d11184b50e14250993 depends: - - __glibc >=2.17,<3.0.a0 - libgcc >=13 - libpng >=1.6.44,<1.7.0a0 - libstdcxx >=13 - libtiff >=4.7.0,<4.8.0a0 - libzlib >=1.3.1,<2.0a0 + arch: aarch64 + platform: linux license: BSD-2-Clause license_family: BSD - size: 342988 - timestamp: 1733816638720 -- kind: conda - name: openjpeg - version: 2.5.3 - build: h8a3d83b_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/openjpeg-2.5.3-h8a3d83b_0.conda + size: 377796 + timestamp: 1733816683252 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/openjpeg-2.5.3-h8a3d83b_0.conda sha256: 1d59bc72ca7faac06d349c1a280f5cfb8a57ee5896f1e24225a997189d7418c7 md5: 4b71d78648dbcf68ce8bf22bb07ff838 depends: @@ -7598,67 +6008,50 @@ packages: - libpng >=1.6.44,<1.7.0a0 - libtiff >=4.7.0,<4.8.0a0 - libzlib >=1.3.1,<2.0a0 + arch: arm64 + platform: osx license: BSD-2-Clause license_family: BSD size: 319362 timestamp: 1733816781741 -- kind: conda - name: openssl - version: 3.4.0 - build: h7b32b05_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.0-h7b32b05_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.0-h7b32b05_1.conda sha256: f62f6bca4a33ca5109b6d571b052a394d836956d21b25b7ffd03376abf7a481f md5: 4ce6875f75469b2757a65e10a5d05e31 depends: - __glibc >=2.17,<3.0.a0 - ca-certificates - libgcc >=13 + arch: x86_64 + platform: linux license: Apache-2.0 license_family: Apache size: 2937158 timestamp: 1736086387286 -- kind: conda - name: openssl - version: 3.4.0 - build: h81ee809_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.0-h81ee809_1.conda - sha256: 97772762abc70b3a537683ca9fc3ff3d6099eb64e4aba3b9c99e6fce48422d21 - md5: 22f971393637480bda8c679f374d8861 - depends: - - __osx >=11.0 - - ca-certificates - license: Apache-2.0 - license_family: Apache - size: 2936415 - timestamp: 1736086108693 -- kind: conda - name: openssl - version: 3.4.0 - build: hd08dc88_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.0-hd08dc88_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.0-hd08dc88_1.conda sha256: 60d34454b861501d7355f25a7b39fdb5de8d56fca49b5bcbe8b8142b7d82dce4 md5: e21c4767e783a58c373fdb99de6211bf depends: - ca-certificates - libgcc >=13 + arch: aarch64 + platform: linux license: Apache-2.0 license_family: Apache size: 3469279 timestamp: 1736088141230 -- kind: conda - name: opentelemetry-api - version: 1.29.0 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.29.0-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.0-h81ee809_1.conda + sha256: 97772762abc70b3a537683ca9fc3ff3d6099eb64e4aba3b9c99e6fce48422d21 + md5: 22f971393637480bda8c679f374d8861 + depends: + - __osx >=11.0 + - ca-certificates + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 2936415 + timestamp: 1736086108693 +- conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.29.0-pyhd8ed1ab_1.conda sha256: 296280c8ace35c0a1cf72bed1077f248b3af903c3bf92332f1783a207cb5abdb md5: 307b05402c1a382f2f09426492dee8f8 depends: @@ -7669,13 +6062,7 @@ packages: license_family: APACHE size: 44166 timestamp: 1734132973331 -- kind: conda - name: opentelemetry-exporter-otlp-proto-common - version: 1.29.0 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.29.0-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.29.0-pyhd8ed1ab_0.conda sha256: ae9776efe52564e0d6711cfcee7c54439273e57a3999f7f796f66e862f58aae9 md5: 0c02e74d26bce3fec93b227cf7ea6e6b depends: @@ -7686,14 +6073,7 @@ packages: license_family: APACHE size: 18922 timestamp: 1734310457116 -- kind: conda - name: opentelemetry-exporter-otlp-proto-http - version: 1.29.0 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.29.0-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.29.0-pyhd8ed1ab_1.conda sha256: 5d61db9d5b4f91b3932f5f2348920d5b7fdaa09e52c8ea054cf7bf3f21677c9c md5: 223f4e56a29601c887f0dc467034af5b depends: @@ -7709,13 +6089,7 @@ packages: license_family: APACHE size: 17147 timestamp: 1734345675510 -- kind: conda - name: opentelemetry-exporter-prometheus - version: 1.12.0rc1 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-prometheus-1.12.0rc1-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-prometheus-1.12.0rc1-pyhd8ed1ab_0.conda sha256: b8239230dbbdb491401e41b53bd9f21d60551cedef1a8d5807fca1bf9bdd331c md5: 1ddc95052b31147d1e10d818cf519cf5 depends: @@ -7727,13 +6101,7 @@ packages: license_family: APACHE size: 14721 timestamp: 1695214221489 -- kind: conda - name: opentelemetry-proto - version: 1.29.0 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.29.0-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.29.0-pyhd8ed1ab_0.conda sha256: 200a7cb8acc8a0ddd6ef55c5460cec871b6a265929b240a0296c0ccb9c8d9758 md5: e2a6d2ad10b813c7fdc1c64aac376128 depends: @@ -7743,13 +6111,7 @@ packages: license_family: APACHE size: 37235 timestamp: 1734291034372 -- kind: conda - name: opentelemetry-sdk - version: 1.29.0 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.29.0-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.29.0-pyhd8ed1ab_0.conda sha256: 7b36629d8b8be8a019fcfd1518d7b7f862dd25de96f8adcadb93e4fd12cf9bd6 md5: 2a8893f06e6ebda4bfa78875bc923ea4 depends: @@ -7762,13 +6124,7 @@ packages: license_family: APACHE size: 77645 timestamp: 1734297838999 -- kind: conda - name: opentelemetry-semantic-conventions - version: 0.50b0 - build: pyh3cfb1c2_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.50b0-pyh3cfb1c2_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.50b0-pyh3cfb1c2_0.conda sha256: 6526e70368d5bf66ef0eaa51fb800d53782dde71a24bd38f40139919a6f784dc md5: f7111fa4188d646c8108e232d024cb99 depends: @@ -7779,35 +6135,7 @@ packages: license_family: APACHE size: 86084 timestamp: 1734208980168 -- kind: conda - name: orc - version: 2.0.3 - build: h0ff2369_2 - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/orc-2.0.3-h0ff2369_2.conda - sha256: cca330695f3bdb8c0e46350c29cd4af3345865544e36f1d7c9ba9190ad22f5f4 - md5: 24b1897c0d24afbb70704ba998793b78 - depends: - - __osx >=11.0 - - libcxx >=18 - - libprotobuf >=5.28.3,<5.28.4.0a0 - - libzlib >=1.3.1,<2.0a0 - - lz4-c >=1.10.0,<1.11.0a0 - - snappy >=1.2.1,<1.3.0a0 - - tzdata - - zstd >=1.5.6,<1.6.0a0 - license: Apache-2.0 - license_family: Apache - size: 438520 - timestamp: 1735630624140 -- kind: conda - name: orc - version: 2.0.3 - build: h12ee42a_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/orc-2.0.3-h12ee42a_2.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/orc-2.0.3-h12ee42a_2.conda sha256: dff5cc8023905782c86b3459055f26d4b97890e403b0698477c9fed15d8669cc md5: 4f6f9f3f80354ad185e276c120eac3f0 depends: @@ -7820,17 +6148,13 @@ packages: - snappy >=1.2.1,<1.3.0a0 - tzdata - zstd >=1.5.6,<1.6.0a0 + arch: x86_64 + platform: linux license: Apache-2.0 license_family: Apache size: 1188881 timestamp: 1735630209320 -- kind: conda - name: orc - version: 2.0.3 - build: hdd485aa_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/orc-2.0.3-hdd485aa_2.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/orc-2.0.3-hdd485aa_2.conda sha256: b6c67542352a86cdf143c3066d5cda855b74454a156eedcd8958b494c6a32a83 md5: d19f01b42e5d6a2908b65df435aff42f depends: @@ -7842,18 +6166,31 @@ packages: - snappy >=1.2.1,<1.3.0a0 - tzdata - zstd >=1.5.6,<1.6.0a0 + arch: aarch64 + platform: linux license: Apache-2.0 license_family: Apache size: 1167714 timestamp: 1735630248837 -- kind: conda - name: overrides - version: 7.7.0 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/orc-2.0.3-h0ff2369_2.conda + sha256: cca330695f3bdb8c0e46350c29cd4af3345865544e36f1d7c9ba9190ad22f5f4 + md5: 24b1897c0d24afbb70704ba998793b78 + depends: + - __osx >=11.0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libzlib >=1.3.1,<2.0a0 + - lz4-c >=1.10.0,<1.11.0a0 + - snappy >=1.2.1,<1.3.0a0 + - tzdata + - zstd >=1.5.6,<1.6.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 438520 + timestamp: 1735630624140 +- conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda sha256: 1840bd90d25d4930d60f57b4f38d4e0ae3f5b8db2819638709c36098c6ba770c md5: e51f1e4089cad105b6cac64bd8166587 depends: @@ -7863,14 +6200,7 @@ packages: license_family: APACHE size: 30139 timestamp: 1734587755455 -- kind: conda - name: packaging - version: '24.2' - build: pyhd8ed1ab_2 - build_number: 2 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda sha256: da157b19bcd398b9804c5c52fc000fcb8ab0525bdb9c70f95beaa0bb42f85af1 md5: 3bfed7e6228ebf2f7b9eaa47f1b4e2aa depends: @@ -7879,58 +6209,44 @@ packages: license_family: APACHE size: 60164 timestamp: 1733203368787 -- kind: conda - name: pandas - version: 2.2.2 - build: py312h14eacfc_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/pandas-2.2.2-py312h14eacfc_1.conda - sha256: d24c1a6e362d3f1034be308406b05a446c06f8ec974178581c7a3a13fc0110aa - md5: ea4fd304d3cd65f0ddf0dd3c46e0703a +- conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.2-py312h1d6d2e6_1.conda + sha256: 80fd53b68aa89b929d03874b99621ec8cc6a12629bd8bfbdca87a95f8852af96 + md5: ae00b61f3000d2284d1f2584d4dfafa8 depends: - libgcc-ng >=12 - libstdcxx-ng >=12 - numpy >=1.19,<3 - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - python-dateutil >=2.8.1 - python-tzdata >=2022a - python_abi 3.12.* *_cp312 - pytz >=2020.1 + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD - size: 15203830 - timestamp: 1715898319015 -- kind: conda - name: pandas - version: 2.2.2 - build: py312h1d6d2e6_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.2-py312h1d6d2e6_1.conda - sha256: 80fd53b68aa89b929d03874b99621ec8cc6a12629bd8bfbdca87a95f8852af96 - md5: ae00b61f3000d2284d1f2584d4dfafa8 + size: 15458981 + timestamp: 1715898284697 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pandas-2.2.2-py312h14eacfc_1.conda + sha256: d24c1a6e362d3f1034be308406b05a446c06f8ec974178581c7a3a13fc0110aa + md5: ea4fd304d3cd65f0ddf0dd3c46e0703a depends: - libgcc-ng >=12 - libstdcxx-ng >=12 - numpy >=1.19,<3 - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython - python-dateutil >=2.8.1 - python-tzdata >=2022a - python_abi 3.12.* *_cp312 - pytz >=2020.1 + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD - size: 15458981 - timestamp: 1715898284697 -- kind: conda - name: pandas - version: 2.2.2 - build: py312h8ae5369_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.2-py312h8ae5369_1.conda + size: 15203830 + timestamp: 1715898319015 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.2-py312h8ae5369_1.conda sha256: 664bf370d1e254f29fab3b9834ae5f692a59f7e35c64c61d9a9b9989831fd721 md5: b38af0cd7ae3616c90a2511272385941 depends: @@ -7943,17 +6259,13 @@ packages: - python-tzdata >=2022a - python_abi 3.12.* *_cp312 - pytz >=2020.1 + arch: arm64 + platform: osx license: BSD-3-Clause license_family: BSD size: 14476760 timestamp: 1715898136109 -- kind: conda - name: pandocfilters - version: 1.5.0 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 sha256: 2bb9ba9857f4774b85900c2562f7e711d08dd48e2add9bee4e1612fbee27e16f md5: 457c2c8c08e54905d6954e79cb5b5db9 depends: @@ -7962,14 +6274,7 @@ packages: license_family: BSD size: 11627 timestamp: 1631603397334 -- kind: conda - name: parso - version: 0.8.4 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda sha256: 17131120c10401a99205fc6fe436e7903c0fa092f1b3e80452927ab377239bcc md5: 5c092057b6badd30f75b06244ecd01c9 depends: @@ -7978,14 +6283,7 @@ packages: license_family: MIT size: 75295 timestamp: 1733271352153 -- kind: conda - name: pathspec - version: 0.12.1 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda sha256: 9f64009cdf5b8e529995f18e03665b03f5d07c0b17445b8badef45bde76249ee md5: 617f15191456cc6a13db418a275435e5 depends: @@ -7994,14 +6292,7 @@ packages: license_family: MOZILLA size: 41075 timestamp: 1733233471940 -- kind: conda - name: pexpect - version: 4.9.0 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda sha256: 202af1de83b585d36445dc1fda94266697341994d1a3328fabde4989e1b3d07a md5: d0d408b1f18883a944376da5cf8101ea depends: @@ -8010,14 +6301,7 @@ packages: license: ISC size: 53561 timestamp: 1733302019362 -- kind: conda - name: pickleshare - version: 0.7.5 - build: pyhd8ed1ab_1004 - build_number: 1004 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda sha256: e2ac3d66c367dada209fc6da43e645672364b9fd5f9d28b9f016e24b81af475b md5: 11a9d1d09a3615fc07c3faf79bc0b943 depends: @@ -8026,18 +6310,14 @@ packages: license_family: MIT size: 11748 timestamp: 1733327448200 -- kind: conda - name: pillow - version: 11.1.0 - build: py312h50aef2c_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-11.1.0-py312h50aef2c_0.conda - sha256: b29b7c915053e06a7a5b4118760202c572c9c35d23bd6ce8e73270b6a50e50ee - md5: 94d6ba8cd468668a9fb04193b0f4b36e +- conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-11.1.0-py312h80c1187_0.conda + sha256: 5c347962202b55ae4d8a463e0555c5c6ca33396266a08284bf1384399894e541 + md5: d3894405f05b2c0f351d5de3ae26fa9c depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 - freetype >=2.12.1,<3.0a0 - lcms2 >=2.16,<3.0a0 + - libgcc >=13 - libjpeg-turbo >=3.0.0,<4.0a0 - libtiff >=4.7.0,<4.8.0a0 - libwebp-base >=1.5.0,<2.0a0 @@ -8045,18 +6325,14 @@ packages: - libzlib >=1.3.1,<2.0a0 - openjpeg >=2.5.3,<3.0a0 - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 - tk >=8.6.13,<8.7.0a0 + arch: x86_64 + platform: linux license: HPND - size: 42852329 - timestamp: 1735930118976 -- kind: conda - name: pillow - version: 11.1.0 - build: py312h719f0cf_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/pillow-11.1.0-py312h719f0cf_0.conda + size: 42749785 + timestamp: 1735929845390 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pillow-11.1.0-py312h719f0cf_0.conda sha256: 7559556ffc44bda777f85c2e5acd6b5756fa5822c0271b329b7b9a3c6bb20349 md5: 77e0ec0a6fc847d317f204aa15b59f6b depends: @@ -8072,22 +6348,18 @@ packages: - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 - tk >=8.6.13,<8.7.0a0 + arch: aarch64 + platform: linux license: HPND size: 41362848 timestamp: 1735932311857 -- kind: conda - name: pillow - version: 11.1.0 - build: py312h80c1187_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/pillow-11.1.0-py312h80c1187_0.conda - sha256: 5c347962202b55ae4d8a463e0555c5c6ca33396266a08284bf1384399894e541 - md5: d3894405f05b2c0f351d5de3ae26fa9c +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-11.1.0-py312h50aef2c_0.conda + sha256: b29b7c915053e06a7a5b4118760202c572c9c35d23bd6ce8e73270b6a50e50ee + md5: 94d6ba8cd468668a9fb04193b0f4b36e depends: - - __glibc >=2.17,<3.0.a0 + - __osx >=11.0 - freetype >=2.12.1,<3.0a0 - lcms2 >=2.16,<3.0a0 - - libgcc >=13 - libjpeg-turbo >=3.0.0,<4.0a0 - libtiff >=4.7.0,<4.8.0a0 - libwebp-base >=1.5.0,<2.0a0 @@ -8095,19 +6367,15 @@ packages: - libzlib >=1.3.1,<2.0a0 - openjpeg >=2.5.3,<3.0a0 - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 - tk >=8.6.13,<8.7.0a0 + arch: arm64 + platform: osx license: HPND - size: 42749785 - timestamp: 1735929845390 -- kind: conda - name: pip - version: 24.3.1 - build: pyh8b19718_2 - build_number: 2 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pip-24.3.1-pyh8b19718_2.conda + size: 42852329 + timestamp: 1735930118976 +- conda: https://conda.anaconda.org/conda-forge/noarch/pip-24.3.1-pyh8b19718_2.conda sha256: da8c8888de10c1e4234ebcaa1550ac2b4b5408ac20f093fe641e4bc8c9c9f3eb md5: 04e691b9fadd93a8a9fad87a81d4fd8f depends: @@ -8118,14 +6386,7 @@ packages: license_family: MIT size: 1245116 timestamp: 1734466348103 -- kind: conda - name: pkgutil-resolve-name - version: 1.3.10 - build: pyhd8ed1ab_2 - build_number: 2 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda sha256: adb2dde5b4f7da70ae81309cce6188ed3286ff280355cf1931b45d91164d2ad8 md5: 5a5870a74432aa332f7d32180633ad05 depends: @@ -8133,14 +6394,7 @@ packages: license: MIT AND PSF-2.0 size: 10693 timestamp: 1733344619659 -- kind: conda - name: platformdirs - version: 4.3.6 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda sha256: bb50f6499e8bc1d1a26f17716c97984671121608dc0c3ecd34858112bce59a27 md5: 577852c7e53901ddccc7e6a9959ddebe depends: @@ -8149,13 +6403,7 @@ packages: license_family: MIT size: 20448 timestamp: 1733232756001 -- kind: conda - name: prometheus_client - version: 0.21.1 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda sha256: bc8f00d5155deb7b47702cb8370f233935704100dbc23e30747c161d1b6cf3ab md5: 3e01e386307acc60b2f89af0b2e161aa depends: @@ -8164,14 +6412,7 @@ packages: license_family: Apache size: 49002 timestamp: 1733327434163 -- kind: conda - name: prompt-toolkit - version: 3.0.48 - build: pyha770c72_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.48-pyha770c72_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.48-pyha770c72_1.conda sha256: 79fb7d1eeb490d4cc1b79f781bb59fe302ae38cf0a30907ecde75a7d399796cc md5: 368d4aa48358439e07a97ae237491785 depends: @@ -8183,12 +6424,7 @@ packages: license_family: BSD size: 269848 timestamp: 1733302634979 -- kind: conda - name: propcache - version: 0.2.1 - build: py312h66e93f0_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.1-py312h66e93f0_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.1-py312h66e93f0_0.conda sha256: 5771311fb5ded614ca349c92579a0b752af55a310f40b71fc533e20625965391 md5: 55d5742a696d7da1c1262e99b6217ceb depends: @@ -8196,16 +6432,13 @@ packages: - libgcc >=13 - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux license: Apache-2.0 license_family: APACHE size: 52747 timestamp: 1733391916349 -- kind: conda - name: propcache - version: 0.2.1 - build: py312hb2c0f52_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.2.1-py312hb2c0f52_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.2.1-py312hb2c0f52_0.conda sha256: c7f62c11ed929ccf1f3d4a1e200e28be01e8d0e0786bf8f76c5893f2ea681e1b md5: 50ab8953e7ff1333a4a47cda32e68123 depends: @@ -8213,16 +6446,13 @@ packages: - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux license: Apache-2.0 license_family: APACHE size: 52484 timestamp: 1733391993461 -- kind: conda - name: propcache - version: 0.2.1 - build: py312hea69d52_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.1-py312hea69d52_0.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.1-py312hea69d52_0.conda sha256: f8c266c494aa1e4cfb8bf0b6fca060044b2f3d65afe4c5062ebeea382e77aa6d md5: c84e3dd97fe25a17322c4a0f670c6750 depends: @@ -8230,16 +6460,13 @@ packages: - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx license: Apache-2.0 license_family: APACHE size: 48225 timestamp: 1733392308901 -- kind: conda - name: protobuf - version: 5.28.3 - build: py312h2ec8cdc_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/protobuf-5.28.3-py312h2ec8cdc_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/protobuf-5.28.3-py312h2ec8cdc_0.conda sha256: acb2e0ee948e3941f8ed191cb77f654e06538638aed8ccd71cbc78a15242ebbb md5: 9d7e427d159c1b2d516cc047ff177c48 depends: @@ -8250,16 +6477,13 @@ packages: - python_abi 3.12.* *_cp312 constrains: - libprotobuf 5.28.3 + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD size: 464794 timestamp: 1731366525051 -- kind: conda - name: protobuf - version: 5.28.3 - build: py312h6f74592_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/protobuf-5.28.3-py312h6f74592_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/protobuf-5.28.3-py312h6f74592_0.conda sha256: 9c575d5035c7ecb114ab9e17906c0a54087d9598dd6a2104c02fe33f0a29dd46 md5: 06513608c94fb1c1b17136ace77063a9 depends: @@ -8270,16 +6494,13 @@ packages: - python_abi 3.12.* *_cp312 constrains: - libprotobuf 5.28.3 + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD size: 473242 timestamp: 1731366577844 -- kind: conda - name: protobuf - version: 5.28.3 - build: py312hd8f9ff3_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/protobuf-5.28.3-py312hd8f9ff3_0.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/protobuf-5.28.3-py312hd8f9ff3_0.conda sha256: 9d572a97419bdace14d7c7cc8cc8c4bf2dcb22b56965dac87a27fbdb5061b926 md5: 5afbe52a59f04dd1fe566d0d17590d7e depends: @@ -8290,16 +6511,13 @@ packages: - python_abi 3.12.* *_cp312 constrains: - libprotobuf 5.28.3 + arch: arm64 + platform: osx license: BSD-3-Clause license_family: BSD size: 448803 timestamp: 1731367010746 -- kind: conda - name: psutil - version: 6.1.1 - build: py312h66e93f0_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/psutil-6.1.1-py312h66e93f0_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/psutil-6.1.1-py312h66e93f0_0.conda sha256: 55d4fd0b294aeada0d7810fcc25503b59ec34c4390630789bd61c085b9ce649f md5: add2c79595fa8a9b6d653d7e4e2cf05f depends: @@ -8307,16 +6525,13 @@ packages: - libgcc >=13 - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD size: 487053 timestamp: 1735327468212 -- kind: conda - name: psutil - version: 6.1.1 - build: py312hb2c0f52_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/psutil-6.1.1-py312hb2c0f52_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/psutil-6.1.1-py312hb2c0f52_0.conda sha256: b2db43b7a2d01b998dadd91dd19c2de1f3778b5f8b7bf90020e35acf577cf79e md5: 3bd3fe4f02e4ff211d9d35b6a3aed824 depends: @@ -8324,16 +6539,13 @@ packages: - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD size: 487185 timestamp: 1735327601306 -- kind: conda - name: psutil - version: 6.1.1 - build: py312hea69d52_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/psutil-6.1.1-py312hea69d52_0.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/psutil-6.1.1-py312hea69d52_0.conda sha256: 90332053dad4056fe752217fa311ffa61cb37dc693b1721e37580e71a2a6fe04 md5: 90724dac996a4e9d629a88a4b1ffe694 depends: @@ -8341,64 +6553,47 @@ packages: - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx license: BSD-3-Clause license_family: BSD size: 495397 timestamp: 1735327574477 -- kind: conda - name: pthread-stubs - version: '0.4' - build: h86ecc28_1002 - build_number: 1002 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/pthread-stubs-0.4-h86ecc28_1002.conda - sha256: 977dfb0cb3935d748521dd80262fe7169ab82920afd38ed14b7fee2ea5ec01ba - md5: bb5a90c93e3bac3d5690acf76b4a6386 - depends: - - libgcc >=13 - license: MIT - license_family: MIT - size: 8342 - timestamp: 1726803319942 -- kind: conda - name: pthread-stubs - version: '0.4' - build: hb9d3cd8_1002 - build_number: 1002 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda sha256: 9c88f8c64590e9567c6c80823f0328e58d3b1efb0e1c539c0315ceca764e0973 md5: b3c17d95b5a10c6e64a21fa17573e70e depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 + arch: x86_64 + platform: linux license: MIT license_family: MIT size: 8252 timestamp: 1726802366959 -- kind: conda - name: pthread-stubs - version: '0.4' - build: hd74edd7_1002 - build_number: 1002 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/pthread-stubs-0.4-hd74edd7_1002.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pthread-stubs-0.4-h86ecc28_1002.conda + sha256: 977dfb0cb3935d748521dd80262fe7169ab82920afd38ed14b7fee2ea5ec01ba + md5: bb5a90c93e3bac3d5690acf76b4a6386 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 8342 + timestamp: 1726803319942 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pthread-stubs-0.4-hd74edd7_1002.conda sha256: 8ed65e17fbb0ca944bfb8093b60086e3f9dd678c3448b5de212017394c247ee3 md5: 415816daf82e0b23a736a069a75e9da7 depends: - __osx >=11.0 + arch: arm64 + platform: osx license: MIT license_family: MIT size: 8381 timestamp: 1726802424786 -- kind: conda - name: ptyprocess - version: 0.7.0 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda sha256: a7713dfe30faf17508ec359e0bc7e0983f5d94682492469bd462cdaae9c64d83 md5: 7d9daffbb8d8e0af0f769dbbcd173a54 depends: @@ -8406,14 +6601,7 @@ packages: license: ISC size: 19457 timestamp: 1733302371990 -- kind: conda - name: pure_eval - version: 0.2.3 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda sha256: 71bd24600d14bb171a6321d523486f6a06f855e75e547fa0cb2a0953b02047f0 md5: 3bfdfb8dbcdc4af1ae3f9a8eb3948f04 depends: @@ -8422,14 +6610,9 @@ packages: license_family: MIT size: 16668 timestamp: 1733569518868 -- kind: conda - name: pyarrow - version: 18.1.0 - build: py312h1f38498_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-18.1.0-py312h1f38498_0.conda - sha256: 06c0e208d5bf15051874097366c8e8e5db176dffba38526f227a34e80cc8e9bc - md5: 3710616b880b31d0c8afd8ae7e12392a +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-18.1.0-py312h7900ff3_0.conda + sha256: 46a61c29375d3bf1933eae61c7861394c168898915d59fc99bf05e46de2ff5ad + md5: ac65b70df28687c6af4270923c020bdd depends: - libarrow-acero 18.1.0.* - libarrow-dataset 18.1.0.* @@ -8438,18 +6621,15 @@ packages: - pyarrow-core 18.1.0 *_0_* - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux license: Apache-2.0 license_family: APACHE - size: 25375 - timestamp: 1732610892198 -- kind: conda - name: pyarrow - version: 18.1.0 - build: py312h7900ff3_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-18.1.0-py312h7900ff3_0.conda - sha256: 46a61c29375d3bf1933eae61c7861394c168898915d59fc99bf05e46de2ff5ad - md5: ac65b70df28687c6af4270923c020bdd + size: 25213 + timestamp: 1732610785600 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-18.1.0-py312h8025657_0.conda + sha256: 49db959887cb89b44053a44a98d0f35644fc0b2003587492f02b56046de0b60a + md5: 9bb7d32e96a5dcb5ea7fd90a11a83656 depends: - libarrow-acero 18.1.0.* - libarrow-dataset 18.1.0.* @@ -8458,18 +6638,15 @@ packages: - pyarrow-core 18.1.0 *_0_* - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux license: Apache-2.0 license_family: APACHE - size: 25213 - timestamp: 1732610785600 -- kind: conda - name: pyarrow - version: 18.1.0 - build: py312h8025657_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-18.1.0-py312h8025657_0.conda - sha256: 49db959887cb89b44053a44a98d0f35644fc0b2003587492f02b56046de0b60a - md5: 9bb7d32e96a5dcb5ea7fd90a11a83656 + size: 25374 + timestamp: 1732611006864 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-18.1.0-py312h1f38498_0.conda + sha256: 06c0e208d5bf15051874097366c8e8e5db176dffba38526f227a34e80cc8e9bc + md5: 3710616b880b31d0c8afd8ae7e12392a depends: - libarrow-acero 18.1.0.* - libarrow-dataset 18.1.0.* @@ -8478,16 +6655,13 @@ packages: - pyarrow-core 18.1.0 *_0_* - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx license: Apache-2.0 license_family: APACHE - size: 25374 - timestamp: 1732611006864 -- kind: conda - name: pyarrow-core - version: 18.1.0 - build: py312h01725c0_0_cpu - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-18.1.0-py312h01725c0_0_cpu.conda + size: 25375 + timestamp: 1732610892198 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-18.1.0-py312h01725c0_0_cpu.conda sha256: 948a4161c56f846d374a3721a657e58ddbc992a29b3b3e7a6411975c30361d94 md5: ee80934a6c280ff8635f8db5dec11e04 depends: @@ -8501,16 +6675,13 @@ packages: constrains: - numpy >=1.21,<3 - apache-arrow-proc =*=cpu + arch: x86_64 + platform: linux license: Apache-2.0 license_family: APACHE size: 4612916 timestamp: 1732610377259 -- kind: conda - name: pyarrow-core - version: 18.1.0 - build: py312h66f7834_0_cpu - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-18.1.0-py312h66f7834_0_cpu.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-18.1.0-py312h66f7834_0_cpu.conda sha256: e7eb062145be554c23dfefa0ebe8c5f6ae8c59635117a6921e66403d6addcda3 md5: 3390c8b8f57e85506c92a37cf750bdd7 depends: @@ -8524,16 +6695,13 @@ packages: constrains: - numpy >=1.21,<3 - apache-arrow-proc =*=cpu + arch: aarch64 + platform: linux license: Apache-2.0 license_family: APACHE size: 4406662 timestamp: 1732610939832 -- kind: conda - name: pyarrow-core - version: 18.1.0 - build: py312hc40f475_0_cpu - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-18.1.0-py312hc40f475_0_cpu.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-18.1.0-py312hc40f475_0_cpu.conda sha256: 063eb168a29d4ce6d9ed865e9e1ad3b6e141712189955a79e06b24ddc0cbbc9c md5: 9859e7c4b94bbf69772dbf0511101cec depends: @@ -8547,18 +6715,13 @@ packages: constrains: - numpy >=1.21,<3 - apache-arrow-proc =*=cpu + arch: arm64 + platform: osx license: Apache-2.0 license_family: APACHE size: 3909116 timestamp: 1732610863261 -- kind: conda - name: pycparser - version: '2.22' - build: pyh29332c3_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda sha256: 79db7928d13fab2d892592223d7570f5061c192f27b9febd1a418427b719acc6 md5: 12c566707c80111f9799308d9e265aef depends: @@ -8568,15 +6731,9 @@ packages: license_family: BSD size: 110100 timestamp: 1733195786147 -- kind: conda - name: pydantic - version: 2.10.4 - build: pyh3cfb1c2_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.4-pyh3cfb1c2_0.conda - sha256: e68400714532a33f34b44ddaee3e27e8dd6c83c3f31c7892ec10b84d13aa8b59 - md5: 93bccf4d7a58c9140d59491de21e044b +- conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.5-pyh3cfb1c2_0.conda + sha256: 0f32c30ddc610cd1113335d8b4f311f20f4d72754b7c1a5d0d9493f597cf11d2 + md5: e8ea30925c8271c4128375810d7d3d7a depends: - annotated-types >=0.6.0 - pydantic-core 2.27.2 @@ -8585,14 +6742,9 @@ packages: - typing_extensions >=4.12.2 license: MIT license_family: MIT - size: 296557 - timestamp: 1734609427697 -- kind: conda - name: pydantic-core - version: 2.27.2 - build: py312h12e396e_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.27.2-py312h12e396e_0.conda + size: 296805 + timestamp: 1736458364196 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.27.2-py312h12e396e_0.conda sha256: 81602a4592ad2ac1a1cb57372fd25214e63b1c477d5818b0c21cde0f1f85c001 md5: bae01b2563030c085f5158c518b84e86 depends: @@ -8603,16 +6755,13 @@ packages: - typing-extensions >=4.6.0,!=4.7.0 constrains: - __glibc >=2.17 + arch: x86_64 + platform: linux license: MIT license_family: MIT size: 1641402 timestamp: 1734571789895 -- kind: conda - name: pydantic-core - version: 2.27.2 - build: py312h8cbf658_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/pydantic-core-2.27.2-py312h8cbf658_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pydantic-core-2.27.2-py312h8cbf658_0.conda sha256: 623e0f3846f15d035ce7ab7ae445fc8d9e547b6684ab55858b6f44510d24b097 md5: 9677f6ab4bf27ba3c2aee70d08c7b27c depends: @@ -8623,16 +6772,13 @@ packages: - typing-extensions >=4.6.0,!=4.7.0 constrains: - __glibc >=2.17 + arch: aarch64 + platform: linux license: MIT license_family: MIT size: 1505076 timestamp: 1734571966615 -- kind: conda - name: pydantic-core - version: 2.27.2 - build: py312hcd83bfe_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.27.2-py312hcd83bfe_0.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.27.2-py312hcd83bfe_0.conda sha256: cfa7201f890d5d08ce29ff70e65a96787d5793a1718776733666b44bbd4a1205 md5: dcb307e02f17d38c6e1cbfbf8c602852 depends: @@ -8643,17 +6789,13 @@ packages: - typing-extensions >=4.6.0,!=4.7.0 constrains: - __osx >=11.0 + arch: arm64 + platform: osx license: MIT license_family: MIT size: 1593461 timestamp: 1734571986644 -- kind: conda - name: pydantic-settings - version: 2.7.1 - build: pyh3cfb1c2_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.7.1-pyh3cfb1c2_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.7.1-pyh3cfb1c2_0.conda sha256: 082fb1ec29917d2c9ed6a862cb8eb9beb88c208ea62c9fef1aeb5f4f3e0e0b06 md5: d71d76b62bed332b037d7adfc0f3989a depends: @@ -8664,13 +6806,7 @@ packages: license_family: MIT size: 31822 timestamp: 1735650532951 -- kind: conda - name: pygments - version: 2.19.1 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda sha256: 28a3e3161390a9d23bc02b4419448f8d27679d9e2c250e29849e37749c8de86b md5: 232fb4577b6687b2d503ef8e254270c9 depends: @@ -8679,29 +6815,7 @@ packages: license_family: BSD size: 888600 timestamp: 1736243563082 -- kind: conda - name: pyinstrument - version: 5.0.0 - build: py312h0bf5046_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/pyinstrument-5.0.0-py312h0bf5046_0.conda - sha256: 6879d52fb0ec2258e2850476786a652c394220d53883c53691ed5390183ae925 - md5: f0e4a98d54477083ddc9d2f33507f848 - depends: - - __osx >=11.0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - license: BSD-3-Clause - license_family: BSD - size: 181512 - timestamp: 1728714205508 -- kind: conda - name: pyinstrument - version: 5.0.0 - build: py312h66e93f0_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/pyinstrument-5.0.0-py312h66e93f0_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyinstrument-5.0.0-py312h66e93f0_0.conda sha256: 8a006507a4003fb01eeee2f9ba79f994478694766ea3b445273da5c11cf8e763 md5: 798f42d9bfdf125dc80ffbec0e96e0b6 depends: @@ -8709,16 +6823,13 @@ packages: - libgcc >=13 - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD size: 182021 timestamp: 1728714164706 -- kind: conda - name: pyinstrument - version: 5.0.0 - build: py312hb2c0f52_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/pyinstrument-5.0.0-py312hb2c0f52_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyinstrument-5.0.0-py312hb2c0f52_0.conda sha256: 7967b94b8f0ff75847302444e9c43ac11a391d74da24cb14fba1049fac9e5ba9 md5: 5274663cb05dfbe316db50af6da4389f depends: @@ -8726,16 +6837,27 @@ packages: - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD size: 183141 timestamp: 1728714267954 -- kind: conda - name: pyobjc-core - version: 10.3.2 - build: py312hb9d441b_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-core-10.3.2-py312hb9d441b_0.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyinstrument-5.0.0-py312h0bf5046_0.conda + sha256: 6879d52fb0ec2258e2850476786a652c394220d53883c53691ed5390183ae925 + md5: f0e4a98d54477083ddc9d2f33507f848 + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 181512 + timestamp: 1728714205508 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-core-10.3.2-py312hb9d441b_0.conda sha256: 6c110c64e7cc0a28416414446698ab310a9261525a6aa630b2c4f50891867719 md5: 663e894deb5a24c8931fd8224f19a1fd depends: @@ -8745,16 +6867,13 @@ packages: - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 - setuptools + arch: arm64 + platform: osx license: MIT license_family: MIT size: 484571 timestamp: 1732987487536 -- kind: conda - name: pyobjc-framework-cocoa - version: 10.3.2 - build: py312hb9d441b_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-framework-cocoa-10.3.2-py312hb9d441b_0.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-framework-cocoa-10.3.2-py312hb9d441b_0.conda sha256: 5a78f97cb7414cb4b78b777dcfcffb08da42ced866e8ef6455a57c2230908bfe md5: 41e4f28d545565e48f1f819cf8dac5c7 depends: @@ -8764,18 +6883,13 @@ packages: - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx license: MIT license_family: MIT size: 380414 timestamp: 1733168930888 -- kind: conda - name: pysocks - version: 1.7.1 - build: pyha55dd90_7 - build_number: 7 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda sha256: ba3b032fa52709ce0d9fd388f63d330a026754587a2f461117cac9ab73d8d0d8 md5: 461219d1a5bd61342293efa2c0c90eac depends: @@ -8785,18 +6899,14 @@ packages: license_family: BSD size: 21085 timestamp: 1733217331982 -- kind: conda - name: python - version: 3.12.8 - build: h1683364_1_cpython +- conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.8-h9e4cc4f_1_cpython.conda build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.8-h1683364_1_cpython.conda - sha256: 85573582d5b0f79923fed0a8365d3d74d21eee9f0a5fa1b9345f191e006363ab - md5: 09ec612ea05370989eaa3d81abf0f369 + sha256: 3f0e0518c992d8ccfe62b189125721309836fe48a010dc424240583e157f9ff0 + md5: 7fd2fd79436d9b473812f14e86746844 depends: + - __glibc >=2.17,<3.0.a0 - bzip2 >=1.0.8,<2.0a0 - - ld_impl_linux-aarch64 >=2.36.1 + - ld_impl_linux-64 >=2.36.1 - libexpat >=2.6.4,<3.0a0 - libffi >=3.4,<4.0a0 - libgcc >=13 @@ -8813,22 +6923,18 @@ packages: - tzdata constrains: - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux license: Python-2.0 - size: 13760816 - timestamp: 1733407890896 -- kind: conda - name: python - version: 3.12.8 - build: h9e4cc4f_1_cpython + size: 31565686 + timestamp: 1733410597922 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.8-h1683364_1_cpython.conda build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.8-h9e4cc4f_1_cpython.conda - sha256: 3f0e0518c992d8ccfe62b189125721309836fe48a010dc424240583e157f9ff0 - md5: 7fd2fd79436d9b473812f14e86746844 + sha256: 85573582d5b0f79923fed0a8365d3d74d21eee9f0a5fa1b9345f191e006363ab + md5: 09ec612ea05370989eaa3d81abf0f369 depends: - - __glibc >=2.17,<3.0.a0 - bzip2 >=1.0.8,<2.0a0 - - ld_impl_linux-64 >=2.36.1 + - ld_impl_linux-aarch64 >=2.36.1 - libexpat >=2.6.4,<3.0a0 - libffi >=3.4,<4.0a0 - libgcc >=13 @@ -8845,16 +6951,13 @@ packages: - tzdata constrains: - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux license: Python-2.0 - size: 31565686 - timestamp: 1733410597922 -- kind: conda - name: python - version: 3.12.8 - build: hc22306f_1_cpython + size: 13760816 + timestamp: 1733407890896 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.8-hc22306f_1_cpython.conda build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.8-hc22306f_1_cpython.conda sha256: 7586a711b1b08a9df8864e26efdc06980bdfb0e18d5ac4651d0fee30a8d3e3a0 md5: 54ca5b5d92ef3a3ba61e195ee882a518 depends: @@ -8872,17 +6975,12 @@ packages: - tzdata constrains: - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx license: Python-2.0 size: 12998673 timestamp: 1733408900971 -- kind: conda - name: python-dateutil - version: 2.9.0.post0 - build: pyhff2d567_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda sha256: a50052536f1ef8516ed11a844f9413661829aa083304dc624c5925298d078d79 md5: 5ba79d7c71f03c678c8ead841f347d6e depends: @@ -8892,14 +6990,7 @@ packages: license_family: APACHE size: 222505 timestamp: 1733215763718 -- kind: conda - name: python-dotenv - version: 1.0.1 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda sha256: 99713f6b534fef94995c6c16fd21d59f3548784e9111775d692bdc7c44678f02 md5: e5c6ed218664802d305e79cc2d4491de depends: @@ -8908,13 +6999,7 @@ packages: license_family: BSD size: 24215 timestamp: 1733243277223 -- kind: conda - name: python-fastjsonschema - version: 2.21.1 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda sha256: 1b09a28093071c1874862422696429d0d35bd0b8420698003ac004746c5e82a2 md5: 38e34d2d1d9dca4fb2b9a0a04f604e2c depends: @@ -8923,13 +7008,7 @@ packages: license_family: BSD size: 226259 timestamp: 1733236073335 -- kind: conda - name: python-json-logger - version: 2.0.7 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda sha256: 4790787fe1f4e8da616edca4acf6a4f8ed4e7c6967aa31b920208fc8f95efcca md5: a61bf9ec79426938ff785eb69dbb1960 depends: @@ -8938,13 +7017,7 @@ packages: license_family: BSD size: 13383 timestamp: 1677079727691 -- kind: conda - name: python-multipart - version: 0.0.20 - build: pyhff2d567_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.20-pyhff2d567_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.20-pyhff2d567_0.conda sha256: 1b03678d145b1675b757cba165a0d9803885807792f7eb4495e48a38858c3cca md5: a28c984e0429aff3ab7386f7de56de6f depends: @@ -8953,14 +7026,7 @@ packages: license_family: Apache size: 27913 timestamp: 1734420869885 -- kind: conda - name: python-tzdata - version: '2024.2' - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_1.conda sha256: 57c9a02ec25926fb48edca59b9ede107823e5d5c473b94a0e05cc0b9a193a642 md5: c0def296b2f6d2dd7b030c2a7f66bb1f depends: @@ -8969,32 +7035,22 @@ packages: license_family: APACHE size: 142235 timestamp: 1733235414217 -- kind: conda - name: python-xxhash - version: 3.5.0 - build: py312h024a12e_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/python-xxhash-3.5.0-py312h024a12e_1.conda - sha256: 28204ef48f028a4d872e22040da0dad7ebd703549b010a1bb511b6dd94cf466d - md5: 266fe1ae54a7bb17990206664d0f0ae4 +- conda: https://conda.anaconda.org/conda-forge/linux-64/python-xxhash-3.5.0-py312h66e93f0_1.conda + sha256: 20851b1e59fee127d49e01fc73195a88ab0779f103b7d6ffc90d11142a83678f + md5: 39aed2afe4d0cf76ab3d6b09eecdbea7 depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 - xxhash >=0.8.2,<0.8.3.0a0 + arch: x86_64 + platform: linux license: BSD-2-Clause license_family: BSD - size: 21765 - timestamp: 1725272382968 -- kind: conda - name: python-xxhash - version: 3.5.0 - build: py312h52516f5_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/python-xxhash-3.5.0-py312h52516f5_1.conda + size: 23162 + timestamp: 1725272139519 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-xxhash-3.5.0-py312h52516f5_1.conda sha256: 0fa5ba80073a43391ee90303814adbc9fd826175de1fdac273ba0e5b711aa255 md5: 591c4ae6d8338dfd07b951e00433a405 depends: @@ -9002,82 +7058,64 @@ packages: - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 - xxhash >=0.8.2,<0.8.3.0a0 + arch: aarch64 + platform: linux license: BSD-2-Clause license_family: BSD size: 23589 timestamp: 1725273317965 -- kind: conda - name: python-xxhash - version: 3.5.0 - build: py312h66e93f0_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/python-xxhash-3.5.0-py312h66e93f0_1.conda - sha256: 20851b1e59fee127d49e01fc73195a88ab0779f103b7d6ffc90d11142a83678f - md5: 39aed2afe4d0cf76ab3d6b09eecdbea7 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-xxhash-3.5.0-py312h024a12e_1.conda + sha256: 28204ef48f028a4d872e22040da0dad7ebd703549b010a1bb511b6dd94cf466d + md5: 266fe1ae54a7bb17990206664d0f0ae4 depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 + - __osx >=11.0 - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 - xxhash >=0.8.2,<0.8.3.0a0 + arch: arm64 + platform: osx license: BSD-2-Clause license_family: BSD - size: 23162 - timestamp: 1725272139519 -- kind: conda - name: python_abi - version: '3.12' - build: 5_cp312 + size: 21765 + timestamp: 1725272382968 +- conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda build_number: 5 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda sha256: d10e93d759931ffb6372b45d65ff34d95c6000c61a07e298d162a3bc2accebb0 md5: 0424ae29b104430108f5218a66db7260 constrains: - python 3.12.* *_cpython + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD size: 6238 timestamp: 1723823388266 -- kind: conda - name: python_abi - version: '3.12' - build: 5_cp312 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.12-5_cp312.conda build_number: 5 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.12-5_cp312.conda sha256: 5ccdad9981753cc4a2d126e356673a21c0cd5b34e209cb8d476a3947d4ad9b39 md5: 62b20f305498284a07dc6c45fd0e5c87 constrains: - python 3.12.* *_cpython + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD size: 6329 timestamp: 1723823366253 -- kind: conda - name: python_abi - version: '3.12' - build: 5_cp312 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-5_cp312.conda build_number: 5 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-5_cp312.conda sha256: 49d624e4b809c799d2bf257b22c23cf3fc4460f5570d9a58e7ad86350aeaa1f4 md5: b76f9b1c862128e56ac7aa8cd2333de9 constrains: - python 3.12.* *_cpython + arch: arm64 + platform: osx license: BSD-3-Clause license_family: BSD size: 6278 timestamp: 1723823099686 -- kind: conda - name: pytz - version: '2024.2' - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.2-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.2-pyhd8ed1ab_1.conda sha256: 0a7c706b2eb13f7da5692d9ddf1567209964875710b471de6f2743b33d1ba960 md5: f26ec986456c30f6dff154b670ae140f depends: @@ -9086,32 +7124,7 @@ packages: license_family: MIT size: 185890 timestamp: 1733215766006 -- kind: conda - name: pyyaml - version: 6.0.2 - build: py312h024a12e_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py312h024a12e_1.conda - sha256: b06f1c15fb39695bbf707ae8fb554b9a77519af577b5556784534c7db10b52e3 - md5: 1ee23620cf46cb15900f70a1300bae55 - depends: - - __osx >=11.0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - - yaml >=0.2.5,<0.3.0a0 - license: MIT - license_family: MIT - size: 187143 - timestamp: 1725456547263 -- kind: conda - name: pyyaml - version: 6.0.2 - build: py312h66e93f0_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py312h66e93f0_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py312h66e93f0_1.conda sha256: a60705971e958724168f2ebbb8ed4853067f1d3f7059843df3903e3092bbcffa md5: 549e5930e768548a89c23f595dac5a95 depends: @@ -9120,17 +7133,13 @@ packages: - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 - yaml >=0.2.5,<0.3.0a0 + arch: x86_64 + platform: linux license: MIT license_family: MIT size: 206553 timestamp: 1725456256213 -- kind: conda - name: pyyaml - version: 6.0.2 - build: py312hb2c0f52_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/pyyaml-6.0.2-py312hb2c0f52_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyyaml-6.0.2-py312hb2c0f52_1.conda sha256: 8c515ebe1e7e85d972d72b75760af9dfac06fd11a9dba7e05c42d69aedbb303c md5: dc5de424f7dbb9772da720dbb81317b2 depends: @@ -9139,58 +7148,61 @@ packages: - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 - yaml >=0.2.5,<0.3.0a0 + arch: aarch64 + platform: linux license: MIT license_family: MIT size: 199141 timestamp: 1725456356043 -- kind: conda - name: pyzmq - version: 26.2.0 - build: py312h2427ae1_3 - build_number: 3 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/pyzmq-26.2.0-py312h2427ae1_3.conda - sha256: cfc4ea87d68b5f0ed64a61f500d5ea0a2310d1f281a4f95afa06c703ea1bdf7d - md5: 1f0779280c3dc1e72cfd86bd1e59791d +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py312h024a12e_1.conda + sha256: b06f1c15fb39695bbf707ae8fb554b9a77519af577b5556784534c7db10b52e3 + md5: 1ee23620cf46cb15900f70a1300bae55 + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - yaml >=0.2.5,<0.3.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 187143 + timestamp: 1725456547263 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.0-py312hbf22597_3.conda + sha256: bc303f9b11e04a515f79cd5ad3bfa0e84b9dfec76552626d6263b38789fe6678 + md5: 746ce19f0829ec3e19c93007b1a224d3 depends: + - __glibc >=2.17,<3.0.a0 - libgcc >=13 - libsodium >=1.0.20,<1.0.21.0a0 - libstdcxx >=13 - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 - zeromq >=4.3.5,<4.4.0a0 + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD - size: 371730 - timestamp: 1728644030875 -- kind: conda - name: pyzmq - version: 26.2.0 - build: py312hbf22597_3 - build_number: 3 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.0-py312hbf22597_3.conda - sha256: bc303f9b11e04a515f79cd5ad3bfa0e84b9dfec76552626d6263b38789fe6678 - md5: 746ce19f0829ec3e19c93007b1a224d3 + size: 378126 + timestamp: 1728642454632 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyzmq-26.2.0-py312h2427ae1_3.conda + sha256: cfc4ea87d68b5f0ed64a61f500d5ea0a2310d1f281a4f95afa06c703ea1bdf7d + md5: 1f0779280c3dc1e72cfd86bd1e59791d depends: - - __glibc >=2.17,<3.0.a0 - libgcc >=13 - libsodium >=1.0.20,<1.0.21.0a0 - libstdcxx >=13 - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 - zeromq >=4.3.5,<4.4.0a0 + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD - size: 378126 - timestamp: 1728642454632 -- kind: conda - name: pyzmq - version: 26.2.0 - build: py312hf8a1cbd_3 - build_number: 3 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.0-py312hf8a1cbd_3.conda + size: 371730 + timestamp: 1728644030875 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.0-py312hf8a1cbd_3.conda sha256: 2e0ca1bb9ab3af5d1f9b38548d65be7097ba0246e7e63c908c9b1323df3f45b5 md5: 7bdaa4c2a84b744ef26c8b2ba65c3d0e depends: @@ -9201,110 +7213,81 @@ packages: - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 - zeromq >=4.3.5,<4.4.0a0 + arch: arm64 + platform: osx license: BSD-3-Clause license_family: BSD size: 361674 timestamp: 1728642457661 -- kind: conda - name: re2 - version: 2024.07.02 - build: h6589ca4_2 - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/re2-2024.07.02-h6589ca4_2.conda - sha256: 4d3799c05f8f662922a0acd129d119774760a3281b883603678e128d1cb307fb - md5: 7a8b4ad8c58a3408ca89d78788c78178 - depends: - - libre2-11 2024.07.02 h07bc746_2 - license: BSD-3-Clause - license_family: BSD - size: 26861 - timestamp: 1735541088455 -- kind: conda - name: re2 - version: 2024.07.02 - build: h9925aae_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/re2-2024.07.02-h9925aae_2.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/re2-2024.07.02-h9925aae_2.conda sha256: d213c44958d49ce7e0d4d5b81afec23640cce5016685dbb2d23571a99caa4474 md5: e84ddf12bde691e8ec894b00ea829ddf depends: - libre2-11 2024.07.02 hbbce691_2 + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD size: 26786 timestamp: 1735541074034 -- kind: conda - name: re2 - version: 2024.07.02 - build: haa97905_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/re2-2024.07.02-haa97905_2.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/re2-2024.07.02-haa97905_2.conda sha256: 040848655df9119bae5a549fb5c8956a5537120859416c1d9d0712b7bac9f12e md5: 1bf0135339b4a7419a198a795d2d4be0 depends: - libre2-11 2024.07.02 h18dbdb1_2 + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD size: 26830 timestamp: 1735540999398 -- kind: conda - name: readline - version: '8.2' - build: h8228510_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/re2-2024.07.02-h6589ca4_2.conda + sha256: 4d3799c05f8f662922a0acd129d119774760a3281b883603678e128d1cb307fb + md5: 7a8b4ad8c58a3408ca89d78788c78178 + depends: + - libre2-11 2024.07.02 h07bc746_2 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 26861 + timestamp: 1735541088455 +- conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda sha256: 5435cf39d039387fbdc977b0a762357ea909a7694d9528ab40f005e9208744d7 md5: 47d31b792659ce70f470b5c82fdfb7a4 depends: - libgcc-ng >=12 - ncurses >=6.3,<7.0a0 + arch: x86_64 + platform: linux license: GPL-3.0-only license_family: GPL size: 281456 timestamp: 1679532220005 -- kind: conda - name: readline - version: '8.2' - build: h8fc344f_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8fc344f_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8fc344f_1.conda sha256: 4c99f7417419734e3797d45bc355e61c26520e111893b0d7087a01a7fbfbe3dd md5: 105eb1e16bf83bfb2eb380a48032b655 depends: - libgcc-ng >=12 - ncurses >=6.3,<7.0a0 + arch: aarch64 + platform: linux license: GPL-3.0-only license_family: GPL size: 294092 timestamp: 1679532238805 -- kind: conda - name: readline - version: '8.2' - build: h92ec313_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h92ec313_1.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h92ec313_1.conda sha256: a1dfa679ac3f6007362386576a704ad2d0d7a02e98f5d0b115f207a2da63e884 md5: 8cbb776a2f641b943d413b3e19df71f4 depends: - ncurses >=6.3,<7.0a0 + arch: arm64 + platform: osx license: GPL-3.0-only license_family: GPL size: 250351 timestamp: 1679532511311 -- kind: conda - name: referencing - version: 0.35.1 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/referencing-0.35.1-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.35.1-pyhd8ed1ab_1.conda sha256: f972eecb4dc8e06257af37642f92b0f2df04a7fe4c950f2e1045505e5e93985f md5: 8c9083612c1bfe6878715ed5732605f8 depends: @@ -9315,12 +7298,7 @@ packages: license_family: MIT size: 42201 timestamp: 1733366868091 -- kind: conda - name: regex - version: 2024.11.6 - build: py312h66e93f0_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/regex-2024.11.6-py312h66e93f0_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/regex-2024.11.6-py312h66e93f0_0.conda sha256: fcb5687d3ec5fff580b64b8fb649d9d65c999a91a5c3108a313ecdd2de99f06b md5: 647770db979b43f9c9ca25dcfa7dc4e4 depends: @@ -9328,16 +7306,13 @@ packages: - libgcc >=13 - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux license: Python-2.0 license_family: PSF size: 402821 timestamp: 1730952378415 -- kind: conda - name: regex - version: 2024.11.6 - build: py312hb2c0f52_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/regex-2024.11.6-py312hb2c0f52_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/regex-2024.11.6-py312hb2c0f52_0.conda sha256: ec2c416860de29224e447e2031f8686a05476759c17da1f32f61d4307e540ec8 md5: fa8b589107567f532fa1380e66f91776 depends: @@ -9345,16 +7320,13 @@ packages: - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux license: Python-2.0 license_family: PSF size: 398947 timestamp: 1730952477463 -- kind: conda - name: regex - version: 2024.11.6 - build: py312hea69d52_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/regex-2024.11.6-py312hea69d52_0.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/regex-2024.11.6-py312hea69d52_0.conda sha256: dcdec32f2c7dd37986baa692bedf9db126ad34e92e5e9b64f707cba3d04d2525 md5: e73cda1f18846b608284bd784f061eac depends: @@ -9362,18 +7334,13 @@ packages: - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx license: Python-2.0 license_family: PSF size: 366374 timestamp: 1730952427552 -- kind: conda - name: requests - version: 2.32.3 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda sha256: d701ca1136197aa121bbbe0e8c18db6b5c94acbd041c2b43c70e5ae104e1d8ad md5: a9b9368f3701a417eac9edbcae7cb737 depends: @@ -9388,14 +7355,7 @@ packages: license_family: APACHE size: 58723 timestamp: 1733217126197 -- kind: conda - name: rfc3339-validator - version: 0.1.4 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda sha256: 2e4372f600490a6e0b3bac60717278448e323cab1c0fecd5f43f7c56535a99c5 md5: 36de09a8d3e5d5e6f4ee63af49e59706 depends: @@ -9405,13 +7365,7 @@ packages: license_family: MIT size: 10209 timestamp: 1733600040800 -- kind: conda - name: rfc3986-validator - version: 0.1.1 - build: pyh9f0ad1d_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 sha256: 2a5b495a1de0f60f24d8a74578ebc23b24aa53279b1ad583755f223097c41c37 md5: 912a71cc01012ee38e6b90ddd561e36f depends: @@ -9420,14 +7374,7 @@ packages: license_family: MIT size: 7818 timestamp: 1598024297745 -- kind: conda - name: rich - version: 13.9.4 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_1.conda sha256: 06a760c5ae572e72e865d5a87e9fe3cc171e1a9c996e63daf3db52ff1a0b4457 md5: 7aed65d4ff222bfb7335997aa40b7da5 depends: @@ -9439,13 +7386,7 @@ 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 +- conda: https://conda.anaconda.org/conda-forge/noarch/rich-toolkit-0.11.3-pyh29332c3_0.conda sha256: e558f8c254a9ff9164d069110da162fc79497d70c60f2c09a5d3d0d7101c5628 md5: 4ba15ae9388b67d09782798347481f69 depends: @@ -9458,12 +7399,7 @@ packages: license_family: MIT size: 17357 timestamp: 1733750834072 -- kind: conda - name: rpds-py - version: 0.22.3 - build: py312h12e396e_0 - subdir: linux-64 - url: 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/rpds-py-0.22.3-py312h12e396e_0.conda sha256: e8662d21ca3c912ac8941725392b838a29458b106ef22d9489cdf0f8de145fad md5: bfb49da0cc9098597d527def04d66f8b depends: @@ -9473,16 +7409,13 @@ packages: - python_abi 3.12.* *_cp312 constrains: - __glibc >=2.17 + arch: x86_64 + platform: linux license: MIT license_family: MIT size: 354410 timestamp: 1733366814237 -- kind: conda - name: rpds-py - version: 0.22.3 - build: py312ha4e36d7_0 - subdir: linux-aarch64 - url: 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/rpds-py-0.22.3-py312ha4e36d7_0.conda sha256: bd8215aea86b57f7d036d53eee813a544736e94783faeb7b928931fca45715f8 md5: 4d41b57d0d3933b9cab7ac8c05745123 depends: @@ -9491,16 +7424,13 @@ packages: - python_abi 3.12.* *_cp312 constrains: - __glibc >=2.17 + arch: aarch64 + platform: linux license: MIT license_family: MIT size: 348424 timestamp: 1733368364148 -- kind: conda - name: rpds-py - version: 0.22.3 - build: py312hcd83bfe_0 - subdir: osx-arm64 - url: 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/rpds-py-0.22.3-py312hcd83bfe_0.conda sha256: 0a8b50bf22400004a706ba160d7cb31f82b8d8c328a59aec73a9e0d3372d1964 md5: 2f7c4d01946fa2ce73d7ef3eeb041877 depends: @@ -9510,49 +7440,40 @@ packages: - python_abi 3.12.* *_cp312 constrains: - __osx >=11.0 + arch: arm64 + platform: osx license: MIT license_family: MIT size: 318920 timestamp: 1733367225496 -- kind: conda - name: s2n - version: 1.5.10 - build: h5df210e_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/s2n-1.5.10-h5df210e_0.conda - sha256: b5e7a9f4b7b1ec5c5c3661e2defc8b47fab543b05cad6fec78739d8007612464 - md5: 3d3979efcc0f44f3f0cef3de03b296cc - depends: - - libgcc >=13 - - openssl >=3.4.0,<4.0a0 - license: Apache-2.0 - license_family: Apache - size: 353450 - timestamp: 1734415474615 -- kind: conda - name: s2n - version: 1.5.10 - build: hb5b8611_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/s2n-1.5.10-hb5b8611_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/s2n-1.5.10-hb5b8611_0.conda sha256: f6d451821fddc26b93f45e9313e1ea15e09e5ef049d4e137413a5225d2a5dfba md5: 999f3673f2a011f59287f2969e3749e4 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - openssl >=3.4.0,<4.0a0 + arch: x86_64 + platform: linux license: Apache-2.0 license_family: Apache size: 355142 timestamp: 1734415467047 -- kind: conda - name: safetensors - version: 0.5.1 - build: py312h12e396e_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/safetensors-0.5.1-py312h12e396e_0.conda - sha256: 61a4a49bc98a7b529c7c9e2af9be1dc3350b8ea1c78f985e8a051543e8845ffa - md5: 19b54f64e926aca46d0cc2ff0ecf4f34 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/s2n-1.5.10-h5df210e_0.conda + sha256: b5e7a9f4b7b1ec5c5c3661e2defc8b47fab543b05cad6fec78739d8007612464 + md5: 3d3979efcc0f44f3f0cef3de03b296cc + depends: + - libgcc >=13 + - openssl >=3.4.0,<4.0a0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 353450 + timestamp: 1734415474615 +- conda: https://conda.anaconda.org/conda-forge/linux-64/safetensors-0.5.2-py312h12e396e_0.conda + sha256: 98b8dfa5eec083e0b3ace00906a7f7e748b1e2446dca17e87473f43278fcc036 + md5: 999ca9d87d2bb8b4c01e62c755b928cf depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -9560,18 +7481,15 @@ packages: - python_abi 3.12.* *_cp312 constrains: - __glibc >=2.17 + arch: x86_64 + platform: linux license: Apache-2.0 license_family: APACHE - size: 424642 - timestamp: 1736278244485 -- kind: conda - name: safetensors - version: 0.5.1 - build: py312h8cbf658_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/safetensors-0.5.1-py312h8cbf658_0.conda - sha256: ee66da0efb1d6897ad74156cb115277dfb8ca7f6c8bdfb17bd6a6fb205495622 - md5: f91072f99af78ed0c1941ba5d6f30cf8 + size: 424409 + timestamp: 1736383159339 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/safetensors-0.5.2-py312h8cbf658_0.conda + sha256: 3e230060c1366cbaf03f4315b021dfe47f5147f3af88f17975d661c08fe15ad3 + md5: 2c77c961c4e813b1d05122ac4d803d80 depends: - libgcc >=13 - python >=3.12,<3.13.0a0 @@ -9579,18 +7497,15 @@ packages: - python_abi 3.12.* *_cp312 constrains: - __glibc >=2.17 + arch: aarch64 + platform: linux license: Apache-2.0 license_family: APACHE - size: 409549 - timestamp: 1736278357702 -- kind: conda - name: safetensors - version: 0.5.1 - build: py312hcd83bfe_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/safetensors-0.5.1-py312hcd83bfe_0.conda - sha256: e61cbac0c1b38731543a600e2e40c4cc686e5e565f6c9809d5dcc467e2e8f220 - md5: d12e134445366752e52acec1a86c845f + size: 408166 + timestamp: 1736383184569 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/safetensors-0.5.2-py312hcd83bfe_0.conda + sha256: 0aeb3e654095ca0261d560d1fc05912d0e94d547a7dc435d7f4cedeba966d176 + md5: fc0383682805e293eba9b8afc9ad0931 depends: - __osx >=11.0 - python >=3.12,<3.13.0a0 @@ -9598,18 +7513,13 @@ packages: - python_abi 3.12.* *_cp312 constrains: - __osx >=11.0 + arch: arm64 + platform: osx license: Apache-2.0 license_family: APACHE - size: 378562 - timestamp: 1736278448037 -- kind: conda - name: send2trash - version: 1.8.3 - build: pyh0d859eb_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh0d859eb_1.conda + size: 378060 + timestamp: 1736383410115 +- conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh0d859eb_1.conda sha256: 00926652bbb8924e265caefdb1db100f86a479e8f1066efe395d5552dde54d02 md5: 938c8de6b9de091997145b3bf25cdbf9 depends: @@ -9619,14 +7529,7 @@ packages: license_family: BSD size: 22736 timestamp: 1733322148326 -- kind: conda - name: send2trash - version: 1.8.3 - build: pyh31c8845_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh31c8845_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh31c8845_1.conda sha256: 5282eb5b462502c38df8cb37cd1542c5bbe26af2453a18a0a0602d084ca39f53 md5: e67b1b1fa7a79ff9e8e326d0caf55854 depends: @@ -9637,30 +7540,16 @@ packages: license_family: BSD size: 23100 timestamp: 1733322309409 -- kind: conda - name: setuptools - version: 75.6.0 - build: pyhff2d567_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_1.conda - sha256: abb12e1dd515b13660aacb5d0fd43835bc2186cab472df25b7716cd65e095111 - md5: fc80f7995e396cbaeabd23cf46c413dc +- conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.8.0-pyhff2d567_0.conda + sha256: e0778e4f276e9a81b51c56f51ec22a27b4d8fc955abc0be77ad09ca9bea06bb9 + md5: 8f28e299c11afdd79e0ec1e279dcdc52 depends: - python >=3.9 license: MIT license_family: MIT - size: 774252 - timestamp: 1732632769210 -- kind: conda - name: shellingham - version: 1.5.4 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda + size: 775598 + timestamp: 1736512753595 +- conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda sha256: 0557c090913aa63cdbe821dbdfa038a321b488e22bc80196c4b3b1aace4914ef md5: 7c3c2a0f3ebdea2bbc35538d162b43bf depends: @@ -9669,13 +7558,7 @@ packages: license_family: MIT size: 14462 timestamp: 1733301007770 -- kind: conda - name: six - version: 1.17.0 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda sha256: 41db0180680cc67c3fa76544ffd48d6a5679d96f4b71d7498a759e94edc9a2db md5: a451d576819089b0d672f18768be0f65 depends: @@ -9684,63 +7567,44 @@ packages: license_family: MIT size: 16385 timestamp: 1733381032766 -- kind: conda - name: snappy - version: 1.2.1 - build: h8bd8927_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-h8bd8927_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-h8bd8927_1.conda sha256: ec91e86eeb2c6bbf09d51351b851e945185d70661d2ada67204c9a6419d282d3 md5: 3b3e64af585eadfb52bb90b553db5edf depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - libstdcxx >=13 + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD size: 42739 timestamp: 1733501881851 -- kind: conda - name: snappy - version: 1.2.1 - build: h98b9ce2_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-h98b9ce2_1.conda - sha256: 4242f95b215127a006eb664fe26ed5a82df87e90cbdbc7ce7ff4971f0720997f - md5: ded86dee325290da2967a3fea3800eb5 - depends: - - __osx >=11.0 - - libcxx >=18 - license: BSD-3-Clause - license_family: BSD - size: 35857 - timestamp: 1733502172664 -- kind: conda - name: snappy - version: 1.2.1 - build: hd4fb6f5_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-hd4fb6f5_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-hd4fb6f5_1.conda sha256: c4a07ae5def8d55128f25a567a296ef9d7bf99a3bc79d46bd5160c076a5f50af md5: 2fcc6cd1e5550deb509073fd2e6693e1 depends: - libgcc >=13 - libstdcxx >=13 + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD size: 43032 timestamp: 1733501964775 -- kind: conda - name: sniffio - version: 1.3.1 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-h98b9ce2_1.conda + sha256: 4242f95b215127a006eb664fe26ed5a82df87e90cbdbc7ce7ff4971f0720997f + md5: ded86dee325290da2967a3fea3800eb5 + depends: + - __osx >=11.0 + - libcxx >=18 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 35857 + timestamp: 1733502172664 +- conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda sha256: c2248418c310bdd1719b186796ae50a8a77ce555228b6acd32768e2543a15012 md5: bf7a226e58dfb8346c70df36065d86c9 depends: @@ -9749,14 +7613,7 @@ packages: license_family: Apache size: 15019 timestamp: 1733244175724 -- kind: conda - name: soupsieve - version: '2.5' - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.5-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.5-pyhd8ed1ab_1.conda sha256: 54ae221033db8fbcd4998ccb07f3c3828b4d77e73b0c72b18c1d6a507059059c md5: 3f144b2c34f8cb5a9abd9ed23a39c561 depends: @@ -9765,13 +7622,7 @@ packages: license_family: MIT size: 36754 timestamp: 1693929424267 -- kind: conda - name: sse-starlette - version: 2.2.1 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.2.1-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.2.1-pyhd8ed1ab_0.conda sha256: 3c6a476e7afb702d841e23c61a0c4cc491929d2e39376d329e67e94c40a236cc md5: c1ef6bc13dd2caa4b406fb3cb06c2791 depends: @@ -9782,14 +7633,7 @@ packages: license_family: BSD size: 15324 timestamp: 1735126414893 -- kind: conda - name: stack_data - version: 0.6.3 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda sha256: 570da295d421661af487f1595045760526964f41471021056e993e73089e9c41 md5: b1b505328da7a6b246787df4b5a49fbc depends: @@ -9801,14 +7645,7 @@ packages: license_family: MIT size: 26988 timestamp: 1733569565672 -- kind: conda - name: starlette - version: 0.41.3 - build: pyha770c72_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyha770c72_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyha770c72_1.conda sha256: b74fc76107487eb26624c01fc55bfab7eed03ae82e003333c86d8a1eeac53672 md5: 0207dac04ae2200701fab697f0aaaac4 depends: @@ -9819,13 +7656,7 @@ packages: license_family: BSD size: 58838 timestamp: 1733344472634 -- kind: conda - name: terminado - version: 0.18.1 - build: pyh0d859eb_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh0d859eb_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh0d859eb_0.conda sha256: b300557c0382478cf661ddb520263508e4b3b5871b471410450ef2846e8c352c md5: efba281bbdae5f6b0a1d53c6d4a97c93 depends: @@ -9837,13 +7668,7 @@ packages: license_family: BSD size: 22452 timestamp: 1710262728753 -- kind: conda - name: terminado - version: 0.18.1 - build: pyh31c8845_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh31c8845_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh31c8845_0.conda sha256: 4daae56fc8da17784578fbdd064f17e3b3076b394730a14119e571707568dc8a md5: 00b54981b923f5aefcd5e8547de056d5 depends: @@ -9855,13 +7680,7 @@ packages: license_family: BSD size: 22717 timestamp: 1710265922593 -- kind: conda - name: tinycss2 - version: 1.4.0 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda sha256: cad582d6f978276522f84bd209a5ddac824742fe2d452af6acf900f8650a73a2 md5: f1acf5fdefa8300de697982bcb1761c9 depends: @@ -9871,58 +7690,42 @@ packages: license_family: BSD size: 28285 timestamp: 1729802975370 -- kind: conda - name: tk - version: 8.6.13 - build: h194ca79_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda + sha256: e0569c9caa68bf476bead1bed3d79650bb080b532c64a4af7d8ca286c08dea4e + md5: d453b98d9c83e71da0741bb0ff4d76bc + depends: + - libgcc-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 + arch: x86_64 + platform: linux + license: TCL + license_family: BSD + size: 3318875 + timestamp: 1699202167581 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda sha256: 7fa27cc512d3a783f38bd16bbbffc008807372499d5b65d089a8e43bde9db267 md5: f75105e0585851f818e0009dd1dde4dc depends: - libgcc-ng >=12 - libzlib >=1.2.13,<2.0.0a0 + arch: aarch64 + platform: linux license: TCL license_family: BSD size: 3351802 timestamp: 1695506242997 -- kind: conda - name: tk - version: 8.6.13 - build: h5083fa2_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda sha256: 72457ad031b4c048e5891f3f6cb27a53cb479db68a52d965f796910e71a403a8 md5: b50a57ba89c32b62428b71a875291c9b depends: - libzlib >=1.2.13,<2.0.0a0 + arch: arm64 + platform: osx license: TCL license_family: BSD size: 3145523 timestamp: 1699202432999 -- kind: conda - name: tk - version: 8.6.13 - build: noxft_h4845f30_101 - build_number: 101 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda - sha256: e0569c9caa68bf476bead1bed3d79650bb080b532c64a4af7d8ca286c08dea4e - md5: d453b98d9c83e71da0741bb0ff4d76bc - depends: - - libgcc-ng >=12 - - libzlib >=1.2.13,<2.0.0a0 - license: TCL - license_family: BSD - size: 3318875 - timestamp: 1699202167581 -- kind: conda - name: tokenizers - version: 0.21.0 - build: py312h8360d73_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.21.0-py312h8360d73_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.21.0-py312h8360d73_0.conda sha256: 4f504a5e9d77c6d88a8f735c4319429d8bf40b742384f908a2efe0a09acc3cc5 md5: f953aa733207f3d37acf4a3efbedba89 depends: @@ -9935,16 +7738,13 @@ packages: - python_abi 3.12.* *_cp312 constrains: - __glibc >=2.17 + arch: x86_64 + platform: linux license: Apache-2.0 license_family: APACHE size: 2258007 timestamp: 1732734202127 -- kind: conda - name: tokenizers - version: 0.21.0 - build: py312ha0d6ea1_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.21.0-py312ha0d6ea1_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.21.0-py312ha0d6ea1_0.conda sha256: ef0f4d4e2c798b1821187ea0ba4c86484e48abaa0e9a19fe68030fa7ff5dde84 md5: 077f48c9e0c08a30d842e15c51df4143 depends: @@ -9957,16 +7757,13 @@ packages: - python_abi 3.12.* *_cp312 constrains: - __glibc >=2.17 + arch: aarch64 + platform: linux license: Apache-2.0 license_family: APACHE size: 2331194 timestamp: 1732734303196 -- kind: conda - name: tokenizers - version: 0.21.0 - build: py312hf3e4074_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.21.0-py312hf3e4074_0.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.21.0-py312hf3e4074_0.conda sha256: 5d395333fcb22dc611140286c1f2ea8b3fa220a4931c583587cb612238091555 md5: 4c732c74b485ef7ac8ec1c548dd45e8e depends: @@ -9978,48 +7775,22 @@ packages: - python_abi 3.12.* *_cp312 constrains: - __osx >=11.0 + arch: arm64 + platform: osx license: Apache-2.0 license_family: APACHE size: 1931389 timestamp: 1732734727624 -- kind: conda - name: tomli - version: 2.2.1 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda sha256: 18636339a79656962723077df9a56c0ac7b8a864329eb8f847ee3d38495b863e md5: ac944244f1fed2eb49bae07193ae8215 depends: - python >=3.9 license: MIT - license_family: MIT - size: 19167 - timestamp: 1733256819729 -- kind: conda - name: tornado - version: 6.4.2 - build: py312h52516f5_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py312h52516f5_0.conda - sha256: 4c19a544354172b2273553267e734795a6da3c78a04c2d19f8e9e159ca3178bc - md5: e28996d9d2d44d777b7e6fb12f63715b - depends: - - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - license: Apache-2.0 - license_family: Apache - size: 841662 - timestamp: 1732616934923 -- kind: conda - name: tornado - version: 6.4.2 - build: py312h66e93f0_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda + license_family: MIT + size: 19167 + timestamp: 1733256819729 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda sha256: 062a3a3a37fa8615ce57929ba7e982c76f5a5810bcebd435950f6d6c4147c310 md5: e417822cb989e80a0d2b1b576fdd1657 depends: @@ -10027,16 +7798,26 @@ packages: - libgcc >=13 - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux license: Apache-2.0 license_family: Apache size: 840414 timestamp: 1732616043734 -- kind: conda - name: tornado - version: 6.4.2 - build: py312hea69d52_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py312h52516f5_0.conda + sha256: 4c19a544354172b2273553267e734795a6da3c78a04c2d19f8e9e159ca3178bc + md5: e28996d9d2d44d777b7e6fb12f63715b + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 841662 + timestamp: 1732616934923 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda sha256: 964a2705a36c50040c967b18b45b9cc8de3c2aff4af546979a574e0b38e58e39 md5: fb0605888a475d6a380ae1d1a819d976 depends: @@ -10044,18 +7825,13 @@ packages: - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx license: Apache-2.0 license_family: Apache size: 842549 timestamp: 1732616081362 -- kind: conda - name: tqdm - version: 4.67.1 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda sha256: 11e2c85468ae9902d24a27137b6b39b4a78099806e551d390e394a8c34b48e40 md5: 9efbfdc37242619130ea42b1cc4ed861 depends: @@ -10064,14 +7840,7 @@ packages: license: MPL-2.0 or MIT size: 89498 timestamp: 1735661472632 -- kind: conda - name: traitlets - version: 5.14.3 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda sha256: f39a5620c6e8e9e98357507262a7869de2ae8cc07da8b7f84e517c9fd6c2b959 md5: 019a7385be9af33791c989871317e1ed depends: @@ -10080,15 +7849,9 @@ packages: license_family: BSD size: 110051 timestamp: 1733367480074 -- kind: conda - name: transformers - version: 4.47.1 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.1-pyhd8ed1ab_0.conda - sha256: df8238c3cccbb6bb1d5657e6a75977ac0b832ab61155d5e3d8560c1c4f52abeb - md5: 931d66db156680c42c62812d6533cbf7 +- conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.48.0-pyhd8ed1ab_0.conda + sha256: c8dd6d69e4ef67c7d507dec2be4b6964f6ddbe1ce35a822ddf4089505d702f33 + md5: 2c57d4af7b8952484962b40a59cf1537 depends: - datasets !=2.5.0 - filelock @@ -10104,15 +7867,9 @@ packages: - tqdm >=4.27 license: Apache-2.0 license_family: APACHE - size: 3680276 - timestamp: 1734499046193 -- kind: conda - name: typer - version: 0.15.1 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda + size: 3408277 + timestamp: 1736534112195 +- conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda sha256: ef695490e895c2ad552c77ec497b899b09fd4ad4ab07edcf5649f5994cf92a35 md5: 170a0398946d8f5b454e592672b6fc20 depends: @@ -10122,13 +7879,7 @@ packages: license_family: MIT size: 56175 timestamp: 1733408582623 -- kind: conda - name: typer-slim - version: 0.15.1 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda sha256: d4965516f35e0805199de6596c4ac76c4ad3d6b012be35e532102f9e53ecb860 md5: 0218b16f5a1dd569e575a7a6415489db depends: @@ -10143,13 +7894,7 @@ packages: license_family: MIT size: 43592 timestamp: 1733408569554 -- kind: conda - name: typer-slim-standard - version: 0.15.1 - build: hd8ed1ab_0 - subdir: noarch - noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda sha256: f31c56fe98315da8b9ce848256c17e0b9f87896b41a6ccf0c9cc74644dcef20f md5: 4e603c43bfdfc7b533be087c3e070cc9 depends: @@ -10160,13 +7905,7 @@ packages: license_family: MIT size: 49531 timestamp: 1733408570063 -- kind: conda - name: types-python-dateutil - version: 2.9.0.20241206 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20241206-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20241206-pyhd8ed1ab_0.conda sha256: 8b98cd9464837174ab58aaa912fc95d5831879864676650a383994033533b8d1 md5: 1dbc4a115e2ad9fb7f9d5b68397f66f9 depends: @@ -10174,14 +7913,8 @@ packages: license: Apache-2.0 AND MIT size: 22104 timestamp: 1733612458611 -- kind: conda - name: typing-extensions - version: 4.12.2 - build: hd8ed1ab_1 - build_number: 1 - subdir: noarch +- conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda sha256: c8e9c1c467b5f960b627d7adc1c65fece8e929a3de89967e91ef0f726422fd32 md5: b6a408c64b78ec7b779a3e5c7a902433 depends: @@ -10190,14 +7923,7 @@ packages: license_family: PSF size: 10075 timestamp: 1733188758872 -- kind: conda - name: typing_extensions - version: 4.12.2 - build: pyha770c72_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda sha256: 337be7af5af8b2817f115b3b68870208b30c31d3439bec07bfb2d8f4823e3568 md5: d17f13df8b65464ca316cbc000a3cb64 depends: @@ -10206,14 +7932,7 @@ packages: license_family: PSF size: 39637 timestamp: 1733188758212 -- kind: conda - name: typing_utils - version: 0.1.0 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda sha256: 3088d5d873411a56bf988eee774559335749aed6f6c28e07bf933256afb9eb6c md5: f6d7aa696c67756a650e91e15e88223c depends: @@ -10222,26 +7941,13 @@ packages: license_family: APACHE size: 15183 timestamp: 1733331395943 -- kind: conda - name: tzdata - version: 2024b - build: hc8b5060_0 - subdir: noarch - noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda sha256: 4fde5c3008bf5d2db82f2b50204464314cc3c91c1d953652f7bd01d9e52aefdf md5: 8ac3367aafb1cc0a068483c580af8015 license: LicenseRef-Public-Domain size: 122354 timestamp: 1728047496079 -- kind: conda - name: uri-template - version: 1.3.0 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda sha256: e0eb6c8daf892b3056f08416a96d68b0a358b7c46b99c8a50481b22631a4dfc0 md5: e7cb0f5745e4c5035a460248334af7eb depends: @@ -10250,13 +7956,7 @@ packages: license_family: MIT size: 23990 timestamp: 1733323714454 -- kind: conda - name: urllib3 - version: 2.3.0 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda sha256: 114919ffa80c328127dab9c8e7a38f9d563c617691fb81fccb11c1e86763727e md5: 32674f8dbfb7b26410ed580dd3c10a29 depends: @@ -10269,13 +7969,7 @@ packages: license_family: MIT size: 100102 timestamp: 1734859520452 -- kind: conda - name: uvicorn - version: 0.34.0 - build: pyh31011fe_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.34.0-pyh31011fe_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.34.0-pyh31011fe_0.conda sha256: 55c160b0cf9274e2b98bc0f7fcce548bffa8d788bc86aa02801877457040f6fa md5: 5d448feee86e4740498ec8f8eb40e052 depends: @@ -10288,13 +7982,7 @@ packages: license_family: BSD size: 48643 timestamp: 1734293057914 -- kind: conda - name: uvicorn-standard - version: 0.34.0 - build: h31011fe_0 - subdir: noarch - noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.34.0-h31011fe_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.34.0-h31011fe_0.conda sha256: 87e1531e175e75122f9f37608eb953af4c977465ab0ae11283cc01fef954e4ec md5: 32a94143a7f65d76d2d5da37dcb4ed79 depends: @@ -10310,31 +7998,7 @@ packages: license_family: BSD size: 7203 timestamp: 1734293058849 -- kind: conda - name: uvloop - version: 0.21.0 - build: py312h0bf5046_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/uvloop-0.21.0-py312h0bf5046_1.conda - sha256: b1efa77aa4871d7bb09c8dd297fa9bd9070ba7f0f95f2d12ae9cdd31ce8b6b22 - md5: 4f5110253ba80ebf27e55c4ab333880a - depends: - - __osx >=11.0 - - libuv >=1.49.2,<2.0a0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - license: MIT OR Apache-2.0 - size: 544097 - timestamp: 1730214653726 -- kind: conda - name: uvloop - version: 0.21.0 - build: py312h66e93f0_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/uvloop-0.21.0-py312h66e93f0_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/uvloop-0.21.0-py312h66e93f0_1.conda sha256: 9337a80165fcf70b06b9d6ba920dad702260ca966419ae77560a15540e41ab72 md5: 998e481e17c1b6a74572e73b06f2df08 depends: @@ -10343,16 +8007,12 @@ packages: - libuv >=1.49.2,<2.0a0 - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux license: MIT OR Apache-2.0 size: 701355 timestamp: 1730214506716 -- kind: conda - name: uvloop - version: 0.21.0 - build: py312hb2c0f52_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/uvloop-0.21.0-py312hb2c0f52_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/uvloop-0.21.0-py312hb2c0f52_1.conda sha256: 807eede6698bd00a1d739a3e19ee6ae6a03a66d2ddd2ef150f2dfd198c3b0292 md5: d83e107ba16c77aba2feec47b7b666a4 depends: @@ -10361,17 +8021,28 @@ packages: - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux license: MIT OR Apache-2.0 size: 655266 timestamp: 1730214606664 -- kind: conda - name: watchfiles - version: 1.0.3 - build: py312h12e396e_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/watchfiles-1.0.3-py312h12e396e_0.conda - sha256: c89755d8e8f6384b3ba13e41dcabb40bf690c38b9d61512e963129badb1ad332 - md5: b76a5ad00856af6e74da9c3e85fed0cc +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/uvloop-0.21.0-py312h0bf5046_1.conda + sha256: b1efa77aa4871d7bb09c8dd297fa9bd9070ba7f0f95f2d12ae9cdd31ce8b6b22 + md5: 4f5110253ba80ebf27e55c4ab333880a + depends: + - __osx >=11.0 + - libuv >=1.49.2,<2.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: MIT OR Apache-2.0 + size: 544097 + timestamp: 1730214653726 +- conda: https://conda.anaconda.org/conda-forge/linux-64/watchfiles-1.0.4-py312h12e396e_0.conda + sha256: b728f525dcae2c10524f9942255346eba62aee9c820ff269d7dd4f7caffb7ffb + md5: df87129c4cb7afc4a3cbad71a1b9e223 depends: - __glibc >=2.17,<3.0.a0 - anyio >=3.0.0 @@ -10380,18 +8051,14 @@ packages: - python_abi 3.12.* *_cp312 constrains: - __glibc >=2.17 + arch: x86_64 + platform: linux license: MIT - license_family: MIT - size: 410432 - timestamp: 1733998892675 -- kind: conda - name: watchfiles - version: 1.0.3 - build: py312h8cbf658_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/watchfiles-1.0.3-py312h8cbf658_0.conda - sha256: 9be9569c279dc6e7881e9b45fe9f0368218538c660641e2f8b0e023e72a6571c - md5: 3465c1a19634233abc2d1832ac01fd31 + size: 410192 + timestamp: 1736550568524 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/watchfiles-1.0.4-py312h8cbf658_0.conda + sha256: 45193910f6bafc287c784442d173745161b18f96223f0f990a9a744fda753787 + md5: ed958a27e610c31de625e167d4c11a04 depends: - anyio >=3.0.0 - libgcc >=13 @@ -10400,18 +8067,14 @@ packages: - python_abi 3.12.* *_cp312 constrains: - __glibc >=2.17 + arch: aarch64 + platform: linux license: MIT - license_family: MIT - size: 404239 - timestamp: 1733998941045 -- kind: conda - name: watchfiles - version: 1.0.3 - build: py312hcd83bfe_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/watchfiles-1.0.3-py312hcd83bfe_0.conda - sha256: b64b78a7d6384bf72a878256802c783c692fe641ab4b806fd7e9f45e18a5e3b4 - md5: 13b89e1aa72aa773806b1f59ec018b67 + size: 403791 + timestamp: 1736550743174 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/watchfiles-1.0.4-py312hcd83bfe_0.conda + sha256: 84122e3712f2263e12c9d2be75d122eaf2d269801183df4b73aadcb670943b17 + md5: 946eb0208d09b811a671fad9b2831f4e depends: - __osx >=11.0 - anyio >=3.0.0 @@ -10420,18 +8083,12 @@ packages: - python_abi 3.12.* *_cp312 constrains: - __osx >=11.0 + arch: arm64 + platform: osx license: MIT - license_family: MIT - size: 363162 - timestamp: 1733999215646 -- kind: conda - name: wcwidth - version: 0.2.13 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda + size: 363822 + timestamp: 1736550859472 +- conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda sha256: f21e63e8f7346f9074fd00ca3b079bd3d2fa4d71f1f89d5b6934bf31446dc2a5 md5: b68980f2495d096e71c7fd9d7ccf63e6 depends: @@ -10440,13 +8097,7 @@ packages: license_family: MIT size: 32581 timestamp: 1733231433877 -- kind: conda - name: webcolors - version: 24.11.1 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda sha256: 08315dc2e61766a39219b2d82685fc25a56b2817acf84d5b390176080eaacf99 md5: b49f7b291e15494aafb0a7d74806f337 depends: @@ -10455,14 +8106,7 @@ packages: license_family: BSD size: 18431 timestamp: 1733359823938 -- kind: conda - name: webencodings - version: 0.5.1 - build: pyhd8ed1ab_3 - build_number: 3 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda sha256: 19ff205e138bb056a46f9e3839935a2e60bd1cf01c8241a5e172a422fed4f9c6 md5: 2841eb5bfc75ce15e9a0054b98dcd64d depends: @@ -10471,14 +8115,7 @@ packages: license_family: BSD size: 15496 timestamp: 1733236131358 -- kind: conda - name: websocket-client - version: 1.8.0 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.8.0-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.8.0-pyhd8ed1ab_1.conda sha256: 1dd84764424ffc82030c19ad70607e6f9e3b9cb8e633970766d697185652053e md5: 84f8f77f0a9c6ef401ee96611745da8f depends: @@ -10487,12 +8124,7 @@ packages: license_family: APACHE size: 46718 timestamp: 1733157432924 -- kind: conda - name: websockets - version: '14.1' - build: py312h66e93f0_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/websockets-14.1-py312h66e93f0_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/websockets-14.1-py312h66e93f0_0.conda sha256: 5998940f91765ba991cf286c863c20bcb53db92bb976a2b5a714566b86b0e763 md5: a79f7ce618bd0a9f4c00c59a03570fcd depends: @@ -10500,16 +8132,13 @@ packages: - libgcc >=13 - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD size: 242145 timestamp: 1731498716195 -- kind: conda - name: websockets - version: '14.1' - build: py312hb2c0f52_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/websockets-14.1-py312hb2c0f52_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/websockets-14.1-py312hb2c0f52_0.conda sha256: c292a8badcbe4040537e225fbeb237bfaf272808eab060067d965d3da98ccd5c md5: 7e2a0ef2a1a87f88f9745f9c7059186e depends: @@ -10517,16 +8146,13 @@ packages: - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD size: 242912 timestamp: 1731498811466 -- kind: conda - name: websockets - version: '14.1' - build: py312hea69d52_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/websockets-14.1-py312hea69d52_0.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/websockets-14.1-py312hea69d52_0.conda sha256: 98fb04a1a0f53dc604378f94b5795d0b8e462fee01bf0a887cb34d0efdf5d21f md5: 89b79a9baa7db46ce21f5738a5a3dfda depends: @@ -10534,18 +8160,13 @@ packages: - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx license: BSD-3-Clause license_family: BSD size: 243131 timestamp: 1731498944076 -- kind: conda - name: wheel - version: 0.45.1 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/wheel-0.45.1-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/wheel-0.45.1-pyhd8ed1ab_1.conda sha256: 1b34021e815ff89a4d902d879c3bd2040bc1bd6169b32e9427497fa05c55f1ce md5: 75cb7132eb58d97896e173ef12ac9986 depends: @@ -10554,12 +8175,7 @@ packages: license_family: MIT size: 62931 timestamp: 1733130309598 -- kind: conda - name: wrapt - version: 1.17.0 - build: py312h66e93f0_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.17.0-py312h66e93f0_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.17.0-py312h66e93f0_0.conda sha256: a6fc0f4e90643d0c1fd4aab669b6a79f44a305a5474256f6f2da3354d2310fb4 md5: ddbe3bb0e1356cb9074dd848570694f9 depends: @@ -10567,16 +8183,13 @@ packages: - libgcc >=13 - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux license: BSD-2-Clause license_family: BSD size: 63807 timestamp: 1732523690292 -- kind: conda - name: wrapt - version: 1.17.0 - build: py312hb2c0f52_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/wrapt-1.17.0-py312hb2c0f52_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/wrapt-1.17.0-py312hb2c0f52_0.conda sha256: b9aa760a987ccc6bc9c61f57badba6798d9a3dcbd0814e5fb8df6d8d2935af73 md5: 120d5d1c05386d8ce3efd65a4c86431f depends: @@ -10584,16 +8197,13 @@ packages: - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux license: BSD-2-Clause license_family: BSD size: 64783 timestamp: 1732523806 -- kind: conda - name: wrapt - version: 1.17.0 - build: py312hea69d52_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/wrapt-1.17.0-py312hea69d52_0.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/wrapt-1.17.0-py312hea69d52_0.conda sha256: 0fb35c3d1642f9f47db87bdb33148f88ef19a3af1eb0ee99b5491551c57269c7 md5: 73414acdb779a8694a14527865b4357a depends: @@ -10601,185 +8211,143 @@ packages: - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx license: BSD-2-Clause license_family: BSD size: 61043 timestamp: 1732523852129 -- kind: conda - name: xorg-libxau - version: 1.0.12 - build: h5505292_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxau-1.0.12-h5505292_0.conda - sha256: f33e6f013fc36ebc200f09ddead83468544cb5c353a3b50499b07b8c34e28a8d - md5: 50901e0764b7701d8ed7343496f4f301 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-hb9d3cd8_0.conda + sha256: ed10c9283974d311855ae08a16dfd7e56241fac632aec3b92e3cfe73cff31038 + md5: f6ebe2cb3f82ba6c057dde5d9debe4f7 depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux license: MIT license_family: MIT - size: 13593 - timestamp: 1734229104321 -- kind: conda - name: xorg-libxau - version: 1.0.12 - build: h86ecc28_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxau-1.0.12-h86ecc28_0.conda + size: 14780 + timestamp: 1734229004433 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxau-1.0.12-h86ecc28_0.conda sha256: 7829a0019b99ba462aece7592d2d7f42e12d12ccd3b9614e529de6ddba453685 md5: d5397424399a66d33c80b1f2345a36a6 depends: - libgcc >=13 + arch: aarch64 + platform: linux license: MIT license_family: MIT size: 15873 timestamp: 1734230458294 -- kind: conda - name: xorg-libxau - version: 1.0.12 - build: hb9d3cd8_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-hb9d3cd8_0.conda - sha256: ed10c9283974d311855ae08a16dfd7e56241fac632aec3b92e3cfe73cff31038 - md5: f6ebe2cb3f82ba6c057dde5d9debe4f7 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxau-1.0.12-h5505292_0.conda + sha256: f33e6f013fc36ebc200f09ddead83468544cb5c353a3b50499b07b8c34e28a8d + md5: 50901e0764b7701d8ed7343496f4f301 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 13593 + timestamp: 1734229104321 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb9d3cd8_0.conda + sha256: 6b250f3e59db07c2514057944a3ea2044d6a8cdde8a47b6497c254520fade1ee + md5: 8035c64cb77ed555e3f150b7b3972480 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 + arch: x86_64 + platform: linux license: MIT license_family: MIT - size: 14780 - timestamp: 1734229004433 -- kind: conda - name: xorg-libxdmcp - version: 1.1.5 - build: h57736b2_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxdmcp-1.1.5-h57736b2_0.conda + size: 19901 + timestamp: 1727794976192 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxdmcp-1.1.5-h57736b2_0.conda sha256: efcc150da5926cf244f757b8376d96a4db78bc15b8d90ca9f56ac6e75755971f md5: 25a5a7b797fe6e084e04ffe2db02fc62 depends: - libgcc >=13 + arch: aarch64 + platform: linux license: MIT license_family: MIT size: 20615 timestamp: 1727796660574 -- kind: conda - name: xorg-libxdmcp - version: 1.1.5 - build: hb9d3cd8_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb9d3cd8_0.conda - sha256: 6b250f3e59db07c2514057944a3ea2044d6a8cdde8a47b6497c254520fade1ee - md5: 8035c64cb77ed555e3f150b7b3972480 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - license: MIT - license_family: MIT - size: 19901 - timestamp: 1727794976192 -- kind: conda - name: xorg-libxdmcp - version: 1.1.5 - build: hd74edd7_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxdmcp-1.1.5-hd74edd7_0.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxdmcp-1.1.5-hd74edd7_0.conda sha256: 9939a166d780700d81023546759102b33fdc2c5f11ef09f5f66c77210fd334c8 md5: 77c447f48cab5d3a15ac224edb86a968 depends: - __osx >=11.0 + arch: arm64 + platform: osx license: MIT license_family: MIT size: 18487 timestamp: 1727795205022 -- kind: conda - name: xxhash - version: 0.8.2 - build: h31becfc_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/xxhash-0.8.2-h31becfc_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/xxhash-0.8.2-hd590300_0.conda + sha256: 6fe74a8fd84ab0dc25e4dc3e0c22388dd8accb212897a208b14fe5d4fbb8fc2f + md5: f08fb5c89edfc4aadee1c81d4cfb1fa1 + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + size: 97691 + timestamp: 1689951608120 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xxhash-0.8.2-h31becfc_0.conda sha256: 4c526aed70b579d80e5c20d32130b6bc8bde59b3250d43c2b5269755f4da8a9b md5: bb9faf6857108a9f62ebb4dab6ef05da depends: - libgcc-ng >=12 + arch: aarch64 + platform: linux license: BSD-2-Clause license_family: BSD size: 102442 timestamp: 1689951682147 -- kind: conda - name: xxhash - version: 0.8.2 - build: hb547adb_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/xxhash-0.8.2-hb547adb_0.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/xxhash-0.8.2-hb547adb_0.conda sha256: a70f59f7221ee72c45b39a6b36a33eb9c717ba01921cce1a3c361a4676979a2e md5: 144cd3b88706507f332f5eb5fb83a33b + arch: arm64 + platform: osx license: BSD-2-Clause license_family: BSD size: 97593 timestamp: 1689951969732 -- kind: conda - name: xxhash - version: 0.8.2 - build: hd590300_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/xxhash-0.8.2-hd590300_0.conda - sha256: 6fe74a8fd84ab0dc25e4dc3e0c22388dd8accb212897a208b14fe5d4fbb8fc2f - md5: f08fb5c89edfc4aadee1c81d4cfb1fa1 - depends: - - libgcc-ng >=12 - license: BSD-2-Clause - license_family: BSD - size: 97691 - timestamp: 1689951608120 -- kind: conda - name: yaml - version: 0.2.5 - build: h3422bc3_2 - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 - sha256: 93181a04ba8cfecfdfb162fc958436d868cc37db504c58078eab4c1a3e57fbb7 - md5: 4bb3f014845110883a3c5ee811fd84b4 - license: MIT - license_family: MIT - size: 88016 - timestamp: 1641347076660 -- kind: conda - name: yaml - version: 0.2.5 - build: h7f98852_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 sha256: a4e34c710eeb26945bdbdaba82d3d74f60a78f54a874ec10d373811a5d217535 md5: 4cb3ad778ec2d5a7acbdf254eb1c42ae depends: - libgcc-ng >=9.4.0 + arch: x86_64 + platform: linux license: MIT license_family: MIT size: 89141 timestamp: 1641346969816 -- kind: conda - name: yaml - version: 0.2.5 - build: hf897c2e_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/yaml-0.2.5-hf897c2e_2.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yaml-0.2.5-hf897c2e_2.tar.bz2 sha256: 8bc601d6dbe249eba44b3c456765265cd8f42ef1e778f8df9b0c9c88b8558d7e md5: b853307650cb226731f653aa623936a4 depends: - libgcc-ng >=9.4.0 + arch: aarch64 + platform: linux license: MIT license_family: MIT size: 92927 timestamp: 1641347626613 -- kind: conda - name: yarl - version: 1.18.3 - build: py312h66e93f0_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.18.3-py312h66e93f0_0.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 + sha256: 93181a04ba8cfecfdfb162fc958436d868cc37db504c58078eab4c1a3e57fbb7 + md5: 4bb3f014845110883a3c5ee811fd84b4 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 88016 + timestamp: 1641347076660 +- conda: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.18.3-py312h66e93f0_0.conda sha256: a0d93c3bef723e384cff8a29a82a2c6b7a73b39328088f3a2d97c901f56e9a63 md5: 91df2efaa08730416bec2a4502309275 depends: @@ -10790,16 +8358,13 @@ packages: - propcache >=0.2.1 - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux license: Apache-2.0 license_family: Apache size: 151393 timestamp: 1733428897813 -- kind: conda - name: yarl - version: 1.18.3 - build: py312hb2c0f52_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.18.3-py312hb2c0f52_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.18.3-py312hb2c0f52_0.conda sha256: 470b5b0f3ac89acd143095281167dc2ac1a56d4fa22e1794bd8f3b00bb604540 md5: 0b3c640697bca798d0ab428f530ed24c depends: @@ -10810,16 +8375,13 @@ packages: - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux license: Apache-2.0 license_family: Apache size: 150004 timestamp: 1733429056665 -- kind: conda - name: yarl - version: 1.18.3 - build: py312hea69d52_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.18.3-py312hea69d52_0.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.18.3-py312hea69d52_0.conda sha256: 69c7863809e11bc90c0d935c16e7f151dcc925add08b3894f06059263a8cb9ba md5: f32f9b16361866a62d6e061fcd7eb400 depends: @@ -10830,17 +8392,13 @@ packages: - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx license: Apache-2.0 license_family: Apache size: 141556 timestamp: 1733429104990 -- kind: conda - name: zeromq - version: 4.3.5 - build: h3b0a872_7 - build_number: 7 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda sha256: a4dc72c96848f764bb5a5176aa93dd1e9b9e52804137b99daeebba277b31ea10 md5: 3947a35e916fcc6b9825449affbf4214 depends: @@ -10849,17 +8407,13 @@ packages: - libgcc >=13 - libsodium >=1.0.20,<1.0.21.0a0 - libstdcxx >=13 + arch: x86_64 + platform: linux license: MPL-2.0 license_family: MOZILLA size: 335400 timestamp: 1731585026517 -- kind: conda - name: zeromq - version: 4.3.5 - build: h5efb499_7 - build_number: 7 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/zeromq-4.3.5-h5efb499_7.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zeromq-4.3.5-h5efb499_7.conda sha256: a6003096dc0570a86492040ba32b04ce7662b159600be2252b7a0dfb9414e21c md5: f2f3282559a4b87b7256ecafb4610107 depends: @@ -10867,17 +8421,13 @@ packages: - libgcc >=13 - libsodium >=1.0.20,<1.0.21.0a0 - libstdcxx >=13 + arch: aarch64 + platform: linux license: MPL-2.0 license_family: MOZILLA size: 371419 timestamp: 1731589490850 -- kind: conda - name: zeromq - version: 4.3.5 - build: hc1bb282_7 - build_number: 7 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda sha256: 9e585569fe2e7d3bea71972cd4b9f06b1a7ab8fa7c5139f92a31cbceecf25a8a md5: f7e6b65943cb73bce0143737fded08f1 depends: @@ -10885,18 +8435,13 @@ packages: - krb5 >=1.21.3,<1.22.0a0 - libcxx >=18 - libsodium >=1.0.20,<1.0.21.0a0 + arch: arm64 + platform: osx license: MPL-2.0 license_family: MOZILLA size: 281565 timestamp: 1731585108039 -- kind: conda - name: zipp - version: 3.21.0 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda sha256: 567c04f124525c97a096b65769834b7acb047db24b15a56888a322bf3966c3e1 md5: 0c3cc595284c5e8f0f9900a9b228a332 depends: @@ -10905,34 +8450,24 @@ packages: license_family: MIT size: 21809 timestamp: 1732827613585 -- kind: conda - name: zstandard - version: 0.23.0 - build: py312h15fbf35_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py312h15fbf35_1.conda - sha256: d00ca25c1e28fd31199b26a94f8c96574475704a825d244d7a6351ad3745eeeb - md5: a4cde595509a7ad9c13b1a3809bcfe51 +- conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312hef9b889_1.conda + sha256: b97015e146437283f2213ff0e95abdc8e2480150634d81fbae6b96ee09f5e50b + md5: 8b7069e9792ee4e5b4919a7a306d2e67 depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 - cffi >=1.11 + - libgcc >=13 - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 - zstd >=1.5.6,<1.5.7.0a0 - zstd >=1.5.6,<1.6.0a0 + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD - size: 330788 - timestamp: 1725305806565 -- kind: conda - name: zstandard - version: 0.23.0 - build: py312hb698573_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/zstandard-0.23.0-py312hb698573_1.conda + size: 419552 + timestamp: 1725305670210 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstandard-0.23.0-py312hb698573_1.conda sha256: 2681c2a249752bdc7978e59ee2f34fcdfcbfda80029b84b8e5fec8dbc9e3af25 md5: ffcb8e97e62af42075e0e5f46bb9856e depends: @@ -10943,74 +8478,63 @@ packages: - python_abi 3.12.* *_cp312 - zstd >=1.5.6,<1.5.7.0a0 - zstd >=1.5.6,<1.6.0a0 + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD size: 392496 timestamp: 1725305808244 -- kind: conda - name: zstandard - version: 0.23.0 - build: py312hef9b889_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312hef9b889_1.conda - sha256: b97015e146437283f2213ff0e95abdc8e2480150634d81fbae6b96ee09f5e50b - md5: 8b7069e9792ee4e5b4919a7a306d2e67 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py312h15fbf35_1.conda + sha256: d00ca25c1e28fd31199b26a94f8c96574475704a825d244d7a6351ad3745eeeb + md5: a4cde595509a7ad9c13b1a3809bcfe51 depends: - - __glibc >=2.17,<3.0.a0 + - __osx >=11.0 - cffi >=1.11 - - libgcc >=13 - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 - zstd >=1.5.6,<1.5.7.0a0 - zstd >=1.5.6,<1.6.0a0 + arch: arm64 + platform: osx license: BSD-3-Clause license_family: BSD - size: 419552 - timestamp: 1725305670210 -- kind: conda - name: zstd - version: 1.5.6 - build: h02f22dd_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.6-h02f22dd_0.conda - sha256: 484f9d0722c77685ae379fbff3ccd662af9ead7e59eb39cd6d0c677cdf25ff6c - md5: be8d5f8cf21aed237b8b182ea86b3dd6 + size: 330788 + timestamp: 1725305806565 +- conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda + sha256: c558b9cc01d9c1444031bd1ce4b9cff86f9085765f17627a6cd85fc623c8a02b + md5: 4d056880988120e29d75bfff282e0f45 depends: - libgcc-ng >=12 - libstdcxx-ng >=12 - libzlib >=1.2.13,<2.0.0a0 + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD - size: 539937 - timestamp: 1714723130243 -- kind: conda - name: zstd - version: 1.5.6 - build: ha6fb4c9_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda - sha256: c558b9cc01d9c1444031bd1ce4b9cff86f9085765f17627a6cd85fc623c8a02b - md5: 4d056880988120e29d75bfff282e0f45 + size: 554846 + timestamp: 1714722996770 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.6-h02f22dd_0.conda + sha256: 484f9d0722c77685ae379fbff3ccd662af9ead7e59eb39cd6d0c677cdf25ff6c + md5: be8d5f8cf21aed237b8b182ea86b3dd6 depends: - libgcc-ng >=12 - libstdcxx-ng >=12 - libzlib >=1.2.13,<2.0.0a0 + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD - size: 554846 - timestamp: 1714722996770 -- kind: conda - name: zstd - version: 1.5.6 - build: hb46c0d2_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.6-hb46c0d2_0.conda + size: 539937 + timestamp: 1714723130243 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.6-hb46c0d2_0.conda sha256: 2d4fd1ff7ee79cd954ca8e81abf11d9d49954dd1fef80f27289e2402ae9c2e09 md5: d96942c06c3e84bfcc5efb038724a7fd depends: - __osx >=11.0 - libzlib >=1.2.13,<2.0.0a0 + arch: arm64 + platform: osx license: BSD-3-Clause license_family: BSD size: 405089 diff --git a/examples/operators/magic.lock b/examples/operators/magic.lock index 9513564aaa..d9465fb9d4 100644 --- a/examples/operators/magic.lock +++ b/examples/operators/magic.lock @@ -1,4 +1,4 @@ -version: 5 +version: 6 environments: default: channels: @@ -131,12 +131,12 @@ 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-25.1.0.dev2025010817-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025010817-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025010817-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025010817-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011022-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025011022-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025011022-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011022-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-25.1.0.dev2025010817-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011022-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 @@ -164,7 +164,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-18.1.0-py312h7900ff3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-18.1.0-py312h01725c0_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.4-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.5-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.27.2-py312h12e396e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.7.1-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda @@ -188,7 +188,7 @@ environments: - 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.10-hb5b8611_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/safetensors-0.5.1-py312h12e396e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/safetensors-0.5.2-py312h12e396e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-h8bd8927_1.conda @@ -200,7 +200,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.48.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda @@ -211,7 +211,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.34.0-pyh31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.34.0-h31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/uvloop-0.21.0-py312h66e93f0_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/watchfiles-1.0.3-py312h12e396e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/watchfiles-1.0.4-py312h12e396e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/websockets-14.1-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.17.0-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-hb9d3cd8_0.conda @@ -349,12 +349,12 @@ 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-25.1.0.dev2025010817-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025010817-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025010817-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025010817-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011022-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025011022-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025011022-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011022-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-25.1.0.dev2025010817-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011022-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 @@ -382,7 +382,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-18.1.0-py312h8025657_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-18.1.0-py312h66f7834_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.4-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.5-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pydantic-core-2.27.2-py312h8cbf658_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.7.1-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda @@ -406,7 +406,7 @@ environments: - 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.10-h5df210e_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/safetensors-0.5.1-py312h8cbf658_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/safetensors-0.5.2-py312h8cbf658_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-hd4fb6f5_1.conda @@ -418,7 +418,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py312h52516f5_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.48.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda @@ -429,7 +429,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.34.0-pyh31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.34.0-h31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/uvloop-0.21.0-py312hb2c0f52_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/watchfiles-1.0.3-py312h8cbf658_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/watchfiles-1.0.4-py312h8cbf658_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/websockets-14.1-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/wrapt-1.17.0-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxau-1.0.12-h86ecc28_0.conda @@ -558,12 +558,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-25.1.0.dev2025010817-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025010817-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025010817-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025010817-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011022-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025011022-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025011022-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011022-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-25.1.0.dev2025010817-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011022-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 @@ -591,7 +591,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-18.1.0-py312h1f38498_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-18.1.0-py312hc40f475_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.4-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.5-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.27.2-py312hcd83bfe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.7.1-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda @@ -614,7 +614,7 @@ environments: - 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.5.1-py312hcd83bfe_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/safetensors-0.5.2-py312hcd83bfe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-h98b9ce2_1.conda @@ -626,7 +626,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.48.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda @@ -637,7 +637,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.34.0-pyh31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.34.0-h31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/uvloop-0.21.0-py312h0bf5046_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/watchfiles-1.0.3-py312hcd83bfe_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/watchfiles-1.0.4-py312hcd83bfe_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/websockets-14.1-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/wrapt-1.17.0-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxau-1.0.12-h5505292_0.conda @@ -650,24 +650,16 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py312h15fbf35_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.6-hb46c0d2_0.conda packages: -- kind: conda - name: _libgcc_mutex - version: '0.1' - build: conda_forge - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 sha256: fe51de6107f9edc7aa4f786a70f4a883943bc9d39b3bb7307c04c41410990726 md5: d7c89558ba9fa0495403155b64376d81 + arch: x86_64 + platform: linux license: None size: 2562 timestamp: 1578324546067 -- kind: conda - name: _openmp_mutex - version: '4.5' - build: 2_gnu +- conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 build_number: 16 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 sha256: fbe2c5e56a653bebb982eda4876a9178aedfc2b545f25d0ce9c4c0b508253d22 md5: 73aaf86a425cc6e73fcf236a5a46396d depends: @@ -675,35 +667,27 @@ packages: - libgomp >=7.5.0 constrains: - openmp_impl 9999 + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD size: 23621 timestamp: 1650670423406 -- kind: conda - name: _openmp_mutex - version: '4.5' - build: 2_gnu +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2 build_number: 16 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2 sha256: 3702bef2f0a4d38bd8288bbe54aace623602a1343c2cfbefd3fa188e015bebf0 md5: 6168d71addc746e8f2b8d57dfd2edcea depends: - libgomp >=7.5.0 constrains: - openmp_impl 9999 + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD size: 23712 timestamp: 1650670790230 -- kind: conda - name: aiohappyeyeballs - version: 2.4.4 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_1.conda sha256: 95d4713e49ea92ae50cf42393683ede706b7875af5f7cb14c253438180afa732 md5: 296b403617bafa89df4971567af79013 depends: @@ -712,12 +696,7 @@ packages: license_family: PSF size: 19351 timestamp: 1733332029649 -- kind: conda - name: aiohttp - version: 3.11.11 - build: py312h178313f_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.11-py312h178313f_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.11-py312h178313f_0.conda sha256: 2e817805e8a4fed33f23f116ff5649f8651af693328e9ed82d9d11a951338693 md5: 8219afa093757bbe07b9825eb1973ed9 depends: @@ -732,65 +711,55 @@ packages: - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 - yarl >=1.17.0,<2.0 + arch: x86_64 + platform: linux license: MIT AND Apache-2.0 license_family: Apache size: 915358 timestamp: 1734597073870 -- kind: conda - name: aiohttp - version: 3.11.11 - build: py312h998013c_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.11-py312h998013c_0.conda - sha256: 446f078e7a7b892894d7f4851a278b7834ffb4f5632313646a55c3abe13690d4 - md5: c69c904691364cfb27d15aa7153e9c29 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.11-py312hcc812fe_0.conda + sha256: f28e81e458d19df4ca0002f8a92d7f647fa25e8179887a8676801dfe44edb1f2 + md5: 11fa88136d9bf39d2136b2378f7c10be depends: - - __osx >=11.0 - aiohappyeyeballs >=2.3.0 - aiosignal >=1.1.2 - attrs >=17.3.0 - frozenlist >=1.1.1 + - libgcc >=13 - multidict >=4.5,<7.0 - propcache >=0.2.0 - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 - yarl >=1.17.0,<2.0 + arch: aarch64 + platform: linux license: MIT AND Apache-2.0 license_family: Apache - size: 875711 - timestamp: 1734597277258 -- kind: conda - name: aiohttp - version: 3.11.11 - build: py312hcc812fe_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.11-py312hcc812fe_0.conda - sha256: f28e81e458d19df4ca0002f8a92d7f647fa25e8179887a8676801dfe44edb1f2 - md5: 11fa88136d9bf39d2136b2378f7c10be + size: 902422 + timestamp: 1734597104529 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.11-py312h998013c_0.conda + sha256: 446f078e7a7b892894d7f4851a278b7834ffb4f5632313646a55c3abe13690d4 + md5: c69c904691364cfb27d15aa7153e9c29 depends: + - __osx >=11.0 - aiohappyeyeballs >=2.3.0 - aiosignal >=1.1.2 - attrs >=17.3.0 - frozenlist >=1.1.1 - - libgcc >=13 - multidict >=4.5,<7.0 - propcache >=0.2.0 - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 - yarl >=1.17.0,<2.0 + arch: arm64 + platform: osx license: MIT AND Apache-2.0 license_family: Apache - size: 902422 - timestamp: 1734597104529 -- kind: conda - name: aiosignal - version: 1.3.2 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda + size: 875711 + timestamp: 1734597277258 +- conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda sha256: 7de8ced1918bbdadecf8e1c1c68237fe5709c097bd9e0d254f4cad118f4345d0 md5: 1a3981115a398535dbe3f6d5faae3d36 depends: @@ -800,14 +769,7 @@ packages: license_family: APACHE size: 13229 timestamp: 1734342253061 -- kind: conda - name: annotated-types - version: 0.7.0 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda sha256: e0ea1ba78fbb64f17062601edda82097fcf815012cf52bb704150a2668110d48 md5: 2934f256a8acfe48f6ebb4fce6cde29c depends: @@ -817,13 +779,7 @@ packages: license_family: MIT size: 18074 timestamp: 1733247158254 -- kind: conda - name: anyio - version: 4.8.0 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/anyio-4.8.0-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.8.0-pyhd8ed1ab_0.conda sha256: f1455d2953e3eb6d71bc49881c8558d8e01888469dfd21061dd48afb6183e836 md5: 848d25bfbadf020ee4d4ba90e5668252 depends: @@ -839,13 +795,7 @@ packages: license_family: MIT size: 115305 timestamp: 1736174485476 -- kind: conda - name: attrs - version: 24.3.0 - build: pyh71513ae_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/attrs-24.3.0-pyh71513ae_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.3.0-pyh71513ae_0.conda sha256: 750186af694a7130eaf7119fbb56db0d2326d8995ad5b8eae23c622b85fea29a md5: 356927ace43302bf6f5926e2a58dae6a depends: @@ -854,13 +804,24 @@ packages: license_family: MIT size: 56354 timestamp: 1734348889193 -- kind: conda - name: aws-c-auth - version: 0.8.0 - build: h2cb9fb3_15 - build_number: 15 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-h2cb9fb3_15.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-hb921021_15.conda + sha256: 537006ad6d5097c134494166a6a1dc1451d5d050878d7b82cef498bfda40ba8a + md5: c79d50f64cffa5ad51ecc1a81057962f + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 107614 + timestamp: 1734021692519 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-h2cb9fb3_15.conda sha256: 4ce859dc9ff128bf5515604c43f33fb511386022fc9765ca077990f2a3f23df5 md5: e524686ace966acefb5b8cbc6e8b3daa depends: @@ -870,17 +831,13 @@ packages: - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - libgcc >=13 + arch: aarch64 + platform: linux license: Apache-2.0 license_family: Apache size: 111854 timestamp: 1734021745104 -- kind: conda - name: aws-c-auth - version: 0.8.0 - build: h8bc59a9_15 - build_number: 15 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-h8bc59a9_15.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-h8bc59a9_15.conda sha256: 0e41e56b662e76e024182adebcd91d09a4d38a83b35217c84e4967354dfff9a2 md5: f688b8893c20ad9477a19e7ce614014a depends: @@ -890,38 +847,13 @@ packages: - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 + arch: arm64 + platform: osx license: Apache-2.0 license_family: Apache size: 92507 timestamp: 1734021831330 -- kind: conda - name: aws-c-auth - version: 0.8.0 - build: hb921021_15 - build_number: 15 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-hb921021_15.conda - sha256: 537006ad6d5097c134494166a6a1dc1451d5d050878d7b82cef498bfda40ba8a - md5: c79d50f64cffa5ad51ecc1a81057962f - depends: - - __glibc >=2.17,<3.0.a0 - - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - aws-c-http >=0.9.2,<0.9.3.0a0 - - aws-c-io >=0.15.3,<0.15.4.0a0 - - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - - libgcc >=13 - license: Apache-2.0 - license_family: Apache - size: 107614 - timestamp: 1734021692519 -- kind: conda - name: aws-c-cal - version: 0.8.1 - build: h1a47875_3 - build_number: 3 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.1-h1a47875_3.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.1-h1a47875_3.conda sha256: 095ac824ea9303eff67e04090ae531d9eb33d2bf8f82eaade39b839c421e16e8 md5: 55a8561fdbbbd34f50f57d9be12ed084 depends: @@ -929,162 +861,110 @@ packages: - aws-c-common >=0.10.6,<0.10.7.0a0 - libgcc >=13 - openssl >=3.3.1,<4.0a0 + arch: x86_64 + platform: linux license: Apache-2.0 license_family: Apache size: 47601 timestamp: 1733991564405 -- kind: conda - name: aws-c-cal - version: 0.8.1 - build: h740c5af_3 - build_number: 3 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.1-h740c5af_3.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.1-h740c5af_3.conda sha256: c5c7961d48ca7320ed3560c036f7aa5244df4b85d9657f70aacc5faba3e1509a md5: 57ed2c445d7ef01d121b9bcea0522913 depends: - aws-c-common >=0.10.6,<0.10.7.0a0 - libgcc >=13 - openssl >=3.3.1,<4.0a0 + arch: aarch64 + platform: linux license: Apache-2.0 license_family: Apache size: 50036 timestamp: 1733991581303 -- kind: conda - name: aws-c-cal - version: 0.8.1 - build: hc8a0bd2_3 - build_number: 3 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.1-hc8a0bd2_3.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.1-hc8a0bd2_3.conda sha256: 1f44be36e1daa17b4b081debb8aee492d13571084f38b503ad13e869fef24fe4 md5: 8b0ce61384e5a33d2b301a64f3d22ac5 depends: - __osx >=11.0 - aws-c-common >=0.10.6,<0.10.7.0a0 - openssl >=3.3.1,<4.0a0 + arch: arm64 + platform: osx license: Apache-2.0 license_family: Apache size: 39925 timestamp: 1733991649383 -- kind: conda - name: aws-c-common - version: 0.10.6 - build: h5505292_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.10.6-h5505292_0.conda - sha256: 3bde135c8e74987c0f79ecd4fa17ec9cff0d658b3090168727ca1af3815ae57a - md5: 145e5b4c9702ed279d7d68aaf096f77d +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.10.6-hb9d3cd8_0.conda + sha256: 496e92f2150fdc351eacf6e236015deedb3d0d3114f8e5954341cbf9f3dda257 + md5: d7d4680337a14001b0e043e96529409b depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux license: Apache-2.0 license_family: Apache - size: 221863 - timestamp: 1733975576886 -- kind: conda - name: aws-c-common - version: 0.10.6 - build: h86ecc28_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-common-0.10.6-h86ecc28_0.conda + size: 236574 + timestamp: 1733975453350 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-common-0.10.6-h86ecc28_0.conda sha256: 57288ec5df35781bea8fc6a8c9099cad6695b747784fc1b8862a0f9e5b3bf5ab md5: fef806a0f6de853670c746bbece01966 depends: - libgcc >=13 + arch: aarch64 + platform: linux license: Apache-2.0 license_family: Apache size: 259031 timestamp: 1733975520465 -- kind: conda - name: aws-c-common - version: 0.10.6 - build: hb9d3cd8_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.10.6-hb9d3cd8_0.conda - sha256: 496e92f2150fdc351eacf6e236015deedb3d0d3114f8e5954341cbf9f3dda257 - md5: d7d4680337a14001b0e043e96529409b +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.10.6-h5505292_0.conda + sha256: 3bde135c8e74987c0f79ecd4fa17ec9cff0d658b3090168727ca1af3815ae57a + md5: 145e5b4c9702ed279d7d68aaf096f77d + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 221863 + timestamp: 1733975576886 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.3.0-h4e1184b_5.conda + sha256: 62ca84da83585e7814a40240a1e750b1563b2680b032a471464eccc001c3309b + md5: 3f4c1197462a6df2be6dc8241828fe93 depends: - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 - libgcc >=13 + arch: x86_64 + platform: linux license: Apache-2.0 license_family: Apache - size: 236574 - timestamp: 1733975453350 -- kind: conda - name: aws-c-compression - version: 0.3.0 - build: h0f0193d_5 - build_number: 5 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-compression-0.3.0-h0f0193d_5.conda + size: 19086 + timestamp: 1733991637424 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-compression-0.3.0-h0f0193d_5.conda sha256: 3f05d19f68ef800f33d44ea2a4211003124076516c8469abc7d432236344df53 md5: 3a1421d12435df5b4c412cc4c8fac64d depends: - aws-c-common >=0.10.6,<0.10.7.0a0 - libgcc >=13 + arch: aarch64 + platform: linux license: Apache-2.0 license_family: Apache size: 19740 timestamp: 1733991625201 -- kind: conda - name: aws-c-compression - version: 0.3.0 - build: h4e1184b_5 - build_number: 5 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.3.0-h4e1184b_5.conda - sha256: 62ca84da83585e7814a40240a1e750b1563b2680b032a471464eccc001c3309b - md5: 3f4c1197462a6df2be6dc8241828fe93 - depends: - - __glibc >=2.17,<3.0.a0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - libgcc >=13 - license: Apache-2.0 - license_family: Apache - size: 19086 - timestamp: 1733991637424 -- kind: conda - name: aws-c-compression - version: 0.3.0 - build: hc8a0bd2_5 - build_number: 5 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-compression-0.3.0-hc8a0bd2_5.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-compression-0.3.0-hc8a0bd2_5.conda sha256: 47b2813f652ce7e64ac442f771b2a5f7d4af4ad0d07ff51f6075ea80ed2e3f09 md5: a8b6c17732d14ed49d0e9b59c43186bc depends: - __osx >=11.0 - aws-c-common >=0.10.6,<0.10.7.0a0 + arch: arm64 + platform: osx license: Apache-2.0 license_family: Apache size: 18068 timestamp: 1733991869211 -- kind: conda - name: aws-c-event-stream - version: 0.5.0 - build: h54f970a_11 - build_number: 11 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.0-h54f970a_11.conda - sha256: f0667935f4e0d4c25e0e51da035640310b5ceeb8f723156734439bde8b848d7d - md5: ba41238f8e653998d7d2f42e3a8db054 - depends: - - __osx >=11.0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - aws-c-io >=0.15.3,<0.15.4.0a0 - - aws-checksums >=0.2.2,<0.2.3.0a0 - - libcxx >=18 - license: Apache-2.0 - license_family: Apache - size: 47078 - timestamp: 1734024749727 -- kind: conda - name: aws-c-event-stream - version: 0.5.0 - build: h7959bf6_11 - build_number: 11 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.0-h7959bf6_11.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.0-h7959bf6_11.conda sha256: 10d7240c7db0c941fb1a59c4f8ea6689a434b03309ee7b766fa15a809c553c02 md5: 9b3fb60fe57925a92f399bc3fc42eccf depends: @@ -1094,17 +974,13 @@ packages: - aws-checksums >=0.2.2,<0.2.3.0a0 - libgcc >=13 - libstdcxx >=13 + arch: x86_64 + platform: linux license: Apache-2.0 license_family: Apache size: 54003 timestamp: 1734024480949 -- kind: conda - name: aws-c-event-stream - version: 0.5.0 - build: hcbd8f92_11 - build_number: 11 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-event-stream-0.5.0-hcbd8f92_11.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-event-stream-0.5.0-hcbd8f92_11.conda sha256: 79aa363c71c891a27496c0498f8d498b2ddc87b3ccb3b6c9da5b50b05936ebb8 md5: e0772c59af4243a9b2565baa5d79e5b6 depends: @@ -1113,17 +989,44 @@ packages: - aws-checksums >=0.2.2,<0.2.3.0a0 - libgcc >=13 - libstdcxx >=13 + arch: aarch64 + platform: linux license: Apache-2.0 license_family: Apache size: 55207 timestamp: 1734024546663 -- kind: conda - name: aws-c-http - version: 0.9.2 - build: h3df160d_4 - build_number: 4 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.2-h3df160d_4.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.0-h54f970a_11.conda + sha256: f0667935f4e0d4c25e0e51da035640310b5ceeb8f723156734439bde8b848d7d + md5: ba41238f8e653998d7d2f42e3a8db054 + depends: + - __osx >=11.0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + - libcxx >=18 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 47078 + timestamp: 1734024749727 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.2-hefd7a92_4.conda + sha256: 4a330206bd51148f6c13ca0b7a4db40f29a46f090642ebacdeb88b8a4abd7f99 + md5: 5ce4df662d32d3123ea8da15571b6f51 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-compression >=0.3.0,<0.3.1.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 197731 + timestamp: 1734008380764 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.2-h3df160d_4.conda sha256: 3a1d2d332945306be9d49e569b95e4cc172d825f10e88715513a172f28ebb59e md5: 28f00aa7fd9556c4c461328cf146c20b depends: @@ -1132,17 +1035,13 @@ packages: - aws-c-compression >=0.3.0,<0.3.1.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - libgcc >=13 + arch: aarch64 + platform: linux license: Apache-2.0 license_family: Apache size: 190586 timestamp: 1734008442362 -- kind: conda - name: aws-c-http - version: 0.9.2 - build: h96aa502_4 - build_number: 4 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.2-h96aa502_4.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.2-h96aa502_4.conda sha256: 22e4737c8a885995b7c1ae1d79c1f6e78d489e16ec079615980fdde067aeaf76 md5: 495c93a4f08b17deb3c04894512330e6 depends: @@ -1151,37 +1050,28 @@ packages: - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-compression >=0.3.0,<0.3.1.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 + arch: arm64 + platform: osx license: Apache-2.0 license_family: Apache size: 152983 timestamp: 1734008451473 -- kind: conda - name: aws-c-http - version: 0.9.2 - build: hefd7a92_4 - build_number: 4 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.2-hefd7a92_4.conda - sha256: 4a330206bd51148f6c13ca0b7a4db40f29a46f090642ebacdeb88b8a4abd7f99 - md5: 5ce4df662d32d3123ea8da15571b6f51 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-h831e299_5.conda + sha256: 5920009b1c6f9a2bc131a36725251894e4b4773fce29c4b1065d4213ae337abe + md5: 80dd9f0ddf935290d1dc00ec75ff3023 depends: - __glibc >=2.17,<3.0.a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.6,<0.10.7.0a0 - - aws-c-compression >=0.3.0,<0.3.1.0a0 - - aws-c-io >=0.15.3,<0.15.4.0a0 - libgcc >=13 + - s2n >=1.5.10,<1.5.11.0a0 + arch: x86_64 + platform: linux license: Apache-2.0 license_family: Apache - size: 197731 - timestamp: 1734008380764 -- kind: conda - name: aws-c-io - version: 0.15.3 - build: h1a307af_5 - build_number: 5 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-h1a307af_5.conda + size: 157864 + timestamp: 1734433578570 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-h1a307af_5.conda sha256: 71f5bf891299f831dceaea12f926c393bf754569e5305387a88b77e1f94612d8 md5: da8ab0f3eeac93449ec3d531ede92caa depends: @@ -1189,53 +1079,26 @@ packages: - aws-c-common >=0.10.6,<0.10.7.0a0 - libgcc >=13 - s2n >=1.5.10,<1.5.11.0a0 + arch: aarch64 + platform: linux license: Apache-2.0 license_family: Apache size: 161889 timestamp: 1734433686109 -- kind: conda - name: aws-c-io - version: 0.15.3 - build: h831e299_5 - build_number: 5 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-h831e299_5.conda - sha256: 5920009b1c6f9a2bc131a36725251894e4b4773fce29c4b1065d4213ae337abe - md5: 80dd9f0ddf935290d1dc00ec75ff3023 - depends: - - __glibc >=2.17,<3.0.a0 - - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - libgcc >=13 - - s2n >=1.5.10,<1.5.11.0a0 - license: Apache-2.0 - license_family: Apache - size: 157864 - timestamp: 1734433578570 -- kind: conda - name: aws-c-io - version: 0.15.3 - build: haba67d1_5 - build_number: 5 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-haba67d1_5.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-haba67d1_5.conda sha256: c0a1a2b0750225ac3dc07fd258c88c2be866bf8ac67ba3d50bb4ecec852ff8ee md5: 4c5ff4134e76426a75b8c548984fa933 depends: - __osx >=11.0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.6,<0.10.7.0a0 + arch: arm64 + platform: osx license: Apache-2.0 license_family: Apache size: 135729 timestamp: 1734433832730 -- kind: conda - name: aws-c-mqtt - version: 0.11.0 - build: h11f4f37_12 - build_number: 12 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h11f4f37_12.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h11f4f37_12.conda sha256: 512d3969426152d9d5fd886e27b13706122dc3fa90eb08c37b0d51a33d7bb14a md5: 96c3e0221fa2da97619ee82faa341a73 depends: @@ -1244,35 +1107,13 @@ packages: - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - libgcc >=13 + arch: x86_64 + platform: linux license: Apache-2.0 license_family: Apache size: 194672 timestamp: 1734025626798 -- kind: conda - name: aws-c-mqtt - version: 0.11.0 - build: h24f418c_12 - build_number: 12 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h24f418c_12.conda - sha256: 96575ea1dd2a9ea94763882e40a66dcbff9c41f702bf37c9514c4c719b3c11dd - md5: c072045a6206f88015d02fcba1705ea1 - depends: - - __osx >=11.0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - aws-c-http >=0.9.2,<0.9.3.0a0 - - aws-c-io >=0.15.3,<0.15.4.0a0 - license: Apache-2.0 - license_family: Apache - size: 134371 - timestamp: 1734025379525 -- kind: conda - name: aws-c-mqtt - version: 0.11.0 - build: h5f50e26_12 - build_number: 12 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h5f50e26_12.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h5f50e26_12.conda sha256: ffeb9100cc8fd4093e1a6fdfd938bc4a396dd77480b7fb17aa42855a4d5e2c70 md5: 031ca33115d4b1eeb43f435d6215778c depends: @@ -1280,36 +1121,46 @@ packages: - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - libgcc >=13 + arch: aarch64 + platform: linux license: Apache-2.0 license_family: Apache size: 169516 timestamp: 1734025167885 -- kind: conda - name: aws-c-s3 - version: 0.7.7 - build: h1be5864_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.7-h1be5864_0.conda - sha256: 22966164d63808689fffd35945f57756c95337327e28099b5d77b29fc6a56ecc - md5: a37bba7acb62dd70492ee01eacca3b8f +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h24f418c_12.conda + sha256: 96575ea1dd2a9ea94763882e40a66dcbff9c41f702bf37c9514c4c719b3c11dd + md5: c072045a6206f88015d02fcba1705ea1 depends: - __osx >=11.0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 134371 + timestamp: 1734025379525 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.7-hf454442_0.conda + sha256: c2f205a7bf64c5f40eea373b3a0a7c363c9aa9246a13dd7f3d9c6a4434c4fe2d + md5: 947c82025693bebd557f782bb5d6b469 + depends: + - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 + - libgcc >=13 + - openssl >=3.4.0,<4.0a0 + arch: x86_64 + platform: linux license: Apache-2.0 license_family: Apache - size: 97598 - timestamp: 1734146239038 -- kind: conda - name: aws-c-s3 - version: 0.7.7 - build: h2080895_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.7-h2080895_0.conda + size: 114156 + timestamp: 1734146123386 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.7-h2080895_0.conda sha256: 20bc2dd60e6518d9b8215c2b652ab5c52ee8a997d3b9a5f69e2dabd28cbf26b2 md5: ae223efa63fbb4262a2d85c3ab3bc4f5 depends: @@ -1321,141 +1172,108 @@ packages: - aws-checksums >=0.2.2,<0.2.3.0a0 - libgcc >=13 - openssl >=3.4.0,<4.0a0 + arch: aarch64 + platform: linux license: Apache-2.0 license_family: Apache size: 117641 timestamp: 1734146239779 -- kind: conda - name: aws-c-s3 - version: 0.7.7 - build: hf454442_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.7-hf454442_0.conda - sha256: c2f205a7bf64c5f40eea373b3a0a7c363c9aa9246a13dd7f3d9c6a4434c4fe2d - md5: 947c82025693bebd557f782bb5d6b469 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.7-h1be5864_0.conda + sha256: 22966164d63808689fffd35945f57756c95337327e28099b5d77b29fc6a56ecc + md5: a37bba7acb62dd70492ee01eacca3b8f depends: - - __glibc >=2.17,<3.0.a0 + - __osx >=11.0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - - libgcc >=13 - - openssl >=3.4.0,<4.0a0 - license: Apache-2.0 - license_family: Apache - size: 114156 - timestamp: 1734146123386 -- kind: conda - name: aws-c-sdkutils - version: 0.2.1 - build: h0f0193d_4 - build_number: 4 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.1-h0f0193d_4.conda - sha256: ede8e782467c87ac80ceb9c9af9e917d121b7d8b8c698186d18e3cecd36f2210 - md5: 53e798d720dd78b78847a7b2fdb05fc9 - depends: - - aws-c-common >=0.10.6,<0.10.7.0a0 - - libgcc >=13 + arch: arm64 + platform: osx license: Apache-2.0 license_family: Apache - size: 58621 - timestamp: 1733994421495 -- kind: conda - name: aws-c-sdkutils - version: 0.2.1 - build: h4e1184b_4 - build_number: 4 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.1-h4e1184b_4.conda + size: 97598 + timestamp: 1734146239038 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.1-h4e1184b_4.conda sha256: df586f42210af1134b1c88ff4c278c3cb6d6c807c84eac48860062464b28554d md5: a5126a90e74ac739b00564a4c7ddcc36 depends: - __glibc >=2.17,<3.0.a0 - aws-c-common >=0.10.6,<0.10.7.0a0 - libgcc >=13 + arch: x86_64 + platform: linux license: Apache-2.0 license_family: Apache size: 56094 timestamp: 1733994449690 -- kind: conda - name: aws-c-sdkutils - version: 0.2.1 - build: hc8a0bd2_4 - build_number: 4 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.1-hc8a0bd2_4.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.1-h0f0193d_4.conda + sha256: ede8e782467c87ac80ceb9c9af9e917d121b7d8b8c698186d18e3cecd36f2210 + md5: 53e798d720dd78b78847a7b2fdb05fc9 + depends: + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 58621 + timestamp: 1733994421495 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.1-hc8a0bd2_4.conda sha256: de98343ce42d2e569b3380292d20f47bf39bda08aadabcbb8e650d3f38fd742f md5: 22f72f8cd7ead211304ac17d337d96e0 depends: - __osx >=11.0 - aws-c-common >=0.10.6,<0.10.7.0a0 + arch: arm64 + platform: osx license: Apache-2.0 license_family: Apache size: 49664 timestamp: 1733994553014 -- kind: conda - name: aws-checksums - version: 0.2.2 - build: h0f0193d_4 - build_number: 4 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h0f0193d_4.conda - sha256: 9f1e3635a587bcf92b61d88c7af7d24cd89c147c6d0ae58afbde08e65bcf48da - md5: 3bd35b0adab3d743f09e0252cc441d6b - depends: - - aws-c-common >=0.10.6,<0.10.7.0a0 - - libgcc >=13 - license: Apache-2.0 - license_family: Apache - size: 72154 - timestamp: 1733994384415 -- kind: conda - name: aws-checksums - version: 0.2.2 - build: h4e1184b_4 - build_number: 4 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-h4e1184b_4.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-h4e1184b_4.conda sha256: 1ed9a332d06ad595694907fad2d6d801082916c27cd5076096fda4061e6d24a8 md5: 74e8c3e4df4ceae34aa2959df4b28101 depends: - __glibc >=2.17,<3.0.a0 - aws-c-common >=0.10.6,<0.10.7.0a0 - libgcc >=13 + arch: x86_64 + platform: linux license: Apache-2.0 license_family: Apache size: 72762 timestamp: 1733994347547 -- kind: conda - name: aws-checksums - version: 0.2.2 - build: hc8a0bd2_4 - build_number: 4 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-hc8a0bd2_4.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h0f0193d_4.conda + sha256: 9f1e3635a587bcf92b61d88c7af7d24cd89c147c6d0ae58afbde08e65bcf48da + md5: 3bd35b0adab3d743f09e0252cc441d6b + depends: + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 72154 + timestamp: 1733994384415 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-hc8a0bd2_4.conda sha256: 215086d95e8ff1d3fcb0197ada116cc9d7db1fdae7573f5e810d20fa9215b47c md5: e70e88a357a3749b67679c0788c5b08a depends: - __osx >=11.0 - aws-c-common >=0.10.6,<0.10.7.0a0 + arch: arm64 + platform: osx license: Apache-2.0 license_family: Apache size: 70186 timestamp: 1733994496998 -- kind: conda - name: aws-crt-cpp - version: 0.29.7 - build: h19a973c_7 - build_number: 7 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.7-h19a973c_7.conda - sha256: 8269e6746eb3a5d15b732a3983888bf98dfc1f6594e95250fc8d16b43cfd5ff9 - md5: 95714136bef3e917bd5a2942d4682b20 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.7-hd92328a_7.conda + sha256: 094cd81f1e5ba713e9e7a272ee52b5dde3ccc4842ea90f19c0354a00bbdac3d9 + md5: 02b95564257d5c3db9c06beccf711f95 depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.6,<0.10.7.0a0 @@ -1465,18 +1283,15 @@ packages: - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - aws-c-s3 >=0.7.7,<0.7.8.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - - libcxx >=18 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux license: Apache-2.0 license_family: Apache - size: 236249 - timestamp: 1734178020924 -- kind: conda - name: aws-crt-cpp - version: 0.29.7 - build: h8a4e35f_7 - build_number: 7 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.7-h8a4e35f_7.conda + size: 354703 + timestamp: 1734177883319 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.7-h8a4e35f_7.conda sha256: 5ba9188e0cb4e3faff9bc96774febb040aa3b802aedba29d847e00e7b5eab84e md5: d77a9e3d7ce15399903e92825fd651b5 depends: @@ -1491,21 +1306,17 @@ packages: - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - libgcc >=13 - libstdcxx >=13 + arch: aarch64 + platform: linux license: Apache-2.0 license_family: Apache size: 283154 timestamp: 1734177845248 -- kind: conda - name: aws-crt-cpp - version: 0.29.7 - build: hd92328a_7 - build_number: 7 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.7-hd92328a_7.conda - sha256: 094cd81f1e5ba713e9e7a272ee52b5dde3ccc4842ea90f19c0354a00bbdac3d9 - md5: 02b95564257d5c3db9c06beccf711f95 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.7-h19a973c_7.conda + sha256: 8269e6746eb3a5d15b732a3983888bf98dfc1f6594e95250fc8d16b43cfd5ff9 + md5: 95714136bef3e917bd5a2942d4682b20 depends: - - __glibc >=2.17,<3.0.a0 + - __osx >=11.0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.6,<0.10.7.0a0 @@ -1515,22 +1326,18 @@ packages: - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - aws-c-s3 >=0.7.7,<0.7.8.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - - libgcc >=13 - - libstdcxx >=13 + - libcxx >=18 + arch: arm64 + platform: osx license: Apache-2.0 license_family: Apache - size: 354703 - timestamp: 1734177883319 -- kind: conda - name: aws-sdk-cpp - version: 1.11.458 - build: h849ce1a_4 - build_number: 4 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h849ce1a_4.conda - sha256: 51b9e9df8cbab4a13a1b9d39d6ef5ed162aaa29c09a745810e00bbe92e1045c1 - md5: cda7747f4398be8d1fb37362815917a7 + size: 236249 + timestamp: 1734178020924 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-hc430e4a_4.conda + sha256: 2dc09f6f9c49127b5f96e7535b64a9c521b944d76d8b7d03d48ae80257ac1cea + md5: aeefac461bea1f126653c1285cf5af08 depends: + - __glibc >=2.17,<3.0.a0 - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 @@ -1540,21 +1347,16 @@ packages: - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - openssl >=3.4.0,<4.0a0 + arch: x86_64 + platform: linux license: Apache-2.0 license_family: Apache - size: 2920625 - timestamp: 1734093552712 -- kind: conda - name: aws-sdk-cpp - version: 1.11.458 - build: hc430e4a_4 - build_number: 4 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-hc430e4a_4.conda - sha256: 2dc09f6f9c49127b5f96e7535b64a9c521b944d76d8b7d03d48ae80257ac1cea - md5: aeefac461bea1f126653c1285cf5af08 + size: 3060561 + timestamp: 1734093737431 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h849ce1a_4.conda + sha256: 51b9e9df8cbab4a13a1b9d39d6ef5ed162aaa29c09a745810e00bbe92e1045c1 + md5: cda7747f4398be8d1fb37362815917a7 depends: - - __glibc >=2.17,<3.0.a0 - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 @@ -1564,17 +1366,13 @@ packages: - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - openssl >=3.4.0,<4.0a0 + arch: aarch64 + platform: linux license: Apache-2.0 license_family: Apache - size: 3060561 - timestamp: 1734093737431 -- kind: conda - name: aws-sdk-cpp - version: 1.11.458 - build: he0ff2e4_4 - build_number: 4 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-he0ff2e4_4.conda + size: 2920625 + timestamp: 1734093552712 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-he0ff2e4_4.conda sha256: 535b970aaa13be45f8cab8205c59f044b17364111c41a227f061775a5c834e18 md5: 0981ed87098b149bdb7d99a4a3fd0e58 depends: @@ -1587,51 +1385,42 @@ packages: - libcxx >=18 - libzlib >=1.3.1,<2.0a0 - openssl >=3.4.0,<4.0a0 + arch: arm64 + platform: osx license: Apache-2.0 license_family: Apache size: 2826534 timestamp: 1734094018287 -- kind: conda - name: azure-core-cpp - version: 1.14.0 - build: h1887c18_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-core-cpp-1.14.0-h1887c18_0.conda - sha256: 8967b3ccee4d74e61f6ec82dd8efb9deb854ee7ba012dfe767b7a92e0ac77724 - md5: e0c3a906a41be769f0ae20ca3e31cfc0 +- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda + sha256: fe07debdb089a3db17f40a7f20d283d75284bb4fc269ef727b8ba6fc93f7cb5a + md5: 0a8838771cc2e985cd295e01ae83baf1 depends: + - __glibc >=2.17,<3.0.a0 - libcurl >=8.10.1,<9.0a0 - libgcc >=13 - libstdcxx >=13 - openssl >=3.3.2,<4.0a0 + arch: x86_64 + platform: linux license: MIT license_family: MIT - size: 338650 - timestamp: 1728055589907 -- kind: conda - name: azure-core-cpp - version: 1.14.0 - build: h5cfcd09_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda - sha256: fe07debdb089a3db17f40a7f20d283d75284bb4fc269ef727b8ba6fc93f7cb5a - md5: 0a8838771cc2e985cd295e01ae83baf1 + size: 345117 + timestamp: 1728053909574 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-core-cpp-1.14.0-h1887c18_0.conda + sha256: 8967b3ccee4d74e61f6ec82dd8efb9deb854ee7ba012dfe767b7a92e0ac77724 + md5: e0c3a906a41be769f0ae20ca3e31cfc0 depends: - - __glibc >=2.17,<3.0.a0 - libcurl >=8.10.1,<9.0a0 - libgcc >=13 - libstdcxx >=13 - openssl >=3.3.2,<4.0a0 + arch: aarch64 + platform: linux license: MIT license_family: MIT - size: 345117 - timestamp: 1728053909574 -- kind: conda - name: azure-core-cpp - version: 1.14.0 - build: hd50102c_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.14.0-hd50102c_0.conda + size: 338650 + timestamp: 1728055589907 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.14.0-hd50102c_0.conda sha256: f5b91329ed59ffc0be8747784c6e4cc7e56250c54032883a83bc11808ef6a87e md5: f093a11dcf3cdcca010b20a818fcc6dc depends: @@ -1639,16 +1428,13 @@ packages: - libcurl >=8.10.1,<9.0a0 - libcxx >=17 - openssl >=3.3.2,<4.0a0 + arch: arm64 + platform: osx license: MIT license_family: MIT size: 294299 timestamp: 1728054014060 -- kind: conda - name: azure-identity-cpp - version: 1.10.0 - build: h113e628_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.10.0-h113e628_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.10.0-h113e628_0.conda sha256: 286b31616c191486626cb49e9ceb5920d29394b9e913c23adb7eb637629ba4de md5: 73f73f60854f325a55f1d31459f2ab73 depends: @@ -1657,16 +1443,13 @@ packages: - libgcc >=13 - libstdcxx >=13 - openssl >=3.3.2,<4.0a0 + arch: x86_64 + platform: linux license: MIT license_family: MIT size: 232351 timestamp: 1728486729511 -- kind: conda - name: azure-identity-cpp - version: 1.10.0 - build: h47b0b28_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-identity-cpp-1.10.0-h47b0b28_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-identity-cpp-1.10.0-h47b0b28_0.conda sha256: 1c72423b9beba167d2f01b80dc204da77240a8266f1edb3d89510c852b300d69 md5: 94e73a7877743a85c57091d8afab2348 depends: @@ -1674,16 +1457,13 @@ packages: - libgcc >=13 - libstdcxx >=13 - openssl >=3.3.2,<4.0a0 + arch: aarch64 + platform: linux license: MIT license_family: MIT size: 217132 timestamp: 1728488096615 -- kind: conda - name: azure-identity-cpp - version: 1.10.0 - build: hc602bab_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.10.0-hc602bab_0.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.10.0-hc602bab_0.conda sha256: bde446b916fff5150606f8ed3e6058ffc55a3aa72381e46f1ab346590b1ae40a md5: d7b71593a937459f2d4b67e1a4727dc2 depends: @@ -1691,54 +1471,42 @@ packages: - azure-core-cpp >=1.14.0,<1.14.1.0a0 - libcxx >=17 - openssl >=3.3.2,<4.0a0 + arch: arm64 + platform: osx license: MIT license_family: MIT size: 166907 timestamp: 1728486882502 -- kind: conda - name: azure-storage-blobs-cpp - version: 12.13.0 - build: h185ecfd_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-blobs-cpp-12.13.0-h185ecfd_1.conda - sha256: 280ec70009a92626054f58e45b168fce393e71a9710587488bd8401628cda481 - md5: 221e1e5ecb2643e113f32b3229d5ba33 +- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.13.0-h3cf044e_1.conda + sha256: 2606260e5379eed255bcdc6adc39b93fb31477337bcd911c121fc43cd29bf394 + md5: 7eb66060455c7a47d9dcdbfa9f46579b depends: + - __glibc >=2.17,<3.0.a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 - libgcc >=13 - libstdcxx >=13 + arch: x86_64 + platform: linux license: MIT license_family: MIT - size: 502934 - timestamp: 1728580241002 -- kind: conda - name: azure-storage-blobs-cpp - version: 12.13.0 - build: h3cf044e_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.13.0-h3cf044e_1.conda - sha256: 2606260e5379eed255bcdc6adc39b93fb31477337bcd911c121fc43cd29bf394 - md5: 7eb66060455c7a47d9dcdbfa9f46579b + size: 549342 + timestamp: 1728578123088 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-blobs-cpp-12.13.0-h185ecfd_1.conda + sha256: 280ec70009a92626054f58e45b168fce393e71a9710587488bd8401628cda481 + md5: 221e1e5ecb2643e113f32b3229d5ba33 depends: - - __glibc >=2.17,<3.0.a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 - libgcc >=13 - libstdcxx >=13 + arch: aarch64 + platform: linux license: MIT license_family: MIT - size: 549342 - timestamp: 1728578123088 -- kind: conda - name: azure-storage-blobs-cpp - version: 12.13.0 - build: h7585a09_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-blobs-cpp-12.13.0-h7585a09_1.conda + size: 502934 + timestamp: 1728580241002 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-blobs-cpp-12.13.0-h7585a09_1.conda sha256: 08d52d130addc0fb55d5ba10d9fa483e39be25d69bac7f4c676c2c3069207590 md5: 704238ef05d46144dae2e6b5853df8bc depends: @@ -1746,56 +1514,44 @@ packages: - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 - libcxx >=17 + arch: arm64 + platform: osx license: MIT license_family: MIT size: 438636 timestamp: 1728578216193 -- kind: conda - name: azure-storage-common-cpp - version: 12.8.0 - build: h1b94036_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-common-cpp-12.8.0-h1b94036_1.conda - sha256: 146e76aac169e3dbdce5d3b142b7930ac643795c765e7655d1989905ec7d3231 - md5: 793b1080ab2d958980f137a8643cd6e8 +- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-common-cpp-12.8.0-h736e048_1.conda + sha256: 273475f002b091b66ce7366da04bf164c3732c03f8692ab2ee2d23335b6a82ba + md5: 13de36be8de3ae3f05ba127631599213 depends: + - __glibc >=2.17,<3.0.a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - libgcc >=13 - libstdcxx >=13 - libxml2 >=2.12.7,<3.0a0 - openssl >=3.3.2,<4.0a0 + arch: x86_64 + platform: linux license: MIT license_family: MIT - size: 140832 - timestamp: 1728565334900 -- kind: conda - name: azure-storage-common-cpp - version: 12.8.0 - build: h736e048_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-common-cpp-12.8.0-h736e048_1.conda - sha256: 273475f002b091b66ce7366da04bf164c3732c03f8692ab2ee2d23335b6a82ba - md5: 13de36be8de3ae3f05ba127631599213 + size: 149312 + timestamp: 1728563338704 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-common-cpp-12.8.0-h1b94036_1.conda + sha256: 146e76aac169e3dbdce5d3b142b7930ac643795c765e7655d1989905ec7d3231 + md5: 793b1080ab2d958980f137a8643cd6e8 depends: - - __glibc >=2.17,<3.0.a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - libgcc >=13 - libstdcxx >=13 - libxml2 >=2.12.7,<3.0a0 - openssl >=3.3.2,<4.0a0 + arch: aarch64 + platform: linux license: MIT license_family: MIT - size: 149312 - timestamp: 1728563338704 -- kind: conda - name: azure-storage-common-cpp - version: 12.8.0 - build: h9ca1f76_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-common-cpp-12.8.0-h9ca1f76_1.conda + size: 140832 + timestamp: 1728565334900 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-common-cpp-12.8.0-h9ca1f76_1.conda sha256: 77ab04e8fe5636a2de9c718f72a43645f7502cd208868c8a91ffba385547d585 md5: 7a187cd7b1445afc80253bb186a607cc depends: @@ -1804,56 +1560,44 @@ packages: - libcxx >=17 - libxml2 >=2.12.7,<3.0a0 - openssl >=3.3.2,<4.0a0 + arch: arm64 + platform: osx license: MIT license_family: MIT size: 121278 timestamp: 1728563418777 -- kind: conda - name: azure-storage-files-datalake-cpp - version: 12.12.0 - build: h37d6d07_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-files-datalake-cpp-12.12.0-h37d6d07_1.conda - sha256: 4079c617a75682e49bae63670d58fd6078ccfbbe55ca1f994acab3a74ab6bbcc - md5: b724f3b4b7f4e9b36c58cbe3ed8610a2 +- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-files-datalake-cpp-12.12.0-ha633028_1.conda + sha256: 5371e4f3f920933bb89b926a85a67f24388227419abd6e99f6086481e5e8d5f2 + md5: 7c1980f89dd41b097549782121a73490 depends: + - __glibc >=2.17,<3.0.a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 - libgcc >=13 - libstdcxx >=13 + arch: x86_64 + platform: linux license: MIT license_family: MIT - size: 260547 - timestamp: 1728730924071 -- kind: conda - name: azure-storage-files-datalake-cpp - version: 12.12.0 - build: ha633028_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-files-datalake-cpp-12.12.0-ha633028_1.conda - sha256: 5371e4f3f920933bb89b926a85a67f24388227419abd6e99f6086481e5e8d5f2 - md5: 7c1980f89dd41b097549782121a73490 + size: 287366 + timestamp: 1728729530295 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-files-datalake-cpp-12.12.0-h37d6d07_1.conda + sha256: 4079c617a75682e49bae63670d58fd6078ccfbbe55ca1f994acab3a74ab6bbcc + md5: b724f3b4b7f4e9b36c58cbe3ed8610a2 depends: - - __glibc >=2.17,<3.0.a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 - libgcc >=13 - libstdcxx >=13 + arch: aarch64 + platform: linux license: MIT license_family: MIT - size: 287366 - timestamp: 1728729530295 -- kind: conda - name: azure-storage-files-datalake-cpp - version: 12.12.0 - build: hcdd55da_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-files-datalake-cpp-12.12.0-hcdd55da_1.conda + size: 260547 + timestamp: 1728730924071 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-files-datalake-cpp-12.12.0-hcdd55da_1.conda sha256: f48523f8aa0b5b80f45a92f0556b388dd96f44ac2dc2f44a01d08c1822eec97d md5: c49fbc5233fcbaa86391162ff1adef38 depends: @@ -1862,18 +1606,13 @@ packages: - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 - libcxx >=17 + arch: arm64 + platform: osx license: MIT license_family: MIT size: 196032 timestamp: 1728729672889 -- kind: conda - name: backoff - version: 2.2.1 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/backoff-2.2.1-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/backoff-2.2.1-pyhd8ed1ab_1.conda sha256: f334115c6b0c6c2cd0d28595365f205ec7eaa60bcc5ff91a75d7245f728be820 md5: a38b801f2bcc12af80c2e02a9e4ce7d9 depends: @@ -1882,13 +1621,7 @@ packages: license_family: MIT size: 18816 timestamp: 1733771192649 -- kind: conda - name: brotli-python - version: 1.1.0 - build: py312h2ec8cdc_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py312h2ec8cdc_2.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py312h2ec8cdc_2.conda sha256: f2a59ccd20b4816dea9a2a5cb917eb69728271dbf1aeab4e1b7e609330a50b6f md5: b0b867af6fc74b2a0aa206da29c0f3cf depends: @@ -1899,17 +1632,13 @@ packages: - python_abi 3.12.* *_cp312 constrains: - libbrotlicommon 1.1.0 hb9d3cd8_2 + arch: x86_64 + platform: linux license: MIT license_family: MIT size: 349867 timestamp: 1725267732089 -- kind: conda - name: brotli-python - version: 1.1.0 - build: py312h6f74592_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/brotli-python-1.1.0-py312h6f74592_2.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/brotli-python-1.1.0-py312h6f74592_2.conda sha256: 9736bf660a0e4260c68f81d2635b51067f817813e6490ac9e8abd9a835dcbf6d md5: e1e9727063057168d95f27a032acd0a4 depends: @@ -1920,17 +1649,13 @@ packages: - python_abi 3.12.* *_cp312 constrains: - libbrotlicommon 1.1.0 h86ecc28_2 + arch: aarch64 + platform: linux license: MIT license_family: MIT size: 356878 timestamp: 1725267878508 -- kind: conda - name: brotli-python - version: 1.1.0 - build: py312hde4cb15_2 - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py312hde4cb15_2.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py312hde4cb15_2.conda sha256: 254b411fa78ccc226f42daf606772972466f93e9bc6895eabb4cfda22f5178af md5: a83c2ef76ccb11bc2349f4f17696b15d depends: @@ -1941,139 +1666,105 @@ packages: - python_abi 3.12.* *_cp312 constrains: - libbrotlicommon 1.1.0 hd74edd7_2 + arch: arm64 + platform: osx license: MIT license_family: MIT size: 339360 timestamp: 1725268143995 -- kind: conda - name: bzip2 - version: 1.0.8 - build: h4bc722e_7 - build_number: 7 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda sha256: 5ced96500d945fb286c9c838e54fa759aa04a7129c59800f0846b4335cee770d md5: 62ee74e96c5ebb0af99386de58cf9553 depends: - __glibc >=2.17,<3.0.a0 - libgcc-ng >=12 + arch: x86_64 + platform: linux license: bzip2-1.0.6 license_family: BSD size: 252783 timestamp: 1720974456583 -- kind: conda - name: bzip2 - version: 1.0.8 - build: h68df207_7 - build_number: 7 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h68df207_7.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h68df207_7.conda sha256: 2258b0b33e1cb3a9852d47557984abb6e7ea58e3d7f92706ec1f8e879290c4cb md5: 56398c28220513b9ea13d7b450acfb20 depends: - libgcc-ng >=12 + arch: aarch64 + platform: linux license: bzip2-1.0.6 license_family: BSD size: 189884 timestamp: 1720974504976 -- kind: conda - name: bzip2 - version: 1.0.8 - build: h99b78c6_7 - build_number: 7 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda sha256: adfa71f158cbd872a36394c56c3568e6034aa55c623634b37a4836bd036e6b91 md5: fc6948412dbbbe9a4c9ddbbcfe0a79ab depends: - __osx >=11.0 + arch: arm64 + platform: osx license: bzip2-1.0.6 license_family: BSD size: 122909 timestamp: 1720974522888 -- kind: conda - name: c-ares - version: 1.34.4 - build: h5505292_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.4-h5505292_0.conda - sha256: 09c0c8476e50b2955f474a4a1c17c4c047dd52993b5366b6ea8e968e583b921f - md5: c1c999a38a4303b29d75c636eaa13cf9 +- conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.4-hb9d3cd8_0.conda + sha256: d4f28d87b6339b94f74762c0076e29c8ef8ddfff51a564a92da2843573c18320 + md5: e2775acf57efd5af15b8e3d1d74d72d3 depends: - - __osx >=11.0 - license: MIT - license_family: MIT - size: 179496 - timestamp: 1734208291879 -- kind: conda - name: c-ares - version: 1.34.4 - build: h86ecc28_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/c-ares-1.34.4-h86ecc28_0.conda + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 206085 + timestamp: 1734208189009 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/c-ares-1.34.4-h86ecc28_0.conda sha256: 1187a41d4bb2afe02cb18690682edc98d1e9f5e0ccda638d8704a75ea1875bbe md5: 356da36f35d36dcba16e43f1589d4e39 depends: - libgcc >=13 + arch: aarch64 + platform: linux license: MIT license_family: MIT size: 215979 timestamp: 1734208193181 -- kind: conda - name: c-ares - version: 1.34.4 - build: hb9d3cd8_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.4-hb9d3cd8_0.conda - sha256: d4f28d87b6339b94f74762c0076e29c8ef8ddfff51a564a92da2843573c18320 - md5: e2775acf57efd5af15b8e3d1d74d72d3 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.4-h5505292_0.conda + sha256: 09c0c8476e50b2955f474a4a1c17c4c047dd52993b5366b6ea8e968e583b921f + md5: c1c999a38a4303b29d75c636eaa13cf9 depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 + - __osx >=11.0 + arch: arm64 + platform: osx license: MIT license_family: MIT - size: 206085 - timestamp: 1734208189009 -- kind: conda - name: ca-certificates - version: 2024.12.14 - build: hbcca054_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2024.12.14-hbcca054_0.conda + size: 179496 + timestamp: 1734208291879 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2024.12.14-hbcca054_0.conda sha256: 1afd7274cbc9a334d6d0bc62fa760acc7afdaceb0b91a8df370ec01fd75dc7dd md5: 720523eb0d6a9b0f6120c16b2aa4e7de + arch: x86_64 + platform: linux license: ISC size: 157088 timestamp: 1734208393264 -- kind: conda - name: ca-certificates - version: 2024.12.14 - build: hcefe29a_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2024.12.14-hcefe29a_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2024.12.14-hcefe29a_0.conda sha256: ad7b43211051332a5a4e788bb4619a2d0ecb5be73e0f76be17f733a87d7effd1 md5: 83b4ad1e6dc14df5891f3fcfdeb44351 + arch: aarch64 + platform: linux license: ISC size: 157096 timestamp: 1734209301744 -- kind: conda - name: ca-certificates - version: 2024.12.14 - build: hf0a4a13_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2024.12.14-hf0a4a13_0.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2024.12.14-hf0a4a13_0.conda sha256: 256be633fd0882ccc1a7a32bc278547e1703f85082c0789a87a603ee3ab8fb82 md5: 7cb381a6783d91902638e4ed1ebd478e + arch: arm64 + platform: osx license: ISC size: 157091 timestamp: 1734208344343 -- kind: conda - name: certifi - version: 2024.12.14 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.12.14-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.12.14-pyhd8ed1ab_0.conda sha256: 048c16a9cbcb1fbad02083414d3bc7c1d0eea4b39aee6aa6bf8d1d5089ca8bad md5: 6feb87357ecd66733be3279f16a8c400 depends: @@ -2081,12 +1772,7 @@ packages: license: ISC size: 161642 timestamp: 1734380604767 -- kind: conda - name: cffi - version: 1.17.1 - build: py312h06ac9bb_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py312h06ac9bb_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py312h06ac9bb_0.conda sha256: cba6ea83c4b0b4f5b5dc59cb19830519b28f95d7ebef7c9c5cf1c14843621457 md5: a861504bbea4161a9170b85d4d2be840 depends: @@ -2096,54 +1782,44 @@ packages: - pycparser - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux license: MIT license_family: MIT size: 294403 timestamp: 1725560714366 -- kind: conda - name: cffi - version: 1.17.1 - build: py312h0fad829_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.1-py312h0fad829_0.conda - sha256: 8d91a0d01358b5c3f20297c6c536c5d24ccd3e0c2ddd37f9d0593d0f0070226f - md5: 19a5456f72f505881ba493979777b24e +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cffi-1.17.1-py312hac81daf_0.conda + sha256: 1162e3ca039e7ca7c0e78f0a020ed1bde968096841b663e3f393c966eb82f0f0 + md5: 1a256e5581b1099e9295cb84d53db3ea depends: - - __osx >=11.0 - libffi >=3.4,<4.0a0 + - libgcc >=13 - pycparser - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux license: MIT license_family: MIT - size: 281206 - timestamp: 1725560813378 -- kind: conda - name: cffi - version: 1.17.1 - build: py312hac81daf_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/cffi-1.17.1-py312hac81daf_0.conda - sha256: 1162e3ca039e7ca7c0e78f0a020ed1bde968096841b663e3f393c966eb82f0f0 - md5: 1a256e5581b1099e9295cb84d53db3ea + size: 312892 + timestamp: 1725561779888 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.1-py312h0fad829_0.conda + sha256: 8d91a0d01358b5c3f20297c6c536c5d24ccd3e0c2ddd37f9d0593d0f0070226f + md5: 19a5456f72f505881ba493979777b24e depends: + - __osx >=11.0 - libffi >=3.4,<4.0a0 - - libgcc >=13 - pycparser - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx license: MIT license_family: MIT - size: 312892 - timestamp: 1725561779888 -- kind: conda - name: charset-normalizer - version: 3.4.1 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda + size: 281206 + timestamp: 1725560813378 +- conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda sha256: 4e0ee91b97e5de3e74567bdacea27f0139709fceca4db8adffbe24deffccb09b md5: e83a31202d1c0a000fce3e9cf3825875 depends: @@ -2152,13 +1828,7 @@ packages: license_family: MIT size: 47438 timestamp: 1735929811779 -- kind: conda - name: click - version: 8.1.8 - build: pyh707e725_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda sha256: c920d23cd1fcf565031c679adb62d848af60d6fbb0edc2d50ba475cea4f0d8ab md5: f22f4d4970e09d68a10b922cbb0408d3 depends: @@ -2168,14 +1838,7 @@ packages: license_family: BSD size: 84705 timestamp: 1734858922844 -- kind: conda - name: colorama - version: 0.4.6 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda sha256: ab29d57dc70786c1269633ba3dff20288b81664d3ff8d21af995742e2bb03287 md5: 962b9857ee8e7018c22f2776ffa0b2d7 depends: @@ -2184,13 +1847,7 @@ packages: license_family: BSD size: 27011 timestamp: 1733218222191 -- kind: conda - name: datasets - version: 2.14.4 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda sha256: 7e09bd083a609138b780fcc4535924cb96814d2c908a36d4c64a2ba9ee3efe7f md5: 3e087f072ce03c43a9b60522f5d0ca2f depends: @@ -2213,14 +1870,7 @@ packages: license_family: Apache size: 347303 timestamp: 1691593908658 -- kind: conda - name: deprecated - version: 1.2.15 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhd8ed1ab_1.conda sha256: a20ebf2c9b02a6eb32412ceb5c4cffaae49417db7e75414a76417538293a9402 md5: eaef2e94d5bd76f758545d172c1fda67 depends: @@ -2230,13 +1880,7 @@ packages: license_family: MIT size: 14297 timestamp: 1733662697343 -- kind: conda - name: dill - version: 0.3.7 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda sha256: 4ff20c6be028be2825235631c45d9e4a75bca1de65f8840c02dfb28ea0137c45 md5: 5e4f3466526c52bc9af2d2353a1460bd depends: @@ -2245,14 +1889,7 @@ packages: license_family: BSD size: 87553 timestamp: 1690101185422 -- kind: conda - name: dnspython - version: 2.7.0 - build: pyhff2d567_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda sha256: 3ec40ccf63f2450c5e6c7dd579e42fc2e97caf0d8cd4ba24aa434e6fc264eda0 md5: 5fbd60d61d21b4bd2f9d7a48fe100418 depends: @@ -2271,14 +1908,7 @@ packages: license_family: OTHER size: 172172 timestamp: 1733256829961 -- kind: conda - name: email-validator - version: 2.2.0 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda sha256: b91a19eb78edfc2dbb36de9a67f74ee2416f1b5273dd7327abe53f2dbf864736 md5: da16dd3b0b71339060cd44cb7110ddf9 depends: @@ -2288,14 +1918,7 @@ packages: license: Unlicense size: 44401 timestamp: 1733300827551 -- kind: conda - name: email_validator - version: 2.2.0 - build: hd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_1.conda sha256: e0d0fdf587aa0ed0ff08b2bce3ab355f46687b87b0775bfba01cc80a859ee6a2 md5: 0794f8807ff2c6f020422cacb1bd7bfa depends: @@ -2303,14 +1926,7 @@ packages: license: Unlicense size: 6552 timestamp: 1733300828176 -- kind: conda - name: exceptiongroup - version: 1.2.2 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda sha256: cbde2c64ec317118fc06b223c5fd87c8a680255e7348dd60e7b292d2e103e701 md5: a16662747cdeb9abbac74d0057cc976e depends: @@ -2318,13 +1934,7 @@ packages: license: MIT and PSF-2.0 size: 20486 timestamp: 1733208916977 -- kind: conda - name: fastapi - version: 0.115.6 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.6-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.6-pyhd8ed1ab_0.conda sha256: d7826d537c667093c9de96411a09585a8d620c84a830a0195e58e9a0df45f018 md5: 1b1e0c97830cdf75f1f371bd467ab657 depends: @@ -2342,13 +1952,7 @@ packages: license_family: MIT size: 73084 timestamp: 1733362427885 -- kind: conda - name: fastapi-cli - version: 0.0.7 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.7-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.7-pyhd8ed1ab_0.conda sha256: 300683731013b7221922339cd40430bb3c2ddeeb658fd7e37f5099ffe64e4db0 md5: d960e0ea9e1c561aa928f6c4439f04c7 depends: @@ -2360,14 +1964,7 @@ packages: license_family: MIT size: 15546 timestamp: 1734302408607 -- kind: conda - name: filelock - version: 3.16.1 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_1.conda sha256: 18dca6e2194732df7ebf824abaefe999e4765ebe8e8a061269406ab88fc418b9 md5: d692e9ba6f92dc51484bf3477e36ce7c depends: @@ -2375,76 +1972,42 @@ packages: license: Unlicense size: 17441 timestamp: 1733240909987 -- kind: conda - name: freetype - version: 2.12.1 - build: h267a509_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.12.1-h267a509_2.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.12.1-h267a509_2.conda sha256: b2e3c449ec9d907dd4656cb0dc93e140f447175b125a3824b31368b06c666bb6 md5: 9ae35c3d96db2c94ce0cef86efdfa2cb depends: - libgcc-ng >=12 - libpng >=1.6.39,<1.7.0a0 - libzlib >=1.2.13,<2.0.0a0 + arch: x86_64 + platform: linux license: GPL-2.0-only OR FTL size: 634972 timestamp: 1694615932610 -- kind: conda - name: freetype - version: 2.12.1 - build: hadb7bae_2 - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/freetype-2.12.1-hadb7bae_2.conda - sha256: 791673127e037a2dc0eebe122dc4f904cb3f6e635bb888f42cbe1a76b48748d9 - md5: e6085e516a3e304ce41a8ee08b9b89ad - depends: - - libpng >=1.6.39,<1.7.0a0 - - libzlib >=1.2.13,<2.0.0a0 - license: GPL-2.0-only OR FTL - size: 596430 - timestamp: 1694616332835 -- kind: conda - name: freetype - version: 2.12.1 - build: hf0a5ef3_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/freetype-2.12.1-hf0a5ef3_2.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/freetype-2.12.1-hf0a5ef3_2.conda sha256: 7af93030f4407f076dce181062360efac2cd54dce863b5d7765287a6f5382537 md5: a5ab74c5bd158c3d5532b66d8d83d907 depends: - libgcc-ng >=12 - libpng >=1.6.39,<1.7.0a0 - libzlib >=1.2.13,<2.0.0a0 + arch: aarch64 + platform: linux license: GPL-2.0-only OR FTL size: 642092 timestamp: 1694617858496 -- kind: conda - name: frozenlist - version: 1.5.0 - build: py312h0bf5046_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/frozenlist-1.5.0-py312h0bf5046_0.conda - sha256: 44d6d6b332421e621c029fb149f12dba1ccb5ed6ac632e2e807a9d92d6cb2864 - md5: 7960352935cc95ac23883c9b8c97f2ff +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/freetype-2.12.1-hadb7bae_2.conda + sha256: 791673127e037a2dc0eebe122dc4f904cb3f6e635bb888f42cbe1a76b48748d9 + md5: e6085e516a3e304ce41a8ee08b9b89ad depends: - - __osx >=11.0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - license: Apache-2.0 - license_family: APACHE - size: 53366 - timestamp: 1729699762631 -- kind: conda - name: frozenlist - version: 1.5.0 - build: py312h66e93f0_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/frozenlist-1.5.0-py312h66e93f0_0.conda + - libpng >=1.6.39,<1.7.0a0 + - libzlib >=1.2.13,<2.0.0a0 + arch: arm64 + platform: osx + license: GPL-2.0-only OR FTL + size: 596430 + timestamp: 1694616332835 +- conda: https://conda.anaconda.org/conda-forge/linux-64/frozenlist-1.5.0-py312h66e93f0_0.conda sha256: 7e0c12983b20f2816b3712729b5a35ecb7ee152132ca7cf805427c62395ea823 md5: f98e36c96b2c66d9043187179ddb04f4 depends: @@ -2452,16 +2015,13 @@ packages: - libgcc >=13 - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux license: Apache-2.0 license_family: APACHE size: 60968 timestamp: 1729699568442 -- kind: conda - name: frozenlist - version: 1.5.0 - build: py312hb2c0f52_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/frozenlist-1.5.0-py312hb2c0f52_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/frozenlist-1.5.0-py312hb2c0f52_0.conda sha256: b0a9ff3e71452eed70877b2f3175d41cd85070da6deac381c5f3f61e1f19bccb md5: 62fc11b0738ca15e0dd19b60cf280d12 depends: @@ -2469,17 +2029,27 @@ packages: - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux license: Apache-2.0 license_family: APACHE size: 59967 timestamp: 1729699642726 -- kind: conda - name: fsspec - version: 2024.12.0 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.12.0-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/frozenlist-1.5.0-py312h0bf5046_0.conda + sha256: 44d6d6b332421e621c029fb149f12dba1ccb5ed6ac632e2e807a9d92d6cb2864 + md5: 7960352935cc95ac23883c9b8c97f2ff + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + size: 53366 + timestamp: 1729699762631 +- conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.12.0-pyhd8ed1ab_0.conda sha256: 3320970c4604989eadf908397a9475f9e6a96a773c185915111399cbfbe47817 md5: e041ad4c43ab5e10c74587f95378ebc7 depends: @@ -2488,110 +2058,83 @@ packages: license_family: BSD size: 137756 timestamp: 1734650349242 -- kind: conda - name: gflags - version: 2.2.2 - build: h5888daf_1005 - build_number: 1005 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/gflags-2.2.2-h5888daf_1005.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/gflags-2.2.2-h5888daf_1005.conda sha256: 6c33bf0c4d8f418546ba9c250db4e4221040936aef8956353bc764d4877bc39a md5: d411fc29e338efb48c5fd4576d71d881 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - libstdcxx >=13 + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD size: 119654 timestamp: 1726600001928 -- kind: conda - name: gflags - version: 2.2.2 - build: h5ad3122_1005 - build_number: 1005 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/gflags-2.2.2-h5ad3122_1005.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gflags-2.2.2-h5ad3122_1005.conda sha256: 28fe6b40b20454106d5e4ef6947cf298c13cc72a46347bbc49b563cd3a463bfa md5: 4ff634d515abbf664774b5e1168a9744 depends: - libgcc >=13 - libstdcxx >=13 + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD size: 106638 timestamp: 1726599967617 -- kind: conda - name: gflags - version: 2.2.2 - build: hf9b8971_1005 - build_number: 1005 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/gflags-2.2.2-hf9b8971_1005.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/gflags-2.2.2-hf9b8971_1005.conda sha256: fd56ed8a1dab72ab90d8a8929b6f916a6d9220ca297ff077f8f04c5ed3408e20 md5: 57a511a5905caa37540eb914dfcbf1fb depends: - __osx >=11.0 - libcxx >=17 + arch: arm64 + platform: osx license: BSD-3-Clause license_family: BSD size: 82090 timestamp: 1726600145480 -- kind: conda - name: glog - version: 0.7.1 - build: h468a4a4_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/glog-0.7.1-h468a4a4_0.conda - sha256: 920795d4f775a9f47e91c2223e64847f0b212b3fedc56c137c5889e32efe8ba0 - md5: 08940a32c6ced3703d1412dd37df4f62 +- conda: https://conda.anaconda.org/conda-forge/linux-64/glog-0.7.1-hbabe93e_0.conda + sha256: dc824dc1d0aa358e28da2ecbbb9f03d932d976c8dca11214aa1dcdfcbd054ba2 + md5: ff862eebdfeb2fd048ae9dc92510baca depends: - gflags >=2.2.2,<2.3.0a0 - libgcc-ng >=12 - libstdcxx-ng >=12 + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD - size: 145811 - timestamp: 1718284208668 -- kind: conda - name: glog - version: 0.7.1 - build: hbabe93e_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/glog-0.7.1-hbabe93e_0.conda - sha256: dc824dc1d0aa358e28da2ecbbb9f03d932d976c8dca11214aa1dcdfcbd054ba2 - md5: ff862eebdfeb2fd048ae9dc92510baca + size: 143452 + timestamp: 1718284177264 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/glog-0.7.1-h468a4a4_0.conda + sha256: 920795d4f775a9f47e91c2223e64847f0b212b3fedc56c137c5889e32efe8ba0 + md5: 08940a32c6ced3703d1412dd37df4f62 depends: - gflags >=2.2.2,<2.3.0a0 - libgcc-ng >=12 - libstdcxx-ng >=12 + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD - size: 143452 - timestamp: 1718284177264 -- kind: conda - name: glog - version: 0.7.1 - build: heb240a5_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/glog-0.7.1-heb240a5_0.conda + size: 145811 + timestamp: 1718284208668 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/glog-0.7.1-heb240a5_0.conda sha256: 9fc77de416953aa959039db72bc41bfa4600ae3ff84acad04a7d0c1ab9552602 md5: fef68d0a95aa5b84b5c1a4f6f3bf40e1 depends: - __osx >=11.0 - gflags >=2.2.2,<2.3.0a0 - libcxx >=16 + arch: arm64 + platform: osx license: BSD-3-Clause license_family: BSD size: 112215 timestamp: 1718284365403 -- kind: conda - name: googleapis-common-protos - version: 1.66.0 - build: pyhff2d567_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda sha256: d8d19575a827f2c62500949b9536efdd6b5406c9f546a73b6a87ac90b03a5875 md5: 4861e30ff0cd566ea6fb4593e3b7c22a depends: @@ -2601,14 +2144,7 @@ packages: license_family: APACHE size: 116522 timestamp: 1731459019854 -- kind: conda - name: h11 - version: 0.14.0 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda sha256: 622516185a7c740d5c7f27016d0c15b45782c1501e5611deec63fd70344ce7c8 md5: 7ee49e89531c0dcbba9466f6d115d585 depends: @@ -2618,14 +2154,7 @@ packages: license_family: MIT size: 51846 timestamp: 1733327599467 -- kind: conda - name: h2 - version: 4.1.0 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_1.conda sha256: 843ddad410c370672a8250470697027618f104153612439076d4d7b91eeb7b5c md5: 825927dc7b0f287ef8d4d0011bb113b1 depends: @@ -2636,14 +2165,7 @@ packages: license_family: MIT size: 52000 timestamp: 1733298867359 -- kind: conda - name: hpack - version: 4.0.0 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda sha256: ec89b7e5b8aa2f0219f666084446e1fb7b54545861e9caa892acb24d125761b5 md5: 2aa5ff7fa34a81b9196532c84c10d865 depends: @@ -2652,14 +2174,7 @@ packages: license_family: MIT size: 29412 timestamp: 1733299296857 -- kind: conda - name: httpcore - version: 1.0.7 - build: pyh29332c3_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda sha256: c84d012a245171f3ed666a8bf9319580c269b7843ffa79f26468842da3abd5df md5: 2ca8e6dbc86525c8b95e3c0ffa26442e depends: @@ -2673,12 +2188,7 @@ packages: license_family: BSD size: 48959 timestamp: 1731707562362 -- kind: conda - name: httptools - version: 0.6.4 - build: py312h66e93f0_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/httptools-0.6.4-py312h66e93f0_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/httptools-0.6.4-py312h66e93f0_0.conda sha256: 621e7e050b888e5239d33e37ea72d6419f8367e5babcad38b755586f20264796 md5: 8b1160b32557290b64d5be68db3d996d depends: @@ -2686,16 +2196,13 @@ packages: - libgcc >=13 - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux license: MIT license_family: MIT size: 101872 timestamp: 1732707756745 -- kind: conda - name: httptools - version: 0.6.4 - build: py312hb2c0f52_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/httptools-0.6.4-py312hb2c0f52_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/httptools-0.6.4-py312hb2c0f52_0.conda sha256: 0bd1f30224af142711d11033a7469ae402a1147143f399f7341bbc1d8178c722 md5: 5e70a6de59352f9a52e9caa7f3447390 depends: @@ -2703,16 +2210,13 @@ packages: - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux license: MIT license_family: MIT size: 101255 timestamp: 1732707891645 -- kind: conda - name: httptools - version: 0.6.4 - build: py312hea69d52_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/httptools-0.6.4-py312hea69d52_0.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/httptools-0.6.4-py312hea69d52_0.conda sha256: 5e93cda79e32e8c0039e05ea1939e688da336187dab025f699b42ef529e848be md5: e1747a8e8d2aca5499aaea9993bf31ff depends: @@ -2720,17 +2224,13 @@ packages: - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx license: MIT license_family: MIT size: 85623 timestamp: 1732707871414 -- kind: conda - name: httpx - version: 0.28.1 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda sha256: cd0f1de3697b252df95f98383e9edb1d00386bfdd03fdf607fa42fe5fcb09950 md5: d6989ead454181f4f9bc987d3dc4e285 depends: @@ -2743,13 +2243,7 @@ packages: license_family: BSD size: 63082 timestamp: 1733663449209 -- kind: conda - name: huggingface_hub - version: 0.27.1 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.27.1-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.27.1-pyhd8ed1ab_0.conda sha256: 4597d7aa720f4acdddacc27b3f9e8d4336cb79477c53aee2d7ab96d136169cdb md5: 8c9a53ecd0c3c278efbdac567dd12ed0 depends: @@ -2766,14 +2260,7 @@ packages: license_family: APACHE size: 278363 timestamp: 1736350219225 -- kind: conda - name: hyperframe - version: 6.0.1 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda sha256: e91c6ef09d076e1d9a02819cd00fa7ee18ecf30cdd667605c853980216584d1b md5: 566e75c90c1d0c8c459eb0ad9833dc7a depends: @@ -2782,43 +2269,30 @@ packages: license_family: MIT size: 17239 timestamp: 1733298862681 -- kind: conda - name: icu - version: '75.1' - build: hf9b3779_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda sha256: 813298f2e54ef087dbfc9cc2e56e08ded41de65cff34c639cc8ba4e27e4540c9 md5: 268203e8b983fddb6412b36f2024e75c depends: - libgcc-ng >=12 - libstdcxx-ng >=12 + arch: aarch64 + platform: linux license: MIT license_family: MIT size: 12282786 timestamp: 1720853454991 -- kind: conda - name: icu - version: '75.1' - build: hfee45f7_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda sha256: 9ba12c93406f3df5ab0a43db8a4b4ef67a5871dfd401010fbe29b218b2cbe620 md5: 5eb22c1d7b3fc4abb50d92d621583137 depends: - __osx >=11.0 + arch: arm64 + platform: osx license: MIT license_family: MIT size: 11857802 timestamp: 1720853997952 -- kind: conda - name: idna - version: '3.10' - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda sha256: d7a472c9fd479e2e8dcb83fb8d433fce971ea369d704ece380e876f9c3494e87 md5: 39a4f67be3286c86d696df570b1201b7 depends: @@ -2827,14 +2301,7 @@ packages: license_family: BSD size: 49765 timestamp: 1733211921194 -- kind: conda - name: importlib-metadata - version: 8.5.0 - build: pyha770c72_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_1.conda sha256: 13766b88fc5b23581530d3a0287c0c58ad82f60401afefab283bf158d2be55a9 md5: 315607a3030ad5d5227e76e0733798ff depends: @@ -2844,13 +2311,7 @@ packages: license_family: APACHE size: 28623 timestamp: 1733223207185 -- kind: conda - name: jinja2 - version: 3.1.5 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.5-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.5-pyhd8ed1ab_0.conda sha256: 98977694b9ecaa3218662f843425f39501f81973c450f995eec68f1803ed71c3 md5: 2752a6ed44105bfb18c9bef1177d9dcd depends: @@ -2860,14 +2321,7 @@ packages: license_family: BSD size: 112561 timestamp: 1734824044952 -- kind: conda - name: jupyter_client - version: 8.6.3 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda sha256: 19d8bd5bb2fde910ec59e081eeb59529491995ce0d653a5209366611023a0b3a md5: 4ebae00eae9705b0c3d6d1018a81d047 depends: @@ -2882,14 +2336,7 @@ packages: license_family: BSD size: 106342 timestamp: 1733441040958 -- kind: conda - name: jupyter_core - version: 5.7.2 - build: pyh31011fe_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda sha256: 732b1e8536bc22a5a174baa79842d79db2f4956d90293dd82dc1b3f6099bcccd md5: 0a2980dada0dd7fd0998f0342308b1b1 depends: @@ -2901,56 +2348,43 @@ packages: license_family: BSD size: 57671 timestamp: 1727163547058 -- kind: conda - name: keyutils - version: 1.6.1 - build: h166bdaf_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 sha256: 150c05a6e538610ca7c43beb3a40d65c90537497a4f6a5f4d15ec0451b6f5ebb md5: 30186d27e2c9fa62b45fb1476b7200e3 depends: - libgcc-ng >=10.3.0 + arch: x86_64 + platform: linux license: LGPL-2.1-or-later size: 117831 timestamp: 1646151697040 -- kind: conda - name: keyutils - version: 1.6.1 - build: h4e544f5_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/keyutils-1.6.1-h4e544f5_0.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/keyutils-1.6.1-h4e544f5_0.tar.bz2 sha256: 6d4233d97a9b38acbb26e1268bcf8c10a8e79c2aed7e5a385ec3769967e3e65b md5: 1f24853e59c68892452ef94ddd8afd4b depends: - libgcc-ng >=10.3.0 + arch: aarch64 + platform: linux license: LGPL-2.1-or-later size: 112327 timestamp: 1646166857935 -- kind: conda - name: krb5 - version: 1.21.3 - build: h237132a_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda - sha256: 4442f957c3c77d69d9da3521268cad5d54c9033f1a73f99cde0a3658937b159b - md5: c6dc8a0fdec13a0565936655c33069a1 +- conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda + sha256: 99df692f7a8a5c27cd14b5fb1374ee55e756631b9c3d659ed3ee60830249b238 + md5: 3f43953b7d3fb3aaa1d0d0723d91e368 depends: - - __osx >=11.0 - - libcxx >=16 + - keyutils >=1.6.1,<2.0a0 - libedit >=3.1.20191231,<3.2.0a0 - libedit >=3.1.20191231,<4.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 - openssl >=3.3.1,<4.0a0 + arch: x86_64 + platform: linux license: MIT license_family: MIT - size: 1155530 - timestamp: 1719463474401 -- kind: conda - name: krb5 - version: 1.21.3 - build: h50a48e9_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/krb5-1.21.3-h50a48e9_0.conda + size: 1370023 + timestamp: 1719463201255 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/krb5-1.21.3-h50a48e9_0.conda sha256: 0ec272afcf7ea7fbf007e07a3b4678384b7da4047348107b2ae02630a570a815 md5: 29c10432a2ca1472b53f299ffb2ffa37 depends: @@ -2960,178 +2394,141 @@ packages: - libgcc-ng >=12 - libstdcxx-ng >=12 - openssl >=3.3.1,<4.0a0 + arch: aarch64 + platform: linux license: MIT license_family: MIT size: 1474620 timestamp: 1719463205834 -- kind: conda - name: krb5 - version: 1.21.3 - build: h659f571_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda - sha256: 99df692f7a8a5c27cd14b5fb1374ee55e756631b9c3d659ed3ee60830249b238 - md5: 3f43953b7d3fb3aaa1d0d0723d91e368 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda + sha256: 4442f957c3c77d69d9da3521268cad5d54c9033f1a73f99cde0a3658937b159b + md5: c6dc8a0fdec13a0565936655c33069a1 depends: - - keyutils >=1.6.1,<2.0a0 + - __osx >=11.0 + - libcxx >=16 - libedit >=3.1.20191231,<3.2.0a0 - libedit >=3.1.20191231,<4.0a0 - - libgcc-ng >=12 - - libstdcxx-ng >=12 - openssl >=3.3.1,<4.0a0 + arch: arm64 + platform: osx license: MIT license_family: MIT - size: 1370023 - timestamp: 1719463201255 -- kind: conda - name: lcms2 - version: '2.16' - build: h922389a_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/lcms2-2.16-h922389a_0.conda + size: 1155530 + timestamp: 1719463474401 +- conda: https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.16-hb7c19ff_0.conda + sha256: 5c878d104b461b7ef922abe6320711c0d01772f4cd55de18b674f88547870041 + md5: 51bb7010fc86f70eee639b4bb7a894f5 + depends: + - libgcc-ng >=12 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libtiff >=4.6.0,<4.8.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 245247 + timestamp: 1701647787198 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lcms2-2.16-h922389a_0.conda sha256: be4847b1014d3cbbc524a53bdbf66182f86125775020563e11d914c8468dd97d md5: ffdd8267a04c515e7ce69c727b051414 depends: - libgcc-ng >=12 - libjpeg-turbo >=3.0.0,<4.0a0 - libtiff >=4.6.0,<4.8.0a0 + arch: aarch64 + platform: linux license: MIT license_family: MIT size: 296219 timestamp: 1701647961116 -- kind: conda - name: lcms2 - version: '2.16' - build: ha0e7c42_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.16-ha0e7c42_0.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.16-ha0e7c42_0.conda sha256: 151e0c84feb7e0747fabcc85006b8973b22f5abbc3af76a9add0b0ef0320ebe4 md5: 66f6c134e76fe13cce8a9ea5814b5dd5 depends: - libjpeg-turbo >=3.0.0,<4.0a0 - libtiff >=4.6.0,<4.8.0a0 + arch: arm64 + platform: osx license: MIT license_family: MIT size: 211959 timestamp: 1701647962657 -- kind: conda - name: lcms2 - version: '2.16' - build: hb7c19ff_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.16-hb7c19ff_0.conda - sha256: 5c878d104b461b7ef922abe6320711c0d01772f4cd55de18b674f88547870041 - md5: 51bb7010fc86f70eee639b4bb7a894f5 - depends: - - libgcc-ng >=12 - - libjpeg-turbo >=3.0.0,<4.0a0 - - libtiff >=4.6.0,<4.8.0a0 - license: MIT - license_family: MIT - size: 245247 - timestamp: 1701647787198 -- kind: conda - name: ld_impl_linux-64 - version: '2.43' - build: h712a8e2_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_2.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_2.conda sha256: 7c91cea91b13f4314d125d1bedb9d03a29ebbd5080ccdea70260363424646dbe md5: 048b02e3962f066da18efe3a21b77672 depends: - __glibc >=2.17,<3.0.a0 constrains: - binutils_impl_linux-64 2.43 + arch: x86_64 + platform: linux license: GPL-3.0-only license_family: GPL size: 669211 timestamp: 1729655358674 -- kind: conda - name: ld_impl_linux-aarch64 - version: '2.43' - build: h80caac9_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_2.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_2.conda sha256: 80ec7e8f006196808fac5bd4b3773a652847f97bbf08044cd87731424ac64f8b md5: fcbde5ea19d55468953bf588770c0501 constrains: - binutils_impl_linux-aarch64 2.43 + arch: aarch64 + platform: linux license: GPL-3.0-only license_family: GPL size: 698245 timestamp: 1729655345825 -- kind: conda - name: lerc - version: 4.0.0 - build: h27087fc_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 sha256: cb55f36dcd898203927133280ae1dc643368af041a48bcf7c026acb7c47b0c12 md5: 76bbff344f0134279f225174e9064c8f depends: - libgcc-ng >=12 - libstdcxx-ng >=12 + arch: x86_64 + platform: linux license: Apache-2.0 license_family: Apache size: 281798 timestamp: 1657977462600 -- kind: conda - name: lerc - version: 4.0.0 - build: h4de3ea5_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.0.0-h4de3ea5_0.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.0.0-h4de3ea5_0.tar.bz2 sha256: 2d09ef9b7796d83364957e420b41c32d94e628c3f0520b61c332518a7b5cd586 md5: 1a0ffc65e03ce81559dbcb0695ad1476 depends: - libgcc-ng >=12 - libstdcxx-ng >=12 - license: Apache-2.0 + arch: aarch64 + platform: linux + license: Apache-2.0 license_family: Apache size: 262096 timestamp: 1657978241894 -- kind: conda - name: lerc - version: 4.0.0 - build: h9a09cb3_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 sha256: 6f068bb53dfb6147d3147d981bb851bb5477e769407ad4e6a68edf482fdcb958 md5: de462d5aacda3b30721b512c5da4e742 depends: - libcxx >=13.0.1 + arch: arm64 + platform: osx license: Apache-2.0 license_family: Apache size: 215721 timestamp: 1657977558796 -- kind: conda - name: libabseil - version: '20240722.0' - build: cxx17_h07bc746_4 - build_number: 4 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_h07bc746_4.conda - sha256: 05fa5e5e908962b9c5aba95f962e2ca81d9599c4715aebe5e4ddb72b309d1770 - md5: c2d95bd7aa8d564a9bd7eca5e571a5b3 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda + sha256: 143a586aa67d50622ef703de57b9d43f44945836d6568e0e7aa174bd8c45e0d4 + md5: 488f260ccda0afaf08acb286db439c2f depends: - - __osx >=11.0 - - libcxx >=18 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 constrains: - libabseil-static =20240722.0=cxx17* - abseil-cpp =20240722.0 + arch: x86_64 + platform: linux license: Apache-2.0 license_family: Apache - size: 1178260 - timestamp: 1736008642885 -- kind: conda - name: libabseil - version: '20240722.0' - build: cxx17_h18dbdb1_4 - build_number: 4 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h18dbdb1_4.conda + size: 1311599 + timestamp: 1736008414161 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h18dbdb1_4.conda sha256: bb6c5fb3b8de5f90735c5252b57efb3c268ee222c755569dac18065f05147670 md5: 633b9fe454ffea2aaf29e191d946a83b depends: @@ -3140,41 +2537,33 @@ packages: constrains: - abseil-cpp =20240722.0 - libabseil-static =20240722.0=cxx17* + arch: aarch64 + platform: linux license: Apache-2.0 license_family: Apache size: 1334844 timestamp: 1736008472455 -- kind: conda - name: libabseil - version: '20240722.0' - build: cxx17_hbbce691_4 - build_number: 4 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda - sha256: 143a586aa67d50622ef703de57b9d43f44945836d6568e0e7aa174bd8c45e0d4 - md5: 488f260ccda0afaf08acb286db439c2f +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_h07bc746_4.conda + sha256: 05fa5e5e908962b9c5aba95f962e2ca81d9599c4715aebe5e4ddb72b309d1770 + md5: c2d95bd7aa8d564a9bd7eca5e571a5b3 depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libstdcxx >=13 + - __osx >=11.0 + - libcxx >=18 constrains: - libabseil-static =20240722.0=cxx17* - abseil-cpp =20240722.0 + arch: arm64 + platform: osx license: Apache-2.0 license_family: Apache - size: 1311599 - timestamp: 1736008414161 -- kind: conda - name: libarrow - version: 18.1.0 - build: h0ad35bc_7_cpu + size: 1178260 + timestamp: 1736008642885 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-hd595efa_7_cpu.conda build_number: 7 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-h0ad35bc_7_cpu.conda - sha256: 4fbdd8bb89d912bf03f10f9373a8d96a1cdd7a7851e107393418a3d2715bc27e - md5: 4ba2173203f44bbf03d19aaba6ed07d3 + sha256: 554ffa338264c1dc34d95adb7eb856d50a2f25e7fa303a1a51e4372301b7c96f + md5: 08d4aff5ee6dee9a1b9ab13fca927697 depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 - aws-crt-cpp >=0.29.7,<0.29.8.0a0 - aws-sdk-cpp >=1.11.458,<1.11.459.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 @@ -3182,15 +2571,17 @@ packages: - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 - bzip2 >=1.0.8,<2.0a0 + - gflags >=2.2.2,<2.3.0a0 - glog >=0.7.1,<0.8.0a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - libbrotlidec >=1.1.0,<1.2.0a0 - libbrotlienc >=1.1.0,<1.2.0a0 - - libcxx >=18 + - libgcc >=13 - libgoogle-cloud >=2.33.0,<2.34.0a0 - libgoogle-cloud-storage >=2.33.0,<2.34.0a0 - libre2-11 >=2024.7.2 + - libstdcxx >=13 - libutf8proc >=2.9.0,<2.10.0a0 - libzlib >=1.3.1,<2.0a0 - lz4-c >=1.10.0,<1.11.0a0 @@ -3202,17 +2593,14 @@ packages: - arrow-cpp <0.0a0 - parquet-cpp <0.0a0 - apache-arrow-proc =*=cpu + arch: x86_64 + platform: linux license: Apache-2.0 license_family: APACHE - size: 5506699 - timestamp: 1735682962976 -- kind: conda - name: libarrow - version: 18.1.0 - build: hb7781cd_7_cpu + size: 8770256 + timestamp: 1735684696564 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-hb7781cd_7_cpu.conda build_number: 7 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-hb7781cd_7_cpu.conda sha256: f6107506bd16788560b47a4d18c1457b4df30a49334364d32613fe3f53ba6cbb md5: 98cf7127ca7b3854c5d1c8bef1ed6e53 depends: @@ -3245,21 +2633,18 @@ packages: - arrow-cpp <0.0a0 - parquet-cpp <0.0a0 - apache-arrow-proc =*=cpu + arch: aarch64 + platform: linux license: Apache-2.0 license_family: APACHE size: 8026714 timestamp: 1735685336542 -- kind: conda - name: libarrow - version: 18.1.0 - build: hd595efa_7_cpu +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-h0ad35bc_7_cpu.conda build_number: 7 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-hd595efa_7_cpu.conda - sha256: 554ffa338264c1dc34d95adb7eb856d50a2f25e7fa303a1a51e4372301b7c96f - md5: 08d4aff5ee6dee9a1b9ab13fca927697 + sha256: 4fbdd8bb89d912bf03f10f9373a8d96a1cdd7a7851e107393418a3d2715bc27e + md5: 4ba2173203f44bbf03d19aaba6ed07d3 depends: - - __glibc >=2.17,<3.0.a0 + - __osx >=11.0 - aws-crt-cpp >=0.29.7,<0.29.8.0a0 - aws-sdk-cpp >=1.11.458,<1.11.459.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 @@ -3267,17 +2652,15 @@ packages: - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 - bzip2 >=1.0.8,<2.0a0 - - gflags >=2.2.2,<2.3.0a0 - glog >=0.7.1,<0.8.0a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - libbrotlidec >=1.1.0,<1.2.0a0 - libbrotlienc >=1.1.0,<1.2.0a0 - - libgcc >=13 + - libcxx >=18 - libgoogle-cloud >=2.33.0,<2.34.0a0 - libgoogle-cloud-storage >=2.33.0,<2.34.0a0 - libre2-11 >=2024.7.2 - - libstdcxx >=13 - libutf8proc >=2.9.0,<2.10.0a0 - libzlib >=1.3.1,<2.0a0 - lz4-c >=1.10.0,<1.11.0a0 @@ -3289,34 +2672,14 @@ packages: - arrow-cpp <0.0a0 - parquet-cpp <0.0a0 - apache-arrow-proc =*=cpu + arch: arm64 + platform: osx license: Apache-2.0 license_family: APACHE - size: 8770256 - timestamp: 1735684696564 -- kind: conda - name: libarrow-acero - version: 18.1.0 - build: h3b568fd_7_cpu - build_number: 7 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h3b568fd_7_cpu.conda - sha256: 42cbfc87096f745d565d814d65b7228c82d985f1898859d5e456016d73e81c82 - md5: 4c1d8c3feea249782148d3cd6a25392e - depends: - - libarrow 18.1.0 hb7781cd_7_cpu - - libgcc >=13 - - libstdcxx >=13 - license: Apache-2.0 - license_family: APACHE - size: 578222 - timestamp: 1735685424850 -- kind: conda - name: libarrow-acero - version: 18.1.0 - build: hcb10f89_7_cpu + size: 5506699 + timestamp: 1735682962976 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-hcb10f89_7_cpu.conda build_number: 7 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-hcb10f89_7_cpu.conda sha256: 87ea5d6a84d922d73975dce8661fccf257e72e755175b12c30e1181a34e37987 md5: 12d84228204c56fec6ed113288014d11 depends: @@ -3324,53 +2687,42 @@ packages: - libarrow 18.1.0 hd595efa_7_cpu - libgcc >=13 - libstdcxx >=13 + arch: x86_64 + platform: linux license: Apache-2.0 license_family: APACHE size: 612463 timestamp: 1735684749868 -- kind: conda - name: libarrow-acero - version: 18.1.0 - build: hf07054f_7_cpu +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h3b568fd_7_cpu.conda + build_number: 7 + sha256: 42cbfc87096f745d565d814d65b7228c82d985f1898859d5e456016d73e81c82 + md5: 4c1d8c3feea249782148d3cd6a25392e + depends: + - libarrow 18.1.0 hb7781cd_7_cpu + - libgcc >=13 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 578222 + timestamp: 1735685424850 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-hf07054f_7_cpu.conda build_number: 7 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-hf07054f_7_cpu.conda sha256: 86e20cebfdb4f335e98265c1b88f5053bf3e3648768a317856295846bfdbf2b4 md5: 3eaf71fe987de13061db795e03bb1a1c depends: - __osx >=11.0 - libarrow 18.1.0 h0ad35bc_7_cpu - libcxx >=18 + arch: arm64 + platform: osx license: Apache-2.0 license_family: APACHE size: 485185 timestamp: 1735683071232 -- kind: conda - name: libarrow-dataset - version: 18.1.0 - build: h3b568fd_7_cpu - build_number: 7 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h3b568fd_7_cpu.conda - sha256: 13ba7d3d08015aa26569eca9e198e2f8b2a0cd2d9c420e41c78cc2e5d5170f26 - md5: f39f5d725c2ca94c2e7b19e2717fd4ab - depends: - - libarrow 18.1.0 hb7781cd_7_cpu - - libarrow-acero 18.1.0 h3b568fd_7_cpu - - libgcc >=13 - - libparquet 18.1.0 hfc78867_7_cpu - - libstdcxx >=13 - license: Apache-2.0 - license_family: APACHE - size: 560329 - timestamp: 1735685518922 -- kind: conda - name: libarrow-dataset - version: 18.1.0 - build: hcb10f89_7_cpu +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-hcb10f89_7_cpu.conda build_number: 7 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-hcb10f89_7_cpu.conda sha256: 99c12511fba79c7947f78d676eae5857659084f687f375f68bc20bd4cddb0a0e md5: 0a81eb63d7cd150f598c752e86388d57 depends: @@ -3380,17 +2732,30 @@ packages: - libgcc >=13 - libparquet 18.1.0 h081d1f1_7_cpu - libstdcxx >=13 + arch: x86_64 + platform: linux license: Apache-2.0 license_family: APACHE size: 587497 timestamp: 1735684880531 -- kind: conda - name: libarrow-dataset - version: 18.1.0 - build: hf07054f_7_cpu +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h3b568fd_7_cpu.conda + build_number: 7 + sha256: 13ba7d3d08015aa26569eca9e198e2f8b2a0cd2d9c420e41c78cc2e5d5170f26 + md5: f39f5d725c2ca94c2e7b19e2717fd4ab + depends: + - libarrow 18.1.0 hb7781cd_7_cpu + - libarrow-acero 18.1.0 h3b568fd_7_cpu + - libgcc >=13 + - libparquet 18.1.0 hfc78867_7_cpu + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 560329 + timestamp: 1735685518922 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-hf07054f_7_cpu.conda build_number: 7 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-hf07054f_7_cpu.conda sha256: 52c5c4e9cd5f2ac91dcebb6a920ab2536febcea116ff8767e5439329d7da820b md5: 97a2d3606682d94f7d73112e9ad684ae depends: @@ -3399,17 +2764,14 @@ packages: - libarrow-acero 18.1.0 hf07054f_7_cpu - libcxx >=18 - libparquet 18.1.0 h636d7b7_7_cpu + arch: arm64 + platform: osx license: Apache-2.0 license_family: APACHE size: 491237 timestamp: 1735684688308 -- kind: conda - name: libarrow-substrait - version: 18.1.0 - build: h08228c5_7_cpu +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-h08228c5_7_cpu.conda build_number: 7 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-h08228c5_7_cpu.conda sha256: 53ea53a06e137c2f81ebfdff3f978babb8b59e31f705a19b57056ec8754c1abf md5: e128def53c133e8a23ac00cd4a479335 depends: @@ -3422,17 +2784,14 @@ packages: - libgcc >=13 - libprotobuf >=5.28.3,<5.28.4.0a0 - libstdcxx >=13 + arch: x86_64 + platform: linux license: Apache-2.0 license_family: APACHE size: 521861 timestamp: 1735684940668 -- kind: conda - name: libarrow-substrait - version: 18.1.0 - build: h1e9d426_7_cpu +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h1e9d426_7_cpu.conda build_number: 7 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h1e9d426_7_cpu.conda sha256: 252e2a0d8c733f36b50499786480a05a59577d617f291868149c80534c1e8ffc md5: 6da921d9e1c4e2ab2679eeea7cbd4c82 depends: @@ -3444,17 +2803,14 @@ packages: - libgcc >=13 - libprotobuf >=5.28.3,<5.28.4.0a0 - libstdcxx >=13 + arch: aarch64 + platform: linux license: Apache-2.0 license_family: APACHE size: 516014 timestamp: 1735685565929 -- kind: conda - name: libarrow-substrait - version: 18.1.0 - build: h4239455_7_cpu +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-h4239455_7_cpu.conda build_number: 7 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-h4239455_7_cpu.conda sha256: a45bbdd6932aed972d6c6ce30a7439aa8ec9d9b8ee5affb350d41e50abdc0127 md5: 91927747173f65695e441346c7145e26 depends: @@ -3466,17 +2822,14 @@ packages: - libarrow-dataset 18.1.0 hf07054f_7_cpu - libcxx >=18 - libprotobuf >=5.28.3,<5.28.4.0a0 + arch: arm64 + platform: osx license: Apache-2.0 license_family: APACHE size: 452385 timestamp: 1735684993831 -- kind: conda - name: libblas - version: 3.9.0 - build: 26_linux64_openblas +- conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-26_linux64_openblas.conda build_number: 26 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-26_linux64_openblas.conda sha256: 30bd658682b124243f8e52d8edf8a19e7be1bc31e4fe4baec30a64002dc8cd0c md5: ac52800af2e0c0e7dac770b435ce768a depends: @@ -3487,17 +2840,14 @@ packages: - liblapack 3.9.0 26_linux64_openblas - liblapacke 3.9.0 26_linux64_openblas - blas * openblas + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD size: 16393 timestamp: 1734432564346 -- kind: conda - name: libblas - version: 3.9.0 - build: 26_linuxaarch64_openblas +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-26_linuxaarch64_openblas.conda build_number: 26 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-26_linuxaarch64_openblas.conda sha256: df6d8ee34d45cf35609ecdd55c1ff03e32e0cd87ae41ebe4ef3747a8e09ead4d md5: 8d900b7079a00969d70305e9aad550b7 depends: @@ -3508,17 +2858,14 @@ packages: - liblapacke 3.9.0 26_linuxaarch64_openblas - libcblas 3.9.0 26_linuxaarch64_openblas - liblapack 3.9.0 26_linuxaarch64_openblas + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD size: 16477 timestamp: 1734432576699 -- kind: conda - name: libblas - version: 3.9.0 - build: 26_osxarm64_openblas +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-26_osxarm64_openblas.conda build_number: 26 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-26_osxarm64_openblas.conda sha256: 597f9c3779caa979c8c6abbb3ba8c7191b84e1a910d6b0d10e5faf35284c450c md5: 21be102c9ae80a67ba7de23b129aa7f6 depends: @@ -3529,161 +2876,122 @@ packages: - liblapacke 3.9.0 26_osxarm64_openblas - libcblas 3.9.0 26_osxarm64_openblas - blas * openblas + arch: arm64 + platform: osx license: BSD-3-Clause license_family: BSD size: 16714 timestamp: 1734433054681 -- kind: conda - name: libbrotlicommon - version: 1.1.0 - build: h86ecc28_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlicommon-1.1.0-h86ecc28_2.conda - sha256: 64112af913974b309d67fd342e065fd184347043a6387933b3db796778a28019 - md5: 3ee026955c688f551a9999840cff4c67 - depends: - - libgcc >=13 - license: MIT - license_family: MIT - size: 68982 - timestamp: 1725267774142 -- kind: conda - name: libbrotlicommon - version: 1.1.0 - build: hb9d3cd8_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hb9d3cd8_2.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hb9d3cd8_2.conda sha256: d9db2de60ea917298e658143354a530e9ca5f9c63471c65cf47ab39fd2f429e3 md5: 41b599ed2b02abcfdd84302bff174b23 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 + arch: x86_64 + platform: linux license: MIT license_family: MIT size: 68851 timestamp: 1725267660471 -- kind: conda - name: libbrotlicommon - version: 1.1.0 - build: hd74edd7_2 - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.1.0-hd74edd7_2.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlicommon-1.1.0-h86ecc28_2.conda + sha256: 64112af913974b309d67fd342e065fd184347043a6387933b3db796778a28019 + md5: 3ee026955c688f551a9999840cff4c67 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 68982 + timestamp: 1725267774142 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.1.0-hd74edd7_2.conda sha256: 839dacb741bdbb25e58f42088a2001b649f4f12195aeb700b5ddfca3267749e5 md5: d0bf1dff146b799b319ea0434b93f779 depends: - __osx >=11.0 + arch: arm64 + platform: osx license: MIT license_family: MIT size: 68426 timestamp: 1725267943211 -- kind: conda - name: libbrotlidec - version: 1.1.0 - build: h86ecc28_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlidec-1.1.0-h86ecc28_2.conda - sha256: 94c808d9ca3eb6ef30976a9843e27f027cf3a1e84e8c6835cbb696b7bdb35c4c - md5: e64d0f3b59c7c4047446b97a8624a72d - depends: - - libbrotlicommon 1.1.0 h86ecc28_2 - - libgcc >=13 - license: MIT - license_family: MIT - size: 31708 - timestamp: 1725267783442 -- kind: conda - name: libbrotlidec - version: 1.1.0 - build: hb9d3cd8_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hb9d3cd8_2.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hb9d3cd8_2.conda sha256: 2892d512cad096cb03f1b66361deeab58b64e15ba525d6592bb6d609e7045edf md5: 9566f0bd264fbd463002e759b8a82401 depends: - __glibc >=2.17,<3.0.a0 - libbrotlicommon 1.1.0 hb9d3cd8_2 - libgcc >=13 + arch: x86_64 + platform: linux license: MIT license_family: MIT size: 32696 timestamp: 1725267669305 -- kind: conda - name: libbrotlidec - version: 1.1.0 - build: hd74edd7_2 - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.1.0-hd74edd7_2.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlidec-1.1.0-h86ecc28_2.conda + sha256: 94c808d9ca3eb6ef30976a9843e27f027cf3a1e84e8c6835cbb696b7bdb35c4c + md5: e64d0f3b59c7c4047446b97a8624a72d + depends: + - libbrotlicommon 1.1.0 h86ecc28_2 + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 31708 + timestamp: 1725267783442 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.1.0-hd74edd7_2.conda sha256: 6c6862eb274f21a7c0b60e5345467a12e6dda8b9af4438c66d496a2c1a538264 md5: 55e66e68ce55523a6811633dd1ac74e2 depends: - __osx >=11.0 - libbrotlicommon 1.1.0 hd74edd7_2 + arch: arm64 + platform: osx license: MIT license_family: MIT size: 28378 timestamp: 1725267980316 -- kind: conda - name: libbrotlienc - version: 1.1.0 - build: h86ecc28_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlienc-1.1.0-h86ecc28_2.conda - sha256: 41385e17bc73834b235c5aff12d6d82eccb534acb3c30986996f9dad92a0d54c - md5: 0e9bd365480c72b25c71a448257b537d - depends: - - libbrotlicommon 1.1.0 h86ecc28_2 - - libgcc >=13 - license: MIT - license_family: MIT - size: 290230 - timestamp: 1725267792697 -- kind: conda - name: libbrotlienc - version: 1.1.0 - build: hb9d3cd8_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.1.0-hb9d3cd8_2.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.1.0-hb9d3cd8_2.conda sha256: 779f58174e99de3600e939fa46eddb453ec5d3c60bb46cdaa8b4c127224dbf29 md5: 06f70867945ea6a84d35836af780f1de depends: - __glibc >=2.17,<3.0.a0 - libbrotlicommon 1.1.0 hb9d3cd8_2 - libgcc >=13 + arch: x86_64 + platform: linux license: MIT license_family: MIT size: 281750 timestamp: 1725267679782 -- kind: conda - name: libbrotlienc - version: 1.1.0 - build: hd74edd7_2 - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlienc-1.1.0-hd74edd7_2.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlienc-1.1.0-h86ecc28_2.conda + sha256: 41385e17bc73834b235c5aff12d6d82eccb534acb3c30986996f9dad92a0d54c + md5: 0e9bd365480c72b25c71a448257b537d + depends: + - libbrotlicommon 1.1.0 h86ecc28_2 + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 290230 + timestamp: 1725267792697 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlienc-1.1.0-hd74edd7_2.conda sha256: eeb1eb0d58b9d02bc1b98dc0a058f104ab168eb2f7d1c7bfa0570a12cfcdb7b7 md5: 4f3a434504c67b2c42565c0b85c1885c depends: - __osx >=11.0 - libbrotlicommon 1.1.0 hd74edd7_2 + arch: arm64 + platform: osx license: MIT license_family: MIT size: 279644 timestamp: 1725268003553 -- kind: conda - name: libcblas - version: 3.9.0 - build: 26_linux64_openblas +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-26_linux64_openblas.conda build_number: 26 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-26_linux64_openblas.conda sha256: 9c74e536c9bc868e356ffd43f81c2cb398aec84b40fcadc312315b164a5500ee md5: ebcc5f37a435aa3c19640533c82f8d76 depends: @@ -3692,17 +3000,14 @@ packages: - liblapack 3.9.0 26_linux64_openblas - liblapacke 3.9.0 26_linux64_openblas - blas * openblas + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD size: 16336 timestamp: 1734432570482 -- kind: conda - name: libcblas - version: 3.9.0 - build: 26_linuxaarch64_openblas +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-26_linuxaarch64_openblas.conda build_number: 26 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-26_linuxaarch64_openblas.conda sha256: 521e78be0c4170f229c43e1a6c94337a72db3ebcbe6e5960f8413aa438dcb8f9 md5: d77f943ae4083f3aeddca698f2d28262 depends: @@ -3711,17 +3016,14 @@ packages: - blas * openblas - liblapacke 3.9.0 26_linuxaarch64_openblas - liblapack 3.9.0 26_linuxaarch64_openblas + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD size: 16398 timestamp: 1734432580937 -- kind: conda - name: libcblas - version: 3.9.0 - build: 26_osxarm64_openblas +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-26_osxarm64_openblas.conda build_number: 26 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-26_osxarm64_openblas.conda sha256: 27a29ef6b2fd2179bc3a0bb9db351f078ba140ca10485dca147c399639f84c93 md5: a0e9980fe12d42f6d0c0ec009f67e948 depends: @@ -3730,60 +3032,48 @@ packages: - liblapack 3.9.0 26_osxarm64_openblas - liblapacke 3.9.0 26_osxarm64_openblas - blas * openblas + arch: arm64 + platform: osx license: BSD-3-Clause license_family: BSD size: 16628 timestamp: 1734433061517 -- kind: conda - name: libcrc32c - version: 1.1.2 - build: h01db608_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libcrc32c-1.1.2-h01db608_0.tar.bz2 - sha256: b8b8c57a87da86b3ea24280fd6aa8efaf92f4e684b606bf2db5d3cb06ffbe2ea - md5: 268ee639c17ada0002fb04dd21816cc2 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcrc32c-1.1.2-h9c3ff4c_0.tar.bz2 + sha256: fd1d153962764433fe6233f34a72cdeed5dcf8a883a85769e8295ce940b5b0c5 + md5: c965a5aa0d5c1c37ffc62dff36e28400 depends: - libgcc-ng >=9.4.0 - libstdcxx-ng >=9.4.0 + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD - size: 18669 - timestamp: 1633683724891 -- kind: conda - name: libcrc32c - version: 1.1.2 - build: h9c3ff4c_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libcrc32c-1.1.2-h9c3ff4c_0.tar.bz2 - sha256: fd1d153962764433fe6233f34a72cdeed5dcf8a883a85769e8295ce940b5b0c5 - md5: c965a5aa0d5c1c37ffc62dff36e28400 + size: 20440 + timestamp: 1633683576494 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcrc32c-1.1.2-h01db608_0.tar.bz2 + sha256: b8b8c57a87da86b3ea24280fd6aa8efaf92f4e684b606bf2db5d3cb06ffbe2ea + md5: 268ee639c17ada0002fb04dd21816cc2 depends: - libgcc-ng >=9.4.0 - libstdcxx-ng >=9.4.0 + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD - size: 20440 - timestamp: 1633683576494 -- kind: conda - name: libcrc32c - version: 1.1.2 - build: hbdafb3b_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libcrc32c-1.1.2-hbdafb3b_0.tar.bz2 + size: 18669 + timestamp: 1633683724891 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcrc32c-1.1.2-hbdafb3b_0.tar.bz2 sha256: 58477b67cc719060b5b069ba57161e20ba69b8695d154a719cb4b60caf577929 md5: 32bd82a6a625ea6ce090a81c3d34edeb depends: - libcxx >=11.1.0 + arch: arm64 + platform: osx license: BSD-3-Clause license_family: BSD size: 18765 timestamp: 1633683992603 -- kind: conda - name: libcurl - version: 8.11.1 - build: h332b0f4_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.11.1-h332b0f4_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.11.1-h332b0f4_0.conda sha256: 3cd4075b2a7b5562e46c8ec626f6f9ca57aeecaa94ff7df57eca26daa94c9906 md5: 2b3e0081006dc21e8bf53a91c83a055c depends: @@ -3795,16 +3085,13 @@ packages: - libzlib >=1.3.1,<2.0a0 - openssl >=3.4.0,<4.0a0 - zstd >=1.5.6,<1.6.0a0 + arch: x86_64 + platform: linux license: curl license_family: MIT size: 423011 timestamp: 1733999897624 -- kind: conda - name: libcurl - version: 8.11.1 - build: h6702fde_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libcurl-8.11.1-h6702fde_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcurl-8.11.1-h6702fde_0.conda sha256: 9fc65d21a58f4aad1bc39dfb94a178893aeb035850c5cf0ed9736674279f390b md5: 7dec1cd271c403d1636bda5aa388a55d depends: @@ -3815,16 +3102,13 @@ packages: - libzlib >=1.3.1,<2.0a0 - openssl >=3.4.0,<4.0a0 - zstd >=1.5.6,<1.6.0a0 + arch: aarch64 + platform: linux license: curl license_family: MIT size: 440737 timestamp: 1733999835504 -- kind: conda - name: libcurl - version: 8.11.1 - build: h73640d1_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.11.1-h73640d1_0.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.11.1-h73640d1_0.conda sha256: f47c35938144c23278987c7d12096f6a42d7c850ffc277222b032073412383b6 md5: 46d7524cabfdd199bffe63f8f19a552b depends: @@ -3835,74 +3119,58 @@ packages: - libzlib >=1.3.1,<2.0a0 - openssl >=3.4.0,<4.0a0 - zstd >=1.5.6,<1.6.0a0 + arch: arm64 + platform: osx license: curl license_family: MIT size: 385098 timestamp: 1734000160270 -- kind: conda - name: libcxx - version: 19.1.6 - build: ha82da77_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.6-ha82da77_1.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.6-ha82da77_1.conda sha256: 2b2443404503cd862385fd2f2a2c73f9624686fd1e5a45050b4034cfc06904ec md5: ce5252d8db110cdb4ae4173d0a63c7c5 depends: - __osx >=11.0 + arch: arm64 + platform: osx license: Apache-2.0 WITH LLVM-exception license_family: Apache size: 520992 timestamp: 1734494699681 -- kind: conda - name: libdeflate - version: '1.23' - build: h4ddbbb0_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.23-h4ddbbb0_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.23-h4ddbbb0_0.conda sha256: 511d801626d02f4247a04fff957cc6e9ec4cc7e8622bd9acd076bcdc5de5fe66 md5: 8dfae1d2e74767e9ce36d5fa0d8605db depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 + arch: x86_64 + platform: linux license: MIT license_family: MIT size: 72255 timestamp: 1734373823254 -- kind: conda - name: libdeflate - version: '1.23' - build: h5e3c512_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libdeflate-1.23-h5e3c512_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libdeflate-1.23-h5e3c512_0.conda sha256: 959419d87cd2b789a9055db95704c614f31aeb70bef7949fa2f734122a3a2863 md5: 7e7ca2607b11b180120cefc2354fc0cb depends: - libgcc >=13 + arch: aarch64 + platform: linux license: MIT license_family: MIT size: 69862 timestamp: 1734373858306 -- kind: conda - name: libdeflate - version: '1.23' - build: hec38601_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.23-hec38601_0.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.23-hec38601_0.conda sha256: 887c02deaed6d583459eba6367023e36d8761085b2f7126e389424f57155da53 md5: 1d8b9588be14e71df38c525767a1ac30 depends: - __osx >=11.0 + arch: arm64 + platform: osx license: MIT license_family: MIT size: 54132 timestamp: 1734373971372 -- kind: conda - name: libedit - version: 3.1.20240808 - build: pl5321h7949ede_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20240808-pl5321h7949ede_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20240808-pl5321h7949ede_0.conda sha256: 4d0d69ddf9cc7d724a1ccf3a9852e44c8aea9825692582bac2c4e8d21ec95ccd md5: 8247f80f3dc464d9322e85007e307fe8 depends: @@ -3910,154 +3178,105 @@ packages: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - ncurses >=6.5,<7.0a0 + arch: x86_64 + platform: linux license: BSD-2-Clause license_family: BSD size: 134657 timestamp: 1736191912705 -- kind: conda - name: libedit - version: 3.1.20240808 - build: pl5321h976ea20_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20240808-pl5321h976ea20_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20240808-pl5321h976ea20_0.conda sha256: 031daea98cf278f858b7957ad5dc475f1b5673cd5e718850529401ced64cef2c md5: 0be40129d3dd1a152fff29a85f0785d0 depends: - ncurses - libgcc >=13 - ncurses >=6.5,<7.0a0 + arch: aarch64 + platform: linux license: BSD-2-Clause license_family: BSD size: 148120 timestamp: 1736192137151 -- kind: conda - name: libedit - version: 3.1.20240808 - build: pl5321hafb1f1b_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20240808-pl5321hafb1f1b_0.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20240808-pl5321hafb1f1b_0.conda sha256: fb934d7a03279ec8eae4bf1913ac9058fcf6fed35290d8ffa6e04157f396a3b1 md5: af89aa84ffb5ee551ce0c137b951a3b5 depends: - ncurses - __osx >=11.0 - ncurses >=6.5,<7.0a0 + arch: arm64 + platform: osx license: BSD-2-Clause license_family: BSD size: 107634 timestamp: 1736192034117 -- kind: conda - name: libev - version: '4.33' - build: h31becfc_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libev-4.33-h31becfc_2.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda + sha256: 1cd6048169fa0395af74ed5d8f1716e22c19a81a8a36f934c110ca3ad4dd27b4 + md5: 172bf1cd1ff8629f2b1179945ed45055 + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + size: 112766 + timestamp: 1702146165126 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libev-4.33-h31becfc_2.conda sha256: 973af77e297f1955dd1f69c2cbdc5ab9dfc88388a5576cd152cda178af0fd006 md5: a9a13cb143bbaa477b1ebaefbe47a302 depends: - libgcc-ng >=12 + arch: aarch64 + platform: linux license: BSD-2-Clause license_family: BSD size: 115123 timestamp: 1702146237623 -- kind: conda - name: libev - version: '4.33' - build: h93a5062_2 - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libev-4.33-h93a5062_2.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libev-4.33-h93a5062_2.conda sha256: 95cecb3902fbe0399c3a7e67a5bed1db813e5ab0e22f4023a5e0f722f2cc214f md5: 36d33e440c31857372a72137f78bacf5 + arch: arm64 + platform: osx license: BSD-2-Clause license_family: BSD size: 107458 timestamp: 1702146414478 -- kind: conda - name: libev - version: '4.33' - build: hd590300_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda - sha256: 1cd6048169fa0395af74ed5d8f1716e22c19a81a8a36f934c110ca3ad4dd27b4 - md5: 172bf1cd1ff8629f2b1179945ed45055 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libevent-2.1.12-hf998b51_1.conda + sha256: 2e14399d81fb348e9d231a82ca4d816bf855206923759b69ad006ba482764131 + md5: a1cfcc585f0c42bf8d5546bb1dfb668d depends: - libgcc-ng >=12 - license: BSD-2-Clause - license_family: BSD - size: 112766 - timestamp: 1702146165126 -- kind: conda - name: libevent - version: 2.1.12 - build: h2757513_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libevent-2.1.12-h2757513_1.conda - sha256: 8c136d7586259bb5c0d2b913aaadc5b9737787ae4f40e3ad1beaf96c80b919b7 - md5: 1a109764bff3bdc7bdd84088347d71dc - depends: - openssl >=3.1.1,<4.0a0 + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD - size: 368167 - timestamp: 1685726248899 -- kind: conda - name: libevent - version: 2.1.12 - build: h4ba1bb4_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libevent-2.1.12-h4ba1bb4_1.conda + size: 427426 + timestamp: 1685725977222 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libevent-2.1.12-h4ba1bb4_1.conda sha256: 01333cc7d6e6985dd5700b43660d90e9e58049182017fd24862088ecbe1458e4 md5: 96ae6083cd1ac9f6bc81631ac835b317 depends: - libgcc-ng >=12 - openssl >=3.1.1,<4.0a0 + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD size: 438992 timestamp: 1685726046519 -- kind: conda - name: libevent - version: 2.1.12 - build: hf998b51_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libevent-2.1.12-hf998b51_1.conda - sha256: 2e14399d81fb348e9d231a82ca4d816bf855206923759b69ad006ba482764131 - md5: a1cfcc585f0c42bf8d5546bb1dfb668d +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libevent-2.1.12-h2757513_1.conda + sha256: 8c136d7586259bb5c0d2b913aaadc5b9737787ae4f40e3ad1beaf96c80b919b7 + md5: 1a109764bff3bdc7bdd84088347d71dc depends: - - libgcc-ng >=12 - openssl >=3.1.1,<4.0a0 + arch: arm64 + platform: osx license: BSD-3-Clause license_family: BSD - size: 427426 - timestamp: 1685725977222 -- kind: conda - name: libexpat - version: 2.6.4 - build: h286801f_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.4-h286801f_0.conda - sha256: e42ab5ace927ee7c84e3f0f7d813671e1cf3529f5f06ee5899606630498c2745 - md5: 38d2656dd914feb0cab8c629370768bf - depends: - - __osx >=11.0 - constrains: - - expat 2.6.4.* - license: MIT - license_family: MIT - size: 64693 - timestamp: 1730967175868 -- kind: conda - name: libexpat - version: 2.6.4 - build: h5888daf_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda + size: 368167 + timestamp: 1685726248899 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda sha256: 56541b98447b58e52d824bd59d6382d609e11de1f8adf20b23143e353d2b8d26 md5: db833e03127376d461e1e13e76f09b6c depends: @@ -4065,76 +3284,70 @@ packages: - libgcc >=13 constrains: - expat 2.6.4.* + arch: x86_64 + platform: linux license: MIT license_family: MIT size: 73304 timestamp: 1730967041968 -- kind: conda - name: libexpat - version: 2.6.4 - build: h5ad3122_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.6.4-h5ad3122_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.6.4-h5ad3122_0.conda sha256: f42e758009ba9db90d1fe7992bc3e60d0c52f71fb20923375d2c44ae69a5a2b3 md5: f1b3fab36861b3ce945a13f0dfdfc688 depends: - libgcc >=13 constrains: - expat 2.6.4.* + arch: aarch64 + platform: linux license: MIT license_family: MIT size: 72345 timestamp: 1730967203789 -- kind: conda - name: libffi - version: 3.4.2 - build: h3422bc3_5 - build_number: 5 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 - sha256: 41b3d13efb775e340e4dba549ab5c029611ea6918703096b2eaa9c015c0750ca - md5: 086914b672be056eb70fd4285b6783b6 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.4-h286801f_0.conda + sha256: e42ab5ace927ee7c84e3f0f7d813671e1cf3529f5f06ee5899606630498c2745 + md5: 38d2656dd914feb0cab8c629370768bf + depends: + - __osx >=11.0 + constrains: + - expat 2.6.4.* + arch: arm64 + platform: osx license: MIT license_family: MIT - size: 39020 - timestamp: 1636488587153 -- kind: conda - name: libffi - version: 3.4.2 - build: h3557bc0_5 - build_number: 5 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.4.2-h3557bc0_5.tar.bz2 + size: 64693 + timestamp: 1730967175868 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.2-h7f98852_5.tar.bz2 + sha256: ab6e9856c21709b7b517e940ae7028ae0737546122f83c2aa5d692860c3b149e + md5: d645c6d2ac96843a2bfaccd2d62b3ac3 + depends: + - libgcc-ng >=9.4.0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 58292 + timestamp: 1636488182923 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.4.2-h3557bc0_5.tar.bz2 sha256: 7e9258a102480757fe3faeb225a3ca04dffd10fecd2a958c65cdb4cdf75f2c3c md5: dddd85f4d52121fab0a8b099c5e06501 depends: - libgcc-ng >=9.4.0 + arch: aarch64 + platform: linux license: MIT license_family: MIT size: 59450 timestamp: 1636488255090 -- kind: conda - name: libffi - version: 3.4.2 - build: h7f98852_5 - build_number: 5 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.2-h7f98852_5.tar.bz2 - sha256: ab6e9856c21709b7b517e940ae7028ae0737546122f83c2aa5d692860c3b149e - md5: d645c6d2ac96843a2bfaccd2d62b3ac3 - depends: - - libgcc-ng >=9.4.0 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 + sha256: 41b3d13efb775e340e4dba549ab5c029611ea6918703096b2eaa9c015c0750ca + md5: 086914b672be056eb70fd4285b6783b6 + arch: arm64 + platform: osx license: MIT license_family: MIT - size: 58292 - timestamp: 1636488182923 -- kind: conda - name: libgcc - version: 14.2.0 - build: h77fa898_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h77fa898_1.conda + size: 39020 + timestamp: 1636488587153 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h77fa898_1.conda sha256: 53eb8a79365e58849e7b1a068d31f4f9e718dc938d6f2c03e960345739a03569 md5: 3cb76c3f10d3bc7f1105b2fc9db984df depends: @@ -4143,17 +3356,13 @@ packages: constrains: - libgomp 14.2.0 h77fa898_1 - libgcc-ng ==14.2.0=*_1 + arch: x86_64 + platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL size: 848745 timestamp: 1729027721139 -- kind: conda - name: libgcc - version: 14.2.0 - build: he277a41_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-14.2.0-he277a41_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-14.2.0-he277a41_1.conda sha256: 5d56757ccad208c79214395b00d006d8d18929a4ba49c47bd9460789a7620943 md5: 511b511c5445e324066c3377481bcab8 depends: @@ -4161,175 +3370,131 @@ packages: constrains: - libgcc-ng ==14.2.0=*_1 - libgomp 14.2.0 he277a41_1 + arch: aarch64 + platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL size: 535243 timestamp: 1729089435134 -- kind: conda - name: libgcc-ng - version: 14.2.0 - build: h69a702a_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_1.conda sha256: 3a76969c80e9af8b6e7a55090088bc41da4cffcde9e2c71b17f44d37b7cb87f7 md5: e39480b9ca41323497b05492a63bc35b depends: - libgcc 14.2.0 h77fa898_1 + arch: x86_64 + platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL size: 54142 timestamp: 1729027726517 -- kind: conda - name: libgcc-ng - version: 14.2.0 - build: he9431aa_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-14.2.0-he9431aa_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-14.2.0-he9431aa_1.conda sha256: 9b5cf168a6c7361cae869cb74b716766ee7c6d6b3f6172b32ba9bf91135efdc4 md5: 0694c249c61469f2c0f7e2990782af21 depends: - libgcc 14.2.0 he277a41_1 + arch: aarch64 + platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL size: 54104 timestamp: 1729089444587 -- kind: conda - name: libgfortran - version: 5.0.0 - build: 13_2_0_hd922786_3 - build_number: 3 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda - sha256: 44e541b4821c96b28b27fef5630883a60ce4fee91fd9c79f25a199f8f73f337b - md5: 4a55d9e169114b2b90d3ec4604cd7bbf - depends: - - libgfortran5 13.2.0 hf226fd6_3 - license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - size: 110233 - timestamp: 1707330749033 -- kind: conda - name: libgfortran - version: 14.2.0 - build: h69a702a_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_1.conda sha256: fc9e7f22a17faf74da904ebfc4d88699013d2992e55505e4aa0eb01770290977 md5: f1fd30127802683586f768875127a987 depends: - libgfortran5 14.2.0 hd5240d6_1 constrains: - libgfortran-ng ==14.2.0=*_1 + arch: x86_64 + platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL size: 53997 timestamp: 1729027752995 -- kind: conda - name: libgfortran - version: 14.2.0 - build: he9431aa_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_1.conda sha256: cb66e411fa32a5c6040f4e5e2a63c00897aae4c3133a9c004c2e929ccf19575b md5: 0294b92d2f47a240bebb1e3336b495f1 depends: - libgfortran5 14.2.0 hb6113d0_1 constrains: - libgfortran-ng ==14.2.0=*_1 + arch: aarch64 + platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL size: 54105 timestamp: 1729089471124 -- kind: conda - name: libgfortran5 - version: 13.2.0 - build: hf226fd6_3 - build_number: 3 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda - sha256: bafc679eedb468a86aa4636061c55966186399ee0a04b605920d208d97ac579a - md5: 66ac81d54e95c534ae488726c1f698ea +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda + sha256: 44e541b4821c96b28b27fef5630883a60ce4fee91fd9c79f25a199f8f73f337b + md5: 4a55d9e169114b2b90d3ec4604cd7bbf depends: - - llvm-openmp >=8.0.0 + - libgfortran5 13.2.0 hf226fd6_3 + arch: arm64 + platform: osx + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 110233 + timestamp: 1707330749033 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hd5240d6_1.conda + sha256: d149a37ca73611e425041f33b9d8dbed6e52ec506fe8cc1fc0ee054bddeb6d5d + md5: 9822b874ea29af082e5d36098d25427d + depends: + - libgcc >=14.2.0 constrains: - - libgfortran 5.0.0 13_2_0_*_3 + - libgfortran 14.2.0 + arch: x86_64 + platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 997381 - timestamp: 1707330687590 -- kind: conda - name: libgfortran5 - version: 14.2.0 - build: hb6113d0_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_1.conda + size: 1462645 + timestamp: 1729027735353 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_1.conda sha256: a87ff46d19916403cbf68cf1d785bf56b4d1ab7b2552468d2ea775d70782493f md5: fc068e11b10e18f184e027782baa12b6 depends: - libgcc >=14.2.0 constrains: - libgfortran 14.2.0 + arch: aarch64 + platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL size: 1102158 timestamp: 1729089452640 -- kind: conda - name: libgfortran5 - version: 14.2.0 - build: hd5240d6_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hd5240d6_1.conda - sha256: d149a37ca73611e425041f33b9d8dbed6e52ec506fe8cc1fc0ee054bddeb6d5d - md5: 9822b874ea29af082e5d36098d25427d +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda + sha256: bafc679eedb468a86aa4636061c55966186399ee0a04b605920d208d97ac579a + md5: 66ac81d54e95c534ae488726c1f698ea depends: - - libgcc >=14.2.0 + - llvm-openmp >=8.0.0 constrains: - - libgfortran 14.2.0 + - libgfortran 5.0.0 13_2_0_*_3 + arch: arm64 + platform: osx license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 1462645 - timestamp: 1729027735353 -- kind: conda - name: libgomp - version: 14.2.0 - build: h77fa898_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h77fa898_1.conda + size: 997381 + timestamp: 1707330687590 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h77fa898_1.conda sha256: 1911c29975ec99b6b906904040c855772ccb265a1c79d5d75c8ceec4ed89cd63 md5: cc3573974587f12dda90d96e3e55a702 depends: - _libgcc_mutex 0.1 conda_forge + arch: x86_64 + platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL size: 460992 timestamp: 1729027639220 -- kind: conda - name: libgomp - version: 14.2.0 - build: he277a41_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_1.conda sha256: 5aa53874a5e57a00f2e0c2e2910684eb674429cd5fcb803619b226a73e89aedf md5: 376f0e73abbda6d23c0cb749adc195ef + arch: aarch64 + platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL size: 463521 timestamp: 1729089357313 -- kind: conda - name: libgoogle-cloud - version: 2.33.0 - build: h2b5623c_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.33.0-h2b5623c_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.33.0-h2b5623c_1.conda sha256: ae48ee93e2c226bf682f1e389c2fd51ae7bf77c2ce4b3aee069764f4be1c63f2 md5: 61829a8dd5f4e2327e707572065bae41 depends: @@ -4344,17 +3509,13 @@ packages: - openssl >=3.4.0,<4.0a0 constrains: - libgoogle-cloud 2.33.0 *_1 + arch: x86_64 + platform: linux license: Apache-2.0 license_family: Apache size: 1254656 timestamp: 1735648569457 -- kind: conda - name: libgoogle-cloud - version: 2.33.0 - build: hccf9d24_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-2.33.0-hccf9d24_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-2.33.0-hccf9d24_1.conda sha256: d3d4def86d880431928799ba90ca97e57c2f05677c03af8de2337502926c492c md5: a2724014eb04f14bd71d35f45b062dd0 depends: @@ -4368,17 +3529,13 @@ packages: - openssl >=3.4.0,<4.0a0 constrains: - libgoogle-cloud 2.33.0 *_1 + arch: aarch64 + platform: linux license: Apache-2.0 license_family: Apache size: 1253019 timestamp: 1735649566849 -- kind: conda - name: libgoogle-cloud - version: 2.33.0 - build: hdbe95d5_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-2.33.0-hdbe95d5_1.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-2.33.0-hdbe95d5_1.conda sha256: ce95aca02451694a4154c7770b6addf4fb859abf17912de6ec947da8469a56ce md5: 91de1fbab8610974c0094c266bc63435 depends: @@ -4392,17 +3549,13 @@ packages: - openssl >=3.4.0,<4.0a0 constrains: - libgoogle-cloud 2.33.0 *_1 + arch: arm64 + platform: osx license: Apache-2.0 license_family: Apache size: 877594 timestamp: 1735648230965 -- kind: conda - name: libgoogle-cloud-storage - version: 2.33.0 - build: h0121fbd_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.33.0-h0121fbd_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.33.0-h0121fbd_1.conda sha256: 41022523320ca8633a6c615710823e596efadb50f06d724e1a0c81e27994f257 md5: b0cfb5044685a7a9fa43ae669124f0a0 depends: @@ -4415,39 +3568,13 @@ packages: - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - openssl + arch: x86_64 + platform: linux license: Apache-2.0 license_family: Apache size: 784357 timestamp: 1735648759177 -- kind: conda - name: libgoogle-cloud-storage - version: 2.33.0 - build: h7081f7f_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-storage-2.33.0-h7081f7f_1.conda - sha256: c0524a22064bc17f5c037da09ba54cc9e767741ef645178e499750c44bec2531 - md5: af8e51382464d4cc2d0054977c40a732 - depends: - - __osx >=11.0 - - libabseil - - libcrc32c >=1.1.2,<1.2.0a0 - - libcurl - - libcxx >=18 - - libgoogle-cloud 2.33.0 hdbe95d5_1 - - libzlib >=1.3.1,<2.0a0 - - openssl - license: Apache-2.0 - license_family: Apache - size: 526963 - timestamp: 1735649222088 -- kind: conda - name: libgoogle-cloud-storage - version: 2.33.0 - build: hb9b2b65_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-storage-2.33.0-hb9b2b65_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-storage-2.33.0-hb9b2b65_1.conda sha256: 5eda1cbba68709b91b370b3792c9cfd7bec4ac4e2262f0887d12e1f000ae1191 md5: 45df2267ff4d8ce532e8d300ce0b0829 depends: @@ -4459,43 +3586,31 @@ packages: - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - openssl + arch: aarch64 + platform: linux license: Apache-2.0 license_family: Apache size: 737518 timestamp: 1735649773462 -- kind: conda - name: libgrpc - version: 1.67.1 - build: h0a426d6_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libgrpc-1.67.1-h0a426d6_1.conda - sha256: 630edf63981818ff590367cb95fddbed0f5a390464d0952c90ec81de899e84a6 - md5: 8a3cba079d6ac985e7d73c76a678fbb4 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-storage-2.33.0-h7081f7f_1.conda + sha256: c0524a22064bc17f5c037da09ba54cc9e767741ef645178e499750c44bec2531 + md5: af8e51382464d4cc2d0054977c40a732 depends: - __osx >=11.0 - - c-ares >=1.34.4,<2.0a0 - - libabseil * cxx17* - - libabseil >=20240722.0,<20240723.0a0 + - libabseil + - libcrc32c >=1.1.2,<1.2.0a0 + - libcurl - libcxx >=18 - - libprotobuf >=5.28.3,<5.28.4.0a0 - - libre2-11 >=2024.7.2 + - libgoogle-cloud 2.33.0 hdbe95d5_1 - libzlib >=1.3.1,<2.0a0 - - openssl >=3.4.0,<4.0a0 - - re2 - constrains: - - grpc-cpp =1.67.1 + - openssl + arch: arm64 + platform: osx license: Apache-2.0 - license_family: APACHE - size: 5311706 - timestamp: 1735585137716 -- kind: conda - name: libgrpc - version: 1.67.1 - build: h25350d4_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.67.1-h25350d4_1.conda + license_family: Apache + size: 526963 + timestamp: 1735649222088 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.67.1-h25350d4_1.conda sha256: 014627485b3cf0ea18e04c0bab07be7fb98722a3aeeb58477acc7e1c3d2f911e md5: 0c6497a760b99a926c7c12b74951a39c depends: @@ -4512,17 +3627,13 @@ packages: - re2 constrains: - grpc-cpp =1.67.1 + arch: x86_64 + platform: linux license: Apache-2.0 license_family: APACHE size: 7792251 timestamp: 1735584856826 -- kind: conda - name: libgrpc - version: 1.67.1 - build: hf7ccdd3_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libgrpc-1.67.1-hf7ccdd3_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgrpc-1.67.1-hf7ccdd3_1.conda sha256: 3fa173dc1d7456aac2b26937daae86a08432a31640e3d6569c62edc661fc9bbe md5: 8fb41a425bebaeb3d0fa568503612e64 depends: @@ -4538,103 +3649,98 @@ packages: - re2 constrains: - grpc-cpp =1.67.1 + arch: aarch64 + platform: linux license: Apache-2.0 license_family: APACHE size: 7430006 timestamp: 1735585769731 -- kind: conda - name: libiconv - version: '1.17' - build: h0d3ecfb_2 - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.17-h0d3ecfb_2.conda - sha256: bc7de5097b97bcafcf7deaaed505f7ce02f648aac8eccc0d5a47cc599a1d0304 - md5: 69bda57310071cf6d2b86caf11573d2d - license: LGPL-2.1-only - size: 676469 - timestamp: 1702682458114 -- kind: conda - name: libiconv - version: '1.17' - build: h31becfc_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libiconv-1.17-h31becfc_2.conda - sha256: a30e09d089cb75a0d5b8e5c354694c1317da98261185ed65aa3793e741060614 - md5: 9a8eb13f14de7d761555a98712e6df65 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgrpc-1.67.1-h0a426d6_1.conda + sha256: 630edf63981818ff590367cb95fddbed0f5a390464d0952c90ec81de899e84a6 + md5: 8a3cba079d6ac985e7d73c76a678fbb4 depends: - - libgcc-ng >=12 - license: LGPL-2.1-only - size: 705787 - timestamp: 1702684557134 -- kind: conda - name: libiconv - version: '1.17' - build: hd590300_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-hd590300_2.conda + - __osx >=11.0 + - c-ares >=1.34.4,<2.0a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libre2-11 >=2024.7.2 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + - re2 + constrains: + - grpc-cpp =1.67.1 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + size: 5311706 + timestamp: 1735585137716 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-hd590300_2.conda sha256: 8ac2f6a9f186e76539439e50505d98581472fedb347a20e7d1f36429849f05c9 md5: d66573916ffcf376178462f1b61c941e depends: - libgcc-ng >=12 + arch: x86_64 + platform: linux license: LGPL-2.1-only size: 705775 timestamp: 1702682170569 -- kind: conda - name: libjpeg-turbo - version: 3.0.0 - build: h31becfc_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libjpeg-turbo-3.0.0-h31becfc_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libiconv-1.17-h31becfc_2.conda + sha256: a30e09d089cb75a0d5b8e5c354694c1317da98261185ed65aa3793e741060614 + md5: 9a8eb13f14de7d761555a98712e6df65 + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: LGPL-2.1-only + size: 705787 + timestamp: 1702684557134 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.17-h0d3ecfb_2.conda + sha256: bc7de5097b97bcafcf7deaaed505f7ce02f648aac8eccc0d5a47cc599a1d0304 + md5: 69bda57310071cf6d2b86caf11573d2d + arch: arm64 + platform: osx + license: LGPL-2.1-only + size: 676469 + timestamp: 1702682458114 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda + sha256: b954e09b7e49c2f2433d6f3bb73868eda5e378278b0f8c1dd10a7ef090e14f2f + md5: ea25936bb4080d843790b586850f82b8 + depends: + - libgcc-ng >=12 + constrains: + - jpeg <0.0.0a + arch: x86_64 + platform: linux + license: IJG AND BSD-3-Clause AND Zlib + size: 618575 + timestamp: 1694474974816 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libjpeg-turbo-3.0.0-h31becfc_1.conda sha256: 675bc1f2a8581cd34a86c412663ec29c5f90c1d9f8d11866aa1ade5cdbdf8429 md5: ed24e702928be089d9ba3f05618515c6 depends: - libgcc-ng >=12 constrains: - jpeg <0.0.0a + arch: aarch64 + platform: linux license: IJG AND BSD-3-Clause AND Zlib size: 647126 timestamp: 1694475003570 -- kind: conda - name: libjpeg-turbo - version: 3.0.0 - build: hb547adb_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.0.0-hb547adb_1.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.0.0-hb547adb_1.conda sha256: a42054eaa38e84fc1e5ab443facac4bbc9d1b6b6f23f54b7bf4f1eb687e1d993 md5: 3ff1e053dc3a2b8e36b9bfa4256a58d1 constrains: - jpeg <0.0.0a + arch: arm64 + platform: osx license: IJG AND BSD-3-Clause AND Zlib size: 547541 timestamp: 1694475104253 -- kind: conda - name: libjpeg-turbo - version: 3.0.0 - build: hd590300_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda - sha256: b954e09b7e49c2f2433d6f3bb73868eda5e378278b0f8c1dd10a7ef090e14f2f - md5: ea25936bb4080d843790b586850f82b8 - depends: - - libgcc-ng >=12 - constrains: - - jpeg <0.0.0a - license: IJG AND BSD-3-Clause AND Zlib - size: 618575 - timestamp: 1694474974816 -- kind: conda - name: liblapack - version: 3.9.0 - build: 26_linux64_openblas +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-26_linux64_openblas.conda build_number: 26 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-26_linux64_openblas.conda sha256: b76458c36331376911e0f98fa68109e02f4d5e5ebfffa79587ac69cef748bba1 md5: 3792604c43695d6a273bc5faaac47d48 depends: @@ -4643,17 +3749,14 @@ packages: - libcblas 3.9.0 26_linux64_openblas - liblapacke 3.9.0 26_linux64_openblas - blas * openblas + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD size: 16338 timestamp: 1734432576650 -- kind: conda - name: liblapack - version: 3.9.0 - build: 26_linuxaarch64_openblas +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-26_linuxaarch64_openblas.conda build_number: 26 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-26_linuxaarch64_openblas.conda sha256: a42bd01498efe2ccf6d08d56ac3cbd3ceab79e06699ff5aac3da8e45a66738f7 md5: a5d4e18876393633da62fd8492c00156 depends: @@ -4662,17 +3765,14 @@ packages: - blas * openblas - liblapacke 3.9.0 26_linuxaarch64_openblas - libcblas 3.9.0 26_linuxaarch64_openblas + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD size: 16403 timestamp: 1734432585123 -- kind: conda - name: liblapack - version: 3.9.0 - build: 26_osxarm64_openblas +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-26_osxarm64_openblas.conda build_number: 26 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-26_osxarm64_openblas.conda sha256: dd6d9a21e672aee4332f019c8229ce70cf5eaf6c2f4cbd1443b105fb66c00dc5 md5: cebad79038a75cfd28fa90d147a2d34d depends: @@ -4681,59 +3781,44 @@ packages: - liblapacke 3.9.0 26_osxarm64_openblas - libcblas 3.9.0 26_osxarm64_openblas - blas * openblas + arch: arm64 + platform: osx license: BSD-3-Clause license_family: BSD size: 16624 timestamp: 1734433068120 -- kind: conda - name: liblzma - version: 5.6.3 - build: h39f12f2_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.3-h39f12f2_1.conda - sha256: d863b8257406918ffdc50ae65502f2b2d6cede29404d09a094f59509d6a0aaf1 - md5: b2553114a7f5e20ccd02378a77d836aa +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.3-hb9d3cd8_1.conda + sha256: e6e425252f3839e2756e4af1ea2074dffd3396c161bf460629f9dfd6a65f15c6 + md5: 2ecf2f1c7e4e21fcfe6423a51a992d84 depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux license: 0BSD - size: 99129 - timestamp: 1733407496073 -- kind: conda - name: liblzma - version: 5.6.3 - build: h86ecc28_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.3-h86ecc28_1.conda + size: 111132 + timestamp: 1733407410083 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.3-h86ecc28_1.conda sha256: d1cce0b7d62d1e54e2164d3e0667ee808efc6c3870256e5b47a150cd0bf46824 md5: eb08b903681f9f2432c320e8ed626723 depends: - libgcc >=13 + arch: aarch64 + platform: linux license: 0BSD size: 124138 timestamp: 1733409137214 -- kind: conda - name: liblzma - version: 5.6.3 - build: hb9d3cd8_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.3-hb9d3cd8_1.conda - sha256: e6e425252f3839e2756e4af1ea2074dffd3396c161bf460629f9dfd6a65f15c6 - md5: 2ecf2f1c7e4e21fcfe6423a51a992d84 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.3-h39f12f2_1.conda + sha256: d863b8257406918ffdc50ae65502f2b2d6cede29404d09a094f59509d6a0aaf1 + md5: b2553114a7f5e20ccd02378a77d836aa depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 + - __osx >=11.0 + arch: arm64 + platform: osx license: 0BSD - size: 111132 - timestamp: 1733407410083 -- kind: conda - name: libnghttp2 - version: 1.64.0 - build: h161d5f1_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda + size: 99129 + timestamp: 1733407496073 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda sha256: b0f2b3695b13a989f75d8fd7f4778e1c7aabe3b36db83f0fe80b2cd812c0e975 md5: 19e57602824042dfd0446292ef90488b depends: @@ -4745,36 +3830,13 @@ packages: - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - openssl >=3.3.2,<4.0a0 + arch: x86_64 + platform: linux license: MIT license_family: MIT size: 647599 timestamp: 1729571887612 -- kind: conda - name: libnghttp2 - version: 1.64.0 - build: h6d7220d_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.64.0-h6d7220d_0.conda - sha256: 00cc685824f39f51be5233b54e19f45abd60de5d8847f1a56906f8936648b72f - md5: 3408c02539cee5f1141f9f11450b6a51 - depends: - - __osx >=11.0 - - c-ares >=1.34.2,<2.0a0 - - libcxx >=17 - - libev >=4.33,<4.34.0a0 - - libev >=4.33,<5.0a0 - - libzlib >=1.3.1,<2.0a0 - - openssl >=3.3.2,<4.0a0 - license: MIT - license_family: MIT - size: 566719 - timestamp: 1729572385640 -- kind: conda - name: libnghttp2 - version: 1.64.0 - build: hc8609a4_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libnghttp2-1.64.0-hc8609a4_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnghttp2-1.64.0-hc8609a4_0.conda sha256: c093c6d370aadbf0409c20b6c54c488ee2f6fea976181919fcc63e87ee232673 md5: f52c614fa214a8bedece9421c771670d depends: @@ -4785,65 +3847,52 @@ packages: - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - openssl >=3.3.2,<4.0a0 + arch: aarch64 + platform: linux license: MIT license_family: MIT size: 714610 timestamp: 1729571912479 -- kind: conda - name: libnsl - version: 2.0.1 - build: h31becfc_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda - sha256: fd18c2b75d7411096428d36a70b36b1a17e31f7b8956b6905d145792d49e97f8 - md5: c14f32510f694e3185704d89967ec422 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.64.0-h6d7220d_0.conda + sha256: 00cc685824f39f51be5233b54e19f45abd60de5d8847f1a56906f8936648b72f + md5: 3408c02539cee5f1141f9f11450b6a51 depends: - - libgcc-ng >=12 - license: LGPL-2.1-only - license_family: GPL - size: 34501 - timestamp: 1697358973269 -- kind: conda - name: libnsl - version: 2.0.1 - build: hd590300_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda + - __osx >=11.0 + - c-ares >=1.34.2,<2.0a0 + - libcxx >=17 + - libev >=4.33,<4.34.0a0 + - libev >=4.33,<5.0a0 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.3.2,<4.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 566719 + timestamp: 1729572385640 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda sha256: 26d77a3bb4dceeedc2a41bd688564fe71bf2d149fdcf117049970bc02ff1add6 md5: 30fd6e37fe21f86f4bd26d6ee73eeec7 depends: - libgcc-ng >=12 + arch: x86_64 + platform: linux license: LGPL-2.1-only license_family: GPL size: 33408 timestamp: 1697359010159 -- kind: conda - name: libopenblas - version: 0.3.28 - build: openmp_hf332438_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.28-openmp_hf332438_1.conda - sha256: 62bb669c37a845129096f73d446cdb6bb170e4927f2fea2b661329680dbbc373 - md5: 40803a48d947c8639da6704e9a44d3ce +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda + sha256: fd18c2b75d7411096428d36a70b36b1a17e31f7b8956b6905d145792d49e97f8 + md5: c14f32510f694e3185704d89967ec422 depends: - - __osx >=11.0 - - libgfortran 5.* - - libgfortran5 >=13.2.0 - - llvm-openmp >=18.1.8 - constrains: - - openblas >=0.3.28,<0.3.29.0a0 - license: BSD-3-Clause - license_family: BSD - size: 4165774 - timestamp: 1730772154295 -- kind: conda - name: libopenblas - version: 0.3.28 - build: pthreads_h94d23a6_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.28-pthreads_h94d23a6_1.conda + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: LGPL-2.1-only + license_family: GPL + size: 34501 + timestamp: 1697358973269 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.28-pthreads_h94d23a6_1.conda sha256: 99ba271d8a80a1af2723f2e124ffd91d850074c0389c067e6d96d72a2dbfeabe md5: 62857b389e42b36b686331bec0922050 depends: @@ -4853,17 +3902,13 @@ packages: - libgfortran5 >=14.2.0 constrains: - openblas >=0.3.28,<0.3.29.0a0 + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD size: 5578513 timestamp: 1730772671118 -- kind: conda - name: libopenblas - version: 0.3.28 - build: pthreads_h9d3fd7e_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.28-pthreads_h9d3fd7e_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.28-pthreads_h9d3fd7e_1.conda sha256: 30623a40764e935aa77e0d4db54c1a1589189a9bf3a03fdb445505c1e319b5a6 md5: e8dde93dd199da3c1f2c1fcfd0042cd4 depends: @@ -4872,17 +3917,30 @@ packages: - libgfortran5 >=14.2.0 constrains: - openblas >=0.3.28,<0.3.29.0a0 + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD size: 4793435 timestamp: 1730773029647 -- kind: conda - name: libparquet - version: 18.1.0 - build: h081d1f1_7_cpu +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.28-openmp_hf332438_1.conda + sha256: 62bb669c37a845129096f73d446cdb6bb170e4927f2fea2b661329680dbbc373 + md5: 40803a48d947c8639da6704e9a44d3ce + depends: + - __osx >=11.0 + - libgfortran 5.* + - libgfortran5 >=13.2.0 + - llvm-openmp >=18.1.8 + constrains: + - openblas >=0.3.28,<0.3.29.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 4165774 + timestamp: 1730772154295 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-h081d1f1_7_cpu.conda build_number: 7 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-h081d1f1_7_cpu.conda sha256: 55945b761130f60abdecf1551907ecfd05cb4a5958cf74d855b30c005ecb3592 md5: b97013ef4e1dd2cf11594f06d5b5e83a depends: @@ -4892,36 +3950,14 @@ packages: - libstdcxx >=13 - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 + arch: x86_64 + platform: linux license: Apache-2.0 license_family: APACHE size: 1205598 timestamp: 1735684849150 -- kind: conda - name: libparquet - version: 18.1.0 - build: h636d7b7_7_cpu - build_number: 7 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-h636d7b7_7_cpu.conda - sha256: bf42e43542a90edd86ba5aa5fd4543671625f1bc35f62be32688f00e18bae990 - md5: 93de9ba66a20db32a2646d313794b3a8 - depends: - - __osx >=11.0 - - libarrow 18.1.0 h0ad35bc_7_cpu - - libcxx >=18 - - libthrift >=0.21.0,<0.21.1.0a0 - - openssl >=3.4.0,<4.0a0 - license: Apache-2.0 - license_family: APACHE - size: 873251 - timestamp: 1735684582558 -- kind: conda - name: libparquet - version: 18.1.0 - build: hfc78867_7_cpu +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-hfc78867_7_cpu.conda build_number: 7 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-hfc78867_7_cpu.conda sha256: 6dff9bbe731dc2cefe96bd9c7981d2cbef2b564a3152840a29c9b6a493ea50d9 md5: 184bec7a9392ab6ba8134041e81971d6 depends: @@ -4930,79 +3966,79 @@ packages: - libstdcxx >=13 - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 + arch: aarch64 + platform: linux license: Apache-2.0 license_family: APACHE size: 1117825 timestamp: 1735685495511 -- kind: conda - name: libpng - version: 1.6.45 - build: h3783ad8_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.45-h3783ad8_0.conda - sha256: ddcc81c049b32fb5eb3ac1f9a6d3a589c08325c8ec6f89eb912208b19330d68c - md5: d554c806d065b1763cb9e1cb1d25741d +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-h636d7b7_7_cpu.conda + build_number: 7 + sha256: bf42e43542a90edd86ba5aa5fd4543671625f1bc35f62be32688f00e18bae990 + md5: 93de9ba66a20db32a2646d313794b3a8 depends: - __osx >=11.0 - - libzlib >=1.3.1,<2.0a0 - license: zlib-acknowledgement - size: 263151 - timestamp: 1736339184358 -- kind: conda - name: libpng - version: 1.6.45 - build: h943b412_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.45-h943b412_0.conda + - libarrow 18.1.0 h0ad35bc_7_cpu + - libcxx >=18 + - libthrift >=0.21.0,<0.21.1.0a0 + - openssl >=3.4.0,<4.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + size: 873251 + timestamp: 1735684582558 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.45-h943b412_0.conda sha256: b8f5b5ba9a14dedf7c97c01300de492b1b52b68eacbc3249a13fdbfa82349a2f md5: 85cbdaacad93808395ac295b5667d25b depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux license: zlib-acknowledgement size: 289426 timestamp: 1736339058310 -- kind: conda - name: libpng - version: 1.6.45 - build: hec79eb8_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.45-hec79eb8_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.45-hec79eb8_0.conda sha256: a06daa523a0d5775acb96e6e3f083adc2ab1383eb8f664513dbc663f439c9cca md5: 9a8716c16b40acc7148263de1d0a403b depends: - libgcc >=13 - libzlib >=1.3.1,<2.0a0 + arch: aarch64 + platform: linux license: zlib-acknowledgement size: 299051 timestamp: 1736344007986 -- kind: conda - name: libprotobuf - version: 5.28.3 - build: h3bd63a1_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.3-h3bd63a1_1.conda - sha256: f58a16b13ad53346903c833e266f83c3d770a43a432659b98710aed85ca885e7 - md5: bdbfea4cf45ae36652c6bbcc2e7ebe91 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.45-h3783ad8_0.conda + sha256: ddcc81c049b32fb5eb3ac1f9a6d3a589c08325c8ec6f89eb912208b19330d68c + md5: d554c806d065b1763cb9e1cb1d25741d depends: - __osx >=11.0 + - libzlib >=1.3.1,<2.0a0 + arch: arm64 + platform: osx + license: zlib-acknowledgement + size: 263151 + timestamp: 1736339184358 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda + sha256: 51125ebb8b7152e4a4e69fd2398489c4ec8473195c27cde3cbdf1cb6d18c5493 + md5: d8703f1ffe5a06356f06467f1d0b9464 + depends: + - __glibc >=2.17,<3.0.a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libcxx >=18 + - libgcc >=13 + - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD - size: 2271580 - timestamp: 1735576361997 -- kind: conda - name: libprotobuf - version: 5.28.3 - build: h44a3b7b_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.3-h44a3b7b_1.conda + size: 2960815 + timestamp: 1735577210663 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.3-h44a3b7b_1.conda sha256: ecb69f2b1668e784b41ba667493be846662d5ef702bef64fb2e013bb1364cdc4 md5: 68f807f7cc13951652bbe048253fd405 depends: @@ -5011,57 +4047,45 @@ packages: - libgcc >=13 - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD size: 2788074 timestamp: 1735576315676 -- kind: conda - name: libprotobuf - version: 5.28.3 - build: h6128344_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda - sha256: 51125ebb8b7152e4a4e69fd2398489c4ec8473195c27cde3cbdf1cb6d18c5493 - md5: d8703f1ffe5a06356f06467f1d0b9464 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.3-h3bd63a1_1.conda + sha256: f58a16b13ad53346903c833e266f83c3d770a43a432659b98710aed85ca885e7 + md5: bdbfea4cf45ae36652c6bbcc2e7ebe91 depends: - - __glibc >=2.17,<3.0.a0 + - __osx >=11.0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libgcc >=13 - - libstdcxx >=13 + - libcxx >=18 - libzlib >=1.3.1,<2.0a0 + arch: arm64 + platform: osx license: BSD-3-Clause license_family: BSD - size: 2960815 - timestamp: 1735577210663 -- kind: conda - name: libre2-11 - version: 2024.07.02 - build: h07bc746_2 - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h07bc746_2.conda - sha256: 112a73ad483353751d4c5d63648c69a4d6fcebf5e1b698a860a3f5124fc3db96 - md5: 6b1e3624d3488016ca4f1ca0c412efaa + size: 2271580 + timestamp: 1735576361997 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_2.conda + sha256: 4420f8362c71251892ba1eeb957c5e445e4e1596c0c651c28d0d8b415fe120c7 + md5: b2fede24428726dd867611664fb372e8 depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libcxx >=18 + - libgcc >=13 + - libstdcxx >=13 constrains: - re2 2024.07.02.* + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD - size: 167155 - timestamp: 1735541067807 -- kind: conda - name: libre2-11 - version: 2024.07.02 - build: h18dbdb1_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_2.conda + size: 209793 + timestamp: 1735541054068 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_2.conda sha256: 862c20de0120f802e618dcb25913d00c5b82f91f4be60b2d46a774e851adc2f6 md5: 9a7dbbaab49f76a6f36e5c9d98e323a7 depends: @@ -5071,227 +4095,176 @@ packages: - libstdcxx >=13 constrains: - re2 2024.07.02.* + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD size: 204305 timestamp: 1735540986919 -- kind: conda - name: libre2-11 - version: 2024.07.02 - build: hbbce691_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_2.conda - sha256: 4420f8362c71251892ba1eeb957c5e445e4e1596c0c651c28d0d8b415fe120c7 - md5: b2fede24428726dd867611664fb372e8 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h07bc746_2.conda + sha256: 112a73ad483353751d4c5d63648c69a4d6fcebf5e1b698a860a3f5124fc3db96 + md5: 6b1e3624d3488016ca4f1ca0c412efaa depends: - - __glibc >=2.17,<3.0.a0 + - __osx >=11.0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libgcc >=13 - - libstdcxx >=13 + - libcxx >=18 constrains: - re2 2024.07.02.* + arch: arm64 + platform: osx license: BSD-3-Clause license_family: BSD - size: 209793 - timestamp: 1735541054068 -- kind: conda - name: libsodium - version: 1.0.20 - build: h4ab18f5_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda + size: 167155 + timestamp: 1735541067807 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda sha256: 0105bd108f19ea8e6a78d2d994a6d4a8db16d19a41212070d2d1d48a63c34161 md5: a587892d3c13b6621a6091be690dbca2 depends: - libgcc-ng >=12 + arch: x86_64 + platform: linux license: ISC size: 205978 timestamp: 1716828628198 -- kind: conda - name: libsodium - version: 1.0.20 - build: h68df207_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.20-h68df207_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.20-h68df207_0.conda sha256: 448df5ea3c5cf1af785aad46858d7a5be0522f4234a4dc9bb764f4d11ff3b981 md5: 2e4a8f23bebdcb85ca8e5a0fbe75666a depends: - libgcc-ng >=12 + arch: aarch64 + platform: linux license: ISC size: 177394 timestamp: 1716828514515 -- kind: conda - name: libsodium - version: 1.0.20 - build: h99b78c6_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda sha256: fade8223e1e1004367d7101dd17261003b60aa576df6d7802191f8972f7470b1 md5: a7ce36e284c5faaf93c220dfc39e3abd depends: - __osx >=11.0 + arch: arm64 + platform: osx license: ISC size: 164972 timestamp: 1716828607917 -- kind: conda - name: libsqlite - version: 3.47.2 - build: h3f77e49_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.47.2-h3f77e49_0.conda - sha256: f192f3c8973de9ec4c214990715f13b781965247a5cedf9162e7f9e699cfc3c4 - md5: 122d6f29470f1a991e85608e77e56a8a +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.47.2-hee588c1_0.conda + sha256: 48af21ebc2cbf358976f1e0f4a0ab9e91dfc83d0ef337cf3837c6f5bc22fb352 + md5: b58da17db24b6e08bcbf8fed2fb8c915 depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux license: Unlicense - size: 850553 - timestamp: 1733762057506 -- kind: conda - name: libsqlite - version: 3.47.2 - build: h5eb1b54_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.47.2-h5eb1b54_0.conda + size: 873551 + timestamp: 1733761824646 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.47.2-h5eb1b54_0.conda sha256: 885a27fa84a5a73ed9779168c02b6c386e2fc7a53f0566b32a09ceca146b42b4 md5: d4bf59f8783a4a66c0aec568f6de3ff4 depends: - libgcc >=13 - libzlib >=1.3.1,<2.0a0 + arch: aarch64 + platform: linux license: Unlicense size: 1042182 timestamp: 1733761913736 -- kind: conda - name: libsqlite - version: 3.47.2 - build: hee588c1_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.47.2-hee588c1_0.conda - sha256: 48af21ebc2cbf358976f1e0f4a0ab9e91dfc83d0ef337cf3837c6f5bc22fb352 - md5: b58da17db24b6e08bcbf8fed2fb8c915 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.47.2-h3f77e49_0.conda + sha256: f192f3c8973de9ec4c214990715f13b781965247a5cedf9162e7f9e699cfc3c4 + md5: 122d6f29470f1a991e85608e77e56a8a depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 + - __osx >=11.0 - libzlib >=1.3.1,<2.0a0 + arch: arm64 + platform: osx license: Unlicense - size: 873551 - timestamp: 1733761824646 -- kind: conda - name: libssh2 - version: 1.11.1 - build: h9cc3647_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.1-h9cc3647_0.conda - sha256: f7047c6ed44bcaeb04432e8c74da87591940d091b0a3940c0d884b7faa8062e9 - md5: ddc7194676c285513706e5fc64f214d7 + size: 850553 + timestamp: 1733762057506 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hf672d98_0.conda + sha256: 0407ac9fda2bb67e11e357066eff144c845801d00b5f664efbc48813af1e7bb9 + md5: be2de152d8073ef1c01b7728475f2fe7 depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 - libzlib >=1.3.1,<2.0a0 - openssl >=3.4.0,<4.0a0 + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD - size: 279028 - timestamp: 1732349599461 -- kind: conda - name: libssh2 - version: 1.11.1 - build: ha41c0db_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libssh2-1.11.1-ha41c0db_0.conda + size: 304278 + timestamp: 1732349402869 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libssh2-1.11.1-ha41c0db_0.conda sha256: 40f2af5357457546bd11cd64a3b9043d83865180f65ce602515c35f353be35c7 md5: aeffe03c0e598f015aab08dbb04f6ee4 depends: - libgcc >=13 - libzlib >=1.3.1,<2.0a0 - openssl >=3.4.0,<4.0a0 + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD size: 311577 timestamp: 1732349396421 -- kind: conda - name: libssh2 - version: 1.11.1 - build: hf672d98_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hf672d98_0.conda - sha256: 0407ac9fda2bb67e11e357066eff144c845801d00b5f664efbc48813af1e7bb9 - md5: be2de152d8073ef1c01b7728475f2fe7 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.1-h9cc3647_0.conda + sha256: f7047c6ed44bcaeb04432e8c74da87591940d091b0a3940c0d884b7faa8062e9 + md5: ddc7194676c285513706e5fc64f214d7 depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - libzlib >=1.3.1,<2.0a0 - openssl >=3.4.0,<4.0a0 + arch: arm64 + platform: osx license: BSD-3-Clause license_family: BSD - size: 304278 - timestamp: 1732349402869 -- kind: conda - name: libstdcxx - version: 14.2.0 - build: h3f4de04_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_1.conda - sha256: 519556d2c93f1b487091ce046d62e762286177f4a670ec10e16005177d0bcab3 - md5: 37f489acd39e22b623d2d1e5ac6d195c - depends: - - libgcc 14.2.0 he277a41_1 - license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - size: 3816794 - timestamp: 1729089463404 -- kind: conda - name: libstdcxx - version: 14.2.0 - build: hc0a3c3a_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-hc0a3c3a_1.conda + size: 279028 + timestamp: 1732349599461 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-hc0a3c3a_1.conda sha256: 4661af0eb9bdcbb5fb33e5d0023b001ad4be828fccdcc56500059d56f9869462 md5: 234a5554c53625688d51062645337328 depends: - libgcc 14.2.0 h77fa898_1 + arch: x86_64 + platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL size: 3893695 timestamp: 1729027746910 -- kind: conda - name: libstdcxx-ng - version: 14.2.0 - build: h4852527_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_1.conda + sha256: 519556d2c93f1b487091ce046d62e762286177f4a670ec10e16005177d0bcab3 + md5: 37f489acd39e22b623d2d1e5ac6d195c + depends: + - libgcc 14.2.0 he277a41_1 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 3816794 + timestamp: 1729089463404 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_1.conda sha256: 25bb30b827d4f6d6f0522cc0579e431695503822f144043b93c50237017fffd8 md5: 8371ac6457591af2cf6159439c1fd051 depends: - libstdcxx 14.2.0 hc0a3c3a_1 + arch: x86_64 + platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL size: 54105 timestamp: 1729027780628 -- kind: conda - name: libstdcxx-ng - version: 14.2.0 - build: hf1166c9_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_1.conda sha256: 9f97461bd55a2745a7a0941f3502a047f15bfe7bb2952dc7fb204b3202f866fd md5: 0e75771b8a03afae5a2c6ce71bc733f5 depends: - libstdcxx 14.2.0 h3f4de04_1 + arch: aarch64 + platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL size: 54133 timestamp: 1729089498541 -- kind: conda - name: libthrift - version: 0.21.0 - build: h0e7cc3e_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libthrift-0.21.0-h0e7cc3e_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/libthrift-0.21.0-h0e7cc3e_0.conda sha256: ebb395232973c18745b86c9a399a4725b2c39293c9a91b8e59251be013db42f0 md5: dcb95c0a98ba9ff737f7ae482aef7833 depends: @@ -5301,16 +4274,13 @@ packages: - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - openssl >=3.3.2,<4.0a0 + arch: x86_64 + platform: linux license: Apache-2.0 license_family: APACHE size: 425773 timestamp: 1727205853307 -- kind: conda - name: libthrift - version: 0.21.0 - build: h154c74f_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libthrift-0.21.0-h154c74f_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libthrift-0.21.0-h154c74f_0.conda sha256: f04ab1417aca1687edff9c30d8423ace285eb8c053dc16d595c6e47cfeefb274 md5: c28792bf37f4ecdce8e3cb9e40750650 depends: @@ -5319,16 +4289,13 @@ packages: - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - openssl >=3.3.2,<4.0a0 + arch: aarch64 + platform: linux license: Apache-2.0 license_family: APACHE size: 417329 timestamp: 1727205944238 -- kind: conda - name: libthrift - version: 0.21.0 - build: h64651cc_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libthrift-0.21.0-h64651cc_0.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libthrift-0.21.0-h64651cc_0.conda sha256: 7a6c7d5f58cbbc2ccd6493b4b821639fdb0701b9b04c737a949e8cb6adf1c9ad md5: 7ce2bd2f650f8c31ad7ba4c7bfea61b7 depends: @@ -5337,39 +4304,32 @@ packages: - libevent >=2.1.12,<2.1.13.0a0 - libzlib >=1.3.1,<2.0a0 - openssl >=3.3.2,<4.0a0 + arch: arm64 + platform: osx license: Apache-2.0 license_family: APACHE size: 324342 timestamp: 1727206096912 -- kind: conda - name: libtiff - version: 4.7.0 - build: h551f018_3 - build_number: 3 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-h551f018_3.conda - sha256: 91417846157e04992801438a496b151df89604b2e7c6775d6f701fcd0cbed5ae - md5: a5d084a957563e614ec0c0196d890654 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hd9ff511_3.conda + sha256: b224e16b88d76ea95e4af56e2bc638c603bd26a770b98d117d04541d3aafa002 + md5: 0ea6510969e1296cc19966fad481f6de depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 - lerc >=4.0.0,<5.0a0 - - libcxx >=18 - libdeflate >=1.23,<1.24.0a0 + - libgcc >=13 - libjpeg-turbo >=3.0.0,<4.0a0 - liblzma >=5.6.3,<6.0a0 + - libstdcxx >=13 - libwebp-base >=1.4.0,<2.0a0 - libzlib >=1.3.1,<2.0a0 - zstd >=1.5.6,<1.6.0a0 + arch: x86_64 + platform: linux license: HPND - size: 370600 - timestamp: 1734398863052 -- kind: conda - name: libtiff - version: 4.7.0 - build: h88f7998_3 - build_number: 3 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.0-h88f7998_3.conda + size: 428173 + timestamp: 1734398813264 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.0-h88f7998_3.conda sha256: 5888bd66ba7606ae8596856c7dac800940ecad0aed77d6aa37db69d434c81cf0 md5: 36a0ea4a173338c8725dc0807e99cf22 depends: @@ -5382,239 +4342,189 @@ packages: - libwebp-base >=1.4.0,<2.0a0 - libzlib >=1.3.1,<2.0a0 - zstd >=1.5.6,<1.6.0a0 + arch: aarch64 + platform: linux license: HPND size: 464699 timestamp: 1734398752249 -- kind: conda - name: libtiff - version: 4.7.0 - build: hd9ff511_3 - build_number: 3 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hd9ff511_3.conda - sha256: b224e16b88d76ea95e4af56e2bc638c603bd26a770b98d117d04541d3aafa002 - md5: 0ea6510969e1296cc19966fad481f6de +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-h551f018_3.conda + sha256: 91417846157e04992801438a496b151df89604b2e7c6775d6f701fcd0cbed5ae + md5: a5d084a957563e614ec0c0196d890654 depends: - - __glibc >=2.17,<3.0.a0 + - __osx >=11.0 - lerc >=4.0.0,<5.0a0 + - libcxx >=18 - libdeflate >=1.23,<1.24.0a0 - - libgcc >=13 - libjpeg-turbo >=3.0.0,<4.0a0 - liblzma >=5.6.3,<6.0a0 - - libstdcxx >=13 - libwebp-base >=1.4.0,<2.0a0 - libzlib >=1.3.1,<2.0a0 - zstd >=1.5.6,<1.6.0a0 + arch: arm64 + platform: osx license: HPND - size: 428173 - timestamp: 1734398813264 -- kind: conda - name: libutf8proc - version: 2.9.0 - build: h5505292_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.9.0-h5505292_1.conda - sha256: ea88f06e97ef8fa2490f7594f8885bb542577226edf8abba3144302d951a53c2 - md5: f777470d31c78cd0abe1903a2fda436f + size: 370600 + timestamp: 1734398863052 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.9.0-hb9d3cd8_1.conda + sha256: 9794e6388e780c3310d46f773bbc924d4053375c3fcdb07a704b57f4616db928 + md5: 1e936bd23d737aac62a18e9a1e7f8b18 depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux license: MIT license_family: MIT - size: 83000 - timestamp: 1732868631531 -- kind: conda - name: libutf8proc - version: 2.9.0 - build: h86ecc28_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.9.0-h86ecc28_1.conda + size: 81500 + timestamp: 1732868419835 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.9.0-h86ecc28_1.conda sha256: 37a1833c55f9945724cd4b3eb6a1469032cc754a1dd725f191c34154ad2ba7e4 md5: 699f155da290be3a1a64c932c6728991 depends: - libgcc >=13 + arch: aarch64 + platform: linux license: MIT license_family: MIT size: 81526 timestamp: 1732868466862 -- kind: conda - name: libutf8proc - version: 2.9.0 - build: hb9d3cd8_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.9.0-hb9d3cd8_1.conda - sha256: 9794e6388e780c3310d46f773bbc924d4053375c3fcdb07a704b57f4616db928 - md5: 1e936bd23d737aac62a18e9a1e7f8b18 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.9.0-h5505292_1.conda + sha256: ea88f06e97ef8fa2490f7594f8885bb542577226edf8abba3144302d951a53c2 + md5: f777470d31c78cd0abe1903a2fda436f depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 + - __osx >=11.0 + arch: arm64 + platform: osx license: MIT license_family: MIT - size: 81500 - timestamp: 1732868419835 -- kind: conda - name: libuuid - version: 2.38.1 - build: h0b41bf4_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda + size: 83000 + timestamp: 1732868631531 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda sha256: 787eb542f055a2b3de553614b25f09eefb0a0931b0c87dbcce6efdfd92f04f18 md5: 40b61aab5c7ba9ff276c41cfffe6b80b depends: - libgcc-ng >=12 + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD size: 33601 timestamp: 1680112270483 -- kind: conda - name: libuuid - version: 2.38.1 - build: hb4cce97_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda sha256: 616277b0c5f7616c2cdf36f6c316ea3f9aa5bb35f2d4476a349ab58b9b91675f md5: 000e30b09db0b7c775b21695dff30969 depends: - libgcc-ng >=12 + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD size: 35720 timestamp: 1680113474501 -- kind: conda - name: libuv - version: 1.49.2 - build: h7ab814d_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libuv-1.49.2-h7ab814d_0.conda - sha256: 0e5176af1e788ad5006cf261c4ea5a288a935fda48993b0240ddd2e562dc3d02 - md5: 4bc348e3a1a74d20a3f9beb866d75e0a +- conda: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.49.2-hb9d3cd8_0.conda + sha256: a35cd81cd1a9add11024097da83cc06b0aae83186fe4124b77710876f37d8f31 + md5: 070e3c9ddab77e38799d5c30b109c633 depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux license: MIT license_family: MIT - size: 410500 - timestamp: 1729322654121 -- kind: conda - name: libuv - version: 1.49.2 - build: h86ecc28_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libuv-1.49.2-h86ecc28_0.conda + size: 884647 + timestamp: 1729322566955 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuv-1.49.2-h86ecc28_0.conda sha256: adf4eca89339ac7780f2394e7e6699be81259eb91f79f9d9fdf2c1bc6b26f210 md5: 1899e1ec2be63386c41c4db31d3056af depends: - libgcc >=13 + arch: aarch64 + platform: linux license: MIT license_family: MIT size: 627484 timestamp: 1729322575379 -- kind: conda - name: libuv - version: 1.49.2 - build: hb9d3cd8_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.49.2-hb9d3cd8_0.conda - sha256: a35cd81cd1a9add11024097da83cc06b0aae83186fe4124b77710876f37d8f31 - md5: 070e3c9ddab77e38799d5c30b109c633 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libuv-1.49.2-h7ab814d_0.conda + sha256: 0e5176af1e788ad5006cf261c4ea5a288a935fda48993b0240ddd2e562dc3d02 + md5: 4bc348e3a1a74d20a3f9beb866d75e0a depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 + - __osx >=11.0 + arch: arm64 + platform: osx license: MIT license_family: MIT - size: 884647 - timestamp: 1729322566955 -- kind: conda - name: libwebp-base - version: 1.5.0 - build: h0886dbf_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libwebp-base-1.5.0-h0886dbf_0.conda + size: 410500 + timestamp: 1729322654121 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.5.0-h851e524_0.conda + sha256: c45283fd3e90df5f0bd3dbcd31f59cdd2b001d424cf30a07223655413b158eaf + md5: 63f790534398730f59e1b899c3644d4a + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + constrains: + - libwebp 1.5.0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 429973 + timestamp: 1734777489810 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libwebp-base-1.5.0-h0886dbf_0.conda sha256: b3d881a0ae08bb07fff7fa8ead506c8d2e0388733182fe4f216f3ec5d61ffcf0 md5: 95ef4a689b8cc1b7e18b53784d88f96b depends: - libgcc >=13 constrains: - libwebp 1.5.0 + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD size: 362623 timestamp: 1734779054659 -- kind: conda - name: libwebp-base - version: 1.5.0 - build: h2471fea_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.5.0-h2471fea_0.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.5.0-h2471fea_0.conda sha256: f8bdb876b4bc8cb5df47c28af29188de8911c3fea4b799a33743500149de3f4a md5: 569466afeb84f90d5bb88c11cc23d746 depends: - __osx >=11.0 constrains: - libwebp 1.5.0 + arch: arm64 + platform: osx license: BSD-3-Clause license_family: BSD size: 290013 timestamp: 1734777593617 -- kind: conda - name: libwebp-base - version: 1.5.0 - build: h851e524_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.5.0-h851e524_0.conda - sha256: c45283fd3e90df5f0bd3dbcd31f59cdd2b001d424cf30a07223655413b158eaf - md5: 63f790534398730f59e1b899c3644d4a +- conda: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda + sha256: 666c0c431b23c6cec6e492840b176dde533d48b7e6fb8883f5071223433776aa + md5: 92ed62436b625154323d40d5f2f11dd7 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - constrains: - - libwebp 1.5.0 - license: BSD-3-Clause - license_family: BSD - size: 429973 - timestamp: 1734777489810 -- kind: conda - name: libxcb - version: 1.17.0 - build: h262b8f6_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcb-1.17.0-h262b8f6_0.conda - sha256: 461cab3d5650ac6db73a367de5c8eca50363966e862dcf60181d693236b1ae7b - md5: cd14ee5cca2464a425b1dbfc24d90db2 - depends: - - libgcc >=13 - pthread-stubs - xorg-libxau >=1.0.11,<2.0a0 - xorg-libxdmcp + arch: x86_64 + platform: linux license: MIT license_family: MIT - size: 397493 - timestamp: 1727280745441 -- kind: conda - name: libxcb - version: 1.17.0 - build: h8a09558_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda - sha256: 666c0c431b23c6cec6e492840b176dde533d48b7e6fb8883f5071223433776aa - md5: 92ed62436b625154323d40d5f2f11dd7 + size: 395888 + timestamp: 1727278577118 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcb-1.17.0-h262b8f6_0.conda + sha256: 461cab3d5650ac6db73a367de5c8eca50363966e862dcf60181d693236b1ae7b + md5: cd14ee5cca2464a425b1dbfc24d90db2 depends: - - __glibc >=2.17,<3.0.a0 - libgcc >=13 - pthread-stubs - xorg-libxau >=1.0.11,<2.0a0 - xorg-libxdmcp + arch: aarch64 + platform: linux license: MIT license_family: MIT - size: 395888 - timestamp: 1727278577118 -- kind: conda - name: libxcb - version: 1.17.0 - build: hdb1d25a_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libxcb-1.17.0-hdb1d25a_0.conda + size: 397493 + timestamp: 1727280745441 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxcb-1.17.0-hdb1d25a_0.conda sha256: bd3816218924b1e43b275863e21a3e13a5db4a6da74cca8e60bc3c213eb62f71 md5: af523aae2eca6dfa1c8eec693f5b9a79 depends: @@ -5622,45 +4532,33 @@ packages: - pthread-stubs - xorg-libxau >=1.0.11,<2.0a0 - xorg-libxdmcp + arch: arm64 + platform: osx license: MIT license_family: MIT size: 323658 timestamp: 1727278733917 -- kind: conda - name: libxcrypt - version: 4.4.36 - build: h31becfc_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda - sha256: 6b46c397644091b8a26a3048636d10b989b1bf266d4be5e9474bf763f828f41f - md5: b4df5d7d4b63579d081fd3a4cf99740e - depends: - - libgcc-ng >=12 - license: LGPL-2.1-or-later - size: 114269 - timestamp: 1702724369203 -- kind: conda - name: libxcrypt - version: 4.4.36 - build: hd590300_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda sha256: 6ae68e0b86423ef188196fff6207ed0c8195dd84273cb5623b85aa08033a410c md5: 5aa797f8787fe7a17d1b0821485b5adc depends: - libgcc-ng >=12 + arch: x86_64 + platform: linux license: LGPL-2.1-or-later size: 100393 timestamp: 1702724383534 -- kind: conda - name: libxml2 - version: 2.13.5 - build: h0d44e9d_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.5-h0d44e9d_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda + sha256: 6b46c397644091b8a26a3048636d10b989b1bf266d4be5e9474bf763f828f41f + md5: b4df5d7d4b63579d081fd3a4cf99740e + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: LGPL-2.1-or-later + size: 114269 + timestamp: 1702724369203 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.5-h0d44e9d_1.conda sha256: 306e18aa647d8208ad2cd0e62d84933222b2fbe93d2d53cd5283d2256b1d54de md5: f5b05674697ae7d2c5932766695945e1 depends: @@ -5671,36 +4569,13 @@ packages: - libzlib >=1.3.1,<2.0a0 constrains: - icu <0.0a0 + arch: x86_64 + platform: linux license: MIT license_family: MIT - size: 689993 - timestamp: 1733443678322 -- kind: conda - name: libxml2 - version: 2.13.5 - build: h178c5d8_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.5-h178c5d8_1.conda - sha256: d7af3f25a4cece170502acd38f2dafbea4521f373f46dcb28a37fbe6ac2da544 - md5: 3dc3cff0eca1640a6acbbfab2f78139e - depends: - - __osx >=11.0 - - icu >=75.1,<76.0a0 - - libiconv >=1.17,<2.0a0 - - liblzma >=5.6.3,<6.0a0 - - libzlib >=1.3.1,<2.0a0 - license: MIT - license_family: MIT - size: 582898 - timestamp: 1733443841584 -- kind: conda - name: libxml2 - version: 2.13.5 - build: h2e0c361_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.5-h2e0c361_1.conda + size: 689993 + timestamp: 1733443678322 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.5-h2e0c361_1.conda sha256: dc0e86d35a836af6e99d18f50c6551fc64c53ed3a3da5a9fea90e78763cf14b4 md5: 63410f85031930cde371dfe0ee89109a depends: @@ -5709,135 +4584,118 @@ packages: - libiconv >=1.17,<2.0a0 - liblzma >=5.6.3,<6.0a0 - libzlib >=1.3.1,<2.0a0 + arch: aarch64 + platform: linux license: MIT license_family: MIT size: 732155 timestamp: 1733443825814 -- kind: conda - name: libzlib - version: 1.3.1 - build: h8359307_2 - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - sha256: ce34669eadaba351cd54910743e6a2261b67009624dbc7daeeafdef93616711b - md5: 369964e85dc26bfe78f41399b366c435 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.5-h178c5d8_1.conda + sha256: d7af3f25a4cece170502acd38f2dafbea4521f373f46dcb28a37fbe6ac2da544 + md5: 3dc3cff0eca1640a6acbbfab2f78139e depends: - __osx >=11.0 + - icu >=75.1,<76.0a0 + - libiconv >=1.17,<2.0a0 + - liblzma >=5.6.3,<6.0a0 + - libzlib >=1.3.1,<2.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 582898 + timestamp: 1733443841584 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda + sha256: d4bfe88d7cb447768e31650f06257995601f89076080e76df55e3112d4e47dc4 + md5: edb0dca6bc32e4f4789199455a1dbeb8 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 constrains: - zlib 1.3.1 *_2 + arch: x86_64 + platform: linux license: Zlib license_family: Other - size: 46438 - timestamp: 1727963202283 -- kind: conda - name: libzlib - version: 1.3.1 - build: h86ecc28_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda + size: 60963 + timestamp: 1727963148474 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda sha256: 5a2c1eeef69342e88a98d1d95bff1603727ab1ff4ee0e421522acd8813439b84 md5: 08aad7cbe9f5a6b460d0976076b6ae64 depends: - libgcc >=13 constrains: - zlib 1.3.1 *_2 + arch: aarch64 + platform: linux license: Zlib license_family: Other size: 66657 timestamp: 1727963199518 -- kind: conda - name: libzlib - version: 1.3.1 - build: hb9d3cd8_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - sha256: d4bfe88d7cb447768e31650f06257995601f89076080e76df55e3112d4e47dc4 - md5: edb0dca6bc32e4f4789199455a1dbeb8 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda + sha256: ce34669eadaba351cd54910743e6a2261b67009624dbc7daeeafdef93616711b + md5: 369964e85dc26bfe78f41399b366c435 depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 + - __osx >=11.0 constrains: - zlib 1.3.1 *_2 + arch: arm64 + platform: osx license: Zlib license_family: Other - size: 60963 - timestamp: 1727963148474 -- kind: conda - name: llvm-openmp - version: 19.1.6 - build: hdb05f8b_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.6-hdb05f8b_0.conda + size: 46438 + timestamp: 1727963202283 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.6-hdb05f8b_0.conda sha256: a0f3e9139ab16f0a67b9d2bbabc15b78977168f4a5b5503fed4962dcb9a96102 md5: 34fdeffa0555a1a56f38839415cc066c depends: - __osx >=11.0 constrains: - openmp 19.1.6|19.1.6.* + arch: arm64 + platform: osx license: Apache-2.0 WITH LLVM-exception license_family: APACHE size: 281251 timestamp: 1734520462311 -- kind: conda - name: lz4-c - version: 1.10.0 - build: h286801f_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.10.0-h286801f_1.conda - sha256: 94d3e2a485dab8bdfdd4837880bde3dd0d701e2b97d6134b8806b7c8e69c8652 - md5: 01511afc6cc1909c5303cf31be17b44f - depends: - - __osx >=11.0 - - libcxx >=18 - license: BSD-2-Clause - license_family: BSD - size: 148824 - timestamp: 1733741047892 -- kind: conda - name: lz4-c - version: 1.10.0 - build: h5888daf_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.10.0-h5888daf_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.10.0-h5888daf_1.conda sha256: 47326f811392a5fd3055f0f773036c392d26fdb32e4d8e7a8197eed951489346 md5: 9de5350a85c4a20c685259b889aa6393 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - libstdcxx >=13 + arch: x86_64 + platform: linux license: BSD-2-Clause license_family: BSD size: 167055 timestamp: 1733741040117 -- kind: conda - name: lz4-c - version: 1.10.0 - build: h5ad3122_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.10.0-h5ad3122_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.10.0-h5ad3122_1.conda sha256: 67e55058d275beea76c1882399640c37b5be8be4eb39354c94b610928e9a0573 md5: 6654e411da94011e8fbe004eacb8fe11 depends: - libgcc >=13 - libstdcxx >=13 + arch: aarch64 + platform: linux license: BSD-2-Clause license_family: BSD size: 184953 timestamp: 1733740984533 -- kind: conda - name: markdown-it-py - version: 3.0.0 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: 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/lz4-c-1.10.0-h286801f_1.conda + sha256: 94d3e2a485dab8bdfdd4837880bde3dd0d701e2b97d6134b8806b7c8e69c8652 + md5: 01511afc6cc1909c5303cf31be17b44f + depends: + - __osx >=11.0 + - libcxx >=18 + arch: arm64 + platform: osx + license: BSD-2-Clause + license_family: BSD + size: 148824 + timestamp: 1733741047892 +- conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_1.conda sha256: 0fbacdfb31e55964152b24d5567e9a9996e1e7902fb08eb7d91b5fd6ce60803a md5: fee3164ac23dfca50cfcc8b85ddefb81 depends: @@ -5847,13 +4705,7 @@ packages: license_family: MIT size: 64430 timestamp: 1733250550053 -- kind: conda - name: markupsafe - version: 3.0.2 - build: py312h178313f_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_1.conda sha256: 4a6bf68d2a2b669fecc9a4a009abd1cf8e72c2289522ff00d81b5a6e51ae78f5 md5: eb227c3e0bf58f5bd69c0532b157975b depends: @@ -5863,17 +4715,13 @@ packages: - python_abi 3.12.* *_cp312 constrains: - jinja2 >=3.0.0 + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD size: 24604 timestamp: 1733219911494 -- kind: conda - name: markupsafe - version: 3.0.2 - build: py312h74ce7d3_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.2-py312h74ce7d3_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.2-py312h74ce7d3_1.conda sha256: 1d500158262f30b9c23e37d1c861fe76e127a3926d69b3b38c25d20d3faa6f9f md5: bc8607ab678073a0441808a31465f4fb depends: @@ -5882,17 +4730,13 @@ packages: - python_abi 3.12.* *_cp312 constrains: - jinja2 >=3.0.0 + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD size: 25079 timestamp: 1733220639175 -- kind: conda - name: markupsafe - version: 3.0.2 - build: py312h998013c_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312h998013c_1.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312h998013c_1.conda sha256: 4aa997b244014d3707eeef54ab0ee497d12c0d0d184018960cce096169758283 md5: 46e547061080fddf9cf95a0327e8aba6 depends: @@ -5902,82 +4746,53 @@ packages: - python_abi 3.12.* *_cp312 constrains: - jinja2 >=3.0.0 + arch: arm64 + platform: osx license: BSD-3-Clause license_family: BSD size: 24048 timestamp: 1733219945697 -- kind: conda - name: max - version: 25.1.0.dev2025010817 - build: release - subdir: noarch +- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011022-release.conda noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025010817-release.conda - sha256: 4ce81189e26dd06f188129580db0464f8ee9a081e195dad7082b2fa25fcf738e - md5: b46d770a5f45597ffc008bd224d8e91c - depends: - - max-core ==25.1.0.dev2025010817 release - - max-python >=25.1.0.dev2025010817,<26.0a0 - - mojo-jupyter ==25.1.0.dev2025010817 release - - mblack ==25.1.0.dev2025010817 release + sha256: fae148fb87d78d496ca5596fec75af7ec2c29e60416fcb856be56031cf798901 + md5: 59903ff40dee24c089ca2051858e6422 + depends: + - max-core ==25.1.0.dev2025011022 release + - max-python >=25.1.0.dev2025011022,<26.0a0 + - mojo-jupyter ==25.1.0.dev2025011022 release + - mblack ==25.1.0.dev2025011022 release license: LicenseRef-Modular-Proprietary - size: 9922 - timestamp: 1736357145809 -- kind: conda - name: max-core - version: 25.1.0.dev2025010817 - build: release - subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025010817-release.conda - sha256: 5459a1f6c379b01231649212ca7f5062c49208b5c0b2b17047b55011872727c2 - md5: 5bbb293b5216b098c424e7602823a460 + size: 9917 + timestamp: 1736547478654 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025011022-release.conda + sha256: 237e4007c732a59a619fcb0669f6b55a2a2c7f22bfa7b663ed68fde09ea02f69 + md5: 51be3ab7a5232a42df62bb75e983d05b depends: - - mblack ==25.1.0.dev2025010817 release - arch: x86_64 - platform: linux + - mblack ==25.1.0.dev2025011022 release license: LicenseRef-Modular-Proprietary - size: 247646542 - timestamp: 1736357145807 -- kind: conda - name: max-core - version: 25.1.0.dev2025010817 - build: release - subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025010817-release.conda - sha256: 18715c3fc8071d5eeb9f1893512fe65967919e9900738423958a5cb4f09148da - md5: 4a7b6e800f8fdabf0498727c1bff57d3 + size: 243253667 + timestamp: 1736547516482 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025011022-release.conda + sha256: 7d0b9d872d69308cb7dd70eb68fdf90816a4a33135089eb8ba29877f6be6f89f + md5: 321080690171af0ed4087069d3d3a057 depends: - - mblack ==25.1.0.dev2025010817 release - arch: aarch64 - platform: linux + - mblack ==25.1.0.dev2025011022 release license: LicenseRef-Modular-Proprietary - size: 251608988 - timestamp: 1736357045232 -- kind: conda - name: max-core - version: 25.1.0.dev2025010817 - build: release - subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025010817-release.conda - sha256: 5a23bdc48d6fe2cfe439097b7a0fc0f1bd2b23be081478638ef4b945267d8015 - md5: 1f54b615e5199ac268f123c89cfbabda - depends: - - mblack ==25.1.0.dev2025010817 release - arch: arm64 - platform: osx + size: 247039443 + timestamp: 1736547478652 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025011022-release.conda + sha256: bec13a3ff3e08404e60a3bd9e606168a422effbf9a94180fb17181eaf3686666 + md5: 11895a6758a61c5abc9a29d48f814794 + depends: + - mblack ==25.1.0.dev2025011022 release license: LicenseRef-Modular-Proprietary - size: 209267317 - timestamp: 1736357278969 -- kind: conda - name: max-python - version: 25.1.0.dev2025010817 - build: 3.12release - subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025010817-3.12release.conda - sha256: 7bd73eb5b2c8f796bb2bf947e68b46f9fa0302c1999905321bd18c453be5d410 - md5: 58d7a8476c07a36c0412fcd983faebfc - depends: - - max-core ==25.1.0.dev2025010817 release + size: 205521630 + timestamp: 1736547263030 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025011022-3.12release.conda + sha256: ea9bb62d5a012c5aa8859bf11e998b1d3f25f0325641812825573f5f2532ac2c + md5: e19353c678746a77f2668ad25f9cb543 + depends: + - max-core ==25.1.0.dev2025011022 release - python 3.12.* - fastapi - httpx @@ -5997,21 +4812,14 @@ packages: - typing_extensions - uvicorn - python_abi 3.12.* *_cp312 - arch: x86_64 - platform: linux license: LicenseRef-Modular-Proprietary - size: 124309678 - timestamp: 1736357145817 -- kind: conda - name: max-python - version: 25.1.0.dev2025010817 - build: 3.12release - subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025010817-3.12release.conda - sha256: 1faa8dea2f87c25b20f467758a46589d2d464d8367fda4fa7fa61c73120b62f9 - md5: be84f3b39ee757dd73d27ac241c37d5a - depends: - - max-core ==25.1.0.dev2025010817 release + size: 124126143 + timestamp: 1736547516492 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025011022-3.12release.conda + sha256: f7848a875d82d2f62341d528c1400f32b9e540bdecef0602089d975d4492316a + md5: 1ea09052240a8e4df4cd85658a770dbe + depends: + - max-core ==25.1.0.dev2025011022 release - python 3.12.* - fastapi - httpx @@ -6031,21 +4839,14 @@ packages: - typing_extensions - uvicorn - python_abi 3.12.* *_cp312 - arch: aarch64 - platform: linux license: LicenseRef-Modular-Proprietary - size: 128047180 - timestamp: 1736357045243 -- kind: conda - name: max-python - version: 25.1.0.dev2025010817 - build: 3.12release - subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025010817-3.12release.conda - sha256: c8b10ed04f57bc9a9e67d447ad97404ea06f3efbc903dced4723f3828c93ab2c - md5: aa8c692e6393c51283419173f7cb69a2 - depends: - - max-core ==25.1.0.dev2025010817 release + size: 127905369 + timestamp: 1736547478664 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025011022-3.12release.conda + sha256: f1da578221c4b7c7eb054da59ad7d3a86a2943191466e95aedf18087d6878412 + md5: dd6127789e9eabee6f42ad50ca81cde1 + depends: + - max-core ==25.1.0.dev2025011022 release - python 3.12.* - fastapi - httpx @@ -6065,20 +4866,13 @@ packages: - typing_extensions - uvicorn - python_abi 3.12.* *_cp312 - arch: arm64 - platform: osx license: LicenseRef-Modular-Proprietary - size: 110680624 - timestamp: 1736357278972 -- kind: conda - name: mblack - version: 25.1.0.dev2025010817 - build: release - subdir: noarch + size: 110533786 + timestamp: 1736547263033 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011022-release.conda noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025010817-release.conda - sha256: 8bc21a826d3edc5a8719deeeadcee5b3fc8fbd83313ce2c7ebc8c620075608e1 - md5: ee664fe2390706d36d2d60b1f2bd69df + sha256: 00a2f2b377584f27171e8b832203b9107f081a5b2aaf4ac3921730fbd2c73594 + md5: b571b4d34e8fa8021413b97e1b1c5efe depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -6088,16 +4882,9 @@ packages: - platformdirs >=2 - python license: MIT - size: 130813 - timestamp: 1736357145814 -- kind: conda - name: mdurl - version: 0.1.2 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda + size: 130807 + timestamp: 1736547478660 +- conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda sha256: 78c1bbe1723449c52b7a9df1af2ee5f005209f67e40b6e1d3c7619127c43b1c7 md5: 592132998493b3ff25fd7479396e8351 depends: @@ -6106,30 +4893,19 @@ packages: license_family: MIT size: 14465 timestamp: 1733255681319 -- kind: conda - name: mojo-jupyter - version: 25.1.0.dev2025010817 - build: release - subdir: noarch +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011022-release.conda noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025010817-release.conda - sha256: a92d02809c43a9a92abc363e69396738f6c9802c12d8827cc008d316cea4e107 - md5: 0533034ac307140f160cf43c5f36b2ed + sha256: 0c619f3bff0c0fa6cdc1a314bcc34b450058779c41676b6673acec10030c5fea + md5: 12e9bb285b21a65333d0031a9225e0f0 depends: - - max-core ==25.1.0.dev2025010817 release + - max-core ==25.1.0.dev2025011022 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22926 - timestamp: 1736357145815 -- kind: conda - name: multidict - version: 6.1.0 - build: py312h178313f_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py312h178313f_2.conda + size: 22934 + timestamp: 1736547478660 +- conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py312h178313f_2.conda sha256: b05bc8252a6e957bf4a776ed5e0e61d1ba88cdc46ccb55890c72cc58b10371f4 md5: 5b5e3267d915a107eca793d52e1b780a depends: @@ -6137,17 +4913,13 @@ packages: - libgcc >=13 - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux license: Apache-2.0 license_family: APACHE size: 61507 timestamp: 1733913288935 -- kind: conda - name: multidict - version: 6.1.0 - build: py312hcc812fe_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/multidict-6.1.0-py312hcc812fe_2.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multidict-6.1.0-py312hcc812fe_2.conda sha256: ff9f767ba4df68e9ac2a380529a83a2fb6abd985beee9eab16608f7e2c3ccc6e md5: dcf3ae213cf0ab40ebcc10452e1ed9fa depends: @@ -6155,17 +4927,13 @@ packages: - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux license: Apache-2.0 license_family: APACHE size: 63077 timestamp: 1733913233032 -- kind: conda - name: multidict - version: 6.1.0 - build: py312hdb8e49c_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/multidict-6.1.0-py312hdb8e49c_1.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/multidict-6.1.0-py312hdb8e49c_1.conda sha256: 482fd09fb798090dc8cce2285fa69f43b1459099122eac2fb112d9b922b9f916 md5: 0048335516fed938e4dd2c457b4c5b9b depends: @@ -6173,35 +4941,13 @@ packages: - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx license: Apache-2.0 license_family: APACHE size: 55968 timestamp: 1729065664275 -- kind: conda - name: multiprocess - version: 0.70.15 - build: py312h02f2b3b_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/multiprocess-0.70.15-py312h02f2b3b_1.conda - sha256: 8041371e3ec3fbc2ca13c71b0180672896e6382e62892d9f6b11a4c5dd675951 - md5: 910ef2223c71902175418d9163152788 - depends: - - dill >=0.3.6 - - python >=3.12.0rc3,<3.13.0a0 - - python >=3.12.0rc3,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - license: BSD-3-Clause - license_family: BSD - size: 335147 - timestamp: 1695459275360 -- kind: conda - name: multiprocess - version: 0.70.15 - build: py312h98912ed_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.15-py312h98912ed_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.15-py312h98912ed_1.conda sha256: bb612a921fafda6375a2204ffebd8811db8dd3b8f25ac9886cc9bcbff7e3664e md5: 5a64b9f44790d9a187a85366dd0ffa8d depends: @@ -6209,17 +4955,13 @@ packages: - libgcc-ng >=12 - python >=3.12.0rc3,<3.13.0a0 - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD size: 335666 timestamp: 1695459025249 -- kind: conda - name: multiprocess - version: 0.70.15 - build: py312hdd3e373_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.15-py312hdd3e373_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.15-py312hdd3e373_1.conda sha256: c53362cdf346f314e111faddc53061e3fd2ece0ba68ca303f5dd109976df158f md5: 173a1692d2b3ddc265dc6afd21a869b3 depends: @@ -6228,18 +4970,27 @@ packages: - python >=3.12.0rc3,<3.13.0a0 - python >=3.12.0rc3,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD size: 336110 timestamp: 1695459137796 -- kind: conda - name: mypy_extensions - version: 1.0.0 - build: pyha770c72_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/multiprocess-0.70.15-py312h02f2b3b_1.conda + sha256: 8041371e3ec3fbc2ca13c71b0180672896e6382e62892d9f6b11a4c5dd675951 + md5: 910ef2223c71902175418d9163152788 + depends: + - dill >=0.3.6 + - python >=3.12.0rc3,<3.13.0a0 + - python >=3.12.0rc3,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 335147 + timestamp: 1695459275360 +- conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda sha256: 1895f47b7d68581a6facde5cb13ab8c2764c2e53a76bd746f8f98910dc4e08fe md5: 29097e7ea634a45cc5386b95cac6568f depends: @@ -6248,57 +4999,40 @@ packages: license_family: MIT size: 10854 timestamp: 1733230986902 -- kind: conda - name: ncurses - version: '6.5' - build: h7bae524_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h7bae524_1.conda - sha256: 27d0b9ff78ad46e1f3a6c96c479ab44beda5f96def88e2fe626e0a49429d8afc - md5: cb2b0ea909b97b3d70cd3921d1445e1a +- conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-he02047a_1.conda + sha256: 6a1d5d8634c1a07913f1c525db6455918cbc589d745fac46d9d6e30340c8731a + md5: 70caf8bb6cf39a0b6b7efc885f51c0fe depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 + - libgcc-ng >=12 + arch: x86_64 + platform: linux license: X11 AND BSD-3-Clause - size: 802321 - timestamp: 1724658775723 -- kind: conda - name: ncurses - version: '6.5' - build: hcccb83c_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-hcccb83c_1.conda + size: 889086 + timestamp: 1724658547447 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-hcccb83c_1.conda sha256: acad4cf1f57b12ee1e42995e6fac646fa06aa026529f05eb8c07eb0a84a47a84 md5: 91d49c85cacd92caa40cf375ef72a25d depends: - libgcc-ng >=12 + arch: aarch64 + platform: linux license: X11 AND BSD-3-Clause size: 924472 timestamp: 1724658573518 -- kind: conda - name: ncurses - version: '6.5' - build: he02047a_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-he02047a_1.conda - sha256: 6a1d5d8634c1a07913f1c525db6455918cbc589d745fac46d9d6e30340c8731a - md5: 70caf8bb6cf39a0b6b7efc885f51c0fe +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h7bae524_1.conda + sha256: 27d0b9ff78ad46e1f3a6c96c479ab44beda5f96def88e2fe626e0a49429d8afc + md5: cb2b0ea909b97b3d70cd3921d1445e1a depends: - - __glibc >=2.17,<3.0.a0 - - libgcc-ng >=12 + - __osx >=11.0 + arch: arm64 + platform: osx license: X11 AND BSD-3-Clause - size: 889086 - timestamp: 1724658547447 -- kind: conda - name: numpy - version: 1.26.4 - build: py312h470d778_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda - sha256: 23767677a7790bee5457d5e75ebd508b9a31c5354216f4310dd1acfca3f7a6f9 - md5: 9cebf5a06cb87d4569cd68df887af476 + size: 802321 + timestamp: 1724658775723 +- conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda + sha256: fe3459c75cf84dcef6ef14efcc4adb0ade66038ddd27cadb894f34f4797687d8 + md5: d8285bea2a350f63fab23bf460221f3f depends: - libblas >=3.9.0,<4.0a0 - libcblas >=3.9.0,<4.0a0 @@ -6306,101 +5040,86 @@ packages: - liblapack >=3.9.0,<4.0a0 - libstdcxx-ng >=12 - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 constrains: - numpy-base <0a0 + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD - size: 6614296 - timestamp: 1707225994762 -- kind: conda - name: numpy - version: 1.26.4 - build: py312h8442bc7_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda - sha256: c8841d6d6f61fd70ca80682efbab6bdb8606dc77c68d8acabfbd7c222054f518 - md5: d83fc83d589e2625a3451c9a7e21047c + size: 7484186 + timestamp: 1707225809722 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda + sha256: 23767677a7790bee5457d5e75ebd508b9a31c5354216f4310dd1acfca3f7a6f9 + md5: 9cebf5a06cb87d4569cd68df887af476 depends: - libblas >=3.9.0,<4.0a0 - libcblas >=3.9.0,<4.0a0 - - libcxx >=16 + - libgcc-ng >=12 - liblapack >=3.9.0,<4.0a0 + - libstdcxx-ng >=12 - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 constrains: - numpy-base <0a0 + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD - size: 6073136 - timestamp: 1707226249608 -- kind: conda - name: numpy - version: 1.26.4 - build: py312heda63a1_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda - sha256: fe3459c75cf84dcef6ef14efcc4adb0ade66038ddd27cadb894f34f4797687d8 - md5: d8285bea2a350f63fab23bf460221f3f + size: 6614296 + timestamp: 1707225994762 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda + sha256: c8841d6d6f61fd70ca80682efbab6bdb8606dc77c68d8acabfbd7c222054f518 + md5: d83fc83d589e2625a3451c9a7e21047c depends: - libblas >=3.9.0,<4.0a0 - libcblas >=3.9.0,<4.0a0 - - libgcc-ng >=12 + - libcxx >=16 - liblapack >=3.9.0,<4.0a0 - - libstdcxx-ng >=12 - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 constrains: - numpy-base <0a0 + arch: arm64 + platform: osx license: BSD-3-Clause license_family: BSD - size: 7484186 - timestamp: 1707225809722 -- kind: conda - name: openjpeg - version: 2.5.3 - build: h3f56577_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/openjpeg-2.5.3-h3f56577_0.conda - sha256: 92d310033e20538e896f4e4b1ea4205eb6604eee7c5c651c4965a0d8d3ca0f1d - md5: 04231368e4af50d11184b50e14250993 + size: 6073136 + timestamp: 1707226249608 +- conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.3-h5fbd93e_0.conda + sha256: 5bee706ea5ba453ed7fd9da7da8380dd88b865c8d30b5aaec14d2b6dd32dbc39 + md5: 9e5816bc95d285c115a3ebc2f8563564 depends: + - __glibc >=2.17,<3.0.a0 - libgcc >=13 - libpng >=1.6.44,<1.7.0a0 - libstdcxx >=13 - libtiff >=4.7.0,<4.8.0a0 - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux license: BSD-2-Clause license_family: BSD - size: 377796 - timestamp: 1733816683252 -- kind: conda - name: openjpeg - version: 2.5.3 - build: h5fbd93e_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.3-h5fbd93e_0.conda - sha256: 5bee706ea5ba453ed7fd9da7da8380dd88b865c8d30b5aaec14d2b6dd32dbc39 - md5: 9e5816bc95d285c115a3ebc2f8563564 + size: 342988 + timestamp: 1733816638720 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openjpeg-2.5.3-h3f56577_0.conda + sha256: 92d310033e20538e896f4e4b1ea4205eb6604eee7c5c651c4965a0d8d3ca0f1d + md5: 04231368e4af50d11184b50e14250993 depends: - - __glibc >=2.17,<3.0.a0 - libgcc >=13 - libpng >=1.6.44,<1.7.0a0 - libstdcxx >=13 - libtiff >=4.7.0,<4.8.0a0 - libzlib >=1.3.1,<2.0a0 + arch: aarch64 + platform: linux license: BSD-2-Clause license_family: BSD - size: 342988 - timestamp: 1733816638720 -- kind: conda - name: openjpeg - version: 2.5.3 - build: h8a3d83b_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/openjpeg-2.5.3-h8a3d83b_0.conda + size: 377796 + timestamp: 1733816683252 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/openjpeg-2.5.3-h8a3d83b_0.conda sha256: 1d59bc72ca7faac06d349c1a280f5cfb8a57ee5896f1e24225a997189d7418c7 md5: 4b71d78648dbcf68ce8bf22bb07ff838 depends: @@ -6409,67 +5128,50 @@ packages: - libpng >=1.6.44,<1.7.0a0 - libtiff >=4.7.0,<4.8.0a0 - libzlib >=1.3.1,<2.0a0 + arch: arm64 + platform: osx license: BSD-2-Clause license_family: BSD size: 319362 timestamp: 1733816781741 -- kind: conda - name: openssl - version: 3.4.0 - build: h7b32b05_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.0-h7b32b05_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.0-h7b32b05_1.conda sha256: f62f6bca4a33ca5109b6d571b052a394d836956d21b25b7ffd03376abf7a481f md5: 4ce6875f75469b2757a65e10a5d05e31 depends: - __glibc >=2.17,<3.0.a0 - ca-certificates - libgcc >=13 + arch: x86_64 + platform: linux license: Apache-2.0 license_family: Apache size: 2937158 timestamp: 1736086387286 -- kind: conda - name: openssl - version: 3.4.0 - build: h81ee809_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.0-h81ee809_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.0-hd08dc88_1.conda + sha256: 60d34454b861501d7355f25a7b39fdb5de8d56fca49b5bcbe8b8142b7d82dce4 + md5: e21c4767e783a58c373fdb99de6211bf + depends: + - ca-certificates + - libgcc >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 3469279 + timestamp: 1736088141230 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.0-h81ee809_1.conda sha256: 97772762abc70b3a537683ca9fc3ff3d6099eb64e4aba3b9c99e6fce48422d21 md5: 22f971393637480bda8c679f374d8861 depends: - __osx >=11.0 - ca-certificates + arch: arm64 + platform: osx license: Apache-2.0 license_family: Apache size: 2936415 timestamp: 1736086108693 -- kind: conda - name: openssl - version: 3.4.0 - build: hd08dc88_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.0-hd08dc88_1.conda - sha256: 60d34454b861501d7355f25a7b39fdb5de8d56fca49b5bcbe8b8142b7d82dce4 - md5: e21c4767e783a58c373fdb99de6211bf - depends: - - ca-certificates - - libgcc >=13 - license: Apache-2.0 - license_family: Apache - size: 3469279 - timestamp: 1736088141230 -- kind: conda - name: opentelemetry-api - version: 1.29.0 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.29.0-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.29.0-pyhd8ed1ab_1.conda sha256: 296280c8ace35c0a1cf72bed1077f248b3af903c3bf92332f1783a207cb5abdb md5: 307b05402c1a382f2f09426492dee8f8 depends: @@ -6480,13 +5182,7 @@ packages: license_family: APACHE size: 44166 timestamp: 1734132973331 -- kind: conda - name: opentelemetry-exporter-otlp-proto-common - version: 1.29.0 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.29.0-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.29.0-pyhd8ed1ab_0.conda sha256: ae9776efe52564e0d6711cfcee7c54439273e57a3999f7f796f66e862f58aae9 md5: 0c02e74d26bce3fec93b227cf7ea6e6b depends: @@ -6497,14 +5193,7 @@ packages: license_family: APACHE size: 18922 timestamp: 1734310457116 -- kind: conda - name: opentelemetry-exporter-otlp-proto-http - version: 1.29.0 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.29.0-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.29.0-pyhd8ed1ab_1.conda sha256: 5d61db9d5b4f91b3932f5f2348920d5b7fdaa09e52c8ea054cf7bf3f21677c9c md5: 223f4e56a29601c887f0dc467034af5b depends: @@ -6520,13 +5209,7 @@ packages: license_family: APACHE size: 17147 timestamp: 1734345675510 -- kind: conda - name: opentelemetry-exporter-prometheus - version: 1.12.0rc1 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-prometheus-1.12.0rc1-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-prometheus-1.12.0rc1-pyhd8ed1ab_0.conda sha256: b8239230dbbdb491401e41b53bd9f21d60551cedef1a8d5807fca1bf9bdd331c md5: 1ddc95052b31147d1e10d818cf519cf5 depends: @@ -6538,13 +5221,7 @@ packages: license_family: APACHE size: 14721 timestamp: 1695214221489 -- kind: conda - name: opentelemetry-proto - version: 1.29.0 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.29.0-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.29.0-pyhd8ed1ab_0.conda sha256: 200a7cb8acc8a0ddd6ef55c5460cec871b6a265929b240a0296c0ccb9c8d9758 md5: e2a6d2ad10b813c7fdc1c64aac376128 depends: @@ -6554,13 +5231,7 @@ packages: license_family: APACHE size: 37235 timestamp: 1734291034372 -- kind: conda - name: opentelemetry-sdk - version: 1.29.0 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.29.0-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.29.0-pyhd8ed1ab_0.conda sha256: 7b36629d8b8be8a019fcfd1518d7b7f862dd25de96f8adcadb93e4fd12cf9bd6 md5: 2a8893f06e6ebda4bfa78875bc923ea4 depends: @@ -6573,13 +5244,7 @@ packages: license_family: APACHE size: 77645 timestamp: 1734297838999 -- kind: conda - name: opentelemetry-semantic-conventions - version: 0.50b0 - build: pyh3cfb1c2_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.50b0-pyh3cfb1c2_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.50b0-pyh3cfb1c2_0.conda sha256: 6526e70368d5bf66ef0eaa51fb800d53782dde71a24bd38f40139919a6f784dc md5: f7111fa4188d646c8108e232d024cb99 depends: @@ -6590,35 +5255,7 @@ packages: license_family: APACHE size: 86084 timestamp: 1734208980168 -- kind: conda - name: orc - version: 2.0.3 - build: h0ff2369_2 - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/orc-2.0.3-h0ff2369_2.conda - sha256: cca330695f3bdb8c0e46350c29cd4af3345865544e36f1d7c9ba9190ad22f5f4 - md5: 24b1897c0d24afbb70704ba998793b78 - depends: - - __osx >=11.0 - - libcxx >=18 - - libprotobuf >=5.28.3,<5.28.4.0a0 - - libzlib >=1.3.1,<2.0a0 - - lz4-c >=1.10.0,<1.11.0a0 - - snappy >=1.2.1,<1.3.0a0 - - tzdata - - zstd >=1.5.6,<1.6.0a0 - license: Apache-2.0 - license_family: Apache - size: 438520 - timestamp: 1735630624140 -- kind: conda - name: orc - version: 2.0.3 - build: h12ee42a_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/orc-2.0.3-h12ee42a_2.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/orc-2.0.3-h12ee42a_2.conda sha256: dff5cc8023905782c86b3459055f26d4b97890e403b0698477c9fed15d8669cc md5: 4f6f9f3f80354ad185e276c120eac3f0 depends: @@ -6631,17 +5268,13 @@ packages: - snappy >=1.2.1,<1.3.0a0 - tzdata - zstd >=1.5.6,<1.6.0a0 + arch: x86_64 + platform: linux license: Apache-2.0 license_family: Apache size: 1188881 timestamp: 1735630209320 -- kind: conda - name: orc - version: 2.0.3 - build: hdd485aa_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/orc-2.0.3-hdd485aa_2.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/orc-2.0.3-hdd485aa_2.conda sha256: b6c67542352a86cdf143c3066d5cda855b74454a156eedcd8958b494c6a32a83 md5: d19f01b42e5d6a2908b65df435aff42f depends: @@ -6653,18 +5286,31 @@ packages: - snappy >=1.2.1,<1.3.0a0 - tzdata - zstd >=1.5.6,<1.6.0a0 + arch: aarch64 + platform: linux license: Apache-2.0 license_family: Apache size: 1167714 timestamp: 1735630248837 -- kind: conda - name: packaging - version: '24.2' - build: pyhd8ed1ab_2 - build_number: 2 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/orc-2.0.3-h0ff2369_2.conda + sha256: cca330695f3bdb8c0e46350c29cd4af3345865544e36f1d7c9ba9190ad22f5f4 + md5: 24b1897c0d24afbb70704ba998793b78 + depends: + - __osx >=11.0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libzlib >=1.3.1,<2.0a0 + - lz4-c >=1.10.0,<1.11.0a0 + - snappy >=1.2.1,<1.3.0a0 + - tzdata + - zstd >=1.5.6,<1.6.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 438520 + timestamp: 1735630624140 +- conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda sha256: da157b19bcd398b9804c5c52fc000fcb8ab0525bdb9c70f95beaa0bb42f85af1 md5: 3bfed7e6228ebf2f7b9eaa47f1b4e2aa depends: @@ -6673,13 +5319,27 @@ packages: license_family: APACHE size: 60164 timestamp: 1733203368787 -- kind: conda - name: pandas - version: 2.2.3 - build: py312ha2895bd_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/pandas-2.2.3-py312ha2895bd_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.3-py312hf9745cd_1.conda + sha256: ad275a83bfebfa8a8fee9b0569aaf6f513ada6a246b2f5d5b85903d8ca61887e + md5: 8bce4f6caaf8c5448c7ac86d87e26b4b + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + - numpy >=1.19,<3 + - numpy >=1.22.4 + - python >=3.12,<3.13.0a0 + - python-dateutil >=2.8.1 + - python-tzdata >=2022a + - python_abi 3.12.* *_cp312 + - pytz >=2020.1,<2024.2 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 15436913 + timestamp: 1726879054912 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pandas-2.2.3-py312ha2895bd_1.conda sha256: 585e05f95d14afe3df43ded14f86800c70da26b27e27b59de95932f8888af5d3 md5: 80b873ac4fdf36641afa0eaafff3a664 depends: @@ -6693,17 +5353,13 @@ packages: - python-tzdata >=2022a - python_abi 3.12.* *_cp312 - pytz >=2020.1,<2024.2 + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD size: 15159625 timestamp: 1726879151211 -- kind: conda - name: pandas - version: 2.2.3 - build: py312hcd31e36_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.3-py312hcd31e36_1.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.3-py312hcd31e36_1.conda sha256: ff0cb54b5d058c7987b4a0984066e893642d1865a7bb695294b6172e2fcdc457 md5: c68bfa69e6086c381c74e16fd72613a8 depends: @@ -6717,42 +5373,13 @@ packages: - python-tzdata >=2022a - python_abi 3.12.* *_cp312 - pytz >=2020.1,<2024.2 + arch: arm64 + platform: osx license: BSD-3-Clause license_family: BSD size: 14470437 timestamp: 1726878887799 -- kind: conda - name: pandas - version: 2.2.3 - build: py312hf9745cd_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.3-py312hf9745cd_1.conda - sha256: ad275a83bfebfa8a8fee9b0569aaf6f513ada6a246b2f5d5b85903d8ca61887e - md5: 8bce4f6caaf8c5448c7ac86d87e26b4b - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libstdcxx >=13 - - numpy >=1.19,<3 - - numpy >=1.22.4 - - python >=3.12,<3.13.0a0 - - python-dateutil >=2.8.1 - - python-tzdata >=2022a - - python_abi 3.12.* *_cp312 - - pytz >=2020.1,<2024.2 - license: BSD-3-Clause - license_family: BSD - size: 15436913 - timestamp: 1726879054912 -- kind: conda - name: pathspec - version: 0.12.1 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda sha256: 9f64009cdf5b8e529995f18e03665b03f5d07c0b17445b8badef45bde76249ee md5: 617f15191456cc6a13db418a275435e5 depends: @@ -6761,18 +5388,14 @@ packages: license_family: MOZILLA size: 41075 timestamp: 1733233471940 -- kind: conda - name: pillow - version: 11.1.0 - build: py312h50aef2c_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-11.1.0-py312h50aef2c_0.conda - sha256: b29b7c915053e06a7a5b4118760202c572c9c35d23bd6ce8e73270b6a50e50ee - md5: 94d6ba8cd468668a9fb04193b0f4b36e +- conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-11.1.0-py312h80c1187_0.conda + sha256: 5c347962202b55ae4d8a463e0555c5c6ca33396266a08284bf1384399894e541 + md5: d3894405f05b2c0f351d5de3ae26fa9c depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 - freetype >=2.12.1,<3.0a0 - lcms2 >=2.16,<3.0a0 + - libgcc >=13 - libjpeg-turbo >=3.0.0,<4.0a0 - libtiff >=4.7.0,<4.8.0a0 - libwebp-base >=1.5.0,<2.0a0 @@ -6780,18 +5403,14 @@ packages: - libzlib >=1.3.1,<2.0a0 - openjpeg >=2.5.3,<3.0a0 - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 - tk >=8.6.13,<8.7.0a0 + arch: x86_64 + platform: linux license: HPND - size: 42852329 - timestamp: 1735930118976 -- kind: conda - name: pillow - version: 11.1.0 - build: py312h719f0cf_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/pillow-11.1.0-py312h719f0cf_0.conda + size: 42749785 + timestamp: 1735929845390 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pillow-11.1.0-py312h719f0cf_0.conda sha256: 7559556ffc44bda777f85c2e5acd6b5756fa5822c0271b329b7b9a3c6bb20349 md5: 77e0ec0a6fc847d317f204aa15b59f6b depends: @@ -6807,22 +5426,18 @@ packages: - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 - tk >=8.6.13,<8.7.0a0 + arch: aarch64 + platform: linux license: HPND size: 41362848 timestamp: 1735932311857 -- kind: conda - name: pillow - version: 11.1.0 - build: py312h80c1187_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/pillow-11.1.0-py312h80c1187_0.conda - sha256: 5c347962202b55ae4d8a463e0555c5c6ca33396266a08284bf1384399894e541 - md5: d3894405f05b2c0f351d5de3ae26fa9c +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-11.1.0-py312h50aef2c_0.conda + sha256: b29b7c915053e06a7a5b4118760202c572c9c35d23bd6ce8e73270b6a50e50ee + md5: 94d6ba8cd468668a9fb04193b0f4b36e depends: - - __glibc >=2.17,<3.0.a0 + - __osx >=11.0 - freetype >=2.12.1,<3.0a0 - lcms2 >=2.16,<3.0a0 - - libgcc >=13 - libjpeg-turbo >=3.0.0,<4.0a0 - libtiff >=4.7.0,<4.8.0a0 - libwebp-base >=1.5.0,<2.0a0 @@ -6830,19 +5445,15 @@ packages: - libzlib >=1.3.1,<2.0a0 - openjpeg >=2.5.3,<3.0a0 - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 - tk >=8.6.13,<8.7.0a0 + arch: arm64 + platform: osx license: HPND - size: 42749785 - timestamp: 1735929845390 -- kind: conda - name: platformdirs - version: 4.3.6 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + size: 42852329 + timestamp: 1735930118976 +- conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda sha256: bb50f6499e8bc1d1a26f17716c97984671121608dc0c3ecd34858112bce59a27 md5: 577852c7e53901ddccc7e6a9959ddebe depends: @@ -6851,13 +5462,7 @@ packages: license_family: MIT size: 20448 timestamp: 1733232756001 -- kind: conda - name: prometheus_client - version: 0.21.1 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda sha256: bc8f00d5155deb7b47702cb8370f233935704100dbc23e30747c161d1b6cf3ab md5: 3e01e386307acc60b2f89af0b2e161aa depends: @@ -6866,12 +5471,7 @@ packages: license_family: Apache size: 49002 timestamp: 1733327434163 -- kind: conda - name: propcache - version: 0.2.1 - build: py312h66e93f0_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.1-py312h66e93f0_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.1-py312h66e93f0_0.conda sha256: 5771311fb5ded614ca349c92579a0b752af55a310f40b71fc533e20625965391 md5: 55d5742a696d7da1c1262e99b6217ceb depends: @@ -6879,16 +5479,13 @@ packages: - libgcc >=13 - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux license: Apache-2.0 license_family: APACHE size: 52747 timestamp: 1733391916349 -- kind: conda - name: propcache - version: 0.2.1 - build: py312hb2c0f52_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.2.1-py312hb2c0f52_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.2.1-py312hb2c0f52_0.conda sha256: c7f62c11ed929ccf1f3d4a1e200e28be01e8d0e0786bf8f76c5893f2ea681e1b md5: 50ab8953e7ff1333a4a47cda32e68123 depends: @@ -6896,16 +5493,13 @@ packages: - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux license: Apache-2.0 license_family: APACHE size: 52484 timestamp: 1733391993461 -- kind: conda - name: propcache - version: 0.2.1 - build: py312hea69d52_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.1-py312hea69d52_0.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.1-py312hea69d52_0.conda sha256: f8c266c494aa1e4cfb8bf0b6fca060044b2f3d65afe4c5062ebeea382e77aa6d md5: c84e3dd97fe25a17322c4a0f670c6750 depends: @@ -6913,16 +5507,13 @@ packages: - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx license: Apache-2.0 license_family: APACHE size: 48225 timestamp: 1733392308901 -- kind: conda - name: protobuf - version: 5.28.3 - build: py312h2ec8cdc_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/protobuf-5.28.3-py312h2ec8cdc_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/protobuf-5.28.3-py312h2ec8cdc_0.conda sha256: acb2e0ee948e3941f8ed191cb77f654e06538638aed8ccd71cbc78a15242ebbb md5: 9d7e427d159c1b2d516cc047ff177c48 depends: @@ -6933,16 +5524,13 @@ packages: - python_abi 3.12.* *_cp312 constrains: - libprotobuf 5.28.3 + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD size: 464794 timestamp: 1731366525051 -- kind: conda - name: protobuf - version: 5.28.3 - build: py312h6f74592_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/protobuf-5.28.3-py312h6f74592_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/protobuf-5.28.3-py312h6f74592_0.conda sha256: 9c575d5035c7ecb114ab9e17906c0a54087d9598dd6a2104c02fe33f0a29dd46 md5: 06513608c94fb1c1b17136ace77063a9 depends: @@ -6953,16 +5541,13 @@ packages: - python_abi 3.12.* *_cp312 constrains: - libprotobuf 5.28.3 + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD size: 473242 timestamp: 1731366577844 -- kind: conda - name: protobuf - version: 5.28.3 - build: py312hd8f9ff3_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/protobuf-5.28.3-py312hd8f9ff3_0.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/protobuf-5.28.3-py312hd8f9ff3_0.conda sha256: 9d572a97419bdace14d7c7cc8cc8c4bf2dcb22b56965dac87a27fbdb5061b926 md5: 5afbe52a59f04dd1fe566d0d17590d7e depends: @@ -6973,64 +5558,49 @@ packages: - python_abi 3.12.* *_cp312 constrains: - libprotobuf 5.28.3 + arch: arm64 + platform: osx license: BSD-3-Clause license_family: BSD size: 448803 timestamp: 1731367010746 -- kind: conda - name: pthread-stubs - version: '0.4' - build: h86ecc28_1002 - build_number: 1002 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/pthread-stubs-0.4-h86ecc28_1002.conda - sha256: 977dfb0cb3935d748521dd80262fe7169ab82920afd38ed14b7fee2ea5ec01ba - md5: bb5a90c93e3bac3d5690acf76b4a6386 - depends: - - libgcc >=13 - license: MIT - license_family: MIT - size: 8342 - timestamp: 1726803319942 -- kind: conda - name: pthread-stubs - version: '0.4' - build: hb9d3cd8_1002 - build_number: 1002 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda sha256: 9c88f8c64590e9567c6c80823f0328e58d3b1efb0e1c539c0315ceca764e0973 md5: b3c17d95b5a10c6e64a21fa17573e70e depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 + arch: x86_64 + platform: linux license: MIT license_family: MIT size: 8252 timestamp: 1726802366959 -- kind: conda - name: pthread-stubs - version: '0.4' - build: hd74edd7_1002 - build_number: 1002 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/pthread-stubs-0.4-hd74edd7_1002.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pthread-stubs-0.4-h86ecc28_1002.conda + sha256: 977dfb0cb3935d748521dd80262fe7169ab82920afd38ed14b7fee2ea5ec01ba + md5: bb5a90c93e3bac3d5690acf76b4a6386 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 8342 + timestamp: 1726803319942 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pthread-stubs-0.4-hd74edd7_1002.conda sha256: 8ed65e17fbb0ca944bfb8093b60086e3f9dd678c3448b5de212017394c247ee3 md5: 415816daf82e0b23a736a069a75e9da7 depends: - __osx >=11.0 + arch: arm64 + platform: osx license: MIT license_family: MIT size: 8381 timestamp: 1726802424786 -- kind: conda - name: pyarrow - version: 18.1.0 - build: py312h1f38498_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-18.1.0-py312h1f38498_0.conda - sha256: 06c0e208d5bf15051874097366c8e8e5db176dffba38526f227a34e80cc8e9bc - md5: 3710616b880b31d0c8afd8ae7e12392a +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-18.1.0-py312h7900ff3_0.conda + sha256: 46a61c29375d3bf1933eae61c7861394c168898915d59fc99bf05e46de2ff5ad + md5: ac65b70df28687c6af4270923c020bdd depends: - libarrow-acero 18.1.0.* - libarrow-dataset 18.1.0.* @@ -7039,18 +5609,15 @@ packages: - pyarrow-core 18.1.0 *_0_* - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux license: Apache-2.0 license_family: APACHE - size: 25375 - timestamp: 1732610892198 -- kind: conda - name: pyarrow - version: 18.1.0 - build: py312h7900ff3_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-18.1.0-py312h7900ff3_0.conda - sha256: 46a61c29375d3bf1933eae61c7861394c168898915d59fc99bf05e46de2ff5ad - md5: ac65b70df28687c6af4270923c020bdd + size: 25213 + timestamp: 1732610785600 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-18.1.0-py312h8025657_0.conda + sha256: 49db959887cb89b44053a44a98d0f35644fc0b2003587492f02b56046de0b60a + md5: 9bb7d32e96a5dcb5ea7fd90a11a83656 depends: - libarrow-acero 18.1.0.* - libarrow-dataset 18.1.0.* @@ -7059,18 +5626,15 @@ packages: - pyarrow-core 18.1.0 *_0_* - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux license: Apache-2.0 license_family: APACHE - size: 25213 - timestamp: 1732610785600 -- kind: conda - name: pyarrow - version: 18.1.0 - build: py312h8025657_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-18.1.0-py312h8025657_0.conda - sha256: 49db959887cb89b44053a44a98d0f35644fc0b2003587492f02b56046de0b60a - md5: 9bb7d32e96a5dcb5ea7fd90a11a83656 + size: 25374 + timestamp: 1732611006864 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-18.1.0-py312h1f38498_0.conda + sha256: 06c0e208d5bf15051874097366c8e8e5db176dffba38526f227a34e80cc8e9bc + md5: 3710616b880b31d0c8afd8ae7e12392a depends: - libarrow-acero 18.1.0.* - libarrow-dataset 18.1.0.* @@ -7079,16 +5643,13 @@ packages: - pyarrow-core 18.1.0 *_0_* - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx license: Apache-2.0 license_family: APACHE - size: 25374 - timestamp: 1732611006864 -- kind: conda - name: pyarrow-core - version: 18.1.0 - build: py312h01725c0_0_cpu - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-18.1.0-py312h01725c0_0_cpu.conda + size: 25375 + timestamp: 1732610892198 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-18.1.0-py312h01725c0_0_cpu.conda sha256: 948a4161c56f846d374a3721a657e58ddbc992a29b3b3e7a6411975c30361d94 md5: ee80934a6c280ff8635f8db5dec11e04 depends: @@ -7102,16 +5663,13 @@ packages: constrains: - numpy >=1.21,<3 - apache-arrow-proc =*=cpu + arch: x86_64 + platform: linux license: Apache-2.0 license_family: APACHE size: 4612916 timestamp: 1732610377259 -- kind: conda - name: pyarrow-core - version: 18.1.0 - build: py312h66f7834_0_cpu - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-18.1.0-py312h66f7834_0_cpu.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-18.1.0-py312h66f7834_0_cpu.conda sha256: e7eb062145be554c23dfefa0ebe8c5f6ae8c59635117a6921e66403d6addcda3 md5: 3390c8b8f57e85506c92a37cf750bdd7 depends: @@ -7125,16 +5683,13 @@ packages: constrains: - numpy >=1.21,<3 - apache-arrow-proc =*=cpu + arch: aarch64 + platform: linux license: Apache-2.0 license_family: APACHE size: 4406662 timestamp: 1732610939832 -- kind: conda - name: pyarrow-core - version: 18.1.0 - build: py312hc40f475_0_cpu - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-18.1.0-py312hc40f475_0_cpu.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-18.1.0-py312hc40f475_0_cpu.conda sha256: 063eb168a29d4ce6d9ed865e9e1ad3b6e141712189955a79e06b24ddc0cbbc9c md5: 9859e7c4b94bbf69772dbf0511101cec depends: @@ -7148,18 +5703,13 @@ packages: constrains: - numpy >=1.21,<3 - apache-arrow-proc =*=cpu + arch: arm64 + platform: osx license: Apache-2.0 license_family: APACHE size: 3909116 timestamp: 1732610863261 -- kind: conda - name: pycparser - version: '2.22' - build: pyh29332c3_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda sha256: 79db7928d13fab2d892592223d7570f5061c192f27b9febd1a418427b719acc6 md5: 12c566707c80111f9799308d9e265aef depends: @@ -7169,15 +5719,9 @@ packages: license_family: BSD size: 110100 timestamp: 1733195786147 -- kind: conda - name: pydantic - version: 2.10.4 - build: pyh3cfb1c2_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.4-pyh3cfb1c2_0.conda - sha256: e68400714532a33f34b44ddaee3e27e8dd6c83c3f31c7892ec10b84d13aa8b59 - md5: 93bccf4d7a58c9140d59491de21e044b +- conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.5-pyh3cfb1c2_0.conda + sha256: 0f32c30ddc610cd1113335d8b4f311f20f4d72754b7c1a5d0d9493f597cf11d2 + md5: e8ea30925c8271c4128375810d7d3d7a depends: - annotated-types >=0.6.0 - pydantic-core 2.27.2 @@ -7186,14 +5730,9 @@ packages: - typing_extensions >=4.12.2 license: MIT license_family: MIT - size: 296557 - timestamp: 1734609427697 -- kind: conda - name: pydantic-core - version: 2.27.2 - build: py312h12e396e_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.27.2-py312h12e396e_0.conda + size: 296805 + timestamp: 1736458364196 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.27.2-py312h12e396e_0.conda sha256: 81602a4592ad2ac1a1cb57372fd25214e63b1c477d5818b0c21cde0f1f85c001 md5: bae01b2563030c085f5158c518b84e86 depends: @@ -7204,16 +5743,13 @@ packages: - typing-extensions >=4.6.0,!=4.7.0 constrains: - __glibc >=2.17 + arch: x86_64 + platform: linux license: MIT license_family: MIT size: 1641402 timestamp: 1734571789895 -- kind: conda - name: pydantic-core - version: 2.27.2 - build: py312h8cbf658_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/pydantic-core-2.27.2-py312h8cbf658_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pydantic-core-2.27.2-py312h8cbf658_0.conda sha256: 623e0f3846f15d035ce7ab7ae445fc8d9e547b6684ab55858b6f44510d24b097 md5: 9677f6ab4bf27ba3c2aee70d08c7b27c depends: @@ -7224,16 +5760,13 @@ packages: - typing-extensions >=4.6.0,!=4.7.0 constrains: - __glibc >=2.17 + arch: aarch64 + platform: linux license: MIT license_family: MIT size: 1505076 timestamp: 1734571966615 -- kind: conda - name: pydantic-core - version: 2.27.2 - build: py312hcd83bfe_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.27.2-py312hcd83bfe_0.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.27.2-py312hcd83bfe_0.conda sha256: cfa7201f890d5d08ce29ff70e65a96787d5793a1718776733666b44bbd4a1205 md5: dcb307e02f17d38c6e1cbfbf8c602852 depends: @@ -7244,17 +5777,13 @@ packages: - typing-extensions >=4.6.0,!=4.7.0 constrains: - __osx >=11.0 + arch: arm64 + platform: osx license: MIT license_family: MIT size: 1593461 timestamp: 1734571986644 -- kind: conda - name: pydantic-settings - version: 2.7.1 - build: pyh3cfb1c2_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.7.1-pyh3cfb1c2_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.7.1-pyh3cfb1c2_0.conda sha256: 082fb1ec29917d2c9ed6a862cb8eb9beb88c208ea62c9fef1aeb5f4f3e0e0b06 md5: d71d76b62bed332b037d7adfc0f3989a depends: @@ -7265,13 +5794,7 @@ packages: license_family: MIT size: 31822 timestamp: 1735650532951 -- kind: conda - name: pygments - version: 2.19.1 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda sha256: 28a3e3161390a9d23bc02b4419448f8d27679d9e2c250e29849e37749c8de86b md5: 232fb4577b6687b2d503ef8e254270c9 depends: @@ -7280,29 +5803,7 @@ packages: license_family: BSD size: 888600 timestamp: 1736243563082 -- kind: conda - name: pyinstrument - version: 5.0.0 - build: py312h0bf5046_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/pyinstrument-5.0.0-py312h0bf5046_0.conda - sha256: 6879d52fb0ec2258e2850476786a652c394220d53883c53691ed5390183ae925 - md5: f0e4a98d54477083ddc9d2f33507f848 - depends: - - __osx >=11.0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - license: BSD-3-Clause - license_family: BSD - size: 181512 - timestamp: 1728714205508 -- kind: conda - name: pyinstrument - version: 5.0.0 - build: py312h66e93f0_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/pyinstrument-5.0.0-py312h66e93f0_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyinstrument-5.0.0-py312h66e93f0_0.conda sha256: 8a006507a4003fb01eeee2f9ba79f994478694766ea3b445273da5c11cf8e763 md5: 798f42d9bfdf125dc80ffbec0e96e0b6 depends: @@ -7310,16 +5811,13 @@ packages: - libgcc >=13 - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD size: 182021 timestamp: 1728714164706 -- kind: conda - name: pyinstrument - version: 5.0.0 - build: py312hb2c0f52_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/pyinstrument-5.0.0-py312hb2c0f52_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyinstrument-5.0.0-py312hb2c0f52_0.conda sha256: 7967b94b8f0ff75847302444e9c43ac11a391d74da24cb14fba1049fac9e5ba9 md5: 5274663cb05dfbe316db50af6da4389f depends: @@ -7327,18 +5825,27 @@ packages: - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD size: 183141 timestamp: 1728714267954 -- kind: conda - name: pysocks - version: 1.7.1 - build: pyha55dd90_7 - build_number: 7 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyinstrument-5.0.0-py312h0bf5046_0.conda + sha256: 6879d52fb0ec2258e2850476786a652c394220d53883c53691ed5390183ae925 + md5: f0e4a98d54477083ddc9d2f33507f848 + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 181512 + timestamp: 1728714205508 +- conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda sha256: ba3b032fa52709ce0d9fd388f63d330a026754587a2f461117cac9ab73d8d0d8 md5: 461219d1a5bd61342293efa2c0c90eac depends: @@ -7348,18 +5855,14 @@ packages: license_family: BSD size: 21085 timestamp: 1733217331982 -- kind: conda - name: python - version: 3.12.8 - build: h1683364_1_cpython +- conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.8-h9e4cc4f_1_cpython.conda build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.8-h1683364_1_cpython.conda - sha256: 85573582d5b0f79923fed0a8365d3d74d21eee9f0a5fa1b9345f191e006363ab - md5: 09ec612ea05370989eaa3d81abf0f369 + sha256: 3f0e0518c992d8ccfe62b189125721309836fe48a010dc424240583e157f9ff0 + md5: 7fd2fd79436d9b473812f14e86746844 depends: + - __glibc >=2.17,<3.0.a0 - bzip2 >=1.0.8,<2.0a0 - - ld_impl_linux-aarch64 >=2.36.1 + - ld_impl_linux-64 >=2.36.1 - libexpat >=2.6.4,<3.0a0 - libffi >=3.4,<4.0a0 - libgcc >=13 @@ -7376,22 +5879,18 @@ packages: - tzdata constrains: - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux license: Python-2.0 - size: 13760816 - timestamp: 1733407890896 -- kind: conda - name: python - version: 3.12.8 - build: h9e4cc4f_1_cpython + size: 31565686 + timestamp: 1733410597922 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.8-h1683364_1_cpython.conda build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.8-h9e4cc4f_1_cpython.conda - sha256: 3f0e0518c992d8ccfe62b189125721309836fe48a010dc424240583e157f9ff0 - md5: 7fd2fd79436d9b473812f14e86746844 + sha256: 85573582d5b0f79923fed0a8365d3d74d21eee9f0a5fa1b9345f191e006363ab + md5: 09ec612ea05370989eaa3d81abf0f369 depends: - - __glibc >=2.17,<3.0.a0 - bzip2 >=1.0.8,<2.0a0 - - ld_impl_linux-64 >=2.36.1 + - ld_impl_linux-aarch64 >=2.36.1 - libexpat >=2.6.4,<3.0a0 - libffi >=3.4,<4.0a0 - libgcc >=13 @@ -7408,16 +5907,13 @@ packages: - tzdata constrains: - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux license: Python-2.0 - size: 31565686 - timestamp: 1733410597922 -- kind: conda - name: python - version: 3.12.8 - build: hc22306f_1_cpython + size: 13760816 + timestamp: 1733407890896 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.8-hc22306f_1_cpython.conda build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.8-hc22306f_1_cpython.conda sha256: 7586a711b1b08a9df8864e26efdc06980bdfb0e18d5ac4651d0fee30a8d3e3a0 md5: 54ca5b5d92ef3a3ba61e195ee882a518 depends: @@ -7435,17 +5931,12 @@ packages: - tzdata constrains: - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx license: Python-2.0 size: 12998673 timestamp: 1733408900971 -- kind: conda - name: python-dateutil - version: 2.9.0.post0 - build: pyhff2d567_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda sha256: a50052536f1ef8516ed11a844f9413661829aa083304dc624c5925298d078d79 md5: 5ba79d7c71f03c678c8ead841f347d6e depends: @@ -7455,14 +5946,7 @@ packages: license_family: APACHE size: 222505 timestamp: 1733215763718 -- kind: conda - name: python-dotenv - version: 1.0.1 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda sha256: 99713f6b534fef94995c6c16fd21d59f3548784e9111775d692bdc7c44678f02 md5: e5c6ed218664802d305e79cc2d4491de depends: @@ -7471,13 +5955,7 @@ packages: license_family: BSD size: 24215 timestamp: 1733243277223 -- kind: conda - name: python-json-logger - version: 2.0.7 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda sha256: 4790787fe1f4e8da616edca4acf6a4f8ed4e7c6967aa31b920208fc8f95efcca md5: a61bf9ec79426938ff785eb69dbb1960 depends: @@ -7486,13 +5964,7 @@ packages: license_family: BSD size: 13383 timestamp: 1677079727691 -- kind: conda - name: python-multipart - version: 0.0.20 - build: pyhff2d567_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.20-pyhff2d567_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.20-pyhff2d567_0.conda sha256: 1b03678d145b1675b757cba165a0d9803885807792f7eb4495e48a38858c3cca md5: a28c984e0429aff3ab7386f7de56de6f depends: @@ -7501,14 +5973,7 @@ packages: license_family: Apache size: 27913 timestamp: 1734420869885 -- kind: conda - name: python-tzdata - version: '2024.2' - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_1.conda sha256: 57c9a02ec25926fb48edca59b9ede107823e5d5c473b94a0e05cc0b9a193a642 md5: c0def296b2f6d2dd7b030c2a7f66bb1f depends: @@ -7517,32 +5982,22 @@ packages: license_family: APACHE size: 142235 timestamp: 1733235414217 -- kind: conda - name: python-xxhash - version: 3.5.0 - build: py312h024a12e_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/python-xxhash-3.5.0-py312h024a12e_1.conda - sha256: 28204ef48f028a4d872e22040da0dad7ebd703549b010a1bb511b6dd94cf466d - md5: 266fe1ae54a7bb17990206664d0f0ae4 +- conda: https://conda.anaconda.org/conda-forge/linux-64/python-xxhash-3.5.0-py312h66e93f0_1.conda + sha256: 20851b1e59fee127d49e01fc73195a88ab0779f103b7d6ffc90d11142a83678f + md5: 39aed2afe4d0cf76ab3d6b09eecdbea7 depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 - xxhash >=0.8.2,<0.8.3.0a0 + arch: x86_64 + platform: linux license: BSD-2-Clause license_family: BSD - size: 21765 - timestamp: 1725272382968 -- kind: conda - name: python-xxhash - version: 3.5.0 - build: py312h52516f5_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/python-xxhash-3.5.0-py312h52516f5_1.conda + size: 23162 + timestamp: 1725272139519 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-xxhash-3.5.0-py312h52516f5_1.conda sha256: 0fa5ba80073a43391ee90303814adbc9fd826175de1fdac273ba0e5b711aa255 md5: 591c4ae6d8338dfd07b951e00433a405 depends: @@ -7550,81 +6005,64 @@ packages: - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 - xxhash >=0.8.2,<0.8.3.0a0 + arch: aarch64 + platform: linux license: BSD-2-Clause license_family: BSD size: 23589 timestamp: 1725273317965 -- kind: conda - name: python-xxhash - version: 3.5.0 - build: py312h66e93f0_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/python-xxhash-3.5.0-py312h66e93f0_1.conda - sha256: 20851b1e59fee127d49e01fc73195a88ab0779f103b7d6ffc90d11142a83678f - md5: 39aed2afe4d0cf76ab3d6b09eecdbea7 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-xxhash-3.5.0-py312h024a12e_1.conda + sha256: 28204ef48f028a4d872e22040da0dad7ebd703549b010a1bb511b6dd94cf466d + md5: 266fe1ae54a7bb17990206664d0f0ae4 depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 + - __osx >=11.0 - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 - xxhash >=0.8.2,<0.8.3.0a0 + arch: arm64 + platform: osx license: BSD-2-Clause license_family: BSD - size: 23162 - timestamp: 1725272139519 -- kind: conda - name: python_abi - version: '3.12' - build: 5_cp312 + size: 21765 + timestamp: 1725272382968 +- conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda build_number: 5 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda sha256: d10e93d759931ffb6372b45d65ff34d95c6000c61a07e298d162a3bc2accebb0 md5: 0424ae29b104430108f5218a66db7260 constrains: - python 3.12.* *_cpython + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD size: 6238 timestamp: 1723823388266 -- kind: conda - name: python_abi - version: '3.12' - build: 5_cp312 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.12-5_cp312.conda build_number: 5 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.12-5_cp312.conda sha256: 5ccdad9981753cc4a2d126e356673a21c0cd5b34e209cb8d476a3947d4ad9b39 md5: 62b20f305498284a07dc6c45fd0e5c87 constrains: - python 3.12.* *_cpython + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD size: 6329 timestamp: 1723823366253 -- kind: conda - name: python_abi - version: '3.12' - build: 5_cp312 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-5_cp312.conda build_number: 5 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-5_cp312.conda sha256: 49d624e4b809c799d2bf257b22c23cf3fc4460f5570d9a58e7ad86350aeaa1f4 md5: b76f9b1c862128e56ac7aa8cd2333de9 constrains: - python 3.12.* *_cpython + arch: arm64 + platform: osx license: BSD-3-Clause license_family: BSD size: 6278 timestamp: 1723823099686 -- kind: conda - name: pytz - version: '2024.1' - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda sha256: 1a7d6b233f7e6e3bbcbad054c8fd51e690a67b129a899a056a5e45dd9f00cb41 md5: 3eeeeb9e4827ace8c0c1419c85d590ad depends: @@ -7633,32 +6071,7 @@ packages: license_family: MIT size: 188538 timestamp: 1706886944988 -- kind: conda - name: pyyaml - version: 6.0.2 - build: py312h024a12e_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py312h024a12e_1.conda - sha256: b06f1c15fb39695bbf707ae8fb554b9a77519af577b5556784534c7db10b52e3 - md5: 1ee23620cf46cb15900f70a1300bae55 - depends: - - __osx >=11.0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - - yaml >=0.2.5,<0.3.0a0 - license: MIT - license_family: MIT - size: 187143 - timestamp: 1725456547263 -- kind: conda - name: pyyaml - version: 6.0.2 - build: py312h66e93f0_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py312h66e93f0_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py312h66e93f0_1.conda sha256: a60705971e958724168f2ebbb8ed4853067f1d3f7059843df3903e3092bbcffa md5: 549e5930e768548a89c23f595dac5a95 depends: @@ -7667,17 +6080,13 @@ packages: - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 - yaml >=0.2.5,<0.3.0a0 + arch: x86_64 + platform: linux license: MIT license_family: MIT size: 206553 timestamp: 1725456256213 -- kind: conda - name: pyyaml - version: 6.0.2 - build: py312hb2c0f52_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/pyyaml-6.0.2-py312hb2c0f52_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyyaml-6.0.2-py312hb2c0f52_1.conda sha256: 8c515ebe1e7e85d972d72b75760af9dfac06fd11a9dba7e05c42d69aedbb303c md5: dc5de424f7dbb9772da720dbb81317b2 depends: @@ -7686,58 +6095,61 @@ packages: - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 - yaml >=0.2.5,<0.3.0a0 + arch: aarch64 + platform: linux license: MIT license_family: MIT size: 199141 timestamp: 1725456356043 -- kind: conda - name: pyzmq - version: 26.2.0 - build: py312h2427ae1_3 - build_number: 3 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/pyzmq-26.2.0-py312h2427ae1_3.conda - sha256: cfc4ea87d68b5f0ed64a61f500d5ea0a2310d1f281a4f95afa06c703ea1bdf7d - md5: 1f0779280c3dc1e72cfd86bd1e59791d +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py312h024a12e_1.conda + sha256: b06f1c15fb39695bbf707ae8fb554b9a77519af577b5556784534c7db10b52e3 + md5: 1ee23620cf46cb15900f70a1300bae55 + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - yaml >=0.2.5,<0.3.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 187143 + timestamp: 1725456547263 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.0-py312hbf22597_3.conda + sha256: bc303f9b11e04a515f79cd5ad3bfa0e84b9dfec76552626d6263b38789fe6678 + md5: 746ce19f0829ec3e19c93007b1a224d3 depends: + - __glibc >=2.17,<3.0.a0 - libgcc >=13 - libsodium >=1.0.20,<1.0.21.0a0 - libstdcxx >=13 - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 - zeromq >=4.3.5,<4.4.0a0 + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD - size: 371730 - timestamp: 1728644030875 -- kind: conda - name: pyzmq - version: 26.2.0 - build: py312hbf22597_3 - build_number: 3 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.0-py312hbf22597_3.conda - sha256: bc303f9b11e04a515f79cd5ad3bfa0e84b9dfec76552626d6263b38789fe6678 - md5: 746ce19f0829ec3e19c93007b1a224d3 + size: 378126 + timestamp: 1728642454632 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyzmq-26.2.0-py312h2427ae1_3.conda + sha256: cfc4ea87d68b5f0ed64a61f500d5ea0a2310d1f281a4f95afa06c703ea1bdf7d + md5: 1f0779280c3dc1e72cfd86bd1e59791d depends: - - __glibc >=2.17,<3.0.a0 - libgcc >=13 - libsodium >=1.0.20,<1.0.21.0a0 - libstdcxx >=13 - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 - zeromq >=4.3.5,<4.4.0a0 + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD - size: 378126 - timestamp: 1728642454632 -- kind: conda - name: pyzmq - version: 26.2.0 - build: py312hf8a1cbd_3 - build_number: 3 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.0-py312hf8a1cbd_3.conda + size: 371730 + timestamp: 1728644030875 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.0-py312hf8a1cbd_3.conda sha256: 2e0ca1bb9ab3af5d1f9b38548d65be7097ba0246e7e63c908c9b1323df3f45b5 md5: 7bdaa4c2a84b744ef26c8b2ba65c3d0e depends: @@ -7748,108 +6160,81 @@ packages: - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 - zeromq >=4.3.5,<4.4.0a0 + arch: arm64 + platform: osx license: BSD-3-Clause license_family: BSD size: 361674 timestamp: 1728642457661 -- kind: conda - name: re2 - version: 2024.07.02 - build: h6589ca4_2 - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/re2-2024.07.02-h6589ca4_2.conda - sha256: 4d3799c05f8f662922a0acd129d119774760a3281b883603678e128d1cb307fb - md5: 7a8b4ad8c58a3408ca89d78788c78178 - depends: - - libre2-11 2024.07.02 h07bc746_2 - license: BSD-3-Clause - license_family: BSD - size: 26861 - timestamp: 1735541088455 -- kind: conda - name: re2 - version: 2024.07.02 - build: h9925aae_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/re2-2024.07.02-h9925aae_2.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/re2-2024.07.02-h9925aae_2.conda sha256: d213c44958d49ce7e0d4d5b81afec23640cce5016685dbb2d23571a99caa4474 md5: e84ddf12bde691e8ec894b00ea829ddf depends: - libre2-11 2024.07.02 hbbce691_2 + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD size: 26786 timestamp: 1735541074034 -- kind: conda - name: re2 - version: 2024.07.02 - build: haa97905_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/re2-2024.07.02-haa97905_2.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/re2-2024.07.02-haa97905_2.conda sha256: 040848655df9119bae5a549fb5c8956a5537120859416c1d9d0712b7bac9f12e md5: 1bf0135339b4a7419a198a795d2d4be0 depends: - libre2-11 2024.07.02 h18dbdb1_2 + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD size: 26830 timestamp: 1735540999398 -- kind: conda - name: readline - version: '8.2' - build: h8228510_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/re2-2024.07.02-h6589ca4_2.conda + sha256: 4d3799c05f8f662922a0acd129d119774760a3281b883603678e128d1cb307fb + md5: 7a8b4ad8c58a3408ca89d78788c78178 + depends: + - libre2-11 2024.07.02 h07bc746_2 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 26861 + timestamp: 1735541088455 +- conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda sha256: 5435cf39d039387fbdc977b0a762357ea909a7694d9528ab40f005e9208744d7 md5: 47d31b792659ce70f470b5c82fdfb7a4 depends: - libgcc-ng >=12 - ncurses >=6.3,<7.0a0 + arch: x86_64 + platform: linux license: GPL-3.0-only license_family: GPL size: 281456 timestamp: 1679532220005 -- kind: conda - name: readline - version: '8.2' - build: h8fc344f_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8fc344f_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8fc344f_1.conda sha256: 4c99f7417419734e3797d45bc355e61c26520e111893b0d7087a01a7fbfbe3dd md5: 105eb1e16bf83bfb2eb380a48032b655 depends: - libgcc-ng >=12 - ncurses >=6.3,<7.0a0 + arch: aarch64 + platform: linux license: GPL-3.0-only license_family: GPL size: 294092 timestamp: 1679532238805 -- kind: conda - name: readline - version: '8.2' - build: h92ec313_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h92ec313_1.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h92ec313_1.conda sha256: a1dfa679ac3f6007362386576a704ad2d0d7a02e98f5d0b115f207a2da63e884 md5: 8cbb776a2f641b943d413b3e19df71f4 depends: - ncurses >=6.3,<7.0a0 + arch: arm64 + platform: osx license: GPL-3.0-only license_family: GPL size: 250351 timestamp: 1679532511311 -- kind: conda - name: regex - version: 2024.11.6 - build: py312h66e93f0_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/regex-2024.11.6-py312h66e93f0_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/regex-2024.11.6-py312h66e93f0_0.conda sha256: fcb5687d3ec5fff580b64b8fb649d9d65c999a91a5c3108a313ecdd2de99f06b md5: 647770db979b43f9c9ca25dcfa7dc4e4 depends: @@ -7857,16 +6242,13 @@ packages: - libgcc >=13 - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux license: Python-2.0 license_family: PSF size: 402821 timestamp: 1730952378415 -- kind: conda - name: regex - version: 2024.11.6 - build: py312hb2c0f52_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/regex-2024.11.6-py312hb2c0f52_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/regex-2024.11.6-py312hb2c0f52_0.conda sha256: ec2c416860de29224e447e2031f8686a05476759c17da1f32f61d4307e540ec8 md5: fa8b589107567f532fa1380e66f91776 depends: @@ -7874,16 +6256,13 @@ packages: - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux license: Python-2.0 license_family: PSF size: 398947 timestamp: 1730952477463 -- kind: conda - name: regex - version: 2024.11.6 - build: py312hea69d52_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/regex-2024.11.6-py312hea69d52_0.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/regex-2024.11.6-py312hea69d52_0.conda sha256: dcdec32f2c7dd37986baa692bedf9db126ad34e92e5e9b64f707cba3d04d2525 md5: e73cda1f18846b608284bd784f061eac depends: @@ -7891,18 +6270,13 @@ packages: - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx license: Python-2.0 license_family: PSF size: 366374 timestamp: 1730952427552 -- kind: conda - name: requests - version: 2.32.3 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda sha256: d701ca1136197aa121bbbe0e8c18db6b5c94acbd041c2b43c70e5ae104e1d8ad md5: a9b9368f3701a417eac9edbcae7cb737 depends: @@ -7917,14 +6291,7 @@ packages: license_family: APACHE size: 58723 timestamp: 1733217126197 -- kind: conda - name: rich - version: 13.9.4 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_1.conda sha256: 06a760c5ae572e72e865d5a87e9fe3cc171e1a9c996e63daf3db52ff1a0b4457 md5: 7aed65d4ff222bfb7335997aa40b7da5 depends: @@ -7936,13 +6303,7 @@ 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 +- conda: https://conda.anaconda.org/conda-forge/noarch/rich-toolkit-0.11.3-pyh29332c3_0.conda sha256: e558f8c254a9ff9164d069110da162fc79497d70c60f2c09a5d3d0d7101c5628 md5: 4ba15ae9388b67d09782798347481f69 depends: @@ -7955,45 +6316,34 @@ packages: license_family: MIT size: 17357 timestamp: 1733750834072 -- kind: conda - name: s2n - version: 1.5.10 - build: h5df210e_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/s2n-1.5.10-h5df210e_0.conda - sha256: b5e7a9f4b7b1ec5c5c3661e2defc8b47fab543b05cad6fec78739d8007612464 - md5: 3d3979efcc0f44f3f0cef3de03b296cc - depends: - - libgcc >=13 - - openssl >=3.4.0,<4.0a0 - license: Apache-2.0 - license_family: Apache - size: 353450 - timestamp: 1734415474615 -- kind: conda - name: s2n - version: 1.5.10 - build: hb5b8611_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/s2n-1.5.10-hb5b8611_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/s2n-1.5.10-hb5b8611_0.conda sha256: f6d451821fddc26b93f45e9313e1ea15e09e5ef049d4e137413a5225d2a5dfba md5: 999f3673f2a011f59287f2969e3749e4 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - openssl >=3.4.0,<4.0a0 + arch: x86_64 + platform: linux license: Apache-2.0 license_family: Apache size: 355142 timestamp: 1734415467047 -- kind: conda - name: safetensors - version: 0.5.1 - build: py312h12e396e_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/safetensors-0.5.1-py312h12e396e_0.conda - sha256: 61a4a49bc98a7b529c7c9e2af9be1dc3350b8ea1c78f985e8a051543e8845ffa - md5: 19b54f64e926aca46d0cc2ff0ecf4f34 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/s2n-1.5.10-h5df210e_0.conda + sha256: b5e7a9f4b7b1ec5c5c3661e2defc8b47fab543b05cad6fec78739d8007612464 + md5: 3d3979efcc0f44f3f0cef3de03b296cc + depends: + - libgcc >=13 + - openssl >=3.4.0,<4.0a0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 353450 + timestamp: 1734415474615 +- conda: https://conda.anaconda.org/conda-forge/linux-64/safetensors-0.5.2-py312h12e396e_0.conda + sha256: 98b8dfa5eec083e0b3ace00906a7f7e748b1e2446dca17e87473f43278fcc036 + md5: 999ca9d87d2bb8b4c01e62c755b928cf depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -8001,18 +6351,15 @@ packages: - python_abi 3.12.* *_cp312 constrains: - __glibc >=2.17 + arch: x86_64 + platform: linux license: Apache-2.0 license_family: APACHE - size: 424642 - timestamp: 1736278244485 -- kind: conda - name: safetensors - version: 0.5.1 - build: py312h8cbf658_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/safetensors-0.5.1-py312h8cbf658_0.conda - sha256: ee66da0efb1d6897ad74156cb115277dfb8ca7f6c8bdfb17bd6a6fb205495622 - md5: f91072f99af78ed0c1941ba5d6f30cf8 + size: 424409 + timestamp: 1736383159339 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/safetensors-0.5.2-py312h8cbf658_0.conda + sha256: 3e230060c1366cbaf03f4315b021dfe47f5147f3af88f17975d661c08fe15ad3 + md5: 2c77c961c4e813b1d05122ac4d803d80 depends: - libgcc >=13 - python >=3.12,<3.13.0a0 @@ -8020,18 +6367,15 @@ packages: - python_abi 3.12.* *_cp312 constrains: - __glibc >=2.17 + arch: aarch64 + platform: linux license: Apache-2.0 license_family: APACHE - size: 409549 - timestamp: 1736278357702 -- kind: conda - name: safetensors - version: 0.5.1 - build: py312hcd83bfe_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/safetensors-0.5.1-py312hcd83bfe_0.conda - sha256: e61cbac0c1b38731543a600e2e40c4cc686e5e565f6c9809d5dcc467e2e8f220 - md5: d12e134445366752e52acec1a86c845f + size: 408166 + timestamp: 1736383184569 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/safetensors-0.5.2-py312hcd83bfe_0.conda + sha256: 0aeb3e654095ca0261d560d1fc05912d0e94d547a7dc435d7f4cedeba966d176 + md5: fc0383682805e293eba9b8afc9ad0931 depends: - __osx >=11.0 - python >=3.12,<3.13.0a0 @@ -8039,18 +6383,13 @@ packages: - python_abi 3.12.* *_cp312 constrains: - __osx >=11.0 + arch: arm64 + platform: osx license: Apache-2.0 license_family: APACHE - size: 378562 - timestamp: 1736278448037 -- kind: conda - name: shellingham - version: 1.5.4 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda + size: 378060 + timestamp: 1736383410115 +- conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda sha256: 0557c090913aa63cdbe821dbdfa038a321b488e22bc80196c4b3b1aace4914ef md5: 7c3c2a0f3ebdea2bbc35538d162b43bf depends: @@ -8059,13 +6398,7 @@ packages: license_family: MIT size: 14462 timestamp: 1733301007770 -- kind: conda - name: six - version: 1.17.0 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda sha256: 41db0180680cc67c3fa76544ffd48d6a5679d96f4b71d7498a759e94edc9a2db md5: a451d576819089b0d672f18768be0f65 depends: @@ -8074,63 +6407,44 @@ packages: license_family: MIT size: 16385 timestamp: 1733381032766 -- kind: conda - name: snappy - version: 1.2.1 - build: h8bd8927_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-h8bd8927_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-h8bd8927_1.conda sha256: ec91e86eeb2c6bbf09d51351b851e945185d70661d2ada67204c9a6419d282d3 md5: 3b3e64af585eadfb52bb90b553db5edf depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - libstdcxx >=13 + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD size: 42739 timestamp: 1733501881851 -- kind: conda - name: snappy - version: 1.2.1 - build: h98b9ce2_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-h98b9ce2_1.conda - sha256: 4242f95b215127a006eb664fe26ed5a82df87e90cbdbc7ce7ff4971f0720997f - md5: ded86dee325290da2967a3fea3800eb5 - depends: - - __osx >=11.0 - - libcxx >=18 - license: BSD-3-Clause - license_family: BSD - size: 35857 - timestamp: 1733502172664 -- kind: conda - name: snappy - version: 1.2.1 - build: hd4fb6f5_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-hd4fb6f5_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-hd4fb6f5_1.conda sha256: c4a07ae5def8d55128f25a567a296ef9d7bf99a3bc79d46bd5160c076a5f50af md5: 2fcc6cd1e5550deb509073fd2e6693e1 depends: - libgcc >=13 - libstdcxx >=13 + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD size: 43032 timestamp: 1733501964775 -- kind: conda - name: sniffio - version: 1.3.1 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-h98b9ce2_1.conda + sha256: 4242f95b215127a006eb664fe26ed5a82df87e90cbdbc7ce7ff4971f0720997f + md5: ded86dee325290da2967a3fea3800eb5 + depends: + - __osx >=11.0 + - libcxx >=18 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 35857 + timestamp: 1733502172664 +- conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda sha256: c2248418c310bdd1719b186796ae50a8a77ce555228b6acd32768e2543a15012 md5: bf7a226e58dfb8346c70df36065d86c9 depends: @@ -8139,13 +6453,7 @@ packages: license_family: Apache size: 15019 timestamp: 1733244175724 -- kind: conda - name: sse-starlette - version: 2.2.1 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.2.1-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.2.1-pyhd8ed1ab_0.conda sha256: 3c6a476e7afb702d841e23c61a0c4cc491929d2e39376d329e67e94c40a236cc md5: c1ef6bc13dd2caa4b406fb3cb06c2791 depends: @@ -8156,14 +6464,7 @@ packages: license_family: BSD size: 15324 timestamp: 1735126414893 -- kind: conda - name: starlette - version: 0.41.3 - build: pyha770c72_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyha770c72_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyha770c72_1.conda sha256: b74fc76107487eb26624c01fc55bfab7eed03ae82e003333c86d8a1eeac53672 md5: 0207dac04ae2200701fab697f0aaaac4 depends: @@ -8174,58 +6475,42 @@ packages: license_family: BSD size: 58838 timestamp: 1733344472634 -- kind: conda - name: tk - version: 8.6.13 - build: h194ca79_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda + sha256: e0569c9caa68bf476bead1bed3d79650bb080b532c64a4af7d8ca286c08dea4e + md5: d453b98d9c83e71da0741bb0ff4d76bc + depends: + - libgcc-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 + arch: x86_64 + platform: linux + license: TCL + license_family: BSD + size: 3318875 + timestamp: 1699202167581 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda sha256: 7fa27cc512d3a783f38bd16bbbffc008807372499d5b65d089a8e43bde9db267 md5: f75105e0585851f818e0009dd1dde4dc depends: - libgcc-ng >=12 - libzlib >=1.2.13,<2.0.0a0 + arch: aarch64 + platform: linux license: TCL license_family: BSD size: 3351802 timestamp: 1695506242997 -- kind: conda - name: tk - version: 8.6.13 - build: h5083fa2_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda sha256: 72457ad031b4c048e5891f3f6cb27a53cb479db68a52d965f796910e71a403a8 md5: b50a57ba89c32b62428b71a875291c9b depends: - libzlib >=1.2.13,<2.0.0a0 + arch: arm64 + platform: osx license: TCL license_family: BSD - size: 3145523 - timestamp: 1699202432999 -- kind: conda - name: tk - version: 8.6.13 - build: noxft_h4845f30_101 - build_number: 101 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda - sha256: e0569c9caa68bf476bead1bed3d79650bb080b532c64a4af7d8ca286c08dea4e - md5: d453b98d9c83e71da0741bb0ff4d76bc - depends: - - libgcc-ng >=12 - - libzlib >=1.2.13,<2.0.0a0 - license: TCL - license_family: BSD - size: 3318875 - timestamp: 1699202167581 -- kind: conda - name: tokenizers - version: 0.21.0 - build: py312h8360d73_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.21.0-py312h8360d73_0.conda + size: 3145523 + timestamp: 1699202432999 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.21.0-py312h8360d73_0.conda sha256: 4f504a5e9d77c6d88a8f735c4319429d8bf40b742384f908a2efe0a09acc3cc5 md5: f953aa733207f3d37acf4a3efbedba89 depends: @@ -8238,16 +6523,13 @@ packages: - python_abi 3.12.* *_cp312 constrains: - __glibc >=2.17 + arch: x86_64 + platform: linux license: Apache-2.0 license_family: APACHE size: 2258007 timestamp: 1732734202127 -- kind: conda - name: tokenizers - version: 0.21.0 - build: py312ha0d6ea1_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.21.0-py312ha0d6ea1_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.21.0-py312ha0d6ea1_0.conda sha256: ef0f4d4e2c798b1821187ea0ba4c86484e48abaa0e9a19fe68030fa7ff5dde84 md5: 077f48c9e0c08a30d842e15c51df4143 depends: @@ -8260,16 +6542,13 @@ packages: - python_abi 3.12.* *_cp312 constrains: - __glibc >=2.17 + arch: aarch64 + platform: linux license: Apache-2.0 license_family: APACHE size: 2331194 timestamp: 1732734303196 -- kind: conda - name: tokenizers - version: 0.21.0 - build: py312hf3e4074_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.21.0-py312hf3e4074_0.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.21.0-py312hf3e4074_0.conda sha256: 5d395333fcb22dc611140286c1f2ea8b3fa220a4931c583587cb612238091555 md5: 4c732c74b485ef7ac8ec1c548dd45e8e depends: @@ -8281,49 +6560,40 @@ packages: - python_abi 3.12.* *_cp312 constrains: - __osx >=11.0 + arch: arm64 + platform: osx license: Apache-2.0 license_family: APACHE size: 1931389 timestamp: 1732734727624 -- kind: conda - name: tornado - version: 6.4.2 - build: py312h52516f5_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py312h52516f5_0.conda - sha256: 4c19a544354172b2273553267e734795a6da3c78a04c2d19f8e9e159ca3178bc - md5: e28996d9d2d44d777b7e6fb12f63715b +- conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda + sha256: 062a3a3a37fa8615ce57929ba7e982c76f5a5810bcebd435950f6d6c4147c310 + md5: e417822cb989e80a0d2b1b576fdd1657 depends: + - __glibc >=2.17,<3.0.a0 - libgcc >=13 - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux license: Apache-2.0 license_family: Apache - size: 841662 - timestamp: 1732616934923 -- kind: conda - name: tornado - version: 6.4.2 - build: py312h66e93f0_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda - sha256: 062a3a3a37fa8615ce57929ba7e982c76f5a5810bcebd435950f6d6c4147c310 - md5: e417822cb989e80a0d2b1b576fdd1657 + size: 840414 + timestamp: 1732616043734 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py312h52516f5_0.conda + sha256: 4c19a544354172b2273553267e734795a6da3c78a04c2d19f8e9e159ca3178bc + md5: e28996d9d2d44d777b7e6fb12f63715b depends: - - __glibc >=2.17,<3.0.a0 - libgcc >=13 - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux license: Apache-2.0 license_family: Apache - size: 840414 - timestamp: 1732616043734 -- kind: conda - name: tornado - version: 6.4.2 - build: py312hea69d52_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda + size: 841662 + timestamp: 1732616934923 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda sha256: 964a2705a36c50040c967b18b45b9cc8de3c2aff4af546979a574e0b38e58e39 md5: fb0605888a475d6a380ae1d1a819d976 depends: @@ -8331,18 +6601,13 @@ packages: - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx license: Apache-2.0 license_family: Apache size: 842549 timestamp: 1732616081362 -- kind: conda - name: tqdm - version: 4.67.1 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda sha256: 11e2c85468ae9902d24a27137b6b39b4a78099806e551d390e394a8c34b48e40 md5: 9efbfdc37242619130ea42b1cc4ed861 depends: @@ -8351,14 +6616,7 @@ packages: license: MPL-2.0 or MIT size: 89498 timestamp: 1735661472632 -- kind: conda - name: traitlets - version: 5.14.3 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda sha256: f39a5620c6e8e9e98357507262a7869de2ae8cc07da8b7f84e517c9fd6c2b959 md5: 019a7385be9af33791c989871317e1ed depends: @@ -8367,15 +6625,9 @@ packages: license_family: BSD size: 110051 timestamp: 1733367480074 -- kind: conda - name: transformers - version: 4.47.1 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.1-pyhd8ed1ab_0.conda - sha256: df8238c3cccbb6bb1d5657e6a75977ac0b832ab61155d5e3d8560c1c4f52abeb - md5: 931d66db156680c42c62812d6533cbf7 +- conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.48.0-pyhd8ed1ab_0.conda + sha256: c8dd6d69e4ef67c7d507dec2be4b6964f6ddbe1ce35a822ddf4089505d702f33 + md5: 2c57d4af7b8952484962b40a59cf1537 depends: - datasets !=2.5.0 - filelock @@ -8391,15 +6643,9 @@ packages: - tqdm >=4.27 license: Apache-2.0 license_family: APACHE - size: 3680276 - timestamp: 1734499046193 -- kind: conda - name: typer - version: 0.15.1 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda + size: 3408277 + timestamp: 1736534112195 +- conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda sha256: ef695490e895c2ad552c77ec497b899b09fd4ad4ab07edcf5649f5994cf92a35 md5: 170a0398946d8f5b454e592672b6fc20 depends: @@ -8409,13 +6655,7 @@ packages: license_family: MIT size: 56175 timestamp: 1733408582623 -- kind: conda - name: typer-slim - version: 0.15.1 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda sha256: d4965516f35e0805199de6596c4ac76c4ad3d6b012be35e532102f9e53ecb860 md5: 0218b16f5a1dd569e575a7a6415489db depends: @@ -8430,13 +6670,7 @@ packages: license_family: MIT size: 43592 timestamp: 1733408569554 -- kind: conda - name: typer-slim-standard - version: 0.15.1 - build: hd8ed1ab_0 - subdir: noarch - noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda sha256: f31c56fe98315da8b9ce848256c17e0b9f87896b41a6ccf0c9cc74644dcef20f md5: 4e603c43bfdfc7b533be087c3e070cc9 depends: @@ -8447,14 +6681,8 @@ packages: license_family: MIT size: 49531 timestamp: 1733408570063 -- kind: conda - name: typing-extensions - version: 4.12.2 - build: hd8ed1ab_1 - build_number: 1 - subdir: noarch +- conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda sha256: c8e9c1c467b5f960b627d7adc1c65fece8e929a3de89967e91ef0f726422fd32 md5: b6a408c64b78ec7b779a3e5c7a902433 depends: @@ -8463,14 +6691,7 @@ packages: license_family: PSF size: 10075 timestamp: 1733188758872 -- kind: conda - name: typing_extensions - version: 4.12.2 - build: pyha770c72_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda sha256: 337be7af5af8b2817f115b3b68870208b30c31d3439bec07bfb2d8f4823e3568 md5: d17f13df8b65464ca316cbc000a3cb64 depends: @@ -8479,25 +6700,13 @@ packages: license_family: PSF size: 39637 timestamp: 1733188758212 -- kind: conda - name: tzdata - version: 2024b - build: hc8b5060_0 - subdir: noarch - noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda sha256: 4fde5c3008bf5d2db82f2b50204464314cc3c91c1d953652f7bd01d9e52aefdf md5: 8ac3367aafb1cc0a068483c580af8015 license: LicenseRef-Public-Domain size: 122354 timestamp: 1728047496079 -- kind: conda - name: urllib3 - version: 2.3.0 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda sha256: 114919ffa80c328127dab9c8e7a38f9d563c617691fb81fccb11c1e86763727e md5: 32674f8dbfb7b26410ed580dd3c10a29 depends: @@ -8510,13 +6719,7 @@ packages: license_family: MIT size: 100102 timestamp: 1734859520452 -- kind: conda - name: uvicorn - version: 0.34.0 - build: pyh31011fe_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.34.0-pyh31011fe_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.34.0-pyh31011fe_0.conda sha256: 55c160b0cf9274e2b98bc0f7fcce548bffa8d788bc86aa02801877457040f6fa md5: 5d448feee86e4740498ec8f8eb40e052 depends: @@ -8529,13 +6732,7 @@ packages: license_family: BSD size: 48643 timestamp: 1734293057914 -- kind: conda - name: uvicorn-standard - version: 0.34.0 - build: h31011fe_0 - subdir: noarch - noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.34.0-h31011fe_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.34.0-h31011fe_0.conda sha256: 87e1531e175e75122f9f37608eb953af4c977465ab0ae11283cc01fef954e4ec md5: 32a94143a7f65d76d2d5da37dcb4ed79 depends: @@ -8551,31 +6748,7 @@ packages: license_family: BSD size: 7203 timestamp: 1734293058849 -- kind: conda - name: uvloop - version: 0.21.0 - build: py312h0bf5046_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/uvloop-0.21.0-py312h0bf5046_1.conda - sha256: b1efa77aa4871d7bb09c8dd297fa9bd9070ba7f0f95f2d12ae9cdd31ce8b6b22 - md5: 4f5110253ba80ebf27e55c4ab333880a - depends: - - __osx >=11.0 - - libuv >=1.49.2,<2.0a0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - license: MIT OR Apache-2.0 - size: 544097 - timestamp: 1730214653726 -- kind: conda - name: uvloop - version: 0.21.0 - build: py312h66e93f0_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/uvloop-0.21.0-py312h66e93f0_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/uvloop-0.21.0-py312h66e93f0_1.conda sha256: 9337a80165fcf70b06b9d6ba920dad702260ca966419ae77560a15540e41ab72 md5: 998e481e17c1b6a74572e73b06f2df08 depends: @@ -8584,16 +6757,12 @@ packages: - libuv >=1.49.2,<2.0a0 - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux license: MIT OR Apache-2.0 size: 701355 timestamp: 1730214506716 -- kind: conda - name: uvloop - version: 0.21.0 - build: py312hb2c0f52_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/uvloop-0.21.0-py312hb2c0f52_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/uvloop-0.21.0-py312hb2c0f52_1.conda sha256: 807eede6698bd00a1d739a3e19ee6ae6a03a66d2ddd2ef150f2dfd198c3b0292 md5: d83e107ba16c77aba2feec47b7b666a4 depends: @@ -8602,17 +6771,28 @@ packages: - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux license: MIT OR Apache-2.0 size: 655266 timestamp: 1730214606664 -- kind: conda - name: watchfiles - version: 1.0.3 - build: py312h12e396e_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/watchfiles-1.0.3-py312h12e396e_0.conda - sha256: c89755d8e8f6384b3ba13e41dcabb40bf690c38b9d61512e963129badb1ad332 - md5: b76a5ad00856af6e74da9c3e85fed0cc +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/uvloop-0.21.0-py312h0bf5046_1.conda + sha256: b1efa77aa4871d7bb09c8dd297fa9bd9070ba7f0f95f2d12ae9cdd31ce8b6b22 + md5: 4f5110253ba80ebf27e55c4ab333880a + depends: + - __osx >=11.0 + - libuv >=1.49.2,<2.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: MIT OR Apache-2.0 + size: 544097 + timestamp: 1730214653726 +- conda: https://conda.anaconda.org/conda-forge/linux-64/watchfiles-1.0.4-py312h12e396e_0.conda + sha256: b728f525dcae2c10524f9942255346eba62aee9c820ff269d7dd4f7caffb7ffb + md5: df87129c4cb7afc4a3cbad71a1b9e223 depends: - __glibc >=2.17,<3.0.a0 - anyio >=3.0.0 @@ -8621,18 +6801,14 @@ packages: - python_abi 3.12.* *_cp312 constrains: - __glibc >=2.17 + arch: x86_64 + platform: linux license: MIT - license_family: MIT - size: 410432 - timestamp: 1733998892675 -- kind: conda - name: watchfiles - version: 1.0.3 - build: py312h8cbf658_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/watchfiles-1.0.3-py312h8cbf658_0.conda - sha256: 9be9569c279dc6e7881e9b45fe9f0368218538c660641e2f8b0e023e72a6571c - md5: 3465c1a19634233abc2d1832ac01fd31 + size: 410192 + timestamp: 1736550568524 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/watchfiles-1.0.4-py312h8cbf658_0.conda + sha256: 45193910f6bafc287c784442d173745161b18f96223f0f990a9a744fda753787 + md5: ed958a27e610c31de625e167d4c11a04 depends: - anyio >=3.0.0 - libgcc >=13 @@ -8641,18 +6817,14 @@ packages: - python_abi 3.12.* *_cp312 constrains: - __glibc >=2.17 + arch: aarch64 + platform: linux license: MIT - license_family: MIT - size: 404239 - timestamp: 1733998941045 -- kind: conda - name: watchfiles - version: 1.0.3 - build: py312hcd83bfe_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/watchfiles-1.0.3-py312hcd83bfe_0.conda - sha256: b64b78a7d6384bf72a878256802c783c692fe641ab4b806fd7e9f45e18a5e3b4 - md5: 13b89e1aa72aa773806b1f59ec018b67 + size: 403791 + timestamp: 1736550743174 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/watchfiles-1.0.4-py312hcd83bfe_0.conda + sha256: 84122e3712f2263e12c9d2be75d122eaf2d269801183df4b73aadcb670943b17 + md5: 946eb0208d09b811a671fad9b2831f4e depends: - __osx >=11.0 - anyio >=3.0.0 @@ -8661,16 +6833,12 @@ packages: - python_abi 3.12.* *_cp312 constrains: - __osx >=11.0 + arch: arm64 + platform: osx license: MIT - license_family: MIT - size: 363162 - timestamp: 1733999215646 -- kind: conda - name: websockets - version: '14.1' - build: py312h66e93f0_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/websockets-14.1-py312h66e93f0_0.conda + size: 363822 + timestamp: 1736550859472 +- conda: https://conda.anaconda.org/conda-forge/linux-64/websockets-14.1-py312h66e93f0_0.conda sha256: 5998940f91765ba991cf286c863c20bcb53db92bb976a2b5a714566b86b0e763 md5: a79f7ce618bd0a9f4c00c59a03570fcd depends: @@ -8678,16 +6846,13 @@ packages: - libgcc >=13 - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD size: 242145 timestamp: 1731498716195 -- kind: conda - name: websockets - version: '14.1' - build: py312hb2c0f52_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/websockets-14.1-py312hb2c0f52_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/websockets-14.1-py312hb2c0f52_0.conda sha256: c292a8badcbe4040537e225fbeb237bfaf272808eab060067d965d3da98ccd5c md5: 7e2a0ef2a1a87f88f9745f9c7059186e depends: @@ -8695,16 +6860,13 @@ packages: - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD size: 242912 timestamp: 1731498811466 -- kind: conda - name: websockets - version: '14.1' - build: py312hea69d52_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/websockets-14.1-py312hea69d52_0.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/websockets-14.1-py312hea69d52_0.conda sha256: 98fb04a1a0f53dc604378f94b5795d0b8e462fee01bf0a887cb34d0efdf5d21f md5: 89b79a9baa7db46ce21f5738a5a3dfda depends: @@ -8712,16 +6874,13 @@ packages: - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx license: BSD-3-Clause license_family: BSD size: 243131 timestamp: 1731498944076 -- kind: conda - name: wrapt - version: 1.17.0 - build: py312h66e93f0_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.17.0-py312h66e93f0_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.17.0-py312h66e93f0_0.conda sha256: a6fc0f4e90643d0c1fd4aab669b6a79f44a305a5474256f6f2da3354d2310fb4 md5: ddbe3bb0e1356cb9074dd848570694f9 depends: @@ -8729,16 +6888,13 @@ packages: - libgcc >=13 - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux license: BSD-2-Clause license_family: BSD size: 63807 timestamp: 1732523690292 -- kind: conda - name: wrapt - version: 1.17.0 - build: py312hb2c0f52_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/wrapt-1.17.0-py312hb2c0f52_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/wrapt-1.17.0-py312hb2c0f52_0.conda sha256: b9aa760a987ccc6bc9c61f57badba6798d9a3dcbd0814e5fb8df6d8d2935af73 md5: 120d5d1c05386d8ce3efd65a4c86431f depends: @@ -8746,16 +6902,13 @@ packages: - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux license: BSD-2-Clause license_family: BSD size: 64783 timestamp: 1732523806 -- kind: conda - name: wrapt - version: 1.17.0 - build: py312hea69d52_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/wrapt-1.17.0-py312hea69d52_0.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/wrapt-1.17.0-py312hea69d52_0.conda sha256: 0fb35c3d1642f9f47db87bdb33148f88ef19a3af1eb0ee99b5491551c57269c7 md5: 73414acdb779a8694a14527865b4357a depends: @@ -8763,185 +6916,143 @@ packages: - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx license: BSD-2-Clause license_family: BSD size: 61043 timestamp: 1732523852129 -- kind: conda - name: xorg-libxau - version: 1.0.12 - build: h5505292_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxau-1.0.12-h5505292_0.conda - sha256: f33e6f013fc36ebc200f09ddead83468544cb5c353a3b50499b07b8c34e28a8d - md5: 50901e0764b7701d8ed7343496f4f301 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-hb9d3cd8_0.conda + sha256: ed10c9283974d311855ae08a16dfd7e56241fac632aec3b92e3cfe73cff31038 + md5: f6ebe2cb3f82ba6c057dde5d9debe4f7 depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux license: MIT license_family: MIT - size: 13593 - timestamp: 1734229104321 -- kind: conda - name: xorg-libxau - version: 1.0.12 - build: h86ecc28_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxau-1.0.12-h86ecc28_0.conda + size: 14780 + timestamp: 1734229004433 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxau-1.0.12-h86ecc28_0.conda sha256: 7829a0019b99ba462aece7592d2d7f42e12d12ccd3b9614e529de6ddba453685 md5: d5397424399a66d33c80b1f2345a36a6 depends: - libgcc >=13 + arch: aarch64 + platform: linux license: MIT license_family: MIT size: 15873 timestamp: 1734230458294 -- kind: conda - name: xorg-libxau - version: 1.0.12 - build: hb9d3cd8_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-hb9d3cd8_0.conda - sha256: ed10c9283974d311855ae08a16dfd7e56241fac632aec3b92e3cfe73cff31038 - md5: f6ebe2cb3f82ba6c057dde5d9debe4f7 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxau-1.0.12-h5505292_0.conda + sha256: f33e6f013fc36ebc200f09ddead83468544cb5c353a3b50499b07b8c34e28a8d + md5: 50901e0764b7701d8ed7343496f4f301 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 13593 + timestamp: 1734229104321 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb9d3cd8_0.conda + sha256: 6b250f3e59db07c2514057944a3ea2044d6a8cdde8a47b6497c254520fade1ee + md5: 8035c64cb77ed555e3f150b7b3972480 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 + arch: x86_64 + platform: linux license: MIT license_family: MIT - size: 14780 - timestamp: 1734229004433 -- kind: conda - name: xorg-libxdmcp - version: 1.1.5 - build: h57736b2_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxdmcp-1.1.5-h57736b2_0.conda + size: 19901 + timestamp: 1727794976192 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxdmcp-1.1.5-h57736b2_0.conda sha256: efcc150da5926cf244f757b8376d96a4db78bc15b8d90ca9f56ac6e75755971f md5: 25a5a7b797fe6e084e04ffe2db02fc62 depends: - libgcc >=13 + arch: aarch64 + platform: linux license: MIT license_family: MIT size: 20615 timestamp: 1727796660574 -- kind: conda - name: xorg-libxdmcp - version: 1.1.5 - build: hb9d3cd8_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb9d3cd8_0.conda - sha256: 6b250f3e59db07c2514057944a3ea2044d6a8cdde8a47b6497c254520fade1ee - md5: 8035c64cb77ed555e3f150b7b3972480 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - license: MIT - license_family: MIT - size: 19901 - timestamp: 1727794976192 -- kind: conda - name: xorg-libxdmcp - version: 1.1.5 - build: hd74edd7_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxdmcp-1.1.5-hd74edd7_0.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxdmcp-1.1.5-hd74edd7_0.conda sha256: 9939a166d780700d81023546759102b33fdc2c5f11ef09f5f66c77210fd334c8 md5: 77c447f48cab5d3a15ac224edb86a968 depends: - __osx >=11.0 + arch: arm64 + platform: osx license: MIT license_family: MIT size: 18487 timestamp: 1727795205022 -- kind: conda - name: xxhash - version: 0.8.2 - build: h31becfc_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/xxhash-0.8.2-h31becfc_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/xxhash-0.8.2-hd590300_0.conda + sha256: 6fe74a8fd84ab0dc25e4dc3e0c22388dd8accb212897a208b14fe5d4fbb8fc2f + md5: f08fb5c89edfc4aadee1c81d4cfb1fa1 + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + size: 97691 + timestamp: 1689951608120 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xxhash-0.8.2-h31becfc_0.conda sha256: 4c526aed70b579d80e5c20d32130b6bc8bde59b3250d43c2b5269755f4da8a9b md5: bb9faf6857108a9f62ebb4dab6ef05da depends: - libgcc-ng >=12 + arch: aarch64 + platform: linux license: BSD-2-Clause license_family: BSD size: 102442 timestamp: 1689951682147 -- kind: conda - name: xxhash - version: 0.8.2 - build: hb547adb_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/xxhash-0.8.2-hb547adb_0.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/xxhash-0.8.2-hb547adb_0.conda sha256: a70f59f7221ee72c45b39a6b36a33eb9c717ba01921cce1a3c361a4676979a2e md5: 144cd3b88706507f332f5eb5fb83a33b + arch: arm64 + platform: osx license: BSD-2-Clause license_family: BSD size: 97593 timestamp: 1689951969732 -- kind: conda - name: xxhash - version: 0.8.2 - build: hd590300_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/xxhash-0.8.2-hd590300_0.conda - sha256: 6fe74a8fd84ab0dc25e4dc3e0c22388dd8accb212897a208b14fe5d4fbb8fc2f - md5: f08fb5c89edfc4aadee1c81d4cfb1fa1 - depends: - - libgcc-ng >=12 - license: BSD-2-Clause - license_family: BSD - size: 97691 - timestamp: 1689951608120 -- kind: conda - name: yaml - version: 0.2.5 - build: h3422bc3_2 - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 - sha256: 93181a04ba8cfecfdfb162fc958436d868cc37db504c58078eab4c1a3e57fbb7 - md5: 4bb3f014845110883a3c5ee811fd84b4 - license: MIT - license_family: MIT - size: 88016 - timestamp: 1641347076660 -- kind: conda - name: yaml - version: 0.2.5 - build: h7f98852_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 sha256: a4e34c710eeb26945bdbdaba82d3d74f60a78f54a874ec10d373811a5d217535 md5: 4cb3ad778ec2d5a7acbdf254eb1c42ae depends: - libgcc-ng >=9.4.0 + arch: x86_64 + platform: linux license: MIT license_family: MIT size: 89141 timestamp: 1641346969816 -- kind: conda - name: yaml - version: 0.2.5 - build: hf897c2e_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/yaml-0.2.5-hf897c2e_2.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yaml-0.2.5-hf897c2e_2.tar.bz2 sha256: 8bc601d6dbe249eba44b3c456765265cd8f42ef1e778f8df9b0c9c88b8558d7e md5: b853307650cb226731f653aa623936a4 depends: - libgcc-ng >=9.4.0 + arch: aarch64 + platform: linux license: MIT license_family: MIT size: 92927 timestamp: 1641347626613 -- kind: conda - name: yarl - version: 1.18.3 - build: py312h66e93f0_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.18.3-py312h66e93f0_0.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 + sha256: 93181a04ba8cfecfdfb162fc958436d868cc37db504c58078eab4c1a3e57fbb7 + md5: 4bb3f014845110883a3c5ee811fd84b4 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 88016 + timestamp: 1641347076660 +- conda: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.18.3-py312h66e93f0_0.conda sha256: a0d93c3bef723e384cff8a29a82a2c6b7a73b39328088f3a2d97c901f56e9a63 md5: 91df2efaa08730416bec2a4502309275 depends: @@ -8952,16 +7063,13 @@ packages: - propcache >=0.2.1 - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux license: Apache-2.0 license_family: Apache size: 151393 timestamp: 1733428897813 -- kind: conda - name: yarl - version: 1.18.3 - build: py312hb2c0f52_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.18.3-py312hb2c0f52_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.18.3-py312hb2c0f52_0.conda sha256: 470b5b0f3ac89acd143095281167dc2ac1a56d4fa22e1794bd8f3b00bb604540 md5: 0b3c640697bca798d0ab428f530ed24c depends: @@ -8972,16 +7080,13 @@ packages: - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux license: Apache-2.0 license_family: Apache size: 150004 timestamp: 1733429056665 -- kind: conda - name: yarl - version: 1.18.3 - build: py312hea69d52_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.18.3-py312hea69d52_0.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.18.3-py312hea69d52_0.conda sha256: 69c7863809e11bc90c0d935c16e7f151dcc925add08b3894f06059263a8cb9ba md5: f32f9b16361866a62d6e061fcd7eb400 depends: @@ -8992,17 +7097,13 @@ packages: - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx license: Apache-2.0 license_family: Apache size: 141556 timestamp: 1733429104990 -- kind: conda - name: zeromq - version: 4.3.5 - build: h3b0a872_7 - build_number: 7 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda sha256: a4dc72c96848f764bb5a5176aa93dd1e9b9e52804137b99daeebba277b31ea10 md5: 3947a35e916fcc6b9825449affbf4214 depends: @@ -9011,17 +7112,13 @@ packages: - libgcc >=13 - libsodium >=1.0.20,<1.0.21.0a0 - libstdcxx >=13 + arch: x86_64 + platform: linux license: MPL-2.0 license_family: MOZILLA size: 335400 timestamp: 1731585026517 -- kind: conda - name: zeromq - version: 4.3.5 - build: h5efb499_7 - build_number: 7 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/zeromq-4.3.5-h5efb499_7.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zeromq-4.3.5-h5efb499_7.conda sha256: a6003096dc0570a86492040ba32b04ce7662b159600be2252b7a0dfb9414e21c md5: f2f3282559a4b87b7256ecafb4610107 depends: @@ -9029,17 +7126,13 @@ packages: - libgcc >=13 - libsodium >=1.0.20,<1.0.21.0a0 - libstdcxx >=13 + arch: aarch64 + platform: linux license: MPL-2.0 license_family: MOZILLA size: 371419 timestamp: 1731589490850 -- kind: conda - name: zeromq - version: 4.3.5 - build: hc1bb282_7 - build_number: 7 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda sha256: 9e585569fe2e7d3bea71972cd4b9f06b1a7ab8fa7c5139f92a31cbceecf25a8a md5: f7e6b65943cb73bce0143737fded08f1 depends: @@ -9047,18 +7140,13 @@ packages: - krb5 >=1.21.3,<1.22.0a0 - libcxx >=18 - libsodium >=1.0.20,<1.0.21.0a0 + arch: arm64 + platform: osx license: MPL-2.0 license_family: MOZILLA size: 281565 timestamp: 1731585108039 -- kind: conda - name: zipp - version: 3.21.0 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda sha256: 567c04f124525c97a096b65769834b7acb047db24b15a56888a322bf3966c3e1 md5: 0c3cc595284c5e8f0f9900a9b228a332 depends: @@ -9067,34 +7155,24 @@ packages: license_family: MIT size: 21809 timestamp: 1732827613585 -- kind: conda - name: zstandard - version: 0.23.0 - build: py312h15fbf35_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py312h15fbf35_1.conda - sha256: d00ca25c1e28fd31199b26a94f8c96574475704a825d244d7a6351ad3745eeeb - md5: a4cde595509a7ad9c13b1a3809bcfe51 +- conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312hef9b889_1.conda + sha256: b97015e146437283f2213ff0e95abdc8e2480150634d81fbae6b96ee09f5e50b + md5: 8b7069e9792ee4e5b4919a7a306d2e67 depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 - cffi >=1.11 + - libgcc >=13 - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 - zstd >=1.5.6,<1.5.7.0a0 - zstd >=1.5.6,<1.6.0a0 + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD - size: 330788 - timestamp: 1725305806565 -- kind: conda - name: zstandard - version: 0.23.0 - build: py312hb698573_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/zstandard-0.23.0-py312hb698573_1.conda + size: 419552 + timestamp: 1725305670210 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstandard-0.23.0-py312hb698573_1.conda sha256: 2681c2a249752bdc7978e59ee2f34fcdfcbfda80029b84b8e5fec8dbc9e3af25 md5: ffcb8e97e62af42075e0e5f46bb9856e depends: @@ -9105,74 +7183,63 @@ packages: - python_abi 3.12.* *_cp312 - zstd >=1.5.6,<1.5.7.0a0 - zstd >=1.5.6,<1.6.0a0 + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD size: 392496 timestamp: 1725305808244 -- kind: conda - name: zstandard - version: 0.23.0 - build: py312hef9b889_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312hef9b889_1.conda - sha256: b97015e146437283f2213ff0e95abdc8e2480150634d81fbae6b96ee09f5e50b - md5: 8b7069e9792ee4e5b4919a7a306d2e67 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py312h15fbf35_1.conda + sha256: d00ca25c1e28fd31199b26a94f8c96574475704a825d244d7a6351ad3745eeeb + md5: a4cde595509a7ad9c13b1a3809bcfe51 depends: - - __glibc >=2.17,<3.0.a0 + - __osx >=11.0 - cffi >=1.11 - - libgcc >=13 - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 - zstd >=1.5.6,<1.5.7.0a0 - zstd >=1.5.6,<1.6.0a0 + arch: arm64 + platform: osx license: BSD-3-Clause license_family: BSD - size: 419552 - timestamp: 1725305670210 -- kind: conda - name: zstd - version: 1.5.6 - build: h02f22dd_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.6-h02f22dd_0.conda - sha256: 484f9d0722c77685ae379fbff3ccd662af9ead7e59eb39cd6d0c677cdf25ff6c - md5: be8d5f8cf21aed237b8b182ea86b3dd6 + size: 330788 + timestamp: 1725305806565 +- conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda + sha256: c558b9cc01d9c1444031bd1ce4b9cff86f9085765f17627a6cd85fc623c8a02b + md5: 4d056880988120e29d75bfff282e0f45 depends: - libgcc-ng >=12 - libstdcxx-ng >=12 - libzlib >=1.2.13,<2.0.0a0 + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD - size: 539937 - timestamp: 1714723130243 -- kind: conda - name: zstd - version: 1.5.6 - build: ha6fb4c9_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda - sha256: c558b9cc01d9c1444031bd1ce4b9cff86f9085765f17627a6cd85fc623c8a02b - md5: 4d056880988120e29d75bfff282e0f45 + size: 554846 + timestamp: 1714722996770 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.6-h02f22dd_0.conda + sha256: 484f9d0722c77685ae379fbff3ccd662af9ead7e59eb39cd6d0c677cdf25ff6c + md5: be8d5f8cf21aed237b8b182ea86b3dd6 depends: - libgcc-ng >=12 - libstdcxx-ng >=12 - libzlib >=1.2.13,<2.0.0a0 + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD - size: 554846 - timestamp: 1714722996770 -- kind: conda - name: zstd - version: 1.5.6 - build: hb46c0d2_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.6-hb46c0d2_0.conda + size: 539937 + timestamp: 1714723130243 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.6-hb46c0d2_0.conda sha256: 2d4fd1ff7ee79cd954ca8e81abf11d9d49954dd1fef80f27289e2402ae9c2e09 md5: d96942c06c3e84bfcc5efb038724a7fd depends: - __osx >=11.0 - libzlib >=1.2.13,<2.0.0a0 + arch: arm64 + platform: osx license: BSD-3-Clause license_family: BSD size: 405089 diff --git a/magic.lock b/magic.lock index 737e2e299b..d926408bc3 100644 --- a/magic.lock +++ b/magic.lock @@ -1,4 +1,4 @@ -version: 5 +version: 6 environments: default: channels: @@ -132,12 +132,12 @@ 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-25.1.0.dev2025010817-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025010817-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025010817-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025010817-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011022-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025011022-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025011022-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011022-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-25.1.0.dev2025010817-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011022-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 @@ -165,7 +165,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-18.1.0-py312h7900ff3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-18.1.0-py312h01725c0_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.4-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.5-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.27.2-py312h12e396e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.7.1-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda @@ -189,7 +189,7 @@ environments: - 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.10-hb5b8611_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/safetensors-0.5.1-py312h12e396e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/safetensors-0.5.2-py312h12e396e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-h8bd8927_1.conda @@ -201,7 +201,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.48.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda @@ -212,7 +212,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.34.0-pyh31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.34.0-h31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/uvloop-0.21.0-py312h66e93f0_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/watchfiles-1.0.3-py312h12e396e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/watchfiles-1.0.4-py312h12e396e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/websockets-14.1-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.17.0-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-hb9d3cd8_0.conda @@ -351,12 +351,12 @@ 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-25.1.0.dev2025010817-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025010817-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025010817-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025010817-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011022-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025011022-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025011022-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011022-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-25.1.0.dev2025010817-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011022-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 @@ -384,7 +384,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-18.1.0-py312h8025657_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-18.1.0-py312h66f7834_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.4-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.5-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pydantic-core-2.27.2-py312h8cbf658_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.7.1-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda @@ -408,7 +408,7 @@ environments: - 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.10-h5df210e_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/safetensors-0.5.1-py312h8cbf658_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/safetensors-0.5.2-py312h8cbf658_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-hd4fb6f5_1.conda @@ -420,7 +420,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py312h52516f5_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.48.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda @@ -431,7 +431,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.34.0-pyh31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.34.0-h31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/uvloop-0.21.0-py312hb2c0f52_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/watchfiles-1.0.3-py312h8cbf658_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/watchfiles-1.0.4-py312h8cbf658_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/websockets-14.1-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/wrapt-1.17.0-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxau-1.0.12-h86ecc28_0.conda @@ -561,12 +561,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-25.1.0.dev2025010817-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025010817-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025010817-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025010817-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011022-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025011022-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025011022-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011022-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-25.1.0.dev2025010817-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011022-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 @@ -594,7 +594,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-18.1.0-py312h1f38498_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-18.1.0-py312hc40f475_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.4-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.5-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.27.2-py312hcd83bfe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.7.1-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda @@ -617,7 +617,7 @@ environments: - 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.5.1-py312hcd83bfe_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/safetensors-0.5.2-py312hcd83bfe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-h98b9ce2_1.conda @@ -629,7 +629,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.48.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda @@ -640,7 +640,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.34.0-pyh31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.34.0-h31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/uvloop-0.21.0-py312h0bf5046_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/watchfiles-1.0.3-py312hcd83bfe_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/watchfiles-1.0.4-py312hcd83bfe_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/websockets-14.1-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/wrapt-1.17.0-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxau-1.0.12-h5505292_0.conda @@ -653,24 +653,16 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py312h15fbf35_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.6-hb46c0d2_0.conda packages: -- kind: conda - name: _libgcc_mutex - version: '0.1' - build: conda_forge - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 sha256: fe51de6107f9edc7aa4f786a70f4a883943bc9d39b3bb7307c04c41410990726 md5: d7c89558ba9fa0495403155b64376d81 + arch: x86_64 + platform: linux license: None size: 2562 timestamp: 1578324546067 -- kind: conda - name: _openmp_mutex - version: '4.5' - build: 2_gnu +- conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 build_number: 16 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 sha256: fbe2c5e56a653bebb982eda4876a9178aedfc2b545f25d0ce9c4c0b508253d22 md5: 73aaf86a425cc6e73fcf236a5a46396d depends: @@ -678,35 +670,27 @@ packages: - libgomp >=7.5.0 constrains: - openmp_impl 9999 + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD size: 23621 timestamp: 1650670423406 -- kind: conda - name: _openmp_mutex - version: '4.5' - build: 2_gnu +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2 build_number: 16 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2 sha256: 3702bef2f0a4d38bd8288bbe54aace623602a1343c2cfbefd3fa188e015bebf0 md5: 6168d71addc746e8f2b8d57dfd2edcea depends: - libgomp >=7.5.0 constrains: - openmp_impl 9999 + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD size: 23712 timestamp: 1650670790230 -- kind: conda - name: aiohappyeyeballs - version: 2.4.4 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_1.conda sha256: 95d4713e49ea92ae50cf42393683ede706b7875af5f7cb14c253438180afa732 md5: 296b403617bafa89df4971567af79013 depends: @@ -715,12 +699,7 @@ packages: license_family: PSF size: 19351 timestamp: 1733332029649 -- kind: conda - name: aiohttp - version: 3.11.11 - build: py312h178313f_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.11-py312h178313f_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.11-py312h178313f_0.conda sha256: 2e817805e8a4fed33f23f116ff5649f8651af693328e9ed82d9d11a951338693 md5: 8219afa093757bbe07b9825eb1973ed9 depends: @@ -735,65 +714,55 @@ packages: - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 - yarl >=1.17.0,<2.0 + arch: x86_64 + platform: linux license: MIT AND Apache-2.0 license_family: Apache size: 915358 timestamp: 1734597073870 -- kind: conda - name: aiohttp - version: 3.11.11 - build: py312h998013c_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.11-py312h998013c_0.conda - sha256: 446f078e7a7b892894d7f4851a278b7834ffb4f5632313646a55c3abe13690d4 - md5: c69c904691364cfb27d15aa7153e9c29 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.11-py312hcc812fe_0.conda + sha256: f28e81e458d19df4ca0002f8a92d7f647fa25e8179887a8676801dfe44edb1f2 + md5: 11fa88136d9bf39d2136b2378f7c10be depends: - - __osx >=11.0 - aiohappyeyeballs >=2.3.0 - aiosignal >=1.1.2 - attrs >=17.3.0 - frozenlist >=1.1.1 + - libgcc >=13 - multidict >=4.5,<7.0 - propcache >=0.2.0 - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 - yarl >=1.17.0,<2.0 + arch: aarch64 + platform: linux license: MIT AND Apache-2.0 license_family: Apache - size: 875711 - timestamp: 1734597277258 -- kind: conda - name: aiohttp - version: 3.11.11 - build: py312hcc812fe_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.11-py312hcc812fe_0.conda - sha256: f28e81e458d19df4ca0002f8a92d7f647fa25e8179887a8676801dfe44edb1f2 - md5: 11fa88136d9bf39d2136b2378f7c10be + size: 902422 + timestamp: 1734597104529 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.11-py312h998013c_0.conda + sha256: 446f078e7a7b892894d7f4851a278b7834ffb4f5632313646a55c3abe13690d4 + md5: c69c904691364cfb27d15aa7153e9c29 depends: + - __osx >=11.0 - aiohappyeyeballs >=2.3.0 - aiosignal >=1.1.2 - attrs >=17.3.0 - frozenlist >=1.1.1 - - libgcc >=13 - multidict >=4.5,<7.0 - propcache >=0.2.0 - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 - yarl >=1.17.0,<2.0 + arch: arm64 + platform: osx license: MIT AND Apache-2.0 license_family: Apache - size: 902422 - timestamp: 1734597104529 -- kind: conda - name: aiosignal - version: 1.3.2 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda + size: 875711 + timestamp: 1734597277258 +- conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda sha256: 7de8ced1918bbdadecf8e1c1c68237fe5709c097bd9e0d254f4cad118f4345d0 md5: 1a3981115a398535dbe3f6d5faae3d36 depends: @@ -803,14 +772,7 @@ packages: license_family: APACHE size: 13229 timestamp: 1734342253061 -- kind: conda - name: annotated-types - version: 0.7.0 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda sha256: e0ea1ba78fbb64f17062601edda82097fcf815012cf52bb704150a2668110d48 md5: 2934f256a8acfe48f6ebb4fce6cde29c depends: @@ -820,13 +782,7 @@ packages: license_family: MIT size: 18074 timestamp: 1733247158254 -- kind: conda - name: anyio - version: 4.8.0 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/anyio-4.8.0-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.8.0-pyhd8ed1ab_0.conda sha256: f1455d2953e3eb6d71bc49881c8558d8e01888469dfd21061dd48afb6183e836 md5: 848d25bfbadf020ee4d4ba90e5668252 depends: @@ -842,13 +798,7 @@ packages: license_family: MIT size: 115305 timestamp: 1736174485476 -- kind: conda - name: attrs - version: 24.3.0 - build: pyh71513ae_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/attrs-24.3.0-pyh71513ae_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.3.0-pyh71513ae_0.conda sha256: 750186af694a7130eaf7119fbb56db0d2326d8995ad5b8eae23c622b85fea29a md5: 356927ace43302bf6f5926e2a58dae6a depends: @@ -857,13 +807,24 @@ packages: license_family: MIT size: 56354 timestamp: 1734348889193 -- kind: conda - name: aws-c-auth - version: 0.8.0 - build: h2cb9fb3_15 - build_number: 15 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-h2cb9fb3_15.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-hb921021_15.conda + sha256: 537006ad6d5097c134494166a6a1dc1451d5d050878d7b82cef498bfda40ba8a + md5: c79d50f64cffa5ad51ecc1a81057962f + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 107614 + timestamp: 1734021692519 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-h2cb9fb3_15.conda sha256: 4ce859dc9ff128bf5515604c43f33fb511386022fc9765ca077990f2a3f23df5 md5: e524686ace966acefb5b8cbc6e8b3daa depends: @@ -873,17 +834,13 @@ packages: - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - libgcc >=13 + arch: aarch64 + platform: linux license: Apache-2.0 license_family: Apache size: 111854 timestamp: 1734021745104 -- kind: conda - name: aws-c-auth - version: 0.8.0 - build: h8bc59a9_15 - build_number: 15 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-h8bc59a9_15.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-h8bc59a9_15.conda sha256: 0e41e56b662e76e024182adebcd91d09a4d38a83b35217c84e4967354dfff9a2 md5: f688b8893c20ad9477a19e7ce614014a depends: @@ -893,38 +850,13 @@ packages: - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 + arch: arm64 + platform: osx license: Apache-2.0 license_family: Apache size: 92507 timestamp: 1734021831330 -- kind: conda - name: aws-c-auth - version: 0.8.0 - build: hb921021_15 - build_number: 15 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-hb921021_15.conda - sha256: 537006ad6d5097c134494166a6a1dc1451d5d050878d7b82cef498bfda40ba8a - md5: c79d50f64cffa5ad51ecc1a81057962f - depends: - - __glibc >=2.17,<3.0.a0 - - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - aws-c-http >=0.9.2,<0.9.3.0a0 - - aws-c-io >=0.15.3,<0.15.4.0a0 - - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - - libgcc >=13 - license: Apache-2.0 - license_family: Apache - size: 107614 - timestamp: 1734021692519 -- kind: conda - name: aws-c-cal - version: 0.8.1 - build: h1a47875_3 - build_number: 3 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.1-h1a47875_3.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.1-h1a47875_3.conda sha256: 095ac824ea9303eff67e04090ae531d9eb33d2bf8f82eaade39b839c421e16e8 md5: 55a8561fdbbbd34f50f57d9be12ed084 depends: @@ -932,162 +864,110 @@ packages: - aws-c-common >=0.10.6,<0.10.7.0a0 - libgcc >=13 - openssl >=3.3.1,<4.0a0 + arch: x86_64 + platform: linux license: Apache-2.0 license_family: Apache size: 47601 timestamp: 1733991564405 -- kind: conda - name: aws-c-cal - version: 0.8.1 - build: h740c5af_3 - build_number: 3 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.1-h740c5af_3.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.1-h740c5af_3.conda sha256: c5c7961d48ca7320ed3560c036f7aa5244df4b85d9657f70aacc5faba3e1509a md5: 57ed2c445d7ef01d121b9bcea0522913 depends: - aws-c-common >=0.10.6,<0.10.7.0a0 - libgcc >=13 - openssl >=3.3.1,<4.0a0 + arch: aarch64 + platform: linux license: Apache-2.0 license_family: Apache size: 50036 timestamp: 1733991581303 -- kind: conda - name: aws-c-cal - version: 0.8.1 - build: hc8a0bd2_3 - build_number: 3 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.1-hc8a0bd2_3.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.1-hc8a0bd2_3.conda sha256: 1f44be36e1daa17b4b081debb8aee492d13571084f38b503ad13e869fef24fe4 md5: 8b0ce61384e5a33d2b301a64f3d22ac5 depends: - __osx >=11.0 - aws-c-common >=0.10.6,<0.10.7.0a0 - openssl >=3.3.1,<4.0a0 + arch: arm64 + platform: osx license: Apache-2.0 license_family: Apache size: 39925 timestamp: 1733991649383 -- kind: conda - name: aws-c-common - version: 0.10.6 - build: h5505292_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.10.6-h5505292_0.conda - sha256: 3bde135c8e74987c0f79ecd4fa17ec9cff0d658b3090168727ca1af3815ae57a - md5: 145e5b4c9702ed279d7d68aaf096f77d +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.10.6-hb9d3cd8_0.conda + sha256: 496e92f2150fdc351eacf6e236015deedb3d0d3114f8e5954341cbf9f3dda257 + md5: d7d4680337a14001b0e043e96529409b depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux license: Apache-2.0 license_family: Apache - size: 221863 - timestamp: 1733975576886 -- kind: conda - name: aws-c-common - version: 0.10.6 - build: h86ecc28_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-common-0.10.6-h86ecc28_0.conda + size: 236574 + timestamp: 1733975453350 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-common-0.10.6-h86ecc28_0.conda sha256: 57288ec5df35781bea8fc6a8c9099cad6695b747784fc1b8862a0f9e5b3bf5ab md5: fef806a0f6de853670c746bbece01966 depends: - libgcc >=13 + arch: aarch64 + platform: linux license: Apache-2.0 license_family: Apache size: 259031 timestamp: 1733975520465 -- kind: conda - name: aws-c-common - version: 0.10.6 - build: hb9d3cd8_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.10.6-hb9d3cd8_0.conda - sha256: 496e92f2150fdc351eacf6e236015deedb3d0d3114f8e5954341cbf9f3dda257 - md5: d7d4680337a14001b0e043e96529409b +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.10.6-h5505292_0.conda + sha256: 3bde135c8e74987c0f79ecd4fa17ec9cff0d658b3090168727ca1af3815ae57a + md5: 145e5b4c9702ed279d7d68aaf096f77d + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 221863 + timestamp: 1733975576886 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.3.0-h4e1184b_5.conda + sha256: 62ca84da83585e7814a40240a1e750b1563b2680b032a471464eccc001c3309b + md5: 3f4c1197462a6df2be6dc8241828fe93 depends: - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 - libgcc >=13 + arch: x86_64 + platform: linux license: Apache-2.0 license_family: Apache - size: 236574 - timestamp: 1733975453350 -- kind: conda - name: aws-c-compression - version: 0.3.0 - build: h0f0193d_5 - build_number: 5 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-compression-0.3.0-h0f0193d_5.conda + size: 19086 + timestamp: 1733991637424 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-compression-0.3.0-h0f0193d_5.conda sha256: 3f05d19f68ef800f33d44ea2a4211003124076516c8469abc7d432236344df53 md5: 3a1421d12435df5b4c412cc4c8fac64d depends: - aws-c-common >=0.10.6,<0.10.7.0a0 - libgcc >=13 + arch: aarch64 + platform: linux license: Apache-2.0 license_family: Apache size: 19740 timestamp: 1733991625201 -- kind: conda - name: aws-c-compression - version: 0.3.0 - build: h4e1184b_5 - build_number: 5 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.3.0-h4e1184b_5.conda - sha256: 62ca84da83585e7814a40240a1e750b1563b2680b032a471464eccc001c3309b - md5: 3f4c1197462a6df2be6dc8241828fe93 - depends: - - __glibc >=2.17,<3.0.a0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - libgcc >=13 - license: Apache-2.0 - license_family: Apache - size: 19086 - timestamp: 1733991637424 -- kind: conda - name: aws-c-compression - version: 0.3.0 - build: hc8a0bd2_5 - build_number: 5 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-compression-0.3.0-hc8a0bd2_5.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-compression-0.3.0-hc8a0bd2_5.conda sha256: 47b2813f652ce7e64ac442f771b2a5f7d4af4ad0d07ff51f6075ea80ed2e3f09 md5: a8b6c17732d14ed49d0e9b59c43186bc depends: - __osx >=11.0 - aws-c-common >=0.10.6,<0.10.7.0a0 + arch: arm64 + platform: osx license: Apache-2.0 license_family: Apache size: 18068 timestamp: 1733991869211 -- kind: conda - name: aws-c-event-stream - version: 0.5.0 - build: h54f970a_11 - build_number: 11 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.0-h54f970a_11.conda - sha256: f0667935f4e0d4c25e0e51da035640310b5ceeb8f723156734439bde8b848d7d - md5: ba41238f8e653998d7d2f42e3a8db054 - depends: - - __osx >=11.0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - aws-c-io >=0.15.3,<0.15.4.0a0 - - aws-checksums >=0.2.2,<0.2.3.0a0 - - libcxx >=18 - license: Apache-2.0 - license_family: Apache - size: 47078 - timestamp: 1734024749727 -- kind: conda - name: aws-c-event-stream - version: 0.5.0 - build: h7959bf6_11 - build_number: 11 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.0-h7959bf6_11.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.0-h7959bf6_11.conda sha256: 10d7240c7db0c941fb1a59c4f8ea6689a434b03309ee7b766fa15a809c553c02 md5: 9b3fb60fe57925a92f399bc3fc42eccf depends: @@ -1097,17 +977,13 @@ packages: - aws-checksums >=0.2.2,<0.2.3.0a0 - libgcc >=13 - libstdcxx >=13 + arch: x86_64 + platform: linux license: Apache-2.0 license_family: Apache size: 54003 timestamp: 1734024480949 -- kind: conda - name: aws-c-event-stream - version: 0.5.0 - build: hcbd8f92_11 - build_number: 11 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-event-stream-0.5.0-hcbd8f92_11.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-event-stream-0.5.0-hcbd8f92_11.conda sha256: 79aa363c71c891a27496c0498f8d498b2ddc87b3ccb3b6c9da5b50b05936ebb8 md5: e0772c59af4243a9b2565baa5d79e5b6 depends: @@ -1116,17 +992,44 @@ packages: - aws-checksums >=0.2.2,<0.2.3.0a0 - libgcc >=13 - libstdcxx >=13 + arch: aarch64 + platform: linux license: Apache-2.0 license_family: Apache size: 55207 timestamp: 1734024546663 -- kind: conda - name: aws-c-http - version: 0.9.2 - build: h3df160d_4 - build_number: 4 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.2-h3df160d_4.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.0-h54f970a_11.conda + sha256: f0667935f4e0d4c25e0e51da035640310b5ceeb8f723156734439bde8b848d7d + md5: ba41238f8e653998d7d2f42e3a8db054 + depends: + - __osx >=11.0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + - libcxx >=18 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 47078 + timestamp: 1734024749727 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.2-hefd7a92_4.conda + sha256: 4a330206bd51148f6c13ca0b7a4db40f29a46f090642ebacdeb88b8a4abd7f99 + md5: 5ce4df662d32d3123ea8da15571b6f51 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-compression >=0.3.0,<0.3.1.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 197731 + timestamp: 1734008380764 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.2-h3df160d_4.conda sha256: 3a1d2d332945306be9d49e569b95e4cc172d825f10e88715513a172f28ebb59e md5: 28f00aa7fd9556c4c461328cf146c20b depends: @@ -1135,17 +1038,13 @@ packages: - aws-c-compression >=0.3.0,<0.3.1.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - libgcc >=13 + arch: aarch64 + platform: linux license: Apache-2.0 license_family: Apache size: 190586 timestamp: 1734008442362 -- kind: conda - name: aws-c-http - version: 0.9.2 - build: h96aa502_4 - build_number: 4 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.2-h96aa502_4.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.2-h96aa502_4.conda sha256: 22e4737c8a885995b7c1ae1d79c1f6e78d489e16ec079615980fdde067aeaf76 md5: 495c93a4f08b17deb3c04894512330e6 depends: @@ -1154,37 +1053,28 @@ packages: - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-compression >=0.3.0,<0.3.1.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 + arch: arm64 + platform: osx license: Apache-2.0 license_family: Apache size: 152983 timestamp: 1734008451473 -- kind: conda - name: aws-c-http - version: 0.9.2 - build: hefd7a92_4 - build_number: 4 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.2-hefd7a92_4.conda - sha256: 4a330206bd51148f6c13ca0b7a4db40f29a46f090642ebacdeb88b8a4abd7f99 - md5: 5ce4df662d32d3123ea8da15571b6f51 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-h831e299_5.conda + sha256: 5920009b1c6f9a2bc131a36725251894e4b4773fce29c4b1065d4213ae337abe + md5: 80dd9f0ddf935290d1dc00ec75ff3023 depends: - __glibc >=2.17,<3.0.a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.6,<0.10.7.0a0 - - aws-c-compression >=0.3.0,<0.3.1.0a0 - - aws-c-io >=0.15.3,<0.15.4.0a0 - libgcc >=13 + - s2n >=1.5.10,<1.5.11.0a0 + arch: x86_64 + platform: linux license: Apache-2.0 license_family: Apache - size: 197731 - timestamp: 1734008380764 -- kind: conda - name: aws-c-io - version: 0.15.3 - build: h1a307af_5 - build_number: 5 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-h1a307af_5.conda + size: 157864 + timestamp: 1734433578570 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-h1a307af_5.conda sha256: 71f5bf891299f831dceaea12f926c393bf754569e5305387a88b77e1f94612d8 md5: da8ab0f3eeac93449ec3d531ede92caa depends: @@ -1192,53 +1082,26 @@ packages: - aws-c-common >=0.10.6,<0.10.7.0a0 - libgcc >=13 - s2n >=1.5.10,<1.5.11.0a0 + arch: aarch64 + platform: linux license: Apache-2.0 license_family: Apache size: 161889 timestamp: 1734433686109 -- kind: conda - name: aws-c-io - version: 0.15.3 - build: h831e299_5 - build_number: 5 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-h831e299_5.conda - sha256: 5920009b1c6f9a2bc131a36725251894e4b4773fce29c4b1065d4213ae337abe - md5: 80dd9f0ddf935290d1dc00ec75ff3023 - depends: - - __glibc >=2.17,<3.0.a0 - - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - libgcc >=13 - - s2n >=1.5.10,<1.5.11.0a0 - license: Apache-2.0 - license_family: Apache - size: 157864 - timestamp: 1734433578570 -- kind: conda - name: aws-c-io - version: 0.15.3 - build: haba67d1_5 - build_number: 5 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-haba67d1_5.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-haba67d1_5.conda sha256: c0a1a2b0750225ac3dc07fd258c88c2be866bf8ac67ba3d50bb4ecec852ff8ee md5: 4c5ff4134e76426a75b8c548984fa933 depends: - __osx >=11.0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.6,<0.10.7.0a0 + arch: arm64 + platform: osx license: Apache-2.0 license_family: Apache size: 135729 timestamp: 1734433832730 -- kind: conda - name: aws-c-mqtt - version: 0.11.0 - build: h11f4f37_12 - build_number: 12 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h11f4f37_12.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h11f4f37_12.conda sha256: 512d3969426152d9d5fd886e27b13706122dc3fa90eb08c37b0d51a33d7bb14a md5: 96c3e0221fa2da97619ee82faa341a73 depends: @@ -1247,35 +1110,13 @@ packages: - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - libgcc >=13 + arch: x86_64 + platform: linux license: Apache-2.0 license_family: Apache size: 194672 timestamp: 1734025626798 -- kind: conda - name: aws-c-mqtt - version: 0.11.0 - build: h24f418c_12 - build_number: 12 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h24f418c_12.conda - sha256: 96575ea1dd2a9ea94763882e40a66dcbff9c41f702bf37c9514c4c719b3c11dd - md5: c072045a6206f88015d02fcba1705ea1 - depends: - - __osx >=11.0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - aws-c-http >=0.9.2,<0.9.3.0a0 - - aws-c-io >=0.15.3,<0.15.4.0a0 - license: Apache-2.0 - license_family: Apache - size: 134371 - timestamp: 1734025379525 -- kind: conda - name: aws-c-mqtt - version: 0.11.0 - build: h5f50e26_12 - build_number: 12 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h5f50e26_12.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h5f50e26_12.conda sha256: ffeb9100cc8fd4093e1a6fdfd938bc4a396dd77480b7fb17aa42855a4d5e2c70 md5: 031ca33115d4b1eeb43f435d6215778c depends: @@ -1283,36 +1124,46 @@ packages: - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - libgcc >=13 + arch: aarch64 + platform: linux license: Apache-2.0 license_family: Apache size: 169516 timestamp: 1734025167885 -- kind: conda - name: aws-c-s3 - version: 0.7.7 - build: h1be5864_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.7-h1be5864_0.conda - sha256: 22966164d63808689fffd35945f57756c95337327e28099b5d77b29fc6a56ecc - md5: a37bba7acb62dd70492ee01eacca3b8f +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h24f418c_12.conda + sha256: 96575ea1dd2a9ea94763882e40a66dcbff9c41f702bf37c9514c4c719b3c11dd + md5: c072045a6206f88015d02fcba1705ea1 depends: - __osx >=11.0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 134371 + timestamp: 1734025379525 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.7-hf454442_0.conda + sha256: c2f205a7bf64c5f40eea373b3a0a7c363c9aa9246a13dd7f3d9c6a4434c4fe2d + md5: 947c82025693bebd557f782bb5d6b469 + depends: + - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 + - libgcc >=13 + - openssl >=3.4.0,<4.0a0 + arch: x86_64 + platform: linux license: Apache-2.0 license_family: Apache - size: 97598 - timestamp: 1734146239038 -- kind: conda - name: aws-c-s3 - version: 0.7.7 - build: h2080895_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.7-h2080895_0.conda + size: 114156 + timestamp: 1734146123386 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.7-h2080895_0.conda sha256: 20bc2dd60e6518d9b8215c2b652ab5c52ee8a997d3b9a5f69e2dabd28cbf26b2 md5: ae223efa63fbb4262a2d85c3ab3bc4f5 depends: @@ -1324,141 +1175,108 @@ packages: - aws-checksums >=0.2.2,<0.2.3.0a0 - libgcc >=13 - openssl >=3.4.0,<4.0a0 + arch: aarch64 + platform: linux license: Apache-2.0 license_family: Apache size: 117641 timestamp: 1734146239779 -- kind: conda - name: aws-c-s3 - version: 0.7.7 - build: hf454442_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.7-hf454442_0.conda - sha256: c2f205a7bf64c5f40eea373b3a0a7c363c9aa9246a13dd7f3d9c6a4434c4fe2d - md5: 947c82025693bebd557f782bb5d6b469 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.7-h1be5864_0.conda + sha256: 22966164d63808689fffd35945f57756c95337327e28099b5d77b29fc6a56ecc + md5: a37bba7acb62dd70492ee01eacca3b8f depends: - - __glibc >=2.17,<3.0.a0 + - __osx >=11.0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - - libgcc >=13 - - openssl >=3.4.0,<4.0a0 - license: Apache-2.0 - license_family: Apache - size: 114156 - timestamp: 1734146123386 -- kind: conda - name: aws-c-sdkutils - version: 0.2.1 - build: h0f0193d_4 - build_number: 4 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.1-h0f0193d_4.conda - sha256: ede8e782467c87ac80ceb9c9af9e917d121b7d8b8c698186d18e3cecd36f2210 - md5: 53e798d720dd78b78847a7b2fdb05fc9 - depends: - - aws-c-common >=0.10.6,<0.10.7.0a0 - - libgcc >=13 + arch: arm64 + platform: osx license: Apache-2.0 license_family: Apache - size: 58621 - timestamp: 1733994421495 -- kind: conda - name: aws-c-sdkutils - version: 0.2.1 - build: h4e1184b_4 - build_number: 4 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.1-h4e1184b_4.conda + size: 97598 + timestamp: 1734146239038 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.1-h4e1184b_4.conda sha256: df586f42210af1134b1c88ff4c278c3cb6d6c807c84eac48860062464b28554d md5: a5126a90e74ac739b00564a4c7ddcc36 depends: - __glibc >=2.17,<3.0.a0 - aws-c-common >=0.10.6,<0.10.7.0a0 - libgcc >=13 + arch: x86_64 + platform: linux license: Apache-2.0 license_family: Apache size: 56094 timestamp: 1733994449690 -- kind: conda - name: aws-c-sdkutils - version: 0.2.1 - build: hc8a0bd2_4 - build_number: 4 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.1-hc8a0bd2_4.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.1-h0f0193d_4.conda + sha256: ede8e782467c87ac80ceb9c9af9e917d121b7d8b8c698186d18e3cecd36f2210 + md5: 53e798d720dd78b78847a7b2fdb05fc9 + depends: + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 58621 + timestamp: 1733994421495 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.1-hc8a0bd2_4.conda sha256: de98343ce42d2e569b3380292d20f47bf39bda08aadabcbb8e650d3f38fd742f md5: 22f72f8cd7ead211304ac17d337d96e0 depends: - __osx >=11.0 - aws-c-common >=0.10.6,<0.10.7.0a0 + arch: arm64 + platform: osx license: Apache-2.0 license_family: Apache size: 49664 timestamp: 1733994553014 -- kind: conda - name: aws-checksums - version: 0.2.2 - build: h0f0193d_4 - build_number: 4 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h0f0193d_4.conda - sha256: 9f1e3635a587bcf92b61d88c7af7d24cd89c147c6d0ae58afbde08e65bcf48da - md5: 3bd35b0adab3d743f09e0252cc441d6b - depends: - - aws-c-common >=0.10.6,<0.10.7.0a0 - - libgcc >=13 - license: Apache-2.0 - license_family: Apache - size: 72154 - timestamp: 1733994384415 -- kind: conda - name: aws-checksums - version: 0.2.2 - build: h4e1184b_4 - build_number: 4 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-h4e1184b_4.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-h4e1184b_4.conda sha256: 1ed9a332d06ad595694907fad2d6d801082916c27cd5076096fda4061e6d24a8 md5: 74e8c3e4df4ceae34aa2959df4b28101 depends: - __glibc >=2.17,<3.0.a0 - aws-c-common >=0.10.6,<0.10.7.0a0 - libgcc >=13 + arch: x86_64 + platform: linux license: Apache-2.0 license_family: Apache size: 72762 timestamp: 1733994347547 -- kind: conda - name: aws-checksums - version: 0.2.2 - build: hc8a0bd2_4 - build_number: 4 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-hc8a0bd2_4.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h0f0193d_4.conda + sha256: 9f1e3635a587bcf92b61d88c7af7d24cd89c147c6d0ae58afbde08e65bcf48da + md5: 3bd35b0adab3d743f09e0252cc441d6b + depends: + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 72154 + timestamp: 1733994384415 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-hc8a0bd2_4.conda sha256: 215086d95e8ff1d3fcb0197ada116cc9d7db1fdae7573f5e810d20fa9215b47c md5: e70e88a357a3749b67679c0788c5b08a depends: - __osx >=11.0 - aws-c-common >=0.10.6,<0.10.7.0a0 + arch: arm64 + platform: osx license: Apache-2.0 license_family: Apache size: 70186 timestamp: 1733994496998 -- kind: conda - name: aws-crt-cpp - version: 0.29.7 - build: h19a973c_7 - build_number: 7 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.7-h19a973c_7.conda - sha256: 8269e6746eb3a5d15b732a3983888bf98dfc1f6594e95250fc8d16b43cfd5ff9 - md5: 95714136bef3e917bd5a2942d4682b20 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.7-hd92328a_7.conda + sha256: 094cd81f1e5ba713e9e7a272ee52b5dde3ccc4842ea90f19c0354a00bbdac3d9 + md5: 02b95564257d5c3db9c06beccf711f95 depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.6,<0.10.7.0a0 @@ -1468,18 +1286,15 @@ packages: - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - aws-c-s3 >=0.7.7,<0.7.8.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - - libcxx >=18 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux license: Apache-2.0 license_family: Apache - size: 236249 - timestamp: 1734178020924 -- kind: conda - name: aws-crt-cpp - version: 0.29.7 - build: h8a4e35f_7 - build_number: 7 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.7-h8a4e35f_7.conda + size: 354703 + timestamp: 1734177883319 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.7-h8a4e35f_7.conda sha256: 5ba9188e0cb4e3faff9bc96774febb040aa3b802aedba29d847e00e7b5eab84e md5: d77a9e3d7ce15399903e92825fd651b5 depends: @@ -1494,21 +1309,17 @@ packages: - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - libgcc >=13 - libstdcxx >=13 + arch: aarch64 + platform: linux license: Apache-2.0 license_family: Apache size: 283154 timestamp: 1734177845248 -- kind: conda - name: aws-crt-cpp - version: 0.29.7 - build: hd92328a_7 - build_number: 7 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.7-hd92328a_7.conda - sha256: 094cd81f1e5ba713e9e7a272ee52b5dde3ccc4842ea90f19c0354a00bbdac3d9 - md5: 02b95564257d5c3db9c06beccf711f95 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.7-h19a973c_7.conda + sha256: 8269e6746eb3a5d15b732a3983888bf98dfc1f6594e95250fc8d16b43cfd5ff9 + md5: 95714136bef3e917bd5a2942d4682b20 depends: - - __glibc >=2.17,<3.0.a0 + - __osx >=11.0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.6,<0.10.7.0a0 @@ -1518,22 +1329,18 @@ packages: - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - aws-c-s3 >=0.7.7,<0.7.8.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - - libgcc >=13 - - libstdcxx >=13 + - libcxx >=18 + arch: arm64 + platform: osx license: Apache-2.0 license_family: Apache - size: 354703 - timestamp: 1734177883319 -- kind: conda - name: aws-sdk-cpp - version: 1.11.458 - build: h849ce1a_4 - build_number: 4 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h849ce1a_4.conda - sha256: 51b9e9df8cbab4a13a1b9d39d6ef5ed162aaa29c09a745810e00bbe92e1045c1 - md5: cda7747f4398be8d1fb37362815917a7 + size: 236249 + timestamp: 1734178020924 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-hc430e4a_4.conda + sha256: 2dc09f6f9c49127b5f96e7535b64a9c521b944d76d8b7d03d48ae80257ac1cea + md5: aeefac461bea1f126653c1285cf5af08 depends: + - __glibc >=2.17,<3.0.a0 - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 @@ -1543,21 +1350,16 @@ packages: - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - openssl >=3.4.0,<4.0a0 + arch: x86_64 + platform: linux license: Apache-2.0 license_family: Apache - size: 2920625 - timestamp: 1734093552712 -- kind: conda - name: aws-sdk-cpp - version: 1.11.458 - build: hc430e4a_4 - build_number: 4 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-hc430e4a_4.conda - sha256: 2dc09f6f9c49127b5f96e7535b64a9c521b944d76d8b7d03d48ae80257ac1cea - md5: aeefac461bea1f126653c1285cf5af08 + size: 3060561 + timestamp: 1734093737431 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h849ce1a_4.conda + sha256: 51b9e9df8cbab4a13a1b9d39d6ef5ed162aaa29c09a745810e00bbe92e1045c1 + md5: cda7747f4398be8d1fb37362815917a7 depends: - - __glibc >=2.17,<3.0.a0 - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 @@ -1567,17 +1369,13 @@ packages: - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - openssl >=3.4.0,<4.0a0 + arch: aarch64 + platform: linux license: Apache-2.0 license_family: Apache - size: 3060561 - timestamp: 1734093737431 -- kind: conda - name: aws-sdk-cpp - version: 1.11.458 - build: he0ff2e4_4 - build_number: 4 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-he0ff2e4_4.conda + size: 2920625 + timestamp: 1734093552712 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-he0ff2e4_4.conda sha256: 535b970aaa13be45f8cab8205c59f044b17364111c41a227f061775a5c834e18 md5: 0981ed87098b149bdb7d99a4a3fd0e58 depends: @@ -1590,51 +1388,42 @@ packages: - libcxx >=18 - libzlib >=1.3.1,<2.0a0 - openssl >=3.4.0,<4.0a0 + arch: arm64 + platform: osx license: Apache-2.0 license_family: Apache size: 2826534 timestamp: 1734094018287 -- kind: conda - name: azure-core-cpp - version: 1.14.0 - build: h1887c18_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-core-cpp-1.14.0-h1887c18_0.conda - sha256: 8967b3ccee4d74e61f6ec82dd8efb9deb854ee7ba012dfe767b7a92e0ac77724 - md5: e0c3a906a41be769f0ae20ca3e31cfc0 +- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda + sha256: fe07debdb089a3db17f40a7f20d283d75284bb4fc269ef727b8ba6fc93f7cb5a + md5: 0a8838771cc2e985cd295e01ae83baf1 depends: + - __glibc >=2.17,<3.0.a0 - libcurl >=8.10.1,<9.0a0 - libgcc >=13 - libstdcxx >=13 - openssl >=3.3.2,<4.0a0 + arch: x86_64 + platform: linux license: MIT license_family: MIT - size: 338650 - timestamp: 1728055589907 -- kind: conda - name: azure-core-cpp - version: 1.14.0 - build: h5cfcd09_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda - sha256: fe07debdb089a3db17f40a7f20d283d75284bb4fc269ef727b8ba6fc93f7cb5a - md5: 0a8838771cc2e985cd295e01ae83baf1 + size: 345117 + timestamp: 1728053909574 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-core-cpp-1.14.0-h1887c18_0.conda + sha256: 8967b3ccee4d74e61f6ec82dd8efb9deb854ee7ba012dfe767b7a92e0ac77724 + md5: e0c3a906a41be769f0ae20ca3e31cfc0 depends: - - __glibc >=2.17,<3.0.a0 - libcurl >=8.10.1,<9.0a0 - libgcc >=13 - libstdcxx >=13 - openssl >=3.3.2,<4.0a0 + arch: aarch64 + platform: linux license: MIT license_family: MIT - size: 345117 - timestamp: 1728053909574 -- kind: conda - name: azure-core-cpp - version: 1.14.0 - build: hd50102c_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.14.0-hd50102c_0.conda + size: 338650 + timestamp: 1728055589907 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.14.0-hd50102c_0.conda sha256: f5b91329ed59ffc0be8747784c6e4cc7e56250c54032883a83bc11808ef6a87e md5: f093a11dcf3cdcca010b20a818fcc6dc depends: @@ -1642,16 +1431,13 @@ packages: - libcurl >=8.10.1,<9.0a0 - libcxx >=17 - openssl >=3.3.2,<4.0a0 + arch: arm64 + platform: osx license: MIT license_family: MIT size: 294299 timestamp: 1728054014060 -- kind: conda - name: azure-identity-cpp - version: 1.10.0 - build: h113e628_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.10.0-h113e628_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.10.0-h113e628_0.conda sha256: 286b31616c191486626cb49e9ceb5920d29394b9e913c23adb7eb637629ba4de md5: 73f73f60854f325a55f1d31459f2ab73 depends: @@ -1660,16 +1446,13 @@ packages: - libgcc >=13 - libstdcxx >=13 - openssl >=3.3.2,<4.0a0 + arch: x86_64 + platform: linux license: MIT license_family: MIT size: 232351 timestamp: 1728486729511 -- kind: conda - name: azure-identity-cpp - version: 1.10.0 - build: h47b0b28_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-identity-cpp-1.10.0-h47b0b28_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-identity-cpp-1.10.0-h47b0b28_0.conda sha256: 1c72423b9beba167d2f01b80dc204da77240a8266f1edb3d89510c852b300d69 md5: 94e73a7877743a85c57091d8afab2348 depends: @@ -1677,16 +1460,13 @@ packages: - libgcc >=13 - libstdcxx >=13 - openssl >=3.3.2,<4.0a0 + arch: aarch64 + platform: linux license: MIT license_family: MIT size: 217132 timestamp: 1728488096615 -- kind: conda - name: azure-identity-cpp - version: 1.10.0 - build: hc602bab_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.10.0-hc602bab_0.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.10.0-hc602bab_0.conda sha256: bde446b916fff5150606f8ed3e6058ffc55a3aa72381e46f1ab346590b1ae40a md5: d7b71593a937459f2d4b67e1a4727dc2 depends: @@ -1694,54 +1474,42 @@ packages: - azure-core-cpp >=1.14.0,<1.14.1.0a0 - libcxx >=17 - openssl >=3.3.2,<4.0a0 + arch: arm64 + platform: osx license: MIT license_family: MIT size: 166907 timestamp: 1728486882502 -- kind: conda - name: azure-storage-blobs-cpp - version: 12.13.0 - build: h185ecfd_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-blobs-cpp-12.13.0-h185ecfd_1.conda - sha256: 280ec70009a92626054f58e45b168fce393e71a9710587488bd8401628cda481 - md5: 221e1e5ecb2643e113f32b3229d5ba33 +- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.13.0-h3cf044e_1.conda + sha256: 2606260e5379eed255bcdc6adc39b93fb31477337bcd911c121fc43cd29bf394 + md5: 7eb66060455c7a47d9dcdbfa9f46579b depends: + - __glibc >=2.17,<3.0.a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 - libgcc >=13 - libstdcxx >=13 + arch: x86_64 + platform: linux license: MIT license_family: MIT - size: 502934 - timestamp: 1728580241002 -- kind: conda - name: azure-storage-blobs-cpp - version: 12.13.0 - build: h3cf044e_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.13.0-h3cf044e_1.conda - sha256: 2606260e5379eed255bcdc6adc39b93fb31477337bcd911c121fc43cd29bf394 - md5: 7eb66060455c7a47d9dcdbfa9f46579b + size: 549342 + timestamp: 1728578123088 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-blobs-cpp-12.13.0-h185ecfd_1.conda + sha256: 280ec70009a92626054f58e45b168fce393e71a9710587488bd8401628cda481 + md5: 221e1e5ecb2643e113f32b3229d5ba33 depends: - - __glibc >=2.17,<3.0.a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 - libgcc >=13 - libstdcxx >=13 + arch: aarch64 + platform: linux license: MIT license_family: MIT - size: 549342 - timestamp: 1728578123088 -- kind: conda - name: azure-storage-blobs-cpp - version: 12.13.0 - build: h7585a09_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-blobs-cpp-12.13.0-h7585a09_1.conda + size: 502934 + timestamp: 1728580241002 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-blobs-cpp-12.13.0-h7585a09_1.conda sha256: 08d52d130addc0fb55d5ba10d9fa483e39be25d69bac7f4c676c2c3069207590 md5: 704238ef05d46144dae2e6b5853df8bc depends: @@ -1749,56 +1517,44 @@ packages: - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 - libcxx >=17 + arch: arm64 + platform: osx license: MIT license_family: MIT size: 438636 timestamp: 1728578216193 -- kind: conda - name: azure-storage-common-cpp - version: 12.8.0 - build: h1b94036_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-common-cpp-12.8.0-h1b94036_1.conda - sha256: 146e76aac169e3dbdce5d3b142b7930ac643795c765e7655d1989905ec7d3231 - md5: 793b1080ab2d958980f137a8643cd6e8 +- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-common-cpp-12.8.0-h736e048_1.conda + sha256: 273475f002b091b66ce7366da04bf164c3732c03f8692ab2ee2d23335b6a82ba + md5: 13de36be8de3ae3f05ba127631599213 depends: + - __glibc >=2.17,<3.0.a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - libgcc >=13 - libstdcxx >=13 - libxml2 >=2.12.7,<3.0a0 - openssl >=3.3.2,<4.0a0 + arch: x86_64 + platform: linux license: MIT license_family: MIT - size: 140832 - timestamp: 1728565334900 -- kind: conda - name: azure-storage-common-cpp - version: 12.8.0 - build: h736e048_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-common-cpp-12.8.0-h736e048_1.conda - sha256: 273475f002b091b66ce7366da04bf164c3732c03f8692ab2ee2d23335b6a82ba - md5: 13de36be8de3ae3f05ba127631599213 + size: 149312 + timestamp: 1728563338704 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-common-cpp-12.8.0-h1b94036_1.conda + sha256: 146e76aac169e3dbdce5d3b142b7930ac643795c765e7655d1989905ec7d3231 + md5: 793b1080ab2d958980f137a8643cd6e8 depends: - - __glibc >=2.17,<3.0.a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - libgcc >=13 - libstdcxx >=13 - libxml2 >=2.12.7,<3.0a0 - openssl >=3.3.2,<4.0a0 + arch: aarch64 + platform: linux license: MIT license_family: MIT - size: 149312 - timestamp: 1728563338704 -- kind: conda - name: azure-storage-common-cpp - version: 12.8.0 - build: h9ca1f76_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-common-cpp-12.8.0-h9ca1f76_1.conda + size: 140832 + timestamp: 1728565334900 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-common-cpp-12.8.0-h9ca1f76_1.conda sha256: 77ab04e8fe5636a2de9c718f72a43645f7502cd208868c8a91ffba385547d585 md5: 7a187cd7b1445afc80253bb186a607cc depends: @@ -1807,56 +1563,44 @@ packages: - libcxx >=17 - libxml2 >=2.12.7,<3.0a0 - openssl >=3.3.2,<4.0a0 + arch: arm64 + platform: osx license: MIT license_family: MIT size: 121278 timestamp: 1728563418777 -- kind: conda - name: azure-storage-files-datalake-cpp - version: 12.12.0 - build: h37d6d07_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-files-datalake-cpp-12.12.0-h37d6d07_1.conda - sha256: 4079c617a75682e49bae63670d58fd6078ccfbbe55ca1f994acab3a74ab6bbcc - md5: b724f3b4b7f4e9b36c58cbe3ed8610a2 +- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-files-datalake-cpp-12.12.0-ha633028_1.conda + sha256: 5371e4f3f920933bb89b926a85a67f24388227419abd6e99f6086481e5e8d5f2 + md5: 7c1980f89dd41b097549782121a73490 depends: + - __glibc >=2.17,<3.0.a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 - libgcc >=13 - libstdcxx >=13 + arch: x86_64 + platform: linux license: MIT license_family: MIT - size: 260547 - timestamp: 1728730924071 -- kind: conda - name: azure-storage-files-datalake-cpp - version: 12.12.0 - build: ha633028_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-files-datalake-cpp-12.12.0-ha633028_1.conda - sha256: 5371e4f3f920933bb89b926a85a67f24388227419abd6e99f6086481e5e8d5f2 - md5: 7c1980f89dd41b097549782121a73490 + size: 287366 + timestamp: 1728729530295 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-files-datalake-cpp-12.12.0-h37d6d07_1.conda + sha256: 4079c617a75682e49bae63670d58fd6078ccfbbe55ca1f994acab3a74ab6bbcc + md5: b724f3b4b7f4e9b36c58cbe3ed8610a2 depends: - - __glibc >=2.17,<3.0.a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 - libgcc >=13 - libstdcxx >=13 + arch: aarch64 + platform: linux license: MIT license_family: MIT - size: 287366 - timestamp: 1728729530295 -- kind: conda - name: azure-storage-files-datalake-cpp - version: 12.12.0 - build: hcdd55da_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-files-datalake-cpp-12.12.0-hcdd55da_1.conda + size: 260547 + timestamp: 1728730924071 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-files-datalake-cpp-12.12.0-hcdd55da_1.conda sha256: f48523f8aa0b5b80f45a92f0556b388dd96f44ac2dc2f44a01d08c1822eec97d md5: c49fbc5233fcbaa86391162ff1adef38 depends: @@ -1865,18 +1609,13 @@ packages: - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 - libcxx >=17 + arch: arm64 + platform: osx license: MIT license_family: MIT size: 196032 timestamp: 1728729672889 -- kind: conda - name: backoff - version: 2.2.1 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/backoff-2.2.1-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/backoff-2.2.1-pyhd8ed1ab_1.conda sha256: f334115c6b0c6c2cd0d28595365f205ec7eaa60bcc5ff91a75d7245f728be820 md5: a38b801f2bcc12af80c2e02a9e4ce7d9 depends: @@ -1885,13 +1624,7 @@ packages: license_family: MIT size: 18816 timestamp: 1733771192649 -- kind: conda - name: brotli-python - version: 1.1.0 - build: py312h2ec8cdc_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py312h2ec8cdc_2.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py312h2ec8cdc_2.conda sha256: f2a59ccd20b4816dea9a2a5cb917eb69728271dbf1aeab4e1b7e609330a50b6f md5: b0b867af6fc74b2a0aa206da29c0f3cf depends: @@ -1902,17 +1635,13 @@ packages: - python_abi 3.12.* *_cp312 constrains: - libbrotlicommon 1.1.0 hb9d3cd8_2 + arch: x86_64 + platform: linux license: MIT license_family: MIT size: 349867 timestamp: 1725267732089 -- kind: conda - name: brotli-python - version: 1.1.0 - build: py312h6f74592_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/brotli-python-1.1.0-py312h6f74592_2.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/brotli-python-1.1.0-py312h6f74592_2.conda sha256: 9736bf660a0e4260c68f81d2635b51067f817813e6490ac9e8abd9a835dcbf6d md5: e1e9727063057168d95f27a032acd0a4 depends: @@ -1923,17 +1652,13 @@ packages: - python_abi 3.12.* *_cp312 constrains: - libbrotlicommon 1.1.0 h86ecc28_2 + arch: aarch64 + platform: linux license: MIT license_family: MIT size: 356878 timestamp: 1725267878508 -- kind: conda - name: brotli-python - version: 1.1.0 - build: py312hde4cb15_2 - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py312hde4cb15_2.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py312hde4cb15_2.conda sha256: 254b411fa78ccc226f42daf606772972466f93e9bc6895eabb4cfda22f5178af md5: a83c2ef76ccb11bc2349f4f17696b15d depends: @@ -1944,139 +1669,105 @@ packages: - python_abi 3.12.* *_cp312 constrains: - libbrotlicommon 1.1.0 hd74edd7_2 + arch: arm64 + platform: osx license: MIT license_family: MIT size: 339360 timestamp: 1725268143995 -- kind: conda - name: bzip2 - version: 1.0.8 - build: h4bc722e_7 - build_number: 7 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda sha256: 5ced96500d945fb286c9c838e54fa759aa04a7129c59800f0846b4335cee770d md5: 62ee74e96c5ebb0af99386de58cf9553 depends: - __glibc >=2.17,<3.0.a0 - libgcc-ng >=12 + arch: x86_64 + platform: linux license: bzip2-1.0.6 license_family: BSD size: 252783 timestamp: 1720974456583 -- kind: conda - name: bzip2 - version: 1.0.8 - build: h68df207_7 - build_number: 7 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h68df207_7.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h68df207_7.conda sha256: 2258b0b33e1cb3a9852d47557984abb6e7ea58e3d7f92706ec1f8e879290c4cb md5: 56398c28220513b9ea13d7b450acfb20 depends: - libgcc-ng >=12 + arch: aarch64 + platform: linux license: bzip2-1.0.6 license_family: BSD size: 189884 timestamp: 1720974504976 -- kind: conda - name: bzip2 - version: 1.0.8 - build: h99b78c6_7 - build_number: 7 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda sha256: adfa71f158cbd872a36394c56c3568e6034aa55c623634b37a4836bd036e6b91 md5: fc6948412dbbbe9a4c9ddbbcfe0a79ab depends: - __osx >=11.0 + arch: arm64 + platform: osx license: bzip2-1.0.6 license_family: BSD size: 122909 timestamp: 1720974522888 -- kind: conda - name: c-ares - version: 1.34.4 - build: h5505292_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.4-h5505292_0.conda - sha256: 09c0c8476e50b2955f474a4a1c17c4c047dd52993b5366b6ea8e968e583b921f - md5: c1c999a38a4303b29d75c636eaa13cf9 +- conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.4-hb9d3cd8_0.conda + sha256: d4f28d87b6339b94f74762c0076e29c8ef8ddfff51a564a92da2843573c18320 + md5: e2775acf57efd5af15b8e3d1d74d72d3 depends: - - __osx >=11.0 - license: MIT - license_family: MIT - size: 179496 - timestamp: 1734208291879 -- kind: conda - name: c-ares - version: 1.34.4 - build: h86ecc28_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/c-ares-1.34.4-h86ecc28_0.conda + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 206085 + timestamp: 1734208189009 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/c-ares-1.34.4-h86ecc28_0.conda sha256: 1187a41d4bb2afe02cb18690682edc98d1e9f5e0ccda638d8704a75ea1875bbe md5: 356da36f35d36dcba16e43f1589d4e39 depends: - libgcc >=13 + arch: aarch64 + platform: linux license: MIT license_family: MIT size: 215979 timestamp: 1734208193181 -- kind: conda - name: c-ares - version: 1.34.4 - build: hb9d3cd8_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.4-hb9d3cd8_0.conda - sha256: d4f28d87b6339b94f74762c0076e29c8ef8ddfff51a564a92da2843573c18320 - md5: e2775acf57efd5af15b8e3d1d74d72d3 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.4-h5505292_0.conda + sha256: 09c0c8476e50b2955f474a4a1c17c4c047dd52993b5366b6ea8e968e583b921f + md5: c1c999a38a4303b29d75c636eaa13cf9 depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 + - __osx >=11.0 + arch: arm64 + platform: osx license: MIT license_family: MIT - size: 206085 - timestamp: 1734208189009 -- kind: conda - name: ca-certificates - version: 2024.12.14 - build: hbcca054_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2024.12.14-hbcca054_0.conda + size: 179496 + timestamp: 1734208291879 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2024.12.14-hbcca054_0.conda sha256: 1afd7274cbc9a334d6d0bc62fa760acc7afdaceb0b91a8df370ec01fd75dc7dd md5: 720523eb0d6a9b0f6120c16b2aa4e7de + arch: x86_64 + platform: linux license: ISC size: 157088 timestamp: 1734208393264 -- kind: conda - name: ca-certificates - version: 2024.12.14 - build: hcefe29a_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2024.12.14-hcefe29a_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2024.12.14-hcefe29a_0.conda sha256: ad7b43211051332a5a4e788bb4619a2d0ecb5be73e0f76be17f733a87d7effd1 md5: 83b4ad1e6dc14df5891f3fcfdeb44351 + arch: aarch64 + platform: linux license: ISC size: 157096 timestamp: 1734209301744 -- kind: conda - name: ca-certificates - version: 2024.12.14 - build: hf0a4a13_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2024.12.14-hf0a4a13_0.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2024.12.14-hf0a4a13_0.conda sha256: 256be633fd0882ccc1a7a32bc278547e1703f85082c0789a87a603ee3ab8fb82 md5: 7cb381a6783d91902638e4ed1ebd478e + arch: arm64 + platform: osx license: ISC size: 157091 timestamp: 1734208344343 -- kind: conda - name: certifi - version: 2024.12.14 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.12.14-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.12.14-pyhd8ed1ab_0.conda sha256: 048c16a9cbcb1fbad02083414d3bc7c1d0eea4b39aee6aa6bf8d1d5089ca8bad md5: 6feb87357ecd66733be3279f16a8c400 depends: @@ -2084,12 +1775,7 @@ packages: license: ISC size: 161642 timestamp: 1734380604767 -- kind: conda - name: cffi - version: 1.17.1 - build: py312h06ac9bb_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py312h06ac9bb_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py312h06ac9bb_0.conda sha256: cba6ea83c4b0b4f5b5dc59cb19830519b28f95d7ebef7c9c5cf1c14843621457 md5: a861504bbea4161a9170b85d4d2be840 depends: @@ -2099,54 +1785,44 @@ packages: - pycparser - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux license: MIT license_family: MIT size: 294403 timestamp: 1725560714366 -- kind: conda - name: cffi - version: 1.17.1 - build: py312h0fad829_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.1-py312h0fad829_0.conda - sha256: 8d91a0d01358b5c3f20297c6c536c5d24ccd3e0c2ddd37f9d0593d0f0070226f - md5: 19a5456f72f505881ba493979777b24e +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cffi-1.17.1-py312hac81daf_0.conda + sha256: 1162e3ca039e7ca7c0e78f0a020ed1bde968096841b663e3f393c966eb82f0f0 + md5: 1a256e5581b1099e9295cb84d53db3ea depends: - - __osx >=11.0 - libffi >=3.4,<4.0a0 + - libgcc >=13 - pycparser - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux license: MIT license_family: MIT - size: 281206 - timestamp: 1725560813378 -- kind: conda - name: cffi - version: 1.17.1 - build: py312hac81daf_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/cffi-1.17.1-py312hac81daf_0.conda - sha256: 1162e3ca039e7ca7c0e78f0a020ed1bde968096841b663e3f393c966eb82f0f0 - md5: 1a256e5581b1099e9295cb84d53db3ea + size: 312892 + timestamp: 1725561779888 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.1-py312h0fad829_0.conda + sha256: 8d91a0d01358b5c3f20297c6c536c5d24ccd3e0c2ddd37f9d0593d0f0070226f + md5: 19a5456f72f505881ba493979777b24e depends: + - __osx >=11.0 - libffi >=3.4,<4.0a0 - - libgcc >=13 - pycparser - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx license: MIT license_family: MIT - size: 312892 - timestamp: 1725561779888 -- kind: conda - name: charset-normalizer - version: 3.4.1 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda + size: 281206 + timestamp: 1725560813378 +- conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda sha256: 4e0ee91b97e5de3e74567bdacea27f0139709fceca4db8adffbe24deffccb09b md5: e83a31202d1c0a000fce3e9cf3825875 depends: @@ -2155,13 +1831,7 @@ packages: license_family: MIT size: 47438 timestamp: 1735929811779 -- kind: conda - name: click - version: 8.1.8 - build: pyh707e725_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda sha256: c920d23cd1fcf565031c679adb62d848af60d6fbb0edc2d50ba475cea4f0d8ab md5: f22f4d4970e09d68a10b922cbb0408d3 depends: @@ -2171,14 +1841,7 @@ packages: license_family: BSD size: 84705 timestamp: 1734858922844 -- kind: conda - name: colorama - version: 0.4.6 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda sha256: ab29d57dc70786c1269633ba3dff20288b81664d3ff8d21af995742e2bb03287 md5: 962b9857ee8e7018c22f2776ffa0b2d7 depends: @@ -2187,13 +1850,7 @@ packages: license_family: BSD size: 27011 timestamp: 1733218222191 -- kind: conda - name: datasets - version: 2.14.4 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda sha256: 7e09bd083a609138b780fcc4535924cb96814d2c908a36d4c64a2ba9ee3efe7f md5: 3e087f072ce03c43a9b60522f5d0ca2f depends: @@ -2216,14 +1873,7 @@ packages: license_family: Apache size: 347303 timestamp: 1691593908658 -- kind: conda - name: deprecated - version: 1.2.15 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhd8ed1ab_1.conda sha256: a20ebf2c9b02a6eb32412ceb5c4cffaae49417db7e75414a76417538293a9402 md5: eaef2e94d5bd76f758545d172c1fda67 depends: @@ -2233,13 +1883,7 @@ packages: license_family: MIT size: 14297 timestamp: 1733662697343 -- kind: conda - name: dill - version: 0.3.7 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda sha256: 4ff20c6be028be2825235631c45d9e4a75bca1de65f8840c02dfb28ea0137c45 md5: 5e4f3466526c52bc9af2d2353a1460bd depends: @@ -2248,14 +1892,7 @@ packages: license_family: BSD size: 87553 timestamp: 1690101185422 -- kind: conda - name: dnspython - version: 2.7.0 - build: pyhff2d567_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda sha256: 3ec40ccf63f2450c5e6c7dd579e42fc2e97caf0d8cd4ba24aa434e6fc264eda0 md5: 5fbd60d61d21b4bd2f9d7a48fe100418 depends: @@ -2274,14 +1911,7 @@ packages: license_family: OTHER size: 172172 timestamp: 1733256829961 -- kind: conda - name: email-validator - version: 2.2.0 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda sha256: b91a19eb78edfc2dbb36de9a67f74ee2416f1b5273dd7327abe53f2dbf864736 md5: da16dd3b0b71339060cd44cb7110ddf9 depends: @@ -2291,14 +1921,7 @@ packages: license: Unlicense size: 44401 timestamp: 1733300827551 -- kind: conda - name: email_validator - version: 2.2.0 - build: hd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_1.conda sha256: e0d0fdf587aa0ed0ff08b2bce3ab355f46687b87b0775bfba01cc80a859ee6a2 md5: 0794f8807ff2c6f020422cacb1bd7bfa depends: @@ -2306,14 +1929,7 @@ packages: license: Unlicense size: 6552 timestamp: 1733300828176 -- kind: conda - name: exceptiongroup - version: 1.2.2 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda sha256: cbde2c64ec317118fc06b223c5fd87c8a680255e7348dd60e7b292d2e103e701 md5: a16662747cdeb9abbac74d0057cc976e depends: @@ -2321,13 +1937,7 @@ packages: license: MIT and PSF-2.0 size: 20486 timestamp: 1733208916977 -- kind: conda - name: fastapi - version: 0.115.6 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.6-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.6-pyhd8ed1ab_0.conda sha256: d7826d537c667093c9de96411a09585a8d620c84a830a0195e58e9a0df45f018 md5: 1b1e0c97830cdf75f1f371bd467ab657 depends: @@ -2345,13 +1955,7 @@ packages: license_family: MIT size: 73084 timestamp: 1733362427885 -- kind: conda - name: fastapi-cli - version: 0.0.7 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.7-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.7-pyhd8ed1ab_0.conda sha256: 300683731013b7221922339cd40430bb3c2ddeeb658fd7e37f5099ffe64e4db0 md5: d960e0ea9e1c561aa928f6c4439f04c7 depends: @@ -2363,14 +1967,7 @@ packages: license_family: MIT size: 15546 timestamp: 1734302408607 -- kind: conda - name: filelock - version: 3.16.1 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_1.conda sha256: 18dca6e2194732df7ebf824abaefe999e4765ebe8e8a061269406ab88fc418b9 md5: d692e9ba6f92dc51484bf3477e36ce7c depends: @@ -2378,76 +1975,42 @@ packages: license: Unlicense size: 17441 timestamp: 1733240909987 -- kind: conda - name: freetype - version: 2.12.1 - build: h267a509_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.12.1-h267a509_2.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.12.1-h267a509_2.conda sha256: b2e3c449ec9d907dd4656cb0dc93e140f447175b125a3824b31368b06c666bb6 md5: 9ae35c3d96db2c94ce0cef86efdfa2cb depends: - libgcc-ng >=12 - libpng >=1.6.39,<1.7.0a0 - libzlib >=1.2.13,<2.0.0a0 + arch: x86_64 + platform: linux license: GPL-2.0-only OR FTL size: 634972 timestamp: 1694615932610 -- kind: conda - name: freetype - version: 2.12.1 - build: hadb7bae_2 - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/freetype-2.12.1-hadb7bae_2.conda - sha256: 791673127e037a2dc0eebe122dc4f904cb3f6e635bb888f42cbe1a76b48748d9 - md5: e6085e516a3e304ce41a8ee08b9b89ad - depends: - - libpng >=1.6.39,<1.7.0a0 - - libzlib >=1.2.13,<2.0.0a0 - license: GPL-2.0-only OR FTL - size: 596430 - timestamp: 1694616332835 -- kind: conda - name: freetype - version: 2.12.1 - build: hf0a5ef3_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/freetype-2.12.1-hf0a5ef3_2.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/freetype-2.12.1-hf0a5ef3_2.conda sha256: 7af93030f4407f076dce181062360efac2cd54dce863b5d7765287a6f5382537 md5: a5ab74c5bd158c3d5532b66d8d83d907 depends: - libgcc-ng >=12 - libpng >=1.6.39,<1.7.0a0 - libzlib >=1.2.13,<2.0.0a0 + arch: aarch64 + platform: linux license: GPL-2.0-only OR FTL size: 642092 timestamp: 1694617858496 -- kind: conda - name: frozenlist - version: 1.5.0 - build: py312h0bf5046_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/frozenlist-1.5.0-py312h0bf5046_0.conda - sha256: 44d6d6b332421e621c029fb149f12dba1ccb5ed6ac632e2e807a9d92d6cb2864 - md5: 7960352935cc95ac23883c9b8c97f2ff +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/freetype-2.12.1-hadb7bae_2.conda + sha256: 791673127e037a2dc0eebe122dc4f904cb3f6e635bb888f42cbe1a76b48748d9 + md5: e6085e516a3e304ce41a8ee08b9b89ad depends: - - __osx >=11.0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - license: Apache-2.0 - license_family: APACHE - size: 53366 - timestamp: 1729699762631 -- kind: conda - name: frozenlist - version: 1.5.0 - build: py312h66e93f0_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/frozenlist-1.5.0-py312h66e93f0_0.conda + - libpng >=1.6.39,<1.7.0a0 + - libzlib >=1.2.13,<2.0.0a0 + arch: arm64 + platform: osx + license: GPL-2.0-only OR FTL + size: 596430 + timestamp: 1694616332835 +- conda: https://conda.anaconda.org/conda-forge/linux-64/frozenlist-1.5.0-py312h66e93f0_0.conda sha256: 7e0c12983b20f2816b3712729b5a35ecb7ee152132ca7cf805427c62395ea823 md5: f98e36c96b2c66d9043187179ddb04f4 depends: @@ -2455,16 +2018,13 @@ packages: - libgcc >=13 - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux license: Apache-2.0 license_family: APACHE size: 60968 timestamp: 1729699568442 -- kind: conda - name: frozenlist - version: 1.5.0 - build: py312hb2c0f52_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/frozenlist-1.5.0-py312hb2c0f52_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/frozenlist-1.5.0-py312hb2c0f52_0.conda sha256: b0a9ff3e71452eed70877b2f3175d41cd85070da6deac381c5f3f61e1f19bccb md5: 62fc11b0738ca15e0dd19b60cf280d12 depends: @@ -2472,17 +2032,27 @@ packages: - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux license: Apache-2.0 license_family: APACHE size: 59967 timestamp: 1729699642726 -- kind: conda - name: fsspec - version: 2024.12.0 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.12.0-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/frozenlist-1.5.0-py312h0bf5046_0.conda + sha256: 44d6d6b332421e621c029fb149f12dba1ccb5ed6ac632e2e807a9d92d6cb2864 + md5: 7960352935cc95ac23883c9b8c97f2ff + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + size: 53366 + timestamp: 1729699762631 +- conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.12.0-pyhd8ed1ab_0.conda sha256: 3320970c4604989eadf908397a9475f9e6a96a773c185915111399cbfbe47817 md5: e041ad4c43ab5e10c74587f95378ebc7 depends: @@ -2491,110 +2061,83 @@ packages: license_family: BSD size: 137756 timestamp: 1734650349242 -- kind: conda - name: gflags - version: 2.2.2 - build: h5888daf_1005 - build_number: 1005 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/gflags-2.2.2-h5888daf_1005.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/gflags-2.2.2-h5888daf_1005.conda sha256: 6c33bf0c4d8f418546ba9c250db4e4221040936aef8956353bc764d4877bc39a md5: d411fc29e338efb48c5fd4576d71d881 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - libstdcxx >=13 + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD size: 119654 timestamp: 1726600001928 -- kind: conda - name: gflags - version: 2.2.2 - build: h5ad3122_1005 - build_number: 1005 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/gflags-2.2.2-h5ad3122_1005.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gflags-2.2.2-h5ad3122_1005.conda sha256: 28fe6b40b20454106d5e4ef6947cf298c13cc72a46347bbc49b563cd3a463bfa md5: 4ff634d515abbf664774b5e1168a9744 depends: - libgcc >=13 - libstdcxx >=13 + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD size: 106638 timestamp: 1726599967617 -- kind: conda - name: gflags - version: 2.2.2 - build: hf9b8971_1005 - build_number: 1005 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/gflags-2.2.2-hf9b8971_1005.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/gflags-2.2.2-hf9b8971_1005.conda sha256: fd56ed8a1dab72ab90d8a8929b6f916a6d9220ca297ff077f8f04c5ed3408e20 md5: 57a511a5905caa37540eb914dfcbf1fb depends: - __osx >=11.0 - libcxx >=17 + arch: arm64 + platform: osx license: BSD-3-Clause license_family: BSD size: 82090 timestamp: 1726600145480 -- kind: conda - name: glog - version: 0.7.1 - build: h468a4a4_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/glog-0.7.1-h468a4a4_0.conda - sha256: 920795d4f775a9f47e91c2223e64847f0b212b3fedc56c137c5889e32efe8ba0 - md5: 08940a32c6ced3703d1412dd37df4f62 +- conda: https://conda.anaconda.org/conda-forge/linux-64/glog-0.7.1-hbabe93e_0.conda + sha256: dc824dc1d0aa358e28da2ecbbb9f03d932d976c8dca11214aa1dcdfcbd054ba2 + md5: ff862eebdfeb2fd048ae9dc92510baca depends: - gflags >=2.2.2,<2.3.0a0 - libgcc-ng >=12 - libstdcxx-ng >=12 + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD - size: 145811 - timestamp: 1718284208668 -- kind: conda - name: glog - version: 0.7.1 - build: hbabe93e_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/glog-0.7.1-hbabe93e_0.conda - sha256: dc824dc1d0aa358e28da2ecbbb9f03d932d976c8dca11214aa1dcdfcbd054ba2 - md5: ff862eebdfeb2fd048ae9dc92510baca + size: 143452 + timestamp: 1718284177264 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/glog-0.7.1-h468a4a4_0.conda + sha256: 920795d4f775a9f47e91c2223e64847f0b212b3fedc56c137c5889e32efe8ba0 + md5: 08940a32c6ced3703d1412dd37df4f62 depends: - gflags >=2.2.2,<2.3.0a0 - libgcc-ng >=12 - libstdcxx-ng >=12 + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD - size: 143452 - timestamp: 1718284177264 -- kind: conda - name: glog - version: 0.7.1 - build: heb240a5_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/glog-0.7.1-heb240a5_0.conda + size: 145811 + timestamp: 1718284208668 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/glog-0.7.1-heb240a5_0.conda sha256: 9fc77de416953aa959039db72bc41bfa4600ae3ff84acad04a7d0c1ab9552602 md5: fef68d0a95aa5b84b5c1a4f6f3bf40e1 depends: - __osx >=11.0 - gflags >=2.2.2,<2.3.0a0 - libcxx >=16 + arch: arm64 + platform: osx license: BSD-3-Clause license_family: BSD size: 112215 timestamp: 1718284365403 -- kind: conda - name: googleapis-common-protos - version: 1.66.0 - build: pyhff2d567_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda sha256: d8d19575a827f2c62500949b9536efdd6b5406c9f546a73b6a87ac90b03a5875 md5: 4861e30ff0cd566ea6fb4593e3b7c22a depends: @@ -2604,14 +2147,7 @@ packages: license_family: APACHE size: 116522 timestamp: 1731459019854 -- kind: conda - name: h11 - version: 0.14.0 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda sha256: 622516185a7c740d5c7f27016d0c15b45782c1501e5611deec63fd70344ce7c8 md5: 7ee49e89531c0dcbba9466f6d115d585 depends: @@ -2621,14 +2157,7 @@ packages: license_family: MIT size: 51846 timestamp: 1733327599467 -- kind: conda - name: h2 - version: 4.1.0 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_1.conda sha256: 843ddad410c370672a8250470697027618f104153612439076d4d7b91eeb7b5c md5: 825927dc7b0f287ef8d4d0011bb113b1 depends: @@ -2639,14 +2168,7 @@ packages: license_family: MIT size: 52000 timestamp: 1733298867359 -- kind: conda - name: hpack - version: 4.0.0 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda sha256: ec89b7e5b8aa2f0219f666084446e1fb7b54545861e9caa892acb24d125761b5 md5: 2aa5ff7fa34a81b9196532c84c10d865 depends: @@ -2655,14 +2177,7 @@ packages: license_family: MIT size: 29412 timestamp: 1733299296857 -- kind: conda - name: httpcore - version: 1.0.7 - build: pyh29332c3_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda sha256: c84d012a245171f3ed666a8bf9319580c269b7843ffa79f26468842da3abd5df md5: 2ca8e6dbc86525c8b95e3c0ffa26442e depends: @@ -2676,12 +2191,7 @@ packages: license_family: BSD size: 48959 timestamp: 1731707562362 -- kind: conda - name: httptools - version: 0.6.4 - build: py312h66e93f0_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/httptools-0.6.4-py312h66e93f0_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/httptools-0.6.4-py312h66e93f0_0.conda sha256: 621e7e050b888e5239d33e37ea72d6419f8367e5babcad38b755586f20264796 md5: 8b1160b32557290b64d5be68db3d996d depends: @@ -2689,16 +2199,13 @@ packages: - libgcc >=13 - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux license: MIT license_family: MIT size: 101872 timestamp: 1732707756745 -- kind: conda - name: httptools - version: 0.6.4 - build: py312hb2c0f52_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/httptools-0.6.4-py312hb2c0f52_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/httptools-0.6.4-py312hb2c0f52_0.conda sha256: 0bd1f30224af142711d11033a7469ae402a1147143f399f7341bbc1d8178c722 md5: 5e70a6de59352f9a52e9caa7f3447390 depends: @@ -2706,16 +2213,13 @@ packages: - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux license: MIT license_family: MIT size: 101255 timestamp: 1732707891645 -- kind: conda - name: httptools - version: 0.6.4 - build: py312hea69d52_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/httptools-0.6.4-py312hea69d52_0.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/httptools-0.6.4-py312hea69d52_0.conda sha256: 5e93cda79e32e8c0039e05ea1939e688da336187dab025f699b42ef529e848be md5: e1747a8e8d2aca5499aaea9993bf31ff depends: @@ -2723,17 +2227,13 @@ packages: - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx license: MIT license_family: MIT size: 85623 timestamp: 1732707871414 -- kind: conda - name: httpx - version: 0.28.1 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda sha256: cd0f1de3697b252df95f98383e9edb1d00386bfdd03fdf607fa42fe5fcb09950 md5: d6989ead454181f4f9bc987d3dc4e285 depends: @@ -2746,13 +2246,7 @@ packages: license_family: BSD size: 63082 timestamp: 1733663449209 -- kind: conda - name: huggingface_hub - version: 0.27.1 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.27.1-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.27.1-pyhd8ed1ab_0.conda sha256: 4597d7aa720f4acdddacc27b3f9e8d4336cb79477c53aee2d7ab96d136169cdb md5: 8c9a53ecd0c3c278efbdac567dd12ed0 depends: @@ -2769,14 +2263,7 @@ packages: license_family: APACHE size: 278363 timestamp: 1736350219225 -- kind: conda - name: hyperframe - version: 6.0.1 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda sha256: e91c6ef09d076e1d9a02819cd00fa7ee18ecf30cdd667605c853980216584d1b md5: 566e75c90c1d0c8c459eb0ad9833dc7a depends: @@ -2785,43 +2272,30 @@ packages: license_family: MIT size: 17239 timestamp: 1733298862681 -- kind: conda - name: icu - version: '75.1' - build: hf9b3779_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda sha256: 813298f2e54ef087dbfc9cc2e56e08ded41de65cff34c639cc8ba4e27e4540c9 md5: 268203e8b983fddb6412b36f2024e75c depends: - libgcc-ng >=12 - libstdcxx-ng >=12 + arch: aarch64 + platform: linux license: MIT license_family: MIT size: 12282786 timestamp: 1720853454991 -- kind: conda - name: icu - version: '75.1' - build: hfee45f7_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda sha256: 9ba12c93406f3df5ab0a43db8a4b4ef67a5871dfd401010fbe29b218b2cbe620 md5: 5eb22c1d7b3fc4abb50d92d621583137 depends: - __osx >=11.0 + arch: arm64 + platform: osx license: MIT license_family: MIT size: 11857802 timestamp: 1720853997952 -- kind: conda - name: idna - version: '3.10' - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda sha256: d7a472c9fd479e2e8dcb83fb8d433fce971ea369d704ece380e876f9c3494e87 md5: 39a4f67be3286c86d696df570b1201b7 depends: @@ -2830,14 +2304,7 @@ packages: license_family: BSD size: 49765 timestamp: 1733211921194 -- kind: conda - name: importlib-metadata - version: 8.5.0 - build: pyha770c72_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_1.conda sha256: 13766b88fc5b23581530d3a0287c0c58ad82f60401afefab283bf158d2be55a9 md5: 315607a3030ad5d5227e76e0733798ff depends: @@ -2847,13 +2314,7 @@ packages: license_family: APACHE size: 28623 timestamp: 1733223207185 -- kind: conda - name: jinja2 - version: 3.1.5 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.5-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.5-pyhd8ed1ab_0.conda sha256: 98977694b9ecaa3218662f843425f39501f81973c450f995eec68f1803ed71c3 md5: 2752a6ed44105bfb18c9bef1177d9dcd depends: @@ -2863,14 +2324,7 @@ packages: license_family: BSD size: 112561 timestamp: 1734824044952 -- kind: conda - name: jupyter_client - version: 8.6.3 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda sha256: 19d8bd5bb2fde910ec59e081eeb59529491995ce0d653a5209366611023a0b3a md5: 4ebae00eae9705b0c3d6d1018a81d047 depends: @@ -2885,14 +2339,7 @@ packages: license_family: BSD size: 106342 timestamp: 1733441040958 -- kind: conda - name: jupyter_core - version: 5.7.2 - build: pyh31011fe_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda sha256: 732b1e8536bc22a5a174baa79842d79db2f4956d90293dd82dc1b3f6099bcccd md5: 0a2980dada0dd7fd0998f0342308b1b1 depends: @@ -2904,56 +2351,43 @@ packages: license_family: BSD size: 57671 timestamp: 1727163547058 -- kind: conda - name: keyutils - version: 1.6.1 - build: h166bdaf_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 sha256: 150c05a6e538610ca7c43beb3a40d65c90537497a4f6a5f4d15ec0451b6f5ebb md5: 30186d27e2c9fa62b45fb1476b7200e3 depends: - libgcc-ng >=10.3.0 + arch: x86_64 + platform: linux license: LGPL-2.1-or-later size: 117831 timestamp: 1646151697040 -- kind: conda - name: keyutils - version: 1.6.1 - build: h4e544f5_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/keyutils-1.6.1-h4e544f5_0.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/keyutils-1.6.1-h4e544f5_0.tar.bz2 sha256: 6d4233d97a9b38acbb26e1268bcf8c10a8e79c2aed7e5a385ec3769967e3e65b md5: 1f24853e59c68892452ef94ddd8afd4b depends: - libgcc-ng >=10.3.0 + arch: aarch64 + platform: linux license: LGPL-2.1-or-later size: 112327 timestamp: 1646166857935 -- kind: conda - name: krb5 - version: 1.21.3 - build: h237132a_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda - sha256: 4442f957c3c77d69d9da3521268cad5d54c9033f1a73f99cde0a3658937b159b - md5: c6dc8a0fdec13a0565936655c33069a1 +- conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda + sha256: 99df692f7a8a5c27cd14b5fb1374ee55e756631b9c3d659ed3ee60830249b238 + md5: 3f43953b7d3fb3aaa1d0d0723d91e368 depends: - - __osx >=11.0 - - libcxx >=16 + - keyutils >=1.6.1,<2.0a0 - libedit >=3.1.20191231,<3.2.0a0 - libedit >=3.1.20191231,<4.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 - openssl >=3.3.1,<4.0a0 + arch: x86_64 + platform: linux license: MIT license_family: MIT - size: 1155530 - timestamp: 1719463474401 -- kind: conda - name: krb5 - version: 1.21.3 - build: h50a48e9_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/krb5-1.21.3-h50a48e9_0.conda + size: 1370023 + timestamp: 1719463201255 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/krb5-1.21.3-h50a48e9_0.conda sha256: 0ec272afcf7ea7fbf007e07a3b4678384b7da4047348107b2ae02630a570a815 md5: 29c10432a2ca1472b53f299ffb2ffa37 depends: @@ -2963,178 +2397,141 @@ packages: - libgcc-ng >=12 - libstdcxx-ng >=12 - openssl >=3.3.1,<4.0a0 + arch: aarch64 + platform: linux license: MIT license_family: MIT size: 1474620 timestamp: 1719463205834 -- kind: conda - name: krb5 - version: 1.21.3 - build: h659f571_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda - sha256: 99df692f7a8a5c27cd14b5fb1374ee55e756631b9c3d659ed3ee60830249b238 - md5: 3f43953b7d3fb3aaa1d0d0723d91e368 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda + sha256: 4442f957c3c77d69d9da3521268cad5d54c9033f1a73f99cde0a3658937b159b + md5: c6dc8a0fdec13a0565936655c33069a1 depends: - - keyutils >=1.6.1,<2.0a0 + - __osx >=11.0 + - libcxx >=16 - libedit >=3.1.20191231,<3.2.0a0 - libedit >=3.1.20191231,<4.0a0 - - libgcc-ng >=12 - - libstdcxx-ng >=12 - openssl >=3.3.1,<4.0a0 + arch: arm64 + platform: osx license: MIT license_family: MIT - size: 1370023 - timestamp: 1719463201255 -- kind: conda - name: lcms2 - version: '2.16' - build: h922389a_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/lcms2-2.16-h922389a_0.conda + size: 1155530 + timestamp: 1719463474401 +- conda: https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.16-hb7c19ff_0.conda + sha256: 5c878d104b461b7ef922abe6320711c0d01772f4cd55de18b674f88547870041 + md5: 51bb7010fc86f70eee639b4bb7a894f5 + depends: + - libgcc-ng >=12 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libtiff >=4.6.0,<4.8.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 245247 + timestamp: 1701647787198 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lcms2-2.16-h922389a_0.conda sha256: be4847b1014d3cbbc524a53bdbf66182f86125775020563e11d914c8468dd97d md5: ffdd8267a04c515e7ce69c727b051414 depends: - libgcc-ng >=12 - libjpeg-turbo >=3.0.0,<4.0a0 - libtiff >=4.6.0,<4.8.0a0 + arch: aarch64 + platform: linux license: MIT license_family: MIT size: 296219 timestamp: 1701647961116 -- kind: conda - name: lcms2 - version: '2.16' - build: ha0e7c42_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.16-ha0e7c42_0.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.16-ha0e7c42_0.conda sha256: 151e0c84feb7e0747fabcc85006b8973b22f5abbc3af76a9add0b0ef0320ebe4 md5: 66f6c134e76fe13cce8a9ea5814b5dd5 depends: - libjpeg-turbo >=3.0.0,<4.0a0 - libtiff >=4.6.0,<4.8.0a0 + arch: arm64 + platform: osx license: MIT license_family: MIT size: 211959 timestamp: 1701647962657 -- kind: conda - name: lcms2 - version: '2.16' - build: hb7c19ff_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.16-hb7c19ff_0.conda - sha256: 5c878d104b461b7ef922abe6320711c0d01772f4cd55de18b674f88547870041 - md5: 51bb7010fc86f70eee639b4bb7a894f5 - depends: - - libgcc-ng >=12 - - libjpeg-turbo >=3.0.0,<4.0a0 - - libtiff >=4.6.0,<4.8.0a0 - license: MIT - license_family: MIT - size: 245247 - timestamp: 1701647787198 -- kind: conda - name: ld_impl_linux-64 - version: '2.43' - build: h712a8e2_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_2.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_2.conda sha256: 7c91cea91b13f4314d125d1bedb9d03a29ebbd5080ccdea70260363424646dbe md5: 048b02e3962f066da18efe3a21b77672 depends: - __glibc >=2.17,<3.0.a0 constrains: - binutils_impl_linux-64 2.43 + arch: x86_64 + platform: linux license: GPL-3.0-only license_family: GPL size: 669211 timestamp: 1729655358674 -- kind: conda - name: ld_impl_linux-aarch64 - version: '2.43' - build: h80caac9_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_2.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_2.conda sha256: 80ec7e8f006196808fac5bd4b3773a652847f97bbf08044cd87731424ac64f8b md5: fcbde5ea19d55468953bf588770c0501 constrains: - binutils_impl_linux-aarch64 2.43 + arch: aarch64 + platform: linux license: GPL-3.0-only license_family: GPL size: 698245 timestamp: 1729655345825 -- kind: conda - name: lerc - version: 4.0.0 - build: h27087fc_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 sha256: cb55f36dcd898203927133280ae1dc643368af041a48bcf7c026acb7c47b0c12 md5: 76bbff344f0134279f225174e9064c8f depends: - libgcc-ng >=12 - libstdcxx-ng >=12 + arch: x86_64 + platform: linux license: Apache-2.0 license_family: Apache size: 281798 timestamp: 1657977462600 -- kind: conda - name: lerc - version: 4.0.0 - build: h4de3ea5_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.0.0-h4de3ea5_0.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.0.0-h4de3ea5_0.tar.bz2 sha256: 2d09ef9b7796d83364957e420b41c32d94e628c3f0520b61c332518a7b5cd586 md5: 1a0ffc65e03ce81559dbcb0695ad1476 depends: - libgcc-ng >=12 - libstdcxx-ng >=12 - license: Apache-2.0 + arch: aarch64 + platform: linux + license: Apache-2.0 license_family: Apache size: 262096 timestamp: 1657978241894 -- kind: conda - name: lerc - version: 4.0.0 - build: h9a09cb3_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 sha256: 6f068bb53dfb6147d3147d981bb851bb5477e769407ad4e6a68edf482fdcb958 md5: de462d5aacda3b30721b512c5da4e742 depends: - libcxx >=13.0.1 + arch: arm64 + platform: osx license: Apache-2.0 license_family: Apache size: 215721 timestamp: 1657977558796 -- kind: conda - name: libabseil - version: '20240722.0' - build: cxx17_h07bc746_4 - build_number: 4 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_h07bc746_4.conda - sha256: 05fa5e5e908962b9c5aba95f962e2ca81d9599c4715aebe5e4ddb72b309d1770 - md5: c2d95bd7aa8d564a9bd7eca5e571a5b3 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda + sha256: 143a586aa67d50622ef703de57b9d43f44945836d6568e0e7aa174bd8c45e0d4 + md5: 488f260ccda0afaf08acb286db439c2f depends: - - __osx >=11.0 - - libcxx >=18 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 constrains: - libabseil-static =20240722.0=cxx17* - abseil-cpp =20240722.0 + arch: x86_64 + platform: linux license: Apache-2.0 license_family: Apache - size: 1178260 - timestamp: 1736008642885 -- kind: conda - name: libabseil - version: '20240722.0' - build: cxx17_h18dbdb1_4 - build_number: 4 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h18dbdb1_4.conda + size: 1311599 + timestamp: 1736008414161 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h18dbdb1_4.conda sha256: bb6c5fb3b8de5f90735c5252b57efb3c268ee222c755569dac18065f05147670 md5: 633b9fe454ffea2aaf29e191d946a83b depends: @@ -3143,41 +2540,33 @@ packages: constrains: - abseil-cpp =20240722.0 - libabseil-static =20240722.0=cxx17* + arch: aarch64 + platform: linux license: Apache-2.0 license_family: Apache size: 1334844 timestamp: 1736008472455 -- kind: conda - name: libabseil - version: '20240722.0' - build: cxx17_hbbce691_4 - build_number: 4 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda - sha256: 143a586aa67d50622ef703de57b9d43f44945836d6568e0e7aa174bd8c45e0d4 - md5: 488f260ccda0afaf08acb286db439c2f +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_h07bc746_4.conda + sha256: 05fa5e5e908962b9c5aba95f962e2ca81d9599c4715aebe5e4ddb72b309d1770 + md5: c2d95bd7aa8d564a9bd7eca5e571a5b3 depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libstdcxx >=13 + - __osx >=11.0 + - libcxx >=18 constrains: - libabseil-static =20240722.0=cxx17* - abseil-cpp =20240722.0 + arch: arm64 + platform: osx license: Apache-2.0 license_family: Apache - size: 1311599 - timestamp: 1736008414161 -- kind: conda - name: libarrow - version: 18.1.0 - build: h0ad35bc_7_cpu + size: 1178260 + timestamp: 1736008642885 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-hd595efa_7_cpu.conda build_number: 7 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-h0ad35bc_7_cpu.conda - sha256: 4fbdd8bb89d912bf03f10f9373a8d96a1cdd7a7851e107393418a3d2715bc27e - md5: 4ba2173203f44bbf03d19aaba6ed07d3 + sha256: 554ffa338264c1dc34d95adb7eb856d50a2f25e7fa303a1a51e4372301b7c96f + md5: 08d4aff5ee6dee9a1b9ab13fca927697 depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 - aws-crt-cpp >=0.29.7,<0.29.8.0a0 - aws-sdk-cpp >=1.11.458,<1.11.459.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 @@ -3185,15 +2574,17 @@ packages: - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 - bzip2 >=1.0.8,<2.0a0 + - gflags >=2.2.2,<2.3.0a0 - glog >=0.7.1,<0.8.0a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - libbrotlidec >=1.1.0,<1.2.0a0 - libbrotlienc >=1.1.0,<1.2.0a0 - - libcxx >=18 + - libgcc >=13 - libgoogle-cloud >=2.33.0,<2.34.0a0 - libgoogle-cloud-storage >=2.33.0,<2.34.0a0 - libre2-11 >=2024.7.2 + - libstdcxx >=13 - libutf8proc >=2.9.0,<2.10.0a0 - libzlib >=1.3.1,<2.0a0 - lz4-c >=1.10.0,<1.11.0a0 @@ -3205,17 +2596,14 @@ packages: - arrow-cpp <0.0a0 - parquet-cpp <0.0a0 - apache-arrow-proc =*=cpu + arch: x86_64 + platform: linux license: Apache-2.0 license_family: APACHE - size: 5506699 - timestamp: 1735682962976 -- kind: conda - name: libarrow - version: 18.1.0 - build: hb7781cd_7_cpu + size: 8770256 + timestamp: 1735684696564 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-hb7781cd_7_cpu.conda build_number: 7 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-hb7781cd_7_cpu.conda sha256: f6107506bd16788560b47a4d18c1457b4df30a49334364d32613fe3f53ba6cbb md5: 98cf7127ca7b3854c5d1c8bef1ed6e53 depends: @@ -3248,21 +2636,18 @@ packages: - arrow-cpp <0.0a0 - parquet-cpp <0.0a0 - apache-arrow-proc =*=cpu + arch: aarch64 + platform: linux license: Apache-2.0 license_family: APACHE size: 8026714 timestamp: 1735685336542 -- kind: conda - name: libarrow - version: 18.1.0 - build: hd595efa_7_cpu +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-h0ad35bc_7_cpu.conda build_number: 7 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-hd595efa_7_cpu.conda - sha256: 554ffa338264c1dc34d95adb7eb856d50a2f25e7fa303a1a51e4372301b7c96f - md5: 08d4aff5ee6dee9a1b9ab13fca927697 + sha256: 4fbdd8bb89d912bf03f10f9373a8d96a1cdd7a7851e107393418a3d2715bc27e + md5: 4ba2173203f44bbf03d19aaba6ed07d3 depends: - - __glibc >=2.17,<3.0.a0 + - __osx >=11.0 - aws-crt-cpp >=0.29.7,<0.29.8.0a0 - aws-sdk-cpp >=1.11.458,<1.11.459.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 @@ -3270,17 +2655,15 @@ packages: - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 - bzip2 >=1.0.8,<2.0a0 - - gflags >=2.2.2,<2.3.0a0 - glog >=0.7.1,<0.8.0a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - libbrotlidec >=1.1.0,<1.2.0a0 - libbrotlienc >=1.1.0,<1.2.0a0 - - libgcc >=13 + - libcxx >=18 - libgoogle-cloud >=2.33.0,<2.34.0a0 - libgoogle-cloud-storage >=2.33.0,<2.34.0a0 - libre2-11 >=2024.7.2 - - libstdcxx >=13 - libutf8proc >=2.9.0,<2.10.0a0 - libzlib >=1.3.1,<2.0a0 - lz4-c >=1.10.0,<1.11.0a0 @@ -3292,34 +2675,14 @@ packages: - arrow-cpp <0.0a0 - parquet-cpp <0.0a0 - apache-arrow-proc =*=cpu + arch: arm64 + platform: osx license: Apache-2.0 license_family: APACHE - size: 8770256 - timestamp: 1735684696564 -- kind: conda - name: libarrow-acero - version: 18.1.0 - build: h3b568fd_7_cpu - build_number: 7 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h3b568fd_7_cpu.conda - sha256: 42cbfc87096f745d565d814d65b7228c82d985f1898859d5e456016d73e81c82 - md5: 4c1d8c3feea249782148d3cd6a25392e - depends: - - libarrow 18.1.0 hb7781cd_7_cpu - - libgcc >=13 - - libstdcxx >=13 - license: Apache-2.0 - license_family: APACHE - size: 578222 - timestamp: 1735685424850 -- kind: conda - name: libarrow-acero - version: 18.1.0 - build: hcb10f89_7_cpu + size: 5506699 + timestamp: 1735682962976 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-hcb10f89_7_cpu.conda build_number: 7 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-hcb10f89_7_cpu.conda sha256: 87ea5d6a84d922d73975dce8661fccf257e72e755175b12c30e1181a34e37987 md5: 12d84228204c56fec6ed113288014d11 depends: @@ -3327,53 +2690,42 @@ packages: - libarrow 18.1.0 hd595efa_7_cpu - libgcc >=13 - libstdcxx >=13 + arch: x86_64 + platform: linux license: Apache-2.0 license_family: APACHE size: 612463 timestamp: 1735684749868 -- kind: conda - name: libarrow-acero - version: 18.1.0 - build: hf07054f_7_cpu +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h3b568fd_7_cpu.conda + build_number: 7 + sha256: 42cbfc87096f745d565d814d65b7228c82d985f1898859d5e456016d73e81c82 + md5: 4c1d8c3feea249782148d3cd6a25392e + depends: + - libarrow 18.1.0 hb7781cd_7_cpu + - libgcc >=13 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 578222 + timestamp: 1735685424850 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-hf07054f_7_cpu.conda build_number: 7 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-hf07054f_7_cpu.conda sha256: 86e20cebfdb4f335e98265c1b88f5053bf3e3648768a317856295846bfdbf2b4 md5: 3eaf71fe987de13061db795e03bb1a1c depends: - __osx >=11.0 - libarrow 18.1.0 h0ad35bc_7_cpu - libcxx >=18 + arch: arm64 + platform: osx license: Apache-2.0 license_family: APACHE size: 485185 timestamp: 1735683071232 -- kind: conda - name: libarrow-dataset - version: 18.1.0 - build: h3b568fd_7_cpu - build_number: 7 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h3b568fd_7_cpu.conda - sha256: 13ba7d3d08015aa26569eca9e198e2f8b2a0cd2d9c420e41c78cc2e5d5170f26 - md5: f39f5d725c2ca94c2e7b19e2717fd4ab - depends: - - libarrow 18.1.0 hb7781cd_7_cpu - - libarrow-acero 18.1.0 h3b568fd_7_cpu - - libgcc >=13 - - libparquet 18.1.0 hfc78867_7_cpu - - libstdcxx >=13 - license: Apache-2.0 - license_family: APACHE - size: 560329 - timestamp: 1735685518922 -- kind: conda - name: libarrow-dataset - version: 18.1.0 - build: hcb10f89_7_cpu +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-hcb10f89_7_cpu.conda build_number: 7 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-hcb10f89_7_cpu.conda sha256: 99c12511fba79c7947f78d676eae5857659084f687f375f68bc20bd4cddb0a0e md5: 0a81eb63d7cd150f598c752e86388d57 depends: @@ -3383,17 +2735,30 @@ packages: - libgcc >=13 - libparquet 18.1.0 h081d1f1_7_cpu - libstdcxx >=13 + arch: x86_64 + platform: linux license: Apache-2.0 license_family: APACHE size: 587497 timestamp: 1735684880531 -- kind: conda - name: libarrow-dataset - version: 18.1.0 - build: hf07054f_7_cpu +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h3b568fd_7_cpu.conda + build_number: 7 + sha256: 13ba7d3d08015aa26569eca9e198e2f8b2a0cd2d9c420e41c78cc2e5d5170f26 + md5: f39f5d725c2ca94c2e7b19e2717fd4ab + depends: + - libarrow 18.1.0 hb7781cd_7_cpu + - libarrow-acero 18.1.0 h3b568fd_7_cpu + - libgcc >=13 + - libparquet 18.1.0 hfc78867_7_cpu + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 560329 + timestamp: 1735685518922 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-hf07054f_7_cpu.conda build_number: 7 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-hf07054f_7_cpu.conda sha256: 52c5c4e9cd5f2ac91dcebb6a920ab2536febcea116ff8767e5439329d7da820b md5: 97a2d3606682d94f7d73112e9ad684ae depends: @@ -3402,17 +2767,14 @@ packages: - libarrow-acero 18.1.0 hf07054f_7_cpu - libcxx >=18 - libparquet 18.1.0 h636d7b7_7_cpu + arch: arm64 + platform: osx license: Apache-2.0 license_family: APACHE size: 491237 timestamp: 1735684688308 -- kind: conda - name: libarrow-substrait - version: 18.1.0 - build: h08228c5_7_cpu +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-h08228c5_7_cpu.conda build_number: 7 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-h08228c5_7_cpu.conda sha256: 53ea53a06e137c2f81ebfdff3f978babb8b59e31f705a19b57056ec8754c1abf md5: e128def53c133e8a23ac00cd4a479335 depends: @@ -3425,17 +2787,14 @@ packages: - libgcc >=13 - libprotobuf >=5.28.3,<5.28.4.0a0 - libstdcxx >=13 + arch: x86_64 + platform: linux license: Apache-2.0 license_family: APACHE size: 521861 timestamp: 1735684940668 -- kind: conda - name: libarrow-substrait - version: 18.1.0 - build: h1e9d426_7_cpu +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h1e9d426_7_cpu.conda build_number: 7 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h1e9d426_7_cpu.conda sha256: 252e2a0d8c733f36b50499786480a05a59577d617f291868149c80534c1e8ffc md5: 6da921d9e1c4e2ab2679eeea7cbd4c82 depends: @@ -3447,17 +2806,14 @@ packages: - libgcc >=13 - libprotobuf >=5.28.3,<5.28.4.0a0 - libstdcxx >=13 + arch: aarch64 + platform: linux license: Apache-2.0 license_family: APACHE size: 516014 timestamp: 1735685565929 -- kind: conda - name: libarrow-substrait - version: 18.1.0 - build: h4239455_7_cpu +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-h4239455_7_cpu.conda build_number: 7 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-h4239455_7_cpu.conda sha256: a45bbdd6932aed972d6c6ce30a7439aa8ec9d9b8ee5affb350d41e50abdc0127 md5: 91927747173f65695e441346c7145e26 depends: @@ -3469,17 +2825,14 @@ packages: - libarrow-dataset 18.1.0 hf07054f_7_cpu - libcxx >=18 - libprotobuf >=5.28.3,<5.28.4.0a0 + arch: arm64 + platform: osx license: Apache-2.0 license_family: APACHE size: 452385 timestamp: 1735684993831 -- kind: conda - name: libblas - version: 3.9.0 - build: 26_linux64_openblas +- conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-26_linux64_openblas.conda build_number: 26 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-26_linux64_openblas.conda sha256: 30bd658682b124243f8e52d8edf8a19e7be1bc31e4fe4baec30a64002dc8cd0c md5: ac52800af2e0c0e7dac770b435ce768a depends: @@ -3490,17 +2843,14 @@ packages: - liblapack 3.9.0 26_linux64_openblas - liblapacke 3.9.0 26_linux64_openblas - blas * openblas + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD size: 16393 timestamp: 1734432564346 -- kind: conda - name: libblas - version: 3.9.0 - build: 26_linuxaarch64_openblas +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-26_linuxaarch64_openblas.conda build_number: 26 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-26_linuxaarch64_openblas.conda sha256: df6d8ee34d45cf35609ecdd55c1ff03e32e0cd87ae41ebe4ef3747a8e09ead4d md5: 8d900b7079a00969d70305e9aad550b7 depends: @@ -3511,17 +2861,14 @@ packages: - liblapacke 3.9.0 26_linuxaarch64_openblas - libcblas 3.9.0 26_linuxaarch64_openblas - liblapack 3.9.0 26_linuxaarch64_openblas + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD size: 16477 timestamp: 1734432576699 -- kind: conda - name: libblas - version: 3.9.0 - build: 26_osxarm64_openblas +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-26_osxarm64_openblas.conda build_number: 26 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-26_osxarm64_openblas.conda sha256: 597f9c3779caa979c8c6abbb3ba8c7191b84e1a910d6b0d10e5faf35284c450c md5: 21be102c9ae80a67ba7de23b129aa7f6 depends: @@ -3532,161 +2879,122 @@ packages: - liblapacke 3.9.0 26_osxarm64_openblas - libcblas 3.9.0 26_osxarm64_openblas - blas * openblas + arch: arm64 + platform: osx license: BSD-3-Clause license_family: BSD size: 16714 timestamp: 1734433054681 -- kind: conda - name: libbrotlicommon - version: 1.1.0 - build: h86ecc28_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlicommon-1.1.0-h86ecc28_2.conda - sha256: 64112af913974b309d67fd342e065fd184347043a6387933b3db796778a28019 - md5: 3ee026955c688f551a9999840cff4c67 - depends: - - libgcc >=13 - license: MIT - license_family: MIT - size: 68982 - timestamp: 1725267774142 -- kind: conda - name: libbrotlicommon - version: 1.1.0 - build: hb9d3cd8_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hb9d3cd8_2.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hb9d3cd8_2.conda sha256: d9db2de60ea917298e658143354a530e9ca5f9c63471c65cf47ab39fd2f429e3 md5: 41b599ed2b02abcfdd84302bff174b23 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 + arch: x86_64 + platform: linux license: MIT license_family: MIT size: 68851 timestamp: 1725267660471 -- kind: conda - name: libbrotlicommon - version: 1.1.0 - build: hd74edd7_2 - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.1.0-hd74edd7_2.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlicommon-1.1.0-h86ecc28_2.conda + sha256: 64112af913974b309d67fd342e065fd184347043a6387933b3db796778a28019 + md5: 3ee026955c688f551a9999840cff4c67 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 68982 + timestamp: 1725267774142 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.1.0-hd74edd7_2.conda sha256: 839dacb741bdbb25e58f42088a2001b649f4f12195aeb700b5ddfca3267749e5 md5: d0bf1dff146b799b319ea0434b93f779 depends: - __osx >=11.0 + arch: arm64 + platform: osx license: MIT license_family: MIT size: 68426 timestamp: 1725267943211 -- kind: conda - name: libbrotlidec - version: 1.1.0 - build: h86ecc28_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlidec-1.1.0-h86ecc28_2.conda - sha256: 94c808d9ca3eb6ef30976a9843e27f027cf3a1e84e8c6835cbb696b7bdb35c4c - md5: e64d0f3b59c7c4047446b97a8624a72d - depends: - - libbrotlicommon 1.1.0 h86ecc28_2 - - libgcc >=13 - license: MIT - license_family: MIT - size: 31708 - timestamp: 1725267783442 -- kind: conda - name: libbrotlidec - version: 1.1.0 - build: hb9d3cd8_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hb9d3cd8_2.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hb9d3cd8_2.conda sha256: 2892d512cad096cb03f1b66361deeab58b64e15ba525d6592bb6d609e7045edf md5: 9566f0bd264fbd463002e759b8a82401 depends: - __glibc >=2.17,<3.0.a0 - libbrotlicommon 1.1.0 hb9d3cd8_2 - libgcc >=13 + arch: x86_64 + platform: linux license: MIT license_family: MIT size: 32696 timestamp: 1725267669305 -- kind: conda - name: libbrotlidec - version: 1.1.0 - build: hd74edd7_2 - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.1.0-hd74edd7_2.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlidec-1.1.0-h86ecc28_2.conda + sha256: 94c808d9ca3eb6ef30976a9843e27f027cf3a1e84e8c6835cbb696b7bdb35c4c + md5: e64d0f3b59c7c4047446b97a8624a72d + depends: + - libbrotlicommon 1.1.0 h86ecc28_2 + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 31708 + timestamp: 1725267783442 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.1.0-hd74edd7_2.conda sha256: 6c6862eb274f21a7c0b60e5345467a12e6dda8b9af4438c66d496a2c1a538264 md5: 55e66e68ce55523a6811633dd1ac74e2 depends: - __osx >=11.0 - libbrotlicommon 1.1.0 hd74edd7_2 + arch: arm64 + platform: osx license: MIT license_family: MIT size: 28378 timestamp: 1725267980316 -- kind: conda - name: libbrotlienc - version: 1.1.0 - build: h86ecc28_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlienc-1.1.0-h86ecc28_2.conda - sha256: 41385e17bc73834b235c5aff12d6d82eccb534acb3c30986996f9dad92a0d54c - md5: 0e9bd365480c72b25c71a448257b537d - depends: - - libbrotlicommon 1.1.0 h86ecc28_2 - - libgcc >=13 - license: MIT - license_family: MIT - size: 290230 - timestamp: 1725267792697 -- kind: conda - name: libbrotlienc - version: 1.1.0 - build: hb9d3cd8_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.1.0-hb9d3cd8_2.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.1.0-hb9d3cd8_2.conda sha256: 779f58174e99de3600e939fa46eddb453ec5d3c60bb46cdaa8b4c127224dbf29 md5: 06f70867945ea6a84d35836af780f1de depends: - __glibc >=2.17,<3.0.a0 - libbrotlicommon 1.1.0 hb9d3cd8_2 - libgcc >=13 + arch: x86_64 + platform: linux license: MIT license_family: MIT size: 281750 timestamp: 1725267679782 -- kind: conda - name: libbrotlienc - version: 1.1.0 - build: hd74edd7_2 - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlienc-1.1.0-hd74edd7_2.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlienc-1.1.0-h86ecc28_2.conda + sha256: 41385e17bc73834b235c5aff12d6d82eccb534acb3c30986996f9dad92a0d54c + md5: 0e9bd365480c72b25c71a448257b537d + depends: + - libbrotlicommon 1.1.0 h86ecc28_2 + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 290230 + timestamp: 1725267792697 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlienc-1.1.0-hd74edd7_2.conda sha256: eeb1eb0d58b9d02bc1b98dc0a058f104ab168eb2f7d1c7bfa0570a12cfcdb7b7 md5: 4f3a434504c67b2c42565c0b85c1885c depends: - __osx >=11.0 - libbrotlicommon 1.1.0 hd74edd7_2 + arch: arm64 + platform: osx license: MIT license_family: MIT size: 279644 timestamp: 1725268003553 -- kind: conda - name: libcblas - version: 3.9.0 - build: 26_linux64_openblas +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-26_linux64_openblas.conda build_number: 26 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-26_linux64_openblas.conda sha256: 9c74e536c9bc868e356ffd43f81c2cb398aec84b40fcadc312315b164a5500ee md5: ebcc5f37a435aa3c19640533c82f8d76 depends: @@ -3695,17 +3003,14 @@ packages: - liblapack 3.9.0 26_linux64_openblas - liblapacke 3.9.0 26_linux64_openblas - blas * openblas + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD size: 16336 timestamp: 1734432570482 -- kind: conda - name: libcblas - version: 3.9.0 - build: 26_linuxaarch64_openblas +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-26_linuxaarch64_openblas.conda build_number: 26 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-26_linuxaarch64_openblas.conda sha256: 521e78be0c4170f229c43e1a6c94337a72db3ebcbe6e5960f8413aa438dcb8f9 md5: d77f943ae4083f3aeddca698f2d28262 depends: @@ -3714,17 +3019,14 @@ packages: - blas * openblas - liblapacke 3.9.0 26_linuxaarch64_openblas - liblapack 3.9.0 26_linuxaarch64_openblas + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD size: 16398 timestamp: 1734432580937 -- kind: conda - name: libcblas - version: 3.9.0 - build: 26_osxarm64_openblas +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-26_osxarm64_openblas.conda build_number: 26 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-26_osxarm64_openblas.conda sha256: 27a29ef6b2fd2179bc3a0bb9db351f078ba140ca10485dca147c399639f84c93 md5: a0e9980fe12d42f6d0c0ec009f67e948 depends: @@ -3733,60 +3035,48 @@ packages: - liblapack 3.9.0 26_osxarm64_openblas - liblapacke 3.9.0 26_osxarm64_openblas - blas * openblas + arch: arm64 + platform: osx license: BSD-3-Clause license_family: BSD size: 16628 timestamp: 1734433061517 -- kind: conda - name: libcrc32c - version: 1.1.2 - build: h01db608_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libcrc32c-1.1.2-h01db608_0.tar.bz2 - sha256: b8b8c57a87da86b3ea24280fd6aa8efaf92f4e684b606bf2db5d3cb06ffbe2ea - md5: 268ee639c17ada0002fb04dd21816cc2 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcrc32c-1.1.2-h9c3ff4c_0.tar.bz2 + sha256: fd1d153962764433fe6233f34a72cdeed5dcf8a883a85769e8295ce940b5b0c5 + md5: c965a5aa0d5c1c37ffc62dff36e28400 depends: - libgcc-ng >=9.4.0 - libstdcxx-ng >=9.4.0 + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD - size: 18669 - timestamp: 1633683724891 -- kind: conda - name: libcrc32c - version: 1.1.2 - build: h9c3ff4c_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libcrc32c-1.1.2-h9c3ff4c_0.tar.bz2 - sha256: fd1d153962764433fe6233f34a72cdeed5dcf8a883a85769e8295ce940b5b0c5 - md5: c965a5aa0d5c1c37ffc62dff36e28400 + size: 20440 + timestamp: 1633683576494 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcrc32c-1.1.2-h01db608_0.tar.bz2 + sha256: b8b8c57a87da86b3ea24280fd6aa8efaf92f4e684b606bf2db5d3cb06ffbe2ea + md5: 268ee639c17ada0002fb04dd21816cc2 depends: - libgcc-ng >=9.4.0 - libstdcxx-ng >=9.4.0 + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD - size: 20440 - timestamp: 1633683576494 -- kind: conda - name: libcrc32c - version: 1.1.2 - build: hbdafb3b_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libcrc32c-1.1.2-hbdafb3b_0.tar.bz2 + size: 18669 + timestamp: 1633683724891 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcrc32c-1.1.2-hbdafb3b_0.tar.bz2 sha256: 58477b67cc719060b5b069ba57161e20ba69b8695d154a719cb4b60caf577929 md5: 32bd82a6a625ea6ce090a81c3d34edeb depends: - libcxx >=11.1.0 + arch: arm64 + platform: osx license: BSD-3-Clause license_family: BSD size: 18765 timestamp: 1633683992603 -- kind: conda - name: libcurl - version: 8.11.1 - build: h332b0f4_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.11.1-h332b0f4_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.11.1-h332b0f4_0.conda sha256: 3cd4075b2a7b5562e46c8ec626f6f9ca57aeecaa94ff7df57eca26daa94c9906 md5: 2b3e0081006dc21e8bf53a91c83a055c depends: @@ -3798,16 +3088,13 @@ packages: - libzlib >=1.3.1,<2.0a0 - openssl >=3.4.0,<4.0a0 - zstd >=1.5.6,<1.6.0a0 + arch: x86_64 + platform: linux license: curl license_family: MIT size: 423011 timestamp: 1733999897624 -- kind: conda - name: libcurl - version: 8.11.1 - build: h6702fde_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libcurl-8.11.1-h6702fde_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcurl-8.11.1-h6702fde_0.conda sha256: 9fc65d21a58f4aad1bc39dfb94a178893aeb035850c5cf0ed9736674279f390b md5: 7dec1cd271c403d1636bda5aa388a55d depends: @@ -3818,16 +3105,13 @@ packages: - libzlib >=1.3.1,<2.0a0 - openssl >=3.4.0,<4.0a0 - zstd >=1.5.6,<1.6.0a0 + arch: aarch64 + platform: linux license: curl license_family: MIT size: 440737 timestamp: 1733999835504 -- kind: conda - name: libcurl - version: 8.11.1 - build: h73640d1_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.11.1-h73640d1_0.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.11.1-h73640d1_0.conda sha256: f47c35938144c23278987c7d12096f6a42d7c850ffc277222b032073412383b6 md5: 46d7524cabfdd199bffe63f8f19a552b depends: @@ -3838,74 +3122,58 @@ packages: - libzlib >=1.3.1,<2.0a0 - openssl >=3.4.0,<4.0a0 - zstd >=1.5.6,<1.6.0a0 + arch: arm64 + platform: osx license: curl license_family: MIT size: 385098 timestamp: 1734000160270 -- kind: conda - name: libcxx - version: 19.1.6 - build: ha82da77_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.6-ha82da77_1.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.6-ha82da77_1.conda sha256: 2b2443404503cd862385fd2f2a2c73f9624686fd1e5a45050b4034cfc06904ec md5: ce5252d8db110cdb4ae4173d0a63c7c5 depends: - __osx >=11.0 + arch: arm64 + platform: osx license: Apache-2.0 WITH LLVM-exception license_family: Apache size: 520992 timestamp: 1734494699681 -- kind: conda - name: libdeflate - version: '1.23' - build: h4ddbbb0_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.23-h4ddbbb0_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.23-h4ddbbb0_0.conda sha256: 511d801626d02f4247a04fff957cc6e9ec4cc7e8622bd9acd076bcdc5de5fe66 md5: 8dfae1d2e74767e9ce36d5fa0d8605db depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 + arch: x86_64 + platform: linux license: MIT license_family: MIT size: 72255 timestamp: 1734373823254 -- kind: conda - name: libdeflate - version: '1.23' - build: h5e3c512_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libdeflate-1.23-h5e3c512_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libdeflate-1.23-h5e3c512_0.conda sha256: 959419d87cd2b789a9055db95704c614f31aeb70bef7949fa2f734122a3a2863 md5: 7e7ca2607b11b180120cefc2354fc0cb depends: - libgcc >=13 + arch: aarch64 + platform: linux license: MIT license_family: MIT size: 69862 timestamp: 1734373858306 -- kind: conda - name: libdeflate - version: '1.23' - build: hec38601_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.23-hec38601_0.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.23-hec38601_0.conda sha256: 887c02deaed6d583459eba6367023e36d8761085b2f7126e389424f57155da53 md5: 1d8b9588be14e71df38c525767a1ac30 depends: - __osx >=11.0 + arch: arm64 + platform: osx license: MIT license_family: MIT size: 54132 timestamp: 1734373971372 -- kind: conda - name: libedit - version: 3.1.20240808 - build: pl5321h7949ede_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20240808-pl5321h7949ede_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20240808-pl5321h7949ede_0.conda sha256: 4d0d69ddf9cc7d724a1ccf3a9852e44c8aea9825692582bac2c4e8d21ec95ccd md5: 8247f80f3dc464d9322e85007e307fe8 depends: @@ -3913,154 +3181,105 @@ packages: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - ncurses >=6.5,<7.0a0 + arch: x86_64 + platform: linux license: BSD-2-Clause license_family: BSD size: 134657 timestamp: 1736191912705 -- kind: conda - name: libedit - version: 3.1.20240808 - build: pl5321h976ea20_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20240808-pl5321h976ea20_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20240808-pl5321h976ea20_0.conda sha256: 031daea98cf278f858b7957ad5dc475f1b5673cd5e718850529401ced64cef2c md5: 0be40129d3dd1a152fff29a85f0785d0 depends: - ncurses - libgcc >=13 - ncurses >=6.5,<7.0a0 + arch: aarch64 + platform: linux license: BSD-2-Clause license_family: BSD size: 148120 timestamp: 1736192137151 -- kind: conda - name: libedit - version: 3.1.20240808 - build: pl5321hafb1f1b_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20240808-pl5321hafb1f1b_0.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20240808-pl5321hafb1f1b_0.conda sha256: fb934d7a03279ec8eae4bf1913ac9058fcf6fed35290d8ffa6e04157f396a3b1 md5: af89aa84ffb5ee551ce0c137b951a3b5 depends: - ncurses - __osx >=11.0 - ncurses >=6.5,<7.0a0 + arch: arm64 + platform: osx license: BSD-2-Clause license_family: BSD size: 107634 timestamp: 1736192034117 -- kind: conda - name: libev - version: '4.33' - build: h31becfc_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libev-4.33-h31becfc_2.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda + sha256: 1cd6048169fa0395af74ed5d8f1716e22c19a81a8a36f934c110ca3ad4dd27b4 + md5: 172bf1cd1ff8629f2b1179945ed45055 + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + size: 112766 + timestamp: 1702146165126 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libev-4.33-h31becfc_2.conda sha256: 973af77e297f1955dd1f69c2cbdc5ab9dfc88388a5576cd152cda178af0fd006 md5: a9a13cb143bbaa477b1ebaefbe47a302 depends: - libgcc-ng >=12 + arch: aarch64 + platform: linux license: BSD-2-Clause license_family: BSD size: 115123 timestamp: 1702146237623 -- kind: conda - name: libev - version: '4.33' - build: h93a5062_2 - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libev-4.33-h93a5062_2.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libev-4.33-h93a5062_2.conda sha256: 95cecb3902fbe0399c3a7e67a5bed1db813e5ab0e22f4023a5e0f722f2cc214f md5: 36d33e440c31857372a72137f78bacf5 + arch: arm64 + platform: osx license: BSD-2-Clause license_family: BSD size: 107458 timestamp: 1702146414478 -- kind: conda - name: libev - version: '4.33' - build: hd590300_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda - sha256: 1cd6048169fa0395af74ed5d8f1716e22c19a81a8a36f934c110ca3ad4dd27b4 - md5: 172bf1cd1ff8629f2b1179945ed45055 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libevent-2.1.12-hf998b51_1.conda + sha256: 2e14399d81fb348e9d231a82ca4d816bf855206923759b69ad006ba482764131 + md5: a1cfcc585f0c42bf8d5546bb1dfb668d depends: - libgcc-ng >=12 - license: BSD-2-Clause - license_family: BSD - size: 112766 - timestamp: 1702146165126 -- kind: conda - name: libevent - version: 2.1.12 - build: h2757513_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libevent-2.1.12-h2757513_1.conda - sha256: 8c136d7586259bb5c0d2b913aaadc5b9737787ae4f40e3ad1beaf96c80b919b7 - md5: 1a109764bff3bdc7bdd84088347d71dc - depends: - openssl >=3.1.1,<4.0a0 + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD - size: 368167 - timestamp: 1685726248899 -- kind: conda - name: libevent - version: 2.1.12 - build: h4ba1bb4_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libevent-2.1.12-h4ba1bb4_1.conda + size: 427426 + timestamp: 1685725977222 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libevent-2.1.12-h4ba1bb4_1.conda sha256: 01333cc7d6e6985dd5700b43660d90e9e58049182017fd24862088ecbe1458e4 md5: 96ae6083cd1ac9f6bc81631ac835b317 depends: - libgcc-ng >=12 - openssl >=3.1.1,<4.0a0 + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD size: 438992 timestamp: 1685726046519 -- kind: conda - name: libevent - version: 2.1.12 - build: hf998b51_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libevent-2.1.12-hf998b51_1.conda - sha256: 2e14399d81fb348e9d231a82ca4d816bf855206923759b69ad006ba482764131 - md5: a1cfcc585f0c42bf8d5546bb1dfb668d +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libevent-2.1.12-h2757513_1.conda + sha256: 8c136d7586259bb5c0d2b913aaadc5b9737787ae4f40e3ad1beaf96c80b919b7 + md5: 1a109764bff3bdc7bdd84088347d71dc depends: - - libgcc-ng >=12 - openssl >=3.1.1,<4.0a0 + arch: arm64 + platform: osx license: BSD-3-Clause license_family: BSD - size: 427426 - timestamp: 1685725977222 -- kind: conda - name: libexpat - version: 2.6.4 - build: h286801f_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.4-h286801f_0.conda - sha256: e42ab5ace927ee7c84e3f0f7d813671e1cf3529f5f06ee5899606630498c2745 - md5: 38d2656dd914feb0cab8c629370768bf - depends: - - __osx >=11.0 - constrains: - - expat 2.6.4.* - license: MIT - license_family: MIT - size: 64693 - timestamp: 1730967175868 -- kind: conda - name: libexpat - version: 2.6.4 - build: h5888daf_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda + size: 368167 + timestamp: 1685726248899 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda sha256: 56541b98447b58e52d824bd59d6382d609e11de1f8adf20b23143e353d2b8d26 md5: db833e03127376d461e1e13e76f09b6c depends: @@ -4068,76 +3287,70 @@ packages: - libgcc >=13 constrains: - expat 2.6.4.* + arch: x86_64 + platform: linux license: MIT license_family: MIT size: 73304 timestamp: 1730967041968 -- kind: conda - name: libexpat - version: 2.6.4 - build: h5ad3122_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.6.4-h5ad3122_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.6.4-h5ad3122_0.conda sha256: f42e758009ba9db90d1fe7992bc3e60d0c52f71fb20923375d2c44ae69a5a2b3 md5: f1b3fab36861b3ce945a13f0dfdfc688 depends: - libgcc >=13 constrains: - expat 2.6.4.* + arch: aarch64 + platform: linux license: MIT license_family: MIT size: 72345 timestamp: 1730967203789 -- kind: conda - name: libffi - version: 3.4.2 - build: h3422bc3_5 - build_number: 5 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 - sha256: 41b3d13efb775e340e4dba549ab5c029611ea6918703096b2eaa9c015c0750ca - md5: 086914b672be056eb70fd4285b6783b6 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.4-h286801f_0.conda + sha256: e42ab5ace927ee7c84e3f0f7d813671e1cf3529f5f06ee5899606630498c2745 + md5: 38d2656dd914feb0cab8c629370768bf + depends: + - __osx >=11.0 + constrains: + - expat 2.6.4.* + arch: arm64 + platform: osx license: MIT license_family: MIT - size: 39020 - timestamp: 1636488587153 -- kind: conda - name: libffi - version: 3.4.2 - build: h3557bc0_5 - build_number: 5 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.4.2-h3557bc0_5.tar.bz2 + size: 64693 + timestamp: 1730967175868 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.2-h7f98852_5.tar.bz2 + sha256: ab6e9856c21709b7b517e940ae7028ae0737546122f83c2aa5d692860c3b149e + md5: d645c6d2ac96843a2bfaccd2d62b3ac3 + depends: + - libgcc-ng >=9.4.0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 58292 + timestamp: 1636488182923 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.4.2-h3557bc0_5.tar.bz2 sha256: 7e9258a102480757fe3faeb225a3ca04dffd10fecd2a958c65cdb4cdf75f2c3c md5: dddd85f4d52121fab0a8b099c5e06501 depends: - libgcc-ng >=9.4.0 + arch: aarch64 + platform: linux license: MIT license_family: MIT size: 59450 timestamp: 1636488255090 -- kind: conda - name: libffi - version: 3.4.2 - build: h7f98852_5 - build_number: 5 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.2-h7f98852_5.tar.bz2 - sha256: ab6e9856c21709b7b517e940ae7028ae0737546122f83c2aa5d692860c3b149e - md5: d645c6d2ac96843a2bfaccd2d62b3ac3 - depends: - - libgcc-ng >=9.4.0 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 + sha256: 41b3d13efb775e340e4dba549ab5c029611ea6918703096b2eaa9c015c0750ca + md5: 086914b672be056eb70fd4285b6783b6 + arch: arm64 + platform: osx license: MIT license_family: MIT - size: 58292 - timestamp: 1636488182923 -- kind: conda - name: libgcc - version: 14.2.0 - build: h77fa898_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h77fa898_1.conda + size: 39020 + timestamp: 1636488587153 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h77fa898_1.conda sha256: 53eb8a79365e58849e7b1a068d31f4f9e718dc938d6f2c03e960345739a03569 md5: 3cb76c3f10d3bc7f1105b2fc9db984df depends: @@ -4146,17 +3359,13 @@ packages: constrains: - libgomp 14.2.0 h77fa898_1 - libgcc-ng ==14.2.0=*_1 + arch: x86_64 + platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL size: 848745 timestamp: 1729027721139 -- kind: conda - name: libgcc - version: 14.2.0 - build: he277a41_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-14.2.0-he277a41_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-14.2.0-he277a41_1.conda sha256: 5d56757ccad208c79214395b00d006d8d18929a4ba49c47bd9460789a7620943 md5: 511b511c5445e324066c3377481bcab8 depends: @@ -4164,175 +3373,131 @@ packages: constrains: - libgcc-ng ==14.2.0=*_1 - libgomp 14.2.0 he277a41_1 + arch: aarch64 + platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL size: 535243 timestamp: 1729089435134 -- kind: conda - name: libgcc-ng - version: 14.2.0 - build: h69a702a_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_1.conda sha256: 3a76969c80e9af8b6e7a55090088bc41da4cffcde9e2c71b17f44d37b7cb87f7 md5: e39480b9ca41323497b05492a63bc35b depends: - libgcc 14.2.0 h77fa898_1 + arch: x86_64 + platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL size: 54142 timestamp: 1729027726517 -- kind: conda - name: libgcc-ng - version: 14.2.0 - build: he9431aa_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-14.2.0-he9431aa_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-14.2.0-he9431aa_1.conda sha256: 9b5cf168a6c7361cae869cb74b716766ee7c6d6b3f6172b32ba9bf91135efdc4 md5: 0694c249c61469f2c0f7e2990782af21 depends: - libgcc 14.2.0 he277a41_1 + arch: aarch64 + platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL size: 54104 timestamp: 1729089444587 -- kind: conda - name: libgfortran - version: 5.0.0 - build: 13_2_0_hd922786_3 - build_number: 3 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda - sha256: 44e541b4821c96b28b27fef5630883a60ce4fee91fd9c79f25a199f8f73f337b - md5: 4a55d9e169114b2b90d3ec4604cd7bbf - depends: - - libgfortran5 13.2.0 hf226fd6_3 - license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - size: 110233 - timestamp: 1707330749033 -- kind: conda - name: libgfortran - version: 14.2.0 - build: h69a702a_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_1.conda sha256: fc9e7f22a17faf74da904ebfc4d88699013d2992e55505e4aa0eb01770290977 md5: f1fd30127802683586f768875127a987 depends: - libgfortran5 14.2.0 hd5240d6_1 constrains: - libgfortran-ng ==14.2.0=*_1 + arch: x86_64 + platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL size: 53997 timestamp: 1729027752995 -- kind: conda - name: libgfortran - version: 14.2.0 - build: he9431aa_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_1.conda sha256: cb66e411fa32a5c6040f4e5e2a63c00897aae4c3133a9c004c2e929ccf19575b md5: 0294b92d2f47a240bebb1e3336b495f1 depends: - libgfortran5 14.2.0 hb6113d0_1 constrains: - libgfortran-ng ==14.2.0=*_1 + arch: aarch64 + platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL size: 54105 timestamp: 1729089471124 -- kind: conda - name: libgfortran5 - version: 13.2.0 - build: hf226fd6_3 - build_number: 3 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda - sha256: bafc679eedb468a86aa4636061c55966186399ee0a04b605920d208d97ac579a - md5: 66ac81d54e95c534ae488726c1f698ea +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda + sha256: 44e541b4821c96b28b27fef5630883a60ce4fee91fd9c79f25a199f8f73f337b + md5: 4a55d9e169114b2b90d3ec4604cd7bbf depends: - - llvm-openmp >=8.0.0 + - libgfortran5 13.2.0 hf226fd6_3 + arch: arm64 + platform: osx + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 110233 + timestamp: 1707330749033 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hd5240d6_1.conda + sha256: d149a37ca73611e425041f33b9d8dbed6e52ec506fe8cc1fc0ee054bddeb6d5d + md5: 9822b874ea29af082e5d36098d25427d + depends: + - libgcc >=14.2.0 constrains: - - libgfortran 5.0.0 13_2_0_*_3 + - libgfortran 14.2.0 + arch: x86_64 + platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 997381 - timestamp: 1707330687590 -- kind: conda - name: libgfortran5 - version: 14.2.0 - build: hb6113d0_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_1.conda + size: 1462645 + timestamp: 1729027735353 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_1.conda sha256: a87ff46d19916403cbf68cf1d785bf56b4d1ab7b2552468d2ea775d70782493f md5: fc068e11b10e18f184e027782baa12b6 depends: - libgcc >=14.2.0 constrains: - libgfortran 14.2.0 + arch: aarch64 + platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL size: 1102158 timestamp: 1729089452640 -- kind: conda - name: libgfortran5 - version: 14.2.0 - build: hd5240d6_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hd5240d6_1.conda - sha256: d149a37ca73611e425041f33b9d8dbed6e52ec506fe8cc1fc0ee054bddeb6d5d - md5: 9822b874ea29af082e5d36098d25427d +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda + sha256: bafc679eedb468a86aa4636061c55966186399ee0a04b605920d208d97ac579a + md5: 66ac81d54e95c534ae488726c1f698ea depends: - - libgcc >=14.2.0 + - llvm-openmp >=8.0.0 constrains: - - libgfortran 14.2.0 + - libgfortran 5.0.0 13_2_0_*_3 + arch: arm64 + platform: osx license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 1462645 - timestamp: 1729027735353 -- kind: conda - name: libgomp - version: 14.2.0 - build: h77fa898_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h77fa898_1.conda + size: 997381 + timestamp: 1707330687590 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h77fa898_1.conda sha256: 1911c29975ec99b6b906904040c855772ccb265a1c79d5d75c8ceec4ed89cd63 md5: cc3573974587f12dda90d96e3e55a702 depends: - _libgcc_mutex 0.1 conda_forge + arch: x86_64 + platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL size: 460992 timestamp: 1729027639220 -- kind: conda - name: libgomp - version: 14.2.0 - build: he277a41_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_1.conda sha256: 5aa53874a5e57a00f2e0c2e2910684eb674429cd5fcb803619b226a73e89aedf md5: 376f0e73abbda6d23c0cb749adc195ef + arch: aarch64 + platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL size: 463521 timestamp: 1729089357313 -- kind: conda - name: libgoogle-cloud - version: 2.33.0 - build: h2b5623c_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.33.0-h2b5623c_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.33.0-h2b5623c_1.conda sha256: ae48ee93e2c226bf682f1e389c2fd51ae7bf77c2ce4b3aee069764f4be1c63f2 md5: 61829a8dd5f4e2327e707572065bae41 depends: @@ -4347,17 +3512,13 @@ packages: - openssl >=3.4.0,<4.0a0 constrains: - libgoogle-cloud 2.33.0 *_1 + arch: x86_64 + platform: linux license: Apache-2.0 license_family: Apache size: 1254656 timestamp: 1735648569457 -- kind: conda - name: libgoogle-cloud - version: 2.33.0 - build: hccf9d24_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-2.33.0-hccf9d24_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-2.33.0-hccf9d24_1.conda sha256: d3d4def86d880431928799ba90ca97e57c2f05677c03af8de2337502926c492c md5: a2724014eb04f14bd71d35f45b062dd0 depends: @@ -4371,17 +3532,13 @@ packages: - openssl >=3.4.0,<4.0a0 constrains: - libgoogle-cloud 2.33.0 *_1 + arch: aarch64 + platform: linux license: Apache-2.0 license_family: Apache size: 1253019 timestamp: 1735649566849 -- kind: conda - name: libgoogle-cloud - version: 2.33.0 - build: hdbe95d5_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-2.33.0-hdbe95d5_1.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-2.33.0-hdbe95d5_1.conda sha256: ce95aca02451694a4154c7770b6addf4fb859abf17912de6ec947da8469a56ce md5: 91de1fbab8610974c0094c266bc63435 depends: @@ -4395,17 +3552,13 @@ packages: - openssl >=3.4.0,<4.0a0 constrains: - libgoogle-cloud 2.33.0 *_1 + arch: arm64 + platform: osx license: Apache-2.0 license_family: Apache size: 877594 timestamp: 1735648230965 -- kind: conda - name: libgoogle-cloud-storage - version: 2.33.0 - build: h0121fbd_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.33.0-h0121fbd_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.33.0-h0121fbd_1.conda sha256: 41022523320ca8633a6c615710823e596efadb50f06d724e1a0c81e27994f257 md5: b0cfb5044685a7a9fa43ae669124f0a0 depends: @@ -4418,39 +3571,13 @@ packages: - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - openssl + arch: x86_64 + platform: linux license: Apache-2.0 license_family: Apache size: 784357 timestamp: 1735648759177 -- kind: conda - name: libgoogle-cloud-storage - version: 2.33.0 - build: h7081f7f_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-storage-2.33.0-h7081f7f_1.conda - sha256: c0524a22064bc17f5c037da09ba54cc9e767741ef645178e499750c44bec2531 - md5: af8e51382464d4cc2d0054977c40a732 - depends: - - __osx >=11.0 - - libabseil - - libcrc32c >=1.1.2,<1.2.0a0 - - libcurl - - libcxx >=18 - - libgoogle-cloud 2.33.0 hdbe95d5_1 - - libzlib >=1.3.1,<2.0a0 - - openssl - license: Apache-2.0 - license_family: Apache - size: 526963 - timestamp: 1735649222088 -- kind: conda - name: libgoogle-cloud-storage - version: 2.33.0 - build: hb9b2b65_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-storage-2.33.0-hb9b2b65_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-storage-2.33.0-hb9b2b65_1.conda sha256: 5eda1cbba68709b91b370b3792c9cfd7bec4ac4e2262f0887d12e1f000ae1191 md5: 45df2267ff4d8ce532e8d300ce0b0829 depends: @@ -4462,43 +3589,31 @@ packages: - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - openssl + arch: aarch64 + platform: linux license: Apache-2.0 license_family: Apache size: 737518 timestamp: 1735649773462 -- kind: conda - name: libgrpc - version: 1.67.1 - build: h0a426d6_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libgrpc-1.67.1-h0a426d6_1.conda - sha256: 630edf63981818ff590367cb95fddbed0f5a390464d0952c90ec81de899e84a6 - md5: 8a3cba079d6ac985e7d73c76a678fbb4 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-storage-2.33.0-h7081f7f_1.conda + sha256: c0524a22064bc17f5c037da09ba54cc9e767741ef645178e499750c44bec2531 + md5: af8e51382464d4cc2d0054977c40a732 depends: - __osx >=11.0 - - c-ares >=1.34.4,<2.0a0 - - libabseil * cxx17* - - libabseil >=20240722.0,<20240723.0a0 + - libabseil + - libcrc32c >=1.1.2,<1.2.0a0 + - libcurl - libcxx >=18 - - libprotobuf >=5.28.3,<5.28.4.0a0 - - libre2-11 >=2024.7.2 + - libgoogle-cloud 2.33.0 hdbe95d5_1 - libzlib >=1.3.1,<2.0a0 - - openssl >=3.4.0,<4.0a0 - - re2 - constrains: - - grpc-cpp =1.67.1 + - openssl + arch: arm64 + platform: osx license: Apache-2.0 - license_family: APACHE - size: 5311706 - timestamp: 1735585137716 -- kind: conda - name: libgrpc - version: 1.67.1 - build: h25350d4_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.67.1-h25350d4_1.conda + license_family: Apache + size: 526963 + timestamp: 1735649222088 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.67.1-h25350d4_1.conda sha256: 014627485b3cf0ea18e04c0bab07be7fb98722a3aeeb58477acc7e1c3d2f911e md5: 0c6497a760b99a926c7c12b74951a39c depends: @@ -4515,17 +3630,13 @@ packages: - re2 constrains: - grpc-cpp =1.67.1 + arch: x86_64 + platform: linux license: Apache-2.0 license_family: APACHE size: 7792251 timestamp: 1735584856826 -- kind: conda - name: libgrpc - version: 1.67.1 - build: hf7ccdd3_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libgrpc-1.67.1-hf7ccdd3_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgrpc-1.67.1-hf7ccdd3_1.conda sha256: 3fa173dc1d7456aac2b26937daae86a08432a31640e3d6569c62edc661fc9bbe md5: 8fb41a425bebaeb3d0fa568503612e64 depends: @@ -4541,103 +3652,98 @@ packages: - re2 constrains: - grpc-cpp =1.67.1 + arch: aarch64 + platform: linux license: Apache-2.0 license_family: APACHE size: 7430006 timestamp: 1735585769731 -- kind: conda - name: libiconv - version: '1.17' - build: h0d3ecfb_2 - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.17-h0d3ecfb_2.conda - sha256: bc7de5097b97bcafcf7deaaed505f7ce02f648aac8eccc0d5a47cc599a1d0304 - md5: 69bda57310071cf6d2b86caf11573d2d - license: LGPL-2.1-only - size: 676469 - timestamp: 1702682458114 -- kind: conda - name: libiconv - version: '1.17' - build: h31becfc_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libiconv-1.17-h31becfc_2.conda - sha256: a30e09d089cb75a0d5b8e5c354694c1317da98261185ed65aa3793e741060614 - md5: 9a8eb13f14de7d761555a98712e6df65 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgrpc-1.67.1-h0a426d6_1.conda + sha256: 630edf63981818ff590367cb95fddbed0f5a390464d0952c90ec81de899e84a6 + md5: 8a3cba079d6ac985e7d73c76a678fbb4 depends: - - libgcc-ng >=12 - license: LGPL-2.1-only - size: 705787 - timestamp: 1702684557134 -- kind: conda - name: libiconv - version: '1.17' - build: hd590300_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-hd590300_2.conda + - __osx >=11.0 + - c-ares >=1.34.4,<2.0a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libre2-11 >=2024.7.2 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + - re2 + constrains: + - grpc-cpp =1.67.1 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + size: 5311706 + timestamp: 1735585137716 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-hd590300_2.conda sha256: 8ac2f6a9f186e76539439e50505d98581472fedb347a20e7d1f36429849f05c9 md5: d66573916ffcf376178462f1b61c941e depends: - libgcc-ng >=12 + arch: x86_64 + platform: linux license: LGPL-2.1-only size: 705775 timestamp: 1702682170569 -- kind: conda - name: libjpeg-turbo - version: 3.0.0 - build: h31becfc_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libjpeg-turbo-3.0.0-h31becfc_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libiconv-1.17-h31becfc_2.conda + sha256: a30e09d089cb75a0d5b8e5c354694c1317da98261185ed65aa3793e741060614 + md5: 9a8eb13f14de7d761555a98712e6df65 + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: LGPL-2.1-only + size: 705787 + timestamp: 1702684557134 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.17-h0d3ecfb_2.conda + sha256: bc7de5097b97bcafcf7deaaed505f7ce02f648aac8eccc0d5a47cc599a1d0304 + md5: 69bda57310071cf6d2b86caf11573d2d + arch: arm64 + platform: osx + license: LGPL-2.1-only + size: 676469 + timestamp: 1702682458114 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda + sha256: b954e09b7e49c2f2433d6f3bb73868eda5e378278b0f8c1dd10a7ef090e14f2f + md5: ea25936bb4080d843790b586850f82b8 + depends: + - libgcc-ng >=12 + constrains: + - jpeg <0.0.0a + arch: x86_64 + platform: linux + license: IJG AND BSD-3-Clause AND Zlib + size: 618575 + timestamp: 1694474974816 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libjpeg-turbo-3.0.0-h31becfc_1.conda sha256: 675bc1f2a8581cd34a86c412663ec29c5f90c1d9f8d11866aa1ade5cdbdf8429 md5: ed24e702928be089d9ba3f05618515c6 depends: - libgcc-ng >=12 constrains: - jpeg <0.0.0a + arch: aarch64 + platform: linux license: IJG AND BSD-3-Clause AND Zlib size: 647126 timestamp: 1694475003570 -- kind: conda - name: libjpeg-turbo - version: 3.0.0 - build: hb547adb_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.0.0-hb547adb_1.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.0.0-hb547adb_1.conda sha256: a42054eaa38e84fc1e5ab443facac4bbc9d1b6b6f23f54b7bf4f1eb687e1d993 md5: 3ff1e053dc3a2b8e36b9bfa4256a58d1 constrains: - jpeg <0.0.0a + arch: arm64 + platform: osx license: IJG AND BSD-3-Clause AND Zlib size: 547541 timestamp: 1694475104253 -- kind: conda - name: libjpeg-turbo - version: 3.0.0 - build: hd590300_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda - sha256: b954e09b7e49c2f2433d6f3bb73868eda5e378278b0f8c1dd10a7ef090e14f2f - md5: ea25936bb4080d843790b586850f82b8 - depends: - - libgcc-ng >=12 - constrains: - - jpeg <0.0.0a - license: IJG AND BSD-3-Clause AND Zlib - size: 618575 - timestamp: 1694474974816 -- kind: conda - name: liblapack - version: 3.9.0 - build: 26_linux64_openblas +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-26_linux64_openblas.conda build_number: 26 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-26_linux64_openblas.conda sha256: b76458c36331376911e0f98fa68109e02f4d5e5ebfffa79587ac69cef748bba1 md5: 3792604c43695d6a273bc5faaac47d48 depends: @@ -4646,17 +3752,14 @@ packages: - libcblas 3.9.0 26_linux64_openblas - liblapacke 3.9.0 26_linux64_openblas - blas * openblas + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD size: 16338 timestamp: 1734432576650 -- kind: conda - name: liblapack - version: 3.9.0 - build: 26_linuxaarch64_openblas +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-26_linuxaarch64_openblas.conda build_number: 26 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-26_linuxaarch64_openblas.conda sha256: a42bd01498efe2ccf6d08d56ac3cbd3ceab79e06699ff5aac3da8e45a66738f7 md5: a5d4e18876393633da62fd8492c00156 depends: @@ -4665,17 +3768,14 @@ packages: - blas * openblas - liblapacke 3.9.0 26_linuxaarch64_openblas - libcblas 3.9.0 26_linuxaarch64_openblas + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD size: 16403 timestamp: 1734432585123 -- kind: conda - name: liblapack - version: 3.9.0 - build: 26_osxarm64_openblas +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-26_osxarm64_openblas.conda build_number: 26 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-26_osxarm64_openblas.conda sha256: dd6d9a21e672aee4332f019c8229ce70cf5eaf6c2f4cbd1443b105fb66c00dc5 md5: cebad79038a75cfd28fa90d147a2d34d depends: @@ -4684,59 +3784,44 @@ packages: - liblapacke 3.9.0 26_osxarm64_openblas - libcblas 3.9.0 26_osxarm64_openblas - blas * openblas + arch: arm64 + platform: osx license: BSD-3-Clause license_family: BSD size: 16624 timestamp: 1734433068120 -- kind: conda - name: liblzma - version: 5.6.3 - build: h39f12f2_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.3-h39f12f2_1.conda - sha256: d863b8257406918ffdc50ae65502f2b2d6cede29404d09a094f59509d6a0aaf1 - md5: b2553114a7f5e20ccd02378a77d836aa +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.3-hb9d3cd8_1.conda + sha256: e6e425252f3839e2756e4af1ea2074dffd3396c161bf460629f9dfd6a65f15c6 + md5: 2ecf2f1c7e4e21fcfe6423a51a992d84 depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux license: 0BSD - size: 99129 - timestamp: 1733407496073 -- kind: conda - name: liblzma - version: 5.6.3 - build: h86ecc28_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.3-h86ecc28_1.conda + size: 111132 + timestamp: 1733407410083 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.3-h86ecc28_1.conda sha256: d1cce0b7d62d1e54e2164d3e0667ee808efc6c3870256e5b47a150cd0bf46824 md5: eb08b903681f9f2432c320e8ed626723 depends: - libgcc >=13 + arch: aarch64 + platform: linux license: 0BSD size: 124138 timestamp: 1733409137214 -- kind: conda - name: liblzma - version: 5.6.3 - build: hb9d3cd8_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.3-hb9d3cd8_1.conda - sha256: e6e425252f3839e2756e4af1ea2074dffd3396c161bf460629f9dfd6a65f15c6 - md5: 2ecf2f1c7e4e21fcfe6423a51a992d84 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.3-h39f12f2_1.conda + sha256: d863b8257406918ffdc50ae65502f2b2d6cede29404d09a094f59509d6a0aaf1 + md5: b2553114a7f5e20ccd02378a77d836aa depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 + - __osx >=11.0 + arch: arm64 + platform: osx license: 0BSD - size: 111132 - timestamp: 1733407410083 -- kind: conda - name: libnghttp2 - version: 1.64.0 - build: h161d5f1_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda + size: 99129 + timestamp: 1733407496073 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda sha256: b0f2b3695b13a989f75d8fd7f4778e1c7aabe3b36db83f0fe80b2cd812c0e975 md5: 19e57602824042dfd0446292ef90488b depends: @@ -4748,36 +3833,13 @@ packages: - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - openssl >=3.3.2,<4.0a0 + arch: x86_64 + platform: linux license: MIT license_family: MIT size: 647599 timestamp: 1729571887612 -- kind: conda - name: libnghttp2 - version: 1.64.0 - build: h6d7220d_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.64.0-h6d7220d_0.conda - sha256: 00cc685824f39f51be5233b54e19f45abd60de5d8847f1a56906f8936648b72f - md5: 3408c02539cee5f1141f9f11450b6a51 - depends: - - __osx >=11.0 - - c-ares >=1.34.2,<2.0a0 - - libcxx >=17 - - libev >=4.33,<4.34.0a0 - - libev >=4.33,<5.0a0 - - libzlib >=1.3.1,<2.0a0 - - openssl >=3.3.2,<4.0a0 - license: MIT - license_family: MIT - size: 566719 - timestamp: 1729572385640 -- kind: conda - name: libnghttp2 - version: 1.64.0 - build: hc8609a4_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libnghttp2-1.64.0-hc8609a4_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnghttp2-1.64.0-hc8609a4_0.conda sha256: c093c6d370aadbf0409c20b6c54c488ee2f6fea976181919fcc63e87ee232673 md5: f52c614fa214a8bedece9421c771670d depends: @@ -4788,65 +3850,52 @@ packages: - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - openssl >=3.3.2,<4.0a0 + arch: aarch64 + platform: linux license: MIT license_family: MIT size: 714610 timestamp: 1729571912479 -- kind: conda - name: libnsl - version: 2.0.1 - build: h31becfc_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda - sha256: fd18c2b75d7411096428d36a70b36b1a17e31f7b8956b6905d145792d49e97f8 - md5: c14f32510f694e3185704d89967ec422 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.64.0-h6d7220d_0.conda + sha256: 00cc685824f39f51be5233b54e19f45abd60de5d8847f1a56906f8936648b72f + md5: 3408c02539cee5f1141f9f11450b6a51 depends: - - libgcc-ng >=12 - license: LGPL-2.1-only - license_family: GPL - size: 34501 - timestamp: 1697358973269 -- kind: conda - name: libnsl - version: 2.0.1 - build: hd590300_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda + - __osx >=11.0 + - c-ares >=1.34.2,<2.0a0 + - libcxx >=17 + - libev >=4.33,<4.34.0a0 + - libev >=4.33,<5.0a0 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.3.2,<4.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 566719 + timestamp: 1729572385640 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda sha256: 26d77a3bb4dceeedc2a41bd688564fe71bf2d149fdcf117049970bc02ff1add6 md5: 30fd6e37fe21f86f4bd26d6ee73eeec7 depends: - libgcc-ng >=12 + arch: x86_64 + platform: linux license: LGPL-2.1-only license_family: GPL size: 33408 timestamp: 1697359010159 -- kind: conda - name: libopenblas - version: 0.3.28 - build: openmp_hf332438_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.28-openmp_hf332438_1.conda - sha256: 62bb669c37a845129096f73d446cdb6bb170e4927f2fea2b661329680dbbc373 - md5: 40803a48d947c8639da6704e9a44d3ce +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda + sha256: fd18c2b75d7411096428d36a70b36b1a17e31f7b8956b6905d145792d49e97f8 + md5: c14f32510f694e3185704d89967ec422 depends: - - __osx >=11.0 - - libgfortran 5.* - - libgfortran5 >=13.2.0 - - llvm-openmp >=18.1.8 - constrains: - - openblas >=0.3.28,<0.3.29.0a0 - license: BSD-3-Clause - license_family: BSD - size: 4165774 - timestamp: 1730772154295 -- kind: conda - name: libopenblas - version: 0.3.28 - build: pthreads_h94d23a6_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.28-pthreads_h94d23a6_1.conda + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: LGPL-2.1-only + license_family: GPL + size: 34501 + timestamp: 1697358973269 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.28-pthreads_h94d23a6_1.conda sha256: 99ba271d8a80a1af2723f2e124ffd91d850074c0389c067e6d96d72a2dbfeabe md5: 62857b389e42b36b686331bec0922050 depends: @@ -4856,17 +3905,13 @@ packages: - libgfortran5 >=14.2.0 constrains: - openblas >=0.3.28,<0.3.29.0a0 + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD size: 5578513 timestamp: 1730772671118 -- kind: conda - name: libopenblas - version: 0.3.28 - build: pthreads_h9d3fd7e_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.28-pthreads_h9d3fd7e_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.28-pthreads_h9d3fd7e_1.conda sha256: 30623a40764e935aa77e0d4db54c1a1589189a9bf3a03fdb445505c1e319b5a6 md5: e8dde93dd199da3c1f2c1fcfd0042cd4 depends: @@ -4875,17 +3920,30 @@ packages: - libgfortran5 >=14.2.0 constrains: - openblas >=0.3.28,<0.3.29.0a0 + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD size: 4793435 timestamp: 1730773029647 -- kind: conda - name: libparquet - version: 18.1.0 - build: h081d1f1_7_cpu +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.28-openmp_hf332438_1.conda + sha256: 62bb669c37a845129096f73d446cdb6bb170e4927f2fea2b661329680dbbc373 + md5: 40803a48d947c8639da6704e9a44d3ce + depends: + - __osx >=11.0 + - libgfortran 5.* + - libgfortran5 >=13.2.0 + - llvm-openmp >=18.1.8 + constrains: + - openblas >=0.3.28,<0.3.29.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 4165774 + timestamp: 1730772154295 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-h081d1f1_7_cpu.conda build_number: 7 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-h081d1f1_7_cpu.conda sha256: 55945b761130f60abdecf1551907ecfd05cb4a5958cf74d855b30c005ecb3592 md5: b97013ef4e1dd2cf11594f06d5b5e83a depends: @@ -4895,36 +3953,14 @@ packages: - libstdcxx >=13 - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 + arch: x86_64 + platform: linux license: Apache-2.0 license_family: APACHE size: 1205598 timestamp: 1735684849150 -- kind: conda - name: libparquet - version: 18.1.0 - build: h636d7b7_7_cpu - build_number: 7 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-h636d7b7_7_cpu.conda - sha256: bf42e43542a90edd86ba5aa5fd4543671625f1bc35f62be32688f00e18bae990 - md5: 93de9ba66a20db32a2646d313794b3a8 - depends: - - __osx >=11.0 - - libarrow 18.1.0 h0ad35bc_7_cpu - - libcxx >=18 - - libthrift >=0.21.0,<0.21.1.0a0 - - openssl >=3.4.0,<4.0a0 - license: Apache-2.0 - license_family: APACHE - size: 873251 - timestamp: 1735684582558 -- kind: conda - name: libparquet - version: 18.1.0 - build: hfc78867_7_cpu +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-hfc78867_7_cpu.conda build_number: 7 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-hfc78867_7_cpu.conda sha256: 6dff9bbe731dc2cefe96bd9c7981d2cbef2b564a3152840a29c9b6a493ea50d9 md5: 184bec7a9392ab6ba8134041e81971d6 depends: @@ -4933,79 +3969,79 @@ packages: - libstdcxx >=13 - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 + arch: aarch64 + platform: linux license: Apache-2.0 license_family: APACHE size: 1117825 timestamp: 1735685495511 -- kind: conda - name: libpng - version: 1.6.45 - build: h3783ad8_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.45-h3783ad8_0.conda - sha256: ddcc81c049b32fb5eb3ac1f9a6d3a589c08325c8ec6f89eb912208b19330d68c - md5: d554c806d065b1763cb9e1cb1d25741d +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-h636d7b7_7_cpu.conda + build_number: 7 + sha256: bf42e43542a90edd86ba5aa5fd4543671625f1bc35f62be32688f00e18bae990 + md5: 93de9ba66a20db32a2646d313794b3a8 depends: - __osx >=11.0 - - libzlib >=1.3.1,<2.0a0 - license: zlib-acknowledgement - size: 263151 - timestamp: 1736339184358 -- kind: conda - name: libpng - version: 1.6.45 - build: h943b412_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.45-h943b412_0.conda + - libarrow 18.1.0 h0ad35bc_7_cpu + - libcxx >=18 + - libthrift >=0.21.0,<0.21.1.0a0 + - openssl >=3.4.0,<4.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + size: 873251 + timestamp: 1735684582558 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.45-h943b412_0.conda sha256: b8f5b5ba9a14dedf7c97c01300de492b1b52b68eacbc3249a13fdbfa82349a2f md5: 85cbdaacad93808395ac295b5667d25b depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux license: zlib-acknowledgement size: 289426 timestamp: 1736339058310 -- kind: conda - name: libpng - version: 1.6.45 - build: hec79eb8_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.45-hec79eb8_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.45-hec79eb8_0.conda sha256: a06daa523a0d5775acb96e6e3f083adc2ab1383eb8f664513dbc663f439c9cca md5: 9a8716c16b40acc7148263de1d0a403b depends: - libgcc >=13 - libzlib >=1.3.1,<2.0a0 + arch: aarch64 + platform: linux license: zlib-acknowledgement size: 299051 timestamp: 1736344007986 -- kind: conda - name: libprotobuf - version: 5.28.3 - build: h3bd63a1_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.3-h3bd63a1_1.conda - sha256: f58a16b13ad53346903c833e266f83c3d770a43a432659b98710aed85ca885e7 - md5: bdbfea4cf45ae36652c6bbcc2e7ebe91 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.45-h3783ad8_0.conda + sha256: ddcc81c049b32fb5eb3ac1f9a6d3a589c08325c8ec6f89eb912208b19330d68c + md5: d554c806d065b1763cb9e1cb1d25741d depends: - __osx >=11.0 + - libzlib >=1.3.1,<2.0a0 + arch: arm64 + platform: osx + license: zlib-acknowledgement + size: 263151 + timestamp: 1736339184358 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda + sha256: 51125ebb8b7152e4a4e69fd2398489c4ec8473195c27cde3cbdf1cb6d18c5493 + md5: d8703f1ffe5a06356f06467f1d0b9464 + depends: + - __glibc >=2.17,<3.0.a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libcxx >=18 + - libgcc >=13 + - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD - size: 2271580 - timestamp: 1735576361997 -- kind: conda - name: libprotobuf - version: 5.28.3 - build: h44a3b7b_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.3-h44a3b7b_1.conda + size: 2960815 + timestamp: 1735577210663 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.3-h44a3b7b_1.conda sha256: ecb69f2b1668e784b41ba667493be846662d5ef702bef64fb2e013bb1364cdc4 md5: 68f807f7cc13951652bbe048253fd405 depends: @@ -5014,57 +4050,45 @@ packages: - libgcc >=13 - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD size: 2788074 timestamp: 1735576315676 -- kind: conda - name: libprotobuf - version: 5.28.3 - build: h6128344_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda - sha256: 51125ebb8b7152e4a4e69fd2398489c4ec8473195c27cde3cbdf1cb6d18c5493 - md5: d8703f1ffe5a06356f06467f1d0b9464 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.3-h3bd63a1_1.conda + sha256: f58a16b13ad53346903c833e266f83c3d770a43a432659b98710aed85ca885e7 + md5: bdbfea4cf45ae36652c6bbcc2e7ebe91 depends: - - __glibc >=2.17,<3.0.a0 + - __osx >=11.0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libgcc >=13 - - libstdcxx >=13 + - libcxx >=18 - libzlib >=1.3.1,<2.0a0 + arch: arm64 + platform: osx license: BSD-3-Clause license_family: BSD - size: 2960815 - timestamp: 1735577210663 -- kind: conda - name: libre2-11 - version: 2024.07.02 - build: h07bc746_2 - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h07bc746_2.conda - sha256: 112a73ad483353751d4c5d63648c69a4d6fcebf5e1b698a860a3f5124fc3db96 - md5: 6b1e3624d3488016ca4f1ca0c412efaa + size: 2271580 + timestamp: 1735576361997 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_2.conda + sha256: 4420f8362c71251892ba1eeb957c5e445e4e1596c0c651c28d0d8b415fe120c7 + md5: b2fede24428726dd867611664fb372e8 depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libcxx >=18 + - libgcc >=13 + - libstdcxx >=13 constrains: - re2 2024.07.02.* + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD - size: 167155 - timestamp: 1735541067807 -- kind: conda - name: libre2-11 - version: 2024.07.02 - build: h18dbdb1_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_2.conda + size: 209793 + timestamp: 1735541054068 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_2.conda sha256: 862c20de0120f802e618dcb25913d00c5b82f91f4be60b2d46a774e851adc2f6 md5: 9a7dbbaab49f76a6f36e5c9d98e323a7 depends: @@ -5074,227 +4098,176 @@ packages: - libstdcxx >=13 constrains: - re2 2024.07.02.* + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD size: 204305 timestamp: 1735540986919 -- kind: conda - name: libre2-11 - version: 2024.07.02 - build: hbbce691_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_2.conda - sha256: 4420f8362c71251892ba1eeb957c5e445e4e1596c0c651c28d0d8b415fe120c7 - md5: b2fede24428726dd867611664fb372e8 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h07bc746_2.conda + sha256: 112a73ad483353751d4c5d63648c69a4d6fcebf5e1b698a860a3f5124fc3db96 + md5: 6b1e3624d3488016ca4f1ca0c412efaa depends: - - __glibc >=2.17,<3.0.a0 + - __osx >=11.0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libgcc >=13 - - libstdcxx >=13 + - libcxx >=18 constrains: - re2 2024.07.02.* + arch: arm64 + platform: osx license: BSD-3-Clause license_family: BSD - size: 209793 - timestamp: 1735541054068 -- kind: conda - name: libsodium - version: 1.0.20 - build: h4ab18f5_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda + size: 167155 + timestamp: 1735541067807 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda sha256: 0105bd108f19ea8e6a78d2d994a6d4a8db16d19a41212070d2d1d48a63c34161 md5: a587892d3c13b6621a6091be690dbca2 depends: - libgcc-ng >=12 + arch: x86_64 + platform: linux license: ISC size: 205978 timestamp: 1716828628198 -- kind: conda - name: libsodium - version: 1.0.20 - build: h68df207_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.20-h68df207_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.20-h68df207_0.conda sha256: 448df5ea3c5cf1af785aad46858d7a5be0522f4234a4dc9bb764f4d11ff3b981 md5: 2e4a8f23bebdcb85ca8e5a0fbe75666a depends: - libgcc-ng >=12 + arch: aarch64 + platform: linux license: ISC size: 177394 timestamp: 1716828514515 -- kind: conda - name: libsodium - version: 1.0.20 - build: h99b78c6_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda sha256: fade8223e1e1004367d7101dd17261003b60aa576df6d7802191f8972f7470b1 md5: a7ce36e284c5faaf93c220dfc39e3abd depends: - __osx >=11.0 + arch: arm64 + platform: osx license: ISC size: 164972 timestamp: 1716828607917 -- kind: conda - name: libsqlite - version: 3.47.2 - build: h3f77e49_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.47.2-h3f77e49_0.conda - sha256: f192f3c8973de9ec4c214990715f13b781965247a5cedf9162e7f9e699cfc3c4 - md5: 122d6f29470f1a991e85608e77e56a8a +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.47.2-hee588c1_0.conda + sha256: 48af21ebc2cbf358976f1e0f4a0ab9e91dfc83d0ef337cf3837c6f5bc22fb352 + md5: b58da17db24b6e08bcbf8fed2fb8c915 depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux license: Unlicense - size: 850553 - timestamp: 1733762057506 -- kind: conda - name: libsqlite - version: 3.47.2 - build: h5eb1b54_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.47.2-h5eb1b54_0.conda + size: 873551 + timestamp: 1733761824646 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.47.2-h5eb1b54_0.conda sha256: 885a27fa84a5a73ed9779168c02b6c386e2fc7a53f0566b32a09ceca146b42b4 md5: d4bf59f8783a4a66c0aec568f6de3ff4 depends: - libgcc >=13 - libzlib >=1.3.1,<2.0a0 + arch: aarch64 + platform: linux license: Unlicense size: 1042182 timestamp: 1733761913736 -- kind: conda - name: libsqlite - version: 3.47.2 - build: hee588c1_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.47.2-hee588c1_0.conda - sha256: 48af21ebc2cbf358976f1e0f4a0ab9e91dfc83d0ef337cf3837c6f5bc22fb352 - md5: b58da17db24b6e08bcbf8fed2fb8c915 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.47.2-h3f77e49_0.conda + sha256: f192f3c8973de9ec4c214990715f13b781965247a5cedf9162e7f9e699cfc3c4 + md5: 122d6f29470f1a991e85608e77e56a8a depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 + - __osx >=11.0 - libzlib >=1.3.1,<2.0a0 + arch: arm64 + platform: osx license: Unlicense - size: 873551 - timestamp: 1733761824646 -- kind: conda - name: libssh2 - version: 1.11.1 - build: h9cc3647_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.1-h9cc3647_0.conda - sha256: f7047c6ed44bcaeb04432e8c74da87591940d091b0a3940c0d884b7faa8062e9 - md5: ddc7194676c285513706e5fc64f214d7 + size: 850553 + timestamp: 1733762057506 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hf672d98_0.conda + sha256: 0407ac9fda2bb67e11e357066eff144c845801d00b5f664efbc48813af1e7bb9 + md5: be2de152d8073ef1c01b7728475f2fe7 depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 - libzlib >=1.3.1,<2.0a0 - openssl >=3.4.0,<4.0a0 + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD - size: 279028 - timestamp: 1732349599461 -- kind: conda - name: libssh2 - version: 1.11.1 - build: ha41c0db_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libssh2-1.11.1-ha41c0db_0.conda + size: 304278 + timestamp: 1732349402869 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libssh2-1.11.1-ha41c0db_0.conda sha256: 40f2af5357457546bd11cd64a3b9043d83865180f65ce602515c35f353be35c7 md5: aeffe03c0e598f015aab08dbb04f6ee4 depends: - libgcc >=13 - libzlib >=1.3.1,<2.0a0 - openssl >=3.4.0,<4.0a0 + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD size: 311577 timestamp: 1732349396421 -- kind: conda - name: libssh2 - version: 1.11.1 - build: hf672d98_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hf672d98_0.conda - sha256: 0407ac9fda2bb67e11e357066eff144c845801d00b5f664efbc48813af1e7bb9 - md5: be2de152d8073ef1c01b7728475f2fe7 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.1-h9cc3647_0.conda + sha256: f7047c6ed44bcaeb04432e8c74da87591940d091b0a3940c0d884b7faa8062e9 + md5: ddc7194676c285513706e5fc64f214d7 depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - libzlib >=1.3.1,<2.0a0 - openssl >=3.4.0,<4.0a0 + arch: arm64 + platform: osx license: BSD-3-Clause license_family: BSD - size: 304278 - timestamp: 1732349402869 -- kind: conda - name: libstdcxx - version: 14.2.0 - build: h3f4de04_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_1.conda - sha256: 519556d2c93f1b487091ce046d62e762286177f4a670ec10e16005177d0bcab3 - md5: 37f489acd39e22b623d2d1e5ac6d195c - depends: - - libgcc 14.2.0 he277a41_1 - license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - size: 3816794 - timestamp: 1729089463404 -- kind: conda - name: libstdcxx - version: 14.2.0 - build: hc0a3c3a_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-hc0a3c3a_1.conda + size: 279028 + timestamp: 1732349599461 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-hc0a3c3a_1.conda sha256: 4661af0eb9bdcbb5fb33e5d0023b001ad4be828fccdcc56500059d56f9869462 md5: 234a5554c53625688d51062645337328 depends: - libgcc 14.2.0 h77fa898_1 + arch: x86_64 + platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL size: 3893695 timestamp: 1729027746910 -- kind: conda - name: libstdcxx-ng - version: 14.2.0 - build: h4852527_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_1.conda + sha256: 519556d2c93f1b487091ce046d62e762286177f4a670ec10e16005177d0bcab3 + md5: 37f489acd39e22b623d2d1e5ac6d195c + depends: + - libgcc 14.2.0 he277a41_1 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 3816794 + timestamp: 1729089463404 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_1.conda sha256: 25bb30b827d4f6d6f0522cc0579e431695503822f144043b93c50237017fffd8 md5: 8371ac6457591af2cf6159439c1fd051 depends: - libstdcxx 14.2.0 hc0a3c3a_1 + arch: x86_64 + platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL size: 54105 timestamp: 1729027780628 -- kind: conda - name: libstdcxx-ng - version: 14.2.0 - build: hf1166c9_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_1.conda sha256: 9f97461bd55a2745a7a0941f3502a047f15bfe7bb2952dc7fb204b3202f866fd md5: 0e75771b8a03afae5a2c6ce71bc733f5 depends: - libstdcxx 14.2.0 h3f4de04_1 + arch: aarch64 + platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL size: 54133 timestamp: 1729089498541 -- kind: conda - name: libthrift - version: 0.21.0 - build: h0e7cc3e_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libthrift-0.21.0-h0e7cc3e_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/libthrift-0.21.0-h0e7cc3e_0.conda sha256: ebb395232973c18745b86c9a399a4725b2c39293c9a91b8e59251be013db42f0 md5: dcb95c0a98ba9ff737f7ae482aef7833 depends: @@ -5304,16 +4277,13 @@ packages: - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - openssl >=3.3.2,<4.0a0 + arch: x86_64 + platform: linux license: Apache-2.0 license_family: APACHE size: 425773 timestamp: 1727205853307 -- kind: conda - name: libthrift - version: 0.21.0 - build: h154c74f_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libthrift-0.21.0-h154c74f_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libthrift-0.21.0-h154c74f_0.conda sha256: f04ab1417aca1687edff9c30d8423ace285eb8c053dc16d595c6e47cfeefb274 md5: c28792bf37f4ecdce8e3cb9e40750650 depends: @@ -5322,16 +4292,13 @@ packages: - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - openssl >=3.3.2,<4.0a0 + arch: aarch64 + platform: linux license: Apache-2.0 license_family: APACHE size: 417329 timestamp: 1727205944238 -- kind: conda - name: libthrift - version: 0.21.0 - build: h64651cc_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libthrift-0.21.0-h64651cc_0.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libthrift-0.21.0-h64651cc_0.conda sha256: 7a6c7d5f58cbbc2ccd6493b4b821639fdb0701b9b04c737a949e8cb6adf1c9ad md5: 7ce2bd2f650f8c31ad7ba4c7bfea61b7 depends: @@ -5340,39 +4307,32 @@ packages: - libevent >=2.1.12,<2.1.13.0a0 - libzlib >=1.3.1,<2.0a0 - openssl >=3.3.2,<4.0a0 + arch: arm64 + platform: osx license: Apache-2.0 license_family: APACHE size: 324342 timestamp: 1727206096912 -- kind: conda - name: libtiff - version: 4.7.0 - build: h551f018_3 - build_number: 3 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-h551f018_3.conda - sha256: 91417846157e04992801438a496b151df89604b2e7c6775d6f701fcd0cbed5ae - md5: a5d084a957563e614ec0c0196d890654 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hd9ff511_3.conda + sha256: b224e16b88d76ea95e4af56e2bc638c603bd26a770b98d117d04541d3aafa002 + md5: 0ea6510969e1296cc19966fad481f6de depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 - lerc >=4.0.0,<5.0a0 - - libcxx >=18 - libdeflate >=1.23,<1.24.0a0 + - libgcc >=13 - libjpeg-turbo >=3.0.0,<4.0a0 - liblzma >=5.6.3,<6.0a0 + - libstdcxx >=13 - libwebp-base >=1.4.0,<2.0a0 - libzlib >=1.3.1,<2.0a0 - zstd >=1.5.6,<1.6.0a0 + arch: x86_64 + platform: linux license: HPND - size: 370600 - timestamp: 1734398863052 -- kind: conda - name: libtiff - version: 4.7.0 - build: h88f7998_3 - build_number: 3 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.0-h88f7998_3.conda + size: 428173 + timestamp: 1734398813264 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.0-h88f7998_3.conda sha256: 5888bd66ba7606ae8596856c7dac800940ecad0aed77d6aa37db69d434c81cf0 md5: 36a0ea4a173338c8725dc0807e99cf22 depends: @@ -5385,239 +4345,189 @@ packages: - libwebp-base >=1.4.0,<2.0a0 - libzlib >=1.3.1,<2.0a0 - zstd >=1.5.6,<1.6.0a0 + arch: aarch64 + platform: linux license: HPND size: 464699 timestamp: 1734398752249 -- kind: conda - name: libtiff - version: 4.7.0 - build: hd9ff511_3 - build_number: 3 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hd9ff511_3.conda - sha256: b224e16b88d76ea95e4af56e2bc638c603bd26a770b98d117d04541d3aafa002 - md5: 0ea6510969e1296cc19966fad481f6de +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-h551f018_3.conda + sha256: 91417846157e04992801438a496b151df89604b2e7c6775d6f701fcd0cbed5ae + md5: a5d084a957563e614ec0c0196d890654 depends: - - __glibc >=2.17,<3.0.a0 + - __osx >=11.0 - lerc >=4.0.0,<5.0a0 + - libcxx >=18 - libdeflate >=1.23,<1.24.0a0 - - libgcc >=13 - libjpeg-turbo >=3.0.0,<4.0a0 - liblzma >=5.6.3,<6.0a0 - - libstdcxx >=13 - libwebp-base >=1.4.0,<2.0a0 - libzlib >=1.3.1,<2.0a0 - zstd >=1.5.6,<1.6.0a0 + arch: arm64 + platform: osx license: HPND - size: 428173 - timestamp: 1734398813264 -- kind: conda - name: libutf8proc - version: 2.9.0 - build: h5505292_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.9.0-h5505292_1.conda - sha256: ea88f06e97ef8fa2490f7594f8885bb542577226edf8abba3144302d951a53c2 - md5: f777470d31c78cd0abe1903a2fda436f + size: 370600 + timestamp: 1734398863052 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.9.0-hb9d3cd8_1.conda + sha256: 9794e6388e780c3310d46f773bbc924d4053375c3fcdb07a704b57f4616db928 + md5: 1e936bd23d737aac62a18e9a1e7f8b18 depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux license: MIT license_family: MIT - size: 83000 - timestamp: 1732868631531 -- kind: conda - name: libutf8proc - version: 2.9.0 - build: h86ecc28_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.9.0-h86ecc28_1.conda + size: 81500 + timestamp: 1732868419835 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.9.0-h86ecc28_1.conda sha256: 37a1833c55f9945724cd4b3eb6a1469032cc754a1dd725f191c34154ad2ba7e4 md5: 699f155da290be3a1a64c932c6728991 depends: - libgcc >=13 + arch: aarch64 + platform: linux license: MIT license_family: MIT size: 81526 timestamp: 1732868466862 -- kind: conda - name: libutf8proc - version: 2.9.0 - build: hb9d3cd8_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.9.0-hb9d3cd8_1.conda - sha256: 9794e6388e780c3310d46f773bbc924d4053375c3fcdb07a704b57f4616db928 - md5: 1e936bd23d737aac62a18e9a1e7f8b18 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.9.0-h5505292_1.conda + sha256: ea88f06e97ef8fa2490f7594f8885bb542577226edf8abba3144302d951a53c2 + md5: f777470d31c78cd0abe1903a2fda436f depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 + - __osx >=11.0 + arch: arm64 + platform: osx license: MIT license_family: MIT - size: 81500 - timestamp: 1732868419835 -- kind: conda - name: libuuid - version: 2.38.1 - build: h0b41bf4_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda + size: 83000 + timestamp: 1732868631531 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda sha256: 787eb542f055a2b3de553614b25f09eefb0a0931b0c87dbcce6efdfd92f04f18 md5: 40b61aab5c7ba9ff276c41cfffe6b80b depends: - libgcc-ng >=12 + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD size: 33601 timestamp: 1680112270483 -- kind: conda - name: libuuid - version: 2.38.1 - build: hb4cce97_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda sha256: 616277b0c5f7616c2cdf36f6c316ea3f9aa5bb35f2d4476a349ab58b9b91675f md5: 000e30b09db0b7c775b21695dff30969 depends: - libgcc-ng >=12 + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD size: 35720 timestamp: 1680113474501 -- kind: conda - name: libuv - version: 1.49.2 - build: h7ab814d_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libuv-1.49.2-h7ab814d_0.conda - sha256: 0e5176af1e788ad5006cf261c4ea5a288a935fda48993b0240ddd2e562dc3d02 - md5: 4bc348e3a1a74d20a3f9beb866d75e0a +- conda: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.49.2-hb9d3cd8_0.conda + sha256: a35cd81cd1a9add11024097da83cc06b0aae83186fe4124b77710876f37d8f31 + md5: 070e3c9ddab77e38799d5c30b109c633 depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux license: MIT license_family: MIT - size: 410500 - timestamp: 1729322654121 -- kind: conda - name: libuv - version: 1.49.2 - build: h86ecc28_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libuv-1.49.2-h86ecc28_0.conda + size: 884647 + timestamp: 1729322566955 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuv-1.49.2-h86ecc28_0.conda sha256: adf4eca89339ac7780f2394e7e6699be81259eb91f79f9d9fdf2c1bc6b26f210 md5: 1899e1ec2be63386c41c4db31d3056af depends: - libgcc >=13 + arch: aarch64 + platform: linux license: MIT license_family: MIT size: 627484 timestamp: 1729322575379 -- kind: conda - name: libuv - version: 1.49.2 - build: hb9d3cd8_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.49.2-hb9d3cd8_0.conda - sha256: a35cd81cd1a9add11024097da83cc06b0aae83186fe4124b77710876f37d8f31 - md5: 070e3c9ddab77e38799d5c30b109c633 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libuv-1.49.2-h7ab814d_0.conda + sha256: 0e5176af1e788ad5006cf261c4ea5a288a935fda48993b0240ddd2e562dc3d02 + md5: 4bc348e3a1a74d20a3f9beb866d75e0a depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 + - __osx >=11.0 + arch: arm64 + platform: osx license: MIT license_family: MIT - size: 884647 - timestamp: 1729322566955 -- kind: conda - name: libwebp-base - version: 1.5.0 - build: h0886dbf_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libwebp-base-1.5.0-h0886dbf_0.conda + size: 410500 + timestamp: 1729322654121 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.5.0-h851e524_0.conda + sha256: c45283fd3e90df5f0bd3dbcd31f59cdd2b001d424cf30a07223655413b158eaf + md5: 63f790534398730f59e1b899c3644d4a + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + constrains: + - libwebp 1.5.0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 429973 + timestamp: 1734777489810 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libwebp-base-1.5.0-h0886dbf_0.conda sha256: b3d881a0ae08bb07fff7fa8ead506c8d2e0388733182fe4f216f3ec5d61ffcf0 md5: 95ef4a689b8cc1b7e18b53784d88f96b depends: - libgcc >=13 constrains: - libwebp 1.5.0 + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD size: 362623 timestamp: 1734779054659 -- kind: conda - name: libwebp-base - version: 1.5.0 - build: h2471fea_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.5.0-h2471fea_0.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.5.0-h2471fea_0.conda sha256: f8bdb876b4bc8cb5df47c28af29188de8911c3fea4b799a33743500149de3f4a md5: 569466afeb84f90d5bb88c11cc23d746 depends: - __osx >=11.0 constrains: - libwebp 1.5.0 + arch: arm64 + platform: osx license: BSD-3-Clause license_family: BSD size: 290013 timestamp: 1734777593617 -- kind: conda - name: libwebp-base - version: 1.5.0 - build: h851e524_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.5.0-h851e524_0.conda - sha256: c45283fd3e90df5f0bd3dbcd31f59cdd2b001d424cf30a07223655413b158eaf - md5: 63f790534398730f59e1b899c3644d4a +- conda: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda + sha256: 666c0c431b23c6cec6e492840b176dde533d48b7e6fb8883f5071223433776aa + md5: 92ed62436b625154323d40d5f2f11dd7 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - constrains: - - libwebp 1.5.0 - license: BSD-3-Clause - license_family: BSD - size: 429973 - timestamp: 1734777489810 -- kind: conda - name: libxcb - version: 1.17.0 - build: h262b8f6_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcb-1.17.0-h262b8f6_0.conda - sha256: 461cab3d5650ac6db73a367de5c8eca50363966e862dcf60181d693236b1ae7b - md5: cd14ee5cca2464a425b1dbfc24d90db2 - depends: - - libgcc >=13 - pthread-stubs - xorg-libxau >=1.0.11,<2.0a0 - xorg-libxdmcp + arch: x86_64 + platform: linux license: MIT license_family: MIT - size: 397493 - timestamp: 1727280745441 -- kind: conda - name: libxcb - version: 1.17.0 - build: h8a09558_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda - sha256: 666c0c431b23c6cec6e492840b176dde533d48b7e6fb8883f5071223433776aa - md5: 92ed62436b625154323d40d5f2f11dd7 + size: 395888 + timestamp: 1727278577118 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcb-1.17.0-h262b8f6_0.conda + sha256: 461cab3d5650ac6db73a367de5c8eca50363966e862dcf60181d693236b1ae7b + md5: cd14ee5cca2464a425b1dbfc24d90db2 depends: - - __glibc >=2.17,<3.0.a0 - libgcc >=13 - pthread-stubs - xorg-libxau >=1.0.11,<2.0a0 - xorg-libxdmcp + arch: aarch64 + platform: linux license: MIT license_family: MIT - size: 395888 - timestamp: 1727278577118 -- kind: conda - name: libxcb - version: 1.17.0 - build: hdb1d25a_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libxcb-1.17.0-hdb1d25a_0.conda + size: 397493 + timestamp: 1727280745441 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxcb-1.17.0-hdb1d25a_0.conda sha256: bd3816218924b1e43b275863e21a3e13a5db4a6da74cca8e60bc3c213eb62f71 md5: af523aae2eca6dfa1c8eec693f5b9a79 depends: @@ -5625,45 +4535,33 @@ packages: - pthread-stubs - xorg-libxau >=1.0.11,<2.0a0 - xorg-libxdmcp + arch: arm64 + platform: osx license: MIT license_family: MIT size: 323658 timestamp: 1727278733917 -- kind: conda - name: libxcrypt - version: 4.4.36 - build: h31becfc_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda - sha256: 6b46c397644091b8a26a3048636d10b989b1bf266d4be5e9474bf763f828f41f - md5: b4df5d7d4b63579d081fd3a4cf99740e - depends: - - libgcc-ng >=12 - license: LGPL-2.1-or-later - size: 114269 - timestamp: 1702724369203 -- kind: conda - name: libxcrypt - version: 4.4.36 - build: hd590300_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda sha256: 6ae68e0b86423ef188196fff6207ed0c8195dd84273cb5623b85aa08033a410c md5: 5aa797f8787fe7a17d1b0821485b5adc depends: - libgcc-ng >=12 + arch: x86_64 + platform: linux license: LGPL-2.1-or-later size: 100393 timestamp: 1702724383534 -- kind: conda - name: libxml2 - version: 2.13.5 - build: h0d44e9d_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.5-h0d44e9d_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda + sha256: 6b46c397644091b8a26a3048636d10b989b1bf266d4be5e9474bf763f828f41f + md5: b4df5d7d4b63579d081fd3a4cf99740e + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: LGPL-2.1-or-later + size: 114269 + timestamp: 1702724369203 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.5-h0d44e9d_1.conda sha256: 306e18aa647d8208ad2cd0e62d84933222b2fbe93d2d53cd5283d2256b1d54de md5: f5b05674697ae7d2c5932766695945e1 depends: @@ -5674,36 +4572,13 @@ packages: - libzlib >=1.3.1,<2.0a0 constrains: - icu <0.0a0 + arch: x86_64 + platform: linux license: MIT license_family: MIT - size: 689993 - timestamp: 1733443678322 -- kind: conda - name: libxml2 - version: 2.13.5 - build: h178c5d8_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.5-h178c5d8_1.conda - sha256: d7af3f25a4cece170502acd38f2dafbea4521f373f46dcb28a37fbe6ac2da544 - md5: 3dc3cff0eca1640a6acbbfab2f78139e - depends: - - __osx >=11.0 - - icu >=75.1,<76.0a0 - - libiconv >=1.17,<2.0a0 - - liblzma >=5.6.3,<6.0a0 - - libzlib >=1.3.1,<2.0a0 - license: MIT - license_family: MIT - size: 582898 - timestamp: 1733443841584 -- kind: conda - name: libxml2 - version: 2.13.5 - build: h2e0c361_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.5-h2e0c361_1.conda + size: 689993 + timestamp: 1733443678322 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.5-h2e0c361_1.conda sha256: dc0e86d35a836af6e99d18f50c6551fc64c53ed3a3da5a9fea90e78763cf14b4 md5: 63410f85031930cde371dfe0ee89109a depends: @@ -5712,69 +4587,68 @@ packages: - libiconv >=1.17,<2.0a0 - liblzma >=5.6.3,<6.0a0 - libzlib >=1.3.1,<2.0a0 + arch: aarch64 + platform: linux license: MIT license_family: MIT size: 732155 timestamp: 1733443825814 -- kind: conda - name: libzlib - version: 1.3.1 - build: h8359307_2 - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - sha256: ce34669eadaba351cd54910743e6a2261b67009624dbc7daeeafdef93616711b - md5: 369964e85dc26bfe78f41399b366c435 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.5-h178c5d8_1.conda + sha256: d7af3f25a4cece170502acd38f2dafbea4521f373f46dcb28a37fbe6ac2da544 + md5: 3dc3cff0eca1640a6acbbfab2f78139e depends: - __osx >=11.0 + - icu >=75.1,<76.0a0 + - libiconv >=1.17,<2.0a0 + - liblzma >=5.6.3,<6.0a0 + - libzlib >=1.3.1,<2.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 582898 + timestamp: 1733443841584 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda + sha256: d4bfe88d7cb447768e31650f06257995601f89076080e76df55e3112d4e47dc4 + md5: edb0dca6bc32e4f4789199455a1dbeb8 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 constrains: - zlib 1.3.1 *_2 + arch: x86_64 + platform: linux license: Zlib license_family: Other - size: 46438 - timestamp: 1727963202283 -- kind: conda - name: libzlib - version: 1.3.1 - build: h86ecc28_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda + size: 60963 + timestamp: 1727963148474 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda sha256: 5a2c1eeef69342e88a98d1d95bff1603727ab1ff4ee0e421522acd8813439b84 md5: 08aad7cbe9f5a6b460d0976076b6ae64 depends: - libgcc >=13 constrains: - zlib 1.3.1 *_2 + arch: aarch64 + platform: linux license: Zlib license_family: Other size: 66657 timestamp: 1727963199518 -- kind: conda - name: libzlib - version: 1.3.1 - build: hb9d3cd8_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - sha256: d4bfe88d7cb447768e31650f06257995601f89076080e76df55e3112d4e47dc4 - md5: edb0dca6bc32e4f4789199455a1dbeb8 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda + sha256: ce34669eadaba351cd54910743e6a2261b67009624dbc7daeeafdef93616711b + md5: 369964e85dc26bfe78f41399b366c435 depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 + - __osx >=11.0 constrains: - zlib 1.3.1 *_2 + arch: arm64 + platform: osx license: Zlib license_family: Other - size: 60963 - timestamp: 1727963148474 -- kind: conda - name: lit - version: 19.1.6 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/lit-19.1.6-pyhd8ed1ab_0.conda + size: 46438 + timestamp: 1727963202283 +- conda: https://conda.anaconda.org/conda-forge/noarch/lit-19.1.6-pyhd8ed1ab_0.conda sha256: db850690a15523a42f6e526d069a4a065d516793360d0b20e67258316bcf14f1 md5: 367b485a667684bd797fddb1abf66969 depends: @@ -5783,79 +4657,57 @@ packages: license_family: Apache size: 128368 timestamp: 1734486415918 -- kind: conda - name: llvm-openmp - version: 19.1.6 - build: hdb05f8b_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.6-hdb05f8b_0.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.6-hdb05f8b_0.conda sha256: a0f3e9139ab16f0a67b9d2bbabc15b78977168f4a5b5503fed4962dcb9a96102 md5: 34fdeffa0555a1a56f38839415cc066c depends: - __osx >=11.0 constrains: - openmp 19.1.6|19.1.6.* + arch: arm64 + platform: osx license: Apache-2.0 WITH LLVM-exception license_family: APACHE size: 281251 timestamp: 1734520462311 -- kind: conda - name: lz4-c - version: 1.10.0 - build: h286801f_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.10.0-h286801f_1.conda - sha256: 94d3e2a485dab8bdfdd4837880bde3dd0d701e2b97d6134b8806b7c8e69c8652 - md5: 01511afc6cc1909c5303cf31be17b44f - depends: - - __osx >=11.0 - - libcxx >=18 - license: BSD-2-Clause - license_family: BSD - size: 148824 - timestamp: 1733741047892 -- kind: conda - name: lz4-c - version: 1.10.0 - build: h5888daf_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.10.0-h5888daf_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.10.0-h5888daf_1.conda sha256: 47326f811392a5fd3055f0f773036c392d26fdb32e4d8e7a8197eed951489346 md5: 9de5350a85c4a20c685259b889aa6393 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - libstdcxx >=13 + arch: x86_64 + platform: linux license: BSD-2-Clause license_family: BSD size: 167055 timestamp: 1733741040117 -- kind: conda - name: lz4-c - version: 1.10.0 - build: h5ad3122_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.10.0-h5ad3122_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.10.0-h5ad3122_1.conda sha256: 67e55058d275beea76c1882399640c37b5be8be4eb39354c94b610928e9a0573 md5: 6654e411da94011e8fbe004eacb8fe11 depends: - libgcc >=13 - libstdcxx >=13 + arch: aarch64 + platform: linux license: BSD-2-Clause license_family: BSD size: 184953 timestamp: 1733740984533 -- kind: conda - name: markdown-it-py - version: 3.0.0 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: 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/lz4-c-1.10.0-h286801f_1.conda + sha256: 94d3e2a485dab8bdfdd4837880bde3dd0d701e2b97d6134b8806b7c8e69c8652 + md5: 01511afc6cc1909c5303cf31be17b44f + depends: + - __osx >=11.0 + - libcxx >=18 + arch: arm64 + platform: osx + license: BSD-2-Clause + license_family: BSD + size: 148824 + timestamp: 1733741047892 +- conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_1.conda sha256: 0fbacdfb31e55964152b24d5567e9a9996e1e7902fb08eb7d91b5fd6ce60803a md5: fee3164ac23dfca50cfcc8b85ddefb81 depends: @@ -5865,13 +4717,7 @@ packages: license_family: MIT size: 64430 timestamp: 1733250550053 -- kind: conda - name: markupsafe - version: 3.0.2 - build: py312h178313f_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_1.conda sha256: 4a6bf68d2a2b669fecc9a4a009abd1cf8e72c2289522ff00d81b5a6e51ae78f5 md5: eb227c3e0bf58f5bd69c0532b157975b depends: @@ -5881,17 +4727,13 @@ packages: - python_abi 3.12.* *_cp312 constrains: - jinja2 >=3.0.0 + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD size: 24604 timestamp: 1733219911494 -- kind: conda - name: markupsafe - version: 3.0.2 - build: py312h74ce7d3_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.2-py312h74ce7d3_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.2-py312h74ce7d3_1.conda sha256: 1d500158262f30b9c23e37d1c861fe76e127a3926d69b3b38c25d20d3faa6f9f md5: bc8607ab678073a0441808a31465f4fb depends: @@ -5900,17 +4742,13 @@ packages: - python_abi 3.12.* *_cp312 constrains: - jinja2 >=3.0.0 + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD size: 25079 timestamp: 1733220639175 -- kind: conda - name: markupsafe - version: 3.0.2 - build: py312h998013c_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312h998013c_1.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312h998013c_1.conda sha256: 4aa997b244014d3707eeef54ab0ee497d12c0d0d184018960cce096169758283 md5: 46e547061080fddf9cf95a0327e8aba6 depends: @@ -5920,82 +4758,53 @@ packages: - python_abi 3.12.* *_cp312 constrains: - jinja2 >=3.0.0 + arch: arm64 + platform: osx license: BSD-3-Clause license_family: BSD size: 24048 timestamp: 1733219945697 -- kind: conda - name: max - version: 25.1.0.dev2025010817 - build: release - subdir: noarch +- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011022-release.conda noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025010817-release.conda - sha256: 4ce81189e26dd06f188129580db0464f8ee9a081e195dad7082b2fa25fcf738e - md5: b46d770a5f45597ffc008bd224d8e91c - depends: - - max-core ==25.1.0.dev2025010817 release - - max-python >=25.1.0.dev2025010817,<26.0a0 - - mojo-jupyter ==25.1.0.dev2025010817 release - - mblack ==25.1.0.dev2025010817 release + sha256: fae148fb87d78d496ca5596fec75af7ec2c29e60416fcb856be56031cf798901 + md5: 59903ff40dee24c089ca2051858e6422 + depends: + - max-core ==25.1.0.dev2025011022 release + - max-python >=25.1.0.dev2025011022,<26.0a0 + - mojo-jupyter ==25.1.0.dev2025011022 release + - mblack ==25.1.0.dev2025011022 release license: LicenseRef-Modular-Proprietary - size: 9922 - timestamp: 1736357145809 -- kind: conda - name: max-core - version: 25.1.0.dev2025010817 - build: release - subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025010817-release.conda - sha256: 5459a1f6c379b01231649212ca7f5062c49208b5c0b2b17047b55011872727c2 - md5: 5bbb293b5216b098c424e7602823a460 + size: 9917 + timestamp: 1736547478654 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025011022-release.conda + sha256: 237e4007c732a59a619fcb0669f6b55a2a2c7f22bfa7b663ed68fde09ea02f69 + md5: 51be3ab7a5232a42df62bb75e983d05b depends: - - mblack ==25.1.0.dev2025010817 release - arch: x86_64 - platform: linux + - mblack ==25.1.0.dev2025011022 release license: LicenseRef-Modular-Proprietary - size: 247646542 - timestamp: 1736357145807 -- kind: conda - name: max-core - version: 25.1.0.dev2025010817 - build: release - subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025010817-release.conda - sha256: 18715c3fc8071d5eeb9f1893512fe65967919e9900738423958a5cb4f09148da - md5: 4a7b6e800f8fdabf0498727c1bff57d3 + size: 243253667 + timestamp: 1736547516482 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025011022-release.conda + sha256: 7d0b9d872d69308cb7dd70eb68fdf90816a4a33135089eb8ba29877f6be6f89f + md5: 321080690171af0ed4087069d3d3a057 depends: - - mblack ==25.1.0.dev2025010817 release - arch: aarch64 - platform: linux + - mblack ==25.1.0.dev2025011022 release license: LicenseRef-Modular-Proprietary - size: 251608988 - timestamp: 1736357045232 -- kind: conda - name: max-core - version: 25.1.0.dev2025010817 - build: release - subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025010817-release.conda - sha256: 5a23bdc48d6fe2cfe439097b7a0fc0f1bd2b23be081478638ef4b945267d8015 - md5: 1f54b615e5199ac268f123c89cfbabda - depends: - - mblack ==25.1.0.dev2025010817 release - arch: arm64 - platform: osx + size: 247039443 + timestamp: 1736547478652 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025011022-release.conda + sha256: bec13a3ff3e08404e60a3bd9e606168a422effbf9a94180fb17181eaf3686666 + md5: 11895a6758a61c5abc9a29d48f814794 + depends: + - mblack ==25.1.0.dev2025011022 release license: LicenseRef-Modular-Proprietary - size: 209267317 - timestamp: 1736357278969 -- kind: conda - name: max-python - version: 25.1.0.dev2025010817 - build: 3.12release - subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025010817-3.12release.conda - sha256: 7bd73eb5b2c8f796bb2bf947e68b46f9fa0302c1999905321bd18c453be5d410 - md5: 58d7a8476c07a36c0412fcd983faebfc - depends: - - max-core ==25.1.0.dev2025010817 release + size: 205521630 + timestamp: 1736547263030 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025011022-3.12release.conda + sha256: ea9bb62d5a012c5aa8859bf11e998b1d3f25f0325641812825573f5f2532ac2c + md5: e19353c678746a77f2668ad25f9cb543 + depends: + - max-core ==25.1.0.dev2025011022 release - python 3.12.* - fastapi - httpx @@ -6015,21 +4824,14 @@ packages: - typing_extensions - uvicorn - python_abi 3.12.* *_cp312 - arch: x86_64 - platform: linux license: LicenseRef-Modular-Proprietary - size: 124309678 - timestamp: 1736357145817 -- kind: conda - name: max-python - version: 25.1.0.dev2025010817 - build: 3.12release - subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025010817-3.12release.conda - sha256: 1faa8dea2f87c25b20f467758a46589d2d464d8367fda4fa7fa61c73120b62f9 - md5: be84f3b39ee757dd73d27ac241c37d5a - depends: - - max-core ==25.1.0.dev2025010817 release + size: 124126143 + timestamp: 1736547516492 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025011022-3.12release.conda + sha256: f7848a875d82d2f62341d528c1400f32b9e540bdecef0602089d975d4492316a + md5: 1ea09052240a8e4df4cd85658a770dbe + depends: + - max-core ==25.1.0.dev2025011022 release - python 3.12.* - fastapi - httpx @@ -6049,21 +4851,14 @@ packages: - typing_extensions - uvicorn - python_abi 3.12.* *_cp312 - arch: aarch64 - platform: linux license: LicenseRef-Modular-Proprietary - size: 128047180 - timestamp: 1736357045243 -- kind: conda - name: max-python - version: 25.1.0.dev2025010817 - build: 3.12release - subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025010817-3.12release.conda - sha256: c8b10ed04f57bc9a9e67d447ad97404ea06f3efbc903dced4723f3828c93ab2c - md5: aa8c692e6393c51283419173f7cb69a2 - depends: - - max-core ==25.1.0.dev2025010817 release + size: 127905369 + timestamp: 1736547478664 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025011022-3.12release.conda + sha256: f1da578221c4b7c7eb054da59ad7d3a86a2943191466e95aedf18087d6878412 + md5: dd6127789e9eabee6f42ad50ca81cde1 + depends: + - max-core ==25.1.0.dev2025011022 release - python 3.12.* - fastapi - httpx @@ -6083,20 +4878,13 @@ packages: - typing_extensions - uvicorn - python_abi 3.12.* *_cp312 - arch: arm64 - platform: osx license: LicenseRef-Modular-Proprietary - size: 110680624 - timestamp: 1736357278972 -- kind: conda - name: mblack - version: 25.1.0.dev2025010817 - build: release - subdir: noarch + size: 110533786 + timestamp: 1736547263033 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011022-release.conda noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025010817-release.conda - sha256: 8bc21a826d3edc5a8719deeeadcee5b3fc8fbd83313ce2c7ebc8c620075608e1 - md5: ee664fe2390706d36d2d60b1f2bd69df + sha256: 00a2f2b377584f27171e8b832203b9107f081a5b2aaf4ac3921730fbd2c73594 + md5: b571b4d34e8fa8021413b97e1b1c5efe depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -6106,16 +4894,9 @@ packages: - platformdirs >=2 - python license: MIT - size: 130813 - timestamp: 1736357145814 -- kind: conda - name: mdurl - version: 0.1.2 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda + size: 130807 + timestamp: 1736547478660 +- conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda sha256: 78c1bbe1723449c52b7a9df1af2ee5f005209f67e40b6e1d3c7619127c43b1c7 md5: 592132998493b3ff25fd7479396e8351 depends: @@ -6124,30 +4905,19 @@ packages: license_family: MIT size: 14465 timestamp: 1733255681319 -- kind: conda - name: mojo-jupyter - version: 25.1.0.dev2025010817 - build: release - subdir: noarch +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011022-release.conda noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025010817-release.conda - sha256: a92d02809c43a9a92abc363e69396738f6c9802c12d8827cc008d316cea4e107 - md5: 0533034ac307140f160cf43c5f36b2ed + sha256: 0c619f3bff0c0fa6cdc1a314bcc34b450058779c41676b6673acec10030c5fea + md5: 12e9bb285b21a65333d0031a9225e0f0 depends: - - max-core ==25.1.0.dev2025010817 release + - max-core ==25.1.0.dev2025011022 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22926 - timestamp: 1736357145815 -- kind: conda - name: multidict - version: 6.1.0 - build: py312h178313f_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py312h178313f_2.conda + size: 22934 + timestamp: 1736547478660 +- conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py312h178313f_2.conda sha256: b05bc8252a6e957bf4a776ed5e0e61d1ba88cdc46ccb55890c72cc58b10371f4 md5: 5b5e3267d915a107eca793d52e1b780a depends: @@ -6155,17 +4925,13 @@ packages: - libgcc >=13 - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux license: Apache-2.0 license_family: APACHE size: 61507 timestamp: 1733913288935 -- kind: conda - name: multidict - version: 6.1.0 - build: py312hcc812fe_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/multidict-6.1.0-py312hcc812fe_2.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multidict-6.1.0-py312hcc812fe_2.conda sha256: ff9f767ba4df68e9ac2a380529a83a2fb6abd985beee9eab16608f7e2c3ccc6e md5: dcf3ae213cf0ab40ebcc10452e1ed9fa depends: @@ -6173,17 +4939,13 @@ packages: - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux license: Apache-2.0 license_family: APACHE size: 63077 timestamp: 1733913233032 -- kind: conda - name: multidict - version: 6.1.0 - build: py312hdb8e49c_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/multidict-6.1.0-py312hdb8e49c_1.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/multidict-6.1.0-py312hdb8e49c_1.conda sha256: 482fd09fb798090dc8cce2285fa69f43b1459099122eac2fb112d9b922b9f916 md5: 0048335516fed938e4dd2c457b4c5b9b depends: @@ -6191,35 +4953,13 @@ packages: - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx license: Apache-2.0 license_family: APACHE size: 55968 timestamp: 1729065664275 -- kind: conda - name: multiprocess - version: 0.70.15 - build: py312h02f2b3b_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/multiprocess-0.70.15-py312h02f2b3b_1.conda - sha256: 8041371e3ec3fbc2ca13c71b0180672896e6382e62892d9f6b11a4c5dd675951 - md5: 910ef2223c71902175418d9163152788 - depends: - - dill >=0.3.6 - - python >=3.12.0rc3,<3.13.0a0 - - python >=3.12.0rc3,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - license: BSD-3-Clause - license_family: BSD - size: 335147 - timestamp: 1695459275360 -- kind: conda - name: multiprocess - version: 0.70.15 - build: py312h98912ed_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.15-py312h98912ed_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.15-py312h98912ed_1.conda sha256: bb612a921fafda6375a2204ffebd8811db8dd3b8f25ac9886cc9bcbff7e3664e md5: 5a64b9f44790d9a187a85366dd0ffa8d depends: @@ -6227,17 +4967,13 @@ packages: - libgcc-ng >=12 - python >=3.12.0rc3,<3.13.0a0 - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD size: 335666 timestamp: 1695459025249 -- kind: conda - name: multiprocess - version: 0.70.15 - build: py312hdd3e373_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.15-py312hdd3e373_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.15-py312hdd3e373_1.conda sha256: c53362cdf346f314e111faddc53061e3fd2ece0ba68ca303f5dd109976df158f md5: 173a1692d2b3ddc265dc6afd21a869b3 depends: @@ -6246,18 +4982,27 @@ packages: - python >=3.12.0rc3,<3.13.0a0 - python >=3.12.0rc3,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD size: 336110 timestamp: 1695459137796 -- kind: conda - name: mypy_extensions - version: 1.0.0 - build: pyha770c72_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/multiprocess-0.70.15-py312h02f2b3b_1.conda + sha256: 8041371e3ec3fbc2ca13c71b0180672896e6382e62892d9f6b11a4c5dd675951 + md5: 910ef2223c71902175418d9163152788 + depends: + - dill >=0.3.6 + - python >=3.12.0rc3,<3.13.0a0 + - python >=3.12.0rc3,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 335147 + timestamp: 1695459275360 +- conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda sha256: 1895f47b7d68581a6facde5cb13ab8c2764c2e53a76bd746f8f98910dc4e08fe md5: 29097e7ea634a45cc5386b95cac6568f depends: @@ -6266,57 +5011,40 @@ packages: license_family: MIT size: 10854 timestamp: 1733230986902 -- kind: conda - name: ncurses - version: '6.5' - build: h7bae524_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h7bae524_1.conda - sha256: 27d0b9ff78ad46e1f3a6c96c479ab44beda5f96def88e2fe626e0a49429d8afc - md5: cb2b0ea909b97b3d70cd3921d1445e1a +- conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-he02047a_1.conda + sha256: 6a1d5d8634c1a07913f1c525db6455918cbc589d745fac46d9d6e30340c8731a + md5: 70caf8bb6cf39a0b6b7efc885f51c0fe depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 + - libgcc-ng >=12 + arch: x86_64 + platform: linux license: X11 AND BSD-3-Clause - size: 802321 - timestamp: 1724658775723 -- kind: conda - name: ncurses - version: '6.5' - build: hcccb83c_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-hcccb83c_1.conda + size: 889086 + timestamp: 1724658547447 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-hcccb83c_1.conda sha256: acad4cf1f57b12ee1e42995e6fac646fa06aa026529f05eb8c07eb0a84a47a84 md5: 91d49c85cacd92caa40cf375ef72a25d depends: - libgcc-ng >=12 + arch: aarch64 + platform: linux license: X11 AND BSD-3-Clause size: 924472 timestamp: 1724658573518 -- kind: conda - name: ncurses - version: '6.5' - build: he02047a_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-he02047a_1.conda - sha256: 6a1d5d8634c1a07913f1c525db6455918cbc589d745fac46d9d6e30340c8731a - md5: 70caf8bb6cf39a0b6b7efc885f51c0fe +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h7bae524_1.conda + sha256: 27d0b9ff78ad46e1f3a6c96c479ab44beda5f96def88e2fe626e0a49429d8afc + md5: cb2b0ea909b97b3d70cd3921d1445e1a depends: - - __glibc >=2.17,<3.0.a0 - - libgcc-ng >=12 + - __osx >=11.0 + arch: arm64 + platform: osx license: X11 AND BSD-3-Clause - size: 889086 - timestamp: 1724658547447 -- kind: conda - name: numpy - version: 1.26.4 - build: py312h470d778_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda - sha256: 23767677a7790bee5457d5e75ebd508b9a31c5354216f4310dd1acfca3f7a6f9 - md5: 9cebf5a06cb87d4569cd68df887af476 + size: 802321 + timestamp: 1724658775723 +- conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda + sha256: fe3459c75cf84dcef6ef14efcc4adb0ade66038ddd27cadb894f34f4797687d8 + md5: d8285bea2a350f63fab23bf460221f3f depends: - libblas >=3.9.0,<4.0a0 - libcblas >=3.9.0,<4.0a0 @@ -6324,101 +5052,86 @@ packages: - liblapack >=3.9.0,<4.0a0 - libstdcxx-ng >=12 - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 constrains: - numpy-base <0a0 + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD - size: 6614296 - timestamp: 1707225994762 -- kind: conda - name: numpy - version: 1.26.4 - build: py312h8442bc7_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda - sha256: c8841d6d6f61fd70ca80682efbab6bdb8606dc77c68d8acabfbd7c222054f518 - md5: d83fc83d589e2625a3451c9a7e21047c + size: 7484186 + timestamp: 1707225809722 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda + sha256: 23767677a7790bee5457d5e75ebd508b9a31c5354216f4310dd1acfca3f7a6f9 + md5: 9cebf5a06cb87d4569cd68df887af476 depends: - libblas >=3.9.0,<4.0a0 - libcblas >=3.9.0,<4.0a0 - - libcxx >=16 + - libgcc-ng >=12 - liblapack >=3.9.0,<4.0a0 + - libstdcxx-ng >=12 - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 constrains: - numpy-base <0a0 + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD - size: 6073136 - timestamp: 1707226249608 -- kind: conda - name: numpy - version: 1.26.4 - build: py312heda63a1_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda - sha256: fe3459c75cf84dcef6ef14efcc4adb0ade66038ddd27cadb894f34f4797687d8 - md5: d8285bea2a350f63fab23bf460221f3f + size: 6614296 + timestamp: 1707225994762 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda + sha256: c8841d6d6f61fd70ca80682efbab6bdb8606dc77c68d8acabfbd7c222054f518 + md5: d83fc83d589e2625a3451c9a7e21047c depends: - libblas >=3.9.0,<4.0a0 - libcblas >=3.9.0,<4.0a0 - - libgcc-ng >=12 + - libcxx >=16 - liblapack >=3.9.0,<4.0a0 - - libstdcxx-ng >=12 - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 constrains: - numpy-base <0a0 + arch: arm64 + platform: osx license: BSD-3-Clause license_family: BSD - size: 7484186 - timestamp: 1707225809722 -- kind: conda - name: openjpeg - version: 2.5.3 - build: h3f56577_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/openjpeg-2.5.3-h3f56577_0.conda - sha256: 92d310033e20538e896f4e4b1ea4205eb6604eee7c5c651c4965a0d8d3ca0f1d - md5: 04231368e4af50d11184b50e14250993 + size: 6073136 + timestamp: 1707226249608 +- conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.3-h5fbd93e_0.conda + sha256: 5bee706ea5ba453ed7fd9da7da8380dd88b865c8d30b5aaec14d2b6dd32dbc39 + md5: 9e5816bc95d285c115a3ebc2f8563564 depends: + - __glibc >=2.17,<3.0.a0 - libgcc >=13 - libpng >=1.6.44,<1.7.0a0 - libstdcxx >=13 - libtiff >=4.7.0,<4.8.0a0 - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux license: BSD-2-Clause license_family: BSD - size: 377796 - timestamp: 1733816683252 -- kind: conda - name: openjpeg - version: 2.5.3 - build: h5fbd93e_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.3-h5fbd93e_0.conda - sha256: 5bee706ea5ba453ed7fd9da7da8380dd88b865c8d30b5aaec14d2b6dd32dbc39 - md5: 9e5816bc95d285c115a3ebc2f8563564 + size: 342988 + timestamp: 1733816638720 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openjpeg-2.5.3-h3f56577_0.conda + sha256: 92d310033e20538e896f4e4b1ea4205eb6604eee7c5c651c4965a0d8d3ca0f1d + md5: 04231368e4af50d11184b50e14250993 depends: - - __glibc >=2.17,<3.0.a0 - libgcc >=13 - libpng >=1.6.44,<1.7.0a0 - libstdcxx >=13 - libtiff >=4.7.0,<4.8.0a0 - libzlib >=1.3.1,<2.0a0 + arch: aarch64 + platform: linux license: BSD-2-Clause license_family: BSD - size: 342988 - timestamp: 1733816638720 -- kind: conda - name: openjpeg - version: 2.5.3 - build: h8a3d83b_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/openjpeg-2.5.3-h8a3d83b_0.conda + size: 377796 + timestamp: 1733816683252 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/openjpeg-2.5.3-h8a3d83b_0.conda sha256: 1d59bc72ca7faac06d349c1a280f5cfb8a57ee5896f1e24225a997189d7418c7 md5: 4b71d78648dbcf68ce8bf22bb07ff838 depends: @@ -6427,67 +5140,50 @@ packages: - libpng >=1.6.44,<1.7.0a0 - libtiff >=4.7.0,<4.8.0a0 - libzlib >=1.3.1,<2.0a0 + arch: arm64 + platform: osx license: BSD-2-Clause license_family: BSD size: 319362 timestamp: 1733816781741 -- kind: conda - name: openssl - version: 3.4.0 - build: h7b32b05_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.0-h7b32b05_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.0-h7b32b05_1.conda sha256: f62f6bca4a33ca5109b6d571b052a394d836956d21b25b7ffd03376abf7a481f md5: 4ce6875f75469b2757a65e10a5d05e31 depends: - __glibc >=2.17,<3.0.a0 - ca-certificates - libgcc >=13 + arch: x86_64 + platform: linux license: Apache-2.0 license_family: Apache size: 2937158 timestamp: 1736086387286 -- kind: conda - name: openssl - version: 3.4.0 - build: h81ee809_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.0-h81ee809_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.0-hd08dc88_1.conda + sha256: 60d34454b861501d7355f25a7b39fdb5de8d56fca49b5bcbe8b8142b7d82dce4 + md5: e21c4767e783a58c373fdb99de6211bf + depends: + - ca-certificates + - libgcc >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 3469279 + timestamp: 1736088141230 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.0-h81ee809_1.conda sha256: 97772762abc70b3a537683ca9fc3ff3d6099eb64e4aba3b9c99e6fce48422d21 md5: 22f971393637480bda8c679f374d8861 depends: - __osx >=11.0 - ca-certificates + arch: arm64 + platform: osx license: Apache-2.0 license_family: Apache size: 2936415 timestamp: 1736086108693 -- kind: conda - name: openssl - version: 3.4.0 - build: hd08dc88_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.0-hd08dc88_1.conda - sha256: 60d34454b861501d7355f25a7b39fdb5de8d56fca49b5bcbe8b8142b7d82dce4 - md5: e21c4767e783a58c373fdb99de6211bf - depends: - - ca-certificates - - libgcc >=13 - license: Apache-2.0 - license_family: Apache - size: 3469279 - timestamp: 1736088141230 -- kind: conda - name: opentelemetry-api - version: 1.29.0 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.29.0-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.29.0-pyhd8ed1ab_1.conda sha256: 296280c8ace35c0a1cf72bed1077f248b3af903c3bf92332f1783a207cb5abdb md5: 307b05402c1a382f2f09426492dee8f8 depends: @@ -6498,13 +5194,7 @@ packages: license_family: APACHE size: 44166 timestamp: 1734132973331 -- kind: conda - name: opentelemetry-exporter-otlp-proto-common - version: 1.29.0 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.29.0-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.29.0-pyhd8ed1ab_0.conda sha256: ae9776efe52564e0d6711cfcee7c54439273e57a3999f7f796f66e862f58aae9 md5: 0c02e74d26bce3fec93b227cf7ea6e6b depends: @@ -6515,14 +5205,7 @@ packages: license_family: APACHE size: 18922 timestamp: 1734310457116 -- kind: conda - name: opentelemetry-exporter-otlp-proto-http - version: 1.29.0 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.29.0-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.29.0-pyhd8ed1ab_1.conda sha256: 5d61db9d5b4f91b3932f5f2348920d5b7fdaa09e52c8ea054cf7bf3f21677c9c md5: 223f4e56a29601c887f0dc467034af5b depends: @@ -6538,13 +5221,7 @@ packages: license_family: APACHE size: 17147 timestamp: 1734345675510 -- kind: conda - name: opentelemetry-exporter-prometheus - version: 1.12.0rc1 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-prometheus-1.12.0rc1-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-prometheus-1.12.0rc1-pyhd8ed1ab_0.conda sha256: b8239230dbbdb491401e41b53bd9f21d60551cedef1a8d5807fca1bf9bdd331c md5: 1ddc95052b31147d1e10d818cf519cf5 depends: @@ -6556,13 +5233,7 @@ packages: license_family: APACHE size: 14721 timestamp: 1695214221489 -- kind: conda - name: opentelemetry-proto - version: 1.29.0 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.29.0-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.29.0-pyhd8ed1ab_0.conda sha256: 200a7cb8acc8a0ddd6ef55c5460cec871b6a265929b240a0296c0ccb9c8d9758 md5: e2a6d2ad10b813c7fdc1c64aac376128 depends: @@ -6572,13 +5243,7 @@ packages: license_family: APACHE size: 37235 timestamp: 1734291034372 -- kind: conda - name: opentelemetry-sdk - version: 1.29.0 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.29.0-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.29.0-pyhd8ed1ab_0.conda sha256: 7b36629d8b8be8a019fcfd1518d7b7f862dd25de96f8adcadb93e4fd12cf9bd6 md5: 2a8893f06e6ebda4bfa78875bc923ea4 depends: @@ -6591,13 +5256,7 @@ packages: license_family: APACHE size: 77645 timestamp: 1734297838999 -- kind: conda - name: opentelemetry-semantic-conventions - version: 0.50b0 - build: pyh3cfb1c2_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.50b0-pyh3cfb1c2_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.50b0-pyh3cfb1c2_0.conda sha256: 6526e70368d5bf66ef0eaa51fb800d53782dde71a24bd38f40139919a6f784dc md5: f7111fa4188d646c8108e232d024cb99 depends: @@ -6608,35 +5267,7 @@ packages: license_family: APACHE size: 86084 timestamp: 1734208980168 -- kind: conda - name: orc - version: 2.0.3 - build: h0ff2369_2 - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/orc-2.0.3-h0ff2369_2.conda - sha256: cca330695f3bdb8c0e46350c29cd4af3345865544e36f1d7c9ba9190ad22f5f4 - md5: 24b1897c0d24afbb70704ba998793b78 - depends: - - __osx >=11.0 - - libcxx >=18 - - libprotobuf >=5.28.3,<5.28.4.0a0 - - libzlib >=1.3.1,<2.0a0 - - lz4-c >=1.10.0,<1.11.0a0 - - snappy >=1.2.1,<1.3.0a0 - - tzdata - - zstd >=1.5.6,<1.6.0a0 - license: Apache-2.0 - license_family: Apache - size: 438520 - timestamp: 1735630624140 -- kind: conda - name: orc - version: 2.0.3 - build: h12ee42a_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/orc-2.0.3-h12ee42a_2.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/orc-2.0.3-h12ee42a_2.conda sha256: dff5cc8023905782c86b3459055f26d4b97890e403b0698477c9fed15d8669cc md5: 4f6f9f3f80354ad185e276c120eac3f0 depends: @@ -6649,17 +5280,13 @@ packages: - snappy >=1.2.1,<1.3.0a0 - tzdata - zstd >=1.5.6,<1.6.0a0 + arch: x86_64 + platform: linux license: Apache-2.0 license_family: Apache size: 1188881 timestamp: 1735630209320 -- kind: conda - name: orc - version: 2.0.3 - build: hdd485aa_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/orc-2.0.3-hdd485aa_2.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/orc-2.0.3-hdd485aa_2.conda sha256: b6c67542352a86cdf143c3066d5cda855b74454a156eedcd8958b494c6a32a83 md5: d19f01b42e5d6a2908b65df435aff42f depends: @@ -6671,18 +5298,31 @@ packages: - snappy >=1.2.1,<1.3.0a0 - tzdata - zstd >=1.5.6,<1.6.0a0 + arch: aarch64 + platform: linux license: Apache-2.0 license_family: Apache size: 1167714 timestamp: 1735630248837 -- kind: conda - name: packaging - version: '24.2' - build: pyhd8ed1ab_2 - build_number: 2 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/orc-2.0.3-h0ff2369_2.conda + sha256: cca330695f3bdb8c0e46350c29cd4af3345865544e36f1d7c9ba9190ad22f5f4 + md5: 24b1897c0d24afbb70704ba998793b78 + depends: + - __osx >=11.0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libzlib >=1.3.1,<2.0a0 + - lz4-c >=1.10.0,<1.11.0a0 + - snappy >=1.2.1,<1.3.0a0 + - tzdata + - zstd >=1.5.6,<1.6.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 438520 + timestamp: 1735630624140 +- conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda sha256: da157b19bcd398b9804c5c52fc000fcb8ab0525bdb9c70f95beaa0bb42f85af1 md5: 3bfed7e6228ebf2f7b9eaa47f1b4e2aa depends: @@ -6691,13 +5331,27 @@ packages: license_family: APACHE size: 60164 timestamp: 1733203368787 -- kind: conda - name: pandas - version: 2.2.3 - build: py312ha2895bd_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/pandas-2.2.3-py312ha2895bd_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.3-py312hf9745cd_1.conda + sha256: ad275a83bfebfa8a8fee9b0569aaf6f513ada6a246b2f5d5b85903d8ca61887e + md5: 8bce4f6caaf8c5448c7ac86d87e26b4b + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + - numpy >=1.19,<3 + - numpy >=1.22.4 + - python >=3.12,<3.13.0a0 + - python-dateutil >=2.8.1 + - python-tzdata >=2022a + - python_abi 3.12.* *_cp312 + - pytz >=2020.1,<2024.2 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 15436913 + timestamp: 1726879054912 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pandas-2.2.3-py312ha2895bd_1.conda sha256: 585e05f95d14afe3df43ded14f86800c70da26b27e27b59de95932f8888af5d3 md5: 80b873ac4fdf36641afa0eaafff3a664 depends: @@ -6711,17 +5365,13 @@ packages: - python-tzdata >=2022a - python_abi 3.12.* *_cp312 - pytz >=2020.1,<2024.2 + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD size: 15159625 timestamp: 1726879151211 -- kind: conda - name: pandas - version: 2.2.3 - build: py312hcd31e36_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.3-py312hcd31e36_1.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.3-py312hcd31e36_1.conda sha256: ff0cb54b5d058c7987b4a0984066e893642d1865a7bb695294b6172e2fcdc457 md5: c68bfa69e6086c381c74e16fd72613a8 depends: @@ -6735,42 +5385,13 @@ packages: - python-tzdata >=2022a - python_abi 3.12.* *_cp312 - pytz >=2020.1,<2024.2 + arch: arm64 + platform: osx license: BSD-3-Clause license_family: BSD size: 14470437 timestamp: 1726878887799 -- kind: conda - name: pandas - version: 2.2.3 - build: py312hf9745cd_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.3-py312hf9745cd_1.conda - sha256: ad275a83bfebfa8a8fee9b0569aaf6f513ada6a246b2f5d5b85903d8ca61887e - md5: 8bce4f6caaf8c5448c7ac86d87e26b4b - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libstdcxx >=13 - - numpy >=1.19,<3 - - numpy >=1.22.4 - - python >=3.12,<3.13.0a0 - - python-dateutil >=2.8.1 - - python-tzdata >=2022a - - python_abi 3.12.* *_cp312 - - pytz >=2020.1,<2024.2 - license: BSD-3-Clause - license_family: BSD - size: 15436913 - timestamp: 1726879054912 -- kind: conda - name: pathspec - version: 0.12.1 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda sha256: 9f64009cdf5b8e529995f18e03665b03f5d07c0b17445b8badef45bde76249ee md5: 617f15191456cc6a13db418a275435e5 depends: @@ -6779,18 +5400,14 @@ packages: license_family: MOZILLA size: 41075 timestamp: 1733233471940 -- kind: conda - name: pillow - version: 11.1.0 - build: py312h50aef2c_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-11.1.0-py312h50aef2c_0.conda - sha256: b29b7c915053e06a7a5b4118760202c572c9c35d23bd6ce8e73270b6a50e50ee - md5: 94d6ba8cd468668a9fb04193b0f4b36e +- conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-11.1.0-py312h80c1187_0.conda + sha256: 5c347962202b55ae4d8a463e0555c5c6ca33396266a08284bf1384399894e541 + md5: d3894405f05b2c0f351d5de3ae26fa9c depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 - freetype >=2.12.1,<3.0a0 - lcms2 >=2.16,<3.0a0 + - libgcc >=13 - libjpeg-turbo >=3.0.0,<4.0a0 - libtiff >=4.7.0,<4.8.0a0 - libwebp-base >=1.5.0,<2.0a0 @@ -6798,18 +5415,14 @@ packages: - libzlib >=1.3.1,<2.0a0 - openjpeg >=2.5.3,<3.0a0 - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 - tk >=8.6.13,<8.7.0a0 + arch: x86_64 + platform: linux license: HPND - size: 42852329 - timestamp: 1735930118976 -- kind: conda - name: pillow - version: 11.1.0 - build: py312h719f0cf_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/pillow-11.1.0-py312h719f0cf_0.conda + size: 42749785 + timestamp: 1735929845390 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pillow-11.1.0-py312h719f0cf_0.conda sha256: 7559556ffc44bda777f85c2e5acd6b5756fa5822c0271b329b7b9a3c6bb20349 md5: 77e0ec0a6fc847d317f204aa15b59f6b depends: @@ -6825,22 +5438,18 @@ packages: - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 - tk >=8.6.13,<8.7.0a0 + arch: aarch64 + platform: linux license: HPND size: 41362848 timestamp: 1735932311857 -- kind: conda - name: pillow - version: 11.1.0 - build: py312h80c1187_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/pillow-11.1.0-py312h80c1187_0.conda - sha256: 5c347962202b55ae4d8a463e0555c5c6ca33396266a08284bf1384399894e541 - md5: d3894405f05b2c0f351d5de3ae26fa9c +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-11.1.0-py312h50aef2c_0.conda + sha256: b29b7c915053e06a7a5b4118760202c572c9c35d23bd6ce8e73270b6a50e50ee + md5: 94d6ba8cd468668a9fb04193b0f4b36e depends: - - __glibc >=2.17,<3.0.a0 + - __osx >=11.0 - freetype >=2.12.1,<3.0a0 - lcms2 >=2.16,<3.0a0 - - libgcc >=13 - libjpeg-turbo >=3.0.0,<4.0a0 - libtiff >=4.7.0,<4.8.0a0 - libwebp-base >=1.5.0,<2.0a0 @@ -6848,19 +5457,15 @@ packages: - libzlib >=1.3.1,<2.0a0 - openjpeg >=2.5.3,<3.0a0 - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 - tk >=8.6.13,<8.7.0a0 + arch: arm64 + platform: osx license: HPND - size: 42749785 - timestamp: 1735929845390 -- kind: conda - name: platformdirs - version: 4.3.6 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + size: 42852329 + timestamp: 1735930118976 +- conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda sha256: bb50f6499e8bc1d1a26f17716c97984671121608dc0c3ecd34858112bce59a27 md5: 577852c7e53901ddccc7e6a9959ddebe depends: @@ -6869,13 +5474,7 @@ packages: license_family: MIT size: 20448 timestamp: 1733232756001 -- kind: conda - name: prometheus_client - version: 0.21.1 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda sha256: bc8f00d5155deb7b47702cb8370f233935704100dbc23e30747c161d1b6cf3ab md5: 3e01e386307acc60b2f89af0b2e161aa depends: @@ -6884,12 +5483,7 @@ packages: license_family: Apache size: 49002 timestamp: 1733327434163 -- kind: conda - name: propcache - version: 0.2.1 - build: py312h66e93f0_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.1-py312h66e93f0_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.1-py312h66e93f0_0.conda sha256: 5771311fb5ded614ca349c92579a0b752af55a310f40b71fc533e20625965391 md5: 55d5742a696d7da1c1262e99b6217ceb depends: @@ -6897,16 +5491,13 @@ packages: - libgcc >=13 - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux license: Apache-2.0 license_family: APACHE size: 52747 timestamp: 1733391916349 -- kind: conda - name: propcache - version: 0.2.1 - build: py312hb2c0f52_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.2.1-py312hb2c0f52_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.2.1-py312hb2c0f52_0.conda sha256: c7f62c11ed929ccf1f3d4a1e200e28be01e8d0e0786bf8f76c5893f2ea681e1b md5: 50ab8953e7ff1333a4a47cda32e68123 depends: @@ -6914,16 +5505,13 @@ packages: - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux license: Apache-2.0 license_family: APACHE size: 52484 timestamp: 1733391993461 -- kind: conda - name: propcache - version: 0.2.1 - build: py312hea69d52_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.1-py312hea69d52_0.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.1-py312hea69d52_0.conda sha256: f8c266c494aa1e4cfb8bf0b6fca060044b2f3d65afe4c5062ebeea382e77aa6d md5: c84e3dd97fe25a17322c4a0f670c6750 depends: @@ -6931,16 +5519,13 @@ packages: - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx license: Apache-2.0 license_family: APACHE size: 48225 timestamp: 1733392308901 -- kind: conda - name: protobuf - version: 5.28.3 - build: py312h2ec8cdc_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/protobuf-5.28.3-py312h2ec8cdc_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/protobuf-5.28.3-py312h2ec8cdc_0.conda sha256: acb2e0ee948e3941f8ed191cb77f654e06538638aed8ccd71cbc78a15242ebbb md5: 9d7e427d159c1b2d516cc047ff177c48 depends: @@ -6951,16 +5536,13 @@ packages: - python_abi 3.12.* *_cp312 constrains: - libprotobuf 5.28.3 + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD size: 464794 timestamp: 1731366525051 -- kind: conda - name: protobuf - version: 5.28.3 - build: py312h6f74592_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/protobuf-5.28.3-py312h6f74592_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/protobuf-5.28.3-py312h6f74592_0.conda sha256: 9c575d5035c7ecb114ab9e17906c0a54087d9598dd6a2104c02fe33f0a29dd46 md5: 06513608c94fb1c1b17136ace77063a9 depends: @@ -6971,16 +5553,13 @@ packages: - python_abi 3.12.* *_cp312 constrains: - libprotobuf 5.28.3 + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD size: 473242 timestamp: 1731366577844 -- kind: conda - name: protobuf - version: 5.28.3 - build: py312hd8f9ff3_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/protobuf-5.28.3-py312hd8f9ff3_0.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/protobuf-5.28.3-py312hd8f9ff3_0.conda sha256: 9d572a97419bdace14d7c7cc8cc8c4bf2dcb22b56965dac87a27fbdb5061b926 md5: 5afbe52a59f04dd1fe566d0d17590d7e depends: @@ -6991,64 +5570,49 @@ packages: - python_abi 3.12.* *_cp312 constrains: - libprotobuf 5.28.3 + arch: arm64 + platform: osx license: BSD-3-Clause license_family: BSD size: 448803 timestamp: 1731367010746 -- kind: conda - name: pthread-stubs - version: '0.4' - build: h86ecc28_1002 - build_number: 1002 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/pthread-stubs-0.4-h86ecc28_1002.conda - sha256: 977dfb0cb3935d748521dd80262fe7169ab82920afd38ed14b7fee2ea5ec01ba - md5: bb5a90c93e3bac3d5690acf76b4a6386 - depends: - - libgcc >=13 - license: MIT - license_family: MIT - size: 8342 - timestamp: 1726803319942 -- kind: conda - name: pthread-stubs - version: '0.4' - build: hb9d3cd8_1002 - build_number: 1002 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda sha256: 9c88f8c64590e9567c6c80823f0328e58d3b1efb0e1c539c0315ceca764e0973 md5: b3c17d95b5a10c6e64a21fa17573e70e depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 + arch: x86_64 + platform: linux license: MIT license_family: MIT size: 8252 timestamp: 1726802366959 -- kind: conda - name: pthread-stubs - version: '0.4' - build: hd74edd7_1002 - build_number: 1002 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/pthread-stubs-0.4-hd74edd7_1002.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pthread-stubs-0.4-h86ecc28_1002.conda + sha256: 977dfb0cb3935d748521dd80262fe7169ab82920afd38ed14b7fee2ea5ec01ba + md5: bb5a90c93e3bac3d5690acf76b4a6386 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 8342 + timestamp: 1726803319942 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pthread-stubs-0.4-hd74edd7_1002.conda sha256: 8ed65e17fbb0ca944bfb8093b60086e3f9dd678c3448b5de212017394c247ee3 md5: 415816daf82e0b23a736a069a75e9da7 depends: - __osx >=11.0 + arch: arm64 + platform: osx license: MIT license_family: MIT size: 8381 timestamp: 1726802424786 -- kind: conda - name: pyarrow - version: 18.1.0 - build: py312h1f38498_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-18.1.0-py312h1f38498_0.conda - sha256: 06c0e208d5bf15051874097366c8e8e5db176dffba38526f227a34e80cc8e9bc - md5: 3710616b880b31d0c8afd8ae7e12392a +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-18.1.0-py312h7900ff3_0.conda + sha256: 46a61c29375d3bf1933eae61c7861394c168898915d59fc99bf05e46de2ff5ad + md5: ac65b70df28687c6af4270923c020bdd depends: - libarrow-acero 18.1.0.* - libarrow-dataset 18.1.0.* @@ -7057,18 +5621,15 @@ packages: - pyarrow-core 18.1.0 *_0_* - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux license: Apache-2.0 license_family: APACHE - size: 25375 - timestamp: 1732610892198 -- kind: conda - name: pyarrow - version: 18.1.0 - build: py312h7900ff3_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-18.1.0-py312h7900ff3_0.conda - sha256: 46a61c29375d3bf1933eae61c7861394c168898915d59fc99bf05e46de2ff5ad - md5: ac65b70df28687c6af4270923c020bdd + size: 25213 + timestamp: 1732610785600 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-18.1.0-py312h8025657_0.conda + sha256: 49db959887cb89b44053a44a98d0f35644fc0b2003587492f02b56046de0b60a + md5: 9bb7d32e96a5dcb5ea7fd90a11a83656 depends: - libarrow-acero 18.1.0.* - libarrow-dataset 18.1.0.* @@ -7077,18 +5638,15 @@ packages: - pyarrow-core 18.1.0 *_0_* - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux license: Apache-2.0 license_family: APACHE - size: 25213 - timestamp: 1732610785600 -- kind: conda - name: pyarrow - version: 18.1.0 - build: py312h8025657_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-18.1.0-py312h8025657_0.conda - sha256: 49db959887cb89b44053a44a98d0f35644fc0b2003587492f02b56046de0b60a - md5: 9bb7d32e96a5dcb5ea7fd90a11a83656 + size: 25374 + timestamp: 1732611006864 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-18.1.0-py312h1f38498_0.conda + sha256: 06c0e208d5bf15051874097366c8e8e5db176dffba38526f227a34e80cc8e9bc + md5: 3710616b880b31d0c8afd8ae7e12392a depends: - libarrow-acero 18.1.0.* - libarrow-dataset 18.1.0.* @@ -7097,16 +5655,13 @@ packages: - pyarrow-core 18.1.0 *_0_* - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx license: Apache-2.0 license_family: APACHE - size: 25374 - timestamp: 1732611006864 -- kind: conda - name: pyarrow-core - version: 18.1.0 - build: py312h01725c0_0_cpu - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-18.1.0-py312h01725c0_0_cpu.conda + size: 25375 + timestamp: 1732610892198 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-18.1.0-py312h01725c0_0_cpu.conda sha256: 948a4161c56f846d374a3721a657e58ddbc992a29b3b3e7a6411975c30361d94 md5: ee80934a6c280ff8635f8db5dec11e04 depends: @@ -7120,16 +5675,13 @@ packages: constrains: - numpy >=1.21,<3 - apache-arrow-proc =*=cpu + arch: x86_64 + platform: linux license: Apache-2.0 license_family: APACHE size: 4612916 timestamp: 1732610377259 -- kind: conda - name: pyarrow-core - version: 18.1.0 - build: py312h66f7834_0_cpu - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-18.1.0-py312h66f7834_0_cpu.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-18.1.0-py312h66f7834_0_cpu.conda sha256: e7eb062145be554c23dfefa0ebe8c5f6ae8c59635117a6921e66403d6addcda3 md5: 3390c8b8f57e85506c92a37cf750bdd7 depends: @@ -7143,16 +5695,13 @@ packages: constrains: - numpy >=1.21,<3 - apache-arrow-proc =*=cpu + arch: aarch64 + platform: linux license: Apache-2.0 license_family: APACHE size: 4406662 timestamp: 1732610939832 -- kind: conda - name: pyarrow-core - version: 18.1.0 - build: py312hc40f475_0_cpu - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-18.1.0-py312hc40f475_0_cpu.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-18.1.0-py312hc40f475_0_cpu.conda sha256: 063eb168a29d4ce6d9ed865e9e1ad3b6e141712189955a79e06b24ddc0cbbc9c md5: 9859e7c4b94bbf69772dbf0511101cec depends: @@ -7166,18 +5715,13 @@ packages: constrains: - numpy >=1.21,<3 - apache-arrow-proc =*=cpu + arch: arm64 + platform: osx license: Apache-2.0 license_family: APACHE size: 3909116 timestamp: 1732610863261 -- kind: conda - name: pycparser - version: '2.22' - build: pyh29332c3_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda sha256: 79db7928d13fab2d892592223d7570f5061c192f27b9febd1a418427b719acc6 md5: 12c566707c80111f9799308d9e265aef depends: @@ -7187,15 +5731,9 @@ packages: license_family: BSD size: 110100 timestamp: 1733195786147 -- kind: conda - name: pydantic - version: 2.10.4 - build: pyh3cfb1c2_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.4-pyh3cfb1c2_0.conda - sha256: e68400714532a33f34b44ddaee3e27e8dd6c83c3f31c7892ec10b84d13aa8b59 - md5: 93bccf4d7a58c9140d59491de21e044b +- conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.5-pyh3cfb1c2_0.conda + sha256: 0f32c30ddc610cd1113335d8b4f311f20f4d72754b7c1a5d0d9493f597cf11d2 + md5: e8ea30925c8271c4128375810d7d3d7a depends: - annotated-types >=0.6.0 - pydantic-core 2.27.2 @@ -7204,14 +5742,9 @@ packages: - typing_extensions >=4.12.2 license: MIT license_family: MIT - size: 296557 - timestamp: 1734609427697 -- kind: conda - name: pydantic-core - version: 2.27.2 - build: py312h12e396e_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.27.2-py312h12e396e_0.conda + size: 296805 + timestamp: 1736458364196 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.27.2-py312h12e396e_0.conda sha256: 81602a4592ad2ac1a1cb57372fd25214e63b1c477d5818b0c21cde0f1f85c001 md5: bae01b2563030c085f5158c518b84e86 depends: @@ -7222,16 +5755,13 @@ packages: - typing-extensions >=4.6.0,!=4.7.0 constrains: - __glibc >=2.17 + arch: x86_64 + platform: linux license: MIT license_family: MIT size: 1641402 timestamp: 1734571789895 -- kind: conda - name: pydantic-core - version: 2.27.2 - build: py312h8cbf658_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/pydantic-core-2.27.2-py312h8cbf658_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pydantic-core-2.27.2-py312h8cbf658_0.conda sha256: 623e0f3846f15d035ce7ab7ae445fc8d9e547b6684ab55858b6f44510d24b097 md5: 9677f6ab4bf27ba3c2aee70d08c7b27c depends: @@ -7242,16 +5772,13 @@ packages: - typing-extensions >=4.6.0,!=4.7.0 constrains: - __glibc >=2.17 + arch: aarch64 + platform: linux license: MIT license_family: MIT size: 1505076 timestamp: 1734571966615 -- kind: conda - name: pydantic-core - version: 2.27.2 - build: py312hcd83bfe_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.27.2-py312hcd83bfe_0.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.27.2-py312hcd83bfe_0.conda sha256: cfa7201f890d5d08ce29ff70e65a96787d5793a1718776733666b44bbd4a1205 md5: dcb307e02f17d38c6e1cbfbf8c602852 depends: @@ -7262,17 +5789,13 @@ packages: - typing-extensions >=4.6.0,!=4.7.0 constrains: - __osx >=11.0 + arch: arm64 + platform: osx license: MIT license_family: MIT size: 1593461 timestamp: 1734571986644 -- kind: conda - name: pydantic-settings - version: 2.7.1 - build: pyh3cfb1c2_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.7.1-pyh3cfb1c2_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.7.1-pyh3cfb1c2_0.conda sha256: 082fb1ec29917d2c9ed6a862cb8eb9beb88c208ea62c9fef1aeb5f4f3e0e0b06 md5: d71d76b62bed332b037d7adfc0f3989a depends: @@ -7283,13 +5806,7 @@ packages: license_family: MIT size: 31822 timestamp: 1735650532951 -- kind: conda - name: pygments - version: 2.19.1 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda sha256: 28a3e3161390a9d23bc02b4419448f8d27679d9e2c250e29849e37749c8de86b md5: 232fb4577b6687b2d503ef8e254270c9 depends: @@ -7298,29 +5815,7 @@ packages: license_family: BSD size: 888600 timestamp: 1736243563082 -- kind: conda - name: pyinstrument - version: 5.0.0 - build: py312h0bf5046_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/pyinstrument-5.0.0-py312h0bf5046_0.conda - sha256: 6879d52fb0ec2258e2850476786a652c394220d53883c53691ed5390183ae925 - md5: f0e4a98d54477083ddc9d2f33507f848 - depends: - - __osx >=11.0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - license: BSD-3-Clause - license_family: BSD - size: 181512 - timestamp: 1728714205508 -- kind: conda - name: pyinstrument - version: 5.0.0 - build: py312h66e93f0_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/pyinstrument-5.0.0-py312h66e93f0_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyinstrument-5.0.0-py312h66e93f0_0.conda sha256: 8a006507a4003fb01eeee2f9ba79f994478694766ea3b445273da5c11cf8e763 md5: 798f42d9bfdf125dc80ffbec0e96e0b6 depends: @@ -7328,16 +5823,13 @@ packages: - libgcc >=13 - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD size: 182021 timestamp: 1728714164706 -- kind: conda - name: pyinstrument - version: 5.0.0 - build: py312hb2c0f52_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/pyinstrument-5.0.0-py312hb2c0f52_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyinstrument-5.0.0-py312hb2c0f52_0.conda sha256: 7967b94b8f0ff75847302444e9c43ac11a391d74da24cb14fba1049fac9e5ba9 md5: 5274663cb05dfbe316db50af6da4389f depends: @@ -7345,18 +5837,27 @@ packages: - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD size: 183141 timestamp: 1728714267954 -- kind: conda - name: pysocks - version: 1.7.1 - build: pyha55dd90_7 - build_number: 7 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyinstrument-5.0.0-py312h0bf5046_0.conda + sha256: 6879d52fb0ec2258e2850476786a652c394220d53883c53691ed5390183ae925 + md5: f0e4a98d54477083ddc9d2f33507f848 + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 181512 + timestamp: 1728714205508 +- conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda sha256: ba3b032fa52709ce0d9fd388f63d330a026754587a2f461117cac9ab73d8d0d8 md5: 461219d1a5bd61342293efa2c0c90eac depends: @@ -7366,18 +5867,14 @@ packages: license_family: BSD size: 21085 timestamp: 1733217331982 -- kind: conda - name: python - version: 3.12.8 - build: h1683364_1_cpython +- conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.8-h9e4cc4f_1_cpython.conda build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.8-h1683364_1_cpython.conda - sha256: 85573582d5b0f79923fed0a8365d3d74d21eee9f0a5fa1b9345f191e006363ab - md5: 09ec612ea05370989eaa3d81abf0f369 + sha256: 3f0e0518c992d8ccfe62b189125721309836fe48a010dc424240583e157f9ff0 + md5: 7fd2fd79436d9b473812f14e86746844 depends: + - __glibc >=2.17,<3.0.a0 - bzip2 >=1.0.8,<2.0a0 - - ld_impl_linux-aarch64 >=2.36.1 + - ld_impl_linux-64 >=2.36.1 - libexpat >=2.6.4,<3.0a0 - libffi >=3.4,<4.0a0 - libgcc >=13 @@ -7394,22 +5891,18 @@ packages: - tzdata constrains: - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux license: Python-2.0 - size: 13760816 - timestamp: 1733407890896 -- kind: conda - name: python - version: 3.12.8 - build: h9e4cc4f_1_cpython + size: 31565686 + timestamp: 1733410597922 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.8-h1683364_1_cpython.conda build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.8-h9e4cc4f_1_cpython.conda - sha256: 3f0e0518c992d8ccfe62b189125721309836fe48a010dc424240583e157f9ff0 - md5: 7fd2fd79436d9b473812f14e86746844 + sha256: 85573582d5b0f79923fed0a8365d3d74d21eee9f0a5fa1b9345f191e006363ab + md5: 09ec612ea05370989eaa3d81abf0f369 depends: - - __glibc >=2.17,<3.0.a0 - bzip2 >=1.0.8,<2.0a0 - - ld_impl_linux-64 >=2.36.1 + - ld_impl_linux-aarch64 >=2.36.1 - libexpat >=2.6.4,<3.0a0 - libffi >=3.4,<4.0a0 - libgcc >=13 @@ -7426,16 +5919,13 @@ packages: - tzdata constrains: - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux license: Python-2.0 - size: 31565686 - timestamp: 1733410597922 -- kind: conda - name: python - version: 3.12.8 - build: hc22306f_1_cpython + size: 13760816 + timestamp: 1733407890896 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.8-hc22306f_1_cpython.conda build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.8-hc22306f_1_cpython.conda sha256: 7586a711b1b08a9df8864e26efdc06980bdfb0e18d5ac4651d0fee30a8d3e3a0 md5: 54ca5b5d92ef3a3ba61e195ee882a518 depends: @@ -7453,17 +5943,12 @@ packages: - tzdata constrains: - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx license: Python-2.0 size: 12998673 timestamp: 1733408900971 -- kind: conda - name: python-dateutil - version: 2.9.0.post0 - build: pyhff2d567_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda sha256: a50052536f1ef8516ed11a844f9413661829aa083304dc624c5925298d078d79 md5: 5ba79d7c71f03c678c8ead841f347d6e depends: @@ -7473,14 +5958,7 @@ packages: license_family: APACHE size: 222505 timestamp: 1733215763718 -- kind: conda - name: python-dotenv - version: 1.0.1 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda sha256: 99713f6b534fef94995c6c16fd21d59f3548784e9111775d692bdc7c44678f02 md5: e5c6ed218664802d305e79cc2d4491de depends: @@ -7489,13 +5967,7 @@ packages: license_family: BSD size: 24215 timestamp: 1733243277223 -- kind: conda - name: python-json-logger - version: 2.0.7 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda sha256: 4790787fe1f4e8da616edca4acf6a4f8ed4e7c6967aa31b920208fc8f95efcca md5: a61bf9ec79426938ff785eb69dbb1960 depends: @@ -7504,13 +5976,7 @@ packages: license_family: BSD size: 13383 timestamp: 1677079727691 -- kind: conda - name: python-multipart - version: 0.0.20 - build: pyhff2d567_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.20-pyhff2d567_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.20-pyhff2d567_0.conda sha256: 1b03678d145b1675b757cba165a0d9803885807792f7eb4495e48a38858c3cca md5: a28c984e0429aff3ab7386f7de56de6f depends: @@ -7519,14 +5985,7 @@ packages: license_family: Apache size: 27913 timestamp: 1734420869885 -- kind: conda - name: python-tzdata - version: '2024.2' - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_1.conda sha256: 57c9a02ec25926fb48edca59b9ede107823e5d5c473b94a0e05cc0b9a193a642 md5: c0def296b2f6d2dd7b030c2a7f66bb1f depends: @@ -7535,32 +5994,22 @@ packages: license_family: APACHE size: 142235 timestamp: 1733235414217 -- kind: conda - name: python-xxhash - version: 3.5.0 - build: py312h024a12e_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/python-xxhash-3.5.0-py312h024a12e_1.conda - sha256: 28204ef48f028a4d872e22040da0dad7ebd703549b010a1bb511b6dd94cf466d - md5: 266fe1ae54a7bb17990206664d0f0ae4 +- conda: https://conda.anaconda.org/conda-forge/linux-64/python-xxhash-3.5.0-py312h66e93f0_1.conda + sha256: 20851b1e59fee127d49e01fc73195a88ab0779f103b7d6ffc90d11142a83678f + md5: 39aed2afe4d0cf76ab3d6b09eecdbea7 depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 - xxhash >=0.8.2,<0.8.3.0a0 + arch: x86_64 + platform: linux license: BSD-2-Clause license_family: BSD - size: 21765 - timestamp: 1725272382968 -- kind: conda - name: python-xxhash - version: 3.5.0 - build: py312h52516f5_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/python-xxhash-3.5.0-py312h52516f5_1.conda + size: 23162 + timestamp: 1725272139519 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-xxhash-3.5.0-py312h52516f5_1.conda sha256: 0fa5ba80073a43391ee90303814adbc9fd826175de1fdac273ba0e5b711aa255 md5: 591c4ae6d8338dfd07b951e00433a405 depends: @@ -7568,81 +6017,64 @@ packages: - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 - xxhash >=0.8.2,<0.8.3.0a0 + arch: aarch64 + platform: linux license: BSD-2-Clause license_family: BSD size: 23589 timestamp: 1725273317965 -- kind: conda - name: python-xxhash - version: 3.5.0 - build: py312h66e93f0_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/python-xxhash-3.5.0-py312h66e93f0_1.conda - sha256: 20851b1e59fee127d49e01fc73195a88ab0779f103b7d6ffc90d11142a83678f - md5: 39aed2afe4d0cf76ab3d6b09eecdbea7 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-xxhash-3.5.0-py312h024a12e_1.conda + sha256: 28204ef48f028a4d872e22040da0dad7ebd703549b010a1bb511b6dd94cf466d + md5: 266fe1ae54a7bb17990206664d0f0ae4 depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 + - __osx >=11.0 - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 - xxhash >=0.8.2,<0.8.3.0a0 + arch: arm64 + platform: osx license: BSD-2-Clause license_family: BSD - size: 23162 - timestamp: 1725272139519 -- kind: conda - name: python_abi - version: '3.12' - build: 5_cp312 + size: 21765 + timestamp: 1725272382968 +- conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda build_number: 5 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda sha256: d10e93d759931ffb6372b45d65ff34d95c6000c61a07e298d162a3bc2accebb0 md5: 0424ae29b104430108f5218a66db7260 constrains: - python 3.12.* *_cpython + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD size: 6238 timestamp: 1723823388266 -- kind: conda - name: python_abi - version: '3.12' - build: 5_cp312 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.12-5_cp312.conda build_number: 5 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.12-5_cp312.conda sha256: 5ccdad9981753cc4a2d126e356673a21c0cd5b34e209cb8d476a3947d4ad9b39 md5: 62b20f305498284a07dc6c45fd0e5c87 constrains: - python 3.12.* *_cpython + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD size: 6329 timestamp: 1723823366253 -- kind: conda - name: python_abi - version: '3.12' - build: 5_cp312 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-5_cp312.conda build_number: 5 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-5_cp312.conda sha256: 49d624e4b809c799d2bf257b22c23cf3fc4460f5570d9a58e7ad86350aeaa1f4 md5: b76f9b1c862128e56ac7aa8cd2333de9 constrains: - python 3.12.* *_cpython + arch: arm64 + platform: osx license: BSD-3-Clause license_family: BSD size: 6278 timestamp: 1723823099686 -- kind: conda - name: pytz - version: '2024.1' - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda sha256: 1a7d6b233f7e6e3bbcbad054c8fd51e690a67b129a899a056a5e45dd9f00cb41 md5: 3eeeeb9e4827ace8c0c1419c85d590ad depends: @@ -7651,32 +6083,7 @@ packages: license_family: MIT size: 188538 timestamp: 1706886944988 -- kind: conda - name: pyyaml - version: 6.0.2 - build: py312h024a12e_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py312h024a12e_1.conda - sha256: b06f1c15fb39695bbf707ae8fb554b9a77519af577b5556784534c7db10b52e3 - md5: 1ee23620cf46cb15900f70a1300bae55 - depends: - - __osx >=11.0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - - yaml >=0.2.5,<0.3.0a0 - license: MIT - license_family: MIT - size: 187143 - timestamp: 1725456547263 -- kind: conda - name: pyyaml - version: 6.0.2 - build: py312h66e93f0_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py312h66e93f0_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py312h66e93f0_1.conda sha256: a60705971e958724168f2ebbb8ed4853067f1d3f7059843df3903e3092bbcffa md5: 549e5930e768548a89c23f595dac5a95 depends: @@ -7685,17 +6092,13 @@ packages: - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 - yaml >=0.2.5,<0.3.0a0 + arch: x86_64 + platform: linux license: MIT license_family: MIT size: 206553 timestamp: 1725456256213 -- kind: conda - name: pyyaml - version: 6.0.2 - build: py312hb2c0f52_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/pyyaml-6.0.2-py312hb2c0f52_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyyaml-6.0.2-py312hb2c0f52_1.conda sha256: 8c515ebe1e7e85d972d72b75760af9dfac06fd11a9dba7e05c42d69aedbb303c md5: dc5de424f7dbb9772da720dbb81317b2 depends: @@ -7704,58 +6107,61 @@ packages: - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 - yaml >=0.2.5,<0.3.0a0 + arch: aarch64 + platform: linux license: MIT license_family: MIT size: 199141 timestamp: 1725456356043 -- kind: conda - name: pyzmq - version: 26.2.0 - build: py312h2427ae1_3 - build_number: 3 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/pyzmq-26.2.0-py312h2427ae1_3.conda - sha256: cfc4ea87d68b5f0ed64a61f500d5ea0a2310d1f281a4f95afa06c703ea1bdf7d - md5: 1f0779280c3dc1e72cfd86bd1e59791d +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py312h024a12e_1.conda + sha256: b06f1c15fb39695bbf707ae8fb554b9a77519af577b5556784534c7db10b52e3 + md5: 1ee23620cf46cb15900f70a1300bae55 + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - yaml >=0.2.5,<0.3.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 187143 + timestamp: 1725456547263 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.0-py312hbf22597_3.conda + sha256: bc303f9b11e04a515f79cd5ad3bfa0e84b9dfec76552626d6263b38789fe6678 + md5: 746ce19f0829ec3e19c93007b1a224d3 depends: + - __glibc >=2.17,<3.0.a0 - libgcc >=13 - libsodium >=1.0.20,<1.0.21.0a0 - libstdcxx >=13 - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 - zeromq >=4.3.5,<4.4.0a0 + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD - size: 371730 - timestamp: 1728644030875 -- kind: conda - name: pyzmq - version: 26.2.0 - build: py312hbf22597_3 - build_number: 3 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.0-py312hbf22597_3.conda - sha256: bc303f9b11e04a515f79cd5ad3bfa0e84b9dfec76552626d6263b38789fe6678 - md5: 746ce19f0829ec3e19c93007b1a224d3 + size: 378126 + timestamp: 1728642454632 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyzmq-26.2.0-py312h2427ae1_3.conda + sha256: cfc4ea87d68b5f0ed64a61f500d5ea0a2310d1f281a4f95afa06c703ea1bdf7d + md5: 1f0779280c3dc1e72cfd86bd1e59791d depends: - - __glibc >=2.17,<3.0.a0 - libgcc >=13 - libsodium >=1.0.20,<1.0.21.0a0 - libstdcxx >=13 - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 - zeromq >=4.3.5,<4.4.0a0 + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD - size: 378126 - timestamp: 1728642454632 -- kind: conda - name: pyzmq - version: 26.2.0 - build: py312hf8a1cbd_3 - build_number: 3 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.0-py312hf8a1cbd_3.conda + size: 371730 + timestamp: 1728644030875 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.0-py312hf8a1cbd_3.conda sha256: 2e0ca1bb9ab3af5d1f9b38548d65be7097ba0246e7e63c908c9b1323df3f45b5 md5: 7bdaa4c2a84b744ef26c8b2ba65c3d0e depends: @@ -7766,108 +6172,81 @@ packages: - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 - zeromq >=4.3.5,<4.4.0a0 + arch: arm64 + platform: osx license: BSD-3-Clause license_family: BSD size: 361674 timestamp: 1728642457661 -- kind: conda - name: re2 - version: 2024.07.02 - build: h6589ca4_2 - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/re2-2024.07.02-h6589ca4_2.conda - sha256: 4d3799c05f8f662922a0acd129d119774760a3281b883603678e128d1cb307fb - md5: 7a8b4ad8c58a3408ca89d78788c78178 - depends: - - libre2-11 2024.07.02 h07bc746_2 - license: BSD-3-Clause - license_family: BSD - size: 26861 - timestamp: 1735541088455 -- kind: conda - name: re2 - version: 2024.07.02 - build: h9925aae_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/re2-2024.07.02-h9925aae_2.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/re2-2024.07.02-h9925aae_2.conda sha256: d213c44958d49ce7e0d4d5b81afec23640cce5016685dbb2d23571a99caa4474 md5: e84ddf12bde691e8ec894b00ea829ddf depends: - libre2-11 2024.07.02 hbbce691_2 + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD size: 26786 timestamp: 1735541074034 -- kind: conda - name: re2 - version: 2024.07.02 - build: haa97905_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/re2-2024.07.02-haa97905_2.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/re2-2024.07.02-haa97905_2.conda sha256: 040848655df9119bae5a549fb5c8956a5537120859416c1d9d0712b7bac9f12e md5: 1bf0135339b4a7419a198a795d2d4be0 depends: - libre2-11 2024.07.02 h18dbdb1_2 + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD size: 26830 timestamp: 1735540999398 -- kind: conda - name: readline - version: '8.2' - build: h8228510_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/re2-2024.07.02-h6589ca4_2.conda + sha256: 4d3799c05f8f662922a0acd129d119774760a3281b883603678e128d1cb307fb + md5: 7a8b4ad8c58a3408ca89d78788c78178 + depends: + - libre2-11 2024.07.02 h07bc746_2 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 26861 + timestamp: 1735541088455 +- conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda sha256: 5435cf39d039387fbdc977b0a762357ea909a7694d9528ab40f005e9208744d7 md5: 47d31b792659ce70f470b5c82fdfb7a4 depends: - libgcc-ng >=12 - ncurses >=6.3,<7.0a0 + arch: x86_64 + platform: linux license: GPL-3.0-only license_family: GPL size: 281456 timestamp: 1679532220005 -- kind: conda - name: readline - version: '8.2' - build: h8fc344f_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8fc344f_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8fc344f_1.conda sha256: 4c99f7417419734e3797d45bc355e61c26520e111893b0d7087a01a7fbfbe3dd md5: 105eb1e16bf83bfb2eb380a48032b655 depends: - libgcc-ng >=12 - ncurses >=6.3,<7.0a0 + arch: aarch64 + platform: linux license: GPL-3.0-only license_family: GPL size: 294092 timestamp: 1679532238805 -- kind: conda - name: readline - version: '8.2' - build: h92ec313_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h92ec313_1.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h92ec313_1.conda sha256: a1dfa679ac3f6007362386576a704ad2d0d7a02e98f5d0b115f207a2da63e884 md5: 8cbb776a2f641b943d413b3e19df71f4 depends: - ncurses >=6.3,<7.0a0 + arch: arm64 + platform: osx license: GPL-3.0-only license_family: GPL size: 250351 timestamp: 1679532511311 -- kind: conda - name: regex - version: 2024.11.6 - build: py312h66e93f0_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/regex-2024.11.6-py312h66e93f0_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/regex-2024.11.6-py312h66e93f0_0.conda sha256: fcb5687d3ec5fff580b64b8fb649d9d65c999a91a5c3108a313ecdd2de99f06b md5: 647770db979b43f9c9ca25dcfa7dc4e4 depends: @@ -7875,16 +6254,13 @@ packages: - libgcc >=13 - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux license: Python-2.0 license_family: PSF size: 402821 timestamp: 1730952378415 -- kind: conda - name: regex - version: 2024.11.6 - build: py312hb2c0f52_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/regex-2024.11.6-py312hb2c0f52_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/regex-2024.11.6-py312hb2c0f52_0.conda sha256: ec2c416860de29224e447e2031f8686a05476759c17da1f32f61d4307e540ec8 md5: fa8b589107567f532fa1380e66f91776 depends: @@ -7892,16 +6268,13 @@ packages: - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux license: Python-2.0 license_family: PSF size: 398947 timestamp: 1730952477463 -- kind: conda - name: regex - version: 2024.11.6 - build: py312hea69d52_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/regex-2024.11.6-py312hea69d52_0.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/regex-2024.11.6-py312hea69d52_0.conda sha256: dcdec32f2c7dd37986baa692bedf9db126ad34e92e5e9b64f707cba3d04d2525 md5: e73cda1f18846b608284bd784f061eac depends: @@ -7909,18 +6282,13 @@ packages: - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx license: Python-2.0 license_family: PSF size: 366374 timestamp: 1730952427552 -- kind: conda - name: requests - version: 2.32.3 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda sha256: d701ca1136197aa121bbbe0e8c18db6b5c94acbd041c2b43c70e5ae104e1d8ad md5: a9b9368f3701a417eac9edbcae7cb737 depends: @@ -7935,14 +6303,7 @@ packages: license_family: APACHE size: 58723 timestamp: 1733217126197 -- kind: conda - name: rich - version: 13.9.4 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_1.conda sha256: 06a760c5ae572e72e865d5a87e9fe3cc171e1a9c996e63daf3db52ff1a0b4457 md5: 7aed65d4ff222bfb7335997aa40b7da5 depends: @@ -7954,13 +6315,7 @@ 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 +- conda: https://conda.anaconda.org/conda-forge/noarch/rich-toolkit-0.11.3-pyh29332c3_0.conda sha256: e558f8c254a9ff9164d069110da162fc79497d70c60f2c09a5d3d0d7101c5628 md5: 4ba15ae9388b67d09782798347481f69 depends: @@ -7973,45 +6328,34 @@ packages: license_family: MIT size: 17357 timestamp: 1733750834072 -- kind: conda - name: s2n - version: 1.5.10 - build: h5df210e_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/s2n-1.5.10-h5df210e_0.conda - sha256: b5e7a9f4b7b1ec5c5c3661e2defc8b47fab543b05cad6fec78739d8007612464 - md5: 3d3979efcc0f44f3f0cef3de03b296cc - depends: - - libgcc >=13 - - openssl >=3.4.0,<4.0a0 - license: Apache-2.0 - license_family: Apache - size: 353450 - timestamp: 1734415474615 -- kind: conda - name: s2n - version: 1.5.10 - build: hb5b8611_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/s2n-1.5.10-hb5b8611_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/s2n-1.5.10-hb5b8611_0.conda sha256: f6d451821fddc26b93f45e9313e1ea15e09e5ef049d4e137413a5225d2a5dfba md5: 999f3673f2a011f59287f2969e3749e4 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - openssl >=3.4.0,<4.0a0 + arch: x86_64 + platform: linux license: Apache-2.0 license_family: Apache size: 355142 timestamp: 1734415467047 -- kind: conda - name: safetensors - version: 0.5.1 - build: py312h12e396e_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/safetensors-0.5.1-py312h12e396e_0.conda - sha256: 61a4a49bc98a7b529c7c9e2af9be1dc3350b8ea1c78f985e8a051543e8845ffa - md5: 19b54f64e926aca46d0cc2ff0ecf4f34 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/s2n-1.5.10-h5df210e_0.conda + sha256: b5e7a9f4b7b1ec5c5c3661e2defc8b47fab543b05cad6fec78739d8007612464 + md5: 3d3979efcc0f44f3f0cef3de03b296cc + depends: + - libgcc >=13 + - openssl >=3.4.0,<4.0a0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 353450 + timestamp: 1734415474615 +- conda: https://conda.anaconda.org/conda-forge/linux-64/safetensors-0.5.2-py312h12e396e_0.conda + sha256: 98b8dfa5eec083e0b3ace00906a7f7e748b1e2446dca17e87473f43278fcc036 + md5: 999ca9d87d2bb8b4c01e62c755b928cf depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -8019,18 +6363,15 @@ packages: - python_abi 3.12.* *_cp312 constrains: - __glibc >=2.17 + arch: x86_64 + platform: linux license: Apache-2.0 license_family: APACHE - size: 424642 - timestamp: 1736278244485 -- kind: conda - name: safetensors - version: 0.5.1 - build: py312h8cbf658_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/safetensors-0.5.1-py312h8cbf658_0.conda - sha256: ee66da0efb1d6897ad74156cb115277dfb8ca7f6c8bdfb17bd6a6fb205495622 - md5: f91072f99af78ed0c1941ba5d6f30cf8 + size: 424409 + timestamp: 1736383159339 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/safetensors-0.5.2-py312h8cbf658_0.conda + sha256: 3e230060c1366cbaf03f4315b021dfe47f5147f3af88f17975d661c08fe15ad3 + md5: 2c77c961c4e813b1d05122ac4d803d80 depends: - libgcc >=13 - python >=3.12,<3.13.0a0 @@ -8038,18 +6379,15 @@ packages: - python_abi 3.12.* *_cp312 constrains: - __glibc >=2.17 + arch: aarch64 + platform: linux license: Apache-2.0 license_family: APACHE - size: 409549 - timestamp: 1736278357702 -- kind: conda - name: safetensors - version: 0.5.1 - build: py312hcd83bfe_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/safetensors-0.5.1-py312hcd83bfe_0.conda - sha256: e61cbac0c1b38731543a600e2e40c4cc686e5e565f6c9809d5dcc467e2e8f220 - md5: d12e134445366752e52acec1a86c845f + size: 408166 + timestamp: 1736383184569 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/safetensors-0.5.2-py312hcd83bfe_0.conda + sha256: 0aeb3e654095ca0261d560d1fc05912d0e94d547a7dc435d7f4cedeba966d176 + md5: fc0383682805e293eba9b8afc9ad0931 depends: - __osx >=11.0 - python >=3.12,<3.13.0a0 @@ -8057,18 +6395,13 @@ packages: - python_abi 3.12.* *_cp312 constrains: - __osx >=11.0 + arch: arm64 + platform: osx license: Apache-2.0 license_family: APACHE - size: 378562 - timestamp: 1736278448037 -- kind: conda - name: shellingham - version: 1.5.4 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda + size: 378060 + timestamp: 1736383410115 +- conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda sha256: 0557c090913aa63cdbe821dbdfa038a321b488e22bc80196c4b3b1aace4914ef md5: 7c3c2a0f3ebdea2bbc35538d162b43bf depends: @@ -8077,13 +6410,7 @@ packages: license_family: MIT size: 14462 timestamp: 1733301007770 -- kind: conda - name: six - version: 1.17.0 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda sha256: 41db0180680cc67c3fa76544ffd48d6a5679d96f4b71d7498a759e94edc9a2db md5: a451d576819089b0d672f18768be0f65 depends: @@ -8092,63 +6419,44 @@ packages: license_family: MIT size: 16385 timestamp: 1733381032766 -- kind: conda - name: snappy - version: 1.2.1 - build: h8bd8927_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-h8bd8927_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-h8bd8927_1.conda sha256: ec91e86eeb2c6bbf09d51351b851e945185d70661d2ada67204c9a6419d282d3 md5: 3b3e64af585eadfb52bb90b553db5edf depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - libstdcxx >=13 + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD size: 42739 timestamp: 1733501881851 -- kind: conda - name: snappy - version: 1.2.1 - build: h98b9ce2_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-h98b9ce2_1.conda - sha256: 4242f95b215127a006eb664fe26ed5a82df87e90cbdbc7ce7ff4971f0720997f - md5: ded86dee325290da2967a3fea3800eb5 - depends: - - __osx >=11.0 - - libcxx >=18 - license: BSD-3-Clause - license_family: BSD - size: 35857 - timestamp: 1733502172664 -- kind: conda - name: snappy - version: 1.2.1 - build: hd4fb6f5_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-hd4fb6f5_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-hd4fb6f5_1.conda sha256: c4a07ae5def8d55128f25a567a296ef9d7bf99a3bc79d46bd5160c076a5f50af md5: 2fcc6cd1e5550deb509073fd2e6693e1 depends: - libgcc >=13 - libstdcxx >=13 + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD size: 43032 timestamp: 1733501964775 -- kind: conda - name: sniffio - version: 1.3.1 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-h98b9ce2_1.conda + sha256: 4242f95b215127a006eb664fe26ed5a82df87e90cbdbc7ce7ff4971f0720997f + md5: ded86dee325290da2967a3fea3800eb5 + depends: + - __osx >=11.0 + - libcxx >=18 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 35857 + timestamp: 1733502172664 +- conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda sha256: c2248418c310bdd1719b186796ae50a8a77ce555228b6acd32768e2543a15012 md5: bf7a226e58dfb8346c70df36065d86c9 depends: @@ -8157,13 +6465,7 @@ packages: license_family: Apache size: 15019 timestamp: 1733244175724 -- kind: conda - name: sse-starlette - version: 2.2.1 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.2.1-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.2.1-pyhd8ed1ab_0.conda sha256: 3c6a476e7afb702d841e23c61a0c4cc491929d2e39376d329e67e94c40a236cc md5: c1ef6bc13dd2caa4b406fb3cb06c2791 depends: @@ -8174,14 +6476,7 @@ packages: license_family: BSD size: 15324 timestamp: 1735126414893 -- kind: conda - name: starlette - version: 0.41.3 - build: pyha770c72_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyha770c72_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyha770c72_1.conda sha256: b74fc76107487eb26624c01fc55bfab7eed03ae82e003333c86d8a1eeac53672 md5: 0207dac04ae2200701fab697f0aaaac4 depends: @@ -8192,58 +6487,42 @@ packages: license_family: BSD size: 58838 timestamp: 1733344472634 -- kind: conda - name: tk - version: 8.6.13 - build: h194ca79_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda + sha256: e0569c9caa68bf476bead1bed3d79650bb080b532c64a4af7d8ca286c08dea4e + md5: d453b98d9c83e71da0741bb0ff4d76bc + depends: + - libgcc-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 + arch: x86_64 + platform: linux + license: TCL + license_family: BSD + size: 3318875 + timestamp: 1699202167581 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda sha256: 7fa27cc512d3a783f38bd16bbbffc008807372499d5b65d089a8e43bde9db267 md5: f75105e0585851f818e0009dd1dde4dc depends: - libgcc-ng >=12 - libzlib >=1.2.13,<2.0.0a0 + arch: aarch64 + platform: linux license: TCL license_family: BSD size: 3351802 timestamp: 1695506242997 -- kind: conda - name: tk - version: 8.6.13 - build: h5083fa2_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda sha256: 72457ad031b4c048e5891f3f6cb27a53cb479db68a52d965f796910e71a403a8 md5: b50a57ba89c32b62428b71a875291c9b depends: - libzlib >=1.2.13,<2.0.0a0 + arch: arm64 + platform: osx license: TCL license_family: BSD - size: 3145523 - timestamp: 1699202432999 -- kind: conda - name: tk - version: 8.6.13 - build: noxft_h4845f30_101 - build_number: 101 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda - sha256: e0569c9caa68bf476bead1bed3d79650bb080b532c64a4af7d8ca286c08dea4e - md5: d453b98d9c83e71da0741bb0ff4d76bc - depends: - - libgcc-ng >=12 - - libzlib >=1.2.13,<2.0.0a0 - license: TCL - license_family: BSD - size: 3318875 - timestamp: 1699202167581 -- kind: conda - name: tokenizers - version: 0.21.0 - build: py312h8360d73_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.21.0-py312h8360d73_0.conda + size: 3145523 + timestamp: 1699202432999 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.21.0-py312h8360d73_0.conda sha256: 4f504a5e9d77c6d88a8f735c4319429d8bf40b742384f908a2efe0a09acc3cc5 md5: f953aa733207f3d37acf4a3efbedba89 depends: @@ -8256,16 +6535,13 @@ packages: - python_abi 3.12.* *_cp312 constrains: - __glibc >=2.17 + arch: x86_64 + platform: linux license: Apache-2.0 license_family: APACHE size: 2258007 timestamp: 1732734202127 -- kind: conda - name: tokenizers - version: 0.21.0 - build: py312ha0d6ea1_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.21.0-py312ha0d6ea1_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.21.0-py312ha0d6ea1_0.conda sha256: ef0f4d4e2c798b1821187ea0ba4c86484e48abaa0e9a19fe68030fa7ff5dde84 md5: 077f48c9e0c08a30d842e15c51df4143 depends: @@ -8278,16 +6554,13 @@ packages: - python_abi 3.12.* *_cp312 constrains: - __glibc >=2.17 + arch: aarch64 + platform: linux license: Apache-2.0 license_family: APACHE size: 2331194 timestamp: 1732734303196 -- kind: conda - name: tokenizers - version: 0.21.0 - build: py312hf3e4074_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.21.0-py312hf3e4074_0.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.21.0-py312hf3e4074_0.conda sha256: 5d395333fcb22dc611140286c1f2ea8b3fa220a4931c583587cb612238091555 md5: 4c732c74b485ef7ac8ec1c548dd45e8e depends: @@ -8299,49 +6572,40 @@ packages: - python_abi 3.12.* *_cp312 constrains: - __osx >=11.0 + arch: arm64 + platform: osx license: Apache-2.0 license_family: APACHE size: 1931389 timestamp: 1732734727624 -- kind: conda - name: tornado - version: 6.4.2 - build: py312h52516f5_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py312h52516f5_0.conda - sha256: 4c19a544354172b2273553267e734795a6da3c78a04c2d19f8e9e159ca3178bc - md5: e28996d9d2d44d777b7e6fb12f63715b +- conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda + sha256: 062a3a3a37fa8615ce57929ba7e982c76f5a5810bcebd435950f6d6c4147c310 + md5: e417822cb989e80a0d2b1b576fdd1657 depends: + - __glibc >=2.17,<3.0.a0 - libgcc >=13 - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux license: Apache-2.0 license_family: Apache - size: 841662 - timestamp: 1732616934923 -- kind: conda - name: tornado - version: 6.4.2 - build: py312h66e93f0_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda - sha256: 062a3a3a37fa8615ce57929ba7e982c76f5a5810bcebd435950f6d6c4147c310 - md5: e417822cb989e80a0d2b1b576fdd1657 + size: 840414 + timestamp: 1732616043734 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py312h52516f5_0.conda + sha256: 4c19a544354172b2273553267e734795a6da3c78a04c2d19f8e9e159ca3178bc + md5: e28996d9d2d44d777b7e6fb12f63715b depends: - - __glibc >=2.17,<3.0.a0 - libgcc >=13 - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux license: Apache-2.0 license_family: Apache - size: 840414 - timestamp: 1732616043734 -- kind: conda - name: tornado - version: 6.4.2 - build: py312hea69d52_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda + size: 841662 + timestamp: 1732616934923 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda sha256: 964a2705a36c50040c967b18b45b9cc8de3c2aff4af546979a574e0b38e58e39 md5: fb0605888a475d6a380ae1d1a819d976 depends: @@ -8349,18 +6613,13 @@ packages: - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx license: Apache-2.0 license_family: Apache size: 842549 timestamp: 1732616081362 -- kind: conda - name: tqdm - version: 4.67.1 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda sha256: 11e2c85468ae9902d24a27137b6b39b4a78099806e551d390e394a8c34b48e40 md5: 9efbfdc37242619130ea42b1cc4ed861 depends: @@ -8369,14 +6628,7 @@ packages: license: MPL-2.0 or MIT size: 89498 timestamp: 1735661472632 -- kind: conda - name: traitlets - version: 5.14.3 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda sha256: f39a5620c6e8e9e98357507262a7869de2ae8cc07da8b7f84e517c9fd6c2b959 md5: 019a7385be9af33791c989871317e1ed depends: @@ -8385,15 +6637,9 @@ packages: license_family: BSD size: 110051 timestamp: 1733367480074 -- kind: conda - name: transformers - version: 4.47.1 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.1-pyhd8ed1ab_0.conda - sha256: df8238c3cccbb6bb1d5657e6a75977ac0b832ab61155d5e3d8560c1c4f52abeb - md5: 931d66db156680c42c62812d6533cbf7 +- conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.48.0-pyhd8ed1ab_0.conda + sha256: c8dd6d69e4ef67c7d507dec2be4b6964f6ddbe1ce35a822ddf4089505d702f33 + md5: 2c57d4af7b8952484962b40a59cf1537 depends: - datasets !=2.5.0 - filelock @@ -8409,15 +6655,9 @@ packages: - tqdm >=4.27 license: Apache-2.0 license_family: APACHE - size: 3680276 - timestamp: 1734499046193 -- kind: conda - name: typer - version: 0.15.1 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda + size: 3408277 + timestamp: 1736534112195 +- conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda sha256: ef695490e895c2ad552c77ec497b899b09fd4ad4ab07edcf5649f5994cf92a35 md5: 170a0398946d8f5b454e592672b6fc20 depends: @@ -8427,13 +6667,7 @@ packages: license_family: MIT size: 56175 timestamp: 1733408582623 -- kind: conda - name: typer-slim - version: 0.15.1 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda sha256: d4965516f35e0805199de6596c4ac76c4ad3d6b012be35e532102f9e53ecb860 md5: 0218b16f5a1dd569e575a7a6415489db depends: @@ -8448,13 +6682,7 @@ packages: license_family: MIT size: 43592 timestamp: 1733408569554 -- kind: conda - name: typer-slim-standard - version: 0.15.1 - build: hd8ed1ab_0 - subdir: noarch - noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda sha256: f31c56fe98315da8b9ce848256c17e0b9f87896b41a6ccf0c9cc74644dcef20f md5: 4e603c43bfdfc7b533be087c3e070cc9 depends: @@ -8465,14 +6693,8 @@ packages: license_family: MIT size: 49531 timestamp: 1733408570063 -- kind: conda - name: typing-extensions - version: 4.12.2 - build: hd8ed1ab_1 - build_number: 1 - subdir: noarch +- conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda sha256: c8e9c1c467b5f960b627d7adc1c65fece8e929a3de89967e91ef0f726422fd32 md5: b6a408c64b78ec7b779a3e5c7a902433 depends: @@ -8481,14 +6703,7 @@ packages: license_family: PSF size: 10075 timestamp: 1733188758872 -- kind: conda - name: typing_extensions - version: 4.12.2 - build: pyha770c72_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda sha256: 337be7af5af8b2817f115b3b68870208b30c31d3439bec07bfb2d8f4823e3568 md5: d17f13df8b65464ca316cbc000a3cb64 depends: @@ -8497,25 +6712,13 @@ packages: license_family: PSF size: 39637 timestamp: 1733188758212 -- kind: conda - name: tzdata - version: 2024b - build: hc8b5060_0 - subdir: noarch - noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda sha256: 4fde5c3008bf5d2db82f2b50204464314cc3c91c1d953652f7bd01d9e52aefdf md5: 8ac3367aafb1cc0a068483c580af8015 license: LicenseRef-Public-Domain size: 122354 timestamp: 1728047496079 -- kind: conda - name: urllib3 - version: 2.3.0 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda sha256: 114919ffa80c328127dab9c8e7a38f9d563c617691fb81fccb11c1e86763727e md5: 32674f8dbfb7b26410ed580dd3c10a29 depends: @@ -8528,13 +6731,7 @@ packages: license_family: MIT size: 100102 timestamp: 1734859520452 -- kind: conda - name: uvicorn - version: 0.34.0 - build: pyh31011fe_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.34.0-pyh31011fe_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.34.0-pyh31011fe_0.conda sha256: 55c160b0cf9274e2b98bc0f7fcce548bffa8d788bc86aa02801877457040f6fa md5: 5d448feee86e4740498ec8f8eb40e052 depends: @@ -8547,13 +6744,7 @@ packages: license_family: BSD size: 48643 timestamp: 1734293057914 -- kind: conda - name: uvicorn-standard - version: 0.34.0 - build: h31011fe_0 - subdir: noarch - noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.34.0-h31011fe_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.34.0-h31011fe_0.conda sha256: 87e1531e175e75122f9f37608eb953af4c977465ab0ae11283cc01fef954e4ec md5: 32a94143a7f65d76d2d5da37dcb4ed79 depends: @@ -8569,31 +6760,7 @@ packages: license_family: BSD size: 7203 timestamp: 1734293058849 -- kind: conda - name: uvloop - version: 0.21.0 - build: py312h0bf5046_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/uvloop-0.21.0-py312h0bf5046_1.conda - sha256: b1efa77aa4871d7bb09c8dd297fa9bd9070ba7f0f95f2d12ae9cdd31ce8b6b22 - md5: 4f5110253ba80ebf27e55c4ab333880a - depends: - - __osx >=11.0 - - libuv >=1.49.2,<2.0a0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - license: MIT OR Apache-2.0 - size: 544097 - timestamp: 1730214653726 -- kind: conda - name: uvloop - version: 0.21.0 - build: py312h66e93f0_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/uvloop-0.21.0-py312h66e93f0_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/uvloop-0.21.0-py312h66e93f0_1.conda sha256: 9337a80165fcf70b06b9d6ba920dad702260ca966419ae77560a15540e41ab72 md5: 998e481e17c1b6a74572e73b06f2df08 depends: @@ -8602,16 +6769,12 @@ packages: - libuv >=1.49.2,<2.0a0 - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux license: MIT OR Apache-2.0 size: 701355 timestamp: 1730214506716 -- kind: conda - name: uvloop - version: 0.21.0 - build: py312hb2c0f52_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/uvloop-0.21.0-py312hb2c0f52_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/uvloop-0.21.0-py312hb2c0f52_1.conda sha256: 807eede6698bd00a1d739a3e19ee6ae6a03a66d2ddd2ef150f2dfd198c3b0292 md5: d83e107ba16c77aba2feec47b7b666a4 depends: @@ -8620,17 +6783,28 @@ packages: - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux license: MIT OR Apache-2.0 size: 655266 timestamp: 1730214606664 -- kind: conda - name: watchfiles - version: 1.0.3 - build: py312h12e396e_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/watchfiles-1.0.3-py312h12e396e_0.conda - sha256: c89755d8e8f6384b3ba13e41dcabb40bf690c38b9d61512e963129badb1ad332 - md5: b76a5ad00856af6e74da9c3e85fed0cc +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/uvloop-0.21.0-py312h0bf5046_1.conda + sha256: b1efa77aa4871d7bb09c8dd297fa9bd9070ba7f0f95f2d12ae9cdd31ce8b6b22 + md5: 4f5110253ba80ebf27e55c4ab333880a + depends: + - __osx >=11.0 + - libuv >=1.49.2,<2.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: MIT OR Apache-2.0 + size: 544097 + timestamp: 1730214653726 +- conda: https://conda.anaconda.org/conda-forge/linux-64/watchfiles-1.0.4-py312h12e396e_0.conda + sha256: b728f525dcae2c10524f9942255346eba62aee9c820ff269d7dd4f7caffb7ffb + md5: df87129c4cb7afc4a3cbad71a1b9e223 depends: - __glibc >=2.17,<3.0.a0 - anyio >=3.0.0 @@ -8639,18 +6813,14 @@ packages: - python_abi 3.12.* *_cp312 constrains: - __glibc >=2.17 + arch: x86_64 + platform: linux license: MIT - license_family: MIT - size: 410432 - timestamp: 1733998892675 -- kind: conda - name: watchfiles - version: 1.0.3 - build: py312h8cbf658_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/watchfiles-1.0.3-py312h8cbf658_0.conda - sha256: 9be9569c279dc6e7881e9b45fe9f0368218538c660641e2f8b0e023e72a6571c - md5: 3465c1a19634233abc2d1832ac01fd31 + size: 410192 + timestamp: 1736550568524 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/watchfiles-1.0.4-py312h8cbf658_0.conda + sha256: 45193910f6bafc287c784442d173745161b18f96223f0f990a9a744fda753787 + md5: ed958a27e610c31de625e167d4c11a04 depends: - anyio >=3.0.0 - libgcc >=13 @@ -8659,18 +6829,14 @@ packages: - python_abi 3.12.* *_cp312 constrains: - __glibc >=2.17 + arch: aarch64 + platform: linux license: MIT - license_family: MIT - size: 404239 - timestamp: 1733998941045 -- kind: conda - name: watchfiles - version: 1.0.3 - build: py312hcd83bfe_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/watchfiles-1.0.3-py312hcd83bfe_0.conda - sha256: b64b78a7d6384bf72a878256802c783c692fe641ab4b806fd7e9f45e18a5e3b4 - md5: 13b89e1aa72aa773806b1f59ec018b67 + size: 403791 + timestamp: 1736550743174 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/watchfiles-1.0.4-py312hcd83bfe_0.conda + sha256: 84122e3712f2263e12c9d2be75d122eaf2d269801183df4b73aadcb670943b17 + md5: 946eb0208d09b811a671fad9b2831f4e depends: - __osx >=11.0 - anyio >=3.0.0 @@ -8679,16 +6845,12 @@ packages: - python_abi 3.12.* *_cp312 constrains: - __osx >=11.0 + arch: arm64 + platform: osx license: MIT - license_family: MIT - size: 363162 - timestamp: 1733999215646 -- kind: conda - name: websockets - version: '14.1' - build: py312h66e93f0_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/websockets-14.1-py312h66e93f0_0.conda + size: 363822 + timestamp: 1736550859472 +- conda: https://conda.anaconda.org/conda-forge/linux-64/websockets-14.1-py312h66e93f0_0.conda sha256: 5998940f91765ba991cf286c863c20bcb53db92bb976a2b5a714566b86b0e763 md5: a79f7ce618bd0a9f4c00c59a03570fcd depends: @@ -8696,16 +6858,13 @@ packages: - libgcc >=13 - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD size: 242145 timestamp: 1731498716195 -- kind: conda - name: websockets - version: '14.1' - build: py312hb2c0f52_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/websockets-14.1-py312hb2c0f52_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/websockets-14.1-py312hb2c0f52_0.conda sha256: c292a8badcbe4040537e225fbeb237bfaf272808eab060067d965d3da98ccd5c md5: 7e2a0ef2a1a87f88f9745f9c7059186e depends: @@ -8713,16 +6872,13 @@ packages: - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD size: 242912 timestamp: 1731498811466 -- kind: conda - name: websockets - version: '14.1' - build: py312hea69d52_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/websockets-14.1-py312hea69d52_0.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/websockets-14.1-py312hea69d52_0.conda sha256: 98fb04a1a0f53dc604378f94b5795d0b8e462fee01bf0a887cb34d0efdf5d21f md5: 89b79a9baa7db46ce21f5738a5a3dfda depends: @@ -8730,16 +6886,13 @@ packages: - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx license: BSD-3-Clause license_family: BSD size: 243131 timestamp: 1731498944076 -- kind: conda - name: wrapt - version: 1.17.0 - build: py312h66e93f0_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.17.0-py312h66e93f0_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.17.0-py312h66e93f0_0.conda sha256: a6fc0f4e90643d0c1fd4aab669b6a79f44a305a5474256f6f2da3354d2310fb4 md5: ddbe3bb0e1356cb9074dd848570694f9 depends: @@ -8747,16 +6900,13 @@ packages: - libgcc >=13 - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux license: BSD-2-Clause license_family: BSD size: 63807 timestamp: 1732523690292 -- kind: conda - name: wrapt - version: 1.17.0 - build: py312hb2c0f52_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/wrapt-1.17.0-py312hb2c0f52_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/wrapt-1.17.0-py312hb2c0f52_0.conda sha256: b9aa760a987ccc6bc9c61f57badba6798d9a3dcbd0814e5fb8df6d8d2935af73 md5: 120d5d1c05386d8ce3efd65a4c86431f depends: @@ -8764,16 +6914,13 @@ packages: - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux license: BSD-2-Clause license_family: BSD size: 64783 timestamp: 1732523806 -- kind: conda - name: wrapt - version: 1.17.0 - build: py312hea69d52_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/wrapt-1.17.0-py312hea69d52_0.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/wrapt-1.17.0-py312hea69d52_0.conda sha256: 0fb35c3d1642f9f47db87bdb33148f88ef19a3af1eb0ee99b5491551c57269c7 md5: 73414acdb779a8694a14527865b4357a depends: @@ -8781,185 +6928,143 @@ packages: - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx license: BSD-2-Clause license_family: BSD size: 61043 timestamp: 1732523852129 -- kind: conda - name: xorg-libxau - version: 1.0.12 - build: h5505292_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxau-1.0.12-h5505292_0.conda - sha256: f33e6f013fc36ebc200f09ddead83468544cb5c353a3b50499b07b8c34e28a8d - md5: 50901e0764b7701d8ed7343496f4f301 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-hb9d3cd8_0.conda + sha256: ed10c9283974d311855ae08a16dfd7e56241fac632aec3b92e3cfe73cff31038 + md5: f6ebe2cb3f82ba6c057dde5d9debe4f7 depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux license: MIT license_family: MIT - size: 13593 - timestamp: 1734229104321 -- kind: conda - name: xorg-libxau - version: 1.0.12 - build: h86ecc28_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxau-1.0.12-h86ecc28_0.conda + size: 14780 + timestamp: 1734229004433 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxau-1.0.12-h86ecc28_0.conda sha256: 7829a0019b99ba462aece7592d2d7f42e12d12ccd3b9614e529de6ddba453685 md5: d5397424399a66d33c80b1f2345a36a6 depends: - libgcc >=13 + arch: aarch64 + platform: linux license: MIT license_family: MIT size: 15873 timestamp: 1734230458294 -- kind: conda - name: xorg-libxau - version: 1.0.12 - build: hb9d3cd8_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-hb9d3cd8_0.conda - sha256: ed10c9283974d311855ae08a16dfd7e56241fac632aec3b92e3cfe73cff31038 - md5: f6ebe2cb3f82ba6c057dde5d9debe4f7 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxau-1.0.12-h5505292_0.conda + sha256: f33e6f013fc36ebc200f09ddead83468544cb5c353a3b50499b07b8c34e28a8d + md5: 50901e0764b7701d8ed7343496f4f301 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 13593 + timestamp: 1734229104321 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb9d3cd8_0.conda + sha256: 6b250f3e59db07c2514057944a3ea2044d6a8cdde8a47b6497c254520fade1ee + md5: 8035c64cb77ed555e3f150b7b3972480 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 + arch: x86_64 + platform: linux license: MIT license_family: MIT - size: 14780 - timestamp: 1734229004433 -- kind: conda - name: xorg-libxdmcp - version: 1.1.5 - build: h57736b2_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxdmcp-1.1.5-h57736b2_0.conda + size: 19901 + timestamp: 1727794976192 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxdmcp-1.1.5-h57736b2_0.conda sha256: efcc150da5926cf244f757b8376d96a4db78bc15b8d90ca9f56ac6e75755971f md5: 25a5a7b797fe6e084e04ffe2db02fc62 depends: - libgcc >=13 + arch: aarch64 + platform: linux license: MIT license_family: MIT size: 20615 timestamp: 1727796660574 -- kind: conda - name: xorg-libxdmcp - version: 1.1.5 - build: hb9d3cd8_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb9d3cd8_0.conda - sha256: 6b250f3e59db07c2514057944a3ea2044d6a8cdde8a47b6497c254520fade1ee - md5: 8035c64cb77ed555e3f150b7b3972480 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - license: MIT - license_family: MIT - size: 19901 - timestamp: 1727794976192 -- kind: conda - name: xorg-libxdmcp - version: 1.1.5 - build: hd74edd7_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxdmcp-1.1.5-hd74edd7_0.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxdmcp-1.1.5-hd74edd7_0.conda sha256: 9939a166d780700d81023546759102b33fdc2c5f11ef09f5f66c77210fd334c8 md5: 77c447f48cab5d3a15ac224edb86a968 depends: - __osx >=11.0 + arch: arm64 + platform: osx license: MIT license_family: MIT size: 18487 timestamp: 1727795205022 -- kind: conda - name: xxhash - version: 0.8.2 - build: h31becfc_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/xxhash-0.8.2-h31becfc_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/xxhash-0.8.2-hd590300_0.conda + sha256: 6fe74a8fd84ab0dc25e4dc3e0c22388dd8accb212897a208b14fe5d4fbb8fc2f + md5: f08fb5c89edfc4aadee1c81d4cfb1fa1 + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + size: 97691 + timestamp: 1689951608120 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xxhash-0.8.2-h31becfc_0.conda sha256: 4c526aed70b579d80e5c20d32130b6bc8bde59b3250d43c2b5269755f4da8a9b md5: bb9faf6857108a9f62ebb4dab6ef05da depends: - libgcc-ng >=12 + arch: aarch64 + platform: linux license: BSD-2-Clause license_family: BSD size: 102442 timestamp: 1689951682147 -- kind: conda - name: xxhash - version: 0.8.2 - build: hb547adb_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/xxhash-0.8.2-hb547adb_0.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/xxhash-0.8.2-hb547adb_0.conda sha256: a70f59f7221ee72c45b39a6b36a33eb9c717ba01921cce1a3c361a4676979a2e md5: 144cd3b88706507f332f5eb5fb83a33b + arch: arm64 + platform: osx license: BSD-2-Clause license_family: BSD size: 97593 timestamp: 1689951969732 -- kind: conda - name: xxhash - version: 0.8.2 - build: hd590300_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/xxhash-0.8.2-hd590300_0.conda - sha256: 6fe74a8fd84ab0dc25e4dc3e0c22388dd8accb212897a208b14fe5d4fbb8fc2f - md5: f08fb5c89edfc4aadee1c81d4cfb1fa1 - depends: - - libgcc-ng >=12 - license: BSD-2-Clause - license_family: BSD - size: 97691 - timestamp: 1689951608120 -- kind: conda - name: yaml - version: 0.2.5 - build: h3422bc3_2 - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 - sha256: 93181a04ba8cfecfdfb162fc958436d868cc37db504c58078eab4c1a3e57fbb7 - md5: 4bb3f014845110883a3c5ee811fd84b4 - license: MIT - license_family: MIT - size: 88016 - timestamp: 1641347076660 -- kind: conda - name: yaml - version: 0.2.5 - build: h7f98852_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 sha256: a4e34c710eeb26945bdbdaba82d3d74f60a78f54a874ec10d373811a5d217535 md5: 4cb3ad778ec2d5a7acbdf254eb1c42ae depends: - libgcc-ng >=9.4.0 + arch: x86_64 + platform: linux license: MIT license_family: MIT size: 89141 timestamp: 1641346969816 -- kind: conda - name: yaml - version: 0.2.5 - build: hf897c2e_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/yaml-0.2.5-hf897c2e_2.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yaml-0.2.5-hf897c2e_2.tar.bz2 sha256: 8bc601d6dbe249eba44b3c456765265cd8f42ef1e778f8df9b0c9c88b8558d7e md5: b853307650cb226731f653aa623936a4 depends: - libgcc-ng >=9.4.0 + arch: aarch64 + platform: linux license: MIT license_family: MIT size: 92927 timestamp: 1641347626613 -- kind: conda - name: yarl - version: 1.18.3 - build: py312h66e93f0_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.18.3-py312h66e93f0_0.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 + sha256: 93181a04ba8cfecfdfb162fc958436d868cc37db504c58078eab4c1a3e57fbb7 + md5: 4bb3f014845110883a3c5ee811fd84b4 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 88016 + timestamp: 1641347076660 +- conda: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.18.3-py312h66e93f0_0.conda sha256: a0d93c3bef723e384cff8a29a82a2c6b7a73b39328088f3a2d97c901f56e9a63 md5: 91df2efaa08730416bec2a4502309275 depends: @@ -8970,16 +7075,13 @@ packages: - propcache >=0.2.1 - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux license: Apache-2.0 license_family: Apache size: 151393 timestamp: 1733428897813 -- kind: conda - name: yarl - version: 1.18.3 - build: py312hb2c0f52_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.18.3-py312hb2c0f52_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.18.3-py312hb2c0f52_0.conda sha256: 470b5b0f3ac89acd143095281167dc2ac1a56d4fa22e1794bd8f3b00bb604540 md5: 0b3c640697bca798d0ab428f530ed24c depends: @@ -8990,16 +7092,13 @@ packages: - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux license: Apache-2.0 license_family: Apache size: 150004 timestamp: 1733429056665 -- kind: conda - name: yarl - version: 1.18.3 - build: py312hea69d52_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.18.3-py312hea69d52_0.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.18.3-py312hea69d52_0.conda sha256: 69c7863809e11bc90c0d935c16e7f151dcc925add08b3894f06059263a8cb9ba md5: f32f9b16361866a62d6e061fcd7eb400 depends: @@ -9010,17 +7109,13 @@ packages: - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx license: Apache-2.0 license_family: Apache size: 141556 timestamp: 1733429104990 -- kind: conda - name: zeromq - version: 4.3.5 - build: h3b0a872_7 - build_number: 7 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda sha256: a4dc72c96848f764bb5a5176aa93dd1e9b9e52804137b99daeebba277b31ea10 md5: 3947a35e916fcc6b9825449affbf4214 depends: @@ -9029,17 +7124,13 @@ packages: - libgcc >=13 - libsodium >=1.0.20,<1.0.21.0a0 - libstdcxx >=13 + arch: x86_64 + platform: linux license: MPL-2.0 license_family: MOZILLA size: 335400 timestamp: 1731585026517 -- kind: conda - name: zeromq - version: 4.3.5 - build: h5efb499_7 - build_number: 7 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/zeromq-4.3.5-h5efb499_7.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zeromq-4.3.5-h5efb499_7.conda sha256: a6003096dc0570a86492040ba32b04ce7662b159600be2252b7a0dfb9414e21c md5: f2f3282559a4b87b7256ecafb4610107 depends: @@ -9047,17 +7138,13 @@ packages: - libgcc >=13 - libsodium >=1.0.20,<1.0.21.0a0 - libstdcxx >=13 + arch: aarch64 + platform: linux license: MPL-2.0 license_family: MOZILLA size: 371419 timestamp: 1731589490850 -- kind: conda - name: zeromq - version: 4.3.5 - build: hc1bb282_7 - build_number: 7 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda sha256: 9e585569fe2e7d3bea71972cd4b9f06b1a7ab8fa7c5139f92a31cbceecf25a8a md5: f7e6b65943cb73bce0143737fded08f1 depends: @@ -9065,18 +7152,13 @@ packages: - krb5 >=1.21.3,<1.22.0a0 - libcxx >=18 - libsodium >=1.0.20,<1.0.21.0a0 + arch: arm64 + platform: osx license: MPL-2.0 license_family: MOZILLA size: 281565 timestamp: 1731585108039 -- kind: conda - name: zipp - version: 3.21.0 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda sha256: 567c04f124525c97a096b65769834b7acb047db24b15a56888a322bf3966c3e1 md5: 0c3cc595284c5e8f0f9900a9b228a332 depends: @@ -9085,34 +7167,24 @@ packages: license_family: MIT size: 21809 timestamp: 1732827613585 -- kind: conda - name: zstandard - version: 0.23.0 - build: py312h15fbf35_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py312h15fbf35_1.conda - sha256: d00ca25c1e28fd31199b26a94f8c96574475704a825d244d7a6351ad3745eeeb - md5: a4cde595509a7ad9c13b1a3809bcfe51 +- conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312hef9b889_1.conda + sha256: b97015e146437283f2213ff0e95abdc8e2480150634d81fbae6b96ee09f5e50b + md5: 8b7069e9792ee4e5b4919a7a306d2e67 depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 - cffi >=1.11 + - libgcc >=13 - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 - zstd >=1.5.6,<1.5.7.0a0 - zstd >=1.5.6,<1.6.0a0 + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD - size: 330788 - timestamp: 1725305806565 -- kind: conda - name: zstandard - version: 0.23.0 - build: py312hb698573_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/zstandard-0.23.0-py312hb698573_1.conda + size: 419552 + timestamp: 1725305670210 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstandard-0.23.0-py312hb698573_1.conda sha256: 2681c2a249752bdc7978e59ee2f34fcdfcbfda80029b84b8e5fec8dbc9e3af25 md5: ffcb8e97e62af42075e0e5f46bb9856e depends: @@ -9123,74 +7195,63 @@ packages: - python_abi 3.12.* *_cp312 - zstd >=1.5.6,<1.5.7.0a0 - zstd >=1.5.6,<1.6.0a0 + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD size: 392496 timestamp: 1725305808244 -- kind: conda - name: zstandard - version: 0.23.0 - build: py312hef9b889_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312hef9b889_1.conda - sha256: b97015e146437283f2213ff0e95abdc8e2480150634d81fbae6b96ee09f5e50b - md5: 8b7069e9792ee4e5b4919a7a306d2e67 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py312h15fbf35_1.conda + sha256: d00ca25c1e28fd31199b26a94f8c96574475704a825d244d7a6351ad3745eeeb + md5: a4cde595509a7ad9c13b1a3809bcfe51 depends: - - __glibc >=2.17,<3.0.a0 + - __osx >=11.0 - cffi >=1.11 - - libgcc >=13 - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 - zstd >=1.5.6,<1.5.7.0a0 - zstd >=1.5.6,<1.6.0a0 + arch: arm64 + platform: osx license: BSD-3-Clause license_family: BSD - size: 419552 - timestamp: 1725305670210 -- kind: conda - name: zstd - version: 1.5.6 - build: h02f22dd_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.6-h02f22dd_0.conda - sha256: 484f9d0722c77685ae379fbff3ccd662af9ead7e59eb39cd6d0c677cdf25ff6c - md5: be8d5f8cf21aed237b8b182ea86b3dd6 + size: 330788 + timestamp: 1725305806565 +- conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda + sha256: c558b9cc01d9c1444031bd1ce4b9cff86f9085765f17627a6cd85fc623c8a02b + md5: 4d056880988120e29d75bfff282e0f45 depends: - libgcc-ng >=12 - libstdcxx-ng >=12 - libzlib >=1.2.13,<2.0.0a0 + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD - size: 539937 - timestamp: 1714723130243 -- kind: conda - name: zstd - version: 1.5.6 - build: ha6fb4c9_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda - sha256: c558b9cc01d9c1444031bd1ce4b9cff86f9085765f17627a6cd85fc623c8a02b - md5: 4d056880988120e29d75bfff282e0f45 + size: 554846 + timestamp: 1714722996770 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.6-h02f22dd_0.conda + sha256: 484f9d0722c77685ae379fbff3ccd662af9ead7e59eb39cd6d0c677cdf25ff6c + md5: be8d5f8cf21aed237b8b182ea86b3dd6 depends: - libgcc-ng >=12 - libstdcxx-ng >=12 - libzlib >=1.2.13,<2.0.0a0 + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD - size: 554846 - timestamp: 1714722996770 -- kind: conda - name: zstd - version: 1.5.6 - build: hb46c0d2_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.6-hb46c0d2_0.conda + size: 539937 + timestamp: 1714723130243 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.6-hb46c0d2_0.conda sha256: 2d4fd1ff7ee79cd954ca8e81abf11d9d49954dd1fef80f27289e2402ae9c2e09 md5: d96942c06c3e84bfcc5efb038724a7fd depends: - __osx >=11.0 - libzlib >=1.2.13,<2.0.0a0 + arch: arm64 + platform: osx license: BSD-3-Clause license_family: BSD size: 405089 From bb2a0ac93b4efa3be9d08bec02244251c160a521 Mon Sep 17 00:00:00 2001 From: Lukas Hermann <1734032+lsh@users.noreply.github.com> Date: Fri, 10 Jan 2025 15:12:46 -0800 Subject: [PATCH 187/509] [stdlib] Set up print for AMD GPUs This PR wires up `print` so that it works on AMD GPUs. Notably, this PR does _not_ implement `_printf` for AMD GPUs since we solve formatting with our type system rather than through C format strings. MODULAR_ORIG_COMMIT_REV_ID: edb67600cec2b10c9d04219894283b70f58075b0 --- stdlib/src/builtin/file_descriptor.mojo | 8 +- stdlib/src/builtin/io.mojo | 10 +- stdlib/src/sys/_amdgpu.mojo | 973 ++++++++++++++++++++++++ stdlib/src/sys/intrinsics.mojo | 29 + stdlib/src/utils/write.mojo | 4 +- 5 files changed, 1013 insertions(+), 11 deletions(-) create mode 100644 stdlib/src/sys/_amdgpu.mojo diff --git a/stdlib/src/builtin/file_descriptor.mojo b/stdlib/src/builtin/file_descriptor.mojo index fef115e471..beed667c63 100644 --- a/stdlib/src/builtin/file_descriptor.mojo +++ b/stdlib/src/builtin/file_descriptor.mojo @@ -24,7 +24,8 @@ f.close() """ from sys.ffi import external_call -from sys.info import is_gpu +from sys.info import is_nvidia_gpu, is_amd_gpu +from sys._amdgpu import printf_begin, printf_append_string_n from builtin.io import _printf from memory import UnsafePointer, Span @@ -67,8 +68,11 @@ struct FileDescriptor(Writer): var len_bytes = len(bytes) @parameter - if is_gpu(): + if is_nvidia_gpu(): _printf["%*s"](len_bytes, bytes.unsafe_ptr()) + elif is_amd_gpu(): + var msg = printf_begin() + _ = printf_append_string_n(msg, bytes, is_last=True) else: written = external_call["write", Int32]( self.value, bytes.unsafe_ptr(), len(bytes) diff --git a/stdlib/src/builtin/io.mojo b/stdlib/src/builtin/io.mojo index 4e4c4afff6..fc77581cbd 100644 --- a/stdlib/src/builtin/io.mojo +++ b/stdlib/src/builtin/io.mojo @@ -178,7 +178,6 @@ fn _printf[ fmt.unsafe_cstr_ptr(), Pointer.address_of(loaded_pack) ) elif is_amd_gpu(): - # constrained[False, "_printf on AMDGPU is not implemented"]() pass else: with _fdopen(file) as fd: @@ -269,12 +268,9 @@ fn print[ file: The output stream. """ - # TODO(MSTDL-1027): Print on AMD GPUs is not implemented yet. - @parameter - if is_amd_gpu(): - return - - write_buffered[buffer_size=4096](file, values, sep=sep, end=end) + write_buffered[buffer_size = 512 if is_amd_gpu() else 4096]( + file, values, sep=sep, end=end + ) @parameter if not is_gpu(): diff --git a/stdlib/src/sys/_amdgpu.mojo b/stdlib/src/sys/_amdgpu.mojo new file mode 100644 index 0000000000..351476d78a --- /dev/null +++ b/stdlib/src/sys/_amdgpu.mojo @@ -0,0 +1,973 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2024, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from memory import UnsafePointer, Span +from memory.pointer import _GPUAddressSpace +from os.atomic import Atomic, _compare_exchange_weak_integral_impl +from sys.intrinsics import ( + lane_id, + readfirstlane, + sendmsg, + implicitarg_ptr, + ballot, +) +from time import sleep +from collections import InlineArray +from utils import StaticTuple + +# NOTE: MOST OF THE CODE HERE IS ADAPTED FROM +# AMD'S `device-libs`. +# It is important that the ABI matches up! +# https://github.com/ROCm/llvm-project/tree/656552edc693e2bb4abc9258399c39d190fce2b3/amd/device-libs + +# ===-----------------------------------------------------------------------===# +# HSA Queue Ops +# ===-----------------------------------------------------------------------===# + +# Matches the ABI of: +# https://github.com/ROCm/llvm-project/blob/656552edc693e2bb4abc9258399c39d190fce2b3/amd/device-libs/ockl/inc/amd_hsa_signal.h#L50 +alias amd_signal_kind64_t = Int64 + + +# Must match the ABI of: +# https://github.com/ROCm/llvm-project/blob/656552edc693e2bb4abc9258399c39d190fce2b3/amd/device-libs/ockl/inc/amd_hsa_signal.h#L61 +@value +struct amd_signal_t: + var kind: amd_signal_kind64_t + var value: UInt64 + var event_mailbox_ptr: UInt64 + var event_id: UInt32 + var reserved1: UInt32 + var start_ts: UInt64 + var end_ts: UInt64 + var reserved2: UInt64 + var reserved3: InlineArray[UInt32, 2] + + +@always_inline +fn update_mbox(sig: UnsafePointer[amd_signal_t]): + var mb = UnsafePointer.address_of(sig[].event_mailbox_ptr).bitcast[ + UnsafePointer[UInt64] + ]()[] + if mb: + var id = sig[].event_id.cast[DType.uint64]() + Atomic.store(mb, id) + sendmsg(1 | (0 << 4), readfirstlane(id.cast[DType.int32]()) & 0xFF) + + +@always_inline +fn hsa_signal_add(sig: UInt64, value: UInt64): + var s = UnsafePointer.address_of(sig).bitcast[ + UnsafePointer[amd_signal_t] + ]()[] + _ = Atomic._fetch_add(UnsafePointer.address_of(s[].value), value) + update_mbox(s) + + +# ===-----------------------------------------------------------------------===# +# Services +# ===-----------------------------------------------------------------------===# + + +# Matches the values described in: +# https://github.com/ROCm/llvm-project/blob/656552edc693e2bb4abc9258399c39d190fce2b3/amd/device-libs/ockl/src/services.cl#L21 +struct ServiceId: + alias reserved = 0 + alias function_call = 1 + alias printf = 2 + alias fprintf = Self.printf + alias devmem = 3 + alias sanitizer = 4 + + +# Matches the values described in: +# https://github.com/ROCm/llvm-project/blob/656552edc693e2bb4abc9258399c39d190fce2b3/amd/device-libs/ockl/src/services.cl#L87 +struct DescriptorOffset: + alias flag_begin = 0 + alias flag_end = 1 + alias reserved0 = 2 + alias len = 5 + alias id = 8 + + +# Matches the values described in: +# https://github.com/ROCm/llvm-project/blob/656552edc693e2bb4abc9258399c39d190fce2b3/amd/device-libs/ockl/src/services.cl#L95 +struct DescriptorWidth: + alias flag_begin = 1 + alias flag_end = 1 + alias reserved0 = 3 + alias len = 3 + alias id = 56 + + +@always_inline +fn msg_set_len(pd: UInt64, len: UInt32) -> UInt64: + var reset_mask = ~( + ((UInt64(1) << DescriptorWidth.len) - 1) << DescriptorOffset.len + ) + return (pd & reset_mask) | ( + len.cast[DType.uint64]() << DescriptorOffset.len + ) + + +@always_inline +fn msg_set_begin_flag(pd: UInt64) -> UInt64: + return pd | (UInt64(1) << DescriptorOffset.flag_begin) + + +@always_inline +fn msg_reset_begin_flag(pd: UInt64) -> UInt64: + return pd & (~(UInt64(1) << DescriptorOffset.flag_begin)) + + +@always_inline +fn msg_get_end_flag(pd: UInt64) -> UInt64: + return pd & (UInt64(1) << DescriptorOffset.flag_end) + + +@always_inline +fn msg_reset_end_flag(pd: UInt64) -> UInt64: + return pd & (~(UInt64(1) << DescriptorOffset.flag_end)) + + +@always_inline +fn msg_set_end_flag(pd: UInt64) -> UInt64: + return pd | (UInt64(1) << DescriptorOffset.flag_end) + + +fn append_bytes( + service_id: UInt32, + msg_desc: UInt64, + mut data: Span[UInt8], +) -> (UInt64, UInt64): + var msg_desc_ = msg_set_len(msg_desc, (len(data) + 7) // 8) + + @parameter + @always_inline + fn pack_uint64() -> UInt64: + var arg = UInt64(0) + if len(data) >= 8: + arg = ( + data[0].cast[DType.uint64]() + | (data[1].cast[DType.uint64]() << 8) + | (data[2].cast[DType.uint64]() << 16) + | (data[3].cast[DType.uint64]() << 24) + | (data[4].cast[DType.uint64]() << 32) + | (data[5].cast[DType.uint64]() << 40) + | (data[6].cast[DType.uint64]() << 48) + | (data[7].cast[DType.uint64]() << 56) + ) + data = data[8:] + else: + var ii = 0 + for byte in data: + arg |= byte[].cast[DType.uint64]() << (ii * 8) + ii += 1 + data = data[0:0] + return arg + + var arg1 = pack_uint64() + var arg2 = pack_uint64() + var arg3 = pack_uint64() + var arg4 = pack_uint64() + var arg5 = pack_uint64() + var arg6 = pack_uint64() + var arg7 = pack_uint64() + return hostcall( + service_id, + msg_desc_, + arg1, + arg2, + arg3, + arg4, + arg5, + arg6, + arg7, + ) + + +fn message_append_bytes( + service_id: UInt32, msg_desc: UInt64, data: Span[UInt8] +) -> (UInt64, UInt64): + """ + Append an array of bytes to a message. + + Args: + service_id: Identifier for the target host-side service. + msg_desc: Message descriptor for a new or existing message. + data: Span with an array of bytes. + + Returns: + Values depend on the state of the message. + + The function can transmit a byte array of arbitrary length, but + during transmission, the array is padded with zeroes until the + length is a multiple of eight bytes. Only the array contents are + transmitted, and not the length. + + If the END flag is set, the function returns two long values + received from the host message handler. Otherwise, the first + return value is the message descriptor to be used for a subsequent + message call, while the second return value is not defined. + + """ + var data_ = data + var end_flag = msg_get_end_flag(msg_desc) + var retval = (UInt64(0), UInt64(0)) + retval[0] = msg_reset_end_flag(msg_desc) + + while True: + var prev_len = len(data_) + # We can only send 7 packed UInt64s per message + # Therefore, if the length is greater than 56, + # we need to take a 56 byte == (7 * sizeof[UInt64]()) + # chunk to process. + if len(data_) > 56: + prev_len = 56 + else: + retval[0] |= end_flag + var d = data_[:prev_len] + retval = append_bytes(service_id, retval[0], d) + data_ = data_[prev_len:] + if not data_: + break + + return retval + + +@always_inline +fn message_append_args( + service_id: UInt32, + msg_desc: UInt64, + num_args: UInt32, + arg0: UInt64, + arg1: UInt64, + arg2: UInt64, + arg3: UInt64, + arg4: UInt64, + arg5: UInt64, + arg6: UInt64, +) -> (UInt64, UInt64): + """ + Append up to seven ulong values to a message. + + Args: + service_id: Identifier for the target host-side service. + msg_desc: Message descriptor for a new or existing message. + num_args: Number of arguments to be appended (maximum seven). + arg0: Argument to be appended. + arg1: Argument to be appended. + arg2: Argument to be appended. + arg3: Argument to be appended. + arg4: Argument to be appended. + arg5: Argument to be appended. + arg6: Argument to be appended. + + Returns: + Values depend on the state of the message. + + Only the first num_args arguments are appended to the + message. The remaining arguments are ignored. Behaviour is + undefined if num_args is greater then seven. + + If the END flag is set, the function returns two uint64_t values + received from the host message handler. Otherwise, the first + return value is the message descriptor to be used for a subsequent + message call, while the second return value is not defined. + """ + var msg_desc_ = msg_set_len(msg_desc, num_args) + + return hostcall( + service_id, + msg_desc_, + arg0, + arg1, + arg2, + arg3, + arg4, + arg5, + arg6, + ) + + +# ===-----------------------------------------------------------------------===# +# Serivces - printf +# ===-----------------------------------------------------------------------===# + + +# Matches the values described in: +# https://github.com/ROCm/llvm-project/blob/656552edc693e2bb4abc9258399c39d190fce2b3/amd/device-libs/ockl/src/services.cl#L243 +@value +struct FprintfCtrl: + alias stdout = 0 + alias stderr = 1 + + +@always_inline +fn begin_fprintf(flags: UInt32) -> UInt64: + # The two standard output streams stderr and stdout are indicated + # using the lowest bits in the control qword. For now, all other + # bits are required to be zero. + var msg_desc = msg_set_begin_flag(0) + var control = flags.cast[DType.uint64]() + + var retval = message_append_args( + ServiceId.fprintf, + msg_desc, + 1, # num args + control, + 0, + 0, + 0, + 0, + 0, + 0, + ) + return retval[0] + + +@always_inline +fn fprintf_stdout_begin() -> UInt64: + """ + Begin a new fprintf message for stdout. + Returns: + Message descriptor for a new printf invocation. + """ + return begin_fprintf(0) + + +@always_inline +fn fprintf_stderr_begin() -> UInt64: + """ + Begin a new fprintf message for stderr. + + Returns: + Message descriptor for a new printf invocation. + """ + return begin_fprintf(FprintfCtrl.stderr) + + +@always_inline +fn fprintf_append_args( + msg_desc: UInt64, + num_args: UInt32, + value0: UInt64, + value1: UInt64, + value2: UInt64, + value3: UInt64, + value4: UInt64, + value5: UInt64, + value6: UInt64, + is_last: Int32, +) -> UInt64: + """ + Append up to seven arguments to the fprintf message. + + Args: + msg_desc: Message descriptor for the current fprintf. + num_args: Number of arguments to be appended (maximum seven). + value0: The argument values to be appended. + value1: The argument values to be appended. + value2: The argument values to be appended. + value3: The argument values to be appended. + value4: The argument values to be appended. + value5: The argument values to be appended. + value6: The argument values to be appended. + is_last: If non-zero, this causes the fprintf to be completed. + + Returns: + Value depends on is_last. + + Only the first num_args arguments are appended to the + message. The remaining arguments are ignored. Behaviour is + undefined if num_args is greater then seven. + + If is_last is zero, the function returns a message desciptor that + must be used by a subsequent call to any __ockl_fprintf* + function. If is_last is non-zero, the function causes the current + fprintf to be completed on the host-side, and returns the value + returned by that fprintf. + + """ + var msg_desc_ = msg_desc + if is_last: + msg_desc_ = msg_set_end_flag(msg_desc_) + + var retval = message_append_args( + ServiceId.fprintf, + msg_desc_, + num_args, + value0, + value1, + value2, + value3, + value4, + value5, + value6, + ) + return retval[0] + + +@always_inline +fn fprintf_append_string_n( + msg_desc: UInt64, data: Span[UInt8], is_last: Bool +) -> UInt64: + """ + Append a null-terminated string to the fprintf message. + + Args: + msg_desc: Message descriptor for the current fprintf. + data: Span with the bytes of the string, including null terminator. + is_last: If non-zero, this causes the fprintf to be completed. + + Returns: + Value depends on is_last. + + The function appends a single null-terminated string to a current + fprintf message, including the final null character. The host-side + can use the bytes as a null-terminated string in place, without + having to first copy the string and then append the null + terminator. + + length itself is not transmitted. Behaviour is undefined if + length does not include the final null character. data may + be a null pointer, in which case, length is ignored and a single + zero is transmitted. This makes the nullptr indistinguishable from + an empty string to the host-side receiver. + + The call to message_append_args() ensures that during + transmission, the string is null-padded to a multiple of eight. + + If is_last is zero, the function returns a message desciptor that + must be used by a subsequent call to any __ockl_fprintf* + function. If is_last is non-zero, the function causes the current + fprintf to be completed on the host-side, and returns the value + returned by that fprintf. + + """ + var retval = UInt64(0), UInt64(0) + var msg_desc_ = msg_desc + + if is_last: + msg_desc_ = msg_set_end_flag(msg_desc_) + + if not data: + retval = message_append_args( + ServiceId.fprintf, + msg_desc_, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ) + + return retval[0] + retval = message_append_bytes(ServiceId.fprintf, msg_desc_, data) + + return retval[0] + + +@always_inline +fn printf_begin() -> UInt64: + return fprintf_stdout_begin() + + +@always_inline +fn printf_append_args( + msg_desc: UInt64, + num_args: UInt32, + value0: UInt64 = 0, + value1: UInt64 = 0, + value2: UInt64 = 0, + value3: UInt64 = 0, + value4: UInt64 = 0, + value5: UInt64 = 0, + value6: UInt64 = 0, + is_last: Int32 = 0, +) -> UInt64: + return fprintf_append_args( + msg_desc, + num_args, + value0, + value1, + value2, + value3, + value4, + value5, + value6, + is_last, + ) + + +@always_inline +fn printf_append_string_n( + msg_desc: UInt64, data: Span[UInt8], is_last: Bool +) -> UInt64: + return fprintf_append_string_n(msg_desc, data, is_last) + + +# ===-----------------------------------------------------------------------===# +# Hostcall +# ===-----------------------------------------------------------------------===# + + +@value +@register_passable("trivial") +struct Header: + var _handle: UnsafePointer[ + header_t, address_space = _GPUAddressSpace.GLOBAL + ] + + fn fill_packet( + mut self, + mut payload: Payload, + service_id: UInt32, + arg0: UInt64, + arg1: UInt64, + arg2: UInt64, + arg3: UInt64, + arg4: UInt64, + arg5: UInt64, + arg6: UInt64, + arg7: UInt64, + me: UInt32, + low: UInt32, + ): + if me == low: + var control = set_ready_flag(0) + self._handle[].control = control + self._handle[].activemask = ballot[DType.int64](True).cast[ + DType.uint64 + ]() + self._handle[].service = service_id + + payload[int(me), 0] = arg0 + payload[int(me), 1] = arg1 + payload[int(me), 2] = arg2 + payload[int(me), 3] = arg3 + payload[int(me), 4] = arg4 + payload[int(me), 5] = arg5 + payload[int(me), 6] = arg6 + payload[int(me), 7] = arg7 + + fn get_return_value( + mut self, payload: Payload, me: UInt32, low: UInt32 + ) -> (UInt64, UInt64): + """ + Wait for the host response and return the first two ulong + entries per workitem. + + After the packet is submitted in READY state, the wave spins until + the host changes the state to DONE. Each workitem reads the first + two ulong elements in its slot and returns this. + """ + # The while loop needs to be executed by all active + # lanes. Otherwise, later reads from ptr are performed only by + # the first thread, while other threads reuse a value cached from + # previous operations. The use of readfirstlane in the while loop + # prevents this reordering. + # + # In the absence of the readfirstlane, only one thread has a + # sequenced-before relation from the atomic load on + # header->control to the ordinary loads on ptr. As a result, the + # compiler is free to reorder operations in such a way that the + # ordinary loads are performed only by the first thread. The use + # of readfirstlane provides a stronger code-motion barrier, and + # it effectively "spreads out" the sequenced-before relation to + # the ordinary stores in other threads too. + while True: + var ready_flag = UInt32(1) + if me == low: + var ptr = UnsafePointer.address_of(self._handle[].control) + var control = Atomic._fetch_add(ptr, 0) + ready_flag = get_ready_flag(control) + + ready_flag = readfirstlane(ready_flag.cast[DType.int32]()).cast[ + DType.uint32 + ]() + + if ready_flag == 0: + break + + sleep(UInt(1)) + + var ptr = payload._handle[].slots[int(me)] + var value0 = ptr[0] + var value1 = ptr[1] + return value0, value1 + + +# Must match the ABI of: +# https://github.com/ROCm/llvm-project/blob/656552edc693e2bb4abc9258399c39d190fce2b3/amd/device-libs/ockl/src/hostcall_impl.cl#L30 +# but this is actually just conforming to the ABI of: +# https://github.com/ROCm/clr/blob/f5b2516f5d8a44b06ad1907594db1be25a9fe57b/rocclr/device/devhostcall.hpp#L104 +@value +@register_passable("trivial") +struct header_t: + var next: UInt64 + var activemask: UInt64 + var service: UInt32 + var control: UInt32 + + +@value +@register_passable("trivial") +struct Payload: + var _handle: UnsafePointer[ + payload_t, address_space = _GPUAddressSpace.GLOBAL + ] + + @always_inline + fn __setitem__(mut self, idx0: Int, idx1: Int, value: UInt64): + self._handle[].slots[idx0][idx1] = value + + +# Must match the ABI of: +# https://github.com/ROCm/llvm-project/blob/656552edc693e2bb4abc9258399c39d190fce2b3/amd/device-libs/ockl/src/hostcall_impl.cl#L37 +# but this is actually just conforming to the ABI of: +# https://github.com/ROCm/clr/blob/f5b2516f5d8a44b06ad1907594db1be25a9fe57b/rocclr/device/devhostcall.hpp#L99 +@value +@register_passable("trivial") +struct payload_t: + var slots: StaticTuple[StaticTuple[UInt64, 8], 64] + + +@value +@register_passable("trivial") +struct Buffer: + var _handle: UnsafePointer[ + buffer_t, address_space = _GPUAddressSpace.GLOBAL + ] + + @always_inline + fn get_header(self, ptr: UInt64) -> Header: + return Header( + self._handle[].headers.offset(ptr & self._handle[].index_mask) + ) + + @always_inline + fn get_payload(self, ptr: UInt64) -> Payload: + return Payload( + self._handle[].payloads.offset(ptr & self._handle[].index_mask) + ) + + fn pop( + mut self, + mut top: UInt64, + ) -> UInt64: + var f = Atomic._fetch_add(UnsafePointer.address_of(top), 0) + # F is guaranteed to be non-zero, since there are at least as + # many packets as there are waves, and each wave can hold at most + # one packet. + while True: + var p = self.get_header(f) + var n = Atomic._fetch_add( + UnsafePointer.address_of(p._handle[].next), + 0, + ) + if _compare_exchange_weak_integral_impl[scope=""]( + UnsafePointer.address_of(top), f, n + ): + break + + sleep(UInt(1)) + return f + + fn pop_free_stack(mut self, me: UInt32, low: UInt32) -> UInt64: + """ + Use the first active lane to get a free packet and + broadcast to the whole wave. + """ + var packet_ptr = UInt64(0) + if me == low: + packet_ptr = Self.pop( + self, + self._handle[].free_stack, + ) + + var ptr_lo = packet_ptr + var ptr_hi = packet_ptr >> 32 + var ptr_lo_32 = readfirstlane(ptr_lo.cast[DType.int32]()) + var ptr_hi_32 = readfirstlane(ptr_hi.cast[DType.int32]()) + + return ( + ptr_hi_32.cast[DType.uint64]() << 32 + | ptr_lo_32.cast[DType.uint64]() + ) + + fn push(mut self, mut top: UInt64, ptr: UInt64): + var f = Atomic._fetch_add(UnsafePointer.address_of(top), 0) + var p = self.get_header(ptr) + while True: + p._handle[].next = f + if _compare_exchange_weak_integral_impl[scope=""]( + UnsafePointer.address_of(top), f, ptr + ): + break + sleep(UInt(1)) + + fn push_ready_stack(mut self, ptr: UInt64, me: UInt32, low: UInt32): + """ + Use the first active lane in a wave to submit a ready + packet and signal the host. + """ + if me == low: + self.push(self._handle[].ready_stack, ptr) + send_signal(self._handle[].doorbell) + + fn return_free_packet(mut self, ptr: UInt64, me: UInt32, low: UInt32): + """ + Return the packet after incrementing the ABA tag. + """ + if me == low: + var ptr = inc_ptr_tag(ptr, self._handle[].index_mask) + self.push(self._handle[].free_stack, ptr) + + +# Must match the ABI of: +# https://github.com/ROCm/llvm-project/blob/656552edc693e2bb4abc9258399c39d190fce2b3/amd/device-libs/ockl/src/hostcall_impl.cl#L45 +# but this is actually just conforming to the ABI of: +# https://github.com/ROCm/clr/blob/f5b2516f5d8a44b06ad1907594db1be25a9fe57b/rocclr/device/devhostcall.hpp#L144 +# +# AMD's note: Hostcall buffer struct defined here is not an exact +# match of runtime buffer layout but matches its prefix that +# this code tries to access. +@value +@register_passable("trivial") +struct buffer_t: + var headers: UnsafePointer[ + header_t, address_space = _GPUAddressSpace.GLOBAL + ] + var payloads: UnsafePointer[ + payload_t, address_space = _GPUAddressSpace.GLOBAL + ] + var doorbell: UInt64 + var free_stack: UInt64 + var ready_stack: UInt64 + var index_mask: UInt64 + + +@value +@register_passable("trivial") +struct ControlOffset: + var value: UInt32 + alias ready_flag = Self(0) + alias reserved0 = Self(1) + + @always_inline + fn __ne__(self, rhs: Self) -> Bool: + return self.value != rhs.value + + @always_inline + fn __eq__(self, rhs: Self) -> Bool: + return self.value == rhs.value + + +@value +@register_passable("trivial") +struct ControlWidth: + var value: UInt32 + alias ready_flag = Self(1) + alias reserved0 = Self(31) + + @always_inline + fn __ne__(self, rhs: Self) -> Bool: + return self.value != rhs.value + + @always_inline + fn __eq__(self, rhs: Self) -> Bool: + return self.value == rhs.value + + +@always_inline +fn get_control_mask(control: UInt32, offset: UInt32, width: UInt32) -> UInt32: + var value: UInt32 = (control >> offset) & ((1 << width) - 1) + return value + + +@always_inline +fn get_control_field( + control: UInt32, offset: ControlOffset, width: ControlWidth +) -> UInt32: + var value: UInt32 = (control >> offset.value) & ( + (UInt32(1) << width.value) - 1 + ) + return value + + +@always_inline +fn set_control_field( + control: UInt32, offset: ControlOffset, width: ControlWidth, value: UInt32 +) -> UInt32: + var mask: UInt32 = ~(((UInt32(1) << width.value) - 1) << offset.value) + return (control & mask) | (value << offset.value) + + +@always_inline +fn get_ready_flag(control: UInt32) -> UInt32: + return get_control_field( + control, ControlOffset.ready_flag, ControlWidth.ready_flag + ) + + +@always_inline +fn set_ready_flag(control: UInt32) -> UInt32: + return set_control_field( + control, ControlOffset.ready_flag, ControlWidth.ready_flag, 1 + ) + + +@always_inline +fn inc_ptr_tag(ptr: UInt64, index_mask: UInt64) -> UInt64: + var inc = index_mask + 1 + var ptr_ = ptr + inc + # Unit step for the tag. + # When the tag for index 0 wraps, increment the tag. + if ptr_ == 0: + return inc + return ptr_ + + +@always_inline +fn send_signal(signal: UInt64): + hsa_signal_add(signal, 1) + + +fn _hostcall( + mut buffer: Buffer, + service_id: UInt32, + arg0: UInt64, + arg1: UInt64, + arg2: UInt64, + arg3: UInt64, + arg4: UInt64, + arg5: UInt64, + arg6: UInt64, + arg7: UInt64, +) -> (UInt64, UInt64): + """ + The implementation that should be hidden behind an ABI + The transaction is a wave-wide operation, where the service_id + must be uniform, but the parameters are different for each + workitem. Parameters from all active lanes are written into a + hostcall packet. The hostcall blocks until the host processes the + request, and returns the response it receiveds. + + TODO: This function and everything above it should eventually move + to a separate library that is loaded by the language runtime. The + function itself will be exposed as an orindary function symbol to + be linked into kernel objects that are loaded after this library. + + *** INTERNAL USE ONLY *** + Internal function, not safe for direct use in user + code. Application kernels must only use __ockl_hostcall_preview() + defined elsewhere.""" + # all 0s + var me = lane_id() + # all 0s + var low = readfirstlane(me).cast[DType.uint32]() + + var packet_ptr = buffer.pop_free_stack(me, low) + + var header = buffer.get_header(packet_ptr) + var payload = buffer.get_payload(packet_ptr) + + header.fill_packet( + payload, + service_id, + arg0, + arg1, + arg2, + arg3, + arg4, + arg5, + arg6, + arg7, + me, + low, + ) + + buffer.push_ready_stack(packet_ptr, me, low) + + var retval = header.get_return_value(payload, me, low) + buffer.return_free_packet(packet_ptr, me, low) + return retval + + +fn hostcall( + service_id: UInt32, + arg0: UInt64, + arg1: UInt64, + arg2: UInt64, + arg3: UInt64, + arg4: UInt64, + arg5: UInt64, + arg6: UInt64, + arg7: UInt64, +) -> (UInt64, UInt64): + """ + Submit a wave-wide hostcall packet. + + Args: + service_id: The service to be invoked on the host. + arg0: A parameter. + arg1: A parameter. + arg2: A parameter. + arg3: A parameter. + arg4: A parameter. + arg5: A parameter. + arg6: A parameter. + arg7: A parameter. + + Returns: + Two 64-bit values. + + The hostcall is executed for all active threads in the + wave. service_id must be uniform across the active threads, + otherwise behaviour is undefined. The service parameters may be + different for each active thread, and correspondingly, the + returned values are also different. + + The contents of the input parameters and the return values are + defined by the service being invoked. + + *** PREVIEW FEATURE *** + This is a feature preview and considered alpha quality only; + behaviour may vary between ROCm releases. Device code that invokes + hostcall can be launched only on the ROCm release that it was + compiled for, otherwise behaviour is undefined. + """ + var buffer = Buffer( + implicitarg_ptr() + .bitcast[ + UnsafePointer[buffer_t, address_space = _GPUAddressSpace.GLOBAL] + ]() + .offset(10)[] + ) + + return _hostcall( + buffer, + service_id, + arg0, + arg1, + arg2, + arg3, + arg4, + arg5, + arg6, + arg7, + ) diff --git a/stdlib/src/sys/intrinsics.mojo b/stdlib/src/sys/intrinsics.mojo index 3244052f14..8541672871 100644 --- a/stdlib/src/sys/intrinsics.mojo +++ b/stdlib/src/sys/intrinsics.mojo @@ -965,3 +965,32 @@ fn sendmsg(opcode: Int32, msg: Int32): _ = llvm_intrinsic["llvm.amdgcn.s.sendmsg", NoneType, Int32, Int32]( opcode, msg ) + + +# ===-----------------------------------------------------------------------===# +# ballot +# ===-----------------------------------------------------------------------===# + + +@always_inline +fn ballot[dtype: DType](value: Bool) -> Scalar[dtype]: + """ + Returns a bitfield(Int32 or Int64) containing the result + of its Bool argument in all active lanes, and zero in all inactive lanes. + For example, ballot(True) returns EXEC mask. + + Parameters: + dtype: The DType of the return type. + + Args: + value: The value to place across the mask. + + Returns: + A bitfield(Int32 or Int64) containing the result of its Bool argument in all active lanes. + """ + constrained[is_amd_gpu(), "This intrinsic is only defined for AMD GPUs"]() + constrained[ + dtype == DType.int32 or dtype == DType.int64, + "This intrinsic is only defined for i32 or i64", + ]() + return llvm_intrinsic["llvm.amdgcn.ballot", Scalar[dtype]](value) diff --git a/stdlib/src/utils/write.mojo b/stdlib/src/utils/write.mojo index 6d68951b9b..f2a5172d2f 100644 --- a/stdlib/src/utils/write.mojo +++ b/stdlib/src/utils/write.mojo @@ -13,7 +13,7 @@ """Establishes the contract between `Writer` and `Writable` types.""" from collections import InlineArray -from sys.info import is_gpu +from sys.info import is_gpu, is_nvidia_gpu, is_amd_gpu from memory import UnsafePointer, memcpy, Span @@ -366,7 +366,7 @@ fn write_buffered[ """ @parameter - if is_gpu(): + if is_nvidia_gpu(): # Stack space is very small on GPU due to many threads, so use heap # Count the total length of bytes to allocate only once var arg_bytes = _ArgBytes() From 92b1f3ba951af8b1024ea6791347de00c9eb59fe Mon Sep 17 00:00:00 2001 From: Scott Main Date: Fri, 10 Jan 2025 15:21:18 -0800 Subject: [PATCH 188/509] Update use of the `GetMagic` component based on style changes Now that the include component is inlined instead of in a collapsible box, we can now use it effectively in procedures. MODULAR_ORIG_COMMIT_REV_ID: 8ebbea97854d1bbe4182896e0255bc3e6871dd5e --- docs/manual/get-started.mdx | 45 +++++++++++++++++++------------------ 1 file changed, 23 insertions(+), 22 deletions(-) diff --git a/docs/manual/get-started.mdx b/docs/manual/get-started.mdx index 261a8b7fb4..0495016925 100644 --- a/docs/manual/get-started.mdx +++ b/docs/manual/get-started.mdx @@ -32,36 +32,37 @@ GitHub](https://github.com/modularml/mojo/tree/nightly/examples/life). ## 1. Create a Mojo project with `magic` -We'll start by using the [`magic` CLI](/magic) to create a virtual environment +We'll start by using the `magic` CLI to create a virtual environment and generate our initial project directory. - +1. -In your terminal, go to the directory in which you want to create the project -and execute: +2. Navigate to the directory in which you want to create the project + and execute: -```bash -magic init life --format mojoproject -``` + ```bash + magic init life --format mojoproject + ``` -This creates a project directory named `life`. Let's go to the directory and -list its contents: + This creates a project directory named `life`. -```bash -cd life -``` +3. Let's go into the directory and list its contents: -```bash -ls -A -``` + ```bash + cd life + ``` -```output -.gitattributes -.gitignore -.magic -magic.lock -mojoproject.toml -``` + ```bash + ls -A + ``` + + ```output + .gitattributes + .gitignore + .magic + magic.lock + mojoproject.toml + ``` You should see that the project directory contains: From 4cecc66d94eafb3263a9a9e0330d11da2fac3a4f Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Fri, 10 Jan 2025 15:27:09 -0800 Subject: [PATCH 189/509] [KGEN] Rename `KGEN::ParamRefType` -> `KGEN::ParamType`, NFC. This renames a (very old) core kgen type to better align with that it does: it projects a TypedAttr into a Type. It is itself not a "reference" to a parameter decl like `ParamDeclRefAttr` so using that word is confusing, this is also more concise and consistent. MODULAR_ORIG_COMMIT_REV_ID: fa2b6ffbb099b8fcdab5ddd83d5990f348e8c7b0 --- stdlib/src/sys/info.mojo | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/stdlib/src/sys/info.mojo b/stdlib/src/sys/info.mojo index ee149ca72a..5f6e10d9bf 100644 --- a/stdlib/src/sys/info.mojo +++ b/stdlib/src/sys/info.mojo @@ -624,7 +624,7 @@ fn sizeof[ Note: `align_of` is in same module. """ alias mlir_type = __mlir_attr[ - `#kgen.param.expr> : `, AnyType, @@ -677,7 +677,7 @@ fn alignof[ The alignment of the type in bytes. """ alias mlir_type = __mlir_attr[ - `#kgen.param.expr> : `, AnyType, From 4698d124f19aa576e07772980c86267417605bd5 Mon Sep 17 00:00:00 2001 From: Jack Clayton Date: Fri, 10 Jan 2025 18:15:53 -0600 Subject: [PATCH 190/509] [stdlib] Move `int` functions to `Int` ctors Now that all the machinery is in place, `Int` can be constructed both implicitly and explictly from traits that other types implement. The `int` fucntion was a temporary workaround while we didn't have a way to distinguish between explicit and implicit ctors. MODULAR_ORIG_COMMIT_REV_ID: 57c009fce682e82e5398477108ac2dc13e0ec6dc --- docs/changelog.md | 5 + examples/life/gridv1.mojo | 2 +- examples/notebooks/RayTracing.ipynb | 8 +- stdlib/benchmarks/builtin/bench_sort.mojo | 2 +- stdlib/benchmarks/collections/bench_dict.mojo | 6 +- stdlib/benchmarks/utils/bench_memmem.mojo | 2 +- stdlib/src/base64/_b64encode.mojo | 4 +- stdlib/src/base64/base64.mojo | 8 +- stdlib/src/builtin/_format_float.mojo | 22 +-- stdlib/src/builtin/bool.mojo | 2 +- stdlib/src/builtin/dtype.mojo | 2 +- stdlib/src/builtin/file.mojo | 6 +- stdlib/src/builtin/format_int.mojo | 8 +- stdlib/src/builtin/int.mojo | 185 ++++++++---------- stdlib/src/builtin/io.mojo | 2 +- stdlib/src/builtin/object.mojo | 12 +- stdlib/src/builtin/range.mojo | 12 +- stdlib/src/builtin/simd.mojo | 10 +- stdlib/src/builtin/sort.mojo | 4 +- stdlib/src/builtin/string_literal.mojo | 2 +- stdlib/src/collections/dict.mojo | 10 +- stdlib/src/collections/inline_array.mojo | 12 +- stdlib/src/collections/inline_list.mojo | 4 +- stdlib/src/collections/list.mojo | 4 +- stdlib/src/collections/string/_unicode.mojo | 14 +- stdlib/src/collections/string/format.mojo | 8 +- stdlib/src/collections/string/string.mojo | 48 ++--- .../src/collections/string/string_slice.mojo | 22 +-- stdlib/src/collections/vector.mojo | 4 +- stdlib/src/hashlib/hash.mojo | 6 +- stdlib/src/math/math.mojo | 2 +- stdlib/src/memory/memory.mojo | 4 +- stdlib/src/memory/pointer.mojo | 2 +- stdlib/src/memory/span.mojo | 4 +- stdlib/src/memory/unsafe_pointer.mojo | 28 +-- stdlib/src/os/_linux_aarch64.mojo | 20 +- stdlib/src/os/_linux_x86.mojo | 20 +- stdlib/src/os/_macos.mojo | 22 +-- stdlib/src/os/os.mojo | 2 +- stdlib/src/os/path/path.mojo | 16 +- stdlib/src/prelude/__init__.mojo | 1 - stdlib/src/pwd/_linux.mojo | 4 +- stdlib/src/pwd/_macos.mojo | 4 +- stdlib/src/python/_cpython.mojo | 12 +- stdlib/src/python/python_object.mojo | 6 +- stdlib/src/random/random.mojo | 2 +- stdlib/src/stat/stat.mojo | 14 +- stdlib/src/sys/_amdgpu.mojo | 18 +- stdlib/src/sys/info.mojo | 6 +- stdlib/src/sys/intrinsics.mojo | 8 +- stdlib/src/sys/terminate.mojo | 2 +- stdlib/src/tempfile/tempfile.mojo | 2 +- stdlib/src/time/time.mojo | 12 +- stdlib/src/utils/index.mojo | 20 +- stdlib/src/utils/lock.mojo | 4 +- stdlib/src/utils/numerics.mojo | 6 +- stdlib/src/utils/stringref.mojo | 16 +- stdlib/test/bit/test_bit.mojo | 2 +- stdlib/test/builtin/test_bfloat16.mojo | 4 +- stdlib/test/builtin/test_bool.mojo | 4 +- stdlib/test/builtin/test_float_literal.mojo | 10 +- stdlib/test/builtin/test_int.mojo | 4 +- stdlib/test/builtin/test_math.mojo | 4 +- stdlib/test/builtin/test_range.mojo | 2 +- stdlib/test/builtin/test_simd.mojo | 30 +-- stdlib/test/builtin/test_sort.mojo | 12 +- stdlib/test/builtin/test_string_literal.mojo | 4 +- .../string/test_inlined_string.mojo | 4 +- .../test/collections/string/test_string.mojo | 8 +- .../collections/string/test_string_slice.mojo | 8 +- stdlib/test/collections/test_inline_list.mojo | 2 +- stdlib/test/collections/test_list.mojo | 2 +- stdlib/test/collections/test_vector.mojo | 2 +- stdlib/test/hashlib/test_ahash.mojo | 4 +- stdlib/test/hashlib/test_hash.mojo | 2 +- stdlib/test/memory/test_memory.mojo | 2 +- stdlib/test/memory/test_span.mojo | 2 +- stdlib/test/memory/test_unsafepointer.mojo | 20 +- stdlib/test/utils/issue_13632.mojo | 2 +- stdlib/test/utils/test_stringref.mojo | 6 +- 80 files changed, 403 insertions(+), 430 deletions(-) diff --git a/docs/changelog.md b/docs/changelog.md index c3780544a8..dc8fe8995b 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -36,6 +36,11 @@ what we publish. ### Standard library changes +- The `int` function to construct an `Int` has been removed, this was a + temporary workaround when Mojo didn't have a way to distinguish between + implicit and explicit constructors. You can do a search and replace for `int(` + to `Int(` to update your programs. + - `UnsafePointer`'s `bitcast` method has now been split into `bitcast` for changing the type, `origin_cast` for changing mutability, `static_alignment_cast` for changing alignment, diff --git a/examples/life/gridv1.mojo b/examples/life/gridv1.mojo index 0eded6f24d..ec65b6ad74 100644 --- a/examples/life/gridv1.mojo +++ b/examples/life/gridv1.mojo @@ -87,7 +87,7 @@ struct Grid(StringableRaising): row_data = List[Int]() for col in range(cols): # Generate a random 0 or 1 and append it to the row. - row_data.append(int(random.random_si64(0, 1))) + row_data.append(Int(random.random_si64(0, 1))) data.append(row_data) return Self(rows, cols, data) diff --git a/examples/notebooks/RayTracing.ipynb b/examples/notebooks/RayTracing.ipynb index ea37cea474..ad3830bbe1 100644 --- a/examples/notebooks/RayTracing.ipynb +++ b/examples/notebooks/RayTracing.ipynb @@ -271,8 +271,8 @@ " var plt = Python.import_module(\"matplotlib.pyplot\")\n", "\n", " var np_image = plt.imread(fname)\n", - " var rows = int(np_image.shape[0])\n", - " var cols = int(np_image.shape[1])\n", + " var rows = Int(np_image.shape[0])\n", + " var cols = Int(np_image.shape[1])\n", " var image = Image(rows, cols)\n", "\n", " var in_pointer = np_image.__array_interface__[\"data\"][0].unsafe_get_as_pointer[DType.float32]()\n", @@ -926,8 +926,8 @@ " # Now map x from [-1,1] to [0,w-1] and do the same for y.\n", " var w = bg.width\n", " var h = bg.height\n", - " var col = int((1.0 + x) * 0.5 * (w - 1))\n", - " var row = int((1.0 + y) * 0.5 * (h - 1))\n", + " var col = Int((1.0 + x) * 0.5 * (w - 1))\n", + " var row = Int((1.0 + y) * 0.5 * (h - 1))\n", " return Material(bg.pixels[bg._pos_to_index(row, col)])\n", "\n", " var diffuse_light_intensity: Float32 = 0\n", diff --git a/stdlib/benchmarks/builtin/bench_sort.mojo b/stdlib/benchmarks/builtin/bench_sort.mojo index a44fc3a150..7c70e7ebb6 100644 --- a/stdlib/benchmarks/builtin/bench_sort.mojo +++ b/stdlib/benchmarks/builtin/bench_sort.mojo @@ -37,7 +37,7 @@ fn randomize_list[ ](mut list: List[Scalar[dt]], size: Int, max: Scalar[dt] = Scalar[dt].MAX): @parameter if dt.is_integral(): - randint(list.data, size, 0, int(max)) + randint(list.data, size, 0, Int(max)) else: for i in range(size): var res = random_float64() diff --git a/stdlib/benchmarks/collections/bench_dict.mojo b/stdlib/benchmarks/collections/bench_dict.mojo index 359d922c5e..a4ed39e99f 100644 --- a/stdlib/benchmarks/collections/bench_dict.mojo +++ b/stdlib/benchmarks/collections/bench_dict.mojo @@ -30,7 +30,7 @@ from bit import next_power_of_two fn make_dict[size: Int]() -> Dict[Int, Int]: var d = Dict[Int, Int]() for i in range(0, size): - d[i] = int(random.random_si64(0, size)) + d[i] = Int(random.random_si64(0, size)) return d @@ -62,7 +62,7 @@ fn bench_dict_insert[size: Int](mut b: Bencher) raises: @parameter fn call_fn() raises: for key in range(size, size + 100): - items[key] = int(random.random_si64(0, size)) + items[key] = Int(random.random_si64(0, size)) b.iter[call_fn]() keep(bool(items)) @@ -84,7 +84,7 @@ fn bench_dict_lookup[size: Int](mut b: Bencher) raises: @parameter if size < 100: for _ in range(closest_divisor): - for key in range(int(100 // closest_divisor)): + for key in range(Int(100 // closest_divisor)): var res = items[key] keep(res) else: diff --git a/stdlib/benchmarks/utils/bench_memmem.mojo b/stdlib/benchmarks/utils/bench_memmem.mojo index 777557784e..b3e09db5f5 100644 --- a/stdlib/benchmarks/utils/bench_memmem.mojo +++ b/stdlib/benchmarks/utils/bench_memmem.mojo @@ -171,7 +171,7 @@ fn _memmem_baseline[ var bool_mask = haystack.load[width=bool_mask_width](i) == first_needle var mask = pack_bits(bool_mask) while mask: - var offset = int(i + count_trailing_zeros(mask)) + var offset = Int(i + count_trailing_zeros(mask)) if memcmp(haystack + offset + 1, needle + 1, needle_len - 1) == 0: return haystack + offset mask = mask & (mask - 1) diff --git a/stdlib/src/base64/_b64encode.mojo b/stdlib/src/base64/_b64encode.mojo index 9bd946b308..e1a5301fa3 100644 --- a/stdlib/src/base64/_b64encode.mojo +++ b/stdlib/src/base64/_b64encode.mojo @@ -146,7 +146,7 @@ fn _get_number_of_bytes_to_store_from_number_of_bytes_to_load[ alias table = _get_table_number_of_bytes_to_store_from_number_of_bytes_to_load[ max_size ]() - return int(table[nb_of_elements_to_load]) + return Int(table[nb_of_elements_to_load]) fn _get_table_number_of_bytes_to_store_from_number_of_bytes_to_load_without_equal_sign[ @@ -181,7 +181,7 @@ fn _get_number_of_bytes_to_store_from_number_of_bytes_to_load_without_equal_sign alias table = _get_table_number_of_bytes_to_store_from_number_of_bytes_to_load_without_equal_sign[ max_size ]() - return int(table[nb_of_elements_to_load]) + return Int(table[nb_of_elements_to_load]) fn load_incomplete_simd[ diff --git a/stdlib/src/base64/base64.mojo b/stdlib/src/base64/base64.mojo index b0f467f745..750ee4cb78 100644 --- a/stdlib/src/base64/base64.mojo +++ b/stdlib/src/base64/base64.mojo @@ -99,7 +99,7 @@ fn b64encode(input_bytes: Span[Byte, _]) -> String: The ASCII base64 encoded string. """ # +1 for the null terminator and +1 to be sure - var result = List[UInt8, True](capacity=int(len(input_bytes) * (4 / 3)) + 2) + var result = List[UInt8, True](capacity=Int(len(input_bytes) * (4 / 3)) + 2) b64encode(input_bytes, result) # null-terminate the result result.append(0) @@ -177,14 +177,14 @@ fn b16encode(str: StringSlice) -> String: @parameter @always_inline fn str_bytes(idx: UInt8) -> UInt8: - return str._slice[int(idx)] + return str._slice[Int(idx)] for i in range(length): var str_byte = str_bytes(i) var hi = str_byte >> 4 var lo = str_byte & 0b1111 - out.append(b16chars[int(hi)]) - out.append(b16chars[int(lo)]) + out.append(b16chars[Int(hi)]) + out.append(b16chars[Int(lo)]) out.append(0) diff --git a/stdlib/src/builtin/_format_float.mojo b/stdlib/src/builtin/_format_float.mojo index 17f30d7de9..ad1a93b0da 100644 --- a/stdlib/src/builtin/_format_float.mojo +++ b/stdlib/src/builtin/_format_float.mojo @@ -106,16 +106,16 @@ fn _write_float[W: Writer, type: DType, //](mut writer: W, value: Scalar[type]): @parameter if type is DType.float8e5m2: - return writer.write(float8e5m2_to_str[int(bitcast[DType.uint8](value))]) + return writer.write(float8e5m2_to_str[Int(bitcast[DType.uint8](value))]) elif type is DType.float8e4m3: - return writer.write(float8e4m3_to_str[int(bitcast[DType.uint8](value))]) + return writer.write(float8e4m3_to_str[Int(bitcast[DType.uint8](value))]) elif type is DType.float8e5m2fnuz: return writer.write( - float8e5m2fnuz_to_str[int(bitcast[DType.uint8](value))] + float8e5m2fnuz_to_str[Int(bitcast[DType.uint8](value))] ) elif type is DType.float8e4m3fnuz: return writer.write( - float8e4m3fnuz_to_str[int(bitcast[DType.uint8](value))] + float8e4m3fnuz_to_str[Int(bitcast[DType.uint8](value))] ) else: # Upcast the float16 types to float32 @@ -493,25 +493,25 @@ fn _remove_trailing_zeros[ if CarrierDType is DType.uint64: var r = _rotr(sig * 28999941890838049, 8) var b = r < 184467440738 - var s = int(b) + var s = Int(b) if b: sig = r r = _rotr(sig * 182622766329724561, 4) b = r < 1844674407370956 - s = s * 2 + int(b) + s = s * 2 + Int(b) if b: sig = r r = _rotr(sig * 10330176681277348905, 2) b = r < 184467440737095517 - s = s * 2 + int(b) + s = s * 2 + Int(b) if b: sig = r r = _rotr(sig * 14757395258967641293, 1) b = r < 1844674407370955162 - s = s * 2 + int(b) + s = s * 2 + Int(b) if b: sig = r @@ -519,19 +519,19 @@ fn _remove_trailing_zeros[ else: var r = _rotr(sig * 184254097, 4) var b = r < 429497 - var s = int(b) + var s = Int(b) if b: sig = r r = _rotr(sig * 42949673, 2) b = r < 42949673 - s = s * 2 + int(b) + s = s * 2 + Int(b) if b: sig = r r = _rotr(sig * 1288490189, 1) b = r < 429496730 - s = s * 2 + int(b) + s = s * 2 + Int(b) if b: sig = r diff --git a/stdlib/src/builtin/bool.mojo b/stdlib/src/builtin/bool.mojo index a0a65229dc..213d080e21 100644 --- a/stdlib/src/builtin/bool.mojo +++ b/stdlib/src/builtin/bool.mojo @@ -285,7 +285,7 @@ struct Bool( Returns: 1 if the Bool is True, 0 otherwise. """ - return int(self).value + return Int(self).value @always_inline("nodebug") fn __eq__(self, rhs: Bool) -> Bool: diff --git a/stdlib/src/builtin/dtype.mojo b/stdlib/src/builtin/dtype.mojo index f46f28a89a..c0ab14b399 100644 --- a/stdlib/src/builtin/dtype.mojo +++ b/stdlib/src/builtin/dtype.mojo @@ -514,7 +514,7 @@ struct DType( """ if self._is_non_index_integral(): - return int( + return Int( UInt8( __mlir_op.`pop.shl`( UInt8(1).value, diff --git a/stdlib/src/builtin/file.mojo b/stdlib/src/builtin/file.mojo index c2bbdf295c..4aa4784f1b 100644 --- a/stdlib/src/builtin/file.mojo +++ b/stdlib/src/builtin/file.mojo @@ -193,7 +193,7 @@ struct FileHandle: if err_msg: raise err_msg^.consume_as_error() - return String(ptr=buf, length=int(size_copy) + 1) + return String(ptr=buf, length=Int(size_copy) + 1) fn read[ type: DType @@ -337,7 +337,7 @@ struct FileHandle: raise (err_msg^).consume_as_error() var list = List[UInt8]( - ptr=buf, length=int(size_copy), capacity=int(size_copy) + ptr=buf, length=Int(size_copy), capacity=Int(size_copy) ) return list @@ -463,7 +463,7 @@ struct FileHandle: return self^ fn _get_raw_fd(self) -> Int: - return int( + return Int( external_call[ "KGEN_CompilerRT_IO_GetFD", Int64, diff --git a/stdlib/src/builtin/format_int.mojo b/stdlib/src/builtin/format_int.mojo index 2f9bf016db..79726e1a99 100644 --- a/stdlib/src/builtin/format_int.mojo +++ b/stdlib/src/builtin/format_int.mojo @@ -79,7 +79,7 @@ fn bin[T: Intable, //](num: T, /, *, prefix: StaticString = "0b") -> String: Returns: The binary string representation of num. """ - return bin(Scalar[DType.index](int(num)), prefix=prefix) + return bin(Scalar[DType.index](Int(num)), prefix=prefix) # ===-----------------------------------------------------------------------===# @@ -123,7 +123,7 @@ fn hex[T: Intable, //](value: T, /, *, prefix: StaticString = "0x") -> String: Returns: A string containing the hex representation of the given integer. """ - return hex(Scalar[DType.index](int(value)), prefix=prefix) + return hex(Scalar[DType.index](Int(value)), prefix=prefix) fn hex(value: Scalar[DType.bool], /, *, prefix: StaticString = "0x") -> String: @@ -185,7 +185,7 @@ fn oct[T: Intable, //](value: T, /, *, prefix: StaticString = "0o") -> String: Returns: A string containing the octal representation of the given integer. """ - return oct(Scalar[DType.index](int(value)), prefix=prefix) + return oct(Scalar[DType.index](Int(value)), prefix=prefix) fn oct(value: Scalar[DType.bool], /, *, prefix: StaticString = "0o") -> String: @@ -366,7 +366,7 @@ fn _try_write_int[ # Write the char representing the value of the least significant # digit. buf.unsafe_ptr().offset(offset).init_pointee_copy( - digit_chars_array[int(digit_value)] + digit_chars_array[Int(digit_value)] ) # Position the offset to write the next digit. diff --git a/stdlib/src/builtin/int.mojo b/stdlib/src/builtin/int.mojo index 8205ad6886..f21bb325fa 100644 --- a/stdlib/src/builtin/int.mojo +++ b/stdlib/src/builtin/int.mojo @@ -90,8 +90,8 @@ trait Intable(CollectionElement): """The `Intable` trait describes a type that can be converted to an Int. Any type that conforms to `Intable` or - [`IntableRaising`](/mojo/stdlib/builtin/int/IntableRaising) works with - the built-in [`int()`](/mojo/stdlib/builtin/int/int-function) function. + [`IntableRaising`](/mojo/stdlib/builtin/int/IntableRaising) can construct an + `Int`. This trait requires the type to implement the `__int__()` method. For example: @@ -105,13 +105,12 @@ trait Intable(CollectionElement): return self.i ``` - Now you can use the `int()` function to convert a `Foo` to an - `Int`: + Now you can construct an `Int`: ```mojo %# from testing import assert_equal foo = Foo(42) - assert_equal(int(foo), 42) + assert_equal(Int(foo), 42) ``` **Note:** If the `__int__()` method can raise an error, use the @@ -134,8 +133,7 @@ trait IntableRaising: the conversion might raise an error. Any type that conforms to [`Intable`](/mojo/stdlib/builtin/int/Intable) - or `IntableRaising` works with the built-in - [`int()`](/mojo/stdlib/builtin/int/int-function) function. + or `IntableRaising` can construct an `Int`. This trait requires the type to implement the `__int__()` method, which can raise an error. For example: @@ -149,13 +147,12 @@ trait IntableRaising: return self.i ``` - Now you can use the `int()` function to convert a `Foo` to an - `Int`: + Now you can construct an `Int`: ```mojo %# from testing import assert_equal foo = Foo(42) - assert_equal(int(foo), 42) + assert_equal(Int(foo), 42) ``` """ @@ -207,96 +204,6 @@ trait ImplicitlyIntable(Intable): ... -# ===----------------------------------------------------------------------=== # -# int -# ===----------------------------------------------------------------------=== # - - -@always_inline -fn int[T: Intable](value: T) -> Int: - """Get the Int representation of the value. - - Parameters: - T: The Intable type. - - Args: - value: The object to get the integral representation of. - - Returns: - The integral representation of the value. - """ - return value.__int__() - - -@always_inline -fn int[T: IntableRaising](value: T) raises -> Int: - """Get the Int representation of the value. - - Parameters: - T: The Intable type. - - Args: - value: The object to get the integral representation of. - - Returns: - The integral representation of the value. - - Raises: - If the type does not have an integral representation. - """ - return value.__int__() - - -fn int(value: StringSlice, base: Int = 10) raises -> Int: - """Parses and returns the given string as an integer in the given base. - - If base is set to 0, the string is parsed as an Integer literal, with the - following considerations: - - '0b' or '0B' prefix indicates binary (base 2) - - '0o' or '0O' prefix indicates octal (base 8) - - '0x' or '0X' prefix indicates hexadecimal (base 16) - - Without a prefix, it's treated as decimal (base 10) - - Args: - value: A string to be parsed as an integer in the given base. - base: Base used for conversion, value must be between 2 and 36, or 0. - - Returns: - An integer value that represents the string. - - Raises: - If the given string cannot be parsed as an integer value or if an - incorrect base is provided. - - Examples: - >>> int("32") - 32 - >>> int("FF", 16) - 255 - >>> int("0xFF", 0) - 255 - >>> int("0b1010", 0) - 10 - - Notes: - This follows [Python's integer literals]( - https://docs.python.org/3/reference/lexical_analysis.html#integers). - """ - return atol(value, base) - - -fn int(value: UInt) -> Int: - """Get the Int representation of the value. - - Args: - value: The object to get the integral representation of. - - Returns: - The integral representation of the value. - """ - return value.value - - # ===----------------------------------------------------------------------=== # # Int # ===----------------------------------------------------------------------=== # @@ -320,10 +227,10 @@ struct Int( var value: __mlir_type.index """The underlying storage for the integer value.""" - alias MAX = int(Scalar[DType.index].MAX) + alias MAX = Int(Scalar[DType.index].MAX) """Returns the maximum integer value.""" - alias MIN = int(Scalar[DType.index].MIN) + alias MIN = Int(Scalar[DType.index].MIN) """Returns the minimum value of type.""" # ===------------------------------------------------------------------=== # @@ -377,6 +284,43 @@ struct Int( """ self = value.__int__() + @always_inline("nodebug") + @implicit + fn __init__(out self, value: UInt): + """Construct Int from the given UInt value. + + Args: + value: The init value. + """ + self = Self(value.value) + + @always_inline("nodebug") + fn __init__[T: Intable](out self, value: T): + """Get the Int representation of the value. + + Parameters: + T: The Intable type. + + Args: + value: The object to get the integral representation of. + """ + self = value.__int__() + + @always_inline("nodebug") + fn __init__[T: IntableRaising](out self, value: T) raises: + """Get the Int representation of the value. + + Parameters: + T: The Intable type. + + Args: + value: The object to get the integral representation of. + + Raises: + If the type does not have an integral representation. + """ + self = value.__int__() + @always_inline("nodebug") @implicit fn __init__[I: ImplicitlyIntable](out self, value: I): @@ -391,14 +335,39 @@ struct Int( self = value.__as_int__() @always_inline("nodebug") - @implicit - fn __init__(out self, value: UInt): - """Construct Int from the given UInt value. + fn __init__(out self, value: StringSlice, base: UInt = 10) raises: + """Parses and returns the given string as an integer in the given base. + + If base is set to 0, the string is parsed as an Integer literal, with the + following considerations: + - '0b' or '0B' prefix indicates binary (base 2) + - '0o' or '0O' prefix indicates octal (base 8) + - '0x' or '0X' prefix indicates hexadecimal (base 16) + - Without a prefix, it's treated as decimal (base 10) Args: - value: The init value. - """ - self = Self(value.value) + value: A string to be parsed as an integer in the given base. + base: Base used for conversion, value must be between 2 and 36, or 0. + + Raises: + If the given string cannot be parsed as an integer value or if an + incorrect base is provided. + + Examples: + >>> Int("32") + 32 + >>> Int("FF", 16) + 255 + >>> Int("0xFF", 0) + 255 + >>> Int("0b1010", 0) + 10 + + Notes: + This follows [Python's integer literals]( + https://docs.python.org/3/reference/lexical_analysis.html#integers). + """ + self = atol(value, base) # ===------------------------------------------------------------------=== # # Operator dunders diff --git a/stdlib/src/builtin/io.mojo b/stdlib/src/builtin/io.mojo index fc77581cbd..465a4cefcf 100644 --- a/stdlib/src/builtin/io.mojo +++ b/stdlib/src/builtin/io.mojo @@ -224,7 +224,7 @@ fn _snprintf[ var loaded_pack = args.get_loaded_kgen_pack() # FIXME: external_call should handle this - return int( + return Int( __mlir_op.`pop.external_call`[ func = "snprintf".value, variadicType = __mlir_attr[ diff --git a/stdlib/src/builtin/object.mojo b/stdlib/src/builtin/object.mojo index e307fac5f6..a20b4b31c3 100644 --- a/stdlib/src/builtin/object.mojo +++ b/stdlib/src/builtin/object.mojo @@ -589,7 +589,7 @@ struct _ObjectImpl( return if self.is_func(): writer.write( - "Function at address " + hex(int(self.get_as_func().value)) + "Function at address " + hex(Int(self.get_as_func().value)) ) return if self.is_list(): @@ -986,10 +986,10 @@ struct object( return 1 if self._value.get_as_bool() else 0 if self._value.is_int(): - return int(self._value.get_as_int()) + return Int(self._value.get_as_int()) if self._value.is_float(): - return int(self._value.get_as_float()) + return Int(self._value.get_as_float()) raise "object type cannot be converted to an integer" @@ -1833,10 +1833,10 @@ struct object( @always_inline fn _convert_index_to_int(i: object) raises -> Int: if i._value.is_bool(): - return int(i._value.convert_bool_to_int().get_as_int()) + return Int(i._value.convert_bool_to_int().get_as_int()) elif not i._value.is_int(): raise Error("TypeError: string indices must be integers") - return int(i._value.get_as_int()) + return Int(i._value.get_as_int()) @always_inline fn __getitem__(self, i: object) raises -> object: @@ -1862,7 +1862,7 @@ struct object( var char = self._value.get_as_string().data[index] impl.data.init_pointee_move(char) return object(impl) - return self._value.get_list_element(int(i._value.get_as_int())) + return self._value.get_list_element(Int(i._value.get_as_int())) @always_inline fn __getitem__(self, *index: object) raises -> object: diff --git a/stdlib/src/builtin/range.mojo b/stdlib/src/builtin/range.mojo index b011c350d5..14fb9d979b 100644 --- a/stdlib/src/builtin/range.mojo +++ b/stdlib/src/builtin/range.mojo @@ -75,7 +75,7 @@ struct _ZeroStartingRange(Sized, ReversibleRange, _IntIterable): @always_inline fn __getitem__[I: Indexer](self, idx: I) -> Int: - debug_assert(int(idx) < self.__len__(), "index out of range") + debug_assert(Int(idx) < self.__len__(), "index out of range") return index(idx) @always_inline @@ -215,7 +215,7 @@ fn range[type: Intable](end: type) -> _ZeroStartingRange: Returns: The constructed range. """ - return _ZeroStartingRange(int(end)) + return _ZeroStartingRange(Int(end)) @always_inline @@ -231,7 +231,7 @@ fn range[type: IntableRaising](end: type) raises -> _ZeroStartingRange: Returns: The constructed range. """ - return _ZeroStartingRange(int(end)) + return _ZeroStartingRange(Int(end)) @always_inline @@ -249,7 +249,7 @@ fn range[t0: Intable, t1: Intable](start: t0, end: t1) -> _SequentialRange: Returns: The constructed range. """ - return _SequentialRange(int(start), int(end)) + return _SequentialRange(Int(start), Int(end)) @always_inline @@ -269,7 +269,7 @@ fn range[ Returns: The constructed range. """ - return _SequentialRange(int(start), int(end)) + return _SequentialRange(Int(start), Int(end)) @always_inline @@ -313,7 +313,7 @@ fn range[ Returns: The constructed range. """ - return _StridedRange(int(start), int(end), int(step)) + return _StridedRange(Int(start), Int(end), Int(step)) # ===----------------------------------------------------------------------=== # diff --git a/stdlib/src/builtin/simd.mojo b/stdlib/src/builtin/simd.mojo index d03a77c431..ec28c1de57 100644 --- a/stdlib/src/builtin/simd.mojo +++ b/stdlib/src/builtin/simd.mojo @@ -1532,7 +1532,7 @@ struct SIMD[type: DType, size: Int]( constrained[ type.is_integral(), "cannot index using a floating point type" ]() - return int(self).value + return Int(self).value @always_inline("nodebug") fn __float__(self) -> Float64: @@ -2165,7 +2165,7 @@ struct SIMD[type: DType, size: Int]( ``` result = SIMD[Self.type, mask_size]() for i in range(mask_size): - result[i] = self[int(mask[i])] + result[i] = self[Int(mask[i])] ``` Parameters: @@ -2223,7 +2223,7 @@ struct SIMD[type: DType, size: Int]( @parameter for i in range(0, mask_size): - result[i] = self[int(mask[i])] + result[i] = self[Int(mask[i])] return result @always_inline @@ -2717,12 +2717,12 @@ struct SIMD[type: DType, size: Int]( @parameter if type is DType.bool: - return int(self.cast[DType.uint8]().reduce_add()) + return Int(self.cast[DType.uint8]().reduce_add()) else: constrained[ type.is_integral(), "Expected either integral or bool type" ]() - return int(pop_count(self).reduce_add()) + return Int(pop_count(self).reduce_add()) # ===------------------------------------------------------------------=== # # select diff --git a/stdlib/src/builtin/sort.mojo b/stdlib/src/builtin/sort.mojo index 00243d6f80..6cce447b5c 100644 --- a/stdlib/src/builtin/sort.mojo +++ b/stdlib/src/builtin/sort.mojo @@ -163,12 +163,12 @@ fn _heap_sort[ @always_inline fn _estimate_initial_height(size: Int) -> Int: # Compute the log2 of the size rounded upward. - var log2 = int( + var log2 = Int( (bitwidthof[DType.index]() - 1) ^ count_leading_zeros(size | 1) ) # The number 1.3 was chosen by experimenting the max stack size for random # input. This also depends on insertion_sort_threshold - return max(2, int(ceil(1.3 * log2))) + return max(2, Int(ceil(1.3 * log2))) @always_inline diff --git a/stdlib/src/builtin/string_literal.mojo b/stdlib/src/builtin/string_literal.mojo index a6fa37dd03..72f1207149 100644 --- a/stdlib/src/builtin/string_literal.mojo +++ b/stdlib/src/builtin/string_literal.mojo @@ -363,7 +363,7 @@ struct StringLiteral( Returns: An integer value that represents the string, or otherwise raises. """ - return int(self.as_string_slice()) + return Int(self.as_string_slice()) @always_inline fn __float__(self) raises -> Float64: diff --git a/stdlib/src/collections/dict.mojo b/stdlib/src/collections/dict.mojo index 9761dec244..31ea5bc0e4 100644 --- a/stdlib/src/collections/dict.mojo +++ b/stdlib/src/collections/dict.mojo @@ -320,16 +320,16 @@ struct _DictIndex: fn get_index(self, reserved: Int, slot: UInt64) -> Int: if reserved <= 128: var data = self.data.bitcast[Int8]() - return int(data.load(slot & (reserved - 1))) + return Int(data.load(slot & (reserved - 1))) elif reserved <= 2**16 - 2: var data = self.data.bitcast[Int16]() - return int(data.load(slot & (reserved - 1))) + return Int(data.load(slot & (reserved - 1))) elif reserved <= 2**32 - 2: var data = self.data.bitcast[Int32]() - return int(data.load(slot & (reserved - 1))) + return Int(data.load(slot & (reserved - 1))) else: var data = self.data.bitcast[Int64]() - return int(data.load(slot & (reserved - 1))) + return Int(data.load(slot & (reserved - 1))) fn set_index(mut self, reserved: Int, slot: UInt64, value: Int): if reserved <= 128: @@ -1012,7 +1012,7 @@ struct Dict[K: KeyElement, V: CollectionElement]( fn _next_index_slot(self, mut slot: UInt64, mut perturb: UInt64): alias PERTURB_SHIFT = 5 perturb >>= PERTURB_SHIFT - slot = ((5 * slot) + int(perturb + 1)) & (self._reserved() - 1) + slot = ((5 * slot) + Int(perturb + 1)) & (self._reserved() - 1) fn _find_empty_index(self, hash: UInt64) -> UInt64: var slot = hash & (self._reserved() - 1) diff --git a/stdlib/src/collections/inline_array.mojo b/stdlib/src/collections/inline_array.mojo index f24d4dbe75..c016632e95 100644 --- a/stdlib/src/collections/inline_array.mojo +++ b/stdlib/src/collections/inline_array.mojo @@ -241,7 +241,7 @@ struct InlineArray[ return self.unsafe_get(idx) else: var normalized_index = normalize_index["InlineArray"]( - int(idx), self + Int(idx), self ) return self.unsafe_get(normalized_index) @@ -258,16 +258,16 @@ struct InlineArray[ Returns: A reference to the item at the given index. """ - constrained[-size <= int(idx) < size, "Index must be within bounds."]() + constrained[-size <= Int(idx) < size, "Index must be within bounds."]() @parameter if _type_is_eq[I, UInt](): return self.unsafe_get(idx) else: - var normalized_idx = int(idx) + var normalized_idx = Int(idx) @parameter - if int(idx) < 0: + if Int(idx) < 0: normalized_idx += size return self.unsafe_get(normalized_idx) @@ -310,9 +310,9 @@ struct InlineArray[ """ var i = index(idx) debug_assert( - 0 <= int(i) < size, + 0 <= Int(i) < size, " InlineArray.unsafe_get() index out of bounds: ", - int(idx), + Int(idx), " should be less than: ", size, ) diff --git a/stdlib/src/collections/inline_list.mojo b/stdlib/src/collections/inline_list.mojo index 733fd917b3..2d7b16d428 100644 --- a/stdlib/src/collections/inline_list.mojo +++ b/stdlib/src/collections/inline_list.mojo @@ -147,7 +147,7 @@ struct InlineList[ElementType: CollectionElementNew, capacity: Int = 16](Sized): Returns: A reference to the item at the given index. """ - var index = int(idx) + var index = Int(idx) debug_assert( -self._size <= index < self._size, "Index must be within bounds." ) @@ -244,7 +244,7 @@ struct InlineList[ElementType: CollectionElementNew, capacity: Int = 16](Sized): var count = 0 for e in self: - count += int(rebind[C](e[]) == value) + count += Int(rebind[C](e[]) == value) return count fn append(mut self, owned value: ElementType): diff --git a/stdlib/src/collections/list.mojo b/stdlib/src/collections/list.mojo index 561079a10e..10456b1323 100644 --- a/stdlib/src/collections/list.mojo +++ b/stdlib/src/collections/list.mojo @@ -504,7 +504,7 @@ struct List[T: CollectionElement, hint_trivial_type: Bool = False]( Except for 0 capacity where it sets 1. """ if self.size >= self.capacity: - self._realloc(self.capacity * 2 | int(self.capacity == 0)) + self._realloc(self.capacity * 2 | Int(self.capacity == 0)) (self.data + self.size).init_pointee_move(value^) self.size += 1 @@ -868,7 +868,7 @@ struct List[T: CollectionElement, hint_trivial_type: Bool = False]( if _type_is_eq[I, UInt](): return (self.data + idx)[] else: - var normalized_idx = int(idx) + var normalized_idx = Int(idx) debug_assert( -self.size <= normalized_idx < self.size, "index: ", diff --git a/stdlib/src/collections/string/_unicode.mojo b/stdlib/src/collections/string/_unicode.mojo index f9b26ca604..980211ae22 100644 --- a/stdlib/src/collections/string/_unicode.mojo +++ b/stdlib/src/collections/string/_unicode.mojo @@ -49,7 +49,7 @@ fn _to_index[lookup: List[UInt32, **_]](rune: Int) -> Int: while length > 1: var half = length >> 1 length -= half - cursor += int(b.load(cursor + half - 1) < x) * half + cursor += Int(b.load(cursor + half - 1) < x) * half return cursor if b.load(cursor) == x else -1 @@ -122,16 +122,16 @@ fn _ord(_p: UnsafePointer[UInt8]) -> (Int, Int): var p = _p var b1 = p[] if (b1 >> 7) == 0: # This is 1 byte ASCII char - return int(b1), 1 + return Int(b1), 1 var num_bytes = count_leading_zeros(~b1) - var shift = int((6 * (num_bytes - 1))) + var shift = Int((6 * (num_bytes - 1))) var b1_mask = 0b11111111 >> (num_bytes + 1) - var result = int(b1 & b1_mask) << shift + var result = Int(b1 & b1_mask) << shift for _ in range(1, num_bytes): p += 1 shift -= 6 - result |= int(p[] & 0b00111111) << shift - return result, int(num_bytes) + result |= Int(p[] & 0b00111111) << shift + return result, Int(num_bytes) fn _write_rune(rune: UInt32, p: UnsafePointer[UInt8]) -> Int: @@ -148,7 +148,7 @@ fn _write_rune(rune: UInt32, p: UnsafePointer[UInt8]) -> Int: ) var values = SIMD[DType.uint32, 4](val) var mask = values > sizes - return int(mask.cast[DType.uint8]().reduce_add()) + return Int(mask.cast[DType.uint8]().reduce_add()) var num_bytes = _utf8_len(rune) var shift = 6 * (num_bytes - 1) diff --git a/stdlib/src/collections/string/format.mojo b/stdlib/src/collections/string/format.mojo index abaeb26c10..1cd5cd968e 100644 --- a/stdlib/src/collections/string/format.mojo +++ b/stdlib/src/collections/string/format.mojo @@ -299,13 +299,13 @@ struct _FormatCurlyEntry(CollectionElement, CollectionElementNew): else: new_idx += 1 - var extra = int(new_idx < field_len) + var extra = Int(new_idx < field_len) var fmt_field = _build_slice(field_ptr, new_idx + extra, field_len) self.format_spec = _FormatSpec.parse(fmt_field) - var w = int(self.format_spec.value().width) if self.format_spec else 0 + var w = Int(self.format_spec.value().width) if self.format_spec else 0 # fully guessing the byte width here to be at least 8 bytes per entry # minus the length of the whole format specification - total_estimated_entry_byte_width += 8 * int(w > 0) + w - (field_len + 2) + total_estimated_entry_byte_width += 8 * Int(w > 0) + w - (field_len + 2) if field.byte_length() == 0: # an empty field, so it's automatic indexing @@ -318,7 +318,7 @@ struct _FormatCurlyEntry(CollectionElement, CollectionElementNew): # field is a number for manual indexing: # TODO: add support for "My name is {0.name}".format(Person(name="Fred")) # TODO: add support for "My name is {0[name]}".format({"name": "Fred"}) - var number = int(field) + var number = Int(field) self.field = number if number >= len_pos_args or number < 0: raised_manual_index = number diff --git a/stdlib/src/collections/string/string.mojo b/stdlib/src/collections/string/string.mojo index 2ca4d03112..7f766c5897 100644 --- a/stdlib/src/collections/string/string.mojo +++ b/stdlib/src/collections/string/string.mojo @@ -75,24 +75,24 @@ fn ord(s: StringSlice) -> Int: var b1 = p[] if (b1 >> 7) == 0: # This is 1 byte ASCII char debug_assert(s.byte_length() == 1, "input string length must be 1") - return int(b1) + return Int(b1) var num_bytes = count_leading_zeros(~b1) debug_assert( - s.byte_length() == int(num_bytes), "input string must be one character" + s.byte_length() == Int(num_bytes), "input string must be one character" ) debug_assert( - 1 < int(num_bytes) < 5, "invalid UTF-8 byte ", b1, " at index 0" + 1 < Int(num_bytes) < 5, "invalid UTF-8 byte ", b1, " at index 0" ) - var shift = int((6 * (num_bytes - 1))) + var shift = Int((6 * (num_bytes - 1))) var b1_mask = 0b11111111 >> (num_bytes + 1) - var result = int(b1 & b1_mask) << shift + var result = Int(b1 & b1_mask) << shift for i in range(1, num_bytes): p += 1 debug_assert( p[] >> 6 == 0b00000010, "invalid UTF-8 byte ", b1, " at index ", i ) shift -= 6 - result |= int(p[] & 0b00111111) << shift + result |= Int(p[] & 0b00111111) << shift return result @@ -298,7 +298,7 @@ fn atol(str_slice: StringSlice, base: Int = 10) raises -> Int: # underscores under the conditions they have a prefix var was_last_digit_underscore = not (real_base in (2, 8, 16) and has_prefix) for pos in range(start, str_len): - var ord_current = int(buff[pos]) + var ord_current = Int(buff[pos]) if ord_current == ord_underscore: if was_last_digit_underscore: raise Error(_str_to_base_error(base, str_slice)) @@ -362,7 +362,7 @@ fn _trim_and_handle_sign(str_slice: StringSlice, str_len: Int) -> (Int, Bool): start += 1 var p: Bool = buff[start] == ord("+") var n: Bool = buff[start] == ord("-") - return start + (int(p) or int(n)), n + return start + (Int(p) or Int(n)), n @always_inline @@ -388,7 +388,7 @@ fn _handle_base_prefix( var start = pos var buff = str_slice.unsafe_ptr() if start + 1 < str_len: - var prefix_char = chr(int(buff[start + 1])) + var prefix_char = chr(Int(buff[start + 1])) if buff[start] == ord("0") and ( (base == 2 and (prefix_char == "b" or prefix_char == "B")) or (base == 8 and (prefix_char == "o" or prefix_char == "O")) @@ -498,7 +498,7 @@ fn atof(str_slice: StringSlice) raises -> Float64: # read before dot for pos in range(start, str_len): if ord_0 <= buff[pos] <= ord_9: - result = result * 10.0 + int(buff[pos] - ord_0) + result = result * 10.0 + Int(buff[pos] - ord_0) start += 1 else: break @@ -507,7 +507,7 @@ fn atof(str_slice: StringSlice) raises -> Float64: start += 1 for pos in range(start, str_len): if ord_0 <= buff[pos] <= ord_9: - result = result * 10.0 + int(buff[pos] - ord_0) + result = result * 10.0 + Int(buff[pos] - ord_0) exponent -= 1 else: break @@ -525,7 +525,7 @@ fn atof(str_slice: StringSlice) raises -> Float64: sign = -1 elif ord_0 <= buff[start] <= ord_9: has_number = True - shift = shift * 10 + int(buff[pos] - ord_0) + shift = shift * 10 + Int(buff[pos] - ord_0) else: break start += 1 @@ -568,7 +568,7 @@ fn isdigit(c: UInt8) -> Bool: """ alias ord_0 = ord("0") alias ord_9 = ord("9") - return ord_0 <= int(c) <= ord_9 + return ord_0 <= Int(c) <= ord_9 # ===----------------------------------------------------------------------=== # @@ -594,7 +594,7 @@ fn isupper(c: UInt8) -> Bool: fn _is_ascii_uppercase(c: UInt8) -> Bool: alias ord_a = ord("A") alias ord_z = ord("Z") - return ord_a <= int(c) <= ord_z + return ord_a <= Int(c) <= ord_z # ===----------------------------------------------------------------------=== # @@ -620,7 +620,7 @@ fn islower(c: UInt8) -> Bool: fn _is_ascii_lowercase(c: UInt8) -> Bool: alias ord_a = ord("a") alias ord_z = ord("z") - return ord_a <= int(c) <= ord_z + return ord_a <= Int(c) <= ord_z # ===----------------------------------------------------------------------=== # @@ -699,7 +699,7 @@ fn isprintable(c: UInt8) -> Bool: """ alias ord_space = ord(" ") alias ord_tilde = ord("~") - return ord_space <= int(c) <= ord_tilde + return ord_space <= Int(c) <= ord_tilde # ===----------------------------------------------------------------------=== # @@ -1137,7 +1137,7 @@ struct String( var buffer = Self._buffer_type(capacity=sum_len + 1) var ptr = buffer.unsafe_ptr() memcpy(ptr, lhs_ptr, lhs_len) - memcpy(ptr + lhs_len, rhs_ptr, rhs_len + int(rhs_has_null)) + memcpy(ptr + lhs_len, rhs_ptr, rhs_len + Int(rhs_has_null)) buffer.size = sum_len + 1 @parameter @@ -1182,7 +1182,7 @@ struct String( var sum_len = s_len + o_len self._buffer.reserve(sum_len + 1) var s_ptr = self.unsafe_ptr() - memcpy(s_ptr + s_len, o_ptr, o_len + int(has_null)) + memcpy(s_ptr + s_len, o_ptr, o_len + Int(has_null)) self._buffer.size = sum_len + 1 @parameter @@ -1483,7 +1483,7 @@ struct String( This does not include the trailing null terminator in the count. """ var length = len(self._buffer) - return length - int(length > 0) + return length - Int(length > 0) fn _steal_ptr(mut self) -> UnsafePointer[UInt8]: """Transfer ownership of pointer to the underlying memory. @@ -1652,7 +1652,7 @@ struct String( fn num_bytes(b: UInt8) -> Int: var flipped = ~b - return int(count_leading_zeros(flipped) + (flipped >> 7)) + return Int(count_leading_zeros(flipped) + (flipped >> 7)) var output = List[String]() var str_byte_len = self.byte_length() - 1 @@ -1736,7 +1736,7 @@ struct String( res.reserve(self_len + (old_len - new_len) * occurrences + 1) for _ in range(occurrences): - var curr_offset = int(self_ptr) - int(self_start) + var curr_offset = Int(self_ptr) - Int(self_start) var idx = self.find(old, curr_offset) @@ -2188,10 +2188,10 @@ fn _calc_initial_buffer_size_int32(n0: Int) -> Int: 42949672960, ) var n = UInt32(n0) - var log2 = int( + var log2 = Int( (bitwidthof[DType.uint32]() - 1) ^ count_leading_zeros(n | 1) ) - return (n0 + lookup_table[int(log2)]) >> 32 + return (n0 + lookup_table[Int(log2)]) >> 32 fn _calc_initial_buffer_size_int64(n0: UInt64) -> Int: @@ -2230,7 +2230,7 @@ fn _calc_initial_buffer_size[type: DType](n0: Scalar[type]) -> Int: @parameter if is_32bit_system or bitwidthof[type]() <= 32: - return sign + _calc_initial_buffer_size_int32(int(n)) + 1 + return sign + _calc_initial_buffer_size_int32(Int(n)) + 1 else: return ( sign diff --git a/stdlib/src/collections/string/string_slice.mojo b/stdlib/src/collections/string/string_slice.mojo index 614f4dd472..129df13b88 100644 --- a/stdlib/src/collections/string/string_slice.mojo +++ b/stdlib/src/collections/string/string_slice.mojo @@ -54,11 +54,11 @@ fn _count_utf8_continuation_bytes(span: Span[Byte]) -> Int: for _ in range(rest // s): var vec = (ptr + processed).load[width=s]() var comp = (vec & 0b1100_0000) == 0b1000_0000 - amnt += int(comp.cast[DType.uint8]().reduce_add()) + amnt += Int(comp.cast[DType.uint8]().reduce_add()) processed += s for i in range(num_bytes - processed): - amnt += int((ptr[processed + i] & 0b1100_0000) == 0b1000_0000) + amnt += Int((ptr[processed + i] & 0b1100_0000) == 0b1000_0000) return amnt @@ -68,7 +68,7 @@ fn _unicode_codepoint_utf8_byte_length(c: Int) -> Int: 0 <= c <= 0x10FFFF, "Value: ", c, " is not a valid Unicode code point" ) alias sizes = SIMD[DType.int32, 4](0, 0b0111_1111, 0b0111_1111_1111, 0xFFFF) - return int((sizes < c).cast[DType.uint8]().reduce_add()) + return Int((sizes < c).cast[DType.uint8]().reduce_add()) @always_inline @@ -80,7 +80,7 @@ fn _utf8_first_byte_sequence_length(b: Byte) -> Int: (b & 0b1100_0000) != 0b1000_0000, "Function does not work correctly if given a continuation byte.", ) - return int(count_leading_zeros(~b)) + int(b < 0b1000_0000) + return Int(count_leading_zeros(~b)) + Int(b < 0b1000_0000) fn _shift_unicode_to_utf8(ptr: UnsafePointer[UInt8], c: Int, num_bytes: Int): @@ -574,7 +574,7 @@ struct StringSlice[mut: Bool, //, origin: Origin[mut]]( """ var len1 = len(self) var len2 = len(rhs) - return int(len1 < len2) > _memcmp_impl_unconstrained( + return Int(len1 < len2) > _memcmp_impl_unconstrained( self.unsafe_ptr(), rhs.unsafe_ptr(), min(len1, len2) ) @@ -996,7 +996,7 @@ struct StringSlice[mut: Bool, //, origin: Origin[mut]]( if not loc: return -1 - return int(loc) - int(self.unsafe_ptr()) + return Int(loc) - Int(self.unsafe_ptr()) fn rfind(self, substr: StringSlice, start: Int = 0) -> Int: """Finds the offset of the last occurrence of `substr` starting at @@ -1029,7 +1029,7 @@ struct StringSlice[mut: Bool, //, origin: Origin[mut]]( if not loc: return -1 - return int(loc) - int(self.unsafe_ptr()) + return Int(loc) - Int(self.unsafe_ptr()) fn isspace(self) -> Bool: """Determines whether every character in the given StringSlice is a @@ -1148,17 +1148,17 @@ struct StringSlice[mut: Bool, //, origin: Origin[mut]]( var isnewline = unlikely( _is_newline_char(ptr, eol_start, b0, char_len) ) - var char_end = int(isnewline) * (eol_start + char_len) - var next_idx = char_end * int(char_end < length) + var char_end = Int(isnewline) * (eol_start + char_len) + var next_idx = char_end * Int(char_end < length) var is_r_n = b0 == `\r` and next_idx != 0 and ptr[ next_idx ] == `\n` - eol_length = int(isnewline) * char_len + int(is_r_n) + eol_length = Int(isnewline) * char_len + Int(is_r_n) if isnewline: break eol_start += char_len - var str_len = eol_start - offset + int(keepends) * eol_length + var str_len = eol_start - offset + Int(keepends) * eol_length var s = StringSlice[O](ptr=ptr + offset, length=str_len) output.append(s) offset = eol_start + eol_length diff --git a/stdlib/src/collections/vector.mojo b/stdlib/src/collections/vector.mojo index 1466c23f9d..6beb0ef3b6 100644 --- a/stdlib/src/collections/vector.mojo +++ b/stdlib/src/collections/vector.mojo @@ -217,7 +217,7 @@ struct InlinedFixedVector[ Returns: The element at the given index. """ - var index = int(idx) + var index = Int(idx) debug_assert( -self.current_size <= index < self.current_size, "index must be within bounds", @@ -244,7 +244,7 @@ struct InlinedFixedVector[ idx: The index of the element. value: The value to assign. """ - var index = int(idx) + var index = Int(idx) debug_assert( -self.current_size <= index < self.current_size, "index must be within bounds", diff --git a/stdlib/src/hashlib/hash.mojo b/stdlib/src/hashlib/hash.mojo index 6b5c028796..315cc056bb 100644 --- a/stdlib/src/hashlib/hash.mojo +++ b/stdlib/src/hashlib/hash.mojo @@ -41,11 +41,11 @@ from memory import UnsafePointer, bitcast, memcpy, memset_zero, stack_allocation # Doing so can help prevent DDOS attacks on data structures relying on these # hash functions. See `hash(bytes, n)` documentation for more details. # TODO(27659): This is always 0 right now -# var HASH_SECRET = int(random.random_ui64(0, UInt64.MAX) +# var HASH_SECRET = Int(random.random_ui64(0, UInt64.MAX) fn _init_hash_secret() -> Int: - return int(random.random_ui64(0, UInt64.MAX)) + return Int(random.random_ui64(0, UInt64.MAX)) alias _HASH_SECRET_VALUE = _Global["HASH_SECRET", Int, _init_hash_secret] @@ -173,7 +173,7 @@ fn _hash_simd[type: DType, size: Int](data: SIMD[type, size]) -> UInt: bitcast[int_type, 1](hash_data[i]).cast[DType.uint64](), ) - return int(final_data) + return Int(final_data) fn hash(bytes: UnsafePointer[UInt8], n: Int) -> UInt: diff --git a/stdlib/src/math/math.mojo b/stdlib/src/math/math.mojo index 836a0b3c0b..81d53289cf 100644 --- a/stdlib/src/math/math.mojo +++ b/stdlib/src/math/math.mojo @@ -243,7 +243,7 @@ fn sqrt[ @parameter for i in range(simd_width): - res[i] = sqrt(int(x[i])) + res[i] = sqrt(Int(x[i])) return res elif is_nvidia_gpu(): diff --git a/stdlib/src/memory/memory.mojo b/stdlib/src/memory/memory.mojo index 51abfb7b39..0cbf1e0d65 100644 --- a/stdlib/src/memory/memory.mojo +++ b/stdlib/src/memory/memory.mojo @@ -79,7 +79,7 @@ fn _memcmp_impl_unconstrained[ var s2i = s2.load[width=simd_width](i) var diff = s1i != s2i if any(diff): - var index = int( + var index = Int( diff.select( iota, SIMD[DType.uint8, simd_width](255) ).reduce_min() @@ -90,7 +90,7 @@ fn _memcmp_impl_unconstrained[ var s2i = s2.load[width=simd_width](last) var diff = s1i != s2i if any(diff): - var index = int( + var index = Int( diff.select(iota, SIMD[DType.uint8, simd_width](255)).reduce_min() ) return -1 if s1i[index] < s2i[index] else 1 diff --git a/stdlib/src/memory/pointer.mojo b/stdlib/src/memory/pointer.mojo index 280cc5fd3d..1cd5f70dc4 100644 --- a/stdlib/src/memory/pointer.mojo +++ b/stdlib/src/memory/pointer.mojo @@ -187,7 +187,7 @@ struct AddressSpace(EqualityComparable, Stringable, Writable): Args: value: The address space value. """ - self._value = int(value) + self._value = Int(value) @always_inline("nodebug") fn value(self) -> Int: diff --git a/stdlib/src/memory/span.mojo b/stdlib/src/memory/span.mojo index 099c798bed..af08b48728 100644 --- a/stdlib/src/memory/span.mojo +++ b/stdlib/src/memory/span.mojo @@ -182,10 +182,10 @@ struct Span[ """ # TODO: Simplify this with a UInt type. debug_assert( - -self._len <= int(idx) < self._len, "index must be within bounds" + -self._len <= Int(idx) < self._len, "index must be within bounds" ) # TODO(MSTDL-1086): optimize away SIMD/UInt normalization check - var offset = int(idx) + var offset = Int(idx) if offset < 0: offset += len(self) return self._data[offset] diff --git a/stdlib/src/memory/unsafe_pointer.mojo b/stdlib/src/memory/unsafe_pointer.mojo index cf6c8d3cc6..c2aefe847e 100644 --- a/stdlib/src/memory/unsafe_pointer.mojo +++ b/stdlib/src/memory/unsafe_pointer.mojo @@ -318,7 +318,7 @@ struct UnsafePointer[ Returns: True if the two pointers are equal and False otherwise. """ - return int(self) == int(rhs) + return Int(self) == Int(rhs) @__unsafe_disable_nested_origin_exclusivity @always_inline("nodebug") @@ -344,7 +344,7 @@ struct UnsafePointer[ Returns: True if this pointer represents a lower address and False otherwise. """ - return int(self) < int(rhs) + return Int(self) < Int(rhs) @__unsafe_disable_nested_origin_exclusivity @always_inline("nodebug") @@ -358,7 +358,7 @@ struct UnsafePointer[ Returns: True if this pointer represents a lower address and False otherwise. """ - return int(self) <= int(rhs) + return Int(self) <= Int(rhs) @__unsafe_disable_nested_origin_exclusivity @always_inline("nodebug") @@ -372,7 +372,7 @@ struct UnsafePointer[ True if this pointer represents a higher than or equal address and False otherwise. """ - return int(self) > int(rhs) + return Int(self) > Int(rhs) @__unsafe_disable_nested_origin_exclusivity @always_inline("nodebug") @@ -387,7 +387,7 @@ struct UnsafePointer[ True if this pointer represents a higher than or equal address and False otherwise. """ - return int(self) >= int(rhs) + return Int(self) >= Int(rhs) # ===-------------------------------------------------------------------===# # Trait implementations @@ -400,7 +400,7 @@ struct UnsafePointer[ Returns: Whether the pointer is null. """ - return int(self) != 0 + return Int(self) != 0 @always_inline fn __as_bool__(self) -> Bool: @@ -427,7 +427,7 @@ struct UnsafePointer[ Returns: The string representation of the pointer. """ - return hex(int(self)) + return hex(Int(self)) @no_inline fn write_to[W: Writer](self, mut writer: W): @@ -569,7 +569,7 @@ struct UnsafePointer[ The loaded value. """ constrained[offset.type.is_integral(), "offset must be integer"]() - return self.offset(int(offset)).load[ + return self.offset(Int(offset)).load[ width=width, alignment=alignment, volatile=volatile, @@ -701,7 +701,7 @@ struct UnsafePointer[ """ constrained[mut, _must_be_mut_err]() constrained[offset_type.is_integral(), "offset must be integer"]() - self.offset(int(offset))._store[alignment=alignment, volatile=volatile]( + self.offset(Int(offset))._store[alignment=alignment, volatile=volatile]( val ) @@ -736,7 +736,7 @@ struct UnsafePointer[ """ constrained[mut, _must_be_mut_err]() constrained[offset_type.is_integral(), "offset must be integer"]() - self.offset(int(offset))._store[alignment=alignment, volatile=volatile]( + self.offset(Int(offset))._store[alignment=alignment, volatile=volatile]( val ) @@ -829,7 +829,7 @@ struct UnsafePointer[ Returns: A vector which is stride loaded. """ - return strided_load(self, int(stride), SIMD[DType.bool, width](True)) + return strided_load(self, Int(stride), SIMD[DType.bool, width](True)) @always_inline("nodebug") fn strided_store[ @@ -853,7 +853,7 @@ struct UnsafePointer[ stride: The stride between stores. """ constrained[mut, _must_be_mut_err]() - strided_store(val, self, int(stride), True) + strided_store(val, self, Int(stride), True) @always_inline("nodebug") fn gather[ @@ -907,7 +907,7 @@ struct UnsafePointer[ "alignment must be a power of two integer value", ]() - var base = offset.cast[DType.index]().fma(sizeof[type](), int(self)) + var base = offset.cast[DType.index]().fma(sizeof[type](), Int(self)) return gather(base, mask, default, alignment) @always_inline("nodebug") @@ -962,7 +962,7 @@ struct UnsafePointer[ "alignment must be a power of two integer value", ]() - var base = offset.cast[DType.index]().fma(sizeof[type](), int(self)) + var base = offset.cast[DType.index]().fma(sizeof[type](), Int(self)) scatter(val, base, mask, alignment) @always_inline diff --git a/stdlib/src/os/_linux_aarch64.mojo b/stdlib/src/os/_linux_aarch64.mojo index 9647be1218..f6184d56ab 100644 --- a/stdlib/src/os/_linux_aarch64.mojo +++ b/stdlib/src/os/_linux_aarch64.mojo @@ -88,20 +88,20 @@ struct _c_stat(Stringable): fn _to_stat_result(self) -> stat_result: return stat_result( - st_dev=int(self.st_dev), - st_mode=int(self.st_mode), - st_nlink=int(self.st_nlink), - st_ino=int(self.st_ino), - st_uid=int(self.st_uid), - st_gid=int(self.st_gid), - st_rdev=int(self.st_rdev), + st_dev=Int(self.st_dev), + st_mode=Int(self.st_mode), + st_nlink=Int(self.st_nlink), + st_ino=Int(self.st_ino), + st_uid=Int(self.st_uid), + st_gid=Int(self.st_gid), + st_rdev=Int(self.st_rdev), st_atimespec=self.st_atimespec, st_ctimespec=self.st_ctimespec, st_mtimespec=self.st_mtimespec, st_birthtimespec=self.st_birthtimespec, - st_size=int(self.st_size), - st_blocks=int(self.st_blocks), - st_blksize=int(self.st_blksize), + st_size=Int(self.st_size), + st_blocks=Int(self.st_blocks), + st_blksize=Int(self.st_blksize), st_flags=0, ) diff --git a/stdlib/src/os/_linux_x86.mojo b/stdlib/src/os/_linux_x86.mojo index 7fec00bfdf..76c1816e81 100644 --- a/stdlib/src/os/_linux_x86.mojo +++ b/stdlib/src/os/_linux_x86.mojo @@ -86,20 +86,20 @@ struct _c_stat(Stringable): fn _to_stat_result(self) -> stat_result: return stat_result( - st_dev=int(self.st_dev), - st_mode=int(self.st_mode), - st_nlink=int(self.st_nlink), - st_ino=int(self.st_ino), - st_uid=int(self.st_uid), - st_gid=int(self.st_gid), - st_rdev=int(self.st_rdev), + st_dev=Int(self.st_dev), + st_mode=Int(self.st_mode), + st_nlink=Int(self.st_nlink), + st_ino=Int(self.st_ino), + st_uid=Int(self.st_uid), + st_gid=Int(self.st_gid), + st_rdev=Int(self.st_rdev), st_atimespec=self.st_atimespec, st_ctimespec=self.st_ctimespec, st_mtimespec=self.st_mtimespec, st_birthtimespec=self.st_birthtimespec, - st_size=int(self.st_size), - st_blocks=int(self.st_blocks), - st_blksize=int(self.st_blksize), + st_size=Int(self.st_size), + st_blocks=Int(self.st_blocks), + st_blksize=Int(self.st_blksize), st_flags=0, ) diff --git a/stdlib/src/os/_macos.mojo b/stdlib/src/os/_macos.mojo index 1d1a7d11d3..b23a5f713d 100644 --- a/stdlib/src/os/_macos.mojo +++ b/stdlib/src/os/_macos.mojo @@ -93,21 +93,21 @@ struct _c_stat(Stringable): fn _to_stat_result(self) -> stat_result: return stat_result( - st_dev=int(self.st_dev), - st_mode=int(self.st_mode), - st_nlink=int(self.st_nlink), - st_ino=int(self.st_ino), - st_uid=int(self.st_uid), - st_gid=int(self.st_gid), - st_rdev=int(self.st_rdev), + st_dev=Int(self.st_dev), + st_mode=Int(self.st_mode), + st_nlink=Int(self.st_nlink), + st_ino=Int(self.st_ino), + st_uid=Int(self.st_uid), + st_gid=Int(self.st_gid), + st_rdev=Int(self.st_rdev), st_atimespec=self.st_atimespec, st_ctimespec=self.st_ctimespec, st_mtimespec=self.st_mtimespec, st_birthtimespec=self.st_birthtimespec, - st_size=int(self.st_size), - st_blocks=int(self.st_blocks), - st_blksize=int(self.st_blksize), - st_flags=int(self.st_flags), + st_size=Int(self.st_size), + st_blocks=Int(self.st_blocks), + st_blksize=Int(self.st_blksize), + st_flags=Int(self.st_flags), ) diff --git a/stdlib/src/os/os.mojo b/stdlib/src/os/os.mojo index 3a8baa7aee..cf44c53814 100644 --- a/stdlib/src/os/os.mojo +++ b/stdlib/src/os/os.mojo @@ -201,7 +201,7 @@ fn getuid() -> Int: constrained[ not os_is_windows(), "operating system must be Linux or macOS" ]() - return int(external_call["getuid", UInt32]()) + return Int(external_call["getuid", UInt32]()) # ===----------------------------------------------------------------------=== # diff --git a/stdlib/src/os/path/path.mojo b/stdlib/src/os/path/path.mojo index 97a9737635..60ea06e96b 100644 --- a/stdlib/src/os/path/path.mojo +++ b/stdlib/src/os/path/path.mojo @@ -52,22 +52,22 @@ fn _constrain_unix(): fn _get_stat_st_mode(path: String) raises -> Int: @parameter if os_is_macos(): - return int(_stat_macos(path).st_mode) + return Int(_stat_macos(path).st_mode) elif has_neon(): - return int(_stat_linux_arm(path).st_mode) + return Int(_stat_linux_arm(path).st_mode) else: - return int(_stat_linux_x86(path).st_mode) + return Int(_stat_linux_x86(path).st_mode) @always_inline fn _get_lstat_st_mode(path: String) raises -> Int: @parameter if os_is_macos(): - return int(_lstat_macos(path).st_mode) + return Int(_lstat_macos(path).st_mode) elif has_neon(): - return int(_lstat_linux_arm(path).st_mode) + return Int(_lstat_linux_arm(path).st_mode) else: - return int(_lstat_linux_x86(path).st_mode) + return Int(_lstat_linux_x86(path).st_mode) # ===----------------------------------------------------------------------=== # @@ -489,7 +489,7 @@ fn _is_shell_special_variable(byte: Byte) -> Bool: ord("8"), ord("9"), ) - return int(byte) in shell_variables + return Int(byte) in shell_variables fn _is_alphanumeric(byte: Byte) -> Bool: @@ -501,7 +501,7 @@ fn _is_alphanumeric(byte: Byte) -> Bool: Returns: True if the byte is an ASCII letter, number, or underscore and False otherwise. """ - var b = int(byte) + var b = Int(byte) return ( b == ord("_") or ord("0") <= b diff --git a/stdlib/src/prelude/__init__.mojo b/stdlib/src/prelude/__init__.mojo index 50c1cb8d1b..75b88c8700 100644 --- a/stdlib/src/prelude/__init__.mojo +++ b/stdlib/src/prelude/__init__.mojo @@ -60,7 +60,6 @@ from builtin.int import ( ImplicitlyIntable, IntableRaising, index, - int, ) from builtin.int_literal import IntLiteral from builtin.io import input, print diff --git a/stdlib/src/pwd/_linux.mojo b/stdlib/src/pwd/_linux.mojo index 2c485aa5e7..3f1d3b4460 100644 --- a/stdlib/src/pwd/_linux.mojo +++ b/stdlib/src/pwd/_linux.mojo @@ -37,8 +37,8 @@ fn _build_pw_struct(passwd_ptr: UnsafePointer[_C_Passwd]) raises -> Passwd: return Passwd( pw_name=String(c_pwuid.pw_name), pw_passwd=String(c_pwuid.pw_passwd), - pw_uid=int(c_pwuid.pw_uid), - pw_gid=int(c_pwuid.pw_gid), + pw_uid=Int(c_pwuid.pw_uid), + pw_gid=Int(c_pwuid.pw_gid), pw_gecos=String(c_pwuid.pw_gecos), pw_dir=String(c_pwuid.pw_dir), pw_shell=String(c_pwuid.pw_shell), diff --git a/stdlib/src/pwd/_macos.mojo b/stdlib/src/pwd/_macos.mojo index 5958ab1a58..348a4b1377 100644 --- a/stdlib/src/pwd/_macos.mojo +++ b/stdlib/src/pwd/_macos.mojo @@ -41,8 +41,8 @@ fn _build_pw_struct(passwd_ptr: UnsafePointer[_C_Passwd]) raises -> Passwd: var passwd = Passwd( pw_name=String(c_pwuid.pw_name), pw_passwd=String(c_pwuid.pw_passwd), - pw_uid=int(c_pwuid.pw_uid), - pw_gid=int(c_pwuid.pw_gid), + pw_uid=Int(c_pwuid.pw_uid), + pw_gid=Int(c_pwuid.pw_gid), pw_gecos=String(c_pwuid.pw_gecos), pw_dir=String(c_pwuid.pw_dir), pw_shell=String(c_pwuid.pw_shell), diff --git a/stdlib/src/python/_cpython.mojo b/stdlib/src/python/_cpython.mojo index d047c84b3d..e247533f6f 100644 --- a/stdlib/src/python/_cpython.mojo +++ b/stdlib/src/python/_cpython.mojo @@ -175,7 +175,7 @@ struct PyObjectPtr: Returns: Bool: True if the pointers are equal, False otherwise. """ - return int(self.unsized_obj_ptr) == int(rhs.unsized_obj_ptr) + return Int(self.unsized_obj_ptr) == Int(rhs.unsized_obj_ptr) fn __ne__(self, rhs: PyObjectPtr) -> Bool: """Compare two PyObjectPtr for inequality. @@ -233,16 +233,16 @@ struct PyObjectPtr: Returns: Bool: True if the pointer is null, False otherwise. """ - return int(self.unsized_obj_ptr) == 0 + return Int(self.unsized_obj_ptr) == 0 - # TODO: Consider removing this and inlining int(p.value) into callers + # TODO: Consider removing this and inlining Int(p.value) into callers fn _get_ptr_as_int(self) -> Int: """Get the pointer value as an integer. Returns: Int: The integer representation of the pointer. """ - return int(self.unsized_obj_ptr) + return Int(self.unsized_obj_ptr) @value @@ -1469,13 +1469,13 @@ struct CPython: """[Reference]( https://docs.python.org/3/c-api/object.html#c.PyObject_Length). """ - return int(self.lib.call["PyObject_Length", Int](obj)) + return Int(self.lib.call["PyObject_Length", Int](obj)) fn PyObject_Hash(mut self, obj: PyObjectPtr) -> Int: """[Reference]( https://docs.python.org/3/c-api/object.html#c.PyObject_Hash). """ - return int(self.lib.call["PyObject_Hash", Int](obj)) + return Int(self.lib.call["PyObject_Hash", Int](obj)) fn PyObject_GetIter( mut self, traversable_py_object: PyObjectPtr diff --git a/stdlib/src/python/python_object.mojo b/stdlib/src/python/python_object.mojo index 7492ce0c40..4abc013786 100644 --- a/stdlib/src/python/python_object.mojo +++ b/stdlib/src/python/python_object.mojo @@ -364,7 +364,7 @@ struct PythonObject( value: The boolean value. """ cpython = _get_global_python_itf().cpython() - self.py_object = cpython.PyBool_FromLong(int(value)) + self.py_object = cpython.PyBool_FromLong(Int(value)) @implicit fn __init__(out self, integer: Int): @@ -392,7 +392,7 @@ struct PythonObject( @parameter if dt is DType.bool: - self.py_object = cpython.PyBool_FromLong(int(value)) + self.py_object = cpython.PyBool_FromLong(Int(value)) elif dt.is_integral(): int_val = value.cast[DType.index]().value self.py_object = cpython.PyLong_FromSsize_t(int_val) @@ -1573,7 +1573,7 @@ struct PythonObject( Returns: An `UnsafePointer` for the underlying Python data. """ - var tmp = int(self) + var tmp = Int(self) var result = UnsafePointer.address_of(tmp).bitcast[ UnsafePointer[Scalar[type]] ]()[] diff --git a/stdlib/src/random/random.mojo b/stdlib/src/random/random.mojo index 03d2f57275..96c6fdb6dd 100644 --- a/stdlib/src/random/random.mojo +++ b/stdlib/src/random/random.mojo @@ -236,5 +236,5 @@ fn shuffle[T: CollectionElement, //](mut list: List[T]): T: The type of element in the List. """ for i in reversed(range(len(list))): - var j = int(random_ui64(0, i)) + var j = Int(random_ui64(0, i)) list.swap_elements(i, j) diff --git a/stdlib/src/stat/stat.mojo b/stdlib/src/stat/stat.mojo index 3f17248e9a..c9ffba910b 100644 --- a/stdlib/src/stat/stat.mojo +++ b/stdlib/src/stat/stat.mojo @@ -50,7 +50,7 @@ fn S_ISLNK[intable: Intable](mode: intable) -> Bool: Returns: True if the mode is a symlink and False otherwise. """ - return (int(mode) & S_IFMT) == S_IFLNK + return (Int(mode) & S_IFMT) == S_IFLNK fn S_ISREG[intable: Intable](mode: intable) -> Bool: @@ -66,7 +66,7 @@ fn S_ISREG[intable: Intable](mode: intable) -> Bool: Returns: True if the mode is a regular file and False otherwise. """ - return (int(mode) & S_IFMT) == S_IFREG + return (Int(mode) & S_IFMT) == S_IFREG fn S_ISDIR[intable: Intable](mode: intable) -> Bool: @@ -82,7 +82,7 @@ fn S_ISDIR[intable: Intable](mode: intable) -> Bool: Returns: True if the mode is a directory and False otherwise. """ - return (int(mode) & S_IFMT) == S_IFDIR + return (Int(mode) & S_IFMT) == S_IFDIR fn S_ISCHR[intable: Intable](mode: intable) -> Bool: @@ -98,7 +98,7 @@ fn S_ISCHR[intable: Intable](mode: intable) -> Bool: Returns: True if the mode is a character device and False otherwise. """ - return (int(mode) & S_IFMT) == S_IFCHR + return (Int(mode) & S_IFMT) == S_IFCHR fn S_ISBLK[intable: Intable](mode: intable) -> Bool: @@ -114,7 +114,7 @@ fn S_ISBLK[intable: Intable](mode: intable) -> Bool: Returns: True if the mode is a block device and False otherwise. """ - return (int(mode) & S_IFMT) == S_IFBLK + return (Int(mode) & S_IFMT) == S_IFBLK fn S_ISFIFO[intable: Intable](mode: intable) -> Bool: @@ -130,7 +130,7 @@ fn S_ISFIFO[intable: Intable](mode: intable) -> Bool: Returns: True if the mode is a fifo and False otherwise. """ - return (int(mode) & S_IFMT) == S_IFIFO + return (Int(mode) & S_IFMT) == S_IFIFO fn S_ISSOCK[intable: Intable](mode: intable) -> Bool: @@ -146,4 +146,4 @@ fn S_ISSOCK[intable: Intable](mode: intable) -> Bool: Returns: True if the mode is a socket and False otherwise. """ - return (int(mode) & S_IFMT) == S_IFSOCK + return (Int(mode) & S_IFMT) == S_IFSOCK diff --git a/stdlib/src/sys/_amdgpu.mojo b/stdlib/src/sys/_amdgpu.mojo index 351476d78a..7e3f2ca06a 100644 --- a/stdlib/src/sys/_amdgpu.mojo +++ b/stdlib/src/sys/_amdgpu.mojo @@ -555,14 +555,14 @@ struct Header: ]() self._handle[].service = service_id - payload[int(me), 0] = arg0 - payload[int(me), 1] = arg1 - payload[int(me), 2] = arg2 - payload[int(me), 3] = arg3 - payload[int(me), 4] = arg4 - payload[int(me), 5] = arg5 - payload[int(me), 6] = arg6 - payload[int(me), 7] = arg7 + payload[Int(me), 0] = arg0 + payload[Int(me), 1] = arg1 + payload[Int(me), 2] = arg2 + payload[Int(me), 3] = arg3 + payload[Int(me), 4] = arg4 + payload[Int(me), 5] = arg5 + payload[Int(me), 6] = arg6 + payload[Int(me), 7] = arg7 fn get_return_value( mut self, payload: Payload, me: UInt32, low: UInt32 @@ -605,7 +605,7 @@ struct Header: sleep(UInt(1)) - var ptr = payload._handle[].slots[int(me)] + var ptr = payload._handle[].slots[Int(me)] var value0 = ptr[0] var value1 = ptr[1] return value0, value1 diff --git a/stdlib/src/sys/info.mojo b/stdlib/src/sys/info.mojo index 5f6e10d9bf..b25fd15142 100644 --- a/stdlib/src/sys/info.mojo +++ b/stdlib/src/sys/info.mojo @@ -851,15 +851,15 @@ fn _macos_version() raises -> Tuple[Int, Int, Int]: var patch = 0 if "." in osver: - major = int(osver[: osver.find(".")]) + major = Int(osver[: osver.find(".")]) osver = osver[osver.find(".") + 1 :] if "." in osver: - minor = int(osver[: osver.find(".")]) + minor = Int(osver[: osver.find(".")]) osver = osver[osver.find(".") + 1 :] if "." in osver: - patch = int(osver[: osver.find(".")]) + patch = Int(osver[: osver.find(".")]) return (major, minor, patch) diff --git a/stdlib/src/sys/intrinsics.mojo b/stdlib/src/sys/intrinsics.mojo index 8541672871..cdcf3a19ac 100644 --- a/stdlib/src/sys/intrinsics.mojo +++ b/stdlib/src/sys/intrinsics.mojo @@ -661,7 +661,7 @@ fn strided_load[ if simd_width == 1: return addr.load() if mask else Scalar[type]() - var offset = int(addr) + stride * sizeof[type]() * math.iota[ + var offset = Int(addr) + stride * sizeof[type]() * math.iota[ DType.index, simd_width ]() var passthrough = SIMD[type, simd_width]() @@ -702,7 +702,7 @@ fn strided_store[ addr.store(value[0]) return - var offset = int(addr) + stride * sizeof[type]() * math.iota[ + var offset = Int(addr) + stride * sizeof[type]() * math.iota[ DType.index, simd_width ]() scatter(value, offset, mask) @@ -880,7 +880,7 @@ fn lane_id() -> UInt: @parameter if is_nvidia_gpu(): return UInt( - int( + Int( llvm_intrinsic[ "llvm.nvvm.read.ptx.sreg.laneid", Int32, @@ -896,7 +896,7 @@ fn lane_id() -> UInt: "llvm.amdgcn.mbcnt.lo", Int32, has_side_effect=False ](none, zero) return UInt( - int( + Int( llvm_intrinsic[ "llvm.amdgcn.mbcnt.hi", Int32, has_side_effect=False ](none, t).cast[DType.uint32]() diff --git a/stdlib/src/sys/terminate.mojo b/stdlib/src/sys/terminate.mojo index 69fae08ca4..fb78b0e59c 100644 --- a/stdlib/src/sys/terminate.mojo +++ b/stdlib/src/sys/terminate.mojo @@ -34,4 +34,4 @@ fn exit[intable: Intable](code: intable): Args: code: The exit code. """ - libc.exit(c_int(int(code))) + libc.exit(c_int(Int(code))) diff --git a/stdlib/src/tempfile/tempfile.mojo b/stdlib/src/tempfile/tempfile.mojo index 2ad3b91d60..18b783cffe 100644 --- a/stdlib/src/tempfile/tempfile.mojo +++ b/stdlib/src/tempfile/tempfile.mojo @@ -35,7 +35,7 @@ fn _get_random_name(size: Int = 8) -> String: alias characters = String("abcdefghijklmnopqrstuvwxyz0123456789_") var name_list = List[UInt8](capacity=size + 1) for _ in range(size): - var rand_index = int( + var rand_index = Int( random.random_ui64(0, characters.byte_length() - 1) ) name_list.append(ord(characters[rand_index])) diff --git a/stdlib/src/time/time.mojo b/stdlib/src/time/time.mojo index f6221590ac..5ace9e42ce 100644 --- a/stdlib/src/time/time.mojo +++ b/stdlib/src/time/time.mojo @@ -101,7 +101,7 @@ struct _FILETIME: ) + self.dw_low_date_time.cast[ DType.uint64 ]() - windows_to_unix_epoch_offset_ns - return int(interval_count * 100) + return Int(interval_count * 100) @always_inline @@ -123,7 +123,7 @@ fn _gettime_as_nsec_unix(clockid: Int) -> UInt: var ts = _clock_gettime(clockid) return ts.as_nanoseconds() else: - return int( + return Int( external_call["clock_gettime_nsec_np", Int64](Int32(clockid)) ) @@ -132,7 +132,7 @@ fn _gettime_as_nsec_unix(clockid: Int) -> UInt: fn _gpu_clock() -> UInt: """Returns a 64-bit unsigned cycle counter.""" alias asm = "llvm.nvvm.read.ptx.sreg.clock64" if is_nvidia_gpu() else "llvm.amdgcn.s.memtime" - return int(llvm_intrinsic[asm, Int64]()) + return Int(llvm_intrinsic[asm, Int64]()) @always_inline @@ -271,7 +271,7 @@ fn _time_function_windows[ # Note: Windows performance counter resolution is in µs. var elapsed_time_in_ns = (elapsed_ticks * 1_000_000_000) // ticks_per_sec - return int(elapsed_time_in_ns) + return Int(elapsed_time_in_ns) @always_inline @@ -340,8 +340,8 @@ fn sleep(sec: Float64): alias NANOSECONDS_IN_SECOND = 1_000_000_000 var total_secs = floor(sec) var tv_spec = _CTimeSpec( - int(total_secs), - int((sec - total_secs) * NANOSECONDS_IN_SECOND), + Int(total_secs), + Int((sec - total_secs) * NANOSECONDS_IN_SECOND), ) var req = UnsafePointer[_CTimeSpec].address_of(tv_spec) var rem = UnsafePointer[_CTimeSpec]() diff --git a/stdlib/src/utils/index.mojo b/stdlib/src/utils/index.mojo index 4e66f31f28..27dc95bbb3 100644 --- a/stdlib/src/utils/index.mojo +++ b/stdlib/src/utils/index.mojo @@ -390,7 +390,7 @@ struct IndexList[ Returns: The tuple element value. """ - return int(self.data.__getitem__[idx]()) + return Int(self.data.__getitem__[idx]()) @always_inline("nodebug") fn __getitem__[I: Indexer](self, idx: I) -> Int: @@ -405,7 +405,7 @@ struct IndexList[ Returns: The tuple element value. """ - return int(self.data[idx]) + return Int(self.data[idx]) @always_inline("nodebug") fn __setitem__[idx: Int](mut self, val: Int): @@ -452,7 +452,7 @@ struct IndexList[ @parameter for i in range(size): - res[i] = int(self.__getitem__[i]()) + res[i] = Int(self.__getitem__[i]()) return res @always_inline("nodebug") @@ -877,7 +877,7 @@ fn Index[ Returns: The constructed IndexList. """ - return __type_of(result)(int(x)) + return __type_of(result)(Int(x)) @always_inline @@ -901,7 +901,7 @@ fn Index[ Returns: The constructed IndexList. """ - return __type_of(result)(int(x)) + return __type_of(result)(Int(x)) @always_inline @@ -933,7 +933,7 @@ fn Index[ Returns: The constructed IndexList. """ - return __type_of(result)(int(x), int(y)) + return __type_of(result)(Int(x), Int(y)) @always_inline @@ -959,7 +959,7 @@ fn Index[ Returns: The constructed IndexList. """ - return __type_of(result)(int(x), int(y)) + return __type_of(result)(Int(x), Int(y)) @always_inline @@ -995,7 +995,7 @@ fn Index[ Returns: The constructed IndexList. """ - return __type_of(result)(int(x), int(y), int(z)) + return __type_of(result)(Int(x), Int(y), Int(z)) @always_inline @@ -1035,7 +1035,7 @@ fn Index[ Returns: The constructed IndexList. """ - return __type_of(result)(int(x), int(y), int(z), int(w)) + return __type_of(result)(Int(x), Int(y), Int(z), Int(w)) @always_inline @@ -1079,7 +1079,7 @@ fn Index[ Returns: The constructed IndexList. """ - return __type_of(result)(int(x), int(y), int(z), int(w), int(v)) + return __type_of(result)(Int(x), Int(y), Int(z), Int(w), Int(v)) # ===-----------------------------------------------------------------------===# diff --git a/stdlib/src/utils/lock.mojo b/stdlib/src/utils/lock.mojo index 6459952b4e..4648552302 100644 --- a/stdlib/src/utils/lock.mojo +++ b/stdlib/src/utils/lock.mojo @@ -136,11 +136,11 @@ struct BlockingScopedLock: """Acquire the lock on entry. This is done by setting the owner of the lock to own address.""" var address = UnsafePointer[Self].address_of(self) - self.lock[].lock(int(address)) + self.lock[].lock(Int(address)) @no_inline fn __exit__(mut self): """Release the lock on exit. Reset the address on the underlying lock.""" var address = UnsafePointer[Self].address_of(self) - _ = self.lock[].unlock(int(address)) + _ = self.lock[].unlock(Int(address)) diff --git a/stdlib/src/utils/numerics.mojo b/stdlib/src/utils/numerics.mojo index e1ec498345..4d01169865 100644 --- a/stdlib/src/utils/numerics.mojo +++ b/stdlib/src/utils/numerics.mojo @@ -160,7 +160,7 @@ struct FPUtils[ The sign mask. """ # convert to `Int` first to bypass overflow check - return 1 << int(Self.exponent_width() + Self.mantissa_width()) + return 1 << Int(Self.exponent_width() + Self.mantissa_width()) @staticmethod @always_inline @@ -216,7 +216,7 @@ struct FPUtils[ Returns: An integer representation of the floating-point value. """ - return int(bitcast[Self.integral_type, 1](value)) + return Int(bitcast[Self.integral_type, 1](value)) @staticmethod @always_inline @@ -303,7 +303,7 @@ struct FPUtils[ Returns: The biased exponent as an Int. """ - return int( + return Int( Self.bitcast_to_uint(value) >> Self.mantissa_width() & ((1 << Self.exponent_width()) - 1) ) diff --git a/stdlib/src/utils/stringref.mojo b/stdlib/src/utils/stringref.mojo index a24d71c9bc..5bdb71d0b2 100644 --- a/stdlib/src/utils/stringref.mojo +++ b/stdlib/src/utils/stringref.mojo @@ -241,7 +241,7 @@ struct StringRef( Returns: The character at the specified position. """ - return StringRef {data: self.data + int(idx), length: 1} + return StringRef {data: self.data + Int(idx), length: 1} @always_inline fn __eq__(self, rhs: StringRef) -> Bool: @@ -293,7 +293,7 @@ struct StringRef( """ var len1 = len(self) var len2 = len(rhs) - return int(len1 < len2) > _memcmp_impl_unconstrained( + return Int(len1 < len2) > _memcmp_impl_unconstrained( self.data, rhs.data, min(len1, len2) ) @@ -373,8 +373,8 @@ struct StringRef( fn __int__(self) raises -> Int: """Parses the given string as a base-10 integer and returns that value. - For example, `int("19")` returns `19`. If the given string cannot be parsed - as an integer value, an error is raised. For example, `int("hi")` raises an + For example, `Int("19")` returns `19`. If the given string cannot be parsed + as an integer value, an error is raised. For example, `Int("hi")` raises an error. Returns: @@ -523,7 +523,7 @@ struct StringRef( if not loc: return -1 - return int(loc) - int(self.unsafe_ptr()) + return Int(loc) - Int(self.unsafe_ptr()) fn rfind(self, substr: StringRef, start: Int = 0) -> Int: """Finds the offset of the last occurrence of `substr` starting at @@ -556,7 +556,7 @@ struct StringRef( if not loc: return -1 - return int(loc) - int(self.unsafe_ptr()) + return Int(loc) - Int(self.unsafe_ptr()) fn _from_start(self, start: Int) -> StringRef: """Gets the StringRef pointing to the substring after the specified slice start position. @@ -656,7 +656,7 @@ fn _memchr[ var bool_mask = source.load[width=bool_mask_width](i) == first_needle var mask = pack_bits(bool_mask) if mask: - return source + int(i + count_trailing_zeros(mask)) + return source + Int(i + count_trailing_zeros(mask)) for i in range(vectorized_end, len): if source[i] == char: @@ -701,7 +701,7 @@ fn _memmem[ var mask = pack_bits(bool_mask) while mask: - var offset = int(i + count_trailing_zeros(mask)) + var offset = Int(i + count_trailing_zeros(mask)) if memcmp(haystack + offset + 1, needle + 1, needle_len - 1) == 0: return haystack + offset mask = mask & (mask - 1) diff --git a/stdlib/test/bit/test_bit.mojo b/stdlib/test/bit/test_bit.mojo index bedcc02021..489976fdeb 100644 --- a/stdlib/test/bit/test_bit.mojo +++ b/stdlib/test/bit/test_bit.mojo @@ -506,7 +506,7 @@ def test_rotate_bits_simd(): fn _log2_floor(n: Int) -> Int: - return int(floor(log2(float(n)))) + return Int(floor(log2(float(n)))) def test_log2_floor(): diff --git a/stdlib/test/builtin/test_bfloat16.mojo b/stdlib/test/builtin/test_bfloat16.mojo index 399c2deb27..1b01473741 100644 --- a/stdlib/test/builtin/test_bfloat16.mojo +++ b/stdlib/test/builtin/test_bfloat16.mojo @@ -23,8 +23,8 @@ def test_methods(): assert_equal(BFloat16(4.4) * 0.5, 2.2) assert_equal(BFloat16(4.4) / 0.5, 8.8) - assert_equal(int(BFloat16(3.0)), 3) - assert_equal(int(BFloat16(3.5)), 3) + assert_equal(Int(BFloat16(3.0)), 3) + assert_equal(Int(BFloat16(3.5)), 3) assert_almost_equal(BFloat16(4.4).cast[DType.float32](), 4.40625) assert_equal(BFloat16(3.0).cast[DType.float32](), 3) diff --git a/stdlib/test/builtin/test_bool.mojo b/stdlib/test/builtin/test_bool.mojo index ccde4536d2..2225b795bf 100644 --- a/stdlib/test/builtin/test_bool.mojo +++ b/stdlib/test/builtin/test_bool.mojo @@ -23,8 +23,8 @@ def test_bool_cast_to_int(): assert_equal(False.__int__(), 0) assert_equal(True.__int__(), 1) - assert_equal(int(False), 0) - assert_equal(int(True), 1) + assert_equal(Int(False), 0) + assert_equal(Int(True), 1) def test_bool_none(): diff --git a/stdlib/test/builtin/test_float_literal.mojo b/stdlib/test/builtin/test_float_literal.mojo index 6746b140b6..1723e8cd9c 100644 --- a/stdlib/test/builtin/test_float_literal.mojo +++ b/stdlib/test/builtin/test_float_literal.mojo @@ -158,11 +158,11 @@ def test_div_mod(): def test_int_conversion(): - assert_equal(int(-4.0), -4) - assert_equal(int(-4.5), -4) - assert_equal(int(-4.3), -4) - assert_equal(int(4.5), 4) - assert_equal(int(4.0), 4) + assert_equal(Int(-4.0), -4) + assert_equal(Int(-4.5), -4) + assert_equal(Int(-4.3), -4) + assert_equal(Int(4.5), 4) + assert_equal(Int(4.0), 4) def test_bool(): diff --git a/stdlib/test/builtin/test_int.mojo b/stdlib/test/builtin/test_int.mojo index d6d306c391..ad487d7241 100644 --- a/stdlib/test/builtin/test_int.mojo +++ b/stdlib/test/builtin/test_int.mojo @@ -191,10 +191,10 @@ def test_decimal_digit_count(): def test_int_uint(): var u1 = UInt(42) - assert_equal(42, int(u1)) + assert_equal(42, Int(u1)) var u2 = UInt(0) - assert_equal(0, int(u2)) + assert_equal(0, Int(u2)) def test_comparison(): diff --git a/stdlib/test/builtin/test_math.mojo b/stdlib/test/builtin/test_math.mojo index 4f79fe6da5..430d0ffde9 100644 --- a/stdlib/test/builtin/test_math.mojo +++ b/stdlib/test/builtin/test_math.mojo @@ -107,9 +107,9 @@ def test_pow(): alias F = SIMD[DType.float32, 4] var base = F(0.0, 1.0, 2.0, 3.0) assert_equal(pow(base, 2.0), F(0.0, 1.0, 4.0, 9.0)) - assert_equal(pow(base, int(2)), F(0.0, 1.0, 4.0, 9.0)) + assert_equal(pow(base, Int(2)), F(0.0, 1.0, 4.0, 9.0)) alias I = SIMD[DType.int32, 4] - assert_equal(pow(I(0, 1, 2, 3), int(2)), I(0, 1, 4, 9)) + assert_equal(pow(I(0, 1, 2, 3), Int(2)), I(0, 1, 4, 9)) def main(): diff --git a/stdlib/test/builtin/test_range.mojo b/stdlib/test/builtin/test_range.mojo index 051656d27d..f9535b288e 100644 --- a/stdlib/test/builtin/test_range.mojo +++ b/stdlib/test/builtin/test_range.mojo @@ -167,7 +167,7 @@ def test_range_reversed(): def test_indexing(): var r = range(10) assert_equal(r[True], 1) - assert_equal(r[int(4)], 4) + assert_equal(r[Int(4)], 4) assert_equal(r[3], 3) diff --git a/stdlib/test/builtin/test_simd.mojo b/stdlib/test/builtin/test_simd.mojo index d7bd8928b4..4871fcaca2 100644 --- a/stdlib/test/builtin/test_simd.mojo +++ b/stdlib/test/builtin/test_simd.mojo @@ -51,10 +51,10 @@ def test_cast(): ) var b: UInt16 = 128 - assert_equal(int(b.cast[DType.uint8]()), 128) - assert_equal(int(b.cast[DType.uint16]()), 128) - assert_equal(int(b.cast[DType.int8]()), -128) - assert_equal(int(b.cast[DType.int16]()), 128) + assert_equal(Int(b.cast[DType.uint8]()), 128) + assert_equal(Int(b.cast[DType.uint16]()), 128) + assert_equal(Int(b.cast[DType.int8]()), -128) + assert_equal(Int(b.cast[DType.int16]()), 128) @parameter if not has_neon(): @@ -1114,7 +1114,7 @@ def test_clamp(): def test_indexing(): var s = SIMD[DType.int32, 4](1, 2, 3, 4) assert_equal(s[False], 1) - assert_equal(s[int(2)], 3) + assert_equal(s[Int(2)], 3) assert_equal(s[3], 4) @@ -1136,7 +1136,7 @@ def test_reduce(): x8 = X8(0, 1, 2, 3, 4, 5, 6, 7) x4 = X4(4, 6, 8, 10) x2 = X2(12, 16) - x1 = X1(int(28)) # TODO: fix MOCO-697 and use X1(28) instead + x1 = X1(Int(28)) # TODO: fix MOCO-697 and use X1(28) instead assert_equal(x8.reduce_add(), x1) assert_equal(x4.reduce_add(), x1) assert_equal(x2.reduce_add(), x1) @@ -1153,7 +1153,7 @@ def test_reduce(): x8 = X8(0, 1, 2, 3, 4, 5, 6, 7) x4 = X4(0, 5, 12, 21) x2 = X2(0, 105) - x1 = X1(int(0)) # TODO: fix MOCO-697 and use X1(0) instead + x1 = X1(Int(0)) # TODO: fix MOCO-697 and use X1(0) instead assert_equal(x8.reduce_mul(), x1) assert_equal(x4.reduce_mul(), x1) assert_equal(x2.reduce_mul(), x1) @@ -1170,7 +1170,7 @@ def test_reduce(): x8 = X8(0, 1, 2, 3, 4, 5, 6, 7) x4 = X4(0, 1, 2, 3) x2 = X2(0, 1) - x1 = X1(int(0)) # TODO: fix MOCO-697 and use X1(0) instead + x1 = X1(Int(0)) # TODO: fix MOCO-697 and use X1(0) instead assert_equal(x8.reduce_min(), x1) assert_equal(x4.reduce_min(), x1) assert_equal(x2.reduce_min(), x1) @@ -1187,7 +1187,7 @@ def test_reduce(): x8 = X8(0, 1, 2, 3, 4, 5, 6, 7) x4 = X4(4, 5, 6, 7) x2 = X2(6, 7) - x1 = X1(int(7)) # TODO: fix MOCO-697 and use X1(7) instead + x1 = X1(Int(7)) # TODO: fix MOCO-697 and use X1(7) instead assert_equal(x8.reduce_max(), x1) assert_equal(x4.reduce_max(), x1) assert_equal(x2.reduce_max(), x1) @@ -1206,7 +1206,7 @@ def test_reduce(): x8 = X8(0, -1, 2, -3, 4, -5, 6, -7) x4 = X4(4, -6, 8, -10) x2 = X2(12, -16) - x1 = X1(int(-4)) # TODO: fix MOCO-697 and use X1(-4) instead + x1 = X1(Int(-4)) # TODO: fix MOCO-697 and use X1(-4) instead assert_equal(x8.reduce_add(), x1) assert_equal(x4.reduce_add(), x1) assert_equal(x2.reduce_add(), x1) @@ -1223,7 +1223,7 @@ def test_reduce(): x8 = X8(0, -1, 2, -3, 4, -5, 6, -7) x4 = X4(0, 5, 12, 21) x2 = X2(0, 105) - x1 = X1(int(0)) # TODO: fix MOCO-697 and use X1(0) instead + x1 = X1(Int(0)) # TODO: fix MOCO-697 and use X1(0) instead assert_equal(x8.reduce_mul(), x1) assert_equal(x4.reduce_mul(), x1) assert_equal(x2.reduce_mul(), x1) @@ -1240,7 +1240,7 @@ def test_reduce(): x8 = X8(0, -1, 2, -3, 4, -5, 6, -7) x4 = X4(0, -5, 2, -7) x2 = X2(0, -7) - x1 = X1(int(-7)) # TODO: fix MOCO-697 and use X1(-7) instead + x1 = X1(Int(-7)) # TODO: fix MOCO-697 and use X1(-7) instead assert_equal(x8.reduce_min(), x1) assert_equal(x4.reduce_min(), x1) assert_equal(x2.reduce_min(), x1) @@ -1257,7 +1257,7 @@ def test_reduce(): x8 = X8(0, -1, 2, -3, 4, -5, 6, -7) x4 = X4(4, -1, 6, -3) x2 = X2(6, -1) - x1 = X1(int(6)) # TODO: fix MOCO-697 and use X1(6) instead + x1 = X1(Int(6)) # TODO: fix MOCO-697 and use X1(6) instead assert_equal(x8.reduce_max(), x1) assert_equal(x4.reduce_max(), x1) assert_equal(x2.reduce_max(), x1) @@ -1316,7 +1316,7 @@ def test_reduce(): x8 = X8(0, 1, 2, 3, 4, 5, 6, 7) x4 = X4(0, 1, 2, 3) x2 = X2(0, 1) - x1 = X1(int(0)) # TODO: fix MOCO-697 and use X1(0) instead + x1 = X1(Int(0)) # TODO: fix MOCO-697 and use X1(0) instead assert_equal(x8.reduce_and(), x1) assert_equal(x4.reduce_and(), x1) assert_equal(x2.reduce_and(), x1) @@ -1333,7 +1333,7 @@ def test_reduce(): x8 = X8(0, 1, 2, 3, 4, 5, 6, 7) x4 = X4(4, 5, 6, 7) x2 = X2(6, 7) - x1 = X1(int(7)) # TODO: fix MOCO-697 and use X1(7) instead + x1 = X1(Int(7)) # TODO: fix MOCO-697 and use X1(7) instead assert_equal(x8.reduce_or(), x1) assert_equal(x4.reduce_or(), x1) assert_equal(x2.reduce_or(), x1) diff --git a/stdlib/test/builtin/test_sort.mojo b/stdlib/test/builtin/test_sort.mojo index de1a34e151..5c9e9a253d 100644 --- a/stdlib/test/builtin/test_sort.mojo +++ b/stdlib/test/builtin/test_sort.mojo @@ -460,7 +460,7 @@ fn test_sort_stress() raises: ](length: Int) raises: var list = List[Int](capacity=length) for _ in range(length): - list.append(int(random_si64(-length, length))) + list.append(Int(random_si64(-length, length))) _quicksort[cmp_fn](list) @@ -522,7 +522,7 @@ def test_sort_string_small_list(): var list = random_numbers[DType.int32](10) var string_list = List[String]() for n in list: - string_list.append(str(int(n[]))) + string_list.append(str(Int(n[]))) sort(string_list) assert_sorted_string(string_list) @@ -531,7 +531,7 @@ def test_sort_string_big_list(): var list = random_numbers[DType.int32](1000) var string_list = List[String]() for n in list: - string_list.append(str(int(n[]))) + string_list.append(str(Int(n[]))) sort(string_list) assert_sorted_string(string_list) @@ -586,8 +586,8 @@ def test_sort_comparamble_elements_list(): var ages = random_numbers[DType.uint8](count) var names = List[String]("Maxim", "Max", "Alex", "Bob", "Joe") for age in ages: - var name = names[int(age[]) % len(names)] - list.append(Person(name, int(age[]))) + var name = names[Int(age[]) % len(names)] + list.append(Person(name, Int(age[]))) gen_list(10) sort(list) @@ -627,7 +627,7 @@ def test_stable_sort_stress(): var list = List[IntPair](capacity=length) for i in range(length): # make the range smaller so we can get more repeats - list.append(IntPair(int(random_si64(0, 100)), i)) + list.append(IntPair(Int(random_si64(0, 100)), i)) sort[cmp_fn, stable=True](list) diff --git a/stdlib/test/builtin/test_string_literal.mojo b/stdlib/test/builtin/test_string_literal.mojo index c549a9423c..b0782481f3 100644 --- a/stdlib/test/builtin/test_string_literal.mojo +++ b/stdlib/test/builtin/test_string_literal.mojo @@ -208,7 +208,7 @@ def test_hash(): def test_indexing(): var s = "hello" assert_equal(s[False], "h") - assert_equal(s[int(1)], "e") + assert_equal(s[Int(1)], "e") assert_equal(s[2], "l") @@ -286,7 +286,7 @@ def test_layout(): # Test empty StringLiteral contents var empty = "".unsafe_ptr() # An empty string literal is stored as just the NUL terminator. - assert_true(int(empty) != 0) + assert_true(Int(empty) != 0) # TODO(MSTDL-596): This seems to hang? # assert_equal(empty[0], 0) diff --git a/stdlib/test/collections/string/test_inlined_string.mojo b/stdlib/test/collections/string/test_inlined_string.mojo index 83a191b0a7..027ef84fd2 100644 --- a/stdlib/test/collections/string/test_inlined_string.mojo +++ b/stdlib/test/collections/string/test_inlined_string.mojo @@ -102,14 +102,14 @@ def test_small_string_construction(): # ================================== var heap_s1 = String("hello") - var heap_s1_addr = int(heap_s1.unsafe_ptr()) + var heap_s1_addr = Int(heap_s1.unsafe_ptr()) var s3 = InlineString(heap_s1^) # Test that a InlineString constructed from a String uses the same # allocation as the original String (even if the String size is small # enough to fit inline). - assert_equal(int(s3.unsafe_ptr()), heap_s1_addr) + assert_equal(Int(s3.unsafe_ptr()), heap_s1_addr) def test_small_string_iadd(): diff --git a/stdlib/test/collections/string/test_string.mojo b/stdlib/test/collections/string/test_string.mojo index 53f9f6ace8..aa4c130ddc 100644 --- a/stdlib/test/collections/string/test_string.mojo +++ b/stdlib/test/collections/string/test_string.mojo @@ -1131,11 +1131,11 @@ def test_removesuffix(): def test_intable(): - assert_equal(int(String("123")), 123) - assert_equal(int(String("10"), base=8), 8) + assert_equal(Int(String("123")), 123) + assert_equal(Int(String("10"), base=8), 8) with assert_raises(): - _ = int(String("hi")) + _ = Int(String("hi")) def test_string_mul(): @@ -1147,7 +1147,7 @@ def test_string_mul(): def test_indexing(): a = String("abc") assert_equal(a[False], "a") - assert_equal(a[int(1)], "b") + assert_equal(a[Int(1)], "b") assert_equal(a[2], "c") diff --git a/stdlib/test/collections/string/test_string_slice.mojo b/stdlib/test/collections/string/test_string_slice.mojo index 8abe0fb5c1..4b4618bd11 100644 --- a/stdlib/test/collections/string/test_string_slice.mojo +++ b/stdlib/test/collections/string/test_string_slice.mojo @@ -34,9 +34,9 @@ fn test_string_slice_layout() raises: var str_slice = StringSlice("") - var base_ptr = int(UnsafePointer.address_of(str_slice)) - var first_word_ptr = int(UnsafePointer.address_of(str_slice._slice._data)) - var second_word_ptr = int(UnsafePointer.address_of(str_slice._slice._len)) + var base_ptr = Int(UnsafePointer.address_of(str_slice)) + var first_word_ptr = Int(UnsafePointer.address_of(str_slice._slice._data)) + var second_word_ptr = Int(UnsafePointer.address_of(str_slice._slice._len)) # 1st field should be at 0-byte offset from base ptr assert_equal(first_word_ptr - base_ptr, 0) @@ -113,7 +113,7 @@ fn test_string_byte_span() raises: assert_equal(len(sub5), 0) # Empty slices still have a pointer value - assert_equal(int(sub5.unsafe_ptr()) - int(sub4.unsafe_ptr()), 2) + assert_equal(Int(sub5.unsafe_ptr()) - Int(sub4.unsafe_ptr()), 2) # ---------------------------------- # Test invalid slicing diff --git a/stdlib/test/collections/test_inline_list.mojo b/stdlib/test/collections/test_inline_list.mojo index 52adea853c..8ca491f11c 100644 --- a/stdlib/test/collections/test_inline_list.mojo +++ b/stdlib/test/collections/test_inline_list.mojo @@ -155,7 +155,7 @@ def test_indexing(): list.append(i) assert_equal(list[True], 1) - assert_equal(list[int(4)], 4) + assert_equal(list[Int(4)], 4) assert_equal(list[0], 0) diff --git a/stdlib/test/collections/test_list.mojo b/stdlib/test/collections/test_list.mojo index 6f69672a60..2ed9a71306 100644 --- a/stdlib/test/collections/test_list.mojo +++ b/stdlib/test/collections/test_list.mojo @@ -863,7 +863,7 @@ def test_list_init_span(): def test_indexing(): var l = List[Int](1, 2, 3) - assert_equal(l[int(1)], 2) + assert_equal(l[Int(1)], 2) assert_equal(l[False], 1) assert_equal(l[True], 2) assert_equal(l[2], 3) diff --git a/stdlib/test/collections/test_vector.mojo b/stdlib/test/collections/test_vector.mojo index 2a5454db6c..3ed126d148 100644 --- a/stdlib/test/collections/test_vector.mojo +++ b/stdlib/test/collections/test_vector.mojo @@ -125,7 +125,7 @@ def test_indexing(): var vector = InlinedFixedVector[Int](10) for i in range(5): vector.append(i) - assert_equal(0, vector[int(0)]) + assert_equal(0, vector[Int(0)]) assert_equal(1, vector[True]) assert_equal(2, vector[2]) diff --git a/stdlib/test/hashlib/test_ahash.mojo b/stdlib/test/hashlib/test_ahash.mojo index c9f01c3a14..9a58a753b2 100644 --- a/stdlib/test/hashlib/test_ahash.mojo +++ b/stdlib/test/hashlib/test_ahash.mojo @@ -587,7 +587,7 @@ fn gen_word_pairs[words: String = words_en]() -> List[String]: def dif_bits(i1: UInt64, i2: UInt64) -> Int: - return int(pop_count(i1 ^ i2)) + return Int(pop_count(i1 ^ i2)) @always_inline @@ -696,7 +696,7 @@ def assert_fill_factor[ var buckets = List[Int](0) * num_buckets for w in words: var h = hash[HasherType=hasher0](w[]) - buckets[int(h) % num_buckets] += 1 + buckets[Int(h) % num_buckets] += 1 var unfilled = 0 for v in buckets: if v[] == 0: diff --git a/stdlib/test/hashlib/test_hash.mojo b/stdlib/test/hashlib/test_hash.mojo index 56f475f55d..39a992d51d 100644 --- a/stdlib/test/hashlib/test_hash.mojo +++ b/stdlib/test/hashlib/test_hash.mojo @@ -25,7 +25,7 @@ from testing import assert_equal, assert_not_equal, assert_true def same_low_bits(i1: Int, i2: Int, bits: Int = 5) -> UInt8: var mask = (1 << bits) - 1 - return int(not (i1 ^ i2) & mask) + return Int(not (i1 ^ i2) & mask) def test_hash_byte_array(): diff --git a/stdlib/test/memory/test_memory.mojo b/stdlib/test/memory/test_memory.mojo index b9f754c97d..26d12e1d03 100644 --- a/stdlib/test/memory/test_memory.mojo +++ b/stdlib/test/memory/test_memory.mojo @@ -490,7 +490,7 @@ def test_indexing(): for i in range(4): ptr[i] = i - assert_equal(ptr[int(2)], 2) + assert_equal(ptr[Int(2)], 2) assert_equal(ptr[1], 1) diff --git a/stdlib/test/memory/test_span.mojo b/stdlib/test/memory/test_span.mojo index 9b52577109..9ccd0d76de 100644 --- a/stdlib/test/memory/test_span.mojo +++ b/stdlib/test/memory/test_span.mojo @@ -115,7 +115,7 @@ def test_indexing(): var l = InlineArray[Int, 7](1, 2, 3, 4, 5, 6, 7) var s = Span[Int](array=l) assert_equal(s[True], 2) - assert_equal(s[int(0)], 1) + assert_equal(s[Int(0)], 1) assert_equal(s[3], 4) diff --git a/stdlib/test/memory/test_unsafepointer.mojo b/stdlib/test/memory/test_unsafepointer.mojo index 09b7d11f70..5e8fefc1f5 100644 --- a/stdlib/test/memory/test_unsafepointer.mojo +++ b/stdlib/test/memory/test_unsafepointer.mojo @@ -112,7 +112,7 @@ def test_refitem_offset(): def test_address_of(): var local = 1 - assert_not_equal(0, int(UnsafePointer[Int].address_of(local))) + assert_not_equal(0, Int(UnsafePointer[Int].address_of(local))) _ = local @@ -120,7 +120,7 @@ def test_explicit_copy_of_pointer_address(): var local = 1 var ptr = UnsafePointer[Int].address_of(local) var copy = UnsafePointer(other=ptr) - assert_equal(int(ptr), int(copy)) + assert_equal(Int(ptr), Int(copy)) _ = local @@ -129,9 +129,9 @@ def test_bitcast(): var ptr = UnsafePointer[Int].address_of(local) var aliased_ptr = ptr.bitcast[SIMD[DType.uint8, 4]]() - assert_equal(int(ptr), int(ptr.bitcast[Int]())) + assert_equal(Int(ptr), Int(ptr.bitcast[Int]())) - assert_equal(int(ptr), int(aliased_ptr)) + assert_equal(Int(ptr), Int(aliased_ptr)) assert_equal( ptr.bitcast[ptr.type]().static_alignment_cast[33]().alignment, 33 @@ -190,19 +190,19 @@ def test_unsafepointer_address_space(): def test_unsafepointer_aligned_alloc(): alias alignment_1 = 32 var ptr = UnsafePointer[UInt8, alignment=alignment_1].alloc(1) - var ptr_uint64 = UInt64(int(ptr)) + var ptr_uint64 = UInt64(Int(ptr)) ptr.free() assert_equal(ptr_uint64 % alignment_1, 0) alias alignment_2 = 64 var ptr_2 = UnsafePointer[UInt8, alignment=alignment_2].alloc(1) - var ptr_uint64_2 = UInt64(int(ptr_2)) + var ptr_uint64_2 = UInt64(Int(ptr_2)) ptr_2.free() assert_equal(ptr_uint64_2 % alignment_2, 0) alias alignment_3 = 128 var ptr_3 = UnsafePointer[UInt8, alignment=alignment_3].alloc(1) - var ptr_uint64_3 = UInt64(int(ptr_3)) + var ptr_uint64_3 = UInt64(Int(ptr_3)) ptr_3.free() assert_equal(ptr_uint64_3 % alignment_3, 0) @@ -225,7 +225,7 @@ def test_indexing(): for i in range(4): ptr[i] = i - assert_equal(ptr[int(1)], 1) + assert_equal(ptr[Int(1)], 1) assert_equal(ptr[3], 3) @@ -266,11 +266,11 @@ def test_bool(): def test_alignment(): var ptr = UnsafePointer[Int64, alignment=64].alloc(8) - assert_equal(int(ptr) % 64, 0) + assert_equal(Int(ptr) % 64, 0) ptr.free() var ptr_2 = UnsafePointer[UInt8, alignment=32].alloc(32) - assert_equal(int(ptr_2) % 32, 0) + assert_equal(Int(ptr_2) % 32, 0) ptr_2.free() diff --git a/stdlib/test/utils/issue_13632.mojo b/stdlib/test/utils/issue_13632.mojo index d9d0655d19..0bdfbff6ce 100644 --- a/stdlib/test/utils/issue_13632.mojo +++ b/stdlib/test/utils/issue_13632.mojo @@ -20,7 +20,7 @@ from testing import assert_equal fn sum_items(data: List[Int8]) -> Int: var sum: Int = 0 for i in range(len(data)): - sum += int(data[i]) + sum += Int(data[i]) return sum diff --git a/stdlib/test/utils/test_stringref.mojo b/stdlib/test/utils/test_stringref.mojo index 18f319d4be..6a368f29a7 100644 --- a/stdlib/test/utils/test_stringref.mojo +++ b/stdlib/test/utils/test_stringref.mojo @@ -104,16 +104,16 @@ fn test_comparison_operators() raises: def test_intable(): - assert_equal(int(StringRef("123")), 123) + assert_equal(Int(StringRef("123")), 123) with assert_raises(): - _ = int(StringRef("hi")) + _ = Int(StringRef("hi")) def test_indexing(): a = StringRef("abc") assert_equal(a[False], "a") - assert_equal(a[int(1)], "b") + assert_equal(a[Int(1)], "b") assert_equal(a[0], "a") From 8d4edb07a99b3b8b0807ba047e836ea57610b042 Mon Sep 17 00:00:00 2001 From: Jack Clayton Date: Fri, 10 Jan 2025 20:04:34 -0600 Subject: [PATCH 191/509] [docs] update `int()` -> `Int()` in docs Missed some docs updates after moving `int` function to `Int` ctors. MODULAR_ORIG_COMMIT_REV_ID: 5ab8a9be0c5c7e0d33ee9177e7e30e15a84cbdc7 --- docs/manual/decorators/implicit.md | 2 +- docs/roadmap.md | 8 +++----- proposals/improved-hash-module.md | 2 +- 3 files changed, 5 insertions(+), 7 deletions(-) diff --git a/docs/manual/decorators/implicit.md b/docs/manual/decorators/implicit.md index 1e9cd07e0b..e8b1131b55 100644 --- a/docs/manual/decorators/implicit.md +++ b/docs/manual/decorators/implicit.md @@ -19,7 +19,7 @@ struct MyInt: self.value = value fn __init__(out self, value: Float64): - self.value = int(value) + self.value = Int(value) ``` diff --git a/docs/roadmap.md b/docs/roadmap.md index 52a20d257b..46df347afd 100644 --- a/docs/roadmap.md +++ b/docs/roadmap.md @@ -374,11 +374,9 @@ print(One()) # prints '1' ``` Mojo currently supports similar functionality through the -[`Writable`](/mojo/stdlib/utils/write/Writable) trait, so that -`print()` works on all `Writable` types. Similar support exists for the -[`int()`](/mojo/stdlib/builtin/int/int-function) and -[`len()`](/mojo/stdlib/builtin/len/len) functions. We'll continue to -add traits support to the standard library to enable common use cases like this. +[`Writable`](/mojo/stdlib/utils/write/Writable) trait, so that `print()` works +on all `Writable` types. We'll continue to add traits support to the standard +library to enable common use cases like this. ### The standard library has limited exceptions use diff --git a/proposals/improved-hash-module.md b/proposals/improved-hash-module.md index ee2bd138f5..1e4dd64b13 100644 --- a/proposals/improved-hash-module.md +++ b/proposals/improved-hash-module.md @@ -221,7 +221,7 @@ fn _DJBX33A_SECRET() -> UInt64: """Example how secret and seed can be stored and retrieved.""" try: var secret_string = getenv("DJBX33A_SECRET", "") - return bitcast[DType.uint64](Int64(int(secret_string))) + return bitcast[DType.uint64](Int64(Int(secret_string))) except: var value = random_si64(Int64.MIN, Int64.MAX) _ = setenv("DJBX33A_SECRET", str(value)) From 557bd7b01a41f11361e38813a9e542bdc661f4f0 Mon Sep 17 00:00:00 2001 From: modularbot Date: Sat, 11 Jan 2025 06:34:16 +0000 Subject: [PATCH 192/509] Update lockfiles to point to latest nightly version: 25.1.0.dev2025011105 --- examples/life/magic.lock | 142 +++++++++++++++++----------------- examples/magic.lock | 142 +++++++++++++++++----------------- examples/notebooks/magic.lock | 142 +++++++++++++++++----------------- examples/operators/magic.lock | 142 +++++++++++++++++----------------- magic.lock | 142 +++++++++++++++++----------------- 5 files changed, 355 insertions(+), 355 deletions(-) diff --git a/examples/life/magic.lock b/examples/life/magic.lock index e7b8af260a..fda145688e 100644 --- a/examples/life/magic.lock +++ b/examples/life/magic.lock @@ -170,12 +170,12 @@ 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-25.1.0.dev2025011022-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025011022-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025011022-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011022-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011105-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025011105-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025011105-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011105-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-25.1.0.dev2025011022-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011105-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_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.15-py312h98912ed_1.conda @@ -446,12 +446,12 @@ 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-25.1.0.dev2025011022-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025011022-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025011022-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011022-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011105-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025011105-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025011105-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011105-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-25.1.0.dev2025011022-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011105-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_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.15-py312hdd3e373_1.conda @@ -705,12 +705,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-25.1.0.dev2025011022-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025011022-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025011022-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011022-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011105-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025011105-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025011105-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011105-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-25.1.0.dev2025011022-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011105-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 @@ -6171,47 +6171,47 @@ packages: license_family: BSD size: 24048 timestamp: 1733219945697 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011022-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011105-release.conda noarch: python - sha256: fae148fb87d78d496ca5596fec75af7ec2c29e60416fcb856be56031cf798901 - md5: 59903ff40dee24c089ca2051858e6422 + sha256: 4bd3331f281b0d42b57e7e5d28eee3650cb52ffb3f9c381f349255034ab4d011 + md5: 9a12141b0beb110b83d4ae256d8de1b0 depends: - - max-core ==25.1.0.dev2025011022 release - - max-python >=25.1.0.dev2025011022,<26.0a0 - - mojo-jupyter ==25.1.0.dev2025011022 release - - mblack ==25.1.0.dev2025011022 release + - max-core ==25.1.0.dev2025011105 release + - max-python >=25.1.0.dev2025011105,<26.0a0 + - mojo-jupyter ==25.1.0.dev2025011105 release + - mblack ==25.1.0.dev2025011105 release license: LicenseRef-Modular-Proprietary - size: 9917 - timestamp: 1736547478654 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025011022-release.conda - sha256: 237e4007c732a59a619fcb0669f6b55a2a2c7f22bfa7b663ed68fde09ea02f69 - md5: 51be3ab7a5232a42df62bb75e983d05b + size: 9919 + timestamp: 1736572603494 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025011105-release.conda + sha256: 45fdbcfa2c105f01e3c06823e072f2b7b3ceeafe21188973a3f64a87c43c29e6 + md5: ba267ab335859f14f9c0d887d4a83f14 depends: - - mblack ==25.1.0.dev2025011022 release + - mblack ==25.1.0.dev2025011105 release license: LicenseRef-Modular-Proprietary - size: 243253667 - timestamp: 1736547516482 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025011022-release.conda - sha256: 7d0b9d872d69308cb7dd70eb68fdf90816a4a33135089eb8ba29877f6be6f89f - md5: 321080690171af0ed4087069d3d3a057 + size: 244035937 + timestamp: 1736572608009 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025011105-release.conda + sha256: 23794990d901f563fd2492483d4f5e0b1b91ed616028bf70bd9e2eaace6bd56b + md5: e8f626acac2d17a591ac8353ba41f5d0 depends: - - mblack ==25.1.0.dev2025011022 release + - mblack ==25.1.0.dev2025011105 release license: LicenseRef-Modular-Proprietary - size: 247039443 - timestamp: 1736547478652 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025011022-release.conda - sha256: bec13a3ff3e08404e60a3bd9e606168a422effbf9a94180fb17181eaf3686666 - md5: 11895a6758a61c5abc9a29d48f814794 + size: 247708765 + timestamp: 1736572603492 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025011105-release.conda + sha256: 8cc71a4a35f96867f4131ddca60d084a8df937ec0f551b62601adc9202788a82 + md5: 4b8d6a0afbcebe7c2e5dc2ccd30c55a8 depends: - - mblack ==25.1.0.dev2025011022 release + - mblack ==25.1.0.dev2025011105 release license: LicenseRef-Modular-Proprietary - size: 205521630 - timestamp: 1736547263030 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025011022-3.12release.conda - sha256: ea9bb62d5a012c5aa8859bf11e998b1d3f25f0325641812825573f5f2532ac2c - md5: e19353c678746a77f2668ad25f9cb543 + size: 206225127 + timestamp: 1736572820782 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025011105-3.12release.conda + sha256: 621688d96524cbf32ed8f33e4d572043973beb875708e69af36735ee730cc6c4 + md5: bb2eb7a24245cd62aed0b9d3e3e85604 depends: - - max-core ==25.1.0.dev2025011022 release + - max-core ==25.1.0.dev2025011105 release - python 3.12.* - fastapi - httpx @@ -6232,13 +6232,13 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 124126143 - timestamp: 1736547516492 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025011022-3.12release.conda - sha256: f7848a875d82d2f62341d528c1400f32b9e540bdecef0602089d975d4492316a - md5: 1ea09052240a8e4df4cd85658a770dbe + size: 124216697 + timestamp: 1736572608017 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025011105-3.12release.conda + sha256: fd2587af6018758078516561bfdb54d8175207edd4ce6dce211aeb9dffbfd967 + md5: 8d1481a3abe8cd46a76797465f6a9eb6 depends: - - max-core ==25.1.0.dev2025011022 release + - max-core ==25.1.0.dev2025011105 release - python 3.12.* - fastapi - httpx @@ -6259,13 +6259,13 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 127905369 - timestamp: 1736547478664 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025011022-3.12release.conda - sha256: f1da578221c4b7c7eb054da59ad7d3a86a2943191466e95aedf18087d6878412 - md5: dd6127789e9eabee6f42ad50ca81cde1 + size: 127983766 + timestamp: 1736572603503 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025011105-3.12release.conda + sha256: 5d6590e84cf64008fd48066ef10138c48cdbb6d6e2a1d3de01e71270d8d8d966 + md5: 92aa60fa7fe761433d03416f21c8d912 depends: - - max-core ==25.1.0.dev2025011022 release + - max-core ==25.1.0.dev2025011105 release - python 3.12.* - fastapi - httpx @@ -6286,12 +6286,12 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 110533786 - timestamp: 1736547263033 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011022-release.conda + size: 110625116 + timestamp: 1736572820784 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011105-release.conda noarch: python - sha256: 00a2f2b377584f27171e8b832203b9107f081a5b2aaf4ac3921730fbd2c73594 - md5: b571b4d34e8fa8021413b97e1b1c5efe + sha256: f447d269d29bb49fd97275f623632a569638c31b40e88489367df3d7d4ce90e2 + md5: 32c691c7fc2c6a218e1ce2272965a101 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -6301,8 +6301,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130807 - timestamp: 1736547478660 + size: 130815 + timestamp: 1736572603499 - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda sha256: 78c1bbe1723449c52b7a9df1af2ee5f005209f67e40b6e1d3c7619127c43b1c7 md5: 592132998493b3ff25fd7479396e8351 @@ -6312,18 +6312,18 @@ packages: license_family: MIT size: 14465 timestamp: 1733255681319 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011022-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011105-release.conda noarch: python - sha256: 0c619f3bff0c0fa6cdc1a314bcc34b450058779c41676b6673acec10030c5fea - md5: 12e9bb285b21a65333d0031a9225e0f0 + sha256: 05af473b2b4983829660ba70eb0cb6607f019c4f4b8d107350ea491c6bd8d1cd + md5: 036f5ddfbcce66b3f9972cebf1cec107 depends: - - max-core ==25.1.0.dev2025011022 release + - max-core ==25.1.0.dev2025011105 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22934 - timestamp: 1736547478660 + size: 22937 + timestamp: 1736572603499 - conda: https://conda.anaconda.org/conda-forge/linux-64/mpg123-1.32.9-hc50e24c_0.conda sha256: 39c4700fb3fbe403a77d8cc27352fa72ba744db487559d5d44bf8411bb4ea200 md5: c7f302fd11eeb0987a6a5e1f3aed6a21 diff --git a/examples/magic.lock b/examples/magic.lock index f73f236929..2efd6fcd75 100644 --- a/examples/magic.lock +++ b/examples/magic.lock @@ -131,12 +131,12 @@ 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-25.1.0.dev2025011022-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025011022-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025011022-3.11release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011022-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011105-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025011105-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025011105-3.11release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011105-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-25.1.0.dev2025011022-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011105-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 @@ -349,12 +349,12 @@ 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-25.1.0.dev2025011022-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025011022-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025011022-3.11release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011022-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011105-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025011105-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025011105-3.11release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011105-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-25.1.0.dev2025011022-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011105-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 @@ -558,12 +558,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-25.1.0.dev2025011022-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025011022-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025011022-3.11release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011022-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011105-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025011105-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025011105-3.11release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011105-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-25.1.0.dev2025011022-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011105-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 @@ -4752,47 +4752,47 @@ packages: license_family: BSD size: 24976 timestamp: 1733219849253 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011022-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011105-release.conda noarch: python - sha256: fae148fb87d78d496ca5596fec75af7ec2c29e60416fcb856be56031cf798901 - md5: 59903ff40dee24c089ca2051858e6422 + sha256: 4bd3331f281b0d42b57e7e5d28eee3650cb52ffb3f9c381f349255034ab4d011 + md5: 9a12141b0beb110b83d4ae256d8de1b0 depends: - - max-core ==25.1.0.dev2025011022 release - - max-python >=25.1.0.dev2025011022,<26.0a0 - - mojo-jupyter ==25.1.0.dev2025011022 release - - mblack ==25.1.0.dev2025011022 release + - max-core ==25.1.0.dev2025011105 release + - max-python >=25.1.0.dev2025011105,<26.0a0 + - mojo-jupyter ==25.1.0.dev2025011105 release + - mblack ==25.1.0.dev2025011105 release license: LicenseRef-Modular-Proprietary - size: 9917 - timestamp: 1736547478654 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025011022-release.conda - sha256: 237e4007c732a59a619fcb0669f6b55a2a2c7f22bfa7b663ed68fde09ea02f69 - md5: 51be3ab7a5232a42df62bb75e983d05b + size: 9919 + timestamp: 1736572603494 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025011105-release.conda + sha256: 45fdbcfa2c105f01e3c06823e072f2b7b3ceeafe21188973a3f64a87c43c29e6 + md5: ba267ab335859f14f9c0d887d4a83f14 depends: - - mblack ==25.1.0.dev2025011022 release + - mblack ==25.1.0.dev2025011105 release license: LicenseRef-Modular-Proprietary - size: 243253667 - timestamp: 1736547516482 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025011022-release.conda - sha256: 7d0b9d872d69308cb7dd70eb68fdf90816a4a33135089eb8ba29877f6be6f89f - md5: 321080690171af0ed4087069d3d3a057 + size: 244035937 + timestamp: 1736572608009 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025011105-release.conda + sha256: 23794990d901f563fd2492483d4f5e0b1b91ed616028bf70bd9e2eaace6bd56b + md5: e8f626acac2d17a591ac8353ba41f5d0 depends: - - mblack ==25.1.0.dev2025011022 release + - mblack ==25.1.0.dev2025011105 release license: LicenseRef-Modular-Proprietary - size: 247039443 - timestamp: 1736547478652 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025011022-release.conda - sha256: bec13a3ff3e08404e60a3bd9e606168a422effbf9a94180fb17181eaf3686666 - md5: 11895a6758a61c5abc9a29d48f814794 + size: 247708765 + timestamp: 1736572603492 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025011105-release.conda + sha256: 8cc71a4a35f96867f4131ddca60d084a8df937ec0f551b62601adc9202788a82 + md5: 4b8d6a0afbcebe7c2e5dc2ccd30c55a8 depends: - - mblack ==25.1.0.dev2025011022 release + - mblack ==25.1.0.dev2025011105 release license: LicenseRef-Modular-Proprietary - size: 205521630 - timestamp: 1736547263030 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025011022-3.11release.conda - sha256: b2a632b8ce51f4ece3181294b845d50c14a9cb3e04e59233aa0750a69a73c014 - md5: 83ff8a5952b94a70cf9a6e2ea18e40ce + size: 206225127 + timestamp: 1736572820782 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025011105-3.11release.conda + sha256: 8c780d1899cfde5a5117b74ff7a6bfcda2a70af331ba1f7b9e35b622449f2c1f + md5: 2c0c563904edb00f30e2de039ded9689 depends: - - max-core ==25.1.0.dev2025011022 release + - max-core ==25.1.0.dev2025011105 release - python 3.11.* - fastapi - httpx @@ -4813,13 +4813,13 @@ packages: - uvicorn - python_abi 3.11.* *_cp311 license: LicenseRef-Modular-Proprietary - size: 124129174 - timestamp: 1736547516490 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025011022-3.11release.conda - sha256: 0788294c7e5c20fa554b1e73f38e57165b9e69ecbf9e2e554732140cf0fa4913 - md5: c9f3981394b055f623ece7ed094493ad + size: 124236987 + timestamp: 1736572608015 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025011105-3.11release.conda + sha256: c880a5a6c057ad5192f4244fa71cc4959620b84dcd6f39f0570a7864df767081 + md5: 6b92478afed28e8c0157796d56ff40b9 depends: - - max-core ==25.1.0.dev2025011022 release + - max-core ==25.1.0.dev2025011105 release - python 3.11.* - fastapi - httpx @@ -4840,13 +4840,13 @@ packages: - uvicorn - python_abi 3.11.* *_cp311 license: LicenseRef-Modular-Proprietary - size: 127915077 - timestamp: 1736547478661 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025011022-3.11release.conda - sha256: 63c85f361f0b69716a36d796b54c0e19da94e4754159422837554271debc5bda - md5: 907647aa491ebd23f036ede363b1992a + size: 127989188 + timestamp: 1736572603500 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025011105-3.11release.conda + sha256: e20c9b53956e448509ead0b493f56b8fcef26415e0e98db68d4b288fa815a227 + md5: f945c8dcba7cc2b1060cd445a607a689 depends: - - max-core ==25.1.0.dev2025011022 release + - max-core ==25.1.0.dev2025011105 release - python 3.11.* - fastapi - httpx @@ -4867,12 +4867,12 @@ packages: - uvicorn - python_abi 3.11.* *_cp311 license: LicenseRef-Modular-Proprietary - size: 110529043 - timestamp: 1736547263032 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011022-release.conda + size: 110623035 + timestamp: 1736572820784 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011105-release.conda noarch: python - sha256: 00a2f2b377584f27171e8b832203b9107f081a5b2aaf4ac3921730fbd2c73594 - md5: b571b4d34e8fa8021413b97e1b1c5efe + sha256: f447d269d29bb49fd97275f623632a569638c31b40e88489367df3d7d4ce90e2 + md5: 32c691c7fc2c6a218e1ce2272965a101 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -4882,8 +4882,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130807 - timestamp: 1736547478660 + size: 130815 + timestamp: 1736572603499 - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda sha256: 78c1bbe1723449c52b7a9df1af2ee5f005209f67e40b6e1d3c7619127c43b1c7 md5: 592132998493b3ff25fd7479396e8351 @@ -4893,18 +4893,18 @@ packages: license_family: MIT size: 14465 timestamp: 1733255681319 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011022-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011105-release.conda noarch: python - sha256: 0c619f3bff0c0fa6cdc1a314bcc34b450058779c41676b6673acec10030c5fea - md5: 12e9bb285b21a65333d0031a9225e0f0 + sha256: 05af473b2b4983829660ba70eb0cb6607f019c4f4b8d107350ea491c6bd8d1cd + md5: 036f5ddfbcce66b3f9972cebf1cec107 depends: - - max-core ==25.1.0.dev2025011022 release + - max-core ==25.1.0.dev2025011105 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22934 - timestamp: 1736547478660 + size: 22937 + timestamp: 1736572603499 - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py311h2dc5d0c_2.conda sha256: afaab7a028281d8b5336db2b994fd3f9694862b6ca372c079dc4e84ad768c20a md5: bb8ca118919836624d920b4c44383a15 diff --git a/examples/notebooks/magic.lock b/examples/notebooks/magic.lock index fccb43a80c..36260f53ac 100644 --- a/examples/notebooks/magic.lock +++ b/examples/notebooks/magic.lock @@ -167,13 +167,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/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-25.1.0.dev2025011022-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025011022-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025011022-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011022-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011105-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025011105-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025011105-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011105-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.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011022-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011105-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 @@ -458,13 +458,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/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-25.1.0.dev2025011022-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025011022-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025011022-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011022-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011105-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025011105-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025011105-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011105-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.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011022-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011105-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 @@ -741,13 +741,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-25.1.0.dev2025011022-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025011022-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025011022-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011022-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011105-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025011105-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025011105-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011105-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.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011022-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011105-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 @@ -5549,47 +5549,47 @@ packages: license_family: BSD size: 14467 timestamp: 1733417051523 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011022-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011105-release.conda noarch: python - sha256: fae148fb87d78d496ca5596fec75af7ec2c29e60416fcb856be56031cf798901 - md5: 59903ff40dee24c089ca2051858e6422 + sha256: 4bd3331f281b0d42b57e7e5d28eee3650cb52ffb3f9c381f349255034ab4d011 + md5: 9a12141b0beb110b83d4ae256d8de1b0 depends: - - max-core ==25.1.0.dev2025011022 release - - max-python >=25.1.0.dev2025011022,<26.0a0 - - mojo-jupyter ==25.1.0.dev2025011022 release - - mblack ==25.1.0.dev2025011022 release + - max-core ==25.1.0.dev2025011105 release + - max-python >=25.1.0.dev2025011105,<26.0a0 + - mojo-jupyter ==25.1.0.dev2025011105 release + - mblack ==25.1.0.dev2025011105 release license: LicenseRef-Modular-Proprietary - size: 9917 - timestamp: 1736547478654 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025011022-release.conda - sha256: 237e4007c732a59a619fcb0669f6b55a2a2c7f22bfa7b663ed68fde09ea02f69 - md5: 51be3ab7a5232a42df62bb75e983d05b + size: 9919 + timestamp: 1736572603494 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025011105-release.conda + sha256: 45fdbcfa2c105f01e3c06823e072f2b7b3ceeafe21188973a3f64a87c43c29e6 + md5: ba267ab335859f14f9c0d887d4a83f14 depends: - - mblack ==25.1.0.dev2025011022 release + - mblack ==25.1.0.dev2025011105 release license: LicenseRef-Modular-Proprietary - size: 243253667 - timestamp: 1736547516482 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025011022-release.conda - sha256: 7d0b9d872d69308cb7dd70eb68fdf90816a4a33135089eb8ba29877f6be6f89f - md5: 321080690171af0ed4087069d3d3a057 + size: 244035937 + timestamp: 1736572608009 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025011105-release.conda + sha256: 23794990d901f563fd2492483d4f5e0b1b91ed616028bf70bd9e2eaace6bd56b + md5: e8f626acac2d17a591ac8353ba41f5d0 depends: - - mblack ==25.1.0.dev2025011022 release + - mblack ==25.1.0.dev2025011105 release license: LicenseRef-Modular-Proprietary - size: 247039443 - timestamp: 1736547478652 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025011022-release.conda - sha256: bec13a3ff3e08404e60a3bd9e606168a422effbf9a94180fb17181eaf3686666 - md5: 11895a6758a61c5abc9a29d48f814794 + size: 247708765 + timestamp: 1736572603492 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025011105-release.conda + sha256: 8cc71a4a35f96867f4131ddca60d084a8df937ec0f551b62601adc9202788a82 + md5: 4b8d6a0afbcebe7c2e5dc2ccd30c55a8 depends: - - mblack ==25.1.0.dev2025011022 release + - mblack ==25.1.0.dev2025011105 release license: LicenseRef-Modular-Proprietary - size: 205521630 - timestamp: 1736547263030 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025011022-3.12release.conda - sha256: ea9bb62d5a012c5aa8859bf11e998b1d3f25f0325641812825573f5f2532ac2c - md5: e19353c678746a77f2668ad25f9cb543 + size: 206225127 + timestamp: 1736572820782 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025011105-3.12release.conda + sha256: 621688d96524cbf32ed8f33e4d572043973beb875708e69af36735ee730cc6c4 + md5: bb2eb7a24245cd62aed0b9d3e3e85604 depends: - - max-core ==25.1.0.dev2025011022 release + - max-core ==25.1.0.dev2025011105 release - python 3.12.* - fastapi - httpx @@ -5610,13 +5610,13 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 124126143 - timestamp: 1736547516492 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025011022-3.12release.conda - sha256: f7848a875d82d2f62341d528c1400f32b9e540bdecef0602089d975d4492316a - md5: 1ea09052240a8e4df4cd85658a770dbe + size: 124216697 + timestamp: 1736572608017 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025011105-3.12release.conda + sha256: fd2587af6018758078516561bfdb54d8175207edd4ce6dce211aeb9dffbfd967 + md5: 8d1481a3abe8cd46a76797465f6a9eb6 depends: - - max-core ==25.1.0.dev2025011022 release + - max-core ==25.1.0.dev2025011105 release - python 3.12.* - fastapi - httpx @@ -5637,13 +5637,13 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 127905369 - timestamp: 1736547478664 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025011022-3.12release.conda - sha256: f1da578221c4b7c7eb054da59ad7d3a86a2943191466e95aedf18087d6878412 - md5: dd6127789e9eabee6f42ad50ca81cde1 + size: 127983766 + timestamp: 1736572603503 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025011105-3.12release.conda + sha256: 5d6590e84cf64008fd48066ef10138c48cdbb6d6e2a1d3de01e71270d8d8d966 + md5: 92aa60fa7fe761433d03416f21c8d912 depends: - - max-core ==25.1.0.dev2025011022 release + - max-core ==25.1.0.dev2025011105 release - python 3.12.* - fastapi - httpx @@ -5664,12 +5664,12 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 110533786 - timestamp: 1736547263033 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011022-release.conda + size: 110625116 + timestamp: 1736572820784 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011105-release.conda noarch: python - sha256: 00a2f2b377584f27171e8b832203b9107f081a5b2aaf4ac3921730fbd2c73594 - md5: b571b4d34e8fa8021413b97e1b1c5efe + sha256: f447d269d29bb49fd97275f623632a569638c31b40e88489367df3d7d4ce90e2 + md5: 32c691c7fc2c6a218e1ce2272965a101 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -5679,8 +5679,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130807 - timestamp: 1736547478660 + size: 130815 + timestamp: 1736572603499 - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda sha256: 78c1bbe1723449c52b7a9df1af2ee5f005209f67e40b6e1d3c7619127c43b1c7 md5: 592132998493b3ff25fd7479396e8351 @@ -5700,18 +5700,18 @@ packages: license_family: BSD size: 68803 timestamp: 1735686983426 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011022-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011105-release.conda noarch: python - sha256: 0c619f3bff0c0fa6cdc1a314bcc34b450058779c41676b6673acec10030c5fea - md5: 12e9bb285b21a65333d0031a9225e0f0 + sha256: 05af473b2b4983829660ba70eb0cb6607f019c4f4b8d107350ea491c6bd8d1cd + md5: 036f5ddfbcce66b3f9972cebf1cec107 depends: - - max-core ==25.1.0.dev2025011022 release + - max-core ==25.1.0.dev2025011105 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22934 - timestamp: 1736547478660 + size: 22937 + timestamp: 1736572603499 - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py312h178313f_2.conda sha256: b05bc8252a6e957bf4a776ed5e0e61d1ba88cdc46ccb55890c72cc58b10371f4 md5: 5b5e3267d915a107eca793d52e1b780a diff --git a/examples/operators/magic.lock b/examples/operators/magic.lock index d9465fb9d4..68572dbafe 100644 --- a/examples/operators/magic.lock +++ b/examples/operators/magic.lock @@ -131,12 +131,12 @@ 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-25.1.0.dev2025011022-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025011022-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025011022-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011022-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011105-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025011105-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025011105-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011105-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-25.1.0.dev2025011022-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011105-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 @@ -349,12 +349,12 @@ 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-25.1.0.dev2025011022-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025011022-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025011022-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011022-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011105-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025011105-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025011105-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011105-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-25.1.0.dev2025011022-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011105-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 @@ -558,12 +558,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-25.1.0.dev2025011022-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025011022-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025011022-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011022-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011105-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025011105-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025011105-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011105-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-25.1.0.dev2025011022-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011105-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 @@ -4752,47 +4752,47 @@ packages: license_family: BSD size: 24048 timestamp: 1733219945697 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011022-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011105-release.conda noarch: python - sha256: fae148fb87d78d496ca5596fec75af7ec2c29e60416fcb856be56031cf798901 - md5: 59903ff40dee24c089ca2051858e6422 + sha256: 4bd3331f281b0d42b57e7e5d28eee3650cb52ffb3f9c381f349255034ab4d011 + md5: 9a12141b0beb110b83d4ae256d8de1b0 depends: - - max-core ==25.1.0.dev2025011022 release - - max-python >=25.1.0.dev2025011022,<26.0a0 - - mojo-jupyter ==25.1.0.dev2025011022 release - - mblack ==25.1.0.dev2025011022 release + - max-core ==25.1.0.dev2025011105 release + - max-python >=25.1.0.dev2025011105,<26.0a0 + - mojo-jupyter ==25.1.0.dev2025011105 release + - mblack ==25.1.0.dev2025011105 release license: LicenseRef-Modular-Proprietary - size: 9917 - timestamp: 1736547478654 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025011022-release.conda - sha256: 237e4007c732a59a619fcb0669f6b55a2a2c7f22bfa7b663ed68fde09ea02f69 - md5: 51be3ab7a5232a42df62bb75e983d05b + size: 9919 + timestamp: 1736572603494 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025011105-release.conda + sha256: 45fdbcfa2c105f01e3c06823e072f2b7b3ceeafe21188973a3f64a87c43c29e6 + md5: ba267ab335859f14f9c0d887d4a83f14 depends: - - mblack ==25.1.0.dev2025011022 release + - mblack ==25.1.0.dev2025011105 release license: LicenseRef-Modular-Proprietary - size: 243253667 - timestamp: 1736547516482 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025011022-release.conda - sha256: 7d0b9d872d69308cb7dd70eb68fdf90816a4a33135089eb8ba29877f6be6f89f - md5: 321080690171af0ed4087069d3d3a057 + size: 244035937 + timestamp: 1736572608009 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025011105-release.conda + sha256: 23794990d901f563fd2492483d4f5e0b1b91ed616028bf70bd9e2eaace6bd56b + md5: e8f626acac2d17a591ac8353ba41f5d0 depends: - - mblack ==25.1.0.dev2025011022 release + - mblack ==25.1.0.dev2025011105 release license: LicenseRef-Modular-Proprietary - size: 247039443 - timestamp: 1736547478652 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025011022-release.conda - sha256: bec13a3ff3e08404e60a3bd9e606168a422effbf9a94180fb17181eaf3686666 - md5: 11895a6758a61c5abc9a29d48f814794 + size: 247708765 + timestamp: 1736572603492 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025011105-release.conda + sha256: 8cc71a4a35f96867f4131ddca60d084a8df937ec0f551b62601adc9202788a82 + md5: 4b8d6a0afbcebe7c2e5dc2ccd30c55a8 depends: - - mblack ==25.1.0.dev2025011022 release + - mblack ==25.1.0.dev2025011105 release license: LicenseRef-Modular-Proprietary - size: 205521630 - timestamp: 1736547263030 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025011022-3.12release.conda - sha256: ea9bb62d5a012c5aa8859bf11e998b1d3f25f0325641812825573f5f2532ac2c - md5: e19353c678746a77f2668ad25f9cb543 + size: 206225127 + timestamp: 1736572820782 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025011105-3.12release.conda + sha256: 621688d96524cbf32ed8f33e4d572043973beb875708e69af36735ee730cc6c4 + md5: bb2eb7a24245cd62aed0b9d3e3e85604 depends: - - max-core ==25.1.0.dev2025011022 release + - max-core ==25.1.0.dev2025011105 release - python 3.12.* - fastapi - httpx @@ -4813,13 +4813,13 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 124126143 - timestamp: 1736547516492 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025011022-3.12release.conda - sha256: f7848a875d82d2f62341d528c1400f32b9e540bdecef0602089d975d4492316a - md5: 1ea09052240a8e4df4cd85658a770dbe + size: 124216697 + timestamp: 1736572608017 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025011105-3.12release.conda + sha256: fd2587af6018758078516561bfdb54d8175207edd4ce6dce211aeb9dffbfd967 + md5: 8d1481a3abe8cd46a76797465f6a9eb6 depends: - - max-core ==25.1.0.dev2025011022 release + - max-core ==25.1.0.dev2025011105 release - python 3.12.* - fastapi - httpx @@ -4840,13 +4840,13 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 127905369 - timestamp: 1736547478664 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025011022-3.12release.conda - sha256: f1da578221c4b7c7eb054da59ad7d3a86a2943191466e95aedf18087d6878412 - md5: dd6127789e9eabee6f42ad50ca81cde1 + size: 127983766 + timestamp: 1736572603503 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025011105-3.12release.conda + sha256: 5d6590e84cf64008fd48066ef10138c48cdbb6d6e2a1d3de01e71270d8d8d966 + md5: 92aa60fa7fe761433d03416f21c8d912 depends: - - max-core ==25.1.0.dev2025011022 release + - max-core ==25.1.0.dev2025011105 release - python 3.12.* - fastapi - httpx @@ -4867,12 +4867,12 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 110533786 - timestamp: 1736547263033 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011022-release.conda + size: 110625116 + timestamp: 1736572820784 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011105-release.conda noarch: python - sha256: 00a2f2b377584f27171e8b832203b9107f081a5b2aaf4ac3921730fbd2c73594 - md5: b571b4d34e8fa8021413b97e1b1c5efe + sha256: f447d269d29bb49fd97275f623632a569638c31b40e88489367df3d7d4ce90e2 + md5: 32c691c7fc2c6a218e1ce2272965a101 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -4882,8 +4882,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130807 - timestamp: 1736547478660 + size: 130815 + timestamp: 1736572603499 - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda sha256: 78c1bbe1723449c52b7a9df1af2ee5f005209f67e40b6e1d3c7619127c43b1c7 md5: 592132998493b3ff25fd7479396e8351 @@ -4893,18 +4893,18 @@ packages: license_family: MIT size: 14465 timestamp: 1733255681319 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011022-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011105-release.conda noarch: python - sha256: 0c619f3bff0c0fa6cdc1a314bcc34b450058779c41676b6673acec10030c5fea - md5: 12e9bb285b21a65333d0031a9225e0f0 + sha256: 05af473b2b4983829660ba70eb0cb6607f019c4f4b8d107350ea491c6bd8d1cd + md5: 036f5ddfbcce66b3f9972cebf1cec107 depends: - - max-core ==25.1.0.dev2025011022 release + - max-core ==25.1.0.dev2025011105 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22934 - timestamp: 1736547478660 + size: 22937 + timestamp: 1736572603499 - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py312h178313f_2.conda sha256: b05bc8252a6e957bf4a776ed5e0e61d1ba88cdc46ccb55890c72cc58b10371f4 md5: 5b5e3267d915a107eca793d52e1b780a diff --git a/magic.lock b/magic.lock index d926408bc3..baa7c0612d 100644 --- a/magic.lock +++ b/magic.lock @@ -132,12 +132,12 @@ 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-25.1.0.dev2025011022-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025011022-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025011022-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011022-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011105-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025011105-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025011105-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011105-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-25.1.0.dev2025011022-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011105-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 @@ -351,12 +351,12 @@ 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-25.1.0.dev2025011022-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025011022-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025011022-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011022-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011105-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025011105-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025011105-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011105-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-25.1.0.dev2025011022-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011105-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 @@ -561,12 +561,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-25.1.0.dev2025011022-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025011022-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025011022-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011022-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011105-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025011105-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025011105-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011105-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-25.1.0.dev2025011022-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011105-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 @@ -4764,47 +4764,47 @@ packages: license_family: BSD size: 24048 timestamp: 1733219945697 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011022-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011105-release.conda noarch: python - sha256: fae148fb87d78d496ca5596fec75af7ec2c29e60416fcb856be56031cf798901 - md5: 59903ff40dee24c089ca2051858e6422 + sha256: 4bd3331f281b0d42b57e7e5d28eee3650cb52ffb3f9c381f349255034ab4d011 + md5: 9a12141b0beb110b83d4ae256d8de1b0 depends: - - max-core ==25.1.0.dev2025011022 release - - max-python >=25.1.0.dev2025011022,<26.0a0 - - mojo-jupyter ==25.1.0.dev2025011022 release - - mblack ==25.1.0.dev2025011022 release + - max-core ==25.1.0.dev2025011105 release + - max-python >=25.1.0.dev2025011105,<26.0a0 + - mojo-jupyter ==25.1.0.dev2025011105 release + - mblack ==25.1.0.dev2025011105 release license: LicenseRef-Modular-Proprietary - size: 9917 - timestamp: 1736547478654 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025011022-release.conda - sha256: 237e4007c732a59a619fcb0669f6b55a2a2c7f22bfa7b663ed68fde09ea02f69 - md5: 51be3ab7a5232a42df62bb75e983d05b + size: 9919 + timestamp: 1736572603494 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025011105-release.conda + sha256: 45fdbcfa2c105f01e3c06823e072f2b7b3ceeafe21188973a3f64a87c43c29e6 + md5: ba267ab335859f14f9c0d887d4a83f14 depends: - - mblack ==25.1.0.dev2025011022 release + - mblack ==25.1.0.dev2025011105 release license: LicenseRef-Modular-Proprietary - size: 243253667 - timestamp: 1736547516482 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025011022-release.conda - sha256: 7d0b9d872d69308cb7dd70eb68fdf90816a4a33135089eb8ba29877f6be6f89f - md5: 321080690171af0ed4087069d3d3a057 + size: 244035937 + timestamp: 1736572608009 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025011105-release.conda + sha256: 23794990d901f563fd2492483d4f5e0b1b91ed616028bf70bd9e2eaace6bd56b + md5: e8f626acac2d17a591ac8353ba41f5d0 depends: - - mblack ==25.1.0.dev2025011022 release + - mblack ==25.1.0.dev2025011105 release license: LicenseRef-Modular-Proprietary - size: 247039443 - timestamp: 1736547478652 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025011022-release.conda - sha256: bec13a3ff3e08404e60a3bd9e606168a422effbf9a94180fb17181eaf3686666 - md5: 11895a6758a61c5abc9a29d48f814794 + size: 247708765 + timestamp: 1736572603492 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025011105-release.conda + sha256: 8cc71a4a35f96867f4131ddca60d084a8df937ec0f551b62601adc9202788a82 + md5: 4b8d6a0afbcebe7c2e5dc2ccd30c55a8 depends: - - mblack ==25.1.0.dev2025011022 release + - mblack ==25.1.0.dev2025011105 release license: LicenseRef-Modular-Proprietary - size: 205521630 - timestamp: 1736547263030 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025011022-3.12release.conda - sha256: ea9bb62d5a012c5aa8859bf11e998b1d3f25f0325641812825573f5f2532ac2c - md5: e19353c678746a77f2668ad25f9cb543 + size: 206225127 + timestamp: 1736572820782 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025011105-3.12release.conda + sha256: 621688d96524cbf32ed8f33e4d572043973beb875708e69af36735ee730cc6c4 + md5: bb2eb7a24245cd62aed0b9d3e3e85604 depends: - - max-core ==25.1.0.dev2025011022 release + - max-core ==25.1.0.dev2025011105 release - python 3.12.* - fastapi - httpx @@ -4825,13 +4825,13 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 124126143 - timestamp: 1736547516492 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025011022-3.12release.conda - sha256: f7848a875d82d2f62341d528c1400f32b9e540bdecef0602089d975d4492316a - md5: 1ea09052240a8e4df4cd85658a770dbe + size: 124216697 + timestamp: 1736572608017 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025011105-3.12release.conda + sha256: fd2587af6018758078516561bfdb54d8175207edd4ce6dce211aeb9dffbfd967 + md5: 8d1481a3abe8cd46a76797465f6a9eb6 depends: - - max-core ==25.1.0.dev2025011022 release + - max-core ==25.1.0.dev2025011105 release - python 3.12.* - fastapi - httpx @@ -4852,13 +4852,13 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 127905369 - timestamp: 1736547478664 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025011022-3.12release.conda - sha256: f1da578221c4b7c7eb054da59ad7d3a86a2943191466e95aedf18087d6878412 - md5: dd6127789e9eabee6f42ad50ca81cde1 + size: 127983766 + timestamp: 1736572603503 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025011105-3.12release.conda + sha256: 5d6590e84cf64008fd48066ef10138c48cdbb6d6e2a1d3de01e71270d8d8d966 + md5: 92aa60fa7fe761433d03416f21c8d912 depends: - - max-core ==25.1.0.dev2025011022 release + - max-core ==25.1.0.dev2025011105 release - python 3.12.* - fastapi - httpx @@ -4879,12 +4879,12 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 110533786 - timestamp: 1736547263033 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011022-release.conda + size: 110625116 + timestamp: 1736572820784 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011105-release.conda noarch: python - sha256: 00a2f2b377584f27171e8b832203b9107f081a5b2aaf4ac3921730fbd2c73594 - md5: b571b4d34e8fa8021413b97e1b1c5efe + sha256: f447d269d29bb49fd97275f623632a569638c31b40e88489367df3d7d4ce90e2 + md5: 32c691c7fc2c6a218e1ce2272965a101 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -4894,8 +4894,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130807 - timestamp: 1736547478660 + size: 130815 + timestamp: 1736572603499 - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda sha256: 78c1bbe1723449c52b7a9df1af2ee5f005209f67e40b6e1d3c7619127c43b1c7 md5: 592132998493b3ff25fd7479396e8351 @@ -4905,18 +4905,18 @@ packages: license_family: MIT size: 14465 timestamp: 1733255681319 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011022-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011105-release.conda noarch: python - sha256: 0c619f3bff0c0fa6cdc1a314bcc34b450058779c41676b6673acec10030c5fea - md5: 12e9bb285b21a65333d0031a9225e0f0 + sha256: 05af473b2b4983829660ba70eb0cb6607f019c4f4b8d107350ea491c6bd8d1cd + md5: 036f5ddfbcce66b3f9972cebf1cec107 depends: - - max-core ==25.1.0.dev2025011022 release + - max-core ==25.1.0.dev2025011105 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22934 - timestamp: 1736547478660 + size: 22937 + timestamp: 1736572603499 - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py312h178313f_2.conda sha256: b05bc8252a6e957bf4a776ed5e0e61d1ba88cdc46ccb55890c72cc58b10371f4 md5: 5b5e3267d915a107eca793d52e1b780a From 4ae7f172172b34039a3d65a28fda7f192d42b327 Mon Sep 17 00:00:00 2001 From: abdul dakkak Date: Fri, 10 Jan 2025 21:45:30 -0800 Subject: [PATCH 193/509] [Stdlib] Add convenience methods to check if pointer is None MODULAR_ORIG_COMMIT_REV_ID: feac24ac6fed4bb2c1ca4e0462af3f92aa760725 --- docs/changelog.md | 4 ++ stdlib/src/memory/unsafe_pointer.mojo | 48 ++++++++++++++++++++++ stdlib/test/memory/test_unsafepointer.mojo | 11 +++++ 3 files changed, 63 insertions(+) diff --git a/docs/changelog.md b/docs/changelog.md index dc8fe8995b..11c680f851 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -156,6 +156,10 @@ what we publish. - `bit_ceil` has been renamed to `next_power_of_two`, and `bit_floor` to `prev_power_of_two`. This is to improve readability and clarity in their use. +- The `UnsafePointer` type now is comparable against the `None` type. This + enables one to write code like `if ptr is not None:` to check if the value + of the pointer is not a null ptr. + - The `Indexer` and `IntLike` traits which were previously both used for indexing have been combined. This enables SIMD scalar integer types and UInt to be used for indexing into all of the collection types, as well as diff --git a/stdlib/src/memory/unsafe_pointer.mojo b/stdlib/src/memory/unsafe_pointer.mojo index c2aefe847e..eb430aaea5 100644 --- a/stdlib/src/memory/unsafe_pointer.mojo +++ b/stdlib/src/memory/unsafe_pointer.mojo @@ -320,6 +320,18 @@ struct UnsafePointer[ """ return Int(self) == Int(rhs) + @always_inline("nodebug") + fn __eq__(self, none: NoneType) -> Bool: + """Returns True if the pointer is null. + + Args: + none: The NoneType value. + + Returns: + True if the pointer is null and False otherwise. + """ + return not self + @__unsafe_disable_nested_origin_exclusivity @always_inline("nodebug") fn __ne__(self, rhs: Self) -> Bool: @@ -333,6 +345,18 @@ struct UnsafePointer[ """ return not (self == rhs) + @always_inline("nodebug") + fn __ne__(self, none: NoneType) -> Bool: + """Returns True if the pointer is not null. + + Args: + none: The NoneType value. + + Returns: + True if the pointer is null and False otherwise. + """ + return self + @__unsafe_disable_nested_origin_exclusivity @always_inline("nodebug") fn __lt__(self, rhs: Self) -> Bool: @@ -389,6 +413,30 @@ struct UnsafePointer[ """ return Int(self) >= Int(rhs) + @always_inline("nodebug") + fn __is__(self, none: NoneType) -> Bool: + """Returns True if the pointer is null. + + Args: + none: The NoneType value. + + Returns: + True if the pointer is null and False otherwise. + """ + return self == None + + @always_inline("nodebug") + fn __isnot__(self, none: NoneType) -> Bool: + """Returns True if the pointer is not null. + + Args: + none: The NoneType value. + + Returns: + True if the pointer is not null and False otherwise. + """ + return self != None + # ===-------------------------------------------------------------------===# # Trait implementations # ===-------------------------------------------------------------------===# diff --git a/stdlib/test/memory/test_unsafepointer.mojo b/stdlib/test/memory/test_unsafepointer.mojo index 5e8fefc1f5..34ce70e5b1 100644 --- a/stdlib/test/memory/test_unsafepointer.mojo +++ b/stdlib/test/memory/test_unsafepointer.mojo @@ -162,6 +162,17 @@ def test_eq(): var p4 = UnsafePointer.address_of(local).origin_cast[mut=False]() assert_equal(p1, p4) + + var p5 = UnsafePointer[Int]() + assert_true(p5 == None) + assert_true(p5 is None) + assert_false(p5 != None) + assert_false(p5 is not None) + assert_false(p1 == None) + assert_false(p1 is None) + assert_true(p1 != None) + assert_true(p1 is not None) + _ = local _ = other_local From 40a1091f74343dcf105c1af6d572687fb5cfb7b2 Mon Sep 17 00:00:00 2001 From: Connor Gray Date: Sat, 11 Jan 2025 12:00:26 -0600 Subject: [PATCH 194/509] feat: Add `Char.utf8_byte_length()` + `Intable` impl MODULAR_ORIG_COMMIT_REV_ID: d66ad7a3ce557b718029359aed89201951b38948 --- stdlib/src/builtin/char.mojo | 53 ++++++++++++++++++- stdlib/src/collections/string/string.mojo | 4 +- .../src/collections/string/string_slice.mojo | 8 --- stdlib/test/builtin/test_char.mojo | 31 ++++++++++- 4 files changed, 83 insertions(+), 13 deletions(-) diff --git a/stdlib/src/builtin/char.mojo b/stdlib/src/builtin/char.mojo index 3116e454a2..dc3eb0129d 100644 --- a/stdlib/src/builtin/char.mojo +++ b/stdlib/src/builtin/char.mojo @@ -45,9 +45,27 @@ struct Char(CollectionElement): [1]: https://www.unicode.org/glossary/#unicode_scalar_value """ - var _codepoint: UInt32 + var _scalar_value: UInt32 """The Unicode scalar value represented by this type.""" + # ===-------------------------------------------------------------------===# + # Trait implementations + # ===-------------------------------------------------------------------===# + + @always_inline + fn __int__(self) -> Int: + """Returns the numeric value of this scalar value as an integer. + + Returns: + The numeric value of this scalar value as an integer. + """ + return Int(self._scalar_value) + + # ===-------------------------------------------------------------------===# + # Life cycle methods + # ===-------------------------------------------------------------------===# + + @always_inline fn __init__(out self, *, unsafe_unchecked_codepoint: UInt32): """Construct a `Char` from a code point value without checking that it falls in the valid range. @@ -66,7 +84,11 @@ struct Char(CollectionElement): "codepoint is not a valid Unicode scalar value", ) - self._codepoint = unsafe_unchecked_codepoint + self._scalar_value = unsafe_unchecked_codepoint + + # ===-------------------------------------------------------------------===# + # Factory methods + # ===-------------------------------------------------------------------===# @staticmethod fn from_u32(codepoint: UInt32) -> Optional[Self]: @@ -85,3 +107,30 @@ struct Char(CollectionElement): return Char(unsafe_unchecked_codepoint=codepoint) else: return None + + # ===-------------------------------------------------------------------===# + # Methods + # ===-------------------------------------------------------------------===# + + @always_inline + fn utf8_byte_length(self) -> UInt: + """Returns the number of UTF-8 bytes required to encode this character. + + The returned value is always between 1 and 4 bytes. + + Returns: + Byte count of UTF-8 bytes required to encode this character. + """ + + # Minimum codepoint values (respectively) that can fit in a 1, 2, 3, + # and 4 byte encoded UTF-8 sequence. + alias sizes = SIMD[DType.int32, 4]( + 0, + 2**7, + 2**11, + 2**16, + ) + + # Count how many of the minimums this codepoint exceeds, which is equal + # to the number of bytes needed to encode it. + return UInt(Int((sizes <= Int(self)).cast[DType.uint8]().reduce_add())) diff --git a/stdlib/src/collections/string/string.mojo b/stdlib/src/collections/string/string.mojo index 7f766c5897..68c676ad1a 100644 --- a/stdlib/src/collections/string/string.mojo +++ b/stdlib/src/collections/string/string.mojo @@ -44,7 +44,6 @@ from collections.string.string_slice import ( _shift_unicode_to_utf8, _StringSliceIter, _to_string_list, - _unicode_codepoint_utf8_byte_length, _utf8_byte_type, ) @@ -122,7 +121,8 @@ fn chr(c: Int) -> String: if c < 0b1000_0000: # 1 byte ASCII char return String(String._buffer_type(c, 0)) - var num_bytes = _unicode_codepoint_utf8_byte_length(c) + # FIXME: Validate that this is a valid scalar value + var num_bytes = Char(unsafe_unchecked_codepoint=c).utf8_byte_length() var p = UnsafePointer[UInt8].alloc(num_bytes + 1) _shift_unicode_to_utf8(p, c, num_bytes) # TODO: decide whether to use replacement char (�) or raise ValueError diff --git a/stdlib/src/collections/string/string_slice.mojo b/stdlib/src/collections/string/string_slice.mojo index 129df13b88..6d17128f84 100644 --- a/stdlib/src/collections/string/string_slice.mojo +++ b/stdlib/src/collections/string/string_slice.mojo @@ -63,14 +63,6 @@ fn _count_utf8_continuation_bytes(span: Span[Byte]) -> Int: return amnt -fn _unicode_codepoint_utf8_byte_length(c: Int) -> Int: - debug_assert( - 0 <= c <= 0x10FFFF, "Value: ", c, " is not a valid Unicode code point" - ) - alias sizes = SIMD[DType.int32, 4](0, 0b0111_1111, 0b0111_1111_1111, 0xFFFF) - return Int((sizes < c).cast[DType.uint8]().reduce_add()) - - @always_inline fn _utf8_first_byte_sequence_length(b: Byte) -> Int: """Get the length of the sequence starting with given byte. Do note that diff --git a/stdlib/test/builtin/test_char.mojo b/stdlib/test/builtin/test_char.mojo index 97c2a56978..e220506c2d 100644 --- a/stdlib/test/builtin/test_char.mojo +++ b/stdlib/test/builtin/test_char.mojo @@ -18,7 +18,7 @@ from testing import assert_true, assert_false, assert_equal def test_char_validity(): # Check that basic unchecked constructor behaves as expected. var c1 = Char(unsafe_unchecked_codepoint=32) - assert_equal(c1._codepoint, 32) + assert_equal(c1._scalar_value, 32) assert_true(Char.from_u32(0)) @@ -41,5 +41,34 @@ def test_char_validity(): assert_false(Char.from_u32(0x10FFFF + 1)) +def test_char_utf8_byte_length(): + fn codepoint_len(cp: UInt32) -> Int: + return Char.from_u32(cp).value().utf8_byte_length() + + # 1-byte (ASCII) codepoints + assert_equal(codepoint_len(0), 1) + assert_equal(codepoint_len(32), 1) + assert_equal(codepoint_len(127), 1) + + # 2-byte codepoints -- 0b110x_xxxx 0b10xx_xxxx (11 x's) + # Smallest 2-byte codepoint + assert_equal(codepoint_len(128), 2) + # Largest 2-byte codepoint + assert_equal(codepoint_len(2**11 - 1), 2) # 2^11 - 1 == 2047 + + # 3-byte codepoints -- 0b1110_xxxx 0b10xx_xxxx 0b10xx_xxxx (16 x's) + # Smallest 3-byte codepoint + assert_equal(codepoint_len(2**11), 3) # 2^11 == 2048 + # Largest 3-byte codepoint + assert_equal(codepoint_len(2**16 - 1), 3) # 2^16 - 1 == 65535 == 0xFFFF + + # 4-byte codepoints 0b1111_0xxx 0b10xx_xxxx 0b10xx_xxxx 0b10xx_xxxx (21 x's) + # Smallest 4-byte codepoint + assert_equal(codepoint_len(2**16), 4) + # Largest 4-byte codepoint + assert_equal(codepoint_len(0x10FFFF), 4) # Maximum Unicode codepoint + + def main(): test_char_validity() + test_char_utf8_byte_length() From 7f1b2d048a7258ee03d9438089e8d5a2f89add7f Mon Sep 17 00:00:00 2001 From: Connor Gray Date: Sat, 11 Jan 2025 13:02:03 -0600 Subject: [PATCH 195/509] [stdlib] feat: Add `Char.is_ascii()` This function returns True if a given character is part of the ASCII character set. MODULAR_ORIG_COMMIT_REV_ID: bcde46c67d0e45dd20e19f0db0d1bd749b948759 --- stdlib/src/builtin/char.mojo | 12 ++++++++++++ stdlib/test/builtin/test_char.mojo | 11 +++++++++++ 2 files changed, 23 insertions(+) diff --git a/stdlib/src/builtin/char.mojo b/stdlib/src/builtin/char.mojo index dc3eb0129d..dfe0954742 100644 --- a/stdlib/src/builtin/char.mojo +++ b/stdlib/src/builtin/char.mojo @@ -112,6 +112,18 @@ struct Char(CollectionElement): # Methods # ===-------------------------------------------------------------------===# + @always_inline + fn is_ascii(self) -> Bool: + """Returns True if this `Char` is an ASCII character. + + All ASCII characters are less than or equal to codepoint value 127, and + take exactly 1 byte to encode in UTF-8. + + Returns: + A boolean indicating if this `Char` is an ASCII character. + """ + return self._scalar_value <= 0b0111_1111 + @always_inline fn utf8_byte_length(self) -> UInt: """Returns the number of UTF-8 bytes required to encode this character. diff --git a/stdlib/test/builtin/test_char.mojo b/stdlib/test/builtin/test_char.mojo index e220506c2d..0b4b9ad915 100644 --- a/stdlib/test/builtin/test_char.mojo +++ b/stdlib/test/builtin/test_char.mojo @@ -41,6 +41,16 @@ def test_char_validity(): assert_false(Char.from_u32(0x10FFFF + 1)) +def test_char_properties(): + assert_true(Char.from_u32(0).value().is_ascii()) + # Last ASCII codepoint. + assert_true(Char.from_u32(0b0111_1111).value().is_ascii()) # ASCII 127 0x7F + + # First non-ASCII codepoint. + assert_false(Char.from_u32(0b1000_0000).value().is_ascii()) + assert_false(Char.from_u32(0b1111_1111).value().is_ascii()) + + def test_char_utf8_byte_length(): fn codepoint_len(cp: UInt32) -> Int: return Char.from_u32(cp).value().utf8_byte_length() @@ -71,4 +81,5 @@ def test_char_utf8_byte_length(): def main(): test_char_validity() + test_char_properties() test_char_utf8_byte_length() From f7ae5f27e046ce3240a60069b4c58776406ca4c2 Mon Sep 17 00:00:00 2001 From: Connor Gray Date: Sat, 11 Jan 2025 14:35:58 -0600 Subject: [PATCH 196/509] [stdlib] cleanup: Consolidate UTF-8 encoding in `Char.unsafe_write_utf8()` There were at least two places in the standard library where UTF-8 encoding logic had been duplicated. This is now fixed by consolidating this logic as part of the new `Char` type. Also added basic smoke tests for the encoding of various significant codepoint values. MODULAR_ORIG_COMMIT_REV_ID: fe709bf3db52f9092747dc7c5d4ffe70059c84fd --- docs/changelog.md | 3 + stdlib/src/builtin/char.mojo | 60 ++++++++++++++++- stdlib/src/collections/string/_unicode.mojo | 23 +------ stdlib/src/collections/string/string.mojo | 28 ++++---- .../src/collections/string/string_slice.mojo | 28 -------- stdlib/test/builtin/test_char.mojo | 66 +++++++++++++++++++ 6 files changed, 145 insertions(+), 63 deletions(-) diff --git a/docs/changelog.md b/docs/changelog.md index 11c680f851..23979ca0ff 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -100,6 +100,9 @@ what we publish. - Added `Char`, for representing and storing single Unicode characters. +- `chr(Int)` will now abort if given a codepoint value that is not a valid + `Char`. + - Added `StringSlice.from_utf()` factor method, for validated construction of a `StringSlice` from a buffer containing UTF-8 encoded data. This method will raise if the buffer contents are not valid UTF-8. diff --git a/stdlib/src/builtin/char.mojo b/stdlib/src/builtin/char.mojo index dfe0954742..149ea82b96 100644 --- a/stdlib/src/builtin/char.mojo +++ b/stdlib/src/builtin/char.mojo @@ -14,6 +14,8 @@ from collections import Optional +from memory import UnsafePointer + @always_inline fn _is_unicode_scalar_value(codepoint: UInt32) -> Bool: @@ -124,6 +126,54 @@ struct Char(CollectionElement): """ return self._scalar_value <= 0b0111_1111 + @always_inline + fn unsafe_write_utf8(self, ptr: UnsafePointer[Byte]) -> UInt: + """Shift unicode to utf8 representation. + + Safety: + `ptr` MUST point to at least `self.utf8_byte_length()` allocated + bytes or else an out-of-bounds write will occur, which is undefined + behavior. + + Args: + ptr: Pointer value to write the encoded UTF-8 bytes. Must validly + point to a sufficient number of bytes (1-4) to hold the encoded + data. + + Returns: + Returns the number of bytes written. + + ### Unicode (represented as UInt32 BE) to UTF-8 conversion: + - 1: 00000000 00000000 00000000 0aaaaaaa -> 0aaaaaaa + - a + - 2: 00000000 00000000 00000aaa aabbbbbb -> 110aaaaa 10bbbbbb + - (a >> 6) | 0b11000000, b | 0b10000000 + - 3: 00000000 00000000 aaaabbbb bbcccccc -> 1110aaaa 10bbbbbb 10cccccc + - (a >> 12) | 0b11100000, (b >> 6) | 0b10000000, c | 0b10000000 + - 4: 00000000 000aaabb bbbbcccc ccdddddd -> 11110aaa 10bbbbbb 10cccccc + 10dddddd + - (a >> 18) | 0b11110000, (b >> 12) | 0b10000000, (c >> 6) | 0b10000000, + d | 0b10000000 + . + """ + var c = Int(self) + + var num_bytes = self.utf8_byte_length() + + if num_bytes == 1: + ptr[0] = UInt8(c) + return 1 + + var shift = 6 * (num_bytes - 1) + var mask = UInt8(0xFF) >> (num_bytes + 1) + var num_bytes_marker = UInt8(0xFF) << (8 - num_bytes) + ptr[0] = ((c >> shift) & mask) | num_bytes_marker + for i in range(1, num_bytes): + shift -= 6 + ptr[i] = ((c >> shift) & 0b0011_1111) | 0b1000_0000 + + return num_bytes + @always_inline fn utf8_byte_length(self) -> UInt: """Returns the number of UTF-8 bytes required to encode this character. @@ -145,4 +195,12 @@ struct Char(CollectionElement): # Count how many of the minimums this codepoint exceeds, which is equal # to the number of bytes needed to encode it. - return UInt(Int((sizes <= Int(self)).cast[DType.uint8]().reduce_add())) + var lt = (sizes <= Int(self)).cast[DType.uint8]() + + # TODO(MOCO-1537): Support `reduce_add()` at compile time. + # var count = Int(lt.reduce_add()) + var count = 0 + for i in range(len(lt)): + count += Int(lt[i]) + + return UInt(count) diff --git a/stdlib/src/collections/string/_unicode.mojo b/stdlib/src/collections/string/_unicode.mojo index 980211ae22..8f340923e9 100644 --- a/stdlib/src/collections/string/_unicode.mojo +++ b/stdlib/src/collections/string/_unicode.mojo @@ -137,28 +137,7 @@ fn _ord(_p: UnsafePointer[UInt8]) -> (Int, Int): fn _write_rune(rune: UInt32, p: UnsafePointer[UInt8]) -> Int: """Write rune as UTF-8 into provided pointer. Return number of added bytes. """ - if (rune >> 7) == 0: # This is 1 byte ASCII char - p[0] = rune.cast[DType.uint8]() - return 1 - - @always_inline - fn _utf8_len(val: UInt32) -> Int: - alias sizes = SIMD[DType.uint32, 4]( - 0, 0b1111_111, 0b1111_1111_111, 0b1111_1111_1111_1111 - ) - var values = SIMD[DType.uint32, 4](val) - var mask = values > sizes - return Int(mask.cast[DType.uint8]().reduce_add()) - - var num_bytes = _utf8_len(rune) - var shift = 6 * (num_bytes - 1) - var mask = UInt32(0xFF) >> (num_bytes + 1) - var num_bytes_marker = UInt32(0xFF) << (8 - num_bytes) - p[0] = (((rune >> shift) & mask) | num_bytes_marker).cast[DType.uint8]() - for i in range(1, num_bytes): - shift -= 6 - p[i] = (((rune >> shift) & 0b00111111) | 0b10000000).cast[DType.uint8]() - return num_bytes + return Char(unsafe_unchecked_codepoint=rune).unsafe_write_utf8(p) fn to_lowercase(s: StringSlice) -> String: diff --git a/stdlib/src/collections/string/string.mojo b/stdlib/src/collections/string/string.mojo index 68c676ad1a..f52992d86a 100644 --- a/stdlib/src/collections/string/string.mojo +++ b/stdlib/src/collections/string/string.mojo @@ -15,6 +15,7 @@ from collections import KeyElement, List, Optional from collections._index_normalization import normalize_index from hashlib._hasher import _HashableWithHasher, _Hasher +from os import abort from sys import bitwidthof, llvm_intrinsic from sys.ffi import c_char from sys.intrinsics import _type_is_eq @@ -41,7 +42,6 @@ from collections.string._unicode import ( from collections.string.format import _CurlyEntryFormattable, _FormatCurlyEntry from collections.string.string_slice import ( StringSlice, - _shift_unicode_to_utf8, _StringSliceIter, _to_string_list, _utf8_byte_type, @@ -121,17 +121,21 @@ fn chr(c: Int) -> String: if c < 0b1000_0000: # 1 byte ASCII char return String(String._buffer_type(c, 0)) - # FIXME: Validate that this is a valid scalar value - var num_bytes = Char(unsafe_unchecked_codepoint=c).utf8_byte_length() - var p = UnsafePointer[UInt8].alloc(num_bytes + 1) - _shift_unicode_to_utf8(p, c, num_bytes) - # TODO: decide whether to use replacement char (�) or raise ValueError - # if not _is_valid_utf8(p, num_bytes): - # debug_assert(False, "Invalid Unicode code point") - # p.free() - # return chr(0xFFFD) - p[num_bytes] = 0 - return String(ptr=p, length=num_bytes + 1) + var char_opt = Char.from_u32(c) + if not char_opt: + # TODO: Raise ValueError instead. + return abort[String]( + String.write("chr(", c, ") is not a valid Unicode codepoint") + ) + + # SAFETY: We just checked that `char` is present. + var char = char_opt.unsafe_value() + + var num_bytes = char.utf8_byte_length() + var ptr = UnsafePointer[UInt8].alloc(num_bytes + 1) + _ = char.unsafe_write_utf8(ptr) + ptr[num_bytes] = 0 + return String(ptr=ptr, length=num_bytes + 1) # ===----------------------------------------------------------------------=== # diff --git a/stdlib/src/collections/string/string_slice.mojo b/stdlib/src/collections/string/string_slice.mojo index 6d17128f84..33cd07cf76 100644 --- a/stdlib/src/collections/string/string_slice.mojo +++ b/stdlib/src/collections/string/string_slice.mojo @@ -75,34 +75,6 @@ fn _utf8_first_byte_sequence_length(b: Byte) -> Int: return Int(count_leading_zeros(~b)) + Int(b < 0b1000_0000) -fn _shift_unicode_to_utf8(ptr: UnsafePointer[UInt8], c: Int, num_bytes: Int): - """Shift unicode to utf8 representation. - - ### Unicode (represented as UInt32 BE) to UTF-8 conversion: - - 1: 00000000 00000000 00000000 0aaaaaaa -> 0aaaaaaa - - a - - 2: 00000000 00000000 00000aaa aabbbbbb -> 110aaaaa 10bbbbbb - - (a >> 6) | 0b11000000, b | 0b10000000 - - 3: 00000000 00000000 aaaabbbb bbcccccc -> 1110aaaa 10bbbbbb 10cccccc - - (a >> 12) | 0b11100000, (b >> 6) | 0b10000000, c | 0b10000000 - - 4: 00000000 000aaabb bbbbcccc ccdddddd -> 11110aaa 10bbbbbb 10cccccc - 10dddddd - - (a >> 18) | 0b11110000, (b >> 12) | 0b10000000, (c >> 6) | 0b10000000, - d | 0b10000000 - """ - if num_bytes == 1: - ptr[0] = UInt8(c) - return - - var shift = 6 * (num_bytes - 1) - var mask = UInt8(0xFF) >> (num_bytes + 1) - var num_bytes_marker = UInt8(0xFF) << (8 - num_bytes) - ptr[0] = ((c >> shift) & mask) | num_bytes_marker - for i in range(1, num_bytes): - shift -= 6 - ptr[i] = ((c >> shift) & 0b0011_1111) | 0b1000_0000 - - fn _utf8_byte_type(b: SIMD[DType.uint8, _], /) -> __type_of(b): """UTF-8 byte type. diff --git a/stdlib/test/builtin/test_char.mojo b/stdlib/test/builtin/test_char.mojo index 0b4b9ad915..dce651b41c 100644 --- a/stdlib/test/builtin/test_char.mojo +++ b/stdlib/test/builtin/test_char.mojo @@ -51,6 +51,62 @@ def test_char_properties(): assert_false(Char.from_u32(0b1111_1111).value().is_ascii()) +fn assert_utf8_bytes(codepoint: UInt32, owned expected: List[Byte]) raises: + var char_opt = Char.from_u32(codepoint) + var char = char_opt.value() + + # Allocate a length-4 buffer to write to. + var buffer = List[Byte](0, 0, 0, 0) + var written = char.unsafe_write_utf8(buffer.unsafe_ptr()) + + # Check that the number of bytes written was as expected. + assert_equal( + written, + len(expected), + "wrong byte count written encoding codepoint: {}".format(codepoint), + ) + + # Normalize `expected` to length 4 so we can compare the written byte + # values with `buffer`. + for _ in range(4 - len(expected)): + expected.append(0) + + assert_equal( + buffer, + expected, + "wrong byte values written encoding codepoint: {}".format(codepoint), + ) + + +def test_char_utf8_encoding(): + assert_utf8_bytes(0, List[Byte](0)) + assert_utf8_bytes(1, List[Byte](1)) + assert_utf8_bytes(127, List[Byte](127)) + + # Smallest 2-byte codepoint + assert_utf8_bytes(128, List[Byte](0b1100_0010, 0b1000_0000)) + # Largest 2-byte codepoint + assert_utf8_bytes(2**11 - 1, List[Byte](0b1101_1111, 0b1011_1111)) + + # Smallest 3-byte codepoint -- 2^11 == 2048 + assert_utf8_bytes( + 2**11, List[Byte](0b1110_0000, 0b1010_0000, 0b1000_0000) + ) + # Largest 3-byte codepoint -- 2^16 - 1 == 65535 == 0xFFFF + assert_utf8_bytes( + 2**16 - 1, List[Byte](0b1110_1111, 0b1011_1111, 0b1011_1111) + ) + + # Smallest 4-byte codepoint + assert_utf8_bytes( + 2**16, List[Byte](0b1111_0000, 0b1001_0000, 0b1000_0000, 0b1000_0000) + ) + # Largest 4-byte codepoint -- Maximum Unicode codepoint + assert_utf8_bytes( + 0x10FFFF, List[Byte](0b1111_0100, 0b1000_1111, 0b1011_1111, 0b1011_1111) + ) + + def test_char_utf8_byte_length(): fn codepoint_len(cp: UInt32) -> Int: return Char.from_u32(cp).value().utf8_byte_length() @@ -79,7 +135,17 @@ def test_char_utf8_byte_length(): assert_equal(codepoint_len(0x10FFFF), 4) # Maximum Unicode codepoint +def test_char_comptime(): + alias c1 = Char.from_u32(32).value() + + # Test that `utf8_byte_length()` works at compile time. + alias c1_bytes = c1.utf8_byte_length() + assert_equal(c1_bytes, 1) + + def main(): test_char_validity() test_char_properties() + test_char_utf8_encoding() test_char_utf8_byte_length() + test_char_comptime() From c2a2301c68f7ce49236149b9ecfc47c85533c96c Mon Sep 17 00:00:00 2001 From: Connor Gray Date: Sat, 11 Jan 2025 15:22:25 -0600 Subject: [PATCH 197/509] [stdlib] feat: Add `Char` from `UInt8` constructor MODULAR_ORIG_COMMIT_REV_ID: 509bc070e8484f7daf3dc5b6ec37093c9aad898c --- stdlib/src/builtin/char.mojo | 12 ++++++++++++ stdlib/test/builtin/test_char.mojo | 10 ++++++++++ 2 files changed, 22 insertions(+) diff --git a/stdlib/src/builtin/char.mojo b/stdlib/src/builtin/char.mojo index 149ea82b96..ef55d7211d 100644 --- a/stdlib/src/builtin/char.mojo +++ b/stdlib/src/builtin/char.mojo @@ -88,6 +88,18 @@ struct Char(CollectionElement): self._scalar_value = unsafe_unchecked_codepoint + @always_inline + fn __init__(out self, codepoint: UInt8): + """Construct a `Char` from a single byte value. + + This constructor cannot fail because non-negative 8-bit integers are + valid Unicode scalar values. + + Args: + codepoint: The 8-bit codepoint value to convert to a `Char`. + """ + self._scalar_value = UInt32(Int(codepoint)) + # ===-------------------------------------------------------------------===# # Factory methods # ===-------------------------------------------------------------------===# diff --git a/stdlib/test/builtin/test_char.mojo b/stdlib/test/builtin/test_char.mojo index dce651b41c..d8700000a3 100644 --- a/stdlib/test/builtin/test_char.mojo +++ b/stdlib/test/builtin/test_char.mojo @@ -41,6 +41,15 @@ def test_char_validity(): assert_false(Char.from_u32(0x10FFFF + 1)) +def test_char_from_u8(): + var c1 = Char(UInt8(0)) + assert_true(c1.is_ascii()) + + # All non-negative 8-bit integers are codepoints, but not all are ASCII. + var c2 = Char(UInt8(255)) + assert_false(c2.is_ascii()) + + def test_char_properties(): assert_true(Char.from_u32(0).value().is_ascii()) # Last ASCII codepoint. @@ -145,6 +154,7 @@ def test_char_comptime(): def main(): test_char_validity() + test_char_from_u8() test_char_properties() test_char_utf8_encoding() test_char_utf8_byte_length() From 9dadc46264a4a9eec3bf2d4fff3bd089ade0eb16 Mon Sep 17 00:00:00 2001 From: Connor Gray Date: Sat, 11 Jan 2025 16:13:04 -0600 Subject: [PATCH 198/509] [stdlib] feat: Add `Char.unsafe_decode_utf8_char()` This function decodes a single UTF-8 encoded character and returns it as a `Char` value, along with returning the number of bytes read as well. This consolidates two places in the standard library where UTF-8 decoding logic had become duplicated. MODULAR_ORIG_COMMIT_REV_ID: e2670855e4dc2eceb2980b24268360d627c4aa96 --- stdlib/src/builtin/char.mojo | 65 +++++++++++++++++++++ stdlib/src/collections/string/_unicode.mojo | 31 ++-------- stdlib/src/collections/string/string.mojo | 32 ++-------- 3 files changed, 75 insertions(+), 53 deletions(-) diff --git a/stdlib/src/builtin/char.mojo b/stdlib/src/builtin/char.mojo index ef55d7211d..a2ac9bf650 100644 --- a/stdlib/src/builtin/char.mojo +++ b/stdlib/src/builtin/char.mojo @@ -14,6 +14,8 @@ from collections import Optional +from bit import count_leading_zeros + from memory import UnsafePointer @@ -122,6 +124,69 @@ struct Char(CollectionElement): else: return None + @staticmethod + fn unsafe_decode_utf8_char(_ptr: UnsafePointer[Byte]) -> (Char, Int): + """Decodes a single `Char` and number of bytes read from a given UTF-8 + string pointer. + + Safety: + `_ptr` MUST point to the first byte in a **known-valid** UTF-8 + character sequence. This function MUST NOT be used on unvalidated + input. + + Args: + _ptr: Pointer to UTF-8 encoded data containing at least one valid + encoded codepoint. + + Returns: + The decoded codepoint `Char`, as well as the number of bytes read. + + """ + # UTF-8 to Unicode conversion: (represented as UInt32 BE) + # 1: 0aaaaaaa -> 00000000 00000000 00000000 0aaaaaaa a + # 2: 110aaaaa 10bbbbbb -> 00000000 00000000 00000aaa aabbbbbb a << 6 | b + # 3: 1110aaaa 10bbbbbb 10cccccc -> 00000000 00000000 aaaabbbb bbcccccc a << 12 | b << 6 | c + # 4: 11110aaa 10bbbbbb 10cccccc 10dddddd -> 00000000 000aaabb bbbbcccc ccdddddd a << 18 | b << 12 | c << 6 | d + var ptr = _ptr + + var b1 = ptr[] + if (b1 >> 7) == 0: # This is 1 byte ASCII char + return Char(b1), 1 + + # TODO: Use _utf8_first_byte_sequence_length() here instead for + # consistency. + var num_bytes = count_leading_zeros(~b1) + debug_assert( + 1 < Int(num_bytes) < 5, "invalid UTF-8 byte ", b1, " at index 0" + ) + + var shift = Int((6 * (num_bytes - 1))) + var b1_mask = 0b11111111 >> (num_bytes + 1) + var result = Int(b1 & b1_mask) << shift + for i in range(1, num_bytes): + ptr += 1 + # Assert that this is a continuation byte + debug_assert( + ptr[] >> 6 == 0b00000010, + "invalid UTF-8 byte ", + ptr[], + " at index ", + i, + ) + shift -= 6 + result |= Int(ptr[] & 0b00111111) << shift + + # SAFETY: Safe because the input bytes are required to be valid UTF-8, + # and valid UTF-8 will never decode to an out of bounds codepoint + # using the above algorithm. + # FIXME: + # UTF-8 encoding algorithms that do not properly exclude surrogate + # pair code points are actually relatively common (as I understand + # it); the algorithm above does not check for that. + var char = Char(unsafe_unchecked_codepoint=result) + + return char, Int(num_bytes) + # ===-------------------------------------------------------------------===# # Methods # ===-------------------------------------------------------------------===# diff --git a/stdlib/src/collections/string/_unicode.mojo b/stdlib/src/collections/string/_unicode.mojo index 8f340923e9..7c41c0f08a 100644 --- a/stdlib/src/collections/string/_unicode.mojo +++ b/stdlib/src/collections/string/_unicode.mojo @@ -11,7 +11,6 @@ # limitations under the License. # ===----------------------------------------------------------------------=== # -from bit import count_leading_zeros from memory import UnsafePointer, memcpy from collections.string._unicode_lookups import * @@ -116,24 +115,6 @@ fn is_lowercase(s: StringSlice) -> Bool: return found -fn _ord(_p: UnsafePointer[UInt8]) -> (Int, Int): - """Return the rune and number of bytes to be consumed, for given UTF-8 string pointer - """ - var p = _p - var b1 = p[] - if (b1 >> 7) == 0: # This is 1 byte ASCII char - return Int(b1), 1 - var num_bytes = count_leading_zeros(~b1) - var shift = Int((6 * (num_bytes - 1))) - var b1_mask = 0b11111111 >> (num_bytes + 1) - var result = Int(b1 & b1_mask) << shift - for _ in range(1, num_bytes): - p += 1 - shift -= 6 - result |= Int(p[] & 0b00111111) << shift - return result, Int(num_bytes) - - fn _write_rune(rune: UInt32, p: UnsafePointer[UInt8]) -> Int: """Write rune as UTF-8 into provided pointer. Return number of added bytes. """ @@ -155,8 +136,8 @@ fn to_lowercase(s: StringSlice) -> String: var input_offset = 0 var output_offset = 0 while input_offset < s.byte_length(): - var rune_and_size = _ord(input + input_offset) - var index = _lowercase_mapping_index(rune_and_size[0]) + var rune_and_size = Char.unsafe_decode_utf8_char(input + input_offset) + var index = _lowercase_mapping_index(Int(rune_and_size[0])) if index == -1: memcpy( output + output_offset, input + input_offset, rune_and_size[1] @@ -200,13 +181,13 @@ fn to_uppercase(s: StringSlice) -> String: var input_offset = 0 var output_offset = 0 while input_offset < s.byte_length(): - var rune_and_size = _ord(input + input_offset) - var index = _uppercase_mapping_index(rune_and_size[0]) + var rune_and_size = Char.unsafe_decode_utf8_char(input + input_offset) + var index = _uppercase_mapping_index(Int(rune_and_size[0])) var index2 = _uppercase_mapping2_index( - rune_and_size[0] + Int(rune_and_size[0]) ) if index == -1 else -1 var index3 = _uppercase_mapping3_index( - rune_and_size[0] + Int(rune_and_size[0]) ) if index == -1 and index2 == -1 else -1 if index != -1: output_offset += _write_rune( diff --git a/stdlib/src/collections/string/string.mojo b/stdlib/src/collections/string/string.mojo index f52992d86a..58b6a3058d 100644 --- a/stdlib/src/collections/string/string.mojo +++ b/stdlib/src/collections/string/string.mojo @@ -65,34 +65,10 @@ fn ord(s: StringSlice) -> Int: Returns: An integer representing the code point of the given character. """ - # UTF-8 to Unicode conversion: (represented as UInt32 BE) - # 1: 0aaaaaaa -> 00000000 00000000 00000000 0aaaaaaa a - # 2: 110aaaaa 10bbbbbb -> 00000000 00000000 00000aaa aabbbbbb a << 6 | b - # 3: 1110aaaa 10bbbbbb 10cccccc -> 00000000 00000000 aaaabbbb bbcccccc a << 12 | b << 6 | c - # 4: 11110aaa 10bbbbbb 10cccccc 10dddddd -> 00000000 000aaabb bbbbcccc ccdddddd a << 18 | b << 12 | c << 6 | d - var p = s.unsafe_ptr() - var b1 = p[] - if (b1 >> 7) == 0: # This is 1 byte ASCII char - debug_assert(s.byte_length() == 1, "input string length must be 1") - return Int(b1) - var num_bytes = count_leading_zeros(~b1) - debug_assert( - s.byte_length() == Int(num_bytes), "input string must be one character" - ) - debug_assert( - 1 < Int(num_bytes) < 5, "invalid UTF-8 byte ", b1, " at index 0" - ) - var shift = Int((6 * (num_bytes - 1))) - var b1_mask = 0b11111111 >> (num_bytes + 1) - var result = Int(b1 & b1_mask) << shift - for i in range(1, num_bytes): - p += 1 - debug_assert( - p[] >> 6 == 0b00000010, "invalid UTF-8 byte ", b1, " at index ", i - ) - shift -= 6 - result |= Int(p[] & 0b00111111) << shift - return result + # SAFETY: + # This is safe because `s.unsafe_ptr()` is guaranteed to be valid UTF-8. + char, _ = Char.unsafe_decode_utf8_char(s.unsafe_ptr()) + return Int(char) # ===----------------------------------------------------------------------=== # From 40fd3f4cf2b8f575b579118c8b0ac727f86a24d2 Mon Sep 17 00:00:00 2001 From: Connor Gray Date: Sat, 11 Jan 2025 18:05:08 -0600 Subject: [PATCH 199/509] [stdlib] feat: Add `Char.ord()` Unlike the exising `ord()` free function, which (for the time being) returns an `Int`, this function returns a `Char`, which can be useful when wanting to further query properties of the resulting character, which is not easily possible with the raw `Int` returned by `ord()`. MODULAR_ORIG_COMMIT_REV_ID: 70c9ea8afa023f97b7ec918c86a333be225ce932 --- stdlib/src/builtin/char.mojo | 31 +++++++++++++++++++++++ stdlib/src/collections/string/string.mojo | 5 +--- 2 files changed, 32 insertions(+), 4 deletions(-) diff --git a/stdlib/src/builtin/char.mojo b/stdlib/src/builtin/char.mojo index a2ac9bf650..d1e17910b9 100644 --- a/stdlib/src/builtin/char.mojo +++ b/stdlib/src/builtin/char.mojo @@ -13,6 +13,7 @@ """Implements the `Char` type for representing single characters.""" from collections import Optional +from collections.string import StringSlice from bit import count_leading_zeros @@ -124,6 +125,36 @@ struct Char(CollectionElement): else: return None + @staticmethod + fn ord(string: StringSlice) -> Char: + """Returns the `Char` that represents the given one-character string. + + Given a string representing one character, return a `Char` + representing the codepoint of that character. For example, `Char.ord("a")` + returns the codepoint `97`. This is the inverse of the `chr()` function. + + This function is similar to the `ord()` free function, except that it + returns a `Char` instead of an `Int`. + + Args: + string: The input string, which must contain only a single character. + + Returns: + A `Char` representing the codepoint of the given character. + """ + + # SAFETY: + # This is safe because `StringSlice` is guaranteed to point to valid + # UTF-8. + char, num_bytes = Char.unsafe_decode_utf8_char(string.unsafe_ptr()) + + debug_assert( + string.byte_length() == Int(num_bytes), + "input string must be one character", + ) + + return char + @staticmethod fn unsafe_decode_utf8_char(_ptr: UnsafePointer[Byte]) -> (Char, Int): """Decodes a single `Char` and number of bytes read from a given UTF-8 diff --git a/stdlib/src/collections/string/string.mojo b/stdlib/src/collections/string/string.mojo index 58b6a3058d..bad55ae433 100644 --- a/stdlib/src/collections/string/string.mojo +++ b/stdlib/src/collections/string/string.mojo @@ -65,10 +65,7 @@ fn ord(s: StringSlice) -> Int: Returns: An integer representing the code point of the given character. """ - # SAFETY: - # This is safe because `s.unsafe_ptr()` is guaranteed to be valid UTF-8. - char, _ = Char.unsafe_decode_utf8_char(s.unsafe_ptr()) - return Int(char) + return Int(Char.ord(s)) # ===----------------------------------------------------------------------=== # From af984469f084c133ee5dcf6b56490a9a4e032342 Mon Sep 17 00:00:00 2001 From: Connor Gray Date: Sat, 11 Jan 2025 18:37:59 -0600 Subject: [PATCH 200/509] [stdlib] feat: Add `Char.is_posix_space()`, replacing `_isspace()` MODULAR_ORIG_COMMIT_REV_ID: e145e05030e3f046e243f8fbbe09b7ef19f65427 --- stdlib/src/builtin/char.mojo | 46 +++++++++++++ stdlib/src/collections/string/string.mojo | 68 ++----------------- .../src/collections/string/string_slice.mojo | 10 +-- stdlib/src/utils/stringref.mojo | 1 - stdlib/test/builtin/test_char.mojo | 23 +++++++ .../test/collections/string/test_string.mojo | 21 ------ 6 files changed, 79 insertions(+), 90 deletions(-) diff --git a/stdlib/src/builtin/char.mojo b/stdlib/src/builtin/char.mojo index d1e17910b9..3e07032117 100644 --- a/stdlib/src/builtin/char.mojo +++ b/stdlib/src/builtin/char.mojo @@ -234,6 +234,52 @@ struct Char(CollectionElement): """ return self._scalar_value <= 0b0111_1111 + fn is_posix_space(self) -> Bool: + """Returns True if this `Char` is a **space** character according to the + [POSIX locale][1]. + + The POSIX locale is also known as the C locale. + + [1]: https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap07.html#tag_07_03_01 + + This only respects the default "C" locale, i.e. returns True only if the + character specified is one of " \\t\\n\\v\\f\\r". For semantics similar + to Python, use `String.isspace()`. + + Returns: + True iff the character is one of the whitespace characters listed + above. + """ + if not self.is_ascii(): + return False + + # ASCII char + var c = UInt8(Int(self)) + + # NOTE: a global LUT doesn't work at compile time so we can't use it here. + alias ` ` = UInt8(ord(" ")) + alias `\t` = UInt8(ord("\t")) + alias `\n` = UInt8(ord("\n")) + alias `\r` = UInt8(ord("\r")) + alias `\f` = UInt8(ord("\f")) + alias `\v` = UInt8(ord("\v")) + alias `\x1c` = UInt8(ord("\x1c")) + alias `\x1d` = UInt8(ord("\x1d")) + alias `\x1e` = UInt8(ord("\x1e")) + + # This compiles to something very clever that's even faster than a LUT. + return ( + c == ` ` + or c == `\t` + or c == `\n` + or c == `\r` + or c == `\f` + or c == `\v` + or c == `\x1c` + or c == `\x1d` + or c == `\x1e` + ) + @always_inline fn unsafe_write_utf8(self, ptr: UnsafePointer[Byte]) -> UInt: """Shift unicode to utf8 representation. diff --git a/stdlib/src/collections/string/string.mojo b/stdlib/src/collections/string/string.mojo index bad55ae433..984637758f 100644 --- a/stdlib/src/collections/string/string.mojo +++ b/stdlib/src/collections/string/string.mojo @@ -293,13 +293,13 @@ fn atol(str_slice: StringSlice, base: Int = 10) raises -> Int: elif ord_letter_min[1] <= ord_current <= ord_letter_max[1]: result += ord_current - ord_letter_min[1] + 10 found_valid_chars_after_start = True - elif _isspace(ord_current): + elif Char(UInt8(ord_current)).is_posix_space(): has_space_after_number = True start = pos + 1 break else: raise Error(_str_to_base_error(base, str_slice)) - if pos + 1 < str_len and not _isspace(buff[pos + 1]): + if pos + 1 < str_len and not Char(buff[pos + 1]).is_posix_space(): var nextresult = result * real_base if nextresult < result: raise Error( @@ -313,7 +313,7 @@ fn atol(str_slice: StringSlice, base: Int = 10) raises -> Int: if has_space_after_number: for pos in range(start, str_len): - if not _isspace(buff[pos]): + if not Char(buff[pos]).is_posix_space(): raise Error(_str_to_base_error(base, str_slice)) if is_negative: result = -result @@ -335,7 +335,7 @@ fn _trim_and_handle_sign(str_slice: StringSlice, str_len: Int) -> (Int, Bool): """ var buff = str_slice.unsafe_ptr() var start: Int = 0 - while start < str_len and _isspace(buff[start]): + while start < str_len and Char(buff[start]).is_posix_space(): start += 1 var p: Bool = buff[start] == ord("+") var n: Bool = buff[start] == ord("-") @@ -600,66 +600,6 @@ fn _is_ascii_lowercase(c: UInt8) -> Bool: return ord_a <= Int(c) <= ord_z -# ===----------------------------------------------------------------------=== # -# _isspace -# ===----------------------------------------------------------------------=== # - - -fn _isspace(c: StringSlice) -> Bool: - """Determines whether the given character is a whitespace character. - - This only respects the default "C" locale, i.e. returns True only if the - character specified is one of " \\t\\n\\v\\f\\r". For semantics similar - to Python, use `String.isspace()`. - - Args: - c: The character to check. - - Returns: - True iff the character is one of the whitespace characters listed above. - """ - return _isspace(ord(c)) - - -fn _isspace(c: UInt8) -> Bool: - """Determines whether the given character is a whitespace character. - - This only respects the default "C" locale, i.e. returns True only if the - character specified is one of " \\t\\n\\v\\f\\r". For semantics similar - to Python, use `String.isspace()`. - - Args: - c: The character to check. - - Returns: - True iff the character is one of the whitespace characters listed above. - """ - - # NOTE: a global LUT doesn't work at compile time so we can't use it here. - alias ` ` = UInt8(ord(" ")) - alias `\t` = UInt8(ord("\t")) - alias `\n` = UInt8(ord("\n")) - alias `\r` = UInt8(ord("\r")) - alias `\f` = UInt8(ord("\f")) - alias `\v` = UInt8(ord("\v")) - alias `\x1c` = UInt8(ord("\x1c")) - alias `\x1d` = UInt8(ord("\x1d")) - alias `\x1e` = UInt8(ord("\x1e")) - - # This compiles to something very clever that's even faster than a LUT. - return ( - c == ` ` - or c == `\t` - or c == `\n` - or c == `\r` - or c == `\f` - or c == `\v` - or c == `\x1c` - or c == `\x1d` - or c == `\x1e` - ) - - # ===----------------------------------------------------------------------=== # # isprintable # ===----------------------------------------------------------------------=== # diff --git a/stdlib/src/collections/string/string_slice.mojo b/stdlib/src/collections/string/string_slice.mojo index 33cd07cf76..06ed5b66d7 100644 --- a/stdlib/src/collections/string/string_slice.mojo +++ b/stdlib/src/collections/string/string_slice.mojo @@ -25,7 +25,6 @@ from bit import count_leading_zeros from collections import List, Optional from collections.string.format import _CurlyEntryFormattable, _FormatCurlyEntry from collections.string._utf8_validation import _is_valid_utf8 -from collections.string.string import _isspace from memory import UnsafePointer, memcmp, memcpy, Span from memory.memory import _memcmp_impl_unconstrained from sys import bitwidthof, simdwidthof @@ -720,7 +719,7 @@ struct StringSlice[mut: Bool, //, origin: Origin[mut]]( # if not s.isspace(): # break # r_idx -= 1 - while r_idx > 0 and _isspace(self.as_bytes()[r_idx - 1]): + while r_idx > 0 and Char(self.as_bytes()[r_idx - 1]).is_posix_space(): r_idx -= 1 return Self(unsafe_from_utf8=self.as_bytes()[:r_idx]) @@ -770,7 +769,10 @@ struct StringSlice[mut: Bool, //, origin: Origin[mut]]( # if not s.isspace(): # break # l_idx += 1 - while l_idx < self.byte_length() and _isspace(self.as_bytes()[l_idx]): + while ( + l_idx < self.byte_length() + and Char(self.as_bytes()[l_idx]).is_posix_space() + ): l_idx += 1 return Self(unsafe_from_utf8=self.as_bytes()[l_idx:]) @@ -1022,7 +1024,7 @@ struct StringSlice[mut: Bool, //, origin: Origin[mut]]( for s in self: var no_null_len = s.byte_length() var ptr = s.unsafe_ptr() - if no_null_len == 1 and _isspace(ptr[0]): + if no_null_len == 1 and Char(ptr[0]).is_posix_space(): continue elif ( no_null_len == 2 and memcmp(ptr, next_line.unsafe_ptr(), 2) == 0 diff --git a/stdlib/src/utils/stringref.mojo b/stdlib/src/utils/stringref.mojo index 5bdb71d0b2..7d41867971 100644 --- a/stdlib/src/utils/stringref.mojo +++ b/stdlib/src/utils/stringref.mojo @@ -14,7 +14,6 @@ """ from collections.string import StringSlice -from collections.string.string import _isspace from hashlib._hasher import _HashableWithHasher, _Hasher from sys import simdwidthof from sys.ffi import c_char diff --git a/stdlib/test/builtin/test_char.mojo b/stdlib/test/builtin/test_char.mojo index d8700000a3..70bcf8d706 100644 --- a/stdlib/test/builtin/test_char.mojo +++ b/stdlib/test/builtin/test_char.mojo @@ -60,6 +60,28 @@ def test_char_properties(): assert_false(Char.from_u32(0b1111_1111).value().is_ascii()) +def test_char_is_posix_space(): + # checking true cases + assert_true(Char.ord(" ").is_posix_space()) + assert_true(Char.ord("\n").is_posix_space()) + assert_true(Char.ord("\n").is_posix_space()) + assert_true(Char.ord("\t").is_posix_space()) + assert_true(Char.ord("\r").is_posix_space()) + assert_true(Char.ord("\v").is_posix_space()) + assert_true(Char.ord("\f").is_posix_space()) + + # Checking false cases + assert_false(Char.ord("a").is_posix_space()) + assert_false(Char.ord("a").is_posix_space()) + assert_false(Char.ord("u").is_posix_space()) + assert_false(Char.ord("s").is_posix_space()) + assert_false(Char.ord("t").is_posix_space()) + assert_false(Char.ord("i").is_posix_space()) + assert_false(Char.ord("n").is_posix_space()) + assert_false(Char.ord("z").is_posix_space()) + assert_false(Char.ord(".").is_posix_space()) + + fn assert_utf8_bytes(codepoint: UInt32, owned expected: List[Byte]) raises: var char_opt = Char.from_u32(codepoint) var char = char_opt.value() @@ -156,6 +178,7 @@ def main(): test_char_validity() test_char_from_u8() test_char_properties() + test_char_is_posix_space() test_char_utf8_encoding() test_char_utf8_byte_length() test_char_comptime() diff --git a/stdlib/test/collections/string/test_string.mojo b/stdlib/test/collections/string/test_string.mojo index aa4c130ddc..12ccb20871 100644 --- a/stdlib/test/collections/string/test_string.mojo +++ b/stdlib/test/collections/string/test_string.mojo @@ -24,7 +24,6 @@ from collections.string import StringSlice from collections.string.string import ( _calc_initial_buffer_size_int32, _calc_initial_buffer_size_int64, - _isspace, ) from memory import UnsafePointer from python import Python @@ -872,26 +871,6 @@ def test_upper(): def test_isspace(): - # checking true cases - assert_true(_isspace(ord(" "))) - assert_true(_isspace(ord("\n"))) - assert_true(_isspace("\n")) - assert_true(_isspace(ord("\t"))) - assert_true(_isspace(ord("\r"))) - assert_true(_isspace(ord("\v"))) - assert_true(_isspace(ord("\f"))) - - # Checking false cases - assert_false(_isspace(ord("a"))) - assert_false(_isspace("a")) - assert_false(_isspace(ord("u"))) - assert_false(_isspace(ord("s"))) - assert_false(_isspace(ord("t"))) - assert_false(_isspace(ord("i"))) - assert_false(_isspace(ord("n"))) - assert_false(_isspace(ord("z"))) - assert_false(_isspace(ord("."))) - # test all utf8 and unicode separators # 0 is to build a String with null terminator alias next_line = List[UInt8](0xC2, 0x85, 0) From f8fae244ced17b6a9de4872ec1af6349b79a5992 Mon Sep 17 00:00:00 2001 From: Connor Gray Date: Sat, 11 Jan 2025 19:07:54 -0600 Subject: [PATCH 201/509] [stdlib] cleanup: Factor out `List._binary_search_index()` helper MODULAR_ORIG_COMMIT_REV_ID: 282b985c8f6eb1b599662442be62f3bf3c0617d8 --- stdlib/src/collections/list.mojo | 25 +++++++++++++++++++++ stdlib/src/collections/string/_unicode.mojo | 17 ++++++-------- 2 files changed, 32 insertions(+), 10 deletions(-) diff --git a/stdlib/src/collections/list.mojo b/stdlib/src/collections/list.mojo index 10456b1323..2350d21209 100644 --- a/stdlib/src/collections/list.mojo +++ b/stdlib/src/collections/list.mojo @@ -808,6 +808,31 @@ struct List[T: CollectionElement, hint_trivial_type: Bool = False]( return i raise "ValueError: Given element is not in list" + fn _binary_search_index[ + dtype: DType, //, + ](self: List[Scalar[dtype], **_], needle: Scalar[dtype]) -> Optional[UInt]: + """Finds the index of `needle` with binary search. + + This function will return an unspecified index if `self` is not + sorted in ascending order. + + Args: + needle: The value to binary search for. + + Returns: + Returns None if `needle` is not present, or if `self` was not + sorted. + """ + var cursor = UInt(0) + var b = self.data + var length = len(self) + while length > 1: + var half = length >> 1 + length -= half + cursor += Int(b[cursor + half - 1] < needle) * half + + return Optional(cursor) if b[cursor] == needle else None + fn clear(mut self): """Clears the elements in the list.""" for i in range(self.size): diff --git a/stdlib/src/collections/string/_unicode.mojo b/stdlib/src/collections/string/_unicode.mojo index 7c41c0f08a..55fd84018a 100644 --- a/stdlib/src/collections/string/_unicode.mojo +++ b/stdlib/src/collections/string/_unicode.mojo @@ -41,16 +41,13 @@ fn _lowercase_mapping_index(rune: Int) -> Int: fn _to_index[lookup: List[UInt32, **_]](rune: Int) -> Int: """Find index of rune in lookup with binary search. Returns -1 if not found.""" - var cursor = 0 - var x = UInt32(rune) - var b = lookup.data - var length = len(lookup) - while length > 1: - var half = length >> 1 - length -= half - cursor += Int(b.load(cursor + half - 1) < x) * half - - return cursor if b.load(cursor) == x else -1 + + var result = lookup._binary_search_index(UInt32(rune)) + + if result: + return result.unsafe_value() + else: + return -1 fn is_uppercase(s: StringSlice) -> Bool: From a0208de27f7861be2ef237db2134b984d7d3dd51 Mon Sep 17 00:00:00 2001 From: modularbot Date: Sun, 12 Jan 2025 06:53:13 +0000 Subject: [PATCH 202/509] Update lockfiles to point to latest nightly version: 25.1.0.dev2025011205 --- examples/life/magic.lock | 573 +++++++++++++++++----------------- examples/magic.lock | 573 +++++++++++++++++----------------- examples/notebooks/magic.lock | 573 +++++++++++++++++----------------- examples/operators/magic.lock | 573 +++++++++++++++++----------------- magic.lock | 573 +++++++++++++++++----------------- 5 files changed, 1440 insertions(+), 1425 deletions(-) diff --git a/examples/life/magic.lock b/examples/life/magic.lock index fda145688e..5aa437248b 100644 --- a/examples/life/magic.lock +++ b/examples/life/magic.lock @@ -17,7 +17,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/aom-3.9.1-hac33072_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/attr-2.5.1-h166bdaf_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.3.0-pyh71513ae_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-hb921021_15.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-h205f482_16.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.1-h1a47875_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.10.6-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.3.0-h4e1184b_5.conda @@ -26,10 +26,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-h831e299_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h11f4f37_12.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.7-hf454442_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.1-h4e1184b_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.2-h4e1184b_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-h4e1184b_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.7-hd92328a_7.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-hc430e4a_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.8-h8570fcd_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-h7001638_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.10.0-h113e628_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.13.0-h3cf044e_1.conda @@ -99,10 +99,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-hd595efa_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-hcb10f89_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-hcb10f89_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-h08228c5_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-h9d9f30d_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-hcb10f89_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-hcb10f89_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-h08228c5_8_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libasprintf-0.22.5-he8f35ee_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libasprintf-devel-0.22.5-he8f35ee_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libavif16-1.1.1-h1909e37_2.conda @@ -145,7 +145,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libogg-1.3.5-h4ab18f5_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.28-pthreads_h94d23a6_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopus-1.3.1-h7f98852_1.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-h081d1f1_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-h081d1f1_8_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.45-h943b412_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_2.conda @@ -170,12 +170,12 @@ 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-25.1.0.dev2025011105-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025011105-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025011105-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011205-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025011205-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025011205-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011205-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-25.1.0.dev2025011105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011205-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_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.15-py312h98912ed_1.conda @@ -293,7 +293,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aom-3.9.1-hcccb83c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/attr-2.5.1-h4e544f5_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.3.0-pyh71513ae_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-h2cb9fb3_15.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-hb7ec8d5_16.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.1-h740c5af_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-common-0.10.6-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-compression-0.3.0-h0f0193d_5.conda @@ -302,10 +302,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-h1a307af_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h5f50e26_12.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.7-h2080895_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.1-h0f0193d_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.2-h0f0193d_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h0f0193d_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.7-h8a4e35f_7.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h849ce1a_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.8-h92ee776_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h90ecb4a_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-core-cpp-1.14.0-h1887c18_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-identity-cpp-1.10.0-h47b0b28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-blobs-cpp-12.13.0-h185ecfd_1.conda @@ -375,10 +375,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.0.0-h4de3ea5_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h18dbdb1_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-hb7781cd_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h3b568fd_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h3b568fd_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h1e9d426_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-h47f80e1_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h3b568fd_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h3b568fd_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h1e9d426_8_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libasprintf-0.22.5-h87f4aca_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libasprintf-devel-0.22.5-h87f4aca_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libavif16-1.1.1-h3b0c220_2.conda @@ -421,7 +421,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libogg-1.3.5-h0b9eccb_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.28-pthreads_h9d3fd7e_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopus-1.3.1-hf897c2e_1.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-hfc78867_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-hfc78867_8_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.45-hec79eb8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.3-h44a3b7b_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_2.conda @@ -446,12 +446,12 @@ 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-25.1.0.dev2025011105-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025011105-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025011105-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011205-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025011205-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025011205-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011205-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-25.1.0.dev2025011105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011205-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_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.15-py312hdd3e373_1.conda @@ -566,7 +566,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.8.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aom-3.9.1-h7bae524_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.3.0-pyh71513ae_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-h8bc59a9_15.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-hfc2798a_16.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.1-hc8a0bd2_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.10.6-h5505292_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-compression-0.3.0-hc8a0bd2_5.conda @@ -575,10 +575,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-haba67d1_5.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h24f418c_12.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.7-h1be5864_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.1-hc8a0bd2_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.2-hc8a0bd2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-hc8a0bd2_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.7-h19a973c_7.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-he0ff2e4_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.8-h23176ea_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-h794939a_5.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.14.0-hd50102c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.10.0-hc602bab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-blobs-cpp-12.13.0-h7585a09_1.conda @@ -643,10 +643,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.16-ha0e7c42_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_h07bc746_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-h0ad35bc_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-hf07054f_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-hf07054f_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-h4239455_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-hf3eb8e5_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-hf07054f_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-hf07054f_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-h4239455_8_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libasprintf-0.22.5-h8414b35_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libasprintf-devel-0.22.5-h8414b35_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libavif16-1.1.1-h45b7238_2.conda @@ -684,7 +684,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libogg-1.3.5-h99b78c6_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.28-openmp_hf332438_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopus-1.3.1-h27ca646_1.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-h636d7b7_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-h636d7b7_8_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.45-h3783ad8_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.3-h3bd63a1_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h07bc746_2.conda @@ -705,12 +705,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-25.1.0.dev2025011105-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025011105-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025011105-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011205-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025011205-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025011205-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011205-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-25.1.0.dev2025011105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011205-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 @@ -1045,55 +1045,55 @@ packages: license_family: MIT size: 56354 timestamp: 1734348889193 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-hb921021_15.conda - sha256: 537006ad6d5097c134494166a6a1dc1451d5d050878d7b82cef498bfda40ba8a - md5: c79d50f64cffa5ad51ecc1a81057962f +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-h205f482_16.conda + sha256: 0695c285b70385913dc7dce05888d3ad1378247b65273bdab509494a2f8f0eea + md5: b0815d37ab812ade9c07239da7c3c369 depends: - __glibc >=2.17,<3.0.a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 + - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 - libgcc >=13 arch: x86_64 platform: linux license: Apache-2.0 license_family: Apache - size: 107614 - timestamp: 1734021692519 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-h2cb9fb3_15.conda - sha256: 4ce859dc9ff128bf5515604c43f33fb511386022fc9765ca077990f2a3f23df5 - md5: e524686ace966acefb5b8cbc6e8b3daa + size: 107478 + timestamp: 1736592747413 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-hb7ec8d5_16.conda + sha256: 5a2a2691f2e0028e8549b97a340d7e6c502e0d54b7deba00fad505812663a98b + md5: 56f166780076db46c5e273988693d8a3 depends: - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 + - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 - libgcc >=13 arch: aarch64 platform: linux license: Apache-2.0 license_family: Apache - size: 111854 - timestamp: 1734021745104 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-h8bc59a9_15.conda - sha256: 0e41e56b662e76e024182adebcd91d09a4d38a83b35217c84e4967354dfff9a2 - md5: f688b8893c20ad9477a19e7ce614014a + size: 112264 + timestamp: 1736592695540 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-hfc2798a_16.conda + sha256: cdcd932332311db1b614289101b61e32cbae2478ba2bf85763aaf5a5cc7db6f6 + md5: 1e9a41d5296f50c08ae511d61fddef85 depends: - __osx >=11.0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 + - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 arch: arm64 platform: osx license: Apache-2.0 license_family: Apache - size: 92507 - timestamp: 1734021831330 + size: 92547 + timestamp: 1736592866387 - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.1-h1a47875_3.conda sha256: 095ac824ea9303eff67e04090ae531d9eb33d2bf8f82eaade39b839c421e16e8 md5: 55a8561fdbbbd34f50f57d9be12ed084 @@ -1436,9 +1436,9 @@ packages: license_family: Apache size: 97598 timestamp: 1734146239038 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.1-h4e1184b_4.conda - sha256: df586f42210af1134b1c88ff4c278c3cb6d6c807c84eac48860062464b28554d - md5: a5126a90e74ac739b00564a4c7ddcc36 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.2-h4e1184b_0.conda + sha256: 0424e380c435ba03b5948d02e8c958866c4eee50ed29e57f99473a5f795a4cfc + md5: dcd498d493818b776a77fbc242fbf8e4 depends: - __glibc >=2.17,<3.0.a0 - aws-c-common >=0.10.6,<0.10.7.0a0 @@ -1447,11 +1447,11 @@ packages: platform: linux license: Apache-2.0 license_family: Apache - size: 56094 - timestamp: 1733994449690 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.1-h0f0193d_4.conda - sha256: ede8e782467c87ac80ceb9c9af9e917d121b7d8b8c698186d18e3cecd36f2210 - md5: 53e798d720dd78b78847a7b2fdb05fc9 + size: 55911 + timestamp: 1736535960724 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.2-h0f0193d_0.conda + sha256: fba38e469457764afcb94aa84d4d7788e6b5fa1554d34b05c904d2245fdd3c81 + md5: a78928881c652facde2a13ec6e776f3c depends: - aws-c-common >=0.10.6,<0.10.7.0a0 - libgcc >=13 @@ -1459,11 +1459,11 @@ packages: platform: linux license: Apache-2.0 license_family: Apache - size: 58621 - timestamp: 1733994421495 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.1-hc8a0bd2_4.conda - sha256: de98343ce42d2e569b3380292d20f47bf39bda08aadabcbb8e650d3f38fd742f - md5: 22f72f8cd7ead211304ac17d337d96e0 + size: 58221 + timestamp: 1736536003041 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.2-hc8a0bd2_0.conda + sha256: ea4f0f1e99056293c69615f581a997d65ba7e229e296e402e0d8ef750648a5b5 + md5: e7b5498ac7b7ab921a907be38f3a8080 depends: - __osx >=11.0 - aws-c-common >=0.10.6,<0.10.7.0a0 @@ -1471,8 +1471,8 @@ packages: platform: osx license: Apache-2.0 license_family: Apache - size: 49664 - timestamp: 1733994553014 + size: 49872 + timestamp: 1736536152332 - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-h4e1184b_4.conda sha256: 1ed9a332d06ad595694907fad2d6d801082916c27cd5076096fda4061e6d24a8 md5: 74e8c3e4df4ceae34aa2959df4b28101 @@ -1510,9 +1510,9 @@ packages: license_family: Apache size: 70186 timestamp: 1733994496998 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.7-hd92328a_7.conda - sha256: 094cd81f1e5ba713e9e7a272ee52b5dde3ccc4842ea90f19c0354a00bbdac3d9 - md5: 02b95564257d5c3db9c06beccf711f95 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.8-h8570fcd_1.conda + sha256: ff8f08bc615d3ef6d970df80988200b3ecee76ecfa4885109cd82b30176cfda9 + md5: f21296b496cca1c1fa426b9a3b676e79 depends: - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 @@ -1523,18 +1523,18 @@ packages: - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - aws-c-s3 >=0.7.7,<0.7.8.0a0 - - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 + - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 - libgcc >=13 - libstdcxx >=13 arch: x86_64 platform: linux license: Apache-2.0 license_family: Apache - size: 354703 - timestamp: 1734177883319 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.7-h8a4e35f_7.conda - sha256: 5ba9188e0cb4e3faff9bc96774febb040aa3b802aedba29d847e00e7b5eab84e - md5: d77a9e3d7ce15399903e92825fd651b5 + size: 354328 + timestamp: 1736598991291 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.8-h92ee776_1.conda + sha256: 114ac89d3936bf801dcbd488ba0b468c7e113a407cb1ee5898259a5202b7e750 + md5: 63546051b5687f793ae977c7994e1339 depends: - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 @@ -1544,18 +1544,18 @@ packages: - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - aws-c-s3 >=0.7.7,<0.7.8.0a0 - - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 + - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 - libgcc >=13 - libstdcxx >=13 arch: aarch64 platform: linux license: Apache-2.0 license_family: Apache - size: 283154 - timestamp: 1734177845248 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.7-h19a973c_7.conda - sha256: 8269e6746eb3a5d15b732a3983888bf98dfc1f6594e95250fc8d16b43cfd5ff9 - md5: 95714136bef3e917bd5a2942d4682b20 + size: 284664 + timestamp: 1736598964131 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.8-h23176ea_1.conda + sha256: db6a31078bb82fb12044d7706239c003568273729f7ba4971c1479b7926ada82 + md5: 31fdd3ffb00f5472196fa95ef08087b7 depends: - __osx >=11.0 - aws-c-auth >=0.8.0,<0.8.1.0a0 @@ -1566,23 +1566,23 @@ packages: - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - aws-c-s3 >=0.7.7,<0.7.8.0a0 - - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 + - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 - libcxx >=18 arch: arm64 platform: osx license: Apache-2.0 license_family: Apache - size: 236249 - timestamp: 1734178020924 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-hc430e4a_4.conda - sha256: 2dc09f6f9c49127b5f96e7535b64a9c521b944d76d8b7d03d48ae80257ac1cea - md5: aeefac461bea1f126653c1285cf5af08 + size: 236269 + timestamp: 1736599024242 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-h7001638_5.conda + sha256: 849524b09865e84d6926aa814944cf71511aa4a00fffc5ad174c286d5dfac5f0 + md5: fc01d77a7f383b2915f276c73b7d0934 depends: - __glibc >=2.17,<3.0.a0 - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - - aws-crt-cpp >=0.29.7,<0.29.8.0a0 + - aws-crt-cpp >=0.29.8,<0.29.9.0a0 - libcurl >=8.11.1,<9.0a0 - libgcc >=13 - libstdcxx >=13 @@ -1592,16 +1592,16 @@ packages: platform: linux license: Apache-2.0 license_family: Apache - size: 3060561 - timestamp: 1734093737431 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h849ce1a_4.conda - sha256: 51b9e9df8cbab4a13a1b9d39d6ef5ed162aaa29c09a745810e00bbe92e1045c1 - md5: cda7747f4398be8d1fb37362815917a7 + size: 3088636 + timestamp: 1736598504343 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h90ecb4a_5.conda + sha256: 9467acd0f2df74ea7472aebdfb8b5656a8d403abad2edbce9743d6e88c94fd10 + md5: 33f86f8de1d8cd40f8fe628dc0784437 depends: - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - - aws-crt-cpp >=0.29.7,<0.29.8.0a0 + - aws-crt-cpp >=0.29.8,<0.29.9.0a0 - libcurl >=8.11.1,<9.0a0 - libgcc >=13 - libstdcxx >=13 @@ -1611,17 +1611,17 @@ packages: platform: linux license: Apache-2.0 license_family: Apache - size: 2920625 - timestamp: 1734093552712 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-he0ff2e4_4.conda - sha256: 535b970aaa13be45f8cab8205c59f044b17364111c41a227f061775a5c834e18 - md5: 0981ed87098b149bdb7d99a4a3fd0e58 + size: 2925443 + timestamp: 1736598526637 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-h794939a_5.conda + sha256: 2b1e7d5a45e82604bfdb6de63c53cf0e9495f596cfd90e644a1e67910de7f91c + md5: a2374b4182bf5b2d08b2903393d0c487 depends: - __osx >=11.0 - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - - aws-crt-cpp >=0.29.7,<0.29.8.0a0 + - aws-crt-cpp >=0.29.8,<0.29.9.0a0 - libcurl >=8.11.1,<9.0a0 - libcxx >=18 - libzlib >=1.3.1,<2.0a0 @@ -1630,8 +1630,8 @@ packages: platform: osx license: Apache-2.0 license_family: Apache - size: 2826534 - timestamp: 1734094018287 + size: 2824168 + timestamp: 1736598935034 - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda sha256: fe07debdb089a3db17f40a7f20d283d75284bb4fc269ef727b8ba6fc93f7cb5a md5: 0a8838771cc2e985cd295e01ae83baf1 @@ -3358,13 +3358,13 @@ packages: license_family: Apache size: 1178260 timestamp: 1736008642885 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-hd595efa_7_cpu.conda - build_number: 7 - sha256: 554ffa338264c1dc34d95adb7eb856d50a2f25e7fa303a1a51e4372301b7c96f - md5: 08d4aff5ee6dee9a1b9ab13fca927697 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-h9d9f30d_8_cpu.conda + build_number: 8 + sha256: f6c72ce82d145cb94a1131b68547b88056fb48158a382f9ce763286fce53ee65 + md5: 1c9caae53b14a385b59e87687adad2d6 depends: - __glibc >=2.17,<3.0.a0 - - aws-crt-cpp >=0.29.7,<0.29.8.0a0 + - aws-crt-cpp >=0.29.8,<0.29.9.0a0 - aws-sdk-cpp >=1.11.458,<1.11.459.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-identity-cpp >=1.10.0,<1.10.1.0a0 @@ -3397,14 +3397,14 @@ packages: platform: linux license: Apache-2.0 license_family: APACHE - size: 8770256 - timestamp: 1735684696564 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-hb7781cd_7_cpu.conda - build_number: 7 - sha256: f6107506bd16788560b47a4d18c1457b4df30a49334364d32613fe3f53ba6cbb - md5: 98cf7127ca7b3854c5d1c8bef1ed6e53 - depends: - - aws-crt-cpp >=0.29.7,<0.29.8.0a0 + size: 8801586 + timestamp: 1736610546493 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-h47f80e1_8_cpu.conda + build_number: 8 + sha256: bf381dfa84e94ffce715c46352dd99f6f6ace69859b0efb822500f8882be429a + md5: daceef1881b4ddc72bb5b225a122c633 + depends: + - aws-crt-cpp >=0.29.8,<0.29.9.0a0 - aws-sdk-cpp >=1.11.458,<1.11.459.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-identity-cpp >=1.10.0,<1.10.1.0a0 @@ -3431,21 +3431,21 @@ packages: - zstd >=1.5.6,<1.6.0a0 constrains: - arrow-cpp <0.0a0 - - parquet-cpp <0.0a0 - apache-arrow-proc =*=cpu + - parquet-cpp <0.0a0 arch: aarch64 platform: linux license: Apache-2.0 license_family: APACHE - size: 8026714 - timestamp: 1735685336542 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-h0ad35bc_7_cpu.conda - build_number: 7 - sha256: 4fbdd8bb89d912bf03f10f9373a8d96a1cdd7a7851e107393418a3d2715bc27e - md5: 4ba2173203f44bbf03d19aaba6ed07d3 + size: 8045923 + timestamp: 1736611764958 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-hf3eb8e5_8_cpu.conda + build_number: 8 + sha256: 766e46b45520773db93ee1a91951cc135a85544bba738e7b378d31f16097753f + md5: fdc79871e6c243b819497337215416d9 depends: - __osx >=11.0 - - aws-crt-cpp >=0.29.7,<0.29.8.0a0 + - aws-crt-cpp >=0.29.8,<0.29.9.0a0 - aws-sdk-cpp >=1.11.458,<1.11.459.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-identity-cpp >=1.10.0,<1.10.1.0a0 @@ -3476,111 +3476,111 @@ packages: platform: osx license: Apache-2.0 license_family: APACHE - size: 5506699 - timestamp: 1735682962976 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-hcb10f89_7_cpu.conda - build_number: 7 - sha256: 87ea5d6a84d922d73975dce8661fccf257e72e755175b12c30e1181a34e37987 - md5: 12d84228204c56fec6ed113288014d11 + size: 5497383 + timestamp: 1736608604724 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-hcb10f89_8_cpu.conda + build_number: 8 + sha256: 126a6e78199311d99e38b9d633ce3e0290795ac68ce3ee8a9b91436c85c4095d + md5: 544759904898499f634f8f88a9907f88 depends: - __glibc >=2.17,<3.0.a0 - - libarrow 18.1.0 hd595efa_7_cpu + - libarrow 18.1.0 h9d9f30d_8_cpu - libgcc >=13 - libstdcxx >=13 arch: x86_64 platform: linux license: Apache-2.0 license_family: APACHE - size: 612463 - timestamp: 1735684749868 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h3b568fd_7_cpu.conda - build_number: 7 - sha256: 42cbfc87096f745d565d814d65b7228c82d985f1898859d5e456016d73e81c82 - md5: 4c1d8c3feea249782148d3cd6a25392e + size: 611558 + timestamp: 1736610592458 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h3b568fd_8_cpu.conda + build_number: 8 + sha256: c94844ab1d8fafe17775161283bd1fe7ab1f93f660fc5ba0c01bd33fe3d21eaf + md5: 7a8e6a363d2f39a2f3df3f181d12692d depends: - - libarrow 18.1.0 hb7781cd_7_cpu + - libarrow 18.1.0 h47f80e1_8_cpu - libgcc >=13 - libstdcxx >=13 arch: aarch64 platform: linux license: Apache-2.0 license_family: APACHE - size: 578222 - timestamp: 1735685424850 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-hf07054f_7_cpu.conda - build_number: 7 - sha256: 86e20cebfdb4f335e98265c1b88f5053bf3e3648768a317856295846bfdbf2b4 - md5: 3eaf71fe987de13061db795e03bb1a1c + size: 579798 + timestamp: 1736611846905 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-hf07054f_8_cpu.conda + build_number: 8 + sha256: 29196dc6b2e4488f98bd8950de6333efe5d1a9d0cc62e186694946766185475e + md5: 8db96829f8e427167f450c7467a1ba44 depends: - __osx >=11.0 - - libarrow 18.1.0 h0ad35bc_7_cpu + - libarrow 18.1.0 hf3eb8e5_8_cpu - libcxx >=18 arch: arm64 platform: osx license: Apache-2.0 license_family: APACHE - size: 485185 - timestamp: 1735683071232 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-hcb10f89_7_cpu.conda - build_number: 7 - sha256: 99c12511fba79c7947f78d676eae5857659084f687f375f68bc20bd4cddb0a0e - md5: 0a81eb63d7cd150f598c752e86388d57 + size: 484442 + timestamp: 1736608695654 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-hcb10f89_8_cpu.conda + build_number: 8 + sha256: fe50edf030b5ccbadec2bf8f90d4cdf32d63ec52ba26233fc2c8bfbe43df3b15 + md5: 894a5ed78728b77c997fefeee222ac4d depends: - __glibc >=2.17,<3.0.a0 - - libarrow 18.1.0 hd595efa_7_cpu - - libarrow-acero 18.1.0 hcb10f89_7_cpu + - libarrow 18.1.0 h9d9f30d_8_cpu + - libarrow-acero 18.1.0 hcb10f89_8_cpu - libgcc >=13 - - libparquet 18.1.0 h081d1f1_7_cpu + - libparquet 18.1.0 h081d1f1_8_cpu - libstdcxx >=13 arch: x86_64 platform: linux license: Apache-2.0 license_family: APACHE - size: 587497 - timestamp: 1735684880531 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h3b568fd_7_cpu.conda - build_number: 7 - sha256: 13ba7d3d08015aa26569eca9e198e2f8b2a0cd2d9c420e41c78cc2e5d5170f26 - md5: f39f5d725c2ca94c2e7b19e2717fd4ab + size: 588032 + timestamp: 1736610711976 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h3b568fd_8_cpu.conda + build_number: 8 + sha256: bb87d8e633074c9759d93abb277d31314dc66fad741253b48e8265e186228c5b + md5: 11856da892b919cc27bd62638d701c65 depends: - - libarrow 18.1.0 hb7781cd_7_cpu - - libarrow-acero 18.1.0 h3b568fd_7_cpu + - libarrow 18.1.0 h47f80e1_8_cpu + - libarrow-acero 18.1.0 h3b568fd_8_cpu - libgcc >=13 - - libparquet 18.1.0 hfc78867_7_cpu + - libparquet 18.1.0 hfc78867_8_cpu - libstdcxx >=13 arch: aarch64 platform: linux license: Apache-2.0 license_family: APACHE - size: 560329 - timestamp: 1735685518922 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-hf07054f_7_cpu.conda - build_number: 7 - sha256: 52c5c4e9cd5f2ac91dcebb6a920ab2536febcea116ff8767e5439329d7da820b - md5: 97a2d3606682d94f7d73112e9ad684ae + size: 560571 + timestamp: 1736611941995 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-hf07054f_8_cpu.conda + build_number: 8 + sha256: bff2d39e418eadab8c522a536449ac90f070dd8e83e2bd5e67a9c3eb8ecf712f + md5: 7b3736f49b3ba299b7799aeb448cb830 depends: - __osx >=11.0 - - libarrow 18.1.0 h0ad35bc_7_cpu - - libarrow-acero 18.1.0 hf07054f_7_cpu + - libarrow 18.1.0 hf3eb8e5_8_cpu + - libarrow-acero 18.1.0 hf07054f_8_cpu - libcxx >=18 - - libparquet 18.1.0 h636d7b7_7_cpu + - libparquet 18.1.0 h636d7b7_8_cpu arch: arm64 platform: osx license: Apache-2.0 license_family: APACHE - size: 491237 - timestamp: 1735684688308 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-h08228c5_7_cpu.conda - build_number: 7 - sha256: 53ea53a06e137c2f81ebfdff3f978babb8b59e31f705a19b57056ec8754c1abf - md5: e128def53c133e8a23ac00cd4a479335 + size: 491001 + timestamp: 1736609758514 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-h08228c5_8_cpu.conda + build_number: 8 + sha256: dca372e27724904577315b8db3793e027a5c152a485e505e630a57b15634cd85 + md5: 46eaf81238da6f3ffab1f3ffdcee382e depends: - __glibc >=2.17,<3.0.a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.1.0 hd595efa_7_cpu - - libarrow-acero 18.1.0 hcb10f89_7_cpu - - libarrow-dataset 18.1.0 hcb10f89_7_cpu + - libarrow 18.1.0 h9d9f30d_8_cpu + - libarrow-acero 18.1.0 hcb10f89_8_cpu + - libarrow-dataset 18.1.0 hcb10f89_8_cpu - libgcc >=13 - libprotobuf >=5.28.3,<5.28.4.0a0 - libstdcxx >=13 @@ -3588,18 +3588,18 @@ packages: platform: linux license: Apache-2.0 license_family: APACHE - size: 521861 - timestamp: 1735684940668 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h1e9d426_7_cpu.conda - build_number: 7 - sha256: 252e2a0d8c733f36b50499786480a05a59577d617f291868149c80534c1e8ffc - md5: 6da921d9e1c4e2ab2679eeea7cbd4c82 + size: 521707 + timestamp: 1736610765240 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h1e9d426_8_cpu.conda + build_number: 8 + sha256: 1896ea00da28e10670f7ba51bb543e68a87f717e9f5692fee44268f1a13d9eee + md5: e7dc0209e065a2b51f19848cefa4b1ab depends: - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.1.0 hb7781cd_7_cpu - - libarrow-acero 18.1.0 h3b568fd_7_cpu - - libarrow-dataset 18.1.0 h3b568fd_7_cpu + - libarrow 18.1.0 h47f80e1_8_cpu + - libarrow-acero 18.1.0 h3b568fd_8_cpu + - libarrow-dataset 18.1.0 h3b568fd_8_cpu - libgcc >=13 - libprotobuf >=5.28.3,<5.28.4.0a0 - libstdcxx >=13 @@ -3607,27 +3607,27 @@ packages: platform: linux license: Apache-2.0 license_family: APACHE - size: 516014 - timestamp: 1735685565929 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-h4239455_7_cpu.conda - build_number: 7 - sha256: a45bbdd6932aed972d6c6ce30a7439aa8ec9d9b8ee5affb350d41e50abdc0127 - md5: 91927747173f65695e441346c7145e26 + size: 517189 + timestamp: 1736611989417 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-h4239455_8_cpu.conda + build_number: 8 + sha256: ae52d926ebfc8edb0728824f2918a825d39bd85a4ef27fe2b73656cfecdd7c69 + md5: f67eb19d22ba355cced8c86073ad49b1 depends: - __osx >=11.0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.1.0 h0ad35bc_7_cpu - - libarrow-acero 18.1.0 hf07054f_7_cpu - - libarrow-dataset 18.1.0 hf07054f_7_cpu + - libarrow 18.1.0 hf3eb8e5_8_cpu + - libarrow-acero 18.1.0 hf07054f_8_cpu + - libarrow-dataset 18.1.0 hf07054f_8_cpu - libcxx >=18 - libprotobuf >=5.28.3,<5.28.4.0a0 arch: arm64 platform: osx license: Apache-2.0 license_family: APACHE - size: 452385 - timestamp: 1735684993831 + size: 452161 + timestamp: 1736609917123 - conda: https://conda.anaconda.org/conda-forge/linux-64/libasprintf-0.22.5-he8f35ee_3.conda sha256: 2da5c735811cbf38c7f7844ab457ff8b25046bbf5fe5ebd5dc1c2fafdf4fbe1c md5: 4fab9799da9571266d05ca5503330655 @@ -5237,13 +5237,13 @@ packages: license_family: BSD size: 252854 timestamp: 1606823635137 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-h081d1f1_7_cpu.conda - build_number: 7 - sha256: 55945b761130f60abdecf1551907ecfd05cb4a5958cf74d855b30c005ecb3592 - md5: b97013ef4e1dd2cf11594f06d5b5e83a +- conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-h081d1f1_8_cpu.conda + build_number: 8 + sha256: 2c6d900d4e9dd3c4000886d76d3f8a099e904667ebc6935b49428e6e9b766481 + md5: a9fa0ef309406c84b46db3a28efd761e depends: - __glibc >=2.17,<3.0.a0 - - libarrow 18.1.0 hd595efa_7_cpu + - libarrow 18.1.0 h9d9f30d_8_cpu - libgcc >=13 - libstdcxx >=13 - libthrift >=0.21.0,<0.21.1.0a0 @@ -5252,14 +5252,14 @@ packages: platform: linux license: Apache-2.0 license_family: APACHE - size: 1205598 - timestamp: 1735684849150 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-hfc78867_7_cpu.conda - build_number: 7 - sha256: 6dff9bbe731dc2cefe96bd9c7981d2cbef2b564a3152840a29c9b6a493ea50d9 - md5: 184bec7a9392ab6ba8134041e81971d6 + size: 1207011 + timestamp: 1736610684584 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-hfc78867_8_cpu.conda + build_number: 8 + sha256: 2ed6b9eac4504051ddc094ea3f3a2b3198d4d25a443a96fa2971d8075d790c31 + md5: 9a907190c9e2c6bf1a29569700218f0b depends: - - libarrow 18.1.0 hb7781cd_7_cpu + - libarrow 18.1.0 h47f80e1_8_cpu - libgcc >=13 - libstdcxx >=13 - libthrift >=0.21.0,<0.21.1.0a0 @@ -5268,15 +5268,15 @@ packages: platform: linux license: Apache-2.0 license_family: APACHE - size: 1117825 - timestamp: 1735685495511 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-h636d7b7_7_cpu.conda - build_number: 7 - sha256: bf42e43542a90edd86ba5aa5fd4543671625f1bc35f62be32688f00e18bae990 - md5: 93de9ba66a20db32a2646d313794b3a8 + size: 1117465 + timestamp: 1736611918180 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-h636d7b7_8_cpu.conda + build_number: 8 + sha256: 4991519ef4264abc7160e9faaf8ff01d4731bf1497076bef1895d6c366f796eb + md5: b8bd275a49877fdec62ff787818a869d depends: - __osx >=11.0 - - libarrow 18.1.0 h0ad35bc_7_cpu + - libarrow 18.1.0 hf3eb8e5_8_cpu - libcxx >=18 - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 @@ -5284,8 +5284,8 @@ packages: platform: osx license: Apache-2.0 license_family: APACHE - size: 873251 - timestamp: 1735684582558 + size: 873593 + timestamp: 1736609701839 - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.45-h943b412_0.conda sha256: b8f5b5ba9a14dedf7c97c01300de492b1b52b68eacbc3249a13fdbfa82349a2f md5: 85cbdaacad93808395ac295b5667d25b @@ -6171,47 +6171,47 @@ packages: license_family: BSD size: 24048 timestamp: 1733219945697 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011105-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011205-release.conda noarch: python - sha256: 4bd3331f281b0d42b57e7e5d28eee3650cb52ffb3f9c381f349255034ab4d011 - md5: 9a12141b0beb110b83d4ae256d8de1b0 + sha256: ce8b3d98a933cb0fdaa2e6e293fc940d51aaae273c2a6f14194ac45230ab701a + md5: d796fa41a5dd97e2bc1019b10497a31b depends: - - max-core ==25.1.0.dev2025011105 release - - max-python >=25.1.0.dev2025011105,<26.0a0 - - mojo-jupyter ==25.1.0.dev2025011105 release - - mblack ==25.1.0.dev2025011105 release + - max-core ==25.1.0.dev2025011205 release + - max-python >=25.1.0.dev2025011205,<26.0a0 + - mojo-jupyter ==25.1.0.dev2025011205 release + - mblack ==25.1.0.dev2025011205 release license: LicenseRef-Modular-Proprietary size: 9919 - timestamp: 1736572603494 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025011105-release.conda - sha256: 45fdbcfa2c105f01e3c06823e072f2b7b3ceeafe21188973a3f64a87c43c29e6 - md5: ba267ab335859f14f9c0d887d4a83f14 + timestamp: 1736659018393 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025011205-release.conda + sha256: 6bbe93bf6df795ec42e609b4a9e52d64bdaa948c5527c16408930b7d699244d0 + md5: 8dedeccd5df7d21651ce7ba876ad3db9 depends: - - mblack ==25.1.0.dev2025011105 release + - mblack ==25.1.0.dev2025011205 release license: LicenseRef-Modular-Proprietary - size: 244035937 - timestamp: 1736572608009 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025011105-release.conda - sha256: 23794990d901f563fd2492483d4f5e0b1b91ed616028bf70bd9e2eaace6bd56b - md5: e8f626acac2d17a591ac8353ba41f5d0 + size: 244387099 + timestamp: 1736659018391 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025011205-release.conda + sha256: 97f364dc4051c44d2fdd77a2a5d314b6b460fef5e1ae77ba5e88d7c7024d8a15 + md5: acd35656dff9277c8401424aeb44ed58 depends: - - mblack ==25.1.0.dev2025011105 release + - mblack ==25.1.0.dev2025011205 release license: LicenseRef-Modular-Proprietary - size: 247708765 - timestamp: 1736572603492 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025011105-release.conda - sha256: 8cc71a4a35f96867f4131ddca60d084a8df937ec0f551b62601adc9202788a82 - md5: 4b8d6a0afbcebe7c2e5dc2ccd30c55a8 + size: 248031826 + timestamp: 1736659028471 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025011205-release.conda + sha256: ba42127f64b3fad135aad191f14b68a87a5820d78355b4ab9a95aabb40e183c4 + md5: 2078ddc332986f28c8b67c413aa0c6e9 depends: - - mblack ==25.1.0.dev2025011105 release + - mblack ==25.1.0.dev2025011205 release license: LicenseRef-Modular-Proprietary - size: 206225127 - timestamp: 1736572820782 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025011105-3.12release.conda - sha256: 621688d96524cbf32ed8f33e4d572043973beb875708e69af36735ee730cc6c4 - md5: bb2eb7a24245cd62aed0b9d3e3e85604 + size: 206561289 + timestamp: 1736660251821 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025011205-3.12release.conda + sha256: f4a145b7b67707fa4053ebc992ecce87190cf34039cad29457c7b9474d0c3e13 + md5: ace652c55e958db1e320c5423fe5c320 depends: - - max-core ==25.1.0.dev2025011105 release + - max-core ==25.1.0.dev2025011205 release - python 3.12.* - fastapi - httpx @@ -6232,13 +6232,13 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 124216697 - timestamp: 1736572608017 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025011105-3.12release.conda - sha256: fd2587af6018758078516561bfdb54d8175207edd4ce6dce211aeb9dffbfd967 - md5: 8d1481a3abe8cd46a76797465f6a9eb6 + size: 124320649 + timestamp: 1736659018401 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025011205-3.12release.conda + sha256: fcbf3f2315a28485f0d5338ac3cf4a26540e30bc033f21a7789199c2a94ab4c1 + md5: 43fa4a1c11fe12b55f984e32501a1a09 depends: - - max-core ==25.1.0.dev2025011105 release + - max-core ==25.1.0.dev2025011205 release - python 3.12.* - fastapi - httpx @@ -6259,13 +6259,13 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 127983766 - timestamp: 1736572603503 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025011105-3.12release.conda - sha256: 5d6590e84cf64008fd48066ef10138c48cdbb6d6e2a1d3de01e71270d8d8d966 - md5: 92aa60fa7fe761433d03416f21c8d912 + size: 128073303 + timestamp: 1736659028481 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025011205-3.12release.conda + sha256: c6b332a826824959a196a09095bca25ff614ec2b05939683f2971160dd1a0b25 + md5: 1cf2f5ed4307f35ea22c392734a54751 depends: - - max-core ==25.1.0.dev2025011105 release + - max-core ==25.1.0.dev2025011205 release - python 3.12.* - fastapi - httpx @@ -6286,12 +6286,12 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 110625116 - timestamp: 1736572820784 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011105-release.conda + size: 110696805 + timestamp: 1736660251823 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011205-release.conda noarch: python - sha256: f447d269d29bb49fd97275f623632a569638c31b40e88489367df3d7d4ce90e2 - md5: 32c691c7fc2c6a218e1ce2272965a101 + sha256: a31c5c6330eb6638ee1698cea23e0bdd9c1acc1560c37437cda156a4913ee27f + md5: aea163e4e020e7ab6c44476abb1e5c2b depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -6301,8 +6301,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130815 - timestamp: 1736572603499 + size: 130806 + timestamp: 1736659018397 - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda sha256: 78c1bbe1723449c52b7a9df1af2ee5f005209f67e40b6e1d3c7619127c43b1c7 md5: 592132998493b3ff25fd7479396e8351 @@ -6312,18 +6312,18 @@ packages: license_family: MIT size: 14465 timestamp: 1733255681319 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011105-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011205-release.conda noarch: python - sha256: 05af473b2b4983829660ba70eb0cb6607f019c4f4b8d107350ea491c6bd8d1cd - md5: 036f5ddfbcce66b3f9972cebf1cec107 + sha256: 42260d58dd242c60715f8fc8c826860087566cb3946a0bcb6a6ba38a6b213014 + md5: 437e3994be83b2370d71635c5c5b616a depends: - - max-core ==25.1.0.dev2025011105 release + - max-core ==25.1.0.dev2025011205 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22937 - timestamp: 1736572603499 + size: 22934 + timestamp: 1736659018398 - conda: https://conda.anaconda.org/conda-forge/linux-64/mpg123-1.32.9-hc50e24c_0.conda sha256: 39c4700fb3fbe403a77d8cc27352fa72ba744db487559d5d44bf8411bb4ea200 md5: c7f302fd11eeb0987a6a5e1f3aed6a21 @@ -8823,6 +8823,7 @@ packages: arch: x86_64 platform: linux license: MIT + license_family: MIT size: 410192 timestamp: 1736550568524 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/watchfiles-1.0.4-py312h8cbf658_0.conda @@ -8839,6 +8840,7 @@ packages: arch: aarch64 platform: linux license: MIT + license_family: MIT size: 403791 timestamp: 1736550743174 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/watchfiles-1.0.4-py312hcd83bfe_0.conda @@ -8855,6 +8857,7 @@ packages: arch: arm64 platform: osx license: MIT + license_family: MIT size: 363822 timestamp: 1736550859472 - conda: https://conda.anaconda.org/conda-forge/linux-64/websockets-14.1-py312h66e93f0_0.conda diff --git a/examples/magic.lock b/examples/magic.lock index 2efd6fcd75..6265c50ef4 100644 --- a/examples/magic.lock +++ b/examples/magic.lock @@ -14,7 +14,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.8.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.3.0-pyh71513ae_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-hb921021_15.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-h205f482_16.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.1-h1a47875_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.10.6-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.3.0-h4e1184b_5.conda @@ -23,10 +23,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-h831e299_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h11f4f37_12.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.7-hf454442_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.1-h4e1184b_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.2-h4e1184b_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-h4e1184b_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.7-hd92328a_7.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-hc430e4a_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.8-h8570fcd_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-h7001638_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.10.0-h113e628_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.13.0-h3cf044e_1.conda @@ -77,10 +77,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-hd595efa_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-hcb10f89_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-hcb10f89_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-h08228c5_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-h9d9f30d_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-hcb10f89_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-hcb10f89_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-h08228c5_8_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-26_linux64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hb9d3cd8_2.conda @@ -109,7 +109,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.28-pthreads_h94d23a6_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-h081d1f1_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-h081d1f1_8_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.45-h943b412_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_2.conda @@ -131,12 +131,12 @@ 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-25.1.0.dev2025011105-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025011105-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025011105-3.11release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011205-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025011205-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025011205-3.11release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011205-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-25.1.0.dev2025011105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011205-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 @@ -231,7 +231,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.8.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.3.0-pyh71513ae_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-h2cb9fb3_15.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-hb7ec8d5_16.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.1-h740c5af_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-common-0.10.6-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-compression-0.3.0-h0f0193d_5.conda @@ -240,10 +240,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-h1a307af_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h5f50e26_12.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.7-h2080895_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.1-h0f0193d_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.2-h0f0193d_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h0f0193d_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.7-h8a4e35f_7.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h849ce1a_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.8-h92ee776_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h90ecb4a_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-core-cpp-1.14.0-h1887c18_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-identity-cpp-1.10.0-h47b0b28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-blobs-cpp-12.13.0-h185ecfd_1.conda @@ -295,10 +295,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.0.0-h4de3ea5_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h18dbdb1_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-hb7781cd_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h3b568fd_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h3b568fd_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h1e9d426_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-h47f80e1_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h3b568fd_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h3b568fd_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h1e9d426_8_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-26_linuxaarch64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlicommon-1.1.0-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlidec-1.1.0-h86ecc28_2.conda @@ -327,7 +327,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnghttp2-1.64.0-hc8609a4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.28-pthreads_h9d3fd7e_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-hfc78867_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-hfc78867_8_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.45-hec79eb8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.3-h44a3b7b_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_2.conda @@ -349,12 +349,12 @@ 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-25.1.0.dev2025011105-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025011105-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025011105-3.11release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011205-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025011205-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025011205-3.11release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011205-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-25.1.0.dev2025011105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011205-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 @@ -448,7 +448,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.8.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.3.0-pyh71513ae_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-h8bc59a9_15.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-hfc2798a_16.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.1-hc8a0bd2_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.10.6-h5505292_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-compression-0.3.0-hc8a0bd2_5.conda @@ -457,10 +457,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-haba67d1_5.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h24f418c_12.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.7-h1be5864_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.1-hc8a0bd2_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.2-hc8a0bd2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-hc8a0bd2_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.7-h19a973c_7.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-he0ff2e4_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.8-h23176ea_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-h794939a_5.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.14.0-hd50102c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.10.0-hc602bab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-blobs-cpp-12.13.0-h7585a09_1.conda @@ -510,10 +510,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.16-ha0e7c42_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_h07bc746_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-h0ad35bc_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-hf07054f_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-hf07054f_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-h4239455_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-hf3eb8e5_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-hf07054f_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-hf07054f_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-h4239455_8_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-26_osxarm64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.1.0-hd74edd7_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.1.0-hd74edd7_2.conda @@ -539,7 +539,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.3-h39f12f2_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.64.0-h6d7220d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.28-openmp_hf332438_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-h636d7b7_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-h636d7b7_8_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.45-h3783ad8_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.3-h3bd63a1_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h07bc746_2.conda @@ -558,12 +558,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-25.1.0.dev2025011105-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025011105-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025011105-3.11release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011205-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025011205-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025011205-3.11release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011205-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-25.1.0.dev2025011105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011205-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 @@ -804,55 +804,55 @@ packages: license_family: MIT size: 56354 timestamp: 1734348889193 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-hb921021_15.conda - sha256: 537006ad6d5097c134494166a6a1dc1451d5d050878d7b82cef498bfda40ba8a - md5: c79d50f64cffa5ad51ecc1a81057962f +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-h205f482_16.conda + sha256: 0695c285b70385913dc7dce05888d3ad1378247b65273bdab509494a2f8f0eea + md5: b0815d37ab812ade9c07239da7c3c369 depends: - __glibc >=2.17,<3.0.a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 + - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 - libgcc >=13 arch: x86_64 platform: linux license: Apache-2.0 license_family: Apache - size: 107614 - timestamp: 1734021692519 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-h2cb9fb3_15.conda - sha256: 4ce859dc9ff128bf5515604c43f33fb511386022fc9765ca077990f2a3f23df5 - md5: e524686ace966acefb5b8cbc6e8b3daa + size: 107478 + timestamp: 1736592747413 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-hb7ec8d5_16.conda + sha256: 5a2a2691f2e0028e8549b97a340d7e6c502e0d54b7deba00fad505812663a98b + md5: 56f166780076db46c5e273988693d8a3 depends: - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 + - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 - libgcc >=13 arch: aarch64 platform: linux license: Apache-2.0 license_family: Apache - size: 111854 - timestamp: 1734021745104 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-h8bc59a9_15.conda - sha256: 0e41e56b662e76e024182adebcd91d09a4d38a83b35217c84e4967354dfff9a2 - md5: f688b8893c20ad9477a19e7ce614014a + size: 112264 + timestamp: 1736592695540 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-hfc2798a_16.conda + sha256: cdcd932332311db1b614289101b61e32cbae2478ba2bf85763aaf5a5cc7db6f6 + md5: 1e9a41d5296f50c08ae511d61fddef85 depends: - __osx >=11.0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 + - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 arch: arm64 platform: osx license: Apache-2.0 license_family: Apache - size: 92507 - timestamp: 1734021831330 + size: 92547 + timestamp: 1736592866387 - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.1-h1a47875_3.conda sha256: 095ac824ea9303eff67e04090ae531d9eb33d2bf8f82eaade39b839c421e16e8 md5: 55a8561fdbbbd34f50f57d9be12ed084 @@ -1195,9 +1195,9 @@ packages: license_family: Apache size: 97598 timestamp: 1734146239038 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.1-h4e1184b_4.conda - sha256: df586f42210af1134b1c88ff4c278c3cb6d6c807c84eac48860062464b28554d - md5: a5126a90e74ac739b00564a4c7ddcc36 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.2-h4e1184b_0.conda + sha256: 0424e380c435ba03b5948d02e8c958866c4eee50ed29e57f99473a5f795a4cfc + md5: dcd498d493818b776a77fbc242fbf8e4 depends: - __glibc >=2.17,<3.0.a0 - aws-c-common >=0.10.6,<0.10.7.0a0 @@ -1206,11 +1206,11 @@ packages: platform: linux license: Apache-2.0 license_family: Apache - size: 56094 - timestamp: 1733994449690 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.1-h0f0193d_4.conda - sha256: ede8e782467c87ac80ceb9c9af9e917d121b7d8b8c698186d18e3cecd36f2210 - md5: 53e798d720dd78b78847a7b2fdb05fc9 + size: 55911 + timestamp: 1736535960724 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.2-h0f0193d_0.conda + sha256: fba38e469457764afcb94aa84d4d7788e6b5fa1554d34b05c904d2245fdd3c81 + md5: a78928881c652facde2a13ec6e776f3c depends: - aws-c-common >=0.10.6,<0.10.7.0a0 - libgcc >=13 @@ -1218,11 +1218,11 @@ packages: platform: linux license: Apache-2.0 license_family: Apache - size: 58621 - timestamp: 1733994421495 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.1-hc8a0bd2_4.conda - sha256: de98343ce42d2e569b3380292d20f47bf39bda08aadabcbb8e650d3f38fd742f - md5: 22f72f8cd7ead211304ac17d337d96e0 + size: 58221 + timestamp: 1736536003041 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.2-hc8a0bd2_0.conda + sha256: ea4f0f1e99056293c69615f581a997d65ba7e229e296e402e0d8ef750648a5b5 + md5: e7b5498ac7b7ab921a907be38f3a8080 depends: - __osx >=11.0 - aws-c-common >=0.10.6,<0.10.7.0a0 @@ -1230,8 +1230,8 @@ packages: platform: osx license: Apache-2.0 license_family: Apache - size: 49664 - timestamp: 1733994553014 + size: 49872 + timestamp: 1736536152332 - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-h4e1184b_4.conda sha256: 1ed9a332d06ad595694907fad2d6d801082916c27cd5076096fda4061e6d24a8 md5: 74e8c3e4df4ceae34aa2959df4b28101 @@ -1269,9 +1269,9 @@ packages: license_family: Apache size: 70186 timestamp: 1733994496998 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.7-hd92328a_7.conda - sha256: 094cd81f1e5ba713e9e7a272ee52b5dde3ccc4842ea90f19c0354a00bbdac3d9 - md5: 02b95564257d5c3db9c06beccf711f95 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.8-h8570fcd_1.conda + sha256: ff8f08bc615d3ef6d970df80988200b3ecee76ecfa4885109cd82b30176cfda9 + md5: f21296b496cca1c1fa426b9a3b676e79 depends: - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 @@ -1282,18 +1282,18 @@ packages: - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - aws-c-s3 >=0.7.7,<0.7.8.0a0 - - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 + - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 - libgcc >=13 - libstdcxx >=13 arch: x86_64 platform: linux license: Apache-2.0 license_family: Apache - size: 354703 - timestamp: 1734177883319 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.7-h8a4e35f_7.conda - sha256: 5ba9188e0cb4e3faff9bc96774febb040aa3b802aedba29d847e00e7b5eab84e - md5: d77a9e3d7ce15399903e92825fd651b5 + size: 354328 + timestamp: 1736598991291 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.8-h92ee776_1.conda + sha256: 114ac89d3936bf801dcbd488ba0b468c7e113a407cb1ee5898259a5202b7e750 + md5: 63546051b5687f793ae977c7994e1339 depends: - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 @@ -1303,18 +1303,18 @@ packages: - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - aws-c-s3 >=0.7.7,<0.7.8.0a0 - - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 + - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 - libgcc >=13 - libstdcxx >=13 arch: aarch64 platform: linux license: Apache-2.0 license_family: Apache - size: 283154 - timestamp: 1734177845248 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.7-h19a973c_7.conda - sha256: 8269e6746eb3a5d15b732a3983888bf98dfc1f6594e95250fc8d16b43cfd5ff9 - md5: 95714136bef3e917bd5a2942d4682b20 + size: 284664 + timestamp: 1736598964131 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.8-h23176ea_1.conda + sha256: db6a31078bb82fb12044d7706239c003568273729f7ba4971c1479b7926ada82 + md5: 31fdd3ffb00f5472196fa95ef08087b7 depends: - __osx >=11.0 - aws-c-auth >=0.8.0,<0.8.1.0a0 @@ -1325,23 +1325,23 @@ packages: - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - aws-c-s3 >=0.7.7,<0.7.8.0a0 - - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 + - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 - libcxx >=18 arch: arm64 platform: osx license: Apache-2.0 license_family: Apache - size: 236249 - timestamp: 1734178020924 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-hc430e4a_4.conda - sha256: 2dc09f6f9c49127b5f96e7535b64a9c521b944d76d8b7d03d48ae80257ac1cea - md5: aeefac461bea1f126653c1285cf5af08 + size: 236269 + timestamp: 1736599024242 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-h7001638_5.conda + sha256: 849524b09865e84d6926aa814944cf71511aa4a00fffc5ad174c286d5dfac5f0 + md5: fc01d77a7f383b2915f276c73b7d0934 depends: - __glibc >=2.17,<3.0.a0 - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - - aws-crt-cpp >=0.29.7,<0.29.8.0a0 + - aws-crt-cpp >=0.29.8,<0.29.9.0a0 - libcurl >=8.11.1,<9.0a0 - libgcc >=13 - libstdcxx >=13 @@ -1351,16 +1351,16 @@ packages: platform: linux license: Apache-2.0 license_family: Apache - size: 3060561 - timestamp: 1734093737431 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h849ce1a_4.conda - sha256: 51b9e9df8cbab4a13a1b9d39d6ef5ed162aaa29c09a745810e00bbe92e1045c1 - md5: cda7747f4398be8d1fb37362815917a7 + size: 3088636 + timestamp: 1736598504343 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h90ecb4a_5.conda + sha256: 9467acd0f2df74ea7472aebdfb8b5656a8d403abad2edbce9743d6e88c94fd10 + md5: 33f86f8de1d8cd40f8fe628dc0784437 depends: - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - - aws-crt-cpp >=0.29.7,<0.29.8.0a0 + - aws-crt-cpp >=0.29.8,<0.29.9.0a0 - libcurl >=8.11.1,<9.0a0 - libgcc >=13 - libstdcxx >=13 @@ -1370,17 +1370,17 @@ packages: platform: linux license: Apache-2.0 license_family: Apache - size: 2920625 - timestamp: 1734093552712 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-he0ff2e4_4.conda - sha256: 535b970aaa13be45f8cab8205c59f044b17364111c41a227f061775a5c834e18 - md5: 0981ed87098b149bdb7d99a4a3fd0e58 + size: 2925443 + timestamp: 1736598526637 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-h794939a_5.conda + sha256: 2b1e7d5a45e82604bfdb6de63c53cf0e9495f596cfd90e644a1e67910de7f91c + md5: a2374b4182bf5b2d08b2903393d0c487 depends: - __osx >=11.0 - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - - aws-crt-cpp >=0.29.7,<0.29.8.0a0 + - aws-crt-cpp >=0.29.8,<0.29.9.0a0 - libcurl >=8.11.1,<9.0a0 - libcxx >=18 - libzlib >=1.3.1,<2.0a0 @@ -1389,8 +1389,8 @@ packages: platform: osx license: Apache-2.0 license_family: Apache - size: 2826534 - timestamp: 1734094018287 + size: 2824168 + timestamp: 1736598935034 - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda sha256: fe07debdb089a3db17f40a7f20d283d75284bb4fc269ef727b8ba6fc93f7cb5a md5: 0a8838771cc2e985cd295e01ae83baf1 @@ -2558,13 +2558,13 @@ packages: license_family: Apache size: 1178260 timestamp: 1736008642885 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-hd595efa_7_cpu.conda - build_number: 7 - sha256: 554ffa338264c1dc34d95adb7eb856d50a2f25e7fa303a1a51e4372301b7c96f - md5: 08d4aff5ee6dee9a1b9ab13fca927697 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-h9d9f30d_8_cpu.conda + build_number: 8 + sha256: f6c72ce82d145cb94a1131b68547b88056fb48158a382f9ce763286fce53ee65 + md5: 1c9caae53b14a385b59e87687adad2d6 depends: - __glibc >=2.17,<3.0.a0 - - aws-crt-cpp >=0.29.7,<0.29.8.0a0 + - aws-crt-cpp >=0.29.8,<0.29.9.0a0 - aws-sdk-cpp >=1.11.458,<1.11.459.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-identity-cpp >=1.10.0,<1.10.1.0a0 @@ -2597,14 +2597,14 @@ packages: platform: linux license: Apache-2.0 license_family: APACHE - size: 8770256 - timestamp: 1735684696564 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-hb7781cd_7_cpu.conda - build_number: 7 - sha256: f6107506bd16788560b47a4d18c1457b4df30a49334364d32613fe3f53ba6cbb - md5: 98cf7127ca7b3854c5d1c8bef1ed6e53 - depends: - - aws-crt-cpp >=0.29.7,<0.29.8.0a0 + size: 8801586 + timestamp: 1736610546493 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-h47f80e1_8_cpu.conda + build_number: 8 + sha256: bf381dfa84e94ffce715c46352dd99f6f6ace69859b0efb822500f8882be429a + md5: daceef1881b4ddc72bb5b225a122c633 + depends: + - aws-crt-cpp >=0.29.8,<0.29.9.0a0 - aws-sdk-cpp >=1.11.458,<1.11.459.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-identity-cpp >=1.10.0,<1.10.1.0a0 @@ -2631,21 +2631,21 @@ packages: - zstd >=1.5.6,<1.6.0a0 constrains: - arrow-cpp <0.0a0 - - parquet-cpp <0.0a0 - apache-arrow-proc =*=cpu + - parquet-cpp <0.0a0 arch: aarch64 platform: linux license: Apache-2.0 license_family: APACHE - size: 8026714 - timestamp: 1735685336542 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-h0ad35bc_7_cpu.conda - build_number: 7 - sha256: 4fbdd8bb89d912bf03f10f9373a8d96a1cdd7a7851e107393418a3d2715bc27e - md5: 4ba2173203f44bbf03d19aaba6ed07d3 + size: 8045923 + timestamp: 1736611764958 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-hf3eb8e5_8_cpu.conda + build_number: 8 + sha256: 766e46b45520773db93ee1a91951cc135a85544bba738e7b378d31f16097753f + md5: fdc79871e6c243b819497337215416d9 depends: - __osx >=11.0 - - aws-crt-cpp >=0.29.7,<0.29.8.0a0 + - aws-crt-cpp >=0.29.8,<0.29.9.0a0 - aws-sdk-cpp >=1.11.458,<1.11.459.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-identity-cpp >=1.10.0,<1.10.1.0a0 @@ -2676,111 +2676,111 @@ packages: platform: osx license: Apache-2.0 license_family: APACHE - size: 5506699 - timestamp: 1735682962976 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-hcb10f89_7_cpu.conda - build_number: 7 - sha256: 87ea5d6a84d922d73975dce8661fccf257e72e755175b12c30e1181a34e37987 - md5: 12d84228204c56fec6ed113288014d11 + size: 5497383 + timestamp: 1736608604724 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-hcb10f89_8_cpu.conda + build_number: 8 + sha256: 126a6e78199311d99e38b9d633ce3e0290795ac68ce3ee8a9b91436c85c4095d + md5: 544759904898499f634f8f88a9907f88 depends: - __glibc >=2.17,<3.0.a0 - - libarrow 18.1.0 hd595efa_7_cpu + - libarrow 18.1.0 h9d9f30d_8_cpu - libgcc >=13 - libstdcxx >=13 arch: x86_64 platform: linux license: Apache-2.0 license_family: APACHE - size: 612463 - timestamp: 1735684749868 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h3b568fd_7_cpu.conda - build_number: 7 - sha256: 42cbfc87096f745d565d814d65b7228c82d985f1898859d5e456016d73e81c82 - md5: 4c1d8c3feea249782148d3cd6a25392e + size: 611558 + timestamp: 1736610592458 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h3b568fd_8_cpu.conda + build_number: 8 + sha256: c94844ab1d8fafe17775161283bd1fe7ab1f93f660fc5ba0c01bd33fe3d21eaf + md5: 7a8e6a363d2f39a2f3df3f181d12692d depends: - - libarrow 18.1.0 hb7781cd_7_cpu + - libarrow 18.1.0 h47f80e1_8_cpu - libgcc >=13 - libstdcxx >=13 arch: aarch64 platform: linux license: Apache-2.0 license_family: APACHE - size: 578222 - timestamp: 1735685424850 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-hf07054f_7_cpu.conda - build_number: 7 - sha256: 86e20cebfdb4f335e98265c1b88f5053bf3e3648768a317856295846bfdbf2b4 - md5: 3eaf71fe987de13061db795e03bb1a1c + size: 579798 + timestamp: 1736611846905 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-hf07054f_8_cpu.conda + build_number: 8 + sha256: 29196dc6b2e4488f98bd8950de6333efe5d1a9d0cc62e186694946766185475e + md5: 8db96829f8e427167f450c7467a1ba44 depends: - __osx >=11.0 - - libarrow 18.1.0 h0ad35bc_7_cpu + - libarrow 18.1.0 hf3eb8e5_8_cpu - libcxx >=18 arch: arm64 platform: osx license: Apache-2.0 license_family: APACHE - size: 485185 - timestamp: 1735683071232 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-hcb10f89_7_cpu.conda - build_number: 7 - sha256: 99c12511fba79c7947f78d676eae5857659084f687f375f68bc20bd4cddb0a0e - md5: 0a81eb63d7cd150f598c752e86388d57 + size: 484442 + timestamp: 1736608695654 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-hcb10f89_8_cpu.conda + build_number: 8 + sha256: fe50edf030b5ccbadec2bf8f90d4cdf32d63ec52ba26233fc2c8bfbe43df3b15 + md5: 894a5ed78728b77c997fefeee222ac4d depends: - __glibc >=2.17,<3.0.a0 - - libarrow 18.1.0 hd595efa_7_cpu - - libarrow-acero 18.1.0 hcb10f89_7_cpu + - libarrow 18.1.0 h9d9f30d_8_cpu + - libarrow-acero 18.1.0 hcb10f89_8_cpu - libgcc >=13 - - libparquet 18.1.0 h081d1f1_7_cpu + - libparquet 18.1.0 h081d1f1_8_cpu - libstdcxx >=13 arch: x86_64 platform: linux license: Apache-2.0 license_family: APACHE - size: 587497 - timestamp: 1735684880531 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h3b568fd_7_cpu.conda - build_number: 7 - sha256: 13ba7d3d08015aa26569eca9e198e2f8b2a0cd2d9c420e41c78cc2e5d5170f26 - md5: f39f5d725c2ca94c2e7b19e2717fd4ab + size: 588032 + timestamp: 1736610711976 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h3b568fd_8_cpu.conda + build_number: 8 + sha256: bb87d8e633074c9759d93abb277d31314dc66fad741253b48e8265e186228c5b + md5: 11856da892b919cc27bd62638d701c65 depends: - - libarrow 18.1.0 hb7781cd_7_cpu - - libarrow-acero 18.1.0 h3b568fd_7_cpu + - libarrow 18.1.0 h47f80e1_8_cpu + - libarrow-acero 18.1.0 h3b568fd_8_cpu - libgcc >=13 - - libparquet 18.1.0 hfc78867_7_cpu + - libparquet 18.1.0 hfc78867_8_cpu - libstdcxx >=13 arch: aarch64 platform: linux license: Apache-2.0 license_family: APACHE - size: 560329 - timestamp: 1735685518922 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-hf07054f_7_cpu.conda - build_number: 7 - sha256: 52c5c4e9cd5f2ac91dcebb6a920ab2536febcea116ff8767e5439329d7da820b - md5: 97a2d3606682d94f7d73112e9ad684ae + size: 560571 + timestamp: 1736611941995 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-hf07054f_8_cpu.conda + build_number: 8 + sha256: bff2d39e418eadab8c522a536449ac90f070dd8e83e2bd5e67a9c3eb8ecf712f + md5: 7b3736f49b3ba299b7799aeb448cb830 depends: - __osx >=11.0 - - libarrow 18.1.0 h0ad35bc_7_cpu - - libarrow-acero 18.1.0 hf07054f_7_cpu + - libarrow 18.1.0 hf3eb8e5_8_cpu + - libarrow-acero 18.1.0 hf07054f_8_cpu - libcxx >=18 - - libparquet 18.1.0 h636d7b7_7_cpu + - libparquet 18.1.0 h636d7b7_8_cpu arch: arm64 platform: osx license: Apache-2.0 license_family: APACHE - size: 491237 - timestamp: 1735684688308 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-h08228c5_7_cpu.conda - build_number: 7 - sha256: 53ea53a06e137c2f81ebfdff3f978babb8b59e31f705a19b57056ec8754c1abf - md5: e128def53c133e8a23ac00cd4a479335 + size: 491001 + timestamp: 1736609758514 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-h08228c5_8_cpu.conda + build_number: 8 + sha256: dca372e27724904577315b8db3793e027a5c152a485e505e630a57b15634cd85 + md5: 46eaf81238da6f3ffab1f3ffdcee382e depends: - __glibc >=2.17,<3.0.a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.1.0 hd595efa_7_cpu - - libarrow-acero 18.1.0 hcb10f89_7_cpu - - libarrow-dataset 18.1.0 hcb10f89_7_cpu + - libarrow 18.1.0 h9d9f30d_8_cpu + - libarrow-acero 18.1.0 hcb10f89_8_cpu + - libarrow-dataset 18.1.0 hcb10f89_8_cpu - libgcc >=13 - libprotobuf >=5.28.3,<5.28.4.0a0 - libstdcxx >=13 @@ -2788,18 +2788,18 @@ packages: platform: linux license: Apache-2.0 license_family: APACHE - size: 521861 - timestamp: 1735684940668 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h1e9d426_7_cpu.conda - build_number: 7 - sha256: 252e2a0d8c733f36b50499786480a05a59577d617f291868149c80534c1e8ffc - md5: 6da921d9e1c4e2ab2679eeea7cbd4c82 + size: 521707 + timestamp: 1736610765240 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h1e9d426_8_cpu.conda + build_number: 8 + sha256: 1896ea00da28e10670f7ba51bb543e68a87f717e9f5692fee44268f1a13d9eee + md5: e7dc0209e065a2b51f19848cefa4b1ab depends: - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.1.0 hb7781cd_7_cpu - - libarrow-acero 18.1.0 h3b568fd_7_cpu - - libarrow-dataset 18.1.0 h3b568fd_7_cpu + - libarrow 18.1.0 h47f80e1_8_cpu + - libarrow-acero 18.1.0 h3b568fd_8_cpu + - libarrow-dataset 18.1.0 h3b568fd_8_cpu - libgcc >=13 - libprotobuf >=5.28.3,<5.28.4.0a0 - libstdcxx >=13 @@ -2807,27 +2807,27 @@ packages: platform: linux license: Apache-2.0 license_family: APACHE - size: 516014 - timestamp: 1735685565929 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-h4239455_7_cpu.conda - build_number: 7 - sha256: a45bbdd6932aed972d6c6ce30a7439aa8ec9d9b8ee5affb350d41e50abdc0127 - md5: 91927747173f65695e441346c7145e26 + size: 517189 + timestamp: 1736611989417 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-h4239455_8_cpu.conda + build_number: 8 + sha256: ae52d926ebfc8edb0728824f2918a825d39bd85a4ef27fe2b73656cfecdd7c69 + md5: f67eb19d22ba355cced8c86073ad49b1 depends: - __osx >=11.0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.1.0 h0ad35bc_7_cpu - - libarrow-acero 18.1.0 hf07054f_7_cpu - - libarrow-dataset 18.1.0 hf07054f_7_cpu + - libarrow 18.1.0 hf3eb8e5_8_cpu + - libarrow-acero 18.1.0 hf07054f_8_cpu + - libarrow-dataset 18.1.0 hf07054f_8_cpu - libcxx >=18 - libprotobuf >=5.28.3,<5.28.4.0a0 arch: arm64 platform: osx license: Apache-2.0 license_family: APACHE - size: 452385 - timestamp: 1735684993831 + size: 452161 + timestamp: 1736609917123 - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-26_linux64_openblas.conda build_number: 26 sha256: 30bd658682b124243f8e52d8edf8a19e7be1bc31e4fe4baec30a64002dc8cd0c @@ -3939,13 +3939,13 @@ packages: license_family: BSD size: 4165774 timestamp: 1730772154295 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-h081d1f1_7_cpu.conda - build_number: 7 - sha256: 55945b761130f60abdecf1551907ecfd05cb4a5958cf74d855b30c005ecb3592 - md5: b97013ef4e1dd2cf11594f06d5b5e83a +- conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-h081d1f1_8_cpu.conda + build_number: 8 + sha256: 2c6d900d4e9dd3c4000886d76d3f8a099e904667ebc6935b49428e6e9b766481 + md5: a9fa0ef309406c84b46db3a28efd761e depends: - __glibc >=2.17,<3.0.a0 - - libarrow 18.1.0 hd595efa_7_cpu + - libarrow 18.1.0 h9d9f30d_8_cpu - libgcc >=13 - libstdcxx >=13 - libthrift >=0.21.0,<0.21.1.0a0 @@ -3954,14 +3954,14 @@ packages: platform: linux license: Apache-2.0 license_family: APACHE - size: 1205598 - timestamp: 1735684849150 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-hfc78867_7_cpu.conda - build_number: 7 - sha256: 6dff9bbe731dc2cefe96bd9c7981d2cbef2b564a3152840a29c9b6a493ea50d9 - md5: 184bec7a9392ab6ba8134041e81971d6 + size: 1207011 + timestamp: 1736610684584 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-hfc78867_8_cpu.conda + build_number: 8 + sha256: 2ed6b9eac4504051ddc094ea3f3a2b3198d4d25a443a96fa2971d8075d790c31 + md5: 9a907190c9e2c6bf1a29569700218f0b depends: - - libarrow 18.1.0 hb7781cd_7_cpu + - libarrow 18.1.0 h47f80e1_8_cpu - libgcc >=13 - libstdcxx >=13 - libthrift >=0.21.0,<0.21.1.0a0 @@ -3970,15 +3970,15 @@ packages: platform: linux license: Apache-2.0 license_family: APACHE - size: 1117825 - timestamp: 1735685495511 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-h636d7b7_7_cpu.conda - build_number: 7 - sha256: bf42e43542a90edd86ba5aa5fd4543671625f1bc35f62be32688f00e18bae990 - md5: 93de9ba66a20db32a2646d313794b3a8 + size: 1117465 + timestamp: 1736611918180 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-h636d7b7_8_cpu.conda + build_number: 8 + sha256: 4991519ef4264abc7160e9faaf8ff01d4731bf1497076bef1895d6c366f796eb + md5: b8bd275a49877fdec62ff787818a869d depends: - __osx >=11.0 - - libarrow 18.1.0 h0ad35bc_7_cpu + - libarrow 18.1.0 hf3eb8e5_8_cpu - libcxx >=18 - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 @@ -3986,8 +3986,8 @@ packages: platform: osx license: Apache-2.0 license_family: APACHE - size: 873251 - timestamp: 1735684582558 + size: 873593 + timestamp: 1736609701839 - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.45-h943b412_0.conda sha256: b8f5b5ba9a14dedf7c97c01300de492b1b52b68eacbc3249a13fdbfa82349a2f md5: 85cbdaacad93808395ac295b5667d25b @@ -4752,47 +4752,47 @@ packages: license_family: BSD size: 24976 timestamp: 1733219849253 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011105-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011205-release.conda noarch: python - sha256: 4bd3331f281b0d42b57e7e5d28eee3650cb52ffb3f9c381f349255034ab4d011 - md5: 9a12141b0beb110b83d4ae256d8de1b0 + sha256: ce8b3d98a933cb0fdaa2e6e293fc940d51aaae273c2a6f14194ac45230ab701a + md5: d796fa41a5dd97e2bc1019b10497a31b depends: - - max-core ==25.1.0.dev2025011105 release - - max-python >=25.1.0.dev2025011105,<26.0a0 - - mojo-jupyter ==25.1.0.dev2025011105 release - - mblack ==25.1.0.dev2025011105 release + - max-core ==25.1.0.dev2025011205 release + - max-python >=25.1.0.dev2025011205,<26.0a0 + - mojo-jupyter ==25.1.0.dev2025011205 release + - mblack ==25.1.0.dev2025011205 release license: LicenseRef-Modular-Proprietary size: 9919 - timestamp: 1736572603494 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025011105-release.conda - sha256: 45fdbcfa2c105f01e3c06823e072f2b7b3ceeafe21188973a3f64a87c43c29e6 - md5: ba267ab335859f14f9c0d887d4a83f14 + timestamp: 1736659018393 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025011205-release.conda + sha256: 6bbe93bf6df795ec42e609b4a9e52d64bdaa948c5527c16408930b7d699244d0 + md5: 8dedeccd5df7d21651ce7ba876ad3db9 depends: - - mblack ==25.1.0.dev2025011105 release + - mblack ==25.1.0.dev2025011205 release license: LicenseRef-Modular-Proprietary - size: 244035937 - timestamp: 1736572608009 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025011105-release.conda - sha256: 23794990d901f563fd2492483d4f5e0b1b91ed616028bf70bd9e2eaace6bd56b - md5: e8f626acac2d17a591ac8353ba41f5d0 + size: 244387099 + timestamp: 1736659018391 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025011205-release.conda + sha256: 97f364dc4051c44d2fdd77a2a5d314b6b460fef5e1ae77ba5e88d7c7024d8a15 + md5: acd35656dff9277c8401424aeb44ed58 depends: - - mblack ==25.1.0.dev2025011105 release + - mblack ==25.1.0.dev2025011205 release license: LicenseRef-Modular-Proprietary - size: 247708765 - timestamp: 1736572603492 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025011105-release.conda - sha256: 8cc71a4a35f96867f4131ddca60d084a8df937ec0f551b62601adc9202788a82 - md5: 4b8d6a0afbcebe7c2e5dc2ccd30c55a8 + size: 248031826 + timestamp: 1736659028471 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025011205-release.conda + sha256: ba42127f64b3fad135aad191f14b68a87a5820d78355b4ab9a95aabb40e183c4 + md5: 2078ddc332986f28c8b67c413aa0c6e9 depends: - - mblack ==25.1.0.dev2025011105 release + - mblack ==25.1.0.dev2025011205 release license: LicenseRef-Modular-Proprietary - size: 206225127 - timestamp: 1736572820782 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025011105-3.11release.conda - sha256: 8c780d1899cfde5a5117b74ff7a6bfcda2a70af331ba1f7b9e35b622449f2c1f - md5: 2c0c563904edb00f30e2de039ded9689 + size: 206561289 + timestamp: 1736660251821 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025011205-3.11release.conda + sha256: c78b3373fa70549f1b7bcdb1043724003c68dd6bfd02dc050247b3f3cf293bf2 + md5: 719d17bbce429deb392a2693eeb4b861 depends: - - max-core ==25.1.0.dev2025011105 release + - max-core ==25.1.0.dev2025011205 release - python 3.11.* - fastapi - httpx @@ -4813,13 +4813,13 @@ packages: - uvicorn - python_abi 3.11.* *_cp311 license: LicenseRef-Modular-Proprietary - size: 124236987 - timestamp: 1736572608015 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025011105-3.11release.conda - sha256: c880a5a6c057ad5192f4244fa71cc4959620b84dcd6f39f0570a7864df767081 - md5: 6b92478afed28e8c0157796d56ff40b9 + size: 124343163 + timestamp: 1736659018398 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025011205-3.11release.conda + sha256: caefa07ee17445525c740d489419d3e62f5ade059cc7677daa55d59fa176397e + md5: ba2b15f1413ed7e2e11714827954195f depends: - - max-core ==25.1.0.dev2025011105 release + - max-core ==25.1.0.dev2025011205 release - python 3.11.* - fastapi - httpx @@ -4840,13 +4840,13 @@ packages: - uvicorn - python_abi 3.11.* *_cp311 license: LicenseRef-Modular-Proprietary - size: 127989188 - timestamp: 1736572603500 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025011105-3.11release.conda - sha256: e20c9b53956e448509ead0b493f56b8fcef26415e0e98db68d4b288fa815a227 - md5: f945c8dcba7cc2b1060cd445a607a689 + size: 128101283 + timestamp: 1736659028478 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025011205-3.11release.conda + sha256: 47e0393cc3740e17dabe6f01b4210ca73187b5d8d70cad881223a7884115fd40 + md5: 741746b6e359514486ced4585ed26567 depends: - - max-core ==25.1.0.dev2025011105 release + - max-core ==25.1.0.dev2025011205 release - python 3.11.* - fastapi - httpx @@ -4867,12 +4867,12 @@ packages: - uvicorn - python_abi 3.11.* *_cp311 license: LicenseRef-Modular-Proprietary - size: 110623035 - timestamp: 1736572820784 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011105-release.conda + size: 110721655 + timestamp: 1736660251823 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011205-release.conda noarch: python - sha256: f447d269d29bb49fd97275f623632a569638c31b40e88489367df3d7d4ce90e2 - md5: 32c691c7fc2c6a218e1ce2272965a101 + sha256: a31c5c6330eb6638ee1698cea23e0bdd9c1acc1560c37437cda156a4913ee27f + md5: aea163e4e020e7ab6c44476abb1e5c2b depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -4882,8 +4882,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130815 - timestamp: 1736572603499 + size: 130806 + timestamp: 1736659018397 - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda sha256: 78c1bbe1723449c52b7a9df1af2ee5f005209f67e40b6e1d3c7619127c43b1c7 md5: 592132998493b3ff25fd7479396e8351 @@ -4893,18 +4893,18 @@ packages: license_family: MIT size: 14465 timestamp: 1733255681319 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011105-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011205-release.conda noarch: python - sha256: 05af473b2b4983829660ba70eb0cb6607f019c4f4b8d107350ea491c6bd8d1cd - md5: 036f5ddfbcce66b3f9972cebf1cec107 + sha256: 42260d58dd242c60715f8fc8c826860087566cb3946a0bcb6a6ba38a6b213014 + md5: 437e3994be83b2370d71635c5c5b616a depends: - - max-core ==25.1.0.dev2025011105 release + - max-core ==25.1.0.dev2025011205 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22937 - timestamp: 1736572603499 + size: 22934 + timestamp: 1736659018398 - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py311h2dc5d0c_2.conda sha256: afaab7a028281d8b5336db2b994fd3f9694862b6ca372c079dc4e84ad768c20a md5: bb8ca118919836624d920b4c44383a15 @@ -6804,6 +6804,7 @@ packages: arch: x86_64 platform: linux license: MIT + license_family: MIT size: 409870 timestamp: 1736550564534 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/watchfiles-1.0.4-py311h0ca61a2_0.conda @@ -6820,6 +6821,7 @@ packages: arch: aarch64 platform: linux license: MIT + license_family: MIT size: 404840 timestamp: 1736550636184 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/watchfiles-1.0.4-py311h3ff9189_0.conda @@ -6836,6 +6838,7 @@ packages: arch: arm64 platform: osx license: MIT + license_family: MIT size: 365948 timestamp: 1736550860802 - conda: https://conda.anaconda.org/conda-forge/linux-64/websockets-14.1-py311h9ecbd09_0.conda diff --git a/examples/notebooks/magic.lock b/examples/notebooks/magic.lock index 36260f53ac..7df2b950e4 100644 --- a/examples/notebooks/magic.lock +++ b/examples/notebooks/magic.lock @@ -19,7 +19,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.3.0-pyh71513ae_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-hb921021_15.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-h205f482_16.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.1-h1a47875_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.10.6-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.3.0-h4e1184b_5.conda @@ -28,10 +28,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-h831e299_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h11f4f37_12.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.7-hf454442_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.1-h4e1184b_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.2-h4e1184b_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-h4e1184b_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.7-hd92328a_7.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-hc430e4a_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.8-h8570fcd_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-h7001638_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.10.0-h113e628_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.13.0-h3cf044e_1.conda @@ -112,10 +112,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-hd595efa_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-hcb10f89_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-hcb10f89_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-h08228c5_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-h9d9f30d_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-hcb10f89_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-hcb10f89_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-h08228c5_8_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-26_linux64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hb9d3cd8_2.conda @@ -144,7 +144,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.28-pthreads_h94d23a6_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-h081d1f1_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-h081d1f1_8_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.45-h943b412_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_2.conda @@ -167,13 +167,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/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-25.1.0.dev2025011105-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025011105-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025011105-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011205-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025011205-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025011205-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011205-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.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011205-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 @@ -309,7 +309,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.3.0-pyh71513ae_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-h2cb9fb3_15.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-hb7ec8d5_16.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.1-h740c5af_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-common-0.10.6-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-compression-0.3.0-h0f0193d_5.conda @@ -318,10 +318,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-h1a307af_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h5f50e26_12.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.7-h2080895_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.1-h0f0193d_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.2-h0f0193d_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h0f0193d_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.7-h8a4e35f_7.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h849ce1a_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.8-h92ee776_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h90ecb4a_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-core-cpp-1.14.0-h1887c18_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-identity-cpp-1.10.0-h47b0b28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-blobs-cpp-12.13.0-h185ecfd_1.conda @@ -403,10 +403,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.0.0-h4de3ea5_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h18dbdb1_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-hb7781cd_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h3b568fd_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h3b568fd_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h1e9d426_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-h47f80e1_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h3b568fd_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h3b568fd_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h1e9d426_8_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-26_linuxaarch64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlicommon-1.1.0-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlidec-1.1.0-h86ecc28_2.conda @@ -435,7 +435,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnghttp2-1.64.0-hc8609a4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.28-pthreads_h9d3fd7e_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-hfc78867_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-hfc78867_8_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.45-hec79eb8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.3-h44a3b7b_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_2.conda @@ -458,13 +458,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/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-25.1.0.dev2025011105-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025011105-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025011105-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011205-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025011205-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025011205-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011205-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.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011205-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 @@ -600,7 +600,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.3.0-pyh71513ae_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-h8bc59a9_15.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-hfc2798a_16.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.1-hc8a0bd2_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.10.6-h5505292_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-compression-0.3.0-hc8a0bd2_5.conda @@ -609,10 +609,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-haba67d1_5.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h24f418c_12.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.7-h1be5864_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.1-hc8a0bd2_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.2-hc8a0bd2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-hc8a0bd2_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.7-h19a973c_7.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-he0ff2e4_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.8-h23176ea_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-h794939a_5.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.14.0-hd50102c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.10.0-hc602bab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-blobs-cpp-12.13.0-h7585a09_1.conda @@ -692,10 +692,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.16-ha0e7c42_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_h07bc746_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-h0ad35bc_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-hf07054f_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-hf07054f_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-h4239455_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-hf3eb8e5_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-hf07054f_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-hf07054f_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-h4239455_8_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-26_osxarm64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.1.0-hd74edd7_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.1.0-hd74edd7_2.conda @@ -721,7 +721,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.3-h39f12f2_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.64.0-h6d7220d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.28-openmp_hf332438_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-h636d7b7_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-h636d7b7_8_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.45-h3783ad8_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.3-h3bd63a1_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h07bc746_2.conda @@ -741,13 +741,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-25.1.0.dev2025011105-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025011105-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025011105-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011205-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025011205-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025011205-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011205-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.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011205-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 @@ -1125,55 +1125,55 @@ packages: license_family: MIT size: 56354 timestamp: 1734348889193 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-hb921021_15.conda - sha256: 537006ad6d5097c134494166a6a1dc1451d5d050878d7b82cef498bfda40ba8a - md5: c79d50f64cffa5ad51ecc1a81057962f +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-h205f482_16.conda + sha256: 0695c285b70385913dc7dce05888d3ad1378247b65273bdab509494a2f8f0eea + md5: b0815d37ab812ade9c07239da7c3c369 depends: - __glibc >=2.17,<3.0.a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 + - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 - libgcc >=13 arch: x86_64 platform: linux license: Apache-2.0 license_family: Apache - size: 107614 - timestamp: 1734021692519 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-h2cb9fb3_15.conda - sha256: 4ce859dc9ff128bf5515604c43f33fb511386022fc9765ca077990f2a3f23df5 - md5: e524686ace966acefb5b8cbc6e8b3daa + size: 107478 + timestamp: 1736592747413 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-hb7ec8d5_16.conda + sha256: 5a2a2691f2e0028e8549b97a340d7e6c502e0d54b7deba00fad505812663a98b + md5: 56f166780076db46c5e273988693d8a3 depends: - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 + - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 - libgcc >=13 arch: aarch64 platform: linux license: Apache-2.0 license_family: Apache - size: 111854 - timestamp: 1734021745104 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-h8bc59a9_15.conda - sha256: 0e41e56b662e76e024182adebcd91d09a4d38a83b35217c84e4967354dfff9a2 - md5: f688b8893c20ad9477a19e7ce614014a + size: 112264 + timestamp: 1736592695540 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-hfc2798a_16.conda + sha256: cdcd932332311db1b614289101b61e32cbae2478ba2bf85763aaf5a5cc7db6f6 + md5: 1e9a41d5296f50c08ae511d61fddef85 depends: - __osx >=11.0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 + - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 arch: arm64 platform: osx license: Apache-2.0 license_family: Apache - size: 92507 - timestamp: 1734021831330 + size: 92547 + timestamp: 1736592866387 - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.1-h1a47875_3.conda sha256: 095ac824ea9303eff67e04090ae531d9eb33d2bf8f82eaade39b839c421e16e8 md5: 55a8561fdbbbd34f50f57d9be12ed084 @@ -1516,9 +1516,9 @@ packages: license_family: Apache size: 97598 timestamp: 1734146239038 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.1-h4e1184b_4.conda - sha256: df586f42210af1134b1c88ff4c278c3cb6d6c807c84eac48860062464b28554d - md5: a5126a90e74ac739b00564a4c7ddcc36 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.2-h4e1184b_0.conda + sha256: 0424e380c435ba03b5948d02e8c958866c4eee50ed29e57f99473a5f795a4cfc + md5: dcd498d493818b776a77fbc242fbf8e4 depends: - __glibc >=2.17,<3.0.a0 - aws-c-common >=0.10.6,<0.10.7.0a0 @@ -1527,11 +1527,11 @@ packages: platform: linux license: Apache-2.0 license_family: Apache - size: 56094 - timestamp: 1733994449690 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.1-h0f0193d_4.conda - sha256: ede8e782467c87ac80ceb9c9af9e917d121b7d8b8c698186d18e3cecd36f2210 - md5: 53e798d720dd78b78847a7b2fdb05fc9 + size: 55911 + timestamp: 1736535960724 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.2-h0f0193d_0.conda + sha256: fba38e469457764afcb94aa84d4d7788e6b5fa1554d34b05c904d2245fdd3c81 + md5: a78928881c652facde2a13ec6e776f3c depends: - aws-c-common >=0.10.6,<0.10.7.0a0 - libgcc >=13 @@ -1539,11 +1539,11 @@ packages: platform: linux license: Apache-2.0 license_family: Apache - size: 58621 - timestamp: 1733994421495 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.1-hc8a0bd2_4.conda - sha256: de98343ce42d2e569b3380292d20f47bf39bda08aadabcbb8e650d3f38fd742f - md5: 22f72f8cd7ead211304ac17d337d96e0 + size: 58221 + timestamp: 1736536003041 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.2-hc8a0bd2_0.conda + sha256: ea4f0f1e99056293c69615f581a997d65ba7e229e296e402e0d8ef750648a5b5 + md5: e7b5498ac7b7ab921a907be38f3a8080 depends: - __osx >=11.0 - aws-c-common >=0.10.6,<0.10.7.0a0 @@ -1551,8 +1551,8 @@ packages: platform: osx license: Apache-2.0 license_family: Apache - size: 49664 - timestamp: 1733994553014 + size: 49872 + timestamp: 1736536152332 - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-h4e1184b_4.conda sha256: 1ed9a332d06ad595694907fad2d6d801082916c27cd5076096fda4061e6d24a8 md5: 74e8c3e4df4ceae34aa2959df4b28101 @@ -1590,9 +1590,9 @@ packages: license_family: Apache size: 70186 timestamp: 1733994496998 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.7-hd92328a_7.conda - sha256: 094cd81f1e5ba713e9e7a272ee52b5dde3ccc4842ea90f19c0354a00bbdac3d9 - md5: 02b95564257d5c3db9c06beccf711f95 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.8-h8570fcd_1.conda + sha256: ff8f08bc615d3ef6d970df80988200b3ecee76ecfa4885109cd82b30176cfda9 + md5: f21296b496cca1c1fa426b9a3b676e79 depends: - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 @@ -1603,18 +1603,18 @@ packages: - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - aws-c-s3 >=0.7.7,<0.7.8.0a0 - - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 + - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 - libgcc >=13 - libstdcxx >=13 arch: x86_64 platform: linux license: Apache-2.0 license_family: Apache - size: 354703 - timestamp: 1734177883319 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.7-h8a4e35f_7.conda - sha256: 5ba9188e0cb4e3faff9bc96774febb040aa3b802aedba29d847e00e7b5eab84e - md5: d77a9e3d7ce15399903e92825fd651b5 + size: 354328 + timestamp: 1736598991291 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.8-h92ee776_1.conda + sha256: 114ac89d3936bf801dcbd488ba0b468c7e113a407cb1ee5898259a5202b7e750 + md5: 63546051b5687f793ae977c7994e1339 depends: - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 @@ -1624,18 +1624,18 @@ packages: - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - aws-c-s3 >=0.7.7,<0.7.8.0a0 - - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 + - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 - libgcc >=13 - libstdcxx >=13 arch: aarch64 platform: linux license: Apache-2.0 license_family: Apache - size: 283154 - timestamp: 1734177845248 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.7-h19a973c_7.conda - sha256: 8269e6746eb3a5d15b732a3983888bf98dfc1f6594e95250fc8d16b43cfd5ff9 - md5: 95714136bef3e917bd5a2942d4682b20 + size: 284664 + timestamp: 1736598964131 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.8-h23176ea_1.conda + sha256: db6a31078bb82fb12044d7706239c003568273729f7ba4971c1479b7926ada82 + md5: 31fdd3ffb00f5472196fa95ef08087b7 depends: - __osx >=11.0 - aws-c-auth >=0.8.0,<0.8.1.0a0 @@ -1646,23 +1646,23 @@ packages: - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - aws-c-s3 >=0.7.7,<0.7.8.0a0 - - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 + - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 - libcxx >=18 arch: arm64 platform: osx license: Apache-2.0 license_family: Apache - size: 236249 - timestamp: 1734178020924 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-hc430e4a_4.conda - sha256: 2dc09f6f9c49127b5f96e7535b64a9c521b944d76d8b7d03d48ae80257ac1cea - md5: aeefac461bea1f126653c1285cf5af08 + size: 236269 + timestamp: 1736599024242 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-h7001638_5.conda + sha256: 849524b09865e84d6926aa814944cf71511aa4a00fffc5ad174c286d5dfac5f0 + md5: fc01d77a7f383b2915f276c73b7d0934 depends: - __glibc >=2.17,<3.0.a0 - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - - aws-crt-cpp >=0.29.7,<0.29.8.0a0 + - aws-crt-cpp >=0.29.8,<0.29.9.0a0 - libcurl >=8.11.1,<9.0a0 - libgcc >=13 - libstdcxx >=13 @@ -1672,16 +1672,16 @@ packages: platform: linux license: Apache-2.0 license_family: Apache - size: 3060561 - timestamp: 1734093737431 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h849ce1a_4.conda - sha256: 51b9e9df8cbab4a13a1b9d39d6ef5ed162aaa29c09a745810e00bbe92e1045c1 - md5: cda7747f4398be8d1fb37362815917a7 + size: 3088636 + timestamp: 1736598504343 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h90ecb4a_5.conda + sha256: 9467acd0f2df74ea7472aebdfb8b5656a8d403abad2edbce9743d6e88c94fd10 + md5: 33f86f8de1d8cd40f8fe628dc0784437 depends: - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - - aws-crt-cpp >=0.29.7,<0.29.8.0a0 + - aws-crt-cpp >=0.29.8,<0.29.9.0a0 - libcurl >=8.11.1,<9.0a0 - libgcc >=13 - libstdcxx >=13 @@ -1691,17 +1691,17 @@ packages: platform: linux license: Apache-2.0 license_family: Apache - size: 2920625 - timestamp: 1734093552712 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-he0ff2e4_4.conda - sha256: 535b970aaa13be45f8cab8205c59f044b17364111c41a227f061775a5c834e18 - md5: 0981ed87098b149bdb7d99a4a3fd0e58 + size: 2925443 + timestamp: 1736598526637 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-h794939a_5.conda + sha256: 2b1e7d5a45e82604bfdb6de63c53cf0e9495f596cfd90e644a1e67910de7f91c + md5: a2374b4182bf5b2d08b2903393d0c487 depends: - __osx >=11.0 - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - - aws-crt-cpp >=0.29.7,<0.29.8.0a0 + - aws-crt-cpp >=0.29.8,<0.29.9.0a0 - libcurl >=8.11.1,<9.0a0 - libcxx >=18 - libzlib >=1.3.1,<2.0a0 @@ -1710,8 +1710,8 @@ packages: platform: osx license: Apache-2.0 license_family: Apache - size: 2826534 - timestamp: 1734094018287 + size: 2824168 + timestamp: 1736598935034 - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda sha256: fe07debdb089a3db17f40a7f20d283d75284bb4fc269ef727b8ba6fc93f7cb5a md5: 0a8838771cc2e985cd295e01ae83baf1 @@ -3345,13 +3345,13 @@ packages: license_family: Apache size: 1178260 timestamp: 1736008642885 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-hd595efa_7_cpu.conda - build_number: 7 - sha256: 554ffa338264c1dc34d95adb7eb856d50a2f25e7fa303a1a51e4372301b7c96f - md5: 08d4aff5ee6dee9a1b9ab13fca927697 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-h9d9f30d_8_cpu.conda + build_number: 8 + sha256: f6c72ce82d145cb94a1131b68547b88056fb48158a382f9ce763286fce53ee65 + md5: 1c9caae53b14a385b59e87687adad2d6 depends: - __glibc >=2.17,<3.0.a0 - - aws-crt-cpp >=0.29.7,<0.29.8.0a0 + - aws-crt-cpp >=0.29.8,<0.29.9.0a0 - aws-sdk-cpp >=1.11.458,<1.11.459.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-identity-cpp >=1.10.0,<1.10.1.0a0 @@ -3384,14 +3384,14 @@ packages: platform: linux license: Apache-2.0 license_family: APACHE - size: 8770256 - timestamp: 1735684696564 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-hb7781cd_7_cpu.conda - build_number: 7 - sha256: f6107506bd16788560b47a4d18c1457b4df30a49334364d32613fe3f53ba6cbb - md5: 98cf7127ca7b3854c5d1c8bef1ed6e53 - depends: - - aws-crt-cpp >=0.29.7,<0.29.8.0a0 + size: 8801586 + timestamp: 1736610546493 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-h47f80e1_8_cpu.conda + build_number: 8 + sha256: bf381dfa84e94ffce715c46352dd99f6f6ace69859b0efb822500f8882be429a + md5: daceef1881b4ddc72bb5b225a122c633 + depends: + - aws-crt-cpp >=0.29.8,<0.29.9.0a0 - aws-sdk-cpp >=1.11.458,<1.11.459.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-identity-cpp >=1.10.0,<1.10.1.0a0 @@ -3418,21 +3418,21 @@ packages: - zstd >=1.5.6,<1.6.0a0 constrains: - arrow-cpp <0.0a0 - - parquet-cpp <0.0a0 - apache-arrow-proc =*=cpu + - parquet-cpp <0.0a0 arch: aarch64 platform: linux license: Apache-2.0 license_family: APACHE - size: 8026714 - timestamp: 1735685336542 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-h0ad35bc_7_cpu.conda - build_number: 7 - sha256: 4fbdd8bb89d912bf03f10f9373a8d96a1cdd7a7851e107393418a3d2715bc27e - md5: 4ba2173203f44bbf03d19aaba6ed07d3 + size: 8045923 + timestamp: 1736611764958 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-hf3eb8e5_8_cpu.conda + build_number: 8 + sha256: 766e46b45520773db93ee1a91951cc135a85544bba738e7b378d31f16097753f + md5: fdc79871e6c243b819497337215416d9 depends: - __osx >=11.0 - - aws-crt-cpp >=0.29.7,<0.29.8.0a0 + - aws-crt-cpp >=0.29.8,<0.29.9.0a0 - aws-sdk-cpp >=1.11.458,<1.11.459.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-identity-cpp >=1.10.0,<1.10.1.0a0 @@ -3463,111 +3463,111 @@ packages: platform: osx license: Apache-2.0 license_family: APACHE - size: 5506699 - timestamp: 1735682962976 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-hcb10f89_7_cpu.conda - build_number: 7 - sha256: 87ea5d6a84d922d73975dce8661fccf257e72e755175b12c30e1181a34e37987 - md5: 12d84228204c56fec6ed113288014d11 + size: 5497383 + timestamp: 1736608604724 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-hcb10f89_8_cpu.conda + build_number: 8 + sha256: 126a6e78199311d99e38b9d633ce3e0290795ac68ce3ee8a9b91436c85c4095d + md5: 544759904898499f634f8f88a9907f88 depends: - __glibc >=2.17,<3.0.a0 - - libarrow 18.1.0 hd595efa_7_cpu + - libarrow 18.1.0 h9d9f30d_8_cpu - libgcc >=13 - libstdcxx >=13 arch: x86_64 platform: linux license: Apache-2.0 license_family: APACHE - size: 612463 - timestamp: 1735684749868 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h3b568fd_7_cpu.conda - build_number: 7 - sha256: 42cbfc87096f745d565d814d65b7228c82d985f1898859d5e456016d73e81c82 - md5: 4c1d8c3feea249782148d3cd6a25392e + size: 611558 + timestamp: 1736610592458 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h3b568fd_8_cpu.conda + build_number: 8 + sha256: c94844ab1d8fafe17775161283bd1fe7ab1f93f660fc5ba0c01bd33fe3d21eaf + md5: 7a8e6a363d2f39a2f3df3f181d12692d depends: - - libarrow 18.1.0 hb7781cd_7_cpu + - libarrow 18.1.0 h47f80e1_8_cpu - libgcc >=13 - libstdcxx >=13 arch: aarch64 platform: linux license: Apache-2.0 license_family: APACHE - size: 578222 - timestamp: 1735685424850 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-hf07054f_7_cpu.conda - build_number: 7 - sha256: 86e20cebfdb4f335e98265c1b88f5053bf3e3648768a317856295846bfdbf2b4 - md5: 3eaf71fe987de13061db795e03bb1a1c + size: 579798 + timestamp: 1736611846905 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-hf07054f_8_cpu.conda + build_number: 8 + sha256: 29196dc6b2e4488f98bd8950de6333efe5d1a9d0cc62e186694946766185475e + md5: 8db96829f8e427167f450c7467a1ba44 depends: - __osx >=11.0 - - libarrow 18.1.0 h0ad35bc_7_cpu + - libarrow 18.1.0 hf3eb8e5_8_cpu - libcxx >=18 arch: arm64 platform: osx license: Apache-2.0 license_family: APACHE - size: 485185 - timestamp: 1735683071232 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-hcb10f89_7_cpu.conda - build_number: 7 - sha256: 99c12511fba79c7947f78d676eae5857659084f687f375f68bc20bd4cddb0a0e - md5: 0a81eb63d7cd150f598c752e86388d57 + size: 484442 + timestamp: 1736608695654 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-hcb10f89_8_cpu.conda + build_number: 8 + sha256: fe50edf030b5ccbadec2bf8f90d4cdf32d63ec52ba26233fc2c8bfbe43df3b15 + md5: 894a5ed78728b77c997fefeee222ac4d depends: - __glibc >=2.17,<3.0.a0 - - libarrow 18.1.0 hd595efa_7_cpu - - libarrow-acero 18.1.0 hcb10f89_7_cpu + - libarrow 18.1.0 h9d9f30d_8_cpu + - libarrow-acero 18.1.0 hcb10f89_8_cpu - libgcc >=13 - - libparquet 18.1.0 h081d1f1_7_cpu + - libparquet 18.1.0 h081d1f1_8_cpu - libstdcxx >=13 arch: x86_64 platform: linux license: Apache-2.0 license_family: APACHE - size: 587497 - timestamp: 1735684880531 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h3b568fd_7_cpu.conda - build_number: 7 - sha256: 13ba7d3d08015aa26569eca9e198e2f8b2a0cd2d9c420e41c78cc2e5d5170f26 - md5: f39f5d725c2ca94c2e7b19e2717fd4ab + size: 588032 + timestamp: 1736610711976 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h3b568fd_8_cpu.conda + build_number: 8 + sha256: bb87d8e633074c9759d93abb277d31314dc66fad741253b48e8265e186228c5b + md5: 11856da892b919cc27bd62638d701c65 depends: - - libarrow 18.1.0 hb7781cd_7_cpu - - libarrow-acero 18.1.0 h3b568fd_7_cpu + - libarrow 18.1.0 h47f80e1_8_cpu + - libarrow-acero 18.1.0 h3b568fd_8_cpu - libgcc >=13 - - libparquet 18.1.0 hfc78867_7_cpu + - libparquet 18.1.0 hfc78867_8_cpu - libstdcxx >=13 arch: aarch64 platform: linux license: Apache-2.0 license_family: APACHE - size: 560329 - timestamp: 1735685518922 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-hf07054f_7_cpu.conda - build_number: 7 - sha256: 52c5c4e9cd5f2ac91dcebb6a920ab2536febcea116ff8767e5439329d7da820b - md5: 97a2d3606682d94f7d73112e9ad684ae + size: 560571 + timestamp: 1736611941995 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-hf07054f_8_cpu.conda + build_number: 8 + sha256: bff2d39e418eadab8c522a536449ac90f070dd8e83e2bd5e67a9c3eb8ecf712f + md5: 7b3736f49b3ba299b7799aeb448cb830 depends: - __osx >=11.0 - - libarrow 18.1.0 h0ad35bc_7_cpu - - libarrow-acero 18.1.0 hf07054f_7_cpu + - libarrow 18.1.0 hf3eb8e5_8_cpu + - libarrow-acero 18.1.0 hf07054f_8_cpu - libcxx >=18 - - libparquet 18.1.0 h636d7b7_7_cpu + - libparquet 18.1.0 h636d7b7_8_cpu arch: arm64 platform: osx license: Apache-2.0 license_family: APACHE - size: 491237 - timestamp: 1735684688308 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-h08228c5_7_cpu.conda - build_number: 7 - sha256: 53ea53a06e137c2f81ebfdff3f978babb8b59e31f705a19b57056ec8754c1abf - md5: e128def53c133e8a23ac00cd4a479335 + size: 491001 + timestamp: 1736609758514 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-h08228c5_8_cpu.conda + build_number: 8 + sha256: dca372e27724904577315b8db3793e027a5c152a485e505e630a57b15634cd85 + md5: 46eaf81238da6f3ffab1f3ffdcee382e depends: - __glibc >=2.17,<3.0.a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.1.0 hd595efa_7_cpu - - libarrow-acero 18.1.0 hcb10f89_7_cpu - - libarrow-dataset 18.1.0 hcb10f89_7_cpu + - libarrow 18.1.0 h9d9f30d_8_cpu + - libarrow-acero 18.1.0 hcb10f89_8_cpu + - libarrow-dataset 18.1.0 hcb10f89_8_cpu - libgcc >=13 - libprotobuf >=5.28.3,<5.28.4.0a0 - libstdcxx >=13 @@ -3575,18 +3575,18 @@ packages: platform: linux license: Apache-2.0 license_family: APACHE - size: 521861 - timestamp: 1735684940668 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h1e9d426_7_cpu.conda - build_number: 7 - sha256: 252e2a0d8c733f36b50499786480a05a59577d617f291868149c80534c1e8ffc - md5: 6da921d9e1c4e2ab2679eeea7cbd4c82 + size: 521707 + timestamp: 1736610765240 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h1e9d426_8_cpu.conda + build_number: 8 + sha256: 1896ea00da28e10670f7ba51bb543e68a87f717e9f5692fee44268f1a13d9eee + md5: e7dc0209e065a2b51f19848cefa4b1ab depends: - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.1.0 hb7781cd_7_cpu - - libarrow-acero 18.1.0 h3b568fd_7_cpu - - libarrow-dataset 18.1.0 h3b568fd_7_cpu + - libarrow 18.1.0 h47f80e1_8_cpu + - libarrow-acero 18.1.0 h3b568fd_8_cpu + - libarrow-dataset 18.1.0 h3b568fd_8_cpu - libgcc >=13 - libprotobuf >=5.28.3,<5.28.4.0a0 - libstdcxx >=13 @@ -3594,27 +3594,27 @@ packages: platform: linux license: Apache-2.0 license_family: APACHE - size: 516014 - timestamp: 1735685565929 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-h4239455_7_cpu.conda - build_number: 7 - sha256: a45bbdd6932aed972d6c6ce30a7439aa8ec9d9b8ee5affb350d41e50abdc0127 - md5: 91927747173f65695e441346c7145e26 + size: 517189 + timestamp: 1736611989417 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-h4239455_8_cpu.conda + build_number: 8 + sha256: ae52d926ebfc8edb0728824f2918a825d39bd85a4ef27fe2b73656cfecdd7c69 + md5: f67eb19d22ba355cced8c86073ad49b1 depends: - __osx >=11.0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.1.0 h0ad35bc_7_cpu - - libarrow-acero 18.1.0 hf07054f_7_cpu - - libarrow-dataset 18.1.0 hf07054f_7_cpu + - libarrow 18.1.0 hf3eb8e5_8_cpu + - libarrow-acero 18.1.0 hf07054f_8_cpu + - libarrow-dataset 18.1.0 hf07054f_8_cpu - libcxx >=18 - libprotobuf >=5.28.3,<5.28.4.0a0 arch: arm64 platform: osx license: Apache-2.0 license_family: APACHE - size: 452385 - timestamp: 1735684993831 + size: 452161 + timestamp: 1736609917123 - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-26_linux64_openblas.conda build_number: 26 sha256: 30bd658682b124243f8e52d8edf8a19e7be1bc31e4fe4baec30a64002dc8cd0c @@ -4726,13 +4726,13 @@ packages: license_family: BSD size: 4165774 timestamp: 1730772154295 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-h081d1f1_7_cpu.conda - build_number: 7 - sha256: 55945b761130f60abdecf1551907ecfd05cb4a5958cf74d855b30c005ecb3592 - md5: b97013ef4e1dd2cf11594f06d5b5e83a +- conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-h081d1f1_8_cpu.conda + build_number: 8 + sha256: 2c6d900d4e9dd3c4000886d76d3f8a099e904667ebc6935b49428e6e9b766481 + md5: a9fa0ef309406c84b46db3a28efd761e depends: - __glibc >=2.17,<3.0.a0 - - libarrow 18.1.0 hd595efa_7_cpu + - libarrow 18.1.0 h9d9f30d_8_cpu - libgcc >=13 - libstdcxx >=13 - libthrift >=0.21.0,<0.21.1.0a0 @@ -4741,14 +4741,14 @@ packages: platform: linux license: Apache-2.0 license_family: APACHE - size: 1205598 - timestamp: 1735684849150 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-hfc78867_7_cpu.conda - build_number: 7 - sha256: 6dff9bbe731dc2cefe96bd9c7981d2cbef2b564a3152840a29c9b6a493ea50d9 - md5: 184bec7a9392ab6ba8134041e81971d6 + size: 1207011 + timestamp: 1736610684584 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-hfc78867_8_cpu.conda + build_number: 8 + sha256: 2ed6b9eac4504051ddc094ea3f3a2b3198d4d25a443a96fa2971d8075d790c31 + md5: 9a907190c9e2c6bf1a29569700218f0b depends: - - libarrow 18.1.0 hb7781cd_7_cpu + - libarrow 18.1.0 h47f80e1_8_cpu - libgcc >=13 - libstdcxx >=13 - libthrift >=0.21.0,<0.21.1.0a0 @@ -4757,15 +4757,15 @@ packages: platform: linux license: Apache-2.0 license_family: APACHE - size: 1117825 - timestamp: 1735685495511 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-h636d7b7_7_cpu.conda - build_number: 7 - sha256: bf42e43542a90edd86ba5aa5fd4543671625f1bc35f62be32688f00e18bae990 - md5: 93de9ba66a20db32a2646d313794b3a8 + size: 1117465 + timestamp: 1736611918180 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-h636d7b7_8_cpu.conda + build_number: 8 + sha256: 4991519ef4264abc7160e9faaf8ff01d4731bf1497076bef1895d6c366f796eb + md5: b8bd275a49877fdec62ff787818a869d depends: - __osx >=11.0 - - libarrow 18.1.0 h0ad35bc_7_cpu + - libarrow 18.1.0 hf3eb8e5_8_cpu - libcxx >=18 - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 @@ -4773,8 +4773,8 @@ packages: platform: osx license: Apache-2.0 license_family: APACHE - size: 873251 - timestamp: 1735684582558 + size: 873593 + timestamp: 1736609701839 - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.45-h943b412_0.conda sha256: b8f5b5ba9a14dedf7c97c01300de492b1b52b68eacbc3249a13fdbfa82349a2f md5: 85cbdaacad93808395ac295b5667d25b @@ -5549,47 +5549,47 @@ packages: license_family: BSD size: 14467 timestamp: 1733417051523 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011105-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011205-release.conda noarch: python - sha256: 4bd3331f281b0d42b57e7e5d28eee3650cb52ffb3f9c381f349255034ab4d011 - md5: 9a12141b0beb110b83d4ae256d8de1b0 + sha256: ce8b3d98a933cb0fdaa2e6e293fc940d51aaae273c2a6f14194ac45230ab701a + md5: d796fa41a5dd97e2bc1019b10497a31b depends: - - max-core ==25.1.0.dev2025011105 release - - max-python >=25.1.0.dev2025011105,<26.0a0 - - mojo-jupyter ==25.1.0.dev2025011105 release - - mblack ==25.1.0.dev2025011105 release + - max-core ==25.1.0.dev2025011205 release + - max-python >=25.1.0.dev2025011205,<26.0a0 + - mojo-jupyter ==25.1.0.dev2025011205 release + - mblack ==25.1.0.dev2025011205 release license: LicenseRef-Modular-Proprietary size: 9919 - timestamp: 1736572603494 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025011105-release.conda - sha256: 45fdbcfa2c105f01e3c06823e072f2b7b3ceeafe21188973a3f64a87c43c29e6 - md5: ba267ab335859f14f9c0d887d4a83f14 + timestamp: 1736659018393 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025011205-release.conda + sha256: 6bbe93bf6df795ec42e609b4a9e52d64bdaa948c5527c16408930b7d699244d0 + md5: 8dedeccd5df7d21651ce7ba876ad3db9 depends: - - mblack ==25.1.0.dev2025011105 release + - mblack ==25.1.0.dev2025011205 release license: LicenseRef-Modular-Proprietary - size: 244035937 - timestamp: 1736572608009 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025011105-release.conda - sha256: 23794990d901f563fd2492483d4f5e0b1b91ed616028bf70bd9e2eaace6bd56b - md5: e8f626acac2d17a591ac8353ba41f5d0 + size: 244387099 + timestamp: 1736659018391 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025011205-release.conda + sha256: 97f364dc4051c44d2fdd77a2a5d314b6b460fef5e1ae77ba5e88d7c7024d8a15 + md5: acd35656dff9277c8401424aeb44ed58 depends: - - mblack ==25.1.0.dev2025011105 release + - mblack ==25.1.0.dev2025011205 release license: LicenseRef-Modular-Proprietary - size: 247708765 - timestamp: 1736572603492 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025011105-release.conda - sha256: 8cc71a4a35f96867f4131ddca60d084a8df937ec0f551b62601adc9202788a82 - md5: 4b8d6a0afbcebe7c2e5dc2ccd30c55a8 + size: 248031826 + timestamp: 1736659028471 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025011205-release.conda + sha256: ba42127f64b3fad135aad191f14b68a87a5820d78355b4ab9a95aabb40e183c4 + md5: 2078ddc332986f28c8b67c413aa0c6e9 depends: - - mblack ==25.1.0.dev2025011105 release + - mblack ==25.1.0.dev2025011205 release license: LicenseRef-Modular-Proprietary - size: 206225127 - timestamp: 1736572820782 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025011105-3.12release.conda - sha256: 621688d96524cbf32ed8f33e4d572043973beb875708e69af36735ee730cc6c4 - md5: bb2eb7a24245cd62aed0b9d3e3e85604 + size: 206561289 + timestamp: 1736660251821 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025011205-3.12release.conda + sha256: f4a145b7b67707fa4053ebc992ecce87190cf34039cad29457c7b9474d0c3e13 + md5: ace652c55e958db1e320c5423fe5c320 depends: - - max-core ==25.1.0.dev2025011105 release + - max-core ==25.1.0.dev2025011205 release - python 3.12.* - fastapi - httpx @@ -5610,13 +5610,13 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 124216697 - timestamp: 1736572608017 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025011105-3.12release.conda - sha256: fd2587af6018758078516561bfdb54d8175207edd4ce6dce211aeb9dffbfd967 - md5: 8d1481a3abe8cd46a76797465f6a9eb6 + size: 124320649 + timestamp: 1736659018401 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025011205-3.12release.conda + sha256: fcbf3f2315a28485f0d5338ac3cf4a26540e30bc033f21a7789199c2a94ab4c1 + md5: 43fa4a1c11fe12b55f984e32501a1a09 depends: - - max-core ==25.1.0.dev2025011105 release + - max-core ==25.1.0.dev2025011205 release - python 3.12.* - fastapi - httpx @@ -5637,13 +5637,13 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 127983766 - timestamp: 1736572603503 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025011105-3.12release.conda - sha256: 5d6590e84cf64008fd48066ef10138c48cdbb6d6e2a1d3de01e71270d8d8d966 - md5: 92aa60fa7fe761433d03416f21c8d912 + size: 128073303 + timestamp: 1736659028481 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025011205-3.12release.conda + sha256: c6b332a826824959a196a09095bca25ff614ec2b05939683f2971160dd1a0b25 + md5: 1cf2f5ed4307f35ea22c392734a54751 depends: - - max-core ==25.1.0.dev2025011105 release + - max-core ==25.1.0.dev2025011205 release - python 3.12.* - fastapi - httpx @@ -5664,12 +5664,12 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 110625116 - timestamp: 1736572820784 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011105-release.conda + size: 110696805 + timestamp: 1736660251823 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011205-release.conda noarch: python - sha256: f447d269d29bb49fd97275f623632a569638c31b40e88489367df3d7d4ce90e2 - md5: 32c691c7fc2c6a218e1ce2272965a101 + sha256: a31c5c6330eb6638ee1698cea23e0bdd9c1acc1560c37437cda156a4913ee27f + md5: aea163e4e020e7ab6c44476abb1e5c2b depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -5679,8 +5679,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130815 - timestamp: 1736572603499 + size: 130806 + timestamp: 1736659018397 - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda sha256: 78c1bbe1723449c52b7a9df1af2ee5f005209f67e40b6e1d3c7619127c43b1c7 md5: 592132998493b3ff25fd7479396e8351 @@ -5700,18 +5700,18 @@ packages: license_family: BSD size: 68803 timestamp: 1735686983426 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011105-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011205-release.conda noarch: python - sha256: 05af473b2b4983829660ba70eb0cb6607f019c4f4b8d107350ea491c6bd8d1cd - md5: 036f5ddfbcce66b3f9972cebf1cec107 + sha256: 42260d58dd242c60715f8fc8c826860087566cb3946a0bcb6a6ba38a6b213014 + md5: 437e3994be83b2370d71635c5c5b616a depends: - - max-core ==25.1.0.dev2025011105 release + - max-core ==25.1.0.dev2025011205 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22937 - timestamp: 1736572603499 + size: 22934 + timestamp: 1736659018398 - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py312h178313f_2.conda sha256: b05bc8252a6e957bf4a776ed5e0e61d1ba88cdc46ccb55890c72cc58b10371f4 md5: 5b5e3267d915a107eca793d52e1b780a @@ -8054,6 +8054,7 @@ packages: arch: x86_64 platform: linux license: MIT + license_family: MIT size: 410192 timestamp: 1736550568524 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/watchfiles-1.0.4-py312h8cbf658_0.conda @@ -8070,6 +8071,7 @@ packages: arch: aarch64 platform: linux license: MIT + license_family: MIT size: 403791 timestamp: 1736550743174 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/watchfiles-1.0.4-py312hcd83bfe_0.conda @@ -8086,6 +8088,7 @@ packages: arch: arm64 platform: osx license: MIT + license_family: MIT size: 363822 timestamp: 1736550859472 - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda diff --git a/examples/operators/magic.lock b/examples/operators/magic.lock index 68572dbafe..ee9413a668 100644 --- a/examples/operators/magic.lock +++ b/examples/operators/magic.lock @@ -14,7 +14,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.8.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.3.0-pyh71513ae_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-hb921021_15.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-h205f482_16.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.1-h1a47875_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.10.6-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.3.0-h4e1184b_5.conda @@ -23,10 +23,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-h831e299_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h11f4f37_12.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.7-hf454442_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.1-h4e1184b_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.2-h4e1184b_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-h4e1184b_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.7-hd92328a_7.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-hc430e4a_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.8-h8570fcd_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-h7001638_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.10.0-h113e628_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.13.0-h3cf044e_1.conda @@ -77,10 +77,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-hd595efa_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-hcb10f89_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-hcb10f89_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-h08228c5_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-h9d9f30d_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-hcb10f89_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-hcb10f89_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-h08228c5_8_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-26_linux64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hb9d3cd8_2.conda @@ -109,7 +109,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.28-pthreads_h94d23a6_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-h081d1f1_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-h081d1f1_8_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.45-h943b412_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_2.conda @@ -131,12 +131,12 @@ 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-25.1.0.dev2025011105-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025011105-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025011105-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011205-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025011205-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025011205-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011205-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-25.1.0.dev2025011105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011205-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 @@ -231,7 +231,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.8.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.3.0-pyh71513ae_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-h2cb9fb3_15.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-hb7ec8d5_16.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.1-h740c5af_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-common-0.10.6-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-compression-0.3.0-h0f0193d_5.conda @@ -240,10 +240,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-h1a307af_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h5f50e26_12.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.7-h2080895_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.1-h0f0193d_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.2-h0f0193d_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h0f0193d_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.7-h8a4e35f_7.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h849ce1a_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.8-h92ee776_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h90ecb4a_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-core-cpp-1.14.0-h1887c18_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-identity-cpp-1.10.0-h47b0b28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-blobs-cpp-12.13.0-h185ecfd_1.conda @@ -295,10 +295,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.0.0-h4de3ea5_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h18dbdb1_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-hb7781cd_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h3b568fd_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h3b568fd_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h1e9d426_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-h47f80e1_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h3b568fd_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h3b568fd_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h1e9d426_8_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-26_linuxaarch64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlicommon-1.1.0-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlidec-1.1.0-h86ecc28_2.conda @@ -327,7 +327,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnghttp2-1.64.0-hc8609a4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.28-pthreads_h9d3fd7e_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-hfc78867_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-hfc78867_8_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.45-hec79eb8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.3-h44a3b7b_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_2.conda @@ -349,12 +349,12 @@ 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-25.1.0.dev2025011105-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025011105-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025011105-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011205-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025011205-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025011205-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011205-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-25.1.0.dev2025011105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011205-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 @@ -448,7 +448,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.8.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.3.0-pyh71513ae_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-h8bc59a9_15.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-hfc2798a_16.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.1-hc8a0bd2_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.10.6-h5505292_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-compression-0.3.0-hc8a0bd2_5.conda @@ -457,10 +457,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-haba67d1_5.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h24f418c_12.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.7-h1be5864_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.1-hc8a0bd2_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.2-hc8a0bd2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-hc8a0bd2_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.7-h19a973c_7.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-he0ff2e4_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.8-h23176ea_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-h794939a_5.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.14.0-hd50102c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.10.0-hc602bab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-blobs-cpp-12.13.0-h7585a09_1.conda @@ -510,10 +510,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.16-ha0e7c42_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_h07bc746_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-h0ad35bc_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-hf07054f_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-hf07054f_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-h4239455_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-hf3eb8e5_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-hf07054f_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-hf07054f_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-h4239455_8_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-26_osxarm64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.1.0-hd74edd7_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.1.0-hd74edd7_2.conda @@ -539,7 +539,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.3-h39f12f2_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.64.0-h6d7220d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.28-openmp_hf332438_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-h636d7b7_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-h636d7b7_8_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.45-h3783ad8_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.3-h3bd63a1_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h07bc746_2.conda @@ -558,12 +558,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-25.1.0.dev2025011105-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025011105-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025011105-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011205-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025011205-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025011205-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011205-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-25.1.0.dev2025011105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011205-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 @@ -804,55 +804,55 @@ packages: license_family: MIT size: 56354 timestamp: 1734348889193 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-hb921021_15.conda - sha256: 537006ad6d5097c134494166a6a1dc1451d5d050878d7b82cef498bfda40ba8a - md5: c79d50f64cffa5ad51ecc1a81057962f +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-h205f482_16.conda + sha256: 0695c285b70385913dc7dce05888d3ad1378247b65273bdab509494a2f8f0eea + md5: b0815d37ab812ade9c07239da7c3c369 depends: - __glibc >=2.17,<3.0.a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 + - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 - libgcc >=13 arch: x86_64 platform: linux license: Apache-2.0 license_family: Apache - size: 107614 - timestamp: 1734021692519 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-h2cb9fb3_15.conda - sha256: 4ce859dc9ff128bf5515604c43f33fb511386022fc9765ca077990f2a3f23df5 - md5: e524686ace966acefb5b8cbc6e8b3daa + size: 107478 + timestamp: 1736592747413 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-hb7ec8d5_16.conda + sha256: 5a2a2691f2e0028e8549b97a340d7e6c502e0d54b7deba00fad505812663a98b + md5: 56f166780076db46c5e273988693d8a3 depends: - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 + - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 - libgcc >=13 arch: aarch64 platform: linux license: Apache-2.0 license_family: Apache - size: 111854 - timestamp: 1734021745104 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-h8bc59a9_15.conda - sha256: 0e41e56b662e76e024182adebcd91d09a4d38a83b35217c84e4967354dfff9a2 - md5: f688b8893c20ad9477a19e7ce614014a + size: 112264 + timestamp: 1736592695540 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-hfc2798a_16.conda + sha256: cdcd932332311db1b614289101b61e32cbae2478ba2bf85763aaf5a5cc7db6f6 + md5: 1e9a41d5296f50c08ae511d61fddef85 depends: - __osx >=11.0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 + - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 arch: arm64 platform: osx license: Apache-2.0 license_family: Apache - size: 92507 - timestamp: 1734021831330 + size: 92547 + timestamp: 1736592866387 - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.1-h1a47875_3.conda sha256: 095ac824ea9303eff67e04090ae531d9eb33d2bf8f82eaade39b839c421e16e8 md5: 55a8561fdbbbd34f50f57d9be12ed084 @@ -1195,9 +1195,9 @@ packages: license_family: Apache size: 97598 timestamp: 1734146239038 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.1-h4e1184b_4.conda - sha256: df586f42210af1134b1c88ff4c278c3cb6d6c807c84eac48860062464b28554d - md5: a5126a90e74ac739b00564a4c7ddcc36 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.2-h4e1184b_0.conda + sha256: 0424e380c435ba03b5948d02e8c958866c4eee50ed29e57f99473a5f795a4cfc + md5: dcd498d493818b776a77fbc242fbf8e4 depends: - __glibc >=2.17,<3.0.a0 - aws-c-common >=0.10.6,<0.10.7.0a0 @@ -1206,11 +1206,11 @@ packages: platform: linux license: Apache-2.0 license_family: Apache - size: 56094 - timestamp: 1733994449690 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.1-h0f0193d_4.conda - sha256: ede8e782467c87ac80ceb9c9af9e917d121b7d8b8c698186d18e3cecd36f2210 - md5: 53e798d720dd78b78847a7b2fdb05fc9 + size: 55911 + timestamp: 1736535960724 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.2-h0f0193d_0.conda + sha256: fba38e469457764afcb94aa84d4d7788e6b5fa1554d34b05c904d2245fdd3c81 + md5: a78928881c652facde2a13ec6e776f3c depends: - aws-c-common >=0.10.6,<0.10.7.0a0 - libgcc >=13 @@ -1218,11 +1218,11 @@ packages: platform: linux license: Apache-2.0 license_family: Apache - size: 58621 - timestamp: 1733994421495 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.1-hc8a0bd2_4.conda - sha256: de98343ce42d2e569b3380292d20f47bf39bda08aadabcbb8e650d3f38fd742f - md5: 22f72f8cd7ead211304ac17d337d96e0 + size: 58221 + timestamp: 1736536003041 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.2-hc8a0bd2_0.conda + sha256: ea4f0f1e99056293c69615f581a997d65ba7e229e296e402e0d8ef750648a5b5 + md5: e7b5498ac7b7ab921a907be38f3a8080 depends: - __osx >=11.0 - aws-c-common >=0.10.6,<0.10.7.0a0 @@ -1230,8 +1230,8 @@ packages: platform: osx license: Apache-2.0 license_family: Apache - size: 49664 - timestamp: 1733994553014 + size: 49872 + timestamp: 1736536152332 - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-h4e1184b_4.conda sha256: 1ed9a332d06ad595694907fad2d6d801082916c27cd5076096fda4061e6d24a8 md5: 74e8c3e4df4ceae34aa2959df4b28101 @@ -1269,9 +1269,9 @@ packages: license_family: Apache size: 70186 timestamp: 1733994496998 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.7-hd92328a_7.conda - sha256: 094cd81f1e5ba713e9e7a272ee52b5dde3ccc4842ea90f19c0354a00bbdac3d9 - md5: 02b95564257d5c3db9c06beccf711f95 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.8-h8570fcd_1.conda + sha256: ff8f08bc615d3ef6d970df80988200b3ecee76ecfa4885109cd82b30176cfda9 + md5: f21296b496cca1c1fa426b9a3b676e79 depends: - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 @@ -1282,18 +1282,18 @@ packages: - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - aws-c-s3 >=0.7.7,<0.7.8.0a0 - - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 + - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 - libgcc >=13 - libstdcxx >=13 arch: x86_64 platform: linux license: Apache-2.0 license_family: Apache - size: 354703 - timestamp: 1734177883319 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.7-h8a4e35f_7.conda - sha256: 5ba9188e0cb4e3faff9bc96774febb040aa3b802aedba29d847e00e7b5eab84e - md5: d77a9e3d7ce15399903e92825fd651b5 + size: 354328 + timestamp: 1736598991291 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.8-h92ee776_1.conda + sha256: 114ac89d3936bf801dcbd488ba0b468c7e113a407cb1ee5898259a5202b7e750 + md5: 63546051b5687f793ae977c7994e1339 depends: - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 @@ -1303,18 +1303,18 @@ packages: - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - aws-c-s3 >=0.7.7,<0.7.8.0a0 - - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 + - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 - libgcc >=13 - libstdcxx >=13 arch: aarch64 platform: linux license: Apache-2.0 license_family: Apache - size: 283154 - timestamp: 1734177845248 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.7-h19a973c_7.conda - sha256: 8269e6746eb3a5d15b732a3983888bf98dfc1f6594e95250fc8d16b43cfd5ff9 - md5: 95714136bef3e917bd5a2942d4682b20 + size: 284664 + timestamp: 1736598964131 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.8-h23176ea_1.conda + sha256: db6a31078bb82fb12044d7706239c003568273729f7ba4971c1479b7926ada82 + md5: 31fdd3ffb00f5472196fa95ef08087b7 depends: - __osx >=11.0 - aws-c-auth >=0.8.0,<0.8.1.0a0 @@ -1325,23 +1325,23 @@ packages: - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - aws-c-s3 >=0.7.7,<0.7.8.0a0 - - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 + - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 - libcxx >=18 arch: arm64 platform: osx license: Apache-2.0 license_family: Apache - size: 236249 - timestamp: 1734178020924 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-hc430e4a_4.conda - sha256: 2dc09f6f9c49127b5f96e7535b64a9c521b944d76d8b7d03d48ae80257ac1cea - md5: aeefac461bea1f126653c1285cf5af08 + size: 236269 + timestamp: 1736599024242 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-h7001638_5.conda + sha256: 849524b09865e84d6926aa814944cf71511aa4a00fffc5ad174c286d5dfac5f0 + md5: fc01d77a7f383b2915f276c73b7d0934 depends: - __glibc >=2.17,<3.0.a0 - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - - aws-crt-cpp >=0.29.7,<0.29.8.0a0 + - aws-crt-cpp >=0.29.8,<0.29.9.0a0 - libcurl >=8.11.1,<9.0a0 - libgcc >=13 - libstdcxx >=13 @@ -1351,16 +1351,16 @@ packages: platform: linux license: Apache-2.0 license_family: Apache - size: 3060561 - timestamp: 1734093737431 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h849ce1a_4.conda - sha256: 51b9e9df8cbab4a13a1b9d39d6ef5ed162aaa29c09a745810e00bbe92e1045c1 - md5: cda7747f4398be8d1fb37362815917a7 + size: 3088636 + timestamp: 1736598504343 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h90ecb4a_5.conda + sha256: 9467acd0f2df74ea7472aebdfb8b5656a8d403abad2edbce9743d6e88c94fd10 + md5: 33f86f8de1d8cd40f8fe628dc0784437 depends: - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - - aws-crt-cpp >=0.29.7,<0.29.8.0a0 + - aws-crt-cpp >=0.29.8,<0.29.9.0a0 - libcurl >=8.11.1,<9.0a0 - libgcc >=13 - libstdcxx >=13 @@ -1370,17 +1370,17 @@ packages: platform: linux license: Apache-2.0 license_family: Apache - size: 2920625 - timestamp: 1734093552712 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-he0ff2e4_4.conda - sha256: 535b970aaa13be45f8cab8205c59f044b17364111c41a227f061775a5c834e18 - md5: 0981ed87098b149bdb7d99a4a3fd0e58 + size: 2925443 + timestamp: 1736598526637 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-h794939a_5.conda + sha256: 2b1e7d5a45e82604bfdb6de63c53cf0e9495f596cfd90e644a1e67910de7f91c + md5: a2374b4182bf5b2d08b2903393d0c487 depends: - __osx >=11.0 - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - - aws-crt-cpp >=0.29.7,<0.29.8.0a0 + - aws-crt-cpp >=0.29.8,<0.29.9.0a0 - libcurl >=8.11.1,<9.0a0 - libcxx >=18 - libzlib >=1.3.1,<2.0a0 @@ -1389,8 +1389,8 @@ packages: platform: osx license: Apache-2.0 license_family: Apache - size: 2826534 - timestamp: 1734094018287 + size: 2824168 + timestamp: 1736598935034 - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda sha256: fe07debdb089a3db17f40a7f20d283d75284bb4fc269ef727b8ba6fc93f7cb5a md5: 0a8838771cc2e985cd295e01ae83baf1 @@ -2558,13 +2558,13 @@ packages: license_family: Apache size: 1178260 timestamp: 1736008642885 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-hd595efa_7_cpu.conda - build_number: 7 - sha256: 554ffa338264c1dc34d95adb7eb856d50a2f25e7fa303a1a51e4372301b7c96f - md5: 08d4aff5ee6dee9a1b9ab13fca927697 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-h9d9f30d_8_cpu.conda + build_number: 8 + sha256: f6c72ce82d145cb94a1131b68547b88056fb48158a382f9ce763286fce53ee65 + md5: 1c9caae53b14a385b59e87687adad2d6 depends: - __glibc >=2.17,<3.0.a0 - - aws-crt-cpp >=0.29.7,<0.29.8.0a0 + - aws-crt-cpp >=0.29.8,<0.29.9.0a0 - aws-sdk-cpp >=1.11.458,<1.11.459.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-identity-cpp >=1.10.0,<1.10.1.0a0 @@ -2597,14 +2597,14 @@ packages: platform: linux license: Apache-2.0 license_family: APACHE - size: 8770256 - timestamp: 1735684696564 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-hb7781cd_7_cpu.conda - build_number: 7 - sha256: f6107506bd16788560b47a4d18c1457b4df30a49334364d32613fe3f53ba6cbb - md5: 98cf7127ca7b3854c5d1c8bef1ed6e53 - depends: - - aws-crt-cpp >=0.29.7,<0.29.8.0a0 + size: 8801586 + timestamp: 1736610546493 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-h47f80e1_8_cpu.conda + build_number: 8 + sha256: bf381dfa84e94ffce715c46352dd99f6f6ace69859b0efb822500f8882be429a + md5: daceef1881b4ddc72bb5b225a122c633 + depends: + - aws-crt-cpp >=0.29.8,<0.29.9.0a0 - aws-sdk-cpp >=1.11.458,<1.11.459.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-identity-cpp >=1.10.0,<1.10.1.0a0 @@ -2631,21 +2631,21 @@ packages: - zstd >=1.5.6,<1.6.0a0 constrains: - arrow-cpp <0.0a0 - - parquet-cpp <0.0a0 - apache-arrow-proc =*=cpu + - parquet-cpp <0.0a0 arch: aarch64 platform: linux license: Apache-2.0 license_family: APACHE - size: 8026714 - timestamp: 1735685336542 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-h0ad35bc_7_cpu.conda - build_number: 7 - sha256: 4fbdd8bb89d912bf03f10f9373a8d96a1cdd7a7851e107393418a3d2715bc27e - md5: 4ba2173203f44bbf03d19aaba6ed07d3 + size: 8045923 + timestamp: 1736611764958 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-hf3eb8e5_8_cpu.conda + build_number: 8 + sha256: 766e46b45520773db93ee1a91951cc135a85544bba738e7b378d31f16097753f + md5: fdc79871e6c243b819497337215416d9 depends: - __osx >=11.0 - - aws-crt-cpp >=0.29.7,<0.29.8.0a0 + - aws-crt-cpp >=0.29.8,<0.29.9.0a0 - aws-sdk-cpp >=1.11.458,<1.11.459.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-identity-cpp >=1.10.0,<1.10.1.0a0 @@ -2676,111 +2676,111 @@ packages: platform: osx license: Apache-2.0 license_family: APACHE - size: 5506699 - timestamp: 1735682962976 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-hcb10f89_7_cpu.conda - build_number: 7 - sha256: 87ea5d6a84d922d73975dce8661fccf257e72e755175b12c30e1181a34e37987 - md5: 12d84228204c56fec6ed113288014d11 + size: 5497383 + timestamp: 1736608604724 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-hcb10f89_8_cpu.conda + build_number: 8 + sha256: 126a6e78199311d99e38b9d633ce3e0290795ac68ce3ee8a9b91436c85c4095d + md5: 544759904898499f634f8f88a9907f88 depends: - __glibc >=2.17,<3.0.a0 - - libarrow 18.1.0 hd595efa_7_cpu + - libarrow 18.1.0 h9d9f30d_8_cpu - libgcc >=13 - libstdcxx >=13 arch: x86_64 platform: linux license: Apache-2.0 license_family: APACHE - size: 612463 - timestamp: 1735684749868 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h3b568fd_7_cpu.conda - build_number: 7 - sha256: 42cbfc87096f745d565d814d65b7228c82d985f1898859d5e456016d73e81c82 - md5: 4c1d8c3feea249782148d3cd6a25392e + size: 611558 + timestamp: 1736610592458 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h3b568fd_8_cpu.conda + build_number: 8 + sha256: c94844ab1d8fafe17775161283bd1fe7ab1f93f660fc5ba0c01bd33fe3d21eaf + md5: 7a8e6a363d2f39a2f3df3f181d12692d depends: - - libarrow 18.1.0 hb7781cd_7_cpu + - libarrow 18.1.0 h47f80e1_8_cpu - libgcc >=13 - libstdcxx >=13 arch: aarch64 platform: linux license: Apache-2.0 license_family: APACHE - size: 578222 - timestamp: 1735685424850 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-hf07054f_7_cpu.conda - build_number: 7 - sha256: 86e20cebfdb4f335e98265c1b88f5053bf3e3648768a317856295846bfdbf2b4 - md5: 3eaf71fe987de13061db795e03bb1a1c + size: 579798 + timestamp: 1736611846905 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-hf07054f_8_cpu.conda + build_number: 8 + sha256: 29196dc6b2e4488f98bd8950de6333efe5d1a9d0cc62e186694946766185475e + md5: 8db96829f8e427167f450c7467a1ba44 depends: - __osx >=11.0 - - libarrow 18.1.0 h0ad35bc_7_cpu + - libarrow 18.1.0 hf3eb8e5_8_cpu - libcxx >=18 arch: arm64 platform: osx license: Apache-2.0 license_family: APACHE - size: 485185 - timestamp: 1735683071232 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-hcb10f89_7_cpu.conda - build_number: 7 - sha256: 99c12511fba79c7947f78d676eae5857659084f687f375f68bc20bd4cddb0a0e - md5: 0a81eb63d7cd150f598c752e86388d57 + size: 484442 + timestamp: 1736608695654 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-hcb10f89_8_cpu.conda + build_number: 8 + sha256: fe50edf030b5ccbadec2bf8f90d4cdf32d63ec52ba26233fc2c8bfbe43df3b15 + md5: 894a5ed78728b77c997fefeee222ac4d depends: - __glibc >=2.17,<3.0.a0 - - libarrow 18.1.0 hd595efa_7_cpu - - libarrow-acero 18.1.0 hcb10f89_7_cpu + - libarrow 18.1.0 h9d9f30d_8_cpu + - libarrow-acero 18.1.0 hcb10f89_8_cpu - libgcc >=13 - - libparquet 18.1.0 h081d1f1_7_cpu + - libparquet 18.1.0 h081d1f1_8_cpu - libstdcxx >=13 arch: x86_64 platform: linux license: Apache-2.0 license_family: APACHE - size: 587497 - timestamp: 1735684880531 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h3b568fd_7_cpu.conda - build_number: 7 - sha256: 13ba7d3d08015aa26569eca9e198e2f8b2a0cd2d9c420e41c78cc2e5d5170f26 - md5: f39f5d725c2ca94c2e7b19e2717fd4ab + size: 588032 + timestamp: 1736610711976 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h3b568fd_8_cpu.conda + build_number: 8 + sha256: bb87d8e633074c9759d93abb277d31314dc66fad741253b48e8265e186228c5b + md5: 11856da892b919cc27bd62638d701c65 depends: - - libarrow 18.1.0 hb7781cd_7_cpu - - libarrow-acero 18.1.0 h3b568fd_7_cpu + - libarrow 18.1.0 h47f80e1_8_cpu + - libarrow-acero 18.1.0 h3b568fd_8_cpu - libgcc >=13 - - libparquet 18.1.0 hfc78867_7_cpu + - libparquet 18.1.0 hfc78867_8_cpu - libstdcxx >=13 arch: aarch64 platform: linux license: Apache-2.0 license_family: APACHE - size: 560329 - timestamp: 1735685518922 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-hf07054f_7_cpu.conda - build_number: 7 - sha256: 52c5c4e9cd5f2ac91dcebb6a920ab2536febcea116ff8767e5439329d7da820b - md5: 97a2d3606682d94f7d73112e9ad684ae + size: 560571 + timestamp: 1736611941995 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-hf07054f_8_cpu.conda + build_number: 8 + sha256: bff2d39e418eadab8c522a536449ac90f070dd8e83e2bd5e67a9c3eb8ecf712f + md5: 7b3736f49b3ba299b7799aeb448cb830 depends: - __osx >=11.0 - - libarrow 18.1.0 h0ad35bc_7_cpu - - libarrow-acero 18.1.0 hf07054f_7_cpu + - libarrow 18.1.0 hf3eb8e5_8_cpu + - libarrow-acero 18.1.0 hf07054f_8_cpu - libcxx >=18 - - libparquet 18.1.0 h636d7b7_7_cpu + - libparquet 18.1.0 h636d7b7_8_cpu arch: arm64 platform: osx license: Apache-2.0 license_family: APACHE - size: 491237 - timestamp: 1735684688308 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-h08228c5_7_cpu.conda - build_number: 7 - sha256: 53ea53a06e137c2f81ebfdff3f978babb8b59e31f705a19b57056ec8754c1abf - md5: e128def53c133e8a23ac00cd4a479335 + size: 491001 + timestamp: 1736609758514 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-h08228c5_8_cpu.conda + build_number: 8 + sha256: dca372e27724904577315b8db3793e027a5c152a485e505e630a57b15634cd85 + md5: 46eaf81238da6f3ffab1f3ffdcee382e depends: - __glibc >=2.17,<3.0.a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.1.0 hd595efa_7_cpu - - libarrow-acero 18.1.0 hcb10f89_7_cpu - - libarrow-dataset 18.1.0 hcb10f89_7_cpu + - libarrow 18.1.0 h9d9f30d_8_cpu + - libarrow-acero 18.1.0 hcb10f89_8_cpu + - libarrow-dataset 18.1.0 hcb10f89_8_cpu - libgcc >=13 - libprotobuf >=5.28.3,<5.28.4.0a0 - libstdcxx >=13 @@ -2788,18 +2788,18 @@ packages: platform: linux license: Apache-2.0 license_family: APACHE - size: 521861 - timestamp: 1735684940668 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h1e9d426_7_cpu.conda - build_number: 7 - sha256: 252e2a0d8c733f36b50499786480a05a59577d617f291868149c80534c1e8ffc - md5: 6da921d9e1c4e2ab2679eeea7cbd4c82 + size: 521707 + timestamp: 1736610765240 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h1e9d426_8_cpu.conda + build_number: 8 + sha256: 1896ea00da28e10670f7ba51bb543e68a87f717e9f5692fee44268f1a13d9eee + md5: e7dc0209e065a2b51f19848cefa4b1ab depends: - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.1.0 hb7781cd_7_cpu - - libarrow-acero 18.1.0 h3b568fd_7_cpu - - libarrow-dataset 18.1.0 h3b568fd_7_cpu + - libarrow 18.1.0 h47f80e1_8_cpu + - libarrow-acero 18.1.0 h3b568fd_8_cpu + - libarrow-dataset 18.1.0 h3b568fd_8_cpu - libgcc >=13 - libprotobuf >=5.28.3,<5.28.4.0a0 - libstdcxx >=13 @@ -2807,27 +2807,27 @@ packages: platform: linux license: Apache-2.0 license_family: APACHE - size: 516014 - timestamp: 1735685565929 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-h4239455_7_cpu.conda - build_number: 7 - sha256: a45bbdd6932aed972d6c6ce30a7439aa8ec9d9b8ee5affb350d41e50abdc0127 - md5: 91927747173f65695e441346c7145e26 + size: 517189 + timestamp: 1736611989417 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-h4239455_8_cpu.conda + build_number: 8 + sha256: ae52d926ebfc8edb0728824f2918a825d39bd85a4ef27fe2b73656cfecdd7c69 + md5: f67eb19d22ba355cced8c86073ad49b1 depends: - __osx >=11.0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.1.0 h0ad35bc_7_cpu - - libarrow-acero 18.1.0 hf07054f_7_cpu - - libarrow-dataset 18.1.0 hf07054f_7_cpu + - libarrow 18.1.0 hf3eb8e5_8_cpu + - libarrow-acero 18.1.0 hf07054f_8_cpu + - libarrow-dataset 18.1.0 hf07054f_8_cpu - libcxx >=18 - libprotobuf >=5.28.3,<5.28.4.0a0 arch: arm64 platform: osx license: Apache-2.0 license_family: APACHE - size: 452385 - timestamp: 1735684993831 + size: 452161 + timestamp: 1736609917123 - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-26_linux64_openblas.conda build_number: 26 sha256: 30bd658682b124243f8e52d8edf8a19e7be1bc31e4fe4baec30a64002dc8cd0c @@ -3939,13 +3939,13 @@ packages: license_family: BSD size: 4165774 timestamp: 1730772154295 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-h081d1f1_7_cpu.conda - build_number: 7 - sha256: 55945b761130f60abdecf1551907ecfd05cb4a5958cf74d855b30c005ecb3592 - md5: b97013ef4e1dd2cf11594f06d5b5e83a +- conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-h081d1f1_8_cpu.conda + build_number: 8 + sha256: 2c6d900d4e9dd3c4000886d76d3f8a099e904667ebc6935b49428e6e9b766481 + md5: a9fa0ef309406c84b46db3a28efd761e depends: - __glibc >=2.17,<3.0.a0 - - libarrow 18.1.0 hd595efa_7_cpu + - libarrow 18.1.0 h9d9f30d_8_cpu - libgcc >=13 - libstdcxx >=13 - libthrift >=0.21.0,<0.21.1.0a0 @@ -3954,14 +3954,14 @@ packages: platform: linux license: Apache-2.0 license_family: APACHE - size: 1205598 - timestamp: 1735684849150 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-hfc78867_7_cpu.conda - build_number: 7 - sha256: 6dff9bbe731dc2cefe96bd9c7981d2cbef2b564a3152840a29c9b6a493ea50d9 - md5: 184bec7a9392ab6ba8134041e81971d6 + size: 1207011 + timestamp: 1736610684584 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-hfc78867_8_cpu.conda + build_number: 8 + sha256: 2ed6b9eac4504051ddc094ea3f3a2b3198d4d25a443a96fa2971d8075d790c31 + md5: 9a907190c9e2c6bf1a29569700218f0b depends: - - libarrow 18.1.0 hb7781cd_7_cpu + - libarrow 18.1.0 h47f80e1_8_cpu - libgcc >=13 - libstdcxx >=13 - libthrift >=0.21.0,<0.21.1.0a0 @@ -3970,15 +3970,15 @@ packages: platform: linux license: Apache-2.0 license_family: APACHE - size: 1117825 - timestamp: 1735685495511 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-h636d7b7_7_cpu.conda - build_number: 7 - sha256: bf42e43542a90edd86ba5aa5fd4543671625f1bc35f62be32688f00e18bae990 - md5: 93de9ba66a20db32a2646d313794b3a8 + size: 1117465 + timestamp: 1736611918180 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-h636d7b7_8_cpu.conda + build_number: 8 + sha256: 4991519ef4264abc7160e9faaf8ff01d4731bf1497076bef1895d6c366f796eb + md5: b8bd275a49877fdec62ff787818a869d depends: - __osx >=11.0 - - libarrow 18.1.0 h0ad35bc_7_cpu + - libarrow 18.1.0 hf3eb8e5_8_cpu - libcxx >=18 - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 @@ -3986,8 +3986,8 @@ packages: platform: osx license: Apache-2.0 license_family: APACHE - size: 873251 - timestamp: 1735684582558 + size: 873593 + timestamp: 1736609701839 - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.45-h943b412_0.conda sha256: b8f5b5ba9a14dedf7c97c01300de492b1b52b68eacbc3249a13fdbfa82349a2f md5: 85cbdaacad93808395ac295b5667d25b @@ -4752,47 +4752,47 @@ packages: license_family: BSD size: 24048 timestamp: 1733219945697 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011105-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011205-release.conda noarch: python - sha256: 4bd3331f281b0d42b57e7e5d28eee3650cb52ffb3f9c381f349255034ab4d011 - md5: 9a12141b0beb110b83d4ae256d8de1b0 + sha256: ce8b3d98a933cb0fdaa2e6e293fc940d51aaae273c2a6f14194ac45230ab701a + md5: d796fa41a5dd97e2bc1019b10497a31b depends: - - max-core ==25.1.0.dev2025011105 release - - max-python >=25.1.0.dev2025011105,<26.0a0 - - mojo-jupyter ==25.1.0.dev2025011105 release - - mblack ==25.1.0.dev2025011105 release + - max-core ==25.1.0.dev2025011205 release + - max-python >=25.1.0.dev2025011205,<26.0a0 + - mojo-jupyter ==25.1.0.dev2025011205 release + - mblack ==25.1.0.dev2025011205 release license: LicenseRef-Modular-Proprietary size: 9919 - timestamp: 1736572603494 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025011105-release.conda - sha256: 45fdbcfa2c105f01e3c06823e072f2b7b3ceeafe21188973a3f64a87c43c29e6 - md5: ba267ab335859f14f9c0d887d4a83f14 + timestamp: 1736659018393 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025011205-release.conda + sha256: 6bbe93bf6df795ec42e609b4a9e52d64bdaa948c5527c16408930b7d699244d0 + md5: 8dedeccd5df7d21651ce7ba876ad3db9 depends: - - mblack ==25.1.0.dev2025011105 release + - mblack ==25.1.0.dev2025011205 release license: LicenseRef-Modular-Proprietary - size: 244035937 - timestamp: 1736572608009 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025011105-release.conda - sha256: 23794990d901f563fd2492483d4f5e0b1b91ed616028bf70bd9e2eaace6bd56b - md5: e8f626acac2d17a591ac8353ba41f5d0 + size: 244387099 + timestamp: 1736659018391 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025011205-release.conda + sha256: 97f364dc4051c44d2fdd77a2a5d314b6b460fef5e1ae77ba5e88d7c7024d8a15 + md5: acd35656dff9277c8401424aeb44ed58 depends: - - mblack ==25.1.0.dev2025011105 release + - mblack ==25.1.0.dev2025011205 release license: LicenseRef-Modular-Proprietary - size: 247708765 - timestamp: 1736572603492 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025011105-release.conda - sha256: 8cc71a4a35f96867f4131ddca60d084a8df937ec0f551b62601adc9202788a82 - md5: 4b8d6a0afbcebe7c2e5dc2ccd30c55a8 + size: 248031826 + timestamp: 1736659028471 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025011205-release.conda + sha256: ba42127f64b3fad135aad191f14b68a87a5820d78355b4ab9a95aabb40e183c4 + md5: 2078ddc332986f28c8b67c413aa0c6e9 depends: - - mblack ==25.1.0.dev2025011105 release + - mblack ==25.1.0.dev2025011205 release license: LicenseRef-Modular-Proprietary - size: 206225127 - timestamp: 1736572820782 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025011105-3.12release.conda - sha256: 621688d96524cbf32ed8f33e4d572043973beb875708e69af36735ee730cc6c4 - md5: bb2eb7a24245cd62aed0b9d3e3e85604 + size: 206561289 + timestamp: 1736660251821 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025011205-3.12release.conda + sha256: f4a145b7b67707fa4053ebc992ecce87190cf34039cad29457c7b9474d0c3e13 + md5: ace652c55e958db1e320c5423fe5c320 depends: - - max-core ==25.1.0.dev2025011105 release + - max-core ==25.1.0.dev2025011205 release - python 3.12.* - fastapi - httpx @@ -4813,13 +4813,13 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 124216697 - timestamp: 1736572608017 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025011105-3.12release.conda - sha256: fd2587af6018758078516561bfdb54d8175207edd4ce6dce211aeb9dffbfd967 - md5: 8d1481a3abe8cd46a76797465f6a9eb6 + size: 124320649 + timestamp: 1736659018401 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025011205-3.12release.conda + sha256: fcbf3f2315a28485f0d5338ac3cf4a26540e30bc033f21a7789199c2a94ab4c1 + md5: 43fa4a1c11fe12b55f984e32501a1a09 depends: - - max-core ==25.1.0.dev2025011105 release + - max-core ==25.1.0.dev2025011205 release - python 3.12.* - fastapi - httpx @@ -4840,13 +4840,13 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 127983766 - timestamp: 1736572603503 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025011105-3.12release.conda - sha256: 5d6590e84cf64008fd48066ef10138c48cdbb6d6e2a1d3de01e71270d8d8d966 - md5: 92aa60fa7fe761433d03416f21c8d912 + size: 128073303 + timestamp: 1736659028481 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025011205-3.12release.conda + sha256: c6b332a826824959a196a09095bca25ff614ec2b05939683f2971160dd1a0b25 + md5: 1cf2f5ed4307f35ea22c392734a54751 depends: - - max-core ==25.1.0.dev2025011105 release + - max-core ==25.1.0.dev2025011205 release - python 3.12.* - fastapi - httpx @@ -4867,12 +4867,12 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 110625116 - timestamp: 1736572820784 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011105-release.conda + size: 110696805 + timestamp: 1736660251823 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011205-release.conda noarch: python - sha256: f447d269d29bb49fd97275f623632a569638c31b40e88489367df3d7d4ce90e2 - md5: 32c691c7fc2c6a218e1ce2272965a101 + sha256: a31c5c6330eb6638ee1698cea23e0bdd9c1acc1560c37437cda156a4913ee27f + md5: aea163e4e020e7ab6c44476abb1e5c2b depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -4882,8 +4882,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130815 - timestamp: 1736572603499 + size: 130806 + timestamp: 1736659018397 - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda sha256: 78c1bbe1723449c52b7a9df1af2ee5f005209f67e40b6e1d3c7619127c43b1c7 md5: 592132998493b3ff25fd7479396e8351 @@ -4893,18 +4893,18 @@ packages: license_family: MIT size: 14465 timestamp: 1733255681319 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011105-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011205-release.conda noarch: python - sha256: 05af473b2b4983829660ba70eb0cb6607f019c4f4b8d107350ea491c6bd8d1cd - md5: 036f5ddfbcce66b3f9972cebf1cec107 + sha256: 42260d58dd242c60715f8fc8c826860087566cb3946a0bcb6a6ba38a6b213014 + md5: 437e3994be83b2370d71635c5c5b616a depends: - - max-core ==25.1.0.dev2025011105 release + - max-core ==25.1.0.dev2025011205 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22937 - timestamp: 1736572603499 + size: 22934 + timestamp: 1736659018398 - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py312h178313f_2.conda sha256: b05bc8252a6e957bf4a776ed5e0e61d1ba88cdc46ccb55890c72cc58b10371f4 md5: 5b5e3267d915a107eca793d52e1b780a @@ -6804,6 +6804,7 @@ packages: arch: x86_64 platform: linux license: MIT + license_family: MIT size: 410192 timestamp: 1736550568524 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/watchfiles-1.0.4-py312h8cbf658_0.conda @@ -6820,6 +6821,7 @@ packages: arch: aarch64 platform: linux license: MIT + license_family: MIT size: 403791 timestamp: 1736550743174 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/watchfiles-1.0.4-py312hcd83bfe_0.conda @@ -6836,6 +6838,7 @@ packages: arch: arm64 platform: osx license: MIT + license_family: MIT size: 363822 timestamp: 1736550859472 - conda: https://conda.anaconda.org/conda-forge/linux-64/websockets-14.1-py312h66e93f0_0.conda diff --git a/magic.lock b/magic.lock index baa7c0612d..20f710b665 100644 --- a/magic.lock +++ b/magic.lock @@ -14,7 +14,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.8.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.3.0-pyh71513ae_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-hb921021_15.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-h205f482_16.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.1-h1a47875_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.10.6-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.3.0-h4e1184b_5.conda @@ -23,10 +23,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-h831e299_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h11f4f37_12.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.7-hf454442_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.1-h4e1184b_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.2-h4e1184b_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-h4e1184b_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.7-hd92328a_7.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-hc430e4a_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.8-h8570fcd_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-h7001638_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.10.0-h113e628_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.13.0-h3cf044e_1.conda @@ -77,10 +77,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-hd595efa_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-hcb10f89_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-hcb10f89_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-h08228c5_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-h9d9f30d_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-hcb10f89_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-hcb10f89_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-h08228c5_8_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-26_linux64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hb9d3cd8_2.conda @@ -109,7 +109,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.28-pthreads_h94d23a6_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-h081d1f1_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-h081d1f1_8_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.45-h943b412_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_2.conda @@ -132,12 +132,12 @@ 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-25.1.0.dev2025011105-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025011105-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025011105-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011205-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025011205-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025011205-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011205-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-25.1.0.dev2025011105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011205-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 @@ -232,7 +232,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.8.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.3.0-pyh71513ae_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-h2cb9fb3_15.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-hb7ec8d5_16.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.1-h740c5af_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-common-0.10.6-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-compression-0.3.0-h0f0193d_5.conda @@ -241,10 +241,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-h1a307af_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h5f50e26_12.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.7-h2080895_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.1-h0f0193d_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.2-h0f0193d_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h0f0193d_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.7-h8a4e35f_7.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h849ce1a_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.8-h92ee776_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h90ecb4a_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-core-cpp-1.14.0-h1887c18_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-identity-cpp-1.10.0-h47b0b28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-blobs-cpp-12.13.0-h185ecfd_1.conda @@ -296,10 +296,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.0.0-h4de3ea5_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h18dbdb1_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-hb7781cd_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h3b568fd_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h3b568fd_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h1e9d426_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-h47f80e1_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h3b568fd_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h3b568fd_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h1e9d426_8_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-26_linuxaarch64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlicommon-1.1.0-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlidec-1.1.0-h86ecc28_2.conda @@ -328,7 +328,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnghttp2-1.64.0-hc8609a4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.28-pthreads_h9d3fd7e_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-hfc78867_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-hfc78867_8_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.45-hec79eb8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.3-h44a3b7b_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_2.conda @@ -351,12 +351,12 @@ 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-25.1.0.dev2025011105-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025011105-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025011105-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011205-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025011205-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025011205-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011205-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-25.1.0.dev2025011105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011205-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 @@ -450,7 +450,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.8.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.3.0-pyh71513ae_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-h8bc59a9_15.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-hfc2798a_16.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.1-hc8a0bd2_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.10.6-h5505292_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-compression-0.3.0-hc8a0bd2_5.conda @@ -459,10 +459,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-haba67d1_5.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h24f418c_12.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.7-h1be5864_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.1-hc8a0bd2_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.2-hc8a0bd2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-hc8a0bd2_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.7-h19a973c_7.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-he0ff2e4_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.8-h23176ea_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-h794939a_5.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.14.0-hd50102c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.10.0-hc602bab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-blobs-cpp-12.13.0-h7585a09_1.conda @@ -512,10 +512,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.16-ha0e7c42_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_h07bc746_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-h0ad35bc_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-hf07054f_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-hf07054f_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-h4239455_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-hf3eb8e5_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-hf07054f_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-hf07054f_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-h4239455_8_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-26_osxarm64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.1.0-hd74edd7_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.1.0-hd74edd7_2.conda @@ -541,7 +541,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.3-h39f12f2_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.64.0-h6d7220d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.28-openmp_hf332438_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-h636d7b7_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-h636d7b7_8_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.45-h3783ad8_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.3-h3bd63a1_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h07bc746_2.conda @@ -561,12 +561,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-25.1.0.dev2025011105-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025011105-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025011105-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011205-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025011205-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025011205-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011205-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-25.1.0.dev2025011105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011205-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 @@ -807,55 +807,55 @@ packages: license_family: MIT size: 56354 timestamp: 1734348889193 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-hb921021_15.conda - sha256: 537006ad6d5097c134494166a6a1dc1451d5d050878d7b82cef498bfda40ba8a - md5: c79d50f64cffa5ad51ecc1a81057962f +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-h205f482_16.conda + sha256: 0695c285b70385913dc7dce05888d3ad1378247b65273bdab509494a2f8f0eea + md5: b0815d37ab812ade9c07239da7c3c369 depends: - __glibc >=2.17,<3.0.a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 + - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 - libgcc >=13 arch: x86_64 platform: linux license: Apache-2.0 license_family: Apache - size: 107614 - timestamp: 1734021692519 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-h2cb9fb3_15.conda - sha256: 4ce859dc9ff128bf5515604c43f33fb511386022fc9765ca077990f2a3f23df5 - md5: e524686ace966acefb5b8cbc6e8b3daa + size: 107478 + timestamp: 1736592747413 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-hb7ec8d5_16.conda + sha256: 5a2a2691f2e0028e8549b97a340d7e6c502e0d54b7deba00fad505812663a98b + md5: 56f166780076db46c5e273988693d8a3 depends: - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 + - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 - libgcc >=13 arch: aarch64 platform: linux license: Apache-2.0 license_family: Apache - size: 111854 - timestamp: 1734021745104 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-h8bc59a9_15.conda - sha256: 0e41e56b662e76e024182adebcd91d09a4d38a83b35217c84e4967354dfff9a2 - md5: f688b8893c20ad9477a19e7ce614014a + size: 112264 + timestamp: 1736592695540 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-hfc2798a_16.conda + sha256: cdcd932332311db1b614289101b61e32cbae2478ba2bf85763aaf5a5cc7db6f6 + md5: 1e9a41d5296f50c08ae511d61fddef85 depends: - __osx >=11.0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 + - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 arch: arm64 platform: osx license: Apache-2.0 license_family: Apache - size: 92507 - timestamp: 1734021831330 + size: 92547 + timestamp: 1736592866387 - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.1-h1a47875_3.conda sha256: 095ac824ea9303eff67e04090ae531d9eb33d2bf8f82eaade39b839c421e16e8 md5: 55a8561fdbbbd34f50f57d9be12ed084 @@ -1198,9 +1198,9 @@ packages: license_family: Apache size: 97598 timestamp: 1734146239038 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.1-h4e1184b_4.conda - sha256: df586f42210af1134b1c88ff4c278c3cb6d6c807c84eac48860062464b28554d - md5: a5126a90e74ac739b00564a4c7ddcc36 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.2-h4e1184b_0.conda + sha256: 0424e380c435ba03b5948d02e8c958866c4eee50ed29e57f99473a5f795a4cfc + md5: dcd498d493818b776a77fbc242fbf8e4 depends: - __glibc >=2.17,<3.0.a0 - aws-c-common >=0.10.6,<0.10.7.0a0 @@ -1209,11 +1209,11 @@ packages: platform: linux license: Apache-2.0 license_family: Apache - size: 56094 - timestamp: 1733994449690 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.1-h0f0193d_4.conda - sha256: ede8e782467c87ac80ceb9c9af9e917d121b7d8b8c698186d18e3cecd36f2210 - md5: 53e798d720dd78b78847a7b2fdb05fc9 + size: 55911 + timestamp: 1736535960724 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.2-h0f0193d_0.conda + sha256: fba38e469457764afcb94aa84d4d7788e6b5fa1554d34b05c904d2245fdd3c81 + md5: a78928881c652facde2a13ec6e776f3c depends: - aws-c-common >=0.10.6,<0.10.7.0a0 - libgcc >=13 @@ -1221,11 +1221,11 @@ packages: platform: linux license: Apache-2.0 license_family: Apache - size: 58621 - timestamp: 1733994421495 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.1-hc8a0bd2_4.conda - sha256: de98343ce42d2e569b3380292d20f47bf39bda08aadabcbb8e650d3f38fd742f - md5: 22f72f8cd7ead211304ac17d337d96e0 + size: 58221 + timestamp: 1736536003041 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.2-hc8a0bd2_0.conda + sha256: ea4f0f1e99056293c69615f581a997d65ba7e229e296e402e0d8ef750648a5b5 + md5: e7b5498ac7b7ab921a907be38f3a8080 depends: - __osx >=11.0 - aws-c-common >=0.10.6,<0.10.7.0a0 @@ -1233,8 +1233,8 @@ packages: platform: osx license: Apache-2.0 license_family: Apache - size: 49664 - timestamp: 1733994553014 + size: 49872 + timestamp: 1736536152332 - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-h4e1184b_4.conda sha256: 1ed9a332d06ad595694907fad2d6d801082916c27cd5076096fda4061e6d24a8 md5: 74e8c3e4df4ceae34aa2959df4b28101 @@ -1272,9 +1272,9 @@ packages: license_family: Apache size: 70186 timestamp: 1733994496998 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.7-hd92328a_7.conda - sha256: 094cd81f1e5ba713e9e7a272ee52b5dde3ccc4842ea90f19c0354a00bbdac3d9 - md5: 02b95564257d5c3db9c06beccf711f95 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.8-h8570fcd_1.conda + sha256: ff8f08bc615d3ef6d970df80988200b3ecee76ecfa4885109cd82b30176cfda9 + md5: f21296b496cca1c1fa426b9a3b676e79 depends: - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 @@ -1285,18 +1285,18 @@ packages: - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - aws-c-s3 >=0.7.7,<0.7.8.0a0 - - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 + - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 - libgcc >=13 - libstdcxx >=13 arch: x86_64 platform: linux license: Apache-2.0 license_family: Apache - size: 354703 - timestamp: 1734177883319 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.7-h8a4e35f_7.conda - sha256: 5ba9188e0cb4e3faff9bc96774febb040aa3b802aedba29d847e00e7b5eab84e - md5: d77a9e3d7ce15399903e92825fd651b5 + size: 354328 + timestamp: 1736598991291 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.8-h92ee776_1.conda + sha256: 114ac89d3936bf801dcbd488ba0b468c7e113a407cb1ee5898259a5202b7e750 + md5: 63546051b5687f793ae977c7994e1339 depends: - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 @@ -1306,18 +1306,18 @@ packages: - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - aws-c-s3 >=0.7.7,<0.7.8.0a0 - - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 + - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 - libgcc >=13 - libstdcxx >=13 arch: aarch64 platform: linux license: Apache-2.0 license_family: Apache - size: 283154 - timestamp: 1734177845248 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.7-h19a973c_7.conda - sha256: 8269e6746eb3a5d15b732a3983888bf98dfc1f6594e95250fc8d16b43cfd5ff9 - md5: 95714136bef3e917bd5a2942d4682b20 + size: 284664 + timestamp: 1736598964131 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.8-h23176ea_1.conda + sha256: db6a31078bb82fb12044d7706239c003568273729f7ba4971c1479b7926ada82 + md5: 31fdd3ffb00f5472196fa95ef08087b7 depends: - __osx >=11.0 - aws-c-auth >=0.8.0,<0.8.1.0a0 @@ -1328,23 +1328,23 @@ packages: - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - aws-c-s3 >=0.7.7,<0.7.8.0a0 - - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 + - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 - libcxx >=18 arch: arm64 platform: osx license: Apache-2.0 license_family: Apache - size: 236249 - timestamp: 1734178020924 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-hc430e4a_4.conda - sha256: 2dc09f6f9c49127b5f96e7535b64a9c521b944d76d8b7d03d48ae80257ac1cea - md5: aeefac461bea1f126653c1285cf5af08 + size: 236269 + timestamp: 1736599024242 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-h7001638_5.conda + sha256: 849524b09865e84d6926aa814944cf71511aa4a00fffc5ad174c286d5dfac5f0 + md5: fc01d77a7f383b2915f276c73b7d0934 depends: - __glibc >=2.17,<3.0.a0 - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - - aws-crt-cpp >=0.29.7,<0.29.8.0a0 + - aws-crt-cpp >=0.29.8,<0.29.9.0a0 - libcurl >=8.11.1,<9.0a0 - libgcc >=13 - libstdcxx >=13 @@ -1354,16 +1354,16 @@ packages: platform: linux license: Apache-2.0 license_family: Apache - size: 3060561 - timestamp: 1734093737431 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h849ce1a_4.conda - sha256: 51b9e9df8cbab4a13a1b9d39d6ef5ed162aaa29c09a745810e00bbe92e1045c1 - md5: cda7747f4398be8d1fb37362815917a7 + size: 3088636 + timestamp: 1736598504343 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h90ecb4a_5.conda + sha256: 9467acd0f2df74ea7472aebdfb8b5656a8d403abad2edbce9743d6e88c94fd10 + md5: 33f86f8de1d8cd40f8fe628dc0784437 depends: - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - - aws-crt-cpp >=0.29.7,<0.29.8.0a0 + - aws-crt-cpp >=0.29.8,<0.29.9.0a0 - libcurl >=8.11.1,<9.0a0 - libgcc >=13 - libstdcxx >=13 @@ -1373,17 +1373,17 @@ packages: platform: linux license: Apache-2.0 license_family: Apache - size: 2920625 - timestamp: 1734093552712 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-he0ff2e4_4.conda - sha256: 535b970aaa13be45f8cab8205c59f044b17364111c41a227f061775a5c834e18 - md5: 0981ed87098b149bdb7d99a4a3fd0e58 + size: 2925443 + timestamp: 1736598526637 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-h794939a_5.conda + sha256: 2b1e7d5a45e82604bfdb6de63c53cf0e9495f596cfd90e644a1e67910de7f91c + md5: a2374b4182bf5b2d08b2903393d0c487 depends: - __osx >=11.0 - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - - aws-crt-cpp >=0.29.7,<0.29.8.0a0 + - aws-crt-cpp >=0.29.8,<0.29.9.0a0 - libcurl >=8.11.1,<9.0a0 - libcxx >=18 - libzlib >=1.3.1,<2.0a0 @@ -1392,8 +1392,8 @@ packages: platform: osx license: Apache-2.0 license_family: Apache - size: 2826534 - timestamp: 1734094018287 + size: 2824168 + timestamp: 1736598935034 - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda sha256: fe07debdb089a3db17f40a7f20d283d75284bb4fc269ef727b8ba6fc93f7cb5a md5: 0a8838771cc2e985cd295e01ae83baf1 @@ -2561,13 +2561,13 @@ packages: license_family: Apache size: 1178260 timestamp: 1736008642885 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-hd595efa_7_cpu.conda - build_number: 7 - sha256: 554ffa338264c1dc34d95adb7eb856d50a2f25e7fa303a1a51e4372301b7c96f - md5: 08d4aff5ee6dee9a1b9ab13fca927697 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-h9d9f30d_8_cpu.conda + build_number: 8 + sha256: f6c72ce82d145cb94a1131b68547b88056fb48158a382f9ce763286fce53ee65 + md5: 1c9caae53b14a385b59e87687adad2d6 depends: - __glibc >=2.17,<3.0.a0 - - aws-crt-cpp >=0.29.7,<0.29.8.0a0 + - aws-crt-cpp >=0.29.8,<0.29.9.0a0 - aws-sdk-cpp >=1.11.458,<1.11.459.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-identity-cpp >=1.10.0,<1.10.1.0a0 @@ -2600,14 +2600,14 @@ packages: platform: linux license: Apache-2.0 license_family: APACHE - size: 8770256 - timestamp: 1735684696564 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-hb7781cd_7_cpu.conda - build_number: 7 - sha256: f6107506bd16788560b47a4d18c1457b4df30a49334364d32613fe3f53ba6cbb - md5: 98cf7127ca7b3854c5d1c8bef1ed6e53 - depends: - - aws-crt-cpp >=0.29.7,<0.29.8.0a0 + size: 8801586 + timestamp: 1736610546493 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-h47f80e1_8_cpu.conda + build_number: 8 + sha256: bf381dfa84e94ffce715c46352dd99f6f6ace69859b0efb822500f8882be429a + md5: daceef1881b4ddc72bb5b225a122c633 + depends: + - aws-crt-cpp >=0.29.8,<0.29.9.0a0 - aws-sdk-cpp >=1.11.458,<1.11.459.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-identity-cpp >=1.10.0,<1.10.1.0a0 @@ -2634,21 +2634,21 @@ packages: - zstd >=1.5.6,<1.6.0a0 constrains: - arrow-cpp <0.0a0 - - parquet-cpp <0.0a0 - apache-arrow-proc =*=cpu + - parquet-cpp <0.0a0 arch: aarch64 platform: linux license: Apache-2.0 license_family: APACHE - size: 8026714 - timestamp: 1735685336542 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-h0ad35bc_7_cpu.conda - build_number: 7 - sha256: 4fbdd8bb89d912bf03f10f9373a8d96a1cdd7a7851e107393418a3d2715bc27e - md5: 4ba2173203f44bbf03d19aaba6ed07d3 + size: 8045923 + timestamp: 1736611764958 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-hf3eb8e5_8_cpu.conda + build_number: 8 + sha256: 766e46b45520773db93ee1a91951cc135a85544bba738e7b378d31f16097753f + md5: fdc79871e6c243b819497337215416d9 depends: - __osx >=11.0 - - aws-crt-cpp >=0.29.7,<0.29.8.0a0 + - aws-crt-cpp >=0.29.8,<0.29.9.0a0 - aws-sdk-cpp >=1.11.458,<1.11.459.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-identity-cpp >=1.10.0,<1.10.1.0a0 @@ -2679,111 +2679,111 @@ packages: platform: osx license: Apache-2.0 license_family: APACHE - size: 5506699 - timestamp: 1735682962976 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-hcb10f89_7_cpu.conda - build_number: 7 - sha256: 87ea5d6a84d922d73975dce8661fccf257e72e755175b12c30e1181a34e37987 - md5: 12d84228204c56fec6ed113288014d11 + size: 5497383 + timestamp: 1736608604724 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-hcb10f89_8_cpu.conda + build_number: 8 + sha256: 126a6e78199311d99e38b9d633ce3e0290795ac68ce3ee8a9b91436c85c4095d + md5: 544759904898499f634f8f88a9907f88 depends: - __glibc >=2.17,<3.0.a0 - - libarrow 18.1.0 hd595efa_7_cpu + - libarrow 18.1.0 h9d9f30d_8_cpu - libgcc >=13 - libstdcxx >=13 arch: x86_64 platform: linux license: Apache-2.0 license_family: APACHE - size: 612463 - timestamp: 1735684749868 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h3b568fd_7_cpu.conda - build_number: 7 - sha256: 42cbfc87096f745d565d814d65b7228c82d985f1898859d5e456016d73e81c82 - md5: 4c1d8c3feea249782148d3cd6a25392e + size: 611558 + timestamp: 1736610592458 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h3b568fd_8_cpu.conda + build_number: 8 + sha256: c94844ab1d8fafe17775161283bd1fe7ab1f93f660fc5ba0c01bd33fe3d21eaf + md5: 7a8e6a363d2f39a2f3df3f181d12692d depends: - - libarrow 18.1.0 hb7781cd_7_cpu + - libarrow 18.1.0 h47f80e1_8_cpu - libgcc >=13 - libstdcxx >=13 arch: aarch64 platform: linux license: Apache-2.0 license_family: APACHE - size: 578222 - timestamp: 1735685424850 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-hf07054f_7_cpu.conda - build_number: 7 - sha256: 86e20cebfdb4f335e98265c1b88f5053bf3e3648768a317856295846bfdbf2b4 - md5: 3eaf71fe987de13061db795e03bb1a1c + size: 579798 + timestamp: 1736611846905 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-hf07054f_8_cpu.conda + build_number: 8 + sha256: 29196dc6b2e4488f98bd8950de6333efe5d1a9d0cc62e186694946766185475e + md5: 8db96829f8e427167f450c7467a1ba44 depends: - __osx >=11.0 - - libarrow 18.1.0 h0ad35bc_7_cpu + - libarrow 18.1.0 hf3eb8e5_8_cpu - libcxx >=18 arch: arm64 platform: osx license: Apache-2.0 license_family: APACHE - size: 485185 - timestamp: 1735683071232 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-hcb10f89_7_cpu.conda - build_number: 7 - sha256: 99c12511fba79c7947f78d676eae5857659084f687f375f68bc20bd4cddb0a0e - md5: 0a81eb63d7cd150f598c752e86388d57 + size: 484442 + timestamp: 1736608695654 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-hcb10f89_8_cpu.conda + build_number: 8 + sha256: fe50edf030b5ccbadec2bf8f90d4cdf32d63ec52ba26233fc2c8bfbe43df3b15 + md5: 894a5ed78728b77c997fefeee222ac4d depends: - __glibc >=2.17,<3.0.a0 - - libarrow 18.1.0 hd595efa_7_cpu - - libarrow-acero 18.1.0 hcb10f89_7_cpu + - libarrow 18.1.0 h9d9f30d_8_cpu + - libarrow-acero 18.1.0 hcb10f89_8_cpu - libgcc >=13 - - libparquet 18.1.0 h081d1f1_7_cpu + - libparquet 18.1.0 h081d1f1_8_cpu - libstdcxx >=13 arch: x86_64 platform: linux license: Apache-2.0 license_family: APACHE - size: 587497 - timestamp: 1735684880531 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h3b568fd_7_cpu.conda - build_number: 7 - sha256: 13ba7d3d08015aa26569eca9e198e2f8b2a0cd2d9c420e41c78cc2e5d5170f26 - md5: f39f5d725c2ca94c2e7b19e2717fd4ab + size: 588032 + timestamp: 1736610711976 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h3b568fd_8_cpu.conda + build_number: 8 + sha256: bb87d8e633074c9759d93abb277d31314dc66fad741253b48e8265e186228c5b + md5: 11856da892b919cc27bd62638d701c65 depends: - - libarrow 18.1.0 hb7781cd_7_cpu - - libarrow-acero 18.1.0 h3b568fd_7_cpu + - libarrow 18.1.0 h47f80e1_8_cpu + - libarrow-acero 18.1.0 h3b568fd_8_cpu - libgcc >=13 - - libparquet 18.1.0 hfc78867_7_cpu + - libparquet 18.1.0 hfc78867_8_cpu - libstdcxx >=13 arch: aarch64 platform: linux license: Apache-2.0 license_family: APACHE - size: 560329 - timestamp: 1735685518922 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-hf07054f_7_cpu.conda - build_number: 7 - sha256: 52c5c4e9cd5f2ac91dcebb6a920ab2536febcea116ff8767e5439329d7da820b - md5: 97a2d3606682d94f7d73112e9ad684ae + size: 560571 + timestamp: 1736611941995 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-hf07054f_8_cpu.conda + build_number: 8 + sha256: bff2d39e418eadab8c522a536449ac90f070dd8e83e2bd5e67a9c3eb8ecf712f + md5: 7b3736f49b3ba299b7799aeb448cb830 depends: - __osx >=11.0 - - libarrow 18.1.0 h0ad35bc_7_cpu - - libarrow-acero 18.1.0 hf07054f_7_cpu + - libarrow 18.1.0 hf3eb8e5_8_cpu + - libarrow-acero 18.1.0 hf07054f_8_cpu - libcxx >=18 - - libparquet 18.1.0 h636d7b7_7_cpu + - libparquet 18.1.0 h636d7b7_8_cpu arch: arm64 platform: osx license: Apache-2.0 license_family: APACHE - size: 491237 - timestamp: 1735684688308 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-h08228c5_7_cpu.conda - build_number: 7 - sha256: 53ea53a06e137c2f81ebfdff3f978babb8b59e31f705a19b57056ec8754c1abf - md5: e128def53c133e8a23ac00cd4a479335 + size: 491001 + timestamp: 1736609758514 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-h08228c5_8_cpu.conda + build_number: 8 + sha256: dca372e27724904577315b8db3793e027a5c152a485e505e630a57b15634cd85 + md5: 46eaf81238da6f3ffab1f3ffdcee382e depends: - __glibc >=2.17,<3.0.a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.1.0 hd595efa_7_cpu - - libarrow-acero 18.1.0 hcb10f89_7_cpu - - libarrow-dataset 18.1.0 hcb10f89_7_cpu + - libarrow 18.1.0 h9d9f30d_8_cpu + - libarrow-acero 18.1.0 hcb10f89_8_cpu + - libarrow-dataset 18.1.0 hcb10f89_8_cpu - libgcc >=13 - libprotobuf >=5.28.3,<5.28.4.0a0 - libstdcxx >=13 @@ -2791,18 +2791,18 @@ packages: platform: linux license: Apache-2.0 license_family: APACHE - size: 521861 - timestamp: 1735684940668 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h1e9d426_7_cpu.conda - build_number: 7 - sha256: 252e2a0d8c733f36b50499786480a05a59577d617f291868149c80534c1e8ffc - md5: 6da921d9e1c4e2ab2679eeea7cbd4c82 + size: 521707 + timestamp: 1736610765240 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h1e9d426_8_cpu.conda + build_number: 8 + sha256: 1896ea00da28e10670f7ba51bb543e68a87f717e9f5692fee44268f1a13d9eee + md5: e7dc0209e065a2b51f19848cefa4b1ab depends: - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.1.0 hb7781cd_7_cpu - - libarrow-acero 18.1.0 h3b568fd_7_cpu - - libarrow-dataset 18.1.0 h3b568fd_7_cpu + - libarrow 18.1.0 h47f80e1_8_cpu + - libarrow-acero 18.1.0 h3b568fd_8_cpu + - libarrow-dataset 18.1.0 h3b568fd_8_cpu - libgcc >=13 - libprotobuf >=5.28.3,<5.28.4.0a0 - libstdcxx >=13 @@ -2810,27 +2810,27 @@ packages: platform: linux license: Apache-2.0 license_family: APACHE - size: 516014 - timestamp: 1735685565929 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-h4239455_7_cpu.conda - build_number: 7 - sha256: a45bbdd6932aed972d6c6ce30a7439aa8ec9d9b8ee5affb350d41e50abdc0127 - md5: 91927747173f65695e441346c7145e26 + size: 517189 + timestamp: 1736611989417 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-h4239455_8_cpu.conda + build_number: 8 + sha256: ae52d926ebfc8edb0728824f2918a825d39bd85a4ef27fe2b73656cfecdd7c69 + md5: f67eb19d22ba355cced8c86073ad49b1 depends: - __osx >=11.0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.1.0 h0ad35bc_7_cpu - - libarrow-acero 18.1.0 hf07054f_7_cpu - - libarrow-dataset 18.1.0 hf07054f_7_cpu + - libarrow 18.1.0 hf3eb8e5_8_cpu + - libarrow-acero 18.1.0 hf07054f_8_cpu + - libarrow-dataset 18.1.0 hf07054f_8_cpu - libcxx >=18 - libprotobuf >=5.28.3,<5.28.4.0a0 arch: arm64 platform: osx license: Apache-2.0 license_family: APACHE - size: 452385 - timestamp: 1735684993831 + size: 452161 + timestamp: 1736609917123 - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-26_linux64_openblas.conda build_number: 26 sha256: 30bd658682b124243f8e52d8edf8a19e7be1bc31e4fe4baec30a64002dc8cd0c @@ -3942,13 +3942,13 @@ packages: license_family: BSD size: 4165774 timestamp: 1730772154295 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-h081d1f1_7_cpu.conda - build_number: 7 - sha256: 55945b761130f60abdecf1551907ecfd05cb4a5958cf74d855b30c005ecb3592 - md5: b97013ef4e1dd2cf11594f06d5b5e83a +- conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-h081d1f1_8_cpu.conda + build_number: 8 + sha256: 2c6d900d4e9dd3c4000886d76d3f8a099e904667ebc6935b49428e6e9b766481 + md5: a9fa0ef309406c84b46db3a28efd761e depends: - __glibc >=2.17,<3.0.a0 - - libarrow 18.1.0 hd595efa_7_cpu + - libarrow 18.1.0 h9d9f30d_8_cpu - libgcc >=13 - libstdcxx >=13 - libthrift >=0.21.0,<0.21.1.0a0 @@ -3957,14 +3957,14 @@ packages: platform: linux license: Apache-2.0 license_family: APACHE - size: 1205598 - timestamp: 1735684849150 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-hfc78867_7_cpu.conda - build_number: 7 - sha256: 6dff9bbe731dc2cefe96bd9c7981d2cbef2b564a3152840a29c9b6a493ea50d9 - md5: 184bec7a9392ab6ba8134041e81971d6 + size: 1207011 + timestamp: 1736610684584 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-hfc78867_8_cpu.conda + build_number: 8 + sha256: 2ed6b9eac4504051ddc094ea3f3a2b3198d4d25a443a96fa2971d8075d790c31 + md5: 9a907190c9e2c6bf1a29569700218f0b depends: - - libarrow 18.1.0 hb7781cd_7_cpu + - libarrow 18.1.0 h47f80e1_8_cpu - libgcc >=13 - libstdcxx >=13 - libthrift >=0.21.0,<0.21.1.0a0 @@ -3973,15 +3973,15 @@ packages: platform: linux license: Apache-2.0 license_family: APACHE - size: 1117825 - timestamp: 1735685495511 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-h636d7b7_7_cpu.conda - build_number: 7 - sha256: bf42e43542a90edd86ba5aa5fd4543671625f1bc35f62be32688f00e18bae990 - md5: 93de9ba66a20db32a2646d313794b3a8 + size: 1117465 + timestamp: 1736611918180 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-h636d7b7_8_cpu.conda + build_number: 8 + sha256: 4991519ef4264abc7160e9faaf8ff01d4731bf1497076bef1895d6c366f796eb + md5: b8bd275a49877fdec62ff787818a869d depends: - __osx >=11.0 - - libarrow 18.1.0 h0ad35bc_7_cpu + - libarrow 18.1.0 hf3eb8e5_8_cpu - libcxx >=18 - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 @@ -3989,8 +3989,8 @@ packages: platform: osx license: Apache-2.0 license_family: APACHE - size: 873251 - timestamp: 1735684582558 + size: 873593 + timestamp: 1736609701839 - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.45-h943b412_0.conda sha256: b8f5b5ba9a14dedf7c97c01300de492b1b52b68eacbc3249a13fdbfa82349a2f md5: 85cbdaacad93808395ac295b5667d25b @@ -4764,47 +4764,47 @@ packages: license_family: BSD size: 24048 timestamp: 1733219945697 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011105-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011205-release.conda noarch: python - sha256: 4bd3331f281b0d42b57e7e5d28eee3650cb52ffb3f9c381f349255034ab4d011 - md5: 9a12141b0beb110b83d4ae256d8de1b0 + sha256: ce8b3d98a933cb0fdaa2e6e293fc940d51aaae273c2a6f14194ac45230ab701a + md5: d796fa41a5dd97e2bc1019b10497a31b depends: - - max-core ==25.1.0.dev2025011105 release - - max-python >=25.1.0.dev2025011105,<26.0a0 - - mojo-jupyter ==25.1.0.dev2025011105 release - - mblack ==25.1.0.dev2025011105 release + - max-core ==25.1.0.dev2025011205 release + - max-python >=25.1.0.dev2025011205,<26.0a0 + - mojo-jupyter ==25.1.0.dev2025011205 release + - mblack ==25.1.0.dev2025011205 release license: LicenseRef-Modular-Proprietary size: 9919 - timestamp: 1736572603494 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025011105-release.conda - sha256: 45fdbcfa2c105f01e3c06823e072f2b7b3ceeafe21188973a3f64a87c43c29e6 - md5: ba267ab335859f14f9c0d887d4a83f14 + timestamp: 1736659018393 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025011205-release.conda + sha256: 6bbe93bf6df795ec42e609b4a9e52d64bdaa948c5527c16408930b7d699244d0 + md5: 8dedeccd5df7d21651ce7ba876ad3db9 depends: - - mblack ==25.1.0.dev2025011105 release + - mblack ==25.1.0.dev2025011205 release license: LicenseRef-Modular-Proprietary - size: 244035937 - timestamp: 1736572608009 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025011105-release.conda - sha256: 23794990d901f563fd2492483d4f5e0b1b91ed616028bf70bd9e2eaace6bd56b - md5: e8f626acac2d17a591ac8353ba41f5d0 + size: 244387099 + timestamp: 1736659018391 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025011205-release.conda + sha256: 97f364dc4051c44d2fdd77a2a5d314b6b460fef5e1ae77ba5e88d7c7024d8a15 + md5: acd35656dff9277c8401424aeb44ed58 depends: - - mblack ==25.1.0.dev2025011105 release + - mblack ==25.1.0.dev2025011205 release license: LicenseRef-Modular-Proprietary - size: 247708765 - timestamp: 1736572603492 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025011105-release.conda - sha256: 8cc71a4a35f96867f4131ddca60d084a8df937ec0f551b62601adc9202788a82 - md5: 4b8d6a0afbcebe7c2e5dc2ccd30c55a8 + size: 248031826 + timestamp: 1736659028471 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025011205-release.conda + sha256: ba42127f64b3fad135aad191f14b68a87a5820d78355b4ab9a95aabb40e183c4 + md5: 2078ddc332986f28c8b67c413aa0c6e9 depends: - - mblack ==25.1.0.dev2025011105 release + - mblack ==25.1.0.dev2025011205 release license: LicenseRef-Modular-Proprietary - size: 206225127 - timestamp: 1736572820782 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025011105-3.12release.conda - sha256: 621688d96524cbf32ed8f33e4d572043973beb875708e69af36735ee730cc6c4 - md5: bb2eb7a24245cd62aed0b9d3e3e85604 + size: 206561289 + timestamp: 1736660251821 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025011205-3.12release.conda + sha256: f4a145b7b67707fa4053ebc992ecce87190cf34039cad29457c7b9474d0c3e13 + md5: ace652c55e958db1e320c5423fe5c320 depends: - - max-core ==25.1.0.dev2025011105 release + - max-core ==25.1.0.dev2025011205 release - python 3.12.* - fastapi - httpx @@ -4825,13 +4825,13 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 124216697 - timestamp: 1736572608017 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025011105-3.12release.conda - sha256: fd2587af6018758078516561bfdb54d8175207edd4ce6dce211aeb9dffbfd967 - md5: 8d1481a3abe8cd46a76797465f6a9eb6 + size: 124320649 + timestamp: 1736659018401 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025011205-3.12release.conda + sha256: fcbf3f2315a28485f0d5338ac3cf4a26540e30bc033f21a7789199c2a94ab4c1 + md5: 43fa4a1c11fe12b55f984e32501a1a09 depends: - - max-core ==25.1.0.dev2025011105 release + - max-core ==25.1.0.dev2025011205 release - python 3.12.* - fastapi - httpx @@ -4852,13 +4852,13 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 127983766 - timestamp: 1736572603503 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025011105-3.12release.conda - sha256: 5d6590e84cf64008fd48066ef10138c48cdbb6d6e2a1d3de01e71270d8d8d966 - md5: 92aa60fa7fe761433d03416f21c8d912 + size: 128073303 + timestamp: 1736659028481 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025011205-3.12release.conda + sha256: c6b332a826824959a196a09095bca25ff614ec2b05939683f2971160dd1a0b25 + md5: 1cf2f5ed4307f35ea22c392734a54751 depends: - - max-core ==25.1.0.dev2025011105 release + - max-core ==25.1.0.dev2025011205 release - python 3.12.* - fastapi - httpx @@ -4879,12 +4879,12 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 110625116 - timestamp: 1736572820784 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011105-release.conda + size: 110696805 + timestamp: 1736660251823 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011205-release.conda noarch: python - sha256: f447d269d29bb49fd97275f623632a569638c31b40e88489367df3d7d4ce90e2 - md5: 32c691c7fc2c6a218e1ce2272965a101 + sha256: a31c5c6330eb6638ee1698cea23e0bdd9c1acc1560c37437cda156a4913ee27f + md5: aea163e4e020e7ab6c44476abb1e5c2b depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -4894,8 +4894,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130815 - timestamp: 1736572603499 + size: 130806 + timestamp: 1736659018397 - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda sha256: 78c1bbe1723449c52b7a9df1af2ee5f005209f67e40b6e1d3c7619127c43b1c7 md5: 592132998493b3ff25fd7479396e8351 @@ -4905,18 +4905,18 @@ packages: license_family: MIT size: 14465 timestamp: 1733255681319 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011105-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011205-release.conda noarch: python - sha256: 05af473b2b4983829660ba70eb0cb6607f019c4f4b8d107350ea491c6bd8d1cd - md5: 036f5ddfbcce66b3f9972cebf1cec107 + sha256: 42260d58dd242c60715f8fc8c826860087566cb3946a0bcb6a6ba38a6b213014 + md5: 437e3994be83b2370d71635c5c5b616a depends: - - max-core ==25.1.0.dev2025011105 release + - max-core ==25.1.0.dev2025011205 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22937 - timestamp: 1736572603499 + size: 22934 + timestamp: 1736659018398 - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py312h178313f_2.conda sha256: b05bc8252a6e957bf4a776ed5e0e61d1ba88cdc46ccb55890c72cc58b10371f4 md5: 5b5e3267d915a107eca793d52e1b780a @@ -6816,6 +6816,7 @@ packages: arch: x86_64 platform: linux license: MIT + license_family: MIT size: 410192 timestamp: 1736550568524 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/watchfiles-1.0.4-py312h8cbf658_0.conda @@ -6832,6 +6833,7 @@ packages: arch: aarch64 platform: linux license: MIT + license_family: MIT size: 403791 timestamp: 1736550743174 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/watchfiles-1.0.4-py312hcd83bfe_0.conda @@ -6848,6 +6850,7 @@ packages: arch: arm64 platform: osx license: MIT + license_family: MIT size: 363822 timestamp: 1736550859472 - conda: https://conda.anaconda.org/conda-forge/linux-64/websockets-14.1-py312h66e93f0_0.conda From 6926e253c4c35b1e801bb221681e57d02e1cc9b4 Mon Sep 17 00:00:00 2001 From: Connor Gray Date: Sun, 12 Jan 2025 15:18:24 -0600 Subject: [PATCH 203/509] [stdlib] feat: Add `String` constructor from `Char` MODULAR_ORIG_COMMIT_REV_ID: 487aff5c32e10728930468c3876f75002e316667 --- docs/changelog.md | 1 + stdlib/src/collections/string/string.mojo | 51 ++++++++++++------- .../test/collections/string/test_string.mojo | 5 ++ 3 files changed, 38 insertions(+), 19 deletions(-) diff --git a/docs/changelog.md b/docs/changelog.md index 23979ca0ff..b0951f6618 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -99,6 +99,7 @@ what we publish. functionality. - Added `Char`, for representing and storing single Unicode characters. + - Added `String` constructor from `Char` - `chr(Int)` will now abort if given a codepoint value that is not a valid `Char`. diff --git a/stdlib/src/collections/string/string.mojo b/stdlib/src/collections/string/string.mojo index 984637758f..cca7e2c210 100644 --- a/stdlib/src/collections/string/string.mojo +++ b/stdlib/src/collections/string/string.mojo @@ -104,11 +104,7 @@ fn chr(c: Int) -> String: # SAFETY: We just checked that `char` is present. var char = char_opt.unsafe_value() - var num_bytes = char.utf8_byte_length() - var ptr = UnsafePointer[UInt8].alloc(num_bytes + 1) - _ = char.unsafe_write_utf8(ptr) - ptr[num_bytes] = 0 - return String(ptr=ptr, length=num_bytes + 1) + return String(char) # ===----------------------------------------------------------------------=== # @@ -666,6 +662,20 @@ struct String( # Life cycle methods # ===------------------------------------------------------------------=== # + @always_inline + fn __init__(out self): + """Construct an uninitialized string.""" + self._buffer = Self._buffer_type() + + @always_inline + fn __init__(out self, *, capacity: Int): + """Construct an uninitialized string with the given capacity. + + Args: + capacity: The capacity of the string. + """ + self._buffer = Self._buffer_type(capacity=capacity) + @always_inline fn __init__(out self, owned buffer: List[UInt8, *_]): """Construct a string from a buffer of bytes without copying the @@ -690,20 +700,6 @@ struct String( ) self._buffer = buffer^._cast_hint_trivial_type[True]() - @always_inline - fn __init__(out self): - """Construct an uninitialized string.""" - self._buffer = Self._buffer_type() - - @always_inline - fn __init__(out self, *, capacity: Int): - """Construct an uninitialized string with the given capacity. - - Args: - capacity: The capacity of the string. - """ - self._buffer = Self._buffer_type(capacity=capacity) - fn copy(self) -> Self: """Explicitly copy the provided value. @@ -712,6 +708,23 @@ struct String( """ return self # Just use the implicit copyinit. + fn __init__(out self, char: Char): + """Construct a string from a character. + + Args: + char: The character to construct this string from. + + Notes: + This will allocate a new string holding the UTF-8 encoded + representation of `char`. + """ + var char_len = char.utf8_byte_length() + var buffer = List[Byte](capacity=char_len + 1) + _ = char.unsafe_write_utf8(buffer.unsafe_ptr()) + buffer.unsafe_ptr()[char_len] = 0 + buffer.size = char_len + 1 + self = String(buffer^) + fn __init__(out self, strref: StringRef): """Construct a string from a StringRef object. diff --git a/stdlib/test/collections/string/test_string.mojo b/stdlib/test/collections/string/test_string.mojo index 12ccb20871..7828ba1de7 100644 --- a/stdlib/test/collections/string/test_string.mojo +++ b/stdlib/test/collections/string/test_string.mojo @@ -75,6 +75,11 @@ def test_constructors(): var s4 = String(capacity=1) assert_equal(s4._buffer.capacity, 1) + # Construction from Char + var s5 = String(Char(65)) + assert_equal(s4._buffer.capacity, 1) + assert_equal(s5, "A") + def test_copy(): var s0 = String("find") From 61f5224eb18082cfaab566ce7ae9f6d0d9ea3baf Mon Sep 17 00:00:00 2001 From: Connor Gray Date: Sun, 12 Jan 2025 16:30:12 -0600 Subject: [PATCH 204/509] =?UTF-8?q?[stdlib]=20feat:=20Impl=20`EqualityComp?= =?UTF-8?q?arable`=20and=20`Stringable`=20for=20`Char`=20(Part=208=20?= =?UTF-8?q?=C2=BE=20=F0=9F=A7=99/X)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit MODULAR_ORIG_COMMIT_REV_ID: 1ff1e6c411e76eae09c14f1b4674349ca997ad70 --- docs/changelog.md | 2 + stdlib/src/builtin/char.mojo | 66 +++++++++++++++++++++++------- stdlib/test/builtin/test_char.mojo | 17 +++++++- 3 files changed, 70 insertions(+), 15 deletions(-) diff --git a/docs/changelog.md b/docs/changelog.md index b0951f6618..12d44a0173 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -99,6 +99,8 @@ what we publish. functionality. - Added `Char`, for representing and storing single Unicode characters. + - `Char` implements `CollectionElement`, `EqualityComparable`, `Intable`, and + `Stringable`. - Added `String` constructor from `Char` - `chr(Int)` will now abort if given a codepoint value that is not a valid diff --git a/stdlib/src/builtin/char.mojo b/stdlib/src/builtin/char.mojo index 3e07032117..bf7bcf7b5e 100644 --- a/stdlib/src/builtin/char.mojo +++ b/stdlib/src/builtin/char.mojo @@ -36,7 +36,7 @@ fn _is_unicode_scalar_value(codepoint: UInt32) -> Bool: @value -struct Char(CollectionElement): +struct Char(CollectionElement, EqualityComparable, Intable, Stringable): """A single textual character. This type represents a single textual character. Specifically, this type @@ -53,19 +53,6 @@ struct Char(CollectionElement): var _scalar_value: UInt32 """The Unicode scalar value represented by this type.""" - # ===-------------------------------------------------------------------===# - # Trait implementations - # ===-------------------------------------------------------------------===# - - @always_inline - fn __int__(self) -> Int: - """Returns the numeric value of this scalar value as an integer. - - Returns: - The numeric value of this scalar value as an integer. - """ - return Int(self._scalar_value) - # ===-------------------------------------------------------------------===# # Life cycle methods # ===-------------------------------------------------------------------===# @@ -218,6 +205,57 @@ struct Char(CollectionElement): return char, Int(num_bytes) + # ===-------------------------------------------------------------------===# + # Operator dunders + # ===-------------------------------------------------------------------===# + + fn __eq__(self, other: Self) -> Bool: + """Return True if this character has the same codepoint value as `other`. + + Args: + other: The codepoint value to compare against. + + Returns: + True if this character and `other` have the same codepoint value; + False otherwise. + """ + return Int(self) == Int(other) + + fn __ne__(self, other: Self) -> Bool: + """Return True if this character has a different codepoint value from + `other`. + + Args: + other: The codepoint value to compare against. + + Returns: + True if this character and `other` have different codepoint values; + False otherwise. + """ + return Int(self) != Int(other) + + # ===-------------------------------------------------------------------===# + # Trait implementations + # ===-------------------------------------------------------------------===# + + @always_inline + fn __int__(self) -> Int: + """Returns the numeric value of this scalar value as an integer. + + Returns: + The numeric value of this scalar value as an integer. + """ + return Int(self._scalar_value) + + @always_inline + fn __str__(self) -> String: + """Formats this `Char` as a single-character string. + + Returns: + A string containing this single character. + """ + return String(self) + # ===-------------------------------------------------------------------===# # Methods # ===-------------------------------------------------------------------===# diff --git a/stdlib/test/builtin/test_char.mojo b/stdlib/test/builtin/test_char.mojo index 70bcf8d706..346467d3e2 100644 --- a/stdlib/test/builtin/test_char.mojo +++ b/stdlib/test/builtin/test_char.mojo @@ -12,7 +12,7 @@ # ===----------------------------------------------------------------------=== # # RUN: %mojo %s -from testing import assert_true, assert_false, assert_equal +from testing import assert_true, assert_false, assert_equal, assert_not_equal def test_char_validity(): @@ -50,6 +50,19 @@ def test_char_from_u8(): assert_false(c2.is_ascii()) +def test_char_comparison(): + assert_equal(Char(0), Char(0)) + assert_not_equal(Char(0), Char(1)) + + +def test_char_formatting(): + assert_equal(str(Char(0)), "\0") + assert_equal(str(Char(32)), " ") + assert_equal(str(Char(97)), "a") + assert_equal(str(Char.from_u32(0x00BE).value()), "¾") + assert_equal(str(Char.from_u32(0x1F642).value()), "🙂") + + def test_char_properties(): assert_true(Char.from_u32(0).value().is_ascii()) # Last ASCII codepoint. @@ -177,6 +190,8 @@ def test_char_comptime(): def main(): test_char_validity() test_char_from_u8() + test_char_comparison() + test_char_formatting() test_char_properties() test_char_is_posix_space() test_char_utf8_encoding() From 94298c84730c508bf586ba69443ced52a2253415 Mon Sep 17 00:00:00 2001 From: Connor Gray Date: Sun, 12 Jan 2025 17:04:45 -0600 Subject: [PATCH 205/509] [stdlib] refactor: Use `Char` in Unicode casing logic cleanup + add `Char.to_u32()` MODULAR_ORIG_COMMIT_REV_ID: 20261f437d464f55ad3d7c55ec643265c5cdde03 --- docs/changelog.md | 1 + stdlib/src/builtin/char.mojo | 15 ++- stdlib/src/collections/string/_unicode.mojo | 118 ++++++++++++------ .../test/collections/string/test_unicode.mojo | 47 +++++++ 4 files changed, 142 insertions(+), 39 deletions(-) create mode 100644 stdlib/test/collections/string/test_unicode.mojo diff --git a/docs/changelog.md b/docs/changelog.md index 12d44a0173..2fea5208c5 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -102,6 +102,7 @@ what we publish. - `Char` implements `CollectionElement`, `EqualityComparable`, `Intable`, and `Stringable`. - Added `String` constructor from `Char` + - `Char` can be converted to `UInt32` via `Char.to_u32()`. - `chr(Int)` will now abort if given a codepoint value that is not a valid `Char`. diff --git a/stdlib/src/builtin/char.mojo b/stdlib/src/builtin/char.mojo index bf7bcf7b5e..863a046442 100644 --- a/stdlib/src/builtin/char.mojo +++ b/stdlib/src/builtin/char.mojo @@ -219,7 +219,7 @@ struct Char(CollectionElement, EqualityComparable, Intable, Stringable): True if this character and `other` have the same codepoint value; False otherwise. """ - return Int(self) == Int(other) + return self.to_u32() == other.to_u32() fn __ne__(self, other: Self) -> Bool: """Return True if this character has a different codepoint value from @@ -232,7 +232,7 @@ struct Char(CollectionElement, EqualityComparable, Intable, Stringable): True if this character and `other` have different codepoint values; False otherwise. """ - return Int(self) != Int(other) + return self.to_u32() != other.to_u32() # ===-------------------------------------------------------------------===# # Trait implementations @@ -318,6 +318,17 @@ struct Char(CollectionElement, EqualityComparable, Intable, Stringable): or c == `\x1e` ) + @always_inline + fn to_u32(self) -> UInt32: + """Returns the numeric value of this scalar value as an unsigned 32-bit + integer. + + Returns: + The numeric value of this scalar value as an unsigned 32-bit + integer. + """ + return self._scalar_value + @always_inline fn unsafe_write_utf8(self, ptr: UnsafePointer[Byte]) -> UInt: """Shift unicode to utf8 representation. diff --git a/stdlib/src/collections/string/_unicode.mojo b/stdlib/src/collections/string/_unicode.mojo index 55fd84018a..a066930c7f 100644 --- a/stdlib/src/collections/string/_unicode.mojo +++ b/stdlib/src/collections/string/_unicode.mojo @@ -12,37 +12,38 @@ # ===----------------------------------------------------------------------=== # from memory import UnsafePointer, memcpy +from memory import Span from collections.string._unicode_lookups import * -fn _uppercase_mapping_index(rune: Int) -> Int: +fn _uppercase_mapping_index(rune: Char) -> Int: """Return index for upper case mapping or -1 if no mapping is given.""" return _to_index[has_uppercase_mapping](rune) -fn _uppercase_mapping2_index(rune: Int) -> Int: +fn _uppercase_mapping2_index(rune: Char) -> Int: """Return index for upper case mapping converting the rune to 2 runes, or -1 if no mapping is given. """ return _to_index[has_uppercase_mapping2](rune) -fn _uppercase_mapping3_index(rune: Int) -> Int: +fn _uppercase_mapping3_index(rune: Char) -> Int: """Return index for upper case mapping converting the rune to 3 runes, or -1 if no mapping is given. """ return _to_index[has_uppercase_mapping3](rune) -fn _lowercase_mapping_index(rune: Int) -> Int: +fn _lowercase_mapping_index(rune: Char) -> Int: """Return index for lower case mapping or -1 if no mapping is given.""" return _to_index[has_lowercase_mapping](rune) @always_inline -fn _to_index[lookup: List[UInt32, **_]](rune: Int) -> Int: +fn _to_index[lookup: List[UInt32, **_]](rune: Char) -> Int: """Find index of rune in lookup with binary search. Returns -1 if not found.""" - var result = lookup._binary_search_index(UInt32(rune)) + var result = lookup._binary_search_index(rune.to_u32()) if result: return result.unsafe_value() @@ -50,6 +51,60 @@ fn _to_index[lookup: List[UInt32, **_]](rune: Int) -> Int: return -1 +# TODO: +# Refactor this to return a Span[Char, StaticConstantOrigin], so that the +# return `UInt` count and fixed-size `InlineArray` are not necessary. +fn _get_uppercase_mapping( + char: Char, +) -> Optional[Tuple[UInt, InlineArray[Char, 3]]]: + """Returns the 1, 2, or 3 character sequence that is the uppercase form of + `char`. + + Returns None if `char` does not have an uppercase equivalent. + """ + var array = InlineArray[Char, 3](fill=Char(0)) + + var index1 = _uppercase_mapping_index(char) + if index1 != -1: + var rune = uppercase_mapping[index1] + array[0] = Char(unsafe_unchecked_codepoint=rune) + return Tuple(UInt(1), array) + + var index2 = _uppercase_mapping2_index(char) + if index2 != -1: + var runes = uppercase_mapping2[index2] + array[0] = Char(unsafe_unchecked_codepoint=runes[0]) + array[1] = Char(unsafe_unchecked_codepoint=runes[1]) + return Tuple(UInt(2), array) + + var index3 = _uppercase_mapping3_index(char) + if index3 != -1: + var runes = uppercase_mapping3[index3] + array[0] = Char(unsafe_unchecked_codepoint=runes[0]) + array[1] = Char(unsafe_unchecked_codepoint=runes[1]) + array[2] = Char(unsafe_unchecked_codepoint=runes[2]) + return Tuple(UInt(3), array) + + return None + + +fn _get_lowercase_mapping(char: Char) -> Optional[Char]: + var index: Optional[UInt] = has_lowercase_mapping._binary_search_index( + char.to_u32() + ) + + if index: + # SAFETY: We just checked that `result` is present. + var codepoint = lowercase_mapping[index.unsafe_value()] + + # SAFETY: + # We know this is a valid `Char` because the mapping data tables + # contain only valid codepoints. + return Char(unsafe_unchecked_codepoint=codepoint) + else: + return None + + fn is_uppercase(s: StringSlice) -> Bool: """Returns True if all characters in the string are uppercase, and there is at least one cased character. @@ -63,7 +118,7 @@ fn is_uppercase(s: StringSlice) -> Bool: """ var found = False for c in s: - var rune = ord(c) + var rune = Char.ord(c) var index = _lowercase_mapping_index(rune) if index != -1: found = True @@ -93,7 +148,7 @@ fn is_lowercase(s: StringSlice) -> Bool: """ var found = False for c in s: - var rune = ord(c) + var rune = Char.ord(c) var index = _uppercase_mapping_index(rune) if index != -1: found = True @@ -112,12 +167,6 @@ fn is_lowercase(s: StringSlice) -> Bool: return found -fn _write_rune(rune: UInt32, p: UnsafePointer[UInt8]) -> Int: - """Write rune as UTF-8 into provided pointer. Return number of added bytes. - """ - return Char(unsafe_unchecked_codepoint=rune).unsafe_write_utf8(p) - - fn to_lowercase(s: StringSlice) -> String: """Returns a new string with all characters converted to uppercase. @@ -134,15 +183,16 @@ fn to_lowercase(s: StringSlice) -> String: var output_offset = 0 while input_offset < s.byte_length(): var rune_and_size = Char.unsafe_decode_utf8_char(input + input_offset) - var index = _lowercase_mapping_index(Int(rune_and_size[0])) - if index == -1: + var lowercase_char_opt = _get_lowercase_mapping(rune_and_size[0]) + if lowercase_char_opt is None: memcpy( output + output_offset, input + input_offset, rune_and_size[1] ) output_offset += rune_and_size[1] else: - output_offset += _write_rune( - lowercase_mapping[index], output + output_offset + var lower_char: Char = lowercase_char_opt.unsafe_value() + output_offset += lower_char.unsafe_write_utf8( + output + output_offset ) input_offset += rune_and_size[1] @@ -179,26 +229,20 @@ fn to_uppercase(s: StringSlice) -> String: var output_offset = 0 while input_offset < s.byte_length(): var rune_and_size = Char.unsafe_decode_utf8_char(input + input_offset) - var index = _uppercase_mapping_index(Int(rune_and_size[0])) - var index2 = _uppercase_mapping2_index( - Int(rune_and_size[0]) - ) if index == -1 else -1 - var index3 = _uppercase_mapping3_index( - Int(rune_and_size[0]) - ) if index == -1 and index2 == -1 else -1 - if index != -1: - output_offset += _write_rune( - uppercase_mapping[index], output + output_offset + + var uppercase_replacement_opt = _get_uppercase_mapping(rune_and_size[0]) + + if uppercase_replacement_opt: + # A given character can be replaced with a sequence of characters + # up to 3 characters in length. A fixed size `Char` array is + # returned, along with a `count` (1, 2, or 3) of how many + # replacement characters are in the uppercase replacement sequence. + count, uppercase_replacement_chars = ( + uppercase_replacement_opt.unsafe_value() ) - elif index2 != -1: - var runes = uppercase_mapping2[index2] - output_offset += _write_rune(runes[0], output + output_offset) - output_offset += _write_rune(runes[1], output + output_offset) - elif index3 != -1: - var runes = uppercase_mapping3[index3] - output_offset += _write_rune(runes[0], output + output_offset) - output_offset += _write_rune(runes[1], output + output_offset) - output_offset += _write_rune(runes[2], output + output_offset) + for char_idx in range(count): + var char: Char = uppercase_replacement_chars[char_idx] + output_offset += char.unsafe_write_utf8(output + output_offset) else: memcpy( output + output_offset, input + input_offset, rune_and_size[1] diff --git a/stdlib/test/collections/string/test_unicode.mojo b/stdlib/test/collections/string/test_unicode.mojo new file mode 100644 index 0000000000..142962118c --- /dev/null +++ b/stdlib/test/collections/string/test_unicode.mojo @@ -0,0 +1,47 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2024, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # +# RUN: %mojo %s + +from collections import InlineArray +from collections.string._unicode import _get_uppercase_mapping + +from testing import assert_equal + + +def test_uppercase_conversion(): + # a -> A + count1, chars1 = _get_uppercase_mapping(Char(97)).value() + assert_equal(count1, 1) + assert_equal(chars1[0], Char(65)) + assert_equal(chars1[1], Char(0)) + assert_equal(chars1[2], Char(0)) + + # ß -> SS + count2, chars2 = _get_uppercase_mapping(Char.from_u32(0xDF).value()).value() + assert_equal(count2, 2) + assert_equal(chars2[0], Char.from_u32(0x53).value()) + assert_equal(chars2[1], Char.from_u32(0x53).value()) + assert_equal(chars2[2], Char(0)) + + # ΐ -> Ϊ́ + count3, chars3 = _get_uppercase_mapping( + Char.from_u32(0x390).value() + ).value() + assert_equal(count3, 3) + assert_equal(chars3[0], Char.from_u32(0x0399).value()) + assert_equal(chars3[1], Char.from_u32(0x0308).value()) + assert_equal(chars3[2], Char.from_u32(0x0301).value()) + + +def main(): + test_uppercase_conversion() From 2c230c1fd425f17b058bdcb9079d5a20f98df7d5 Mon Sep 17 00:00:00 2001 From: Connor Gray Date: Sun, 12 Jan 2025 20:07:40 -0600 Subject: [PATCH 206/509] [stdlib] cleanup: Refactor Unicode casing logic to use List This logic was juggling a data pointer, an offset (the size), and a capacity. That's exactly what `List` manages, so rewrite this to use `List`, improving the readability and letting us reuse functionality like `List.reserve()`. MODULAR_ORIG_COMMIT_REV_ID: 2026b46bb96bdfa76d54035bc8d4ed7e06fe088c --- stdlib/src/collections/list.mojo | 42 ++++++++++- stdlib/src/collections/string/_unicode.mojo | 81 ++++++++++----------- 2 files changed, 78 insertions(+), 45 deletions(-) diff --git a/stdlib/src/collections/list.mojo b/stdlib/src/collections/list.mojo index 2350d21209..3c488d3388 100644 --- a/stdlib/src/collections/list.mojo +++ b/stdlib/src/collections/list.mojo @@ -505,7 +505,7 @@ struct List[T: CollectionElement, hint_trivial_type: Bool = False]( """ if self.size >= self.capacity: self._realloc(self.capacity * 2 | Int(self.capacity == 0)) - (self.data + self.size).init_pointee_move(value^) + self._unsafe_next_uninit_ptr().init_pointee_move(value^) self.size += 1 fn insert(mut self, i: Int, owned value: T): @@ -611,7 +611,7 @@ struct List[T: CollectionElement, hint_trivial_type: Bool = False]( If there is no capacity left, resizes to `len(self) + value.size`. """ self.reserve(self.size + value.size) - (self.data + self.size).store(value) + self._unsafe_next_uninit_ptr().store(value) self.size += value.size fn extend[ @@ -633,7 +633,7 @@ struct List[T: CollectionElement, hint_trivial_type: Bool = False]( debug_assert(count <= value.size, "count must be <= value.size") self.reserve(self.size + count) var v_ptr = UnsafePointer.address_of(value).bitcast[Scalar[D]]() - memcpy(self.data + self.size, v_ptr, count) + memcpy(self._unsafe_next_uninit_ptr(), v_ptr, count) self.size += count fn extend[ @@ -651,7 +651,7 @@ struct List[T: CollectionElement, hint_trivial_type: Bool = False]( If there is no capacity left, resizes to `len(self) + len(value)`. """ self.reserve(self.size + len(value)) - memcpy(self.data + self.size, value.unsafe_ptr(), len(value)) + memcpy(self._unsafe_next_uninit_ptr(), value.unsafe_ptr(), len(value)) self.size += len(value) fn pop(mut self, i: Int = -1) -> T: @@ -1032,6 +1032,40 @@ struct List[T: CollectionElement, hint_trivial_type: Bool = False]( """ return self.data + @always_inline + fn _unsafe_next_uninit_ptr( + ref self, + ) -> UnsafePointer[ + T, + mut = Origin(__origin_of(self)).is_mutable, + origin = __origin_of(self), + ]: + """Retrieves a pointer to the next uninitialized element position. + + This returns a pointer that points to the element position immediately + after the last initialized element. + + This is equivalent to `list.unsafe_ptr() + len(list)`. + + # Safety + + - This pointer MUST not be used to read or write memory beyond the + allocated capacity of this list. + - This pointer may not be used to initialize non-contiguous elements. + - Ensure that `List.size` is updated to reflect the new number of + initialized elements, otherwise elements may be unexpectedly + overwritten or not destroyed correctly. + """ + debug_assert( + self.capacity > 0 and self.capacity > self.size, + ( + "safety violation: Insufficient capacity to retrieve pointer to" + " next uninitialized element" + ), + ) + + return self.data + self.size + fn _cast_hint_trivial_type[ hint_trivial_type: Bool ](owned self) -> List[T, hint_trivial_type]: diff --git a/stdlib/src/collections/string/_unicode.mojo b/stdlib/src/collections/string/_unicode.mojo index a066930c7f..e96dff1260 100644 --- a/stdlib/src/collections/string/_unicode.mojo +++ b/stdlib/src/collections/string/_unicode.mojo @@ -177,40 +177,36 @@ fn to_lowercase(s: StringSlice) -> String: A new string where cased letters have been converted to lowercase. """ var input = s.unsafe_ptr() - var capacity = (s.byte_length() >> 1) * 3 + 1 - var output = UnsafePointer[UInt8].alloc(capacity) + var output = List[Byte](capacity=_estimate_needed_size(s.byte_length())) var input_offset = 0 - var output_offset = 0 while input_offset < s.byte_length(): var rune_and_size = Char.unsafe_decode_utf8_char(input + input_offset) var lowercase_char_opt = _get_lowercase_mapping(rune_and_size[0]) if lowercase_char_opt is None: memcpy( - output + output_offset, input + input_offset, rune_and_size[1] + output._unsafe_next_uninit_ptr(), + input + input_offset, + rune_and_size[1], ) - output_offset += rune_and_size[1] + output.size += rune_and_size[1] else: var lower_char: Char = lowercase_char_opt.unsafe_value() - output_offset += lower_char.unsafe_write_utf8( - output + output_offset + output.size += lower_char.unsafe_write_utf8( + output._unsafe_next_uninit_ptr() ) input_offset += rune_and_size[1] - if output_offset >= ( - capacity - 5 - ): # check if we need to resize the ouput - capacity += ((s.byte_length() - input_offset) >> 1) * 3 + 1 - var new_output = UnsafePointer[UInt8].alloc(capacity) - memcpy(new_output, output, output_offset) - output.free() - output = new_output - - output[output_offset] = 0 - var list = List[UInt8]( - ptr=output, length=(output_offset + 1), capacity=capacity - ) - return String(list) + # Check if we need to reserve additional capacity. + if output.size >= output.capacity - 5: + output.reserve( + output.capacity + + _estimate_needed_size(s.byte_length() - input_offset) + ) + + # Add NUL terminator + output.append(0) + return String(output^) fn to_uppercase(s: StringSlice) -> String: @@ -223,10 +219,8 @@ fn to_uppercase(s: StringSlice) -> String: A new string where cased letters have been converted to uppercase. """ var input = s.unsafe_ptr() - var capacity = (s.byte_length() >> 1) * 3 + 1 - var output = UnsafePointer[UInt8].alloc(capacity) + var output = List[Byte](capacity=_estimate_needed_size(s.byte_length())) var input_offset = 0 - var output_offset = 0 while input_offset < s.byte_length(): var rune_and_size = Char.unsafe_decode_utf8_char(input + input_offset) @@ -242,26 +236,31 @@ fn to_uppercase(s: StringSlice) -> String: ) for char_idx in range(count): var char: Char = uppercase_replacement_chars[char_idx] - output_offset += char.unsafe_write_utf8(output + output_offset) + output.size += char.unsafe_write_utf8( + output._unsafe_next_uninit_ptr() + ) else: memcpy( - output + output_offset, input + input_offset, rune_and_size[1] + output._unsafe_next_uninit_ptr(), + input + input_offset, + rune_and_size[1], ) - output_offset += rune_and_size[1] + output.size += rune_and_size[1] input_offset += rune_and_size[1] - if output_offset >= ( - capacity - 5 - ): # check if we need to resize the ouput - capacity += ((s.byte_length() - input_offset) >> 1) * 3 + 1 - var new_output = UnsafePointer[UInt8].alloc(capacity) - memcpy(new_output, output, output_offset) - output.free() - output = new_output - - output[output_offset] = 0 - var list = List[UInt8]( - ptr=output, length=(output_offset + 1), capacity=capacity - ) - return String(list) + # Check if we need to reserve additional capacity. + if output.size >= output.capacity - 5: + output.reserve( + output.capacity + + _estimate_needed_size(s.byte_length() - input_offset) + ) + + # Add NUL terminator + output.append(0) + return String(output^) + + +@always_inline +fn _estimate_needed_size(byte_len: Int) -> Int: + return 3 * (byte_len >> 1) + 1 From 35b373a192e9519bb7d1050cedaf3a41f0647489 Mon Sep 17 00:00:00 2001 From: Jack Clayton Date: Mon, 13 Jan 2025 14:18:56 +1100 Subject: [PATCH 207/509] [stdlib] Enable SIMD ctor from other SIMD values Previously you couldn't construct a SIMD type from another due to ambiguity of initializers, this has recently been resolved. This enables casting of SIMD types of the same size, and casting a scalar to a SIMD type of a larger size: ```mojo print(UInt64(UInt8(42))) # 42 print(SIMD[DType.uint64, 4](UInt8(42))) # [42, 42, 42, 42] ``` Also move `from_bits` to a static method, this was conflicting with the signature. MODULAR_ORIG_COMMIT_REV_ID: 7139455af2703db8f6b0ef33b97389993d18c9ae --- stdlib/src/builtin/simd.mojo | 102 +++++++++++++++++++++++++---- stdlib/src/math/math.mojo | 8 +-- stdlib/test/builtin/test_simd.mojo | 37 +++++++++++ 3 files changed, 129 insertions(+), 18 deletions(-) diff --git a/stdlib/src/builtin/simd.mojo b/stdlib/src/builtin/simd.mojo index ec28c1de57..e1f8f186d7 100644 --- a/stdlib/src/builtin/simd.mojo +++ b/stdlib/src/builtin/simd.mojo @@ -287,15 +287,55 @@ struct SIMD[type: DType, size: Int]( _simd_construction_checks[type, size]() self = _unchecked_zero[type, size]() - # FIXME(MOCO-1291): Can't implement this due to ambiguity. - # @always_inline("nodebug") - # fn __init__(out self, *, other: SIMD[type, size]): - # """Explicitly copy the provided value. + @always_inline("nodebug") + fn __init__[other_type: DType, //](out self, value: SIMD[other_type, size]): + """Initialize from another SIMD of the same size. If the value + passed is a scalar, you can initialize a SIMD vector with more elements. + + Parameters: + other_type: The type of the value that is being cast from. + + Args: + value: The value to cast from. + + Example: + + ```mojo + print(UInt64(UInt8(42))) # 42 + print(SIMD[DType.uint64, 4](UInt8(42))) # [42, 42, 42, 42] + ``` + + Casting behavior: + + ```mojo + # Basic casting preserves value within range + Int8(UInt8(127)) == Int8(127) + + # Numbers above signed max wrap to negative using two's complement + Int8(UInt8(128)) == Int8(-128) + Int8(UInt8(129)) == Int8(-127) + Int8(UInt8(256)) == Int8(0) + + # Negative signed cast to unsigned using two's complement + UInt8(Int8(-128)) == UInt8(128) + UInt8(Int8(-127)) == UInt8(129) + UInt8(Int8(-1)) == UInt8(255) + + # Truncate precision after downcast and upcast + Float64(Float32(Float64(123456789.123456789))) == Float64(123456792.0) + + # Rightmost bits of significand become 0's on upcast + Float64(Float32(0.3)) == Float64(0.30000001192092896) - # Args: - # other: The value to copy. - # """ - # self = other + # Numbers equal after truncation of float literal and cast truncation + Float32(Float64(123456789.123456789)) == Float32(123456789.123456789) + + # Float to int/uint floors + Int64(Float64(42.2)) == Int64(42) + ``` + . + """ + self = value.cast[type]() @always_inline fn copy(self) -> Self: @@ -620,19 +660,23 @@ struct SIMD[type: DType, size: Int]( ) ) - fn __init__[ + @staticmethod + fn from_bits[ int_type: DType, // - ](mut self, *, from_bits: SIMD[int_type, size]): + ](value: SIMD[int_type, size]) -> SIMD[type, size]: """Initializes the SIMD vector from the bits of an integral SIMD vector. Parameters: int_type: The integral type of the input SIMD vector. Args: - from_bits: The SIMD vector to copy the bits from. + value: The SIMD vector to copy the bits from. + + Returns: + The bitcast SIMD vector. """ constrained[int_type.is_integral(), "the SIMD type must be integral"]() - self = bitcast[type, size](from_bits) + return bitcast[type, size](value) # ===-------------------------------------------------------------------===# # Operator dunders @@ -1637,7 +1681,7 @@ struct SIMD[type: DType, size: Int]( # FIXME: This should be an alias var mask = FPUtils[type].exponent_mantissa_mask() - return Self(from_bits=self.to_bits() & mask) + return Self.from_bits(self.to_bits() & mask) else: return (self < 0).select(-self, self) @@ -1719,6 +1763,36 @@ struct SIMD[type: DType, size: Int]( Returns: A new SIMD vector whose elements have been casted to the target element type. + + Casting behavior: + + ```mojo + # Basic casting preserves value within range + Int8(UInt8(127)) == Int8(127) + + # Numbers above signed max wrap to negative using two's complement + Int8(UInt8(128)) == Int8(-128) + Int8(UInt8(129)) == Int8(-127) + Int8(UInt8(256)) == Int8(0) + + # Negative signed cast to unsigned using two's complement + UInt8(Int8(-128)) == UInt8(128) + UInt8(Int8(-127)) == UInt8(129) + UInt8(Int8(-1)) == UInt8(255) + + # Truncate precision after downcast and upcast + Float64(Float32(Float64(123456789.123456789))) == Float64(123456792.0) + + # Rightmost bits of significand become 0's on upcast + Float64(Float32(0.3)) == Float64(0.30000001192092896) + + # Numbers equal after truncation of float literal and cast truncation + Float32(Float64(123456789.123456789)) == Float32(123456789.123456789) + + # Float to int/uint floors + Int64(Float64(42.2)) == Int64(42) + ``` + . """ @parameter @@ -3444,7 +3518,7 @@ fn _floor(x: SIMD) -> __type_of(x): bits & ~((1 << (shift_factor - e)) - 1), bits, ) - return __type_of(x)(from_bits=bits) + return __type_of(x).from_bits(bits) fn _write_scalar[ diff --git a/stdlib/src/math/math.mojo b/stdlib/src/math/math.mojo index 81d53289cf..ec2461fe65 100644 --- a/stdlib/src/math/math.mojo +++ b/stdlib/src/math/math.mojo @@ -421,8 +421,8 @@ fn exp2[ 1.33336498402e-3, ), ](xc) - return __type_of(r)( - from_bits=(r.to_bits() + (m << FPUtils[type].mantissa_width())) + return __type_of(r).from_bits( + (r.to_bits() + (m << FPUtils[type].mantissa_width())) ) @@ -489,7 +489,7 @@ fn _ldexp_impl[ alias integral_type = FPUtils[type].integral_type var m = exp.cast[integral_type]() + FPUtils[type].exponent_bias() - return x * __type_of(x)(from_bits=m << FPUtils[type].mantissa_width()) + return x * __type_of(x).from_bits(m << FPUtils[type].mantissa_width()) @always_inline @@ -676,7 +676,7 @@ fn frexp[ (((mask1 & x_int) >> mantissa_width) - exponent_bias).cast[type](), zero, ) - var frac = selector.select(T(from_bits=x_int & ~mask1 | mask2), zero) + var frac = selector.select(T.from_bits(x_int & ~mask1 | mask2), zero) return StaticTuple[size=2](frac, exp) diff --git a/stdlib/test/builtin/test_simd.mojo b/stdlib/test/builtin/test_simd.mojo index 4871fcaca2..2e85459f3a 100644 --- a/stdlib/test/builtin/test_simd.mojo +++ b/stdlib/test/builtin/test_simd.mojo @@ -69,6 +69,42 @@ def test_cast(): ) +def test_cast_init(): + # Basic casting preserves value within range + assert_equal(Int8(UInt8(127)), Int8(127)) + + # Numbers above signed max wrap to negative using two's complement + assert_equal(Int8(UInt8(128)), Int8(-128)) + assert_equal(Int8(UInt8(129)), Int8(-127)) + assert_equal(Int8(UInt8(256)), Int8(0)) + + # Negative signed convert to unsigned using two's complement + assert_equal(UInt8(Int8(-128)), UInt8(128)) + assert_equal(UInt8(Int8(-127)), UInt8(129)) + assert_equal(UInt8(Int8(-1)), UInt8(255)) + + # Truncate precision after downcast and upcast + assert_equal( + Float64(Float32(Float64(123456789.123456789))), Float64(123456792.0) + ) + + # Rightmost bits of significand become 0's on upcast + assert_equal(Float64(Float32(0.3)), Float64(0.30000001192092896)) + + # Numbers equal after truncation of float literal and cast truncation + assert_equal( + Float32(Float64(123456789.123456789)), Float32(123456789.123456789) + ) + + # Float to int/uint floors + assert_equal(Int64(Float64(42.2)), Int64(42)) + + # Pass a scalar to initialize a SIMD vector with more elements + assert_equal( + SIMD[DType.float64, 4](Float32(21.5)), SIMD[DType.float64, 4](21.5) + ) + + def test_simd_variadic(): assert_equal(str(SIMD[DType.index, 4](52, 12, 43, 5)), "[52, 12, 43, 5]") @@ -1839,6 +1875,7 @@ def main(): test_abs() test_add() test_cast() + test_cast_init() test_ceil() test_convert_simd_to_string() test_simd_repr() From 8e5e14084957460994878c1f957216902721ac8d Mon Sep 17 00:00:00 2001 From: Jack Clayton Date: Mon, 13 Jan 2025 14:19:20 +1100 Subject: [PATCH 208/509] [docs] Move from `int` to `Int` in mdx docs Missed some changes throughout the mdx docs for the change from an `int` function to an `Int` constructor. MODULAR_ORIG_COMMIT_REV_ID: 150254606d95405955bcd9f9fe0b93a7322b3744 --- docs/manual/functions.mdx | 2 +- docs/manual/get-started.mdx | 4 +--- docs/manual/parameters/index.mdx | 4 ++-- docs/manual/pointers/unsafe-pointers.mdx | 4 ++-- docs/manual/python/types.mdx | 12 ++++++------ docs/manual/traits.mdx | 2 +- 6 files changed, 13 insertions(+), 15 deletions(-) diff --git a/docs/manual/functions.mdx b/docs/manual/functions.mdx index 46cd3f5aaa..b7e34a14ff 100644 --- a/docs/manual/functions.mdx +++ b/docs/manual/functions.mdx @@ -331,7 +331,7 @@ fn count_many_things[*ArgTypes: Intable](*args: *ArgTypes) -> Int: @parameter fn add[Type: Intable](value: Type): - total += int(value) + total += Int(value) args.each[add]() return total diff --git a/docs/manual/get-started.mdx b/docs/manual/get-started.mdx index 0495016925..9f27b5d5cc 100644 --- a/docs/manual/get-started.mdx +++ b/docs/manual/get-started.mdx @@ -850,7 +850,7 @@ struct Grid(StringableRaising): row_data = List[Int]() for col in range(cols): # Generate a random 0 or 1 and append it to the row. - row_data.append(int(random.random_si64(0, 1))) + row_data.append(Int(random.random_si64(0, 1))) data.append(row_data) return Self(rows, cols, data) @@ -877,8 +877,6 @@ signed 64-bit integer value. As described in [Numeric types](/mojo/manual/types#numeric-types), this is *not* the same as the `Int` type whose precision is dependent on the native word size of the system. Therefore we're passing this value to the built-in -[`int()`](/mojo/stdlib/builtin/int/int-function/) function, which explicitly -converts a numeric value to an `Int`. The return type of the method is `Self`, which is an alias for the type of the struct. This is a convenient shortcut if the actual name of the struct is long diff --git a/docs/manual/parameters/index.mdx b/docs/manual/parameters/index.mdx index fae5e5f72c..c602ce9522 100644 --- a/docs/manual/parameters/index.mdx +++ b/docs/manual/parameters/index.mdx @@ -808,9 +808,9 @@ fn slice[ty: DType, new_size: Int, size: Int]( fn reduce_add[ty: DType, size: Int](x: SIMD[ty, size]) -> Int: @parameter if size == 1: - return int(x[0]) + return Int(x[0]) elif size == 2: - return int(x[0]) + int(x[1]) + return Int(x[0]) + Int(x[1]) # Extract the top/bottom halves, add them, sum the elements. alias half_size = size // 2 diff --git a/docs/manual/pointers/unsafe-pointers.mdx b/docs/manual/pointers/unsafe-pointers.mdx index a2a5f04acd..9bfb18a23a 100644 --- a/docs/manual/pointers/unsafe-pointers.mdx +++ b/docs/manual/pointers/unsafe-pointers.mdx @@ -403,7 +403,7 @@ in the chunk. def read_chunks(owned ptr: UnsafePointer[UInt8]) -> List[List[UInt32]]: chunks = List[List[UInt32]]() # A chunk size of 0 indicates the end of the data - chunk_size = int(ptr[]) + chunk_size = Int(ptr[]) while (chunk_size > 0): # Skip the 1 byte chunk_size and get a pointer to the first # UInt32 in the chunk @@ -415,7 +415,7 @@ def read_chunks(owned ptr: UnsafePointer[UInt8]) -> List[List[UInt32]]: # Move our pointer to the next byte after the current chunk ptr += (1 + 4 * chunk_size) # Read the size of the next chunk - chunk_size = int(ptr[]) + chunk_size = Int(ptr[]) return chunks ``` diff --git a/docs/manual/python/types.mdx b/docs/manual/python/types.mdx index 4ef8bee6aa..90f75fb866 100644 --- a/docs/manual/python/types.mdx +++ b/docs/manual/python/types.mdx @@ -148,18 +148,18 @@ Currently `PythonObject` conforms to the [`Intable`](/mojo/stdlib/builtin/int/Intable), [`Stringable`](/mojo/stdlib/builtin/str/Stringable), and [`Boolable`](/mojo/stdlib/builtin/bool/Boolable) traits, which means you can -convert Python values to Mojo `Int`, `String`, and `Bool` types using the -built-in [`int()`](/mojo/stdlib/builtin/int/int-function), -[`str()`](/mojo/stdlib/builtin/str/str), and -[`bool()`](/mojo/stdlib/builtin/bool/bool-function) functions, and print Python -values using the built-in [`print()`](/mojo/stdlib/builtin/io/print) function. +convert Python values to Mojo `String`, and `Bool` types using the +[`str()`](/mojo/stdlib/builtin/str/str) and +[`bool()`](/mojo/stdlib/builtin/bool/bool-function) functions, construct an +`Int` using `Int(python_object)`, and print Python values using the built-in +[`print()`](/mojo/stdlib/builtin/io/print) function. `PythonObject` also provides the [`to_float64()`](/mojo/stdlib/python/python_object/PythonObject#to_float64) for converting to a Mojo floating point value. ```mojo -var i: Int = int(py_int) +var i: Int = Int(py_int) var s: String = str(py_string) var b: Bool = bool(py_bool) var f: Float64 = py_float.to_float64() diff --git a/docs/manual/traits.mdx b/docs/manual/traits.mdx index 4c33a10578..a779396a65 100644 --- a/docs/manual/traits.mdx +++ b/docs/manual/traits.mdx @@ -375,7 +375,7 @@ struct Foo(Intable): return self.i var foo = Foo(42) -print(int(foo) == 42) +print(Int(foo) == 42) ``` ```output From 41a3e66397d680d6f43bb7f5477fb86b4d87e9ad Mon Sep 17 00:00:00 2001 From: Jack Clayton Date: Mon, 13 Jan 2025 15:08:48 +1100 Subject: [PATCH 209/509] [docs] Add changelog entry for SIMD ctor casting Add changelog entry. MODULAR_ORIG_COMMIT_REV_ID: 1aeb9f04478844fc42327085928fbd317f549c94 --- docs/changelog.md | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/docs/changelog.md b/docs/changelog.md index 2fea5208c5..af03864c57 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -184,6 +184,31 @@ what we publish. return self.i ``` +- You can now cast SIMD types using constructors: + + ```mojo + var val = Int8(42) + var cast = Int32(val) + ``` + + It also works when passing a scalar type to larger vector size: + + ```mojo + var vector = SIMD[DType.int64, 4](cast) # [42, 42, 42, 42] + ``` + + For values other than scalars the size of the SIMD vector needs to be equal: + + ```mojo + var float_vector = SIMD[DType.float64, 4](vector) + ``` + + `SIMD.cast` still exists to infer the size of new vector: + + ```mojo + var inferred_size = float_vector.cast[DType.uint64]() # [42, 42, 42, 42] + ``` + ### Tooling changes - mblack (aka `mojo format`) no longer formats non-mojo files. This prevents From 4d0e8db07205d761eef28cb7f080cacf4e0928cf Mon Sep 17 00:00:00 2001 From: modularbot Date: Mon, 13 Jan 2025 06:35:58 +0000 Subject: [PATCH 210/509] Update lockfiles to point to latest nightly version: 25.1.0.dev2025011305 --- examples/life/magic.lock | 222 +++++++++++++++++----------------- examples/magic.lock | 182 ++++++++++++++-------------- examples/notebooks/magic.lock | 182 ++++++++++++++-------------- examples/operators/magic.lock | 182 ++++++++++++++-------------- magic.lock | 182 ++++++++++++++-------------- 5 files changed, 476 insertions(+), 474 deletions(-) diff --git a/examples/life/magic.lock b/examples/life/magic.lock index 5aa437248b..594e9f6057 100644 --- a/examples/life/magic.lock +++ b/examples/life/magic.lock @@ -78,7 +78,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.13-h59595ed_1003.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-10.1.0-h0b3b770_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-10.2.0-h4bba637_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/httptools-0.6.4-py312h66e93f0_0.conda @@ -170,17 +170,17 @@ 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-25.1.0.dev2025011205-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025011205-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025011205-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011305-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025011305-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025011305-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011305-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-25.1.0.dev2025011205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011305-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_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 + - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.3-h5fbd93e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.0-h7b32b05_1.conda @@ -354,7 +354,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/graphite2-1.3.13-h2f0025b_1003.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/harfbuzz-10.1.0-hbdc1db7_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/harfbuzz-10.2.0-h785c1aa_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/httptools-0.6.4-py312hb2c0f52_0.conda @@ -446,17 +446,17 @@ 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-25.1.0.dev2025011205-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025011205-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025011205-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011305-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025011305-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025011305-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011305-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-25.1.0.dev2025011205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011305-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_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 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-ha32ae93_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openjpeg-2.5.3-h3f56577_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.0-hd08dc88_1.conda @@ -625,7 +625,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/graphite2-1.3.13-hebf3989_1003.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/harfbuzz-10.1.0-h9df47df_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/harfbuzz-10.2.0-ha0dd535_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/httptools-0.6.4-py312hea69d52_0.conda @@ -705,17 +705,17 @@ 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-25.1.0.dev2025011205-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025011205-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025011205-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011305-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025011305-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025011305-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011305-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-25.1.0.dev2025011205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011305-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 - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h7bae524_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openjpeg-2.5.3-h8a3d83b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.0-h81ee809_1.conda @@ -2836,9 +2836,9 @@ packages: license_family: MIT size: 52000 timestamp: 1733298867359 -- conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-10.1.0-h0b3b770_0.conda - sha256: da2b3b3c1fc34444fa484ed227e4c2d313cdff2ed3ce5a45d01f07b78f9273f8 - md5: ab1d7d56034814f4c3ed9f69f8c68806 +- conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-10.2.0-h4bba637_0.conda + sha256: 94426eca8c60b43f57beb3338d3298dda09452c7a42314bbbb4ebfa552542a84 + md5: 9e38e86167e8b1ea0094747d12944ce4 depends: - __glibc >=2.17,<3.0.a0 - cairo >=1.18.2,<2.0a0 @@ -2849,15 +2849,16 @@ packages: - libgcc >=13 - libglib >=2.82.2,<3.0a0 - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 arch: x86_64 platform: linux license: MIT license_family: MIT - size: 1600521 - timestamp: 1733706966476 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/harfbuzz-10.1.0-hbdc1db7_0.conda - sha256: 69a269f04f72632f5949e422c2ff673e408a76a9bf451e4e4e58a0996e1e8e65 - md5: 881e8d9b31e1a7335d4dea4d66851bc0 + size: 1646987 + timestamp: 1736702906600 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/harfbuzz-10.2.0-h785c1aa_0.conda + sha256: fc89d8ef86311ca8d187b69cc4c5da3c140c38e638011951e951330830bebb99 + md5: d7acbb0500e1d73a29546bc476a4db0c depends: - cairo >=1.18.2,<2.0a0 - freetype >=2.12.1,<3.0a0 @@ -2867,15 +2868,15 @@ packages: - libgcc >=13 - libglib >=2.82.2,<3.0a0 - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 arch: aarch64 platform: linux license: MIT - license_family: MIT - size: 1626591 - timestamp: 1733709685847 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/harfbuzz-10.1.0-h9df47df_0.conda - sha256: 8b56a8e0847a2a86a80211f5c5e4f19d0d7fa0be12cc1a5337e555857757cc6d - md5: bbd10a18fb41d0892fbb3aa810b4937d + size: 1699707 + timestamp: 1736705741483 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/harfbuzz-10.2.0-ha0dd535_0.conda + sha256: e9d148870adbe8efd9913fb036461d337609359b5d4474d0963d8ebe6b9789b2 + md5: 30377b8ff7d4e8a2c08be6957999c100 depends: - __osx >=11.0 - cairo >=1.18.2,<2.0a0 @@ -2885,12 +2886,13 @@ packages: - libcxx >=18 - libexpat >=2.6.4,<3.0a0 - libglib >=2.82.2,<3.0a0 + - libzlib >=1.3.1,<2.0a0 arch: arm64 platform: osx license: MIT license_family: MIT - size: 1357252 - timestamp: 1733707517728 + size: 1473375 + timestamp: 1736703265901 - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda sha256: ec89b7e5b8aa2f0219f666084446e1fb7b54545861e9caa892acb24d125761b5 md5: 2aa5ff7fa34a81b9196532c84c10d865 @@ -6171,47 +6173,47 @@ packages: license_family: BSD size: 24048 timestamp: 1733219945697 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011205-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011305-release.conda noarch: python - sha256: ce8b3d98a933cb0fdaa2e6e293fc940d51aaae273c2a6f14194ac45230ab701a - md5: d796fa41a5dd97e2bc1019b10497a31b + sha256: a3a295fcdcd95629a1d495317f4fe0d3c52800616aadb33baa5b329a9b69309f + md5: 0d23fd60108dca58f6b01233b8732920 depends: - - max-core ==25.1.0.dev2025011205 release - - max-python >=25.1.0.dev2025011205,<26.0a0 - - mojo-jupyter ==25.1.0.dev2025011205 release - - mblack ==25.1.0.dev2025011205 release + - max-core ==25.1.0.dev2025011305 release + - max-python >=25.1.0.dev2025011305,<26.0a0 + - mojo-jupyter ==25.1.0.dev2025011305 release + - mblack ==25.1.0.dev2025011305 release license: LicenseRef-Modular-Proprietary - size: 9919 - timestamp: 1736659018393 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025011205-release.conda - sha256: 6bbe93bf6df795ec42e609b4a9e52d64bdaa948c5527c16408930b7d699244d0 - md5: 8dedeccd5df7d21651ce7ba876ad3db9 + size: 9915 + timestamp: 1736745375375 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025011305-release.conda + sha256: 38cb73c75a529f060b1523552808db21fba526022cabda8c23bb020607f5bc73 + md5: e15ac442ae0aaa33ade5f177c4ecb5ef depends: - - mblack ==25.1.0.dev2025011205 release + - mblack ==25.1.0.dev2025011305 release license: LicenseRef-Modular-Proprietary - size: 244387099 - timestamp: 1736659018391 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025011205-release.conda - sha256: 97f364dc4051c44d2fdd77a2a5d314b6b460fef5e1ae77ba5e88d7c7024d8a15 - md5: acd35656dff9277c8401424aeb44ed58 + size: 244367885 + timestamp: 1736745440770 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025011305-release.conda + sha256: d5cd57f5b74fea8cb715d95d66ceea8d0fd9a7fc4f521a814ae12d1081a2bf6c + md5: 30136f977d5cd4113c7036f3b4263565 depends: - - mblack ==25.1.0.dev2025011205 release + - mblack ==25.1.0.dev2025011305 release license: LicenseRef-Modular-Proprietary - size: 248031826 - timestamp: 1736659028471 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025011205-release.conda - sha256: ba42127f64b3fad135aad191f14b68a87a5820d78355b4ab9a95aabb40e183c4 - md5: 2078ddc332986f28c8b67c413aa0c6e9 + size: 248040761 + timestamp: 1736745375373 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025011305-release.conda + sha256: 56010bbdb90c49b5d863b43709400791b7263791a5af281fb86b63e03f0e31a8 + md5: d96978d80b34cd4dd7fea5d3f3eba294 depends: - - mblack ==25.1.0.dev2025011205 release + - mblack ==25.1.0.dev2025011305 release license: LicenseRef-Modular-Proprietary - size: 206561289 - timestamp: 1736660251821 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025011205-3.12release.conda - sha256: f4a145b7b67707fa4053ebc992ecce87190cf34039cad29457c7b9474d0c3e13 - md5: ace652c55e958db1e320c5423fe5c320 + size: 206549629 + timestamp: 1736745640913 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025011305-3.12release.conda + sha256: 66bce981da4327a1f0ce2ad2eb956c3ef2079cda452bd0d25151e28786a05d6d + md5: 39ea10f174e9072da8c5d7180998a714 depends: - - max-core ==25.1.0.dev2025011205 release + - max-core ==25.1.0.dev2025011305 release - python 3.12.* - fastapi - httpx @@ -6232,13 +6234,13 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 124320649 - timestamp: 1736659018401 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025011205-3.12release.conda - sha256: fcbf3f2315a28485f0d5338ac3cf4a26540e30bc033f21a7789199c2a94ab4c1 - md5: 43fa4a1c11fe12b55f984e32501a1a09 + size: 124329785 + timestamp: 1736745440780 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025011305-3.12release.conda + sha256: 60c1537b9cfa1cf05251ade5f0b2940510b15ae602ac22bb3aa4b3c44456f58d + md5: 93a397ced422b7638a542d8908e5ce18 depends: - - max-core ==25.1.0.dev2025011205 release + - max-core ==25.1.0.dev2025011305 release - python 3.12.* - fastapi - httpx @@ -6259,13 +6261,13 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 128073303 - timestamp: 1736659028481 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025011205-3.12release.conda - sha256: c6b332a826824959a196a09095bca25ff614ec2b05939683f2971160dd1a0b25 - md5: 1cf2f5ed4307f35ea22c392734a54751 + size: 128095121 + timestamp: 1736745375385 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025011305-3.12release.conda + sha256: 889f09c1c43dc5dc9563a97947df8b2087887547023a311a4d25aba186342c84 + md5: 4e81030c0a232a6cba739472c7a29855 depends: - - max-core ==25.1.0.dev2025011205 release + - max-core ==25.1.0.dev2025011305 release - python 3.12.* - fastapi - httpx @@ -6286,12 +6288,12 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 110696805 - timestamp: 1736660251823 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011205-release.conda + size: 110700356 + timestamp: 1736745640917 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011305-release.conda noarch: python - sha256: a31c5c6330eb6638ee1698cea23e0bdd9c1acc1560c37437cda156a4913ee27f - md5: aea163e4e020e7ab6c44476abb1e5c2b + sha256: a146eceb109dbdcf93e44b2ac3d09796c9f78ac05e5e81a2e325749e05f8bda5 + md5: a1240273ce6e690ad5f01ed918d9859a depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -6301,8 +6303,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130806 - timestamp: 1736659018397 + size: 130814 + timestamp: 1736745375380 - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda sha256: 78c1bbe1723449c52b7a9df1af2ee5f005209f67e40b6e1d3c7619127c43b1c7 md5: 592132998493b3ff25fd7479396e8351 @@ -6312,18 +6314,18 @@ packages: license_family: MIT size: 14465 timestamp: 1733255681319 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011205-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011305-release.conda noarch: python - sha256: 42260d58dd242c60715f8fc8c826860087566cb3946a0bcb6a6ba38a6b213014 - md5: 437e3994be83b2370d71635c5c5b616a + sha256: eb73c8aebae252f558d0142ceaf5d166247f74b3722d2e02f1419f954fa518ab + md5: b6ea7ab915ee88e290e186b97413abdd depends: - - max-core ==25.1.0.dev2025011205 release + - max-core ==25.1.0.dev2025011305 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22934 - timestamp: 1736659018398 + size: 22932 + timestamp: 1736745375381 - conda: https://conda.anaconda.org/conda-forge/linux-64/mpg123-1.32.9-hc50e24c_0.conda sha256: 39c4700fb3fbe403a77d8cc27352fa72ba744db487559d5d44bf8411bb4ea200 md5: c7f302fd11eeb0987a6a5e1f3aed6a21 @@ -6455,37 +6457,37 @@ packages: license_family: MIT size: 10854 timestamp: 1733230986902 -- conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-he02047a_1.conda - sha256: 6a1d5d8634c1a07913f1c525db6455918cbc589d745fac46d9d6e30340c8731a - md5: 70caf8bb6cf39a0b6b7efc885f51c0fe +- conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_2.conda + sha256: 17fe6afd8a00446010220d52256bd222b1e4fcb93bd587e7784b03219f3dc358 + md5: 04b34b9a40cdc48cfdab261ab176ff74 depends: - __glibc >=2.17,<3.0.a0 - - libgcc-ng >=12 + - libgcc >=13 arch: x86_64 platform: linux license: X11 AND BSD-3-Clause - size: 889086 - timestamp: 1724658547447 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-hcccb83c_1.conda - sha256: acad4cf1f57b12ee1e42995e6fac646fa06aa026529f05eb8c07eb0a84a47a84 - md5: 91d49c85cacd92caa40cf375ef72a25d + size: 894452 + timestamp: 1736683239706 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-ha32ae93_2.conda + sha256: 9fd726174dde993c560dd6fa1a383e61d546d380e98e0b0348d22512e5d86e24 + md5: 779046fb585c71373e8a051be06c6011 depends: - - libgcc-ng >=12 + - libgcc >=13 arch: aarch64 platform: linux license: X11 AND BSD-3-Clause - size: 924472 - timestamp: 1724658573518 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h7bae524_1.conda - sha256: 27d0b9ff78ad46e1f3a6c96c479ab44beda5f96def88e2fe626e0a49429d8afc - md5: cb2b0ea909b97b3d70cd3921d1445e1a + size: 928402 + timestamp: 1736683192463 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_2.conda + sha256: b45c73348ec9841d5c893acc2e97adff24127548fe8c786109d03c41ed564e91 + md5: f6f7c5b7d0983be186c46c4f6f8f9af8 depends: - __osx >=11.0 arch: arm64 platform: osx license: X11 AND BSD-3-Clause - size: 802321 - timestamp: 1724658775723 + size: 796754 + timestamp: 1736683572099 - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda sha256: fe3459c75cf84dcef6ef14efcc4adb0ade66038ddd27cadb894f34f4797687d8 md5: d8285bea2a350f63fab23bf460221f3f diff --git a/examples/magic.lock b/examples/magic.lock index 6265c50ef4..b65adec021 100644 --- a/examples/magic.lock +++ b/examples/magic.lock @@ -131,16 +131,16 @@ 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-25.1.0.dev2025011205-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025011205-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025011205-3.11release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011305-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025011305-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025011305-3.11release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011305-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-25.1.0.dev2025011205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011305-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 + - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py311h64a7726_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.3-h5fbd93e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.0-h7b32b05_1.conda @@ -349,16 +349,16 @@ 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-25.1.0.dev2025011205-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025011205-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025011205-3.11release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011305-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025011305-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025011305-3.11release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011305-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-25.1.0.dev2025011205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011305-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 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-ha32ae93_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py311h69ead2a_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openjpeg-2.5.3-h3f56577_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.0-hd08dc88_1.conda @@ -558,16 +558,16 @@ 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-25.1.0.dev2025011205-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025011205-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025011205-3.11release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011305-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025011305-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025011305-3.11release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011305-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-25.1.0.dev2025011205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011305-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 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h7bae524_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py311h7125741_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openjpeg-2.5.3-h8a3d83b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.0-h81ee809_1.conda @@ -4752,47 +4752,47 @@ packages: license_family: BSD size: 24976 timestamp: 1733219849253 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011205-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011305-release.conda noarch: python - sha256: ce8b3d98a933cb0fdaa2e6e293fc940d51aaae273c2a6f14194ac45230ab701a - md5: d796fa41a5dd97e2bc1019b10497a31b + sha256: a3a295fcdcd95629a1d495317f4fe0d3c52800616aadb33baa5b329a9b69309f + md5: 0d23fd60108dca58f6b01233b8732920 depends: - - max-core ==25.1.0.dev2025011205 release - - max-python >=25.1.0.dev2025011205,<26.0a0 - - mojo-jupyter ==25.1.0.dev2025011205 release - - mblack ==25.1.0.dev2025011205 release + - max-core ==25.1.0.dev2025011305 release + - max-python >=25.1.0.dev2025011305,<26.0a0 + - mojo-jupyter ==25.1.0.dev2025011305 release + - mblack ==25.1.0.dev2025011305 release license: LicenseRef-Modular-Proprietary - size: 9919 - timestamp: 1736659018393 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025011205-release.conda - sha256: 6bbe93bf6df795ec42e609b4a9e52d64bdaa948c5527c16408930b7d699244d0 - md5: 8dedeccd5df7d21651ce7ba876ad3db9 + size: 9915 + timestamp: 1736745375375 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025011305-release.conda + sha256: 38cb73c75a529f060b1523552808db21fba526022cabda8c23bb020607f5bc73 + md5: e15ac442ae0aaa33ade5f177c4ecb5ef depends: - - mblack ==25.1.0.dev2025011205 release + - mblack ==25.1.0.dev2025011305 release license: LicenseRef-Modular-Proprietary - size: 244387099 - timestamp: 1736659018391 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025011205-release.conda - sha256: 97f364dc4051c44d2fdd77a2a5d314b6b460fef5e1ae77ba5e88d7c7024d8a15 - md5: acd35656dff9277c8401424aeb44ed58 + size: 244367885 + timestamp: 1736745440770 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025011305-release.conda + sha256: d5cd57f5b74fea8cb715d95d66ceea8d0fd9a7fc4f521a814ae12d1081a2bf6c + md5: 30136f977d5cd4113c7036f3b4263565 depends: - - mblack ==25.1.0.dev2025011205 release + - mblack ==25.1.0.dev2025011305 release license: LicenseRef-Modular-Proprietary - size: 248031826 - timestamp: 1736659028471 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025011205-release.conda - sha256: ba42127f64b3fad135aad191f14b68a87a5820d78355b4ab9a95aabb40e183c4 - md5: 2078ddc332986f28c8b67c413aa0c6e9 + size: 248040761 + timestamp: 1736745375373 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025011305-release.conda + sha256: 56010bbdb90c49b5d863b43709400791b7263791a5af281fb86b63e03f0e31a8 + md5: d96978d80b34cd4dd7fea5d3f3eba294 depends: - - mblack ==25.1.0.dev2025011205 release + - mblack ==25.1.0.dev2025011305 release license: LicenseRef-Modular-Proprietary - size: 206561289 - timestamp: 1736660251821 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025011205-3.11release.conda - sha256: c78b3373fa70549f1b7bcdb1043724003c68dd6bfd02dc050247b3f3cf293bf2 - md5: 719d17bbce429deb392a2693eeb4b861 + size: 206549629 + timestamp: 1736745640913 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025011305-3.11release.conda + sha256: a9a51fab53f0fa575476deb9444289ffc4dbf814cfb9143253c57b8407265f81 + md5: 8ed16e66162a88d148d001470c0e18b4 depends: - - max-core ==25.1.0.dev2025011205 release + - max-core ==25.1.0.dev2025011305 release - python 3.11.* - fastapi - httpx @@ -4813,13 +4813,13 @@ packages: - uvicorn - python_abi 3.11.* *_cp311 license: LicenseRef-Modular-Proprietary - size: 124343163 - timestamp: 1736659018398 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025011205-3.11release.conda - sha256: caefa07ee17445525c740d489419d3e62f5ade059cc7677daa55d59fa176397e - md5: ba2b15f1413ed7e2e11714827954195f + size: 124343976 + timestamp: 1736745440777 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025011305-3.11release.conda + sha256: ce76f754286b4e32a6767cb03cb087685016c72adee3a9dcfa03d31ccb60884b + md5: c273385b33be94efd668a924a60033ff depends: - - max-core ==25.1.0.dev2025011205 release + - max-core ==25.1.0.dev2025011305 release - python 3.11.* - fastapi - httpx @@ -4840,13 +4840,13 @@ packages: - uvicorn - python_abi 3.11.* *_cp311 license: LicenseRef-Modular-Proprietary - size: 128101283 - timestamp: 1736659028478 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025011205-3.11release.conda - sha256: 47e0393cc3740e17dabe6f01b4210ca73187b5d8d70cad881223a7884115fd40 - md5: 741746b6e359514486ced4585ed26567 + size: 128107516 + timestamp: 1736745375382 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025011305-3.11release.conda + sha256: 0b73711051933e6ce7492c040f2266b58a80b0a10c178a441ada8b29984783b9 + md5: 0fa8cbaa48a7ef780de229d3122b5fc4 depends: - - max-core ==25.1.0.dev2025011205 release + - max-core ==25.1.0.dev2025011305 release - python 3.11.* - fastapi - httpx @@ -4867,12 +4867,12 @@ packages: - uvicorn - python_abi 3.11.* *_cp311 license: LicenseRef-Modular-Proprietary - size: 110721655 - timestamp: 1736660251823 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011205-release.conda + size: 110714169 + timestamp: 1736745640916 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011305-release.conda noarch: python - sha256: a31c5c6330eb6638ee1698cea23e0bdd9c1acc1560c37437cda156a4913ee27f - md5: aea163e4e020e7ab6c44476abb1e5c2b + sha256: a146eceb109dbdcf93e44b2ac3d09796c9f78ac05e5e81a2e325749e05f8bda5 + md5: a1240273ce6e690ad5f01ed918d9859a depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -4882,8 +4882,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130806 - timestamp: 1736659018397 + size: 130814 + timestamp: 1736745375380 - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda sha256: 78c1bbe1723449c52b7a9df1af2ee5f005209f67e40b6e1d3c7619127c43b1c7 md5: 592132998493b3ff25fd7479396e8351 @@ -4893,18 +4893,18 @@ packages: license_family: MIT size: 14465 timestamp: 1733255681319 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011205-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011305-release.conda noarch: python - sha256: 42260d58dd242c60715f8fc8c826860087566cb3946a0bcb6a6ba38a6b213014 - md5: 437e3994be83b2370d71635c5c5b616a + sha256: eb73c8aebae252f558d0142ceaf5d166247f74b3722d2e02f1419f954fa518ab + md5: b6ea7ab915ee88e290e186b97413abdd depends: - - max-core ==25.1.0.dev2025011205 release + - max-core ==25.1.0.dev2025011305 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22934 - timestamp: 1736659018398 + size: 22932 + timestamp: 1736745375381 - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py311h2dc5d0c_2.conda sha256: afaab7a028281d8b5336db2b994fd3f9694862b6ca372c079dc4e84ad768c20a md5: bb8ca118919836624d920b4c44383a15 @@ -4999,37 +4999,37 @@ packages: license_family: MIT size: 10854 timestamp: 1733230986902 -- conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-he02047a_1.conda - sha256: 6a1d5d8634c1a07913f1c525db6455918cbc589d745fac46d9d6e30340c8731a - md5: 70caf8bb6cf39a0b6b7efc885f51c0fe +- conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_2.conda + sha256: 17fe6afd8a00446010220d52256bd222b1e4fcb93bd587e7784b03219f3dc358 + md5: 04b34b9a40cdc48cfdab261ab176ff74 depends: - __glibc >=2.17,<3.0.a0 - - libgcc-ng >=12 + - libgcc >=13 arch: x86_64 platform: linux license: X11 AND BSD-3-Clause - size: 889086 - timestamp: 1724658547447 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-hcccb83c_1.conda - sha256: acad4cf1f57b12ee1e42995e6fac646fa06aa026529f05eb8c07eb0a84a47a84 - md5: 91d49c85cacd92caa40cf375ef72a25d + size: 894452 + timestamp: 1736683239706 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-ha32ae93_2.conda + sha256: 9fd726174dde993c560dd6fa1a383e61d546d380e98e0b0348d22512e5d86e24 + md5: 779046fb585c71373e8a051be06c6011 depends: - - libgcc-ng >=12 + - libgcc >=13 arch: aarch64 platform: linux license: X11 AND BSD-3-Clause - size: 924472 - timestamp: 1724658573518 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h7bae524_1.conda - sha256: 27d0b9ff78ad46e1f3a6c96c479ab44beda5f96def88e2fe626e0a49429d8afc - md5: cb2b0ea909b97b3d70cd3921d1445e1a + size: 928402 + timestamp: 1736683192463 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_2.conda + sha256: b45c73348ec9841d5c893acc2e97adff24127548fe8c786109d03c41ed564e91 + md5: f6f7c5b7d0983be186c46c4f6f8f9af8 depends: - __osx >=11.0 arch: arm64 platform: osx license: X11 AND BSD-3-Clause - size: 802321 - timestamp: 1724658775723 + size: 796754 + timestamp: 1736683572099 - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py311h64a7726_0.conda sha256: 3f4365e11b28e244c95ba8579942b0802761ba7bb31c026f50d1a9ea9c728149 md5: a502d7aad449a1206efb366d6a12c52d diff --git a/examples/notebooks/magic.lock b/examples/notebooks/magic.lock index 7df2b950e4..32700eab88 100644 --- a/examples/notebooks/magic.lock +++ b/examples/notebooks/magic.lock @@ -167,20 +167,20 @@ 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-25.1.0.dev2025011205-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025011205-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025011205-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011305-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025011305-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025011305-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011305-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.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011305-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.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-he02047a_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda @@ -458,20 +458,20 @@ 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-25.1.0.dev2025011205-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025011205-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025011205-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011305-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025011305-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025011305-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011305-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.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011305-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.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-hcccb83c_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-ha32ae93_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda @@ -741,20 +741,20 @@ 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-25.1.0.dev2025011205-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025011205-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025011205-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011305-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025011305-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025011305-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011305-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.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011305-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 - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h7bae524_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda @@ -5549,47 +5549,47 @@ packages: license_family: BSD size: 14467 timestamp: 1733417051523 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011205-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011305-release.conda noarch: python - sha256: ce8b3d98a933cb0fdaa2e6e293fc940d51aaae273c2a6f14194ac45230ab701a - md5: d796fa41a5dd97e2bc1019b10497a31b + sha256: a3a295fcdcd95629a1d495317f4fe0d3c52800616aadb33baa5b329a9b69309f + md5: 0d23fd60108dca58f6b01233b8732920 depends: - - max-core ==25.1.0.dev2025011205 release - - max-python >=25.1.0.dev2025011205,<26.0a0 - - mojo-jupyter ==25.1.0.dev2025011205 release - - mblack ==25.1.0.dev2025011205 release + - max-core ==25.1.0.dev2025011305 release + - max-python >=25.1.0.dev2025011305,<26.0a0 + - mojo-jupyter ==25.1.0.dev2025011305 release + - mblack ==25.1.0.dev2025011305 release license: LicenseRef-Modular-Proprietary - size: 9919 - timestamp: 1736659018393 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025011205-release.conda - sha256: 6bbe93bf6df795ec42e609b4a9e52d64bdaa948c5527c16408930b7d699244d0 - md5: 8dedeccd5df7d21651ce7ba876ad3db9 + size: 9915 + timestamp: 1736745375375 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025011305-release.conda + sha256: 38cb73c75a529f060b1523552808db21fba526022cabda8c23bb020607f5bc73 + md5: e15ac442ae0aaa33ade5f177c4ecb5ef depends: - - mblack ==25.1.0.dev2025011205 release + - mblack ==25.1.0.dev2025011305 release license: LicenseRef-Modular-Proprietary - size: 244387099 - timestamp: 1736659018391 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025011205-release.conda - sha256: 97f364dc4051c44d2fdd77a2a5d314b6b460fef5e1ae77ba5e88d7c7024d8a15 - md5: acd35656dff9277c8401424aeb44ed58 + size: 244367885 + timestamp: 1736745440770 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025011305-release.conda + sha256: d5cd57f5b74fea8cb715d95d66ceea8d0fd9a7fc4f521a814ae12d1081a2bf6c + md5: 30136f977d5cd4113c7036f3b4263565 depends: - - mblack ==25.1.0.dev2025011205 release + - mblack ==25.1.0.dev2025011305 release license: LicenseRef-Modular-Proprietary - size: 248031826 - timestamp: 1736659028471 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025011205-release.conda - sha256: ba42127f64b3fad135aad191f14b68a87a5820d78355b4ab9a95aabb40e183c4 - md5: 2078ddc332986f28c8b67c413aa0c6e9 + size: 248040761 + timestamp: 1736745375373 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025011305-release.conda + sha256: 56010bbdb90c49b5d863b43709400791b7263791a5af281fb86b63e03f0e31a8 + md5: d96978d80b34cd4dd7fea5d3f3eba294 depends: - - mblack ==25.1.0.dev2025011205 release + - mblack ==25.1.0.dev2025011305 release license: LicenseRef-Modular-Proprietary - size: 206561289 - timestamp: 1736660251821 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025011205-3.12release.conda - sha256: f4a145b7b67707fa4053ebc992ecce87190cf34039cad29457c7b9474d0c3e13 - md5: ace652c55e958db1e320c5423fe5c320 + size: 206549629 + timestamp: 1736745640913 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025011305-3.12release.conda + sha256: 66bce981da4327a1f0ce2ad2eb956c3ef2079cda452bd0d25151e28786a05d6d + md5: 39ea10f174e9072da8c5d7180998a714 depends: - - max-core ==25.1.0.dev2025011205 release + - max-core ==25.1.0.dev2025011305 release - python 3.12.* - fastapi - httpx @@ -5610,13 +5610,13 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 124320649 - timestamp: 1736659018401 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025011205-3.12release.conda - sha256: fcbf3f2315a28485f0d5338ac3cf4a26540e30bc033f21a7789199c2a94ab4c1 - md5: 43fa4a1c11fe12b55f984e32501a1a09 + size: 124329785 + timestamp: 1736745440780 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025011305-3.12release.conda + sha256: 60c1537b9cfa1cf05251ade5f0b2940510b15ae602ac22bb3aa4b3c44456f58d + md5: 93a397ced422b7638a542d8908e5ce18 depends: - - max-core ==25.1.0.dev2025011205 release + - max-core ==25.1.0.dev2025011305 release - python 3.12.* - fastapi - httpx @@ -5637,13 +5637,13 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 128073303 - timestamp: 1736659028481 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025011205-3.12release.conda - sha256: c6b332a826824959a196a09095bca25ff614ec2b05939683f2971160dd1a0b25 - md5: 1cf2f5ed4307f35ea22c392734a54751 + size: 128095121 + timestamp: 1736745375385 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025011305-3.12release.conda + sha256: 889f09c1c43dc5dc9563a97947df8b2087887547023a311a4d25aba186342c84 + md5: 4e81030c0a232a6cba739472c7a29855 depends: - - max-core ==25.1.0.dev2025011205 release + - max-core ==25.1.0.dev2025011305 release - python 3.12.* - fastapi - httpx @@ -5664,12 +5664,12 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 110696805 - timestamp: 1736660251823 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011205-release.conda + size: 110700356 + timestamp: 1736745640917 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011305-release.conda noarch: python - sha256: a31c5c6330eb6638ee1698cea23e0bdd9c1acc1560c37437cda156a4913ee27f - md5: aea163e4e020e7ab6c44476abb1e5c2b + sha256: a146eceb109dbdcf93e44b2ac3d09796c9f78ac05e5e81a2e325749e05f8bda5 + md5: a1240273ce6e690ad5f01ed918d9859a depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -5679,8 +5679,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130806 - timestamp: 1736659018397 + size: 130814 + timestamp: 1736745375380 - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda sha256: 78c1bbe1723449c52b7a9df1af2ee5f005209f67e40b6e1d3c7619127c43b1c7 md5: 592132998493b3ff25fd7479396e8351 @@ -5700,18 +5700,18 @@ packages: license_family: BSD size: 68803 timestamp: 1735686983426 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011205-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011305-release.conda noarch: python - sha256: 42260d58dd242c60715f8fc8c826860087566cb3946a0bcb6a6ba38a6b213014 - md5: 437e3994be83b2370d71635c5c5b616a + sha256: eb73c8aebae252f558d0142ceaf5d166247f74b3722d2e02f1419f954fa518ab + md5: b6ea7ab915ee88e290e186b97413abdd depends: - - max-core ==25.1.0.dev2025011205 release + - max-core ==25.1.0.dev2025011305 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22934 - timestamp: 1736659018398 + size: 22932 + timestamp: 1736745375381 - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py312h178313f_2.conda sha256: b05bc8252a6e957bf4a776ed5e0e61d1ba88cdc46ccb55890c72cc58b10371f4 md5: 5b5e3267d915a107eca793d52e1b780a @@ -5860,37 +5860,37 @@ packages: license_family: BSD size: 100945 timestamp: 1733402844974 -- conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-he02047a_1.conda - sha256: 6a1d5d8634c1a07913f1c525db6455918cbc589d745fac46d9d6e30340c8731a - md5: 70caf8bb6cf39a0b6b7efc885f51c0fe +- conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_2.conda + sha256: 17fe6afd8a00446010220d52256bd222b1e4fcb93bd587e7784b03219f3dc358 + md5: 04b34b9a40cdc48cfdab261ab176ff74 depends: - __glibc >=2.17,<3.0.a0 - - libgcc-ng >=12 + - libgcc >=13 arch: x86_64 platform: linux license: X11 AND BSD-3-Clause - size: 889086 - timestamp: 1724658547447 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-hcccb83c_1.conda - sha256: acad4cf1f57b12ee1e42995e6fac646fa06aa026529f05eb8c07eb0a84a47a84 - md5: 91d49c85cacd92caa40cf375ef72a25d + size: 894452 + timestamp: 1736683239706 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-ha32ae93_2.conda + sha256: 9fd726174dde993c560dd6fa1a383e61d546d380e98e0b0348d22512e5d86e24 + md5: 779046fb585c71373e8a051be06c6011 depends: - - libgcc-ng >=12 + - libgcc >=13 arch: aarch64 platform: linux license: X11 AND BSD-3-Clause - size: 924472 - timestamp: 1724658573518 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h7bae524_1.conda - sha256: 27d0b9ff78ad46e1f3a6c96c479ab44beda5f96def88e2fe626e0a49429d8afc - md5: cb2b0ea909b97b3d70cd3921d1445e1a + size: 928402 + timestamp: 1736683192463 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_2.conda + sha256: b45c73348ec9841d5c893acc2e97adff24127548fe8c786109d03c41ed564e91 + md5: f6f7c5b7d0983be186c46c4f6f8f9af8 depends: - __osx >=11.0 arch: arm64 platform: osx license: X11 AND BSD-3-Clause - size: 802321 - timestamp: 1724658775723 + size: 796754 + timestamp: 1736683572099 - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda sha256: bb7b21d7fd0445ddc0631f64e66d91a179de4ba920b8381f29b9d006a42788c0 md5: 598fd7d4d0de2455fb74f56063969a97 diff --git a/examples/operators/magic.lock b/examples/operators/magic.lock index ee9413a668..336611fd4b 100644 --- a/examples/operators/magic.lock +++ b/examples/operators/magic.lock @@ -131,16 +131,16 @@ 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-25.1.0.dev2025011205-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025011205-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025011205-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011305-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025011305-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025011305-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011305-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-25.1.0.dev2025011205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011305-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 + - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.3-h5fbd93e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.0-h7b32b05_1.conda @@ -349,16 +349,16 @@ 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-25.1.0.dev2025011205-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025011205-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025011205-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011305-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025011305-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025011305-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011305-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-25.1.0.dev2025011205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011305-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 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-ha32ae93_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openjpeg-2.5.3-h3f56577_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.0-hd08dc88_1.conda @@ -558,16 +558,16 @@ 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-25.1.0.dev2025011205-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025011205-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025011205-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011305-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025011305-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025011305-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011305-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-25.1.0.dev2025011205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011305-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 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h7bae524_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openjpeg-2.5.3-h8a3d83b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.0-h81ee809_1.conda @@ -4752,47 +4752,47 @@ packages: license_family: BSD size: 24048 timestamp: 1733219945697 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011205-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011305-release.conda noarch: python - sha256: ce8b3d98a933cb0fdaa2e6e293fc940d51aaae273c2a6f14194ac45230ab701a - md5: d796fa41a5dd97e2bc1019b10497a31b + sha256: a3a295fcdcd95629a1d495317f4fe0d3c52800616aadb33baa5b329a9b69309f + md5: 0d23fd60108dca58f6b01233b8732920 depends: - - max-core ==25.1.0.dev2025011205 release - - max-python >=25.1.0.dev2025011205,<26.0a0 - - mojo-jupyter ==25.1.0.dev2025011205 release - - mblack ==25.1.0.dev2025011205 release + - max-core ==25.1.0.dev2025011305 release + - max-python >=25.1.0.dev2025011305,<26.0a0 + - mojo-jupyter ==25.1.0.dev2025011305 release + - mblack ==25.1.0.dev2025011305 release license: LicenseRef-Modular-Proprietary - size: 9919 - timestamp: 1736659018393 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025011205-release.conda - sha256: 6bbe93bf6df795ec42e609b4a9e52d64bdaa948c5527c16408930b7d699244d0 - md5: 8dedeccd5df7d21651ce7ba876ad3db9 + size: 9915 + timestamp: 1736745375375 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025011305-release.conda + sha256: 38cb73c75a529f060b1523552808db21fba526022cabda8c23bb020607f5bc73 + md5: e15ac442ae0aaa33ade5f177c4ecb5ef depends: - - mblack ==25.1.0.dev2025011205 release + - mblack ==25.1.0.dev2025011305 release license: LicenseRef-Modular-Proprietary - size: 244387099 - timestamp: 1736659018391 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025011205-release.conda - sha256: 97f364dc4051c44d2fdd77a2a5d314b6b460fef5e1ae77ba5e88d7c7024d8a15 - md5: acd35656dff9277c8401424aeb44ed58 + size: 244367885 + timestamp: 1736745440770 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025011305-release.conda + sha256: d5cd57f5b74fea8cb715d95d66ceea8d0fd9a7fc4f521a814ae12d1081a2bf6c + md5: 30136f977d5cd4113c7036f3b4263565 depends: - - mblack ==25.1.0.dev2025011205 release + - mblack ==25.1.0.dev2025011305 release license: LicenseRef-Modular-Proprietary - size: 248031826 - timestamp: 1736659028471 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025011205-release.conda - sha256: ba42127f64b3fad135aad191f14b68a87a5820d78355b4ab9a95aabb40e183c4 - md5: 2078ddc332986f28c8b67c413aa0c6e9 + size: 248040761 + timestamp: 1736745375373 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025011305-release.conda + sha256: 56010bbdb90c49b5d863b43709400791b7263791a5af281fb86b63e03f0e31a8 + md5: d96978d80b34cd4dd7fea5d3f3eba294 depends: - - mblack ==25.1.0.dev2025011205 release + - mblack ==25.1.0.dev2025011305 release license: LicenseRef-Modular-Proprietary - size: 206561289 - timestamp: 1736660251821 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025011205-3.12release.conda - sha256: f4a145b7b67707fa4053ebc992ecce87190cf34039cad29457c7b9474d0c3e13 - md5: ace652c55e958db1e320c5423fe5c320 + size: 206549629 + timestamp: 1736745640913 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025011305-3.12release.conda + sha256: 66bce981da4327a1f0ce2ad2eb956c3ef2079cda452bd0d25151e28786a05d6d + md5: 39ea10f174e9072da8c5d7180998a714 depends: - - max-core ==25.1.0.dev2025011205 release + - max-core ==25.1.0.dev2025011305 release - python 3.12.* - fastapi - httpx @@ -4813,13 +4813,13 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 124320649 - timestamp: 1736659018401 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025011205-3.12release.conda - sha256: fcbf3f2315a28485f0d5338ac3cf4a26540e30bc033f21a7789199c2a94ab4c1 - md5: 43fa4a1c11fe12b55f984e32501a1a09 + size: 124329785 + timestamp: 1736745440780 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025011305-3.12release.conda + sha256: 60c1537b9cfa1cf05251ade5f0b2940510b15ae602ac22bb3aa4b3c44456f58d + md5: 93a397ced422b7638a542d8908e5ce18 depends: - - max-core ==25.1.0.dev2025011205 release + - max-core ==25.1.0.dev2025011305 release - python 3.12.* - fastapi - httpx @@ -4840,13 +4840,13 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 128073303 - timestamp: 1736659028481 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025011205-3.12release.conda - sha256: c6b332a826824959a196a09095bca25ff614ec2b05939683f2971160dd1a0b25 - md5: 1cf2f5ed4307f35ea22c392734a54751 + size: 128095121 + timestamp: 1736745375385 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025011305-3.12release.conda + sha256: 889f09c1c43dc5dc9563a97947df8b2087887547023a311a4d25aba186342c84 + md5: 4e81030c0a232a6cba739472c7a29855 depends: - - max-core ==25.1.0.dev2025011205 release + - max-core ==25.1.0.dev2025011305 release - python 3.12.* - fastapi - httpx @@ -4867,12 +4867,12 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 110696805 - timestamp: 1736660251823 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011205-release.conda + size: 110700356 + timestamp: 1736745640917 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011305-release.conda noarch: python - sha256: a31c5c6330eb6638ee1698cea23e0bdd9c1acc1560c37437cda156a4913ee27f - md5: aea163e4e020e7ab6c44476abb1e5c2b + sha256: a146eceb109dbdcf93e44b2ac3d09796c9f78ac05e5e81a2e325749e05f8bda5 + md5: a1240273ce6e690ad5f01ed918d9859a depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -4882,8 +4882,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130806 - timestamp: 1736659018397 + size: 130814 + timestamp: 1736745375380 - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda sha256: 78c1bbe1723449c52b7a9df1af2ee5f005209f67e40b6e1d3c7619127c43b1c7 md5: 592132998493b3ff25fd7479396e8351 @@ -4893,18 +4893,18 @@ packages: license_family: MIT size: 14465 timestamp: 1733255681319 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011205-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011305-release.conda noarch: python - sha256: 42260d58dd242c60715f8fc8c826860087566cb3946a0bcb6a6ba38a6b213014 - md5: 437e3994be83b2370d71635c5c5b616a + sha256: eb73c8aebae252f558d0142ceaf5d166247f74b3722d2e02f1419f954fa518ab + md5: b6ea7ab915ee88e290e186b97413abdd depends: - - max-core ==25.1.0.dev2025011205 release + - max-core ==25.1.0.dev2025011305 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22934 - timestamp: 1736659018398 + size: 22932 + timestamp: 1736745375381 - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py312h178313f_2.conda sha256: b05bc8252a6e957bf4a776ed5e0e61d1ba88cdc46ccb55890c72cc58b10371f4 md5: 5b5e3267d915a107eca793d52e1b780a @@ -4999,37 +4999,37 @@ packages: license_family: MIT size: 10854 timestamp: 1733230986902 -- conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-he02047a_1.conda - sha256: 6a1d5d8634c1a07913f1c525db6455918cbc589d745fac46d9d6e30340c8731a - md5: 70caf8bb6cf39a0b6b7efc885f51c0fe +- conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_2.conda + sha256: 17fe6afd8a00446010220d52256bd222b1e4fcb93bd587e7784b03219f3dc358 + md5: 04b34b9a40cdc48cfdab261ab176ff74 depends: - __glibc >=2.17,<3.0.a0 - - libgcc-ng >=12 + - libgcc >=13 arch: x86_64 platform: linux license: X11 AND BSD-3-Clause - size: 889086 - timestamp: 1724658547447 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-hcccb83c_1.conda - sha256: acad4cf1f57b12ee1e42995e6fac646fa06aa026529f05eb8c07eb0a84a47a84 - md5: 91d49c85cacd92caa40cf375ef72a25d + size: 894452 + timestamp: 1736683239706 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-ha32ae93_2.conda + sha256: 9fd726174dde993c560dd6fa1a383e61d546d380e98e0b0348d22512e5d86e24 + md5: 779046fb585c71373e8a051be06c6011 depends: - - libgcc-ng >=12 + - libgcc >=13 arch: aarch64 platform: linux license: X11 AND BSD-3-Clause - size: 924472 - timestamp: 1724658573518 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h7bae524_1.conda - sha256: 27d0b9ff78ad46e1f3a6c96c479ab44beda5f96def88e2fe626e0a49429d8afc - md5: cb2b0ea909b97b3d70cd3921d1445e1a + size: 928402 + timestamp: 1736683192463 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_2.conda + sha256: b45c73348ec9841d5c893acc2e97adff24127548fe8c786109d03c41ed564e91 + md5: f6f7c5b7d0983be186c46c4f6f8f9af8 depends: - __osx >=11.0 arch: arm64 platform: osx license: X11 AND BSD-3-Clause - size: 802321 - timestamp: 1724658775723 + size: 796754 + timestamp: 1736683572099 - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda sha256: fe3459c75cf84dcef6ef14efcc4adb0ade66038ddd27cadb894f34f4797687d8 md5: d8285bea2a350f63fab23bf460221f3f diff --git a/magic.lock b/magic.lock index 20f710b665..cc1e7529e0 100644 --- a/magic.lock +++ b/magic.lock @@ -132,16 +132,16 @@ 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-25.1.0.dev2025011205-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025011205-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025011205-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011305-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025011305-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025011305-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011305-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-25.1.0.dev2025011205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011305-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 + - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.3-h5fbd93e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.0-h7b32b05_1.conda @@ -351,16 +351,16 @@ 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-25.1.0.dev2025011205-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025011205-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025011205-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011305-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025011305-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025011305-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011305-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-25.1.0.dev2025011205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011305-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 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-ha32ae93_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openjpeg-2.5.3-h3f56577_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.0-hd08dc88_1.conda @@ -561,16 +561,16 @@ 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-25.1.0.dev2025011205-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025011205-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025011205-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011305-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025011305-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025011305-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011305-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-25.1.0.dev2025011205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011305-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 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h7bae524_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openjpeg-2.5.3-h8a3d83b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.0-h81ee809_1.conda @@ -4764,47 +4764,47 @@ packages: license_family: BSD size: 24048 timestamp: 1733219945697 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011205-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011305-release.conda noarch: python - sha256: ce8b3d98a933cb0fdaa2e6e293fc940d51aaae273c2a6f14194ac45230ab701a - md5: d796fa41a5dd97e2bc1019b10497a31b + sha256: a3a295fcdcd95629a1d495317f4fe0d3c52800616aadb33baa5b329a9b69309f + md5: 0d23fd60108dca58f6b01233b8732920 depends: - - max-core ==25.1.0.dev2025011205 release - - max-python >=25.1.0.dev2025011205,<26.0a0 - - mojo-jupyter ==25.1.0.dev2025011205 release - - mblack ==25.1.0.dev2025011205 release + - max-core ==25.1.0.dev2025011305 release + - max-python >=25.1.0.dev2025011305,<26.0a0 + - mojo-jupyter ==25.1.0.dev2025011305 release + - mblack ==25.1.0.dev2025011305 release license: LicenseRef-Modular-Proprietary - size: 9919 - timestamp: 1736659018393 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025011205-release.conda - sha256: 6bbe93bf6df795ec42e609b4a9e52d64bdaa948c5527c16408930b7d699244d0 - md5: 8dedeccd5df7d21651ce7ba876ad3db9 + size: 9915 + timestamp: 1736745375375 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025011305-release.conda + sha256: 38cb73c75a529f060b1523552808db21fba526022cabda8c23bb020607f5bc73 + md5: e15ac442ae0aaa33ade5f177c4ecb5ef depends: - - mblack ==25.1.0.dev2025011205 release + - mblack ==25.1.0.dev2025011305 release license: LicenseRef-Modular-Proprietary - size: 244387099 - timestamp: 1736659018391 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025011205-release.conda - sha256: 97f364dc4051c44d2fdd77a2a5d314b6b460fef5e1ae77ba5e88d7c7024d8a15 - md5: acd35656dff9277c8401424aeb44ed58 + size: 244367885 + timestamp: 1736745440770 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025011305-release.conda + sha256: d5cd57f5b74fea8cb715d95d66ceea8d0fd9a7fc4f521a814ae12d1081a2bf6c + md5: 30136f977d5cd4113c7036f3b4263565 depends: - - mblack ==25.1.0.dev2025011205 release + - mblack ==25.1.0.dev2025011305 release license: LicenseRef-Modular-Proprietary - size: 248031826 - timestamp: 1736659028471 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025011205-release.conda - sha256: ba42127f64b3fad135aad191f14b68a87a5820d78355b4ab9a95aabb40e183c4 - md5: 2078ddc332986f28c8b67c413aa0c6e9 + size: 248040761 + timestamp: 1736745375373 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025011305-release.conda + sha256: 56010bbdb90c49b5d863b43709400791b7263791a5af281fb86b63e03f0e31a8 + md5: d96978d80b34cd4dd7fea5d3f3eba294 depends: - - mblack ==25.1.0.dev2025011205 release + - mblack ==25.1.0.dev2025011305 release license: LicenseRef-Modular-Proprietary - size: 206561289 - timestamp: 1736660251821 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025011205-3.12release.conda - sha256: f4a145b7b67707fa4053ebc992ecce87190cf34039cad29457c7b9474d0c3e13 - md5: ace652c55e958db1e320c5423fe5c320 + size: 206549629 + timestamp: 1736745640913 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025011305-3.12release.conda + sha256: 66bce981da4327a1f0ce2ad2eb956c3ef2079cda452bd0d25151e28786a05d6d + md5: 39ea10f174e9072da8c5d7180998a714 depends: - - max-core ==25.1.0.dev2025011205 release + - max-core ==25.1.0.dev2025011305 release - python 3.12.* - fastapi - httpx @@ -4825,13 +4825,13 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 124320649 - timestamp: 1736659018401 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025011205-3.12release.conda - sha256: fcbf3f2315a28485f0d5338ac3cf4a26540e30bc033f21a7789199c2a94ab4c1 - md5: 43fa4a1c11fe12b55f984e32501a1a09 + size: 124329785 + timestamp: 1736745440780 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025011305-3.12release.conda + sha256: 60c1537b9cfa1cf05251ade5f0b2940510b15ae602ac22bb3aa4b3c44456f58d + md5: 93a397ced422b7638a542d8908e5ce18 depends: - - max-core ==25.1.0.dev2025011205 release + - max-core ==25.1.0.dev2025011305 release - python 3.12.* - fastapi - httpx @@ -4852,13 +4852,13 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 128073303 - timestamp: 1736659028481 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025011205-3.12release.conda - sha256: c6b332a826824959a196a09095bca25ff614ec2b05939683f2971160dd1a0b25 - md5: 1cf2f5ed4307f35ea22c392734a54751 + size: 128095121 + timestamp: 1736745375385 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025011305-3.12release.conda + sha256: 889f09c1c43dc5dc9563a97947df8b2087887547023a311a4d25aba186342c84 + md5: 4e81030c0a232a6cba739472c7a29855 depends: - - max-core ==25.1.0.dev2025011205 release + - max-core ==25.1.0.dev2025011305 release - python 3.12.* - fastapi - httpx @@ -4879,12 +4879,12 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 110696805 - timestamp: 1736660251823 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011205-release.conda + size: 110700356 + timestamp: 1736745640917 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011305-release.conda noarch: python - sha256: a31c5c6330eb6638ee1698cea23e0bdd9c1acc1560c37437cda156a4913ee27f - md5: aea163e4e020e7ab6c44476abb1e5c2b + sha256: a146eceb109dbdcf93e44b2ac3d09796c9f78ac05e5e81a2e325749e05f8bda5 + md5: a1240273ce6e690ad5f01ed918d9859a depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -4894,8 +4894,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130806 - timestamp: 1736659018397 + size: 130814 + timestamp: 1736745375380 - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda sha256: 78c1bbe1723449c52b7a9df1af2ee5f005209f67e40b6e1d3c7619127c43b1c7 md5: 592132998493b3ff25fd7479396e8351 @@ -4905,18 +4905,18 @@ packages: license_family: MIT size: 14465 timestamp: 1733255681319 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011205-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011305-release.conda noarch: python - sha256: 42260d58dd242c60715f8fc8c826860087566cb3946a0bcb6a6ba38a6b213014 - md5: 437e3994be83b2370d71635c5c5b616a + sha256: eb73c8aebae252f558d0142ceaf5d166247f74b3722d2e02f1419f954fa518ab + md5: b6ea7ab915ee88e290e186b97413abdd depends: - - max-core ==25.1.0.dev2025011205 release + - max-core ==25.1.0.dev2025011305 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22934 - timestamp: 1736659018398 + size: 22932 + timestamp: 1736745375381 - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py312h178313f_2.conda sha256: b05bc8252a6e957bf4a776ed5e0e61d1ba88cdc46ccb55890c72cc58b10371f4 md5: 5b5e3267d915a107eca793d52e1b780a @@ -5011,37 +5011,37 @@ packages: license_family: MIT size: 10854 timestamp: 1733230986902 -- conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-he02047a_1.conda - sha256: 6a1d5d8634c1a07913f1c525db6455918cbc589d745fac46d9d6e30340c8731a - md5: 70caf8bb6cf39a0b6b7efc885f51c0fe +- conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_2.conda + sha256: 17fe6afd8a00446010220d52256bd222b1e4fcb93bd587e7784b03219f3dc358 + md5: 04b34b9a40cdc48cfdab261ab176ff74 depends: - __glibc >=2.17,<3.0.a0 - - libgcc-ng >=12 + - libgcc >=13 arch: x86_64 platform: linux license: X11 AND BSD-3-Clause - size: 889086 - timestamp: 1724658547447 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-hcccb83c_1.conda - sha256: acad4cf1f57b12ee1e42995e6fac646fa06aa026529f05eb8c07eb0a84a47a84 - md5: 91d49c85cacd92caa40cf375ef72a25d + size: 894452 + timestamp: 1736683239706 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-ha32ae93_2.conda + sha256: 9fd726174dde993c560dd6fa1a383e61d546d380e98e0b0348d22512e5d86e24 + md5: 779046fb585c71373e8a051be06c6011 depends: - - libgcc-ng >=12 + - libgcc >=13 arch: aarch64 platform: linux license: X11 AND BSD-3-Clause - size: 924472 - timestamp: 1724658573518 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h7bae524_1.conda - sha256: 27d0b9ff78ad46e1f3a6c96c479ab44beda5f96def88e2fe626e0a49429d8afc - md5: cb2b0ea909b97b3d70cd3921d1445e1a + size: 928402 + timestamp: 1736683192463 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_2.conda + sha256: b45c73348ec9841d5c893acc2e97adff24127548fe8c786109d03c41ed564e91 + md5: f6f7c5b7d0983be186c46c4f6f8f9af8 depends: - __osx >=11.0 arch: arm64 platform: osx license: X11 AND BSD-3-Clause - size: 802321 - timestamp: 1724658775723 + size: 796754 + timestamp: 1736683572099 - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda sha256: fe3459c75cf84dcef6ef14efcc4adb0ade66038ddd27cadb894f34f4797687d8 md5: d8285bea2a350f63fab23bf460221f3f From 365be3655ca6bbb01141636dece69a18eb315875 Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Sun, 12 Jan 2025 22:56:09 -0800 Subject: [PATCH 211/509] [mojo-stdlib] Use prettier syntax to get trait metatypes. Trait metatypes are directly accessible through `__type_of` now that all the plumbing is wired together correctly (and probably was before as well). Use `__type_of` instead of low-level MLIR nonsense. MODULAR_ORIG_COMMIT_REV_ID: 573b3620f974852d09886c0f33c3ae844313fbc5 --- stdlib/src/builtin/builtin_list.mojo | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/stdlib/src/builtin/builtin_list.mojo b/stdlib/src/builtin/builtin_list.mojo index 535ccf206f..2540db3735 100644 --- a/stdlib/src/builtin/builtin_list.mojo +++ b/stdlib/src/builtin/builtin_list.mojo @@ -457,7 +457,7 @@ struct VariadicListMem[ # ===-----------------------------------------------------------------------===# -alias _AnyTypeMetaType = __mlir_type[`!lit.anytrait<`, AnyType, `>`] +alias _AnyTypeMetaType = __type_of(AnyType) @register_passable From bcd638a882b9cb10abac12c404b47ce6e0b43e84 Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Sun, 12 Jan 2025 23:29:29 -0800 Subject: [PATCH 212/509] [mojo-lang] Fix indexing of homogenous tuples. This fixes indexing of homogenous Tuple values to know that the element type is always consistent, even if indexed with a comptime-dynamic parameter value. This eliminates the need for rebind-like operations with obviously-homogenous tuples. This finishes up the work and fixes [Internal link] MODULAR_ORIG_COMMIT_REV_ID: 879a851adf9bc3763457f3c842bb9ba75fbddfde --- docs/changelog.md | 8 ++++++++ stdlib/benchmarks/collections/bench_dict.mojo | 4 ++-- stdlib/benchmarks/collections/bench_string.mojo | 8 ++++---- stdlib/src/collections/string/string_slice.mojo | 2 +- stdlib/test/builtin/test_simd.mojo | 4 ++-- 5 files changed, 17 insertions(+), 9 deletions(-) diff --git a/docs/changelog.md b/docs/changelog.md index af03864c57..6bcf9a5976 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -34,6 +34,14 @@ what we publish. `ExplicitlyCopyable` trait. This will ease the transition to explicit copyablility requirements by default in the Mojo collection types. +- Indexing into a homogenous tuple now produces the consistent element type + without needing a rebind: + + ```mojo + var x = (1, 2, 3, 3, 4) + var y : Int = x[idx] # Just works! + ``` + ### Standard library changes - The `int` function to construct an `Int` has been removed, this was a diff --git a/stdlib/benchmarks/collections/bench_dict.mojo b/stdlib/benchmarks/collections/bench_dict.mojo index a4ed39e99f..e5d4ba2e37 100644 --- a/stdlib/benchmarks/collections/bench_dict.mojo +++ b/stdlib/benchmarks/collections/bench_dict.mojo @@ -132,7 +132,7 @@ def main(): @parameter for i in range(len(sizes)): - alias size = sizes.get[i, Int]() + alias size = sizes[i] m.bench_function[bench_dict_insert[size]]( BenchId("bench_dict_insert[" + str(size) + "]") ) @@ -144,7 +144,7 @@ def main(): @parameter for i in range(len(sizes)): - alias size = sizes.get[i, Int]() + alias size = sizes[i] var mem_s = total_bytes_used(make_dict[size]()) print( '"bench_dict_memory_size[' + str(size) + ']",' + str(mem_s) + ",0" diff --git a/stdlib/benchmarks/collections/bench_string.mojo b/stdlib/benchmarks/collections/bench_string.mojo index 8805ac9d06..ee7647989a 100644 --- a/stdlib/benchmarks/collections/bench_string.mojo +++ b/stdlib/benchmarks/collections/bench_string.mojo @@ -255,13 +255,13 @@ def main(): @parameter for i in range(len(lengths)): - alias length = lengths.get[i, Int]() + alias length = lengths[i] @parameter for j in range(len(filenames)): - alias fname = filenames.get[j, StringLiteral]() - alias old = old_chars.get[j, StringLiteral]() - alias new = new_chars.get[j, StringLiteral]() + alias fname = filenames[j] + alias old = old_chars[j] + alias new = new_chars[j] suffix = "[" + str(length) + "]" # "(" + fname + ")" m.bench_function[bench_string_count[length, fname, old]]( BenchId("bench_string_count" + suffix) diff --git a/stdlib/src/collections/string/string_slice.mojo b/stdlib/src/collections/string/string_slice.mojo index 06ed5b66d7..974f2a4e6e 100644 --- a/stdlib/src/collections/string/string_slice.mojo +++ b/stdlib/src/collections/string/string_slice.mojo @@ -45,7 +45,7 @@ fn _count_utf8_continuation_bytes(span: Span[Byte]) -> Int: @parameter for i in range(len(sizes)): - alias s = sizes.get[i, Int]() + alias s = sizes[i] @parameter if simdwidthof[DType.uint8]() >= s: diff --git a/stdlib/test/builtin/test_simd.mojo b/stdlib/test/builtin/test_simd.mojo index 2e85459f3a..c9c4a9ed53 100644 --- a/stdlib/test/builtin/test_simd.mojo +++ b/stdlib/test/builtin/test_simd.mojo @@ -305,7 +305,7 @@ def test_truthy(): @parameter fn test_dtype_unrolled[i: Int]() raises: - alias type = dtypes.get[i, DType]() + alias type = dtypes[i] test_dtype[type]() unroll[test_dtype_unrolled, dtypes.__len__()]() @@ -1837,7 +1837,7 @@ def test_comparison(): @parameter fn test_dtype_unrolled[i: Int]() raises: - alias type = dtypes.get[i, DType]() + alias type = dtypes[i] test_dtype[type]() unroll[test_dtype_unrolled, dtypes.__len__()]() From 44ac88cf220a2c678030f3040b8772b1c1f5c267 Mon Sep 17 00:00:00 2001 From: abdul dakkak Date: Mon, 13 Jan 2025 05:56:21 -0800 Subject: [PATCH 213/509] Revert "[Stdlib] Add convenience methods to check if pointer is None" MODULAR_ORIG_COMMIT_REV_ID: 043ce040493b8eef320dd1acb414e6c30ee7c32d --- docs/changelog.md | 4 -- stdlib/src/memory/unsafe_pointer.mojo | 48 ---------------------- stdlib/test/memory/test_unsafepointer.mojo | 11 ----- 3 files changed, 63 deletions(-) diff --git a/docs/changelog.md b/docs/changelog.md index 6bcf9a5976..0077d2f04b 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -171,10 +171,6 @@ what we publish. - `bit_ceil` has been renamed to `next_power_of_two`, and `bit_floor` to `prev_power_of_two`. This is to improve readability and clarity in their use. -- The `UnsafePointer` type now is comparable against the `None` type. This - enables one to write code like `if ptr is not None:` to check if the value - of the pointer is not a null ptr. - - The `Indexer` and `IntLike` traits which were previously both used for indexing have been combined. This enables SIMD scalar integer types and UInt to be used for indexing into all of the collection types, as well as diff --git a/stdlib/src/memory/unsafe_pointer.mojo b/stdlib/src/memory/unsafe_pointer.mojo index eb430aaea5..c2aefe847e 100644 --- a/stdlib/src/memory/unsafe_pointer.mojo +++ b/stdlib/src/memory/unsafe_pointer.mojo @@ -320,18 +320,6 @@ struct UnsafePointer[ """ return Int(self) == Int(rhs) - @always_inline("nodebug") - fn __eq__(self, none: NoneType) -> Bool: - """Returns True if the pointer is null. - - Args: - none: The NoneType value. - - Returns: - True if the pointer is null and False otherwise. - """ - return not self - @__unsafe_disable_nested_origin_exclusivity @always_inline("nodebug") fn __ne__(self, rhs: Self) -> Bool: @@ -345,18 +333,6 @@ struct UnsafePointer[ """ return not (self == rhs) - @always_inline("nodebug") - fn __ne__(self, none: NoneType) -> Bool: - """Returns True if the pointer is not null. - - Args: - none: The NoneType value. - - Returns: - True if the pointer is null and False otherwise. - """ - return self - @__unsafe_disable_nested_origin_exclusivity @always_inline("nodebug") fn __lt__(self, rhs: Self) -> Bool: @@ -413,30 +389,6 @@ struct UnsafePointer[ """ return Int(self) >= Int(rhs) - @always_inline("nodebug") - fn __is__(self, none: NoneType) -> Bool: - """Returns True if the pointer is null. - - Args: - none: The NoneType value. - - Returns: - True if the pointer is null and False otherwise. - """ - return self == None - - @always_inline("nodebug") - fn __isnot__(self, none: NoneType) -> Bool: - """Returns True if the pointer is not null. - - Args: - none: The NoneType value. - - Returns: - True if the pointer is not null and False otherwise. - """ - return self != None - # ===-------------------------------------------------------------------===# # Trait implementations # ===-------------------------------------------------------------------===# diff --git a/stdlib/test/memory/test_unsafepointer.mojo b/stdlib/test/memory/test_unsafepointer.mojo index 34ce70e5b1..5e8fefc1f5 100644 --- a/stdlib/test/memory/test_unsafepointer.mojo +++ b/stdlib/test/memory/test_unsafepointer.mojo @@ -162,17 +162,6 @@ def test_eq(): var p4 = UnsafePointer.address_of(local).origin_cast[mut=False]() assert_equal(p1, p4) - - var p5 = UnsafePointer[Int]() - assert_true(p5 == None) - assert_true(p5 is None) - assert_false(p5 != None) - assert_false(p5 is not None) - assert_false(p1 == None) - assert_false(p1 is None) - assert_true(p1 != None) - assert_true(p1 is not None) - _ = local _ = other_local From 38127618f296e91a8ef97f8812220f40db46ee55 Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Mon, 13 Jan 2025 09:35:20 -0800 Subject: [PATCH 214/509] [mojo-stdlib] Remove the `Tuple.get` method. This old method serves as a combination of an "index + rebind" operation. remove it and expand the relevant users to remove a footgun. We should also fix `ListLiteral` to follow. This fixes https://github.com/modularml/mojo/issues/3935 MODULAR_ORIG_COMMIT_REV_ID: ec2396f2626f01ea29bb9e9c1a72a52161702f5b --- docs/changelog.md | 5 +++++ stdlib/src/builtin/builtin_list.mojo | 3 ++- stdlib/src/builtin/tuple.mojo | 17 +---------------- stdlib/src/python/python_object.mojo | 12 ++++++------ 4 files changed, 14 insertions(+), 23 deletions(-) diff --git a/docs/changelog.md b/docs/changelog.md index 0077d2f04b..ab4491d523 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -229,6 +229,8 @@ what we publish. - Added `Path` explicit constructor from `StringSlice`. - removed `StringRef.startswith()` and `StringRef.endswith()` - removed `StringRef.strip()` +- The `Tuple.get[i, T]()` method has been removed. Please use `tup[i]` or + `rebind[T](tup[i])` as needed instead. ### 🛠️ Fixed @@ -248,3 +250,6 @@ what we publish. - The Mojo Language Server doesn't crash anymore on empty **init**.mojo files. [Issue #3826](https://github.com/modularml/mojo/issues/3826). + +- [Issue #3935](https://github.com/modularml/mojo/issues/3935) - Confusing OOM + error when using Tuple.get incorrectly. diff --git a/stdlib/src/builtin/builtin_list.mojo b/stdlib/src/builtin/builtin_list.mojo index 2540db3735..b89b9db1c6 100644 --- a/stdlib/src/builtin/builtin_list.mojo +++ b/stdlib/src/builtin/builtin_list.mojo @@ -91,6 +91,7 @@ struct ListLiteral[*Ts: CollectionElement](Sized, CollectionElement): # Methods # ===-------------------------------------------------------------------===# + # FIXME: This should have a getitem like Tuple does, not a "get" method. @always_inline fn get[i: Int, T: CollectionElement](self) -> ref [self.storage] T: """Get a list element at the given index. @@ -102,7 +103,7 @@ struct ListLiteral[*Ts: CollectionElement](Sized, CollectionElement): Returns: The element at the given index. """ - return self.storage.get[i, T]() + return rebind[T](self.storage[i]) # ===-------------------------------------------------------------------===# # Operator dunders diff --git a/stdlib/src/builtin/tuple.mojo b/stdlib/src/builtin/tuple.mojo index 523e322ebc..57a7950944 100644 --- a/stdlib/src/builtin/tuple.mojo +++ b/stdlib/src/builtin/tuple.mojo @@ -186,21 +186,6 @@ struct Tuple[*element_types: CollectionElement](Sized, CollectionElement): # Use an immortal mut reference, which converts to self's origin. return UnsafePointer(elt_kgen_ptr)[] - # TODO(#38268): Remove this method when references and parameter expressions - # cooperate better. We can't handle the use in test_simd without this. - @always_inline("nodebug") - fn get[i: Int, T: CollectionElement](ref self) -> ref [self] T: - """Get a tuple element and rebind to the specified type. - - Parameters: - i: The element index. - T: The element type. - - Returns: - The tuple element at the requested index. - """ - return rebind[T](self[i]) - @always_inline("nodebug") fn __contains__[ T: EqualityComparableCollectionElement @@ -230,7 +215,7 @@ struct Tuple[*element_types: CollectionElement](Sized, CollectionElement): @parameter if _type_is_eq[element_types[i], T](): - if self.get[i, T]() == value: + if rebind[T](self[i]) == value: return True return False diff --git a/stdlib/src/python/python_object.mojo b/stdlib/src/python/python_object.mojo index 4abc013786..e247ec033b 100644 --- a/stdlib/src/python/python_object.mojo +++ b/stdlib/src/python/python_object.mojo @@ -499,21 +499,21 @@ struct PythonObject( @parameter if _type_is_eq[T, PythonObject](): - obj = value.get[i, PythonObject]() + obj = rebind[PythonObject](value[i]) elif _type_is_eq[T, Int](): - obj = PythonObject(value.get[i, Int]()) + obj = PythonObject(rebind[Int](value[i])) elif _type_is_eq[T, Float64](): - obj = PythonObject(value.get[i, Float64]()) + obj = PythonObject(rebind[Float64](value[i])) elif _type_is_eq[T, Bool](): - obj = PythonObject(value.get[i, Bool]()) + obj = PythonObject(rebind[Bool](value[i])) elif _type_is_eq[T, StringRef](): obj = PythonObject( StringSlice[MutableAnyOrigin]( - unsafe_from_utf8_strref=value.get[i, StringRef]() + unsafe_from_utf8_strref=rebind[StringRef](value[i]) ) ) elif _type_is_eq[T, StringLiteral](): - obj = PythonObject(value.get[i, StringLiteral]()) + obj = PythonObject(rebind[StringLiteral](value[i])) else: obj = PythonObject(0) constrained[ From 9a887af12a73bab2b13487d4cb8ffd80ce31fcbe Mon Sep 17 00:00:00 2001 From: Billy Zhu Date: Mon, 13 Jan 2025 10:18:31 -0800 Subject: [PATCH 215/509] [stdlib] Resolve FIXME(#53331) Fixed a crash in debuginfo emission to resolve FIXME(#53331). MODULAR_ORIG_COMMIT_REV_ID: 62d1d6c2c03d8b81e63eefcec30526991b48be50 --- stdlib/src/utils/index.mojo | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/stdlib/src/utils/index.mojo b/stdlib/src/utils/index.mojo index 27dc95bbb3..5a1d0c1aed 100644 --- a/stdlib/src/utils/index.mojo +++ b/stdlib/src/utils/index.mojo @@ -517,9 +517,7 @@ struct IndexList[ The resulting index tuple. """ - # FIXME(#53331) - nodebug is required otherwise we crash in debug - # information generation. - @always_inline("nodebug") + @always_inline fn apply_fn[ type: DType ](a: Scalar[type], b: Scalar[type]) -> Scalar[type]: From b9238f5f95facbc2a90ba25a0269966d3322464e Mon Sep 17 00:00:00 2001 From: abdul dakkak Date: Mon, 13 Jan 2025 10:48:46 -0800 Subject: [PATCH 216/509] [Stdlib] Split the comparable trait into its constituents, NFC MODULAR_ORIG_COMMIT_REV_ID: 1faad81c86f61961fc99e8d936c4f15e0aac8f3e --- stdlib/src/builtin/comparable.mojo | 41 ++++++++++++++++++++++++------ 1 file changed, 33 insertions(+), 8 deletions(-) diff --git a/stdlib/src/builtin/comparable.mojo b/stdlib/src/builtin/comparable.mojo index 7d74b062fd..5f503487d9 100644 --- a/stdlib/src/builtin/comparable.mojo +++ b/stdlib/src/builtin/comparable.mojo @@ -12,8 +12,8 @@ # ===----------------------------------------------------------------------=== # -trait Comparable(EqualityComparable): - """A type which can be compared with other instances of itself.""" +trait LessThanComparable: + """A type which can be less than compared with other instances of itself.""" fn __lt__(self, rhs: Self) -> Bool: """Define whether `self` is less than `rhs`. @@ -26,28 +26,43 @@ trait Comparable(EqualityComparable): """ ... - fn __le__(self, rhs: Self) -> Bool: - """Define whether `self` is less than or equal to `rhs`. + +trait GreaterThanComparable: + """A type which can be greater than compared with other instances of itself. + """ + + fn __gt__(self, rhs: Self) -> Bool: + """Define whether `self` is greater than `rhs`. Args: rhs: The right hand side of the comparison. Returns: - True if `self` is less than or equal to `rhs`. + True if `self` is greater than `rhs`. """ ... - fn __gt__(self, rhs: Self) -> Bool: - """Define whether `self` is greater than `rhs`. + +trait LessThanOrEqualComparable: + """A type which can be less than or equal to compared with other instances of itself. + """ + + fn __le__(self, rhs: Self) -> Bool: + """Define whether `self` is less than or equal to `rhs`. Args: rhs: The right hand side of the comparison. Returns: - True if `self` is greater than `rhs`. + True if `self` is less than or equal to `rhs`. """ ... + +trait GreaterThanOrEqualComparable: + """A type which can be greater than or equal to compared with other instances of itself. + """ + fn __ge__(self, rhs: Self) -> Bool: """Define whether `self` is greater than or equal to `rhs`. @@ -58,3 +73,13 @@ trait Comparable(EqualityComparable): True if `self` is greater than or equal to `rhs`. """ ... + + +trait Comparable( + EqualityComparable, + LessThanComparable, + GreaterThanComparable, + LessThanOrEqualComparable, + GreaterThanOrEqualComparable, +): + """A type which can be compared with other instances of itself.""" From 81beca28ef162961da82acbf2a69939c4c9eda7f Mon Sep 17 00:00:00 2001 From: Roberto Torrez Date: Mon, 13 Jan 2025 13:30:24 -0800 Subject: [PATCH 217/509] [External] [examples] Add missing import for UnsafePointer (#53821) [External] [examples] Add missing import for UnsafePointer Add missing import for UnsafePointer on MandelBrot notebook example Co-authored-by: Roberto Torrez Closes modularml/mojo#3940 MODULAR_ORIG_COMMIT_REV_ID: 421b8fa873208e0a964b6a3fb5a09eeafa107fd3 --- examples/notebooks/Mandelbrot.ipynb | 765 ++++++++++++++-------------- 1 file changed, 383 insertions(+), 382 deletions(-) diff --git a/examples/notebooks/Mandelbrot.ipynb b/examples/notebooks/Mandelbrot.ipynb index 4dcec04c6a..348d0013ff 100644 --- a/examples/notebooks/Mandelbrot.ipynb +++ b/examples/notebooks/Mandelbrot.ipynb @@ -1,384 +1,385 @@ { - "cells": [ - { - "cell_type": "raw", - "metadata": {}, - "source": [ - "---\n", - "title: Mandelbrot in Mojo with Python plots\n", - "description: Learn how to write high-performance Mojo code and import Python packages.\n", - "website:\n", - " open-graph:\n", - " image: /static/images/mojo-social-card.png\n", - " twitter-card:\n", - " image: /static/images/mojo-social-card.png\n", - "---" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "[//]: # REMOVE_FOR_WEBSITE\n", - "*Copyright 2023 Modular, Inc: Licensed under the Apache License v2.0 with LLVM Exceptions.*" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "[//]: # REMOVE_FOR_WEBSITE\n", - "# Mandelbrot in Mojo with Python plots\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Not only is Mojo great for writing high-performance code, but it also allows us to leverage the huge Python ecosystem of libraries and tools. With seamless Python interoperability, Mojo can use Python for what it's good at, especially GUIs, without sacrificing performance in critical code. Let's take the classic Mandelbrot set algorithm and implement it in Mojo.\n", - "\n", - "This tutorial shows two aspects of Mojo. First, it shows that Mojo can be used to develop fast programs for irregular applications. It also shows how we can leverage Python for visualizing the results." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "#|code-fold: true\n", - "import benchmark\n", - "from math import iota\n", - "from sys import num_physical_cores, simdwidthof\n", - "from algorithm import parallelize, vectorize\n", - "from complex import ComplexFloat64, ComplexSIMD\n", - "from python import Python\n", - "\n", - "alias float_type = DType.float32\n", - "alias int_type = DType.int32\n", - "alias simd_width = 2 * simdwidthof[float_type]()\n", - "alias unit = benchmark.Unit.ms" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "First set some parameters, you can try changing these to see different results:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "alias width = 960\n", - "alias height = 960\n", - "alias MAX_ITERS = 200\n", - "\n", - "alias min_x = -2.0\n", - "alias max_x = 0.6\n", - "alias min_y = -1.5\n", - "alias max_y = 1.5" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Here we define a simple `Matrix` struct:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "@value\n", - "struct Matrix[type: DType, rows: Int, cols: Int]:\n", - " var data: UnsafePointer[Scalar[type]]\n", - "\n", - " fn __init__(out self):\n", - " self.data = UnsafePointer[Scalar[type]].alloc(rows * cols)\n", - "\n", - " fn __getitem__(self, row: Int, col: Int) -> Scalar[type]:\n", - " return self.data.load(row * cols + col)\n", - "\n", - " fn store[width: Int = 1](self, row: Int, col: Int, val: SIMD[type, width]):\n", - " self.data.store(row * cols + col, val)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The core [Mandelbrot](https://en.wikipedia.org/wiki/Mandelbrot_set) algorithm involves computing an iterative complex function for each pixel until it \"escapes\" the complex circle of radius 2, counting the number of iterations to escape:\n", - "\n", - "$$z_{i+1} = z_i^2 + c$$" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Compute the number of steps to escape.\n", - "def mandelbrot_kernel(c: ComplexFloat64) -> Int:\n", - " z = c\n", - " for i in range(MAX_ITERS):\n", - " z = z * z + c\n", - " if z.squared_norm() > 4:\n", - " return i\n", - " return MAX_ITERS\n", - "\n", - "\n", - "def compute_mandelbrot() -> Matrix[float_type, height, width]:\n", - " # create a matrix. Each element of the matrix corresponds to a pixel\n", - " matrix = Matrix[float_type, height, width]()\n", - "\n", - " dx = (max_x - min_x) / width\n", - " dy = (max_y - min_y) / height\n", - "\n", - " y = min_y\n", - " for row in range(height):\n", - " x = min_x\n", - " for col in range(width):\n", - " matrix.store(row, col, mandelbrot_kernel(ComplexFloat64(x, y)))\n", - " x += dx\n", - " y += dy\n", - " return matrix" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Plotting the number of iterations to escape with some color gives us the canonical Mandelbrot set plot. To render it we can directly leverage Python's `matplotlib` right from Mojo!\n", - "\n", - "First install the required libraries:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "%%python\n", - "from importlib.util import find_spec\n", - "import shutil\n", - "import subprocess\n", - "\n", - "fix = \"\"\"\n", - "-------------------------------------------------------------------------\n", - "fix following the steps here:\n", - " https://github.com/modularml/mojo/issues/1085#issuecomment-1771403719\n", - "-------------------------------------------------------------------------\n", - "\"\"\"\n", - "\n", - "def install_if_missing(name: str):\n", - " if find_spec(name):\n", - " return\n", - " print(\"missing\", name)\n", - " print(f\"{name} not found, installing...\")\n", - " try:\n", - " if shutil.which('python3'): python = \"python3\"\n", - " elif shutil.which('python'): python = \"python\"\n", - " else: raise (\"python not on path\" + fix)\n", - " subprocess.check_call([python, \"-m\", \"pip\", \"install\", name])\n", - " except:\n", - " raise ImportError(f\"{name} not found\" + fix)\n", - "\n", - "install_if_missing(\"numpy\")\n", - "install_if_missing(\"matplotlib\")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "def show_plot[type: DType](matrix: Matrix[type, height, width]):\n", - " alias scale = 10\n", - " alias dpi = 64\n", - "\n", - " np = Python.import_module(\"numpy\")\n", - " plt = Python.import_module(\"matplotlib.pyplot\")\n", - " colors = Python.import_module(\"matplotlib.colors\")\n", - "\n", - " numpy_array = np.zeros((height, width), np.float64)\n", - "\n", - " for row in range(height):\n", - " for col in range(width):\n", - " numpy_array.itemset((row, col), matrix[row, col])\n", - "\n", - " fig = plt.figure(1, [scale, scale * height // width], dpi)\n", - " ax = fig.add_axes([0.0, 0.0, 1.0, 1.0], False, 1)\n", - " light = colors.LightSource(315, 10, 0, 1, 1, 0)\n", - "\n", - " image = light.shade(numpy_array, plt.cm.hot, colors.PowerNorm(0.3), \"hsv\", 0, 0, 1.5)\n", - " plt.imshow(image)\n", - " plt.axis(\"off\")\n", - " plt.show()\n", - "\n", - "show_plot(compute_mandelbrot())" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Vectorizing Mandelbrot\n", - "We showed a naive implementation of the Mandelbrot algorithm, but there are two things we can do to speed it up. We can early-stop the loop iteration when a pixel is known to have escaped, and we can leverage Mojo's access to hardware by vectorizing the loop, computing multiple pixels simultaneously. To do that we will use the `vectorize` higher order generator.\n", - "\n", - "We start by defining our main iteration loop in a vectorized fashion" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "fn mandelbrot_kernel_SIMD[\n", - " simd_width: Int\n", - "](c: ComplexSIMD[float_type, simd_width]) -> SIMD[int_type, simd_width]:\n", - " \"\"\"A vectorized implementation of the inner mandelbrot computation.\"\"\"\n", - " var cx = c.re\n", - " var cy = c.im\n", - " var x = SIMD[float_type, simd_width](0)\n", - " var y = SIMD[float_type, simd_width](0)\n", - " var y2 = SIMD[float_type, simd_width](0)\n", - " var iters = SIMD[int_type, simd_width](0)\n", - "\n", - " var t: SIMD[DType.bool, simd_width] = True\n", - " for _ in range(MAX_ITERS):\n", - " if not any(t):\n", - " break\n", - " y2 = y * y\n", - " y = x.fma(y + y, cy)\n", - " t = x.fma(x, y2) <= 4\n", - " x = x.fma(x, cx - y2)\n", - " iters = t.select(iters + 1, iters)\n", - " return iters" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The above function is parameterized on the `simd_width` and processes simd_width pixels. It only escapes once all pixels within the vector lane are done. We can use the same iteration loop as above, but this time we vectorize within each row instead. We use the `vectorize` generator to make this a simple function call. The benchmark can run in parallel or just vectorized." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "fn run_mandelbrot(parallel: Bool) raises -> Float64:\n", - " var matrix = Matrix[int_type, height, width]()\n", - "\n", - " @parameter\n", - " fn worker(row: Int):\n", - " alias scale_x = (max_x - min_x) / width\n", - " alias scale_y = (max_y - min_y) / height\n", - "\n", - " @parameter\n", - " fn compute_vector[simd_width: Int](col: Int):\n", - " \"\"\"Each time we operate on a `simd_width` vector of pixels.\"\"\"\n", - " var cx = min_x + (col + iota[float_type, simd_width]()) * scale_x\n", - " var cy = min_y + row * SIMD[float_type, simd_width](scale_y)\n", - " var c = ComplexSIMD[float_type, simd_width](cx, cy)\n", - " matrix.store(row, col, mandelbrot_kernel_SIMD[simd_width](c))\n", - "\n", - " # Vectorize the call to compute_vector where call gets a chunk of pixels.\n", - " vectorize[compute_vector, simd_width](width)\n", - "\n", - " @parameter\n", - " fn bench():\n", - " for row in range(height):\n", - " worker(row)\n", - "\n", - " @parameter\n", - " fn bench_parallel():\n", - " parallelize[worker](height, height)\n", - "\n", - " var time: Float64 = 0\n", - " if parallel:\n", - " time = benchmark.run[bench_parallel](max_runtime_secs=0.5).mean(unit)\n", - " else:\n", - " time = benchmark.run[bench](max_runtime_secs=0.5).mean(unit)\n", - "\n", - " show_plot(matrix)\n", - " matrix.data.free()\n", - " return time\n", - "\n", - "vectorized = run_mandelbrot(parallel=False)\n", - "print(\"Vectorized:\", vectorized, unit)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Parallelizing Mandelbrot\n", - "While the vectorized implementation above is efficient, we can get better performance by parallelizing on the cols. This again is simple in Mojo using the `parallelize` higher order function:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "parallelized = run_mandelbrot(parallel=True)\n", - "print(\"Parallelized:\", parallelized, unit)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Benchmarking\n", - "\n", - "In this section we compare the vectorized speed to the parallelized speed " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "print(\"Number of physical cores:\", num_physical_cores())\n", - "print(\"Vectorized:\", vectorized, \"ms\")\n", - "print(\"Parallelized:\", parallelized, \"ms\")\n", - "#| CHECK: speedup\n", - "print(\"Parallel speedup:\", vectorized / parallelized)" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Mojo (nightly)", - "language": "mojo", - "name": "mojo-nightly-jupyter-kernel" - }, - "language_info": { - "codemirror_mode": { - "name": "mojo" - }, - "file_extension": ".mojo", - "mimetype": "text/x-mojo", - "name": "mojo" - }, - "orig_nbformat": 4 - }, - "nbformat": 4, - "nbformat_minor": 2 + "cells": [ + { + "cell_type": "raw", + "metadata": {}, + "source": [ + "---\n", + "title: Mandelbrot in Mojo with Python plots\n", + "description: Learn how to write high-performance Mojo code and import Python packages.\n", + "website:\n", + " open-graph:\n", + " image: /static/images/mojo-social-card.png\n", + " twitter-card:\n", + " image: /static/images/mojo-social-card.png\n", + "---" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "[//]: # REMOVE_FOR_WEBSITE\n", + "*Copyright 2023 Modular, Inc: Licensed under the Apache License v2.0 with LLVM Exceptions.*" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "[//]: # REMOVE_FOR_WEBSITE\n", + "# Mandelbrot in Mojo with Python plots\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Not only is Mojo great for writing high-performance code, but it also allows us to leverage the huge Python ecosystem of libraries and tools. With seamless Python interoperability, Mojo can use Python for what it's good at, especially GUIs, without sacrificing performance in critical code. Let's take the classic Mandelbrot set algorithm and implement it in Mojo.\n", + "\n", + "This tutorial shows two aspects of Mojo. First, it shows that Mojo can be used to develop fast programs for irregular applications. It also shows how we can leverage Python for visualizing the results." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "#|code-fold: true\n", + "import benchmark\n", + "from math import iota\n", + "from sys import num_physical_cores, simdwidthof\n", + "from algorithm import parallelize, vectorize\n", + "from complex import ComplexFloat64, ComplexSIMD\n", + "from python import Python\n", + "from memory import UnsafePointer\n", + "\n", + "alias float_type = DType.float32\n", + "alias int_type = DType.int32\n", + "alias simd_width = 2 * simdwidthof[float_type]()\n", + "alias unit = benchmark.Unit.ms" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "First set some parameters, you can try changing these to see different results:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "alias width = 960\n", + "alias height = 960\n", + "alias MAX_ITERS = 200\n", + "\n", + "alias min_x = -2.0\n", + "alias max_x = 0.6\n", + "alias min_y = -1.5\n", + "alias max_y = 1.5" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here we define a simple `Matrix` struct:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "@value\n", + "struct Matrix[type: DType, rows: Int, cols: Int]:\n", + " var data: UnsafePointer[Scalar[type]]\n", + "\n", + " fn __init__(out self):\n", + " self.data = UnsafePointer[Scalar[type]].alloc(rows * cols)\n", + "\n", + " fn __getitem__(self, row: Int, col: Int) -> Scalar[type]:\n", + " return self.data.load(row * cols + col)\n", + "\n", + " fn store[width: Int = 1](self, row: Int, col: Int, val: SIMD[type, width]):\n", + " self.data.store(row * cols + col, val)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The core [Mandelbrot](https://en.wikipedia.org/wiki/Mandelbrot_set) algorithm involves computing an iterative complex function for each pixel until it \"escapes\" the complex circle of radius 2, counting the number of iterations to escape:\n", + "\n", + "$$z_{i+1} = z_i^2 + c$$" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Compute the number of steps to escape.\n", + "def mandelbrot_kernel(c: ComplexFloat64) -> Int:\n", + " z = c\n", + " for i in range(MAX_ITERS):\n", + " z = z * z + c\n", + " if z.squared_norm() > 4:\n", + " return i\n", + " return MAX_ITERS\n", + "\n", + "\n", + "def compute_mandelbrot() -> Matrix[float_type, height, width]:\n", + " # create a matrix. Each element of the matrix corresponds to a pixel\n", + " matrix = Matrix[float_type, height, width]()\n", + "\n", + " dx = (max_x - min_x) / width\n", + " dy = (max_y - min_y) / height\n", + "\n", + " y = min_y\n", + " for row in range(height):\n", + " x = min_x\n", + " for col in range(width):\n", + " matrix.store(row, col, mandelbrot_kernel(ComplexFloat64(x, y)))\n", + " x += dx\n", + " y += dy\n", + " return matrix" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Plotting the number of iterations to escape with some color gives us the canonical Mandelbrot set plot. To render it we can directly leverage Python's `matplotlib` right from Mojo!\n", + "\n", + "First install the required libraries:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%python\n", + "from importlib.util import find_spec\n", + "import shutil\n", + "import subprocess\n", + "\n", + "fix = \"\"\"\n", + "-------------------------------------------------------------------------\n", + "fix following the steps here:\n", + " https://github.com/modularml/mojo/issues/1085#issuecomment-1771403719\n", + "-------------------------------------------------------------------------\n", + "\"\"\"\n", + "\n", + "def install_if_missing(name: str):\n", + " if find_spec(name):\n", + " return\n", + " print(\"missing\", name)\n", + " print(f\"{name} not found, installing...\")\n", + " try:\n", + " if shutil.which('python3'): python = \"python3\"\n", + " elif shutil.which('python'): python = \"python\"\n", + " else: raise (\"python not on path\" + fix)\n", + " subprocess.check_call([python, \"-m\", \"pip\", \"install\", name])\n", + " except:\n", + " raise ImportError(f\"{name} not found\" + fix)\n", + "\n", + "install_if_missing(\"numpy\")\n", + "install_if_missing(\"matplotlib\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "def show_plot[type: DType](matrix: Matrix[type, height, width]):\n", + " alias scale = 10\n", + " alias dpi = 64\n", + "\n", + " np = Python.import_module(\"numpy\")\n", + " plt = Python.import_module(\"matplotlib.pyplot\")\n", + " colors = Python.import_module(\"matplotlib.colors\")\n", + "\n", + " numpy_array = np.zeros((height, width), np.float64)\n", + "\n", + " for row in range(height):\n", + " for col in range(width):\n", + " numpy_array.itemset((row, col), matrix[row, col])\n", + "\n", + " fig = plt.figure(1, [scale, scale * height // width], dpi)\n", + " ax = fig.add_axes([0.0, 0.0, 1.0, 1.0], False, 1)\n", + " light = colors.LightSource(315, 10, 0, 1, 1, 0)\n", + "\n", + " image = light.shade(numpy_array, plt.cm.hot, colors.PowerNorm(0.3), \"hsv\", 0, 0, 1.5)\n", + " plt.imshow(image)\n", + " plt.axis(\"off\")\n", + " plt.show()\n", + "\n", + "show_plot(compute_mandelbrot())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Vectorizing Mandelbrot\n", + "We showed a naive implementation of the Mandelbrot algorithm, but there are two things we can do to speed it up. We can early-stop the loop iteration when a pixel is known to have escaped, and we can leverage Mojo's access to hardware by vectorizing the loop, computing multiple pixels simultaneously. To do that we will use the `vectorize` higher order generator.\n", + "\n", + "We start by defining our main iteration loop in a vectorized fashion" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "fn mandelbrot_kernel_SIMD[\n", + " simd_width: Int\n", + "](c: ComplexSIMD[float_type, simd_width]) -> SIMD[int_type, simd_width]:\n", + " \"\"\"A vectorized implementation of the inner mandelbrot computation.\"\"\"\n", + " var cx = c.re\n", + " var cy = c.im\n", + " var x = SIMD[float_type, simd_width](0)\n", + " var y = SIMD[float_type, simd_width](0)\n", + " var y2 = SIMD[float_type, simd_width](0)\n", + " var iters = SIMD[int_type, simd_width](0)\n", + "\n", + " var t: SIMD[DType.bool, simd_width] = True\n", + " for _ in range(MAX_ITERS):\n", + " if not any(t):\n", + " break\n", + " y2 = y * y\n", + " y = x.fma(y + y, cy)\n", + " t = x.fma(x, y2) <= 4\n", + " x = x.fma(x, cx - y2)\n", + " iters = t.select(iters + 1, iters)\n", + " return iters" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The above function is parameterized on the `simd_width` and processes simd_width pixels. It only escapes once all pixels within the vector lane are done. We can use the same iteration loop as above, but this time we vectorize within each row instead. We use the `vectorize` generator to make this a simple function call. The benchmark can run in parallel or just vectorized." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "fn run_mandelbrot(parallel: Bool) raises -> Float64:\n", + " var matrix = Matrix[int_type, height, width]()\n", + "\n", + " @parameter\n", + " fn worker(row: Int):\n", + " alias scale_x = (max_x - min_x) / width\n", + " alias scale_y = (max_y - min_y) / height\n", + "\n", + " @parameter\n", + " fn compute_vector[simd_width: Int](col: Int):\n", + " \"\"\"Each time we operate on a `simd_width` vector of pixels.\"\"\"\n", + " var cx = min_x + (col + iota[float_type, simd_width]()) * scale_x\n", + " var cy = min_y + row * SIMD[float_type, simd_width](scale_y)\n", + " var c = ComplexSIMD[float_type, simd_width](cx, cy)\n", + " matrix.store(row, col, mandelbrot_kernel_SIMD[simd_width](c))\n", + "\n", + " # Vectorize the call to compute_vector where call gets a chunk of pixels.\n", + " vectorize[compute_vector, simd_width](width)\n", + "\n", + " @parameter\n", + " fn bench():\n", + " for row in range(height):\n", + " worker(row)\n", + "\n", + " @parameter\n", + " fn bench_parallel():\n", + " parallelize[worker](height, height)\n", + "\n", + " var time: Float64 = 0\n", + " if parallel:\n", + " time = benchmark.run[bench_parallel](max_runtime_secs=0.5).mean(unit)\n", + " else:\n", + " time = benchmark.run[bench](max_runtime_secs=0.5).mean(unit)\n", + "\n", + " show_plot(matrix)\n", + " matrix.data.free()\n", + " return time\n", + "\n", + "vectorized = run_mandelbrot(parallel=False)\n", + "print(\"Vectorized:\", vectorized, unit)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Parallelizing Mandelbrot\n", + "While the vectorized implementation above is efficient, we can get better performance by parallelizing on the cols. This again is simple in Mojo using the `parallelize` higher order function:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "parallelized = run_mandelbrot(parallel=True)\n", + "print(\"Parallelized:\", parallelized, unit)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Benchmarking\n", + "\n", + "In this section we compare the vectorized speed to the parallelized speed " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(\"Number of physical cores:\", num_physical_cores())\n", + "print(\"Vectorized:\", vectorized, \"ms\")\n", + "print(\"Parallelized:\", parallelized, \"ms\")\n", + "#| CHECK: speedup\n", + "print(\"Parallel speedup:\", vectorized / parallelized)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Mojo (nightly)", + "language": "mojo", + "name": "mojo-nightly-jupyter-kernel" + }, + "language_info": { + "codemirror_mode": { + "name": "mojo" + }, + "file_extension": ".mojo", + "mimetype": "text/x-mojo", + "name": "mojo" + }, + "orig_nbformat": 4 + }, + "nbformat": 4, + "nbformat_minor": 2 } From df5423ca642912c9055f1097db1a96f5353a4034 Mon Sep 17 00:00:00 2001 From: abdul dakkak Date: Mon, 13 Jan 2025 17:05:04 -0800 Subject: [PATCH 218/509] [Stdlib] Add variadic max/min operation MODULAR_ORIG_COMMIT_REV_ID: e81afc4674019503713890af465d16f2ff811b03 --- docs/changelog.md | 2 ++ stdlib/src/builtin/math.mojo | 50 ++++++++++++++++++++++++++++++ stdlib/src/prelude/__init__.mojo | 8 ++++- stdlib/test/builtin/test_math.mojo | 8 +++++ 4 files changed, 67 insertions(+), 1 deletion(-) diff --git a/docs/changelog.md b/docs/changelog.md index ab4491d523..b1e027026d 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -213,6 +213,8 @@ what we publish. var inferred_size = float_vector.cast[DType.uint64]() # [42, 42, 42, 42] ``` +- You can now use `max()` and `min()` with variadic number of arguments. + ### Tooling changes - mblack (aka `mojo format`) no longer formats non-mojo files. This prevents diff --git a/stdlib/src/builtin/math.mojo b/stdlib/src/builtin/math.mojo index 843b380e88..28e3c72833 100644 --- a/stdlib/src/builtin/math.mojo +++ b/stdlib/src/builtin/math.mojo @@ -206,6 +206,31 @@ fn max[dtype: DType, //](x: SIMD[dtype, _], y: __type_of(x), /) -> __type_of(x): return __mlir_op.`pop.max`(x.value, y.value) +trait _CopyableGreaterThanComparable(Copyable, GreaterThanComparable): + ... + + +@always_inline +fn max[T: _CopyableGreaterThanComparable](x: T, *ys: T) -> T: + """Gets the maximum value from a sequence of values. + + Parameters: + T: A type that is both copyable and comparable with greater than. + + Args: + x: The first value to compare. + ys: Zero or more additional values to compare. + + Returns: + The maximum value from the input sequence. + """ + var res = x + for y in ys: + if y[] > res: + res = y[] + return res + + # ===----------------------------------------------------------------------=== # # min # ===----------------------------------------------------------------------=== # @@ -271,6 +296,31 @@ fn min[dtype: DType, //](x: SIMD[dtype, _], y: __type_of(x), /) -> __type_of(x): return __mlir_op.`pop.min`(x.value, y.value) +trait _CopyableLessThanComparable(Copyable, LessThanComparable): + ... + + +@always_inline +fn min[T: _CopyableLessThanComparable](x: T, *ys: T) -> T: + """Gets the minimum value from a sequence of values. + + Parameters: + T: A type that is both copyable and comparable with less than. + + Args: + x: The first value to compare. + ys: Zero or more additional values to compare. + + Returns: + The minimum value from the input sequence. + """ + var res = x + for y in ys: + if y[] < res: + res = y[] + return res + + # ===----------------------------------------------------------------------=== # # pow # ===----------------------------------------------------------------------=== # diff --git a/stdlib/src/prelude/__init__.mojo b/stdlib/src/prelude/__init__.mojo index 75b88c8700..a73a129610 100644 --- a/stdlib/src/prelude/__init__.mojo +++ b/stdlib/src/prelude/__init__.mojo @@ -39,8 +39,14 @@ from builtin.builtin_list import ( VariadicPack, ) from builtin.builtin_slice import Slice, slice +from builtin.comparable import ( + LessThanComparable, + GreaterThanComparable, + LessThanOrEqualComparable, + GreaterThanOrEqualComparable, + Comparable, +) from builtin.char import Char -from builtin.comparable import Comparable from builtin.constrained import constrained from builtin.coroutine import AnyCoroutine, Coroutine, RaisingCoroutine from builtin.debug_assert import debug_assert diff --git a/stdlib/test/builtin/test_math.mojo b/stdlib/test/builtin/test_math.mojo index 430d0ffde9..ec1304b926 100644 --- a/stdlib/test/builtin/test_math.mojo +++ b/stdlib/test/builtin/test_math.mojo @@ -59,6 +59,10 @@ def test_min(): assert_equal(min(i, I(-9, -6, -4, 11)), I(-10, -6, -4, 10)) assert_equal(min(i, -4), I(-10, -5, -4, -4)) + assert_equal(min(1), 1) + assert_equal(min(1, 2, 3, 4), 1) + assert_equal(min(500, 1, 2, 3, 4), 1) + def test_max(): assert_equal(-1, max(-2, -1)) @@ -79,6 +83,10 @@ def test_max(): assert_equal(max(i, I(-9, -6, -4, 11)), I(-9, -5, 5, 11)) assert_equal(max(i, -4), I(-4, -4, 5, 10)) + assert_equal(max(1), 1) + assert_equal(max(1, 2, 3, 4), 4) + assert_equal(max(-10, 2, 3, 4, -10), 4) + def test_round(): assert_equal(0, round(0.0)) From c4261ca853dcd1134fddc51f5515f4034bd88b25 Mon Sep 17 00:00:00 2001 From: Ken Jones <165197230+KenJones-Modular@users.noreply.github.com> Date: Mon, 13 Jan 2025 19:01:14 -0800 Subject: [PATCH 219/509] Added links to API references and fixed whitespace in code samples MODULAR_ORIG_COMMIT_REV_ID: 08f97ad1651fd8940c9d1e8bc6681ffb1460e007 --- docs/manual/get-started.mdx | 10 ++++++---- docs/manual/python/types.mdx | 30 ++++++++++++++++-------------- 2 files changed, 22 insertions(+), 18 deletions(-) diff --git a/docs/manual/get-started.mdx b/docs/manual/get-started.mdx index 9f27b5d5cc..8540761f2e 100644 --- a/docs/manual/get-started.mdx +++ b/docs/manual/get-started.mdx @@ -344,7 +344,7 @@ def main(): ## 5. Create and use a function to print the grid Now let's create a function to generate a string representation of the game grid -that we can print it to the terminal. +that we can print to the terminal. There are actually two different keywords that we can use to define functions in Mojo: `def` and `fn`. Using `fn` gives us finer level control over the function @@ -362,7 +362,7 @@ def grid_str(rows: Int, cols: Int, grid: List[List[Int]]) -> String: # Iterate through rows 0 through rows-1 for row in range(rows): - # Iterate through columns 0 through cols-1 + # Iterate through columns 0 through cols-1 for col in range(cols): if grid[row][col] == 1: str += "*" # If cell is populated, append an asterisk @@ -540,7 +540,7 @@ def grid_str(grid: Grid) -> String: # Iterate through rows 0 through rows-1 for row in range(grid.rows): - # Iterate through columns 0 through cols-1 + # Iterate through columns 0 through cols-1 for col in range(grid.cols): if grid.data[row][col] == 1: str += "*" # If cell is populated, append an asterisk @@ -876,7 +876,9 @@ respectively. This function actually returns a value of type `Int64`, which is a signed 64-bit integer value. As described in [Numeric types](/mojo/manual/types#numeric-types), this is *not* the same as the `Int` type whose precision is dependent on the native word size of the system. -Therefore we're passing this value to the built-in +Therefore we're passing this value to the +[`Int()`](/mojo/stdlib/builtin/int/Int/#__init__) constructor, which explicitly +converts a numeric value to an `Int`. The return type of the method is `Self`, which is an alias for the type of the struct. This is a convenient shortcut if the actual name of the struct is long diff --git a/docs/manual/python/types.mdx b/docs/manual/python/types.mdx index 90f75fb866..4aab0ace57 100644 --- a/docs/manual/python/types.mdx +++ b/docs/manual/python/types.mdx @@ -145,24 +145,26 @@ Some Mojo APIs handle `PythonObject` just fine, but sometimes you'll need to explicitly convert a Python value into a native Mojo value. Currently `PythonObject` conforms to the -[`Intable`](/mojo/stdlib/builtin/int/Intable), -[`Stringable`](/mojo/stdlib/builtin/str/Stringable), and -[`Boolable`](/mojo/stdlib/builtin/bool/Boolable) traits, which means you can -convert Python values to Mojo `String`, and `Bool` types using the -[`str()`](/mojo/stdlib/builtin/str/str) and -[`bool()`](/mojo/stdlib/builtin/bool/bool-function) functions, construct an -`Int` using `Int(python_object)`, and print Python values using the built-in -[`print()`](/mojo/stdlib/builtin/io/print) function. - -`PythonObject` also provides the -[`to_float64()`](/mojo/stdlib/python/python_object/PythonObject#to_float64) for -converting to a Mojo floating point value. +[`Stringable`](/mojo/stdlib/builtin/str/Stringable), +[`Boolable`](/mojo/stdlib/builtin/bool/Boolable), +[`Floatable`](/mojo/stdlib/builtin/floatable/Floatable/), and +[`Intable`](/mojo/stdlib/builtin/int/Intable) traits, which means you can +convert Python values to Mojo `String`, `Bool`, and `Float64` types using the +[`str()`](/mojo/stdlib/builtin/str/str), +[`bool()`](/mojo/stdlib/builtin/bool/bool-function) and +[`float()`](/mojo/stdlib/builtin/floatable/float/) built-in functions, and +construct an `Int` using the [`Int()`](/mojo/stdlib/builtin/int/Int/#__init__) +constructor. `PythonObject` also conforms to the +[`Writable`](/mojo/stdlib/utils/write/Writable) trait so that you can print +Python values using the built-in [`print()`](/mojo/stdlib/builtin/io/print) +function. ```mojo -var i: Int = Int(py_int) var s: String = str(py_string) var b: Bool = bool(py_bool) -var f: Float64 = py_float.to_float64() +var f: Float64 = float(py_float) +var i: Int = Int(py_int) +print(py_obj) ``` ### Comparing Python types in Mojo From ab8734fad5f5a943e5a90009400be3992994c5cb Mon Sep 17 00:00:00 2001 From: modularbot Date: Tue, 14 Jan 2025 06:37:23 +0000 Subject: [PATCH 220/509] Update lockfiles to point to latest nightly version: 25.1.0.dev2025011405 --- examples/life/magic.lock | 216 +++++++++++++++++++--------------- examples/magic.lock | 215 ++++++++++++++++++--------------- examples/notebooks/magic.lock | 176 +++++++++++++-------------- examples/operators/magic.lock | 215 ++++++++++++++++++--------------- magic.lock | 215 ++++++++++++++++++--------------- 5 files changed, 569 insertions(+), 468 deletions(-) diff --git a/examples/life/magic.lock b/examples/life/magic.lock index 594e9f6057..49b4b05dfd 100644 --- a/examples/life/magic.lock +++ b/examples/life/magic.lock @@ -170,12 +170,12 @@ 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-25.1.0.dev2025011305-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025011305-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025011305-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011405-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025011405-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025011405-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011405-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-25.1.0.dev2025011305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011405-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_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.15-py312h98912ed_1.conda @@ -266,7 +266,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/uvloop-0.21.0-py312h66e93f0_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/watchfiles-1.0.4-py312h12e396e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/websockets-14.1-py312h66e93f0_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.17.0-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.17.1-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libice-1.1.2-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libsm-1.2.5-he73a12e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libx11-1.8.10-h4f16b4b_1.conda @@ -446,12 +446,12 @@ 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-25.1.0.dev2025011305-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025011305-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025011305-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011405-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025011405-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025011405-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011405-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-25.1.0.dev2025011305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011405-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_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.15-py312hdd3e373_1.conda @@ -470,7 +470,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/opusfile-0.12-hf55b2d5_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/orc-2.0.3-hdd485aa_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pandas-2.2.3-py312ha2895bd_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pandas-2.2.3-py312ha2895bd_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pcre2-10.44-h070dd5b_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pillow-11.1.0-py312h719f0cf_0.conda @@ -542,7 +542,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/uvloop-0.21.0-py312hb2c0f52_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/watchfiles-1.0.4-py312h8cbf658_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/websockets-14.1-py312hb2c0f52_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/wrapt-1.17.0-py312hb2c0f52_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/wrapt-1.17.1-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libice-1.1.2-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libsm-1.2.5-h0808dbd_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libx11-1.8.10-hca56bd8_1.conda @@ -705,12 +705,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-25.1.0.dev2025011305-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025011305-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025011305-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011405-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025011405-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025011405-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011405-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-25.1.0.dev2025011305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011405-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 @@ -799,7 +799,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/uvloop-0.21.0-py312h0bf5046_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/watchfiles-1.0.4-py312hcd83bfe_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/websockets-14.1-py312hea69d52_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/wrapt-1.17.0-py312hea69d52_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/wrapt-1.17.1-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxau-1.0.12-h5505292_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxdmcp-1.1.5-hd74edd7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xxhash-0.8.2-hb547adb_0.conda @@ -2872,6 +2872,7 @@ packages: arch: aarch64 platform: linux license: MIT + license_family: MIT size: 1699707 timestamp: 1736705741483 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/harfbuzz-10.2.0-ha0dd535_0.conda @@ -6173,47 +6174,47 @@ packages: license_family: BSD size: 24048 timestamp: 1733219945697 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011305-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011405-release.conda noarch: python - sha256: a3a295fcdcd95629a1d495317f4fe0d3c52800616aadb33baa5b329a9b69309f - md5: 0d23fd60108dca58f6b01233b8732920 + sha256: eb52c601b49e24ffc270abd164d923de1cd7641ccc0c6d7457f51ae60d11e8db + md5: 11ccc7657b121e4c65ede378c793112f depends: - - max-core ==25.1.0.dev2025011305 release - - max-python >=25.1.0.dev2025011305,<26.0a0 - - mojo-jupyter ==25.1.0.dev2025011305 release - - mblack ==25.1.0.dev2025011305 release + - max-core ==25.1.0.dev2025011405 release + - max-python >=25.1.0.dev2025011405,<26.0a0 + - mojo-jupyter ==25.1.0.dev2025011405 release + - mblack ==25.1.0.dev2025011405 release license: LicenseRef-Modular-Proprietary - size: 9915 - timestamp: 1736745375375 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025011305-release.conda - sha256: 38cb73c75a529f060b1523552808db21fba526022cabda8c23bb020607f5bc73 - md5: e15ac442ae0aaa33ade5f177c4ecb5ef + size: 9916 + timestamp: 1736831822162 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025011405-release.conda + sha256: 6b70fb0b3ff451c344e75541912480a23f7f66ec4e823fb67215c55210bc238f + md5: 73aeefc77fbbd11c37f794e61bedcbce depends: - - mblack ==25.1.0.dev2025011305 release + - mblack ==25.1.0.dev2025011405 release license: LicenseRef-Modular-Proprietary - size: 244367885 - timestamp: 1736745440770 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025011305-release.conda - sha256: d5cd57f5b74fea8cb715d95d66ceea8d0fd9a7fc4f521a814ae12d1081a2bf6c - md5: 30136f977d5cd4113c7036f3b4263565 + size: 244270660 + timestamp: 1736831822160 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025011405-release.conda + sha256: b790059d25a546964ec54600d606cf507f046685f8b93768af09306e2789763d + md5: 8284a53ad8867fbebf5ff5872afcc683 depends: - - mblack ==25.1.0.dev2025011305 release + - mblack ==25.1.0.dev2025011405 release license: LicenseRef-Modular-Proprietary - size: 248040761 - timestamp: 1736745375373 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025011305-release.conda - sha256: 56010bbdb90c49b5d863b43709400791b7263791a5af281fb86b63e03f0e31a8 - md5: d96978d80b34cd4dd7fea5d3f3eba294 + size: 247897740 + timestamp: 1736831760973 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025011405-release.conda + sha256: e3f0a7f45a58997e93c62de0b02d657f5788074ed274c73ba42c8dbe4e4254ee + md5: 948b2059736f978eb8ef29e011c478aa depends: - - mblack ==25.1.0.dev2025011305 release + - mblack ==25.1.0.dev2025011405 release license: LicenseRef-Modular-Proprietary - size: 206549629 - timestamp: 1736745640913 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025011305-3.12release.conda - sha256: 66bce981da4327a1f0ce2ad2eb956c3ef2079cda452bd0d25151e28786a05d6d - md5: 39ea10f174e9072da8c5d7180998a714 + size: 206428789 + timestamp: 1736832175871 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025011405-3.12release.conda + sha256: 2ba61ee7777506ce94849a69fb0a10281208327ad12298cb399d7c143740a23a + md5: 4d373580ea92e6372951421273e89dbe depends: - - max-core ==25.1.0.dev2025011305 release + - max-core ==25.1.0.dev2025011405 release - python 3.12.* - fastapi - httpx @@ -6234,13 +6235,13 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 124329785 - timestamp: 1736745440780 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025011305-3.12release.conda - sha256: 60c1537b9cfa1cf05251ade5f0b2940510b15ae602ac22bb3aa4b3c44456f58d - md5: 93a397ced422b7638a542d8908e5ce18 + size: 124186493 + timestamp: 1736831822171 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025011405-3.12release.conda + sha256: 9f35e2f3c0aa425ab3b15f1aa141e498b2fb22f671823d4758116954a5f47ac0 + md5: 95a8013bcaf7a89866ca36ba40b0477d depends: - - max-core ==25.1.0.dev2025011305 release + - max-core ==25.1.0.dev2025011405 release - python 3.12.* - fastapi - httpx @@ -6261,13 +6262,13 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 128095121 - timestamp: 1736745375385 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025011305-3.12release.conda - sha256: 889f09c1c43dc5dc9563a97947df8b2087887547023a311a4d25aba186342c84 - md5: 4e81030c0a232a6cba739472c7a29855 + size: 127955783 + timestamp: 1736831760983 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025011405-3.12release.conda + sha256: bae7c656efa518c6ba652cf66b20b07b11054e6b3c7f5c4997a319138152b10b + md5: 38fdc325152b22296dc03d3574837998 depends: - - max-core ==25.1.0.dev2025011305 release + - max-core ==25.1.0.dev2025011405 release - python 3.12.* - fastapi - httpx @@ -6288,12 +6289,12 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 110700356 - timestamp: 1736745640917 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011305-release.conda + size: 110548095 + timestamp: 1736832175874 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011405-release.conda noarch: python - sha256: a146eceb109dbdcf93e44b2ac3d09796c9f78ac05e5e81a2e325749e05f8bda5 - md5: a1240273ce6e690ad5f01ed918d9859a + sha256: f22466f25b437c46a5e05b93ae7213639abdf1ddf8c48e8d2fc0f0a091cfd5a2 + md5: f588562602f7e3a17c1983f53eee1056 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -6304,7 +6305,7 @@ packages: - python license: MIT size: 130814 - timestamp: 1736745375380 + timestamp: 1736831822166 - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda sha256: 78c1bbe1723449c52b7a9df1af2ee5f005209f67e40b6e1d3c7619127c43b1c7 md5: 592132998493b3ff25fd7479396e8351 @@ -6314,18 +6315,18 @@ packages: license_family: MIT size: 14465 timestamp: 1733255681319 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011305-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011405-release.conda noarch: python - sha256: eb73c8aebae252f558d0142ceaf5d166247f74b3722d2e02f1419f954fa518ab - md5: b6ea7ab915ee88e290e186b97413abdd + sha256: a973705b113aa88f9769a5a5e21bb4bff6b86e77c4f66db1aac3be794c1ece88 + md5: 3a6fea9465e1a4ee3501f24fc1bbef98 depends: - - max-core ==25.1.0.dev2025011305 release + - max-core ==25.1.0.dev2025011405 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22932 - timestamp: 1736745375381 + size: 22933 + timestamp: 1736831822167 - conda: https://conda.anaconda.org/conda-forge/linux-64/mpg123-1.32.9-hc50e24c_0.conda sha256: 39c4700fb3fbe403a77d8cc27352fa72ba744db487559d5d44bf8411bb4ea200 md5: c7f302fd11eeb0987a6a5e1f3aed6a21 @@ -6838,9 +6839,9 @@ packages: license_family: BSD size: 15436913 timestamp: 1726879054912 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pandas-2.2.3-py312ha2895bd_1.conda - sha256: 585e05f95d14afe3df43ded14f86800c70da26b27e27b59de95932f8888af5d3 - md5: 80b873ac4fdf36641afa0eaafff3a664 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pandas-2.2.3-py312ha2895bd_2.conda + sha256: a34b10077de97eea72c81cb96e3ddc7d48320c0fc7d9b28ba8d9d2bead1d8297 + md5: 39a91ac336d350513de6aad56da5a920 depends: - libgcc >=13 - libstdcxx >=13 @@ -6852,12 +6853,37 @@ packages: - python-tzdata >=2022a - python_abi 3.12.* *_cp312 - pytz >=2020.1,<2024.2 + constrains: + - fsspec >=2022.11.0 + - s3fs >=2022.11.0 + - fastparquet >=2022.12.0 + - pyreadstat >=1.2.0 + - qtpy >=2.3.0 + - scipy >=1.10.0 + - beautifulsoup4 >=4.11.2 + - gcsfs >=2022.11.0 + - numexpr >=2.8.4 + - sqlalchemy >=2.0.0 + - pyxlsb >=1.0.10 + - numba >=0.56.4 + - lxml >=4.9.2 + - matplotlib >=3.6.3 + - psycopg2 >=2.9.6 + - tzdata >=2022.7 + - bottleneck >=1.3.6 + - xarray >=2022.12.0 + - xlsxwriter >=3.0.5 + - zstandard >=0.19.0 + - blosc >=1.21.3 + - pytables >=3.8.0 + - openpyxl >=3.1.0 + - pyqt5 >=5.15.8 + - tabulate >=0.9.0 arch: aarch64 platform: linux license: BSD-3-Clause - license_family: BSD - size: 15159625 - timestamp: 1726879151211 + size: 15162992 + timestamp: 1736811533875 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.3-py312hcd31e36_1.conda sha256: ff0cb54b5d058c7987b4a0984066e893642d1865a7bb695294b6172e2fcdc457 md5: c68bfa69e6086c381c74e16fd72613a8 @@ -8904,9 +8930,9 @@ packages: license_family: BSD size: 243131 timestamp: 1731498944076 -- conda: https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.17.0-py312h66e93f0_0.conda - sha256: a6fc0f4e90643d0c1fd4aab669b6a79f44a305a5474256f6f2da3354d2310fb4 - md5: ddbe3bb0e1356cb9074dd848570694f9 +- conda: https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.17.1-py312h66e93f0_0.conda + sha256: 8d5114497ca237b4a41f381a474571cfbd874b357a57005e1ef891fbe961e927 + md5: 31e36a1c68a03c501542a6c454963ffe depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -8916,11 +8942,11 @@ packages: platform: linux license: BSD-2-Clause license_family: BSD - size: 63807 - timestamp: 1732523690292 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/wrapt-1.17.0-py312hb2c0f52_0.conda - sha256: b9aa760a987ccc6bc9c61f57badba6798d9a3dcbd0814e5fb8df6d8d2935af73 - md5: 120d5d1c05386d8ce3efd65a4c86431f + size: 63794 + timestamp: 1736757851335 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/wrapt-1.17.1-py312hb2c0f52_0.conda + sha256: 105f16fa8db777bbda7ec195025007e0d591db3080536fbfbcd81eba230cd8e4 + md5: 6f091288846887f19f845688c3d7ca1e depends: - libgcc >=13 - python >=3.12,<3.13.0a0 @@ -8930,11 +8956,11 @@ packages: platform: linux license: BSD-2-Clause license_family: BSD - size: 64783 - timestamp: 1732523806 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/wrapt-1.17.0-py312hea69d52_0.conda - sha256: 0fb35c3d1642f9f47db87bdb33148f88ef19a3af1eb0ee99b5491551c57269c7 - md5: 73414acdb779a8694a14527865b4357a + size: 64616 + timestamp: 1736757911835 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/wrapt-1.17.1-py312hea69d52_0.conda + sha256: 213a18609ccfdde862a8fcf9d96b9133cc6ca0abf5953ed148b35a9c8eb27a9c + md5: e3a62bb92c2e71e95f0e3be67a5ff351 depends: - __osx >=11.0 - python >=3.12,<3.13.0a0 @@ -8944,8 +8970,8 @@ packages: platform: osx license: BSD-2-Clause license_family: BSD - size: 61043 - timestamp: 1732523852129 + size: 61365 + timestamp: 1736758030632 - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libice-1.1.2-hb9d3cd8_0.conda sha256: c12396aabb21244c212e488bbdc4abcdef0b7404b15761d9329f5a4a39113c4b md5: fb901ff28063514abb6046c9ec2c4a45 diff --git a/examples/magic.lock b/examples/magic.lock index b65adec021..c8d3938c86 100644 --- a/examples/magic.lock +++ b/examples/magic.lock @@ -131,12 +131,12 @@ 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-25.1.0.dev2025011305-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025011305-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025011305-3.11release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011405-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025011405-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025011405-3.11release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011405-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-25.1.0.dev2025011305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011405-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 @@ -213,7 +213,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/uvloop-0.21.0-py311h9ecbd09_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/watchfiles-1.0.4-py311h9e33e62_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/websockets-14.1-py311h9ecbd09_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.17.0-py311h9ecbd09_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.17.1-py311h9ecbd09_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xxhash-0.8.2-hd590300_0.conda @@ -349,12 +349,12 @@ 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-25.1.0.dev2025011305-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025011305-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025011305-3.11release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011405-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025011405-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025011405-3.11release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011405-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-25.1.0.dev2025011305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011405-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 @@ -371,7 +371,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.50b0-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/orc-2.0.3-hdd485aa_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pandas-2.2.3-py311h848c333_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pandas-2.2.3-py311h848c333_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pillow-11.1.0-py311ha4eaa5e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda @@ -431,7 +431,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/uvloop-0.21.0-py311ha879c10_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/watchfiles-1.0.4-py311h0ca61a2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/websockets-14.1-py311ha879c10_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/wrapt-1.17.0-py311ha879c10_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/wrapt-1.17.1-py311ha879c10_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxau-1.0.12-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxdmcp-1.1.5-h57736b2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xxhash-0.8.2-h31becfc_0.conda @@ -558,12 +558,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-25.1.0.dev2025011305-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025011305-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025011305-3.11release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011405-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025011405-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025011405-3.11release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011405-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-25.1.0.dev2025011305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011405-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 @@ -639,7 +639,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/uvloop-0.21.0-py311hae2e1ce_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/watchfiles-1.0.4-py311h3ff9189_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/websockets-14.1-py311h917b07b_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/wrapt-1.17.0-py311h917b07b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/wrapt-1.17.1-py311h917b07b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxau-1.0.12-h5505292_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxdmcp-1.1.5-hd74edd7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xxhash-0.8.2-hb547adb_0.conda @@ -4752,47 +4752,47 @@ packages: license_family: BSD size: 24976 timestamp: 1733219849253 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011305-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011405-release.conda noarch: python - sha256: a3a295fcdcd95629a1d495317f4fe0d3c52800616aadb33baa5b329a9b69309f - md5: 0d23fd60108dca58f6b01233b8732920 + sha256: eb52c601b49e24ffc270abd164d923de1cd7641ccc0c6d7457f51ae60d11e8db + md5: 11ccc7657b121e4c65ede378c793112f depends: - - max-core ==25.1.0.dev2025011305 release - - max-python >=25.1.0.dev2025011305,<26.0a0 - - mojo-jupyter ==25.1.0.dev2025011305 release - - mblack ==25.1.0.dev2025011305 release + - max-core ==25.1.0.dev2025011405 release + - max-python >=25.1.0.dev2025011405,<26.0a0 + - mojo-jupyter ==25.1.0.dev2025011405 release + - mblack ==25.1.0.dev2025011405 release license: LicenseRef-Modular-Proprietary - size: 9915 - timestamp: 1736745375375 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025011305-release.conda - sha256: 38cb73c75a529f060b1523552808db21fba526022cabda8c23bb020607f5bc73 - md5: e15ac442ae0aaa33ade5f177c4ecb5ef + size: 9916 + timestamp: 1736831822162 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025011405-release.conda + sha256: 6b70fb0b3ff451c344e75541912480a23f7f66ec4e823fb67215c55210bc238f + md5: 73aeefc77fbbd11c37f794e61bedcbce depends: - - mblack ==25.1.0.dev2025011305 release + - mblack ==25.1.0.dev2025011405 release license: LicenseRef-Modular-Proprietary - size: 244367885 - timestamp: 1736745440770 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025011305-release.conda - sha256: d5cd57f5b74fea8cb715d95d66ceea8d0fd9a7fc4f521a814ae12d1081a2bf6c - md5: 30136f977d5cd4113c7036f3b4263565 + size: 244270660 + timestamp: 1736831822160 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025011405-release.conda + sha256: b790059d25a546964ec54600d606cf507f046685f8b93768af09306e2789763d + md5: 8284a53ad8867fbebf5ff5872afcc683 depends: - - mblack ==25.1.0.dev2025011305 release + - mblack ==25.1.0.dev2025011405 release license: LicenseRef-Modular-Proprietary - size: 248040761 - timestamp: 1736745375373 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025011305-release.conda - sha256: 56010bbdb90c49b5d863b43709400791b7263791a5af281fb86b63e03f0e31a8 - md5: d96978d80b34cd4dd7fea5d3f3eba294 + size: 247897740 + timestamp: 1736831760973 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025011405-release.conda + sha256: e3f0a7f45a58997e93c62de0b02d657f5788074ed274c73ba42c8dbe4e4254ee + md5: 948b2059736f978eb8ef29e011c478aa depends: - - mblack ==25.1.0.dev2025011305 release + - mblack ==25.1.0.dev2025011405 release license: LicenseRef-Modular-Proprietary - size: 206549629 - timestamp: 1736745640913 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025011305-3.11release.conda - sha256: a9a51fab53f0fa575476deb9444289ffc4dbf814cfb9143253c57b8407265f81 - md5: 8ed16e66162a88d148d001470c0e18b4 + size: 206428789 + timestamp: 1736832175871 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025011405-3.11release.conda + sha256: b8bfb77cd0cfc82806c5c617da959641b4c91d5ab46935bfee55c99583c8de0f + md5: 705f4e4fc003b13c7a23e7478c1be9ca depends: - - max-core ==25.1.0.dev2025011305 release + - max-core ==25.1.0.dev2025011405 release - python 3.11.* - fastapi - httpx @@ -4813,13 +4813,13 @@ packages: - uvicorn - python_abi 3.11.* *_cp311 license: LicenseRef-Modular-Proprietary - size: 124343976 - timestamp: 1736745440777 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025011305-3.11release.conda - sha256: ce76f754286b4e32a6767cb03cb087685016c72adee3a9dcfa03d31ccb60884b - md5: c273385b33be94efd668a924a60033ff + size: 124202693 + timestamp: 1736831822168 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025011405-3.11release.conda + sha256: 302c03fb71dfe486302339dc1e499cf4ca5da16a04611650a844393217bf7c44 + md5: b712cc1995d5acc5c827fdcfb0be301d depends: - - max-core ==25.1.0.dev2025011305 release + - max-core ==25.1.0.dev2025011405 release - python 3.11.* - fastapi - httpx @@ -4840,13 +4840,13 @@ packages: - uvicorn - python_abi 3.11.* *_cp311 license: LicenseRef-Modular-Proprietary - size: 128107516 - timestamp: 1736745375382 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025011305-3.11release.conda - sha256: 0b73711051933e6ce7492c040f2266b58a80b0a10c178a441ada8b29984783b9 - md5: 0fa8cbaa48a7ef780de229d3122b5fc4 + size: 128005742 + timestamp: 1736831760981 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025011405-3.11release.conda + sha256: 3050a237e8ea52c62c2ece10dfc34fbe556c84e84b550c76bdf6bbe104c103ec + md5: 15e93133522e46eba973591025576482 depends: - - max-core ==25.1.0.dev2025011305 release + - max-core ==25.1.0.dev2025011405 release - python 3.11.* - fastapi - httpx @@ -4867,12 +4867,12 @@ packages: - uvicorn - python_abi 3.11.* *_cp311 license: LicenseRef-Modular-Proprietary - size: 110714169 - timestamp: 1736745640916 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011305-release.conda + size: 110606719 + timestamp: 1736832175873 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011405-release.conda noarch: python - sha256: a146eceb109dbdcf93e44b2ac3d09796c9f78ac05e5e81a2e325749e05f8bda5 - md5: a1240273ce6e690ad5f01ed918d9859a + sha256: f22466f25b437c46a5e05b93ae7213639abdf1ddf8c48e8d2fc0f0a091cfd5a2 + md5: f588562602f7e3a17c1983f53eee1056 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -4883,7 +4883,7 @@ packages: - python license: MIT size: 130814 - timestamp: 1736745375380 + timestamp: 1736831822166 - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda sha256: 78c1bbe1723449c52b7a9df1af2ee5f005209f67e40b6e1d3c7619127c43b1c7 md5: 592132998493b3ff25fd7479396e8351 @@ -4893,18 +4893,18 @@ packages: license_family: MIT size: 14465 timestamp: 1733255681319 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011305-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011405-release.conda noarch: python - sha256: eb73c8aebae252f558d0142ceaf5d166247f74b3722d2e02f1419f954fa518ab - md5: b6ea7ab915ee88e290e186b97413abdd + sha256: a973705b113aa88f9769a5a5e21bb4bff6b86e77c4f66db1aac3be794c1ece88 + md5: 3a6fea9465e1a4ee3501f24fc1bbef98 depends: - - max-core ==25.1.0.dev2025011305 release + - max-core ==25.1.0.dev2025011405 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22932 - timestamp: 1736745375381 + size: 22933 + timestamp: 1736831822167 - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py311h2dc5d0c_2.conda sha256: afaab7a028281d8b5336db2b994fd3f9694862b6ca372c079dc4e84ad768c20a md5: bb8ca118919836624d920b4c44383a15 @@ -5339,9 +5339,9 @@ packages: license_family: BSD size: 15695466 timestamp: 1726879158862 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pandas-2.2.3-py311h848c333_1.conda - sha256: 8b368a4871bc9c8c9c582fc3539c00a44ae41eb239ca330ee55f9c8bd85a0bfd - md5: 609f8498e89280eeda12a0be33efed35 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pandas-2.2.3-py311h848c333_2.conda + sha256: 85c43e205902b6960ce203201aada9cef9b3e24c51de5bdd4feb1127000c5680 + md5: f5ab90c426888c9c916b1956e1a03b3c depends: - libgcc >=13 - libstdcxx >=13 @@ -5353,12 +5353,37 @@ packages: - python-tzdata >=2022a - python_abi 3.11.* *_cp311 - pytz >=2020.1,<2024.2 + constrains: + - sqlalchemy >=2.0.0 + - scipy >=1.10.0 + - fsspec >=2022.11.0 + - xlsxwriter >=3.0.5 + - numba >=0.56.4 + - tabulate >=0.9.0 + - pytables >=3.8.0 + - zstandard >=0.19.0 + - gcsfs >=2022.11.0 + - pyqt5 >=5.15.8 + - beautifulsoup4 >=4.11.2 + - psycopg2 >=2.9.6 + - s3fs >=2022.11.0 + - lxml >=4.9.2 + - xarray >=2022.12.0 + - openpyxl >=3.1.0 + - fastparquet >=2022.12.0 + - numexpr >=2.8.4 + - pyreadstat >=1.2.0 + - qtpy >=2.3.0 + - tzdata >=2022.7 + - matplotlib >=3.6.3 + - pyxlsb >=1.0.10 + - blosc >=1.21.3 + - bottleneck >=1.3.6 arch: aarch64 platform: linux license: BSD-3-Clause - license_family: BSD - size: 15390929 - timestamp: 1726879096370 + size: 15432560 + timestamp: 1736811218050 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.3-py311h9cb3ce9_1.conda sha256: 0a08027b25e4f6034d7733c7366f44283246d61cb82d1721f8789d50ebfef287 md5: 9ffa9dee175c76e68ea5de5aa1168d83 @@ -6883,9 +6908,9 @@ packages: license_family: BSD size: 240817 timestamp: 1731498829166 -- conda: https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.17.0-py311h9ecbd09_0.conda - sha256: 8e9a7a1a69d0d59b3cb0066fbdbf16dc7a0d9554ffc2a365e67eca72230ca3e8 - md5: 452e39fb544b1ec9cc6c5b2ac9c47efa +- conda: https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.17.1-py311h9ecbd09_0.conda + sha256: 42e23f6efabc2f6c50885b6f5e6e0a87472df9ebb86e86999a7c7c85331e2704 + md5: c03c07d4b22381d61e57cb08735b9b1c depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -6895,11 +6920,11 @@ packages: platform: linux license: BSD-2-Clause license_family: BSD - size: 65396 - timestamp: 1732523677157 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/wrapt-1.17.0-py311ha879c10_0.conda - sha256: 33e12fc8188dc0f649ff9fbc3770bff61912722e88ebae806accff72d01ca34f - md5: e2d4e19306f4df6953c7f23d15ab3805 + size: 65109 + timestamp: 1736757891787 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/wrapt-1.17.1-py311ha879c10_0.conda + sha256: a4ac2f68f462519be3fd03adcc7b30361135688fd70f742c35faf702fc0955fb + md5: f4a445d2759099c9cf1b955f99ca2039 depends: - libgcc >=13 - python >=3.11,<3.12.0a0 @@ -6909,11 +6934,11 @@ packages: platform: linux license: BSD-2-Clause license_family: BSD - size: 65780 - timestamp: 1732523794589 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/wrapt-1.17.0-py311h917b07b_0.conda - sha256: fff7f86570f0a3fd90878b75b552bafddb854e8f4d68a171cd427a13e9eb160c - md5: a56950191b7efa9406bbaff925173d20 + size: 65715 + timestamp: 1736757912446 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/wrapt-1.17.1-py311h917b07b_0.conda + sha256: 1dc5ceaa3838ecfa242626dda0300b28d7a827d80d6b6e624bcb2791f3f004d9 + md5: e3bcd6e81efe9134070cd635569cb48f depends: - __osx >=11.0 - python >=3.11,<3.12.0a0 @@ -6923,8 +6948,8 @@ packages: platform: osx license: BSD-2-Clause license_family: BSD - size: 62309 - timestamp: 1732524074190 + size: 62043 + timestamp: 1736757968574 - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-hb9d3cd8_0.conda sha256: ed10c9283974d311855ae08a16dfd7e56241fac632aec3b92e3cfe73cff31038 md5: f6ebe2cb3f82ba6c057dde5d9debe4f7 diff --git a/examples/notebooks/magic.lock b/examples/notebooks/magic.lock index 32700eab88..5af81c01f9 100644 --- a/examples/notebooks/magic.lock +++ b/examples/notebooks/magic.lock @@ -167,13 +167,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/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-25.1.0.dev2025011305-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025011305-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025011305-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011405-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025011405-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025011405-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011405-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.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011405-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 @@ -286,7 +286,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.8.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/websockets-14.1-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wheel-0.45.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.17.0-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.17.1-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xxhash-0.8.2-hd590300_0.conda @@ -458,13 +458,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/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-25.1.0.dev2025011305-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025011305-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025011305-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011405-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025011405-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025011405-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011405-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.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011405-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 @@ -577,7 +577,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.8.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/websockets-14.1-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wheel-0.45.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/wrapt-1.17.0-py312hb2c0f52_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/wrapt-1.17.1-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxau-1.0.12-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxdmcp-1.1.5-h57736b2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xxhash-0.8.2-h31becfc_0.conda @@ -741,13 +741,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-25.1.0.dev2025011305-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025011305-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025011305-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011405-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025011405-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025011405-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011405-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.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011405-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 @@ -861,7 +861,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.8.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/websockets-14.1-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wheel-0.45.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/wrapt-1.17.0-py312hea69d52_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/wrapt-1.17.1-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxau-1.0.12-h5505292_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxdmcp-1.1.5-hd74edd7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xxhash-0.8.2-hb547adb_0.conda @@ -5549,47 +5549,47 @@ packages: license_family: BSD size: 14467 timestamp: 1733417051523 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011305-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011405-release.conda noarch: python - sha256: a3a295fcdcd95629a1d495317f4fe0d3c52800616aadb33baa5b329a9b69309f - md5: 0d23fd60108dca58f6b01233b8732920 + sha256: eb52c601b49e24ffc270abd164d923de1cd7641ccc0c6d7457f51ae60d11e8db + md5: 11ccc7657b121e4c65ede378c793112f depends: - - max-core ==25.1.0.dev2025011305 release - - max-python >=25.1.0.dev2025011305,<26.0a0 - - mojo-jupyter ==25.1.0.dev2025011305 release - - mblack ==25.1.0.dev2025011305 release + - max-core ==25.1.0.dev2025011405 release + - max-python >=25.1.0.dev2025011405,<26.0a0 + - mojo-jupyter ==25.1.0.dev2025011405 release + - mblack ==25.1.0.dev2025011405 release license: LicenseRef-Modular-Proprietary - size: 9915 - timestamp: 1736745375375 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025011305-release.conda - sha256: 38cb73c75a529f060b1523552808db21fba526022cabda8c23bb020607f5bc73 - md5: e15ac442ae0aaa33ade5f177c4ecb5ef + size: 9916 + timestamp: 1736831822162 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025011405-release.conda + sha256: 6b70fb0b3ff451c344e75541912480a23f7f66ec4e823fb67215c55210bc238f + md5: 73aeefc77fbbd11c37f794e61bedcbce depends: - - mblack ==25.1.0.dev2025011305 release + - mblack ==25.1.0.dev2025011405 release license: LicenseRef-Modular-Proprietary - size: 244367885 - timestamp: 1736745440770 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025011305-release.conda - sha256: d5cd57f5b74fea8cb715d95d66ceea8d0fd9a7fc4f521a814ae12d1081a2bf6c - md5: 30136f977d5cd4113c7036f3b4263565 + size: 244270660 + timestamp: 1736831822160 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025011405-release.conda + sha256: b790059d25a546964ec54600d606cf507f046685f8b93768af09306e2789763d + md5: 8284a53ad8867fbebf5ff5872afcc683 depends: - - mblack ==25.1.0.dev2025011305 release + - mblack ==25.1.0.dev2025011405 release license: LicenseRef-Modular-Proprietary - size: 248040761 - timestamp: 1736745375373 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025011305-release.conda - sha256: 56010bbdb90c49b5d863b43709400791b7263791a5af281fb86b63e03f0e31a8 - md5: d96978d80b34cd4dd7fea5d3f3eba294 + size: 247897740 + timestamp: 1736831760973 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025011405-release.conda + sha256: e3f0a7f45a58997e93c62de0b02d657f5788074ed274c73ba42c8dbe4e4254ee + md5: 948b2059736f978eb8ef29e011c478aa depends: - - mblack ==25.1.0.dev2025011305 release + - mblack ==25.1.0.dev2025011405 release license: LicenseRef-Modular-Proprietary - size: 206549629 - timestamp: 1736745640913 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025011305-3.12release.conda - sha256: 66bce981da4327a1f0ce2ad2eb956c3ef2079cda452bd0d25151e28786a05d6d - md5: 39ea10f174e9072da8c5d7180998a714 + size: 206428789 + timestamp: 1736832175871 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025011405-3.12release.conda + sha256: 2ba61ee7777506ce94849a69fb0a10281208327ad12298cb399d7c143740a23a + md5: 4d373580ea92e6372951421273e89dbe depends: - - max-core ==25.1.0.dev2025011305 release + - max-core ==25.1.0.dev2025011405 release - python 3.12.* - fastapi - httpx @@ -5610,13 +5610,13 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 124329785 - timestamp: 1736745440780 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025011305-3.12release.conda - sha256: 60c1537b9cfa1cf05251ade5f0b2940510b15ae602ac22bb3aa4b3c44456f58d - md5: 93a397ced422b7638a542d8908e5ce18 + size: 124186493 + timestamp: 1736831822171 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025011405-3.12release.conda + sha256: 9f35e2f3c0aa425ab3b15f1aa141e498b2fb22f671823d4758116954a5f47ac0 + md5: 95a8013bcaf7a89866ca36ba40b0477d depends: - - max-core ==25.1.0.dev2025011305 release + - max-core ==25.1.0.dev2025011405 release - python 3.12.* - fastapi - httpx @@ -5637,13 +5637,13 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 128095121 - timestamp: 1736745375385 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025011305-3.12release.conda - sha256: 889f09c1c43dc5dc9563a97947df8b2087887547023a311a4d25aba186342c84 - md5: 4e81030c0a232a6cba739472c7a29855 + size: 127955783 + timestamp: 1736831760983 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025011405-3.12release.conda + sha256: bae7c656efa518c6ba652cf66b20b07b11054e6b3c7f5c4997a319138152b10b + md5: 38fdc325152b22296dc03d3574837998 depends: - - max-core ==25.1.0.dev2025011305 release + - max-core ==25.1.0.dev2025011405 release - python 3.12.* - fastapi - httpx @@ -5664,12 +5664,12 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 110700356 - timestamp: 1736745640917 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011305-release.conda + size: 110548095 + timestamp: 1736832175874 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011405-release.conda noarch: python - sha256: a146eceb109dbdcf93e44b2ac3d09796c9f78ac05e5e81a2e325749e05f8bda5 - md5: a1240273ce6e690ad5f01ed918d9859a + sha256: f22466f25b437c46a5e05b93ae7213639abdf1ddf8c48e8d2fc0f0a091cfd5a2 + md5: f588562602f7e3a17c1983f53eee1056 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -5680,7 +5680,7 @@ packages: - python license: MIT size: 130814 - timestamp: 1736745375380 + timestamp: 1736831822166 - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda sha256: 78c1bbe1723449c52b7a9df1af2ee5f005209f67e40b6e1d3c7619127c43b1c7 md5: 592132998493b3ff25fd7479396e8351 @@ -5700,18 +5700,18 @@ packages: license_family: BSD size: 68803 timestamp: 1735686983426 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011305-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011405-release.conda noarch: python - sha256: eb73c8aebae252f558d0142ceaf5d166247f74b3722d2e02f1419f954fa518ab - md5: b6ea7ab915ee88e290e186b97413abdd + sha256: a973705b113aa88f9769a5a5e21bb4bff6b86e77c4f66db1aac3be794c1ece88 + md5: 3a6fea9465e1a4ee3501f24fc1bbef98 depends: - - max-core ==25.1.0.dev2025011305 release + - max-core ==25.1.0.dev2025011405 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22932 - timestamp: 1736745375381 + size: 22933 + timestamp: 1736831822167 - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py312h178313f_2.conda sha256: b05bc8252a6e957bf4a776ed5e0e61d1ba88cdc46ccb55890c72cc58b10371f4 md5: 5b5e3267d915a107eca793d52e1b780a @@ -8178,9 +8178,9 @@ packages: license_family: MIT size: 62931 timestamp: 1733130309598 -- conda: https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.17.0-py312h66e93f0_0.conda - sha256: a6fc0f4e90643d0c1fd4aab669b6a79f44a305a5474256f6f2da3354d2310fb4 - md5: ddbe3bb0e1356cb9074dd848570694f9 +- conda: https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.17.1-py312h66e93f0_0.conda + sha256: 8d5114497ca237b4a41f381a474571cfbd874b357a57005e1ef891fbe961e927 + md5: 31e36a1c68a03c501542a6c454963ffe depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -8190,11 +8190,11 @@ packages: platform: linux license: BSD-2-Clause license_family: BSD - size: 63807 - timestamp: 1732523690292 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/wrapt-1.17.0-py312hb2c0f52_0.conda - sha256: b9aa760a987ccc6bc9c61f57badba6798d9a3dcbd0814e5fb8df6d8d2935af73 - md5: 120d5d1c05386d8ce3efd65a4c86431f + size: 63794 + timestamp: 1736757851335 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/wrapt-1.17.1-py312hb2c0f52_0.conda + sha256: 105f16fa8db777bbda7ec195025007e0d591db3080536fbfbcd81eba230cd8e4 + md5: 6f091288846887f19f845688c3d7ca1e depends: - libgcc >=13 - python >=3.12,<3.13.0a0 @@ -8204,11 +8204,11 @@ packages: platform: linux license: BSD-2-Clause license_family: BSD - size: 64783 - timestamp: 1732523806 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/wrapt-1.17.0-py312hea69d52_0.conda - sha256: 0fb35c3d1642f9f47db87bdb33148f88ef19a3af1eb0ee99b5491551c57269c7 - md5: 73414acdb779a8694a14527865b4357a + size: 64616 + timestamp: 1736757911835 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/wrapt-1.17.1-py312hea69d52_0.conda + sha256: 213a18609ccfdde862a8fcf9d96b9133cc6ca0abf5953ed148b35a9c8eb27a9c + md5: e3a62bb92c2e71e95f0e3be67a5ff351 depends: - __osx >=11.0 - python >=3.12,<3.13.0a0 @@ -8218,8 +8218,8 @@ packages: platform: osx license: BSD-2-Clause license_family: BSD - size: 61043 - timestamp: 1732523852129 + size: 61365 + timestamp: 1736758030632 - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-hb9d3cd8_0.conda sha256: ed10c9283974d311855ae08a16dfd7e56241fac632aec3b92e3cfe73cff31038 md5: f6ebe2cb3f82ba6c057dde5d9debe4f7 diff --git a/examples/operators/magic.lock b/examples/operators/magic.lock index 336611fd4b..0072b9f004 100644 --- a/examples/operators/magic.lock +++ b/examples/operators/magic.lock @@ -131,12 +131,12 @@ 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-25.1.0.dev2025011305-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025011305-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025011305-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011405-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025011405-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025011405-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011405-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-25.1.0.dev2025011305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011405-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 @@ -213,7 +213,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/uvloop-0.21.0-py312h66e93f0_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/watchfiles-1.0.4-py312h12e396e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/websockets-14.1-py312h66e93f0_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.17.0-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.17.1-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xxhash-0.8.2-hd590300_0.conda @@ -349,12 +349,12 @@ 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-25.1.0.dev2025011305-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025011305-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025011305-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011405-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025011405-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025011405-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011405-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-25.1.0.dev2025011305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011405-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 @@ -371,7 +371,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.50b0-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/orc-2.0.3-hdd485aa_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pandas-2.2.3-py312ha2895bd_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pandas-2.2.3-py312ha2895bd_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pillow-11.1.0-py312h719f0cf_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda @@ -431,7 +431,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/uvloop-0.21.0-py312hb2c0f52_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/watchfiles-1.0.4-py312h8cbf658_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/websockets-14.1-py312hb2c0f52_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/wrapt-1.17.0-py312hb2c0f52_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/wrapt-1.17.1-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxau-1.0.12-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxdmcp-1.1.5-h57736b2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xxhash-0.8.2-h31becfc_0.conda @@ -558,12 +558,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-25.1.0.dev2025011305-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025011305-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025011305-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011405-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025011405-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025011405-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011405-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-25.1.0.dev2025011305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011405-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 @@ -639,7 +639,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/uvloop-0.21.0-py312h0bf5046_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/watchfiles-1.0.4-py312hcd83bfe_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/websockets-14.1-py312hea69d52_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/wrapt-1.17.0-py312hea69d52_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/wrapt-1.17.1-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxau-1.0.12-h5505292_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxdmcp-1.1.5-hd74edd7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xxhash-0.8.2-hb547adb_0.conda @@ -4752,47 +4752,47 @@ packages: license_family: BSD size: 24048 timestamp: 1733219945697 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011305-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011405-release.conda noarch: python - sha256: a3a295fcdcd95629a1d495317f4fe0d3c52800616aadb33baa5b329a9b69309f - md5: 0d23fd60108dca58f6b01233b8732920 + sha256: eb52c601b49e24ffc270abd164d923de1cd7641ccc0c6d7457f51ae60d11e8db + md5: 11ccc7657b121e4c65ede378c793112f depends: - - max-core ==25.1.0.dev2025011305 release - - max-python >=25.1.0.dev2025011305,<26.0a0 - - mojo-jupyter ==25.1.0.dev2025011305 release - - mblack ==25.1.0.dev2025011305 release + - max-core ==25.1.0.dev2025011405 release + - max-python >=25.1.0.dev2025011405,<26.0a0 + - mojo-jupyter ==25.1.0.dev2025011405 release + - mblack ==25.1.0.dev2025011405 release license: LicenseRef-Modular-Proprietary - size: 9915 - timestamp: 1736745375375 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025011305-release.conda - sha256: 38cb73c75a529f060b1523552808db21fba526022cabda8c23bb020607f5bc73 - md5: e15ac442ae0aaa33ade5f177c4ecb5ef + size: 9916 + timestamp: 1736831822162 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025011405-release.conda + sha256: 6b70fb0b3ff451c344e75541912480a23f7f66ec4e823fb67215c55210bc238f + md5: 73aeefc77fbbd11c37f794e61bedcbce depends: - - mblack ==25.1.0.dev2025011305 release + - mblack ==25.1.0.dev2025011405 release license: LicenseRef-Modular-Proprietary - size: 244367885 - timestamp: 1736745440770 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025011305-release.conda - sha256: d5cd57f5b74fea8cb715d95d66ceea8d0fd9a7fc4f521a814ae12d1081a2bf6c - md5: 30136f977d5cd4113c7036f3b4263565 + size: 244270660 + timestamp: 1736831822160 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025011405-release.conda + sha256: b790059d25a546964ec54600d606cf507f046685f8b93768af09306e2789763d + md5: 8284a53ad8867fbebf5ff5872afcc683 depends: - - mblack ==25.1.0.dev2025011305 release + - mblack ==25.1.0.dev2025011405 release license: LicenseRef-Modular-Proprietary - size: 248040761 - timestamp: 1736745375373 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025011305-release.conda - sha256: 56010bbdb90c49b5d863b43709400791b7263791a5af281fb86b63e03f0e31a8 - md5: d96978d80b34cd4dd7fea5d3f3eba294 + size: 247897740 + timestamp: 1736831760973 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025011405-release.conda + sha256: e3f0a7f45a58997e93c62de0b02d657f5788074ed274c73ba42c8dbe4e4254ee + md5: 948b2059736f978eb8ef29e011c478aa depends: - - mblack ==25.1.0.dev2025011305 release + - mblack ==25.1.0.dev2025011405 release license: LicenseRef-Modular-Proprietary - size: 206549629 - timestamp: 1736745640913 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025011305-3.12release.conda - sha256: 66bce981da4327a1f0ce2ad2eb956c3ef2079cda452bd0d25151e28786a05d6d - md5: 39ea10f174e9072da8c5d7180998a714 + size: 206428789 + timestamp: 1736832175871 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025011405-3.12release.conda + sha256: 2ba61ee7777506ce94849a69fb0a10281208327ad12298cb399d7c143740a23a + md5: 4d373580ea92e6372951421273e89dbe depends: - - max-core ==25.1.0.dev2025011305 release + - max-core ==25.1.0.dev2025011405 release - python 3.12.* - fastapi - httpx @@ -4813,13 +4813,13 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 124329785 - timestamp: 1736745440780 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025011305-3.12release.conda - sha256: 60c1537b9cfa1cf05251ade5f0b2940510b15ae602ac22bb3aa4b3c44456f58d - md5: 93a397ced422b7638a542d8908e5ce18 + size: 124186493 + timestamp: 1736831822171 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025011405-3.12release.conda + sha256: 9f35e2f3c0aa425ab3b15f1aa141e498b2fb22f671823d4758116954a5f47ac0 + md5: 95a8013bcaf7a89866ca36ba40b0477d depends: - - max-core ==25.1.0.dev2025011305 release + - max-core ==25.1.0.dev2025011405 release - python 3.12.* - fastapi - httpx @@ -4840,13 +4840,13 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 128095121 - timestamp: 1736745375385 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025011305-3.12release.conda - sha256: 889f09c1c43dc5dc9563a97947df8b2087887547023a311a4d25aba186342c84 - md5: 4e81030c0a232a6cba739472c7a29855 + size: 127955783 + timestamp: 1736831760983 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025011405-3.12release.conda + sha256: bae7c656efa518c6ba652cf66b20b07b11054e6b3c7f5c4997a319138152b10b + md5: 38fdc325152b22296dc03d3574837998 depends: - - max-core ==25.1.0.dev2025011305 release + - max-core ==25.1.0.dev2025011405 release - python 3.12.* - fastapi - httpx @@ -4867,12 +4867,12 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 110700356 - timestamp: 1736745640917 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011305-release.conda + size: 110548095 + timestamp: 1736832175874 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011405-release.conda noarch: python - sha256: a146eceb109dbdcf93e44b2ac3d09796c9f78ac05e5e81a2e325749e05f8bda5 - md5: a1240273ce6e690ad5f01ed918d9859a + sha256: f22466f25b437c46a5e05b93ae7213639abdf1ddf8c48e8d2fc0f0a091cfd5a2 + md5: f588562602f7e3a17c1983f53eee1056 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -4883,7 +4883,7 @@ packages: - python license: MIT size: 130814 - timestamp: 1736745375380 + timestamp: 1736831822166 - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda sha256: 78c1bbe1723449c52b7a9df1af2ee5f005209f67e40b6e1d3c7619127c43b1c7 md5: 592132998493b3ff25fd7479396e8351 @@ -4893,18 +4893,18 @@ packages: license_family: MIT size: 14465 timestamp: 1733255681319 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011305-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011405-release.conda noarch: python - sha256: eb73c8aebae252f558d0142ceaf5d166247f74b3722d2e02f1419f954fa518ab - md5: b6ea7ab915ee88e290e186b97413abdd + sha256: a973705b113aa88f9769a5a5e21bb4bff6b86e77c4f66db1aac3be794c1ece88 + md5: 3a6fea9465e1a4ee3501f24fc1bbef98 depends: - - max-core ==25.1.0.dev2025011305 release + - max-core ==25.1.0.dev2025011405 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22932 - timestamp: 1736745375381 + size: 22933 + timestamp: 1736831822167 - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py312h178313f_2.conda sha256: b05bc8252a6e957bf4a776ed5e0e61d1ba88cdc46ccb55890c72cc58b10371f4 md5: 5b5e3267d915a107eca793d52e1b780a @@ -5339,9 +5339,9 @@ packages: license_family: BSD size: 15436913 timestamp: 1726879054912 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pandas-2.2.3-py312ha2895bd_1.conda - sha256: 585e05f95d14afe3df43ded14f86800c70da26b27e27b59de95932f8888af5d3 - md5: 80b873ac4fdf36641afa0eaafff3a664 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pandas-2.2.3-py312ha2895bd_2.conda + sha256: a34b10077de97eea72c81cb96e3ddc7d48320c0fc7d9b28ba8d9d2bead1d8297 + md5: 39a91ac336d350513de6aad56da5a920 depends: - libgcc >=13 - libstdcxx >=13 @@ -5353,12 +5353,37 @@ packages: - python-tzdata >=2022a - python_abi 3.12.* *_cp312 - pytz >=2020.1,<2024.2 + constrains: + - fsspec >=2022.11.0 + - s3fs >=2022.11.0 + - fastparquet >=2022.12.0 + - pyreadstat >=1.2.0 + - qtpy >=2.3.0 + - scipy >=1.10.0 + - beautifulsoup4 >=4.11.2 + - gcsfs >=2022.11.0 + - numexpr >=2.8.4 + - sqlalchemy >=2.0.0 + - pyxlsb >=1.0.10 + - numba >=0.56.4 + - lxml >=4.9.2 + - matplotlib >=3.6.3 + - psycopg2 >=2.9.6 + - tzdata >=2022.7 + - bottleneck >=1.3.6 + - xarray >=2022.12.0 + - xlsxwriter >=3.0.5 + - zstandard >=0.19.0 + - blosc >=1.21.3 + - pytables >=3.8.0 + - openpyxl >=3.1.0 + - pyqt5 >=5.15.8 + - tabulate >=0.9.0 arch: aarch64 platform: linux license: BSD-3-Clause - license_family: BSD - size: 15159625 - timestamp: 1726879151211 + size: 15162992 + timestamp: 1736811533875 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.3-py312hcd31e36_1.conda sha256: ff0cb54b5d058c7987b4a0984066e893642d1865a7bb695294b6172e2fcdc457 md5: c68bfa69e6086c381c74e16fd72613a8 @@ -6883,9 +6908,9 @@ packages: license_family: BSD size: 243131 timestamp: 1731498944076 -- conda: https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.17.0-py312h66e93f0_0.conda - sha256: a6fc0f4e90643d0c1fd4aab669b6a79f44a305a5474256f6f2da3354d2310fb4 - md5: ddbe3bb0e1356cb9074dd848570694f9 +- conda: https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.17.1-py312h66e93f0_0.conda + sha256: 8d5114497ca237b4a41f381a474571cfbd874b357a57005e1ef891fbe961e927 + md5: 31e36a1c68a03c501542a6c454963ffe depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -6895,11 +6920,11 @@ packages: platform: linux license: BSD-2-Clause license_family: BSD - size: 63807 - timestamp: 1732523690292 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/wrapt-1.17.0-py312hb2c0f52_0.conda - sha256: b9aa760a987ccc6bc9c61f57badba6798d9a3dcbd0814e5fb8df6d8d2935af73 - md5: 120d5d1c05386d8ce3efd65a4c86431f + size: 63794 + timestamp: 1736757851335 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/wrapt-1.17.1-py312hb2c0f52_0.conda + sha256: 105f16fa8db777bbda7ec195025007e0d591db3080536fbfbcd81eba230cd8e4 + md5: 6f091288846887f19f845688c3d7ca1e depends: - libgcc >=13 - python >=3.12,<3.13.0a0 @@ -6909,11 +6934,11 @@ packages: platform: linux license: BSD-2-Clause license_family: BSD - size: 64783 - timestamp: 1732523806 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/wrapt-1.17.0-py312hea69d52_0.conda - sha256: 0fb35c3d1642f9f47db87bdb33148f88ef19a3af1eb0ee99b5491551c57269c7 - md5: 73414acdb779a8694a14527865b4357a + size: 64616 + timestamp: 1736757911835 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/wrapt-1.17.1-py312hea69d52_0.conda + sha256: 213a18609ccfdde862a8fcf9d96b9133cc6ca0abf5953ed148b35a9c8eb27a9c + md5: e3a62bb92c2e71e95f0e3be67a5ff351 depends: - __osx >=11.0 - python >=3.12,<3.13.0a0 @@ -6923,8 +6948,8 @@ packages: platform: osx license: BSD-2-Clause license_family: BSD - size: 61043 - timestamp: 1732523852129 + size: 61365 + timestamp: 1736758030632 - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-hb9d3cd8_0.conda sha256: ed10c9283974d311855ae08a16dfd7e56241fac632aec3b92e3cfe73cff31038 md5: f6ebe2cb3f82ba6c057dde5d9debe4f7 diff --git a/magic.lock b/magic.lock index cc1e7529e0..a4f636e4b6 100644 --- a/magic.lock +++ b/magic.lock @@ -132,12 +132,12 @@ 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-25.1.0.dev2025011305-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025011305-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025011305-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011405-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025011405-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025011405-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011405-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-25.1.0.dev2025011305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011405-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 @@ -214,7 +214,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/uvloop-0.21.0-py312h66e93f0_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/watchfiles-1.0.4-py312h12e396e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/websockets-14.1-py312h66e93f0_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.17.0-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.17.1-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xxhash-0.8.2-hd590300_0.conda @@ -351,12 +351,12 @@ 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-25.1.0.dev2025011305-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025011305-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025011305-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011405-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025011405-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025011405-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011405-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-25.1.0.dev2025011305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011405-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 @@ -373,7 +373,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.50b0-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/orc-2.0.3-hdd485aa_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pandas-2.2.3-py312ha2895bd_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pandas-2.2.3-py312ha2895bd_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pillow-11.1.0-py312h719f0cf_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda @@ -433,7 +433,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/uvloop-0.21.0-py312hb2c0f52_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/watchfiles-1.0.4-py312h8cbf658_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/websockets-14.1-py312hb2c0f52_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/wrapt-1.17.0-py312hb2c0f52_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/wrapt-1.17.1-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxau-1.0.12-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxdmcp-1.1.5-h57736b2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xxhash-0.8.2-h31becfc_0.conda @@ -561,12 +561,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-25.1.0.dev2025011305-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025011305-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025011305-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011405-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025011405-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025011405-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011405-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-25.1.0.dev2025011305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011405-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 @@ -642,7 +642,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/uvloop-0.21.0-py312h0bf5046_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/watchfiles-1.0.4-py312hcd83bfe_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/websockets-14.1-py312hea69d52_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/wrapt-1.17.0-py312hea69d52_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/wrapt-1.17.1-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxau-1.0.12-h5505292_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxdmcp-1.1.5-hd74edd7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xxhash-0.8.2-hb547adb_0.conda @@ -4764,47 +4764,47 @@ packages: license_family: BSD size: 24048 timestamp: 1733219945697 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011305-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011405-release.conda noarch: python - sha256: a3a295fcdcd95629a1d495317f4fe0d3c52800616aadb33baa5b329a9b69309f - md5: 0d23fd60108dca58f6b01233b8732920 + sha256: eb52c601b49e24ffc270abd164d923de1cd7641ccc0c6d7457f51ae60d11e8db + md5: 11ccc7657b121e4c65ede378c793112f depends: - - max-core ==25.1.0.dev2025011305 release - - max-python >=25.1.0.dev2025011305,<26.0a0 - - mojo-jupyter ==25.1.0.dev2025011305 release - - mblack ==25.1.0.dev2025011305 release + - max-core ==25.1.0.dev2025011405 release + - max-python >=25.1.0.dev2025011405,<26.0a0 + - mojo-jupyter ==25.1.0.dev2025011405 release + - mblack ==25.1.0.dev2025011405 release license: LicenseRef-Modular-Proprietary - size: 9915 - timestamp: 1736745375375 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025011305-release.conda - sha256: 38cb73c75a529f060b1523552808db21fba526022cabda8c23bb020607f5bc73 - md5: e15ac442ae0aaa33ade5f177c4ecb5ef + size: 9916 + timestamp: 1736831822162 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025011405-release.conda + sha256: 6b70fb0b3ff451c344e75541912480a23f7f66ec4e823fb67215c55210bc238f + md5: 73aeefc77fbbd11c37f794e61bedcbce depends: - - mblack ==25.1.0.dev2025011305 release + - mblack ==25.1.0.dev2025011405 release license: LicenseRef-Modular-Proprietary - size: 244367885 - timestamp: 1736745440770 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025011305-release.conda - sha256: d5cd57f5b74fea8cb715d95d66ceea8d0fd9a7fc4f521a814ae12d1081a2bf6c - md5: 30136f977d5cd4113c7036f3b4263565 + size: 244270660 + timestamp: 1736831822160 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025011405-release.conda + sha256: b790059d25a546964ec54600d606cf507f046685f8b93768af09306e2789763d + md5: 8284a53ad8867fbebf5ff5872afcc683 depends: - - mblack ==25.1.0.dev2025011305 release + - mblack ==25.1.0.dev2025011405 release license: LicenseRef-Modular-Proprietary - size: 248040761 - timestamp: 1736745375373 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025011305-release.conda - sha256: 56010bbdb90c49b5d863b43709400791b7263791a5af281fb86b63e03f0e31a8 - md5: d96978d80b34cd4dd7fea5d3f3eba294 + size: 247897740 + timestamp: 1736831760973 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025011405-release.conda + sha256: e3f0a7f45a58997e93c62de0b02d657f5788074ed274c73ba42c8dbe4e4254ee + md5: 948b2059736f978eb8ef29e011c478aa depends: - - mblack ==25.1.0.dev2025011305 release + - mblack ==25.1.0.dev2025011405 release license: LicenseRef-Modular-Proprietary - size: 206549629 - timestamp: 1736745640913 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025011305-3.12release.conda - sha256: 66bce981da4327a1f0ce2ad2eb956c3ef2079cda452bd0d25151e28786a05d6d - md5: 39ea10f174e9072da8c5d7180998a714 + size: 206428789 + timestamp: 1736832175871 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025011405-3.12release.conda + sha256: 2ba61ee7777506ce94849a69fb0a10281208327ad12298cb399d7c143740a23a + md5: 4d373580ea92e6372951421273e89dbe depends: - - max-core ==25.1.0.dev2025011305 release + - max-core ==25.1.0.dev2025011405 release - python 3.12.* - fastapi - httpx @@ -4825,13 +4825,13 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 124329785 - timestamp: 1736745440780 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025011305-3.12release.conda - sha256: 60c1537b9cfa1cf05251ade5f0b2940510b15ae602ac22bb3aa4b3c44456f58d - md5: 93a397ced422b7638a542d8908e5ce18 + size: 124186493 + timestamp: 1736831822171 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025011405-3.12release.conda + sha256: 9f35e2f3c0aa425ab3b15f1aa141e498b2fb22f671823d4758116954a5f47ac0 + md5: 95a8013bcaf7a89866ca36ba40b0477d depends: - - max-core ==25.1.0.dev2025011305 release + - max-core ==25.1.0.dev2025011405 release - python 3.12.* - fastapi - httpx @@ -4852,13 +4852,13 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 128095121 - timestamp: 1736745375385 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025011305-3.12release.conda - sha256: 889f09c1c43dc5dc9563a97947df8b2087887547023a311a4d25aba186342c84 - md5: 4e81030c0a232a6cba739472c7a29855 + size: 127955783 + timestamp: 1736831760983 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025011405-3.12release.conda + sha256: bae7c656efa518c6ba652cf66b20b07b11054e6b3c7f5c4997a319138152b10b + md5: 38fdc325152b22296dc03d3574837998 depends: - - max-core ==25.1.0.dev2025011305 release + - max-core ==25.1.0.dev2025011405 release - python 3.12.* - fastapi - httpx @@ -4879,12 +4879,12 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 110700356 - timestamp: 1736745640917 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011305-release.conda + size: 110548095 + timestamp: 1736832175874 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011405-release.conda noarch: python - sha256: a146eceb109dbdcf93e44b2ac3d09796c9f78ac05e5e81a2e325749e05f8bda5 - md5: a1240273ce6e690ad5f01ed918d9859a + sha256: f22466f25b437c46a5e05b93ae7213639abdf1ddf8c48e8d2fc0f0a091cfd5a2 + md5: f588562602f7e3a17c1983f53eee1056 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -4895,7 +4895,7 @@ packages: - python license: MIT size: 130814 - timestamp: 1736745375380 + timestamp: 1736831822166 - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda sha256: 78c1bbe1723449c52b7a9df1af2ee5f005209f67e40b6e1d3c7619127c43b1c7 md5: 592132998493b3ff25fd7479396e8351 @@ -4905,18 +4905,18 @@ packages: license_family: MIT size: 14465 timestamp: 1733255681319 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011305-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011405-release.conda noarch: python - sha256: eb73c8aebae252f558d0142ceaf5d166247f74b3722d2e02f1419f954fa518ab - md5: b6ea7ab915ee88e290e186b97413abdd + sha256: a973705b113aa88f9769a5a5e21bb4bff6b86e77c4f66db1aac3be794c1ece88 + md5: 3a6fea9465e1a4ee3501f24fc1bbef98 depends: - - max-core ==25.1.0.dev2025011305 release + - max-core ==25.1.0.dev2025011405 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22932 - timestamp: 1736745375381 + size: 22933 + timestamp: 1736831822167 - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py312h178313f_2.conda sha256: b05bc8252a6e957bf4a776ed5e0e61d1ba88cdc46ccb55890c72cc58b10371f4 md5: 5b5e3267d915a107eca793d52e1b780a @@ -5351,9 +5351,9 @@ packages: license_family: BSD size: 15436913 timestamp: 1726879054912 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pandas-2.2.3-py312ha2895bd_1.conda - sha256: 585e05f95d14afe3df43ded14f86800c70da26b27e27b59de95932f8888af5d3 - md5: 80b873ac4fdf36641afa0eaafff3a664 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pandas-2.2.3-py312ha2895bd_2.conda + sha256: a34b10077de97eea72c81cb96e3ddc7d48320c0fc7d9b28ba8d9d2bead1d8297 + md5: 39a91ac336d350513de6aad56da5a920 depends: - libgcc >=13 - libstdcxx >=13 @@ -5365,12 +5365,37 @@ packages: - python-tzdata >=2022a - python_abi 3.12.* *_cp312 - pytz >=2020.1,<2024.2 + constrains: + - fsspec >=2022.11.0 + - s3fs >=2022.11.0 + - fastparquet >=2022.12.0 + - pyreadstat >=1.2.0 + - qtpy >=2.3.0 + - scipy >=1.10.0 + - beautifulsoup4 >=4.11.2 + - gcsfs >=2022.11.0 + - numexpr >=2.8.4 + - sqlalchemy >=2.0.0 + - pyxlsb >=1.0.10 + - numba >=0.56.4 + - lxml >=4.9.2 + - matplotlib >=3.6.3 + - psycopg2 >=2.9.6 + - tzdata >=2022.7 + - bottleneck >=1.3.6 + - xarray >=2022.12.0 + - xlsxwriter >=3.0.5 + - zstandard >=0.19.0 + - blosc >=1.21.3 + - pytables >=3.8.0 + - openpyxl >=3.1.0 + - pyqt5 >=5.15.8 + - tabulate >=0.9.0 arch: aarch64 platform: linux license: BSD-3-Clause - license_family: BSD - size: 15159625 - timestamp: 1726879151211 + size: 15162992 + timestamp: 1736811533875 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.3-py312hcd31e36_1.conda sha256: ff0cb54b5d058c7987b4a0984066e893642d1865a7bb695294b6172e2fcdc457 md5: c68bfa69e6086c381c74e16fd72613a8 @@ -6895,9 +6920,9 @@ packages: license_family: BSD size: 243131 timestamp: 1731498944076 -- conda: https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.17.0-py312h66e93f0_0.conda - sha256: a6fc0f4e90643d0c1fd4aab669b6a79f44a305a5474256f6f2da3354d2310fb4 - md5: ddbe3bb0e1356cb9074dd848570694f9 +- conda: https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.17.1-py312h66e93f0_0.conda + sha256: 8d5114497ca237b4a41f381a474571cfbd874b357a57005e1ef891fbe961e927 + md5: 31e36a1c68a03c501542a6c454963ffe depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -6907,11 +6932,11 @@ packages: platform: linux license: BSD-2-Clause license_family: BSD - size: 63807 - timestamp: 1732523690292 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/wrapt-1.17.0-py312hb2c0f52_0.conda - sha256: b9aa760a987ccc6bc9c61f57badba6798d9a3dcbd0814e5fb8df6d8d2935af73 - md5: 120d5d1c05386d8ce3efd65a4c86431f + size: 63794 + timestamp: 1736757851335 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/wrapt-1.17.1-py312hb2c0f52_0.conda + sha256: 105f16fa8db777bbda7ec195025007e0d591db3080536fbfbcd81eba230cd8e4 + md5: 6f091288846887f19f845688c3d7ca1e depends: - libgcc >=13 - python >=3.12,<3.13.0a0 @@ -6921,11 +6946,11 @@ packages: platform: linux license: BSD-2-Clause license_family: BSD - size: 64783 - timestamp: 1732523806 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/wrapt-1.17.0-py312hea69d52_0.conda - sha256: 0fb35c3d1642f9f47db87bdb33148f88ef19a3af1eb0ee99b5491551c57269c7 - md5: 73414acdb779a8694a14527865b4357a + size: 64616 + timestamp: 1736757911835 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/wrapt-1.17.1-py312hea69d52_0.conda + sha256: 213a18609ccfdde862a8fcf9d96b9133cc6ca0abf5953ed148b35a9c8eb27a9c + md5: e3a62bb92c2e71e95f0e3be67a5ff351 depends: - __osx >=11.0 - python >=3.12,<3.13.0a0 @@ -6935,8 +6960,8 @@ packages: platform: osx license: BSD-2-Clause license_family: BSD - size: 61043 - timestamp: 1732523852129 + size: 61365 + timestamp: 1736758030632 - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-hb9d3cd8_0.conda sha256: ed10c9283974d311855ae08a16dfd7e56241fac632aec3b92e3cfe73cff31038 md5: f6ebe2cb3f82ba6c057dde5d9debe4f7 From b1cfc195a31f2ea96007457bee67c6de51c5be35 Mon Sep 17 00:00:00 2001 From: Rasool Sharifi Date: Tue, 14 Jan 2025 12:08:04 -0500 Subject: [PATCH 221/509] [stdlib] Add fp32 to fp8 conversions Add fp32 to fp8 conversions MODULAR_ORIG_COMMIT_REV_ID: 49f0d7d4a19daf3bf54d10bbe68b84100cbc818f --- stdlib/src/builtin/simd.mojo | 184 +++++++++++++++++++++++++++++++++++ 1 file changed, 184 insertions(+) diff --git a/stdlib/src/builtin/simd.mojo b/stdlib/src/builtin/simd.mojo index e1f8f186d7..8debd181dc 100644 --- a/stdlib/src/builtin/simd.mojo +++ b/stdlib/src/builtin/simd.mojo @@ -57,6 +57,7 @@ from utils import IndexList, StaticTuple from utils._visualizers import lldb_formatter_wrapping_type from utils.numerics import FPUtils from utils.numerics import isnan as _isnan +from utils.numerics import isinf as _isinf from utils.numerics import max_finite as _max_finite from utils.numerics import max_or_inf as _max_or_inf from utils.numerics import min_finite as _min_finite @@ -1831,6 +1832,15 @@ struct SIMD[type: DType, size: Int]( # use the optimizations defined above. return self.cast[DType.float32]().cast[target]() + @parameter + if type is DType.float32 and target in ( + DType.float8e4m3, + DType.float8e5m2, + ): + return _convert_f32_to_float8[size=size, target=target]( + rebind[SIMD[DType.float32, size]](self) + ) + @parameter if type in (DType.float8e4m3, DType.float8e5m2): constrained[ @@ -3284,6 +3294,180 @@ fn _convert_float8_to_f16[ ]() +@always_inline +fn _convert_f32_to_float8[ + type: DType, + target: DType, + size: Int, +](val: SIMD[type, size],) -> SIMD[target, size]: + @parameter + if is_nvidia_gpu() and _is_sm_9x(): + alias asm_prefix = "cvt.rn.satfinite.e4m3x2.f32" if target is DType.float8e4m3 else "cvt.rn.satfinite.e5m2x2.f32" + + @parameter + if size > 1: + var res = SIMD[target, size]() + + @parameter + for i in range(0, size, 2): + var f8x2_f32x2 = inlined_assembly[ + asm_prefix + " $0, $1, $2;", + Scalar[DType.uint16], + constraints="=h,f,f", + has_side_effect=False, + ](val[i + 1], val[i]) + var ui8x2 = bitcast[target, 2](f8x2_f32x2) + res = res.insert[offset=i](ui8x2) + return res + else: + var f8x2_f32x2 = inlined_assembly[ + asm_prefix + " $0, $1, $2;", + Scalar[DType.uint16], + constraints="=h,f,f", + has_side_effect=False, + ](Float32(0.0), val[0]) + var ui8x2 = bitcast[target, 2](f8x2_f32x2) + return ui8x2[0] + else: + + @always_inline + @parameter + fn wrapper_fn[ + input_type: DType, result_type: DType + ](val: Scalar[input_type]) capturing -> Scalar[result_type]: + return rebind[Scalar[result_type]]( + _convert_f32_to_float8_scaler[type, result_type]( + rebind[Scalar[type]](val) + ) + ) + + return _simd_apply[wrapper_fn, target, size](val) + + +@always_inline +fn _convert_f32_to_float8_scaler[ + type: DType, + target: DType, +](x: Scalar[type]) -> Scalar[target]: + # software implementation rounds toward nearest even + + alias IS_E4M3 = target is DType.float8e4m3 + alias FP8_NUM_MANTISSA_BITS = FPUtils[target].mantissa_width() + alias FP8_NUM_EXPONENT_BITS = FPUtils[target].exponent_width() + alias FP32_NUM_BITS = bitwidthof[type]() + alias FP8_EXPONENT_MASK: UInt8 = (1 << FP8_NUM_EXPONENT_BITS) - 1 + alias FP8_MANTISSA_MASK: UInt8 = (1 << FP8_NUM_MANTISSA_BITS) - 1 + alias FP8_MAX_EXPONENT = FPUtils[target].exponent_bias() + var FP8_MIN_EXPONENT = -6 if IS_E4M3 else -14 + alias FP8_EXPONENT_BIAS = FPUtils[target].exponent_bias() + alias FP32_EXPONENT_BIAS = FPUtils[type].exponent_bias() + alias FP32_NUM_MANTISSA_BITS = FPUtils[type].mantissa_width() + alias FP8_MAX_FLT: UInt8 = 0x7E if IS_E4M3 else 0x7B + + # Extract the bits in the FP32 type + var sign: UInt8 = 0x80 if FPUtils[type].get_sign(x) else 0x00 + var exp = Int32(FPUtils[type].get_exponent_biased(x)) - FP32_EXPONENT_BIAS + var mantissa = Int32(FPUtils[type].get_mantissa(x)) + var u: UInt8 = 0 + + var kF8_NaN: UInt8 = 0x7F + + # NaN => NaN + if _isnan(x): + return bitcast[target](kF8_NaN) + + # Inf => MAX_FLT (satfinite) + if _isinf(x): + return bitcast[target](sign | FP8_MAX_FLT) + + # Special handling + if exp == -128: + # int8 range is from -128 to 127 + # So 255(inf) - 127(bias) = 128 - will show up as -128 + + # satfinite + return bitcast[target](sign | FP8_MAX_FLT) + + var sticky_bit: Int32 = 0 + + var skip_sign = False + var may_be_nan = False + + if exp >= FP8_MIN_EXPONENT and exp <= FP8_MAX_EXPONENT: + # normal fp32 to normal fp8 + exp += FP8_EXPONENT_BIAS + u = ( + ( + (exp).cast[DType.uint32]() + & FP8_EXPONENT_MASK.cast[DType.uint32]() + ) + << FP8_NUM_MANTISSA_BITS + ).cast[DType.uint8]() + u = ( + u + | ( + mantissa >> (FP32_NUM_MANTISSA_BITS - FP8_NUM_MANTISSA_BITS) + ).cast[DType.uint8]() + ) + elif exp < FP8_MIN_EXPONENT: + # normal single-precision to subnormal float8-precision representation + var rshift: Int32 = FP8_MIN_EXPONENT - exp + if rshift < FP32_NUM_BITS: + mantissa |= 1 << FP32_NUM_MANTISSA_BITS + sticky_bit = ((mantissa & ((1 << rshift) - 1)) != 0).cast[ + DType.int32 + ]() + mantissa = mantissa >> rshift + u = ( + mantissa >> (FP32_NUM_MANTISSA_BITS - FP8_NUM_MANTISSA_BITS) + ).cast[DType.uint8]() & FP8_MANTISSA_MASK + else: + mantissa = 0 + u = 0 + # Exponent > FP8_MAX_EXPONENT - this is a special case done to match HW + # 0x4380_0000 to 0x43e0_0000 - maps from 256 to 448, and does not saturate / inf. + else: + if exp == (FP8_MAX_EXPONENT + 1): + var mantissa_tmp: UInt8 = ( + mantissa >> (FP32_NUM_MANTISSA_BITS - FP8_NUM_MANTISSA_BITS) + ).cast[DType.uint8]() + if mantissa_tmp < FP8_MANTISSA_MASK: + exp = exp + FP8_EXPONENT_BIAS + u = ((exp).cast[DType.uint32]() << FP8_NUM_MANTISSA_BITS).cast[ + DType.uint8 + ]() | mantissa_tmp + may_be_nan = mantissa_tmp == (FP8_MANTISSA_MASK - 1) + else: + # satfinite + return bitcast[target](sign | FP8_MAX_FLT) + else: + # satfinite + return bitcast[target](sign | FP8_MAX_FLT) + + # round to nearest even + var NUM_BITS_SHIFT: Int32 = FP32_NUM_MANTISSA_BITS - ( + FP8_NUM_MANTISSA_BITS + 1 + ) + var round_bit: Int32 = ((mantissa >> NUM_BITS_SHIFT) & 1) + sticky_bit |= ((mantissa & ((1 << NUM_BITS_SHIFT) - 1)) != 0).cast[ + DType.int32 + ]() + + if (round_bit and sticky_bit) or (round_bit and (u & 1)): + u = (u + 1).cast[DType.uint8]() + if may_be_nan: + skip_sign = True + + if u > FP8_MAX_FLT: + # satfinite + u = sign | FP8_MAX_FLT + + if not skip_sign: + u |= sign + + return bitcast[target](u) + + # ===----------------------------------------------------------------------=== # # bfloat16 # ===----------------------------------------------------------------------=== # From eb7eb3d7ea9b1b81aee80c6d0e00879dee7ef7f7 Mon Sep 17 00:00:00 2001 From: Owen Hilyard Date: Tue, 14 Jan 2025 09:46:42 -0800 Subject: [PATCH 222/509] [External] [stdlib] Make atomics sharable (#53867) [External] [stdlib] Make atomics sharable Prior to this, most atomic operations required a mutable reference, which meant you had statically guarenteed mutual exclusion, which means you don't need atomics. This fixes those operations to only require an immutable reference, allowing them to be used in multiple threads. Co-authored-by: Owen Hilyard Closes modularml/mojo#3943 MODULAR_ORIG_COMMIT_REV_ID: ba2460225e7243f65d80ea397c97c9c0a77f26f6 --- stdlib/src/os/atomic.mojo | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/stdlib/src/os/atomic.mojo b/stdlib/src/os/atomic.mojo index 5b34c70298..3b1088fcce 100644 --- a/stdlib/src/os/atomic.mojo +++ b/stdlib/src/os/atomic.mojo @@ -53,7 +53,7 @@ struct Atomic[type: DType, *, scope: StringLiteral = ""]: self.value = value @always_inline - fn load(mut self) -> Scalar[type]: + fn load(self) -> Scalar[type]: """Loads the current value from the atomic. Returns: @@ -139,7 +139,7 @@ struct Atomic[type: DType, *, scope: StringLiteral = ""]: ) @always_inline - fn fetch_add(mut self, rhs: Scalar[type]) -> Scalar[type]: + fn fetch_add(self, rhs: Scalar[type]) -> Scalar[type]: """Performs atomic in-place add. Atomically replaces the current value with the result of arithmetic @@ -158,7 +158,7 @@ struct Atomic[type: DType, *, scope: StringLiteral = ""]: return Self._fetch_add(value_addr, rhs) @always_inline - fn __iadd__(mut self, rhs: Scalar[type]): + fn __iadd__(self, rhs: Scalar[type]): """Performs atomic in-place add. Atomically replaces the current value with the result of arithmetic @@ -173,7 +173,7 @@ struct Atomic[type: DType, *, scope: StringLiteral = ""]: _ = self.fetch_add(rhs) @always_inline - fn fetch_sub(mut self, rhs: Scalar[type]) -> Scalar[type]: + fn fetch_sub(self, rhs: Scalar[type]) -> Scalar[type]: """Performs atomic in-place sub. Atomically replaces the current value with the result of arithmetic @@ -197,7 +197,7 @@ struct Atomic[type: DType, *, scope: StringLiteral = ""]: ](value_addr.address, rhs.value) @always_inline - fn __isub__(mut self, rhs: Scalar[type]): + fn __isub__(self, rhs: Scalar[type]): """Performs atomic in-place sub. Atomically replaces the current value with the result of arithmetic @@ -213,7 +213,7 @@ struct Atomic[type: DType, *, scope: StringLiteral = ""]: @always_inline fn compare_exchange_weak( - mut self, mut expected: Scalar[type], desired: Scalar[type] + self, mut expected: Scalar[type], desired: Scalar[type] ) -> Bool: """Atomically compares the self value with that of the expected value. If the values are equal, then the self value is replaced with the @@ -271,7 +271,7 @@ struct Atomic[type: DType, *, scope: StringLiteral = ""]: _max_impl[scope=scope](ptr, rhs) @always_inline - fn max(mut self, rhs: Scalar[type]): + fn max(self, rhs: Scalar[type]): """Performs atomic in-place max. Atomically replaces the current value with the result of max of the @@ -311,7 +311,7 @@ struct Atomic[type: DType, *, scope: StringLiteral = ""]: _min_impl[scope=scope](ptr, rhs) @always_inline - fn min(mut self, rhs: Scalar[type]): + fn min(self, rhs: Scalar[type]): """Performs atomic in-place min. Atomically replaces the current value with the result of min of the From 0b42ea7188faf47e538ef456aee17019d1ca8a92 Mon Sep 17 00:00:00 2001 From: Nikolay Panchenko Date: Tue, 14 Jan 2025 14:28:05 -0500 Subject: [PATCH 223/509] [stdlib] Limit size of the SIMD to 2^15 Matching LLVM's expectations of a vector size allowed in Clang and CodeGen. After fix of the https://github.com/llvm/llvm-project/issues/122571 limit can be increased if needed. MODULAR_ORIG_COMMIT_REV_ID: 1e1f830425adfad2b1460cfb6c8fd9dee731d987 --- stdlib/src/builtin/simd.mojo | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/stdlib/src/builtin/simd.mojo b/stdlib/src/builtin/simd.mojo index 8debd181dc..e97cb3c9bf 100644 --- a/stdlib/src/builtin/simd.mojo +++ b/stdlib/src/builtin/simd.mojo @@ -174,7 +174,7 @@ fn _simd_construction_checks[type: DType, size: Int](): Parameters: type: The data type of SIMD vector elements. - size: The number of elements in the SIMD vector. + size: The number of elements in the SIMD vector. The size must not be greater than 2**15. """ constrained[ type is not DType.invalid, "simd type cannot be DType.invalid" @@ -185,6 +185,16 @@ fn _simd_construction_checks[type: DType, size: Int](): not (type is DType.bfloat16 and has_neon()), "bf16 is not supported for ARM architectures", ]() + # MOCO-1388: Until LLVM's issue #122571 is fixed, LLVM's SelectionDAG has + # a limit of 2^15 for the number of operands of the instruction. + # NOTE: Even after the limit increases in LLVM, compile time might be 3x + # slower than with GCC, therefore until we have a real use case for large + # SIMD, we better to keep limit at 2^15. + # NOTE: Might need to revisit the limit for targets that use GlobalISel + # as it does have smaller limit now. + constrained[ + size <= 2**15, "simd size is too large and must be less than 2^15" + ]() @always_inline("nodebug") From 5887a9187a65a43cbf5e8a73ef57d86338cec28b Mon Sep 17 00:00:00 2001 From: Connor Gray Date: Tue, 14 Jan 2025 13:36:17 -0600 Subject: [PATCH 224/509] [stdlib][NFC] cleanup: Factor out codepoint test data MODULAR_ORIG_COMMIT_REV_ID: ebb0b89772d7462416c97559b41e4f4cd198a74f --- stdlib/test/builtin/test_char.mojo | 93 +++++++++++++++--------------- 1 file changed, 45 insertions(+), 48 deletions(-) diff --git a/stdlib/test/builtin/test_char.mojo b/stdlib/test/builtin/test_char.mojo index 346467d3e2..c8c083a82a 100644 --- a/stdlib/test/builtin/test_char.mojo +++ b/stdlib/test/builtin/test_char.mojo @@ -95,6 +95,42 @@ def test_char_is_posix_space(): assert_false(Char.ord(".").is_posix_space()) +alias SIGNIFICANT_CODEPOINTS = List[Tuple[Int, List[Byte]]]( + # -------------------------- + # 1-byte (ASCII) codepoints + # -------------------------- + # Smallest 1-byte codepoint value + (0, List[Byte](0)), + (1, List[Byte](1)), + (32, List[Byte](32)), # First non-control character + (0b0111_1111, List[Byte](127)), # 127 + # ------------------ + # 2-byte codepoints -- 0b110x_xxxx 0b10xx_xxxx (11 x's) + # ------------------ + # Smallest 2-byte codepoint + (128, List[Byte](0b1100_0010, 0b1000_0000)), + # Largest 2-byte codepoint -- 2^11 - 1 == 2047 + (2**11 - 1, List[Byte](0b1101_1111, 0b1011_1111)), + # ------------------ + # 3-byte codepoints -- 0b1110_xxxx 0b10xx_xxxx 0b10xx_xxxx (16 x's) + # ------------------ + # Smallest 3-byte codepoint -- 2^11 == 2048 + (2**11, List[Byte](0b1110_0000, 0b1010_0000, 0b1000_0000)), + # Largest 3-byte codepoint -- 2^16 - 1 == 65535 == 0xFFFF + (2**16 - 1, List[Byte](0b1110_1111, 0b1011_1111, 0b1011_1111)), + # ------------------ + # 4-byte codepoints 0b1111_0xxx 0b10xx_xxxx 0b10xx_xxxx 0b10xx_xxxx (21 x's) + # ------------------ + # Smallest 4-byte codepoint + (2**16, List[Byte](0b1111_0000, 0b1001_0000, 0b1000_0000, 0b1000_0000)), + # Largest 4-byte codepoint -- Maximum Unicode codepoint + ( + 0x10FFFF, + List[Byte](0b1111_0100, 0b1000_1111, 0b1011_1111, 0b1011_1111), + ), +) + + fn assert_utf8_bytes(codepoint: UInt32, owned expected: List[Byte]) raises: var char_opt = Char.from_u32(codepoint) var char = char_opt.value() @@ -123,60 +159,21 @@ fn assert_utf8_bytes(codepoint: UInt32, owned expected: List[Byte]) raises: def test_char_utf8_encoding(): - assert_utf8_bytes(0, List[Byte](0)) - assert_utf8_bytes(1, List[Byte](1)) - assert_utf8_bytes(127, List[Byte](127)) - - # Smallest 2-byte codepoint - assert_utf8_bytes(128, List[Byte](0b1100_0010, 0b1000_0000)) - # Largest 2-byte codepoint - assert_utf8_bytes(2**11 - 1, List[Byte](0b1101_1111, 0b1011_1111)) - - # Smallest 3-byte codepoint -- 2^11 == 2048 - assert_utf8_bytes( - 2**11, List[Byte](0b1110_0000, 0b1010_0000, 0b1000_0000) - ) - # Largest 3-byte codepoint -- 2^16 - 1 == 65535 == 0xFFFF - assert_utf8_bytes( - 2**16 - 1, List[Byte](0b1110_1111, 0b1011_1111, 0b1011_1111) - ) + for entry in SIGNIFICANT_CODEPOINTS: + var codepoint = entry[][0] + var expected_utf8 = entry[][1] - # Smallest 4-byte codepoint - assert_utf8_bytes( - 2**16, List[Byte](0b1111_0000, 0b1001_0000, 0b1000_0000, 0b1000_0000) - ) - # Largest 4-byte codepoint -- Maximum Unicode codepoint - assert_utf8_bytes( - 0x10FFFF, List[Byte](0b1111_0100, 0b1000_1111, 0b1011_1111, 0b1011_1111) - ) + assert_utf8_bytes(codepoint, expected_utf8) def test_char_utf8_byte_length(): - fn codepoint_len(cp: UInt32) -> Int: - return Char.from_u32(cp).value().utf8_byte_length() + for entry in SIGNIFICANT_CODEPOINTS: + var codepoint = entry[][0] + var expected_utf8 = entry[][1] - # 1-byte (ASCII) codepoints - assert_equal(codepoint_len(0), 1) - assert_equal(codepoint_len(32), 1) - assert_equal(codepoint_len(127), 1) + var computed_len = Char.from_u32(codepoint).value().utf8_byte_length() - # 2-byte codepoints -- 0b110x_xxxx 0b10xx_xxxx (11 x's) - # Smallest 2-byte codepoint - assert_equal(codepoint_len(128), 2) - # Largest 2-byte codepoint - assert_equal(codepoint_len(2**11 - 1), 2) # 2^11 - 1 == 2047 - - # 3-byte codepoints -- 0b1110_xxxx 0b10xx_xxxx 0b10xx_xxxx (16 x's) - # Smallest 3-byte codepoint - assert_equal(codepoint_len(2**11), 3) # 2^11 == 2048 - # Largest 3-byte codepoint - assert_equal(codepoint_len(2**16 - 1), 3) # 2^16 - 1 == 65535 == 0xFFFF - - # 4-byte codepoints 0b1111_0xxx 0b10xx_xxxx 0b10xx_xxxx 0b10xx_xxxx (21 x's) - # Smallest 4-byte codepoint - assert_equal(codepoint_len(2**16), 4) - # Largest 4-byte codepoint - assert_equal(codepoint_len(0x10FFFF), 4) # Maximum Unicode codepoint + assert_equal(computed_len, len(expected_utf8)) def test_char_comptime(): From 32cd7fa6f75568b49c787a577c9cc4da6f295651 Mon Sep 17 00:00:00 2001 From: Rasool Sharifi Date: Tue, 14 Jan 2025 15:30:44 -0500 Subject: [PATCH 225/509] [******][GPU] Add conversion from all floating point types to fp8 Add conversion from all floating point types to fp8. MODULAR_ORIG_COMMIT_REV_ID: 6c8a09290a6a9b67ea2e95167ceb8e9673125ded --- stdlib/src/builtin/simd.mojo | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/stdlib/src/builtin/simd.mojo b/stdlib/src/builtin/simd.mojo index e97cb3c9bf..c01370d2cb 100644 --- a/stdlib/src/builtin/simd.mojo +++ b/stdlib/src/builtin/simd.mojo @@ -1843,12 +1843,14 @@ struct SIMD[type: DType, size: Int]( return self.cast[DType.float32]().cast[target]() @parameter - if type is DType.float32 and target in ( - DType.float8e4m3, - DType.float8e5m2, - ): - return _convert_f32_to_float8[size=size, target=target]( - rebind[SIMD[DType.float32, size]](self) + if target in (DType.float8e4m3, DType.float8e5m2): + # TODO(KERN-1488): use gpu (H100) instruction to convert from fp16 to fp8 + return rebind[SIMD[target, size]]( + _convert_f32_to_float8[size=size, target=target]( + rebind[SIMD[DType.float32, size]]( + self.cast[DType.float32]() + ) + ) ) @parameter From f7a3561b0075294361681f1b384c3ed65da9e3f0 Mon Sep 17 00:00:00 2001 From: Connor Gray Date: Tue, 14 Jan 2025 15:38:12 -0600 Subject: [PATCH 226/509] [stdlib] feat: Add `StringSlice.char_length()` + use `StringSlice` in low-level utils This is part of preparing the way to change `StringSlice.__len__()` to return the string length in bytes instead of codepoints. MODULAR_ORIG_COMMIT_REV_ID: 05955b1974e7682b8d9da1214049e850a2278e21 --- docs/changelog.md | 9 ++++ .../src/collections/string/string_slice.mojo | 48 +++++++++++++------ .../collections/string/test_string_slice.mojo | 28 +++++++++-- 3 files changed, 67 insertions(+), 18 deletions(-) diff --git a/docs/changelog.md b/docs/changelog.md index b1e027026d..fc57571237 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -149,6 +149,15 @@ what we publish. has narrower comparison methods that support comparing only with `StringSlice`'s with the exact same origin. +- Added `StringSlice.char_length()` method, to pair with the existing + `StringSlice.byte_length()` method. + + In a future version of Mojo, `StringSlice.__len__()` may be changed to return + the length in bytes, matching the convention of string length methods in + languages like C++ and Rust. Callers that know they need the length in + Unicode codepoints should update to calling `StringSlice.char_length()` + instead. + - Removed `@implicit` decorator from some standard library initializer methods that perform allocation. This reduces places where Mojo code could implicitly allocate where the user may not be aware. diff --git a/stdlib/src/collections/string/string_slice.mojo b/stdlib/src/collections/string/string_slice.mojo index 974f2a4e6e..fd1eeae585 100644 --- a/stdlib/src/collections/string/string_slice.mojo +++ b/stdlib/src/collections/string/string_slice.mojo @@ -36,10 +36,10 @@ alias StaticString = StringSlice[StaticConstantOrigin] """An immutable static string slice.""" -fn _count_utf8_continuation_bytes(span: Span[Byte]) -> Int: +fn _count_utf8_continuation_bytes(str_slice: StringSlice) -> Int: alias sizes = (256, 128, 64, 32, 16, 8) - var ptr = span.unsafe_ptr() - var num_bytes = len(span) + var ptr = str_slice.unsafe_ptr() + var num_bytes = str_slice.byte_length() var amnt: Int = 0 var processed = 0 @@ -181,17 +181,16 @@ struct _StringSliceIter[ fn __len__(self) -> Int: @parameter if forward: - remaining = self.length - self.index - cont = _count_utf8_continuation_bytes( - Span[Byte, ImmutableAnyOrigin]( - ptr=self.ptr + self.index, length=remaining - ) + var remaining = self.length - self.index + var span = Span[Byte, ImmutableAnyOrigin]( + ptr=self.ptr + self.index, length=remaining ) - return remaining - cont + return StringSlice(unsafe_from_utf8=span).char_length() else: - return self.index - _count_utf8_continuation_bytes( - Span[Byte, ImmutableAnyOrigin](ptr=self.ptr, length=self.index) + var span = Span[Byte, ImmutableAnyOrigin]( + ptr=self.ptr, length=self.index ) + return StringSlice(unsafe_from_utf8=span).char_length() @value @@ -408,10 +407,7 @@ struct StringSlice[mut: Bool, //, origin: Origin[mut]]( Returns: The length in Unicode codepoints. """ - var b_len = self.byte_length() - alias S = Span[Byte, StaticConstantOrigin] - var s = S(ptr=self.unsafe_ptr(), length=b_len) - return b_len - _count_utf8_continuation_bytes(s) + return self.char_length() fn write_to[W: Writer](self, mut writer: W): """Formats this string slice to the provided `Writer`. @@ -806,6 +802,28 @@ struct StringSlice[mut: Bool, //, origin: Origin[mut]]( return len(self.as_bytes()) + fn char_length(self) -> UInt: + """Returns the length in Unicode codepoints. + + This returns the number of `Char` codepoint values encoded in the UTF-8 + representation of this string. + + Note: To get the length in bytes, use `StringSlice.byte_length()`. + + Returns: + The length in Unicode codepoints. + """ + # Every codepoint is encoded as one leading byte + 0 to 3 continuation + # bytes. + # The total number of codepoints is equal the number of leading bytes. + # So we can compute the number of leading bytes (and thereby codepoints) + # by subtracting the number of continuation bytes length from the + # overall length in bytes. + # For a visual explanation of how this UTF-8 codepoint counting works: + # https://connorgray.com/ephemera/project-log#2025-01-13 + var continuation_count = _count_utf8_continuation_bytes(self) + return self.byte_length() - continuation_count + fn get_immutable( self, ) -> StringSlice[ImmutableOrigin.cast_from[origin].result]: diff --git a/stdlib/test/collections/string/test_string_slice.mojo b/stdlib/test/collections/string/test_string_slice.mojo index 4b4618bd11..556128a19e 100644 --- a/stdlib/test/collections/string/test_string_slice.mojo +++ b/stdlib/test/collections/string/test_string_slice.mojo @@ -170,6 +170,26 @@ fn test_slice_len() raises: assert_equal(1, len(slice5)) +fn test_slice_char_length() raises: + var s0 = StringSlice("") + assert_equal(s0.byte_length(), 0) + assert_equal(s0.char_length(), 0) + + var s1 = StringSlice("foo") + assert_equal(s1.byte_length(), 3) + assert_equal(s1.char_length(), 3) + + # This string contains 1-, 2-, 3-, and 4-byte codepoint sequences. + var s2 = StringSlice("߷കൈ🔄!") + assert_equal(s2.byte_length(), 13) + assert_equal(s2.char_length(), 5) + + # Just a bit of Zalgo text. + var s3 = StringSlice("H̵͙̖̼̬̬̲̱͊̇̅͂̍͐͌͘͜͝") + assert_equal(s3.byte_length(), 37) + assert_equal(s3.char_length(), 19) + + fn test_slice_eq() raises: var str1: String = "12345" var str2: String = "12345" @@ -460,9 +480,10 @@ def test_count_utf8_continuation_bytes(): alias b4 = UInt8(0b1111_0000) def _test(amnt: Int, items: List[UInt8]): - p = items.unsafe_ptr() - span = Span[Byte, StaticConstantOrigin](ptr=p, length=len(items)) - assert_equal(amnt, _count_utf8_continuation_bytes(span)) + var p = items.unsafe_ptr() + var span = Span[Byte, StaticConstantOrigin](ptr=p, length=len(items)) + var str_slice = StringSlice(unsafe_from_utf8=span) + assert_equal(amnt, _count_utf8_continuation_bytes(str_slice)) _test(5, List[UInt8](c, c, c, c, c)) _test(2, List[UInt8](b2, c, b2, c, b1)) @@ -699,6 +720,7 @@ def main(): test_string_byte_span() test_heap_string_from_string_slice() test_slice_len() + test_slice_char_length() test_slice_eq() test_slice_bool() test_slice_repr() From 803ab28ca18836383d79358a4d30469f3f56d8ef Mon Sep 17 00:00:00 2001 From: Lukas Hermann <1734032+lsh@users.noreply.github.com> Date: Tue, 14 Jan 2025 13:42:28 -0800 Subject: [PATCH 227/509] [stdlib] Get print working on multithreads `StaticTuple` has some issues that `InlineArray` fixes. By switching to `InlineArray` the payload copies behave properly. One side effect of this change is that we have to get rid of the `address_space` tag on the `payload_t` pointers, since non-trivial types (`InlineArray`) can't be copied across address spaces. MODULAR_ORIG_COMMIT_REV_ID: f48eedfc43db45c3465508390aa9ae2421c52bdd --- stdlib/src/sys/_amdgpu.mojo | 19 ++++++------------- 1 file changed, 6 insertions(+), 13 deletions(-) diff --git a/stdlib/src/sys/_amdgpu.mojo b/stdlib/src/sys/_amdgpu.mojo index 7e3f2ca06a..169ddcd9f5 100644 --- a/stdlib/src/sys/_amdgpu.mojo +++ b/stdlib/src/sys/_amdgpu.mojo @@ -23,7 +23,6 @@ from sys.intrinsics import ( ) from time import sleep from collections import InlineArray -from utils import StaticTuple # NOTE: MOST OF THE CODE HERE IS ADAPTED FROM # AMD'S `device-libs`. @@ -547,12 +546,11 @@ struct Header: me: UInt32, low: UInt32, ): + var active = ballot[DType.int64](True).cast[DType.uint64]() if me == low: var control = set_ready_flag(0) self._handle[].control = control - self._handle[].activemask = ballot[DType.int64](True).cast[ - DType.uint64 - ]() + self._handle[].activemask = active self._handle[].service = service_id payload[Int(me), 0] = arg0 @@ -605,7 +603,7 @@ struct Header: sleep(UInt(1)) - var ptr = payload._handle[].slots[Int(me)] + var ptr = payload._handle[].slots[Int(me) * 8] var value0 = ptr[0] var value1 = ptr[1] return value0, value1 @@ -627,9 +625,7 @@ struct header_t: @value @register_passable("trivial") struct Payload: - var _handle: UnsafePointer[ - payload_t, address_space = _GPUAddressSpace.GLOBAL - ] + var _handle: UnsafePointer[payload_t] @always_inline fn __setitem__(mut self, idx0: Int, idx1: Int, value: UInt64): @@ -641,9 +637,8 @@ struct Payload: # but this is actually just conforming to the ABI of: # https://github.com/ROCm/clr/blob/f5b2516f5d8a44b06ad1907594db1be25a9fe57b/rocclr/device/devhostcall.hpp#L99 @value -@register_passable("trivial") struct payload_t: - var slots: StaticTuple[StaticTuple[UInt64, 8], 64] + var slots: InlineArray[InlineArray[UInt64, 8], 64] @value @@ -752,9 +747,7 @@ struct buffer_t: var headers: UnsafePointer[ header_t, address_space = _GPUAddressSpace.GLOBAL ] - var payloads: UnsafePointer[ - payload_t, address_space = _GPUAddressSpace.GLOBAL - ] + var payloads: UnsafePointer[payload_t] var doorbell: UInt64 var free_stack: UInt64 var ready_stack: UInt64 From d5dfbe8d6a8e238fbbd970a0cd0eb9fdbe289155 Mon Sep 17 00:00:00 2001 From: Connor Gray Date: Tue, 14 Jan 2025 17:06:33 -0600 Subject: [PATCH 228/509] [stdlib] feat: Add `String.chars()` and `CharsIter` iterator type In many cases, code that currently iterates over `String` using it's `__iter__()` method that return single-character substring slice as `StringSlice` elements, would instead be more readable if it was written instead using a `Char` iterator. This will enable us to do that refactoring. MODULAR_ORIG_COMMIT_REV_ID: 1f9a40abee881a7438707b4e6159fac7b42206f9 --- docs/changelog.md | 4 + .../src/collections/string/string_slice.mojo | 183 ++++++++++++++++++ .../collections/string/test_string_slice.mojo | 74 +++++++ 3 files changed, 261 insertions(+) diff --git a/docs/changelog.md b/docs/changelog.md index fc57571237..0e24712deb 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -119,6 +119,10 @@ what we publish. a `StringSlice` from a buffer containing UTF-8 encoded data. This method will raise if the buffer contents are not valid UTF-8. +- Added `StringSlice.chars()` which returns an iterator over `Char`s. This is a + compliant UTF-8 decoder that returns each Unicode codepoint encoded in the + string. + - Several standard library functions have been changed to take `StringSlice` instead of `String`. This generalizes them to be used for any appropriately encoded string in memory, without requiring that the string be heap allocated. diff --git a/stdlib/src/collections/string/string_slice.mojo b/stdlib/src/collections/string/string_slice.mojo index fd1eeae585..910fa02883 100644 --- a/stdlib/src/collections/string/string_slice.mojo +++ b/stdlib/src/collections/string/string_slice.mojo @@ -193,6 +193,144 @@ struct _StringSliceIter[ return StringSlice(unsafe_from_utf8=span).char_length() +@value +struct CharsIter[mut: Bool, //, origin: Origin[mut]]: + """Iterator over the `Char`s in a string slice, constructed by + `StringSlice.chars()`. + + Parameters: + mut: Mutability of the underlying string data. + origin: Origin of the underlying string data. + """ + + var _slice: StringSlice[origin] + """String slice containing the bytes that have not been read yet. + + When this iterator advances, the pointer in `_slice` is advanced by the + byte length of each read character, and the slice length is decremented by + the same amount. + """ + + # Note: + # Marked private since `StringSlice.chars()` is the intended public way to + # construct this type. + @doc_private + fn __init__(out self, str_slice: StringSlice[origin]): + self._slice = str_slice + + # ===-------------------------------------------------------------------===# + # Trait implementations + # ===-------------------------------------------------------------------===# + + @doc_private + fn __iter__(self) -> Self: + return self + + fn __next__(mut self) -> Char: + """Get the next character in the underlying string slice. + + This returns the next `Char` encoded in the underlying string, and + advances the iterator state. + + This function will abort if this iterator has been exhausted. + + Returns: + The next character in the string. + """ + + return self.next().value() + + @always_inline + fn __has_next__(self) -> Bool: + """Returns True if there are still elements in this iterator. + + Returns: + A boolean indicating if there are still elements in this iterator. + """ + return bool(self.peek_next()) + + @always_inline + fn __len__(self) -> Int: + """Returns the remaining length of this iterator in `Char`s. + + The value returned from this method indicates the number of subsequent + calls to `next()` that will return a value. + + Returns: + Number of codepoints remaining in this iterator. + """ + return self._slice.char_length() + + # ===-------------------------------------------------------------------===# + # Methods + # ===-------------------------------------------------------------------===# + + fn peek_next(self) -> Optional[Char]: + """Check what the next character in this iterator is, without advancing + the iterator state. + + Repeated calls to this method will return the same value. + + Returns: + The next character in the underlying string, or None if the string + is empty. + + # Examples + + `peek_next()` does not advance the iterator, so repeated calls will + return the same value: + + ```mojo + from collections.string import StringSlice + from testing import assert_equal + + var input = StringSlice("123") + var iter = input.chars() + + assert_equal(iter.peek_next().value(), Char.ord("1")) + assert_equal(iter.peek_next().value(), Char.ord("1")) + assert_equal(iter.peek_next().value(), Char.ord("1")) + + # A call to `next()` return the same value as `peek_next()` had, + # but also advance the iterator. + assert_equal(iter.next().value(), Char.ord("1")) + + # Later `peek_next()` calls will return the _new_ next character: + assert_equal(iter.peek_next().value(), Char.ord("2")) + ``` + . + """ + if len(self._slice) > 0: + # SAFETY: Will not read out of bounds because `_slice` is guaranteed + # to contain valid UTF-8. + char, _ = Char.unsafe_decode_utf8_char(self._slice.unsafe_ptr()) + return char + else: + return None + + fn next(mut self) -> Optional[Char]: + """Get the next character in the underlying string slice, or None if + the iterator is empty. + + This returns the next `Char` encoded in the underlying string, and + advances the iterator state. + + Returns: + A character if the string is not empty, otherwise None. + """ + var result: Optional[Char] = self.peek_next() + + if result: + # SAFETY: We just checked that `result` holds a value + var char_len = result.unsafe_value().utf8_byte_length() + # Advance the pointer in _slice. + self._slice._slice._data += char_len + # Decrement the byte-length of _slice. + self._slice._slice._len -= char_len + + return result + + @value @register_passable("trivial") struct StringSlice[mut: Bool, //, origin: Origin[mut]]( @@ -772,6 +910,51 @@ struct StringSlice[mut: Bool, //, origin: Origin[mut]]( l_idx += 1 return Self(unsafe_from_utf8=self.as_bytes()[l_idx:]) + @always_inline + fn chars(self) -> CharsIter[origin]: + """Returns an iterator over the `Char`s encoded in this string slice. + + Returns: + An iterator type that returns successive `Char` values stored in + this string slice. + + # Examples + + Print the characters in a string: + + ```mojo + from collections.string import StringSlice + from testing import assert_equal + + var s = StringSlice("abc") + var iter = s.chars() + assert_equal(iter.__next__(), Char.ord("a")) + assert_equal(iter.__next__(), Char.ord("b")) + assert_equal(iter.__next__(), Char.ord("c")) + assert_equal(iter.__has_next__(), False) + ``` + + `chars()` iterates over Unicode codepoints, and supports multibyte + codepoints: + + ```mojo + from collections.string import StringSlice + from testing import assert_equal + + # A visual character composed of a combining sequence of 2 codepoints. + var s = StringSlice("á") + assert_equal(s.byte_length(), 3) + + var iter = s.chars() + assert_equal(iter.__next__(), Char.ord("a")) + # U+0301 Combining Acute Accent + assert_equal(iter.__next__().to_u32(), 0x0301) + assert_equal(iter.__has_next__(), False) + ``` + . + """ + return CharsIter(self) + @always_inline fn as_bytes(self) -> Span[Byte, origin]: """Get the sequence of encoded bytes of the underlying string. diff --git a/stdlib/test/collections/string/test_string_slice.mojo b/stdlib/test/collections/string/test_string_slice.mojo index 556128a19e..8a94cb024f 100644 --- a/stdlib/test/collections/string/test_string_slice.mojo +++ b/stdlib/test/collections/string/test_string_slice.mojo @@ -714,6 +714,79 @@ def test_count(): assert_equal(StringSlice("aaaaaa").count("aa"), 3) +def test_chars_iter(): + # Test `for` loop iteration support + for char in StringSlice("abc").chars(): + assert_true(char in (Char.ord("a"), Char.ord("b"), Char.ord("c"))) + + # Test empty string chars + var s0 = StringSlice("") + var s0_iter = s0.chars() + + assert_false(s0_iter.__has_next__()) + assert_true(s0_iter.peek_next() is None) + assert_true(s0_iter.next() is None) + + # Test simple ASCII string chars + var s1 = StringSlice("abc") + var s1_iter = s1.chars() + + assert_equal(s1_iter.next().value(), Char.ord("a")) + assert_equal(s1_iter.next().value(), Char.ord("b")) + assert_equal(s1_iter.next().value(), Char.ord("c")) + assert_true(s1_iter.next() is None) + + # Multibyte character decoding: A visual character composed of a combining + # sequence of 2 codepoints. + var s2 = StringSlice("á") + assert_equal(s2.byte_length(), 3) + assert_equal(s2.char_length(), 2) + + var iter = s2.chars() + assert_equal(iter.__next__(), Char.ord("a")) + # U+0301 Combining Acute Accent + assert_equal(iter.__next__().to_u32(), 0x0301) + assert_equal(iter.__has_next__(), False) + + # A piece of text containing, 1-byte, 2-byte, 3-byte, and 4-byte codepoint + # sequences. + # For a visualization of this sequence, see: + # https://connorgray.com/ephemera/project-log#2025-01-13 + var s3 = StringSlice("߷കൈ🔄!") + assert_equal(s3.byte_length(), 13) + assert_equal(s3.char_length(), 5) + var s3_iter = s3.chars() + + # Iterator __len__ returns length in codepoints, not bytes. + assert_equal(s3_iter.__len__(), 5) + assert_equal(s3_iter._slice.byte_length(), 13) + assert_equal(s3_iter.__has_next__(), True) + assert_equal(s3_iter.__next__(), Char.ord("߷")) + + assert_equal(s3_iter.__len__(), 4) + assert_equal(s3_iter._slice.byte_length(), 11) + assert_equal(s3_iter.__next__(), Char.ord("ക")) + + # Combining character, visually comes first, but codepoint-wise comes + # after the character it combines with. + assert_equal(s3_iter.__len__(), 3) + assert_equal(s3_iter._slice.byte_length(), 8) + assert_equal(s3_iter.__next__(), Char.ord("ൈ")) + + assert_equal(s3_iter.__len__(), 2) + assert_equal(s3_iter._slice.byte_length(), 5) + assert_equal(s3_iter.__next__(), Char.ord("🔄")) + + assert_equal(s3_iter.__len__(), 1) + assert_equal(s3_iter._slice.byte_length(), 1) + assert_equal(s3_iter.__has_next__(), True) + assert_equal(s3_iter.__next__(), Char.ord("!")) + + assert_equal(s3_iter.__len__(), 0) + assert_equal(s3_iter._slice.byte_length(), 0) + assert_equal(s3_iter.__has_next__(), False) + + def main(): test_string_slice_layout() test_string_literal_byte_span() @@ -742,3 +815,4 @@ def main(): test_strip() test_startswith() test_endswith() + test_chars_iter() From 6660b42dc166150fc43080e0539fb947467fca23 Mon Sep 17 00:00:00 2001 From: Jack Clayton Date: Tue, 14 Jan 2025 18:37:20 -0500 Subject: [PATCH 229/509] [stdlib] Add deprecation warnings to `int` function Phase in removal of `int` with a deprecation warning. MODULAR_ORIG_COMMIT_REV_ID: 8d6dee6333592145c3a7945a1a6f8624fc32326b --- docs/changelog.md | 7 +- stdlib/src/builtin/int.mojo | 103 ++++++++++++++++++ stdlib/src/prelude/__init__.mojo | 1 + .../builtin/test_deprecation_warnings.mojo | 19 ++++ 4 files changed, 127 insertions(+), 3 deletions(-) create mode 100644 stdlib/test/builtin/test_deprecation_warnings.mojo diff --git a/docs/changelog.md b/docs/changelog.md index 0e24712deb..c62f9a5adc 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -44,10 +44,11 @@ what we publish. ### Standard library changes -- The `int` function to construct an `Int` has been removed, this was a +- The `int` function to construct an `Int` has been deprecated, this was a temporary workaround when Mojo didn't have a way to distinguish between - implicit and explicit constructors. You can do a search and replace for `int(` - to `Int(` to update your programs. + implicit and explicit constructors. You can do a search and replace from + `int(` to `Int(` to update your programs, the `int` function will be removed + in the next release. - `UnsafePointer`'s `bitcast` method has now been split into `bitcast` for changing the type, `origin_cast` for changing mutability, diff --git a/stdlib/src/builtin/int.mojo b/stdlib/src/builtin/int.mojo index f21bb325fa..abc536abb9 100644 --- a/stdlib/src/builtin/int.mojo +++ b/stdlib/src/builtin/int.mojo @@ -204,6 +204,109 @@ trait ImplicitlyIntable(Intable): ... +# ===----------------------------------------------------------------------=== # +# int +# ===----------------------------------------------------------------------=== # + + +# FIXME(25.1): Move `int` deprecation warnings to a compiler error +@deprecated( + "the `int` function is deprecated, use the `Int` constructor instead." +) +@always_inline +fn int[T: Intable](value: T) -> Int: + """Get the Int representation of the value. + + Parameters: + T: The Intable type. + + Args: + value: The object to get the integral representation of. + + Returns: + The integral representation of the value. + """ + return value.__int__() + + +@deprecated( + "the `int` function is deprecated, use the `Int` constructor instead." +) +@always_inline +fn int[T: IntableRaising](value: T) raises -> Int: + """Get the Int representation of the value. + + Parameters: + T: The Intable type. + + Args: + value: The object to get the integral representation of. + + Returns: + The integral representation of the value. + + Raises: + If the type does not have an integral representation. + """ + return value.__int__() + + +@deprecated( + "the `int` function is deprecated, use the `Int` constructor instead." +) +fn int(value: StringSlice, base: Int = 10) raises -> Int: + """Parses and returns the given string as an integer in the given base. + + If base is set to 0, the string is parsed as an Integer literal, with the + following considerations: + - '0b' or '0B' prefix indicates binary (base 2) + - '0o' or '0O' prefix indicates octal (base 8) + - '0x' or '0X' prefix indicates hexadecimal (base 16) + - Without a prefix, it's treated as decimal (base 10) + + Args: + value: A string to be parsed as an integer in the given base. + base: Base used for conversion, value must be between 2 and 36, or 0. + + Returns: + An integer value that represents the string. + + Raises: + If the given string cannot be parsed as an integer value or if an + incorrect base is provided. + + Examples: + >>> int("32") + 32 + >>> int("FF", 16) + 255 + >>> int("0xFF", 0) + 255 + >>> int("0b1010", 0) + 10 + + Notes: + This follows [Python's integer literals]( + https://docs.python.org/3/reference/lexical_analysis.html#integers). + """ + return atol(value, base) + + +@deprecated( + "the `int` function is deprecated, use the `Int` constructor instead." +) +fn int(value: UInt) -> Int: + """Get the Int representation of the value. + + Args: + value: The object to get the integral representation of. + + Returns: + The integral representation of the value. + """ + return value.value + + # ===----------------------------------------------------------------------=== # # Int # ===----------------------------------------------------------------------=== # diff --git a/stdlib/src/prelude/__init__.mojo b/stdlib/src/prelude/__init__.mojo index a73a129610..572ff016ad 100644 --- a/stdlib/src/prelude/__init__.mojo +++ b/stdlib/src/prelude/__init__.mojo @@ -66,6 +66,7 @@ from builtin.int import ( ImplicitlyIntable, IntableRaising, index, + int, ) from builtin.int_literal import IntLiteral from builtin.io import input, print diff --git a/stdlib/test/builtin/test_deprecation_warnings.mojo b/stdlib/test/builtin/test_deprecation_warnings.mojo new file mode 100644 index 0000000000..d7a36cdecb --- /dev/null +++ b/stdlib/test/builtin/test_deprecation_warnings.mojo @@ -0,0 +1,19 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2024, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # +# RUN: %mojo %s 2>&1 1>/dev/null | FileCheck %s --check-prefix=CHECK-STDERR + + +fn main(): + # FIXME(25.1): Move `int` deprecation warnings to a compiler error + # CHECK-STDERR: warning: the `int` function is deprecated, use the `Int` constructor instead + _ = int(42) From 090bc9f498cb0c2e9ed9b4447d97afac676fd4f4 Mon Sep 17 00:00:00 2001 From: Lukas Hermann <1734032+lsh@users.noreply.github.com> Date: Tue, 14 Jan 2025 15:58:42 -0800 Subject: [PATCH 230/509] [stdlib] Fix GPU Indexing bug Accidentally multiplying by chunk size. MODULAR_ORIG_COMMIT_REV_ID: 26a6cb4c7a2546794ef3f63728a71097326a2b50 --- stdlib/src/sys/_amdgpu.mojo | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/stdlib/src/sys/_amdgpu.mojo b/stdlib/src/sys/_amdgpu.mojo index 169ddcd9f5..b8cbb9a876 100644 --- a/stdlib/src/sys/_amdgpu.mojo +++ b/stdlib/src/sys/_amdgpu.mojo @@ -603,7 +603,7 @@ struct Header: sleep(UInt(1)) - var ptr = payload._handle[].slots[Int(me) * 8] + var ptr = payload._handle[].slots[Int(me)] var value0 = ptr[0] var value1 = ptr[1] return value0, value1 From 3e4a57b70da1eb0ac3c9c21a99bfcd7e9f1b2af7 Mon Sep 17 00:00:00 2001 From: Connor Gray Date: Tue, 14 Jan 2025 18:44:45 -0600 Subject: [PATCH 231/509] [stdlib] feat: Add `Char.is_python_space()` + cleanup `StringSlice.isspace()` This adds a new `Char.is_python_space()` utility function, and cleans up `StringSlice.isspace()` to use the it, along with the recently added character iterator. MODULAR_ORIG_COMMIT_REV_ID: 0739c7a540cedefec7e31ced1550310b5a6a56e2 --- docs/changelog.md | 2 + stdlib/src/builtin/char.mojo | 42 +++++++++++++++ .../src/collections/string/string_slice.mojo | 54 +++++++++---------- .../test/collections/string/test_string.mojo | 2 + 4 files changed, 72 insertions(+), 28 deletions(-) diff --git a/docs/changelog.md b/docs/changelog.md index c62f9a5adc..b1bfb3c91a 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -112,6 +112,8 @@ what we publish. `Stringable`. - Added `String` constructor from `Char` - `Char` can be converted to `UInt32` via `Char.to_u32()`. + - `Char` provides methods for categorizing character types, including: + `Char.is_ascii()`, `Char.is_posix_space()`, `Char.is_python_space()`. - `chr(Int)` will now abort if given a codepoint value that is not a valid `Char`. diff --git a/stdlib/src/builtin/char.mojo b/stdlib/src/builtin/char.mojo index 863a046442..0a48f7cdc6 100644 --- a/stdlib/src/builtin/char.mojo +++ b/stdlib/src/builtin/char.mojo @@ -272,6 +272,48 @@ struct Char(CollectionElement, EqualityComparable, Intable, Stringable): """ return self._scalar_value <= 0b0111_1111 + @always_inline + fn is_python_space(self) -> Bool: + """Determines whether this character is a Python whitespace string. + + This corresponds to Python's [universal separators]( + https://docs.python.org/3/library/stdtypes.html#str.splitlines): + `" \\t\\n\\v\\f\\r\\x1c\\x1d\\x1e\\x85\\u2028\\u2029"`. + + Returns: + True if this character is one of the whitespace characters listed + above, otherwise False. + + # Examples + + Check if a string contains only whitespace: + + ```mojo + from testing import assert_true, assert_false + + # ASCII space characters + assert_true(Char.ord(" ").is_python_space()) + assert_true(Char.ord("\t").is_python_space()) + + # Unicode paragraph separator: + assert_true(Char.from_u32(0x2029).value().is_python_space()) + + # Letters are not space characters + assert_fales(Char.ord("a").is_python_space()) + ``` + . + """ + + alias next_line = Char.from_u32(0x85).value() + alias unicode_line_sep = Char.from_u32(0x2028).value() + alias unicode_paragraph_sep = Char.from_u32(0x2029).value() + + return self.is_posix_space() or self in ( + next_line, + unicode_line_sep, + unicode_paragraph_sep, + ) + fn is_posix_space(self) -> Bool: """Returns True if this `Char` is a **space** character according to the [POSIX locale][1]. diff --git a/stdlib/src/collections/string/string_slice.mojo b/stdlib/src/collections/string/string_slice.mojo index 910fa02883..5a48b47b5e 100644 --- a/stdlib/src/collections/string/string_slice.mojo +++ b/stdlib/src/collections/string/string_slice.mojo @@ -1201,44 +1201,42 @@ struct StringSlice[mut: Bool, //, origin: Origin[mut]]( fn isspace(self) -> Bool: """Determines whether every character in the given StringSlice is a python whitespace String. This corresponds to Python's - [universal separators:]( - https://docs.python.org/3/library/stdtypes.html#str.splitlines) - `" \\t\\n\\v\\f\\r\\x1c\\x1d\\x1e\\x85\\u2028\\u2029"`. + [universal separators]( + https://docs.python.org/3/library/stdtypes.html#str.splitlines): + `" \\t\\n\\v\\f\\r\\x1c\\x1d\\x1e\\x85\\u2028\\u2029"`. Returns: True if the whole StringSlice is made up of whitespace characters listed above, otherwise False. + + Examples: + + Check if a string contains only whitespace: + + ```mojo + from collections.string import StringSlice + from testing import assert_true, assert_false + + # An empty string is not considered to contain only whitespace chars: + assert_false(StringSlice("").isspace()) + + # ASCII space characters + assert_true(StringSlice(" ").isspace()) + assert_true(StringSlice("\t").isspace()) + + # Contains non-space characters + assert_false(StringSlice(" abc ").isspace()) + ``` + . """ if self.byte_length() == 0: return False - # TODO add line and paragraph separator as stringliteral - # once Unicode escape sequences are accepted - var next_line = List[UInt8](0xC2, 0x85) - """TODO: \\x85""" - var unicode_line_sep = List[UInt8](0xE2, 0x80, 0xA8) - """TODO: \\u2028""" - var unicode_paragraph_sep = List[UInt8](0xE2, 0x80, 0xA9) - """TODO: \\u2029""" - - for s in self: - var no_null_len = s.byte_length() - var ptr = s.unsafe_ptr() - if no_null_len == 1 and Char(ptr[0]).is_posix_space(): - continue - elif ( - no_null_len == 2 and memcmp(ptr, next_line.unsafe_ptr(), 2) == 0 - ): - continue - elif no_null_len == 3 and ( - memcmp(ptr, unicode_line_sep.unsafe_ptr(), 3) == 0 - or memcmp(ptr, unicode_paragraph_sep.unsafe_ptr(), 3) == 0 - ): - continue - else: + for s in self.chars(): + if not s.is_python_space(): return False - _ = next_line, unicode_line_sep, unicode_paragraph_sep + return True fn isnewline[single_character: Bool = False](self) -> Bool: diff --git a/stdlib/test/collections/string/test_string.mojo b/stdlib/test/collections/string/test_string.mojo index 7828ba1de7..d938ab0fd0 100644 --- a/stdlib/test/collections/string/test_string.mojo +++ b/stdlib/test/collections/string/test_string.mojo @@ -876,6 +876,8 @@ def test_upper(): def test_isspace(): + assert_false(String("").isspace()) + # test all utf8 and unicode separators # 0 is to build a String with null terminator alias next_line = List[UInt8](0xC2, 0x85, 0) From 9e71e8eda36ab156e2cff991716303cfbf563810 Mon Sep 17 00:00:00 2001 From: Judy Heflin Date: Tue, 14 Jan 2025 18:51:48 -0800 Subject: [PATCH 232/509] Add Mojo manual links about Mojo and Python dictionaries to the Dict API. MODULAR_ORIG_COMMIT_REV_ID: bcc8fb2803ffa8e234a27467ad18c422c5990aa1 --- stdlib/src/collections/dict.mojo | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/stdlib/src/collections/dict.mojo b/stdlib/src/collections/dict.mojo index 31ea5bc0e4..27b7f42a3f 100644 --- a/stdlib/src/collections/dict.mojo +++ b/stdlib/src/collections/dict.mojo @@ -22,6 +22,11 @@ Its implementation closely mirrors Python's `dict` implementation: - Insertion order is implicitly preserved. Iteration over keys, values, and items have a deterministic order based on insertion. +- For more information on the Mojo `Dict` type, see the + [Mojo `Dict` manual](/mojo/manual/types/#dict). To learn more about using + Python dictionaries from Mojo, see + [Python types in Mojo](/mojo/manual/python/types/#python-types-in-mojo). + Key elements must implement the `KeyElement` trait, which encompasses Movable, Hashable, and EqualityComparable. It also includes CollectionElement and Copyable until we push references through the standard library types. @@ -380,6 +385,11 @@ struct Dict[K: KeyElement, V: CollectionElement]( K: The type of the dictionary key. Must be Hashable and EqualityComparable so we can find the key in the map. V: The value type of the dictionary. Currently must be CollectionElement. + + For more information on the Mojo `Dict` type, see the + [Mojo `Dict` manual](/mojo/manual/types/#dict). To learn more about using + Python dictionaries from Mojo, see + [Python types in Mojo](/mojo/manual/python/types/#python-types-in-mojo). """ # Implementation: From 1a8af7f17776bec8958c0c9e03d0bae65cc7084a Mon Sep 17 00:00:00 2001 From: modularbot Date: Wed, 15 Jan 2025 17:02:29 +0000 Subject: [PATCH 233/509] Update lockfiles to point to latest nightly version: 25.1.0.dev2025011505 --- examples/life/magic.lock | 191 +++++++++++++++--------------- examples/magic.lock | 191 +++++++++++++++--------------- examples/notebooks/magic.lock | 216 +++++++++++++++++----------------- examples/operators/magic.lock | 191 +++++++++++++++--------------- magic.lock | 207 ++++++++++++++++---------------- 5 files changed, 500 insertions(+), 496 deletions(-) diff --git a/examples/life/magic.lock b/examples/life/magic.lock index 49b4b05dfd..dd001a3484 100644 --- a/examples/life/magic.lock +++ b/examples/life/magic.lock @@ -170,12 +170,12 @@ 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-25.1.0.dev2025011405-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025011405-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025011405-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011405-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011505-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025011505-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025011505-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011505-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-25.1.0.dev2025011405-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011505-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_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.15-py312h98912ed_1.conda @@ -266,7 +266,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/uvloop-0.21.0-py312h66e93f0_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/watchfiles-1.0.4-py312h12e396e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/websockets-14.1-py312h66e93f0_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.17.1-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.17.2-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libice-1.1.2-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libsm-1.2.5-he73a12e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libx11-1.8.10-h4f16b4b_1.conda @@ -446,12 +446,12 @@ 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-25.1.0.dev2025011405-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025011405-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025011405-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011405-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011505-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025011505-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025011505-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011505-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-25.1.0.dev2025011405-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011505-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_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.15-py312hdd3e373_1.conda @@ -542,7 +542,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/uvloop-0.21.0-py312hb2c0f52_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/watchfiles-1.0.4-py312h8cbf658_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/websockets-14.1-py312hb2c0f52_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/wrapt-1.17.1-py312hb2c0f52_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/wrapt-1.17.2-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libice-1.1.2-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libsm-1.2.5-h0808dbd_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libx11-1.8.10-hca56bd8_1.conda @@ -657,7 +657,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-26_osxarm64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcrc32c-1.1.2-hbdafb3b_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.11.1-h73640d1_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.6-ha82da77_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.23-hec38601_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20240808-pl5321hafb1f1b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libev-4.33-h93a5062_2.conda @@ -705,12 +705,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-25.1.0.dev2025011405-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025011405-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025011405-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011405-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011505-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025011505-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025011505-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011505-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-25.1.0.dev2025011405-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011505-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 @@ -799,7 +799,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/uvloop-0.21.0-py312h0bf5046_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/watchfiles-1.0.4-py312hcd83bfe_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/websockets-14.1-py312hea69d52_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/wrapt-1.17.1-py312hea69d52_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/wrapt-1.17.2-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxau-1.0.12-h5505292_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxdmcp-1.1.5-hd74edd7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xxhash-0.8.2-hb547adb_0.conda @@ -4067,17 +4067,17 @@ packages: license_family: MIT size: 385098 timestamp: 1734000160270 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.6-ha82da77_1.conda - sha256: 2b2443404503cd862385fd2f2a2c73f9624686fd1e5a45050b4034cfc06904ec - md5: ce5252d8db110cdb4ae4173d0a63c7c5 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda + sha256: 776092346da87a2a23502e14d91eb0c32699c4a1522b7331537bd1c3751dcff5 + md5: 5b3e1610ff8bd5443476b91d618f5b77 depends: - __osx >=11.0 arch: arm64 platform: osx license: Apache-2.0 WITH LLVM-exception license_family: Apache - size: 520992 - timestamp: 1734494699681 + size: 523505 + timestamp: 1736877862502 - conda: https://conda.anaconda.org/conda-forge/linux-64/libdb-6.2.32-h9c3ff4c_0.tar.bz2 sha256: 21fac1012ff05b131d4b5d284003dbbe7b5c4c652aa9e401b46279ed5a784372 md5: 3f3258d8f841fbac63b36b75bdac1afd @@ -6174,47 +6174,47 @@ packages: license_family: BSD size: 24048 timestamp: 1733219945697 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011405-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011505-release.conda noarch: python - sha256: eb52c601b49e24ffc270abd164d923de1cd7641ccc0c6d7457f51ae60d11e8db - md5: 11ccc7657b121e4c65ede378c793112f + sha256: fb653b1206a459970561cb99277971b809ef23dfbabb08067cf87ecc5316d144 + md5: 36d10ca6747cea3051f98f6c4340bdde depends: - - max-core ==25.1.0.dev2025011405 release - - max-python >=25.1.0.dev2025011405,<26.0a0 - - mojo-jupyter ==25.1.0.dev2025011405 release - - mblack ==25.1.0.dev2025011405 release + - max-core ==25.1.0.dev2025011505 release + - max-python >=25.1.0.dev2025011505,<26.0a0 + - mojo-jupyter ==25.1.0.dev2025011505 release + - mblack ==25.1.0.dev2025011505 release license: LicenseRef-Modular-Proprietary - size: 9916 - timestamp: 1736831822162 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025011405-release.conda - sha256: 6b70fb0b3ff451c344e75541912480a23f7f66ec4e823fb67215c55210bc238f - md5: 73aeefc77fbbd11c37f794e61bedcbce + size: 9920 + timestamp: 1736918190337 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025011505-release.conda + sha256: 5de02f267a7821eb30275253c0f03317e45befb2291b4c164d217e4a0be08489 + md5: e084403c468c3736de7b93e85ac55ca5 depends: - - mblack ==25.1.0.dev2025011405 release + - mblack ==25.1.0.dev2025011505 release license: LicenseRef-Modular-Proprietary - size: 244270660 - timestamp: 1736831822160 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025011405-release.conda - sha256: b790059d25a546964ec54600d606cf507f046685f8b93768af09306e2789763d - md5: 8284a53ad8867fbebf5ff5872afcc683 + size: 244663428 + timestamp: 1736918190336 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025011505-release.conda + sha256: b90cccb4ff28d8680f0221b696cfe260c3263afc92fcc90bae9e3e0205f6649a + md5: 6b38ab0cddf2d8d6ea3de50fa06daccf depends: - - mblack ==25.1.0.dev2025011405 release + - mblack ==25.1.0.dev2025011505 release license: LicenseRef-Modular-Proprietary - size: 247897740 - timestamp: 1736831760973 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025011405-release.conda - sha256: e3f0a7f45a58997e93c62de0b02d657f5788074ed274c73ba42c8dbe4e4254ee - md5: 948b2059736f978eb8ef29e011c478aa + size: 247150310 + timestamp: 1736918170378 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025011505-release.conda + sha256: 8e443193c3efccf88a1f335f56803cc8252a6087ceb570847fbc7d54373436dd + md5: 380f01b398f4026fa6d362bcd535bcce depends: - - mblack ==25.1.0.dev2025011405 release + - mblack ==25.1.0.dev2025011505 release license: LicenseRef-Modular-Proprietary - size: 206428789 - timestamp: 1736832175871 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025011405-3.12release.conda - sha256: 2ba61ee7777506ce94849a69fb0a10281208327ad12298cb399d7c143740a23a - md5: 4d373580ea92e6372951421273e89dbe + size: 206696883 + timestamp: 1736918528488 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025011505-3.12release.conda + sha256: 8ffaf65c9e533d1c05e63208e5929f7047232682d71e241a8d078bd40784c070 + md5: 979326be6e37f9d08a2af9d3b5f5b173 depends: - - max-core ==25.1.0.dev2025011405 release + - max-core ==25.1.0.dev2025011505 release - python 3.12.* - fastapi - httpx @@ -6235,13 +6235,13 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 124186493 - timestamp: 1736831822171 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025011405-3.12release.conda - sha256: 9f35e2f3c0aa425ab3b15f1aa141e498b2fb22f671823d4758116954a5f47ac0 - md5: 95a8013bcaf7a89866ca36ba40b0477d + size: 124404054 + timestamp: 1736918190345 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025011505-3.12release.conda + sha256: d29135e77b8d7da7fc1e7fe00b6cefb5faded5da911430a1ff9090377cde6a0f + md5: 7ab99f094af5a6e10444022febf6158f depends: - - max-core ==25.1.0.dev2025011405 release + - max-core ==25.1.0.dev2025011505 release - python 3.12.* - fastapi - httpx @@ -6262,13 +6262,13 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 127955783 - timestamp: 1736831760983 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025011405-3.12release.conda - sha256: bae7c656efa518c6ba652cf66b20b07b11054e6b3c7f5c4997a319138152b10b - md5: 38fdc325152b22296dc03d3574837998 + size: 127116659 + timestamp: 1736918170389 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025011505-3.12release.conda + sha256: f21679607c9939017d447c50d2732c8e842dcb29d18907390f5cd85254370ccf + md5: 112c450c08f0af99073a4dc4aae82576 depends: - - max-core ==25.1.0.dev2025011405 release + - max-core ==25.1.0.dev2025011505 release - python 3.12.* - fastapi - httpx @@ -6289,12 +6289,12 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 110548095 - timestamp: 1736832175874 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011405-release.conda + size: 110626067 + timestamp: 1736918528491 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011505-release.conda noarch: python - sha256: f22466f25b437c46a5e05b93ae7213639abdf1ddf8c48e8d2fc0f0a091cfd5a2 - md5: f588562602f7e3a17c1983f53eee1056 + sha256: f1dab48a1791a810711d1c7e484ea1c5340297d09f9493cd99604978a3c43717 + md5: d4a97c4b5ee27717785df58abcef3fb3 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -6304,8 +6304,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130814 - timestamp: 1736831822166 + size: 130819 + timestamp: 1736918190341 - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda sha256: 78c1bbe1723449c52b7a9df1af2ee5f005209f67e40b6e1d3c7619127c43b1c7 md5: 592132998493b3ff25fd7479396e8351 @@ -6315,18 +6315,18 @@ packages: license_family: MIT size: 14465 timestamp: 1733255681319 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011405-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011505-release.conda noarch: python - sha256: a973705b113aa88f9769a5a5e21bb4bff6b86e77c4f66db1aac3be794c1ece88 - md5: 3a6fea9465e1a4ee3501f24fc1bbef98 + sha256: 87baffbf376e8562b6bde06c50c57d907ec9a6f6f338f342bddfad4fa83403e4 + md5: c14f190fae020526fc6559130272f1f8 depends: - - max-core ==25.1.0.dev2025011405 release + - max-core ==25.1.0.dev2025011505 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22933 - timestamp: 1736831822167 + size: 22931 + timestamp: 1736918190342 - conda: https://conda.anaconda.org/conda-forge/linux-64/mpg123-1.32.9-hc50e24c_0.conda sha256: 39c4700fb3fbe403a77d8cc27352fa72ba744db487559d5d44bf8411bb4ea200 md5: c7f302fd11eeb0987a6a5e1f3aed6a21 @@ -6882,6 +6882,7 @@ packages: arch: aarch64 platform: linux license: BSD-3-Clause + license_family: BSD size: 15162992 timestamp: 1736811533875 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.3-py312hcd31e36_1.conda @@ -8930,9 +8931,9 @@ packages: license_family: BSD size: 243131 timestamp: 1731498944076 -- conda: https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.17.1-py312h66e93f0_0.conda - sha256: 8d5114497ca237b4a41f381a474571cfbd874b357a57005e1ef891fbe961e927 - md5: 31e36a1c68a03c501542a6c454963ffe +- conda: https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.17.2-py312h66e93f0_0.conda + sha256: ed3a1700ecc5d38c7e7dc7d2802df1bc1da6ba3d6f6017448b8ded0affb4ae00 + md5: 669e63af87710f8d52fdec9d4d63b404 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -8942,11 +8943,11 @@ packages: platform: linux license: BSD-2-Clause license_family: BSD - size: 63794 - timestamp: 1736757851335 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/wrapt-1.17.1-py312hb2c0f52_0.conda - sha256: 105f16fa8db777bbda7ec195025007e0d591db3080536fbfbcd81eba230cd8e4 - md5: 6f091288846887f19f845688c3d7ca1e + size: 63590 + timestamp: 1736869574299 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/wrapt-1.17.2-py312hb2c0f52_0.conda + sha256: cc28914462a21b2f64d9b763a9733bfcbc811dd2975d0d2e6e429e35f5b6d59c + md5: 8a5c6e3f809bae085be369b62dc5d06a depends: - libgcc >=13 - python >=3.12,<3.13.0a0 @@ -8956,11 +8957,11 @@ packages: platform: linux license: BSD-2-Clause license_family: BSD - size: 64616 - timestamp: 1736757911835 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/wrapt-1.17.1-py312hea69d52_0.conda - sha256: 213a18609ccfdde862a8fcf9d96b9133cc6ca0abf5953ed148b35a9c8eb27a9c - md5: e3a62bb92c2e71e95f0e3be67a5ff351 + size: 63967 + timestamp: 1736869675870 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/wrapt-1.17.2-py312hea69d52_0.conda + sha256: 6a3e68b57de29802e8703d1791dcacb7613bfdc17bbb087c6b2ea2796e6893ef + md5: e49608c832fcf438f70cbcae09c3adc5 depends: - __osx >=11.0 - python >=3.12,<3.13.0a0 @@ -8970,8 +8971,8 @@ packages: platform: osx license: BSD-2-Clause license_family: BSD - size: 61365 - timestamp: 1736758030632 + size: 61198 + timestamp: 1736869673767 - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libice-1.1.2-hb9d3cd8_0.conda sha256: c12396aabb21244c212e488bbdc4abcdef0b7404b15761d9329f5a4a39113c4b md5: fb901ff28063514abb6046c9ec2c4a45 diff --git a/examples/magic.lock b/examples/magic.lock index c8d3938c86..f4e0cda51b 100644 --- a/examples/magic.lock +++ b/examples/magic.lock @@ -131,12 +131,12 @@ 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-25.1.0.dev2025011405-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025011405-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025011405-3.11release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011405-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011505-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025011505-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025011505-3.11release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011505-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-25.1.0.dev2025011405-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011505-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 @@ -213,7 +213,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/uvloop-0.21.0-py311h9ecbd09_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/watchfiles-1.0.4-py311h9e33e62_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/websockets-14.1-py311h9ecbd09_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.17.1-py311h9ecbd09_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.17.2-py311h9ecbd09_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xxhash-0.8.2-hd590300_0.conda @@ -349,12 +349,12 @@ 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-25.1.0.dev2025011405-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025011405-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025011405-3.11release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011405-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011505-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025011505-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025011505-3.11release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011505-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-25.1.0.dev2025011405-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011505-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 @@ -431,7 +431,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/uvloop-0.21.0-py311ha879c10_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/watchfiles-1.0.4-py311h0ca61a2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/websockets-14.1-py311ha879c10_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/wrapt-1.17.1-py311ha879c10_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/wrapt-1.17.2-py311ha879c10_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxau-1.0.12-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxdmcp-1.1.5-h57736b2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xxhash-0.8.2-h31becfc_0.conda @@ -521,7 +521,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-26_osxarm64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcrc32c-1.1.2-hbdafb3b_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.11.1-h73640d1_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.6-ha82da77_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.23-hec38601_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20240808-pl5321hafb1f1b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libev-4.33-h93a5062_2.conda @@ -558,12 +558,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-25.1.0.dev2025011405-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025011405-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025011405-3.11release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011405-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011505-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025011505-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025011505-3.11release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011505-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-25.1.0.dev2025011405-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011505-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 @@ -639,7 +639,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/uvloop-0.21.0-py311hae2e1ce_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/watchfiles-1.0.4-py311h3ff9189_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/websockets-14.1-py311h917b07b_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/wrapt-1.17.1-py311h917b07b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/wrapt-1.17.2-py311h917b07b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxau-1.0.12-h5505292_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxdmcp-1.1.5-hd74edd7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xxhash-0.8.2-hb547adb_0.conda @@ -3125,17 +3125,17 @@ packages: license_family: MIT size: 385098 timestamp: 1734000160270 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.6-ha82da77_1.conda - sha256: 2b2443404503cd862385fd2f2a2c73f9624686fd1e5a45050b4034cfc06904ec - md5: ce5252d8db110cdb4ae4173d0a63c7c5 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda + sha256: 776092346da87a2a23502e14d91eb0c32699c4a1522b7331537bd1c3751dcff5 + md5: 5b3e1610ff8bd5443476b91d618f5b77 depends: - __osx >=11.0 arch: arm64 platform: osx license: Apache-2.0 WITH LLVM-exception license_family: Apache - size: 520992 - timestamp: 1734494699681 + size: 523505 + timestamp: 1736877862502 - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.23-h4ddbbb0_0.conda sha256: 511d801626d02f4247a04fff957cc6e9ec4cc7e8622bd9acd076bcdc5de5fe66 md5: 8dfae1d2e74767e9ce36d5fa0d8605db @@ -4752,47 +4752,47 @@ packages: license_family: BSD size: 24976 timestamp: 1733219849253 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011405-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011505-release.conda noarch: python - sha256: eb52c601b49e24ffc270abd164d923de1cd7641ccc0c6d7457f51ae60d11e8db - md5: 11ccc7657b121e4c65ede378c793112f + sha256: fb653b1206a459970561cb99277971b809ef23dfbabb08067cf87ecc5316d144 + md5: 36d10ca6747cea3051f98f6c4340bdde depends: - - max-core ==25.1.0.dev2025011405 release - - max-python >=25.1.0.dev2025011405,<26.0a0 - - mojo-jupyter ==25.1.0.dev2025011405 release - - mblack ==25.1.0.dev2025011405 release + - max-core ==25.1.0.dev2025011505 release + - max-python >=25.1.0.dev2025011505,<26.0a0 + - mojo-jupyter ==25.1.0.dev2025011505 release + - mblack ==25.1.0.dev2025011505 release license: LicenseRef-Modular-Proprietary - size: 9916 - timestamp: 1736831822162 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025011405-release.conda - sha256: 6b70fb0b3ff451c344e75541912480a23f7f66ec4e823fb67215c55210bc238f - md5: 73aeefc77fbbd11c37f794e61bedcbce + size: 9920 + timestamp: 1736918190337 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025011505-release.conda + sha256: 5de02f267a7821eb30275253c0f03317e45befb2291b4c164d217e4a0be08489 + md5: e084403c468c3736de7b93e85ac55ca5 depends: - - mblack ==25.1.0.dev2025011405 release + - mblack ==25.1.0.dev2025011505 release license: LicenseRef-Modular-Proprietary - size: 244270660 - timestamp: 1736831822160 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025011405-release.conda - sha256: b790059d25a546964ec54600d606cf507f046685f8b93768af09306e2789763d - md5: 8284a53ad8867fbebf5ff5872afcc683 + size: 244663428 + timestamp: 1736918190336 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025011505-release.conda + sha256: b90cccb4ff28d8680f0221b696cfe260c3263afc92fcc90bae9e3e0205f6649a + md5: 6b38ab0cddf2d8d6ea3de50fa06daccf depends: - - mblack ==25.1.0.dev2025011405 release + - mblack ==25.1.0.dev2025011505 release license: LicenseRef-Modular-Proprietary - size: 247897740 - timestamp: 1736831760973 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025011405-release.conda - sha256: e3f0a7f45a58997e93c62de0b02d657f5788074ed274c73ba42c8dbe4e4254ee - md5: 948b2059736f978eb8ef29e011c478aa + size: 247150310 + timestamp: 1736918170378 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025011505-release.conda + sha256: 8e443193c3efccf88a1f335f56803cc8252a6087ceb570847fbc7d54373436dd + md5: 380f01b398f4026fa6d362bcd535bcce depends: - - mblack ==25.1.0.dev2025011405 release + - mblack ==25.1.0.dev2025011505 release license: LicenseRef-Modular-Proprietary - size: 206428789 - timestamp: 1736832175871 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025011405-3.11release.conda - sha256: b8bfb77cd0cfc82806c5c617da959641b4c91d5ab46935bfee55c99583c8de0f - md5: 705f4e4fc003b13c7a23e7478c1be9ca + size: 206696883 + timestamp: 1736918528488 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025011505-3.11release.conda + sha256: c854f3fd876d1804109ff3cd42522ac689bebfe0725f2dc1fa6f770b511da929 + md5: 1b35513e522bd6148f1b11c52b959147 depends: - - max-core ==25.1.0.dev2025011405 release + - max-core ==25.1.0.dev2025011505 release - python 3.11.* - fastapi - httpx @@ -4813,13 +4813,13 @@ packages: - uvicorn - python_abi 3.11.* *_cp311 license: LicenseRef-Modular-Proprietary - size: 124202693 - timestamp: 1736831822168 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025011405-3.11release.conda - sha256: 302c03fb71dfe486302339dc1e499cf4ca5da16a04611650a844393217bf7c44 - md5: b712cc1995d5acc5c827fdcfb0be301d + size: 124416691 + timestamp: 1736918190343 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025011505-3.11release.conda + sha256: 69533b14861d61ccdc7d39c18c8df35d40e3b85f6cf7b8aefc588c9b856665de + md5: 4fbf6154c783c385488ff5d2e589207f depends: - - max-core ==25.1.0.dev2025011405 release + - max-core ==25.1.0.dev2025011505 release - python 3.11.* - fastapi - httpx @@ -4840,13 +4840,13 @@ packages: - uvicorn - python_abi 3.11.* *_cp311 license: LicenseRef-Modular-Proprietary - size: 128005742 - timestamp: 1736831760981 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025011405-3.11release.conda - sha256: 3050a237e8ea52c62c2ece10dfc34fbe556c84e84b550c76bdf6bbe104c103ec - md5: 15e93133522e46eba973591025576482 + size: 127141652 + timestamp: 1736918170387 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025011505-3.11release.conda + sha256: bcde9541c0308926d88b06a289e62ade7e9ce5fd09c7af125a74ce902562c154 + md5: fe268f18e7f099aaa136b235f44970d4 depends: - - max-core ==25.1.0.dev2025011405 release + - max-core ==25.1.0.dev2025011505 release - python 3.11.* - fastapi - httpx @@ -4867,12 +4867,12 @@ packages: - uvicorn - python_abi 3.11.* *_cp311 license: LicenseRef-Modular-Proprietary - size: 110606719 - timestamp: 1736832175873 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011405-release.conda + size: 110638602 + timestamp: 1736918528490 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011505-release.conda noarch: python - sha256: f22466f25b437c46a5e05b93ae7213639abdf1ddf8c48e8d2fc0f0a091cfd5a2 - md5: f588562602f7e3a17c1983f53eee1056 + sha256: f1dab48a1791a810711d1c7e484ea1c5340297d09f9493cd99604978a3c43717 + md5: d4a97c4b5ee27717785df58abcef3fb3 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -4882,8 +4882,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130814 - timestamp: 1736831822166 + size: 130819 + timestamp: 1736918190341 - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda sha256: 78c1bbe1723449c52b7a9df1af2ee5f005209f67e40b6e1d3c7619127c43b1c7 md5: 592132998493b3ff25fd7479396e8351 @@ -4893,18 +4893,18 @@ packages: license_family: MIT size: 14465 timestamp: 1733255681319 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011405-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011505-release.conda noarch: python - sha256: a973705b113aa88f9769a5a5e21bb4bff6b86e77c4f66db1aac3be794c1ece88 - md5: 3a6fea9465e1a4ee3501f24fc1bbef98 + sha256: 87baffbf376e8562b6bde06c50c57d907ec9a6f6f338f342bddfad4fa83403e4 + md5: c14f190fae020526fc6559130272f1f8 depends: - - max-core ==25.1.0.dev2025011405 release + - max-core ==25.1.0.dev2025011505 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22933 - timestamp: 1736831822167 + size: 22931 + timestamp: 1736918190342 - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py311h2dc5d0c_2.conda sha256: afaab7a028281d8b5336db2b994fd3f9694862b6ca372c079dc4e84ad768c20a md5: bb8ca118919836624d920b4c44383a15 @@ -5382,6 +5382,7 @@ packages: arch: aarch64 platform: linux license: BSD-3-Clause + license_family: BSD size: 15432560 timestamp: 1736811218050 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.3-py311h9cb3ce9_1.conda @@ -6908,9 +6909,9 @@ packages: license_family: BSD size: 240817 timestamp: 1731498829166 -- conda: https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.17.1-py311h9ecbd09_0.conda - sha256: 42e23f6efabc2f6c50885b6f5e6e0a87472df9ebb86e86999a7c7c85331e2704 - md5: c03c07d4b22381d61e57cb08735b9b1c +- conda: https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.17.2-py311h9ecbd09_0.conda + sha256: e383de6512e65b5a227e7b0e1a34ffc441484044096a23ca4d3b6eb53a64d261 + md5: c4bb961f5a2020837fe3f7f30fadc2e1 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -6920,11 +6921,11 @@ packages: platform: linux license: BSD-2-Clause license_family: BSD - size: 65109 - timestamp: 1736757891787 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/wrapt-1.17.1-py311ha879c10_0.conda - sha256: a4ac2f68f462519be3fd03adcc7b30361135688fd70f742c35faf702fc0955fb - md5: f4a445d2759099c9cf1b955f99ca2039 + size: 64880 + timestamp: 1736869605707 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/wrapt-1.17.2-py311ha879c10_0.conda + sha256: ef2c09b8c62a195120dcf6d2dc32c349fe957167dca98765babb9a3be6f87d92 + md5: 4d4f5aa0b7ed545efca6597c6ae5259d depends: - libgcc >=13 - python >=3.11,<3.12.0a0 @@ -6934,11 +6935,11 @@ packages: platform: linux license: BSD-2-Clause license_family: BSD - size: 65715 - timestamp: 1736757912446 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/wrapt-1.17.1-py311h917b07b_0.conda - sha256: 1dc5ceaa3838ecfa242626dda0300b28d7a827d80d6b6e624bcb2791f3f004d9 - md5: e3bcd6e81efe9134070cd635569cb48f + size: 65830 + timestamp: 1736869702140 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/wrapt-1.17.2-py311h917b07b_0.conda + sha256: 121396c6f75ffcbf4d2296ad0ad9190a62aff0ae22ed4080a39827a6275cdf1b + md5: 40fa235e40013f4e5400f1d01add07dc depends: - __osx >=11.0 - python >=3.11,<3.12.0a0 @@ -6948,8 +6949,8 @@ packages: platform: osx license: BSD-2-Clause license_family: BSD - size: 62043 - timestamp: 1736757968574 + size: 62401 + timestamp: 1736869710495 - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-hb9d3cd8_0.conda sha256: ed10c9283974d311855ae08a16dfd7e56241fac632aec3b92e3cfe73cff31038 md5: f6ebe2cb3f82ba6c057dde5d9debe4f7 diff --git a/examples/notebooks/magic.lock b/examples/notebooks/magic.lock index 5af81c01f9..bbacdb7fc4 100644 --- a/examples/notebooks/magic.lock +++ b/examples/notebooks/magic.lock @@ -167,13 +167,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/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-25.1.0.dev2025011405-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025011405-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025011405-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011405-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011505-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025011505-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025011505-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011505-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.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011405-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011505-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 @@ -286,7 +286,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.8.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/websockets-14.1-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wheel-0.45.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.17.1-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.17.2-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xxhash-0.8.2-hd590300_0.conda @@ -458,13 +458,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/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-25.1.0.dev2025011405-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025011405-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025011405-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011405-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011505-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025011505-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025011505-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011505-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.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011405-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011505-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 @@ -577,7 +577,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.8.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/websockets-14.1-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wheel-0.45.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/wrapt-1.17.1-py312hb2c0f52_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/wrapt-1.17.2-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxau-1.0.12-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxdmcp-1.1.5-h57736b2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xxhash-0.8.2-h31becfc_0.conda @@ -703,7 +703,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-26_osxarm64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcrc32c-1.1.2-hbdafb3b_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.11.1-h73640d1_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.6-ha82da77_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.23-hec38601_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20240808-pl5321hafb1f1b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libev-4.33-h93a5062_2.conda @@ -741,13 +741,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-25.1.0.dev2025011405-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025011405-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025011405-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011405-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011505-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025011505-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025011505-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011505-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.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011405-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011505-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 @@ -796,8 +796,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.7.1-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyinstrument-5.0.0-py312h0bf5046_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-core-10.3.2-py312hb9d441b_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-framework-cocoa-10.3.2-py312hb9d441b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-core-11.0-py312hb9d441b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-framework-cocoa-11.0-py312hb9d441b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.8-hc22306f_1_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda @@ -861,7 +861,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.8.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/websockets-14.1-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wheel-0.45.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/wrapt-1.17.1-py312hea69d52_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/wrapt-1.17.2-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxau-1.0.12-h5505292_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxdmcp-1.1.5-hd74edd7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xxhash-0.8.2-hb547adb_0.conda @@ -3912,17 +3912,17 @@ packages: license_family: MIT size: 385098 timestamp: 1734000160270 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.6-ha82da77_1.conda - sha256: 2b2443404503cd862385fd2f2a2c73f9624686fd1e5a45050b4034cfc06904ec - md5: ce5252d8db110cdb4ae4173d0a63c7c5 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda + sha256: 776092346da87a2a23502e14d91eb0c32699c4a1522b7331537bd1c3751dcff5 + md5: 5b3e1610ff8bd5443476b91d618f5b77 depends: - __osx >=11.0 arch: arm64 platform: osx license: Apache-2.0 WITH LLVM-exception license_family: Apache - size: 520992 - timestamp: 1734494699681 + size: 523505 + timestamp: 1736877862502 - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.23-h4ddbbb0_0.conda sha256: 511d801626d02f4247a04fff957cc6e9ec4cc7e8622bd9acd076bcdc5de5fe66 md5: 8dfae1d2e74767e9ce36d5fa0d8605db @@ -5549,47 +5549,47 @@ packages: license_family: BSD size: 14467 timestamp: 1733417051523 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011405-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011505-release.conda noarch: python - sha256: eb52c601b49e24ffc270abd164d923de1cd7641ccc0c6d7457f51ae60d11e8db - md5: 11ccc7657b121e4c65ede378c793112f + sha256: fb653b1206a459970561cb99277971b809ef23dfbabb08067cf87ecc5316d144 + md5: 36d10ca6747cea3051f98f6c4340bdde depends: - - max-core ==25.1.0.dev2025011405 release - - max-python >=25.1.0.dev2025011405,<26.0a0 - - mojo-jupyter ==25.1.0.dev2025011405 release - - mblack ==25.1.0.dev2025011405 release + - max-core ==25.1.0.dev2025011505 release + - max-python >=25.1.0.dev2025011505,<26.0a0 + - mojo-jupyter ==25.1.0.dev2025011505 release + - mblack ==25.1.0.dev2025011505 release license: LicenseRef-Modular-Proprietary - size: 9916 - timestamp: 1736831822162 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025011405-release.conda - sha256: 6b70fb0b3ff451c344e75541912480a23f7f66ec4e823fb67215c55210bc238f - md5: 73aeefc77fbbd11c37f794e61bedcbce + size: 9920 + timestamp: 1736918190337 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025011505-release.conda + sha256: 5de02f267a7821eb30275253c0f03317e45befb2291b4c164d217e4a0be08489 + md5: e084403c468c3736de7b93e85ac55ca5 depends: - - mblack ==25.1.0.dev2025011405 release + - mblack ==25.1.0.dev2025011505 release license: LicenseRef-Modular-Proprietary - size: 244270660 - timestamp: 1736831822160 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025011405-release.conda - sha256: b790059d25a546964ec54600d606cf507f046685f8b93768af09306e2789763d - md5: 8284a53ad8867fbebf5ff5872afcc683 + size: 244663428 + timestamp: 1736918190336 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025011505-release.conda + sha256: b90cccb4ff28d8680f0221b696cfe260c3263afc92fcc90bae9e3e0205f6649a + md5: 6b38ab0cddf2d8d6ea3de50fa06daccf depends: - - mblack ==25.1.0.dev2025011405 release + - mblack ==25.1.0.dev2025011505 release license: LicenseRef-Modular-Proprietary - size: 247897740 - timestamp: 1736831760973 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025011405-release.conda - sha256: e3f0a7f45a58997e93c62de0b02d657f5788074ed274c73ba42c8dbe4e4254ee - md5: 948b2059736f978eb8ef29e011c478aa + size: 247150310 + timestamp: 1736918170378 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025011505-release.conda + sha256: 8e443193c3efccf88a1f335f56803cc8252a6087ceb570847fbc7d54373436dd + md5: 380f01b398f4026fa6d362bcd535bcce depends: - - mblack ==25.1.0.dev2025011405 release + - mblack ==25.1.0.dev2025011505 release license: LicenseRef-Modular-Proprietary - size: 206428789 - timestamp: 1736832175871 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025011405-3.12release.conda - sha256: 2ba61ee7777506ce94849a69fb0a10281208327ad12298cb399d7c143740a23a - md5: 4d373580ea92e6372951421273e89dbe + size: 206696883 + timestamp: 1736918528488 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025011505-3.12release.conda + sha256: 8ffaf65c9e533d1c05e63208e5929f7047232682d71e241a8d078bd40784c070 + md5: 979326be6e37f9d08a2af9d3b5f5b173 depends: - - max-core ==25.1.0.dev2025011405 release + - max-core ==25.1.0.dev2025011505 release - python 3.12.* - fastapi - httpx @@ -5610,13 +5610,13 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 124186493 - timestamp: 1736831822171 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025011405-3.12release.conda - sha256: 9f35e2f3c0aa425ab3b15f1aa141e498b2fb22f671823d4758116954a5f47ac0 - md5: 95a8013bcaf7a89866ca36ba40b0477d + size: 124404054 + timestamp: 1736918190345 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025011505-3.12release.conda + sha256: d29135e77b8d7da7fc1e7fe00b6cefb5faded5da911430a1ff9090377cde6a0f + md5: 7ab99f094af5a6e10444022febf6158f depends: - - max-core ==25.1.0.dev2025011405 release + - max-core ==25.1.0.dev2025011505 release - python 3.12.* - fastapi - httpx @@ -5637,13 +5637,13 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 127955783 - timestamp: 1736831760983 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025011405-3.12release.conda - sha256: bae7c656efa518c6ba652cf66b20b07b11054e6b3c7f5c4997a319138152b10b - md5: 38fdc325152b22296dc03d3574837998 + size: 127116659 + timestamp: 1736918170389 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025011505-3.12release.conda + sha256: f21679607c9939017d447c50d2732c8e842dcb29d18907390f5cd85254370ccf + md5: 112c450c08f0af99073a4dc4aae82576 depends: - - max-core ==25.1.0.dev2025011405 release + - max-core ==25.1.0.dev2025011505 release - python 3.12.* - fastapi - httpx @@ -5664,12 +5664,12 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 110548095 - timestamp: 1736832175874 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011405-release.conda + size: 110626067 + timestamp: 1736918528491 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011505-release.conda noarch: python - sha256: f22466f25b437c46a5e05b93ae7213639abdf1ddf8c48e8d2fc0f0a091cfd5a2 - md5: f588562602f7e3a17c1983f53eee1056 + sha256: f1dab48a1791a810711d1c7e484ea1c5340297d09f9493cd99604978a3c43717 + md5: d4a97c4b5ee27717785df58abcef3fb3 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -5679,8 +5679,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130814 - timestamp: 1736831822166 + size: 130819 + timestamp: 1736918190341 - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda sha256: 78c1bbe1723449c52b7a9df1af2ee5f005209f67e40b6e1d3c7619127c43b1c7 md5: 592132998493b3ff25fd7479396e8351 @@ -5700,18 +5700,18 @@ packages: license_family: BSD size: 68803 timestamp: 1735686983426 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011405-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011505-release.conda noarch: python - sha256: a973705b113aa88f9769a5a5e21bb4bff6b86e77c4f66db1aac3be794c1ece88 - md5: 3a6fea9465e1a4ee3501f24fc1bbef98 + sha256: 87baffbf376e8562b6bde06c50c57d907ec9a6f6f338f342bddfad4fa83403e4 + md5: c14f190fae020526fc6559130272f1f8 depends: - - max-core ==25.1.0.dev2025011405 release + - max-core ==25.1.0.dev2025011505 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22933 - timestamp: 1736831822167 + size: 22931 + timestamp: 1736918190342 - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py312h178313f_2.conda sha256: b05bc8252a6e957bf4a776ed5e0e61d1ba88cdc46ccb55890c72cc58b10371f4 md5: 5b5e3267d915a107eca793d52e1b780a @@ -6857,9 +6857,9 @@ packages: license_family: BSD size: 181512 timestamp: 1728714205508 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-core-10.3.2-py312hb9d441b_0.conda - sha256: 6c110c64e7cc0a28416414446698ab310a9261525a6aa630b2c4f50891867719 - md5: 663e894deb5a24c8931fd8224f19a1fd +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-core-11.0-py312hb9d441b_0.conda + sha256: 7805d910dd6ac686e2f780c879a986f35d7a4c73f4236c956c03bdcb26bec421 + md5: 0726db04477a28c51d1a260afb356b67 depends: - __osx >=11.0 - libffi >=3.4,<4.0a0 @@ -6871,15 +6871,15 @@ packages: platform: osx license: MIT license_family: MIT - size: 484571 - timestamp: 1732987487536 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-framework-cocoa-10.3.2-py312hb9d441b_0.conda - sha256: 5a78f97cb7414cb4b78b777dcfcffb08da42ced866e8ef6455a57c2230908bfe - md5: 41e4f28d545565e48f1f819cf8dac5c7 + size: 478921 + timestamp: 1736891272846 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-framework-cocoa-11.0-py312hb9d441b_0.conda + sha256: 53d099865f8f758029708f4365ee7c9184d9ffcc8fc8210971b723a3936f9c00 + md5: dc263e6e18b32318a43252dbb0596ad4 depends: - __osx >=11.0 - libffi >=3.4,<4.0a0 - - pyobjc-core 10.3.2.* + - pyobjc-core 11.0.* - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 @@ -6887,8 +6887,8 @@ packages: platform: osx license: MIT license_family: MIT - size: 380414 - timestamp: 1733168930888 + size: 383608 + timestamp: 1736927118445 - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda sha256: ba3b032fa52709ce0d9fd388f63d330a026754587a2f461117cac9ab73d8d0d8 md5: 461219d1a5bd61342293efa2c0c90eac @@ -8178,9 +8178,9 @@ packages: license_family: MIT size: 62931 timestamp: 1733130309598 -- conda: https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.17.1-py312h66e93f0_0.conda - sha256: 8d5114497ca237b4a41f381a474571cfbd874b357a57005e1ef891fbe961e927 - md5: 31e36a1c68a03c501542a6c454963ffe +- conda: https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.17.2-py312h66e93f0_0.conda + sha256: ed3a1700ecc5d38c7e7dc7d2802df1bc1da6ba3d6f6017448b8ded0affb4ae00 + md5: 669e63af87710f8d52fdec9d4d63b404 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -8190,11 +8190,11 @@ packages: platform: linux license: BSD-2-Clause license_family: BSD - size: 63794 - timestamp: 1736757851335 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/wrapt-1.17.1-py312hb2c0f52_0.conda - sha256: 105f16fa8db777bbda7ec195025007e0d591db3080536fbfbcd81eba230cd8e4 - md5: 6f091288846887f19f845688c3d7ca1e + size: 63590 + timestamp: 1736869574299 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/wrapt-1.17.2-py312hb2c0f52_0.conda + sha256: cc28914462a21b2f64d9b763a9733bfcbc811dd2975d0d2e6e429e35f5b6d59c + md5: 8a5c6e3f809bae085be369b62dc5d06a depends: - libgcc >=13 - python >=3.12,<3.13.0a0 @@ -8204,11 +8204,11 @@ packages: platform: linux license: BSD-2-Clause license_family: BSD - size: 64616 - timestamp: 1736757911835 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/wrapt-1.17.1-py312hea69d52_0.conda - sha256: 213a18609ccfdde862a8fcf9d96b9133cc6ca0abf5953ed148b35a9c8eb27a9c - md5: e3a62bb92c2e71e95f0e3be67a5ff351 + size: 63967 + timestamp: 1736869675870 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/wrapt-1.17.2-py312hea69d52_0.conda + sha256: 6a3e68b57de29802e8703d1791dcacb7613bfdc17bbb087c6b2ea2796e6893ef + md5: e49608c832fcf438f70cbcae09c3adc5 depends: - __osx >=11.0 - python >=3.12,<3.13.0a0 @@ -8218,8 +8218,8 @@ packages: platform: osx license: BSD-2-Clause license_family: BSD - size: 61365 - timestamp: 1736758030632 + size: 61198 + timestamp: 1736869673767 - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-hb9d3cd8_0.conda sha256: ed10c9283974d311855ae08a16dfd7e56241fac632aec3b92e3cfe73cff31038 md5: f6ebe2cb3f82ba6c057dde5d9debe4f7 diff --git a/examples/operators/magic.lock b/examples/operators/magic.lock index 0072b9f004..befd8a737f 100644 --- a/examples/operators/magic.lock +++ b/examples/operators/magic.lock @@ -131,12 +131,12 @@ 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-25.1.0.dev2025011405-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025011405-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025011405-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011405-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011505-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025011505-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025011505-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011505-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-25.1.0.dev2025011405-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011505-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 @@ -213,7 +213,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/uvloop-0.21.0-py312h66e93f0_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/watchfiles-1.0.4-py312h12e396e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/websockets-14.1-py312h66e93f0_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.17.1-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.17.2-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xxhash-0.8.2-hd590300_0.conda @@ -349,12 +349,12 @@ 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-25.1.0.dev2025011405-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025011405-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025011405-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011405-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011505-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025011505-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025011505-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011505-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-25.1.0.dev2025011405-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011505-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 @@ -431,7 +431,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/uvloop-0.21.0-py312hb2c0f52_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/watchfiles-1.0.4-py312h8cbf658_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/websockets-14.1-py312hb2c0f52_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/wrapt-1.17.1-py312hb2c0f52_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/wrapt-1.17.2-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxau-1.0.12-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxdmcp-1.1.5-h57736b2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xxhash-0.8.2-h31becfc_0.conda @@ -521,7 +521,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-26_osxarm64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcrc32c-1.1.2-hbdafb3b_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.11.1-h73640d1_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.6-ha82da77_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.23-hec38601_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20240808-pl5321hafb1f1b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libev-4.33-h93a5062_2.conda @@ -558,12 +558,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-25.1.0.dev2025011405-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025011405-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025011405-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011405-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011505-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025011505-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025011505-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011505-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-25.1.0.dev2025011405-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011505-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 @@ -639,7 +639,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/uvloop-0.21.0-py312h0bf5046_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/watchfiles-1.0.4-py312hcd83bfe_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/websockets-14.1-py312hea69d52_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/wrapt-1.17.1-py312hea69d52_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/wrapt-1.17.2-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxau-1.0.12-h5505292_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxdmcp-1.1.5-hd74edd7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xxhash-0.8.2-hb547adb_0.conda @@ -3125,17 +3125,17 @@ packages: license_family: MIT size: 385098 timestamp: 1734000160270 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.6-ha82da77_1.conda - sha256: 2b2443404503cd862385fd2f2a2c73f9624686fd1e5a45050b4034cfc06904ec - md5: ce5252d8db110cdb4ae4173d0a63c7c5 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda + sha256: 776092346da87a2a23502e14d91eb0c32699c4a1522b7331537bd1c3751dcff5 + md5: 5b3e1610ff8bd5443476b91d618f5b77 depends: - __osx >=11.0 arch: arm64 platform: osx license: Apache-2.0 WITH LLVM-exception license_family: Apache - size: 520992 - timestamp: 1734494699681 + size: 523505 + timestamp: 1736877862502 - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.23-h4ddbbb0_0.conda sha256: 511d801626d02f4247a04fff957cc6e9ec4cc7e8622bd9acd076bcdc5de5fe66 md5: 8dfae1d2e74767e9ce36d5fa0d8605db @@ -4752,47 +4752,47 @@ packages: license_family: BSD size: 24048 timestamp: 1733219945697 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011405-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011505-release.conda noarch: python - sha256: eb52c601b49e24ffc270abd164d923de1cd7641ccc0c6d7457f51ae60d11e8db - md5: 11ccc7657b121e4c65ede378c793112f + sha256: fb653b1206a459970561cb99277971b809ef23dfbabb08067cf87ecc5316d144 + md5: 36d10ca6747cea3051f98f6c4340bdde depends: - - max-core ==25.1.0.dev2025011405 release - - max-python >=25.1.0.dev2025011405,<26.0a0 - - mojo-jupyter ==25.1.0.dev2025011405 release - - mblack ==25.1.0.dev2025011405 release + - max-core ==25.1.0.dev2025011505 release + - max-python >=25.1.0.dev2025011505,<26.0a0 + - mojo-jupyter ==25.1.0.dev2025011505 release + - mblack ==25.1.0.dev2025011505 release license: LicenseRef-Modular-Proprietary - size: 9916 - timestamp: 1736831822162 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025011405-release.conda - sha256: 6b70fb0b3ff451c344e75541912480a23f7f66ec4e823fb67215c55210bc238f - md5: 73aeefc77fbbd11c37f794e61bedcbce + size: 9920 + timestamp: 1736918190337 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025011505-release.conda + sha256: 5de02f267a7821eb30275253c0f03317e45befb2291b4c164d217e4a0be08489 + md5: e084403c468c3736de7b93e85ac55ca5 depends: - - mblack ==25.1.0.dev2025011405 release + - mblack ==25.1.0.dev2025011505 release license: LicenseRef-Modular-Proprietary - size: 244270660 - timestamp: 1736831822160 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025011405-release.conda - sha256: b790059d25a546964ec54600d606cf507f046685f8b93768af09306e2789763d - md5: 8284a53ad8867fbebf5ff5872afcc683 + size: 244663428 + timestamp: 1736918190336 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025011505-release.conda + sha256: b90cccb4ff28d8680f0221b696cfe260c3263afc92fcc90bae9e3e0205f6649a + md5: 6b38ab0cddf2d8d6ea3de50fa06daccf depends: - - mblack ==25.1.0.dev2025011405 release + - mblack ==25.1.0.dev2025011505 release license: LicenseRef-Modular-Proprietary - size: 247897740 - timestamp: 1736831760973 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025011405-release.conda - sha256: e3f0a7f45a58997e93c62de0b02d657f5788074ed274c73ba42c8dbe4e4254ee - md5: 948b2059736f978eb8ef29e011c478aa + size: 247150310 + timestamp: 1736918170378 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025011505-release.conda + sha256: 8e443193c3efccf88a1f335f56803cc8252a6087ceb570847fbc7d54373436dd + md5: 380f01b398f4026fa6d362bcd535bcce depends: - - mblack ==25.1.0.dev2025011405 release + - mblack ==25.1.0.dev2025011505 release license: LicenseRef-Modular-Proprietary - size: 206428789 - timestamp: 1736832175871 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025011405-3.12release.conda - sha256: 2ba61ee7777506ce94849a69fb0a10281208327ad12298cb399d7c143740a23a - md5: 4d373580ea92e6372951421273e89dbe + size: 206696883 + timestamp: 1736918528488 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025011505-3.12release.conda + sha256: 8ffaf65c9e533d1c05e63208e5929f7047232682d71e241a8d078bd40784c070 + md5: 979326be6e37f9d08a2af9d3b5f5b173 depends: - - max-core ==25.1.0.dev2025011405 release + - max-core ==25.1.0.dev2025011505 release - python 3.12.* - fastapi - httpx @@ -4813,13 +4813,13 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 124186493 - timestamp: 1736831822171 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025011405-3.12release.conda - sha256: 9f35e2f3c0aa425ab3b15f1aa141e498b2fb22f671823d4758116954a5f47ac0 - md5: 95a8013bcaf7a89866ca36ba40b0477d + size: 124404054 + timestamp: 1736918190345 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025011505-3.12release.conda + sha256: d29135e77b8d7da7fc1e7fe00b6cefb5faded5da911430a1ff9090377cde6a0f + md5: 7ab99f094af5a6e10444022febf6158f depends: - - max-core ==25.1.0.dev2025011405 release + - max-core ==25.1.0.dev2025011505 release - python 3.12.* - fastapi - httpx @@ -4840,13 +4840,13 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 127955783 - timestamp: 1736831760983 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025011405-3.12release.conda - sha256: bae7c656efa518c6ba652cf66b20b07b11054e6b3c7f5c4997a319138152b10b - md5: 38fdc325152b22296dc03d3574837998 + size: 127116659 + timestamp: 1736918170389 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025011505-3.12release.conda + sha256: f21679607c9939017d447c50d2732c8e842dcb29d18907390f5cd85254370ccf + md5: 112c450c08f0af99073a4dc4aae82576 depends: - - max-core ==25.1.0.dev2025011405 release + - max-core ==25.1.0.dev2025011505 release - python 3.12.* - fastapi - httpx @@ -4867,12 +4867,12 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 110548095 - timestamp: 1736832175874 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011405-release.conda + size: 110626067 + timestamp: 1736918528491 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011505-release.conda noarch: python - sha256: f22466f25b437c46a5e05b93ae7213639abdf1ddf8c48e8d2fc0f0a091cfd5a2 - md5: f588562602f7e3a17c1983f53eee1056 + sha256: f1dab48a1791a810711d1c7e484ea1c5340297d09f9493cd99604978a3c43717 + md5: d4a97c4b5ee27717785df58abcef3fb3 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -4882,8 +4882,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130814 - timestamp: 1736831822166 + size: 130819 + timestamp: 1736918190341 - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda sha256: 78c1bbe1723449c52b7a9df1af2ee5f005209f67e40b6e1d3c7619127c43b1c7 md5: 592132998493b3ff25fd7479396e8351 @@ -4893,18 +4893,18 @@ packages: license_family: MIT size: 14465 timestamp: 1733255681319 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011405-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011505-release.conda noarch: python - sha256: a973705b113aa88f9769a5a5e21bb4bff6b86e77c4f66db1aac3be794c1ece88 - md5: 3a6fea9465e1a4ee3501f24fc1bbef98 + sha256: 87baffbf376e8562b6bde06c50c57d907ec9a6f6f338f342bddfad4fa83403e4 + md5: c14f190fae020526fc6559130272f1f8 depends: - - max-core ==25.1.0.dev2025011405 release + - max-core ==25.1.0.dev2025011505 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22933 - timestamp: 1736831822167 + size: 22931 + timestamp: 1736918190342 - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py312h178313f_2.conda sha256: b05bc8252a6e957bf4a776ed5e0e61d1ba88cdc46ccb55890c72cc58b10371f4 md5: 5b5e3267d915a107eca793d52e1b780a @@ -5382,6 +5382,7 @@ packages: arch: aarch64 platform: linux license: BSD-3-Clause + license_family: BSD size: 15162992 timestamp: 1736811533875 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.3-py312hcd31e36_1.conda @@ -6908,9 +6909,9 @@ packages: license_family: BSD size: 243131 timestamp: 1731498944076 -- conda: https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.17.1-py312h66e93f0_0.conda - sha256: 8d5114497ca237b4a41f381a474571cfbd874b357a57005e1ef891fbe961e927 - md5: 31e36a1c68a03c501542a6c454963ffe +- conda: https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.17.2-py312h66e93f0_0.conda + sha256: ed3a1700ecc5d38c7e7dc7d2802df1bc1da6ba3d6f6017448b8ded0affb4ae00 + md5: 669e63af87710f8d52fdec9d4d63b404 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -6920,11 +6921,11 @@ packages: platform: linux license: BSD-2-Clause license_family: BSD - size: 63794 - timestamp: 1736757851335 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/wrapt-1.17.1-py312hb2c0f52_0.conda - sha256: 105f16fa8db777bbda7ec195025007e0d591db3080536fbfbcd81eba230cd8e4 - md5: 6f091288846887f19f845688c3d7ca1e + size: 63590 + timestamp: 1736869574299 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/wrapt-1.17.2-py312hb2c0f52_0.conda + sha256: cc28914462a21b2f64d9b763a9733bfcbc811dd2975d0d2e6e429e35f5b6d59c + md5: 8a5c6e3f809bae085be369b62dc5d06a depends: - libgcc >=13 - python >=3.12,<3.13.0a0 @@ -6934,11 +6935,11 @@ packages: platform: linux license: BSD-2-Clause license_family: BSD - size: 64616 - timestamp: 1736757911835 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/wrapt-1.17.1-py312hea69d52_0.conda - sha256: 213a18609ccfdde862a8fcf9d96b9133cc6ca0abf5953ed148b35a9c8eb27a9c - md5: e3a62bb92c2e71e95f0e3be67a5ff351 + size: 63967 + timestamp: 1736869675870 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/wrapt-1.17.2-py312hea69d52_0.conda + sha256: 6a3e68b57de29802e8703d1791dcacb7613bfdc17bbb087c6b2ea2796e6893ef + md5: e49608c832fcf438f70cbcae09c3adc5 depends: - __osx >=11.0 - python >=3.12,<3.13.0a0 @@ -6948,8 +6949,8 @@ packages: platform: osx license: BSD-2-Clause license_family: BSD - size: 61365 - timestamp: 1736758030632 + size: 61198 + timestamp: 1736869673767 - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-hb9d3cd8_0.conda sha256: ed10c9283974d311855ae08a16dfd7e56241fac632aec3b92e3cfe73cff31038 md5: f6ebe2cb3f82ba6c057dde5d9debe4f7 diff --git a/magic.lock b/magic.lock index a4f636e4b6..ea064f325e 100644 --- a/magic.lock +++ b/magic.lock @@ -128,16 +128,16 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.5-h0d44e9d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/lit-19.1.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/lit-19.1.7-pyhd8ed1ab_0.conda - 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-25.1.0.dev2025011405-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025011405-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025011405-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011405-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011505-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025011505-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025011505-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011505-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-25.1.0.dev2025011405-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011505-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 @@ -214,7 +214,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/uvloop-0.21.0-py312h66e93f0_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/watchfiles-1.0.4-py312h12e396e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/websockets-14.1-py312h66e93f0_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.17.1-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.17.2-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xxhash-0.8.2-hd590300_0.conda @@ -347,16 +347,16 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.5-h2e0c361_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/lit-19.1.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/lit-19.1.7-pyhd8ed1ab_0.conda - 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-25.1.0.dev2025011405-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025011405-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025011405-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011405-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011505-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025011505-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025011505-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011505-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-25.1.0.dev2025011405-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011505-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 @@ -433,7 +433,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/uvloop-0.21.0-py312hb2c0f52_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/watchfiles-1.0.4-py312h8cbf658_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/websockets-14.1-py312hb2c0f52_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/wrapt-1.17.1-py312hb2c0f52_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/wrapt-1.17.2-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxau-1.0.12-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxdmcp-1.1.5-h57736b2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xxhash-0.8.2-h31becfc_0.conda @@ -523,7 +523,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-26_osxarm64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcrc32c-1.1.2-hbdafb3b_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.11.1-h73640d1_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.6-ha82da77_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.23-hec38601_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20240808-pl5321hafb1f1b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libev-4.33-h93a5062_2.conda @@ -556,17 +556,17 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxcb-1.17.0-hdb1d25a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.5-h178c5d8_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/lit-19.1.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/lit-19.1.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.6-hdb05f8b_0.conda - 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-25.1.0.dev2025011405-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025011405-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025011405-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011405-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011505-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025011505-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025011505-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011505-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-25.1.0.dev2025011405-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011505-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 @@ -642,7 +642,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/uvloop-0.21.0-py312h0bf5046_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/watchfiles-1.0.4-py312hcd83bfe_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/websockets-14.1-py312hea69d52_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/wrapt-1.17.1-py312hea69d52_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/wrapt-1.17.2-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxau-1.0.12-h5505292_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxdmcp-1.1.5-hd74edd7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xxhash-0.8.2-hb547adb_0.conda @@ -3128,17 +3128,17 @@ packages: license_family: MIT size: 385098 timestamp: 1734000160270 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.6-ha82da77_1.conda - sha256: 2b2443404503cd862385fd2f2a2c73f9624686fd1e5a45050b4034cfc06904ec - md5: ce5252d8db110cdb4ae4173d0a63c7c5 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda + sha256: 776092346da87a2a23502e14d91eb0c32699c4a1522b7331537bd1c3751dcff5 + md5: 5b3e1610ff8bd5443476b91d618f5b77 depends: - __osx >=11.0 arch: arm64 platform: osx license: Apache-2.0 WITH LLVM-exception license_family: Apache - size: 520992 - timestamp: 1734494699681 + size: 523505 + timestamp: 1736877862502 - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.23-h4ddbbb0_0.conda sha256: 511d801626d02f4247a04fff957cc6e9ec4cc7e8622bd9acd076bcdc5de5fe66 md5: 8dfae1d2e74767e9ce36d5fa0d8605db @@ -4648,15 +4648,15 @@ packages: license_family: Other size: 46438 timestamp: 1727963202283 -- conda: https://conda.anaconda.org/conda-forge/noarch/lit-19.1.6-pyhd8ed1ab_0.conda - sha256: db850690a15523a42f6e526d069a4a065d516793360d0b20e67258316bcf14f1 - md5: 367b485a667684bd797fddb1abf66969 +- conda: https://conda.anaconda.org/conda-forge/noarch/lit-19.1.7-pyhd8ed1ab_0.conda + sha256: 3527dcdd45af61cc00fb7efe4c454a956d421dde4b459de3beb0993352a4e0cb + md5: 665a0aafb15ba7a5771cca614146c718 depends: - python >=3 license: Apache-2.0 WITH LLVM-exception license_family: Apache - size: 128368 - timestamp: 1734486415918 + size: 128580 + timestamp: 1736894117712 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.6-hdb05f8b_0.conda sha256: a0f3e9139ab16f0a67b9d2bbabc15b78977168f4a5b5503fed4962dcb9a96102 md5: 34fdeffa0555a1a56f38839415cc066c @@ -4764,47 +4764,47 @@ packages: license_family: BSD size: 24048 timestamp: 1733219945697 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011405-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011505-release.conda noarch: python - sha256: eb52c601b49e24ffc270abd164d923de1cd7641ccc0c6d7457f51ae60d11e8db - md5: 11ccc7657b121e4c65ede378c793112f + sha256: fb653b1206a459970561cb99277971b809ef23dfbabb08067cf87ecc5316d144 + md5: 36d10ca6747cea3051f98f6c4340bdde depends: - - max-core ==25.1.0.dev2025011405 release - - max-python >=25.1.0.dev2025011405,<26.0a0 - - mojo-jupyter ==25.1.0.dev2025011405 release - - mblack ==25.1.0.dev2025011405 release + - max-core ==25.1.0.dev2025011505 release + - max-python >=25.1.0.dev2025011505,<26.0a0 + - mojo-jupyter ==25.1.0.dev2025011505 release + - mblack ==25.1.0.dev2025011505 release license: LicenseRef-Modular-Proprietary - size: 9916 - timestamp: 1736831822162 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025011405-release.conda - sha256: 6b70fb0b3ff451c344e75541912480a23f7f66ec4e823fb67215c55210bc238f - md5: 73aeefc77fbbd11c37f794e61bedcbce + size: 9920 + timestamp: 1736918190337 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025011505-release.conda + sha256: 5de02f267a7821eb30275253c0f03317e45befb2291b4c164d217e4a0be08489 + md5: e084403c468c3736de7b93e85ac55ca5 depends: - - mblack ==25.1.0.dev2025011405 release + - mblack ==25.1.0.dev2025011505 release license: LicenseRef-Modular-Proprietary - size: 244270660 - timestamp: 1736831822160 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025011405-release.conda - sha256: b790059d25a546964ec54600d606cf507f046685f8b93768af09306e2789763d - md5: 8284a53ad8867fbebf5ff5872afcc683 + size: 244663428 + timestamp: 1736918190336 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025011505-release.conda + sha256: b90cccb4ff28d8680f0221b696cfe260c3263afc92fcc90bae9e3e0205f6649a + md5: 6b38ab0cddf2d8d6ea3de50fa06daccf depends: - - mblack ==25.1.0.dev2025011405 release + - mblack ==25.1.0.dev2025011505 release license: LicenseRef-Modular-Proprietary - size: 247897740 - timestamp: 1736831760973 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025011405-release.conda - sha256: e3f0a7f45a58997e93c62de0b02d657f5788074ed274c73ba42c8dbe4e4254ee - md5: 948b2059736f978eb8ef29e011c478aa + size: 247150310 + timestamp: 1736918170378 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025011505-release.conda + sha256: 8e443193c3efccf88a1f335f56803cc8252a6087ceb570847fbc7d54373436dd + md5: 380f01b398f4026fa6d362bcd535bcce depends: - - mblack ==25.1.0.dev2025011405 release + - mblack ==25.1.0.dev2025011505 release license: LicenseRef-Modular-Proprietary - size: 206428789 - timestamp: 1736832175871 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025011405-3.12release.conda - sha256: 2ba61ee7777506ce94849a69fb0a10281208327ad12298cb399d7c143740a23a - md5: 4d373580ea92e6372951421273e89dbe + size: 206696883 + timestamp: 1736918528488 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025011505-3.12release.conda + sha256: 8ffaf65c9e533d1c05e63208e5929f7047232682d71e241a8d078bd40784c070 + md5: 979326be6e37f9d08a2af9d3b5f5b173 depends: - - max-core ==25.1.0.dev2025011405 release + - max-core ==25.1.0.dev2025011505 release - python 3.12.* - fastapi - httpx @@ -4825,13 +4825,13 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 124186493 - timestamp: 1736831822171 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025011405-3.12release.conda - sha256: 9f35e2f3c0aa425ab3b15f1aa141e498b2fb22f671823d4758116954a5f47ac0 - md5: 95a8013bcaf7a89866ca36ba40b0477d + size: 124404054 + timestamp: 1736918190345 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025011505-3.12release.conda + sha256: d29135e77b8d7da7fc1e7fe00b6cefb5faded5da911430a1ff9090377cde6a0f + md5: 7ab99f094af5a6e10444022febf6158f depends: - - max-core ==25.1.0.dev2025011405 release + - max-core ==25.1.0.dev2025011505 release - python 3.12.* - fastapi - httpx @@ -4852,13 +4852,13 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 127955783 - timestamp: 1736831760983 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025011405-3.12release.conda - sha256: bae7c656efa518c6ba652cf66b20b07b11054e6b3c7f5c4997a319138152b10b - md5: 38fdc325152b22296dc03d3574837998 + size: 127116659 + timestamp: 1736918170389 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025011505-3.12release.conda + sha256: f21679607c9939017d447c50d2732c8e842dcb29d18907390f5cd85254370ccf + md5: 112c450c08f0af99073a4dc4aae82576 depends: - - max-core ==25.1.0.dev2025011405 release + - max-core ==25.1.0.dev2025011505 release - python 3.12.* - fastapi - httpx @@ -4879,12 +4879,12 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 110548095 - timestamp: 1736832175874 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011405-release.conda + size: 110626067 + timestamp: 1736918528491 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011505-release.conda noarch: python - sha256: f22466f25b437c46a5e05b93ae7213639abdf1ddf8c48e8d2fc0f0a091cfd5a2 - md5: f588562602f7e3a17c1983f53eee1056 + sha256: f1dab48a1791a810711d1c7e484ea1c5340297d09f9493cd99604978a3c43717 + md5: d4a97c4b5ee27717785df58abcef3fb3 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -4894,8 +4894,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130814 - timestamp: 1736831822166 + size: 130819 + timestamp: 1736918190341 - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda sha256: 78c1bbe1723449c52b7a9df1af2ee5f005209f67e40b6e1d3c7619127c43b1c7 md5: 592132998493b3ff25fd7479396e8351 @@ -4905,18 +4905,18 @@ packages: license_family: MIT size: 14465 timestamp: 1733255681319 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011405-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011505-release.conda noarch: python - sha256: a973705b113aa88f9769a5a5e21bb4bff6b86e77c4f66db1aac3be794c1ece88 - md5: 3a6fea9465e1a4ee3501f24fc1bbef98 + sha256: 87baffbf376e8562b6bde06c50c57d907ec9a6f6f338f342bddfad4fa83403e4 + md5: c14f190fae020526fc6559130272f1f8 depends: - - max-core ==25.1.0.dev2025011405 release + - max-core ==25.1.0.dev2025011505 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22933 - timestamp: 1736831822167 + size: 22931 + timestamp: 1736918190342 - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py312h178313f_2.conda sha256: b05bc8252a6e957bf4a776ed5e0e61d1ba88cdc46ccb55890c72cc58b10371f4 md5: 5b5e3267d915a107eca793d52e1b780a @@ -5394,6 +5394,7 @@ packages: arch: aarch64 platform: linux license: BSD-3-Clause + license_family: BSD size: 15162992 timestamp: 1736811533875 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.3-py312hcd31e36_1.conda @@ -6920,9 +6921,9 @@ packages: license_family: BSD size: 243131 timestamp: 1731498944076 -- conda: https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.17.1-py312h66e93f0_0.conda - sha256: 8d5114497ca237b4a41f381a474571cfbd874b357a57005e1ef891fbe961e927 - md5: 31e36a1c68a03c501542a6c454963ffe +- conda: https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.17.2-py312h66e93f0_0.conda + sha256: ed3a1700ecc5d38c7e7dc7d2802df1bc1da6ba3d6f6017448b8ded0affb4ae00 + md5: 669e63af87710f8d52fdec9d4d63b404 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -6932,11 +6933,11 @@ packages: platform: linux license: BSD-2-Clause license_family: BSD - size: 63794 - timestamp: 1736757851335 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/wrapt-1.17.1-py312hb2c0f52_0.conda - sha256: 105f16fa8db777bbda7ec195025007e0d591db3080536fbfbcd81eba230cd8e4 - md5: 6f091288846887f19f845688c3d7ca1e + size: 63590 + timestamp: 1736869574299 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/wrapt-1.17.2-py312hb2c0f52_0.conda + sha256: cc28914462a21b2f64d9b763a9733bfcbc811dd2975d0d2e6e429e35f5b6d59c + md5: 8a5c6e3f809bae085be369b62dc5d06a depends: - libgcc >=13 - python >=3.12,<3.13.0a0 @@ -6946,11 +6947,11 @@ packages: platform: linux license: BSD-2-Clause license_family: BSD - size: 64616 - timestamp: 1736757911835 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/wrapt-1.17.1-py312hea69d52_0.conda - sha256: 213a18609ccfdde862a8fcf9d96b9133cc6ca0abf5953ed148b35a9c8eb27a9c - md5: e3a62bb92c2e71e95f0e3be67a5ff351 + size: 63967 + timestamp: 1736869675870 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/wrapt-1.17.2-py312hea69d52_0.conda + sha256: 6a3e68b57de29802e8703d1791dcacb7613bfdc17bbb087c6b2ea2796e6893ef + md5: e49608c832fcf438f70cbcae09c3adc5 depends: - __osx >=11.0 - python >=3.12,<3.13.0a0 @@ -6960,8 +6961,8 @@ packages: platform: osx license: BSD-2-Clause license_family: BSD - size: 61365 - timestamp: 1736758030632 + size: 61198 + timestamp: 1736869673767 - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-hb9d3cd8_0.conda sha256: ed10c9283974d311855ae08a16dfd7e56241fac632aec3b92e3cfe73cff31038 md5: f6ebe2cb3f82ba6c057dde5d9debe4f7 From add55a57f60842b888ecacea2d110b13b8d52b7a Mon Sep 17 00:00:00 2001 From: bgreni <42788181+bgreni@users.noreply.github.com> Date: Wed, 15 Jan 2025 07:30:32 -0800 Subject: [PATCH 234/509] [External] [stdlib] Use named output for _ListIter __next__() method (#53928) [External] [stdlib] Use named output for _ListIter __next__() method Add a trivial optimization to use a named output for the `__next__()` method in `_ListIter` to save a subtraction operation on every iteration Co-authored-by: bgreni <42788181+bgreni@users.noreply.github.com> Closes modularml/mojo#3941 MODULAR_ORIG_COMMIT_REV_ID: 426ada8f07f91a0d14ffe0c6e77ae074405e52c2 --- stdlib/src/collections/list.mojo | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/stdlib/src/collections/list.mojo b/stdlib/src/collections/list.mojo index 3c488d3388..cc688f34af 100644 --- a/stdlib/src/collections/list.mojo +++ b/stdlib/src/collections/list.mojo @@ -60,16 +60,14 @@ struct _ListIter[ fn __iter__(self) -> Self: return self - fn __next__( - mut self, - ) -> Pointer[T, list_origin]: + fn __next__(mut self, out p: Pointer[T, list_origin]): @parameter if forward: + p = Pointer.address_of(self.src[][self.index]) self.index += 1 - return Pointer.address_of(self.src[][self.index - 1]) else: self.index -= 1 - return Pointer.address_of(self.src[][self.index]) + p = Pointer.address_of(self.src[][self.index]) @always_inline fn __has_next__(self) -> Bool: From 9aec341ee28b5829a3a951ea40ff8214bb4d505c Mon Sep 17 00:00:00 2001 From: Joe Loser Date: Wed, 15 Jan 2025 10:31:27 -0500 Subject: [PATCH 235/509] [stdlib] Remove `bencher` docs Now that we have nightly docs, people can see the documentation for otherwise closed-source things in the standard library, such as the `benchmark` module. So, remove the temporary markdown docs we provided as an interim thing for users and contributors of the standard library. They can be read in a more up-to-date form at https://docs.modular.com/nightly/mojo/stdlib/benchmark. MODULAR_ORIG_COMMIT_REV_ID: f5dfec06fc337ca87349888e14079971d09e75b9 --- stdlib/docs/bencher/Bench.md | 174 --------------------------- stdlib/docs/bencher/BenchConfig.md | 78 ------------ stdlib/docs/bencher/BenchId.md | 62 ---------- stdlib/docs/bencher/Bencher.md | 117 ------------------ stdlib/docs/bencher/BenchmarkInfo.md | 51 -------- stdlib/docs/bencher/Mode.md | 52 -------- stdlib/docs/bencher/index.md | 39 ------ 7 files changed, 573 deletions(-) delete mode 100644 stdlib/docs/bencher/Bench.md delete mode 100644 stdlib/docs/bencher/BenchConfig.md delete mode 100644 stdlib/docs/bencher/BenchId.md delete mode 100644 stdlib/docs/bencher/Bencher.md delete mode 100644 stdlib/docs/bencher/BenchmarkInfo.md delete mode 100644 stdlib/docs/bencher/Mode.md delete mode 100644 stdlib/docs/bencher/index.md diff --git a/stdlib/docs/bencher/Bench.md b/stdlib/docs/bencher/Bench.md deleted file mode 100644 index 19133b572f..0000000000 --- a/stdlib/docs/bencher/Bench.md +++ /dev/null @@ -1,174 +0,0 @@ ---- -title: Bench -version: 0.0.0 -slug: Bench -type: struct -namespace: benchmark.bencher ---- - -
- -Defines the main Benchmark struct which executes a Benchmark and print result. - -## Fields - -- ​config (`BenchConfig`): Constructs a Benchmark object based on specific - configuration and mode. -- ​mode (`Mode`): Benchmark mode object representing benchmark or test - mode. -- ​info_vec (`List[BenchmarkInfo]`): A list containing the bencmark info. - -## Implemented traits - -`AnyType`, -`Copyable`, -`Movable` - -## Methods - -### `__init__` - -
- -
- -```mojo -__init__(out self: Self, config: Optional[BenchConfig] = #kgen.none, mode: Mode = 0) -``` - -
- -Constructs a Benchmark object based on specific configuration and mode. - -**Args:** - -- ​config (`Optional[BenchConfig]`): Benchmark configuration object to - control length and frequency of benchmarks. -- ​mode (`Mode`): Benchmark mode object representing benchmark or test - mode. - -
- -### `bench_with_input` - -
- -
- -```mojo -bench_with_input[T: AnyType, bench_fn: fn(mut Bencher, $0) capturing -> None](mut self: Self, bench_id: BenchId, input: T, throughput_elems: Optional[Int] = #kgen.none) -``` - -
- -Benchmarks an input function with input args of type AnyType. - -**Parameters:** - -- ​T (`AnyType`): Benchmark function input type. -- ​bench_fn (`fn(mut Bencher, $0) capturing -> None`): The function to - be benchmarked. - -**Args:** - -- ​bench_id (`BenchId`): The benchmark Id object used for identification. -- ​input (`T`): Represents the target function's input arguments. -- ​throughput_elems (`Optional[Int]`): Optional argument representing - algorithmic throughput. - -
- -
- -
- -```mojo -bench_with_input[T: AnyTrivialRegType, bench_fn: fn(mut Bencher, $0) capturing -> None](mut self: Self, bench_id: BenchId, input: T, throughput_elems: Optional[Int] = #kgen.none) -``` - -
- -Benchmarks an input function with input args of type AnyTrivialRegType. - -**Parameters:** - -- ​T (`AnyTrivialRegType`): Benchmark function input type. -- ​bench_fn (`fn(mut Bencher, $0) capturing -> None`): The function to - be benchmarked. - -**Args:** - -- ​bench_id (`BenchId`): The benchmark Id object used for identification. -- ​input (`T`): Represents the target function's input arguments. -- ​throughput_elems (`Optional[Int]`): Optional argument representing - algorithmic throughput. - -
- -### `bench_function` - -
- -
- -```mojo -bench_function[bench_fn: fn(mut Bencher) capturing -> None](mut self: Self, bench_id: BenchId, throughput_elems: Optional[Int] = #kgen.none) -``` - -
- -Benchmarks or Tests an input function. - -**Parameters:** - -- ​bench_fn (`fn(mut Bencher) capturing -> None`): The function to be - benchmarked. - -**Args:** - -- ​bench_id (`BenchId`): The benchmark Id object used for identification. -- ​throughput_elems (`Optional[Int]`): Optional argument representing - algorithmic throughput. - -
- -
- -
- -```mojo -bench_function[bench_fn: fn(mut Bencher) raises capturing -> None](mut self: Self, bench_id: BenchId, throughput_elems: Optional[Int] = #kgen.none) -``` - -
- -Benchmarks or Tests an input function. - -**Parameters:** - -- ​bench_fn (`fn(mut Bencher) raises capturing -> None`): The function - to be benchmarked. - -**Args:** - -- ​bench_id (`BenchId`): The benchmark Id object used for identification. -- ​throughput_elems (`Optional[Int]`): Optional argument representing - algorithmic throughput. - -
- -### `dump_report` - -
- -
- -`dump_report(self: Self)` - -
- -Prints out the report from a Benchmark execution. - -
- -
diff --git a/stdlib/docs/bencher/BenchConfig.md b/stdlib/docs/bencher/BenchConfig.md deleted file mode 100644 index 8a83984d5e..0000000000 --- a/stdlib/docs/bencher/BenchConfig.md +++ /dev/null @@ -1,78 +0,0 @@ ---- -title: BenchConfig -version: 0.0.0 -slug: BenchConfig -type: struct -namespace: benchmark.bencher ---- - -
- -Defines a benchmark configuration struct to control execution times and -frequency. - -## Fields - -- ​out_file (`Optional[Path]`): Output file to write results to. -- ​min_runtime_secs (`SIMD[float64, 1]`): Lower bound on benchmarking time - in secs. -- ​max_runtime_secs (`SIMD[float64, 1]`): Upper bound on benchmarking time - in secs. -- ​min_warmuptime_secs (`SIMD[float64, 1]`): Lower bound on the warmup time - in secs. -- ​max_batch_size (`Int`): The maximum number of iterations to perform per - time measurement. -- ​max_iters (`Int`): Max number of iterations to run. -- ​num_repetitions (`Int`): Number of times the benchmark has to be - repeated. -- ​flush_denormals (`Bool`): Whether or not the denormal values are - flushed. -- ​show_progress (`Bool`): Whether or not to show the progress of each - benchmark. -- ​tabular_view (`Bool`): Whether to print results in csv readable/tabular - format. - -## Implemented traits - -`AnyType`, -`CollectionElement`, -`Copyable`, -`Movable` - -## Methods - -### `__init__` - -
- -
- -```mojo -__init__(out self: out_file: Optional[Path] = None, min_runtime_secs: SIMD[float64, 1] = 1.0, max_runtime_secs: SIMD[float64, 1] = 2.0, min_warmuptime_secs: SIMD[float64, 1] = 1.0, max_batch_size: Int = 0, max_iters: Int = 1000000000, num_repetitions: Int = 1, flush_denormals: Bool = True) -``` - -
- -Constructs and initializes Benchmark config object with default and inputted values. - -**Args:** - -- ​out_file (`Optional[Path]`): Output file to write results to. -- ​min_runtime_secs (`SIMD[float64, 1]`): Upper bound on benchmarking time - in secs (default `1.0`). -- ​max_runtime_secs (`SIMD[float64, 1]`): Lower bound on benchmarking time - in secs (default `2.0`). -- ​min_warmuptime_secs (`SIMD[float64, 1]`): Lower bound on the warmup time - in secs (default `1.0`). -- ​max_batch_size (`Int`): The maximum number of iterations to perform per - time measurement. -- ​max_iters (`Int`): Max number of iterations to run (default - `1_000_000_000`). -- ​num_repetitions (`Int`): Number of times the benchmark has to be - repeated. -- ​flush_denormals (`Bool`): Whether or not the denormal values are - flushed. - -
- -
diff --git a/stdlib/docs/bencher/BenchId.md b/stdlib/docs/bencher/BenchId.md deleted file mode 100644 index 0d215bd972..0000000000 --- a/stdlib/docs/bencher/BenchId.md +++ /dev/null @@ -1,62 +0,0 @@ ---- -title: BenchId -version: 0.0.0 -slug: BenchId -type: struct -namespace: benchmark.bencher ---- - -
- -Defines a benchmark ID struct to identify and represent a particular benchmark -execution. - -## Fields - -- ​func_name (`String`): The target function name. -- ​input_id (`Optional[String]`): The target function input ID phrase. - -## Implemented traits - -`AnyType`, -`Copyable`, -`Movable` - -## Methods - -### `__init__` - -
- -
- -`__init__(out self: Self, func_name: String, input_id: String)` - -
- -Constructs a Benchmark Id object from input function name and Id phrase. - -**Args:** - -- ​func_name (`String`): The target function name. -- ​input_id (`String`): The target function input id phrase. - -
- -
- -
- -`__init__(out self: Self, func_name: String)` - -
- -Constructs a Benchmark Id object from input function name. - -**Args:** - -- ​func_name (`String`): The target function name. - -
- -
diff --git a/stdlib/docs/bencher/Bencher.md b/stdlib/docs/bencher/Bencher.md deleted file mode 100644 index 91d68e80d8..0000000000 --- a/stdlib/docs/bencher/Bencher.md +++ /dev/null @@ -1,117 +0,0 @@ ---- -title: Bencher -version: 0.0.0 -slug: Bencher -type: struct -namespace: benchmark.bencher ---- - -
- -Defines a Bencher struct which facilitates the timing of a target function. - -## Fields - -- ​num_iters (`Int`): Number of iterations to run the target function. -- ​elapsed (`Int`): The total time elpased when running the target - function. - -## Implemented traits - -`AnyType`, -`Copyable`, -`Movable` - -## Methods - -### `__init__` - -
- -
- -`__init__(out self: Self, num_iters: Int)` - -
- -Constructs a Bencher object to run and time a function. - -**Args:** - -- ​num_iters (`Int`): Number of times to run the target function. - -
- -### `iter` - -
- -
- -`iter[iter_fn: fn() capturing -> None](mut self: Self)` - -
- -Returns the total elapsed time by running a target function a particular number -of times. - -**Parameters:** - -- ​iter_fn (`fn() capturing -> None`): The target function to benchmark. - -
- -
- -
- -`iter[iter_fn: fn() raises capturing -> None](mut self: Self)` - -
- -Returns the total elapsed time by running a target function a particular number -of times. - -**Parameters:** - -- ​iter_fn (`fn() raises capturing -> None`): The target function to - benchmark. - -
- -### `iter_custom` - -
- -
- -`iter_custom[iter_fn: fn(Int) capturing -> Int](mut self: Self)` - -
- -Times a target function with custom number of iterations. - -**Parameters:** - -- ​iter_fn (`fn(Int) capturing -> Int`): The target function to benchmark. - -
- -
- -
- -`iter_custom[iter_fn: fn(Int) raises capturing -> Int](mut self: Self)` - -
- -Times a target function with custom number of iterations. - -**Parameters:** - -- ​iter_fn (`fn(Int) raises capturing -> Int`): The target function to - benchmark. - -
- -
diff --git a/stdlib/docs/bencher/BenchmarkInfo.md b/stdlib/docs/bencher/BenchmarkInfo.md deleted file mode 100644 index 52b2922fa0..0000000000 --- a/stdlib/docs/bencher/BenchmarkInfo.md +++ /dev/null @@ -1,51 +0,0 @@ ---- -title: BenchmarkInfo -version: 0.0.0 -slug: BenchmarkInfo -type: struct -namespace: benchmark.bencher ---- - -
- -Defines a Benchmark Info struct to record execution Statistics. - -## Fields - -- ​name (`String`): The name of the benchmark. -- ​result (`Report`): The output report after executing a benchmark. -- ​elems (`Optional[Int]`): Optional arg used to represent a specific - metric like throughput. - -## Implemented traits - -`AnyType`, -`CollectionElement`, -`Copyable`, -`Movable`, -`Stringable` - -## Methods - -### `__init__` - -
- -
- -`__init__(out self: Self, name: String, result: Report, elems: Optional[Int])` - -
- -Constructs a Benchmark Info object to return Benchmark report and Stats. - -**Args:** - -- ​name (`String`): The name of the benchmark. -- ​result (`Report`): The output report after executing a benchmark. -- ​elems (`Optional[Int]`): Optional arg used to represent a specific - metric like throughput. - -
- -
diff --git a/stdlib/docs/bencher/Mode.md b/stdlib/docs/bencher/Mode.md deleted file mode 100644 index 74efd79cc0..0000000000 --- a/stdlib/docs/bencher/Mode.md +++ /dev/null @@ -1,52 +0,0 @@ ---- -title: Mode -version: 0.0.0 -slug: Mode -type: struct -namespace: benchmark.bencher ---- - -
- -Defines a Benchmark Mode to distinguish between test runs and actual benchmarks. - -## Aliases - -- `Benchmark = 0`: -- `Test = 1`: - -## Fields - -- ​value (`Int`): Represents the mode type. - -## Implemented traits - -`AnyType`, -`Copyable`, -`Movable` - -## Methods - -### `__eq__` - -
- -
- -`__eq__(self: Self, other: Self) -> Bool` - -
- -Check if its Benchmark mode or test mode. - -**Args:** - -- ​other (`Self`): The mode to be compared against. - -**Returns:** - -If its a test mode or benchmark mode. - -
- -
diff --git a/stdlib/docs/bencher/index.md b/stdlib/docs/bencher/index.md deleted file mode 100644 index 0372bc6dfb..0000000000 --- a/stdlib/docs/bencher/index.md +++ /dev/null @@ -1,39 +0,0 @@ ---- -title: bencher -version: 0.0.0 -type: module -namespace: benchmark ---- - -
- -
- -This is preview documentation for the `bencher` module, available in nightly -builds now. This documentation will move to -[docs.modular.com](https://docs.modular.com/mojo/stdlib/benchmark/) soon. - -You can import these APIs from the `benchmark` package. For example: - -```mojo -from benchmark import Bencher -``` - -
- -## Structs - -- [​`BenchConfig`](./BenchConfig): Defines a benchmark configuration struct to - control execution times and frequency. -- [​`BenchId`](./BenchId): Defines a benchmark Id struct to identify and - represent a particular benchmark execution. -- [​`BenchmarkInfo`](./BenchmarkInfo): Defines a Benchmark Info struct to record - execution Statistics. -- [​`Mode`](./Mode): Defines a Benchmark Mode to distinguish between test runs - and actual benchmarks. -- [​`Bench`](./Bench): Defines the main Benchmark struct which executes a - Benchmark and print result. -- [​`Bencher`](./Bencher): Defines a Bencher struct which facilitates the timing - of a target function. - -
From 4ef6859e166927e3774cde0eb372ef4d0cfbc9ef Mon Sep 17 00:00:00 2001 From: mahiro21h Date: Wed, 15 Jan 2025 07:32:56 -0800 Subject: [PATCH 236/509] [External] [stdlib] Fix `input()` segfaults on EOF (#53925) [External] [stdlib] Fix `input()` segfaults on EOF pressing `ctrl-d` with no input when `input()` is called causes mojo to crash because `read_until_delimiter()` doesn't check the return value of the C function `getdelim()`. it assumes `getdelim()` always succeeds and so, in the case of an error, it blindly creates a `StringRef` with its length set to the return value - 1 (so the length is -2 in this case). this `StringRef` is then passed to `String()` which in turn passes the `StringRef` to `memcpy()` with a count of -2 and ultimately crashing mojo. this pr adds a check in `read_until_delimiter()` to check if `getdelim()` failed and raise an error if it does, along with a test to ensure `read_until_delimiter()` continues to behave as it should. Fixes https://github.com/modularml/mojo/issues/3908 Co-authored-by: mahiro21h Closes modularml/mojo#3919 MODULAR_ORIG_COMMIT_REV_ID: c3457f3377bfcfe0379e31fbd31e72ec53fe7516 --- stdlib/src/builtin/io.mojo | 13 ++++++++--- stdlib/test/builtin/test_issue_3908.mojo | 28 ++++++++++++++++++++++++ 2 files changed, 38 insertions(+), 3 deletions(-) create mode 100644 stdlib/test/builtin/test_issue_3908.mojo diff --git a/stdlib/src/builtin/io.mojo b/stdlib/src/builtin/io.mojo index 465a4cefcf..b4971adf71 100644 --- a/stdlib/src/builtin/io.mojo +++ b/stdlib/src/builtin/io.mojo @@ -68,7 +68,7 @@ struct _fdopen[mode: StringLiteral = "a"]: """Closes the file handle.""" _ = fclose(self.handle) - fn readline(self) -> String: + fn readline(self) raises -> String: """Reads an entire line from stdin or until EOF. Lines are delimited by a newline character. Returns: @@ -95,7 +95,7 @@ struct _fdopen[mode: StringLiteral = "a"]: """ return self.read_until_delimiter("\n") - fn read_until_delimiter(self, delimiter: StringSlice) -> String: + fn read_until_delimiter(self, delimiter: StringSlice) raises -> String: """Reads an entire line from a stream, up to the `delimiter`. Does not include the delimiter in the result. @@ -140,6 +140,13 @@ struct _fdopen[mode: StringLiteral = "a"]: ord(delimiter), self.handle, ) + # Per man getdelim(3), getdelim will return -1 if an error occurs + # (or the user sends EOF without providing any input). We must + # raise an error in this case because otherwise, String() will crash mojo + # if the user sends EOF with no input. + # TODO: check errno to ensure we haven't encountered EINVAL or ENOMEM instead + if bytes_read == -1: + raise Error("EOF") # Copy the buffer (excluding the delimiter itself) into a Mojo String. var s = String(StringRef(buffer, bytes_read - 1)) # Explicitly free the buffer using free() instead of the Mojo allocator. @@ -283,7 +290,7 @@ fn print[ # ===----------------------------------------------------------------------=== # -fn input(prompt: String = "") -> String: +fn input(prompt: String = "") raises -> String: """Reads a line of input from the user. Reads a line from standard input, converts it to a string, and returns that string. diff --git a/stdlib/test/builtin/test_issue_3908.mojo b/stdlib/test/builtin/test_issue_3908.mojo new file mode 100644 index 0000000000..3e468a428f --- /dev/null +++ b/stdlib/test/builtin/test_issue_3908.mojo @@ -0,0 +1,28 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2024, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # +# RUN: echo -n | %mojo %s + +from builtin.io import _fdopen +from testing import testing + + +fn test_read_until_delimiter_raises_eof() raises: + var stdin = _fdopen["r"](0) + with testing.assert_raises(contains="EOF"): + # Assign to a variable to silence a warning about unused String value + # if an error wasn't raised. + var unused = stdin.read_until_delimiter("\n") + + +fn main() raises: + test_read_until_delimiter_raises_eof() From 16024b1e8005717bf41eb7c27d3dd6f0d987d7d0 Mon Sep 17 00:00:00 2001 From: abdul dakkak Date: Wed, 15 Jan 2025 12:08:59 -0800 Subject: [PATCH 237/509] [Stdlib] Add basic linked list implementation MODULAR_ORIG_COMMIT_REV_ID: 639aca98351b3616d041da634ec24c456cb44f4d --- docs/changelog.md | 2 + stdlib/src/collections/__init__.mojo | 1 + stdlib/src/collections/linked_list.mojo | 326 ++++++++++++++++++ stdlib/test/collections/test_linked_list.mojo | 122 +++++++ 4 files changed, 451 insertions(+) create mode 100644 stdlib/src/collections/linked_list.mojo create mode 100644 stdlib/test/collections/test_linked_list.mojo diff --git a/docs/changelog.md b/docs/changelog.md index b1bfb3c91a..a0456c42dd 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -231,6 +231,8 @@ what we publish. - You can now use `max()` and `min()` with variadic number of arguments. +- A new `LinkedList` type has been added to the standard library. + ### Tooling changes - mblack (aka `mojo format`) no longer formats non-mojo files. This prevents diff --git a/stdlib/src/collections/__init__.mojo b/stdlib/src/collections/__init__.mojo index 97f58c9c88..123ed4db6b 100644 --- a/stdlib/src/collections/__init__.mojo +++ b/stdlib/src/collections/__init__.mojo @@ -21,3 +21,4 @@ from .list import List from .optional import Optional, OptionalReg from .set import Set from .vector import InlinedFixedVector +from .linked_list import LinkedList diff --git a/stdlib/src/collections/linked_list.mojo b/stdlib/src/collections/linked_list.mojo new file mode 100644 index 0000000000..afa3c0b624 --- /dev/null +++ b/stdlib/src/collections/linked_list.mojo @@ -0,0 +1,326 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2024, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from memory import UnsafePointer +from collections import Optional +from collections._index_normalization import normalize_index + + +trait WritableCollectionElement(CollectionElement, Writable): + """A trait that combines CollectionElement and Writable traits. + + This trait requires types to implement both CollectionElement and Writable + interfaces, allowing them to be used in collections and written to output. + """ + + pass + + +@value +struct Node[ElementType: WritableCollectionElement]: + """A node in a linked list data structure. + + Parameters: + ElementType: The type of element stored in the node. + """ + + var value: ElementType + """The value stored in this node.""" + var prev: UnsafePointer[Node[ElementType]] + """The previous node in the list.""" + var next: UnsafePointer[Node[ElementType]] + """The next node in the list.""" + + fn __init__( + out self, + owned value: ElementType, + prev: Optional[UnsafePointer[Node[ElementType]]], + next: Optional[UnsafePointer[Node[ElementType]]], + ): + """Initialize a new Node with the given value and optional prev/next + pointers. + + Args: + value: The value to store in this node. + prev: Optional pointer to the previous node. + next: Optional pointer to the next node. + """ + self.value = value^ + self.prev = prev.value() if prev else __type_of(self.prev)() + self.next = next.value() if next else __type_of(self.next)() + + fn __str__(self) -> String: + """Convert this node's value to a string representation. + + Returns: + String representation of the node's value. + """ + return String.write(self) + + @no_inline + fn write_to[W: Writer](self, mut writer: W): + """Write this node's value to the given writer. + + Parameters: + W: The type of writer to write the value to. + + Args: + writer: The writer to write the value to. + """ + writer.write(self.value) + + +struct LinkedList[ElementType: WritableCollectionElement]: + """A doubly-linked list implementation. + + A doubly-linked list is a data structure where each element points to both + the next and previous elements, allowing for efficient insertion and deletion + at any position. + + Parameters: + ElementType: The type of elements stored in the list. Must implement + WritableCollectionElement. + """ + + var _head: UnsafePointer[Node[ElementType]] + """The first node in the list.""" + var _tail: UnsafePointer[Node[ElementType]] + """The last node in the list.""" + var _size: Int + """The number of elements in the list.""" + + fn __init__(out self): + """Initialize an empty linked list.""" + self._head = __type_of(self._head)() + self._tail = __type_of(self._tail)() + self._size = 0 + + fn __init__(mut self, owned *elements: ElementType): + """Initialize a linked list with the given elements. + + Args: + elements: Variable number of elements to initialize the list with. + """ + self = Self(elements=elements^) + + fn __init__(out self, *, owned elements: VariadicListMem[ElementType, _]): + """Initialize a linked list with the given elements. + + Args: + elements: Variable number of elements to initialize the list with. + """ + self = Self() + + for elem in elements: + self.append(elem[]) + + # Do not destroy the elements when their backing storage goes away. + __mlir_op.`lit.ownership.mark_destroyed`( + __get_mvalue_as_litref(elements) + ) + + fn __copyinit__(mut self, read other: Self): + """Initialize this list as a copy of another list. + + Args: + other: The list to copy from. + """ + self._head = other._head + self._tail = other._tail + self._size = other._size + + fn __moveinit__(mut self, owned other: Self): + """Initialize this list by moving elements from another list. + + Args: + other: The list to move elements from. + """ + self._head = other._head + self._tail = other._tail + self._size = other._size + other._head = __type_of(other._head)() + other._tail = __type_of(other._tail)() + other._size = 0 + + fn __del__(owned self): + """Clean up the list by freeing all nodes.""" + var curr = self._head + while curr: + var next = curr[].next + curr[].prev = __type_of(self._head)() + curr[].next = __type_of(self._tail)() + curr.destroy_pointee() + curr.free() + curr = next + + fn append(mut self, owned value: ElementType): + """Add an element to the end of the list. + + Args: + value: The value to append. + """ + var node = Node[ElementType](value^, self._tail, None) + var addr = UnsafePointer[__type_of(node)].alloc(1) + addr.init_pointee_move(node) + if self: + self._tail[].next = addr + self._tail = addr + else: + self._head = addr + self._tail = addr + self._size += 1 + + fn prepend(mut self, owned value: ElementType): + """Add an element to the beginning of the list. + + Args: + value: The value to prepend. + """ + var node = Node[ElementType](value^, None, self._head) + var addr = UnsafePointer[__type_of(node)].alloc(1) + addr.init_pointee_move(node) + if self: + self._head[].prev = addr + self._head = addr + else: + self._head = addr + self._tail = addr + self._size += 1 + + fn reverse(mut self): + """Reverse the order of elements in the list.""" + var prev = __type_of(self._head)() + var curr = self._head + while curr: + var next = curr[].next + curr[].next = prev + prev = curr + curr = next + self._head = prev + self._tail = self._head[].prev + + fn pop(mut self) -> ElementType: + """Remove and return the first element of the list. + + Returns: + The first element in the list. + """ + var elem = self._tail + var value = elem[].value + self._tail = elem[].prev + self._size -= 1 + return value^ + + fn copy(self) -> Self: + """Create a deep copy of the list. + + Returns: + A new list containing copies of all elements. + """ + var new = Self() + var curr = self._head + while curr: + new.append(curr[].value) + curr = curr[].next + return new^ + + fn __getitem__(ref self, index: Int) -> ref [self] ElementType: + """Get the element at the specified index. + + Args: + index: The index of the element to get. + + Returns: + The element at the specified index. + """ + var curr = self._head + for _ in range( + normalize_index[container_name="LinkedList"](index, self) + ): + curr = curr[].next + return curr[].value + + fn __setitem__(mut self, index: Int, owned value: ElementType): + """Set the element at the specified index. + + Args: + index: The index of the element to set. + value: The new value to set. + """ + var curr = self._head + for _ in range( + normalize_index[container_name="LinkedList"](index, self) + ): + curr = curr[].next + curr[].value = value^ + + fn __len__(self) -> Int: + """Get the number of elements in the list. + + Returns: + The number of elements in the list. + """ + return self._size + + fn __bool__(self) -> Bool: + """Check if the list is non-empty. + + Returns: + True if the list has elements, False otherwise. + """ + return len(self) != 0 + + fn __str__(self) -> String: + """Convert the list to its string representation. + + Returns: + String representation of the list. + """ + return String.write(self) + + fn __repr__(self) -> String: + """Convert the list to its string representation. + + Returns: + String representation of the list. + """ + var writer = String() + self._write(writer, prefix="LinkedList(", suffix=")") + return writer + + fn write_to[W: Writer](self, mut writer: W): + """Write the list to the given writer. + + Parameters: + W: The type of writer to write the list to. + + Args: + writer: The writer to write the list to. + """ + self._write(writer) + + @no_inline + fn _write[ + W: Writer + ](self, mut writer: W, *, prefix: String = "[", suffix: String = "]"): + if not self: + return writer.write(prefix, suffix) + + var curr = self._head + writer.write(prefix) + for i in range(len(self)): + if i: + writer.write(", ") + writer.write(curr[]) + curr = curr[].next + writer.write(suffix) diff --git a/stdlib/test/collections/test_linked_list.mojo b/stdlib/test/collections/test_linked_list.mojo new file mode 100644 index 0000000000..fa8b12b85d --- /dev/null +++ b/stdlib/test/collections/test_linked_list.mojo @@ -0,0 +1,122 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2024, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # +# RUN: %mojo-no-debug %s + +from collections import LinkedList +from testing import assert_equal + + +def test_construction(): + var l1 = LinkedList[Int]() + assert_equal(len(l1), 0) + + var l2 = LinkedList[Int](1, 2, 3) + assert_equal(len(l2), 3) + assert_equal(l2[0], 1) + assert_equal(l2[1], 2) + assert_equal(l2[2], 3) + + +def test_append(): + var l1 = LinkedList[Int]() + l1.append(1) + l1.append(2) + l1.append(3) + assert_equal(len(l1), 3) + assert_equal(l1[0], 1) + assert_equal(l1[1], 2) + assert_equal(l1[2], 3) + + +def test_prepend(): + var l1 = LinkedList[Int]() + l1.prepend(1) + l1.prepend(2) + l1.prepend(3) + assert_equal(len(l1), 3) + assert_equal(l1[0], 3) + assert_equal(l1[1], 2) + assert_equal(l1[2], 1) + + +def test_copy(): + var l1 = LinkedList[Int](1, 2, 3) + var l2 = l1.copy() + assert_equal(len(l2), 3) + assert_equal(l2[0], 1) + assert_equal(l2[1], 2) + assert_equal(l2[2], 3) + + +def test_reverse(): + var l1 = LinkedList[Int](1, 2, 3) + l1.reverse() + assert_equal(len(l1), 3) + assert_equal(l1[0], 3) + assert_equal(l1[1], 2) + assert_equal(l1[2], 1) + + +def test_pop(): + var l1 = LinkedList[Int](1, 2, 3) + assert_equal(l1.pop(), 3) + assert_equal(len(l1), 2) + assert_equal(l1[0], 1) + assert_equal(l1[1], 2) + + +def test_getitem(): + var l1 = LinkedList[Int](1, 2, 3) + assert_equal(l1[0], 1) + assert_equal(l1[1], 2) + assert_equal(l1[2], 3) + + assert_equal(l1[-1], 3) + assert_equal(l1[-2], 2) + assert_equal(l1[-3], 1) + + +def test_setitem(): + var l1 = LinkedList[Int](1, 2, 3) + l1[0] = 4 + assert_equal(l1[0], 4) + assert_equal(l1[1], 2) + assert_equal(l1[2], 3) + + l1[-1] = 5 + assert_equal(l1[0], 4) + assert_equal(l1[1], 2) + assert_equal(l1[2], 5) + + +def test_str(): + var l1 = LinkedList[Int](1, 2, 3) + assert_equal(str(l1), "[1, 2, 3]") + + +def test_repr(): + var l1 = LinkedList[Int](1, 2, 3) + assert_equal(repr(l1), "LinkedList(1, 2, 3)") + + +def main(): + test_construction() + test_append() + test_prepend() + test_copy() + test_reverse() + test_pop() + test_getitem() + test_setitem() + test_str() + test_repr() From 4de6a061313b03bbd63556b01041b2b274f41d29 Mon Sep 17 00:00:00 2001 From: Connor Gray Date: Wed, 15 Jan 2025 14:36:28 -0600 Subject: [PATCH 238/509] [stdlib] polish: Move ASCII free function predicates like `isdigit()` to be `Char` methods MODULAR_ORIG_COMMIT_REV_ID: ea353f81276ccc4a700ec8373ee150b38f0bb17c --- docs/changelog.md | 4 +- stdlib/src/builtin/char.mojo | 46 ++++++++ stdlib/src/collections/string/__init__.mojo | 4 - stdlib/src/collections/string/string.mojo | 100 +----------------- .../src/collections/string/string_slice.mojo | 8 +- stdlib/src/prelude/__init__.mojo | 4 - stdlib/test/builtin/test_char.mojo | 47 ++++++++ .../test/collections/string/test_string.mojo | 29 ----- 8 files changed, 105 insertions(+), 137 deletions(-) diff --git a/docs/changelog.md b/docs/changelog.md index a0456c42dd..1d8ca2919e 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -113,7 +113,9 @@ what we publish. - Added `String` constructor from `Char` - `Char` can be converted to `UInt32` via `Char.to_u32()`. - `Char` provides methods for categorizing character types, including: - `Char.is_ascii()`, `Char.is_posix_space()`, `Char.is_python_space()`. + `Char.is_ascii()`, `Char.is_posix_space()`, `Char.is_python_space()`, + `Char.is_ascii_digit()`, `Char.is_ascii_upper()`, `Char.is_ascii_lower()`, + `Char.is_ascii_printable()`. - `chr(Int)` will now abort if given a codepoint value that is not a valid `Char`. diff --git a/stdlib/src/builtin/char.mojo b/stdlib/src/builtin/char.mojo index 0a48f7cdc6..261fc2ffeb 100644 --- a/stdlib/src/builtin/char.mojo +++ b/stdlib/src/builtin/char.mojo @@ -272,6 +272,52 @@ struct Char(CollectionElement, EqualityComparable, Intable, Stringable): """ return self._scalar_value <= 0b0111_1111 + fn is_ascii_digit(self) -> Bool: + """Determines whether the given character is a digit [0-9]. + + Returns: + True if the character is a digit. + """ + alias ord_0 = UInt32(ord("0")) + alias ord_9 = UInt32(ord("9")) + return ord_0 <= self.to_u32() <= ord_9 + + fn is_ascii_upper(self) -> Bool: + """Determines whether the given character is an uppercase character. + + This currently only respects the default "C" locale, i.e. returns True + iff the character specified is one of "ABCDEFGHIJKLMNOPQRSTUVWXYZ". + + Returns: + True if the character is uppercase. + """ + alias ord_a = UInt32(ord("A")) + alias ord_z = UInt32(ord("Z")) + return ord_a <= self.to_u32() <= ord_z + + fn is_ascii_lower(self) -> Bool: + """Determines whether the given character is an lowercase character. + + This currently only respects the default "C" locale, i.e. returns True + iff the character specified is one of "abcdefghijklmnopqrstuvwxyz". + + Returns: + True if the character is lowercase. + """ + alias ord_a = UInt32(ord("a")) + alias ord_z = UInt32(ord("z")) + return ord_a <= self.to_u32() <= ord_z + + fn is_ascii_printable(self) -> Bool: + """Determines whether the given character is a printable character. + + Returns: + True if the character is a printable character, otherwise False. + """ + alias ord_space = UInt32(ord(" ")) + alias ord_tilde = UInt32(ord("~")) + return ord_space <= self.to_u32() <= ord_tilde + @always_inline fn is_python_space(self) -> Bool: """Determines whether this character is a Python whitespace string. diff --git a/stdlib/src/collections/string/__init__.mojo b/stdlib/src/collections/string/__init__.mojo index 97f9fdc563..0b7a981d4c 100644 --- a/stdlib/src/collections/string/__init__.mojo +++ b/stdlib/src/collections/string/__init__.mojo @@ -18,10 +18,6 @@ from .string import ( atof, atol, chr, - isdigit, - islower, - isprintable, - isupper, ord, ) from .string_slice import StringSlice, StaticString diff --git a/stdlib/src/collections/string/string.mojo b/stdlib/src/collections/string/string.mojo index cca7e2c210..db6afcb928 100644 --- a/stdlib/src/collections/string/string.mojo +++ b/stdlib/src/collections/string/string.mojo @@ -140,7 +140,7 @@ fn _repr_ascii(c: UInt8) -> String: if c == ord_back_slash: return r"\\" - elif isprintable(c): + elif Char(c).is_ascii_printable(): return _chr_ascii(c) elif c == ord_tab: return r"\t" @@ -525,96 +525,6 @@ fn atof(str_slice: StringSlice) raises -> Float64: return result * sign -# ===----------------------------------------------------------------------=== # -# isdigit -# ===----------------------------------------------------------------------=== # - - -fn isdigit(c: UInt8) -> Bool: - """Determines whether the given character is a digit [0-9]. - - Args: - c: The character to check. - - Returns: - True if the character is a digit. - """ - alias ord_0 = ord("0") - alias ord_9 = ord("9") - return ord_0 <= Int(c) <= ord_9 - - -# ===----------------------------------------------------------------------=== # -# isupper -# ===----------------------------------------------------------------------=== # - - -fn isupper(c: UInt8) -> Bool: - """Determines whether the given character is an uppercase character. - - This currently only respects the default "C" locale, i.e. returns True iff - the character specified is one of "ABCDEFGHIJKLMNOPQRSTUVWXYZ". - - Args: - c: The character to check. - - Returns: - True if the character is uppercase. - """ - return _is_ascii_uppercase(c) - - -fn _is_ascii_uppercase(c: UInt8) -> Bool: - alias ord_a = ord("A") - alias ord_z = ord("Z") - return ord_a <= Int(c) <= ord_z - - -# ===----------------------------------------------------------------------=== # -# islower -# ===----------------------------------------------------------------------=== # - - -fn islower(c: UInt8) -> Bool: - """Determines whether the given character is an lowercase character. - - This currently only respects the default "C" locale, i.e. returns True iff - the character specified is one of "abcdefghijklmnopqrstuvwxyz". - - Args: - c: The character to check. - - Returns: - True if the character is lowercase. - """ - return _is_ascii_lowercase(c) - - -fn _is_ascii_lowercase(c: UInt8) -> Bool: - alias ord_a = ord("a") - alias ord_z = ord("z") - return ord_a <= Int(c) <= ord_z - - -# ===----------------------------------------------------------------------=== # -# isprintable -# ===----------------------------------------------------------------------=== # - - -fn isprintable(c: UInt8) -> Bool: - """Determines whether the given character is a printable character. - - Args: - c: The character to check. - - Returns: - True if the character is a printable character, otherwise False. - """ - alias ord_space = ord(" ") - alias ord_tilde = ord("~") - return ord_space <= Int(c) <= ord_tilde - - # ===----------------------------------------------------------------------=== # # String # ===----------------------------------------------------------------------=== # @@ -1961,8 +1871,8 @@ struct String( """ if not self: return False - for c in self: - if not isdigit(ord(c)): + for char in self.as_string_slice().chars(): + if not char.is_ascii_digit(): return False return True @@ -1994,8 +1904,8 @@ struct String( Returns: True if all characters are printable else False. """ - for c in self: - if not isprintable(ord(c)): + for char in self.as_string_slice().chars(): + if not char.is_ascii_printable(): return False return True diff --git a/stdlib/src/collections/string/string_slice.mojo b/stdlib/src/collections/string/string_slice.mojo index 5a48b47b5e..74c471f491 100644 --- a/stdlib/src/collections/string/string_slice.mojo +++ b/stdlib/src/collections/string/string_slice.mojo @@ -524,12 +524,12 @@ struct StringSlice[mut: Bool, //, origin: Origin[mut]]( elif s == "\r": result += r"\r" else: - var codepoint = ord(s) - if isprintable(codepoint): + var codepoint = Char.ord(s) + if codepoint.is_ascii_printable(): result += s - elif codepoint < 0x10: + elif codepoint.to_u32() < 0x10: result += hex(codepoint, prefix=r"\x0") - elif codepoint < 0x20 or codepoint == 0x7F: + elif codepoint.to_u32() < 0x20 or codepoint.to_u32() == 0x7F: result += hex(codepoint, prefix=r"\x") else: # multi-byte character result += s diff --git a/stdlib/src/prelude/__init__.mojo b/stdlib/src/prelude/__init__.mojo index 572ff016ad..dffb5725b5 100644 --- a/stdlib/src/prelude/__init__.mojo +++ b/stdlib/src/prelude/__init__.mojo @@ -21,10 +21,6 @@ from collections.string import ( atof, atol, chr, - isdigit, - islower, - isprintable, - isupper, ord, ) from hashlib.hash import Hashable, hash diff --git a/stdlib/test/builtin/test_char.mojo b/stdlib/test/builtin/test_char.mojo index c8c083a82a..b38a855051 100644 --- a/stdlib/test/builtin/test_char.mojo +++ b/stdlib/test/builtin/test_char.mojo @@ -95,6 +95,49 @@ def test_char_is_posix_space(): assert_false(Char.ord(".").is_posix_space()) +def test_char_is_lower(): + assert_true(Char.ord("a").is_ascii_lower()) + assert_true(Char.ord("b").is_ascii_lower()) + assert_true(Char.ord("y").is_ascii_lower()) + assert_true(Char.ord("z").is_ascii_lower()) + + assert_false(Char.from_u32(ord("a") - 1).value().is_ascii_lower()) + assert_false(Char.from_u32(ord("z") + 1).value().is_ascii_lower()) + + assert_false(Char.ord("!").is_ascii_lower()) + assert_false(Char.ord("0").is_ascii_lower()) + + +def test_char_is_upper(): + assert_true(Char.ord("A").is_ascii_upper()) + assert_true(Char.ord("B").is_ascii_upper()) + assert_true(Char.ord("Y").is_ascii_upper()) + assert_true(Char.ord("Z").is_ascii_upper()) + + assert_false(Char.from_u32(ord("A") - 1).value().is_ascii_upper()) + assert_false(Char.from_u32(ord("Z") + 1).value().is_ascii_upper()) + + assert_false(Char.ord("!").is_ascii_upper()) + assert_false(Char.ord("0").is_ascii_upper()) + + +def test_char_is_digit(): + assert_true(Char.ord("1").is_ascii_digit()) + assert_false(Char.ord("g").is_ascii_digit()) + + # Devanagari Digit 6 — non-ASCII digits are not "ascii digit". + assert_false(Char.ord("६").is_ascii_digit()) + + +def test_char_is_printable(): + assert_true(Char.ord("a").is_ascii_printable()) + assert_false(Char.ord("\n").is_ascii_printable()) + assert_false(Char.ord("\t").is_ascii_printable()) + + # Non-ASCII characters are not considered "ascii printable". + assert_false(Char.ord("स").is_ascii_printable()) + + alias SIGNIFICANT_CODEPOINTS = List[Tuple[Int, List[Byte]]]( # -------------------------- # 1-byte (ASCII) codepoints @@ -191,6 +234,10 @@ def main(): test_char_formatting() test_char_properties() test_char_is_posix_space() + test_char_is_lower() + test_char_is_upper() + test_char_is_digit() + test_char_is_printable() test_char_utf8_encoding() test_char_utf8_byte_length() test_char_comptime() diff --git a/stdlib/test/collections/string/test_string.mojo b/stdlib/test/collections/string/test_string.mojo index d938ab0fd0..ea971afab7 100644 --- a/stdlib/test/collections/string/test_string.mojo +++ b/stdlib/test/collections/string/test_string.mojo @@ -814,17 +814,6 @@ def test_splitlines(): def test_isupper(): - assert_true(isupper(ord("A"))) - assert_true(isupper(ord("B"))) - assert_true(isupper(ord("Y"))) - assert_true(isupper(ord("Z"))) - - assert_false(isupper(ord("A") - 1)) - assert_false(isupper(ord("Z") + 1)) - - assert_false(isupper(ord("!"))) - assert_false(isupper(ord("0"))) - assert_true(String("ASDG").isupper()) assert_false(String("AsDG").isupper()) assert_true(String("ABC123").isupper()) @@ -834,17 +823,6 @@ def test_isupper(): def test_islower(): - assert_true(islower(ord("a"))) - assert_true(islower(ord("b"))) - assert_true(islower(ord("y"))) - assert_true(islower(ord("z"))) - - assert_false(islower(ord("a") - 1)) - assert_false(islower(ord("z") + 1)) - - assert_false(islower(ord("!"))) - assert_false(islower(ord("0"))) - assert_true(String("asdfg").islower()) assert_false(String("asdFDg").islower()) assert_true(String("abc123").islower()) @@ -1425,9 +1403,6 @@ def test_format_conversion_flags(): def test_isdigit(): - assert_true(isdigit(ord("1"))) - assert_false(isdigit(ord("g"))) - assert_false(String("").isdigit()) assert_true(String("123").isdigit()) assert_false(String("asdg").isdigit()) @@ -1435,10 +1410,6 @@ def test_isdigit(): def test_isprintable(): - assert_true(isprintable(ord("a"))) - assert_false(isprintable(ord("\n"))) - assert_false(isprintable(ord("\t"))) - assert_true(String("aasdg").isprintable()) assert_false(String("aa\nae").isprintable()) assert_false(String("aa\tae").isprintable()) From b89734cf6075cfd12509f3533d764aac21720f75 Mon Sep 17 00:00:00 2001 From: Scott Main Date: Wed, 15 Jan 2025 12:48:15 -0800 Subject: [PATCH 239/509] Add image metadata to support rendering in card stacks MODULAR_ORIG_COMMIT_REV_ID: fd1b1dafcf04683dae78ad61f7d5086db50ebd6b --- docs/manual/get-started.mdx | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/manual/get-started.mdx b/docs/manual/get-started.mdx index 8540761f2e..67bd86d592 100644 --- a/docs/manual/get-started.mdx +++ b/docs/manual/get-started.mdx @@ -3,6 +3,7 @@ title: "Get started with Mojo" sidebar_label: "Tutorial: Get started with Mojo" description: "Install Mojo and learn the language basics by building a complete Mojo program" github_url: https://github.com/modularml/mojo/tree/nightly/examples/life +images: /images/artwork/mojo-get-started.jpg --- import GetMagic from '@site/src/includes/get_magic.mdx'; From 35b10b5d284b4bdfd054ead0884663c2551faeb8 Mon Sep 17 00:00:00 2001 From: Scott Main Date: Wed, 15 Jan 2025 13:45:44 -0800 Subject: [PATCH 240/509] Revert adding image front matter due to build issue MODULAR_ORIG_COMMIT_REV_ID: 73f546472958e8f645c868ffa41db6b3e331ede6 --- docs/manual/get-started.mdx | 1 - 1 file changed, 1 deletion(-) diff --git a/docs/manual/get-started.mdx b/docs/manual/get-started.mdx index 67bd86d592..8540761f2e 100644 --- a/docs/manual/get-started.mdx +++ b/docs/manual/get-started.mdx @@ -3,7 +3,6 @@ title: "Get started with Mojo" sidebar_label: "Tutorial: Get started with Mojo" description: "Install Mojo and learn the language basics by building a complete Mojo program" github_url: https://github.com/modularml/mojo/tree/nightly/examples/life -images: /images/artwork/mojo-get-started.jpg --- import GetMagic from '@site/src/includes/get_magic.mdx'; From a9f9e0ac245c977cb8bd5a2cdf7153bdbcbc646f Mon Sep 17 00:00:00 2001 From: Scott Main Date: Wed, 15 Jan 2025 14:37:07 -0800 Subject: [PATCH 241/509] Add image metadata to support rendering in card stacks MODULAR_ORIG_COMMIT_REV_ID: 6df31c8fe894ab751471259dae63af76a6ace222 --- docs/manual/get-started.mdx | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/manual/get-started.mdx b/docs/manual/get-started.mdx index 8540761f2e..9a3aaeff9b 100644 --- a/docs/manual/get-started.mdx +++ b/docs/manual/get-started.mdx @@ -3,6 +3,7 @@ title: "Get started with Mojo" sidebar_label: "Tutorial: Get started with Mojo" description: "Install Mojo and learn the language basics by building a complete Mojo program" github_url: https://github.com/modularml/mojo/tree/nightly/examples/life +image: /images/artwork/mojo-get-started.jpg --- import GetMagic from '@site/src/includes/get_magic.mdx'; From f486ba276ccbebd91fe4dc75741266372bc29bd0 Mon Sep 17 00:00:00 2001 From: Ken Jones <165197230+KenJones-Modular@users.noreply.github.com> Date: Wed, 15 Jan 2025 15:19:40 -0800 Subject: [PATCH 242/509] Adding an example to the public repo of using the Mojo testing framework MODULAR_ORIG_COMMIT_REV_ID: 111e67f7d270db6368c3b592ff5437d24c4a464c --- docs/tools/testing.mdx | 167 +++++++++++--------- examples/testing/.gitattributes | 2 + examples/testing/.gitignore | 6 + examples/testing/README.md | 68 ++++++++ examples/testing/mojoproject.toml | 16 ++ examples/testing/src/example.mojo | 26 +++ examples/testing/src/my_math/__init__.mojo | 51 ++++++ examples/testing/src/my_math/utils.mojo | 94 +++++++++++ examples/testing/test/my_math/test_dec.mojo | 28 ++++ examples/testing/test/my_math/test_inc.mojo | 28 ++++ 10 files changed, 413 insertions(+), 73 deletions(-) create mode 100644 examples/testing/.gitattributes create mode 100644 examples/testing/.gitignore create mode 100644 examples/testing/README.md create mode 100644 examples/testing/mojoproject.toml create mode 100644 examples/testing/src/example.mojo create mode 100644 examples/testing/src/my_math/__init__.mojo create mode 100644 examples/testing/src/my_math/utils.mojo create mode 100644 examples/testing/test/my_math/test_dec.mojo create mode 100644 examples/testing/test/my_math/test_inc.mojo diff --git a/docs/tools/testing.mdx b/docs/tools/testing.mdx index 287e40c690..bd67e80ec3 100644 --- a/docs/tools/testing.mdx +++ b/docs/tools/testing.mdx @@ -2,6 +2,7 @@ title: Testing sidebar_position: 2 description: Testing Mojo programs. +github_url: https://github.com/modularml/mojo/tree/nightly/examples/testing --- Mojo includes a framework for developing and executing unit tests. The framework @@ -66,7 +67,7 @@ mojo test test_quickstart.mojo You should see output similar to this (note that this example elides the full filesystem paths from the output shown): -``` +```output Testing Time: 1.193s Total Discovered Tests: 2 @@ -92,15 +93,20 @@ its error message. ### Next steps -* [The `testing` module](#the-testing-module) describes the assertion +- [The `testing` module](#the-testing-module) describes the assertion functions available to help implement tests. -* [Writing unit tests](#writing-unit-tests) shows how to write unit tests and +- [Writing unit tests](#writing-unit-tests) shows how to write unit tests and organize them into test files. -* [The `mojo test` command](#the-mojo-test-command) describes how to execute +- [The `mojo test` command](#the-mojo-test-command) describes how to execute and collect lists of tests. -* [Writing API documentation tests](#writing-api-documentation-tests) +- [Writing API documentation tests](#writing-api-documentation-tests) discusses how to use the Mojo testing framework to test code examples in your API documentation. +- The public [GitHub repo](https://github.com/modularml/mojo/tree/nightly) + contains an [example + project](https://github.com/modularml/mojo/tree/nightly/examples/testing) to + demonstrate both unit testing and docstring testing. Several of the examples + shown later are based on this project. ## The `testing` module @@ -108,15 +114,15 @@ The Mojo standard library includes a [`testing`](/mojo/stdlib/testing/testing/) module that defines several assertion functions for implementing tests. Each assertion returns `None` if its condition is met or raises an error if it isn't. -* [`assert_true()`](/mojo/stdlib/testing/testing/assert_true): +- [`assert_true()`](/mojo/stdlib/testing/testing/assert_true): Asserts that the input value is `True`. -* [`assert_false()`](/mojo/stdlib/testing/testing/assert_false): +- [`assert_false()`](/mojo/stdlib/testing/testing/assert_false): Asserts that the input value is `False`. -* [`assert_equal()`](/mojo/stdlib/testing/testing/assert_equal): +- [`assert_equal()`](/mojo/stdlib/testing/testing/assert_equal): Asserts that the input values are equal. -* [`assert_not_equal()`](/mojo/stdlib/testing/testing/assert_not_equal): +- [`assert_not_equal()`](/mojo/stdlib/testing/testing/assert_not_equal): Asserts that the input values are not equal. -* [`assert_almost_equal()`](/mojo/stdlib/testing/testing/assert_almost_equal): +- [`assert_almost_equal()`](/mojo/stdlib/testing/testing/assert_almost_equal): Asserts that the input values are equal up to a tolerance. The boolean assertions report a basic error message when they fail. @@ -191,8 +197,7 @@ Error: AssertionError: Didn't raise at Expression [4] wrapper:18:23 The example above assigns the return value from `inc()` to a [*discard pattern*](/mojo/manual/lifecycle/death#explicit-lifetimes). -Without it, the Mojo compiler detects that the return value is unused and -optimizes the code to eliminate the function call. +Without it, the Mojo compiler reports a warning that the return value is unused. ::: @@ -222,11 +227,11 @@ Error: invalid value A Mojo unit test is simply a function that fulfills all of these requirements: -* Has a name that starts with `test_`. -* Accepts no arguments. -* Returns either `None` or a value of type `object`. -* Raises an error to indicate test failure. -* Is defined at the module scope, not as a Mojo struct method. +- Has a name that starts with `test_`. +- Accepts no arguments. +- Returns either `None` or a value of type `object`. +- Raises an error to indicate test failure. +- Is defined at the module scope, not as a Mojo struct method. You can use either `def` or `fn` to define a test function. Because a test function always raises an error to indicate failure, any test function defined @@ -269,9 +274,9 @@ The unique identity of a unit test consists of the path of the test file and the name of the test function, separated by `::`. So the test IDs from the example above are: -* `test_my_target_module.mojo::test_validate_input()` -* `test_my_target_module.mojo::test_convert_input()` -* `test_my_target_module.mojo::test_convert_error()` +- `test_my_target_module.mojo::test_validate_input()` +- `test_my_target_module.mojo::test_convert_input()` +- `test_my_target_module.mojo::test_convert_error()` ## The `mojo test` command @@ -283,18 +288,19 @@ command for running tests or collecting a list of tests. By default, the `mojo test` command runs the tests that you specify using one of the following: -* A single test ID with either an absolute or relative file path, to run only +- A single test ID with either an absolute or relative file path, to run only that test. -* A single absolute or relative file path, to run all tests in that file. -* A single absolute or relative directory path, to recurse through that +- A single absolute or relative file path, to run all tests in that file. +- A single absolute or relative directory path, to recurse through that directory hierarchy and run all tests found. If needed, you can optionally use the `-I` option one or more times to append additional paths to the list of directories searched to import Mojo modules and -packages. For example, consider a project with the following directory -structure: +packages. Consider the [example testing +project](https://github.com/modularml/mojo/tree/nightly/examples/testing) in +GitHub, which has the following directory structure: -``` +```output . ├── src │   ├── example.mojo @@ -307,11 +313,14 @@ structure: └── test_inc.mojo ``` -From the project root directory, you could execute all of the tests in the -`test` directory like this: +From the project root directory, you can execute all of the tests in the `test` +directory like this: +```bash +mojo test -I src test ``` -$ mojo test -I src test + +```output Testing Time: 3.433s Total Discovered Tests: 4 @@ -321,10 +330,13 @@ Failed : 0 (0.00%) Skipped: 0 (0.00%) ``` -You could run the tests contained in only the `test_dec.mojo` file like this: +You can run the tests contained in only the `test_dec.mojo` file like this: +```bash +mojo test -I src test/my_math/test_dec.mojo ``` -$ mojo test -I src test/my_math/test_dec.mojo + +```output Testing Time: 1.175s Total Discovered Tests: 2 @@ -334,11 +346,14 @@ Failed : 0 (0.00%) Skipped: 0 (0.00%) ``` -And you could run a single test from a file by providing its fully qualified +And you can run a single test from a file by providing its fully qualified ID like this: +```bash +mojo test -I src 'test/my_math/test_dec.mojo::test_dec_valid()' ``` -$ mojo test -I src 'test/my_math/test_dec.mojo::test_dec_valid()' + +```output Testing Time: 0.66s Total Discovered Tests: 1 @@ -353,9 +368,11 @@ Skipped: 0 (0.00%) By including the `--collect-only` or `--co` option, you can use `mojo test` to discover and print a list of tests. -As an example, consider the project structure shown in the -[Running tests](#running-tests) section. The following command produces a list -of all of the tests defined in the `test` directory hierarchy. +Consider the [example testing +project](https://github.com/modularml/mojo/tree/nightly/examples/testing) +directory structure shown in the [Running tests](#running-tests) section. The +following command produces a list of all of the tests defined in the `test` +directory hierarchy. ```bash mojo test --co test @@ -364,7 +381,7 @@ mojo test --co test The output shows the hierarchy of directories, test files, and individual tests (note that this example elides the full filesystem paths from the output shown): -``` +```output @@ -380,7 +397,7 @@ By default `mojo test` produces concise, human-readable output. Alternatively you can produce JSON formatted output more suitable for input to other tools by including the `--diagnostic-format json` option. -For example, you could run the tests in the `test_quickstart.mojo` file shown +For example, you can run the tests in the `test_quickstart.mojo` file shown in the [Get started](#get-started) section with JSON formatted output using this command: @@ -392,7 +409,7 @@ The output shows the detailed results for each individual test and summary results (note that this example elides the full filesystem paths from the output shown): -``` +```json { "children": [ { @@ -421,19 +438,21 @@ output shown): } ``` -You can also produce JSON output for test collection as well. As an example, -consider the project structure shown in the [Running tests](#running-tests) -section. The following command collects a list in JSON format of all of the -tests defined in the `test` directory hierarchy: +You can also produce JSON output for test collection as well. Consider the +[example testing +project](https://github.com/modularml/mojo/tree/nightly/examples/testing) +directory structure shown in the [Running tests](#running-tests) section. The +following command collects a list in JSON format of all of the tests defined in +the `test` directory hierarchy: ```bash mojo test --diagnostic-format json --co test ``` -The output would appear as follows (note that this example elides the full +The output will appear as follows (note that this example elides the full filesystem paths from the output shown): -``` +```json { "children": [ { @@ -442,18 +461,18 @@ filesystem paths from the output shown): "id": "ROOT_DIR/test/my_math/test_dec.mojo::test_dec_valid()", "location": { "endColumn": 5, - "endLine": 5, + "endLine": 19, "startColumn": 5, - "startLine": 5 + "startLine": 19 } }, { "id": "ROOT_DIR/test/my_math/test_dec.mojo::test_dec_min()", "location": { "endColumn": 5, - "endLine": 9, + "endLine": 24, "startColumn": 5, - "startLine": 9 + "startLine": 24 } } ], @@ -465,18 +484,18 @@ filesystem paths from the output shown): "id": "ROOT_DIR/test/my_math/test_inc.mojo::test_inc_valid()", "location": { "endColumn": 5, - "endLine": 5, + "endLine": 19, "startColumn": 5, - "startLine": 5 + "startLine": 19 } }, { "id": "ROOT_DIR/test/my_math/test_inc.mojo::test_inc_max()", "location": { "endColumn": 5, - "endLine": 9, + "endLine": 24, "startColumn": 5, - "startLine": 9 + "startLine": 24 } } ], @@ -539,7 +558,7 @@ assert_equals(b, 2) Sometimes you might want to execute a line of code as part of the test but *not* display that line in the API documentation. To achieve this, prefix the line of -code with `%#`. For example, you could use this technique to omit `import` +code with `%#`. For example, you can use this technique to omit `import` statements and assertion functions from the documentation. ```` @@ -560,7 +579,7 @@ print(c) ### Documentation test suites and scoping The Mojo testing framework treats each docstring as a separate *test suite*. -In other words, a single test suite could correspond to the docstring for an +In other words, a single test suite can correspond to the docstring for an individual package, module, function, struct, struct method, etc. Each executable code block within a given docstring is a single test of the same @@ -606,43 +625,45 @@ suite within the same module. ### Documentation test identifiers The format of a documentation test identifier is `@::`. -This is best explained by an example. Consider the project structure shown in -the [Running tests](#running-tests) section. The source files in the `src` -directory might contain docstrings for the `my_math` package, the `utils.mojo` -module, and the individual functions within that module. You could collect the -full list of tests by executing: +This is best explained by an example. Consider the [example testing +project](https://github.com/modularml/mojo/tree/nightly/examples/testing) +directory structure shown in the [Running tests](#running-tests) section. The +source files in the `src` directory might contain docstrings for the `my_math` +package, the `utils.mojo` module, and the individual functions within that +module. You can collect the full list of tests by executing: -``` +```bash mojo test --co src ``` The output shows the hierarchy of directories, test files, and individual tests (note that this example elides the full filesystem paths from the output shown): -``` +```output + - - - - - - + + + + + + ``` Several different test suites appear in this result: -| Test suite scope | File | Test suite name | -| ---------------- | --------------------------- | ---------------------------------------------------- | -| Package | `src/my_math/__init__.mojo` | `__doc__` | -| Module | `src/my_math/utils.mojo` | `__doc__` | -| Function | `src/my_math/utils.mojo` | `inc(stdlib\3A\3Abuiltin\3A\3Aint\3A\3AInt).__doc__` | +| Test suite scope | File | Test suite name | +| ---------------- | --------------------------- | ------------------------ | +| Package | `src/my_math/__init__.mojo` | `__doc__` | +| Module | `src/my_math/utils.mojo` | `__doc__` | +| Function | `src/my_math/utils.mojo` | `inc(\3A\3AInt).__doc__` | Then within a specific test suite, tests are numbered sequentially in the order they appear in the docstring, starting with 0. diff --git a/examples/testing/.gitattributes b/examples/testing/.gitattributes new file mode 100644 index 0000000000..8f61a8e774 --- /dev/null +++ b/examples/testing/.gitattributes @@ -0,0 +1,2 @@ +# SCM syntax highlighting +pixi.lock linguist-language=YAML linguist-generated=true diff --git a/examples/testing/.gitignore b/examples/testing/.gitignore new file mode 100644 index 0000000000..4edde08eef --- /dev/null +++ b/examples/testing/.gitignore @@ -0,0 +1,6 @@ +# pixi environments +.pixi +*.egg-info + +# Magic environments +.magic diff --git a/examples/testing/README.md b/examples/testing/README.md new file mode 100644 index 0000000000..849554de04 --- /dev/null +++ b/examples/testing/README.md @@ -0,0 +1,68 @@ +# Modular testing framework examples + +This directory contains examples of using the Mojo testing framework. It +demonstrates using the testing framework for both unit testing and testing code +examples in the [documentation +strings](https://docs.modular.com/mojo/manual/basics#code-comments) (also known +as *docstrings*) of Mojo API documentation. See the +[Testing](https://docs.modular.com/mojo/tools/testing) section of the [Mojo +manual](https://docs.modular.com/mojo/manual/) for a complete discussion of how +to use the Mojo testing framework. + +## Files + +This directory contains the following files: + +- `src/my_math/__init__.mojo`: a Mojo package file with package-level docstrings + containing code examples to test + +- `src/my_math/utils.mojo`: a Mojo module source file with both module-level and + function-level docstrings containing code examples to test + +- `src/example.mojo`: a simple Mojo program that uses the functions from the + `my_math` package + +- `test/my_math/test_*.mojo`: Mojo test files containing unit tests for + functions defined in the `my_math` package + +- `mojoproject.toml`: a [Magic](https://docs.modular.com/magic/) project file + containing the project dependencies and task definitions. + +## Run the code + +This example project uses the [Magic](https://docs.modular.com/magic/) package +and virtual environment manager. To run the code in this project, you should +follow the instructions in [Install +Magic](https://docs.modular.com/nightly/magic/#install-magic) first. + +Once you have installed Magic, activate the project's virtual environment by +navigating to the project's root directory and executing: + +```bash +magic shell +``` + +Run the unit tests contained in the `test` directory by executing: + +```bash +mojo test -I src test +``` + +Run the docstring tests for the API documentation contained in the `src` +directory by executing: + +```bash +mojo test src +``` + +If desired, you can run the example program by executing: + +```bash +mojo src/example.mojo +``` + +Once you're done, deactivate the project's virtual environment by executing: + +```bash +exit +``` diff --git a/examples/testing/mojoproject.toml b/examples/testing/mojoproject.toml new file mode 100644 index 0000000000..487fdcfa48 --- /dev/null +++ b/examples/testing/mojoproject.toml @@ -0,0 +1,16 @@ +[project] +authors = ["Modular "] +channels = ["conda-forge", "https://conda.modular.com/max-nightly"] +description = "An example of using the Mojo testing framework" +name = "testing" +platforms = ["osx-arm64", "linux-64", "linux-aarch64"] +version = "0.1.0" + +[tasks] +main = "mojo run src/example.mojo" +doc-tests = "mojo test src" +unit-tests = "mojo test -I src test" +tests = { depends-on = ["doc-tests", "unit-tests"] } + +[dependencies] +max = "*" diff --git a/examples/testing/src/example.mojo b/examples/testing/src/example.mojo new file mode 100644 index 0000000000..28807bbccb --- /dev/null +++ b/examples/testing/src/example.mojo @@ -0,0 +1,26 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from my_math import dec, inc + + +def main(): + i = 0 + print("Incrementing") + while i < 5: + i = inc(i) + print(i) + print("Decrementing") + while i > 0: + print(i) + i = dec(i) diff --git a/examples/testing/src/my_math/__init__.mojo b/examples/testing/src/my_math/__init__.mojo new file mode 100644 index 0000000000..968532820f --- /dev/null +++ b/examples/testing/src/my_math/__init__.mojo @@ -0,0 +1,51 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +# ===----------------------------------------------------------------------=== # +# Package file +# ===----------------------------------------------------------------------=== # +"""Basic mathematical utilities. + +This package defines a collection of utility functions for manipulating +integer values. + +You can import these APIs from the `my_math` package. For example: + +```mojo +from my_math import dec, inc +``` + +The `inc()` function performs a simple increment: + +```mojo +%# from testing import assert_equal +from my_math import inc +a = 1 +b = inc(a) # b = 2 +%# assert_equal(b, 2) +``` + +However, `inc()` raises an error if it would result in integer overflow: + +```mojo +c = 0 +try: + c = inc(Int.MAX) +except e: + print(e) +%# assert_equal("inc overflow", str(e)) +``` + +""" + +from .utils import dec, inc diff --git a/examples/testing/src/my_math/utils.mojo b/examples/testing/src/my_math/utils.mojo new file mode 100644 index 0000000000..8eb0d42577 --- /dev/null +++ b/examples/testing/src/my_math/utils.mojo @@ -0,0 +1,94 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +"""Implements various mathematical utilities. + +You can import these APIs from the `my_math` package. For example: + +```mojo +from my_math import inc +``` +""" + + +def inc(n: Int) -> Int: + """Returns an incremented integer value. + + ```mojo + %# from testing import assert_equal + from my_math import inc + i = 7 + j = inc(i) # j = 8 + %# assert_equal(j, 8) + ``` + + However, `inc()` raises an error if it would result in integer overflow: + + ```mojo + k = 0 + try: + k = inc(Int.MAX) + except e: + print(e) # inc overflow + %# assert_equal("inc overflow", str(e)) + ``` + + Args: + n: The integer value to increment. + + Returns: + The input value plus one. + + Raises: + An error if the incremented value exceeds `Int.MAX`. + """ + if n == Int.MAX: + raise Error("inc overflow") + return n + 1 + + +def dec(n: Int) -> Int: + """Returns a decremented integer value. + + ```mojo + %# from testing import assert_equal + from my_math import dec + i = 7 + j = dec(i) # j = 6 + %# assert_equal(j, 6) + ``` + + However, `dec()` raises an error if it would result in integer overflow: + + ```mojo + k = 0 + try: + k = dec(Int.MIN) + except e: + print(e) # inc overflow + %# assert_equal("dec overflow", str(e)) + ``` + + Args: + n: The integer value to decrement. + + Returns: + The input value minus one. + + Raises: + An error if the decremented value is less than `Int.MIN`. + + """ + if n == Int.MIN: + raise Error("dec overflow") + return n - 1 diff --git a/examples/testing/test/my_math/test_dec.mojo b/examples/testing/test/my_math/test_dec.mojo new file mode 100644 index 0000000000..7484124d6b --- /dev/null +++ b/examples/testing/test/my_math/test_dec.mojo @@ -0,0 +1,28 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from my_math import dec + +from testing import assert_equal, assert_raises + + +def test_dec_valid(): + assert_equal(dec(1), 0) + assert_equal(dec(0), -1) + + +def test_dec_min(): + with assert_raises(): + # Assign the return value to the discard pattern to prevent the Mojo + # compiler from warning that it is unused. + _ = dec(Int.MIN) diff --git a/examples/testing/test/my_math/test_inc.mojo b/examples/testing/test/my_math/test_inc.mojo new file mode 100644 index 0000000000..8b18919c75 --- /dev/null +++ b/examples/testing/test/my_math/test_inc.mojo @@ -0,0 +1,28 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from my_math import inc + +from testing import assert_equal, assert_raises + + +def test_inc_valid(): + assert_equal(inc(0), 1) + assert_equal(inc(1), 2) + + +def test_inc_max(): + with assert_raises(): + # Assign the return value to the discard pattern to prevent the Mojo + # compiler from warning that it is unused. + _ = inc(Int.MAX) From f53a6246819331a23a3fe0e0f6561314cf9174cb Mon Sep 17 00:00:00 2001 From: Connor Gray Date: Wed, 15 Jan 2025 17:54:42 -0600 Subject: [PATCH 243/509] [stdlib] polish: Add `StringSlice.char_slices()` + deprecate `__iter__()` method MODULAR_ORIG_COMMIT_REV_ID: a50d7efa09350c65b20877feec2d99217c8da65b --- stdlib/src/collections/string/_unicode.mojo | 22 +++++++++---------- .../src/collections/string/string_slice.mojo | 19 +++++++++++----- 2 files changed, 24 insertions(+), 17 deletions(-) diff --git a/stdlib/src/collections/string/_unicode.mojo b/stdlib/src/collections/string/_unicode.mojo index e96dff1260..152ec38d54 100644 --- a/stdlib/src/collections/string/_unicode.mojo +++ b/stdlib/src/collections/string/_unicode.mojo @@ -117,19 +117,18 @@ fn is_uppercase(s: StringSlice) -> Bool: there is at least one cased character, False otherwise. """ var found = False - for c in s: - var rune = Char.ord(c) - var index = _lowercase_mapping_index(rune) + for char in s.chars(): + var index = _lowercase_mapping_index(char) if index != -1: found = True continue - index = _uppercase_mapping_index(rune) + index = _uppercase_mapping_index(char) if index != -1: return False - index = _uppercase_mapping2_index(rune) + index = _uppercase_mapping2_index(char) if index != -1: return False - index = _uppercase_mapping3_index(rune) + index = _uppercase_mapping3_index(char) if index != -1: return False return found @@ -147,21 +146,20 @@ fn is_lowercase(s: StringSlice) -> Bool: there is at least one cased character, False otherwise. """ var found = False - for c in s: - var rune = Char.ord(c) - var index = _uppercase_mapping_index(rune) + for char in s.chars(): + var index = _uppercase_mapping_index(char) if index != -1: found = True continue - index = _uppercase_mapping2_index(rune) + index = _uppercase_mapping2_index(char) if index != -1: found = True continue - index = _uppercase_mapping3_index(rune) + index = _uppercase_mapping3_index(char) if index != -1: found = True continue - index = _lowercase_mapping_index(rune) + index = _lowercase_mapping_index(char) if index != -1: return False return found diff --git a/stdlib/src/collections/string/string_slice.mojo b/stdlib/src/collections/string/string_slice.mojo index 74c471f491..4104962de4 100644 --- a/stdlib/src/collections/string/string_slice.mojo +++ b/stdlib/src/collections/string/string_slice.mojo @@ -512,7 +512,7 @@ struct StringSlice[mut: Bool, //, origin: Origin[mut]]( """ var result = String() var use_dquote = False - for s in self: + for s in self.char_slices(): use_dquote = use_dquote or (s == "'") if s == "\\": @@ -675,15 +675,14 @@ struct StringSlice[mut: Bool, //, origin: Origin[mut]]( self.unsafe_ptr(), rhs.unsafe_ptr(), min(len1, len2) ) + @deprecated("Use `str.chars()` or `str.char_slices()` instead.") fn __iter__(self) -> _StringSliceIter[origin]: """Iterate over the string, returning immutable references. Returns: An iterator of references to the string elements. """ - return _StringSliceIter[origin]( - ptr=self.unsafe_ptr(), length=self.byte_length() - ) + return self.char_slices() fn __reversed__(self) -> _StringSliceIter[origin, False]: """Iterate backwards over the string, returning immutable references. @@ -955,6 +954,16 @@ struct StringSlice[mut: Bool, //, origin: Origin[mut]]( """ return CharsIter(self) + fn char_slices(self) -> _StringSliceIter[origin]: + """Iterate over the string, returning immutable references. + + Returns: + An iterator of references to the string elements. + """ + return _StringSliceIter[origin]( + ptr=self.unsafe_ptr(), length=self.byte_length() + ) + @always_inline fn as_bytes(self) -> Span[Byte, origin]: """Get the sequence of encoded bytes of the underlying string. @@ -1265,7 +1274,7 @@ struct StringSlice[mut: Bool, //, origin: Origin[mut]]( ) else: var offset = 0 - for s in self: + for s in self.char_slices(): var b_len = s.byte_length() if not _is_newline_char(ptr, offset, ptr[offset], b_len): return False From 33fda10e040fc77a2205eeb18bda28785249bd3b Mon Sep 17 00:00:00 2001 From: Jack Clayton Date: Wed, 15 Jan 2025 19:26:53 -0500 Subject: [PATCH 244/509] [mojo-lang] Allow keyword-only argument overloading This allows overloading keyword-only argument names, and overloading a positional arg with a keyword-only argument: ```mojo struct OverloadedKwArgs: var val: Int fn __init__(out self, single: Int): self.val = single fn __init__(out self, *, double: Int): self.val = double * 2 fn __init__(out self, *, triple: Int): self.val = triple * 3 fn main(): OverloadedKwArgs(1) # val=1 OverloadedKwArgs(double=1) # val=2 OverloadedKwArgs(triple=2) # val=3 ``` It also enables indexing overloading: ```mojo struct OverloadedKwArgs: var vals: List[Int] fn __init__(out self): self.vals = List[Int](0, 1, 2, 3, 4) fn __getitem__(self, idx: Int) -> Int: return self.vals[idx] fn __getitem__(self, *, idx2: Int) -> Int: return self.vals[idx2 * 2] fn __setitem__(mut self, idx: Int, val: Int): self.vals[idx] = val fn __setitem__(mut self, val: Int, *, idx2: Int): self.vals[idx2 * 2] = val fn main(): var x = OverloadedKwArgs() print(x[1]) # 1 print(x[idx2=1]) # 2 x[1] = 42 x[idx2=1] = 84 print(x[1]) # 42 print(x[idx2=1]) # 84 ``` MODULAR_ORIG_COMMIT_REV_ID: 3a2fbcd84ea3ecb83e30ae21d34006759d61743c --- docs/changelog.md | 56 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) diff --git a/docs/changelog.md b/docs/changelog.md index 1d8ca2919e..bb34b332c0 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -42,6 +42,62 @@ what we publish. var y : Int = x[idx] # Just works! ``` +- You can now overload positional arguments with a keyword-only argument, and + keyword-only arguments with different names: + + ```mojo + struct OverloadedKwArgs: + var val: Int + + fn __init__(out self, single: Int): + self.val = single + + fn __init__(out self, *, double: Int): + self.val = double * 2 + + fn __init__(out self, *, triple: Int): + self.val = triple * 3 + + fn main(): + OverloadedKwArgs(1) # val=1 + OverloadedKwArgs(double=1) # val=2 + OverloadedKwArgs(triple=2) # val=3 + ``` + + This also works with indexing operations: + + ```mojo + struct OverloadedKwArgs: + var vals: List[Int] + + fn __init__(out self): + self.vals = List[Int](0, 1, 2, 3, 4) + + fn __getitem__(self, idx: Int) -> Int: + return self.vals[idx] + + fn __getitem__(self, *, idx2: Int) -> Int: + return self.vals[idx2 * 2] + + fn __setitem__(mut self, idx: Int, val: Int): + self.vals[idx] = val + + fn __setitem__(mut self, val: Int, *, idx2: Int): + self.vals[idx2 * 2] = val + + + fn main(): + var x = OverloadedKwArgs() + print(x[1]) # 1 + print(x[idx2=1]) # 2 + + x[1] = 42 + x[idx2=1] = 84 + + print(x[1]) # 42 + print(x[idx2=1]) # 84 + ``` + ### Standard library changes - The `int` function to construct an `Int` has been deprecated, this was a From 3407d2f7c408a2958f8277331ddceb8c2897870a Mon Sep 17 00:00:00 2001 From: soraros Date: Wed, 15 Jan 2025 18:36:59 -0800 Subject: [PATCH 245/509] [External] [stdlib] Make examples compile in `math` (#53924) [External] [stdlib] Make examples compile in `math` - This is needed because of https://github.com/modularml/mojo/issues/3828. Co-authored-by: soraros Closes modularml/mojo#3912 MODULAR_ORIG_COMMIT_REV_ID: 1b67d641b8fc389d43fab99ebf6785fc9c906d55 --- stdlib/src/math/math.mojo | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/stdlib/src/math/math.mojo b/stdlib/src/math/math.mojo index ec2461fe65..d2acffd50a 100644 --- a/stdlib/src/math/math.mojo +++ b/stdlib/src/math/math.mojo @@ -2588,7 +2588,7 @@ trait CeilDivable: var x: Float64 fn __ceildiv__(self, denominator: Self) -> Self: - return -(self.x // -denominator.x) + return Self(self.x // denominator.x) ``` """ @@ -2621,7 +2621,7 @@ trait CeilDivableRaising: var x: object fn __ceildiv__(self, denominator: Self) raises -> Self: - return -(self.x // -denominator.x) + return Self(self.x // denominator.x) ``` """ From 0e14e6424c4eae7a2acc1e1af80d7f2c6037a088 Mon Sep 17 00:00:00 2001 From: abdul dakkak Date: Wed, 15 Jan 2025 18:56:04 -0800 Subject: [PATCH 246/509] [Stdlib] Simplify code for append/prepend in linked list, NFC MODULAR_ORIG_COMMIT_REV_ID: e80f95fab01d0a24aeabdfa7438e94131b3b2493 --- stdlib/src/collections/linked_list.mojo | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/stdlib/src/collections/linked_list.mojo b/stdlib/src/collections/linked_list.mojo index afa3c0b624..9591374a33 100644 --- a/stdlib/src/collections/linked_list.mojo +++ b/stdlib/src/collections/linked_list.mojo @@ -174,10 +174,9 @@ struct LinkedList[ElementType: WritableCollectionElement]: addr.init_pointee_move(node) if self: self._tail[].next = addr - self._tail = addr else: self._head = addr - self._tail = addr + self._tail = addr self._size += 1 fn prepend(mut self, owned value: ElementType): @@ -191,10 +190,9 @@ struct LinkedList[ElementType: WritableCollectionElement]: addr.init_pointee_move(node) if self: self._head[].prev = addr - self._head = addr else: - self._head = addr self._tail = addr + self._head = addr self._size += 1 fn reverse(mut self): From 22bd7af24faf154b7f28350c6359f8be575309ef Mon Sep 17 00:00:00 2001 From: Jack Clayton Date: Wed, 15 Jan 2025 22:10:29 -0500 Subject: [PATCH 247/509] [stdlib] Move `str` functions to `String` ctors And add deprecation warnings to the `str` functions, to be phased out to a compiler error in the release after next. MODULAR_ORIG_COMMIT_REV_ID: 54247b2e5fd77efc455237f0b372fa7c983c8cda --- docs/changelog.md | 11 ++- docs/manual/errors.mdx | 12 +-- docs/manual/functions.mdx | 4 +- docs/manual/get-started.mdx | 14 +-- docs/manual/operators.mdx | 7 +- docs/manual/parameters/index.mdx | 28 +++--- docs/manual/pointers/unsafe-pointers.mdx | 2 +- docs/manual/python/types.mdx | 13 +-- docs/manual/traits.mdx | 6 +- docs/manual/types.mdx | 29 ++++-- docs/manual/values/ownership.mdx | 6 +- docs/roadmap.md | 2 +- examples/life/test/test_gridv1.mojo | 2 +- examples/life/test/test_gridv2.mojo | 2 +- examples/matmul.mojo | 4 +- examples/operators/main.mojo | 4 +- examples/operators/test_my_complex.mojo | 4 +- examples/testing/src/my_math/__init__.mojo | 2 +- examples/testing/src/my_math/utils.mojo | 4 +- proposals/improved-hash-module.md | 2 +- stdlib/benchmarks/builtin/bench_int.mojo | 2 +- stdlib/benchmarks/builtin/bench_sort.mojo | 22 +++-- stdlib/benchmarks/collections/bench_dict.mojo | 10 +- .../benchmarks/collections/bench_string.mojo | 2 +- stdlib/benchmarks/hashlib/bench_hash.mojo | 2 +- stdlib/docs/development.md | 2 +- stdlib/docs/style-guide.md | 2 +- stdlib/src/builtin/_location.mojo | 2 +- stdlib/src/builtin/bool.mojo | 2 +- stdlib/src/builtin/char.mojo | 7 +- stdlib/src/builtin/debug_assert.mojo | 8 +- stdlib/src/builtin/float_literal.mojo | 2 +- stdlib/src/builtin/format_int.mojo | 2 +- stdlib/src/builtin/int.mojo | 4 +- stdlib/src/builtin/int_literal.mojo | 2 +- stdlib/src/builtin/object.mojo | 14 +-- stdlib/src/builtin/repr.mojo | 2 +- stdlib/src/builtin/str.mojo | 33 +++---- stdlib/src/builtin/string_literal.mojo | 38 +++---- stdlib/src/builtin/uint.mojo | 4 +- stdlib/src/collections/deque.mojo | 2 +- stdlib/src/collections/dict.mojo | 6 +- stdlib/src/collections/list.mojo | 2 +- stdlib/src/collections/string/format.mojo | 22 +++-- .../src/collections/string/inline_string.mojo | 14 +-- stdlib/src/collections/string/string.mojo | 99 +++++++++---------- .../src/collections/string/string_slice.mojo | 16 ++- stdlib/src/memory/pointer.mojo | 2 +- stdlib/src/memory/unsafe_pointer.mojo | 2 +- stdlib/src/os/_linux_aarch64.mojo | 28 +++--- stdlib/src/os/_linux_x86.mojo | 28 +++--- stdlib/src/os/_macos.mojo | 32 +++--- stdlib/src/os/fstat.mojo | 10 +- stdlib/src/os/os.mojo | 4 +- stdlib/src/os/path/path.mojo | 4 +- stdlib/src/pathlib/path.mojo | 12 +-- stdlib/src/pwd/_linux.mojo | 16 +-- stdlib/src/pwd/_macos.mojo | 16 +-- stdlib/src/python/_cpython.mojo | 6 +- stdlib/src/python/python.mojo | 2 +- stdlib/src/python/python_object.mojo | 4 +- stdlib/src/tempfile/tempfile.mojo | 8 +- stdlib/src/testing/testing.mojo | 40 +++++--- stdlib/src/time/time.mojo | 2 +- stdlib/src/utils/_serialize.mojo | 2 +- stdlib/src/utils/stringref.mojo | 11 ++- stdlib/src/utils/variant.mojo | 4 +- stdlib/src/utils/write.mojo | 4 +- stdlib/test/bit/test_bit.mojo | 2 +- stdlib/test/builtin/test_bfloat16.mojo | 2 +- stdlib/test/builtin/test_bool.mojo | 8 +- stdlib/test/builtin/test_char.mojo | 10 +- stdlib/test/builtin/test_dtype.mojo | 4 +- stdlib/test/builtin/test_error.mojo | 6 +- stdlib/test/builtin/test_file.mojo | 6 +- stdlib/test/builtin/test_format_float.mojo | 6 +- stdlib/test/builtin/test_issue_1004.mojo | 2 +- stdlib/test/builtin/test_location.mojo | 2 +- stdlib/test/builtin/test_object.mojo | 48 ++++----- stdlib/test/builtin/test_print.mojo | 2 +- stdlib/test/builtin/test_simd.mojo | 35 +++---- stdlib/test/builtin/test_slice.mojo | 2 +- stdlib/test/builtin/test_sort.mojo | 11 ++- stdlib/test/builtin/test_str.mojo | 2 +- stdlib/test/builtin/test_string_literal.mojo | 2 +- stdlib/test/builtin/test_uint.mojo | 8 +- .../string/test_inlined_string.mojo | 18 ++-- .../test/collections/string/test_string.mojo | 22 ++--- .../collections/string/test_string_slice.mojo | 50 +++++----- stdlib/test/collections/test_dict.mojo | 16 +-- .../test/collections/test_inline_array.mojo | 4 +- stdlib/test/collections/test_linked_list.mojo | 2 +- stdlib/test/hashlib/test_ahash.mojo | 12 +-- stdlib/test/hashlib/test_hasher.mojo | 2 +- stdlib/test/memory/test_memory.mojo | 40 ++++---- stdlib/test/memory/test_reference.mojo | 2 +- stdlib/test/memory/test_unsafepointer.mojo | 6 +- stdlib/test/os/path/test_isdir.mojo | 4 +- stdlib/test/os/path/test_islink.mojo | 2 +- stdlib/test/os/test_mkdir_and_rmdir.mojo | 6 +- stdlib/test/os/test_remove.mojo | 4 +- stdlib/test/os/test_stat.mojo | 2 +- stdlib/test/pathlib/test_pathlib.mojo | 20 ++-- stdlib/test/python/test_ownership.mojo | 10 +- .../python/test_python_error_handling.mojo | 6 +- stdlib/test/python/test_python_interop.mojo | 22 ++--- stdlib/test/python/test_python_object.mojo | 98 +++++++++--------- stdlib/test/python/test_python_to_mojo.mojo | 4 +- stdlib/test/random/test_random.mojo | 18 ++-- stdlib/test/tempfile/test_tempfile.mojo | 28 +++--- stdlib/test/testing/test_assert_raises.mojo | 8 +- stdlib/test/testing/test_assertion.mojo | 12 +-- stdlib/test/utils/test_index.mojo | 22 ++--- stdlib/test/utils/test_tuple.mojo | 14 +-- stdlib/test/utils/test_write.mojo | 4 +- 115 files changed, 693 insertions(+), 641 deletions(-) diff --git a/docs/changelog.md b/docs/changelog.md index bb34b332c0..0dde1eb064 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -100,11 +100,12 @@ what we publish. ### Standard library changes -- The `int` function to construct an `Int` has been deprecated, this was a - temporary workaround when Mojo didn't have a way to distinguish between - implicit and explicit constructors. You can do a search and replace from - `int(` to `Int(` to update your programs, the `int` function will be removed - in the next release. +- These functions have been deprecated: `int`, `str` in favor of constructors: + `Int`, `String`. The functions were a temporary workaround for when Mojo + didn't have a way to distinguish between implicit and explicit constructors. + You can do a search and replace e.g. from `int(` to `Int(` to update your + programs. This release will show a deprecation warning for the old functions, + and they'll be removed in the next release. - `UnsafePointer`'s `bitcast` method has now been split into `bitcast` for changing the type, `origin_cast` for changing mutability, diff --git a/docs/manual/errors.mdx b/docs/manual/errors.mdx index 47e1a23711..ff7512798a 100644 --- a/docs/manual/errors.mdx +++ b/docs/manual/errors.mdx @@ -103,12 +103,12 @@ recovery that's appropriate for your application. If you provide the name of a variable after the `except` keyword, then the `Error` instance is bound to the variable if an error occurs. The `Error` type -implements the [`Writable`](/mojo/stdlib/utils/write/Writable) trait, so -you can pass it as an argument to the [`print()`](/mojo/stdlib/builtin/io/print) +implements the [`Writable`](/mojo/stdlib/utils/write/Writable) trait, so you can +pass it as an argument to the [`print()`](/mojo/stdlib/builtin/io/print) function if you'd like to print its error message to the console. It also implements the [`Stringable`](/mojo/stdlib/builtin/str/Stringable) trait, so you -can pass it to the [`str()`](/mojo/stdlib/builtin/str/str) function if you want -to extract the error message as a `String` for further processing. +can construct a `String` with `String(error)` if you want to extract the error +message as a `String` for further processing. If desired, you can re-raise an error condition from your `except` clause simply by executing a `raise` statement from within its code block. This can be either @@ -152,7 +152,7 @@ def main(): print("try =>", value[]) if value[] == 1: continue - result = str("{} incremented is {}").format(value[], incr(value[])) + result = String("{} incremented is {}").format(value[], incr(value[])) except e: print("except =>", e) else: @@ -384,7 +384,7 @@ struct ConditionalTimer: print("Elapsed time:", elapsed_time_ms, "milliseconds") fn __exit__(mut self, e: Error) raises -> Bool: - if str(e) == "just a warning": + if String(e) == "just a warning": print("Suppressing error:", e) self.__exit__() return True diff --git a/docs/manual/functions.mdx b/docs/manual/functions.mdx index b7e34a14ff..c6f51aeaf9 100644 --- a/docs/manual/functions.mdx +++ b/docs/manual/functions.mdx @@ -364,12 +364,12 @@ fn print_string(s: String): print(s, end="") fn print_many[T: Stringable, *Ts: Stringable](first: T, *rest: *Ts): - print_string(str(first)) + print_string(String(first)) @parameter fn print_elt[T: Stringable](a: T): print_string(" ") - print_string(str(a)) + print_string(String(a)) rest.each[print_elt]() print_many("Bob") ``` diff --git a/docs/manual/get-started.mdx b/docs/manual/get-started.mdx index 9a3aaeff9b..08e6f575e0 100644 --- a/docs/manual/get-started.mdx +++ b/docs/manual/get-started.mdx @@ -647,11 +647,11 @@ produces the same output. You can verify that by running the program again. ## 9. Implement support for the `StringableRaising` trait -You can pass most Mojo types to the built-in `str()` function to produce a +You can convert most Mojo types to `String` using `String(my_val)` to produce a `String` representation of that instance. But you'll get an error if you try to do that with our current implementation of `Grid`. So let's fix that. -Because the Mojo compiler performs static type checking, a function like `str()` +Because the Mojo compiler performs static type checking, a `String` constructor can accept a value only if its type implements some required behavior—in this case, it only accepts types that can generate a `String` representation. @@ -663,7 +663,7 @@ any type that conform to a specified trait. (This type of function is sometimes referred to as a [*generic* function](/mojo/manual/parameters/#parameters-and-generics).) -In the case of `str()`, it requires a type to conform to either the `Stringable` +In the case of `String()`, it requires a type to conform to either the `Stringable` or `StringableRaising` trait. Each trait requires a conforming type to implement a `__str__()` method that returns a `String` representation. The only difference between the two traits is that `Stringable` requires that the method *cannot* @@ -692,13 +692,13 @@ struct Grid(StringableRaising): ... ``` -Now let's verify that `str()` works with an instance of `Grid`. +Now let's verify that `String()` works with an instance of `Grid`. ```mojo title="life.mojo" def main(): ... start = Grid(8, 8, glider) - print(str(start)) + print(String(start)) ``` If you run the program again, you should still see the same glider pattern as before. @@ -896,7 +896,7 @@ and print it. def main(): start = Grid.random(8, 16) - print(str(start)) + print(String(start)) ``` Run the program a few times to verify that it generates a different grid each @@ -1009,7 +1009,7 @@ from gridv1 import Grid def run_display(owned grid: Grid) -> None: while True: - print(str(grid)) + print(String(grid)) print() if input("Enter 'q' to quit or press to continue: ") == "q": break diff --git a/docs/manual/operators.mdx b/docs/manual/operators.mdx index b4ac20d127..3ae0802151 100644 --- a/docs/manual/operators.mdx +++ b/docs/manual/operators.mdx @@ -1100,7 +1100,7 @@ c2: Real: 3.1415899999999999; Imaginary: 0.0 To make it simpler to print `Complex` values, let's implement the [Writable](/mojo/stdlib/utils/write/Writable) trait. While we're at it, let's also implement the [`Stringable`](/mojo/stdlib/builtin/str/Stringable) trait so -that we can use the `str()` function to generate a `String` representation of a +that we can use the `String()` constructor to generate a `String` representation of a `Complex` value. You can find out more about these traits and their associated methods in [The `Stringable`, `Representable`, and `Writable` traits](/mojo/manual/traits#the-stringable-representable-and-writable-traits). @@ -1137,13 +1137,14 @@ between defining functions with `def` and `fn`. ::: Now we can print a `Complex` value directly, and we can explicitly generate a -`String` representation by passing a `Complex` value to `str()`. +`String` representation by passing a `Complex` value to `String.write()` which +constructs a new `String` from all the arguments passed to it. ```mojo c3 = Complex(3.14159, -2.71828) print("c3 =", c3) -var msg: String = "The value is: " + str(c3) +var msg = String.write("The value is: ", c3) print(msg) ``` diff --git a/docs/manual/parameters/index.mdx b/docs/manual/parameters/index.mdx index c602ce9522..084aba0ca8 100644 --- a/docs/manual/parameters/index.mdx +++ b/docs/manual/parameters/index.mdx @@ -103,7 +103,7 @@ conforms to the [`Stringable`](/mojo/stdlib/builtin/str/Stringable) trait: fn repeat[MsgType: Stringable, count: Int](msg: MsgType): @parameter for i in range(count): - print(str(msg)) + print(String(msg)) # Must use keyword parameter for `count` repeat[count=2](42) @@ -125,7 +125,7 @@ by the argument. Now you can pass the following parameter `count` positionally: fn repeat[MsgType: Stringable, //, count: Int](msg: MsgType): @parameter for i in range(count): - print(str(msg)) + print(String(msg)) # MsgType is always inferred, so first positional keyword `2` is passed to `count` repeat[2](42) @@ -252,7 +252,7 @@ struct Container[ElementType: CollectionElement]: def __str__[StrElementType: StringableCollectionElement, //]( self: Container[StrElementType]) -> String: - return str(self.element) + return String(self.element) def use_container(): float_container = Container(5) @@ -282,7 +282,7 @@ This trait must be a superset of `ElementType`'s original trait: for example, all of requirements of the original trait. Note that the `use_container()` function calls the `__str__()` method directly, -rather than calling `str(float_container)`. One current limitation of +rather than calling `String(float_container)`. One current limitation of conditional conformance is that Mojo can't recognize the struct `Container[Int]` as conforming to `Stringable`, even though the `__str__()` method is implemented for any `ElementType` that's also `Stringable`. @@ -545,11 +545,11 @@ struct Two[Type: StringableCollectionElement]: fn __init__(out self, one: One[Type], another: One[Type]): self.val1 = one.value self.val2 = another.value - print(str(self.val1), str(self.val2)) + print(String(self.val1), String(self.val2)) @staticmethod fn fire(thing1: One[Type], thing2: One[Type]): - print("🔥", str(thing1.value), str(thing2.value)) + print("🔥", String(thing1.value), String(thing2.value)) def use_two(): s3 = Two(One("infer"), One("me")) @@ -1163,9 +1163,7 @@ For example, suppose we have a `Fudge` struct with three parameters: @value struct Fudge[sugar: Int, cream: Int, chocolate: Int = 7](Stringable): fn __str__(self) -> String: - return str("Fudge (") + str(sugar) + "," + - str(cream) + "," + str(chocolate) + ")" - + return String.write("Fudge (", sugar, ",", cream, ",", chocolate, ")") ``` We can write a function that takes a `Fudge` argument with just one bound @@ -1173,7 +1171,7 @@ parameter (it's *partially bound*): ```mojo fn eat(f: Fudge[5, *_]): - print("Ate " + str(f)) + print("Ate " + String(f)) ``` The `eat()` function takes a `Fudge` struct with the first parameter (`sugar`) @@ -1185,7 +1183,7 @@ on the `eat` function. In practice, this is roughly equivalent to writing: ```mojo fn eat[cr: Int, ch: Int](f: Fudge[5, cr, ch]): - print("Ate", str(f)) + print("Ate", String(f)) ``` In both cases, we can call the function by passing in an instance with the @@ -1218,7 +1216,7 @@ parameter value with a single underscore (`_`): ```mojo fn devour(f: Fudge[_, 6, _]): - print("Devoured", str(f)) + print("Devoured", String(f)) ``` Again, the unbound parameters (`sugar` and `chocolate`) are added as implicit @@ -1228,7 +1226,7 @@ parameters, `su` and `ch`: ```mojo fn devour[su: Int, ch: Int](f: Fudge[su, 6, ch]): - print("Devoured", str(f)) + print("Devoured", String(f)) ``` You can also specify parameters by keyword, or mix positional and keyword @@ -1239,7 +1237,7 @@ And `cream` is explicitly bound to the value 6: ```mojo fn devour(f: Fudge[_, chocolate=_, cream=6]): - print("Devoured", str(f)) + print("Devoured", String(f)) ``` All three versions of the `devour()` function work with the following calls: @@ -1261,7 +1259,7 @@ for example: ```mojo fn nibble(f: Fudge[5]): - print("Ate", str(f)) + print("Ate", String(f)) nibble(Fudge[5, 4, 7]()) diff --git a/docs/manual/pointers/unsafe-pointers.mdx b/docs/manual/pointers/unsafe-pointers.mdx index 9bfb18a23a..69acb084b0 100644 --- a/docs/manual/pointers/unsafe-pointers.mdx +++ b/docs/manual/pointers/unsafe-pointers.mdx @@ -168,7 +168,7 @@ type](/mojo/manual/types#register-passable-memory-only-and-trivial-types) (like `Int`) or a newly-constructed, "owned" value: ```mojo -str_ptr.init_pointee_move(str("Owned string")) +str_ptr.init_pointee_move(String("Owned string")) ``` Alternately, you can get a pointer to an existing value using the static diff --git a/docs/manual/python/types.mdx b/docs/manual/python/types.mdx index 4aab0ace57..ee0f0d17a5 100644 --- a/docs/manual/python/types.mdx +++ b/docs/manual/python/types.mdx @@ -149,18 +149,19 @@ Currently `PythonObject` conforms to the [`Boolable`](/mojo/stdlib/builtin/bool/Boolable), [`Floatable`](/mojo/stdlib/builtin/floatable/Floatable/), and [`Intable`](/mojo/stdlib/builtin/int/Intable) traits, which means you can -convert Python values to Mojo `String`, `Bool`, and `Float64` types using the -[`str()`](/mojo/stdlib/builtin/str/str), +convert Python values to Mojo `Bool` and `Float64` types using the [`bool()`](/mojo/stdlib/builtin/bool/bool-function) and -[`float()`](/mojo/stdlib/builtin/floatable/float/) built-in functions, and -construct an `Int` using the [`Int()`](/mojo/stdlib/builtin/int/Int/#__init__) -constructor. `PythonObject` also conforms to the +[`float()`](/mojo/stdlib/builtin/floatable/float/) built-in functions, construct +an `Int` using the [`Int()`](/mojo/stdlib/builtin/int/Int/#__init__) +constructor, and construct a `String` using the +[`String()`](/mojo/stdlib/collections/string/String/#__init__) constructor. +`PythonObject` also conforms to the [`Writable`](/mojo/stdlib/utils/write/Writable) trait so that you can print Python values using the built-in [`print()`](/mojo/stdlib/builtin/io/print) function. ```mojo -var s: String = str(py_string) +var s: String = String(py_string) var b: Bool = bool(py_bool) var f: Float64 = float(py_float) var i: Int = Int(py_int) diff --git a/docs/manual/traits.mdx b/docs/manual/traits.mdx index a779396a65..c4d62de147 100644 --- a/docs/manual/traits.mdx +++ b/docs/manual/traits.mdx @@ -385,13 +385,11 @@ True ### The `Stringable`, `Representable`, and `Writable` traits The [`Stringable`](/mojo/stdlib/builtin/str/Stringable) trait identifies a type -that can be implicitly converted to +that can be explicitly converted to [`String`](/mojo/stdlib/collections/string/String). The [`StringableRaising`](/mojo/stdlib/builtin/str/StringableRaising) trait describes a type that can be converted to a `String`, but the conversion might -raise an error. Any type that conforms to `Stringable` or `StringableRaising` -also works with the built-in [`str()`](/mojo/stdlib/builtin/str/str) function to -explicitly return a `String`. These traits also mean that the type can support +raise an error. These traits also mean that the type can support both the `{!s}` and `{}` format specifiers of the `String` class's [`format()`](/mojo/stdlib/collections/string/String#format) method. These traits require the type to define the diff --git a/docs/manual/types.mdx b/docs/manual/types.mdx index ee6ddcf586..6f46013f86 100644 --- a/docs/manual/types.mdx +++ b/docs/manual/types.mdx @@ -322,11 +322,23 @@ Testing Mojo strings Most standard library types conform to the [`Stringable`](/mojo/stdlib/builtin/str/Stringable) trait, which represents -a type that can be converted to a string. Use `str(value)` to +a type that can be converted to a string. Use `String(value)` to explicitly convert a value to a string: ```mojo -var s = str("Items in list: ") + str(5) +var s = String("Items in list: ") + String(5) +print(s) +``` + +```output +Items in list: 5 +``` + +Or use `String.write` to take variadic `Stringable` types, so you don't have to +call `String()` on each value: + +```mojo +var s = String.write("Items in list: ", 5) print(s) ``` @@ -362,9 +374,8 @@ Note that the triple double quote form is also used for API documentation strings. Unlike `IntLiteral` and `FloatLiteral`, `StringLiteral` doesn't automatically -materialize to a runtime type. In some cases, you may need to manually convert -`StringLiteral` values to `String` using the built-in -[`str()`](/mojo/stdlib/builtin/str/str) method. +materialize to a runtime type. In some cases, you may need to explicitly convert +`StringLiteral` values to `String`. ```mojo # Variable is type `StringLiteral` @@ -374,7 +385,7 @@ var s1 = "Example" var s2: String = "Example" # Variable is type `String` -var s3 = str("Example") +var s3 = String("Example") ``` ## Booleans @@ -428,7 +439,7 @@ same tuple from the previous example with implicit typing instead of explicit, we must also convert `"Example"` from type `StringLiteral` to type `String`. ```mojo -example_tuple = (1, str("Example")) +example_tuple = (1, String("Example")) s = example_tuple.get[1, String]() print(s) ``` @@ -672,7 +683,7 @@ results in undefined behavior, so you should always guard a call to `value()` inside a conditional that checks whether a value exists. ```mojo -var opt: Optional[String] = str("Testing") +var opt: Optional[String] = String("Testing") if opt: var value_ref = opt.value() print(value_ref) @@ -689,7 +700,7 @@ value if there is one, or a user-specified default value otherwise: var custom_greeting: Optional[String] = None print(custom_greeting.or_else("Hello")) -custom_greeting = str("Hi") +custom_greeting = String("Hi") print(custom_greeting.or_else("Hello")) ``` diff --git a/docs/manual/values/ownership.mdx b/docs/manual/values/ownership.mdx index e8d201e8b6..817f43ef4c 100644 --- a/docs/manual/values/ownership.mdx +++ b/docs/manual/values/ownership.mdx @@ -256,7 +256,7 @@ fn append_twice(mut s: String, other: String): s += other fn invalid_access(): - var my_string = str("o") + var my_string = String("o") # error: passing `my_string` mut is invalid since it is also passed # read. @@ -274,8 +274,8 @@ reference (or need to pass the same value to two arguments) is to make a copy: ```mojo fn valid_access(): - var my_string = str("o") - var other_string = str(my_string) + var my_string = String("o") + var other_string = String(my_string) append_twice(my_string, other_string) print(my_string) ``` diff --git a/docs/roadmap.md b/docs/roadmap.md index 46df347afd..8ffd0fa4f8 100644 --- a/docs/roadmap.md +++ b/docs/roadmap.md @@ -472,5 +472,5 @@ converting string literals to `String` values. For example: ```mojo var h: String = "hello" # or -print(g or str("hello")) +print(g or String("hello")) ``` diff --git a/examples/life/test/test_gridv1.mojo b/examples/life/test/test_gridv1.mojo index bded4cc2f5..19e0d4c8a0 100644 --- a/examples/life/test/test_gridv1.mojo +++ b/examples/life/test/test_gridv1.mojo @@ -44,7 +44,7 @@ def test_gridv1_index(): def test_gridv1_str(): grid = Grid(4, 4, data4x4) - grid_str = str(grid) + grid_str = String(grid) assert_equal(str4x4, grid_str) diff --git a/examples/life/test/test_gridv2.mojo b/examples/life/test/test_gridv2.mojo index 1987272743..cc251a9d6b 100644 --- a/examples/life/test/test_gridv2.mojo +++ b/examples/life/test/test_gridv2.mojo @@ -53,7 +53,7 @@ def test_gridv2_index(): def test_gridv2_str(): grid = grid4x4() - grid_str = str(grid) + grid_str = String(grid) assert_equal(str4x4, grid_str) diff --git a/examples/matmul.mojo b/examples/matmul.mojo index ad81185519..44638daf34 100644 --- a/examples/matmul.mojo +++ b/examples/matmul.mojo @@ -84,7 +84,7 @@ def run_matmul_python() -> Float64: var pymatmul: PythonObject = Python.import_module("pymatmul") var py = Python.import_module("builtins") - var gflops = pymatmul.benchmark_matmul_python(128, 128, 128).to_float64() + var gflops = float(pymatmul.benchmark_matmul_python(128, 128, 128)) py.print(py.str("{:<18}{:>8.3f} GFLOPS").format("Python:", gflops)) return gflops @@ -94,7 +94,7 @@ def run_matmul_numpy() -> Float64: var pymatmul: PythonObject = Python.import_module("pymatmul") var py = Python.import_module("builtins") - var gflops = pymatmul.benchmark_matmul_numpy(M, N, K).to_float64() + var gflops = float(pymatmul.benchmark_matmul_numpy(M, N, K)) py.print(py.str("{:<18}{:>8.3f} GFLOPS").format("Numpy:", gflops)) return gflops diff --git a/examples/operators/main.mojo b/examples/operators/main.mojo index 413b68cd10..1cffa1cbbc 100644 --- a/examples/operators/main.mojo +++ b/examples/operators/main.mojo @@ -24,10 +24,10 @@ def main(): print() - # Examples of using Complex values with str(), repr(), and print() + # Examples of using Complex values with String(), repr(), and print() c3 = Complex(3.14159, -2.71828) print("c3 =", c3) - var msg: String = "The value is: " + str(c3) + var msg: String = "The value is: " + String(c3) print(msg) print(String("{!r}").format(c3)) diff --git a/examples/operators/test_my_complex.mojo b/examples/operators/test_my_complex.mojo index 1e6481aef7..2846f01bea 100644 --- a/examples/operators/test_my_complex.mojo +++ b/examples/operators/test_my_complex.mojo @@ -35,7 +35,7 @@ def test_str(): str1 = "({} + {}i)".format(re1, im1) out_str1 = String() c1 = Complex(re1, im1) - assert_equal(str1, str(c1)) + assert_equal(str1, String(c1)) c1.write_to(out_str1) assert_equal(str1, out_str1) @@ -45,7 +45,7 @@ def test_str(): str2 = "({} - {}i)".format(re2, abs(im2)) out_str2 = String() c2 = Complex(re2, im2) - assert_equal(str2, str(c2)) + assert_equal(str2, String(c2)) c2.write_to(out_str2) assert_equal(str2, out_str2) diff --git a/examples/testing/src/my_math/__init__.mojo b/examples/testing/src/my_math/__init__.mojo index 968532820f..79dd92b79d 100644 --- a/examples/testing/src/my_math/__init__.mojo +++ b/examples/testing/src/my_math/__init__.mojo @@ -43,7 +43,7 @@ try: c = inc(Int.MAX) except e: print(e) -%# assert_equal("inc overflow", str(e)) +%# assert_equal("inc overflow", String(e)) ``` """ diff --git a/examples/testing/src/my_math/utils.mojo b/examples/testing/src/my_math/utils.mojo index 8eb0d42577..000fa023cd 100644 --- a/examples/testing/src/my_math/utils.mojo +++ b/examples/testing/src/my_math/utils.mojo @@ -40,7 +40,7 @@ def inc(n: Int) -> Int: k = inc(Int.MAX) except e: print(e) # inc overflow - %# assert_equal("inc overflow", str(e)) + %# assert_equal("inc overflow", String(e)) ``` Args: @@ -76,7 +76,7 @@ def dec(n: Int) -> Int: k = dec(Int.MIN) except e: print(e) # inc overflow - %# assert_equal("dec overflow", str(e)) + %# assert_equal("dec overflow", String(e)) ``` Args: diff --git a/proposals/improved-hash-module.md b/proposals/improved-hash-module.md index 1e4dd64b13..22643e7a7a 100644 --- a/proposals/improved-hash-module.md +++ b/proposals/improved-hash-module.md @@ -224,7 +224,7 @@ fn _DJBX33A_SECRET() -> UInt64: return bitcast[DType.uint64](Int64(Int(secret_string))) except: var value = random_si64(Int64.MIN, Int64.MAX) - _ = setenv("DJBX33A_SECRET", str(value)) + _ = setenv("DJBX33A_SECRET", String(value)) return bitcast[DType.uint64](value) struct DJBX33A_Hasher[custom_secret: UInt64 = 0](Hasher): diff --git a/stdlib/benchmarks/builtin/bench_int.mojo b/stdlib/benchmarks/builtin/bench_int.mojo index 2d65c690c3..efc4b171a5 100644 --- a/stdlib/benchmarks/builtin/bench_int.mojo +++ b/stdlib/benchmarks/builtin/bench_int.mojo @@ -26,7 +26,7 @@ fn bench_stringify_small_integers(mut b: Bencher) raises: @parameter fn call_fn(): for i in range(1_000): - var a = str(i) + var a = String(i) benchmark.keep(bool(a)) b.iter[call_fn]() diff --git a/stdlib/benchmarks/builtin/bench_sort.mojo b/stdlib/benchmarks/builtin/bench_sort.mojo index 7c70e7ebb6..addf6c200c 100644 --- a/stdlib/benchmarks/builtin/bench_sort.mojo +++ b/stdlib/benchmarks/builtin/bench_sort.mojo @@ -147,13 +147,13 @@ fn bench_tiny_list_sort[type: DType](mut m: Bench) raises: _ = list^ m.bench_function[bench_sort_list]( - BenchId("std_sort_random_" + str(count) + "_" + str(type)) + BenchId("std_sort_random_" + String(count) + "_" + String(type)) ) m.bench_function[bench_small_sort]( - BenchId("sml_sort_random_" + str(count) + "_" + str(type)) + BenchId("sml_sort_random_" + String(count) + "_" + String(type)) ) m.bench_function[bench_insertion_sort]( - BenchId("ins_sort_random_" + str(count) + "_" + str(type)) + BenchId("ins_sort_random_" + String(count) + "_" + String(type)) ) @@ -202,10 +202,10 @@ fn bench_small_list_sort[type: DType](mut m: Bench, count: Int) raises: _ = list^ m.bench_function[bench_sort_list]( - BenchId("std_sort_random_" + str(count) + "_" + str(type)) + BenchId("std_sort_random_" + String(count) + "_" + String(type)) ) m.bench_function[bench_insertion_sort]( - BenchId("ins_sort_random_" + str(count) + "_" + str(type)) + BenchId("ins_sort_random_" + String(count) + "_" + String(type)) ) @@ -254,11 +254,11 @@ fn bench_large_list_sort[type: DType](mut m: Bench, count: Int) raises: _ = list^ m.bench_function[bench_sort_list]( - BenchId("std_sort_random_" + str(count) + "_" + str(type)) + BenchId("std_sort_random_" + String(count) + "_" + String(type)) ) m.bench_function[bench_heap_sort]( - BenchId("heap_sort_random_" + str(count) + "_" + str(type)) + BenchId("heap_sort_random_" + String(count) + "_" + String(type)) ) @@ -307,10 +307,14 @@ fn bench_low_cardinality_list_sort(mut m: Bench, count: Int, delta: Int) raises: _ = list^ m.bench_function[bench_sort_list]( - BenchId("std_sort_low_card_" + str(count) + "_delta_" + str(delta)) + BenchId( + "std_sort_low_card_" + String(count) + "_delta_" + String(delta) + ) ) m.bench_function[bench_heap_sort]( - BenchId("heap_sort_low_card_" + str(count) + "_delta_" + str(delta)) + BenchId( + "heap_sort_low_card_" + String(count) + "_delta_" + String(delta) + ) ) diff --git a/stdlib/benchmarks/collections/bench_dict.mojo b/stdlib/benchmarks/collections/bench_dict.mojo index e5d4ba2e37..3a740b96f9 100644 --- a/stdlib/benchmarks/collections/bench_dict.mojo +++ b/stdlib/benchmarks/collections/bench_dict.mojo @@ -134,10 +134,10 @@ def main(): for i in range(len(sizes)): alias size = sizes[i] m.bench_function[bench_dict_insert[size]]( - BenchId("bench_dict_insert[" + str(size) + "]") + BenchId("bench_dict_insert[" + String(size) + "]") ) m.bench_function[bench_dict_lookup[size]]( - BenchId("bench_dict_lookup[" + str(size) + "]") + BenchId("bench_dict_lookup[" + String(size) + "]") ) m.dump_report() @@ -147,5 +147,9 @@ def main(): alias size = sizes[i] var mem_s = total_bytes_used(make_dict[size]()) print( - '"bench_dict_memory_size[' + str(size) + ']",' + str(mem_s) + ",0" + '"bench_dict_memory_size[' + + String(size) + + ']",' + + String(mem_s) + + ",0" ) diff --git a/stdlib/benchmarks/collections/bench_string.mojo b/stdlib/benchmarks/collections/bench_string.mojo index ee7647989a..bcbf29a0c0 100644 --- a/stdlib/benchmarks/collections/bench_string.mojo +++ b/stdlib/benchmarks/collections/bench_string.mojo @@ -262,7 +262,7 @@ def main(): alias fname = filenames[j] alias old = old_chars[j] alias new = new_chars[j] - suffix = "[" + str(length) + "]" # "(" + fname + ")" + suffix = "[" + String(length) + "]" # "(" + fname + ")" m.bench_function[bench_string_count[length, fname, old]]( BenchId("bench_string_count" + suffix) ) diff --git a/stdlib/benchmarks/hashlib/bench_hash.mojo b/stdlib/benchmarks/hashlib/bench_hash.mojo index 6d2ba54044..0d95cc9afe 100644 --- a/stdlib/benchmarks/hashlib/bench_hash.mojo +++ b/stdlib/benchmarks/hashlib/bench_hash.mojo @@ -586,7 +586,7 @@ fn gen_word_pairs[words: String = words_en]() -> List[String]: try: var list = words.split(",") for w in list: - var w1 = str(w[].strip()) + var w1 = String(w[].strip()) for w in list: var w2 = w[].strip() result.append(w1 + " " + w2) diff --git a/stdlib/docs/development.md b/stdlib/docs/development.md index 024dc87b6c..ef21e6fb81 100644 --- a/stdlib/docs/development.md +++ b/stdlib/docs/development.md @@ -239,7 +239,7 @@ fn get_cwd_and_paths() raises -> List[String]: result = List[String]() result.append(pathlib.get_cwd_message()) for path in cwd().listdir(): - result.append(str(path[])) + result.append(String(path[])) ``` This won't work because it's importing `pathlib` from the `stdlib.mojopkg` that diff --git a/stdlib/docs/style-guide.md b/stdlib/docs/style-guide.md index 82002c152c..e2298d1b66 100644 --- a/stdlib/docs/style-guide.md +++ b/stdlib/docs/style-guide.md @@ -371,7 +371,7 @@ a closure as a parameter that only runs when assertions are enabled: tensor = Tensor[DType.uint8, 1](TensorShape(1), cpu_device()) fn _test_cpu() capturing -> Bool: - return "cpu" in str(tensor._device) + return "cpu" in String(tensor._device) debug_assert[_test_cpu]("This code is only runnable on CPU") ``` diff --git a/stdlib/src/builtin/_location.mojo b/stdlib/src/builtin/_location.mojo index 463cba7b08..410d332e66 100644 --- a/stdlib/src/builtin/_location.mojo +++ b/stdlib/src/builtin/_location.mojo @@ -40,7 +40,7 @@ struct _SourceLocation(Writable, Stringable): Args: msg: The message to attach the prefix to. """ - return "At " + str(self) + ": " + str(msg) + return "At " + String(self) + ": " + String(msg) fn write_to[W: Writer](self, mut writer: W): """ diff --git a/stdlib/src/builtin/bool.mojo b/stdlib/src/builtin/bool.mojo index 213d080e21..3ca5f39680 100644 --- a/stdlib/src/builtin/bool.mojo +++ b/stdlib/src/builtin/bool.mojo @@ -248,7 +248,7 @@ struct Bool( Returns: A string representation. """ - return str(self) + return String(self) @always_inline("nodebug") fn __int__(self) -> Int: diff --git a/stdlib/src/builtin/char.mojo b/stdlib/src/builtin/char.mojo index 261fc2ffeb..51e7769704 100644 --- a/stdlib/src/builtin/char.mojo +++ b/stdlib/src/builtin/char.mojo @@ -254,7 +254,12 @@ struct Char(CollectionElement, EqualityComparable, Intable, Stringable): Returns: A string containing this single character. """ - return String(self) + var char_len = self.utf8_byte_length() + var buffer = List[Byte](capacity=char_len + 1) + _ = self.unsafe_write_utf8(buffer.unsafe_ptr()) + buffer.unsafe_ptr()[char_len] = 0 + buffer.size = char_len + 1 + return String(buffer^) # ===-------------------------------------------------------------------===# # Methods diff --git a/stdlib/src/builtin/debug_assert.mojo b/stdlib/src/builtin/debug_assert.mojo index 52dde896aa..896368dba2 100644 --- a/stdlib/src/builtin/debug_assert.mojo +++ b/stdlib/src/builtin/debug_assert.mojo @@ -113,7 +113,7 @@ fn debug_assert[ ```mojo person = "name: john, age: 50" name = "john" - debug_assert(str("name: ") + name == person, "unexpected name") + debug_assert(String("name: ") + name == person, "unexpected name") ``` This will have a runtime penality due to allocating a `String` in the @@ -122,7 +122,7 @@ fn debug_assert[ ```mojo fn check_name() capturing -> Bool: - return str("name: ") + name == person + return String("name: ") + name == person debug_assert[check_name]("unexpected name") ``` @@ -196,7 +196,7 @@ fn debug_assert[ ```mojo person = "name: john, age: 50" name = "john" - debug_assert(str("name: ") + name == person, "unexpected name") + debug_assert(String("name: ") + name == person, "unexpected name") ``` This will have a runtime penality due to allocating a `String` in the @@ -205,7 +205,7 @@ fn debug_assert[ ```mojo fn check_name() capturing -> Bool: - return str("name: ") + name == person + return String("name: ") + name == person debug_assert[check_name]("unexpected name") ``` diff --git a/stdlib/src/builtin/float_literal.mojo b/stdlib/src/builtin/float_literal.mojo index 6cee98bafa..9ddc2de605 100644 --- a/stdlib/src/builtin/float_literal.mojo +++ b/stdlib/src/builtin/float_literal.mojo @@ -122,7 +122,7 @@ struct FloatLiteral( Returns: A string representation. """ - return str(Float64(self)) + return String(Float64(self)) @always_inline("nodebug") fn __int_literal__(self) -> IntLiteral: diff --git a/stdlib/src/builtin/format_int.mojo b/stdlib/src/builtin/format_int.mojo index 79726e1a99..c54b602d19 100644 --- a/stdlib/src/builtin/format_int.mojo +++ b/stdlib/src/builtin/format_int.mojo @@ -225,7 +225,7 @@ fn _try_format_int( # incompatible radix and custom digit chars, which we aren't doing # above. return abort[String]( - "unexpected exception formatting value as hexadecimal: " + str(e) + "unexpected exception formatting value as hexadecimal: " + String(e) ) diff --git a/stdlib/src/builtin/int.mojo b/stdlib/src/builtin/int.mojo index abc536abb9..662ee68de0 100644 --- a/stdlib/src/builtin/int.mojo +++ b/stdlib/src/builtin/int.mojo @@ -209,7 +209,7 @@ trait ImplicitlyIntable(Intable): # ===----------------------------------------------------------------------=== # -# FIXME(25.1): Move `int` deprecation warnings to a compiler error +# FIXME(25.2): Move `int` deprecation warnings to a compiler error @deprecated( "the `int` function is deprecated, use the `Int` constructor instead." ) @@ -1149,7 +1149,7 @@ struct Int( Returns: A string representation. """ - return str(self) + return String(self) fn __hash__(self) -> UInt: """Hash the int using builtin hash. diff --git a/stdlib/src/builtin/int_literal.mojo b/stdlib/src/builtin/int_literal.mojo index f7b72d9ea0..c114104ea6 100644 --- a/stdlib/src/builtin/int_literal.mojo +++ b/stdlib/src/builtin/int_literal.mojo @@ -701,7 +701,7 @@ struct IntLiteral( Returns: The value as a string. """ - return str(Int(self)) + return String(Int(self)) @always_inline fn __ceildiv__(self, denominator: Self) -> Self: diff --git a/stdlib/src/builtin/object.mojo b/stdlib/src/builtin/object.mojo index a20b4b31c3..94ee27873b 100644 --- a/stdlib/src/builtin/object.mojo +++ b/stdlib/src/builtin/object.mojo @@ -568,18 +568,18 @@ struct _ObjectImpl( writer.write("None") return if self.is_bool(): - writer.write(str(self.get_as_bool())) + writer.write(String(self.get_as_bool())) return if self.is_int(): - writer.write(str(self.get_as_int())) + writer.write(String(self.get_as_int())) return if self.is_float(): - writer.write(str(self.get_as_float())) + writer.write(String(self.get_as_float())) return if self.is_str(): writer.write( "'" - + str( + + String( StringRef( self.get_as_string().data, self.get_as_string().length ) @@ -597,7 +597,7 @@ struct _ObjectImpl( for j in range(self.get_list_length()): if j != 0: writer.write(", ") - writer.write(str(object(self.get_list_element(j)))) + writer.write(String(object(self.get_list_element(j)))) writer.write("]") return @@ -609,9 +609,9 @@ struct _ObjectImpl( writer.write(", ") writer.write( "'" - + str(entry[].key) + + String(entry[].key) + "' = " - + str(object(entry[].value.copy())) + + String(object(entry[].value.copy())) ) print_sep = True writer.write("}") diff --git a/stdlib/src/builtin/repr.mojo b/stdlib/src/builtin/repr.mojo index 5ea538abce..9fd07cdc43 100644 --- a/stdlib/src/builtin/repr.mojo +++ b/stdlib/src/builtin/repr.mojo @@ -50,7 +50,7 @@ trait Representable: This is typically used for debugging, so it is important that the representation is information-rich and unambiguous. Note that when computing the string representation of a collection (`Dict`, `List`, `Set`, etc...), - the `repr` function is called on each element, not the `str()` function. + the `repr` function is called on each element, not the `String()` function. """ fn __repr__(self) -> String: diff --git a/stdlib/src/builtin/str.mojo b/stdlib/src/builtin/str.mojo index 93f1482cf2..f32bf25ee1 100644 --- a/stdlib/src/builtin/str.mojo +++ b/stdlib/src/builtin/str.mojo @@ -28,7 +28,7 @@ trait Stringable: Any type that conforms to `Stringable` or [`StringableRaising`](/mojo/stdlib/builtin/str/StringableRaising) works with the built-in [`print()`](/mojo/stdlib/builtin/io/print) and - [`str()`](/mojo/stdlib/builtin/str/str) functions. + [`String()`](/mojo/stdlib/builtin/str/str) functions. The `Stringable` trait requires the type to define the `__str__()` method. For example: @@ -42,12 +42,12 @@ trait Stringable: return self.s ``` - Now you can pass an instance of `Foo` to the `str()` function to get back a + Now you can pass an instance of `Foo` to the `String()` function to get back a `String`: ```mojo var foo = Foo("test") - print(str(foo) == "test") + print(String(foo) == "test") ``` ```plaintext @@ -83,7 +83,7 @@ trait StringableRaising: [`Stringable`](/mojo/stdlib/builtin/str/Stringable) or `StringableRaising` works with the built-in [`print()`](/mojo/stdlib/builtin/io/print) and - [`str()`](/mojo/stdlib/builtin/str/str) functions. + [`String()`](/mojo/stdlib/builtin/str/str) functions. The `StringableRaising` trait requires the type to define the `__str__()` method, which can raise an error. For example: @@ -99,13 +99,13 @@ trait StringableRaising: return self.s ``` - Now you can pass an instance of `Foo` to the `str()` function to get back a + Now you can pass an instance of `Foo` to the `String()` function to get back a `String`: ```mojo fn main() raises: var foo = Foo("test") - print(str(foo) == "test") + print(String(foo) == "test") ``` ```plaintext @@ -130,6 +130,10 @@ trait StringableRaising: # ===----------------------------------------------------------------------=== # +# FIXME(25.2): Move `str` deprecation warnings to a compiler error +@deprecated( + "the `str` function is deprecated, use the `String` constructor instead." +) @no_inline fn str[T: Stringable](value: T) -> String: """Get the string representation of a value. @@ -146,19 +150,10 @@ fn str[T: Stringable](value: T) -> String: return value.__str__() -@no_inline -fn str(value: None) -> String: - """Get the string representation of the `None` type. - - Args: - value: The object to get the string representation of. - - Returns: - The string representation of the object. - """ - return "None" - - +# FIXME(25.2): Move `str` deprecation warnings to a compiler error +@deprecated( + "the `str` function is deprecated, use the `String` constructor instead." +) @no_inline fn str[T: StringableRaising](value: T) raises -> String: """Get the string representation of a value. diff --git a/stdlib/src/builtin/string_literal.mojo b/stdlib/src/builtin/string_literal.mojo index 72f1207149..deaf26f17f 100644 --- a/stdlib/src/builtin/string_literal.mojo +++ b/stdlib/src/builtin/string_literal.mojo @@ -135,7 +135,7 @@ struct StringLiteral( Returns: The string value as a StringLiteral. """ - return Self._from_string[str(value)]() + return Self._from_string[String(value)]() # ===-------------------------------------------------------------------===# # Operator dunders @@ -470,7 +470,7 @@ struct StringLiteral( Returns: A new string containing the character at the specified position. """ - return str(self)[idx] + return String(self)[idx] # ===-------------------------------------------------------------------===# # Methods @@ -648,7 +648,7 @@ struct StringLiteral( Returns: The joined string. """ - return str(self).join(elems) + return String(self).join(elems) fn join(self, *elems: Int) -> String: """Joins the elements from the tuple using the current string literal as a @@ -662,9 +662,9 @@ struct StringLiteral( """ if len(elems) == 0: return "" - var curr = str(elems[0]) + var curr = String(elems[0]) for i in range(1, len(elems)): - curr += self + str(elems[i]) + curr += self + String(elems[i]) return curr fn join[*Types: Stringable](self, *elems: *Types) -> String: @@ -689,7 +689,7 @@ struct StringLiteral( is_first = False else: result += self - result += str(a) + result += String(a) elems.each[add_elt]() return result @@ -717,7 +717,7 @@ struct StringLiteral( ``` . """ - return str(self).split(sep, maxsplit) + return String(self).split(sep, maxsplit) fn split(self, sep: NoneType = None, maxsplit: Int = -1) -> List[String]: """Split the string literal by every whitespace separator. @@ -745,7 +745,7 @@ struct StringLiteral( ``` . """ - return str(self).split(sep, maxsplit) + return String(self).split(sep, maxsplit) fn splitlines(self, keepends: Bool = False) -> List[String]: """Split the string literal at line boundaries. This corresponds to Python's @@ -774,7 +774,7 @@ struct StringLiteral( Returns: The number of occurrences of `substr`. """ - return str(self).count(substr) + return String(self).count(substr) fn lower(self) -> String: """Returns a copy of the string literal with all cased characters @@ -784,7 +784,7 @@ struct StringLiteral( A new string where cased letters have been converted to lowercase. """ - return str(self).lower() + return String(self).lower() fn upper(self) -> String: """Returns a copy of the string literal with all cased characters @@ -794,7 +794,7 @@ struct StringLiteral( A new string where cased letters have been converted to uppercase. """ - return str(self).upper() + return String(self).upper() fn rjust(self, width: Int, fillchar: StringLiteral = " ") -> String: """Returns the string right justified in a string literal of specified width. @@ -806,7 +806,7 @@ struct StringLiteral( Returns: Returns right justified string, or self if width is not bigger than self length. """ - return str(self).rjust(width, fillchar) + return String(self).rjust(width, fillchar) fn ljust(self, width: Int, fillchar: StringLiteral = " ") -> String: """Returns the string left justified in a string literal of specified width. @@ -818,7 +818,7 @@ struct StringLiteral( Returns: Returns left justified string, or self if width is not bigger than self length. """ - return str(self).ljust(width, fillchar) + return String(self).ljust(width, fillchar) fn center(self, width: Int, fillchar: StringLiteral = " ") -> String: """Returns the string center justified in a string literal of specified width. @@ -830,7 +830,7 @@ struct StringLiteral( Returns: Returns center justified string, or self if width is not bigger than self length. """ - return str(self).center(width, fillchar) + return String(self).center(width, fillchar) fn startswith( self, prefix: StringSlice, start: Int = 0, end: Int = -1 @@ -872,7 +872,7 @@ struct StringLiteral( Returns: True if all characters are digits else False. """ - return str(self).isdigit() + return String(self).isdigit() fn isupper(self) -> Bool: """Returns True if all cased characters in the string literal are @@ -884,7 +884,7 @@ struct StringLiteral( True if all cased characters in the string literal are uppercase and there is at least one cased character, False otherwise. """ - return str(self).isupper() + return String(self).isupper() fn islower(self) -> Bool: """Returns True if all cased characters in the string literal @@ -896,7 +896,7 @@ struct StringLiteral( True if all cased characters in the string literal are lowercase and there is at least one cased character, False otherwise. """ - return str(self).islower() + return String(self).islower() fn strip(self) -> String: """Return a copy of the string literal with leading and trailing @@ -930,7 +930,7 @@ struct StringLiteral( Returns: A string with no trailing characters. """ - return String(str(self).rstrip(chars)) + return String(String(self).rstrip(chars)) fn rstrip(self) -> String: """Return a copy of the string with trailing whitespaces removed. This @@ -961,4 +961,4 @@ struct StringLiteral( Returns: A copy of the string with no leading whitespaces. """ - return String(str(self).lstrip()) + return String(String(self).lstrip()) diff --git a/stdlib/src/builtin/uint.mojo b/stdlib/src/builtin/uint.mojo index 7067e94d68..81c04d48e9 100644 --- a/stdlib/src/builtin/uint.mojo +++ b/stdlib/src/builtin/uint.mojo @@ -121,7 +121,7 @@ struct UInt(Indexer, _HashableWithHasher): ```mojo %# from testing import assert_equal x = UInt(50) - assert_equal(str(x), "50") + assert_equal(String(x), "50") ``` Returns: @@ -164,7 +164,7 @@ struct UInt(Indexer, _HashableWithHasher): Returns: The string representation of this UInt. """ - return String.write("UInt(", str(self), ")") + return String.write("UInt(", String(self), ")") fn __hash__(self) -> UInt: """Hash the UInt using builtin hash. diff --git a/stdlib/src/collections/deque.mojo b/stdlib/src/collections/deque.mojo index f55c345f79..a0b8bfa587 100644 --- a/stdlib/src/collections/deque.mojo +++ b/stdlib/src/collections/deque.mojo @@ -444,7 +444,7 @@ struct Deque[ElementType: CollectionElement]( print(my_deque.__str__()) ``` - When the compiler supports conditional methods, then a simple `str(my_deque)` will + When the compiler supports conditional methods, then a simple `String(my_deque)` will be enough. The elements' type must implement the `__repr__()` method for this to work. diff --git a/stdlib/src/collections/dict.mojo b/stdlib/src/collections/dict.mojo index 27b7f42a3f..f593677437 100644 --- a/stdlib/src/collections/dict.mojo +++ b/stdlib/src/collections/dict.mojo @@ -712,7 +712,7 @@ struct Dict[K: KeyElement, V: CollectionElement]( # prints "{1: 1.1, 2: 2.2}" ``` - When the compiler supports conditional methods, then a simple `str(my_dict)` will + When the compiler supports conditional methods, then a simple `String(my_dict)` will be enough. Note that both they keys and values' types must implement the `__repr__()` method @@ -748,11 +748,11 @@ struct Dict[K: KeyElement, V: CollectionElement]( fn _minimum_size_of_string_representation(self) -> Int: # we do a rough estimation of the minimum number of chars that we'll see - # in the string representation, we assume that str(key) and str(value) + # in the string representation, we assume that String(key) and String(value) # will be both at least one char. return ( 2 # '{' and '}' - + len(self) * 6 # str(key), str(value) ": " and ", " + + len(self) * 6 # String(key), String(value) ": " and ", " - 2 # remove the last ", " ) diff --git a/stdlib/src/collections/list.mojo b/stdlib/src/collections/list.mojo index cc688f34af..aedb0f4612 100644 --- a/stdlib/src/collections/list.mojo +++ b/stdlib/src/collections/list.mojo @@ -401,7 +401,7 @@ struct List[T: CollectionElement, hint_trivial_type: Bool = False]( print(my_list.__str__()) ``` - When the compiler supports conditional methods, then a simple `str(my_list)` will + When the compiler supports conditional methods, then a simple `String(my_list)` will be enough. The elements' type must implement the `__repr__()` method for this to work. diff --git a/stdlib/src/collections/string/format.mojo b/stdlib/src/collections/string/format.mojo index 1cd5cd968e..425dfba341 100644 --- a/stdlib/src/collections/string/format.mojo +++ b/stdlib/src/collections/string/format.mojo @@ -248,7 +248,7 @@ struct _FormatCurlyEntry(CollectionElement, CollectionElementNew): elif manual_indexing_count and automatic_indexing_count: raise Error("Cannot both use manual and automatic indexing") elif raised_manual_index: - var val = str(raised_manual_index.value()) + var val = String(raised_manual_index.value()) raise Error("Index " + val + " not in *args") elif start: raise Error(l_err) @@ -326,11 +326,11 @@ struct _FormatCurlyEntry(CollectionElement, CollectionElementNew): manual_indexing_count += 1 except e: alias unexp = "Not the expected error from atol" - debug_assert("not convertible to integer" in str(e), unexp) + debug_assert("not convertible to integer" in String(e), unexp) # field is a keyword for **kwargs: # TODO: add support for "My name is {person.name}".format(person=Person(name="Fred")) # TODO: add support for "My name is {person[name]}".format(person={"name": "Fred"}) - var f = str(field) + var f = String(field) self.field = f raised_kwarg_field = f return True @@ -362,16 +362,16 @@ struct _FormatCurlyEntry(CollectionElement, CollectionElementNew): var data: String if empty and type_impls_write_str: - data = str(args[i]) # TODO: use writer and return + data = String(args[i]) # TODO: use writer and return elif empty and type_impls_str: - data = str(args[i]) + data = String(args[i]) elif flag == `s` and type_impls_write_str: if empty: # TODO: use writer and return pass - data = str(args[i]) + data = String(args[i]) elif flag == `s` and type_impls_str: - data = str(args[i]) + data = String(args[i]) elif flag == `r` and type_impls_write_repr: if empty: # TODO: use writer and return @@ -387,7 +387,9 @@ struct _FormatCurlyEntry(CollectionElement, CollectionElementNew): alias does_not = " does not implement the trait " alias needed = "needed for conversion_flag: " var flg = String(List[UInt8](flag, 0)) - raise Error(argnum + str(i) + does_not + needed + flg) + raise Error( + argnum + String(i) + does_not + needed + flg + ) if self.format_spec: self.format_spec.value().format( @@ -586,7 +588,7 @@ struct _FormatSpec: large as needed to represent the given value faithfully.\ For Decimal, this is the same as either 'g' or 'G' depending on the value\ of context.capitals for the current decimal context.\ - The overall effect is to match the output of str() as altered by the other\ + The overall effect is to match the output of String() as altered by the other\ format modifiers.| """ @@ -699,7 +701,7 @@ struct _FormatSpec: # TODO: transform to int/float depending on format spec # TODO: send to float/int 's __format__ method # their methods should stringify as hex/bin/oct etc. - res += str(item) + res += String(item) # ===-----------------------------------------------------------------------===# diff --git a/stdlib/src/collections/string/inline_string.mojo b/stdlib/src/collections/string/inline_string.mojo index 6cb7203e6d..bfb77bab50 100644 --- a/stdlib/src/collections/string/inline_string.mojo +++ b/stdlib/src/collections/string/inline_string.mojo @@ -122,7 +122,7 @@ struct InlineString(Sized, Stringable, CollectionElement, CollectionElementNew): except e: abort( "unreachable: InlineString append to FixedString failed: " - + str(e), + + String(e), ) else: # We're currently in the small layout but must change to the @@ -197,7 +197,7 @@ struct InlineString(Sized, Stringable, CollectionElement, CollectionElementNew): The string representation of the type. """ if self._is_small(): - return str(self._storage[_FixedString[Self.SMALL_CAP]]) + return String(self._storage[_FixedString[Self.SMALL_CAP]]) else: return self._storage[String] @@ -303,9 +303,9 @@ struct _FixedString[CAP: Int]( if len(literal) > CAP: raise Error( "String literal (len=" - + str(len(literal)) + + String(len(literal)) + ") is longer than FixedString capacity (" - + str(CAP) + + String(CAP) + ")" ) @@ -385,11 +385,11 @@ struct _FixedString[CAP: Int]( return Optional( Error( "Insufficient capacity to append len=" - + str(len(bytes)) + + String(len(bytes)) + " string to len=" - + str(len(self)) + + String(len(self)) + " FixedString with capacity=" - + str(CAP), + + String(CAP), ) ) diff --git a/stdlib/src/collections/string/string.mojo b/stdlib/src/collections/string/string.mojo index db6afcb928..5293633eb6 100644 --- a/stdlib/src/collections/string/string.mojo +++ b/stdlib/src/collections/string/string.mojo @@ -255,7 +255,7 @@ fn atol(str_slice: StringSlice, base: Int = 10) raises -> Int: real_base = base if real_base <= 10: - ord_num_max = ord(str(real_base - 1)) + ord_num_max = ord(String(real_base - 1)) else: ord_num_max = ord("9") ord_letter_max = ( @@ -374,9 +374,9 @@ fn _handle_base_prefix( fn _str_to_base_error(base: Int, str_slice: StringSlice) -> String: return ( "String is not convertible to integer with base " - + str(base) + + String(base) + ": '" - + str(str_slice) + + String(str_slice) + "'" ) @@ -416,7 +416,9 @@ fn _identify_base(str_slice: StringSlice, start: Int) -> Tuple[Int, Int]: fn _atof_error(str_ref: StringSlice) -> Error: - return Error("String is not convertible to float: '" + str(str_ref) + "'") + return Error( + "String is not convertible to float: '" + String(str_ref) + "'" + ) fn atof(str_slice: StringSlice) raises -> Float64: @@ -577,6 +579,42 @@ struct String( """Construct an uninitialized string.""" self._buffer = Self._buffer_type() + @no_inline + fn __init__[T: Stringable](out self, value: T): + """Initialize from a type conforming to `Stringable`. + + Parameters: + T: The type conforming to Stringable. + + Args: + value: The object to get the string representation of. + """ + self = value.__str__() + + @no_inline + fn __init__[T: StringableRaising](out self, value: T) raises: + """Initialize from a type conforming to `StringableRaising`. + + Parameters: + T: The type conforming to Stringable. + + Args: + value: The object to get the string representation of. + + Raises: + If there is an error when computing the string representation of the type. + """ + self = value.__str__() + + @no_inline + fn __init__(out self, value: None): + """Initialize a `None` type as "None". + + Args: + value: The object to get the string representation of. + """ + self = "None" + @always_inline fn __init__(out self, *, capacity: Int): """Construct an uninitialized string with the given capacity. @@ -618,53 +656,6 @@ struct String( """ return self # Just use the implicit copyinit. - fn __init__(out self, char: Char): - """Construct a string from a character. - - Args: - char: The character to construct this string from. - - Notes: - This will allocate a new string holding the UTF-8 encoded - representation of `char`. - """ - var char_len = char.utf8_byte_length() - var buffer = List[Byte](capacity=char_len + 1) - _ = char.unsafe_write_utf8(buffer.unsafe_ptr()) - buffer.unsafe_ptr()[char_len] = 0 - buffer.size = char_len + 1 - self = String(buffer^) - - fn __init__(out self, strref: StringRef): - """Construct a string from a StringRef object. - - Args: - strref: The StringRef from which to construct this string object. - """ - var length = len(strref) - var buffer = Self._buffer_type() - # +1 for null terminator, initialized to 0 - buffer.resize(length + 1, 0) - memcpy(dest=buffer.data, src=strref.data, count=length) - self = Self(buffer^) - - fn __init__(out self, str_slice: StringSlice): - """Construct a string from a string slice. - - Args: - str_slice: The string slice from which to construct this string. - - Notes: - This will allocate a new string that copies the string contents from - the provided string slice. - """ - - var length = str_slice.byte_length() - var ptr = UnsafePointer[Byte].alloc(length + 1) # null terminator - memcpy(ptr, str_slice.unsafe_ptr(), length) - ptr[length] = 0 - self = String(ptr=ptr, length=length + 1) - @always_inline @implicit fn __init__(out self, literal: StringLiteral): @@ -1145,9 +1136,9 @@ struct String( """ if len(elems) == 0: return "" - var curr = str(elems[0]) + var curr = String(elems[0]) for i in range(1, len(elems)): - curr += self + str(elems[i]) + curr += self + String(elems[i]) return curr fn join[*Types: Writable](self, *elems: *Types) -> String: @@ -1210,7 +1201,7 @@ struct String( is_first = False else: result += self - result += str(e[]) + result += String(e[]) return result diff --git a/stdlib/src/collections/string/string_slice.mojo b/stdlib/src/collections/string/string_slice.mojo index 4104962de4..0e012d6c66 100644 --- a/stdlib/src/collections/string/string_slice.mojo +++ b/stdlib/src/collections/string/string_slice.mojo @@ -496,12 +496,20 @@ struct StringSlice[mut: Bool, //, origin: Origin[mut]]( @no_inline fn __str__(self) -> String: - """Gets this slice as a standard `String`. + """Convert this StringSlice to a String. Returns: - The string representation of the slice. + A new String. + + Notes: + This will allocate a new string that copies the string contents from + the provided string slice. """ - return String(str_slice=self) + var length = self.byte_length() + var ptr = UnsafePointer[Byte].alloc(length + 1) # null terminator + memcpy(ptr, self.unsafe_ptr(), length) + ptr[length] = 0 + return String(ptr=ptr, length=length + 1) fn __repr__(self) -> String: """Return a Mojo-compatible representation of this string slice. @@ -582,7 +590,7 @@ struct StringSlice[mut: Bool, //, origin: Origin[mut]]( Returns: The file system path representation as a string. """ - return String(self) + return self.__str__() # ===------------------------------------------------------------------===# # Operator dunders diff --git a/stdlib/src/memory/pointer.mojo b/stdlib/src/memory/pointer.mojo index 1cd5f70dc4..54f60a1330 100644 --- a/stdlib/src/memory/pointer.mojo +++ b/stdlib/src/memory/pointer.mojo @@ -417,4 +417,4 @@ struct Pointer[ Returns: The string representation of the Pointer. """ - return str(UnsafePointer.address_of(self[])) + return String(UnsafePointer.address_of(self[])) diff --git a/stdlib/src/memory/unsafe_pointer.mojo b/stdlib/src/memory/unsafe_pointer.mojo index c2aefe847e..d2c19e8fb1 100644 --- a/stdlib/src/memory/unsafe_pointer.mojo +++ b/stdlib/src/memory/unsafe_pointer.mojo @@ -442,7 +442,7 @@ struct UnsafePointer[ """ # TODO: Avoid intermediate String allocation. - writer.write(str(self)) + writer.write(String(self)) # ===-------------------------------------------------------------------===# # Methods diff --git a/stdlib/src/os/_linux_aarch64.mojo b/stdlib/src/os/_linux_aarch64.mojo index f6184d56ab..2eaba1b631 100644 --- a/stdlib/src/os/_linux_aarch64.mojo +++ b/stdlib/src/os/_linux_aarch64.mojo @@ -70,20 +70,20 @@ struct _c_stat(Stringable): @no_inline fn __str__(self) -> String: var res = String("{\n") - res += "st_dev: " + str(self.st_dev) + ",\n" - res += "st_mode: " + str(self.st_mode) + ",\n" - res += "st_nlink: " + str(self.st_nlink) + ",\n" - res += "st_ino: " + str(self.st_ino) + ",\n" - res += "st_uid: " + str(self.st_uid) + ",\n" - res += "st_gid: " + str(self.st_gid) + ",\n" - res += "st_rdev: " + str(self.st_rdev) + ",\n" - res += "st_size: " + str(self.st_size) + ",\n" - res += "st_blksize: " + str(self.st_blksize) + ",\n" - res += "st_blocks: " + str(self.st_blocks) + ",\n" - res += "st_atimespec: " + str(self.st_atimespec) + ",\n" - res += "st_mtimespec: " + str(self.st_mtimespec) + ",\n" - res += "st_ctimespec: " + str(self.st_ctimespec) + ",\n" - res += "st_birthtimespec: " + str(self.st_birthtimespec) + "\n" + res += "st_dev: " + String(self.st_dev) + ",\n" + res += "st_mode: " + String(self.st_mode) + ",\n" + res += "st_nlink: " + String(self.st_nlink) + ",\n" + res += "st_ino: " + String(self.st_ino) + ",\n" + res += "st_uid: " + String(self.st_uid) + ",\n" + res += "st_gid: " + String(self.st_gid) + ",\n" + res += "st_rdev: " + String(self.st_rdev) + ",\n" + res += "st_size: " + String(self.st_size) + ",\n" + res += "st_blksize: " + String(self.st_blksize) + ",\n" + res += "st_blocks: " + String(self.st_blocks) + ",\n" + res += "st_atimespec: " + String(self.st_atimespec) + ",\n" + res += "st_mtimespec: " + String(self.st_mtimespec) + ",\n" + res += "st_ctimespec: " + String(self.st_ctimespec) + ",\n" + res += "st_birthtimespec: " + String(self.st_birthtimespec) + "\n" return res + "}" fn _to_stat_result(self) -> stat_result: diff --git a/stdlib/src/os/_linux_x86.mojo b/stdlib/src/os/_linux_x86.mojo index 76c1816e81..fbd5629f48 100644 --- a/stdlib/src/os/_linux_x86.mojo +++ b/stdlib/src/os/_linux_x86.mojo @@ -68,20 +68,20 @@ struct _c_stat(Stringable): @no_inline fn __str__(self) -> String: var res = String("{\n") - res += "st_dev: " + str(self.st_dev) + ",\n" - res += "st_mode: " + str(self.st_mode) + ",\n" - res += "st_nlink: " + str(self.st_nlink) + ",\n" - res += "st_ino: " + str(self.st_ino) + ",\n" - res += "st_uid: " + str(self.st_uid) + ",\n" - res += "st_gid: " + str(self.st_gid) + ",\n" - res += "st_rdev: " + str(self.st_rdev) + ",\n" - res += "st_size: " + str(self.st_size) + ",\n" - res += "st_blksize: " + str(self.st_blksize) + ",\n" - res += "st_blocks: " + str(self.st_blocks) + ",\n" - res += "st_atimespec: " + str(self.st_atimespec) + ",\n" - res += "st_mtimespec: " + str(self.st_mtimespec) + ",\n" - res += "st_ctimespec: " + str(self.st_ctimespec) + ",\n" - res += "st_birthtimespec: " + str(self.st_birthtimespec) + "\n" + res += "st_dev: " + String(self.st_dev) + ",\n" + res += "st_mode: " + String(self.st_mode) + ",\n" + res += "st_nlink: " + String(self.st_nlink) + ",\n" + res += "st_ino: " + String(self.st_ino) + ",\n" + res += "st_uid: " + String(self.st_uid) + ",\n" + res += "st_gid: " + String(self.st_gid) + ",\n" + res += "st_rdev: " + String(self.st_rdev) + ",\n" + res += "st_size: " + String(self.st_size) + ",\n" + res += "st_blksize: " + String(self.st_blksize) + ",\n" + res += "st_blocks: " + String(self.st_blocks) + ",\n" + res += "st_atimespec: " + String(self.st_atimespec) + ",\n" + res += "st_mtimespec: " + String(self.st_mtimespec) + ",\n" + res += "st_ctimespec: " + String(self.st_ctimespec) + ",\n" + res += "st_birthtimespec: " + String(self.st_birthtimespec) + "\n" return res + "}" fn _to_stat_result(self) -> stat_result: diff --git a/stdlib/src/os/_macos.mojo b/stdlib/src/os/_macos.mojo index b23a5f713d..596fb6e459 100644 --- a/stdlib/src/os/_macos.mojo +++ b/stdlib/src/os/_macos.mojo @@ -73,22 +73,22 @@ struct _c_stat(Stringable): @no_inline fn __str__(self) -> String: var res = String("{\n") - res += "st_dev: " + str(self.st_dev) + ",\n" - res += "st_mode: " + str(self.st_mode) + ",\n" - res += "st_nlink: " + str(self.st_nlink) + ",\n" - res += "st_ino: " + str(self.st_ino) + ",\n" - res += "st_uid: " + str(self.st_uid) + ",\n" - res += "st_gid: " + str(self.st_gid) + ",\n" - res += "st_rdev: " + str(self.st_rdev) + ",\n" - res += "st_atimespec: " + str(self.st_atimespec) + ",\n" - res += "st_mtimespec: " + str(self.st_mtimespec) + ",\n" - res += "st_ctimespec: " + str(self.st_ctimespec) + ",\n" - res += "st_birthtimespec: " + str(self.st_birthtimespec) + ",\n" - res += "st_size: " + str(self.st_size) + ",\n" - res += "st_blocks: " + str(self.st_blocks) + ",\n" - res += "st_blksize: " + str(self.st_blksize) + ",\n" - res += "st_flags: " + str(self.st_flags) + ",\n" - res += "st_gen: " + str(self.st_gen) + "\n" + res += "st_dev: " + String(self.st_dev) + ",\n" + res += "st_mode: " + String(self.st_mode) + ",\n" + res += "st_nlink: " + String(self.st_nlink) + ",\n" + res += "st_ino: " + String(self.st_ino) + ",\n" + res += "st_uid: " + String(self.st_uid) + ",\n" + res += "st_gid: " + String(self.st_gid) + ",\n" + res += "st_rdev: " + String(self.st_rdev) + ",\n" + res += "st_atimespec: " + String(self.st_atimespec) + ",\n" + res += "st_mtimespec: " + String(self.st_mtimespec) + ",\n" + res += "st_ctimespec: " + String(self.st_ctimespec) + ",\n" + res += "st_birthtimespec: " + String(self.st_birthtimespec) + ",\n" + res += "st_size: " + String(self.st_size) + ",\n" + res += "st_blocks: " + String(self.st_blocks) + ",\n" + res += "st_blksize: " + String(self.st_blksize) + ",\n" + res += "st_flags: " + String(self.st_flags) + ",\n" + res += "st_gen: " + String(self.st_gen) + "\n" return res + "}" fn _to_stat_result(self) -> stat_result: diff --git a/stdlib/src/os/fstat.mojo b/stdlib/src/os/fstat.mojo index 83e493bc7a..fb683155da 100644 --- a/stdlib/src/os/fstat.mojo +++ b/stdlib/src/os/fstat.mojo @@ -169,10 +169,10 @@ struct stat_result(Stringable, Writable): writer.write(", st_uid=", self.st_uid) writer.write(", st_gid=", self.st_gid) writer.write(", st_size=", self.st_size) - writer.write(", st_atime=", str(self.st_atimespec)) - writer.write(", st_mtime=", str(self.st_mtimespec)) - writer.write(", st_ctime=", str(self.st_ctimespec)) - writer.write(", st_birthtime=", str(self.st_birthtimespec)) + writer.write(", st_atime=", String(self.st_atimespec)) + writer.write(", st_mtime=", String(self.st_mtimespec)) + writer.write(", st_ctime=", String(self.st_ctimespec)) + writer.write(", st_birthtime=", String(self.st_birthtimespec)) writer.write(", st_blocks=", self.st_blocks) writer.write(", st_blksize=", self.st_blksize) writer.write(", st_rdev=", self.st_rdev) @@ -194,7 +194,7 @@ struct stat_result(Stringable, Writable): Returns: A representation of stat_result. """ - return str(self) + return String(self) # ===----------------------------------------------------------------------=== # diff --git a/stdlib/src/os/os.mojo b/stdlib/src/os/os.mojo index cf44c53814..350a660db6 100644 --- a/stdlib/src/os/os.mojo +++ b/stdlib/src/os/os.mojo @@ -367,11 +367,11 @@ def makedirs[ mkdir(path, mode) except e: if not exist_ok: - raise str( + raise String( e ) + "\nset `makedirs(path, exist_ok=True)` to allow existing dirs" if not os.path.isdir(path): - raise "path not created: " + path.__fspath__() + "\n" + str(e) + raise "path not created: " + path.__fspath__() + "\n" + String(e) fn rmdir[PathLike: os.PathLike](path: PathLike) raises: diff --git a/stdlib/src/os/path/path.mojo b/stdlib/src/os/path/path.mojo index 60ea06e96b..139e77d681 100644 --- a/stdlib/src/os/path/path.mojo +++ b/stdlib/src/os/path/path.mojo @@ -367,8 +367,8 @@ def split[PathLike: os.PathLike, //](path: PathLike) -> (String, String): fspath = path.__fspath__() i = fspath.rfind(os.sep) + 1 head, tail = fspath[:i], fspath[i:] - if head and head != str(os.sep) * len(head): - head = str(head.rstrip(sep)) + if head and head != String(os.sep) * len(head): + head = String(head.rstrip(sep)) return head, tail diff --git a/stdlib/src/pathlib/path.mojo b/stdlib/src/pathlib/path.mojo index 4cfbf1357a..cec42c48b3 100644 --- a/stdlib/src/pathlib/path.mojo +++ b/stdlib/src/pathlib/path.mojo @@ -61,8 +61,8 @@ fn _dir_of_current_file() raises -> Path: @no_inline fn _dir_of_current_file_impl(file_name: StringLiteral) raises -> Path: - var i = str(file_name).rfind(DIR_SEPARATOR) - return Path(str(file_name)[0:i]) + var i = String(file_name).rfind(DIR_SEPARATOR) + return Path(String(file_name)[0:i]) @value @@ -184,7 +184,7 @@ struct Path( Returns: A string representation of the path. """ - return str(self) + return String(self) fn __repr__(self) -> String: """Returns a printable representation of the path. @@ -192,7 +192,7 @@ struct Path( Returns: A printable representation of the path. """ - return str(self) + return String(self) fn __eq__(self, other: Self) -> Bool: """Returns True if the two paths are equal. @@ -203,7 +203,7 @@ struct Path( Returns: True if the paths are equal and False otherwise. """ - return str(self) == str(other) + return String(self) == String(other) fn __eq__(self, other: StringSlice) -> Bool: """Returns True if the two paths are equal. @@ -340,7 +340,7 @@ struct Path( value: The value to write. """ with open(self, "w") as f: - f.write(str(value)) + f.write(String(value)) fn suffix(self) -> String: """The path's extension, if any. diff --git a/stdlib/src/pwd/_linux.mojo b/stdlib/src/pwd/_linux.mojo index 3f1d3b4460..877cebd05b 100644 --- a/stdlib/src/pwd/_linux.mojo +++ b/stdlib/src/pwd/_linux.mojo @@ -10,9 +10,9 @@ # See the License for the specific language governing permissions and # limitations under the License. # ===----------------------------------------------------------------------=== # -from sys.ffi import c_char, external_call - from memory import UnsafePointer +from utils import StringRef +from sys.ffi import c_char, external_call from .pwd import Passwd @@ -35,20 +35,20 @@ struct _C_Passwd: fn _build_pw_struct(passwd_ptr: UnsafePointer[_C_Passwd]) raises -> Passwd: var c_pwuid = passwd_ptr[] return Passwd( - pw_name=String(c_pwuid.pw_name), - pw_passwd=String(c_pwuid.pw_passwd), + pw_name=String(StringRef(c_pwuid.pw_name)), + pw_passwd=String(StringRef(c_pwuid.pw_passwd)), pw_uid=Int(c_pwuid.pw_uid), pw_gid=Int(c_pwuid.pw_gid), - pw_gecos=String(c_pwuid.pw_gecos), - pw_dir=String(c_pwuid.pw_dir), - pw_shell=String(c_pwuid.pw_shell), + pw_gecos=String(StringRef(c_pwuid.pw_gecos)), + pw_dir=String(StringRef(c_pwuid.pw_dir)), + pw_shell=String(StringRef(c_pwuid.pw_shell)), ) fn _getpw_linux(uid: UInt32) raises -> Passwd: var passwd_ptr = external_call["getpwuid", UnsafePointer[_C_Passwd]](uid) if not passwd_ptr: - raise "user ID not found in the password database: " + str(uid) + raise "user ID not found in the password database: " + String(uid) return _build_pw_struct(passwd_ptr) diff --git a/stdlib/src/pwd/_macos.mojo b/stdlib/src/pwd/_macos.mojo index 348a4b1377..7aa51eeeb2 100644 --- a/stdlib/src/pwd/_macos.mojo +++ b/stdlib/src/pwd/_macos.mojo @@ -10,9 +10,9 @@ # See the License for the specific language governing permissions and # limitations under the License. # ===----------------------------------------------------------------------=== # -from sys.ffi import c_char, external_call - +from utils import StringRef from memory import UnsafePointer +from sys.ffi import c_char, external_call from .pwd import Passwd @@ -39,13 +39,13 @@ struct _C_Passwd: fn _build_pw_struct(passwd_ptr: UnsafePointer[_C_Passwd]) raises -> Passwd: var c_pwuid = passwd_ptr[] var passwd = Passwd( - pw_name=String(c_pwuid.pw_name), - pw_passwd=String(c_pwuid.pw_passwd), + pw_name=String(StringRef(c_pwuid.pw_name)), + pw_passwd=String(StringRef(c_pwuid.pw_passwd)), pw_uid=Int(c_pwuid.pw_uid), pw_gid=Int(c_pwuid.pw_gid), - pw_gecos=String(c_pwuid.pw_gecos), - pw_dir=String(c_pwuid.pw_dir), - pw_shell=String(c_pwuid.pw_shell), + pw_gecos=String(StringRef(c_pwuid.pw_gecos)), + pw_dir=String(StringRef(c_pwuid.pw_dir)), + pw_shell=String(StringRef(c_pwuid.pw_shell)), ) return passwd @@ -53,7 +53,7 @@ fn _build_pw_struct(passwd_ptr: UnsafePointer[_C_Passwd]) raises -> Passwd: fn _getpw_macos(uid: UInt32) raises -> Passwd: var passwd_ptr = external_call["getpwuid", UnsafePointer[_C_Passwd]](uid) if not passwd_ptr: - raise "user ID not found in the password database: " + str(uid) + raise "user ID not found in the password database: " + String(uid) return _build_pw_struct(passwd_ptr) diff --git a/stdlib/src/python/_cpython.mojo b/stdlib/src/python/_cpython.mojo index e247533f6f..52b7d58343 100644 --- a/stdlib/src/python/_cpython.mojo +++ b/stdlib/src/python/_cpython.mojo @@ -486,7 +486,7 @@ struct PyObject(Stringable, Representable, Writable): Returns: A string representation. """ - return str(self) + return String(self) # ===-------------------------------------------------------------------===# # Methods @@ -574,7 +574,7 @@ struct PyModuleDef_Base(Stringable, Representable, Writable): Returns: A string representation. """ - return str(self) + return String(self) # ===-------------------------------------------------------------------===# # Methods @@ -694,7 +694,7 @@ struct PyModuleDef(Stringable, Representable, Writable): Returns: A string representation. """ - return str(self) + return String(self) # ===-------------------------------------------------------------------===# # Methods diff --git a/stdlib/src/python/python.mojo b/stdlib/src/python/python.mojo index ca1ccab3ab..e5c774c2e5 100644 --- a/stdlib/src/python/python.mojo +++ b/stdlib/src/python/python.mojo @@ -412,7 +412,7 @@ struct Python: "invalid unchecked conversion of Python error to Mojo error", ) - var error: Error = str(PythonObject(cpython.PyErr_Fetch())) + var error: Error = String(PythonObject(cpython.PyErr_Fetch())) cpython.PyErr_Clear() return error diff --git a/stdlib/src/python/python_object.mojo b/stdlib/src/python/python_object.mojo index e247ec033b..ccd039679b 100644 --- a/stdlib/src/python/python_object.mojo +++ b/stdlib/src/python/python_object.mojo @@ -1531,7 +1531,7 @@ struct PythonObject( """ # TODO: Avoid this intermediate String allocation, if possible. - writer.write(str(self)) + writer.write(String(self)) # ===-------------------------------------------------------------------===# # Methods @@ -1589,7 +1589,7 @@ struct PythonObject( var actual_type = cpython.Py_TYPE(self.unsafe_as_py_object_ptr()) var actual_type_name = PythonObject(cpython.PyType_GetName(actual_type)) - return str(actual_type_name) + return String(actual_type_name) # ===-----------------------------------------------------------------------===# diff --git a/stdlib/src/tempfile/tempfile.mojo b/stdlib/src/tempfile/tempfile.mojo index 18b783cffe..a493c02230 100644 --- a/stdlib/src/tempfile/tempfile.mojo +++ b/stdlib/src/tempfile/tempfile.mojo @@ -64,7 +64,7 @@ fn _candidate_tempdir_list() -> List[String]: # As a last resort, the current directory if possible, # os.path.getcwd() could raise try: - dirlist.append(str(Path())) + dirlist.append(String(Path())) except: pass @@ -102,7 +102,7 @@ fn _try_to_create_file(dir: StringSlice) -> Bool: # verify that we have writing access in the target directory try: - with FileHandle(str(filename), "w"): + with FileHandle(String(filename), "w"): pass os.remove(filename) return True @@ -161,7 +161,7 @@ fn mkdtemp( # python implementation expands the path, # but several functions are not yet implemented in mojo # i.e. abspath, normpath - return str(dir_name) + return String(dir_name) except: continue raise Error("Failed to create temporary file") @@ -279,7 +279,7 @@ struct NamedTemporaryFile: print( f.read() == "Hello world!" ) - print(str(p), p.exists()) #Removed by default + print(String(p), p.exists()) #Removed by default ``` Note: `NamedTemporaryFile.__init__` document the arguments. """ diff --git a/stdlib/src/testing/testing.mojo b/stdlib/src/testing/testing.mojo index e6235bc616..f8b02cc294 100644 --- a/stdlib/src/testing/testing.mojo +++ b/stdlib/src/testing/testing.mojo @@ -43,7 +43,7 @@ from utils import StringSlice @always_inline fn _assert_error[T: Stringable](msg: T, loc: _SourceLocation) -> String: - return loc.prefix("AssertionError: " + str(msg)) + return loc.prefix("AssertionError: " + String(msg)) @always_inline @@ -141,7 +141,10 @@ fn assert_equal[ """ if lhs != rhs: raise _assert_cmp_error["`left == right` comparison"]( - str(lhs), str(rhs), msg=msg, loc=location.or_else(__call_location()) + String(lhs), + String(rhs), + msg=msg, + loc=location.or_else(__call_location()), ) @@ -200,7 +203,10 @@ fn assert_equal[ """ if any(lhs != rhs): raise _assert_cmp_error["`left == right` comparison"]( - str(lhs), str(rhs), msg=msg, loc=location.or_else(__call_location()) + String(lhs), + String(rhs), + msg=msg, + loc=location.or_else(__call_location()), ) @@ -345,7 +351,10 @@ fn assert_not_equal[ """ if lhs == rhs: raise _assert_cmp_error["`left != right` comparison"]( - str(lhs), str(rhs), msg=msg, loc=location.or_else(__call_location()) + String(lhs), + String(rhs), + msg=msg, + loc=location.or_else(__call_location()), ) @@ -403,7 +412,10 @@ fn assert_not_equal[ """ if all(lhs == rhs): raise _assert_cmp_error["`left != right` comparison"]( - str(lhs), str(rhs), msg=msg, loc=location.or_else(__call_location()) + String(lhs), + String(rhs), + msg=msg, + loc=location.or_else(__call_location()), ) @@ -490,11 +502,11 @@ fn assert_almost_equal[ ) if not all(almost_equal): - var err = str(lhs) + " is not close to " + str(rhs) + var err = String(lhs) + " is not close to " + String(rhs) @parameter if type.is_integral() or type.is_floating_point(): - err += " with a diff of " + str(abs(lhs - rhs)) + err += " with a diff of " + String(abs(lhs - rhs)) if msg: err += " (" + msg + ")" @@ -529,7 +541,10 @@ fn assert_is[ """ if lhs is not rhs: raise _assert_cmp_error["`left is right` identification"]( - str(lhs), str(rhs), msg=msg, loc=location.or_else(__call_location()) + String(lhs), + String(rhs), + msg=msg, + loc=location.or_else(__call_location()), ) @@ -560,7 +575,10 @@ fn assert_is_not[ """ if lhs is rhs: raise _assert_cmp_error["`left is not right` identification"]( - str(lhs), str(rhs), msg=msg, loc=location.or_else(__call_location()) + String(lhs), + String(rhs), + msg=msg, + loc=location.or_else(__call_location()), ) @@ -644,7 +662,7 @@ struct assert_raises: AssertionError: Always. The block must raise to pass the test. """ raise Error( - "AssertionError: Didn't raise at " + str(self.call_location) + "AssertionError: Didn't raise at " + String(self.call_location) ) fn __exit__(self, error: Error) raises -> Bool: @@ -660,5 +678,5 @@ struct assert_raises: True if the error message contained the expected string. """ if self.message_contains: - return self.message_contains.value() in str(error) + return self.message_contains.value() in String(error) return True diff --git a/stdlib/src/time/time.mojo b/stdlib/src/time/time.mojo index 5ace9e42ce..561179f9f0 100644 --- a/stdlib/src/time/time.mojo +++ b/stdlib/src/time/time.mojo @@ -78,7 +78,7 @@ struct _CTimeSpec(Stringable): @no_inline fn __str__(self) -> String: - return str(self.as_nanoseconds()) + "ns" + return String(self.as_nanoseconds()) + "ns" @value diff --git a/stdlib/src/utils/_serialize.mojo b/stdlib/src/utils/_serialize.mojo index f6e5baf18c..e013cc6ea8 100644 --- a/stdlib/src/utils/_serialize.mojo +++ b/stdlib/src/utils/_serialize.mojo @@ -170,7 +170,7 @@ fn _serialize[ for i in range(len(shape)): if i: shape_str += "x" - shape_str += str(shape[i]) + shape_str += String(shape[i]) serialize_fn(shape_str) if serialize_end_line: diff --git a/stdlib/src/utils/stringref.mojo b/stdlib/src/utils/stringref.mojo index 7d41867971..dd1ebd678e 100644 --- a/stdlib/src/utils/stringref.mojo +++ b/stdlib/src/utils/stringref.mojo @@ -20,7 +20,7 @@ from sys.ffi import c_char from bit import count_trailing_zeros from builtin.dtype import _uint_type_of_width -from memory import UnsafePointer, memcmp, pack_bits, Span +from memory import UnsafePointer, memcmp, pack_bits, Span, memcpy from memory.memory import _memcmp_impl_unconstrained @@ -400,7 +400,12 @@ struct StringRef( Returns: A new string. """ - return String.write(self) + var length = len(self) + var buffer = String._buffer_type() + # +1 for null terminator, initialized to 0 + buffer.resize(length + 1, 0) + memcpy(dest=buffer.data, src=self.data, count=length) + return String(buffer^) @no_inline fn __repr__(self) -> String: @@ -409,7 +414,7 @@ struct StringRef( Returns: The String representation of the StringRef. """ - return String.write("StringRef(", repr(str(self)), ")") + return String.write("StringRef(", repr(String(self)), ")") @no_inline fn write_to[W: Writer](self, mut writer: W): diff --git a/stdlib/src/utils/variant.mojo b/stdlib/src/utils/variant.mojo index 60d9279a30..0a9b66979d 100644 --- a/stdlib/src/utils/variant.mojo +++ b/stdlib/src/utils/variant.mojo @@ -22,7 +22,7 @@ fn to_string(mut x: IntOrString) -> String: if x.isa[String](): return x[String] # x.isa[Int]() - return str(x[Int]) + return String(x[Int]) # They have to be mutable for now, and implement CollectionElement var an_int = IntOrString(4) @@ -85,7 +85,7 @@ struct Variant[*Ts: CollectionElement]( if x.isa[String](): return x[String] # x.isa[Int]() - return str(x[Int]) + return String(x[Int]) # They have to be mutable for now, and implement CollectionElement var an_int = IntOrString(4) diff --git a/stdlib/src/utils/write.mojo b/stdlib/src/utils/write.mojo index f2a5172d2f..a46ecefbee 100644 --- a/stdlib/src/utils/write.mojo +++ b/stdlib/src/utils/write.mojo @@ -68,14 +68,14 @@ trait Writer: fn write_to[W: Writer](self, mut writer: W): writer.write("Point(", self.x, ", ", self.y, ")") - # Enable conversion to a String using `str(point)` + # Enable conversion to a String using `String(point)` fn __str__(self) -> String: return String.write(self) fn main(): var point = Point(1, 2) - var new_string = NewString(str(point)) + var new_string = NewString(String(point)) new_string.write("\\n", Point(3, 4)) print(new_string) ``` diff --git a/stdlib/test/bit/test_bit.mojo b/stdlib/test/bit/test_bit.mojo index 489976fdeb..246b3d193c 100644 --- a/stdlib/test/bit/test_bit.mojo +++ b/stdlib/test/bit/test_bit.mojo @@ -515,7 +515,7 @@ def test_log2_floor(): assert_equal( log2_floor(i), _log2_floor(i), - msg="mismatching value for the input value of " + str(i), + msg="mismatching value for the input value of " + String(i), ) fn _check_alias[n: Int](expected: Int) raises: diff --git a/stdlib/test/builtin/test_bfloat16.mojo b/stdlib/test/builtin/test_bfloat16.mojo index 1b01473741..8295f30970 100644 --- a/stdlib/test/builtin/test_bfloat16.mojo +++ b/stdlib/test/builtin/test_bfloat16.mojo @@ -68,7 +68,7 @@ def check_float64_values(): ) assert_equal( - str( + String( Float64( __mlir_op.`pop.cast`[_type = __mlir_type[`!pop.scalar`]]( __mlir_op.`kgen.param.constant`[ diff --git a/stdlib/test/builtin/test_bool.mojo b/stdlib/test/builtin/test_bool.mojo index 2225b795bf..11d0a353dd 100644 --- a/stdlib/test/builtin/test_bool.mojo +++ b/stdlib/test/builtin/test_bool.mojo @@ -51,9 +51,9 @@ def test_convert_from_implicitly_boolable(): assert_true(bool(MyTrue())) -def test_bool_to_string(): - assert_equal(str(True), "True") - assert_equal(str(False), "False") +# def test_bool_to_string(): +# assert_equal(String(True), "True") +# assert_equal(String(False), "False") def test_bool_representation(): @@ -159,7 +159,7 @@ def main(): test_bool_cast_to_int() test_bool_none() test_convert_from_implicitly_boolable() - test_bool_to_string() + # test_bool_to_string() test_bool_representation() test_bitwise() test_neg() diff --git a/stdlib/test/builtin/test_char.mojo b/stdlib/test/builtin/test_char.mojo index b38a855051..ce52119ad1 100644 --- a/stdlib/test/builtin/test_char.mojo +++ b/stdlib/test/builtin/test_char.mojo @@ -56,11 +56,11 @@ def test_char_comparison(): def test_char_formatting(): - assert_equal(str(Char(0)), "\0") - assert_equal(str(Char(32)), " ") - assert_equal(str(Char(97)), "a") - assert_equal(str(Char.from_u32(0x00BE).value()), "¾") - assert_equal(str(Char.from_u32(0x1F642).value()), "🙂") + assert_equal(String(Char(0)), "\0") + assert_equal(String(Char(32)), " ") + assert_equal(String(Char(97)), "a") + assert_equal(String(Char.from_u32(0x00BE).value()), "¾") + assert_equal(String(Char.from_u32(0x1F642).value()), "🙂") def test_char_properties(): diff --git a/stdlib/test/builtin/test_dtype.mojo b/stdlib/test/builtin/test_dtype.mojo index d941ab794a..eba0e13117 100644 --- a/stdlib/test/builtin/test_dtype.mojo +++ b/stdlib/test/builtin/test_dtype.mojo @@ -24,8 +24,8 @@ fn test_equality() raises: fn test_stringable() raises: - assert_equal("float32", str(DType.float32)) - assert_equal("int64", str(DType.int64)) + assert_equal("float32", String(DType.float32)) + assert_equal("int64", String(DType.int64)) fn test_representable() raises: diff --git a/stdlib/test/builtin/test_error.mojo b/stdlib/test/builtin/test_error.mojo index eb24ee7e4b..70dea916e7 100644 --- a/stdlib/test/builtin/test_error.mojo +++ b/stdlib/test/builtin/test_error.mojo @@ -23,15 +23,15 @@ def test_error_raising(): try: raise_an_error() except e: - assert_equal(str(e), "MojoError: This is an error!") + assert_equal(String(e), "MojoError: This is an error!") def test_from_and_to_string(): var my_string: String = "FOO" var error = Error(my_string) - assert_equal(str(error), "FOO") + assert_equal(String(error), "FOO") - assert_equal(str(Error("bad")), "bad") + assert_equal(String(Error("bad")), "bad") assert_equal(repr(Error("err")), "Error('err')") diff --git a/stdlib/test/builtin/test_file.mojo b/stdlib/test/builtin/test_file.mojo index 96043d9952..c8c792a6ee 100644 --- a/stdlib/test/builtin/test_file.mojo +++ b/stdlib/test/builtin/test_file.mojo @@ -164,7 +164,7 @@ def test_file_seek(): _ = f.seek(-12) except e: alias expected_msg = "seek error" - assert_equal(str(e)[: len(expected_msg)], expected_msg) + assert_equal(String(e)[: len(expected_msg)], expected_msg) def test_file_open_nodir(): @@ -232,14 +232,14 @@ def test_file_read_to_dtype_pointer(): var ptr = UnsafePointer[UInt8].alloc(8) var data = f.read(ptr, 8) assert_equal( - str(ptr.load[width=8](0)), + String(ptr.load[width=8](0)), "[76, 111, 114, 101, 109, 32, 105, 112]", ) var ptr2 = UnsafePointer[Int8].alloc(8) var data2 = f.read(ptr2, 8) assert_equal( - str(ptr2.load[width=8](0)), + String(ptr2.load[width=8](0)), "[115, 117, 109, 32, 100, 111, 108, 111]", ) diff --git a/stdlib/test/builtin/test_format_float.mojo b/stdlib/test/builtin/test_format_float.mojo index 3bf820543d..7c022ec74b 100644 --- a/stdlib/test/builtin/test_format_float.mojo +++ b/stdlib/test/builtin/test_format_float.mojo @@ -93,7 +93,7 @@ def test_float64(): var mojo_f64_str = String() _write_float(mojo_f64_str, f[]) - var py_f64_str = str(PythonObject(f[])) + var py_f64_str = String(PythonObject(f[])) assert_equal(py_f64_str, mojo_f64_str) @@ -188,7 +188,7 @@ def test_float32(): var mojo_f32_str = String() _write_float(mojo_f32_str, f[]) - var py_f32_str = str(np.float32(f[])) + var py_f32_str = String(np.float32(f[])) assert_equal(py_f32_str, mojo_f32_str) @@ -198,7 +198,7 @@ def test_random_floats(): var f64 = random_float64() var mojo_f64_str = String() _write_float(mojo_f64_str, f64) - var py_f64_str = str(PythonObject(f64)) + var py_f64_str = String(PythonObject(f64)) assert_equal(py_f64_str, mojo_f64_str) diff --git a/stdlib/test/builtin/test_issue_1004.mojo b/stdlib/test/builtin/test_issue_1004.mojo index 15e0c9f41c..db6ed5f61d 100644 --- a/stdlib/test/builtin/test_issue_1004.mojo +++ b/stdlib/test/builtin/test_issue_1004.mojo @@ -24,4 +24,4 @@ def main(): try: foo("Hello") except e: - assert_equal(str(e), "Failed on: Hello") + assert_equal(String(e), "Failed on: Hello") diff --git a/stdlib/test/builtin/test_location.mojo b/stdlib/test/builtin/test_location.mojo index cc9a706249..29c7e40401 100644 --- a/stdlib/test/builtin/test_location.mojo +++ b/stdlib/test/builtin/test_location.mojo @@ -239,7 +239,7 @@ fn source_loc_with_debug() -> _SourceLocation: fn test_source_location_struct() raises: var source_loc = _SourceLocation(50, 60, "/path/to/some_file.mojo") - assert_equal(str(source_loc), "/path/to/some_file.mojo:50:60") + assert_equal(String(source_loc), "/path/to/some_file.mojo:50:60") fn main() raises: diff --git a/stdlib/test/builtin/test_object.mojo b/stdlib/test/builtin/test_object.mojo index 899c75da17..848fdbbb76 100644 --- a/stdlib/test/builtin/test_object.mojo +++ b/stdlib/test/builtin/test_object.mojo @@ -191,8 +191,8 @@ def test_function_raises(a) -> object: def test_object_function(): var a: object = test_function - assert_true(str(a).startswith("Function at address 0x")) - assert_equal(str(a(1, 2)), str(3)) + assert_true(String(a).startswith("Function at address 0x")) + assert_equal(String(a(1, 2)), String(3)) a = test_function_raises with assert_raises(contains="Error from function type"): a(1) @@ -254,22 +254,22 @@ def test_matrix(): C.append(row_zero) matmul_untyped(C, A, B) - assert_equal(str(C[0]), "[5, 8, 11]") - assert_equal(str(C[1]), "[8, 14, 20]") - assert_equal(str(C[2]), "[11, 20, 29]") + assert_equal(String(C[0]), "[5, 8, 11]") + assert_equal(String(C[1]), "[8, 14, 20]") + assert_equal(String(C[2]), "[11, 20, 29]") def test_convert_to_string(): var a: object = True - assert_equal(str(a), "True") + assert_equal(String(a), "True") a = 42 - assert_equal(str(a), "42") + assert_equal(String(a), "42") a = 2.5 - assert_equal(str(a), "2.5") + assert_equal(String(a), "2.5") a = "hello" - assert_equal(str(a), "'hello'") + assert_equal(String(a), "'hello'") a = [] - assert_equal(str(a), "[]") + assert_equal(String(a), "[]") a.append(3) a.append(False) a.append(5.5) @@ -277,30 +277,32 @@ def test_convert_to_string(): b.append("foo") b.append("baz") a.append(b) - assert_equal(str(a), "[3, False, 5.5, ['foo', 'baz']]") - assert_equal(str(a[3, 1]), "'baz'") + assert_equal(String(a), "[3, False, 5.5, ['foo', 'baz']]") + assert_equal(String(a[3, 1]), "'baz'") a[3, 1] = "bar" - assert_equal(str(a[3, 1]), "'bar'") + assert_equal(String(a[3, 1]), "'bar'") var c = a + b - assert_equal(str(c), "[3, False, 5.5, ['foo', 'bar'], 'foo', 'bar']") + assert_equal(String(c), "[3, False, 5.5, ['foo', 'bar'], 'foo', 'bar']") b.append(False) - assert_equal(str(c), "[3, False, 5.5, ['foo', 'bar', False], 'foo', 'bar']") - assert_equal(str(a), "[3, False, 5.5, ['foo', 'bar', False]]") - assert_equal(str(c[3]), "['foo', 'bar', False]") + assert_equal( + String(c), "[3, False, 5.5, ['foo', 'bar', False], 'foo', 'bar']" + ) + assert_equal(String(a), "[3, False, 5.5, ['foo', 'bar', False]]") + assert_equal(String(c[3]), "['foo', 'bar', False]") b[1] = object() - assert_equal(str(a), "[3, False, 5.5, ['foo', None, False]]") + assert_equal(String(a), "[3, False, 5.5, ['foo', None, False]]") a = "abc" b = a[True] - assert_equal(str(b), "'b'") + assert_equal(String(b), "'b'") b = a[2] - assert_equal(str(b), "'c'") + assert_equal(String(b), "'c'") a = [1, 1.2, False, "true"] - assert_equal(str(a), "[1, 1.2, False, 'true']") + assert_equal(String(a), "[1, 1.2, False, 'true']") a = object(Attr("foo", 5), Attr("bar", "hello"), Attr("baz", False)) - assert_equal(str(a.bar), "'hello'") + assert_equal(String(a.bar), "'hello'") a.bar = [1, 2] - assert_equal(str(a), "{'foo' = 5, 'bar' = [1, 2], 'baz' = False}") + assert_equal(String(a), "{'foo' = 5, 'bar' = [1, 2], 'baz' = False}") assert_equal(repr(a), "{'foo' = 5, 'bar' = [1, 2], 'baz' = False}") diff --git a/stdlib/test/builtin/test_print.mojo b/stdlib/test/builtin/test_print.mojo index 4ace3a30c1..a16e54c918 100644 --- a/stdlib/test/builtin/test_print.mojo +++ b/stdlib/test/builtin/test_print.mojo @@ -24,7 +24,7 @@ from utils import IndexList, StringRef @always_inline fn _assert_error[T: Stringable](msg: T, loc: _SourceLocation) -> String: - return loc.prefix("AssertionError: " + str(msg)) + return loc.prefix("AssertionError: " + String(msg)) fn _assert_equal_error( diff --git a/stdlib/test/builtin/test_simd.mojo b/stdlib/test/builtin/test_simd.mojo index c9c4a9ed53..3d83ed1bec 100644 --- a/stdlib/test/builtin/test_simd.mojo +++ b/stdlib/test/builtin/test_simd.mojo @@ -106,32 +106,32 @@ def test_cast_init(): def test_simd_variadic(): - assert_equal(str(SIMD[DType.index, 4](52, 12, 43, 5)), "[52, 12, 43, 5]") + assert_equal(String(SIMD[DType.index, 4](52, 12, 43, 5)), "[52, 12, 43, 5]") def test_convert_simd_to_string(): var a: SIMD[DType.float32, 2] = 5 - assert_equal(str(a), "[5.0, 5.0]") + assert_equal(String(a), "[5.0, 5.0]") var b: SIMD[DType.float64, 4] = 6 - assert_equal(str(b), "[6.0, 6.0, 6.0, 6.0]") + assert_equal(String(b), "[6.0, 6.0, 6.0, 6.0]") var c: SIMD[DType.index, 8] = 7 - assert_equal(str(c), "[7, 7, 7, 7, 7, 7, 7, 7]") + assert_equal(String(c), "[7, 7, 7, 7, 7, 7, 7, 7]") # TODO: uncomment when https://github.com/modularml/mojo/issues/2353 is fixed - # assert_equal(str(UInt32(-1)), "4294967295") - assert_equal(str(UInt64(-1)), "18446744073709551615") + # assert_equal(String(UInt32(-1)), "4294967295") + assert_equal(String(UInt64(-1)), "18446744073709551615") - assert_equal(str((UInt16(32768))), "32768") - assert_equal(str((UInt16(65535))), "65535") - assert_equal(str((Int16(-2))), "-2") + assert_equal(String((UInt16(32768))), "32768") + assert_equal(String((UInt16(65535))), "65535") + assert_equal(String((Int16(-2))), "-2") - assert_equal(str(UInt64(16646288086500911323)), "16646288086500911323") + assert_equal(String(UInt64(16646288086500911323)), "16646288086500911323") # https://github.com/modularml/mojo/issues/556 assert_equal( - str( + String( SIMD[DType.uint64, 4]( 0xA0761D6478BD642F, 0xE7037ED1A0B428DB, @@ -146,7 +146,7 @@ def test_convert_simd_to_string(): ) assert_equal( - str( + String( SIMD[DType.int32, 4](-943274556, -875902520, -808530484, -741158448) ), "[-943274556, -875902520, -808530484, -741158448]", @@ -195,12 +195,12 @@ def test_issue_1625(): # FIXME (40568) should directly use the SIMD assert_equal assert_equal( - str(evens_and_odds[0]), - str(SIMD[DType.int64, 8](0, 2, 4, 6, 8, 10, 12, 14)), + String(evens_and_odds[0]), + String(SIMD[DType.int64, 8](0, 2, 4, 6, 8, 10, 12, 14)), ) assert_equal( - str(evens_and_odds[1]), - str(SIMD[DType.int64, 8](1, 3, 5, 7, 9, 11, 13, 15)), + String(evens_and_odds[1]), + String(SIMD[DType.int64, 8](1, 3, 5, 7, 9, 11, 13, 15)), ) ptr.free() @@ -1052,7 +1052,8 @@ def test_join(): def test_interleave(): assert_equal( - str(Int32(0).interleave(Int32(1))), str(SIMD[DType.index, 2](0, 1)) + String(Int32(0).interleave(Int32(1))), + String(SIMD[DType.index, 2](0, 1)), ) assert_equal( diff --git a/stdlib/test/builtin/test_slice.mojo b/stdlib/test/builtin/test_slice.mojo index 2208a5bf3a..da32ed9903 100644 --- a/stdlib/test/builtin/test_slice.mojo +++ b/stdlib/test/builtin/test_slice.mojo @@ -67,7 +67,7 @@ struct SliceStringable: pass fn __getitem__(self, a: Slice) -> String: - return str(a) + return String(a) def test_slice_stringable(): diff --git a/stdlib/test/builtin/test_sort.mojo b/stdlib/test/builtin/test_sort.mojo index 5c9e9a253d..edba5a03d1 100644 --- a/stdlib/test/builtin/test_sort.mojo +++ b/stdlib/test/builtin/test_sort.mojo @@ -49,14 +49,15 @@ fn random_numbers[ # sort[dtype](list) # for i in range(1, len(list)): # assert_true( -# list[i] >= list[i - 1], str(list[i - 1]) + " > " + str(list[i]) +# list[i] >= list[i - 1], String(list[i - 1]) + " > " + String(list[i]) # ) fn assert_sorted_string(mut list: List[String]) raises: for i in range(1, len(list)): assert_true( - list[i] >= list[i - 1], str(list[i - 1]) + " > " + str(list[i]) + list[i] >= list[i - 1], + String(list[i - 1]) + " > " + String(list[i]), ) @@ -64,7 +65,7 @@ fn assert_sorted[ type: ComparableCollectionElement ](mut list: List[type]) raises: for i in range(1, len(list)): - assert_true(list[i] >= list[i - 1], "error at index: " + str(i)) + assert_true(list[i] >= list[i - 1], "error at index: " + String(i)) fn test_sort_small_3() raises: @@ -522,7 +523,7 @@ def test_sort_string_small_list(): var list = random_numbers[DType.int32](10) var string_list = List[String]() for n in list: - string_list.append(str(Int(n[]))) + string_list.append(String(Int(n[]))) sort(string_list) assert_sorted_string(string_list) @@ -531,7 +532,7 @@ def test_sort_string_big_list(): var list = random_numbers[DType.int32](1000) var string_list = List[String]() for n in list: - string_list.append(str(Int(n[]))) + string_list.append(String(Int(n[]))) sort(string_list) assert_sorted_string(string_list) diff --git a/stdlib/test/builtin/test_str.mojo b/stdlib/test/builtin/test_str.mojo index 434915d8b3..594777287f 100644 --- a/stdlib/test/builtin/test_str.mojo +++ b/stdlib/test/builtin/test_str.mojo @@ -16,7 +16,7 @@ from testing import assert_equal def test_str_none(): - assert_equal(str(None), "None") + assert_equal(String(None), "None") def main(): diff --git a/stdlib/test/builtin/test_string_literal.mojo b/stdlib/test/builtin/test_string_literal.mojo index b0782481f3..fb86aecebb 100644 --- a/stdlib/test/builtin/test_string_literal.mojo +++ b/stdlib/test/builtin/test_string_literal.mojo @@ -66,7 +66,7 @@ def test_equality(): assert_true(StringLiteral.__ne__("five", "six")) assert_false(StringLiteral.__ne__("six", "six")) - var hello = str("hello") + var hello = String("hello") var hello_ref = hello.as_string_slice() assert_false(StringLiteral.__eq__("goodbye", hello)) diff --git a/stdlib/test/builtin/test_uint.mojo b/stdlib/test/builtin/test_uint.mojo index 005c7ee43f..2f15a1c9ad 100644 --- a/stdlib/test/builtin/test_uint.mojo +++ b/stdlib/test/builtin/test_uint.mojo @@ -19,12 +19,12 @@ from testing import assert_equal, assert_false, assert_not_equal, assert_true def test_simple_uint(): - assert_equal(str(UInt(32)), "32") + assert_equal(String(UInt(32)), "32") - assert_equal(str(UInt(0)), "0") - assert_equal(str(UInt()), "0") + assert_equal(String(UInt(0)), "0") + assert_equal(String(UInt()), "0") - assert_equal(str(UInt(18446744073709551615)), "18446744073709551615") + assert_equal(String(UInt(18446744073709551615)), "18446744073709551615") def test_uint_representation(): diff --git a/stdlib/test/collections/string/test_inlined_string.mojo b/stdlib/test/collections/string/test_inlined_string.mojo index 027ef84fd2..672a25ecfe 100644 --- a/stdlib/test/collections/string/test_inlined_string.mojo +++ b/stdlib/test/collections/string/test_inlined_string.mojo @@ -35,7 +35,7 @@ def test_fixed_string(): var s = _FixedString[50]("hello world") # Test conversion to String - assert_equal(str(s), "hello world") + assert_equal(String(s), "hello world") # Test comparison with StringLiteral assert_equal(s, "hello world") @@ -55,7 +55,7 @@ def test_fixed_string(): var s3 = _FixedString[1]("") assert_equal(len(s3), 0) - assert_equal(str(s3), "") + assert_equal(String(s3), "") def test_fixed_string_growth(): @@ -65,7 +65,7 @@ def test_fixed_string_growth(): s1 += "hello " assert_equal(len(s1), 6) - assert_equal(str(s1), "hello ") + assert_equal(String(s1), "hello ") try: s1 += "world" @@ -80,7 +80,7 @@ def test_fixed_string_growth(): ) # s1 should be unchanged by the failed append - assert_equal(str(s1), "hello ") + assert_equal(String(s1), "hello ") def test_small_string_construction(): @@ -149,7 +149,7 @@ def test_small_string_iadd(): assert_equal(len(s1), 37) assert_true(not s1._is_small()) - assert_equal(str(s1), "Hello world, how's it going? The End.") + assert_equal(String(s1), "Hello world, how's it going? The End.") # ================================== # Test appending String to InlineString @@ -158,7 +158,7 @@ def test_small_string_iadd(): var s2 = InlineString("") s2 += String("Hello, World!") - assert_equal(str(s2), "Hello, World!") + assert_equal(String(s2), "Hello, World!") assert_equal(len(s2), 13) @@ -169,7 +169,7 @@ def test_small_string_add(): var s1: InlineString = InlineString("hello") + " world" - assert_equal(str(s1), "hello world") + assert_equal(String(s1), "hello world") assert_equal(len(s1), "11") # @@ -178,7 +178,7 @@ def test_small_string_add(): var s2: InlineString = InlineString("hello") + InlineString(" world") - assert_equal(str(s2), "hello world") + assert_equal(String(s2), "hello world") assert_equal(len(s2), "11") # @@ -187,5 +187,5 @@ def test_small_string_add(): var s3: InlineString = InlineString("hello") + String(" world") - assert_equal(str(s3), "hello world") + assert_equal(String(s3), "hello world") assert_equal(len(s3), "11") diff --git a/stdlib/test/collections/string/test_string.mojo b/stdlib/test/collections/string/test_string.mojo index ea971afab7..f3c2cf034f 100644 --- a/stdlib/test/collections/string/test_string.mojo +++ b/stdlib/test/collections/string/test_string.mojo @@ -37,10 +37,10 @@ struct AString(Stringable): def test_stringable(): - assert_equal("hello", str("hello")) - assert_equal("0", str(0)) - assert_equal("AAA", str(StringRef("AAA"))) - assert_equal("a string", str(AString())) + assert_equal("hello", String("hello")) + assert_equal("0", String(0)) + assert_equal("AAA", String(StringRef("AAA"))) + assert_equal("a string", String(AString())) def test_constructors(): @@ -49,17 +49,17 @@ def test_constructors(): assert_true(not String()) # Construction from Int - var s0 = str(0) - assert_equal("0", str(0)) + var s0 = String(0) + assert_equal("0", String(0)) assert_equal(1, len(s0)) - var s1 = str(123) - assert_equal("123", str(123)) + var s1 = String(123) + assert_equal("123", String(123)) assert_equal(3, len(s1)) # Construction from StringLiteral var s2 = String("abc") - assert_equal("abc", str(s2)) + assert_equal("abc", String(s2)) assert_equal(3, len(s2)) # Construction from UnsafePointer @@ -83,7 +83,7 @@ def test_constructors(): def test_copy(): var s0 = String("find") - var s1 = str(s0) + var s1 = String(s0) s1._buffer[3] = ord("e") assert_equal("find", s0) assert_equal("fine", s1) @@ -171,7 +171,7 @@ def test_add(): var s8 = String("abc is ") var s9 = AString() - assert_equal("abc is a string", str(s8) + str(s9)) + assert_equal("abc is a string", String(s8) + String(s9)) def test_add_string_slice(): diff --git a/stdlib/test/collections/string/test_string_slice.mojo b/stdlib/test/collections/string/test_string_slice.mojo index 8a94cb024f..105c88c159 100644 --- a/stdlib/test/collections/string/test_string_slice.mojo +++ b/stdlib/test/collections/string/test_string_slice.mojo @@ -225,7 +225,7 @@ fn test_slice_bool() raises: def test_slice_repr(): # Standard single-byte characters assert_equal(StringSlice.__repr__("hello"), "'hello'") - assert_equal(StringSlice.__repr__(str(0)), "'0'") + assert_equal(StringSlice.__repr__(String(0)), "'0'") assert_equal(StringSlice.__repr__("A"), "'A'") assert_equal(StringSlice.__repr__(" "), "' '") assert_equal(StringSlice.__repr__("~"), "'~'") @@ -334,34 +334,40 @@ fn test_utf8_validation() raises: def test_find(): - haystack = str("abcdefg").as_string_slice() - haystack_with_special_chars = str("abcdefg@#$").as_string_slice() - haystack_repeated_chars = str("aaaaaaaaaaaaaaaaaaaaaaaa").as_string_slice() - - assert_equal(haystack.find(str("a").as_string_slice()), 0) - assert_equal(haystack.find(str("ab").as_string_slice()), 0) - assert_equal(haystack.find(str("abc").as_string_slice()), 0) - assert_equal(haystack.find(str("bcd").as_string_slice()), 1) - assert_equal(haystack.find(str("de").as_string_slice()), 3) - assert_equal(haystack.find(str("fg").as_string_slice()), 5) - assert_equal(haystack.find(str("g").as_string_slice()), 6) - assert_equal(haystack.find(str("z").as_string_slice()), -1) - assert_equal(haystack.find(str("zzz").as_string_slice()), -1) - - assert_equal(haystack.find(str("@#$").as_string_slice()), -1) + haystack = String("abcdefg").as_string_slice() + haystack_with_special_chars = String("abcdefg@#$").as_string_slice() + haystack_repeated_chars = String( + "aaaaaaaaaaaaaaaaaaaaaaaa" + ).as_string_slice() + + assert_equal(haystack.find(String("a").as_string_slice()), 0) + assert_equal(haystack.find(String("ab").as_string_slice()), 0) + assert_equal(haystack.find(String("abc").as_string_slice()), 0) + assert_equal(haystack.find(String("bcd").as_string_slice()), 1) + assert_equal(haystack.find(String("de").as_string_slice()), 3) + assert_equal(haystack.find(String("fg").as_string_slice()), 5) + assert_equal(haystack.find(String("g").as_string_slice()), 6) + assert_equal(haystack.find(String("z").as_string_slice()), -1) + assert_equal(haystack.find(String("zzz").as_string_slice()), -1) + + assert_equal(haystack.find(String("@#$").as_string_slice()), -1) assert_equal( - haystack_with_special_chars.find(str("@#$").as_string_slice()), 7 + haystack_with_special_chars.find(String("@#$").as_string_slice()), 7 ) - assert_equal(haystack_repeated_chars.find(str("aaa").as_string_slice()), 0) - assert_equal(haystack_repeated_chars.find(str("AAa").as_string_slice()), -1) + assert_equal( + haystack_repeated_chars.find(String("aaa").as_string_slice()), 0 + ) + assert_equal( + haystack_repeated_chars.find(String("AAa").as_string_slice()), -1 + ) assert_equal( - haystack.find(str("hijklmnopqrstuvwxyz").as_string_slice()), -1 + haystack.find(String("hijklmnopqrstuvwxyz").as_string_slice()), -1 ) assert_equal( - str("").as_string_slice().find(str("abc").as_string_slice()), -1 + String("").as_string_slice().find(String("abc").as_string_slice()), -1 ) @@ -510,7 +516,7 @@ def test_splitlines(): ](l1: List[StringSlice[O1]], l2: List[String]) raises: assert_equal(len(l1), len(l2)) for i in range(len(l1)): - assert_equal(str(l1[i]), l2[i]) + assert_equal(String(l1[i]), l2[i]) # Test with no line breaks assert_equal(S("hello world").splitlines(), L("hello world")) diff --git a/stdlib/test/collections/test_dict.mojo b/stdlib/test/collections/test_dict.mojo index d9252d8f3d..6fb74b3d29 100644 --- a/stdlib/test/collections/test_dict.mojo +++ b/stdlib/test/collections/test_dict.mojo @@ -78,7 +78,7 @@ def test_basic_no_copies(): def test_multiple_resizes(): var dict = Dict[String, Int]() for i in range(20): - dict["key" + str(i)] = i + 1 + dict["key" + String(i)] = i + 1 assert_equal(11, dict["key10"]) assert_equal(20, dict["key19"]) @@ -99,7 +99,7 @@ def test_bool_conversion(): def test_big_dict(): var dict = Dict[String, Int]() for i in range(2000): - dict["key" + str(i)] = i + 1 + dict["key" + String(i)] = i + 1 assert_equal(2000, len(dict)) @@ -132,7 +132,7 @@ def test_dict_string_representation_int_int(): def test_compact(): var dict = Dict[String, Int]() for i in range(20): - var key = "key" + str(i) + var key = "key" + String(i) dict[key] = i + 1 _ = dict.pop(key) assert_equal(0, len(dict)) @@ -141,10 +141,10 @@ def test_compact(): def test_compact_with_elements(): var dict = Dict[String, Int]() for i in range(5): - var key = "key" + str(i) + var key = "key" + String(i) dict[key] = i + 1 for i in range(5, 20): - var key = "key" + str(i) + var key = "key" + String(i) dict[key] = i + 1 _ = dict.pop(key) assert_equal(5, len(dict)) @@ -270,7 +270,7 @@ def test_dict_copy_add_new_item(): # test there are two copies of dict and # they don't share underlying memory copy["b"] = 2 - assert_false(str(2) in orig) + assert_false(String(2) in orig) def test_dict_copy_calls_copy_constructor(): @@ -608,14 +608,14 @@ def test_compile_time_dict(): fn _get_dict() -> Dict[String, Int32]: var res = Dict[String, Int32]() for i in range(N): - res[str(i)] = i + res[String(i)] = i return res alias my_dict = _get_dict() @parameter for i in range(N): - alias val = my_dict.get(str(i)).value() + alias val = my_dict.get(String(i)).value() assert_equal(val, i) diff --git a/stdlib/test/collections/test_inline_array.mojo b/stdlib/test/collections/test_inline_array.mojo index 29268017ba..2f311931de 100644 --- a/stdlib/test/collections/test_inline_array.mojo +++ b/stdlib/test/collections/test_inline_array.mojo @@ -187,8 +187,8 @@ def test_array_unsafe_assume_initialized_constructor_string(): def test_array_contains(): var arr = InlineArray[String, 3]("hi", "hello", "hey") - assert_true(str("hi") in arr) - assert_true(not str("greetings") in arr) + assert_true(String("hi") in arr) + assert_true(not String("greetings") in arr) def test_inline_array_runs_destructors(): diff --git a/stdlib/test/collections/test_linked_list.mojo b/stdlib/test/collections/test_linked_list.mojo index fa8b12b85d..1375def212 100644 --- a/stdlib/test/collections/test_linked_list.mojo +++ b/stdlib/test/collections/test_linked_list.mojo @@ -101,7 +101,7 @@ def test_setitem(): def test_str(): var l1 = LinkedList[Int](1, 2, 3) - assert_equal(str(l1), "[1, 2, 3]") + assert_equal(String(l1), "[1, 2, 3]") def test_repr(): diff --git a/stdlib/test/hashlib/test_ahash.mojo b/stdlib/test/hashlib/test_ahash.mojo index 9a58a753b2..4fa20d1571 100644 --- a/stdlib/test/hashlib/test_ahash.mojo +++ b/stdlib/test/hashlib/test_ahash.mojo @@ -577,7 +577,7 @@ fn gen_word_pairs[words: String = words_en]() -> List[String]: try: var list = words.split(", ") for w in list: - var w1 = str(w[].strip()) + var w1 = String(w[].strip()) for w in list: var w2 = w[].strip() result.append(w1 + " " + w2) @@ -597,7 +597,7 @@ def assert_dif_hashes(hashes: List[UInt64], upper_bound: Int): var diff = dif_bits(hashes[i], hashes[j]) assert_true( diff > upper_bound, - str("Index: {}:{}, diff between: {} and {} is: {}").format( + String("Index: {}:{}, diff between: {} and {} is: {}").format( i, j, hashes[i], hashes[j], diff ), location=__call_location(), @@ -653,7 +653,7 @@ def test_avalanche(): var diff = dif_bits(hashes0[i], hashes1[i]) assert_true( diff > 16, - str("Index: {}, diff between: {} and {} is: {}").format( + String("Index: {}, diff between: {} and {} is: {}").format( i, hashes0[i], hashes1[i], diff ), ) @@ -678,7 +678,7 @@ def test_trailing_zeros(): var diff = dif_bits(hashes0[i], hashes1[i]) assert_true( diff > 18, - str("Index: {}, diff between: {} and {} is: {}").format( + String("Index: {}, diff between: {} and {} is: {}").format( i, hashes0[i], hashes1[i], diff ), ) @@ -705,7 +705,7 @@ def assert_fill_factor[ var fill_factor = 1 - unfilled / num_buckets assert_true( fill_factor >= lower_bound, - str("Fill factor for {} is {}, provided lower boound was {}").format( + String("Fill factor for {} is {}, provided lower boound was {}").format( label, fill_factor, lower_bound ), location=__call_location(), @@ -730,7 +730,7 @@ def assert_fill_factor_old_hash[ var fill_factor = 1 - unfilled / num_buckets assert_true( fill_factor >= lower_bound, - str("Fill factor for {} is {}, provided lower bound was {}").format( + String("Fill factor for {} is {}, provided lower bound was {}").format( label, fill_factor, lower_bound ), location=__call_location(), diff --git a/stdlib/test/hashlib/test_hasher.mojo b/stdlib/test/hashlib/test_hasher.mojo index 4c10ac50a5..c60032b2e1 100644 --- a/stdlib/test/hashlib/test_hasher.mojo +++ b/stdlib/test/hashlib/test_hasher.mojo @@ -156,7 +156,7 @@ def test_with_ahasher(): def test_hash_hashable_with_hasher_types(): assert_equal(_hash_with_hasher(DType.uint64), 6529703120343940753) assert_equal(_hash_with_hasher(""), 11583516797109448887) - assert_equal(_hash_with_hasher(str("")), 11583516797109448887) + assert_equal(_hash_with_hasher(String("")), 11583516797109448887) assert_equal(_hash_with_hasher(StringRef("")), 11583516797109448887) assert_equal(_hash_with_hasher(Int(-123)), 4720193641311814362) assert_equal(_hash_with_hasher(UInt(123)), 4498397628805512285) diff --git a/stdlib/test/memory/test_memory.mojo b/stdlib/test/memory/test_memory.mojo index 26d12e1d03..48b77fdc74 100644 --- a/stdlib/test/memory/test_memory.mojo +++ b/stdlib/test/memory/test_memory.mojo @@ -198,48 +198,48 @@ def test_memcmp_extensive[ assert_equal( memcmp(ptr1, ptr1, count), 0, - "for dtype=" + str(type) + ";count=" + str(count), + "for dtype=" + String(type) + ";count=" + String(count), ) assert_equal( memcmp(ptr1, ptr2, count), -1, - "for dtype=" + str(type) + ";count=" + str(count), + "for dtype=" + String(type) + ";count=" + String(count), ) assert_equal( memcmp(ptr2, ptr1, count), 1, - "for dtype=" + str(type) + ";count=" + str(count), + "for dtype=" + String(type) + ";count=" + String(count), ) assert_equal( memcmp(dptr1, dptr1, count), 0, "for dtype=" - + str(type) + + String(type) + ";extremes=" - + str(extermes) + + String(extermes) + ";count=" - + str(count), + + String(count), ) assert_equal( memcmp(dptr1, dptr2, count), -1, "for dtype=" - + str(type) + + String(type) + ";extremes=" - + str(extermes) + + String(extermes) + ";count=" - + str(count), + + String(count), ) assert_equal( memcmp(dptr2, dptr1, count), 1, "for dtype=" - + str(type) + + String(type) + ";extremes=" - + str(extermes) + + String(extermes) + ";count=" - + str(count), + + String(count), ) ptr1.free() @@ -313,21 +313,21 @@ def test_memset(): def test_pointer_string(): var nullptr = UnsafePointer[Int]() - assert_equal(str(nullptr), "0x0") + assert_equal(String(nullptr), "0x0") var ptr = UnsafePointer[Int].alloc(1) - assert_true(str(ptr).startswith("0x")) - assert_not_equal(str(ptr), "0x0") + assert_true(String(ptr).startswith("0x")) + assert_not_equal(String(ptr), "0x0") ptr.free() def test_dtypepointer_string(): var nullptr = UnsafePointer[Float32]() - assert_equal(str(nullptr), "0x0") + assert_equal(String(nullptr), "0x0") var ptr = UnsafePointer[Float32].alloc(1) - assert_true(str(ptr).startswith("0x")) - assert_not_equal(str(ptr), "0x0") + assert_true(String(ptr).startswith("0x")) + assert_not_equal(String(ptr), "0x0") ptr.free() @@ -367,8 +367,8 @@ def test_pointer_refitem_pair(): def test_address_space_str(): - assert_equal(str(AddressSpace.GENERIC), "AddressSpace.GENERIC") - assert_equal(str(AddressSpace(17)), "AddressSpace(17)") + assert_equal(String(AddressSpace.GENERIC), "AddressSpace.GENERIC") + assert_equal(String(AddressSpace(17)), "AddressSpace(17)") def test_dtypepointer_gather(): diff --git a/stdlib/test/memory/test_reference.mojo b/stdlib/test/memory/test_reference.mojo index 6b84cbc900..746c7e8fbf 100644 --- a/stdlib/test/memory/test_reference.mojo +++ b/stdlib/test/memory/test_reference.mojo @@ -38,7 +38,7 @@ def test_equality(): def test_str(): var a = Int(42) var a_ref = Pointer.address_of(a) - assert_true(str(a_ref).startswith("0x")) + assert_true(String(a_ref).startswith("0x")) def main(): diff --git a/stdlib/test/memory/test_unsafepointer.mojo b/stdlib/test/memory/test_unsafepointer.mojo index 5e8fefc1f5..5bf8837422 100644 --- a/stdlib/test/memory/test_unsafepointer.mojo +++ b/stdlib/test/memory/test_unsafepointer.mojo @@ -142,11 +142,11 @@ def test_bitcast(): def test_unsafepointer_string(): var nullptr = UnsafePointer[Int]() - assert_equal(str(nullptr), "0x0") + assert_equal(String(nullptr), "0x0") var ptr = UnsafePointer[Int].alloc(1) - assert_true(str(ptr).startswith("0x")) - assert_not_equal(str(ptr), "0x0") + assert_true(String(ptr).startswith("0x")) + assert_not_equal(String(ptr), "0x0") ptr.free() diff --git a/stdlib/test/os/path/test_isdir.mojo b/stdlib/test/os/path/test_isdir.mojo index 74e4b3e7fc..eb87a671b3 100644 --- a/stdlib/test/os/path/test_isdir.mojo +++ b/stdlib/test/os/path/test_isdir.mojo @@ -21,6 +21,6 @@ from testing import assert_false, assert_true def main(): assert_true(isdir(Path())) - assert_true(isdir(str(cwd()))) - assert_false(isdir(str(cwd() / "nonexistent"))) + assert_true(isdir(String(cwd()))) + assert_false(isdir(String(cwd() / "nonexistent"))) assert_false(isdir(__source_location().file_name)) diff --git a/stdlib/test/os/path/test_islink.mojo b/stdlib/test/os/path/test_islink.mojo index 9e6cac2153..c8b3af2e57 100644 --- a/stdlib/test/os/path/test_islink.mojo +++ b/stdlib/test/os/path/test_islink.mojo @@ -29,4 +29,4 @@ def main(): assert_true(isdir(Path(TEMP_DIR))) assert_true(isdir(TEMP_DIR)) assert_true(islink(TEMP_DIR)) - assert_false(islink(str(Path(TEMP_DIR) / "nonexistent"))) + assert_false(islink(String(Path(TEMP_DIR) / "nonexistent"))) diff --git a/stdlib/test/os/test_mkdir_and_rmdir.mojo b/stdlib/test/os/test_mkdir_and_rmdir.mojo index f2fd2171ee..4fef85d336 100644 --- a/stdlib/test/os/test_mkdir_and_rmdir.mojo +++ b/stdlib/test/os/test_mkdir_and_rmdir.mojo @@ -43,7 +43,7 @@ fn test_mkdir_and_rmdir(path: String) raises: # verify that the test dir does not exist before starting the test assert_false( exists(path), - "Unexpected dir " + str(path) + " it should not exist", + "Unexpected dir " + String(path) + " it should not exist", ) os.mkdir(path, 0o777) @@ -63,7 +63,7 @@ fn test_mkdir_and_rmdir(path: Path) raises: # verify that the test dir does not exist before starting the test assert_false( exists(path), - "Unexpected dir " + str(path) + " it should not exist", + "Unexpected dir " + String(path) + " it should not exist", ) os.mkdir(path, 0o777) @@ -83,7 +83,7 @@ fn test_makedirs_and_removedirs(path: Path) raises: # verify that the test dir does not exist before starting the test assert_false( exists(path), - "Unexpected dir " + str(path) + " it should not exist", + "Unexpected dir " + String(path) + " it should not exist", ) os.makedirs(path, exist_ok=True) assert_true(exists(path)) diff --git a/stdlib/test/os/test_remove.mojo b/stdlib/test/os/test_remove.mojo index ccd9382ad3..5d1506abdb 100644 --- a/stdlib/test/os/test_remove.mojo +++ b/stdlib/test/os/test_remove.mojo @@ -37,7 +37,7 @@ fn create_file_and_test_delete_path[ fn test_remove() raises: var cwd_path = Path() var my_file_path = cwd_path / "my_file.test" - var my_file_name = str(my_file_path) + var my_file_name = String(my_file_path) # verify that the test file does not exist before starting the test assert_false( @@ -57,7 +57,7 @@ fn test_remove() raises: create_file_and_test_delete_path[unlink, "unlink"](my_file_path) # test with relative path - my_file_name = str(Path("my_relative_file.test")) + my_file_name = String(Path("my_relative_file.test")) create_file_and_test_delete_path[remove, "remove"](my_file_name) diff --git a/stdlib/test/os/test_stat.mojo b/stdlib/test/os/test_stat.mojo index c6be572d9c..67a738e040 100644 --- a/stdlib/test/os/test_stat.mojo +++ b/stdlib/test/os/test_stat.mojo @@ -21,5 +21,5 @@ from testing import assert_not_equal, assert_true def main(): var st = stat(__source_location().file_name) - assert_not_equal(str(st), "") + assert_not_equal(String(st), "") assert_true(S_ISREG(st.st_mode)) diff --git a/stdlib/test/pathlib/test_pathlib.mojo b/stdlib/test/pathlib/test_pathlib.mojo index d57c149e0f..e13a4abf1b 100644 --- a/stdlib/test/pathlib/test_pathlib.mojo +++ b/stdlib/test/pathlib/test_pathlib.mojo @@ -23,16 +23,16 @@ alias TEMP_FILE = env_get_string["TEMP_FILE"]() def test_cwd(): - assert_true(str(cwd()).startswith("/")) + assert_true(String(cwd()).startswith("/")) def test_path(): - assert_true(str(Path() / "some" / "dir").endswith("/some/dir")) + assert_true(String(Path() / "some" / "dir").endswith("/some/dir")) - assert_equal(str(Path("/foo") / "bar" / "jar"), "/foo/bar/jar") + assert_equal(String(Path("/foo") / "bar" / "jar"), "/foo/bar/jar") assert_equal( - str(Path("/foo" + DIR_SEPARATOR) / "bar" / "jar"), "/foo/bar/jar" + String(Path("/foo" + DIR_SEPARATOR) / "bar" / "jar"), "/foo/bar/jar" ) assert_not_equal(Path().stat().st_mode, 0) @@ -102,7 +102,7 @@ fn get_current_home() -> String: def set_home(path: Path): - path_str = str(path) + path_str = String(path) @parameter if os_is_windows(): @@ -152,7 +152,7 @@ def test_stat(): var path = Path(__source_location().file_name) var stat = path.stat() assert_equal( - str(stat), + String(stat), "os.stat_result(st_mode={}, st_ino={}, st_dev={}, st_nlink={}," " st_uid={}, st_gid={}, st_size={}, st_atime={}, st_mtime={}," " st_ctime={}, st_birthtime={}, st_blocks={}, st_blksize={}," @@ -164,10 +164,10 @@ def test_stat(): stat.st_uid, stat.st_gid, stat.st_size, - str(stat.st_atimespec), - str(stat.st_mtimespec), - str(stat.st_ctimespec), - str(stat.st_birthtimespec), + String(stat.st_atimespec), + String(stat.st_mtimespec), + String(stat.st_ctimespec), + String(stat.st_birthtimespec), stat.st_blocks, stat.st_blksize, stat.st_rdev, diff --git a/stdlib/test/python/test_ownership.mojo b/stdlib/test/python/test_ownership.mojo index ec7a71d89e..4411185e77 100644 --- a/stdlib/test/python/test_ownership.mojo +++ b/stdlib/test/python/test_ownership.mojo @@ -27,27 +27,27 @@ fn test_import(mut python: Python) raises: fn test_list(mut python: Python) raises: var b: PythonObject = Python.import_module("builtins") var my_list = PythonObject([1, 2.34, "False"]) - var py_string = str(my_list) + var py_string = String(my_list) assert_equal(py_string, "[1, 2.34, 'False']") fn test_tuple(mut python: Python) raises: var b: PythonObject = Python.import_module("builtins") var my_tuple = PythonObject((1, 2.34, "False")) - var py_string = str(my_tuple) + var py_string = String(my_tuple) assert_equal(py_string, "(1, 2.34, 'False')") fn test_call_ownership(mut python: Python) raises: var obj: PythonObject = [1, "5"] - var py_string = str(obj) + var py_string = String(obj) var string = python.__str__(py_string) assert_equal(string, "[1, '5']") fn test_getitem_ownership(mut python: Python) raises: var obj: PythonObject = [1, "5"] - var py_string = str(obj[1]) + var py_string = String(obj[1]) var string = python.__str__(py_string) assert_equal(string, "5") @@ -55,7 +55,7 @@ fn test_getitem_ownership(mut python: Python) raises: fn test_getattr_ownership(mut python: Python) raises: var my_module: PythonObject = Python.import_module("my_module") var obj = my_module.Foo(4) - var py_string = str(obj.bar) + var py_string = String(obj.bar) var string = python.__str__(py_string) assert_equal(string, "4") diff --git a/stdlib/test/python/test_python_error_handling.mojo b/stdlib/test/python/test_python_error_handling.mojo index d74ed3b429..5659f2abf9 100644 --- a/stdlib/test/python/test_python_error_handling.mojo +++ b/stdlib/test/python/test_python_error_handling.mojo @@ -21,7 +21,7 @@ fn test_python_exception_import() raises: try: var sys = Python.import_module("my_uninstalled_module") except e: - assert_equal(str(e), "No module named 'my_uninstalled_module'") + assert_equal(String(e), "No module named 'my_uninstalled_module'") fn test_python_exception_getattr() raises: @@ -31,7 +31,7 @@ fn test_python_exception_getattr() raises: var person = my_module.Person() var expec_fail = person.undefined() except e: - assert_equal(str(e), "'Person' object has no attribute 'undefined'") + assert_equal(String(e), "'Person' object has no attribute 'undefined'") fn test_python_exception_getitem() raises: @@ -39,7 +39,7 @@ fn test_python_exception_getitem() raises: var list = PythonObject([1, 2, 3]) var should_fail = list[13] except e: - assert_equal(str(e), "list index out of range") + assert_equal(String(e), "list index out of range") fn test_python_exception_call() raises: diff --git a/stdlib/test/python/test_python_interop.mojo b/stdlib/test/python/test_python_interop.mojo index 3e1a465628..80fe6ea3d9 100644 --- a/stdlib/test/python/test_python_interop.mojo +++ b/stdlib/test/python/test_python_interop.mojo @@ -20,9 +20,9 @@ from testing import assert_equal fn test_execute_python_string(mut python: Python) -> String: try: _ = Python.evaluate("print('evaluated by PyRunString')") - return str(Python.evaluate("'a' + 'b'")) + return String(Python.evaluate("'a' + 'b'")) except e: - return str(e) + return String(e) fn test_local_import(mut python: Python) -> String: @@ -31,10 +31,10 @@ fn test_local_import(mut python: Python) -> String: if my_module: var foo = my_module.Foo("apple") foo.bar = "orange" - return str(foo.bar) + return String(foo.bar) return "no module, no fruit" except e: - return str(e) + return String(e) fn test_dynamic_import(mut python: Python, times: Int = 1) -> String: @@ -51,15 +51,15 @@ def hello(name): var mod = Python.evaluate(INLINE_MODULE, file=True) for _ in range(times - 1): mod.hello("world") - return str(mod.hello("world")) + return String(mod.hello("world")) except e: - return str(e) + return String(e) fn test_call(mut python: Python) -> String: try: var my_module: PythonObject = Python.import_module("my_module") - return str( + return String( my_module.eat_it_all( "carrot", "bread", @@ -70,7 +70,7 @@ fn test_call(mut python: Python) -> String: ) ) except e: - return str(e) + return String(e) def main(): @@ -93,12 +93,12 @@ def main(): ) var obj: PythonObject = [1, 2.4, True, "False"] - assert_equal(str(obj), "[1, 2.4, True, 'False']") + assert_equal(String(obj), "[1, 2.4, True, 'False']") obj = (1, 2.4, True, "False") - assert_equal(str(obj), "(1, 2.4, True, 'False')") + assert_equal(String(obj), "(1, 2.4, True, 'False')") obj = None - assert_equal(str(obj), "None") + assert_equal(String(obj), "None") assert_equal(test_execute_python_string(python), "ab") diff --git a/stdlib/test/python/test_python_object.mojo b/stdlib/test/python/test_python_object.mojo index 50540361ef..fe15369e5f 100644 --- a/stdlib/test/python/test_python_object.mojo +++ b/stdlib/test/python/test_python_object.mojo @@ -290,7 +290,7 @@ fn test_string_conversions() raises -> None: var py = Python() var py_float = PythonObject(3.14) var type_obj = py.type(py_float) - assert_equal(str(type_obj), "") + assert_equal(String(type_obj), "") test_string_literal() test_string() @@ -334,8 +334,8 @@ def test_nested_object(): var nested_list = PythonObject([a, b]) var nested_tuple = PythonObject((a, b)) - assert_equal(str(nested_list), "[[1, 2, 3], [4, 5, 6]]") - assert_equal(str(nested_tuple), "([1, 2, 3], [4, 5, 6])") + assert_equal(String(nested_list), "[[1, 2, 3], [4, 5, 6]]") + assert_equal(String(nested_tuple), "([1, 2, 3], [4, 5, 6])") fn test_iter() raises: @@ -368,9 +368,9 @@ fn test_iter() raises: fn test_setitem() raises: var ll = PythonObject([1, 2, 3, "food"]) - assert_equal(str(ll), "[1, 2, 3, 'food']") + assert_equal(String(ll), "[1, 2, 3, 'food']") ll[1] = "nomnomnom" - assert_equal(str(ll), "[1, 'nomnomnom', 3, 'food']") + assert_equal(String(ll), "[1, 'nomnomnom', 3, 'food']") fn test_dict() raises: @@ -380,20 +380,20 @@ fn test_dict() raises: d["food"] = 123 # intentionally replace to ensure keys stay in order var dd = PythonObject(d) - assert_equal(str(dd), "{'food': 123, 'fries': 'yes'}") + assert_equal(String(dd), "{'food': 123, 'fries': 'yes'}") dd["food"] = "salad" dd[42] = Python.evaluate("[4, 2]") - assert_equal(str(dd), "{'food': 'salad', 'fries': 'yes', 42: [4, 2]}") + assert_equal(String(dd), "{'food': 'salad', 'fries': 'yes', 42: [4, 2]}") # Also test that Python.dict() creates the right object. var empty = Python.dict() - assert_equal(str(empty), "{}") + assert_equal(String(empty), "{}") fn test_none() raises: var n = Python.none() - assert_equal(str(n), "None") + assert_equal(String(n), "None") assert_true(n is None) @@ -425,9 +425,9 @@ fn test_getitem_raises() raises: _ = d[0, 0] with_get = custom_indexable.WithGetItem() - assert_equal("Key: 0", str(with_get[0])) - assert_equal("Keys: 0, 0", str(with_get[0, 0])) - assert_equal("Keys: 0, 0, 0", str(with_get[0, 0, 0])) + assert_equal("Key: 0", String(with_get[0])) + assert_equal("Keys: 0, 0", String(with_get[0, 0])) + assert_equal("Keys: 0, 0, 0", String(with_get[0, 0, 0])) var without_get = custom_indexable.Simple() with assert_raises(contains="'Simple' object is not subscriptable"): @@ -441,7 +441,7 @@ fn test_getitem_raises() raises: _ = with_get_exception[1] with_2d = custom_indexable.With2DGetItem() - assert_equal("[1, 2, 3]", str(with_2d[0])) + assert_equal("[1, 2, 3]", String(with_2d[0])) assert_equal(2, with_2d[0, 1]) assert_equal(6, with_2d[1, 2]) @@ -487,43 +487,43 @@ def test_setitem_raises(): fn test_py_slice() raises: custom_indexable = Python.import_module("custom_indexable") var a = PythonObject([1, 2, 3, 4, 5]) - assert_equal("[2, 3]", str(a[1:3])) - assert_equal("[1, 2, 3, 4, 5]", str(a[:])) - assert_equal("[1, 2, 3]", str(a[:3])) - assert_equal("[3, 4, 5]", str(a[2:])) - assert_equal("[1, 3, 5]", str(a[::2])) - assert_equal("[2, 4]", str(a[1::2])) - assert_equal("[4, 5]", str(a[-2:])) - assert_equal("[1, 2, 3]", str(a[:-2])) - assert_equal("[5, 4, 3, 2, 1]", str(a[::-1])) - assert_equal("[1, 2, 3, 4, 5]", str(a[-10:10])) # out of bounds - assert_equal("[1, 2, 3, 4, 5]", str(a[::])) - assert_equal("[1, 2, 3, 4, 5]", str(a[:100])) - assert_equal("[]", str(a[5:])) - assert_equal("[5, 4, 3, 2]", str(a[:-5:-1])) + assert_equal("[2, 3]", String(a[1:3])) + assert_equal("[1, 2, 3, 4, 5]", String(a[:])) + assert_equal("[1, 2, 3]", String(a[:3])) + assert_equal("[3, 4, 5]", String(a[2:])) + assert_equal("[1, 3, 5]", String(a[::2])) + assert_equal("[2, 4]", String(a[1::2])) + assert_equal("[4, 5]", String(a[-2:])) + assert_equal("[1, 2, 3]", String(a[:-2])) + assert_equal("[5, 4, 3, 2, 1]", String(a[::-1])) + assert_equal("[1, 2, 3, 4, 5]", String(a[-10:10])) # out of bounds + assert_equal("[1, 2, 3, 4, 5]", String(a[::])) + assert_equal("[1, 2, 3, 4, 5]", String(a[:100])) + assert_equal("[]", String(a[5:])) + assert_equal("[5, 4, 3, 2]", String(a[:-5:-1])) var b = Python.evaluate("[i for i in range(1000)]") - assert_equal("[0, 250, 500, 750]", str(b[::250])) + assert_equal("[0, 250, 500, 750]", String(b[::250])) with assert_raises(contains="slice step cannot be zero"): _ = b[::0] # Negative cases such as `b[1.3:10]` or `b["1":10]` are handled by parser # which would normally throw a TypeError in Python var s = PythonObject("Hello, World!") - assert_equal("Hello", str(s[:5])) - assert_equal("World!", str(s[7:])) - assert_equal("!dlroW ,olleH", str(s[::-1])) - assert_equal("Hello, World!", str(s[:])) - assert_equal("Hlo ol!", str(s[::2])) - assert_equal("Hlo ol!", str(s[None:None:2])) + assert_equal("Hello", String(s[:5])) + assert_equal("World!", String(s[7:])) + assert_equal("!dlroW ,olleH", String(s[::-1])) + assert_equal("Hello, World!", String(s[:])) + assert_equal("Hlo ol!", String(s[::2])) + assert_equal("Hlo ol!", String(s[None:None:2])) var t = PythonObject((1, 2, 3, 4, 5)) - assert_equal("(2, 3, 4)", str(t[1:4])) - assert_equal("(4, 3, 2)", str(t[3:0:-1])) + assert_equal("(2, 3, 4)", String(t[1:4])) + assert_equal("(4, 3, 2)", String(t[3:0:-1])) var empty = PythonObject([]) - assert_equal("[]", str(empty[:])) - assert_equal("[]", str(empty[1:2:3])) + assert_equal("[]", String(empty[:])) + assert_equal("[]", String(empty[1:2:3])) # TODO: enable this test. Currently it fails with error: unhashable type: 'slice' # var d = Python.dict() @@ -533,31 +533,31 @@ fn test_py_slice() raises: # _ = d[1:3] var custom = custom_indexable.Sliceable() - assert_equal("slice(1, 3, None)", str(custom[1:3])) + assert_equal("slice(1, 3, None)", String(custom[1:3])) var i = PythonObject(1) with assert_raises(contains="'int' object is not subscriptable"): _ = i[0:1] with_2d = custom_indexable.With2DGetItem() - assert_equal("[1, 2]", str(with_2d[0, PythonObject(Slice(0, 2))])) - assert_equal("[1, 2]", str(with_2d[0][0:2])) + assert_equal("[1, 2]", String(with_2d[0, PythonObject(Slice(0, 2))])) + assert_equal("[1, 2]", String(with_2d[0][0:2])) - assert_equal("[4, 5, 6]", str(with_2d[PythonObject(Slice(0, 2)), 1])) - assert_equal("[4, 5, 6]", str(with_2d[0:2][1])) + assert_equal("[4, 5, 6]", String(with_2d[PythonObject(Slice(0, 2)), 1])) + assert_equal("[4, 5, 6]", String(with_2d[0:2][1])) assert_equal( - "[[1, 2, 3], [4, 5, 6]]", str(with_2d[PythonObject(Slice(0, 2))]) + "[[1, 2, 3], [4, 5, 6]]", String(with_2d[PythonObject(Slice(0, 2))]) ) - assert_equal("[[1, 2, 3], [4, 5, 6]]", str(with_2d[0:2])) - assert_equal("[[1, 3], [4, 6]]", str(with_2d[0:2, ::2])) + assert_equal("[[1, 2, 3], [4, 5, 6]]", String(with_2d[0:2])) + assert_equal("[[1, 3], [4, 6]]", String(with_2d[0:2, ::2])) assert_equal( - "[6, 5, 4]", str(with_2d[1, PythonObject(Slice(None, None, -1))]) + "[6, 5, 4]", String(with_2d[1, PythonObject(Slice(None, None, -1))]) ) - assert_equal("[6, 5, 4]", str(with_2d[1][::-1])) + assert_equal("[6, 5, 4]", String(with_2d[1][::-1])) - assert_equal("[7, 9]", str(with_2d[2][::2])) + assert_equal("[7, 9]", String(with_2d[2][::2])) with assert_raises(contains="list index out of range"): _ = with_2d[0:1][4] diff --git a/stdlib/test/python/test_python_to_mojo.mojo b/stdlib/test/python/test_python_to_mojo.mojo index d621943f9c..a8dc7aca97 100644 --- a/stdlib/test/python/test_python_to_mojo.mojo +++ b/stdlib/test/python/test_python_to_mojo.mojo @@ -21,7 +21,7 @@ fn test_string_to_python_to_mojo(mut python: Python) raises: var py_string = PythonObject("mojo") var py_string_capitalized = py_string.capitalize() - var cap_mojo_string = str(py_string_capitalized) + var cap_mojo_string = String(py_string_capitalized) assert_equal(cap_mojo_string, "Mojo") @@ -54,7 +54,7 @@ fn test_range() raises: fn test_python_to_string() raises: var os = Python.import_module("os") - assert_true(str(os.environ).startswith("environ({")) + assert_true(String(os.environ).startswith("environ({")) def main(): diff --git a/stdlib/test/random/test_random.mojo b/stdlib/test/random/test_random.mojo index 0a90b5ae89..384a2f4ed6 100644 --- a/stdlib/test/random/test_random.mojo +++ b/stdlib/test/random/test_random.mojo @@ -29,24 +29,24 @@ def test_random(): var random_float = random_float64(0, 1) assert_true( random_float >= 0, - "Value " + str(random_float) + " is not above or equal to 0", + "Value " + String(random_float) + " is not above or equal to 0", ) assert_true( random_float <= 1, - "Value " + str(random_float) + " is not below or equal to 1", + "Value " + String(random_float) + " is not below or equal to 1", ) var random_signed = random_si64(-255, 255) assert_true( random_signed >= -255, "Signed value " - + str(random_signed) + + String(random_signed) + " is not above or equal to -255", ) assert_true( random_signed <= 255, "Signed value " - + str(random_signed) + + String(random_signed) + " is not below or equal to 255", ) @@ -54,13 +54,13 @@ def test_random(): assert_true( random_unsigned >= 0, "Unsigned value " - + str(random_unsigned) + + String(random_unsigned) + " is not above or equal to 0", ) assert_true( random_unsigned <= 255, "Unsigned value " - + str(random_unsigned) + + String(random_unsigned) + " is not below or equal to 255", ) @@ -135,14 +135,14 @@ def test_shuffle(): var i = L_l_s() var j = L_l_s() for x in range(10): - i.append(L_s(str(x), str(x + 1), str(x + 3))) - j.append(L_s(str(x), str(x + 1), str(x + 3))) + i.append(L_s(String(x), String(x + 1), String(x + 3))) + j.append(L_s(String(x), String(x + 1), String(x + 3))) shuffle(i) # TODO: Uncomment when possible # assert_true(g != h) assert_equal(len(i), len(j)) for x in range(10): - var target: List[String] = L_s(str(x), str(x + 1), str(x + 3)) + var target: List[String] = L_s(String(x), String(x + 1), String(x + 3)) var found = False for y in range(len(i)): if j[y] == target: diff --git a/stdlib/test/tempfile/test_tempfile.mojo b/stdlib/test/tempfile/test_tempfile.mojo index d84ac25554..6f8fcf8b17 100644 --- a/stdlib/test/tempfile/test_tempfile.mojo +++ b/stdlib/test/tempfile/test_tempfile.mojo @@ -101,7 +101,7 @@ def _set_up_gettempdir_test( os.rmdir(dir_with_writing_access) raise Error( "Failed to setup test, couldn't create " - + str(dir_without_writing_access) + + String(dir_without_writing_access) ) @@ -109,7 +109,7 @@ def test_gettempdir(): var non_existing_dir = Path() / "non_existing_dir" assert_false( exists(non_existing_dir), - "Unexpected dir" + str(non_existing_dir), + "Unexpected dir" + String(non_existing_dir), ) var dir_without_writing_access = Path() / "dir_without_writing_access" var dir_with_writing_access = Path() / "dir_with_writing_access" @@ -119,7 +119,7 @@ def test_gettempdir(): var vars_to_set = Dict[String, String]() # test TMPDIR is used first - vars_to_set["TMPDIR"] = str(dir_with_writing_access) + vars_to_set["TMPDIR"] = String(dir_with_writing_access) with TempEnvWithCleanup( vars_to_set, _clean_up_gettempdir_test, @@ -128,13 +128,13 @@ def test_gettempdir(): assert_true(tmpdir_result, "Failed to get temporary directory") assert_equal( tmpdir_result.value(), - str(dir_with_writing_access), - "expected to get:" + str(dir_with_writing_access), + String(dir_with_writing_access), + "expected to get:" + String(dir_with_writing_access), ) # test gettempdir falls back to TEMP - vars_to_set["TMPDIR"] = str(non_existing_dir) - vars_to_set["TEMP"] = str(dir_with_writing_access) + vars_to_set["TMPDIR"] = String(non_existing_dir) + vars_to_set["TEMP"] = String(dir_with_writing_access) with TempEnvWithCleanup( vars_to_set, _clean_up_gettempdir_test, @@ -143,14 +143,14 @@ def test_gettempdir(): assert_true(tmpdir_result, "Failed to get temporary directory") assert_equal( tmpdir_result.value(), - str(dir_with_writing_access), - "expected to get:" + str(dir_with_writing_access), + String(dir_with_writing_access), + "expected to get:" + String(dir_with_writing_access), ) # test gettempdir falls back to TMP - vars_to_set["TMPDIR"] = str(non_existing_dir) - vars_to_set["TEMP"] = str(non_existing_dir) - vars_to_set["TMP"] = str(dir_with_writing_access) + vars_to_set["TMPDIR"] = String(non_existing_dir) + vars_to_set["TEMP"] = String(non_existing_dir) + vars_to_set["TMP"] = String(dir_with_writing_access) with TempEnvWithCleanup( vars_to_set, _clean_up_gettempdir_test, @@ -159,8 +159,8 @@ def test_gettempdir(): assert_true(tmpdir_result, "Failed to get temporary directory") assert_equal( tmpdir_result.value(), - str(dir_with_writing_access), - "expected to get:" + str(dir_with_writing_access), + String(dir_with_writing_access), + "expected to get:" + String(dir_with_writing_access), ) _clean_up_gettempdir_test() diff --git a/stdlib/test/testing/test_assert_raises.mojo b/stdlib/test/testing/test_assert_raises.mojo index 4dda27ca87..50c1c17326 100644 --- a/stdlib/test/testing/test_assert_raises.mojo +++ b/stdlib/test/testing/test_assert_raises.mojo @@ -39,9 +39,9 @@ fn test_assert_raises_no_error() raises: pass raise Error("This should not be reachable.") except e: - assert_true(str(e).startswith("AssertionError: Didn't raise")) - assert_true(str(e).endswith(":27")) # col 27 - assert_true(str(e) != "This should not be reachable.") + assert_true(String(e).startswith("AssertionError: Didn't raise")) + assert_true(String(e).endswith(":27")) # col 27 + assert_true(String(e) != "This should not be reachable.") fn test_assert_raises_no_match() raises: @@ -50,7 +50,7 @@ fn test_assert_raises_no_match() raises: raise "OtherError" raise Error("This should not be reachable.") except e: - assert_equal(str(e), "OtherError") + assert_equal(String(e), "OtherError") def main(): diff --git a/stdlib/test/testing/test_assertion.mojo b/stdlib/test/testing/test_assertion.mojo index c9aaaf6d9d..c7153040fb 100644 --- a/stdlib/test/testing/test_assertion.mojo +++ b/stdlib/test/testing/test_assertion.mojo @@ -35,22 +35,22 @@ def test_assert_messages(): try: assert_true(False) except e: - assert_true(assertion in str(e) and assertion_error in str(e)) + assert_true(assertion in String(e) and assertion_error in String(e)) try: assert_false(True) except e: - assert_true(assertion in str(e) and assertion_error in str(e)) + assert_true(assertion in String(e) and assertion_error in String(e)) try: assert_equal(1, 0) except e: - assert_true(assertion in str(e) and assertion_error in str(e)) + assert_true(assertion in String(e) and assertion_error in String(e)) try: assert_not_equal(0, 0) except e: - assert_true(assertion in str(e) and assertion_error in str(e)) + assert_true(assertion in String(e) and assertion_error in String(e)) @value @@ -236,8 +236,8 @@ def test_assert_custom_location(): location=location, ) except e: - assert_true(str(location) in str(e)) - assert_true("always_false" in str(e)) + assert_true(String(location) in String(e)) + assert_true("always_false" in String(e)) def test_assert_equal_stringslice(): diff --git a/stdlib/test/utils/test_index.mojo b/stdlib/test/utils/test_index.mojo index 500fdcf259..ff5236890c 100644 --- a/stdlib/test/utils/test_index.mojo +++ b/stdlib/test/utils/test_index.mojo @@ -20,38 +20,38 @@ from utils import Index, IndexList def test_basics(): assert_equal(IndexList[2](1, 2), IndexList[2](1, 2)) assert_equal(IndexList[3](1, 2, 3), IndexList[3](1, 2, 3)) - assert_equal(str(IndexList[3](1, 2, 3)), "(1, 2, 3)") + assert_equal(String(IndexList[3](1, 2, 3)), "(1, 2, 3)") assert_equal(IndexList[3](1, 2, 3)[2], 3) def test_cast(): assert_equal( - str(IndexList[1](1)), + String(IndexList[1](1)), "(1,)", ) assert_equal( - str(IndexList[2](1, 2).cast[DType.int32]()), + String(IndexList[2](1, 2).cast[DType.int32]()), "(1, 2)", ) assert_equal( - str(IndexList[2, element_bitwidth=64](1, 2).cast[DType.int32]()), + String(IndexList[2, element_bitwidth=64](1, 2).cast[DType.int32]()), "(1, 2)", ) assert_equal( - str(IndexList[2, element_bitwidth=32](1, 2).cast[DType.int64]()), + String(IndexList[2, element_bitwidth=32](1, 2).cast[DType.int64]()), "(1, 2)", ) assert_equal( - str( + String( IndexList[2, element_bitwidth=32](1, -2).cast[element_bitwidth=64]() ), "(1, -2)", ) assert_equal( - str(IndexList[2, element_bitwidth=32](1, 2)), + String(IndexList[2, element_bitwidth=32](1, 2)), "(1, 2)", ) - alias s = str( + alias s = String( IndexList[2, element_bitwidth=32](1, 2).cast[ element_bitwidth=64, unsigned=True ]() @@ -61,10 +61,10 @@ def test_cast(): def test_index(): - assert_equal(str(Index[element_bitwidth=64](1, 2, 3)), "(1, 2, 3)") - assert_equal(str(Index[element_bitwidth=32](1, 2, 3)), "(1, 2, 3)") + assert_equal(String(Index[element_bitwidth=64](1, 2, 3)), "(1, 2, 3)") + assert_equal(String(Index[element_bitwidth=32](1, 2, 3)), "(1, 2, 3)") assert_equal( - str(Index[element_bitwidth=32, unsigned=True](1, 2, 3)), "(1, 2, 3)" + String(Index[element_bitwidth=32, unsigned=True](1, 2, 3)), "(1, 2, 3)" ) diff --git a/stdlib/test/utils/test_tuple.mojo b/stdlib/test/utils/test_tuple.mojo index 0748552be0..1feb95f50a 100644 --- a/stdlib/test/utils/test_tuple.mojo +++ b/stdlib/test/utils/test_tuple.mojo @@ -20,21 +20,21 @@ from utils import IndexList, StaticTuple def test_static_int_tuple(): - assert_equal(str(IndexList[1](1)), "(1,)") + assert_equal(String(IndexList[1](1)), "(1,)") - assert_equal(str(IndexList[3](2)), "(2, 2, 2)") + assert_equal(String(IndexList[3](2)), "(2, 2, 2)") assert_equal( - str(IndexList[3](1, 2, 3) * IndexList[3](4, 5, 6)), + String(IndexList[3](1, 2, 3) * IndexList[3](4, 5, 6)), "(4, 10, 18)", ) assert_equal( - str(IndexList[4](1, 2, 3, 4) - IndexList[4](4, 5, 6, 7)), + String(IndexList[4](1, 2, 3, 4) - IndexList[4](4, 5, 6, 7)), "(-3, -3, -3, -3)", ) - assert_equal(str(IndexList[2](10, 11) // IndexList[2](3, 4)), "(3, 2)") + assert_equal(String(IndexList[2](10, 11) // IndexList[2](3, 4)), "(3, 2)") # Note: index comparison is intended for access bound checking, which is # usually all-element semantic, i.e. true if true for all positions. @@ -44,9 +44,9 @@ def test_static_int_tuple(): assert_equal(len(IndexList[4](3, 5, -1, -2)), 4) - assert_equal(str(IndexList[2]((1, 2))), "(1, 2)") + assert_equal(String(IndexList[2]((1, 2))), "(1, 2)") - assert_equal(str(IndexList[4]((1, 2, 3, 4))), "(1, 2, 3, 4)") + assert_equal(String(IndexList[4]((1, 2, 3, 4))), "(1, 2, 3, 4)") def test_tuple_literal(): diff --git a/stdlib/test/utils/test_write.mojo b/stdlib/test/utils/test_write.mojo index 579b573892..77bb3fb5a9 100644 --- a/stdlib/test/utils/test_write.mojo +++ b/stdlib/test/utils/test_write.mojo @@ -70,13 +70,13 @@ fn test_string_format_seq() raises: fn test_stringable_based_on_format() raises: - assert_equal(str(Point(10, 11)), "Point(10, 11)") + assert_equal(String(Point(10, 11)), "Point(10, 11)") fn test_writer_of_fixed_string() raises: var s1 = _FixedString[100]() s1.write("Hello, World!") - assert_equal(str(s1), "Hello, World!") + assert_equal(String(s1), "Hello, World!") fn test_write_int_padded() raises: From 2964e246b6a8babc2473940c9c9ce34bc1b5a34d Mon Sep 17 00:00:00 2001 From: Jack Clayton Date: Wed, 15 Jan 2025 23:27:57 -0500 Subject: [PATCH 248/509] [stdlib] Move `bool` functions to `Bool` ctors And add deprecation warnings to the `bool` functions, to be phased out to a compiler error in the release after next. MODULAR_ORIG_COMMIT_REV_ID: 6aac03285e2f69659e1208a372d5130c4f203f3d --- docs/manual/python/types.mdx | 31 ++++++++-------- stdlib/benchmarks/builtin/bench_int.mojo | 2 +- stdlib/benchmarks/collections/bench_dict.mojo | 4 +- .../benchmarks/collections/bench_string.mojo | 14 +++---- stdlib/src/builtin/_format_float.mojo | 6 +-- stdlib/src/builtin/bool.mojo | 37 ++++++++++++------- stdlib/src/collections/counter.mojo | 2 +- stdlib/src/collections/optional.mojo | 4 +- .../src/collections/string/string_slice.mojo | 2 +- stdlib/src/sys/ffi.mojo | 2 +- stdlib/test/builtin/test_bool.mojo | 6 +-- 11 files changed, 60 insertions(+), 50 deletions(-) diff --git a/docs/manual/python/types.mdx b/docs/manual/python/types.mdx index ee0f0d17a5..850efc8434 100644 --- a/docs/manual/python/types.mdx +++ b/docs/manual/python/types.mdx @@ -147,25 +147,24 @@ explicitly convert a Python value into a native Mojo value. Currently `PythonObject` conforms to the [`Stringable`](/mojo/stdlib/builtin/str/Stringable), [`Boolable`](/mojo/stdlib/builtin/bool/Boolable), -[`Floatable`](/mojo/stdlib/builtin/floatable/Floatable/), and -[`Intable`](/mojo/stdlib/builtin/int/Intable) traits, which means you can -convert Python values to Mojo `Bool` and `Float64` types using the -[`bool()`](/mojo/stdlib/builtin/bool/bool-function) and -[`float()`](/mojo/stdlib/builtin/floatable/float/) built-in functions, construct -an `Int` using the [`Int()`](/mojo/stdlib/builtin/int/Int/#__init__) -constructor, and construct a `String` using the -[`String()`](/mojo/stdlib/collections/string/String/#__init__) constructor. -`PythonObject` also conforms to the -[`Writable`](/mojo/stdlib/utils/write/Writable) trait so that you can print -Python values using the built-in [`print()`](/mojo/stdlib/builtin/io/print) -function. +[`Intable`](/mojo/stdlib/builtin/int/Intable), and +[`Floatable`](/mojo/stdlib/builtin/floatable/Floatable/) traits, which allows +you to convert a `PythonObject` to the corresponding Mojo types. ```mojo -var s: String = String(py_string) -var b: Bool = bool(py_bool) +var s = String(py_string) +var b = Bool(py_bool) +var i = Int(py_int) + var f: Float64 = float(py_float) -var i: Int = Int(py_int) -print(py_obj) +``` + +PythonObject also implements the [`Writable`](/mojo/stdlib/utils/write/Writable) +trait, so that you can print Python values using the built-in +[`print()`](/mojo/stdlib/builtin/io/print) function. + +```mojo +print(python_object) ``` ### Comparing Python types in Mojo diff --git a/stdlib/benchmarks/builtin/bench_int.mojo b/stdlib/benchmarks/builtin/bench_int.mojo index efc4b171a5..7147b4a94c 100644 --- a/stdlib/benchmarks/builtin/bench_int.mojo +++ b/stdlib/benchmarks/builtin/bench_int.mojo @@ -27,7 +27,7 @@ fn bench_stringify_small_integers(mut b: Bencher) raises: fn call_fn(): for i in range(1_000): var a = String(i) - benchmark.keep(bool(a)) + benchmark.keep(Bool(a)) b.iter[call_fn]() diff --git a/stdlib/benchmarks/collections/bench_dict.mojo b/stdlib/benchmarks/collections/bench_dict.mojo index 3a740b96f9..10f04f62ae 100644 --- a/stdlib/benchmarks/collections/bench_dict.mojo +++ b/stdlib/benchmarks/collections/bench_dict.mojo @@ -65,7 +65,7 @@ fn bench_dict_insert[size: Int](mut b: Bencher) raises: items[key] = Int(random.random_si64(0, size)) b.iter[call_fn]() - keep(bool(items)) + keep(Bool(items)) # ===-----------------------------------------------------------------------===# @@ -93,7 +93,7 @@ fn bench_dict_lookup[size: Int](mut b: Bencher) raises: keep(res) b.iter[call_fn]() - keep(bool(items)) + keep(Bool(items)) # ===-----------------------------------------------------------------------===# diff --git a/stdlib/benchmarks/collections/bench_string.mojo b/stdlib/benchmarks/collections/bench_string.mojo index bcbf29a0c0..39ca437068 100644 --- a/stdlib/benchmarks/collections/bench_string.mojo +++ b/stdlib/benchmarks/collections/bench_string.mojo @@ -94,7 +94,7 @@ fn bench_string_count[ keep(amnt) b.iter[call_fn]() - keep(bool(items)) + keep(Bool(items)) # ===-----------------------------------------------------------------------===# @@ -121,7 +121,7 @@ fn bench_string_split[ keep(res.data) b.iter[call_fn]() - keep(bool(items)) + keep(Bool(items)) # ===-----------------------------------------------------------------------===# @@ -140,7 +140,7 @@ fn bench_string_splitlines[ keep(res.data) b.iter[call_fn]() - keep(bool(items)) + keep(Bool(items)) # ===-----------------------------------------------------------------------===# @@ -159,7 +159,7 @@ fn bench_string_lower[ keep(res._buffer.data) b.iter[call_fn]() - keep(bool(items)) + keep(Bool(items)) # ===-----------------------------------------------------------------------===# @@ -178,7 +178,7 @@ fn bench_string_upper[ keep(res._buffer.data) b.iter[call_fn]() - keep(bool(items)) + keep(Bool(items)) # ===-----------------------------------------------------------------------===# @@ -200,7 +200,7 @@ fn bench_string_replace[ keep(res._buffer.data) b.iter[call_fn]() - keep(bool(items)) + keep(Bool(items)) # ===-----------------------------------------------------------------------===# @@ -219,7 +219,7 @@ fn bench_string_is_valid_utf8[ keep(res) b.iter[call_fn]() - keep(bool(items)) + keep(Bool(items)) # ===-----------------------------------------------------------------------===# diff --git a/stdlib/src/builtin/_format_float.mojo b/stdlib/src/builtin/_format_float.mojo index ad1a93b0da..690501c379 100644 --- a/stdlib/src/builtin/_format_float.mojo +++ b/stdlib/src/builtin/_format_float.mojo @@ -545,16 +545,16 @@ fn _divide_by_pow10[ if CarrierDType is DType.uint64: @parameter - if N == 1 and bool(n_max <= 4611686018427387908): + if N == 1 and Bool(n_max <= 4611686018427387908): return _umul128_upper64(n, 1844674407370955162) - elif N == 3 and bool(n_max <= 15534100272597517998): + elif N == 3 and Bool(n_max <= 15534100272597517998): return _umul128_upper64(n, 4722366482869645214) >> 8 else: return n / pow(10, N) else: @parameter - if N == 1 and bool(n_max <= 1073741828): + if N == 1 and Bool(n_max <= 1073741828): return (_umul64(n.cast[DType.uint32](), 429496730) >> 32).cast[ CarrierDType ]() diff --git a/stdlib/src/builtin/bool.mojo b/stdlib/src/builtin/bool.mojo index 3ca5f39680..1b6a4450f4 100644 --- a/stdlib/src/builtin/bool.mojo +++ b/stdlib/src/builtin/bool.mojo @@ -167,6 +167,27 @@ struct Bool( """ self = value.__bool__() + @always_inline + fn __init__[T: Boolable, //](out self, value: T): + """Set the bool representation of the object. + + Parameters: + T: The type of the object. + + Args: + value: The object to get the bool representation of. + """ + self = value.__bool__() + + @always_inline + fn __init__(out self, value: None): + """Set the bool representation of the `None` type to `False`. + + Args: + value: The object to get the bool representation of. + """ + self = False + @always_inline("nodebug") @implicit fn __init__(out self, value: SIMD[DType.bool, 1]): @@ -533,19 +554,9 @@ struct Bool( # ===----------------------------------------------------------------------=== # -@always_inline -fn bool(value: None) -> Bool: - """Get the bool representation of the `None` type. - - Args: - value: The object to get the bool representation of. - - Returns: - The bool representation of the object. - """ - return False - - +@deprecated( + "the `bool` function is deprecated, use the `Bool` constructor instead." +) @always_inline fn bool[T: Boolable, //](value: T) -> Bool: """Get the bool representation of the object. diff --git a/stdlib/src/collections/counter.mojo b/stdlib/src/collections/counter.mojo index abe33c2fb8..fc2e4fea03 100644 --- a/stdlib/src/collections/counter.mojo +++ b/stdlib/src/collections/counter.mojo @@ -160,7 +160,7 @@ struct Counter[V: KeyElement](Sized, CollectionElement, Boolable): Returns: `False` if the Counter is empty, `True` otherwise. """ - return bool(len(self)) + return Bool(len(self)) # ===------------------------------------------------------------------=== # # Comparison operators diff --git a/stdlib/src/collections/optional.mojo b/stdlib/src/collections/optional.mojo index b96d3d694a..806119a053 100644 --- a/stdlib/src/collections/optional.mojo +++ b/stdlib/src/collections/optional.mojo @@ -22,7 +22,7 @@ var a = Optional(1) var b = Optional[Int](None) if a: print(a.value()) # prints 1 -if b: # bool(b) is False, so no print +if b: # Bool(b) is False, so no print print(b.value()) var c = a.or_else(2) var d = b.or_else(2) @@ -73,7 +73,7 @@ struct Optional[T: CollectionElement]( var b = Optional[Int](None) if a: print(a.value()) # prints 1 - if b: # bool(b) is False, so no print + if b: # Bool(b) is False, so no print print(b.value()) var c = a.or_else(2) var d = b.or_else(2) diff --git a/stdlib/src/collections/string/string_slice.mojo b/stdlib/src/collections/string/string_slice.mojo index 0e012d6c66..c6425bf838 100644 --- a/stdlib/src/collections/string/string_slice.mojo +++ b/stdlib/src/collections/string/string_slice.mojo @@ -247,7 +247,7 @@ struct CharsIter[mut: Bool, //, origin: Origin[mut]]: Returns: A boolean indicating if there are still elements in this iterator. """ - return bool(self.peek_next()) + return Bool(self.peek_next()) @always_inline fn __len__(self) -> Int: diff --git a/stdlib/src/sys/ffi.mojo b/stdlib/src/sys/ffi.mojo index 429dd1e0f7..cafee526e0 100644 --- a/stdlib/src/sys/ffi.mojo +++ b/stdlib/src/sys/ffi.mojo @@ -206,7 +206,7 @@ struct DLHandle(CollectionElement, CollectionElementNew, Boolable): name.unsafe_cstr_ptr(), ) - return bool(opaque_function_ptr) + return Bool(opaque_function_ptr) # TODO(#15590): Implement support for windows and remove the always_inline. @always_inline diff --git a/stdlib/test/builtin/test_bool.mojo b/stdlib/test/builtin/test_bool.mojo index 11d0a353dd..081a31bc38 100644 --- a/stdlib/test/builtin/test_bool.mojo +++ b/stdlib/test/builtin/test_bool.mojo @@ -29,8 +29,8 @@ def test_bool_cast_to_int(): def test_bool_none(): var test = None - assert_equal(bool(None), False) - assert_equal(bool(test), False) + assert_equal(Bool(None), False) + assert_equal(Bool(test), False) @value @@ -48,7 +48,7 @@ fn takes_bool(cond: Bool) -> Bool: def test_convert_from_implicitly_boolable(): assert_true(takes_bool(MyTrue())) - assert_true(bool(MyTrue())) + assert_true(Bool(MyTrue())) # def test_bool_to_string(): From ccdb14a83b55eaedeb008e2a8e710e2c206c6209 Mon Sep 17 00:00:00 2001 From: modularbot Date: Thu, 16 Jan 2025 06:41:26 +0000 Subject: [PATCH 249/509] Update lockfiles to point to latest nightly version: 25.1.0.dev2025011605 --- examples/life/magic.lock | 157 +- examples/magic.lock | 157 +- examples/notebooks/magic.lock | 157 +- examples/operators/magic.lock | 157 +- examples/testing/magic.lock | 7274 +++++++++++++++++++++++++++++++++ magic.lock | 157 +- 6 files changed, 7664 insertions(+), 395 deletions(-) create mode 100644 examples/testing/magic.lock diff --git a/examples/life/magic.lock b/examples/life/magic.lock index dd001a3484..5a1423aa1f 100644 --- a/examples/life/magic.lock +++ b/examples/life/magic.lock @@ -170,12 +170,12 @@ 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-25.1.0.dev2025011505-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025011505-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025011505-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011605-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025011605-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025011605-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011605-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-25.1.0.dev2025011505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011605-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_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.15-py312h98912ed_1.conda @@ -446,12 +446,12 @@ 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-25.1.0.dev2025011505-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025011505-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025011505-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011605-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025011605-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025011605-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011605-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-25.1.0.dev2025011505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011605-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_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.15-py312hdd3e373_1.conda @@ -701,16 +701,16 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxcb-1.17.0-hdb1d25a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.5-h178c5d8_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.6-hdb05f8b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda - 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-25.1.0.dev2025011505-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025011505-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025011505-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011605-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025011605-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025011605-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011605-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-25.1.0.dev2025011505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011605-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 @@ -6067,19 +6067,18 @@ packages: license_family: Other size: 46438 timestamp: 1727963202283 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.6-hdb05f8b_0.conda - sha256: a0f3e9139ab16f0a67b9d2bbabc15b78977168f4a5b5503fed4962dcb9a96102 - md5: 34fdeffa0555a1a56f38839415cc066c +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda + sha256: b92a669f2059874ebdcb69041b6c243d68ffc3fb356ac1339cec44aeb27245d7 + md5: c4d54bfd3817313ce758aa76283b118d depends: - __osx >=11.0 constrains: - - openmp 19.1.6|19.1.6.* + - openmp 19.1.7|19.1.7.* arch: arm64 platform: osx license: Apache-2.0 WITH LLVM-exception - license_family: APACHE - size: 281251 - timestamp: 1734520462311 + size: 280830 + timestamp: 1736986295869 - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.10.0-h5888daf_1.conda sha256: 47326f811392a5fd3055f0f773036c392d26fdb32e4d8e7a8197eed951489346 md5: 9de5350a85c4a20c685259b889aa6393 @@ -6174,47 +6173,47 @@ packages: license_family: BSD size: 24048 timestamp: 1733219945697 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011505-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011605-release.conda noarch: python - sha256: fb653b1206a459970561cb99277971b809ef23dfbabb08067cf87ecc5316d144 - md5: 36d10ca6747cea3051f98f6c4340bdde + sha256: 66c70dda70094dd44776322c4274e0aedea1326e79407b710423d196fbf5c687 + md5: 63f0b9dbd781076f2346a4c90818fa77 depends: - - max-core ==25.1.0.dev2025011505 release - - max-python >=25.1.0.dev2025011505,<26.0a0 - - mojo-jupyter ==25.1.0.dev2025011505 release - - mblack ==25.1.0.dev2025011505 release + - max-core ==25.1.0.dev2025011605 release + - max-python >=25.1.0.dev2025011605,<26.0a0 + - mojo-jupyter ==25.1.0.dev2025011605 release + - mblack ==25.1.0.dev2025011605 release license: LicenseRef-Modular-Proprietary - size: 9920 - timestamp: 1736918190337 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025011505-release.conda - sha256: 5de02f267a7821eb30275253c0f03317e45befb2291b4c164d217e4a0be08489 - md5: e084403c468c3736de7b93e85ac55ca5 + size: 9918 + timestamp: 1737005226114 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025011605-release.conda + sha256: 833bf62b78d41a258c0f1c2fb33efe2ecd31d52c9f25e0927f3a3c06f3263143 + md5: 67b61208a7f51d98440b829a762aa983 depends: - - mblack ==25.1.0.dev2025011505 release + - mblack ==25.1.0.dev2025011605 release license: LicenseRef-Modular-Proprietary - size: 244663428 - timestamp: 1736918190336 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025011505-release.conda - sha256: b90cccb4ff28d8680f0221b696cfe260c3263afc92fcc90bae9e3e0205f6649a - md5: 6b38ab0cddf2d8d6ea3de50fa06daccf + size: 244845391 + timestamp: 1737004888429 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025011605-release.conda + sha256: cca47165ed2791ce97b8ed478c375ca5e19c9b1dbad2008a88fcf55976669e98 + md5: ec67c1c4477173523c480d0439f618ee depends: - - mblack ==25.1.0.dev2025011505 release + - mblack ==25.1.0.dev2025011605 release license: LicenseRef-Modular-Proprietary - size: 247150310 - timestamp: 1736918170378 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025011505-release.conda - sha256: 8e443193c3efccf88a1f335f56803cc8252a6087ceb570847fbc7d54373436dd - md5: 380f01b398f4026fa6d362bcd535bcce + size: 247313436 + timestamp: 1737005226112 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025011605-release.conda + sha256: 0c90b26d3a97472ecf01e8f96210d1b6becf10a628eb138a8fe9cba25c275f94 + md5: 67f133797e55bdfeae523889d117d24e depends: - - mblack ==25.1.0.dev2025011505 release + - mblack ==25.1.0.dev2025011605 release license: LicenseRef-Modular-Proprietary - size: 206696883 - timestamp: 1736918528488 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025011505-3.12release.conda - sha256: 8ffaf65c9e533d1c05e63208e5929f7047232682d71e241a8d078bd40784c070 - md5: 979326be6e37f9d08a2af9d3b5f5b173 + size: 206707824 + timestamp: 1737004945969 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025011605-3.12release.conda + sha256: 8ab036ac69684b74999f0274eb9741c0d0c4e036a0a777dfa2276539703bcf87 + md5: 6fde421d7d48ab50ec34964bfc003ab0 depends: - - max-core ==25.1.0.dev2025011505 release + - max-core ==25.1.0.dev2025011605 release - python 3.12.* - fastapi - httpx @@ -6235,13 +6234,13 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 124404054 - timestamp: 1736918190345 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025011505-3.12release.conda - sha256: d29135e77b8d7da7fc1e7fe00b6cefb5faded5da911430a1ff9090377cde6a0f - md5: 7ab99f094af5a6e10444022febf6158f + size: 124617353 + timestamp: 1737004888439 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025011605-3.12release.conda + sha256: 3b711e5ef7c518e1e6b69ff69c5c7505e9f5779ee99359c7b2808a6324bee5ca + md5: f264d20311c5422c256d177081752fc4 depends: - - max-core ==25.1.0.dev2025011505 release + - max-core ==25.1.0.dev2025011605 release - python 3.12.* - fastapi - httpx @@ -6262,13 +6261,13 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 127116659 - timestamp: 1736918170389 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025011505-3.12release.conda - sha256: f21679607c9939017d447c50d2732c8e842dcb29d18907390f5cd85254370ccf - md5: 112c450c08f0af99073a4dc4aae82576 + size: 127393468 + timestamp: 1737005226123 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025011605-3.12release.conda + sha256: f3c1e91c675ebf5835799c044f534e87840cae019df45e06ab50b09c4b819138 + md5: b42171a30a90eca86de374dc6562d2ab depends: - - max-core ==25.1.0.dev2025011505 release + - max-core ==25.1.0.dev2025011605 release - python 3.12.* - fastapi - httpx @@ -6289,12 +6288,12 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 110626067 - timestamp: 1736918528491 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011505-release.conda + size: 110522116 + timestamp: 1737004945972 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011605-release.conda noarch: python - sha256: f1dab48a1791a810711d1c7e484ea1c5340297d09f9493cd99604978a3c43717 - md5: d4a97c4b5ee27717785df58abcef3fb3 + sha256: cfd9e14c0c14fa02b6b61141ff4f9007a11eb3ed1b11cf48a717f215e27c7407 + md5: d60436499404c582b03af554c788436f depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -6304,8 +6303,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130819 - timestamp: 1736918190341 + size: 130793 + timestamp: 1737005226119 - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda sha256: 78c1bbe1723449c52b7a9df1af2ee5f005209f67e40b6e1d3c7619127c43b1c7 md5: 592132998493b3ff25fd7479396e8351 @@ -6315,18 +6314,18 @@ packages: license_family: MIT size: 14465 timestamp: 1733255681319 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011505-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011605-release.conda noarch: python - sha256: 87baffbf376e8562b6bde06c50c57d907ec9a6f6f338f342bddfad4fa83403e4 - md5: c14f190fae020526fc6559130272f1f8 + sha256: 68dcf6fcc24f226462c4a7004a2214a1696f2ad0cb8d7ac229ee9ec4ea2216ea + md5: 864d0b85ff8fd743209bea757229d010 depends: - - max-core ==25.1.0.dev2025011505 release + - max-core ==25.1.0.dev2025011605 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22931 - timestamp: 1736918190342 + size: 22934 + timestamp: 1737005226120 - conda: https://conda.anaconda.org/conda-forge/linux-64/mpg123-1.32.9-hc50e24c_0.conda sha256: 39c4700fb3fbe403a77d8cc27352fa72ba744db487559d5d44bf8411bb4ea200 md5: c7f302fd11eeb0987a6a5e1f3aed6a21 diff --git a/examples/magic.lock b/examples/magic.lock index f4e0cda51b..aa2ecfc4a4 100644 --- a/examples/magic.lock +++ b/examples/magic.lock @@ -131,12 +131,12 @@ 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-25.1.0.dev2025011505-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025011505-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025011505-3.11release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011605-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025011605-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025011605-3.11release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011605-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-25.1.0.dev2025011505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011605-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 @@ -349,12 +349,12 @@ 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-25.1.0.dev2025011505-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025011505-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025011505-3.11release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011605-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025011605-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025011605-3.11release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011605-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-25.1.0.dev2025011505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011605-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 @@ -554,16 +554,16 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxcb-1.17.0-hdb1d25a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.5-h178c5d8_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.6-hdb05f8b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda - 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-25.1.0.dev2025011505-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025011505-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025011505-3.11release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011605-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025011605-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025011605-3.11release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011605-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-25.1.0.dev2025011505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011605-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 @@ -4645,19 +4645,18 @@ packages: license_family: Other size: 46438 timestamp: 1727963202283 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.6-hdb05f8b_0.conda - sha256: a0f3e9139ab16f0a67b9d2bbabc15b78977168f4a5b5503fed4962dcb9a96102 - md5: 34fdeffa0555a1a56f38839415cc066c +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda + sha256: b92a669f2059874ebdcb69041b6c243d68ffc3fb356ac1339cec44aeb27245d7 + md5: c4d54bfd3817313ce758aa76283b118d depends: - __osx >=11.0 constrains: - - openmp 19.1.6|19.1.6.* + - openmp 19.1.7|19.1.7.* arch: arm64 platform: osx license: Apache-2.0 WITH LLVM-exception - license_family: APACHE - size: 281251 - timestamp: 1734520462311 + size: 280830 + timestamp: 1736986295869 - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.10.0-h5888daf_1.conda sha256: 47326f811392a5fd3055f0f773036c392d26fdb32e4d8e7a8197eed951489346 md5: 9de5350a85c4a20c685259b889aa6393 @@ -4752,47 +4751,47 @@ packages: license_family: BSD size: 24976 timestamp: 1733219849253 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011505-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011605-release.conda noarch: python - sha256: fb653b1206a459970561cb99277971b809ef23dfbabb08067cf87ecc5316d144 - md5: 36d10ca6747cea3051f98f6c4340bdde + sha256: 66c70dda70094dd44776322c4274e0aedea1326e79407b710423d196fbf5c687 + md5: 63f0b9dbd781076f2346a4c90818fa77 depends: - - max-core ==25.1.0.dev2025011505 release - - max-python >=25.1.0.dev2025011505,<26.0a0 - - mojo-jupyter ==25.1.0.dev2025011505 release - - mblack ==25.1.0.dev2025011505 release + - max-core ==25.1.0.dev2025011605 release + - max-python >=25.1.0.dev2025011605,<26.0a0 + - mojo-jupyter ==25.1.0.dev2025011605 release + - mblack ==25.1.0.dev2025011605 release license: LicenseRef-Modular-Proprietary - size: 9920 - timestamp: 1736918190337 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025011505-release.conda - sha256: 5de02f267a7821eb30275253c0f03317e45befb2291b4c164d217e4a0be08489 - md5: e084403c468c3736de7b93e85ac55ca5 + size: 9918 + timestamp: 1737005226114 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025011605-release.conda + sha256: 833bf62b78d41a258c0f1c2fb33efe2ecd31d52c9f25e0927f3a3c06f3263143 + md5: 67b61208a7f51d98440b829a762aa983 depends: - - mblack ==25.1.0.dev2025011505 release + - mblack ==25.1.0.dev2025011605 release license: LicenseRef-Modular-Proprietary - size: 244663428 - timestamp: 1736918190336 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025011505-release.conda - sha256: b90cccb4ff28d8680f0221b696cfe260c3263afc92fcc90bae9e3e0205f6649a - md5: 6b38ab0cddf2d8d6ea3de50fa06daccf + size: 244845391 + timestamp: 1737004888429 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025011605-release.conda + sha256: cca47165ed2791ce97b8ed478c375ca5e19c9b1dbad2008a88fcf55976669e98 + md5: ec67c1c4477173523c480d0439f618ee depends: - - mblack ==25.1.0.dev2025011505 release + - mblack ==25.1.0.dev2025011605 release license: LicenseRef-Modular-Proprietary - size: 247150310 - timestamp: 1736918170378 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025011505-release.conda - sha256: 8e443193c3efccf88a1f335f56803cc8252a6087ceb570847fbc7d54373436dd - md5: 380f01b398f4026fa6d362bcd535bcce + size: 247313436 + timestamp: 1737005226112 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025011605-release.conda + sha256: 0c90b26d3a97472ecf01e8f96210d1b6becf10a628eb138a8fe9cba25c275f94 + md5: 67f133797e55bdfeae523889d117d24e depends: - - mblack ==25.1.0.dev2025011505 release + - mblack ==25.1.0.dev2025011605 release license: LicenseRef-Modular-Proprietary - size: 206696883 - timestamp: 1736918528488 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025011505-3.11release.conda - sha256: c854f3fd876d1804109ff3cd42522ac689bebfe0725f2dc1fa6f770b511da929 - md5: 1b35513e522bd6148f1b11c52b959147 + size: 206707824 + timestamp: 1737004945969 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025011605-3.11release.conda + sha256: 871a3cc43052f0b29bbeec075c0b9963c43bdc10fc234746448d6950b77ff9a6 + md5: 14179d3572398ab1bbf4004ae43c6f3d depends: - - max-core ==25.1.0.dev2025011505 release + - max-core ==25.1.0.dev2025011605 release - python 3.11.* - fastapi - httpx @@ -4813,13 +4812,13 @@ packages: - uvicorn - python_abi 3.11.* *_cp311 license: LicenseRef-Modular-Proprietary - size: 124416691 - timestamp: 1736918190343 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025011505-3.11release.conda - sha256: 69533b14861d61ccdc7d39c18c8df35d40e3b85f6cf7b8aefc588c9b856665de - md5: 4fbf6154c783c385488ff5d2e589207f + size: 124645362 + timestamp: 1737004888437 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025011605-3.11release.conda + sha256: 3c96fb1819ea00d81efb078e753a6d150cf5bf83a73e1a19fec032325538dbb4 + md5: 3bd00fa93e9306846a91142e73cca48f depends: - - max-core ==25.1.0.dev2025011505 release + - max-core ==25.1.0.dev2025011605 release - python 3.11.* - fastapi - httpx @@ -4840,13 +4839,13 @@ packages: - uvicorn - python_abi 3.11.* *_cp311 license: LicenseRef-Modular-Proprietary - size: 127141652 - timestamp: 1736918170387 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025011505-3.11release.conda - sha256: bcde9541c0308926d88b06a289e62ade7e9ce5fd09c7af125a74ce902562c154 - md5: fe268f18e7f099aaa136b235f44970d4 + size: 127420456 + timestamp: 1737005226120 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025011605-3.11release.conda + sha256: da21ee84763b6901de213b52bd6c5b82000da39f54dc86218ff3faf3eafcf450 + md5: 66e2d3f9ee8a31dacfe7e52a4585dcb3 depends: - - max-core ==25.1.0.dev2025011505 release + - max-core ==25.1.0.dev2025011605 release - python 3.11.* - fastapi - httpx @@ -4867,12 +4866,12 @@ packages: - uvicorn - python_abi 3.11.* *_cp311 license: LicenseRef-Modular-Proprietary - size: 110638602 - timestamp: 1736918528490 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011505-release.conda + size: 110537588 + timestamp: 1737004945971 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011605-release.conda noarch: python - sha256: f1dab48a1791a810711d1c7e484ea1c5340297d09f9493cd99604978a3c43717 - md5: d4a97c4b5ee27717785df58abcef3fb3 + sha256: cfd9e14c0c14fa02b6b61141ff4f9007a11eb3ed1b11cf48a717f215e27c7407 + md5: d60436499404c582b03af554c788436f depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -4882,8 +4881,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130819 - timestamp: 1736918190341 + size: 130793 + timestamp: 1737005226119 - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda sha256: 78c1bbe1723449c52b7a9df1af2ee5f005209f67e40b6e1d3c7619127c43b1c7 md5: 592132998493b3ff25fd7479396e8351 @@ -4893,18 +4892,18 @@ packages: license_family: MIT size: 14465 timestamp: 1733255681319 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011505-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011605-release.conda noarch: python - sha256: 87baffbf376e8562b6bde06c50c57d907ec9a6f6f338f342bddfad4fa83403e4 - md5: c14f190fae020526fc6559130272f1f8 + sha256: 68dcf6fcc24f226462c4a7004a2214a1696f2ad0cb8d7ac229ee9ec4ea2216ea + md5: 864d0b85ff8fd743209bea757229d010 depends: - - max-core ==25.1.0.dev2025011505 release + - max-core ==25.1.0.dev2025011605 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22931 - timestamp: 1736918190342 + size: 22934 + timestamp: 1737005226120 - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py311h2dc5d0c_2.conda sha256: afaab7a028281d8b5336db2b994fd3f9694862b6ca372c079dc4e84ad768c20a md5: bb8ca118919836624d920b4c44383a15 diff --git a/examples/notebooks/magic.lock b/examples/notebooks/magic.lock index bbacdb7fc4..f35391f354 100644 --- a/examples/notebooks/magic.lock +++ b/examples/notebooks/magic.lock @@ -167,13 +167,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/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-25.1.0.dev2025011505-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025011505-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025011505-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011605-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025011605-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025011605-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011605-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.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011605-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 @@ -458,13 +458,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/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-25.1.0.dev2025011505-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025011505-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025011505-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011605-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025011605-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025011605-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011605-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.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011605-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 @@ -736,18 +736,18 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxcb-1.17.0-hdb1d25a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.5-h178c5d8_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.6-hdb05f8b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda - 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.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011505-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025011505-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025011505-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011605-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025011605-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025011605-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011605-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.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011605-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 @@ -5432,19 +5432,18 @@ packages: license_family: Other size: 46438 timestamp: 1727963202283 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.6-hdb05f8b_0.conda - sha256: a0f3e9139ab16f0a67b9d2bbabc15b78977168f4a5b5503fed4962dcb9a96102 - md5: 34fdeffa0555a1a56f38839415cc066c +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda + sha256: b92a669f2059874ebdcb69041b6c243d68ffc3fb356ac1339cec44aeb27245d7 + md5: c4d54bfd3817313ce758aa76283b118d depends: - __osx >=11.0 constrains: - - openmp 19.1.6|19.1.6.* + - openmp 19.1.7|19.1.7.* arch: arm64 platform: osx license: Apache-2.0 WITH LLVM-exception - license_family: APACHE - size: 281251 - timestamp: 1734520462311 + size: 280830 + timestamp: 1736986295869 - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.10.0-h5888daf_1.conda sha256: 47326f811392a5fd3055f0f773036c392d26fdb32e4d8e7a8197eed951489346 md5: 9de5350a85c4a20c685259b889aa6393 @@ -5549,47 +5548,47 @@ packages: license_family: BSD size: 14467 timestamp: 1733417051523 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011505-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011605-release.conda noarch: python - sha256: fb653b1206a459970561cb99277971b809ef23dfbabb08067cf87ecc5316d144 - md5: 36d10ca6747cea3051f98f6c4340bdde + sha256: 66c70dda70094dd44776322c4274e0aedea1326e79407b710423d196fbf5c687 + md5: 63f0b9dbd781076f2346a4c90818fa77 depends: - - max-core ==25.1.0.dev2025011505 release - - max-python >=25.1.0.dev2025011505,<26.0a0 - - mojo-jupyter ==25.1.0.dev2025011505 release - - mblack ==25.1.0.dev2025011505 release + - max-core ==25.1.0.dev2025011605 release + - max-python >=25.1.0.dev2025011605,<26.0a0 + - mojo-jupyter ==25.1.0.dev2025011605 release + - mblack ==25.1.0.dev2025011605 release license: LicenseRef-Modular-Proprietary - size: 9920 - timestamp: 1736918190337 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025011505-release.conda - sha256: 5de02f267a7821eb30275253c0f03317e45befb2291b4c164d217e4a0be08489 - md5: e084403c468c3736de7b93e85ac55ca5 + size: 9918 + timestamp: 1737005226114 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025011605-release.conda + sha256: 833bf62b78d41a258c0f1c2fb33efe2ecd31d52c9f25e0927f3a3c06f3263143 + md5: 67b61208a7f51d98440b829a762aa983 depends: - - mblack ==25.1.0.dev2025011505 release + - mblack ==25.1.0.dev2025011605 release license: LicenseRef-Modular-Proprietary - size: 244663428 - timestamp: 1736918190336 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025011505-release.conda - sha256: b90cccb4ff28d8680f0221b696cfe260c3263afc92fcc90bae9e3e0205f6649a - md5: 6b38ab0cddf2d8d6ea3de50fa06daccf + size: 244845391 + timestamp: 1737004888429 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025011605-release.conda + sha256: cca47165ed2791ce97b8ed478c375ca5e19c9b1dbad2008a88fcf55976669e98 + md5: ec67c1c4477173523c480d0439f618ee depends: - - mblack ==25.1.0.dev2025011505 release + - mblack ==25.1.0.dev2025011605 release license: LicenseRef-Modular-Proprietary - size: 247150310 - timestamp: 1736918170378 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025011505-release.conda - sha256: 8e443193c3efccf88a1f335f56803cc8252a6087ceb570847fbc7d54373436dd - md5: 380f01b398f4026fa6d362bcd535bcce + size: 247313436 + timestamp: 1737005226112 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025011605-release.conda + sha256: 0c90b26d3a97472ecf01e8f96210d1b6becf10a628eb138a8fe9cba25c275f94 + md5: 67f133797e55bdfeae523889d117d24e depends: - - mblack ==25.1.0.dev2025011505 release + - mblack ==25.1.0.dev2025011605 release license: LicenseRef-Modular-Proprietary - size: 206696883 - timestamp: 1736918528488 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025011505-3.12release.conda - sha256: 8ffaf65c9e533d1c05e63208e5929f7047232682d71e241a8d078bd40784c070 - md5: 979326be6e37f9d08a2af9d3b5f5b173 + size: 206707824 + timestamp: 1737004945969 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025011605-3.12release.conda + sha256: 8ab036ac69684b74999f0274eb9741c0d0c4e036a0a777dfa2276539703bcf87 + md5: 6fde421d7d48ab50ec34964bfc003ab0 depends: - - max-core ==25.1.0.dev2025011505 release + - max-core ==25.1.0.dev2025011605 release - python 3.12.* - fastapi - httpx @@ -5610,13 +5609,13 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 124404054 - timestamp: 1736918190345 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025011505-3.12release.conda - sha256: d29135e77b8d7da7fc1e7fe00b6cefb5faded5da911430a1ff9090377cde6a0f - md5: 7ab99f094af5a6e10444022febf6158f + size: 124617353 + timestamp: 1737004888439 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025011605-3.12release.conda + sha256: 3b711e5ef7c518e1e6b69ff69c5c7505e9f5779ee99359c7b2808a6324bee5ca + md5: f264d20311c5422c256d177081752fc4 depends: - - max-core ==25.1.0.dev2025011505 release + - max-core ==25.1.0.dev2025011605 release - python 3.12.* - fastapi - httpx @@ -5637,13 +5636,13 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 127116659 - timestamp: 1736918170389 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025011505-3.12release.conda - sha256: f21679607c9939017d447c50d2732c8e842dcb29d18907390f5cd85254370ccf - md5: 112c450c08f0af99073a4dc4aae82576 + size: 127393468 + timestamp: 1737005226123 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025011605-3.12release.conda + sha256: f3c1e91c675ebf5835799c044f534e87840cae019df45e06ab50b09c4b819138 + md5: b42171a30a90eca86de374dc6562d2ab depends: - - max-core ==25.1.0.dev2025011505 release + - max-core ==25.1.0.dev2025011605 release - python 3.12.* - fastapi - httpx @@ -5664,12 +5663,12 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 110626067 - timestamp: 1736918528491 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011505-release.conda + size: 110522116 + timestamp: 1737004945972 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011605-release.conda noarch: python - sha256: f1dab48a1791a810711d1c7e484ea1c5340297d09f9493cd99604978a3c43717 - md5: d4a97c4b5ee27717785df58abcef3fb3 + sha256: cfd9e14c0c14fa02b6b61141ff4f9007a11eb3ed1b11cf48a717f215e27c7407 + md5: d60436499404c582b03af554c788436f depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -5679,8 +5678,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130819 - timestamp: 1736918190341 + size: 130793 + timestamp: 1737005226119 - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda sha256: 78c1bbe1723449c52b7a9df1af2ee5f005209f67e40b6e1d3c7619127c43b1c7 md5: 592132998493b3ff25fd7479396e8351 @@ -5700,18 +5699,18 @@ packages: license_family: BSD size: 68803 timestamp: 1735686983426 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011505-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011605-release.conda noarch: python - sha256: 87baffbf376e8562b6bde06c50c57d907ec9a6f6f338f342bddfad4fa83403e4 - md5: c14f190fae020526fc6559130272f1f8 + sha256: 68dcf6fcc24f226462c4a7004a2214a1696f2ad0cb8d7ac229ee9ec4ea2216ea + md5: 864d0b85ff8fd743209bea757229d010 depends: - - max-core ==25.1.0.dev2025011505 release + - max-core ==25.1.0.dev2025011605 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22931 - timestamp: 1736918190342 + size: 22934 + timestamp: 1737005226120 - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py312h178313f_2.conda sha256: b05bc8252a6e957bf4a776ed5e0e61d1ba88cdc46ccb55890c72cc58b10371f4 md5: 5b5e3267d915a107eca793d52e1b780a diff --git a/examples/operators/magic.lock b/examples/operators/magic.lock index befd8a737f..36177f7982 100644 --- a/examples/operators/magic.lock +++ b/examples/operators/magic.lock @@ -131,12 +131,12 @@ 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-25.1.0.dev2025011505-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025011505-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025011505-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011605-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025011605-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025011605-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011605-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-25.1.0.dev2025011505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011605-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 @@ -349,12 +349,12 @@ 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-25.1.0.dev2025011505-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025011505-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025011505-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011605-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025011605-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025011605-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011605-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-25.1.0.dev2025011505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011605-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 @@ -554,16 +554,16 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxcb-1.17.0-hdb1d25a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.5-h178c5d8_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.6-hdb05f8b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda - 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-25.1.0.dev2025011505-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025011505-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025011505-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011605-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025011605-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025011605-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011605-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-25.1.0.dev2025011505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011605-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 @@ -4645,19 +4645,18 @@ packages: license_family: Other size: 46438 timestamp: 1727963202283 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.6-hdb05f8b_0.conda - sha256: a0f3e9139ab16f0a67b9d2bbabc15b78977168f4a5b5503fed4962dcb9a96102 - md5: 34fdeffa0555a1a56f38839415cc066c +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda + sha256: b92a669f2059874ebdcb69041b6c243d68ffc3fb356ac1339cec44aeb27245d7 + md5: c4d54bfd3817313ce758aa76283b118d depends: - __osx >=11.0 constrains: - - openmp 19.1.6|19.1.6.* + - openmp 19.1.7|19.1.7.* arch: arm64 platform: osx license: Apache-2.0 WITH LLVM-exception - license_family: APACHE - size: 281251 - timestamp: 1734520462311 + size: 280830 + timestamp: 1736986295869 - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.10.0-h5888daf_1.conda sha256: 47326f811392a5fd3055f0f773036c392d26fdb32e4d8e7a8197eed951489346 md5: 9de5350a85c4a20c685259b889aa6393 @@ -4752,47 +4751,47 @@ packages: license_family: BSD size: 24048 timestamp: 1733219945697 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011505-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011605-release.conda noarch: python - sha256: fb653b1206a459970561cb99277971b809ef23dfbabb08067cf87ecc5316d144 - md5: 36d10ca6747cea3051f98f6c4340bdde + sha256: 66c70dda70094dd44776322c4274e0aedea1326e79407b710423d196fbf5c687 + md5: 63f0b9dbd781076f2346a4c90818fa77 depends: - - max-core ==25.1.0.dev2025011505 release - - max-python >=25.1.0.dev2025011505,<26.0a0 - - mojo-jupyter ==25.1.0.dev2025011505 release - - mblack ==25.1.0.dev2025011505 release + - max-core ==25.1.0.dev2025011605 release + - max-python >=25.1.0.dev2025011605,<26.0a0 + - mojo-jupyter ==25.1.0.dev2025011605 release + - mblack ==25.1.0.dev2025011605 release license: LicenseRef-Modular-Proprietary - size: 9920 - timestamp: 1736918190337 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025011505-release.conda - sha256: 5de02f267a7821eb30275253c0f03317e45befb2291b4c164d217e4a0be08489 - md5: e084403c468c3736de7b93e85ac55ca5 + size: 9918 + timestamp: 1737005226114 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025011605-release.conda + sha256: 833bf62b78d41a258c0f1c2fb33efe2ecd31d52c9f25e0927f3a3c06f3263143 + md5: 67b61208a7f51d98440b829a762aa983 depends: - - mblack ==25.1.0.dev2025011505 release + - mblack ==25.1.0.dev2025011605 release license: LicenseRef-Modular-Proprietary - size: 244663428 - timestamp: 1736918190336 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025011505-release.conda - sha256: b90cccb4ff28d8680f0221b696cfe260c3263afc92fcc90bae9e3e0205f6649a - md5: 6b38ab0cddf2d8d6ea3de50fa06daccf + size: 244845391 + timestamp: 1737004888429 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025011605-release.conda + sha256: cca47165ed2791ce97b8ed478c375ca5e19c9b1dbad2008a88fcf55976669e98 + md5: ec67c1c4477173523c480d0439f618ee depends: - - mblack ==25.1.0.dev2025011505 release + - mblack ==25.1.0.dev2025011605 release license: LicenseRef-Modular-Proprietary - size: 247150310 - timestamp: 1736918170378 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025011505-release.conda - sha256: 8e443193c3efccf88a1f335f56803cc8252a6087ceb570847fbc7d54373436dd - md5: 380f01b398f4026fa6d362bcd535bcce + size: 247313436 + timestamp: 1737005226112 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025011605-release.conda + sha256: 0c90b26d3a97472ecf01e8f96210d1b6becf10a628eb138a8fe9cba25c275f94 + md5: 67f133797e55bdfeae523889d117d24e depends: - - mblack ==25.1.0.dev2025011505 release + - mblack ==25.1.0.dev2025011605 release license: LicenseRef-Modular-Proprietary - size: 206696883 - timestamp: 1736918528488 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025011505-3.12release.conda - sha256: 8ffaf65c9e533d1c05e63208e5929f7047232682d71e241a8d078bd40784c070 - md5: 979326be6e37f9d08a2af9d3b5f5b173 + size: 206707824 + timestamp: 1737004945969 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025011605-3.12release.conda + sha256: 8ab036ac69684b74999f0274eb9741c0d0c4e036a0a777dfa2276539703bcf87 + md5: 6fde421d7d48ab50ec34964bfc003ab0 depends: - - max-core ==25.1.0.dev2025011505 release + - max-core ==25.1.0.dev2025011605 release - python 3.12.* - fastapi - httpx @@ -4813,13 +4812,13 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 124404054 - timestamp: 1736918190345 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025011505-3.12release.conda - sha256: d29135e77b8d7da7fc1e7fe00b6cefb5faded5da911430a1ff9090377cde6a0f - md5: 7ab99f094af5a6e10444022febf6158f + size: 124617353 + timestamp: 1737004888439 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025011605-3.12release.conda + sha256: 3b711e5ef7c518e1e6b69ff69c5c7505e9f5779ee99359c7b2808a6324bee5ca + md5: f264d20311c5422c256d177081752fc4 depends: - - max-core ==25.1.0.dev2025011505 release + - max-core ==25.1.0.dev2025011605 release - python 3.12.* - fastapi - httpx @@ -4840,13 +4839,13 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 127116659 - timestamp: 1736918170389 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025011505-3.12release.conda - sha256: f21679607c9939017d447c50d2732c8e842dcb29d18907390f5cd85254370ccf - md5: 112c450c08f0af99073a4dc4aae82576 + size: 127393468 + timestamp: 1737005226123 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025011605-3.12release.conda + sha256: f3c1e91c675ebf5835799c044f534e87840cae019df45e06ab50b09c4b819138 + md5: b42171a30a90eca86de374dc6562d2ab depends: - - max-core ==25.1.0.dev2025011505 release + - max-core ==25.1.0.dev2025011605 release - python 3.12.* - fastapi - httpx @@ -4867,12 +4866,12 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 110626067 - timestamp: 1736918528491 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011505-release.conda + size: 110522116 + timestamp: 1737004945972 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011605-release.conda noarch: python - sha256: f1dab48a1791a810711d1c7e484ea1c5340297d09f9493cd99604978a3c43717 - md5: d4a97c4b5ee27717785df58abcef3fb3 + sha256: cfd9e14c0c14fa02b6b61141ff4f9007a11eb3ed1b11cf48a717f215e27c7407 + md5: d60436499404c582b03af554c788436f depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -4882,8 +4881,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130819 - timestamp: 1736918190341 + size: 130793 + timestamp: 1737005226119 - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda sha256: 78c1bbe1723449c52b7a9df1af2ee5f005209f67e40b6e1d3c7619127c43b1c7 md5: 592132998493b3ff25fd7479396e8351 @@ -4893,18 +4892,18 @@ packages: license_family: MIT size: 14465 timestamp: 1733255681319 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011505-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011605-release.conda noarch: python - sha256: 87baffbf376e8562b6bde06c50c57d907ec9a6f6f338f342bddfad4fa83403e4 - md5: c14f190fae020526fc6559130272f1f8 + sha256: 68dcf6fcc24f226462c4a7004a2214a1696f2ad0cb8d7ac229ee9ec4ea2216ea + md5: 864d0b85ff8fd743209bea757229d010 depends: - - max-core ==25.1.0.dev2025011505 release + - max-core ==25.1.0.dev2025011605 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22931 - timestamp: 1736918190342 + size: 22934 + timestamp: 1737005226120 - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py312h178313f_2.conda sha256: b05bc8252a6e957bf4a776ed5e0e61d1ba88cdc46ccb55890c72cc58b10371f4 md5: 5b5e3267d915a107eca793d52e1b780a diff --git a/examples/testing/magic.lock b/examples/testing/magic.lock new file mode 100644 index 0000000000..36177f7982 --- /dev/null +++ b/examples/testing/magic.lock @@ -0,0 +1,7274 @@ +version: 6 +environments: + default: + channels: + - url: https://conda.anaconda.org/conda-forge/ + - url: https://conda.modular.com/max-nightly/ + packages: + linux-64: + - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.11-py312h178313f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.8.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.3.0-pyh71513ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-h205f482_16.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.1-h1a47875_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.10.6-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.3.0-h4e1184b_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.0-h7959bf6_11.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.2-hefd7a92_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-h831e299_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h11f4f37_12.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.7-hf454442_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.2-h4e1184b_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-h4e1184b_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.8-h8570fcd_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-h7001638_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.10.0-h113e628_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.13.0-h3cf044e_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-common-cpp-12.8.0-h736e048_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-files-datalake-cpp-12.12.0-ha633028_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/backoff-2.2.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py312h2ec8cdc_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.4-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2024.12.14-hbcca054_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.12.14-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py312h06ac9bb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda + - 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.7-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 + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.12.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gflags-2.2.2-h5888daf_1005.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/glog-0.7.1-hbabe93e_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/httptools-0.6.4-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.27.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.16-hb7c19ff_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-h9d9f30d_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-hcb10f89_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-hcb10f89_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-h08228c5_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-26_linux64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.1.0-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-26_linux64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcrc32c-1.1.2-h9c3ff4c_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.11.1-h332b0f4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.23-h4ddbbb0_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20240808-pl5321h7949ede_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libevent-2.1.12-hf998b51_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.2-h7f98852_5.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h77fa898_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hd5240d6_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h77fa898_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.33.0-h2b5623c_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.33.0-h0121fbd_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.67.1-h25350d4_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-hd590300_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-26_linux64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.3-hb9d3cd8_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.28-pthreads_h94d23a6_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-h081d1f1_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.45-h943b412_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.47.2-hee588c1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hf672d98_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-hc0a3c3a_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libthrift-0.21.0-h0e7cc3e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hd9ff511_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.9.0-hb9d3cd8_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.49.2-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.5.0-h851e524_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.5-h0d44e9d_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda + - 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-25.1.0.dev2025011605-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025011605-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025011605-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011605-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-25.1.0.dev2025011605-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-h2d0b736_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.3-h5fbd93e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.0-h7b32b05_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.29.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.29.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.29.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-prometheus-1.12.0rc1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.29.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.29.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.50b0-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/orc-2.0.3-h12ee42a_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.3-py312hf9745cd_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-11.1.0-py312h80c1187_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.1-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/protobuf-5.28.3-py312h2ec8cdc_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-18.1.0-py312h7900ff3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-18.1.0-py312h01725c0_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.5-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.27.2-py312h12e396e_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.7.1-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyinstrument-5.0.0-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.8-h9e4cc4f_1_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.20-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-xxhash-3.5.0-py312h66e93f0_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py312h66e93f0_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.0-py312hbf22597_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/re2-2024.07.02-h9925aae_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda + - 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.10-hb5b8611_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/safetensors-0.5.2-py312h12e396e_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-h8bd8927_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.2.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.21.0-py312h8360d73_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.48.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.34.0-pyh31011fe_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.34.0-h31011fe_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/uvloop-0.21.0-py312h66e93f0_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/watchfiles-1.0.4-py312h12e396e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/websockets-14.1-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.17.2-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xxhash-0.8.2-hd590300_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.18.3-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312hef9b889_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda + linux-aarch64: + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.11-py312hcc812fe_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.8.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.3.0-pyh71513ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-hb7ec8d5_16.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.1-h740c5af_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-common-0.10.6-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-compression-0.3.0-h0f0193d_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-event-stream-0.5.0-hcbd8f92_11.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.2-h3df160d_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-h1a307af_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h5f50e26_12.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.7-h2080895_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.2-h0f0193d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h0f0193d_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.8-h92ee776_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h90ecb4a_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-core-cpp-1.14.0-h1887c18_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-identity-cpp-1.10.0-h47b0b28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-blobs-cpp-12.13.0-h185ecfd_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-common-cpp-12.8.0-h1b94036_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-files-datalake-cpp-12.12.0-h37d6d07_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/backoff-2.2.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/brotli-python-1.1.0-py312h6f74592_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h68df207_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/c-ares-1.34.4-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2024.12.14-hcefe29a_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.12.14-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cffi-1.17.1-py312hac81daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda + - 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.7-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 + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.12.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gflags-2.2.2-h5ad3122_1005.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/glog-0.7.1-h468a4a4_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/httptools-0.6.4-py312hb2c0f52_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.27.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/keyutils-1.6.1-h4e544f5_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/krb5-1.21.3-h50a48e9_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lcms2-2.16-h922389a_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.0.0-h4de3ea5_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h18dbdb1_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-h47f80e1_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h3b568fd_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h3b568fd_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h1e9d426_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-26_linuxaarch64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlicommon-1.1.0-h86ecc28_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlidec-1.1.0-h86ecc28_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlienc-1.1.0-h86ecc28_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-26_linuxaarch64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcrc32c-1.1.2-h01db608_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcurl-8.11.1-h6702fde_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libdeflate-1.23-h5e3c512_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20240808-pl5321h976ea20_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libev-4.33-h31becfc_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libevent-2.1.12-h4ba1bb4_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.6.4-h5ad3122_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.4.2-h3557bc0_5.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-14.2.0-he277a41_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-14.2.0-he9431aa_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-2.33.0-hccf9d24_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-storage-2.33.0-hb9b2b65_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgrpc-1.67.1-hf7ccdd3_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libiconv-1.17-h31becfc_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libjpeg-turbo-3.0.0-h31becfc_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-26_linuxaarch64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.3-h86ecc28_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnghttp2-1.64.0-hc8609a4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.28-pthreads_h9d3fd7e_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-hfc78867_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.45-hec79eb8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.3-h44a3b7b_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.20-h68df207_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.47.2-h5eb1b54_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libssh2-1.11.1-ha41c0db_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libthrift-0.21.0-h154c74f_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.0-h88f7998_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.9.0-h86ecc28_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuv-1.49.2-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libwebp-base-1.5.0-h0886dbf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcb-1.17.0-h262b8f6_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.5-h2e0c361_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda + - 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-25.1.0.dev2025011605-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025011605-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025011605-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011605-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-25.1.0.dev2025011605-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-ha32ae93_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openjpeg-2.5.3-h3f56577_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.0-hd08dc88_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.29.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.29.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.29.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-prometheus-1.12.0rc1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.29.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.29.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.50b0-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/orc-2.0.3-hdd485aa_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pandas-2.2.3-py312ha2895bd_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pillow-11.1.0-py312h719f0cf_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.2.1-py312hb2c0f52_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/protobuf-5.28.3-py312h6f74592_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pthread-stubs-0.4-h86ecc28_1002.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-18.1.0-py312h8025657_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-18.1.0-py312h66f7834_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.5-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pydantic-core-2.27.2-py312h8cbf658_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.7.1-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyinstrument-5.0.0-py312hb2c0f52_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.8-h1683364_1_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.20-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-xxhash-3.5.0-py312h52516f5_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.12-5_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyyaml-6.0.2-py312hb2c0f52_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyzmq-26.2.0-py312h2427ae1_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/re2-2024.07.02-haa97905_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8fc344f_1.conda + - 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.10-h5df210e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/safetensors-0.5.2-py312h8cbf658_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-hd4fb6f5_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.2.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.21.0-py312ha0d6ea1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py312h52516f5_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.48.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.34.0-pyh31011fe_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.34.0-h31011fe_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/uvloop-0.21.0-py312hb2c0f52_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/watchfiles-1.0.4-py312h8cbf658_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/websockets-14.1-py312hb2c0f52_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/wrapt-1.17.2-py312hb2c0f52_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxau-1.0.12-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxdmcp-1.1.5-h57736b2_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xxhash-0.8.2-h31becfc_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yaml-0.2.5-hf897c2e_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.18.3-py312hb2c0f52_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zeromq-4.3.5-h5efb499_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstandard-0.23.0-py312hb698573_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.6-h02f22dd_0.conda + osx-arm64: + - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.11-py312h998013c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.8.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.3.0-pyh71513ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-hfc2798a_16.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.1-hc8a0bd2_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.10.6-h5505292_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-compression-0.3.0-hc8a0bd2_5.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.0-h54f970a_11.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.2-h96aa502_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-haba67d1_5.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h24f418c_12.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.7-h1be5864_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.2-hc8a0bd2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-hc8a0bd2_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.8-h23176ea_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-h794939a_5.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.14.0-hd50102c_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.10.0-hc602bab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-blobs-cpp-12.13.0-h7585a09_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-common-cpp-12.8.0-h9ca1f76_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-files-datalake-cpp-12.12.0-hcdd55da_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/backoff-2.2.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py312hde4cb15_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.4-h5505292_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2024.12.14-hf0a4a13_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.12.14-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.1-py312h0fad829_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda + - 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.7-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 + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.12.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gflags-2.2.2-hf9b8971_1005.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/glog-0.7.1-heb240a5_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/httptools-0.6.4-py312hea69d52_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.27.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.16-ha0e7c42_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_h07bc746_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-hf3eb8e5_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-hf07054f_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-hf07054f_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-h4239455_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-26_osxarm64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.1.0-hd74edd7_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.1.0-hd74edd7_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlienc-1.1.0-hd74edd7_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-26_osxarm64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcrc32c-1.1.2-hbdafb3b_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.11.1-h73640d1_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.23-hec38601_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20240808-pl5321hafb1f1b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libev-4.33-h93a5062_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libevent-2.1.12-h2757513_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.4-h286801f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-2.33.0-hdbe95d5_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-storage-2.33.0-h7081f7f_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgrpc-1.67.1-h0a426d6_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.17-h0d3ecfb_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.0.0-hb547adb_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-26_osxarm64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.3-h39f12f2_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.64.0-h6d7220d_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.28-openmp_hf332438_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-h636d7b7_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.45-h3783ad8_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.3-h3bd63a1_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h07bc746_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.47.2-h3f77e49_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.1-h9cc3647_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libthrift-0.21.0-h64651cc_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-h551f018_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.9.0-h5505292_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libuv-1.49.2-h7ab814d_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.5.0-h2471fea_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxcb-1.17.0-hdb1d25a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.5-h178c5d8_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda + - 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-25.1.0.dev2025011605-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025011605-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025011605-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011605-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-25.1.0.dev2025011605-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 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openjpeg-2.5.3-h8a3d83b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.0-h81ee809_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.29.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.29.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.29.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-prometheus-1.12.0rc1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.29.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.29.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.50b0-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/orc-2.0.3-h0ff2369_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.3-py312hcd31e36_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-11.1.0-py312h50aef2c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.1-py312hea69d52_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/protobuf-5.28.3-py312hd8f9ff3_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pthread-stubs-0.4-hd74edd7_1002.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-18.1.0-py312h1f38498_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-18.1.0-py312hc40f475_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.5-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.27.2-py312hcd83bfe_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.7.1-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyinstrument-5.0.0-py312h0bf5046_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.8-hc22306f_1_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.20-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-xxhash-3.5.0-py312h024a12e_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-5_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py312h024a12e_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.0-py312hf8a1cbd_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/re2-2024.07.02-h6589ca4_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h92ec313_1.conda + - 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.5.2-py312hcd83bfe_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-h98b9ce2_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.2.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.21.0-py312hf3e4074_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.48.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.34.0-pyh31011fe_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.34.0-h31011fe_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/uvloop-0.21.0-py312h0bf5046_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/watchfiles-1.0.4-py312hcd83bfe_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/websockets-14.1-py312hea69d52_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/wrapt-1.17.2-py312hea69d52_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxau-1.0.12-h5505292_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxdmcp-1.1.5-hd74edd7_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xxhash-0.8.2-hb547adb_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.18.3-py312hea69d52_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py312h15fbf35_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.6-hb46c0d2_0.conda +packages: +- conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 + sha256: fe51de6107f9edc7aa4f786a70f4a883943bc9d39b3bb7307c04c41410990726 + md5: d7c89558ba9fa0495403155b64376d81 + arch: x86_64 + platform: linux + license: None + size: 2562 + timestamp: 1578324546067 +- conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 + build_number: 16 + sha256: fbe2c5e56a653bebb982eda4876a9178aedfc2b545f25d0ce9c4c0b508253d22 + md5: 73aaf86a425cc6e73fcf236a5a46396d + depends: + - _libgcc_mutex 0.1 conda_forge + - libgomp >=7.5.0 + constrains: + - openmp_impl 9999 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 23621 + timestamp: 1650670423406 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2 + build_number: 16 + sha256: 3702bef2f0a4d38bd8288bbe54aace623602a1343c2cfbefd3fa188e015bebf0 + md5: 6168d71addc746e8f2b8d57dfd2edcea + depends: + - libgomp >=7.5.0 + constrains: + - openmp_impl 9999 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 23712 + timestamp: 1650670790230 +- conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_1.conda + sha256: 95d4713e49ea92ae50cf42393683ede706b7875af5f7cb14c253438180afa732 + md5: 296b403617bafa89df4971567af79013 + depends: + - python >=3.9 + license: PSF-2.0 + license_family: PSF + size: 19351 + timestamp: 1733332029649 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.11-py312h178313f_0.conda + sha256: 2e817805e8a4fed33f23f116ff5649f8651af693328e9ed82d9d11a951338693 + md5: 8219afa093757bbe07b9825eb1973ed9 + depends: + - __glibc >=2.17,<3.0.a0 + - aiohappyeyeballs >=2.3.0 + - aiosignal >=1.1.2 + - attrs >=17.3.0 + - frozenlist >=1.1.1 + - libgcc >=13 + - multidict >=4.5,<7.0 + - propcache >=0.2.0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - yarl >=1.17.0,<2.0 + arch: x86_64 + platform: linux + license: MIT AND Apache-2.0 + license_family: Apache + size: 915358 + timestamp: 1734597073870 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.11-py312hcc812fe_0.conda + sha256: f28e81e458d19df4ca0002f8a92d7f647fa25e8179887a8676801dfe44edb1f2 + md5: 11fa88136d9bf39d2136b2378f7c10be + depends: + - aiohappyeyeballs >=2.3.0 + - aiosignal >=1.1.2 + - attrs >=17.3.0 + - frozenlist >=1.1.1 + - libgcc >=13 + - multidict >=4.5,<7.0 + - propcache >=0.2.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - yarl >=1.17.0,<2.0 + arch: aarch64 + platform: linux + license: MIT AND Apache-2.0 + license_family: Apache + size: 902422 + timestamp: 1734597104529 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.11-py312h998013c_0.conda + sha256: 446f078e7a7b892894d7f4851a278b7834ffb4f5632313646a55c3abe13690d4 + md5: c69c904691364cfb27d15aa7153e9c29 + depends: + - __osx >=11.0 + - aiohappyeyeballs >=2.3.0 + - aiosignal >=1.1.2 + - attrs >=17.3.0 + - frozenlist >=1.1.1 + - multidict >=4.5,<7.0 + - propcache >=0.2.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - yarl >=1.17.0,<2.0 + arch: arm64 + platform: osx + license: MIT AND Apache-2.0 + license_family: Apache + size: 875711 + timestamp: 1734597277258 +- conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda + sha256: 7de8ced1918bbdadecf8e1c1c68237fe5709c097bd9e0d254f4cad118f4345d0 + md5: 1a3981115a398535dbe3f6d5faae3d36 + depends: + - frozenlist >=1.1.0 + - python >=3.9 + license: Apache-2.0 + license_family: APACHE + size: 13229 + timestamp: 1734342253061 +- conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda + sha256: e0ea1ba78fbb64f17062601edda82097fcf815012cf52bb704150a2668110d48 + md5: 2934f256a8acfe48f6ebb4fce6cde29c + depends: + - python >=3.9 + - typing-extensions >=4.0.0 + license: MIT + license_family: MIT + size: 18074 + timestamp: 1733247158254 +- conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.8.0-pyhd8ed1ab_0.conda + sha256: f1455d2953e3eb6d71bc49881c8558d8e01888469dfd21061dd48afb6183e836 + md5: 848d25bfbadf020ee4d4ba90e5668252 + depends: + - exceptiongroup >=1.0.2 + - idna >=2.8 + - python >=3.9 + - sniffio >=1.1 + - typing_extensions >=4.5 + constrains: + - trio >=0.26.1 + - uvloop >=0.21 + license: MIT + license_family: MIT + size: 115305 + timestamp: 1736174485476 +- conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.3.0-pyh71513ae_0.conda + sha256: 750186af694a7130eaf7119fbb56db0d2326d8995ad5b8eae23c622b85fea29a + md5: 356927ace43302bf6f5926e2a58dae6a + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 56354 + timestamp: 1734348889193 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-h205f482_16.conda + sha256: 0695c285b70385913dc7dce05888d3ad1378247b65273bdab509494a2f8f0eea + md5: b0815d37ab812ade9c07239da7c3c369 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 107478 + timestamp: 1736592747413 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-hb7ec8d5_16.conda + sha256: 5a2a2691f2e0028e8549b97a340d7e6c502e0d54b7deba00fad505812663a98b + md5: 56f166780076db46c5e273988693d8a3 + depends: + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 + - libgcc >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 112264 + timestamp: 1736592695540 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-hfc2798a_16.conda + sha256: cdcd932332311db1b614289101b61e32cbae2478ba2bf85763aaf5a5cc7db6f6 + md5: 1e9a41d5296f50c08ae511d61fddef85 + depends: + - __osx >=11.0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 92547 + timestamp: 1736592866387 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.1-h1a47875_3.conda + sha256: 095ac824ea9303eff67e04090ae531d9eb33d2bf8f82eaade39b839c421e16e8 + md5: 55a8561fdbbbd34f50f57d9be12ed084 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + - openssl >=3.3.1,<4.0a0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 47601 + timestamp: 1733991564405 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.1-h740c5af_3.conda + sha256: c5c7961d48ca7320ed3560c036f7aa5244df4b85d9657f70aacc5faba3e1509a + md5: 57ed2c445d7ef01d121b9bcea0522913 + depends: + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + - openssl >=3.3.1,<4.0a0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 50036 + timestamp: 1733991581303 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.1-hc8a0bd2_3.conda + sha256: 1f44be36e1daa17b4b081debb8aee492d13571084f38b503ad13e869fef24fe4 + md5: 8b0ce61384e5a33d2b301a64f3d22ac5 + depends: + - __osx >=11.0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - openssl >=3.3.1,<4.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 39925 + timestamp: 1733991649383 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.10.6-hb9d3cd8_0.conda + sha256: 496e92f2150fdc351eacf6e236015deedb3d0d3114f8e5954341cbf9f3dda257 + md5: d7d4680337a14001b0e043e96529409b + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 236574 + timestamp: 1733975453350 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-common-0.10.6-h86ecc28_0.conda + sha256: 57288ec5df35781bea8fc6a8c9099cad6695b747784fc1b8862a0f9e5b3bf5ab + md5: fef806a0f6de853670c746bbece01966 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 259031 + timestamp: 1733975520465 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.10.6-h5505292_0.conda + sha256: 3bde135c8e74987c0f79ecd4fa17ec9cff0d658b3090168727ca1af3815ae57a + md5: 145e5b4c9702ed279d7d68aaf096f77d + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 221863 + timestamp: 1733975576886 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.3.0-h4e1184b_5.conda + sha256: 62ca84da83585e7814a40240a1e750b1563b2680b032a471464eccc001c3309b + md5: 3f4c1197462a6df2be6dc8241828fe93 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 19086 + timestamp: 1733991637424 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-compression-0.3.0-h0f0193d_5.conda + sha256: 3f05d19f68ef800f33d44ea2a4211003124076516c8469abc7d432236344df53 + md5: 3a1421d12435df5b4c412cc4c8fac64d + depends: + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 19740 + timestamp: 1733991625201 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-compression-0.3.0-hc8a0bd2_5.conda + sha256: 47b2813f652ce7e64ac442f771b2a5f7d4af4ad0d07ff51f6075ea80ed2e3f09 + md5: a8b6c17732d14ed49d0e9b59c43186bc + depends: + - __osx >=11.0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 18068 + timestamp: 1733991869211 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.0-h7959bf6_11.conda + sha256: 10d7240c7db0c941fb1a59c4f8ea6689a434b03309ee7b766fa15a809c553c02 + md5: 9b3fb60fe57925a92f399bc3fc42eccf + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 54003 + timestamp: 1734024480949 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-event-stream-0.5.0-hcbd8f92_11.conda + sha256: 79aa363c71c891a27496c0498f8d498b2ddc87b3ccb3b6c9da5b50b05936ebb8 + md5: e0772c59af4243a9b2565baa5d79e5b6 + depends: + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + - libgcc >=13 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 55207 + timestamp: 1734024546663 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.0-h54f970a_11.conda + sha256: f0667935f4e0d4c25e0e51da035640310b5ceeb8f723156734439bde8b848d7d + md5: ba41238f8e653998d7d2f42e3a8db054 + depends: + - __osx >=11.0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + - libcxx >=18 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 47078 + timestamp: 1734024749727 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.2-hefd7a92_4.conda + sha256: 4a330206bd51148f6c13ca0b7a4db40f29a46f090642ebacdeb88b8a4abd7f99 + md5: 5ce4df662d32d3123ea8da15571b6f51 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-compression >=0.3.0,<0.3.1.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 197731 + timestamp: 1734008380764 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.2-h3df160d_4.conda + sha256: 3a1d2d332945306be9d49e569b95e4cc172d825f10e88715513a172f28ebb59e + md5: 28f00aa7fd9556c4c461328cf146c20b + depends: + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-compression >=0.3.0,<0.3.1.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - libgcc >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 190586 + timestamp: 1734008442362 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.2-h96aa502_4.conda + sha256: 22e4737c8a885995b7c1ae1d79c1f6e78d489e16ec079615980fdde067aeaf76 + md5: 495c93a4f08b17deb3c04894512330e6 + depends: + - __osx >=11.0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-compression >=0.3.0,<0.3.1.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 152983 + timestamp: 1734008451473 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-h831e299_5.conda + sha256: 5920009b1c6f9a2bc131a36725251894e4b4773fce29c4b1065d4213ae337abe + md5: 80dd9f0ddf935290d1dc00ec75ff3023 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + - s2n >=1.5.10,<1.5.11.0a0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 157864 + timestamp: 1734433578570 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-h1a307af_5.conda + sha256: 71f5bf891299f831dceaea12f926c393bf754569e5305387a88b77e1f94612d8 + md5: da8ab0f3eeac93449ec3d531ede92caa + depends: + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + - s2n >=1.5.10,<1.5.11.0a0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 161889 + timestamp: 1734433686109 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-haba67d1_5.conda + sha256: c0a1a2b0750225ac3dc07fd258c88c2be866bf8ac67ba3d50bb4ecec852ff8ee + md5: 4c5ff4134e76426a75b8c548984fa933 + depends: + - __osx >=11.0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 135729 + timestamp: 1734433832730 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h11f4f37_12.conda + sha256: 512d3969426152d9d5fd886e27b13706122dc3fa90eb08c37b0d51a33d7bb14a + md5: 96c3e0221fa2da97619ee82faa341a73 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 194672 + timestamp: 1734025626798 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h5f50e26_12.conda + sha256: ffeb9100cc8fd4093e1a6fdfd938bc4a396dd77480b7fb17aa42855a4d5e2c70 + md5: 031ca33115d4b1eeb43f435d6215778c + depends: + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - libgcc >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 169516 + timestamp: 1734025167885 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h24f418c_12.conda + sha256: 96575ea1dd2a9ea94763882e40a66dcbff9c41f702bf37c9514c4c719b3c11dd + md5: c072045a6206f88015d02fcba1705ea1 + depends: + - __osx >=11.0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 134371 + timestamp: 1734025379525 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.7-hf454442_0.conda + sha256: c2f205a7bf64c5f40eea373b3a0a7c363c9aa9246a13dd7f3d9c6a4434c4fe2d + md5: 947c82025693bebd557f782bb5d6b469 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-auth >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + - libgcc >=13 + - openssl >=3.4.0,<4.0a0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 114156 + timestamp: 1734146123386 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.7-h2080895_0.conda + sha256: 20bc2dd60e6518d9b8215c2b652ab5c52ee8a997d3b9a5f69e2dabd28cbf26b2 + md5: ae223efa63fbb4262a2d85c3ab3bc4f5 + depends: + - aws-c-auth >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + - libgcc >=13 + - openssl >=3.4.0,<4.0a0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 117641 + timestamp: 1734146239779 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.7-h1be5864_0.conda + sha256: 22966164d63808689fffd35945f57756c95337327e28099b5d77b29fc6a56ecc + md5: a37bba7acb62dd70492ee01eacca3b8f + depends: + - __osx >=11.0 + - aws-c-auth >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 97598 + timestamp: 1734146239038 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.2-h4e1184b_0.conda + sha256: 0424e380c435ba03b5948d02e8c958866c4eee50ed29e57f99473a5f795a4cfc + md5: dcd498d493818b776a77fbc242fbf8e4 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 55911 + timestamp: 1736535960724 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.2-h0f0193d_0.conda + sha256: fba38e469457764afcb94aa84d4d7788e6b5fa1554d34b05c904d2245fdd3c81 + md5: a78928881c652facde2a13ec6e776f3c + depends: + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 58221 + timestamp: 1736536003041 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.2-hc8a0bd2_0.conda + sha256: ea4f0f1e99056293c69615f581a997d65ba7e229e296e402e0d8ef750648a5b5 + md5: e7b5498ac7b7ab921a907be38f3a8080 + depends: + - __osx >=11.0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 49872 + timestamp: 1736536152332 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-h4e1184b_4.conda + sha256: 1ed9a332d06ad595694907fad2d6d801082916c27cd5076096fda4061e6d24a8 + md5: 74e8c3e4df4ceae34aa2959df4b28101 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 72762 + timestamp: 1733994347547 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h0f0193d_4.conda + sha256: 9f1e3635a587bcf92b61d88c7af7d24cd89c147c6d0ae58afbde08e65bcf48da + md5: 3bd35b0adab3d743f09e0252cc441d6b + depends: + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 72154 + timestamp: 1733994384415 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-hc8a0bd2_4.conda + sha256: 215086d95e8ff1d3fcb0197ada116cc9d7db1fdae7573f5e810d20fa9215b47c + md5: e70e88a357a3749b67679c0788c5b08a + depends: + - __osx >=11.0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 70186 + timestamp: 1733994496998 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.8-h8570fcd_1.conda + sha256: ff8f08bc615d3ef6d970df80988200b3ecee76ecfa4885109cd82b30176cfda9 + md5: f21296b496cca1c1fa426b9a3b676e79 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-auth >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-event-stream >=0.5.0,<0.5.1.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-c-mqtt >=0.11.0,<0.11.1.0a0 + - aws-c-s3 >=0.7.7,<0.7.8.0a0 + - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 354328 + timestamp: 1736598991291 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.8-h92ee776_1.conda + sha256: 114ac89d3936bf801dcbd488ba0b468c7e113a407cb1ee5898259a5202b7e750 + md5: 63546051b5687f793ae977c7994e1339 + depends: + - aws-c-auth >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-event-stream >=0.5.0,<0.5.1.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-c-mqtt >=0.11.0,<0.11.1.0a0 + - aws-c-s3 >=0.7.7,<0.7.8.0a0 + - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 + - libgcc >=13 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 284664 + timestamp: 1736598964131 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.8-h23176ea_1.conda + sha256: db6a31078bb82fb12044d7706239c003568273729f7ba4971c1479b7926ada82 + md5: 31fdd3ffb00f5472196fa95ef08087b7 + depends: + - __osx >=11.0 + - aws-c-auth >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-event-stream >=0.5.0,<0.5.1.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-c-mqtt >=0.11.0,<0.11.1.0a0 + - aws-c-s3 >=0.7.7,<0.7.8.0a0 + - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 + - libcxx >=18 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 236269 + timestamp: 1736599024242 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-h7001638_5.conda + sha256: 849524b09865e84d6926aa814944cf71511aa4a00fffc5ad174c286d5dfac5f0 + md5: fc01d77a7f383b2915f276c73b7d0934 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-event-stream >=0.5.0,<0.5.1.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + - aws-crt-cpp >=0.29.8,<0.29.9.0a0 + - libcurl >=8.11.1,<9.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 3088636 + timestamp: 1736598504343 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h90ecb4a_5.conda + sha256: 9467acd0f2df74ea7472aebdfb8b5656a8d403abad2edbce9743d6e88c94fd10 + md5: 33f86f8de1d8cd40f8fe628dc0784437 + depends: + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-event-stream >=0.5.0,<0.5.1.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + - aws-crt-cpp >=0.29.8,<0.29.9.0a0 + - libcurl >=8.11.1,<9.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 2925443 + timestamp: 1736598526637 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-h794939a_5.conda + sha256: 2b1e7d5a45e82604bfdb6de63c53cf0e9495f596cfd90e644a1e67910de7f91c + md5: a2374b4182bf5b2d08b2903393d0c487 + depends: + - __osx >=11.0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-event-stream >=0.5.0,<0.5.1.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + - aws-crt-cpp >=0.29.8,<0.29.9.0a0 + - libcurl >=8.11.1,<9.0a0 + - libcxx >=18 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 2824168 + timestamp: 1736598935034 +- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda + sha256: fe07debdb089a3db17f40a7f20d283d75284bb4fc269ef727b8ba6fc93f7cb5a + md5: 0a8838771cc2e985cd295e01ae83baf1 + depends: + - __glibc >=2.17,<3.0.a0 + - libcurl >=8.10.1,<9.0a0 + - libgcc >=13 + - libstdcxx >=13 + - openssl >=3.3.2,<4.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 345117 + timestamp: 1728053909574 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-core-cpp-1.14.0-h1887c18_0.conda + sha256: 8967b3ccee4d74e61f6ec82dd8efb9deb854ee7ba012dfe767b7a92e0ac77724 + md5: e0c3a906a41be769f0ae20ca3e31cfc0 + depends: + - libcurl >=8.10.1,<9.0a0 + - libgcc >=13 + - libstdcxx >=13 + - openssl >=3.3.2,<4.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 338650 + timestamp: 1728055589907 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.14.0-hd50102c_0.conda + sha256: f5b91329ed59ffc0be8747784c6e4cc7e56250c54032883a83bc11808ef6a87e + md5: f093a11dcf3cdcca010b20a818fcc6dc + depends: + - __osx >=11.0 + - libcurl >=8.10.1,<9.0a0 + - libcxx >=17 + - openssl >=3.3.2,<4.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 294299 + timestamp: 1728054014060 +- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.10.0-h113e628_0.conda + sha256: 286b31616c191486626cb49e9ceb5920d29394b9e913c23adb7eb637629ba4de + md5: 73f73f60854f325a55f1d31459f2ab73 + depends: + - __glibc >=2.17,<3.0.a0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - libgcc >=13 + - libstdcxx >=13 + - openssl >=3.3.2,<4.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 232351 + timestamp: 1728486729511 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-identity-cpp-1.10.0-h47b0b28_0.conda + sha256: 1c72423b9beba167d2f01b80dc204da77240a8266f1edb3d89510c852b300d69 + md5: 94e73a7877743a85c57091d8afab2348 + depends: + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - libgcc >=13 + - libstdcxx >=13 + - openssl >=3.3.2,<4.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 217132 + timestamp: 1728488096615 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.10.0-hc602bab_0.conda + sha256: bde446b916fff5150606f8ed3e6058ffc55a3aa72381e46f1ab346590b1ae40a + md5: d7b71593a937459f2d4b67e1a4727dc2 + depends: + - __osx >=11.0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - libcxx >=17 + - openssl >=3.3.2,<4.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 166907 + timestamp: 1728486882502 +- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.13.0-h3cf044e_1.conda + sha256: 2606260e5379eed255bcdc6adc39b93fb31477337bcd911c121fc43cd29bf394 + md5: 7eb66060455c7a47d9dcdbfa9f46579b + depends: + - __glibc >=2.17,<3.0.a0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 549342 + timestamp: 1728578123088 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-blobs-cpp-12.13.0-h185ecfd_1.conda + sha256: 280ec70009a92626054f58e45b168fce393e71a9710587488bd8401628cda481 + md5: 221e1e5ecb2643e113f32b3229d5ba33 + depends: + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 + - libgcc >=13 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 502934 + timestamp: 1728580241002 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-blobs-cpp-12.13.0-h7585a09_1.conda + sha256: 08d52d130addc0fb55d5ba10d9fa483e39be25d69bac7f4c676c2c3069207590 + md5: 704238ef05d46144dae2e6b5853df8bc + depends: + - __osx >=11.0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 + - libcxx >=17 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 438636 + timestamp: 1728578216193 +- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-common-cpp-12.8.0-h736e048_1.conda + sha256: 273475f002b091b66ce7366da04bf164c3732c03f8692ab2ee2d23335b6a82ba + md5: 13de36be8de3ae3f05ba127631599213 + depends: + - __glibc >=2.17,<3.0.a0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libxml2 >=2.12.7,<3.0a0 + - openssl >=3.3.2,<4.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 149312 + timestamp: 1728563338704 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-common-cpp-12.8.0-h1b94036_1.conda + sha256: 146e76aac169e3dbdce5d3b142b7930ac643795c765e7655d1989905ec7d3231 + md5: 793b1080ab2d958980f137a8643cd6e8 + depends: + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libxml2 >=2.12.7,<3.0a0 + - openssl >=3.3.2,<4.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 140832 + timestamp: 1728565334900 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-common-cpp-12.8.0-h9ca1f76_1.conda + sha256: 77ab04e8fe5636a2de9c718f72a43645f7502cd208868c8a91ffba385547d585 + md5: 7a187cd7b1445afc80253bb186a607cc + depends: + - __osx >=11.0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - libcxx >=17 + - libxml2 >=2.12.7,<3.0a0 + - openssl >=3.3.2,<4.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 121278 + timestamp: 1728563418777 +- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-files-datalake-cpp-12.12.0-ha633028_1.conda + sha256: 5371e4f3f920933bb89b926a85a67f24388227419abd6e99f6086481e5e8d5f2 + md5: 7c1980f89dd41b097549782121a73490 + depends: + - __glibc >=2.17,<3.0.a0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 + - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 287366 + timestamp: 1728729530295 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-files-datalake-cpp-12.12.0-h37d6d07_1.conda + sha256: 4079c617a75682e49bae63670d58fd6078ccfbbe55ca1f994acab3a74ab6bbcc + md5: b724f3b4b7f4e9b36c58cbe3ed8610a2 + depends: + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 + - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 + - libgcc >=13 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 260547 + timestamp: 1728730924071 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-files-datalake-cpp-12.12.0-hcdd55da_1.conda + sha256: f48523f8aa0b5b80f45a92f0556b388dd96f44ac2dc2f44a01d08c1822eec97d + md5: c49fbc5233fcbaa86391162ff1adef38 + depends: + - __osx >=11.0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 + - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 + - libcxx >=17 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 196032 + timestamp: 1728729672889 +- conda: https://conda.anaconda.org/conda-forge/noarch/backoff-2.2.1-pyhd8ed1ab_1.conda + sha256: f334115c6b0c6c2cd0d28595365f205ec7eaa60bcc5ff91a75d7245f728be820 + md5: a38b801f2bcc12af80c2e02a9e4ce7d9 + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 18816 + timestamp: 1733771192649 +- conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py312h2ec8cdc_2.conda + sha256: f2a59ccd20b4816dea9a2a5cb917eb69728271dbf1aeab4e1b7e609330a50b6f + md5: b0b867af6fc74b2a0aa206da29c0f3cf + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - libbrotlicommon 1.1.0 hb9d3cd8_2 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 349867 + timestamp: 1725267732089 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/brotli-python-1.1.0-py312h6f74592_2.conda + sha256: 9736bf660a0e4260c68f81d2635b51067f817813e6490ac9e8abd9a835dcbf6d + md5: e1e9727063057168d95f27a032acd0a4 + depends: + - libgcc >=13 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - libbrotlicommon 1.1.0 h86ecc28_2 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 356878 + timestamp: 1725267878508 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py312hde4cb15_2.conda + sha256: 254b411fa78ccc226f42daf606772972466f93e9bc6895eabb4cfda22f5178af + md5: a83c2ef76ccb11bc2349f4f17696b15d + depends: + - __osx >=11.0 + - libcxx >=17 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - libbrotlicommon 1.1.0 hd74edd7_2 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 339360 + timestamp: 1725268143995 +- conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda + sha256: 5ced96500d945fb286c9c838e54fa759aa04a7129c59800f0846b4335cee770d + md5: 62ee74e96c5ebb0af99386de58cf9553 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: bzip2-1.0.6 + license_family: BSD + size: 252783 + timestamp: 1720974456583 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h68df207_7.conda + sha256: 2258b0b33e1cb3a9852d47557984abb6e7ea58e3d7f92706ec1f8e879290c4cb + md5: 56398c28220513b9ea13d7b450acfb20 + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: bzip2-1.0.6 + license_family: BSD + size: 189884 + timestamp: 1720974504976 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda + sha256: adfa71f158cbd872a36394c56c3568e6034aa55c623634b37a4836bd036e6b91 + md5: fc6948412dbbbe9a4c9ddbbcfe0a79ab + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: bzip2-1.0.6 + license_family: BSD + size: 122909 + timestamp: 1720974522888 +- conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.4-hb9d3cd8_0.conda + sha256: d4f28d87b6339b94f74762c0076e29c8ef8ddfff51a564a92da2843573c18320 + md5: e2775acf57efd5af15b8e3d1d74d72d3 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 206085 + timestamp: 1734208189009 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/c-ares-1.34.4-h86ecc28_0.conda + sha256: 1187a41d4bb2afe02cb18690682edc98d1e9f5e0ccda638d8704a75ea1875bbe + md5: 356da36f35d36dcba16e43f1589d4e39 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 215979 + timestamp: 1734208193181 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.4-h5505292_0.conda + sha256: 09c0c8476e50b2955f474a4a1c17c4c047dd52993b5366b6ea8e968e583b921f + md5: c1c999a38a4303b29d75c636eaa13cf9 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 179496 + timestamp: 1734208291879 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2024.12.14-hbcca054_0.conda + sha256: 1afd7274cbc9a334d6d0bc62fa760acc7afdaceb0b91a8df370ec01fd75dc7dd + md5: 720523eb0d6a9b0f6120c16b2aa4e7de + arch: x86_64 + platform: linux + license: ISC + size: 157088 + timestamp: 1734208393264 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2024.12.14-hcefe29a_0.conda + sha256: ad7b43211051332a5a4e788bb4619a2d0ecb5be73e0f76be17f733a87d7effd1 + md5: 83b4ad1e6dc14df5891f3fcfdeb44351 + arch: aarch64 + platform: linux + license: ISC + size: 157096 + timestamp: 1734209301744 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2024.12.14-hf0a4a13_0.conda + sha256: 256be633fd0882ccc1a7a32bc278547e1703f85082c0789a87a603ee3ab8fb82 + md5: 7cb381a6783d91902638e4ed1ebd478e + arch: arm64 + platform: osx + license: ISC + size: 157091 + timestamp: 1734208344343 +- conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.12.14-pyhd8ed1ab_0.conda + sha256: 048c16a9cbcb1fbad02083414d3bc7c1d0eea4b39aee6aa6bf8d1d5089ca8bad + md5: 6feb87357ecd66733be3279f16a8c400 + depends: + - python >=3.9 + license: ISC + size: 161642 + timestamp: 1734380604767 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py312h06ac9bb_0.conda + sha256: cba6ea83c4b0b4f5b5dc59cb19830519b28f95d7ebef7c9c5cf1c14843621457 + md5: a861504bbea4161a9170b85d4d2be840 + depends: + - __glibc >=2.17,<3.0.a0 + - libffi >=3.4,<4.0a0 + - libgcc >=13 + - pycparser + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 294403 + timestamp: 1725560714366 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cffi-1.17.1-py312hac81daf_0.conda + sha256: 1162e3ca039e7ca7c0e78f0a020ed1bde968096841b663e3f393c966eb82f0f0 + md5: 1a256e5581b1099e9295cb84d53db3ea + depends: + - libffi >=3.4,<4.0a0 + - libgcc >=13 + - pycparser + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 312892 + timestamp: 1725561779888 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.1-py312h0fad829_0.conda + sha256: 8d91a0d01358b5c3f20297c6c536c5d24ccd3e0c2ddd37f9d0593d0f0070226f + md5: 19a5456f72f505881ba493979777b24e + depends: + - __osx >=11.0 + - libffi >=3.4,<4.0a0 + - pycparser + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 281206 + timestamp: 1725560813378 +- conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda + sha256: 4e0ee91b97e5de3e74567bdacea27f0139709fceca4db8adffbe24deffccb09b + md5: e83a31202d1c0a000fce3e9cf3825875 + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 47438 + timestamp: 1735929811779 +- conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda + sha256: c920d23cd1fcf565031c679adb62d848af60d6fbb0edc2d50ba475cea4f0d8ab + md5: f22f4d4970e09d68a10b922cbb0408d3 + depends: + - __unix + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 84705 + timestamp: 1734858922844 +- conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + sha256: ab29d57dc70786c1269633ba3dff20288b81664d3ff8d21af995742e2bb03287 + md5: 962b9857ee8e7018c22f2776ffa0b2d7 + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 27011 + timestamp: 1733218222191 +- conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda + sha256: 7e09bd083a609138b780fcc4535924cb96814d2c908a36d4c64a2ba9ee3efe7f + md5: 3e087f072ce03c43a9b60522f5d0ca2f + depends: + - aiohttp + - dill >=0.3.0,<0.3.8 + - fsspec >=2021.11.1 + - huggingface_hub >=0.14.0,<1.0.0 + - importlib-metadata + - multiprocess + - numpy >=1.17 + - packaging + - pandas + - pyarrow >=8.0.0 + - python >=3.8.0 + - python-xxhash + - pyyaml >=5.1 + - requests >=2.19.0 + - tqdm >=4.62.1 + license: Apache-2.0 + license_family: Apache + size: 347303 + timestamp: 1691593908658 +- conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhd8ed1ab_1.conda + sha256: a20ebf2c9b02a6eb32412ceb5c4cffaae49417db7e75414a76417538293a9402 + md5: eaef2e94d5bd76f758545d172c1fda67 + depends: + - python >=3.9 + - wrapt <2,>=1.10 + license: MIT + license_family: MIT + size: 14297 + timestamp: 1733662697343 +- conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda + sha256: 4ff20c6be028be2825235631c45d9e4a75bca1de65f8840c02dfb28ea0137c45 + md5: 5e4f3466526c52bc9af2d2353a1460bd + depends: + - python >=3.7 + license: BSD-3-Clause + license_family: BSD + size: 87553 + timestamp: 1690101185422 +- conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda + sha256: 3ec40ccf63f2450c5e6c7dd579e42fc2e97caf0d8cd4ba24aa434e6fc264eda0 + md5: 5fbd60d61d21b4bd2f9d7a48fe100418 + depends: + - python >=3.9,<4.0.0 + - sniffio + constrains: + - aioquic >=1.0.0 + - wmi >=1.5.1 + - httpx >=0.26.0 + - trio >=0.23 + - cryptography >=43 + - httpcore >=1.0.0 + - idna >=3.7 + - h2 >=4.1.0 + license: ISC + license_family: OTHER + size: 172172 + timestamp: 1733256829961 +- conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda + sha256: b91a19eb78edfc2dbb36de9a67f74ee2416f1b5273dd7327abe53f2dbf864736 + md5: da16dd3b0b71339060cd44cb7110ddf9 + depends: + - dnspython >=2.0.0 + - idna >=2.0.0 + - python >=3.9 + license: Unlicense + size: 44401 + timestamp: 1733300827551 +- conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_1.conda + sha256: e0d0fdf587aa0ed0ff08b2bce3ab355f46687b87b0775bfba01cc80a859ee6a2 + md5: 0794f8807ff2c6f020422cacb1bd7bfa + depends: + - email-validator >=2.2.0,<2.2.1.0a0 + license: Unlicense + size: 6552 + timestamp: 1733300828176 +- conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda + sha256: cbde2c64ec317118fc06b223c5fd87c8a680255e7348dd60e7b292d2e103e701 + md5: a16662747cdeb9abbac74d0057cc976e + depends: + - python >=3.9 + license: MIT and PSF-2.0 + size: 20486 + timestamp: 1733208916977 +- conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.6-pyhd8ed1ab_0.conda + sha256: d7826d537c667093c9de96411a09585a8d620c84a830a0195e58e9a0df45f018 + md5: 1b1e0c97830cdf75f1f371bd467ab657 + depends: + - email_validator >=2.0.0 + - fastapi-cli >=0.0.5 + - httpx >=0.23.0 + - jinja2 >=2.11.2 + - pydantic >=1.7.4,!=1.8,!=1.8.1,!=2.0.0,!=2.0.1,!=2.1.0,<3.0.0 + - python >=3.9 + - python-multipart >=0.0.7 + - starlette >=0.40.0,<0.42.0 + - typing_extensions >=4.8.0 + - uvicorn-standard >=0.12.0 + license: MIT + license_family: MIT + size: 73084 + timestamp: 1733362427885 +- conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.7-pyhd8ed1ab_0.conda + sha256: 300683731013b7221922339cd40430bb3c2ddeeb658fd7e37f5099ffe64e4db0 + md5: d960e0ea9e1c561aa928f6c4439f04c7 + depends: + - python >=3.9 + - rich-toolkit >=0.11.1 + - typer >=0.12.3 + - uvicorn-standard >=0.15.0 + license: MIT + license_family: MIT + size: 15546 + timestamp: 1734302408607 +- conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_1.conda + sha256: 18dca6e2194732df7ebf824abaefe999e4765ebe8e8a061269406ab88fc418b9 + md5: d692e9ba6f92dc51484bf3477e36ce7c + depends: + - python >=3.9 + license: Unlicense + size: 17441 + timestamp: 1733240909987 +- conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.12.1-h267a509_2.conda + sha256: b2e3c449ec9d907dd4656cb0dc93e140f447175b125a3824b31368b06c666bb6 + md5: 9ae35c3d96db2c94ce0cef86efdfa2cb + depends: + - libgcc-ng >=12 + - libpng >=1.6.39,<1.7.0a0 + - libzlib >=1.2.13,<2.0.0a0 + arch: x86_64 + platform: linux + license: GPL-2.0-only OR FTL + size: 634972 + timestamp: 1694615932610 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/freetype-2.12.1-hf0a5ef3_2.conda + sha256: 7af93030f4407f076dce181062360efac2cd54dce863b5d7765287a6f5382537 + md5: a5ab74c5bd158c3d5532b66d8d83d907 + depends: + - libgcc-ng >=12 + - libpng >=1.6.39,<1.7.0a0 + - libzlib >=1.2.13,<2.0.0a0 + arch: aarch64 + platform: linux + license: GPL-2.0-only OR FTL + size: 642092 + timestamp: 1694617858496 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/freetype-2.12.1-hadb7bae_2.conda + sha256: 791673127e037a2dc0eebe122dc4f904cb3f6e635bb888f42cbe1a76b48748d9 + md5: e6085e516a3e304ce41a8ee08b9b89ad + depends: + - libpng >=1.6.39,<1.7.0a0 + - libzlib >=1.2.13,<2.0.0a0 + arch: arm64 + platform: osx + license: GPL-2.0-only OR FTL + size: 596430 + timestamp: 1694616332835 +- conda: https://conda.anaconda.org/conda-forge/linux-64/frozenlist-1.5.0-py312h66e93f0_0.conda + sha256: 7e0c12983b20f2816b3712729b5a35ecb7ee152132ca7cf805427c62395ea823 + md5: f98e36c96b2c66d9043187179ddb04f4 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 60968 + timestamp: 1729699568442 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/frozenlist-1.5.0-py312hb2c0f52_0.conda + sha256: b0a9ff3e71452eed70877b2f3175d41cd85070da6deac381c5f3f61e1f19bccb + md5: 62fc11b0738ca15e0dd19b60cf280d12 + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 59967 + timestamp: 1729699642726 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/frozenlist-1.5.0-py312h0bf5046_0.conda + sha256: 44d6d6b332421e621c029fb149f12dba1ccb5ed6ac632e2e807a9d92d6cb2864 + md5: 7960352935cc95ac23883c9b8c97f2ff + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + size: 53366 + timestamp: 1729699762631 +- conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.12.0-pyhd8ed1ab_0.conda + sha256: 3320970c4604989eadf908397a9475f9e6a96a773c185915111399cbfbe47817 + md5: e041ad4c43ab5e10c74587f95378ebc7 + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 137756 + timestamp: 1734650349242 +- conda: https://conda.anaconda.org/conda-forge/linux-64/gflags-2.2.2-h5888daf_1005.conda + sha256: 6c33bf0c4d8f418546ba9c250db4e4221040936aef8956353bc764d4877bc39a + md5: d411fc29e338efb48c5fd4576d71d881 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 119654 + timestamp: 1726600001928 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gflags-2.2.2-h5ad3122_1005.conda + sha256: 28fe6b40b20454106d5e4ef6947cf298c13cc72a46347bbc49b563cd3a463bfa + md5: 4ff634d515abbf664774b5e1168a9744 + depends: + - libgcc >=13 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 106638 + timestamp: 1726599967617 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/gflags-2.2.2-hf9b8971_1005.conda + sha256: fd56ed8a1dab72ab90d8a8929b6f916a6d9220ca297ff077f8f04c5ed3408e20 + md5: 57a511a5905caa37540eb914dfcbf1fb + depends: + - __osx >=11.0 + - libcxx >=17 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 82090 + timestamp: 1726600145480 +- conda: https://conda.anaconda.org/conda-forge/linux-64/glog-0.7.1-hbabe93e_0.conda + sha256: dc824dc1d0aa358e28da2ecbbb9f03d932d976c8dca11214aa1dcdfcbd054ba2 + md5: ff862eebdfeb2fd048ae9dc92510baca + depends: + - gflags >=2.2.2,<2.3.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 143452 + timestamp: 1718284177264 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/glog-0.7.1-h468a4a4_0.conda + sha256: 920795d4f775a9f47e91c2223e64847f0b212b3fedc56c137c5889e32efe8ba0 + md5: 08940a32c6ced3703d1412dd37df4f62 + depends: + - gflags >=2.2.2,<2.3.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 145811 + timestamp: 1718284208668 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/glog-0.7.1-heb240a5_0.conda + sha256: 9fc77de416953aa959039db72bc41bfa4600ae3ff84acad04a7d0c1ab9552602 + md5: fef68d0a95aa5b84b5c1a4f6f3bf40e1 + depends: + - __osx >=11.0 + - gflags >=2.2.2,<2.3.0a0 + - libcxx >=16 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 112215 + timestamp: 1718284365403 +- conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda + sha256: d8d19575a827f2c62500949b9536efdd6b5406c9f546a73b6a87ac90b03a5875 + md5: 4861e30ff0cd566ea6fb4593e3b7c22a + depends: + - protobuf >=3.20.2,<6.0.0.dev0,!=3.20.0,!=3.20.1,!=4.21.1,!=4.21.2,!=4.21.3,!=4.21.4,!=4.21.5 + - python >=3.9 + license: Apache-2.0 + license_family: APACHE + size: 116522 + timestamp: 1731459019854 +- conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda + sha256: 622516185a7c740d5c7f27016d0c15b45782c1501e5611deec63fd70344ce7c8 + md5: 7ee49e89531c0dcbba9466f6d115d585 + depends: + - python >=3.9 + - typing_extensions + license: MIT + license_family: MIT + size: 51846 + timestamp: 1733327599467 +- conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_1.conda + sha256: 843ddad410c370672a8250470697027618f104153612439076d4d7b91eeb7b5c + md5: 825927dc7b0f287ef8d4d0011bb113b1 + depends: + - hpack >=4.0,<5 + - hyperframe >=6.0,<7 + - python >=3.9 + license: MIT + license_family: MIT + size: 52000 + timestamp: 1733298867359 +- conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda + sha256: ec89b7e5b8aa2f0219f666084446e1fb7b54545861e9caa892acb24d125761b5 + md5: 2aa5ff7fa34a81b9196532c84c10d865 + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 29412 + timestamp: 1733299296857 +- conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda + sha256: c84d012a245171f3ed666a8bf9319580c269b7843ffa79f26468842da3abd5df + md5: 2ca8e6dbc86525c8b95e3c0ffa26442e + depends: + - python >=3.8 + - h11 >=0.13,<0.15 + - h2 >=3,<5 + - sniffio 1.* + - anyio >=3.0,<5.0 + - certifi + license: BSD-3-Clause + license_family: BSD + size: 48959 + timestamp: 1731707562362 +- conda: https://conda.anaconda.org/conda-forge/linux-64/httptools-0.6.4-py312h66e93f0_0.conda + sha256: 621e7e050b888e5239d33e37ea72d6419f8367e5babcad38b755586f20264796 + md5: 8b1160b32557290b64d5be68db3d996d + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 101872 + timestamp: 1732707756745 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/httptools-0.6.4-py312hb2c0f52_0.conda + sha256: 0bd1f30224af142711d11033a7469ae402a1147143f399f7341bbc1d8178c722 + md5: 5e70a6de59352f9a52e9caa7f3447390 + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 101255 + timestamp: 1732707891645 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/httptools-0.6.4-py312hea69d52_0.conda + sha256: 5e93cda79e32e8c0039e05ea1939e688da336187dab025f699b42ef529e848be + md5: e1747a8e8d2aca5499aaea9993bf31ff + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 85623 + timestamp: 1732707871414 +- conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda + sha256: cd0f1de3697b252df95f98383e9edb1d00386bfdd03fdf607fa42fe5fcb09950 + md5: d6989ead454181f4f9bc987d3dc4e285 + depends: + - anyio + - certifi + - httpcore 1.* + - idna + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 63082 + timestamp: 1733663449209 +- conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.27.1-pyhd8ed1ab_0.conda + sha256: 4597d7aa720f4acdddacc27b3f9e8d4336cb79477c53aee2d7ab96d136169cdb + md5: 8c9a53ecd0c3c278efbdac567dd12ed0 + depends: + - filelock + - fsspec >=2023.5.0 + - packaging >=20.9 + - python >=3.9 + - pyyaml >=5.1 + - requests + - tqdm >=4.42.1 + - typing-extensions >=3.7.4.3 + - typing_extensions >=3.7.4.3 + license: Apache-2.0 + license_family: APACHE + size: 278363 + timestamp: 1736350219225 +- conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda + sha256: e91c6ef09d076e1d9a02819cd00fa7ee18ecf30cdd667605c853980216584d1b + md5: 566e75c90c1d0c8c459eb0ad9833dc7a + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 17239 + timestamp: 1733298862681 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda + sha256: 813298f2e54ef087dbfc9cc2e56e08ded41de65cff34c639cc8ba4e27e4540c9 + md5: 268203e8b983fddb6412b36f2024e75c + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 12282786 + timestamp: 1720853454991 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda + sha256: 9ba12c93406f3df5ab0a43db8a4b4ef67a5871dfd401010fbe29b218b2cbe620 + md5: 5eb22c1d7b3fc4abb50d92d621583137 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 11857802 + timestamp: 1720853997952 +- conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda + sha256: d7a472c9fd479e2e8dcb83fb8d433fce971ea369d704ece380e876f9c3494e87 + md5: 39a4f67be3286c86d696df570b1201b7 + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 49765 + timestamp: 1733211921194 +- conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_1.conda + sha256: 13766b88fc5b23581530d3a0287c0c58ad82f60401afefab283bf158d2be55a9 + md5: 315607a3030ad5d5227e76e0733798ff + depends: + - python >=3.9 + - zipp >=0.5 + license: Apache-2.0 + license_family: APACHE + size: 28623 + timestamp: 1733223207185 +- conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.5-pyhd8ed1ab_0.conda + sha256: 98977694b9ecaa3218662f843425f39501f81973c450f995eec68f1803ed71c3 + md5: 2752a6ed44105bfb18c9bef1177d9dcd + depends: + - markupsafe >=2.0 + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 112561 + timestamp: 1734824044952 +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + sha256: 19d8bd5bb2fde910ec59e081eeb59529491995ce0d653a5209366611023a0b3a + md5: 4ebae00eae9705b0c3d6d1018a81d047 + depends: + - importlib-metadata >=4.8.3 + - jupyter_core >=4.12,!=5.0.* + - python >=3.9 + - python-dateutil >=2.8.2 + - pyzmq >=23.0 + - tornado >=6.2 + - traitlets >=5.3 + license: BSD-3-Clause + license_family: BSD + size: 106342 + timestamp: 1733441040958 +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + sha256: 732b1e8536bc22a5a174baa79842d79db2f4956d90293dd82dc1b3f6099bcccd + md5: 0a2980dada0dd7fd0998f0342308b1b1 + depends: + - __unix + - platformdirs >=2.5 + - python >=3.8 + - traitlets >=5.3 + license: BSD-3-Clause + license_family: BSD + size: 57671 + timestamp: 1727163547058 +- conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 + sha256: 150c05a6e538610ca7c43beb3a40d65c90537497a4f6a5f4d15ec0451b6f5ebb + md5: 30186d27e2c9fa62b45fb1476b7200e3 + depends: + - libgcc-ng >=10.3.0 + arch: x86_64 + platform: linux + license: LGPL-2.1-or-later + size: 117831 + timestamp: 1646151697040 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/keyutils-1.6.1-h4e544f5_0.tar.bz2 + sha256: 6d4233d97a9b38acbb26e1268bcf8c10a8e79c2aed7e5a385ec3769967e3e65b + md5: 1f24853e59c68892452ef94ddd8afd4b + depends: + - libgcc-ng >=10.3.0 + arch: aarch64 + platform: linux + license: LGPL-2.1-or-later + size: 112327 + timestamp: 1646166857935 +- conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda + sha256: 99df692f7a8a5c27cd14b5fb1374ee55e756631b9c3d659ed3ee60830249b238 + md5: 3f43953b7d3fb3aaa1d0d0723d91e368 + depends: + - keyutils >=1.6.1,<2.0a0 + - libedit >=3.1.20191231,<3.2.0a0 + - libedit >=3.1.20191231,<4.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - openssl >=3.3.1,<4.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 1370023 + timestamp: 1719463201255 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/krb5-1.21.3-h50a48e9_0.conda + sha256: 0ec272afcf7ea7fbf007e07a3b4678384b7da4047348107b2ae02630a570a815 + md5: 29c10432a2ca1472b53f299ffb2ffa37 + depends: + - keyutils >=1.6.1,<2.0a0 + - libedit >=3.1.20191231,<3.2.0a0 + - libedit >=3.1.20191231,<4.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - openssl >=3.3.1,<4.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 1474620 + timestamp: 1719463205834 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda + sha256: 4442f957c3c77d69d9da3521268cad5d54c9033f1a73f99cde0a3658937b159b + md5: c6dc8a0fdec13a0565936655c33069a1 + depends: + - __osx >=11.0 + - libcxx >=16 + - libedit >=3.1.20191231,<3.2.0a0 + - libedit >=3.1.20191231,<4.0a0 + - openssl >=3.3.1,<4.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 1155530 + timestamp: 1719463474401 +- conda: https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.16-hb7c19ff_0.conda + sha256: 5c878d104b461b7ef922abe6320711c0d01772f4cd55de18b674f88547870041 + md5: 51bb7010fc86f70eee639b4bb7a894f5 + depends: + - libgcc-ng >=12 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libtiff >=4.6.0,<4.8.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 245247 + timestamp: 1701647787198 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lcms2-2.16-h922389a_0.conda + sha256: be4847b1014d3cbbc524a53bdbf66182f86125775020563e11d914c8468dd97d + md5: ffdd8267a04c515e7ce69c727b051414 + depends: + - libgcc-ng >=12 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libtiff >=4.6.0,<4.8.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 296219 + timestamp: 1701647961116 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.16-ha0e7c42_0.conda + sha256: 151e0c84feb7e0747fabcc85006b8973b22f5abbc3af76a9add0b0ef0320ebe4 + md5: 66f6c134e76fe13cce8a9ea5814b5dd5 + depends: + - libjpeg-turbo >=3.0.0,<4.0a0 + - libtiff >=4.6.0,<4.8.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 211959 + timestamp: 1701647962657 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_2.conda + sha256: 7c91cea91b13f4314d125d1bedb9d03a29ebbd5080ccdea70260363424646dbe + md5: 048b02e3962f066da18efe3a21b77672 + depends: + - __glibc >=2.17,<3.0.a0 + constrains: + - binutils_impl_linux-64 2.43 + arch: x86_64 + platform: linux + license: GPL-3.0-only + license_family: GPL + size: 669211 + timestamp: 1729655358674 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_2.conda + sha256: 80ec7e8f006196808fac5bd4b3773a652847f97bbf08044cd87731424ac64f8b + md5: fcbde5ea19d55468953bf588770c0501 + constrains: + - binutils_impl_linux-aarch64 2.43 + arch: aarch64 + platform: linux + license: GPL-3.0-only + license_family: GPL + size: 698245 + timestamp: 1729655345825 +- conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 + sha256: cb55f36dcd898203927133280ae1dc643368af041a48bcf7c026acb7c47b0c12 + md5: 76bbff344f0134279f225174e9064c8f + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 281798 + timestamp: 1657977462600 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.0.0-h4de3ea5_0.tar.bz2 + sha256: 2d09ef9b7796d83364957e420b41c32d94e628c3f0520b61c332518a7b5cd586 + md5: 1a0ffc65e03ce81559dbcb0695ad1476 + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 262096 + timestamp: 1657978241894 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 + sha256: 6f068bb53dfb6147d3147d981bb851bb5477e769407ad4e6a68edf482fdcb958 + md5: de462d5aacda3b30721b512c5da4e742 + depends: + - libcxx >=13.0.1 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 215721 + timestamp: 1657977558796 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda + sha256: 143a586aa67d50622ef703de57b9d43f44945836d6568e0e7aa174bd8c45e0d4 + md5: 488f260ccda0afaf08acb286db439c2f + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + constrains: + - libabseil-static =20240722.0=cxx17* + - abseil-cpp =20240722.0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 1311599 + timestamp: 1736008414161 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h18dbdb1_4.conda + sha256: bb6c5fb3b8de5f90735c5252b57efb3c268ee222c755569dac18065f05147670 + md5: 633b9fe454ffea2aaf29e191d946a83b + depends: + - libgcc >=13 + - libstdcxx >=13 + constrains: + - abseil-cpp =20240722.0 + - libabseil-static =20240722.0=cxx17* + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 1334844 + timestamp: 1736008472455 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_h07bc746_4.conda + sha256: 05fa5e5e908962b9c5aba95f962e2ca81d9599c4715aebe5e4ddb72b309d1770 + md5: c2d95bd7aa8d564a9bd7eca5e571a5b3 + depends: + - __osx >=11.0 + - libcxx >=18 + constrains: + - libabseil-static =20240722.0=cxx17* + - abseil-cpp =20240722.0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 1178260 + timestamp: 1736008642885 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-h9d9f30d_8_cpu.conda + build_number: 8 + sha256: f6c72ce82d145cb94a1131b68547b88056fb48158a382f9ce763286fce53ee65 + md5: 1c9caae53b14a385b59e87687adad2d6 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-crt-cpp >=0.29.8,<0.29.9.0a0 + - aws-sdk-cpp >=1.11.458,<1.11.459.0a0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - azure-identity-cpp >=1.10.0,<1.10.1.0a0 + - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 + - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 + - bzip2 >=1.0.8,<2.0a0 + - gflags >=2.2.2,<2.3.0a0 + - glog >=0.7.1,<0.8.0a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libbrotlidec >=1.1.0,<1.2.0a0 + - libbrotlienc >=1.1.0,<1.2.0a0 + - libgcc >=13 + - libgoogle-cloud >=2.33.0,<2.34.0a0 + - libgoogle-cloud-storage >=2.33.0,<2.34.0a0 + - libre2-11 >=2024.7.2 + - libstdcxx >=13 + - libutf8proc >=2.9.0,<2.10.0a0 + - libzlib >=1.3.1,<2.0a0 + - lz4-c >=1.10.0,<1.11.0a0 + - orc >=2.0.3,<2.0.4.0a0 + - re2 + - snappy >=1.2.1,<1.3.0a0 + - zstd >=1.5.6,<1.6.0a0 + constrains: + - arrow-cpp <0.0a0 + - parquet-cpp <0.0a0 + - apache-arrow-proc =*=cpu + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 8801586 + timestamp: 1736610546493 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-h47f80e1_8_cpu.conda + build_number: 8 + sha256: bf381dfa84e94ffce715c46352dd99f6f6ace69859b0efb822500f8882be429a + md5: daceef1881b4ddc72bb5b225a122c633 + depends: + - aws-crt-cpp >=0.29.8,<0.29.9.0a0 + - aws-sdk-cpp >=1.11.458,<1.11.459.0a0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - azure-identity-cpp >=1.10.0,<1.10.1.0a0 + - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 + - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 + - bzip2 >=1.0.8,<2.0a0 + - gflags >=2.2.2,<2.3.0a0 + - glog >=0.7.1,<0.8.0a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libbrotlidec >=1.1.0,<1.2.0a0 + - libbrotlienc >=1.1.0,<1.2.0a0 + - libgcc >=13 + - libgoogle-cloud >=2.33.0,<2.34.0a0 + - libgoogle-cloud-storage >=2.33.0,<2.34.0a0 + - libre2-11 >=2024.7.2 + - libstdcxx >=13 + - libutf8proc >=2.9.0,<2.10.0a0 + - libzlib >=1.3.1,<2.0a0 + - lz4-c >=1.10.0,<1.11.0a0 + - orc >=2.0.3,<2.0.4.0a0 + - re2 + - snappy >=1.2.1,<1.3.0a0 + - zstd >=1.5.6,<1.6.0a0 + constrains: + - arrow-cpp <0.0a0 + - apache-arrow-proc =*=cpu + - parquet-cpp <0.0a0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 8045923 + timestamp: 1736611764958 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-hf3eb8e5_8_cpu.conda + build_number: 8 + sha256: 766e46b45520773db93ee1a91951cc135a85544bba738e7b378d31f16097753f + md5: fdc79871e6c243b819497337215416d9 + depends: + - __osx >=11.0 + - aws-crt-cpp >=0.29.8,<0.29.9.0a0 + - aws-sdk-cpp >=1.11.458,<1.11.459.0a0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - azure-identity-cpp >=1.10.0,<1.10.1.0a0 + - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 + - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 + - bzip2 >=1.0.8,<2.0a0 + - glog >=0.7.1,<0.8.0a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libbrotlidec >=1.1.0,<1.2.0a0 + - libbrotlienc >=1.1.0,<1.2.0a0 + - libcxx >=18 + - libgoogle-cloud >=2.33.0,<2.34.0a0 + - libgoogle-cloud-storage >=2.33.0,<2.34.0a0 + - libre2-11 >=2024.7.2 + - libutf8proc >=2.9.0,<2.10.0a0 + - libzlib >=1.3.1,<2.0a0 + - lz4-c >=1.10.0,<1.11.0a0 + - orc >=2.0.3,<2.0.4.0a0 + - re2 + - snappy >=1.2.1,<1.3.0a0 + - zstd >=1.5.6,<1.6.0a0 + constrains: + - arrow-cpp <0.0a0 + - parquet-cpp <0.0a0 + - apache-arrow-proc =*=cpu + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + size: 5497383 + timestamp: 1736608604724 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-hcb10f89_8_cpu.conda + build_number: 8 + sha256: 126a6e78199311d99e38b9d633ce3e0290795ac68ce3ee8a9b91436c85c4095d + md5: 544759904898499f634f8f88a9907f88 + depends: + - __glibc >=2.17,<3.0.a0 + - libarrow 18.1.0 h9d9f30d_8_cpu + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 611558 + timestamp: 1736610592458 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h3b568fd_8_cpu.conda + build_number: 8 + sha256: c94844ab1d8fafe17775161283bd1fe7ab1f93f660fc5ba0c01bd33fe3d21eaf + md5: 7a8e6a363d2f39a2f3df3f181d12692d + depends: + - libarrow 18.1.0 h47f80e1_8_cpu + - libgcc >=13 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 579798 + timestamp: 1736611846905 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-hf07054f_8_cpu.conda + build_number: 8 + sha256: 29196dc6b2e4488f98bd8950de6333efe5d1a9d0cc62e186694946766185475e + md5: 8db96829f8e427167f450c7467a1ba44 + depends: + - __osx >=11.0 + - libarrow 18.1.0 hf3eb8e5_8_cpu + - libcxx >=18 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + size: 484442 + timestamp: 1736608695654 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-hcb10f89_8_cpu.conda + build_number: 8 + sha256: fe50edf030b5ccbadec2bf8f90d4cdf32d63ec52ba26233fc2c8bfbe43df3b15 + md5: 894a5ed78728b77c997fefeee222ac4d + depends: + - __glibc >=2.17,<3.0.a0 + - libarrow 18.1.0 h9d9f30d_8_cpu + - libarrow-acero 18.1.0 hcb10f89_8_cpu + - libgcc >=13 + - libparquet 18.1.0 h081d1f1_8_cpu + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 588032 + timestamp: 1736610711976 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h3b568fd_8_cpu.conda + build_number: 8 + sha256: bb87d8e633074c9759d93abb277d31314dc66fad741253b48e8265e186228c5b + md5: 11856da892b919cc27bd62638d701c65 + depends: + - libarrow 18.1.0 h47f80e1_8_cpu + - libarrow-acero 18.1.0 h3b568fd_8_cpu + - libgcc >=13 + - libparquet 18.1.0 hfc78867_8_cpu + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 560571 + timestamp: 1736611941995 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-hf07054f_8_cpu.conda + build_number: 8 + sha256: bff2d39e418eadab8c522a536449ac90f070dd8e83e2bd5e67a9c3eb8ecf712f + md5: 7b3736f49b3ba299b7799aeb448cb830 + depends: + - __osx >=11.0 + - libarrow 18.1.0 hf3eb8e5_8_cpu + - libarrow-acero 18.1.0 hf07054f_8_cpu + - libcxx >=18 + - libparquet 18.1.0 h636d7b7_8_cpu + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + size: 491001 + timestamp: 1736609758514 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-h08228c5_8_cpu.conda + build_number: 8 + sha256: dca372e27724904577315b8db3793e027a5c152a485e505e630a57b15634cd85 + md5: 46eaf81238da6f3ffab1f3ffdcee382e + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libarrow 18.1.0 h9d9f30d_8_cpu + - libarrow-acero 18.1.0 hcb10f89_8_cpu + - libarrow-dataset 18.1.0 hcb10f89_8_cpu + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 521707 + timestamp: 1736610765240 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h1e9d426_8_cpu.conda + build_number: 8 + sha256: 1896ea00da28e10670f7ba51bb543e68a87f717e9f5692fee44268f1a13d9eee + md5: e7dc0209e065a2b51f19848cefa4b1ab + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libarrow 18.1.0 h47f80e1_8_cpu + - libarrow-acero 18.1.0 h3b568fd_8_cpu + - libarrow-dataset 18.1.0 h3b568fd_8_cpu + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 517189 + timestamp: 1736611989417 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-h4239455_8_cpu.conda + build_number: 8 + sha256: ae52d926ebfc8edb0728824f2918a825d39bd85a4ef27fe2b73656cfecdd7c69 + md5: f67eb19d22ba355cced8c86073ad49b1 + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libarrow 18.1.0 hf3eb8e5_8_cpu + - libarrow-acero 18.1.0 hf07054f_8_cpu + - libarrow-dataset 18.1.0 hf07054f_8_cpu + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + size: 452161 + timestamp: 1736609917123 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-26_linux64_openblas.conda + build_number: 26 + sha256: 30bd658682b124243f8e52d8edf8a19e7be1bc31e4fe4baec30a64002dc8cd0c + md5: ac52800af2e0c0e7dac770b435ce768a + depends: + - libopenblas >=0.3.28,<0.3.29.0a0 + - libopenblas >=0.3.28,<1.0a0 + constrains: + - libcblas 3.9.0 26_linux64_openblas + - liblapack 3.9.0 26_linux64_openblas + - liblapacke 3.9.0 26_linux64_openblas + - blas * openblas + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 16393 + timestamp: 1734432564346 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-26_linuxaarch64_openblas.conda + build_number: 26 + sha256: df6d8ee34d45cf35609ecdd55c1ff03e32e0cd87ae41ebe4ef3747a8e09ead4d + md5: 8d900b7079a00969d70305e9aad550b7 + depends: + - libopenblas >=0.3.28,<0.3.29.0a0 + - libopenblas >=0.3.28,<1.0a0 + constrains: + - blas * openblas + - liblapacke 3.9.0 26_linuxaarch64_openblas + - libcblas 3.9.0 26_linuxaarch64_openblas + - liblapack 3.9.0 26_linuxaarch64_openblas + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 16477 + timestamp: 1734432576699 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-26_osxarm64_openblas.conda + build_number: 26 + sha256: 597f9c3779caa979c8c6abbb3ba8c7191b84e1a910d6b0d10e5faf35284c450c + md5: 21be102c9ae80a67ba7de23b129aa7f6 + depends: + - libopenblas >=0.3.28,<0.3.29.0a0 + - libopenblas >=0.3.28,<1.0a0 + constrains: + - liblapack 3.9.0 26_osxarm64_openblas + - liblapacke 3.9.0 26_osxarm64_openblas + - libcblas 3.9.0 26_osxarm64_openblas + - blas * openblas + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 16714 + timestamp: 1734433054681 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hb9d3cd8_2.conda + sha256: d9db2de60ea917298e658143354a530e9ca5f9c63471c65cf47ab39fd2f429e3 + md5: 41b599ed2b02abcfdd84302bff174b23 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 68851 + timestamp: 1725267660471 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlicommon-1.1.0-h86ecc28_2.conda + sha256: 64112af913974b309d67fd342e065fd184347043a6387933b3db796778a28019 + md5: 3ee026955c688f551a9999840cff4c67 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 68982 + timestamp: 1725267774142 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.1.0-hd74edd7_2.conda + sha256: 839dacb741bdbb25e58f42088a2001b649f4f12195aeb700b5ddfca3267749e5 + md5: d0bf1dff146b799b319ea0434b93f779 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 68426 + timestamp: 1725267943211 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hb9d3cd8_2.conda + sha256: 2892d512cad096cb03f1b66361deeab58b64e15ba525d6592bb6d609e7045edf + md5: 9566f0bd264fbd463002e759b8a82401 + depends: + - __glibc >=2.17,<3.0.a0 + - libbrotlicommon 1.1.0 hb9d3cd8_2 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 32696 + timestamp: 1725267669305 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlidec-1.1.0-h86ecc28_2.conda + sha256: 94c808d9ca3eb6ef30976a9843e27f027cf3a1e84e8c6835cbb696b7bdb35c4c + md5: e64d0f3b59c7c4047446b97a8624a72d + depends: + - libbrotlicommon 1.1.0 h86ecc28_2 + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 31708 + timestamp: 1725267783442 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.1.0-hd74edd7_2.conda + sha256: 6c6862eb274f21a7c0b60e5345467a12e6dda8b9af4438c66d496a2c1a538264 + md5: 55e66e68ce55523a6811633dd1ac74e2 + depends: + - __osx >=11.0 + - libbrotlicommon 1.1.0 hd74edd7_2 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 28378 + timestamp: 1725267980316 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.1.0-hb9d3cd8_2.conda + sha256: 779f58174e99de3600e939fa46eddb453ec5d3c60bb46cdaa8b4c127224dbf29 + md5: 06f70867945ea6a84d35836af780f1de + depends: + - __glibc >=2.17,<3.0.a0 + - libbrotlicommon 1.1.0 hb9d3cd8_2 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 281750 + timestamp: 1725267679782 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlienc-1.1.0-h86ecc28_2.conda + sha256: 41385e17bc73834b235c5aff12d6d82eccb534acb3c30986996f9dad92a0d54c + md5: 0e9bd365480c72b25c71a448257b537d + depends: + - libbrotlicommon 1.1.0 h86ecc28_2 + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 290230 + timestamp: 1725267792697 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlienc-1.1.0-hd74edd7_2.conda + sha256: eeb1eb0d58b9d02bc1b98dc0a058f104ab168eb2f7d1c7bfa0570a12cfcdb7b7 + md5: 4f3a434504c67b2c42565c0b85c1885c + depends: + - __osx >=11.0 + - libbrotlicommon 1.1.0 hd74edd7_2 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 279644 + timestamp: 1725268003553 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-26_linux64_openblas.conda + build_number: 26 + sha256: 9c74e536c9bc868e356ffd43f81c2cb398aec84b40fcadc312315b164a5500ee + md5: ebcc5f37a435aa3c19640533c82f8d76 + depends: + - libblas 3.9.0 26_linux64_openblas + constrains: + - liblapack 3.9.0 26_linux64_openblas + - liblapacke 3.9.0 26_linux64_openblas + - blas * openblas + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 16336 + timestamp: 1734432570482 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-26_linuxaarch64_openblas.conda + build_number: 26 + sha256: 521e78be0c4170f229c43e1a6c94337a72db3ebcbe6e5960f8413aa438dcb8f9 + md5: d77f943ae4083f3aeddca698f2d28262 + depends: + - libblas 3.9.0 26_linuxaarch64_openblas + constrains: + - blas * openblas + - liblapacke 3.9.0 26_linuxaarch64_openblas + - liblapack 3.9.0 26_linuxaarch64_openblas + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 16398 + timestamp: 1734432580937 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-26_osxarm64_openblas.conda + build_number: 26 + sha256: 27a29ef6b2fd2179bc3a0bb9db351f078ba140ca10485dca147c399639f84c93 + md5: a0e9980fe12d42f6d0c0ec009f67e948 + depends: + - libblas 3.9.0 26_osxarm64_openblas + constrains: + - liblapack 3.9.0 26_osxarm64_openblas + - liblapacke 3.9.0 26_osxarm64_openblas + - blas * openblas + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 16628 + timestamp: 1734433061517 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcrc32c-1.1.2-h9c3ff4c_0.tar.bz2 + sha256: fd1d153962764433fe6233f34a72cdeed5dcf8a883a85769e8295ce940b5b0c5 + md5: c965a5aa0d5c1c37ffc62dff36e28400 + depends: + - libgcc-ng >=9.4.0 + - libstdcxx-ng >=9.4.0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 20440 + timestamp: 1633683576494 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcrc32c-1.1.2-h01db608_0.tar.bz2 + sha256: b8b8c57a87da86b3ea24280fd6aa8efaf92f4e684b606bf2db5d3cb06ffbe2ea + md5: 268ee639c17ada0002fb04dd21816cc2 + depends: + - libgcc-ng >=9.4.0 + - libstdcxx-ng >=9.4.0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 18669 + timestamp: 1633683724891 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcrc32c-1.1.2-hbdafb3b_0.tar.bz2 + sha256: 58477b67cc719060b5b069ba57161e20ba69b8695d154a719cb4b60caf577929 + md5: 32bd82a6a625ea6ce090a81c3d34edeb + depends: + - libcxx >=11.1.0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 18765 + timestamp: 1633683992603 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.11.1-h332b0f4_0.conda + sha256: 3cd4075b2a7b5562e46c8ec626f6f9ca57aeecaa94ff7df57eca26daa94c9906 + md5: 2b3e0081006dc21e8bf53a91c83a055c + depends: + - __glibc >=2.17,<3.0.a0 + - krb5 >=1.21.3,<1.22.0a0 + - libgcc >=13 + - libnghttp2 >=1.64.0,<2.0a0 + - libssh2 >=1.11.1,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + - zstd >=1.5.6,<1.6.0a0 + arch: x86_64 + platform: linux + license: curl + license_family: MIT + size: 423011 + timestamp: 1733999897624 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcurl-8.11.1-h6702fde_0.conda + sha256: 9fc65d21a58f4aad1bc39dfb94a178893aeb035850c5cf0ed9736674279f390b + md5: 7dec1cd271c403d1636bda5aa388a55d + depends: + - krb5 >=1.21.3,<1.22.0a0 + - libgcc >=13 + - libnghttp2 >=1.64.0,<2.0a0 + - libssh2 >=1.11.1,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + - zstd >=1.5.6,<1.6.0a0 + arch: aarch64 + platform: linux + license: curl + license_family: MIT + size: 440737 + timestamp: 1733999835504 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.11.1-h73640d1_0.conda + sha256: f47c35938144c23278987c7d12096f6a42d7c850ffc277222b032073412383b6 + md5: 46d7524cabfdd199bffe63f8f19a552b + depends: + - __osx >=11.0 + - krb5 >=1.21.3,<1.22.0a0 + - libnghttp2 >=1.64.0,<2.0a0 + - libssh2 >=1.11.1,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + - zstd >=1.5.6,<1.6.0a0 + arch: arm64 + platform: osx + license: curl + license_family: MIT + size: 385098 + timestamp: 1734000160270 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda + sha256: 776092346da87a2a23502e14d91eb0c32699c4a1522b7331537bd1c3751dcff5 + md5: 5b3e1610ff8bd5443476b91d618f5b77 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + size: 523505 + timestamp: 1736877862502 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.23-h4ddbbb0_0.conda + sha256: 511d801626d02f4247a04fff957cc6e9ec4cc7e8622bd9acd076bcdc5de5fe66 + md5: 8dfae1d2e74767e9ce36d5fa0d8605db + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 72255 + timestamp: 1734373823254 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libdeflate-1.23-h5e3c512_0.conda + sha256: 959419d87cd2b789a9055db95704c614f31aeb70bef7949fa2f734122a3a2863 + md5: 7e7ca2607b11b180120cefc2354fc0cb + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 69862 + timestamp: 1734373858306 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.23-hec38601_0.conda + sha256: 887c02deaed6d583459eba6367023e36d8761085b2f7126e389424f57155da53 + md5: 1d8b9588be14e71df38c525767a1ac30 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 54132 + timestamp: 1734373971372 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20240808-pl5321h7949ede_0.conda + sha256: 4d0d69ddf9cc7d724a1ccf3a9852e44c8aea9825692582bac2c4e8d21ec95ccd + md5: 8247f80f3dc464d9322e85007e307fe8 + depends: + - ncurses + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - ncurses >=6.5,<7.0a0 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + size: 134657 + timestamp: 1736191912705 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20240808-pl5321h976ea20_0.conda + sha256: 031daea98cf278f858b7957ad5dc475f1b5673cd5e718850529401ced64cef2c + md5: 0be40129d3dd1a152fff29a85f0785d0 + depends: + - ncurses + - libgcc >=13 + - ncurses >=6.5,<7.0a0 + arch: aarch64 + platform: linux + license: BSD-2-Clause + license_family: BSD + size: 148120 + timestamp: 1736192137151 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20240808-pl5321hafb1f1b_0.conda + sha256: fb934d7a03279ec8eae4bf1913ac9058fcf6fed35290d8ffa6e04157f396a3b1 + md5: af89aa84ffb5ee551ce0c137b951a3b5 + depends: + - ncurses + - __osx >=11.0 + - ncurses >=6.5,<7.0a0 + arch: arm64 + platform: osx + license: BSD-2-Clause + license_family: BSD + size: 107634 + timestamp: 1736192034117 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda + sha256: 1cd6048169fa0395af74ed5d8f1716e22c19a81a8a36f934c110ca3ad4dd27b4 + md5: 172bf1cd1ff8629f2b1179945ed45055 + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + size: 112766 + timestamp: 1702146165126 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libev-4.33-h31becfc_2.conda + sha256: 973af77e297f1955dd1f69c2cbdc5ab9dfc88388a5576cd152cda178af0fd006 + md5: a9a13cb143bbaa477b1ebaefbe47a302 + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: BSD-2-Clause + license_family: BSD + size: 115123 + timestamp: 1702146237623 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libev-4.33-h93a5062_2.conda + sha256: 95cecb3902fbe0399c3a7e67a5bed1db813e5ab0e22f4023a5e0f722f2cc214f + md5: 36d33e440c31857372a72137f78bacf5 + arch: arm64 + platform: osx + license: BSD-2-Clause + license_family: BSD + size: 107458 + timestamp: 1702146414478 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libevent-2.1.12-hf998b51_1.conda + sha256: 2e14399d81fb348e9d231a82ca4d816bf855206923759b69ad006ba482764131 + md5: a1cfcc585f0c42bf8d5546bb1dfb668d + depends: + - libgcc-ng >=12 + - openssl >=3.1.1,<4.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 427426 + timestamp: 1685725977222 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libevent-2.1.12-h4ba1bb4_1.conda + sha256: 01333cc7d6e6985dd5700b43660d90e9e58049182017fd24862088ecbe1458e4 + md5: 96ae6083cd1ac9f6bc81631ac835b317 + depends: + - libgcc-ng >=12 + - openssl >=3.1.1,<4.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 438992 + timestamp: 1685726046519 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libevent-2.1.12-h2757513_1.conda + sha256: 8c136d7586259bb5c0d2b913aaadc5b9737787ae4f40e3ad1beaf96c80b919b7 + md5: 1a109764bff3bdc7bdd84088347d71dc + depends: + - openssl >=3.1.1,<4.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 368167 + timestamp: 1685726248899 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda + sha256: 56541b98447b58e52d824bd59d6382d609e11de1f8adf20b23143e353d2b8d26 + md5: db833e03127376d461e1e13e76f09b6c + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + constrains: + - expat 2.6.4.* + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 73304 + timestamp: 1730967041968 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.6.4-h5ad3122_0.conda + sha256: f42e758009ba9db90d1fe7992bc3e60d0c52f71fb20923375d2c44ae69a5a2b3 + md5: f1b3fab36861b3ce945a13f0dfdfc688 + depends: + - libgcc >=13 + constrains: + - expat 2.6.4.* + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 72345 + timestamp: 1730967203789 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.4-h286801f_0.conda + sha256: e42ab5ace927ee7c84e3f0f7d813671e1cf3529f5f06ee5899606630498c2745 + md5: 38d2656dd914feb0cab8c629370768bf + depends: + - __osx >=11.0 + constrains: + - expat 2.6.4.* + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 64693 + timestamp: 1730967175868 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.2-h7f98852_5.tar.bz2 + sha256: ab6e9856c21709b7b517e940ae7028ae0737546122f83c2aa5d692860c3b149e + md5: d645c6d2ac96843a2bfaccd2d62b3ac3 + depends: + - libgcc-ng >=9.4.0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 58292 + timestamp: 1636488182923 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.4.2-h3557bc0_5.tar.bz2 + sha256: 7e9258a102480757fe3faeb225a3ca04dffd10fecd2a958c65cdb4cdf75f2c3c + md5: dddd85f4d52121fab0a8b099c5e06501 + depends: + - libgcc-ng >=9.4.0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 59450 + timestamp: 1636488255090 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 + sha256: 41b3d13efb775e340e4dba549ab5c029611ea6918703096b2eaa9c015c0750ca + md5: 086914b672be056eb70fd4285b6783b6 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 39020 + timestamp: 1636488587153 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h77fa898_1.conda + sha256: 53eb8a79365e58849e7b1a068d31f4f9e718dc938d6f2c03e960345739a03569 + md5: 3cb76c3f10d3bc7f1105b2fc9db984df + depends: + - _libgcc_mutex 0.1 conda_forge + - _openmp_mutex >=4.5 + constrains: + - libgomp 14.2.0 h77fa898_1 + - libgcc-ng ==14.2.0=*_1 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 848745 + timestamp: 1729027721139 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-14.2.0-he277a41_1.conda + sha256: 5d56757ccad208c79214395b00d006d8d18929a4ba49c47bd9460789a7620943 + md5: 511b511c5445e324066c3377481bcab8 + depends: + - _openmp_mutex >=4.5 + constrains: + - libgcc-ng ==14.2.0=*_1 + - libgomp 14.2.0 he277a41_1 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 535243 + timestamp: 1729089435134 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_1.conda + sha256: 3a76969c80e9af8b6e7a55090088bc41da4cffcde9e2c71b17f44d37b7cb87f7 + md5: e39480b9ca41323497b05492a63bc35b + depends: + - libgcc 14.2.0 h77fa898_1 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 54142 + timestamp: 1729027726517 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-14.2.0-he9431aa_1.conda + sha256: 9b5cf168a6c7361cae869cb74b716766ee7c6d6b3f6172b32ba9bf91135efdc4 + md5: 0694c249c61469f2c0f7e2990782af21 + depends: + - libgcc 14.2.0 he277a41_1 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 54104 + timestamp: 1729089444587 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_1.conda + sha256: fc9e7f22a17faf74da904ebfc4d88699013d2992e55505e4aa0eb01770290977 + md5: f1fd30127802683586f768875127a987 + depends: + - libgfortran5 14.2.0 hd5240d6_1 + constrains: + - libgfortran-ng ==14.2.0=*_1 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 53997 + timestamp: 1729027752995 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_1.conda + sha256: cb66e411fa32a5c6040f4e5e2a63c00897aae4c3133a9c004c2e929ccf19575b + md5: 0294b92d2f47a240bebb1e3336b495f1 + depends: + - libgfortran5 14.2.0 hb6113d0_1 + constrains: + - libgfortran-ng ==14.2.0=*_1 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 54105 + timestamp: 1729089471124 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda + sha256: 44e541b4821c96b28b27fef5630883a60ce4fee91fd9c79f25a199f8f73f337b + md5: 4a55d9e169114b2b90d3ec4604cd7bbf + depends: + - libgfortran5 13.2.0 hf226fd6_3 + arch: arm64 + platform: osx + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 110233 + timestamp: 1707330749033 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hd5240d6_1.conda + sha256: d149a37ca73611e425041f33b9d8dbed6e52ec506fe8cc1fc0ee054bddeb6d5d + md5: 9822b874ea29af082e5d36098d25427d + depends: + - libgcc >=14.2.0 + constrains: + - libgfortran 14.2.0 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 1462645 + timestamp: 1729027735353 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_1.conda + sha256: a87ff46d19916403cbf68cf1d785bf56b4d1ab7b2552468d2ea775d70782493f + md5: fc068e11b10e18f184e027782baa12b6 + depends: + - libgcc >=14.2.0 + constrains: + - libgfortran 14.2.0 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 1102158 + timestamp: 1729089452640 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda + sha256: bafc679eedb468a86aa4636061c55966186399ee0a04b605920d208d97ac579a + md5: 66ac81d54e95c534ae488726c1f698ea + depends: + - llvm-openmp >=8.0.0 + constrains: + - libgfortran 5.0.0 13_2_0_*_3 + arch: arm64 + platform: osx + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 997381 + timestamp: 1707330687590 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h77fa898_1.conda + sha256: 1911c29975ec99b6b906904040c855772ccb265a1c79d5d75c8ceec4ed89cd63 + md5: cc3573974587f12dda90d96e3e55a702 + depends: + - _libgcc_mutex 0.1 conda_forge + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 460992 + timestamp: 1729027639220 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_1.conda + sha256: 5aa53874a5e57a00f2e0c2e2910684eb674429cd5fcb803619b226a73e89aedf + md5: 376f0e73abbda6d23c0cb749adc195ef + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 463521 + timestamp: 1729089357313 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.33.0-h2b5623c_1.conda + sha256: ae48ee93e2c226bf682f1e389c2fd51ae7bf77c2ce4b3aee069764f4be1c63f2 + md5: 61829a8dd5f4e2327e707572065bae41 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcurl >=8.11.1,<9.0a0 + - libgcc >=13 + - libgrpc >=1.67.1,<1.68.0a0 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + - openssl >=3.4.0,<4.0a0 + constrains: + - libgoogle-cloud 2.33.0 *_1 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 1254656 + timestamp: 1735648569457 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-2.33.0-hccf9d24_1.conda + sha256: d3d4def86d880431928799ba90ca97e57c2f05677c03af8de2337502926c492c + md5: a2724014eb04f14bd71d35f45b062dd0 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcurl >=8.11.1,<9.0a0 + - libgcc >=13 + - libgrpc >=1.67.1,<1.68.0a0 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + - openssl >=3.4.0,<4.0a0 + constrains: + - libgoogle-cloud 2.33.0 *_1 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 1253019 + timestamp: 1735649566849 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-2.33.0-hdbe95d5_1.conda + sha256: ce95aca02451694a4154c7770b6addf4fb859abf17912de6ec947da8469a56ce + md5: 91de1fbab8610974c0094c266bc63435 + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcurl >=8.11.1,<9.0a0 + - libcxx >=18 + - libgrpc >=1.67.1,<1.68.0a0 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - openssl >=3.4.0,<4.0a0 + constrains: + - libgoogle-cloud 2.33.0 *_1 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 877594 + timestamp: 1735648230965 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.33.0-h0121fbd_1.conda + sha256: 41022523320ca8633a6c615710823e596efadb50f06d724e1a0c81e27994f257 + md5: b0cfb5044685a7a9fa43ae669124f0a0 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil + - libcrc32c >=1.1.2,<1.2.0a0 + - libcurl + - libgcc >=13 + - libgoogle-cloud 2.33.0 h2b5623c_1 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 784357 + timestamp: 1735648759177 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-storage-2.33.0-hb9b2b65_1.conda + sha256: 5eda1cbba68709b91b370b3792c9cfd7bec4ac4e2262f0887d12e1f000ae1191 + md5: 45df2267ff4d8ce532e8d300ce0b0829 + depends: + - libabseil + - libcrc32c >=1.1.2,<1.2.0a0 + - libcurl + - libgcc >=13 + - libgoogle-cloud 2.33.0 hccf9d24_1 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 737518 + timestamp: 1735649773462 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-storage-2.33.0-h7081f7f_1.conda + sha256: c0524a22064bc17f5c037da09ba54cc9e767741ef645178e499750c44bec2531 + md5: af8e51382464d4cc2d0054977c40a732 + depends: + - __osx >=11.0 + - libabseil + - libcrc32c >=1.1.2,<1.2.0a0 + - libcurl + - libcxx >=18 + - libgoogle-cloud 2.33.0 hdbe95d5_1 + - libzlib >=1.3.1,<2.0a0 + - openssl + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 526963 + timestamp: 1735649222088 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.67.1-h25350d4_1.conda + sha256: 014627485b3cf0ea18e04c0bab07be7fb98722a3aeeb58477acc7e1c3d2f911e + md5: 0c6497a760b99a926c7c12b74951a39c + depends: + - __glibc >=2.17,<3.0.a0 + - c-ares >=1.34.4,<2.0a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libre2-11 >=2024.7.2 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + - re2 + constrains: + - grpc-cpp =1.67.1 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 7792251 + timestamp: 1735584856826 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgrpc-1.67.1-hf7ccdd3_1.conda + sha256: 3fa173dc1d7456aac2b26937daae86a08432a31640e3d6569c62edc661fc9bbe + md5: 8fb41a425bebaeb3d0fa568503612e64 + depends: + - c-ares >=1.34.4,<2.0a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libre2-11 >=2024.7.2 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + - re2 + constrains: + - grpc-cpp =1.67.1 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 7430006 + timestamp: 1735585769731 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgrpc-1.67.1-h0a426d6_1.conda + sha256: 630edf63981818ff590367cb95fddbed0f5a390464d0952c90ec81de899e84a6 + md5: 8a3cba079d6ac985e7d73c76a678fbb4 + depends: + - __osx >=11.0 + - c-ares >=1.34.4,<2.0a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libre2-11 >=2024.7.2 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + - re2 + constrains: + - grpc-cpp =1.67.1 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + size: 5311706 + timestamp: 1735585137716 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-hd590300_2.conda + sha256: 8ac2f6a9f186e76539439e50505d98581472fedb347a20e7d1f36429849f05c9 + md5: d66573916ffcf376178462f1b61c941e + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: LGPL-2.1-only + size: 705775 + timestamp: 1702682170569 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libiconv-1.17-h31becfc_2.conda + sha256: a30e09d089cb75a0d5b8e5c354694c1317da98261185ed65aa3793e741060614 + md5: 9a8eb13f14de7d761555a98712e6df65 + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: LGPL-2.1-only + size: 705787 + timestamp: 1702684557134 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.17-h0d3ecfb_2.conda + sha256: bc7de5097b97bcafcf7deaaed505f7ce02f648aac8eccc0d5a47cc599a1d0304 + md5: 69bda57310071cf6d2b86caf11573d2d + arch: arm64 + platform: osx + license: LGPL-2.1-only + size: 676469 + timestamp: 1702682458114 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda + sha256: b954e09b7e49c2f2433d6f3bb73868eda5e378278b0f8c1dd10a7ef090e14f2f + md5: ea25936bb4080d843790b586850f82b8 + depends: + - libgcc-ng >=12 + constrains: + - jpeg <0.0.0a + arch: x86_64 + platform: linux + license: IJG AND BSD-3-Clause AND Zlib + size: 618575 + timestamp: 1694474974816 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libjpeg-turbo-3.0.0-h31becfc_1.conda + sha256: 675bc1f2a8581cd34a86c412663ec29c5f90c1d9f8d11866aa1ade5cdbdf8429 + md5: ed24e702928be089d9ba3f05618515c6 + depends: + - libgcc-ng >=12 + constrains: + - jpeg <0.0.0a + arch: aarch64 + platform: linux + license: IJG AND BSD-3-Clause AND Zlib + size: 647126 + timestamp: 1694475003570 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.0.0-hb547adb_1.conda + sha256: a42054eaa38e84fc1e5ab443facac4bbc9d1b6b6f23f54b7bf4f1eb687e1d993 + md5: 3ff1e053dc3a2b8e36b9bfa4256a58d1 + constrains: + - jpeg <0.0.0a + arch: arm64 + platform: osx + license: IJG AND BSD-3-Clause AND Zlib + size: 547541 + timestamp: 1694475104253 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-26_linux64_openblas.conda + build_number: 26 + sha256: b76458c36331376911e0f98fa68109e02f4d5e5ebfffa79587ac69cef748bba1 + md5: 3792604c43695d6a273bc5faaac47d48 + depends: + - libblas 3.9.0 26_linux64_openblas + constrains: + - libcblas 3.9.0 26_linux64_openblas + - liblapacke 3.9.0 26_linux64_openblas + - blas * openblas + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 16338 + timestamp: 1734432576650 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-26_linuxaarch64_openblas.conda + build_number: 26 + sha256: a42bd01498efe2ccf6d08d56ac3cbd3ceab79e06699ff5aac3da8e45a66738f7 + md5: a5d4e18876393633da62fd8492c00156 + depends: + - libblas 3.9.0 26_linuxaarch64_openblas + constrains: + - blas * openblas + - liblapacke 3.9.0 26_linuxaarch64_openblas + - libcblas 3.9.0 26_linuxaarch64_openblas + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 16403 + timestamp: 1734432585123 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-26_osxarm64_openblas.conda + build_number: 26 + sha256: dd6d9a21e672aee4332f019c8229ce70cf5eaf6c2f4cbd1443b105fb66c00dc5 + md5: cebad79038a75cfd28fa90d147a2d34d + depends: + - libblas 3.9.0 26_osxarm64_openblas + constrains: + - liblapacke 3.9.0 26_osxarm64_openblas + - libcblas 3.9.0 26_osxarm64_openblas + - blas * openblas + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 16624 + timestamp: 1734433068120 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.3-hb9d3cd8_1.conda + sha256: e6e425252f3839e2756e4af1ea2074dffd3396c161bf460629f9dfd6a65f15c6 + md5: 2ecf2f1c7e4e21fcfe6423a51a992d84 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: 0BSD + size: 111132 + timestamp: 1733407410083 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.3-h86ecc28_1.conda + sha256: d1cce0b7d62d1e54e2164d3e0667ee808efc6c3870256e5b47a150cd0bf46824 + md5: eb08b903681f9f2432c320e8ed626723 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: 0BSD + size: 124138 + timestamp: 1733409137214 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.3-h39f12f2_1.conda + sha256: d863b8257406918ffdc50ae65502f2b2d6cede29404d09a094f59509d6a0aaf1 + md5: b2553114a7f5e20ccd02378a77d836aa + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: 0BSD + size: 99129 + timestamp: 1733407496073 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda + sha256: b0f2b3695b13a989f75d8fd7f4778e1c7aabe3b36db83f0fe80b2cd812c0e975 + md5: 19e57602824042dfd0446292ef90488b + depends: + - __glibc >=2.17,<3.0.a0 + - c-ares >=1.32.3,<2.0a0 + - libev >=4.33,<4.34.0a0 + - libev >=4.33,<5.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.3.2,<4.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 647599 + timestamp: 1729571887612 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnghttp2-1.64.0-hc8609a4_0.conda + sha256: c093c6d370aadbf0409c20b6c54c488ee2f6fea976181919fcc63e87ee232673 + md5: f52c614fa214a8bedece9421c771670d + depends: + - c-ares >=1.32.3,<2.0a0 + - libev >=4.33,<4.34.0a0 + - libev >=4.33,<5.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.3.2,<4.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 714610 + timestamp: 1729571912479 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.64.0-h6d7220d_0.conda + sha256: 00cc685824f39f51be5233b54e19f45abd60de5d8847f1a56906f8936648b72f + md5: 3408c02539cee5f1141f9f11450b6a51 + depends: + - __osx >=11.0 + - c-ares >=1.34.2,<2.0a0 + - libcxx >=17 + - libev >=4.33,<4.34.0a0 + - libev >=4.33,<5.0a0 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.3.2,<4.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 566719 + timestamp: 1729572385640 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda + sha256: 26d77a3bb4dceeedc2a41bd688564fe71bf2d149fdcf117049970bc02ff1add6 + md5: 30fd6e37fe21f86f4bd26d6ee73eeec7 + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: LGPL-2.1-only + license_family: GPL + size: 33408 + timestamp: 1697359010159 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda + sha256: fd18c2b75d7411096428d36a70b36b1a17e31f7b8956b6905d145792d49e97f8 + md5: c14f32510f694e3185704d89967ec422 + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: LGPL-2.1-only + license_family: GPL + size: 34501 + timestamp: 1697358973269 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.28-pthreads_h94d23a6_1.conda + sha256: 99ba271d8a80a1af2723f2e124ffd91d850074c0389c067e6d96d72a2dbfeabe + md5: 62857b389e42b36b686331bec0922050 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libgfortran + - libgfortran5 >=14.2.0 + constrains: + - openblas >=0.3.28,<0.3.29.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 5578513 + timestamp: 1730772671118 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.28-pthreads_h9d3fd7e_1.conda + sha256: 30623a40764e935aa77e0d4db54c1a1589189a9bf3a03fdb445505c1e319b5a6 + md5: e8dde93dd199da3c1f2c1fcfd0042cd4 + depends: + - libgcc >=14 + - libgfortran + - libgfortran5 >=14.2.0 + constrains: + - openblas >=0.3.28,<0.3.29.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 4793435 + timestamp: 1730773029647 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.28-openmp_hf332438_1.conda + sha256: 62bb669c37a845129096f73d446cdb6bb170e4927f2fea2b661329680dbbc373 + md5: 40803a48d947c8639da6704e9a44d3ce + depends: + - __osx >=11.0 + - libgfortran 5.* + - libgfortran5 >=13.2.0 + - llvm-openmp >=18.1.8 + constrains: + - openblas >=0.3.28,<0.3.29.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 4165774 + timestamp: 1730772154295 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-h081d1f1_8_cpu.conda + build_number: 8 + sha256: 2c6d900d4e9dd3c4000886d76d3f8a099e904667ebc6935b49428e6e9b766481 + md5: a9fa0ef309406c84b46db3a28efd761e + depends: + - __glibc >=2.17,<3.0.a0 + - libarrow 18.1.0 h9d9f30d_8_cpu + - libgcc >=13 + - libstdcxx >=13 + - libthrift >=0.21.0,<0.21.1.0a0 + - openssl >=3.4.0,<4.0a0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 1207011 + timestamp: 1736610684584 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-hfc78867_8_cpu.conda + build_number: 8 + sha256: 2ed6b9eac4504051ddc094ea3f3a2b3198d4d25a443a96fa2971d8075d790c31 + md5: 9a907190c9e2c6bf1a29569700218f0b + depends: + - libarrow 18.1.0 h47f80e1_8_cpu + - libgcc >=13 + - libstdcxx >=13 + - libthrift >=0.21.0,<0.21.1.0a0 + - openssl >=3.4.0,<4.0a0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 1117465 + timestamp: 1736611918180 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-h636d7b7_8_cpu.conda + build_number: 8 + sha256: 4991519ef4264abc7160e9faaf8ff01d4731bf1497076bef1895d6c366f796eb + md5: b8bd275a49877fdec62ff787818a869d + depends: + - __osx >=11.0 + - libarrow 18.1.0 hf3eb8e5_8_cpu + - libcxx >=18 + - libthrift >=0.21.0,<0.21.1.0a0 + - openssl >=3.4.0,<4.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + size: 873593 + timestamp: 1736609701839 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.45-h943b412_0.conda + sha256: b8f5b5ba9a14dedf7c97c01300de492b1b52b68eacbc3249a13fdbfa82349a2f + md5: 85cbdaacad93808395ac295b5667d25b + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux + license: zlib-acknowledgement + size: 289426 + timestamp: 1736339058310 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.45-hec79eb8_0.conda + sha256: a06daa523a0d5775acb96e6e3f083adc2ab1383eb8f664513dbc663f439c9cca + md5: 9a8716c16b40acc7148263de1d0a403b + depends: + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + arch: aarch64 + platform: linux + license: zlib-acknowledgement + size: 299051 + timestamp: 1736344007986 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.45-h3783ad8_0.conda + sha256: ddcc81c049b32fb5eb3ac1f9a6d3a589c08325c8ec6f89eb912208b19330d68c + md5: d554c806d065b1763cb9e1cb1d25741d + depends: + - __osx >=11.0 + - libzlib >=1.3.1,<2.0a0 + arch: arm64 + platform: osx + license: zlib-acknowledgement + size: 263151 + timestamp: 1736339184358 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda + sha256: 51125ebb8b7152e4a4e69fd2398489c4ec8473195c27cde3cbdf1cb6d18c5493 + md5: d8703f1ffe5a06356f06467f1d0b9464 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 2960815 + timestamp: 1735577210663 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.3-h44a3b7b_1.conda + sha256: ecb69f2b1668e784b41ba667493be846662d5ef702bef64fb2e013bb1364cdc4 + md5: 68f807f7cc13951652bbe048253fd405 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 2788074 + timestamp: 1735576315676 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.3-h3bd63a1_1.conda + sha256: f58a16b13ad53346903c833e266f83c3d770a43a432659b98710aed85ca885e7 + md5: bdbfea4cf45ae36652c6bbcc2e7ebe91 + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=18 + - libzlib >=1.3.1,<2.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 2271580 + timestamp: 1735576361997 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_2.conda + sha256: 4420f8362c71251892ba1eeb957c5e445e4e1596c0c651c28d0d8b415fe120c7 + md5: b2fede24428726dd867611664fb372e8 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libstdcxx >=13 + constrains: + - re2 2024.07.02.* + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 209793 + timestamp: 1735541054068 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_2.conda + sha256: 862c20de0120f802e618dcb25913d00c5b82f91f4be60b2d46a774e851adc2f6 + md5: 9a7dbbaab49f76a6f36e5c9d98e323a7 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libstdcxx >=13 + constrains: + - re2 2024.07.02.* + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 204305 + timestamp: 1735540986919 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h07bc746_2.conda + sha256: 112a73ad483353751d4c5d63648c69a4d6fcebf5e1b698a860a3f5124fc3db96 + md5: 6b1e3624d3488016ca4f1ca0c412efaa + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=18 + constrains: + - re2 2024.07.02.* + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 167155 + timestamp: 1735541067807 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda + sha256: 0105bd108f19ea8e6a78d2d994a6d4a8db16d19a41212070d2d1d48a63c34161 + md5: a587892d3c13b6621a6091be690dbca2 + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: ISC + size: 205978 + timestamp: 1716828628198 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.20-h68df207_0.conda + sha256: 448df5ea3c5cf1af785aad46858d7a5be0522f4234a4dc9bb764f4d11ff3b981 + md5: 2e4a8f23bebdcb85ca8e5a0fbe75666a + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: ISC + size: 177394 + timestamp: 1716828514515 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda + sha256: fade8223e1e1004367d7101dd17261003b60aa576df6d7802191f8972f7470b1 + md5: a7ce36e284c5faaf93c220dfc39e3abd + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: ISC + size: 164972 + timestamp: 1716828607917 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.47.2-hee588c1_0.conda + sha256: 48af21ebc2cbf358976f1e0f4a0ab9e91dfc83d0ef337cf3837c6f5bc22fb352 + md5: b58da17db24b6e08bcbf8fed2fb8c915 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux + license: Unlicense + size: 873551 + timestamp: 1733761824646 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.47.2-h5eb1b54_0.conda + sha256: 885a27fa84a5a73ed9779168c02b6c386e2fc7a53f0566b32a09ceca146b42b4 + md5: d4bf59f8783a4a66c0aec568f6de3ff4 + depends: + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + arch: aarch64 + platform: linux + license: Unlicense + size: 1042182 + timestamp: 1733761913736 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.47.2-h3f77e49_0.conda + sha256: f192f3c8973de9ec4c214990715f13b781965247a5cedf9162e7f9e699cfc3c4 + md5: 122d6f29470f1a991e85608e77e56a8a + depends: + - __osx >=11.0 + - libzlib >=1.3.1,<2.0a0 + arch: arm64 + platform: osx + license: Unlicense + size: 850553 + timestamp: 1733762057506 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hf672d98_0.conda + sha256: 0407ac9fda2bb67e11e357066eff144c845801d00b5f664efbc48813af1e7bb9 + md5: be2de152d8073ef1c01b7728475f2fe7 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 304278 + timestamp: 1732349402869 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libssh2-1.11.1-ha41c0db_0.conda + sha256: 40f2af5357457546bd11cd64a3b9043d83865180f65ce602515c35f353be35c7 + md5: aeffe03c0e598f015aab08dbb04f6ee4 + depends: + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 311577 + timestamp: 1732349396421 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.1-h9cc3647_0.conda + sha256: f7047c6ed44bcaeb04432e8c74da87591940d091b0a3940c0d884b7faa8062e9 + md5: ddc7194676c285513706e5fc64f214d7 + depends: + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 279028 + timestamp: 1732349599461 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-hc0a3c3a_1.conda + sha256: 4661af0eb9bdcbb5fb33e5d0023b001ad4be828fccdcc56500059d56f9869462 + md5: 234a5554c53625688d51062645337328 + depends: + - libgcc 14.2.0 h77fa898_1 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 3893695 + timestamp: 1729027746910 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_1.conda + sha256: 519556d2c93f1b487091ce046d62e762286177f4a670ec10e16005177d0bcab3 + md5: 37f489acd39e22b623d2d1e5ac6d195c + depends: + - libgcc 14.2.0 he277a41_1 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 3816794 + timestamp: 1729089463404 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_1.conda + sha256: 25bb30b827d4f6d6f0522cc0579e431695503822f144043b93c50237017fffd8 + md5: 8371ac6457591af2cf6159439c1fd051 + depends: + - libstdcxx 14.2.0 hc0a3c3a_1 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 54105 + timestamp: 1729027780628 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_1.conda + sha256: 9f97461bd55a2745a7a0941f3502a047f15bfe7bb2952dc7fb204b3202f866fd + md5: 0e75771b8a03afae5a2c6ce71bc733f5 + depends: + - libstdcxx 14.2.0 h3f4de04_1 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 54133 + timestamp: 1729089498541 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libthrift-0.21.0-h0e7cc3e_0.conda + sha256: ebb395232973c18745b86c9a399a4725b2c39293c9a91b8e59251be013db42f0 + md5: dcb95c0a98ba9ff737f7ae482aef7833 + depends: + - __glibc >=2.17,<3.0.a0 + - libevent >=2.1.12,<2.1.13.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.3.2,<4.0a0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 425773 + timestamp: 1727205853307 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libthrift-0.21.0-h154c74f_0.conda + sha256: f04ab1417aca1687edff9c30d8423ace285eb8c053dc16d595c6e47cfeefb274 + md5: c28792bf37f4ecdce8e3cb9e40750650 + depends: + - libevent >=2.1.12,<2.1.13.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.3.2,<4.0a0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 417329 + timestamp: 1727205944238 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libthrift-0.21.0-h64651cc_0.conda + sha256: 7a6c7d5f58cbbc2ccd6493b4b821639fdb0701b9b04c737a949e8cb6adf1c9ad + md5: 7ce2bd2f650f8c31ad7ba4c7bfea61b7 + depends: + - __osx >=11.0 + - libcxx >=17 + - libevent >=2.1.12,<2.1.13.0a0 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.3.2,<4.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + size: 324342 + timestamp: 1727206096912 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hd9ff511_3.conda + sha256: b224e16b88d76ea95e4af56e2bc638c603bd26a770b98d117d04541d3aafa002 + md5: 0ea6510969e1296cc19966fad481f6de + depends: + - __glibc >=2.17,<3.0.a0 + - lerc >=4.0.0,<5.0a0 + - libdeflate >=1.23,<1.24.0a0 + - libgcc >=13 + - libjpeg-turbo >=3.0.0,<4.0a0 + - liblzma >=5.6.3,<6.0a0 + - libstdcxx >=13 + - libwebp-base >=1.4.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - zstd >=1.5.6,<1.6.0a0 + arch: x86_64 + platform: linux + license: HPND + size: 428173 + timestamp: 1734398813264 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.0-h88f7998_3.conda + sha256: 5888bd66ba7606ae8596856c7dac800940ecad0aed77d6aa37db69d434c81cf0 + md5: 36a0ea4a173338c8725dc0807e99cf22 + depends: + - lerc >=4.0.0,<5.0a0 + - libdeflate >=1.23,<1.24.0a0 + - libgcc >=13 + - libjpeg-turbo >=3.0.0,<4.0a0 + - liblzma >=5.6.3,<6.0a0 + - libstdcxx >=13 + - libwebp-base >=1.4.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - zstd >=1.5.6,<1.6.0a0 + arch: aarch64 + platform: linux + license: HPND + size: 464699 + timestamp: 1734398752249 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-h551f018_3.conda + sha256: 91417846157e04992801438a496b151df89604b2e7c6775d6f701fcd0cbed5ae + md5: a5d084a957563e614ec0c0196d890654 + depends: + - __osx >=11.0 + - lerc >=4.0.0,<5.0a0 + - libcxx >=18 + - libdeflate >=1.23,<1.24.0a0 + - libjpeg-turbo >=3.0.0,<4.0a0 + - liblzma >=5.6.3,<6.0a0 + - libwebp-base >=1.4.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - zstd >=1.5.6,<1.6.0a0 + arch: arm64 + platform: osx + license: HPND + size: 370600 + timestamp: 1734398863052 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.9.0-hb9d3cd8_1.conda + sha256: 9794e6388e780c3310d46f773bbc924d4053375c3fcdb07a704b57f4616db928 + md5: 1e936bd23d737aac62a18e9a1e7f8b18 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 81500 + timestamp: 1732868419835 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.9.0-h86ecc28_1.conda + sha256: 37a1833c55f9945724cd4b3eb6a1469032cc754a1dd725f191c34154ad2ba7e4 + md5: 699f155da290be3a1a64c932c6728991 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 81526 + timestamp: 1732868466862 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.9.0-h5505292_1.conda + sha256: ea88f06e97ef8fa2490f7594f8885bb542577226edf8abba3144302d951a53c2 + md5: f777470d31c78cd0abe1903a2fda436f + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 83000 + timestamp: 1732868631531 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda + sha256: 787eb542f055a2b3de553614b25f09eefb0a0931b0c87dbcce6efdfd92f04f18 + md5: 40b61aab5c7ba9ff276c41cfffe6b80b + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 33601 + timestamp: 1680112270483 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda + sha256: 616277b0c5f7616c2cdf36f6c316ea3f9aa5bb35f2d4476a349ab58b9b91675f + md5: 000e30b09db0b7c775b21695dff30969 + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 35720 + timestamp: 1680113474501 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.49.2-hb9d3cd8_0.conda + sha256: a35cd81cd1a9add11024097da83cc06b0aae83186fe4124b77710876f37d8f31 + md5: 070e3c9ddab77e38799d5c30b109c633 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 884647 + timestamp: 1729322566955 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuv-1.49.2-h86ecc28_0.conda + sha256: adf4eca89339ac7780f2394e7e6699be81259eb91f79f9d9fdf2c1bc6b26f210 + md5: 1899e1ec2be63386c41c4db31d3056af + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 627484 + timestamp: 1729322575379 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libuv-1.49.2-h7ab814d_0.conda + sha256: 0e5176af1e788ad5006cf261c4ea5a288a935fda48993b0240ddd2e562dc3d02 + md5: 4bc348e3a1a74d20a3f9beb866d75e0a + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 410500 + timestamp: 1729322654121 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.5.0-h851e524_0.conda + sha256: c45283fd3e90df5f0bd3dbcd31f59cdd2b001d424cf30a07223655413b158eaf + md5: 63f790534398730f59e1b899c3644d4a + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + constrains: + - libwebp 1.5.0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 429973 + timestamp: 1734777489810 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libwebp-base-1.5.0-h0886dbf_0.conda + sha256: b3d881a0ae08bb07fff7fa8ead506c8d2e0388733182fe4f216f3ec5d61ffcf0 + md5: 95ef4a689b8cc1b7e18b53784d88f96b + depends: + - libgcc >=13 + constrains: + - libwebp 1.5.0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 362623 + timestamp: 1734779054659 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.5.0-h2471fea_0.conda + sha256: f8bdb876b4bc8cb5df47c28af29188de8911c3fea4b799a33743500149de3f4a + md5: 569466afeb84f90d5bb88c11cc23d746 + depends: + - __osx >=11.0 + constrains: + - libwebp 1.5.0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 290013 + timestamp: 1734777593617 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda + sha256: 666c0c431b23c6cec6e492840b176dde533d48b7e6fb8883f5071223433776aa + md5: 92ed62436b625154323d40d5f2f11dd7 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - pthread-stubs + - xorg-libxau >=1.0.11,<2.0a0 + - xorg-libxdmcp + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 395888 + timestamp: 1727278577118 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcb-1.17.0-h262b8f6_0.conda + sha256: 461cab3d5650ac6db73a367de5c8eca50363966e862dcf60181d693236b1ae7b + md5: cd14ee5cca2464a425b1dbfc24d90db2 + depends: + - libgcc >=13 + - pthread-stubs + - xorg-libxau >=1.0.11,<2.0a0 + - xorg-libxdmcp + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 397493 + timestamp: 1727280745441 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxcb-1.17.0-hdb1d25a_0.conda + sha256: bd3816218924b1e43b275863e21a3e13a5db4a6da74cca8e60bc3c213eb62f71 + md5: af523aae2eca6dfa1c8eec693f5b9a79 + depends: + - __osx >=11.0 + - pthread-stubs + - xorg-libxau >=1.0.11,<2.0a0 + - xorg-libxdmcp + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 323658 + timestamp: 1727278733917 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda + sha256: 6ae68e0b86423ef188196fff6207ed0c8195dd84273cb5623b85aa08033a410c + md5: 5aa797f8787fe7a17d1b0821485b5adc + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: LGPL-2.1-or-later + size: 100393 + timestamp: 1702724383534 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda + sha256: 6b46c397644091b8a26a3048636d10b989b1bf266d4be5e9474bf763f828f41f + md5: b4df5d7d4b63579d081fd3a4cf99740e + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: LGPL-2.1-or-later + size: 114269 + timestamp: 1702724369203 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.5-h0d44e9d_1.conda + sha256: 306e18aa647d8208ad2cd0e62d84933222b2fbe93d2d53cd5283d2256b1d54de + md5: f5b05674697ae7d2c5932766695945e1 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libiconv >=1.17,<2.0a0 + - liblzma >=5.6.3,<6.0a0 + - libzlib >=1.3.1,<2.0a0 + constrains: + - icu <0.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 689993 + timestamp: 1733443678322 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.5-h2e0c361_1.conda + sha256: dc0e86d35a836af6e99d18f50c6551fc64c53ed3a3da5a9fea90e78763cf14b4 + md5: 63410f85031930cde371dfe0ee89109a + depends: + - icu >=75.1,<76.0a0 + - libgcc >=13 + - libiconv >=1.17,<2.0a0 + - liblzma >=5.6.3,<6.0a0 + - libzlib >=1.3.1,<2.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 732155 + timestamp: 1733443825814 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.5-h178c5d8_1.conda + sha256: d7af3f25a4cece170502acd38f2dafbea4521f373f46dcb28a37fbe6ac2da544 + md5: 3dc3cff0eca1640a6acbbfab2f78139e + depends: + - __osx >=11.0 + - icu >=75.1,<76.0a0 + - libiconv >=1.17,<2.0a0 + - liblzma >=5.6.3,<6.0a0 + - libzlib >=1.3.1,<2.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 582898 + timestamp: 1733443841584 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda + sha256: d4bfe88d7cb447768e31650f06257995601f89076080e76df55e3112d4e47dc4 + md5: edb0dca6bc32e4f4789199455a1dbeb8 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + constrains: + - zlib 1.3.1 *_2 + arch: x86_64 + platform: linux + license: Zlib + license_family: Other + size: 60963 + timestamp: 1727963148474 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda + sha256: 5a2c1eeef69342e88a98d1d95bff1603727ab1ff4ee0e421522acd8813439b84 + md5: 08aad7cbe9f5a6b460d0976076b6ae64 + depends: + - libgcc >=13 + constrains: + - zlib 1.3.1 *_2 + arch: aarch64 + platform: linux + license: Zlib + license_family: Other + size: 66657 + timestamp: 1727963199518 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda + sha256: ce34669eadaba351cd54910743e6a2261b67009624dbc7daeeafdef93616711b + md5: 369964e85dc26bfe78f41399b366c435 + depends: + - __osx >=11.0 + constrains: + - zlib 1.3.1 *_2 + arch: arm64 + platform: osx + license: Zlib + license_family: Other + size: 46438 + timestamp: 1727963202283 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda + sha256: b92a669f2059874ebdcb69041b6c243d68ffc3fb356ac1339cec44aeb27245d7 + md5: c4d54bfd3817313ce758aa76283b118d + depends: + - __osx >=11.0 + constrains: + - openmp 19.1.7|19.1.7.* + arch: arm64 + platform: osx + license: Apache-2.0 WITH LLVM-exception + size: 280830 + timestamp: 1736986295869 +- conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.10.0-h5888daf_1.conda + sha256: 47326f811392a5fd3055f0f773036c392d26fdb32e4d8e7a8197eed951489346 + md5: 9de5350a85c4a20c685259b889aa6393 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + size: 167055 + timestamp: 1733741040117 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.10.0-h5ad3122_1.conda + sha256: 67e55058d275beea76c1882399640c37b5be8be4eb39354c94b610928e9a0573 + md5: 6654e411da94011e8fbe004eacb8fe11 + depends: + - libgcc >=13 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: BSD-2-Clause + license_family: BSD + size: 184953 + timestamp: 1733740984533 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.10.0-h286801f_1.conda + sha256: 94d3e2a485dab8bdfdd4837880bde3dd0d701e2b97d6134b8806b7c8e69c8652 + md5: 01511afc6cc1909c5303cf31be17b44f + depends: + - __osx >=11.0 + - libcxx >=18 + arch: arm64 + platform: osx + license: BSD-2-Clause + license_family: BSD + size: 148824 + timestamp: 1733741047892 +- conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_1.conda + sha256: 0fbacdfb31e55964152b24d5567e9a9996e1e7902fb08eb7d91b5fd6ce60803a + md5: fee3164ac23dfca50cfcc8b85ddefb81 + depends: + - mdurl >=0.1,<1 + - python >=3.9 + license: MIT + license_family: MIT + size: 64430 + timestamp: 1733250550053 +- conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_1.conda + sha256: 4a6bf68d2a2b669fecc9a4a009abd1cf8e72c2289522ff00d81b5a6e51ae78f5 + md5: eb227c3e0bf58f5bd69c0532b157975b + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - jinja2 >=3.0.0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 24604 + timestamp: 1733219911494 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.2-py312h74ce7d3_1.conda + sha256: 1d500158262f30b9c23e37d1c861fe76e127a3926d69b3b38c25d20d3faa6f9f + md5: bc8607ab678073a0441808a31465f4fb + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - jinja2 >=3.0.0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 25079 + timestamp: 1733220639175 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312h998013c_1.conda + sha256: 4aa997b244014d3707eeef54ab0ee497d12c0d0d184018960cce096169758283 + md5: 46e547061080fddf9cf95a0327e8aba6 + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - jinja2 >=3.0.0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 24048 + timestamp: 1733219945697 +- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011605-release.conda + noarch: python + sha256: 66c70dda70094dd44776322c4274e0aedea1326e79407b710423d196fbf5c687 + md5: 63f0b9dbd781076f2346a4c90818fa77 + depends: + - max-core ==25.1.0.dev2025011605 release + - max-python >=25.1.0.dev2025011605,<26.0a0 + - mojo-jupyter ==25.1.0.dev2025011605 release + - mblack ==25.1.0.dev2025011605 release + license: LicenseRef-Modular-Proprietary + size: 9918 + timestamp: 1737005226114 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025011605-release.conda + sha256: 833bf62b78d41a258c0f1c2fb33efe2ecd31d52c9f25e0927f3a3c06f3263143 + md5: 67b61208a7f51d98440b829a762aa983 + depends: + - mblack ==25.1.0.dev2025011605 release + license: LicenseRef-Modular-Proprietary + size: 244845391 + timestamp: 1737004888429 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025011605-release.conda + sha256: cca47165ed2791ce97b8ed478c375ca5e19c9b1dbad2008a88fcf55976669e98 + md5: ec67c1c4477173523c480d0439f618ee + depends: + - mblack ==25.1.0.dev2025011605 release + license: LicenseRef-Modular-Proprietary + size: 247313436 + timestamp: 1737005226112 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025011605-release.conda + sha256: 0c90b26d3a97472ecf01e8f96210d1b6becf10a628eb138a8fe9cba25c275f94 + md5: 67f133797e55bdfeae523889d117d24e + depends: + - mblack ==25.1.0.dev2025011605 release + license: LicenseRef-Modular-Proprietary + size: 206707824 + timestamp: 1737004945969 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025011605-3.12release.conda + sha256: 8ab036ac69684b74999f0274eb9741c0d0c4e036a0a777dfa2276539703bcf87 + md5: 6fde421d7d48ab50ec34964bfc003ab0 + depends: + - max-core ==25.1.0.dev2025011605 release + - python 3.12.* + - fastapi + - httpx + - huggingface_hub + - numpy >=1.18,<2.0 + - opentelemetry-api + - opentelemetry-exporter-otlp-proto-http >=1.27.0 + - opentelemetry-exporter-prometheus >=0.48b0 + - opentelemetry-sdk >=1.27.0 + - pillow + - pydantic-settings >=2.4.0,<3 + - pydantic >=2.4.0,<3 + - pyinstrument + - python-json-logger + - sse-starlette >=2.1.3,<3 + - transformers + - typing_extensions + - uvicorn + - python_abi 3.12.* *_cp312 + license: LicenseRef-Modular-Proprietary + size: 124617353 + timestamp: 1737004888439 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025011605-3.12release.conda + sha256: 3b711e5ef7c518e1e6b69ff69c5c7505e9f5779ee99359c7b2808a6324bee5ca + md5: f264d20311c5422c256d177081752fc4 + depends: + - max-core ==25.1.0.dev2025011605 release + - python 3.12.* + - fastapi + - httpx + - huggingface_hub + - numpy >=1.18,<2.0 + - opentelemetry-api + - opentelemetry-exporter-otlp-proto-http >=1.27.0 + - opentelemetry-exporter-prometheus >=0.48b0 + - opentelemetry-sdk >=1.27.0 + - pillow + - pydantic-settings >=2.4.0,<3 + - pydantic >=2.4.0,<3 + - pyinstrument + - python-json-logger + - sse-starlette >=2.1.3,<3 + - transformers + - typing_extensions + - uvicorn + - python_abi 3.12.* *_cp312 + license: LicenseRef-Modular-Proprietary + size: 127393468 + timestamp: 1737005226123 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025011605-3.12release.conda + sha256: f3c1e91c675ebf5835799c044f534e87840cae019df45e06ab50b09c4b819138 + md5: b42171a30a90eca86de374dc6562d2ab + depends: + - max-core ==25.1.0.dev2025011605 release + - python 3.12.* + - fastapi + - httpx + - huggingface_hub + - numpy >=1.18,<2.0 + - opentelemetry-api + - opentelemetry-exporter-otlp-proto-http >=1.27.0 + - opentelemetry-exporter-prometheus >=0.48b0 + - opentelemetry-sdk >=1.27.0 + - pillow + - pydantic-settings >=2.4.0,<3 + - pydantic >=2.4.0,<3 + - pyinstrument + - python-json-logger + - sse-starlette >=2.1.3,<3 + - transformers + - typing_extensions + - uvicorn + - python_abi 3.12.* *_cp312 + license: LicenseRef-Modular-Proprietary + size: 110522116 + timestamp: 1737004945972 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011605-release.conda + noarch: python + sha256: cfd9e14c0c14fa02b6b61141ff4f9007a11eb3ed1b11cf48a717f215e27c7407 + md5: d60436499404c582b03af554c788436f + depends: + - python >=3.9,<3.13 + - click >=8.0.0 + - mypy_extensions >=0.4.3 + - packaging >=22.0 + - pathspec >=0.9.0 + - platformdirs >=2 + - python + license: MIT + size: 130793 + timestamp: 1737005226119 +- conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda + sha256: 78c1bbe1723449c52b7a9df1af2ee5f005209f67e40b6e1d3c7619127c43b1c7 + md5: 592132998493b3ff25fd7479396e8351 + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 14465 + timestamp: 1733255681319 +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011605-release.conda + noarch: python + sha256: 68dcf6fcc24f226462c4a7004a2214a1696f2ad0cb8d7ac229ee9ec4ea2216ea + md5: 864d0b85ff8fd743209bea757229d010 + depends: + - max-core ==25.1.0.dev2025011605 release + - python >=3.9,<3.13 + - jupyter_client >=8.6.2,<8.7 + - python + license: LicenseRef-Modular-Proprietary + size: 22934 + timestamp: 1737005226120 +- conda: 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 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 61507 + timestamp: 1733913288935 +- conda: 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 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 63077 + timestamp: 1733913233032 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/multidict-6.1.0-py312hdb8e49c_1.conda + sha256: 482fd09fb798090dc8cce2285fa69f43b1459099122eac2fb112d9b922b9f916 + md5: 0048335516fed938e4dd2c457b4c5b9b + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + size: 55968 + timestamp: 1729065664275 +- conda: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.15-py312h98912ed_1.conda + sha256: bb612a921fafda6375a2204ffebd8811db8dd3b8f25ac9886cc9bcbff7e3664e + md5: 5a64b9f44790d9a187a85366dd0ffa8d + depends: + - dill >=0.3.6 + - libgcc-ng >=12 + - python >=3.12.0rc3,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 335666 + timestamp: 1695459025249 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.15-py312hdd3e373_1.conda + sha256: c53362cdf346f314e111faddc53061e3fd2ece0ba68ca303f5dd109976df158f + md5: 173a1692d2b3ddc265dc6afd21a869b3 + depends: + - dill >=0.3.6 + - libgcc-ng >=12 + - python >=3.12.0rc3,<3.13.0a0 + - python >=3.12.0rc3,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 336110 + timestamp: 1695459137796 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/multiprocess-0.70.15-py312h02f2b3b_1.conda + sha256: 8041371e3ec3fbc2ca13c71b0180672896e6382e62892d9f6b11a4c5dd675951 + md5: 910ef2223c71902175418d9163152788 + depends: + - dill >=0.3.6 + - python >=3.12.0rc3,<3.13.0a0 + - python >=3.12.0rc3,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 335147 + timestamp: 1695459275360 +- conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda + sha256: 1895f47b7d68581a6facde5cb13ab8c2764c2e53a76bd746f8f98910dc4e08fe + md5: 29097e7ea634a45cc5386b95cac6568f + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 10854 + timestamp: 1733230986902 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_2.conda + sha256: 17fe6afd8a00446010220d52256bd222b1e4fcb93bd587e7784b03219f3dc358 + md5: 04b34b9a40cdc48cfdab261ab176ff74 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: X11 AND BSD-3-Clause + size: 894452 + timestamp: 1736683239706 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-ha32ae93_2.conda + sha256: 9fd726174dde993c560dd6fa1a383e61d546d380e98e0b0348d22512e5d86e24 + md5: 779046fb585c71373e8a051be06c6011 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: X11 AND BSD-3-Clause + size: 928402 + timestamp: 1736683192463 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_2.conda + sha256: b45c73348ec9841d5c893acc2e97adff24127548fe8c786109d03c41ed564e91 + md5: f6f7c5b7d0983be186c46c4f6f8f9af8 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: X11 AND BSD-3-Clause + size: 796754 + timestamp: 1736683572099 +- conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda + sha256: fe3459c75cf84dcef6ef14efcc4adb0ade66038ddd27cadb894f34f4797687d8 + md5: d8285bea2a350f63fab23bf460221f3f + depends: + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - libgcc-ng >=12 + - liblapack >=3.9.0,<4.0a0 + - libstdcxx-ng >=12 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - numpy-base <0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 7484186 + timestamp: 1707225809722 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda + sha256: 23767677a7790bee5457d5e75ebd508b9a31c5354216f4310dd1acfca3f7a6f9 + md5: 9cebf5a06cb87d4569cd68df887af476 + depends: + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - libgcc-ng >=12 + - liblapack >=3.9.0,<4.0a0 + - libstdcxx-ng >=12 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - numpy-base <0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 6614296 + timestamp: 1707225994762 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda + sha256: c8841d6d6f61fd70ca80682efbab6bdb8606dc77c68d8acabfbd7c222054f518 + md5: d83fc83d589e2625a3451c9a7e21047c + depends: + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - libcxx >=16 + - liblapack >=3.9.0,<4.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - numpy-base <0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 6073136 + timestamp: 1707226249608 +- conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.3-h5fbd93e_0.conda + sha256: 5bee706ea5ba453ed7fd9da7da8380dd88b865c8d30b5aaec14d2b6dd32dbc39 + md5: 9e5816bc95d285c115a3ebc2f8563564 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libpng >=1.6.44,<1.7.0a0 + - libstdcxx >=13 + - libtiff >=4.7.0,<4.8.0a0 + - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + size: 342988 + timestamp: 1733816638720 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openjpeg-2.5.3-h3f56577_0.conda + sha256: 92d310033e20538e896f4e4b1ea4205eb6604eee7c5c651c4965a0d8d3ca0f1d + md5: 04231368e4af50d11184b50e14250993 + depends: + - libgcc >=13 + - libpng >=1.6.44,<1.7.0a0 + - libstdcxx >=13 + - libtiff >=4.7.0,<4.8.0a0 + - libzlib >=1.3.1,<2.0a0 + arch: aarch64 + platform: linux + license: BSD-2-Clause + license_family: BSD + size: 377796 + timestamp: 1733816683252 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/openjpeg-2.5.3-h8a3d83b_0.conda + sha256: 1d59bc72ca7faac06d349c1a280f5cfb8a57ee5896f1e24225a997189d7418c7 + md5: 4b71d78648dbcf68ce8bf22bb07ff838 + depends: + - __osx >=11.0 + - libcxx >=18 + - libpng >=1.6.44,<1.7.0a0 + - libtiff >=4.7.0,<4.8.0a0 + - libzlib >=1.3.1,<2.0a0 + arch: arm64 + platform: osx + license: BSD-2-Clause + license_family: BSD + size: 319362 + timestamp: 1733816781741 +- conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.0-h7b32b05_1.conda + sha256: f62f6bca4a33ca5109b6d571b052a394d836956d21b25b7ffd03376abf7a481f + md5: 4ce6875f75469b2757a65e10a5d05e31 + depends: + - __glibc >=2.17,<3.0.a0 + - ca-certificates + - libgcc >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 2937158 + timestamp: 1736086387286 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.0-hd08dc88_1.conda + sha256: 60d34454b861501d7355f25a7b39fdb5de8d56fca49b5bcbe8b8142b7d82dce4 + md5: e21c4767e783a58c373fdb99de6211bf + depends: + - ca-certificates + - libgcc >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 3469279 + timestamp: 1736088141230 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.0-h81ee809_1.conda + sha256: 97772762abc70b3a537683ca9fc3ff3d6099eb64e4aba3b9c99e6fce48422d21 + md5: 22f971393637480bda8c679f374d8861 + depends: + - __osx >=11.0 + - ca-certificates + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 2936415 + timestamp: 1736086108693 +- conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.29.0-pyhd8ed1ab_1.conda + sha256: 296280c8ace35c0a1cf72bed1077f248b3af903c3bf92332f1783a207cb5abdb + md5: 307b05402c1a382f2f09426492dee8f8 + depends: + - deprecated >=1.2.6 + - importlib-metadata >=6.0,<=8.5.0 + - python >=3.9 + license: Apache-2.0 + license_family: APACHE + size: 44166 + timestamp: 1734132973331 +- conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.29.0-pyhd8ed1ab_0.conda + sha256: ae9776efe52564e0d6711cfcee7c54439273e57a3999f7f796f66e862f58aae9 + md5: 0c02e74d26bce3fec93b227cf7ea6e6b + depends: + - backoff >=1.10.0,<3.0.0 + - opentelemetry-proto 1.29.0 + - python >=3.9 + license: Apache-2.0 + license_family: APACHE + size: 18922 + timestamp: 1734310457116 +- conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.29.0-pyhd8ed1ab_1.conda + sha256: 5d61db9d5b4f91b3932f5f2348920d5b7fdaa09e52c8ea054cf7bf3f21677c9c + md5: 223f4e56a29601c887f0dc467034af5b + depends: + - deprecated >=1.2.6 + - googleapis-common-protos >=1.52,<2.dev0 + - opentelemetry-api >=1.15,<2.dev0 + - opentelemetry-exporter-otlp-proto-common 1.29.0 + - opentelemetry-proto 1.29.0 + - opentelemetry-sdk 1.29.0 + - python >=3.9 + - requests >=2.7,<3.dev0 + license: Apache-2.0 + license_family: APACHE + size: 17147 + timestamp: 1734345675510 +- conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-prometheus-1.12.0rc1-pyhd8ed1ab_0.conda + sha256: b8239230dbbdb491401e41b53bd9f21d60551cedef1a8d5807fca1bf9bdd331c + md5: 1ddc95052b31147d1e10d818cf519cf5 + depends: + - opentelemetry-api >=1.10.0 + - opentelemetry-sdk >=1.10.0 + - prometheus_client >=0.5.0,<1.0.0 + - python >=3.6 + license: Apache-2.0 + license_family: APACHE + size: 14721 + timestamp: 1695214221489 +- conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.29.0-pyhd8ed1ab_0.conda + sha256: 200a7cb8acc8a0ddd6ef55c5460cec871b6a265929b240a0296c0ccb9c8d9758 + md5: e2a6d2ad10b813c7fdc1c64aac376128 + depends: + - protobuf <6.0,>=5.0 + - python >=3.9 + license: Apache-2.0 + license_family: APACHE + size: 37235 + timestamp: 1734291034372 +- conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.29.0-pyhd8ed1ab_0.conda + sha256: 7b36629d8b8be8a019fcfd1518d7b7f862dd25de96f8adcadb93e4fd12cf9bd6 + md5: 2a8893f06e6ebda4bfa78875bc923ea4 + depends: + - opentelemetry-api 1.29.0 + - opentelemetry-semantic-conventions 0.50b0 + - python >=3.9 + - typing-extensions >=3.7.4 + - typing_extensions >=3.7.4 + license: Apache-2.0 + license_family: APACHE + size: 77645 + timestamp: 1734297838999 +- conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.50b0-pyh3cfb1c2_0.conda + sha256: 6526e70368d5bf66ef0eaa51fb800d53782dde71a24bd38f40139919a6f784dc + md5: f7111fa4188d646c8108e232d024cb99 + depends: + - deprecated >=1.2.6 + - opentelemetry-api 1.29.0 + - python >=3.9 + license: Apache-2.0 + license_family: APACHE + size: 86084 + timestamp: 1734208980168 +- conda: https://conda.anaconda.org/conda-forge/linux-64/orc-2.0.3-h12ee42a_2.conda + sha256: dff5cc8023905782c86b3459055f26d4b97890e403b0698477c9fed15d8669cc + md5: 4f6f9f3f80354ad185e276c120eac3f0 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - lz4-c >=1.10.0,<1.11.0a0 + - snappy >=1.2.1,<1.3.0a0 + - tzdata + - zstd >=1.5.6,<1.6.0a0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 1188881 + timestamp: 1735630209320 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/orc-2.0.3-hdd485aa_2.conda + sha256: b6c67542352a86cdf143c3066d5cda855b74454a156eedcd8958b494c6a32a83 + md5: d19f01b42e5d6a2908b65df435aff42f + depends: + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - lz4-c >=1.10.0,<1.11.0a0 + - snappy >=1.2.1,<1.3.0a0 + - tzdata + - zstd >=1.5.6,<1.6.0a0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 1167714 + timestamp: 1735630248837 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/orc-2.0.3-h0ff2369_2.conda + sha256: cca330695f3bdb8c0e46350c29cd4af3345865544e36f1d7c9ba9190ad22f5f4 + md5: 24b1897c0d24afbb70704ba998793b78 + depends: + - __osx >=11.0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libzlib >=1.3.1,<2.0a0 + - lz4-c >=1.10.0,<1.11.0a0 + - snappy >=1.2.1,<1.3.0a0 + - tzdata + - zstd >=1.5.6,<1.6.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 438520 + timestamp: 1735630624140 +- conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + sha256: da157b19bcd398b9804c5c52fc000fcb8ab0525bdb9c70f95beaa0bb42f85af1 + md5: 3bfed7e6228ebf2f7b9eaa47f1b4e2aa + depends: + - python >=3.8 + license: Apache-2.0 + license_family: APACHE + size: 60164 + timestamp: 1733203368787 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.3-py312hf9745cd_1.conda + sha256: ad275a83bfebfa8a8fee9b0569aaf6f513ada6a246b2f5d5b85903d8ca61887e + md5: 8bce4f6caaf8c5448c7ac86d87e26b4b + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + - numpy >=1.19,<3 + - numpy >=1.22.4 + - python >=3.12,<3.13.0a0 + - python-dateutil >=2.8.1 + - python-tzdata >=2022a + - python_abi 3.12.* *_cp312 + - pytz >=2020.1,<2024.2 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 15436913 + timestamp: 1726879054912 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pandas-2.2.3-py312ha2895bd_2.conda + sha256: a34b10077de97eea72c81cb96e3ddc7d48320c0fc7d9b28ba8d9d2bead1d8297 + md5: 39a91ac336d350513de6aad56da5a920 + depends: + - libgcc >=13 + - libstdcxx >=13 + - numpy >=1.19,<3 + - numpy >=1.22.4 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python-dateutil >=2.8.1 + - python-tzdata >=2022a + - python_abi 3.12.* *_cp312 + - pytz >=2020.1,<2024.2 + constrains: + - fsspec >=2022.11.0 + - s3fs >=2022.11.0 + - fastparquet >=2022.12.0 + - pyreadstat >=1.2.0 + - qtpy >=2.3.0 + - scipy >=1.10.0 + - beautifulsoup4 >=4.11.2 + - gcsfs >=2022.11.0 + - numexpr >=2.8.4 + - sqlalchemy >=2.0.0 + - pyxlsb >=1.0.10 + - numba >=0.56.4 + - lxml >=4.9.2 + - matplotlib >=3.6.3 + - psycopg2 >=2.9.6 + - tzdata >=2022.7 + - bottleneck >=1.3.6 + - xarray >=2022.12.0 + - xlsxwriter >=3.0.5 + - zstandard >=0.19.0 + - blosc >=1.21.3 + - pytables >=3.8.0 + - openpyxl >=3.1.0 + - pyqt5 >=5.15.8 + - tabulate >=0.9.0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 15162992 + timestamp: 1736811533875 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.3-py312hcd31e36_1.conda + sha256: ff0cb54b5d058c7987b4a0984066e893642d1865a7bb695294b6172e2fcdc457 + md5: c68bfa69e6086c381c74e16fd72613a8 + depends: + - __osx >=11.0 + - libcxx >=17 + - numpy >=1.19,<3 + - numpy >=1.22.4 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python-dateutil >=2.8.1 + - python-tzdata >=2022a + - python_abi 3.12.* *_cp312 + - pytz >=2020.1,<2024.2 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 14470437 + timestamp: 1726878887799 +- conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + sha256: 9f64009cdf5b8e529995f18e03665b03f5d07c0b17445b8badef45bde76249ee + md5: 617f15191456cc6a13db418a275435e5 + depends: + - python >=3.9 + license: MPL-2.0 + license_family: MOZILLA + size: 41075 + timestamp: 1733233471940 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-11.1.0-py312h80c1187_0.conda + sha256: 5c347962202b55ae4d8a463e0555c5c6ca33396266a08284bf1384399894e541 + md5: d3894405f05b2c0f351d5de3ae26fa9c + depends: + - __glibc >=2.17,<3.0.a0 + - freetype >=2.12.1,<3.0a0 + - lcms2 >=2.16,<3.0a0 + - libgcc >=13 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libtiff >=4.7.0,<4.8.0a0 + - libwebp-base >=1.5.0,<2.0a0 + - libxcb >=1.17.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - openjpeg >=2.5.3,<3.0a0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - tk >=8.6.13,<8.7.0a0 + arch: x86_64 + platform: linux + license: HPND + size: 42749785 + timestamp: 1735929845390 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pillow-11.1.0-py312h719f0cf_0.conda + sha256: 7559556ffc44bda777f85c2e5acd6b5756fa5822c0271b329b7b9a3c6bb20349 + md5: 77e0ec0a6fc847d317f204aa15b59f6b + depends: + - freetype >=2.12.1,<3.0a0 + - lcms2 >=2.16,<3.0a0 + - libgcc >=13 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libtiff >=4.7.0,<4.8.0a0 + - libwebp-base >=1.5.0,<2.0a0 + - libxcb >=1.17.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - openjpeg >=2.5.3,<3.0a0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - tk >=8.6.13,<8.7.0a0 + arch: aarch64 + platform: linux + license: HPND + size: 41362848 + timestamp: 1735932311857 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-11.1.0-py312h50aef2c_0.conda + sha256: b29b7c915053e06a7a5b4118760202c572c9c35d23bd6ce8e73270b6a50e50ee + md5: 94d6ba8cd468668a9fb04193b0f4b36e + depends: + - __osx >=11.0 + - freetype >=2.12.1,<3.0a0 + - lcms2 >=2.16,<3.0a0 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libtiff >=4.7.0,<4.8.0a0 + - libwebp-base >=1.5.0,<2.0a0 + - libxcb >=1.17.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - openjpeg >=2.5.3,<3.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - tk >=8.6.13,<8.7.0a0 + arch: arm64 + platform: osx + license: HPND + size: 42852329 + timestamp: 1735930118976 +- conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + sha256: bb50f6499e8bc1d1a26f17716c97984671121608dc0c3ecd34858112bce59a27 + md5: 577852c7e53901ddccc7e6a9959ddebe + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 20448 + timestamp: 1733232756001 +- conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda + sha256: bc8f00d5155deb7b47702cb8370f233935704100dbc23e30747c161d1b6cf3ab + md5: 3e01e386307acc60b2f89af0b2e161aa + depends: + - python >=3.9 + license: Apache-2.0 + license_family: Apache + size: 49002 + timestamp: 1733327434163 +- conda: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.1-py312h66e93f0_0.conda + sha256: 5771311fb5ded614ca349c92579a0b752af55a310f40b71fc533e20625965391 + md5: 55d5742a696d7da1c1262e99b6217ceb + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 52747 + timestamp: 1733391916349 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.2.1-py312hb2c0f52_0.conda + sha256: c7f62c11ed929ccf1f3d4a1e200e28be01e8d0e0786bf8f76c5893f2ea681e1b + md5: 50ab8953e7ff1333a4a47cda32e68123 + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 52484 + timestamp: 1733391993461 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.1-py312hea69d52_0.conda + sha256: f8c266c494aa1e4cfb8bf0b6fca060044b2f3d65afe4c5062ebeea382e77aa6d + md5: c84e3dd97fe25a17322c4a0f670c6750 + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + size: 48225 + timestamp: 1733392308901 +- conda: https://conda.anaconda.org/conda-forge/linux-64/protobuf-5.28.3-py312h2ec8cdc_0.conda + sha256: acb2e0ee948e3941f8ed191cb77f654e06538638aed8ccd71cbc78a15242ebbb + md5: 9d7e427d159c1b2d516cc047ff177c48 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - libprotobuf 5.28.3 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 464794 + timestamp: 1731366525051 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/protobuf-5.28.3-py312h6f74592_0.conda + sha256: 9c575d5035c7ecb114ab9e17906c0a54087d9598dd6a2104c02fe33f0a29dd46 + md5: 06513608c94fb1c1b17136ace77063a9 + depends: + - libgcc >=13 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - libprotobuf 5.28.3 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 473242 + timestamp: 1731366577844 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/protobuf-5.28.3-py312hd8f9ff3_0.conda + sha256: 9d572a97419bdace14d7c7cc8cc8c4bf2dcb22b56965dac87a27fbdb5061b926 + md5: 5afbe52a59f04dd1fe566d0d17590d7e + depends: + - __osx >=11.0 + - libcxx >=18 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - libprotobuf 5.28.3 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 448803 + timestamp: 1731367010746 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda + sha256: 9c88f8c64590e9567c6c80823f0328e58d3b1efb0e1c539c0315ceca764e0973 + md5: b3c17d95b5a10c6e64a21fa17573e70e + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 8252 + timestamp: 1726802366959 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pthread-stubs-0.4-h86ecc28_1002.conda + sha256: 977dfb0cb3935d748521dd80262fe7169ab82920afd38ed14b7fee2ea5ec01ba + md5: bb5a90c93e3bac3d5690acf76b4a6386 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 8342 + timestamp: 1726803319942 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pthread-stubs-0.4-hd74edd7_1002.conda + sha256: 8ed65e17fbb0ca944bfb8093b60086e3f9dd678c3448b5de212017394c247ee3 + md5: 415816daf82e0b23a736a069a75e9da7 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 8381 + timestamp: 1726802424786 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-18.1.0-py312h7900ff3_0.conda + sha256: 46a61c29375d3bf1933eae61c7861394c168898915d59fc99bf05e46de2ff5ad + md5: ac65b70df28687c6af4270923c020bdd + depends: + - libarrow-acero 18.1.0.* + - libarrow-dataset 18.1.0.* + - libarrow-substrait 18.1.0.* + - libparquet 18.1.0.* + - pyarrow-core 18.1.0 *_0_* + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 25213 + timestamp: 1732610785600 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-18.1.0-py312h8025657_0.conda + sha256: 49db959887cb89b44053a44a98d0f35644fc0b2003587492f02b56046de0b60a + md5: 9bb7d32e96a5dcb5ea7fd90a11a83656 + depends: + - libarrow-acero 18.1.0.* + - libarrow-dataset 18.1.0.* + - libarrow-substrait 18.1.0.* + - libparquet 18.1.0.* + - pyarrow-core 18.1.0 *_0_* + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 25374 + timestamp: 1732611006864 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-18.1.0-py312h1f38498_0.conda + sha256: 06c0e208d5bf15051874097366c8e8e5db176dffba38526f227a34e80cc8e9bc + md5: 3710616b880b31d0c8afd8ae7e12392a + depends: + - libarrow-acero 18.1.0.* + - libarrow-dataset 18.1.0.* + - libarrow-substrait 18.1.0.* + - libparquet 18.1.0.* + - pyarrow-core 18.1.0 *_0_* + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + size: 25375 + timestamp: 1732610892198 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-18.1.0-py312h01725c0_0_cpu.conda + sha256: 948a4161c56f846d374a3721a657e58ddbc992a29b3b3e7a6411975c30361d94 + md5: ee80934a6c280ff8635f8db5dec11e04 + depends: + - __glibc >=2.17,<3.0.a0 + - libarrow 18.1.0.* *cpu + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - numpy >=1.21,<3 + - apache-arrow-proc =*=cpu + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 4612916 + timestamp: 1732610377259 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-18.1.0-py312h66f7834_0_cpu.conda + sha256: e7eb062145be554c23dfefa0ebe8c5f6ae8c59635117a6921e66403d6addcda3 + md5: 3390c8b8f57e85506c92a37cf750bdd7 + depends: + - libarrow 18.1.0.* *cpu + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - numpy >=1.21,<3 + - apache-arrow-proc =*=cpu + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 4406662 + timestamp: 1732610939832 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-18.1.0-py312hc40f475_0_cpu.conda + sha256: 063eb168a29d4ce6d9ed865e9e1ad3b6e141712189955a79e06b24ddc0cbbc9c + md5: 9859e7c4b94bbf69772dbf0511101cec + depends: + - __osx >=11.0 + - libarrow 18.1.0.* *cpu + - libcxx >=18 + - libzlib >=1.3.1,<2.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - numpy >=1.21,<3 + - apache-arrow-proc =*=cpu + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + size: 3909116 + timestamp: 1732610863261 +- conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda + sha256: 79db7928d13fab2d892592223d7570f5061c192f27b9febd1a418427b719acc6 + md5: 12c566707c80111f9799308d9e265aef + depends: + - python >=3.9 + - python + license: BSD-3-Clause + license_family: BSD + size: 110100 + timestamp: 1733195786147 +- conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.5-pyh3cfb1c2_0.conda + sha256: 0f32c30ddc610cd1113335d8b4f311f20f4d72754b7c1a5d0d9493f597cf11d2 + md5: e8ea30925c8271c4128375810d7d3d7a + depends: + - annotated-types >=0.6.0 + - pydantic-core 2.27.2 + - python >=3.9 + - typing-extensions >=4.6.1 + - typing_extensions >=4.12.2 + license: MIT + license_family: MIT + size: 296805 + timestamp: 1736458364196 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.27.2-py312h12e396e_0.conda + sha256: 81602a4592ad2ac1a1cb57372fd25214e63b1c477d5818b0c21cde0f1f85c001 + md5: bae01b2563030c085f5158c518b84e86 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - typing-extensions >=4.6.0,!=4.7.0 + constrains: + - __glibc >=2.17 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 1641402 + timestamp: 1734571789895 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pydantic-core-2.27.2-py312h8cbf658_0.conda + sha256: 623e0f3846f15d035ce7ab7ae445fc8d9e547b6684ab55858b6f44510d24b097 + md5: 9677f6ab4bf27ba3c2aee70d08c7b27c + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - typing-extensions >=4.6.0,!=4.7.0 + constrains: + - __glibc >=2.17 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 1505076 + timestamp: 1734571966615 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.27.2-py312hcd83bfe_0.conda + sha256: cfa7201f890d5d08ce29ff70e65a96787d5793a1718776733666b44bbd4a1205 + md5: dcb307e02f17d38c6e1cbfbf8c602852 + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - typing-extensions >=4.6.0,!=4.7.0 + constrains: + - __osx >=11.0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 1593461 + timestamp: 1734571986644 +- conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.7.1-pyh3cfb1c2_0.conda + sha256: 082fb1ec29917d2c9ed6a862cb8eb9beb88c208ea62c9fef1aeb5f4f3e0e0b06 + md5: d71d76b62bed332b037d7adfc0f3989a + depends: + - pydantic >=2.7.0 + - python >=3.9 + - python-dotenv >=0.21.0 + license: MIT + license_family: MIT + size: 31822 + timestamp: 1735650532951 +- conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda + sha256: 28a3e3161390a9d23bc02b4419448f8d27679d9e2c250e29849e37749c8de86b + md5: 232fb4577b6687b2d503ef8e254270c9 + depends: + - python >=3.9 + license: BSD-2-Clause + license_family: BSD + size: 888600 + timestamp: 1736243563082 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyinstrument-5.0.0-py312h66e93f0_0.conda + sha256: 8a006507a4003fb01eeee2f9ba79f994478694766ea3b445273da5c11cf8e763 + md5: 798f42d9bfdf125dc80ffbec0e96e0b6 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 182021 + timestamp: 1728714164706 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyinstrument-5.0.0-py312hb2c0f52_0.conda + sha256: 7967b94b8f0ff75847302444e9c43ac11a391d74da24cb14fba1049fac9e5ba9 + md5: 5274663cb05dfbe316db50af6da4389f + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 183141 + timestamp: 1728714267954 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyinstrument-5.0.0-py312h0bf5046_0.conda + sha256: 6879d52fb0ec2258e2850476786a652c394220d53883c53691ed5390183ae925 + md5: f0e4a98d54477083ddc9d2f33507f848 + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 181512 + timestamp: 1728714205508 +- conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda + sha256: ba3b032fa52709ce0d9fd388f63d330a026754587a2f461117cac9ab73d8d0d8 + md5: 461219d1a5bd61342293efa2c0c90eac + depends: + - __unix + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 21085 + timestamp: 1733217331982 +- conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.8-h9e4cc4f_1_cpython.conda + build_number: 1 + sha256: 3f0e0518c992d8ccfe62b189125721309836fe48a010dc424240583e157f9ff0 + md5: 7fd2fd79436d9b473812f14e86746844 + depends: + - __glibc >=2.17,<3.0.a0 + - bzip2 >=1.0.8,<2.0a0 + - ld_impl_linux-64 >=2.36.1 + - libexpat >=2.6.4,<3.0a0 + - libffi >=3.4,<4.0a0 + - libgcc >=13 + - liblzma >=5.6.3,<6.0a0 + - libnsl >=2.0.1,<2.1.0a0 + - libsqlite >=3.47.0,<4.0a0 + - libuuid >=2.38.1,<3.0a0 + - libxcrypt >=4.4.36 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.4.0,<4.0a0 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + constrains: + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Python-2.0 + size: 31565686 + timestamp: 1733410597922 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.8-h1683364_1_cpython.conda + build_number: 1 + sha256: 85573582d5b0f79923fed0a8365d3d74d21eee9f0a5fa1b9345f191e006363ab + md5: 09ec612ea05370989eaa3d81abf0f369 + depends: + - bzip2 >=1.0.8,<2.0a0 + - ld_impl_linux-aarch64 >=2.36.1 + - libexpat >=2.6.4,<3.0a0 + - libffi >=3.4,<4.0a0 + - libgcc >=13 + - liblzma >=5.6.3,<6.0a0 + - libnsl >=2.0.1,<2.1.0a0 + - libsqlite >=3.47.0,<4.0a0 + - libuuid >=2.38.1,<3.0a0 + - libxcrypt >=4.4.36 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.4.0,<4.0a0 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + constrains: + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Python-2.0 + size: 13760816 + timestamp: 1733407890896 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.8-hc22306f_1_cpython.conda + build_number: 1 + sha256: 7586a711b1b08a9df8864e26efdc06980bdfb0e18d5ac4651d0fee30a8d3e3a0 + md5: 54ca5b5d92ef3a3ba61e195ee882a518 + depends: + - __osx >=11.0 + - bzip2 >=1.0.8,<2.0a0 + - libexpat >=2.6.4,<3.0a0 + - libffi >=3.4,<4.0a0 + - liblzma >=5.6.3,<6.0a0 + - libsqlite >=3.47.0,<4.0a0 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.4.0,<4.0a0 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + constrains: + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Python-2.0 + size: 12998673 + timestamp: 1733408900971 +- conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + sha256: a50052536f1ef8516ed11a844f9413661829aa083304dc624c5925298d078d79 + md5: 5ba79d7c71f03c678c8ead841f347d6e + depends: + - python >=3.9 + - six >=1.5 + license: Apache-2.0 + license_family: APACHE + size: 222505 + timestamp: 1733215763718 +- conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda + sha256: 99713f6b534fef94995c6c16fd21d59f3548784e9111775d692bdc7c44678f02 + md5: e5c6ed218664802d305e79cc2d4491de + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 24215 + timestamp: 1733243277223 +- conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda + sha256: 4790787fe1f4e8da616edca4acf6a4f8ed4e7c6967aa31b920208fc8f95efcca + md5: a61bf9ec79426938ff785eb69dbb1960 + depends: + - python >=3.6 + license: BSD-2-Clause + license_family: BSD + size: 13383 + timestamp: 1677079727691 +- conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.20-pyhff2d567_0.conda + sha256: 1b03678d145b1675b757cba165a0d9803885807792f7eb4495e48a38858c3cca + md5: a28c984e0429aff3ab7386f7de56de6f + depends: + - python >=3.9 + license: Apache-2.0 + license_family: Apache + size: 27913 + timestamp: 1734420869885 +- conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_1.conda + sha256: 57c9a02ec25926fb48edca59b9ede107823e5d5c473b94a0e05cc0b9a193a642 + md5: c0def296b2f6d2dd7b030c2a7f66bb1f + depends: + - python >=3.9 + license: Apache-2.0 + license_family: APACHE + size: 142235 + timestamp: 1733235414217 +- conda: https://conda.anaconda.org/conda-forge/linux-64/python-xxhash-3.5.0-py312h66e93f0_1.conda + sha256: 20851b1e59fee127d49e01fc73195a88ab0779f103b7d6ffc90d11142a83678f + md5: 39aed2afe4d0cf76ab3d6b09eecdbea7 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - xxhash >=0.8.2,<0.8.3.0a0 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + size: 23162 + timestamp: 1725272139519 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-xxhash-3.5.0-py312h52516f5_1.conda + sha256: 0fa5ba80073a43391ee90303814adbc9fd826175de1fdac273ba0e5b711aa255 + md5: 591c4ae6d8338dfd07b951e00433a405 + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - xxhash >=0.8.2,<0.8.3.0a0 + arch: aarch64 + platform: linux + license: BSD-2-Clause + license_family: BSD + size: 23589 + timestamp: 1725273317965 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-xxhash-3.5.0-py312h024a12e_1.conda + sha256: 28204ef48f028a4d872e22040da0dad7ebd703549b010a1bb511b6dd94cf466d + md5: 266fe1ae54a7bb17990206664d0f0ae4 + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - xxhash >=0.8.2,<0.8.3.0a0 + arch: arm64 + platform: osx + license: BSD-2-Clause + license_family: BSD + size: 21765 + timestamp: 1725272382968 +- conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda + build_number: 5 + sha256: d10e93d759931ffb6372b45d65ff34d95c6000c61a07e298d162a3bc2accebb0 + md5: 0424ae29b104430108f5218a66db7260 + constrains: + - python 3.12.* *_cpython + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 6238 + timestamp: 1723823388266 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.12-5_cp312.conda + build_number: 5 + sha256: 5ccdad9981753cc4a2d126e356673a21c0cd5b34e209cb8d476a3947d4ad9b39 + md5: 62b20f305498284a07dc6c45fd0e5c87 + constrains: + - python 3.12.* *_cpython + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 6329 + timestamp: 1723823366253 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-5_cp312.conda + build_number: 5 + sha256: 49d624e4b809c799d2bf257b22c23cf3fc4460f5570d9a58e7ad86350aeaa1f4 + md5: b76f9b1c862128e56ac7aa8cd2333de9 + constrains: + - python 3.12.* *_cpython + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 6278 + timestamp: 1723823099686 +- conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda + sha256: 1a7d6b233f7e6e3bbcbad054c8fd51e690a67b129a899a056a5e45dd9f00cb41 + md5: 3eeeeb9e4827ace8c0c1419c85d590ad + depends: + - python >=3.7 + license: MIT + license_family: MIT + size: 188538 + timestamp: 1706886944988 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py312h66e93f0_1.conda + sha256: a60705971e958724168f2ebbb8ed4853067f1d3f7059843df3903e3092bbcffa + md5: 549e5930e768548a89c23f595dac5a95 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - yaml >=0.2.5,<0.3.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 206553 + timestamp: 1725456256213 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyyaml-6.0.2-py312hb2c0f52_1.conda + sha256: 8c515ebe1e7e85d972d72b75760af9dfac06fd11a9dba7e05c42d69aedbb303c + md5: dc5de424f7dbb9772da720dbb81317b2 + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - yaml >=0.2.5,<0.3.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 199141 + timestamp: 1725456356043 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py312h024a12e_1.conda + sha256: b06f1c15fb39695bbf707ae8fb554b9a77519af577b5556784534c7db10b52e3 + md5: 1ee23620cf46cb15900f70a1300bae55 + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - yaml >=0.2.5,<0.3.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 187143 + timestamp: 1725456547263 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.0-py312hbf22597_3.conda + sha256: bc303f9b11e04a515f79cd5ad3bfa0e84b9dfec76552626d6263b38789fe6678 + md5: 746ce19f0829ec3e19c93007b1a224d3 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libsodium >=1.0.20,<1.0.21.0a0 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - zeromq >=4.3.5,<4.4.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 378126 + timestamp: 1728642454632 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyzmq-26.2.0-py312h2427ae1_3.conda + sha256: cfc4ea87d68b5f0ed64a61f500d5ea0a2310d1f281a4f95afa06c703ea1bdf7d + md5: 1f0779280c3dc1e72cfd86bd1e59791d + depends: + - libgcc >=13 + - libsodium >=1.0.20,<1.0.21.0a0 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - zeromq >=4.3.5,<4.4.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 371730 + timestamp: 1728644030875 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.0-py312hf8a1cbd_3.conda + sha256: 2e0ca1bb9ab3af5d1f9b38548d65be7097ba0246e7e63c908c9b1323df3f45b5 + md5: 7bdaa4c2a84b744ef26c8b2ba65c3d0e + depends: + - __osx >=11.0 + - libcxx >=17 + - libsodium >=1.0.20,<1.0.21.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - zeromq >=4.3.5,<4.4.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 361674 + timestamp: 1728642457661 +- conda: https://conda.anaconda.org/conda-forge/linux-64/re2-2024.07.02-h9925aae_2.conda + sha256: d213c44958d49ce7e0d4d5b81afec23640cce5016685dbb2d23571a99caa4474 + md5: e84ddf12bde691e8ec894b00ea829ddf + depends: + - libre2-11 2024.07.02 hbbce691_2 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 26786 + timestamp: 1735541074034 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/re2-2024.07.02-haa97905_2.conda + sha256: 040848655df9119bae5a549fb5c8956a5537120859416c1d9d0712b7bac9f12e + md5: 1bf0135339b4a7419a198a795d2d4be0 + depends: + - libre2-11 2024.07.02 h18dbdb1_2 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 26830 + timestamp: 1735540999398 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/re2-2024.07.02-h6589ca4_2.conda + sha256: 4d3799c05f8f662922a0acd129d119774760a3281b883603678e128d1cb307fb + md5: 7a8b4ad8c58a3408ca89d78788c78178 + depends: + - libre2-11 2024.07.02 h07bc746_2 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 26861 + timestamp: 1735541088455 +- conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda + sha256: 5435cf39d039387fbdc977b0a762357ea909a7694d9528ab40f005e9208744d7 + md5: 47d31b792659ce70f470b5c82fdfb7a4 + depends: + - libgcc-ng >=12 + - ncurses >=6.3,<7.0a0 + arch: x86_64 + platform: linux + license: GPL-3.0-only + license_family: GPL + size: 281456 + timestamp: 1679532220005 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8fc344f_1.conda + sha256: 4c99f7417419734e3797d45bc355e61c26520e111893b0d7087a01a7fbfbe3dd + md5: 105eb1e16bf83bfb2eb380a48032b655 + depends: + - libgcc-ng >=12 + - ncurses >=6.3,<7.0a0 + arch: aarch64 + platform: linux + license: GPL-3.0-only + license_family: GPL + size: 294092 + timestamp: 1679532238805 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h92ec313_1.conda + sha256: a1dfa679ac3f6007362386576a704ad2d0d7a02e98f5d0b115f207a2da63e884 + md5: 8cbb776a2f641b943d413b3e19df71f4 + depends: + - ncurses >=6.3,<7.0a0 + arch: arm64 + platform: osx + license: GPL-3.0-only + license_family: GPL + size: 250351 + timestamp: 1679532511311 +- conda: https://conda.anaconda.org/conda-forge/linux-64/regex-2024.11.6-py312h66e93f0_0.conda + sha256: fcb5687d3ec5fff580b64b8fb649d9d65c999a91a5c3108a313ecdd2de99f06b + md5: 647770db979b43f9c9ca25dcfa7dc4e4 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Python-2.0 + license_family: PSF + size: 402821 + timestamp: 1730952378415 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/regex-2024.11.6-py312hb2c0f52_0.conda + sha256: ec2c416860de29224e447e2031f8686a05476759c17da1f32f61d4307e540ec8 + md5: fa8b589107567f532fa1380e66f91776 + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Python-2.0 + license_family: PSF + size: 398947 + timestamp: 1730952477463 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/regex-2024.11.6-py312hea69d52_0.conda + sha256: dcdec32f2c7dd37986baa692bedf9db126ad34e92e5e9b64f707cba3d04d2525 + md5: e73cda1f18846b608284bd784f061eac + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Python-2.0 + license_family: PSF + size: 366374 + timestamp: 1730952427552 +- conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda + sha256: d701ca1136197aa121bbbe0e8c18db6b5c94acbd041c2b43c70e5ae104e1d8ad + md5: a9b9368f3701a417eac9edbcae7cb737 + depends: + - certifi >=2017.4.17 + - charset-normalizer >=2,<4 + - idna >=2.5,<4 + - python >=3.9 + - urllib3 >=1.21.1,<3 + constrains: + - chardet >=3.0.2,<6 + license: Apache-2.0 + license_family: APACHE + size: 58723 + timestamp: 1733217126197 +- conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_1.conda + sha256: 06a760c5ae572e72e865d5a87e9fe3cc171e1a9c996e63daf3db52ff1a0b4457 + md5: 7aed65d4ff222bfb7335997aa40b7da5 + depends: + - markdown-it-py >=2.2.0 + - pygments >=2.13.0,<3.0.0 + - python >=3.9 + - typing_extensions >=4.0.0,<5.0.0 + license: MIT + license_family: MIT + size: 185646 + timestamp: 1733342347277 +- conda: 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 +- conda: https://conda.anaconda.org/conda-forge/linux-64/s2n-1.5.10-hb5b8611_0.conda + sha256: f6d451821fddc26b93f45e9313e1ea15e09e5ef049d4e137413a5225d2a5dfba + md5: 999f3673f2a011f59287f2969e3749e4 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - openssl >=3.4.0,<4.0a0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 355142 + timestamp: 1734415467047 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/s2n-1.5.10-h5df210e_0.conda + sha256: b5e7a9f4b7b1ec5c5c3661e2defc8b47fab543b05cad6fec78739d8007612464 + md5: 3d3979efcc0f44f3f0cef3de03b296cc + depends: + - libgcc >=13 + - openssl >=3.4.0,<4.0a0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 353450 + timestamp: 1734415474615 +- conda: https://conda.anaconda.org/conda-forge/linux-64/safetensors-0.5.2-py312h12e396e_0.conda + sha256: 98b8dfa5eec083e0b3ace00906a7f7e748b1e2446dca17e87473f43278fcc036 + md5: 999ca9d87d2bb8b4c01e62c755b928cf + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - __glibc >=2.17 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 424409 + timestamp: 1736383159339 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/safetensors-0.5.2-py312h8cbf658_0.conda + sha256: 3e230060c1366cbaf03f4315b021dfe47f5147f3af88f17975d661c08fe15ad3 + md5: 2c77c961c4e813b1d05122ac4d803d80 + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - __glibc >=2.17 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 408166 + timestamp: 1736383184569 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/safetensors-0.5.2-py312hcd83bfe_0.conda + sha256: 0aeb3e654095ca0261d560d1fc05912d0e94d547a7dc435d7f4cedeba966d176 + md5: fc0383682805e293eba9b8afc9ad0931 + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - __osx >=11.0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + size: 378060 + timestamp: 1736383410115 +- conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda + sha256: 0557c090913aa63cdbe821dbdfa038a321b488e22bc80196c4b3b1aace4914ef + md5: 7c3c2a0f3ebdea2bbc35538d162b43bf + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 14462 + timestamp: 1733301007770 +- conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + sha256: 41db0180680cc67c3fa76544ffd48d6a5679d96f4b71d7498a759e94edc9a2db + md5: a451d576819089b0d672f18768be0f65 + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 16385 + timestamp: 1733381032766 +- conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-h8bd8927_1.conda + sha256: ec91e86eeb2c6bbf09d51351b851e945185d70661d2ada67204c9a6419d282d3 + md5: 3b3e64af585eadfb52bb90b553db5edf + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 42739 + timestamp: 1733501881851 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-hd4fb6f5_1.conda + sha256: c4a07ae5def8d55128f25a567a296ef9d7bf99a3bc79d46bd5160c076a5f50af + md5: 2fcc6cd1e5550deb509073fd2e6693e1 + depends: + - libgcc >=13 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 43032 + timestamp: 1733501964775 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-h98b9ce2_1.conda + sha256: 4242f95b215127a006eb664fe26ed5a82df87e90cbdbc7ce7ff4971f0720997f + md5: ded86dee325290da2967a3fea3800eb5 + depends: + - __osx >=11.0 + - libcxx >=18 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 35857 + timestamp: 1733502172664 +- conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda + sha256: c2248418c310bdd1719b186796ae50a8a77ce555228b6acd32768e2543a15012 + md5: bf7a226e58dfb8346c70df36065d86c9 + depends: + - python >=3.9 + license: Apache-2.0 + license_family: Apache + size: 15019 + timestamp: 1733244175724 +- conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.2.1-pyhd8ed1ab_0.conda + sha256: 3c6a476e7afb702d841e23c61a0c4cc491929d2e39376d329e67e94c40a236cc + md5: c1ef6bc13dd2caa4b406fb3cb06c2791 + depends: + - anyio >=4.7.0 + - python >=3.9 + - starlette >=0.41.3 + license: BSD-3-Clause + license_family: BSD + size: 15324 + timestamp: 1735126414893 +- conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyha770c72_1.conda + sha256: b74fc76107487eb26624c01fc55bfab7eed03ae82e003333c86d8a1eeac53672 + md5: 0207dac04ae2200701fab697f0aaaac4 + depends: + - anyio >=3.4.0,<5 + - python >=3.9 + - typing_extensions >=3.10.0 + license: BSD-3-Clause + license_family: BSD + size: 58838 + timestamp: 1733344472634 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda + sha256: e0569c9caa68bf476bead1bed3d79650bb080b532c64a4af7d8ca286c08dea4e + md5: d453b98d9c83e71da0741bb0ff4d76bc + depends: + - libgcc-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 + arch: x86_64 + platform: linux + license: TCL + license_family: BSD + size: 3318875 + timestamp: 1699202167581 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda + sha256: 7fa27cc512d3a783f38bd16bbbffc008807372499d5b65d089a8e43bde9db267 + md5: f75105e0585851f818e0009dd1dde4dc + depends: + - libgcc-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 + arch: aarch64 + platform: linux + license: TCL + license_family: BSD + size: 3351802 + timestamp: 1695506242997 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda + sha256: 72457ad031b4c048e5891f3f6cb27a53cb479db68a52d965f796910e71a403a8 + md5: b50a57ba89c32b62428b71a875291c9b + depends: + - libzlib >=1.2.13,<2.0.0a0 + arch: arm64 + platform: osx + license: TCL + license_family: BSD + size: 3145523 + timestamp: 1699202432999 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.21.0-py312h8360d73_0.conda + sha256: 4f504a5e9d77c6d88a8f735c4319429d8bf40b742384f908a2efe0a09acc3cc5 + md5: f953aa733207f3d37acf4a3efbedba89 + depends: + - __glibc >=2.17,<3.0.a0 + - huggingface_hub >=0.16.4,<1.0 + - libgcc >=13 + - libstdcxx >=13 + - openssl >=3.4.0,<4.0a0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - __glibc >=2.17 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 2258007 + timestamp: 1732734202127 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.21.0-py312ha0d6ea1_0.conda + sha256: ef0f4d4e2c798b1821187ea0ba4c86484e48abaa0e9a19fe68030fa7ff5dde84 + md5: 077f48c9e0c08a30d842e15c51df4143 + depends: + - huggingface_hub >=0.16.4,<1.0 + - libgcc >=13 + - libstdcxx >=13 + - openssl >=3.4.0,<4.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - __glibc >=2.17 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 2331194 + timestamp: 1732734303196 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.21.0-py312hf3e4074_0.conda + sha256: 5d395333fcb22dc611140286c1f2ea8b3fa220a4931c583587cb612238091555 + md5: 4c732c74b485ef7ac8ec1c548dd45e8e + depends: + - __osx >=11.0 + - huggingface_hub >=0.16.4,<1.0 + - libcxx >=18 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - __osx >=11.0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + size: 1931389 + timestamp: 1732734727624 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda + sha256: 062a3a3a37fa8615ce57929ba7e982c76f5a5810bcebd435950f6d6c4147c310 + md5: e417822cb989e80a0d2b1b576fdd1657 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 840414 + timestamp: 1732616043734 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py312h52516f5_0.conda + sha256: 4c19a544354172b2273553267e734795a6da3c78a04c2d19f8e9e159ca3178bc + md5: e28996d9d2d44d777b7e6fb12f63715b + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 841662 + timestamp: 1732616934923 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda + sha256: 964a2705a36c50040c967b18b45b9cc8de3c2aff4af546979a574e0b38e58e39 + md5: fb0605888a475d6a380ae1d1a819d976 + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 842549 + timestamp: 1732616081362 +- conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + sha256: 11e2c85468ae9902d24a27137b6b39b4a78099806e551d390e394a8c34b48e40 + md5: 9efbfdc37242619130ea42b1cc4ed861 + depends: + - colorama + - python >=3.9 + license: MPL-2.0 or MIT + size: 89498 + timestamp: 1735661472632 +- conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + sha256: f39a5620c6e8e9e98357507262a7869de2ae8cc07da8b7f84e517c9fd6c2b959 + md5: 019a7385be9af33791c989871317e1ed + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 110051 + timestamp: 1733367480074 +- conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.48.0-pyhd8ed1ab_0.conda + sha256: c8dd6d69e4ef67c7d507dec2be4b6964f6ddbe1ce35a822ddf4089505d702f33 + md5: 2c57d4af7b8952484962b40a59cf1537 + depends: + - datasets !=2.5.0 + - filelock + - huggingface_hub >=0.23.0,<1.0 + - numpy >=1.17 + - packaging >=20.0 + - python >=3.9 + - pyyaml >=5.1 + - regex !=2019.12.17 + - requests + - safetensors >=0.4.1 + - tokenizers >=0.21,<0.22 + - tqdm >=4.27 + license: Apache-2.0 + license_family: APACHE + size: 3408277 + timestamp: 1736534112195 +- conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda + sha256: ef695490e895c2ad552c77ec497b899b09fd4ad4ab07edcf5649f5994cf92a35 + md5: 170a0398946d8f5b454e592672b6fc20 + depends: + - python >=3.9 + - typer-slim-standard 0.15.1 hd8ed1ab_0 + license: MIT + license_family: MIT + size: 56175 + timestamp: 1733408582623 +- conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda + sha256: d4965516f35e0805199de6596c4ac76c4ad3d6b012be35e532102f9e53ecb860 + md5: 0218b16f5a1dd569e575a7a6415489db + depends: + - click >=8.0.0 + - python >=3.9 + - typing_extensions >=3.7.4.3 + constrains: + - rich >=10.11.0 + - typer >=0.15.1,<0.15.2.0a0 + - shellingham >=1.3.0 + license: MIT + license_family: MIT + size: 43592 + timestamp: 1733408569554 +- conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda + sha256: f31c56fe98315da8b9ce848256c17e0b9f87896b41a6ccf0c9cc74644dcef20f + md5: 4e603c43bfdfc7b533be087c3e070cc9 + depends: + - rich + - shellingham + - typer-slim 0.15.1 pyhd8ed1ab_0 + license: MIT + license_family: MIT + size: 49531 + timestamp: 1733408570063 +- conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda + noarch: python + sha256: c8e9c1c467b5f960b627d7adc1c65fece8e929a3de89967e91ef0f726422fd32 + md5: b6a408c64b78ec7b779a3e5c7a902433 + depends: + - typing_extensions 4.12.2 pyha770c72_1 + license: PSF-2.0 + license_family: PSF + size: 10075 + timestamp: 1733188758872 +- conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + sha256: 337be7af5af8b2817f115b3b68870208b30c31d3439bec07bfb2d8f4823e3568 + md5: d17f13df8b65464ca316cbc000a3cb64 + depends: + - python >=3.9 + license: PSF-2.0 + license_family: PSF + size: 39637 + timestamp: 1733188758212 +- conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda + sha256: 4fde5c3008bf5d2db82f2b50204464314cc3c91c1d953652f7bd01d9e52aefdf + md5: 8ac3367aafb1cc0a068483c580af8015 + license: LicenseRef-Public-Domain + size: 122354 + timestamp: 1728047496079 +- conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda + sha256: 114919ffa80c328127dab9c8e7a38f9d563c617691fb81fccb11c1e86763727e + md5: 32674f8dbfb7b26410ed580dd3c10a29 + depends: + - brotli-python >=1.0.9 + - h2 >=4,<5 + - pysocks >=1.5.6,<2.0,!=1.5.7 + - python >=3.9 + - zstandard >=0.18.0 + license: MIT + license_family: MIT + size: 100102 + timestamp: 1734859520452 +- conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.34.0-pyh31011fe_0.conda + sha256: 55c160b0cf9274e2b98bc0f7fcce548bffa8d788bc86aa02801877457040f6fa + md5: 5d448feee86e4740498ec8f8eb40e052 + depends: + - __unix + - click >=7.0 + - h11 >=0.8 + - python >=3.9 + - typing_extensions >=4.0 + license: BSD-3-Clause + license_family: BSD + size: 48643 + timestamp: 1734293057914 +- conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.34.0-h31011fe_0.conda + sha256: 87e1531e175e75122f9f37608eb953af4c977465ab0ae11283cc01fef954e4ec + md5: 32a94143a7f65d76d2d5da37dcb4ed79 + depends: + - __unix + - httptools >=0.6.3 + - python-dotenv >=0.13 + - pyyaml >=5.1 + - uvicorn 0.34.0 pyh31011fe_0 + - uvloop >=0.14.0,!=0.15.0,!=0.15.1 + - watchfiles >=0.13 + - websockets >=10.4 + license: BSD-3-Clause + license_family: BSD + size: 7203 + timestamp: 1734293058849 +- conda: https://conda.anaconda.org/conda-forge/linux-64/uvloop-0.21.0-py312h66e93f0_1.conda + sha256: 9337a80165fcf70b06b9d6ba920dad702260ca966419ae77560a15540e41ab72 + md5: 998e481e17c1b6a74572e73b06f2df08 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libuv >=1.49.2,<2.0a0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: MIT OR Apache-2.0 + size: 701355 + timestamp: 1730214506716 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/uvloop-0.21.0-py312hb2c0f52_1.conda + sha256: 807eede6698bd00a1d739a3e19ee6ae6a03a66d2ddd2ef150f2dfd198c3b0292 + md5: d83e107ba16c77aba2feec47b7b666a4 + depends: + - libgcc >=13 + - libuv >=1.49.2,<2.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: MIT OR Apache-2.0 + size: 655266 + timestamp: 1730214606664 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/uvloop-0.21.0-py312h0bf5046_1.conda + sha256: b1efa77aa4871d7bb09c8dd297fa9bd9070ba7f0f95f2d12ae9cdd31ce8b6b22 + md5: 4f5110253ba80ebf27e55c4ab333880a + depends: + - __osx >=11.0 + - libuv >=1.49.2,<2.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: MIT OR Apache-2.0 + size: 544097 + timestamp: 1730214653726 +- conda: https://conda.anaconda.org/conda-forge/linux-64/watchfiles-1.0.4-py312h12e396e_0.conda + sha256: b728f525dcae2c10524f9942255346eba62aee9c820ff269d7dd4f7caffb7ffb + md5: df87129c4cb7afc4a3cbad71a1b9e223 + depends: + - __glibc >=2.17,<3.0.a0 + - anyio >=3.0.0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - __glibc >=2.17 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 410192 + timestamp: 1736550568524 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/watchfiles-1.0.4-py312h8cbf658_0.conda + sha256: 45193910f6bafc287c784442d173745161b18f96223f0f990a9a744fda753787 + md5: ed958a27e610c31de625e167d4c11a04 + depends: + - anyio >=3.0.0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - __glibc >=2.17 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 403791 + timestamp: 1736550743174 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/watchfiles-1.0.4-py312hcd83bfe_0.conda + sha256: 84122e3712f2263e12c9d2be75d122eaf2d269801183df4b73aadcb670943b17 + md5: 946eb0208d09b811a671fad9b2831f4e + depends: + - __osx >=11.0 + - anyio >=3.0.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - __osx >=11.0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 363822 + timestamp: 1736550859472 +- conda: https://conda.anaconda.org/conda-forge/linux-64/websockets-14.1-py312h66e93f0_0.conda + sha256: 5998940f91765ba991cf286c863c20bcb53db92bb976a2b5a714566b86b0e763 + md5: a79f7ce618bd0a9f4c00c59a03570fcd + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 242145 + timestamp: 1731498716195 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/websockets-14.1-py312hb2c0f52_0.conda + sha256: c292a8badcbe4040537e225fbeb237bfaf272808eab060067d965d3da98ccd5c + md5: 7e2a0ef2a1a87f88f9745f9c7059186e + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 242912 + timestamp: 1731498811466 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/websockets-14.1-py312hea69d52_0.conda + sha256: 98fb04a1a0f53dc604378f94b5795d0b8e462fee01bf0a887cb34d0efdf5d21f + md5: 89b79a9baa7db46ce21f5738a5a3dfda + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 243131 + timestamp: 1731498944076 +- conda: https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.17.2-py312h66e93f0_0.conda + sha256: ed3a1700ecc5d38c7e7dc7d2802df1bc1da6ba3d6f6017448b8ded0affb4ae00 + md5: 669e63af87710f8d52fdec9d4d63b404 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + size: 63590 + timestamp: 1736869574299 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/wrapt-1.17.2-py312hb2c0f52_0.conda + sha256: cc28914462a21b2f64d9b763a9733bfcbc811dd2975d0d2e6e429e35f5b6d59c + md5: 8a5c6e3f809bae085be369b62dc5d06a + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: BSD-2-Clause + license_family: BSD + size: 63967 + timestamp: 1736869675870 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/wrapt-1.17.2-py312hea69d52_0.conda + sha256: 6a3e68b57de29802e8703d1791dcacb7613bfdc17bbb087c6b2ea2796e6893ef + md5: e49608c832fcf438f70cbcae09c3adc5 + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: BSD-2-Clause + license_family: BSD + size: 61198 + timestamp: 1736869673767 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-hb9d3cd8_0.conda + sha256: ed10c9283974d311855ae08a16dfd7e56241fac632aec3b92e3cfe73cff31038 + md5: f6ebe2cb3f82ba6c057dde5d9debe4f7 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 14780 + timestamp: 1734229004433 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxau-1.0.12-h86ecc28_0.conda + sha256: 7829a0019b99ba462aece7592d2d7f42e12d12ccd3b9614e529de6ddba453685 + md5: d5397424399a66d33c80b1f2345a36a6 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 15873 + timestamp: 1734230458294 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxau-1.0.12-h5505292_0.conda + sha256: f33e6f013fc36ebc200f09ddead83468544cb5c353a3b50499b07b8c34e28a8d + md5: 50901e0764b7701d8ed7343496f4f301 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 13593 + timestamp: 1734229104321 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb9d3cd8_0.conda + sha256: 6b250f3e59db07c2514057944a3ea2044d6a8cdde8a47b6497c254520fade1ee + md5: 8035c64cb77ed555e3f150b7b3972480 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 19901 + timestamp: 1727794976192 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxdmcp-1.1.5-h57736b2_0.conda + sha256: efcc150da5926cf244f757b8376d96a4db78bc15b8d90ca9f56ac6e75755971f + md5: 25a5a7b797fe6e084e04ffe2db02fc62 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 20615 + timestamp: 1727796660574 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxdmcp-1.1.5-hd74edd7_0.conda + sha256: 9939a166d780700d81023546759102b33fdc2c5f11ef09f5f66c77210fd334c8 + md5: 77c447f48cab5d3a15ac224edb86a968 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 18487 + timestamp: 1727795205022 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xxhash-0.8.2-hd590300_0.conda + sha256: 6fe74a8fd84ab0dc25e4dc3e0c22388dd8accb212897a208b14fe5d4fbb8fc2f + md5: f08fb5c89edfc4aadee1c81d4cfb1fa1 + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + size: 97691 + timestamp: 1689951608120 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xxhash-0.8.2-h31becfc_0.conda + sha256: 4c526aed70b579d80e5c20d32130b6bc8bde59b3250d43c2b5269755f4da8a9b + md5: bb9faf6857108a9f62ebb4dab6ef05da + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: BSD-2-Clause + license_family: BSD + size: 102442 + timestamp: 1689951682147 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/xxhash-0.8.2-hb547adb_0.conda + sha256: a70f59f7221ee72c45b39a6b36a33eb9c717ba01921cce1a3c361a4676979a2e + md5: 144cd3b88706507f332f5eb5fb83a33b + arch: arm64 + platform: osx + license: BSD-2-Clause + license_family: BSD + size: 97593 + timestamp: 1689951969732 +- conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 + sha256: a4e34c710eeb26945bdbdaba82d3d74f60a78f54a874ec10d373811a5d217535 + md5: 4cb3ad778ec2d5a7acbdf254eb1c42ae + depends: + - libgcc-ng >=9.4.0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 89141 + timestamp: 1641346969816 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yaml-0.2.5-hf897c2e_2.tar.bz2 + sha256: 8bc601d6dbe249eba44b3c456765265cd8f42ef1e778f8df9b0c9c88b8558d7e + md5: b853307650cb226731f653aa623936a4 + depends: + - libgcc-ng >=9.4.0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 92927 + timestamp: 1641347626613 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 + sha256: 93181a04ba8cfecfdfb162fc958436d868cc37db504c58078eab4c1a3e57fbb7 + md5: 4bb3f014845110883a3c5ee811fd84b4 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 88016 + timestamp: 1641347076660 +- conda: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.18.3-py312h66e93f0_0.conda + sha256: a0d93c3bef723e384cff8a29a82a2c6b7a73b39328088f3a2d97c901f56e9a63 + md5: 91df2efaa08730416bec2a4502309275 + depends: + - __glibc >=2.17,<3.0.a0 + - idna >=2.0 + - libgcc >=13 + - multidict >=4.0 + - propcache >=0.2.1 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 151393 + timestamp: 1733428897813 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.18.3-py312hb2c0f52_0.conda + sha256: 470b5b0f3ac89acd143095281167dc2ac1a56d4fa22e1794bd8f3b00bb604540 + md5: 0b3c640697bca798d0ab428f530ed24c + depends: + - idna >=2.0 + - libgcc >=13 + - multidict >=4.0 + - propcache >=0.2.1 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 150004 + timestamp: 1733429056665 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.18.3-py312hea69d52_0.conda + sha256: 69c7863809e11bc90c0d935c16e7f151dcc925add08b3894f06059263a8cb9ba + md5: f32f9b16361866a62d6e061fcd7eb400 + depends: + - __osx >=11.0 + - idna >=2.0 + - multidict >=4.0 + - propcache >=0.2.1 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 141556 + timestamp: 1733429104990 +- conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda + sha256: a4dc72c96848f764bb5a5176aa93dd1e9b9e52804137b99daeebba277b31ea10 + md5: 3947a35e916fcc6b9825449affbf4214 + depends: + - __glibc >=2.17,<3.0.a0 + - krb5 >=1.21.3,<1.22.0a0 + - libgcc >=13 + - libsodium >=1.0.20,<1.0.21.0a0 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: MPL-2.0 + license_family: MOZILLA + size: 335400 + timestamp: 1731585026517 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zeromq-4.3.5-h5efb499_7.conda + sha256: a6003096dc0570a86492040ba32b04ce7662b159600be2252b7a0dfb9414e21c + md5: f2f3282559a4b87b7256ecafb4610107 + depends: + - krb5 >=1.21.3,<1.22.0a0 + - libgcc >=13 + - libsodium >=1.0.20,<1.0.21.0a0 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: MPL-2.0 + license_family: MOZILLA + size: 371419 + timestamp: 1731589490850 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda + sha256: 9e585569fe2e7d3bea71972cd4b9f06b1a7ab8fa7c5139f92a31cbceecf25a8a + md5: f7e6b65943cb73bce0143737fded08f1 + depends: + - __osx >=11.0 + - krb5 >=1.21.3,<1.22.0a0 + - libcxx >=18 + - libsodium >=1.0.20,<1.0.21.0a0 + arch: arm64 + platform: osx + license: MPL-2.0 + license_family: MOZILLA + size: 281565 + timestamp: 1731585108039 +- conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + sha256: 567c04f124525c97a096b65769834b7acb047db24b15a56888a322bf3966c3e1 + md5: 0c3cc595284c5e8f0f9900a9b228a332 + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 21809 + timestamp: 1732827613585 +- conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312hef9b889_1.conda + sha256: b97015e146437283f2213ff0e95abdc8e2480150634d81fbae6b96ee09f5e50b + md5: 8b7069e9792ee4e5b4919a7a306d2e67 + depends: + - __glibc >=2.17,<3.0.a0 + - cffi >=1.11 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - zstd >=1.5.6,<1.5.7.0a0 + - zstd >=1.5.6,<1.6.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 419552 + timestamp: 1725305670210 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstandard-0.23.0-py312hb698573_1.conda + sha256: 2681c2a249752bdc7978e59ee2f34fcdfcbfda80029b84b8e5fec8dbc9e3af25 + md5: ffcb8e97e62af42075e0e5f46bb9856e + depends: + - cffi >=1.11 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - zstd >=1.5.6,<1.5.7.0a0 + - zstd >=1.5.6,<1.6.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 392496 + timestamp: 1725305808244 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py312h15fbf35_1.conda + sha256: d00ca25c1e28fd31199b26a94f8c96574475704a825d244d7a6351ad3745eeeb + md5: a4cde595509a7ad9c13b1a3809bcfe51 + depends: + - __osx >=11.0 + - cffi >=1.11 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - zstd >=1.5.6,<1.5.7.0a0 + - zstd >=1.5.6,<1.6.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 330788 + timestamp: 1725305806565 +- conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda + sha256: c558b9cc01d9c1444031bd1ce4b9cff86f9085765f17627a6cd85fc623c8a02b + md5: 4d056880988120e29d75bfff282e0f45 + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 554846 + timestamp: 1714722996770 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.6-h02f22dd_0.conda + sha256: 484f9d0722c77685ae379fbff3ccd662af9ead7e59eb39cd6d0c677cdf25ff6c + md5: be8d5f8cf21aed237b8b182ea86b3dd6 + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 539937 + timestamp: 1714723130243 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.6-hb46c0d2_0.conda + sha256: 2d4fd1ff7ee79cd954ca8e81abf11d9d49954dd1fef80f27289e2402ae9c2e09 + md5: d96942c06c3e84bfcc5efb038724a7fd + depends: + - __osx >=11.0 + - libzlib >=1.2.13,<2.0.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 405089 + timestamp: 1714723101397 diff --git a/magic.lock b/magic.lock index ea064f325e..adcf0280a6 100644 --- a/magic.lock +++ b/magic.lock @@ -132,12 +132,12 @@ 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-25.1.0.dev2025011505-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025011505-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025011505-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011605-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025011605-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025011605-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011605-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-25.1.0.dev2025011505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011605-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 @@ -351,12 +351,12 @@ 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-25.1.0.dev2025011505-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025011505-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025011505-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011605-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025011605-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025011605-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011605-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-25.1.0.dev2025011505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011605-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 @@ -557,16 +557,16 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.5-h178c5d8_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/lit-19.1.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.6-hdb05f8b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda - 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-25.1.0.dev2025011505-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025011505-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025011505-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011605-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025011605-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025011605-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011605-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-25.1.0.dev2025011505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011605-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 @@ -4657,19 +4657,18 @@ packages: license_family: Apache size: 128580 timestamp: 1736894117712 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.6-hdb05f8b_0.conda - sha256: a0f3e9139ab16f0a67b9d2bbabc15b78977168f4a5b5503fed4962dcb9a96102 - md5: 34fdeffa0555a1a56f38839415cc066c +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda + sha256: b92a669f2059874ebdcb69041b6c243d68ffc3fb356ac1339cec44aeb27245d7 + md5: c4d54bfd3817313ce758aa76283b118d depends: - __osx >=11.0 constrains: - - openmp 19.1.6|19.1.6.* + - openmp 19.1.7|19.1.7.* arch: arm64 platform: osx license: Apache-2.0 WITH LLVM-exception - license_family: APACHE - size: 281251 - timestamp: 1734520462311 + size: 280830 + timestamp: 1736986295869 - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.10.0-h5888daf_1.conda sha256: 47326f811392a5fd3055f0f773036c392d26fdb32e4d8e7a8197eed951489346 md5: 9de5350a85c4a20c685259b889aa6393 @@ -4764,47 +4763,47 @@ packages: license_family: BSD size: 24048 timestamp: 1733219945697 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011505-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011605-release.conda noarch: python - sha256: fb653b1206a459970561cb99277971b809ef23dfbabb08067cf87ecc5316d144 - md5: 36d10ca6747cea3051f98f6c4340bdde + sha256: 66c70dda70094dd44776322c4274e0aedea1326e79407b710423d196fbf5c687 + md5: 63f0b9dbd781076f2346a4c90818fa77 depends: - - max-core ==25.1.0.dev2025011505 release - - max-python >=25.1.0.dev2025011505,<26.0a0 - - mojo-jupyter ==25.1.0.dev2025011505 release - - mblack ==25.1.0.dev2025011505 release + - max-core ==25.1.0.dev2025011605 release + - max-python >=25.1.0.dev2025011605,<26.0a0 + - mojo-jupyter ==25.1.0.dev2025011605 release + - mblack ==25.1.0.dev2025011605 release license: LicenseRef-Modular-Proprietary - size: 9920 - timestamp: 1736918190337 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025011505-release.conda - sha256: 5de02f267a7821eb30275253c0f03317e45befb2291b4c164d217e4a0be08489 - md5: e084403c468c3736de7b93e85ac55ca5 + size: 9918 + timestamp: 1737005226114 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025011605-release.conda + sha256: 833bf62b78d41a258c0f1c2fb33efe2ecd31d52c9f25e0927f3a3c06f3263143 + md5: 67b61208a7f51d98440b829a762aa983 depends: - - mblack ==25.1.0.dev2025011505 release + - mblack ==25.1.0.dev2025011605 release license: LicenseRef-Modular-Proprietary - size: 244663428 - timestamp: 1736918190336 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025011505-release.conda - sha256: b90cccb4ff28d8680f0221b696cfe260c3263afc92fcc90bae9e3e0205f6649a - md5: 6b38ab0cddf2d8d6ea3de50fa06daccf + size: 244845391 + timestamp: 1737004888429 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025011605-release.conda + sha256: cca47165ed2791ce97b8ed478c375ca5e19c9b1dbad2008a88fcf55976669e98 + md5: ec67c1c4477173523c480d0439f618ee depends: - - mblack ==25.1.0.dev2025011505 release + - mblack ==25.1.0.dev2025011605 release license: LicenseRef-Modular-Proprietary - size: 247150310 - timestamp: 1736918170378 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025011505-release.conda - sha256: 8e443193c3efccf88a1f335f56803cc8252a6087ceb570847fbc7d54373436dd - md5: 380f01b398f4026fa6d362bcd535bcce + size: 247313436 + timestamp: 1737005226112 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025011605-release.conda + sha256: 0c90b26d3a97472ecf01e8f96210d1b6becf10a628eb138a8fe9cba25c275f94 + md5: 67f133797e55bdfeae523889d117d24e depends: - - mblack ==25.1.0.dev2025011505 release + - mblack ==25.1.0.dev2025011605 release license: LicenseRef-Modular-Proprietary - size: 206696883 - timestamp: 1736918528488 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025011505-3.12release.conda - sha256: 8ffaf65c9e533d1c05e63208e5929f7047232682d71e241a8d078bd40784c070 - md5: 979326be6e37f9d08a2af9d3b5f5b173 + size: 206707824 + timestamp: 1737004945969 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025011605-3.12release.conda + sha256: 8ab036ac69684b74999f0274eb9741c0d0c4e036a0a777dfa2276539703bcf87 + md5: 6fde421d7d48ab50ec34964bfc003ab0 depends: - - max-core ==25.1.0.dev2025011505 release + - max-core ==25.1.0.dev2025011605 release - python 3.12.* - fastapi - httpx @@ -4825,13 +4824,13 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 124404054 - timestamp: 1736918190345 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025011505-3.12release.conda - sha256: d29135e77b8d7da7fc1e7fe00b6cefb5faded5da911430a1ff9090377cde6a0f - md5: 7ab99f094af5a6e10444022febf6158f + size: 124617353 + timestamp: 1737004888439 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025011605-3.12release.conda + sha256: 3b711e5ef7c518e1e6b69ff69c5c7505e9f5779ee99359c7b2808a6324bee5ca + md5: f264d20311c5422c256d177081752fc4 depends: - - max-core ==25.1.0.dev2025011505 release + - max-core ==25.1.0.dev2025011605 release - python 3.12.* - fastapi - httpx @@ -4852,13 +4851,13 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 127116659 - timestamp: 1736918170389 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025011505-3.12release.conda - sha256: f21679607c9939017d447c50d2732c8e842dcb29d18907390f5cd85254370ccf - md5: 112c450c08f0af99073a4dc4aae82576 + size: 127393468 + timestamp: 1737005226123 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025011605-3.12release.conda + sha256: f3c1e91c675ebf5835799c044f534e87840cae019df45e06ab50b09c4b819138 + md5: b42171a30a90eca86de374dc6562d2ab depends: - - max-core ==25.1.0.dev2025011505 release + - max-core ==25.1.0.dev2025011605 release - python 3.12.* - fastapi - httpx @@ -4879,12 +4878,12 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 110626067 - timestamp: 1736918528491 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011505-release.conda + size: 110522116 + timestamp: 1737004945972 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011605-release.conda noarch: python - sha256: f1dab48a1791a810711d1c7e484ea1c5340297d09f9493cd99604978a3c43717 - md5: d4a97c4b5ee27717785df58abcef3fb3 + sha256: cfd9e14c0c14fa02b6b61141ff4f9007a11eb3ed1b11cf48a717f215e27c7407 + md5: d60436499404c582b03af554c788436f depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -4894,8 +4893,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130819 - timestamp: 1736918190341 + size: 130793 + timestamp: 1737005226119 - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda sha256: 78c1bbe1723449c52b7a9df1af2ee5f005209f67e40b6e1d3c7619127c43b1c7 md5: 592132998493b3ff25fd7479396e8351 @@ -4905,18 +4904,18 @@ packages: license_family: MIT size: 14465 timestamp: 1733255681319 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011505-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011605-release.conda noarch: python - sha256: 87baffbf376e8562b6bde06c50c57d907ec9a6f6f338f342bddfad4fa83403e4 - md5: c14f190fae020526fc6559130272f1f8 + sha256: 68dcf6fcc24f226462c4a7004a2214a1696f2ad0cb8d7ac229ee9ec4ea2216ea + md5: 864d0b85ff8fd743209bea757229d010 depends: - - max-core ==25.1.0.dev2025011505 release + - max-core ==25.1.0.dev2025011605 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22931 - timestamp: 1736918190342 + size: 22934 + timestamp: 1737005226120 - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py312h178313f_2.conda sha256: b05bc8252a6e957bf4a776ed5e0e61d1ba88cdc46ccb55890c72cc58b10371f4 md5: 5b5e3267d915a107eca793d52e1b780a From 645bc849cf4bc1aca80f771924eaf513c80a8303 Mon Sep 17 00:00:00 2001 From: Jack Clayton Date: Thu, 16 Jan 2025 00:32:51 -0500 Subject: [PATCH 250/509] [stdlib] Move `float` functions to `Float64` ctors And add deprecation warnings to the float functions, to be phased out to a compiler error in the release after next. MODULAR_ORIG_COMMIT_REV_ID: cef71b382ba4c50f5aa5f8d59a9698ba487f98d7 --- docs/manual/python/types.mdx | 7 ++--- examples/matmul.mojo | 4 +-- stdlib/src/builtin/bool.mojo | 2 +- stdlib/src/builtin/char.mojo | 2 +- stdlib/src/builtin/floatable.mojo | 30 ++++++++++--------- stdlib/src/builtin/int.mojo | 10 +++---- stdlib/src/builtin/simd.mojo | 30 ++++++++++++++++++- stdlib/src/builtin/str.mojo | 4 +-- stdlib/src/builtin/string_literal.mojo | 2 +- stdlib/src/builtin/uint.mojo | 2 +- stdlib/src/collections/string/format.mojo | 2 +- stdlib/src/python/python_object.mojo | 2 +- stdlib/test/bit/test_bit.mojo | 2 +- .../builtin/test_deprecation_warnings.mojo | 8 ++++- stdlib/test/builtin/test_int.mojo | 2 +- stdlib/test/builtin/test_simd.mojo | 6 ++-- stdlib/test/builtin/test_string_literal.mojo | 2 +- .../test/collections/string/test_string.mojo | 4 +-- 18 files changed, 78 insertions(+), 43 deletions(-) diff --git a/docs/manual/python/types.mdx b/docs/manual/python/types.mdx index 850efc8434..28ff8ffb6a 100644 --- a/docs/manual/python/types.mdx +++ b/docs/manual/python/types.mdx @@ -148,15 +148,14 @@ Currently `PythonObject` conforms to the [`Stringable`](/mojo/stdlib/builtin/str/Stringable), [`Boolable`](/mojo/stdlib/builtin/bool/Boolable), [`Intable`](/mojo/stdlib/builtin/int/Intable), and -[`Floatable`](/mojo/stdlib/builtin/floatable/Floatable/) traits, which allows -you to convert a `PythonObject` to the corresponding Mojo types. +[`Floatable`](/mojo/stdlib/builtin/floatable/Floatable/) traits. This allows you +to convert a `PythonObject` to the corresponding Mojo types. ```mojo var s = String(py_string) var b = Bool(py_bool) var i = Int(py_int) - -var f: Float64 = float(py_float) +var f = Float64(py_float) ``` PythonObject also implements the [`Writable`](/mojo/stdlib/utils/write/Writable) diff --git a/examples/matmul.mojo b/examples/matmul.mojo index 44638daf34..6843303a12 100644 --- a/examples/matmul.mojo +++ b/examples/matmul.mojo @@ -84,7 +84,7 @@ def run_matmul_python() -> Float64: var pymatmul: PythonObject = Python.import_module("pymatmul") var py = Python.import_module("builtins") - var gflops = float(pymatmul.benchmark_matmul_python(128, 128, 128)) + var gflops = Float64(pymatmul.benchmark_matmul_python(128, 128, 128)) py.print(py.str("{:<18}{:>8.3f} GFLOPS").format("Python:", gflops)) return gflops @@ -94,7 +94,7 @@ def run_matmul_numpy() -> Float64: var pymatmul: PythonObject = Python.import_module("pymatmul") var py = Python.import_module("builtins") - var gflops = float(pymatmul.benchmark_matmul_numpy(M, N, K)) + var gflops = Float64(pymatmul.benchmark_matmul_numpy(M, N, K)) py.print(py.str("{:<18}{:>8.3f} GFLOPS").format("Numpy:", gflops)) return gflops diff --git a/stdlib/src/builtin/bool.mojo b/stdlib/src/builtin/bool.mojo index 1b6a4450f4..e83425f8e5 100644 --- a/stdlib/src/builtin/bool.mojo +++ b/stdlib/src/builtin/bool.mojo @@ -555,7 +555,7 @@ struct Bool( @deprecated( - "the `bool` function is deprecated, use the `Bool` constructor instead." + "the `bool` function is deprecated, use the `Bool` constructor instead" ) @always_inline fn bool[T: Boolable, //](value: T) -> Bool: diff --git a/stdlib/src/builtin/char.mojo b/stdlib/src/builtin/char.mojo index 51e7769704..74d789a619 100644 --- a/stdlib/src/builtin/char.mojo +++ b/stdlib/src/builtin/char.mojo @@ -461,7 +461,7 @@ struct Char(CollectionElement, EqualityComparable, Intable, Stringable): return 1 var shift = 6 * (num_bytes - 1) - var mask = UInt8(0xFF) >> (num_bytes + 1) + var mask = UInt8(0xFF) >> UInt8(num_bytes + 1) var num_bytes_marker = UInt8(0xFF) << (8 - num_bytes) ptr[0] = ((c >> shift) & mask) | num_bytes_marker for i in range(1, num_bytes): diff --git a/stdlib/src/builtin/floatable.mojo b/stdlib/src/builtin/floatable.mojo index 1510173716..ed921aa2a7 100644 --- a/stdlib/src/builtin/floatable.mojo +++ b/stdlib/src/builtin/floatable.mojo @@ -18,10 +18,7 @@ These are Mojo built-ins, so you don't need to import them. trait Floatable: - """The `Floatable` trait describes a type that can be converted to a Float. - - Any type that conforms to `Floatable` works with the built-in `float` - function. + """The `Floatable` trait describes a type that can be converted to a Float64. This trait requires the type to implement the `__float__()` method. @@ -36,10 +33,10 @@ trait Floatable: return self.i ``` - A `Foo` can now be converted to a `Float64` using `float`: + A `Foo` can now be converted to a `Float64`: ```mojo - var f = float(Foo(5.5)) + var f = Float64(Foo(5.5)) ``` **Note:** If the `__float__()` method can raise an error, use @@ -58,10 +55,7 @@ trait Floatable: trait FloatableRaising: """The `FloatableRaising` trait describes a type that can be converted to a - Float, but the conversion might raise an error (e.g.: a string). - - Any type that conforms to `FloatableRaising` works with the built-in `float` - function. + Float64, but the conversion might raise an error (e.g.: a string). This trait requires the type to implement the `__float__()` method, which can raise an error. @@ -81,11 +75,11 @@ trait FloatableRaising: return self.value[Float64] ``` - A `MaybeFloat` can now be converted to `Float64` using `float`: + A `MaybeFloat` can now be converted to `Float64`: ```mojo try: - print(float(MaybeFloat(4.6))) + print(Float64(MaybeFloat(4.6))) except: print("error occured") ``` @@ -103,6 +97,10 @@ trait FloatableRaising: ... +# FIXME(25.2): Move float deprecation warnings to compiler errors +@deprecated( + "the `float` function is deprecated, use the `Float64` constructor instead" +) @always_inline fn float[T: Floatable](value: T, /) -> Float64: """Get the Float representation of the value. @@ -119,6 +117,9 @@ fn float[T: Floatable](value: T, /) -> Float64: return value.__float__() +@deprecated( + "the `float` function is deprecated, use the `Float64` constructor instead" +) @always_inline fn float[T: FloatableRaising](value: T, /) raises -> Float64: """Get the Float representation of the value. @@ -138,8 +139,9 @@ fn float[T: FloatableRaising](value: T, /) raises -> Float64: return value.__float__() -# TODO: Int can't conform to Floatable at the moment due to circular -# dependency with SIMD. +@deprecated( + "the `float` function is deprecated, use the `Float64` constructor instead" +) @always_inline fn float(value: Int, /) -> Float64: """Get the Float representation of the Int. diff --git a/stdlib/src/builtin/int.mojo b/stdlib/src/builtin/int.mojo index 662ee68de0..367a5d507e 100644 --- a/stdlib/src/builtin/int.mojo +++ b/stdlib/src/builtin/int.mojo @@ -211,7 +211,7 @@ trait ImplicitlyIntable(Intable): # FIXME(25.2): Move `int` deprecation warnings to a compiler error @deprecated( - "the `int` function is deprecated, use the `Int` constructor instead." + "the `int` function is deprecated, use the `Int` constructor instead" ) @always_inline fn int[T: Intable](value: T) -> Int: @@ -230,7 +230,7 @@ fn int[T: Intable](value: T) -> Int: @deprecated( - "the `int` function is deprecated, use the `Int` constructor instead." + "the `int` function is deprecated, use the `Int` constructor instead" ) @always_inline fn int[T: IntableRaising](value: T) raises -> Int: @@ -252,7 +252,7 @@ fn int[T: IntableRaising](value: T) raises -> Int: @deprecated( - "the `int` function is deprecated, use the `Int` constructor instead." + "the `int` function is deprecated, use the `Int` constructor instead" ) fn int(value: StringSlice, base: Int = 10) raises -> Int: """Parses and returns the given string as an integer in the given base. @@ -293,7 +293,7 @@ fn int(value: StringSlice, base: Int = 10) raises -> Int: @deprecated( - "the `int` function is deprecated, use the `Int` constructor instead." + "the `int` function is deprecated, use the `Int` constructor instead" ) fn int(value: UInt) -> Int: """Get the Int representation of the value. @@ -635,7 +635,7 @@ struct Int( rhs: The value to divide on. Returns: - `float(self)/float(rhs)` value. + `Float64(self)/Float64(rhs)` value. """ return Float64(self) / Float64(rhs) diff --git a/stdlib/src/builtin/simd.mojo b/stdlib/src/builtin/simd.mojo index c01370d2cb..0a9cf32afa 100644 --- a/stdlib/src/builtin/simd.mojo +++ b/stdlib/src/builtin/simd.mojo @@ -388,7 +388,6 @@ struct SIMD[type: DType, size: Int]( @implicit fn __init__(out self, value: __mlir_type.index): _simd_construction_checks[type, size]() - var t0 = __mlir_op.`pop.cast_from_builtin`[ _type = __mlir_type.`!pop.scalar` ](value) @@ -399,6 +398,35 @@ struct SIMD[type: DType, size: Int]( _type = __mlir_type[`!pop.simd<`, size.value, `, `, type.value, `>`] ](casted) + @always_inline + fn __init__[T: Floatable](out self: Scalar[DType.float64], value: T): + """Initialize a Float64 from a type conforming to Floatable. + + Parameters: + T: The Floatable type. + + Args: + value: The object to get the float point representation of. + """ + self = value.__float__() + + @always_inline + fn __init__[ + T: FloatableRaising + ](out self: Scalar[DType.float64], value: T) raises: + """Initialize a Float64 from a type conforming to FloatableRaising. + + Parameters: + T: The FloatableRaising type. + + Args: + value: The object to get the float point representation of. + + Raises: + If the type does not have a float point representation. + """ + self = value.__float__() + @always_inline("nodebug") @implicit fn __init__(out self, value: IntLiteral): diff --git a/stdlib/src/builtin/str.mojo b/stdlib/src/builtin/str.mojo index f32bf25ee1..63ca502625 100644 --- a/stdlib/src/builtin/str.mojo +++ b/stdlib/src/builtin/str.mojo @@ -132,7 +132,7 @@ trait StringableRaising: # FIXME(25.2): Move `str` deprecation warnings to a compiler error @deprecated( - "the `str` function is deprecated, use the `String` constructor instead." + "the `str` function is deprecated, use the `String` constructor instead" ) @no_inline fn str[T: Stringable](value: T) -> String: @@ -152,7 +152,7 @@ fn str[T: Stringable](value: T) -> String: # FIXME(25.2): Move `str` deprecation warnings to a compiler error @deprecated( - "the `str` function is deprecated, use the `String` constructor instead." + "the `str` function is deprecated, use the `String` constructor instead" ) @no_inline fn str[T: StringableRaising](value: T) raises -> String: diff --git a/stdlib/src/builtin/string_literal.mojo b/stdlib/src/builtin/string_literal.mojo index deaf26f17f..65bbdff186 100644 --- a/stdlib/src/builtin/string_literal.mojo +++ b/stdlib/src/builtin/string_literal.mojo @@ -373,7 +373,7 @@ struct StringLiteral( Returns: A float value that represents the string, or otherwise raises. """ - return float(self.as_string_slice()) + return Float64(self.as_string_slice()) @no_inline fn __str__(self) -> String: diff --git a/stdlib/src/builtin/uint.mojo b/stdlib/src/builtin/uint.mojo index 81c04d48e9..3b2a7218da 100644 --- a/stdlib/src/builtin/uint.mojo +++ b/stdlib/src/builtin/uint.mojo @@ -263,7 +263,7 @@ struct UInt(Indexer, _HashableWithHasher): rhs: The value to divide on. Returns: - `float(self)/float(rhs)` value. + `Float64(self)/Float64(rhs)` value. """ return Float64(self) / Float64(rhs) diff --git a/stdlib/src/collections/string/format.mojo b/stdlib/src/collections/string/format.mojo index 425dfba341..34387e2856 100644 --- a/stdlib/src/collections/string/format.mojo +++ b/stdlib/src/collections/string/format.mojo @@ -530,7 +530,7 @@ struct _FormatSpec: In addition to the above presentation types, integers can be formatted with the floating-point presentation types listed below (except 'n' and None). - When doing so, float() is used to convert the integer to a floating-point + When doing so, Float64() is used to convert the integer to a floating-point number before formatting. The available presentation types for float and Decimal values are: diff --git a/stdlib/src/python/python_object.mojo b/stdlib/src/python/python_object.mojo index ccd039679b..86081cd0d0 100644 --- a/stdlib/src/python/python_object.mojo +++ b/stdlib/src/python/python_object.mojo @@ -1492,7 +1492,7 @@ struct PythonObject( cpython = _get_global_python_itf().cpython() return cpython.PyFloat_AsDouble(self.py_object) - @deprecated("Use `float(obj)` instead.") + @deprecated("Use `Float64(obj)` instead.") fn to_float64(self) -> Float64: """Returns a float representation of the object. diff --git a/stdlib/test/bit/test_bit.mojo b/stdlib/test/bit/test_bit.mojo index 246b3d193c..ff6e99752f 100644 --- a/stdlib/test/bit/test_bit.mojo +++ b/stdlib/test/bit/test_bit.mojo @@ -506,7 +506,7 @@ def test_rotate_bits_simd(): fn _log2_floor(n: Int) -> Int: - return Int(floor(log2(float(n)))) + return Int(floor(log2(Float64(n)))) def test_log2_floor(): diff --git a/stdlib/test/builtin/test_deprecation_warnings.mojo b/stdlib/test/builtin/test_deprecation_warnings.mojo index d7a36cdecb..46499a0d89 100644 --- a/stdlib/test/builtin/test_deprecation_warnings.mojo +++ b/stdlib/test/builtin/test_deprecation_warnings.mojo @@ -14,6 +14,12 @@ fn main(): - # FIXME(25.1): Move `int` deprecation warnings to a compiler error + # FIXME(25.2): Move deprecation warnings to compiler errors # CHECK-STDERR: warning: the `int` function is deprecated, use the `Int` constructor instead _ = int(42) + # CHECK-STDERR: warning: the `str` function is deprecated, use the `String` constructor instead + _ = str(0) + # CHECK-STDERR: warning: the `bool` function is deprecated, use the `Bool` constructor instead + _ = bool(False) + # CHECK-STDERR: warning: the `float` function is deprecated, use the `Float64` constructor instead + _ = float(42.4) diff --git a/stdlib/test/builtin/test_int.mojo b/stdlib/test/builtin/test_int.mojo index ad487d7241..d2d0149413 100644 --- a/stdlib/test/builtin/test_int.mojo +++ b/stdlib/test/builtin/test_int.mojo @@ -230,7 +230,7 @@ def test_comparison(): def test_float_conversion(): - assert_equal(float(Int(45)), Float64(45)) + assert_equal(Float64(Int(45)), Float64(45)) def test_conversion_from_python(): diff --git a/stdlib/test/builtin/test_simd.mojo b/stdlib/test/builtin/test_simd.mojo index 3d83ed1bec..eb92b4f886 100644 --- a/stdlib/test/builtin/test_simd.mojo +++ b/stdlib/test/builtin/test_simd.mojo @@ -1850,9 +1850,9 @@ def test_comparison(): def test_float_conversion(): - assert_almost_equal(float(Int32(45)), 45.0) - assert_almost_equal(float(Float32(34.32)), 34.32) - assert_almost_equal(float(UInt64(36)), 36.0) + assert_almost_equal(Float64(Int32(45)), 45.0) + assert_almost_equal(Float64(Float32(34.32)), 34.32) + assert_almost_equal(Float64(UInt64(36)), 36.0) def test_reversed(): diff --git a/stdlib/test/builtin/test_string_literal.mojo b/stdlib/test/builtin/test_string_literal.mojo index fb86aecebb..24193369e0 100644 --- a/stdlib/test/builtin/test_string_literal.mojo +++ b/stdlib/test/builtin/test_string_literal.mojo @@ -481,7 +481,7 @@ def test_splitlines(): def test_float_conversion(): assert_equal(("4.5").__float__(), 4.5) - assert_equal(float("4.5"), 4.5) + assert_equal(Float64("4.5"), 4.5) with assert_raises(): _ = ("not a float").__float__() diff --git a/stdlib/test/collections/string/test_string.mojo b/stdlib/test/collections/string/test_string.mojo index f3c2cf034f..3a7b1b86d9 100644 --- a/stdlib/test/collections/string/test_string.mojo +++ b/stdlib/test/collections/string/test_string.mojo @@ -1437,9 +1437,9 @@ def test_float_conversion(): # This is basically just a wrapper around atof which is # more throughouly tested above assert_equal(String("4.5").__float__(), 4.5) - assert_equal(float(String("4.5")), 4.5) + assert_equal(Float64(String("4.5")), 4.5) with assert_raises(): - _ = float(String("not a float")) + _ = Float64(String("not a float")) def test_slice_contains(): From cad1b0157ae8bc83ef7cd0965b11700c6c3c51a4 Mon Sep 17 00:00:00 2001 From: Jack Clayton Date: Thu, 16 Jan 2025 01:32:25 -0500 Subject: [PATCH 251/509] [stdlib] Update changelog for str, int, bool, float deprecation Add a table explaining the deprecations. MODULAR_ORIG_COMMIT_REV_ID: 73efc329dbf3fe8838f4b3be3bbdb903a2be14d2 --- docs/changelog.md | 25 ++++++++++++++++++------- 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/docs/changelog.md b/docs/changelog.md index 0dde1eb064..85509a43ad 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -71,7 +71,7 @@ what we publish. var vals: List[Int] fn __init__(out self): - self.vals = List[Int](0, 1, 2, 3, 4) + self.vals = List[Int](0, 1, 2) fn __getitem__(self, idx: Int) -> Int: return self.vals[idx] @@ -100,12 +100,23 @@ what we publish. ### Standard library changes -- These functions have been deprecated: `int`, `str` in favor of constructors: - `Int`, `String`. The functions were a temporary workaround for when Mojo - didn't have a way to distinguish between implicit and explicit constructors. - You can do a search and replace e.g. from `int(` to `Int(` to update your - programs. This release will show a deprecation warning for the old functions, - and they'll be removed in the next release. +- The free floating functions for constructing different types have been + deprecated for actual constructors: + + ```plaintext + before after + ------------------ + int() Int() + str() String() + bool() Bool() + float() Float64() + ``` + + These functions were a workaround before Mojo had a way to distinguish between + implicit and explicit constructors. For this release you'll get a deprecation + warning, and in the next release they'll become compiler errors. You can + quickly update your code by doing a `Match Case` and `Match Whole Word` + search and replace for `int(` to `Int(` etc. - `UnsafePointer`'s `bitcast` method has now been split into `bitcast` for changing the type, `origin_cast` for changing mutability, From 70985395fc6d41b05a6e096ead521fdd29663057 Mon Sep 17 00:00:00 2001 From: abdul dakkak Date: Thu, 16 Jan 2025 08:07:34 -0800 Subject: [PATCH 252/509] [stdlib] Clean up linked list implementation Removed unnecessary assignments to `prev` and `next` pointers during the destruction of linked list elements. Added a check to reset the `_head` pointer when the list becomes empty after an element is removed. This simplifies the code and improves clarity. NFC. MODULAR_ORIG_COMMIT_REV_ID: 7eaaae04d8b5997bbafa012ea292ca25a8d8b108 --- stdlib/src/collections/linked_list.mojo | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/stdlib/src/collections/linked_list.mojo b/stdlib/src/collections/linked_list.mojo index 9591374a33..c21becfb5f 100644 --- a/stdlib/src/collections/linked_list.mojo +++ b/stdlib/src/collections/linked_list.mojo @@ -157,8 +157,6 @@ struct LinkedList[ElementType: WritableCollectionElement]: var curr = self._head while curr: var next = curr[].next - curr[].prev = __type_of(self._head)() - curr[].next = __type_of(self._tail)() curr.destroy_pointee() curr.free() curr = next @@ -217,6 +215,8 @@ struct LinkedList[ElementType: WritableCollectionElement]: var value = elem[].value self._tail = elem[].prev self._size -= 1 + if self._size == 0: + self._head = __type_of(self._head)() return value^ fn copy(self) -> Self: From 5e0ed4a96d9f89e4fd053f54dc8e2686087eb7a9 Mon Sep 17 00:00:00 2001 From: Jack Clayton Date: Thu, 16 Jan 2025 11:23:56 -0500 Subject: [PATCH 253/509] [stdlib] Buffer `String.write(*args)` to the stack Remove the movable requirement from the writer on _WriteBufferStack and take a reference instead, `Sting` couldn't be moved in as the `writer` and then moved back out. This allows buffering when writing args to the `String.write` static method. MODULAR_ORIG_COMMIT_REV_ID: f1b8cadfa9773247fde00ab10eadf4959ac39302 --- stdlib/src/collections/string/string.mojo | 13 ++++++------ stdlib/src/utils/write.mojo | 26 ++++++++++------------- 2 files changed, 18 insertions(+), 21 deletions(-) diff --git a/stdlib/src/collections/string/string.mojo b/stdlib/src/collections/string/string.mojo index 5293633eb6..f8cfefa75f 100644 --- a/stdlib/src/collections/string/string.mojo +++ b/stdlib/src/collections/string/string.mojo @@ -19,6 +19,7 @@ from os import abort from sys import bitwidthof, llvm_intrinsic from sys.ffi import c_char from sys.intrinsics import _type_is_eq +from utils.write import write_buffered from bit import count_leading_zeros from memory import UnsafePointer, memcmp, memcpy, Span @@ -742,9 +743,9 @@ struct String( ``` . """ - var output = String() - write_args(output, args, sep=sep, end=end) - return output^ + var string = String() + write_buffered[buffer_size=4096](string, args, sep=sep, end=end) + return string^ @staticmethod @no_inline @@ -784,9 +785,9 @@ struct String( ``` . """ - var output = String() - write_args(output, args, sep=sep, end=end) - return output^ + var string = String() + write_buffered[buffer_size=4096](string, args, sep=sep, end=end) + return string^ @staticmethod @always_inline diff --git a/stdlib/src/utils/write.mojo b/stdlib/src/utils/write.mojo index a46ecefbee..71d2542120 100644 --- a/stdlib/src/utils/write.mojo +++ b/stdlib/src/utils/write.mojo @@ -217,12 +217,6 @@ fn write_args[ end.write_to(writer) -trait MovableWriter(Movable, Writer): - """Allows moving a Writer into a buffer.""" - - ... - - struct _WriteBufferHeap(Writer): var data: UnsafePointer[UInt8] var pos: Int @@ -272,19 +266,21 @@ struct _ArgBytes(Writer): args.each[write_arg]() -struct _WriteBufferStack[W: MovableWriter, //, capacity: Int](Writer): +struct _WriteBufferStack[origin: MutableOrigin, W: Writer, //, capacity: Int]( + Writer +): var data: InlineArray[UInt8, capacity] var pos: Int - var writer: W + var writer: Pointer[W, origin] @implicit - fn __init__(out self, owned writer: W): + fn __init__(out self, ref [origin]writer: W): self.data = InlineArray[UInt8, capacity](unsafe_uninitialized=True) self.pos = 0 - self.writer = writer^ + self.writer = Pointer.address_of(writer) fn flush(mut self): - self.writer.write_bytes( + self.writer[].write_bytes( Span[Byte, ImmutableAnyOrigin]( ptr=self.data.unsafe_ptr(), length=self.pos ) @@ -299,7 +295,7 @@ struct _WriteBufferStack[W: MovableWriter, //, capacity: Int](Writer): # If span is too large to fit in buffer, write directly and return if len_bytes > capacity: self.flush() - self.writer.write_bytes(bytes) + self.writer[].write_bytes(bytes) return # If buffer would overflow, flush writer and reset pos to 0. if self.pos + len_bytes > capacity: @@ -317,11 +313,11 @@ struct _WriteBufferStack[W: MovableWriter, //, capacity: Int](Writer): fn write_buffered[ - W: MovableWriter, //, + W: Writer, //, *Ts: Writable, buffer_size: Int, ]( - owned writer: W, + mut writer: W, args: VariadicPack[_, Writable, *Ts], *, sep: StaticString = "", @@ -379,6 +375,6 @@ fn write_buffered[ Span[Byte, ImmutableAnyOrigin](ptr=buffer.data, length=buffer.pos) ) else: - var buffer = _WriteBufferStack[buffer_size](writer^) + var buffer = _WriteBufferStack[buffer_size](writer) write_args(buffer, args, sep=sep, end=end) buffer.flush() From 6598d90451ed596c091b9485a7c388f24109c7e1 Mon Sep 17 00:00:00 2001 From: Connor Gray Date: Thu, 16 Jan 2025 14:33:47 -0600 Subject: [PATCH 254/509] [stdlib] feat: Add `String.chars()` and `.char_slices()` + deprecate `__iter__()` These methods are trivial wrappers around the existing `StringSlice` iterator methods. This also marks `String.__iter__()` as deprecated. Users should move to either `.chars()` or `.char_slices()` to be explicit about what kind of iterator element their use-case requires. MODULAR_ORIG_COMMIT_REV_ID: 43246f89bc456b776fa862c483823e81e233ec03 --- docs/changelog.md | 24 ++++++ stdlib/src/collections/string/__init__.mojo | 2 +- stdlib/src/collections/string/string.mojo | 86 +++++++++++++++++-- .../test/collections/string/test_string.mojo | 31 +++++-- 4 files changed, 128 insertions(+), 15 deletions(-) diff --git a/docs/changelog.md b/docs/changelog.md index 85509a43ad..50d62e1dde 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -212,6 +212,30 @@ what we publish. - `b16encode()` - `b16decode()` +- Added new `String.chars()` and `String.char_slices()` iterator methods, and + deprecated the existing `String.__iter__()` method. + + Different use-cases may prefer iterating over the `Char`s encoded in a string, + or iterating over subslices containing single characters. Neither iteration + semantics is an obvious default, so the existing `__iter__()` method has been + deprecated in favor of writing explicit iteration methods for the time being. + + Code of the form: + + ```mojo + var s: String = ... + for c in s: + # ... + ``` + + can be migrated to using the `.char_slices()` method: + + ```mojo + var s: String = ... + for c in s.char_slices(): + # ... + ``` + - Various functionality has moved from `String` and `StringRef` to the more general `StringSlice` type. diff --git a/stdlib/src/collections/string/__init__.mojo b/stdlib/src/collections/string/__init__.mojo index 0b7a981d4c..cfa4894938 100644 --- a/stdlib/src/collections/string/__init__.mojo +++ b/stdlib/src/collections/string/__init__.mojo @@ -20,4 +20,4 @@ from .string import ( chr, ord, ) -from .string_slice import StringSlice, StaticString +from .string_slice import StringSlice, StaticString, CharsIter diff --git a/stdlib/src/collections/string/string.mojo b/stdlib/src/collections/string/string.mojo index f8cfefa75f..58727d8927 100644 --- a/stdlib/src/collections/string/string.mojo +++ b/stdlib/src/collections/string/string.mojo @@ -13,6 +13,7 @@ """Implements basic object methods for working with strings.""" from collections import KeyElement, List, Optional +from collections.string import CharsIter from collections._index_normalization import normalize_index from hashlib._hasher import _HashableWithHasher, _Hasher from os import abort @@ -1030,15 +1031,14 @@ struct String( """ self._iadd[False](other.as_bytes()) + @deprecated("Use `str.chars()` or `str.char_slices()` instead.") fn __iter__(self) -> _StringSliceIter[__origin_of(self)]: """Iterate over the string, returning immutable references. Returns: An iterator of references to the string elements. """ - return _StringSliceIter[__origin_of(self)]( - ptr=self.unsafe_ptr(), length=self.byte_length() - ) + return self.char_slices() fn __reversed__(self) -> _StringSliceIter[__origin_of(self), False]: """Iterate backwards over the string, returning immutable references. @@ -1252,6 +1252,76 @@ struct String( buf.append(0) return String(buf^) + @always_inline + fn chars(self) -> CharsIter[__origin_of(self)]: + """Returns an iterator over the `Char`s encoded in this string slice. + + Returns: + An iterator type that returns successive `Char` values stored in + this string slice. + + # Examples + + Print the characters in a string: + + ```mojo + from testing import assert_equal + + var s = String("abc") + var iter = s.chars() + assert_equal(iter.__next__(), Char.ord("a")) + assert_equal(iter.__next__(), Char.ord("b")) + assert_equal(iter.__next__(), Char.ord("c")) + assert_equal(iter.__has_next__(), False) + ``` + + `chars()` iterates over Unicode codepoints, and supports multibyte + codepoints: + + ```mojo + from testing import assert_equal + + # A visual character composed of a combining sequence of 2 codepoints. + var s = String("á") + assert_equal(s.byte_length(), 3) + + var iter = s.chars() + assert_equal(iter.__next__(), Char.ord("a")) + # U+0301 Combining Acute Accent + assert_equal(iter.__next__().to_u32(), 0x0301) + assert_equal(iter.__has_next__(), False) + ``` + . + """ + return self.as_string_slice().chars() + + fn char_slices(self) -> _StringSliceIter[__origin_of(self)]: + """Returns an iterator over single-character slices of this string. + + Each returned slice points to a single Unicode codepoint encoded in the + underlying UTF-8 representation of this string. + + Returns: + An iterator of references to the string elements. + + # Examples + + Iterate over the character slices in a string: + + ```mojo + from testing import assert_equal, assert_true + + var s = String("abc") + var iter = s.char_slices() + assert_true(iter.__next__() == "a") + assert_true(iter.__next__() == "b") + assert_true(iter.__next__() == "c") + assert_equal(iter.__has_next__(), False) + ``` + . + """ + return self.as_string_slice().char_slices() + fn unsafe_ptr( ref self, ) -> UnsafePointer[ @@ -1494,7 +1564,7 @@ struct String( while lhs <= str_byte_len: # Python adds all "whitespace chars" as one separator # if no separator was specified - for s in self[lhs:]: + for s in self[lhs:].char_slices(): if not s.isspace(): break lhs += s.byte_length() @@ -1508,7 +1578,9 @@ struct String( output.append(self[str_byte_len]) break rhs = lhs + num_bytes(self.unsafe_ptr()[lhs]) - for s in self[lhs + num_bytes(self.unsafe_ptr()[lhs]) :]: + for s in self[ + lhs + num_bytes(self.unsafe_ptr()[lhs]) : + ].char_slices(): if s.isspace(): break rhs += s.byte_length() @@ -1863,7 +1935,7 @@ struct String( """ if not self: return False - for char in self.as_string_slice().chars(): + for char in self.chars(): if not char.is_ascii_digit(): return False return True @@ -1896,7 +1968,7 @@ struct String( Returns: True if all characters are printable else False. """ - for char in self.as_string_slice().chars(): + for char in self.chars(): if not char.is_ascii_printable(): return False return True diff --git a/stdlib/test/collections/string/test_string.mojo b/stdlib/test/collections/string/test_string.mojo index 3a7b1b86d9..945406f046 100644 --- a/stdlib/test/collections/string/test_string.mojo +++ b/stdlib/test/collections/string/test_string.mojo @@ -1115,13 +1115,29 @@ def test_indexing(): assert_equal(a[2], "c") -def test_string_iter(): +def test_string_chars_iter(): + var s = String("abc") + var iter = s.chars() + assert_equal(iter.__next__(), Char.ord("a")) + assert_equal(iter.__next__(), Char.ord("b")) + assert_equal(iter.__next__(), Char.ord("c")) + assert_equal(iter.__has_next__(), False) + + +def test_string_char_slices_iter(): + var s0 = String("abc") + var s0_iter = s0.char_slices() + assert_true(s0_iter.__next__() == "a") + assert_true(s0_iter.__next__() == "b") + assert_true(s0_iter.__next__() == "c") + assert_equal(s0_iter.__has_next__(), False) + var vs = String("123") # Borrow immutably fn conc(vs: String) -> String: var c = String("") - for v in vs: + for v in vs.char_slices(): c += v return c @@ -1132,18 +1148,18 @@ def test_string_iter(): concat += v assert_equal(321, atol(concat)) - for v in vs: + for v in vs.char_slices(): v.unsafe_ptr().origin_cast[mut=True]()[] = ord("1") # Borrow immutably - for v in vs: + for v in vs.char_slices(): concat += v assert_equal(321111, atol(concat)) var idx = -1 vs = String("mojo🔥") - var iterator = vs.__iter__() + var iterator = vs.char_slices() assert_equal(5, len(iterator)) var item = iterator.__next__() assert_equal(String("m"), String(item)) @@ -1193,7 +1209,7 @@ def test_string_iter(): var ptr = item.unsafe_ptr() var amnt_characters = 0 var byte_idx = 0 - for v in item: + for v in item.char_slices(): var byte_len = v.byte_length() for i in range(byte_len): assert_equal(ptr[byte_idx + i], v.unsafe_ptr()[i]) @@ -1496,7 +1512,8 @@ def main(): test_intable() test_string_mul() test_indexing() - test_string_iter() + test_string_chars_iter() + test_string_char_slices_iter() test_format_args() test_format_conversion_flags() test_isdigit() From 1d41443071a91e46a1ce206eaadefb0c4ac3920c Mon Sep 17 00:00:00 2001 From: abdul dakkak Date: Thu, 16 Jan 2025 12:35:36 -0800 Subject: [PATCH 255/509] [Stdlib] Optimize accesses based on requested position, NFC This performs a micro optimization to pick whether to traverse from the head or the tail based on the requested index. Fixes a bug in the reverse function which is uncovered here. MODULAR_ORIG_COMMIT_REV_ID: a09acb219346957cd915682a9b6794d241b50d44 --- stdlib/src/collections/linked_list.mojo | 45 ++++++++++++++++++------- 1 file changed, 32 insertions(+), 13 deletions(-) diff --git a/stdlib/src/collections/linked_list.mojo b/stdlib/src/collections/linked_list.mojo index c21becfb5f..515b6404a0 100644 --- a/stdlib/src/collections/linked_list.mojo +++ b/stdlib/src/collections/linked_list.mojo @@ -202,8 +202,8 @@ struct LinkedList[ElementType: WritableCollectionElement]: curr[].next = prev prev = curr curr = next + self._tail = self._head self._head = prev - self._tail = self._head[].prev fn pop(mut self) -> ElementType: """Remove and return the first element of the list. @@ -232,6 +232,33 @@ struct LinkedList[ElementType: WritableCollectionElement]: curr = curr[].next return new^ + fn _get_node_ptr(ref self, index: Int) -> UnsafePointer[Node[ElementType]]: + """Get a pointer to the node at the specified index. + + This method optimizes traversal by starting from either the head or tail + depending on which is closer to the target index. + + Args: + index: The index of the node to get. + + Returns: + A pointer to the node at the specified index. + """ + var l = len(self) + var i = normalize_index[container_name="LinkedList"](index, self) + debug_assert(0 <= i < l, "index out of bounds") + var mid = l // 2 + if i <= mid: + var curr = self._head + for _ in range(i): + curr = curr[].next + return curr + else: + var curr = self._tail + for _ in range(l - i - 1): + curr = curr[].prev + return curr + fn __getitem__(ref self, index: Int) -> ref [self] ElementType: """Get the element at the specified index. @@ -241,12 +268,8 @@ struct LinkedList[ElementType: WritableCollectionElement]: Returns: The element at the specified index. """ - var curr = self._head - for _ in range( - normalize_index[container_name="LinkedList"](index, self) - ): - curr = curr[].next - return curr[].value + debug_assert(len(self) > 0, "unable to get item from empty list") + return self._get_node_ptr(index)[].value fn __setitem__(mut self, index: Int, owned value: ElementType): """Set the element at the specified index. @@ -255,12 +278,8 @@ struct LinkedList[ElementType: WritableCollectionElement]: index: The index of the element to set. value: The new value to set. """ - var curr = self._head - for _ in range( - normalize_index[container_name="LinkedList"](index, self) - ): - curr = curr[].next - curr[].value = value^ + debug_assert(len(self) > 0, "unable to set item from empty list") + self._get_node_ptr(index)[].value = value^ fn __len__(self) -> Int: """Get the number of elements in the list. From e9ce5dcf0ec242ac870c7b7ee82ea007cf135a6c Mon Sep 17 00:00:00 2001 From: Connor Gray Date: Thu, 16 Jan 2025 15:35:42 -0600 Subject: [PATCH 256/509] [stdlib] polish: Change string `__len__()` methods to return length in bytes MODULAR_ORIG_COMMIT_REV_ID: 7f87f1d40ee48279b20abac457d7bf3d2b326e5d --- docs/changelog.md | 13 +++ stdlib/src/collections/string/string.mojo | 46 ++++++++--- .../src/collections/string/string_slice.mojo | 81 ++++++++++++++++++- .../test/collections/string/test_string.mojo | 15 ++++ .../collections/string/test_string_slice.mojo | 36 +++++---- 5 files changed, 162 insertions(+), 29 deletions(-) diff --git a/docs/changelog.md b/docs/changelog.md index 50d62e1dde..5c87c6b054 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -236,6 +236,19 @@ what we publish. # ... ``` +- The `String.__len__()` and `StringSlice.__len__()` methods now return the + length of the string in bytes. + + Previously, these methods were documented to note that they would eventually + return a length in Unicode codepoints. They have been changed to guarantee + a length in bytes, since the length in bytes is how they are most often used + today (for example, as bounds to low-level memory manipulation logic). + Additionally, length in codepoints is a more specialized notion of string + length that is rarely the correct metric. + + Users that know they need the length in codepoints can use the + `str.char_length()` method, or `len(str.chars())`. + - Various functionality has moved from `String` and `StringRef` to the more general `StringSlice` type. diff --git a/stdlib/src/collections/string/string.mojo b/stdlib/src/collections/string/string.mojo index 58727d8927..bd6340cbf5 100644 --- a/stdlib/src/collections/string/string.mojo +++ b/stdlib/src/collections/string/string.mojo @@ -1063,22 +1063,46 @@ struct String( """ return self.byte_length() > 0 + @always_inline fn __len__(self) -> Int: - """Gets the string length, in bytes (for now) PREFER: - String.byte_length(), a future version will make this method return - Unicode codepoints. + """Get the string length of in bytes. + + This function returns the number of bytes in the underlying UTF-8 + representation of the string. + + To get the number of Unicode codepoints in a string, use + `len(str.chars())`. Returns: - The string length, in bytes (for now). - """ - var unicode_length = self.byte_length() + The string length in bytes. + + # Examples - # TODO: everything uses this method assuming it's byte length - # for i in range(unicode_length): - # if _utf8_byte_type(self._buffer[i]) == 1: - # unicode_length -= 1 + Query the length of a string, in bytes and Unicode codepoints: - return unicode_length + ```mojo + from testing import assert_equal + + var s = String("ನಮಸ್ಕಾರ") + + assert_equal(len(s), 21) + assert_equal(len(s.chars()), 7) + ``` + + Strings containing only ASCII characters have the same byte and + Unicode codepoint length: + + ```mojo + from testing import assert_equal + + var s = String("abc") + + assert_equal(len(s), 3) + assert_equal(len(s.chars()), 3) + ``` + . + """ + return self.byte_length() @always_inline fn __str__(self) -> String: diff --git a/stdlib/src/collections/string/string_slice.mojo b/stdlib/src/collections/string/string_slice.mojo index c6425bf838..5f0bf7ec7b 100644 --- a/stdlib/src/collections/string/string_slice.mojo +++ b/stdlib/src/collections/string/string_slice.mojo @@ -547,13 +547,48 @@ struct StringSlice[mut: Bool, //, origin: Origin[mut]]( else: return "'" + result + "'" + @always_inline fn __len__(self) -> Int: - """Nominally returns the _length in Unicode codepoints_ (not bytes!). + """Get the string length in bytes. + + This function returns the number of bytes in the underlying UTF-8 + representation of the string. + + To get the number of Unicode codepoints in a string, use + `len(str.chars())`. Returns: - The length in Unicode codepoints. + The string length in bytes. + + # Examples + + Query the length of a string, in bytes and Unicode codepoints: + + ```mojo + from collections.string import StringSlice + from testing import assert_equal + + var s = StringSlice("ನಮಸ್ಕಾರ") + + assert_equal(len(s), 21) + assert_equal(len(s.chars()), 7) + ``` + + Strings containing only ASCII characters have the same byte and + Unicode codepoint length: + + ```mojo + from collections.string import StringSlice + from testing import assert_equal + + var s = StringSlice("abc") + + assert_equal(len(s), 3) + assert_equal(len(s.chars()), 3) + ``` + . """ - return self.char_length() + return self.byte_length() fn write_to[W: Writer](self, mut writer: W): """Formats this string slice to the provided `Writer`. @@ -1012,6 +1047,46 @@ struct StringSlice[mut: Bool, //, origin: Origin[mut]]( Returns: The length in Unicode codepoints. + + # Examples + + Query the length of a string, in bytes and Unicode codepoints: + + ```mojo + from collections.string import StringSlice + from testing import assert_equal + + var s = StringSlice("ನಮಸ್ಕಾರ") + + assert_equal(s.char_length(), 7) + assert_equal(len(s), 21) + ``` + + Strings containing only ASCII characters have the same byte and + Unicode codepoint length: + + ```mojo + from collections.string import StringSlice + from testing import assert_equal + + var s = StringSlice("abc") + + assert_equal(s.char_length(), 3) + assert_equal(len(s), 3) + ``` + + The character length of a string with visual combining characters is + the length in Unicode codepoints, not grapheme clusters: + + ```mojo + from collections.string import StringSlice + from testing import assert_equal + + var s = StringSlice("á") + assert_equal(s.char_length(), 2) + assert_equal(s.byte_length(), 3) + ``` + . """ # Every codepoint is encoded as one leading byte + 0 to 3 continuation # bytes. diff --git a/stdlib/test/collections/string/test_string.mojo b/stdlib/test/collections/string/test_string.mojo index 945406f046..fd070192d4 100644 --- a/stdlib/test/collections/string/test_string.mojo +++ b/stdlib/test/collections/string/test_string.mojo @@ -89,6 +89,20 @@ def test_copy(): assert_equal("fine", s1) +def test_len(): + # String length is in bytes, not codepoints. + var s0 = String("ನಮಸ್ಕಾರ") + + assert_equal(len(s0), 21) + assert_equal(len(s0.chars()), 7) + + # For ASCII string, the byte and codepoint length are the same: + var s1 = String("abc") + + assert_equal(len(s1), 3) + assert_equal(len(s1.chars()), 3) + + def test_equality_operators(): var s0 = String("abc") var s1 = String("def") @@ -1475,6 +1489,7 @@ def test_reserve(): def main(): test_constructors() test_copy() + test_len() test_equality_operators() test_comparison_operators() test_add() diff --git a/stdlib/test/collections/string/test_string_slice.mojo b/stdlib/test/collections/string/test_string_slice.mojo index 105c88c159..166bbbf297 100644 --- a/stdlib/test/collections/string/test_string_slice.mojo +++ b/stdlib/test/collections/string/test_string_slice.mojo @@ -151,23 +151,22 @@ fn test_heap_string_from_string_slice() raises: fn test_slice_len() raises: - alias str1: StringLiteral = "12345" - alias str2: StringLiteral = "1234" - alias str3: StringLiteral = "123" - alias str4: StringLiteral = "12" - alias str5: StringLiteral = "1" + assert_equal(5, len(StringSlice("12345"))) + assert_equal(4, len(StringSlice("1234"))) + assert_equal(3, len(StringSlice("123"))) + assert_equal(2, len(StringSlice("12"))) + assert_equal(1, len(StringSlice("1"))) + assert_equal(0, len(StringSlice(""))) - alias slice1 = str1.as_string_slice() - alias slice2 = str2.as_string_slice() - alias slice3 = str3.as_string_slice() - alias slice4 = str4.as_string_slice() - alias slice5 = str5.as_string_slice() + # String length is in bytes, not codepoints. + var s0 = String("ನಮಸ್ಕಾರ") + assert_equal(len(s0), 21) + assert_equal(len(s0.chars()), 7) - assert_equal(5, len(slice1)) - assert_equal(4, len(slice2)) - assert_equal(3, len(slice3)) - assert_equal(2, len(slice4)) - assert_equal(1, len(slice5)) + # For ASCII string, the byte and codepoint length are the same: + var s1 = String("abc") + assert_equal(len(s1), 3) + assert_equal(len(s1.chars()), 3) fn test_slice_char_length() raises: @@ -189,6 +188,13 @@ fn test_slice_char_length() raises: assert_equal(s3.byte_length(), 37) assert_equal(s3.char_length(), 19) + # Character length is codepoints, not graphemes + # This is thumbs up + a skin tone modifier codepoint. + var s4 = StringSlice("👍🏻") + assert_equal(s4.byte_length(), 8) + assert_equal(s4.char_length(), 2) + # TODO: assert_equal(s4.grapheme_count(), 1) + fn test_slice_eq() raises: var str1: String = "12345" From 7269824740efa77863bd979cc9f9c5e912fcf2ed Mon Sep 17 00:00:00 2001 From: Jack Clayton Date: Thu, 16 Jan 2025 17:15:35 -0500 Subject: [PATCH 257/509] [stdlib] Add default buffer size of 4096 to `write_buffered` Sane default for `write_buffered`. MODULAR_ORIG_COMMIT_REV_ID: e74b4e7b76dfd21c13c93ab4c29b9b9e8ca70c45 --- stdlib/src/builtin/file.mojo | 2 +- stdlib/src/collections/string/string.mojo | 4 ++-- stdlib/src/tempfile/tempfile.mojo | 2 +- stdlib/src/utils/write.mojo | 17 +++++++++++------ 4 files changed, 15 insertions(+), 10 deletions(-) diff --git a/stdlib/src/builtin/file.mojo b/stdlib/src/builtin/file.mojo index 4aa4784f1b..7851c20868 100644 --- a/stdlib/src/builtin/file.mojo +++ b/stdlib/src/builtin/file.mojo @@ -424,7 +424,7 @@ struct FileHandle: args: Sequence of arguments to write to this Writer. """ var file = FileDescriptor(self._get_raw_fd()) - write_buffered[buffer_size=4096](file, args) + write_buffered(file, args) fn _write[ address_space: AddressSpace diff --git a/stdlib/src/collections/string/string.mojo b/stdlib/src/collections/string/string.mojo index bd6340cbf5..b5b28d7b79 100644 --- a/stdlib/src/collections/string/string.mojo +++ b/stdlib/src/collections/string/string.mojo @@ -745,7 +745,7 @@ struct String( . """ var string = String() - write_buffered[buffer_size=4096](string, args, sep=sep, end=end) + write_buffered(string, args, sep=sep, end=end) return string^ @staticmethod @@ -787,7 +787,7 @@ struct String( . """ var string = String() - write_buffered[buffer_size=4096](string, args, sep=sep, end=end) + write_buffered(string, args, sep=sep, end=end) return string^ @staticmethod diff --git a/stdlib/src/tempfile/tempfile.mojo b/stdlib/src/tempfile/tempfile.mojo index a493c02230..02249d4cfd 100644 --- a/stdlib/src/tempfile/tempfile.mojo +++ b/stdlib/src/tempfile/tempfile.mojo @@ -415,7 +415,7 @@ struct NamedTemporaryFile: args: Sequence of arguments to write to this Writer. """ var file = FileDescriptor(self._file_handle._get_raw_fd()) - write_buffered[buffer_size=4096](file, args) + write_buffered(file, args) @always_inline fn write_bytes(mut self, bytes: Span[Byte, _]): diff --git a/stdlib/src/utils/write.mojo b/stdlib/src/utils/write.mojo index 71d2542120..a022102d36 100644 --- a/stdlib/src/utils/write.mojo +++ b/stdlib/src/utils/write.mojo @@ -315,7 +315,7 @@ struct _WriteBufferStack[origin: MutableOrigin, W: Writer, //, capacity: Int]( fn write_buffered[ W: Writer, //, *Ts: Writable, - buffer_size: Int, + buffer_size: Int = 4096, ]( mut writer: W, args: VariadicPack[_, Writable, *Ts], @@ -328,11 +328,11 @@ fn write_buffered[ the buffer would overflow it writes to the `writer` passed in. You can also add seperators between the args, and end characters. - Parameters: W: The type of the `Writer` to write to. Ts: The types of each arg to write. Each type must satisfy `Writable`. - buffer_size: How many bytes to write to a buffer before writing out. + buffer_size: How many bytes to write to a buffer before writing out to + the `writer` (default `4096`). Args: writer: The `Writer` to write to. @@ -349,8 +349,13 @@ fn write_buffered[ fn print_err_buffered[*Ts: Writable]( *args: *Ts, sep: StringLiteral, end: StringLiteral ): - var stdout = sys.stderr - write_buffered[buffer_size=4096](stdout, args, sep=sep, end=end) + var stderr = sys.stderr + write_buffered(stdout, args, sep=sep, end=end) + + # Buffer before allocating a string + var string = String() + write_buffered(string, args, sep=sep, end=end) + print_err_buffered(3, "total", "args", sep=",", end="[end]") ``` @@ -363,11 +368,11 @@ fn write_buffered[ @parameter if is_nvidia_gpu(): - # Stack space is very small on GPU due to many threads, so use heap # Count the total length of bytes to allocate only once var arg_bytes = _ArgBytes() write_args(arg_bytes, args, sep=sep, end=end) + # Stack space is very small on GPU due to many threads, so use heap var buffer = _WriteBufferHeap(arg_bytes.size + 1) write_args(buffer, args, sep=sep, end=end) buffer.data[buffer.pos] = 0 From 168cde948b127b685568c66cf8c8f123cfb12909 Mon Sep 17 00:00:00 2001 From: bgreni <42788181+bgreni@users.noreply.github.com> Date: Thu, 16 Jan 2025 14:48:25 -0800 Subject: [PATCH 258/509] [External] [stdlib] Use out param for __next__() in more iterators (#54072) [External] [stdlib] Use out param for __next__() in more iterators Apply the change from https://github.com/modularml/mojo/pull/3941 to other iterators where it applies. Co-authored-by: bgreni <42788181+bgreni@users.noreply.github.com> Closes modularml/mojo#3952 MODULAR_ORIG_COMMIT_REV_ID: 9d96b4c3da86b8a5f4e990a6029dddc8fc7bc84d --- stdlib/src/collections/deque.mojo | 6 +++--- stdlib/src/collections/inline_list.mojo | 8 +++----- stdlib/src/memory/span.mojo | 8 +++----- 3 files changed, 9 insertions(+), 13 deletions(-) diff --git a/stdlib/src/collections/deque.mojo b/stdlib/src/collections/deque.mojo index a0b8bfa587..f563976b2b 100644 --- a/stdlib/src/collections/deque.mojo +++ b/stdlib/src/collections/deque.mojo @@ -1016,14 +1016,14 @@ struct _DequeIter[ fn __iter__(self) -> Self: return self - fn __next__(mut self) -> Pointer[ElementType, deque_lifetime]: + fn __next__(mut self, out p: Pointer[ElementType, deque_lifetime]): @parameter if forward: + p = Pointer.address_of(self.src[][self.index]) self.index += 1 - return Pointer.address_of(self.src[][self.index - 1]) else: self.index -= 1 - return Pointer.address_of(self.src[][self.index]) + p = Pointer.address_of(self.src[][self.index]) fn __len__(self) -> Int: @parameter diff --git a/stdlib/src/collections/inline_list.mojo b/stdlib/src/collections/inline_list.mojo index 2d7b16d428..0ff105a6c1 100644 --- a/stdlib/src/collections/inline_list.mojo +++ b/stdlib/src/collections/inline_list.mojo @@ -53,16 +53,14 @@ struct _InlineListIter[ fn __iter__(self) -> Self: return self - fn __next__( - mut self, - ) -> Pointer[T, __origin_of(self.src[][0])]: + fn __next__(mut self, out p: Pointer[T, __origin_of(self.src[][0])]): @parameter if forward: + p = Pointer.address_of(self.src[][self.index]) self.index += 1 - return Pointer.address_of(self.src[][self.index - 1]) else: self.index -= 1 - return Pointer.address_of(self.src[][self.index]) + p = Pointer.address_of(self.src[][self.index]) @always_inline fn __has_next__(self) -> Bool: diff --git a/stdlib/src/memory/span.mojo b/stdlib/src/memory/span.mojo index af08b48728..6657aba8b4 100644 --- a/stdlib/src/memory/span.mojo +++ b/stdlib/src/memory/span.mojo @@ -68,16 +68,14 @@ struct _SpanIter[ return self @always_inline - fn __next__( - mut self, - ) -> Pointer[T, origin]: + fn __next__(mut self, out p: Pointer[T, origin]): @parameter if forward: + p = Pointer.address_of(self.src[self.index]) self.index += 1 - return Pointer.address_of(self.src[self.index - 1]) else: self.index -= 1 - return Pointer.address_of(self.src[self.index]) + p = Pointer.address_of(self.src[self.index]) @always_inline fn __has_next__(self) -> Bool: From f9c0c1584c84fe90f718778a2e121ab06dc1a80a Mon Sep 17 00:00:00 2001 From: Jack Clayton Date: Thu, 16 Jan 2025 18:06:25 -0500 Subject: [PATCH 259/509] [stdlib] Add `String` ctors for variadic args / forwarding variadic pack This is much more natural than a static method, but still need to retain one `String.write` static method to avoid an endless loop when reusing `write_to` implementations in `__str__`: ```mojo fn write_to[W: Writer](self, mut writer: W): writer.write_bytes(self.as_bytes()) fn __str__(self) -> String: # `String(self)` here would cause an endless loop return String.write(self) ``` MODULAR_ORIG_COMMIT_REV_ID: 8592a1cbd4f318966a27b4a3e45001b6e2aedee1 --- docs/changelog.md | 27 ++++ docs/manual/operators.mdx | 4 +- docs/manual/traits.mdx | 11 +- docs/manual/types.mdx | 2 +- stdlib/src/builtin/error.mojo | 2 +- stdlib/src/builtin/uint.mojo | 2 +- stdlib/src/collections/string/string.mojo | 129 +++++++++++------- stdlib/src/utils/stringref.mojo | 2 +- .../test/collections/string/test_string.mojo | 17 +++ 9 files changed, 138 insertions(+), 58 deletions(-) diff --git a/docs/changelog.md b/docs/changelog.md index 5c87c6b054..d23688bfe9 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -340,6 +340,33 @@ what we publish. - A new `LinkedList` type has been added to the standard library. +- The `String.write` static method has moved to a `String` constructor, and + is now buffered. Instead of doing: + + ```mojo + var msg = "my message " + String(x) + " " + String(y) + " " + String(z) + ``` + + Which reallocates the `String` you should do: + + ```mojo + var msg = String("my message", x, y, z, sep=" ") + ``` + + Which is cleaner, and buffers to the stack so the `String` is allocated only + once. + +- You can now pass any `Writer` to `write_buffered`: + + ```mojo + from utils.write import write_buffered + + var string = String("existing string") + write_buffered(string, 42, 42.4, True, sep=" ") + ``` + + This writes to a buffer on the stack before reallocating the `String`. + ### Tooling changes - mblack (aka `mojo format`) no longer formats non-mojo files. This prevents diff --git a/docs/manual/operators.mdx b/docs/manual/operators.mdx index 3ae0802151..768a1aab81 100644 --- a/docs/manual/operators.mdx +++ b/docs/manual/operators.mdx @@ -1137,14 +1137,14 @@ between defining functions with `def` and `fn`. ::: Now we can print a `Complex` value directly, and we can explicitly generate a -`String` representation by passing a `Complex` value to `String.write()` which +`String` representation by passing a `Complex` value to `String()` which constructs a new `String` from all the arguments passed to it. ```mojo c3 = Complex(3.14159, -2.71828) print("c3 =", c3) -var msg = String.write("The value is: ", c3) +var msg = String("The value is: ", c3) print(msg) ``` diff --git a/docs/manual/traits.mdx b/docs/manual/traits.mdx index c4d62de147..0d13119942 100644 --- a/docs/manual/traits.mdx +++ b/docs/manual/traits.mdx @@ -437,14 +437,17 @@ struct Dog(Stringable, Representable, Writable): var name: String var age: Int - fn __repr__(self) -> String: - return "Dog(name=" + repr(self.name) + ", age=" + repr(self.age) + ")" + # Allows the type to be written into any `Writer` + fn write_to[W: Writer](self, mut writer: W) -> None: + writer.write("Dog(", self.name, ", ", self.age, ")") + # Construct and return a `String` using the previous method fn __str__(self) -> String: return String.write(self) - fn write_to[W: Writer](self, mut writer: W) -> None: - writer.write("Dog(", self.name, ", ", self.age, ")") + # Alternative full representation when calling `repr` + fn __repr__(self) -> String: + return String("Dog(name=", repr(self.name)", age=", repr(self.age), ")") var dog = Dog("Rex", 5) print(repr(dog)) diff --git a/docs/manual/types.mdx b/docs/manual/types.mdx index 6f46013f86..e45e1b627b 100644 --- a/docs/manual/types.mdx +++ b/docs/manual/types.mdx @@ -338,7 +338,7 @@ Or use `String.write` to take variadic `Stringable` types, so you don't have to call `String()` on each value: ```mojo -var s = String.write("Items in list: ", 5) +var s = String("Items in list: ", 5) print(s) ``` diff --git a/stdlib/src/builtin/error.mojo b/stdlib/src/builtin/error.mojo index 6d78fa5191..5ee6a4dcfa 100644 --- a/stdlib/src/builtin/error.mojo +++ b/stdlib/src/builtin/error.mojo @@ -184,7 +184,7 @@ struct Error( Returns: A printable representation of the error message. """ - return String.write("Error(", repr(self._message()), ")") + return String("Error(", repr(self._message()), ")") # ===-------------------------------------------------------------------===# # Methods diff --git a/stdlib/src/builtin/uint.mojo b/stdlib/src/builtin/uint.mojo index 3b2a7218da..afbc0b47fc 100644 --- a/stdlib/src/builtin/uint.mojo +++ b/stdlib/src/builtin/uint.mojo @@ -164,7 +164,7 @@ struct UInt(Indexer, _HashableWithHasher): Returns: The string representation of this UInt. """ - return String.write("UInt(", String(self), ")") + return String("UInt(", String(self), ")") fn __hash__(self) -> UInt: """Hash the UInt using builtin hash. diff --git a/stdlib/src/collections/string/string.mojo b/stdlib/src/collections/string/string.mojo index b5b28d7b79..5563b19735 100644 --- a/stdlib/src/collections/string/string.mojo +++ b/stdlib/src/collections/string/string.mojo @@ -100,7 +100,7 @@ fn chr(c: Int) -> String: if not char_opt: # TODO: Raise ValueError instead. return abort[String]( - String.write("chr(", c, ") is not a valid Unicode codepoint") + String("chr(", c, ") is not a valid Unicode codepoint") ) # SAFETY: We just checked that `char` is present. @@ -608,6 +608,74 @@ struct String( """ self = value.__str__() + @no_inline + fn __init__[ + *Ts: Writable + ](out self, *args: *Ts, sep: StaticString = "", end: StaticString = ""): + """ + Construct a string by concatenating a sequence of Writable arguments. + + Args: + args: A sequence of Writable arguments. + sep: The separator used between elements. + end: The String to write after printing the elements. + + Parameters: + Ts: The types of the arguments to format. Each type must be satisfy + `Writable`. + + Examples: + + Construct a String from several `Writable` arguments: + + ```mojo + var string = String(1, 2.0, "three", sep=", ") + print(string) # "1, 2.0, three" + ``` + . + """ + self = String() + write_buffered(self, args, sep=sep, end=end) + + @staticmethod + @no_inline + fn __init__[ + *Ts: Writable + ]( + out self, + args: VariadicPack[_, Writable, *Ts], + sep: StaticString = "", + end: StaticString = "", + ): + """ + Construct a string by passing a variadic pack. + + Args: + args: A VariadicPack of Writable arguments. + sep: The separator used between elements. + end: The String to write after printing the elements. + + Parameters: + Ts: The types of the arguments to format. Each type must be satisfy + `Writable`. + + Examples: + + ```mojo + fn variadic_pack_to_string[ + *Ts: Writable, + ](*args: *Ts) -> String: + return String(args) + + string = variadic_pack_to_string(1, ", ", 2.0, ", ", "three") + %# from testing import assert_equal + %# assert_equal(string, "1, 2.0, three") + ``` + . + """ + self = String() + write_buffered(self, args, sep=sep, end=end) + @no_inline fn __init__(out self, value: None): """Initialize a `None` type as "None". @@ -717,8 +785,7 @@ struct String( fn write[ *Ts: Writable ](*args: *Ts, sep: StaticString = "", end: StaticString = "") -> Self: - """ - Construct a string by concatenating a sequence of Writable arguments. + """Construct a string by concatenating a sequence of Writable arguments. Args: args: A sequence of Writable arguments. @@ -732,57 +799,23 @@ struct String( Returns: A string formed by formatting the argument sequence. - Examples: - - Construct a String from several `Writable` arguments: + This is used only when reusing the `write_to` method for + `__str__` in order to avoid an endless loop recalling + the constructor: ```mojo - var string = String.write(1, ", ", 2.0, ", ", "three") - print(string) # "1, 2.0, three" - %# from testing import assert_equal - %# assert_equal(string, "1, 2.0, three") - ``` - . - """ - var string = String() - write_buffered(string, args, sep=sep, end=end) - return string^ - - @staticmethod - @no_inline - fn write[ - *Ts: Writable - ]( - args: VariadicPack[_, Writable, *Ts], - sep: StaticString = "", - end: StaticString = "", - ) -> Self: - """ - Construct a string by passing a variadic pack. + fn write_to[W: Writer](self, mut writer: W): + writer.write_bytes(self.as_bytes()) - Args: - args: A VariadicPack of Writable arguments. - sep: The separator used between elements. - end: The String to write after printing the elements. - - Parameters: - Ts: The types of the arguments to format. Each type must be satisfy - `Writable`. - - Returns: - A string formed by formatting the VariadicPack. + fn __str__(self) -> String: + return String.write(self) + ``` - Examples: + Otherwise you can use the `String` constructor directly without calling + the `String.write` static method: ```mojo - fn variadic_pack_to_string[ - *Ts: Writable, - ](*args: *Ts) -> String: - return String.write(args) - - string = variadic_pack_to_string(1, ", ", 2.0, ", ", "three") - %# from testing import assert_equal - %# assert_equal(string, "1, 2.0, three") + var msg = String("my message", 42, 42.2, True) ``` . """ diff --git a/stdlib/src/utils/stringref.mojo b/stdlib/src/utils/stringref.mojo index dd1ebd678e..1b3666a52a 100644 --- a/stdlib/src/utils/stringref.mojo +++ b/stdlib/src/utils/stringref.mojo @@ -414,7 +414,7 @@ struct StringRef( Returns: The String representation of the StringRef. """ - return String.write("StringRef(", repr(String(self)), ")") + return String("StringRef(", repr(String(self)), ")") @no_inline fn write_to[W: Writer](self, mut writer: W): diff --git a/stdlib/test/collections/string/test_string.mojo b/stdlib/test/collections/string/test_string.mojo index fd070192d4..d3d4f8e3b4 100644 --- a/stdlib/test/collections/string/test_string.mojo +++ b/stdlib/test/collections/string/test_string.mojo @@ -1486,6 +1486,22 @@ def test_reserve(): assert_equal(s._buffer.capacity, 1) +def test_variadic_ctors(): + var s = String("message", 42, 42.2, True, sep=", ") + assert_equal(s, "message, 42, 42.2, True") + + var s2 = String.write("message", 42, 42.2, True, sep=", ") + assert_equal(s2, "message, 42, 42.2, True") + + fn forward_variadic_pack[ + *Ts: Writable, + ](*args: *Ts) -> String: + return String(args) + + var s3 = forward_variadic_pack(1, ", ", 2.0, ", ", "three") + assert_equal(s3, "1, 2.0, three") + + def main(): test_constructors() test_copy() @@ -1538,3 +1554,4 @@ def main(): test_center() test_float_conversion() test_slice_contains() + test_variadic_ctors() From a32bead0dc536621f0065e4c9174501a98019a06 Mon Sep 17 00:00:00 2001 From: Scott Main Date: Thu, 16 Jan 2025 17:00:31 -0800 Subject: [PATCH 260/509] Update github links to new project name MODULAR_ORIG_COMMIT_REV_ID: 3292dd8d184938dd60461f02a56594dee64e5f16 --- docs/changelog-released.md | 638 +++++++++++++++---------------- docs/changelog.md | 10 +- docs/faq.md | 8 +- docs/manual/basics.mdx | 8 +- docs/manual/get-started.mdx | 4 +- docs/manual/operators.mdx | 2 +- docs/manual/parameters/index.mdx | 2 +- docs/manual/values/lifetimes.mdx | 2 +- docs/notebooks/index.mdx | 2 +- docs/roadmap.md | 4 +- docs/tools/debugging.mdx | 2 +- docs/tools/testing.mdx | 14 +- 12 files changed, 348 insertions(+), 348 deletions(-) diff --git a/docs/changelog-released.md b/docs/changelog-released.md index d20de03317..18a2551f4f 100644 --- a/docs/changelog-released.md +++ b/docs/changelog-released.md @@ -44,7 +44,7 @@ detailed information in the following sections: (`ref [a, b]`). For details, see [Language changes](#24-6-language-changes). For background information and rationale on the name change see - [the proposal](https://github.com/modularml/mojo/issues/3623). For more + [the proposal](https://github.com/modular/mojo/issues/3623). For more information on origins, see [Lifetimes, origins and references](/mojo/manual/values/lifetimes) in the Mojo Manual. @@ -126,7 +126,7 @@ detailed information in the following sections: eventually be deprecated and removed. This was [discussed extensively in a public - proposal](https://github.com/modularml/mojo/issues/3623). For more + proposal](https://github.com/modular/mojo/issues/3623). For more information, see [Named results](/nightly/mojo/manual/functions#named-results) in the Mojo Manual. @@ -349,7 +349,7 @@ detailed information in the following sections: - 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). + [Issue #933](https://github.com/modular/mojo/issues/933). - Introduced the `@explicit_destroy` annotation, the `__disable_del` keyword, the `UnknownDestructibility` trait, and the `ImplicitlyDestructible` keyword, @@ -468,8 +468,8 @@ detailed information in the following sections: 'strong reference' pointer. - 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)). + (PR [#3549](https://github.com/modular/mojo/pull/3549), + PR [#3583](https://github.com/modular/mojo/pull/3583)). ```mojo var np = Python.import_module("numpy") @@ -482,7 +482,7 @@ detailed information in the following sections: - Added [`PythonObject.__contains__()`](/mojo/stdlib/python/python_object/PythonObject#__contains__). - ([PR #3101](https://github.com/modularml/mojo/pull/3101)) + ([PR #3101](https://github.com/modular/mojo/pull/3101)) Example usage: @@ -514,7 +514,7 @@ detailed information in the following sections: 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)) + ([PR #3524](https://github.com/modular/mojo/pull/3524)) - `Arc` has been renamed to [`ArcPointer`](/mojo/stdlib/memory/arc/ArcPointer), for consistency with `OwnedPointer`. @@ -544,7 +544,7 @@ detailed information in the following sections: [`FloatableRaising`](/mojo/stdlib/builtin/floatable/FloatableRaising) traits to denote types that can be converted to a `Float64` value using the builtin `float` function. Made `SIMD` and `FloatLiteral` conform to the `Floatable` - trait. ([PR #3163](https://github.com/modularml/mojo/pull/3163)) + trait. ([PR #3163](https://github.com/modular/mojo/pull/3163)) ```mojo fn foo[F: Floatable](v: F): @@ -562,7 +562,7 @@ detailed information in the following sections: - Introduced the [`random.shuffle()`](/mojo/stdlib/random/random/shuffle) function for randomizing the elements of a `List`. - ([PR #3327](https://github.com/modularml/mojo/pull/3327)) + ([PR #3327](https://github.com/modular/mojo/pull/3327)) Example: @@ -580,20 +580,20 @@ detailed information in the following sections: - [`Slice.step`](/mojo/stdlib/builtin/builtin_slice/Slice#fields) is now an `Optional[Int]`, matching the optionality of `slice.step` in Python. - ([PR #3160](https://github.com/modularml/mojo/pull/3160)) + ([PR #3160](https://github.com/modular/mojo/pull/3160)) - There is now a [`Byte`](/mojo/stdlib/builtin/simd/#aliases) alias to better express intent when working with a pack of bits. - ([PR #3670](https://github.com/modularml/mojo/pull/3670)). + ([PR #3670](https://github.com/modular/mojo/pull/3670)). - Expanded [`os.path`](/mojo/stdlib/os/path/path/) with new functions: - - `os.path.expandvars()`: Expands environment variables in a path ([PR #3735](https://github.com/modularml/mojo/pull/3735)). + - `os.path.expandvars()`: Expands environment variables in a path ([PR #3735](https://github.com/modular/mojo/pull/3735)). - `os.path.splitroot()`: Split a path into drive, root and tail. - ([PR #3780](https://github.com/modularml/mojo/pull/3780)). + ([PR #3780](https://github.com/modular/mojo/pull/3780)). - Added a [`reserve()`](/mojo/stdlib/collections/string/String#reserve) method and new constructor to the `String` struct to allocate additional capacity. - ([PR #3755](https://github.com/modularml/mojo/pull/3755)). + ([PR #3755](https://github.com/modular/mojo/pull/3755)). - A new [`StringLiteral.get[some_stringable]()`](/mojo/stdlib/builtin/string_literal/StringLiteral#get) @@ -619,7 +619,7 @@ detailed information in the following sections: - [`StringRef`](/mojo/stdlib/utils/stringref/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)) + delimiter. ([PR #2705](https://github.com/modular/mojo/pull/2705)) - [`StringRef`](/mojo/stdlib/utils/stringref/StringRef) is now representable so `repr(StringRef("hello"))` will return `StringRef('hello')`. @@ -678,7 +678,7 @@ detailed information in the following sections: - 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). + [Issue #3532](https://github.com/modular/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 @@ -743,40 +743,40 @@ detailed information in the following sections: - 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 +- [Issue #1310](https://github.com/modular/mojo/issues/1310) - Mojo permits the use of any constructor for implicit conversions -- [Issue #1632](https://github.com/modularml/mojo/issues/1632) - Mojo produces +- [Issue #1632](https://github.com/modular/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 +- [Issue #3444](https://github.com/modular/mojo/issues/3444) - Raising init causing use of uninitialized variable -- [Issue #3544](https://github.com/modularml/mojo/issues/3544) - Known +- [Issue #3544](https://github.com/modular/mojo/issues/3544) - Known mutable `ref` argument are not optimized as `noalias` by LLVM. -- [Issue #3559](https://github.com/modularml/mojo/issues/3559) - VariadicPack +- [Issue #3559](https://github.com/modular/mojo/issues/3559) - VariadicPack doesn't extend the lifetimes of the values it references. -- [Issue #3627](https://github.com/modularml/mojo/issues/3627) - Compiler +- [Issue #3627](https://github.com/modular/mojo/issues/3627) - Compiler overlooked exclusivity violation caused by `ref [MutableAnyOrigin] T` -- [Issue #3710](https://github.com/modularml/mojo/issues/3710) - Mojo frees +- [Issue #3710](https://github.com/modular/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 +- [Issue #3805](https://github.com/modular/mojo/issues/3805) - Crash When Initializing !llvm.ptr. -- [Issue #3816](https://github.com/modularml/mojo/issues/3816) - Ternary +- [Issue #3816](https://github.com/modular/mojo/issues/3816) - Ternary if-operator doesn't propagate origin information. -- [Issue #3815](https://github.com/modularml/mojo/issues/3815) - +- [Issue #3815](https://github.com/modular/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 +- [Issue #3829](https://github.com/modular/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 +- [Issue #3830](https://github.com/modular/mojo/issues/3830) - Failures emitting register RValues to ref arguments. - The VS Code extension now auto-updates its private copy of the MAX SDK. @@ -982,7 +982,7 @@ detailed information in the following sections: The Mojo compiler now always passes the "new value" being set using the last keyword argument of the `__setitem__()`, e.g. turning `yourType[1, 2] = 3` into `yourType.__setitem__(1, 2, val=3)`. This fixes - [Issue #248](https://github.com/modularml/mojo/issues/248). + [Issue #248](https://github.com/modular/mojo/issues/248). - Mojo context managers used in regions of code that may raise no longer need to define a "conditional" exit function in the form of @@ -1109,7 +1109,7 @@ detailed information in the following sections: - Added the builtin [`input()`](/mojo/stdlib/builtin/io/input) function, which behaves the same as Python. - ([PR #3392](https://github.com/modularml/mojo/pull/3392)) + ([PR #3392](https://github.com/modular/mojo/pull/3392)) ```mojo name = input("Enter your name: ") @@ -1120,7 +1120,7 @@ detailed information in the following sections: There is a known issue when running the `input()` function with JIT compilation (see issue - [#3479](https://github.com/modularml/mojo/issues/3479)). + [#3479](https://github.com/modular/mojo/issues/3479)). - [`print()`](/mojo/stdlib/builtin/io/print) now requires that its arguments conform to the [`Formattable`](/mojo/stdlib/utils/format/Formattable) trait. @@ -1193,12 +1193,12 @@ detailed information in the following sections: - Added [`TemporaryDirectory`](/mojo/stdlib/tempfile/tempfile/TemporaryDirectory) in module `tempfile`. - ([PR 2743](https://github.com/modularml/mojo/pull/2743)) + ([PR 2743](https://github.com/modular/mojo/pull/2743)) - Added [`NamedTemporaryFile`](/mojo/stdlib/tempfile/tempfile/NamedTemporaryFile) in module `tempfile`. - ([PR 2762](https://github.com/modularml/mojo/pull/2762)) + ([PR 2762](https://github.com/modular/mojo/pull/2762)) - [`String`](/mojo/stdlib/collections/string/String) and friends: @@ -1207,7 +1207,7 @@ detailed information in the following sections: - Added the [`String.format()`](/mojo/stdlib/collections/string/String#format) method. - ([PR #2771](https://github.com/modularml/mojo/pull/2771)) + ([PR #2771](https://github.com/modular/mojo/pull/2771)) Supports automatic and manual indexing of `*args`. @@ -1228,7 +1228,7 @@ detailed information in the following sections: - [`String.format()`](/mojo/stdlib/collections/string/String#format) now supports conversion flags `!s` and `!r`, allowing for `str()` and `repr()` conversions within format strings. - ([PR #3279](https://github.com/modularml/mojo/pull/3279)) + ([PR #3279](https://github.com/modular/mojo/pull/3279)) Example: @@ -1245,14 +1245,14 @@ detailed information in the following sections: [`ljust()`](/mojo/stdlib/collections/string/String#ljust), and [`center()`](/mojo/stdlib/collections/string/String#center) methods to return a justified string based on width and fillchar. ([PR - #3278](https://github.com/modularml/mojo/pull/3278)) + #3278](https://github.com/modular/mojo/pull/3278)) - The [`atol()`](/mojo/stdlib/collections/string/atol) function now correctly supports leading underscores, (e.g.`atol("0x_ff", 0)`), when the appropriate base is specified or inferred (base 0). non-base-10 integer literals as per Python's [Integer Literals](). - ([PR #3180](https://github.com/modularml/mojo/pull/3180)) + ([PR #3180](https://github.com/modular/mojo/pull/3180)) - Added the [`unsafe_cstr_ptr()`](/mojo/stdlib/collections/string/String#unsafe_cstr_ptr) @@ -1270,7 +1270,7 @@ detailed information in the following sections: and [`StringSlice.__len__()`](/mojo/stdlib/utils/string_slice/StringSlice#__len__) now does return the Unicode codepoints length. - ([PR #2960](https://github.com/modularml/mojo/pull/2960)) + ([PR #2960](https://github.com/modular/mojo/pull/2960)) - Added a new [`StaticString`](/mojo/stdlib/utils/string_slice/#aliases) type alias. This can be used in place of @@ -1414,7 +1414,7 @@ detailed information in the following sections: assert_equal(str(stacked), "[1 2 3 4 5 6]") ``` - ([PR #3264](https://github.com/modularml/mojo/pull/3264)) + ([PR #3264](https://github.com/modular/mojo/pull/3264)) - Accessing local Python modules with [`Python.add_to_path(".")`](/mojo/stdlib/python/python/Python#add_to_path) @@ -1429,7 +1429,7 @@ detailed information in the following sections: - [`List`](/mojo/stdlib/collections/list/List) values are now equality comparable with `==` and `!=` when their element type is equality - comparable. ([PR #3195](https://github.com/modularml/mojo/pull/3195)) + comparable. ([PR #3195](https://github.com/modular/mojo/pull/3195)) - [`Optional`](/mojo/stdlib/collections/optional/Optional) values are now equality comparable with `==` and `!=` when their element type is equality @@ -1437,22 +1437,22 @@ detailed information in the following sections: - Added a new [`Counter`](/mojo/stdlib/collections/counter/Counter) dictionary-like type, matching most of the features of the Python one. - ([PR #2910](https://github.com/modularml/mojo/pull/2910)) + ([PR #2910](https://github.com/modular/mojo/pull/2910)) - [`Dict`](/mojo/stdlib/collections/dict/Dict) now implements [`setdefault()`](/mojo/stdlib/collections/dict/Dict#setdefault), which gets a value from the dictionary by key, or sets it to a default if it doesn't exist. - ([PR #2803](https://github.com/modularml/mojo/pull/2803)) + ([PR #2803](https://github.com/modular/mojo/pull/2803)) - `Dict` now supports [`popitem()`](/mojo/stdlib/collections/dict/Dict#popitem), which removes and returns the last item in the `Dict`. - ([PR #2701](https://github.com/modularml/mojo/pull/2701)) + ([PR #2701](https://github.com/modular/mojo/pull/2701)) - Added a [`Dict.__init__()`](/mojo/stdlib/collections/dict/Dict#__init__) overload to specify initial capacity. - ([PR #3171](https://github.com/modularml/mojo/pull/3171)) + ([PR #3171](https://github.com/modular/mojo/pull/3171)) The capacity has to be a power of two and greater than or equal to 8. @@ -1467,7 +1467,7 @@ detailed information in the following sections: - `ListLiteral` now supports [`__contains__()`](/mojo/stdlib/builtin/builtin_list/ListLiteral#__contains__). - ([PR #3251](https://github.com/modularml/mojo/pull/3251)) + ([PR #3251](https://github.com/modular/mojo/pull/3251)) - Filesystem and environment utilities: @@ -1549,7 +1549,7 @@ detailed information in the following sections: - Added the [`Identifiable`](/mojo/stdlib/builtin/identifiable/Identifiable) trait, used to describe types that implement the `__is__()` and `__isnot__()` trait methods. - ([PR #2807](https://github.com/modularml/mojo/pull/2807)) + ([PR #2807](https://github.com/modular/mojo/pull/2807)) - Types conforming to [`Boolable`](/mojo/stdlib/builtin/bool/Boolable) (that is, those implementing `__bool__()`) no longer implicitly convert to `Bool`. @@ -1591,7 +1591,7 @@ detailed information in the following sections: - Added the [`oct()`](/mojo/stdlib/builtin/format_int/oct) builtin function for formatting an integer in octal. - ([PR #2914](https://github.com/modularml/mojo/pull/2914)) + ([PR #2914](https://github.com/modular/mojo/pull/2914)) - Added the [`assert_is()`](/mojo/stdlib/testing/testing/assert_is) and [`assert_is_not()`](/mojo/stdlib/testing/testing/assert_is_not) test @@ -1599,7 +1599,7 @@ detailed information in the following sections: - The [`math`](/mojo/stdlib/math/constants/) package now includes the `pi`, `e`, and `tau` constants (Closes Issue - [#2135](https://github.com/modularml/mojo/issues/2135)). + [#2135](https://github.com/modular/mojo/issues/2135)). - The [`ulp`](/mojo/stdlib/math/math/ulp) function from `numerics` has been moved to the `math` module. @@ -1608,7 +1608,7 @@ detailed information in the following sections: [`bit_reverse()`](/mojo/stdlib/bit/bit/bit_reverse), [`byte_swap()`](/mojo/stdlib/bit/bit/byte_swap), and [`pop_count()`](/mojo/stdlib/bit/bit/pop_count) for the `Int` type. - ([PR #3150](https://github.com/modularml/mojo/pull/3150)) + ([PR #3150](https://github.com/modular/mojo/pull/3150)) - A few `bit` functions have been renamed for clarity: @@ -1620,7 +1620,7 @@ detailed information in the following sections: `OptionalReg[Int]` for `start` and `end` and implements a constructor which accepts optional values. `Slice._has_end()` has also been removed since a Slice with no end is now represented by an empty `Slice.end` option. - ([PR #2495](https://github.com/modularml/mojo/pull/2495)) + ([PR #2495](https://github.com/modular/mojo/pull/2495)) ```mojo var s = Slice(1, None, 2) @@ -1732,28 +1732,28 @@ detailed information in the following sections: - Mojo now prints `ref` arguments and results in generated documentation correctly. -- [#1734](https://github.com/modularml/mojo/issues/1734) - Calling +- [#1734](https://github.com/modular/mojo/issues/1734) - Calling `__copyinit__` on self causes crash. -- [#3142](https://github.com/modularml/mojo/issues/3142) - [QoI] Confusing +- [#3142](https://github.com/modular/mojo/issues/3142) - [QoI] Confusing `__setitem__` method is failing with a "must be mutable" error. -- [#248](https://github.com/modularml/mojo/issues/248) - [Feature] Enable +- [#248](https://github.com/modular/mojo/issues/248) - [Feature] Enable `__setitem__` to take variadic arguments -- [#3065](https://github.com/modularml/mojo/issues/3065) - Fix incorrect behavior +- [#3065](https://github.com/modular/mojo/issues/3065) - Fix incorrect behavior of `SIMD.__int__` on unsigned types -- [#3045](https://github.com/modularml/mojo/issues/3045) - Disable implicit SIMD +- [#3045](https://github.com/modular/mojo/issues/3045) - Disable implicit SIMD conversion routes through `Bool` -- [#3126](https://github.com/modularml/mojo/issues/3126) - [BUG] List doesn't +- [#3126](https://github.com/modular/mojo/issues/3126) - [BUG] List doesn't work at compile time. -- [#3237](https://github.com/modularml/mojo/issues/3237) - [BUG] Difference +- [#3237](https://github.com/modular/mojo/issues/3237) - [BUG] Difference between `__getitem__` and `[.]` operator. -- [#3336](https://github.com/modularml/mojo/issues/3336) - Fix outdated +- [#3336](https://github.com/modular/mojo/issues/3336) - Fix outdated references to `let` in REPL documentation. - The VS Code extension no longer caches the information of the selected @@ -1972,7 +1972,7 @@ Big themes for this release: - Added built-in [`repr()`](/mojo/stdlib/builtin/repr/repr) function and [`Representable`](/mojo/stdlib/builtin/repr/Representable) trait. - ([PR #2361](https://github.com/modularml/mojo/pull/2361)) + ([PR #2361](https://github.com/modular/mojo/pull/2361)) - Added the [`Indexer`](/mojo/stdlib/builtin/int/Indexer) trait to denote types that implement the `__index__()` method which allows these types to be @@ -2019,7 +2019,7 @@ Big themes for this release: print(a[AlwaysZero()]) # works and prints 1 ``` - ([PR #2685](https://github.com/modularml/mojo/pull/2685)) + ([PR #2685](https://github.com/modular/mojo/pull/2685)) - Added traits allowing user-defined types to be supported by various built-in and math functions. @@ -2097,14 +2097,14 @@ Big themes for this release: [`rstrip()`](/mojo/stdlib/collections/string/String#rstrip) can now remove custom characters other than whitespace. In addition, there are now several useful aliases for whitespace, ASCII lower/uppercase, and so on. - ([PR #2555](https://github.com/modularml/mojo/pull/2555)) + ([PR #2555](https://github.com/modular/mojo/pull/2555)) - `String` now has a [`splitlines()`](/mojo/stdlib/collections/string/String#splitlines) method, which allows splitting strings at line boundaries. This method supports [universal newlines](https://docs.python.org/3/glossary.html#term-universal-newlines) and provides an option to retain or remove the line break characters. - ([PR #2810](https://github.com/modularml/mojo/pull/2810)) + ([PR #2810](https://github.com/modular/mojo/pull/2810)) - `InlinedString` has been renamed to [`InlineString`](/mojo/stdlib/utils/inline_string/InlineString) to be @@ -2113,12 +2113,12 @@ Big themes for this release: - [`StringRef`](/mojo/stdlib/utils/stringref/StringRef) now implements [`strip()`](/mojo/stdlib/utils/stringref/StringRef#strip), which can be used to remove leading and trailing whitespace. - ([PR #2683](https://github.com/modularml/mojo/pull/2683)) + ([PR #2683](https://github.com/modular/mojo/pull/2683)) - `StringRef` now implements [`startswith()`](/mojo/stdlib/utils/stringref/StringRef#startswith) and [`endswith()`](/mojo/stdlib/utils/stringref/StringRef#endswith). - ([PR #2710](https://github.com/modularml/mojo/pull/2710)) + ([PR #2710](https://github.com/modular/mojo/pull/2710)) - Added a new [`StringSlice`](/mojo/stdlib/utils/string_slice/StringSlice) type, to replace uses of the unsafe `StringRef` type in standard library @@ -2170,7 +2170,7 @@ Big themes for this release: - Added a built-in [`sort()`](/mojo/stdlib/builtin/sort/sort) function for lists of elements that conform to the [`ComparableCollectionElement`](/mojo/stdlib/builtin/value/ComparableCollectionElement) - trait.([PR #2609](https://github.com/modularml/mojo/pull/2609)) + trait.([PR #2609](https://github.com/modular/mojo/pull/2609)) - [`int()`](/mojo/stdlib/builtin/int/int-function) can now take a string and a specified base to parse an integer from a @@ -2178,17 +2178,17 @@ Big themes for this release: specified, the string will be parsed as if it was an integer literal, with the base determined by whether the string contains the prefix `"0x"`, `"0o"`, or `"0b"`. - ([PR #2273](https://github.com/modularml/mojo/pull/2273), - fixes [#2274](https://github.com/modularml/mojo/issues/2274)) + ([PR #2273](https://github.com/modular/mojo/pull/2273), + fixes [#2274](https://github.com/modular/mojo/issues/2274)) - Added the [`bin()`](/mojo/stdlib/builtin/format_int/bin) built-in function to convert integral types into their binary string representation. - ([PR #2603](https://github.com/modularml/mojo/pull/2603)) + ([PR #2603](https://github.com/modular/mojo/pull/2603)) - Added the [`atof()`](/mojo/stdlib/collections/string/atof) built-in function, which can convert a `String` to a `float64`. - ([PR #2649](https://github.com/modularml/mojo/pull/2649)) + ([PR #2649](https://github.com/modular/mojo/pull/2649)) - You can now use the built-in [`any()`](/mojo/stdlib/builtin/bool/any) and [`all()`](/mojo/stdlib/builtin/bool/all) functions to check for truthy @@ -2196,7 +2196,7 @@ Big themes for this release: `size=1`, You must explicitly use these to get the truthy value of a SIMD vector with more than one element. This avoids common bugs around implicit conversion of `SIMD` to `Bool`. - ([PR #2600](https://github.com/modularml/mojo/pull/2600)) + ([PR #2600](https://github.com/modular/mojo/pull/2600)) For example: @@ -2211,10 +2211,10 @@ Big themes for this release: - [`object`](/mojo/stdlib/builtin/object/) now implements all the bitwise operators. - ([PR #2324](https://github.com/modularml/mojo/pull/2324)) + ([PR #2324](https://github.com/modular/mojo/pull/2324)) - [`Tuple`](/mojo/stdlib/builtin/tuple/Tuple) now supports `__contains__()`. - ([PR #2709](https://github.com/modularml/mojo/pull/2709)) For example: + ([PR #2709](https://github.com/modular/mojo/pull/2709)) For example: ```mojo var x = Tuple(1, 2, True) @@ -2264,12 +2264,12 @@ Big themes for this release: Note that `List` doesn't conform to the `Stringable` trait yet so you cannot use `str(my_list)` yet. - ([PR #2673](https://github.com/modularml/mojo/pull/2673)) + ([PR #2673](https://github.com/modular/mojo/pull/2673)) - `List` has a simplified syntax to call the [`count()`](/mojo/stdlib/collections/list/List#count) method: `my_list.count(x)`. - ([PR #2675](https://github.com/modularml/mojo/pull/2675)) + ([PR #2675](https://github.com/modular/mojo/pull/2675)) - `List()` now supports `__contains__()`, so you can now use lists with the `in` operator: @@ -2278,84 +2278,84 @@ Big themes for this release: if x in my_list: ``` - ([PR #2667](https://github.com/modularml/mojo/pull/2667)) + ([PR #2667](https://github.com/modular/mojo/pull/2667)) - `List` now has an [`unsafe_get()`](/mojo/stdlib/collections/list/List#unsafe_get) to get the reference to an element without bounds check or wraparound for negative indices. Note that this method is unsafe. Use with caution. - [PR #2800](https://github.com/modularml/mojo/pull/2800)) + [PR #2800](https://github.com/modular/mojo/pull/2800)) - Added a [`fromkeys()`](/mojo/stdlib/collections/dict/Dict#fromkeys) method to `Dict` to return a `Dict` with the specified keys and values. - ([PR 2622](https://github.com/modularml/mojo/pull/2622)) + ([PR 2622](https://github.com/modular/mojo/pull/2622)) - Added a [`clear()`](/mojo/stdlib/collections/dict/Dict#clear) method to - `Dict`. ([PR 2627](https://github.com/modularml/mojo/pull/2627)) + `Dict`. ([PR 2627](https://github.com/modular/mojo/pull/2627)) - `Dict` now supports [`reversed()`](/mojo/stdlib/builtin/reversed/reversed) for its `items()` and `values()` iterators. - ([PR #2340](https://github.com/modularml/mojo/pull/2340)) + ([PR #2340](https://github.com/modular/mojo/pull/2340)) - `Dict` now has a simplified conversion to `String` with `my_dict.__str__()`. Note that `Dict` does not conform to the `Stringable` trait so `str(my_dict)` is not possible yet. - ([PR #2674](https://github.com/modularml/mojo/pull/2674)) + ([PR #2674](https://github.com/modular/mojo/pull/2674)) - `Dict` now implements [`get(key)`](/mojo/stdlib/collections/dict/Dict#get) and `get(key, default)` functions. - ([PR #2519](https://github.com/modularml/mojo/pull/2519)) + ([PR #2519](https://github.com/modular/mojo/pull/2519)) - Added a temporary `__get_ref(key)` method to `Dict`, allowing you to get a `Reference` to a dictionary value. - Added a new [`InlineList`](/mojo/stdlib/collections/inline_list/InlineList) type, a stack-allocated list with a static maximum size. - ([PR 2587#](https://github.com/modularml/mojo/pull/2587)) - ([PR #2703](https://github.com/modularml/mojo/pull/2703)) + ([PR 2587#](https://github.com/modular/mojo/pull/2587)) + ([PR #2703](https://github.com/modular/mojo/pull/2703)) - Added a new [`Span`](/mojo/stdlib/memory/span/Span) type for taking slices of contiguous collections. - ([PR #2595](https://github.com/modularml/mojo/pull/2595)) + ([PR #2595](https://github.com/modular/mojo/pull/2595)) - [`os`](/mojo/stdlib/os/os/) module: - The `os` module now provides functionality for adding and removing directories using [`mkdir()`](/mojo/stdlib/os/os/mkdir) and [`rmdir()`](/mojo/stdlib/os/os/rmdir). - ([PR #2430](https://github.com/modularml/mojo/pull/2430)) + ([PR #2430](https://github.com/modular/mojo/pull/2430)) - Added the [`os.path.getsize()`](/mojo/stdlib/os/path/path/getsize) function, which gives the size in bytes of the file identified by the path. - ([PR 2626](https://github.com/modularml/mojo/pull/2626)) + ([PR 2626](https://github.com/modular/mojo/pull/2626)) - Added [`os.path.join()`](/mojo/stdlib/os/path/path/join) function. - ([PR 2792](https://github.com/modularml/mojo/pull/2792)) + ([PR 2792](https://github.com/modular/mojo/pull/2792)) - Added a new [`tempfile`](/mojo/stdlib/tempfile/tempfile/) module, with `gettempdir()` and `mkdtemp()` functions. - ([PR 2742](https://github.com/modularml/mojo/pull/2742)) + ([PR 2742](https://github.com/modular/mojo/pull/2742)) - [`SIMD`](/mojo/stdlib/builtin/simd/SIMD) type: - Added [`SIMD.shuffle()`](/mojo/stdlib/builtin/simd/SIMD#shuffle) with `IndexList` mask. - ([PR #2315](https://github.com/modularml/mojo/pull/2315)) + ([PR #2315](https://github.com/modular/mojo/pull/2315)) - [`SIMD.__bool__()`](/mojo/stdlib/builtin/simd/SIMD#__bool__) is constrained such that it only works when `size` is `1`. For SIMD vectors with more than one element, use [`any()`](/mojo/stdlib/builtin/bool/any) or [`all()`](/mojo/stdlib/builtin/bool/all). - ([PR #2502](https://github.com/modularml/mojo/pull/2502)) + ([PR #2502](https://github.com/modular/mojo/pull/2502)) - The [`SIMD.reduce_or()`](/mojo/stdlib/builtin/simd/SIMD#reduce_or) and [`SIMD.reduce_and()`](/mojo/stdlib/builtin/simd/SIMD#reduce_and) methods are now bitwise operations, and support integer types. - ([PR #2671](https://github.com/modularml/mojo/pull/2671)) + ([PR #2671](https://github.com/modular/mojo/pull/2671)) - Added [`SIMD.__repr__()`](/mojo/stdlib/builtin/simd/SIMD#__repr__) to get the verbose string representation of `SIMD` types. - ([PR #2728](https://github.com/modularml/mojo/pull/2728)) + ([PR #2728](https://github.com/modular/mojo/pull/2728)) - [`math`](/mojo/stdlib/math/math/) package: @@ -2391,7 +2391,7 @@ Big themes for this release: - [`math.gcd()`](/mojo/stdlib/math/math/gcd) now works on negative inputs, and like Python's implementation, accepts a variadic list of integers. New overloads for a `List` or `Span`of integers are also added. - ([PR #2777](https://github.com/modularml/mojo/pull/2777)) + ([PR #2777](https://github.com/modular/mojo/pull/2777)) - Async and coroutines: @@ -2415,12 +2415,12 @@ Big themes for this release: that works on memory-only types. Compare with the existing [`StaticTuple`](/mojo/stdlib/utils/static_tuple/StaticTuple) type, which is conceptually an array type, but only works on `AnyTrivialRegType`. - ([PR #2294](https://github.com/modularml/mojo/pull/2294)) + ([PR #2294](https://github.com/modular/mojo/pull/2294)) - The [`base64`](/mojo/stdlib/base64/) package now includes encoding and decoding support for both the Base64 and Base16 encoding schemes. - ([PR #2364](https://github.com/modularml/mojo/pull/2364)) - ([PR #2584](https://github.com/modularml/mojo/pull/2584)) + ([PR #2364](https://github.com/modular/mojo/pull/2364)) + ([PR #2584](https://github.com/modular/mojo/pull/2584)) - The `take()` function in [`Variant`](/mojo/stdlib/utils/variant/Variant) and [`Optional`](/mojo/stdlib/collections/optional/Optional) has been renamed to @@ -2437,7 +2437,7 @@ Big themes for this release: - `infinity` and `NaN` are now correctly handled in [`testing.assert_almost_equal()`](/mojo/stdlib/testing/testing/assert_almost_equal) and an `inf` function has been added to `utils/numerics.mojo`. - ([PR #2375](https://github.com/modularml/mojo/pull/2375)) + ([PR #2375](https://github.com/modular/mojo/pull/2375)) ### Tooling changes @@ -2551,16 +2551,16 @@ Big themes for this release: #### 🛠️ Fixed -- [#1837](https://github.com/modularml/mojo/issues/1837) Fix self-referential +- [#1837](https://github.com/modular/mojo/issues/1837) Fix self-referential variant crashing the compiler. -- [#2363](https://github.com/modularml/mojo/issues/2363) Fix LSP crashing on +- [#2363](https://github.com/modular/mojo/issues/2363) Fix LSP crashing on simple trait definitions. -- [#1787](https://github.com/modularml/mojo/issues/1787) Fix error when using +- [#1787](https://github.com/modular/mojo/issues/1787) Fix error when using `//` on `FloatLiteral` in alias expression. - Made several improvements to dictionary performance. Dicts with integer keys are most heavily affected, but large dicts and dicts with large values will also see large improvements. -- [#2692](https://github.com/modularml/mojo/issues/2692) Fix `assert_raises` +- [#2692](https://github.com/modular/mojo/issues/2692) Fix `assert_raises` to include calling location. ### Special thanks @@ -2749,21 +2749,21 @@ Special thanks to our community contributors: - `pop(index)` for removing an element at a particular index. By default, `List.pop()` removes the last element in the list. ([@LJ-9801](https://github.com/LJ-9801), fixes - [#2017](https://github.com/modularml/mojo/issues/2017)) + [#2017](https://github.com/modular/mojo/issues/2017)) - `resize(new_size)` for resizing the list without the need to specify an additional value. ([@mikowals](https://github.com/mikowals), fixes - [#2133](https://github.com/modularml/mojo/issues/2133)) + [#2133](https://github.com/modular/mojo/issues/2133)) - `insert(index, value)` for inserting a value at a specified index into the `List`. ([@whym1here](https://github.com/whym1here), fixes - [#2134](https://github.com/modularml/mojo/issues/2134)) + [#2134](https://github.com/modular/mojo/issues/2134)) - A new constructor `List(ptr, size, capacity)` to to avoid needing to do a deep copy of an existing contiguous memory allocation when constructing a new `List`. ([@StandinKP](https://github.com/StandinKP), fixes - [#2170](https://github.com/modularml/mojo/issues/2170)) + [#2170](https://github.com/modular/mojo/issues/2170)) - [`Dict`](/mojo/stdlib/collections/dict/Dict) now has a `update()` method to update keys/values from another `Dict`. @@ -2804,7 +2804,7 @@ Special thanks to our community contributors: ([@helehex](https://github.com/helehex) and [@jayzhan211](https://github.com/jayzhan211), contributes towards - [#2325](https://github.com/modularml/mojo/issues/2325)) + [#2325](https://github.com/modular/mojo/issues/2325)) - [`Optional`](/mojo/stdlib/collections/optional/Optional) now implements `__is__` and `__isnot__` methods so that you can compare an `Optional` with @@ -2951,7 +2951,7 @@ Special thanks to our community contributors: [`chr`](/mojo/stdlib/collections/string/chr) functions have been improved to accept any Unicode character. ([@mzaks](https://github.com/mzaks), contributes towards - [#1616](https://github.com/modularml/mojo/issues/1616)) + [#1616](https://github.com/modular/mojo/issues/1616)) - [`atol()`](/mojo/stdlib/collections/string/atol) now handles whitespace. The `atol()`function is used internally by `String.__int__()`, so @@ -2960,7 +2960,7 @@ Special thanks to our community contributors: - [`SIMD`](/mojo/stdlib/builtin/simd/SIMD) now implements the `__rmod__()` method. ([@bgreni](https://github.com/bgreni), fixes - [#1482](https://github.com/modularml/mojo/issues/1482)) + [#1482](https://github.com/modular/mojo/issues/1482)) - [`bool(None)`](/mojo/stdlib/builtin/bool/bool-function) is now implemented. ([@zhoujingya](https://github.com/zhoujingya)) @@ -2995,7 +2995,7 @@ Special thanks to our community contributors: division, modulo, and left and right shift operators, including the in-place and reverse variants. ([@LJ-9801](https://github.com/LJ-9801), fixes - [#2224](https://github.com/modularml/mojo/issues/2224)) + [#2224](https://github.com/modular/mojo/issues/2224)) - Added checked arithmetic operations for `SIMD` integers. @@ -3027,7 +3027,7 @@ Special thanks to our community contributors: - Added [`os.remove()`](/mojo/stdlib/os/os/remove) and [`os.unlink()`](/mojo/stdlib/os/os/unlink) for deleting files. ([@artemiogr97](https://github.com/artemiogr97), fixes - [#2306](https://github.com/modularml/mojo/issues/2306)) + [#2306](https://github.com/modular/mojo/issues/2306)) #### 🦋 Changed @@ -3047,15 +3047,15 @@ Special thanks to our community contributors: ``` ([@lsh](https://github.com/lsh), fixes - [#2179](https://github.com/modularml/mojo/issues/2179)) + [#2179](https://github.com/modular/mojo/issues/2179)) - Per the accepted community proposal, [Standardize the representation of byte sequence as a sequence of unsigned - 8-bit integers](https://github.com/modularml/mojo/blob/main/proposals/byte-as-uint8.md), + 8-bit integers](https://github.com/modular/mojo/blob/main/proposals/byte-as-uint8.md), began transition to using `UInt8` by changing the data pointer of `Error` to `DTypePointer[DType.uint8]`. ([@gabrieldemarmiesse](https://github.com/gabrieldemarmiesse), contributes - towards [#2317](https://github.com/modularml/mojo/issues/2317)) + towards [#2317](https://github.com/modular/mojo/issues/2317)) - Continued transition to `UnsafePointer` from the legacy `Pointer` type in various standard library APIs and internals. @@ -3127,56 +3127,56 @@ Special thanks to our community contributors: #### 🛠️ Fixed -- [#516](https://github.com/modularml/mojo/issues/516) and - [#1817](https://github.com/modularml/mojo/issues/1817) and many others, e.g. +- [#516](https://github.com/modular/mojo/issues/516) and + [#1817](https://github.com/modular/mojo/issues/1817) and many others, e.g. "Can't create a function that returns two strings." -- [#1178](https://github.com/modularml/mojo/issues/1178) (os/kern) failure (5). +- [#1178](https://github.com/modular/mojo/issues/1178) (os/kern) failure (5). -- [#1609](https://github.com/modularml/mojo/issues/1609) alias with +- [#1609](https://github.com/modular/mojo/issues/1609) alias with `DynamicVector[Tuple[Int]]` fails. -- [#1987](https://github.com/modularml/mojo/issues/1987) Defining `main` +- [#1987](https://github.com/modular/mojo/issues/1987) Defining `main` in a Mojo package is an error, for now. This is not intended to work yet, erroring for now will help to prevent accidental undefined behavior. -- [#1215](https://github.com/modularml/mojo/issues/1215) and - [#1949](https://github.com/modularml/mojo/issues/1949) The Mojo LSP server no +- [#1215](https://github.com/modular/mojo/issues/1215) and + [#1949](https://github.com/modular/mojo/issues/1949) The Mojo LSP server no longer cuts off hover previews for functions with functional arguments, parameters, or results. -- [#1901](https://github.com/modularml/mojo/issues/1901) Fixed Mojo LSP and +- [#1901](https://github.com/modular/mojo/issues/1901) Fixed Mojo LSP and documentation generation handling of inout arguments. -- [#1913](https://github.com/modularml/mojo/issues/1913) - `0__` no longer +- [#1913](https://github.com/modular/mojo/issues/1913) - `0__` no longer crashes the Mojo parser. -- [#1924](https://github.com/modularml/mojo/issues/1924) JIT debugging on Mac +- [#1924](https://github.com/modular/mojo/issues/1924) JIT debugging on Mac has been fixed. -- [#1941](https://github.com/modularml/mojo/issues/1941) Mojo variadic arguments +- [#1941](https://github.com/modular/mojo/issues/1941) Mojo variadic arguments don't work with non-trivial register-only types. -- [#1963](https://github.com/modularml/mojo/issues/1963) `a!=0` is now parsed +- [#1963](https://github.com/modular/mojo/issues/1963) `a!=0` is now parsed and formatted correctly by `mojo format`. -- [#1676](https://github.com/modularml/mojo/issues/1676) Fix a crash related to +- [#1676](https://github.com/modular/mojo/issues/1676) Fix a crash related to `@value` decorator and structs with empty body. -- [#1917](https://github.com/modularml/mojo/issues/1917) Fix a crash after +- [#1917](https://github.com/modular/mojo/issues/1917) Fix a crash after syntax error during tuple creation. -- [#2006](https://github.com/modularml/mojo/issues/2006) The Mojo LSP now +- [#2006](https://github.com/modular/mojo/issues/2006) The Mojo LSP now properly supports signature types with named arguments and parameters. -- [#2007](https://github.com/modularml/mojo/issues/2007) and - [#1997](https://github.com/modularml/mojo/issues/1997) The Mojo LSP no longer +- [#2007](https://github.com/modular/mojo/issues/2007) and + [#1997](https://github.com/modular/mojo/issues/1997) The Mojo LSP no longer crashes on certain types of closures. -- [#1675](https://github.com/modularml/mojo/issues/1675) Ensure `@value` +- [#1675](https://github.com/modular/mojo/issues/1675) Ensure `@value` decorator fails gracefully after duplicate field error. -- [#2068](https://github.com/modularml/mojo/issues/2068) +- [#2068](https://github.com/modular/mojo/issues/2068) Fix `SIMD.reduce()` for size_out == 2. ([@soraros](https://github.com/soraros)) @@ -3189,7 +3189,7 @@ This release doesn't include any changes to Mojo. ### 🔥 Legendary - The Mojo standard library is now open source! Check out the - [README](https://github.com/modularml/mojo/blob/nightly/stdlib/README.md) + [README](https://github.com/modular/mojo/blob/nightly/stdlib/README.md) for everything you need to get started. - Structs and other nominal types are now allowed to implicitly conform to @@ -3258,7 +3258,7 @@ This release doesn't include any changes to Mojo. - `let` declarations now produce a compile time error instead of a warning, our next step in [removing let - declarations](https://github.com/modularml/mojo/blob/main/proposals/remove-let-decls.md). + declarations](https://github.com/modular/mojo/blob/main/proposals/remove-let-decls.md). The compiler still recognizes the `let` keyword for now in order to produce a good error message, but that will be removed in subsequent releases. @@ -3562,27 +3562,27 @@ fixed in a future release. #### 🛠️ Fixed -- [#1362](https://github.com/modularml/mojo/issues/1362) - Parameter inference +- [#1362](https://github.com/modular/mojo/issues/1362) - Parameter inference now recursively matches function types. -- [#951](https://github.com/modularml/mojo/issues/951) - Functions that were +- [#951](https://github.com/modular/mojo/issues/951) - Functions that were both `async` and `@always_inline` incorrectly errored. -- [#1858](https://github.com/modularml/mojo/issues/1858) - Trait with parametric +- [#1858](https://github.com/modular/mojo/issues/1858) - Trait with parametric methods regression. -- [#1892](https://github.com/modularml/mojo/issues/1892) - Forbid unsupported +- [#1892](https://github.com/modular/mojo/issues/1892) - Forbid unsupported decorators on traits. -- [#1735](https://github.com/modularml/mojo/issues/1735) - Trait-typed values +- [#1735](https://github.com/modular/mojo/issues/1735) - Trait-typed values are incorrectly considered equal. -- [#1909](https://github.com/modularml/mojo/issues/1909) - Crash due to nested +- [#1909](https://github.com/modular/mojo/issues/1909) - Crash due to nested import in unreachable block. -- [#1921](https://github.com/modularml/mojo/issues/1921) - Parser crashes +- [#1921](https://github.com/modular/mojo/issues/1921) - Parser crashes binding Reference to lvalue with subtype lifetime. -- [#1945](https://github.com/modularml/mojo/issues/1945) - `Optional[T].or_else()` +- [#1945](https://github.com/modular/mojo/issues/1945) - `Optional[T].or_else()` should return `T` instead of `Optional[T]`. -- [#1940](https://github.com/modularml/mojo/issues/1940) - Constrain +- [#1940](https://github.com/modular/mojo/issues/1940) - Constrain `math.copysign` to floating point or integral types. -- [#1838](https://github.com/modularml/mojo/issues/1838) - Variadic `print` +- [#1838](https://github.com/modular/mojo/issues/1838) - Variadic `print` does not work when specifying `end=""` -- [#1826](https://github.com/modularml/mojo/issues/1826) - The `SIMD.reduce` +- [#1826](https://github.com/modular/mojo/issues/1826) - The `SIMD.reduce` methods correctly handle edge cases where `size_out >= size`. ## v24.1.1 (2024-03-18) @@ -3936,7 +3936,7 @@ installation issues. Otherwise it is functionally identical to Mojo 24.1. ### 🦋 Changed - As another step towards [removing let - declarations](https://github.com/modularml/mojo/blob/main/proposals/remove-let-decls.md) + declarations](https://github.com/modular/mojo/blob/main/proposals/remove-let-decls.md) we have removed support for let declarations inside the compiler. To ease migration, we parse `let` declarations as a `var` declaration so your code won't break. We emit a warning about this, but please switch your code to @@ -4036,72 +4036,72 @@ experience without dedicated sugar. ### 🛠️ Fixed -- [#435](https://github.com/modularml/mojo/issues/435) +- [#435](https://github.com/modular/mojo/issues/435) Structs with Self type don't always work. -- [#1540](https://github.com/modularml/mojo/issues/1540) +- [#1540](https://github.com/modular/mojo/issues/1540) Crash in register_passable self referencing struct. -- [#1664](https://github.com/modularml/mojo/issues/1664) - Improve error +- [#1664](https://github.com/modular/mojo/issues/1664) - Improve error message when `StaticTuple` is constructed with a negative size for the number of elements. -- [#1679](https://github.com/modularml/mojo/issues/1679) - crash on SIMD of zero +- [#1679](https://github.com/modular/mojo/issues/1679) - crash on SIMD of zero elements. - Various crashes on invalid code: - [#1230](https://github.com/modularml/mojo/issues/1230), - [#1699](https://github.com/modularml/mojo/issues/1699), - [#1708](https://github.com/modularml/mojo/issues/1708) -- [#1223](https://github.com/modularml/mojo/issues/1223) - Crash when parametric + [#1230](https://github.com/modular/mojo/issues/1230), + [#1699](https://github.com/modular/mojo/issues/1699), + [#1708](https://github.com/modular/mojo/issues/1708) +- [#1223](https://github.com/modular/mojo/issues/1223) - Crash when parametric function is passed as (runtime) argument. The parser now errors out instead. -- [#1530](https://github.com/modularml/mojo/issues/1530) - Crash during +- [#1530](https://github.com/modular/mojo/issues/1530) - Crash during diagnostic emission for parameter deduction failure. -- [#1538](https://github.com/modularml/mojo/issues/1538) and [#1607]( - https://github.com/modularml/mojo/issues/1607) - Crash when returning type +- [#1538](https://github.com/modular/mojo/issues/1538) and [#1607]( + https://github.com/modular/mojo/issues/1607) - Crash when returning type value instead of instance of expected type. This is a common mistake and the error now includes a hint to point users to the problem. -- [#1613](https://github.com/modularml/mojo/issues/1613) - Wrong type name in +- [#1613](https://github.com/modular/mojo/issues/1613) - Wrong type name in error for incorrect `self` argument type in trait method declaration. -- [#1670](https://github.com/modularml/mojo/issues/1670) - Crash on implicit +- [#1670](https://github.com/modular/mojo/issues/1670) - Crash on implicit conversion in a global variable declaration. -- [#1741](https://github.com/modularml/mojo/issues/1741) - Mojo documentation +- [#1741](https://github.com/modular/mojo/issues/1741) - Mojo documentation generation doesn't show `inout`/`owned` on variadic arguments. -- [#1621](https://github.com/modularml/mojo/issues/1621) - VS Code does not +- [#1621](https://github.com/modular/mojo/issues/1621) - VS Code does not highlight `raises` and `capturing` in functional type expressions. -- [#1617](https://github.com/modularml/mojo/issues/1617) - VS Code does not +- [#1617](https://github.com/modular/mojo/issues/1617) - VS Code does not highlight `fn` in specific contexts. -- [#1740](https://github.com/modularml/mojo/issues/1740) - LSP shows unrelated +- [#1740](https://github.com/modular/mojo/issues/1740) - LSP shows unrelated info when hovering over a struct. -- [#1238](https://github.com/modularml/mojo/issues/1238) - File shadows Mojo +- [#1238](https://github.com/modular/mojo/issues/1238) - File shadows Mojo package path. -- [#1429](https://github.com/modularml/mojo/issues/1429) - Crash when using +- [#1429](https://github.com/modular/mojo/issues/1429) - Crash when using nested import statement. -- [#1322](https://github.com/modularml/mojo/issues/1322) - Crash when missing +- [#1322](https://github.com/modular/mojo/issues/1322) - Crash when missing types in variadic argument. -- [#1314](https://github.com/modularml/mojo/issues/1314) - Typecheck error when +- [#1314](https://github.com/modular/mojo/issues/1314) - Typecheck error when binding alias to parametric function with default argument. -- [#1248](https://github.com/modularml/mojo/issues/1248) - Crash when importing +- [#1248](https://github.com/modular/mojo/issues/1248) - Crash when importing from file the same name as another file in the search path. -- [#1354](https://github.com/modularml/mojo/issues/1354) - Crash when importing +- [#1354](https://github.com/modular/mojo/issues/1354) - Crash when importing from local package. -- [#1488](https://github.com/modularml/mojo/issues/1488) - Crash when setting +- [#1488](https://github.com/modular/mojo/issues/1488) - Crash when setting generic element field. -- [#1476](https://github.com/modularml/mojo/issues/1476) - Crash in interpreter +- [#1476](https://github.com/modular/mojo/issues/1476) - Crash in interpreter when calling functions in parameter context. -- [#1537](https://github.com/modularml/mojo/issues/1537) - Crash when copying +- [#1537](https://github.com/modular/mojo/issues/1537) - Crash when copying parameter value. -- [#1546](https://github.com/modularml/mojo/issues/1546) - Modify nested vector +- [#1546](https://github.com/modular/mojo/issues/1546) - Modify nested vector element crashes parser. -- [#1558](https://github.com/modularml/mojo/issues/1558) - Invalid import causes +- [#1558](https://github.com/modular/mojo/issues/1558) - Invalid import causes parser to crash. -- [#1562](https://github.com/modularml/mojo/issues/1562) - Crash when calling +- [#1562](https://github.com/modular/mojo/issues/1562) - Crash when calling parametric type member function. -- [#1577](https://github.com/modularml/mojo/issues/1577) - Crash when using +- [#1577](https://github.com/modular/mojo/issues/1577) - Crash when using unresolved package as a variable. -- [#1579](https://github.com/modularml/mojo/issues/1579) - Member access into +- [#1579](https://github.com/modular/mojo/issues/1579) - Member access into type instances causes a crash. -- [#1602](https://github.com/modularml/mojo/issues/1602) - Interpreter failure +- [#1602](https://github.com/modular/mojo/issues/1602) - Interpreter failure when constructing strings at compile time. -- [#1696](https://github.com/modularml/mojo/issues/1696) - Fixed an issue that +- [#1696](https://github.com/modular/mojo/issues/1696) - Fixed an issue that caused syntax highlighting to occasionally fail. -- [#1549](https://github.com/modularml/mojo/issues/1549) - Fixed an issue when +- [#1549](https://github.com/modular/mojo/issues/1549) - Fixed an issue when the shift amount is out of range in `SIMD.shift_left` and `SIMD.shift_right`. ## v0.7.0 (2024-01-25) @@ -4447,7 +4447,7 @@ experience without dedicated sugar. - The `simd_width` and `dtype` parameters of `polynomial_evaluate` have been switched. Based on the request in - [#1587](https://github.com/modularml/mojo/issues/1587), the + [#1587](https://github.com/modular/mojo/issues/1587), the `polynomial_evaluate` function has also been extended so that the `coefficients` parameter can take either a either a [`StaticTuple`](/mojo/stdlib/utils/static_tuple/StaticTuple) or a @@ -4458,50 +4458,50 @@ experience without dedicated sugar. ### 🛠️ Fixed -- [#1595](https://github.com/modularml/mojo/issues/1595) - Improve error message +- [#1595](https://github.com/modular/mojo/issues/1595) - Improve error message when trying to materialize `IntLiteral` in runtime code. - Raising an error from the initializer of a memory-only type now works correctly in the presence of complex control flow. Previously Mojo could run the destructor on `self` before it was initialized when exiting with an error. -- [#1096](https://github.com/modularml/mojo/issues/1096) - Improve warning +- [#1096](https://github.com/modular/mojo/issues/1096) - Improve warning messages for dead code in conditionals like `or` expressions. -- [#1419](https://github.com/modularml/mojo/issues/1419) - Fix assertion failure +- [#1419](https://github.com/modular/mojo/issues/1419) - Fix assertion failure with uninitialized lattice values. -- [#1402](https://github.com/modularml/mojo/issues/1402) - Fix movable trait not +- [#1402](https://github.com/modular/mojo/issues/1402) - Fix movable trait not detected on recursive struct implemented with `AnyPointer`. -- [#1399](https://github.com/modularml/mojo/issues/1399) - Fix parser crash when +- [#1399](https://github.com/modular/mojo/issues/1399) - Fix parser crash when a parameter type in a struct that implements a trait is misspelled. -- [#1152](https://github.com/modularml/mojo/issues/1152) - Allow mutable `self` +- [#1152](https://github.com/modular/mojo/issues/1152) - Allow mutable `self` argument when overloading operators using dunder methods. -- [#1493](https://github.com/modularml/mojo/issues/1493) - Fix crash in +- [#1493](https://github.com/modular/mojo/issues/1493) - Fix crash in `DynamicVector` copy constructor in certain situations. -- [#1316](https://github.com/modularml/mojo/issues/1316) - The `benchmark.keep` +- [#1316](https://github.com/modular/mojo/issues/1316) - The `benchmark.keep` function now properly handles vector types. -- [#1505](https://github.com/modularml/mojo/issues/1505) - The `simd.shuffle` +- [#1505](https://github.com/modular/mojo/issues/1505) - The `simd.shuffle` operation now works on 64 element permutations. -- [#1355](https://github.com/modularml/mojo/issues/1355) - Fix `String.find()` +- [#1355](https://github.com/modular/mojo/issues/1355) - Fix `String.find()` returning wrong value when starting index is non-zero. -- [#1367](https://github.com/modularml/mojo/issues/1367) - Fix `String.replace()` +- [#1367](https://github.com/modular/mojo/issues/1367) - Fix `String.replace()` returning incorrect results for multi-character search strings. -- [#1535](https://github.com/modularml/mojo/issues/1535) - Invalid error `field +- [#1535](https://github.com/modular/mojo/issues/1535) - Invalid error `field 'w.x.y' destroyed out of the middle of a value, preventing the overall value from being destroyed`. -- [#1475](https://github.com/modularml/mojo/issues/1475) - Assertion failure in +- [#1475](https://github.com/modular/mojo/issues/1475) - Assertion failure in nested loop. -- [#1591](https://github.com/modularml/mojo/issues/1591) - Assertion failure +- [#1591](https://github.com/modular/mojo/issues/1591) - Assertion failure when using `AnyType` struct member. -- [#1503](https://github.com/modularml/mojo/issues/1503) - Rename the mojo build +- [#1503](https://github.com/modular/mojo/issues/1503) - Rename the mojo build of LLDB to `mojo-lldb`, to prevent name collisions with the system's LLDB. -- [#1542](https://github.com/modularml/mojo/issues/1542) - `@unroll` does not +- [#1542](https://github.com/modular/mojo/issues/1542) - `@unroll` does not accept alias as unroll factor. -- [#1443](https://github.com/modularml/mojo/issues/1443) - Compiler crash on +- [#1443](https://github.com/modular/mojo/issues/1443) - Compiler crash on variadic list of traits. -- [#1604](https://github.com/modularml/mojo/issues/1604) - Variable of trivial +- [#1604](https://github.com/modular/mojo/issues/1604) - Variable of trivial type not destroyed by transferring ownership. -- [#1341](https://github.com/modularml/mojo/issues/1341) - Segmentation fault +- [#1341](https://github.com/modular/mojo/issues/1341) - Segmentation fault when passing closures around. -- [#217](https://github.com/modularml/mojo/issues/217) - Closure state is +- [#217](https://github.com/modular/mojo/issues/217) - Closure state is stack allocated. ## v0.6.1 (2023-12-18) @@ -4563,23 +4563,23 @@ experience without dedicated sugar. ### 🛠️ Fixed -- [#1421](https://github.com/modularml/mojo/issues/1421) - Fixed a crash when +- [#1421](https://github.com/modular/mojo/issues/1421) - Fixed a crash when using Tuples in the REPL. -- [#222](https://github.com/modularml/mojo/issues/222) - Generate an error +- [#222](https://github.com/modular/mojo/issues/222) - Generate an error for obviously self recursive functions. -- [#1408](https://github.com/modularml/mojo/issues/1408) - Fix overload +- [#1408](https://github.com/modular/mojo/issues/1408) - Fix overload resolution when candidates can return generic types. -- [#1413](https://github.com/modularml/mojo/issues/1413) and - [#1395](https://github.com/modularml/mojo/issues/1395) - Do not crash when +- [#1413](https://github.com/modular/mojo/issues/1413) and + [#1395](https://github.com/modular/mojo/issues/1395) - Do not crash when re-declaring a builtin declaration. -- [#1307](https://github.com/modularml/mojo/issues/1307) - Fix compatibility of +- [#1307](https://github.com/modular/mojo/issues/1307) - Fix compatibility of function signatures that only differ in default argument values. -- [#1380](https://github.com/modularml/mojo/issues/1380) - Fix printing +- [#1380](https://github.com/modular/mojo/issues/1380) - Fix printing of empty `String`. ## v0.6.0 (2023-12-04) @@ -4714,7 +4714,7 @@ experience without dedicated sugar. manual (now deprecated). Plus, the entire Mojo Manual and other Mojo docs are now [open-sourced on - GitHub](https://github.com/modularml/mojo/tree/main/docs), and we'd love + GitHub](https://github.com/modular/mojo/tree/main/docs), and we'd love to accept contributions to help us improve them! - Mojo now supports partial automatic parameterization: when a function is @@ -4882,7 +4882,7 @@ the previous "read to EOF" behavior when size is negative. - The Mojo Language Server now implements the Document Symbols request. IDEs use this to provide support for **Outline View** and **Go to Symbol**. This - addresses [Issue #960](https://github.com/modularml/mojo/issues/960). + addresses [Issue #960](https://github.com/modular/mojo/issues/960). - The Mojo Language Server now shows documentation when code completing modules or packages in `import` statements. @@ -4946,31 +4946,31 @@ the previous "read to EOF" behavior when size is negative. ### 🛠️ Fixed -- [#734](https://github.com/modularml/mojo/issues/734) - Consumption of struct +- [#734](https://github.com/modular/mojo/issues/734) - Consumption of struct works only for types with a `__del__` method. -- [#910](https://github.com/modularml/mojo/issues/910) - Parser crash when +- [#910](https://github.com/modular/mojo/issues/910) - Parser crash when using memory-only generic type as return of function that `raise`s. -- [#1060](https://github.com/modularml/mojo/issues/1060) - Mojo happily parses +- [#1060](https://github.com/modular/mojo/issues/1060) - Mojo happily parses code that has messed up indentation -- [#1159](https://github.com/modularml/mojo/issues/1159) - The language server +- [#1159](https://github.com/modular/mojo/issues/1159) - The language server doesn't warn about bad return type. -- [#1166](https://github.com/modularml/mojo/issues/1166) - warning: unreachable +- [#1166](https://github.com/modular/mojo/issues/1166) - warning: unreachable code after return statement with context manager -- [#1098](https://github.com/modularml/mojo/issues/1098) - The language server +- [#1098](https://github.com/modular/mojo/issues/1098) - The language server doesn't highlight properties of PythonObjects correctly. -- [#1153](https://github.com/modularml/mojo/issues/1153) - The language server +- [#1153](https://github.com/modular/mojo/issues/1153) - The language server crashes when parsing an invalid multi-nested module import. -- [#1236](https://github.com/modularml/mojo/issues/1236) - The language server +- [#1236](https://github.com/modular/mojo/issues/1236) - The language server doesn't show autocomplete in if statements. -- [#1246](https://github.com/modularml/mojo/issues/1246) - Warning diagnostics +- [#1246](https://github.com/modular/mojo/issues/1246) - Warning diagnostics are transient in the presence of caching. ### Known Issue @@ -5225,32 +5225,32 @@ the previous "read to EOF" behavior when size is negative. ### 🛠️ Fixed -- [#532](https://github.com/modularml/mojo/issues/532) - Compiler optimizing +- [#532](https://github.com/modular/mojo/issues/532) - Compiler optimizing while True loop away -- [#760](https://github.com/modularml/mojo/issues/760) - Compilation error: +- [#760](https://github.com/modular/mojo/issues/760) - Compilation error: 'hlcf.for.yield' op specifies 0 branch inputs but target expected 1 along control-flow edge from here -- [#849](https://github.com/modularml/mojo/issues/849) - The `Tensor` type is +- [#849](https://github.com/modular/mojo/issues/849) - The `Tensor` type is now initialized with zeros at construction time. -- [#912](https://github.com/modularml/mojo/issues/912) - Invalid load for +- [#912](https://github.com/modular/mojo/issues/912) - Invalid load for `__get_address_as_lvalue`. -- [#916](https://github.com/modularml/mojo/issues/916) - Parser crash when +- [#916](https://github.com/modular/mojo/issues/916) - Parser crash when specifying default values for `inout` arguments. -- [#943](https://github.com/modularml/mojo/issues/943) - Mojo hangs if you +- [#943](https://github.com/modular/mojo/issues/943) - Mojo hangs if you use continue in the nested loop -- [#957](https://github.com/modularml/mojo/issues/957) - Parser crash when a +- [#957](https://github.com/modular/mojo/issues/957) - Parser crash when a function call with variadic arguments of a memory-only type is evaluated at compile time. -- [#990](https://github.com/modularml/mojo/issues/990) - Fixes rounding +- [#990](https://github.com/modular/mojo/issues/990) - Fixes rounding issue with floor division with negative numerator. -- [#1018](https://github.com/modularml/mojo/issues/1018) - In some cases the +- [#1018](https://github.com/modular/mojo/issues/1018) - In some cases the sort function was returning invalid results. This release fixes some of these corner cases. -- [#1010](https://github.com/modularml/mojo/issues/1010) - Initializing tensor +- [#1010](https://github.com/modular/mojo/issues/1010) - Initializing tensor in alias declaration results in crash. -- [#1110](https://github.com/modularml/mojo/issues/1110) - The `time.now()` +- [#1110](https://github.com/modular/mojo/issues/1110) - The `time.now()` function now returns nanoseconds across all operating systems. -- [#1115](https://github.com/modularml/mojo/issues/1115) - cannot load +- [#1115](https://github.com/modular/mojo/issues/1115) - cannot load non-register passable type into SSA register. ## v0.4.0 for Mac (2023-10-19) @@ -5429,33 +5429,33 @@ the previous "read to EOF" behavior when size is negative. ### 🛠️ Fixed -- [#794](https://github.com/modularml/mojo/issues/794) - Parser crash when +- [#794](https://github.com/modular/mojo/issues/794) - Parser crash when using the `in` operator. -- [#936](https://github.com/modularml/mojo/issues/936) - The `Int` constructor +- [#936](https://github.com/modular/mojo/issues/936) - The `Int` constructor now accepts other `Int` instances. -- [#921](https://github.com/modularml/mojo/issues/921) - Better error message +- [#921](https://github.com/modular/mojo/issues/921) - Better error message when running `mojo` on a module with no `main` function. -- [#556](https://github.com/modularml/mojo/issues/556) - UInt64s are now +- [#556](https://github.com/modular/mojo/issues/556) - UInt64s are now printed correctly. -- [#804](https://github.com/modularml/mojo/issues/804) - Emit error instead of +- [#804](https://github.com/modular/mojo/issues/804) - Emit error instead of crashing when passing variadic arguments of unsupported types. -- [#833](https://github.com/modularml/mojo/issues/833) - Parser crash when +- [#833](https://github.com/modular/mojo/issues/833) - Parser crash when assigning module value. -- [#752](https://github.com/modularml/mojo/issues/752) - Parser crash when +- [#752](https://github.com/modular/mojo/issues/752) - Parser crash when calling async def. -- [#711](https://github.com/modularml/mojo/issues/711) - The overload resolution +- [#711](https://github.com/modular/mojo/issues/711) - The overload resolution logic now correctly prioritizes instance methods over static methods (if candidates are an equally good match otherwise), and no longer crashed if a static method has a `Self` type as its first argument. -- [#859](https://github.com/modularml/mojo/issues/859) - Fix confusing error and +- [#859](https://github.com/modular/mojo/issues/859) - Fix confusing error and documentation of the `rebind` builtin. -- [#753](https://github.com/modularml/mojo/issues/753) - Direct use of LLVM +- [#753](https://github.com/modular/mojo/issues/753) - Direct use of LLVM dialect produces strange errors in the compiler. -- [#926](https://github.com/modularml/mojo/issues/926) - Fixes an issue that +- [#926](https://github.com/modular/mojo/issues/926) - Fixes an issue that occurred when a function with a return type of `StringRef` raised an error. When the function raised an error, it incorrectly returned the string value of that error. -- [#536](https://github.com/modularml/mojo/issues/536) - Report More information +- [#536](https://github.com/modular/mojo/issues/536) - Report More information on python exception. ## v0.3.1 (2023-09-28) @@ -5466,15 +5466,15 @@ installing the previous versions of the SDK, this release may be for you. ### 🛠️ Fixed -- [#538](https://github.com/modularml/mojo/issues/538) - Installation hangs +- [#538](https://github.com/modular/mojo/issues/538) - Installation hangs during the testing phase. This issue occurs on machines with a low number of CPU cores, such as free AWS EC2 instances and GitHub Codespaces. -- [#590](https://github.com/modularml/mojo/issues/590) - Installation fails +- [#590](https://github.com/modular/mojo/issues/590) - Installation fails with a “failed to run python” message. -- [#672](https://github.com/modularml/mojo/issues/672) - Language server hangs +- [#672](https://github.com/modular/mojo/issues/672) - Language server hangs on code completion. Related to #538, this occurs on machines with a low number of CPU cores. -- [#913](https://github.com/modularml/mojo/issues/913) - In the REPL and Jupyter +- [#913](https://github.com/modular/mojo/issues/913) - In the REPL and Jupyter notebooks, inline comments were being parsed incorrectly. ## v0.3.0 (2023-09-21) @@ -5576,7 +5576,7 @@ Code](https://marketplace.visualstudio.com/items?itemName=modular-mojotools.vsco - The Mojo Language Server now supports top-level code completions, enabling completion when typing a reference to a variable, type, etc. This resolves - [#679](https://github.com/modularml/mojo/issues/679). + [#679](https://github.com/modular/mojo/issues/679). - The Mojo REPL now colorizes the resultant variables to help distinguish input expressions from the output variables. @@ -5615,19 +5615,19 @@ Code](https://marketplace.visualstudio.com/items?itemName=modular-mojotools.vsco ### 🛠️ Fixed -- [#503](https://github.com/modularml/mojo/issues/503) - Improve error message +- [#503](https://github.com/modular/mojo/issues/503) - Improve error message for failure lowering `kgen.param.constant`. -- [#554](https://github.com/modularml/mojo/issues/554) - Alias of static tuple +- [#554](https://github.com/modular/mojo/issues/554) - Alias of static tuple fails to expand. -- [#500](https://github.com/modularml/mojo/issues/500) - Call expansion failed +- [#500](https://github.com/modular/mojo/issues/500) - Call expansion failed due to verifier error. -- [#422](https://github.com/modularml/mojo/issues/422) - Incorrect comment +- [#422](https://github.com/modular/mojo/issues/422) - Incorrect comment detection in multiline strings. -- [#729](https://github.com/modularml/mojo/issues/740) - Improve messaging on +- [#729](https://github.com/modular/mojo/issues/740) - Improve messaging on how to exit the REPL. -- [#756](https://github.com/modularml/mojo/issues/756) - Fix initialization +- [#756](https://github.com/modular/mojo/issues/756) - Fix initialization errors of the VS Code extension. -- [#575](https://github.com/modularml/mojo/issues/575) - Build LLDB/REPL with +- [#575](https://github.com/modular/mojo/issues/575) - Build LLDB/REPL with libedit for a nicer editing experience in the terminal. ## v0.2.1 (2023-09-07) @@ -5690,17 +5690,17 @@ All earlier releases were considered version 0.1. been changed to enable type inference. Now it's possible to write `rotate_right[shift_val](simd_val)` and have the `dtype` and `simd_width` inferred from the argument. This addresses - [Issue #528](https://github.com/modularml/mojo/issues/528). + [Issue #528](https://github.com/modular/mojo/issues/528). ### 🛠️ Fixed - Fixed a bug causing the parser to crash when the `with` statement was written without a colon. - This addresses [Issue #529](https://github.com/modularml/mojo/issues/529). + This addresses [Issue #529](https://github.com/modular/mojo/issues/529). - Incorrect imports no longer crash when there are other errors at the top level of a module. This fixes [Issue - #531](https://github.com/modularml/mojo/issues/531). + #531](https://github.com/modular/mojo/issues/531). ## August 2023 @@ -5775,15 +5775,15 @@ All earlier releases were considered version 0.1. #### 🛠️ Fixed - Fixed issues with print formatting for `DType.uint16` and `DType.int16`. -- [Issue #499](https://github.com/modularml/mojo/issues/499) - Two new +- [Issue #499](https://github.com/modular/mojo/issues/499) - Two new `rotate_right` and `rotate_left` functions have been added to the SIMD module. -- [Issue #429](https://github.com/modularml/mojo/issues/429) - You can now +- [Issue #429](https://github.com/modular/mojo/issues/429) - You can now construct a `Bool` from a `SIMD` type whose element-type is `DType.bool`. -- [Issue #350](https://github.com/modularml/mojo/issues/350) - Confusing Matrix +- [Issue #350](https://github.com/modular/mojo/issues/350) - Confusing Matrix implementation -- [Issue #349](https://github.com/modularml/mojo/issues/349) - Missing load_tr +- [Issue #349](https://github.com/modular/mojo/issues/349) - Missing load_tr in struct Matrix -- [Issue #501](https://github.com/modularml/mojo/issues/501) - Missing syntax +- [Issue #501](https://github.com/modular/mojo/issues/501) - Missing syntax error messages in Python expressions. ### 2023-08-09 @@ -5847,7 +5847,7 @@ All earlier releases were considered version 0.1. #### 🛠️ Fixed -- [Issue #53](https://github.com/modularml/mojo/issues/53) - `Int` now +- [Issue #53](https://github.com/modular/mojo/issues/53) - `Int` now implements true division with the `/` operator. Similar to Python, this returns a 64-bit floating point number. The corresponding in-place operator, `/=`, has the same semantics as `//=`. @@ -5887,10 +5887,10 @@ All earlier releases were considered version 0.1. #### 🛠️ Fixed -- [Issue #437](https://github.com/modularml/mojo/issues/437) - Range can now +- [Issue #437](https://github.com/modular/mojo/issues/437) - Range can now be instantiated with a PythonObject. -- [Issue #288](https://github.com/modularml/mojo/issues/288) - Python strings +- [Issue #288](https://github.com/modular/mojo/issues/288) - Python strings can now be safely copied. ### 2023-07-20 @@ -5899,7 +5899,7 @@ All earlier releases were considered version 0.1. - Mojo now includes a `Limits` module, which contains functions to get the max and min values representable by a type, as requested in [Issue - #51](https://github.com/modularml/mojo/issues/51). The following functions + #51](https://github.com/modular/mojo/issues/51). The following functions moved from `Math` to `Limits`: `inf()`, `neginf()`, `isinf()`, `isfinite()`. - Mojo decorators are now distinguished between "signature" and "body" @@ -5966,14 +5966,14 @@ All earlier releases were considered version 0.1. - Reverted the feature from 2023-02-13 that allowed unqualified struct members. Use the `Self` keyword to conveniently access struct members with bound parameters instead. This was required to fix - [Issue #260](https://github.com/modularml/mojo/issues/260). + [Issue #260](https://github.com/modular/mojo/issues/260). - Updated the RayTracing notebook: added step 5 to create specular lighting for more realistic images and step 6 to add a background image. #### 🛠️ Fixed -- [Issue #260](https://github.com/modularml/mojo/issues/260) - Definitions +- [Issue #260](https://github.com/modular/mojo/issues/260) - Definitions inside structs no longer shadow definitions outside of struct definitions. ### 2023-07-12 @@ -6010,7 +6010,7 @@ All earlier releases were considered version 0.1. - The walrus operator now works in if/while statements without parentheses, e.g. `if x := function():`. -- [Issue #428](https://github.com/modularml/mojo/issues/428) - The +- [Issue #428](https://github.com/modular/mojo/issues/428) - The `FloatLiteral` and `SIMD` types now support conversion to `Int` via the `to_int` or `__int__` method calls. The behavior matches that of Python, which rounds towards zero. @@ -6040,21 +6040,21 @@ All earlier releases were considered version 0.1. #### 🛠️ Fixed -- [Issue #253](https://github.com/modularml/mojo/issues/253) - Issue +- [Issue #253](https://github.com/modular/mojo/issues/253) - Issue when accessing a struct member alias without providing parameters. -- [Issue #404](https://github.com/modularml/mojo/issues/404) - The docs now use +- [Issue #404](https://github.com/modular/mojo/issues/404) - The docs now use `snake_case` for variable names, which more closely conforms to Python's style. -- [Issue #379](https://github.com/modularml/mojo/issues/379) - Tuple +- [Issue #379](https://github.com/modular/mojo/issues/379) - Tuple limitations have been addressed and multiple return values are now supported, even without parentheses. -- [Issue #347](https://github.com/modularml/mojo/issues/347) - Tuples no longer +- [Issue #347](https://github.com/modular/mojo/issues/347) - Tuples no longer require parentheses. -- [Issue #320](https://github.com/modularml/mojo/issues/320) - Python objects +- [Issue #320](https://github.com/modular/mojo/issues/320) - Python objects are now traversable via `for` loops. ## June 2023 @@ -6080,18 +6080,18 @@ All earlier releases were considered version 0.1. #### 🛠️ Fixed -- [Issue #229](https://github.com/modularml/mojo/issues/229) - Issue when +- [Issue #229](https://github.com/modular/mojo/issues/229) - Issue when throwing an exception from `__init__` before all fields are initialized. -- [Issue #74](https://github.com/modularml/mojo/issues/74) - Struct +- [Issue #74](https://github.com/modular/mojo/issues/74) - Struct definition with recursive reference crashes. -- [Issue #285](https://github.com/modularml/mojo/issues/285) - The +- [Issue #285](https://github.com/modular/mojo/issues/285) - The [`TargetInfo`](/mojo/stdlib/sys/info) module now includes `is_little_endian()` and `is_big_endian()` to check if the target host uses either little or big endian. -- [Issue #254](https://github.com/modularml/mojo/issues/254) - Parameter name +- [Issue #254](https://github.com/modular/mojo/issues/254) - Parameter name shadowing in nested scopes is now handled correctly. ### 2023-06-21 @@ -6148,14 +6148,14 @@ only in declared parameter names, e.g. the following now works correctly: fn foobar[w: Int, S: DType]() -> SIMD[S, w]: ... ``` -- [Issue #219](https://github.com/modularml/mojo/issues/219) - Issue when +- [Issue #219](https://github.com/modular/mojo/issues/219) - Issue when redefining a function and a struct defined in the same cell. -- [Issue #355](https://github.com/modularml/mojo/issues/355) - The loop order +- [Issue #355](https://github.com/modular/mojo/issues/355) - The loop order in the Matmul notebook for Python and naive mojo have been reordered for consistency. The loop order now follows (M, K, N) ordering. -- [Issue #309](https://github.com/modularml/mojo/issues/309) - Use snake case +- [Issue #309](https://github.com/modular/mojo/issues/309) - Use snake case naming within the testing package and move the asserts out of the TestSuite struct. @@ -6177,11 +6177,11 @@ only in declared parameter names, e.g. the following now works correctly: #### 🛠️ Fixed -- [Issue #354](https://github.com/modularml/mojo/issues/354) - Returning a tuple +- [Issue #354](https://github.com/modular/mojo/issues/354) - Returning a tuple doesn't work even with parens. -- [Issue #365](https://github.com/modularml/mojo/issues/365) - Copy-paste error +- [Issue #365](https://github.com/modular/mojo/issues/365) - Copy-paste error in `FloatLiteral` docs. -- [Issue #357](https://github.com/modularml/mojo/issues/357) - Crash when +- [Issue #357](https://github.com/modular/mojo/issues/357) - Crash when missing input parameter to variadic parameter struct member function. ### 2023-06-07 @@ -6198,7 +6198,7 @@ only in declared parameter names, e.g. the following now works correctly: - Mojo Playground no longer includes the following Python packages (due to size, compute costs, and - [environment complications](https://github.com/modularml/mojo/issues/300)): + [environment complications](https://github.com/modular/mojo/issues/300)): `torch`, `tensorflow`, `keras`, `transformers`. #### 🦋 Changed @@ -6206,19 +6206,19 @@ only in declared parameter names, e.g. the following now works correctly: - The data types and scalar names now conform to the naming convention used by numpy. So we use `Int32` instead of `SI32`, similarly using `Float32` instead of `F32`. Closes - [Issue #152](https://github.com/modularml/mojo/issues/152). + [Issue #152](https://github.com/modular/mojo/issues/152). #### 🛠️ Fixed -- [Issue #287](https://github.com/modularml/mojo/issues/287) - computed +- [Issue #287](https://github.com/modular/mojo/issues/287) - computed lvalues don't handle raising functions correctly -- [Issue #318](https://github.com/modularml/mojo/issues/318) - Large integers +- [Issue #318](https://github.com/modular/mojo/issues/318) - Large integers are not being printed correctly -- [Issue #326](https://github.com/modularml/mojo/issues/326) - Float modulo +- [Issue #326](https://github.com/modular/mojo/issues/326) - Float modulo operator is not working as expected -- [Issue #282](https://github.com/modularml/mojo/issues/282) - Default arguments +- [Issue #282](https://github.com/modular/mojo/issues/282) - Default arguments are not working as expected -- [Issue #271](https://github.com/modularml/mojo/issues/271) - Confusing error +- [Issue #271](https://github.com/modular/mojo/issues/271) - Confusing error message when converting between function types with different result semantics ## May 2023 @@ -6228,7 +6228,7 @@ only in declared parameter names, e.g. the following now works correctly: #### ⭐️ New - Mojo Playground now includes the following Python packages (in response to - [popular demand](https://github.com/modularml/mojo/discussions/173)): + [popular demand](https://github.com/modular/mojo/discussions/173)): `torch`, `tensorflow`, `polars`, `opencv-python`, `keras`, `Pillow`, `plotly`, `seaborn`, `sympy`, `transformers`. @@ -6292,9 +6292,9 @@ only in declared parameter names, e.g. the following now works correctly: #### 🛠️ Fixed -- [Issue #231](https://github.com/modularml/mojo/issues/231) - Unexpected error +- [Issue #231](https://github.com/modular/mojo/issues/231) - Unexpected error when a Python expression raises an exception -- [Issue #119](https://github.com/modularml/mojo/issues/119) - The REPL fails +- [Issue #119](https://github.com/modular/mojo/issues/119) - The REPL fails when a python variable is redefined ### 2023-05-24 @@ -6319,39 +6319,39 @@ only in declared parameter names, e.g. the following now works correctly: #### 🛠️ Fixed -- [Issue #204](https://github.com/modularml/mojo/issues/204) - Mojo REPL +- [Issue #204](https://github.com/modular/mojo/issues/204) - Mojo REPL crash when returning a String at compile-time -- [Issue #143](https://github.com/modularml/mojo/issues/143) - synthesized +- [Issue #143](https://github.com/modular/mojo/issues/143) - synthesized init in `@register_passable` type doesn't get correct convention. -- [Issue #201](https://github.com/modularml/mojo/issues/201) - String literal +- [Issue #201](https://github.com/modular/mojo/issues/201) - String literal concatenation is too eager. -- [Issue #209](https://github.com/modularml/mojo/issues/209) - [QoI] Terrible +- [Issue #209](https://github.com/modular/mojo/issues/209) - [QoI] Terrible error message trying to convert a type to itself. -- [Issue #32](https://github.com/modularml/mojo/issues/32) - Include struct +- [Issue #32](https://github.com/modular/mojo/issues/32) - Include struct fields in docgen -- [Issue #50](https://github.com/modularml/mojo/issues/50) - Int to string +- [Issue #50](https://github.com/modular/mojo/issues/50) - Int to string conversion crashes due to buffer overflow -- [Issue #132](https://github.com/modularml/mojo/issues/132) - PythonObject +- [Issue #132](https://github.com/modular/mojo/issues/132) - PythonObject `to_int` method has a misleading name -- [Issue #189](https://github.com/modularml/mojo/issues/189) - PythonObject bool +- [Issue #189](https://github.com/modular/mojo/issues/189) - PythonObject bool conversion is incorrect -- [Issue #65](https://github.com/modularml/mojo/issues/65) - Add SIMD +- [Issue #65](https://github.com/modular/mojo/issues/65) - Add SIMD constructor from Bool -- [Issue #153](https://github.com/modularml/mojo/issues/153) - Meaning of +- [Issue #153](https://github.com/modular/mojo/issues/153) - Meaning of `Time.now` function result is unclear -- [Issue #165](https://github.com/modularml/mojo/issues/165) - Type in +- [Issue #165](https://github.com/modular/mojo/issues/165) - Type in `Pointer.free` documentation -- [Issue #210](https://github.com/modularml/mojo/issues/210) - Parameter results +- [Issue #210](https://github.com/modular/mojo/issues/210) - Parameter results cannot be declared outside top-level in function -- [Issue #214](https://github.com/modularml/mojo/issues/214) - Pointer offset +- [Issue #214](https://github.com/modular/mojo/issues/214) - Pointer offset calculations at compile-time are incorrect -- [Issue #115](https://github.com/modularml/mojo/issues/115) - Float printing +- [Issue #115](https://github.com/modular/mojo/issues/115) - Float printing does not include the right number of digits -- [Issue #202](https://github.com/modularml/mojo/issues/202) - +- [Issue #202](https://github.com/modular/mojo/issues/202) - `kgen.unreachable` inside nested functions is illegal -- [Issue #235](https://github.com/modularml/mojo/issues/235) - Crash when +- [Issue #235](https://github.com/modular/mojo/issues/235) - Crash when register passable struct field is not register passable -- [Issue #237](https://github.com/modularml/mojo/issues/237) - Parameter +- [Issue #237](https://github.com/modular/mojo/issues/237) - Parameter closure sharp edges are not documented ### 2023-05-16 @@ -6366,16 +6366,16 @@ only in declared parameter names, e.g. the following now works correctly: #### 🛠️ Fixed -- [Issue #98](https://github.com/modularml/mojo/issues/98): +- [Issue #98](https://github.com/modular/mojo/issues/98): Incorrect error with lifetime tracking in loop. -- [Issue #49](https://github.com/modularml/mojo/issues/49): Type inference +- [Issue #49](https://github.com/modular/mojo/issues/49): Type inference issue (?) in 'ternary assignment' operation (FloatLiteral vs. 'SIMD[f32, 1]'). -- [Issue #48](https://github.com/modularml/mojo/issues/48): +- [Issue #48](https://github.com/modular/mojo/issues/48): and/or don't work with memory-only types. -- [Issue #11](https://github.com/modularml/mojo/issues/11): `setitem` Support +- [Issue #11](https://github.com/modular/mojo/issues/11): `setitem` Support for `PythonObject`. ### 2023-05-11 @@ -6393,7 +6393,7 @@ only in declared parameter names, e.g. the following now works correctly: - The "byref" syntax with the `&` sigil has changed to use an `inout` keyword to be more similar to the `borrowed` and `owned` syntax in arguments. - Please see [Issue #7](https://github.com/modularml/mojo/issues/7) for more + Please see [Issue #7](https://github.com/modular/mojo/issues/7) for more information. - Optimized the Matrix multiplication implementation in the notebook. @@ -6410,10 +6410,10 @@ from "consume" to "transfer." - Fixed missing overloads for `Testing.assertEqual` so that they work on `Integer` and `String` values. -- [Issue #6](https://github.com/modularml/mojo/issues/6): +- [Issue #6](https://github.com/modular/mojo/issues/6): Playground stops evaluating cells when a simple generic is defined. -- [Issue #18](https://github.com/modularml/mojo/issues/18): +- [Issue #18](https://github.com/modular/mojo/issues/18): Memory leak in Python interoperability was removed. ### 2023-05-02 diff --git a/docs/changelog.md b/docs/changelog.md index d23688bfe9..2a33bc61c4 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -393,17 +393,17 @@ what we publish. - The command `mojo debug --vscode` now sets the current working directory properly. -- [Issue #3796](https://github.com/modularml/mojo/issues/3796) - Compiler crash +- [Issue #3796](https://github.com/modular/mojo/issues/3796) - Compiler crash handling for-else statement. -- [Issue #3540](https://github.com/modularml/mojo/issues/3540) - Using named +- [Issue #3540](https://github.com/modular/mojo/issues/3540) - Using named output slot breaks trait conformance -- [Issue #3617](https://github.com/modularml/mojo/issues/3617) - Can't generate +- [Issue #3617](https://github.com/modular/mojo/issues/3617) - Can't generate the constructors for a type wrapping `!lit.ref` - The Mojo Language Server doesn't crash anymore on empty **init**.mojo files. - [Issue #3826](https://github.com/modularml/mojo/issues/3826). + [Issue #3826](https://github.com/modular/mojo/issues/3826). -- [Issue #3935](https://github.com/modularml/mojo/issues/3935) - Confusing OOM +- [Issue #3935](https://github.com/modular/mojo/issues/3935) - Confusing OOM error when using Tuple.get incorrectly. diff --git a/docs/faq.md b/docs/faq.md index d3e11a6a59..e89d8d9b0f 100644 --- a/docs/faq.md +++ b/docs/faq.md @@ -147,7 +147,7 @@ develop AI algorithms, but as we grow Mojo into a superset of Python, you can use it for other things like HPC, data transformations, writing pre/post processing operations, and much more. For examples of how Mojo can be used for other general programming tasks, see our [Mojo -examples](https://github.com/modularml/mojo/tree/main/examples). +examples](https://github.com/modular/mojo/tree/main/examples). ### Is Mojo interpreted or compiled? @@ -245,7 +245,7 @@ multiplication](https://www.modular.com/blog/the-worlds-fastest-unified-matrix-m ### Mojo’s matmul performance in the notebook doesn’t seem that great. What’s going on? The [Mojo Matmul -notebook](https://github.com/modularml/mojo/blob/main/examples/notebooks/Matmul.ipynb) +notebook](https://github.com/modular/mojo/blob/main/examples/notebooks/Matmul.ipynb) uses matrix multiplication to show off some Mojo features in a scenario that you would never attempt in pure Python. So that implementation is like a “toy” matmul implementation and it doesn’t measure up to the state of the art. @@ -282,7 +282,7 @@ Yes, but it's different. When we first announced Mojo, it was available only through login, in a JupyterLab environment. Now that Mojo is available for local development, we've shut down that service (you can instead [run Mojo notebooks -locally](https://github.com/modularml/mojo/tree/main/examples/notebooks#readme)). +locally](https://github.com/modular/mojo/tree/main/examples/notebooks#readme)). The new [Mojo Playground](/mojo/playground) is built into the docs website and does not require login. @@ -301,7 +301,7 @@ and does not require login. using buttons in the Playground toolbar. - There might be some bugs. Please [report issues and feedback on - GitHub](https://github.com/modularml/mojo/issues/new/choose). + GitHub](https://github.com/modular/mojo/issues/new/choose). ### What are the license terms for the SDK? diff --git a/docs/manual/basics.mdx b/docs/manual/basics.mdx index edeb731899..301dfdb90e 100644 --- a/docs/manual/basics.mdx +++ b/docs/manual/basics.mdx @@ -77,7 +77,7 @@ def main(): You don't need a `main()` function when coding in the [REPL](/mojo/manual/get-started#2-run-code-in-the-repl) or in a [Jupyter -notebook](https://github.com/modularml/mojo/tree/main/examples/notebooks#readme). +notebook](https://github.com/modular/mojo/tree/main/examples/notebooks#readme). ::: @@ -390,14 +390,14 @@ here is [Functions](/mojo/manual/functions). Otherwise, here are some other resources to check out: * If you want to experiment with some code, clone [the Mojo - repo](https://github.com/modularml/mojo/) to try our code examples: + repo](https://github.com/modular/mojo/) to try our code examples: ```sh - git clone https://github.com/modularml/mojo.git + git clone https://github.com/modular/mojo.git ``` In addition to several `.mojo` examples, the repo includes [Jupyter - notebooks](https://github.com/modularml/mojo/tree/main/examples/notebooks#readme) + notebooks](https://github.com/modular/mojo/tree/main/examples/notebooks#readme) that teach advanced Mojo features. * To see all the available Mojo APIs, check out the [Mojo standard library diff --git a/docs/manual/get-started.mdx b/docs/manual/get-started.mdx index 08e6f575e0..94d6a02348 100644 --- a/docs/manual/get-started.mdx +++ b/docs/manual/get-started.mdx @@ -2,7 +2,7 @@ title: "Get started with Mojo" sidebar_label: "Tutorial: Get started with Mojo" description: "Install Mojo and learn the language basics by building a complete Mojo program" -github_url: https://github.com/modularml/mojo/tree/nightly/examples/life +github_url: https://github.com/modular/mojo/tree/nightly/examples/life image: /images/artwork/mojo-get-started.jpg --- @@ -29,7 +29,7 @@ tried to keep the explanations simple, and we included links along the way for you to go learn more about each topic. And if you just want to see the finished code, you can [get it on -GitHub](https://github.com/modularml/mojo/tree/nightly/examples/life). +GitHub](https://github.com/modular/mojo/tree/nightly/examples/life). ## 1. Create a Mojo project with `magic` diff --git a/docs/manual/operators.mdx b/docs/manual/operators.mdx index 768a1aab81..baaf9f5d8f 100644 --- a/docs/manual/operators.mdx +++ b/docs/manual/operators.mdx @@ -1030,7 +1030,7 @@ operations like printing complex values. We'll also allow mixing `Complex` and This example builds our `Complex` struct incrementally. You can also find the [complete example in the public Mojo GitHub -repo](https://github.com/modularml/mojo/tree/nightly/examples/operators). +repo](https://github.com/modular/mojo/tree/nightly/examples/operators). :::note diff --git a/docs/manual/parameters/index.mdx b/docs/manual/parameters/index.mdx index 084aba0ca8..169ce7db48 100644 --- a/docs/manual/parameters/index.mdx +++ b/docs/manual/parameters/index.mdx @@ -140,7 +140,7 @@ Mojo's support for generics is still early. You can write generic functions like this using traits and parameters. You can also write generic collections like `List` and `Dict`. If you're interested in learning how these types work, you can find the source code for the standard library collection types -[on GitHub](https://github.com/modularml/mojo/blob/nightly/stdlib/src/collections/). +[on GitHub](https://github.com/modular/mojo/blob/nightly/stdlib/src/collections/). ## Parameterized structs diff --git a/docs/manual/values/lifetimes.mdx b/docs/manual/values/lifetimes.mdx index 3c1871c0d7..bd96d45b95 100644 --- a/docs/manual/values/lifetimes.mdx +++ b/docs/manual/values/lifetimes.mdx @@ -425,7 +425,7 @@ for i in range(len(nums)): (You can find the code for the `List` iterator in the [Mojo -repo](https://github.com/modularml/mojo/blob/main/stdlib/src/collections/list.mojo#L63).) +repo](https://github.com/modular/mojo/blob/main/stdlib/src/collections/list.mojo#L63).) #### Parametric mutability of return values diff --git a/docs/notebooks/index.mdx b/docs/notebooks/index.mdx index 636b8e4a25..0b88575238 100644 --- a/docs/notebooks/index.mdx +++ b/docs/notebooks/index.mdx @@ -17,7 +17,7 @@ listing: --- The following pages are rendered from the Jupyter notebooks that are [available -on GitHub](https://github.com/modularml/mojo/tree/main/examples/notebooks). +on GitHub](https://github.com/modular/mojo/tree/main/examples/notebooks).


diff --git a/docs/roadmap.md b/docs/roadmap.md index 8ffd0fa4f8..764e99495e 100644 --- a/docs/roadmap.md +++ b/docs/roadmap.md @@ -29,7 +29,7 @@ In the near-term, we will **not** prioritize "general goodness" work such as: - Tackling broad Python ecosystem challenges like packaging. If you have encountered any bugs with current Mojo behavior, please -[submit an issue on GitHub](https://github.com/modularml/mojo/issues). +[submit an issue on GitHub](https://github.com/modular/mojo/issues). If you have ideas about how to improve the core Mojo features, we prefer that you first look for similar topics or start a new conversation about it @@ -148,7 +148,7 @@ When we get here, we will discuss what the right default is: for example, is full Python hash-table dynamism the default? Or do we use a more efficient model by default (e.g. vtable-based dispatch and explicitly declared stored properties) and allow opt'ing into dynamism with a `@dynamic` decorator on the -class. More discussion is [in this proposal](https://github.com/modularml/mojo/blob/main/proposals/mojo-and-dynamism.md). +class. More discussion is [in this proposal](https://github.com/modular/mojo/blob/main/proposals/mojo-and-dynamism.md). ## C/C++ Interop diff --git a/docs/tools/debugging.mdx b/docs/tools/debugging.mdx index 6672ded32d..2a761c6f88 100644 --- a/docs/tools/debugging.mdx +++ b/docs/tools/debugging.mdx @@ -26,7 +26,7 @@ There are several ways to start a debug session in VS Code. To start debugging, you'll need to have a Mojo project to debug. There are a number of examples ranging from simple to complex in the [Mojo repo on -GitHub](https://github.com/modularml/mojo). +GitHub](https://github.com/modular/mojo). :::note **VS Code veteran?** diff --git a/docs/tools/testing.mdx b/docs/tools/testing.mdx index bd67e80ec3..f444d44d5a 100644 --- a/docs/tools/testing.mdx +++ b/docs/tools/testing.mdx @@ -2,7 +2,7 @@ title: Testing sidebar_position: 2 description: Testing Mojo programs. -github_url: https://github.com/modularml/mojo/tree/nightly/examples/testing +github_url: https://github.com/modular/mojo/tree/nightly/examples/testing --- Mojo includes a framework for developing and executing unit tests. The framework @@ -102,9 +102,9 @@ its error message. - [Writing API documentation tests](#writing-api-documentation-tests) discusses how to use the Mojo testing framework to test code examples in your API documentation. -- The public [GitHub repo](https://github.com/modularml/mojo/tree/nightly) +- The public [GitHub repo](https://github.com/modular/mojo/tree/nightly) contains an [example - project](https://github.com/modularml/mojo/tree/nightly/examples/testing) to + project](https://github.com/modular/mojo/tree/nightly/examples/testing) to demonstrate both unit testing and docstring testing. Several of the examples shown later are based on this project. @@ -297,7 +297,7 @@ the following: If needed, you can optionally use the `-I` option one or more times to append additional paths to the list of directories searched to import Mojo modules and packages. Consider the [example testing -project](https://github.com/modularml/mojo/tree/nightly/examples/testing) in +project](https://github.com/modular/mojo/tree/nightly/examples/testing) in GitHub, which has the following directory structure: ```output @@ -369,7 +369,7 @@ By including the `--collect-only` or `--co` option, you can use `mojo test` to discover and print a list of tests. Consider the [example testing -project](https://github.com/modularml/mojo/tree/nightly/examples/testing) +project](https://github.com/modular/mojo/tree/nightly/examples/testing) directory structure shown in the [Running tests](#running-tests) section. The following command produces a list of all of the tests defined in the `test` directory hierarchy. @@ -440,7 +440,7 @@ output shown): You can also produce JSON output for test collection as well. Consider the [example testing -project](https://github.com/modularml/mojo/tree/nightly/examples/testing) +project](https://github.com/modular/mojo/tree/nightly/examples/testing) directory structure shown in the [Running tests](#running-tests) section. The following command collects a list in JSON format of all of the tests defined in the `test` directory hierarchy: @@ -626,7 +626,7 @@ suite within the same module. The format of a documentation test identifier is `@::`. This is best explained by an example. Consider the [example testing -project](https://github.com/modularml/mojo/tree/nightly/examples/testing) +project](https://github.com/modular/mojo/tree/nightly/examples/testing) directory structure shown in the [Running tests](#running-tests) section. The source files in the `src` directory might contain docstrings for the `my_math` package, the `utils.mojo` module, and the individual functions within that From 0eb5365459088b14a297e7ee5576797a0f767fbe Mon Sep 17 00:00:00 2001 From: Jack Clayton Date: Thu, 16 Jan 2025 20:07:33 -0500 Subject: [PATCH 261/509] [stdlib] Make `String(buffer=List[UInt8]())` keyword only In the future you should be able to print `List` of `Writable` type and convert it to a `String`. This ctor will conflict with that and so should be keyword-only. MODULAR_ORIG_COMMIT_REV_ID: 2b97e1cf7ef0a0c67a297a7b725da5d70e11eb6d --- stdlib/benchmarks/collections/bench_string.mojo | 4 ++-- stdlib/src/base64/base64.mojo | 4 ++-- stdlib/src/builtin/char.mojo | 2 +- stdlib/src/collections/dict.mojo | 2 +- stdlib/src/collections/string/_unicode.mojo | 4 ++-- stdlib/src/collections/string/format.mojo | 6 ++---- stdlib/src/collections/string/inline_string.mojo | 2 +- stdlib/src/collections/string/string.mojo | 2 +- stdlib/src/tempfile/tempfile.mojo | 2 +- stdlib/test/builtin/test_file.mojo | 6 +++--- stdlib/test/collections/string/test_string.mojo | 14 +++++++------- .../test/collections/string/test_string_slice.mojo | 6 +++--- 12 files changed, 26 insertions(+), 28 deletions(-) diff --git a/stdlib/benchmarks/collections/bench_string.mojo b/stdlib/benchmarks/collections/bench_string.mojo index 39ca437068..fe8ba978ed 100644 --- a/stdlib/benchmarks/collections/bench_string.mojo +++ b/stdlib/benchmarks/collections/bench_string.mojo @@ -53,9 +53,9 @@ fn make_string[ items.append(items[i]) i = i + 1 if i < len(items) - 1 else 0 items.append(0) - return String(items^) + return String(buffer=items^) else: - return String(f.read_bytes()) + return String(buffer=f.read_bytes()) except e: print(e, file=2) return abort[String]() diff --git a/stdlib/src/base64/base64.mojo b/stdlib/src/base64/base64.mojo index 750ee4cb78..c126834e25 100644 --- a/stdlib/src/base64/base64.mojo +++ b/stdlib/src/base64/base64.mojo @@ -188,7 +188,7 @@ fn b16encode(str: StringSlice) -> String: out.append(0) - return String(out^) + return String(buffer=out^) # ===-----------------------------------------------------------------------===# @@ -233,4 +233,4 @@ fn b16decode(str: StringSlice) -> String: p.append(decode(hi) << 4 | decode(lo)) p.append(0) - return String(p^) + return String(buffer=p^) diff --git a/stdlib/src/builtin/char.mojo b/stdlib/src/builtin/char.mojo index 74d789a619..aa316d21a7 100644 --- a/stdlib/src/builtin/char.mojo +++ b/stdlib/src/builtin/char.mojo @@ -259,7 +259,7 @@ struct Char(CollectionElement, EqualityComparable, Intable, Stringable): _ = self.unsafe_write_utf8(buffer.unsafe_ptr()) buffer.unsafe_ptr()[char_len] = 0 buffer.size = char_len + 1 - return String(buffer^) + return String(buffer=buffer^) # ===-------------------------------------------------------------------===# # Methods diff --git a/stdlib/src/collections/dict.mojo b/stdlib/src/collections/dict.mojo index f593677437..c6f585bae6 100644 --- a/stdlib/src/collections/dict.mojo +++ b/stdlib/src/collections/dict.mojo @@ -730,7 +730,7 @@ struct Dict[K: KeyElement, V: CollectionElement]( var minimum_capacity = self._minimum_size_of_string_representation() var string_buffer = List[UInt8](capacity=minimum_capacity) string_buffer.append(0) # Null terminator - var result = String(string_buffer^) + var result = String(buffer=string_buffer^) result += "{" var i = 0 diff --git a/stdlib/src/collections/string/_unicode.mojo b/stdlib/src/collections/string/_unicode.mojo index 152ec38d54..f9acb9db7d 100644 --- a/stdlib/src/collections/string/_unicode.mojo +++ b/stdlib/src/collections/string/_unicode.mojo @@ -204,7 +204,7 @@ fn to_lowercase(s: StringSlice) -> String: # Add NUL terminator output.append(0) - return String(output^) + return String(buffer=output^) fn to_uppercase(s: StringSlice) -> String: @@ -256,7 +256,7 @@ fn to_uppercase(s: StringSlice) -> String: # Add NUL terminator output.append(0) - return String(output^) + return String(buffer=output^) @always_inline diff --git a/stdlib/src/collections/string/format.mojo b/stdlib/src/collections/string/format.mojo index 34387e2856..ad358a028e 100644 --- a/stdlib/src/collections/string/format.mojo +++ b/stdlib/src/collections/string/format.mojo @@ -386,10 +386,8 @@ struct _FormatCurlyEntry(CollectionElement, CollectionElementNew): alias argnum = "Argument number: " alias does_not = " does not implement the trait " alias needed = "needed for conversion_flag: " - var flg = String(List[UInt8](flag, 0)) - raise Error( - argnum + String(i) + does_not + needed + flg - ) + var flg = String(buffer=List[UInt8](flag, 0)) + raise Error(String(argnum, i, does_not, needed, flg)) if self.format_spec: self.format_spec.value().format( diff --git a/stdlib/src/collections/string/inline_string.mojo b/stdlib/src/collections/string/inline_string.mojo index bfb77bab50..8235033158 100644 --- a/stdlib/src/collections/string/inline_string.mojo +++ b/stdlib/src/collections/string/inline_string.mojo @@ -140,7 +140,7 @@ struct InlineString(Sized, Stringable, CollectionElement, CollectionElementNew): # Copy the bytes from the additional string. buffer.extend(str_slice.as_bytes()) buffer.append(0) # Add the NUL byte - self._storage = Self.Layout(String(buffer^)) + self._storage = Self.Layout(String(buffer=buffer^)) fn __add__(self, other: StringSlice) -> Self: """Construct a string by appending another string at the end of this string. diff --git a/stdlib/src/collections/string/string.mojo b/stdlib/src/collections/string/string.mojo index 5563b19735..ba8fe11d8e 100644 --- a/stdlib/src/collections/string/string.mojo +++ b/stdlib/src/collections/string/string.mojo @@ -695,7 +695,7 @@ struct String( self._buffer = Self._buffer_type(capacity=capacity) @always_inline - fn __init__(out self, owned buffer: List[UInt8, *_]): + fn __init__(out self, *, owned buffer: List[UInt8, *_]): """Construct a string from a buffer of bytes without copying the allocated data. diff --git a/stdlib/src/tempfile/tempfile.mojo b/stdlib/src/tempfile/tempfile.mojo index 02249d4cfd..e298462290 100644 --- a/stdlib/src/tempfile/tempfile.mojo +++ b/stdlib/src/tempfile/tempfile.mojo @@ -40,7 +40,7 @@ fn _get_random_name(size: Int = 8) -> String: ) name_list.append(ord(characters[rand_index])) name_list.append(0) - return String(name_list^) + return String(buffer=name_list^) fn _candidate_tempdir_list() -> List[String]: diff --git a/stdlib/test/builtin/test_file.mojo b/stdlib/test/builtin/test_file.mojo index c8c792a6ee..7b23687430 100644 --- a/stdlib/test/builtin/test_file.mojo +++ b/stdlib/test/builtin/test_file.mojo @@ -52,7 +52,7 @@ def test_file_read_bytes_multi(): assert_equal(len(bytes1), 12, "12 bytes") # we add the null terminator bytes1.append(0) - var string1 = String(bytes1) + var string1 = String(buffer=bytes1) assert_equal(len(string1), 12, "12 chars") assert_equal(string1, String("Lorem ipsum ")) @@ -60,7 +60,7 @@ def test_file_read_bytes_multi(): assert_equal(len(bytes2), 6, "6 bytes") # we add the null terminator bytes2.append(0) - var string2 = String(bytes2) + var string2 = String(buffer=bytes2) assert_equal(len(string2), 6, "6 chars") assert_equal(string2, "dolor ") @@ -224,7 +224,7 @@ struct Word: word.append(self.fourth_letter) word.append(self.fith_letter) word.append(0) - return String(word) + return String(buffer=word) def test_file_read_to_dtype_pointer(): diff --git a/stdlib/test/collections/string/test_string.mojo b/stdlib/test/collections/string/test_string.mojo index d3d4f8e3b4..c2f563cd2e 100644 --- a/stdlib/test/collections/string/test_string.mojo +++ b/stdlib/test/collections/string/test_string.mojo @@ -656,9 +656,9 @@ def test_split(): + String("\x1c") + String("\x1d") + String("\x1e") - + String(next_line) - + String(unicode_line_sep) - + String(unicode_paragraph_sep) + + String(buffer=next_line) + + String(buffer=unicode_line_sep) + + String(buffer=unicode_paragraph_sep) ) var s = univ_sep_var + "hello" + univ_sep_var + "world" + univ_sep_var d = s.split() @@ -818,7 +818,7 @@ def test_splitlines(): """TODO: \\u2029""" for i in List(next_line, unicode_line_sep, unicode_paragraph_sep): - u = String(i[]) + u = String(buffer=i[]) item = String("").join("hello", u, "world", u, "mojo", u, "language", u) assert_equal(item.splitlines(), hello_mojo) assert_equal( @@ -890,9 +890,9 @@ def test_isspace(): String("\x1c"), String("\x1d"), String("\x1e"), - String(next_line), - String(unicode_line_sep), - String(unicode_paragraph_sep), + String(buffer=next_line), + String(buffer=unicode_line_sep), + String(buffer=unicode_paragraph_sep), ) for i in univ_sep_var: diff --git a/stdlib/test/collections/string/test_string_slice.mojo b/stdlib/test/collections/string/test_string_slice.mojo index 166bbbf297..14dae2dde2 100644 --- a/stdlib/test/collections/string/test_string_slice.mojo +++ b/stdlib/test/collections/string/test_string_slice.mojo @@ -560,11 +560,11 @@ def test_splitlines(): ) # test \x85 \u2028 \u2029 - var next_line = String(List[UInt8](0xC2, 0x85, 0)) + var next_line = String(buffer=List[UInt8](0xC2, 0x85, 0)) """TODO: \\x85""" - var unicode_line_sep = String(List[UInt8](0xE2, 0x80, 0xA8, 0)) + var unicode_line_sep = String(buffer=List[UInt8](0xE2, 0x80, 0xA8, 0)) """TODO: \\u2028""" - var unicode_paragraph_sep = String(List[UInt8](0xE2, 0x80, 0xA9, 0)) + var unicode_paragraph_sep = String(buffer=List[UInt8](0xE2, 0x80, 0xA9, 0)) """TODO: \\u2029""" for i in List(next_line, unicode_line_sep, unicode_paragraph_sep): From 632f282b4b6af0ca2130fca6897ca95e06bb89e4 Mon Sep 17 00:00:00 2001 From: Scott Main Date: Thu, 16 Jan 2025 18:02:28 -0800 Subject: [PATCH 262/509] Update link to get started with Mojo MODULAR_ORIG_COMMIT_REV_ID: 78c8cb122bdd24ab3b62d3139cceef6120c9a379 --- docs/faq.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/faq.md b/docs/faq.md index e89d8d9b0f..32ecb58de7 100644 --- a/docs/faq.md +++ b/docs/faq.md @@ -270,8 +270,8 @@ dashboard](https://www.modular.com/max/performance). ### How can I get access to the SDK? -Mojo is included with the MAX SDK, which you can [download and use for -free](/max/install). +Mojo is included with the `max` conda package. Try it now by following +the tutorial to [get started with Mojo](/mojo/manual/get-started). Read more about [why Mojo is bundled with MAX](/max/faq#why-bundle-mojo-with-max). From d3b5208d3ff603ffbbe093dd0551672bb44910c0 Mon Sep 17 00:00:00 2001 From: Jack Clayton Date: Thu, 16 Jan 2025 23:15:54 -0500 Subject: [PATCH 263/509] [WIP][stdlib] Move `"x:" + String(x)` etc. to `String("x:", x)` This is more performant due to using buffering, and it cleans up the ugly formatting of having multiple `String(x)` ctors in large messages. MODULAR_ORIG_COMMIT_REV_ID: 80b10f5559fb6ad152a80828328be559e834efe9 --- stdlib/src/builtin/error.mojo | 21 +++++++++++++++++++++ stdlib/src/os/os.mojo | 10 +++++----- 2 files changed, 26 insertions(+), 5 deletions(-) diff --git a/stdlib/src/builtin/error.mojo b/stdlib/src/builtin/error.mojo index 5ee6a4dcfa..0e599ecbf5 100644 --- a/stdlib/src/builtin/error.mojo +++ b/stdlib/src/builtin/error.mojo @@ -23,6 +23,7 @@ from memory.memory import _free from collections.string import StringSlice from utils import StringRef +from utils.write import write_buffered # ===-----------------------------------------------------------------------===# # Error @@ -112,6 +113,26 @@ struct Error( self.data = dest self.loaded_length = -length + @no_inline + fn __init__[ + *Ts: Writable + ](out self, *args: *Ts, sep: StringLiteral = "", end: StringLiteral = ""): + """ + Construct an Error by concatenating a sequence of Writable arguments. + + Args: + args: A sequence of Writable arguments. + sep: The separator used between elements. + end: The String to write after printing the elements. + + Parameters: + Ts: The types of the arguments to format. Each type must be satisfy + `Writable`. + """ + var output = String() + write_buffered(output, args, sep=sep, end=end) + self = Error(output) + fn copy(self) -> Self: """Copy the object. diff --git a/stdlib/src/os/os.mojo b/stdlib/src/os/os.mojo index 350a660db6..0d623bcfe6 100644 --- a/stdlib/src/os/os.mojo +++ b/stdlib/src/os/os.mojo @@ -250,16 +250,16 @@ fn abort[result: AnyType = NoneType._mlir_type]() -> result: @no_inline fn abort[ - result: AnyType = NoneType._mlir_type, *, W: Writable -](message: W) -> result: + result: AnyType = NoneType._mlir_type, *Ts: Writable +](*messages: *Ts) -> result: """Calls a target dependent trap instruction if available. Parameters: result: The result type. - W: The Writable type. + Ts: The Writable types. Args: - message: The message to include when aborting. + messages: The messages to include when aborting. Returns: A null result type. @@ -267,7 +267,7 @@ fn abort[ @parameter if not is_gpu(): - print(message, flush=True) + print(String(messages), flush=True) return abort[result]() From 0d00718550bbfa79c64585d60da813110caf94b4 Mon Sep 17 00:00:00 2001 From: modularbot Date: Fri, 17 Jan 2025 15:20:27 +0000 Subject: [PATCH 264/509] Update lockfiles to point to latest nightly version: 25.1.0.dev2025011705 --- examples/life/magic.lock | 273 +++++++++++++++++----------------- examples/magic.lock | 231 ++++++++++++++-------------- examples/notebooks/magic.lock | 249 ++++++++++++++++--------------- examples/operators/magic.lock | 231 ++++++++++++++-------------- examples/testing/magic.lock | 231 ++++++++++++++-------------- magic.lock | 231 ++++++++++++++-------------- 6 files changed, 726 insertions(+), 720 deletions(-) diff --git a/examples/life/magic.lock b/examples/life/magic.lock index 5a1423aa1f..af20cdf69e 100644 --- a/examples/life/magic.lock +++ b/examples/life/magic.lock @@ -129,7 +129,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libgettextpo-devel-0.22.5-he02047a_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hd5240d6_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.82.2-h2ff4ddf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.82.2-h2ff4ddf_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h77fa898_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.33.0-h2b5623c_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.33.0-h0121fbd_1.conda @@ -151,7 +151,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsndfile-1.2.2-hc60ed4a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.47.2-hee588c1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.48.0-hee588c1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hf672d98_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-hc0a3c3a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_1.conda @@ -160,7 +160,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hd9ff511_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.9.0-hb9d3cd8_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.49.2-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.50.0-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libvorbis-1.3.7-h9c3ff4c_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.5.0-h851e524_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda @@ -170,12 +170,12 @@ 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-25.1.0.dev2025011605-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025011605-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025011605-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025011705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025011705-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011705-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-25.1.0.dev2025011605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011705-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_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.15-py312h98912ed_1.conda @@ -259,7 +259,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.34.0-pyh31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.34.0-h31011fe_0.conda @@ -405,7 +405,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgettextpo-devel-0.22.5-h0a1ffab_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libglib-2.82.2-hc486b8e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libglib-2.82.2-hc486b8e_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-2.33.0-hccf9d24_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-storage-2.33.0-hb9b2b65_1.conda @@ -427,7 +427,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsndfile-1.2.2-h79657aa_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.20-h68df207_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.47.2-h5eb1b54_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.48.0-h5eb1b54_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libssh2-1.11.1-ha41c0db_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_1.conda @@ -436,7 +436,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.0-h88f7998_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.9.0-h86ecc28_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuv-1.49.2-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuv-1.50.0-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libvorbis-1.3.7-h01db608_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libwebp-base-1.5.0-h0886dbf_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcb-1.17.0-h262b8f6_0.conda @@ -446,12 +446,12 @@ 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-25.1.0.dev2025011605-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025011605-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025011605-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025011705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025011705-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011705-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-25.1.0.dev2025011605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011705-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_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.15-py312hdd3e373_1.conda @@ -535,7 +535,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.34.0-pyh31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.34.0-h31011fe_0.conda @@ -669,7 +669,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgettextpo-devel-0.22.5-h8414b35_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libglib-2.82.2-h07bd6cf_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libglib-2.82.2-hdff4504_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-2.33.0-hdbe95d5_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-storage-2.33.0-h7081f7f_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgrpc-1.67.1-h0a426d6_1.conda @@ -690,12 +690,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h07bc746_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsndfile-1.2.2-h9739721_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.47.2-h3f77e49_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.48.0-h3f77e49_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.1-h9cc3647_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libthrift-0.21.0-h64651cc_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-h551f018_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.9.0-h5505292_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libuv-1.49.2-h7ab814d_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libuv-1.50.0-h5505292_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libvorbis-1.3.7-h9f76cd9_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.5.0-h2471fea_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxcb-1.17.0-hdb1d25a_0.conda @@ -705,12 +705,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-25.1.0.dev2025011605-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025011605-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025011605-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011705-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025011705-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025011705-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011705-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-25.1.0.dev2025011605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011705-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 @@ -792,7 +792,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.34.0-pyh31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.34.0-h31011fe_0.conda @@ -4582,9 +4582,9 @@ packages: license_family: GPL size: 997381 timestamp: 1707330687590 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.82.2-h2ff4ddf_0.conda - sha256: 49ee9401d483a76423461c50dcd37f91d070efaec7e4dc2828d8cdd2ce694231 - md5: 13e8e54035ddd2b91875ba399f0f7c04 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.82.2-h2ff4ddf_1.conda + sha256: f0804a9e46ae7b32ca698d26c1c95aa82a91f71b6051883d4a46bea725be9ea4 + md5: 37d1af619d999ee8f1f73cf5a06f4e2f depends: - __glibc >=2.17,<3.0.a0 - libffi >=3.4,<4.0a0 @@ -4593,15 +4593,15 @@ packages: - libzlib >=1.3.1,<2.0a0 - pcre2 >=10.44,<10.45.0a0 constrains: - - glib 2.82.2 *_0 + - glib 2.82.2 *_1 arch: x86_64 platform: linux license: LGPL-2.1-or-later - size: 3931898 - timestamp: 1729191404130 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libglib-2.82.2-hc486b8e_0.conda - sha256: 6797d24de7acd298f81a86078c64e4f3fea6d551a3e8892205c9e72a37a7cc3c - md5: 47f6d85fe47b865e56c539f2ba5f4dad + size: 3923974 + timestamp: 1737037491054 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libglib-2.82.2-hc486b8e_1.conda + sha256: aed7967aaea90b5649eb7eb0eab2ed2270323245eb0832b228e876fbeaae7f76 + md5: 6dfc5a88cfd58288999ab5081f57de9c depends: - libffi >=3.4,<4.0a0 - libgcc >=13 @@ -4609,15 +4609,15 @@ packages: - libzlib >=1.3.1,<2.0a0 - pcre2 >=10.44,<10.45.0a0 constrains: - - glib 2.82.2 *_0 + - glib 2.82.2 *_1 arch: aarch64 platform: linux license: LGPL-2.1-or-later - size: 4020802 - timestamp: 1729191545578 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libglib-2.82.2-h07bd6cf_0.conda - sha256: 101fb31c509d6a69ac5d612b51d4088ddbc675fca18cf0c3589cfee26cd01ca0 - md5: 890783f64502fa6bfcdc723cfbf581b4 + size: 4004134 + timestamp: 1737037535030 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libglib-2.82.2-hdff4504_1.conda + sha256: d002aeaa51424e331f8504a54b6ba4388a6011a0ebcac29296f3d14282bf733b + md5: 849da57c370384ce48bef2e050488882 depends: - __osx >=11.0 - libffi >=3.4,<4.0a0 @@ -4626,12 +4626,12 @@ packages: - libzlib >=1.3.1,<2.0a0 - pcre2 >=10.44,<10.45.0a0 constrains: - - glib 2.82.2 *_0 + - glib 2.82.2 *_1 arch: arm64 platform: osx license: LGPL-2.1-or-later - size: 3635416 - timestamp: 1729191799117 + size: 3643364 + timestamp: 1737037789629 - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h77fa898_1.conda sha256: 1911c29975ec99b6b906904040c855772ccb265a1c79d5d75c8ceec4ed89cd63 md5: cc3573974587f12dda90d96e3e55a702 @@ -5501,9 +5501,9 @@ packages: license: ISC size: 164972 timestamp: 1716828607917 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.47.2-hee588c1_0.conda - sha256: 48af21ebc2cbf358976f1e0f4a0ab9e91dfc83d0ef337cf3837c6f5bc22fb352 - md5: b58da17db24b6e08bcbf8fed2fb8c915 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.48.0-hee588c1_0.conda + sha256: 7bb84f44e1bd756da4a3d0d43308324a5533e6ba9f4772475884bce44d405064 + md5: 84bd1c9a82b455e7a2f390375fb38f90 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -5511,30 +5511,30 @@ packages: arch: x86_64 platform: linux license: Unlicense - size: 873551 - timestamp: 1733761824646 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.47.2-h5eb1b54_0.conda - sha256: 885a27fa84a5a73ed9779168c02b6c386e2fc7a53f0566b32a09ceca146b42b4 - md5: d4bf59f8783a4a66c0aec568f6de3ff4 + size: 876582 + timestamp: 1737123945341 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.48.0-h5eb1b54_0.conda + sha256: b4365ab7c74a2e6c0444eb950367fa3ca56a87c9921b2faa5ad032fe7a7df682 + md5: 1998946fa3ccf38a07b44a879b2227ae depends: - libgcc >=13 - libzlib >=1.3.1,<2.0a0 arch: aarch64 platform: linux license: Unlicense - size: 1042182 - timestamp: 1733761913736 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.47.2-h3f77e49_0.conda - sha256: f192f3c8973de9ec4c214990715f13b781965247a5cedf9162e7f9e699cfc3c4 - md5: 122d6f29470f1a991e85608e77e56a8a + size: 1044953 + timestamp: 1737123983895 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.48.0-h3f77e49_0.conda + sha256: b31169cf0ca7b6835baca4ab92d6cf2eee83b1a12a11b72f39521e8baf4d6acb + md5: 714719df4f49e30f9728956f240846ca depends: - __osx >=11.0 - libzlib >=1.3.1,<2.0a0 arch: arm64 platform: osx license: Unlicense - size: 850553 - timestamp: 1733762057506 + size: 853163 + timestamp: 1737124192432 - conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hf672d98_0.conda sha256: 0407ac9fda2bb67e11e357066eff144c845801d00b5f664efbc48813af1e7bb9 md5: be2de152d8073ef1c01b7728475f2fe7 @@ -5806,9 +5806,9 @@ packages: license_family: BSD size: 35720 timestamp: 1680113474501 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.49.2-hb9d3cd8_0.conda - sha256: a35cd81cd1a9add11024097da83cc06b0aae83186fe4124b77710876f37d8f31 - md5: 070e3c9ddab77e38799d5c30b109c633 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.50.0-hb9d3cd8_0.conda + sha256: b4a8890023902aef9f1f33e3e35603ad9c2f16c21fdb58e968fa6c1bd3e94c0b + md5: 771ee65e13bc599b0b62af5359d80169 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -5816,30 +5816,30 @@ packages: platform: linux license: MIT license_family: MIT - size: 884647 - timestamp: 1729322566955 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuv-1.49.2-h86ecc28_0.conda - sha256: adf4eca89339ac7780f2394e7e6699be81259eb91f79f9d9fdf2c1bc6b26f210 - md5: 1899e1ec2be63386c41c4db31d3056af + size: 891272 + timestamp: 1737016632446 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuv-1.50.0-h86ecc28_0.conda + sha256: 67914c7f171d343059144d804c2f17fcd621a94e45f179a0fd843b8c1618823e + md5: 915db044076cbbdffb425170deb4ce38 depends: - libgcc >=13 arch: aarch64 platform: linux license: MIT license_family: MIT - size: 627484 - timestamp: 1729322575379 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libuv-1.49.2-h7ab814d_0.conda - sha256: 0e5176af1e788ad5006cf261c4ea5a288a935fda48993b0240ddd2e562dc3d02 - md5: 4bc348e3a1a74d20a3f9beb866d75e0a + size: 621056 + timestamp: 1737016626950 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libuv-1.50.0-h5505292_0.conda + sha256: d13fb49d4c8262bf2c44ffb2c77bb2b5d0f85fc6de76bdb75208efeccb29fce6 + md5: 20717343fb30798ab7c23c2e92b748c1 depends: - __osx >=11.0 arch: arm64 platform: osx license: MIT license_family: MIT - size: 410500 - timestamp: 1729322654121 + size: 418890 + timestamp: 1737016751326 - conda: https://conda.anaconda.org/conda-forge/linux-64/libvorbis-1.3.7-h9c3ff4c_0.tar.bz2 sha256: 53080d72388a57b3c31ad5805c93a7328e46ff22fab7c44ad2a86d712740af33 md5: 309dec04b70a3cc0f1e84a4013683bc0 @@ -6077,6 +6077,7 @@ packages: arch: arm64 platform: osx license: Apache-2.0 WITH LLVM-exception + license_family: APACHE size: 280830 timestamp: 1736986295869 - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.10.0-h5888daf_1.conda @@ -6173,47 +6174,47 @@ packages: license_family: BSD size: 24048 timestamp: 1733219945697 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011605-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011705-release.conda noarch: python - sha256: 66c70dda70094dd44776322c4274e0aedea1326e79407b710423d196fbf5c687 - md5: 63f0b9dbd781076f2346a4c90818fa77 + sha256: 15578c7bc78001d3882c3b9af9d7d8bf3566c68ae133870038be055c8dfd90e9 + md5: 7e6c35d82044e8d31e9327e7d90bfb2b depends: - - max-core ==25.1.0.dev2025011605 release - - max-python >=25.1.0.dev2025011605,<26.0a0 - - mojo-jupyter ==25.1.0.dev2025011605 release - - mblack ==25.1.0.dev2025011605 release + - max-core ==25.1.0.dev2025011705 release + - max-python >=25.1.0.dev2025011705,<26.0a0 + - mojo-jupyter ==25.1.0.dev2025011705 release + - mblack ==25.1.0.dev2025011705 release license: LicenseRef-Modular-Proprietary - size: 9918 - timestamp: 1737005226114 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025011605-release.conda - sha256: 833bf62b78d41a258c0f1c2fb33efe2ecd31d52c9f25e0927f3a3c06f3263143 - md5: 67b61208a7f51d98440b829a762aa983 + size: 9920 + timestamp: 1737091778690 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025011705-release.conda + sha256: 3e39d779710559206129052c64ac530b9d262288f75812ba07c3e3e395a0e18e + md5: 5575de33b0503143e635ade746f057c3 depends: - - mblack ==25.1.0.dev2025011605 release + - mblack ==25.1.0.dev2025011705 release license: LicenseRef-Modular-Proprietary - size: 244845391 - timestamp: 1737004888429 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025011605-release.conda - sha256: cca47165ed2791ce97b8ed478c375ca5e19c9b1dbad2008a88fcf55976669e98 - md5: ec67c1c4477173523c480d0439f618ee + size: 244764907 + timestamp: 1737091186388 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025011705-release.conda + sha256: a9e7747e7cb7ff01dc58f4c7f5772d2b4483693dd200c88653b1ec2dda46bc8b + md5: a9b13b577fb1bcc14b330f5a4185023c depends: - - mblack ==25.1.0.dev2025011605 release + - mblack ==25.1.0.dev2025011705 release license: LicenseRef-Modular-Proprietary - size: 247313436 - timestamp: 1737005226112 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025011605-release.conda - sha256: 0c90b26d3a97472ecf01e8f96210d1b6becf10a628eb138a8fe9cba25c275f94 - md5: 67f133797e55bdfeae523889d117d24e + size: 247240781 + timestamp: 1737091778688 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025011705-release.conda + sha256: 9369b738945ef783af1e4caf2676bd6a299ff86e4ef9504e7a5ee69841fffa01 + md5: c4397350b325ae5a0e07f61e483fc3e5 depends: - - mblack ==25.1.0.dev2025011605 release + - mblack ==25.1.0.dev2025011705 release license: LicenseRef-Modular-Proprietary - size: 206707824 - timestamp: 1737004945969 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025011605-3.12release.conda - sha256: 8ab036ac69684b74999f0274eb9741c0d0c4e036a0a777dfa2276539703bcf87 - md5: 6fde421d7d48ab50ec34964bfc003ab0 + size: 206615275 + timestamp: 1737092643231 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025011705-3.12release.conda + sha256: bdda011f73105d5d91e29abdacc4e7304501249c3bb50e83517661cdea4ef56a + md5: 0ddfaa3caa3647a0cbcdf394774ee6be depends: - - max-core ==25.1.0.dev2025011605 release + - max-core ==25.1.0.dev2025011705 release - python 3.12.* - fastapi - httpx @@ -6234,13 +6235,13 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 124617353 - timestamp: 1737004888439 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025011605-3.12release.conda - sha256: 3b711e5ef7c518e1e6b69ff69c5c7505e9f5779ee99359c7b2808a6324bee5ca - md5: f264d20311c5422c256d177081752fc4 + size: 124617960 + timestamp: 1737091186397 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025011705-3.12release.conda + sha256: 3ec1d98731b5c86829e7dd0d76b3ad820173a418f58833ea0237e34d356b58c6 + md5: 0ed0380d3ee48a36fe43f85f61fd9fe3 depends: - - max-core ==25.1.0.dev2025011605 release + - max-core ==25.1.0.dev2025011705 release - python 3.12.* - fastapi - httpx @@ -6261,13 +6262,13 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 127393468 - timestamp: 1737005226123 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025011605-3.12release.conda - sha256: f3c1e91c675ebf5835799c044f534e87840cae019df45e06ab50b09c4b819138 - md5: b42171a30a90eca86de374dc6562d2ab + size: 127367910 + timestamp: 1737091778698 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025011705-3.12release.conda + sha256: 853e12e0ac11f3dcf5392e94cc927233ba940a71a5cf73c0cec54ad4917256c0 + md5: 53e9620bd08e983c5e52e02afef0a990 depends: - - max-core ==25.1.0.dev2025011605 release + - max-core ==25.1.0.dev2025011705 release - python 3.12.* - fastapi - httpx @@ -6288,12 +6289,12 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 110522116 - timestamp: 1737004945972 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011605-release.conda + size: 110545057 + timestamp: 1737092643234 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011705-release.conda noarch: python - sha256: cfd9e14c0c14fa02b6b61141ff4f9007a11eb3ed1b11cf48a717f215e27c7407 - md5: d60436499404c582b03af554c788436f + sha256: 180bbe7d8b76c5d0f453b72f81fae10522b7a98a31e6fbeff542dbb31bb9b613 + md5: 680622d3117019e99ddc173efab357c7 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -6303,8 +6304,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130793 - timestamp: 1737005226119 + size: 130807 + timestamp: 1737091778695 - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda sha256: 78c1bbe1723449c52b7a9df1af2ee5f005209f67e40b6e1d3c7619127c43b1c7 md5: 592132998493b3ff25fd7479396e8351 @@ -6314,18 +6315,18 @@ packages: license_family: MIT size: 14465 timestamp: 1733255681319 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011605-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011705-release.conda noarch: python - sha256: 68dcf6fcc24f226462c4a7004a2214a1696f2ad0cb8d7ac229ee9ec4ea2216ea - md5: 864d0b85ff8fd743209bea757229d010 + sha256: eab543a5c31c091b3d042980d068a950c51905d14a18532710f9be94ba88ba5d + md5: eea061b963a95002a8740d4b4f506d44 depends: - - max-core ==25.1.0.dev2025011605 release + - max-core ==25.1.0.dev2025011705 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22934 - timestamp: 1737005226120 + size: 22929 + timestamp: 1737091778696 - conda: https://conda.anaconda.org/conda-forge/linux-64/mpg123-1.32.9-hc50e24c_0.conda sha256: 39c4700fb3fbe403a77d8cc27352fa72ba744db487559d5d44bf8411bb4ea200 md5: c7f302fd11eeb0987a6a5e1f3aed6a21 @@ -8747,12 +8748,12 @@ packages: license_family: PSF size: 39637 timestamp: 1733188758212 -- conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - sha256: 4fde5c3008bf5d2db82f2b50204464314cc3c91c1d953652f7bd01d9e52aefdf - md5: 8ac3367aafb1cc0a068483c580af8015 +- conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + sha256: c4b1ae8a2931fe9b274c44af29c5475a85b37693999f8c792dad0f8c6734b1de + md5: dbcace4706afdfb7eb891f7b37d07c04 license: LicenseRef-Public-Domain - size: 122354 - timestamp: 1728047496079 + size: 122921 + timestamp: 1737119101255 - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda sha256: 114919ffa80c328127dab9c8e7a38f9d563c617691fb81fccb11c1e86763727e md5: 32674f8dbfb7b26410ed580dd3c10a29 diff --git a/examples/magic.lock b/examples/magic.lock index aa2ecfc4a4..bfba300bb8 100644 --- a/examples/magic.lock +++ b/examples/magic.lock @@ -114,7 +114,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.47.2-hee588c1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.48.0-hee588c1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hf672d98_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-hc0a3c3a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_1.conda @@ -122,7 +122,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hd9ff511_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.9.0-hb9d3cd8_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.49.2-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.50.0-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.5.0-h851e524_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda @@ -131,12 +131,12 @@ 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-25.1.0.dev2025011605-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025011605-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025011605-3.11release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025011705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025011705-3.11release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011705-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-25.1.0.dev2025011605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011705-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 @@ -206,7 +206,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.34.0-pyh31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.34.0-h31011fe_0.conda @@ -332,7 +332,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.3-h44a3b7b_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.20-h68df207_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.47.2-h5eb1b54_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.48.0-h5eb1b54_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libssh2-1.11.1-ha41c0db_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_1.conda @@ -340,7 +340,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.0-h88f7998_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.9.0-h86ecc28_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuv-1.49.2-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuv-1.50.0-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libwebp-base-1.5.0-h0886dbf_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcb-1.17.0-h262b8f6_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda @@ -349,12 +349,12 @@ 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-25.1.0.dev2025011605-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025011605-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025011605-3.11release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025011705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025011705-3.11release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011705-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-25.1.0.dev2025011605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011705-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 @@ -424,7 +424,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.34.0-pyh31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.34.0-h31011fe_0.conda @@ -544,12 +544,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.3-h3bd63a1_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h07bc746_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.47.2-h3f77e49_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.48.0-h3f77e49_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.1-h9cc3647_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libthrift-0.21.0-h64651cc_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-h551f018_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.9.0-h5505292_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libuv-1.49.2-h7ab814d_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libuv-1.50.0-h5505292_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.5.0-h2471fea_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxcb-1.17.0-hdb1d25a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.5-h178c5d8_1.conda @@ -558,12 +558,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-25.1.0.dev2025011605-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025011605-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025011605-3.11release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011705-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025011705-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025011705-3.11release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011705-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-25.1.0.dev2025011605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011705-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 @@ -632,7 +632,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.34.0-pyh31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.34.0-h31011fe_0.conda @@ -4147,9 +4147,9 @@ packages: license: ISC size: 164972 timestamp: 1716828607917 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.47.2-hee588c1_0.conda - sha256: 48af21ebc2cbf358976f1e0f4a0ab9e91dfc83d0ef337cf3837c6f5bc22fb352 - md5: b58da17db24b6e08bcbf8fed2fb8c915 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.48.0-hee588c1_0.conda + sha256: 7bb84f44e1bd756da4a3d0d43308324a5533e6ba9f4772475884bce44d405064 + md5: 84bd1c9a82b455e7a2f390375fb38f90 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -4157,30 +4157,30 @@ packages: arch: x86_64 platform: linux license: Unlicense - size: 873551 - timestamp: 1733761824646 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.47.2-h5eb1b54_0.conda - sha256: 885a27fa84a5a73ed9779168c02b6c386e2fc7a53f0566b32a09ceca146b42b4 - md5: d4bf59f8783a4a66c0aec568f6de3ff4 + size: 876582 + timestamp: 1737123945341 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.48.0-h5eb1b54_0.conda + sha256: b4365ab7c74a2e6c0444eb950367fa3ca56a87c9921b2faa5ad032fe7a7df682 + md5: 1998946fa3ccf38a07b44a879b2227ae depends: - libgcc >=13 - libzlib >=1.3.1,<2.0a0 arch: aarch64 platform: linux license: Unlicense - size: 1042182 - timestamp: 1733761913736 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.47.2-h3f77e49_0.conda - sha256: f192f3c8973de9ec4c214990715f13b781965247a5cedf9162e7f9e699cfc3c4 - md5: 122d6f29470f1a991e85608e77e56a8a + size: 1044953 + timestamp: 1737123983895 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.48.0-h3f77e49_0.conda + sha256: b31169cf0ca7b6835baca4ab92d6cf2eee83b1a12a11b72f39521e8baf4d6acb + md5: 714719df4f49e30f9728956f240846ca depends: - __osx >=11.0 - libzlib >=1.3.1,<2.0a0 arch: arm64 platform: osx license: Unlicense - size: 850553 - timestamp: 1733762057506 + size: 853163 + timestamp: 1737124192432 - conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hf672d98_0.conda sha256: 0407ac9fda2bb67e11e357066eff144c845801d00b5f664efbc48813af1e7bb9 md5: be2de152d8073ef1c01b7728475f2fe7 @@ -4421,9 +4421,9 @@ packages: license_family: BSD size: 35720 timestamp: 1680113474501 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.49.2-hb9d3cd8_0.conda - sha256: a35cd81cd1a9add11024097da83cc06b0aae83186fe4124b77710876f37d8f31 - md5: 070e3c9ddab77e38799d5c30b109c633 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.50.0-hb9d3cd8_0.conda + sha256: b4a8890023902aef9f1f33e3e35603ad9c2f16c21fdb58e968fa6c1bd3e94c0b + md5: 771ee65e13bc599b0b62af5359d80169 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -4431,30 +4431,30 @@ packages: platform: linux license: MIT license_family: MIT - size: 884647 - timestamp: 1729322566955 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuv-1.49.2-h86ecc28_0.conda - sha256: adf4eca89339ac7780f2394e7e6699be81259eb91f79f9d9fdf2c1bc6b26f210 - md5: 1899e1ec2be63386c41c4db31d3056af + size: 891272 + timestamp: 1737016632446 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuv-1.50.0-h86ecc28_0.conda + sha256: 67914c7f171d343059144d804c2f17fcd621a94e45f179a0fd843b8c1618823e + md5: 915db044076cbbdffb425170deb4ce38 depends: - libgcc >=13 arch: aarch64 platform: linux license: MIT license_family: MIT - size: 627484 - timestamp: 1729322575379 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libuv-1.49.2-h7ab814d_0.conda - sha256: 0e5176af1e788ad5006cf261c4ea5a288a935fda48993b0240ddd2e562dc3d02 - md5: 4bc348e3a1a74d20a3f9beb866d75e0a + size: 621056 + timestamp: 1737016626950 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libuv-1.50.0-h5505292_0.conda + sha256: d13fb49d4c8262bf2c44ffb2c77bb2b5d0f85fc6de76bdb75208efeccb29fce6 + md5: 20717343fb30798ab7c23c2e92b748c1 depends: - __osx >=11.0 arch: arm64 platform: osx license: MIT license_family: MIT - size: 410500 - timestamp: 1729322654121 + size: 418890 + timestamp: 1737016751326 - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.5.0-h851e524_0.conda sha256: c45283fd3e90df5f0bd3dbcd31f59cdd2b001d424cf30a07223655413b158eaf md5: 63f790534398730f59e1b899c3644d4a @@ -4655,6 +4655,7 @@ packages: arch: arm64 platform: osx license: Apache-2.0 WITH LLVM-exception + license_family: APACHE size: 280830 timestamp: 1736986295869 - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.10.0-h5888daf_1.conda @@ -4751,47 +4752,47 @@ packages: license_family: BSD size: 24976 timestamp: 1733219849253 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011605-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011705-release.conda noarch: python - sha256: 66c70dda70094dd44776322c4274e0aedea1326e79407b710423d196fbf5c687 - md5: 63f0b9dbd781076f2346a4c90818fa77 + sha256: 15578c7bc78001d3882c3b9af9d7d8bf3566c68ae133870038be055c8dfd90e9 + md5: 7e6c35d82044e8d31e9327e7d90bfb2b depends: - - max-core ==25.1.0.dev2025011605 release - - max-python >=25.1.0.dev2025011605,<26.0a0 - - mojo-jupyter ==25.1.0.dev2025011605 release - - mblack ==25.1.0.dev2025011605 release + - max-core ==25.1.0.dev2025011705 release + - max-python >=25.1.0.dev2025011705,<26.0a0 + - mojo-jupyter ==25.1.0.dev2025011705 release + - mblack ==25.1.0.dev2025011705 release license: LicenseRef-Modular-Proprietary - size: 9918 - timestamp: 1737005226114 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025011605-release.conda - sha256: 833bf62b78d41a258c0f1c2fb33efe2ecd31d52c9f25e0927f3a3c06f3263143 - md5: 67b61208a7f51d98440b829a762aa983 + size: 9920 + timestamp: 1737091778690 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025011705-release.conda + sha256: 3e39d779710559206129052c64ac530b9d262288f75812ba07c3e3e395a0e18e + md5: 5575de33b0503143e635ade746f057c3 depends: - - mblack ==25.1.0.dev2025011605 release + - mblack ==25.1.0.dev2025011705 release license: LicenseRef-Modular-Proprietary - size: 244845391 - timestamp: 1737004888429 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025011605-release.conda - sha256: cca47165ed2791ce97b8ed478c375ca5e19c9b1dbad2008a88fcf55976669e98 - md5: ec67c1c4477173523c480d0439f618ee + size: 244764907 + timestamp: 1737091186388 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025011705-release.conda + sha256: a9e7747e7cb7ff01dc58f4c7f5772d2b4483693dd200c88653b1ec2dda46bc8b + md5: a9b13b577fb1bcc14b330f5a4185023c depends: - - mblack ==25.1.0.dev2025011605 release + - mblack ==25.1.0.dev2025011705 release license: LicenseRef-Modular-Proprietary - size: 247313436 - timestamp: 1737005226112 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025011605-release.conda - sha256: 0c90b26d3a97472ecf01e8f96210d1b6becf10a628eb138a8fe9cba25c275f94 - md5: 67f133797e55bdfeae523889d117d24e + size: 247240781 + timestamp: 1737091778688 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025011705-release.conda + sha256: 9369b738945ef783af1e4caf2676bd6a299ff86e4ef9504e7a5ee69841fffa01 + md5: c4397350b325ae5a0e07f61e483fc3e5 depends: - - mblack ==25.1.0.dev2025011605 release + - mblack ==25.1.0.dev2025011705 release license: LicenseRef-Modular-Proprietary - size: 206707824 - timestamp: 1737004945969 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025011605-3.11release.conda - sha256: 871a3cc43052f0b29bbeec075c0b9963c43bdc10fc234746448d6950b77ff9a6 - md5: 14179d3572398ab1bbf4004ae43c6f3d + size: 206615275 + timestamp: 1737092643231 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025011705-3.11release.conda + sha256: 1579f2f7ef96eb56ad294507a1d65cab236a45170d1f8e165ace9a3beba22514 + md5: 18a9d8cfc990a13b024167be3a96b06c depends: - - max-core ==25.1.0.dev2025011605 release + - max-core ==25.1.0.dev2025011705 release - python 3.11.* - fastapi - httpx @@ -4812,13 +4813,13 @@ packages: - uvicorn - python_abi 3.11.* *_cp311 license: LicenseRef-Modular-Proprietary - size: 124645362 - timestamp: 1737004888437 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025011605-3.11release.conda - sha256: 3c96fb1819ea00d81efb078e753a6d150cf5bf83a73e1a19fec032325538dbb4 - md5: 3bd00fa93e9306846a91142e73cca48f + size: 124607308 + timestamp: 1737091186395 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025011705-3.11release.conda + sha256: 6036dd2cdac03ac625cd5395bf5c60e013c45c04c8d3daa386d20609a5472c81 + md5: 87e3800f4237db30865cf5e28d42da1c depends: - - max-core ==25.1.0.dev2025011605 release + - max-core ==25.1.0.dev2025011705 release - python 3.11.* - fastapi - httpx @@ -4839,13 +4840,13 @@ packages: - uvicorn - python_abi 3.11.* *_cp311 license: LicenseRef-Modular-Proprietary - size: 127420456 - timestamp: 1737005226120 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025011605-3.11release.conda - sha256: da21ee84763b6901de213b52bd6c5b82000da39f54dc86218ff3faf3eafcf450 - md5: 66e2d3f9ee8a31dacfe7e52a4585dcb3 + size: 127402633 + timestamp: 1737091778695 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025011705-3.11release.conda + sha256: 71d6321e9296dbc390f118e2ad1056601c94076ff33e5f48c72e27b86052aa07 + md5: 40d60b1a7730858a15b26a6ce3e68dc5 depends: - - max-core ==25.1.0.dev2025011605 release + - max-core ==25.1.0.dev2025011705 release - python 3.11.* - fastapi - httpx @@ -4866,12 +4867,12 @@ packages: - uvicorn - python_abi 3.11.* *_cp311 license: LicenseRef-Modular-Proprietary - size: 110537588 - timestamp: 1737004945971 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011605-release.conda + size: 110519320 + timestamp: 1737092643233 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011705-release.conda noarch: python - sha256: cfd9e14c0c14fa02b6b61141ff4f9007a11eb3ed1b11cf48a717f215e27c7407 - md5: d60436499404c582b03af554c788436f + sha256: 180bbe7d8b76c5d0f453b72f81fae10522b7a98a31e6fbeff542dbb31bb9b613 + md5: 680622d3117019e99ddc173efab357c7 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -4881,8 +4882,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130793 - timestamp: 1737005226119 + size: 130807 + timestamp: 1737091778695 - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda sha256: 78c1bbe1723449c52b7a9df1af2ee5f005209f67e40b6e1d3c7619127c43b1c7 md5: 592132998493b3ff25fd7479396e8351 @@ -4892,18 +4893,18 @@ packages: license_family: MIT size: 14465 timestamp: 1733255681319 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011605-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011705-release.conda noarch: python - sha256: 68dcf6fcc24f226462c4a7004a2214a1696f2ad0cb8d7ac229ee9ec4ea2216ea - md5: 864d0b85ff8fd743209bea757229d010 + sha256: eab543a5c31c091b3d042980d068a950c51905d14a18532710f9be94ba88ba5d + md5: eea061b963a95002a8740d4b4f506d44 depends: - - max-core ==25.1.0.dev2025011605 release + - max-core ==25.1.0.dev2025011705 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22934 - timestamp: 1737005226120 + size: 22929 + timestamp: 1737091778696 - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py311h2dc5d0c_2.conda sha256: afaab7a028281d8b5336db2b994fd3f9694862b6ca372c079dc4e84ad768c20a md5: bb8ca118919836624d920b4c44383a15 @@ -6725,12 +6726,12 @@ packages: license_family: PSF size: 39637 timestamp: 1733188758212 -- conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - sha256: 4fde5c3008bf5d2db82f2b50204464314cc3c91c1d953652f7bd01d9e52aefdf - md5: 8ac3367aafb1cc0a068483c580af8015 +- conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + sha256: c4b1ae8a2931fe9b274c44af29c5475a85b37693999f8c792dad0f8c6734b1de + md5: dbcace4706afdfb7eb891f7b37d07c04 license: LicenseRef-Public-Domain - size: 122354 - timestamp: 1728047496079 + size: 122921 + timestamp: 1737119101255 - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda sha256: 114919ffa80c328127dab9c8e7a38f9d563c617691fb81fccb11c1e86763727e md5: 32674f8dbfb7b26410ed580dd3c10a29 diff --git a/examples/notebooks/magic.lock b/examples/notebooks/magic.lock index f35391f354..84cdcbd099 100644 --- a/examples/notebooks/magic.lock +++ b/examples/notebooks/magic.lock @@ -149,7 +149,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.47.2-hee588c1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.48.0-hee588c1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hf672d98_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-hc0a3c3a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_1.conda @@ -157,7 +157,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hd9ff511_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.9.0-hb9d3cd8_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.49.2-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.50.0-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.5.0-h851e524_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda @@ -167,13 +167,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/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-25.1.0.dev2025011605-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025011605-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025011605-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025011705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025011705-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011705-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.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011705-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 @@ -237,7 +237,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.0-py312hbf22597_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/re2-2024.07.02-h9925aae_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.35.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.36.1-pyhd8ed1ab_0.conda - 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/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda @@ -273,7 +273,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.34.0-pyh31011fe_0.conda @@ -440,7 +440,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.3-h44a3b7b_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.20-h68df207_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.47.2-h5eb1b54_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.48.0-h5eb1b54_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libssh2-1.11.1-ha41c0db_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_1.conda @@ -448,7 +448,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.0-h88f7998_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.9.0-h86ecc28_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuv-1.49.2-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuv-1.50.0-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libwebp-base-1.5.0-h0886dbf_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcb-1.17.0-h262b8f6_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda @@ -458,13 +458,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/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-25.1.0.dev2025011605-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025011605-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025011605-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025011705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025011705-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011705-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.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011705-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 @@ -528,7 +528,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyzmq-26.2.0-py312h2427ae1_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/re2-2024.07.02-haa97905_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8fc344f_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.35.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.36.1-pyhd8ed1ab_0.conda - 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/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda @@ -564,7 +564,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.34.0-pyh31011fe_0.conda @@ -726,12 +726,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.3-h3bd63a1_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h07bc746_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.47.2-h3f77e49_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.48.0-h3f77e49_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.1-h9cc3647_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libthrift-0.21.0-h64651cc_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-h551f018_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.9.0-h5505292_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libuv-1.49.2-h7ab814d_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libuv-1.50.0-h5505292_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.5.0-h2471fea_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxcb-1.17.0-hdb1d25a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.5-h178c5d8_1.conda @@ -741,13 +741,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-25.1.0.dev2025011605-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025011605-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025011605-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011705-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025011705-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025011705-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011705-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.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011705-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 @@ -813,7 +813,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.0-py312hf8a1cbd_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/re2-2024.07.02-h6589ca4_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h92ec313_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.35.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.36.1-pyhd8ed1ab_0.conda - 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/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda @@ -848,7 +848,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.34.0-pyh31011fe_0.conda @@ -4934,9 +4934,9 @@ packages: license: ISC size: 164972 timestamp: 1716828607917 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.47.2-hee588c1_0.conda - sha256: 48af21ebc2cbf358976f1e0f4a0ab9e91dfc83d0ef337cf3837c6f5bc22fb352 - md5: b58da17db24b6e08bcbf8fed2fb8c915 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.48.0-hee588c1_0.conda + sha256: 7bb84f44e1bd756da4a3d0d43308324a5533e6ba9f4772475884bce44d405064 + md5: 84bd1c9a82b455e7a2f390375fb38f90 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -4944,30 +4944,30 @@ packages: arch: x86_64 platform: linux license: Unlicense - size: 873551 - timestamp: 1733761824646 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.47.2-h5eb1b54_0.conda - sha256: 885a27fa84a5a73ed9779168c02b6c386e2fc7a53f0566b32a09ceca146b42b4 - md5: d4bf59f8783a4a66c0aec568f6de3ff4 + size: 876582 + timestamp: 1737123945341 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.48.0-h5eb1b54_0.conda + sha256: b4365ab7c74a2e6c0444eb950367fa3ca56a87c9921b2faa5ad032fe7a7df682 + md5: 1998946fa3ccf38a07b44a879b2227ae depends: - libgcc >=13 - libzlib >=1.3.1,<2.0a0 arch: aarch64 platform: linux license: Unlicense - size: 1042182 - timestamp: 1733761913736 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.47.2-h3f77e49_0.conda - sha256: f192f3c8973de9ec4c214990715f13b781965247a5cedf9162e7f9e699cfc3c4 - md5: 122d6f29470f1a991e85608e77e56a8a + size: 1044953 + timestamp: 1737123983895 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.48.0-h3f77e49_0.conda + sha256: b31169cf0ca7b6835baca4ab92d6cf2eee83b1a12a11b72f39521e8baf4d6acb + md5: 714719df4f49e30f9728956f240846ca depends: - __osx >=11.0 - libzlib >=1.3.1,<2.0a0 arch: arm64 platform: osx license: Unlicense - size: 850553 - timestamp: 1733762057506 + size: 853163 + timestamp: 1737124192432 - conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hf672d98_0.conda sha256: 0407ac9fda2bb67e11e357066eff144c845801d00b5f664efbc48813af1e7bb9 md5: be2de152d8073ef1c01b7728475f2fe7 @@ -5208,9 +5208,9 @@ packages: license_family: BSD size: 35720 timestamp: 1680113474501 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.49.2-hb9d3cd8_0.conda - sha256: a35cd81cd1a9add11024097da83cc06b0aae83186fe4124b77710876f37d8f31 - md5: 070e3c9ddab77e38799d5c30b109c633 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.50.0-hb9d3cd8_0.conda + sha256: b4a8890023902aef9f1f33e3e35603ad9c2f16c21fdb58e968fa6c1bd3e94c0b + md5: 771ee65e13bc599b0b62af5359d80169 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -5218,30 +5218,30 @@ packages: platform: linux license: MIT license_family: MIT - size: 884647 - timestamp: 1729322566955 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuv-1.49.2-h86ecc28_0.conda - sha256: adf4eca89339ac7780f2394e7e6699be81259eb91f79f9d9fdf2c1bc6b26f210 - md5: 1899e1ec2be63386c41c4db31d3056af + size: 891272 + timestamp: 1737016632446 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuv-1.50.0-h86ecc28_0.conda + sha256: 67914c7f171d343059144d804c2f17fcd621a94e45f179a0fd843b8c1618823e + md5: 915db044076cbbdffb425170deb4ce38 depends: - libgcc >=13 arch: aarch64 platform: linux license: MIT license_family: MIT - size: 627484 - timestamp: 1729322575379 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libuv-1.49.2-h7ab814d_0.conda - sha256: 0e5176af1e788ad5006cf261c4ea5a288a935fda48993b0240ddd2e562dc3d02 - md5: 4bc348e3a1a74d20a3f9beb866d75e0a + size: 621056 + timestamp: 1737016626950 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libuv-1.50.0-h5505292_0.conda + sha256: d13fb49d4c8262bf2c44ffb2c77bb2b5d0f85fc6de76bdb75208efeccb29fce6 + md5: 20717343fb30798ab7c23c2e92b748c1 depends: - __osx >=11.0 arch: arm64 platform: osx license: MIT license_family: MIT - size: 410500 - timestamp: 1729322654121 + size: 418890 + timestamp: 1737016751326 - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.5.0-h851e524_0.conda sha256: c45283fd3e90df5f0bd3dbcd31f59cdd2b001d424cf30a07223655413b158eaf md5: 63f790534398730f59e1b899c3644d4a @@ -5442,6 +5442,7 @@ packages: arch: arm64 platform: osx license: Apache-2.0 WITH LLVM-exception + license_family: APACHE size: 280830 timestamp: 1736986295869 - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.10.0-h5888daf_1.conda @@ -5548,47 +5549,47 @@ packages: license_family: BSD size: 14467 timestamp: 1733417051523 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011605-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011705-release.conda noarch: python - sha256: 66c70dda70094dd44776322c4274e0aedea1326e79407b710423d196fbf5c687 - md5: 63f0b9dbd781076f2346a4c90818fa77 + sha256: 15578c7bc78001d3882c3b9af9d7d8bf3566c68ae133870038be055c8dfd90e9 + md5: 7e6c35d82044e8d31e9327e7d90bfb2b depends: - - max-core ==25.1.0.dev2025011605 release - - max-python >=25.1.0.dev2025011605,<26.0a0 - - mojo-jupyter ==25.1.0.dev2025011605 release - - mblack ==25.1.0.dev2025011605 release + - max-core ==25.1.0.dev2025011705 release + - max-python >=25.1.0.dev2025011705,<26.0a0 + - mojo-jupyter ==25.1.0.dev2025011705 release + - mblack ==25.1.0.dev2025011705 release license: LicenseRef-Modular-Proprietary - size: 9918 - timestamp: 1737005226114 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025011605-release.conda - sha256: 833bf62b78d41a258c0f1c2fb33efe2ecd31d52c9f25e0927f3a3c06f3263143 - md5: 67b61208a7f51d98440b829a762aa983 + size: 9920 + timestamp: 1737091778690 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025011705-release.conda + sha256: 3e39d779710559206129052c64ac530b9d262288f75812ba07c3e3e395a0e18e + md5: 5575de33b0503143e635ade746f057c3 depends: - - mblack ==25.1.0.dev2025011605 release + - mblack ==25.1.0.dev2025011705 release license: LicenseRef-Modular-Proprietary - size: 244845391 - timestamp: 1737004888429 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025011605-release.conda - sha256: cca47165ed2791ce97b8ed478c375ca5e19c9b1dbad2008a88fcf55976669e98 - md5: ec67c1c4477173523c480d0439f618ee + size: 244764907 + timestamp: 1737091186388 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025011705-release.conda + sha256: a9e7747e7cb7ff01dc58f4c7f5772d2b4483693dd200c88653b1ec2dda46bc8b + md5: a9b13b577fb1bcc14b330f5a4185023c depends: - - mblack ==25.1.0.dev2025011605 release + - mblack ==25.1.0.dev2025011705 release license: LicenseRef-Modular-Proprietary - size: 247313436 - timestamp: 1737005226112 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025011605-release.conda - sha256: 0c90b26d3a97472ecf01e8f96210d1b6becf10a628eb138a8fe9cba25c275f94 - md5: 67f133797e55bdfeae523889d117d24e + size: 247240781 + timestamp: 1737091778688 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025011705-release.conda + sha256: 9369b738945ef783af1e4caf2676bd6a299ff86e4ef9504e7a5ee69841fffa01 + md5: c4397350b325ae5a0e07f61e483fc3e5 depends: - - mblack ==25.1.0.dev2025011605 release + - mblack ==25.1.0.dev2025011705 release license: LicenseRef-Modular-Proprietary - size: 206707824 - timestamp: 1737004945969 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025011605-3.12release.conda - sha256: 8ab036ac69684b74999f0274eb9741c0d0c4e036a0a777dfa2276539703bcf87 - md5: 6fde421d7d48ab50ec34964bfc003ab0 + size: 206615275 + timestamp: 1737092643231 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025011705-3.12release.conda + sha256: bdda011f73105d5d91e29abdacc4e7304501249c3bb50e83517661cdea4ef56a + md5: 0ddfaa3caa3647a0cbcdf394774ee6be depends: - - max-core ==25.1.0.dev2025011605 release + - max-core ==25.1.0.dev2025011705 release - python 3.12.* - fastapi - httpx @@ -5609,13 +5610,13 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 124617353 - timestamp: 1737004888439 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025011605-3.12release.conda - sha256: 3b711e5ef7c518e1e6b69ff69c5c7505e9f5779ee99359c7b2808a6324bee5ca - md5: f264d20311c5422c256d177081752fc4 + size: 124617960 + timestamp: 1737091186397 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025011705-3.12release.conda + sha256: 3ec1d98731b5c86829e7dd0d76b3ad820173a418f58833ea0237e34d356b58c6 + md5: 0ed0380d3ee48a36fe43f85f61fd9fe3 depends: - - max-core ==25.1.0.dev2025011605 release + - max-core ==25.1.0.dev2025011705 release - python 3.12.* - fastapi - httpx @@ -5636,13 +5637,13 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 127393468 - timestamp: 1737005226123 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025011605-3.12release.conda - sha256: f3c1e91c675ebf5835799c044f534e87840cae019df45e06ab50b09c4b819138 - md5: b42171a30a90eca86de374dc6562d2ab + size: 127367910 + timestamp: 1737091778698 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025011705-3.12release.conda + sha256: 853e12e0ac11f3dcf5392e94cc927233ba940a71a5cf73c0cec54ad4917256c0 + md5: 53e9620bd08e983c5e52e02afef0a990 depends: - - max-core ==25.1.0.dev2025011605 release + - max-core ==25.1.0.dev2025011705 release - python 3.12.* - fastapi - httpx @@ -5663,12 +5664,12 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 110522116 - timestamp: 1737004945972 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011605-release.conda + size: 110545057 + timestamp: 1737092643234 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011705-release.conda noarch: python - sha256: cfd9e14c0c14fa02b6b61141ff4f9007a11eb3ed1b11cf48a717f215e27c7407 - md5: d60436499404c582b03af554c788436f + sha256: 180bbe7d8b76c5d0f453b72f81fae10522b7a98a31e6fbeff542dbb31bb9b613 + md5: 680622d3117019e99ddc173efab357c7 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -5678,8 +5679,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130793 - timestamp: 1737005226119 + size: 130807 + timestamp: 1737091778695 - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda sha256: 78c1bbe1723449c52b7a9df1af2ee5f005209f67e40b6e1d3c7619127c43b1c7 md5: 592132998493b3ff25fd7479396e8351 @@ -5699,18 +5700,18 @@ packages: license_family: BSD size: 68803 timestamp: 1735686983426 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011605-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011705-release.conda noarch: python - sha256: 68dcf6fcc24f226462c4a7004a2214a1696f2ad0cb8d7ac229ee9ec4ea2216ea - md5: 864d0b85ff8fd743209bea757229d010 + sha256: eab543a5c31c091b3d042980d068a950c51905d14a18532710f9be94ba88ba5d + md5: eea061b963a95002a8740d4b4f506d44 depends: - - max-core ==25.1.0.dev2025011605 release + - max-core ==25.1.0.dev2025011705 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22934 - timestamp: 1737005226120 + size: 22929 + timestamp: 1737091778696 - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py312h178313f_2.conda sha256: b05bc8252a6e957bf4a776ed5e0e61d1ba88cdc46ccb55890c72cc58b10371f4 md5: 5b5e3267d915a107eca793d52e1b780a @@ -7286,17 +7287,17 @@ packages: license_family: GPL size: 250351 timestamp: 1679532511311 -- conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.35.1-pyhd8ed1ab_1.conda - sha256: f972eecb4dc8e06257af37642f92b0f2df04a7fe4c950f2e1045505e5e93985f - md5: 8c9083612c1bfe6878715ed5732605f8 +- conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.36.1-pyhd8ed1ab_0.conda + sha256: 55a8c68d75bc70624be9dbd5550d2de0fae295363fb836860a4a5d244a5b088a + md5: dbb48421efd666ea133c6d5e67291766 depends: - attrs >=22.2.0 - python >=3.9 - rpds-py >=0.7.0 + - typing_extensions >=4.4.0 license: MIT - license_family: MIT - size: 42201 - timestamp: 1733366868091 + size: 42296 + timestamp: 1737120499679 - conda: https://conda.anaconda.org/conda-forge/linux-64/regex-2024.11.6-py312h66e93f0_0.conda sha256: fcb5687d3ec5fff580b64b8fb649d9d65c999a91a5c3108a313ecdd2de99f06b md5: 647770db979b43f9c9ca25dcfa7dc4e4 @@ -7940,12 +7941,12 @@ packages: license_family: APACHE size: 15183 timestamp: 1733331395943 -- conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - sha256: 4fde5c3008bf5d2db82f2b50204464314cc3c91c1d953652f7bd01d9e52aefdf - md5: 8ac3367aafb1cc0a068483c580af8015 +- conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + sha256: c4b1ae8a2931fe9b274c44af29c5475a85b37693999f8c792dad0f8c6734b1de + md5: dbcace4706afdfb7eb891f7b37d07c04 license: LicenseRef-Public-Domain - size: 122354 - timestamp: 1728047496079 + size: 122921 + timestamp: 1737119101255 - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda sha256: e0eb6c8daf892b3056f08416a96d68b0a358b7c46b99c8a50481b22631a4dfc0 md5: e7cb0f5745e4c5035a460248334af7eb diff --git a/examples/operators/magic.lock b/examples/operators/magic.lock index 36177f7982..6fa5a396b7 100644 --- a/examples/operators/magic.lock +++ b/examples/operators/magic.lock @@ -114,7 +114,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.47.2-hee588c1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.48.0-hee588c1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hf672d98_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-hc0a3c3a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_1.conda @@ -122,7 +122,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hd9ff511_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.9.0-hb9d3cd8_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.49.2-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.50.0-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.5.0-h851e524_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda @@ -131,12 +131,12 @@ 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-25.1.0.dev2025011605-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025011605-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025011605-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025011705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025011705-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011705-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-25.1.0.dev2025011605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011705-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 @@ -206,7 +206,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.34.0-pyh31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.34.0-h31011fe_0.conda @@ -332,7 +332,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.3-h44a3b7b_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.20-h68df207_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.47.2-h5eb1b54_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.48.0-h5eb1b54_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libssh2-1.11.1-ha41c0db_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_1.conda @@ -340,7 +340,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.0-h88f7998_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.9.0-h86ecc28_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuv-1.49.2-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuv-1.50.0-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libwebp-base-1.5.0-h0886dbf_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcb-1.17.0-h262b8f6_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda @@ -349,12 +349,12 @@ 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-25.1.0.dev2025011605-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025011605-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025011605-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025011705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025011705-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011705-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-25.1.0.dev2025011605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011705-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 @@ -424,7 +424,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.34.0-pyh31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.34.0-h31011fe_0.conda @@ -544,12 +544,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.3-h3bd63a1_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h07bc746_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.47.2-h3f77e49_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.48.0-h3f77e49_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.1-h9cc3647_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libthrift-0.21.0-h64651cc_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-h551f018_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.9.0-h5505292_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libuv-1.49.2-h7ab814d_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libuv-1.50.0-h5505292_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.5.0-h2471fea_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxcb-1.17.0-hdb1d25a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.5-h178c5d8_1.conda @@ -558,12 +558,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-25.1.0.dev2025011605-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025011605-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025011605-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011705-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025011705-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025011705-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011705-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-25.1.0.dev2025011605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011705-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 @@ -632,7 +632,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.34.0-pyh31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.34.0-h31011fe_0.conda @@ -4147,9 +4147,9 @@ packages: license: ISC size: 164972 timestamp: 1716828607917 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.47.2-hee588c1_0.conda - sha256: 48af21ebc2cbf358976f1e0f4a0ab9e91dfc83d0ef337cf3837c6f5bc22fb352 - md5: b58da17db24b6e08bcbf8fed2fb8c915 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.48.0-hee588c1_0.conda + sha256: 7bb84f44e1bd756da4a3d0d43308324a5533e6ba9f4772475884bce44d405064 + md5: 84bd1c9a82b455e7a2f390375fb38f90 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -4157,30 +4157,30 @@ packages: arch: x86_64 platform: linux license: Unlicense - size: 873551 - timestamp: 1733761824646 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.47.2-h5eb1b54_0.conda - sha256: 885a27fa84a5a73ed9779168c02b6c386e2fc7a53f0566b32a09ceca146b42b4 - md5: d4bf59f8783a4a66c0aec568f6de3ff4 + size: 876582 + timestamp: 1737123945341 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.48.0-h5eb1b54_0.conda + sha256: b4365ab7c74a2e6c0444eb950367fa3ca56a87c9921b2faa5ad032fe7a7df682 + md5: 1998946fa3ccf38a07b44a879b2227ae depends: - libgcc >=13 - libzlib >=1.3.1,<2.0a0 arch: aarch64 platform: linux license: Unlicense - size: 1042182 - timestamp: 1733761913736 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.47.2-h3f77e49_0.conda - sha256: f192f3c8973de9ec4c214990715f13b781965247a5cedf9162e7f9e699cfc3c4 - md5: 122d6f29470f1a991e85608e77e56a8a + size: 1044953 + timestamp: 1737123983895 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.48.0-h3f77e49_0.conda + sha256: b31169cf0ca7b6835baca4ab92d6cf2eee83b1a12a11b72f39521e8baf4d6acb + md5: 714719df4f49e30f9728956f240846ca depends: - __osx >=11.0 - libzlib >=1.3.1,<2.0a0 arch: arm64 platform: osx license: Unlicense - size: 850553 - timestamp: 1733762057506 + size: 853163 + timestamp: 1737124192432 - conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hf672d98_0.conda sha256: 0407ac9fda2bb67e11e357066eff144c845801d00b5f664efbc48813af1e7bb9 md5: be2de152d8073ef1c01b7728475f2fe7 @@ -4421,9 +4421,9 @@ packages: license_family: BSD size: 35720 timestamp: 1680113474501 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.49.2-hb9d3cd8_0.conda - sha256: a35cd81cd1a9add11024097da83cc06b0aae83186fe4124b77710876f37d8f31 - md5: 070e3c9ddab77e38799d5c30b109c633 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.50.0-hb9d3cd8_0.conda + sha256: b4a8890023902aef9f1f33e3e35603ad9c2f16c21fdb58e968fa6c1bd3e94c0b + md5: 771ee65e13bc599b0b62af5359d80169 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -4431,30 +4431,30 @@ packages: platform: linux license: MIT license_family: MIT - size: 884647 - timestamp: 1729322566955 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuv-1.49.2-h86ecc28_0.conda - sha256: adf4eca89339ac7780f2394e7e6699be81259eb91f79f9d9fdf2c1bc6b26f210 - md5: 1899e1ec2be63386c41c4db31d3056af + size: 891272 + timestamp: 1737016632446 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuv-1.50.0-h86ecc28_0.conda + sha256: 67914c7f171d343059144d804c2f17fcd621a94e45f179a0fd843b8c1618823e + md5: 915db044076cbbdffb425170deb4ce38 depends: - libgcc >=13 arch: aarch64 platform: linux license: MIT license_family: MIT - size: 627484 - timestamp: 1729322575379 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libuv-1.49.2-h7ab814d_0.conda - sha256: 0e5176af1e788ad5006cf261c4ea5a288a935fda48993b0240ddd2e562dc3d02 - md5: 4bc348e3a1a74d20a3f9beb866d75e0a + size: 621056 + timestamp: 1737016626950 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libuv-1.50.0-h5505292_0.conda + sha256: d13fb49d4c8262bf2c44ffb2c77bb2b5d0f85fc6de76bdb75208efeccb29fce6 + md5: 20717343fb30798ab7c23c2e92b748c1 depends: - __osx >=11.0 arch: arm64 platform: osx license: MIT license_family: MIT - size: 410500 - timestamp: 1729322654121 + size: 418890 + timestamp: 1737016751326 - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.5.0-h851e524_0.conda sha256: c45283fd3e90df5f0bd3dbcd31f59cdd2b001d424cf30a07223655413b158eaf md5: 63f790534398730f59e1b899c3644d4a @@ -4655,6 +4655,7 @@ packages: arch: arm64 platform: osx license: Apache-2.0 WITH LLVM-exception + license_family: APACHE size: 280830 timestamp: 1736986295869 - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.10.0-h5888daf_1.conda @@ -4751,47 +4752,47 @@ packages: license_family: BSD size: 24048 timestamp: 1733219945697 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011605-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011705-release.conda noarch: python - sha256: 66c70dda70094dd44776322c4274e0aedea1326e79407b710423d196fbf5c687 - md5: 63f0b9dbd781076f2346a4c90818fa77 + sha256: 15578c7bc78001d3882c3b9af9d7d8bf3566c68ae133870038be055c8dfd90e9 + md5: 7e6c35d82044e8d31e9327e7d90bfb2b depends: - - max-core ==25.1.0.dev2025011605 release - - max-python >=25.1.0.dev2025011605,<26.0a0 - - mojo-jupyter ==25.1.0.dev2025011605 release - - mblack ==25.1.0.dev2025011605 release + - max-core ==25.1.0.dev2025011705 release + - max-python >=25.1.0.dev2025011705,<26.0a0 + - mojo-jupyter ==25.1.0.dev2025011705 release + - mblack ==25.1.0.dev2025011705 release license: LicenseRef-Modular-Proprietary - size: 9918 - timestamp: 1737005226114 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025011605-release.conda - sha256: 833bf62b78d41a258c0f1c2fb33efe2ecd31d52c9f25e0927f3a3c06f3263143 - md5: 67b61208a7f51d98440b829a762aa983 + size: 9920 + timestamp: 1737091778690 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025011705-release.conda + sha256: 3e39d779710559206129052c64ac530b9d262288f75812ba07c3e3e395a0e18e + md5: 5575de33b0503143e635ade746f057c3 depends: - - mblack ==25.1.0.dev2025011605 release + - mblack ==25.1.0.dev2025011705 release license: LicenseRef-Modular-Proprietary - size: 244845391 - timestamp: 1737004888429 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025011605-release.conda - sha256: cca47165ed2791ce97b8ed478c375ca5e19c9b1dbad2008a88fcf55976669e98 - md5: ec67c1c4477173523c480d0439f618ee + size: 244764907 + timestamp: 1737091186388 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025011705-release.conda + sha256: a9e7747e7cb7ff01dc58f4c7f5772d2b4483693dd200c88653b1ec2dda46bc8b + md5: a9b13b577fb1bcc14b330f5a4185023c depends: - - mblack ==25.1.0.dev2025011605 release + - mblack ==25.1.0.dev2025011705 release license: LicenseRef-Modular-Proprietary - size: 247313436 - timestamp: 1737005226112 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025011605-release.conda - sha256: 0c90b26d3a97472ecf01e8f96210d1b6becf10a628eb138a8fe9cba25c275f94 - md5: 67f133797e55bdfeae523889d117d24e + size: 247240781 + timestamp: 1737091778688 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025011705-release.conda + sha256: 9369b738945ef783af1e4caf2676bd6a299ff86e4ef9504e7a5ee69841fffa01 + md5: c4397350b325ae5a0e07f61e483fc3e5 depends: - - mblack ==25.1.0.dev2025011605 release + - mblack ==25.1.0.dev2025011705 release license: LicenseRef-Modular-Proprietary - size: 206707824 - timestamp: 1737004945969 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025011605-3.12release.conda - sha256: 8ab036ac69684b74999f0274eb9741c0d0c4e036a0a777dfa2276539703bcf87 - md5: 6fde421d7d48ab50ec34964bfc003ab0 + size: 206615275 + timestamp: 1737092643231 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025011705-3.12release.conda + sha256: bdda011f73105d5d91e29abdacc4e7304501249c3bb50e83517661cdea4ef56a + md5: 0ddfaa3caa3647a0cbcdf394774ee6be depends: - - max-core ==25.1.0.dev2025011605 release + - max-core ==25.1.0.dev2025011705 release - python 3.12.* - fastapi - httpx @@ -4812,13 +4813,13 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 124617353 - timestamp: 1737004888439 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025011605-3.12release.conda - sha256: 3b711e5ef7c518e1e6b69ff69c5c7505e9f5779ee99359c7b2808a6324bee5ca - md5: f264d20311c5422c256d177081752fc4 + size: 124617960 + timestamp: 1737091186397 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025011705-3.12release.conda + sha256: 3ec1d98731b5c86829e7dd0d76b3ad820173a418f58833ea0237e34d356b58c6 + md5: 0ed0380d3ee48a36fe43f85f61fd9fe3 depends: - - max-core ==25.1.0.dev2025011605 release + - max-core ==25.1.0.dev2025011705 release - python 3.12.* - fastapi - httpx @@ -4839,13 +4840,13 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 127393468 - timestamp: 1737005226123 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025011605-3.12release.conda - sha256: f3c1e91c675ebf5835799c044f534e87840cae019df45e06ab50b09c4b819138 - md5: b42171a30a90eca86de374dc6562d2ab + size: 127367910 + timestamp: 1737091778698 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025011705-3.12release.conda + sha256: 853e12e0ac11f3dcf5392e94cc927233ba940a71a5cf73c0cec54ad4917256c0 + md5: 53e9620bd08e983c5e52e02afef0a990 depends: - - max-core ==25.1.0.dev2025011605 release + - max-core ==25.1.0.dev2025011705 release - python 3.12.* - fastapi - httpx @@ -4866,12 +4867,12 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 110522116 - timestamp: 1737004945972 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011605-release.conda + size: 110545057 + timestamp: 1737092643234 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011705-release.conda noarch: python - sha256: cfd9e14c0c14fa02b6b61141ff4f9007a11eb3ed1b11cf48a717f215e27c7407 - md5: d60436499404c582b03af554c788436f + sha256: 180bbe7d8b76c5d0f453b72f81fae10522b7a98a31e6fbeff542dbb31bb9b613 + md5: 680622d3117019e99ddc173efab357c7 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -4881,8 +4882,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130793 - timestamp: 1737005226119 + size: 130807 + timestamp: 1737091778695 - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda sha256: 78c1bbe1723449c52b7a9df1af2ee5f005209f67e40b6e1d3c7619127c43b1c7 md5: 592132998493b3ff25fd7479396e8351 @@ -4892,18 +4893,18 @@ packages: license_family: MIT size: 14465 timestamp: 1733255681319 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011605-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011705-release.conda noarch: python - sha256: 68dcf6fcc24f226462c4a7004a2214a1696f2ad0cb8d7ac229ee9ec4ea2216ea - md5: 864d0b85ff8fd743209bea757229d010 + sha256: eab543a5c31c091b3d042980d068a950c51905d14a18532710f9be94ba88ba5d + md5: eea061b963a95002a8740d4b4f506d44 depends: - - max-core ==25.1.0.dev2025011605 release + - max-core ==25.1.0.dev2025011705 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22934 - timestamp: 1737005226120 + size: 22929 + timestamp: 1737091778696 - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py312h178313f_2.conda sha256: b05bc8252a6e957bf4a776ed5e0e61d1ba88cdc46ccb55890c72cc58b10371f4 md5: 5b5e3267d915a107eca793d52e1b780a @@ -6725,12 +6726,12 @@ packages: license_family: PSF size: 39637 timestamp: 1733188758212 -- conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - sha256: 4fde5c3008bf5d2db82f2b50204464314cc3c91c1d953652f7bd01d9e52aefdf - md5: 8ac3367aafb1cc0a068483c580af8015 +- conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + sha256: c4b1ae8a2931fe9b274c44af29c5475a85b37693999f8c792dad0f8c6734b1de + md5: dbcace4706afdfb7eb891f7b37d07c04 license: LicenseRef-Public-Domain - size: 122354 - timestamp: 1728047496079 + size: 122921 + timestamp: 1737119101255 - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda sha256: 114919ffa80c328127dab9c8e7a38f9d563c617691fb81fccb11c1e86763727e md5: 32674f8dbfb7b26410ed580dd3c10a29 diff --git a/examples/testing/magic.lock b/examples/testing/magic.lock index 36177f7982..6fa5a396b7 100644 --- a/examples/testing/magic.lock +++ b/examples/testing/magic.lock @@ -114,7 +114,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.47.2-hee588c1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.48.0-hee588c1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hf672d98_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-hc0a3c3a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_1.conda @@ -122,7 +122,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hd9ff511_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.9.0-hb9d3cd8_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.49.2-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.50.0-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.5.0-h851e524_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda @@ -131,12 +131,12 @@ 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-25.1.0.dev2025011605-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025011605-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025011605-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025011705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025011705-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011705-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-25.1.0.dev2025011605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011705-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 @@ -206,7 +206,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.34.0-pyh31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.34.0-h31011fe_0.conda @@ -332,7 +332,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.3-h44a3b7b_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.20-h68df207_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.47.2-h5eb1b54_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.48.0-h5eb1b54_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libssh2-1.11.1-ha41c0db_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_1.conda @@ -340,7 +340,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.0-h88f7998_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.9.0-h86ecc28_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuv-1.49.2-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuv-1.50.0-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libwebp-base-1.5.0-h0886dbf_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcb-1.17.0-h262b8f6_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda @@ -349,12 +349,12 @@ 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-25.1.0.dev2025011605-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025011605-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025011605-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025011705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025011705-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011705-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-25.1.0.dev2025011605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011705-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 @@ -424,7 +424,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.34.0-pyh31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.34.0-h31011fe_0.conda @@ -544,12 +544,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.3-h3bd63a1_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h07bc746_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.47.2-h3f77e49_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.48.0-h3f77e49_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.1-h9cc3647_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libthrift-0.21.0-h64651cc_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-h551f018_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.9.0-h5505292_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libuv-1.49.2-h7ab814d_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libuv-1.50.0-h5505292_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.5.0-h2471fea_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxcb-1.17.0-hdb1d25a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.5-h178c5d8_1.conda @@ -558,12 +558,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-25.1.0.dev2025011605-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025011605-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025011605-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011705-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025011705-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025011705-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011705-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-25.1.0.dev2025011605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011705-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 @@ -632,7 +632,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.34.0-pyh31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.34.0-h31011fe_0.conda @@ -4147,9 +4147,9 @@ packages: license: ISC size: 164972 timestamp: 1716828607917 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.47.2-hee588c1_0.conda - sha256: 48af21ebc2cbf358976f1e0f4a0ab9e91dfc83d0ef337cf3837c6f5bc22fb352 - md5: b58da17db24b6e08bcbf8fed2fb8c915 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.48.0-hee588c1_0.conda + sha256: 7bb84f44e1bd756da4a3d0d43308324a5533e6ba9f4772475884bce44d405064 + md5: 84bd1c9a82b455e7a2f390375fb38f90 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -4157,30 +4157,30 @@ packages: arch: x86_64 platform: linux license: Unlicense - size: 873551 - timestamp: 1733761824646 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.47.2-h5eb1b54_0.conda - sha256: 885a27fa84a5a73ed9779168c02b6c386e2fc7a53f0566b32a09ceca146b42b4 - md5: d4bf59f8783a4a66c0aec568f6de3ff4 + size: 876582 + timestamp: 1737123945341 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.48.0-h5eb1b54_0.conda + sha256: b4365ab7c74a2e6c0444eb950367fa3ca56a87c9921b2faa5ad032fe7a7df682 + md5: 1998946fa3ccf38a07b44a879b2227ae depends: - libgcc >=13 - libzlib >=1.3.1,<2.0a0 arch: aarch64 platform: linux license: Unlicense - size: 1042182 - timestamp: 1733761913736 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.47.2-h3f77e49_0.conda - sha256: f192f3c8973de9ec4c214990715f13b781965247a5cedf9162e7f9e699cfc3c4 - md5: 122d6f29470f1a991e85608e77e56a8a + size: 1044953 + timestamp: 1737123983895 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.48.0-h3f77e49_0.conda + sha256: b31169cf0ca7b6835baca4ab92d6cf2eee83b1a12a11b72f39521e8baf4d6acb + md5: 714719df4f49e30f9728956f240846ca depends: - __osx >=11.0 - libzlib >=1.3.1,<2.0a0 arch: arm64 platform: osx license: Unlicense - size: 850553 - timestamp: 1733762057506 + size: 853163 + timestamp: 1737124192432 - conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hf672d98_0.conda sha256: 0407ac9fda2bb67e11e357066eff144c845801d00b5f664efbc48813af1e7bb9 md5: be2de152d8073ef1c01b7728475f2fe7 @@ -4421,9 +4421,9 @@ packages: license_family: BSD size: 35720 timestamp: 1680113474501 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.49.2-hb9d3cd8_0.conda - sha256: a35cd81cd1a9add11024097da83cc06b0aae83186fe4124b77710876f37d8f31 - md5: 070e3c9ddab77e38799d5c30b109c633 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.50.0-hb9d3cd8_0.conda + sha256: b4a8890023902aef9f1f33e3e35603ad9c2f16c21fdb58e968fa6c1bd3e94c0b + md5: 771ee65e13bc599b0b62af5359d80169 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -4431,30 +4431,30 @@ packages: platform: linux license: MIT license_family: MIT - size: 884647 - timestamp: 1729322566955 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuv-1.49.2-h86ecc28_0.conda - sha256: adf4eca89339ac7780f2394e7e6699be81259eb91f79f9d9fdf2c1bc6b26f210 - md5: 1899e1ec2be63386c41c4db31d3056af + size: 891272 + timestamp: 1737016632446 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuv-1.50.0-h86ecc28_0.conda + sha256: 67914c7f171d343059144d804c2f17fcd621a94e45f179a0fd843b8c1618823e + md5: 915db044076cbbdffb425170deb4ce38 depends: - libgcc >=13 arch: aarch64 platform: linux license: MIT license_family: MIT - size: 627484 - timestamp: 1729322575379 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libuv-1.49.2-h7ab814d_0.conda - sha256: 0e5176af1e788ad5006cf261c4ea5a288a935fda48993b0240ddd2e562dc3d02 - md5: 4bc348e3a1a74d20a3f9beb866d75e0a + size: 621056 + timestamp: 1737016626950 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libuv-1.50.0-h5505292_0.conda + sha256: d13fb49d4c8262bf2c44ffb2c77bb2b5d0f85fc6de76bdb75208efeccb29fce6 + md5: 20717343fb30798ab7c23c2e92b748c1 depends: - __osx >=11.0 arch: arm64 platform: osx license: MIT license_family: MIT - size: 410500 - timestamp: 1729322654121 + size: 418890 + timestamp: 1737016751326 - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.5.0-h851e524_0.conda sha256: c45283fd3e90df5f0bd3dbcd31f59cdd2b001d424cf30a07223655413b158eaf md5: 63f790534398730f59e1b899c3644d4a @@ -4655,6 +4655,7 @@ packages: arch: arm64 platform: osx license: Apache-2.0 WITH LLVM-exception + license_family: APACHE size: 280830 timestamp: 1736986295869 - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.10.0-h5888daf_1.conda @@ -4751,47 +4752,47 @@ packages: license_family: BSD size: 24048 timestamp: 1733219945697 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011605-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011705-release.conda noarch: python - sha256: 66c70dda70094dd44776322c4274e0aedea1326e79407b710423d196fbf5c687 - md5: 63f0b9dbd781076f2346a4c90818fa77 + sha256: 15578c7bc78001d3882c3b9af9d7d8bf3566c68ae133870038be055c8dfd90e9 + md5: 7e6c35d82044e8d31e9327e7d90bfb2b depends: - - max-core ==25.1.0.dev2025011605 release - - max-python >=25.1.0.dev2025011605,<26.0a0 - - mojo-jupyter ==25.1.0.dev2025011605 release - - mblack ==25.1.0.dev2025011605 release + - max-core ==25.1.0.dev2025011705 release + - max-python >=25.1.0.dev2025011705,<26.0a0 + - mojo-jupyter ==25.1.0.dev2025011705 release + - mblack ==25.1.0.dev2025011705 release license: LicenseRef-Modular-Proprietary - size: 9918 - timestamp: 1737005226114 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025011605-release.conda - sha256: 833bf62b78d41a258c0f1c2fb33efe2ecd31d52c9f25e0927f3a3c06f3263143 - md5: 67b61208a7f51d98440b829a762aa983 + size: 9920 + timestamp: 1737091778690 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025011705-release.conda + sha256: 3e39d779710559206129052c64ac530b9d262288f75812ba07c3e3e395a0e18e + md5: 5575de33b0503143e635ade746f057c3 depends: - - mblack ==25.1.0.dev2025011605 release + - mblack ==25.1.0.dev2025011705 release license: LicenseRef-Modular-Proprietary - size: 244845391 - timestamp: 1737004888429 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025011605-release.conda - sha256: cca47165ed2791ce97b8ed478c375ca5e19c9b1dbad2008a88fcf55976669e98 - md5: ec67c1c4477173523c480d0439f618ee + size: 244764907 + timestamp: 1737091186388 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025011705-release.conda + sha256: a9e7747e7cb7ff01dc58f4c7f5772d2b4483693dd200c88653b1ec2dda46bc8b + md5: a9b13b577fb1bcc14b330f5a4185023c depends: - - mblack ==25.1.0.dev2025011605 release + - mblack ==25.1.0.dev2025011705 release license: LicenseRef-Modular-Proprietary - size: 247313436 - timestamp: 1737005226112 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025011605-release.conda - sha256: 0c90b26d3a97472ecf01e8f96210d1b6becf10a628eb138a8fe9cba25c275f94 - md5: 67f133797e55bdfeae523889d117d24e + size: 247240781 + timestamp: 1737091778688 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025011705-release.conda + sha256: 9369b738945ef783af1e4caf2676bd6a299ff86e4ef9504e7a5ee69841fffa01 + md5: c4397350b325ae5a0e07f61e483fc3e5 depends: - - mblack ==25.1.0.dev2025011605 release + - mblack ==25.1.0.dev2025011705 release license: LicenseRef-Modular-Proprietary - size: 206707824 - timestamp: 1737004945969 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025011605-3.12release.conda - sha256: 8ab036ac69684b74999f0274eb9741c0d0c4e036a0a777dfa2276539703bcf87 - md5: 6fde421d7d48ab50ec34964bfc003ab0 + size: 206615275 + timestamp: 1737092643231 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025011705-3.12release.conda + sha256: bdda011f73105d5d91e29abdacc4e7304501249c3bb50e83517661cdea4ef56a + md5: 0ddfaa3caa3647a0cbcdf394774ee6be depends: - - max-core ==25.1.0.dev2025011605 release + - max-core ==25.1.0.dev2025011705 release - python 3.12.* - fastapi - httpx @@ -4812,13 +4813,13 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 124617353 - timestamp: 1737004888439 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025011605-3.12release.conda - sha256: 3b711e5ef7c518e1e6b69ff69c5c7505e9f5779ee99359c7b2808a6324bee5ca - md5: f264d20311c5422c256d177081752fc4 + size: 124617960 + timestamp: 1737091186397 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025011705-3.12release.conda + sha256: 3ec1d98731b5c86829e7dd0d76b3ad820173a418f58833ea0237e34d356b58c6 + md5: 0ed0380d3ee48a36fe43f85f61fd9fe3 depends: - - max-core ==25.1.0.dev2025011605 release + - max-core ==25.1.0.dev2025011705 release - python 3.12.* - fastapi - httpx @@ -4839,13 +4840,13 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 127393468 - timestamp: 1737005226123 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025011605-3.12release.conda - sha256: f3c1e91c675ebf5835799c044f534e87840cae019df45e06ab50b09c4b819138 - md5: b42171a30a90eca86de374dc6562d2ab + size: 127367910 + timestamp: 1737091778698 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025011705-3.12release.conda + sha256: 853e12e0ac11f3dcf5392e94cc927233ba940a71a5cf73c0cec54ad4917256c0 + md5: 53e9620bd08e983c5e52e02afef0a990 depends: - - max-core ==25.1.0.dev2025011605 release + - max-core ==25.1.0.dev2025011705 release - python 3.12.* - fastapi - httpx @@ -4866,12 +4867,12 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 110522116 - timestamp: 1737004945972 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011605-release.conda + size: 110545057 + timestamp: 1737092643234 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011705-release.conda noarch: python - sha256: cfd9e14c0c14fa02b6b61141ff4f9007a11eb3ed1b11cf48a717f215e27c7407 - md5: d60436499404c582b03af554c788436f + sha256: 180bbe7d8b76c5d0f453b72f81fae10522b7a98a31e6fbeff542dbb31bb9b613 + md5: 680622d3117019e99ddc173efab357c7 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -4881,8 +4882,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130793 - timestamp: 1737005226119 + size: 130807 + timestamp: 1737091778695 - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda sha256: 78c1bbe1723449c52b7a9df1af2ee5f005209f67e40b6e1d3c7619127c43b1c7 md5: 592132998493b3ff25fd7479396e8351 @@ -4892,18 +4893,18 @@ packages: license_family: MIT size: 14465 timestamp: 1733255681319 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011605-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011705-release.conda noarch: python - sha256: 68dcf6fcc24f226462c4a7004a2214a1696f2ad0cb8d7ac229ee9ec4ea2216ea - md5: 864d0b85ff8fd743209bea757229d010 + sha256: eab543a5c31c091b3d042980d068a950c51905d14a18532710f9be94ba88ba5d + md5: eea061b963a95002a8740d4b4f506d44 depends: - - max-core ==25.1.0.dev2025011605 release + - max-core ==25.1.0.dev2025011705 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22934 - timestamp: 1737005226120 + size: 22929 + timestamp: 1737091778696 - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py312h178313f_2.conda sha256: b05bc8252a6e957bf4a776ed5e0e61d1ba88cdc46ccb55890c72cc58b10371f4 md5: 5b5e3267d915a107eca793d52e1b780a @@ -6725,12 +6726,12 @@ packages: license_family: PSF size: 39637 timestamp: 1733188758212 -- conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - sha256: 4fde5c3008bf5d2db82f2b50204464314cc3c91c1d953652f7bd01d9e52aefdf - md5: 8ac3367aafb1cc0a068483c580af8015 +- conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + sha256: c4b1ae8a2931fe9b274c44af29c5475a85b37693999f8c792dad0f8c6734b1de + md5: dbcace4706afdfb7eb891f7b37d07c04 license: LicenseRef-Public-Domain - size: 122354 - timestamp: 1728047496079 + size: 122921 + timestamp: 1737119101255 - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda sha256: 114919ffa80c328127dab9c8e7a38f9d563c617691fb81fccb11c1e86763727e md5: 32674f8dbfb7b26410ed580dd3c10a29 diff --git a/magic.lock b/magic.lock index adcf0280a6..1fd96c856c 100644 --- a/magic.lock +++ b/magic.lock @@ -114,7 +114,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.47.2-hee588c1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.48.0-hee588c1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hf672d98_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-hc0a3c3a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_1.conda @@ -122,7 +122,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hd9ff511_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.9.0-hb9d3cd8_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.49.2-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.50.0-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.5.0-h851e524_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda @@ -132,12 +132,12 @@ 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-25.1.0.dev2025011605-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025011605-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025011605-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025011705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025011705-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011705-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-25.1.0.dev2025011605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011705-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 @@ -207,7 +207,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.34.0-pyh31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.34.0-h31011fe_0.conda @@ -333,7 +333,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.3-h44a3b7b_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.20-h68df207_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.47.2-h5eb1b54_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.48.0-h5eb1b54_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libssh2-1.11.1-ha41c0db_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_1.conda @@ -341,7 +341,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.0-h88f7998_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.9.0-h86ecc28_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuv-1.49.2-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuv-1.50.0-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libwebp-base-1.5.0-h0886dbf_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcb-1.17.0-h262b8f6_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda @@ -351,12 +351,12 @@ 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-25.1.0.dev2025011605-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025011605-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025011605-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025011705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025011705-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011705-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-25.1.0.dev2025011605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011705-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 @@ -426,7 +426,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.34.0-pyh31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.34.0-h31011fe_0.conda @@ -546,12 +546,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.3-h3bd63a1_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h07bc746_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.47.2-h3f77e49_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.48.0-h3f77e49_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.1-h9cc3647_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libthrift-0.21.0-h64651cc_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-h551f018_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.9.0-h5505292_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libuv-1.49.2-h7ab814d_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libuv-1.50.0-h5505292_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.5.0-h2471fea_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxcb-1.17.0-hdb1d25a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.5-h178c5d8_1.conda @@ -561,12 +561,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-25.1.0.dev2025011605-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025011605-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025011605-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011705-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025011705-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025011705-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011705-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-25.1.0.dev2025011605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011705-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 @@ -635,7 +635,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.34.0-pyh31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.34.0-h31011fe_0.conda @@ -4150,9 +4150,9 @@ packages: license: ISC size: 164972 timestamp: 1716828607917 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.47.2-hee588c1_0.conda - sha256: 48af21ebc2cbf358976f1e0f4a0ab9e91dfc83d0ef337cf3837c6f5bc22fb352 - md5: b58da17db24b6e08bcbf8fed2fb8c915 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.48.0-hee588c1_0.conda + sha256: 7bb84f44e1bd756da4a3d0d43308324a5533e6ba9f4772475884bce44d405064 + md5: 84bd1c9a82b455e7a2f390375fb38f90 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -4160,30 +4160,30 @@ packages: arch: x86_64 platform: linux license: Unlicense - size: 873551 - timestamp: 1733761824646 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.47.2-h5eb1b54_0.conda - sha256: 885a27fa84a5a73ed9779168c02b6c386e2fc7a53f0566b32a09ceca146b42b4 - md5: d4bf59f8783a4a66c0aec568f6de3ff4 + size: 876582 + timestamp: 1737123945341 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.48.0-h5eb1b54_0.conda + sha256: b4365ab7c74a2e6c0444eb950367fa3ca56a87c9921b2faa5ad032fe7a7df682 + md5: 1998946fa3ccf38a07b44a879b2227ae depends: - libgcc >=13 - libzlib >=1.3.1,<2.0a0 arch: aarch64 platform: linux license: Unlicense - size: 1042182 - timestamp: 1733761913736 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.47.2-h3f77e49_0.conda - sha256: f192f3c8973de9ec4c214990715f13b781965247a5cedf9162e7f9e699cfc3c4 - md5: 122d6f29470f1a991e85608e77e56a8a + size: 1044953 + timestamp: 1737123983895 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.48.0-h3f77e49_0.conda + sha256: b31169cf0ca7b6835baca4ab92d6cf2eee83b1a12a11b72f39521e8baf4d6acb + md5: 714719df4f49e30f9728956f240846ca depends: - __osx >=11.0 - libzlib >=1.3.1,<2.0a0 arch: arm64 platform: osx license: Unlicense - size: 850553 - timestamp: 1733762057506 + size: 853163 + timestamp: 1737124192432 - conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hf672d98_0.conda sha256: 0407ac9fda2bb67e11e357066eff144c845801d00b5f664efbc48813af1e7bb9 md5: be2de152d8073ef1c01b7728475f2fe7 @@ -4424,9 +4424,9 @@ packages: license_family: BSD size: 35720 timestamp: 1680113474501 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.49.2-hb9d3cd8_0.conda - sha256: a35cd81cd1a9add11024097da83cc06b0aae83186fe4124b77710876f37d8f31 - md5: 070e3c9ddab77e38799d5c30b109c633 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.50.0-hb9d3cd8_0.conda + sha256: b4a8890023902aef9f1f33e3e35603ad9c2f16c21fdb58e968fa6c1bd3e94c0b + md5: 771ee65e13bc599b0b62af5359d80169 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -4434,30 +4434,30 @@ packages: platform: linux license: MIT license_family: MIT - size: 884647 - timestamp: 1729322566955 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuv-1.49.2-h86ecc28_0.conda - sha256: adf4eca89339ac7780f2394e7e6699be81259eb91f79f9d9fdf2c1bc6b26f210 - md5: 1899e1ec2be63386c41c4db31d3056af + size: 891272 + timestamp: 1737016632446 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuv-1.50.0-h86ecc28_0.conda + sha256: 67914c7f171d343059144d804c2f17fcd621a94e45f179a0fd843b8c1618823e + md5: 915db044076cbbdffb425170deb4ce38 depends: - libgcc >=13 arch: aarch64 platform: linux license: MIT license_family: MIT - size: 627484 - timestamp: 1729322575379 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libuv-1.49.2-h7ab814d_0.conda - sha256: 0e5176af1e788ad5006cf261c4ea5a288a935fda48993b0240ddd2e562dc3d02 - md5: 4bc348e3a1a74d20a3f9beb866d75e0a + size: 621056 + timestamp: 1737016626950 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libuv-1.50.0-h5505292_0.conda + sha256: d13fb49d4c8262bf2c44ffb2c77bb2b5d0f85fc6de76bdb75208efeccb29fce6 + md5: 20717343fb30798ab7c23c2e92b748c1 depends: - __osx >=11.0 arch: arm64 platform: osx license: MIT license_family: MIT - size: 410500 - timestamp: 1729322654121 + size: 418890 + timestamp: 1737016751326 - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.5.0-h851e524_0.conda sha256: c45283fd3e90df5f0bd3dbcd31f59cdd2b001d424cf30a07223655413b158eaf md5: 63f790534398730f59e1b899c3644d4a @@ -4667,6 +4667,7 @@ packages: arch: arm64 platform: osx license: Apache-2.0 WITH LLVM-exception + license_family: APACHE size: 280830 timestamp: 1736986295869 - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.10.0-h5888daf_1.conda @@ -4763,47 +4764,47 @@ packages: license_family: BSD size: 24048 timestamp: 1733219945697 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011605-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011705-release.conda noarch: python - sha256: 66c70dda70094dd44776322c4274e0aedea1326e79407b710423d196fbf5c687 - md5: 63f0b9dbd781076f2346a4c90818fa77 + sha256: 15578c7bc78001d3882c3b9af9d7d8bf3566c68ae133870038be055c8dfd90e9 + md5: 7e6c35d82044e8d31e9327e7d90bfb2b depends: - - max-core ==25.1.0.dev2025011605 release - - max-python >=25.1.0.dev2025011605,<26.0a0 - - mojo-jupyter ==25.1.0.dev2025011605 release - - mblack ==25.1.0.dev2025011605 release + - max-core ==25.1.0.dev2025011705 release + - max-python >=25.1.0.dev2025011705,<26.0a0 + - mojo-jupyter ==25.1.0.dev2025011705 release + - mblack ==25.1.0.dev2025011705 release license: LicenseRef-Modular-Proprietary - size: 9918 - timestamp: 1737005226114 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025011605-release.conda - sha256: 833bf62b78d41a258c0f1c2fb33efe2ecd31d52c9f25e0927f3a3c06f3263143 - md5: 67b61208a7f51d98440b829a762aa983 + size: 9920 + timestamp: 1737091778690 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025011705-release.conda + sha256: 3e39d779710559206129052c64ac530b9d262288f75812ba07c3e3e395a0e18e + md5: 5575de33b0503143e635ade746f057c3 depends: - - mblack ==25.1.0.dev2025011605 release + - mblack ==25.1.0.dev2025011705 release license: LicenseRef-Modular-Proprietary - size: 244845391 - timestamp: 1737004888429 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025011605-release.conda - sha256: cca47165ed2791ce97b8ed478c375ca5e19c9b1dbad2008a88fcf55976669e98 - md5: ec67c1c4477173523c480d0439f618ee + size: 244764907 + timestamp: 1737091186388 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025011705-release.conda + sha256: a9e7747e7cb7ff01dc58f4c7f5772d2b4483693dd200c88653b1ec2dda46bc8b + md5: a9b13b577fb1bcc14b330f5a4185023c depends: - - mblack ==25.1.0.dev2025011605 release + - mblack ==25.1.0.dev2025011705 release license: LicenseRef-Modular-Proprietary - size: 247313436 - timestamp: 1737005226112 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025011605-release.conda - sha256: 0c90b26d3a97472ecf01e8f96210d1b6becf10a628eb138a8fe9cba25c275f94 - md5: 67f133797e55bdfeae523889d117d24e + size: 247240781 + timestamp: 1737091778688 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025011705-release.conda + sha256: 9369b738945ef783af1e4caf2676bd6a299ff86e4ef9504e7a5ee69841fffa01 + md5: c4397350b325ae5a0e07f61e483fc3e5 depends: - - mblack ==25.1.0.dev2025011605 release + - mblack ==25.1.0.dev2025011705 release license: LicenseRef-Modular-Proprietary - size: 206707824 - timestamp: 1737004945969 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025011605-3.12release.conda - sha256: 8ab036ac69684b74999f0274eb9741c0d0c4e036a0a777dfa2276539703bcf87 - md5: 6fde421d7d48ab50ec34964bfc003ab0 + size: 206615275 + timestamp: 1737092643231 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025011705-3.12release.conda + sha256: bdda011f73105d5d91e29abdacc4e7304501249c3bb50e83517661cdea4ef56a + md5: 0ddfaa3caa3647a0cbcdf394774ee6be depends: - - max-core ==25.1.0.dev2025011605 release + - max-core ==25.1.0.dev2025011705 release - python 3.12.* - fastapi - httpx @@ -4824,13 +4825,13 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 124617353 - timestamp: 1737004888439 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025011605-3.12release.conda - sha256: 3b711e5ef7c518e1e6b69ff69c5c7505e9f5779ee99359c7b2808a6324bee5ca - md5: f264d20311c5422c256d177081752fc4 + size: 124617960 + timestamp: 1737091186397 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025011705-3.12release.conda + sha256: 3ec1d98731b5c86829e7dd0d76b3ad820173a418f58833ea0237e34d356b58c6 + md5: 0ed0380d3ee48a36fe43f85f61fd9fe3 depends: - - max-core ==25.1.0.dev2025011605 release + - max-core ==25.1.0.dev2025011705 release - python 3.12.* - fastapi - httpx @@ -4851,13 +4852,13 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 127393468 - timestamp: 1737005226123 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025011605-3.12release.conda - sha256: f3c1e91c675ebf5835799c044f534e87840cae019df45e06ab50b09c4b819138 - md5: b42171a30a90eca86de374dc6562d2ab + size: 127367910 + timestamp: 1737091778698 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025011705-3.12release.conda + sha256: 853e12e0ac11f3dcf5392e94cc927233ba940a71a5cf73c0cec54ad4917256c0 + md5: 53e9620bd08e983c5e52e02afef0a990 depends: - - max-core ==25.1.0.dev2025011605 release + - max-core ==25.1.0.dev2025011705 release - python 3.12.* - fastapi - httpx @@ -4878,12 +4879,12 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 110522116 - timestamp: 1737004945972 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011605-release.conda + size: 110545057 + timestamp: 1737092643234 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011705-release.conda noarch: python - sha256: cfd9e14c0c14fa02b6b61141ff4f9007a11eb3ed1b11cf48a717f215e27c7407 - md5: d60436499404c582b03af554c788436f + sha256: 180bbe7d8b76c5d0f453b72f81fae10522b7a98a31e6fbeff542dbb31bb9b613 + md5: 680622d3117019e99ddc173efab357c7 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -4893,8 +4894,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130793 - timestamp: 1737005226119 + size: 130807 + timestamp: 1737091778695 - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda sha256: 78c1bbe1723449c52b7a9df1af2ee5f005209f67e40b6e1d3c7619127c43b1c7 md5: 592132998493b3ff25fd7479396e8351 @@ -4904,18 +4905,18 @@ packages: license_family: MIT size: 14465 timestamp: 1733255681319 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011605-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011705-release.conda noarch: python - sha256: 68dcf6fcc24f226462c4a7004a2214a1696f2ad0cb8d7ac229ee9ec4ea2216ea - md5: 864d0b85ff8fd743209bea757229d010 + sha256: eab543a5c31c091b3d042980d068a950c51905d14a18532710f9be94ba88ba5d + md5: eea061b963a95002a8740d4b4f506d44 depends: - - max-core ==25.1.0.dev2025011605 release + - max-core ==25.1.0.dev2025011705 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22934 - timestamp: 1737005226120 + size: 22929 + timestamp: 1737091778696 - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py312h178313f_2.conda sha256: b05bc8252a6e957bf4a776ed5e0e61d1ba88cdc46ccb55890c72cc58b10371f4 md5: 5b5e3267d915a107eca793d52e1b780a @@ -6737,12 +6738,12 @@ packages: license_family: PSF size: 39637 timestamp: 1733188758212 -- conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - sha256: 4fde5c3008bf5d2db82f2b50204464314cc3c91c1d953652f7bd01d9e52aefdf - md5: 8ac3367aafb1cc0a068483c580af8015 +- conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + sha256: c4b1ae8a2931fe9b274c44af29c5475a85b37693999f8c792dad0f8c6734b1de + md5: dbcace4706afdfb7eb891f7b37d07c04 license: LicenseRef-Public-Domain - size: 122354 - timestamp: 1728047496079 + size: 122921 + timestamp: 1737119101255 - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda sha256: 114919ffa80c328127dab9c8e7a38f9d563c617691fb81fccb11c1e86763727e md5: 32674f8dbfb7b26410ed580dd3c10a29 From c48edb078ef6c9cbcf8e79e688090e9206cb4aa3 Mon Sep 17 00:00:00 2001 From: abdul dakkak Date: Thu, 16 Jan 2025 22:09:38 -0800 Subject: [PATCH 265/509] [Kernels][GPU] Move the GPU is ops to sys.intrinsics MODULAR_ORIG_COMMIT_REV_ID: 11c79dfcb67ff86a89cf549f63dc300ca98b3de9 --- stdlib/src/sys/intrinsics.mojo | 233 +++++++++++++++++++++++++++++++++ 1 file changed, 233 insertions(+) diff --git a/stdlib/src/sys/intrinsics.mojo b/stdlib/src/sys/intrinsics.mojo index cdcf3a19ac..20c8064630 100644 --- a/stdlib/src/sys/intrinsics.mojo +++ b/stdlib/src/sys/intrinsics.mojo @@ -994,3 +994,236 @@ fn ballot[dtype: DType](value: Bool) -> Scalar[dtype]: "This intrinsic is only defined for i32 or i64", ]() return llvm_intrinsic["llvm.amdgcn.ballot", Scalar[dtype]](value) + + +# ===-----------------------------------------------------------------------===# +# thread_idx +# ===-----------------------------------------------------------------------===# + + +@register_passable("trivial") +struct _ThreadIdx: + """ThreadIdx provides static methods for getting the x/y/z coordinates of + a thread within a block.""" + + @always_inline("nodebug") + fn __init__(out self): + return + + @always_inline("nodebug") + @staticmethod + fn _get_intrinsic_name[dim: StringLiteral]() -> StringLiteral: + @parameter + if is_nvidia_gpu(): + return "llvm.nvvm.read.ptx.sreg.tid." + dim + else: + return "llvm.amdgcn.workitem.id." + dim + + @always_inline("nodebug") + fn __getattr__[dim: StringLiteral](self) -> UInt: + """Gets the `x`, `y`, or `z` coordinates of a thread within a block. + + Returns: + The `x`, `y`, or `z` coordinates of a thread within a block. + """ + constrained[ + dim in ("x", "y", "z"), "the accessor must be either x, y, or z" + ]() + alias intrinsic_name = Self._get_intrinsic_name[dim]() + return UInt( + Int(llvm_intrinsic[intrinsic_name, Int32, has_side_effect=False]()) + ) + + +alias thread_idx = _ThreadIdx() + + +# ===-----------------------------------------------------------------------===# +# block_idx +# ===-----------------------------------------------------------------------===# + + +@register_passable("trivial") +struct _BlockIdx: + """BlockIdx provides static methods for getting the x/y/z coordinates of + a block within a grid.""" + + @always_inline("nodebug") + fn __init__(out self): + return + + @always_inline("nodebug") + @staticmethod + fn _get_intrinsic_name[dim: StringLiteral]() -> StringLiteral: + @parameter + if is_nvidia_gpu(): + return "llvm.nvvm.read.ptx.sreg.ctaid." + dim + else: + return "llvm.amdgcn.workgroup.id." + dim + + @always_inline("nodebug") + fn __getattr__[dim: StringLiteral](self) -> UInt: + """Gets the `x`, `y`, or `z` coordinates of a block within a grid. + + Returns: + The `x`, `y`, or `z` coordinates of a block within a grid. + """ + constrained[ + dim in ("x", "y", "z"), "the accessor must be either x, y, or z" + ]() + alias intrinsic_name = Self._get_intrinsic_name[dim]() + return UInt( + Int(llvm_intrinsic[intrinsic_name, Int32, has_side_effect=False]()) + ) + + +alias block_idx = _BlockIdx() + +# ===-----------------------------------------------------------------------===# +# block_dim +# ===-----------------------------------------------------------------------===# + + +@always_inline +fn _get_gcn_idx[offset: Int]() -> UInt: + var ptr = llvm_intrinsic[ + "llvm.amdgcn.implicitarg.ptr", + UnsafePointer[Int16, address_space=4], + has_side_effect=False, + ]() + return UInt(Int(ptr.load[alignment=4](offset))) + + +@register_passable("trivial") +struct _BlockDim: + """BlockDim provides static methods for getting the x/y/z dimension of a + block.""" + + @always_inline("nodebug") + fn __init__(out self): + return + + @always_inline("nodebug") + fn __getattr__[dim: StringLiteral](self) -> UInt: + """Gets the `x`, `y`, or `z` dimension of the block. + + Returns: + The `x`, `y`, or `z` dimension of the block. + """ + constrained[ + dim in ("x", "y", "z"), "the accessor must be either x, y, or z" + ]() + + @parameter + if is_nvidia_gpu(): + alias intrinsic_name = "llvm.nvvm.read.ptx.sreg.ntid." + dim + return UInt( + Int( + llvm_intrinsic[ + intrinsic_name, Int32, has_side_effect=False + ]() + ) + ) + else: + + @parameter + fn _get_offset() -> Int: + @parameter + if dim == "x": + return 6 + elif dim == "y": + return 7 + else: + constrained[dim == "z"]() + return 8 + + return _get_gcn_idx[_get_offset()]() + + +alias block_dim = _BlockDim() + +# ===-----------------------------------------------------------------------===# +# grid_dim +# ===-----------------------------------------------------------------------===# + + +@register_passable("trivial") +struct _GridDim: + """GridDim provides static methods for getting the x/y/z dimension of a + grid.""" + + @always_inline("nodebug") + fn __init__(out self): + return + + @always_inline("nodebug") + fn __getattr__[dim: StringLiteral](self) -> UInt: + """Gets the `x`, `y`, or `z` dimension of the grid. + + Returns: + The `x`, `y`, or `z` dimension of the grid. + """ + constrained[ + dim in ("x", "y", "z"), "the accessor must be either x, y, or z" + ]() + + @parameter + if is_nvidia_gpu(): + alias intrinsic_name = "llvm.nvvm.read.ptx.sreg.nctaid." + dim + return UInt( + Int( + llvm_intrinsic[ + intrinsic_name, Int32, has_side_effect=False + ]() + ) + ) + else: + + @parameter + fn _get_offset() -> Int: + @parameter + if dim == "x": + return 0 + elif dim == "y": + return 1 + else: + constrained[dim == "z"]() + return 2 + + return _get_gcn_idx[_get_offset()]() + + +alias grid_dim = _GridDim() + +# ===-----------------------------------------------------------------------===# +# grid_idx +# ===-----------------------------------------------------------------------===# + + +@register_passable("trivial") +struct _GridIdx: + """GlobalIdx provides static methods for getting the x/y/z global offset of + the kernel launch.""" + + @always_inline("nodebug") + fn __init__(out self): + return + + @always_inline("nodebug") + fn __getattr__[dim: StringLiteral](self) -> UInt: + """Gets the `x`, `y`, or `z` dimension of the program. + + Returns: + The `x`, `y`, or `z` dimension of the program. + """ + constrained[ + dim in ("x", "y", "z"), "the accessor must be either x, y, or z" + ]() + var thread_idx = thread_idx.__getattr__[dim]() + var block_idx = block_idx.__getattr__[dim]() + var block_dim = block_dim.__getattr__[dim]() + + return math.fma(block_idx, block_dim, thread_idx) + + +alias global_idx = _GridIdx() From 9239d148e481fdf6c611b2321363c87fec3e86d0 Mon Sep 17 00:00:00 2001 From: abdul dakkak Date: Thu, 16 Jan 2025 22:40:10 -0800 Subject: [PATCH 266/509] [Stdlib] Simplify Node initializer, NFC MODULAR_ORIG_COMMIT_REV_ID: dbba7aba2c37976c39e5ae4ddb2c21a0cb73df17 --- stdlib/src/collections/linked_list.mojo | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/stdlib/src/collections/linked_list.mojo b/stdlib/src/collections/linked_list.mojo index 515b6404a0..49850f1c65 100644 --- a/stdlib/src/collections/linked_list.mojo +++ b/stdlib/src/collections/linked_list.mojo @@ -167,7 +167,7 @@ struct LinkedList[ElementType: WritableCollectionElement]: Args: value: The value to append. """ - var node = Node[ElementType](value^, self._tail, None) + var node = Node(value^, self._tail, None) var addr = UnsafePointer[__type_of(node)].alloc(1) addr.init_pointee_move(node) if self: @@ -183,7 +183,7 @@ struct LinkedList[ElementType: WritableCollectionElement]: Args: value: The value to prepend. """ - var node = Node[ElementType](value^, None, self._head) + var node = Node(value^, None, self._head) var addr = UnsafePointer[__type_of(node)].alloc(1) addr.init_pointee_move(node) if self: From 8fa9d65afce40d2bc8346e5faae5643d5c3ef3c5 Mon Sep 17 00:00:00 2001 From: abdul dakkak Date: Thu, 16 Jan 2025 22:42:28 -0800 Subject: [PATCH 267/509] [Kernels][GPU] Restore functionality which was reverted in [Internal link] MODULAR_ORIG_COMMIT_REV_ID: 2a103ff1e21d6228cb972c5ea004ac45a8778b8e --- stdlib/src/builtin/debug_assert.mojo | 60 ++++++---------------------- 1 file changed, 13 insertions(+), 47 deletions(-) diff --git a/stdlib/src/builtin/debug_assert.mojo b/stdlib/src/builtin/debug_assert.mojo index 896368dba2..a18a9eb271 100644 --- a/stdlib/src/builtin/debug_assert.mojo +++ b/stdlib/src/builtin/debug_assert.mojo @@ -21,6 +21,7 @@ from sys import is_gpu, is_nvidia_gpu, is_amd_gpu, llvm_intrinsic from sys._build import is_debug_build from sys.ffi import c_char, c_size_t, c_uint, external_call from sys.param_env import env_get_string +from sys.intrinsics import thread_idx, block_idx from builtin._location import __call_location, _SourceLocation from memory import UnsafePointer, Span @@ -250,6 +251,8 @@ fn _debug_assert_msg( arg_bytes.write( "At ", loc, + ": ", + _GPUThreadInfo(), " Assert ", "Warning: " if defined_mode == "warn" else " Error: ", ) @@ -259,6 +262,8 @@ fn _debug_assert_msg( buffer.write( "At ", loc, + ": ", + _GPUThreadInfo(), " Assert ", "Warning: " if defined_mode == "warn" else "Error: ", ) @@ -286,60 +291,21 @@ fn _debug_assert_msg( abort() -struct _ThreadContext(Writable): - var block_x: Int32 - var block_y: Int32 - var block_z: Int32 - var thread_x: Int32 - var thread_y: Int32 - var thread_z: Int32 - - fn __init__(out self): - self.block_x = _get_id["block", "x"]() - self.block_y = _get_id["block", "y"]() - self.block_z = _get_id["block", "z"]() - self.thread_x = _get_id["thread", "x"]() - self.thread_y = _get_id["thread", "y"]() - self.thread_z = _get_id["thread", "z"]() - +@value +struct _GPUThreadInfo: fn write_to[W: Writer](self, mut writer: W): writer.write( "block: [", - self.block_x, + block_idx.x, ",", - self.block_y, + block_idx.y, ",", - self.block_z, + block_idx.z, "] thread: [", - self.thread_x, + thread_idx.x, ",", - self.thread_y, + thread_idx.y, ",", - self.thread_z, + thread_idx.z, "]", ) - - -fn _get_id[type: StringLiteral, dim: StringLiteral]() -> Int32: - alias intrinsic_name = _get_intrinsic_name[type, dim]() - return llvm_intrinsic[intrinsic_name, Int32, has_side_effect=False]() - - -fn _get_intrinsic_name[ - type: StringLiteral, dim: StringLiteral -]() -> StringLiteral: - @parameter - if is_nvidia_gpu(): - - @parameter - if type == "thread": - return "llvm.nvvm.read.ptx.sreg.tid." + dim - else: - return "llvm.nvvm.read.ptx.sreg.ctaid." + dim - else: - - @parameter - if type == "thread": - return "llvm.amdgcn.workitem.id." + dim - else: - return "llvm.amdgcn.workgroup.id." + dim From d6374fc1f4cffc0872ccae948f7ce6a0e7097f9b Mon Sep 17 00:00:00 2001 From: Joe Loser Date: Fri, 17 Jan 2025 13:17:34 -0500 Subject: [PATCH 268/509] [stdlib] Free buffer on failure in `read_until_delimeter` When `getdelim` fails, still free the memory allocated by it. MODULAR_ORIG_COMMIT_REV_ID: 7d28833bc3471a94bde956d272c8d8f38efc30d2 --- stdlib/src/builtin/io.mojo | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/stdlib/src/builtin/io.mojo b/stdlib/src/builtin/io.mojo index b4971adf71..c1cf2c9008 100644 --- a/stdlib/src/builtin/io.mojo +++ b/stdlib/src/builtin/io.mojo @@ -144,8 +144,10 @@ struct _fdopen[mode: StringLiteral = "a"]: # (or the user sends EOF without providing any input). We must # raise an error in this case because otherwise, String() will crash mojo # if the user sends EOF with no input. - # TODO: check errno to ensure we haven't encountered EINVAL or ENOMEM instead if bytes_read == -1: + if buffer: + libc.free(buffer.bitcast[NoneType]()) + # TODO: check errno to ensure we haven't encountered EINVAL or ENOMEM instead raise Error("EOF") # Copy the buffer (excluding the delimiter itself) into a Mojo String. var s = String(StringRef(buffer, bytes_read - 1)) From c1b41bee84e5f38cb20ca97e69ff4fc996d8bbe2 Mon Sep 17 00:00:00 2001 From: Tracy Sharpe <99041446+raiseirql@users.noreply.github.com> Date: Fri, 17 Jan 2025 10:49:11 -0800 Subject: [PATCH 269/509] Improve print() reliability across multiple wavefronts. MODULAR_ORIG_COMMIT_REV_ID: b975896e3275f4d8989359c1feec944fcc8e7db3 --- stdlib/src/sys/_amdgpu.mojo | 25 +++++++++---------------- 1 file changed, 9 insertions(+), 16 deletions(-) diff --git a/stdlib/src/sys/_amdgpu.mojo b/stdlib/src/sys/_amdgpu.mojo index b8cbb9a876..f3a55fcae2 100644 --- a/stdlib/src/sys/_amdgpu.mojo +++ b/stdlib/src/sys/_amdgpu.mojo @@ -660,11 +660,8 @@ struct Buffer: self._handle[].payloads.offset(ptr & self._handle[].index_mask) ) - fn pop( - mut self, - mut top: UInt64, - ) -> UInt64: - var f = Atomic._fetch_add(UnsafePointer.address_of(top), 0) + fn pop(mut self, top: UnsafePointer[UInt64, **_]) -> UInt64: + var f = Atomic._fetch_add(top, 0) # F is guaranteed to be non-zero, since there are at least as # many packets as there are waves, and each wave can hold at most # one packet. @@ -674,9 +671,7 @@ struct Buffer: UnsafePointer.address_of(p._handle[].next), 0, ) - if _compare_exchange_weak_integral_impl[scope=""]( - UnsafePointer.address_of(top), f, n - ): + if _compare_exchange_weak_integral_impl[scope=""](top, f, n): break sleep(UInt(1)) @@ -691,7 +686,7 @@ struct Buffer: if me == low: packet_ptr = Self.pop( self, - self._handle[].free_stack, + UnsafePointer.address_of(self._handle[].free_stack), ) var ptr_lo = packet_ptr @@ -704,14 +699,12 @@ struct Buffer: | ptr_lo_32.cast[DType.uint64]() ) - fn push(mut self, mut top: UInt64, ptr: UInt64): - var f = Atomic._fetch_add(UnsafePointer.address_of(top), 0) + fn push(mut self, top: UnsafePointer[UInt64, **_], ptr: UInt64): + var f = Atomic._fetch_add(top, 0) var p = self.get_header(ptr) while True: p._handle[].next = f - if _compare_exchange_weak_integral_impl[scope=""]( - UnsafePointer.address_of(top), f, ptr - ): + if _compare_exchange_weak_integral_impl[scope=""](top, f, ptr): break sleep(UInt(1)) @@ -721,7 +714,7 @@ struct Buffer: packet and signal the host. """ if me == low: - self.push(self._handle[].ready_stack, ptr) + self.push(UnsafePointer.address_of(self._handle[].ready_stack), ptr) send_signal(self._handle[].doorbell) fn return_free_packet(mut self, ptr: UInt64, me: UInt32, low: UInt32): @@ -730,7 +723,7 @@ struct Buffer: """ if me == low: var ptr = inc_ptr_tag(ptr, self._handle[].index_mask) - self.push(self._handle[].free_stack, ptr) + self.push(UnsafePointer.address_of(self._handle[].free_stack), ptr) # Must match the ABI of: From 694377e002a25dc778eb59b216a1ed8214a74740 Mon Sep 17 00:00:00 2001 From: Scott Main Date: Fri, 17 Jan 2025 16:12:59 -0800 Subject: [PATCH 270/509] Add links to the custom op tutorial MODULAR_ORIG_COMMIT_REV_ID: 1f946f0ca75356c9522b7200f569bcb5dc35eebd --- docs/manual/get-started.mdx | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/docs/manual/get-started.mdx b/docs/manual/get-started.mdx index 94d6a02348..0e6133912a 100644 --- a/docs/manual/get-started.mdx +++ b/docs/manual/get-started.mdx @@ -8,6 +8,14 @@ image: /images/artwork/mojo-get-started.jpg import GetMagic from '@site/src/includes/get_magic.mdx'; + +:::tip + +**Want to write a GPU function with Mojo?** See how to [build a custom op +with MAX](/max/tutorials/build-custom-ops). + +::: + Get ready to learn Mojo! This tutorial is designed to give you a tour of several features of Mojo by building a complete program that does much more than simply printing "Hello, world!" @@ -26,11 +34,11 @@ get started so you can learn Mojo programming basics, including the following: This tutorial might be a little long because there's a lot to learn, but we tried to keep the explanations simple, and we included links along the way for -you to go learn more about each topic. - -And if you just want to see the finished code, you can [get it on +you to go learn more about each topic. If you just want to see the finished +code, you can [get it on GitHub](https://github.com/modular/mojo/tree/nightly/examples/life). + ## 1. Create a Mojo project with `magic` We'll start by using the `magic` CLI to create a virtual environment @@ -1220,8 +1228,8 @@ way, you got a taste of: ## Next steps -The [Mojo manual](/mojo/manual/) and the Mojo standard library [API -reference](/mojo/lib) contains much more information about these and other -features of Mojo programming. These resources will help prepare you to take full -advantage of the [MAX platform](/max/) to build and deploy high-performance AI -pipelines. +For more detail about all of Mojo's features, explore the other sections of the +[Mojo manual](/mojo/manual/). + +If you want to write a GPU function with Mojo, see how to [build a custom op +with MAX](/max/tutorials/build-custom-ops). From 45730e30593d0dbdba0a7cf5773d6a230706c644 Mon Sep 17 00:00:00 2001 From: Hengjie Wang <86926839+hengjiew@users.noreply.github.com> Date: Sat, 18 Jan 2025 08:54:57 -0800 Subject: [PATCH 271/509] [stdlib] Propagate stack allocation's alignment to pointer Propagate `stack_allocation[alignment = ...]()`'s alignment to pointer's parameter. MODULAR_ORIG_COMMIT_REV_ID: 410d74c89308efa3de7db2bb0ef41fbbb325b4ee --- stdlib/src/memory/memory.mojo | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/stdlib/src/memory/memory.mojo b/stdlib/src/memory/memory.mojo index 0cbf1e0d65..57f89bc958 100644 --- a/stdlib/src/memory/memory.mojo +++ b/stdlib/src/memory/memory.mojo @@ -425,7 +425,7 @@ fn stack_allocation[ name = global_name.value, count = count.value, _type = UnsafePointer[ - type, address_space=address_space + type, address_space=address_space, alignment=alignment ]._mlir_type, alignment = alignment.value, ]() @@ -447,7 +447,9 @@ fn stack_allocation[ # Perofrm a stack allocation of the requested size, alignment, and type. return __mlir_op.`pop.stack_allocation`[ count = count.value, - _type = UnsafePointer[type, address_space=address_space]._mlir_type, + _type = UnsafePointer[ + type, address_space=address_space, alignment=alignment + ]._mlir_type, alignment = alignment.value, ]() From c11de099a0f7c4faa0077bf8463f6b73d9222d5b Mon Sep 17 00:00:00 2001 From: abdul dakkak Date: Sat, 18 Jan 2025 20:34:58 -0800 Subject: [PATCH 272/509] [Kernels][AMD] Use more optimized scheme for converting f32->bf16 (#54101) MODULAR_ORIG_COMMIT_REV_ID: a24731ef1fb412f5f47954e186ec4d7c0ff6af09 --- stdlib/src/builtin/simd.mojo | 29 +++++++++++++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) diff --git a/stdlib/src/builtin/simd.mojo b/stdlib/src/builtin/simd.mojo index 0a9cf32afa..f2953fb18e 100644 --- a/stdlib/src/builtin/simd.mojo +++ b/stdlib/src/builtin/simd.mojo @@ -1918,13 +1918,17 @@ struct SIMD[type: DType, size: Int]( return rebind[SIMD[target, size]](self != 0) @parameter - if type is DType.bfloat16 and not _has_native_bf16_support(): + if type is DType.bfloat16 and ( + not _has_native_bf16_support() or is_amd_gpu() + ): return _bfloat16_to_f32( rebind[SIMD[DType.bfloat16, size]](self) ).cast[target]() @parameter - if target is DType.bfloat16 and not _has_native_bf16_support(): + if target is DType.bfloat16 and ( + not _has_native_bf16_support() or is_amd_gpu() + ): return rebind[SIMD[target, size]]( _f32_to_bfloat16(self.cast[DType.float32]()) ) @@ -3569,6 +3573,27 @@ fn _f32_to_bfloat16_scalar( # TODO(KERN-228): support BF16 on neon systems. return _unchecked_zero[DType.bfloat16, 1]() + elif is_amd_gpu(): + alias nan_val = _nan[DType.float32]() + alias round_bias = 0x7FFF + + var tmp = UInt32(0) + var res = inlined_assembly[ + """\0A + v_cmp_u_f32 $0, $2, $2 \0A + v_bfe_u32 $1, $2, 16, 1 \0A + v_add3_u32 $1, $2, $1, $3 \0A + v_cndmask_b32 $2, $1, $4, $0 \0A + v_lshrrev_b32 $2, 16, $2 \0A + """, + _RegisterPackType[SIMD[DType.uint32, 2], Int32, Float32], + constraints="=s,=v,=v,v,v,1,2", + has_side_effect=False, + ](round_bias, nan_val, tmp, val) + return bitcast[DType.bfloat16, 1]( + UInt16(bitcast[DType.uint32, 1](res[2])) + ) + if _isnan(val): return -_nan[DType.bfloat16]() if FPUtils[DType.float32].get_sign( val From 8deff1b8e11e5fa59d63354c512ec2ff9553af39 Mon Sep 17 00:00:00 2001 From: Jack Clayton Date: Sun, 19 Jan 2025 19:07:37 -0500 Subject: [PATCH 273/509] [stdlib] Remove allocations from string aliases Make aliases `StringLiteral` so they don't allocate if not required. MODULAR_ORIG_COMMIT_REV_ID: 0243e2b63c5d5c1cbba803d27a4d974e5998a068 --- stdlib/src/collections/string/string.mojo | 21 ++++++++------------- 1 file changed, 8 insertions(+), 13 deletions(-) diff --git a/stdlib/src/collections/string/string.mojo b/stdlib/src/collections/string/string.mojo index ba8fe11d8e..3c210277ab 100644 --- a/stdlib/src/collections/string/string.mojo +++ b/stdlib/src/collections/string/string.mojo @@ -558,19 +558,14 @@ struct String( """The underlying storage for the string.""" """ Useful string aliases. """ - alias ASCII_LOWERCASE = String("abcdefghijklmnopqrstuvwxyz") - alias ASCII_UPPERCASE = String("ABCDEFGHIJKLMNOPQRSTUVWXYZ") - alias ASCII_LETTERS = String.ASCII_LOWERCASE + String.ASCII_UPPERCASE - alias DIGITS = String("0123456789") - alias HEX_DIGITS = String.DIGITS + String("abcdef") + String("ABCDEF") - alias OCT_DIGITS = String("01234567") - alias PUNCTUATION = String("""!"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~""") - alias PRINTABLE = ( - String.DIGITS - + String.ASCII_LETTERS - + String.PUNCTUATION - + " \t\n\r\v\f" # single byte utf8 whitespaces - ) + alias ASCII_LOWERCASE = "abcdefghijklmnopqrstuvwxyz" + alias ASCII_UPPERCASE = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" + alias ASCII_LETTERS = Self.ASCII_LOWERCASE + Self.ASCII_UPPERCASE + alias DIGITS = "0123456789" + alias HEX_DIGITS = Self.DIGITS + "abcdef" + "ABCDEF" + alias OCT_DIGITS = "01234567" + alias PUNCTUATION = """!"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~""" + alias PRINTABLE = Self.DIGITS + Self.ASCII_LETTERS + Self.PUNCTUATION + " \t\n\r\v\f" # ===------------------------------------------------------------------=== # # Life cycle methods From a788651c9d0d0b8924d17976cad662a604537576 Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Sun, 19 Jan 2025 17:30:28 -0800 Subject: [PATCH 274/509] [mojo-stdlib] Tidy up min/max on SIMD, NFC. This simplifies the signature of SIMD min/max, changing them to take both parameters anonymously. MODULAR_ORIG_COMMIT_REV_ID: 2d8dfca57375ec4bd64e7bf2c71239df6a9c4647 --- stdlib/src/builtin/math.mojo | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/stdlib/src/builtin/math.mojo b/stdlib/src/builtin/math.mojo index 28e3c72833..237d9d1301 100644 --- a/stdlib/src/builtin/math.mojo +++ b/stdlib/src/builtin/math.mojo @@ -175,7 +175,7 @@ fn max(x: UInt, y: UInt, /) -> UInt: @always_inline("nodebug") -fn max[dtype: DType, //](x: SIMD[dtype, _], y: __type_of(x), /) -> __type_of(x): +fn max(x: SIMD, y: __type_of(x), /) -> __type_of(x): """Performs elementwise maximum of x and y. An element of the result SIMD vector will be the maximum of the @@ -184,9 +184,6 @@ fn max[dtype: DType, //](x: SIMD[dtype, _], y: __type_of(x), /) -> __type_of(x): Constraints: The type of the inputs must be numeric or boolean. - Parameters: - dtype: The data type of the SIMD vector. - Args: x: First SIMD vector. y: Second SIMD vector. @@ -265,7 +262,7 @@ fn min(x: UInt, y: UInt, /) -> UInt: @always_inline("nodebug") -fn min[dtype: DType, //](x: SIMD[dtype, _], y: __type_of(x), /) -> __type_of(x): +fn min(x: SIMD, y: __type_of(x), /) -> __type_of(x): """Gets the elementwise minimum of x and y. An element of the result SIMD vector will be the minimum of the @@ -274,9 +271,6 @@ fn min[dtype: DType, //](x: SIMD[dtype, _], y: __type_of(x), /) -> __type_of(x): Constraints: The type of the inputs must be numeric or boolean. - Parameters: - dtype: The data type of the SIMD vector. - Args: x: First SIMD vector. y: Second SIMD vector. From b02ee5d84c345fade5f6a9c8a85d92a35c68601c Mon Sep 17 00:00:00 2001 From: Tracy Sharpe <99041446+raiseirql@users.noreply.github.com> Date: Sun, 19 Jan 2025 18:26:04 -0800 Subject: [PATCH 275/509] [stdlib] Remove sm_80 specialization for add/sub/mul Synchronize with recently merged LLVM support. MODULAR_ORIG_COMMIT_REV_ID: a721bdcdcd0e3fef3c0652067bafa165a7b96bcf --- stdlib/src/builtin/simd.mojo | 19 ------------------- 1 file changed, 19 deletions(-) diff --git a/stdlib/src/builtin/simd.mojo b/stdlib/src/builtin/simd.mojo index f2953fb18e..2a29f76624 100644 --- a/stdlib/src/builtin/simd.mojo +++ b/stdlib/src/builtin/simd.mojo @@ -770,11 +770,6 @@ struct SIMD[type: DType, size: Int]( `self[i] + rhs[i]`. """ constrained[type.is_numeric(), "the SIMD type must be numeric"]() - - @parameter - if _is_sm_8x() and type.is_half_float(): - return self.fma(1, rhs) - return __mlir_op.`pop.add`(self.value, rhs.value) @always_inline("nodebug") @@ -789,18 +784,6 @@ struct SIMD[type: DType, size: Int]( `self[i] - rhs[i]`. """ constrained[type.is_numeric(), "the SIMD type must be numeric"]() - - @parameter - if _is_sm_9x() and type is DType.bfloat16: - return _call_ptx_intrinsic[ - scalar_instruction="sub.rn.bf16", - vector2_instruction="sub.rn.bf16x2", - scalar_constraints="=h,h,h", - vector_constraints="=r,r,r", - ](self, rhs) - elif _is_sm_8x() and type.is_half_float(): - return rhs.fma(-1, self) - return __mlir_op.`pop.sub`(self.value, rhs.value) @always_inline("nodebug") @@ -820,8 +803,6 @@ struct SIMD[type: DType, size: Int]( return (rebind[Self._Mask](self) & rebind[Self._Mask](rhs)).cast[ type ]() - elif _is_sm_8x() and type.is_half_float(): - return self.fma(rhs, -0.0) constrained[type.is_numeric(), "the SIMD type must be numeric"]() return __mlir_op.`pop.mul`(self.value, rhs.value) From 9603580da73f33a1b9ebae1026cb063f1ee0db26 Mon Sep 17 00:00:00 2001 From: Tracy Sharpe <99041446+raiseirql@users.noreply.github.com> Date: Sun, 19 Jan 2025 23:24:32 -0800 Subject: [PATCH 276/509] [stdlib] Remove SIMD.cast special case for PTX Synchronize with recently landed LLVM changes that handle this fusion in the backend. MODULAR_ORIG_COMMIT_REV_ID: f1a38f4c29112b79c95e270f3df7ab2d62d0fd78 --- stdlib/src/builtin/simd.mojo | 25 +------------------------ 1 file changed, 1 insertion(+), 24 deletions(-) diff --git a/stdlib/src/builtin/simd.mojo b/stdlib/src/builtin/simd.mojo index 2a29f76624..a871a56a59 100644 --- a/stdlib/src/builtin/simd.mojo +++ b/stdlib/src/builtin/simd.mojo @@ -1823,30 +1823,7 @@ struct SIMD[type: DType, size: Int]( if is_nvidia_gpu(): @parameter - if size > 1 and type is DType.float32 and target.is_half_float(): - # For size == 1, the LLVM backend generates the correct `cvt.rn.f16.f32` - # instruction. This is why we do not handle it here. - alias vector_asm_prefix = "cvt.rn.f16x2.f32" if target is DType.float16 else "cvt.rn.bf16x2.f32" - var res = SIMD[target, size]() - - @parameter - for i in range(0, size, 2): - var bf16x2_as_uint32 = inlined_assembly[ - vector_asm_prefix + " $0, $1, $2;", - UInt32, - constraints="=r,f,f", - has_side_effect=False, - ]( - rebind[Float32](self[i + 1]), - rebind[Float32](self[i]), - ) - res = res.insert[offset=i]( - bitcast[target, 2](bf16x2_as_uint32) - ) - - return res - - elif type is DType.bfloat16 and target is DType.float64: + if type is DType.bfloat16 and target is DType.float64: # Convert to F64 via a Float32 pathway. This would allow us to # use the optimizations defined above. return self.cast[DType.float32]().cast[target]() From af2ad49f0f5fb1f60fde3a11316cdf56e1ca1d3f Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Sun, 19 Jan 2025 23:25:22 -0800 Subject: [PATCH 277/509] [mojo-stdlib] Move VariadicListMem to use Origin instead of lit.origin. This moves VariadicListMem to use Origin directly, progress on MSTDL-1041. MODULAR_ORIG_COMMIT_REV_ID: a4c18d5a20717510c8eccb86a45f4cd168fd8b67 --- stdlib/src/builtin/builtin_list.mojo | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/stdlib/src/builtin/builtin_list.mojo b/stdlib/src/builtin/builtin_list.mojo index b89b9db1c6..bf6372d054 100644 --- a/stdlib/src/builtin/builtin_list.mojo +++ b/stdlib/src/builtin/builtin_list.mojo @@ -280,7 +280,7 @@ struct _VariadicListMemIter[ struct VariadicListMem[ elt_is_mutable: Bool, //, element_type: AnyType, - origin: Origin[elt_is_mutable]._mlir_type, + origin: Origin[elt_is_mutable], ](Sized): """A utility class to access variadic function arguments of memory-only types that may have ownership. It exposes references to the elements in a From 4dffd08bac3062ccbffc1bb59ad8ce441e28df0a Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Mon, 20 Jan 2025 10:12:48 -0800 Subject: [PATCH 278/509] [mojo-stdlib] Move VariadicPack off `!lit.origin` This moves VariadicPack off of direct use of the `!lit.origin` type, using `Origin` instead. This required some refactoring of the internal logic that builds variadic pack. This is the last step that Fixes MSTDL-1041, the migration to Origin. MODULAR_ORIG_COMMIT_REV_ID: 3236395ccd98f7e441c6efee23583b428a63001b --- stdlib/src/builtin/builtin_list.mojo | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/stdlib/src/builtin/builtin_list.mojo b/stdlib/src/builtin/builtin_list.mojo index bf6372d054..4486c59fbf 100644 --- a/stdlib/src/builtin/builtin_list.mojo +++ b/stdlib/src/builtin/builtin_list.mojo @@ -290,7 +290,7 @@ struct VariadicListMem[ elt_is_mutable: True if the elements of the list are mutable for an mut or owned argument. element_type: The type of the elements in the list. - origin: The reference origin of the underlying elements. + origin: The origin of the underlying elements. """ alias reference_type = Pointer[element_type, origin] @@ -464,7 +464,7 @@ alias _AnyTypeMetaType = __type_of(AnyType) @register_passable struct VariadicPack[ elt_is_mutable: Bool, //, - origin: Origin[elt_is_mutable]._mlir_type, + origin: Origin[elt_is_mutable], element_trait: _AnyTypeMetaType, *element_types: element_trait, ](Sized): @@ -474,7 +474,7 @@ struct VariadicPack[ Parameters: elt_is_mutable: True if the elements of the list are mutable for an mut or owned argument pack. - origin: The reference origin of the underlying elements. + origin: The origin of the underlying elements. element_trait: The trait that each element of the pack conforms to. element_types: The list of types held by the argument pack. """ @@ -485,7 +485,7 @@ struct VariadicPack[ `> `, element_types, `, `, - origin, + origin._mlir_origin, `>`, ] From 5dd90042b4452a9e819a99d532f245ba4af49a8e Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Mon, 20 Jan 2025 11:18:19 -0800 Subject: [PATCH 279/509] [mojo-lang] Fix a lazy-emission of def-arg box mutations. `def` arguments can be mutated, and therefore need a local copy of the value, but we defer the generation of the copy until (and if) the argument is ever mutated. In the case when the argument is accessed immutably and then later mutated, we need to make sure to update the earlier accesses to refer to the local copy, because loops and other control flow can cause it to be reached dynamically after the mutation. This fixes https://github.com/modular/mojo/issues/3955 MODULAR_ORIG_COMMIT_REV_ID: d53c484a54f6e82a9980da836bad5b2c46687215 --- docs/changelog.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/docs/changelog.md b/docs/changelog.md index 2a33bc61c4..df058bd661 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -407,3 +407,6 @@ what we publish. - [Issue #3935](https://github.com/modular/mojo/issues/3935) - Confusing OOM error when using Tuple.get incorrectly. + +- [Issue #3955](https://github.com/modular/mojo/issues/3955) - Unexpected + copy behaviour with `def` arguments in loops From 00f15725efc555de06fd164ec14fdfd1a77d7b0b Mon Sep 17 00:00:00 2001 From: Jack Clayton Date: Tue, 21 Jan 2025 10:01:27 -0500 Subject: [PATCH 280/509] [stdlib] Simplify string join methods by reusing stack buffer And move `StringableCollectionElement` to `WritableCollectionElement` to reduce allocations. MODULAR_ORIG_COMMIT_REV_ID: 7b9512d80133561a535eb4643337e5ebe395cef5 --- stdlib/src/builtin/string_literal.mojo | 48 +++------ stdlib/src/builtin/value.mojo | 6 +- stdlib/src/collections/dict.mojo | 1 - stdlib/src/collections/linked_list.mojo | 10 -- stdlib/src/collections/string/string.mojo | 119 +++------------------- stdlib/src/prelude/__init__.mojo | 2 +- stdlib/src/utils/write.mojo | 6 +- 7 files changed, 34 insertions(+), 158 deletions(-) diff --git a/stdlib/src/builtin/string_literal.mojo b/stdlib/src/builtin/string_literal.mojo index 65bbdff186..70c638601a 100644 --- a/stdlib/src/builtin/string_literal.mojo +++ b/stdlib/src/builtin/string_literal.mojo @@ -27,6 +27,7 @@ from hashlib._hasher import _HashableWithHasher, _Hasher from memory import UnsafePointer, memcpy, Span from sys.ffi import c_char from utils import Writable, Writer +from utils.write import _WriteBufferStack from utils._visualizers import lldb_formatter_wrapping_type @@ -636,7 +637,7 @@ struct StringLiteral( """ return __mlir_op.`pop.string.replace`(self.value, old.value, new.value) - fn join[T: StringableCollectionElement](self, elems: List[T, *_]) -> String: + fn join[T: WritableCollectionElement](self, elems: List[T, *_]) -> String: """Joins string elements using the current string as a delimiter. Parameters: @@ -648,30 +649,20 @@ struct StringLiteral( Returns: The joined string. """ - return String(self).join(elems) - - fn join(self, *elems: Int) -> String: - """Joins the elements from the tuple using the current string literal as a - delimiter. - - Args: - elems: The input tuple. - - Returns: - The joined string. - """ - if len(elems) == 0: - return "" - var curr = String(elems[0]) - for i in range(1, len(elems)): - curr += self + String(elems[i]) - return curr + var string = String() + var buffer = _WriteBufferStack(string) + for i in range(len(elems)): + buffer.write(elems[i]) + if i < len(elems) - 1: + buffer.write(self) + buffer.flush() + return string - fn join[*Types: Stringable](self, *elems: *Types) -> String: + fn join[*Ts: Writable](self, *elems: *Ts) -> String: """Joins string elements using the current string as a delimiter. Parameters: - Types: The types of the elements. + Ts: The types of the elements. Args: elems: The input values. @@ -679,20 +670,7 @@ struct StringLiteral( Returns: The joined string. """ - - var result: String = "" - var is_first = True - - @parameter - fn add_elt[T: Stringable](a: T): - if is_first: - is_first = False - else: - result += self - result += String(a) - - elems.each[add_elt]() - return result + return String(elems, sep=self) fn split(self, sep: StringSlice, maxsplit: Int = -1) raises -> List[String]: """Split the string literal by a separator. diff --git a/stdlib/src/builtin/value.mojo b/stdlib/src/builtin/value.mojo index 7376977778..c3868f1a5a 100644 --- a/stdlib/src/builtin/value.mojo +++ b/stdlib/src/builtin/value.mojo @@ -207,9 +207,9 @@ trait CollectionElementNew(ExplicitlyCopyable, Movable): pass -trait StringableCollectionElement(CollectionElement, Stringable): - """The StringableCollectionElement trait denotes a trait composition - of the `CollectionElement` and `Stringable` traits. +trait WritableCollectionElement(CollectionElement, Writable): + """The WritableCollectionElement trait denotes a trait composition + of the `CollectionElement` and `Writable` traits. This is useful to have as a named entity since Mojo does not currently support anonymous trait compositions to constrain diff --git a/stdlib/src/collections/dict.mojo b/stdlib/src/collections/dict.mojo index c6f585bae6..3b64da3aab 100644 --- a/stdlib/src/collections/dict.mojo +++ b/stdlib/src/collections/dict.mojo @@ -39,7 +39,6 @@ See the `Dict` docs for more details. from sys.ffi import OpaquePointer from bit import is_power_of_two -from builtin.value import StringableCollectionElement from memory import UnsafePointer, bitcast, memcpy from .optional import Optional diff --git a/stdlib/src/collections/linked_list.mojo b/stdlib/src/collections/linked_list.mojo index 49850f1c65..cb2e362749 100644 --- a/stdlib/src/collections/linked_list.mojo +++ b/stdlib/src/collections/linked_list.mojo @@ -16,16 +16,6 @@ from collections import Optional from collections._index_normalization import normalize_index -trait WritableCollectionElement(CollectionElement, Writable): - """A trait that combines CollectionElement and Writable traits. - - This trait requires types to implement both CollectionElement and Writable - interfaces, allowing them to be used in collections and written to output. - """ - - pass - - @value struct Node[ElementType: WritableCollectionElement]: """A node in a linked list data structure. diff --git a/stdlib/src/collections/string/string.mojo b/stdlib/src/collections/string/string.mojo index 3c210277ab..81a8fc4b37 100644 --- a/stdlib/src/collections/string/string.mojo +++ b/stdlib/src/collections/string/string.mojo @@ -20,7 +20,7 @@ from os import abort from sys import bitwidthof, llvm_intrinsic from sys.ffi import c_char from sys.intrinsics import _type_is_eq -from utils.write import write_buffered +from utils.write import write_buffered, _WriteBufferStack from bit import count_leading_zeros from memory import UnsafePointer, memcmp, memcpy, Span @@ -1177,55 +1177,11 @@ struct String( writer.write_bytes(self.as_bytes()) - fn join(self, *elems: Int) -> String: - """Joins the elements from the tuple using the current string as a - delimiter. - - Args: - elems: The input tuple. - - Returns: - The joined string. - """ - if len(elems) == 0: - return "" - var curr = String(elems[0]) - for i in range(1, len(elems)): - curr += self + String(elems[i]) - return curr - - fn join[*Types: Writable](self, *elems: *Types) -> String: - """Joins string elements using the current string as a delimiter. - - Parameters: - Types: The types of the elements. - - Args: - elems: The input values. - - Returns: - The joined string. - """ - - var result = String() - var is_first = True - - @parameter - fn add_elt[T: Writable](a: T): - if is_first: - is_first = False - else: - result.write(self) - result.write(a) - - elems.each[add_elt]() - return result - - fn join[T: StringableCollectionElement](self, elems: List[T, *_]) -> String: + fn join[*Ts: Writable](self, *elems: *Ts) -> String: """Joins string elements using the current string as a delimiter. Parameters: - T: The types of the elements. + Ts: The types of the elements. Args: elems: The input values. @@ -1233,34 +1189,10 @@ struct String( Returns: The joined string. """ + var sep = StaticString(ptr=self.unsafe_ptr(), length=len(self)) + return String(elems, sep=sep) - # TODO(#3403): Simplify this when the linked conditional conformance - # feature is added. Runs a faster algorithm if the concrete types are - # able to be converted to a span of bytes. - @parameter - if _type_is_eq[T, String](): - return self.fast_join(rebind[List[String]](elems)) - elif _type_is_eq[T, StringLiteral](): - return self.fast_join(rebind[List[StringLiteral]](elems)) - # FIXME(#3597): once StringSlice conforms to CollectionElement trait: - # if _type_is_eq[T, StringSlice](): - # return self.fast_join(rebind[List[StringSlice]](elems)) - else: - var result: String = "" - var is_first = True - - for e in elems: - if is_first: - is_first = False - else: - result += self - result += String(e[]) - - return result - - fn fast_join[ - T: BytesCollectionElement, //, - ](self, elems: List[T, *_]) -> String: + fn join[T: WritableCollectionElement](self, elems: List[T, *_]) -> String: """Joins string elements using the current string as a delimiter. Parameters: @@ -1272,37 +1204,14 @@ struct String( Returns: The joined string. """ - var n_elems = len(elems) - if n_elems == 0: - return String("") - var len_self = self.byte_length() - var len_elems = 0 - # Calculate the total size of the elements to join beforehand - # to prevent alloc syscalls as we know the buffer size. - # This can hugely improve the performance on large lists - for e_ref in elems: - len_elems += len(e_ref[].as_bytes()) - var capacity = len_self * (n_elems - 1) + len_elems - var buf = Self._buffer_type(capacity=capacity) - var self_ptr = self.unsafe_ptr() - var ptr = buf.unsafe_ptr() - var offset = 0 - var i = 0 - var is_first = True - while i < n_elems: - if is_first: - is_first = False - else: - memcpy(dest=ptr + offset, src=self_ptr, count=len_self) - offset += len_self - var e = elems[i].as_bytes() - var e_len = len(e) - memcpy(dest=ptr + offset, src=e.unsafe_ptr(), count=e_len) - offset += e_len - i += 1 - buf.size = capacity - buf.append(0) - return String(buf^) + var string = String() + var buffer = _WriteBufferStack(string) + for i in range(len(elems)): + buffer.write(elems[i]) + if i < len(elems) - 1: + buffer.write(self) + buffer.flush() + return string @always_inline fn chars(self) -> CharsIter[__origin_of(self)]: diff --git a/stdlib/src/prelude/__init__.mojo b/stdlib/src/prelude/__init__.mojo index dffb5725b5..8723941535 100644 --- a/stdlib/src/prelude/__init__.mojo +++ b/stdlib/src/prelude/__init__.mojo @@ -134,7 +134,7 @@ from builtin.value import ( ExplicitlyCopyable, Movable, RepresentableCollectionElement, - StringableCollectionElement, + WritableCollectionElement, ) from documentation import doc_private from memory import AddressSpace, Pointer diff --git a/stdlib/src/utils/write.mojo b/stdlib/src/utils/write.mojo index a022102d36..0b4cbda871 100644 --- a/stdlib/src/utils/write.mojo +++ b/stdlib/src/utils/write.mojo @@ -266,9 +266,9 @@ struct _ArgBytes(Writer): args.each[write_arg]() -struct _WriteBufferStack[origin: MutableOrigin, W: Writer, //, capacity: Int]( - Writer -): +struct _WriteBufferStack[ + origin: MutableOrigin, W: Writer, //, capacity: Int = 4096 +](Writer): var data: InlineArray[UInt8, capacity] var pos: Int var writer: Pointer[W, origin] From 87bb307672b4336eeeb581d978fc9f0ba6efad29 Mon Sep 17 00:00:00 2001 From: Tracy Sharpe <99041446+raiseirql@users.noreply.github.com> Date: Tue, 21 Jan 2025 07:26:31 -0800 Subject: [PATCH 281/509] [stdlib] Remove PTX lowering for bf16/fp16 SIMD.fma This is no longer needed after recent SIMD intrinsic cleanup. MODULAR_ORIG_COMMIT_REV_ID: ccdcc5777110a1cae2c8dbe3c9bb29a9479f2756 --- stdlib/src/builtin/simd.mojo | 33 +-------------------------------- 1 file changed, 1 insertion(+), 32 deletions(-) diff --git a/stdlib/src/builtin/simd.mojo b/stdlib/src/builtin/simd.mojo index a871a56a59..8261d20e8e 100644 --- a/stdlib/src/builtin/simd.mojo +++ b/stdlib/src/builtin/simd.mojo @@ -43,7 +43,7 @@ from sys import ( sizeof, ) from sys._assembly import inlined_assembly -from sys.info import _current_arch, _is_sm_8x, _is_sm_9x +from sys.info import _current_arch, _is_sm_9x from bit import pop_count from builtin._format_float import _write_float @@ -1667,7 +1667,6 @@ struct SIMD[type: DType, size: Int]( Returns: The elementwise truncated values of this SIMD vector. """ - return self._floor_ceil_trunc_impl["llvm.trunc"]() @always_inline @@ -2027,36 +2026,6 @@ struct SIMD[type: DType, size: Int]( """ constrained[type.is_numeric(), "the SIMD type must be numeric"]() - @parameter - if (_is_sm_8x() or _is_sm_9x()) and type.is_half_float(): - alias prefix = "fma.rn.bf16" if type is DType.bfloat16 else "fma.rn.f16" - - @parameter - if size == 1: - return inlined_assembly[ - prefix + " $0, $1, $2, $3;", - Self, - constraints="=h,h,h,h", - has_side_effect=False, - ](self, multiplier, accumulator) - - var res = Self() - - @parameter - for i in range(0, size, 2): - var val = inlined_assembly[ - prefix + "x2 $0, $1, $2, $3;", - SIMD[type, 2], - constraints="=r,r,r,r", - has_side_effect=False, - ]( - self.slice[2, offset=i](), - multiplier.slice[2, offset=i](), - accumulator.slice[2, offset=i](), - ) - res = res.insert[offset=i](val) - return res - return __mlir_op.`pop.fma`( self.value, multiplier.value, accumulator.value ) From df3a9a7e00d15d160e866251b4bc4d56e8d252ae Mon Sep 17 00:00:00 2001 From: Tracy Sharpe <99041446+raiseirql@users.noreply.github.com> Date: Tue, 21 Jan 2025 08:18:11 -0800 Subject: [PATCH 282/509] [Kernels][AMD] fix fp32->bf16 for AMD GPUs (#54249) MODULAR_ORIG_COMMIT_REV_ID: 7cf61ab0f3e170865b11517116cd0a6a083482fb --- stdlib/src/builtin/simd.mojo | 52 +++++++++++++++++++++++------------- 1 file changed, 33 insertions(+), 19 deletions(-) diff --git a/stdlib/src/builtin/simd.mojo b/stdlib/src/builtin/simd.mojo index 8261d20e8e..ced76542c7 100644 --- a/stdlib/src/builtin/simd.mojo +++ b/stdlib/src/builtin/simd.mojo @@ -3501,30 +3501,44 @@ fn _f32_to_bfloat16_scalar( return _unchecked_zero[DType.bfloat16, 1]() elif is_amd_gpu(): - alias nan_val = _nan[DType.float32]() - alias round_bias = 0x7FFF - - var tmp = UInt32(0) - var res = inlined_assembly[ - """\0A - v_cmp_u_f32 $0, $2, $2 \0A - v_bfe_u32 $1, $2, 16, 1 \0A - v_add3_u32 $1, $2, $1, $3 \0A - v_cndmask_b32 $2, $1, $4, $0 \0A - v_lshrrev_b32 $2, 16, $2 \0A - """, - _RegisterPackType[SIMD[DType.uint32, 2], Int32, Float32], - constraints="=s,=v,=v,v,v,1,2", + alias round_bias = Int32(0x7FFF) + + # Compute the mask of unordered values. + var unordered_mask = inlined_assembly[ + "v_cmp_u_f32 $0, $1, $1", + SIMD[DType.uint64, 1], + constraints="=s,v", + has_side_effect=False, + ](val) + + # Compute "rounded_val = val + lsb + round_bias" to round-to-nearest. + var lsb = inlined_assembly[ + "v_bfe_u32 $0, $1, 16, 1", + SIMD[DType.uint32, 1], + constraints="=v,v", + has_side_effect=False, + ](val) + var rounded_val = inlined_assembly[ + "v_add3_u32 $0, $1, $2, $3", + SIMD[DType.uint32, 1], + constraints="=v,v,v,v", has_side_effect=False, - ](round_bias, nan_val, tmp, val) + ](val, lsb, round_bias) + + # Select the rounded value or NaN based on the unordered mask. + var float_bits = inlined_assembly[ + "v_cndmask_b32 $0, $1, $2, $3", + SIMD[DType.uint32, 1], + constraints="=v,v,v,s", + has_side_effect=False, + ](rounded_val, _nan[DType.float32](), unordered_mask) + return bitcast[DType.bfloat16, 1]( - UInt16(bitcast[DType.uint32, 1](res[2])) + UInt16(float_bits >> _fp32_bf16_mantissa_diff) ) if _isnan(val): - return -_nan[DType.bfloat16]() if FPUtils[DType.float32].get_sign( - val - ) else _nan[DType.bfloat16]() + return _nan[DType.bfloat16]() var float_bits = FPUtils[DType.float32].bitcast_to_integer(val) From 6277b4968f3544f6a43eeae91df604951cab8273 Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Tue, 21 Jan 2025 10:31:12 -0800 Subject: [PATCH 283/509] [mojo-lang][CheckLifetimes] Fix a bug handling field sensitive uses. This fixes a problem in check lifetimes, where uses of an indirect reference would not be treated as field sensitive accesses in the destructor insertion pass. This can lead to destructors not being inserted correctly in weird cases. This would have been very tricky to do, but due to all the improvements a couple months ago is now a simplification. This fixes https://github.com/modular/mojo/issues/3960 MODULAR_ORIG_COMMIT_REV_ID: 7338685a57c60d598f11edf7b0134649612e77f2 --- docs/changelog.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/changelog.md b/docs/changelog.md index df058bd661..2457d5ffdd 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -410,3 +410,5 @@ what we publish. - [Issue #3955](https://github.com/modular/mojo/issues/3955) - Unexpected copy behaviour with `def` arguments in loops + +- [Issue #3960](https://github.com/modular/mojo/issues/3960) - Infinite for loop From 04f5572cc1876d2acb151020200a083199e91ee2 Mon Sep 17 00:00:00 2001 From: Joe Loser Date: Tue, 21 Jan 2025 13:37:51 -0500 Subject: [PATCH 284/509] [stdlib] Ensure `test_linked_list.mojo` passes in debug Now that the debug issue is fixed in the compiler, use `%mojo` instead of `%mojo-no-debug` so we can ensure this test works in debug builds too. MODULAR_ORIG_COMMIT_REV_ID: d46a31ca0009d2e0b9e02366f7180ff118d6d2c5 --- stdlib/test/collections/test_linked_list.mojo | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/stdlib/test/collections/test_linked_list.mojo b/stdlib/test/collections/test_linked_list.mojo index 1375def212..a5f3467736 100644 --- a/stdlib/test/collections/test_linked_list.mojo +++ b/stdlib/test/collections/test_linked_list.mojo @@ -10,7 +10,7 @@ # See the License for the specific language governing permissions and # limitations under the License. # ===----------------------------------------------------------------------=== # -# RUN: %mojo-no-debug %s +# RUN: %mojo %s from collections import LinkedList from testing import assert_equal From c563812ae723234c0db9ed26e7364d4a85111ea2 Mon Sep 17 00:00:00 2001 From: Scott Main Date: Tue, 21 Jan 2025 13:26:17 -0800 Subject: [PATCH 285/509] Remove bold font since links are now bold MODULAR_ORIG_COMMIT_REV_ID: 82bb3e4bd413e082ace481a78ab0b357a5c67e80 --- docs/manual/get-started.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/manual/get-started.mdx b/docs/manual/get-started.mdx index 0e6133912a..49591eb123 100644 --- a/docs/manual/get-started.mdx +++ b/docs/manual/get-started.mdx @@ -11,7 +11,7 @@ import GetMagic from '@site/src/includes/get_magic.mdx'; :::tip -**Want to write a GPU function with Mojo?** See how to [build a custom op +Want to write a GPU function with Mojo? See how to [build a custom op with MAX](/max/tutorials/build-custom-ops). ::: From 115b1648e6a4615e43000a4cf02f5b60936f0ae1 Mon Sep 17 00:00:00 2001 From: Scott Main Date: Tue, 21 Jan 2025 14:08:48 -0800 Subject: [PATCH 286/509] Add system requirements MODULAR_ORIG_COMMIT_REV_ID: 430e0353774ff3fefaf03d9813e18d5d6d9b59dd --- docs/manual/get-started.mdx | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/docs/manual/get-started.mdx b/docs/manual/get-started.mdx index 49591eb123..da014c24d4 100644 --- a/docs/manual/get-started.mdx +++ b/docs/manual/get-started.mdx @@ -7,7 +7,8 @@ image: /images/artwork/mojo-get-started.jpg --- import GetMagic from '@site/src/includes/get_magic.mdx'; - +import Requirements from '@site/src/components/Requirements'; +import { requirementsNoGPU } from '@site/docs/max/requirements'; :::tip @@ -38,6 +39,9 @@ you to go learn more about each topic. If you just want to see the finished code, you can [get it on GitHub](https://github.com/modular/mojo/tree/nightly/examples/life). +System requirements: + + ## 1. Create a Mojo project with `magic` From 73192e7270848f3615af9aa682aaad462ffe91a1 Mon Sep 17 00:00:00 2001 From: Jack Clayton Date: Tue, 21 Jan 2025 20:55:07 -0500 Subject: [PATCH 287/509] [stdlib] Remove String allocations Remove string allocations by constructing from Writable variadics. MODULAR_ORIG_COMMIT_REV_ID: 2e2c83c76faddb6c1a104803f60850980de3505f --- examples/operators/main.mojo | 2 +- stdlib/benchmarks/builtin/bench_sort.mojo | 22 ++++------ stdlib/benchmarks/collections/bench_dict.mojo | 12 ++---- .../benchmarks/collections/bench_string.mojo | 18 ++++---- stdlib/src/builtin/_location.mojo | 4 +- stdlib/src/builtin/format_int.mojo | 2 +- stdlib/src/builtin/object.mojo | 18 ++------ .../src/collections/string/inline_string.mojo | 26 ++++++------ stdlib/src/collections/string/string.mojo | 16 ++++--- stdlib/src/os/_linux_aarch64.mojo | 38 ++++++++++------- stdlib/src/os/_linux_x86.mojo | 38 ++++++++++------- stdlib/src/os/_macos.mojo | 42 +++++++++++-------- stdlib/src/os/os.mojo | 9 ++-- stdlib/src/pwd/_linux.mojo | 4 +- stdlib/src/pwd/_macos.mojo | 4 +- stdlib/src/sys/ffi.mojo | 4 +- stdlib/src/testing/testing.mojo | 14 +++---- stdlib/src/time/time.mojo | 8 +++- stdlib/test/bit/test_bit.mojo | 2 +- stdlib/test/builtin/test_print.mojo | 4 +- stdlib/test/builtin/test_sort.mojo | 12 +----- .../test/collections/string/test_string.mojo | 26 ++++++------ stdlib/test/collections/test_dict.mojo | 10 ++--- stdlib/test/memory/test_memory.mojo | 27 +++--------- stdlib/test/os/test_mkdir_and_rmdir.mojo | 8 ++-- stdlib/test/random/test_random.mojo | 32 +++++++------- stdlib/test/tempfile/test_tempfile.mojo | 12 +++--- 27 files changed, 195 insertions(+), 219 deletions(-) diff --git a/examples/operators/main.mojo b/examples/operators/main.mojo index 1cffa1cbbc..09f69c3837 100644 --- a/examples/operators/main.mojo +++ b/examples/operators/main.mojo @@ -27,7 +27,7 @@ def main(): # Examples of using Complex values with String(), repr(), and print() c3 = Complex(3.14159, -2.71828) print("c3 =", c3) - var msg: String = "The value is: " + String(c3) + var msg = String("The value is: ", c3) print(msg) print(String("{!r}").format(c3)) diff --git a/stdlib/benchmarks/builtin/bench_sort.mojo b/stdlib/benchmarks/builtin/bench_sort.mojo index addf6c200c..4a4fa9d1ca 100644 --- a/stdlib/benchmarks/builtin/bench_sort.mojo +++ b/stdlib/benchmarks/builtin/bench_sort.mojo @@ -147,13 +147,13 @@ fn bench_tiny_list_sort[type: DType](mut m: Bench) raises: _ = list^ m.bench_function[bench_sort_list]( - BenchId("std_sort_random_" + String(count) + "_" + String(type)) + BenchId(String("std_sort_random_", count, "_", type)) ) m.bench_function[bench_small_sort]( - BenchId("sml_sort_random_" + String(count) + "_" + String(type)) + BenchId(String("sml_sort_random_", count, "_", type)) ) m.bench_function[bench_insertion_sort]( - BenchId("ins_sort_random_" + String(count) + "_" + String(type)) + BenchId(String("ins_sort_random_", count, "_", type)) ) @@ -202,10 +202,10 @@ fn bench_small_list_sort[type: DType](mut m: Bench, count: Int) raises: _ = list^ m.bench_function[bench_sort_list]( - BenchId("std_sort_random_" + String(count) + "_" + String(type)) + BenchId(String("std_sort_random_", count, "_", type)) ) m.bench_function[bench_insertion_sort]( - BenchId("ins_sort_random_" + String(count) + "_" + String(type)) + BenchId(String("ins_sort_random_", count, "_", type)) ) @@ -254,11 +254,11 @@ fn bench_large_list_sort[type: DType](mut m: Bench, count: Int) raises: _ = list^ m.bench_function[bench_sort_list]( - BenchId("std_sort_random_" + String(count) + "_" + String(type)) + BenchId(String("std_sort_random_", count, "_", type)) ) m.bench_function[bench_heap_sort]( - BenchId("heap_sort_random_" + String(count) + "_" + String(type)) + BenchId(String("heap_sort_random_", count, "_", type)) ) @@ -307,14 +307,10 @@ fn bench_low_cardinality_list_sort(mut m: Bench, count: Int, delta: Int) raises: _ = list^ m.bench_function[bench_sort_list]( - BenchId( - "std_sort_low_card_" + String(count) + "_delta_" + String(delta) - ) + BenchId(String("std_sort_low_card_", count, "_delta_", delta)) ) m.bench_function[bench_heap_sort]( - BenchId( - "heap_sort_low_card_" + String(count) + "_delta_" + String(delta) - ) + BenchId(String("heap_sort_low_card_", count, "_delta_", delta)) ) diff --git a/stdlib/benchmarks/collections/bench_dict.mojo b/stdlib/benchmarks/collections/bench_dict.mojo index 10f04f62ae..06c6bc9364 100644 --- a/stdlib/benchmarks/collections/bench_dict.mojo +++ b/stdlib/benchmarks/collections/bench_dict.mojo @@ -134,10 +134,10 @@ def main(): for i in range(len(sizes)): alias size = sizes[i] m.bench_function[bench_dict_insert[size]]( - BenchId("bench_dict_insert[" + String(size) + "]") + BenchId(String("bench_dict_insert[", size, "]")) ) m.bench_function[bench_dict_lookup[size]]( - BenchId("bench_dict_lookup[" + String(size) + "]") + BenchId(String("bench_dict_lookup[", size, "]")) ) m.dump_report() @@ -146,10 +146,4 @@ def main(): for i in range(len(sizes)): alias size = sizes[i] var mem_s = total_bytes_used(make_dict[size]()) - print( - '"bench_dict_memory_size[' - + String(size) - + ']",' - + String(mem_s) - + ",0" - ) + print('"bench_dict_memory_size[', size, ']",', mem_s, ",0") diff --git a/stdlib/benchmarks/collections/bench_string.mojo b/stdlib/benchmarks/collections/bench_string.mojo index fe8ba978ed..ddae0ca333 100644 --- a/stdlib/benchmarks/collections/bench_string.mojo +++ b/stdlib/benchmarks/collections/bench_string.mojo @@ -262,30 +262,30 @@ def main(): alias fname = filenames[j] alias old = old_chars[j] alias new = new_chars[j] - suffix = "[" + String(length) + "]" # "(" + fname + ")" + alias suffix = String("[", length, "]") # "(" + fname + ")" m.bench_function[bench_string_count[length, fname, old]]( - BenchId("bench_string_count" + suffix) + BenchId(String("bench_string_count", suffix)) ) m.bench_function[bench_string_split[length, fname, old]]( - BenchId("bench_string_split" + suffix) + BenchId(String("bench_string_split", suffix)) ) m.bench_function[bench_string_split[length, fname]]( - BenchId("bench_string_split_none" + suffix) + BenchId(String("bench_string_split_none", suffix)) ) m.bench_function[bench_string_splitlines[length, fname]]( - BenchId("bench_string_splitlines" + suffix) + BenchId(String("bench_string_splitlines" + suffix)) ) m.bench_function[bench_string_lower[length, fname]]( - BenchId("bench_string_lower" + suffix) + BenchId(String("bench_string_lower" + suffix)) ) m.bench_function[bench_string_upper[length, fname]]( - BenchId("bench_string_upper" + suffix) + BenchId(String("bench_string_upper" + suffix)) ) m.bench_function[bench_string_replace[length, fname, old, new]]( - BenchId("bench_string_replace" + suffix) + BenchId(String("bench_string_replace" + suffix)) ) m.bench_function[bench_string_is_valid_utf8[length, fname]]( - BenchId("bench_string_is_valid_utf8" + suffix) + BenchId(String("bench_string_is_valid_utf8" + suffix)) ) results = Dict[String, (Float64, Int)]() diff --git a/stdlib/src/builtin/_location.mojo b/stdlib/src/builtin/_location.mojo index 410d332e66..e71c5c16fe 100644 --- a/stdlib/src/builtin/_location.mojo +++ b/stdlib/src/builtin/_location.mojo @@ -31,7 +31,7 @@ struct _SourceLocation(Writable, Stringable): return String.write(self) @no_inline - fn prefix[T: Stringable](self, msg: T) -> String: + fn prefix[T: Writable](self, msg: T) -> String: """Return the given message prefixed with the pretty-printer location. Parameters: @@ -40,7 +40,7 @@ struct _SourceLocation(Writable, Stringable): Args: msg: The message to attach the prefix to. """ - return "At " + String(self) + ": " + String(msg) + return String("At ", self, ": ", msg) fn write_to[W: Writer](self, mut writer: W): """ diff --git a/stdlib/src/builtin/format_int.mojo b/stdlib/src/builtin/format_int.mojo index c54b602d19..9eb4cece7d 100644 --- a/stdlib/src/builtin/format_int.mojo +++ b/stdlib/src/builtin/format_int.mojo @@ -225,7 +225,7 @@ fn _try_format_int( # incompatible radix and custom digit chars, which we aren't doing # above. return abort[String]( - "unexpected exception formatting value as hexadecimal: " + String(e) + String("unexpected exception formatting value as hexadecimal: ", e) ) diff --git a/stdlib/src/builtin/object.mojo b/stdlib/src/builtin/object.mojo index 94ee27873b..2f9a86c459 100644 --- a/stdlib/src/builtin/object.mojo +++ b/stdlib/src/builtin/object.mojo @@ -577,15 +577,8 @@ struct _ObjectImpl( writer.write(String(self.get_as_float())) return if self.is_str(): - writer.write( - "'" - + String( - StringRef( - self.get_as_string().data, self.get_as_string().length - ) - ) - + "'" - ) + var string = self.get_as_string() + writer.write("'", StringRef(string.data, string.length), "'") return if self.is_func(): writer.write( @@ -607,12 +600,7 @@ struct _ObjectImpl( for entry in ptr[].impl[].items(): if print_sep: writer.write(", ") - writer.write( - "'" - + String(entry[].key) - + "' = " - + String(object(entry[].value.copy())) - ) + writer.write("'", entry[].key, "' = ", object(entry[].value.copy())) print_sep = True writer.write("}") return diff --git a/stdlib/src/collections/string/inline_string.mojo b/stdlib/src/collections/string/inline_string.mojo index 8235033158..f05bb63504 100644 --- a/stdlib/src/collections/string/inline_string.mojo +++ b/stdlib/src/collections/string/inline_string.mojo @@ -121,8 +121,8 @@ struct InlineString(Sized, Stringable, CollectionElement, CollectionElementNew): self._storage[_FixedString[Self.SMALL_CAP]] += str_slice except e: abort( - "unreachable: InlineString append to FixedString failed: " - + String(e), + "unreachable: InlineString append to FixedString failed: ", + e, ) else: # We're currently in the small layout but must change to the @@ -302,11 +302,11 @@ struct _FixedString[CAP: Int]( """ if len(literal) > CAP: raise Error( - "String literal (len=" - + String(len(literal)) - + ") is longer than FixedString capacity (" - + String(CAP) - + ")" + "String literal (len=", + len(literal), + ") is longer than FixedString capacity (", + CAP, + ")", ) self.buffer = InlineArray[UInt8, CAP]() @@ -384,12 +384,12 @@ struct _FixedString[CAP: Int]( if total_len > CAP: return Optional( Error( - "Insufficient capacity to append len=" - + String(len(bytes)) - + " string to len=" - + String(len(self)) - + " FixedString with capacity=" - + String(CAP), + "Insufficient capacity to append len=", + len(bytes), + " string to len=", + len(self), + " FixedString with capacity=", + CAP, ) ) diff --git a/stdlib/src/collections/string/string.mojo b/stdlib/src/collections/string/string.mojo index 81a8fc4b37..4cee5a90d0 100644 --- a/stdlib/src/collections/string/string.mojo +++ b/stdlib/src/collections/string/string.mojo @@ -374,12 +374,12 @@ fn _handle_base_prefix( fn _str_to_base_error(base: Int, str_slice: StringSlice) -> String: - return ( - "String is not convertible to integer with base " - + String(base) - + ": '" - + String(str_slice) - + "'" + return String( + "String is not convertible to integer with base ", + base, + ": '", + str_slice, + "'", ) @@ -418,9 +418,7 @@ fn _identify_base(str_slice: StringSlice, start: Int) -> Tuple[Int, Int]: fn _atof_error(str_ref: StringSlice) -> Error: - return Error( - "String is not convertible to float: '" + String(str_ref) + "'" - ) + return Error("String is not convertible to float: '", str_ref, "'") fn atof(str_slice: StringSlice) raises -> Float64: diff --git a/stdlib/src/os/_linux_aarch64.mojo b/stdlib/src/os/_linux_aarch64.mojo index 2eaba1b631..f4c9f62789 100644 --- a/stdlib/src/os/_linux_aarch64.mojo +++ b/stdlib/src/os/_linux_aarch64.mojo @@ -67,24 +67,30 @@ struct _c_stat(Stringable): self.st_birthtimespec = _CTimeSpec() self.unused = InlineArray[Int64, 2](0, 0) + fn write_to[W: Writer](self, mut writer: W): + # fmt: off + writer.write( + "{\nst_dev: ", self.st_dev, + ",\nst_mode: ", self.st_mode, + ",\nst_nlink: ", self.st_nlink, + ",\nst_ino: ", self.st_ino, + ",\nst_uid: ", self.st_uid, + ",\nst_gid: ", self.st_gid, + ",\nst_rdev: ", self.st_rdev, + ",\nst_size: ", self.st_size, + ",\nst_blksize: ", self.st_blksize, + ",\nst_blocks: ", self.st_blocks, + ",\nst_atimespec: ", self.st_atimespec, + ",\nst_mtimespec: ", self.st_mtimespec, + ",\nst_ctimespec: ", self.st_ctimespec, + ",\nst_birthtimespec: ", self.st_birthtimespec, + "\n}", + ) + # fmt: on + @no_inline fn __str__(self) -> String: - var res = String("{\n") - res += "st_dev: " + String(self.st_dev) + ",\n" - res += "st_mode: " + String(self.st_mode) + ",\n" - res += "st_nlink: " + String(self.st_nlink) + ",\n" - res += "st_ino: " + String(self.st_ino) + ",\n" - res += "st_uid: " + String(self.st_uid) + ",\n" - res += "st_gid: " + String(self.st_gid) + ",\n" - res += "st_rdev: " + String(self.st_rdev) + ",\n" - res += "st_size: " + String(self.st_size) + ",\n" - res += "st_blksize: " + String(self.st_blksize) + ",\n" - res += "st_blocks: " + String(self.st_blocks) + ",\n" - res += "st_atimespec: " + String(self.st_atimespec) + ",\n" - res += "st_mtimespec: " + String(self.st_mtimespec) + ",\n" - res += "st_ctimespec: " + String(self.st_ctimespec) + ",\n" - res += "st_birthtimespec: " + String(self.st_birthtimespec) + "\n" - return res + "}" + return String.write(self) fn _to_stat_result(self) -> stat_result: return stat_result( diff --git a/stdlib/src/os/_linux_x86.mojo b/stdlib/src/os/_linux_x86.mojo index fbd5629f48..ece0de56d8 100644 --- a/stdlib/src/os/_linux_x86.mojo +++ b/stdlib/src/os/_linux_x86.mojo @@ -65,24 +65,30 @@ struct _c_stat(Stringable): self.st_birthtimespec = _CTimeSpec() self.unused = InlineArray[Int64, 3](0, 0, 0) + fn write_to[W: Writer](self, mut writer: W): + # fmt: off + writer.write( + "{\nst_dev: ", self.st_dev, + ",\nst_mode: ", self.st_mode, + ",\nst_nlink: ", self.st_nlink, + ",\nst_ino: ", self.st_ino, + ",\nst_uid: ", self.st_uid, + ",\nst_gid: ", self.st_gid, + ",\nst_rdev: ", self.st_rdev, + ",\nst_size: ", self.st_size, + ",\nst_blksize: ", self.st_blksize, + ",\nst_blocks: ", self.st_blocks, + ",\nst_atimespec: ", self.st_atimespec, + ",\nst_mtimespec: ", self.st_mtimespec, + ",\nst_ctimespec: ", self.st_ctimespec, + ",\nst_birthtimespec: ", self.st_birthtimespec, + "\n}", + ) + # fmt: on + @no_inline fn __str__(self) -> String: - var res = String("{\n") - res += "st_dev: " + String(self.st_dev) + ",\n" - res += "st_mode: " + String(self.st_mode) + ",\n" - res += "st_nlink: " + String(self.st_nlink) + ",\n" - res += "st_ino: " + String(self.st_ino) + ",\n" - res += "st_uid: " + String(self.st_uid) + ",\n" - res += "st_gid: " + String(self.st_gid) + ",\n" - res += "st_rdev: " + String(self.st_rdev) + ",\n" - res += "st_size: " + String(self.st_size) + ",\n" - res += "st_blksize: " + String(self.st_blksize) + ",\n" - res += "st_blocks: " + String(self.st_blocks) + ",\n" - res += "st_atimespec: " + String(self.st_atimespec) + ",\n" - res += "st_mtimespec: " + String(self.st_mtimespec) + ",\n" - res += "st_ctimespec: " + String(self.st_ctimespec) + ",\n" - res += "st_birthtimespec: " + String(self.st_birthtimespec) + "\n" - return res + "}" + return String.write(self) fn _to_stat_result(self) -> stat_result: return stat_result( diff --git a/stdlib/src/os/_macos.mojo b/stdlib/src/os/_macos.mojo index 596fb6e459..8558ca764e 100644 --- a/stdlib/src/os/_macos.mojo +++ b/stdlib/src/os/_macos.mojo @@ -70,26 +70,32 @@ struct _c_stat(Stringable): self.st_lspare = 0 self.st_qspare = InlineArray[Int64, 2](0, 0) + fn write_to[W: Writer](self, mut writer: W): + # fmt: off + writer.write( + "{\nst_dev: ", self.st_dev, + ",\nst_mode: ", self.st_mode, + ",\nst_nlink: ", self.st_nlink, + ",\nst_ino: ", self.st_ino, + ",\nst_uid: ", self.st_uid, + ",\nst_gid: ", self.st_gid, + ",\nst_rdev: ", self.st_rdev, + ",\nst_atimespec: ", self.st_atimespec, + ",\nst_mtimespec: ", self.st_mtimespec, + ",\nst_ctimespec: ", self.st_ctimespec, + ",\nst_birthtimespec: ", self.st_birthtimespec, + ",\nst_size: ", self.st_size, + ",\nst_blocks: ", self.st_blocks, + ",\nst_blksize: ", self.st_blksize, + ",\nst_flags: ", self.st_flags, + "st_gen: ", self.st_gen, + "\n}", + ) + # fmt: on + @no_inline fn __str__(self) -> String: - var res = String("{\n") - res += "st_dev: " + String(self.st_dev) + ",\n" - res += "st_mode: " + String(self.st_mode) + ",\n" - res += "st_nlink: " + String(self.st_nlink) + ",\n" - res += "st_ino: " + String(self.st_ino) + ",\n" - res += "st_uid: " + String(self.st_uid) + ",\n" - res += "st_gid: " + String(self.st_gid) + ",\n" - res += "st_rdev: " + String(self.st_rdev) + ",\n" - res += "st_atimespec: " + String(self.st_atimespec) + ",\n" - res += "st_mtimespec: " + String(self.st_mtimespec) + ",\n" - res += "st_ctimespec: " + String(self.st_ctimespec) + ",\n" - res += "st_birthtimespec: " + String(self.st_birthtimespec) + ",\n" - res += "st_size: " + String(self.st_size) + ",\n" - res += "st_blocks: " + String(self.st_blocks) + ",\n" - res += "st_blksize: " + String(self.st_blksize) + ",\n" - res += "st_flags: " + String(self.st_flags) + ",\n" - res += "st_gen: " + String(self.st_gen) + "\n" - return res + "}" + return String.write(self) fn _to_stat_result(self) -> stat_result: return stat_result( diff --git a/stdlib/src/os/os.mojo b/stdlib/src/os/os.mojo index 0d623bcfe6..81ebad842f 100644 --- a/stdlib/src/os/os.mojo +++ b/stdlib/src/os/os.mojo @@ -367,11 +367,12 @@ def makedirs[ mkdir(path, mode) except e: if not exist_ok: - raise String( - e - ) + "\nset `makedirs(path, exist_ok=True)` to allow existing dirs" + raise Error( + e, + "\nset `makedirs(path, exist_ok=True)` to allow existing dirs", + ) if not os.path.isdir(path): - raise "path not created: " + path.__fspath__() + "\n" + String(e) + raise Error("path not created: ", path.__fspath__(), "\n", e) fn rmdir[PathLike: os.PathLike](path: PathLike) raises: diff --git a/stdlib/src/pwd/_linux.mojo b/stdlib/src/pwd/_linux.mojo index 877cebd05b..282de1f60a 100644 --- a/stdlib/src/pwd/_linux.mojo +++ b/stdlib/src/pwd/_linux.mojo @@ -48,12 +48,12 @@ fn _build_pw_struct(passwd_ptr: UnsafePointer[_C_Passwd]) raises -> Passwd: fn _getpw_linux(uid: UInt32) raises -> Passwd: var passwd_ptr = external_call["getpwuid", UnsafePointer[_C_Passwd]](uid) if not passwd_ptr: - raise "user ID not found in the password database: " + String(uid) + raise Error("user ID not found in the password database: ", uid) return _build_pw_struct(passwd_ptr) fn _getpw_linux(name: String) raises -> Passwd: var passwd_ptr = external_call["getpwnam", UnsafePointer[_C_Passwd]](name) if not passwd_ptr: - raise "user name not found in the password database: " + name + raise Error("user name not found in the password database: ", name) return _build_pw_struct(passwd_ptr) diff --git a/stdlib/src/pwd/_macos.mojo b/stdlib/src/pwd/_macos.mojo index 7aa51eeeb2..b09f615d3f 100644 --- a/stdlib/src/pwd/_macos.mojo +++ b/stdlib/src/pwd/_macos.mojo @@ -53,12 +53,12 @@ fn _build_pw_struct(passwd_ptr: UnsafePointer[_C_Passwd]) raises -> Passwd: fn _getpw_macos(uid: UInt32) raises -> Passwd: var passwd_ptr = external_call["getpwuid", UnsafePointer[_C_Passwd]](uid) if not passwd_ptr: - raise "user ID not found in the password database: " + String(uid) + raise Error("user ID not found in the password database: ", uid) return _build_pw_struct(passwd_ptr) fn _getpw_macos(name: String) raises -> Passwd: var passwd_ptr = external_call["getpwnam", UnsafePointer[_C_Passwd]](name) if not passwd_ptr: - raise "user name not found in the password database: " + name + raise Error("user name not found in the password database: ", name) return _build_pw_struct(passwd_ptr) diff --git a/stdlib/src/sys/ffi.mojo b/stdlib/src/sys/ffi.mojo index cafee526e0..2485f81af5 100644 --- a/stdlib/src/sys/ffi.mojo +++ b/stdlib/src/sys/ffi.mojo @@ -174,7 +174,7 @@ struct DLHandle(CollectionElement, CollectionElementNew, Boolable): var handle = dlopen(path.unsafe_cstr_ptr(), flags) if handle == OpaquePointer(): var error_message = dlerror() - abort("dlopen failed: " + String(error_message)) + abort("dlopen failed: ", String(StringRef(error_message))) self.handle = handle else: self.handle = OpaquePointer() @@ -355,7 +355,7 @@ struct DLHandle(CollectionElement, CollectionElementNew, Boolable): var err = dlerror() if err: - abort("dlsym failed: " + String(err)) + abort("dlsym failed: ", String(StringRef(err))) return res diff --git a/stdlib/src/testing/testing.mojo b/stdlib/src/testing/testing.mojo index f8b02cc294..8d1e2d9f08 100644 --- a/stdlib/src/testing/testing.mojo +++ b/stdlib/src/testing/testing.mojo @@ -42,8 +42,8 @@ from utils import StringSlice @always_inline -fn _assert_error[T: Stringable](msg: T, loc: _SourceLocation) -> String: - return loc.prefix("AssertionError: " + String(msg)) +fn _assert_error[T: Writable](msg: T, loc: _SourceLocation) -> String: + return loc.prefix(String("AssertionError: ", msg)) @always_inline @@ -502,14 +502,14 @@ fn assert_almost_equal[ ) if not all(almost_equal): - var err = String(lhs) + " is not close to " + String(rhs) + var err = String(lhs, " is not close to ", rhs) @parameter if type.is_integral() or type.is_floating_point(): - err += " with a diff of " + String(abs(lhs - rhs)) + err += String(" with a diff of ", abs(lhs - rhs)) if msg: - err += " (" + msg + ")" + err += String(" (", msg, ")") raise _assert_error(err, location.or_else(__call_location())) @@ -661,9 +661,7 @@ struct assert_raises: Raises: AssertionError: Always. The block must raise to pass the test. """ - raise Error( - "AssertionError: Didn't raise at " + String(self.call_location) - ) + raise Error("AssertionError: Didn't raise at ", self.call_location) fn __exit__(self, error: Error) raises -> Bool: """Exit the context manager with an error. diff --git a/stdlib/src/time/time.mojo b/stdlib/src/time/time.mojo index 561179f9f0..cc7a450245 100644 --- a/stdlib/src/time/time.mojo +++ b/stdlib/src/time/time.mojo @@ -61,7 +61,7 @@ alias _WINDOWS_LARGE_INTEGER = Int64 @value @register_passable("trivial") -struct _CTimeSpec(Stringable): +struct _CTimeSpec(Stringable, Writable): var tv_sec: Int # Seconds var tv_subsec: Int # subsecond (nanoseconds on linux and usec on mac) @@ -78,7 +78,11 @@ struct _CTimeSpec(Stringable): @no_inline fn __str__(self) -> String: - return String(self.as_nanoseconds()) + "ns" + return String.write(self) + + @no_inline + fn write_to[W: Writer](self, mut writer: W): + writer.write(self.as_nanoseconds(), "ns") @value diff --git a/stdlib/test/bit/test_bit.mojo b/stdlib/test/bit/test_bit.mojo index ff6e99752f..73f8bd4054 100644 --- a/stdlib/test/bit/test_bit.mojo +++ b/stdlib/test/bit/test_bit.mojo @@ -515,7 +515,7 @@ def test_log2_floor(): assert_equal( log2_floor(i), _log2_floor(i), - msg="mismatching value for the input value of " + String(i), + msg=String("mismatching value for the input value of ", i), ) fn _check_alias[n: Int](expected: Int) raises: diff --git a/stdlib/test/builtin/test_print.mojo b/stdlib/test/builtin/test_print.mojo index a16e54c918..070db4066b 100644 --- a/stdlib/test/builtin/test_print.mojo +++ b/stdlib/test/builtin/test_print.mojo @@ -23,8 +23,8 @@ from utils import IndexList, StringRef @always_inline -fn _assert_error[T: Stringable](msg: T, loc: _SourceLocation) -> String: - return loc.prefix("AssertionError: " + String(msg)) +fn _assert_error[T: Writable](msg: T, loc: _SourceLocation) -> String: + return loc.prefix(String("AssertionError: ", msg)) fn _assert_equal_error( diff --git a/stdlib/test/builtin/test_sort.mojo b/stdlib/test/builtin/test_sort.mojo index edba5a03d1..153d2d4d05 100644 --- a/stdlib/test/builtin/test_sort.mojo +++ b/stdlib/test/builtin/test_sort.mojo @@ -45,19 +45,11 @@ fn random_numbers[ return result -# fn assert_sorted[dtype: DType](mut list: List[Scalar[dtype]]) raises: -# sort[dtype](list) -# for i in range(1, len(list)): -# assert_true( -# list[i] >= list[i - 1], String(list[i - 1]) + " > " + String(list[i]) -# ) - - fn assert_sorted_string(mut list: List[String]) raises: for i in range(1, len(list)): assert_true( list[i] >= list[i - 1], - String(list[i - 1]) + " > " + String(list[i]), + String(list[i - 1], " > ", list[i]), ) @@ -65,7 +57,7 @@ fn assert_sorted[ type: ComparableCollectionElement ](mut list: List[type]) raises: for i in range(1, len(list)): - assert_true(list[i] >= list[i - 1], "error at index: " + String(i)) + assert_true(list[i] >= list[i - 1], String("error at index: ", i)) fn test_sort_small_3() raises: diff --git a/stdlib/test/collections/string/test_string.mojo b/stdlib/test/collections/string/test_string.mojo index c2f563cd2e..e576dbfcc3 100644 --- a/stdlib/test/collections/string/test_string.mojo +++ b/stdlib/test/collections/string/test_string.mojo @@ -647,18 +647,20 @@ def test_split(): # TODO add line and paragraph separator as StringLiteral once unicode # escape secuences are accepted var univ_sep_var = ( - String(" ") - + String("\t") - + String("\n") - + String("\r") - + String("\v") - + String("\f") - + String("\x1c") - + String("\x1d") - + String("\x1e") - + String(buffer=next_line) - + String(buffer=unicode_line_sep) - + String(buffer=unicode_paragraph_sep) + String( + " ", + "\t", + "\n", + "\r", + "\v", + "\f", + "\x1c", + "\x1d", + "\x1e", + String(buffer=next_line), + String(buffer=unicode_line_sep), + String(buffer=unicode_paragraph_sep), + ) ) var s = univ_sep_var + "hello" + univ_sep_var + "world" + univ_sep_var d = s.split() diff --git a/stdlib/test/collections/test_dict.mojo b/stdlib/test/collections/test_dict.mojo index 6fb74b3d29..aa2e12c2e6 100644 --- a/stdlib/test/collections/test_dict.mojo +++ b/stdlib/test/collections/test_dict.mojo @@ -78,7 +78,7 @@ def test_basic_no_copies(): def test_multiple_resizes(): var dict = Dict[String, Int]() for i in range(20): - dict["key" + String(i)] = i + 1 + dict[String("key", i)] = i + 1 assert_equal(11, dict["key10"]) assert_equal(20, dict["key19"]) @@ -99,7 +99,7 @@ def test_bool_conversion(): def test_big_dict(): var dict = Dict[String, Int]() for i in range(2000): - dict["key" + String(i)] = i + 1 + dict[String("key", i)] = i + 1 assert_equal(2000, len(dict)) @@ -132,7 +132,7 @@ def test_dict_string_representation_int_int(): def test_compact(): var dict = Dict[String, Int]() for i in range(20): - var key = "key" + String(i) + var key = String("key", i) dict[key] = i + 1 _ = dict.pop(key) assert_equal(0, len(dict)) @@ -141,10 +141,10 @@ def test_compact(): def test_compact_with_elements(): var dict = Dict[String, Int]() for i in range(5): - var key = "key" + String(i) + var key = String("key", i) dict[key] = i + 1 for i in range(5, 20): - var key = "key" + String(i) + var key = String("key", i) dict[key] = i + 1 _ = dict.pop(key) assert_equal(5, len(dict)) diff --git a/stdlib/test/memory/test_memory.mojo b/stdlib/test/memory/test_memory.mojo index 48b77fdc74..c3310b1021 100644 --- a/stdlib/test/memory/test_memory.mojo +++ b/stdlib/test/memory/test_memory.mojo @@ -198,48 +198,33 @@ def test_memcmp_extensive[ assert_equal( memcmp(ptr1, ptr1, count), 0, - "for dtype=" + String(type) + ";count=" + String(count), + String("for dtype=", type, ";count=", count), ) assert_equal( memcmp(ptr1, ptr2, count), -1, - "for dtype=" + String(type) + ";count=" + String(count), + String("for dtype=", type, ";count=", count), ) assert_equal( memcmp(ptr2, ptr1, count), 1, - "for dtype=" + String(type) + ";count=" + String(count), + String("for dtype=", type, ";count=", count), ) assert_equal( memcmp(dptr1, dptr1, count), 0, - "for dtype=" - + String(type) - + ";extremes=" - + String(extermes) - + ";count=" - + String(count), + String("for dtype=", type, ";extremes=", extermes, ";count=", count), ) assert_equal( memcmp(dptr1, dptr2, count), -1, - "for dtype=" - + String(type) - + ";extremes=" - + String(extermes) - + ";count=" - + String(count), + String("for dtype=", type, ";extremes=", extermes, ";count=", count), ) assert_equal( memcmp(dptr2, dptr1, count), 1, - "for dtype=" - + String(type) - + ";extremes=" - + String(extermes) - + ";count=" - + String(count), + String("for dtype=", type, ";extremes=", extermes, ";count=", count), ) ptr1.free() diff --git a/stdlib/test/os/test_mkdir_and_rmdir.mojo b/stdlib/test/os/test_mkdir_and_rmdir.mojo index 4fef85d336..5ebb882c84 100644 --- a/stdlib/test/os/test_mkdir_and_rmdir.mojo +++ b/stdlib/test/os/test_mkdir_and_rmdir.mojo @@ -43,7 +43,7 @@ fn test_mkdir_and_rmdir(path: String) raises: # verify that the test dir does not exist before starting the test assert_false( exists(path), - "Unexpected dir " + String(path) + " it should not exist", + String("Unexpected dir ", path, " it should not exist"), ) os.mkdir(path, 0o777) @@ -62,8 +62,7 @@ fn test_mkdir_and_rmdir(path: Path) raises: pass # verify that the test dir does not exist before starting the test assert_false( - exists(path), - "Unexpected dir " + String(path) + " it should not exist", + exists(path), String("Unexpected dir ", path, " it should not exist") ) os.mkdir(path, 0o777) @@ -82,8 +81,7 @@ fn test_makedirs_and_removedirs(path: Path) raises: pass # verify that the test dir does not exist before starting the test assert_false( - exists(path), - "Unexpected dir " + String(path) + " it should not exist", + exists(path), String("Unexpected dir ", path, " it should not exist") ) os.makedirs(path, exist_ok=True) assert_true(exists(path)) diff --git a/stdlib/test/random/test_random.mojo b/stdlib/test/random/test_random.mojo index 384a2f4ed6..8f705b002b 100644 --- a/stdlib/test/random/test_random.mojo +++ b/stdlib/test/random/test_random.mojo @@ -29,39 +29,43 @@ def test_random(): var random_float = random_float64(0, 1) assert_true( random_float >= 0, - "Value " + String(random_float) + " is not above or equal to 0", + String("Value ", random_float, " is not above or equal to 0"), ) assert_true( random_float <= 1, - "Value " + String(random_float) + " is not below or equal to 1", + String("Value ", random_float, " is not below or equal to 1"), ) var random_signed = random_si64(-255, 255) assert_true( random_signed >= -255, - "Signed value " - + String(random_signed) - + " is not above or equal to -255", + String( + "Signed value ", random_signed, " is not above or equal to -255" + ), ) assert_true( random_signed <= 255, - "Signed value " - + String(random_signed) - + " is not below or equal to 255", + String( + "Signed value ", random_signed, " is not below or equal to 255" + ), ) var random_unsigned = random_ui64(0, 255) assert_true( random_unsigned >= 0, - "Unsigned value " - + String(random_unsigned) - + " is not above or equal to 0", + String( + "Unsigned value ", + random_unsigned, + " is not above or equal to 0", + ), ) assert_true( random_unsigned <= 255, - "Unsigned value " - + String(random_unsigned) - + " is not below or equal to 255", + String( + "Unsigned value ", + random_unsigned, + " is not below or equal to 255", + ), ) var random_normal = randn_float64(0, 1) diff --git a/stdlib/test/tempfile/test_tempfile.mojo b/stdlib/test/tempfile/test_tempfile.mojo index 6f8fcf8b17..61b6e1daeb 100644 --- a/stdlib/test/tempfile/test_tempfile.mojo +++ b/stdlib/test/tempfile/test_tempfile.mojo @@ -100,16 +100,14 @@ def _set_up_gettempdir_test( except: os.rmdir(dir_with_writing_access) raise Error( - "Failed to setup test, couldn't create " - + String(dir_without_writing_access) + "Failed to setup test, couldn't create ", dir_without_writing_access ) def test_gettempdir(): var non_existing_dir = Path() / "non_existing_dir" assert_false( - exists(non_existing_dir), - "Unexpected dir" + String(non_existing_dir), + exists(non_existing_dir), String("Unexpected dir", non_existing_dir) ) var dir_without_writing_access = Path() / "dir_without_writing_access" var dir_with_writing_access = Path() / "dir_with_writing_access" @@ -129,7 +127,7 @@ def test_gettempdir(): assert_equal( tmpdir_result.value(), String(dir_with_writing_access), - "expected to get:" + String(dir_with_writing_access), + String("expected to get:", dir_with_writing_access), ) # test gettempdir falls back to TEMP @@ -144,7 +142,7 @@ def test_gettempdir(): assert_equal( tmpdir_result.value(), String(dir_with_writing_access), - "expected to get:" + String(dir_with_writing_access), + String("expected to get:", dir_with_writing_access), ) # test gettempdir falls back to TMP @@ -160,7 +158,7 @@ def test_gettempdir(): assert_equal( tmpdir_result.value(), String(dir_with_writing_access), - "expected to get:" + String(dir_with_writing_access), + String("expected to get:", dir_with_writing_access), ) _clean_up_gettempdir_test() From c6d25dcaebbe397b991e8bf362695b595275bb64 Mon Sep 17 00:00:00 2001 From: modularbot Date: Wed, 22 Jan 2025 21:36:09 +0000 Subject: [PATCH 288/509] Update lockfiles to point to latest nightly version: 25.1.0.dev2025012205 --- examples/life/magic.lock | 1036 +++++++++++++++--------------- examples/magic.lock | 1076 +++++++++++++++---------------- examples/notebooks/magic.lock | 1131 ++++++++++++++++----------------- examples/operators/magic.lock | 1036 +++++++++++++++--------------- examples/testing/magic.lock | 1036 +++++++++++++++--------------- magic.lock | 1036 +++++++++++++++--------------- 6 files changed, 3128 insertions(+), 3223 deletions(-) diff --git a/examples/life/magic.lock b/examples/life/magic.lock index af20cdf69e..163d1ace68 100644 --- a/examples/life/magic.lock +++ b/examples/life/magic.lock @@ -17,19 +17,19 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/aom-3.9.1-hac33072_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/attr-2.5.1-h166bdaf_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.3.0-pyh71513ae_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-h205f482_16.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.1-h205f482_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.1-h1a47875_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.10.6-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.3.0-h4e1184b_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.0-h7959bf6_11.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.2-hefd7a92_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-h831e299_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-h173a860_6.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h11f4f37_12.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.7-hf454442_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.9-he1b24dc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.2-h4e1184b_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-h4e1184b_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.8-h8570fcd_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-h7001638_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.9-he0e7f3f_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-h4d475cb_6.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.10.0-h113e628_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.13.0-h3cf044e_1.conda @@ -58,7 +58,7 @@ environments: - 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.7-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/filelock-3.17.0-pyhd8ed1ab_0.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 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 @@ -99,10 +99,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-h9d9f30d_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-hcb10f89_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-hcb10f89_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-h08228c5_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-19.0.0-hce2e470_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-19.0.0-hcb10f89_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-19.0.0-hcb10f89_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-19.0.0-h08228c5_3_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libasprintf-0.22.5-he8f35ee_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libasprintf-devel-0.22.5-he8f35ee_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libavif16-1.1.1-h1909e37_2.conda @@ -145,20 +145,20 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libogg-1.3.5-h4ab18f5_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.28-pthreads_h94d23a6_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopus-1.3.1-h7f98852_1.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-h081d1f1_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-19.0.0-h081d1f1_3_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.45-h943b412_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsndfile-1.2.2-hc60ed4a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.48.0-hee588c1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.48.0-hee588c1_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hf672d98_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-hc0a3c3a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsystemd0-257.2-h3dc2cb9_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libthrift-0.21.0-h0e7cc3e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hd9ff511_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.9.0-hb9d3cd8_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.10.0-h4c51ac1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.50.0-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libvorbis-1.3.7-h9c3ff4c_0.tar.bz2 @@ -170,12 +170,12 @@ 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-25.1.0.dev2025011705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025011705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025011705-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025012205-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025012205-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025012205-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012205-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-25.1.0.dev2025011705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025012205-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_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.15-py312h98912ed_1.conda @@ -207,8 +207,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/protobuf-5.28.3-py312h2ec8cdc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pulseaudio-client-17.0-hb77b528_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-18.1.0-py312h7900ff3_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-18.1.0-py312h01725c0_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-19.0.0-py312h7900ff3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-19.0.0-py312h01725c0_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.5-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.27.2-py312h12e396e_0.conda @@ -222,11 +222,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.20-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python-xxhash-3.5.0-py312h66e93f0_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py312h66e93f0_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py312h178313f_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.0-py312hbf22597_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/rav1e-0.6.6-he8a937b_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/re2-2024.07.02-h9925aae_2.conda @@ -235,7 +235,7 @@ environments: - 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.10-hb5b8611_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/s2n-1.5.11-h072c03f_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/safetensors-0.5.2-py312h12e396e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/sdl2-2.30.10-h63c27ac_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/sdl2_image-2.8.2-h06ee604_1.conda @@ -253,7 +253,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.48.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.48.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda @@ -265,7 +265,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.34.0-h31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/uvloop-0.21.0-py312h66e93f0_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/watchfiles-1.0.4-py312h12e396e_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/websockets-14.1-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/websockets-14.2-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.17.2-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libice-1.1.2-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libsm-1.2.5-he73a12e_0.conda @@ -277,7 +277,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrender-0.9.12-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xxhash-0.8.2-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.18.3-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.18.3-py312h178313f_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312hef9b889_1.conda @@ -293,19 +293,19 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aom-3.9.1-hcccb83c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/attr-2.5.1-h4e544f5_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.3.0-pyh71513ae_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-hb7ec8d5_16.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.1-hb7ec8d5_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.1-h740c5af_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-common-0.10.6-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-compression-0.3.0-h0f0193d_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-event-stream-0.5.0-hcbd8f92_11.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.2-h3df160d_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-h1a307af_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-hfd5ba81_6.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h5f50e26_12.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.7-h2080895_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.9-h05b070f_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.2-h0f0193d_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h0f0193d_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.8-h92ee776_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h90ecb4a_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.9-hab3ce66_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h88461e4_6.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-core-cpp-1.14.0-h1887c18_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-identity-cpp-1.10.0-h47b0b28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-blobs-cpp-12.13.0-h185ecfd_1.conda @@ -334,7 +334,7 @@ environments: - 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.7-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/filelock-3.17.0-pyhd8ed1ab_0.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 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 @@ -375,10 +375,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.0.0-h4de3ea5_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h18dbdb1_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-h47f80e1_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h3b568fd_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h3b568fd_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h1e9d426_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-h4065667_12_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h3b568fd_12_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h3b568fd_12_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h1e9d426_12_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libasprintf-0.22.5-h87f4aca_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libasprintf-devel-0.22.5-h87f4aca_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libavif16-1.1.1-h3b0c220_2.conda @@ -407,8 +407,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libglib-2.82.2-hc486b8e_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-2.33.0-hccf9d24_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-storage-2.33.0-hb9b2b65_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-2.34.0-hccf9d24_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-storage-2.34.0-hb9b2b65_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgpg-error-1.51-h05609ea_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgrpc-1.67.1-hf7ccdd3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libiconv-1.17-h31becfc_2.conda @@ -421,20 +421,20 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libogg-1.3.5-h0b9eccb_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.28-pthreads_h9d3fd7e_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopus-1.3.1-hf897c2e_1.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-hfc78867_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-hfc78867_12_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.45-hec79eb8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.3-h44a3b7b_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsndfile-1.2.2-h79657aa_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.20-h68df207_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.48.0-h5eb1b54_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.48.0-h5eb1b54_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libssh2-1.11.1-ha41c0db_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsystemd0-257.2-h27834fc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libthrift-0.21.0-h154c74f_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.0-h88f7998_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.9.0-h86ecc28_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.10.0-ha346350_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuv-1.50.0-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libvorbis-1.3.7-h01db608_0.tar.bz2 @@ -446,12 +446,12 @@ 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-25.1.0.dev2025011705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025011705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025011705-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025012205-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025012205-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025012205-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012205-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-25.1.0.dev2025011705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025012205-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_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.15-py312hdd3e373_1.conda @@ -498,11 +498,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.20-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-xxhash-3.5.0-py312h52516f5_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.12-5_cp312.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyyaml-6.0.2-py312hb2c0f52_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyyaml-6.0.2-py312hcc812fe_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyzmq-26.2.0-py312h2427ae1_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/rav1e-0.6.6-h1d8f897_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/re2-2024.07.02-haa97905_2.conda @@ -511,7 +511,7 @@ environments: - 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.10-h5df210e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/s2n-1.5.11-h3caee7a_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/safetensors-0.5.2-py312h8cbf658_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sdl2-2.30.10-h93e764a_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sdl2_image-2.8.2-hd95cb85_1.conda @@ -529,7 +529,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py312h52516f5_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.48.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.48.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda @@ -541,7 +541,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.34.0-h31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/uvloop-0.21.0-py312hb2c0f52_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/watchfiles-1.0.4-py312h8cbf658_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/websockets-14.1-py312hb2c0f52_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/websockets-14.2-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/wrapt-1.17.2-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libice-1.1.2-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libsm-1.2.5-h0808dbd_0.conda @@ -553,7 +553,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxrender-0.9.12-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xxhash-0.8.2-h31becfc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yaml-0.2.5-hf897c2e_2.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.18.3-py312hb2c0f52_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.18.3-py312hcc812fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zeromq-4.3.5-h5efb499_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstandard-0.23.0-py312hb698573_1.conda @@ -566,19 +566,19 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.8.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aom-3.9.1-h7bae524_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.3.0-pyh71513ae_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-hfc2798a_16.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.1-hfc2798a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.1-hc8a0bd2_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.10.6-h5505292_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-compression-0.3.0-hc8a0bd2_5.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.0-h54f970a_11.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.2-h96aa502_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-haba67d1_5.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-haba67d1_6.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h24f418c_12.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.7-h1be5864_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.9-hf37e03c_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.2-hc8a0bd2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-hc8a0bd2_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.8-h23176ea_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-h794939a_5.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.9-ha81f72f_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-h0e5014b_6.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.14.0-hd50102c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.10.0-hc602bab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-blobs-cpp-12.13.0-h7585a09_1.conda @@ -605,7 +605,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/fastapi-0.115.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.7-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/filelock-3.17.0-pyhd8ed1ab_0.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 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 @@ -643,10 +643,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.16-ha0e7c42_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_h07bc746_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-hf3eb8e5_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-hf07054f_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-hf07054f_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-h4239455_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-19.0.0-hd1aa4b5_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-19.0.0-hf07054f_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-19.0.0-hf07054f_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-19.0.0-h4239455_4_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libasprintf-0.22.5-h8414b35_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libasprintf-devel-0.22.5-h8414b35_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libavif16-1.1.1-h45b7238_2.conda @@ -670,8 +670,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libglib-2.82.2-hdff4504_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-2.33.0-hdbe95d5_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-storage-2.33.0-h7081f7f_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-2.34.0-hdbe95d5_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-storage-2.34.0-h7081f7f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgrpc-1.67.1-h0a426d6_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.17-h0d3ecfb_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libintl-0.22.5-h8414b35_3.conda @@ -684,17 +684,17 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libogg-1.3.5-h99b78c6_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.28-openmp_hf332438_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopus-1.3.1-h27ca646_1.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-h636d7b7_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-19.0.0-h636d7b7_4_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.45-h3783ad8_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.3-h3bd63a1_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h07bc746_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsndfile-1.2.2-h9739721_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.48.0-h3f77e49_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.48.0-h3f77e49_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.1-h9cc3647_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libthrift-0.21.0-h64651cc_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-h551f018_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.9.0-h5505292_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.10.0-hda25de7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libuv-1.50.0-h5505292_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libvorbis-1.3.7-h9f76cd9_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.5.0-h2471fea_0.conda @@ -705,12 +705,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-25.1.0.dev2025011705-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025011705-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025011705-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025012205-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025012205-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025012205-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012205-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-25.1.0.dev2025011705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025012205-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 @@ -741,8 +741,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.1-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/protobuf-5.28.3-py312hd8f9ff3_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pthread-stubs-0.4-hd74edd7_1002.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-18.1.0-py312h1f38498_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-18.1.0-py312hc40f475_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-19.0.0-py312h1f38498_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-19.0.0-py312hc40f475_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.5-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.27.2-py312hcd83bfe_0.conda @@ -756,11 +756,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.20-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-xxhash-3.5.0-py312h024a12e_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-5_cp312.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py312h024a12e_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py312h998013c_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.0-py312hf8a1cbd_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/rav1e-0.6.6-h69fbcac_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/re2-2024.07.02-h6589ca4_2.conda @@ -786,7 +786,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.48.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.48.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda @@ -798,13 +798,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.34.0-h31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/uvloop-0.21.0-py312h0bf5046_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/watchfiles-1.0.4-py312hcd83bfe_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/websockets-14.1-py312hea69d52_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/websockets-14.2-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/wrapt-1.17.2-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxau-1.0.12-h5505292_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxdmcp-1.1.5-hd74edd7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xxhash-0.8.2-hb547adb_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.18.3-py312hea69d52_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.18.3-py312h998013c_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py312h15fbf35_1.conda @@ -1045,9 +1045,9 @@ packages: license_family: MIT size: 56354 timestamp: 1734348889193 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-h205f482_16.conda - sha256: 0695c285b70385913dc7dce05888d3ad1378247b65273bdab509494a2f8f0eea - md5: b0815d37ab812ade9c07239da7c3c369 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.1-h205f482_0.conda + sha256: ebe5e33249f37f6bb481de99581ebdc92dbfcf1b6915609bcf3c9e78661d6352 + md5: 9c500858e88df50af3cc883d194de78a depends: - __glibc >=2.17,<3.0.a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 @@ -1060,11 +1060,11 @@ packages: platform: linux license: Apache-2.0 license_family: Apache - size: 107478 - timestamp: 1736592747413 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-hb7ec8d5_16.conda - sha256: 5a2a2691f2e0028e8549b97a340d7e6c502e0d54b7deba00fad505812663a98b - md5: 56f166780076db46c5e273988693d8a3 + size: 108111 + timestamp: 1737509831651 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.1-hb7ec8d5_0.conda + sha256: e1e6c9267a4d9af30b1d28c11a9041b17b7840ff83ef08614145a2a4f444f5b4 + md5: 2630f030652970a5531e492f6b2a6dd3 depends: - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.6,<0.10.7.0a0 @@ -1076,11 +1076,11 @@ packages: platform: linux license: Apache-2.0 license_family: Apache - size: 112264 - timestamp: 1736592695540 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-hfc2798a_16.conda - sha256: cdcd932332311db1b614289101b61e32cbae2478ba2bf85763aaf5a5cc7db6f6 - md5: 1e9a41d5296f50c08ae511d61fddef85 + size: 112658 + timestamp: 1737509863269 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.1-hfc2798a_0.conda + sha256: 5a60d196a585b25d1446fb973009e4e648e8d70beaa2793787243ede6da0fd9a + md5: 0abd67c0f7b60d50348fbb32fef50b65 depends: - __osx >=11.0 - aws-c-cal >=0.8.1,<0.8.2.0a0 @@ -1092,8 +1092,8 @@ packages: platform: osx license: Apache-2.0 license_family: Apache - size: 92547 - timestamp: 1736592866387 + size: 92562 + timestamp: 1737509877079 - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.1-h1a47875_3.conda sha256: 095ac824ea9303eff67e04090ae531d9eb33d2bf8f82eaade39b839c421e16e8 md5: 55a8561fdbbbd34f50f57d9be12ed084 @@ -1297,38 +1297,38 @@ packages: license_family: Apache size: 152983 timestamp: 1734008451473 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-h831e299_5.conda - sha256: 5920009b1c6f9a2bc131a36725251894e4b4773fce29c4b1065d4213ae337abe - md5: 80dd9f0ddf935290d1dc00ec75ff3023 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-h173a860_6.conda + sha256: 335d822eead0a097ffd23677a288e1f18ea22f47a92d4f877419debb93af0e81 + md5: 9a063178f1af0a898526cc24ba7be486 depends: - __glibc >=2.17,<3.0.a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.6,<0.10.7.0a0 - libgcc >=13 - - s2n >=1.5.10,<1.5.11.0a0 + - s2n >=1.5.11,<1.5.12.0a0 arch: x86_64 platform: linux license: Apache-2.0 license_family: Apache - size: 157864 - timestamp: 1734433578570 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-h1a307af_5.conda - sha256: 71f5bf891299f831dceaea12f926c393bf754569e5305387a88b77e1f94612d8 - md5: da8ab0f3eeac93449ec3d531ede92caa + size: 157263 + timestamp: 1737207617838 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-hfd5ba81_6.conda + sha256: d8adfde05cee11057d99c3802e84b2300430a7c7c3c9936165d1d4b25ef59d91 + md5: 4e6771b45cb2b035c62d023dbf0dc000 depends: - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.6,<0.10.7.0a0 - libgcc >=13 - - s2n >=1.5.10,<1.5.11.0a0 + - s2n >=1.5.11,<1.5.12.0a0 arch: aarch64 platform: linux license: Apache-2.0 license_family: Apache - size: 161889 - timestamp: 1734433686109 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-haba67d1_5.conda - sha256: c0a1a2b0750225ac3dc07fd258c88c2be866bf8ac67ba3d50bb4ecec852ff8ee - md5: 4c5ff4134e76426a75b8c548984fa933 + size: 160933 + timestamp: 1737207637279 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-haba67d1_6.conda + sha256: 73722dd175af78b6cbfa033066f0933351f5382a1a737f6c6d9b8cfa84022161 + md5: d02e8f40ff69562903e70a1c6c48b009 depends: - __osx >=11.0 - aws-c-cal >=0.8.1,<0.8.2.0a0 @@ -1337,8 +1337,8 @@ packages: platform: osx license: Apache-2.0 license_family: Apache - size: 135729 - timestamp: 1734433832730 + size: 136048 + timestamp: 1737207681224 - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h11f4f37_12.conda sha256: 512d3969426152d9d5fd886e27b13706122dc3fa90eb08c37b0d51a33d7bb14a md5: 96c3e0221fa2da97619ee82faa341a73 @@ -1382,12 +1382,12 @@ packages: license_family: Apache size: 134371 timestamp: 1734025379525 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.7-hf454442_0.conda - sha256: c2f205a7bf64c5f40eea373b3a0a7c363c9aa9246a13dd7f3d9c6a4434c4fe2d - md5: 947c82025693bebd557f782bb5d6b469 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.9-he1b24dc_1.conda + sha256: 15fbdedc56850f8be5be7a5bcaea1af09c97590e631c024ae089737fc932fc42 + md5: caafc32928a5f7f3f7ef67d287689144 depends: - __glibc >=2.17,<3.0.a0 - - aws-c-auth >=0.8.0,<0.8.1.0a0 + - aws-c-auth >=0.8.1,<0.8.2.0a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 @@ -1399,13 +1399,13 @@ packages: platform: linux license: Apache-2.0 license_family: Apache - size: 114156 - timestamp: 1734146123386 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.7-h2080895_0.conda - sha256: 20bc2dd60e6518d9b8215c2b652ab5c52ee8a997d3b9a5f69e2dabd28cbf26b2 - md5: ae223efa63fbb4262a2d85c3ab3bc4f5 + size: 115413 + timestamp: 1737558687616 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.9-h05b070f_1.conda + sha256: 9e7857fbc33eddc291fa09890ce468a92485d3e3e127bc00bbd1803e34121f84 + md5: e0a2869195f069db88b8932f5b00bee5 depends: - - aws-c-auth >=0.8.0,<0.8.1.0a0 + - aws-c-auth >=0.8.1,<0.8.2.0a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 @@ -1417,14 +1417,14 @@ packages: platform: linux license: Apache-2.0 license_family: Apache - size: 117641 - timestamp: 1734146239779 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.7-h1be5864_0.conda - sha256: 22966164d63808689fffd35945f57756c95337327e28099b5d77b29fc6a56ecc - md5: a37bba7acb62dd70492ee01eacca3b8f + size: 117875 + timestamp: 1737558720047 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.9-hf37e03c_1.conda + sha256: 92e8ca4eefcbbdf4189584c9410382884a06ed3030e5ecaac656dab8c95e6a80 + md5: de65f5e4ab5020103fe70a0eba9432a0 depends: - __osx >=11.0 - - aws-c-auth >=0.8.0,<0.8.1.0a0 + - aws-c-auth >=0.8.1,<0.8.2.0a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 @@ -1434,8 +1434,8 @@ packages: platform: osx license: Apache-2.0 license_family: Apache - size: 97598 - timestamp: 1734146239038 + size: 98731 + timestamp: 1737558731831 - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.2-h4e1184b_0.conda sha256: 0424e380c435ba03b5948d02e8c958866c4eee50ed29e57f99473a5f795a4cfc md5: dcd498d493818b776a77fbc242fbf8e4 @@ -1510,19 +1510,19 @@ packages: license_family: Apache size: 70186 timestamp: 1733994496998 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.8-h8570fcd_1.conda - sha256: ff8f08bc615d3ef6d970df80988200b3ecee76ecfa4885109cd82b30176cfda9 - md5: f21296b496cca1c1fa426b9a3b676e79 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.9-he0e7f3f_2.conda + sha256: c1930569713bd5231d48d885a5e3707ac917b428e8f08189d14064a2bb128adc + md5: 8a4e6fc8a3b285536202b5456a74a940 depends: - __glibc >=2.17,<3.0.a0 - - aws-c-auth >=0.8.0,<0.8.1.0a0 + - aws-c-auth >=0.8.1,<0.8.2.0a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - - aws-c-s3 >=0.7.7,<0.7.8.0a0 + - aws-c-s3 >=0.7.9,<0.7.10.0a0 - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 - libgcc >=13 - libstdcxx >=13 @@ -1530,20 +1530,20 @@ packages: platform: linux license: Apache-2.0 license_family: Apache - size: 354328 - timestamp: 1736598991291 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.8-h92ee776_1.conda - sha256: 114ac89d3936bf801dcbd488ba0b468c7e113a407cb1ee5898259a5202b7e750 - md5: 63546051b5687f793ae977c7994e1339 + size: 353222 + timestamp: 1737565463079 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.9-hab3ce66_2.conda + sha256: c3884fb10e0fd9be5c13256cabcda1afa9d2fcf8878c67214d02fc344509857d + md5: 875968ebffe992b68faf2caebbf32f02 depends: - - aws-c-auth >=0.8.0,<0.8.1.0a0 + - aws-c-auth >=0.8.1,<0.8.2.0a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - - aws-c-s3 >=0.7.7,<0.7.8.0a0 + - aws-c-s3 >=0.7.9,<0.7.10.0a0 - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 - libgcc >=13 - libstdcxx >=13 @@ -1551,38 +1551,38 @@ packages: platform: linux license: Apache-2.0 license_family: Apache - size: 284664 - timestamp: 1736598964131 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.8-h23176ea_1.conda - sha256: db6a31078bb82fb12044d7706239c003568273729f7ba4971c1479b7926ada82 - md5: 31fdd3ffb00f5472196fa95ef08087b7 + size: 283812 + timestamp: 1737565480034 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.9-ha81f72f_2.conda + sha256: ed5f1d19aad53787fdebe13db4709c97eae2092536cc55d3536eba320c4286e1 + md5: c9c034d3239bf25687ca4dd985007ecd depends: - __osx >=11.0 - - aws-c-auth >=0.8.0,<0.8.1.0a0 + - aws-c-auth >=0.8.1,<0.8.2.0a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - - aws-c-s3 >=0.7.7,<0.7.8.0a0 + - aws-c-s3 >=0.7.9,<0.7.10.0a0 - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 - libcxx >=18 arch: arm64 platform: osx license: Apache-2.0 license_family: Apache - size: 236269 - timestamp: 1736599024242 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-h7001638_5.conda - sha256: 849524b09865e84d6926aa814944cf71511aa4a00fffc5ad174c286d5dfac5f0 - md5: fc01d77a7f383b2915f276c73b7d0934 + size: 235976 + timestamp: 1737565563139 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-h4d475cb_6.conda + sha256: 2309d96d537b5c3810c6e9fbf5b6bb7e06ce907a609d172063ab504b2cc67f30 + md5: 6139e84bbb6fdb27ca49c2981613a5fa depends: - __glibc >=2.17,<3.0.a0 - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - - aws-crt-cpp >=0.29.8,<0.29.9.0a0 + - aws-crt-cpp >=0.29.9,<0.29.10.0a0 - libcurl >=8.11.1,<9.0a0 - libgcc >=13 - libstdcxx >=13 @@ -1592,16 +1592,16 @@ packages: platform: linux license: Apache-2.0 license_family: Apache - size: 3088636 - timestamp: 1736598504343 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h90ecb4a_5.conda - sha256: 9467acd0f2df74ea7472aebdfb8b5656a8d403abad2edbce9743d6e88c94fd10 - md5: 33f86f8de1d8cd40f8fe628dc0784437 + size: 3069914 + timestamp: 1737049585807 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h88461e4_6.conda + sha256: f97e071ffb87bc33923f798761ec6a854614ce193913d34d3248515d18357baa + md5: 0d7f1ee2e5572bf9d1fd78f0f2ab6f6b depends: - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - - aws-crt-cpp >=0.29.8,<0.29.9.0a0 + - aws-crt-cpp >=0.29.9,<0.29.10.0a0 - libcurl >=8.11.1,<9.0a0 - libgcc >=13 - libstdcxx >=13 @@ -1611,17 +1611,17 @@ packages: platform: linux license: Apache-2.0 license_family: Apache - size: 2925443 - timestamp: 1736598526637 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-h794939a_5.conda - sha256: 2b1e7d5a45e82604bfdb6de63c53cf0e9495f596cfd90e644a1e67910de7f91c - md5: a2374b4182bf5b2d08b2903393d0c487 + size: 2919798 + timestamp: 1737049659061 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-h0e5014b_6.conda + sha256: 8c21ce4692d1631b96adea099d7c2b905fc5d078db63bf754d85600dcf184651 + md5: a3b7b9a81d8c6a8f963f619d9e362c39 depends: - __osx >=11.0 - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - - aws-crt-cpp >=0.29.8,<0.29.9.0a0 + - aws-crt-cpp >=0.29.9,<0.29.10.0a0 - libcurl >=8.11.1,<9.0a0 - libcxx >=18 - libzlib >=1.3.1,<2.0a0 @@ -1630,8 +1630,8 @@ packages: platform: osx license: Apache-2.0 license_family: Apache - size: 2824168 - timestamp: 1736598935034 + size: 2834057 + timestamp: 1737126583846 - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda sha256: fe07debdb089a3db17f40a7f20d283d75284bb4fc269ef727b8ba6fc93f7cb5a md5: 0a8838771cc2e985cd295e01ae83baf1 @@ -2360,14 +2360,14 @@ packages: license_family: MIT size: 15546 timestamp: 1734302408607 -- conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_1.conda - sha256: 18dca6e2194732df7ebf824abaefe999e4765ebe8e8a061269406ab88fc418b9 - md5: d692e9ba6f92dc51484bf3477e36ce7c +- conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.17.0-pyhd8ed1ab_0.conda + sha256: 006d7e5a0c17a6973596dd86bfc80d74ce541144d2aee2d22d46fd41df560a63 + md5: 7f402b4a1007ee355bc50ce4d24d4a57 depends: - python >=3.9 license: Unlicense - size: 17441 - timestamp: 1733240909987 + size: 17544 + timestamp: 1737517924333 - conda: https://conda.anaconda.org/conda-forge/linux-64/fluidsynth-2.3.7-hd992666_0.conda sha256: 0bf26d25ae79e6f5f01a49a00e9ba3b60b10dd4c12ec43bdba51055c26bc9dd6 md5: dd6c7b8a1b217ef7522ca987c465651d @@ -3361,13 +3361,13 @@ packages: license_family: Apache size: 1178260 timestamp: 1736008642885 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-h9d9f30d_8_cpu.conda - build_number: 8 - sha256: f6c72ce82d145cb94a1131b68547b88056fb48158a382f9ce763286fce53ee65 - md5: 1c9caae53b14a385b59e87687adad2d6 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-19.0.0-hce2e470_3_cpu.conda + build_number: 3 + sha256: 3b85b78a52ce673798e3c880fa41b818554912e722e81ca20cf95ba9257f13f0 + md5: a50ba9a0789061ea395a47a23d6a7734 depends: - __glibc >=2.17,<3.0.a0 - - aws-crt-cpp >=0.29.8,<0.29.9.0a0 + - aws-crt-cpp >=0.29.9,<0.29.10.0a0 - aws-sdk-cpp >=1.11.458,<1.11.459.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-identity-cpp >=1.10.0,<1.10.1.0a0 @@ -3385,7 +3385,7 @@ packages: - libgoogle-cloud-storage >=2.33.0,<2.34.0a0 - libre2-11 >=2024.7.2 - libstdcxx >=13 - - libutf8proc >=2.9.0,<2.10.0a0 + - libutf8proc >=2.10.0,<2.11.0a0 - libzlib >=1.3.1,<2.0a0 - lz4-c >=1.10.0,<1.11.0a0 - orc >=2.0.3,<2.0.4.0a0 @@ -3399,15 +3399,14 @@ packages: arch: x86_64 platform: linux license: Apache-2.0 - license_family: APACHE - size: 8801586 - timestamp: 1736610546493 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-h47f80e1_8_cpu.conda - build_number: 8 - sha256: bf381dfa84e94ffce715c46352dd99f6f6ace69859b0efb822500f8882be429a - md5: daceef1881b4ddc72bb5b225a122c633 - depends: - - aws-crt-cpp >=0.29.8,<0.29.9.0a0 + size: 8899665 + timestamp: 1737343852413 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-h4065667_12_cpu.conda + build_number: 12 + sha256: 0ac8aab370ef7a21e912cc312e5cbfa59afea8e004f5a372f2f25f96de0c9e9a + md5: 4789bb7ae93fe12bfd81169157896f49 + depends: + - aws-crt-cpp >=0.29.9,<0.29.10.0a0 - aws-sdk-cpp >=1.11.458,<1.11.459.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-identity-cpp >=1.10.0,<1.10.1.0a0 @@ -3421,11 +3420,11 @@ packages: - libbrotlidec >=1.1.0,<1.2.0a0 - libbrotlienc >=1.1.0,<1.2.0a0 - libgcc >=13 - - libgoogle-cloud >=2.33.0,<2.34.0a0 - - libgoogle-cloud-storage >=2.33.0,<2.34.0a0 + - libgoogle-cloud >=2.34.0,<2.35.0a0 + - libgoogle-cloud-storage >=2.34.0,<2.35.0a0 - libre2-11 >=2024.7.2 - libstdcxx >=13 - - libutf8proc >=2.9.0,<2.10.0a0 + - libutf8proc >=2.10.0,<2.11.0a0 - libzlib >=1.3.1,<2.0a0 - lz4-c >=1.10.0,<1.11.0a0 - orc >=2.0.3,<2.0.4.0a0 @@ -3439,16 +3438,15 @@ packages: arch: aarch64 platform: linux license: Apache-2.0 - license_family: APACHE - size: 8045923 - timestamp: 1736611764958 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-hf3eb8e5_8_cpu.conda - build_number: 8 - sha256: 766e46b45520773db93ee1a91951cc135a85544bba738e7b378d31f16097753f - md5: fdc79871e6c243b819497337215416d9 + size: 8051570 + timestamp: 1737451538096 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-19.0.0-hd1aa4b5_4_cpu.conda + build_number: 4 + sha256: bf027b2e77b75b71b5213131fc4b06bbca6f1e195fde62090343e0a808d08bbe + md5: 94c2bcca143c043f8083a1f275de3caf depends: - __osx >=11.0 - - aws-crt-cpp >=0.29.8,<0.29.9.0a0 + - aws-crt-cpp >=0.29.9,<0.29.10.0a0 - aws-sdk-cpp >=1.11.458,<1.11.459.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-identity-cpp >=1.10.0,<1.10.1.0a0 @@ -3461,10 +3459,10 @@ packages: - libbrotlidec >=1.1.0,<1.2.0a0 - libbrotlienc >=1.1.0,<1.2.0a0 - libcxx >=18 - - libgoogle-cloud >=2.33.0,<2.34.0a0 - - libgoogle-cloud-storage >=2.33.0,<2.34.0a0 + - libgoogle-cloud >=2.34.0,<2.35.0a0 + - libgoogle-cloud-storage >=2.34.0,<2.35.0a0 - libre2-11 >=2024.7.2 - - libutf8proc >=2.9.0,<2.10.0a0 + - libutf8proc >=2.10.0,<2.11.0a0 - libzlib >=1.3.1,<2.0a0 - lz4-c >=1.10.0,<1.11.0a0 - orc >=2.0.3,<2.0.4.0a0 @@ -3472,165 +3470,155 @@ packages: - snappy >=1.2.1,<1.3.0a0 - zstd >=1.5.6,<1.6.0a0 constrains: - - arrow-cpp <0.0a0 - parquet-cpp <0.0a0 + - arrow-cpp <0.0a0 - apache-arrow-proc =*=cpu arch: arm64 platform: osx license: Apache-2.0 - license_family: APACHE - size: 5497383 - timestamp: 1736608604724 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-hcb10f89_8_cpu.conda - build_number: 8 - sha256: 126a6e78199311d99e38b9d633ce3e0290795ac68ce3ee8a9b91436c85c4095d - md5: 544759904898499f634f8f88a9907f88 + size: 5532664 + timestamp: 1737458545986 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-19.0.0-hcb10f89_3_cpu.conda + build_number: 3 + sha256: f4e4b14fc2aaaf0d0a16a3b4b4dcae84b1b77daa02754f0873901089ce786a49 + md5: 3e1e31382e9c6ecd0b24bd8f6ddb33ec depends: - __glibc >=2.17,<3.0.a0 - - libarrow 18.1.0 h9d9f30d_8_cpu + - libarrow 19.0.0 hce2e470_3_cpu - libgcc >=13 - libstdcxx >=13 arch: x86_64 platform: linux license: Apache-2.0 - license_family: APACHE - size: 611558 - timestamp: 1736610592458 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h3b568fd_8_cpu.conda - build_number: 8 - sha256: c94844ab1d8fafe17775161283bd1fe7ab1f93f660fc5ba0c01bd33fe3d21eaf - md5: 7a8e6a363d2f39a2f3df3f181d12692d + size: 618570 + timestamp: 1737343896206 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h3b568fd_12_cpu.conda + build_number: 12 + sha256: c93daa943342eb848e5a44d4f48749f96decbde7b0f7d830fe56d0d506c03576 + md5: 8ec3804980e19b70ebffbeb623ce084b depends: - - libarrow 18.1.0 h47f80e1_8_cpu + - libarrow 18.1.0 h4065667_12_cpu - libgcc >=13 - libstdcxx >=13 arch: aarch64 platform: linux license: Apache-2.0 - license_family: APACHE - size: 579798 - timestamp: 1736611846905 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-hf07054f_8_cpu.conda - build_number: 8 - sha256: 29196dc6b2e4488f98bd8950de6333efe5d1a9d0cc62e186694946766185475e - md5: 8db96829f8e427167f450c7467a1ba44 + size: 579114 + timestamp: 1737451608994 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-19.0.0-hf07054f_4_cpu.conda + build_number: 4 + sha256: 40de7e71d9fd4b799c452b3a0328ea260a3871de621f5344fb39b7f48371df75 + md5: e3265f8ab44051131966bd6f7b07a6e3 depends: - __osx >=11.0 - - libarrow 18.1.0 hf3eb8e5_8_cpu + - libarrow 19.0.0 hd1aa4b5_4_cpu - libcxx >=18 arch: arm64 platform: osx license: Apache-2.0 - license_family: APACHE - size: 484442 - timestamp: 1736608695654 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-hcb10f89_8_cpu.conda - build_number: 8 - sha256: fe50edf030b5ccbadec2bf8f90d4cdf32d63ec52ba26233fc2c8bfbe43df3b15 - md5: 894a5ed78728b77c997fefeee222ac4d + size: 481968 + timestamp: 1737458659266 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-19.0.0-hcb10f89_3_cpu.conda + build_number: 3 + sha256: c5cdf03d72d028e8af774aabd29cd92fb87f54cd579a9ffe77ad228c51faaa82 + md5: 1face9ff13ec61bfb065063d35fda864 depends: - __glibc >=2.17,<3.0.a0 - - libarrow 18.1.0 h9d9f30d_8_cpu - - libarrow-acero 18.1.0 hcb10f89_8_cpu + - libarrow 19.0.0 hce2e470_3_cpu + - libarrow-acero 19.0.0 hcb10f89_3_cpu - libgcc >=13 - - libparquet 18.1.0 h081d1f1_8_cpu + - libparquet 19.0.0 h081d1f1_3_cpu - libstdcxx >=13 arch: x86_64 platform: linux license: Apache-2.0 - license_family: APACHE - size: 588032 - timestamp: 1736610711976 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h3b568fd_8_cpu.conda - build_number: 8 - sha256: bb87d8e633074c9759d93abb277d31314dc66fad741253b48e8265e186228c5b - md5: 11856da892b919cc27bd62638d701c65 + size: 585153 + timestamp: 1737344009570 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h3b568fd_12_cpu.conda + build_number: 12 + sha256: 40bbdb394db6f405e6fae56bcbfc88fa433130668d2b39d1f109b7d6ffb8be76 + md5: e9b9a9941d35dff0a168741bdd54877e depends: - - libarrow 18.1.0 h47f80e1_8_cpu - - libarrow-acero 18.1.0 h3b568fd_8_cpu + - libarrow 18.1.0 h4065667_12_cpu + - libarrow-acero 18.1.0 h3b568fd_12_cpu - libgcc >=13 - - libparquet 18.1.0 hfc78867_8_cpu + - libparquet 18.1.0 hfc78867_12_cpu - libstdcxx >=13 arch: aarch64 platform: linux license: Apache-2.0 - license_family: APACHE - size: 560571 - timestamp: 1736611941995 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-hf07054f_8_cpu.conda - build_number: 8 - sha256: bff2d39e418eadab8c522a536449ac90f070dd8e83e2bd5e67a9c3eb8ecf712f - md5: 7b3736f49b3ba299b7799aeb448cb830 + size: 559928 + timestamp: 1737451706623 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-19.0.0-hf07054f_4_cpu.conda + build_number: 4 + sha256: c9b01193f3dc2855276a743aa2d107b3893d886dbc561944154acc4c61a9b4cb + md5: c6588e0236da980424ca0b288c893d1a depends: - __osx >=11.0 - - libarrow 18.1.0 hf3eb8e5_8_cpu - - libarrow-acero 18.1.0 hf07054f_8_cpu + - libarrow 19.0.0 hd1aa4b5_4_cpu + - libarrow-acero 19.0.0 hf07054f_4_cpu - libcxx >=18 - - libparquet 18.1.0 h636d7b7_8_cpu + - libparquet 19.0.0 h636d7b7_4_cpu arch: arm64 platform: osx license: Apache-2.0 - license_family: APACHE - size: 491001 - timestamp: 1736609758514 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-h08228c5_8_cpu.conda - build_number: 8 - sha256: dca372e27724904577315b8db3793e027a5c152a485e505e630a57b15634cd85 - md5: 46eaf81238da6f3ffab1f3ffdcee382e + size: 488490 + timestamp: 1737459936234 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-19.0.0-h08228c5_3_cpu.conda + build_number: 3 + sha256: 414297c69d08ba45af0fccb5e22cc3b3e92181f3928eba1e1b1ab3641970c7e0 + md5: 8527e1e45c495991fd88f6531e176556 depends: - __glibc >=2.17,<3.0.a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.1.0 h9d9f30d_8_cpu - - libarrow-acero 18.1.0 hcb10f89_8_cpu - - libarrow-dataset 18.1.0 hcb10f89_8_cpu + - libarrow 19.0.0 hce2e470_3_cpu + - libarrow-acero 19.0.0 hcb10f89_3_cpu + - libarrow-dataset 19.0.0 hcb10f89_3_cpu - libgcc >=13 - libprotobuf >=5.28.3,<5.28.4.0a0 - libstdcxx >=13 arch: x86_64 platform: linux license: Apache-2.0 - license_family: APACHE - size: 521707 - timestamp: 1736610765240 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h1e9d426_8_cpu.conda - build_number: 8 - sha256: 1896ea00da28e10670f7ba51bb543e68a87f717e9f5692fee44268f1a13d9eee - md5: e7dc0209e065a2b51f19848cefa4b1ab + size: 521371 + timestamp: 1737344062052 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h1e9d426_12_cpu.conda + build_number: 12 + sha256: 6216a1c48e41d3b304e87b19a8ff37c10e51ceca83bff5e942d763c93f6f55a1 + md5: f647dcbf46aebc86f9975ff3c856de45 depends: - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.1.0 h47f80e1_8_cpu - - libarrow-acero 18.1.0 h3b568fd_8_cpu - - libarrow-dataset 18.1.0 h3b568fd_8_cpu + - libarrow 18.1.0 h4065667_12_cpu + - libarrow-acero 18.1.0 h3b568fd_12_cpu + - libarrow-dataset 18.1.0 h3b568fd_12_cpu - libgcc >=13 - libprotobuf >=5.28.3,<5.28.4.0a0 - libstdcxx >=13 arch: aarch64 platform: linux license: Apache-2.0 - license_family: APACHE - size: 517189 - timestamp: 1736611989417 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-h4239455_8_cpu.conda - build_number: 8 - sha256: ae52d926ebfc8edb0728824f2918a825d39bd85a4ef27fe2b73656cfecdd7c69 - md5: f67eb19d22ba355cced8c86073ad49b1 + size: 516135 + timestamp: 1737451754178 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-19.0.0-h4239455_4_cpu.conda + build_number: 4 + sha256: 1de1100bddcaa4aacae5cc30e3c0ae3259d130bee7b3d52a57a1c9950e0c6588 + md5: 6988cd2fdf01cae4bc454859a7cf8bac depends: - __osx >=11.0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.1.0 hf3eb8e5_8_cpu - - libarrow-acero 18.1.0 hf07054f_8_cpu - - libarrow-dataset 18.1.0 hf07054f_8_cpu + - libarrow 19.0.0 hd1aa4b5_4_cpu + - libarrow-acero 19.0.0 hf07054f_4_cpu + - libarrow-dataset 19.0.0 hf07054f_4_cpu - libcxx >=18 - libprotobuf >=5.28.3,<5.28.4.0a0 arch: arm64 platform: osx license: Apache-2.0 - license_family: APACHE - size: 452161 - timestamp: 1736609917123 + size: 449975 + timestamp: 1737460148737 - conda: https://conda.anaconda.org/conda-forge/linux-64/libasprintf-0.22.5-he8f35ee_3.conda sha256: 2da5c735811cbf38c7f7844ab457ff8b25046bbf5fe5ebd5dc1c2fafdf4fbe1c md5: 4fab9799da9571266d05ca5503330655 @@ -4673,9 +4661,9 @@ packages: license_family: Apache size: 1254656 timestamp: 1735648569457 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-2.33.0-hccf9d24_1.conda - sha256: d3d4def86d880431928799ba90ca97e57c2f05677c03af8de2337502926c492c - md5: a2724014eb04f14bd71d35f45b062dd0 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-2.34.0-hccf9d24_0.conda + sha256: 54267dda8fafc2a2d379ef77b6029d8240e0628d4b29758f788fb903f84397a3 + md5: 1ce0fd876001c40801b40fea22987e41 depends: - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 @@ -4686,16 +4674,16 @@ packages: - libstdcxx >=13 - openssl >=3.4.0,<4.0a0 constrains: - - libgoogle-cloud 2.33.0 *_1 + - libgoogle-cloud 2.34.0 *_0 arch: aarch64 platform: linux license: Apache-2.0 license_family: Apache - size: 1253019 - timestamp: 1735649566849 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-2.33.0-hdbe95d5_1.conda - sha256: ce95aca02451694a4154c7770b6addf4fb859abf17912de6ec947da8469a56ce - md5: 91de1fbab8610974c0094c266bc63435 + size: 1256586 + timestamp: 1737285242684 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-2.34.0-hdbe95d5_0.conda + sha256: 919d8cbcd47d5bd2244c55b2bb87e2bd2eed8215996aab8435cb7123ffd9d20e + md5: 69826544e7978fcaa6bc8c1962d96ad6 depends: - __osx >=11.0 - libabseil * cxx17* @@ -4706,13 +4694,13 @@ packages: - libprotobuf >=5.28.3,<5.28.4.0a0 - openssl >=3.4.0,<4.0a0 constrains: - - libgoogle-cloud 2.33.0 *_1 + - libgoogle-cloud 2.34.0 *_0 arch: arm64 platform: osx license: Apache-2.0 license_family: Apache - size: 877594 - timestamp: 1735648230965 + size: 878217 + timestamp: 1737284441192 - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.33.0-h0121fbd_1.conda sha256: 41022523320ca8633a6c615710823e596efadb50f06d724e1a0c81e27994f257 md5: b0cfb5044685a7a9fa43ae669124f0a0 @@ -4732,15 +4720,15 @@ packages: license_family: Apache size: 784357 timestamp: 1735648759177 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-storage-2.33.0-hb9b2b65_1.conda - sha256: 5eda1cbba68709b91b370b3792c9cfd7bec4ac4e2262f0887d12e1f000ae1191 - md5: 45df2267ff4d8ce532e8d300ce0b0829 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-storage-2.34.0-hb9b2b65_0.conda + sha256: 4ad4fb7c02dcfa4c86dcf9591e0131a01fc0f2c3f2729c12882b944ddf2b8a9d + md5: 0732a5988f7f556f2c1d1f51026fc1be depends: - libabseil - libcrc32c >=1.1.2,<1.2.0a0 - libcurl - libgcc >=13 - - libgoogle-cloud 2.33.0 hccf9d24_1 + - libgoogle-cloud 2.34.0 hccf9d24_0 - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - openssl @@ -4748,26 +4736,26 @@ packages: platform: linux license: Apache-2.0 license_family: Apache - size: 737518 - timestamp: 1735649773462 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-storage-2.33.0-h7081f7f_1.conda - sha256: c0524a22064bc17f5c037da09ba54cc9e767741ef645178e499750c44bec2531 - md5: af8e51382464d4cc2d0054977c40a732 + size: 739678 + timestamp: 1737285399565 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-storage-2.34.0-h7081f7f_0.conda + sha256: 79f6b93fb330728530036b2b38764e9d42e0eedd3ae7e549ac7eae49acd1e52b + md5: f09cb03f9cf847f1dc41b4c1f65c97c2 depends: - __osx >=11.0 - libabseil - libcrc32c >=1.1.2,<1.2.0a0 - libcurl - libcxx >=18 - - libgoogle-cloud 2.33.0 hdbe95d5_1 + - libgoogle-cloud 2.34.0 hdbe95d5_0 - libzlib >=1.3.1,<2.0a0 - openssl arch: arm64 platform: osx license: Apache-2.0 license_family: Apache - size: 526963 - timestamp: 1735649222088 + size: 529202 + timestamp: 1737285376801 - conda: https://conda.anaconda.org/conda-forge/linux-64/libgpg-error-1.51-hbd13f7d_1.conda sha256: 9e0c09c1faf2151ade3ccb64e52d3c1f2dde85c00e37c6a3e6a8bced2aba68be md5: 168cc19c031482f83b23c4eebbb94e26 @@ -5240,13 +5228,13 @@ packages: license_family: BSD size: 252854 timestamp: 1606823635137 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-h081d1f1_8_cpu.conda - build_number: 8 - sha256: 2c6d900d4e9dd3c4000886d76d3f8a099e904667ebc6935b49428e6e9b766481 - md5: a9fa0ef309406c84b46db3a28efd761e +- conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-19.0.0-h081d1f1_3_cpu.conda + build_number: 3 + sha256: 287c4864b849180ce9e447df8227da2c4006001056e1668dacc3365264b0e828 + md5: 95f8b5758148e62a055f4c6538a31f0b depends: - __glibc >=2.17,<3.0.a0 - - libarrow 18.1.0 h9d9f30d_8_cpu + - libarrow 19.0.0 hce2e470_3_cpu - libgcc >=13 - libstdcxx >=13 - libthrift >=0.21.0,<0.21.1.0a0 @@ -5254,15 +5242,14 @@ packages: arch: x86_64 platform: linux license: Apache-2.0 - license_family: APACHE - size: 1207011 - timestamp: 1736610684584 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-hfc78867_8_cpu.conda - build_number: 8 - sha256: 2ed6b9eac4504051ddc094ea3f3a2b3198d4d25a443a96fa2971d8075d790c31 - md5: 9a907190c9e2c6bf1a29569700218f0b + size: 1227537 + timestamp: 1737343982323 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-hfc78867_12_cpu.conda + build_number: 12 + sha256: 224da9fb417e1dc569700cddf6dd7febe9a6e5c12547a389a5b934b8d385c4f8 + md5: 517447be85cda09f9410ca609c69499d depends: - - libarrow 18.1.0 h47f80e1_8_cpu + - libarrow 18.1.0 h4065667_12_cpu - libgcc >=13 - libstdcxx >=13 - libthrift >=0.21.0,<0.21.1.0a0 @@ -5270,25 +5257,23 @@ packages: arch: aarch64 platform: linux license: Apache-2.0 - license_family: APACHE - size: 1117465 - timestamp: 1736611918180 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-h636d7b7_8_cpu.conda - build_number: 8 - sha256: 4991519ef4264abc7160e9faaf8ff01d4731bf1497076bef1895d6c366f796eb - md5: b8bd275a49877fdec62ff787818a869d + size: 1116762 + timestamp: 1737451682325 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-19.0.0-h636d7b7_4_cpu.conda + build_number: 4 + sha256: d394423b8a096cec5481ef4cdb4d39dd4b89949cd6f23bdc14896d8af36d78f3 + md5: 639473b0344e0d2f46feb544cff5c6d8 depends: - __osx >=11.0 - - libarrow 18.1.0 hf3eb8e5_8_cpu + - libarrow 19.0.0 hd1aa4b5_4_cpu - libcxx >=18 - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 arch: arm64 platform: osx license: Apache-2.0 - license_family: APACHE - size: 873593 - timestamp: 1736609701839 + size: 885681 + timestamp: 1737459816091 - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.45-h943b412_0.conda sha256: b8f5b5ba9a14dedf7c97c01300de492b1b52b68eacbc3249a13fdbfa82349a2f md5: 85cbdaacad93808395ac295b5667d25b @@ -5501,9 +5486,9 @@ packages: license: ISC size: 164972 timestamp: 1716828607917 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.48.0-hee588c1_0.conda - sha256: 7bb84f44e1bd756da4a3d0d43308324a5533e6ba9f4772475884bce44d405064 - md5: 84bd1c9a82b455e7a2f390375fb38f90 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.48.0-hee588c1_1.conda + sha256: 22853d289ef6ec8a5b20f1aa261895b06525439990d3b139f8bfd0b5c5e32a3a + md5: 3fa05c528d8a1e2a67bbf1e36f22d3bc depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -5511,30 +5496,30 @@ packages: arch: x86_64 platform: linux license: Unlicense - size: 876582 - timestamp: 1737123945341 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.48.0-h5eb1b54_0.conda - sha256: b4365ab7c74a2e6c0444eb950367fa3ca56a87c9921b2faa5ad032fe7a7df682 - md5: 1998946fa3ccf38a07b44a879b2227ae + size: 878223 + timestamp: 1737564987837 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.48.0-h5eb1b54_1.conda + sha256: 81dd9bf66c7f1d9064e007e2c787133100c406e7ca2de61dba9fb7b87372f255 + md5: 4f3a61fe206f20b27c385ee608bcdfda depends: - libgcc >=13 - libzlib >=1.3.1,<2.0a0 arch: aarch64 platform: linux license: Unlicense - size: 1044953 - timestamp: 1737123983895 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.48.0-h3f77e49_0.conda - sha256: b31169cf0ca7b6835baca4ab92d6cf2eee83b1a12a11b72f39521e8baf4d6acb - md5: 714719df4f49e30f9728956f240846ca + size: 1044879 + timestamp: 1737565049785 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.48.0-h3f77e49_1.conda + sha256: 17c06940cc2a13fd6a17effabd6881b1477db38b2cd3ee2571092d293d3fdd75 + md5: 4c55169502ecddf8077973a987d08f08 depends: - __osx >=11.0 - libzlib >=1.3.1,<2.0a0 arch: arm64 platform: osx license: Unlicense - size: 853163 - timestamp: 1737124192432 + size: 852831 + timestamp: 1737564996616 - conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hf672d98_0.conda sha256: 0407ac9fda2bb67e11e357066eff144c845801d00b5f664efbc48813af1e7bb9 md5: be2de152d8073ef1c01b7728475f2fe7 @@ -5750,9 +5735,9 @@ packages: license: HPND size: 370600 timestamp: 1734398863052 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.9.0-hb9d3cd8_1.conda - sha256: 9794e6388e780c3310d46f773bbc924d4053375c3fcdb07a704b57f4616db928 - md5: 1e936bd23d737aac62a18e9a1e7f8b18 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.10.0-h4c51ac1_0.conda + sha256: 8e41563ee963bf8ded06da45f4e70bf42f913cb3c2e79364eb3218deffa3cd74 + md5: aeccfff2806ae38430638ffbb4be9610 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -5760,30 +5745,30 @@ packages: platform: linux license: MIT license_family: MIT - size: 81500 - timestamp: 1732868419835 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.9.0-h86ecc28_1.conda - sha256: 37a1833c55f9945724cd4b3eb6a1469032cc754a1dd725f191c34154ad2ba7e4 - md5: 699f155da290be3a1a64c932c6728991 + size: 82745 + timestamp: 1737244366901 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.10.0-ha346350_0.conda + sha256: 9c333e07b76ae1ea2c882db764be52dc82f632be66d993a50b35ca9c5475074a + md5: c5166bcfb8348e8fc31ee16ec3981a5e depends: - libgcc >=13 arch: aarch64 platform: linux license: MIT license_family: MIT - size: 81526 - timestamp: 1732868466862 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.9.0-h5505292_1.conda - sha256: ea88f06e97ef8fa2490f7594f8885bb542577226edf8abba3144302d951a53c2 - md5: f777470d31c78cd0abe1903a2fda436f + size: 82679 + timestamp: 1737329054400 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.10.0-hda25de7_0.conda + sha256: aca3ef31d3dff5cefd3790742a5ee6548f1cf0201d0e8cee08b01da503484eb6 + md5: 5f741aed1d8d393586a5fdcaaa87f45c depends: - __osx >=11.0 arch: arm64 platform: osx license: MIT license_family: MIT - size: 83000 - timestamp: 1732868631531 + size: 83628 + timestamp: 1737244450097 - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda sha256: 787eb542f055a2b3de553614b25f09eefb0a0931b0c87dbcce6efdfd92f04f18 md5: 40b61aab5c7ba9ff276c41cfffe6b80b @@ -6174,47 +6159,47 @@ packages: license_family: BSD size: 24048 timestamp: 1733219945697 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011705-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025012205-release.conda noarch: python - sha256: 15578c7bc78001d3882c3b9af9d7d8bf3566c68ae133870038be055c8dfd90e9 - md5: 7e6c35d82044e8d31e9327e7d90bfb2b + sha256: 63e2ce51c01fdb5a73f62ea5f862acea5946f45d6b6bd63dafc78d242822e1b7 + md5: 5289b5be19bf0f500e1a06f44d816343 depends: - - max-core ==25.1.0.dev2025011705 release - - max-python >=25.1.0.dev2025011705,<26.0a0 - - mojo-jupyter ==25.1.0.dev2025011705 release - - mblack ==25.1.0.dev2025011705 release + - max-core ==25.1.0.dev2025012205 release + - max-python >=25.1.0.dev2025012205,<26.0a0 + - mojo-jupyter ==25.1.0.dev2025012205 release + - mblack ==25.1.0.dev2025012205 release license: LicenseRef-Modular-Proprietary - size: 9920 - timestamp: 1737091778690 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025011705-release.conda - sha256: 3e39d779710559206129052c64ac530b9d262288f75812ba07c3e3e395a0e18e - md5: 5575de33b0503143e635ade746f057c3 + size: 9919 + timestamp: 1737524122346 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025012205-release.conda + sha256: 061e7c8aba735fd2d15aca623c2f81452723bc0a5ab1e5a63af1761a9eaba9ef + md5: 2d8a82ff460cd4e03382a9151a8cf8d8 depends: - - mblack ==25.1.0.dev2025011705 release + - mblack ==25.1.0.dev2025012205 release license: LicenseRef-Modular-Proprietary - size: 244764907 - timestamp: 1737091186388 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025011705-release.conda - sha256: a9e7747e7cb7ff01dc58f4c7f5772d2b4483693dd200c88653b1ec2dda46bc8b - md5: a9b13b577fb1bcc14b330f5a4185023c + size: 242139658 + timestamp: 1737523134733 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025012205-release.conda + sha256: eade442118da29d8b42289e6859699b4faafcf51d02189729259a2e7a97a0dcc + md5: 8e0412932905d3a4decf17acd50899ce depends: - - mblack ==25.1.0.dev2025011705 release + - mblack ==25.1.0.dev2025012205 release license: LicenseRef-Modular-Proprietary - size: 247240781 - timestamp: 1737091778688 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025011705-release.conda - sha256: 9369b738945ef783af1e4caf2676bd6a299ff86e4ef9504e7a5ee69841fffa01 - md5: c4397350b325ae5a0e07f61e483fc3e5 + size: 244683388 + timestamp: 1737524122344 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025012205-release.conda + sha256: b5ccec88293901182a43d7f407d04b522b729cefaab066788496adec5bd3f2d2 + md5: bd5da5f25bd5151b4b691c34acdbeff0 depends: - - mblack ==25.1.0.dev2025011705 release + - mblack ==25.1.0.dev2025012205 release license: LicenseRef-Modular-Proprietary - size: 206615275 - timestamp: 1737092643231 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025011705-3.12release.conda - sha256: bdda011f73105d5d91e29abdacc4e7304501249c3bb50e83517661cdea4ef56a - md5: 0ddfaa3caa3647a0cbcdf394774ee6be + size: 203820478 + timestamp: 1737523349069 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025012205-3.12release.conda + sha256: ceb4d33afe634401be386903e2f516b78f2b5e23e15cbedad42cce2600c97b7d + md5: ecfacd66a5b71794c53a468fbefcef6a depends: - - max-core ==25.1.0.dev2025011705 release + - max-core ==25.1.0.dev2025012205 release - python 3.12.* - fastapi - httpx @@ -6235,13 +6220,13 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 124617960 - timestamp: 1737091186397 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025011705-3.12release.conda - sha256: 3ec1d98731b5c86829e7dd0d76b3ad820173a418f58833ea0237e34d356b58c6 - md5: 0ed0380d3ee48a36fe43f85f61fd9fe3 + size: 119861319 + timestamp: 1737523134743 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025012205-3.12release.conda + sha256: 14ae6f16ce6c895de574bb02307cd58e87e32013bde0d905d6a1a67e686ca204 + md5: fb06394177c69b52c2ecf9ceaa7b308b depends: - - max-core ==25.1.0.dev2025011705 release + - max-core ==25.1.0.dev2025012205 release - python 3.12.* - fastapi - httpx @@ -6262,13 +6247,13 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 127367910 - timestamp: 1737091778698 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025011705-3.12release.conda - sha256: 853e12e0ac11f3dcf5392e94cc927233ba940a71a5cf73c0cec54ad4917256c0 - md5: 53e9620bd08e983c5e52e02afef0a990 + size: 122258493 + timestamp: 1737524122355 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025012205-3.12release.conda + sha256: 35e34095931d604893d014773f8c61c1c09a9888946dec4a01f1db827bd2f439 + md5: 589be4ace2edf68cfc3cf1d0cc429864 depends: - - max-core ==25.1.0.dev2025011705 release + - max-core ==25.1.0.dev2025012205 release - python 3.12.* - fastapi - httpx @@ -6289,12 +6274,12 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 110545057 - timestamp: 1737092643234 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011705-release.conda + size: 105223218 + timestamp: 1737523349072 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012205-release.conda noarch: python - sha256: 180bbe7d8b76c5d0f453b72f81fae10522b7a98a31e6fbeff542dbb31bb9b613 - md5: 680622d3117019e99ddc173efab357c7 + sha256: 31bce03569c241ade0a344f1fe1a683f928fe367ae57147b3e316783631822fe + md5: c54b5f7d0d777b8995e38978d8626ffc depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -6304,8 +6289,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130807 - timestamp: 1737091778695 + size: 130797 + timestamp: 1737524122352 - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda sha256: 78c1bbe1723449c52b7a9df1af2ee5f005209f67e40b6e1d3c7619127c43b1c7 md5: 592132998493b3ff25fd7479396e8351 @@ -6315,18 +6300,18 @@ packages: license_family: MIT size: 14465 timestamp: 1733255681319 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011705-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025012205-release.conda noarch: python - sha256: eab543a5c31c091b3d042980d068a950c51905d14a18532710f9be94ba88ba5d - md5: eea061b963a95002a8740d4b4f506d44 + sha256: 78e2818c9d17321c5fe73f9dca3d7a9c51ad989c00f8ea9721deb94a4f03800e + md5: ca3c9282adb4a04dbd02f3ab8e73445c depends: - - max-core ==25.1.0.dev2025011705 release + - max-core ==25.1.0.dev2025012205 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22929 - timestamp: 1737091778696 + size: 22925 + timestamp: 1737524122353 - conda: https://conda.anaconda.org/conda-forge/linux-64/mpg123-1.32.9-hc50e24c_0.conda sha256: 39c4700fb3fbe403a77d8cc27352fa72ba744db487559d5d44bf8411bb4ea200 md5: c7f302fd11eeb0987a6a5e1f3aed6a21 @@ -7309,23 +7294,23 @@ packages: license_family: LGPL size: 766184 timestamp: 1705690164726 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-18.1.0-py312h7900ff3_0.conda - sha256: 46a61c29375d3bf1933eae61c7861394c168898915d59fc99bf05e46de2ff5ad - md5: ac65b70df28687c6af4270923c020bdd - depends: - - libarrow-acero 18.1.0.* - - libarrow-dataset 18.1.0.* - - libarrow-substrait 18.1.0.* - - libparquet 18.1.0.* - - pyarrow-core 18.1.0 *_0_* +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-19.0.0-py312h7900ff3_0.conda + sha256: 7d98e626ec65b882341482ad15ecb7a670ee41dbaf375aa660ba8b7d0a940504 + md5: 14f86e63b5c214dd9fb34e5472d4bafc + depends: + - libarrow-acero 19.0.0.* + - libarrow-dataset 19.0.0.* + - libarrow-substrait 19.0.0.* + - libparquet 19.0.0.* + - pyarrow-core 19.0.0 *_0_* - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 arch: x86_64 platform: linux license: Apache-2.0 license_family: APACHE - size: 25213 - timestamp: 1732610785600 + size: 25289 + timestamp: 1737128438818 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-18.1.0-py312h8025657_0.conda sha256: 49db959887cb89b44053a44a98d0f35644fc0b2003587492f02b56046de0b60a md5: 9bb7d32e96a5dcb5ea7fd90a11a83656 @@ -7343,43 +7328,43 @@ packages: license_family: APACHE size: 25374 timestamp: 1732611006864 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-18.1.0-py312h1f38498_0.conda - sha256: 06c0e208d5bf15051874097366c8e8e5db176dffba38526f227a34e80cc8e9bc - md5: 3710616b880b31d0c8afd8ae7e12392a - depends: - - libarrow-acero 18.1.0.* - - libarrow-dataset 18.1.0.* - - libarrow-substrait 18.1.0.* - - libparquet 18.1.0.* - - pyarrow-core 18.1.0 *_0_* +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-19.0.0-py312h1f38498_0.conda + sha256: 9d693901833c2ff4e5d67e1f2f6df50f699e1cec2f580c26d42299654830855a + md5: bd5e025292ff1127aa1534b59e55c4d0 + depends: + - libarrow-acero 19.0.0.* + - libarrow-dataset 19.0.0.* + - libarrow-substrait 19.0.0.* + - libparquet 19.0.0.* + - pyarrow-core 19.0.0 *_0_* - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 arch: arm64 platform: osx license: Apache-2.0 license_family: APACHE - size: 25375 - timestamp: 1732610892198 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-18.1.0-py312h01725c0_0_cpu.conda - sha256: 948a4161c56f846d374a3721a657e58ddbc992a29b3b3e7a6411975c30361d94 - md5: ee80934a6c280ff8635f8db5dec11e04 + size: 25428 + timestamp: 1737128284082 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-19.0.0-py312h01725c0_0_cpu.conda + sha256: 81178d0de0ac851a0a78e09c81ad92274cf770a38b28acdf53a0cfb2122d15aa + md5: 7ab1143b9ac1af5cc4a630706f643627 depends: - __glibc >=2.17,<3.0.a0 - - libarrow 18.1.0.* *cpu + - libarrow 19.0.0.* *cpu - libgcc >=13 - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 constrains: - - numpy >=1.21,<3 - apache-arrow-proc =*=cpu + - numpy >=1.21,<3 arch: x86_64 platform: linux license: Apache-2.0 license_family: APACHE - size: 4612916 - timestamp: 1732610377259 + size: 5230953 + timestamp: 1737128097002 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-18.1.0-py312h66f7834_0_cpu.conda sha256: e7eb062145be554c23dfefa0ebe8c5f6ae8c59635117a6921e66403d6addcda3 md5: 3390c8b8f57e85506c92a37cf750bdd7 @@ -7400,26 +7385,26 @@ packages: license_family: APACHE size: 4406662 timestamp: 1732610939832 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-18.1.0-py312hc40f475_0_cpu.conda - sha256: 063eb168a29d4ce6d9ed865e9e1ad3b6e141712189955a79e06b24ddc0cbbc9c - md5: 9859e7c4b94bbf69772dbf0511101cec +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-19.0.0-py312hc40f475_0_cpu.conda + sha256: 6303fe1c3e6d36273b72f0eeb3f19897d2376d57fe8c757f55dcbfbaa5cd6840 + md5: df502157843a7b1d90af04803767be15 depends: - __osx >=11.0 - - libarrow 18.1.0.* *cpu + - libarrow 19.0.0.* *cpu - libcxx >=18 - libzlib >=1.3.1,<2.0a0 - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 constrains: - - numpy >=1.21,<3 - apache-arrow-proc =*=cpu + - numpy >=1.21,<3 arch: arm64 platform: osx license: Apache-2.0 license_family: APACHE - size: 3909116 - timestamp: 1732610863261 + size: 4393075 + timestamp: 1737128225546 - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda sha256: 79db7928d13fab2d892592223d7570f5061c192f27b9febd1a418427b719acc6 md5: 12c566707c80111f9799308d9e265aef @@ -7759,15 +7744,14 @@ packages: license_family: Apache size: 27913 timestamp: 1734420869885 -- conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_1.conda - sha256: 57c9a02ec25926fb48edca59b9ede107823e5d5c473b94a0e05cc0b9a193a642 - md5: c0def296b2f6d2dd7b030c2a7f66bb1f +- conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.1-pyhd8ed1ab_0.conda + sha256: 1597d6055d34e709ab8915091973552a0b8764c8032ede07c4e99670da029629 + md5: 392c91c42edd569a7ec99ed8648f597a depends: - python >=3.9 license: Apache-2.0 - license_family: APACHE - size: 142235 - timestamp: 1733235414217 + size: 143794 + timestamp: 1737541204030 - conda: https://conda.anaconda.org/conda-forge/linux-64/python-xxhash-3.5.0-py312h66e93f0_1.conda sha256: 20851b1e59fee127d49e01fc73195a88ab0779f103b7d6ffc90d11142a83678f md5: 39aed2afe4d0cf76ab3d6b09eecdbea7 @@ -7857,9 +7841,9 @@ packages: license_family: MIT size: 188538 timestamp: 1706886944988 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py312h66e93f0_1.conda - sha256: a60705971e958724168f2ebbb8ed4853067f1d3f7059843df3903e3092bbcffa - md5: 549e5930e768548a89c23f595dac5a95 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py312h178313f_2.conda + sha256: 159cba13a93b3fe084a1eb9bda0a07afc9148147647f0d437c3c3da60980503b + md5: cf2485f39740de96e2a7f2bb18ed2fee depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -7870,11 +7854,11 @@ packages: platform: linux license: MIT license_family: MIT - size: 206553 - timestamp: 1725456256213 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyyaml-6.0.2-py312hb2c0f52_1.conda - sha256: 8c515ebe1e7e85d972d72b75760af9dfac06fd11a9dba7e05c42d69aedbb303c - md5: dc5de424f7dbb9772da720dbb81317b2 + size: 206903 + timestamp: 1737454910324 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyyaml-6.0.2-py312hcc812fe_2.conda + sha256: dc78e41d51300722ba35ac4a10d37339ceffbe22d7501c71dfd3f633a4f8e79a + md5: 4de4a5ff81c941674e08595244e7cd61 depends: - libgcc >=13 - python >=3.12,<3.13.0a0 @@ -7885,11 +7869,11 @@ packages: platform: linux license: MIT license_family: MIT - size: 199141 - timestamp: 1725456356043 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py312h024a12e_1.conda - sha256: b06f1c15fb39695bbf707ae8fb554b9a77519af577b5556784534c7db10b52e3 - md5: 1ee23620cf46cb15900f70a1300bae55 + size: 199172 + timestamp: 1737454840766 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py312h998013c_2.conda + sha256: ad225ad24bfd60f7719709791345042c3cb32da1692e62bd463b084cf140e00d + md5: 68149ed4d4e9e1c42d2ba1f27f08ca96 depends: - __osx >=11.0 - python >=3.12,<3.13.0a0 @@ -7900,8 +7884,8 @@ packages: platform: osx license: MIT license_family: MIT - size: 187143 - timestamp: 1725456547263 + size: 192148 + timestamp: 1737454886351 - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.0-py312hbf22597_3.conda sha256: bc303f9b11e04a515f79cd5ad3bfa0e84b9dfec76552626d6263b38789fe6678 md5: 746ce19f0829ec3e19c93007b1a224d3 @@ -8133,9 +8117,9 @@ packages: license_family: MIT size: 17357 timestamp: 1733750834072 -- conda: https://conda.anaconda.org/conda-forge/linux-64/s2n-1.5.10-hb5b8611_0.conda - sha256: f6d451821fddc26b93f45e9313e1ea15e09e5ef049d4e137413a5225d2a5dfba - md5: 999f3673f2a011f59287f2969e3749e4 +- conda: https://conda.anaconda.org/conda-forge/linux-64/s2n-1.5.11-h072c03f_0.conda + sha256: cfdd98c8f9a1e5b6f9abce5dac6d590cc9fe541a08466c9e4a26f90e00b569e3 + md5: 5e8060d52f676a40edef0006a75c718f depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -8144,11 +8128,11 @@ packages: platform: linux license: Apache-2.0 license_family: Apache - size: 355142 - timestamp: 1734415467047 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/s2n-1.5.10-h5df210e_0.conda - sha256: b5e7a9f4b7b1ec5c5c3661e2defc8b47fab543b05cad6fec78739d8007612464 - md5: 3d3979efcc0f44f3f0cef3de03b296cc + size: 356213 + timestamp: 1737146304079 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/s2n-1.5.11-h3caee7a_0.conda + sha256: 5a7ae66f96be24c3b2007139b6c3701ab015b4b4eb4eccfdd07be97710243a47 + md5: 1517c0518f8a06a48a15f41d94252874 depends: - libgcc >=13 - openssl >=3.4.0,<4.0a0 @@ -8156,8 +8140,8 @@ packages: platform: linux license: Apache-2.0 license_family: Apache - size: 353450 - timestamp: 1734415474615 + size: 352811 + timestamp: 1737146319512 - conda: https://conda.anaconda.org/conda-forge/linux-64/safetensors-0.5.2-py312h12e396e_0.conda sha256: 98b8dfa5eec083e0b3ace00906a7f7e748b1e2446dca17e87473f43278fcc036 md5: 999ca9d87d2bb8b4c01e62c755b928cf @@ -8673,9 +8657,9 @@ packages: license_family: BSD size: 110051 timestamp: 1733367480074 -- conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.48.0-pyhd8ed1ab_0.conda - sha256: c8dd6d69e4ef67c7d507dec2be4b6964f6ddbe1ce35a822ddf4089505d702f33 - md5: 2c57d4af7b8952484962b40a59cf1537 +- conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.48.1-pyhd8ed1ab_0.conda + sha256: 92fc16e2449fc81f516d31630fd18c3f33b95bc0c069655a3c0042fbd11a09a4 + md5: 08f62b2c92d1fa610896fc7b16b05031 depends: - datasets !=2.5.0 - filelock @@ -8691,8 +8675,8 @@ packages: - tqdm >=4.27 license: Apache-2.0 license_family: APACHE - size: 3408277 - timestamp: 1736534112195 + size: 3405362 + timestamp: 1737429408302 - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda sha256: ef695490e895c2ad552c77ec497b899b09fd4ad4ab07edcf5649f5994cf92a35 md5: 170a0398946d8f5b454e592672b6fc20 @@ -8889,9 +8873,9 @@ packages: license_family: MIT size: 363822 timestamp: 1736550859472 -- conda: https://conda.anaconda.org/conda-forge/linux-64/websockets-14.1-py312h66e93f0_0.conda - sha256: 5998940f91765ba991cf286c863c20bcb53db92bb976a2b5a714566b86b0e763 - md5: a79f7ce618bd0a9f4c00c59a03570fcd +- conda: https://conda.anaconda.org/conda-forge/linux-64/websockets-14.2-py312h66e93f0_0.conda + sha256: 52092f1f811fddcbb63e4e8e1c726f32a0a1ea14c36b70982fc2021a3c010e48 + md5: 279166352304d5d4b63429e9c86fa3dc depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -8901,11 +8885,11 @@ packages: platform: linux license: BSD-3-Clause license_family: BSD - size: 242145 - timestamp: 1731498716195 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/websockets-14.1-py312hb2c0f52_0.conda - sha256: c292a8badcbe4040537e225fbeb237bfaf272808eab060067d965d3da98ccd5c - md5: 7e2a0ef2a1a87f88f9745f9c7059186e + size: 242949 + timestamp: 1737358315063 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/websockets-14.2-py312hb2c0f52_0.conda + sha256: 5b8273df10b85a667b4fe71788a12c33a9626723650e28f582fd56c87bad0471 + md5: d7535d5d2f8d49d625071f305d6112a1 depends: - libgcc >=13 - python >=3.12,<3.13.0a0 @@ -8915,11 +8899,11 @@ packages: platform: linux license: BSD-3-Clause license_family: BSD - size: 242912 - timestamp: 1731498811466 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/websockets-14.1-py312hea69d52_0.conda - sha256: 98fb04a1a0f53dc604378f94b5795d0b8e462fee01bf0a887cb34d0efdf5d21f - md5: 89b79a9baa7db46ce21f5738a5a3dfda + size: 244675 + timestamp: 1737358397158 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/websockets-14.2-py312hea69d52_0.conda + sha256: e5ad8c983a1669d06a6648990c0491d5469143f02003c8fd2ae7d066d7d4b086 + md5: 8757561d3ea10ba178fb7fb888f33e3a depends: - __osx >=11.0 - python >=3.12,<3.13.0a0 @@ -8929,8 +8913,8 @@ packages: platform: osx license: BSD-3-Clause license_family: BSD - size: 243131 - timestamp: 1731498944076 + size: 246269 + timestamp: 1737358485546 - conda: https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.17.2-py312h66e93f0_0.conda sha256: ed3a1700ecc5d38c7e7dc7d2802df1bc1da6ba3d6f6017448b8ded0affb4ae00 md5: 669e63af87710f8d52fdec9d4d63b404 @@ -9253,9 +9237,9 @@ packages: license_family: MIT size: 88016 timestamp: 1641347076660 -- conda: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.18.3-py312h66e93f0_0.conda - sha256: a0d93c3bef723e384cff8a29a82a2c6b7a73b39328088f3a2d97c901f56e9a63 - md5: 91df2efaa08730416bec2a4502309275 +- conda: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.18.3-py312h178313f_1.conda + sha256: 6b054c93dd19fd7544af51b41a8eacca2ab62271f6c0c5a2a0cffe80dc37a0ce + md5: 6822c49f294d4355f19d314b8b6063d8 depends: - __glibc >=2.17,<3.0.a0 - idna >=2.0 @@ -9268,11 +9252,11 @@ packages: platform: linux license: Apache-2.0 license_family: Apache - size: 151393 - timestamp: 1733428897813 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.18.3-py312hb2c0f52_0.conda - sha256: 470b5b0f3ac89acd143095281167dc2ac1a56d4fa22e1794bd8f3b00bb604540 - md5: 0b3c640697bca798d0ab428f530ed24c + size: 152305 + timestamp: 1737575898300 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.18.3-py312hcc812fe_1.conda + sha256: bfa211c0dd5dbb308788f055277dc428b7923ceb2de6a22ea98bc17cf306f9f5 + md5: d14c78abdd6109e2b7162f53b6cc1e77 depends: - idna >=2.0 - libgcc >=13 @@ -9285,11 +9269,11 @@ packages: platform: linux license: Apache-2.0 license_family: Apache - size: 150004 - timestamp: 1733429056665 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.18.3-py312hea69d52_0.conda - sha256: 69c7863809e11bc90c0d935c16e7f151dcc925add08b3894f06059263a8cb9ba - md5: f32f9b16361866a62d6e061fcd7eb400 + size: 149654 + timestamp: 1737576065314 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.18.3-py312h998013c_1.conda + sha256: 48821d23567ca0f853eee6f7812c74392867e123798b5b3c44f58758d8eb580e + md5: 092d3b40acc67c470f379049be343a7a depends: - __osx >=11.0 - idna >=2.0 @@ -9302,8 +9286,8 @@ packages: platform: osx license: Apache-2.0 license_family: Apache - size: 141556 - timestamp: 1733429104990 + size: 145543 + timestamp: 1737576074753 - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda sha256: a4dc72c96848f764bb5a5176aa93dd1e9b9e52804137b99daeebba277b31ea10 md5: 3947a35e916fcc6b9825449affbf4214 diff --git a/examples/magic.lock b/examples/magic.lock index bfba300bb8..ba26868d6b 100644 --- a/examples/magic.lock +++ b/examples/magic.lock @@ -14,19 +14,19 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.8.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.3.0-pyh71513ae_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-h205f482_16.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.1-h205f482_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.1-h1a47875_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.10.6-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.3.0-h4e1184b_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.0-h7959bf6_11.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.2-hefd7a92_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-h831e299_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-h173a860_6.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h11f4f37_12.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.7-hf454442_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.9-he1b24dc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.2-h4e1184b_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-h4e1184b_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.8-h8570fcd_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-h7001638_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.9-he0e7f3f_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-h4d475cb_6.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.10.0-h113e628_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.13.0-h3cf044e_1.conda @@ -51,7 +51,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/fastapi-0.115.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.7-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/filelock-3.17.0-pyhd8ed1ab_0.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 - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.12.0-pyhd8ed1ab_0.conda @@ -77,10 +77,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-h9d9f30d_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-hcb10f89_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-hcb10f89_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-h08228c5_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-19.0.0-hce2e470_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-19.0.0-hcb10f89_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-19.0.0-hcb10f89_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-19.0.0-h08228c5_3_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-26_linux64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hb9d3cd8_2.conda @@ -109,18 +109,18 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.28-pthreads_h94d23a6_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-h081d1f1_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-19.0.0-h081d1f1_3_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.45-h943b412_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.48.0-hee588c1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.48.0-hee588c1_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hf672d98_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-hc0a3c3a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libthrift-0.21.0-h0e7cc3e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hd9ff511_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.9.0-hb9d3cd8_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.10.0-h4c51ac1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.50.0-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.5.0-h851e524_0.conda @@ -131,12 +131,12 @@ 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-25.1.0.dev2025011705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025011705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025011705-3.11release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025012205-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025012205-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025012205-3.11release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012205-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-25.1.0.dev2025011705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025012205-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 @@ -161,8 +161,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.1-py311h9ecbd09_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/protobuf-5.28.3-py311hfdbb021_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-18.1.0-py311h38be061_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-18.1.0-py311h4854187_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-19.0.0-py311h38be061_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-19.0.0-py311h4854187_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.5-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.27.2-py311h9e33e62_0.conda @@ -175,11 +175,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.20-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python-xxhash-3.5.0-py311h9ecbd09_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.11-5_cp311.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py311h9ecbd09_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py311h2dc5d0c_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.0-py311h7deb3e3_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/re2-2024.07.02-h9925aae_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda @@ -187,7 +187,7 @@ environments: - 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.10-hb5b8611_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/s2n-1.5.11-h072c03f_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/safetensors-0.5.2-py311h9e33e62_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda @@ -200,7 +200,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py311h9ecbd09_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.48.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.48.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda @@ -212,13 +212,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.34.0-h31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/uvloop-0.21.0-py311h9ecbd09_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/watchfiles-1.0.4-py311h9e33e62_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/websockets-14.1-py311h9ecbd09_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/websockets-14.2-py311h9ecbd09_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.17.2-py311h9ecbd09_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xxhash-0.8.2-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.18.3-py311h9ecbd09_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.18.3-py311h2dc5d0c_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py311hbc35293_1.conda @@ -231,19 +231,19 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.8.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.3.0-pyh71513ae_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-hb7ec8d5_16.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.1-hb7ec8d5_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.1-h740c5af_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-common-0.10.6-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-compression-0.3.0-h0f0193d_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-event-stream-0.5.0-hcbd8f92_11.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.2-h3df160d_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-h1a307af_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-hfd5ba81_6.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h5f50e26_12.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.7-h2080895_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.9-h05b070f_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.2-h0f0193d_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h0f0193d_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.8-h92ee776_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h90ecb4a_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.9-hab3ce66_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h88461e4_6.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-core-cpp-1.14.0-h1887c18_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-identity-cpp-1.10.0-h47b0b28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-blobs-cpp-12.13.0-h185ecfd_1.conda @@ -268,7 +268,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/fastapi-0.115.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.7-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/filelock-3.17.0-pyhd8ed1ab_0.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 - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.12.0-pyhd8ed1ab_0.conda @@ -295,10 +295,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.0.0-h4de3ea5_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h18dbdb1_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-h47f80e1_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h3b568fd_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h3b568fd_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h1e9d426_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-19.0.0-h4065667_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-19.0.0-h3b568fd_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-19.0.0-h3b568fd_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-19.0.0-h1e9d426_4_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-26_linuxaarch64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlicommon-1.1.0-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlidec-1.1.0-h86ecc28_2.conda @@ -317,8 +317,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-2.33.0-hccf9d24_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-storage-2.33.0-hb9b2b65_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-2.34.0-hccf9d24_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-storage-2.34.0-hb9b2b65_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgrpc-1.67.1-hf7ccdd3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libiconv-1.17-h31becfc_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libjpeg-turbo-3.0.0-h31becfc_1.conda @@ -327,18 +327,18 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnghttp2-1.64.0-hc8609a4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.28-pthreads_h9d3fd7e_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-hfc78867_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-19.0.0-hfc78867_4_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.45-hec79eb8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.3-h44a3b7b_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.20-h68df207_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.48.0-h5eb1b54_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.48.0-h5eb1b54_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libssh2-1.11.1-ha41c0db_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libthrift-0.21.0-h154c74f_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.0-h88f7998_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.9.0-h86ecc28_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.10.0-ha346350_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuv-1.50.0-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libwebp-base-1.5.0-h0886dbf_0.conda @@ -349,12 +349,12 @@ 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-25.1.0.dev2025011705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025011705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025011705-3.11release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025012205-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025012205-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025012205-3.11release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012205-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-25.1.0.dev2025011705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025012205-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 @@ -379,8 +379,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.2.1-py311ha879c10_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/protobuf-5.28.3-py311h89d996e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pthread-stubs-0.4-h86ecc28_1002.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-18.1.0-py311hfecb2dc_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-18.1.0-py311ha6d2531_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-19.0.0-py311hfecb2dc_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-19.0.0-py311ha6d2531_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.5-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pydantic-core-2.27.2-py311h0ca61a2_0.conda @@ -393,11 +393,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.20-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-xxhash-3.5.0-py311h5487e9b_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.11-5_cp311.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyyaml-6.0.2-py311ha879c10_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyyaml-6.0.2-py311h58d527c_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyzmq-26.2.0-py311h826da9f_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/re2-2024.07.02-haa97905_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8fc344f_1.conda @@ -405,7 +405,7 @@ environments: - 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.10-h5df210e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/s2n-1.5.11-h3caee7a_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/safetensors-0.5.2-py311h0ca61a2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda @@ -418,7 +418,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py311h5487e9b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.48.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.48.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda @@ -430,13 +430,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.34.0-h31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/uvloop-0.21.0-py311ha879c10_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/watchfiles-1.0.4-py311h0ca61a2_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/websockets-14.1-py311ha879c10_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/websockets-14.2-py311ha879c10_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/wrapt-1.17.2-py311ha879c10_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxau-1.0.12-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxdmcp-1.1.5-h57736b2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xxhash-0.8.2-h31becfc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yaml-0.2.5-hf897c2e_2.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.18.3-py311ha879c10_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.18.3-py311h58d527c_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zeromq-4.3.5-h5efb499_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstandard-0.23.0-py311hd5293d8_1.conda @@ -448,19 +448,19 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.8.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.3.0-pyh71513ae_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-hfc2798a_16.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.1-hfc2798a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.1-hc8a0bd2_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.10.6-h5505292_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-compression-0.3.0-hc8a0bd2_5.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.0-h54f970a_11.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.2-h96aa502_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-haba67d1_5.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-haba67d1_6.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h24f418c_12.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.7-h1be5864_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.9-hf37e03c_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.2-hc8a0bd2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-hc8a0bd2_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.8-h23176ea_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-h794939a_5.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.9-ha81f72f_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-h0e5014b_6.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.14.0-hd50102c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.10.0-hc602bab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-blobs-cpp-12.13.0-h7585a09_1.conda @@ -485,7 +485,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/fastapi-0.115.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.7-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/filelock-3.17.0-pyhd8ed1ab_0.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 - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.12.0-pyhd8ed1ab_0.conda @@ -510,10 +510,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.16-ha0e7c42_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_h07bc746_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-hf3eb8e5_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-hf07054f_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-hf07054f_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-h4239455_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-19.0.0-hd1aa4b5_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-19.0.0-hf07054f_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-19.0.0-hf07054f_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-19.0.0-h4239455_4_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-26_osxarm64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.1.0-hd74edd7_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.1.0-hd74edd7_2.conda @@ -530,8 +530,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-2.33.0-hdbe95d5_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-storage-2.33.0-h7081f7f_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-2.34.0-hdbe95d5_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-storage-2.34.0-h7081f7f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgrpc-1.67.1-h0a426d6_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.17-h0d3ecfb_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.0.0-hb547adb_1.conda @@ -539,16 +539,16 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.3-h39f12f2_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.64.0-h6d7220d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.28-openmp_hf332438_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-h636d7b7_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-19.0.0-h636d7b7_4_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.45-h3783ad8_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.3-h3bd63a1_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h07bc746_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.48.0-h3f77e49_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.48.0-h3f77e49_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.1-h9cc3647_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libthrift-0.21.0-h64651cc_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-h551f018_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.9.0-h5505292_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.10.0-hda25de7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libuv-1.50.0-h5505292_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.5.0-h2471fea_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxcb-1.17.0-hdb1d25a_0.conda @@ -558,12 +558,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-25.1.0.dev2025011705-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025011705-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025011705-3.11release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025012205-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025012205-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025012205-3.11release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012205-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-25.1.0.dev2025011705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025012205-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 @@ -588,8 +588,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.1-py311h917b07b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/protobuf-5.28.3-py311h155a34a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pthread-stubs-0.4-hd74edd7_1002.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-18.1.0-py311ha1ab1f8_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-18.1.0-py311he04fa90_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-19.0.0-py311ha1ab1f8_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-19.0.0-py311he04fa90_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.5-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.27.2-py311h3ff9189_0.conda @@ -602,11 +602,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.20-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-xxhash-3.5.0-py311h460d6c5_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.11-5_cp311.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py311h460d6c5_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py311h4921393_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.0-py311h730b646_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/re2-2024.07.02-h6589ca4_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h92ec313_1.conda @@ -626,7 +626,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py311h917b07b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.48.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.48.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda @@ -638,13 +638,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.34.0-h31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/uvloop-0.21.0-py311hae2e1ce_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/watchfiles-1.0.4-py311h3ff9189_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/websockets-14.1-py311h917b07b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/websockets-14.2-py311h917b07b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/wrapt-1.17.2-py311h917b07b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxau-1.0.12-h5505292_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxdmcp-1.1.5-hd74edd7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xxhash-0.8.2-hb547adb_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.18.3-py311h917b07b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.18.3-py311h4921393_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py311ha60cc69_1.conda @@ -804,9 +804,9 @@ packages: license_family: MIT size: 56354 timestamp: 1734348889193 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-h205f482_16.conda - sha256: 0695c285b70385913dc7dce05888d3ad1378247b65273bdab509494a2f8f0eea - md5: b0815d37ab812ade9c07239da7c3c369 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.1-h205f482_0.conda + sha256: ebe5e33249f37f6bb481de99581ebdc92dbfcf1b6915609bcf3c9e78661d6352 + md5: 9c500858e88df50af3cc883d194de78a depends: - __glibc >=2.17,<3.0.a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 @@ -819,11 +819,11 @@ packages: platform: linux license: Apache-2.0 license_family: Apache - size: 107478 - timestamp: 1736592747413 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-hb7ec8d5_16.conda - sha256: 5a2a2691f2e0028e8549b97a340d7e6c502e0d54b7deba00fad505812663a98b - md5: 56f166780076db46c5e273988693d8a3 + size: 108111 + timestamp: 1737509831651 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.1-hb7ec8d5_0.conda + sha256: e1e6c9267a4d9af30b1d28c11a9041b17b7840ff83ef08614145a2a4f444f5b4 + md5: 2630f030652970a5531e492f6b2a6dd3 depends: - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.6,<0.10.7.0a0 @@ -835,11 +835,11 @@ packages: platform: linux license: Apache-2.0 license_family: Apache - size: 112264 - timestamp: 1736592695540 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-hfc2798a_16.conda - sha256: cdcd932332311db1b614289101b61e32cbae2478ba2bf85763aaf5a5cc7db6f6 - md5: 1e9a41d5296f50c08ae511d61fddef85 + size: 112658 + timestamp: 1737509863269 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.1-hfc2798a_0.conda + sha256: 5a60d196a585b25d1446fb973009e4e648e8d70beaa2793787243ede6da0fd9a + md5: 0abd67c0f7b60d50348fbb32fef50b65 depends: - __osx >=11.0 - aws-c-cal >=0.8.1,<0.8.2.0a0 @@ -851,8 +851,8 @@ packages: platform: osx license: Apache-2.0 license_family: Apache - size: 92547 - timestamp: 1736592866387 + size: 92562 + timestamp: 1737509877079 - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.1-h1a47875_3.conda sha256: 095ac824ea9303eff67e04090ae531d9eb33d2bf8f82eaade39b839c421e16e8 md5: 55a8561fdbbbd34f50f57d9be12ed084 @@ -1056,38 +1056,38 @@ packages: license_family: Apache size: 152983 timestamp: 1734008451473 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-h831e299_5.conda - sha256: 5920009b1c6f9a2bc131a36725251894e4b4773fce29c4b1065d4213ae337abe - md5: 80dd9f0ddf935290d1dc00ec75ff3023 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-h173a860_6.conda + sha256: 335d822eead0a097ffd23677a288e1f18ea22f47a92d4f877419debb93af0e81 + md5: 9a063178f1af0a898526cc24ba7be486 depends: - __glibc >=2.17,<3.0.a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.6,<0.10.7.0a0 - libgcc >=13 - - s2n >=1.5.10,<1.5.11.0a0 + - s2n >=1.5.11,<1.5.12.0a0 arch: x86_64 platform: linux license: Apache-2.0 license_family: Apache - size: 157864 - timestamp: 1734433578570 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-h1a307af_5.conda - sha256: 71f5bf891299f831dceaea12f926c393bf754569e5305387a88b77e1f94612d8 - md5: da8ab0f3eeac93449ec3d531ede92caa + size: 157263 + timestamp: 1737207617838 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-hfd5ba81_6.conda + sha256: d8adfde05cee11057d99c3802e84b2300430a7c7c3c9936165d1d4b25ef59d91 + md5: 4e6771b45cb2b035c62d023dbf0dc000 depends: - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.6,<0.10.7.0a0 - libgcc >=13 - - s2n >=1.5.10,<1.5.11.0a0 + - s2n >=1.5.11,<1.5.12.0a0 arch: aarch64 platform: linux license: Apache-2.0 license_family: Apache - size: 161889 - timestamp: 1734433686109 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-haba67d1_5.conda - sha256: c0a1a2b0750225ac3dc07fd258c88c2be866bf8ac67ba3d50bb4ecec852ff8ee - md5: 4c5ff4134e76426a75b8c548984fa933 + size: 160933 + timestamp: 1737207637279 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-haba67d1_6.conda + sha256: 73722dd175af78b6cbfa033066f0933351f5382a1a737f6c6d9b8cfa84022161 + md5: d02e8f40ff69562903e70a1c6c48b009 depends: - __osx >=11.0 - aws-c-cal >=0.8.1,<0.8.2.0a0 @@ -1096,8 +1096,8 @@ packages: platform: osx license: Apache-2.0 license_family: Apache - size: 135729 - timestamp: 1734433832730 + size: 136048 + timestamp: 1737207681224 - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h11f4f37_12.conda sha256: 512d3969426152d9d5fd886e27b13706122dc3fa90eb08c37b0d51a33d7bb14a md5: 96c3e0221fa2da97619ee82faa341a73 @@ -1141,12 +1141,12 @@ packages: license_family: Apache size: 134371 timestamp: 1734025379525 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.7-hf454442_0.conda - sha256: c2f205a7bf64c5f40eea373b3a0a7c363c9aa9246a13dd7f3d9c6a4434c4fe2d - md5: 947c82025693bebd557f782bb5d6b469 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.9-he1b24dc_1.conda + sha256: 15fbdedc56850f8be5be7a5bcaea1af09c97590e631c024ae089737fc932fc42 + md5: caafc32928a5f7f3f7ef67d287689144 depends: - __glibc >=2.17,<3.0.a0 - - aws-c-auth >=0.8.0,<0.8.1.0a0 + - aws-c-auth >=0.8.1,<0.8.2.0a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 @@ -1158,13 +1158,13 @@ packages: platform: linux license: Apache-2.0 license_family: Apache - size: 114156 - timestamp: 1734146123386 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.7-h2080895_0.conda - sha256: 20bc2dd60e6518d9b8215c2b652ab5c52ee8a997d3b9a5f69e2dabd28cbf26b2 - md5: ae223efa63fbb4262a2d85c3ab3bc4f5 + size: 115413 + timestamp: 1737558687616 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.9-h05b070f_1.conda + sha256: 9e7857fbc33eddc291fa09890ce468a92485d3e3e127bc00bbd1803e34121f84 + md5: e0a2869195f069db88b8932f5b00bee5 depends: - - aws-c-auth >=0.8.0,<0.8.1.0a0 + - aws-c-auth >=0.8.1,<0.8.2.0a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 @@ -1176,14 +1176,14 @@ packages: platform: linux license: Apache-2.0 license_family: Apache - size: 117641 - timestamp: 1734146239779 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.7-h1be5864_0.conda - sha256: 22966164d63808689fffd35945f57756c95337327e28099b5d77b29fc6a56ecc - md5: a37bba7acb62dd70492ee01eacca3b8f + size: 117875 + timestamp: 1737558720047 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.9-hf37e03c_1.conda + sha256: 92e8ca4eefcbbdf4189584c9410382884a06ed3030e5ecaac656dab8c95e6a80 + md5: de65f5e4ab5020103fe70a0eba9432a0 depends: - __osx >=11.0 - - aws-c-auth >=0.8.0,<0.8.1.0a0 + - aws-c-auth >=0.8.1,<0.8.2.0a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 @@ -1193,8 +1193,8 @@ packages: platform: osx license: Apache-2.0 license_family: Apache - size: 97598 - timestamp: 1734146239038 + size: 98731 + timestamp: 1737558731831 - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.2-h4e1184b_0.conda sha256: 0424e380c435ba03b5948d02e8c958866c4eee50ed29e57f99473a5f795a4cfc md5: dcd498d493818b776a77fbc242fbf8e4 @@ -1269,19 +1269,19 @@ packages: license_family: Apache size: 70186 timestamp: 1733994496998 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.8-h8570fcd_1.conda - sha256: ff8f08bc615d3ef6d970df80988200b3ecee76ecfa4885109cd82b30176cfda9 - md5: f21296b496cca1c1fa426b9a3b676e79 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.9-he0e7f3f_2.conda + sha256: c1930569713bd5231d48d885a5e3707ac917b428e8f08189d14064a2bb128adc + md5: 8a4e6fc8a3b285536202b5456a74a940 depends: - __glibc >=2.17,<3.0.a0 - - aws-c-auth >=0.8.0,<0.8.1.0a0 + - aws-c-auth >=0.8.1,<0.8.2.0a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - - aws-c-s3 >=0.7.7,<0.7.8.0a0 + - aws-c-s3 >=0.7.9,<0.7.10.0a0 - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 - libgcc >=13 - libstdcxx >=13 @@ -1289,20 +1289,20 @@ packages: platform: linux license: Apache-2.0 license_family: Apache - size: 354328 - timestamp: 1736598991291 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.8-h92ee776_1.conda - sha256: 114ac89d3936bf801dcbd488ba0b468c7e113a407cb1ee5898259a5202b7e750 - md5: 63546051b5687f793ae977c7994e1339 + size: 353222 + timestamp: 1737565463079 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.9-hab3ce66_2.conda + sha256: c3884fb10e0fd9be5c13256cabcda1afa9d2fcf8878c67214d02fc344509857d + md5: 875968ebffe992b68faf2caebbf32f02 depends: - - aws-c-auth >=0.8.0,<0.8.1.0a0 + - aws-c-auth >=0.8.1,<0.8.2.0a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - - aws-c-s3 >=0.7.7,<0.7.8.0a0 + - aws-c-s3 >=0.7.9,<0.7.10.0a0 - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 - libgcc >=13 - libstdcxx >=13 @@ -1310,38 +1310,38 @@ packages: platform: linux license: Apache-2.0 license_family: Apache - size: 284664 - timestamp: 1736598964131 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.8-h23176ea_1.conda - sha256: db6a31078bb82fb12044d7706239c003568273729f7ba4971c1479b7926ada82 - md5: 31fdd3ffb00f5472196fa95ef08087b7 + size: 283812 + timestamp: 1737565480034 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.9-ha81f72f_2.conda + sha256: ed5f1d19aad53787fdebe13db4709c97eae2092536cc55d3536eba320c4286e1 + md5: c9c034d3239bf25687ca4dd985007ecd depends: - __osx >=11.0 - - aws-c-auth >=0.8.0,<0.8.1.0a0 + - aws-c-auth >=0.8.1,<0.8.2.0a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - - aws-c-s3 >=0.7.7,<0.7.8.0a0 + - aws-c-s3 >=0.7.9,<0.7.10.0a0 - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 - libcxx >=18 arch: arm64 platform: osx license: Apache-2.0 license_family: Apache - size: 236269 - timestamp: 1736599024242 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-h7001638_5.conda - sha256: 849524b09865e84d6926aa814944cf71511aa4a00fffc5ad174c286d5dfac5f0 - md5: fc01d77a7f383b2915f276c73b7d0934 + size: 235976 + timestamp: 1737565563139 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-h4d475cb_6.conda + sha256: 2309d96d537b5c3810c6e9fbf5b6bb7e06ce907a609d172063ab504b2cc67f30 + md5: 6139e84bbb6fdb27ca49c2981613a5fa depends: - __glibc >=2.17,<3.0.a0 - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - - aws-crt-cpp >=0.29.8,<0.29.9.0a0 + - aws-crt-cpp >=0.29.9,<0.29.10.0a0 - libcurl >=8.11.1,<9.0a0 - libgcc >=13 - libstdcxx >=13 @@ -1351,16 +1351,16 @@ packages: platform: linux license: Apache-2.0 license_family: Apache - size: 3088636 - timestamp: 1736598504343 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h90ecb4a_5.conda - sha256: 9467acd0f2df74ea7472aebdfb8b5656a8d403abad2edbce9743d6e88c94fd10 - md5: 33f86f8de1d8cd40f8fe628dc0784437 + size: 3069914 + timestamp: 1737049585807 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h88461e4_6.conda + sha256: f97e071ffb87bc33923f798761ec6a854614ce193913d34d3248515d18357baa + md5: 0d7f1ee2e5572bf9d1fd78f0f2ab6f6b depends: - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - - aws-crt-cpp >=0.29.8,<0.29.9.0a0 + - aws-crt-cpp >=0.29.9,<0.29.10.0a0 - libcurl >=8.11.1,<9.0a0 - libgcc >=13 - libstdcxx >=13 @@ -1370,17 +1370,17 @@ packages: platform: linux license: Apache-2.0 license_family: Apache - size: 2925443 - timestamp: 1736598526637 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-h794939a_5.conda - sha256: 2b1e7d5a45e82604bfdb6de63c53cf0e9495f596cfd90e644a1e67910de7f91c - md5: a2374b4182bf5b2d08b2903393d0c487 + size: 2919798 + timestamp: 1737049659061 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-h0e5014b_6.conda + sha256: 8c21ce4692d1631b96adea099d7c2b905fc5d078db63bf754d85600dcf184651 + md5: a3b7b9a81d8c6a8f963f619d9e362c39 depends: - __osx >=11.0 - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - - aws-crt-cpp >=0.29.8,<0.29.9.0a0 + - aws-crt-cpp >=0.29.9,<0.29.10.0a0 - libcurl >=8.11.1,<9.0a0 - libcxx >=18 - libzlib >=1.3.1,<2.0a0 @@ -1389,8 +1389,8 @@ packages: platform: osx license: Apache-2.0 license_family: Apache - size: 2824168 - timestamp: 1736598935034 + size: 2834057 + timestamp: 1737126583846 - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda sha256: fe07debdb089a3db17f40a7f20d283d75284bb4fc269ef727b8ba6fc93f7cb5a md5: 0a8838771cc2e985cd295e01ae83baf1 @@ -1964,14 +1964,14 @@ packages: license_family: MIT size: 15546 timestamp: 1734302408607 -- conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_1.conda - sha256: 18dca6e2194732df7ebf824abaefe999e4765ebe8e8a061269406ab88fc418b9 - md5: d692e9ba6f92dc51484bf3477e36ce7c +- conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.17.0-pyhd8ed1ab_0.conda + sha256: 006d7e5a0c17a6973596dd86bfc80d74ce541144d2aee2d22d46fd41df560a63 + md5: 7f402b4a1007ee355bc50ce4d24d4a57 depends: - python >=3.9 license: Unlicense - size: 17441 - timestamp: 1733240909987 + size: 17544 + timestamp: 1737517924333 - conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.12.1-h267a509_2.conda sha256: b2e3c449ec9d907dd4656cb0dc93e140f447175b125a3824b31368b06c666bb6 md5: 9ae35c3d96db2c94ce0cef86efdfa2cb @@ -2558,13 +2558,13 @@ packages: license_family: Apache size: 1178260 timestamp: 1736008642885 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-h9d9f30d_8_cpu.conda - build_number: 8 - sha256: f6c72ce82d145cb94a1131b68547b88056fb48158a382f9ce763286fce53ee65 - md5: 1c9caae53b14a385b59e87687adad2d6 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-19.0.0-hce2e470_3_cpu.conda + build_number: 3 + sha256: 3b85b78a52ce673798e3c880fa41b818554912e722e81ca20cf95ba9257f13f0 + md5: a50ba9a0789061ea395a47a23d6a7734 depends: - __glibc >=2.17,<3.0.a0 - - aws-crt-cpp >=0.29.8,<0.29.9.0a0 + - aws-crt-cpp >=0.29.9,<0.29.10.0a0 - aws-sdk-cpp >=1.11.458,<1.11.459.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-identity-cpp >=1.10.0,<1.10.1.0a0 @@ -2582,7 +2582,7 @@ packages: - libgoogle-cloud-storage >=2.33.0,<2.34.0a0 - libre2-11 >=2024.7.2 - libstdcxx >=13 - - libutf8proc >=2.9.0,<2.10.0a0 + - libutf8proc >=2.10.0,<2.11.0a0 - libzlib >=1.3.1,<2.0a0 - lz4-c >=1.10.0,<1.11.0a0 - orc >=2.0.3,<2.0.4.0a0 @@ -2596,15 +2596,14 @@ packages: arch: x86_64 platform: linux license: Apache-2.0 - license_family: APACHE - size: 8801586 - timestamp: 1736610546493 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-h47f80e1_8_cpu.conda - build_number: 8 - sha256: bf381dfa84e94ffce715c46352dd99f6f6ace69859b0efb822500f8882be429a - md5: daceef1881b4ddc72bb5b225a122c633 - depends: - - aws-crt-cpp >=0.29.8,<0.29.9.0a0 + size: 8899665 + timestamp: 1737343852413 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-19.0.0-h4065667_4_cpu.conda + build_number: 4 + sha256: 68a7487dfb5673cd099def1acde4cbe64cc45df386119b59e831da23a2c3ee9e + md5: ede6f02748fe5b4e8dcb63c0340a69d9 + depends: + - aws-crt-cpp >=0.29.9,<0.29.10.0a0 - aws-sdk-cpp >=1.11.458,<1.11.459.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-identity-cpp >=1.10.0,<1.10.1.0a0 @@ -2618,11 +2617,11 @@ packages: - libbrotlidec >=1.1.0,<1.2.0a0 - libbrotlienc >=1.1.0,<1.2.0a0 - libgcc >=13 - - libgoogle-cloud >=2.33.0,<2.34.0a0 - - libgoogle-cloud-storage >=2.33.0,<2.34.0a0 + - libgoogle-cloud >=2.34.0,<2.35.0a0 + - libgoogle-cloud-storage >=2.34.0,<2.35.0a0 - libre2-11 >=2024.7.2 - libstdcxx >=13 - - libutf8proc >=2.9.0,<2.10.0a0 + - libutf8proc >=2.10.0,<2.11.0a0 - libzlib >=1.3.1,<2.0a0 - lz4-c >=1.10.0,<1.11.0a0 - orc >=2.0.3,<2.0.4.0a0 @@ -2630,22 +2629,21 @@ packages: - snappy >=1.2.1,<1.3.0a0 - zstd >=1.5.6,<1.6.0a0 constrains: - - arrow-cpp <0.0a0 - apache-arrow-proc =*=cpu - parquet-cpp <0.0a0 + - arrow-cpp <0.0a0 arch: aarch64 platform: linux license: Apache-2.0 - license_family: APACHE - size: 8045923 - timestamp: 1736611764958 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-hf3eb8e5_8_cpu.conda - build_number: 8 - sha256: 766e46b45520773db93ee1a91951cc135a85544bba738e7b378d31f16097753f - md5: fdc79871e6c243b819497337215416d9 + size: 8138173 + timestamp: 1737460061797 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-19.0.0-hd1aa4b5_4_cpu.conda + build_number: 4 + sha256: bf027b2e77b75b71b5213131fc4b06bbca6f1e195fde62090343e0a808d08bbe + md5: 94c2bcca143c043f8083a1f275de3caf depends: - __osx >=11.0 - - aws-crt-cpp >=0.29.8,<0.29.9.0a0 + - aws-crt-cpp >=0.29.9,<0.29.10.0a0 - aws-sdk-cpp >=1.11.458,<1.11.459.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-identity-cpp >=1.10.0,<1.10.1.0a0 @@ -2658,10 +2656,10 @@ packages: - libbrotlidec >=1.1.0,<1.2.0a0 - libbrotlienc >=1.1.0,<1.2.0a0 - libcxx >=18 - - libgoogle-cloud >=2.33.0,<2.34.0a0 - - libgoogle-cloud-storage >=2.33.0,<2.34.0a0 + - libgoogle-cloud >=2.34.0,<2.35.0a0 + - libgoogle-cloud-storage >=2.34.0,<2.35.0a0 - libre2-11 >=2024.7.2 - - libutf8proc >=2.9.0,<2.10.0a0 + - libutf8proc >=2.10.0,<2.11.0a0 - libzlib >=1.3.1,<2.0a0 - lz4-c >=1.10.0,<1.11.0a0 - orc >=2.0.3,<2.0.4.0a0 @@ -2669,165 +2667,155 @@ packages: - snappy >=1.2.1,<1.3.0a0 - zstd >=1.5.6,<1.6.0a0 constrains: - - arrow-cpp <0.0a0 - parquet-cpp <0.0a0 + - arrow-cpp <0.0a0 - apache-arrow-proc =*=cpu arch: arm64 platform: osx license: Apache-2.0 - license_family: APACHE - size: 5497383 - timestamp: 1736608604724 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-hcb10f89_8_cpu.conda - build_number: 8 - sha256: 126a6e78199311d99e38b9d633ce3e0290795ac68ce3ee8a9b91436c85c4095d - md5: 544759904898499f634f8f88a9907f88 + size: 5532664 + timestamp: 1737458545986 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-19.0.0-hcb10f89_3_cpu.conda + build_number: 3 + sha256: f4e4b14fc2aaaf0d0a16a3b4b4dcae84b1b77daa02754f0873901089ce786a49 + md5: 3e1e31382e9c6ecd0b24bd8f6ddb33ec depends: - __glibc >=2.17,<3.0.a0 - - libarrow 18.1.0 h9d9f30d_8_cpu + - libarrow 19.0.0 hce2e470_3_cpu - libgcc >=13 - libstdcxx >=13 arch: x86_64 platform: linux license: Apache-2.0 - license_family: APACHE - size: 611558 - timestamp: 1736610592458 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h3b568fd_8_cpu.conda - build_number: 8 - sha256: c94844ab1d8fafe17775161283bd1fe7ab1f93f660fc5ba0c01bd33fe3d21eaf - md5: 7a8e6a363d2f39a2f3df3f181d12692d + size: 618570 + timestamp: 1737343896206 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-19.0.0-h3b568fd_4_cpu.conda + build_number: 4 + sha256: db659a40804ba115e1685313d5ef7d530166f3c8bf4998adc1e53715e174b0a1 + md5: a9998823374fef02a1573599fe17d529 depends: - - libarrow 18.1.0 h47f80e1_8_cpu + - libarrow 19.0.0 h4065667_4_cpu - libgcc >=13 - libstdcxx >=13 arch: aarch64 platform: linux license: Apache-2.0 - license_family: APACHE - size: 579798 - timestamp: 1736611846905 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-hf07054f_8_cpu.conda - build_number: 8 - sha256: 29196dc6b2e4488f98bd8950de6333efe5d1a9d0cc62e186694946766185475e - md5: 8db96829f8e427167f450c7467a1ba44 + size: 578847 + timestamp: 1737460106358 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-19.0.0-hf07054f_4_cpu.conda + build_number: 4 + sha256: 40de7e71d9fd4b799c452b3a0328ea260a3871de621f5344fb39b7f48371df75 + md5: e3265f8ab44051131966bd6f7b07a6e3 depends: - __osx >=11.0 - - libarrow 18.1.0 hf3eb8e5_8_cpu + - libarrow 19.0.0 hd1aa4b5_4_cpu - libcxx >=18 arch: arm64 platform: osx license: Apache-2.0 - license_family: APACHE - size: 484442 - timestamp: 1736608695654 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-hcb10f89_8_cpu.conda - build_number: 8 - sha256: fe50edf030b5ccbadec2bf8f90d4cdf32d63ec52ba26233fc2c8bfbe43df3b15 - md5: 894a5ed78728b77c997fefeee222ac4d + size: 481968 + timestamp: 1737458659266 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-19.0.0-hcb10f89_3_cpu.conda + build_number: 3 + sha256: c5cdf03d72d028e8af774aabd29cd92fb87f54cd579a9ffe77ad228c51faaa82 + md5: 1face9ff13ec61bfb065063d35fda864 depends: - __glibc >=2.17,<3.0.a0 - - libarrow 18.1.0 h9d9f30d_8_cpu - - libarrow-acero 18.1.0 hcb10f89_8_cpu + - libarrow 19.0.0 hce2e470_3_cpu + - libarrow-acero 19.0.0 hcb10f89_3_cpu - libgcc >=13 - - libparquet 18.1.0 h081d1f1_8_cpu + - libparquet 19.0.0 h081d1f1_3_cpu - libstdcxx >=13 arch: x86_64 platform: linux license: Apache-2.0 - license_family: APACHE - size: 588032 - timestamp: 1736610711976 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h3b568fd_8_cpu.conda - build_number: 8 - sha256: bb87d8e633074c9759d93abb277d31314dc66fad741253b48e8265e186228c5b - md5: 11856da892b919cc27bd62638d701c65 + size: 585153 + timestamp: 1737344009570 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-19.0.0-h3b568fd_4_cpu.conda + build_number: 4 + sha256: 961963447e33176095114badd5000c5ff285c636e0df1647ac485e17dc39fbe2 + md5: c06648a35ef35ba6089ba36e1315f857 depends: - - libarrow 18.1.0 h47f80e1_8_cpu - - libarrow-acero 18.1.0 h3b568fd_8_cpu + - libarrow 19.0.0 h4065667_4_cpu + - libarrow-acero 19.0.0 h3b568fd_4_cpu - libgcc >=13 - - libparquet 18.1.0 hfc78867_8_cpu + - libparquet 19.0.0 hfc78867_4_cpu - libstdcxx >=13 arch: aarch64 platform: linux license: Apache-2.0 - license_family: APACHE - size: 560571 - timestamp: 1736611941995 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-hf07054f_8_cpu.conda - build_number: 8 - sha256: bff2d39e418eadab8c522a536449ac90f070dd8e83e2bd5e67a9c3eb8ecf712f - md5: 7b3736f49b3ba299b7799aeb448cb830 + size: 559524 + timestamp: 1737460175618 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-19.0.0-hf07054f_4_cpu.conda + build_number: 4 + sha256: c9b01193f3dc2855276a743aa2d107b3893d886dbc561944154acc4c61a9b4cb + md5: c6588e0236da980424ca0b288c893d1a depends: - __osx >=11.0 - - libarrow 18.1.0 hf3eb8e5_8_cpu - - libarrow-acero 18.1.0 hf07054f_8_cpu + - libarrow 19.0.0 hd1aa4b5_4_cpu + - libarrow-acero 19.0.0 hf07054f_4_cpu - libcxx >=18 - - libparquet 18.1.0 h636d7b7_8_cpu + - libparquet 19.0.0 h636d7b7_4_cpu arch: arm64 platform: osx license: Apache-2.0 - license_family: APACHE - size: 491001 - timestamp: 1736609758514 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-h08228c5_8_cpu.conda - build_number: 8 - sha256: dca372e27724904577315b8db3793e027a5c152a485e505e630a57b15634cd85 - md5: 46eaf81238da6f3ffab1f3ffdcee382e + size: 488490 + timestamp: 1737459936234 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-19.0.0-h08228c5_3_cpu.conda + build_number: 3 + sha256: 414297c69d08ba45af0fccb5e22cc3b3e92181f3928eba1e1b1ab3641970c7e0 + md5: 8527e1e45c495991fd88f6531e176556 depends: - __glibc >=2.17,<3.0.a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.1.0 h9d9f30d_8_cpu - - libarrow-acero 18.1.0 hcb10f89_8_cpu - - libarrow-dataset 18.1.0 hcb10f89_8_cpu + - libarrow 19.0.0 hce2e470_3_cpu + - libarrow-acero 19.0.0 hcb10f89_3_cpu + - libarrow-dataset 19.0.0 hcb10f89_3_cpu - libgcc >=13 - libprotobuf >=5.28.3,<5.28.4.0a0 - libstdcxx >=13 arch: x86_64 platform: linux license: Apache-2.0 - license_family: APACHE - size: 521707 - timestamp: 1736610765240 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h1e9d426_8_cpu.conda - build_number: 8 - sha256: 1896ea00da28e10670f7ba51bb543e68a87f717e9f5692fee44268f1a13d9eee - md5: e7dc0209e065a2b51f19848cefa4b1ab + size: 521371 + timestamp: 1737344062052 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-19.0.0-h1e9d426_4_cpu.conda + build_number: 4 + sha256: 283a6e1733c68edcb6c448dd4bb01aae4ffbcf865789d221c88420ecb77ec28e + md5: c1da574e3cc1adc1c8451c4eddef2a4a depends: - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.1.0 h47f80e1_8_cpu - - libarrow-acero 18.1.0 h3b568fd_8_cpu - - libarrow-dataset 18.1.0 h3b568fd_8_cpu + - libarrow 19.0.0 h4065667_4_cpu + - libarrow-acero 19.0.0 h3b568fd_4_cpu + - libarrow-dataset 19.0.0 h3b568fd_4_cpu - libgcc >=13 - libprotobuf >=5.28.3,<5.28.4.0a0 - libstdcxx >=13 arch: aarch64 platform: linux license: Apache-2.0 - license_family: APACHE - size: 517189 - timestamp: 1736611989417 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-h4239455_8_cpu.conda - build_number: 8 - sha256: ae52d926ebfc8edb0728824f2918a825d39bd85a4ef27fe2b73656cfecdd7c69 - md5: f67eb19d22ba355cced8c86073ad49b1 + size: 515226 + timestamp: 1737460211936 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-19.0.0-h4239455_4_cpu.conda + build_number: 4 + sha256: 1de1100bddcaa4aacae5cc30e3c0ae3259d130bee7b3d52a57a1c9950e0c6588 + md5: 6988cd2fdf01cae4bc454859a7cf8bac depends: - __osx >=11.0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.1.0 hf3eb8e5_8_cpu - - libarrow-acero 18.1.0 hf07054f_8_cpu - - libarrow-dataset 18.1.0 hf07054f_8_cpu + - libarrow 19.0.0 hd1aa4b5_4_cpu + - libarrow-acero 19.0.0 hf07054f_4_cpu + - libarrow-dataset 19.0.0 hf07054f_4_cpu - libcxx >=18 - libprotobuf >=5.28.3,<5.28.4.0a0 arch: arm64 platform: osx license: Apache-2.0 - license_family: APACHE - size: 452161 - timestamp: 1736609917123 + size: 449975 + timestamp: 1737460148737 - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-26_linux64_openblas.conda build_number: 26 sha256: 30bd658682b124243f8e52d8edf8a19e7be1bc31e4fe4baec30a64002dc8cd0c @@ -3515,9 +3503,9 @@ packages: license_family: Apache size: 1254656 timestamp: 1735648569457 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-2.33.0-hccf9d24_1.conda - sha256: d3d4def86d880431928799ba90ca97e57c2f05677c03af8de2337502926c492c - md5: a2724014eb04f14bd71d35f45b062dd0 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-2.34.0-hccf9d24_0.conda + sha256: 54267dda8fafc2a2d379ef77b6029d8240e0628d4b29758f788fb903f84397a3 + md5: 1ce0fd876001c40801b40fea22987e41 depends: - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 @@ -3528,16 +3516,16 @@ packages: - libstdcxx >=13 - openssl >=3.4.0,<4.0a0 constrains: - - libgoogle-cloud 2.33.0 *_1 + - libgoogle-cloud 2.34.0 *_0 arch: aarch64 platform: linux license: Apache-2.0 license_family: Apache - size: 1253019 - timestamp: 1735649566849 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-2.33.0-hdbe95d5_1.conda - sha256: ce95aca02451694a4154c7770b6addf4fb859abf17912de6ec947da8469a56ce - md5: 91de1fbab8610974c0094c266bc63435 + size: 1256586 + timestamp: 1737285242684 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-2.34.0-hdbe95d5_0.conda + sha256: 919d8cbcd47d5bd2244c55b2bb87e2bd2eed8215996aab8435cb7123ffd9d20e + md5: 69826544e7978fcaa6bc8c1962d96ad6 depends: - __osx >=11.0 - libabseil * cxx17* @@ -3548,13 +3536,13 @@ packages: - libprotobuf >=5.28.3,<5.28.4.0a0 - openssl >=3.4.0,<4.0a0 constrains: - - libgoogle-cloud 2.33.0 *_1 + - libgoogle-cloud 2.34.0 *_0 arch: arm64 platform: osx license: Apache-2.0 license_family: Apache - size: 877594 - timestamp: 1735648230965 + size: 878217 + timestamp: 1737284441192 - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.33.0-h0121fbd_1.conda sha256: 41022523320ca8633a6c615710823e596efadb50f06d724e1a0c81e27994f257 md5: b0cfb5044685a7a9fa43ae669124f0a0 @@ -3574,15 +3562,15 @@ packages: license_family: Apache size: 784357 timestamp: 1735648759177 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-storage-2.33.0-hb9b2b65_1.conda - sha256: 5eda1cbba68709b91b370b3792c9cfd7bec4ac4e2262f0887d12e1f000ae1191 - md5: 45df2267ff4d8ce532e8d300ce0b0829 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-storage-2.34.0-hb9b2b65_0.conda + sha256: 4ad4fb7c02dcfa4c86dcf9591e0131a01fc0f2c3f2729c12882b944ddf2b8a9d + md5: 0732a5988f7f556f2c1d1f51026fc1be depends: - libabseil - libcrc32c >=1.1.2,<1.2.0a0 - libcurl - libgcc >=13 - - libgoogle-cloud 2.33.0 hccf9d24_1 + - libgoogle-cloud 2.34.0 hccf9d24_0 - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - openssl @@ -3590,26 +3578,26 @@ packages: platform: linux license: Apache-2.0 license_family: Apache - size: 737518 - timestamp: 1735649773462 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-storage-2.33.0-h7081f7f_1.conda - sha256: c0524a22064bc17f5c037da09ba54cc9e767741ef645178e499750c44bec2531 - md5: af8e51382464d4cc2d0054977c40a732 + size: 739678 + timestamp: 1737285399565 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-storage-2.34.0-h7081f7f_0.conda + sha256: 79f6b93fb330728530036b2b38764e9d42e0eedd3ae7e549ac7eae49acd1e52b + md5: f09cb03f9cf847f1dc41b4c1f65c97c2 depends: - __osx >=11.0 - libabseil - libcrc32c >=1.1.2,<1.2.0a0 - libcurl - libcxx >=18 - - libgoogle-cloud 2.33.0 hdbe95d5_1 + - libgoogle-cloud 2.34.0 hdbe95d5_0 - libzlib >=1.3.1,<2.0a0 - openssl arch: arm64 platform: osx license: Apache-2.0 license_family: Apache - size: 526963 - timestamp: 1735649222088 + size: 529202 + timestamp: 1737285376801 - conda: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.67.1-h25350d4_1.conda sha256: 014627485b3cf0ea18e04c0bab07be7fb98722a3aeeb58477acc7e1c3d2f911e md5: 0c6497a760b99a926c7c12b74951a39c @@ -3939,13 +3927,13 @@ packages: license_family: BSD size: 4165774 timestamp: 1730772154295 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-h081d1f1_8_cpu.conda - build_number: 8 - sha256: 2c6d900d4e9dd3c4000886d76d3f8a099e904667ebc6935b49428e6e9b766481 - md5: a9fa0ef309406c84b46db3a28efd761e +- conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-19.0.0-h081d1f1_3_cpu.conda + build_number: 3 + sha256: 287c4864b849180ce9e447df8227da2c4006001056e1668dacc3365264b0e828 + md5: 95f8b5758148e62a055f4c6538a31f0b depends: - __glibc >=2.17,<3.0.a0 - - libarrow 18.1.0 h9d9f30d_8_cpu + - libarrow 19.0.0 hce2e470_3_cpu - libgcc >=13 - libstdcxx >=13 - libthrift >=0.21.0,<0.21.1.0a0 @@ -3953,15 +3941,14 @@ packages: arch: x86_64 platform: linux license: Apache-2.0 - license_family: APACHE - size: 1207011 - timestamp: 1736610684584 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-hfc78867_8_cpu.conda - build_number: 8 - sha256: 2ed6b9eac4504051ddc094ea3f3a2b3198d4d25a443a96fa2971d8075d790c31 - md5: 9a907190c9e2c6bf1a29569700218f0b + size: 1227537 + timestamp: 1737343982323 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-19.0.0-hfc78867_4_cpu.conda + build_number: 4 + sha256: 1c1eb9776f45a9090ac27e97fefdf3dbc05d66059da4d06d982de4da384ddd5c + md5: 04d85f3a67ad5c175dbb33a4c37d6641 depends: - - libarrow 18.1.0 h47f80e1_8_cpu + - libarrow 19.0.0 h4065667_4_cpu - libgcc >=13 - libstdcxx >=13 - libthrift >=0.21.0,<0.21.1.0a0 @@ -3969,25 +3956,23 @@ packages: arch: aarch64 platform: linux license: Apache-2.0 - license_family: APACHE - size: 1117465 - timestamp: 1736611918180 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-h636d7b7_8_cpu.conda - build_number: 8 - sha256: 4991519ef4264abc7160e9faaf8ff01d4731bf1497076bef1895d6c366f796eb - md5: b8bd275a49877fdec62ff787818a869d + size: 1137213 + timestamp: 1737460158219 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-19.0.0-h636d7b7_4_cpu.conda + build_number: 4 + sha256: d394423b8a096cec5481ef4cdb4d39dd4b89949cd6f23bdc14896d8af36d78f3 + md5: 639473b0344e0d2f46feb544cff5c6d8 depends: - __osx >=11.0 - - libarrow 18.1.0 hf3eb8e5_8_cpu + - libarrow 19.0.0 hd1aa4b5_4_cpu - libcxx >=18 - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 arch: arm64 platform: osx license: Apache-2.0 - license_family: APACHE - size: 873593 - timestamp: 1736609701839 + size: 885681 + timestamp: 1737459816091 - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.45-h943b412_0.conda sha256: b8f5b5ba9a14dedf7c97c01300de492b1b52b68eacbc3249a13fdbfa82349a2f md5: 85cbdaacad93808395ac295b5667d25b @@ -4147,9 +4132,9 @@ packages: license: ISC size: 164972 timestamp: 1716828607917 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.48.0-hee588c1_0.conda - sha256: 7bb84f44e1bd756da4a3d0d43308324a5533e6ba9f4772475884bce44d405064 - md5: 84bd1c9a82b455e7a2f390375fb38f90 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.48.0-hee588c1_1.conda + sha256: 22853d289ef6ec8a5b20f1aa261895b06525439990d3b139f8bfd0b5c5e32a3a + md5: 3fa05c528d8a1e2a67bbf1e36f22d3bc depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -4157,30 +4142,30 @@ packages: arch: x86_64 platform: linux license: Unlicense - size: 876582 - timestamp: 1737123945341 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.48.0-h5eb1b54_0.conda - sha256: b4365ab7c74a2e6c0444eb950367fa3ca56a87c9921b2faa5ad032fe7a7df682 - md5: 1998946fa3ccf38a07b44a879b2227ae + size: 878223 + timestamp: 1737564987837 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.48.0-h5eb1b54_1.conda + sha256: 81dd9bf66c7f1d9064e007e2c787133100c406e7ca2de61dba9fb7b87372f255 + md5: 4f3a61fe206f20b27c385ee608bcdfda depends: - libgcc >=13 - libzlib >=1.3.1,<2.0a0 arch: aarch64 platform: linux license: Unlicense - size: 1044953 - timestamp: 1737123983895 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.48.0-h3f77e49_0.conda - sha256: b31169cf0ca7b6835baca4ab92d6cf2eee83b1a12a11b72f39521e8baf4d6acb - md5: 714719df4f49e30f9728956f240846ca + size: 1044879 + timestamp: 1737565049785 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.48.0-h3f77e49_1.conda + sha256: 17c06940cc2a13fd6a17effabd6881b1477db38b2cd3ee2571092d293d3fdd75 + md5: 4c55169502ecddf8077973a987d08f08 depends: - __osx >=11.0 - libzlib >=1.3.1,<2.0a0 arch: arm64 platform: osx license: Unlicense - size: 853163 - timestamp: 1737124192432 + size: 852831 + timestamp: 1737564996616 - conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hf672d98_0.conda sha256: 0407ac9fda2bb67e11e357066eff144c845801d00b5f664efbc48813af1e7bb9 md5: be2de152d8073ef1c01b7728475f2fe7 @@ -4365,9 +4350,9 @@ packages: license: HPND size: 370600 timestamp: 1734398863052 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.9.0-hb9d3cd8_1.conda - sha256: 9794e6388e780c3310d46f773bbc924d4053375c3fcdb07a704b57f4616db928 - md5: 1e936bd23d737aac62a18e9a1e7f8b18 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.10.0-h4c51ac1_0.conda + sha256: 8e41563ee963bf8ded06da45f4e70bf42f913cb3c2e79364eb3218deffa3cd74 + md5: aeccfff2806ae38430638ffbb4be9610 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -4375,30 +4360,30 @@ packages: platform: linux license: MIT license_family: MIT - size: 81500 - timestamp: 1732868419835 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.9.0-h86ecc28_1.conda - sha256: 37a1833c55f9945724cd4b3eb6a1469032cc754a1dd725f191c34154ad2ba7e4 - md5: 699f155da290be3a1a64c932c6728991 + size: 82745 + timestamp: 1737244366901 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.10.0-ha346350_0.conda + sha256: 9c333e07b76ae1ea2c882db764be52dc82f632be66d993a50b35ca9c5475074a + md5: c5166bcfb8348e8fc31ee16ec3981a5e depends: - libgcc >=13 arch: aarch64 platform: linux license: MIT license_family: MIT - size: 81526 - timestamp: 1732868466862 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.9.0-h5505292_1.conda - sha256: ea88f06e97ef8fa2490f7594f8885bb542577226edf8abba3144302d951a53c2 - md5: f777470d31c78cd0abe1903a2fda436f + size: 82679 + timestamp: 1737329054400 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.10.0-hda25de7_0.conda + sha256: aca3ef31d3dff5cefd3790742a5ee6548f1cf0201d0e8cee08b01da503484eb6 + md5: 5f741aed1d8d393586a5fdcaaa87f45c depends: - __osx >=11.0 arch: arm64 platform: osx license: MIT license_family: MIT - size: 83000 - timestamp: 1732868631531 + size: 83628 + timestamp: 1737244450097 - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda sha256: 787eb542f055a2b3de553614b25f09eefb0a0931b0c87dbcce6efdfd92f04f18 md5: 40b61aab5c7ba9ff276c41cfffe6b80b @@ -4752,47 +4737,47 @@ packages: license_family: BSD size: 24976 timestamp: 1733219849253 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011705-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025012205-release.conda noarch: python - sha256: 15578c7bc78001d3882c3b9af9d7d8bf3566c68ae133870038be055c8dfd90e9 - md5: 7e6c35d82044e8d31e9327e7d90bfb2b + sha256: 63e2ce51c01fdb5a73f62ea5f862acea5946f45d6b6bd63dafc78d242822e1b7 + md5: 5289b5be19bf0f500e1a06f44d816343 depends: - - max-core ==25.1.0.dev2025011705 release - - max-python >=25.1.0.dev2025011705,<26.0a0 - - mojo-jupyter ==25.1.0.dev2025011705 release - - mblack ==25.1.0.dev2025011705 release + - max-core ==25.1.0.dev2025012205 release + - max-python >=25.1.0.dev2025012205,<26.0a0 + - mojo-jupyter ==25.1.0.dev2025012205 release + - mblack ==25.1.0.dev2025012205 release license: LicenseRef-Modular-Proprietary - size: 9920 - timestamp: 1737091778690 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025011705-release.conda - sha256: 3e39d779710559206129052c64ac530b9d262288f75812ba07c3e3e395a0e18e - md5: 5575de33b0503143e635ade746f057c3 + size: 9919 + timestamp: 1737524122346 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025012205-release.conda + sha256: 061e7c8aba735fd2d15aca623c2f81452723bc0a5ab1e5a63af1761a9eaba9ef + md5: 2d8a82ff460cd4e03382a9151a8cf8d8 depends: - - mblack ==25.1.0.dev2025011705 release + - mblack ==25.1.0.dev2025012205 release license: LicenseRef-Modular-Proprietary - size: 244764907 - timestamp: 1737091186388 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025011705-release.conda - sha256: a9e7747e7cb7ff01dc58f4c7f5772d2b4483693dd200c88653b1ec2dda46bc8b - md5: a9b13b577fb1bcc14b330f5a4185023c + size: 242139658 + timestamp: 1737523134733 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025012205-release.conda + sha256: eade442118da29d8b42289e6859699b4faafcf51d02189729259a2e7a97a0dcc + md5: 8e0412932905d3a4decf17acd50899ce depends: - - mblack ==25.1.0.dev2025011705 release + - mblack ==25.1.0.dev2025012205 release license: LicenseRef-Modular-Proprietary - size: 247240781 - timestamp: 1737091778688 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025011705-release.conda - sha256: 9369b738945ef783af1e4caf2676bd6a299ff86e4ef9504e7a5ee69841fffa01 - md5: c4397350b325ae5a0e07f61e483fc3e5 + size: 244683388 + timestamp: 1737524122344 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025012205-release.conda + sha256: b5ccec88293901182a43d7f407d04b522b729cefaab066788496adec5bd3f2d2 + md5: bd5da5f25bd5151b4b691c34acdbeff0 depends: - - mblack ==25.1.0.dev2025011705 release + - mblack ==25.1.0.dev2025012205 release license: LicenseRef-Modular-Proprietary - size: 206615275 - timestamp: 1737092643231 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025011705-3.11release.conda - sha256: 1579f2f7ef96eb56ad294507a1d65cab236a45170d1f8e165ace9a3beba22514 - md5: 18a9d8cfc990a13b024167be3a96b06c + size: 203820478 + timestamp: 1737523349069 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025012205-3.11release.conda + sha256: 0c2ab97eb372485cc417d0f0c11957185d3b949248f7d609c1baf88f071590cd + md5: ba7c1a51993502b7553221dad3e8a577 depends: - - max-core ==25.1.0.dev2025011705 release + - max-core ==25.1.0.dev2025012205 release - python 3.11.* - fastapi - httpx @@ -4813,13 +4798,13 @@ packages: - uvicorn - python_abi 3.11.* *_cp311 license: LicenseRef-Modular-Proprietary - size: 124607308 - timestamp: 1737091186395 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025011705-3.11release.conda - sha256: 6036dd2cdac03ac625cd5395bf5c60e013c45c04c8d3daa386d20609a5472c81 - md5: 87e3800f4237db30865cf5e28d42da1c + size: 119869857 + timestamp: 1737523134740 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025012205-3.11release.conda + sha256: b02a407bb5e222d057a5687b746555d1975c6dd03c312e96568d61eee853cdb4 + md5: 9e340b823730a31174d71922223702f5 depends: - - max-core ==25.1.0.dev2025011705 release + - max-core ==25.1.0.dev2025012205 release - python 3.11.* - fastapi - httpx @@ -4840,13 +4825,13 @@ packages: - uvicorn - python_abi 3.11.* *_cp311 license: LicenseRef-Modular-Proprietary - size: 127402633 - timestamp: 1737091778695 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025011705-3.11release.conda - sha256: 71d6321e9296dbc390f118e2ad1056601c94076ff33e5f48c72e27b86052aa07 - md5: 40d60b1a7730858a15b26a6ce3e68dc5 + size: 122290081 + timestamp: 1737524122352 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025012205-3.11release.conda + sha256: 2ef65b36ad96d44a56e0aa58b40c3888bf96b00c35c3ac2afbcf480dfd42df84 + md5: c7392785a086eb6c142179c2bc45a174 depends: - - max-core ==25.1.0.dev2025011705 release + - max-core ==25.1.0.dev2025012205 release - python 3.11.* - fastapi - httpx @@ -4867,12 +4852,12 @@ packages: - uvicorn - python_abi 3.11.* *_cp311 license: LicenseRef-Modular-Proprietary - size: 110519320 - timestamp: 1737092643233 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011705-release.conda + size: 105232809 + timestamp: 1737523349071 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012205-release.conda noarch: python - sha256: 180bbe7d8b76c5d0f453b72f81fae10522b7a98a31e6fbeff542dbb31bb9b613 - md5: 680622d3117019e99ddc173efab357c7 + sha256: 31bce03569c241ade0a344f1fe1a683f928fe367ae57147b3e316783631822fe + md5: c54b5f7d0d777b8995e38978d8626ffc depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -4882,8 +4867,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130807 - timestamp: 1737091778695 + size: 130797 + timestamp: 1737524122352 - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda sha256: 78c1bbe1723449c52b7a9df1af2ee5f005209f67e40b6e1d3c7619127c43b1c7 md5: 592132998493b3ff25fd7479396e8351 @@ -4893,18 +4878,18 @@ packages: license_family: MIT size: 14465 timestamp: 1733255681319 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011705-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025012205-release.conda noarch: python - sha256: eab543a5c31c091b3d042980d068a950c51905d14a18532710f9be94ba88ba5d - md5: eea061b963a95002a8740d4b4f506d44 + sha256: 78e2818c9d17321c5fe73f9dca3d7a9c51ad989c00f8ea9721deb94a4f03800e + md5: ca3c9282adb4a04dbd02f3ab8e73445c depends: - - max-core ==25.1.0.dev2025011705 release + - max-core ==25.1.0.dev2025012205 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22929 - timestamp: 1737091778696 + size: 22925 + timestamp: 1737524122353 - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py311h2dc5d0c_2.conda sha256: afaab7a028281d8b5336db2b994fd3f9694862b6ca372c079dc4e84ad768c20a md5: bb8ca118919836624d920b4c44383a15 @@ -5624,82 +5609,82 @@ packages: license_family: MIT size: 8381 timestamp: 1726802424786 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-18.1.0-py311h38be061_0.conda - sha256: 9cfd158a1bb76c4af1a51237a5c5db4a36b2e83bad625ddf6c2b65ee232c16ba - md5: 47b8624012486e05e66f6acf7267aa22 - depends: - - libarrow-acero 18.1.0.* - - libarrow-dataset 18.1.0.* - - libarrow-substrait 18.1.0.* - - libparquet 18.1.0.* - - pyarrow-core 18.1.0 *_0_* +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-19.0.0-py311h38be061_0.conda + sha256: a9ce1120e916ac00c0d939239a8e37869706424b093cd7bc77fac15da4026a7b + md5: 7c025ec9f61c9a879bbd04fa0b6fe665 + depends: + - libarrow-acero 19.0.0.* + - libarrow-dataset 19.0.0.* + - libarrow-substrait 19.0.0.* + - libparquet 19.0.0.* + - pyarrow-core 19.0.0 *_0_* - python >=3.11,<3.12.0a0 - python_abi 3.11.* *_cp311 arch: x86_64 platform: linux license: Apache-2.0 license_family: APACHE - size: 25199 - timestamp: 1732610760700 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-18.1.0-py311hfecb2dc_0.conda - sha256: 2af68c0d11cf480a043b213eb4d1e0908f3edff25dc418b9c55f1002f46dc45b - md5: b66ff73d40f84cca2d7a4f755b21d956 - depends: - - libarrow-acero 18.1.0.* - - libarrow-dataset 18.1.0.* - - libarrow-substrait 18.1.0.* - - libparquet 18.1.0.* - - pyarrow-core 18.1.0 *_0_* + size: 25288 + timestamp: 1737128217855 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-19.0.0-py311hfecb2dc_0.conda + sha256: b8a11babac0cad24e6cabff3c916588c9c23d82fda04da5d887fa64c9bc601e0 + md5: 06aee69f724f9cec34168b5d2b4d50a1 + depends: + - libarrow-acero 19.0.0.* + - libarrow-dataset 19.0.0.* + - libarrow-substrait 19.0.0.* + - libparquet 19.0.0.* + - pyarrow-core 19.0.0 *_0_* - python >=3.11,<3.12.0a0 - python_abi 3.11.* *_cp311 arch: aarch64 platform: linux license: Apache-2.0 license_family: APACHE - size: 25373 - timestamp: 1732611450659 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-18.1.0-py311ha1ab1f8_0.conda - sha256: c93f3ede66be0502b5b9afc5bc3fde50d6f8c3863d29b138ff5f536a116457f3 - md5: 7a3b822fa6abb937651bee20878f087a - depends: - - libarrow-acero 18.1.0.* - - libarrow-dataset 18.1.0.* - - libarrow-substrait 18.1.0.* - - libparquet 18.1.0.* - - pyarrow-core 18.1.0 *_0_* + size: 25471 + timestamp: 1737128750973 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-19.0.0-py311ha1ab1f8_0.conda + sha256: ea05d450aad30d57cc13961bef1053c37e3157e399b35f17caf91899da6afb42 + md5: 8638cb5d912482302e58f47975b2b0f8 + depends: + - libarrow-acero 19.0.0.* + - libarrow-dataset 19.0.0.* + - libarrow-substrait 19.0.0.* + - libparquet 19.0.0.* + - pyarrow-core 19.0.0 *_0_* - python >=3.11,<3.12.0a0 - python_abi 3.11.* *_cp311 arch: arm64 platform: osx license: Apache-2.0 license_family: APACHE - size: 25322 - timestamp: 1732611121491 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-18.1.0-py311h4854187_0_cpu.conda - sha256: db147a0cc22b55ea3c35553b39336eb0392c33371f6efd7f9fb4efed2b728e34 - md5: 830a64ee7a65e588c7ea615be84db2e3 + size: 25396 + timestamp: 1737128390423 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-19.0.0-py311h4854187_0_cpu.conda + sha256: 0f6b9936c1dffb498412dd9ed90f6470fe6fb7db59f560e815a253f0a7e8b263 + md5: c36547523780efe647af301323cf28c8 depends: - __glibc >=2.17,<3.0.a0 - - libarrow 18.1.0.* *cpu + - libarrow 19.0.0.* *cpu - libgcc >=13 - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - python >=3.11,<3.12.0a0 - python_abi 3.11.* *_cp311 constrains: - - numpy >=1.21,<3 - apache-arrow-proc =*=cpu + - numpy >=1.21,<3 arch: x86_64 platform: linux license: Apache-2.0 license_family: APACHE - size: 4562010 - timestamp: 1732610600424 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-18.1.0-py311ha6d2531_0_cpu.conda - sha256: 3187321dc45106c2c87e5a70ab94ecbc0633f5b43caabcf173f4d372e5f6d8d8 - md5: 8cddcf0bb4b3e674ae6bbdda5266693f + size: 5766113 + timestamp: 1737128187299 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-19.0.0-py311ha6d2531_0_cpu.conda + sha256: 5a07866e4716e6f6d39ff0d072f6c89e17cd8b99134533d3459c44b104794d6d + md5: 8626be7cb2437a6d418af4cb656da172 depends: - - libarrow 18.1.0.* *cpu + - libarrow 19.0.0.* *cpu - libgcc >=13 - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 @@ -5713,28 +5698,28 @@ packages: platform: linux license: Apache-2.0 license_family: APACHE - size: 4484447 - timestamp: 1732610567027 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-18.1.0-py311he04fa90_0_cpu.conda - sha256: 4563e2d4f41b3874b89e8e2bdebf42588c1c819bd050ae858200f60e30bae860 - md5: 09b4a27f615d22f194466d8c274ef13e + size: 5123473 + timestamp: 1737128388324 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-19.0.0-py311he04fa90_0_cpu.conda + sha256: e1ea35a0a1dff0763c683b68f3d90978d9c60377a68e86d18cb38ff1aebac054 + md5: a3f7720275193baad2e0c566f48ac485 depends: - __osx >=11.0 - - libarrow 18.1.0.* *cpu + - libarrow 19.0.0.* *cpu - libcxx >=18 - libzlib >=1.3.1,<2.0a0 - python >=3.11,<3.12.0a0 - python >=3.11,<3.12.0a0 *_cpython - python_abi 3.11.* *_cp311 constrains: - - numpy >=1.21,<3 - apache-arrow-proc =*=cpu + - numpy >=1.21,<3 arch: arm64 platform: osx license: Apache-2.0 license_family: APACHE - size: 3974075 - timestamp: 1732611073316 + size: 4069544 + timestamp: 1737128317188 - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda sha256: 79db7928d13fab2d892592223d7570f5061c192f27b9febd1a418427b719acc6 md5: 12c566707c80111f9799308d9e265aef @@ -5999,15 +5984,14 @@ packages: license_family: Apache size: 27913 timestamp: 1734420869885 -- conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_1.conda - sha256: 57c9a02ec25926fb48edca59b9ede107823e5d5c473b94a0e05cc0b9a193a642 - md5: c0def296b2f6d2dd7b030c2a7f66bb1f +- conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.1-pyhd8ed1ab_0.conda + sha256: 1597d6055d34e709ab8915091973552a0b8764c8032ede07c4e99670da029629 + md5: 392c91c42edd569a7ec99ed8648f597a depends: - python >=3.9 license: Apache-2.0 - license_family: APACHE - size: 142235 - timestamp: 1733235414217 + size: 143794 + timestamp: 1737541204030 - conda: https://conda.anaconda.org/conda-forge/linux-64/python-xxhash-3.5.0-py311h9ecbd09_1.conda sha256: 77d1b380b672cdcb9b0b79b9d37b7617014219246d26462f92fae0e40fa72d05 md5: b1796d741ca619dbacb79917b20e5a05 @@ -6097,9 +6081,9 @@ packages: license_family: MIT size: 188538 timestamp: 1706886944988 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py311h9ecbd09_1.conda - sha256: e721e5ff389a7b2135917c04b27391be3d3382e261bb60a369b1620655365c3d - md5: abeb54d40f439b86f75ea57045ab8496 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py311h2dc5d0c_2.conda + sha256: d107ad62ed5c62764fba9400f2c423d89adf917d687c7f2e56c3bfed605fb5b3 + md5: 014417753f948da1f70d132b2de573be depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -6110,11 +6094,11 @@ packages: platform: linux license: MIT license_family: MIT - size: 212644 - timestamp: 1725456264282 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyyaml-6.0.2-py311ha879c10_1.conda - sha256: c0f373c2944cf18da2cec19bae76284ef54cef44b3925c249d53821e4021d59a - md5: ad89d09994540880f297259742a8428a + size: 213136 + timestamp: 1737454846598 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyyaml-6.0.2-py311h58d527c_2.conda + sha256: b7eb3696fae7e3ae66d523f422fc4757b1842b23f022ad5d0c94209f75c258b2 + md5: 01b93dc85ced3be09926e04498cbd260 depends: - libgcc >=13 - python >=3.11,<3.12.0a0 @@ -6125,11 +6109,11 @@ packages: platform: linux license: MIT license_family: MIT - size: 205817 - timestamp: 1725456351893 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py311h460d6c5_1.conda - sha256: 9ae182eef4e96a7c2f46cc9add19496276612663e17429500432631dce31a831 - md5: d32590e7bd388f18b036c6fc402a0cb1 + size: 206194 + timestamp: 1737454848998 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py311h4921393_2.conda + sha256: 2af6006c9f692742181f4aa2e0656eb112981ccb0b420b899d3dd42c881bd72f + md5: 250b2ee8777221153fd2de9c279a7efa depends: - __osx >=11.0 - python >=3.11,<3.12.0a0 @@ -6140,8 +6124,8 @@ packages: platform: osx license: MIT license_family: MIT - size: 192321 - timestamp: 1725456528007 + size: 196951 + timestamp: 1737454935552 - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.0-py311h7deb3e3_3.conda sha256: 3fdef7b3c43474b7225868776a373289a8fd92787ffdf8bed11cf7f39b4ac741 md5: e0897de1d8979a3bb20ef031ae1f7d28 @@ -6342,9 +6326,9 @@ packages: license_family: MIT size: 17357 timestamp: 1733750834072 -- conda: https://conda.anaconda.org/conda-forge/linux-64/s2n-1.5.10-hb5b8611_0.conda - sha256: f6d451821fddc26b93f45e9313e1ea15e09e5ef049d4e137413a5225d2a5dfba - md5: 999f3673f2a011f59287f2969e3749e4 +- conda: https://conda.anaconda.org/conda-forge/linux-64/s2n-1.5.11-h072c03f_0.conda + sha256: cfdd98c8f9a1e5b6f9abce5dac6d590cc9fe541a08466c9e4a26f90e00b569e3 + md5: 5e8060d52f676a40edef0006a75c718f depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -6353,11 +6337,11 @@ packages: platform: linux license: Apache-2.0 license_family: Apache - size: 355142 - timestamp: 1734415467047 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/s2n-1.5.10-h5df210e_0.conda - sha256: b5e7a9f4b7b1ec5c5c3661e2defc8b47fab543b05cad6fec78739d8007612464 - md5: 3d3979efcc0f44f3f0cef3de03b296cc + size: 356213 + timestamp: 1737146304079 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/s2n-1.5.11-h3caee7a_0.conda + sha256: 5a7ae66f96be24c3b2007139b6c3701ab015b4b4eb4eccfdd07be97710243a47 + md5: 1517c0518f8a06a48a15f41d94252874 depends: - libgcc >=13 - openssl >=3.4.0,<4.0a0 @@ -6365,8 +6349,8 @@ packages: platform: linux license: Apache-2.0 license_family: Apache - size: 353450 - timestamp: 1734415474615 + size: 352811 + timestamp: 1737146319512 - conda: https://conda.anaconda.org/conda-forge/linux-64/safetensors-0.5.2-py311h9e33e62_0.conda sha256: 44cd1d3def08f2aaad270263f08a07c2237fb38f2de40a26d1d23a3b9f01e542 md5: 167fe161b7ba7c613676e67eb5e81335 @@ -6651,9 +6635,9 @@ packages: license_family: BSD size: 110051 timestamp: 1733367480074 -- conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.48.0-pyhd8ed1ab_0.conda - sha256: c8dd6d69e4ef67c7d507dec2be4b6964f6ddbe1ce35a822ddf4089505d702f33 - md5: 2c57d4af7b8952484962b40a59cf1537 +- conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.48.1-pyhd8ed1ab_0.conda + sha256: 92fc16e2449fc81f516d31630fd18c3f33b95bc0c069655a3c0042fbd11a09a4 + md5: 08f62b2c92d1fa610896fc7b16b05031 depends: - datasets !=2.5.0 - filelock @@ -6669,8 +6653,8 @@ packages: - tqdm >=4.27 license: Apache-2.0 license_family: APACHE - size: 3408277 - timestamp: 1736534112195 + size: 3405362 + timestamp: 1737429408302 - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda sha256: ef695490e895c2ad552c77ec497b899b09fd4ad4ab07edcf5649f5994cf92a35 md5: 170a0398946d8f5b454e592672b6fc20 @@ -6867,9 +6851,9 @@ packages: license_family: MIT size: 365948 timestamp: 1736550860802 -- conda: https://conda.anaconda.org/conda-forge/linux-64/websockets-14.1-py311h9ecbd09_0.conda - sha256: 38f67b5f2cd27da85198a973cc6113cffe1069190c69f5555fcaa9ed8f8c30bd - md5: 99cff696db893d6f22a379a90cbe90df +- conda: https://conda.anaconda.org/conda-forge/linux-64/websockets-14.2-py311h9ecbd09_0.conda + sha256: ab387485cb6e68b519c35e1d03751321dd90db21b0ab184eef064bb7b37102a5 + md5: 39b3a87c8475ad9e3f05f1f2d1a2f115 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -6879,11 +6863,11 @@ packages: platform: linux license: BSD-3-Clause license_family: BSD - size: 241556 - timestamp: 1731498753625 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/websockets-14.1-py311ha879c10_0.conda - sha256: 1a05cabbf96c453627a4950c7e4983025db1499e72fba9e4d0de1b65e23ba7b1 - md5: 1c289239f321e075aee07035087652ce + size: 242047 + timestamp: 1737358342146 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/websockets-14.2-py311ha879c10_0.conda + sha256: 74800c9718c6a63746a4b8cf7c701a41a530ebd43a807ce182533c8eea108aa0 + md5: 503931f5ee692f0962e7a2862d33109a depends: - libgcc >=13 - python >=3.11,<3.12.0a0 @@ -6893,11 +6877,11 @@ packages: platform: linux license: BSD-3-Clause license_family: BSD - size: 241161 - timestamp: 1731498790453 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/websockets-14.1-py311h917b07b_0.conda - sha256: dd645f8c0b89df0c56a15a21504057d5e03ec9e782127722172ade4e1d93d8a5 - md5: c0f90c40248823402e4bdf335fab7cde + size: 243511 + timestamp: 1737358392466 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/websockets-14.2-py311h917b07b_0.conda + sha256: e1a37eb1359ba7df117246251bbfd816ef77e8c756ef9e104ff741206d93bbc3 + md5: c240594ffe865b94aa05c2a8c3fe02d0 depends: - __osx >=11.0 - python >=3.11,<3.12.0a0 @@ -6907,8 +6891,8 @@ packages: platform: osx license: BSD-3-Clause license_family: BSD - size: 240817 - timestamp: 1731498829166 + size: 244425 + timestamp: 1737358465982 - conda: https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.17.2-py311h9ecbd09_0.conda sha256: e383de6512e65b5a227e7b0e1a34ffc441484044096a23ca4d3b6eb53a64d261 md5: c4bb961f5a2020837fe3f7f30fadc2e1 @@ -7081,9 +7065,9 @@ packages: license_family: MIT size: 88016 timestamp: 1641347076660 -- conda: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.18.3-py311h9ecbd09_0.conda - sha256: 4af34cbcf4dda72aad779c8a12eb508aee6f98d0523c26174639a75ae31df180 - md5: 385d54815a5d2e74e68374d77446030b +- conda: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.18.3-py311h2dc5d0c_1.conda + sha256: 521ab90aac56c63088023bba4b960c25b7975191c6d9a10c7fb23eb892351e84 + md5: adb884966b6f9a43642ee3f67d54e01d depends: - __glibc >=2.17,<3.0.a0 - idna >=2.0 @@ -7096,11 +7080,11 @@ packages: platform: linux license: Apache-2.0 license_family: Apache - size: 153749 - timestamp: 1733428888714 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.18.3-py311ha879c10_0.conda - sha256: c60d0e75b147dc836b497b2f7c773a2b2998821056614eead6aae84fbedc7416 - md5: 049bc4ea1dd2a1db3a752fadbda1b55c + size: 153704 + timestamp: 1737576099033 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.18.3-py311h58d527c_1.conda + sha256: 3564ce225c76066be23f1fa06bfb90b40d275a96c0105f375ebdaf3d1f9cfbd6 + md5: d930ce8a57811fffe9484312767b313c depends: - idna >=2.0 - libgcc >=13 @@ -7113,11 +7097,11 @@ packages: platform: linux license: Apache-2.0 license_family: Apache - size: 151968 - timestamp: 1733429000649 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.18.3-py311h917b07b_0.conda - sha256: 2df31b9adcd55b29985935d0a23ae6069808e319c2c24bbe212cbd3f3dca71ed - md5: 134c0091a508239d35505d9ac74d4c0f + size: 152607 + timestamp: 1737576002155 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.18.3-py311h4921393_1.conda + sha256: 7afae1570bc6e285181787849bd99cb587c060f6629ca36c3ee5eef125dfe4ec + md5: 9b377ec67d9ec07914db1c70f45be9e7 depends: - __osx >=11.0 - idna >=2.0 @@ -7130,8 +7114,8 @@ packages: platform: osx license: Apache-2.0 license_family: Apache - size: 144071 - timestamp: 1733429148299 + size: 145896 + timestamp: 1737576068070 - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda sha256: a4dc72c96848f764bb5a5176aa93dd1e9b9e52804137b99daeebba277b31ea10 md5: 3947a35e916fcc6b9825449affbf4214 diff --git a/examples/notebooks/magic.lock b/examples/notebooks/magic.lock index 84cdcbd099..800a515476 100644 --- a/examples/notebooks/magic.lock +++ b/examples/notebooks/magic.lock @@ -19,19 +19,19 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.3.0-pyh71513ae_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-h205f482_16.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.1-h205f482_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.1-h1a47875_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.10.6-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.3.0-h4e1184b_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.0-h7959bf6_11.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.2-hefd7a92_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-h831e299_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-h173a860_6.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h11f4f37_12.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.7-hf454442_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.9-he1b24dc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.2-h4e1184b_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-h4e1184b_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.8-h8570fcd_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-h7001638_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.9-he0e7f3f_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-h4d475cb_6.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.10.0-h113e628_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.13.0-h3cf044e_1.conda @@ -40,8 +40,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.16.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/backoff-2.2.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.12.3-pyha770c72_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyhd8ed1ab_3.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.2.0-hd8ed1ab_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyh29332c3_4.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.2.0-h82add2a_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py312h2ec8cdc_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.4-hb9d3cd8_0.conda @@ -55,7 +55,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.11-py312h2ec8cdc_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.12-py312h2ec8cdc_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.1.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhd8ed1ab_1.conda @@ -68,7 +68,7 @@ environments: - 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.7-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/filelock-3.17.0-pyhd8ed1ab_0.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 - conda: https://conda.anaconda.org/conda-forge/linux-64/frozenlist-1.5.0-py312h66e93f0_0.conda @@ -112,10 +112,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-h9d9f30d_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-hcb10f89_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-hcb10f89_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-h08228c5_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-19.0.0-hce2e470_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-19.0.0-hcb10f89_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-19.0.0-hcb10f89_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-19.0.0-h08228c5_3_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-26_linux64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hb9d3cd8_2.conda @@ -144,18 +144,18 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.28-pthreads_h94d23a6_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-h081d1f1_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-19.0.0-h081d1f1_3_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.45-h943b412_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.48.0-hee588c1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.48.0-hee588c1_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hf672d98_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-hc0a3c3a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libthrift-0.21.0-h0e7cc3e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hd9ff511_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.9.0-hb9d3cd8_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.10.0-h4c51ac1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.50.0-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.5.0-h851e524_0.conda @@ -167,13 +167,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/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-25.1.0.dev2025011705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025011705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025011705-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025012205-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025012205-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025012205-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012205-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.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025012205-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 @@ -207,15 +207,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.48-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.50-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.1-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/protobuf-5.28.3-py312h2ec8cdc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/psutil-6.1.1-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-18.1.0-py312h7900ff3_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-18.1.0-py312h01725c0_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-19.0.0-py312h7900ff3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-19.0.0-py312h01725c0_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.5-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.27.2-py312h12e396e_0.conda @@ -229,11 +229,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.20-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python-xxhash-3.5.0-py312h66e93f0_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py312h66e93f0_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py312h178313f_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.0-py312hbf22597_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/re2-2024.07.02-h9925aae_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda @@ -245,7 +245,7 @@ environments: - 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.10-hb5b8611_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/s2n-1.5.11-h072c03f_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/safetensors-0.5.2-py312h12e396e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh0d859eb_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.8.0-pyhff2d567_0.conda @@ -265,7 +265,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.48.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.48.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda @@ -284,14 +284,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.8.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/websockets-14.1-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/websockets-14.2-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wheel-0.45.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.17.2-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xxhash-0.8.2-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.18.3-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.18.3-py312h178313f_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312hef9b889_1.conda @@ -309,19 +309,19 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.3.0-pyh71513ae_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-hb7ec8d5_16.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.1-hb7ec8d5_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.1-h740c5af_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-common-0.10.6-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-compression-0.3.0-h0f0193d_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-event-stream-0.5.0-hcbd8f92_11.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.2-h3df160d_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-h1a307af_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-hfd5ba81_6.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h5f50e26_12.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.7-h2080895_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.9-h05b070f_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.2-h0f0193d_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h0f0193d_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.8-h92ee776_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h90ecb4a_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.9-hab3ce66_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h88461e4_6.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-core-cpp-1.14.0-h1887c18_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-identity-cpp-1.10.0-h47b0b28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-blobs-cpp-12.13.0-h185ecfd_1.conda @@ -330,8 +330,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.16.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/backoff-2.2.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.12.3-pyha770c72_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyhd8ed1ab_3.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.2.0-hd8ed1ab_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyh29332c3_4.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.2.0-h82add2a_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/brotli-python-1.1.0-py312h6f74592_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h68df207_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/c-ares-1.34.4-h86ecc28_0.conda @@ -345,7 +345,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/debugpy-1.8.11-py312h6f74592_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/debugpy-1.8.12-py312h6f74592_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.1.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhd8ed1ab_1.conda @@ -358,7 +358,7 @@ environments: - 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.7-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/filelock-3.17.0-pyhd8ed1ab_0.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 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/frozenlist-1.5.0-py312hb2c0f52_0.conda @@ -403,10 +403,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.0.0-h4de3ea5_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h18dbdb1_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-h47f80e1_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h3b568fd_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h3b568fd_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h1e9d426_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-h4065667_12_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h3b568fd_12_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h3b568fd_12_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h1e9d426_12_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-26_linuxaarch64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlicommon-1.1.0-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlidec-1.1.0-h86ecc28_2.conda @@ -425,8 +425,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-2.33.0-hccf9d24_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-storage-2.33.0-hb9b2b65_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-2.34.0-hccf9d24_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-storage-2.34.0-hb9b2b65_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgrpc-1.67.1-hf7ccdd3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libiconv-1.17-h31becfc_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libjpeg-turbo-3.0.0-h31becfc_1.conda @@ -435,18 +435,18 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnghttp2-1.64.0-hc8609a4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.28-pthreads_h9d3fd7e_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-hfc78867_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-hfc78867_12_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.45-hec79eb8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.3-h44a3b7b_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.20-h68df207_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.48.0-h5eb1b54_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.48.0-h5eb1b54_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libssh2-1.11.1-ha41c0db_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libthrift-0.21.0-h154c74f_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.0-h88f7998_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.9.0-h86ecc28_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.10.0-ha346350_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuv-1.50.0-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libwebp-base-1.5.0-h0886dbf_0.conda @@ -458,13 +458,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/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-25.1.0.dev2025011705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025011705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025011705-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025012205-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025012205-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025012205-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012205-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.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025012205-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 @@ -498,7 +498,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.48-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.50-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.2.1-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/protobuf-5.28.3-py312h6f74592_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/psutil-6.1.1-py312hb2c0f52_0.conda @@ -520,11 +520,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.20-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-xxhash-3.5.0-py312h52516f5_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.12-5_cp312.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyyaml-6.0.2-py312hb2c0f52_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyyaml-6.0.2-py312hcc812fe_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyzmq-26.2.0-py312h2427ae1_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/re2-2024.07.02-haa97905_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8fc344f_1.conda @@ -536,7 +536,7 @@ environments: - 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.10-h5df210e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/s2n-1.5.11-h3caee7a_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/safetensors-0.5.2-py312h8cbf658_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh0d859eb_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.8.0-pyhff2d567_0.conda @@ -556,7 +556,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py312h52516f5_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.48.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.48.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda @@ -575,14 +575,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.8.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/websockets-14.1-py312hb2c0f52_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/websockets-14.2-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wheel-0.45.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/wrapt-1.17.2-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxau-1.0.12-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxdmcp-1.1.5-h57736b2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xxhash-0.8.2-h31becfc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yaml-0.2.5-hf897c2e_2.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.18.3-py312hb2c0f52_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.18.3-py312hcc812fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zeromq-4.3.5-h5efb499_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstandard-0.23.0-py312hb698573_1.conda @@ -600,19 +600,19 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.3.0-pyh71513ae_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-hfc2798a_16.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.1-hfc2798a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.1-hc8a0bd2_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.10.6-h5505292_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-compression-0.3.0-hc8a0bd2_5.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.0-h54f970a_11.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.2-h96aa502_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-haba67d1_5.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-haba67d1_6.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h24f418c_12.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.7-h1be5864_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.9-hf37e03c_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.2-hc8a0bd2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-hc8a0bd2_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.8-h23176ea_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-h794939a_5.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.9-ha81f72f_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-h0e5014b_6.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.14.0-hd50102c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.10.0-hc602bab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-blobs-cpp-12.13.0-h7585a09_1.conda @@ -621,8 +621,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.16.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/backoff-2.2.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.12.3-pyha770c72_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyhd8ed1ab_3.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.2.0-hd8ed1ab_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyh29332c3_4.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.2.0-h82add2a_4.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py312hde4cb15_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.4-h5505292_0.conda @@ -636,7 +636,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/debugpy-1.8.11-py312hd8f9ff3_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/debugpy-1.8.12-py312hd8f9ff3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.1.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhd8ed1ab_1.conda @@ -649,7 +649,7 @@ environments: - 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.7-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/filelock-3.17.0-pyhd8ed1ab_0.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 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/frozenlist-1.5.0-py312h0bf5046_0.conda @@ -692,10 +692,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.16-ha0e7c42_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_h07bc746_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-hf3eb8e5_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-hf07054f_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-hf07054f_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-h4239455_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-19.0.0-hd1aa4b5_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-19.0.0-hf07054f_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-19.0.0-hf07054f_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-19.0.0-h4239455_4_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-26_osxarm64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.1.0-hd74edd7_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.1.0-hd74edd7_2.conda @@ -712,8 +712,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-2.33.0-hdbe95d5_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-storage-2.33.0-h7081f7f_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-2.34.0-hdbe95d5_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-storage-2.34.0-h7081f7f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgrpc-1.67.1-h0a426d6_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.17-h0d3ecfb_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.0.0-hb547adb_1.conda @@ -721,16 +721,16 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.3-h39f12f2_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.64.0-h6d7220d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.28-openmp_hf332438_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-h636d7b7_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-19.0.0-h636d7b7_4_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.45-h3783ad8_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.3-h3bd63a1_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h07bc746_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.48.0-h3f77e49_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.48.0-h3f77e49_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.1-h9cc3647_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libthrift-0.21.0-h64651cc_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-h551f018_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.9.0-h5505292_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.10.0-hda25de7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libuv-1.50.0-h5505292_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.5.0-h2471fea_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxcb-1.17.0-hdb1d25a_0.conda @@ -741,13 +741,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-25.1.0.dev2025011705-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025011705-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025011705-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025012205-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025012205-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025012205-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012205-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.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025012205-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 @@ -781,15 +781,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.48-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.50-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.1-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/protobuf-5.28.3-py312hd8f9ff3_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/psutil-6.1.1-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pthread-stubs-0.4-hd74edd7_1002.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-18.1.0-py312h1f38498_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-18.1.0-py312hc40f475_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-19.0.0-py312h1f38498_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-19.0.0-py312hc40f475_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.5-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.27.2-py312hcd83bfe_0.conda @@ -805,11 +805,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.20-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-xxhash-3.5.0-py312h024a12e_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-5_cp312.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py312h024a12e_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py312h998013c_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.0-py312hf8a1cbd_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/re2-2024.07.02-h6589ca4_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h92ec313_1.conda @@ -840,7 +840,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.48.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.48.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda @@ -859,14 +859,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.8.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/websockets-14.1-py312hea69d52_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/websockets-14.2-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wheel-0.45.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/wrapt-1.17.2-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxau-1.0.12-h5505292_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxdmcp-1.1.5-hd74edd7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xxhash-0.8.2-hb547adb_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.18.3-py312hea69d52_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.18.3-py312h998013c_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py312h15fbf35_1.conda @@ -1125,9 +1125,9 @@ packages: license_family: MIT size: 56354 timestamp: 1734348889193 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-h205f482_16.conda - sha256: 0695c285b70385913dc7dce05888d3ad1378247b65273bdab509494a2f8f0eea - md5: b0815d37ab812ade9c07239da7c3c369 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.1-h205f482_0.conda + sha256: ebe5e33249f37f6bb481de99581ebdc92dbfcf1b6915609bcf3c9e78661d6352 + md5: 9c500858e88df50af3cc883d194de78a depends: - __glibc >=2.17,<3.0.a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 @@ -1140,11 +1140,11 @@ packages: platform: linux license: Apache-2.0 license_family: Apache - size: 107478 - timestamp: 1736592747413 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-hb7ec8d5_16.conda - sha256: 5a2a2691f2e0028e8549b97a340d7e6c502e0d54b7deba00fad505812663a98b - md5: 56f166780076db46c5e273988693d8a3 + size: 108111 + timestamp: 1737509831651 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.1-hb7ec8d5_0.conda + sha256: e1e6c9267a4d9af30b1d28c11a9041b17b7840ff83ef08614145a2a4f444f5b4 + md5: 2630f030652970a5531e492f6b2a6dd3 depends: - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.6,<0.10.7.0a0 @@ -1156,11 +1156,11 @@ packages: platform: linux license: Apache-2.0 license_family: Apache - size: 112264 - timestamp: 1736592695540 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-hfc2798a_16.conda - sha256: cdcd932332311db1b614289101b61e32cbae2478ba2bf85763aaf5a5cc7db6f6 - md5: 1e9a41d5296f50c08ae511d61fddef85 + size: 112658 + timestamp: 1737509863269 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.1-hfc2798a_0.conda + sha256: 5a60d196a585b25d1446fb973009e4e648e8d70beaa2793787243ede6da0fd9a + md5: 0abd67c0f7b60d50348fbb32fef50b65 depends: - __osx >=11.0 - aws-c-cal >=0.8.1,<0.8.2.0a0 @@ -1172,8 +1172,8 @@ packages: platform: osx license: Apache-2.0 license_family: Apache - size: 92547 - timestamp: 1736592866387 + size: 92562 + timestamp: 1737509877079 - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.1-h1a47875_3.conda sha256: 095ac824ea9303eff67e04090ae531d9eb33d2bf8f82eaade39b839c421e16e8 md5: 55a8561fdbbbd34f50f57d9be12ed084 @@ -1377,38 +1377,38 @@ packages: license_family: Apache size: 152983 timestamp: 1734008451473 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-h831e299_5.conda - sha256: 5920009b1c6f9a2bc131a36725251894e4b4773fce29c4b1065d4213ae337abe - md5: 80dd9f0ddf935290d1dc00ec75ff3023 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-h173a860_6.conda + sha256: 335d822eead0a097ffd23677a288e1f18ea22f47a92d4f877419debb93af0e81 + md5: 9a063178f1af0a898526cc24ba7be486 depends: - __glibc >=2.17,<3.0.a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.6,<0.10.7.0a0 - libgcc >=13 - - s2n >=1.5.10,<1.5.11.0a0 + - s2n >=1.5.11,<1.5.12.0a0 arch: x86_64 platform: linux license: Apache-2.0 license_family: Apache - size: 157864 - timestamp: 1734433578570 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-h1a307af_5.conda - sha256: 71f5bf891299f831dceaea12f926c393bf754569e5305387a88b77e1f94612d8 - md5: da8ab0f3eeac93449ec3d531ede92caa + size: 157263 + timestamp: 1737207617838 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-hfd5ba81_6.conda + sha256: d8adfde05cee11057d99c3802e84b2300430a7c7c3c9936165d1d4b25ef59d91 + md5: 4e6771b45cb2b035c62d023dbf0dc000 depends: - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.6,<0.10.7.0a0 - libgcc >=13 - - s2n >=1.5.10,<1.5.11.0a0 + - s2n >=1.5.11,<1.5.12.0a0 arch: aarch64 platform: linux license: Apache-2.0 license_family: Apache - size: 161889 - timestamp: 1734433686109 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-haba67d1_5.conda - sha256: c0a1a2b0750225ac3dc07fd258c88c2be866bf8ac67ba3d50bb4ecec852ff8ee - md5: 4c5ff4134e76426a75b8c548984fa933 + size: 160933 + timestamp: 1737207637279 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-haba67d1_6.conda + sha256: 73722dd175af78b6cbfa033066f0933351f5382a1a737f6c6d9b8cfa84022161 + md5: d02e8f40ff69562903e70a1c6c48b009 depends: - __osx >=11.0 - aws-c-cal >=0.8.1,<0.8.2.0a0 @@ -1417,8 +1417,8 @@ packages: platform: osx license: Apache-2.0 license_family: Apache - size: 135729 - timestamp: 1734433832730 + size: 136048 + timestamp: 1737207681224 - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h11f4f37_12.conda sha256: 512d3969426152d9d5fd886e27b13706122dc3fa90eb08c37b0d51a33d7bb14a md5: 96c3e0221fa2da97619ee82faa341a73 @@ -1462,12 +1462,12 @@ packages: license_family: Apache size: 134371 timestamp: 1734025379525 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.7-hf454442_0.conda - sha256: c2f205a7bf64c5f40eea373b3a0a7c363c9aa9246a13dd7f3d9c6a4434c4fe2d - md5: 947c82025693bebd557f782bb5d6b469 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.9-he1b24dc_1.conda + sha256: 15fbdedc56850f8be5be7a5bcaea1af09c97590e631c024ae089737fc932fc42 + md5: caafc32928a5f7f3f7ef67d287689144 depends: - __glibc >=2.17,<3.0.a0 - - aws-c-auth >=0.8.0,<0.8.1.0a0 + - aws-c-auth >=0.8.1,<0.8.2.0a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 @@ -1479,13 +1479,13 @@ packages: platform: linux license: Apache-2.0 license_family: Apache - size: 114156 - timestamp: 1734146123386 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.7-h2080895_0.conda - sha256: 20bc2dd60e6518d9b8215c2b652ab5c52ee8a997d3b9a5f69e2dabd28cbf26b2 - md5: ae223efa63fbb4262a2d85c3ab3bc4f5 + size: 115413 + timestamp: 1737558687616 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.9-h05b070f_1.conda + sha256: 9e7857fbc33eddc291fa09890ce468a92485d3e3e127bc00bbd1803e34121f84 + md5: e0a2869195f069db88b8932f5b00bee5 depends: - - aws-c-auth >=0.8.0,<0.8.1.0a0 + - aws-c-auth >=0.8.1,<0.8.2.0a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 @@ -1497,14 +1497,14 @@ packages: platform: linux license: Apache-2.0 license_family: Apache - size: 117641 - timestamp: 1734146239779 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.7-h1be5864_0.conda - sha256: 22966164d63808689fffd35945f57756c95337327e28099b5d77b29fc6a56ecc - md5: a37bba7acb62dd70492ee01eacca3b8f + size: 117875 + timestamp: 1737558720047 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.9-hf37e03c_1.conda + sha256: 92e8ca4eefcbbdf4189584c9410382884a06ed3030e5ecaac656dab8c95e6a80 + md5: de65f5e4ab5020103fe70a0eba9432a0 depends: - __osx >=11.0 - - aws-c-auth >=0.8.0,<0.8.1.0a0 + - aws-c-auth >=0.8.1,<0.8.2.0a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 @@ -1514,8 +1514,8 @@ packages: platform: osx license: Apache-2.0 license_family: Apache - size: 97598 - timestamp: 1734146239038 + size: 98731 + timestamp: 1737558731831 - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.2-h4e1184b_0.conda sha256: 0424e380c435ba03b5948d02e8c958866c4eee50ed29e57f99473a5f795a4cfc md5: dcd498d493818b776a77fbc242fbf8e4 @@ -1590,19 +1590,19 @@ packages: license_family: Apache size: 70186 timestamp: 1733994496998 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.8-h8570fcd_1.conda - sha256: ff8f08bc615d3ef6d970df80988200b3ecee76ecfa4885109cd82b30176cfda9 - md5: f21296b496cca1c1fa426b9a3b676e79 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.9-he0e7f3f_2.conda + sha256: c1930569713bd5231d48d885a5e3707ac917b428e8f08189d14064a2bb128adc + md5: 8a4e6fc8a3b285536202b5456a74a940 depends: - __glibc >=2.17,<3.0.a0 - - aws-c-auth >=0.8.0,<0.8.1.0a0 + - aws-c-auth >=0.8.1,<0.8.2.0a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - - aws-c-s3 >=0.7.7,<0.7.8.0a0 + - aws-c-s3 >=0.7.9,<0.7.10.0a0 - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 - libgcc >=13 - libstdcxx >=13 @@ -1610,20 +1610,20 @@ packages: platform: linux license: Apache-2.0 license_family: Apache - size: 354328 - timestamp: 1736598991291 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.8-h92ee776_1.conda - sha256: 114ac89d3936bf801dcbd488ba0b468c7e113a407cb1ee5898259a5202b7e750 - md5: 63546051b5687f793ae977c7994e1339 + size: 353222 + timestamp: 1737565463079 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.9-hab3ce66_2.conda + sha256: c3884fb10e0fd9be5c13256cabcda1afa9d2fcf8878c67214d02fc344509857d + md5: 875968ebffe992b68faf2caebbf32f02 depends: - - aws-c-auth >=0.8.0,<0.8.1.0a0 + - aws-c-auth >=0.8.1,<0.8.2.0a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - - aws-c-s3 >=0.7.7,<0.7.8.0a0 + - aws-c-s3 >=0.7.9,<0.7.10.0a0 - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 - libgcc >=13 - libstdcxx >=13 @@ -1631,38 +1631,38 @@ packages: platform: linux license: Apache-2.0 license_family: Apache - size: 284664 - timestamp: 1736598964131 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.8-h23176ea_1.conda - sha256: db6a31078bb82fb12044d7706239c003568273729f7ba4971c1479b7926ada82 - md5: 31fdd3ffb00f5472196fa95ef08087b7 + size: 283812 + timestamp: 1737565480034 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.9-ha81f72f_2.conda + sha256: ed5f1d19aad53787fdebe13db4709c97eae2092536cc55d3536eba320c4286e1 + md5: c9c034d3239bf25687ca4dd985007ecd depends: - __osx >=11.0 - - aws-c-auth >=0.8.0,<0.8.1.0a0 + - aws-c-auth >=0.8.1,<0.8.2.0a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - - aws-c-s3 >=0.7.7,<0.7.8.0a0 + - aws-c-s3 >=0.7.9,<0.7.10.0a0 - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 - libcxx >=18 arch: arm64 platform: osx license: Apache-2.0 license_family: Apache - size: 236269 - timestamp: 1736599024242 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-h7001638_5.conda - sha256: 849524b09865e84d6926aa814944cf71511aa4a00fffc5ad174c286d5dfac5f0 - md5: fc01d77a7f383b2915f276c73b7d0934 + size: 235976 + timestamp: 1737565563139 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-h4d475cb_6.conda + sha256: 2309d96d537b5c3810c6e9fbf5b6bb7e06ce907a609d172063ab504b2cc67f30 + md5: 6139e84bbb6fdb27ca49c2981613a5fa depends: - __glibc >=2.17,<3.0.a0 - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - - aws-crt-cpp >=0.29.8,<0.29.9.0a0 + - aws-crt-cpp >=0.29.9,<0.29.10.0a0 - libcurl >=8.11.1,<9.0a0 - libgcc >=13 - libstdcxx >=13 @@ -1672,16 +1672,16 @@ packages: platform: linux license: Apache-2.0 license_family: Apache - size: 3088636 - timestamp: 1736598504343 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h90ecb4a_5.conda - sha256: 9467acd0f2df74ea7472aebdfb8b5656a8d403abad2edbce9743d6e88c94fd10 - md5: 33f86f8de1d8cd40f8fe628dc0784437 + size: 3069914 + timestamp: 1737049585807 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h88461e4_6.conda + sha256: f97e071ffb87bc33923f798761ec6a854614ce193913d34d3248515d18357baa + md5: 0d7f1ee2e5572bf9d1fd78f0f2ab6f6b depends: - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - - aws-crt-cpp >=0.29.8,<0.29.9.0a0 + - aws-crt-cpp >=0.29.9,<0.29.10.0a0 - libcurl >=8.11.1,<9.0a0 - libgcc >=13 - libstdcxx >=13 @@ -1691,17 +1691,17 @@ packages: platform: linux license: Apache-2.0 license_family: Apache - size: 2925443 - timestamp: 1736598526637 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-h794939a_5.conda - sha256: 2b1e7d5a45e82604bfdb6de63c53cf0e9495f596cfd90e644a1e67910de7f91c - md5: a2374b4182bf5b2d08b2903393d0c487 + size: 2919798 + timestamp: 1737049659061 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-h0e5014b_6.conda + sha256: 8c21ce4692d1631b96adea099d7c2b905fc5d078db63bf754d85600dcf184651 + md5: a3b7b9a81d8c6a8f963f619d9e362c39 depends: - __osx >=11.0 - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - - aws-crt-cpp >=0.29.8,<0.29.9.0a0 + - aws-crt-cpp >=0.29.9,<0.29.10.0a0 - libcurl >=8.11.1,<9.0a0 - libcxx >=18 - libzlib >=1.3.1,<2.0a0 @@ -1710,8 +1710,8 @@ packages: platform: osx license: Apache-2.0 license_family: Apache - size: 2824168 - timestamp: 1736598935034 + size: 2834057 + timestamp: 1737126583846 - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda sha256: fe07debdb089a3db17f40a7f20d283d75284bb4fc269ef727b8ba6fc93f7cb5a md5: 0a8838771cc2e985cd295e01ae83baf1 @@ -1962,26 +1962,27 @@ packages: license_family: MIT size: 118042 timestamp: 1733230951790 -- conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyhd8ed1ab_3.conda - sha256: 9278622f54b6b4bce5d73663b282a8ab35d1b331d6ff92f4112906a526039827 - md5: b33551d9bac06d754762e8ccb3c4df03 +- conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyh29332c3_4.conda + sha256: a05971bb80cca50ce9977aad3f7fc053e54ea7d5321523efc7b9a6e12901d3cd + md5: f0b4c8e370446ef89797608d60a564b3 depends: - python >=3.9 - webencodings + - python constrains: - - tinycss2 >=1.1.0,<1.5 + - tinycss >=1.1.0,<1.5 license: Apache-2.0 AND MIT - license_family: Apache - size: 132550 - timestamp: 1736148590971 -- conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.2.0-hd8ed1ab_3.conda - sha256: 8161cf35253f7646a1fd39f90abbcc6cb69248b8fdff61cfffce4cc8448f8c02 - md5: e250a492fc70bf604737328dbe02846c + size: 141405 + timestamp: 1737382993425 +- conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.2.0-h82add2a_4.conda + sha256: 0aba699344275b3972bd751f9403316edea2ceb942db12f9f493b63c74774a46 + md5: a30e9406c873940383555af4c873220d depends: - - bleach 6.2.0 pyhd8ed1ab_3 + - bleach ==6.2.0 pyh29332c3_4 - tinycss2 - size: 5745 - timestamp: 1736148591923 + license: Apache-2.0 AND MIT + size: 4213 + timestamp: 1737382993425 - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py312h2ec8cdc_2.conda sha256: f2a59ccd20b4816dea9a2a5cb917eb69728271dbf1aeab4e1b7e609330a50b6f md5: b0b867af6fc74b2a0aa206da29c0f3cf @@ -2260,9 +2261,9 @@ packages: license_family: Apache size: 347303 timestamp: 1691593908658 -- conda: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.11-py312h2ec8cdc_0.conda - sha256: 3d800be438a76d8a636219afd63a617737729867af5800d50fc72e71ac4f27f1 - md5: 0235a6da7d128c7e068973c4de62fc7b +- conda: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.12-py312h2ec8cdc_0.conda + sha256: f88c3a7ff384d1726aea2cb2342cf67f1502915391860335c40ab81d7e381e30 + md5: 6be6dcb4bffd1d456bdad28341d507bd depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -2273,11 +2274,11 @@ packages: platform: linux license: MIT license_family: MIT - size: 2668691 - timestamp: 1734159098550 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/debugpy-1.8.11-py312h6f74592_0.conda - sha256: 8c5f73ea1ef9e88906968b9639be89d861b66aa48c132ec7565405293ca09f90 - md5: 3230587917725d0affd61674e74583d2 + size: 2646757 + timestamp: 1737269937348 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/debugpy-1.8.12-py312h6f74592_0.conda + sha256: ae9ce5415b25c74bea70224822b3c3b12d7d670dbf1f2d63b6995575e05af38b + md5: f54f7b0bad14e9bbba256a21238d2630 depends: - libgcc >=13 - libstdcxx >=13 @@ -2288,11 +2289,11 @@ packages: platform: linux license: MIT license_family: MIT - size: 2609965 - timestamp: 1734159267844 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/debugpy-1.8.11-py312hd8f9ff3_0.conda - sha256: c219e3ba0cf97fdd9fa3d8601f8d37a7fe584cc2f31e199a820fa005649871ea - md5: 0f4c9c498b7ca4f010f7de44463c5403 + size: 2583530 + timestamp: 1737269969753 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/debugpy-1.8.12-py312hd8f9ff3_0.conda + sha256: 0ba7ba5f5529bd9cf103d4684e2e9af8a7791a8732c3a0ac689f2d6f2223feca + md5: 92ebf61ce320b7060ead08666dbc9369 depends: - __osx >=11.0 - libcxx >=18 @@ -2303,8 +2304,8 @@ packages: platform: osx license: MIT license_family: MIT - size: 2517686 - timestamp: 1734159183809 + size: 2564438 + timestamp: 1737270030625 - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.1.1-pyhd8ed1ab_1.conda sha256: 84e5120c97502a3785e8c3241c3bf51f64b4d445f13b4d2445db00d9816fe479 md5: d622d8d7ee8868870f9cbe259f381181 @@ -2435,14 +2436,14 @@ packages: license_family: MIT size: 15546 timestamp: 1734302408607 -- conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_1.conda - sha256: 18dca6e2194732df7ebf824abaefe999e4765ebe8e8a061269406ab88fc418b9 - md5: d692e9ba6f92dc51484bf3477e36ce7c +- conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.17.0-pyhd8ed1ab_0.conda + sha256: 006d7e5a0c17a6973596dd86bfc80d74ce541144d2aee2d22d46fd41df560a63 + md5: 7f402b4a1007ee355bc50ce4d24d4a57 depends: - python >=3.9 license: Unlicense - size: 17441 - timestamp: 1733240909987 + size: 17544 + timestamp: 1737517924333 - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_1.conda sha256: 2509992ec2fd38ab27c7cdb42cf6cadc566a1cc0d1021a2673475d9fa87c6276 md5: d3549fd50d450b6d9e7dddff25dd2110 @@ -3345,13 +3346,13 @@ packages: license_family: Apache size: 1178260 timestamp: 1736008642885 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-h9d9f30d_8_cpu.conda - build_number: 8 - sha256: f6c72ce82d145cb94a1131b68547b88056fb48158a382f9ce763286fce53ee65 - md5: 1c9caae53b14a385b59e87687adad2d6 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-19.0.0-hce2e470_3_cpu.conda + build_number: 3 + sha256: 3b85b78a52ce673798e3c880fa41b818554912e722e81ca20cf95ba9257f13f0 + md5: a50ba9a0789061ea395a47a23d6a7734 depends: - __glibc >=2.17,<3.0.a0 - - aws-crt-cpp >=0.29.8,<0.29.9.0a0 + - aws-crt-cpp >=0.29.9,<0.29.10.0a0 - aws-sdk-cpp >=1.11.458,<1.11.459.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-identity-cpp >=1.10.0,<1.10.1.0a0 @@ -3369,7 +3370,7 @@ packages: - libgoogle-cloud-storage >=2.33.0,<2.34.0a0 - libre2-11 >=2024.7.2 - libstdcxx >=13 - - libutf8proc >=2.9.0,<2.10.0a0 + - libutf8proc >=2.10.0,<2.11.0a0 - libzlib >=1.3.1,<2.0a0 - lz4-c >=1.10.0,<1.11.0a0 - orc >=2.0.3,<2.0.4.0a0 @@ -3383,15 +3384,14 @@ packages: arch: x86_64 platform: linux license: Apache-2.0 - license_family: APACHE - size: 8801586 - timestamp: 1736610546493 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-h47f80e1_8_cpu.conda - build_number: 8 - sha256: bf381dfa84e94ffce715c46352dd99f6f6ace69859b0efb822500f8882be429a - md5: daceef1881b4ddc72bb5b225a122c633 - depends: - - aws-crt-cpp >=0.29.8,<0.29.9.0a0 + size: 8899665 + timestamp: 1737343852413 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-h4065667_12_cpu.conda + build_number: 12 + sha256: 0ac8aab370ef7a21e912cc312e5cbfa59afea8e004f5a372f2f25f96de0c9e9a + md5: 4789bb7ae93fe12bfd81169157896f49 + depends: + - aws-crt-cpp >=0.29.9,<0.29.10.0a0 - aws-sdk-cpp >=1.11.458,<1.11.459.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-identity-cpp >=1.10.0,<1.10.1.0a0 @@ -3405,11 +3405,11 @@ packages: - libbrotlidec >=1.1.0,<1.2.0a0 - libbrotlienc >=1.1.0,<1.2.0a0 - libgcc >=13 - - libgoogle-cloud >=2.33.0,<2.34.0a0 - - libgoogle-cloud-storage >=2.33.0,<2.34.0a0 + - libgoogle-cloud >=2.34.0,<2.35.0a0 + - libgoogle-cloud-storage >=2.34.0,<2.35.0a0 - libre2-11 >=2024.7.2 - libstdcxx >=13 - - libutf8proc >=2.9.0,<2.10.0a0 + - libutf8proc >=2.10.0,<2.11.0a0 - libzlib >=1.3.1,<2.0a0 - lz4-c >=1.10.0,<1.11.0a0 - orc >=2.0.3,<2.0.4.0a0 @@ -3423,16 +3423,15 @@ packages: arch: aarch64 platform: linux license: Apache-2.0 - license_family: APACHE - size: 8045923 - timestamp: 1736611764958 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-hf3eb8e5_8_cpu.conda - build_number: 8 - sha256: 766e46b45520773db93ee1a91951cc135a85544bba738e7b378d31f16097753f - md5: fdc79871e6c243b819497337215416d9 + size: 8051570 + timestamp: 1737451538096 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-19.0.0-hd1aa4b5_4_cpu.conda + build_number: 4 + sha256: bf027b2e77b75b71b5213131fc4b06bbca6f1e195fde62090343e0a808d08bbe + md5: 94c2bcca143c043f8083a1f275de3caf depends: - __osx >=11.0 - - aws-crt-cpp >=0.29.8,<0.29.9.0a0 + - aws-crt-cpp >=0.29.9,<0.29.10.0a0 - aws-sdk-cpp >=1.11.458,<1.11.459.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-identity-cpp >=1.10.0,<1.10.1.0a0 @@ -3445,10 +3444,10 @@ packages: - libbrotlidec >=1.1.0,<1.2.0a0 - libbrotlienc >=1.1.0,<1.2.0a0 - libcxx >=18 - - libgoogle-cloud >=2.33.0,<2.34.0a0 - - libgoogle-cloud-storage >=2.33.0,<2.34.0a0 + - libgoogle-cloud >=2.34.0,<2.35.0a0 + - libgoogle-cloud-storage >=2.34.0,<2.35.0a0 - libre2-11 >=2024.7.2 - - libutf8proc >=2.9.0,<2.10.0a0 + - libutf8proc >=2.10.0,<2.11.0a0 - libzlib >=1.3.1,<2.0a0 - lz4-c >=1.10.0,<1.11.0a0 - orc >=2.0.3,<2.0.4.0a0 @@ -3456,165 +3455,155 @@ packages: - snappy >=1.2.1,<1.3.0a0 - zstd >=1.5.6,<1.6.0a0 constrains: - - arrow-cpp <0.0a0 - parquet-cpp <0.0a0 + - arrow-cpp <0.0a0 - apache-arrow-proc =*=cpu arch: arm64 platform: osx license: Apache-2.0 - license_family: APACHE - size: 5497383 - timestamp: 1736608604724 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-hcb10f89_8_cpu.conda - build_number: 8 - sha256: 126a6e78199311d99e38b9d633ce3e0290795ac68ce3ee8a9b91436c85c4095d - md5: 544759904898499f634f8f88a9907f88 + size: 5532664 + timestamp: 1737458545986 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-19.0.0-hcb10f89_3_cpu.conda + build_number: 3 + sha256: f4e4b14fc2aaaf0d0a16a3b4b4dcae84b1b77daa02754f0873901089ce786a49 + md5: 3e1e31382e9c6ecd0b24bd8f6ddb33ec depends: - __glibc >=2.17,<3.0.a0 - - libarrow 18.1.0 h9d9f30d_8_cpu + - libarrow 19.0.0 hce2e470_3_cpu - libgcc >=13 - libstdcxx >=13 arch: x86_64 platform: linux license: Apache-2.0 - license_family: APACHE - size: 611558 - timestamp: 1736610592458 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h3b568fd_8_cpu.conda - build_number: 8 - sha256: c94844ab1d8fafe17775161283bd1fe7ab1f93f660fc5ba0c01bd33fe3d21eaf - md5: 7a8e6a363d2f39a2f3df3f181d12692d + size: 618570 + timestamp: 1737343896206 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h3b568fd_12_cpu.conda + build_number: 12 + sha256: c93daa943342eb848e5a44d4f48749f96decbde7b0f7d830fe56d0d506c03576 + md5: 8ec3804980e19b70ebffbeb623ce084b depends: - - libarrow 18.1.0 h47f80e1_8_cpu + - libarrow 18.1.0 h4065667_12_cpu - libgcc >=13 - libstdcxx >=13 arch: aarch64 platform: linux license: Apache-2.0 - license_family: APACHE - size: 579798 - timestamp: 1736611846905 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-hf07054f_8_cpu.conda - build_number: 8 - sha256: 29196dc6b2e4488f98bd8950de6333efe5d1a9d0cc62e186694946766185475e - md5: 8db96829f8e427167f450c7467a1ba44 + size: 579114 + timestamp: 1737451608994 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-19.0.0-hf07054f_4_cpu.conda + build_number: 4 + sha256: 40de7e71d9fd4b799c452b3a0328ea260a3871de621f5344fb39b7f48371df75 + md5: e3265f8ab44051131966bd6f7b07a6e3 depends: - __osx >=11.0 - - libarrow 18.1.0 hf3eb8e5_8_cpu + - libarrow 19.0.0 hd1aa4b5_4_cpu - libcxx >=18 arch: arm64 platform: osx license: Apache-2.0 - license_family: APACHE - size: 484442 - timestamp: 1736608695654 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-hcb10f89_8_cpu.conda - build_number: 8 - sha256: fe50edf030b5ccbadec2bf8f90d4cdf32d63ec52ba26233fc2c8bfbe43df3b15 - md5: 894a5ed78728b77c997fefeee222ac4d + size: 481968 + timestamp: 1737458659266 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-19.0.0-hcb10f89_3_cpu.conda + build_number: 3 + sha256: c5cdf03d72d028e8af774aabd29cd92fb87f54cd579a9ffe77ad228c51faaa82 + md5: 1face9ff13ec61bfb065063d35fda864 depends: - __glibc >=2.17,<3.0.a0 - - libarrow 18.1.0 h9d9f30d_8_cpu - - libarrow-acero 18.1.0 hcb10f89_8_cpu + - libarrow 19.0.0 hce2e470_3_cpu + - libarrow-acero 19.0.0 hcb10f89_3_cpu - libgcc >=13 - - libparquet 18.1.0 h081d1f1_8_cpu + - libparquet 19.0.0 h081d1f1_3_cpu - libstdcxx >=13 arch: x86_64 platform: linux license: Apache-2.0 - license_family: APACHE - size: 588032 - timestamp: 1736610711976 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h3b568fd_8_cpu.conda - build_number: 8 - sha256: bb87d8e633074c9759d93abb277d31314dc66fad741253b48e8265e186228c5b - md5: 11856da892b919cc27bd62638d701c65 + size: 585153 + timestamp: 1737344009570 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h3b568fd_12_cpu.conda + build_number: 12 + sha256: 40bbdb394db6f405e6fae56bcbfc88fa433130668d2b39d1f109b7d6ffb8be76 + md5: e9b9a9941d35dff0a168741bdd54877e depends: - - libarrow 18.1.0 h47f80e1_8_cpu - - libarrow-acero 18.1.0 h3b568fd_8_cpu + - libarrow 18.1.0 h4065667_12_cpu + - libarrow-acero 18.1.0 h3b568fd_12_cpu - libgcc >=13 - - libparquet 18.1.0 hfc78867_8_cpu + - libparquet 18.1.0 hfc78867_12_cpu - libstdcxx >=13 arch: aarch64 platform: linux license: Apache-2.0 - license_family: APACHE - size: 560571 - timestamp: 1736611941995 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-hf07054f_8_cpu.conda - build_number: 8 - sha256: bff2d39e418eadab8c522a536449ac90f070dd8e83e2bd5e67a9c3eb8ecf712f - md5: 7b3736f49b3ba299b7799aeb448cb830 + size: 559928 + timestamp: 1737451706623 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-19.0.0-hf07054f_4_cpu.conda + build_number: 4 + sha256: c9b01193f3dc2855276a743aa2d107b3893d886dbc561944154acc4c61a9b4cb + md5: c6588e0236da980424ca0b288c893d1a depends: - __osx >=11.0 - - libarrow 18.1.0 hf3eb8e5_8_cpu - - libarrow-acero 18.1.0 hf07054f_8_cpu + - libarrow 19.0.0 hd1aa4b5_4_cpu + - libarrow-acero 19.0.0 hf07054f_4_cpu - libcxx >=18 - - libparquet 18.1.0 h636d7b7_8_cpu + - libparquet 19.0.0 h636d7b7_4_cpu arch: arm64 platform: osx license: Apache-2.0 - license_family: APACHE - size: 491001 - timestamp: 1736609758514 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-h08228c5_8_cpu.conda - build_number: 8 - sha256: dca372e27724904577315b8db3793e027a5c152a485e505e630a57b15634cd85 - md5: 46eaf81238da6f3ffab1f3ffdcee382e + size: 488490 + timestamp: 1737459936234 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-19.0.0-h08228c5_3_cpu.conda + build_number: 3 + sha256: 414297c69d08ba45af0fccb5e22cc3b3e92181f3928eba1e1b1ab3641970c7e0 + md5: 8527e1e45c495991fd88f6531e176556 depends: - __glibc >=2.17,<3.0.a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.1.0 h9d9f30d_8_cpu - - libarrow-acero 18.1.0 hcb10f89_8_cpu - - libarrow-dataset 18.1.0 hcb10f89_8_cpu + - libarrow 19.0.0 hce2e470_3_cpu + - libarrow-acero 19.0.0 hcb10f89_3_cpu + - libarrow-dataset 19.0.0 hcb10f89_3_cpu - libgcc >=13 - libprotobuf >=5.28.3,<5.28.4.0a0 - libstdcxx >=13 arch: x86_64 platform: linux license: Apache-2.0 - license_family: APACHE - size: 521707 - timestamp: 1736610765240 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h1e9d426_8_cpu.conda - build_number: 8 - sha256: 1896ea00da28e10670f7ba51bb543e68a87f717e9f5692fee44268f1a13d9eee - md5: e7dc0209e065a2b51f19848cefa4b1ab + size: 521371 + timestamp: 1737344062052 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h1e9d426_12_cpu.conda + build_number: 12 + sha256: 6216a1c48e41d3b304e87b19a8ff37c10e51ceca83bff5e942d763c93f6f55a1 + md5: f647dcbf46aebc86f9975ff3c856de45 depends: - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.1.0 h47f80e1_8_cpu - - libarrow-acero 18.1.0 h3b568fd_8_cpu - - libarrow-dataset 18.1.0 h3b568fd_8_cpu + - libarrow 18.1.0 h4065667_12_cpu + - libarrow-acero 18.1.0 h3b568fd_12_cpu + - libarrow-dataset 18.1.0 h3b568fd_12_cpu - libgcc >=13 - libprotobuf >=5.28.3,<5.28.4.0a0 - libstdcxx >=13 arch: aarch64 platform: linux license: Apache-2.0 - license_family: APACHE - size: 517189 - timestamp: 1736611989417 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-h4239455_8_cpu.conda - build_number: 8 - sha256: ae52d926ebfc8edb0728824f2918a825d39bd85a4ef27fe2b73656cfecdd7c69 - md5: f67eb19d22ba355cced8c86073ad49b1 + size: 516135 + timestamp: 1737451754178 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-19.0.0-h4239455_4_cpu.conda + build_number: 4 + sha256: 1de1100bddcaa4aacae5cc30e3c0ae3259d130bee7b3d52a57a1c9950e0c6588 + md5: 6988cd2fdf01cae4bc454859a7cf8bac depends: - __osx >=11.0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.1.0 hf3eb8e5_8_cpu - - libarrow-acero 18.1.0 hf07054f_8_cpu - - libarrow-dataset 18.1.0 hf07054f_8_cpu + - libarrow 19.0.0 hd1aa4b5_4_cpu + - libarrow-acero 19.0.0 hf07054f_4_cpu + - libarrow-dataset 19.0.0 hf07054f_4_cpu - libcxx >=18 - libprotobuf >=5.28.3,<5.28.4.0a0 arch: arm64 platform: osx license: Apache-2.0 - license_family: APACHE - size: 452161 - timestamp: 1736609917123 + size: 449975 + timestamp: 1737460148737 - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-26_linux64_openblas.conda build_number: 26 sha256: 30bd658682b124243f8e52d8edf8a19e7be1bc31e4fe4baec30a64002dc8cd0c @@ -4302,9 +4291,9 @@ packages: license_family: Apache size: 1254656 timestamp: 1735648569457 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-2.33.0-hccf9d24_1.conda - sha256: d3d4def86d880431928799ba90ca97e57c2f05677c03af8de2337502926c492c - md5: a2724014eb04f14bd71d35f45b062dd0 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-2.34.0-hccf9d24_0.conda + sha256: 54267dda8fafc2a2d379ef77b6029d8240e0628d4b29758f788fb903f84397a3 + md5: 1ce0fd876001c40801b40fea22987e41 depends: - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 @@ -4315,16 +4304,16 @@ packages: - libstdcxx >=13 - openssl >=3.4.0,<4.0a0 constrains: - - libgoogle-cloud 2.33.0 *_1 + - libgoogle-cloud 2.34.0 *_0 arch: aarch64 platform: linux license: Apache-2.0 license_family: Apache - size: 1253019 - timestamp: 1735649566849 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-2.33.0-hdbe95d5_1.conda - sha256: ce95aca02451694a4154c7770b6addf4fb859abf17912de6ec947da8469a56ce - md5: 91de1fbab8610974c0094c266bc63435 + size: 1256586 + timestamp: 1737285242684 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-2.34.0-hdbe95d5_0.conda + sha256: 919d8cbcd47d5bd2244c55b2bb87e2bd2eed8215996aab8435cb7123ffd9d20e + md5: 69826544e7978fcaa6bc8c1962d96ad6 depends: - __osx >=11.0 - libabseil * cxx17* @@ -4335,13 +4324,13 @@ packages: - libprotobuf >=5.28.3,<5.28.4.0a0 - openssl >=3.4.0,<4.0a0 constrains: - - libgoogle-cloud 2.33.0 *_1 + - libgoogle-cloud 2.34.0 *_0 arch: arm64 platform: osx license: Apache-2.0 license_family: Apache - size: 877594 - timestamp: 1735648230965 + size: 878217 + timestamp: 1737284441192 - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.33.0-h0121fbd_1.conda sha256: 41022523320ca8633a6c615710823e596efadb50f06d724e1a0c81e27994f257 md5: b0cfb5044685a7a9fa43ae669124f0a0 @@ -4361,15 +4350,15 @@ packages: license_family: Apache size: 784357 timestamp: 1735648759177 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-storage-2.33.0-hb9b2b65_1.conda - sha256: 5eda1cbba68709b91b370b3792c9cfd7bec4ac4e2262f0887d12e1f000ae1191 - md5: 45df2267ff4d8ce532e8d300ce0b0829 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-storage-2.34.0-hb9b2b65_0.conda + sha256: 4ad4fb7c02dcfa4c86dcf9591e0131a01fc0f2c3f2729c12882b944ddf2b8a9d + md5: 0732a5988f7f556f2c1d1f51026fc1be depends: - libabseil - libcrc32c >=1.1.2,<1.2.0a0 - libcurl - libgcc >=13 - - libgoogle-cloud 2.33.0 hccf9d24_1 + - libgoogle-cloud 2.34.0 hccf9d24_0 - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - openssl @@ -4377,26 +4366,26 @@ packages: platform: linux license: Apache-2.0 license_family: Apache - size: 737518 - timestamp: 1735649773462 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-storage-2.33.0-h7081f7f_1.conda - sha256: c0524a22064bc17f5c037da09ba54cc9e767741ef645178e499750c44bec2531 - md5: af8e51382464d4cc2d0054977c40a732 + size: 739678 + timestamp: 1737285399565 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-storage-2.34.0-h7081f7f_0.conda + sha256: 79f6b93fb330728530036b2b38764e9d42e0eedd3ae7e549ac7eae49acd1e52b + md5: f09cb03f9cf847f1dc41b4c1f65c97c2 depends: - __osx >=11.0 - libabseil - libcrc32c >=1.1.2,<1.2.0a0 - libcurl - libcxx >=18 - - libgoogle-cloud 2.33.0 hdbe95d5_1 + - libgoogle-cloud 2.34.0 hdbe95d5_0 - libzlib >=1.3.1,<2.0a0 - openssl arch: arm64 platform: osx license: Apache-2.0 license_family: Apache - size: 526963 - timestamp: 1735649222088 + size: 529202 + timestamp: 1737285376801 - conda: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.67.1-h25350d4_1.conda sha256: 014627485b3cf0ea18e04c0bab07be7fb98722a3aeeb58477acc7e1c3d2f911e md5: 0c6497a760b99a926c7c12b74951a39c @@ -4726,13 +4715,13 @@ packages: license_family: BSD size: 4165774 timestamp: 1730772154295 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-h081d1f1_8_cpu.conda - build_number: 8 - sha256: 2c6d900d4e9dd3c4000886d76d3f8a099e904667ebc6935b49428e6e9b766481 - md5: a9fa0ef309406c84b46db3a28efd761e +- conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-19.0.0-h081d1f1_3_cpu.conda + build_number: 3 + sha256: 287c4864b849180ce9e447df8227da2c4006001056e1668dacc3365264b0e828 + md5: 95f8b5758148e62a055f4c6538a31f0b depends: - __glibc >=2.17,<3.0.a0 - - libarrow 18.1.0 h9d9f30d_8_cpu + - libarrow 19.0.0 hce2e470_3_cpu - libgcc >=13 - libstdcxx >=13 - libthrift >=0.21.0,<0.21.1.0a0 @@ -4740,15 +4729,14 @@ packages: arch: x86_64 platform: linux license: Apache-2.0 - license_family: APACHE - size: 1207011 - timestamp: 1736610684584 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-hfc78867_8_cpu.conda - build_number: 8 - sha256: 2ed6b9eac4504051ddc094ea3f3a2b3198d4d25a443a96fa2971d8075d790c31 - md5: 9a907190c9e2c6bf1a29569700218f0b + size: 1227537 + timestamp: 1737343982323 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-hfc78867_12_cpu.conda + build_number: 12 + sha256: 224da9fb417e1dc569700cddf6dd7febe9a6e5c12547a389a5b934b8d385c4f8 + md5: 517447be85cda09f9410ca609c69499d depends: - - libarrow 18.1.0 h47f80e1_8_cpu + - libarrow 18.1.0 h4065667_12_cpu - libgcc >=13 - libstdcxx >=13 - libthrift >=0.21.0,<0.21.1.0a0 @@ -4756,25 +4744,23 @@ packages: arch: aarch64 platform: linux license: Apache-2.0 - license_family: APACHE - size: 1117465 - timestamp: 1736611918180 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-h636d7b7_8_cpu.conda - build_number: 8 - sha256: 4991519ef4264abc7160e9faaf8ff01d4731bf1497076bef1895d6c366f796eb - md5: b8bd275a49877fdec62ff787818a869d + size: 1116762 + timestamp: 1737451682325 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-19.0.0-h636d7b7_4_cpu.conda + build_number: 4 + sha256: d394423b8a096cec5481ef4cdb4d39dd4b89949cd6f23bdc14896d8af36d78f3 + md5: 639473b0344e0d2f46feb544cff5c6d8 depends: - __osx >=11.0 - - libarrow 18.1.0 hf3eb8e5_8_cpu + - libarrow 19.0.0 hd1aa4b5_4_cpu - libcxx >=18 - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 arch: arm64 platform: osx license: Apache-2.0 - license_family: APACHE - size: 873593 - timestamp: 1736609701839 + size: 885681 + timestamp: 1737459816091 - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.45-h943b412_0.conda sha256: b8f5b5ba9a14dedf7c97c01300de492b1b52b68eacbc3249a13fdbfa82349a2f md5: 85cbdaacad93808395ac295b5667d25b @@ -4934,9 +4920,9 @@ packages: license: ISC size: 164972 timestamp: 1716828607917 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.48.0-hee588c1_0.conda - sha256: 7bb84f44e1bd756da4a3d0d43308324a5533e6ba9f4772475884bce44d405064 - md5: 84bd1c9a82b455e7a2f390375fb38f90 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.48.0-hee588c1_1.conda + sha256: 22853d289ef6ec8a5b20f1aa261895b06525439990d3b139f8bfd0b5c5e32a3a + md5: 3fa05c528d8a1e2a67bbf1e36f22d3bc depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -4944,30 +4930,30 @@ packages: arch: x86_64 platform: linux license: Unlicense - size: 876582 - timestamp: 1737123945341 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.48.0-h5eb1b54_0.conda - sha256: b4365ab7c74a2e6c0444eb950367fa3ca56a87c9921b2faa5ad032fe7a7df682 - md5: 1998946fa3ccf38a07b44a879b2227ae + size: 878223 + timestamp: 1737564987837 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.48.0-h5eb1b54_1.conda + sha256: 81dd9bf66c7f1d9064e007e2c787133100c406e7ca2de61dba9fb7b87372f255 + md5: 4f3a61fe206f20b27c385ee608bcdfda depends: - libgcc >=13 - libzlib >=1.3.1,<2.0a0 arch: aarch64 platform: linux license: Unlicense - size: 1044953 - timestamp: 1737123983895 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.48.0-h3f77e49_0.conda - sha256: b31169cf0ca7b6835baca4ab92d6cf2eee83b1a12a11b72f39521e8baf4d6acb - md5: 714719df4f49e30f9728956f240846ca + size: 1044879 + timestamp: 1737565049785 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.48.0-h3f77e49_1.conda + sha256: 17c06940cc2a13fd6a17effabd6881b1477db38b2cd3ee2571092d293d3fdd75 + md5: 4c55169502ecddf8077973a987d08f08 depends: - __osx >=11.0 - libzlib >=1.3.1,<2.0a0 arch: arm64 platform: osx license: Unlicense - size: 853163 - timestamp: 1737124192432 + size: 852831 + timestamp: 1737564996616 - conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hf672d98_0.conda sha256: 0407ac9fda2bb67e11e357066eff144c845801d00b5f664efbc48813af1e7bb9 md5: be2de152d8073ef1c01b7728475f2fe7 @@ -5152,9 +5138,9 @@ packages: license: HPND size: 370600 timestamp: 1734398863052 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.9.0-hb9d3cd8_1.conda - sha256: 9794e6388e780c3310d46f773bbc924d4053375c3fcdb07a704b57f4616db928 - md5: 1e936bd23d737aac62a18e9a1e7f8b18 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.10.0-h4c51ac1_0.conda + sha256: 8e41563ee963bf8ded06da45f4e70bf42f913cb3c2e79364eb3218deffa3cd74 + md5: aeccfff2806ae38430638ffbb4be9610 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -5162,30 +5148,30 @@ packages: platform: linux license: MIT license_family: MIT - size: 81500 - timestamp: 1732868419835 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.9.0-h86ecc28_1.conda - sha256: 37a1833c55f9945724cd4b3eb6a1469032cc754a1dd725f191c34154ad2ba7e4 - md5: 699f155da290be3a1a64c932c6728991 + size: 82745 + timestamp: 1737244366901 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.10.0-ha346350_0.conda + sha256: 9c333e07b76ae1ea2c882db764be52dc82f632be66d993a50b35ca9c5475074a + md5: c5166bcfb8348e8fc31ee16ec3981a5e depends: - libgcc >=13 arch: aarch64 platform: linux license: MIT license_family: MIT - size: 81526 - timestamp: 1732868466862 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.9.0-h5505292_1.conda - sha256: ea88f06e97ef8fa2490f7594f8885bb542577226edf8abba3144302d951a53c2 - md5: f777470d31c78cd0abe1903a2fda436f + size: 82679 + timestamp: 1737329054400 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.10.0-hda25de7_0.conda + sha256: aca3ef31d3dff5cefd3790742a5ee6548f1cf0201d0e8cee08b01da503484eb6 + md5: 5f741aed1d8d393586a5fdcaaa87f45c depends: - __osx >=11.0 arch: arm64 platform: osx license: MIT license_family: MIT - size: 83000 - timestamp: 1732868631531 + size: 83628 + timestamp: 1737244450097 - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda sha256: 787eb542f055a2b3de553614b25f09eefb0a0931b0c87dbcce6efdfd92f04f18 md5: 40b61aab5c7ba9ff276c41cfffe6b80b @@ -5549,47 +5535,47 @@ packages: license_family: BSD size: 14467 timestamp: 1733417051523 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011705-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025012205-release.conda noarch: python - sha256: 15578c7bc78001d3882c3b9af9d7d8bf3566c68ae133870038be055c8dfd90e9 - md5: 7e6c35d82044e8d31e9327e7d90bfb2b + sha256: 63e2ce51c01fdb5a73f62ea5f862acea5946f45d6b6bd63dafc78d242822e1b7 + md5: 5289b5be19bf0f500e1a06f44d816343 depends: - - max-core ==25.1.0.dev2025011705 release - - max-python >=25.1.0.dev2025011705,<26.0a0 - - mojo-jupyter ==25.1.0.dev2025011705 release - - mblack ==25.1.0.dev2025011705 release + - max-core ==25.1.0.dev2025012205 release + - max-python >=25.1.0.dev2025012205,<26.0a0 + - mojo-jupyter ==25.1.0.dev2025012205 release + - mblack ==25.1.0.dev2025012205 release license: LicenseRef-Modular-Proprietary - size: 9920 - timestamp: 1737091778690 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025011705-release.conda - sha256: 3e39d779710559206129052c64ac530b9d262288f75812ba07c3e3e395a0e18e - md5: 5575de33b0503143e635ade746f057c3 + size: 9919 + timestamp: 1737524122346 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025012205-release.conda + sha256: 061e7c8aba735fd2d15aca623c2f81452723bc0a5ab1e5a63af1761a9eaba9ef + md5: 2d8a82ff460cd4e03382a9151a8cf8d8 depends: - - mblack ==25.1.0.dev2025011705 release + - mblack ==25.1.0.dev2025012205 release license: LicenseRef-Modular-Proprietary - size: 244764907 - timestamp: 1737091186388 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025011705-release.conda - sha256: a9e7747e7cb7ff01dc58f4c7f5772d2b4483693dd200c88653b1ec2dda46bc8b - md5: a9b13b577fb1bcc14b330f5a4185023c + size: 242139658 + timestamp: 1737523134733 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025012205-release.conda + sha256: eade442118da29d8b42289e6859699b4faafcf51d02189729259a2e7a97a0dcc + md5: 8e0412932905d3a4decf17acd50899ce depends: - - mblack ==25.1.0.dev2025011705 release + - mblack ==25.1.0.dev2025012205 release license: LicenseRef-Modular-Proprietary - size: 247240781 - timestamp: 1737091778688 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025011705-release.conda - sha256: 9369b738945ef783af1e4caf2676bd6a299ff86e4ef9504e7a5ee69841fffa01 - md5: c4397350b325ae5a0e07f61e483fc3e5 + size: 244683388 + timestamp: 1737524122344 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025012205-release.conda + sha256: b5ccec88293901182a43d7f407d04b522b729cefaab066788496adec5bd3f2d2 + md5: bd5da5f25bd5151b4b691c34acdbeff0 depends: - - mblack ==25.1.0.dev2025011705 release + - mblack ==25.1.0.dev2025012205 release license: LicenseRef-Modular-Proprietary - size: 206615275 - timestamp: 1737092643231 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025011705-3.12release.conda - sha256: bdda011f73105d5d91e29abdacc4e7304501249c3bb50e83517661cdea4ef56a - md5: 0ddfaa3caa3647a0cbcdf394774ee6be + size: 203820478 + timestamp: 1737523349069 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025012205-3.12release.conda + sha256: ceb4d33afe634401be386903e2f516b78f2b5e23e15cbedad42cce2600c97b7d + md5: ecfacd66a5b71794c53a468fbefcef6a depends: - - max-core ==25.1.0.dev2025011705 release + - max-core ==25.1.0.dev2025012205 release - python 3.12.* - fastapi - httpx @@ -5610,13 +5596,13 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 124617960 - timestamp: 1737091186397 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025011705-3.12release.conda - sha256: 3ec1d98731b5c86829e7dd0d76b3ad820173a418f58833ea0237e34d356b58c6 - md5: 0ed0380d3ee48a36fe43f85f61fd9fe3 + size: 119861319 + timestamp: 1737523134743 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025012205-3.12release.conda + sha256: 14ae6f16ce6c895de574bb02307cd58e87e32013bde0d905d6a1a67e686ca204 + md5: fb06394177c69b52c2ecf9ceaa7b308b depends: - - max-core ==25.1.0.dev2025011705 release + - max-core ==25.1.0.dev2025012205 release - python 3.12.* - fastapi - httpx @@ -5637,13 +5623,13 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 127367910 - timestamp: 1737091778698 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025011705-3.12release.conda - sha256: 853e12e0ac11f3dcf5392e94cc927233ba940a71a5cf73c0cec54ad4917256c0 - md5: 53e9620bd08e983c5e52e02afef0a990 + size: 122258493 + timestamp: 1737524122355 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025012205-3.12release.conda + sha256: 35e34095931d604893d014773f8c61c1c09a9888946dec4a01f1db827bd2f439 + md5: 589be4ace2edf68cfc3cf1d0cc429864 depends: - - max-core ==25.1.0.dev2025011705 release + - max-core ==25.1.0.dev2025012205 release - python 3.12.* - fastapi - httpx @@ -5664,12 +5650,12 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 110545057 - timestamp: 1737092643234 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011705-release.conda + size: 105223218 + timestamp: 1737523349072 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012205-release.conda noarch: python - sha256: 180bbe7d8b76c5d0f453b72f81fae10522b7a98a31e6fbeff542dbb31bb9b613 - md5: 680622d3117019e99ddc173efab357c7 + sha256: 31bce03569c241ade0a344f1fe1a683f928fe367ae57147b3e316783631822fe + md5: c54b5f7d0d777b8995e38978d8626ffc depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -5679,8 +5665,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130807 - timestamp: 1737091778695 + size: 130797 + timestamp: 1737524122352 - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda sha256: 78c1bbe1723449c52b7a9df1af2ee5f005209f67e40b6e1d3c7619127c43b1c7 md5: 592132998493b3ff25fd7479396e8351 @@ -5700,18 +5686,18 @@ packages: license_family: BSD size: 68803 timestamp: 1735686983426 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011705-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025012205-release.conda noarch: python - sha256: eab543a5c31c091b3d042980d068a950c51905d14a18532710f9be94ba88ba5d - md5: eea061b963a95002a8740d4b4f506d44 + sha256: 78e2818c9d17321c5fe73f9dca3d7a9c51ad989c00f8ea9721deb94a4f03800e + md5: ca3c9282adb4a04dbd02f3ab8e73445c depends: - - max-core ==25.1.0.dev2025011705 release + - max-core ==25.1.0.dev2025012205 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22929 - timestamp: 1737091778696 + size: 22925 + timestamp: 1737524122353 - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py312h178313f_2.conda sha256: b05bc8252a6e957bf4a776ed5e0e61d1ba88cdc46ccb55890c72cc58b10371f4 md5: 5b5e3267d915a107eca793d52e1b780a @@ -6412,18 +6398,17 @@ packages: license_family: Apache size: 49002 timestamp: 1733327434163 -- conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.48-pyha770c72_1.conda - sha256: 79fb7d1eeb490d4cc1b79f781bb59fe302ae38cf0a30907ecde75a7d399796cc - md5: 368d4aa48358439e07a97ae237491785 +- conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.50-pyha770c72_0.conda + sha256: 0749c49a349bf55b8539ce5addce559b77592165da622944a51c630e94d97889 + md5: 7d823138f550b14ecae927a5ff3286de depends: - python >=3.9 - wcwidth constrains: - - prompt_toolkit 3.0.48 + - prompt_toolkit 3.0.50 license: BSD-3-Clause - license_family: BSD - size: 269848 - timestamp: 1733302634979 + size: 271905 + timestamp: 1737453457168 - conda: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.1-py312h66e93f0_0.conda sha256: 5771311fb5ded614ca349c92579a0b752af55a310f40b71fc533e20625965391 md5: 55d5742a696d7da1c1262e99b6217ceb @@ -6610,23 +6595,23 @@ packages: license_family: MIT size: 16668 timestamp: 1733569518868 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-18.1.0-py312h7900ff3_0.conda - sha256: 46a61c29375d3bf1933eae61c7861394c168898915d59fc99bf05e46de2ff5ad - md5: ac65b70df28687c6af4270923c020bdd - depends: - - libarrow-acero 18.1.0.* - - libarrow-dataset 18.1.0.* - - libarrow-substrait 18.1.0.* - - libparquet 18.1.0.* - - pyarrow-core 18.1.0 *_0_* +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-19.0.0-py312h7900ff3_0.conda + sha256: 7d98e626ec65b882341482ad15ecb7a670ee41dbaf375aa660ba8b7d0a940504 + md5: 14f86e63b5c214dd9fb34e5472d4bafc + depends: + - libarrow-acero 19.0.0.* + - libarrow-dataset 19.0.0.* + - libarrow-substrait 19.0.0.* + - libparquet 19.0.0.* + - pyarrow-core 19.0.0 *_0_* - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 arch: x86_64 platform: linux license: Apache-2.0 license_family: APACHE - size: 25213 - timestamp: 1732610785600 + size: 25289 + timestamp: 1737128438818 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-18.1.0-py312h8025657_0.conda sha256: 49db959887cb89b44053a44a98d0f35644fc0b2003587492f02b56046de0b60a md5: 9bb7d32e96a5dcb5ea7fd90a11a83656 @@ -6644,43 +6629,43 @@ packages: license_family: APACHE size: 25374 timestamp: 1732611006864 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-18.1.0-py312h1f38498_0.conda - sha256: 06c0e208d5bf15051874097366c8e8e5db176dffba38526f227a34e80cc8e9bc - md5: 3710616b880b31d0c8afd8ae7e12392a - depends: - - libarrow-acero 18.1.0.* - - libarrow-dataset 18.1.0.* - - libarrow-substrait 18.1.0.* - - libparquet 18.1.0.* - - pyarrow-core 18.1.0 *_0_* +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-19.0.0-py312h1f38498_0.conda + sha256: 9d693901833c2ff4e5d67e1f2f6df50f699e1cec2f580c26d42299654830855a + md5: bd5e025292ff1127aa1534b59e55c4d0 + depends: + - libarrow-acero 19.0.0.* + - libarrow-dataset 19.0.0.* + - libarrow-substrait 19.0.0.* + - libparquet 19.0.0.* + - pyarrow-core 19.0.0 *_0_* - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 arch: arm64 platform: osx license: Apache-2.0 license_family: APACHE - size: 25375 - timestamp: 1732610892198 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-18.1.0-py312h01725c0_0_cpu.conda - sha256: 948a4161c56f846d374a3721a657e58ddbc992a29b3b3e7a6411975c30361d94 - md5: ee80934a6c280ff8635f8db5dec11e04 + size: 25428 + timestamp: 1737128284082 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-19.0.0-py312h01725c0_0_cpu.conda + sha256: 81178d0de0ac851a0a78e09c81ad92274cf770a38b28acdf53a0cfb2122d15aa + md5: 7ab1143b9ac1af5cc4a630706f643627 depends: - __glibc >=2.17,<3.0.a0 - - libarrow 18.1.0.* *cpu + - libarrow 19.0.0.* *cpu - libgcc >=13 - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 constrains: - - numpy >=1.21,<3 - apache-arrow-proc =*=cpu + - numpy >=1.21,<3 arch: x86_64 platform: linux license: Apache-2.0 license_family: APACHE - size: 4612916 - timestamp: 1732610377259 + size: 5230953 + timestamp: 1737128097002 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-18.1.0-py312h66f7834_0_cpu.conda sha256: e7eb062145be554c23dfefa0ebe8c5f6ae8c59635117a6921e66403d6addcda3 md5: 3390c8b8f57e85506c92a37cf750bdd7 @@ -6701,26 +6686,26 @@ packages: license_family: APACHE size: 4406662 timestamp: 1732610939832 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-18.1.0-py312hc40f475_0_cpu.conda - sha256: 063eb168a29d4ce6d9ed865e9e1ad3b6e141712189955a79e06b24ddc0cbbc9c - md5: 9859e7c4b94bbf69772dbf0511101cec +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-19.0.0-py312hc40f475_0_cpu.conda + sha256: 6303fe1c3e6d36273b72f0eeb3f19897d2376d57fe8c757f55dcbfbaa5cd6840 + md5: df502157843a7b1d90af04803767be15 depends: - __osx >=11.0 - - libarrow 18.1.0.* *cpu + - libarrow 19.0.0.* *cpu - libcxx >=18 - libzlib >=1.3.1,<2.0a0 - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 constrains: - - numpy >=1.21,<3 - apache-arrow-proc =*=cpu + - numpy >=1.21,<3 arch: arm64 platform: osx license: Apache-2.0 license_family: APACHE - size: 3909116 - timestamp: 1732610863261 + size: 4393075 + timestamp: 1737128225546 - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda sha256: 79db7928d13fab2d892592223d7570f5061c192f27b9febd1a418427b719acc6 md5: 12c566707c80111f9799308d9e265aef @@ -7026,15 +7011,14 @@ packages: license_family: Apache size: 27913 timestamp: 1734420869885 -- conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_1.conda - sha256: 57c9a02ec25926fb48edca59b9ede107823e5d5c473b94a0e05cc0b9a193a642 - md5: c0def296b2f6d2dd7b030c2a7f66bb1f +- conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.1-pyhd8ed1ab_0.conda + sha256: 1597d6055d34e709ab8915091973552a0b8764c8032ede07c4e99670da029629 + md5: 392c91c42edd569a7ec99ed8648f597a depends: - python >=3.9 license: Apache-2.0 - license_family: APACHE - size: 142235 - timestamp: 1733235414217 + size: 143794 + timestamp: 1737541204030 - conda: https://conda.anaconda.org/conda-forge/linux-64/python-xxhash-3.5.0-py312h66e93f0_1.conda sha256: 20851b1e59fee127d49e01fc73195a88ab0779f103b7d6ffc90d11142a83678f md5: 39aed2afe4d0cf76ab3d6b09eecdbea7 @@ -7124,9 +7108,9 @@ packages: license_family: MIT size: 185890 timestamp: 1733215766006 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py312h66e93f0_1.conda - sha256: a60705971e958724168f2ebbb8ed4853067f1d3f7059843df3903e3092bbcffa - md5: 549e5930e768548a89c23f595dac5a95 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py312h178313f_2.conda + sha256: 159cba13a93b3fe084a1eb9bda0a07afc9148147647f0d437c3c3da60980503b + md5: cf2485f39740de96e2a7f2bb18ed2fee depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -7137,11 +7121,11 @@ packages: platform: linux license: MIT license_family: MIT - size: 206553 - timestamp: 1725456256213 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyyaml-6.0.2-py312hb2c0f52_1.conda - sha256: 8c515ebe1e7e85d972d72b75760af9dfac06fd11a9dba7e05c42d69aedbb303c - md5: dc5de424f7dbb9772da720dbb81317b2 + size: 206903 + timestamp: 1737454910324 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyyaml-6.0.2-py312hcc812fe_2.conda + sha256: dc78e41d51300722ba35ac4a10d37339ceffbe22d7501c71dfd3f633a4f8e79a + md5: 4de4a5ff81c941674e08595244e7cd61 depends: - libgcc >=13 - python >=3.12,<3.13.0a0 @@ -7152,11 +7136,11 @@ packages: platform: linux license: MIT license_family: MIT - size: 199141 - timestamp: 1725456356043 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py312h024a12e_1.conda - sha256: b06f1c15fb39695bbf707ae8fb554b9a77519af577b5556784534c7db10b52e3 - md5: 1ee23620cf46cb15900f70a1300bae55 + size: 199172 + timestamp: 1737454840766 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py312h998013c_2.conda + sha256: ad225ad24bfd60f7719709791345042c3cb32da1692e62bd463b084cf140e00d + md5: 68149ed4d4e9e1c42d2ba1f27f08ca96 depends: - __osx >=11.0 - python >=3.12,<3.13.0a0 @@ -7167,8 +7151,8 @@ packages: platform: osx license: MIT license_family: MIT - size: 187143 - timestamp: 1725456547263 + size: 192148 + timestamp: 1737454886351 - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.0-py312hbf22597_3.conda sha256: bc303f9b11e04a515f79cd5ad3bfa0e84b9dfec76552626d6263b38789fe6678 md5: 746ce19f0829ec3e19c93007b1a224d3 @@ -7296,6 +7280,7 @@ packages: - rpds-py >=0.7.0 - typing_extensions >=4.4.0 license: MIT + license_family: MIT size: 42296 timestamp: 1737120499679 - conda: https://conda.anaconda.org/conda-forge/linux-64/regex-2024.11.6-py312h66e93f0_0.conda @@ -7446,9 +7431,9 @@ packages: license_family: MIT size: 318920 timestamp: 1733367225496 -- conda: https://conda.anaconda.org/conda-forge/linux-64/s2n-1.5.10-hb5b8611_0.conda - sha256: f6d451821fddc26b93f45e9313e1ea15e09e5ef049d4e137413a5225d2a5dfba - md5: 999f3673f2a011f59287f2969e3749e4 +- conda: https://conda.anaconda.org/conda-forge/linux-64/s2n-1.5.11-h072c03f_0.conda + sha256: cfdd98c8f9a1e5b6f9abce5dac6d590cc9fe541a08466c9e4a26f90e00b569e3 + md5: 5e8060d52f676a40edef0006a75c718f depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -7457,11 +7442,11 @@ packages: platform: linux license: Apache-2.0 license_family: Apache - size: 355142 - timestamp: 1734415467047 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/s2n-1.5.10-h5df210e_0.conda - sha256: b5e7a9f4b7b1ec5c5c3661e2defc8b47fab543b05cad6fec78739d8007612464 - md5: 3d3979efcc0f44f3f0cef3de03b296cc + size: 356213 + timestamp: 1737146304079 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/s2n-1.5.11-h3caee7a_0.conda + sha256: 5a7ae66f96be24c3b2007139b6c3701ab015b4b4eb4eccfdd07be97710243a47 + md5: 1517c0518f8a06a48a15f41d94252874 depends: - libgcc >=13 - openssl >=3.4.0,<4.0a0 @@ -7469,8 +7454,8 @@ packages: platform: linux license: Apache-2.0 license_family: Apache - size: 353450 - timestamp: 1734415474615 + size: 352811 + timestamp: 1737146319512 - conda: https://conda.anaconda.org/conda-forge/linux-64/safetensors-0.5.2-py312h12e396e_0.conda sha256: 98b8dfa5eec083e0b3ace00906a7f7e748b1e2446dca17e87473f43278fcc036 md5: 999ca9d87d2bb8b4c01e62c755b928cf @@ -7849,9 +7834,9 @@ packages: license_family: BSD size: 110051 timestamp: 1733367480074 -- conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.48.0-pyhd8ed1ab_0.conda - sha256: c8dd6d69e4ef67c7d507dec2be4b6964f6ddbe1ce35a822ddf4089505d702f33 - md5: 2c57d4af7b8952484962b40a59cf1537 +- conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.48.1-pyhd8ed1ab_0.conda + sha256: 92fc16e2449fc81f516d31630fd18c3f33b95bc0c069655a3c0042fbd11a09a4 + md5: 08f62b2c92d1fa610896fc7b16b05031 depends: - datasets !=2.5.0 - filelock @@ -7867,8 +7852,8 @@ packages: - tqdm >=4.27 license: Apache-2.0 license_family: APACHE - size: 3408277 - timestamp: 1736534112195 + size: 3405362 + timestamp: 1737429408302 - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda sha256: ef695490e895c2ad552c77ec497b899b09fd4ad4ab07edcf5649f5994cf92a35 md5: 170a0398946d8f5b454e592672b6fc20 @@ -8127,9 +8112,9 @@ packages: license_family: APACHE size: 46718 timestamp: 1733157432924 -- conda: https://conda.anaconda.org/conda-forge/linux-64/websockets-14.1-py312h66e93f0_0.conda - sha256: 5998940f91765ba991cf286c863c20bcb53db92bb976a2b5a714566b86b0e763 - md5: a79f7ce618bd0a9f4c00c59a03570fcd +- conda: https://conda.anaconda.org/conda-forge/linux-64/websockets-14.2-py312h66e93f0_0.conda + sha256: 52092f1f811fddcbb63e4e8e1c726f32a0a1ea14c36b70982fc2021a3c010e48 + md5: 279166352304d5d4b63429e9c86fa3dc depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -8139,11 +8124,11 @@ packages: platform: linux license: BSD-3-Clause license_family: BSD - size: 242145 - timestamp: 1731498716195 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/websockets-14.1-py312hb2c0f52_0.conda - sha256: c292a8badcbe4040537e225fbeb237bfaf272808eab060067d965d3da98ccd5c - md5: 7e2a0ef2a1a87f88f9745f9c7059186e + size: 242949 + timestamp: 1737358315063 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/websockets-14.2-py312hb2c0f52_0.conda + sha256: 5b8273df10b85a667b4fe71788a12c33a9626723650e28f582fd56c87bad0471 + md5: d7535d5d2f8d49d625071f305d6112a1 depends: - libgcc >=13 - python >=3.12,<3.13.0a0 @@ -8153,11 +8138,11 @@ packages: platform: linux license: BSD-3-Clause license_family: BSD - size: 242912 - timestamp: 1731498811466 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/websockets-14.1-py312hea69d52_0.conda - sha256: 98fb04a1a0f53dc604378f94b5795d0b8e462fee01bf0a887cb34d0efdf5d21f - md5: 89b79a9baa7db46ce21f5738a5a3dfda + size: 244675 + timestamp: 1737358397158 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/websockets-14.2-py312hea69d52_0.conda + sha256: e5ad8c983a1669d06a6648990c0491d5469143f02003c8fd2ae7d066d7d4b086 + md5: 8757561d3ea10ba178fb7fb888f33e3a depends: - __osx >=11.0 - python >=3.12,<3.13.0a0 @@ -8167,8 +8152,8 @@ packages: platform: osx license: BSD-3-Clause license_family: BSD - size: 243131 - timestamp: 1731498944076 + size: 246269 + timestamp: 1737358485546 - conda: https://conda.anaconda.org/conda-forge/noarch/wheel-0.45.1-pyhd8ed1ab_1.conda sha256: 1b34021e815ff89a4d902d879c3bd2040bc1bd6169b32e9427497fa05c55f1ce md5: 75cb7132eb58d97896e173ef12ac9986 @@ -8350,9 +8335,9 @@ packages: license_family: MIT size: 88016 timestamp: 1641347076660 -- conda: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.18.3-py312h66e93f0_0.conda - sha256: a0d93c3bef723e384cff8a29a82a2c6b7a73b39328088f3a2d97c901f56e9a63 - md5: 91df2efaa08730416bec2a4502309275 +- conda: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.18.3-py312h178313f_1.conda + sha256: 6b054c93dd19fd7544af51b41a8eacca2ab62271f6c0c5a2a0cffe80dc37a0ce + md5: 6822c49f294d4355f19d314b8b6063d8 depends: - __glibc >=2.17,<3.0.a0 - idna >=2.0 @@ -8365,11 +8350,11 @@ packages: platform: linux license: Apache-2.0 license_family: Apache - size: 151393 - timestamp: 1733428897813 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.18.3-py312hb2c0f52_0.conda - sha256: 470b5b0f3ac89acd143095281167dc2ac1a56d4fa22e1794bd8f3b00bb604540 - md5: 0b3c640697bca798d0ab428f530ed24c + size: 152305 + timestamp: 1737575898300 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.18.3-py312hcc812fe_1.conda + sha256: bfa211c0dd5dbb308788f055277dc428b7923ceb2de6a22ea98bc17cf306f9f5 + md5: d14c78abdd6109e2b7162f53b6cc1e77 depends: - idna >=2.0 - libgcc >=13 @@ -8382,11 +8367,11 @@ packages: platform: linux license: Apache-2.0 license_family: Apache - size: 150004 - timestamp: 1733429056665 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.18.3-py312hea69d52_0.conda - sha256: 69c7863809e11bc90c0d935c16e7f151dcc925add08b3894f06059263a8cb9ba - md5: f32f9b16361866a62d6e061fcd7eb400 + size: 149654 + timestamp: 1737576065314 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.18.3-py312h998013c_1.conda + sha256: 48821d23567ca0f853eee6f7812c74392867e123798b5b3c44f58758d8eb580e + md5: 092d3b40acc67c470f379049be343a7a depends: - __osx >=11.0 - idna >=2.0 @@ -8399,8 +8384,8 @@ packages: platform: osx license: Apache-2.0 license_family: Apache - size: 141556 - timestamp: 1733429104990 + size: 145543 + timestamp: 1737576074753 - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda sha256: a4dc72c96848f764bb5a5176aa93dd1e9b9e52804137b99daeebba277b31ea10 md5: 3947a35e916fcc6b9825449affbf4214 diff --git a/examples/operators/magic.lock b/examples/operators/magic.lock index 6fa5a396b7..18e04204dc 100644 --- a/examples/operators/magic.lock +++ b/examples/operators/magic.lock @@ -14,19 +14,19 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.8.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.3.0-pyh71513ae_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-h205f482_16.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.1-h205f482_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.1-h1a47875_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.10.6-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.3.0-h4e1184b_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.0-h7959bf6_11.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.2-hefd7a92_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-h831e299_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-h173a860_6.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h11f4f37_12.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.7-hf454442_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.9-he1b24dc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.2-h4e1184b_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-h4e1184b_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.8-h8570fcd_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-h7001638_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.9-he0e7f3f_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-h4d475cb_6.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.10.0-h113e628_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.13.0-h3cf044e_1.conda @@ -51,7 +51,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/fastapi-0.115.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.7-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/filelock-3.17.0-pyhd8ed1ab_0.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 - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.12.0-pyhd8ed1ab_0.conda @@ -77,10 +77,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-h9d9f30d_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-hcb10f89_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-hcb10f89_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-h08228c5_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-19.0.0-hce2e470_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-19.0.0-hcb10f89_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-19.0.0-hcb10f89_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-19.0.0-h08228c5_3_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-26_linux64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hb9d3cd8_2.conda @@ -109,18 +109,18 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.28-pthreads_h94d23a6_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-h081d1f1_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-19.0.0-h081d1f1_3_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.45-h943b412_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.48.0-hee588c1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.48.0-hee588c1_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hf672d98_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-hc0a3c3a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libthrift-0.21.0-h0e7cc3e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hd9ff511_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.9.0-hb9d3cd8_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.10.0-h4c51ac1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.50.0-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.5.0-h851e524_0.conda @@ -131,12 +131,12 @@ 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-25.1.0.dev2025011705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025011705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025011705-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025012205-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025012205-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025012205-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012205-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-25.1.0.dev2025011705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025012205-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 @@ -161,8 +161,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.1-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/protobuf-5.28.3-py312h2ec8cdc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-18.1.0-py312h7900ff3_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-18.1.0-py312h01725c0_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-19.0.0-py312h7900ff3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-19.0.0-py312h01725c0_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.5-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.27.2-py312h12e396e_0.conda @@ -175,11 +175,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.20-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python-xxhash-3.5.0-py312h66e93f0_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py312h66e93f0_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py312h178313f_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.0-py312hbf22597_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/re2-2024.07.02-h9925aae_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda @@ -187,7 +187,7 @@ environments: - 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.10-hb5b8611_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/s2n-1.5.11-h072c03f_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/safetensors-0.5.2-py312h12e396e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda @@ -200,7 +200,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.48.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.48.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda @@ -212,13 +212,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.34.0-h31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/uvloop-0.21.0-py312h66e93f0_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/watchfiles-1.0.4-py312h12e396e_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/websockets-14.1-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/websockets-14.2-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.17.2-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xxhash-0.8.2-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.18.3-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.18.3-py312h178313f_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312hef9b889_1.conda @@ -231,19 +231,19 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.8.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.3.0-pyh71513ae_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-hb7ec8d5_16.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.1-hb7ec8d5_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.1-h740c5af_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-common-0.10.6-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-compression-0.3.0-h0f0193d_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-event-stream-0.5.0-hcbd8f92_11.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.2-h3df160d_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-h1a307af_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-hfd5ba81_6.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h5f50e26_12.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.7-h2080895_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.9-h05b070f_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.2-h0f0193d_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h0f0193d_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.8-h92ee776_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h90ecb4a_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.9-hab3ce66_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h88461e4_6.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-core-cpp-1.14.0-h1887c18_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-identity-cpp-1.10.0-h47b0b28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-blobs-cpp-12.13.0-h185ecfd_1.conda @@ -268,7 +268,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/fastapi-0.115.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.7-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/filelock-3.17.0-pyhd8ed1ab_0.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 - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.12.0-pyhd8ed1ab_0.conda @@ -295,10 +295,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.0.0-h4de3ea5_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h18dbdb1_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-h47f80e1_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h3b568fd_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h3b568fd_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h1e9d426_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-h4065667_12_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h3b568fd_12_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h3b568fd_12_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h1e9d426_12_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-26_linuxaarch64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlicommon-1.1.0-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlidec-1.1.0-h86ecc28_2.conda @@ -317,8 +317,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-2.33.0-hccf9d24_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-storage-2.33.0-hb9b2b65_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-2.34.0-hccf9d24_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-storage-2.34.0-hb9b2b65_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgrpc-1.67.1-hf7ccdd3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libiconv-1.17-h31becfc_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libjpeg-turbo-3.0.0-h31becfc_1.conda @@ -327,18 +327,18 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnghttp2-1.64.0-hc8609a4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.28-pthreads_h9d3fd7e_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-hfc78867_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-hfc78867_12_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.45-hec79eb8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.3-h44a3b7b_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.20-h68df207_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.48.0-h5eb1b54_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.48.0-h5eb1b54_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libssh2-1.11.1-ha41c0db_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libthrift-0.21.0-h154c74f_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.0-h88f7998_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.9.0-h86ecc28_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.10.0-ha346350_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuv-1.50.0-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libwebp-base-1.5.0-h0886dbf_0.conda @@ -349,12 +349,12 @@ 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-25.1.0.dev2025011705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025011705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025011705-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025012205-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025012205-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025012205-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012205-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-25.1.0.dev2025011705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025012205-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 @@ -393,11 +393,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.20-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-xxhash-3.5.0-py312h52516f5_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.12-5_cp312.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyyaml-6.0.2-py312hb2c0f52_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyyaml-6.0.2-py312hcc812fe_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyzmq-26.2.0-py312h2427ae1_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/re2-2024.07.02-haa97905_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8fc344f_1.conda @@ -405,7 +405,7 @@ environments: - 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.10-h5df210e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/s2n-1.5.11-h3caee7a_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/safetensors-0.5.2-py312h8cbf658_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda @@ -418,7 +418,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py312h52516f5_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.48.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.48.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda @@ -430,13 +430,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.34.0-h31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/uvloop-0.21.0-py312hb2c0f52_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/watchfiles-1.0.4-py312h8cbf658_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/websockets-14.1-py312hb2c0f52_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/websockets-14.2-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/wrapt-1.17.2-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxau-1.0.12-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxdmcp-1.1.5-h57736b2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xxhash-0.8.2-h31becfc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yaml-0.2.5-hf897c2e_2.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.18.3-py312hb2c0f52_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.18.3-py312hcc812fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zeromq-4.3.5-h5efb499_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstandard-0.23.0-py312hb698573_1.conda @@ -448,19 +448,19 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.8.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.3.0-pyh71513ae_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-hfc2798a_16.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.1-hfc2798a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.1-hc8a0bd2_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.10.6-h5505292_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-compression-0.3.0-hc8a0bd2_5.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.0-h54f970a_11.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.2-h96aa502_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-haba67d1_5.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-haba67d1_6.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h24f418c_12.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.7-h1be5864_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.9-hf37e03c_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.2-hc8a0bd2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-hc8a0bd2_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.8-h23176ea_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-h794939a_5.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.9-ha81f72f_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-h0e5014b_6.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.14.0-hd50102c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.10.0-hc602bab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-blobs-cpp-12.13.0-h7585a09_1.conda @@ -485,7 +485,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/fastapi-0.115.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.7-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/filelock-3.17.0-pyhd8ed1ab_0.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 - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.12.0-pyhd8ed1ab_0.conda @@ -510,10 +510,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.16-ha0e7c42_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_h07bc746_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-hf3eb8e5_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-hf07054f_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-hf07054f_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-h4239455_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-19.0.0-hd1aa4b5_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-19.0.0-hf07054f_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-19.0.0-hf07054f_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-19.0.0-h4239455_4_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-26_osxarm64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.1.0-hd74edd7_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.1.0-hd74edd7_2.conda @@ -530,8 +530,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-2.33.0-hdbe95d5_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-storage-2.33.0-h7081f7f_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-2.34.0-hdbe95d5_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-storage-2.34.0-h7081f7f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgrpc-1.67.1-h0a426d6_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.17-h0d3ecfb_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.0.0-hb547adb_1.conda @@ -539,16 +539,16 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.3-h39f12f2_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.64.0-h6d7220d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.28-openmp_hf332438_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-h636d7b7_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-19.0.0-h636d7b7_4_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.45-h3783ad8_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.3-h3bd63a1_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h07bc746_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.48.0-h3f77e49_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.48.0-h3f77e49_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.1-h9cc3647_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libthrift-0.21.0-h64651cc_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-h551f018_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.9.0-h5505292_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.10.0-hda25de7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libuv-1.50.0-h5505292_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.5.0-h2471fea_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxcb-1.17.0-hdb1d25a_0.conda @@ -558,12 +558,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-25.1.0.dev2025011705-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025011705-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025011705-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025012205-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025012205-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025012205-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012205-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-25.1.0.dev2025011705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025012205-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 @@ -588,8 +588,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.1-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/protobuf-5.28.3-py312hd8f9ff3_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pthread-stubs-0.4-hd74edd7_1002.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-18.1.0-py312h1f38498_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-18.1.0-py312hc40f475_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-19.0.0-py312h1f38498_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-19.0.0-py312hc40f475_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.5-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.27.2-py312hcd83bfe_0.conda @@ -602,11 +602,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.20-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-xxhash-3.5.0-py312h024a12e_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-5_cp312.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py312h024a12e_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py312h998013c_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.0-py312hf8a1cbd_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/re2-2024.07.02-h6589ca4_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h92ec313_1.conda @@ -626,7 +626,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.48.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.48.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda @@ -638,13 +638,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.34.0-h31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/uvloop-0.21.0-py312h0bf5046_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/watchfiles-1.0.4-py312hcd83bfe_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/websockets-14.1-py312hea69d52_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/websockets-14.2-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/wrapt-1.17.2-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxau-1.0.12-h5505292_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxdmcp-1.1.5-hd74edd7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xxhash-0.8.2-hb547adb_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.18.3-py312hea69d52_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.18.3-py312h998013c_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py312h15fbf35_1.conda @@ -804,9 +804,9 @@ packages: license_family: MIT size: 56354 timestamp: 1734348889193 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-h205f482_16.conda - sha256: 0695c285b70385913dc7dce05888d3ad1378247b65273bdab509494a2f8f0eea - md5: b0815d37ab812ade9c07239da7c3c369 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.1-h205f482_0.conda + sha256: ebe5e33249f37f6bb481de99581ebdc92dbfcf1b6915609bcf3c9e78661d6352 + md5: 9c500858e88df50af3cc883d194de78a depends: - __glibc >=2.17,<3.0.a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 @@ -819,11 +819,11 @@ packages: platform: linux license: Apache-2.0 license_family: Apache - size: 107478 - timestamp: 1736592747413 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-hb7ec8d5_16.conda - sha256: 5a2a2691f2e0028e8549b97a340d7e6c502e0d54b7deba00fad505812663a98b - md5: 56f166780076db46c5e273988693d8a3 + size: 108111 + timestamp: 1737509831651 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.1-hb7ec8d5_0.conda + sha256: e1e6c9267a4d9af30b1d28c11a9041b17b7840ff83ef08614145a2a4f444f5b4 + md5: 2630f030652970a5531e492f6b2a6dd3 depends: - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.6,<0.10.7.0a0 @@ -835,11 +835,11 @@ packages: platform: linux license: Apache-2.0 license_family: Apache - size: 112264 - timestamp: 1736592695540 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-hfc2798a_16.conda - sha256: cdcd932332311db1b614289101b61e32cbae2478ba2bf85763aaf5a5cc7db6f6 - md5: 1e9a41d5296f50c08ae511d61fddef85 + size: 112658 + timestamp: 1737509863269 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.1-hfc2798a_0.conda + sha256: 5a60d196a585b25d1446fb973009e4e648e8d70beaa2793787243ede6da0fd9a + md5: 0abd67c0f7b60d50348fbb32fef50b65 depends: - __osx >=11.0 - aws-c-cal >=0.8.1,<0.8.2.0a0 @@ -851,8 +851,8 @@ packages: platform: osx license: Apache-2.0 license_family: Apache - size: 92547 - timestamp: 1736592866387 + size: 92562 + timestamp: 1737509877079 - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.1-h1a47875_3.conda sha256: 095ac824ea9303eff67e04090ae531d9eb33d2bf8f82eaade39b839c421e16e8 md5: 55a8561fdbbbd34f50f57d9be12ed084 @@ -1056,38 +1056,38 @@ packages: license_family: Apache size: 152983 timestamp: 1734008451473 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-h831e299_5.conda - sha256: 5920009b1c6f9a2bc131a36725251894e4b4773fce29c4b1065d4213ae337abe - md5: 80dd9f0ddf935290d1dc00ec75ff3023 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-h173a860_6.conda + sha256: 335d822eead0a097ffd23677a288e1f18ea22f47a92d4f877419debb93af0e81 + md5: 9a063178f1af0a898526cc24ba7be486 depends: - __glibc >=2.17,<3.0.a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.6,<0.10.7.0a0 - libgcc >=13 - - s2n >=1.5.10,<1.5.11.0a0 + - s2n >=1.5.11,<1.5.12.0a0 arch: x86_64 platform: linux license: Apache-2.0 license_family: Apache - size: 157864 - timestamp: 1734433578570 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-h1a307af_5.conda - sha256: 71f5bf891299f831dceaea12f926c393bf754569e5305387a88b77e1f94612d8 - md5: da8ab0f3eeac93449ec3d531ede92caa + size: 157263 + timestamp: 1737207617838 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-hfd5ba81_6.conda + sha256: d8adfde05cee11057d99c3802e84b2300430a7c7c3c9936165d1d4b25ef59d91 + md5: 4e6771b45cb2b035c62d023dbf0dc000 depends: - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.6,<0.10.7.0a0 - libgcc >=13 - - s2n >=1.5.10,<1.5.11.0a0 + - s2n >=1.5.11,<1.5.12.0a0 arch: aarch64 platform: linux license: Apache-2.0 license_family: Apache - size: 161889 - timestamp: 1734433686109 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-haba67d1_5.conda - sha256: c0a1a2b0750225ac3dc07fd258c88c2be866bf8ac67ba3d50bb4ecec852ff8ee - md5: 4c5ff4134e76426a75b8c548984fa933 + size: 160933 + timestamp: 1737207637279 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-haba67d1_6.conda + sha256: 73722dd175af78b6cbfa033066f0933351f5382a1a737f6c6d9b8cfa84022161 + md5: d02e8f40ff69562903e70a1c6c48b009 depends: - __osx >=11.0 - aws-c-cal >=0.8.1,<0.8.2.0a0 @@ -1096,8 +1096,8 @@ packages: platform: osx license: Apache-2.0 license_family: Apache - size: 135729 - timestamp: 1734433832730 + size: 136048 + timestamp: 1737207681224 - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h11f4f37_12.conda sha256: 512d3969426152d9d5fd886e27b13706122dc3fa90eb08c37b0d51a33d7bb14a md5: 96c3e0221fa2da97619ee82faa341a73 @@ -1141,12 +1141,12 @@ packages: license_family: Apache size: 134371 timestamp: 1734025379525 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.7-hf454442_0.conda - sha256: c2f205a7bf64c5f40eea373b3a0a7c363c9aa9246a13dd7f3d9c6a4434c4fe2d - md5: 947c82025693bebd557f782bb5d6b469 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.9-he1b24dc_1.conda + sha256: 15fbdedc56850f8be5be7a5bcaea1af09c97590e631c024ae089737fc932fc42 + md5: caafc32928a5f7f3f7ef67d287689144 depends: - __glibc >=2.17,<3.0.a0 - - aws-c-auth >=0.8.0,<0.8.1.0a0 + - aws-c-auth >=0.8.1,<0.8.2.0a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 @@ -1158,13 +1158,13 @@ packages: platform: linux license: Apache-2.0 license_family: Apache - size: 114156 - timestamp: 1734146123386 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.7-h2080895_0.conda - sha256: 20bc2dd60e6518d9b8215c2b652ab5c52ee8a997d3b9a5f69e2dabd28cbf26b2 - md5: ae223efa63fbb4262a2d85c3ab3bc4f5 + size: 115413 + timestamp: 1737558687616 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.9-h05b070f_1.conda + sha256: 9e7857fbc33eddc291fa09890ce468a92485d3e3e127bc00bbd1803e34121f84 + md5: e0a2869195f069db88b8932f5b00bee5 depends: - - aws-c-auth >=0.8.0,<0.8.1.0a0 + - aws-c-auth >=0.8.1,<0.8.2.0a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 @@ -1176,14 +1176,14 @@ packages: platform: linux license: Apache-2.0 license_family: Apache - size: 117641 - timestamp: 1734146239779 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.7-h1be5864_0.conda - sha256: 22966164d63808689fffd35945f57756c95337327e28099b5d77b29fc6a56ecc - md5: a37bba7acb62dd70492ee01eacca3b8f + size: 117875 + timestamp: 1737558720047 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.9-hf37e03c_1.conda + sha256: 92e8ca4eefcbbdf4189584c9410382884a06ed3030e5ecaac656dab8c95e6a80 + md5: de65f5e4ab5020103fe70a0eba9432a0 depends: - __osx >=11.0 - - aws-c-auth >=0.8.0,<0.8.1.0a0 + - aws-c-auth >=0.8.1,<0.8.2.0a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 @@ -1193,8 +1193,8 @@ packages: platform: osx license: Apache-2.0 license_family: Apache - size: 97598 - timestamp: 1734146239038 + size: 98731 + timestamp: 1737558731831 - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.2-h4e1184b_0.conda sha256: 0424e380c435ba03b5948d02e8c958866c4eee50ed29e57f99473a5f795a4cfc md5: dcd498d493818b776a77fbc242fbf8e4 @@ -1269,19 +1269,19 @@ packages: license_family: Apache size: 70186 timestamp: 1733994496998 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.8-h8570fcd_1.conda - sha256: ff8f08bc615d3ef6d970df80988200b3ecee76ecfa4885109cd82b30176cfda9 - md5: f21296b496cca1c1fa426b9a3b676e79 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.9-he0e7f3f_2.conda + sha256: c1930569713bd5231d48d885a5e3707ac917b428e8f08189d14064a2bb128adc + md5: 8a4e6fc8a3b285536202b5456a74a940 depends: - __glibc >=2.17,<3.0.a0 - - aws-c-auth >=0.8.0,<0.8.1.0a0 + - aws-c-auth >=0.8.1,<0.8.2.0a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - - aws-c-s3 >=0.7.7,<0.7.8.0a0 + - aws-c-s3 >=0.7.9,<0.7.10.0a0 - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 - libgcc >=13 - libstdcxx >=13 @@ -1289,20 +1289,20 @@ packages: platform: linux license: Apache-2.0 license_family: Apache - size: 354328 - timestamp: 1736598991291 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.8-h92ee776_1.conda - sha256: 114ac89d3936bf801dcbd488ba0b468c7e113a407cb1ee5898259a5202b7e750 - md5: 63546051b5687f793ae977c7994e1339 + size: 353222 + timestamp: 1737565463079 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.9-hab3ce66_2.conda + sha256: c3884fb10e0fd9be5c13256cabcda1afa9d2fcf8878c67214d02fc344509857d + md5: 875968ebffe992b68faf2caebbf32f02 depends: - - aws-c-auth >=0.8.0,<0.8.1.0a0 + - aws-c-auth >=0.8.1,<0.8.2.0a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - - aws-c-s3 >=0.7.7,<0.7.8.0a0 + - aws-c-s3 >=0.7.9,<0.7.10.0a0 - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 - libgcc >=13 - libstdcxx >=13 @@ -1310,38 +1310,38 @@ packages: platform: linux license: Apache-2.0 license_family: Apache - size: 284664 - timestamp: 1736598964131 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.8-h23176ea_1.conda - sha256: db6a31078bb82fb12044d7706239c003568273729f7ba4971c1479b7926ada82 - md5: 31fdd3ffb00f5472196fa95ef08087b7 + size: 283812 + timestamp: 1737565480034 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.9-ha81f72f_2.conda + sha256: ed5f1d19aad53787fdebe13db4709c97eae2092536cc55d3536eba320c4286e1 + md5: c9c034d3239bf25687ca4dd985007ecd depends: - __osx >=11.0 - - aws-c-auth >=0.8.0,<0.8.1.0a0 + - aws-c-auth >=0.8.1,<0.8.2.0a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - - aws-c-s3 >=0.7.7,<0.7.8.0a0 + - aws-c-s3 >=0.7.9,<0.7.10.0a0 - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 - libcxx >=18 arch: arm64 platform: osx license: Apache-2.0 license_family: Apache - size: 236269 - timestamp: 1736599024242 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-h7001638_5.conda - sha256: 849524b09865e84d6926aa814944cf71511aa4a00fffc5ad174c286d5dfac5f0 - md5: fc01d77a7f383b2915f276c73b7d0934 + size: 235976 + timestamp: 1737565563139 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-h4d475cb_6.conda + sha256: 2309d96d537b5c3810c6e9fbf5b6bb7e06ce907a609d172063ab504b2cc67f30 + md5: 6139e84bbb6fdb27ca49c2981613a5fa depends: - __glibc >=2.17,<3.0.a0 - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - - aws-crt-cpp >=0.29.8,<0.29.9.0a0 + - aws-crt-cpp >=0.29.9,<0.29.10.0a0 - libcurl >=8.11.1,<9.0a0 - libgcc >=13 - libstdcxx >=13 @@ -1351,16 +1351,16 @@ packages: platform: linux license: Apache-2.0 license_family: Apache - size: 3088636 - timestamp: 1736598504343 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h90ecb4a_5.conda - sha256: 9467acd0f2df74ea7472aebdfb8b5656a8d403abad2edbce9743d6e88c94fd10 - md5: 33f86f8de1d8cd40f8fe628dc0784437 + size: 3069914 + timestamp: 1737049585807 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h88461e4_6.conda + sha256: f97e071ffb87bc33923f798761ec6a854614ce193913d34d3248515d18357baa + md5: 0d7f1ee2e5572bf9d1fd78f0f2ab6f6b depends: - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - - aws-crt-cpp >=0.29.8,<0.29.9.0a0 + - aws-crt-cpp >=0.29.9,<0.29.10.0a0 - libcurl >=8.11.1,<9.0a0 - libgcc >=13 - libstdcxx >=13 @@ -1370,17 +1370,17 @@ packages: platform: linux license: Apache-2.0 license_family: Apache - size: 2925443 - timestamp: 1736598526637 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-h794939a_5.conda - sha256: 2b1e7d5a45e82604bfdb6de63c53cf0e9495f596cfd90e644a1e67910de7f91c - md5: a2374b4182bf5b2d08b2903393d0c487 + size: 2919798 + timestamp: 1737049659061 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-h0e5014b_6.conda + sha256: 8c21ce4692d1631b96adea099d7c2b905fc5d078db63bf754d85600dcf184651 + md5: a3b7b9a81d8c6a8f963f619d9e362c39 depends: - __osx >=11.0 - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - - aws-crt-cpp >=0.29.8,<0.29.9.0a0 + - aws-crt-cpp >=0.29.9,<0.29.10.0a0 - libcurl >=8.11.1,<9.0a0 - libcxx >=18 - libzlib >=1.3.1,<2.0a0 @@ -1389,8 +1389,8 @@ packages: platform: osx license: Apache-2.0 license_family: Apache - size: 2824168 - timestamp: 1736598935034 + size: 2834057 + timestamp: 1737126583846 - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda sha256: fe07debdb089a3db17f40a7f20d283d75284bb4fc269ef727b8ba6fc93f7cb5a md5: 0a8838771cc2e985cd295e01ae83baf1 @@ -1964,14 +1964,14 @@ packages: license_family: MIT size: 15546 timestamp: 1734302408607 -- conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_1.conda - sha256: 18dca6e2194732df7ebf824abaefe999e4765ebe8e8a061269406ab88fc418b9 - md5: d692e9ba6f92dc51484bf3477e36ce7c +- conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.17.0-pyhd8ed1ab_0.conda + sha256: 006d7e5a0c17a6973596dd86bfc80d74ce541144d2aee2d22d46fd41df560a63 + md5: 7f402b4a1007ee355bc50ce4d24d4a57 depends: - python >=3.9 license: Unlicense - size: 17441 - timestamp: 1733240909987 + size: 17544 + timestamp: 1737517924333 - conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.12.1-h267a509_2.conda sha256: b2e3c449ec9d907dd4656cb0dc93e140f447175b125a3824b31368b06c666bb6 md5: 9ae35c3d96db2c94ce0cef86efdfa2cb @@ -2558,13 +2558,13 @@ packages: license_family: Apache size: 1178260 timestamp: 1736008642885 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-h9d9f30d_8_cpu.conda - build_number: 8 - sha256: f6c72ce82d145cb94a1131b68547b88056fb48158a382f9ce763286fce53ee65 - md5: 1c9caae53b14a385b59e87687adad2d6 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-19.0.0-hce2e470_3_cpu.conda + build_number: 3 + sha256: 3b85b78a52ce673798e3c880fa41b818554912e722e81ca20cf95ba9257f13f0 + md5: a50ba9a0789061ea395a47a23d6a7734 depends: - __glibc >=2.17,<3.0.a0 - - aws-crt-cpp >=0.29.8,<0.29.9.0a0 + - aws-crt-cpp >=0.29.9,<0.29.10.0a0 - aws-sdk-cpp >=1.11.458,<1.11.459.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-identity-cpp >=1.10.0,<1.10.1.0a0 @@ -2582,7 +2582,7 @@ packages: - libgoogle-cloud-storage >=2.33.0,<2.34.0a0 - libre2-11 >=2024.7.2 - libstdcxx >=13 - - libutf8proc >=2.9.0,<2.10.0a0 + - libutf8proc >=2.10.0,<2.11.0a0 - libzlib >=1.3.1,<2.0a0 - lz4-c >=1.10.0,<1.11.0a0 - orc >=2.0.3,<2.0.4.0a0 @@ -2596,15 +2596,14 @@ packages: arch: x86_64 platform: linux license: Apache-2.0 - license_family: APACHE - size: 8801586 - timestamp: 1736610546493 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-h47f80e1_8_cpu.conda - build_number: 8 - sha256: bf381dfa84e94ffce715c46352dd99f6f6ace69859b0efb822500f8882be429a - md5: daceef1881b4ddc72bb5b225a122c633 - depends: - - aws-crt-cpp >=0.29.8,<0.29.9.0a0 + size: 8899665 + timestamp: 1737343852413 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-h4065667_12_cpu.conda + build_number: 12 + sha256: 0ac8aab370ef7a21e912cc312e5cbfa59afea8e004f5a372f2f25f96de0c9e9a + md5: 4789bb7ae93fe12bfd81169157896f49 + depends: + - aws-crt-cpp >=0.29.9,<0.29.10.0a0 - aws-sdk-cpp >=1.11.458,<1.11.459.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-identity-cpp >=1.10.0,<1.10.1.0a0 @@ -2618,11 +2617,11 @@ packages: - libbrotlidec >=1.1.0,<1.2.0a0 - libbrotlienc >=1.1.0,<1.2.0a0 - libgcc >=13 - - libgoogle-cloud >=2.33.0,<2.34.0a0 - - libgoogle-cloud-storage >=2.33.0,<2.34.0a0 + - libgoogle-cloud >=2.34.0,<2.35.0a0 + - libgoogle-cloud-storage >=2.34.0,<2.35.0a0 - libre2-11 >=2024.7.2 - libstdcxx >=13 - - libutf8proc >=2.9.0,<2.10.0a0 + - libutf8proc >=2.10.0,<2.11.0a0 - libzlib >=1.3.1,<2.0a0 - lz4-c >=1.10.0,<1.11.0a0 - orc >=2.0.3,<2.0.4.0a0 @@ -2636,16 +2635,15 @@ packages: arch: aarch64 platform: linux license: Apache-2.0 - license_family: APACHE - size: 8045923 - timestamp: 1736611764958 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-hf3eb8e5_8_cpu.conda - build_number: 8 - sha256: 766e46b45520773db93ee1a91951cc135a85544bba738e7b378d31f16097753f - md5: fdc79871e6c243b819497337215416d9 + size: 8051570 + timestamp: 1737451538096 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-19.0.0-hd1aa4b5_4_cpu.conda + build_number: 4 + sha256: bf027b2e77b75b71b5213131fc4b06bbca6f1e195fde62090343e0a808d08bbe + md5: 94c2bcca143c043f8083a1f275de3caf depends: - __osx >=11.0 - - aws-crt-cpp >=0.29.8,<0.29.9.0a0 + - aws-crt-cpp >=0.29.9,<0.29.10.0a0 - aws-sdk-cpp >=1.11.458,<1.11.459.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-identity-cpp >=1.10.0,<1.10.1.0a0 @@ -2658,10 +2656,10 @@ packages: - libbrotlidec >=1.1.0,<1.2.0a0 - libbrotlienc >=1.1.0,<1.2.0a0 - libcxx >=18 - - libgoogle-cloud >=2.33.0,<2.34.0a0 - - libgoogle-cloud-storage >=2.33.0,<2.34.0a0 + - libgoogle-cloud >=2.34.0,<2.35.0a0 + - libgoogle-cloud-storage >=2.34.0,<2.35.0a0 - libre2-11 >=2024.7.2 - - libutf8proc >=2.9.0,<2.10.0a0 + - libutf8proc >=2.10.0,<2.11.0a0 - libzlib >=1.3.1,<2.0a0 - lz4-c >=1.10.0,<1.11.0a0 - orc >=2.0.3,<2.0.4.0a0 @@ -2669,165 +2667,155 @@ packages: - snappy >=1.2.1,<1.3.0a0 - zstd >=1.5.6,<1.6.0a0 constrains: - - arrow-cpp <0.0a0 - parquet-cpp <0.0a0 + - arrow-cpp <0.0a0 - apache-arrow-proc =*=cpu arch: arm64 platform: osx license: Apache-2.0 - license_family: APACHE - size: 5497383 - timestamp: 1736608604724 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-hcb10f89_8_cpu.conda - build_number: 8 - sha256: 126a6e78199311d99e38b9d633ce3e0290795ac68ce3ee8a9b91436c85c4095d - md5: 544759904898499f634f8f88a9907f88 + size: 5532664 + timestamp: 1737458545986 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-19.0.0-hcb10f89_3_cpu.conda + build_number: 3 + sha256: f4e4b14fc2aaaf0d0a16a3b4b4dcae84b1b77daa02754f0873901089ce786a49 + md5: 3e1e31382e9c6ecd0b24bd8f6ddb33ec depends: - __glibc >=2.17,<3.0.a0 - - libarrow 18.1.0 h9d9f30d_8_cpu + - libarrow 19.0.0 hce2e470_3_cpu - libgcc >=13 - libstdcxx >=13 arch: x86_64 platform: linux license: Apache-2.0 - license_family: APACHE - size: 611558 - timestamp: 1736610592458 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h3b568fd_8_cpu.conda - build_number: 8 - sha256: c94844ab1d8fafe17775161283bd1fe7ab1f93f660fc5ba0c01bd33fe3d21eaf - md5: 7a8e6a363d2f39a2f3df3f181d12692d + size: 618570 + timestamp: 1737343896206 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h3b568fd_12_cpu.conda + build_number: 12 + sha256: c93daa943342eb848e5a44d4f48749f96decbde7b0f7d830fe56d0d506c03576 + md5: 8ec3804980e19b70ebffbeb623ce084b depends: - - libarrow 18.1.0 h47f80e1_8_cpu + - libarrow 18.1.0 h4065667_12_cpu - libgcc >=13 - libstdcxx >=13 arch: aarch64 platform: linux license: Apache-2.0 - license_family: APACHE - size: 579798 - timestamp: 1736611846905 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-hf07054f_8_cpu.conda - build_number: 8 - sha256: 29196dc6b2e4488f98bd8950de6333efe5d1a9d0cc62e186694946766185475e - md5: 8db96829f8e427167f450c7467a1ba44 + size: 579114 + timestamp: 1737451608994 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-19.0.0-hf07054f_4_cpu.conda + build_number: 4 + sha256: 40de7e71d9fd4b799c452b3a0328ea260a3871de621f5344fb39b7f48371df75 + md5: e3265f8ab44051131966bd6f7b07a6e3 depends: - __osx >=11.0 - - libarrow 18.1.0 hf3eb8e5_8_cpu + - libarrow 19.0.0 hd1aa4b5_4_cpu - libcxx >=18 arch: arm64 platform: osx license: Apache-2.0 - license_family: APACHE - size: 484442 - timestamp: 1736608695654 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-hcb10f89_8_cpu.conda - build_number: 8 - sha256: fe50edf030b5ccbadec2bf8f90d4cdf32d63ec52ba26233fc2c8bfbe43df3b15 - md5: 894a5ed78728b77c997fefeee222ac4d + size: 481968 + timestamp: 1737458659266 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-19.0.0-hcb10f89_3_cpu.conda + build_number: 3 + sha256: c5cdf03d72d028e8af774aabd29cd92fb87f54cd579a9ffe77ad228c51faaa82 + md5: 1face9ff13ec61bfb065063d35fda864 depends: - __glibc >=2.17,<3.0.a0 - - libarrow 18.1.0 h9d9f30d_8_cpu - - libarrow-acero 18.1.0 hcb10f89_8_cpu + - libarrow 19.0.0 hce2e470_3_cpu + - libarrow-acero 19.0.0 hcb10f89_3_cpu - libgcc >=13 - - libparquet 18.1.0 h081d1f1_8_cpu + - libparquet 19.0.0 h081d1f1_3_cpu - libstdcxx >=13 arch: x86_64 platform: linux license: Apache-2.0 - license_family: APACHE - size: 588032 - timestamp: 1736610711976 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h3b568fd_8_cpu.conda - build_number: 8 - sha256: bb87d8e633074c9759d93abb277d31314dc66fad741253b48e8265e186228c5b - md5: 11856da892b919cc27bd62638d701c65 + size: 585153 + timestamp: 1737344009570 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h3b568fd_12_cpu.conda + build_number: 12 + sha256: 40bbdb394db6f405e6fae56bcbfc88fa433130668d2b39d1f109b7d6ffb8be76 + md5: e9b9a9941d35dff0a168741bdd54877e depends: - - libarrow 18.1.0 h47f80e1_8_cpu - - libarrow-acero 18.1.0 h3b568fd_8_cpu + - libarrow 18.1.0 h4065667_12_cpu + - libarrow-acero 18.1.0 h3b568fd_12_cpu - libgcc >=13 - - libparquet 18.1.0 hfc78867_8_cpu + - libparquet 18.1.0 hfc78867_12_cpu - libstdcxx >=13 arch: aarch64 platform: linux license: Apache-2.0 - license_family: APACHE - size: 560571 - timestamp: 1736611941995 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-hf07054f_8_cpu.conda - build_number: 8 - sha256: bff2d39e418eadab8c522a536449ac90f070dd8e83e2bd5e67a9c3eb8ecf712f - md5: 7b3736f49b3ba299b7799aeb448cb830 + size: 559928 + timestamp: 1737451706623 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-19.0.0-hf07054f_4_cpu.conda + build_number: 4 + sha256: c9b01193f3dc2855276a743aa2d107b3893d886dbc561944154acc4c61a9b4cb + md5: c6588e0236da980424ca0b288c893d1a depends: - __osx >=11.0 - - libarrow 18.1.0 hf3eb8e5_8_cpu - - libarrow-acero 18.1.0 hf07054f_8_cpu + - libarrow 19.0.0 hd1aa4b5_4_cpu + - libarrow-acero 19.0.0 hf07054f_4_cpu - libcxx >=18 - - libparquet 18.1.0 h636d7b7_8_cpu + - libparquet 19.0.0 h636d7b7_4_cpu arch: arm64 platform: osx license: Apache-2.0 - license_family: APACHE - size: 491001 - timestamp: 1736609758514 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-h08228c5_8_cpu.conda - build_number: 8 - sha256: dca372e27724904577315b8db3793e027a5c152a485e505e630a57b15634cd85 - md5: 46eaf81238da6f3ffab1f3ffdcee382e + size: 488490 + timestamp: 1737459936234 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-19.0.0-h08228c5_3_cpu.conda + build_number: 3 + sha256: 414297c69d08ba45af0fccb5e22cc3b3e92181f3928eba1e1b1ab3641970c7e0 + md5: 8527e1e45c495991fd88f6531e176556 depends: - __glibc >=2.17,<3.0.a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.1.0 h9d9f30d_8_cpu - - libarrow-acero 18.1.0 hcb10f89_8_cpu - - libarrow-dataset 18.1.0 hcb10f89_8_cpu + - libarrow 19.0.0 hce2e470_3_cpu + - libarrow-acero 19.0.0 hcb10f89_3_cpu + - libarrow-dataset 19.0.0 hcb10f89_3_cpu - libgcc >=13 - libprotobuf >=5.28.3,<5.28.4.0a0 - libstdcxx >=13 arch: x86_64 platform: linux license: Apache-2.0 - license_family: APACHE - size: 521707 - timestamp: 1736610765240 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h1e9d426_8_cpu.conda - build_number: 8 - sha256: 1896ea00da28e10670f7ba51bb543e68a87f717e9f5692fee44268f1a13d9eee - md5: e7dc0209e065a2b51f19848cefa4b1ab + size: 521371 + timestamp: 1737344062052 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h1e9d426_12_cpu.conda + build_number: 12 + sha256: 6216a1c48e41d3b304e87b19a8ff37c10e51ceca83bff5e942d763c93f6f55a1 + md5: f647dcbf46aebc86f9975ff3c856de45 depends: - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.1.0 h47f80e1_8_cpu - - libarrow-acero 18.1.0 h3b568fd_8_cpu - - libarrow-dataset 18.1.0 h3b568fd_8_cpu + - libarrow 18.1.0 h4065667_12_cpu + - libarrow-acero 18.1.0 h3b568fd_12_cpu + - libarrow-dataset 18.1.0 h3b568fd_12_cpu - libgcc >=13 - libprotobuf >=5.28.3,<5.28.4.0a0 - libstdcxx >=13 arch: aarch64 platform: linux license: Apache-2.0 - license_family: APACHE - size: 517189 - timestamp: 1736611989417 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-h4239455_8_cpu.conda - build_number: 8 - sha256: ae52d926ebfc8edb0728824f2918a825d39bd85a4ef27fe2b73656cfecdd7c69 - md5: f67eb19d22ba355cced8c86073ad49b1 + size: 516135 + timestamp: 1737451754178 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-19.0.0-h4239455_4_cpu.conda + build_number: 4 + sha256: 1de1100bddcaa4aacae5cc30e3c0ae3259d130bee7b3d52a57a1c9950e0c6588 + md5: 6988cd2fdf01cae4bc454859a7cf8bac depends: - __osx >=11.0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.1.0 hf3eb8e5_8_cpu - - libarrow-acero 18.1.0 hf07054f_8_cpu - - libarrow-dataset 18.1.0 hf07054f_8_cpu + - libarrow 19.0.0 hd1aa4b5_4_cpu + - libarrow-acero 19.0.0 hf07054f_4_cpu + - libarrow-dataset 19.0.0 hf07054f_4_cpu - libcxx >=18 - libprotobuf >=5.28.3,<5.28.4.0a0 arch: arm64 platform: osx license: Apache-2.0 - license_family: APACHE - size: 452161 - timestamp: 1736609917123 + size: 449975 + timestamp: 1737460148737 - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-26_linux64_openblas.conda build_number: 26 sha256: 30bd658682b124243f8e52d8edf8a19e7be1bc31e4fe4baec30a64002dc8cd0c @@ -3515,9 +3503,9 @@ packages: license_family: Apache size: 1254656 timestamp: 1735648569457 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-2.33.0-hccf9d24_1.conda - sha256: d3d4def86d880431928799ba90ca97e57c2f05677c03af8de2337502926c492c - md5: a2724014eb04f14bd71d35f45b062dd0 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-2.34.0-hccf9d24_0.conda + sha256: 54267dda8fafc2a2d379ef77b6029d8240e0628d4b29758f788fb903f84397a3 + md5: 1ce0fd876001c40801b40fea22987e41 depends: - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 @@ -3528,16 +3516,16 @@ packages: - libstdcxx >=13 - openssl >=3.4.0,<4.0a0 constrains: - - libgoogle-cloud 2.33.0 *_1 + - libgoogle-cloud 2.34.0 *_0 arch: aarch64 platform: linux license: Apache-2.0 license_family: Apache - size: 1253019 - timestamp: 1735649566849 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-2.33.0-hdbe95d5_1.conda - sha256: ce95aca02451694a4154c7770b6addf4fb859abf17912de6ec947da8469a56ce - md5: 91de1fbab8610974c0094c266bc63435 + size: 1256586 + timestamp: 1737285242684 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-2.34.0-hdbe95d5_0.conda + sha256: 919d8cbcd47d5bd2244c55b2bb87e2bd2eed8215996aab8435cb7123ffd9d20e + md5: 69826544e7978fcaa6bc8c1962d96ad6 depends: - __osx >=11.0 - libabseil * cxx17* @@ -3548,13 +3536,13 @@ packages: - libprotobuf >=5.28.3,<5.28.4.0a0 - openssl >=3.4.0,<4.0a0 constrains: - - libgoogle-cloud 2.33.0 *_1 + - libgoogle-cloud 2.34.0 *_0 arch: arm64 platform: osx license: Apache-2.0 license_family: Apache - size: 877594 - timestamp: 1735648230965 + size: 878217 + timestamp: 1737284441192 - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.33.0-h0121fbd_1.conda sha256: 41022523320ca8633a6c615710823e596efadb50f06d724e1a0c81e27994f257 md5: b0cfb5044685a7a9fa43ae669124f0a0 @@ -3574,15 +3562,15 @@ packages: license_family: Apache size: 784357 timestamp: 1735648759177 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-storage-2.33.0-hb9b2b65_1.conda - sha256: 5eda1cbba68709b91b370b3792c9cfd7bec4ac4e2262f0887d12e1f000ae1191 - md5: 45df2267ff4d8ce532e8d300ce0b0829 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-storage-2.34.0-hb9b2b65_0.conda + sha256: 4ad4fb7c02dcfa4c86dcf9591e0131a01fc0f2c3f2729c12882b944ddf2b8a9d + md5: 0732a5988f7f556f2c1d1f51026fc1be depends: - libabseil - libcrc32c >=1.1.2,<1.2.0a0 - libcurl - libgcc >=13 - - libgoogle-cloud 2.33.0 hccf9d24_1 + - libgoogle-cloud 2.34.0 hccf9d24_0 - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - openssl @@ -3590,26 +3578,26 @@ packages: platform: linux license: Apache-2.0 license_family: Apache - size: 737518 - timestamp: 1735649773462 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-storage-2.33.0-h7081f7f_1.conda - sha256: c0524a22064bc17f5c037da09ba54cc9e767741ef645178e499750c44bec2531 - md5: af8e51382464d4cc2d0054977c40a732 + size: 739678 + timestamp: 1737285399565 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-storage-2.34.0-h7081f7f_0.conda + sha256: 79f6b93fb330728530036b2b38764e9d42e0eedd3ae7e549ac7eae49acd1e52b + md5: f09cb03f9cf847f1dc41b4c1f65c97c2 depends: - __osx >=11.0 - libabseil - libcrc32c >=1.1.2,<1.2.0a0 - libcurl - libcxx >=18 - - libgoogle-cloud 2.33.0 hdbe95d5_1 + - libgoogle-cloud 2.34.0 hdbe95d5_0 - libzlib >=1.3.1,<2.0a0 - openssl arch: arm64 platform: osx license: Apache-2.0 license_family: Apache - size: 526963 - timestamp: 1735649222088 + size: 529202 + timestamp: 1737285376801 - conda: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.67.1-h25350d4_1.conda sha256: 014627485b3cf0ea18e04c0bab07be7fb98722a3aeeb58477acc7e1c3d2f911e md5: 0c6497a760b99a926c7c12b74951a39c @@ -3939,13 +3927,13 @@ packages: license_family: BSD size: 4165774 timestamp: 1730772154295 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-h081d1f1_8_cpu.conda - build_number: 8 - sha256: 2c6d900d4e9dd3c4000886d76d3f8a099e904667ebc6935b49428e6e9b766481 - md5: a9fa0ef309406c84b46db3a28efd761e +- conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-19.0.0-h081d1f1_3_cpu.conda + build_number: 3 + sha256: 287c4864b849180ce9e447df8227da2c4006001056e1668dacc3365264b0e828 + md5: 95f8b5758148e62a055f4c6538a31f0b depends: - __glibc >=2.17,<3.0.a0 - - libarrow 18.1.0 h9d9f30d_8_cpu + - libarrow 19.0.0 hce2e470_3_cpu - libgcc >=13 - libstdcxx >=13 - libthrift >=0.21.0,<0.21.1.0a0 @@ -3953,15 +3941,14 @@ packages: arch: x86_64 platform: linux license: Apache-2.0 - license_family: APACHE - size: 1207011 - timestamp: 1736610684584 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-hfc78867_8_cpu.conda - build_number: 8 - sha256: 2ed6b9eac4504051ddc094ea3f3a2b3198d4d25a443a96fa2971d8075d790c31 - md5: 9a907190c9e2c6bf1a29569700218f0b + size: 1227537 + timestamp: 1737343982323 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-hfc78867_12_cpu.conda + build_number: 12 + sha256: 224da9fb417e1dc569700cddf6dd7febe9a6e5c12547a389a5b934b8d385c4f8 + md5: 517447be85cda09f9410ca609c69499d depends: - - libarrow 18.1.0 h47f80e1_8_cpu + - libarrow 18.1.0 h4065667_12_cpu - libgcc >=13 - libstdcxx >=13 - libthrift >=0.21.0,<0.21.1.0a0 @@ -3969,25 +3956,23 @@ packages: arch: aarch64 platform: linux license: Apache-2.0 - license_family: APACHE - size: 1117465 - timestamp: 1736611918180 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-h636d7b7_8_cpu.conda - build_number: 8 - sha256: 4991519ef4264abc7160e9faaf8ff01d4731bf1497076bef1895d6c366f796eb - md5: b8bd275a49877fdec62ff787818a869d + size: 1116762 + timestamp: 1737451682325 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-19.0.0-h636d7b7_4_cpu.conda + build_number: 4 + sha256: d394423b8a096cec5481ef4cdb4d39dd4b89949cd6f23bdc14896d8af36d78f3 + md5: 639473b0344e0d2f46feb544cff5c6d8 depends: - __osx >=11.0 - - libarrow 18.1.0 hf3eb8e5_8_cpu + - libarrow 19.0.0 hd1aa4b5_4_cpu - libcxx >=18 - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 arch: arm64 platform: osx license: Apache-2.0 - license_family: APACHE - size: 873593 - timestamp: 1736609701839 + size: 885681 + timestamp: 1737459816091 - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.45-h943b412_0.conda sha256: b8f5b5ba9a14dedf7c97c01300de492b1b52b68eacbc3249a13fdbfa82349a2f md5: 85cbdaacad93808395ac295b5667d25b @@ -4147,9 +4132,9 @@ packages: license: ISC size: 164972 timestamp: 1716828607917 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.48.0-hee588c1_0.conda - sha256: 7bb84f44e1bd756da4a3d0d43308324a5533e6ba9f4772475884bce44d405064 - md5: 84bd1c9a82b455e7a2f390375fb38f90 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.48.0-hee588c1_1.conda + sha256: 22853d289ef6ec8a5b20f1aa261895b06525439990d3b139f8bfd0b5c5e32a3a + md5: 3fa05c528d8a1e2a67bbf1e36f22d3bc depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -4157,30 +4142,30 @@ packages: arch: x86_64 platform: linux license: Unlicense - size: 876582 - timestamp: 1737123945341 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.48.0-h5eb1b54_0.conda - sha256: b4365ab7c74a2e6c0444eb950367fa3ca56a87c9921b2faa5ad032fe7a7df682 - md5: 1998946fa3ccf38a07b44a879b2227ae + size: 878223 + timestamp: 1737564987837 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.48.0-h5eb1b54_1.conda + sha256: 81dd9bf66c7f1d9064e007e2c787133100c406e7ca2de61dba9fb7b87372f255 + md5: 4f3a61fe206f20b27c385ee608bcdfda depends: - libgcc >=13 - libzlib >=1.3.1,<2.0a0 arch: aarch64 platform: linux license: Unlicense - size: 1044953 - timestamp: 1737123983895 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.48.0-h3f77e49_0.conda - sha256: b31169cf0ca7b6835baca4ab92d6cf2eee83b1a12a11b72f39521e8baf4d6acb - md5: 714719df4f49e30f9728956f240846ca + size: 1044879 + timestamp: 1737565049785 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.48.0-h3f77e49_1.conda + sha256: 17c06940cc2a13fd6a17effabd6881b1477db38b2cd3ee2571092d293d3fdd75 + md5: 4c55169502ecddf8077973a987d08f08 depends: - __osx >=11.0 - libzlib >=1.3.1,<2.0a0 arch: arm64 platform: osx license: Unlicense - size: 853163 - timestamp: 1737124192432 + size: 852831 + timestamp: 1737564996616 - conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hf672d98_0.conda sha256: 0407ac9fda2bb67e11e357066eff144c845801d00b5f664efbc48813af1e7bb9 md5: be2de152d8073ef1c01b7728475f2fe7 @@ -4365,9 +4350,9 @@ packages: license: HPND size: 370600 timestamp: 1734398863052 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.9.0-hb9d3cd8_1.conda - sha256: 9794e6388e780c3310d46f773bbc924d4053375c3fcdb07a704b57f4616db928 - md5: 1e936bd23d737aac62a18e9a1e7f8b18 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.10.0-h4c51ac1_0.conda + sha256: 8e41563ee963bf8ded06da45f4e70bf42f913cb3c2e79364eb3218deffa3cd74 + md5: aeccfff2806ae38430638ffbb4be9610 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -4375,30 +4360,30 @@ packages: platform: linux license: MIT license_family: MIT - size: 81500 - timestamp: 1732868419835 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.9.0-h86ecc28_1.conda - sha256: 37a1833c55f9945724cd4b3eb6a1469032cc754a1dd725f191c34154ad2ba7e4 - md5: 699f155da290be3a1a64c932c6728991 + size: 82745 + timestamp: 1737244366901 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.10.0-ha346350_0.conda + sha256: 9c333e07b76ae1ea2c882db764be52dc82f632be66d993a50b35ca9c5475074a + md5: c5166bcfb8348e8fc31ee16ec3981a5e depends: - libgcc >=13 arch: aarch64 platform: linux license: MIT license_family: MIT - size: 81526 - timestamp: 1732868466862 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.9.0-h5505292_1.conda - sha256: ea88f06e97ef8fa2490f7594f8885bb542577226edf8abba3144302d951a53c2 - md5: f777470d31c78cd0abe1903a2fda436f + size: 82679 + timestamp: 1737329054400 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.10.0-hda25de7_0.conda + sha256: aca3ef31d3dff5cefd3790742a5ee6548f1cf0201d0e8cee08b01da503484eb6 + md5: 5f741aed1d8d393586a5fdcaaa87f45c depends: - __osx >=11.0 arch: arm64 platform: osx license: MIT license_family: MIT - size: 83000 - timestamp: 1732868631531 + size: 83628 + timestamp: 1737244450097 - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda sha256: 787eb542f055a2b3de553614b25f09eefb0a0931b0c87dbcce6efdfd92f04f18 md5: 40b61aab5c7ba9ff276c41cfffe6b80b @@ -4752,47 +4737,47 @@ packages: license_family: BSD size: 24048 timestamp: 1733219945697 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011705-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025012205-release.conda noarch: python - sha256: 15578c7bc78001d3882c3b9af9d7d8bf3566c68ae133870038be055c8dfd90e9 - md5: 7e6c35d82044e8d31e9327e7d90bfb2b + sha256: 63e2ce51c01fdb5a73f62ea5f862acea5946f45d6b6bd63dafc78d242822e1b7 + md5: 5289b5be19bf0f500e1a06f44d816343 depends: - - max-core ==25.1.0.dev2025011705 release - - max-python >=25.1.0.dev2025011705,<26.0a0 - - mojo-jupyter ==25.1.0.dev2025011705 release - - mblack ==25.1.0.dev2025011705 release + - max-core ==25.1.0.dev2025012205 release + - max-python >=25.1.0.dev2025012205,<26.0a0 + - mojo-jupyter ==25.1.0.dev2025012205 release + - mblack ==25.1.0.dev2025012205 release license: LicenseRef-Modular-Proprietary - size: 9920 - timestamp: 1737091778690 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025011705-release.conda - sha256: 3e39d779710559206129052c64ac530b9d262288f75812ba07c3e3e395a0e18e - md5: 5575de33b0503143e635ade746f057c3 + size: 9919 + timestamp: 1737524122346 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025012205-release.conda + sha256: 061e7c8aba735fd2d15aca623c2f81452723bc0a5ab1e5a63af1761a9eaba9ef + md5: 2d8a82ff460cd4e03382a9151a8cf8d8 depends: - - mblack ==25.1.0.dev2025011705 release + - mblack ==25.1.0.dev2025012205 release license: LicenseRef-Modular-Proprietary - size: 244764907 - timestamp: 1737091186388 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025011705-release.conda - sha256: a9e7747e7cb7ff01dc58f4c7f5772d2b4483693dd200c88653b1ec2dda46bc8b - md5: a9b13b577fb1bcc14b330f5a4185023c + size: 242139658 + timestamp: 1737523134733 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025012205-release.conda + sha256: eade442118da29d8b42289e6859699b4faafcf51d02189729259a2e7a97a0dcc + md5: 8e0412932905d3a4decf17acd50899ce depends: - - mblack ==25.1.0.dev2025011705 release + - mblack ==25.1.0.dev2025012205 release license: LicenseRef-Modular-Proprietary - size: 247240781 - timestamp: 1737091778688 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025011705-release.conda - sha256: 9369b738945ef783af1e4caf2676bd6a299ff86e4ef9504e7a5ee69841fffa01 - md5: c4397350b325ae5a0e07f61e483fc3e5 + size: 244683388 + timestamp: 1737524122344 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025012205-release.conda + sha256: b5ccec88293901182a43d7f407d04b522b729cefaab066788496adec5bd3f2d2 + md5: bd5da5f25bd5151b4b691c34acdbeff0 depends: - - mblack ==25.1.0.dev2025011705 release + - mblack ==25.1.0.dev2025012205 release license: LicenseRef-Modular-Proprietary - size: 206615275 - timestamp: 1737092643231 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025011705-3.12release.conda - sha256: bdda011f73105d5d91e29abdacc4e7304501249c3bb50e83517661cdea4ef56a - md5: 0ddfaa3caa3647a0cbcdf394774ee6be + size: 203820478 + timestamp: 1737523349069 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025012205-3.12release.conda + sha256: ceb4d33afe634401be386903e2f516b78f2b5e23e15cbedad42cce2600c97b7d + md5: ecfacd66a5b71794c53a468fbefcef6a depends: - - max-core ==25.1.0.dev2025011705 release + - max-core ==25.1.0.dev2025012205 release - python 3.12.* - fastapi - httpx @@ -4813,13 +4798,13 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 124617960 - timestamp: 1737091186397 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025011705-3.12release.conda - sha256: 3ec1d98731b5c86829e7dd0d76b3ad820173a418f58833ea0237e34d356b58c6 - md5: 0ed0380d3ee48a36fe43f85f61fd9fe3 + size: 119861319 + timestamp: 1737523134743 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025012205-3.12release.conda + sha256: 14ae6f16ce6c895de574bb02307cd58e87e32013bde0d905d6a1a67e686ca204 + md5: fb06394177c69b52c2ecf9ceaa7b308b depends: - - max-core ==25.1.0.dev2025011705 release + - max-core ==25.1.0.dev2025012205 release - python 3.12.* - fastapi - httpx @@ -4840,13 +4825,13 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 127367910 - timestamp: 1737091778698 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025011705-3.12release.conda - sha256: 853e12e0ac11f3dcf5392e94cc927233ba940a71a5cf73c0cec54ad4917256c0 - md5: 53e9620bd08e983c5e52e02afef0a990 + size: 122258493 + timestamp: 1737524122355 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025012205-3.12release.conda + sha256: 35e34095931d604893d014773f8c61c1c09a9888946dec4a01f1db827bd2f439 + md5: 589be4ace2edf68cfc3cf1d0cc429864 depends: - - max-core ==25.1.0.dev2025011705 release + - max-core ==25.1.0.dev2025012205 release - python 3.12.* - fastapi - httpx @@ -4867,12 +4852,12 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 110545057 - timestamp: 1737092643234 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011705-release.conda + size: 105223218 + timestamp: 1737523349072 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012205-release.conda noarch: python - sha256: 180bbe7d8b76c5d0f453b72f81fae10522b7a98a31e6fbeff542dbb31bb9b613 - md5: 680622d3117019e99ddc173efab357c7 + sha256: 31bce03569c241ade0a344f1fe1a683f928fe367ae57147b3e316783631822fe + md5: c54b5f7d0d777b8995e38978d8626ffc depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -4882,8 +4867,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130807 - timestamp: 1737091778695 + size: 130797 + timestamp: 1737524122352 - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda sha256: 78c1bbe1723449c52b7a9df1af2ee5f005209f67e40b6e1d3c7619127c43b1c7 md5: 592132998493b3ff25fd7479396e8351 @@ -4893,18 +4878,18 @@ packages: license_family: MIT size: 14465 timestamp: 1733255681319 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011705-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025012205-release.conda noarch: python - sha256: eab543a5c31c091b3d042980d068a950c51905d14a18532710f9be94ba88ba5d - md5: eea061b963a95002a8740d4b4f506d44 + sha256: 78e2818c9d17321c5fe73f9dca3d7a9c51ad989c00f8ea9721deb94a4f03800e + md5: ca3c9282adb4a04dbd02f3ab8e73445c depends: - - max-core ==25.1.0.dev2025011705 release + - max-core ==25.1.0.dev2025012205 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22929 - timestamp: 1737091778696 + size: 22925 + timestamp: 1737524122353 - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py312h178313f_2.conda sha256: b05bc8252a6e957bf4a776ed5e0e61d1ba88cdc46ccb55890c72cc58b10371f4 md5: 5b5e3267d915a107eca793d52e1b780a @@ -5624,23 +5609,23 @@ packages: license_family: MIT size: 8381 timestamp: 1726802424786 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-18.1.0-py312h7900ff3_0.conda - sha256: 46a61c29375d3bf1933eae61c7861394c168898915d59fc99bf05e46de2ff5ad - md5: ac65b70df28687c6af4270923c020bdd - depends: - - libarrow-acero 18.1.0.* - - libarrow-dataset 18.1.0.* - - libarrow-substrait 18.1.0.* - - libparquet 18.1.0.* - - pyarrow-core 18.1.0 *_0_* +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-19.0.0-py312h7900ff3_0.conda + sha256: 7d98e626ec65b882341482ad15ecb7a670ee41dbaf375aa660ba8b7d0a940504 + md5: 14f86e63b5c214dd9fb34e5472d4bafc + depends: + - libarrow-acero 19.0.0.* + - libarrow-dataset 19.0.0.* + - libarrow-substrait 19.0.0.* + - libparquet 19.0.0.* + - pyarrow-core 19.0.0 *_0_* - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 arch: x86_64 platform: linux license: Apache-2.0 license_family: APACHE - size: 25213 - timestamp: 1732610785600 + size: 25289 + timestamp: 1737128438818 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-18.1.0-py312h8025657_0.conda sha256: 49db959887cb89b44053a44a98d0f35644fc0b2003587492f02b56046de0b60a md5: 9bb7d32e96a5dcb5ea7fd90a11a83656 @@ -5658,43 +5643,43 @@ packages: license_family: APACHE size: 25374 timestamp: 1732611006864 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-18.1.0-py312h1f38498_0.conda - sha256: 06c0e208d5bf15051874097366c8e8e5db176dffba38526f227a34e80cc8e9bc - md5: 3710616b880b31d0c8afd8ae7e12392a - depends: - - libarrow-acero 18.1.0.* - - libarrow-dataset 18.1.0.* - - libarrow-substrait 18.1.0.* - - libparquet 18.1.0.* - - pyarrow-core 18.1.0 *_0_* +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-19.0.0-py312h1f38498_0.conda + sha256: 9d693901833c2ff4e5d67e1f2f6df50f699e1cec2f580c26d42299654830855a + md5: bd5e025292ff1127aa1534b59e55c4d0 + depends: + - libarrow-acero 19.0.0.* + - libarrow-dataset 19.0.0.* + - libarrow-substrait 19.0.0.* + - libparquet 19.0.0.* + - pyarrow-core 19.0.0 *_0_* - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 arch: arm64 platform: osx license: Apache-2.0 license_family: APACHE - size: 25375 - timestamp: 1732610892198 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-18.1.0-py312h01725c0_0_cpu.conda - sha256: 948a4161c56f846d374a3721a657e58ddbc992a29b3b3e7a6411975c30361d94 - md5: ee80934a6c280ff8635f8db5dec11e04 + size: 25428 + timestamp: 1737128284082 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-19.0.0-py312h01725c0_0_cpu.conda + sha256: 81178d0de0ac851a0a78e09c81ad92274cf770a38b28acdf53a0cfb2122d15aa + md5: 7ab1143b9ac1af5cc4a630706f643627 depends: - __glibc >=2.17,<3.0.a0 - - libarrow 18.1.0.* *cpu + - libarrow 19.0.0.* *cpu - libgcc >=13 - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 constrains: - - numpy >=1.21,<3 - apache-arrow-proc =*=cpu + - numpy >=1.21,<3 arch: x86_64 platform: linux license: Apache-2.0 license_family: APACHE - size: 4612916 - timestamp: 1732610377259 + size: 5230953 + timestamp: 1737128097002 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-18.1.0-py312h66f7834_0_cpu.conda sha256: e7eb062145be554c23dfefa0ebe8c5f6ae8c59635117a6921e66403d6addcda3 md5: 3390c8b8f57e85506c92a37cf750bdd7 @@ -5715,26 +5700,26 @@ packages: license_family: APACHE size: 4406662 timestamp: 1732610939832 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-18.1.0-py312hc40f475_0_cpu.conda - sha256: 063eb168a29d4ce6d9ed865e9e1ad3b6e141712189955a79e06b24ddc0cbbc9c - md5: 9859e7c4b94bbf69772dbf0511101cec +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-19.0.0-py312hc40f475_0_cpu.conda + sha256: 6303fe1c3e6d36273b72f0eeb3f19897d2376d57fe8c757f55dcbfbaa5cd6840 + md5: df502157843a7b1d90af04803767be15 depends: - __osx >=11.0 - - libarrow 18.1.0.* *cpu + - libarrow 19.0.0.* *cpu - libcxx >=18 - libzlib >=1.3.1,<2.0a0 - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 constrains: - - numpy >=1.21,<3 - apache-arrow-proc =*=cpu + - numpy >=1.21,<3 arch: arm64 platform: osx license: Apache-2.0 license_family: APACHE - size: 3909116 - timestamp: 1732610863261 + size: 4393075 + timestamp: 1737128225546 - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda sha256: 79db7928d13fab2d892592223d7570f5061c192f27b9febd1a418427b719acc6 md5: 12c566707c80111f9799308d9e265aef @@ -5999,15 +5984,14 @@ packages: license_family: Apache size: 27913 timestamp: 1734420869885 -- conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_1.conda - sha256: 57c9a02ec25926fb48edca59b9ede107823e5d5c473b94a0e05cc0b9a193a642 - md5: c0def296b2f6d2dd7b030c2a7f66bb1f +- conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.1-pyhd8ed1ab_0.conda + sha256: 1597d6055d34e709ab8915091973552a0b8764c8032ede07c4e99670da029629 + md5: 392c91c42edd569a7ec99ed8648f597a depends: - python >=3.9 license: Apache-2.0 - license_family: APACHE - size: 142235 - timestamp: 1733235414217 + size: 143794 + timestamp: 1737541204030 - conda: https://conda.anaconda.org/conda-forge/linux-64/python-xxhash-3.5.0-py312h66e93f0_1.conda sha256: 20851b1e59fee127d49e01fc73195a88ab0779f103b7d6ffc90d11142a83678f md5: 39aed2afe4d0cf76ab3d6b09eecdbea7 @@ -6097,9 +6081,9 @@ packages: license_family: MIT size: 188538 timestamp: 1706886944988 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py312h66e93f0_1.conda - sha256: a60705971e958724168f2ebbb8ed4853067f1d3f7059843df3903e3092bbcffa - md5: 549e5930e768548a89c23f595dac5a95 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py312h178313f_2.conda + sha256: 159cba13a93b3fe084a1eb9bda0a07afc9148147647f0d437c3c3da60980503b + md5: cf2485f39740de96e2a7f2bb18ed2fee depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -6110,11 +6094,11 @@ packages: platform: linux license: MIT license_family: MIT - size: 206553 - timestamp: 1725456256213 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyyaml-6.0.2-py312hb2c0f52_1.conda - sha256: 8c515ebe1e7e85d972d72b75760af9dfac06fd11a9dba7e05c42d69aedbb303c - md5: dc5de424f7dbb9772da720dbb81317b2 + size: 206903 + timestamp: 1737454910324 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyyaml-6.0.2-py312hcc812fe_2.conda + sha256: dc78e41d51300722ba35ac4a10d37339ceffbe22d7501c71dfd3f633a4f8e79a + md5: 4de4a5ff81c941674e08595244e7cd61 depends: - libgcc >=13 - python >=3.12,<3.13.0a0 @@ -6125,11 +6109,11 @@ packages: platform: linux license: MIT license_family: MIT - size: 199141 - timestamp: 1725456356043 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py312h024a12e_1.conda - sha256: b06f1c15fb39695bbf707ae8fb554b9a77519af577b5556784534c7db10b52e3 - md5: 1ee23620cf46cb15900f70a1300bae55 + size: 199172 + timestamp: 1737454840766 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py312h998013c_2.conda + sha256: ad225ad24bfd60f7719709791345042c3cb32da1692e62bd463b084cf140e00d + md5: 68149ed4d4e9e1c42d2ba1f27f08ca96 depends: - __osx >=11.0 - python >=3.12,<3.13.0a0 @@ -6140,8 +6124,8 @@ packages: platform: osx license: MIT license_family: MIT - size: 187143 - timestamp: 1725456547263 + size: 192148 + timestamp: 1737454886351 - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.0-py312hbf22597_3.conda sha256: bc303f9b11e04a515f79cd5ad3bfa0e84b9dfec76552626d6263b38789fe6678 md5: 746ce19f0829ec3e19c93007b1a224d3 @@ -6342,9 +6326,9 @@ packages: license_family: MIT size: 17357 timestamp: 1733750834072 -- conda: https://conda.anaconda.org/conda-forge/linux-64/s2n-1.5.10-hb5b8611_0.conda - sha256: f6d451821fddc26b93f45e9313e1ea15e09e5ef049d4e137413a5225d2a5dfba - md5: 999f3673f2a011f59287f2969e3749e4 +- conda: https://conda.anaconda.org/conda-forge/linux-64/s2n-1.5.11-h072c03f_0.conda + sha256: cfdd98c8f9a1e5b6f9abce5dac6d590cc9fe541a08466c9e4a26f90e00b569e3 + md5: 5e8060d52f676a40edef0006a75c718f depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -6353,11 +6337,11 @@ packages: platform: linux license: Apache-2.0 license_family: Apache - size: 355142 - timestamp: 1734415467047 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/s2n-1.5.10-h5df210e_0.conda - sha256: b5e7a9f4b7b1ec5c5c3661e2defc8b47fab543b05cad6fec78739d8007612464 - md5: 3d3979efcc0f44f3f0cef3de03b296cc + size: 356213 + timestamp: 1737146304079 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/s2n-1.5.11-h3caee7a_0.conda + sha256: 5a7ae66f96be24c3b2007139b6c3701ab015b4b4eb4eccfdd07be97710243a47 + md5: 1517c0518f8a06a48a15f41d94252874 depends: - libgcc >=13 - openssl >=3.4.0,<4.0a0 @@ -6365,8 +6349,8 @@ packages: platform: linux license: Apache-2.0 license_family: Apache - size: 353450 - timestamp: 1734415474615 + size: 352811 + timestamp: 1737146319512 - conda: https://conda.anaconda.org/conda-forge/linux-64/safetensors-0.5.2-py312h12e396e_0.conda sha256: 98b8dfa5eec083e0b3ace00906a7f7e748b1e2446dca17e87473f43278fcc036 md5: 999ca9d87d2bb8b4c01e62c755b928cf @@ -6651,9 +6635,9 @@ packages: license_family: BSD size: 110051 timestamp: 1733367480074 -- conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.48.0-pyhd8ed1ab_0.conda - sha256: c8dd6d69e4ef67c7d507dec2be4b6964f6ddbe1ce35a822ddf4089505d702f33 - md5: 2c57d4af7b8952484962b40a59cf1537 +- conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.48.1-pyhd8ed1ab_0.conda + sha256: 92fc16e2449fc81f516d31630fd18c3f33b95bc0c069655a3c0042fbd11a09a4 + md5: 08f62b2c92d1fa610896fc7b16b05031 depends: - datasets !=2.5.0 - filelock @@ -6669,8 +6653,8 @@ packages: - tqdm >=4.27 license: Apache-2.0 license_family: APACHE - size: 3408277 - timestamp: 1736534112195 + size: 3405362 + timestamp: 1737429408302 - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda sha256: ef695490e895c2ad552c77ec497b899b09fd4ad4ab07edcf5649f5994cf92a35 md5: 170a0398946d8f5b454e592672b6fc20 @@ -6867,9 +6851,9 @@ packages: license_family: MIT size: 363822 timestamp: 1736550859472 -- conda: https://conda.anaconda.org/conda-forge/linux-64/websockets-14.1-py312h66e93f0_0.conda - sha256: 5998940f91765ba991cf286c863c20bcb53db92bb976a2b5a714566b86b0e763 - md5: a79f7ce618bd0a9f4c00c59a03570fcd +- conda: https://conda.anaconda.org/conda-forge/linux-64/websockets-14.2-py312h66e93f0_0.conda + sha256: 52092f1f811fddcbb63e4e8e1c726f32a0a1ea14c36b70982fc2021a3c010e48 + md5: 279166352304d5d4b63429e9c86fa3dc depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -6879,11 +6863,11 @@ packages: platform: linux license: BSD-3-Clause license_family: BSD - size: 242145 - timestamp: 1731498716195 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/websockets-14.1-py312hb2c0f52_0.conda - sha256: c292a8badcbe4040537e225fbeb237bfaf272808eab060067d965d3da98ccd5c - md5: 7e2a0ef2a1a87f88f9745f9c7059186e + size: 242949 + timestamp: 1737358315063 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/websockets-14.2-py312hb2c0f52_0.conda + sha256: 5b8273df10b85a667b4fe71788a12c33a9626723650e28f582fd56c87bad0471 + md5: d7535d5d2f8d49d625071f305d6112a1 depends: - libgcc >=13 - python >=3.12,<3.13.0a0 @@ -6893,11 +6877,11 @@ packages: platform: linux license: BSD-3-Clause license_family: BSD - size: 242912 - timestamp: 1731498811466 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/websockets-14.1-py312hea69d52_0.conda - sha256: 98fb04a1a0f53dc604378f94b5795d0b8e462fee01bf0a887cb34d0efdf5d21f - md5: 89b79a9baa7db46ce21f5738a5a3dfda + size: 244675 + timestamp: 1737358397158 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/websockets-14.2-py312hea69d52_0.conda + sha256: e5ad8c983a1669d06a6648990c0491d5469143f02003c8fd2ae7d066d7d4b086 + md5: 8757561d3ea10ba178fb7fb888f33e3a depends: - __osx >=11.0 - python >=3.12,<3.13.0a0 @@ -6907,8 +6891,8 @@ packages: platform: osx license: BSD-3-Clause license_family: BSD - size: 243131 - timestamp: 1731498944076 + size: 246269 + timestamp: 1737358485546 - conda: https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.17.2-py312h66e93f0_0.conda sha256: ed3a1700ecc5d38c7e7dc7d2802df1bc1da6ba3d6f6017448b8ded0affb4ae00 md5: 669e63af87710f8d52fdec9d4d63b404 @@ -7081,9 +7065,9 @@ packages: license_family: MIT size: 88016 timestamp: 1641347076660 -- conda: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.18.3-py312h66e93f0_0.conda - sha256: a0d93c3bef723e384cff8a29a82a2c6b7a73b39328088f3a2d97c901f56e9a63 - md5: 91df2efaa08730416bec2a4502309275 +- conda: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.18.3-py312h178313f_1.conda + sha256: 6b054c93dd19fd7544af51b41a8eacca2ab62271f6c0c5a2a0cffe80dc37a0ce + md5: 6822c49f294d4355f19d314b8b6063d8 depends: - __glibc >=2.17,<3.0.a0 - idna >=2.0 @@ -7096,11 +7080,11 @@ packages: platform: linux license: Apache-2.0 license_family: Apache - size: 151393 - timestamp: 1733428897813 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.18.3-py312hb2c0f52_0.conda - sha256: 470b5b0f3ac89acd143095281167dc2ac1a56d4fa22e1794bd8f3b00bb604540 - md5: 0b3c640697bca798d0ab428f530ed24c + size: 152305 + timestamp: 1737575898300 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.18.3-py312hcc812fe_1.conda + sha256: bfa211c0dd5dbb308788f055277dc428b7923ceb2de6a22ea98bc17cf306f9f5 + md5: d14c78abdd6109e2b7162f53b6cc1e77 depends: - idna >=2.0 - libgcc >=13 @@ -7113,11 +7097,11 @@ packages: platform: linux license: Apache-2.0 license_family: Apache - size: 150004 - timestamp: 1733429056665 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.18.3-py312hea69d52_0.conda - sha256: 69c7863809e11bc90c0d935c16e7f151dcc925add08b3894f06059263a8cb9ba - md5: f32f9b16361866a62d6e061fcd7eb400 + size: 149654 + timestamp: 1737576065314 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.18.3-py312h998013c_1.conda + sha256: 48821d23567ca0f853eee6f7812c74392867e123798b5b3c44f58758d8eb580e + md5: 092d3b40acc67c470f379049be343a7a depends: - __osx >=11.0 - idna >=2.0 @@ -7130,8 +7114,8 @@ packages: platform: osx license: Apache-2.0 license_family: Apache - size: 141556 - timestamp: 1733429104990 + size: 145543 + timestamp: 1737576074753 - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda sha256: a4dc72c96848f764bb5a5176aa93dd1e9b9e52804137b99daeebba277b31ea10 md5: 3947a35e916fcc6b9825449affbf4214 diff --git a/examples/testing/magic.lock b/examples/testing/magic.lock index 6fa5a396b7..18e04204dc 100644 --- a/examples/testing/magic.lock +++ b/examples/testing/magic.lock @@ -14,19 +14,19 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.8.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.3.0-pyh71513ae_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-h205f482_16.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.1-h205f482_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.1-h1a47875_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.10.6-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.3.0-h4e1184b_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.0-h7959bf6_11.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.2-hefd7a92_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-h831e299_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-h173a860_6.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h11f4f37_12.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.7-hf454442_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.9-he1b24dc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.2-h4e1184b_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-h4e1184b_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.8-h8570fcd_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-h7001638_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.9-he0e7f3f_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-h4d475cb_6.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.10.0-h113e628_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.13.0-h3cf044e_1.conda @@ -51,7 +51,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/fastapi-0.115.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.7-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/filelock-3.17.0-pyhd8ed1ab_0.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 - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.12.0-pyhd8ed1ab_0.conda @@ -77,10 +77,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-h9d9f30d_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-hcb10f89_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-hcb10f89_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-h08228c5_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-19.0.0-hce2e470_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-19.0.0-hcb10f89_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-19.0.0-hcb10f89_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-19.0.0-h08228c5_3_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-26_linux64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hb9d3cd8_2.conda @@ -109,18 +109,18 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.28-pthreads_h94d23a6_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-h081d1f1_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-19.0.0-h081d1f1_3_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.45-h943b412_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.48.0-hee588c1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.48.0-hee588c1_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hf672d98_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-hc0a3c3a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libthrift-0.21.0-h0e7cc3e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hd9ff511_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.9.0-hb9d3cd8_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.10.0-h4c51ac1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.50.0-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.5.0-h851e524_0.conda @@ -131,12 +131,12 @@ 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-25.1.0.dev2025011705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025011705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025011705-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025012205-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025012205-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025012205-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012205-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-25.1.0.dev2025011705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025012205-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 @@ -161,8 +161,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.1-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/protobuf-5.28.3-py312h2ec8cdc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-18.1.0-py312h7900ff3_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-18.1.0-py312h01725c0_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-19.0.0-py312h7900ff3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-19.0.0-py312h01725c0_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.5-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.27.2-py312h12e396e_0.conda @@ -175,11 +175,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.20-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python-xxhash-3.5.0-py312h66e93f0_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py312h66e93f0_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py312h178313f_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.0-py312hbf22597_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/re2-2024.07.02-h9925aae_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda @@ -187,7 +187,7 @@ environments: - 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.10-hb5b8611_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/s2n-1.5.11-h072c03f_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/safetensors-0.5.2-py312h12e396e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda @@ -200,7 +200,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.48.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.48.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda @@ -212,13 +212,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.34.0-h31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/uvloop-0.21.0-py312h66e93f0_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/watchfiles-1.0.4-py312h12e396e_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/websockets-14.1-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/websockets-14.2-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.17.2-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xxhash-0.8.2-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.18.3-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.18.3-py312h178313f_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312hef9b889_1.conda @@ -231,19 +231,19 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.8.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.3.0-pyh71513ae_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-hb7ec8d5_16.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.1-hb7ec8d5_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.1-h740c5af_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-common-0.10.6-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-compression-0.3.0-h0f0193d_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-event-stream-0.5.0-hcbd8f92_11.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.2-h3df160d_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-h1a307af_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-hfd5ba81_6.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h5f50e26_12.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.7-h2080895_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.9-h05b070f_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.2-h0f0193d_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h0f0193d_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.8-h92ee776_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h90ecb4a_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.9-hab3ce66_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h88461e4_6.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-core-cpp-1.14.0-h1887c18_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-identity-cpp-1.10.0-h47b0b28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-blobs-cpp-12.13.0-h185ecfd_1.conda @@ -268,7 +268,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/fastapi-0.115.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.7-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/filelock-3.17.0-pyhd8ed1ab_0.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 - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.12.0-pyhd8ed1ab_0.conda @@ -295,10 +295,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.0.0-h4de3ea5_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h18dbdb1_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-h47f80e1_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h3b568fd_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h3b568fd_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h1e9d426_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-h4065667_12_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h3b568fd_12_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h3b568fd_12_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h1e9d426_12_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-26_linuxaarch64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlicommon-1.1.0-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlidec-1.1.0-h86ecc28_2.conda @@ -317,8 +317,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-2.33.0-hccf9d24_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-storage-2.33.0-hb9b2b65_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-2.34.0-hccf9d24_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-storage-2.34.0-hb9b2b65_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgrpc-1.67.1-hf7ccdd3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libiconv-1.17-h31becfc_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libjpeg-turbo-3.0.0-h31becfc_1.conda @@ -327,18 +327,18 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnghttp2-1.64.0-hc8609a4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.28-pthreads_h9d3fd7e_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-hfc78867_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-hfc78867_12_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.45-hec79eb8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.3-h44a3b7b_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.20-h68df207_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.48.0-h5eb1b54_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.48.0-h5eb1b54_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libssh2-1.11.1-ha41c0db_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libthrift-0.21.0-h154c74f_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.0-h88f7998_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.9.0-h86ecc28_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.10.0-ha346350_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuv-1.50.0-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libwebp-base-1.5.0-h0886dbf_0.conda @@ -349,12 +349,12 @@ 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-25.1.0.dev2025011705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025011705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025011705-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025012205-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025012205-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025012205-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012205-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-25.1.0.dev2025011705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025012205-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 @@ -393,11 +393,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.20-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-xxhash-3.5.0-py312h52516f5_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.12-5_cp312.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyyaml-6.0.2-py312hb2c0f52_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyyaml-6.0.2-py312hcc812fe_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyzmq-26.2.0-py312h2427ae1_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/re2-2024.07.02-haa97905_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8fc344f_1.conda @@ -405,7 +405,7 @@ environments: - 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.10-h5df210e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/s2n-1.5.11-h3caee7a_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/safetensors-0.5.2-py312h8cbf658_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda @@ -418,7 +418,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py312h52516f5_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.48.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.48.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda @@ -430,13 +430,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.34.0-h31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/uvloop-0.21.0-py312hb2c0f52_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/watchfiles-1.0.4-py312h8cbf658_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/websockets-14.1-py312hb2c0f52_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/websockets-14.2-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/wrapt-1.17.2-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxau-1.0.12-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxdmcp-1.1.5-h57736b2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xxhash-0.8.2-h31becfc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yaml-0.2.5-hf897c2e_2.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.18.3-py312hb2c0f52_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.18.3-py312hcc812fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zeromq-4.3.5-h5efb499_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstandard-0.23.0-py312hb698573_1.conda @@ -448,19 +448,19 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.8.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.3.0-pyh71513ae_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-hfc2798a_16.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.1-hfc2798a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.1-hc8a0bd2_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.10.6-h5505292_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-compression-0.3.0-hc8a0bd2_5.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.0-h54f970a_11.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.2-h96aa502_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-haba67d1_5.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-haba67d1_6.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h24f418c_12.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.7-h1be5864_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.9-hf37e03c_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.2-hc8a0bd2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-hc8a0bd2_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.8-h23176ea_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-h794939a_5.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.9-ha81f72f_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-h0e5014b_6.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.14.0-hd50102c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.10.0-hc602bab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-blobs-cpp-12.13.0-h7585a09_1.conda @@ -485,7 +485,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/fastapi-0.115.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.7-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/filelock-3.17.0-pyhd8ed1ab_0.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 - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.12.0-pyhd8ed1ab_0.conda @@ -510,10 +510,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.16-ha0e7c42_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_h07bc746_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-hf3eb8e5_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-hf07054f_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-hf07054f_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-h4239455_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-19.0.0-hd1aa4b5_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-19.0.0-hf07054f_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-19.0.0-hf07054f_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-19.0.0-h4239455_4_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-26_osxarm64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.1.0-hd74edd7_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.1.0-hd74edd7_2.conda @@ -530,8 +530,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-2.33.0-hdbe95d5_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-storage-2.33.0-h7081f7f_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-2.34.0-hdbe95d5_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-storage-2.34.0-h7081f7f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgrpc-1.67.1-h0a426d6_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.17-h0d3ecfb_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.0.0-hb547adb_1.conda @@ -539,16 +539,16 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.3-h39f12f2_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.64.0-h6d7220d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.28-openmp_hf332438_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-h636d7b7_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-19.0.0-h636d7b7_4_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.45-h3783ad8_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.3-h3bd63a1_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h07bc746_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.48.0-h3f77e49_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.48.0-h3f77e49_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.1-h9cc3647_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libthrift-0.21.0-h64651cc_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-h551f018_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.9.0-h5505292_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.10.0-hda25de7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libuv-1.50.0-h5505292_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.5.0-h2471fea_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxcb-1.17.0-hdb1d25a_0.conda @@ -558,12 +558,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-25.1.0.dev2025011705-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025011705-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025011705-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025012205-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025012205-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025012205-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012205-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-25.1.0.dev2025011705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025012205-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 @@ -588,8 +588,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.1-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/protobuf-5.28.3-py312hd8f9ff3_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pthread-stubs-0.4-hd74edd7_1002.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-18.1.0-py312h1f38498_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-18.1.0-py312hc40f475_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-19.0.0-py312h1f38498_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-19.0.0-py312hc40f475_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.5-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.27.2-py312hcd83bfe_0.conda @@ -602,11 +602,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.20-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-xxhash-3.5.0-py312h024a12e_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-5_cp312.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py312h024a12e_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py312h998013c_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.0-py312hf8a1cbd_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/re2-2024.07.02-h6589ca4_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h92ec313_1.conda @@ -626,7 +626,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.48.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.48.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda @@ -638,13 +638,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.34.0-h31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/uvloop-0.21.0-py312h0bf5046_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/watchfiles-1.0.4-py312hcd83bfe_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/websockets-14.1-py312hea69d52_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/websockets-14.2-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/wrapt-1.17.2-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxau-1.0.12-h5505292_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxdmcp-1.1.5-hd74edd7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xxhash-0.8.2-hb547adb_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.18.3-py312hea69d52_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.18.3-py312h998013c_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py312h15fbf35_1.conda @@ -804,9 +804,9 @@ packages: license_family: MIT size: 56354 timestamp: 1734348889193 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-h205f482_16.conda - sha256: 0695c285b70385913dc7dce05888d3ad1378247b65273bdab509494a2f8f0eea - md5: b0815d37ab812ade9c07239da7c3c369 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.1-h205f482_0.conda + sha256: ebe5e33249f37f6bb481de99581ebdc92dbfcf1b6915609bcf3c9e78661d6352 + md5: 9c500858e88df50af3cc883d194de78a depends: - __glibc >=2.17,<3.0.a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 @@ -819,11 +819,11 @@ packages: platform: linux license: Apache-2.0 license_family: Apache - size: 107478 - timestamp: 1736592747413 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-hb7ec8d5_16.conda - sha256: 5a2a2691f2e0028e8549b97a340d7e6c502e0d54b7deba00fad505812663a98b - md5: 56f166780076db46c5e273988693d8a3 + size: 108111 + timestamp: 1737509831651 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.1-hb7ec8d5_0.conda + sha256: e1e6c9267a4d9af30b1d28c11a9041b17b7840ff83ef08614145a2a4f444f5b4 + md5: 2630f030652970a5531e492f6b2a6dd3 depends: - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.6,<0.10.7.0a0 @@ -835,11 +835,11 @@ packages: platform: linux license: Apache-2.0 license_family: Apache - size: 112264 - timestamp: 1736592695540 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-hfc2798a_16.conda - sha256: cdcd932332311db1b614289101b61e32cbae2478ba2bf85763aaf5a5cc7db6f6 - md5: 1e9a41d5296f50c08ae511d61fddef85 + size: 112658 + timestamp: 1737509863269 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.1-hfc2798a_0.conda + sha256: 5a60d196a585b25d1446fb973009e4e648e8d70beaa2793787243ede6da0fd9a + md5: 0abd67c0f7b60d50348fbb32fef50b65 depends: - __osx >=11.0 - aws-c-cal >=0.8.1,<0.8.2.0a0 @@ -851,8 +851,8 @@ packages: platform: osx license: Apache-2.0 license_family: Apache - size: 92547 - timestamp: 1736592866387 + size: 92562 + timestamp: 1737509877079 - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.1-h1a47875_3.conda sha256: 095ac824ea9303eff67e04090ae531d9eb33d2bf8f82eaade39b839c421e16e8 md5: 55a8561fdbbbd34f50f57d9be12ed084 @@ -1056,38 +1056,38 @@ packages: license_family: Apache size: 152983 timestamp: 1734008451473 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-h831e299_5.conda - sha256: 5920009b1c6f9a2bc131a36725251894e4b4773fce29c4b1065d4213ae337abe - md5: 80dd9f0ddf935290d1dc00ec75ff3023 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-h173a860_6.conda + sha256: 335d822eead0a097ffd23677a288e1f18ea22f47a92d4f877419debb93af0e81 + md5: 9a063178f1af0a898526cc24ba7be486 depends: - __glibc >=2.17,<3.0.a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.6,<0.10.7.0a0 - libgcc >=13 - - s2n >=1.5.10,<1.5.11.0a0 + - s2n >=1.5.11,<1.5.12.0a0 arch: x86_64 platform: linux license: Apache-2.0 license_family: Apache - size: 157864 - timestamp: 1734433578570 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-h1a307af_5.conda - sha256: 71f5bf891299f831dceaea12f926c393bf754569e5305387a88b77e1f94612d8 - md5: da8ab0f3eeac93449ec3d531ede92caa + size: 157263 + timestamp: 1737207617838 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-hfd5ba81_6.conda + sha256: d8adfde05cee11057d99c3802e84b2300430a7c7c3c9936165d1d4b25ef59d91 + md5: 4e6771b45cb2b035c62d023dbf0dc000 depends: - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.6,<0.10.7.0a0 - libgcc >=13 - - s2n >=1.5.10,<1.5.11.0a0 + - s2n >=1.5.11,<1.5.12.0a0 arch: aarch64 platform: linux license: Apache-2.0 license_family: Apache - size: 161889 - timestamp: 1734433686109 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-haba67d1_5.conda - sha256: c0a1a2b0750225ac3dc07fd258c88c2be866bf8ac67ba3d50bb4ecec852ff8ee - md5: 4c5ff4134e76426a75b8c548984fa933 + size: 160933 + timestamp: 1737207637279 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-haba67d1_6.conda + sha256: 73722dd175af78b6cbfa033066f0933351f5382a1a737f6c6d9b8cfa84022161 + md5: d02e8f40ff69562903e70a1c6c48b009 depends: - __osx >=11.0 - aws-c-cal >=0.8.1,<0.8.2.0a0 @@ -1096,8 +1096,8 @@ packages: platform: osx license: Apache-2.0 license_family: Apache - size: 135729 - timestamp: 1734433832730 + size: 136048 + timestamp: 1737207681224 - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h11f4f37_12.conda sha256: 512d3969426152d9d5fd886e27b13706122dc3fa90eb08c37b0d51a33d7bb14a md5: 96c3e0221fa2da97619ee82faa341a73 @@ -1141,12 +1141,12 @@ packages: license_family: Apache size: 134371 timestamp: 1734025379525 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.7-hf454442_0.conda - sha256: c2f205a7bf64c5f40eea373b3a0a7c363c9aa9246a13dd7f3d9c6a4434c4fe2d - md5: 947c82025693bebd557f782bb5d6b469 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.9-he1b24dc_1.conda + sha256: 15fbdedc56850f8be5be7a5bcaea1af09c97590e631c024ae089737fc932fc42 + md5: caafc32928a5f7f3f7ef67d287689144 depends: - __glibc >=2.17,<3.0.a0 - - aws-c-auth >=0.8.0,<0.8.1.0a0 + - aws-c-auth >=0.8.1,<0.8.2.0a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 @@ -1158,13 +1158,13 @@ packages: platform: linux license: Apache-2.0 license_family: Apache - size: 114156 - timestamp: 1734146123386 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.7-h2080895_0.conda - sha256: 20bc2dd60e6518d9b8215c2b652ab5c52ee8a997d3b9a5f69e2dabd28cbf26b2 - md5: ae223efa63fbb4262a2d85c3ab3bc4f5 + size: 115413 + timestamp: 1737558687616 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.9-h05b070f_1.conda + sha256: 9e7857fbc33eddc291fa09890ce468a92485d3e3e127bc00bbd1803e34121f84 + md5: e0a2869195f069db88b8932f5b00bee5 depends: - - aws-c-auth >=0.8.0,<0.8.1.0a0 + - aws-c-auth >=0.8.1,<0.8.2.0a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 @@ -1176,14 +1176,14 @@ packages: platform: linux license: Apache-2.0 license_family: Apache - size: 117641 - timestamp: 1734146239779 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.7-h1be5864_0.conda - sha256: 22966164d63808689fffd35945f57756c95337327e28099b5d77b29fc6a56ecc - md5: a37bba7acb62dd70492ee01eacca3b8f + size: 117875 + timestamp: 1737558720047 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.9-hf37e03c_1.conda + sha256: 92e8ca4eefcbbdf4189584c9410382884a06ed3030e5ecaac656dab8c95e6a80 + md5: de65f5e4ab5020103fe70a0eba9432a0 depends: - __osx >=11.0 - - aws-c-auth >=0.8.0,<0.8.1.0a0 + - aws-c-auth >=0.8.1,<0.8.2.0a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 @@ -1193,8 +1193,8 @@ packages: platform: osx license: Apache-2.0 license_family: Apache - size: 97598 - timestamp: 1734146239038 + size: 98731 + timestamp: 1737558731831 - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.2-h4e1184b_0.conda sha256: 0424e380c435ba03b5948d02e8c958866c4eee50ed29e57f99473a5f795a4cfc md5: dcd498d493818b776a77fbc242fbf8e4 @@ -1269,19 +1269,19 @@ packages: license_family: Apache size: 70186 timestamp: 1733994496998 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.8-h8570fcd_1.conda - sha256: ff8f08bc615d3ef6d970df80988200b3ecee76ecfa4885109cd82b30176cfda9 - md5: f21296b496cca1c1fa426b9a3b676e79 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.9-he0e7f3f_2.conda + sha256: c1930569713bd5231d48d885a5e3707ac917b428e8f08189d14064a2bb128adc + md5: 8a4e6fc8a3b285536202b5456a74a940 depends: - __glibc >=2.17,<3.0.a0 - - aws-c-auth >=0.8.0,<0.8.1.0a0 + - aws-c-auth >=0.8.1,<0.8.2.0a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - - aws-c-s3 >=0.7.7,<0.7.8.0a0 + - aws-c-s3 >=0.7.9,<0.7.10.0a0 - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 - libgcc >=13 - libstdcxx >=13 @@ -1289,20 +1289,20 @@ packages: platform: linux license: Apache-2.0 license_family: Apache - size: 354328 - timestamp: 1736598991291 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.8-h92ee776_1.conda - sha256: 114ac89d3936bf801dcbd488ba0b468c7e113a407cb1ee5898259a5202b7e750 - md5: 63546051b5687f793ae977c7994e1339 + size: 353222 + timestamp: 1737565463079 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.9-hab3ce66_2.conda + sha256: c3884fb10e0fd9be5c13256cabcda1afa9d2fcf8878c67214d02fc344509857d + md5: 875968ebffe992b68faf2caebbf32f02 depends: - - aws-c-auth >=0.8.0,<0.8.1.0a0 + - aws-c-auth >=0.8.1,<0.8.2.0a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - - aws-c-s3 >=0.7.7,<0.7.8.0a0 + - aws-c-s3 >=0.7.9,<0.7.10.0a0 - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 - libgcc >=13 - libstdcxx >=13 @@ -1310,38 +1310,38 @@ packages: platform: linux license: Apache-2.0 license_family: Apache - size: 284664 - timestamp: 1736598964131 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.8-h23176ea_1.conda - sha256: db6a31078bb82fb12044d7706239c003568273729f7ba4971c1479b7926ada82 - md5: 31fdd3ffb00f5472196fa95ef08087b7 + size: 283812 + timestamp: 1737565480034 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.9-ha81f72f_2.conda + sha256: ed5f1d19aad53787fdebe13db4709c97eae2092536cc55d3536eba320c4286e1 + md5: c9c034d3239bf25687ca4dd985007ecd depends: - __osx >=11.0 - - aws-c-auth >=0.8.0,<0.8.1.0a0 + - aws-c-auth >=0.8.1,<0.8.2.0a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - - aws-c-s3 >=0.7.7,<0.7.8.0a0 + - aws-c-s3 >=0.7.9,<0.7.10.0a0 - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 - libcxx >=18 arch: arm64 platform: osx license: Apache-2.0 license_family: Apache - size: 236269 - timestamp: 1736599024242 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-h7001638_5.conda - sha256: 849524b09865e84d6926aa814944cf71511aa4a00fffc5ad174c286d5dfac5f0 - md5: fc01d77a7f383b2915f276c73b7d0934 + size: 235976 + timestamp: 1737565563139 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-h4d475cb_6.conda + sha256: 2309d96d537b5c3810c6e9fbf5b6bb7e06ce907a609d172063ab504b2cc67f30 + md5: 6139e84bbb6fdb27ca49c2981613a5fa depends: - __glibc >=2.17,<3.0.a0 - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - - aws-crt-cpp >=0.29.8,<0.29.9.0a0 + - aws-crt-cpp >=0.29.9,<0.29.10.0a0 - libcurl >=8.11.1,<9.0a0 - libgcc >=13 - libstdcxx >=13 @@ -1351,16 +1351,16 @@ packages: platform: linux license: Apache-2.0 license_family: Apache - size: 3088636 - timestamp: 1736598504343 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h90ecb4a_5.conda - sha256: 9467acd0f2df74ea7472aebdfb8b5656a8d403abad2edbce9743d6e88c94fd10 - md5: 33f86f8de1d8cd40f8fe628dc0784437 + size: 3069914 + timestamp: 1737049585807 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h88461e4_6.conda + sha256: f97e071ffb87bc33923f798761ec6a854614ce193913d34d3248515d18357baa + md5: 0d7f1ee2e5572bf9d1fd78f0f2ab6f6b depends: - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - - aws-crt-cpp >=0.29.8,<0.29.9.0a0 + - aws-crt-cpp >=0.29.9,<0.29.10.0a0 - libcurl >=8.11.1,<9.0a0 - libgcc >=13 - libstdcxx >=13 @@ -1370,17 +1370,17 @@ packages: platform: linux license: Apache-2.0 license_family: Apache - size: 2925443 - timestamp: 1736598526637 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-h794939a_5.conda - sha256: 2b1e7d5a45e82604bfdb6de63c53cf0e9495f596cfd90e644a1e67910de7f91c - md5: a2374b4182bf5b2d08b2903393d0c487 + size: 2919798 + timestamp: 1737049659061 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-h0e5014b_6.conda + sha256: 8c21ce4692d1631b96adea099d7c2b905fc5d078db63bf754d85600dcf184651 + md5: a3b7b9a81d8c6a8f963f619d9e362c39 depends: - __osx >=11.0 - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - - aws-crt-cpp >=0.29.8,<0.29.9.0a0 + - aws-crt-cpp >=0.29.9,<0.29.10.0a0 - libcurl >=8.11.1,<9.0a0 - libcxx >=18 - libzlib >=1.3.1,<2.0a0 @@ -1389,8 +1389,8 @@ packages: platform: osx license: Apache-2.0 license_family: Apache - size: 2824168 - timestamp: 1736598935034 + size: 2834057 + timestamp: 1737126583846 - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda sha256: fe07debdb089a3db17f40a7f20d283d75284bb4fc269ef727b8ba6fc93f7cb5a md5: 0a8838771cc2e985cd295e01ae83baf1 @@ -1964,14 +1964,14 @@ packages: license_family: MIT size: 15546 timestamp: 1734302408607 -- conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_1.conda - sha256: 18dca6e2194732df7ebf824abaefe999e4765ebe8e8a061269406ab88fc418b9 - md5: d692e9ba6f92dc51484bf3477e36ce7c +- conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.17.0-pyhd8ed1ab_0.conda + sha256: 006d7e5a0c17a6973596dd86bfc80d74ce541144d2aee2d22d46fd41df560a63 + md5: 7f402b4a1007ee355bc50ce4d24d4a57 depends: - python >=3.9 license: Unlicense - size: 17441 - timestamp: 1733240909987 + size: 17544 + timestamp: 1737517924333 - conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.12.1-h267a509_2.conda sha256: b2e3c449ec9d907dd4656cb0dc93e140f447175b125a3824b31368b06c666bb6 md5: 9ae35c3d96db2c94ce0cef86efdfa2cb @@ -2558,13 +2558,13 @@ packages: license_family: Apache size: 1178260 timestamp: 1736008642885 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-h9d9f30d_8_cpu.conda - build_number: 8 - sha256: f6c72ce82d145cb94a1131b68547b88056fb48158a382f9ce763286fce53ee65 - md5: 1c9caae53b14a385b59e87687adad2d6 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-19.0.0-hce2e470_3_cpu.conda + build_number: 3 + sha256: 3b85b78a52ce673798e3c880fa41b818554912e722e81ca20cf95ba9257f13f0 + md5: a50ba9a0789061ea395a47a23d6a7734 depends: - __glibc >=2.17,<3.0.a0 - - aws-crt-cpp >=0.29.8,<0.29.9.0a0 + - aws-crt-cpp >=0.29.9,<0.29.10.0a0 - aws-sdk-cpp >=1.11.458,<1.11.459.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-identity-cpp >=1.10.0,<1.10.1.0a0 @@ -2582,7 +2582,7 @@ packages: - libgoogle-cloud-storage >=2.33.0,<2.34.0a0 - libre2-11 >=2024.7.2 - libstdcxx >=13 - - libutf8proc >=2.9.0,<2.10.0a0 + - libutf8proc >=2.10.0,<2.11.0a0 - libzlib >=1.3.1,<2.0a0 - lz4-c >=1.10.0,<1.11.0a0 - orc >=2.0.3,<2.0.4.0a0 @@ -2596,15 +2596,14 @@ packages: arch: x86_64 platform: linux license: Apache-2.0 - license_family: APACHE - size: 8801586 - timestamp: 1736610546493 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-h47f80e1_8_cpu.conda - build_number: 8 - sha256: bf381dfa84e94ffce715c46352dd99f6f6ace69859b0efb822500f8882be429a - md5: daceef1881b4ddc72bb5b225a122c633 - depends: - - aws-crt-cpp >=0.29.8,<0.29.9.0a0 + size: 8899665 + timestamp: 1737343852413 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-h4065667_12_cpu.conda + build_number: 12 + sha256: 0ac8aab370ef7a21e912cc312e5cbfa59afea8e004f5a372f2f25f96de0c9e9a + md5: 4789bb7ae93fe12bfd81169157896f49 + depends: + - aws-crt-cpp >=0.29.9,<0.29.10.0a0 - aws-sdk-cpp >=1.11.458,<1.11.459.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-identity-cpp >=1.10.0,<1.10.1.0a0 @@ -2618,11 +2617,11 @@ packages: - libbrotlidec >=1.1.0,<1.2.0a0 - libbrotlienc >=1.1.0,<1.2.0a0 - libgcc >=13 - - libgoogle-cloud >=2.33.0,<2.34.0a0 - - libgoogle-cloud-storage >=2.33.0,<2.34.0a0 + - libgoogle-cloud >=2.34.0,<2.35.0a0 + - libgoogle-cloud-storage >=2.34.0,<2.35.0a0 - libre2-11 >=2024.7.2 - libstdcxx >=13 - - libutf8proc >=2.9.0,<2.10.0a0 + - libutf8proc >=2.10.0,<2.11.0a0 - libzlib >=1.3.1,<2.0a0 - lz4-c >=1.10.0,<1.11.0a0 - orc >=2.0.3,<2.0.4.0a0 @@ -2636,16 +2635,15 @@ packages: arch: aarch64 platform: linux license: Apache-2.0 - license_family: APACHE - size: 8045923 - timestamp: 1736611764958 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-hf3eb8e5_8_cpu.conda - build_number: 8 - sha256: 766e46b45520773db93ee1a91951cc135a85544bba738e7b378d31f16097753f - md5: fdc79871e6c243b819497337215416d9 + size: 8051570 + timestamp: 1737451538096 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-19.0.0-hd1aa4b5_4_cpu.conda + build_number: 4 + sha256: bf027b2e77b75b71b5213131fc4b06bbca6f1e195fde62090343e0a808d08bbe + md5: 94c2bcca143c043f8083a1f275de3caf depends: - __osx >=11.0 - - aws-crt-cpp >=0.29.8,<0.29.9.0a0 + - aws-crt-cpp >=0.29.9,<0.29.10.0a0 - aws-sdk-cpp >=1.11.458,<1.11.459.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-identity-cpp >=1.10.0,<1.10.1.0a0 @@ -2658,10 +2656,10 @@ packages: - libbrotlidec >=1.1.0,<1.2.0a0 - libbrotlienc >=1.1.0,<1.2.0a0 - libcxx >=18 - - libgoogle-cloud >=2.33.0,<2.34.0a0 - - libgoogle-cloud-storage >=2.33.0,<2.34.0a0 + - libgoogle-cloud >=2.34.0,<2.35.0a0 + - libgoogle-cloud-storage >=2.34.0,<2.35.0a0 - libre2-11 >=2024.7.2 - - libutf8proc >=2.9.0,<2.10.0a0 + - libutf8proc >=2.10.0,<2.11.0a0 - libzlib >=1.3.1,<2.0a0 - lz4-c >=1.10.0,<1.11.0a0 - orc >=2.0.3,<2.0.4.0a0 @@ -2669,165 +2667,155 @@ packages: - snappy >=1.2.1,<1.3.0a0 - zstd >=1.5.6,<1.6.0a0 constrains: - - arrow-cpp <0.0a0 - parquet-cpp <0.0a0 + - arrow-cpp <0.0a0 - apache-arrow-proc =*=cpu arch: arm64 platform: osx license: Apache-2.0 - license_family: APACHE - size: 5497383 - timestamp: 1736608604724 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-hcb10f89_8_cpu.conda - build_number: 8 - sha256: 126a6e78199311d99e38b9d633ce3e0290795ac68ce3ee8a9b91436c85c4095d - md5: 544759904898499f634f8f88a9907f88 + size: 5532664 + timestamp: 1737458545986 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-19.0.0-hcb10f89_3_cpu.conda + build_number: 3 + sha256: f4e4b14fc2aaaf0d0a16a3b4b4dcae84b1b77daa02754f0873901089ce786a49 + md5: 3e1e31382e9c6ecd0b24bd8f6ddb33ec depends: - __glibc >=2.17,<3.0.a0 - - libarrow 18.1.0 h9d9f30d_8_cpu + - libarrow 19.0.0 hce2e470_3_cpu - libgcc >=13 - libstdcxx >=13 arch: x86_64 platform: linux license: Apache-2.0 - license_family: APACHE - size: 611558 - timestamp: 1736610592458 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h3b568fd_8_cpu.conda - build_number: 8 - sha256: c94844ab1d8fafe17775161283bd1fe7ab1f93f660fc5ba0c01bd33fe3d21eaf - md5: 7a8e6a363d2f39a2f3df3f181d12692d + size: 618570 + timestamp: 1737343896206 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h3b568fd_12_cpu.conda + build_number: 12 + sha256: c93daa943342eb848e5a44d4f48749f96decbde7b0f7d830fe56d0d506c03576 + md5: 8ec3804980e19b70ebffbeb623ce084b depends: - - libarrow 18.1.0 h47f80e1_8_cpu + - libarrow 18.1.0 h4065667_12_cpu - libgcc >=13 - libstdcxx >=13 arch: aarch64 platform: linux license: Apache-2.0 - license_family: APACHE - size: 579798 - timestamp: 1736611846905 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-hf07054f_8_cpu.conda - build_number: 8 - sha256: 29196dc6b2e4488f98bd8950de6333efe5d1a9d0cc62e186694946766185475e - md5: 8db96829f8e427167f450c7467a1ba44 + size: 579114 + timestamp: 1737451608994 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-19.0.0-hf07054f_4_cpu.conda + build_number: 4 + sha256: 40de7e71d9fd4b799c452b3a0328ea260a3871de621f5344fb39b7f48371df75 + md5: e3265f8ab44051131966bd6f7b07a6e3 depends: - __osx >=11.0 - - libarrow 18.1.0 hf3eb8e5_8_cpu + - libarrow 19.0.0 hd1aa4b5_4_cpu - libcxx >=18 arch: arm64 platform: osx license: Apache-2.0 - license_family: APACHE - size: 484442 - timestamp: 1736608695654 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-hcb10f89_8_cpu.conda - build_number: 8 - sha256: fe50edf030b5ccbadec2bf8f90d4cdf32d63ec52ba26233fc2c8bfbe43df3b15 - md5: 894a5ed78728b77c997fefeee222ac4d + size: 481968 + timestamp: 1737458659266 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-19.0.0-hcb10f89_3_cpu.conda + build_number: 3 + sha256: c5cdf03d72d028e8af774aabd29cd92fb87f54cd579a9ffe77ad228c51faaa82 + md5: 1face9ff13ec61bfb065063d35fda864 depends: - __glibc >=2.17,<3.0.a0 - - libarrow 18.1.0 h9d9f30d_8_cpu - - libarrow-acero 18.1.0 hcb10f89_8_cpu + - libarrow 19.0.0 hce2e470_3_cpu + - libarrow-acero 19.0.0 hcb10f89_3_cpu - libgcc >=13 - - libparquet 18.1.0 h081d1f1_8_cpu + - libparquet 19.0.0 h081d1f1_3_cpu - libstdcxx >=13 arch: x86_64 platform: linux license: Apache-2.0 - license_family: APACHE - size: 588032 - timestamp: 1736610711976 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h3b568fd_8_cpu.conda - build_number: 8 - sha256: bb87d8e633074c9759d93abb277d31314dc66fad741253b48e8265e186228c5b - md5: 11856da892b919cc27bd62638d701c65 + size: 585153 + timestamp: 1737344009570 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h3b568fd_12_cpu.conda + build_number: 12 + sha256: 40bbdb394db6f405e6fae56bcbfc88fa433130668d2b39d1f109b7d6ffb8be76 + md5: e9b9a9941d35dff0a168741bdd54877e depends: - - libarrow 18.1.0 h47f80e1_8_cpu - - libarrow-acero 18.1.0 h3b568fd_8_cpu + - libarrow 18.1.0 h4065667_12_cpu + - libarrow-acero 18.1.0 h3b568fd_12_cpu - libgcc >=13 - - libparquet 18.1.0 hfc78867_8_cpu + - libparquet 18.1.0 hfc78867_12_cpu - libstdcxx >=13 arch: aarch64 platform: linux license: Apache-2.0 - license_family: APACHE - size: 560571 - timestamp: 1736611941995 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-hf07054f_8_cpu.conda - build_number: 8 - sha256: bff2d39e418eadab8c522a536449ac90f070dd8e83e2bd5e67a9c3eb8ecf712f - md5: 7b3736f49b3ba299b7799aeb448cb830 + size: 559928 + timestamp: 1737451706623 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-19.0.0-hf07054f_4_cpu.conda + build_number: 4 + sha256: c9b01193f3dc2855276a743aa2d107b3893d886dbc561944154acc4c61a9b4cb + md5: c6588e0236da980424ca0b288c893d1a depends: - __osx >=11.0 - - libarrow 18.1.0 hf3eb8e5_8_cpu - - libarrow-acero 18.1.0 hf07054f_8_cpu + - libarrow 19.0.0 hd1aa4b5_4_cpu + - libarrow-acero 19.0.0 hf07054f_4_cpu - libcxx >=18 - - libparquet 18.1.0 h636d7b7_8_cpu + - libparquet 19.0.0 h636d7b7_4_cpu arch: arm64 platform: osx license: Apache-2.0 - license_family: APACHE - size: 491001 - timestamp: 1736609758514 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-h08228c5_8_cpu.conda - build_number: 8 - sha256: dca372e27724904577315b8db3793e027a5c152a485e505e630a57b15634cd85 - md5: 46eaf81238da6f3ffab1f3ffdcee382e + size: 488490 + timestamp: 1737459936234 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-19.0.0-h08228c5_3_cpu.conda + build_number: 3 + sha256: 414297c69d08ba45af0fccb5e22cc3b3e92181f3928eba1e1b1ab3641970c7e0 + md5: 8527e1e45c495991fd88f6531e176556 depends: - __glibc >=2.17,<3.0.a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.1.0 h9d9f30d_8_cpu - - libarrow-acero 18.1.0 hcb10f89_8_cpu - - libarrow-dataset 18.1.0 hcb10f89_8_cpu + - libarrow 19.0.0 hce2e470_3_cpu + - libarrow-acero 19.0.0 hcb10f89_3_cpu + - libarrow-dataset 19.0.0 hcb10f89_3_cpu - libgcc >=13 - libprotobuf >=5.28.3,<5.28.4.0a0 - libstdcxx >=13 arch: x86_64 platform: linux license: Apache-2.0 - license_family: APACHE - size: 521707 - timestamp: 1736610765240 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h1e9d426_8_cpu.conda - build_number: 8 - sha256: 1896ea00da28e10670f7ba51bb543e68a87f717e9f5692fee44268f1a13d9eee - md5: e7dc0209e065a2b51f19848cefa4b1ab + size: 521371 + timestamp: 1737344062052 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h1e9d426_12_cpu.conda + build_number: 12 + sha256: 6216a1c48e41d3b304e87b19a8ff37c10e51ceca83bff5e942d763c93f6f55a1 + md5: f647dcbf46aebc86f9975ff3c856de45 depends: - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.1.0 h47f80e1_8_cpu - - libarrow-acero 18.1.0 h3b568fd_8_cpu - - libarrow-dataset 18.1.0 h3b568fd_8_cpu + - libarrow 18.1.0 h4065667_12_cpu + - libarrow-acero 18.1.0 h3b568fd_12_cpu + - libarrow-dataset 18.1.0 h3b568fd_12_cpu - libgcc >=13 - libprotobuf >=5.28.3,<5.28.4.0a0 - libstdcxx >=13 arch: aarch64 platform: linux license: Apache-2.0 - license_family: APACHE - size: 517189 - timestamp: 1736611989417 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-h4239455_8_cpu.conda - build_number: 8 - sha256: ae52d926ebfc8edb0728824f2918a825d39bd85a4ef27fe2b73656cfecdd7c69 - md5: f67eb19d22ba355cced8c86073ad49b1 + size: 516135 + timestamp: 1737451754178 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-19.0.0-h4239455_4_cpu.conda + build_number: 4 + sha256: 1de1100bddcaa4aacae5cc30e3c0ae3259d130bee7b3d52a57a1c9950e0c6588 + md5: 6988cd2fdf01cae4bc454859a7cf8bac depends: - __osx >=11.0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.1.0 hf3eb8e5_8_cpu - - libarrow-acero 18.1.0 hf07054f_8_cpu - - libarrow-dataset 18.1.0 hf07054f_8_cpu + - libarrow 19.0.0 hd1aa4b5_4_cpu + - libarrow-acero 19.0.0 hf07054f_4_cpu + - libarrow-dataset 19.0.0 hf07054f_4_cpu - libcxx >=18 - libprotobuf >=5.28.3,<5.28.4.0a0 arch: arm64 platform: osx license: Apache-2.0 - license_family: APACHE - size: 452161 - timestamp: 1736609917123 + size: 449975 + timestamp: 1737460148737 - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-26_linux64_openblas.conda build_number: 26 sha256: 30bd658682b124243f8e52d8edf8a19e7be1bc31e4fe4baec30a64002dc8cd0c @@ -3515,9 +3503,9 @@ packages: license_family: Apache size: 1254656 timestamp: 1735648569457 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-2.33.0-hccf9d24_1.conda - sha256: d3d4def86d880431928799ba90ca97e57c2f05677c03af8de2337502926c492c - md5: a2724014eb04f14bd71d35f45b062dd0 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-2.34.0-hccf9d24_0.conda + sha256: 54267dda8fafc2a2d379ef77b6029d8240e0628d4b29758f788fb903f84397a3 + md5: 1ce0fd876001c40801b40fea22987e41 depends: - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 @@ -3528,16 +3516,16 @@ packages: - libstdcxx >=13 - openssl >=3.4.0,<4.0a0 constrains: - - libgoogle-cloud 2.33.0 *_1 + - libgoogle-cloud 2.34.0 *_0 arch: aarch64 platform: linux license: Apache-2.0 license_family: Apache - size: 1253019 - timestamp: 1735649566849 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-2.33.0-hdbe95d5_1.conda - sha256: ce95aca02451694a4154c7770b6addf4fb859abf17912de6ec947da8469a56ce - md5: 91de1fbab8610974c0094c266bc63435 + size: 1256586 + timestamp: 1737285242684 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-2.34.0-hdbe95d5_0.conda + sha256: 919d8cbcd47d5bd2244c55b2bb87e2bd2eed8215996aab8435cb7123ffd9d20e + md5: 69826544e7978fcaa6bc8c1962d96ad6 depends: - __osx >=11.0 - libabseil * cxx17* @@ -3548,13 +3536,13 @@ packages: - libprotobuf >=5.28.3,<5.28.4.0a0 - openssl >=3.4.0,<4.0a0 constrains: - - libgoogle-cloud 2.33.0 *_1 + - libgoogle-cloud 2.34.0 *_0 arch: arm64 platform: osx license: Apache-2.0 license_family: Apache - size: 877594 - timestamp: 1735648230965 + size: 878217 + timestamp: 1737284441192 - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.33.0-h0121fbd_1.conda sha256: 41022523320ca8633a6c615710823e596efadb50f06d724e1a0c81e27994f257 md5: b0cfb5044685a7a9fa43ae669124f0a0 @@ -3574,15 +3562,15 @@ packages: license_family: Apache size: 784357 timestamp: 1735648759177 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-storage-2.33.0-hb9b2b65_1.conda - sha256: 5eda1cbba68709b91b370b3792c9cfd7bec4ac4e2262f0887d12e1f000ae1191 - md5: 45df2267ff4d8ce532e8d300ce0b0829 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-storage-2.34.0-hb9b2b65_0.conda + sha256: 4ad4fb7c02dcfa4c86dcf9591e0131a01fc0f2c3f2729c12882b944ddf2b8a9d + md5: 0732a5988f7f556f2c1d1f51026fc1be depends: - libabseil - libcrc32c >=1.1.2,<1.2.0a0 - libcurl - libgcc >=13 - - libgoogle-cloud 2.33.0 hccf9d24_1 + - libgoogle-cloud 2.34.0 hccf9d24_0 - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - openssl @@ -3590,26 +3578,26 @@ packages: platform: linux license: Apache-2.0 license_family: Apache - size: 737518 - timestamp: 1735649773462 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-storage-2.33.0-h7081f7f_1.conda - sha256: c0524a22064bc17f5c037da09ba54cc9e767741ef645178e499750c44bec2531 - md5: af8e51382464d4cc2d0054977c40a732 + size: 739678 + timestamp: 1737285399565 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-storage-2.34.0-h7081f7f_0.conda + sha256: 79f6b93fb330728530036b2b38764e9d42e0eedd3ae7e549ac7eae49acd1e52b + md5: f09cb03f9cf847f1dc41b4c1f65c97c2 depends: - __osx >=11.0 - libabseil - libcrc32c >=1.1.2,<1.2.0a0 - libcurl - libcxx >=18 - - libgoogle-cloud 2.33.0 hdbe95d5_1 + - libgoogle-cloud 2.34.0 hdbe95d5_0 - libzlib >=1.3.1,<2.0a0 - openssl arch: arm64 platform: osx license: Apache-2.0 license_family: Apache - size: 526963 - timestamp: 1735649222088 + size: 529202 + timestamp: 1737285376801 - conda: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.67.1-h25350d4_1.conda sha256: 014627485b3cf0ea18e04c0bab07be7fb98722a3aeeb58477acc7e1c3d2f911e md5: 0c6497a760b99a926c7c12b74951a39c @@ -3939,13 +3927,13 @@ packages: license_family: BSD size: 4165774 timestamp: 1730772154295 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-h081d1f1_8_cpu.conda - build_number: 8 - sha256: 2c6d900d4e9dd3c4000886d76d3f8a099e904667ebc6935b49428e6e9b766481 - md5: a9fa0ef309406c84b46db3a28efd761e +- conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-19.0.0-h081d1f1_3_cpu.conda + build_number: 3 + sha256: 287c4864b849180ce9e447df8227da2c4006001056e1668dacc3365264b0e828 + md5: 95f8b5758148e62a055f4c6538a31f0b depends: - __glibc >=2.17,<3.0.a0 - - libarrow 18.1.0 h9d9f30d_8_cpu + - libarrow 19.0.0 hce2e470_3_cpu - libgcc >=13 - libstdcxx >=13 - libthrift >=0.21.0,<0.21.1.0a0 @@ -3953,15 +3941,14 @@ packages: arch: x86_64 platform: linux license: Apache-2.0 - license_family: APACHE - size: 1207011 - timestamp: 1736610684584 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-hfc78867_8_cpu.conda - build_number: 8 - sha256: 2ed6b9eac4504051ddc094ea3f3a2b3198d4d25a443a96fa2971d8075d790c31 - md5: 9a907190c9e2c6bf1a29569700218f0b + size: 1227537 + timestamp: 1737343982323 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-hfc78867_12_cpu.conda + build_number: 12 + sha256: 224da9fb417e1dc569700cddf6dd7febe9a6e5c12547a389a5b934b8d385c4f8 + md5: 517447be85cda09f9410ca609c69499d depends: - - libarrow 18.1.0 h47f80e1_8_cpu + - libarrow 18.1.0 h4065667_12_cpu - libgcc >=13 - libstdcxx >=13 - libthrift >=0.21.0,<0.21.1.0a0 @@ -3969,25 +3956,23 @@ packages: arch: aarch64 platform: linux license: Apache-2.0 - license_family: APACHE - size: 1117465 - timestamp: 1736611918180 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-h636d7b7_8_cpu.conda - build_number: 8 - sha256: 4991519ef4264abc7160e9faaf8ff01d4731bf1497076bef1895d6c366f796eb - md5: b8bd275a49877fdec62ff787818a869d + size: 1116762 + timestamp: 1737451682325 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-19.0.0-h636d7b7_4_cpu.conda + build_number: 4 + sha256: d394423b8a096cec5481ef4cdb4d39dd4b89949cd6f23bdc14896d8af36d78f3 + md5: 639473b0344e0d2f46feb544cff5c6d8 depends: - __osx >=11.0 - - libarrow 18.1.0 hf3eb8e5_8_cpu + - libarrow 19.0.0 hd1aa4b5_4_cpu - libcxx >=18 - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 arch: arm64 platform: osx license: Apache-2.0 - license_family: APACHE - size: 873593 - timestamp: 1736609701839 + size: 885681 + timestamp: 1737459816091 - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.45-h943b412_0.conda sha256: b8f5b5ba9a14dedf7c97c01300de492b1b52b68eacbc3249a13fdbfa82349a2f md5: 85cbdaacad93808395ac295b5667d25b @@ -4147,9 +4132,9 @@ packages: license: ISC size: 164972 timestamp: 1716828607917 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.48.0-hee588c1_0.conda - sha256: 7bb84f44e1bd756da4a3d0d43308324a5533e6ba9f4772475884bce44d405064 - md5: 84bd1c9a82b455e7a2f390375fb38f90 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.48.0-hee588c1_1.conda + sha256: 22853d289ef6ec8a5b20f1aa261895b06525439990d3b139f8bfd0b5c5e32a3a + md5: 3fa05c528d8a1e2a67bbf1e36f22d3bc depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -4157,30 +4142,30 @@ packages: arch: x86_64 platform: linux license: Unlicense - size: 876582 - timestamp: 1737123945341 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.48.0-h5eb1b54_0.conda - sha256: b4365ab7c74a2e6c0444eb950367fa3ca56a87c9921b2faa5ad032fe7a7df682 - md5: 1998946fa3ccf38a07b44a879b2227ae + size: 878223 + timestamp: 1737564987837 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.48.0-h5eb1b54_1.conda + sha256: 81dd9bf66c7f1d9064e007e2c787133100c406e7ca2de61dba9fb7b87372f255 + md5: 4f3a61fe206f20b27c385ee608bcdfda depends: - libgcc >=13 - libzlib >=1.3.1,<2.0a0 arch: aarch64 platform: linux license: Unlicense - size: 1044953 - timestamp: 1737123983895 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.48.0-h3f77e49_0.conda - sha256: b31169cf0ca7b6835baca4ab92d6cf2eee83b1a12a11b72f39521e8baf4d6acb - md5: 714719df4f49e30f9728956f240846ca + size: 1044879 + timestamp: 1737565049785 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.48.0-h3f77e49_1.conda + sha256: 17c06940cc2a13fd6a17effabd6881b1477db38b2cd3ee2571092d293d3fdd75 + md5: 4c55169502ecddf8077973a987d08f08 depends: - __osx >=11.0 - libzlib >=1.3.1,<2.0a0 arch: arm64 platform: osx license: Unlicense - size: 853163 - timestamp: 1737124192432 + size: 852831 + timestamp: 1737564996616 - conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hf672d98_0.conda sha256: 0407ac9fda2bb67e11e357066eff144c845801d00b5f664efbc48813af1e7bb9 md5: be2de152d8073ef1c01b7728475f2fe7 @@ -4365,9 +4350,9 @@ packages: license: HPND size: 370600 timestamp: 1734398863052 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.9.0-hb9d3cd8_1.conda - sha256: 9794e6388e780c3310d46f773bbc924d4053375c3fcdb07a704b57f4616db928 - md5: 1e936bd23d737aac62a18e9a1e7f8b18 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.10.0-h4c51ac1_0.conda + sha256: 8e41563ee963bf8ded06da45f4e70bf42f913cb3c2e79364eb3218deffa3cd74 + md5: aeccfff2806ae38430638ffbb4be9610 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -4375,30 +4360,30 @@ packages: platform: linux license: MIT license_family: MIT - size: 81500 - timestamp: 1732868419835 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.9.0-h86ecc28_1.conda - sha256: 37a1833c55f9945724cd4b3eb6a1469032cc754a1dd725f191c34154ad2ba7e4 - md5: 699f155da290be3a1a64c932c6728991 + size: 82745 + timestamp: 1737244366901 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.10.0-ha346350_0.conda + sha256: 9c333e07b76ae1ea2c882db764be52dc82f632be66d993a50b35ca9c5475074a + md5: c5166bcfb8348e8fc31ee16ec3981a5e depends: - libgcc >=13 arch: aarch64 platform: linux license: MIT license_family: MIT - size: 81526 - timestamp: 1732868466862 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.9.0-h5505292_1.conda - sha256: ea88f06e97ef8fa2490f7594f8885bb542577226edf8abba3144302d951a53c2 - md5: f777470d31c78cd0abe1903a2fda436f + size: 82679 + timestamp: 1737329054400 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.10.0-hda25de7_0.conda + sha256: aca3ef31d3dff5cefd3790742a5ee6548f1cf0201d0e8cee08b01da503484eb6 + md5: 5f741aed1d8d393586a5fdcaaa87f45c depends: - __osx >=11.0 arch: arm64 platform: osx license: MIT license_family: MIT - size: 83000 - timestamp: 1732868631531 + size: 83628 + timestamp: 1737244450097 - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda sha256: 787eb542f055a2b3de553614b25f09eefb0a0931b0c87dbcce6efdfd92f04f18 md5: 40b61aab5c7ba9ff276c41cfffe6b80b @@ -4752,47 +4737,47 @@ packages: license_family: BSD size: 24048 timestamp: 1733219945697 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011705-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025012205-release.conda noarch: python - sha256: 15578c7bc78001d3882c3b9af9d7d8bf3566c68ae133870038be055c8dfd90e9 - md5: 7e6c35d82044e8d31e9327e7d90bfb2b + sha256: 63e2ce51c01fdb5a73f62ea5f862acea5946f45d6b6bd63dafc78d242822e1b7 + md5: 5289b5be19bf0f500e1a06f44d816343 depends: - - max-core ==25.1.0.dev2025011705 release - - max-python >=25.1.0.dev2025011705,<26.0a0 - - mojo-jupyter ==25.1.0.dev2025011705 release - - mblack ==25.1.0.dev2025011705 release + - max-core ==25.1.0.dev2025012205 release + - max-python >=25.1.0.dev2025012205,<26.0a0 + - mojo-jupyter ==25.1.0.dev2025012205 release + - mblack ==25.1.0.dev2025012205 release license: LicenseRef-Modular-Proprietary - size: 9920 - timestamp: 1737091778690 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025011705-release.conda - sha256: 3e39d779710559206129052c64ac530b9d262288f75812ba07c3e3e395a0e18e - md5: 5575de33b0503143e635ade746f057c3 + size: 9919 + timestamp: 1737524122346 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025012205-release.conda + sha256: 061e7c8aba735fd2d15aca623c2f81452723bc0a5ab1e5a63af1761a9eaba9ef + md5: 2d8a82ff460cd4e03382a9151a8cf8d8 depends: - - mblack ==25.1.0.dev2025011705 release + - mblack ==25.1.0.dev2025012205 release license: LicenseRef-Modular-Proprietary - size: 244764907 - timestamp: 1737091186388 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025011705-release.conda - sha256: a9e7747e7cb7ff01dc58f4c7f5772d2b4483693dd200c88653b1ec2dda46bc8b - md5: a9b13b577fb1bcc14b330f5a4185023c + size: 242139658 + timestamp: 1737523134733 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025012205-release.conda + sha256: eade442118da29d8b42289e6859699b4faafcf51d02189729259a2e7a97a0dcc + md5: 8e0412932905d3a4decf17acd50899ce depends: - - mblack ==25.1.0.dev2025011705 release + - mblack ==25.1.0.dev2025012205 release license: LicenseRef-Modular-Proprietary - size: 247240781 - timestamp: 1737091778688 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025011705-release.conda - sha256: 9369b738945ef783af1e4caf2676bd6a299ff86e4ef9504e7a5ee69841fffa01 - md5: c4397350b325ae5a0e07f61e483fc3e5 + size: 244683388 + timestamp: 1737524122344 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025012205-release.conda + sha256: b5ccec88293901182a43d7f407d04b522b729cefaab066788496adec5bd3f2d2 + md5: bd5da5f25bd5151b4b691c34acdbeff0 depends: - - mblack ==25.1.0.dev2025011705 release + - mblack ==25.1.0.dev2025012205 release license: LicenseRef-Modular-Proprietary - size: 206615275 - timestamp: 1737092643231 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025011705-3.12release.conda - sha256: bdda011f73105d5d91e29abdacc4e7304501249c3bb50e83517661cdea4ef56a - md5: 0ddfaa3caa3647a0cbcdf394774ee6be + size: 203820478 + timestamp: 1737523349069 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025012205-3.12release.conda + sha256: ceb4d33afe634401be386903e2f516b78f2b5e23e15cbedad42cce2600c97b7d + md5: ecfacd66a5b71794c53a468fbefcef6a depends: - - max-core ==25.1.0.dev2025011705 release + - max-core ==25.1.0.dev2025012205 release - python 3.12.* - fastapi - httpx @@ -4813,13 +4798,13 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 124617960 - timestamp: 1737091186397 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025011705-3.12release.conda - sha256: 3ec1d98731b5c86829e7dd0d76b3ad820173a418f58833ea0237e34d356b58c6 - md5: 0ed0380d3ee48a36fe43f85f61fd9fe3 + size: 119861319 + timestamp: 1737523134743 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025012205-3.12release.conda + sha256: 14ae6f16ce6c895de574bb02307cd58e87e32013bde0d905d6a1a67e686ca204 + md5: fb06394177c69b52c2ecf9ceaa7b308b depends: - - max-core ==25.1.0.dev2025011705 release + - max-core ==25.1.0.dev2025012205 release - python 3.12.* - fastapi - httpx @@ -4840,13 +4825,13 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 127367910 - timestamp: 1737091778698 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025011705-3.12release.conda - sha256: 853e12e0ac11f3dcf5392e94cc927233ba940a71a5cf73c0cec54ad4917256c0 - md5: 53e9620bd08e983c5e52e02afef0a990 + size: 122258493 + timestamp: 1737524122355 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025012205-3.12release.conda + sha256: 35e34095931d604893d014773f8c61c1c09a9888946dec4a01f1db827bd2f439 + md5: 589be4ace2edf68cfc3cf1d0cc429864 depends: - - max-core ==25.1.0.dev2025011705 release + - max-core ==25.1.0.dev2025012205 release - python 3.12.* - fastapi - httpx @@ -4867,12 +4852,12 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 110545057 - timestamp: 1737092643234 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011705-release.conda + size: 105223218 + timestamp: 1737523349072 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012205-release.conda noarch: python - sha256: 180bbe7d8b76c5d0f453b72f81fae10522b7a98a31e6fbeff542dbb31bb9b613 - md5: 680622d3117019e99ddc173efab357c7 + sha256: 31bce03569c241ade0a344f1fe1a683f928fe367ae57147b3e316783631822fe + md5: c54b5f7d0d777b8995e38978d8626ffc depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -4882,8 +4867,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130807 - timestamp: 1737091778695 + size: 130797 + timestamp: 1737524122352 - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda sha256: 78c1bbe1723449c52b7a9df1af2ee5f005209f67e40b6e1d3c7619127c43b1c7 md5: 592132998493b3ff25fd7479396e8351 @@ -4893,18 +4878,18 @@ packages: license_family: MIT size: 14465 timestamp: 1733255681319 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011705-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025012205-release.conda noarch: python - sha256: eab543a5c31c091b3d042980d068a950c51905d14a18532710f9be94ba88ba5d - md5: eea061b963a95002a8740d4b4f506d44 + sha256: 78e2818c9d17321c5fe73f9dca3d7a9c51ad989c00f8ea9721deb94a4f03800e + md5: ca3c9282adb4a04dbd02f3ab8e73445c depends: - - max-core ==25.1.0.dev2025011705 release + - max-core ==25.1.0.dev2025012205 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22929 - timestamp: 1737091778696 + size: 22925 + timestamp: 1737524122353 - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py312h178313f_2.conda sha256: b05bc8252a6e957bf4a776ed5e0e61d1ba88cdc46ccb55890c72cc58b10371f4 md5: 5b5e3267d915a107eca793d52e1b780a @@ -5624,23 +5609,23 @@ packages: license_family: MIT size: 8381 timestamp: 1726802424786 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-18.1.0-py312h7900ff3_0.conda - sha256: 46a61c29375d3bf1933eae61c7861394c168898915d59fc99bf05e46de2ff5ad - md5: ac65b70df28687c6af4270923c020bdd - depends: - - libarrow-acero 18.1.0.* - - libarrow-dataset 18.1.0.* - - libarrow-substrait 18.1.0.* - - libparquet 18.1.0.* - - pyarrow-core 18.1.0 *_0_* +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-19.0.0-py312h7900ff3_0.conda + sha256: 7d98e626ec65b882341482ad15ecb7a670ee41dbaf375aa660ba8b7d0a940504 + md5: 14f86e63b5c214dd9fb34e5472d4bafc + depends: + - libarrow-acero 19.0.0.* + - libarrow-dataset 19.0.0.* + - libarrow-substrait 19.0.0.* + - libparquet 19.0.0.* + - pyarrow-core 19.0.0 *_0_* - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 arch: x86_64 platform: linux license: Apache-2.0 license_family: APACHE - size: 25213 - timestamp: 1732610785600 + size: 25289 + timestamp: 1737128438818 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-18.1.0-py312h8025657_0.conda sha256: 49db959887cb89b44053a44a98d0f35644fc0b2003587492f02b56046de0b60a md5: 9bb7d32e96a5dcb5ea7fd90a11a83656 @@ -5658,43 +5643,43 @@ packages: license_family: APACHE size: 25374 timestamp: 1732611006864 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-18.1.0-py312h1f38498_0.conda - sha256: 06c0e208d5bf15051874097366c8e8e5db176dffba38526f227a34e80cc8e9bc - md5: 3710616b880b31d0c8afd8ae7e12392a - depends: - - libarrow-acero 18.1.0.* - - libarrow-dataset 18.1.0.* - - libarrow-substrait 18.1.0.* - - libparquet 18.1.0.* - - pyarrow-core 18.1.0 *_0_* +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-19.0.0-py312h1f38498_0.conda + sha256: 9d693901833c2ff4e5d67e1f2f6df50f699e1cec2f580c26d42299654830855a + md5: bd5e025292ff1127aa1534b59e55c4d0 + depends: + - libarrow-acero 19.0.0.* + - libarrow-dataset 19.0.0.* + - libarrow-substrait 19.0.0.* + - libparquet 19.0.0.* + - pyarrow-core 19.0.0 *_0_* - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 arch: arm64 platform: osx license: Apache-2.0 license_family: APACHE - size: 25375 - timestamp: 1732610892198 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-18.1.0-py312h01725c0_0_cpu.conda - sha256: 948a4161c56f846d374a3721a657e58ddbc992a29b3b3e7a6411975c30361d94 - md5: ee80934a6c280ff8635f8db5dec11e04 + size: 25428 + timestamp: 1737128284082 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-19.0.0-py312h01725c0_0_cpu.conda + sha256: 81178d0de0ac851a0a78e09c81ad92274cf770a38b28acdf53a0cfb2122d15aa + md5: 7ab1143b9ac1af5cc4a630706f643627 depends: - __glibc >=2.17,<3.0.a0 - - libarrow 18.1.0.* *cpu + - libarrow 19.0.0.* *cpu - libgcc >=13 - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 constrains: - - numpy >=1.21,<3 - apache-arrow-proc =*=cpu + - numpy >=1.21,<3 arch: x86_64 platform: linux license: Apache-2.0 license_family: APACHE - size: 4612916 - timestamp: 1732610377259 + size: 5230953 + timestamp: 1737128097002 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-18.1.0-py312h66f7834_0_cpu.conda sha256: e7eb062145be554c23dfefa0ebe8c5f6ae8c59635117a6921e66403d6addcda3 md5: 3390c8b8f57e85506c92a37cf750bdd7 @@ -5715,26 +5700,26 @@ packages: license_family: APACHE size: 4406662 timestamp: 1732610939832 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-18.1.0-py312hc40f475_0_cpu.conda - sha256: 063eb168a29d4ce6d9ed865e9e1ad3b6e141712189955a79e06b24ddc0cbbc9c - md5: 9859e7c4b94bbf69772dbf0511101cec +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-19.0.0-py312hc40f475_0_cpu.conda + sha256: 6303fe1c3e6d36273b72f0eeb3f19897d2376d57fe8c757f55dcbfbaa5cd6840 + md5: df502157843a7b1d90af04803767be15 depends: - __osx >=11.0 - - libarrow 18.1.0.* *cpu + - libarrow 19.0.0.* *cpu - libcxx >=18 - libzlib >=1.3.1,<2.0a0 - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 constrains: - - numpy >=1.21,<3 - apache-arrow-proc =*=cpu + - numpy >=1.21,<3 arch: arm64 platform: osx license: Apache-2.0 license_family: APACHE - size: 3909116 - timestamp: 1732610863261 + size: 4393075 + timestamp: 1737128225546 - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda sha256: 79db7928d13fab2d892592223d7570f5061c192f27b9febd1a418427b719acc6 md5: 12c566707c80111f9799308d9e265aef @@ -5999,15 +5984,14 @@ packages: license_family: Apache size: 27913 timestamp: 1734420869885 -- conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_1.conda - sha256: 57c9a02ec25926fb48edca59b9ede107823e5d5c473b94a0e05cc0b9a193a642 - md5: c0def296b2f6d2dd7b030c2a7f66bb1f +- conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.1-pyhd8ed1ab_0.conda + sha256: 1597d6055d34e709ab8915091973552a0b8764c8032ede07c4e99670da029629 + md5: 392c91c42edd569a7ec99ed8648f597a depends: - python >=3.9 license: Apache-2.0 - license_family: APACHE - size: 142235 - timestamp: 1733235414217 + size: 143794 + timestamp: 1737541204030 - conda: https://conda.anaconda.org/conda-forge/linux-64/python-xxhash-3.5.0-py312h66e93f0_1.conda sha256: 20851b1e59fee127d49e01fc73195a88ab0779f103b7d6ffc90d11142a83678f md5: 39aed2afe4d0cf76ab3d6b09eecdbea7 @@ -6097,9 +6081,9 @@ packages: license_family: MIT size: 188538 timestamp: 1706886944988 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py312h66e93f0_1.conda - sha256: a60705971e958724168f2ebbb8ed4853067f1d3f7059843df3903e3092bbcffa - md5: 549e5930e768548a89c23f595dac5a95 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py312h178313f_2.conda + sha256: 159cba13a93b3fe084a1eb9bda0a07afc9148147647f0d437c3c3da60980503b + md5: cf2485f39740de96e2a7f2bb18ed2fee depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -6110,11 +6094,11 @@ packages: platform: linux license: MIT license_family: MIT - size: 206553 - timestamp: 1725456256213 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyyaml-6.0.2-py312hb2c0f52_1.conda - sha256: 8c515ebe1e7e85d972d72b75760af9dfac06fd11a9dba7e05c42d69aedbb303c - md5: dc5de424f7dbb9772da720dbb81317b2 + size: 206903 + timestamp: 1737454910324 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyyaml-6.0.2-py312hcc812fe_2.conda + sha256: dc78e41d51300722ba35ac4a10d37339ceffbe22d7501c71dfd3f633a4f8e79a + md5: 4de4a5ff81c941674e08595244e7cd61 depends: - libgcc >=13 - python >=3.12,<3.13.0a0 @@ -6125,11 +6109,11 @@ packages: platform: linux license: MIT license_family: MIT - size: 199141 - timestamp: 1725456356043 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py312h024a12e_1.conda - sha256: b06f1c15fb39695bbf707ae8fb554b9a77519af577b5556784534c7db10b52e3 - md5: 1ee23620cf46cb15900f70a1300bae55 + size: 199172 + timestamp: 1737454840766 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py312h998013c_2.conda + sha256: ad225ad24bfd60f7719709791345042c3cb32da1692e62bd463b084cf140e00d + md5: 68149ed4d4e9e1c42d2ba1f27f08ca96 depends: - __osx >=11.0 - python >=3.12,<3.13.0a0 @@ -6140,8 +6124,8 @@ packages: platform: osx license: MIT license_family: MIT - size: 187143 - timestamp: 1725456547263 + size: 192148 + timestamp: 1737454886351 - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.0-py312hbf22597_3.conda sha256: bc303f9b11e04a515f79cd5ad3bfa0e84b9dfec76552626d6263b38789fe6678 md5: 746ce19f0829ec3e19c93007b1a224d3 @@ -6342,9 +6326,9 @@ packages: license_family: MIT size: 17357 timestamp: 1733750834072 -- conda: https://conda.anaconda.org/conda-forge/linux-64/s2n-1.5.10-hb5b8611_0.conda - sha256: f6d451821fddc26b93f45e9313e1ea15e09e5ef049d4e137413a5225d2a5dfba - md5: 999f3673f2a011f59287f2969e3749e4 +- conda: https://conda.anaconda.org/conda-forge/linux-64/s2n-1.5.11-h072c03f_0.conda + sha256: cfdd98c8f9a1e5b6f9abce5dac6d590cc9fe541a08466c9e4a26f90e00b569e3 + md5: 5e8060d52f676a40edef0006a75c718f depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -6353,11 +6337,11 @@ packages: platform: linux license: Apache-2.0 license_family: Apache - size: 355142 - timestamp: 1734415467047 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/s2n-1.5.10-h5df210e_0.conda - sha256: b5e7a9f4b7b1ec5c5c3661e2defc8b47fab543b05cad6fec78739d8007612464 - md5: 3d3979efcc0f44f3f0cef3de03b296cc + size: 356213 + timestamp: 1737146304079 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/s2n-1.5.11-h3caee7a_0.conda + sha256: 5a7ae66f96be24c3b2007139b6c3701ab015b4b4eb4eccfdd07be97710243a47 + md5: 1517c0518f8a06a48a15f41d94252874 depends: - libgcc >=13 - openssl >=3.4.0,<4.0a0 @@ -6365,8 +6349,8 @@ packages: platform: linux license: Apache-2.0 license_family: Apache - size: 353450 - timestamp: 1734415474615 + size: 352811 + timestamp: 1737146319512 - conda: https://conda.anaconda.org/conda-forge/linux-64/safetensors-0.5.2-py312h12e396e_0.conda sha256: 98b8dfa5eec083e0b3ace00906a7f7e748b1e2446dca17e87473f43278fcc036 md5: 999ca9d87d2bb8b4c01e62c755b928cf @@ -6651,9 +6635,9 @@ packages: license_family: BSD size: 110051 timestamp: 1733367480074 -- conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.48.0-pyhd8ed1ab_0.conda - sha256: c8dd6d69e4ef67c7d507dec2be4b6964f6ddbe1ce35a822ddf4089505d702f33 - md5: 2c57d4af7b8952484962b40a59cf1537 +- conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.48.1-pyhd8ed1ab_0.conda + sha256: 92fc16e2449fc81f516d31630fd18c3f33b95bc0c069655a3c0042fbd11a09a4 + md5: 08f62b2c92d1fa610896fc7b16b05031 depends: - datasets !=2.5.0 - filelock @@ -6669,8 +6653,8 @@ packages: - tqdm >=4.27 license: Apache-2.0 license_family: APACHE - size: 3408277 - timestamp: 1736534112195 + size: 3405362 + timestamp: 1737429408302 - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda sha256: ef695490e895c2ad552c77ec497b899b09fd4ad4ab07edcf5649f5994cf92a35 md5: 170a0398946d8f5b454e592672b6fc20 @@ -6867,9 +6851,9 @@ packages: license_family: MIT size: 363822 timestamp: 1736550859472 -- conda: https://conda.anaconda.org/conda-forge/linux-64/websockets-14.1-py312h66e93f0_0.conda - sha256: 5998940f91765ba991cf286c863c20bcb53db92bb976a2b5a714566b86b0e763 - md5: a79f7ce618bd0a9f4c00c59a03570fcd +- conda: https://conda.anaconda.org/conda-forge/linux-64/websockets-14.2-py312h66e93f0_0.conda + sha256: 52092f1f811fddcbb63e4e8e1c726f32a0a1ea14c36b70982fc2021a3c010e48 + md5: 279166352304d5d4b63429e9c86fa3dc depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -6879,11 +6863,11 @@ packages: platform: linux license: BSD-3-Clause license_family: BSD - size: 242145 - timestamp: 1731498716195 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/websockets-14.1-py312hb2c0f52_0.conda - sha256: c292a8badcbe4040537e225fbeb237bfaf272808eab060067d965d3da98ccd5c - md5: 7e2a0ef2a1a87f88f9745f9c7059186e + size: 242949 + timestamp: 1737358315063 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/websockets-14.2-py312hb2c0f52_0.conda + sha256: 5b8273df10b85a667b4fe71788a12c33a9626723650e28f582fd56c87bad0471 + md5: d7535d5d2f8d49d625071f305d6112a1 depends: - libgcc >=13 - python >=3.12,<3.13.0a0 @@ -6893,11 +6877,11 @@ packages: platform: linux license: BSD-3-Clause license_family: BSD - size: 242912 - timestamp: 1731498811466 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/websockets-14.1-py312hea69d52_0.conda - sha256: 98fb04a1a0f53dc604378f94b5795d0b8e462fee01bf0a887cb34d0efdf5d21f - md5: 89b79a9baa7db46ce21f5738a5a3dfda + size: 244675 + timestamp: 1737358397158 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/websockets-14.2-py312hea69d52_0.conda + sha256: e5ad8c983a1669d06a6648990c0491d5469143f02003c8fd2ae7d066d7d4b086 + md5: 8757561d3ea10ba178fb7fb888f33e3a depends: - __osx >=11.0 - python >=3.12,<3.13.0a0 @@ -6907,8 +6891,8 @@ packages: platform: osx license: BSD-3-Clause license_family: BSD - size: 243131 - timestamp: 1731498944076 + size: 246269 + timestamp: 1737358485546 - conda: https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.17.2-py312h66e93f0_0.conda sha256: ed3a1700ecc5d38c7e7dc7d2802df1bc1da6ba3d6f6017448b8ded0affb4ae00 md5: 669e63af87710f8d52fdec9d4d63b404 @@ -7081,9 +7065,9 @@ packages: license_family: MIT size: 88016 timestamp: 1641347076660 -- conda: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.18.3-py312h66e93f0_0.conda - sha256: a0d93c3bef723e384cff8a29a82a2c6b7a73b39328088f3a2d97c901f56e9a63 - md5: 91df2efaa08730416bec2a4502309275 +- conda: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.18.3-py312h178313f_1.conda + sha256: 6b054c93dd19fd7544af51b41a8eacca2ab62271f6c0c5a2a0cffe80dc37a0ce + md5: 6822c49f294d4355f19d314b8b6063d8 depends: - __glibc >=2.17,<3.0.a0 - idna >=2.0 @@ -7096,11 +7080,11 @@ packages: platform: linux license: Apache-2.0 license_family: Apache - size: 151393 - timestamp: 1733428897813 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.18.3-py312hb2c0f52_0.conda - sha256: 470b5b0f3ac89acd143095281167dc2ac1a56d4fa22e1794bd8f3b00bb604540 - md5: 0b3c640697bca798d0ab428f530ed24c + size: 152305 + timestamp: 1737575898300 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.18.3-py312hcc812fe_1.conda + sha256: bfa211c0dd5dbb308788f055277dc428b7923ceb2de6a22ea98bc17cf306f9f5 + md5: d14c78abdd6109e2b7162f53b6cc1e77 depends: - idna >=2.0 - libgcc >=13 @@ -7113,11 +7097,11 @@ packages: platform: linux license: Apache-2.0 license_family: Apache - size: 150004 - timestamp: 1733429056665 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.18.3-py312hea69d52_0.conda - sha256: 69c7863809e11bc90c0d935c16e7f151dcc925add08b3894f06059263a8cb9ba - md5: f32f9b16361866a62d6e061fcd7eb400 + size: 149654 + timestamp: 1737576065314 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.18.3-py312h998013c_1.conda + sha256: 48821d23567ca0f853eee6f7812c74392867e123798b5b3c44f58758d8eb580e + md5: 092d3b40acc67c470f379049be343a7a depends: - __osx >=11.0 - idna >=2.0 @@ -7130,8 +7114,8 @@ packages: platform: osx license: Apache-2.0 license_family: Apache - size: 141556 - timestamp: 1733429104990 + size: 145543 + timestamp: 1737576074753 - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda sha256: a4dc72c96848f764bb5a5176aa93dd1e9b9e52804137b99daeebba277b31ea10 md5: 3947a35e916fcc6b9825449affbf4214 diff --git a/magic.lock b/magic.lock index 1fd96c856c..552aaf8214 100644 --- a/magic.lock +++ b/magic.lock @@ -14,19 +14,19 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.8.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.3.0-pyh71513ae_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-h205f482_16.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.1-h205f482_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.1-h1a47875_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.10.6-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.3.0-h4e1184b_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.0-h7959bf6_11.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.2-hefd7a92_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-h831e299_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-h173a860_6.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h11f4f37_12.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.7-hf454442_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.9-he1b24dc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.2-h4e1184b_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-h4e1184b_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.8-h8570fcd_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-h7001638_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.9-he0e7f3f_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-h4d475cb_6.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.10.0-h113e628_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.13.0-h3cf044e_1.conda @@ -51,7 +51,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/fastapi-0.115.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.7-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/filelock-3.17.0-pyhd8ed1ab_0.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 - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.12.0-pyhd8ed1ab_0.conda @@ -77,10 +77,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-h9d9f30d_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-hcb10f89_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-hcb10f89_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-h08228c5_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-19.0.0-hce2e470_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-19.0.0-hcb10f89_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-19.0.0-hcb10f89_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-19.0.0-h08228c5_3_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-26_linux64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hb9d3cd8_2.conda @@ -109,18 +109,18 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.28-pthreads_h94d23a6_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-h081d1f1_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-19.0.0-h081d1f1_3_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.45-h943b412_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.48.0-hee588c1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.48.0-hee588c1_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hf672d98_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-hc0a3c3a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libthrift-0.21.0-h0e7cc3e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hd9ff511_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.9.0-hb9d3cd8_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.10.0-h4c51ac1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.50.0-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.5.0-h851e524_0.conda @@ -132,12 +132,12 @@ 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-25.1.0.dev2025011705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025011705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025011705-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025012205-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025012205-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025012205-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012205-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-25.1.0.dev2025011705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025012205-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 @@ -162,8 +162,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.1-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/protobuf-5.28.3-py312h2ec8cdc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-18.1.0-py312h7900ff3_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-18.1.0-py312h01725c0_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-19.0.0-py312h7900ff3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-19.0.0-py312h01725c0_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.5-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.27.2-py312h12e396e_0.conda @@ -176,11 +176,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.20-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python-xxhash-3.5.0-py312h66e93f0_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py312h66e93f0_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py312h178313f_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.0-py312hbf22597_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/re2-2024.07.02-h9925aae_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda @@ -188,7 +188,7 @@ environments: - 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.10-hb5b8611_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/s2n-1.5.11-h072c03f_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/safetensors-0.5.2-py312h12e396e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda @@ -201,7 +201,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.48.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.48.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda @@ -213,13 +213,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.34.0-h31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/uvloop-0.21.0-py312h66e93f0_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/watchfiles-1.0.4-py312h12e396e_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/websockets-14.1-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/websockets-14.2-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.17.2-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xxhash-0.8.2-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.18.3-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.18.3-py312h178313f_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312hef9b889_1.conda @@ -232,19 +232,19 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.8.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.3.0-pyh71513ae_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-hb7ec8d5_16.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.1-hb7ec8d5_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.1-h740c5af_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-common-0.10.6-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-compression-0.3.0-h0f0193d_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-event-stream-0.5.0-hcbd8f92_11.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.2-h3df160d_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-h1a307af_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-hfd5ba81_6.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h5f50e26_12.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.7-h2080895_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.9-h05b070f_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.2-h0f0193d_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h0f0193d_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.8-h92ee776_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h90ecb4a_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.9-hab3ce66_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h88461e4_6.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-core-cpp-1.14.0-h1887c18_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-identity-cpp-1.10.0-h47b0b28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-blobs-cpp-12.13.0-h185ecfd_1.conda @@ -269,7 +269,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/fastapi-0.115.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.7-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/filelock-3.17.0-pyhd8ed1ab_0.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 - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.12.0-pyhd8ed1ab_0.conda @@ -296,10 +296,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.0.0-h4de3ea5_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h18dbdb1_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-h47f80e1_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h3b568fd_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h3b568fd_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h1e9d426_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-h4065667_12_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h3b568fd_12_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h3b568fd_12_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h1e9d426_12_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-26_linuxaarch64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlicommon-1.1.0-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlidec-1.1.0-h86ecc28_2.conda @@ -318,8 +318,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-2.33.0-hccf9d24_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-storage-2.33.0-hb9b2b65_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-2.34.0-hccf9d24_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-storage-2.34.0-hb9b2b65_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgrpc-1.67.1-hf7ccdd3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libiconv-1.17-h31becfc_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libjpeg-turbo-3.0.0-h31becfc_1.conda @@ -328,18 +328,18 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnghttp2-1.64.0-hc8609a4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.28-pthreads_h9d3fd7e_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-hfc78867_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-hfc78867_12_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.45-hec79eb8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.3-h44a3b7b_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.20-h68df207_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.48.0-h5eb1b54_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.48.0-h5eb1b54_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libssh2-1.11.1-ha41c0db_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libthrift-0.21.0-h154c74f_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.0-h88f7998_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.9.0-h86ecc28_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.10.0-ha346350_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuv-1.50.0-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libwebp-base-1.5.0-h0886dbf_0.conda @@ -351,12 +351,12 @@ 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-25.1.0.dev2025011705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025011705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025011705-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025012205-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025012205-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025012205-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012205-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-25.1.0.dev2025011705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025012205-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 @@ -395,11 +395,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.20-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-xxhash-3.5.0-py312h52516f5_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.12-5_cp312.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyyaml-6.0.2-py312hb2c0f52_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyyaml-6.0.2-py312hcc812fe_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyzmq-26.2.0-py312h2427ae1_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/re2-2024.07.02-haa97905_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8fc344f_1.conda @@ -407,7 +407,7 @@ environments: - 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.10-h5df210e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/s2n-1.5.11-h3caee7a_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/safetensors-0.5.2-py312h8cbf658_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda @@ -420,7 +420,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py312h52516f5_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.48.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.48.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda @@ -432,13 +432,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.34.0-h31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/uvloop-0.21.0-py312hb2c0f52_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/watchfiles-1.0.4-py312h8cbf658_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/websockets-14.1-py312hb2c0f52_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/websockets-14.2-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/wrapt-1.17.2-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxau-1.0.12-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxdmcp-1.1.5-h57736b2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xxhash-0.8.2-h31becfc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yaml-0.2.5-hf897c2e_2.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.18.3-py312hb2c0f52_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.18.3-py312hcc812fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zeromq-4.3.5-h5efb499_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstandard-0.23.0-py312hb698573_1.conda @@ -450,19 +450,19 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.8.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.3.0-pyh71513ae_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-hfc2798a_16.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.1-hfc2798a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.1-hc8a0bd2_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.10.6-h5505292_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-compression-0.3.0-hc8a0bd2_5.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.0-h54f970a_11.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.2-h96aa502_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-haba67d1_5.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-haba67d1_6.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h24f418c_12.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.7-h1be5864_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.9-hf37e03c_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.2-hc8a0bd2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-hc8a0bd2_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.8-h23176ea_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-h794939a_5.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.9-ha81f72f_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-h0e5014b_6.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.14.0-hd50102c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.10.0-hc602bab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-blobs-cpp-12.13.0-h7585a09_1.conda @@ -487,7 +487,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/fastapi-0.115.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.7-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/filelock-3.17.0-pyhd8ed1ab_0.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 - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.12.0-pyhd8ed1ab_0.conda @@ -512,10 +512,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.16-ha0e7c42_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_h07bc746_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-hf3eb8e5_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-hf07054f_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-hf07054f_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-h4239455_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-19.0.0-hd1aa4b5_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-19.0.0-hf07054f_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-19.0.0-hf07054f_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-19.0.0-h4239455_4_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-26_osxarm64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.1.0-hd74edd7_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.1.0-hd74edd7_2.conda @@ -532,8 +532,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-2.33.0-hdbe95d5_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-storage-2.33.0-h7081f7f_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-2.34.0-hdbe95d5_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-storage-2.34.0-h7081f7f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgrpc-1.67.1-h0a426d6_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.17-h0d3ecfb_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.0.0-hb547adb_1.conda @@ -541,16 +541,16 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.3-h39f12f2_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.64.0-h6d7220d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.28-openmp_hf332438_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-h636d7b7_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-19.0.0-h636d7b7_4_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.45-h3783ad8_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.3-h3bd63a1_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h07bc746_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.48.0-h3f77e49_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.48.0-h3f77e49_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.1-h9cc3647_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libthrift-0.21.0-h64651cc_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-h551f018_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.9.0-h5505292_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.10.0-hda25de7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libuv-1.50.0-h5505292_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.5.0-h2471fea_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxcb-1.17.0-hdb1d25a_0.conda @@ -561,12 +561,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-25.1.0.dev2025011705-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025011705-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025011705-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025012205-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025012205-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025012205-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012205-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-25.1.0.dev2025011705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025012205-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 @@ -591,8 +591,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.1-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/protobuf-5.28.3-py312hd8f9ff3_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pthread-stubs-0.4-hd74edd7_1002.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-18.1.0-py312h1f38498_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-18.1.0-py312hc40f475_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-19.0.0-py312h1f38498_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-19.0.0-py312hc40f475_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.5-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.27.2-py312hcd83bfe_0.conda @@ -605,11 +605,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.20-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-xxhash-3.5.0-py312h024a12e_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-5_cp312.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py312h024a12e_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py312h998013c_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.0-py312hf8a1cbd_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/re2-2024.07.02-h6589ca4_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h92ec313_1.conda @@ -629,7 +629,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.48.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.48.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda @@ -641,13 +641,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.34.0-h31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/uvloop-0.21.0-py312h0bf5046_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/watchfiles-1.0.4-py312hcd83bfe_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/websockets-14.1-py312hea69d52_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/websockets-14.2-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/wrapt-1.17.2-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxau-1.0.12-h5505292_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxdmcp-1.1.5-hd74edd7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xxhash-0.8.2-hb547adb_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.18.3-py312hea69d52_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.18.3-py312h998013c_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py312h15fbf35_1.conda @@ -807,9 +807,9 @@ packages: license_family: MIT size: 56354 timestamp: 1734348889193 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-h205f482_16.conda - sha256: 0695c285b70385913dc7dce05888d3ad1378247b65273bdab509494a2f8f0eea - md5: b0815d37ab812ade9c07239da7c3c369 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.1-h205f482_0.conda + sha256: ebe5e33249f37f6bb481de99581ebdc92dbfcf1b6915609bcf3c9e78661d6352 + md5: 9c500858e88df50af3cc883d194de78a depends: - __glibc >=2.17,<3.0.a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 @@ -822,11 +822,11 @@ packages: platform: linux license: Apache-2.0 license_family: Apache - size: 107478 - timestamp: 1736592747413 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-hb7ec8d5_16.conda - sha256: 5a2a2691f2e0028e8549b97a340d7e6c502e0d54b7deba00fad505812663a98b - md5: 56f166780076db46c5e273988693d8a3 + size: 108111 + timestamp: 1737509831651 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.1-hb7ec8d5_0.conda + sha256: e1e6c9267a4d9af30b1d28c11a9041b17b7840ff83ef08614145a2a4f444f5b4 + md5: 2630f030652970a5531e492f6b2a6dd3 depends: - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.6,<0.10.7.0a0 @@ -838,11 +838,11 @@ packages: platform: linux license: Apache-2.0 license_family: Apache - size: 112264 - timestamp: 1736592695540 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-hfc2798a_16.conda - sha256: cdcd932332311db1b614289101b61e32cbae2478ba2bf85763aaf5a5cc7db6f6 - md5: 1e9a41d5296f50c08ae511d61fddef85 + size: 112658 + timestamp: 1737509863269 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.1-hfc2798a_0.conda + sha256: 5a60d196a585b25d1446fb973009e4e648e8d70beaa2793787243ede6da0fd9a + md5: 0abd67c0f7b60d50348fbb32fef50b65 depends: - __osx >=11.0 - aws-c-cal >=0.8.1,<0.8.2.0a0 @@ -854,8 +854,8 @@ packages: platform: osx license: Apache-2.0 license_family: Apache - size: 92547 - timestamp: 1736592866387 + size: 92562 + timestamp: 1737509877079 - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.1-h1a47875_3.conda sha256: 095ac824ea9303eff67e04090ae531d9eb33d2bf8f82eaade39b839c421e16e8 md5: 55a8561fdbbbd34f50f57d9be12ed084 @@ -1059,38 +1059,38 @@ packages: license_family: Apache size: 152983 timestamp: 1734008451473 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-h831e299_5.conda - sha256: 5920009b1c6f9a2bc131a36725251894e4b4773fce29c4b1065d4213ae337abe - md5: 80dd9f0ddf935290d1dc00ec75ff3023 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-h173a860_6.conda + sha256: 335d822eead0a097ffd23677a288e1f18ea22f47a92d4f877419debb93af0e81 + md5: 9a063178f1af0a898526cc24ba7be486 depends: - __glibc >=2.17,<3.0.a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.6,<0.10.7.0a0 - libgcc >=13 - - s2n >=1.5.10,<1.5.11.0a0 + - s2n >=1.5.11,<1.5.12.0a0 arch: x86_64 platform: linux license: Apache-2.0 license_family: Apache - size: 157864 - timestamp: 1734433578570 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-h1a307af_5.conda - sha256: 71f5bf891299f831dceaea12f926c393bf754569e5305387a88b77e1f94612d8 - md5: da8ab0f3eeac93449ec3d531ede92caa + size: 157263 + timestamp: 1737207617838 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-hfd5ba81_6.conda + sha256: d8adfde05cee11057d99c3802e84b2300430a7c7c3c9936165d1d4b25ef59d91 + md5: 4e6771b45cb2b035c62d023dbf0dc000 depends: - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.6,<0.10.7.0a0 - libgcc >=13 - - s2n >=1.5.10,<1.5.11.0a0 + - s2n >=1.5.11,<1.5.12.0a0 arch: aarch64 platform: linux license: Apache-2.0 license_family: Apache - size: 161889 - timestamp: 1734433686109 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-haba67d1_5.conda - sha256: c0a1a2b0750225ac3dc07fd258c88c2be866bf8ac67ba3d50bb4ecec852ff8ee - md5: 4c5ff4134e76426a75b8c548984fa933 + size: 160933 + timestamp: 1737207637279 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-haba67d1_6.conda + sha256: 73722dd175af78b6cbfa033066f0933351f5382a1a737f6c6d9b8cfa84022161 + md5: d02e8f40ff69562903e70a1c6c48b009 depends: - __osx >=11.0 - aws-c-cal >=0.8.1,<0.8.2.0a0 @@ -1099,8 +1099,8 @@ packages: platform: osx license: Apache-2.0 license_family: Apache - size: 135729 - timestamp: 1734433832730 + size: 136048 + timestamp: 1737207681224 - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h11f4f37_12.conda sha256: 512d3969426152d9d5fd886e27b13706122dc3fa90eb08c37b0d51a33d7bb14a md5: 96c3e0221fa2da97619ee82faa341a73 @@ -1144,12 +1144,12 @@ packages: license_family: Apache size: 134371 timestamp: 1734025379525 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.7-hf454442_0.conda - sha256: c2f205a7bf64c5f40eea373b3a0a7c363c9aa9246a13dd7f3d9c6a4434c4fe2d - md5: 947c82025693bebd557f782bb5d6b469 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.9-he1b24dc_1.conda + sha256: 15fbdedc56850f8be5be7a5bcaea1af09c97590e631c024ae089737fc932fc42 + md5: caafc32928a5f7f3f7ef67d287689144 depends: - __glibc >=2.17,<3.0.a0 - - aws-c-auth >=0.8.0,<0.8.1.0a0 + - aws-c-auth >=0.8.1,<0.8.2.0a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 @@ -1161,13 +1161,13 @@ packages: platform: linux license: Apache-2.0 license_family: Apache - size: 114156 - timestamp: 1734146123386 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.7-h2080895_0.conda - sha256: 20bc2dd60e6518d9b8215c2b652ab5c52ee8a997d3b9a5f69e2dabd28cbf26b2 - md5: ae223efa63fbb4262a2d85c3ab3bc4f5 + size: 115413 + timestamp: 1737558687616 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.9-h05b070f_1.conda + sha256: 9e7857fbc33eddc291fa09890ce468a92485d3e3e127bc00bbd1803e34121f84 + md5: e0a2869195f069db88b8932f5b00bee5 depends: - - aws-c-auth >=0.8.0,<0.8.1.0a0 + - aws-c-auth >=0.8.1,<0.8.2.0a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 @@ -1179,14 +1179,14 @@ packages: platform: linux license: Apache-2.0 license_family: Apache - size: 117641 - timestamp: 1734146239779 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.7-h1be5864_0.conda - sha256: 22966164d63808689fffd35945f57756c95337327e28099b5d77b29fc6a56ecc - md5: a37bba7acb62dd70492ee01eacca3b8f + size: 117875 + timestamp: 1737558720047 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.9-hf37e03c_1.conda + sha256: 92e8ca4eefcbbdf4189584c9410382884a06ed3030e5ecaac656dab8c95e6a80 + md5: de65f5e4ab5020103fe70a0eba9432a0 depends: - __osx >=11.0 - - aws-c-auth >=0.8.0,<0.8.1.0a0 + - aws-c-auth >=0.8.1,<0.8.2.0a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 @@ -1196,8 +1196,8 @@ packages: platform: osx license: Apache-2.0 license_family: Apache - size: 97598 - timestamp: 1734146239038 + size: 98731 + timestamp: 1737558731831 - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.2-h4e1184b_0.conda sha256: 0424e380c435ba03b5948d02e8c958866c4eee50ed29e57f99473a5f795a4cfc md5: dcd498d493818b776a77fbc242fbf8e4 @@ -1272,19 +1272,19 @@ packages: license_family: Apache size: 70186 timestamp: 1733994496998 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.8-h8570fcd_1.conda - sha256: ff8f08bc615d3ef6d970df80988200b3ecee76ecfa4885109cd82b30176cfda9 - md5: f21296b496cca1c1fa426b9a3b676e79 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.9-he0e7f3f_2.conda + sha256: c1930569713bd5231d48d885a5e3707ac917b428e8f08189d14064a2bb128adc + md5: 8a4e6fc8a3b285536202b5456a74a940 depends: - __glibc >=2.17,<3.0.a0 - - aws-c-auth >=0.8.0,<0.8.1.0a0 + - aws-c-auth >=0.8.1,<0.8.2.0a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - - aws-c-s3 >=0.7.7,<0.7.8.0a0 + - aws-c-s3 >=0.7.9,<0.7.10.0a0 - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 - libgcc >=13 - libstdcxx >=13 @@ -1292,20 +1292,20 @@ packages: platform: linux license: Apache-2.0 license_family: Apache - size: 354328 - timestamp: 1736598991291 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.8-h92ee776_1.conda - sha256: 114ac89d3936bf801dcbd488ba0b468c7e113a407cb1ee5898259a5202b7e750 - md5: 63546051b5687f793ae977c7994e1339 + size: 353222 + timestamp: 1737565463079 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.9-hab3ce66_2.conda + sha256: c3884fb10e0fd9be5c13256cabcda1afa9d2fcf8878c67214d02fc344509857d + md5: 875968ebffe992b68faf2caebbf32f02 depends: - - aws-c-auth >=0.8.0,<0.8.1.0a0 + - aws-c-auth >=0.8.1,<0.8.2.0a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - - aws-c-s3 >=0.7.7,<0.7.8.0a0 + - aws-c-s3 >=0.7.9,<0.7.10.0a0 - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 - libgcc >=13 - libstdcxx >=13 @@ -1313,38 +1313,38 @@ packages: platform: linux license: Apache-2.0 license_family: Apache - size: 284664 - timestamp: 1736598964131 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.8-h23176ea_1.conda - sha256: db6a31078bb82fb12044d7706239c003568273729f7ba4971c1479b7926ada82 - md5: 31fdd3ffb00f5472196fa95ef08087b7 + size: 283812 + timestamp: 1737565480034 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.9-ha81f72f_2.conda + sha256: ed5f1d19aad53787fdebe13db4709c97eae2092536cc55d3536eba320c4286e1 + md5: c9c034d3239bf25687ca4dd985007ecd depends: - __osx >=11.0 - - aws-c-auth >=0.8.0,<0.8.1.0a0 + - aws-c-auth >=0.8.1,<0.8.2.0a0 - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-c-http >=0.9.2,<0.9.3.0a0 - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - - aws-c-s3 >=0.7.7,<0.7.8.0a0 + - aws-c-s3 >=0.7.9,<0.7.10.0a0 - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 - libcxx >=18 arch: arm64 platform: osx license: Apache-2.0 license_family: Apache - size: 236269 - timestamp: 1736599024242 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-h7001638_5.conda - sha256: 849524b09865e84d6926aa814944cf71511aa4a00fffc5ad174c286d5dfac5f0 - md5: fc01d77a7f383b2915f276c73b7d0934 + size: 235976 + timestamp: 1737565563139 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-h4d475cb_6.conda + sha256: 2309d96d537b5c3810c6e9fbf5b6bb7e06ce907a609d172063ab504b2cc67f30 + md5: 6139e84bbb6fdb27ca49c2981613a5fa depends: - __glibc >=2.17,<3.0.a0 - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - - aws-crt-cpp >=0.29.8,<0.29.9.0a0 + - aws-crt-cpp >=0.29.9,<0.29.10.0a0 - libcurl >=8.11.1,<9.0a0 - libgcc >=13 - libstdcxx >=13 @@ -1354,16 +1354,16 @@ packages: platform: linux license: Apache-2.0 license_family: Apache - size: 3088636 - timestamp: 1736598504343 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h90ecb4a_5.conda - sha256: 9467acd0f2df74ea7472aebdfb8b5656a8d403abad2edbce9743d6e88c94fd10 - md5: 33f86f8de1d8cd40f8fe628dc0784437 + size: 3069914 + timestamp: 1737049585807 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h88461e4_6.conda + sha256: f97e071ffb87bc33923f798761ec6a854614ce193913d34d3248515d18357baa + md5: 0d7f1ee2e5572bf9d1fd78f0f2ab6f6b depends: - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - - aws-crt-cpp >=0.29.8,<0.29.9.0a0 + - aws-crt-cpp >=0.29.9,<0.29.10.0a0 - libcurl >=8.11.1,<9.0a0 - libgcc >=13 - libstdcxx >=13 @@ -1373,17 +1373,17 @@ packages: platform: linux license: Apache-2.0 license_family: Apache - size: 2925443 - timestamp: 1736598526637 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-h794939a_5.conda - sha256: 2b1e7d5a45e82604bfdb6de63c53cf0e9495f596cfd90e644a1e67910de7f91c - md5: a2374b4182bf5b2d08b2903393d0c487 + size: 2919798 + timestamp: 1737049659061 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-h0e5014b_6.conda + sha256: 8c21ce4692d1631b96adea099d7c2b905fc5d078db63bf754d85600dcf184651 + md5: a3b7b9a81d8c6a8f963f619d9e362c39 depends: - __osx >=11.0 - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - - aws-crt-cpp >=0.29.8,<0.29.9.0a0 + - aws-crt-cpp >=0.29.9,<0.29.10.0a0 - libcurl >=8.11.1,<9.0a0 - libcxx >=18 - libzlib >=1.3.1,<2.0a0 @@ -1392,8 +1392,8 @@ packages: platform: osx license: Apache-2.0 license_family: Apache - size: 2824168 - timestamp: 1736598935034 + size: 2834057 + timestamp: 1737126583846 - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda sha256: fe07debdb089a3db17f40a7f20d283d75284bb4fc269ef727b8ba6fc93f7cb5a md5: 0a8838771cc2e985cd295e01ae83baf1 @@ -1967,14 +1967,14 @@ packages: license_family: MIT size: 15546 timestamp: 1734302408607 -- conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_1.conda - sha256: 18dca6e2194732df7ebf824abaefe999e4765ebe8e8a061269406ab88fc418b9 - md5: d692e9ba6f92dc51484bf3477e36ce7c +- conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.17.0-pyhd8ed1ab_0.conda + sha256: 006d7e5a0c17a6973596dd86bfc80d74ce541144d2aee2d22d46fd41df560a63 + md5: 7f402b4a1007ee355bc50ce4d24d4a57 depends: - python >=3.9 license: Unlicense - size: 17441 - timestamp: 1733240909987 + size: 17544 + timestamp: 1737517924333 - conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.12.1-h267a509_2.conda sha256: b2e3c449ec9d907dd4656cb0dc93e140f447175b125a3824b31368b06c666bb6 md5: 9ae35c3d96db2c94ce0cef86efdfa2cb @@ -2561,13 +2561,13 @@ packages: license_family: Apache size: 1178260 timestamp: 1736008642885 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-h9d9f30d_8_cpu.conda - build_number: 8 - sha256: f6c72ce82d145cb94a1131b68547b88056fb48158a382f9ce763286fce53ee65 - md5: 1c9caae53b14a385b59e87687adad2d6 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-19.0.0-hce2e470_3_cpu.conda + build_number: 3 + sha256: 3b85b78a52ce673798e3c880fa41b818554912e722e81ca20cf95ba9257f13f0 + md5: a50ba9a0789061ea395a47a23d6a7734 depends: - __glibc >=2.17,<3.0.a0 - - aws-crt-cpp >=0.29.8,<0.29.9.0a0 + - aws-crt-cpp >=0.29.9,<0.29.10.0a0 - aws-sdk-cpp >=1.11.458,<1.11.459.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-identity-cpp >=1.10.0,<1.10.1.0a0 @@ -2585,7 +2585,7 @@ packages: - libgoogle-cloud-storage >=2.33.0,<2.34.0a0 - libre2-11 >=2024.7.2 - libstdcxx >=13 - - libutf8proc >=2.9.0,<2.10.0a0 + - libutf8proc >=2.10.0,<2.11.0a0 - libzlib >=1.3.1,<2.0a0 - lz4-c >=1.10.0,<1.11.0a0 - orc >=2.0.3,<2.0.4.0a0 @@ -2599,15 +2599,14 @@ packages: arch: x86_64 platform: linux license: Apache-2.0 - license_family: APACHE - size: 8801586 - timestamp: 1736610546493 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-h47f80e1_8_cpu.conda - build_number: 8 - sha256: bf381dfa84e94ffce715c46352dd99f6f6ace69859b0efb822500f8882be429a - md5: daceef1881b4ddc72bb5b225a122c633 - depends: - - aws-crt-cpp >=0.29.8,<0.29.9.0a0 + size: 8899665 + timestamp: 1737343852413 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-h4065667_12_cpu.conda + build_number: 12 + sha256: 0ac8aab370ef7a21e912cc312e5cbfa59afea8e004f5a372f2f25f96de0c9e9a + md5: 4789bb7ae93fe12bfd81169157896f49 + depends: + - aws-crt-cpp >=0.29.9,<0.29.10.0a0 - aws-sdk-cpp >=1.11.458,<1.11.459.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-identity-cpp >=1.10.0,<1.10.1.0a0 @@ -2621,11 +2620,11 @@ packages: - libbrotlidec >=1.1.0,<1.2.0a0 - libbrotlienc >=1.1.0,<1.2.0a0 - libgcc >=13 - - libgoogle-cloud >=2.33.0,<2.34.0a0 - - libgoogle-cloud-storage >=2.33.0,<2.34.0a0 + - libgoogle-cloud >=2.34.0,<2.35.0a0 + - libgoogle-cloud-storage >=2.34.0,<2.35.0a0 - libre2-11 >=2024.7.2 - libstdcxx >=13 - - libutf8proc >=2.9.0,<2.10.0a0 + - libutf8proc >=2.10.0,<2.11.0a0 - libzlib >=1.3.1,<2.0a0 - lz4-c >=1.10.0,<1.11.0a0 - orc >=2.0.3,<2.0.4.0a0 @@ -2639,16 +2638,15 @@ packages: arch: aarch64 platform: linux license: Apache-2.0 - license_family: APACHE - size: 8045923 - timestamp: 1736611764958 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-hf3eb8e5_8_cpu.conda - build_number: 8 - sha256: 766e46b45520773db93ee1a91951cc135a85544bba738e7b378d31f16097753f - md5: fdc79871e6c243b819497337215416d9 + size: 8051570 + timestamp: 1737451538096 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-19.0.0-hd1aa4b5_4_cpu.conda + build_number: 4 + sha256: bf027b2e77b75b71b5213131fc4b06bbca6f1e195fde62090343e0a808d08bbe + md5: 94c2bcca143c043f8083a1f275de3caf depends: - __osx >=11.0 - - aws-crt-cpp >=0.29.8,<0.29.9.0a0 + - aws-crt-cpp >=0.29.9,<0.29.10.0a0 - aws-sdk-cpp >=1.11.458,<1.11.459.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-identity-cpp >=1.10.0,<1.10.1.0a0 @@ -2661,10 +2659,10 @@ packages: - libbrotlidec >=1.1.0,<1.2.0a0 - libbrotlienc >=1.1.0,<1.2.0a0 - libcxx >=18 - - libgoogle-cloud >=2.33.0,<2.34.0a0 - - libgoogle-cloud-storage >=2.33.0,<2.34.0a0 + - libgoogle-cloud >=2.34.0,<2.35.0a0 + - libgoogle-cloud-storage >=2.34.0,<2.35.0a0 - libre2-11 >=2024.7.2 - - libutf8proc >=2.9.0,<2.10.0a0 + - libutf8proc >=2.10.0,<2.11.0a0 - libzlib >=1.3.1,<2.0a0 - lz4-c >=1.10.0,<1.11.0a0 - orc >=2.0.3,<2.0.4.0a0 @@ -2672,165 +2670,155 @@ packages: - snappy >=1.2.1,<1.3.0a0 - zstd >=1.5.6,<1.6.0a0 constrains: - - arrow-cpp <0.0a0 - parquet-cpp <0.0a0 + - arrow-cpp <0.0a0 - apache-arrow-proc =*=cpu arch: arm64 platform: osx license: Apache-2.0 - license_family: APACHE - size: 5497383 - timestamp: 1736608604724 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-hcb10f89_8_cpu.conda - build_number: 8 - sha256: 126a6e78199311d99e38b9d633ce3e0290795ac68ce3ee8a9b91436c85c4095d - md5: 544759904898499f634f8f88a9907f88 + size: 5532664 + timestamp: 1737458545986 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-19.0.0-hcb10f89_3_cpu.conda + build_number: 3 + sha256: f4e4b14fc2aaaf0d0a16a3b4b4dcae84b1b77daa02754f0873901089ce786a49 + md5: 3e1e31382e9c6ecd0b24bd8f6ddb33ec depends: - __glibc >=2.17,<3.0.a0 - - libarrow 18.1.0 h9d9f30d_8_cpu + - libarrow 19.0.0 hce2e470_3_cpu - libgcc >=13 - libstdcxx >=13 arch: x86_64 platform: linux license: Apache-2.0 - license_family: APACHE - size: 611558 - timestamp: 1736610592458 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h3b568fd_8_cpu.conda - build_number: 8 - sha256: c94844ab1d8fafe17775161283bd1fe7ab1f93f660fc5ba0c01bd33fe3d21eaf - md5: 7a8e6a363d2f39a2f3df3f181d12692d + size: 618570 + timestamp: 1737343896206 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h3b568fd_12_cpu.conda + build_number: 12 + sha256: c93daa943342eb848e5a44d4f48749f96decbde7b0f7d830fe56d0d506c03576 + md5: 8ec3804980e19b70ebffbeb623ce084b depends: - - libarrow 18.1.0 h47f80e1_8_cpu + - libarrow 18.1.0 h4065667_12_cpu - libgcc >=13 - libstdcxx >=13 arch: aarch64 platform: linux license: Apache-2.0 - license_family: APACHE - size: 579798 - timestamp: 1736611846905 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-hf07054f_8_cpu.conda - build_number: 8 - sha256: 29196dc6b2e4488f98bd8950de6333efe5d1a9d0cc62e186694946766185475e - md5: 8db96829f8e427167f450c7467a1ba44 + size: 579114 + timestamp: 1737451608994 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-19.0.0-hf07054f_4_cpu.conda + build_number: 4 + sha256: 40de7e71d9fd4b799c452b3a0328ea260a3871de621f5344fb39b7f48371df75 + md5: e3265f8ab44051131966bd6f7b07a6e3 depends: - __osx >=11.0 - - libarrow 18.1.0 hf3eb8e5_8_cpu + - libarrow 19.0.0 hd1aa4b5_4_cpu - libcxx >=18 arch: arm64 platform: osx license: Apache-2.0 - license_family: APACHE - size: 484442 - timestamp: 1736608695654 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-hcb10f89_8_cpu.conda - build_number: 8 - sha256: fe50edf030b5ccbadec2bf8f90d4cdf32d63ec52ba26233fc2c8bfbe43df3b15 - md5: 894a5ed78728b77c997fefeee222ac4d + size: 481968 + timestamp: 1737458659266 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-19.0.0-hcb10f89_3_cpu.conda + build_number: 3 + sha256: c5cdf03d72d028e8af774aabd29cd92fb87f54cd579a9ffe77ad228c51faaa82 + md5: 1face9ff13ec61bfb065063d35fda864 depends: - __glibc >=2.17,<3.0.a0 - - libarrow 18.1.0 h9d9f30d_8_cpu - - libarrow-acero 18.1.0 hcb10f89_8_cpu + - libarrow 19.0.0 hce2e470_3_cpu + - libarrow-acero 19.0.0 hcb10f89_3_cpu - libgcc >=13 - - libparquet 18.1.0 h081d1f1_8_cpu + - libparquet 19.0.0 h081d1f1_3_cpu - libstdcxx >=13 arch: x86_64 platform: linux license: Apache-2.0 - license_family: APACHE - size: 588032 - timestamp: 1736610711976 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h3b568fd_8_cpu.conda - build_number: 8 - sha256: bb87d8e633074c9759d93abb277d31314dc66fad741253b48e8265e186228c5b - md5: 11856da892b919cc27bd62638d701c65 + size: 585153 + timestamp: 1737344009570 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h3b568fd_12_cpu.conda + build_number: 12 + sha256: 40bbdb394db6f405e6fae56bcbfc88fa433130668d2b39d1f109b7d6ffb8be76 + md5: e9b9a9941d35dff0a168741bdd54877e depends: - - libarrow 18.1.0 h47f80e1_8_cpu - - libarrow-acero 18.1.0 h3b568fd_8_cpu + - libarrow 18.1.0 h4065667_12_cpu + - libarrow-acero 18.1.0 h3b568fd_12_cpu - libgcc >=13 - - libparquet 18.1.0 hfc78867_8_cpu + - libparquet 18.1.0 hfc78867_12_cpu - libstdcxx >=13 arch: aarch64 platform: linux license: Apache-2.0 - license_family: APACHE - size: 560571 - timestamp: 1736611941995 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-hf07054f_8_cpu.conda - build_number: 8 - sha256: bff2d39e418eadab8c522a536449ac90f070dd8e83e2bd5e67a9c3eb8ecf712f - md5: 7b3736f49b3ba299b7799aeb448cb830 + size: 559928 + timestamp: 1737451706623 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-19.0.0-hf07054f_4_cpu.conda + build_number: 4 + sha256: c9b01193f3dc2855276a743aa2d107b3893d886dbc561944154acc4c61a9b4cb + md5: c6588e0236da980424ca0b288c893d1a depends: - __osx >=11.0 - - libarrow 18.1.0 hf3eb8e5_8_cpu - - libarrow-acero 18.1.0 hf07054f_8_cpu + - libarrow 19.0.0 hd1aa4b5_4_cpu + - libarrow-acero 19.0.0 hf07054f_4_cpu - libcxx >=18 - - libparquet 18.1.0 h636d7b7_8_cpu + - libparquet 19.0.0 h636d7b7_4_cpu arch: arm64 platform: osx license: Apache-2.0 - license_family: APACHE - size: 491001 - timestamp: 1736609758514 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-h08228c5_8_cpu.conda - build_number: 8 - sha256: dca372e27724904577315b8db3793e027a5c152a485e505e630a57b15634cd85 - md5: 46eaf81238da6f3ffab1f3ffdcee382e + size: 488490 + timestamp: 1737459936234 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-19.0.0-h08228c5_3_cpu.conda + build_number: 3 + sha256: 414297c69d08ba45af0fccb5e22cc3b3e92181f3928eba1e1b1ab3641970c7e0 + md5: 8527e1e45c495991fd88f6531e176556 depends: - __glibc >=2.17,<3.0.a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.1.0 h9d9f30d_8_cpu - - libarrow-acero 18.1.0 hcb10f89_8_cpu - - libarrow-dataset 18.1.0 hcb10f89_8_cpu + - libarrow 19.0.0 hce2e470_3_cpu + - libarrow-acero 19.0.0 hcb10f89_3_cpu + - libarrow-dataset 19.0.0 hcb10f89_3_cpu - libgcc >=13 - libprotobuf >=5.28.3,<5.28.4.0a0 - libstdcxx >=13 arch: x86_64 platform: linux license: Apache-2.0 - license_family: APACHE - size: 521707 - timestamp: 1736610765240 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h1e9d426_8_cpu.conda - build_number: 8 - sha256: 1896ea00da28e10670f7ba51bb543e68a87f717e9f5692fee44268f1a13d9eee - md5: e7dc0209e065a2b51f19848cefa4b1ab + size: 521371 + timestamp: 1737344062052 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h1e9d426_12_cpu.conda + build_number: 12 + sha256: 6216a1c48e41d3b304e87b19a8ff37c10e51ceca83bff5e942d763c93f6f55a1 + md5: f647dcbf46aebc86f9975ff3c856de45 depends: - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.1.0 h47f80e1_8_cpu - - libarrow-acero 18.1.0 h3b568fd_8_cpu - - libarrow-dataset 18.1.0 h3b568fd_8_cpu + - libarrow 18.1.0 h4065667_12_cpu + - libarrow-acero 18.1.0 h3b568fd_12_cpu + - libarrow-dataset 18.1.0 h3b568fd_12_cpu - libgcc >=13 - libprotobuf >=5.28.3,<5.28.4.0a0 - libstdcxx >=13 arch: aarch64 platform: linux license: Apache-2.0 - license_family: APACHE - size: 517189 - timestamp: 1736611989417 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-h4239455_8_cpu.conda - build_number: 8 - sha256: ae52d926ebfc8edb0728824f2918a825d39bd85a4ef27fe2b73656cfecdd7c69 - md5: f67eb19d22ba355cced8c86073ad49b1 + size: 516135 + timestamp: 1737451754178 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-19.0.0-h4239455_4_cpu.conda + build_number: 4 + sha256: 1de1100bddcaa4aacae5cc30e3c0ae3259d130bee7b3d52a57a1c9950e0c6588 + md5: 6988cd2fdf01cae4bc454859a7cf8bac depends: - __osx >=11.0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.1.0 hf3eb8e5_8_cpu - - libarrow-acero 18.1.0 hf07054f_8_cpu - - libarrow-dataset 18.1.0 hf07054f_8_cpu + - libarrow 19.0.0 hd1aa4b5_4_cpu + - libarrow-acero 19.0.0 hf07054f_4_cpu + - libarrow-dataset 19.0.0 hf07054f_4_cpu - libcxx >=18 - libprotobuf >=5.28.3,<5.28.4.0a0 arch: arm64 platform: osx license: Apache-2.0 - license_family: APACHE - size: 452161 - timestamp: 1736609917123 + size: 449975 + timestamp: 1737460148737 - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-26_linux64_openblas.conda build_number: 26 sha256: 30bd658682b124243f8e52d8edf8a19e7be1bc31e4fe4baec30a64002dc8cd0c @@ -3518,9 +3506,9 @@ packages: license_family: Apache size: 1254656 timestamp: 1735648569457 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-2.33.0-hccf9d24_1.conda - sha256: d3d4def86d880431928799ba90ca97e57c2f05677c03af8de2337502926c492c - md5: a2724014eb04f14bd71d35f45b062dd0 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-2.34.0-hccf9d24_0.conda + sha256: 54267dda8fafc2a2d379ef77b6029d8240e0628d4b29758f788fb903f84397a3 + md5: 1ce0fd876001c40801b40fea22987e41 depends: - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 @@ -3531,16 +3519,16 @@ packages: - libstdcxx >=13 - openssl >=3.4.0,<4.0a0 constrains: - - libgoogle-cloud 2.33.0 *_1 + - libgoogle-cloud 2.34.0 *_0 arch: aarch64 platform: linux license: Apache-2.0 license_family: Apache - size: 1253019 - timestamp: 1735649566849 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-2.33.0-hdbe95d5_1.conda - sha256: ce95aca02451694a4154c7770b6addf4fb859abf17912de6ec947da8469a56ce - md5: 91de1fbab8610974c0094c266bc63435 + size: 1256586 + timestamp: 1737285242684 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-2.34.0-hdbe95d5_0.conda + sha256: 919d8cbcd47d5bd2244c55b2bb87e2bd2eed8215996aab8435cb7123ffd9d20e + md5: 69826544e7978fcaa6bc8c1962d96ad6 depends: - __osx >=11.0 - libabseil * cxx17* @@ -3551,13 +3539,13 @@ packages: - libprotobuf >=5.28.3,<5.28.4.0a0 - openssl >=3.4.0,<4.0a0 constrains: - - libgoogle-cloud 2.33.0 *_1 + - libgoogle-cloud 2.34.0 *_0 arch: arm64 platform: osx license: Apache-2.0 license_family: Apache - size: 877594 - timestamp: 1735648230965 + size: 878217 + timestamp: 1737284441192 - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.33.0-h0121fbd_1.conda sha256: 41022523320ca8633a6c615710823e596efadb50f06d724e1a0c81e27994f257 md5: b0cfb5044685a7a9fa43ae669124f0a0 @@ -3577,15 +3565,15 @@ packages: license_family: Apache size: 784357 timestamp: 1735648759177 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-storage-2.33.0-hb9b2b65_1.conda - sha256: 5eda1cbba68709b91b370b3792c9cfd7bec4ac4e2262f0887d12e1f000ae1191 - md5: 45df2267ff4d8ce532e8d300ce0b0829 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-storage-2.34.0-hb9b2b65_0.conda + sha256: 4ad4fb7c02dcfa4c86dcf9591e0131a01fc0f2c3f2729c12882b944ddf2b8a9d + md5: 0732a5988f7f556f2c1d1f51026fc1be depends: - libabseil - libcrc32c >=1.1.2,<1.2.0a0 - libcurl - libgcc >=13 - - libgoogle-cloud 2.33.0 hccf9d24_1 + - libgoogle-cloud 2.34.0 hccf9d24_0 - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - openssl @@ -3593,26 +3581,26 @@ packages: platform: linux license: Apache-2.0 license_family: Apache - size: 737518 - timestamp: 1735649773462 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-storage-2.33.0-h7081f7f_1.conda - sha256: c0524a22064bc17f5c037da09ba54cc9e767741ef645178e499750c44bec2531 - md5: af8e51382464d4cc2d0054977c40a732 + size: 739678 + timestamp: 1737285399565 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-storage-2.34.0-h7081f7f_0.conda + sha256: 79f6b93fb330728530036b2b38764e9d42e0eedd3ae7e549ac7eae49acd1e52b + md5: f09cb03f9cf847f1dc41b4c1f65c97c2 depends: - __osx >=11.0 - libabseil - libcrc32c >=1.1.2,<1.2.0a0 - libcurl - libcxx >=18 - - libgoogle-cloud 2.33.0 hdbe95d5_1 + - libgoogle-cloud 2.34.0 hdbe95d5_0 - libzlib >=1.3.1,<2.0a0 - openssl arch: arm64 platform: osx license: Apache-2.0 license_family: Apache - size: 526963 - timestamp: 1735649222088 + size: 529202 + timestamp: 1737285376801 - conda: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.67.1-h25350d4_1.conda sha256: 014627485b3cf0ea18e04c0bab07be7fb98722a3aeeb58477acc7e1c3d2f911e md5: 0c6497a760b99a926c7c12b74951a39c @@ -3942,13 +3930,13 @@ packages: license_family: BSD size: 4165774 timestamp: 1730772154295 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-h081d1f1_8_cpu.conda - build_number: 8 - sha256: 2c6d900d4e9dd3c4000886d76d3f8a099e904667ebc6935b49428e6e9b766481 - md5: a9fa0ef309406c84b46db3a28efd761e +- conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-19.0.0-h081d1f1_3_cpu.conda + build_number: 3 + sha256: 287c4864b849180ce9e447df8227da2c4006001056e1668dacc3365264b0e828 + md5: 95f8b5758148e62a055f4c6538a31f0b depends: - __glibc >=2.17,<3.0.a0 - - libarrow 18.1.0 h9d9f30d_8_cpu + - libarrow 19.0.0 hce2e470_3_cpu - libgcc >=13 - libstdcxx >=13 - libthrift >=0.21.0,<0.21.1.0a0 @@ -3956,15 +3944,14 @@ packages: arch: x86_64 platform: linux license: Apache-2.0 - license_family: APACHE - size: 1207011 - timestamp: 1736610684584 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-hfc78867_8_cpu.conda - build_number: 8 - sha256: 2ed6b9eac4504051ddc094ea3f3a2b3198d4d25a443a96fa2971d8075d790c31 - md5: 9a907190c9e2c6bf1a29569700218f0b + size: 1227537 + timestamp: 1737343982323 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-hfc78867_12_cpu.conda + build_number: 12 + sha256: 224da9fb417e1dc569700cddf6dd7febe9a6e5c12547a389a5b934b8d385c4f8 + md5: 517447be85cda09f9410ca609c69499d depends: - - libarrow 18.1.0 h47f80e1_8_cpu + - libarrow 18.1.0 h4065667_12_cpu - libgcc >=13 - libstdcxx >=13 - libthrift >=0.21.0,<0.21.1.0a0 @@ -3972,25 +3959,23 @@ packages: arch: aarch64 platform: linux license: Apache-2.0 - license_family: APACHE - size: 1117465 - timestamp: 1736611918180 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-h636d7b7_8_cpu.conda - build_number: 8 - sha256: 4991519ef4264abc7160e9faaf8ff01d4731bf1497076bef1895d6c366f796eb - md5: b8bd275a49877fdec62ff787818a869d + size: 1116762 + timestamp: 1737451682325 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-19.0.0-h636d7b7_4_cpu.conda + build_number: 4 + sha256: d394423b8a096cec5481ef4cdb4d39dd4b89949cd6f23bdc14896d8af36d78f3 + md5: 639473b0344e0d2f46feb544cff5c6d8 depends: - __osx >=11.0 - - libarrow 18.1.0 hf3eb8e5_8_cpu + - libarrow 19.0.0 hd1aa4b5_4_cpu - libcxx >=18 - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 arch: arm64 platform: osx license: Apache-2.0 - license_family: APACHE - size: 873593 - timestamp: 1736609701839 + size: 885681 + timestamp: 1737459816091 - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.45-h943b412_0.conda sha256: b8f5b5ba9a14dedf7c97c01300de492b1b52b68eacbc3249a13fdbfa82349a2f md5: 85cbdaacad93808395ac295b5667d25b @@ -4150,9 +4135,9 @@ packages: license: ISC size: 164972 timestamp: 1716828607917 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.48.0-hee588c1_0.conda - sha256: 7bb84f44e1bd756da4a3d0d43308324a5533e6ba9f4772475884bce44d405064 - md5: 84bd1c9a82b455e7a2f390375fb38f90 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.48.0-hee588c1_1.conda + sha256: 22853d289ef6ec8a5b20f1aa261895b06525439990d3b139f8bfd0b5c5e32a3a + md5: 3fa05c528d8a1e2a67bbf1e36f22d3bc depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -4160,30 +4145,30 @@ packages: arch: x86_64 platform: linux license: Unlicense - size: 876582 - timestamp: 1737123945341 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.48.0-h5eb1b54_0.conda - sha256: b4365ab7c74a2e6c0444eb950367fa3ca56a87c9921b2faa5ad032fe7a7df682 - md5: 1998946fa3ccf38a07b44a879b2227ae + size: 878223 + timestamp: 1737564987837 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.48.0-h5eb1b54_1.conda + sha256: 81dd9bf66c7f1d9064e007e2c787133100c406e7ca2de61dba9fb7b87372f255 + md5: 4f3a61fe206f20b27c385ee608bcdfda depends: - libgcc >=13 - libzlib >=1.3.1,<2.0a0 arch: aarch64 platform: linux license: Unlicense - size: 1044953 - timestamp: 1737123983895 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.48.0-h3f77e49_0.conda - sha256: b31169cf0ca7b6835baca4ab92d6cf2eee83b1a12a11b72f39521e8baf4d6acb - md5: 714719df4f49e30f9728956f240846ca + size: 1044879 + timestamp: 1737565049785 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.48.0-h3f77e49_1.conda + sha256: 17c06940cc2a13fd6a17effabd6881b1477db38b2cd3ee2571092d293d3fdd75 + md5: 4c55169502ecddf8077973a987d08f08 depends: - __osx >=11.0 - libzlib >=1.3.1,<2.0a0 arch: arm64 platform: osx license: Unlicense - size: 853163 - timestamp: 1737124192432 + size: 852831 + timestamp: 1737564996616 - conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hf672d98_0.conda sha256: 0407ac9fda2bb67e11e357066eff144c845801d00b5f664efbc48813af1e7bb9 md5: be2de152d8073ef1c01b7728475f2fe7 @@ -4368,9 +4353,9 @@ packages: license: HPND size: 370600 timestamp: 1734398863052 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.9.0-hb9d3cd8_1.conda - sha256: 9794e6388e780c3310d46f773bbc924d4053375c3fcdb07a704b57f4616db928 - md5: 1e936bd23d737aac62a18e9a1e7f8b18 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.10.0-h4c51ac1_0.conda + sha256: 8e41563ee963bf8ded06da45f4e70bf42f913cb3c2e79364eb3218deffa3cd74 + md5: aeccfff2806ae38430638ffbb4be9610 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -4378,30 +4363,30 @@ packages: platform: linux license: MIT license_family: MIT - size: 81500 - timestamp: 1732868419835 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.9.0-h86ecc28_1.conda - sha256: 37a1833c55f9945724cd4b3eb6a1469032cc754a1dd725f191c34154ad2ba7e4 - md5: 699f155da290be3a1a64c932c6728991 + size: 82745 + timestamp: 1737244366901 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.10.0-ha346350_0.conda + sha256: 9c333e07b76ae1ea2c882db764be52dc82f632be66d993a50b35ca9c5475074a + md5: c5166bcfb8348e8fc31ee16ec3981a5e depends: - libgcc >=13 arch: aarch64 platform: linux license: MIT license_family: MIT - size: 81526 - timestamp: 1732868466862 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.9.0-h5505292_1.conda - sha256: ea88f06e97ef8fa2490f7594f8885bb542577226edf8abba3144302d951a53c2 - md5: f777470d31c78cd0abe1903a2fda436f + size: 82679 + timestamp: 1737329054400 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.10.0-hda25de7_0.conda + sha256: aca3ef31d3dff5cefd3790742a5ee6548f1cf0201d0e8cee08b01da503484eb6 + md5: 5f741aed1d8d393586a5fdcaaa87f45c depends: - __osx >=11.0 arch: arm64 platform: osx license: MIT license_family: MIT - size: 83000 - timestamp: 1732868631531 + size: 83628 + timestamp: 1737244450097 - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda sha256: 787eb542f055a2b3de553614b25f09eefb0a0931b0c87dbcce6efdfd92f04f18 md5: 40b61aab5c7ba9ff276c41cfffe6b80b @@ -4764,47 +4749,47 @@ packages: license_family: BSD size: 24048 timestamp: 1733219945697 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025011705-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025012205-release.conda noarch: python - sha256: 15578c7bc78001d3882c3b9af9d7d8bf3566c68ae133870038be055c8dfd90e9 - md5: 7e6c35d82044e8d31e9327e7d90bfb2b + sha256: 63e2ce51c01fdb5a73f62ea5f862acea5946f45d6b6bd63dafc78d242822e1b7 + md5: 5289b5be19bf0f500e1a06f44d816343 depends: - - max-core ==25.1.0.dev2025011705 release - - max-python >=25.1.0.dev2025011705,<26.0a0 - - mojo-jupyter ==25.1.0.dev2025011705 release - - mblack ==25.1.0.dev2025011705 release + - max-core ==25.1.0.dev2025012205 release + - max-python >=25.1.0.dev2025012205,<26.0a0 + - mojo-jupyter ==25.1.0.dev2025012205 release + - mblack ==25.1.0.dev2025012205 release license: LicenseRef-Modular-Proprietary - size: 9920 - timestamp: 1737091778690 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025011705-release.conda - sha256: 3e39d779710559206129052c64ac530b9d262288f75812ba07c3e3e395a0e18e - md5: 5575de33b0503143e635ade746f057c3 + size: 9919 + timestamp: 1737524122346 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025012205-release.conda + sha256: 061e7c8aba735fd2d15aca623c2f81452723bc0a5ab1e5a63af1761a9eaba9ef + md5: 2d8a82ff460cd4e03382a9151a8cf8d8 depends: - - mblack ==25.1.0.dev2025011705 release + - mblack ==25.1.0.dev2025012205 release license: LicenseRef-Modular-Proprietary - size: 244764907 - timestamp: 1737091186388 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025011705-release.conda - sha256: a9e7747e7cb7ff01dc58f4c7f5772d2b4483693dd200c88653b1ec2dda46bc8b - md5: a9b13b577fb1bcc14b330f5a4185023c + size: 242139658 + timestamp: 1737523134733 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025012205-release.conda + sha256: eade442118da29d8b42289e6859699b4faafcf51d02189729259a2e7a97a0dcc + md5: 8e0412932905d3a4decf17acd50899ce depends: - - mblack ==25.1.0.dev2025011705 release + - mblack ==25.1.0.dev2025012205 release license: LicenseRef-Modular-Proprietary - size: 247240781 - timestamp: 1737091778688 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025011705-release.conda - sha256: 9369b738945ef783af1e4caf2676bd6a299ff86e4ef9504e7a5ee69841fffa01 - md5: c4397350b325ae5a0e07f61e483fc3e5 + size: 244683388 + timestamp: 1737524122344 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025012205-release.conda + sha256: b5ccec88293901182a43d7f407d04b522b729cefaab066788496adec5bd3f2d2 + md5: bd5da5f25bd5151b4b691c34acdbeff0 depends: - - mblack ==25.1.0.dev2025011705 release + - mblack ==25.1.0.dev2025012205 release license: LicenseRef-Modular-Proprietary - size: 206615275 - timestamp: 1737092643231 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025011705-3.12release.conda - sha256: bdda011f73105d5d91e29abdacc4e7304501249c3bb50e83517661cdea4ef56a - md5: 0ddfaa3caa3647a0cbcdf394774ee6be + size: 203820478 + timestamp: 1737523349069 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025012205-3.12release.conda + sha256: ceb4d33afe634401be386903e2f516b78f2b5e23e15cbedad42cce2600c97b7d + md5: ecfacd66a5b71794c53a468fbefcef6a depends: - - max-core ==25.1.0.dev2025011705 release + - max-core ==25.1.0.dev2025012205 release - python 3.12.* - fastapi - httpx @@ -4825,13 +4810,13 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 124617960 - timestamp: 1737091186397 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025011705-3.12release.conda - sha256: 3ec1d98731b5c86829e7dd0d76b3ad820173a418f58833ea0237e34d356b58c6 - md5: 0ed0380d3ee48a36fe43f85f61fd9fe3 + size: 119861319 + timestamp: 1737523134743 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025012205-3.12release.conda + sha256: 14ae6f16ce6c895de574bb02307cd58e87e32013bde0d905d6a1a67e686ca204 + md5: fb06394177c69b52c2ecf9ceaa7b308b depends: - - max-core ==25.1.0.dev2025011705 release + - max-core ==25.1.0.dev2025012205 release - python 3.12.* - fastapi - httpx @@ -4852,13 +4837,13 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 127367910 - timestamp: 1737091778698 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025011705-3.12release.conda - sha256: 853e12e0ac11f3dcf5392e94cc927233ba940a71a5cf73c0cec54ad4917256c0 - md5: 53e9620bd08e983c5e52e02afef0a990 + size: 122258493 + timestamp: 1737524122355 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025012205-3.12release.conda + sha256: 35e34095931d604893d014773f8c61c1c09a9888946dec4a01f1db827bd2f439 + md5: 589be4ace2edf68cfc3cf1d0cc429864 depends: - - max-core ==25.1.0.dev2025011705 release + - max-core ==25.1.0.dev2025012205 release - python 3.12.* - fastapi - httpx @@ -4879,12 +4864,12 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 110545057 - timestamp: 1737092643234 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025011705-release.conda + size: 105223218 + timestamp: 1737523349072 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012205-release.conda noarch: python - sha256: 180bbe7d8b76c5d0f453b72f81fae10522b7a98a31e6fbeff542dbb31bb9b613 - md5: 680622d3117019e99ddc173efab357c7 + sha256: 31bce03569c241ade0a344f1fe1a683f928fe367ae57147b3e316783631822fe + md5: c54b5f7d0d777b8995e38978d8626ffc depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -4894,8 +4879,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130807 - timestamp: 1737091778695 + size: 130797 + timestamp: 1737524122352 - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda sha256: 78c1bbe1723449c52b7a9df1af2ee5f005209f67e40b6e1d3c7619127c43b1c7 md5: 592132998493b3ff25fd7479396e8351 @@ -4905,18 +4890,18 @@ packages: license_family: MIT size: 14465 timestamp: 1733255681319 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025011705-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025012205-release.conda noarch: python - sha256: eab543a5c31c091b3d042980d068a950c51905d14a18532710f9be94ba88ba5d - md5: eea061b963a95002a8740d4b4f506d44 + sha256: 78e2818c9d17321c5fe73f9dca3d7a9c51ad989c00f8ea9721deb94a4f03800e + md5: ca3c9282adb4a04dbd02f3ab8e73445c depends: - - max-core ==25.1.0.dev2025011705 release + - max-core ==25.1.0.dev2025012205 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22929 - timestamp: 1737091778696 + size: 22925 + timestamp: 1737524122353 - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py312h178313f_2.conda sha256: b05bc8252a6e957bf4a776ed5e0e61d1ba88cdc46ccb55890c72cc58b10371f4 md5: 5b5e3267d915a107eca793d52e1b780a @@ -5636,23 +5621,23 @@ packages: license_family: MIT size: 8381 timestamp: 1726802424786 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-18.1.0-py312h7900ff3_0.conda - sha256: 46a61c29375d3bf1933eae61c7861394c168898915d59fc99bf05e46de2ff5ad - md5: ac65b70df28687c6af4270923c020bdd - depends: - - libarrow-acero 18.1.0.* - - libarrow-dataset 18.1.0.* - - libarrow-substrait 18.1.0.* - - libparquet 18.1.0.* - - pyarrow-core 18.1.0 *_0_* +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-19.0.0-py312h7900ff3_0.conda + sha256: 7d98e626ec65b882341482ad15ecb7a670ee41dbaf375aa660ba8b7d0a940504 + md5: 14f86e63b5c214dd9fb34e5472d4bafc + depends: + - libarrow-acero 19.0.0.* + - libarrow-dataset 19.0.0.* + - libarrow-substrait 19.0.0.* + - libparquet 19.0.0.* + - pyarrow-core 19.0.0 *_0_* - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 arch: x86_64 platform: linux license: Apache-2.0 license_family: APACHE - size: 25213 - timestamp: 1732610785600 + size: 25289 + timestamp: 1737128438818 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-18.1.0-py312h8025657_0.conda sha256: 49db959887cb89b44053a44a98d0f35644fc0b2003587492f02b56046de0b60a md5: 9bb7d32e96a5dcb5ea7fd90a11a83656 @@ -5670,43 +5655,43 @@ packages: license_family: APACHE size: 25374 timestamp: 1732611006864 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-18.1.0-py312h1f38498_0.conda - sha256: 06c0e208d5bf15051874097366c8e8e5db176dffba38526f227a34e80cc8e9bc - md5: 3710616b880b31d0c8afd8ae7e12392a - depends: - - libarrow-acero 18.1.0.* - - libarrow-dataset 18.1.0.* - - libarrow-substrait 18.1.0.* - - libparquet 18.1.0.* - - pyarrow-core 18.1.0 *_0_* +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-19.0.0-py312h1f38498_0.conda + sha256: 9d693901833c2ff4e5d67e1f2f6df50f699e1cec2f580c26d42299654830855a + md5: bd5e025292ff1127aa1534b59e55c4d0 + depends: + - libarrow-acero 19.0.0.* + - libarrow-dataset 19.0.0.* + - libarrow-substrait 19.0.0.* + - libparquet 19.0.0.* + - pyarrow-core 19.0.0 *_0_* - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 arch: arm64 platform: osx license: Apache-2.0 license_family: APACHE - size: 25375 - timestamp: 1732610892198 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-18.1.0-py312h01725c0_0_cpu.conda - sha256: 948a4161c56f846d374a3721a657e58ddbc992a29b3b3e7a6411975c30361d94 - md5: ee80934a6c280ff8635f8db5dec11e04 + size: 25428 + timestamp: 1737128284082 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-19.0.0-py312h01725c0_0_cpu.conda + sha256: 81178d0de0ac851a0a78e09c81ad92274cf770a38b28acdf53a0cfb2122d15aa + md5: 7ab1143b9ac1af5cc4a630706f643627 depends: - __glibc >=2.17,<3.0.a0 - - libarrow 18.1.0.* *cpu + - libarrow 19.0.0.* *cpu - libgcc >=13 - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 constrains: - - numpy >=1.21,<3 - apache-arrow-proc =*=cpu + - numpy >=1.21,<3 arch: x86_64 platform: linux license: Apache-2.0 license_family: APACHE - size: 4612916 - timestamp: 1732610377259 + size: 5230953 + timestamp: 1737128097002 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-18.1.0-py312h66f7834_0_cpu.conda sha256: e7eb062145be554c23dfefa0ebe8c5f6ae8c59635117a6921e66403d6addcda3 md5: 3390c8b8f57e85506c92a37cf750bdd7 @@ -5727,26 +5712,26 @@ packages: license_family: APACHE size: 4406662 timestamp: 1732610939832 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-18.1.0-py312hc40f475_0_cpu.conda - sha256: 063eb168a29d4ce6d9ed865e9e1ad3b6e141712189955a79e06b24ddc0cbbc9c - md5: 9859e7c4b94bbf69772dbf0511101cec +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-19.0.0-py312hc40f475_0_cpu.conda + sha256: 6303fe1c3e6d36273b72f0eeb3f19897d2376d57fe8c757f55dcbfbaa5cd6840 + md5: df502157843a7b1d90af04803767be15 depends: - __osx >=11.0 - - libarrow 18.1.0.* *cpu + - libarrow 19.0.0.* *cpu - libcxx >=18 - libzlib >=1.3.1,<2.0a0 - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 constrains: - - numpy >=1.21,<3 - apache-arrow-proc =*=cpu + - numpy >=1.21,<3 arch: arm64 platform: osx license: Apache-2.0 license_family: APACHE - size: 3909116 - timestamp: 1732610863261 + size: 4393075 + timestamp: 1737128225546 - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda sha256: 79db7928d13fab2d892592223d7570f5061c192f27b9febd1a418427b719acc6 md5: 12c566707c80111f9799308d9e265aef @@ -6011,15 +5996,14 @@ packages: license_family: Apache size: 27913 timestamp: 1734420869885 -- conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_1.conda - sha256: 57c9a02ec25926fb48edca59b9ede107823e5d5c473b94a0e05cc0b9a193a642 - md5: c0def296b2f6d2dd7b030c2a7f66bb1f +- conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.1-pyhd8ed1ab_0.conda + sha256: 1597d6055d34e709ab8915091973552a0b8764c8032ede07c4e99670da029629 + md5: 392c91c42edd569a7ec99ed8648f597a depends: - python >=3.9 license: Apache-2.0 - license_family: APACHE - size: 142235 - timestamp: 1733235414217 + size: 143794 + timestamp: 1737541204030 - conda: https://conda.anaconda.org/conda-forge/linux-64/python-xxhash-3.5.0-py312h66e93f0_1.conda sha256: 20851b1e59fee127d49e01fc73195a88ab0779f103b7d6ffc90d11142a83678f md5: 39aed2afe4d0cf76ab3d6b09eecdbea7 @@ -6109,9 +6093,9 @@ packages: license_family: MIT size: 188538 timestamp: 1706886944988 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py312h66e93f0_1.conda - sha256: a60705971e958724168f2ebbb8ed4853067f1d3f7059843df3903e3092bbcffa - md5: 549e5930e768548a89c23f595dac5a95 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py312h178313f_2.conda + sha256: 159cba13a93b3fe084a1eb9bda0a07afc9148147647f0d437c3c3da60980503b + md5: cf2485f39740de96e2a7f2bb18ed2fee depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -6122,11 +6106,11 @@ packages: platform: linux license: MIT license_family: MIT - size: 206553 - timestamp: 1725456256213 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyyaml-6.0.2-py312hb2c0f52_1.conda - sha256: 8c515ebe1e7e85d972d72b75760af9dfac06fd11a9dba7e05c42d69aedbb303c - md5: dc5de424f7dbb9772da720dbb81317b2 + size: 206903 + timestamp: 1737454910324 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyyaml-6.0.2-py312hcc812fe_2.conda + sha256: dc78e41d51300722ba35ac4a10d37339ceffbe22d7501c71dfd3f633a4f8e79a + md5: 4de4a5ff81c941674e08595244e7cd61 depends: - libgcc >=13 - python >=3.12,<3.13.0a0 @@ -6137,11 +6121,11 @@ packages: platform: linux license: MIT license_family: MIT - size: 199141 - timestamp: 1725456356043 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py312h024a12e_1.conda - sha256: b06f1c15fb39695bbf707ae8fb554b9a77519af577b5556784534c7db10b52e3 - md5: 1ee23620cf46cb15900f70a1300bae55 + size: 199172 + timestamp: 1737454840766 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py312h998013c_2.conda + sha256: ad225ad24bfd60f7719709791345042c3cb32da1692e62bd463b084cf140e00d + md5: 68149ed4d4e9e1c42d2ba1f27f08ca96 depends: - __osx >=11.0 - python >=3.12,<3.13.0a0 @@ -6152,8 +6136,8 @@ packages: platform: osx license: MIT license_family: MIT - size: 187143 - timestamp: 1725456547263 + size: 192148 + timestamp: 1737454886351 - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.0-py312hbf22597_3.conda sha256: bc303f9b11e04a515f79cd5ad3bfa0e84b9dfec76552626d6263b38789fe6678 md5: 746ce19f0829ec3e19c93007b1a224d3 @@ -6354,9 +6338,9 @@ packages: license_family: MIT size: 17357 timestamp: 1733750834072 -- conda: https://conda.anaconda.org/conda-forge/linux-64/s2n-1.5.10-hb5b8611_0.conda - sha256: f6d451821fddc26b93f45e9313e1ea15e09e5ef049d4e137413a5225d2a5dfba - md5: 999f3673f2a011f59287f2969e3749e4 +- conda: https://conda.anaconda.org/conda-forge/linux-64/s2n-1.5.11-h072c03f_0.conda + sha256: cfdd98c8f9a1e5b6f9abce5dac6d590cc9fe541a08466c9e4a26f90e00b569e3 + md5: 5e8060d52f676a40edef0006a75c718f depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -6365,11 +6349,11 @@ packages: platform: linux license: Apache-2.0 license_family: Apache - size: 355142 - timestamp: 1734415467047 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/s2n-1.5.10-h5df210e_0.conda - sha256: b5e7a9f4b7b1ec5c5c3661e2defc8b47fab543b05cad6fec78739d8007612464 - md5: 3d3979efcc0f44f3f0cef3de03b296cc + size: 356213 + timestamp: 1737146304079 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/s2n-1.5.11-h3caee7a_0.conda + sha256: 5a7ae66f96be24c3b2007139b6c3701ab015b4b4eb4eccfdd07be97710243a47 + md5: 1517c0518f8a06a48a15f41d94252874 depends: - libgcc >=13 - openssl >=3.4.0,<4.0a0 @@ -6377,8 +6361,8 @@ packages: platform: linux license: Apache-2.0 license_family: Apache - size: 353450 - timestamp: 1734415474615 + size: 352811 + timestamp: 1737146319512 - conda: https://conda.anaconda.org/conda-forge/linux-64/safetensors-0.5.2-py312h12e396e_0.conda sha256: 98b8dfa5eec083e0b3ace00906a7f7e748b1e2446dca17e87473f43278fcc036 md5: 999ca9d87d2bb8b4c01e62c755b928cf @@ -6663,9 +6647,9 @@ packages: license_family: BSD size: 110051 timestamp: 1733367480074 -- conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.48.0-pyhd8ed1ab_0.conda - sha256: c8dd6d69e4ef67c7d507dec2be4b6964f6ddbe1ce35a822ddf4089505d702f33 - md5: 2c57d4af7b8952484962b40a59cf1537 +- conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.48.1-pyhd8ed1ab_0.conda + sha256: 92fc16e2449fc81f516d31630fd18c3f33b95bc0c069655a3c0042fbd11a09a4 + md5: 08f62b2c92d1fa610896fc7b16b05031 depends: - datasets !=2.5.0 - filelock @@ -6681,8 +6665,8 @@ packages: - tqdm >=4.27 license: Apache-2.0 license_family: APACHE - size: 3408277 - timestamp: 1736534112195 + size: 3405362 + timestamp: 1737429408302 - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda sha256: ef695490e895c2ad552c77ec497b899b09fd4ad4ab07edcf5649f5994cf92a35 md5: 170a0398946d8f5b454e592672b6fc20 @@ -6879,9 +6863,9 @@ packages: license_family: MIT size: 363822 timestamp: 1736550859472 -- conda: https://conda.anaconda.org/conda-forge/linux-64/websockets-14.1-py312h66e93f0_0.conda - sha256: 5998940f91765ba991cf286c863c20bcb53db92bb976a2b5a714566b86b0e763 - md5: a79f7ce618bd0a9f4c00c59a03570fcd +- conda: https://conda.anaconda.org/conda-forge/linux-64/websockets-14.2-py312h66e93f0_0.conda + sha256: 52092f1f811fddcbb63e4e8e1c726f32a0a1ea14c36b70982fc2021a3c010e48 + md5: 279166352304d5d4b63429e9c86fa3dc depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -6891,11 +6875,11 @@ packages: platform: linux license: BSD-3-Clause license_family: BSD - size: 242145 - timestamp: 1731498716195 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/websockets-14.1-py312hb2c0f52_0.conda - sha256: c292a8badcbe4040537e225fbeb237bfaf272808eab060067d965d3da98ccd5c - md5: 7e2a0ef2a1a87f88f9745f9c7059186e + size: 242949 + timestamp: 1737358315063 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/websockets-14.2-py312hb2c0f52_0.conda + sha256: 5b8273df10b85a667b4fe71788a12c33a9626723650e28f582fd56c87bad0471 + md5: d7535d5d2f8d49d625071f305d6112a1 depends: - libgcc >=13 - python >=3.12,<3.13.0a0 @@ -6905,11 +6889,11 @@ packages: platform: linux license: BSD-3-Clause license_family: BSD - size: 242912 - timestamp: 1731498811466 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/websockets-14.1-py312hea69d52_0.conda - sha256: 98fb04a1a0f53dc604378f94b5795d0b8e462fee01bf0a887cb34d0efdf5d21f - md5: 89b79a9baa7db46ce21f5738a5a3dfda + size: 244675 + timestamp: 1737358397158 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/websockets-14.2-py312hea69d52_0.conda + sha256: e5ad8c983a1669d06a6648990c0491d5469143f02003c8fd2ae7d066d7d4b086 + md5: 8757561d3ea10ba178fb7fb888f33e3a depends: - __osx >=11.0 - python >=3.12,<3.13.0a0 @@ -6919,8 +6903,8 @@ packages: platform: osx license: BSD-3-Clause license_family: BSD - size: 243131 - timestamp: 1731498944076 + size: 246269 + timestamp: 1737358485546 - conda: https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.17.2-py312h66e93f0_0.conda sha256: ed3a1700ecc5d38c7e7dc7d2802df1bc1da6ba3d6f6017448b8ded0affb4ae00 md5: 669e63af87710f8d52fdec9d4d63b404 @@ -7093,9 +7077,9 @@ packages: license_family: MIT size: 88016 timestamp: 1641347076660 -- conda: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.18.3-py312h66e93f0_0.conda - sha256: a0d93c3bef723e384cff8a29a82a2c6b7a73b39328088f3a2d97c901f56e9a63 - md5: 91df2efaa08730416bec2a4502309275 +- conda: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.18.3-py312h178313f_1.conda + sha256: 6b054c93dd19fd7544af51b41a8eacca2ab62271f6c0c5a2a0cffe80dc37a0ce + md5: 6822c49f294d4355f19d314b8b6063d8 depends: - __glibc >=2.17,<3.0.a0 - idna >=2.0 @@ -7108,11 +7092,11 @@ packages: platform: linux license: Apache-2.0 license_family: Apache - size: 151393 - timestamp: 1733428897813 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.18.3-py312hb2c0f52_0.conda - sha256: 470b5b0f3ac89acd143095281167dc2ac1a56d4fa22e1794bd8f3b00bb604540 - md5: 0b3c640697bca798d0ab428f530ed24c + size: 152305 + timestamp: 1737575898300 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.18.3-py312hcc812fe_1.conda + sha256: bfa211c0dd5dbb308788f055277dc428b7923ceb2de6a22ea98bc17cf306f9f5 + md5: d14c78abdd6109e2b7162f53b6cc1e77 depends: - idna >=2.0 - libgcc >=13 @@ -7125,11 +7109,11 @@ packages: platform: linux license: Apache-2.0 license_family: Apache - size: 150004 - timestamp: 1733429056665 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.18.3-py312hea69d52_0.conda - sha256: 69c7863809e11bc90c0d935c16e7f151dcc925add08b3894f06059263a8cb9ba - md5: f32f9b16361866a62d6e061fcd7eb400 + size: 149654 + timestamp: 1737576065314 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.18.3-py312h998013c_1.conda + sha256: 48821d23567ca0f853eee6f7812c74392867e123798b5b3c44f58758d8eb580e + md5: 092d3b40acc67c470f379049be343a7a depends: - __osx >=11.0 - idna >=2.0 @@ -7142,8 +7126,8 @@ packages: platform: osx license: Apache-2.0 license_family: Apache - size: 141556 - timestamp: 1733429104990 + size: 145543 + timestamp: 1737576074753 - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda sha256: a4dc72c96848f764bb5a5176aa93dd1e9b9e52804137b99daeebba277b31ea10 md5: 3947a35e916fcc6b9825449affbf4214 From f8867a97b9872640e0ff785c8ccf5224c7ac468f Mon Sep 17 00:00:00 2001 From: Jack Clayton Date: Wed, 22 Jan 2025 02:09:32 -0500 Subject: [PATCH 289/509] [SDK] Remove String allocations Remove allocations by constructing from `Writable` variadics and writing to stack before allocating `String`. MODULAR_ORIG_COMMIT_REV_ID: 6152520cfb625d71fdbce076c600d7e0d5b12248 --- stdlib/src/builtin/error.mojo | 24 ++++++------------------ 1 file changed, 6 insertions(+), 18 deletions(-) diff --git a/stdlib/src/builtin/error.mojo b/stdlib/src/builtin/error.mojo index 0e599ecbf5..d550b8e7be 100644 --- a/stdlib/src/builtin/error.mojo +++ b/stdlib/src/builtin/error.mojo @@ -194,9 +194,9 @@ struct Error( Args: writer: The object to write to. """ - - # TODO: Avoid this unnecessary intermediate String allocation. - writer.write(self._message()) + if not self: + return + writer.write(StringRef(self.unsafe_cstr_ptr())) @no_inline fn __repr__(self) -> String: @@ -205,7 +205,9 @@ struct Error( Returns: A printable representation of the error message. """ - return String("Error(", repr(self._message()), ")") + return String( + "Error(", repr(String(StringRef(self.unsafe_cstr_ptr()))), ")" + ) # ===-------------------------------------------------------------------===# # Methods @@ -221,20 +223,6 @@ struct Error( """ return self.data.bitcast[c_char]() - fn _message(self) -> String: - """Converts the Error to string representation. - - Returns: - A String of the error message. - """ - if not self: - return "" - - var length = self.loaded_length - if length < 0: - length = -length - return String(StringRef(self.data, length)) - @doc_private fn __mojo_debugger_raise_hook(): From aabdcc9c70f9d20635b70994e8b35e3215b09c4e Mon Sep 17 00:00:00 2001 From: Lukas Hermann <1734032+lsh@users.noreply.github.com> Date: Wed, 22 Jan 2025 14:46:14 -0800 Subject: [PATCH 290/509] [stdlib] Add `StringSlice.__getitem__(Slice)` Right now, the ergonomics of slicing a `StringSlice` are pretty bad. This PR does a first step to fix things up, but we'll want to add UTF-8 boundary checks. MODULAR_ORIG_COMMIT_REV_ID: cd725eb2f54abe8fdeaeade6f40a850bb608311d --- docs/changelog.md | 7 ++- .../src/collections/string/string_slice.mojo | 20 +++++++ .../collections/string/test_string_slice.mojo | 58 +++++++++++++++++++ 3 files changed, 83 insertions(+), 2 deletions(-) diff --git a/docs/changelog.md b/docs/changelog.md index 2457d5ffdd..b77162c41a 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -102,7 +102,7 @@ what we publish. - The free floating functions for constructing different types have been deprecated for actual constructors: - + ```plaintext before after ------------------ @@ -111,7 +111,7 @@ what we publish. bool() Bool() float() Float64() ``` - + These functions were a workaround before Mojo had a way to distinguish between implicit and explicit constructors. For this release you'll get a deprecation warning, and in the next release they'll become compiler errors. You can @@ -196,6 +196,9 @@ what we publish. compliant UTF-8 decoder that returns each Unicode codepoint encoded in the string. +- Added `StringSlice.__getitem__(Slice)` which returns a substring. + Only step sizes of 1 are supported. + - Several standard library functions have been changed to take `StringSlice` instead of `String`. This generalizes them to be used for any appropriately encoded string in memory, without requiring that the string be heap allocated. diff --git a/stdlib/src/collections/string/string_slice.mojo b/stdlib/src/collections/string/string_slice.mojo index 5f0bf7ec7b..34d7a71643 100644 --- a/stdlib/src/collections/string/string_slice.mojo +++ b/stdlib/src/collections/string/string_slice.mojo @@ -627,6 +627,26 @@ struct StringSlice[mut: Bool, //, origin: Origin[mut]]( """ return self.__str__() + @always_inline + fn __getitem__(self, span: Slice) raises -> Self: + """Gets the sequence of characters at the specified positions. + + Args: + span: A slice that specifies positions of the new substring. + + Returns: + A new StringSlice containing the substring at the specified positions. + """ + var step: Int + var start: Int + var end: Int + start, end, step = span.indices(len(self)) + + if step != 1: + raise Error("Slice must be within bounds and step must be 1") + + return Self(unsafe_from_utf8=self._slice[span]) + # ===------------------------------------------------------------------===# # Operator dunders # ===------------------------------------------------------------------===# diff --git a/stdlib/test/collections/string/test_string_slice.mojo b/stdlib/test/collections/string/test_string_slice.mojo index 14dae2dde2..c6a5b268ed 100644 --- a/stdlib/test/collections/string/test_string_slice.mojo +++ b/stdlib/test/collections/string/test_string_slice.mojo @@ -150,6 +150,64 @@ fn test_heap_string_from_string_slice() raises: assert_equal(heap_string, "Hello") +fn test_string_substring() raises: + var string = String("Hello") + var str_slice = string.as_string_slice() + + assert_equal(len(str_slice), 5) + assert_equal(str_slice[0], "H") + assert_equal(str_slice[1], "e") + assert_equal(str_slice[2], "l") + assert_equal(str_slice[3], "l") + assert_equal(str_slice[4], "o") + + # ---------------------------------- + # Test subslicing + # ---------------------------------- + + # Slice the whole thing + var sub1 = str_slice[:5] + assert_equal(len(sub1), 5) + assert_equal(sub1[0], "H") + assert_equal(sub1[1], "e") + assert_equal(sub1[2], "l") + assert_equal(sub1[3], "l") + assert_equal(sub1[4], "o") + + # Slice the end + var sub2 = str_slice[2:5] + assert_equal(len(sub2), 3) + assert_equal(sub2[0], "l") + assert_equal(sub2[1], "l") + assert_equal(sub2[2], "o") + + # Slice the first element + var sub3 = str_slice[0:1] + assert_equal(len(sub3), 1) + assert_equal(sub3[0], "H") + assert_equal(sub3[-1], "H") + + # ---------------------------------- + # Test empty subslicing + # ---------------------------------- + + var sub4 = str_slice[0:0] + assert_equal(len(sub4), 0) + + var sub5 = str_slice[2:2] + assert_equal(len(sub5), 0) + + # Empty slices still have a pointer value + assert_equal(Int(sub5.unsafe_ptr()) - Int(sub4.unsafe_ptr()), 2) + + # ---------------------------------- + # Test disallowed stepsize + # ---------------------------------- + + with assert_raises(): + var sub6 = str_slice[0:0:2] + + fn test_slice_len() raises: assert_equal(5, len(StringSlice("12345"))) assert_equal(4, len(StringSlice("1234"))) From c6de4faaa3b3511a476e838ba4817a37fb02b016 Mon Sep 17 00:00:00 2001 From: Jack Clayton Date: Thu, 23 Jan 2025 11:31:52 -0500 Subject: [PATCH 291/509] [stdlib] Clean up `write_buffered` and improve doc string Comment from Discord that we should clarify why 4096 bytes as the default stack space was chosen, and note when it should be changed. Also took the opportunity to allow the user to choose when the heap is used and clean up `print`. MODULAR_ORIG_COMMIT_REV_ID: d7d6df89983b0e72d6cb8fa35f4dc5a767f2de0c --- stdlib/src/builtin/io.mojo | 10 +++++++--- stdlib/src/utils/write.mojo | 12 +++++++++--- 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/stdlib/src/builtin/io.mojo b/stdlib/src/builtin/io.mojo index c1cf2c9008..b70780eeab 100644 --- a/stdlib/src/builtin/io.mojo +++ b/stdlib/src/builtin/io.mojo @@ -277,9 +277,13 @@ fn print[ file: The output stream. """ - write_buffered[buffer_size = 512 if is_amd_gpu() else 4096]( - file, values, sep=sep, end=end - ) + @parameter + if is_amd_gpu(): + write_buffered[buffer_size=512](file, values, sep=sep, end=end) + elif is_nvidia_gpu(): + write_buffered[use_heap=True](file, values, sep=sep, end=end) + else: + write_buffered(file, values, sep=sep, end=end) @parameter if not is_gpu(): diff --git a/stdlib/src/utils/write.mojo b/stdlib/src/utils/write.mojo index 0b4cbda871..2424d5dfcc 100644 --- a/stdlib/src/utils/write.mojo +++ b/stdlib/src/utils/write.mojo @@ -316,6 +316,7 @@ fn write_buffered[ W: Writer, //, *Ts: Writable, buffer_size: Int = 4096, + use_heap: Bool = False, ]( mut writer: W, args: VariadicPack[_, Writable, *Ts], @@ -326,13 +327,19 @@ fn write_buffered[ """ Use a buffer on the stack to minimize expensive calls to the writer. When the buffer would overflow it writes to the `writer` passed in. You can also - add seperators between the args, and end characters. + add seperators between the args, and end characters. The default stack space + used for the buffer is 4096 bytes which matches the default arm64 and x86-64 + page size, you can modify this e.g. when writing a large amount of data to a + file. Parameters: W: The type of the `Writer` to write to. Ts: The types of each arg to write. Each type must satisfy `Writable`. buffer_size: How many bytes to write to a buffer before writing out to the `writer` (default `4096`). + use_heap: Buffer to the heap, first calculating the total byte size + of all the args and then allocating only once. `buffer_size` is not + used in this case as it's dynamically calculated. (default `False`). Args: writer: The `Writer` to write to. @@ -367,12 +374,11 @@ fn write_buffered[ """ @parameter - if is_nvidia_gpu(): + if use_heap: # Count the total length of bytes to allocate only once var arg_bytes = _ArgBytes() write_args(arg_bytes, args, sep=sep, end=end) - # Stack space is very small on GPU due to many threads, so use heap var buffer = _WriteBufferHeap(arg_bytes.size + 1) write_args(buffer, args, sep=sep, end=end) buffer.data[buffer.pos] = 0 From 3c03e3cfa21770f07b3f8b4fd072b1e713d19f58 Mon Sep 17 00:00:00 2001 From: weiwei chen Date: Thu, 23 Jan 2025 13:23:36 -0500 Subject: [PATCH 292/509] [stdlib] Add memory type attribute to `pop.global_alloc` for GPU shared memory. MODULAR_ORIG_COMMIT_REV_ID: 732b0498dfc2939fa29c186907706bd65c9b891b --- stdlib/src/memory/memory.mojo | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/stdlib/src/memory/memory.mojo b/stdlib/src/memory/memory.mojo index 57f89bc958..b4fd7eef12 100644 --- a/stdlib/src/memory/memory.mojo +++ b/stdlib/src/memory/memory.mojo @@ -415,20 +415,33 @@ fn stack_allocation[ @parameter if is_gpu(): # On NVGPU, SHARED and CONSTANT address spaces lower to global memory. + + alias global_name = name.value() if name else "_global_alloc" + @parameter - if address_space in ( - _GPUAddressSpace.SHARED, - _GPUAddressSpace.CONSTANT, - ): - alias global_name = name.value() if name else "_global_alloc" + if address_space == _GPUAddressSpace.SHARED: return __mlir_op.`pop.global_alloc`[ name = global_name.value, count = count.value, + memoryType = __mlir_attr.`#pop`, _type = UnsafePointer[ type, address_space=address_space, alignment=alignment ]._mlir_type, alignment = alignment.value, ]() + elif address_space == _GPUAddressSpace.CONSTANT: + # No need to annotation this global_alloc because constants in + # GPU shared memory won't prevent llvm module splitting to + # happen since they are immutables. + return __mlir_op.`pop.global_alloc`[ + name = global_name.value, + count = count.value, + _type = UnsafePointer[ + type, address_space=address_space, alignment=alignment + ]._mlir_type, + alignment = alignment.value, + ]() + # MSTDL-797: The NVPTX backend requires that `alloca` instructions may # only have generic address spaces. When allocating LOCAL memory, # addrspacecast the resulting pointer. From 63c670ad007b1f6e026caae76875a252a26fe5a5 Mon Sep 17 00:00:00 2001 From: Jack Clayton Date: Thu, 23 Jan 2025 14:12:43 -0500 Subject: [PATCH 293/509] [stdlib] Add deprecation warning for `StringableCollectionElement` `WritableCollectionElement` should always be used to allow avoiding intermediary allocations, but still construct a `String` if required. MODULAR_ORIG_COMMIT_REV_ID: 6f513d24d20f0a723ad65b3cf740da5372b2b6e8 --- docs/changelog.md | 3 +++ stdlib/src/builtin/value.mojo | 17 +++++++++++++++++ stdlib/src/prelude/__init__.mojo | 1 + 3 files changed, 21 insertions(+) diff --git a/docs/changelog.md b/docs/changelog.md index b77162c41a..8a540858a0 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -388,6 +388,9 @@ what we publish. - removed `StringRef.strip()` - The `Tuple.get[i, T]()` method has been removed. Please use `tup[i]` or `rebind[T](tup[i])` as needed instead. +- `StringableCollectionElement` is deprecated, use `WritableCollectionElement` + instead which still allows you to construct a `String`, but can avoid + intermediary allocations. ### 🛠️ Fixed diff --git a/stdlib/src/builtin/value.mojo b/stdlib/src/builtin/value.mojo index c3868f1a5a..81e984ce74 100644 --- a/stdlib/src/builtin/value.mojo +++ b/stdlib/src/builtin/value.mojo @@ -207,6 +207,23 @@ trait CollectionElementNew(ExplicitlyCopyable, Movable): pass +# FIXME(25.2): remove deprecation warning +@deprecated( + "deprecated, use `WritableCollectionElement` which still allows you to" + " construct a `String` but can avoid intermediary allocations" +) +trait StringableCollectionElement(CollectionElement, Stringable): + """The StringableCollectionElement trait denotes a trait composition + of the `CollectionElement` and `Stringable` traits. + + This is useful to have as a named entity since Mojo does not + currently support anonymous trait compositions to constrain + on `CollectionElement & Stringable` in the parameter. + """ + + pass + + trait WritableCollectionElement(CollectionElement, Writable): """The WritableCollectionElement trait denotes a trait composition of the `CollectionElement` and `Writable` traits. diff --git a/stdlib/src/prelude/__init__.mojo b/stdlib/src/prelude/__init__.mojo index 8723941535..48540a9805 100644 --- a/stdlib/src/prelude/__init__.mojo +++ b/stdlib/src/prelude/__init__.mojo @@ -135,6 +135,7 @@ from builtin.value import ( Movable, RepresentableCollectionElement, WritableCollectionElement, + StringableCollectionElement, ) from documentation import doc_private from memory import AddressSpace, Pointer From d2b79a6dcd043588f96c96ca290ef354b62ded8e Mon Sep 17 00:00:00 2001 From: Arthur Evans Date: Thu, 23 Jan 2025 14:09:27 -0800 Subject: [PATCH 294/509] [Docs] Update Language basics overview. MODULAR_ORIG_COMMIT_REV_ID: 2d3fb3d0d2880afa6cc16743782a9817791ab389 --- docs/manual/basics.mdx | 391 +++++++++++++++++------------ docs/manual/functions.mdx | 131 ++++++---- docs/manual/lifecycle/death.mdx | 8 + docs/manual/structs.mdx | 16 ++ docs/manual/traits.mdx | 4 +- examples/notebooks/environment.yml | 14 -- 6 files changed, 344 insertions(+), 220 deletions(-) delete mode 100644 examples/notebooks/environment.yml diff --git a/docs/manual/basics.mdx b/docs/manual/basics.mdx index 301dfdb90e..c6c4071a56 100644 --- a/docs/manual/basics.mdx +++ b/docs/manual/basics.mdx @@ -2,21 +2,20 @@ title: Mojo language basics sidebar_position: 1 sidebar_label: Overview -description: Introduction to Mojo's basic language features. +description: An overview of the Mojo language. --- -At this point, you should have already installed [Magic](/magic) to manage the -virtual environment and packages for your MAX and Mojo development (or -alternatively added the `max` package to a [conda](/magic/conda) development -environment). It's also a good idea to go through the [Get Started with -Mojo](/mojo/manual/get-started) tutorial to get a taste of what Mojo programming -is like. Now let's talk about how to write Mojo code. +This page provides an overview of the Mojo language. If you know Python, then a lot of Mojo code will look familiar. However, Mojo -incorporates features like strong type checking, memory safety, next-generation +incorporates features like static type checking, memory safety, next-generation compiler technologies, and more. As such, Mojo also has a lot in common with languages like C++ and Rust. +If you prefer to learn by doing, follow the [Get started with +Mojo](/mojo/manual/get-started) tutorial. You'll install the [Magic](/magic) +CLI, create a Mojo project and write your first Mojo program. + On this page, we'll introduce the essential Mojo syntax, so you can start coding quickly and understand other Mojo code you encounter. Subsequent sections in the Mojo Manual dive deeper into these topics, and links are @@ -34,61 +33,165 @@ particular language. ::: -## Functions +## Hello world + +Here's the traditional "Hello world" program in Mojo: + +```mojo +def main(): + print("Hello, world!") +``` + +Every Mojo program must include a function named `main()` as the entry point. +We'll talk more about functions soon, but for now it's enough to know that +you can write `def main():` followed by an indented function body. + +The `print()` statement does what you'd expect, printing its arguments to +the standard output. + +:::note + +You don't need a `main()` function when coding in the +[REPL](/mojo/cli/repl) or in a +[Jupyter +notebook](https://github.com/modular/mojo/tree/main/examples/notebooks#readme). +In these environments, Mojo executes top-level code (that is, statements +that appear outside of a function). Mojo doesn't support top-level code in a +`.mojo` (or `.🔥`) file -Mojo functions can be declared with either `fn` or `def`. +::: -The `fn` declaration enforces type-checking and memory-safe behaviors (Rust -style), while `def` allows no type declarations and dynamic behaviors (Python -style). +## Variables -For example, this `def` function doesn't require declaration of argument types -or the return type: +In Mojo, you can declare a variable by simply assigning a value to +a new named variable: ```mojo -def greet(name): - return "Hello, " + name + "!" +def main(): + x = 10 + y = x * x + print(y) ``` -While the same thing as an `fn` function requires that you specify the -argument type and the return type like this: +You can also _explicitly_ declare variables with the `var` keyword: ```mojo -fn greet2(name: String) -> String: - return "Hello, " + name + "!" +var x = 10 ``` -Both functions have the same result, but the `fn` function provides -compile-time checks to ensure the function receives and returns the correct -types. Whereas, the `def` function might fail at runtime if it receives the -wrong type. +When declaring a variable with `var`, you can also declare a variable type, with +or without an assignment: -Currently, Mojo doesn't support top-level code in a `.mojo` (or `.🔥`) file, so -every program must include a function named `main()` as the entry point. -You can declare it with either `def` or `fn`: ```mojo def main(): - print("Hello, world!") + var x: Int = 10 + var sum: Int + sum = x + x ``` -:::note +Both implicitly declared and explicitly declared variables are statically typed: +that is, the type is set at compile time, and doesn't change at runtime. +If you don't specify a type, Mojo uses the type of the first value assigned to +the variable. -You don't need a `main()` function when coding in the -[REPL](/mojo/manual/get-started#2-run-code-in-the-repl) or in a -[Jupyter -notebook](https://github.com/modular/mojo/tree/main/examples/notebooks#readme). +```mojo +x = 10 +x = "Foo" # Error: Cannot convert "StringLiteral" value to "Int" +``` -::: +For more details, see the page about +[variables](/mojo/manual/variables). + +## Blocks and statements + +Code blocks such as functions, conditions, and loops are defined +with a colon followed by indented lines. For example: + +```mojo +def loop(): + for x in range(5): + if x % 2 == 0: + print(x) +``` + +You can use any number of spaces or tabs for your indentation (we prefer 4 +spaces). + +All code statements in Mojo end with a newline. However, statements can span +multiple lines if you indent the following lines. For example, this long string +spans two lines: + +```mojo +def print_line(): + long_text = "This is a long line of text that is a lot easier to read if" + " it is broken up across two lines instead of one long line." + print(long_text) +``` + +And you can chain function calls across lines: + +```mojo +def print_hello(): + text = String(",") + .join("Hello", " world!") + print(text) +``` + +For more information on loops and conditional statements, see +[Control flow](/mojo/manual/control-flow). + +## Functions + +Mojo functions can be declared with either the `def` or `fn` keyword. + +There are only a few differences between the two styles. For example, the +following function works with either `def` or `fn`: + +```mojo +def greet(name: String) -> String: + return "Hello, " + name + "!" +``` + +The `fn` declaration has a few restrictions that a `def` declaration doesn't: + +- The argument type and return types are _optional_ in a `def` function but + required in a `fn` function. So the previous function could also be written + as: + + ```mojo + def greet(name): + return "Hello, " + name + "!" + ``` + + Generally, specifying types is good practice, so most examples in this + manual include types, regardless of whether they're declared with `def` or + `fn`. + +- If an `fn` function can raise an error, it needs to be declared with the + `raises` keyword: + + ```mojo + fn greet(name: String) raises: + if (name == ""): + raise Error("Name is empty") + return "Hello, " + name + "!" + ``` + Any `def` function can raise an error. + +If you don't specify a type for an argument or return value, it's assigned the +`object` type, a special type that that can represent different types of values. +This allows for some runtime dynamism, but also means that +the function might fail at runtime if it receives the wrong type. For more details, see the page about [functions](/mojo/manual/functions). ### Value ownership and argument mutability -If you're wondering whether function arguments are passed by value or -passed by reference, the short answer is: `def` functions receive arguments -"by value" and `fn` functions receive arguments "by immutable reference." +If you're wondering whether function arguments are passed by value or passed by +reference, the short answer is: by default, arguments are passed by +immutable reference. The longer short answer is that Mojo allows you to specify for each argument whether it should be passed by value (as `owned`), or whether it should be @@ -101,38 +204,47 @@ given time (but allowing other variables to receive a reference to it). Ownership then ensures that the value is destroyed when the lifetime of the owner ends (and there are no outstanding references). -But that's still a short answer, because going much further is a slippery slope -into complexity that is out of scope for this section. For the complete -answer, see the section about [value ownership](/mojo/manual/values/). +For a more complete answer, see the section on +[value ownership](/mojo/manual/values/). -## Variables +## Code comments -You can declare variables with the `var` keyword. Or, if your code is in a -`def` function, you can omit the `var` (in an `fn` function, you must include -the `var` keyword). +You can create a one-line comment using the hash `#` symbol: -For example: +```mojo +# This is a comment. The Mojo compiler ignores this line. +``` + +Comments may also follow some code: ```mojo -def do_math(x): - var y = x + x - y = y * y - print(y) +var message = "Hello, World!" # This is also a valid comment ``` -Optionally, you can also declare a variable type like this: +API documentation comments are enclosed in triple quotes. For example: ```mojo -def add_one(x): - var y: Int = 1 - print(x + y) +fn print(x: String): + """Prints a string. + + Args: + x: The string to print. + """ + ... ``` -Even in an `fn` function, declaring the variable type is optional -(only the argument and return types must be declared in `fn` functions). +Documenting your code with these kinds of comments (known as "docstrings") +is a topic we've yet to fully specify, but you can generate an API reference +from docstrings using the [`mojo doc` command](/mojo/cli/doc). -For more details, see the page about -[variables](/mojo/manual/variables). +:::note + +Technically, docstrings aren't _comments_, they're a special use of Mojo's +syntax for multi-line string literals. For details, see +[String literals](/mojo/manual/types#string-literals) in the page on +[Types](/mojo/manual/types). + +::: ## Structs @@ -155,18 +267,44 @@ struct MyPair: self.first = first self.second = second - fn dump(self): + fn __copyinit__(out self, existing other): + self.first = existing.first + self.second = existing.second + + def dump(self): print(self.first, self.second) ``` And here's how you can use it: ```mojo -fn use_mypair(): +def use_mypair(): var mine = MyPair(2, 4) mine.dump() ``` +Note that some functions are declared with `fn` function, while the `dump()` +function is declared with `def`. In general, you can use either form in a +struct. + +The `MyPair` struct contains two special methods, `__init__()`, the constructor, +and `__copyinit__()`, the copy constructor. _Lifecycle methods_ like this +control how a struct is created, copied, moved, and destroyed. + +For most simple types, you don't need to write the lifecycle methods. You can +use the `@value` decorator to generate the boilerplate code for you. So the +`MyPair` struct can be simplified to this: + +```mojo +@value +struct MyPair: + var first: Int + var second: Int + + def dump(self): + print(self.first, self.second) +``` + For more details, see the page about [structs](/mojo/manual/structs). @@ -175,25 +313,23 @@ For more details, see the page about A trait is like a template of characteristics for a struct. If you want to create a struct with the characteristics defined in a trait, you must implement each characteristic (such as each method). Each characteristic in a trait is a -"requirement" for the struct, and when your struct implements each requirement, -it's said to "conform" to the trait. - -Currently, the only characteristics that traits can define are method -signatures. Also, traits currently cannot implement default behaviors for -methods. +"requirement" for the struct, and when your struct implements all of the +requirements, it's said to "conform" to the trait. Using traits allows you to write generic functions that can accept any type that conforms to a trait, rather than accept only specific types. -For example, here's how you can create a trait (notice the function is not -implemented): +For example, here's how you can create a trait: ```mojo trait SomeTrait: fn required_method(self, x: Int): ... ``` -And here's how to create a struct that conforms to the trait: +The three dots following the method signature are Mojo syntax indicating that +the method is not implemented. + +Here's a trait that conforms to `SomeTrait`: ```mojo @value @@ -214,6 +350,15 @@ fn use_trait_function(): fun_with_traits(thing) ``` +You'll see traits used in a lot of APIs provided by Mojo's standard library. For +example, Mojo's collection types like `List` and `Dict` can store any type that +conforms to the `CollectionElement` trait. You can specify the type when you +create a collection: + +```mojo +my_list = List[Float64]() +``` + :::note You're probably wondering about the square brackets on `fun_with_traits()`. @@ -249,7 +394,8 @@ ice just a little bit here. To get you started, let's look at a parametric function: ```mojo -fn repeat[count: Int](msg: String): +def repeat[count: Int](msg: String): + @parameter # evaluate the following for loop at compile time for i in range(count): print(msg) ``` @@ -259,16 +405,19 @@ This function has one parameter of type `Int` and one argument of type argument: ```mojo -fn call_repeat(): +defining call_repeat(): repeat[3]("Hello") # Prints "Hello" 3 times ``` By specifying `count` as a parameter, the Mojo compiler is able to optimize the -function because this value is guaranteed to not change at runtime. The -compiler effectively generates a unique version of the `repeat()` function that -repeats the message only 3 times. This makes the code more performant because -there's less to compute at runtime. +function because this value is guaranteed to not change at runtime. And the +`@parameter` decorator in the code tells the compiler to evaluate the `for` loop +at compile time, not runtime. + +The compiler effectively generates a unique version of the `repeat()` function +that repeats the message only 3 times. This makes the code more performant +because there's less to compute at runtime. Similarly, you can define a struct with parameters, which effectively allows you to define variants of that type at compile-time, depending on the parameter @@ -277,87 +426,12 @@ values. For more detail on parameters, see the section on [Metaprogramming](/mojo/manual/parameters/). -## Blocks and statements - -Code blocks such as functions, conditions, and loops are defined -with a colon followed by indented lines. For example: - -```mojo -def loop(): - for x in range(5): - if x % 2 == 0: - print(x) -``` - -You can use any number of spaces or tabs for your indentation (we prefer 4 -spaces). - -All code statements in Mojo end with a newline. However, statements can span -multiple lines if you indent the following lines. For example, this long string -spans two lines: - -```mojo -def print_line(): - long_text = "This is a long line of text that is a lot easier to read if" - " it is broken up across two lines instead of one long line." - print(long_text) -``` - -And you can chain function calls across lines: - -```mojo -def print_hello(): - text = String(",") - .join("Hello", " world!") - print(text) -``` - -## Code comments - -You can create a one-line comment using the hash `#` symbol: - -```mojo -# This is a comment. The Mojo compiler ignores this line. -``` - -Comments may also follow some code: - -```mojo -var message = "Hello, World!" # This is also a valid comment -``` - -You can instead write longer comments across many lines using triple quotes: - -```mojo -""" -This is also a comment, but it's easier to write across -many lines, because each line doesn't need the # symbol. -""" -``` - -Triple quotes is the preferred method of writing API documentation. For example: - -```mojo -fn print(x: String): - """Prints a string. - - Args: - x: The string to print. - """ - ... -``` - -Documenting your code with these kinds of comments (known as "docstrings") -is a topic we've yet to fully specify, but you can generate an API reference -from docstrings using the [`mojo doc` command](/mojo/cli/doc). - ## Python integration Mojo supports the ability to import Python modules as-is, so you can leverage existing Python code right away. -For example, here's how you can import and use NumPy (you must have Python -`numpy` installed): +For example, here's how you can import and use NumPy: ```mojo from python import Python @@ -369,13 +443,11 @@ def main(): print(ar.shape) ``` -:::note - -**Note:** You must have the Python module (such as `numpy`) installed already. - -::: +You must have the Python module (such as `numpy`) installed in the environment +where you're using Mojo. You can install Python packages into your virtual +environment using [Magic](/magic/) or [Conda](/magic/conda). -For more details, see the page about +For more details, see the page on [Python integration](/mojo/manual/python/). ## Next steps @@ -384,11 +456,14 @@ Hopefully this page has given you enough information to start experimenting with Mojo, but this is only touching the surface of what's available in Mojo. If you're in the mood to read more, continue through each page of this -Mojo Manual using the buttons at the bottom of each page—the next page from +Mojo Manual—the next page from here is [Functions](/mojo/manual/functions). Otherwise, here are some other resources to check out: +* See [Get started with Mojo](/mojo/manual/get-started) for a hands-on + tutorial that will get you up and running with Mojo. + * If you want to experiment with some code, clone [the Mojo repo](https://github.com/modular/mojo/) to try our code examples: diff --git a/docs/manual/functions.mdx b/docs/manual/functions.mdx index c6f51aeaf9..371eff68ce 100644 --- a/docs/manual/functions.mdx +++ b/docs/manual/functions.mdx @@ -23,51 +23,6 @@ Functions declared inside a [`struct`](/mojo/manual/structs) are called ::: -## `fn` functions - -The `fn` function has somewhat stricter rules than the `def` function. - -Here's an example of an `fn` function: - -```mojo -fn greet(name: String) -> String: - var greeting = "Hello, " + name + "!" - return greeting -``` - -As far as a function caller is concerned, `def` and `fn` functions are -interchangeable. That is, there's nothing a `def` can do that an `fn` can't -(and vice versa). The difference is that, compared to a `def` function, an `fn` -function is more strict on the inside. - -Here's everything to know about `fn`: - -* Arguments must specify a type (except for the - `self` argument in [struct methods](/mojo/manual/structs#methods)). - -* Return values must specify a type, unless the function doesn't return a value. - - If you don't specify a return type, it defaults to `None` (meaning no return - value). - -* By default, arguments are received as an immutable reference (values are - read-only, using the `read` [argument - convention](/mojo/manual/values/ownership#argument-conventions)). - - This prevents accidental mutations, and permits the use of non-copyable types - as arguments. - - If you want a local copy, you can simply assign the value to a local - variable. Or, you can get a mutable reference to the value by declaring the - `mut` [argument - convention](/mojo/manual/values/ownership#argument-conventions)). - -* If the function raises an exception, it must be explicitly declared with the - `raises` keyword. (A `def` function does not need to declare exceptions.) - -By enforcing these type checks, using the `fn` function helps avoid a variety -of runtime errors. - ## `def` functions Compared to an `fn` function, a `def` function has fewer restrictions. @@ -83,7 +38,7 @@ def greet(name): In a Mojo `def` function, you have the option to specify the argument type and the return type. You can also declare variables with `var`, with or without explicit typing. So you can write a `def` function that looks almost exactly -like the `fn` function shown earlier: +like an `fn` function: ```mojo def greet(name: String) -> String: @@ -147,6 +102,53 @@ possible underlying types, for example. ::: +## `fn` functions + +The `fn` function has somewhat stricter rules than the `def` function. + +Here's an example of an `fn` function: + +```mojo +fn greet(name: String) -> String: + var greeting = "Hello, " + name + "!" + return greeting +``` + +As far as a function caller is concerned, `def` and `fn` functions are +interchangeable. That is, there's nothing a `def` can do that an `fn` can't +(and vice versa). The difference is that, compared to a `def` function, an `fn` +function is more strict on the inside. + +Here's everything to know about `fn`: + +* Arguments must specify a type (except for the + `self` argument in [struct methods](/mojo/manual/structs#methods)). + +* Return values must specify a type, unless the function doesn't return a value. + + If you don't specify a return type, it defaults to `None` (meaning no return + value). + +* By default, arguments are received as an immutable reference (values are + read-only, using the `read` [argument + convention](/mojo/manual/values/ownership#argument-conventions)). + + This prevents accidental mutations, and permits the use of non-copyable types + as arguments. + + If you want a local copy, you can simply assign the value to a local + variable. Or, you can get a mutable reference to the value by declaring the + `mut` [argument + convention](/mojo/manual/values/ownership#argument-conventions)). + +* If the function can raise an error, it must be explicitly declared with the + `raises` keyword. A `def` function does not need to add the `raises` keyword. + For information, see + [Raising and non-raising functions](#raising-and-non-raising-functions). + +By enforcing these type checks, using the `fn` function helps avoid a variety +of runtime errors. + ## Function arguments As noted in the previous sections, there are a few differences between how `def` @@ -702,3 +704,40 @@ returned immediately: def create_immovable_object3(owned name: String) -> ImmovableObject: return ImmovableObject(name^) # OK ``` + +## Raising and non-raising functions + +By default, when a function raises an error, the function terminates immediately +and the error propagates to the calling function. If the calling function +doesn't handle the error, it continues to propagate up the call stack. + +```mojo +def raises_error(): + raise Error("There was an error.") +``` + +Functions declared with `fn` without the `raises` keyword are _non-raising +functions_—that is, they are not allowed to propagate an error to the calling +function. If a non-raising function calls a raising function, it **must handle +any possible errors.** + +```mojo +# This function will not compile +fn unhandled_error(): + raises_error() # Error: can't call raising function in a non-raising context + +fn handle_error(): + try: + raises_error() + except e: + print("Handled an error," e) +``` + +If you're writing code that you expect to use widely or distribute as a package, +you may want to use `fn` functions for APIs that don't raise errors to limit +the number of places users need to add unnecessary error handling code. For some +extremely performance-sensitive code, it may be preferable to avoid runtime +error-handling. + +For more information, see +[Errors, error handling, and context managers](/mojo/manual/errors). diff --git a/docs/manual/lifecycle/death.mdx b/docs/manual/lifecycle/death.mdx index 864f06e365..70344be3ed 100644 --- a/docs/manual/lifecycle/death.mdx +++ b/docs/manual/lifecycle/death.mdx @@ -214,6 +214,14 @@ However, the `self` value inside the `__del__()` destructor is still whole (so all fields are still usable) until the destructor returns, as we'll discuss more in the following section. +:::note Destructors cannot raise errors + +Currently a Mojo destructor isn't allowed to raise an error. This means that the +destructor must be defined as an `fn` function without the `raises` keyword. +Mojo won't allow you to define a destructor using `fn raises` or `def`. + +::: + ## Field lifetimes In addition to tracking the lifetime of all objects in a program, Mojo also diff --git a/docs/manual/structs.mdx b/docs/manual/structs.mdx index 818058ba4c..fd7462b9ea 100644 --- a/docs/manual/structs.mdx +++ b/docs/manual/structs.mdx @@ -128,6 +128,22 @@ you can elide it because Mojo already knows its type (`MyPair` in this case). ::: +### `fn` versus `def` in struct methods + +Struct methods can be declared with either the `def` or `fn` keywords. One +important difference is that an `fn` function without the `raises` keyword can't +raise an error. When you call a function that *can* raise an error from inside a +method that *can't* raise an error, Mojo requires you to handle any errors, as +described in +[Errors, error handling, and context managers](/mojo/manual/errors). + +If you're writing code that you expect to use widely or distribute as a package, +you may want to use `fn` functions for APIs that can't raise an error to limit +the number of places users need to add error handling code. + +A struct's `__del__()` method, or destructor, **must** be a non-raising method, +so it's always declared with `fn` (and without the `raises` keyword). + ### Static methods A struct can also have *static methods*. A static method can be called without diff --git a/docs/manual/traits.mdx b/docs/manual/traits.mdx index 0d13119942..948185e09b 100644 --- a/docs/manual/traits.mdx +++ b/docs/manual/traits.mdx @@ -97,8 +97,8 @@ trait Quackable: ``` A trait looks a lot like a struct, except it's introduced by the `trait` -keyword. Right now, a trait can only contain method signatures, and cannot -include method implementations. Each method signature must be followed by +keyword. A trait can contain method signatures, but it can't implement those +methods. Each method signature must be followed by three dots (`...`) to indicate that the method is unimplemented. A trait can also include associated aliases—compile-time constant values that diff --git a/examples/notebooks/environment.yml b/examples/notebooks/environment.yml deleted file mode 100644 index 45a48799ef..0000000000 --- a/examples/notebooks/environment.yml +++ /dev/null @@ -1,14 +0,0 @@ -name: mojo-notebooks -channels: - - pytorch - - https://conda.modular.com/max/ - - conda-forge - - defaults -dependencies: - - python>=3.11,<3.12 - - max>=24.4.0dev6 - - max = "*" -pip = ">=24.0,<25" -jupyterlab = ">=4.2.5,<5" -matplotlib = ">=3.9.2,<4" -numpy = ">=1.26.4,<2" From 02a2e4b3b08afb7030f0ff1c0d158cf90b9d9eca Mon Sep 17 00:00:00 2001 From: Jack Clayton Date: Thu, 23 Jan 2025 19:24:59 -0500 Subject: [PATCH 295/509] [stdlib] Optimize String.join for very large `List` This adds some methods for writing `List[WritableCollectionElement]` to buffers, and a function to write it buffered to any writer. This is then used for `String.join` which had bad performance for very large amounts of elements, it now buffers to the heap if over the buffer_size to avoid multiple allocations. Improves perf of joining a 10 million element list by 27x. More context in Discord thread: https://discord.com/channels/1087530497313357884/1331776837738696828/1331957122409435146 MODULAR_ORIG_COMMIT_REV_ID: a159f610003a846a9be9b54dad6f0d1019799203 --- stdlib/src/builtin/debug_assert.mojo | 5 +- stdlib/src/collections/string/string.mojo | 35 +++++--- stdlib/src/utils/write.mojo | 103 +++++++++++++++++++--- 3 files changed, 118 insertions(+), 25 deletions(-) diff --git a/stdlib/src/builtin/debug_assert.mojo b/stdlib/src/builtin/debug_assert.mojo index a18a9eb271..2b62fe71a8 100644 --- a/stdlib/src/builtin/debug_assert.mojo +++ b/stdlib/src/builtin/debug_assert.mojo @@ -27,7 +27,7 @@ from builtin._location import __call_location, _SourceLocation from memory import UnsafePointer, Span from utils.write import ( - _ArgBytes, + _TotalWritableBytes, _WriteBufferHeap, _WriteBufferStack, write_args, @@ -247,7 +247,7 @@ fn _debug_assert_msg( pass elif is_nvidia_gpu(): # Count the total length of bytes to allocate only once - var arg_bytes = _ArgBytes() + var arg_bytes = _TotalWritableBytes() arg_bytes.write( "At ", loc, @@ -272,6 +272,7 @@ fn _debug_assert_msg( stdout.write_bytes( Span[Byte, ImmutableAnyOrigin](ptr=buffer.data, length=buffer.pos) ) + buffer.data.free() else: var buffer = _WriteBufferStack[4096](stdout) diff --git a/stdlib/src/collections/string/string.mojo b/stdlib/src/collections/string/string.mojo index 4cee5a90d0..d310637df8 100644 --- a/stdlib/src/collections/string/string.mojo +++ b/stdlib/src/collections/string/string.mojo @@ -20,7 +20,7 @@ from os import abort from sys import bitwidthof, llvm_intrinsic from sys.ffi import c_char from sys.intrinsics import _type_is_eq -from utils.write import write_buffered, _WriteBufferStack +from utils.write import write_buffered, _TotalWritableBytes, _WriteBufferHeap from bit import count_leading_zeros from memory import UnsafePointer, memcmp, memcpy, Span @@ -1190,11 +1190,20 @@ struct String( var sep = StaticString(ptr=self.unsafe_ptr(), length=len(self)) return String(elems, sep=sep) - fn join[T: WritableCollectionElement](self, elems: List[T, *_]) -> String: + fn join[ + T: WritableCollectionElement, //, buffer_size: Int = 4096 + ](self, elems: List[T, *_]) -> String: """Joins string elements using the current string as a delimiter. + Defaults to writing to the stack if total bytes of `elems` is less than + `buffer_size`, otherwise will allocate once to the heap and write + directly into that. The `buffer_size` defaults to 4096 bytes to match + the default page size on arm64 and x86-64, but you can increase this if + you're joining a very large `List` of elements to write into the stack + instead of the heap. Parameters: T: The types of the elements. + buffer_size: The max size of the stack buffer. Args: elems: The input values. @@ -1202,14 +1211,20 @@ struct String( Returns: The joined string. """ - var string = String() - var buffer = _WriteBufferStack(string) - for i in range(len(elems)): - buffer.write(elems[i]) - if i < len(elems) - 1: - buffer.write(self) - buffer.flush() - return string + var sep = StaticString(ptr=self.unsafe_ptr(), length=len(self)) + var total_bytes = _TotalWritableBytes(elems, sep=sep) + + # Use heap if over the stack buffer size + if total_bytes.size + 1 > buffer_size: + var buffer = _WriteBufferHeap(total_bytes.size + 1) + buffer.write_list(elems, sep=sep) + buffer.data[total_bytes.size] = 0 + return String(ptr=buffer.data, length=total_bytes.size + 1) + # Use stack otherwise + else: + var string = String() + write_buffered[buffer_size](string, elems, sep=sep) + return string @always_inline fn chars(self) -> CharsIter[__origin_of(self)]: diff --git a/stdlib/src/utils/write.mojo b/stdlib/src/utils/write.mojo index 2424d5dfcc..e5b4f16128 100644 --- a/stdlib/src/utils/write.mojo +++ b/stdlib/src/utils/write.mojo @@ -227,18 +227,30 @@ struct _WriteBufferHeap(Writer): ].alloc(size) self.pos = 0 - fn __del__(owned self): - self.data.free() + fn write_list[ + T: WritableCollectionElement + ](mut self, values: List[T, *_], *, sep: StaticString = ""): + var length = len(values) + if length == 0: + return + self.write(values[0]) + if length > 1: + for i in range(1, length): + self.write(sep, values[i]) @always_inline fn write_bytes(mut self, bytes: Span[UInt8, _]): len_bytes = len(bytes) - # If empty then return - if len_bytes == 0: - return var ptr = bytes.unsafe_ptr() - for i in range(len_bytes): - self.data[i + self.pos] = ptr[i] + + # TODO: fix memcpy alignment on nvidia GPU + @parameter + if is_nvidia_gpu(): + for i in range(len_bytes): + self.data[i + self.pos] = ptr[i] + else: + memcpy(self.data + self.pos, ptr, len_bytes) + self.pos += len_bytes fn write[*Ts: Writable](mut self, *args: *Ts): @@ -249,12 +261,24 @@ struct _WriteBufferHeap(Writer): args.each[write_arg]() -struct _ArgBytes(Writer): +struct _TotalWritableBytes(Writer): var size: Int fn __init__(out self): self.size = 0 + fn __init__[ + T: WritableCollectionElement + ](out self, values: List[T, *_], sep: StaticString = ""): + self.size = 0 + var length = len(values) + if length == 0: + return + self.write(values[0]) + if length > 1: + for i in range(1, length): + self.write(sep, values[i]) + fn write_bytes(mut self, bytes: Span[UInt8, _]): self.size += len(bytes) @@ -279,6 +303,17 @@ struct _WriteBufferStack[ self.pos = 0 self.writer = Pointer.address_of(writer) + fn write_list[ + T: WritableCollectionElement + ](mut self, values: List[T, *_], *, sep: StaticString = ""): + var length = len(values) + if length == 0: + return + self.write(values[0]) + if length > 1: + for i in range(1, length): + self.write(sep, values[i]) + fn flush(mut self): self.writer[].write_bytes( Span[Byte, ImmutableAnyOrigin]( @@ -289,16 +324,13 @@ struct _WriteBufferStack[ fn write_bytes(mut self, bytes: Span[Byte, _]): len_bytes = len(bytes) - # If empty then return - if len_bytes == 0: - return # If span is too large to fit in buffer, write directly and return if len_bytes > capacity: self.flush() self.writer[].write_bytes(bytes) return # If buffer would overflow, flush writer and reset pos to 0. - if self.pos + len_bytes > capacity: + elif self.pos + len_bytes > capacity: self.flush() # Continue writing to buffer memcpy(self.data.unsafe_ptr() + self.pos, bytes.unsafe_ptr(), len_bytes) @@ -376,7 +408,7 @@ fn write_buffered[ @parameter if use_heap: # Count the total length of bytes to allocate only once - var arg_bytes = _ArgBytes() + var arg_bytes = _TotalWritableBytes() write_args(arg_bytes, args, sep=sep, end=end) var buffer = _WriteBufferHeap(arg_bytes.size + 1) @@ -385,7 +417,52 @@ fn write_buffered[ writer.write_bytes( Span[Byte, ImmutableAnyOrigin](ptr=buffer.data, length=buffer.pos) ) + buffer.data.free() else: var buffer = _WriteBufferStack[buffer_size](writer) write_args(buffer, args, sep=sep, end=end) buffer.flush() + + +fn write_buffered[ + W: Writer, + T: WritableCollectionElement, //, + buffer_size: Int = 4096, +](mut writer: W, values: List[T, *_], *, sep: StaticString = ""): + """ + Use a buffer on the stack to minimize expensive calls to the writer. You + can also add seperators between the values. The default stack space used for + the buffer is 4096 bytes which matches the default arm64 and x86-64 page + size, you can modify this e.g. when writing a large amount of data to a + file. + + Parameters: + W: The type of the `Writer` to write to. + T: The `Writable` type of the `List`. + buffer_size: How many bytes to write to a buffer before writing out to + the `writer` (default `4096`). + + Args: + writer: The `Writer` to write to. + values: A `List` of Writable arguments. + sep: The separator used between elements. + + Example + + ```mojo + import sys + from utils import write_buffered + + var string = String() + var values = List[String]("3", "total", "args") + write_buffered(string, values, sep=",") + ``` + + ``` + 3, total, args + ``` + . + """ + var buffer = _WriteBufferStack(writer) + buffer.write_list(values, sep=sep) + buffer.flush() From 171851e205eba7b18e98446dc97b5454237978db Mon Sep 17 00:00:00 2001 From: Ken Jones <165197230+KenJones-Modular@users.noreply.github.com> Date: Thu, 23 Jan 2025 18:55:01 -0800 Subject: [PATCH 296/509] Updated docs to use `Tuple` indexing instead of `Tuple.get()` The `Tuple.get()` method has been removed. You should now use indexing, like `tup[0]`, `tup[1]`, etc. to retrieve the individual values of a `Tuple`. MODULAR_ORIG_COMMIT_REV_ID: 35abb07584cd6e5201645d98586686e837d79e86 --- docs/manual/types.mdx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/manual/types.mdx b/docs/manual/types.mdx index e45e1b627b..49669c32d9 100644 --- a/docs/manual/types.mdx +++ b/docs/manual/types.mdx @@ -425,7 +425,7 @@ x, y = example_tuple print(x, y) # Get individual values with an index -s = example_tuple.get[1, String]() +s = example_tuple[1] print(s) ``` @@ -440,7 +440,7 @@ we must also convert `"Example"` from type `StringLiteral` to type `String`. ```mojo example_tuple = (1, String("Example")) -s = example_tuple.get[1, String]() +s = example_tuple[1] print(s) ``` From 8166be8a12b352f8c349119d7eea0275da46bf0e Mon Sep 17 00:00:00 2001 From: Chris Elrod Date: Fri, 24 Jan 2025 15:48:11 +0700 Subject: [PATCH 297/509] [stdlib] Remove debug info from load and store methods of `UnsafePointer` This can improve some error messages, allowing users to focus on the source of the bad read/write, rather than its implementation. MODULAR_ORIG_COMMIT_REV_ID: a456f0d4dd3704f62796fb19c218a6dbfe4be969 --- stdlib/src/memory/unsafe_pointer.mojo | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/stdlib/src/memory/unsafe_pointer.mojo b/stdlib/src/memory/unsafe_pointer.mojo index d2c19e8fb1..eafee8084a 100644 --- a/stdlib/src/memory/unsafe_pointer.mojo +++ b/stdlib/src/memory/unsafe_pointer.mojo @@ -538,7 +538,7 @@ struct UnsafePointer[ else: return __mlir_op.`pop.load`[alignment = alignment.value](address) - @always_inline + @always_inline("nodebug") fn load[ type: DType, //, width: Int = 1, @@ -612,7 +612,7 @@ struct UnsafePointer[ invariant=invariant, ]() - @always_inline + @always_inline("nodebug") fn store[ I: Indexer, type: DType, //, @@ -639,7 +639,7 @@ struct UnsafePointer[ constrained[mut, _must_be_mut_err]() self.offset(offset)._store[alignment=alignment, volatile=volatile](val) - @always_inline + @always_inline("nodebug") fn store[ I: Indexer, type: DType, @@ -672,7 +672,7 @@ struct UnsafePointer[ constrained[mut, _must_be_mut_err]() self.offset(offset).store[alignment=alignment, volatile=volatile](val) - @always_inline + @always_inline("nodebug") fn store[ type: DType, offset_type: DType, //, @@ -705,7 +705,7 @@ struct UnsafePointer[ val ) - @always_inline + @always_inline("nodebug") fn store[ type: DType, width: Int, From 14ee85e73111991d168b26c55ae9a3e6b6800fab Mon Sep 17 00:00:00 2001 From: Rasool Sharifi Date: Fri, 24 Jan 2025 11:12:26 -0500 Subject: [PATCH 298/509] [stdlib] Support thread block cluster for SM90+ GPUs Support Thread Block Clusters for SM90+ GPUs MODULAR_ORIG_COMMIT_REV_ID: 09bad1920d695132a6b5f2160b63000e0931e40f --- stdlib/src/sys/intrinsics.mojo | 79 +++++++++++++++++++++++++++++++++- 1 file changed, 78 insertions(+), 1 deletion(-) diff --git a/stdlib/src/sys/intrinsics.mojo b/stdlib/src/sys/intrinsics.mojo index 20c8064630..c787b9b398 100644 --- a/stdlib/src/sys/intrinsics.mojo +++ b/stdlib/src/sys/intrinsics.mojo @@ -23,7 +23,7 @@ import math from memory import AddressSpace, UnsafePointer from memory.pointer import _GPUAddressSpace - +from sys.info import _is_sm_9x from ._assembly import inlined_assembly from .info import is_nvidia_gpu, is_amd_gpu, sizeof @@ -1227,3 +1227,80 @@ struct _GridIdx: alias global_idx = _GridIdx() + + +# ===-----------------------------------------------------------------------===# +# cluster_dim +# ===-----------------------------------------------------------------------===# + + +@register_passable("trivial") +struct _ClusterDim: + """ClusterDim provides static methods for getting the x/y/z dimension of a + Cluster.""" + + @always_inline("nodebug") + fn __init__(out self): + return + + @always_inline("nodebug") + fn __getattr__[dim: StringLiteral](self) -> UInt: + """Gets the `x`, `y`, or `z` dimension of the cluster. + + Returns: + The `x`, `y`, or `z` dimension of the cluster. + """ + constrained[ + is_nvidia_gpu() and _is_sm_9x(), + "cluster_id is only supported on NVIDIA SM90+ GPUs", + ]() + constrained[ + dim in ("x", "y", "z"), "the accessor must be either x, y, or z" + ]() + + alias intrinsic_name = "llvm.nvvm.read.ptx.sreg.cluster.nctaid." + dim + return UInt( + Int(llvm_intrinsic[intrinsic_name, Int32, has_side_effect=False]()) + ) + + +alias cluster_dim = _ClusterDim() + +# ===-----------------------------------------------------------------------===# +# cluster_idx +# ===-----------------------------------------------------------------------===# + + +@register_passable("trivial") +struct _ClusterIdx: + """_ClusterIdx provides static methods for getting the x/y/z coordinates of + a cluster within a grid.""" + + @always_inline("nodebug") + fn __init__(out self): + return + + @always_inline("nodebug") + @staticmethod + fn _get_intrinsic_name[dim: StringLiteral]() -> StringLiteral: + return "llvm.nvvm.read.ptx.sreg.clusterid." + dim + + @always_inline("nodebug") + fn __getattr__[dim: StringLiteral](self) -> UInt32: + """Gets the `x`, `y`, or `z` coordinates of a cluster within a grid. + + Returns: + The `x`, `y`, or `z` coordinates of a cluster within a grid. + """ + constrained[ + is_nvidia_gpu() and _is_sm_9x(), + "cluster_id is only supported on NVIDIA SM90+ GPUs", + ]() + constrained[ + dim in ("x", "y", "z"), "the accessor must be either x, y, or z" + ]() + alias intrinsic_name = Self._get_intrinsic_name[dim]() + return llvm_intrinsic[intrinsic_name, UInt32, has_side_effect=False]() + + +alias cluster_idx = _ClusterIdx() From 699ee47c763709f0b00b707f4d3f03f07a38f0e3 Mon Sep 17 00:00:00 2001 From: Keith Smiley Date: Fri, 24 Jan 2025 12:09:42 -0800 Subject: [PATCH 299/509] [OSS] Update copyright year (#54579) MODULAR_ORIG_COMMIT_REV_ID: ab1bcce3b8c4a9e7443d1e41ba5ed84f292dd8e0 --- examples/check_mod.py | 2 +- examples/life/benchmark.mojo | 2 +- examples/life/gridv1.mojo | 2 +- examples/life/gridv2.mojo | 2 +- examples/life/lifev1.mojo | 2 +- examples/life/lifev2.mojo | 2 +- examples/life/test/test_gridv1.mojo | 2 +- examples/life/test/test_gridv2.mojo | 2 +- examples/operators/main.mojo | 2 +- examples/operators/my_complex.mojo | 2 +- examples/operators/test_my_complex.mojo | 2 +- stdlib/benchmarks/algorithm/bench_elementwise.mojo | 2 +- stdlib/benchmarks/builtin/bench_int.mojo | 2 +- stdlib/benchmarks/builtin/bench_sort.mojo | 2 +- stdlib/benchmarks/collections/bench_dict.mojo | 2 +- stdlib/benchmarks/collections/bench_string.mojo | 2 +- stdlib/benchmarks/hashlib/bench_hash.mojo | 2 +- stdlib/benchmarks/lit.cfg.py | 2 +- stdlib/benchmarks/math/bench_math.mojo | 2 +- stdlib/benchmarks/utils/bench_formatter.mojo | 2 +- stdlib/benchmarks/utils/bench_memmem.mojo | 2 +- stdlib/docs/style-guide.md | 2 +- stdlib/scripts/.markdownlint.yaml | 2 +- stdlib/scripts/build-stdlib.sh | 2 +- stdlib/scripts/check-docstrings.py | 2 +- stdlib/scripts/check_licenses.mojo | 2 +- stdlib/scripts/install-build-tools-linux.sh | 2 +- stdlib/scripts/install-build-tools-macos.sh | 2 +- stdlib/scripts/markdownlint.sh | 2 +- stdlib/scripts/run-benchmarks.sh | 4 ++-- stdlib/scripts/run-tests.sh | 4 ++-- stdlib/src/__init__.mojo | 2 +- stdlib/src/base64/__init__.mojo | 2 +- stdlib/src/base64/_b64encode.mojo | 2 +- stdlib/src/base64/base64.mojo | 2 +- stdlib/src/bit/__init__.mojo | 2 +- stdlib/src/bit/bit.mojo | 2 +- stdlib/src/builtin/__init__.mojo | 2 +- stdlib/src/builtin/_closure.mojo | 2 +- stdlib/src/builtin/_format_float.mojo | 2 +- stdlib/src/builtin/_location.mojo | 2 +- stdlib/src/builtin/_pybind.mojo | 2 +- stdlib/src/builtin/_startup.mojo | 2 +- stdlib/src/builtin/_stubs.mojo | 2 +- stdlib/src/builtin/anytype.mojo | 2 +- stdlib/src/builtin/bool.mojo | 2 +- stdlib/src/builtin/breakpoint.mojo | 2 +- stdlib/src/builtin/builtin_list.mojo | 2 +- stdlib/src/builtin/builtin_slice.mojo | 2 +- stdlib/src/builtin/char.mojo | 2 +- stdlib/src/builtin/comparable.mojo | 2 +- stdlib/src/builtin/constrained.mojo | 2 +- stdlib/src/builtin/coroutine.mojo | 2 +- stdlib/src/builtin/debug_assert.mojo | 2 +- stdlib/src/builtin/dtype.mojo | 2 +- stdlib/src/builtin/equality_comparable.mojo | 2 +- stdlib/src/builtin/error.mojo | 2 +- stdlib/src/builtin/file.mojo | 2 +- stdlib/src/builtin/file_descriptor.mojo | 2 +- stdlib/src/builtin/float_literal.mojo | 2 +- stdlib/src/builtin/floatable.mojo | 2 +- stdlib/src/builtin/format_int.mojo | 2 +- stdlib/src/builtin/identifiable.mojo | 2 +- stdlib/src/builtin/int.mojo | 2 +- stdlib/src/builtin/int_literal.mojo | 2 +- stdlib/src/builtin/io.mojo | 2 +- stdlib/src/builtin/len.mojo | 2 +- stdlib/src/builtin/math.mojo | 2 +- stdlib/src/builtin/none.mojo | 2 +- stdlib/src/builtin/object.mojo | 2 +- stdlib/src/builtin/range.mojo | 2 +- stdlib/src/builtin/rebind.mojo | 2 +- stdlib/src/builtin/repr.mojo | 2 +- stdlib/src/builtin/reversed.mojo | 2 +- stdlib/src/builtin/simd.mojo | 2 +- stdlib/src/builtin/sort.mojo | 2 +- stdlib/src/builtin/str.mojo | 2 +- stdlib/src/builtin/string_literal.mojo | 2 +- stdlib/src/builtin/swap.mojo | 2 +- stdlib/src/builtin/tuple.mojo | 2 +- stdlib/src/builtin/type_aliases.mojo | 2 +- stdlib/src/builtin/uint.mojo | 2 +- stdlib/src/builtin/value.mojo | 2 +- stdlib/src/collections/__init__.mojo | 2 +- stdlib/src/collections/_index_normalization.mojo | 2 +- stdlib/src/collections/counter.mojo | 2 +- stdlib/src/collections/deque.mojo | 2 +- stdlib/src/collections/dict.mojo | 2 +- stdlib/src/collections/inline_array.mojo | 2 +- stdlib/src/collections/inline_list.mojo | 2 +- stdlib/src/collections/linked_list.mojo | 2 +- stdlib/src/collections/list.mojo | 2 +- stdlib/src/collections/optional.mojo | 2 +- stdlib/src/collections/set.mojo | 2 +- stdlib/src/collections/string/__init__.mojo | 2 +- stdlib/src/collections/string/_unicode.mojo | 2 +- stdlib/src/collections/string/_unicode_lookups.mojo | 4 ++-- stdlib/src/collections/string/_utf8_validation.mojo | 2 +- stdlib/src/collections/string/format.mojo | 2 +- stdlib/src/collections/string/inline_string.mojo | 2 +- stdlib/src/collections/string/string.mojo | 2 +- stdlib/src/collections/string/string_slice.mojo | 2 +- stdlib/src/collections/vector.mojo | 2 +- stdlib/src/documentation/__init__.mojo | 2 +- stdlib/src/documentation/documentation.mojo | 2 +- stdlib/src/hashlib/__init__.mojo | 2 +- stdlib/src/hashlib/_ahash.mojo | 2 +- stdlib/src/hashlib/_hasher.mojo | 2 +- stdlib/src/hashlib/hash.mojo | 2 +- stdlib/src/math/__init__.mojo | 2 +- stdlib/src/math/constants.mojo | 2 +- stdlib/src/math/math.mojo | 2 +- stdlib/src/math/polynomial.mojo | 2 +- stdlib/src/memory/__init__.mojo | 2 +- stdlib/src/memory/arc.mojo | 2 +- stdlib/src/memory/maybe_uninitialized.mojo | 2 +- stdlib/src/memory/memory.mojo | 2 +- stdlib/src/memory/owned_pointer.mojo | 2 +- stdlib/src/memory/pointer.mojo | 2 +- stdlib/src/memory/span.mojo | 2 +- stdlib/src/memory/unsafe.mojo | 2 +- stdlib/src/memory/unsafe_pointer.mojo | 2 +- stdlib/src/os/__init__.mojo | 2 +- stdlib/src/os/_linux_aarch64.mojo | 2 +- stdlib/src/os/_linux_x86.mojo | 2 +- stdlib/src/os/_macos.mojo | 2 +- stdlib/src/os/_windows.mojo | 2 +- stdlib/src/os/atomic.mojo | 2 +- stdlib/src/os/env.mojo | 2 +- stdlib/src/os/fstat.mojo | 2 +- stdlib/src/os/os.mojo | 2 +- stdlib/src/os/path/__init__.mojo | 2 +- stdlib/src/os/path/path.mojo | 2 +- stdlib/src/os/pathlike.mojo | 2 +- stdlib/src/pathlib/__init__.mojo | 2 +- stdlib/src/pathlib/path.mojo | 2 +- stdlib/src/prelude/__init__.mojo | 2 +- stdlib/src/pwd/__init__.mojo | 2 +- stdlib/src/pwd/_linux.mojo | 2 +- stdlib/src/pwd/_macos.mojo | 2 +- stdlib/src/pwd/pwd.mojo | 2 +- stdlib/src/python/__init__.mojo | 2 +- stdlib/src/python/_bindings.mojo | 2 +- stdlib/src/python/_cpython.mojo | 2 +- stdlib/src/python/python.mojo | 2 +- stdlib/src/python/python_object.mojo | 2 +- stdlib/src/random/__init__.mojo | 2 +- stdlib/src/random/random.mojo | 2 +- stdlib/src/stat/__init__.mojo | 2 +- stdlib/src/stat/stat.mojo | 2 +- stdlib/src/sys/__init__.mojo | 2 +- stdlib/src/sys/_amdgpu.mojo | 2 +- stdlib/src/sys/_assembly.mojo | 2 +- stdlib/src/sys/_build.mojo | 2 +- stdlib/src/sys/_io.mojo | 2 +- stdlib/src/sys/_libc.mojo | 2 +- stdlib/src/sys/arg.mojo | 2 +- stdlib/src/sys/debug.mojo | 2 +- stdlib/src/sys/ffi.mojo | 2 +- stdlib/src/sys/info.mojo | 2 +- stdlib/src/sys/intrinsics.mojo | 2 +- stdlib/src/sys/param_env.mojo | 2 +- stdlib/src/sys/terminate.mojo | 2 +- stdlib/src/tempfile/__init__.mojo | 2 +- stdlib/src/tempfile/tempfile.mojo | 2 +- stdlib/src/testing/__init__.mojo | 2 +- stdlib/src/testing/testing.mojo | 2 +- stdlib/src/time/__init__.mojo | 2 +- stdlib/src/time/time.mojo | 2 +- stdlib/src/utils/__init__.mojo | 2 +- stdlib/src/utils/_select.mojo | 2 +- stdlib/src/utils/_serialize.mojo | 2 +- stdlib/src/utils/_visualizers.mojo | 2 +- stdlib/src/utils/index.mojo | 2 +- stdlib/src/utils/lock.mojo | 2 +- stdlib/src/utils/loop.mojo | 2 +- stdlib/src/utils/numerics.mojo | 2 +- stdlib/src/utils/static_tuple.mojo | 2 +- stdlib/src/utils/stringref.mojo | 2 +- stdlib/src/utils/variant.mojo | 2 +- stdlib/src/utils/write.mojo | 2 +- stdlib/test/base64/test_base64.mojo | 2 +- stdlib/test/bit/test_bit.mojo | 2 +- stdlib/test/builtin/test_any_all.mojo | 2 +- stdlib/test/builtin/test_bfloat16.mojo | 2 +- stdlib/test/builtin/test_bool.mojo | 2 +- stdlib/test/builtin/test_char.mojo | 2 +- stdlib/test/builtin/test_debug_assert.mojo | 2 +- stdlib/test/builtin/test_debug_assert_default_error.mojo | 2 +- stdlib/test/builtin/test_debug_assert_mode_all.mojo | 2 +- stdlib/test/builtin/test_debug_assert_mode_all_error.mojo | 2 +- stdlib/test/builtin/test_debug_assert_mode_none.mojo | 2 +- stdlib/test/builtin/test_debug_assert_warning.mojo | 2 +- stdlib/test/builtin/test_deprecation_warnings.mojo | 2 +- stdlib/test/builtin/test_dtype.mojo | 2 +- stdlib/test/builtin/test_error.mojo | 2 +- stdlib/test/builtin/test_file.mojo | 2 +- stdlib/test/builtin/test_float_literal.mojo | 2 +- stdlib/test/builtin/test_format_float.mojo | 2 +- stdlib/test/builtin/test_format_int.mojo | 2 +- stdlib/test/builtin/test_int.mojo | 2 +- stdlib/test/builtin/test_int_literal.mojo | 2 +- stdlib/test/builtin/test_issue_1004.mojo | 2 +- stdlib/test/builtin/test_issue_1505.mojo | 2 +- stdlib/test/builtin/test_issue_3908.mojo | 2 +- stdlib/test/builtin/test_list_literal.mojo | 2 +- stdlib/test/builtin/test_location.mojo | 2 +- stdlib/test/builtin/test_math.mojo | 2 +- stdlib/test/builtin/test_none.mojo | 2 +- stdlib/test/builtin/test_object.mojo | 2 +- stdlib/test/builtin/test_print.mojo | 2 +- stdlib/test/builtin/test_print_long_string.mojo | 2 +- stdlib/test/builtin/test_print_stderr.mojo | 2 +- stdlib/test/builtin/test_range.mojo | 2 +- stdlib/test/builtin/test_range_out_of_bounds.mojo | 2 +- stdlib/test/builtin/test_range_uint_reverse_range_bad.mojo | 2 +- stdlib/test/builtin/test_rebind.mojo | 2 +- stdlib/test/builtin/test_repr.mojo | 2 +- stdlib/test/builtin/test_reversed.mojo | 2 +- stdlib/test/builtin/test_simd.mojo | 2 +- stdlib/test/builtin/test_slice.mojo | 2 +- stdlib/test/builtin/test_sort.mojo | 2 +- stdlib/test/builtin/test_sort_issue_1018.mojo | 2 +- stdlib/test/builtin/test_stdin.mojo | 2 +- stdlib/test/builtin/test_str.mojo | 2 +- stdlib/test/builtin/test_string_literal.mojo | 2 +- stdlib/test/builtin/test_swap.mojo | 2 +- stdlib/test/builtin/test_tuple.mojo | 2 +- stdlib/test/builtin/test_uint.mojo | 2 +- stdlib/test/builtin/test_uint_error.mojo | 2 +- stdlib/test/collections/string/test_inlined_string.mojo | 2 +- stdlib/test/collections/string/test_string.mojo | 2 +- stdlib/test/collections/string/test_string_slice.mojo | 2 +- stdlib/test/collections/string/test_unicode.mojo | 2 +- stdlib/test/collections/test_counter.mojo | 2 +- stdlib/test/collections/test_deque.mojo | 2 +- stdlib/test/collections/test_dict.mojo | 2 +- stdlib/test/collections/test_index_normalization.mojo | 2 +- stdlib/test/collections/test_inline_array.mojo | 2 +- stdlib/test/collections/test_inline_list.mojo | 2 +- stdlib/test/collections/test_linked_list.mojo | 2 +- stdlib/test/collections/test_list.mojo | 2 +- stdlib/test/collections/test_list_getitem_invalid_index.mojo | 2 +- stdlib/test/collections/test_optional.mojo | 2 +- stdlib/test/collections/test_set.mojo | 2 +- stdlib/test/collections/test_vector.mojo | 2 +- stdlib/test/hashlib/test_ahash.mojo | 2 +- stdlib/test/hashlib/test_hash.mojo | 2 +- stdlib/test/hashlib/test_hasher.mojo | 2 +- stdlib/test/lit.cfg.py | 2 +- stdlib/test/memory/test_arc.mojo | 2 +- stdlib/test/memory/test_bitcast.mojo | 2 +- stdlib/test/memory/test_maybe_uninitialized.mojo | 2 +- stdlib/test/memory/test_memory.mojo | 2 +- stdlib/test/memory/test_owned_pointer.mojo | 2 +- stdlib/test/memory/test_reference.mojo | 2 +- stdlib/test/memory/test_span.mojo | 2 +- stdlib/test/memory/test_unsafepointer.mojo | 2 +- stdlib/test/os/path/test_basename.mojo | 2 +- stdlib/test/os/path/test_dirname.mojo | 2 +- stdlib/test/os/path/test_exists.mojo | 2 +- stdlib/test/os/path/test_expanduser.mojo | 2 +- stdlib/test/os/path/test_expandvars.mojo | 2 +- stdlib/test/os/path/test_getsize.mojo | 2 +- stdlib/test/os/path/test_isdir.mojo | 2 +- stdlib/test/os/path/test_isfile.mojo | 2 +- stdlib/test/os/path/test_islink.mojo | 2 +- stdlib/test/os/path/test_join.mojo | 2 +- stdlib/test/os/path/test_split.mojo | 2 +- stdlib/test/os/path/test_splitroot.mojo | 2 +- stdlib/test/os/test_atomic.mojo | 2 +- stdlib/test/os/test_env.mojo | 2 +- stdlib/test/os/test_listdir.mojo | 2 +- stdlib/test/os/test_mkdir_and_rmdir.mojo | 2 +- stdlib/test/os/test_no_trap.mojo | 2 +- stdlib/test/os/test_remove.mojo | 2 +- stdlib/test/os/test_stat.mojo | 2 +- stdlib/test/os/test_trap.mojo | 2 +- stdlib/test/os/test_trap_stringable.mojo | 2 +- stdlib/test/pathlib/test_pathlib.mojo | 2 +- stdlib/test/pwd/test_pwd.mojo | 2 +- stdlib/test/python/custom_indexable.py | 2 +- .../python/module_for_test_python_object_dunder_contains.py | 2 +- stdlib/test/python/my_module.py | 2 +- stdlib/test/python/test_ownership.mojo | 2 +- stdlib/test/python/test_python_cpython.mojo | 2 +- stdlib/test/python/test_python_error_handling.mojo | 2 +- stdlib/test/python/test_python_info.mojo | 2 +- stdlib/test/python/test_python_interop.mojo | 2 +- stdlib/test/python/test_python_module_create.mojo | 2 +- stdlib/test/python/test_python_object.mojo | 2 +- stdlib/test/python/test_python_object_dunder_contains.mojo | 2 +- stdlib/test/python/test_python_object_len_raises.mojo | 2 +- stdlib/test/python/test_python_to_mojo.mojo | 2 +- stdlib/test/random/test_random.mojo | 2 +- stdlib/test/sys/test_aarch64_target.mojo | 2 +- stdlib/test/sys/test_build_info_debug.mojo | 2 +- stdlib/test/sys/test_c_types.mojo | 2 +- stdlib/test/sys/test_dlhandle.mojo | 2 +- stdlib/test/sys/test_exit_0.mojo | 2 +- stdlib/test/sys/test_exit_1.mojo | 2 +- stdlib/test/sys/test_intrinsics.mojo | 2 +- stdlib/test/sys/test_invalid_paramenv.mojo | 2 +- stdlib/test/sys/test_linux_target.mojo | 2 +- stdlib/test/sys/test_macos_target.mojo | 2 +- stdlib/test/sys/test_paramenv.mojo | 2 +- stdlib/test/sys/test_targetinfo.mojo | 2 +- stdlib/test/sys/test_windows_target.mojo | 2 +- stdlib/test/tempfile/test_tempfile.mojo | 2 +- stdlib/test/test_utils/__init__.mojo | 2 +- stdlib/test/test_utils/test_utils.mojo | 2 +- stdlib/test/test_utils/types.mojo | 2 +- stdlib/test/testing/test_assert_raises.mojo | 2 +- stdlib/test/testing/test_assertion.mojo | 2 +- stdlib/test/time/test_time.mojo | 2 +- stdlib/test/utils/issue_13632.mojo | 2 +- stdlib/test/utils/test_index.mojo | 2 +- stdlib/test/utils/test_numerics.mojo | 2 +- stdlib/test/utils/test_select.mojo | 2 +- stdlib/test/utils/test_static_tuple.mojo | 2 +- stdlib/test/utils/test_stringref.mojo | 2 +- stdlib/test/utils/test_tuple.mojo | 2 +- stdlib/test/utils/test_unroll.mojo | 2 +- stdlib/test/utils/test_variant.mojo | 2 +- stdlib/test/utils/test_write.mojo | 2 +- stdlib/test/utils/test_write_to_stdout.mojo | 2 +- 326 files changed, 329 insertions(+), 329 deletions(-) diff --git a/examples/check_mod.py b/examples/check_mod.py index 26e99dc419..88ef0e75cb 100644 --- a/examples/check_mod.py +++ b/examples/check_mod.py @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/examples/life/benchmark.mojo b/examples/life/benchmark.mojo index c54c93f15b..35d58f0f6b 100644 --- a/examples/life/benchmark.mojo +++ b/examples/life/benchmark.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/examples/life/gridv1.mojo b/examples/life/gridv1.mojo index ec65b6ad74..6e5527f17a 100644 --- a/examples/life/gridv1.mojo +++ b/examples/life/gridv1.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/examples/life/gridv2.mojo b/examples/life/gridv2.mojo index fa5807974f..fc074a0e7f 100644 --- a/examples/life/gridv2.mojo +++ b/examples/life/gridv2.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/examples/life/lifev1.mojo b/examples/life/lifev1.mojo index 04e78df7c4..1b8a4a9400 100644 --- a/examples/life/lifev1.mojo +++ b/examples/life/lifev1.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/examples/life/lifev2.mojo b/examples/life/lifev2.mojo index e78306c0d9..af6ec73851 100644 --- a/examples/life/lifev2.mojo +++ b/examples/life/lifev2.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/examples/life/test/test_gridv1.mojo b/examples/life/test/test_gridv1.mojo index 19e0d4c8a0..ab149e0da7 100644 --- a/examples/life/test/test_gridv1.mojo +++ b/examples/life/test/test_gridv1.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/examples/life/test/test_gridv2.mojo b/examples/life/test/test_gridv2.mojo index cc251a9d6b..d6ca19029b 100644 --- a/examples/life/test/test_gridv2.mojo +++ b/examples/life/test/test_gridv2.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/examples/operators/main.mojo b/examples/operators/main.mojo index 09f69c3837..c26e654568 100644 --- a/examples/operators/main.mojo +++ b/examples/operators/main.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/examples/operators/my_complex.mojo b/examples/operators/my_complex.mojo index bd4d03f275..dae3cb9f86 100644 --- a/examples/operators/my_complex.mojo +++ b/examples/operators/my_complex.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/examples/operators/test_my_complex.mojo b/examples/operators/test_my_complex.mojo index 2846f01bea..61c9a2ddb9 100644 --- a/examples/operators/test_my_complex.mojo +++ b/examples/operators/test_my_complex.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/benchmarks/algorithm/bench_elementwise.mojo b/stdlib/benchmarks/algorithm/bench_elementwise.mojo index 2a302ec80f..fefe656cf6 100644 --- a/stdlib/benchmarks/algorithm/bench_elementwise.mojo +++ b/stdlib/benchmarks/algorithm/bench_elementwise.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/benchmarks/builtin/bench_int.mojo b/stdlib/benchmarks/builtin/bench_int.mojo index 7147b4a94c..8c25204216 100644 --- a/stdlib/benchmarks/builtin/bench_int.mojo +++ b/stdlib/benchmarks/builtin/bench_int.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/benchmarks/builtin/bench_sort.mojo b/stdlib/benchmarks/builtin/bench_sort.mojo index 4a4fa9d1ca..d4a1e9180b 100644 --- a/stdlib/benchmarks/builtin/bench_sort.mojo +++ b/stdlib/benchmarks/builtin/bench_sort.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/benchmarks/collections/bench_dict.mojo b/stdlib/benchmarks/collections/bench_dict.mojo index 06c6bc9364..fd23c64da8 100644 --- a/stdlib/benchmarks/collections/bench_dict.mojo +++ b/stdlib/benchmarks/collections/bench_dict.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/benchmarks/collections/bench_string.mojo b/stdlib/benchmarks/collections/bench_string.mojo index ddae0ca333..20ad75333c 100644 --- a/stdlib/benchmarks/collections/bench_string.mojo +++ b/stdlib/benchmarks/collections/bench_string.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/benchmarks/hashlib/bench_hash.mojo b/stdlib/benchmarks/hashlib/bench_hash.mojo index 0d95cc9afe..20a3b5c3c8 100644 --- a/stdlib/benchmarks/hashlib/bench_hash.mojo +++ b/stdlib/benchmarks/hashlib/bench_hash.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/benchmarks/lit.cfg.py b/stdlib/benchmarks/lit.cfg.py index a06446ab34..a05376ec63 100644 --- a/stdlib/benchmarks/lit.cfg.py +++ b/stdlib/benchmarks/lit.cfg.py @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/benchmarks/math/bench_math.mojo b/stdlib/benchmarks/math/bench_math.mojo index 3e17eaf282..8d10ed5f93 100644 --- a/stdlib/benchmarks/math/bench_math.mojo +++ b/stdlib/benchmarks/math/bench_math.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/benchmarks/utils/bench_formatter.mojo b/stdlib/benchmarks/utils/bench_formatter.mojo index 12896f3c91..6d67e9cd9b 100644 --- a/stdlib/benchmarks/utils/bench_formatter.mojo +++ b/stdlib/benchmarks/utils/bench_formatter.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/benchmarks/utils/bench_memmem.mojo b/stdlib/benchmarks/utils/bench_memmem.mojo index b3e09db5f5..1f3f5118d2 100644 --- a/stdlib/benchmarks/utils/bench_memmem.mojo +++ b/stdlib/benchmarks/utils/bench_memmem.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/docs/style-guide.md b/stdlib/docs/style-guide.md index e2298d1b66..d78c989aef 100644 --- a/stdlib/docs/style-guide.md +++ b/stdlib/docs/style-guide.md @@ -91,7 +91,7 @@ following license information header: ```mojo # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/scripts/.markdownlint.yaml b/stdlib/scripts/.markdownlint.yaml index 166f2c4656..a7e9780d79 100644 --- a/stdlib/scripts/.markdownlint.yaml +++ b/stdlib/scripts/.markdownlint.yaml @@ -1,5 +1,5 @@ ##===----------------------------------------------------------------------===## -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/scripts/build-stdlib.sh b/stdlib/scripts/build-stdlib.sh index db9c00b5a5..8bcc6c9f66 100755 --- a/stdlib/scripts/build-stdlib.sh +++ b/stdlib/scripts/build-stdlib.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash ##===----------------------------------------------------------------------===## -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/scripts/check-docstrings.py b/stdlib/scripts/check-docstrings.py index cdd5b02f98..ddba7bb42c 100644 --- a/stdlib/scripts/check-docstrings.py +++ b/stdlib/scripts/check-docstrings.py @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/scripts/check_licenses.mojo b/stdlib/scripts/check_licenses.mojo index 0b60a0f0dd..88332a3ef3 100644 --- a/stdlib/scripts/check_licenses.mojo +++ b/stdlib/scripts/check_licenses.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/scripts/install-build-tools-linux.sh b/stdlib/scripts/install-build-tools-linux.sh index f3f15d65d5..b9e62ceee9 100755 --- a/stdlib/scripts/install-build-tools-linux.sh +++ b/stdlib/scripts/install-build-tools-linux.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash ##===----------------------------------------------------------------------===## -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/scripts/install-build-tools-macos.sh b/stdlib/scripts/install-build-tools-macos.sh index a1c8ed4f71..ef1eb36388 100755 --- a/stdlib/scripts/install-build-tools-macos.sh +++ b/stdlib/scripts/install-build-tools-macos.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash ##===----------------------------------------------------------------------===## -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/scripts/markdownlint.sh b/stdlib/scripts/markdownlint.sh index 327b234b8a..f2e8615476 100755 --- a/stdlib/scripts/markdownlint.sh +++ b/stdlib/scripts/markdownlint.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash ##===----------------------------------------------------------------------===## -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/scripts/run-benchmarks.sh b/stdlib/scripts/run-benchmarks.sh index cdf265ce21..a8c1b427ba 100755 --- a/stdlib/scripts/run-benchmarks.sh +++ b/stdlib/scripts/run-benchmarks.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash ##===----------------------------------------------------------------------===## -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt @@ -32,4 +32,4 @@ if [[ $# -gt 0 ]]; then fi # Run the benchmarks sequentially -lit --succinct --show-all --workers 1 ${BENCHMARK_PATH} \ No newline at end of file +lit --succinct --show-all --workers 1 ${BENCHMARK_PATH} diff --git a/stdlib/scripts/run-tests.sh b/stdlib/scripts/run-tests.sh index a13d2e03ef..9206450aff 100755 --- a/stdlib/scripts/run-tests.sh +++ b/stdlib/scripts/run-tests.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash ##===----------------------------------------------------------------------===## -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt @@ -25,7 +25,7 @@ source "${SCRIPT_DIR}"/build-stdlib.sh echo "Packaging up the test_utils." TEST_UTILS_PATH="${REPO_ROOT}/stdlib/test/test_utils" -# This is needed to compile test_utils.mojopkg correctly, otherwise it +# This is needed to compile test_utils.mojopkg correctly, otherwise it # 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 diff --git a/stdlib/src/__init__.mojo b/stdlib/src/__init__.mojo index 9dbc5078e1..75c4f824f2 100644 --- a/stdlib/src/__init__.mojo +++ b/stdlib/src/__init__.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/src/base64/__init__.mojo b/stdlib/src/base64/__init__.mojo index 50822dfeac..7ef0adb14d 100644 --- a/stdlib/src/base64/__init__.mojo +++ b/stdlib/src/base64/__init__.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/src/base64/_b64encode.mojo b/stdlib/src/base64/_b64encode.mojo index e1a5301fa3..dd6538d4c2 100644 --- a/stdlib/src/base64/_b64encode.mojo +++ b/stdlib/src/base64/_b64encode.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/src/base64/base64.mojo b/stdlib/src/base64/base64.mojo index c126834e25..a902a710ab 100644 --- a/stdlib/src/base64/base64.mojo +++ b/stdlib/src/base64/base64.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/src/bit/__init__.mojo b/stdlib/src/bit/__init__.mojo index 891b8ea6d1..71f5c067e8 100644 --- a/stdlib/src/bit/__init__.mojo +++ b/stdlib/src/bit/__init__.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/src/bit/bit.mojo b/stdlib/src/bit/bit.mojo index e79dabaa98..d29d46459d 100644 --- a/stdlib/src/bit/bit.mojo +++ b/stdlib/src/bit/bit.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/src/builtin/__init__.mojo b/stdlib/src/builtin/__init__.mojo index 25589eb24d..eb10200bda 100644 --- a/stdlib/src/builtin/__init__.mojo +++ b/stdlib/src/builtin/__init__.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/src/builtin/_closure.mojo b/stdlib/src/builtin/_closure.mojo index c5465bdf09..36dd9c4827 100644 --- a/stdlib/src/builtin/_closure.mojo +++ b/stdlib/src/builtin/_closure.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/src/builtin/_format_float.mojo b/stdlib/src/builtin/_format_float.mojo index 690501c379..16e33a7972 100644 --- a/stdlib/src/builtin/_format_float.mojo +++ b/stdlib/src/builtin/_format_float.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/src/builtin/_location.mojo b/stdlib/src/builtin/_location.mojo index e71c5c16fe..b732585163 100644 --- a/stdlib/src/builtin/_location.mojo +++ b/stdlib/src/builtin/_location.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/src/builtin/_pybind.mojo b/stdlib/src/builtin/_pybind.mojo index 5e1d8c874c..3d1b075f4a 100644 --- a/stdlib/src/builtin/_pybind.mojo +++ b/stdlib/src/builtin/_pybind.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/src/builtin/_startup.mojo b/stdlib/src/builtin/_startup.mojo index e6efe691e0..38ad248042 100644 --- a/stdlib/src/builtin/_startup.mojo +++ b/stdlib/src/builtin/_startup.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/src/builtin/_stubs.mojo b/stdlib/src/builtin/_stubs.mojo index 8a6bcaaf16..53bb4f038a 100644 --- a/stdlib/src/builtin/_stubs.mojo +++ b/stdlib/src/builtin/_stubs.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/src/builtin/anytype.mojo b/stdlib/src/builtin/anytype.mojo index c76235fc9c..62596db5c0 100644 --- a/stdlib/src/builtin/anytype.mojo +++ b/stdlib/src/builtin/anytype.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/src/builtin/bool.mojo b/stdlib/src/builtin/bool.mojo index e83425f8e5..42ce052e0e 100644 --- a/stdlib/src/builtin/bool.mojo +++ b/stdlib/src/builtin/bool.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/src/builtin/breakpoint.mojo b/stdlib/src/builtin/breakpoint.mojo index 6797f99636..34e36cbe14 100644 --- a/stdlib/src/builtin/breakpoint.mojo +++ b/stdlib/src/builtin/breakpoint.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/src/builtin/builtin_list.mojo b/stdlib/src/builtin/builtin_list.mojo index 4486c59fbf..3d7c69ab89 100644 --- a/stdlib/src/builtin/builtin_list.mojo +++ b/stdlib/src/builtin/builtin_list.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/src/builtin/builtin_slice.mojo b/stdlib/src/builtin/builtin_slice.mojo index 094db42e69..15d460f744 100644 --- a/stdlib/src/builtin/builtin_slice.mojo +++ b/stdlib/src/builtin/builtin_slice.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/src/builtin/char.mojo b/stdlib/src/builtin/char.mojo index aa316d21a7..20d4b1c665 100644 --- a/stdlib/src/builtin/char.mojo +++ b/stdlib/src/builtin/char.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/src/builtin/comparable.mojo b/stdlib/src/builtin/comparable.mojo index 5f503487d9..9e50143445 100644 --- a/stdlib/src/builtin/comparable.mojo +++ b/stdlib/src/builtin/comparable.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/src/builtin/constrained.mojo b/stdlib/src/builtin/constrained.mojo index b50ca11e71..ac8064fa97 100644 --- a/stdlib/src/builtin/constrained.mojo +++ b/stdlib/src/builtin/constrained.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/src/builtin/coroutine.mojo b/stdlib/src/builtin/coroutine.mojo index c2c0ee1d81..879bde0157 100644 --- a/stdlib/src/builtin/coroutine.mojo +++ b/stdlib/src/builtin/coroutine.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/src/builtin/debug_assert.mojo b/stdlib/src/builtin/debug_assert.mojo index 2b62fe71a8..767400f24f 100644 --- a/stdlib/src/builtin/debug_assert.mojo +++ b/stdlib/src/builtin/debug_assert.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/src/builtin/dtype.mojo b/stdlib/src/builtin/dtype.mojo index c0ab14b399..d474424927 100644 --- a/stdlib/src/builtin/dtype.mojo +++ b/stdlib/src/builtin/dtype.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/src/builtin/equality_comparable.mojo b/stdlib/src/builtin/equality_comparable.mojo index 201df76511..b14ad719d9 100644 --- a/stdlib/src/builtin/equality_comparable.mojo +++ b/stdlib/src/builtin/equality_comparable.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/src/builtin/error.mojo b/stdlib/src/builtin/error.mojo index d550b8e7be..0e89c0ee6b 100644 --- a/stdlib/src/builtin/error.mojo +++ b/stdlib/src/builtin/error.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/src/builtin/file.mojo b/stdlib/src/builtin/file.mojo index 7851c20868..94f1724e3a 100644 --- a/stdlib/src/builtin/file.mojo +++ b/stdlib/src/builtin/file.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/src/builtin/file_descriptor.mojo b/stdlib/src/builtin/file_descriptor.mojo index beed667c63..369704f53a 100644 --- a/stdlib/src/builtin/file_descriptor.mojo +++ b/stdlib/src/builtin/file_descriptor.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/src/builtin/float_literal.mojo b/stdlib/src/builtin/float_literal.mojo index 9ddc2de605..0c7c2f3040 100644 --- a/stdlib/src/builtin/float_literal.mojo +++ b/stdlib/src/builtin/float_literal.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/src/builtin/floatable.mojo b/stdlib/src/builtin/floatable.mojo index ed921aa2a7..ecb3577adf 100644 --- a/stdlib/src/builtin/floatable.mojo +++ b/stdlib/src/builtin/floatable.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/src/builtin/format_int.mojo b/stdlib/src/builtin/format_int.mojo index 9eb4cece7d..e2879655f2 100644 --- a/stdlib/src/builtin/format_int.mojo +++ b/stdlib/src/builtin/format_int.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/src/builtin/identifiable.mojo b/stdlib/src/builtin/identifiable.mojo index 288768856d..24daedab56 100644 --- a/stdlib/src/builtin/identifiable.mojo +++ b/stdlib/src/builtin/identifiable.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/src/builtin/int.mojo b/stdlib/src/builtin/int.mojo index 367a5d507e..44aca38921 100644 --- a/stdlib/src/builtin/int.mojo +++ b/stdlib/src/builtin/int.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/src/builtin/int_literal.mojo b/stdlib/src/builtin/int_literal.mojo index c114104ea6..8c52880895 100644 --- a/stdlib/src/builtin/int_literal.mojo +++ b/stdlib/src/builtin/int_literal.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/src/builtin/io.mojo b/stdlib/src/builtin/io.mojo index b70780eeab..4271f75e0e 100644 --- a/stdlib/src/builtin/io.mojo +++ b/stdlib/src/builtin/io.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/src/builtin/len.mojo b/stdlib/src/builtin/len.mojo index 073a6f5b30..72f0ac9164 100644 --- a/stdlib/src/builtin/len.mojo +++ b/stdlib/src/builtin/len.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/src/builtin/math.mojo b/stdlib/src/builtin/math.mojo index 237d9d1301..4b2bc355ab 100644 --- a/stdlib/src/builtin/math.mojo +++ b/stdlib/src/builtin/math.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/src/builtin/none.mojo b/stdlib/src/builtin/none.mojo index c50322306c..324a4fd425 100644 --- a/stdlib/src/builtin/none.mojo +++ b/stdlib/src/builtin/none.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/src/builtin/object.mojo b/stdlib/src/builtin/object.mojo index 2f9a86c459..a1d896f9aa 100644 --- a/stdlib/src/builtin/object.mojo +++ b/stdlib/src/builtin/object.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/src/builtin/range.mojo b/stdlib/src/builtin/range.mojo index 14fb9d979b..4b84b3cb86 100644 --- a/stdlib/src/builtin/range.mojo +++ b/stdlib/src/builtin/range.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/src/builtin/rebind.mojo b/stdlib/src/builtin/rebind.mojo index baa60c0233..05dd22ed43 100644 --- a/stdlib/src/builtin/rebind.mojo +++ b/stdlib/src/builtin/rebind.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/src/builtin/repr.mojo b/stdlib/src/builtin/repr.mojo index 9fd07cdc43..59eae1d256 100644 --- a/stdlib/src/builtin/repr.mojo +++ b/stdlib/src/builtin/repr.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/src/builtin/reversed.mojo b/stdlib/src/builtin/reversed.mojo index 9e1d778299..686da90aaf 100644 --- a/stdlib/src/builtin/reversed.mojo +++ b/stdlib/src/builtin/reversed.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/src/builtin/simd.mojo b/stdlib/src/builtin/simd.mojo index ced76542c7..f3f6f493cf 100644 --- a/stdlib/src/builtin/simd.mojo +++ b/stdlib/src/builtin/simd.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/src/builtin/sort.mojo b/stdlib/src/builtin/sort.mojo index 6cce447b5c..9574568db1 100644 --- a/stdlib/src/builtin/sort.mojo +++ b/stdlib/src/builtin/sort.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/src/builtin/str.mojo b/stdlib/src/builtin/str.mojo index 63ca502625..de62e8f1a6 100644 --- a/stdlib/src/builtin/str.mojo +++ b/stdlib/src/builtin/str.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/src/builtin/string_literal.mojo b/stdlib/src/builtin/string_literal.mojo index 70c638601a..3250111b66 100644 --- a/stdlib/src/builtin/string_literal.mojo +++ b/stdlib/src/builtin/string_literal.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/src/builtin/swap.mojo b/stdlib/src/builtin/swap.mojo index 549e71e28b..7b94f4188b 100644 --- a/stdlib/src/builtin/swap.mojo +++ b/stdlib/src/builtin/swap.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/src/builtin/tuple.mojo b/stdlib/src/builtin/tuple.mojo index 57a7950944..d0d3088582 100644 --- a/stdlib/src/builtin/tuple.mojo +++ b/stdlib/src/builtin/tuple.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/src/builtin/type_aliases.mojo b/stdlib/src/builtin/type_aliases.mojo index 762746f8c2..758b459304 100644 --- a/stdlib/src/builtin/type_aliases.mojo +++ b/stdlib/src/builtin/type_aliases.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/src/builtin/uint.mojo b/stdlib/src/builtin/uint.mojo index afbc0b47fc..8a5a02e822 100644 --- a/stdlib/src/builtin/uint.mojo +++ b/stdlib/src/builtin/uint.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/src/builtin/value.mojo b/stdlib/src/builtin/value.mojo index 81e984ce74..a96e88d045 100644 --- a/stdlib/src/builtin/value.mojo +++ b/stdlib/src/builtin/value.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/src/collections/__init__.mojo b/stdlib/src/collections/__init__.mojo index 123ed4db6b..cf70c2bf18 100644 --- a/stdlib/src/collections/__init__.mojo +++ b/stdlib/src/collections/__init__.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/src/collections/_index_normalization.mojo b/stdlib/src/collections/_index_normalization.mojo index 367a98d306..80da530acc 100644 --- a/stdlib/src/collections/_index_normalization.mojo +++ b/stdlib/src/collections/_index_normalization.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/src/collections/counter.mojo b/stdlib/src/collections/counter.mojo index fc2e4fea03..cd74f579c0 100644 --- a/stdlib/src/collections/counter.mojo +++ b/stdlib/src/collections/counter.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/src/collections/deque.mojo b/stdlib/src/collections/deque.mojo index f563976b2b..279867a1f3 100644 --- a/stdlib/src/collections/deque.mojo +++ b/stdlib/src/collections/deque.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/src/collections/dict.mojo b/stdlib/src/collections/dict.mojo index 3b64da3aab..06b082f450 100644 --- a/stdlib/src/collections/dict.mojo +++ b/stdlib/src/collections/dict.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/src/collections/inline_array.mojo b/stdlib/src/collections/inline_array.mojo index c016632e95..3d0a175073 100644 --- a/stdlib/src/collections/inline_array.mojo +++ b/stdlib/src/collections/inline_array.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/src/collections/inline_list.mojo b/stdlib/src/collections/inline_list.mojo index 0ff105a6c1..bf17dfa8ba 100644 --- a/stdlib/src/collections/inline_list.mojo +++ b/stdlib/src/collections/inline_list.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/src/collections/linked_list.mojo b/stdlib/src/collections/linked_list.mojo index cb2e362749..5da1228a80 100644 --- a/stdlib/src/collections/linked_list.mojo +++ b/stdlib/src/collections/linked_list.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/src/collections/list.mojo b/stdlib/src/collections/list.mojo index aedb0f4612..306334eb42 100644 --- a/stdlib/src/collections/list.mojo +++ b/stdlib/src/collections/list.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/src/collections/optional.mojo b/stdlib/src/collections/optional.mojo index 806119a053..48e35c788b 100644 --- a/stdlib/src/collections/optional.mojo +++ b/stdlib/src/collections/optional.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/src/collections/set.mojo b/stdlib/src/collections/set.mojo index 0defaa9f51..dcd9cc8b7e 100644 --- a/stdlib/src/collections/set.mojo +++ b/stdlib/src/collections/set.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/src/collections/string/__init__.mojo b/stdlib/src/collections/string/__init__.mojo index cfa4894938..184b0656b1 100644 --- a/stdlib/src/collections/string/__init__.mojo +++ b/stdlib/src/collections/string/__init__.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/src/collections/string/_unicode.mojo b/stdlib/src/collections/string/_unicode.mojo index f9acb9db7d..d5ac9972c9 100644 --- a/stdlib/src/collections/string/_unicode.mojo +++ b/stdlib/src/collections/string/_unicode.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/src/collections/string/_unicode_lookups.mojo b/stdlib/src/collections/string/_unicode_lookups.mojo index bb05d05582..024da89c7a 100644 --- a/stdlib/src/collections/string/_unicode_lookups.mojo +++ b/stdlib/src/collections/string/_unicode_lookups.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt @@ -259,7 +259,7 @@ alias has_uppercase_mapping = List[UInt32, hint_trivial_type=True]( 0x0292, # LATIN SMALL LETTER EZH ʒ 0x029D, # LATIN SMALL LETTER J WITH CROSSED-TAIL ʝ 0x029E, # LATIN SMALL LETTER TURNED K ʞ - 0x0345, # COMBINING GREEK YPOGEGRAMMENI ͅ + 0x0345, # COMBINING GREEK YPOGEGRAMMENI 0x0371, # GREEK SMALL LETTER HETA ͱ 0x0373, # GREEK SMALL LETTER ARCHAIC SAMPI ͳ 0x0377, # GREEK SMALL LETTER PAMPHYLIAN DIGAMMA ͷ diff --git a/stdlib/src/collections/string/_utf8_validation.mojo b/stdlib/src/collections/string/_utf8_validation.mojo index 31327dce89..b0bf4f94f8 100644 --- a/stdlib/src/collections/string/_utf8_validation.mojo +++ b/stdlib/src/collections/string/_utf8_validation.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/src/collections/string/format.mojo b/stdlib/src/collections/string/format.mojo index ad358a028e..b77ea15260 100644 --- a/stdlib/src/collections/string/format.mojo +++ b/stdlib/src/collections/string/format.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/src/collections/string/inline_string.mojo b/stdlib/src/collections/string/inline_string.mojo index f05bb63504..28304f1418 100644 --- a/stdlib/src/collections/string/inline_string.mojo +++ b/stdlib/src/collections/string/inline_string.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/src/collections/string/string.mojo b/stdlib/src/collections/string/string.mojo index d310637df8..bfe956985e 100644 --- a/stdlib/src/collections/string/string.mojo +++ b/stdlib/src/collections/string/string.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/src/collections/string/string_slice.mojo b/stdlib/src/collections/string/string_slice.mojo index 34d7a71643..ed6939b8f5 100644 --- a/stdlib/src/collections/string/string_slice.mojo +++ b/stdlib/src/collections/string/string_slice.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/src/collections/vector.mojo b/stdlib/src/collections/vector.mojo index 6beb0ef3b6..3895bdacc0 100644 --- a/stdlib/src/collections/vector.mojo +++ b/stdlib/src/collections/vector.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/src/documentation/__init__.mojo b/stdlib/src/documentation/__init__.mojo index f307558aa3..2e4bc54ad8 100644 --- a/stdlib/src/documentation/__init__.mojo +++ b/stdlib/src/documentation/__init__.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/src/documentation/documentation.mojo b/stdlib/src/documentation/documentation.mojo index 69ea07675c..244961142a 100644 --- a/stdlib/src/documentation/documentation.mojo +++ b/stdlib/src/documentation/documentation.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/src/hashlib/__init__.mojo b/stdlib/src/hashlib/__init__.mojo index 9de67db15d..f8ee4b7597 100644 --- a/stdlib/src/hashlib/__init__.mojo +++ b/stdlib/src/hashlib/__init__.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/src/hashlib/_ahash.mojo b/stdlib/src/hashlib/_ahash.mojo index 56488c9a8d..c2a2e39f27 100644 --- a/stdlib/src/hashlib/_ahash.mojo +++ b/stdlib/src/hashlib/_ahash.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/src/hashlib/_hasher.mojo b/stdlib/src/hashlib/_hasher.mojo index f30e4de21a..8f22ee9f01 100644 --- a/stdlib/src/hashlib/_hasher.mojo +++ b/stdlib/src/hashlib/_hasher.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/src/hashlib/hash.mojo b/stdlib/src/hashlib/hash.mojo index 315cc056bb..d4741218b2 100644 --- a/stdlib/src/hashlib/hash.mojo +++ b/stdlib/src/hashlib/hash.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/src/math/__init__.mojo b/stdlib/src/math/__init__.mojo index 54b918a837..e78962f86e 100644 --- a/stdlib/src/math/__init__.mojo +++ b/stdlib/src/math/__init__.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/src/math/constants.mojo b/stdlib/src/math/constants.mojo index d24c05e8f3..1653742bf2 100644 --- a/stdlib/src/math/constants.mojo +++ b/stdlib/src/math/constants.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/src/math/math.mojo b/stdlib/src/math/math.mojo index d2acffd50a..d08a7be526 100644 --- a/stdlib/src/math/math.mojo +++ b/stdlib/src/math/math.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/src/math/polynomial.mojo b/stdlib/src/math/polynomial.mojo index 35384d33c1..0f83d695be 100644 --- a/stdlib/src/math/polynomial.mojo +++ b/stdlib/src/math/polynomial.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/src/memory/__init__.mojo b/stdlib/src/memory/__init__.mojo index 80684d45b5..5e05450197 100644 --- a/stdlib/src/memory/__init__.mojo +++ b/stdlib/src/memory/__init__.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/src/memory/arc.mojo b/stdlib/src/memory/arc.mojo index 6178892617..f102fb135c 100644 --- a/stdlib/src/memory/arc.mojo +++ b/stdlib/src/memory/arc.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/src/memory/maybe_uninitialized.mojo b/stdlib/src/memory/maybe_uninitialized.mojo index 9ebf803bcb..91aba0f283 100644 --- a/stdlib/src/memory/maybe_uninitialized.mojo +++ b/stdlib/src/memory/maybe_uninitialized.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/src/memory/memory.mojo b/stdlib/src/memory/memory.mojo index b4fd7eef12..39358ac24d 100644 --- a/stdlib/src/memory/memory.mojo +++ b/stdlib/src/memory/memory.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/src/memory/owned_pointer.mojo b/stdlib/src/memory/owned_pointer.mojo index fde72fa4bd..8509e08914 100644 --- a/stdlib/src/memory/owned_pointer.mojo +++ b/stdlib/src/memory/owned_pointer.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/src/memory/pointer.mojo b/stdlib/src/memory/pointer.mojo index 54f60a1330..ef132bc0c0 100644 --- a/stdlib/src/memory/pointer.mojo +++ b/stdlib/src/memory/pointer.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/src/memory/span.mojo b/stdlib/src/memory/span.mojo index 6657aba8b4..58c769c698 100644 --- a/stdlib/src/memory/span.mojo +++ b/stdlib/src/memory/span.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/src/memory/unsafe.mojo b/stdlib/src/memory/unsafe.mojo index 2d83992bfb..d265f61d4e 100644 --- a/stdlib/src/memory/unsafe.mojo +++ b/stdlib/src/memory/unsafe.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/src/memory/unsafe_pointer.mojo b/stdlib/src/memory/unsafe_pointer.mojo index eafee8084a..11076f3168 100644 --- a/stdlib/src/memory/unsafe_pointer.mojo +++ b/stdlib/src/memory/unsafe_pointer.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/src/os/__init__.mojo b/stdlib/src/os/__init__.mojo index c07761b658..9f69d07d2e 100644 --- a/stdlib/src/os/__init__.mojo +++ b/stdlib/src/os/__init__.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/src/os/_linux_aarch64.mojo b/stdlib/src/os/_linux_aarch64.mojo index f4c9f62789..c4c1cbc3ab 100644 --- a/stdlib/src/os/_linux_aarch64.mojo +++ b/stdlib/src/os/_linux_aarch64.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/src/os/_linux_x86.mojo b/stdlib/src/os/_linux_x86.mojo index ece0de56d8..24f90695e0 100644 --- a/stdlib/src/os/_linux_x86.mojo +++ b/stdlib/src/os/_linux_x86.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/src/os/_macos.mojo b/stdlib/src/os/_macos.mojo index 8558ca764e..13f2bd8beb 100644 --- a/stdlib/src/os/_macos.mojo +++ b/stdlib/src/os/_macos.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/src/os/_windows.mojo b/stdlib/src/os/_windows.mojo index d993812cdf..9abf7ca57b 100644 --- a/stdlib/src/os/_windows.mojo +++ b/stdlib/src/os/_windows.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/src/os/atomic.mojo b/stdlib/src/os/atomic.mojo index 3b1088fcce..9025788480 100644 --- a/stdlib/src/os/atomic.mojo +++ b/stdlib/src/os/atomic.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/src/os/env.mojo b/stdlib/src/os/env.mojo index b0403ca378..0ccec33950 100644 --- a/stdlib/src/os/env.mojo +++ b/stdlib/src/os/env.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/src/os/fstat.mojo b/stdlib/src/os/fstat.mojo index fb683155da..133e5c702d 100644 --- a/stdlib/src/os/fstat.mojo +++ b/stdlib/src/os/fstat.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/src/os/os.mojo b/stdlib/src/os/os.mojo index 81ebad842f..30c1880ab4 100644 --- a/stdlib/src/os/os.mojo +++ b/stdlib/src/os/os.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/src/os/path/__init__.mojo b/stdlib/src/os/path/__init__.mojo index ef6694482a..aea777a082 100644 --- a/stdlib/src/os/path/__init__.mojo +++ b/stdlib/src/os/path/__init__.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/src/os/path/path.mojo b/stdlib/src/os/path/path.mojo index 139e77d681..79f51707c9 100644 --- a/stdlib/src/os/path/path.mojo +++ b/stdlib/src/os/path/path.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/src/os/pathlike.mojo b/stdlib/src/os/pathlike.mojo index c01f08d03c..0353a4927d 100644 --- a/stdlib/src/os/pathlike.mojo +++ b/stdlib/src/os/pathlike.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/src/pathlib/__init__.mojo b/stdlib/src/pathlib/__init__.mojo index bfc08df541..9e0369dac3 100644 --- a/stdlib/src/pathlib/__init__.mojo +++ b/stdlib/src/pathlib/__init__.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/src/pathlib/path.mojo b/stdlib/src/pathlib/path.mojo index cec42c48b3..353c0a6ece 100644 --- a/stdlib/src/pathlib/path.mojo +++ b/stdlib/src/pathlib/path.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/src/prelude/__init__.mojo b/stdlib/src/prelude/__init__.mojo index 48540a9805..72de0eea4f 100644 --- a/stdlib/src/prelude/__init__.mojo +++ b/stdlib/src/prelude/__init__.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/src/pwd/__init__.mojo b/stdlib/src/pwd/__init__.mojo index 088bffae14..b0bfeb6ffb 100644 --- a/stdlib/src/pwd/__init__.mojo +++ b/stdlib/src/pwd/__init__.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/src/pwd/_linux.mojo b/stdlib/src/pwd/_linux.mojo index 282de1f60a..0bc59866a6 100644 --- a/stdlib/src/pwd/_linux.mojo +++ b/stdlib/src/pwd/_linux.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/src/pwd/_macos.mojo b/stdlib/src/pwd/_macos.mojo index b09f615d3f..d35f056153 100644 --- a/stdlib/src/pwd/_macos.mojo +++ b/stdlib/src/pwd/_macos.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/src/pwd/pwd.mojo b/stdlib/src/pwd/pwd.mojo index 105b26e7f2..29da5cadf9 100644 --- a/stdlib/src/pwd/pwd.mojo +++ b/stdlib/src/pwd/pwd.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/src/python/__init__.mojo b/stdlib/src/python/__init__.mojo index f8d0d9d73c..c2f50d721e 100644 --- a/stdlib/src/python/__init__.mojo +++ b/stdlib/src/python/__init__.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/src/python/_bindings.mojo b/stdlib/src/python/_bindings.mojo index 2d0156aa70..73e877a9f8 100644 --- a/stdlib/src/python/_bindings.mojo +++ b/stdlib/src/python/_bindings.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/src/python/_cpython.mojo b/stdlib/src/python/_cpython.mojo index 52b7d58343..264a7f1536 100644 --- a/stdlib/src/python/_cpython.mojo +++ b/stdlib/src/python/_cpython.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/src/python/python.mojo b/stdlib/src/python/python.mojo index e5c774c2e5..5c7ad725bf 100644 --- a/stdlib/src/python/python.mojo +++ b/stdlib/src/python/python.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/src/python/python_object.mojo b/stdlib/src/python/python_object.mojo index 86081cd0d0..cf729e0edf 100644 --- a/stdlib/src/python/python_object.mojo +++ b/stdlib/src/python/python_object.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/src/random/__init__.mojo b/stdlib/src/random/__init__.mojo index 231b4a115f..168199f104 100644 --- a/stdlib/src/random/__init__.mojo +++ b/stdlib/src/random/__init__.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/src/random/random.mojo b/stdlib/src/random/random.mojo index 96c6fdb6dd..c51d8bec16 100644 --- a/stdlib/src/random/random.mojo +++ b/stdlib/src/random/random.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/src/stat/__init__.mojo b/stdlib/src/stat/__init__.mojo index 326f82daed..4244faa27d 100644 --- a/stdlib/src/stat/__init__.mojo +++ b/stdlib/src/stat/__init__.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/src/stat/stat.mojo b/stdlib/src/stat/stat.mojo index c9ffba910b..3ea5b8f149 100644 --- a/stdlib/src/stat/stat.mojo +++ b/stdlib/src/stat/stat.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/src/sys/__init__.mojo b/stdlib/src/sys/__init__.mojo index b0777f5c6e..5c9fbd6fb1 100644 --- a/stdlib/src/sys/__init__.mojo +++ b/stdlib/src/sys/__init__.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/src/sys/_amdgpu.mojo b/stdlib/src/sys/_amdgpu.mojo index f3a55fcae2..2fa98df525 100644 --- a/stdlib/src/sys/_amdgpu.mojo +++ b/stdlib/src/sys/_amdgpu.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/src/sys/_assembly.mojo b/stdlib/src/sys/_assembly.mojo index c48f518cd6..ffbf096aac 100644 --- a/stdlib/src/sys/_assembly.mojo +++ b/stdlib/src/sys/_assembly.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/src/sys/_build.mojo b/stdlib/src/sys/_build.mojo index 241b36bb2f..50948c537e 100644 --- a/stdlib/src/sys/_build.mojo +++ b/stdlib/src/sys/_build.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/src/sys/_io.mojo b/stdlib/src/sys/_io.mojo index eaffb4ce08..8da36c28d5 100644 --- a/stdlib/src/sys/_io.mojo +++ b/stdlib/src/sys/_io.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/src/sys/_libc.mojo b/stdlib/src/sys/_libc.mojo index ca0104d19c..e951d7beb5 100644 --- a/stdlib/src/sys/_libc.mojo +++ b/stdlib/src/sys/_libc.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/src/sys/arg.mojo b/stdlib/src/sys/arg.mojo index df777a5adf..b9140ffb3b 100644 --- a/stdlib/src/sys/arg.mojo +++ b/stdlib/src/sys/arg.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/src/sys/debug.mojo b/stdlib/src/sys/debug.mojo index fad5ba972e..118da2865f 100644 --- a/stdlib/src/sys/debug.mojo +++ b/stdlib/src/sys/debug.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/src/sys/ffi.mojo b/stdlib/src/sys/ffi.mojo index 2485f81af5..bd515a899e 100644 --- a/stdlib/src/sys/ffi.mojo +++ b/stdlib/src/sys/ffi.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/src/sys/info.mojo b/stdlib/src/sys/info.mojo index b25fd15142..460f5754b2 100644 --- a/stdlib/src/sys/info.mojo +++ b/stdlib/src/sys/info.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/src/sys/intrinsics.mojo b/stdlib/src/sys/intrinsics.mojo index c787b9b398..653e772849 100644 --- a/stdlib/src/sys/intrinsics.mojo +++ b/stdlib/src/sys/intrinsics.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/src/sys/param_env.mojo b/stdlib/src/sys/param_env.mojo index fe52fd660e..06f55888f5 100644 --- a/stdlib/src/sys/param_env.mojo +++ b/stdlib/src/sys/param_env.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/src/sys/terminate.mojo b/stdlib/src/sys/terminate.mojo index fb78b0e59c..c11089ff1c 100644 --- a/stdlib/src/sys/terminate.mojo +++ b/stdlib/src/sys/terminate.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/src/tempfile/__init__.mojo b/stdlib/src/tempfile/__init__.mojo index 8ca33ac0ab..c76f2b9100 100644 --- a/stdlib/src/tempfile/__init__.mojo +++ b/stdlib/src/tempfile/__init__.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/src/tempfile/tempfile.mojo b/stdlib/src/tempfile/tempfile.mojo index e298462290..92bbd07f39 100644 --- a/stdlib/src/tempfile/tempfile.mojo +++ b/stdlib/src/tempfile/tempfile.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/src/testing/__init__.mojo b/stdlib/src/testing/__init__.mojo index 79c2180d4d..a12626f82c 100644 --- a/stdlib/src/testing/__init__.mojo +++ b/stdlib/src/testing/__init__.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/src/testing/testing.mojo b/stdlib/src/testing/testing.mojo index 8d1e2d9f08..974742e30f 100644 --- a/stdlib/src/testing/testing.mojo +++ b/stdlib/src/testing/testing.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/src/time/__init__.mojo b/stdlib/src/time/__init__.mojo index 6e5097653a..4a641f36db 100644 --- a/stdlib/src/time/__init__.mojo +++ b/stdlib/src/time/__init__.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/src/time/time.mojo b/stdlib/src/time/time.mojo index cc7a450245..25cd4eca67 100644 --- a/stdlib/src/time/time.mojo +++ b/stdlib/src/time/time.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/src/utils/__init__.mojo b/stdlib/src/utils/__init__.mojo index 2e3a0ea21f..2521ef4b8d 100644 --- a/stdlib/src/utils/__init__.mojo +++ b/stdlib/src/utils/__init__.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/src/utils/_select.mojo b/stdlib/src/utils/_select.mojo index 46746f0a5f..7ccaca72c8 100644 --- a/stdlib/src/utils/_select.mojo +++ b/stdlib/src/utils/_select.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/src/utils/_serialize.mojo b/stdlib/src/utils/_serialize.mojo index e013cc6ea8..820281603a 100644 --- a/stdlib/src/utils/_serialize.mojo +++ b/stdlib/src/utils/_serialize.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/src/utils/_visualizers.mojo b/stdlib/src/utils/_visualizers.mojo index 6a62a7d6af..e881b06deb 100644 --- a/stdlib/src/utils/_visualizers.mojo +++ b/stdlib/src/utils/_visualizers.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/src/utils/index.mojo b/stdlib/src/utils/index.mojo index 5a1d0c1aed..0bfe17b8b5 100644 --- a/stdlib/src/utils/index.mojo +++ b/stdlib/src/utils/index.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/src/utils/lock.mojo b/stdlib/src/utils/lock.mojo index 4648552302..f26699c226 100644 --- a/stdlib/src/utils/lock.mojo +++ b/stdlib/src/utils/lock.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/src/utils/loop.mojo b/stdlib/src/utils/loop.mojo index 1d61112379..1f8af421a5 100644 --- a/stdlib/src/utils/loop.mojo +++ b/stdlib/src/utils/loop.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/src/utils/numerics.mojo b/stdlib/src/utils/numerics.mojo index 4d01169865..d39f43cee9 100644 --- a/stdlib/src/utils/numerics.mojo +++ b/stdlib/src/utils/numerics.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/src/utils/static_tuple.mojo b/stdlib/src/utils/static_tuple.mojo index 3808906c12..d38e08fbe1 100644 --- a/stdlib/src/utils/static_tuple.mojo +++ b/stdlib/src/utils/static_tuple.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/src/utils/stringref.mojo b/stdlib/src/utils/stringref.mojo index 1b3666a52a..295dd70c9a 100644 --- a/stdlib/src/utils/stringref.mojo +++ b/stdlib/src/utils/stringref.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/src/utils/variant.mojo b/stdlib/src/utils/variant.mojo index 0a9b66979d..d79a81fd1b 100644 --- a/stdlib/src/utils/variant.mojo +++ b/stdlib/src/utils/variant.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/src/utils/write.mojo b/stdlib/src/utils/write.mojo index e5b4f16128..0e522bf921 100644 --- a/stdlib/src/utils/write.mojo +++ b/stdlib/src/utils/write.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/test/base64/test_base64.mojo b/stdlib/test/base64/test_base64.mojo index 6512844905..3b630f73f8 100644 --- a/stdlib/test/base64/test_base64.mojo +++ b/stdlib/test/base64/test_base64.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/test/bit/test_bit.mojo b/stdlib/test/bit/test_bit.mojo index 73f8bd4054..10041b6ec2 100644 --- a/stdlib/test/bit/test_bit.mojo +++ b/stdlib/test/bit/test_bit.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/test/builtin/test_any_all.mojo b/stdlib/test/builtin/test_any_all.mojo index 4fbf993fe7..2531946416 100644 --- a/stdlib/test/builtin/test_any_all.mojo +++ b/stdlib/test/builtin/test_any_all.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/test/builtin/test_bfloat16.mojo b/stdlib/test/builtin/test_bfloat16.mojo index 8295f30970..88a0bdaca2 100644 --- a/stdlib/test/builtin/test_bfloat16.mojo +++ b/stdlib/test/builtin/test_bfloat16.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/test/builtin/test_bool.mojo b/stdlib/test/builtin/test_bool.mojo index 081a31bc38..e7378e0e67 100644 --- a/stdlib/test/builtin/test_bool.mojo +++ b/stdlib/test/builtin/test_bool.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/test/builtin/test_char.mojo b/stdlib/test/builtin/test_char.mojo index ce52119ad1..2af35ad639 100644 --- a/stdlib/test/builtin/test_char.mojo +++ b/stdlib/test/builtin/test_char.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/test/builtin/test_debug_assert.mojo b/stdlib/test/builtin/test_debug_assert.mojo index 6d8ceb57f3..db8a49ea84 100644 --- a/stdlib/test/builtin/test_debug_assert.mojo +++ b/stdlib/test/builtin/test_debug_assert.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/test/builtin/test_debug_assert_default_error.mojo b/stdlib/test/builtin/test_debug_assert_default_error.mojo index 6b5ef51e0e..1e6ea95e68 100644 --- a/stdlib/test/builtin/test_debug_assert_default_error.mojo +++ b/stdlib/test/builtin/test_debug_assert_default_error.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/test/builtin/test_debug_assert_mode_all.mojo b/stdlib/test/builtin/test_debug_assert_mode_all.mojo index f6eaa9bf09..3aa029190c 100644 --- a/stdlib/test/builtin/test_debug_assert_mode_all.mojo +++ b/stdlib/test/builtin/test_debug_assert_mode_all.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/test/builtin/test_debug_assert_mode_all_error.mojo b/stdlib/test/builtin/test_debug_assert_mode_all_error.mojo index 88e11c0ad8..02c0fa9a19 100644 --- a/stdlib/test/builtin/test_debug_assert_mode_all_error.mojo +++ b/stdlib/test/builtin/test_debug_assert_mode_all_error.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/test/builtin/test_debug_assert_mode_none.mojo b/stdlib/test/builtin/test_debug_assert_mode_none.mojo index e94fdca644..b09312ba4a 100644 --- a/stdlib/test/builtin/test_debug_assert_mode_none.mojo +++ b/stdlib/test/builtin/test_debug_assert_mode_none.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/test/builtin/test_debug_assert_warning.mojo b/stdlib/test/builtin/test_debug_assert_warning.mojo index faa4530b38..9af8882262 100644 --- a/stdlib/test/builtin/test_debug_assert_warning.mojo +++ b/stdlib/test/builtin/test_debug_assert_warning.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/test/builtin/test_deprecation_warnings.mojo b/stdlib/test/builtin/test_deprecation_warnings.mojo index 46499a0d89..f8a604f6ee 100644 --- a/stdlib/test/builtin/test_deprecation_warnings.mojo +++ b/stdlib/test/builtin/test_deprecation_warnings.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/test/builtin/test_dtype.mojo b/stdlib/test/builtin/test_dtype.mojo index eba0e13117..63c66e5aba 100644 --- a/stdlib/test/builtin/test_dtype.mojo +++ b/stdlib/test/builtin/test_dtype.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/test/builtin/test_error.mojo b/stdlib/test/builtin/test_error.mojo index 70dea916e7..6e658da9d2 100644 --- a/stdlib/test/builtin/test_error.mojo +++ b/stdlib/test/builtin/test_error.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/test/builtin/test_file.mojo b/stdlib/test/builtin/test_file.mojo index 7b23687430..9a1ac995dc 100644 --- a/stdlib/test/builtin/test_file.mojo +++ b/stdlib/test/builtin/test_file.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/test/builtin/test_float_literal.mojo b/stdlib/test/builtin/test_float_literal.mojo index 1723e8cd9c..c6c790a4d7 100644 --- a/stdlib/test/builtin/test_float_literal.mojo +++ b/stdlib/test/builtin/test_float_literal.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/test/builtin/test_format_float.mojo b/stdlib/test/builtin/test_format_float.mojo index 7c022ec74b..596d7f7da9 100644 --- a/stdlib/test/builtin/test_format_float.mojo +++ b/stdlib/test/builtin/test_format_float.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/test/builtin/test_format_int.mojo b/stdlib/test/builtin/test_format_int.mojo index 990f0feb9d..94a1e495eb 100644 --- a/stdlib/test/builtin/test_format_int.mojo +++ b/stdlib/test/builtin/test_format_int.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/test/builtin/test_int.mojo b/stdlib/test/builtin/test_int.mojo index d2d0149413..a89697d3b6 100644 --- a/stdlib/test/builtin/test_int.mojo +++ b/stdlib/test/builtin/test_int.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/test/builtin/test_int_literal.mojo b/stdlib/test/builtin/test_int_literal.mojo index 8bc148e4fd..f39dd53625 100644 --- a/stdlib/test/builtin/test_int_literal.mojo +++ b/stdlib/test/builtin/test_int_literal.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/test/builtin/test_issue_1004.mojo b/stdlib/test/builtin/test_issue_1004.mojo index db6ed5f61d..f6cfe49792 100644 --- a/stdlib/test/builtin/test_issue_1004.mojo +++ b/stdlib/test/builtin/test_issue_1004.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/test/builtin/test_issue_1505.mojo b/stdlib/test/builtin/test_issue_1505.mojo index 25f8f32e6f..f76f0dc4a8 100644 --- a/stdlib/test/builtin/test_issue_1505.mojo +++ b/stdlib/test/builtin/test_issue_1505.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/test/builtin/test_issue_3908.mojo b/stdlib/test/builtin/test_issue_3908.mojo index 3e468a428f..e32febf536 100644 --- a/stdlib/test/builtin/test_issue_3908.mojo +++ b/stdlib/test/builtin/test_issue_3908.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/test/builtin/test_list_literal.mojo b/stdlib/test/builtin/test_list_literal.mojo index 309a831b24..bb17ea1674 100644 --- a/stdlib/test/builtin/test_list_literal.mojo +++ b/stdlib/test/builtin/test_list_literal.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/test/builtin/test_location.mojo b/stdlib/test/builtin/test_location.mojo index 29c7e40401..98c01064da 100644 --- a/stdlib/test/builtin/test_location.mojo +++ b/stdlib/test/builtin/test_location.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/test/builtin/test_math.mojo b/stdlib/test/builtin/test_math.mojo index ec1304b926..cce327f532 100644 --- a/stdlib/test/builtin/test_math.mojo +++ b/stdlib/test/builtin/test_math.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/test/builtin/test_none.mojo b/stdlib/test/builtin/test_none.mojo index 8c153ad329..792b1013db 100644 --- a/stdlib/test/builtin/test_none.mojo +++ b/stdlib/test/builtin/test_none.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/test/builtin/test_object.mojo b/stdlib/test/builtin/test_object.mojo index 848fdbbb76..877002611f 100644 --- a/stdlib/test/builtin/test_object.mojo +++ b/stdlib/test/builtin/test_object.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/test/builtin/test_print.mojo b/stdlib/test/builtin/test_print.mojo index 070db4066b..b2ca0dd2e0 100644 --- a/stdlib/test/builtin/test_print.mojo +++ b/stdlib/test/builtin/test_print.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/test/builtin/test_print_long_string.mojo b/stdlib/test/builtin/test_print_long_string.mojo index 34ec28f52b..b667d22088 100644 --- a/stdlib/test/builtin/test_print_long_string.mojo +++ b/stdlib/test/builtin/test_print_long_string.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/test/builtin/test_print_stderr.mojo b/stdlib/test/builtin/test_print_stderr.mojo index f053a86588..29437bd16b 100644 --- a/stdlib/test/builtin/test_print_stderr.mojo +++ b/stdlib/test/builtin/test_print_stderr.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/test/builtin/test_range.mojo b/stdlib/test/builtin/test_range.mojo index f9535b288e..15d8247bda 100644 --- a/stdlib/test/builtin/test_range.mojo +++ b/stdlib/test/builtin/test_range.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/test/builtin/test_range_out_of_bounds.mojo b/stdlib/test/builtin/test_range_out_of_bounds.mojo index 19c0f5d694..146f25f6f4 100644 --- a/stdlib/test/builtin/test_range_out_of_bounds.mojo +++ b/stdlib/test/builtin/test_range_out_of_bounds.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/test/builtin/test_range_uint_reverse_range_bad.mojo b/stdlib/test/builtin/test_range_uint_reverse_range_bad.mojo index 87f52e2cd3..4a86d94438 100644 --- a/stdlib/test/builtin/test_range_uint_reverse_range_bad.mojo +++ b/stdlib/test/builtin/test_range_uint_reverse_range_bad.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/test/builtin/test_rebind.mojo b/stdlib/test/builtin/test_rebind.mojo index 0d73aee2af..15451c6d91 100644 --- a/stdlib/test/builtin/test_rebind.mojo +++ b/stdlib/test/builtin/test_rebind.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/test/builtin/test_repr.mojo b/stdlib/test/builtin/test_repr.mojo index 9242af9169..0ed874974f 100644 --- a/stdlib/test/builtin/test_repr.mojo +++ b/stdlib/test/builtin/test_repr.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/test/builtin/test_reversed.mojo b/stdlib/test/builtin/test_reversed.mojo index 790619c6c4..4afa16b578 100644 --- a/stdlib/test/builtin/test_reversed.mojo +++ b/stdlib/test/builtin/test_reversed.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/test/builtin/test_simd.mojo b/stdlib/test/builtin/test_simd.mojo index eb92b4f886..16704d13e4 100644 --- a/stdlib/test/builtin/test_simd.mojo +++ b/stdlib/test/builtin/test_simd.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/test/builtin/test_slice.mojo b/stdlib/test/builtin/test_slice.mojo index da32ed9903..1644ba324b 100644 --- a/stdlib/test/builtin/test_slice.mojo +++ b/stdlib/test/builtin/test_slice.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/test/builtin/test_sort.mojo b/stdlib/test/builtin/test_sort.mojo index 153d2d4d05..606873454c 100644 --- a/stdlib/test/builtin/test_sort.mojo +++ b/stdlib/test/builtin/test_sort.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/test/builtin/test_sort_issue_1018.mojo b/stdlib/test/builtin/test_sort_issue_1018.mojo index af50f5b896..7132374abe 100644 --- a/stdlib/test/builtin/test_sort_issue_1018.mojo +++ b/stdlib/test/builtin/test_sort_issue_1018.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/test/builtin/test_stdin.mojo b/stdlib/test/builtin/test_stdin.mojo index 8c6b2d7f6f..8bc63e7da1 100644 --- a/stdlib/test/builtin/test_stdin.mojo +++ b/stdlib/test/builtin/test_stdin.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/test/builtin/test_str.mojo b/stdlib/test/builtin/test_str.mojo index 594777287f..02870e901c 100644 --- a/stdlib/test/builtin/test_str.mojo +++ b/stdlib/test/builtin/test_str.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/test/builtin/test_string_literal.mojo b/stdlib/test/builtin/test_string_literal.mojo index 24193369e0..bd839a3c54 100644 --- a/stdlib/test/builtin/test_string_literal.mojo +++ b/stdlib/test/builtin/test_string_literal.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/test/builtin/test_swap.mojo b/stdlib/test/builtin/test_swap.mojo index 6d834d4b71..31557ce7dc 100644 --- a/stdlib/test/builtin/test_swap.mojo +++ b/stdlib/test/builtin/test_swap.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/test/builtin/test_tuple.mojo b/stdlib/test/builtin/test_tuple.mojo index d1f6205727..b401c7a07d 100644 --- a/stdlib/test/builtin/test_tuple.mojo +++ b/stdlib/test/builtin/test_tuple.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/test/builtin/test_uint.mojo b/stdlib/test/builtin/test_uint.mojo index 2f15a1c9ad..e7ca5b6272 100644 --- a/stdlib/test/builtin/test_uint.mojo +++ b/stdlib/test/builtin/test_uint.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/test/builtin/test_uint_error.mojo b/stdlib/test/builtin/test_uint_error.mojo index e36e15859f..74d20652b8 100644 --- a/stdlib/test/builtin/test_uint_error.mojo +++ b/stdlib/test/builtin/test_uint_error.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/test/collections/string/test_inlined_string.mojo b/stdlib/test/collections/string/test_inlined_string.mojo index 672a25ecfe..554ac157ad 100644 --- a/stdlib/test/collections/string/test_inlined_string.mojo +++ b/stdlib/test/collections/string/test_inlined_string.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/test/collections/string/test_string.mojo b/stdlib/test/collections/string/test_string.mojo index e576dbfcc3..25263afad3 100644 --- a/stdlib/test/collections/string/test_string.mojo +++ b/stdlib/test/collections/string/test_string.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/test/collections/string/test_string_slice.mojo b/stdlib/test/collections/string/test_string_slice.mojo index c6a5b268ed..0e7edc9980 100644 --- a/stdlib/test/collections/string/test_string_slice.mojo +++ b/stdlib/test/collections/string/test_string_slice.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/test/collections/string/test_unicode.mojo b/stdlib/test/collections/string/test_unicode.mojo index 142962118c..7ec07dfbb8 100644 --- a/stdlib/test/collections/string/test_unicode.mojo +++ b/stdlib/test/collections/string/test_unicode.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/test/collections/test_counter.mojo b/stdlib/test/collections/test_counter.mojo index a7c7b3e772..80d9b6f8a2 100644 --- a/stdlib/test/collections/test_counter.mojo +++ b/stdlib/test/collections/test_counter.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/test/collections/test_deque.mojo b/stdlib/test/collections/test_deque.mojo index a5fdc772f9..03cdba2827 100644 --- a/stdlib/test/collections/test_deque.mojo +++ b/stdlib/test/collections/test_deque.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/test/collections/test_dict.mojo b/stdlib/test/collections/test_dict.mojo index aa2e12c2e6..333f377d99 100644 --- a/stdlib/test/collections/test_dict.mojo +++ b/stdlib/test/collections/test_dict.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/test/collections/test_index_normalization.mojo b/stdlib/test/collections/test_index_normalization.mojo index 703ed95f9f..0039180c55 100644 --- a/stdlib/test/collections/test_index_normalization.mojo +++ b/stdlib/test/collections/test_index_normalization.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/test/collections/test_inline_array.mojo b/stdlib/test/collections/test_inline_array.mojo index 2f311931de..652af472ff 100644 --- a/stdlib/test/collections/test_inline_array.mojo +++ b/stdlib/test/collections/test_inline_array.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/test/collections/test_inline_list.mojo b/stdlib/test/collections/test_inline_list.mojo index 8ca491f11c..b457e6f5d7 100644 --- a/stdlib/test/collections/test_inline_list.mojo +++ b/stdlib/test/collections/test_inline_list.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/test/collections/test_linked_list.mojo b/stdlib/test/collections/test_linked_list.mojo index a5f3467736..f1be0e72bf 100644 --- a/stdlib/test/collections/test_linked_list.mojo +++ b/stdlib/test/collections/test_linked_list.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/test/collections/test_list.mojo b/stdlib/test/collections/test_list.mojo index 2ed9a71306..ef218a90b0 100644 --- a/stdlib/test/collections/test_list.mojo +++ b/stdlib/test/collections/test_list.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/test/collections/test_list_getitem_invalid_index.mojo b/stdlib/test/collections/test_list_getitem_invalid_index.mojo index f5ce83a0e2..34ef22d26c 100644 --- a/stdlib/test/collections/test_list_getitem_invalid_index.mojo +++ b/stdlib/test/collections/test_list_getitem_invalid_index.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/test/collections/test_optional.mojo b/stdlib/test/collections/test_optional.mojo index 6fe264cafd..ce09006846 100644 --- a/stdlib/test/collections/test_optional.mojo +++ b/stdlib/test/collections/test_optional.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/test/collections/test_set.mojo b/stdlib/test/collections/test_set.mojo index 147e488304..161afc4b56 100644 --- a/stdlib/test/collections/test_set.mojo +++ b/stdlib/test/collections/test_set.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/test/collections/test_vector.mojo b/stdlib/test/collections/test_vector.mojo index 3ed126d148..66e862b54d 100644 --- a/stdlib/test/collections/test_vector.mojo +++ b/stdlib/test/collections/test_vector.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/test/hashlib/test_ahash.mojo b/stdlib/test/hashlib/test_ahash.mojo index 4fa20d1571..7e644f2e5a 100644 --- a/stdlib/test/hashlib/test_ahash.mojo +++ b/stdlib/test/hashlib/test_ahash.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/test/hashlib/test_hash.mojo b/stdlib/test/hashlib/test_hash.mojo index 39a992d51d..bf3ed7c480 100644 --- a/stdlib/test/hashlib/test_hash.mojo +++ b/stdlib/test/hashlib/test_hash.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/test/hashlib/test_hasher.mojo b/stdlib/test/hashlib/test_hasher.mojo index c60032b2e1..b349c600ef 100644 --- a/stdlib/test/hashlib/test_hasher.mojo +++ b/stdlib/test/hashlib/test_hasher.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/test/lit.cfg.py b/stdlib/test/lit.cfg.py index 67d1f613b2..a20ce09510 100644 --- a/stdlib/test/lit.cfg.py +++ b/stdlib/test/lit.cfg.py @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/test/memory/test_arc.mojo b/stdlib/test/memory/test_arc.mojo index 83d0b4e4e4..48193c5f80 100644 --- a/stdlib/test/memory/test_arc.mojo +++ b/stdlib/test/memory/test_arc.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/test/memory/test_bitcast.mojo b/stdlib/test/memory/test_bitcast.mojo index 5375cc485a..666e925fc7 100644 --- a/stdlib/test/memory/test_bitcast.mojo +++ b/stdlib/test/memory/test_bitcast.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/test/memory/test_maybe_uninitialized.mojo b/stdlib/test/memory/test_maybe_uninitialized.mojo index 5dbebfd8d7..68c629019e 100644 --- a/stdlib/test/memory/test_maybe_uninitialized.mojo +++ b/stdlib/test/memory/test_maybe_uninitialized.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/test/memory/test_memory.mojo b/stdlib/test/memory/test_memory.mojo index c3310b1021..72ec12b100 100644 --- a/stdlib/test/memory/test_memory.mojo +++ b/stdlib/test/memory/test_memory.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/test/memory/test_owned_pointer.mojo b/stdlib/test/memory/test_owned_pointer.mojo index 133dff1348..76eb52af30 100644 --- a/stdlib/test/memory/test_owned_pointer.mojo +++ b/stdlib/test/memory/test_owned_pointer.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/test/memory/test_reference.mojo b/stdlib/test/memory/test_reference.mojo index 746c7e8fbf..f9aabb0304 100644 --- a/stdlib/test/memory/test_reference.mojo +++ b/stdlib/test/memory/test_reference.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/test/memory/test_span.mojo b/stdlib/test/memory/test_span.mojo index 9ccd0d76de..c6369315f1 100644 --- a/stdlib/test/memory/test_span.mojo +++ b/stdlib/test/memory/test_span.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/test/memory/test_unsafepointer.mojo b/stdlib/test/memory/test_unsafepointer.mojo index 5bf8837422..927285ecdf 100644 --- a/stdlib/test/memory/test_unsafepointer.mojo +++ b/stdlib/test/memory/test_unsafepointer.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/test/os/path/test_basename.mojo b/stdlib/test/os/path/test_basename.mojo index acda789eca..a73a004461 100644 --- a/stdlib/test/os/path/test_basename.mojo +++ b/stdlib/test/os/path/test_basename.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/test/os/path/test_dirname.mojo b/stdlib/test/os/path/test_dirname.mojo index daa6e64762..485ee626fb 100644 --- a/stdlib/test/os/path/test_dirname.mojo +++ b/stdlib/test/os/path/test_dirname.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/test/os/path/test_exists.mojo b/stdlib/test/os/path/test_exists.mojo index bfd5b8cb86..5cb4970243 100644 --- a/stdlib/test/os/path/test_exists.mojo +++ b/stdlib/test/os/path/test_exists.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/test/os/path/test_expanduser.mojo b/stdlib/test/os/path/test_expanduser.mojo index 7041eefdd6..868ea05c6b 100644 --- a/stdlib/test/os/path/test_expanduser.mojo +++ b/stdlib/test/os/path/test_expanduser.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/test/os/path/test_expandvars.mojo b/stdlib/test/os/path/test_expandvars.mojo index fead55656d..6066172f1a 100644 --- a/stdlib/test/os/path/test_expandvars.mojo +++ b/stdlib/test/os/path/test_expandvars.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/test/os/path/test_getsize.mojo b/stdlib/test/os/path/test_getsize.mojo index 1aa50e9bfb..713716536e 100644 --- a/stdlib/test/os/path/test_getsize.mojo +++ b/stdlib/test/os/path/test_getsize.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/test/os/path/test_isdir.mojo b/stdlib/test/os/path/test_isdir.mojo index eb87a671b3..05736b9c0d 100644 --- a/stdlib/test/os/path/test_isdir.mojo +++ b/stdlib/test/os/path/test_isdir.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/test/os/path/test_isfile.mojo b/stdlib/test/os/path/test_isfile.mojo index 042ebae624..34c83c6909 100644 --- a/stdlib/test/os/path/test_isfile.mojo +++ b/stdlib/test/os/path/test_isfile.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/test/os/path/test_islink.mojo b/stdlib/test/os/path/test_islink.mojo index c8b3af2e57..d73d2ef6e2 100644 --- a/stdlib/test/os/path/test_islink.mojo +++ b/stdlib/test/os/path/test_islink.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/test/os/path/test_join.mojo b/stdlib/test/os/path/test_join.mojo index a61ffd9da2..74bbcc5822 100644 --- a/stdlib/test/os/path/test_join.mojo +++ b/stdlib/test/os/path/test_join.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/test/os/path/test_split.mojo b/stdlib/test/os/path/test_split.mojo index 0ef994827b..261238f472 100644 --- a/stdlib/test/os/path/test_split.mojo +++ b/stdlib/test/os/path/test_split.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/test/os/path/test_splitroot.mojo b/stdlib/test/os/path/test_splitroot.mojo index fddf23677c..59a89709d3 100644 --- a/stdlib/test/os/path/test_splitroot.mojo +++ b/stdlib/test/os/path/test_splitroot.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/test/os/test_atomic.mojo b/stdlib/test/os/test_atomic.mojo index d8433fd194..a6bb1dd65d 100644 --- a/stdlib/test/os/test_atomic.mojo +++ b/stdlib/test/os/test_atomic.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/test/os/test_env.mojo b/stdlib/test/os/test_env.mojo index 0d4bd0b6ec..6df84bef3f 100644 --- a/stdlib/test/os/test_env.mojo +++ b/stdlib/test/os/test_env.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/test/os/test_listdir.mojo b/stdlib/test/os/test_listdir.mojo index 8b029590a1..0d8ee103cc 100644 --- a/stdlib/test/os/test_listdir.mojo +++ b/stdlib/test/os/test_listdir.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/test/os/test_mkdir_and_rmdir.mojo b/stdlib/test/os/test_mkdir_and_rmdir.mojo index 5ebb882c84..f210251808 100644 --- a/stdlib/test/os/test_mkdir_and_rmdir.mojo +++ b/stdlib/test/os/test_mkdir_and_rmdir.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/test/os/test_no_trap.mojo b/stdlib/test/os/test_no_trap.mojo index 8c36b634f1..5bdeea5722 100644 --- a/stdlib/test/os/test_no_trap.mojo +++ b/stdlib/test/os/test_no_trap.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/test/os/test_remove.mojo b/stdlib/test/os/test_remove.mojo index 5d1506abdb..6704effa4f 100644 --- a/stdlib/test/os/test_remove.mojo +++ b/stdlib/test/os/test_remove.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/test/os/test_stat.mojo b/stdlib/test/os/test_stat.mojo index 67a738e040..cb8475e428 100644 --- a/stdlib/test/os/test_stat.mojo +++ b/stdlib/test/os/test_stat.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/test/os/test_trap.mojo b/stdlib/test/os/test_trap.mojo index 2118a67d84..14e7b60286 100644 --- a/stdlib/test/os/test_trap.mojo +++ b/stdlib/test/os/test_trap.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/test/os/test_trap_stringable.mojo b/stdlib/test/os/test_trap_stringable.mojo index 4e7c83e150..a068956714 100644 --- a/stdlib/test/os/test_trap_stringable.mojo +++ b/stdlib/test/os/test_trap_stringable.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/test/pathlib/test_pathlib.mojo b/stdlib/test/pathlib/test_pathlib.mojo index e13a4abf1b..ba248b7a17 100644 --- a/stdlib/test/pathlib/test_pathlib.mojo +++ b/stdlib/test/pathlib/test_pathlib.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/test/pwd/test_pwd.mojo b/stdlib/test/pwd/test_pwd.mojo index 14f3946a87..54bba4cab9 100644 --- a/stdlib/test/pwd/test_pwd.mojo +++ b/stdlib/test/pwd/test_pwd.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/test/python/custom_indexable.py b/stdlib/test/python/custom_indexable.py index 1164f7f5cb..ab9d55b853 100644 --- a/stdlib/test/python/custom_indexable.py +++ b/stdlib/test/python/custom_indexable.py @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/test/python/module_for_test_python_object_dunder_contains.py b/stdlib/test/python/module_for_test_python_object_dunder_contains.py index 40ec598dee..f3ecfd3fe9 100644 --- a/stdlib/test/python/module_for_test_python_object_dunder_contains.py +++ b/stdlib/test/python/module_for_test_python_object_dunder_contains.py @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/test/python/my_module.py b/stdlib/test/python/my_module.py index 8147b0a382..73c34742fd 100644 --- a/stdlib/test/python/my_module.py +++ b/stdlib/test/python/my_module.py @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/test/python/test_ownership.mojo b/stdlib/test/python/test_ownership.mojo index 4411185e77..1fa9bc026a 100644 --- a/stdlib/test/python/test_ownership.mojo +++ b/stdlib/test/python/test_ownership.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/test/python/test_python_cpython.mojo b/stdlib/test/python/test_python_cpython.mojo index 77d4bfdb59..5732e5882a 100644 --- a/stdlib/test/python/test_python_cpython.mojo +++ b/stdlib/test/python/test_python_cpython.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/test/python/test_python_error_handling.mojo b/stdlib/test/python/test_python_error_handling.mojo index 5659f2abf9..86eab5bb17 100644 --- a/stdlib/test/python/test_python_error_handling.mojo +++ b/stdlib/test/python/test_python_error_handling.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/test/python/test_python_info.mojo b/stdlib/test/python/test_python_info.mojo index 5e1a4a1c7c..41d7f3c3d2 100644 --- a/stdlib/test/python/test_python_info.mojo +++ b/stdlib/test/python/test_python_info.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/test/python/test_python_interop.mojo b/stdlib/test/python/test_python_interop.mojo index 80fe6ea3d9..c846fce7ee 100644 --- a/stdlib/test/python/test_python_interop.mojo +++ b/stdlib/test/python/test_python_interop.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/test/python/test_python_module_create.mojo b/stdlib/test/python/test_python_module_create.mojo index 0fd71d7545..15bbd3edaa 100644 --- a/stdlib/test/python/test_python_module_create.mojo +++ b/stdlib/test/python/test_python_module_create.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/test/python/test_python_object.mojo b/stdlib/test/python/test_python_object.mojo index fe15369e5f..659b97c1b5 100644 --- a/stdlib/test/python/test_python_object.mojo +++ b/stdlib/test/python/test_python_object.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/test/python/test_python_object_dunder_contains.mojo b/stdlib/test/python/test_python_object_dunder_contains.mojo index 5d4c722278..7b7de0b089 100644 --- a/stdlib/test/python/test_python_object_dunder_contains.mojo +++ b/stdlib/test/python/test_python_object_dunder_contains.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/test/python/test_python_object_len_raises.mojo b/stdlib/test/python/test_python_object_len_raises.mojo index 62742b4d59..63b61c1a79 100644 --- a/stdlib/test/python/test_python_object_len_raises.mojo +++ b/stdlib/test/python/test_python_object_len_raises.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/test/python/test_python_to_mojo.mojo b/stdlib/test/python/test_python_to_mojo.mojo index a8dc7aca97..6e6ea75c42 100644 --- a/stdlib/test/python/test_python_to_mojo.mojo +++ b/stdlib/test/python/test_python_to_mojo.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/test/random/test_random.mojo b/stdlib/test/random/test_random.mojo index 8f705b002b..7441dd4395 100644 --- a/stdlib/test/random/test_random.mojo +++ b/stdlib/test/random/test_random.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/test/sys/test_aarch64_target.mojo b/stdlib/test/sys/test_aarch64_target.mojo index 7fa94b946d..c2aa6f090d 100644 --- a/stdlib/test/sys/test_aarch64_target.mojo +++ b/stdlib/test/sys/test_aarch64_target.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/test/sys/test_build_info_debug.mojo b/stdlib/test/sys/test_build_info_debug.mojo index 5dc1a1a77d..21d56b10dd 100644 --- a/stdlib/test/sys/test_build_info_debug.mojo +++ b/stdlib/test/sys/test_build_info_debug.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/test/sys/test_c_types.mojo b/stdlib/test/sys/test_c_types.mojo index f2610aa453..623e592c4f 100644 --- a/stdlib/test/sys/test_c_types.mojo +++ b/stdlib/test/sys/test_c_types.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/test/sys/test_dlhandle.mojo b/stdlib/test/sys/test_dlhandle.mojo index 2392d50f1a..b780ce79bd 100644 --- a/stdlib/test/sys/test_dlhandle.mojo +++ b/stdlib/test/sys/test_dlhandle.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/test/sys/test_exit_0.mojo b/stdlib/test/sys/test_exit_0.mojo index d7134a7150..d6bd90eab6 100644 --- a/stdlib/test/sys/test_exit_0.mojo +++ b/stdlib/test/sys/test_exit_0.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/test/sys/test_exit_1.mojo b/stdlib/test/sys/test_exit_1.mojo index ad8311018e..ef916aacca 100644 --- a/stdlib/test/sys/test_exit_1.mojo +++ b/stdlib/test/sys/test_exit_1.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/test/sys/test_intrinsics.mojo b/stdlib/test/sys/test_intrinsics.mojo index 2bc51de5c6..5d3fc51362 100644 --- a/stdlib/test/sys/test_intrinsics.mojo +++ b/stdlib/test/sys/test_intrinsics.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/test/sys/test_invalid_paramenv.mojo b/stdlib/test/sys/test_invalid_paramenv.mojo index 005755b999..ab098b3937 100644 --- a/stdlib/test/sys/test_invalid_paramenv.mojo +++ b/stdlib/test/sys/test_invalid_paramenv.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/test/sys/test_linux_target.mojo b/stdlib/test/sys/test_linux_target.mojo index dd78cb3bb3..797c2ae3ce 100644 --- a/stdlib/test/sys/test_linux_target.mojo +++ b/stdlib/test/sys/test_linux_target.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/test/sys/test_macos_target.mojo b/stdlib/test/sys/test_macos_target.mojo index d5101c8eb0..b5e34402ba 100644 --- a/stdlib/test/sys/test_macos_target.mojo +++ b/stdlib/test/sys/test_macos_target.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/test/sys/test_paramenv.mojo b/stdlib/test/sys/test_paramenv.mojo index b1e3cadeb6..81fb252270 100644 --- a/stdlib/test/sys/test_paramenv.mojo +++ b/stdlib/test/sys/test_paramenv.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/test/sys/test_targetinfo.mojo b/stdlib/test/sys/test_targetinfo.mojo index 34cbc155a1..b9fdafc137 100644 --- a/stdlib/test/sys/test_targetinfo.mojo +++ b/stdlib/test/sys/test_targetinfo.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/test/sys/test_windows_target.mojo b/stdlib/test/sys/test_windows_target.mojo index f14807e792..673fbe9a41 100644 --- a/stdlib/test/sys/test_windows_target.mojo +++ b/stdlib/test/sys/test_windows_target.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/test/tempfile/test_tempfile.mojo b/stdlib/test/tempfile/test_tempfile.mojo index 61b6e1daeb..0742f7cfa6 100644 --- a/stdlib/test/tempfile/test_tempfile.mojo +++ b/stdlib/test/tempfile/test_tempfile.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/test/test_utils/__init__.mojo b/stdlib/test/test_utils/__init__.mojo index 3dcecfc83b..0159453e8a 100644 --- a/stdlib/test/test_utils/__init__.mojo +++ b/stdlib/test/test_utils/__init__.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/test/test_utils/test_utils.mojo b/stdlib/test/test_utils/test_utils.mojo index 4591c17f24..86740a0ebe 100644 --- a/stdlib/test/test_utils/test_utils.mojo +++ b/stdlib/test/test_utils/test_utils.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/test/test_utils/types.mojo b/stdlib/test/test_utils/types.mojo index 01870acebc..c31642e342 100644 --- a/stdlib/test/test_utils/types.mojo +++ b/stdlib/test/test_utils/types.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/test/testing/test_assert_raises.mojo b/stdlib/test/testing/test_assert_raises.mojo index 50c1c17326..479d686488 100644 --- a/stdlib/test/testing/test_assert_raises.mojo +++ b/stdlib/test/testing/test_assert_raises.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/test/testing/test_assertion.mojo b/stdlib/test/testing/test_assertion.mojo index c7153040fb..eb7a0ab38b 100644 --- a/stdlib/test/testing/test_assertion.mojo +++ b/stdlib/test/testing/test_assertion.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/test/time/test_time.mojo b/stdlib/test/time/test_time.mojo index 0148bfeeef..50101f5f45 100644 --- a/stdlib/test/time/test_time.mojo +++ b/stdlib/test/time/test_time.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/test/utils/issue_13632.mojo b/stdlib/test/utils/issue_13632.mojo index 0bdfbff6ce..145d68800d 100644 --- a/stdlib/test/utils/issue_13632.mojo +++ b/stdlib/test/utils/issue_13632.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/test/utils/test_index.mojo b/stdlib/test/utils/test_index.mojo index ff5236890c..8533b448e3 100644 --- a/stdlib/test/utils/test_index.mojo +++ b/stdlib/test/utils/test_index.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/test/utils/test_numerics.mojo b/stdlib/test/utils/test_numerics.mojo index ee85152855..33fadb8087 100644 --- a/stdlib/test/utils/test_numerics.mojo +++ b/stdlib/test/utils/test_numerics.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/test/utils/test_select.mojo b/stdlib/test/utils/test_select.mojo index dc1911c98a..b2badb5098 100644 --- a/stdlib/test/utils/test_select.mojo +++ b/stdlib/test/utils/test_select.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/test/utils/test_static_tuple.mojo b/stdlib/test/utils/test_static_tuple.mojo index b2f46d55af..e25c6d7fc6 100644 --- a/stdlib/test/utils/test_static_tuple.mojo +++ b/stdlib/test/utils/test_static_tuple.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/test/utils/test_stringref.mojo b/stdlib/test/utils/test_stringref.mojo index 6a368f29a7..a0950cf990 100644 --- a/stdlib/test/utils/test_stringref.mojo +++ b/stdlib/test/utils/test_stringref.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/test/utils/test_tuple.mojo b/stdlib/test/utils/test_tuple.mojo index 1feb95f50a..94df5f6648 100644 --- a/stdlib/test/utils/test_tuple.mojo +++ b/stdlib/test/utils/test_tuple.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/test/utils/test_unroll.mojo b/stdlib/test/utils/test_unroll.mojo index de1b942b3a..2af198f50b 100644 --- a/stdlib/test/utils/test_unroll.mojo +++ b/stdlib/test/utils/test_unroll.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/test/utils/test_variant.mojo b/stdlib/test/utils/test_variant.mojo index 264e1dd088..f0f32a47f6 100644 --- a/stdlib/test/utils/test_variant.mojo +++ b/stdlib/test/utils/test_variant.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/test/utils/test_write.mojo b/stdlib/test/utils/test_write.mojo index 77bb3fb5a9..3844793005 100644 --- a/stdlib/test/utils/test_write.mojo +++ b/stdlib/test/utils/test_write.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/test/utils/test_write_to_stdout.mojo b/stdlib/test/utils/test_write_to_stdout.mojo index fed40ec33c..bc130a8cc1 100644 --- a/stdlib/test/utils/test_write_to_stdout.mojo +++ b/stdlib/test/utils/test_write_to_stdout.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt From 936729b02717fb7a9ca67ce78697617c1109f661 Mon Sep 17 00:00:00 2001 From: Ken Jones <165197230+KenJones-Modular@users.noreply.github.com> Date: Fri, 24 Jan 2025 18:14:54 -0800 Subject: [PATCH 300/509] Remove all references in the docs to the Mojo notebook examples We're retiring all of the current notebook examples in the public GitHub repo. This PR eliminate all references and links to them from the Mojo Manual and related documentation. MODULAR_ORIG_COMMIT_REV_ID: 25d23be3d0fc189b50a80fd118ad1282c4f8d8ca --- docs/README.md | 11 +++++------ docs/faq.md | 24 +++--------------------- docs/manual/basics.mdx | 15 ++++----------- docs/manual/lifecycle/index.mdx | 4 +--- 4 files changed, 13 insertions(+), 41 deletions(-) diff --git a/docs/README.md b/docs/README.md index e7b9308e8a..5200bc5cfe 100644 --- a/docs/README.md +++ b/docs/README.md @@ -3,10 +3,9 @@ This directory includes most of the documentation at [docs.modular.com/mojo](https://docs.modular.com/mojo). -The only things not here are the Jupyter notebooks, which are instead in the -[`examples/notebooks/`](../examples/notebooks/) directory, the `mojo` CLI pages, -and the Mojo Standard Library reference. The reference docs are generated from -source files, which are currently not open-sourced. +The only things not here are the `mojo` CLI pages and the Mojo Standard Library +reference. The reference docs are generated from source files, which are located +in the [/stdlib/src](../stdlib/src) directory. ## Contributing @@ -16,8 +15,8 @@ to accept your contributions. Be aware that we don't provide tools to generate a preview of the website, because the Mojo docs are built along with other content that's not included in this repo. As such, we recommend you preview your edits in an IDE that can -render markdown and Jupyter notebook files, such as VS Code, including the [VS -Code environment in GitHub](https://github.dev/modularml/mojo/blob/main/). +render Markdown and MDX files, such as VS Code, including the +[VS Code environment in GitHub](https://github.dev/modular/mojo/blob/main/). For more information about how to contribute, see the [Contributor Guide](../CONTRIBUTING.md) diff --git a/docs/faq.md b/docs/faq.md index 32ecb58de7..eb07300b96 100644 --- a/docs/faq.md +++ b/docs/faq.md @@ -41,9 +41,7 @@ at this point, but you can also just use the `.mojo` extension. :) Mojo combines the usability of Python with the systems programming features it’s missing. We are guided more by pragmatism than novelty, but Mojo’s use of [MLIR](https://mlir.llvm.org/) allows it to scale to new exotic hardware types -and domains in a way that other languages haven’t demonstrated (for an example -of Mojo talking directly to MLIR, see our [low-level IR in Mojo -notebook](/mojo/notebooks/BoolMLIR)). It also +and domains in a way that other languages haven’t demonstrated. It also has caching and distributed compilation built into its core. We also believe Mojo has a good chance of unifying hybrid packages in the broader Python community. @@ -136,9 +134,7 @@ Although you can use MLIR to create a flexible and powerful compiler for any programming language, Mojo is the world’s first language to be built from the ground up with MLIR design principles. This means that Mojo not only offers high-performance compilation for heterogeneous hardware, but it also provides -direct programming support for the MLIR intermediate representations. For a -simple example of Mojo talking directly to MLIR, see our [low-level IR in Mojo -notebook](/mojo/notebooks/BoolMLIR). +direct programming support for the MLIR intermediate representations. ### Is Mojo only for AI or can it be used for other stuff? @@ -242,18 +238,6 @@ multiplication](https://www.modular.com/blog/the-worlds-fastest-unified-matrix-m ## Performance -### Mojo’s matmul performance in the notebook doesn’t seem that great. What’s going on? - -The [Mojo Matmul -notebook](https://github.com/modular/mojo/blob/main/examples/notebooks/Matmul.ipynb) -uses matrix multiplication to show off some Mojo features in a scenario that -you would never attempt in pure Python. So that implementation is like a “toy” -matmul implementation and it doesn’t measure up to the state of the art. - -Modular has a separate matmul implementation written in Mojo and used by -[MAX Engine](/engine), which you can read about it in [this blog -post](https://www.modular.com/blog/the-worlds-fastest-unified-matrix-multiplication). - ### Are there any AI related performance benchmarks for Mojo? It’s important to remember that Mojo is a general-purpose programming language, @@ -280,9 +264,7 @@ MAX](/max/faq#why-bundle-mojo-with-max). Yes, but it's different. When we first announced Mojo, it was available only through login, in a JupyterLab environment. Now that Mojo is available -for local development, we've shut down that service (you can instead [run -Mojo notebooks -locally](https://github.com/modular/mojo/tree/main/examples/notebooks#readme)). +for local development, we've shut down that service. The new [Mojo Playground](/mojo/playground) is built into the docs website and does not require login. diff --git a/docs/manual/basics.mdx b/docs/manual/basics.mdx index c6c4071a56..9238fd3799 100644 --- a/docs/manual/basics.mdx +++ b/docs/manual/basics.mdx @@ -51,13 +51,10 @@ the standard output. :::note -You don't need a `main()` function when coding in the -[REPL](/mojo/cli/repl) or in a -[Jupyter -notebook](https://github.com/modular/mojo/tree/main/examples/notebooks#readme). -In these environments, Mojo executes top-level code (that is, statements -that appear outside of a function). Mojo doesn't support top-level code in a -`.mojo` (or `.🔥`) file +You don't need a `main()` function when coding in the [REPL](/mojo/cli/repl) or +in a Jupyter notebook. In these environments, Mojo executes top-level code (that +is, statements that appear outside of a function). Mojo doesn't support +top-level code in a `.mojo` (or `.🔥`) file. ::: @@ -471,9 +468,5 @@ Otherwise, here are some other resources to check out: git clone https://github.com/modular/mojo.git ``` - In addition to several `.mojo` examples, the repo includes [Jupyter - notebooks](https://github.com/modular/mojo/tree/main/examples/notebooks#readme) - that teach advanced Mojo features. - * To see all the available Mojo APIs, check out the [Mojo standard library reference](/mojo/lib). diff --git a/docs/manual/lifecycle/index.mdx b/docs/manual/lifecycle/index.mdx index 466d792b18..fa97dba7df 100644 --- a/docs/manual/lifecycle/index.mdx +++ b/docs/manual/lifecycle/index.mdx @@ -16,9 +16,7 @@ Mojo also has no built-in data types with special privileges. All data types in the standard library (such as [`Bool`](/mojo/stdlib/builtin/bool/Bool), [`Int`](/mojo/stdlib/builtin/int/Int), and [`String`](/mojo/stdlib/collections/string/String)) are implemented as -[structs](/mojo/manual/structs). You can actually write your own -replacements for these types by using low-level primitives provided by -[MLIR dialects](/mojo/notebooks/BoolMLIR). +[structs](/mojo/manual/structs). What's great about the Mojo language is that it provides you these low-level tools for systems programming, but within a framework that helps you build From f485b4f625bee09464b1b86d1cf91afc37d5bfc5 Mon Sep 17 00:00:00 2001 From: modularbot Date: Sat, 25 Jan 2025 07:20:03 +0000 Subject: [PATCH 301/509] Update lockfiles to point to latest nightly version: 25.1.0.dev2025012505 --- examples/life/magic.lock | 959 ++++++++++++++++++++------------- examples/magic.lock | 923 ++++++++++++++++++++------------ examples/notebooks/magic.lock | 960 +++++++++++++++++++++------------- examples/operators/magic.lock | 959 ++++++++++++++++++++------------- examples/testing/magic.lock | 959 ++++++++++++++++++++------------- magic.lock | 959 ++++++++++++++++++++------------- 6 files changed, 3571 insertions(+), 2148 deletions(-) diff --git a/examples/life/magic.lock b/examples/life/magic.lock index 163d1ace68..aeff3da14c 100644 --- a/examples/life/magic.lock +++ b/examples/life/magic.lock @@ -29,7 +29,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.2-h4e1184b_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-h4e1184b_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.9-he0e7f3f_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-h4d475cb_6.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.489-h4d475cb_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.10.0-h113e628_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.13.0-h3cf044e_1.conda @@ -56,7 +56,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/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-0.115.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/fluidsynth-2.3.7-hd992666_0.conda @@ -68,7 +68,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2 - 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 + - conda: https://conda.anaconda.org/conda-forge/linux-64/frozenlist-1.5.0-py312h178313f_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.12.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gettext-0.22.5-he02047a_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gettext-tools-0.22.5-he02047a_3.conda @@ -79,12 +79,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-10.2.0-h4bba637_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/httptools-0.6.4-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.27.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_1.conda @@ -99,10 +99,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-19.0.0-hce2e470_3_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-19.0.0-hcb10f89_3_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-19.0.0-hcb10f89_3_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-19.0.0-h08228c5_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-19.0.0-h00a82cf_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-19.0.0-hcb10f89_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-19.0.0-hcb10f89_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-19.0.0-h08228c5_7_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libasprintf-0.22.5-he8f35ee_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libasprintf-devel-0.22.5-he8f35ee_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libavif16-1.1.1-h1909e37_2.conda @@ -131,8 +131,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hd5240d6_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.82.2-h2ff4ddf_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h77fa898_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.33.0-h2b5623c_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.33.0-h0121fbd_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.34.0-h2b5623c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.34.0-h0121fbd_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgpg-error-1.51-hbd13f7d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.67.1-h25350d4_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-hd590300_2.conda @@ -144,8 +144,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libogg-1.3.5-h4ab18f5_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.28-pthreads_h94d23a6_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-1.18.0-hfcad708_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-headers-1.18.0-ha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopus-1.3.1-h7f98852_1.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-19.0.0-h081d1f1_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-19.0.0-h081d1f1_7_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.45-h943b412_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_2.conda @@ -170,17 +172,18 @@ 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-25.1.0.dev2025012205-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025012205-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025012205-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025012505-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025012505-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025012505-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012505-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-25.1.0.dev2025012205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025012505-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_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-h2d0b736_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/nlohmann_json-3.11.3-he02047a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.3-h5fbd93e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.0-h7b32b05_1.conda @@ -202,20 +205,21 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/portaudio-19.6.0-h7c63dc7_9.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/portmidi-2.0.4-h7c63dc7_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/prometheus-cpp-1.3.0-ha5d0236_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.1-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.1-py312h178313f_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/protobuf-5.28.3-py312h2ec8cdc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pulseaudio-client-17.0-hb77b528_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-19.0.0-py312h7900ff3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-19.0.0-py312h01725c0_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.5-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.6-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.27.2-py312h12e396e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.7.1-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pygame-2.6.1-py312h4fcb14b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pyinstrument-5.0.0-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyinstrument-5.0.1-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.8-h9e4cc4f_1_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda @@ -246,7 +250,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-h8bd8927_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.2.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.45.2-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/svt-av1-2.3.0-h5888daf_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.21.0-py312h8360d73_0.conda @@ -280,6 +284,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.18.3-py312h178313f_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.1-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312hef9b889_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda linux-aarch64: @@ -305,7 +310,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.2-h0f0193d_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h0f0193d_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.9-hab3ce66_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h88461e4_6.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.489-h88461e4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-core-cpp-1.14.0-h1887c18_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-identity-cpp-1.10.0-h47b0b28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-blobs-cpp-12.13.0-h185ecfd_1.conda @@ -332,7 +337,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/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-0.115.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/fluidsynth-2.3.7-h4f58cef_0.conda @@ -344,7 +349,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2 - 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 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/frozenlist-1.5.0-py312hcc812fe_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.12.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gettext-0.22.5-h0a1ffab_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gettext-tools-0.22.5-h0a1ffab_3.conda @@ -355,12 +360,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/harfbuzz-10.2.0-h785c1aa_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/httptools-0.6.4-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.27.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_1.conda @@ -375,10 +380,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.0.0-h4de3ea5_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h18dbdb1_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-h4065667_12_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h3b568fd_12_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h3b568fd_12_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h1e9d426_12_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-19.0.0-h03ebaaf_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-19.0.0-h3b568fd_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-19.0.0-h3b568fd_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-19.0.0-h1e9d426_7_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libasprintf-0.22.5-h87f4aca_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libasprintf-devel-0.22.5-h87f4aca_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libavif16-1.1.1-h3b0c220_2.conda @@ -420,8 +425,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libogg-1.3.5-h0b9eccb_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.28-pthreads_h9d3fd7e_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopentelemetry-cpp-1.18.0-h60b47f9_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopentelemetry-cpp-headers-1.18.0-h8af1aa0_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopus-1.3.1-hf897c2e_1.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-hfc78867_12_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-19.0.0-hfc78867_7_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.45-hec79eb8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.3-h44a3b7b_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_2.conda @@ -446,17 +453,18 @@ 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-25.1.0.dev2025012205-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025012205-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025012205-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025012505-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025012505-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025012505-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012505-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-25.1.0.dev2025012205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025012505-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_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-ha32ae93_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/nlohmann_json-3.11.3-h0a1ffab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openjpeg-2.5.3-h3f56577_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.0-hd08dc88_1.conda @@ -478,20 +486,21 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/portaudio-19.6.0-h5c6c0ed_9.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/portmidi-2.0.4-h5c6c0ed_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/prometheus-cpp-1.3.0-h7938499_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.2.1-py312hb2c0f52_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.2.1-py312hcc812fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/protobuf-5.28.3-py312h6f74592_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pthread-stubs-0.4-h86ecc28_1002.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pulseaudio-client-17.0-h729494f_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-18.1.0-py312h8025657_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-18.1.0-py312h66f7834_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-19.0.0-py312h8025657_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-19.0.0-py312h66f7834_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.5-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.6-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pydantic-core-2.27.2-py312h8cbf658_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.7.1-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pygame-2.6.1-py312hb2c8110_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyinstrument-5.0.0-py312hb2c0f52_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyinstrument-5.0.1-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.8-h1683364_1_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda @@ -522,7 +531,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-hd4fb6f5_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.2.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.45.2-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/svt-av1-2.3.0-h5ad3122_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.21.0-py312ha0d6ea1_0.conda @@ -556,6 +565,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.18.3-py312hcc812fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zeromq-4.3.5-h5efb499_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zlib-1.3.1-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstandard-0.23.0-py312hb698573_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.6-h02f22dd_0.conda osx-arm64: @@ -578,7 +588,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.2-hc8a0bd2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-hc8a0bd2_4.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.9-ha81f72f_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-h0e5014b_6.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.489-h0e5014b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.14.0-hd50102c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.10.0-hc602bab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-blobs-cpp-12.13.0-h7585a09_1.conda @@ -603,7 +613,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda - 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-0.115.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/fluidsynth-2.3.7-h80fea77_0.conda @@ -615,7 +625,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2 - 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 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/frozenlist-1.5.0-py312h998013c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.12.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gettext-0.22.5-h8414b35_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gettext-tools-0.22.5-h8414b35_3.conda @@ -626,12 +636,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/harfbuzz-10.2.0-ha0dd535_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/httptools-0.6.4-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.27.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_1.conda @@ -643,10 +653,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.16-ha0e7c42_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_h07bc746_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-19.0.0-hd1aa4b5_4_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-19.0.0-hf07054f_4_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-19.0.0-hf07054f_4_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-19.0.0-h4239455_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-19.0.0-h819e3af_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-19.0.0-hf07054f_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-19.0.0-hf07054f_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-19.0.0-h4239455_7_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libasprintf-0.22.5-h8414b35_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libasprintf-devel-0.22.5-h8414b35_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libavif16-1.1.1-h45b7238_2.conda @@ -683,8 +693,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.64.0-h6d7220d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libogg-1.3.5-h99b78c6_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.28-openmp_hf332438_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopentelemetry-cpp-1.18.0-h0c05b2d_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopentelemetry-cpp-headers-1.18.0-hce30654_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopus-1.3.1-h27ca646_1.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-19.0.0-h636d7b7_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-19.0.0-h636d7b7_7_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.45-h3783ad8_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.3-h3bd63a1_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h07bc746_2.conda @@ -705,17 +717,18 @@ 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-25.1.0.dev2025012205-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025012205-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025012205-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025012505-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025012505-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025012505-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012505-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-25.1.0.dev2025012205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025012505-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 - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/nlohmann_json-3.11.3-h00cdb27_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openjpeg-2.5.3-h8a3d83b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.0-h81ee809_1.conda @@ -737,19 +750,20 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/portaudio-19.6.0-h13dd4ca_9.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/portmidi-2.0.4-h13dd4ca_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/prometheus-cpp-1.3.0-h0967b3e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.1-py312hea69d52_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.1-py312h998013c_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/protobuf-5.28.3-py312hd8f9ff3_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pthread-stubs-0.4-hd74edd7_1002.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-19.0.0-py312h1f38498_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-19.0.0-py312hc40f475_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.5-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.6-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.27.2-py312hcd83bfe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.7.1-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pygame-2.6.1-py312hb14fe3b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyinstrument-5.0.0-py312h0bf5046_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyinstrument-5.0.1-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.8-hc22306f_1_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda @@ -779,7 +793,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-h98b9ce2_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.2.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.45.2-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/svt-av1-2.3.0-hf24288c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.21.0-py312hf3e4074_0.conda @@ -807,6 +821,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.18.3-py312h998013c_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zlib-1.3.1-h8359307_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py312h15fbf35_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.6-hb46c0d2_0.conda packages: @@ -1574,9 +1589,9 @@ packages: license_family: Apache size: 235976 timestamp: 1737565563139 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-h4d475cb_6.conda - sha256: 2309d96d537b5c3810c6e9fbf5b6bb7e06ce907a609d172063ab504b2cc67f30 - md5: 6139e84bbb6fdb27ca49c2981613a5fa +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.489-h4d475cb_0.conda + sha256: 08d6b7d2ed17bfcc7deb903c7751278ee434abdb27e3be0dceb561f30f030c75 + md5: b775e9f46dfa94b228a81d8e8c6d8b1d depends: - __glibc >=2.17,<3.0.a0 - aws-c-common >=0.10.6,<0.10.7.0a0 @@ -1592,11 +1607,11 @@ packages: platform: linux license: Apache-2.0 license_family: Apache - size: 3069914 - timestamp: 1737049585807 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h88461e4_6.conda - sha256: f97e071ffb87bc33923f798761ec6a854614ce193913d34d3248515d18357baa - md5: 0d7f1ee2e5572bf9d1fd78f0f2ab6f6b + size: 3144364 + timestamp: 1737576036746 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.489-h88461e4_0.conda + sha256: 88353e82b053763168cddbe2f88048defc1c97b3dad0966fbe8c4fa7aa592c7e + md5: e725d8fa77a6a5f38a78c5de914a5f40 depends: - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 @@ -1611,11 +1626,11 @@ packages: platform: linux license: Apache-2.0 license_family: Apache - size: 2919798 - timestamp: 1737049659061 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-h0e5014b_6.conda - sha256: 8c21ce4692d1631b96adea099d7c2b905fc5d078db63bf754d85600dcf184651 - md5: a3b7b9a81d8c6a8f963f619d9e362c39 + size: 3015109 + timestamp: 1737575993030 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.489-h0e5014b_0.conda + sha256: d82451530ddf363d8bb31a8a7391bb9699f745e940ace91d78c0e6170deef03c + md5: 156cfb45a1bb8cffc81e59047bb34f51 depends: - __osx >=11.0 - aws-c-common >=0.10.6,<0.10.7.0a0 @@ -1630,8 +1645,8 @@ packages: platform: osx license: Apache-2.0 license_family: Apache - size: 2834057 - timestamp: 1737126583846 + size: 2874126 + timestamp: 1737577023623 - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda sha256: fe07debdb089a3db17f40a7f20d283d75284bb4fc269ef727b8ba6fc93f7cb5a md5: 0a8838771cc2e985cd295e01ae83baf1 @@ -2330,24 +2345,25 @@ packages: license_family: MIT size: 130354 timestamp: 1730967212801 -- conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.6-pyhd8ed1ab_0.conda - sha256: d7826d537c667093c9de96411a09585a8d620c84a830a0195e58e9a0df45f018 - md5: 1b1e0c97830cdf75f1f371bd467ab657 +- conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.7-pyh29332c3_1.conda + sha256: ac0c357b216e0b37d1a31af200548783d9e5a0413caaee92c5184dbef63b578e + md5: b53637ce62c4bcf3123a2a40f6a3824b depends: + - python >=3.9 + - starlette >=0.40.0,<0.46.0 + - typing_extensions >=4.8.0 + - pydantic >=1.7.4,!=1.8,!=1.8.1,!=2.0.0,!=2.0.1,!=2.1.0,<3.0.0 - email_validator >=2.0.0 - fastapi-cli >=0.0.5 - httpx >=0.23.0 - - jinja2 >=2.11.2 - - pydantic >=1.7.4,!=1.8,!=1.8.1,!=2.0.0,!=2.0.1,!=2.1.0,<3.0.0 - - python >=3.9 - - python-multipart >=0.0.7 - - starlette >=0.40.0,<0.42.0 - - typing_extensions >=4.8.0 + - jinja2 >=3.1.5 + - python-multipart >=0.0.18 - uvicorn-standard >=0.12.0 + - python license: MIT license_family: MIT - size: 73084 - timestamp: 1733362427885 + size: 77890 + timestamp: 1737647037273 - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.7-pyhd8ed1ab_0.conda sha256: 300683731013b7221922339cd40430bb3c2ddeeb658fd7e37f5099ffe64e4db0 md5: d960e0ea9e1c561aa928f6c4439f04c7 @@ -2555,9 +2571,9 @@ packages: license: GPL-2.0-only OR FTL size: 596430 timestamp: 1694616332835 -- conda: https://conda.anaconda.org/conda-forge/linux-64/frozenlist-1.5.0-py312h66e93f0_0.conda - sha256: 7e0c12983b20f2816b3712729b5a35ecb7ee152132ca7cf805427c62395ea823 - md5: f98e36c96b2c66d9043187179ddb04f4 +- conda: https://conda.anaconda.org/conda-forge/linux-64/frozenlist-1.5.0-py312h178313f_1.conda + sha256: 501e20626798b6d7f130f4db0fb02c0385d8f4c11ca525925602a4208afb343f + md5: fb986e1c089021979dc79606af78ef8f depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -2567,11 +2583,11 @@ packages: platform: linux license: Apache-2.0 license_family: APACHE - size: 60968 - timestamp: 1729699568442 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/frozenlist-1.5.0-py312hb2c0f52_0.conda - sha256: b0a9ff3e71452eed70877b2f3175d41cd85070da6deac381c5f3f61e1f19bccb - md5: 62fc11b0738ca15e0dd19b60cf280d12 + size: 60939 + timestamp: 1737645356438 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/frozenlist-1.5.0-py312hcc812fe_1.conda + sha256: 84895c5e207e0cb2044f3607fb36b82eb8cb45f0a009d03dc04c777ed975757d + md5: 9090bf5c43e8011fb2e9a82a1db20cc3 depends: - libgcc >=13 - python >=3.12,<3.13.0a0 @@ -2581,11 +2597,11 @@ packages: platform: linux license: Apache-2.0 license_family: APACHE - size: 59967 - timestamp: 1729699642726 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/frozenlist-1.5.0-py312h0bf5046_0.conda - sha256: 44d6d6b332421e621c029fb149f12dba1ccb5ed6ac632e2e807a9d92d6cb2864 - md5: 7960352935cc95ac23883c9b8c97f2ff + size: 60472 + timestamp: 1737645511278 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/frozenlist-1.5.0-py312h998013c_1.conda + sha256: d503ac8c050abdbd129253973f23be34944978d510de78ef5a3e6aa1e3d9552d + md5: 5eb3715c7e3fa9b533361375bfefe6ee depends: - __osx >=11.0 - python >=3.12,<3.13.0a0 @@ -2595,8 +2611,8 @@ packages: platform: osx license: Apache-2.0 license_family: APACHE - size: 53366 - timestamp: 1729699762631 + size: 57256 + timestamp: 1737645503377 - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.12.0-pyhd8ed1ab_0.conda sha256: 3320970c4604989eadf908397a9475f9e6a96a773c185915111399cbfbe47817 md5: e041ad4c43ab5e10c74587f95378ebc7 @@ -2894,15 +2910,15 @@ packages: license_family: MIT size: 1473375 timestamp: 1736703265901 -- conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda - sha256: ec89b7e5b8aa2f0219f666084446e1fb7b54545861e9caa892acb24d125761b5 - md5: 2aa5ff7fa34a81b9196532c84c10d865 +- conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda + sha256: 6ad78a180576c706aabeb5b4c8ceb97c0cb25f1e112d76495bff23e3779948ba + md5: 0a802cb9888dd14eeefc611f05c40b6e depends: - python >=3.9 license: MIT license_family: MIT - size: 29412 - timestamp: 1733299296857 + size: 30731 + timestamp: 1737618390337 - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda sha256: c84d012a245171f3ed666a8bf9319580c269b7843ffa79f26468842da3abd5df md5: 2ca8e6dbc86525c8b95e3c0ffa26442e @@ -2989,15 +3005,15 @@ packages: license_family: APACHE size: 278363 timestamp: 1736350219225 -- conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda - sha256: e91c6ef09d076e1d9a02819cd00fa7ee18ecf30cdd667605c853980216584d1b - md5: 566e75c90c1d0c8c459eb0ad9833dc7a +- conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda + sha256: 77af6f5fe8b62ca07d09ac60127a30d9069fdc3c68d6b256754d0ffb1f7779f8 + md5: 8e6923fc12f1fe8f8c4e5c9f343256ac depends: - python >=3.9 license: MIT license_family: MIT - size: 17239 - timestamp: 1733298862681 + size: 17397 + timestamp: 1737618427549 - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda sha256: 71e750d509f5fa3421087ba88ef9a7b9be11c53174af3aa4d06aff4c18b38e8e md5: 8b189310083baabfb622af68fd9d3ae3 @@ -3361,28 +3377,29 @@ packages: license_family: Apache size: 1178260 timestamp: 1736008642885 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-19.0.0-hce2e470_3_cpu.conda - build_number: 3 - sha256: 3b85b78a52ce673798e3c880fa41b818554912e722e81ca20cf95ba9257f13f0 - md5: a50ba9a0789061ea395a47a23d6a7734 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-19.0.0-h00a82cf_7_cpu.conda + build_number: 7 + sha256: 8b401a256e4632ab6c1ea8d3cfb16d7c8ff3b0fe5af7cd474202a369c63dc74c + md5: 8d553fa6a138f369ed94b8b1a76f1e77 depends: - __glibc >=2.17,<3.0.a0 - aws-crt-cpp >=0.29.9,<0.29.10.0a0 - - aws-sdk-cpp >=1.11.458,<1.11.459.0a0 + - aws-sdk-cpp >=1.11.489,<1.11.490.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-identity-cpp >=1.10.0,<1.10.1.0a0 - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 - bzip2 >=1.0.8,<2.0a0 - - gflags >=2.2.2,<2.3.0a0 - glog >=0.7.1,<0.8.0a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - libbrotlidec >=1.1.0,<1.2.0a0 - libbrotlienc >=1.1.0,<1.2.0a0 - libgcc >=13 - - libgoogle-cloud >=2.33.0,<2.34.0a0 - - libgoogle-cloud-storage >=2.33.0,<2.34.0a0 + - libgoogle-cloud >=2.34.0,<2.35.0a0 + - libgoogle-cloud-storage >=2.34.0,<2.35.0a0 + - libopentelemetry-cpp >=1.18.0,<1.19.0a0 + - libprotobuf >=5.28.3,<5.28.4.0a0 - libre2-11 >=2024.7.2 - libstdcxx >=13 - libutf8proc >=2.10.0,<2.11.0a0 @@ -3393,27 +3410,26 @@ packages: - snappy >=1.2.1,<1.3.0a0 - zstd >=1.5.6,<1.6.0a0 constrains: + - apache-arrow-proc =*=cpu - arrow-cpp <0.0a0 - parquet-cpp <0.0a0 - - apache-arrow-proc =*=cpu arch: x86_64 platform: linux license: Apache-2.0 - size: 8899665 - timestamp: 1737343852413 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-h4065667_12_cpu.conda - build_number: 12 - sha256: 0ac8aab370ef7a21e912cc312e5cbfa59afea8e004f5a372f2f25f96de0c9e9a - md5: 4789bb7ae93fe12bfd81169157896f49 + size: 8979130 + timestamp: 1737757402544 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-19.0.0-h03ebaaf_7_cpu.conda + build_number: 7 + sha256: f029b7fbed445a2cb08b95686e9a9cb30c04a10998ef632c2cf84fd0c0d1e424 + md5: b94870200ac053eff3dda878d523f1d1 depends: - aws-crt-cpp >=0.29.9,<0.29.10.0a0 - - aws-sdk-cpp >=1.11.458,<1.11.459.0a0 + - aws-sdk-cpp >=1.11.489,<1.11.490.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-identity-cpp >=1.10.0,<1.10.1.0a0 - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 - bzip2 >=1.0.8,<2.0a0 - - gflags >=2.2.2,<2.3.0a0 - glog >=0.7.1,<0.8.0a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 @@ -3422,6 +3438,8 @@ packages: - libgcc >=13 - libgoogle-cloud >=2.34.0,<2.35.0a0 - libgoogle-cloud-storage >=2.34.0,<2.35.0a0 + - libopentelemetry-cpp >=1.18.0,<1.19.0a0 + - libprotobuf >=5.28.3,<5.28.4.0a0 - libre2-11 >=2024.7.2 - libstdcxx >=13 - libutf8proc >=2.10.0,<2.11.0a0 @@ -3438,16 +3456,16 @@ packages: arch: aarch64 platform: linux license: Apache-2.0 - size: 8051570 - timestamp: 1737451538096 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-19.0.0-hd1aa4b5_4_cpu.conda - build_number: 4 - sha256: bf027b2e77b75b71b5213131fc4b06bbca6f1e195fde62090343e0a808d08bbe - md5: 94c2bcca143c043f8083a1f275de3caf + size: 8210159 + timestamp: 1737757741310 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-19.0.0-h819e3af_7_cpu.conda + build_number: 7 + sha256: e5e370673b9fe9459a826f474dc470b59fd6744fa652dd534f7ef722cd9be39c + md5: 3cb4f805d9742272591795d487786f2d depends: - __osx >=11.0 - aws-crt-cpp >=0.29.9,<0.29.10.0a0 - - aws-sdk-cpp >=1.11.458,<1.11.459.0a0 + - aws-sdk-cpp >=1.11.489,<1.11.490.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-identity-cpp >=1.10.0,<1.10.1.0a0 - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 @@ -3461,6 +3479,8 @@ packages: - libcxx >=18 - libgoogle-cloud >=2.34.0,<2.35.0a0 - libgoogle-cloud-storage >=2.34.0,<2.35.0a0 + - libopentelemetry-cpp >=1.18.0,<1.19.0a0 + - libprotobuf >=5.28.3,<5.28.4.0a0 - libre2-11 >=2024.7.2 - libutf8proc >=2.10.0,<2.11.0a0 - libzlib >=1.3.1,<2.0a0 @@ -3471,154 +3491,154 @@ packages: - zstd >=1.5.6,<1.6.0a0 constrains: - parquet-cpp <0.0a0 - - arrow-cpp <0.0a0 - apache-arrow-proc =*=cpu + - arrow-cpp <0.0a0 arch: arm64 platform: osx license: Apache-2.0 - size: 5532664 - timestamp: 1737458545986 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-19.0.0-hcb10f89_3_cpu.conda - build_number: 3 - sha256: f4e4b14fc2aaaf0d0a16a3b4b4dcae84b1b77daa02754f0873901089ce786a49 - md5: 3e1e31382e9c6ecd0b24bd8f6ddb33ec + size: 5540329 + timestamp: 1737756116679 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-19.0.0-hcb10f89_7_cpu.conda + build_number: 7 + sha256: 7018394af408b4ce344c97cd6f97bc676708067a9d2d834bf091b74f13b41be4 + md5: de10e3323bfa9dd8929f7fbe23665883 depends: - __glibc >=2.17,<3.0.a0 - - libarrow 19.0.0 hce2e470_3_cpu + - libarrow 19.0.0 h00a82cf_7_cpu - libgcc >=13 - libstdcxx >=13 arch: x86_64 platform: linux license: Apache-2.0 - size: 618570 - timestamp: 1737343896206 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h3b568fd_12_cpu.conda - build_number: 12 - sha256: c93daa943342eb848e5a44d4f48749f96decbde7b0f7d830fe56d0d506c03576 - md5: 8ec3804980e19b70ebffbeb623ce084b + size: 637717 + timestamp: 1737757443960 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-19.0.0-h3b568fd_7_cpu.conda + build_number: 7 + sha256: 97911c3addb66033747e12c608ca32ce5c56d6d9f35674cfb97fff0ff4c7e926 + md5: d50c51a7d86454c90de667fcafb8c785 depends: - - libarrow 18.1.0 h4065667_12_cpu + - libarrow 19.0.0 h03ebaaf_7_cpu - libgcc >=13 - libstdcxx >=13 arch: aarch64 platform: linux license: Apache-2.0 - size: 579114 - timestamp: 1737451608994 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-19.0.0-hf07054f_4_cpu.conda - build_number: 4 - sha256: 40de7e71d9fd4b799c452b3a0328ea260a3871de621f5344fb39b7f48371df75 - md5: e3265f8ab44051131966bd6f7b07a6e3 + size: 602410 + timestamp: 1737757792970 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-19.0.0-hf07054f_7_cpu.conda + build_number: 7 + sha256: a716bd2c6106f0508e69800f73a9368f5b5fadba0cd1f7f7ac753bf43392bf4d + md5: a138208af40b21c840c1075f3bec5014 depends: - __osx >=11.0 - - libarrow 19.0.0 hd1aa4b5_4_cpu + - libarrow 19.0.0 h819e3af_7_cpu - libcxx >=18 arch: arm64 platform: osx license: Apache-2.0 - size: 481968 - timestamp: 1737458659266 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-19.0.0-hcb10f89_3_cpu.conda - build_number: 3 - sha256: c5cdf03d72d028e8af774aabd29cd92fb87f54cd579a9ffe77ad228c51faaa82 - md5: 1face9ff13ec61bfb065063d35fda864 + size: 499319 + timestamp: 1737756215547 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-19.0.0-hcb10f89_7_cpu.conda + build_number: 7 + sha256: 4f3864b3f004fc320f28ecc5bb47e4cd927f40ef8dc6a16bdef51b34f51da921 + md5: eddf039322781fee4d4137f50769511c depends: - __glibc >=2.17,<3.0.a0 - - libarrow 19.0.0 hce2e470_3_cpu - - libarrow-acero 19.0.0 hcb10f89_3_cpu + - libarrow 19.0.0 h00a82cf_7_cpu + - libarrow-acero 19.0.0 hcb10f89_7_cpu - libgcc >=13 - - libparquet 19.0.0 h081d1f1_3_cpu + - libparquet 19.0.0 h081d1f1_7_cpu - libstdcxx >=13 arch: x86_64 platform: linux license: Apache-2.0 - size: 585153 - timestamp: 1737344009570 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h3b568fd_12_cpu.conda - build_number: 12 - sha256: 40bbdb394db6f405e6fae56bcbfc88fa433130668d2b39d1f109b7d6ffb8be76 - md5: e9b9a9941d35dff0a168741bdd54877e + size: 605090 + timestamp: 1737757550128 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-19.0.0-h3b568fd_7_cpu.conda + build_number: 7 + sha256: e055430747eba48c99a7b1ebe0596e126a121eeffd6ba667c00554a0b2707839 + md5: 2d6208bc6ab9089ee1787d9abbefd172 depends: - - libarrow 18.1.0 h4065667_12_cpu - - libarrow-acero 18.1.0 h3b568fd_12_cpu + - libarrow 19.0.0 h03ebaaf_7_cpu + - libarrow-acero 19.0.0 h3b568fd_7_cpu - libgcc >=13 - - libparquet 18.1.0 hfc78867_12_cpu + - libparquet 19.0.0 hfc78867_7_cpu - libstdcxx >=13 arch: aarch64 platform: linux license: Apache-2.0 - size: 559928 - timestamp: 1737451706623 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-19.0.0-hf07054f_4_cpu.conda - build_number: 4 - sha256: c9b01193f3dc2855276a743aa2d107b3893d886dbc561944154acc4c61a9b4cb - md5: c6588e0236da980424ca0b288c893d1a + size: 580599 + timestamp: 1737757863901 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-19.0.0-hf07054f_7_cpu.conda + build_number: 7 + sha256: dcc8d61eae311c5d377a41e2c6f964b86e7289917c93d3af03e5d4a4c88ab85a + md5: 5791e257ecb73e7745fa62446f22b1ea depends: - __osx >=11.0 - - libarrow 19.0.0 hd1aa4b5_4_cpu - - libarrow-acero 19.0.0 hf07054f_4_cpu + - libarrow 19.0.0 h819e3af_7_cpu + - libarrow-acero 19.0.0 hf07054f_7_cpu - libcxx >=18 - - libparquet 19.0.0 h636d7b7_4_cpu + - libparquet 19.0.0 h636d7b7_7_cpu arch: arm64 platform: osx license: Apache-2.0 - size: 488490 - timestamp: 1737459936234 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-19.0.0-h08228c5_3_cpu.conda - build_number: 3 - sha256: 414297c69d08ba45af0fccb5e22cc3b3e92181f3928eba1e1b1ab3641970c7e0 - md5: 8527e1e45c495991fd88f6531e176556 + size: 500722 + timestamp: 1737757369380 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-19.0.0-h08228c5_7_cpu.conda + build_number: 7 + sha256: 51ec47ed56880cfd64bfa012c8488d127d8f0acfe0d64707880393d49a2663a2 + md5: e14afa8912873a094a30ad9e455bafc3 depends: - __glibc >=2.17,<3.0.a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 19.0.0 hce2e470_3_cpu - - libarrow-acero 19.0.0 hcb10f89_3_cpu - - libarrow-dataset 19.0.0 hcb10f89_3_cpu + - libarrow 19.0.0 h00a82cf_7_cpu + - libarrow-acero 19.0.0 hcb10f89_7_cpu + - libarrow-dataset 19.0.0 hcb10f89_7_cpu - libgcc >=13 - libprotobuf >=5.28.3,<5.28.4.0a0 - libstdcxx >=13 arch: x86_64 platform: linux license: Apache-2.0 - size: 521371 - timestamp: 1737344062052 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h1e9d426_12_cpu.conda - build_number: 12 - sha256: 6216a1c48e41d3b304e87b19a8ff37c10e51ceca83bff5e942d763c93f6f55a1 - md5: f647dcbf46aebc86f9975ff3c856de45 + size: 521685 + timestamp: 1737757595490 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-19.0.0-h1e9d426_7_cpu.conda + build_number: 7 + sha256: bd85da0813384b5b5af2f2b05e4bc20aa606eb5528310c84e42aa495feec6050 + md5: b35923aad96b07d76db4c31ccc74584f depends: - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.1.0 h4065667_12_cpu - - libarrow-acero 18.1.0 h3b568fd_12_cpu - - libarrow-dataset 18.1.0 h3b568fd_12_cpu + - libarrow 19.0.0 h03ebaaf_7_cpu + - libarrow-acero 19.0.0 h3b568fd_7_cpu + - libarrow-dataset 19.0.0 h3b568fd_7_cpu - libgcc >=13 - libprotobuf >=5.28.3,<5.28.4.0a0 - libstdcxx >=13 arch: aarch64 platform: linux license: Apache-2.0 - size: 516135 - timestamp: 1737451754178 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-19.0.0-h4239455_4_cpu.conda - build_number: 4 - sha256: 1de1100bddcaa4aacae5cc30e3c0ae3259d130bee7b3d52a57a1c9950e0c6588 - md5: 6988cd2fdf01cae4bc454859a7cf8bac + size: 515585 + timestamp: 1737757899077 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-19.0.0-h4239455_7_cpu.conda + build_number: 7 + sha256: 94e5351779728cacd3fcadcfe082fc840a79333ce8b1056bb811e39417decd2a + md5: 05a75db98927961f86b64340442150c3 depends: - __osx >=11.0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 19.0.0 hd1aa4b5_4_cpu - - libarrow-acero 19.0.0 hf07054f_4_cpu - - libarrow-dataset 19.0.0 hf07054f_4_cpu + - libarrow 19.0.0 h819e3af_7_cpu + - libarrow-acero 19.0.0 hf07054f_7_cpu + - libarrow-dataset 19.0.0 hf07054f_7_cpu - libcxx >=18 - libprotobuf >=5.28.3,<5.28.4.0a0 arch: arm64 platform: osx license: Apache-2.0 - size: 449975 - timestamp: 1737460148737 + size: 449238 + timestamp: 1737757536452 - conda: https://conda.anaconda.org/conda-forge/linux-64/libasprintf-0.22.5-he8f35ee_3.conda sha256: 2da5c735811cbf38c7f7844ab457ff8b25046bbf5fe5ebd5dc1c2fafdf4fbe1c md5: 4fab9799da9571266d05ca5503330655 @@ -4640,9 +4660,9 @@ packages: license_family: GPL size: 463521 timestamp: 1729089357313 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.33.0-h2b5623c_1.conda - sha256: ae48ee93e2c226bf682f1e389c2fd51ae7bf77c2ce4b3aee069764f4be1c63f2 - md5: 61829a8dd5f4e2327e707572065bae41 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.34.0-h2b5623c_0.conda + sha256: 348ee1dddd82dcef5a185c86e65dda8acfc9b583acc425ccb9b661f2d433b2cc + md5: 2a5142c88dd6132eaa8079f99476e922 depends: - __glibc >=2.17,<3.0.a0 - libabseil * cxx17* @@ -4654,13 +4674,13 @@ packages: - libstdcxx >=13 - openssl >=3.4.0,<4.0a0 constrains: - - libgoogle-cloud 2.33.0 *_1 + - libgoogle-cloud 2.34.0 *_0 arch: x86_64 platform: linux license: Apache-2.0 license_family: Apache - size: 1254656 - timestamp: 1735648569457 + size: 1256795 + timestamp: 1737286199784 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-2.34.0-hccf9d24_0.conda sha256: 54267dda8fafc2a2d379ef77b6029d8240e0628d4b29758f788fb903f84397a3 md5: 1ce0fd876001c40801b40fea22987e41 @@ -4701,16 +4721,16 @@ packages: license_family: Apache size: 878217 timestamp: 1737284441192 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.33.0-h0121fbd_1.conda - sha256: 41022523320ca8633a6c615710823e596efadb50f06d724e1a0c81e27994f257 - md5: b0cfb5044685a7a9fa43ae669124f0a0 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.34.0-h0121fbd_0.conda + sha256: aa1b3b30ae6b2eab7c9e6a8e2fd8ec3776f25d2e3f0b6f9dc547ff8083bf25fa + md5: 9f0c43225243c81c6991733edcaafff5 depends: - __glibc >=2.17,<3.0.a0 - libabseil - libcrc32c >=1.1.2,<1.2.0a0 - libcurl - libgcc >=13 - - libgoogle-cloud 2.33.0 h2b5623c_1 + - libgoogle-cloud 2.34.0 h2b5623c_0 - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - openssl @@ -4718,8 +4738,8 @@ packages: platform: linux license: Apache-2.0 license_family: Apache - size: 784357 - timestamp: 1735648759177 + size: 785792 + timestamp: 1737286406612 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-storage-2.34.0-hb9b2b65_0.conda sha256: 4ad4fb7c02dcfa4c86dcf9591e0131a01fc0f2c3f2729c12882b944ddf2b8a9d md5: 0732a5988f7f556f2c1d1f51026fc1be @@ -4987,6 +5007,8 @@ packages: depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 + constrains: + - xz ==5.6.3=*_1 arch: x86_64 platform: linux license: 0BSD @@ -4997,6 +5019,8 @@ packages: md5: eb08b903681f9f2432c320e8ed626723 depends: - libgcc >=13 + constrains: + - xz ==5.6.3=*_1 arch: aarch64 platform: linux license: 0BSD @@ -5007,6 +5031,8 @@ packages: md5: b2553114a7f5e20ccd02378a77d836aa depends: - __osx >=11.0 + constrains: + - xz ==5.6.3=*_1 arch: arm64 platform: osx license: 0BSD @@ -5197,6 +5223,96 @@ packages: license_family: BSD size: 4165774 timestamp: 1730772154295 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-1.18.0-hfcad708_1.conda + sha256: 4ea235e08676f16b0d3c3380befe1478c0fa0141512ee709b011005c55c9619f + md5: 1f5a5d66e77a39dc5bd639ec953705cf + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcurl >=8.11.1,<9.0a0 + - libgrpc >=1.67.1,<1.68.0a0 + - libopentelemetry-cpp-headers 1.18.0 ha770c72_1 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libzlib >=1.3.1,<2.0a0 + - nlohmann_json + - prometheus-cpp >=1.3.0,<1.4.0a0 + constrains: + - cpp-opentelemetry-sdk =1.18.0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 801927 + timestamp: 1735643375271 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopentelemetry-cpp-1.18.0-h60b47f9_1.conda + sha256: 160c493cd0f897955b0b6035b51c6d7255ffbaed3c8a12d43e8e8a719d405aba + md5: afe3c8c53f4b6d27d553c230d4b34038 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcurl >=8.11.1,<9.0a0 + - libgrpc >=1.67.1,<1.68.0a0 + - libopentelemetry-cpp-headers 1.18.0 h8af1aa0_1 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libzlib >=1.3.1,<2.0a0 + - nlohmann_json + - prometheus-cpp >=1.3.0,<1.4.0a0 + constrains: + - cpp-opentelemetry-sdk =1.18.0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 800896 + timestamp: 1735643533825 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopentelemetry-cpp-1.18.0-h0c05b2d_1.conda + sha256: c6bcbd53d62a9e0d8c667e560db0ca2ecb7679277cbb3c23457aabe74fcb8cba + md5: 19c46cc18825f3924251c39ec1b0d983 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcurl >=8.11.1,<9.0a0 + - libgrpc >=1.67.1,<1.68.0a0 + - libopentelemetry-cpp-headers 1.18.0 hce30654_1 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libzlib >=1.3.1,<2.0a0 + - nlohmann_json + - prometheus-cpp >=1.3.0,<1.4.0a0 + constrains: + - cpp-opentelemetry-sdk =1.18.0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + size: 529588 + timestamp: 1735643889612 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-headers-1.18.0-ha770c72_1.conda + sha256: aa1f7dea79ea8513ff77339ba7c6e9cf10dfa537143e7718b1cfb3af52b649f2 + md5: 4fb055f57404920a43b147031471e03b + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 320359 + timestamp: 1735643346175 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopentelemetry-cpp-headers-1.18.0-h8af1aa0_1.conda + sha256: 981c0b29a0789597fa8ed147b02df2d2ad0c7f863d87df74770c40cee1800228 + md5: 282193b19a19e3b5d75d18ef82713ef0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 319401 + timestamp: 1735643509251 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopentelemetry-cpp-headers-1.18.0-hce30654_1.conda + sha256: 82e5f5ba64debbaab3c601b265dfc0cdb4d2880feba9bada5fd2e67b9f91ada5 + md5: e965dad955841507549fdacd8f7f94c0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + size: 320565 + timestamp: 1735643673319 - conda: https://conda.anaconda.org/conda-forge/linux-64/libopus-1.3.1-h7f98852_1.tar.bz2 sha256: 0e1c2740ebd1c93226dc5387461bbcf8142c518f2092f3ea7551f77755decc8f md5: 15345e56d527b330e1cacbdf58676e8f @@ -5228,13 +5344,13 @@ packages: license_family: BSD size: 252854 timestamp: 1606823635137 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-19.0.0-h081d1f1_3_cpu.conda - build_number: 3 - sha256: 287c4864b849180ce9e447df8227da2c4006001056e1668dacc3365264b0e828 - md5: 95f8b5758148e62a055f4c6538a31f0b +- conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-19.0.0-h081d1f1_7_cpu.conda + build_number: 7 + sha256: f117af1368c613328fb3af251287c6885962d9477a55d9bf1ab253626730b4ea + md5: a8b3022bfe8a2cb4249229768401340c depends: - __glibc >=2.17,<3.0.a0 - - libarrow 19.0.0 hce2e470_3_cpu + - libarrow 19.0.0 h00a82cf_7_cpu - libgcc >=13 - libstdcxx >=13 - libthrift >=0.21.0,<0.21.1.0a0 @@ -5242,14 +5358,14 @@ packages: arch: x86_64 platform: linux license: Apache-2.0 - size: 1227537 - timestamp: 1737343982323 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-hfc78867_12_cpu.conda - build_number: 12 - sha256: 224da9fb417e1dc569700cddf6dd7febe9a6e5c12547a389a5b934b8d385c4f8 - md5: 517447be85cda09f9410ca609c69499d + size: 1240902 + timestamp: 1737757526098 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-19.0.0-hfc78867_7_cpu.conda + build_number: 7 + sha256: 85a9964201ab6ed15b22a5ea29c66b44febc5a815a7d3234c3a605ca7644cc02 + md5: 8814a0cd443b9ebbb1662b370b6b14fb depends: - - libarrow 18.1.0 h4065667_12_cpu + - libarrow 19.0.0 h03ebaaf_7_cpu - libgcc >=13 - libstdcxx >=13 - libthrift >=0.21.0,<0.21.1.0a0 @@ -5257,23 +5373,23 @@ packages: arch: aarch64 platform: linux license: Apache-2.0 - size: 1116762 - timestamp: 1737451682325 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-19.0.0-h636d7b7_4_cpu.conda - build_number: 4 - sha256: d394423b8a096cec5481ef4cdb4d39dd4b89949cd6f23bdc14896d8af36d78f3 - md5: 639473b0344e0d2f46feb544cff5c6d8 + size: 1153344 + timestamp: 1737757846296 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-19.0.0-h636d7b7_7_cpu.conda + build_number: 7 + sha256: 637298e97c586a74e19df44cf378be3e99274aef09ee1b2a5f30c4492bd62e0d + md5: 3f0e87a16e30ff26bb513fcda9f971ac depends: - __osx >=11.0 - - libarrow 19.0.0 hd1aa4b5_4_cpu + - libarrow 19.0.0 h819e3af_7_cpu - libcxx >=18 - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 arch: arm64 platform: osx license: Apache-2.0 - size: 885681 - timestamp: 1737459816091 + size: 893815 + timestamp: 1737757309795 - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.45-h943b412_0.conda sha256: b8f5b5ba9a14dedf7c97c01300de492b1b52b68eacbc3249a13fdbfa82349a2f md5: 85cbdaacad93808395ac295b5667d25b @@ -6159,47 +6275,47 @@ packages: license_family: BSD size: 24048 timestamp: 1733219945697 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025012205-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025012505-release.conda noarch: python - sha256: 63e2ce51c01fdb5a73f62ea5f862acea5946f45d6b6bd63dafc78d242822e1b7 - md5: 5289b5be19bf0f500e1a06f44d816343 + sha256: 83e72ee5d9c5965eefc04dc84a9f496b5064e006dbfcfe137ab1710285d6b3f3 + md5: 3359ea55713294fb8bb2c70e6bd5753a depends: - - max-core ==25.1.0.dev2025012205 release - - max-python >=25.1.0.dev2025012205,<26.0a0 - - mojo-jupyter ==25.1.0.dev2025012205 release - - mblack ==25.1.0.dev2025012205 release + - max-core ==25.1.0.dev2025012505 release + - max-python >=25.1.0.dev2025012505,<26.0a0 + - mojo-jupyter ==25.1.0.dev2025012505 release + - mblack ==25.1.0.dev2025012505 release license: LicenseRef-Modular-Proprietary - size: 9919 - timestamp: 1737524122346 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025012205-release.conda - sha256: 061e7c8aba735fd2d15aca623c2f81452723bc0a5ab1e5a63af1761a9eaba9ef - md5: 2d8a82ff460cd4e03382a9151a8cf8d8 + size: 9918 + timestamp: 1737782253436 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025012505-release.conda + sha256: d89d1a2279776c687b3b729d53b1e737477afc3eae214d5750b00a048667aaed + md5: ebf37a7d5882bb676718a5648dee3654 depends: - - mblack ==25.1.0.dev2025012205 release + - mblack ==25.1.0.dev2025012505 release license: LicenseRef-Modular-Proprietary - size: 242139658 - timestamp: 1737523134733 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025012205-release.conda - sha256: eade442118da29d8b42289e6859699b4faafcf51d02189729259a2e7a97a0dcc - md5: 8e0412932905d3a4decf17acd50899ce + size: 243130339 + timestamp: 1737782221031 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025012505-release.conda + sha256: ad52887002d135793158f9bc4afcd2ea1d89111f65351885669894bb23a83763 + md5: bde4e25a295f947b730261246613b83d depends: - - mblack ==25.1.0.dev2025012205 release + - mblack ==25.1.0.dev2025012505 release license: LicenseRef-Modular-Proprietary - size: 244683388 - timestamp: 1737524122344 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025012205-release.conda - sha256: b5ccec88293901182a43d7f407d04b522b729cefaab066788496adec5bd3f2d2 - md5: bd5da5f25bd5151b4b691c34acdbeff0 + size: 245590611 + timestamp: 1737782253434 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025012505-release.conda + sha256: b1d103910f7b6a273906ea40f7dc993144511ed61239a5d764aca21ea479fe46 + md5: e01118f345f22ed4efb89192dfbbdbc6 depends: - - mblack ==25.1.0.dev2025012205 release + - mblack ==25.1.0.dev2025012505 release license: LicenseRef-Modular-Proprietary - size: 203820478 - timestamp: 1737523349069 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025012205-3.12release.conda - sha256: ceb4d33afe634401be386903e2f516b78f2b5e23e15cbedad42cce2600c97b7d - md5: ecfacd66a5b71794c53a468fbefcef6a + size: 204961123 + timestamp: 1737782482300 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025012505-3.12release.conda + sha256: b52562f368fe5dbc95343bcd7f2ee4699a25589c689b0cba444e5a93757b1ea7 + md5: a43f10619b5e0502b7f59ad823770f9f depends: - - max-core ==25.1.0.dev2025012205 release + - max-core ==25.1.0.dev2025012505 release - python 3.12.* - fastapi - httpx @@ -6220,13 +6336,13 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 119861319 - timestamp: 1737523134743 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025012205-3.12release.conda - sha256: 14ae6f16ce6c895de574bb02307cd58e87e32013bde0d905d6a1a67e686ca204 - md5: fb06394177c69b52c2ecf9ceaa7b308b + size: 120565142 + timestamp: 1737782221040 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025012505-3.12release.conda + sha256: c6252c78ced4b1a2c793ff2cb5846bd34dd6d16e8fd65425e9f1df6fe6227b0d + md5: 8ee044754ebf79922c85299e7425abf3 depends: - - max-core ==25.1.0.dev2025012205 release + - max-core ==25.1.0.dev2025012505 release - python 3.12.* - fastapi - httpx @@ -6247,13 +6363,13 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 122258493 - timestamp: 1737524122355 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025012205-3.12release.conda - sha256: 35e34095931d604893d014773f8c61c1c09a9888946dec4a01f1db827bd2f439 - md5: 589be4ace2edf68cfc3cf1d0cc429864 + size: 123069129 + timestamp: 1737782253444 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025012505-3.12release.conda + sha256: 489140758c2f0df45e077c6d52aac9bd419774b2d00b0a594d49505495e7aca4 + md5: 03b88370aa08d78471ff2e88973534d3 depends: - - max-core ==25.1.0.dev2025012205 release + - max-core ==25.1.0.dev2025012505 release - python 3.12.* - fastapi - httpx @@ -6274,12 +6390,12 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 105223218 - timestamp: 1737523349072 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012205-release.conda + size: 105954416 + timestamp: 1737782482303 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012505-release.conda noarch: python - sha256: 31bce03569c241ade0a344f1fe1a683f928fe367ae57147b3e316783631822fe - md5: c54b5f7d0d777b8995e38978d8626ffc + sha256: 906a374c4b22380993352480333cd5fc9c1a2e2179ab2e7ea65abc3bd54fc35e + md5: 3109b109f417bff02b27ff1cc78239ae depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -6289,8 +6405,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130797 - timestamp: 1737524122352 + size: 130805 + timestamp: 1737782253440 - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda sha256: 78c1bbe1723449c52b7a9df1af2ee5f005209f67e40b6e1d3c7619127c43b1c7 md5: 592132998493b3ff25fd7479396e8351 @@ -6300,18 +6416,18 @@ packages: license_family: MIT size: 14465 timestamp: 1733255681319 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025012205-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025012505-release.conda noarch: python - sha256: 78e2818c9d17321c5fe73f9dca3d7a9c51ad989c00f8ea9721deb94a4f03800e - md5: ca3c9282adb4a04dbd02f3ab8e73445c + sha256: 6cba6b01c693678b0e48d5428788d3734e885f6efc911b345fae474e4405460f + md5: 16521d51e47d4d67cf1a42351687f6b8 depends: - - max-core ==25.1.0.dev2025012205 release + - max-core ==25.1.0.dev2025012505 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22925 - timestamp: 1737524122353 + size: 22934 + timestamp: 1737782253442 - conda: https://conda.anaconda.org/conda-forge/linux-64/mpg123-1.32.9-hc50e24c_0.conda sha256: 39c4700fb3fbe403a77d8cc27352fa72ba744db487559d5d44bf8411bb4ea200 md5: c7f302fd11eeb0987a6a5e1f3aed6a21 @@ -6474,6 +6590,43 @@ packages: license: X11 AND BSD-3-Clause size: 796754 timestamp: 1736683572099 +- conda: https://conda.anaconda.org/conda-forge/linux-64/nlohmann_json-3.11.3-he02047a_1.conda + sha256: ce4bcced4f8eea71b7cac8bc3daac097abf7a5792f278cd811dedada199500c1 + md5: e46f7ac4917215b49df2ea09a694a3fa + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 122743 + timestamp: 1723652407663 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/nlohmann_json-3.11.3-h0a1ffab_1.conda + sha256: c90b1f11fc337d90a9e4c5aeeacac1418c5ba6a195097086566d38bb2ecf0f24 + md5: f2bd10ff23ab5c87327439c4499b3f3e + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 122755 + timestamp: 1723652622631 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/nlohmann_json-3.11.3-h00cdb27_1.conda + sha256: 3f4e6a4fa074bb297855f8111ab974dab6d9f98b7d4317d4dd46f8687ee2363b + md5: d2dee849c806430eee64d3acc98ce090 + depends: + - __osx >=11.0 + - libcxx >=16 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 123250 + timestamp: 1723652704997 - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda sha256: fe3459c75cf84dcef6ef14efcc4adb0ade66038ddd27cadb894f34f4797687d8 md5: d8285bea2a350f63fab23bf460221f3f @@ -7124,6 +7277,52 @@ packages: license_family: MIT size: 47319 timestamp: 1693882007724 +- conda: https://conda.anaconda.org/conda-forge/linux-64/prometheus-cpp-1.3.0-ha5d0236_0.conda + sha256: 013669433eb447548f21c3c6b16b2ed64356f726b5f77c1b39d5ba17a8a4b8bc + md5: a83f6a2fdc079e643237887a37460668 + depends: + - __glibc >=2.17,<3.0.a0 + - libcurl >=8.10.1,<9.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - zlib + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 199544 + timestamp: 1730769112346 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/prometheus-cpp-1.3.0-h7938499_0.conda + sha256: 9350d7bbc3982a732ff13a7fd17b585509e3b7d0191ac7b810cc3224868e3648 + md5: 10f4301290e51c49979ff98d1bdf2556 + depends: + - libcurl >=8.10.1,<9.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - zlib + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 211335 + timestamp: 1730769181127 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/prometheus-cpp-1.3.0-h0967b3e_0.conda + sha256: 851a77ae1a8e90db9b9f3c4466abea7afb52713c3d98ceb0d37ba6ff27df2eff + md5: 7172339b49c94275ba42fec3eaeda34f + depends: + - __osx >=11.0 + - libcurl >=8.10.1,<9.0a0 + - libcxx >=18 + - libzlib >=1.3.1,<2.0a0 + - zlib + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 173220 + timestamp: 1730769371051 - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda sha256: bc8f00d5155deb7b47702cb8370f233935704100dbc23e30747c161d1b6cf3ab md5: 3e01e386307acc60b2f89af0b2e161aa @@ -7133,9 +7332,9 @@ packages: license_family: Apache size: 49002 timestamp: 1733327434163 -- conda: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.1-py312h66e93f0_0.conda - sha256: 5771311fb5ded614ca349c92579a0b752af55a310f40b71fc533e20625965391 - md5: 55d5742a696d7da1c1262e99b6217ceb +- conda: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.1-py312h178313f_1.conda + sha256: 6d5ff6490c53e14591b70924711fe7bd70eb7fbeeeb1cbd9ed2f6d794ec8c4eb + md5: 349635694b4df27336bc15a49e9220e9 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -7145,11 +7344,11 @@ packages: platform: linux license: Apache-2.0 license_family: APACHE - size: 52747 - timestamp: 1733391916349 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.2.1-py312hb2c0f52_0.conda - sha256: c7f62c11ed929ccf1f3d4a1e200e28be01e8d0e0786bf8f76c5893f2ea681e1b - md5: 50ab8953e7ff1333a4a47cda32e68123 + size: 52947 + timestamp: 1737635699390 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.2.1-py312hcc812fe_1.conda + sha256: d759d8ab9c060b42cabf6312b9a04aa590daecabf1dd4e35731f4bc1b5c388bb + md5: 533b07e9fd835938f465225613825eee depends: - libgcc >=13 - python >=3.12,<3.13.0a0 @@ -7159,11 +7358,11 @@ packages: platform: linux license: Apache-2.0 license_family: APACHE - size: 52484 - timestamp: 1733391993461 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.1-py312hea69d52_0.conda - sha256: f8c266c494aa1e4cfb8bf0b6fca060044b2f3d65afe4c5062ebeea382e77aa6d - md5: c84e3dd97fe25a17322c4a0f670c6750 + size: 52776 + timestamp: 1737635802135 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.1-py312h998013c_1.conda + sha256: 96145760baad111d7ae4213ea8f8cc035cf33b001f5ff37d92268e4d28b0941d + md5: 83678928c58c9ae76778a435b6c7a94a depends: - __osx >=11.0 - python >=3.12,<3.13.0a0 @@ -7173,8 +7372,8 @@ packages: platform: osx license: Apache-2.0 license_family: APACHE - size: 48225 - timestamp: 1733392308901 + size: 50942 + timestamp: 1737635896600 - conda: https://conda.anaconda.org/conda-forge/linux-64/protobuf-5.28.3-py312h2ec8cdc_0.conda sha256: acb2e0ee948e3941f8ed191cb77f654e06538638aed8ccd71cbc78a15242ebbb md5: 9d7e427d159c1b2d516cc047ff177c48 @@ -7311,23 +7510,23 @@ packages: license_family: APACHE size: 25289 timestamp: 1737128438818 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-18.1.0-py312h8025657_0.conda - sha256: 49db959887cb89b44053a44a98d0f35644fc0b2003587492f02b56046de0b60a - md5: 9bb7d32e96a5dcb5ea7fd90a11a83656 - depends: - - libarrow-acero 18.1.0.* - - libarrow-dataset 18.1.0.* - - libarrow-substrait 18.1.0.* - - libparquet 18.1.0.* - - pyarrow-core 18.1.0 *_0_* +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-19.0.0-py312h8025657_0.conda + sha256: 3a73d3d15031586214381edf5410a6920c1f75f52a8d8b994722b106d9a50150 + md5: a86fa414c44b7e3ee054cc385c79a822 + depends: + - libarrow-acero 19.0.0.* + - libarrow-dataset 19.0.0.* + - libarrow-substrait 19.0.0.* + - libparquet 19.0.0.* + - pyarrow-core 19.0.0 *_0_* - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 arch: aarch64 platform: linux license: Apache-2.0 license_family: APACHE - size: 25374 - timestamp: 1732611006864 + size: 25496 + timestamp: 1737129041038 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-19.0.0-py312h1f38498_0.conda sha256: 9d693901833c2ff4e5d67e1f2f6df50f699e1cec2f580c26d42299654830855a md5: bd5e025292ff1127aa1534b59e55c4d0 @@ -7365,11 +7564,11 @@ packages: license_family: APACHE size: 5230953 timestamp: 1737128097002 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-18.1.0-py312h66f7834_0_cpu.conda - sha256: e7eb062145be554c23dfefa0ebe8c5f6ae8c59635117a6921e66403d6addcda3 - md5: 3390c8b8f57e85506c92a37cf750bdd7 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-19.0.0-py312h66f7834_0_cpu.conda + sha256: 17ff419abfe9596f77857dfa635538200427d87283c28e64920d10d6533ec30e + md5: ce51dbcfeae8709f0b94c78eabe7cf5e depends: - - libarrow 18.1.0.* *cpu + - libarrow 19.0.0.* *cpu - libgcc >=13 - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 @@ -7383,8 +7582,8 @@ packages: platform: linux license: Apache-2.0 license_family: APACHE - size: 4406662 - timestamp: 1732610939832 + size: 5023430 + timestamp: 1737627066264 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-19.0.0-py312hc40f475_0_cpu.conda sha256: 6303fe1c3e6d36273b72f0eeb3f19897d2376d57fe8c757f55dcbfbaa5cd6840 md5: df502157843a7b1d90af04803767be15 @@ -7415,9 +7614,9 @@ packages: license_family: BSD size: 110100 timestamp: 1733195786147 -- conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.5-pyh3cfb1c2_0.conda - sha256: 0f32c30ddc610cd1113335d8b4f311f20f4d72754b7c1a5d0d9493f597cf11d2 - md5: e8ea30925c8271c4128375810d7d3d7a +- conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.6-pyh3cfb1c2_0.conda + sha256: 9a78801a28959edeb945e8270a4e666577b52fac0cf4e35f88cf122f73d83e75 + md5: c69f87041cf24dfc8cb6bf64ca7133c7 depends: - annotated-types >=0.6.0 - pydantic-core 2.27.2 @@ -7426,8 +7625,8 @@ packages: - typing_extensions >=4.12.2 license: MIT license_family: MIT - size: 296805 - timestamp: 1736458364196 + size: 296841 + timestamp: 1737761472006 - conda: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.27.2-py312h12e396e_0.conda sha256: 81602a4592ad2ac1a1cb57372fd25214e63b1c477d5818b0c21cde0f1f85c001 md5: bae01b2563030c085f5158c518b84e86 @@ -7574,9 +7773,9 @@ packages: license_family: BSD size: 888600 timestamp: 1736243563082 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pyinstrument-5.0.0-py312h66e93f0_0.conda - sha256: 8a006507a4003fb01eeee2f9ba79f994478694766ea3b445273da5c11cf8e763 - md5: 798f42d9bfdf125dc80ffbec0e96e0b6 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyinstrument-5.0.1-py312h66e93f0_0.conda + sha256: 3f1c0bc95f2c46dcd107f44cf742ee1fa40ba22e244f01083654743bbbcf28f3 + md5: 9f1d7b421e4c8fd00009490613db64d4 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -7586,11 +7785,11 @@ packages: platform: linux license: BSD-3-Clause license_family: BSD - size: 182021 - timestamp: 1728714164706 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyinstrument-5.0.0-py312hb2c0f52_0.conda - sha256: 7967b94b8f0ff75847302444e9c43ac11a391d74da24cb14fba1049fac9e5ba9 - md5: 5274663cb05dfbe316db50af6da4389f + size: 182333 + timestamp: 1737774425235 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyinstrument-5.0.1-py312hb2c0f52_0.conda + sha256: 16af5db4359078bcb526291855bf1075ab035a96fe4e8d5cc4b0b5c8cba89b9a + md5: 90f5e9e04b1ecf25ad3f28b606f63742 depends: - libgcc >=13 - python >=3.12,<3.13.0a0 @@ -7600,11 +7799,11 @@ packages: platform: linux license: BSD-3-Clause license_family: BSD - size: 183141 - timestamp: 1728714267954 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyinstrument-5.0.0-py312h0bf5046_0.conda - sha256: 6879d52fb0ec2258e2850476786a652c394220d53883c53691ed5390183ae925 - md5: f0e4a98d54477083ddc9d2f33507f848 + size: 183988 + timestamp: 1737774588265 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyinstrument-5.0.1-py312hea69d52_0.conda + sha256: 5e7de2f908af22bbd8cf3562ce5ebf65ad6c0d8e40038f90b56f4db750639ce2 + md5: 07b0eb9b6bd91dfa87f95032825690dc depends: - __osx >=11.0 - python >=3.12,<3.13.0a0 @@ -7614,8 +7813,8 @@ packages: platform: osx license: BSD-3-Clause license_family: BSD - size: 181512 - timestamp: 1728714205508 + size: 182524 + timestamp: 1737774624030 - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda sha256: ba3b032fa52709ce0d9fd388f63d330a026754587a2f461117cac9ab73d8d0d8 md5: 461219d1a5bd61342293efa2c0c90eac @@ -7750,6 +7949,7 @@ packages: depends: - python >=3.9 license: Apache-2.0 + license_family: APACHE size: 143794 timestamp: 1737541204030 - conda: https://conda.anaconda.org/conda-forge/linux-64/python-xxhash-3.5.0-py312h66e93f0_1.conda @@ -8459,17 +8659,17 @@ packages: license_family: BSD size: 15324 timestamp: 1735126414893 -- conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyha770c72_1.conda - sha256: b74fc76107487eb26624c01fc55bfab7eed03ae82e003333c86d8a1eeac53672 - md5: 0207dac04ae2200701fab697f0aaaac4 +- conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.45.2-pyha770c72_0.conda + sha256: 2c429dbbd5e7256517ef6cdfc30664b0c0e87f90f3c526afe3b97681aafb5623 + md5: acd5901cdd0365e18129f4748e524615 depends: - - anyio >=3.4.0,<5 + - anyio >=3.6.2,<5 - python >=3.9 - typing_extensions >=3.10.0 license: BSD-3-Clause license_family: BSD - size: 58838 - timestamp: 1733344472634 + size: 58040 + timestamp: 1736016898891 - conda: https://conda.anaconda.org/conda-forge/linux-64/svt-av1-2.3.0-h5888daf_0.conda sha256: df30a9be29f1a8b5a2e314dd5b16ccfbcbd1cc6a4f659340e8bc2bd4de37bc6f md5: 355898d24394b2af353eb96358db9fdd @@ -9340,6 +9540,43 @@ packages: license_family: MIT size: 21809 timestamp: 1732827613585 +- conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.1-hb9d3cd8_2.conda + sha256: 5d7c0e5f0005f74112a34a7425179f4eb6e73c92f5d109e6af4ddeca407c92ab + md5: c9f075ab2f33b3bbee9e62d4ad0a6cd8 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libzlib 1.3.1 hb9d3cd8_2 + arch: x86_64 + platform: linux + license: Zlib + license_family: Other + size: 92286 + timestamp: 1727963153079 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zlib-1.3.1-h86ecc28_2.conda + sha256: b4f649aa3ecdae384d5dad7074e198bff120edd3dfb816588e31738fc6d627b1 + md5: bc230abb5d21b63ff4799b0e75204783 + depends: + - libgcc >=13 + - libzlib 1.3.1 h86ecc28_2 + arch: aarch64 + platform: linux + license: Zlib + license_family: Other + size: 95582 + timestamp: 1727963203597 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zlib-1.3.1-h8359307_2.conda + sha256: 58f8860756680a4831c1bf4f294e2354d187f2e999791d53b1941834c4b37430 + md5: e3170d898ca6cb48f1bb567afb92f775 + depends: + - __osx >=11.0 + - libzlib 1.3.1 h8359307_2 + arch: arm64 + platform: osx + license: Zlib + license_family: Other + size: 77606 + timestamp: 1727963209370 - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312hef9b889_1.conda sha256: b97015e146437283f2213ff0e95abdc8e2480150634d81fbae6b96ee09f5e50b md5: 8b7069e9792ee4e5b4919a7a306d2e67 diff --git a/examples/magic.lock b/examples/magic.lock index ba26868d6b..1aa532e452 100644 --- a/examples/magic.lock +++ b/examples/magic.lock @@ -26,7 +26,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.2-h4e1184b_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-h4e1184b_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.9-he0e7f3f_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-h4d475cb_6.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.489-h4d475cb_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.10.0-h113e628_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.13.0-h3cf044e_1.conda @@ -49,23 +49,23 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda - 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-0.115.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.17.0-pyhd8ed1ab_0.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 + - conda: https://conda.anaconda.org/conda-forge/linux-64/frozenlist-1.5.0-py311h2dc5d0c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.12.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gflags-2.2.2-h5888daf_1005.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/glog-0.7.1-hbabe93e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/httptools-0.6.4-py311h9ecbd09_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.27.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.5-pyhd8ed1ab_0.conda @@ -77,10 +77,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-19.0.0-hce2e470_3_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-19.0.0-hcb10f89_3_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-19.0.0-hcb10f89_3_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-19.0.0-h08228c5_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-19.0.0-h00a82cf_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-19.0.0-hcb10f89_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-19.0.0-hcb10f89_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-19.0.0-h08228c5_7_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-26_linux64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hb9d3cd8_2.conda @@ -99,8 +99,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hd5240d6_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h77fa898_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.33.0-h2b5623c_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.33.0-h0121fbd_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.34.0-h2b5623c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.34.0-h0121fbd_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.67.1-h25350d4_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-hd590300_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda @@ -109,7 +109,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.28-pthreads_h94d23a6_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-19.0.0-h081d1f1_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-1.18.0-hfcad708_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-headers-1.18.0-ha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-19.0.0-h081d1f1_7_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.45-h943b412_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_2.conda @@ -131,16 +133,17 @@ 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-25.1.0.dev2025012205-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025012205-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025012205-3.11release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025012505-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025012505-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025012505-3.11release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012505-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-25.1.0.dev2025012205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025012505-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-h2d0b736_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/nlohmann_json-3.11.3-he02047a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py311h64a7726_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.3-h5fbd93e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.0-h7b32b05_1.conda @@ -157,18 +160,19 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-11.1.0-py311h1322bbf_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/prometheus-cpp-1.3.0-ha5d0236_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.1-py311h9ecbd09_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.1-py311h2dc5d0c_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/protobuf-5.28.3-py311hfdbb021_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-19.0.0-py311h38be061_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-19.0.0-py311h4854187_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.5-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.6-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.27.2-py311h9e33e62_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.7.1-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pyinstrument-5.0.0-py311h9ecbd09_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyinstrument-5.0.1-py311h9ecbd09_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.11.11-h9e4cc4f_1_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda @@ -194,7 +198,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-h8bd8927_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.2.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.45.2-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.21.0-py311h182c674_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py311h9ecbd09_0.conda @@ -221,6 +225,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.18.3-py311h2dc5d0c_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.1-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py311hbc35293_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda linux-aarch64: @@ -243,7 +248,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.2-h0f0193d_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h0f0193d_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.9-hab3ce66_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h88461e4_6.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.489-h88461e4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-core-cpp-1.14.0-h1887c18_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-identity-cpp-1.10.0-h47b0b28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-blobs-cpp-12.13.0-h185ecfd_1.conda @@ -266,23 +271,23 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda - 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-0.115.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.17.0-pyhd8ed1ab_0.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 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/frozenlist-1.5.0-py311h58d527c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.12.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gflags-2.2.2-h5ad3122_1005.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/glog-0.7.1-h468a4a4_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/httptools-0.6.4-py311ha879c10_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.27.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_1.conda @@ -295,10 +300,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.0.0-h4de3ea5_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h18dbdb1_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-19.0.0-h4065667_4_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-19.0.0-h3b568fd_4_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-19.0.0-h3b568fd_4_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-19.0.0-h1e9d426_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-19.0.0-h03ebaaf_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-19.0.0-h3b568fd_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-19.0.0-h3b568fd_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-19.0.0-h1e9d426_7_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-26_linuxaarch64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlicommon-1.1.0-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlidec-1.1.0-h86ecc28_2.conda @@ -327,7 +332,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnghttp2-1.64.0-hc8609a4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.28-pthreads_h9d3fd7e_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-19.0.0-hfc78867_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopentelemetry-cpp-1.18.0-h60b47f9_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopentelemetry-cpp-headers-1.18.0-h8af1aa0_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-19.0.0-hfc78867_7_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.45-hec79eb8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.3-h44a3b7b_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_2.conda @@ -349,16 +356,17 @@ 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-25.1.0.dev2025012205-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025012205-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025012205-3.11release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025012505-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025012505-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025012505-3.11release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012505-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-25.1.0.dev2025012205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025012505-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-ha32ae93_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/nlohmann_json-3.11.3-h0a1ffab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py311h69ead2a_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openjpeg-2.5.3-h3f56577_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.0-hd08dc88_1.conda @@ -375,18 +383,19 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pillow-11.1.0-py311ha4eaa5e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/prometheus-cpp-1.3.0-h7938499_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.2.1-py311ha879c10_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.2.1-py311h58d527c_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/protobuf-5.28.3-py311h89d996e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pthread-stubs-0.4-h86ecc28_1002.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-19.0.0-py311hfecb2dc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-19.0.0-py311ha6d2531_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.5-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.6-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pydantic-core-2.27.2-py311h0ca61a2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.7.1-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyinstrument-5.0.0-py311ha879c10_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyinstrument-5.0.1-py311ha879c10_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.11.11-h1683364_1_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda @@ -412,7 +421,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-hd4fb6f5_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.2.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.45.2-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.21.0-py311h5e37e04_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py311h5487e9b_0.conda @@ -439,6 +448,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.18.3-py311h58d527c_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zeromq-4.3.5-h5efb499_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zlib-1.3.1-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstandard-0.23.0-py311hd5293d8_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.6-h02f22dd_0.conda osx-arm64: @@ -460,7 +470,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.2-hc8a0bd2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-hc8a0bd2_4.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.9-ha81f72f_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-h0e5014b_6.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.489-h0e5014b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.14.0-hd50102c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.10.0-hc602bab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-blobs-cpp-12.13.0-h7585a09_1.conda @@ -483,23 +493,23 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda - 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-0.115.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.17.0-pyhd8ed1ab_0.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 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/frozenlist-1.5.0-py311h4921393_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.12.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gflags-2.2.2-hf9b8971_1005.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/glog-0.7.1-heb240a5_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/httptools-0.6.4-py311h917b07b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.27.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_1.conda @@ -510,10 +520,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.16-ha0e7c42_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_h07bc746_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-19.0.0-hd1aa4b5_4_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-19.0.0-hf07054f_4_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-19.0.0-hf07054f_4_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-19.0.0-h4239455_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-19.0.0-h819e3af_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-19.0.0-hf07054f_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-19.0.0-hf07054f_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-19.0.0-h4239455_7_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-26_osxarm64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.1.0-hd74edd7_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.1.0-hd74edd7_2.conda @@ -539,7 +549,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.3-h39f12f2_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.64.0-h6d7220d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.28-openmp_hf332438_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-19.0.0-h636d7b7_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopentelemetry-cpp-1.18.0-h0c05b2d_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopentelemetry-cpp-headers-1.18.0-hce30654_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-19.0.0-h636d7b7_7_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.45-h3783ad8_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.3-h3bd63a1_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h07bc746_2.conda @@ -558,16 +570,17 @@ 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-25.1.0.dev2025012205-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025012205-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025012205-3.11release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025012505-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025012505-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025012505-3.11release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012505-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-25.1.0.dev2025012205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025012505-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 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/nlohmann_json-3.11.3-h00cdb27_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py311h7125741_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openjpeg-2.5.3-h8a3d83b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.0-h81ee809_1.conda @@ -584,18 +597,19 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-11.1.0-py311hb9ba9e9_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/prometheus-cpp-1.3.0-h0967b3e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.1-py311h917b07b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.1-py311h4921393_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/protobuf-5.28.3-py311h155a34a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pthread-stubs-0.4-hd74edd7_1002.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-19.0.0-py311ha1ab1f8_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-19.0.0-py311he04fa90_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.5-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.6-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.27.2-py311h3ff9189_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.7.1-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyinstrument-5.0.0-py311hae2e1ce_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyinstrument-5.0.1-py311h917b07b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.11.11-hc22306f_1_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda @@ -620,7 +634,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-h98b9ce2_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.2.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.45.2-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.21.0-py311h82b0fb8_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py311h917b07b_0.conda @@ -647,6 +661,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.18.3-py311h4921393_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zlib-1.3.1-h8359307_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py311ha60cc69_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.6-hb46c0d2_0.conda packages: @@ -1333,9 +1348,9 @@ packages: license_family: Apache size: 235976 timestamp: 1737565563139 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-h4d475cb_6.conda - sha256: 2309d96d537b5c3810c6e9fbf5b6bb7e06ce907a609d172063ab504b2cc67f30 - md5: 6139e84bbb6fdb27ca49c2981613a5fa +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.489-h4d475cb_0.conda + sha256: 08d6b7d2ed17bfcc7deb903c7751278ee434abdb27e3be0dceb561f30f030c75 + md5: b775e9f46dfa94b228a81d8e8c6d8b1d depends: - __glibc >=2.17,<3.0.a0 - aws-c-common >=0.10.6,<0.10.7.0a0 @@ -1351,11 +1366,11 @@ packages: platform: linux license: Apache-2.0 license_family: Apache - size: 3069914 - timestamp: 1737049585807 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h88461e4_6.conda - sha256: f97e071ffb87bc33923f798761ec6a854614ce193913d34d3248515d18357baa - md5: 0d7f1ee2e5572bf9d1fd78f0f2ab6f6b + size: 3144364 + timestamp: 1737576036746 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.489-h88461e4_0.conda + sha256: 88353e82b053763168cddbe2f88048defc1c97b3dad0966fbe8c4fa7aa592c7e + md5: e725d8fa77a6a5f38a78c5de914a5f40 depends: - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 @@ -1370,11 +1385,11 @@ packages: platform: linux license: Apache-2.0 license_family: Apache - size: 2919798 - timestamp: 1737049659061 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-h0e5014b_6.conda - sha256: 8c21ce4692d1631b96adea099d7c2b905fc5d078db63bf754d85600dcf184651 - md5: a3b7b9a81d8c6a8f963f619d9e362c39 + size: 3015109 + timestamp: 1737575993030 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.489-h0e5014b_0.conda + sha256: d82451530ddf363d8bb31a8a7391bb9699f745e940ace91d78c0e6170deef03c + md5: 156cfb45a1bb8cffc81e59047bb34f51 depends: - __osx >=11.0 - aws-c-common >=0.10.6,<0.10.7.0a0 @@ -1389,8 +1404,8 @@ packages: platform: osx license: Apache-2.0 license_family: Apache - size: 2834057 - timestamp: 1737126583846 + size: 2874126 + timestamp: 1737577023623 - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda sha256: fe07debdb089a3db17f40a7f20d283d75284bb4fc269ef727b8ba6fc93f7cb5a md5: 0a8838771cc2e985cd295e01ae83baf1 @@ -1934,24 +1949,25 @@ packages: license: MIT and PSF-2.0 size: 20486 timestamp: 1733208916977 -- conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.6-pyhd8ed1ab_0.conda - sha256: d7826d537c667093c9de96411a09585a8d620c84a830a0195e58e9a0df45f018 - md5: 1b1e0c97830cdf75f1f371bd467ab657 +- conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.7-pyh29332c3_1.conda + sha256: ac0c357b216e0b37d1a31af200548783d9e5a0413caaee92c5184dbef63b578e + md5: b53637ce62c4bcf3123a2a40f6a3824b depends: + - python >=3.9 + - starlette >=0.40.0,<0.46.0 + - typing_extensions >=4.8.0 + - pydantic >=1.7.4,!=1.8,!=1.8.1,!=2.0.0,!=2.0.1,!=2.1.0,<3.0.0 - email_validator >=2.0.0 - fastapi-cli >=0.0.5 - httpx >=0.23.0 - - jinja2 >=2.11.2 - - pydantic >=1.7.4,!=1.8,!=1.8.1,!=2.0.0,!=2.0.1,!=2.1.0,<3.0.0 - - python >=3.9 - - python-multipart >=0.0.7 - - starlette >=0.40.0,<0.42.0 - - typing_extensions >=4.8.0 + - jinja2 >=3.1.5 + - python-multipart >=0.0.18 - uvicorn-standard >=0.12.0 + - python license: MIT license_family: MIT - size: 73084 - timestamp: 1733362427885 + size: 77890 + timestamp: 1737647037273 - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.7-pyhd8ed1ab_0.conda sha256: 300683731013b7221922339cd40430bb3c2ddeeb658fd7e37f5099ffe64e4db0 md5: d960e0ea9e1c561aa928f6c4439f04c7 @@ -2007,9 +2023,9 @@ packages: license: GPL-2.0-only OR FTL size: 596430 timestamp: 1694616332835 -- conda: https://conda.anaconda.org/conda-forge/linux-64/frozenlist-1.5.0-py311h9ecbd09_0.conda - sha256: 5bde4e41dd1bdf42488f1b86039f38914e87f4a6b46c15224c217651f964de8b - md5: 75424a18fb275a18b288c099b869c3bc +- conda: https://conda.anaconda.org/conda-forge/linux-64/frozenlist-1.5.0-py311h2dc5d0c_1.conda + sha256: f42d8a79ef19c3ab660bec902c00c3d1c706c499ade10ac08128d757c93a7bfc + md5: 3bc993732a46956232503b005a58c051 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -2019,11 +2035,11 @@ packages: platform: linux license: Apache-2.0 license_family: APACHE - size: 60988 - timestamp: 1729699558841 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/frozenlist-1.5.0-py311ha879c10_0.conda - sha256: 1b31825a689aa35a07ce4a7f1994668f2c2344cfdb7efdb05e820d8fc1ca6949 - md5: ea2f2c07a1173d0b1823fe4471203d6d + size: 60911 + timestamp: 1737645516304 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/frozenlist-1.5.0-py311h58d527c_1.conda + sha256: 512e68c0053ab9495ccb0207e4d2b29f348dc9d7f7c479a8fd68ef74332226b7 + md5: 2ed2f19c420343f0fc18277d3dedfe26 depends: - libgcc >=13 - python >=3.11,<3.12.0a0 @@ -2033,11 +2049,11 @@ packages: platform: linux license: Apache-2.0 license_family: APACHE - size: 60923 - timestamp: 1729699681174 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/frozenlist-1.5.0-py311hae2e1ce_0.conda - sha256: 3df51bbf74052c5d29a33cf8c8c57302699937f883e0e4e9e506c7e0b09e45a5 - md5: 7f28e6daf0b4963be1061291cbe10bfb + size: 61113 + timestamp: 1737645417807 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/frozenlist-1.5.0-py311h4921393_1.conda + sha256: f23f65686688ba67c5649e3d7ff3f96344d1d5b647ad51f66ee013f8d9bd114c + md5: fd7c347b480cd5ff02bc12487806b6f2 depends: - __osx >=11.0 - python >=3.11,<3.12.0a0 @@ -2047,8 +2063,8 @@ packages: platform: osx license: Apache-2.0 license_family: APACHE - size: 54023 - timestamp: 1729699703032 + size: 56495 + timestamp: 1737645461874 - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.12.0-pyhd8ed1ab_0.conda sha256: 3320970c4604989eadf908397a9475f9e6a96a773c185915111399cbfbe47817 md5: e041ad4c43ab5e10c74587f95378ebc7 @@ -2165,15 +2181,15 @@ packages: license_family: MIT size: 52000 timestamp: 1733298867359 -- conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda - sha256: ec89b7e5b8aa2f0219f666084446e1fb7b54545861e9caa892acb24d125761b5 - md5: 2aa5ff7fa34a81b9196532c84c10d865 +- conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda + sha256: 6ad78a180576c706aabeb5b4c8ceb97c0cb25f1e112d76495bff23e3779948ba + md5: 0a802cb9888dd14eeefc611f05c40b6e depends: - python >=3.9 license: MIT license_family: MIT - size: 29412 - timestamp: 1733299296857 + size: 30731 + timestamp: 1737618390337 - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda sha256: c84d012a245171f3ed666a8bf9319580c269b7843ffa79f26468842da3abd5df md5: 2ca8e6dbc86525c8b95e3c0ffa26442e @@ -2260,15 +2276,15 @@ packages: license_family: APACHE size: 278363 timestamp: 1736350219225 -- conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda - sha256: e91c6ef09d076e1d9a02819cd00fa7ee18ecf30cdd667605c853980216584d1b - md5: 566e75c90c1d0c8c459eb0ad9833dc7a +- conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda + sha256: 77af6f5fe8b62ca07d09ac60127a30d9069fdc3c68d6b256754d0ffb1f7779f8 + md5: 8e6923fc12f1fe8f8c4e5c9f343256ac depends: - python >=3.9 license: MIT license_family: MIT - size: 17239 - timestamp: 1733298862681 + size: 17397 + timestamp: 1737618427549 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda sha256: 813298f2e54ef087dbfc9cc2e56e08ded41de65cff34c639cc8ba4e27e4540c9 md5: 268203e8b983fddb6412b36f2024e75c @@ -2558,28 +2574,29 @@ packages: license_family: Apache size: 1178260 timestamp: 1736008642885 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-19.0.0-hce2e470_3_cpu.conda - build_number: 3 - sha256: 3b85b78a52ce673798e3c880fa41b818554912e722e81ca20cf95ba9257f13f0 - md5: a50ba9a0789061ea395a47a23d6a7734 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-19.0.0-h00a82cf_7_cpu.conda + build_number: 7 + sha256: 8b401a256e4632ab6c1ea8d3cfb16d7c8ff3b0fe5af7cd474202a369c63dc74c + md5: 8d553fa6a138f369ed94b8b1a76f1e77 depends: - __glibc >=2.17,<3.0.a0 - aws-crt-cpp >=0.29.9,<0.29.10.0a0 - - aws-sdk-cpp >=1.11.458,<1.11.459.0a0 + - aws-sdk-cpp >=1.11.489,<1.11.490.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-identity-cpp >=1.10.0,<1.10.1.0a0 - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 - bzip2 >=1.0.8,<2.0a0 - - gflags >=2.2.2,<2.3.0a0 - glog >=0.7.1,<0.8.0a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - libbrotlidec >=1.1.0,<1.2.0a0 - libbrotlienc >=1.1.0,<1.2.0a0 - libgcc >=13 - - libgoogle-cloud >=2.33.0,<2.34.0a0 - - libgoogle-cloud-storage >=2.33.0,<2.34.0a0 + - libgoogle-cloud >=2.34.0,<2.35.0a0 + - libgoogle-cloud-storage >=2.34.0,<2.35.0a0 + - libopentelemetry-cpp >=1.18.0,<1.19.0a0 + - libprotobuf >=5.28.3,<5.28.4.0a0 - libre2-11 >=2024.7.2 - libstdcxx >=13 - libutf8proc >=2.10.0,<2.11.0a0 @@ -2590,27 +2607,26 @@ packages: - snappy >=1.2.1,<1.3.0a0 - zstd >=1.5.6,<1.6.0a0 constrains: + - apache-arrow-proc =*=cpu - arrow-cpp <0.0a0 - parquet-cpp <0.0a0 - - apache-arrow-proc =*=cpu arch: x86_64 platform: linux license: Apache-2.0 - size: 8899665 - timestamp: 1737343852413 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-19.0.0-h4065667_4_cpu.conda - build_number: 4 - sha256: 68a7487dfb5673cd099def1acde4cbe64cc45df386119b59e831da23a2c3ee9e - md5: ede6f02748fe5b4e8dcb63c0340a69d9 + size: 8979130 + timestamp: 1737757402544 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-19.0.0-h03ebaaf_7_cpu.conda + build_number: 7 + sha256: f029b7fbed445a2cb08b95686e9a9cb30c04a10998ef632c2cf84fd0c0d1e424 + md5: b94870200ac053eff3dda878d523f1d1 depends: - aws-crt-cpp >=0.29.9,<0.29.10.0a0 - - aws-sdk-cpp >=1.11.458,<1.11.459.0a0 + - aws-sdk-cpp >=1.11.489,<1.11.490.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-identity-cpp >=1.10.0,<1.10.1.0a0 - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 - bzip2 >=1.0.8,<2.0a0 - - gflags >=2.2.2,<2.3.0a0 - glog >=0.7.1,<0.8.0a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 @@ -2619,6 +2635,8 @@ packages: - libgcc >=13 - libgoogle-cloud >=2.34.0,<2.35.0a0 - libgoogle-cloud-storage >=2.34.0,<2.35.0a0 + - libopentelemetry-cpp >=1.18.0,<1.19.0a0 + - libprotobuf >=5.28.3,<5.28.4.0a0 - libre2-11 >=2024.7.2 - libstdcxx >=13 - libutf8proc >=2.10.0,<2.11.0a0 @@ -2629,22 +2647,22 @@ packages: - snappy >=1.2.1,<1.3.0a0 - zstd >=1.5.6,<1.6.0a0 constrains: + - arrow-cpp <0.0a0 - apache-arrow-proc =*=cpu - parquet-cpp <0.0a0 - - arrow-cpp <0.0a0 arch: aarch64 platform: linux license: Apache-2.0 - size: 8138173 - timestamp: 1737460061797 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-19.0.0-hd1aa4b5_4_cpu.conda - build_number: 4 - sha256: bf027b2e77b75b71b5213131fc4b06bbca6f1e195fde62090343e0a808d08bbe - md5: 94c2bcca143c043f8083a1f275de3caf + size: 8210159 + timestamp: 1737757741310 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-19.0.0-h819e3af_7_cpu.conda + build_number: 7 + sha256: e5e370673b9fe9459a826f474dc470b59fd6744fa652dd534f7ef722cd9be39c + md5: 3cb4f805d9742272591795d487786f2d depends: - __osx >=11.0 - aws-crt-cpp >=0.29.9,<0.29.10.0a0 - - aws-sdk-cpp >=1.11.458,<1.11.459.0a0 + - aws-sdk-cpp >=1.11.489,<1.11.490.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-identity-cpp >=1.10.0,<1.10.1.0a0 - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 @@ -2658,6 +2676,8 @@ packages: - libcxx >=18 - libgoogle-cloud >=2.34.0,<2.35.0a0 - libgoogle-cloud-storage >=2.34.0,<2.35.0a0 + - libopentelemetry-cpp >=1.18.0,<1.19.0a0 + - libprotobuf >=5.28.3,<5.28.4.0a0 - libre2-11 >=2024.7.2 - libutf8proc >=2.10.0,<2.11.0a0 - libzlib >=1.3.1,<2.0a0 @@ -2668,154 +2688,154 @@ packages: - zstd >=1.5.6,<1.6.0a0 constrains: - parquet-cpp <0.0a0 - - arrow-cpp <0.0a0 - apache-arrow-proc =*=cpu + - arrow-cpp <0.0a0 arch: arm64 platform: osx license: Apache-2.0 - size: 5532664 - timestamp: 1737458545986 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-19.0.0-hcb10f89_3_cpu.conda - build_number: 3 - sha256: f4e4b14fc2aaaf0d0a16a3b4b4dcae84b1b77daa02754f0873901089ce786a49 - md5: 3e1e31382e9c6ecd0b24bd8f6ddb33ec + size: 5540329 + timestamp: 1737756116679 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-19.0.0-hcb10f89_7_cpu.conda + build_number: 7 + sha256: 7018394af408b4ce344c97cd6f97bc676708067a9d2d834bf091b74f13b41be4 + md5: de10e3323bfa9dd8929f7fbe23665883 depends: - __glibc >=2.17,<3.0.a0 - - libarrow 19.0.0 hce2e470_3_cpu + - libarrow 19.0.0 h00a82cf_7_cpu - libgcc >=13 - libstdcxx >=13 arch: x86_64 platform: linux license: Apache-2.0 - size: 618570 - timestamp: 1737343896206 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-19.0.0-h3b568fd_4_cpu.conda - build_number: 4 - sha256: db659a40804ba115e1685313d5ef7d530166f3c8bf4998adc1e53715e174b0a1 - md5: a9998823374fef02a1573599fe17d529 + size: 637717 + timestamp: 1737757443960 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-19.0.0-h3b568fd_7_cpu.conda + build_number: 7 + sha256: 97911c3addb66033747e12c608ca32ce5c56d6d9f35674cfb97fff0ff4c7e926 + md5: d50c51a7d86454c90de667fcafb8c785 depends: - - libarrow 19.0.0 h4065667_4_cpu + - libarrow 19.0.0 h03ebaaf_7_cpu - libgcc >=13 - libstdcxx >=13 arch: aarch64 platform: linux license: Apache-2.0 - size: 578847 - timestamp: 1737460106358 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-19.0.0-hf07054f_4_cpu.conda - build_number: 4 - sha256: 40de7e71d9fd4b799c452b3a0328ea260a3871de621f5344fb39b7f48371df75 - md5: e3265f8ab44051131966bd6f7b07a6e3 + size: 602410 + timestamp: 1737757792970 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-19.0.0-hf07054f_7_cpu.conda + build_number: 7 + sha256: a716bd2c6106f0508e69800f73a9368f5b5fadba0cd1f7f7ac753bf43392bf4d + md5: a138208af40b21c840c1075f3bec5014 depends: - __osx >=11.0 - - libarrow 19.0.0 hd1aa4b5_4_cpu + - libarrow 19.0.0 h819e3af_7_cpu - libcxx >=18 arch: arm64 platform: osx license: Apache-2.0 - size: 481968 - timestamp: 1737458659266 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-19.0.0-hcb10f89_3_cpu.conda - build_number: 3 - sha256: c5cdf03d72d028e8af774aabd29cd92fb87f54cd579a9ffe77ad228c51faaa82 - md5: 1face9ff13ec61bfb065063d35fda864 + size: 499319 + timestamp: 1737756215547 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-19.0.0-hcb10f89_7_cpu.conda + build_number: 7 + sha256: 4f3864b3f004fc320f28ecc5bb47e4cd927f40ef8dc6a16bdef51b34f51da921 + md5: eddf039322781fee4d4137f50769511c depends: - __glibc >=2.17,<3.0.a0 - - libarrow 19.0.0 hce2e470_3_cpu - - libarrow-acero 19.0.0 hcb10f89_3_cpu + - libarrow 19.0.0 h00a82cf_7_cpu + - libarrow-acero 19.0.0 hcb10f89_7_cpu - libgcc >=13 - - libparquet 19.0.0 h081d1f1_3_cpu + - libparquet 19.0.0 h081d1f1_7_cpu - libstdcxx >=13 arch: x86_64 platform: linux license: Apache-2.0 - size: 585153 - timestamp: 1737344009570 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-19.0.0-h3b568fd_4_cpu.conda - build_number: 4 - sha256: 961963447e33176095114badd5000c5ff285c636e0df1647ac485e17dc39fbe2 - md5: c06648a35ef35ba6089ba36e1315f857 + size: 605090 + timestamp: 1737757550128 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-19.0.0-h3b568fd_7_cpu.conda + build_number: 7 + sha256: e055430747eba48c99a7b1ebe0596e126a121eeffd6ba667c00554a0b2707839 + md5: 2d6208bc6ab9089ee1787d9abbefd172 depends: - - libarrow 19.0.0 h4065667_4_cpu - - libarrow-acero 19.0.0 h3b568fd_4_cpu + - libarrow 19.0.0 h03ebaaf_7_cpu + - libarrow-acero 19.0.0 h3b568fd_7_cpu - libgcc >=13 - - libparquet 19.0.0 hfc78867_4_cpu + - libparquet 19.0.0 hfc78867_7_cpu - libstdcxx >=13 arch: aarch64 platform: linux license: Apache-2.0 - size: 559524 - timestamp: 1737460175618 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-19.0.0-hf07054f_4_cpu.conda - build_number: 4 - sha256: c9b01193f3dc2855276a743aa2d107b3893d886dbc561944154acc4c61a9b4cb - md5: c6588e0236da980424ca0b288c893d1a + size: 580599 + timestamp: 1737757863901 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-19.0.0-hf07054f_7_cpu.conda + build_number: 7 + sha256: dcc8d61eae311c5d377a41e2c6f964b86e7289917c93d3af03e5d4a4c88ab85a + md5: 5791e257ecb73e7745fa62446f22b1ea depends: - __osx >=11.0 - - libarrow 19.0.0 hd1aa4b5_4_cpu - - libarrow-acero 19.0.0 hf07054f_4_cpu + - libarrow 19.0.0 h819e3af_7_cpu + - libarrow-acero 19.0.0 hf07054f_7_cpu - libcxx >=18 - - libparquet 19.0.0 h636d7b7_4_cpu + - libparquet 19.0.0 h636d7b7_7_cpu arch: arm64 platform: osx license: Apache-2.0 - size: 488490 - timestamp: 1737459936234 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-19.0.0-h08228c5_3_cpu.conda - build_number: 3 - sha256: 414297c69d08ba45af0fccb5e22cc3b3e92181f3928eba1e1b1ab3641970c7e0 - md5: 8527e1e45c495991fd88f6531e176556 + size: 500722 + timestamp: 1737757369380 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-19.0.0-h08228c5_7_cpu.conda + build_number: 7 + sha256: 51ec47ed56880cfd64bfa012c8488d127d8f0acfe0d64707880393d49a2663a2 + md5: e14afa8912873a094a30ad9e455bafc3 depends: - __glibc >=2.17,<3.0.a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 19.0.0 hce2e470_3_cpu - - libarrow-acero 19.0.0 hcb10f89_3_cpu - - libarrow-dataset 19.0.0 hcb10f89_3_cpu + - libarrow 19.0.0 h00a82cf_7_cpu + - libarrow-acero 19.0.0 hcb10f89_7_cpu + - libarrow-dataset 19.0.0 hcb10f89_7_cpu - libgcc >=13 - libprotobuf >=5.28.3,<5.28.4.0a0 - libstdcxx >=13 arch: x86_64 platform: linux license: Apache-2.0 - size: 521371 - timestamp: 1737344062052 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-19.0.0-h1e9d426_4_cpu.conda - build_number: 4 - sha256: 283a6e1733c68edcb6c448dd4bb01aae4ffbcf865789d221c88420ecb77ec28e - md5: c1da574e3cc1adc1c8451c4eddef2a4a + size: 521685 + timestamp: 1737757595490 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-19.0.0-h1e9d426_7_cpu.conda + build_number: 7 + sha256: bd85da0813384b5b5af2f2b05e4bc20aa606eb5528310c84e42aa495feec6050 + md5: b35923aad96b07d76db4c31ccc74584f depends: - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 19.0.0 h4065667_4_cpu - - libarrow-acero 19.0.0 h3b568fd_4_cpu - - libarrow-dataset 19.0.0 h3b568fd_4_cpu + - libarrow 19.0.0 h03ebaaf_7_cpu + - libarrow-acero 19.0.0 h3b568fd_7_cpu + - libarrow-dataset 19.0.0 h3b568fd_7_cpu - libgcc >=13 - libprotobuf >=5.28.3,<5.28.4.0a0 - libstdcxx >=13 arch: aarch64 platform: linux license: Apache-2.0 - size: 515226 - timestamp: 1737460211936 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-19.0.0-h4239455_4_cpu.conda - build_number: 4 - sha256: 1de1100bddcaa4aacae5cc30e3c0ae3259d130bee7b3d52a57a1c9950e0c6588 - md5: 6988cd2fdf01cae4bc454859a7cf8bac + size: 515585 + timestamp: 1737757899077 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-19.0.0-h4239455_7_cpu.conda + build_number: 7 + sha256: 94e5351779728cacd3fcadcfe082fc840a79333ce8b1056bb811e39417decd2a + md5: 05a75db98927961f86b64340442150c3 depends: - __osx >=11.0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 19.0.0 hd1aa4b5_4_cpu - - libarrow-acero 19.0.0 hf07054f_4_cpu - - libarrow-dataset 19.0.0 hf07054f_4_cpu + - libarrow 19.0.0 h819e3af_7_cpu + - libarrow-acero 19.0.0 hf07054f_7_cpu + - libarrow-dataset 19.0.0 hf07054f_7_cpu - libcxx >=18 - libprotobuf >=5.28.3,<5.28.4.0a0 arch: arm64 platform: osx license: Apache-2.0 - size: 449975 - timestamp: 1737460148737 + size: 449238 + timestamp: 1737757536452 - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-26_linux64_openblas.conda build_number: 26 sha256: 30bd658682b124243f8e52d8edf8a19e7be1bc31e4fe4baec30a64002dc8cd0c @@ -3482,9 +3502,9 @@ packages: license_family: GPL size: 463521 timestamp: 1729089357313 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.33.0-h2b5623c_1.conda - sha256: ae48ee93e2c226bf682f1e389c2fd51ae7bf77c2ce4b3aee069764f4be1c63f2 - md5: 61829a8dd5f4e2327e707572065bae41 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.34.0-h2b5623c_0.conda + sha256: 348ee1dddd82dcef5a185c86e65dda8acfc9b583acc425ccb9b661f2d433b2cc + md5: 2a5142c88dd6132eaa8079f99476e922 depends: - __glibc >=2.17,<3.0.a0 - libabseil * cxx17* @@ -3496,13 +3516,13 @@ packages: - libstdcxx >=13 - openssl >=3.4.0,<4.0a0 constrains: - - libgoogle-cloud 2.33.0 *_1 + - libgoogle-cloud 2.34.0 *_0 arch: x86_64 platform: linux license: Apache-2.0 license_family: Apache - size: 1254656 - timestamp: 1735648569457 + size: 1256795 + timestamp: 1737286199784 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-2.34.0-hccf9d24_0.conda sha256: 54267dda8fafc2a2d379ef77b6029d8240e0628d4b29758f788fb903f84397a3 md5: 1ce0fd876001c40801b40fea22987e41 @@ -3543,16 +3563,16 @@ packages: license_family: Apache size: 878217 timestamp: 1737284441192 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.33.0-h0121fbd_1.conda - sha256: 41022523320ca8633a6c615710823e596efadb50f06d724e1a0c81e27994f257 - md5: b0cfb5044685a7a9fa43ae669124f0a0 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.34.0-h0121fbd_0.conda + sha256: aa1b3b30ae6b2eab7c9e6a8e2fd8ec3776f25d2e3f0b6f9dc547ff8083bf25fa + md5: 9f0c43225243c81c6991733edcaafff5 depends: - __glibc >=2.17,<3.0.a0 - libabseil - libcrc32c >=1.1.2,<1.2.0a0 - libcurl - libgcc >=13 - - libgoogle-cloud 2.33.0 h2b5623c_1 + - libgoogle-cloud 2.34.0 h2b5623c_0 - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - openssl @@ -3560,8 +3580,8 @@ packages: platform: linux license: Apache-2.0 license_family: Apache - size: 784357 - timestamp: 1735648759177 + size: 785792 + timestamp: 1737286406612 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-storage-2.34.0-hb9b2b65_0.conda sha256: 4ad4fb7c02dcfa4c86dcf9591e0131a01fc0f2c3f2729c12882b944ddf2b8a9d md5: 0732a5988f7f556f2c1d1f51026fc1be @@ -3781,6 +3801,8 @@ packages: depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 + constrains: + - xz ==5.6.3=*_1 arch: x86_64 platform: linux license: 0BSD @@ -3791,6 +3813,8 @@ packages: md5: eb08b903681f9f2432c320e8ed626723 depends: - libgcc >=13 + constrains: + - xz ==5.6.3=*_1 arch: aarch64 platform: linux license: 0BSD @@ -3801,6 +3825,8 @@ packages: md5: b2553114a7f5e20ccd02378a77d836aa depends: - __osx >=11.0 + constrains: + - xz ==5.6.3=*_1 arch: arm64 platform: osx license: 0BSD @@ -3927,13 +3953,103 @@ packages: license_family: BSD size: 4165774 timestamp: 1730772154295 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-19.0.0-h081d1f1_3_cpu.conda - build_number: 3 - sha256: 287c4864b849180ce9e447df8227da2c4006001056e1668dacc3365264b0e828 - md5: 95f8b5758148e62a055f4c6538a31f0b +- conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-1.18.0-hfcad708_1.conda + sha256: 4ea235e08676f16b0d3c3380befe1478c0fa0141512ee709b011005c55c9619f + md5: 1f5a5d66e77a39dc5bd639ec953705cf + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcurl >=8.11.1,<9.0a0 + - libgrpc >=1.67.1,<1.68.0a0 + - libopentelemetry-cpp-headers 1.18.0 ha770c72_1 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libzlib >=1.3.1,<2.0a0 + - nlohmann_json + - prometheus-cpp >=1.3.0,<1.4.0a0 + constrains: + - cpp-opentelemetry-sdk =1.18.0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 801927 + timestamp: 1735643375271 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopentelemetry-cpp-1.18.0-h60b47f9_1.conda + sha256: 160c493cd0f897955b0b6035b51c6d7255ffbaed3c8a12d43e8e8a719d405aba + md5: afe3c8c53f4b6d27d553c230d4b34038 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcurl >=8.11.1,<9.0a0 + - libgrpc >=1.67.1,<1.68.0a0 + - libopentelemetry-cpp-headers 1.18.0 h8af1aa0_1 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libzlib >=1.3.1,<2.0a0 + - nlohmann_json + - prometheus-cpp >=1.3.0,<1.4.0a0 + constrains: + - cpp-opentelemetry-sdk =1.18.0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 800896 + timestamp: 1735643533825 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopentelemetry-cpp-1.18.0-h0c05b2d_1.conda + sha256: c6bcbd53d62a9e0d8c667e560db0ca2ecb7679277cbb3c23457aabe74fcb8cba + md5: 19c46cc18825f3924251c39ec1b0d983 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcurl >=8.11.1,<9.0a0 + - libgrpc >=1.67.1,<1.68.0a0 + - libopentelemetry-cpp-headers 1.18.0 hce30654_1 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libzlib >=1.3.1,<2.0a0 + - nlohmann_json + - prometheus-cpp >=1.3.0,<1.4.0a0 + constrains: + - cpp-opentelemetry-sdk =1.18.0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + size: 529588 + timestamp: 1735643889612 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-headers-1.18.0-ha770c72_1.conda + sha256: aa1f7dea79ea8513ff77339ba7c6e9cf10dfa537143e7718b1cfb3af52b649f2 + md5: 4fb055f57404920a43b147031471e03b + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 320359 + timestamp: 1735643346175 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopentelemetry-cpp-headers-1.18.0-h8af1aa0_1.conda + sha256: 981c0b29a0789597fa8ed147b02df2d2ad0c7f863d87df74770c40cee1800228 + md5: 282193b19a19e3b5d75d18ef82713ef0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 319401 + timestamp: 1735643509251 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopentelemetry-cpp-headers-1.18.0-hce30654_1.conda + sha256: 82e5f5ba64debbaab3c601b265dfc0cdb4d2880feba9bada5fd2e67b9f91ada5 + md5: e965dad955841507549fdacd8f7f94c0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + size: 320565 + timestamp: 1735643673319 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-19.0.0-h081d1f1_7_cpu.conda + build_number: 7 + sha256: f117af1368c613328fb3af251287c6885962d9477a55d9bf1ab253626730b4ea + md5: a8b3022bfe8a2cb4249229768401340c depends: - __glibc >=2.17,<3.0.a0 - - libarrow 19.0.0 hce2e470_3_cpu + - libarrow 19.0.0 h00a82cf_7_cpu - libgcc >=13 - libstdcxx >=13 - libthrift >=0.21.0,<0.21.1.0a0 @@ -3941,14 +4057,14 @@ packages: arch: x86_64 platform: linux license: Apache-2.0 - size: 1227537 - timestamp: 1737343982323 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-19.0.0-hfc78867_4_cpu.conda - build_number: 4 - sha256: 1c1eb9776f45a9090ac27e97fefdf3dbc05d66059da4d06d982de4da384ddd5c - md5: 04d85f3a67ad5c175dbb33a4c37d6641 + size: 1240902 + timestamp: 1737757526098 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-19.0.0-hfc78867_7_cpu.conda + build_number: 7 + sha256: 85a9964201ab6ed15b22a5ea29c66b44febc5a815a7d3234c3a605ca7644cc02 + md5: 8814a0cd443b9ebbb1662b370b6b14fb depends: - - libarrow 19.0.0 h4065667_4_cpu + - libarrow 19.0.0 h03ebaaf_7_cpu - libgcc >=13 - libstdcxx >=13 - libthrift >=0.21.0,<0.21.1.0a0 @@ -3956,23 +4072,23 @@ packages: arch: aarch64 platform: linux license: Apache-2.0 - size: 1137213 - timestamp: 1737460158219 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-19.0.0-h636d7b7_4_cpu.conda - build_number: 4 - sha256: d394423b8a096cec5481ef4cdb4d39dd4b89949cd6f23bdc14896d8af36d78f3 - md5: 639473b0344e0d2f46feb544cff5c6d8 + size: 1153344 + timestamp: 1737757846296 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-19.0.0-h636d7b7_7_cpu.conda + build_number: 7 + sha256: 637298e97c586a74e19df44cf378be3e99274aef09ee1b2a5f30c4492bd62e0d + md5: 3f0e87a16e30ff26bb513fcda9f971ac depends: - __osx >=11.0 - - libarrow 19.0.0 hd1aa4b5_4_cpu + - libarrow 19.0.0 h819e3af_7_cpu - libcxx >=18 - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 arch: arm64 platform: osx license: Apache-2.0 - size: 885681 - timestamp: 1737459816091 + size: 893815 + timestamp: 1737757309795 - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.45-h943b412_0.conda sha256: b8f5b5ba9a14dedf7c97c01300de492b1b52b68eacbc3249a13fdbfa82349a2f md5: 85cbdaacad93808395ac295b5667d25b @@ -4737,47 +4853,47 @@ packages: license_family: BSD size: 24976 timestamp: 1733219849253 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025012205-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025012505-release.conda noarch: python - sha256: 63e2ce51c01fdb5a73f62ea5f862acea5946f45d6b6bd63dafc78d242822e1b7 - md5: 5289b5be19bf0f500e1a06f44d816343 + sha256: 83e72ee5d9c5965eefc04dc84a9f496b5064e006dbfcfe137ab1710285d6b3f3 + md5: 3359ea55713294fb8bb2c70e6bd5753a depends: - - max-core ==25.1.0.dev2025012205 release - - max-python >=25.1.0.dev2025012205,<26.0a0 - - mojo-jupyter ==25.1.0.dev2025012205 release - - mblack ==25.1.0.dev2025012205 release + - max-core ==25.1.0.dev2025012505 release + - max-python >=25.1.0.dev2025012505,<26.0a0 + - mojo-jupyter ==25.1.0.dev2025012505 release + - mblack ==25.1.0.dev2025012505 release license: LicenseRef-Modular-Proprietary - size: 9919 - timestamp: 1737524122346 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025012205-release.conda - sha256: 061e7c8aba735fd2d15aca623c2f81452723bc0a5ab1e5a63af1761a9eaba9ef - md5: 2d8a82ff460cd4e03382a9151a8cf8d8 + size: 9918 + timestamp: 1737782253436 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025012505-release.conda + sha256: d89d1a2279776c687b3b729d53b1e737477afc3eae214d5750b00a048667aaed + md5: ebf37a7d5882bb676718a5648dee3654 depends: - - mblack ==25.1.0.dev2025012205 release + - mblack ==25.1.0.dev2025012505 release license: LicenseRef-Modular-Proprietary - size: 242139658 - timestamp: 1737523134733 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025012205-release.conda - sha256: eade442118da29d8b42289e6859699b4faafcf51d02189729259a2e7a97a0dcc - md5: 8e0412932905d3a4decf17acd50899ce + size: 243130339 + timestamp: 1737782221031 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025012505-release.conda + sha256: ad52887002d135793158f9bc4afcd2ea1d89111f65351885669894bb23a83763 + md5: bde4e25a295f947b730261246613b83d depends: - - mblack ==25.1.0.dev2025012205 release + - mblack ==25.1.0.dev2025012505 release license: LicenseRef-Modular-Proprietary - size: 244683388 - timestamp: 1737524122344 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025012205-release.conda - sha256: b5ccec88293901182a43d7f407d04b522b729cefaab066788496adec5bd3f2d2 - md5: bd5da5f25bd5151b4b691c34acdbeff0 + size: 245590611 + timestamp: 1737782253434 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025012505-release.conda + sha256: b1d103910f7b6a273906ea40f7dc993144511ed61239a5d764aca21ea479fe46 + md5: e01118f345f22ed4efb89192dfbbdbc6 depends: - - mblack ==25.1.0.dev2025012205 release + - mblack ==25.1.0.dev2025012505 release license: LicenseRef-Modular-Proprietary - size: 203820478 - timestamp: 1737523349069 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025012205-3.11release.conda - sha256: 0c2ab97eb372485cc417d0f0c11957185d3b949248f7d609c1baf88f071590cd - md5: ba7c1a51993502b7553221dad3e8a577 + size: 204961123 + timestamp: 1737782482300 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025012505-3.11release.conda + sha256: 4921d719c4d8033dfb84fe7b14b87ac4a7a3c0be3d797d6d741161bd4117d72f + md5: 86e77e56d21daacc50f4fce33fa439ad depends: - - max-core ==25.1.0.dev2025012205 release + - max-core ==25.1.0.dev2025012505 release - python 3.11.* - fastapi - httpx @@ -4798,13 +4914,13 @@ packages: - uvicorn - python_abi 3.11.* *_cp311 license: LicenseRef-Modular-Proprietary - size: 119869857 - timestamp: 1737523134740 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025012205-3.11release.conda - sha256: b02a407bb5e222d057a5687b746555d1975c6dd03c312e96568d61eee853cdb4 - md5: 9e340b823730a31174d71922223702f5 + size: 120584571 + timestamp: 1737782221037 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025012505-3.11release.conda + sha256: 4d1acc104c3be81fab3254b4fd3dfe289901bec5598095640cf7a9853c75f1f9 + md5: e59f7be421d9cd9d59d7d8929a70ad69 depends: - - max-core ==25.1.0.dev2025012205 release + - max-core ==25.1.0.dev2025012505 release - python 3.11.* - fastapi - httpx @@ -4825,13 +4941,13 @@ packages: - uvicorn - python_abi 3.11.* *_cp311 license: LicenseRef-Modular-Proprietary - size: 122290081 - timestamp: 1737524122352 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025012205-3.11release.conda - sha256: 2ef65b36ad96d44a56e0aa58b40c3888bf96b00c35c3ac2afbcf480dfd42df84 - md5: c7392785a086eb6c142179c2bc45a174 + size: 123078620 + timestamp: 1737782253441 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025012505-3.11release.conda + sha256: 2c1b976ee6a40acff3a4cf69c812eafe0bcd30c47ee40c72bbfe7391439798ac + md5: ad138f1bb99cd69bb1ac3b3988f19003 depends: - - max-core ==25.1.0.dev2025012205 release + - max-core ==25.1.0.dev2025012505 release - python 3.11.* - fastapi - httpx @@ -4852,12 +4968,12 @@ packages: - uvicorn - python_abi 3.11.* *_cp311 license: LicenseRef-Modular-Proprietary - size: 105232809 - timestamp: 1737523349071 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012205-release.conda + size: 105988289 + timestamp: 1737782482302 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012505-release.conda noarch: python - sha256: 31bce03569c241ade0a344f1fe1a683f928fe367ae57147b3e316783631822fe - md5: c54b5f7d0d777b8995e38978d8626ffc + sha256: 906a374c4b22380993352480333cd5fc9c1a2e2179ab2e7ea65abc3bd54fc35e + md5: 3109b109f417bff02b27ff1cc78239ae depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -4867,8 +4983,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130797 - timestamp: 1737524122352 + size: 130805 + timestamp: 1737782253440 - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda sha256: 78c1bbe1723449c52b7a9df1af2ee5f005209f67e40b6e1d3c7619127c43b1c7 md5: 592132998493b3ff25fd7479396e8351 @@ -4878,18 +4994,18 @@ packages: license_family: MIT size: 14465 timestamp: 1733255681319 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025012205-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025012505-release.conda noarch: python - sha256: 78e2818c9d17321c5fe73f9dca3d7a9c51ad989c00f8ea9721deb94a4f03800e - md5: ca3c9282adb4a04dbd02f3ab8e73445c + sha256: 6cba6b01c693678b0e48d5428788d3734e885f6efc911b345fae474e4405460f + md5: 16521d51e47d4d67cf1a42351687f6b8 depends: - - max-core ==25.1.0.dev2025012205 release + - max-core ==25.1.0.dev2025012505 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22925 - timestamp: 1737524122353 + size: 22934 + timestamp: 1737782253442 - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py311h2dc5d0c_2.conda sha256: afaab7a028281d8b5336db2b994fd3f9694862b6ca372c079dc4e84ad768c20a md5: bb8ca118919836624d920b4c44383a15 @@ -5015,6 +5131,43 @@ packages: license: X11 AND BSD-3-Clause size: 796754 timestamp: 1736683572099 +- conda: https://conda.anaconda.org/conda-forge/linux-64/nlohmann_json-3.11.3-he02047a_1.conda + sha256: ce4bcced4f8eea71b7cac8bc3daac097abf7a5792f278cd811dedada199500c1 + md5: e46f7ac4917215b49df2ea09a694a3fa + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 122743 + timestamp: 1723652407663 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/nlohmann_json-3.11.3-h0a1ffab_1.conda + sha256: c90b1f11fc337d90a9e4c5aeeacac1418c5ba6a195097086566d38bb2ecf0f24 + md5: f2bd10ff23ab5c87327439c4499b3f3e + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 122755 + timestamp: 1723652622631 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/nlohmann_json-3.11.3-h00cdb27_1.conda + sha256: 3f4e6a4fa074bb297855f8111ab974dab6d9f98b7d4317d4dd46f8687ee2363b + md5: d2dee849c806430eee64d3acc98ce090 + depends: + - __osx >=11.0 + - libcxx >=16 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 123250 + timestamp: 1723652704997 - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py311h64a7726_0.conda sha256: 3f4365e11b28e244c95ba8579942b0802761ba7bb31c026f50d1a9ea9c728149 md5: a502d7aad449a1206efb366d6a12c52d @@ -5473,6 +5626,52 @@ packages: license_family: MIT size: 20448 timestamp: 1733232756001 +- conda: https://conda.anaconda.org/conda-forge/linux-64/prometheus-cpp-1.3.0-ha5d0236_0.conda + sha256: 013669433eb447548f21c3c6b16b2ed64356f726b5f77c1b39d5ba17a8a4b8bc + md5: a83f6a2fdc079e643237887a37460668 + depends: + - __glibc >=2.17,<3.0.a0 + - libcurl >=8.10.1,<9.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - zlib + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 199544 + timestamp: 1730769112346 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/prometheus-cpp-1.3.0-h7938499_0.conda + sha256: 9350d7bbc3982a732ff13a7fd17b585509e3b7d0191ac7b810cc3224868e3648 + md5: 10f4301290e51c49979ff98d1bdf2556 + depends: + - libcurl >=8.10.1,<9.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - zlib + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 211335 + timestamp: 1730769181127 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/prometheus-cpp-1.3.0-h0967b3e_0.conda + sha256: 851a77ae1a8e90db9b9f3c4466abea7afb52713c3d98ceb0d37ba6ff27df2eff + md5: 7172339b49c94275ba42fec3eaeda34f + depends: + - __osx >=11.0 + - libcurl >=8.10.1,<9.0a0 + - libcxx >=18 + - libzlib >=1.3.1,<2.0a0 + - zlib + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 173220 + timestamp: 1730769371051 - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda sha256: bc8f00d5155deb7b47702cb8370f233935704100dbc23e30747c161d1b6cf3ab md5: 3e01e386307acc60b2f89af0b2e161aa @@ -5482,9 +5681,9 @@ packages: license_family: Apache size: 49002 timestamp: 1733327434163 -- conda: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.1-py311h9ecbd09_0.conda - sha256: 3323f2ed707a9fe89ee142c9ea1adef0cf8f75fb005ec414b50e8cc0381b57f4 - md5: 20d1c4ad24ac50f0941c63e81e4a86b7 +- conda: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.1-py311h2dc5d0c_1.conda + sha256: fd19a500d872cd59a48686778d88d845b6fc13728e9bbb5296e01473c99f316a + md5: 70303cb1ae9fd81d7ac642b1115f1b4d depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -5494,11 +5693,11 @@ packages: platform: linux license: Apache-2.0 license_family: APACHE - size: 53315 - timestamp: 1733391912538 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.2.1-py311ha879c10_0.conda - sha256: 9d6ed4a29efa5ea64b50097c450429944f116d06d883d23e5b5493eab0c68393 - md5: 15d3518828453960069fd7874fe88468 + size: 53386 + timestamp: 1737635754425 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.2.1-py311h58d527c_1.conda + sha256: 4e22ba89257a68206e86739134f45055a31b03b4e141bb08efdd11bd287937f9 + md5: 0b2b8c440c33aec87b68d50eabbabbfd depends: - libgcc >=13 - python >=3.11,<3.12.0a0 @@ -5508,11 +5707,11 @@ packages: platform: linux license: Apache-2.0 license_family: APACHE - size: 52970 - timestamp: 1733392060312 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.1-py311h917b07b_0.conda - sha256: 7d4185519514a4d357348e7a31974afb713ab6e0d7ea3a9f27a36f3b6515b638 - md5: f0599cb37e2cf8710eaae4b4d85f7759 + size: 52950 + timestamp: 1737635694294 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.1-py311h4921393_1.conda + sha256: efcef85c917f66722c724c3dee5d4da46141491c161e3da7bca0f749a24dd975 + md5: 56fc6da103f6a19baa493f84ead4eac9 depends: - __osx >=11.0 - python >=3.11,<3.12.0a0 @@ -5522,8 +5721,8 @@ packages: platform: osx license: Apache-2.0 license_family: APACHE - size: 48002 - timestamp: 1733392010497 + size: 49903 + timestamp: 1737635760954 - conda: https://conda.anaconda.org/conda-forge/linux-64/protobuf-5.28.3-py311hfdbb021_0.conda sha256: 2d9b2b9a7549e7dd58138cd3211a11893b8f6dee5a1137529623bf92cddba45b md5: ddf920c3b5d1cbd5ffbea591d2ad09ea @@ -5730,9 +5929,9 @@ packages: license_family: BSD size: 110100 timestamp: 1733195786147 -- conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.5-pyh3cfb1c2_0.conda - sha256: 0f32c30ddc610cd1113335d8b4f311f20f4d72754b7c1a5d0d9493f597cf11d2 - md5: e8ea30925c8271c4128375810d7d3d7a +- conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.6-pyh3cfb1c2_0.conda + sha256: 9a78801a28959edeb945e8270a4e666577b52fac0cf4e35f88cf122f73d83e75 + md5: c69f87041cf24dfc8cb6bf64ca7133c7 depends: - annotated-types >=0.6.0 - pydantic-core 2.27.2 @@ -5741,8 +5940,8 @@ packages: - typing_extensions >=4.12.2 license: MIT license_family: MIT - size: 296805 - timestamp: 1736458364196 + size: 296841 + timestamp: 1737761472006 - conda: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.27.2-py311h9e33e62_0.conda sha256: 8ead97151b2f349cd327456fe4a6fcf7c51a3ab6c06f48f4330f86de0d848bd1 md5: 675cb6079b6b3b4ef4f20399fedf6666 @@ -5814,9 +6013,9 @@ packages: license_family: BSD size: 888600 timestamp: 1736243563082 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pyinstrument-5.0.0-py311h9ecbd09_0.conda - sha256: 389847e94097f5bb4e50e79fcafb69d29536704f5d8e6197e2db15aa18ce79bb - md5: dac09216d0e2048338c501ba88708ee5 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyinstrument-5.0.1-py311h9ecbd09_0.conda + sha256: c4f1607c86028537c40f7890b731a7e20f0eeff410738e77e9922af72f04658e + md5: e7dcb448d7ad554712347c4b38c14403 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -5826,11 +6025,11 @@ packages: platform: linux license: BSD-3-Clause license_family: BSD - size: 184141 - timestamp: 1728714174689 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyinstrument-5.0.0-py311ha879c10_0.conda - sha256: cf6065cfd429b2947ed8529f7bacdc55911743cfcc77999a91376e7e31a732d1 - md5: 33339e64f325437f8b4806a84d40418b + size: 185793 + timestamp: 1737774419894 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyinstrument-5.0.1-py311ha879c10_0.conda + sha256: d5f616be8969d7416212802f516a438800566685db44fb940a8b6bc356789df1 + md5: 48b44b6d83c4248d1f5e6dfe47813ce9 depends: - libgcc >=13 - python >=3.11,<3.12.0a0 @@ -5840,11 +6039,11 @@ packages: platform: linux license: BSD-3-Clause license_family: BSD - size: 186594 - timestamp: 1728714239127 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyinstrument-5.0.0-py311hae2e1ce_0.conda - sha256: d54db4d4895ba9d56c81ec6ca4b431eff4b380e45baf1ca415956d978791d3f6 - md5: 03b6ef0cf70c84871b11cc017e010d12 + size: 187285 + timestamp: 1737774479477 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyinstrument-5.0.1-py311h917b07b_0.conda + sha256: 1429a6c8b9ddf2ed48b87969274cd8973d1153064e28ec9c528a946347d5f258 + md5: 6c4a51644a29a1ee05a113b1a4251a80 depends: - __osx >=11.0 - python >=3.11,<3.12.0a0 @@ -5854,8 +6053,8 @@ packages: platform: osx license: BSD-3-Clause license_family: BSD - size: 184916 - timestamp: 1728714210932 + size: 185985 + timestamp: 1737774711065 - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda sha256: ba3b032fa52709ce0d9fd388f63d330a026754587a2f461117cac9ab73d8d0d8 md5: 461219d1a5bd61342293efa2c0c90eac @@ -5990,6 +6189,7 @@ packages: depends: - python >=3.9 license: Apache-2.0 + license_family: APACHE size: 143794 timestamp: 1737541204030 - conda: https://conda.anaconda.org/conda-forge/linux-64/python-xxhash-3.5.0-py311h9ecbd09_1.conda @@ -6474,17 +6674,17 @@ packages: license_family: BSD size: 15324 timestamp: 1735126414893 -- conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyha770c72_1.conda - sha256: b74fc76107487eb26624c01fc55bfab7eed03ae82e003333c86d8a1eeac53672 - md5: 0207dac04ae2200701fab697f0aaaac4 +- conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.45.2-pyha770c72_0.conda + sha256: 2c429dbbd5e7256517ef6cdfc30664b0c0e87f90f3c526afe3b97681aafb5623 + md5: acd5901cdd0365e18129f4748e524615 depends: - - anyio >=3.4.0,<5 + - anyio >=3.6.2,<5 - python >=3.9 - typing_extensions >=3.10.0 license: BSD-3-Clause license_family: BSD - size: 58838 - timestamp: 1733344472634 + size: 58040 + timestamp: 1736016898891 - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda sha256: e0569c9caa68bf476bead1bed3d79650bb080b532c64a4af7d8ca286c08dea4e md5: d453b98d9c83e71da0741bb0ff4d76bc @@ -7168,6 +7368,43 @@ packages: license_family: MIT size: 21809 timestamp: 1732827613585 +- conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.1-hb9d3cd8_2.conda + sha256: 5d7c0e5f0005f74112a34a7425179f4eb6e73c92f5d109e6af4ddeca407c92ab + md5: c9f075ab2f33b3bbee9e62d4ad0a6cd8 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libzlib 1.3.1 hb9d3cd8_2 + arch: x86_64 + platform: linux + license: Zlib + license_family: Other + size: 92286 + timestamp: 1727963153079 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zlib-1.3.1-h86ecc28_2.conda + sha256: b4f649aa3ecdae384d5dad7074e198bff120edd3dfb816588e31738fc6d627b1 + md5: bc230abb5d21b63ff4799b0e75204783 + depends: + - libgcc >=13 + - libzlib 1.3.1 h86ecc28_2 + arch: aarch64 + platform: linux + license: Zlib + license_family: Other + size: 95582 + timestamp: 1727963203597 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zlib-1.3.1-h8359307_2.conda + sha256: 58f8860756680a4831c1bf4f294e2354d187f2e999791d53b1941834c4b37430 + md5: e3170d898ca6cb48f1bb567afb92f775 + depends: + - __osx >=11.0 + - libzlib 1.3.1 h8359307_2 + arch: arm64 + platform: osx + license: Zlib + license_family: Other + size: 77606 + timestamp: 1727963209370 - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py311hbc35293_1.conda sha256: a5cf0eef1ffce0d710eb3dffcb07d9d5922d4f7a141abc96f6476b98600f718f md5: aec590674ba365e50ae83aa2d6e1efae diff --git a/examples/notebooks/magic.lock b/examples/notebooks/magic.lock index 800a515476..544df4382d 100644 --- a/examples/notebooks/magic.lock +++ b/examples/notebooks/magic.lock @@ -31,7 +31,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.2-h4e1184b_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-h4e1184b_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.9-he0e7f3f_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-h4d475cb_6.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.489-h4d475cb_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.10.0-h113e628_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.13.0-h3cf044e_1.conda @@ -66,24 +66,24 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/entrypoints-0.4-pyhd8ed1ab_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/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-0.115.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.17.0-pyhd8ed1ab_0.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 - - conda: https://conda.anaconda.org/conda-forge/linux-64/frozenlist-1.5.0-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/frozenlist-1.5.0-py312h178313f_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.12.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gflags-2.2.2-h5888daf_1005.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/glog-0.7.1-hbabe93e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/httptools-0.6.4-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.27.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda @@ -112,10 +112,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-19.0.0-hce2e470_3_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-19.0.0-hcb10f89_3_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-19.0.0-hcb10f89_3_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-19.0.0-h08228c5_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-19.0.0-h00a82cf_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-19.0.0-hcb10f89_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-19.0.0-hcb10f89_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-19.0.0-h08228c5_7_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-26_linux64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hb9d3cd8_2.conda @@ -134,8 +134,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hd5240d6_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h77fa898_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.33.0-h2b5623c_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.33.0-h0121fbd_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.34.0-h2b5623c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.34.0-h0121fbd_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.67.1-h25350d4_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-hd590300_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda @@ -144,7 +144,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.28-pthreads_h94d23a6_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-19.0.0-h081d1f1_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-1.18.0-hfcad708_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-headers-1.18.0-ha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-19.0.0-h081d1f1_7_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.45-h943b412_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_2.conda @@ -167,13 +169,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/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-25.1.0.dev2025012205-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025012205-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025012205-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025012505-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025012505-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025012505-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012505-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.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025012205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025012505-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 @@ -182,6 +184,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/nlohmann_json-3.11.3-he02047a_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.3-h5fbd93e_0.conda @@ -206,9 +209,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pip-24.3.1-pyh8b19718_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/prometheus-cpp-1.3.0-ha5d0236_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.50-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.1-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.1-py312h178313f_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/protobuf-5.28.3-py312h2ec8cdc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/psutil-6.1.1-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda @@ -217,11 +221,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-19.0.0-py312h7900ff3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-19.0.0-py312h01725c0_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.5-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.6-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.27.2-py312h12e396e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.7.1-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pyinstrument-5.0.0-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyinstrument-5.0.1-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.8-h9e4cc4f_1_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda @@ -256,7 +260,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.45.2-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh0d859eb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda @@ -294,6 +298,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.18.3-py312h178313f_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.1-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312hef9b889_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda linux-aarch64: @@ -321,7 +326,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.2-h0f0193d_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h0f0193d_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.9-hab3ce66_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h88461e4_6.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.489-h88461e4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-core-cpp-1.14.0-h1887c18_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-identity-cpp-1.10.0-h47b0b28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-blobs-cpp-12.13.0-h185ecfd_1.conda @@ -356,24 +361,24 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/entrypoints-0.4-pyhd8ed1ab_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/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-0.115.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.17.0-pyhd8ed1ab_0.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 - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/frozenlist-1.5.0-py312hb2c0f52_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/frozenlist-1.5.0-py312hcc812fe_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.12.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gflags-2.2.2-h5ad3122_1005.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/glog-0.7.1-h468a4a4_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/httptools-0.6.4-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.27.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_1.conda @@ -403,10 +408,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.0.0-h4de3ea5_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h18dbdb1_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-h4065667_12_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h3b568fd_12_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h3b568fd_12_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h1e9d426_12_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-19.0.0-h03ebaaf_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-19.0.0-h3b568fd_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-19.0.0-h3b568fd_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-19.0.0-h1e9d426_7_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-26_linuxaarch64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlicommon-1.1.0-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlidec-1.1.0-h86ecc28_2.conda @@ -435,7 +440,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnghttp2-1.64.0-hc8609a4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.28-pthreads_h9d3fd7e_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-hfc78867_12_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopentelemetry-cpp-1.18.0-h60b47f9_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopentelemetry-cpp-headers-1.18.0-h8af1aa0_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-19.0.0-hfc78867_7_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.45-hec79eb8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.3-h44a3b7b_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_2.conda @@ -458,13 +465,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/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-25.1.0.dev2025012205-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025012205-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025012205-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025012505-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025012505-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025012505-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012505-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.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025012205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025012505-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 @@ -473,6 +480,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-ha32ae93_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/nlohmann_json-3.11.3-h0a1ffab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openjpeg-2.5.3-h3f56577_0.conda @@ -497,22 +505,23 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pip-24.3.1-pyh8b19718_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/prometheus-cpp-1.3.0-h7938499_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.50-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.2.1-py312hb2c0f52_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.2.1-py312hcc812fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/protobuf-5.28.3-py312h6f74592_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/psutil-6.1.1-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pthread-stubs-0.4-h86ecc28_1002.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-18.1.0-py312h8025657_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-18.1.0-py312h66f7834_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-19.0.0-py312h8025657_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-19.0.0-py312h66f7834_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.5-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.6-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pydantic-core-2.27.2-py312h8cbf658_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.7.1-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyinstrument-5.0.0-py312hb2c0f52_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyinstrument-5.0.1-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.8-h1683364_1_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda @@ -547,7 +556,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.45.2-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh0d859eb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda @@ -585,6 +594,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.18.3-py312hcc812fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zeromq-4.3.5-h5efb499_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zlib-1.3.1-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstandard-0.23.0-py312hb698573_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.6-h02f22dd_0.conda osx-arm64: @@ -612,7 +622,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.2-hc8a0bd2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-hc8a0bd2_4.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.9-ha81f72f_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-h0e5014b_6.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.489-h0e5014b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.14.0-hd50102c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.10.0-hc602bab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-blobs-cpp-12.13.0-h7585a09_1.conda @@ -647,24 +657,24 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/entrypoints-0.4-pyhd8ed1ab_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/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-0.115.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.17.0-pyhd8ed1ab_0.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 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/frozenlist-1.5.0-py312h0bf5046_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/frozenlist-1.5.0-py312h998013c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.12.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gflags-2.2.2-hf9b8971_1005.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/glog-0.7.1-heb240a5_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/httptools-0.6.4-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.27.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_1.conda @@ -692,10 +702,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.16-ha0e7c42_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_h07bc746_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-19.0.0-hd1aa4b5_4_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-19.0.0-hf07054f_4_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-19.0.0-hf07054f_4_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-19.0.0-h4239455_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-19.0.0-h819e3af_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-19.0.0-hf07054f_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-19.0.0-hf07054f_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-19.0.0-h4239455_7_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-26_osxarm64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.1.0-hd74edd7_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.1.0-hd74edd7_2.conda @@ -721,7 +731,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.3-h39f12f2_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.64.0-h6d7220d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.28-openmp_hf332438_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-19.0.0-h636d7b7_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopentelemetry-cpp-1.18.0-h0c05b2d_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopentelemetry-cpp-headers-1.18.0-hce30654_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-19.0.0-h636d7b7_7_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.45-h3783ad8_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.3-h3bd63a1_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h07bc746_2.conda @@ -741,13 +753,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-25.1.0.dev2025012205-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025012205-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025012205-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025012505-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025012505-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025012505-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012505-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.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025012205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025012505-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 @@ -756,6 +768,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/nlohmann_json-3.11.3-h00cdb27_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openjpeg-2.5.3-h8a3d83b_0.conda @@ -780,9 +793,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pip-24.3.1-pyh8b19718_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/prometheus-cpp-1.3.0-h0967b3e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.50-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.1-py312hea69d52_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.1-py312h998013c_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/protobuf-5.28.3-py312hd8f9ff3_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/psutil-6.1.1-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pthread-stubs-0.4-hd74edd7_1002.conda @@ -791,11 +805,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-19.0.0-py312h1f38498_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-19.0.0-py312hc40f475_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.5-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.6-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.27.2-py312hcd83bfe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.7.1-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyinstrument-5.0.0-py312h0bf5046_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyinstrument-5.0.1-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-core-11.0-py312hb9d441b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-framework-cocoa-11.0-py312hb9d441b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda @@ -831,7 +845,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.45.2-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh31c8845_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda @@ -869,6 +883,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.18.3-py312h998013c_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zlib-1.3.1-h8359307_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py312h15fbf35_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.6-hb46c0d2_0.conda packages: @@ -1654,9 +1669,9 @@ packages: license_family: Apache size: 235976 timestamp: 1737565563139 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-h4d475cb_6.conda - sha256: 2309d96d537b5c3810c6e9fbf5b6bb7e06ce907a609d172063ab504b2cc67f30 - md5: 6139e84bbb6fdb27ca49c2981613a5fa +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.489-h4d475cb_0.conda + sha256: 08d6b7d2ed17bfcc7deb903c7751278ee434abdb27e3be0dceb561f30f030c75 + md5: b775e9f46dfa94b228a81d8e8c6d8b1d depends: - __glibc >=2.17,<3.0.a0 - aws-c-common >=0.10.6,<0.10.7.0a0 @@ -1672,11 +1687,11 @@ packages: platform: linux license: Apache-2.0 license_family: Apache - size: 3069914 - timestamp: 1737049585807 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h88461e4_6.conda - sha256: f97e071ffb87bc33923f798761ec6a854614ce193913d34d3248515d18357baa - md5: 0d7f1ee2e5572bf9d1fd78f0f2ab6f6b + size: 3144364 + timestamp: 1737576036746 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.489-h88461e4_0.conda + sha256: 88353e82b053763168cddbe2f88048defc1c97b3dad0966fbe8c4fa7aa592c7e + md5: e725d8fa77a6a5f38a78c5de914a5f40 depends: - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 @@ -1691,11 +1706,11 @@ packages: platform: linux license: Apache-2.0 license_family: Apache - size: 2919798 - timestamp: 1737049659061 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-h0e5014b_6.conda - sha256: 8c21ce4692d1631b96adea099d7c2b905fc5d078db63bf754d85600dcf184651 - md5: a3b7b9a81d8c6a8f963f619d9e362c39 + size: 3015109 + timestamp: 1737575993030 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.489-h0e5014b_0.conda + sha256: d82451530ddf363d8bb31a8a7391bb9699f745e940ace91d78c0e6170deef03c + md5: 156cfb45a1bb8cffc81e59047bb34f51 depends: - __osx >=11.0 - aws-c-common >=0.10.6,<0.10.7.0a0 @@ -1710,8 +1725,8 @@ packages: platform: osx license: Apache-2.0 license_family: Apache - size: 2834057 - timestamp: 1737126583846 + size: 2874126 + timestamp: 1737577023623 - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda sha256: fe07debdb089a3db17f40a7f20d283d75284bb4fc269ef727b8ba6fc93f7cb5a md5: 0a8838771cc2e985cd295e01ae83baf1 @@ -2406,24 +2421,25 @@ packages: license_family: MIT size: 28348 timestamp: 1733569440265 -- conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.6-pyhd8ed1ab_0.conda - sha256: d7826d537c667093c9de96411a09585a8d620c84a830a0195e58e9a0df45f018 - md5: 1b1e0c97830cdf75f1f371bd467ab657 +- conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.7-pyh29332c3_1.conda + sha256: ac0c357b216e0b37d1a31af200548783d9e5a0413caaee92c5184dbef63b578e + md5: b53637ce62c4bcf3123a2a40f6a3824b depends: + - python >=3.9 + - starlette >=0.40.0,<0.46.0 + - typing_extensions >=4.8.0 + - pydantic >=1.7.4,!=1.8,!=1.8.1,!=2.0.0,!=2.0.1,!=2.1.0,<3.0.0 - email_validator >=2.0.0 - fastapi-cli >=0.0.5 - httpx >=0.23.0 - - jinja2 >=2.11.2 - - pydantic >=1.7.4,!=1.8,!=1.8.1,!=2.0.0,!=2.0.1,!=2.1.0,<3.0.0 - - python >=3.9 - - python-multipart >=0.0.7 - - starlette >=0.40.0,<0.42.0 - - typing_extensions >=4.8.0 + - jinja2 >=3.1.5 + - python-multipart >=0.0.18 - uvicorn-standard >=0.12.0 + - python license: MIT license_family: MIT - size: 73084 - timestamp: 1733362427885 + size: 77890 + timestamp: 1737647037273 - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.7-pyhd8ed1ab_0.conda sha256: 300683731013b7221922339cd40430bb3c2ddeeb658fd7e37f5099ffe64e4db0 md5: d960e0ea9e1c561aa928f6c4439f04c7 @@ -2489,9 +2505,9 @@ packages: license: GPL-2.0-only OR FTL size: 596430 timestamp: 1694616332835 -- conda: https://conda.anaconda.org/conda-forge/linux-64/frozenlist-1.5.0-py312h66e93f0_0.conda - sha256: 7e0c12983b20f2816b3712729b5a35ecb7ee152132ca7cf805427c62395ea823 - md5: f98e36c96b2c66d9043187179ddb04f4 +- conda: https://conda.anaconda.org/conda-forge/linux-64/frozenlist-1.5.0-py312h178313f_1.conda + sha256: 501e20626798b6d7f130f4db0fb02c0385d8f4c11ca525925602a4208afb343f + md5: fb986e1c089021979dc79606af78ef8f depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -2501,11 +2517,11 @@ packages: platform: linux license: Apache-2.0 license_family: APACHE - size: 60968 - timestamp: 1729699568442 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/frozenlist-1.5.0-py312hb2c0f52_0.conda - sha256: b0a9ff3e71452eed70877b2f3175d41cd85070da6deac381c5f3f61e1f19bccb - md5: 62fc11b0738ca15e0dd19b60cf280d12 + size: 60939 + timestamp: 1737645356438 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/frozenlist-1.5.0-py312hcc812fe_1.conda + sha256: 84895c5e207e0cb2044f3607fb36b82eb8cb45f0a009d03dc04c777ed975757d + md5: 9090bf5c43e8011fb2e9a82a1db20cc3 depends: - libgcc >=13 - python >=3.12,<3.13.0a0 @@ -2515,11 +2531,11 @@ packages: platform: linux license: Apache-2.0 license_family: APACHE - size: 59967 - timestamp: 1729699642726 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/frozenlist-1.5.0-py312h0bf5046_0.conda - sha256: 44d6d6b332421e621c029fb149f12dba1ccb5ed6ac632e2e807a9d92d6cb2864 - md5: 7960352935cc95ac23883c9b8c97f2ff + size: 60472 + timestamp: 1737645511278 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/frozenlist-1.5.0-py312h998013c_1.conda + sha256: d503ac8c050abdbd129253973f23be34944978d510de78ef5a3e6aa1e3d9552d + md5: 5eb3715c7e3fa9b533361375bfefe6ee depends: - __osx >=11.0 - python >=3.12,<3.13.0a0 @@ -2529,8 +2545,8 @@ packages: platform: osx license: Apache-2.0 license_family: APACHE - size: 53366 - timestamp: 1729699762631 + size: 57256 + timestamp: 1737645503377 - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.12.0-pyhd8ed1ab_0.conda sha256: 3320970c4604989eadf908397a9475f9e6a96a773c185915111399cbfbe47817 md5: e041ad4c43ab5e10c74587f95378ebc7 @@ -2647,15 +2663,15 @@ packages: license_family: MIT size: 52000 timestamp: 1733298867359 -- conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda - sha256: ec89b7e5b8aa2f0219f666084446e1fb7b54545861e9caa892acb24d125761b5 - md5: 2aa5ff7fa34a81b9196532c84c10d865 +- conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda + sha256: 6ad78a180576c706aabeb5b4c8ceb97c0cb25f1e112d76495bff23e3779948ba + md5: 0a802cb9888dd14eeefc611f05c40b6e depends: - python >=3.9 license: MIT license_family: MIT - size: 29412 - timestamp: 1733299296857 + size: 30731 + timestamp: 1737618390337 - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda sha256: c84d012a245171f3ed666a8bf9319580c269b7843ffa79f26468842da3abd5df md5: 2ca8e6dbc86525c8b95e3c0ffa26442e @@ -2742,15 +2758,15 @@ packages: license_family: APACHE size: 278363 timestamp: 1736350219225 -- conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda - sha256: e91c6ef09d076e1d9a02819cd00fa7ee18ecf30cdd667605c853980216584d1b - md5: 566e75c90c1d0c8c459eb0ad9833dc7a +- conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda + sha256: 77af6f5fe8b62ca07d09ac60127a30d9069fdc3c68d6b256754d0ffb1f7779f8 + md5: 8e6923fc12f1fe8f8c4e5c9f343256ac depends: - python >=3.9 license: MIT license_family: MIT - size: 17239 - timestamp: 1733298862681 + size: 17397 + timestamp: 1737618427549 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda sha256: 813298f2e54ef087dbfc9cc2e56e08ded41de65cff34c639cc8ba4e27e4540c9 md5: 268203e8b983fddb6412b36f2024e75c @@ -3346,28 +3362,29 @@ packages: license_family: Apache size: 1178260 timestamp: 1736008642885 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-19.0.0-hce2e470_3_cpu.conda - build_number: 3 - sha256: 3b85b78a52ce673798e3c880fa41b818554912e722e81ca20cf95ba9257f13f0 - md5: a50ba9a0789061ea395a47a23d6a7734 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-19.0.0-h00a82cf_7_cpu.conda + build_number: 7 + sha256: 8b401a256e4632ab6c1ea8d3cfb16d7c8ff3b0fe5af7cd474202a369c63dc74c + md5: 8d553fa6a138f369ed94b8b1a76f1e77 depends: - __glibc >=2.17,<3.0.a0 - aws-crt-cpp >=0.29.9,<0.29.10.0a0 - - aws-sdk-cpp >=1.11.458,<1.11.459.0a0 + - aws-sdk-cpp >=1.11.489,<1.11.490.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-identity-cpp >=1.10.0,<1.10.1.0a0 - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 - bzip2 >=1.0.8,<2.0a0 - - gflags >=2.2.2,<2.3.0a0 - glog >=0.7.1,<0.8.0a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - libbrotlidec >=1.1.0,<1.2.0a0 - libbrotlienc >=1.1.0,<1.2.0a0 - libgcc >=13 - - libgoogle-cloud >=2.33.0,<2.34.0a0 - - libgoogle-cloud-storage >=2.33.0,<2.34.0a0 + - libgoogle-cloud >=2.34.0,<2.35.0a0 + - libgoogle-cloud-storage >=2.34.0,<2.35.0a0 + - libopentelemetry-cpp >=1.18.0,<1.19.0a0 + - libprotobuf >=5.28.3,<5.28.4.0a0 - libre2-11 >=2024.7.2 - libstdcxx >=13 - libutf8proc >=2.10.0,<2.11.0a0 @@ -3378,27 +3395,26 @@ packages: - snappy >=1.2.1,<1.3.0a0 - zstd >=1.5.6,<1.6.0a0 constrains: + - apache-arrow-proc =*=cpu - arrow-cpp <0.0a0 - parquet-cpp <0.0a0 - - apache-arrow-proc =*=cpu arch: x86_64 platform: linux license: Apache-2.0 - size: 8899665 - timestamp: 1737343852413 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-h4065667_12_cpu.conda - build_number: 12 - sha256: 0ac8aab370ef7a21e912cc312e5cbfa59afea8e004f5a372f2f25f96de0c9e9a - md5: 4789bb7ae93fe12bfd81169157896f49 + size: 8979130 + timestamp: 1737757402544 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-19.0.0-h03ebaaf_7_cpu.conda + build_number: 7 + sha256: f029b7fbed445a2cb08b95686e9a9cb30c04a10998ef632c2cf84fd0c0d1e424 + md5: b94870200ac053eff3dda878d523f1d1 depends: - aws-crt-cpp >=0.29.9,<0.29.10.0a0 - - aws-sdk-cpp >=1.11.458,<1.11.459.0a0 + - aws-sdk-cpp >=1.11.489,<1.11.490.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-identity-cpp >=1.10.0,<1.10.1.0a0 - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 - bzip2 >=1.0.8,<2.0a0 - - gflags >=2.2.2,<2.3.0a0 - glog >=0.7.1,<0.8.0a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 @@ -3407,6 +3423,8 @@ packages: - libgcc >=13 - libgoogle-cloud >=2.34.0,<2.35.0a0 - libgoogle-cloud-storage >=2.34.0,<2.35.0a0 + - libopentelemetry-cpp >=1.18.0,<1.19.0a0 + - libprotobuf >=5.28.3,<5.28.4.0a0 - libre2-11 >=2024.7.2 - libstdcxx >=13 - libutf8proc >=2.10.0,<2.11.0a0 @@ -3423,16 +3441,16 @@ packages: arch: aarch64 platform: linux license: Apache-2.0 - size: 8051570 - timestamp: 1737451538096 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-19.0.0-hd1aa4b5_4_cpu.conda - build_number: 4 - sha256: bf027b2e77b75b71b5213131fc4b06bbca6f1e195fde62090343e0a808d08bbe - md5: 94c2bcca143c043f8083a1f275de3caf + size: 8210159 + timestamp: 1737757741310 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-19.0.0-h819e3af_7_cpu.conda + build_number: 7 + sha256: e5e370673b9fe9459a826f474dc470b59fd6744fa652dd534f7ef722cd9be39c + md5: 3cb4f805d9742272591795d487786f2d depends: - __osx >=11.0 - aws-crt-cpp >=0.29.9,<0.29.10.0a0 - - aws-sdk-cpp >=1.11.458,<1.11.459.0a0 + - aws-sdk-cpp >=1.11.489,<1.11.490.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-identity-cpp >=1.10.0,<1.10.1.0a0 - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 @@ -3446,6 +3464,8 @@ packages: - libcxx >=18 - libgoogle-cloud >=2.34.0,<2.35.0a0 - libgoogle-cloud-storage >=2.34.0,<2.35.0a0 + - libopentelemetry-cpp >=1.18.0,<1.19.0a0 + - libprotobuf >=5.28.3,<5.28.4.0a0 - libre2-11 >=2024.7.2 - libutf8proc >=2.10.0,<2.11.0a0 - libzlib >=1.3.1,<2.0a0 @@ -3456,154 +3476,154 @@ packages: - zstd >=1.5.6,<1.6.0a0 constrains: - parquet-cpp <0.0a0 - - arrow-cpp <0.0a0 - apache-arrow-proc =*=cpu + - arrow-cpp <0.0a0 arch: arm64 platform: osx license: Apache-2.0 - size: 5532664 - timestamp: 1737458545986 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-19.0.0-hcb10f89_3_cpu.conda - build_number: 3 - sha256: f4e4b14fc2aaaf0d0a16a3b4b4dcae84b1b77daa02754f0873901089ce786a49 - md5: 3e1e31382e9c6ecd0b24bd8f6ddb33ec + size: 5540329 + timestamp: 1737756116679 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-19.0.0-hcb10f89_7_cpu.conda + build_number: 7 + sha256: 7018394af408b4ce344c97cd6f97bc676708067a9d2d834bf091b74f13b41be4 + md5: de10e3323bfa9dd8929f7fbe23665883 depends: - __glibc >=2.17,<3.0.a0 - - libarrow 19.0.0 hce2e470_3_cpu + - libarrow 19.0.0 h00a82cf_7_cpu - libgcc >=13 - libstdcxx >=13 arch: x86_64 platform: linux license: Apache-2.0 - size: 618570 - timestamp: 1737343896206 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h3b568fd_12_cpu.conda - build_number: 12 - sha256: c93daa943342eb848e5a44d4f48749f96decbde7b0f7d830fe56d0d506c03576 - md5: 8ec3804980e19b70ebffbeb623ce084b + size: 637717 + timestamp: 1737757443960 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-19.0.0-h3b568fd_7_cpu.conda + build_number: 7 + sha256: 97911c3addb66033747e12c608ca32ce5c56d6d9f35674cfb97fff0ff4c7e926 + md5: d50c51a7d86454c90de667fcafb8c785 depends: - - libarrow 18.1.0 h4065667_12_cpu + - libarrow 19.0.0 h03ebaaf_7_cpu - libgcc >=13 - libstdcxx >=13 arch: aarch64 platform: linux license: Apache-2.0 - size: 579114 - timestamp: 1737451608994 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-19.0.0-hf07054f_4_cpu.conda - build_number: 4 - sha256: 40de7e71d9fd4b799c452b3a0328ea260a3871de621f5344fb39b7f48371df75 - md5: e3265f8ab44051131966bd6f7b07a6e3 + size: 602410 + timestamp: 1737757792970 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-19.0.0-hf07054f_7_cpu.conda + build_number: 7 + sha256: a716bd2c6106f0508e69800f73a9368f5b5fadba0cd1f7f7ac753bf43392bf4d + md5: a138208af40b21c840c1075f3bec5014 depends: - __osx >=11.0 - - libarrow 19.0.0 hd1aa4b5_4_cpu + - libarrow 19.0.0 h819e3af_7_cpu - libcxx >=18 arch: arm64 platform: osx license: Apache-2.0 - size: 481968 - timestamp: 1737458659266 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-19.0.0-hcb10f89_3_cpu.conda - build_number: 3 - sha256: c5cdf03d72d028e8af774aabd29cd92fb87f54cd579a9ffe77ad228c51faaa82 - md5: 1face9ff13ec61bfb065063d35fda864 + size: 499319 + timestamp: 1737756215547 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-19.0.0-hcb10f89_7_cpu.conda + build_number: 7 + sha256: 4f3864b3f004fc320f28ecc5bb47e4cd927f40ef8dc6a16bdef51b34f51da921 + md5: eddf039322781fee4d4137f50769511c depends: - __glibc >=2.17,<3.0.a0 - - libarrow 19.0.0 hce2e470_3_cpu - - libarrow-acero 19.0.0 hcb10f89_3_cpu + - libarrow 19.0.0 h00a82cf_7_cpu + - libarrow-acero 19.0.0 hcb10f89_7_cpu - libgcc >=13 - - libparquet 19.0.0 h081d1f1_3_cpu + - libparquet 19.0.0 h081d1f1_7_cpu - libstdcxx >=13 arch: x86_64 platform: linux license: Apache-2.0 - size: 585153 - timestamp: 1737344009570 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h3b568fd_12_cpu.conda - build_number: 12 - sha256: 40bbdb394db6f405e6fae56bcbfc88fa433130668d2b39d1f109b7d6ffb8be76 - md5: e9b9a9941d35dff0a168741bdd54877e + size: 605090 + timestamp: 1737757550128 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-19.0.0-h3b568fd_7_cpu.conda + build_number: 7 + sha256: e055430747eba48c99a7b1ebe0596e126a121eeffd6ba667c00554a0b2707839 + md5: 2d6208bc6ab9089ee1787d9abbefd172 depends: - - libarrow 18.1.0 h4065667_12_cpu - - libarrow-acero 18.1.0 h3b568fd_12_cpu + - libarrow 19.0.0 h03ebaaf_7_cpu + - libarrow-acero 19.0.0 h3b568fd_7_cpu - libgcc >=13 - - libparquet 18.1.0 hfc78867_12_cpu + - libparquet 19.0.0 hfc78867_7_cpu - libstdcxx >=13 arch: aarch64 platform: linux license: Apache-2.0 - size: 559928 - timestamp: 1737451706623 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-19.0.0-hf07054f_4_cpu.conda - build_number: 4 - sha256: c9b01193f3dc2855276a743aa2d107b3893d886dbc561944154acc4c61a9b4cb - md5: c6588e0236da980424ca0b288c893d1a + size: 580599 + timestamp: 1737757863901 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-19.0.0-hf07054f_7_cpu.conda + build_number: 7 + sha256: dcc8d61eae311c5d377a41e2c6f964b86e7289917c93d3af03e5d4a4c88ab85a + md5: 5791e257ecb73e7745fa62446f22b1ea depends: - __osx >=11.0 - - libarrow 19.0.0 hd1aa4b5_4_cpu - - libarrow-acero 19.0.0 hf07054f_4_cpu + - libarrow 19.0.0 h819e3af_7_cpu + - libarrow-acero 19.0.0 hf07054f_7_cpu - libcxx >=18 - - libparquet 19.0.0 h636d7b7_4_cpu + - libparquet 19.0.0 h636d7b7_7_cpu arch: arm64 platform: osx license: Apache-2.0 - size: 488490 - timestamp: 1737459936234 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-19.0.0-h08228c5_3_cpu.conda - build_number: 3 - sha256: 414297c69d08ba45af0fccb5e22cc3b3e92181f3928eba1e1b1ab3641970c7e0 - md5: 8527e1e45c495991fd88f6531e176556 + size: 500722 + timestamp: 1737757369380 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-19.0.0-h08228c5_7_cpu.conda + build_number: 7 + sha256: 51ec47ed56880cfd64bfa012c8488d127d8f0acfe0d64707880393d49a2663a2 + md5: e14afa8912873a094a30ad9e455bafc3 depends: - __glibc >=2.17,<3.0.a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 19.0.0 hce2e470_3_cpu - - libarrow-acero 19.0.0 hcb10f89_3_cpu - - libarrow-dataset 19.0.0 hcb10f89_3_cpu + - libarrow 19.0.0 h00a82cf_7_cpu + - libarrow-acero 19.0.0 hcb10f89_7_cpu + - libarrow-dataset 19.0.0 hcb10f89_7_cpu - libgcc >=13 - libprotobuf >=5.28.3,<5.28.4.0a0 - libstdcxx >=13 arch: x86_64 platform: linux license: Apache-2.0 - size: 521371 - timestamp: 1737344062052 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h1e9d426_12_cpu.conda - build_number: 12 - sha256: 6216a1c48e41d3b304e87b19a8ff37c10e51ceca83bff5e942d763c93f6f55a1 - md5: f647dcbf46aebc86f9975ff3c856de45 + size: 521685 + timestamp: 1737757595490 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-19.0.0-h1e9d426_7_cpu.conda + build_number: 7 + sha256: bd85da0813384b5b5af2f2b05e4bc20aa606eb5528310c84e42aa495feec6050 + md5: b35923aad96b07d76db4c31ccc74584f depends: - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.1.0 h4065667_12_cpu - - libarrow-acero 18.1.0 h3b568fd_12_cpu - - libarrow-dataset 18.1.0 h3b568fd_12_cpu + - libarrow 19.0.0 h03ebaaf_7_cpu + - libarrow-acero 19.0.0 h3b568fd_7_cpu + - libarrow-dataset 19.0.0 h3b568fd_7_cpu - libgcc >=13 - libprotobuf >=5.28.3,<5.28.4.0a0 - libstdcxx >=13 arch: aarch64 platform: linux license: Apache-2.0 - size: 516135 - timestamp: 1737451754178 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-19.0.0-h4239455_4_cpu.conda - build_number: 4 - sha256: 1de1100bddcaa4aacae5cc30e3c0ae3259d130bee7b3d52a57a1c9950e0c6588 - md5: 6988cd2fdf01cae4bc454859a7cf8bac + size: 515585 + timestamp: 1737757899077 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-19.0.0-h4239455_7_cpu.conda + build_number: 7 + sha256: 94e5351779728cacd3fcadcfe082fc840a79333ce8b1056bb811e39417decd2a + md5: 05a75db98927961f86b64340442150c3 depends: - __osx >=11.0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 19.0.0 hd1aa4b5_4_cpu - - libarrow-acero 19.0.0 hf07054f_4_cpu - - libarrow-dataset 19.0.0 hf07054f_4_cpu + - libarrow 19.0.0 h819e3af_7_cpu + - libarrow-acero 19.0.0 hf07054f_7_cpu + - libarrow-dataset 19.0.0 hf07054f_7_cpu - libcxx >=18 - libprotobuf >=5.28.3,<5.28.4.0a0 arch: arm64 platform: osx license: Apache-2.0 - size: 449975 - timestamp: 1737460148737 + size: 449238 + timestamp: 1737757536452 - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-26_linux64_openblas.conda build_number: 26 sha256: 30bd658682b124243f8e52d8edf8a19e7be1bc31e4fe4baec30a64002dc8cd0c @@ -4270,9 +4290,9 @@ packages: license_family: GPL size: 463521 timestamp: 1729089357313 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.33.0-h2b5623c_1.conda - sha256: ae48ee93e2c226bf682f1e389c2fd51ae7bf77c2ce4b3aee069764f4be1c63f2 - md5: 61829a8dd5f4e2327e707572065bae41 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.34.0-h2b5623c_0.conda + sha256: 348ee1dddd82dcef5a185c86e65dda8acfc9b583acc425ccb9b661f2d433b2cc + md5: 2a5142c88dd6132eaa8079f99476e922 depends: - __glibc >=2.17,<3.0.a0 - libabseil * cxx17* @@ -4284,13 +4304,13 @@ packages: - libstdcxx >=13 - openssl >=3.4.0,<4.0a0 constrains: - - libgoogle-cloud 2.33.0 *_1 + - libgoogle-cloud 2.34.0 *_0 arch: x86_64 platform: linux license: Apache-2.0 license_family: Apache - size: 1254656 - timestamp: 1735648569457 + size: 1256795 + timestamp: 1737286199784 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-2.34.0-hccf9d24_0.conda sha256: 54267dda8fafc2a2d379ef77b6029d8240e0628d4b29758f788fb903f84397a3 md5: 1ce0fd876001c40801b40fea22987e41 @@ -4331,16 +4351,16 @@ packages: license_family: Apache size: 878217 timestamp: 1737284441192 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.33.0-h0121fbd_1.conda - sha256: 41022523320ca8633a6c615710823e596efadb50f06d724e1a0c81e27994f257 - md5: b0cfb5044685a7a9fa43ae669124f0a0 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.34.0-h0121fbd_0.conda + sha256: aa1b3b30ae6b2eab7c9e6a8e2fd8ec3776f25d2e3f0b6f9dc547ff8083bf25fa + md5: 9f0c43225243c81c6991733edcaafff5 depends: - __glibc >=2.17,<3.0.a0 - libabseil - libcrc32c >=1.1.2,<1.2.0a0 - libcurl - libgcc >=13 - - libgoogle-cloud 2.33.0 h2b5623c_1 + - libgoogle-cloud 2.34.0 h2b5623c_0 - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - openssl @@ -4348,8 +4368,8 @@ packages: platform: linux license: Apache-2.0 license_family: Apache - size: 784357 - timestamp: 1735648759177 + size: 785792 + timestamp: 1737286406612 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-storage-2.34.0-hb9b2b65_0.conda sha256: 4ad4fb7c02dcfa4c86dcf9591e0131a01fc0f2c3f2729c12882b944ddf2b8a9d md5: 0732a5988f7f556f2c1d1f51026fc1be @@ -4569,6 +4589,8 @@ packages: depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 + constrains: + - xz ==5.6.3=*_1 arch: x86_64 platform: linux license: 0BSD @@ -4579,6 +4601,8 @@ packages: md5: eb08b903681f9f2432c320e8ed626723 depends: - libgcc >=13 + constrains: + - xz ==5.6.3=*_1 arch: aarch64 platform: linux license: 0BSD @@ -4589,6 +4613,8 @@ packages: md5: b2553114a7f5e20ccd02378a77d836aa depends: - __osx >=11.0 + constrains: + - xz ==5.6.3=*_1 arch: arm64 platform: osx license: 0BSD @@ -4715,13 +4741,103 @@ packages: license_family: BSD size: 4165774 timestamp: 1730772154295 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-19.0.0-h081d1f1_3_cpu.conda - build_number: 3 - sha256: 287c4864b849180ce9e447df8227da2c4006001056e1668dacc3365264b0e828 - md5: 95f8b5758148e62a055f4c6538a31f0b +- conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-1.18.0-hfcad708_1.conda + sha256: 4ea235e08676f16b0d3c3380befe1478c0fa0141512ee709b011005c55c9619f + md5: 1f5a5d66e77a39dc5bd639ec953705cf + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcurl >=8.11.1,<9.0a0 + - libgrpc >=1.67.1,<1.68.0a0 + - libopentelemetry-cpp-headers 1.18.0 ha770c72_1 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libzlib >=1.3.1,<2.0a0 + - nlohmann_json + - prometheus-cpp >=1.3.0,<1.4.0a0 + constrains: + - cpp-opentelemetry-sdk =1.18.0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 801927 + timestamp: 1735643375271 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopentelemetry-cpp-1.18.0-h60b47f9_1.conda + sha256: 160c493cd0f897955b0b6035b51c6d7255ffbaed3c8a12d43e8e8a719d405aba + md5: afe3c8c53f4b6d27d553c230d4b34038 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcurl >=8.11.1,<9.0a0 + - libgrpc >=1.67.1,<1.68.0a0 + - libopentelemetry-cpp-headers 1.18.0 h8af1aa0_1 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libzlib >=1.3.1,<2.0a0 + - nlohmann_json + - prometheus-cpp >=1.3.0,<1.4.0a0 + constrains: + - cpp-opentelemetry-sdk =1.18.0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 800896 + timestamp: 1735643533825 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopentelemetry-cpp-1.18.0-h0c05b2d_1.conda + sha256: c6bcbd53d62a9e0d8c667e560db0ca2ecb7679277cbb3c23457aabe74fcb8cba + md5: 19c46cc18825f3924251c39ec1b0d983 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcurl >=8.11.1,<9.0a0 + - libgrpc >=1.67.1,<1.68.0a0 + - libopentelemetry-cpp-headers 1.18.0 hce30654_1 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libzlib >=1.3.1,<2.0a0 + - nlohmann_json + - prometheus-cpp >=1.3.0,<1.4.0a0 + constrains: + - cpp-opentelemetry-sdk =1.18.0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + size: 529588 + timestamp: 1735643889612 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-headers-1.18.0-ha770c72_1.conda + sha256: aa1f7dea79ea8513ff77339ba7c6e9cf10dfa537143e7718b1cfb3af52b649f2 + md5: 4fb055f57404920a43b147031471e03b + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 320359 + timestamp: 1735643346175 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopentelemetry-cpp-headers-1.18.0-h8af1aa0_1.conda + sha256: 981c0b29a0789597fa8ed147b02df2d2ad0c7f863d87df74770c40cee1800228 + md5: 282193b19a19e3b5d75d18ef82713ef0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 319401 + timestamp: 1735643509251 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopentelemetry-cpp-headers-1.18.0-hce30654_1.conda + sha256: 82e5f5ba64debbaab3c601b265dfc0cdb4d2880feba9bada5fd2e67b9f91ada5 + md5: e965dad955841507549fdacd8f7f94c0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + size: 320565 + timestamp: 1735643673319 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-19.0.0-h081d1f1_7_cpu.conda + build_number: 7 + sha256: f117af1368c613328fb3af251287c6885962d9477a55d9bf1ab253626730b4ea + md5: a8b3022bfe8a2cb4249229768401340c depends: - __glibc >=2.17,<3.0.a0 - - libarrow 19.0.0 hce2e470_3_cpu + - libarrow 19.0.0 h00a82cf_7_cpu - libgcc >=13 - libstdcxx >=13 - libthrift >=0.21.0,<0.21.1.0a0 @@ -4729,14 +4845,14 @@ packages: arch: x86_64 platform: linux license: Apache-2.0 - size: 1227537 - timestamp: 1737343982323 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-hfc78867_12_cpu.conda - build_number: 12 - sha256: 224da9fb417e1dc569700cddf6dd7febe9a6e5c12547a389a5b934b8d385c4f8 - md5: 517447be85cda09f9410ca609c69499d + size: 1240902 + timestamp: 1737757526098 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-19.0.0-hfc78867_7_cpu.conda + build_number: 7 + sha256: 85a9964201ab6ed15b22a5ea29c66b44febc5a815a7d3234c3a605ca7644cc02 + md5: 8814a0cd443b9ebbb1662b370b6b14fb depends: - - libarrow 18.1.0 h4065667_12_cpu + - libarrow 19.0.0 h03ebaaf_7_cpu - libgcc >=13 - libstdcxx >=13 - libthrift >=0.21.0,<0.21.1.0a0 @@ -4744,23 +4860,23 @@ packages: arch: aarch64 platform: linux license: Apache-2.0 - size: 1116762 - timestamp: 1737451682325 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-19.0.0-h636d7b7_4_cpu.conda - build_number: 4 - sha256: d394423b8a096cec5481ef4cdb4d39dd4b89949cd6f23bdc14896d8af36d78f3 - md5: 639473b0344e0d2f46feb544cff5c6d8 + size: 1153344 + timestamp: 1737757846296 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-19.0.0-h636d7b7_7_cpu.conda + build_number: 7 + sha256: 637298e97c586a74e19df44cf378be3e99274aef09ee1b2a5f30c4492bd62e0d + md5: 3f0e87a16e30ff26bb513fcda9f971ac depends: - __osx >=11.0 - - libarrow 19.0.0 hd1aa4b5_4_cpu + - libarrow 19.0.0 h819e3af_7_cpu - libcxx >=18 - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 arch: arm64 platform: osx license: Apache-2.0 - size: 885681 - timestamp: 1737459816091 + size: 893815 + timestamp: 1737757309795 - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.45-h943b412_0.conda sha256: b8f5b5ba9a14dedf7c97c01300de492b1b52b68eacbc3249a13fdbfa82349a2f md5: 85cbdaacad93808395ac295b5667d25b @@ -5535,47 +5651,47 @@ packages: license_family: BSD size: 14467 timestamp: 1733417051523 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025012205-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025012505-release.conda noarch: python - sha256: 63e2ce51c01fdb5a73f62ea5f862acea5946f45d6b6bd63dafc78d242822e1b7 - md5: 5289b5be19bf0f500e1a06f44d816343 + sha256: 83e72ee5d9c5965eefc04dc84a9f496b5064e006dbfcfe137ab1710285d6b3f3 + md5: 3359ea55713294fb8bb2c70e6bd5753a depends: - - max-core ==25.1.0.dev2025012205 release - - max-python >=25.1.0.dev2025012205,<26.0a0 - - mojo-jupyter ==25.1.0.dev2025012205 release - - mblack ==25.1.0.dev2025012205 release + - max-core ==25.1.0.dev2025012505 release + - max-python >=25.1.0.dev2025012505,<26.0a0 + - mojo-jupyter ==25.1.0.dev2025012505 release + - mblack ==25.1.0.dev2025012505 release license: LicenseRef-Modular-Proprietary - size: 9919 - timestamp: 1737524122346 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025012205-release.conda - sha256: 061e7c8aba735fd2d15aca623c2f81452723bc0a5ab1e5a63af1761a9eaba9ef - md5: 2d8a82ff460cd4e03382a9151a8cf8d8 + size: 9918 + timestamp: 1737782253436 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025012505-release.conda + sha256: d89d1a2279776c687b3b729d53b1e737477afc3eae214d5750b00a048667aaed + md5: ebf37a7d5882bb676718a5648dee3654 depends: - - mblack ==25.1.0.dev2025012205 release + - mblack ==25.1.0.dev2025012505 release license: LicenseRef-Modular-Proprietary - size: 242139658 - timestamp: 1737523134733 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025012205-release.conda - sha256: eade442118da29d8b42289e6859699b4faafcf51d02189729259a2e7a97a0dcc - md5: 8e0412932905d3a4decf17acd50899ce + size: 243130339 + timestamp: 1737782221031 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025012505-release.conda + sha256: ad52887002d135793158f9bc4afcd2ea1d89111f65351885669894bb23a83763 + md5: bde4e25a295f947b730261246613b83d depends: - - mblack ==25.1.0.dev2025012205 release + - mblack ==25.1.0.dev2025012505 release license: LicenseRef-Modular-Proprietary - size: 244683388 - timestamp: 1737524122344 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025012205-release.conda - sha256: b5ccec88293901182a43d7f407d04b522b729cefaab066788496adec5bd3f2d2 - md5: bd5da5f25bd5151b4b691c34acdbeff0 + size: 245590611 + timestamp: 1737782253434 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025012505-release.conda + sha256: b1d103910f7b6a273906ea40f7dc993144511ed61239a5d764aca21ea479fe46 + md5: e01118f345f22ed4efb89192dfbbdbc6 depends: - - mblack ==25.1.0.dev2025012205 release + - mblack ==25.1.0.dev2025012505 release license: LicenseRef-Modular-Proprietary - size: 203820478 - timestamp: 1737523349069 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025012205-3.12release.conda - sha256: ceb4d33afe634401be386903e2f516b78f2b5e23e15cbedad42cce2600c97b7d - md5: ecfacd66a5b71794c53a468fbefcef6a + size: 204961123 + timestamp: 1737782482300 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025012505-3.12release.conda + sha256: b52562f368fe5dbc95343bcd7f2ee4699a25589c689b0cba444e5a93757b1ea7 + md5: a43f10619b5e0502b7f59ad823770f9f depends: - - max-core ==25.1.0.dev2025012205 release + - max-core ==25.1.0.dev2025012505 release - python 3.12.* - fastapi - httpx @@ -5596,13 +5712,13 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 119861319 - timestamp: 1737523134743 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025012205-3.12release.conda - sha256: 14ae6f16ce6c895de574bb02307cd58e87e32013bde0d905d6a1a67e686ca204 - md5: fb06394177c69b52c2ecf9ceaa7b308b + size: 120565142 + timestamp: 1737782221040 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025012505-3.12release.conda + sha256: c6252c78ced4b1a2c793ff2cb5846bd34dd6d16e8fd65425e9f1df6fe6227b0d + md5: 8ee044754ebf79922c85299e7425abf3 depends: - - max-core ==25.1.0.dev2025012205 release + - max-core ==25.1.0.dev2025012505 release - python 3.12.* - fastapi - httpx @@ -5623,13 +5739,13 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 122258493 - timestamp: 1737524122355 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025012205-3.12release.conda - sha256: 35e34095931d604893d014773f8c61c1c09a9888946dec4a01f1db827bd2f439 - md5: 589be4ace2edf68cfc3cf1d0cc429864 + size: 123069129 + timestamp: 1737782253444 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025012505-3.12release.conda + sha256: 489140758c2f0df45e077c6d52aac9bd419774b2d00b0a594d49505495e7aca4 + md5: 03b88370aa08d78471ff2e88973534d3 depends: - - max-core ==25.1.0.dev2025012205 release + - max-core ==25.1.0.dev2025012505 release - python 3.12.* - fastapi - httpx @@ -5650,12 +5766,12 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 105223218 - timestamp: 1737523349072 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012205-release.conda + size: 105954416 + timestamp: 1737782482303 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012505-release.conda noarch: python - sha256: 31bce03569c241ade0a344f1fe1a683f928fe367ae57147b3e316783631822fe - md5: c54b5f7d0d777b8995e38978d8626ffc + sha256: 906a374c4b22380993352480333cd5fc9c1a2e2179ab2e7ea65abc3bd54fc35e + md5: 3109b109f417bff02b27ff1cc78239ae depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -5665,8 +5781,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130797 - timestamp: 1737524122352 + size: 130805 + timestamp: 1737782253440 - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda sha256: 78c1bbe1723449c52b7a9df1af2ee5f005209f67e40b6e1d3c7619127c43b1c7 md5: 592132998493b3ff25fd7479396e8351 @@ -5686,18 +5802,18 @@ packages: license_family: BSD size: 68803 timestamp: 1735686983426 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025012205-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025012505-release.conda noarch: python - sha256: 78e2818c9d17321c5fe73f9dca3d7a9c51ad989c00f8ea9721deb94a4f03800e - md5: ca3c9282adb4a04dbd02f3ab8e73445c + sha256: 6cba6b01c693678b0e48d5428788d3734e885f6efc911b345fae474e4405460f + md5: 16521d51e47d4d67cf1a42351687f6b8 depends: - - max-core ==25.1.0.dev2025012205 release + - max-core ==25.1.0.dev2025012505 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22925 - timestamp: 1737524122353 + size: 22934 + timestamp: 1737782253442 - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py312h178313f_2.conda sha256: b05bc8252a6e957bf4a776ed5e0e61d1ba88cdc46ccb55890c72cc58b10371f4 md5: 5b5e3267d915a107eca793d52e1b780a @@ -5886,6 +6002,43 @@ packages: license_family: BSD size: 11543 timestamp: 1733325673691 +- conda: https://conda.anaconda.org/conda-forge/linux-64/nlohmann_json-3.11.3-he02047a_1.conda + sha256: ce4bcced4f8eea71b7cac8bc3daac097abf7a5792f278cd811dedada199500c1 + md5: e46f7ac4917215b49df2ea09a694a3fa + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 122743 + timestamp: 1723652407663 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/nlohmann_json-3.11.3-h0a1ffab_1.conda + sha256: c90b1f11fc337d90a9e4c5aeeacac1418c5ba6a195097086566d38bb2ecf0f24 + md5: f2bd10ff23ab5c87327439c4499b3f3e + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 122755 + timestamp: 1723652622631 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/nlohmann_json-3.11.3-h00cdb27_1.conda + sha256: 3f4e6a4fa074bb297855f8111ab974dab6d9f98b7d4317d4dd46f8687ee2363b + md5: d2dee849c806430eee64d3acc98ce090 + depends: + - __osx >=11.0 + - libcxx >=16 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 123250 + timestamp: 1723652704997 - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda sha256: 7b920e46b9f7a2d2aa6434222e5c8d739021dbc5cc75f32d124a8191d86f9056 md5: e7f89ea5f7ea9401642758ff50a2d9c1 @@ -6389,6 +6542,52 @@ packages: license_family: MIT size: 20448 timestamp: 1733232756001 +- conda: https://conda.anaconda.org/conda-forge/linux-64/prometheus-cpp-1.3.0-ha5d0236_0.conda + sha256: 013669433eb447548f21c3c6b16b2ed64356f726b5f77c1b39d5ba17a8a4b8bc + md5: a83f6a2fdc079e643237887a37460668 + depends: + - __glibc >=2.17,<3.0.a0 + - libcurl >=8.10.1,<9.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - zlib + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 199544 + timestamp: 1730769112346 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/prometheus-cpp-1.3.0-h7938499_0.conda + sha256: 9350d7bbc3982a732ff13a7fd17b585509e3b7d0191ac7b810cc3224868e3648 + md5: 10f4301290e51c49979ff98d1bdf2556 + depends: + - libcurl >=8.10.1,<9.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - zlib + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 211335 + timestamp: 1730769181127 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/prometheus-cpp-1.3.0-h0967b3e_0.conda + sha256: 851a77ae1a8e90db9b9f3c4466abea7afb52713c3d98ceb0d37ba6ff27df2eff + md5: 7172339b49c94275ba42fec3eaeda34f + depends: + - __osx >=11.0 + - libcurl >=8.10.1,<9.0a0 + - libcxx >=18 + - libzlib >=1.3.1,<2.0a0 + - zlib + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 173220 + timestamp: 1730769371051 - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda sha256: bc8f00d5155deb7b47702cb8370f233935704100dbc23e30747c161d1b6cf3ab md5: 3e01e386307acc60b2f89af0b2e161aa @@ -6407,11 +6606,12 @@ packages: constrains: - prompt_toolkit 3.0.50 license: BSD-3-Clause + license_family: BSD size: 271905 timestamp: 1737453457168 -- conda: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.1-py312h66e93f0_0.conda - sha256: 5771311fb5ded614ca349c92579a0b752af55a310f40b71fc533e20625965391 - md5: 55d5742a696d7da1c1262e99b6217ceb +- conda: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.1-py312h178313f_1.conda + sha256: 6d5ff6490c53e14591b70924711fe7bd70eb7fbeeeb1cbd9ed2f6d794ec8c4eb + md5: 349635694b4df27336bc15a49e9220e9 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -6421,11 +6621,11 @@ packages: platform: linux license: Apache-2.0 license_family: APACHE - size: 52747 - timestamp: 1733391916349 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.2.1-py312hb2c0f52_0.conda - sha256: c7f62c11ed929ccf1f3d4a1e200e28be01e8d0e0786bf8f76c5893f2ea681e1b - md5: 50ab8953e7ff1333a4a47cda32e68123 + size: 52947 + timestamp: 1737635699390 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.2.1-py312hcc812fe_1.conda + sha256: d759d8ab9c060b42cabf6312b9a04aa590daecabf1dd4e35731f4bc1b5c388bb + md5: 533b07e9fd835938f465225613825eee depends: - libgcc >=13 - python >=3.12,<3.13.0a0 @@ -6435,11 +6635,11 @@ packages: platform: linux license: Apache-2.0 license_family: APACHE - size: 52484 - timestamp: 1733391993461 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.1-py312hea69d52_0.conda - sha256: f8c266c494aa1e4cfb8bf0b6fca060044b2f3d65afe4c5062ebeea382e77aa6d - md5: c84e3dd97fe25a17322c4a0f670c6750 + size: 52776 + timestamp: 1737635802135 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.1-py312h998013c_1.conda + sha256: 96145760baad111d7ae4213ea8f8cc035cf33b001f5ff37d92268e4d28b0941d + md5: 83678928c58c9ae76778a435b6c7a94a depends: - __osx >=11.0 - python >=3.12,<3.13.0a0 @@ -6449,8 +6649,8 @@ packages: platform: osx license: Apache-2.0 license_family: APACHE - size: 48225 - timestamp: 1733392308901 + size: 50942 + timestamp: 1737635896600 - conda: https://conda.anaconda.org/conda-forge/linux-64/protobuf-5.28.3-py312h2ec8cdc_0.conda sha256: acb2e0ee948e3941f8ed191cb77f654e06538638aed8ccd71cbc78a15242ebbb md5: 9d7e427d159c1b2d516cc047ff177c48 @@ -6612,23 +6812,23 @@ packages: license_family: APACHE size: 25289 timestamp: 1737128438818 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-18.1.0-py312h8025657_0.conda - sha256: 49db959887cb89b44053a44a98d0f35644fc0b2003587492f02b56046de0b60a - md5: 9bb7d32e96a5dcb5ea7fd90a11a83656 - depends: - - libarrow-acero 18.1.0.* - - libarrow-dataset 18.1.0.* - - libarrow-substrait 18.1.0.* - - libparquet 18.1.0.* - - pyarrow-core 18.1.0 *_0_* +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-19.0.0-py312h8025657_0.conda + sha256: 3a73d3d15031586214381edf5410a6920c1f75f52a8d8b994722b106d9a50150 + md5: a86fa414c44b7e3ee054cc385c79a822 + depends: + - libarrow-acero 19.0.0.* + - libarrow-dataset 19.0.0.* + - libarrow-substrait 19.0.0.* + - libparquet 19.0.0.* + - pyarrow-core 19.0.0 *_0_* - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 arch: aarch64 platform: linux license: Apache-2.0 license_family: APACHE - size: 25374 - timestamp: 1732611006864 + size: 25496 + timestamp: 1737129041038 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-19.0.0-py312h1f38498_0.conda sha256: 9d693901833c2ff4e5d67e1f2f6df50f699e1cec2f580c26d42299654830855a md5: bd5e025292ff1127aa1534b59e55c4d0 @@ -6666,11 +6866,11 @@ packages: license_family: APACHE size: 5230953 timestamp: 1737128097002 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-18.1.0-py312h66f7834_0_cpu.conda - sha256: e7eb062145be554c23dfefa0ebe8c5f6ae8c59635117a6921e66403d6addcda3 - md5: 3390c8b8f57e85506c92a37cf750bdd7 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-19.0.0-py312h66f7834_0_cpu.conda + sha256: 17ff419abfe9596f77857dfa635538200427d87283c28e64920d10d6533ec30e + md5: ce51dbcfeae8709f0b94c78eabe7cf5e depends: - - libarrow 18.1.0.* *cpu + - libarrow 19.0.0.* *cpu - libgcc >=13 - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 @@ -6684,8 +6884,8 @@ packages: platform: linux license: Apache-2.0 license_family: APACHE - size: 4406662 - timestamp: 1732610939832 + size: 5023430 + timestamp: 1737627066264 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-19.0.0-py312hc40f475_0_cpu.conda sha256: 6303fe1c3e6d36273b72f0eeb3f19897d2376d57fe8c757f55dcbfbaa5cd6840 md5: df502157843a7b1d90af04803767be15 @@ -6716,9 +6916,9 @@ packages: license_family: BSD size: 110100 timestamp: 1733195786147 -- conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.5-pyh3cfb1c2_0.conda - sha256: 0f32c30ddc610cd1113335d8b4f311f20f4d72754b7c1a5d0d9493f597cf11d2 - md5: e8ea30925c8271c4128375810d7d3d7a +- conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.6-pyh3cfb1c2_0.conda + sha256: 9a78801a28959edeb945e8270a4e666577b52fac0cf4e35f88cf122f73d83e75 + md5: c69f87041cf24dfc8cb6bf64ca7133c7 depends: - annotated-types >=0.6.0 - pydantic-core 2.27.2 @@ -6727,8 +6927,8 @@ packages: - typing_extensions >=4.12.2 license: MIT license_family: MIT - size: 296805 - timestamp: 1736458364196 + size: 296841 + timestamp: 1737761472006 - conda: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.27.2-py312h12e396e_0.conda sha256: 81602a4592ad2ac1a1cb57372fd25214e63b1c477d5818b0c21cde0f1f85c001 md5: bae01b2563030c085f5158c518b84e86 @@ -6800,9 +7000,9 @@ packages: license_family: BSD size: 888600 timestamp: 1736243563082 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pyinstrument-5.0.0-py312h66e93f0_0.conda - sha256: 8a006507a4003fb01eeee2f9ba79f994478694766ea3b445273da5c11cf8e763 - md5: 798f42d9bfdf125dc80ffbec0e96e0b6 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyinstrument-5.0.1-py312h66e93f0_0.conda + sha256: 3f1c0bc95f2c46dcd107f44cf742ee1fa40ba22e244f01083654743bbbcf28f3 + md5: 9f1d7b421e4c8fd00009490613db64d4 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -6812,11 +7012,11 @@ packages: platform: linux license: BSD-3-Clause license_family: BSD - size: 182021 - timestamp: 1728714164706 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyinstrument-5.0.0-py312hb2c0f52_0.conda - sha256: 7967b94b8f0ff75847302444e9c43ac11a391d74da24cb14fba1049fac9e5ba9 - md5: 5274663cb05dfbe316db50af6da4389f + size: 182333 + timestamp: 1737774425235 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyinstrument-5.0.1-py312hb2c0f52_0.conda + sha256: 16af5db4359078bcb526291855bf1075ab035a96fe4e8d5cc4b0b5c8cba89b9a + md5: 90f5e9e04b1ecf25ad3f28b606f63742 depends: - libgcc >=13 - python >=3.12,<3.13.0a0 @@ -6826,11 +7026,11 @@ packages: platform: linux license: BSD-3-Clause license_family: BSD - size: 183141 - timestamp: 1728714267954 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyinstrument-5.0.0-py312h0bf5046_0.conda - sha256: 6879d52fb0ec2258e2850476786a652c394220d53883c53691ed5390183ae925 - md5: f0e4a98d54477083ddc9d2f33507f848 + size: 183988 + timestamp: 1737774588265 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyinstrument-5.0.1-py312hea69d52_0.conda + sha256: 5e7de2f908af22bbd8cf3562ce5ebf65ad6c0d8e40038f90b56f4db750639ce2 + md5: 07b0eb9b6bd91dfa87f95032825690dc depends: - __osx >=11.0 - python >=3.12,<3.13.0a0 @@ -6840,8 +7040,8 @@ packages: platform: osx license: BSD-3-Clause license_family: BSD - size: 181512 - timestamp: 1728714205508 + size: 182524 + timestamp: 1737774624030 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-core-11.0-py312hb9d441b_0.conda sha256: 7805d910dd6ac686e2f780c879a986f35d7a4c73f4236c956c03bdcb26bec421 md5: 0726db04477a28c51d1a260afb356b67 @@ -7017,6 +7217,7 @@ packages: depends: - python >=3.9 license: Apache-2.0 + license_family: APACHE size: 143794 timestamp: 1737541204030 - conda: https://conda.anaconda.org/conda-forge/linux-64/python-xxhash-3.5.0-py312h66e93f0_1.conda @@ -7630,17 +7831,17 @@ packages: license_family: MIT size: 26988 timestamp: 1733569565672 -- conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyha770c72_1.conda - sha256: b74fc76107487eb26624c01fc55bfab7eed03ae82e003333c86d8a1eeac53672 - md5: 0207dac04ae2200701fab697f0aaaac4 +- conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.45.2-pyha770c72_0.conda + sha256: 2c429dbbd5e7256517ef6cdfc30664b0c0e87f90f3c526afe3b97681aafb5623 + md5: acd5901cdd0365e18129f4748e524615 depends: - - anyio >=3.4.0,<5 + - anyio >=3.6.2,<5 - python >=3.9 - typing_extensions >=3.10.0 license: BSD-3-Clause license_family: BSD - size: 58838 - timestamp: 1733344472634 + size: 58040 + timestamp: 1736016898891 - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh0d859eb_0.conda sha256: b300557c0382478cf661ddb520263508e4b3b5871b471410450ef2846e8c352c md5: efba281bbdae5f6b0a1d53c6d4a97c93 @@ -8438,6 +8639,43 @@ packages: license_family: MIT size: 21809 timestamp: 1732827613585 +- conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.1-hb9d3cd8_2.conda + sha256: 5d7c0e5f0005f74112a34a7425179f4eb6e73c92f5d109e6af4ddeca407c92ab + md5: c9f075ab2f33b3bbee9e62d4ad0a6cd8 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libzlib 1.3.1 hb9d3cd8_2 + arch: x86_64 + platform: linux + license: Zlib + license_family: Other + size: 92286 + timestamp: 1727963153079 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zlib-1.3.1-h86ecc28_2.conda + sha256: b4f649aa3ecdae384d5dad7074e198bff120edd3dfb816588e31738fc6d627b1 + md5: bc230abb5d21b63ff4799b0e75204783 + depends: + - libgcc >=13 + - libzlib 1.3.1 h86ecc28_2 + arch: aarch64 + platform: linux + license: Zlib + license_family: Other + size: 95582 + timestamp: 1727963203597 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zlib-1.3.1-h8359307_2.conda + sha256: 58f8860756680a4831c1bf4f294e2354d187f2e999791d53b1941834c4b37430 + md5: e3170d898ca6cb48f1bb567afb92f775 + depends: + - __osx >=11.0 + - libzlib 1.3.1 h8359307_2 + arch: arm64 + platform: osx + license: Zlib + license_family: Other + size: 77606 + timestamp: 1727963209370 - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312hef9b889_1.conda sha256: b97015e146437283f2213ff0e95abdc8e2480150634d81fbae6b96ee09f5e50b md5: 8b7069e9792ee4e5b4919a7a306d2e67 diff --git a/examples/operators/magic.lock b/examples/operators/magic.lock index 18e04204dc..2ef666c55d 100644 --- a/examples/operators/magic.lock +++ b/examples/operators/magic.lock @@ -26,7 +26,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.2-h4e1184b_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-h4e1184b_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.9-he0e7f3f_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-h4d475cb_6.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.489-h4d475cb_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.10.0-h113e628_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.13.0-h3cf044e_1.conda @@ -49,23 +49,23 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda - 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-0.115.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.17.0-pyhd8ed1ab_0.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 + - conda: https://conda.anaconda.org/conda-forge/linux-64/frozenlist-1.5.0-py312h178313f_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.12.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gflags-2.2.2-h5888daf_1005.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/glog-0.7.1-hbabe93e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/httptools-0.6.4-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.27.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.5-pyhd8ed1ab_0.conda @@ -77,10 +77,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-19.0.0-hce2e470_3_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-19.0.0-hcb10f89_3_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-19.0.0-hcb10f89_3_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-19.0.0-h08228c5_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-19.0.0-h00a82cf_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-19.0.0-hcb10f89_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-19.0.0-hcb10f89_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-19.0.0-h08228c5_7_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-26_linux64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hb9d3cd8_2.conda @@ -99,8 +99,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hd5240d6_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h77fa898_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.33.0-h2b5623c_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.33.0-h0121fbd_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.34.0-h2b5623c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.34.0-h0121fbd_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.67.1-h25350d4_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-hd590300_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda @@ -109,7 +109,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.28-pthreads_h94d23a6_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-19.0.0-h081d1f1_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-1.18.0-hfcad708_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-headers-1.18.0-ha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-19.0.0-h081d1f1_7_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.45-h943b412_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_2.conda @@ -131,16 +133,17 @@ 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-25.1.0.dev2025012205-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025012205-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025012205-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025012505-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025012505-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025012505-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012505-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-25.1.0.dev2025012205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025012505-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-h2d0b736_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/nlohmann_json-3.11.3-he02047a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.3-h5fbd93e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.0-h7b32b05_1.conda @@ -157,18 +160,19 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-11.1.0-py312h80c1187_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/prometheus-cpp-1.3.0-ha5d0236_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.1-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.1-py312h178313f_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/protobuf-5.28.3-py312h2ec8cdc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-19.0.0-py312h7900ff3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-19.0.0-py312h01725c0_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.5-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.6-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.27.2-py312h12e396e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.7.1-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pyinstrument-5.0.0-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyinstrument-5.0.1-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.8-h9e4cc4f_1_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda @@ -194,7 +198,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-h8bd8927_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.2.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.45.2-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.21.0-py312h8360d73_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda @@ -221,6 +225,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.18.3-py312h178313f_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.1-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312hef9b889_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda linux-aarch64: @@ -243,7 +248,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.2-h0f0193d_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h0f0193d_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.9-hab3ce66_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h88461e4_6.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.489-h88461e4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-core-cpp-1.14.0-h1887c18_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-identity-cpp-1.10.0-h47b0b28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-blobs-cpp-12.13.0-h185ecfd_1.conda @@ -266,23 +271,23 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda - 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-0.115.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.17.0-pyhd8ed1ab_0.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 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/frozenlist-1.5.0-py312hcc812fe_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.12.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gflags-2.2.2-h5ad3122_1005.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/glog-0.7.1-h468a4a4_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/httptools-0.6.4-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.27.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_1.conda @@ -295,10 +300,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.0.0-h4de3ea5_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h18dbdb1_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-h4065667_12_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h3b568fd_12_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h3b568fd_12_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h1e9d426_12_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-19.0.0-h03ebaaf_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-19.0.0-h3b568fd_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-19.0.0-h3b568fd_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-19.0.0-h1e9d426_7_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-26_linuxaarch64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlicommon-1.1.0-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlidec-1.1.0-h86ecc28_2.conda @@ -327,7 +332,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnghttp2-1.64.0-hc8609a4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.28-pthreads_h9d3fd7e_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-hfc78867_12_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopentelemetry-cpp-1.18.0-h60b47f9_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopentelemetry-cpp-headers-1.18.0-h8af1aa0_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-19.0.0-hfc78867_7_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.45-hec79eb8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.3-h44a3b7b_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_2.conda @@ -349,16 +356,17 @@ 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-25.1.0.dev2025012205-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025012205-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025012205-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025012505-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025012505-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025012505-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012505-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-25.1.0.dev2025012205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025012505-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-ha32ae93_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/nlohmann_json-3.11.3-h0a1ffab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openjpeg-2.5.3-h3f56577_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.0-hd08dc88_1.conda @@ -375,18 +383,19 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pillow-11.1.0-py312h719f0cf_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/prometheus-cpp-1.3.0-h7938499_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.2.1-py312hb2c0f52_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.2.1-py312hcc812fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/protobuf-5.28.3-py312h6f74592_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pthread-stubs-0.4-h86ecc28_1002.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-18.1.0-py312h8025657_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-18.1.0-py312h66f7834_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-19.0.0-py312h8025657_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-19.0.0-py312h66f7834_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.5-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.6-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pydantic-core-2.27.2-py312h8cbf658_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.7.1-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyinstrument-5.0.0-py312hb2c0f52_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyinstrument-5.0.1-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.8-h1683364_1_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda @@ -412,7 +421,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-hd4fb6f5_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.2.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.45.2-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.21.0-py312ha0d6ea1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py312h52516f5_0.conda @@ -439,6 +448,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.18.3-py312hcc812fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zeromq-4.3.5-h5efb499_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zlib-1.3.1-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstandard-0.23.0-py312hb698573_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.6-h02f22dd_0.conda osx-arm64: @@ -460,7 +470,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.2-hc8a0bd2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-hc8a0bd2_4.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.9-ha81f72f_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-h0e5014b_6.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.489-h0e5014b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.14.0-hd50102c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.10.0-hc602bab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-blobs-cpp-12.13.0-h7585a09_1.conda @@ -483,23 +493,23 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda - 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-0.115.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.17.0-pyhd8ed1ab_0.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 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/frozenlist-1.5.0-py312h998013c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.12.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gflags-2.2.2-hf9b8971_1005.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/glog-0.7.1-heb240a5_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/httptools-0.6.4-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.27.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_1.conda @@ -510,10 +520,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.16-ha0e7c42_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_h07bc746_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-19.0.0-hd1aa4b5_4_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-19.0.0-hf07054f_4_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-19.0.0-hf07054f_4_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-19.0.0-h4239455_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-19.0.0-h819e3af_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-19.0.0-hf07054f_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-19.0.0-hf07054f_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-19.0.0-h4239455_7_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-26_osxarm64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.1.0-hd74edd7_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.1.0-hd74edd7_2.conda @@ -539,7 +549,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.3-h39f12f2_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.64.0-h6d7220d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.28-openmp_hf332438_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-19.0.0-h636d7b7_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopentelemetry-cpp-1.18.0-h0c05b2d_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopentelemetry-cpp-headers-1.18.0-hce30654_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-19.0.0-h636d7b7_7_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.45-h3783ad8_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.3-h3bd63a1_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h07bc746_2.conda @@ -558,16 +570,17 @@ 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-25.1.0.dev2025012205-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025012205-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025012205-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025012505-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025012505-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025012505-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012505-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-25.1.0.dev2025012205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025012505-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 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/nlohmann_json-3.11.3-h00cdb27_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openjpeg-2.5.3-h8a3d83b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.0-h81ee809_1.conda @@ -584,18 +597,19 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-11.1.0-py312h50aef2c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/prometheus-cpp-1.3.0-h0967b3e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.1-py312hea69d52_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.1-py312h998013c_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/protobuf-5.28.3-py312hd8f9ff3_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pthread-stubs-0.4-hd74edd7_1002.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-19.0.0-py312h1f38498_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-19.0.0-py312hc40f475_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.5-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.6-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.27.2-py312hcd83bfe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.7.1-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyinstrument-5.0.0-py312h0bf5046_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyinstrument-5.0.1-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.8-hc22306f_1_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda @@ -620,7 +634,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-h98b9ce2_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.2.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.45.2-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.21.0-py312hf3e4074_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda @@ -647,6 +661,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.18.3-py312h998013c_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zlib-1.3.1-h8359307_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py312h15fbf35_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.6-hb46c0d2_0.conda packages: @@ -1333,9 +1348,9 @@ packages: license_family: Apache size: 235976 timestamp: 1737565563139 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-h4d475cb_6.conda - sha256: 2309d96d537b5c3810c6e9fbf5b6bb7e06ce907a609d172063ab504b2cc67f30 - md5: 6139e84bbb6fdb27ca49c2981613a5fa +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.489-h4d475cb_0.conda + sha256: 08d6b7d2ed17bfcc7deb903c7751278ee434abdb27e3be0dceb561f30f030c75 + md5: b775e9f46dfa94b228a81d8e8c6d8b1d depends: - __glibc >=2.17,<3.0.a0 - aws-c-common >=0.10.6,<0.10.7.0a0 @@ -1351,11 +1366,11 @@ packages: platform: linux license: Apache-2.0 license_family: Apache - size: 3069914 - timestamp: 1737049585807 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h88461e4_6.conda - sha256: f97e071ffb87bc33923f798761ec6a854614ce193913d34d3248515d18357baa - md5: 0d7f1ee2e5572bf9d1fd78f0f2ab6f6b + size: 3144364 + timestamp: 1737576036746 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.489-h88461e4_0.conda + sha256: 88353e82b053763168cddbe2f88048defc1c97b3dad0966fbe8c4fa7aa592c7e + md5: e725d8fa77a6a5f38a78c5de914a5f40 depends: - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 @@ -1370,11 +1385,11 @@ packages: platform: linux license: Apache-2.0 license_family: Apache - size: 2919798 - timestamp: 1737049659061 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-h0e5014b_6.conda - sha256: 8c21ce4692d1631b96adea099d7c2b905fc5d078db63bf754d85600dcf184651 - md5: a3b7b9a81d8c6a8f963f619d9e362c39 + size: 3015109 + timestamp: 1737575993030 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.489-h0e5014b_0.conda + sha256: d82451530ddf363d8bb31a8a7391bb9699f745e940ace91d78c0e6170deef03c + md5: 156cfb45a1bb8cffc81e59047bb34f51 depends: - __osx >=11.0 - aws-c-common >=0.10.6,<0.10.7.0a0 @@ -1389,8 +1404,8 @@ packages: platform: osx license: Apache-2.0 license_family: Apache - size: 2834057 - timestamp: 1737126583846 + size: 2874126 + timestamp: 1737577023623 - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda sha256: fe07debdb089a3db17f40a7f20d283d75284bb4fc269ef727b8ba6fc93f7cb5a md5: 0a8838771cc2e985cd295e01ae83baf1 @@ -1934,24 +1949,25 @@ packages: license: MIT and PSF-2.0 size: 20486 timestamp: 1733208916977 -- conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.6-pyhd8ed1ab_0.conda - sha256: d7826d537c667093c9de96411a09585a8d620c84a830a0195e58e9a0df45f018 - md5: 1b1e0c97830cdf75f1f371bd467ab657 +- conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.7-pyh29332c3_1.conda + sha256: ac0c357b216e0b37d1a31af200548783d9e5a0413caaee92c5184dbef63b578e + md5: b53637ce62c4bcf3123a2a40f6a3824b depends: + - python >=3.9 + - starlette >=0.40.0,<0.46.0 + - typing_extensions >=4.8.0 + - pydantic >=1.7.4,!=1.8,!=1.8.1,!=2.0.0,!=2.0.1,!=2.1.0,<3.0.0 - email_validator >=2.0.0 - fastapi-cli >=0.0.5 - httpx >=0.23.0 - - jinja2 >=2.11.2 - - pydantic >=1.7.4,!=1.8,!=1.8.1,!=2.0.0,!=2.0.1,!=2.1.0,<3.0.0 - - python >=3.9 - - python-multipart >=0.0.7 - - starlette >=0.40.0,<0.42.0 - - typing_extensions >=4.8.0 + - jinja2 >=3.1.5 + - python-multipart >=0.0.18 - uvicorn-standard >=0.12.0 + - python license: MIT license_family: MIT - size: 73084 - timestamp: 1733362427885 + size: 77890 + timestamp: 1737647037273 - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.7-pyhd8ed1ab_0.conda sha256: 300683731013b7221922339cd40430bb3c2ddeeb658fd7e37f5099ffe64e4db0 md5: d960e0ea9e1c561aa928f6c4439f04c7 @@ -2007,9 +2023,9 @@ packages: license: GPL-2.0-only OR FTL size: 596430 timestamp: 1694616332835 -- conda: https://conda.anaconda.org/conda-forge/linux-64/frozenlist-1.5.0-py312h66e93f0_0.conda - sha256: 7e0c12983b20f2816b3712729b5a35ecb7ee152132ca7cf805427c62395ea823 - md5: f98e36c96b2c66d9043187179ddb04f4 +- conda: https://conda.anaconda.org/conda-forge/linux-64/frozenlist-1.5.0-py312h178313f_1.conda + sha256: 501e20626798b6d7f130f4db0fb02c0385d8f4c11ca525925602a4208afb343f + md5: fb986e1c089021979dc79606af78ef8f depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -2019,11 +2035,11 @@ packages: platform: linux license: Apache-2.0 license_family: APACHE - size: 60968 - timestamp: 1729699568442 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/frozenlist-1.5.0-py312hb2c0f52_0.conda - sha256: b0a9ff3e71452eed70877b2f3175d41cd85070da6deac381c5f3f61e1f19bccb - md5: 62fc11b0738ca15e0dd19b60cf280d12 + size: 60939 + timestamp: 1737645356438 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/frozenlist-1.5.0-py312hcc812fe_1.conda + sha256: 84895c5e207e0cb2044f3607fb36b82eb8cb45f0a009d03dc04c777ed975757d + md5: 9090bf5c43e8011fb2e9a82a1db20cc3 depends: - libgcc >=13 - python >=3.12,<3.13.0a0 @@ -2033,11 +2049,11 @@ packages: platform: linux license: Apache-2.0 license_family: APACHE - size: 59967 - timestamp: 1729699642726 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/frozenlist-1.5.0-py312h0bf5046_0.conda - sha256: 44d6d6b332421e621c029fb149f12dba1ccb5ed6ac632e2e807a9d92d6cb2864 - md5: 7960352935cc95ac23883c9b8c97f2ff + size: 60472 + timestamp: 1737645511278 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/frozenlist-1.5.0-py312h998013c_1.conda + sha256: d503ac8c050abdbd129253973f23be34944978d510de78ef5a3e6aa1e3d9552d + md5: 5eb3715c7e3fa9b533361375bfefe6ee depends: - __osx >=11.0 - python >=3.12,<3.13.0a0 @@ -2047,8 +2063,8 @@ packages: platform: osx license: Apache-2.0 license_family: APACHE - size: 53366 - timestamp: 1729699762631 + size: 57256 + timestamp: 1737645503377 - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.12.0-pyhd8ed1ab_0.conda sha256: 3320970c4604989eadf908397a9475f9e6a96a773c185915111399cbfbe47817 md5: e041ad4c43ab5e10c74587f95378ebc7 @@ -2165,15 +2181,15 @@ packages: license_family: MIT size: 52000 timestamp: 1733298867359 -- conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda - sha256: ec89b7e5b8aa2f0219f666084446e1fb7b54545861e9caa892acb24d125761b5 - md5: 2aa5ff7fa34a81b9196532c84c10d865 +- conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda + sha256: 6ad78a180576c706aabeb5b4c8ceb97c0cb25f1e112d76495bff23e3779948ba + md5: 0a802cb9888dd14eeefc611f05c40b6e depends: - python >=3.9 license: MIT license_family: MIT - size: 29412 - timestamp: 1733299296857 + size: 30731 + timestamp: 1737618390337 - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda sha256: c84d012a245171f3ed666a8bf9319580c269b7843ffa79f26468842da3abd5df md5: 2ca8e6dbc86525c8b95e3c0ffa26442e @@ -2260,15 +2276,15 @@ packages: license_family: APACHE size: 278363 timestamp: 1736350219225 -- conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda - sha256: e91c6ef09d076e1d9a02819cd00fa7ee18ecf30cdd667605c853980216584d1b - md5: 566e75c90c1d0c8c459eb0ad9833dc7a +- conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda + sha256: 77af6f5fe8b62ca07d09ac60127a30d9069fdc3c68d6b256754d0ffb1f7779f8 + md5: 8e6923fc12f1fe8f8c4e5c9f343256ac depends: - python >=3.9 license: MIT license_family: MIT - size: 17239 - timestamp: 1733298862681 + size: 17397 + timestamp: 1737618427549 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda sha256: 813298f2e54ef087dbfc9cc2e56e08ded41de65cff34c639cc8ba4e27e4540c9 md5: 268203e8b983fddb6412b36f2024e75c @@ -2558,28 +2574,29 @@ packages: license_family: Apache size: 1178260 timestamp: 1736008642885 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-19.0.0-hce2e470_3_cpu.conda - build_number: 3 - sha256: 3b85b78a52ce673798e3c880fa41b818554912e722e81ca20cf95ba9257f13f0 - md5: a50ba9a0789061ea395a47a23d6a7734 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-19.0.0-h00a82cf_7_cpu.conda + build_number: 7 + sha256: 8b401a256e4632ab6c1ea8d3cfb16d7c8ff3b0fe5af7cd474202a369c63dc74c + md5: 8d553fa6a138f369ed94b8b1a76f1e77 depends: - __glibc >=2.17,<3.0.a0 - aws-crt-cpp >=0.29.9,<0.29.10.0a0 - - aws-sdk-cpp >=1.11.458,<1.11.459.0a0 + - aws-sdk-cpp >=1.11.489,<1.11.490.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-identity-cpp >=1.10.0,<1.10.1.0a0 - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 - bzip2 >=1.0.8,<2.0a0 - - gflags >=2.2.2,<2.3.0a0 - glog >=0.7.1,<0.8.0a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - libbrotlidec >=1.1.0,<1.2.0a0 - libbrotlienc >=1.1.0,<1.2.0a0 - libgcc >=13 - - libgoogle-cloud >=2.33.0,<2.34.0a0 - - libgoogle-cloud-storage >=2.33.0,<2.34.0a0 + - libgoogle-cloud >=2.34.0,<2.35.0a0 + - libgoogle-cloud-storage >=2.34.0,<2.35.0a0 + - libopentelemetry-cpp >=1.18.0,<1.19.0a0 + - libprotobuf >=5.28.3,<5.28.4.0a0 - libre2-11 >=2024.7.2 - libstdcxx >=13 - libutf8proc >=2.10.0,<2.11.0a0 @@ -2590,27 +2607,26 @@ packages: - snappy >=1.2.1,<1.3.0a0 - zstd >=1.5.6,<1.6.0a0 constrains: + - apache-arrow-proc =*=cpu - arrow-cpp <0.0a0 - parquet-cpp <0.0a0 - - apache-arrow-proc =*=cpu arch: x86_64 platform: linux license: Apache-2.0 - size: 8899665 - timestamp: 1737343852413 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-h4065667_12_cpu.conda - build_number: 12 - sha256: 0ac8aab370ef7a21e912cc312e5cbfa59afea8e004f5a372f2f25f96de0c9e9a - md5: 4789bb7ae93fe12bfd81169157896f49 + size: 8979130 + timestamp: 1737757402544 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-19.0.0-h03ebaaf_7_cpu.conda + build_number: 7 + sha256: f029b7fbed445a2cb08b95686e9a9cb30c04a10998ef632c2cf84fd0c0d1e424 + md5: b94870200ac053eff3dda878d523f1d1 depends: - aws-crt-cpp >=0.29.9,<0.29.10.0a0 - - aws-sdk-cpp >=1.11.458,<1.11.459.0a0 + - aws-sdk-cpp >=1.11.489,<1.11.490.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-identity-cpp >=1.10.0,<1.10.1.0a0 - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 - bzip2 >=1.0.8,<2.0a0 - - gflags >=2.2.2,<2.3.0a0 - glog >=0.7.1,<0.8.0a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 @@ -2619,6 +2635,8 @@ packages: - libgcc >=13 - libgoogle-cloud >=2.34.0,<2.35.0a0 - libgoogle-cloud-storage >=2.34.0,<2.35.0a0 + - libopentelemetry-cpp >=1.18.0,<1.19.0a0 + - libprotobuf >=5.28.3,<5.28.4.0a0 - libre2-11 >=2024.7.2 - libstdcxx >=13 - libutf8proc >=2.10.0,<2.11.0a0 @@ -2635,16 +2653,16 @@ packages: arch: aarch64 platform: linux license: Apache-2.0 - size: 8051570 - timestamp: 1737451538096 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-19.0.0-hd1aa4b5_4_cpu.conda - build_number: 4 - sha256: bf027b2e77b75b71b5213131fc4b06bbca6f1e195fde62090343e0a808d08bbe - md5: 94c2bcca143c043f8083a1f275de3caf + size: 8210159 + timestamp: 1737757741310 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-19.0.0-h819e3af_7_cpu.conda + build_number: 7 + sha256: e5e370673b9fe9459a826f474dc470b59fd6744fa652dd534f7ef722cd9be39c + md5: 3cb4f805d9742272591795d487786f2d depends: - __osx >=11.0 - aws-crt-cpp >=0.29.9,<0.29.10.0a0 - - aws-sdk-cpp >=1.11.458,<1.11.459.0a0 + - aws-sdk-cpp >=1.11.489,<1.11.490.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-identity-cpp >=1.10.0,<1.10.1.0a0 - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 @@ -2658,6 +2676,8 @@ packages: - libcxx >=18 - libgoogle-cloud >=2.34.0,<2.35.0a0 - libgoogle-cloud-storage >=2.34.0,<2.35.0a0 + - libopentelemetry-cpp >=1.18.0,<1.19.0a0 + - libprotobuf >=5.28.3,<5.28.4.0a0 - libre2-11 >=2024.7.2 - libutf8proc >=2.10.0,<2.11.0a0 - libzlib >=1.3.1,<2.0a0 @@ -2668,154 +2688,154 @@ packages: - zstd >=1.5.6,<1.6.0a0 constrains: - parquet-cpp <0.0a0 - - arrow-cpp <0.0a0 - apache-arrow-proc =*=cpu + - arrow-cpp <0.0a0 arch: arm64 platform: osx license: Apache-2.0 - size: 5532664 - timestamp: 1737458545986 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-19.0.0-hcb10f89_3_cpu.conda - build_number: 3 - sha256: f4e4b14fc2aaaf0d0a16a3b4b4dcae84b1b77daa02754f0873901089ce786a49 - md5: 3e1e31382e9c6ecd0b24bd8f6ddb33ec + size: 5540329 + timestamp: 1737756116679 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-19.0.0-hcb10f89_7_cpu.conda + build_number: 7 + sha256: 7018394af408b4ce344c97cd6f97bc676708067a9d2d834bf091b74f13b41be4 + md5: de10e3323bfa9dd8929f7fbe23665883 depends: - __glibc >=2.17,<3.0.a0 - - libarrow 19.0.0 hce2e470_3_cpu + - libarrow 19.0.0 h00a82cf_7_cpu - libgcc >=13 - libstdcxx >=13 arch: x86_64 platform: linux license: Apache-2.0 - size: 618570 - timestamp: 1737343896206 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h3b568fd_12_cpu.conda - build_number: 12 - sha256: c93daa943342eb848e5a44d4f48749f96decbde7b0f7d830fe56d0d506c03576 - md5: 8ec3804980e19b70ebffbeb623ce084b + size: 637717 + timestamp: 1737757443960 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-19.0.0-h3b568fd_7_cpu.conda + build_number: 7 + sha256: 97911c3addb66033747e12c608ca32ce5c56d6d9f35674cfb97fff0ff4c7e926 + md5: d50c51a7d86454c90de667fcafb8c785 depends: - - libarrow 18.1.0 h4065667_12_cpu + - libarrow 19.0.0 h03ebaaf_7_cpu - libgcc >=13 - libstdcxx >=13 arch: aarch64 platform: linux license: Apache-2.0 - size: 579114 - timestamp: 1737451608994 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-19.0.0-hf07054f_4_cpu.conda - build_number: 4 - sha256: 40de7e71d9fd4b799c452b3a0328ea260a3871de621f5344fb39b7f48371df75 - md5: e3265f8ab44051131966bd6f7b07a6e3 + size: 602410 + timestamp: 1737757792970 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-19.0.0-hf07054f_7_cpu.conda + build_number: 7 + sha256: a716bd2c6106f0508e69800f73a9368f5b5fadba0cd1f7f7ac753bf43392bf4d + md5: a138208af40b21c840c1075f3bec5014 depends: - __osx >=11.0 - - libarrow 19.0.0 hd1aa4b5_4_cpu + - libarrow 19.0.0 h819e3af_7_cpu - libcxx >=18 arch: arm64 platform: osx license: Apache-2.0 - size: 481968 - timestamp: 1737458659266 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-19.0.0-hcb10f89_3_cpu.conda - build_number: 3 - sha256: c5cdf03d72d028e8af774aabd29cd92fb87f54cd579a9ffe77ad228c51faaa82 - md5: 1face9ff13ec61bfb065063d35fda864 + size: 499319 + timestamp: 1737756215547 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-19.0.0-hcb10f89_7_cpu.conda + build_number: 7 + sha256: 4f3864b3f004fc320f28ecc5bb47e4cd927f40ef8dc6a16bdef51b34f51da921 + md5: eddf039322781fee4d4137f50769511c depends: - __glibc >=2.17,<3.0.a0 - - libarrow 19.0.0 hce2e470_3_cpu - - libarrow-acero 19.0.0 hcb10f89_3_cpu + - libarrow 19.0.0 h00a82cf_7_cpu + - libarrow-acero 19.0.0 hcb10f89_7_cpu - libgcc >=13 - - libparquet 19.0.0 h081d1f1_3_cpu + - libparquet 19.0.0 h081d1f1_7_cpu - libstdcxx >=13 arch: x86_64 platform: linux license: Apache-2.0 - size: 585153 - timestamp: 1737344009570 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h3b568fd_12_cpu.conda - build_number: 12 - sha256: 40bbdb394db6f405e6fae56bcbfc88fa433130668d2b39d1f109b7d6ffb8be76 - md5: e9b9a9941d35dff0a168741bdd54877e + size: 605090 + timestamp: 1737757550128 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-19.0.0-h3b568fd_7_cpu.conda + build_number: 7 + sha256: e055430747eba48c99a7b1ebe0596e126a121eeffd6ba667c00554a0b2707839 + md5: 2d6208bc6ab9089ee1787d9abbefd172 depends: - - libarrow 18.1.0 h4065667_12_cpu - - libarrow-acero 18.1.0 h3b568fd_12_cpu + - libarrow 19.0.0 h03ebaaf_7_cpu + - libarrow-acero 19.0.0 h3b568fd_7_cpu - libgcc >=13 - - libparquet 18.1.0 hfc78867_12_cpu + - libparquet 19.0.0 hfc78867_7_cpu - libstdcxx >=13 arch: aarch64 platform: linux license: Apache-2.0 - size: 559928 - timestamp: 1737451706623 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-19.0.0-hf07054f_4_cpu.conda - build_number: 4 - sha256: c9b01193f3dc2855276a743aa2d107b3893d886dbc561944154acc4c61a9b4cb - md5: c6588e0236da980424ca0b288c893d1a + size: 580599 + timestamp: 1737757863901 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-19.0.0-hf07054f_7_cpu.conda + build_number: 7 + sha256: dcc8d61eae311c5d377a41e2c6f964b86e7289917c93d3af03e5d4a4c88ab85a + md5: 5791e257ecb73e7745fa62446f22b1ea depends: - __osx >=11.0 - - libarrow 19.0.0 hd1aa4b5_4_cpu - - libarrow-acero 19.0.0 hf07054f_4_cpu + - libarrow 19.0.0 h819e3af_7_cpu + - libarrow-acero 19.0.0 hf07054f_7_cpu - libcxx >=18 - - libparquet 19.0.0 h636d7b7_4_cpu + - libparquet 19.0.0 h636d7b7_7_cpu arch: arm64 platform: osx license: Apache-2.0 - size: 488490 - timestamp: 1737459936234 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-19.0.0-h08228c5_3_cpu.conda - build_number: 3 - sha256: 414297c69d08ba45af0fccb5e22cc3b3e92181f3928eba1e1b1ab3641970c7e0 - md5: 8527e1e45c495991fd88f6531e176556 + size: 500722 + timestamp: 1737757369380 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-19.0.0-h08228c5_7_cpu.conda + build_number: 7 + sha256: 51ec47ed56880cfd64bfa012c8488d127d8f0acfe0d64707880393d49a2663a2 + md5: e14afa8912873a094a30ad9e455bafc3 depends: - __glibc >=2.17,<3.0.a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 19.0.0 hce2e470_3_cpu - - libarrow-acero 19.0.0 hcb10f89_3_cpu - - libarrow-dataset 19.0.0 hcb10f89_3_cpu + - libarrow 19.0.0 h00a82cf_7_cpu + - libarrow-acero 19.0.0 hcb10f89_7_cpu + - libarrow-dataset 19.0.0 hcb10f89_7_cpu - libgcc >=13 - libprotobuf >=5.28.3,<5.28.4.0a0 - libstdcxx >=13 arch: x86_64 platform: linux license: Apache-2.0 - size: 521371 - timestamp: 1737344062052 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h1e9d426_12_cpu.conda - build_number: 12 - sha256: 6216a1c48e41d3b304e87b19a8ff37c10e51ceca83bff5e942d763c93f6f55a1 - md5: f647dcbf46aebc86f9975ff3c856de45 + size: 521685 + timestamp: 1737757595490 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-19.0.0-h1e9d426_7_cpu.conda + build_number: 7 + sha256: bd85da0813384b5b5af2f2b05e4bc20aa606eb5528310c84e42aa495feec6050 + md5: b35923aad96b07d76db4c31ccc74584f depends: - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.1.0 h4065667_12_cpu - - libarrow-acero 18.1.0 h3b568fd_12_cpu - - libarrow-dataset 18.1.0 h3b568fd_12_cpu + - libarrow 19.0.0 h03ebaaf_7_cpu + - libarrow-acero 19.0.0 h3b568fd_7_cpu + - libarrow-dataset 19.0.0 h3b568fd_7_cpu - libgcc >=13 - libprotobuf >=5.28.3,<5.28.4.0a0 - libstdcxx >=13 arch: aarch64 platform: linux license: Apache-2.0 - size: 516135 - timestamp: 1737451754178 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-19.0.0-h4239455_4_cpu.conda - build_number: 4 - sha256: 1de1100bddcaa4aacae5cc30e3c0ae3259d130bee7b3d52a57a1c9950e0c6588 - md5: 6988cd2fdf01cae4bc454859a7cf8bac + size: 515585 + timestamp: 1737757899077 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-19.0.0-h4239455_7_cpu.conda + build_number: 7 + sha256: 94e5351779728cacd3fcadcfe082fc840a79333ce8b1056bb811e39417decd2a + md5: 05a75db98927961f86b64340442150c3 depends: - __osx >=11.0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 19.0.0 hd1aa4b5_4_cpu - - libarrow-acero 19.0.0 hf07054f_4_cpu - - libarrow-dataset 19.0.0 hf07054f_4_cpu + - libarrow 19.0.0 h819e3af_7_cpu + - libarrow-acero 19.0.0 hf07054f_7_cpu + - libarrow-dataset 19.0.0 hf07054f_7_cpu - libcxx >=18 - libprotobuf >=5.28.3,<5.28.4.0a0 arch: arm64 platform: osx license: Apache-2.0 - size: 449975 - timestamp: 1737460148737 + size: 449238 + timestamp: 1737757536452 - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-26_linux64_openblas.conda build_number: 26 sha256: 30bd658682b124243f8e52d8edf8a19e7be1bc31e4fe4baec30a64002dc8cd0c @@ -3482,9 +3502,9 @@ packages: license_family: GPL size: 463521 timestamp: 1729089357313 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.33.0-h2b5623c_1.conda - sha256: ae48ee93e2c226bf682f1e389c2fd51ae7bf77c2ce4b3aee069764f4be1c63f2 - md5: 61829a8dd5f4e2327e707572065bae41 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.34.0-h2b5623c_0.conda + sha256: 348ee1dddd82dcef5a185c86e65dda8acfc9b583acc425ccb9b661f2d433b2cc + md5: 2a5142c88dd6132eaa8079f99476e922 depends: - __glibc >=2.17,<3.0.a0 - libabseil * cxx17* @@ -3496,13 +3516,13 @@ packages: - libstdcxx >=13 - openssl >=3.4.0,<4.0a0 constrains: - - libgoogle-cloud 2.33.0 *_1 + - libgoogle-cloud 2.34.0 *_0 arch: x86_64 platform: linux license: Apache-2.0 license_family: Apache - size: 1254656 - timestamp: 1735648569457 + size: 1256795 + timestamp: 1737286199784 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-2.34.0-hccf9d24_0.conda sha256: 54267dda8fafc2a2d379ef77b6029d8240e0628d4b29758f788fb903f84397a3 md5: 1ce0fd876001c40801b40fea22987e41 @@ -3543,16 +3563,16 @@ packages: license_family: Apache size: 878217 timestamp: 1737284441192 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.33.0-h0121fbd_1.conda - sha256: 41022523320ca8633a6c615710823e596efadb50f06d724e1a0c81e27994f257 - md5: b0cfb5044685a7a9fa43ae669124f0a0 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.34.0-h0121fbd_0.conda + sha256: aa1b3b30ae6b2eab7c9e6a8e2fd8ec3776f25d2e3f0b6f9dc547ff8083bf25fa + md5: 9f0c43225243c81c6991733edcaafff5 depends: - __glibc >=2.17,<3.0.a0 - libabseil - libcrc32c >=1.1.2,<1.2.0a0 - libcurl - libgcc >=13 - - libgoogle-cloud 2.33.0 h2b5623c_1 + - libgoogle-cloud 2.34.0 h2b5623c_0 - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - openssl @@ -3560,8 +3580,8 @@ packages: platform: linux license: Apache-2.0 license_family: Apache - size: 784357 - timestamp: 1735648759177 + size: 785792 + timestamp: 1737286406612 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-storage-2.34.0-hb9b2b65_0.conda sha256: 4ad4fb7c02dcfa4c86dcf9591e0131a01fc0f2c3f2729c12882b944ddf2b8a9d md5: 0732a5988f7f556f2c1d1f51026fc1be @@ -3781,6 +3801,8 @@ packages: depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 + constrains: + - xz ==5.6.3=*_1 arch: x86_64 platform: linux license: 0BSD @@ -3791,6 +3813,8 @@ packages: md5: eb08b903681f9f2432c320e8ed626723 depends: - libgcc >=13 + constrains: + - xz ==5.6.3=*_1 arch: aarch64 platform: linux license: 0BSD @@ -3801,6 +3825,8 @@ packages: md5: b2553114a7f5e20ccd02378a77d836aa depends: - __osx >=11.0 + constrains: + - xz ==5.6.3=*_1 arch: arm64 platform: osx license: 0BSD @@ -3927,13 +3953,103 @@ packages: license_family: BSD size: 4165774 timestamp: 1730772154295 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-19.0.0-h081d1f1_3_cpu.conda - build_number: 3 - sha256: 287c4864b849180ce9e447df8227da2c4006001056e1668dacc3365264b0e828 - md5: 95f8b5758148e62a055f4c6538a31f0b +- conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-1.18.0-hfcad708_1.conda + sha256: 4ea235e08676f16b0d3c3380befe1478c0fa0141512ee709b011005c55c9619f + md5: 1f5a5d66e77a39dc5bd639ec953705cf + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcurl >=8.11.1,<9.0a0 + - libgrpc >=1.67.1,<1.68.0a0 + - libopentelemetry-cpp-headers 1.18.0 ha770c72_1 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libzlib >=1.3.1,<2.0a0 + - nlohmann_json + - prometheus-cpp >=1.3.0,<1.4.0a0 + constrains: + - cpp-opentelemetry-sdk =1.18.0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 801927 + timestamp: 1735643375271 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopentelemetry-cpp-1.18.0-h60b47f9_1.conda + sha256: 160c493cd0f897955b0b6035b51c6d7255ffbaed3c8a12d43e8e8a719d405aba + md5: afe3c8c53f4b6d27d553c230d4b34038 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcurl >=8.11.1,<9.0a0 + - libgrpc >=1.67.1,<1.68.0a0 + - libopentelemetry-cpp-headers 1.18.0 h8af1aa0_1 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libzlib >=1.3.1,<2.0a0 + - nlohmann_json + - prometheus-cpp >=1.3.0,<1.4.0a0 + constrains: + - cpp-opentelemetry-sdk =1.18.0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 800896 + timestamp: 1735643533825 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopentelemetry-cpp-1.18.0-h0c05b2d_1.conda + sha256: c6bcbd53d62a9e0d8c667e560db0ca2ecb7679277cbb3c23457aabe74fcb8cba + md5: 19c46cc18825f3924251c39ec1b0d983 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcurl >=8.11.1,<9.0a0 + - libgrpc >=1.67.1,<1.68.0a0 + - libopentelemetry-cpp-headers 1.18.0 hce30654_1 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libzlib >=1.3.1,<2.0a0 + - nlohmann_json + - prometheus-cpp >=1.3.0,<1.4.0a0 + constrains: + - cpp-opentelemetry-sdk =1.18.0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + size: 529588 + timestamp: 1735643889612 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-headers-1.18.0-ha770c72_1.conda + sha256: aa1f7dea79ea8513ff77339ba7c6e9cf10dfa537143e7718b1cfb3af52b649f2 + md5: 4fb055f57404920a43b147031471e03b + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 320359 + timestamp: 1735643346175 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopentelemetry-cpp-headers-1.18.0-h8af1aa0_1.conda + sha256: 981c0b29a0789597fa8ed147b02df2d2ad0c7f863d87df74770c40cee1800228 + md5: 282193b19a19e3b5d75d18ef82713ef0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 319401 + timestamp: 1735643509251 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopentelemetry-cpp-headers-1.18.0-hce30654_1.conda + sha256: 82e5f5ba64debbaab3c601b265dfc0cdb4d2880feba9bada5fd2e67b9f91ada5 + md5: e965dad955841507549fdacd8f7f94c0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + size: 320565 + timestamp: 1735643673319 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-19.0.0-h081d1f1_7_cpu.conda + build_number: 7 + sha256: f117af1368c613328fb3af251287c6885962d9477a55d9bf1ab253626730b4ea + md5: a8b3022bfe8a2cb4249229768401340c depends: - __glibc >=2.17,<3.0.a0 - - libarrow 19.0.0 hce2e470_3_cpu + - libarrow 19.0.0 h00a82cf_7_cpu - libgcc >=13 - libstdcxx >=13 - libthrift >=0.21.0,<0.21.1.0a0 @@ -3941,14 +4057,14 @@ packages: arch: x86_64 platform: linux license: Apache-2.0 - size: 1227537 - timestamp: 1737343982323 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-hfc78867_12_cpu.conda - build_number: 12 - sha256: 224da9fb417e1dc569700cddf6dd7febe9a6e5c12547a389a5b934b8d385c4f8 - md5: 517447be85cda09f9410ca609c69499d + size: 1240902 + timestamp: 1737757526098 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-19.0.0-hfc78867_7_cpu.conda + build_number: 7 + sha256: 85a9964201ab6ed15b22a5ea29c66b44febc5a815a7d3234c3a605ca7644cc02 + md5: 8814a0cd443b9ebbb1662b370b6b14fb depends: - - libarrow 18.1.0 h4065667_12_cpu + - libarrow 19.0.0 h03ebaaf_7_cpu - libgcc >=13 - libstdcxx >=13 - libthrift >=0.21.0,<0.21.1.0a0 @@ -3956,23 +4072,23 @@ packages: arch: aarch64 platform: linux license: Apache-2.0 - size: 1116762 - timestamp: 1737451682325 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-19.0.0-h636d7b7_4_cpu.conda - build_number: 4 - sha256: d394423b8a096cec5481ef4cdb4d39dd4b89949cd6f23bdc14896d8af36d78f3 - md5: 639473b0344e0d2f46feb544cff5c6d8 + size: 1153344 + timestamp: 1737757846296 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-19.0.0-h636d7b7_7_cpu.conda + build_number: 7 + sha256: 637298e97c586a74e19df44cf378be3e99274aef09ee1b2a5f30c4492bd62e0d + md5: 3f0e87a16e30ff26bb513fcda9f971ac depends: - __osx >=11.0 - - libarrow 19.0.0 hd1aa4b5_4_cpu + - libarrow 19.0.0 h819e3af_7_cpu - libcxx >=18 - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 arch: arm64 platform: osx license: Apache-2.0 - size: 885681 - timestamp: 1737459816091 + size: 893815 + timestamp: 1737757309795 - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.45-h943b412_0.conda sha256: b8f5b5ba9a14dedf7c97c01300de492b1b52b68eacbc3249a13fdbfa82349a2f md5: 85cbdaacad93808395ac295b5667d25b @@ -4737,47 +4853,47 @@ packages: license_family: BSD size: 24048 timestamp: 1733219945697 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025012205-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025012505-release.conda noarch: python - sha256: 63e2ce51c01fdb5a73f62ea5f862acea5946f45d6b6bd63dafc78d242822e1b7 - md5: 5289b5be19bf0f500e1a06f44d816343 + sha256: 83e72ee5d9c5965eefc04dc84a9f496b5064e006dbfcfe137ab1710285d6b3f3 + md5: 3359ea55713294fb8bb2c70e6bd5753a depends: - - max-core ==25.1.0.dev2025012205 release - - max-python >=25.1.0.dev2025012205,<26.0a0 - - mojo-jupyter ==25.1.0.dev2025012205 release - - mblack ==25.1.0.dev2025012205 release + - max-core ==25.1.0.dev2025012505 release + - max-python >=25.1.0.dev2025012505,<26.0a0 + - mojo-jupyter ==25.1.0.dev2025012505 release + - mblack ==25.1.0.dev2025012505 release license: LicenseRef-Modular-Proprietary - size: 9919 - timestamp: 1737524122346 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025012205-release.conda - sha256: 061e7c8aba735fd2d15aca623c2f81452723bc0a5ab1e5a63af1761a9eaba9ef - md5: 2d8a82ff460cd4e03382a9151a8cf8d8 + size: 9918 + timestamp: 1737782253436 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025012505-release.conda + sha256: d89d1a2279776c687b3b729d53b1e737477afc3eae214d5750b00a048667aaed + md5: ebf37a7d5882bb676718a5648dee3654 depends: - - mblack ==25.1.0.dev2025012205 release + - mblack ==25.1.0.dev2025012505 release license: LicenseRef-Modular-Proprietary - size: 242139658 - timestamp: 1737523134733 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025012205-release.conda - sha256: eade442118da29d8b42289e6859699b4faafcf51d02189729259a2e7a97a0dcc - md5: 8e0412932905d3a4decf17acd50899ce + size: 243130339 + timestamp: 1737782221031 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025012505-release.conda + sha256: ad52887002d135793158f9bc4afcd2ea1d89111f65351885669894bb23a83763 + md5: bde4e25a295f947b730261246613b83d depends: - - mblack ==25.1.0.dev2025012205 release + - mblack ==25.1.0.dev2025012505 release license: LicenseRef-Modular-Proprietary - size: 244683388 - timestamp: 1737524122344 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025012205-release.conda - sha256: b5ccec88293901182a43d7f407d04b522b729cefaab066788496adec5bd3f2d2 - md5: bd5da5f25bd5151b4b691c34acdbeff0 + size: 245590611 + timestamp: 1737782253434 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025012505-release.conda + sha256: b1d103910f7b6a273906ea40f7dc993144511ed61239a5d764aca21ea479fe46 + md5: e01118f345f22ed4efb89192dfbbdbc6 depends: - - mblack ==25.1.0.dev2025012205 release + - mblack ==25.1.0.dev2025012505 release license: LicenseRef-Modular-Proprietary - size: 203820478 - timestamp: 1737523349069 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025012205-3.12release.conda - sha256: ceb4d33afe634401be386903e2f516b78f2b5e23e15cbedad42cce2600c97b7d - md5: ecfacd66a5b71794c53a468fbefcef6a + size: 204961123 + timestamp: 1737782482300 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025012505-3.12release.conda + sha256: b52562f368fe5dbc95343bcd7f2ee4699a25589c689b0cba444e5a93757b1ea7 + md5: a43f10619b5e0502b7f59ad823770f9f depends: - - max-core ==25.1.0.dev2025012205 release + - max-core ==25.1.0.dev2025012505 release - python 3.12.* - fastapi - httpx @@ -4798,13 +4914,13 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 119861319 - timestamp: 1737523134743 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025012205-3.12release.conda - sha256: 14ae6f16ce6c895de574bb02307cd58e87e32013bde0d905d6a1a67e686ca204 - md5: fb06394177c69b52c2ecf9ceaa7b308b + size: 120565142 + timestamp: 1737782221040 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025012505-3.12release.conda + sha256: c6252c78ced4b1a2c793ff2cb5846bd34dd6d16e8fd65425e9f1df6fe6227b0d + md5: 8ee044754ebf79922c85299e7425abf3 depends: - - max-core ==25.1.0.dev2025012205 release + - max-core ==25.1.0.dev2025012505 release - python 3.12.* - fastapi - httpx @@ -4825,13 +4941,13 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 122258493 - timestamp: 1737524122355 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025012205-3.12release.conda - sha256: 35e34095931d604893d014773f8c61c1c09a9888946dec4a01f1db827bd2f439 - md5: 589be4ace2edf68cfc3cf1d0cc429864 + size: 123069129 + timestamp: 1737782253444 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025012505-3.12release.conda + sha256: 489140758c2f0df45e077c6d52aac9bd419774b2d00b0a594d49505495e7aca4 + md5: 03b88370aa08d78471ff2e88973534d3 depends: - - max-core ==25.1.0.dev2025012205 release + - max-core ==25.1.0.dev2025012505 release - python 3.12.* - fastapi - httpx @@ -4852,12 +4968,12 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 105223218 - timestamp: 1737523349072 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012205-release.conda + size: 105954416 + timestamp: 1737782482303 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012505-release.conda noarch: python - sha256: 31bce03569c241ade0a344f1fe1a683f928fe367ae57147b3e316783631822fe - md5: c54b5f7d0d777b8995e38978d8626ffc + sha256: 906a374c4b22380993352480333cd5fc9c1a2e2179ab2e7ea65abc3bd54fc35e + md5: 3109b109f417bff02b27ff1cc78239ae depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -4867,8 +4983,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130797 - timestamp: 1737524122352 + size: 130805 + timestamp: 1737782253440 - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda sha256: 78c1bbe1723449c52b7a9df1af2ee5f005209f67e40b6e1d3c7619127c43b1c7 md5: 592132998493b3ff25fd7479396e8351 @@ -4878,18 +4994,18 @@ packages: license_family: MIT size: 14465 timestamp: 1733255681319 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025012205-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025012505-release.conda noarch: python - sha256: 78e2818c9d17321c5fe73f9dca3d7a9c51ad989c00f8ea9721deb94a4f03800e - md5: ca3c9282adb4a04dbd02f3ab8e73445c + sha256: 6cba6b01c693678b0e48d5428788d3734e885f6efc911b345fae474e4405460f + md5: 16521d51e47d4d67cf1a42351687f6b8 depends: - - max-core ==25.1.0.dev2025012205 release + - max-core ==25.1.0.dev2025012505 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22925 - timestamp: 1737524122353 + size: 22934 + timestamp: 1737782253442 - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py312h178313f_2.conda sha256: b05bc8252a6e957bf4a776ed5e0e61d1ba88cdc46ccb55890c72cc58b10371f4 md5: 5b5e3267d915a107eca793d52e1b780a @@ -5015,6 +5131,43 @@ packages: license: X11 AND BSD-3-Clause size: 796754 timestamp: 1736683572099 +- conda: https://conda.anaconda.org/conda-forge/linux-64/nlohmann_json-3.11.3-he02047a_1.conda + sha256: ce4bcced4f8eea71b7cac8bc3daac097abf7a5792f278cd811dedada199500c1 + md5: e46f7ac4917215b49df2ea09a694a3fa + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 122743 + timestamp: 1723652407663 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/nlohmann_json-3.11.3-h0a1ffab_1.conda + sha256: c90b1f11fc337d90a9e4c5aeeacac1418c5ba6a195097086566d38bb2ecf0f24 + md5: f2bd10ff23ab5c87327439c4499b3f3e + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 122755 + timestamp: 1723652622631 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/nlohmann_json-3.11.3-h00cdb27_1.conda + sha256: 3f4e6a4fa074bb297855f8111ab974dab6d9f98b7d4317d4dd46f8687ee2363b + md5: d2dee849c806430eee64d3acc98ce090 + depends: + - __osx >=11.0 + - libcxx >=16 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 123250 + timestamp: 1723652704997 - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda sha256: fe3459c75cf84dcef6ef14efcc4adb0ade66038ddd27cadb894f34f4797687d8 md5: d8285bea2a350f63fab23bf460221f3f @@ -5473,6 +5626,52 @@ packages: license_family: MIT size: 20448 timestamp: 1733232756001 +- conda: https://conda.anaconda.org/conda-forge/linux-64/prometheus-cpp-1.3.0-ha5d0236_0.conda + sha256: 013669433eb447548f21c3c6b16b2ed64356f726b5f77c1b39d5ba17a8a4b8bc + md5: a83f6a2fdc079e643237887a37460668 + depends: + - __glibc >=2.17,<3.0.a0 + - libcurl >=8.10.1,<9.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - zlib + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 199544 + timestamp: 1730769112346 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/prometheus-cpp-1.3.0-h7938499_0.conda + sha256: 9350d7bbc3982a732ff13a7fd17b585509e3b7d0191ac7b810cc3224868e3648 + md5: 10f4301290e51c49979ff98d1bdf2556 + depends: + - libcurl >=8.10.1,<9.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - zlib + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 211335 + timestamp: 1730769181127 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/prometheus-cpp-1.3.0-h0967b3e_0.conda + sha256: 851a77ae1a8e90db9b9f3c4466abea7afb52713c3d98ceb0d37ba6ff27df2eff + md5: 7172339b49c94275ba42fec3eaeda34f + depends: + - __osx >=11.0 + - libcurl >=8.10.1,<9.0a0 + - libcxx >=18 + - libzlib >=1.3.1,<2.0a0 + - zlib + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 173220 + timestamp: 1730769371051 - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda sha256: bc8f00d5155deb7b47702cb8370f233935704100dbc23e30747c161d1b6cf3ab md5: 3e01e386307acc60b2f89af0b2e161aa @@ -5482,9 +5681,9 @@ packages: license_family: Apache size: 49002 timestamp: 1733327434163 -- conda: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.1-py312h66e93f0_0.conda - sha256: 5771311fb5ded614ca349c92579a0b752af55a310f40b71fc533e20625965391 - md5: 55d5742a696d7da1c1262e99b6217ceb +- conda: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.1-py312h178313f_1.conda + sha256: 6d5ff6490c53e14591b70924711fe7bd70eb7fbeeeb1cbd9ed2f6d794ec8c4eb + md5: 349635694b4df27336bc15a49e9220e9 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -5494,11 +5693,11 @@ packages: platform: linux license: Apache-2.0 license_family: APACHE - size: 52747 - timestamp: 1733391916349 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.2.1-py312hb2c0f52_0.conda - sha256: c7f62c11ed929ccf1f3d4a1e200e28be01e8d0e0786bf8f76c5893f2ea681e1b - md5: 50ab8953e7ff1333a4a47cda32e68123 + size: 52947 + timestamp: 1737635699390 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.2.1-py312hcc812fe_1.conda + sha256: d759d8ab9c060b42cabf6312b9a04aa590daecabf1dd4e35731f4bc1b5c388bb + md5: 533b07e9fd835938f465225613825eee depends: - libgcc >=13 - python >=3.12,<3.13.0a0 @@ -5508,11 +5707,11 @@ packages: platform: linux license: Apache-2.0 license_family: APACHE - size: 52484 - timestamp: 1733391993461 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.1-py312hea69d52_0.conda - sha256: f8c266c494aa1e4cfb8bf0b6fca060044b2f3d65afe4c5062ebeea382e77aa6d - md5: c84e3dd97fe25a17322c4a0f670c6750 + size: 52776 + timestamp: 1737635802135 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.1-py312h998013c_1.conda + sha256: 96145760baad111d7ae4213ea8f8cc035cf33b001f5ff37d92268e4d28b0941d + md5: 83678928c58c9ae76778a435b6c7a94a depends: - __osx >=11.0 - python >=3.12,<3.13.0a0 @@ -5522,8 +5721,8 @@ packages: platform: osx license: Apache-2.0 license_family: APACHE - size: 48225 - timestamp: 1733392308901 + size: 50942 + timestamp: 1737635896600 - conda: https://conda.anaconda.org/conda-forge/linux-64/protobuf-5.28.3-py312h2ec8cdc_0.conda sha256: acb2e0ee948e3941f8ed191cb77f654e06538638aed8ccd71cbc78a15242ebbb md5: 9d7e427d159c1b2d516cc047ff177c48 @@ -5626,23 +5825,23 @@ packages: license_family: APACHE size: 25289 timestamp: 1737128438818 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-18.1.0-py312h8025657_0.conda - sha256: 49db959887cb89b44053a44a98d0f35644fc0b2003587492f02b56046de0b60a - md5: 9bb7d32e96a5dcb5ea7fd90a11a83656 - depends: - - libarrow-acero 18.1.0.* - - libarrow-dataset 18.1.0.* - - libarrow-substrait 18.1.0.* - - libparquet 18.1.0.* - - pyarrow-core 18.1.0 *_0_* +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-19.0.0-py312h8025657_0.conda + sha256: 3a73d3d15031586214381edf5410a6920c1f75f52a8d8b994722b106d9a50150 + md5: a86fa414c44b7e3ee054cc385c79a822 + depends: + - libarrow-acero 19.0.0.* + - libarrow-dataset 19.0.0.* + - libarrow-substrait 19.0.0.* + - libparquet 19.0.0.* + - pyarrow-core 19.0.0 *_0_* - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 arch: aarch64 platform: linux license: Apache-2.0 license_family: APACHE - size: 25374 - timestamp: 1732611006864 + size: 25496 + timestamp: 1737129041038 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-19.0.0-py312h1f38498_0.conda sha256: 9d693901833c2ff4e5d67e1f2f6df50f699e1cec2f580c26d42299654830855a md5: bd5e025292ff1127aa1534b59e55c4d0 @@ -5680,11 +5879,11 @@ packages: license_family: APACHE size: 5230953 timestamp: 1737128097002 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-18.1.0-py312h66f7834_0_cpu.conda - sha256: e7eb062145be554c23dfefa0ebe8c5f6ae8c59635117a6921e66403d6addcda3 - md5: 3390c8b8f57e85506c92a37cf750bdd7 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-19.0.0-py312h66f7834_0_cpu.conda + sha256: 17ff419abfe9596f77857dfa635538200427d87283c28e64920d10d6533ec30e + md5: ce51dbcfeae8709f0b94c78eabe7cf5e depends: - - libarrow 18.1.0.* *cpu + - libarrow 19.0.0.* *cpu - libgcc >=13 - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 @@ -5698,8 +5897,8 @@ packages: platform: linux license: Apache-2.0 license_family: APACHE - size: 4406662 - timestamp: 1732610939832 + size: 5023430 + timestamp: 1737627066264 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-19.0.0-py312hc40f475_0_cpu.conda sha256: 6303fe1c3e6d36273b72f0eeb3f19897d2376d57fe8c757f55dcbfbaa5cd6840 md5: df502157843a7b1d90af04803767be15 @@ -5730,9 +5929,9 @@ packages: license_family: BSD size: 110100 timestamp: 1733195786147 -- conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.5-pyh3cfb1c2_0.conda - sha256: 0f32c30ddc610cd1113335d8b4f311f20f4d72754b7c1a5d0d9493f597cf11d2 - md5: e8ea30925c8271c4128375810d7d3d7a +- conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.6-pyh3cfb1c2_0.conda + sha256: 9a78801a28959edeb945e8270a4e666577b52fac0cf4e35f88cf122f73d83e75 + md5: c69f87041cf24dfc8cb6bf64ca7133c7 depends: - annotated-types >=0.6.0 - pydantic-core 2.27.2 @@ -5741,8 +5940,8 @@ packages: - typing_extensions >=4.12.2 license: MIT license_family: MIT - size: 296805 - timestamp: 1736458364196 + size: 296841 + timestamp: 1737761472006 - conda: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.27.2-py312h12e396e_0.conda sha256: 81602a4592ad2ac1a1cb57372fd25214e63b1c477d5818b0c21cde0f1f85c001 md5: bae01b2563030c085f5158c518b84e86 @@ -5814,9 +6013,9 @@ packages: license_family: BSD size: 888600 timestamp: 1736243563082 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pyinstrument-5.0.0-py312h66e93f0_0.conda - sha256: 8a006507a4003fb01eeee2f9ba79f994478694766ea3b445273da5c11cf8e763 - md5: 798f42d9bfdf125dc80ffbec0e96e0b6 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyinstrument-5.0.1-py312h66e93f0_0.conda + sha256: 3f1c0bc95f2c46dcd107f44cf742ee1fa40ba22e244f01083654743bbbcf28f3 + md5: 9f1d7b421e4c8fd00009490613db64d4 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -5826,11 +6025,11 @@ packages: platform: linux license: BSD-3-Clause license_family: BSD - size: 182021 - timestamp: 1728714164706 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyinstrument-5.0.0-py312hb2c0f52_0.conda - sha256: 7967b94b8f0ff75847302444e9c43ac11a391d74da24cb14fba1049fac9e5ba9 - md5: 5274663cb05dfbe316db50af6da4389f + size: 182333 + timestamp: 1737774425235 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyinstrument-5.0.1-py312hb2c0f52_0.conda + sha256: 16af5db4359078bcb526291855bf1075ab035a96fe4e8d5cc4b0b5c8cba89b9a + md5: 90f5e9e04b1ecf25ad3f28b606f63742 depends: - libgcc >=13 - python >=3.12,<3.13.0a0 @@ -5840,11 +6039,11 @@ packages: platform: linux license: BSD-3-Clause license_family: BSD - size: 183141 - timestamp: 1728714267954 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyinstrument-5.0.0-py312h0bf5046_0.conda - sha256: 6879d52fb0ec2258e2850476786a652c394220d53883c53691ed5390183ae925 - md5: f0e4a98d54477083ddc9d2f33507f848 + size: 183988 + timestamp: 1737774588265 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyinstrument-5.0.1-py312hea69d52_0.conda + sha256: 5e7de2f908af22bbd8cf3562ce5ebf65ad6c0d8e40038f90b56f4db750639ce2 + md5: 07b0eb9b6bd91dfa87f95032825690dc depends: - __osx >=11.0 - python >=3.12,<3.13.0a0 @@ -5854,8 +6053,8 @@ packages: platform: osx license: BSD-3-Clause license_family: BSD - size: 181512 - timestamp: 1728714205508 + size: 182524 + timestamp: 1737774624030 - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda sha256: ba3b032fa52709ce0d9fd388f63d330a026754587a2f461117cac9ab73d8d0d8 md5: 461219d1a5bd61342293efa2c0c90eac @@ -5990,6 +6189,7 @@ packages: depends: - python >=3.9 license: Apache-2.0 + license_family: APACHE size: 143794 timestamp: 1737541204030 - conda: https://conda.anaconda.org/conda-forge/linux-64/python-xxhash-3.5.0-py312h66e93f0_1.conda @@ -6474,17 +6674,17 @@ packages: license_family: BSD size: 15324 timestamp: 1735126414893 -- conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyha770c72_1.conda - sha256: b74fc76107487eb26624c01fc55bfab7eed03ae82e003333c86d8a1eeac53672 - md5: 0207dac04ae2200701fab697f0aaaac4 +- conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.45.2-pyha770c72_0.conda + sha256: 2c429dbbd5e7256517ef6cdfc30664b0c0e87f90f3c526afe3b97681aafb5623 + md5: acd5901cdd0365e18129f4748e524615 depends: - - anyio >=3.4.0,<5 + - anyio >=3.6.2,<5 - python >=3.9 - typing_extensions >=3.10.0 license: BSD-3-Clause license_family: BSD - size: 58838 - timestamp: 1733344472634 + size: 58040 + timestamp: 1736016898891 - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda sha256: e0569c9caa68bf476bead1bed3d79650bb080b532c64a4af7d8ca286c08dea4e md5: d453b98d9c83e71da0741bb0ff4d76bc @@ -7168,6 +7368,43 @@ packages: license_family: MIT size: 21809 timestamp: 1732827613585 +- conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.1-hb9d3cd8_2.conda + sha256: 5d7c0e5f0005f74112a34a7425179f4eb6e73c92f5d109e6af4ddeca407c92ab + md5: c9f075ab2f33b3bbee9e62d4ad0a6cd8 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libzlib 1.3.1 hb9d3cd8_2 + arch: x86_64 + platform: linux + license: Zlib + license_family: Other + size: 92286 + timestamp: 1727963153079 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zlib-1.3.1-h86ecc28_2.conda + sha256: b4f649aa3ecdae384d5dad7074e198bff120edd3dfb816588e31738fc6d627b1 + md5: bc230abb5d21b63ff4799b0e75204783 + depends: + - libgcc >=13 + - libzlib 1.3.1 h86ecc28_2 + arch: aarch64 + platform: linux + license: Zlib + license_family: Other + size: 95582 + timestamp: 1727963203597 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zlib-1.3.1-h8359307_2.conda + sha256: 58f8860756680a4831c1bf4f294e2354d187f2e999791d53b1941834c4b37430 + md5: e3170d898ca6cb48f1bb567afb92f775 + depends: + - __osx >=11.0 + - libzlib 1.3.1 h8359307_2 + arch: arm64 + platform: osx + license: Zlib + license_family: Other + size: 77606 + timestamp: 1727963209370 - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312hef9b889_1.conda sha256: b97015e146437283f2213ff0e95abdc8e2480150634d81fbae6b96ee09f5e50b md5: 8b7069e9792ee4e5b4919a7a306d2e67 diff --git a/examples/testing/magic.lock b/examples/testing/magic.lock index 18e04204dc..2ef666c55d 100644 --- a/examples/testing/magic.lock +++ b/examples/testing/magic.lock @@ -26,7 +26,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.2-h4e1184b_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-h4e1184b_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.9-he0e7f3f_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-h4d475cb_6.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.489-h4d475cb_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.10.0-h113e628_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.13.0-h3cf044e_1.conda @@ -49,23 +49,23 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda - 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-0.115.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.17.0-pyhd8ed1ab_0.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 + - conda: https://conda.anaconda.org/conda-forge/linux-64/frozenlist-1.5.0-py312h178313f_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.12.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gflags-2.2.2-h5888daf_1005.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/glog-0.7.1-hbabe93e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/httptools-0.6.4-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.27.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.5-pyhd8ed1ab_0.conda @@ -77,10 +77,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-19.0.0-hce2e470_3_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-19.0.0-hcb10f89_3_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-19.0.0-hcb10f89_3_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-19.0.0-h08228c5_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-19.0.0-h00a82cf_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-19.0.0-hcb10f89_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-19.0.0-hcb10f89_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-19.0.0-h08228c5_7_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-26_linux64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hb9d3cd8_2.conda @@ -99,8 +99,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hd5240d6_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h77fa898_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.33.0-h2b5623c_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.33.0-h0121fbd_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.34.0-h2b5623c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.34.0-h0121fbd_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.67.1-h25350d4_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-hd590300_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda @@ -109,7 +109,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.28-pthreads_h94d23a6_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-19.0.0-h081d1f1_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-1.18.0-hfcad708_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-headers-1.18.0-ha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-19.0.0-h081d1f1_7_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.45-h943b412_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_2.conda @@ -131,16 +133,17 @@ 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-25.1.0.dev2025012205-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025012205-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025012205-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025012505-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025012505-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025012505-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012505-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-25.1.0.dev2025012205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025012505-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-h2d0b736_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/nlohmann_json-3.11.3-he02047a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.3-h5fbd93e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.0-h7b32b05_1.conda @@ -157,18 +160,19 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-11.1.0-py312h80c1187_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/prometheus-cpp-1.3.0-ha5d0236_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.1-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.1-py312h178313f_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/protobuf-5.28.3-py312h2ec8cdc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-19.0.0-py312h7900ff3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-19.0.0-py312h01725c0_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.5-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.6-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.27.2-py312h12e396e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.7.1-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pyinstrument-5.0.0-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyinstrument-5.0.1-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.8-h9e4cc4f_1_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda @@ -194,7 +198,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-h8bd8927_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.2.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.45.2-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.21.0-py312h8360d73_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda @@ -221,6 +225,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.18.3-py312h178313f_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.1-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312hef9b889_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda linux-aarch64: @@ -243,7 +248,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.2-h0f0193d_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h0f0193d_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.9-hab3ce66_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h88461e4_6.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.489-h88461e4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-core-cpp-1.14.0-h1887c18_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-identity-cpp-1.10.0-h47b0b28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-blobs-cpp-12.13.0-h185ecfd_1.conda @@ -266,23 +271,23 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda - 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-0.115.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.17.0-pyhd8ed1ab_0.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 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/frozenlist-1.5.0-py312hcc812fe_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.12.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gflags-2.2.2-h5ad3122_1005.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/glog-0.7.1-h468a4a4_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/httptools-0.6.4-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.27.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_1.conda @@ -295,10 +300,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.0.0-h4de3ea5_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h18dbdb1_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-h4065667_12_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h3b568fd_12_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h3b568fd_12_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h1e9d426_12_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-19.0.0-h03ebaaf_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-19.0.0-h3b568fd_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-19.0.0-h3b568fd_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-19.0.0-h1e9d426_7_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-26_linuxaarch64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlicommon-1.1.0-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlidec-1.1.0-h86ecc28_2.conda @@ -327,7 +332,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnghttp2-1.64.0-hc8609a4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.28-pthreads_h9d3fd7e_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-hfc78867_12_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopentelemetry-cpp-1.18.0-h60b47f9_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopentelemetry-cpp-headers-1.18.0-h8af1aa0_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-19.0.0-hfc78867_7_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.45-hec79eb8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.3-h44a3b7b_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_2.conda @@ -349,16 +356,17 @@ 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-25.1.0.dev2025012205-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025012205-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025012205-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025012505-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025012505-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025012505-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012505-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-25.1.0.dev2025012205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025012505-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-ha32ae93_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/nlohmann_json-3.11.3-h0a1ffab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openjpeg-2.5.3-h3f56577_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.0-hd08dc88_1.conda @@ -375,18 +383,19 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pillow-11.1.0-py312h719f0cf_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/prometheus-cpp-1.3.0-h7938499_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.2.1-py312hb2c0f52_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.2.1-py312hcc812fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/protobuf-5.28.3-py312h6f74592_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pthread-stubs-0.4-h86ecc28_1002.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-18.1.0-py312h8025657_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-18.1.0-py312h66f7834_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-19.0.0-py312h8025657_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-19.0.0-py312h66f7834_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.5-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.6-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pydantic-core-2.27.2-py312h8cbf658_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.7.1-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyinstrument-5.0.0-py312hb2c0f52_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyinstrument-5.0.1-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.8-h1683364_1_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda @@ -412,7 +421,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-hd4fb6f5_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.2.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.45.2-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.21.0-py312ha0d6ea1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py312h52516f5_0.conda @@ -439,6 +448,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.18.3-py312hcc812fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zeromq-4.3.5-h5efb499_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zlib-1.3.1-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstandard-0.23.0-py312hb698573_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.6-h02f22dd_0.conda osx-arm64: @@ -460,7 +470,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.2-hc8a0bd2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-hc8a0bd2_4.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.9-ha81f72f_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-h0e5014b_6.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.489-h0e5014b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.14.0-hd50102c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.10.0-hc602bab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-blobs-cpp-12.13.0-h7585a09_1.conda @@ -483,23 +493,23 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda - 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-0.115.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.17.0-pyhd8ed1ab_0.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 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/frozenlist-1.5.0-py312h998013c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.12.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gflags-2.2.2-hf9b8971_1005.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/glog-0.7.1-heb240a5_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/httptools-0.6.4-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.27.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_1.conda @@ -510,10 +520,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.16-ha0e7c42_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_h07bc746_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-19.0.0-hd1aa4b5_4_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-19.0.0-hf07054f_4_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-19.0.0-hf07054f_4_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-19.0.0-h4239455_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-19.0.0-h819e3af_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-19.0.0-hf07054f_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-19.0.0-hf07054f_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-19.0.0-h4239455_7_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-26_osxarm64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.1.0-hd74edd7_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.1.0-hd74edd7_2.conda @@ -539,7 +549,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.3-h39f12f2_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.64.0-h6d7220d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.28-openmp_hf332438_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-19.0.0-h636d7b7_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopentelemetry-cpp-1.18.0-h0c05b2d_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopentelemetry-cpp-headers-1.18.0-hce30654_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-19.0.0-h636d7b7_7_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.45-h3783ad8_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.3-h3bd63a1_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h07bc746_2.conda @@ -558,16 +570,17 @@ 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-25.1.0.dev2025012205-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025012205-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025012205-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025012505-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025012505-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025012505-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012505-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-25.1.0.dev2025012205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025012505-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 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/nlohmann_json-3.11.3-h00cdb27_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openjpeg-2.5.3-h8a3d83b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.0-h81ee809_1.conda @@ -584,18 +597,19 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-11.1.0-py312h50aef2c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/prometheus-cpp-1.3.0-h0967b3e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.1-py312hea69d52_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.1-py312h998013c_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/protobuf-5.28.3-py312hd8f9ff3_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pthread-stubs-0.4-hd74edd7_1002.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-19.0.0-py312h1f38498_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-19.0.0-py312hc40f475_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.5-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.6-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.27.2-py312hcd83bfe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.7.1-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyinstrument-5.0.0-py312h0bf5046_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyinstrument-5.0.1-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.8-hc22306f_1_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda @@ -620,7 +634,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-h98b9ce2_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.2.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.45.2-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.21.0-py312hf3e4074_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda @@ -647,6 +661,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.18.3-py312h998013c_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zlib-1.3.1-h8359307_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py312h15fbf35_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.6-hb46c0d2_0.conda packages: @@ -1333,9 +1348,9 @@ packages: license_family: Apache size: 235976 timestamp: 1737565563139 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-h4d475cb_6.conda - sha256: 2309d96d537b5c3810c6e9fbf5b6bb7e06ce907a609d172063ab504b2cc67f30 - md5: 6139e84bbb6fdb27ca49c2981613a5fa +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.489-h4d475cb_0.conda + sha256: 08d6b7d2ed17bfcc7deb903c7751278ee434abdb27e3be0dceb561f30f030c75 + md5: b775e9f46dfa94b228a81d8e8c6d8b1d depends: - __glibc >=2.17,<3.0.a0 - aws-c-common >=0.10.6,<0.10.7.0a0 @@ -1351,11 +1366,11 @@ packages: platform: linux license: Apache-2.0 license_family: Apache - size: 3069914 - timestamp: 1737049585807 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h88461e4_6.conda - sha256: f97e071ffb87bc33923f798761ec6a854614ce193913d34d3248515d18357baa - md5: 0d7f1ee2e5572bf9d1fd78f0f2ab6f6b + size: 3144364 + timestamp: 1737576036746 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.489-h88461e4_0.conda + sha256: 88353e82b053763168cddbe2f88048defc1c97b3dad0966fbe8c4fa7aa592c7e + md5: e725d8fa77a6a5f38a78c5de914a5f40 depends: - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 @@ -1370,11 +1385,11 @@ packages: platform: linux license: Apache-2.0 license_family: Apache - size: 2919798 - timestamp: 1737049659061 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-h0e5014b_6.conda - sha256: 8c21ce4692d1631b96adea099d7c2b905fc5d078db63bf754d85600dcf184651 - md5: a3b7b9a81d8c6a8f963f619d9e362c39 + size: 3015109 + timestamp: 1737575993030 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.489-h0e5014b_0.conda + sha256: d82451530ddf363d8bb31a8a7391bb9699f745e940ace91d78c0e6170deef03c + md5: 156cfb45a1bb8cffc81e59047bb34f51 depends: - __osx >=11.0 - aws-c-common >=0.10.6,<0.10.7.0a0 @@ -1389,8 +1404,8 @@ packages: platform: osx license: Apache-2.0 license_family: Apache - size: 2834057 - timestamp: 1737126583846 + size: 2874126 + timestamp: 1737577023623 - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda sha256: fe07debdb089a3db17f40a7f20d283d75284bb4fc269ef727b8ba6fc93f7cb5a md5: 0a8838771cc2e985cd295e01ae83baf1 @@ -1934,24 +1949,25 @@ packages: license: MIT and PSF-2.0 size: 20486 timestamp: 1733208916977 -- conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.6-pyhd8ed1ab_0.conda - sha256: d7826d537c667093c9de96411a09585a8d620c84a830a0195e58e9a0df45f018 - md5: 1b1e0c97830cdf75f1f371bd467ab657 +- conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.7-pyh29332c3_1.conda + sha256: ac0c357b216e0b37d1a31af200548783d9e5a0413caaee92c5184dbef63b578e + md5: b53637ce62c4bcf3123a2a40f6a3824b depends: + - python >=3.9 + - starlette >=0.40.0,<0.46.0 + - typing_extensions >=4.8.0 + - pydantic >=1.7.4,!=1.8,!=1.8.1,!=2.0.0,!=2.0.1,!=2.1.0,<3.0.0 - email_validator >=2.0.0 - fastapi-cli >=0.0.5 - httpx >=0.23.0 - - jinja2 >=2.11.2 - - pydantic >=1.7.4,!=1.8,!=1.8.1,!=2.0.0,!=2.0.1,!=2.1.0,<3.0.0 - - python >=3.9 - - python-multipart >=0.0.7 - - starlette >=0.40.0,<0.42.0 - - typing_extensions >=4.8.0 + - jinja2 >=3.1.5 + - python-multipart >=0.0.18 - uvicorn-standard >=0.12.0 + - python license: MIT license_family: MIT - size: 73084 - timestamp: 1733362427885 + size: 77890 + timestamp: 1737647037273 - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.7-pyhd8ed1ab_0.conda sha256: 300683731013b7221922339cd40430bb3c2ddeeb658fd7e37f5099ffe64e4db0 md5: d960e0ea9e1c561aa928f6c4439f04c7 @@ -2007,9 +2023,9 @@ packages: license: GPL-2.0-only OR FTL size: 596430 timestamp: 1694616332835 -- conda: https://conda.anaconda.org/conda-forge/linux-64/frozenlist-1.5.0-py312h66e93f0_0.conda - sha256: 7e0c12983b20f2816b3712729b5a35ecb7ee152132ca7cf805427c62395ea823 - md5: f98e36c96b2c66d9043187179ddb04f4 +- conda: https://conda.anaconda.org/conda-forge/linux-64/frozenlist-1.5.0-py312h178313f_1.conda + sha256: 501e20626798b6d7f130f4db0fb02c0385d8f4c11ca525925602a4208afb343f + md5: fb986e1c089021979dc79606af78ef8f depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -2019,11 +2035,11 @@ packages: platform: linux license: Apache-2.0 license_family: APACHE - size: 60968 - timestamp: 1729699568442 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/frozenlist-1.5.0-py312hb2c0f52_0.conda - sha256: b0a9ff3e71452eed70877b2f3175d41cd85070da6deac381c5f3f61e1f19bccb - md5: 62fc11b0738ca15e0dd19b60cf280d12 + size: 60939 + timestamp: 1737645356438 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/frozenlist-1.5.0-py312hcc812fe_1.conda + sha256: 84895c5e207e0cb2044f3607fb36b82eb8cb45f0a009d03dc04c777ed975757d + md5: 9090bf5c43e8011fb2e9a82a1db20cc3 depends: - libgcc >=13 - python >=3.12,<3.13.0a0 @@ -2033,11 +2049,11 @@ packages: platform: linux license: Apache-2.0 license_family: APACHE - size: 59967 - timestamp: 1729699642726 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/frozenlist-1.5.0-py312h0bf5046_0.conda - sha256: 44d6d6b332421e621c029fb149f12dba1ccb5ed6ac632e2e807a9d92d6cb2864 - md5: 7960352935cc95ac23883c9b8c97f2ff + size: 60472 + timestamp: 1737645511278 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/frozenlist-1.5.0-py312h998013c_1.conda + sha256: d503ac8c050abdbd129253973f23be34944978d510de78ef5a3e6aa1e3d9552d + md5: 5eb3715c7e3fa9b533361375bfefe6ee depends: - __osx >=11.0 - python >=3.12,<3.13.0a0 @@ -2047,8 +2063,8 @@ packages: platform: osx license: Apache-2.0 license_family: APACHE - size: 53366 - timestamp: 1729699762631 + size: 57256 + timestamp: 1737645503377 - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.12.0-pyhd8ed1ab_0.conda sha256: 3320970c4604989eadf908397a9475f9e6a96a773c185915111399cbfbe47817 md5: e041ad4c43ab5e10c74587f95378ebc7 @@ -2165,15 +2181,15 @@ packages: license_family: MIT size: 52000 timestamp: 1733298867359 -- conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda - sha256: ec89b7e5b8aa2f0219f666084446e1fb7b54545861e9caa892acb24d125761b5 - md5: 2aa5ff7fa34a81b9196532c84c10d865 +- conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda + sha256: 6ad78a180576c706aabeb5b4c8ceb97c0cb25f1e112d76495bff23e3779948ba + md5: 0a802cb9888dd14eeefc611f05c40b6e depends: - python >=3.9 license: MIT license_family: MIT - size: 29412 - timestamp: 1733299296857 + size: 30731 + timestamp: 1737618390337 - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda sha256: c84d012a245171f3ed666a8bf9319580c269b7843ffa79f26468842da3abd5df md5: 2ca8e6dbc86525c8b95e3c0ffa26442e @@ -2260,15 +2276,15 @@ packages: license_family: APACHE size: 278363 timestamp: 1736350219225 -- conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda - sha256: e91c6ef09d076e1d9a02819cd00fa7ee18ecf30cdd667605c853980216584d1b - md5: 566e75c90c1d0c8c459eb0ad9833dc7a +- conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda + sha256: 77af6f5fe8b62ca07d09ac60127a30d9069fdc3c68d6b256754d0ffb1f7779f8 + md5: 8e6923fc12f1fe8f8c4e5c9f343256ac depends: - python >=3.9 license: MIT license_family: MIT - size: 17239 - timestamp: 1733298862681 + size: 17397 + timestamp: 1737618427549 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda sha256: 813298f2e54ef087dbfc9cc2e56e08ded41de65cff34c639cc8ba4e27e4540c9 md5: 268203e8b983fddb6412b36f2024e75c @@ -2558,28 +2574,29 @@ packages: license_family: Apache size: 1178260 timestamp: 1736008642885 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-19.0.0-hce2e470_3_cpu.conda - build_number: 3 - sha256: 3b85b78a52ce673798e3c880fa41b818554912e722e81ca20cf95ba9257f13f0 - md5: a50ba9a0789061ea395a47a23d6a7734 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-19.0.0-h00a82cf_7_cpu.conda + build_number: 7 + sha256: 8b401a256e4632ab6c1ea8d3cfb16d7c8ff3b0fe5af7cd474202a369c63dc74c + md5: 8d553fa6a138f369ed94b8b1a76f1e77 depends: - __glibc >=2.17,<3.0.a0 - aws-crt-cpp >=0.29.9,<0.29.10.0a0 - - aws-sdk-cpp >=1.11.458,<1.11.459.0a0 + - aws-sdk-cpp >=1.11.489,<1.11.490.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-identity-cpp >=1.10.0,<1.10.1.0a0 - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 - bzip2 >=1.0.8,<2.0a0 - - gflags >=2.2.2,<2.3.0a0 - glog >=0.7.1,<0.8.0a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - libbrotlidec >=1.1.0,<1.2.0a0 - libbrotlienc >=1.1.0,<1.2.0a0 - libgcc >=13 - - libgoogle-cloud >=2.33.0,<2.34.0a0 - - libgoogle-cloud-storage >=2.33.0,<2.34.0a0 + - libgoogle-cloud >=2.34.0,<2.35.0a0 + - libgoogle-cloud-storage >=2.34.0,<2.35.0a0 + - libopentelemetry-cpp >=1.18.0,<1.19.0a0 + - libprotobuf >=5.28.3,<5.28.4.0a0 - libre2-11 >=2024.7.2 - libstdcxx >=13 - libutf8proc >=2.10.0,<2.11.0a0 @@ -2590,27 +2607,26 @@ packages: - snappy >=1.2.1,<1.3.0a0 - zstd >=1.5.6,<1.6.0a0 constrains: + - apache-arrow-proc =*=cpu - arrow-cpp <0.0a0 - parquet-cpp <0.0a0 - - apache-arrow-proc =*=cpu arch: x86_64 platform: linux license: Apache-2.0 - size: 8899665 - timestamp: 1737343852413 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-h4065667_12_cpu.conda - build_number: 12 - sha256: 0ac8aab370ef7a21e912cc312e5cbfa59afea8e004f5a372f2f25f96de0c9e9a - md5: 4789bb7ae93fe12bfd81169157896f49 + size: 8979130 + timestamp: 1737757402544 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-19.0.0-h03ebaaf_7_cpu.conda + build_number: 7 + sha256: f029b7fbed445a2cb08b95686e9a9cb30c04a10998ef632c2cf84fd0c0d1e424 + md5: b94870200ac053eff3dda878d523f1d1 depends: - aws-crt-cpp >=0.29.9,<0.29.10.0a0 - - aws-sdk-cpp >=1.11.458,<1.11.459.0a0 + - aws-sdk-cpp >=1.11.489,<1.11.490.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-identity-cpp >=1.10.0,<1.10.1.0a0 - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 - bzip2 >=1.0.8,<2.0a0 - - gflags >=2.2.2,<2.3.0a0 - glog >=0.7.1,<0.8.0a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 @@ -2619,6 +2635,8 @@ packages: - libgcc >=13 - libgoogle-cloud >=2.34.0,<2.35.0a0 - libgoogle-cloud-storage >=2.34.0,<2.35.0a0 + - libopentelemetry-cpp >=1.18.0,<1.19.0a0 + - libprotobuf >=5.28.3,<5.28.4.0a0 - libre2-11 >=2024.7.2 - libstdcxx >=13 - libutf8proc >=2.10.0,<2.11.0a0 @@ -2635,16 +2653,16 @@ packages: arch: aarch64 platform: linux license: Apache-2.0 - size: 8051570 - timestamp: 1737451538096 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-19.0.0-hd1aa4b5_4_cpu.conda - build_number: 4 - sha256: bf027b2e77b75b71b5213131fc4b06bbca6f1e195fde62090343e0a808d08bbe - md5: 94c2bcca143c043f8083a1f275de3caf + size: 8210159 + timestamp: 1737757741310 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-19.0.0-h819e3af_7_cpu.conda + build_number: 7 + sha256: e5e370673b9fe9459a826f474dc470b59fd6744fa652dd534f7ef722cd9be39c + md5: 3cb4f805d9742272591795d487786f2d depends: - __osx >=11.0 - aws-crt-cpp >=0.29.9,<0.29.10.0a0 - - aws-sdk-cpp >=1.11.458,<1.11.459.0a0 + - aws-sdk-cpp >=1.11.489,<1.11.490.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-identity-cpp >=1.10.0,<1.10.1.0a0 - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 @@ -2658,6 +2676,8 @@ packages: - libcxx >=18 - libgoogle-cloud >=2.34.0,<2.35.0a0 - libgoogle-cloud-storage >=2.34.0,<2.35.0a0 + - libopentelemetry-cpp >=1.18.0,<1.19.0a0 + - libprotobuf >=5.28.3,<5.28.4.0a0 - libre2-11 >=2024.7.2 - libutf8proc >=2.10.0,<2.11.0a0 - libzlib >=1.3.1,<2.0a0 @@ -2668,154 +2688,154 @@ packages: - zstd >=1.5.6,<1.6.0a0 constrains: - parquet-cpp <0.0a0 - - arrow-cpp <0.0a0 - apache-arrow-proc =*=cpu + - arrow-cpp <0.0a0 arch: arm64 platform: osx license: Apache-2.0 - size: 5532664 - timestamp: 1737458545986 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-19.0.0-hcb10f89_3_cpu.conda - build_number: 3 - sha256: f4e4b14fc2aaaf0d0a16a3b4b4dcae84b1b77daa02754f0873901089ce786a49 - md5: 3e1e31382e9c6ecd0b24bd8f6ddb33ec + size: 5540329 + timestamp: 1737756116679 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-19.0.0-hcb10f89_7_cpu.conda + build_number: 7 + sha256: 7018394af408b4ce344c97cd6f97bc676708067a9d2d834bf091b74f13b41be4 + md5: de10e3323bfa9dd8929f7fbe23665883 depends: - __glibc >=2.17,<3.0.a0 - - libarrow 19.0.0 hce2e470_3_cpu + - libarrow 19.0.0 h00a82cf_7_cpu - libgcc >=13 - libstdcxx >=13 arch: x86_64 platform: linux license: Apache-2.0 - size: 618570 - timestamp: 1737343896206 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h3b568fd_12_cpu.conda - build_number: 12 - sha256: c93daa943342eb848e5a44d4f48749f96decbde7b0f7d830fe56d0d506c03576 - md5: 8ec3804980e19b70ebffbeb623ce084b + size: 637717 + timestamp: 1737757443960 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-19.0.0-h3b568fd_7_cpu.conda + build_number: 7 + sha256: 97911c3addb66033747e12c608ca32ce5c56d6d9f35674cfb97fff0ff4c7e926 + md5: d50c51a7d86454c90de667fcafb8c785 depends: - - libarrow 18.1.0 h4065667_12_cpu + - libarrow 19.0.0 h03ebaaf_7_cpu - libgcc >=13 - libstdcxx >=13 arch: aarch64 platform: linux license: Apache-2.0 - size: 579114 - timestamp: 1737451608994 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-19.0.0-hf07054f_4_cpu.conda - build_number: 4 - sha256: 40de7e71d9fd4b799c452b3a0328ea260a3871de621f5344fb39b7f48371df75 - md5: e3265f8ab44051131966bd6f7b07a6e3 + size: 602410 + timestamp: 1737757792970 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-19.0.0-hf07054f_7_cpu.conda + build_number: 7 + sha256: a716bd2c6106f0508e69800f73a9368f5b5fadba0cd1f7f7ac753bf43392bf4d + md5: a138208af40b21c840c1075f3bec5014 depends: - __osx >=11.0 - - libarrow 19.0.0 hd1aa4b5_4_cpu + - libarrow 19.0.0 h819e3af_7_cpu - libcxx >=18 arch: arm64 platform: osx license: Apache-2.0 - size: 481968 - timestamp: 1737458659266 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-19.0.0-hcb10f89_3_cpu.conda - build_number: 3 - sha256: c5cdf03d72d028e8af774aabd29cd92fb87f54cd579a9ffe77ad228c51faaa82 - md5: 1face9ff13ec61bfb065063d35fda864 + size: 499319 + timestamp: 1737756215547 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-19.0.0-hcb10f89_7_cpu.conda + build_number: 7 + sha256: 4f3864b3f004fc320f28ecc5bb47e4cd927f40ef8dc6a16bdef51b34f51da921 + md5: eddf039322781fee4d4137f50769511c depends: - __glibc >=2.17,<3.0.a0 - - libarrow 19.0.0 hce2e470_3_cpu - - libarrow-acero 19.0.0 hcb10f89_3_cpu + - libarrow 19.0.0 h00a82cf_7_cpu + - libarrow-acero 19.0.0 hcb10f89_7_cpu - libgcc >=13 - - libparquet 19.0.0 h081d1f1_3_cpu + - libparquet 19.0.0 h081d1f1_7_cpu - libstdcxx >=13 arch: x86_64 platform: linux license: Apache-2.0 - size: 585153 - timestamp: 1737344009570 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h3b568fd_12_cpu.conda - build_number: 12 - sha256: 40bbdb394db6f405e6fae56bcbfc88fa433130668d2b39d1f109b7d6ffb8be76 - md5: e9b9a9941d35dff0a168741bdd54877e + size: 605090 + timestamp: 1737757550128 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-19.0.0-h3b568fd_7_cpu.conda + build_number: 7 + sha256: e055430747eba48c99a7b1ebe0596e126a121eeffd6ba667c00554a0b2707839 + md5: 2d6208bc6ab9089ee1787d9abbefd172 depends: - - libarrow 18.1.0 h4065667_12_cpu - - libarrow-acero 18.1.0 h3b568fd_12_cpu + - libarrow 19.0.0 h03ebaaf_7_cpu + - libarrow-acero 19.0.0 h3b568fd_7_cpu - libgcc >=13 - - libparquet 18.1.0 hfc78867_12_cpu + - libparquet 19.0.0 hfc78867_7_cpu - libstdcxx >=13 arch: aarch64 platform: linux license: Apache-2.0 - size: 559928 - timestamp: 1737451706623 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-19.0.0-hf07054f_4_cpu.conda - build_number: 4 - sha256: c9b01193f3dc2855276a743aa2d107b3893d886dbc561944154acc4c61a9b4cb - md5: c6588e0236da980424ca0b288c893d1a + size: 580599 + timestamp: 1737757863901 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-19.0.0-hf07054f_7_cpu.conda + build_number: 7 + sha256: dcc8d61eae311c5d377a41e2c6f964b86e7289917c93d3af03e5d4a4c88ab85a + md5: 5791e257ecb73e7745fa62446f22b1ea depends: - __osx >=11.0 - - libarrow 19.0.0 hd1aa4b5_4_cpu - - libarrow-acero 19.0.0 hf07054f_4_cpu + - libarrow 19.0.0 h819e3af_7_cpu + - libarrow-acero 19.0.0 hf07054f_7_cpu - libcxx >=18 - - libparquet 19.0.0 h636d7b7_4_cpu + - libparquet 19.0.0 h636d7b7_7_cpu arch: arm64 platform: osx license: Apache-2.0 - size: 488490 - timestamp: 1737459936234 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-19.0.0-h08228c5_3_cpu.conda - build_number: 3 - sha256: 414297c69d08ba45af0fccb5e22cc3b3e92181f3928eba1e1b1ab3641970c7e0 - md5: 8527e1e45c495991fd88f6531e176556 + size: 500722 + timestamp: 1737757369380 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-19.0.0-h08228c5_7_cpu.conda + build_number: 7 + sha256: 51ec47ed56880cfd64bfa012c8488d127d8f0acfe0d64707880393d49a2663a2 + md5: e14afa8912873a094a30ad9e455bafc3 depends: - __glibc >=2.17,<3.0.a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 19.0.0 hce2e470_3_cpu - - libarrow-acero 19.0.0 hcb10f89_3_cpu - - libarrow-dataset 19.0.0 hcb10f89_3_cpu + - libarrow 19.0.0 h00a82cf_7_cpu + - libarrow-acero 19.0.0 hcb10f89_7_cpu + - libarrow-dataset 19.0.0 hcb10f89_7_cpu - libgcc >=13 - libprotobuf >=5.28.3,<5.28.4.0a0 - libstdcxx >=13 arch: x86_64 platform: linux license: Apache-2.0 - size: 521371 - timestamp: 1737344062052 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h1e9d426_12_cpu.conda - build_number: 12 - sha256: 6216a1c48e41d3b304e87b19a8ff37c10e51ceca83bff5e942d763c93f6f55a1 - md5: f647dcbf46aebc86f9975ff3c856de45 + size: 521685 + timestamp: 1737757595490 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-19.0.0-h1e9d426_7_cpu.conda + build_number: 7 + sha256: bd85da0813384b5b5af2f2b05e4bc20aa606eb5528310c84e42aa495feec6050 + md5: b35923aad96b07d76db4c31ccc74584f depends: - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.1.0 h4065667_12_cpu - - libarrow-acero 18.1.0 h3b568fd_12_cpu - - libarrow-dataset 18.1.0 h3b568fd_12_cpu + - libarrow 19.0.0 h03ebaaf_7_cpu + - libarrow-acero 19.0.0 h3b568fd_7_cpu + - libarrow-dataset 19.0.0 h3b568fd_7_cpu - libgcc >=13 - libprotobuf >=5.28.3,<5.28.4.0a0 - libstdcxx >=13 arch: aarch64 platform: linux license: Apache-2.0 - size: 516135 - timestamp: 1737451754178 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-19.0.0-h4239455_4_cpu.conda - build_number: 4 - sha256: 1de1100bddcaa4aacae5cc30e3c0ae3259d130bee7b3d52a57a1c9950e0c6588 - md5: 6988cd2fdf01cae4bc454859a7cf8bac + size: 515585 + timestamp: 1737757899077 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-19.0.0-h4239455_7_cpu.conda + build_number: 7 + sha256: 94e5351779728cacd3fcadcfe082fc840a79333ce8b1056bb811e39417decd2a + md5: 05a75db98927961f86b64340442150c3 depends: - __osx >=11.0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 19.0.0 hd1aa4b5_4_cpu - - libarrow-acero 19.0.0 hf07054f_4_cpu - - libarrow-dataset 19.0.0 hf07054f_4_cpu + - libarrow 19.0.0 h819e3af_7_cpu + - libarrow-acero 19.0.0 hf07054f_7_cpu + - libarrow-dataset 19.0.0 hf07054f_7_cpu - libcxx >=18 - libprotobuf >=5.28.3,<5.28.4.0a0 arch: arm64 platform: osx license: Apache-2.0 - size: 449975 - timestamp: 1737460148737 + size: 449238 + timestamp: 1737757536452 - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-26_linux64_openblas.conda build_number: 26 sha256: 30bd658682b124243f8e52d8edf8a19e7be1bc31e4fe4baec30a64002dc8cd0c @@ -3482,9 +3502,9 @@ packages: license_family: GPL size: 463521 timestamp: 1729089357313 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.33.0-h2b5623c_1.conda - sha256: ae48ee93e2c226bf682f1e389c2fd51ae7bf77c2ce4b3aee069764f4be1c63f2 - md5: 61829a8dd5f4e2327e707572065bae41 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.34.0-h2b5623c_0.conda + sha256: 348ee1dddd82dcef5a185c86e65dda8acfc9b583acc425ccb9b661f2d433b2cc + md5: 2a5142c88dd6132eaa8079f99476e922 depends: - __glibc >=2.17,<3.0.a0 - libabseil * cxx17* @@ -3496,13 +3516,13 @@ packages: - libstdcxx >=13 - openssl >=3.4.0,<4.0a0 constrains: - - libgoogle-cloud 2.33.0 *_1 + - libgoogle-cloud 2.34.0 *_0 arch: x86_64 platform: linux license: Apache-2.0 license_family: Apache - size: 1254656 - timestamp: 1735648569457 + size: 1256795 + timestamp: 1737286199784 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-2.34.0-hccf9d24_0.conda sha256: 54267dda8fafc2a2d379ef77b6029d8240e0628d4b29758f788fb903f84397a3 md5: 1ce0fd876001c40801b40fea22987e41 @@ -3543,16 +3563,16 @@ packages: license_family: Apache size: 878217 timestamp: 1737284441192 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.33.0-h0121fbd_1.conda - sha256: 41022523320ca8633a6c615710823e596efadb50f06d724e1a0c81e27994f257 - md5: b0cfb5044685a7a9fa43ae669124f0a0 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.34.0-h0121fbd_0.conda + sha256: aa1b3b30ae6b2eab7c9e6a8e2fd8ec3776f25d2e3f0b6f9dc547ff8083bf25fa + md5: 9f0c43225243c81c6991733edcaafff5 depends: - __glibc >=2.17,<3.0.a0 - libabseil - libcrc32c >=1.1.2,<1.2.0a0 - libcurl - libgcc >=13 - - libgoogle-cloud 2.33.0 h2b5623c_1 + - libgoogle-cloud 2.34.0 h2b5623c_0 - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - openssl @@ -3560,8 +3580,8 @@ packages: platform: linux license: Apache-2.0 license_family: Apache - size: 784357 - timestamp: 1735648759177 + size: 785792 + timestamp: 1737286406612 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-storage-2.34.0-hb9b2b65_0.conda sha256: 4ad4fb7c02dcfa4c86dcf9591e0131a01fc0f2c3f2729c12882b944ddf2b8a9d md5: 0732a5988f7f556f2c1d1f51026fc1be @@ -3781,6 +3801,8 @@ packages: depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 + constrains: + - xz ==5.6.3=*_1 arch: x86_64 platform: linux license: 0BSD @@ -3791,6 +3813,8 @@ packages: md5: eb08b903681f9f2432c320e8ed626723 depends: - libgcc >=13 + constrains: + - xz ==5.6.3=*_1 arch: aarch64 platform: linux license: 0BSD @@ -3801,6 +3825,8 @@ packages: md5: b2553114a7f5e20ccd02378a77d836aa depends: - __osx >=11.0 + constrains: + - xz ==5.6.3=*_1 arch: arm64 platform: osx license: 0BSD @@ -3927,13 +3953,103 @@ packages: license_family: BSD size: 4165774 timestamp: 1730772154295 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-19.0.0-h081d1f1_3_cpu.conda - build_number: 3 - sha256: 287c4864b849180ce9e447df8227da2c4006001056e1668dacc3365264b0e828 - md5: 95f8b5758148e62a055f4c6538a31f0b +- conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-1.18.0-hfcad708_1.conda + sha256: 4ea235e08676f16b0d3c3380befe1478c0fa0141512ee709b011005c55c9619f + md5: 1f5a5d66e77a39dc5bd639ec953705cf + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcurl >=8.11.1,<9.0a0 + - libgrpc >=1.67.1,<1.68.0a0 + - libopentelemetry-cpp-headers 1.18.0 ha770c72_1 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libzlib >=1.3.1,<2.0a0 + - nlohmann_json + - prometheus-cpp >=1.3.0,<1.4.0a0 + constrains: + - cpp-opentelemetry-sdk =1.18.0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 801927 + timestamp: 1735643375271 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopentelemetry-cpp-1.18.0-h60b47f9_1.conda + sha256: 160c493cd0f897955b0b6035b51c6d7255ffbaed3c8a12d43e8e8a719d405aba + md5: afe3c8c53f4b6d27d553c230d4b34038 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcurl >=8.11.1,<9.0a0 + - libgrpc >=1.67.1,<1.68.0a0 + - libopentelemetry-cpp-headers 1.18.0 h8af1aa0_1 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libzlib >=1.3.1,<2.0a0 + - nlohmann_json + - prometheus-cpp >=1.3.0,<1.4.0a0 + constrains: + - cpp-opentelemetry-sdk =1.18.0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 800896 + timestamp: 1735643533825 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopentelemetry-cpp-1.18.0-h0c05b2d_1.conda + sha256: c6bcbd53d62a9e0d8c667e560db0ca2ecb7679277cbb3c23457aabe74fcb8cba + md5: 19c46cc18825f3924251c39ec1b0d983 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcurl >=8.11.1,<9.0a0 + - libgrpc >=1.67.1,<1.68.0a0 + - libopentelemetry-cpp-headers 1.18.0 hce30654_1 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libzlib >=1.3.1,<2.0a0 + - nlohmann_json + - prometheus-cpp >=1.3.0,<1.4.0a0 + constrains: + - cpp-opentelemetry-sdk =1.18.0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + size: 529588 + timestamp: 1735643889612 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-headers-1.18.0-ha770c72_1.conda + sha256: aa1f7dea79ea8513ff77339ba7c6e9cf10dfa537143e7718b1cfb3af52b649f2 + md5: 4fb055f57404920a43b147031471e03b + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 320359 + timestamp: 1735643346175 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopentelemetry-cpp-headers-1.18.0-h8af1aa0_1.conda + sha256: 981c0b29a0789597fa8ed147b02df2d2ad0c7f863d87df74770c40cee1800228 + md5: 282193b19a19e3b5d75d18ef82713ef0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 319401 + timestamp: 1735643509251 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopentelemetry-cpp-headers-1.18.0-hce30654_1.conda + sha256: 82e5f5ba64debbaab3c601b265dfc0cdb4d2880feba9bada5fd2e67b9f91ada5 + md5: e965dad955841507549fdacd8f7f94c0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + size: 320565 + timestamp: 1735643673319 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-19.0.0-h081d1f1_7_cpu.conda + build_number: 7 + sha256: f117af1368c613328fb3af251287c6885962d9477a55d9bf1ab253626730b4ea + md5: a8b3022bfe8a2cb4249229768401340c depends: - __glibc >=2.17,<3.0.a0 - - libarrow 19.0.0 hce2e470_3_cpu + - libarrow 19.0.0 h00a82cf_7_cpu - libgcc >=13 - libstdcxx >=13 - libthrift >=0.21.0,<0.21.1.0a0 @@ -3941,14 +4057,14 @@ packages: arch: x86_64 platform: linux license: Apache-2.0 - size: 1227537 - timestamp: 1737343982323 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-hfc78867_12_cpu.conda - build_number: 12 - sha256: 224da9fb417e1dc569700cddf6dd7febe9a6e5c12547a389a5b934b8d385c4f8 - md5: 517447be85cda09f9410ca609c69499d + size: 1240902 + timestamp: 1737757526098 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-19.0.0-hfc78867_7_cpu.conda + build_number: 7 + sha256: 85a9964201ab6ed15b22a5ea29c66b44febc5a815a7d3234c3a605ca7644cc02 + md5: 8814a0cd443b9ebbb1662b370b6b14fb depends: - - libarrow 18.1.0 h4065667_12_cpu + - libarrow 19.0.0 h03ebaaf_7_cpu - libgcc >=13 - libstdcxx >=13 - libthrift >=0.21.0,<0.21.1.0a0 @@ -3956,23 +4072,23 @@ packages: arch: aarch64 platform: linux license: Apache-2.0 - size: 1116762 - timestamp: 1737451682325 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-19.0.0-h636d7b7_4_cpu.conda - build_number: 4 - sha256: d394423b8a096cec5481ef4cdb4d39dd4b89949cd6f23bdc14896d8af36d78f3 - md5: 639473b0344e0d2f46feb544cff5c6d8 + size: 1153344 + timestamp: 1737757846296 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-19.0.0-h636d7b7_7_cpu.conda + build_number: 7 + sha256: 637298e97c586a74e19df44cf378be3e99274aef09ee1b2a5f30c4492bd62e0d + md5: 3f0e87a16e30ff26bb513fcda9f971ac depends: - __osx >=11.0 - - libarrow 19.0.0 hd1aa4b5_4_cpu + - libarrow 19.0.0 h819e3af_7_cpu - libcxx >=18 - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 arch: arm64 platform: osx license: Apache-2.0 - size: 885681 - timestamp: 1737459816091 + size: 893815 + timestamp: 1737757309795 - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.45-h943b412_0.conda sha256: b8f5b5ba9a14dedf7c97c01300de492b1b52b68eacbc3249a13fdbfa82349a2f md5: 85cbdaacad93808395ac295b5667d25b @@ -4737,47 +4853,47 @@ packages: license_family: BSD size: 24048 timestamp: 1733219945697 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025012205-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025012505-release.conda noarch: python - sha256: 63e2ce51c01fdb5a73f62ea5f862acea5946f45d6b6bd63dafc78d242822e1b7 - md5: 5289b5be19bf0f500e1a06f44d816343 + sha256: 83e72ee5d9c5965eefc04dc84a9f496b5064e006dbfcfe137ab1710285d6b3f3 + md5: 3359ea55713294fb8bb2c70e6bd5753a depends: - - max-core ==25.1.0.dev2025012205 release - - max-python >=25.1.0.dev2025012205,<26.0a0 - - mojo-jupyter ==25.1.0.dev2025012205 release - - mblack ==25.1.0.dev2025012205 release + - max-core ==25.1.0.dev2025012505 release + - max-python >=25.1.0.dev2025012505,<26.0a0 + - mojo-jupyter ==25.1.0.dev2025012505 release + - mblack ==25.1.0.dev2025012505 release license: LicenseRef-Modular-Proprietary - size: 9919 - timestamp: 1737524122346 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025012205-release.conda - sha256: 061e7c8aba735fd2d15aca623c2f81452723bc0a5ab1e5a63af1761a9eaba9ef - md5: 2d8a82ff460cd4e03382a9151a8cf8d8 + size: 9918 + timestamp: 1737782253436 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025012505-release.conda + sha256: d89d1a2279776c687b3b729d53b1e737477afc3eae214d5750b00a048667aaed + md5: ebf37a7d5882bb676718a5648dee3654 depends: - - mblack ==25.1.0.dev2025012205 release + - mblack ==25.1.0.dev2025012505 release license: LicenseRef-Modular-Proprietary - size: 242139658 - timestamp: 1737523134733 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025012205-release.conda - sha256: eade442118da29d8b42289e6859699b4faafcf51d02189729259a2e7a97a0dcc - md5: 8e0412932905d3a4decf17acd50899ce + size: 243130339 + timestamp: 1737782221031 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025012505-release.conda + sha256: ad52887002d135793158f9bc4afcd2ea1d89111f65351885669894bb23a83763 + md5: bde4e25a295f947b730261246613b83d depends: - - mblack ==25.1.0.dev2025012205 release + - mblack ==25.1.0.dev2025012505 release license: LicenseRef-Modular-Proprietary - size: 244683388 - timestamp: 1737524122344 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025012205-release.conda - sha256: b5ccec88293901182a43d7f407d04b522b729cefaab066788496adec5bd3f2d2 - md5: bd5da5f25bd5151b4b691c34acdbeff0 + size: 245590611 + timestamp: 1737782253434 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025012505-release.conda + sha256: b1d103910f7b6a273906ea40f7dc993144511ed61239a5d764aca21ea479fe46 + md5: e01118f345f22ed4efb89192dfbbdbc6 depends: - - mblack ==25.1.0.dev2025012205 release + - mblack ==25.1.0.dev2025012505 release license: LicenseRef-Modular-Proprietary - size: 203820478 - timestamp: 1737523349069 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025012205-3.12release.conda - sha256: ceb4d33afe634401be386903e2f516b78f2b5e23e15cbedad42cce2600c97b7d - md5: ecfacd66a5b71794c53a468fbefcef6a + size: 204961123 + timestamp: 1737782482300 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025012505-3.12release.conda + sha256: b52562f368fe5dbc95343bcd7f2ee4699a25589c689b0cba444e5a93757b1ea7 + md5: a43f10619b5e0502b7f59ad823770f9f depends: - - max-core ==25.1.0.dev2025012205 release + - max-core ==25.1.0.dev2025012505 release - python 3.12.* - fastapi - httpx @@ -4798,13 +4914,13 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 119861319 - timestamp: 1737523134743 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025012205-3.12release.conda - sha256: 14ae6f16ce6c895de574bb02307cd58e87e32013bde0d905d6a1a67e686ca204 - md5: fb06394177c69b52c2ecf9ceaa7b308b + size: 120565142 + timestamp: 1737782221040 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025012505-3.12release.conda + sha256: c6252c78ced4b1a2c793ff2cb5846bd34dd6d16e8fd65425e9f1df6fe6227b0d + md5: 8ee044754ebf79922c85299e7425abf3 depends: - - max-core ==25.1.0.dev2025012205 release + - max-core ==25.1.0.dev2025012505 release - python 3.12.* - fastapi - httpx @@ -4825,13 +4941,13 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 122258493 - timestamp: 1737524122355 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025012205-3.12release.conda - sha256: 35e34095931d604893d014773f8c61c1c09a9888946dec4a01f1db827bd2f439 - md5: 589be4ace2edf68cfc3cf1d0cc429864 + size: 123069129 + timestamp: 1737782253444 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025012505-3.12release.conda + sha256: 489140758c2f0df45e077c6d52aac9bd419774b2d00b0a594d49505495e7aca4 + md5: 03b88370aa08d78471ff2e88973534d3 depends: - - max-core ==25.1.0.dev2025012205 release + - max-core ==25.1.0.dev2025012505 release - python 3.12.* - fastapi - httpx @@ -4852,12 +4968,12 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 105223218 - timestamp: 1737523349072 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012205-release.conda + size: 105954416 + timestamp: 1737782482303 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012505-release.conda noarch: python - sha256: 31bce03569c241ade0a344f1fe1a683f928fe367ae57147b3e316783631822fe - md5: c54b5f7d0d777b8995e38978d8626ffc + sha256: 906a374c4b22380993352480333cd5fc9c1a2e2179ab2e7ea65abc3bd54fc35e + md5: 3109b109f417bff02b27ff1cc78239ae depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -4867,8 +4983,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130797 - timestamp: 1737524122352 + size: 130805 + timestamp: 1737782253440 - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda sha256: 78c1bbe1723449c52b7a9df1af2ee5f005209f67e40b6e1d3c7619127c43b1c7 md5: 592132998493b3ff25fd7479396e8351 @@ -4878,18 +4994,18 @@ packages: license_family: MIT size: 14465 timestamp: 1733255681319 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025012205-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025012505-release.conda noarch: python - sha256: 78e2818c9d17321c5fe73f9dca3d7a9c51ad989c00f8ea9721deb94a4f03800e - md5: ca3c9282adb4a04dbd02f3ab8e73445c + sha256: 6cba6b01c693678b0e48d5428788d3734e885f6efc911b345fae474e4405460f + md5: 16521d51e47d4d67cf1a42351687f6b8 depends: - - max-core ==25.1.0.dev2025012205 release + - max-core ==25.1.0.dev2025012505 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22925 - timestamp: 1737524122353 + size: 22934 + timestamp: 1737782253442 - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py312h178313f_2.conda sha256: b05bc8252a6e957bf4a776ed5e0e61d1ba88cdc46ccb55890c72cc58b10371f4 md5: 5b5e3267d915a107eca793d52e1b780a @@ -5015,6 +5131,43 @@ packages: license: X11 AND BSD-3-Clause size: 796754 timestamp: 1736683572099 +- conda: https://conda.anaconda.org/conda-forge/linux-64/nlohmann_json-3.11.3-he02047a_1.conda + sha256: ce4bcced4f8eea71b7cac8bc3daac097abf7a5792f278cd811dedada199500c1 + md5: e46f7ac4917215b49df2ea09a694a3fa + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 122743 + timestamp: 1723652407663 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/nlohmann_json-3.11.3-h0a1ffab_1.conda + sha256: c90b1f11fc337d90a9e4c5aeeacac1418c5ba6a195097086566d38bb2ecf0f24 + md5: f2bd10ff23ab5c87327439c4499b3f3e + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 122755 + timestamp: 1723652622631 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/nlohmann_json-3.11.3-h00cdb27_1.conda + sha256: 3f4e6a4fa074bb297855f8111ab974dab6d9f98b7d4317d4dd46f8687ee2363b + md5: d2dee849c806430eee64d3acc98ce090 + depends: + - __osx >=11.0 + - libcxx >=16 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 123250 + timestamp: 1723652704997 - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda sha256: fe3459c75cf84dcef6ef14efcc4adb0ade66038ddd27cadb894f34f4797687d8 md5: d8285bea2a350f63fab23bf460221f3f @@ -5473,6 +5626,52 @@ packages: license_family: MIT size: 20448 timestamp: 1733232756001 +- conda: https://conda.anaconda.org/conda-forge/linux-64/prometheus-cpp-1.3.0-ha5d0236_0.conda + sha256: 013669433eb447548f21c3c6b16b2ed64356f726b5f77c1b39d5ba17a8a4b8bc + md5: a83f6a2fdc079e643237887a37460668 + depends: + - __glibc >=2.17,<3.0.a0 + - libcurl >=8.10.1,<9.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - zlib + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 199544 + timestamp: 1730769112346 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/prometheus-cpp-1.3.0-h7938499_0.conda + sha256: 9350d7bbc3982a732ff13a7fd17b585509e3b7d0191ac7b810cc3224868e3648 + md5: 10f4301290e51c49979ff98d1bdf2556 + depends: + - libcurl >=8.10.1,<9.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - zlib + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 211335 + timestamp: 1730769181127 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/prometheus-cpp-1.3.0-h0967b3e_0.conda + sha256: 851a77ae1a8e90db9b9f3c4466abea7afb52713c3d98ceb0d37ba6ff27df2eff + md5: 7172339b49c94275ba42fec3eaeda34f + depends: + - __osx >=11.0 + - libcurl >=8.10.1,<9.0a0 + - libcxx >=18 + - libzlib >=1.3.1,<2.0a0 + - zlib + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 173220 + timestamp: 1730769371051 - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda sha256: bc8f00d5155deb7b47702cb8370f233935704100dbc23e30747c161d1b6cf3ab md5: 3e01e386307acc60b2f89af0b2e161aa @@ -5482,9 +5681,9 @@ packages: license_family: Apache size: 49002 timestamp: 1733327434163 -- conda: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.1-py312h66e93f0_0.conda - sha256: 5771311fb5ded614ca349c92579a0b752af55a310f40b71fc533e20625965391 - md5: 55d5742a696d7da1c1262e99b6217ceb +- conda: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.1-py312h178313f_1.conda + sha256: 6d5ff6490c53e14591b70924711fe7bd70eb7fbeeeb1cbd9ed2f6d794ec8c4eb + md5: 349635694b4df27336bc15a49e9220e9 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -5494,11 +5693,11 @@ packages: platform: linux license: Apache-2.0 license_family: APACHE - size: 52747 - timestamp: 1733391916349 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.2.1-py312hb2c0f52_0.conda - sha256: c7f62c11ed929ccf1f3d4a1e200e28be01e8d0e0786bf8f76c5893f2ea681e1b - md5: 50ab8953e7ff1333a4a47cda32e68123 + size: 52947 + timestamp: 1737635699390 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.2.1-py312hcc812fe_1.conda + sha256: d759d8ab9c060b42cabf6312b9a04aa590daecabf1dd4e35731f4bc1b5c388bb + md5: 533b07e9fd835938f465225613825eee depends: - libgcc >=13 - python >=3.12,<3.13.0a0 @@ -5508,11 +5707,11 @@ packages: platform: linux license: Apache-2.0 license_family: APACHE - size: 52484 - timestamp: 1733391993461 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.1-py312hea69d52_0.conda - sha256: f8c266c494aa1e4cfb8bf0b6fca060044b2f3d65afe4c5062ebeea382e77aa6d - md5: c84e3dd97fe25a17322c4a0f670c6750 + size: 52776 + timestamp: 1737635802135 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.1-py312h998013c_1.conda + sha256: 96145760baad111d7ae4213ea8f8cc035cf33b001f5ff37d92268e4d28b0941d + md5: 83678928c58c9ae76778a435b6c7a94a depends: - __osx >=11.0 - python >=3.12,<3.13.0a0 @@ -5522,8 +5721,8 @@ packages: platform: osx license: Apache-2.0 license_family: APACHE - size: 48225 - timestamp: 1733392308901 + size: 50942 + timestamp: 1737635896600 - conda: https://conda.anaconda.org/conda-forge/linux-64/protobuf-5.28.3-py312h2ec8cdc_0.conda sha256: acb2e0ee948e3941f8ed191cb77f654e06538638aed8ccd71cbc78a15242ebbb md5: 9d7e427d159c1b2d516cc047ff177c48 @@ -5626,23 +5825,23 @@ packages: license_family: APACHE size: 25289 timestamp: 1737128438818 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-18.1.0-py312h8025657_0.conda - sha256: 49db959887cb89b44053a44a98d0f35644fc0b2003587492f02b56046de0b60a - md5: 9bb7d32e96a5dcb5ea7fd90a11a83656 - depends: - - libarrow-acero 18.1.0.* - - libarrow-dataset 18.1.0.* - - libarrow-substrait 18.1.0.* - - libparquet 18.1.0.* - - pyarrow-core 18.1.0 *_0_* +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-19.0.0-py312h8025657_0.conda + sha256: 3a73d3d15031586214381edf5410a6920c1f75f52a8d8b994722b106d9a50150 + md5: a86fa414c44b7e3ee054cc385c79a822 + depends: + - libarrow-acero 19.0.0.* + - libarrow-dataset 19.0.0.* + - libarrow-substrait 19.0.0.* + - libparquet 19.0.0.* + - pyarrow-core 19.0.0 *_0_* - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 arch: aarch64 platform: linux license: Apache-2.0 license_family: APACHE - size: 25374 - timestamp: 1732611006864 + size: 25496 + timestamp: 1737129041038 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-19.0.0-py312h1f38498_0.conda sha256: 9d693901833c2ff4e5d67e1f2f6df50f699e1cec2f580c26d42299654830855a md5: bd5e025292ff1127aa1534b59e55c4d0 @@ -5680,11 +5879,11 @@ packages: license_family: APACHE size: 5230953 timestamp: 1737128097002 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-18.1.0-py312h66f7834_0_cpu.conda - sha256: e7eb062145be554c23dfefa0ebe8c5f6ae8c59635117a6921e66403d6addcda3 - md5: 3390c8b8f57e85506c92a37cf750bdd7 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-19.0.0-py312h66f7834_0_cpu.conda + sha256: 17ff419abfe9596f77857dfa635538200427d87283c28e64920d10d6533ec30e + md5: ce51dbcfeae8709f0b94c78eabe7cf5e depends: - - libarrow 18.1.0.* *cpu + - libarrow 19.0.0.* *cpu - libgcc >=13 - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 @@ -5698,8 +5897,8 @@ packages: platform: linux license: Apache-2.0 license_family: APACHE - size: 4406662 - timestamp: 1732610939832 + size: 5023430 + timestamp: 1737627066264 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-19.0.0-py312hc40f475_0_cpu.conda sha256: 6303fe1c3e6d36273b72f0eeb3f19897d2376d57fe8c757f55dcbfbaa5cd6840 md5: df502157843a7b1d90af04803767be15 @@ -5730,9 +5929,9 @@ packages: license_family: BSD size: 110100 timestamp: 1733195786147 -- conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.5-pyh3cfb1c2_0.conda - sha256: 0f32c30ddc610cd1113335d8b4f311f20f4d72754b7c1a5d0d9493f597cf11d2 - md5: e8ea30925c8271c4128375810d7d3d7a +- conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.6-pyh3cfb1c2_0.conda + sha256: 9a78801a28959edeb945e8270a4e666577b52fac0cf4e35f88cf122f73d83e75 + md5: c69f87041cf24dfc8cb6bf64ca7133c7 depends: - annotated-types >=0.6.0 - pydantic-core 2.27.2 @@ -5741,8 +5940,8 @@ packages: - typing_extensions >=4.12.2 license: MIT license_family: MIT - size: 296805 - timestamp: 1736458364196 + size: 296841 + timestamp: 1737761472006 - conda: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.27.2-py312h12e396e_0.conda sha256: 81602a4592ad2ac1a1cb57372fd25214e63b1c477d5818b0c21cde0f1f85c001 md5: bae01b2563030c085f5158c518b84e86 @@ -5814,9 +6013,9 @@ packages: license_family: BSD size: 888600 timestamp: 1736243563082 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pyinstrument-5.0.0-py312h66e93f0_0.conda - sha256: 8a006507a4003fb01eeee2f9ba79f994478694766ea3b445273da5c11cf8e763 - md5: 798f42d9bfdf125dc80ffbec0e96e0b6 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyinstrument-5.0.1-py312h66e93f0_0.conda + sha256: 3f1c0bc95f2c46dcd107f44cf742ee1fa40ba22e244f01083654743bbbcf28f3 + md5: 9f1d7b421e4c8fd00009490613db64d4 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -5826,11 +6025,11 @@ packages: platform: linux license: BSD-3-Clause license_family: BSD - size: 182021 - timestamp: 1728714164706 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyinstrument-5.0.0-py312hb2c0f52_0.conda - sha256: 7967b94b8f0ff75847302444e9c43ac11a391d74da24cb14fba1049fac9e5ba9 - md5: 5274663cb05dfbe316db50af6da4389f + size: 182333 + timestamp: 1737774425235 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyinstrument-5.0.1-py312hb2c0f52_0.conda + sha256: 16af5db4359078bcb526291855bf1075ab035a96fe4e8d5cc4b0b5c8cba89b9a + md5: 90f5e9e04b1ecf25ad3f28b606f63742 depends: - libgcc >=13 - python >=3.12,<3.13.0a0 @@ -5840,11 +6039,11 @@ packages: platform: linux license: BSD-3-Clause license_family: BSD - size: 183141 - timestamp: 1728714267954 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyinstrument-5.0.0-py312h0bf5046_0.conda - sha256: 6879d52fb0ec2258e2850476786a652c394220d53883c53691ed5390183ae925 - md5: f0e4a98d54477083ddc9d2f33507f848 + size: 183988 + timestamp: 1737774588265 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyinstrument-5.0.1-py312hea69d52_0.conda + sha256: 5e7de2f908af22bbd8cf3562ce5ebf65ad6c0d8e40038f90b56f4db750639ce2 + md5: 07b0eb9b6bd91dfa87f95032825690dc depends: - __osx >=11.0 - python >=3.12,<3.13.0a0 @@ -5854,8 +6053,8 @@ packages: platform: osx license: BSD-3-Clause license_family: BSD - size: 181512 - timestamp: 1728714205508 + size: 182524 + timestamp: 1737774624030 - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda sha256: ba3b032fa52709ce0d9fd388f63d330a026754587a2f461117cac9ab73d8d0d8 md5: 461219d1a5bd61342293efa2c0c90eac @@ -5990,6 +6189,7 @@ packages: depends: - python >=3.9 license: Apache-2.0 + license_family: APACHE size: 143794 timestamp: 1737541204030 - conda: https://conda.anaconda.org/conda-forge/linux-64/python-xxhash-3.5.0-py312h66e93f0_1.conda @@ -6474,17 +6674,17 @@ packages: license_family: BSD size: 15324 timestamp: 1735126414893 -- conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyha770c72_1.conda - sha256: b74fc76107487eb26624c01fc55bfab7eed03ae82e003333c86d8a1eeac53672 - md5: 0207dac04ae2200701fab697f0aaaac4 +- conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.45.2-pyha770c72_0.conda + sha256: 2c429dbbd5e7256517ef6cdfc30664b0c0e87f90f3c526afe3b97681aafb5623 + md5: acd5901cdd0365e18129f4748e524615 depends: - - anyio >=3.4.0,<5 + - anyio >=3.6.2,<5 - python >=3.9 - typing_extensions >=3.10.0 license: BSD-3-Clause license_family: BSD - size: 58838 - timestamp: 1733344472634 + size: 58040 + timestamp: 1736016898891 - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda sha256: e0569c9caa68bf476bead1bed3d79650bb080b532c64a4af7d8ca286c08dea4e md5: d453b98d9c83e71da0741bb0ff4d76bc @@ -7168,6 +7368,43 @@ packages: license_family: MIT size: 21809 timestamp: 1732827613585 +- conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.1-hb9d3cd8_2.conda + sha256: 5d7c0e5f0005f74112a34a7425179f4eb6e73c92f5d109e6af4ddeca407c92ab + md5: c9f075ab2f33b3bbee9e62d4ad0a6cd8 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libzlib 1.3.1 hb9d3cd8_2 + arch: x86_64 + platform: linux + license: Zlib + license_family: Other + size: 92286 + timestamp: 1727963153079 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zlib-1.3.1-h86ecc28_2.conda + sha256: b4f649aa3ecdae384d5dad7074e198bff120edd3dfb816588e31738fc6d627b1 + md5: bc230abb5d21b63ff4799b0e75204783 + depends: + - libgcc >=13 + - libzlib 1.3.1 h86ecc28_2 + arch: aarch64 + platform: linux + license: Zlib + license_family: Other + size: 95582 + timestamp: 1727963203597 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zlib-1.3.1-h8359307_2.conda + sha256: 58f8860756680a4831c1bf4f294e2354d187f2e999791d53b1941834c4b37430 + md5: e3170d898ca6cb48f1bb567afb92f775 + depends: + - __osx >=11.0 + - libzlib 1.3.1 h8359307_2 + arch: arm64 + platform: osx + license: Zlib + license_family: Other + size: 77606 + timestamp: 1727963209370 - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312hef9b889_1.conda sha256: b97015e146437283f2213ff0e95abdc8e2480150634d81fbae6b96ee09f5e50b md5: 8b7069e9792ee4e5b4919a7a306d2e67 diff --git a/magic.lock b/magic.lock index 552aaf8214..238aac50c5 100644 --- a/magic.lock +++ b/magic.lock @@ -26,7 +26,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.2-h4e1184b_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-h4e1184b_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.9-he0e7f3f_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-h4d475cb_6.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.489-h4d475cb_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.10.0-h113e628_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.13.0-h3cf044e_1.conda @@ -49,23 +49,23 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda - 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-0.115.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.17.0-pyhd8ed1ab_0.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 + - conda: https://conda.anaconda.org/conda-forge/linux-64/frozenlist-1.5.0-py312h178313f_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.12.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gflags-2.2.2-h5888daf_1005.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/glog-0.7.1-hbabe93e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/httptools-0.6.4-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.27.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.5-pyhd8ed1ab_0.conda @@ -77,10 +77,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-19.0.0-hce2e470_3_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-19.0.0-hcb10f89_3_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-19.0.0-hcb10f89_3_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-19.0.0-h08228c5_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-19.0.0-h00a82cf_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-19.0.0-hcb10f89_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-19.0.0-hcb10f89_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-19.0.0-h08228c5_7_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-26_linux64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hb9d3cd8_2.conda @@ -99,8 +99,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hd5240d6_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h77fa898_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.33.0-h2b5623c_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.33.0-h0121fbd_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.34.0-h2b5623c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.34.0-h0121fbd_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.67.1-h25350d4_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-hd590300_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda @@ -109,7 +109,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.28-pthreads_h94d23a6_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-19.0.0-h081d1f1_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-1.18.0-hfcad708_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-headers-1.18.0-ha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-19.0.0-h081d1f1_7_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.45-h943b412_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_2.conda @@ -132,16 +134,17 @@ 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-25.1.0.dev2025012205-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025012205-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025012205-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025012505-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025012505-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025012505-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012505-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-25.1.0.dev2025012205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025012505-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-h2d0b736_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/nlohmann_json-3.11.3-he02047a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.3-h5fbd93e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.0-h7b32b05_1.conda @@ -158,18 +161,19 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-11.1.0-py312h80c1187_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/prometheus-cpp-1.3.0-ha5d0236_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.1-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.1-py312h178313f_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/protobuf-5.28.3-py312h2ec8cdc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-19.0.0-py312h7900ff3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-19.0.0-py312h01725c0_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.5-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.6-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.27.2-py312h12e396e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.7.1-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pyinstrument-5.0.0-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyinstrument-5.0.1-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.8-h9e4cc4f_1_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda @@ -195,7 +199,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-h8bd8927_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.2.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.45.2-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.21.0-py312h8360d73_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda @@ -222,6 +226,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.18.3-py312h178313f_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.1-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312hef9b889_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda linux-aarch64: @@ -244,7 +249,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.2-h0f0193d_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h0f0193d_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.9-hab3ce66_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h88461e4_6.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.489-h88461e4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-core-cpp-1.14.0-h1887c18_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-identity-cpp-1.10.0-h47b0b28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-blobs-cpp-12.13.0-h185ecfd_1.conda @@ -267,23 +272,23 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda - 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-0.115.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.17.0-pyhd8ed1ab_0.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 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/frozenlist-1.5.0-py312hcc812fe_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.12.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gflags-2.2.2-h5ad3122_1005.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/glog-0.7.1-h468a4a4_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/httptools-0.6.4-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.27.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_1.conda @@ -296,10 +301,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.0.0-h4de3ea5_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h18dbdb1_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-h4065667_12_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h3b568fd_12_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h3b568fd_12_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h1e9d426_12_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-19.0.0-h03ebaaf_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-19.0.0-h3b568fd_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-19.0.0-h3b568fd_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-19.0.0-h1e9d426_7_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-26_linuxaarch64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlicommon-1.1.0-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlidec-1.1.0-h86ecc28_2.conda @@ -328,7 +333,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnghttp2-1.64.0-hc8609a4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.28-pthreads_h9d3fd7e_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-hfc78867_12_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopentelemetry-cpp-1.18.0-h60b47f9_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopentelemetry-cpp-headers-1.18.0-h8af1aa0_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-19.0.0-hfc78867_7_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.45-hec79eb8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.3-h44a3b7b_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_2.conda @@ -351,16 +358,17 @@ 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-25.1.0.dev2025012205-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025012205-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025012205-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025012505-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025012505-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025012505-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012505-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-25.1.0.dev2025012205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025012505-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-ha32ae93_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/nlohmann_json-3.11.3-h0a1ffab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openjpeg-2.5.3-h3f56577_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.0-hd08dc88_1.conda @@ -377,18 +385,19 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pillow-11.1.0-py312h719f0cf_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/prometheus-cpp-1.3.0-h7938499_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.2.1-py312hb2c0f52_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.2.1-py312hcc812fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/protobuf-5.28.3-py312h6f74592_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pthread-stubs-0.4-h86ecc28_1002.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-18.1.0-py312h8025657_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-18.1.0-py312h66f7834_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-19.0.0-py312h8025657_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-19.0.0-py312h66f7834_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.5-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.6-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pydantic-core-2.27.2-py312h8cbf658_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.7.1-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyinstrument-5.0.0-py312hb2c0f52_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyinstrument-5.0.1-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.8-h1683364_1_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda @@ -414,7 +423,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-hd4fb6f5_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.2.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.45.2-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.21.0-py312ha0d6ea1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py312h52516f5_0.conda @@ -441,6 +450,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.18.3-py312hcc812fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zeromq-4.3.5-h5efb499_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zlib-1.3.1-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstandard-0.23.0-py312hb698573_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.6-h02f22dd_0.conda osx-arm64: @@ -462,7 +472,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.2-hc8a0bd2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-hc8a0bd2_4.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.9-ha81f72f_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-h0e5014b_6.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.489-h0e5014b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.14.0-hd50102c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.10.0-hc602bab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-blobs-cpp-12.13.0-h7585a09_1.conda @@ -485,23 +495,23 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda - 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-0.115.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.17.0-pyhd8ed1ab_0.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 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/frozenlist-1.5.0-py312h998013c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.12.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gflags-2.2.2-hf9b8971_1005.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/glog-0.7.1-heb240a5_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/httptools-0.6.4-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.27.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_1.conda @@ -512,10 +522,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.16-ha0e7c42_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_h07bc746_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-19.0.0-hd1aa4b5_4_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-19.0.0-hf07054f_4_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-19.0.0-hf07054f_4_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-19.0.0-h4239455_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-19.0.0-h819e3af_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-19.0.0-hf07054f_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-19.0.0-hf07054f_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-19.0.0-h4239455_7_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-26_osxarm64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.1.0-hd74edd7_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.1.0-hd74edd7_2.conda @@ -541,7 +551,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.3-h39f12f2_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.64.0-h6d7220d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.28-openmp_hf332438_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-19.0.0-h636d7b7_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopentelemetry-cpp-1.18.0-h0c05b2d_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopentelemetry-cpp-headers-1.18.0-hce30654_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-19.0.0-h636d7b7_7_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.45-h3783ad8_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.3-h3bd63a1_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h07bc746_2.conda @@ -561,16 +573,17 @@ 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-25.1.0.dev2025012205-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025012205-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025012205-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025012505-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025012505-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025012505-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012505-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-25.1.0.dev2025012205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025012505-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 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/nlohmann_json-3.11.3-h00cdb27_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openjpeg-2.5.3-h8a3d83b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.0-h81ee809_1.conda @@ -587,18 +600,19 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-11.1.0-py312h50aef2c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/prometheus-cpp-1.3.0-h0967b3e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.1-py312hea69d52_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.1-py312h998013c_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/protobuf-5.28.3-py312hd8f9ff3_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pthread-stubs-0.4-hd74edd7_1002.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-19.0.0-py312h1f38498_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-19.0.0-py312hc40f475_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.5-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.6-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.27.2-py312hcd83bfe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.7.1-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyinstrument-5.0.0-py312h0bf5046_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyinstrument-5.0.1-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.8-hc22306f_1_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda @@ -623,7 +637,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-h98b9ce2_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.2.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.45.2-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.21.0-py312hf3e4074_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda @@ -650,6 +664,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.18.3-py312h998013c_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zlib-1.3.1-h8359307_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py312h15fbf35_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.6-hb46c0d2_0.conda packages: @@ -1336,9 +1351,9 @@ packages: license_family: Apache size: 235976 timestamp: 1737565563139 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-h4d475cb_6.conda - sha256: 2309d96d537b5c3810c6e9fbf5b6bb7e06ce907a609d172063ab504b2cc67f30 - md5: 6139e84bbb6fdb27ca49c2981613a5fa +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.489-h4d475cb_0.conda + sha256: 08d6b7d2ed17bfcc7deb903c7751278ee434abdb27e3be0dceb561f30f030c75 + md5: b775e9f46dfa94b228a81d8e8c6d8b1d depends: - __glibc >=2.17,<3.0.a0 - aws-c-common >=0.10.6,<0.10.7.0a0 @@ -1354,11 +1369,11 @@ packages: platform: linux license: Apache-2.0 license_family: Apache - size: 3069914 - timestamp: 1737049585807 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h88461e4_6.conda - sha256: f97e071ffb87bc33923f798761ec6a854614ce193913d34d3248515d18357baa - md5: 0d7f1ee2e5572bf9d1fd78f0f2ab6f6b + size: 3144364 + timestamp: 1737576036746 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.489-h88461e4_0.conda + sha256: 88353e82b053763168cddbe2f88048defc1c97b3dad0966fbe8c4fa7aa592c7e + md5: e725d8fa77a6a5f38a78c5de914a5f40 depends: - aws-c-common >=0.10.6,<0.10.7.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 @@ -1373,11 +1388,11 @@ packages: platform: linux license: Apache-2.0 license_family: Apache - size: 2919798 - timestamp: 1737049659061 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-h0e5014b_6.conda - sha256: 8c21ce4692d1631b96adea099d7c2b905fc5d078db63bf754d85600dcf184651 - md5: a3b7b9a81d8c6a8f963f619d9e362c39 + size: 3015109 + timestamp: 1737575993030 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.489-h0e5014b_0.conda + sha256: d82451530ddf363d8bb31a8a7391bb9699f745e940ace91d78c0e6170deef03c + md5: 156cfb45a1bb8cffc81e59047bb34f51 depends: - __osx >=11.0 - aws-c-common >=0.10.6,<0.10.7.0a0 @@ -1392,8 +1407,8 @@ packages: platform: osx license: Apache-2.0 license_family: Apache - size: 2834057 - timestamp: 1737126583846 + size: 2874126 + timestamp: 1737577023623 - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda sha256: fe07debdb089a3db17f40a7f20d283d75284bb4fc269ef727b8ba6fc93f7cb5a md5: 0a8838771cc2e985cd295e01ae83baf1 @@ -1937,24 +1952,25 @@ packages: license: MIT and PSF-2.0 size: 20486 timestamp: 1733208916977 -- conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.6-pyhd8ed1ab_0.conda - sha256: d7826d537c667093c9de96411a09585a8d620c84a830a0195e58e9a0df45f018 - md5: 1b1e0c97830cdf75f1f371bd467ab657 +- conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.7-pyh29332c3_1.conda + sha256: ac0c357b216e0b37d1a31af200548783d9e5a0413caaee92c5184dbef63b578e + md5: b53637ce62c4bcf3123a2a40f6a3824b depends: + - python >=3.9 + - starlette >=0.40.0,<0.46.0 + - typing_extensions >=4.8.0 + - pydantic >=1.7.4,!=1.8,!=1.8.1,!=2.0.0,!=2.0.1,!=2.1.0,<3.0.0 - email_validator >=2.0.0 - fastapi-cli >=0.0.5 - httpx >=0.23.0 - - jinja2 >=2.11.2 - - pydantic >=1.7.4,!=1.8,!=1.8.1,!=2.0.0,!=2.0.1,!=2.1.0,<3.0.0 - - python >=3.9 - - python-multipart >=0.0.7 - - starlette >=0.40.0,<0.42.0 - - typing_extensions >=4.8.0 + - jinja2 >=3.1.5 + - python-multipart >=0.0.18 - uvicorn-standard >=0.12.0 + - python license: MIT license_family: MIT - size: 73084 - timestamp: 1733362427885 + size: 77890 + timestamp: 1737647037273 - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.7-pyhd8ed1ab_0.conda sha256: 300683731013b7221922339cd40430bb3c2ddeeb658fd7e37f5099ffe64e4db0 md5: d960e0ea9e1c561aa928f6c4439f04c7 @@ -2010,9 +2026,9 @@ packages: license: GPL-2.0-only OR FTL size: 596430 timestamp: 1694616332835 -- conda: https://conda.anaconda.org/conda-forge/linux-64/frozenlist-1.5.0-py312h66e93f0_0.conda - sha256: 7e0c12983b20f2816b3712729b5a35ecb7ee152132ca7cf805427c62395ea823 - md5: f98e36c96b2c66d9043187179ddb04f4 +- conda: https://conda.anaconda.org/conda-forge/linux-64/frozenlist-1.5.0-py312h178313f_1.conda + sha256: 501e20626798b6d7f130f4db0fb02c0385d8f4c11ca525925602a4208afb343f + md5: fb986e1c089021979dc79606af78ef8f depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -2022,11 +2038,11 @@ packages: platform: linux license: Apache-2.0 license_family: APACHE - size: 60968 - timestamp: 1729699568442 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/frozenlist-1.5.0-py312hb2c0f52_0.conda - sha256: b0a9ff3e71452eed70877b2f3175d41cd85070da6deac381c5f3f61e1f19bccb - md5: 62fc11b0738ca15e0dd19b60cf280d12 + size: 60939 + timestamp: 1737645356438 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/frozenlist-1.5.0-py312hcc812fe_1.conda + sha256: 84895c5e207e0cb2044f3607fb36b82eb8cb45f0a009d03dc04c777ed975757d + md5: 9090bf5c43e8011fb2e9a82a1db20cc3 depends: - libgcc >=13 - python >=3.12,<3.13.0a0 @@ -2036,11 +2052,11 @@ packages: platform: linux license: Apache-2.0 license_family: APACHE - size: 59967 - timestamp: 1729699642726 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/frozenlist-1.5.0-py312h0bf5046_0.conda - sha256: 44d6d6b332421e621c029fb149f12dba1ccb5ed6ac632e2e807a9d92d6cb2864 - md5: 7960352935cc95ac23883c9b8c97f2ff + size: 60472 + timestamp: 1737645511278 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/frozenlist-1.5.0-py312h998013c_1.conda + sha256: d503ac8c050abdbd129253973f23be34944978d510de78ef5a3e6aa1e3d9552d + md5: 5eb3715c7e3fa9b533361375bfefe6ee depends: - __osx >=11.0 - python >=3.12,<3.13.0a0 @@ -2050,8 +2066,8 @@ packages: platform: osx license: Apache-2.0 license_family: APACHE - size: 53366 - timestamp: 1729699762631 + size: 57256 + timestamp: 1737645503377 - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.12.0-pyhd8ed1ab_0.conda sha256: 3320970c4604989eadf908397a9475f9e6a96a773c185915111399cbfbe47817 md5: e041ad4c43ab5e10c74587f95378ebc7 @@ -2168,15 +2184,15 @@ packages: license_family: MIT size: 52000 timestamp: 1733298867359 -- conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda - sha256: ec89b7e5b8aa2f0219f666084446e1fb7b54545861e9caa892acb24d125761b5 - md5: 2aa5ff7fa34a81b9196532c84c10d865 +- conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda + sha256: 6ad78a180576c706aabeb5b4c8ceb97c0cb25f1e112d76495bff23e3779948ba + md5: 0a802cb9888dd14eeefc611f05c40b6e depends: - python >=3.9 license: MIT license_family: MIT - size: 29412 - timestamp: 1733299296857 + size: 30731 + timestamp: 1737618390337 - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda sha256: c84d012a245171f3ed666a8bf9319580c269b7843ffa79f26468842da3abd5df md5: 2ca8e6dbc86525c8b95e3c0ffa26442e @@ -2263,15 +2279,15 @@ packages: license_family: APACHE size: 278363 timestamp: 1736350219225 -- conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda - sha256: e91c6ef09d076e1d9a02819cd00fa7ee18ecf30cdd667605c853980216584d1b - md5: 566e75c90c1d0c8c459eb0ad9833dc7a +- conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda + sha256: 77af6f5fe8b62ca07d09ac60127a30d9069fdc3c68d6b256754d0ffb1f7779f8 + md5: 8e6923fc12f1fe8f8c4e5c9f343256ac depends: - python >=3.9 license: MIT license_family: MIT - size: 17239 - timestamp: 1733298862681 + size: 17397 + timestamp: 1737618427549 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda sha256: 813298f2e54ef087dbfc9cc2e56e08ded41de65cff34c639cc8ba4e27e4540c9 md5: 268203e8b983fddb6412b36f2024e75c @@ -2561,28 +2577,29 @@ packages: license_family: Apache size: 1178260 timestamp: 1736008642885 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-19.0.0-hce2e470_3_cpu.conda - build_number: 3 - sha256: 3b85b78a52ce673798e3c880fa41b818554912e722e81ca20cf95ba9257f13f0 - md5: a50ba9a0789061ea395a47a23d6a7734 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-19.0.0-h00a82cf_7_cpu.conda + build_number: 7 + sha256: 8b401a256e4632ab6c1ea8d3cfb16d7c8ff3b0fe5af7cd474202a369c63dc74c + md5: 8d553fa6a138f369ed94b8b1a76f1e77 depends: - __glibc >=2.17,<3.0.a0 - aws-crt-cpp >=0.29.9,<0.29.10.0a0 - - aws-sdk-cpp >=1.11.458,<1.11.459.0a0 + - aws-sdk-cpp >=1.11.489,<1.11.490.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-identity-cpp >=1.10.0,<1.10.1.0a0 - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 - bzip2 >=1.0.8,<2.0a0 - - gflags >=2.2.2,<2.3.0a0 - glog >=0.7.1,<0.8.0a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - libbrotlidec >=1.1.0,<1.2.0a0 - libbrotlienc >=1.1.0,<1.2.0a0 - libgcc >=13 - - libgoogle-cloud >=2.33.0,<2.34.0a0 - - libgoogle-cloud-storage >=2.33.0,<2.34.0a0 + - libgoogle-cloud >=2.34.0,<2.35.0a0 + - libgoogle-cloud-storage >=2.34.0,<2.35.0a0 + - libopentelemetry-cpp >=1.18.0,<1.19.0a0 + - libprotobuf >=5.28.3,<5.28.4.0a0 - libre2-11 >=2024.7.2 - libstdcxx >=13 - libutf8proc >=2.10.0,<2.11.0a0 @@ -2593,27 +2610,26 @@ packages: - snappy >=1.2.1,<1.3.0a0 - zstd >=1.5.6,<1.6.0a0 constrains: + - apache-arrow-proc =*=cpu - arrow-cpp <0.0a0 - parquet-cpp <0.0a0 - - apache-arrow-proc =*=cpu arch: x86_64 platform: linux license: Apache-2.0 - size: 8899665 - timestamp: 1737343852413 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-h4065667_12_cpu.conda - build_number: 12 - sha256: 0ac8aab370ef7a21e912cc312e5cbfa59afea8e004f5a372f2f25f96de0c9e9a - md5: 4789bb7ae93fe12bfd81169157896f49 + size: 8979130 + timestamp: 1737757402544 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-19.0.0-h03ebaaf_7_cpu.conda + build_number: 7 + sha256: f029b7fbed445a2cb08b95686e9a9cb30c04a10998ef632c2cf84fd0c0d1e424 + md5: b94870200ac053eff3dda878d523f1d1 depends: - aws-crt-cpp >=0.29.9,<0.29.10.0a0 - - aws-sdk-cpp >=1.11.458,<1.11.459.0a0 + - aws-sdk-cpp >=1.11.489,<1.11.490.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-identity-cpp >=1.10.0,<1.10.1.0a0 - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 - bzip2 >=1.0.8,<2.0a0 - - gflags >=2.2.2,<2.3.0a0 - glog >=0.7.1,<0.8.0a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 @@ -2622,6 +2638,8 @@ packages: - libgcc >=13 - libgoogle-cloud >=2.34.0,<2.35.0a0 - libgoogle-cloud-storage >=2.34.0,<2.35.0a0 + - libopentelemetry-cpp >=1.18.0,<1.19.0a0 + - libprotobuf >=5.28.3,<5.28.4.0a0 - libre2-11 >=2024.7.2 - libstdcxx >=13 - libutf8proc >=2.10.0,<2.11.0a0 @@ -2638,16 +2656,16 @@ packages: arch: aarch64 platform: linux license: Apache-2.0 - size: 8051570 - timestamp: 1737451538096 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-19.0.0-hd1aa4b5_4_cpu.conda - build_number: 4 - sha256: bf027b2e77b75b71b5213131fc4b06bbca6f1e195fde62090343e0a808d08bbe - md5: 94c2bcca143c043f8083a1f275de3caf + size: 8210159 + timestamp: 1737757741310 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-19.0.0-h819e3af_7_cpu.conda + build_number: 7 + sha256: e5e370673b9fe9459a826f474dc470b59fd6744fa652dd534f7ef722cd9be39c + md5: 3cb4f805d9742272591795d487786f2d depends: - __osx >=11.0 - aws-crt-cpp >=0.29.9,<0.29.10.0a0 - - aws-sdk-cpp >=1.11.458,<1.11.459.0a0 + - aws-sdk-cpp >=1.11.489,<1.11.490.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-identity-cpp >=1.10.0,<1.10.1.0a0 - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 @@ -2661,6 +2679,8 @@ packages: - libcxx >=18 - libgoogle-cloud >=2.34.0,<2.35.0a0 - libgoogle-cloud-storage >=2.34.0,<2.35.0a0 + - libopentelemetry-cpp >=1.18.0,<1.19.0a0 + - libprotobuf >=5.28.3,<5.28.4.0a0 - libre2-11 >=2024.7.2 - libutf8proc >=2.10.0,<2.11.0a0 - libzlib >=1.3.1,<2.0a0 @@ -2671,154 +2691,154 @@ packages: - zstd >=1.5.6,<1.6.0a0 constrains: - parquet-cpp <0.0a0 - - arrow-cpp <0.0a0 - apache-arrow-proc =*=cpu + - arrow-cpp <0.0a0 arch: arm64 platform: osx license: Apache-2.0 - size: 5532664 - timestamp: 1737458545986 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-19.0.0-hcb10f89_3_cpu.conda - build_number: 3 - sha256: f4e4b14fc2aaaf0d0a16a3b4b4dcae84b1b77daa02754f0873901089ce786a49 - md5: 3e1e31382e9c6ecd0b24bd8f6ddb33ec + size: 5540329 + timestamp: 1737756116679 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-19.0.0-hcb10f89_7_cpu.conda + build_number: 7 + sha256: 7018394af408b4ce344c97cd6f97bc676708067a9d2d834bf091b74f13b41be4 + md5: de10e3323bfa9dd8929f7fbe23665883 depends: - __glibc >=2.17,<3.0.a0 - - libarrow 19.0.0 hce2e470_3_cpu + - libarrow 19.0.0 h00a82cf_7_cpu - libgcc >=13 - libstdcxx >=13 arch: x86_64 platform: linux license: Apache-2.0 - size: 618570 - timestamp: 1737343896206 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h3b568fd_12_cpu.conda - build_number: 12 - sha256: c93daa943342eb848e5a44d4f48749f96decbde7b0f7d830fe56d0d506c03576 - md5: 8ec3804980e19b70ebffbeb623ce084b + size: 637717 + timestamp: 1737757443960 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-19.0.0-h3b568fd_7_cpu.conda + build_number: 7 + sha256: 97911c3addb66033747e12c608ca32ce5c56d6d9f35674cfb97fff0ff4c7e926 + md5: d50c51a7d86454c90de667fcafb8c785 depends: - - libarrow 18.1.0 h4065667_12_cpu + - libarrow 19.0.0 h03ebaaf_7_cpu - libgcc >=13 - libstdcxx >=13 arch: aarch64 platform: linux license: Apache-2.0 - size: 579114 - timestamp: 1737451608994 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-19.0.0-hf07054f_4_cpu.conda - build_number: 4 - sha256: 40de7e71d9fd4b799c452b3a0328ea260a3871de621f5344fb39b7f48371df75 - md5: e3265f8ab44051131966bd6f7b07a6e3 + size: 602410 + timestamp: 1737757792970 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-19.0.0-hf07054f_7_cpu.conda + build_number: 7 + sha256: a716bd2c6106f0508e69800f73a9368f5b5fadba0cd1f7f7ac753bf43392bf4d + md5: a138208af40b21c840c1075f3bec5014 depends: - __osx >=11.0 - - libarrow 19.0.0 hd1aa4b5_4_cpu + - libarrow 19.0.0 h819e3af_7_cpu - libcxx >=18 arch: arm64 platform: osx license: Apache-2.0 - size: 481968 - timestamp: 1737458659266 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-19.0.0-hcb10f89_3_cpu.conda - build_number: 3 - sha256: c5cdf03d72d028e8af774aabd29cd92fb87f54cd579a9ffe77ad228c51faaa82 - md5: 1face9ff13ec61bfb065063d35fda864 + size: 499319 + timestamp: 1737756215547 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-19.0.0-hcb10f89_7_cpu.conda + build_number: 7 + sha256: 4f3864b3f004fc320f28ecc5bb47e4cd927f40ef8dc6a16bdef51b34f51da921 + md5: eddf039322781fee4d4137f50769511c depends: - __glibc >=2.17,<3.0.a0 - - libarrow 19.0.0 hce2e470_3_cpu - - libarrow-acero 19.0.0 hcb10f89_3_cpu + - libarrow 19.0.0 h00a82cf_7_cpu + - libarrow-acero 19.0.0 hcb10f89_7_cpu - libgcc >=13 - - libparquet 19.0.0 h081d1f1_3_cpu + - libparquet 19.0.0 h081d1f1_7_cpu - libstdcxx >=13 arch: x86_64 platform: linux license: Apache-2.0 - size: 585153 - timestamp: 1737344009570 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h3b568fd_12_cpu.conda - build_number: 12 - sha256: 40bbdb394db6f405e6fae56bcbfc88fa433130668d2b39d1f109b7d6ffb8be76 - md5: e9b9a9941d35dff0a168741bdd54877e + size: 605090 + timestamp: 1737757550128 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-19.0.0-h3b568fd_7_cpu.conda + build_number: 7 + sha256: e055430747eba48c99a7b1ebe0596e126a121eeffd6ba667c00554a0b2707839 + md5: 2d6208bc6ab9089ee1787d9abbefd172 depends: - - libarrow 18.1.0 h4065667_12_cpu - - libarrow-acero 18.1.0 h3b568fd_12_cpu + - libarrow 19.0.0 h03ebaaf_7_cpu + - libarrow-acero 19.0.0 h3b568fd_7_cpu - libgcc >=13 - - libparquet 18.1.0 hfc78867_12_cpu + - libparquet 19.0.0 hfc78867_7_cpu - libstdcxx >=13 arch: aarch64 platform: linux license: Apache-2.0 - size: 559928 - timestamp: 1737451706623 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-19.0.0-hf07054f_4_cpu.conda - build_number: 4 - sha256: c9b01193f3dc2855276a743aa2d107b3893d886dbc561944154acc4c61a9b4cb - md5: c6588e0236da980424ca0b288c893d1a + size: 580599 + timestamp: 1737757863901 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-19.0.0-hf07054f_7_cpu.conda + build_number: 7 + sha256: dcc8d61eae311c5d377a41e2c6f964b86e7289917c93d3af03e5d4a4c88ab85a + md5: 5791e257ecb73e7745fa62446f22b1ea depends: - __osx >=11.0 - - libarrow 19.0.0 hd1aa4b5_4_cpu - - libarrow-acero 19.0.0 hf07054f_4_cpu + - libarrow 19.0.0 h819e3af_7_cpu + - libarrow-acero 19.0.0 hf07054f_7_cpu - libcxx >=18 - - libparquet 19.0.0 h636d7b7_4_cpu + - libparquet 19.0.0 h636d7b7_7_cpu arch: arm64 platform: osx license: Apache-2.0 - size: 488490 - timestamp: 1737459936234 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-19.0.0-h08228c5_3_cpu.conda - build_number: 3 - sha256: 414297c69d08ba45af0fccb5e22cc3b3e92181f3928eba1e1b1ab3641970c7e0 - md5: 8527e1e45c495991fd88f6531e176556 + size: 500722 + timestamp: 1737757369380 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-19.0.0-h08228c5_7_cpu.conda + build_number: 7 + sha256: 51ec47ed56880cfd64bfa012c8488d127d8f0acfe0d64707880393d49a2663a2 + md5: e14afa8912873a094a30ad9e455bafc3 depends: - __glibc >=2.17,<3.0.a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 19.0.0 hce2e470_3_cpu - - libarrow-acero 19.0.0 hcb10f89_3_cpu - - libarrow-dataset 19.0.0 hcb10f89_3_cpu + - libarrow 19.0.0 h00a82cf_7_cpu + - libarrow-acero 19.0.0 hcb10f89_7_cpu + - libarrow-dataset 19.0.0 hcb10f89_7_cpu - libgcc >=13 - libprotobuf >=5.28.3,<5.28.4.0a0 - libstdcxx >=13 arch: x86_64 platform: linux license: Apache-2.0 - size: 521371 - timestamp: 1737344062052 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h1e9d426_12_cpu.conda - build_number: 12 - sha256: 6216a1c48e41d3b304e87b19a8ff37c10e51ceca83bff5e942d763c93f6f55a1 - md5: f647dcbf46aebc86f9975ff3c856de45 + size: 521685 + timestamp: 1737757595490 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-19.0.0-h1e9d426_7_cpu.conda + build_number: 7 + sha256: bd85da0813384b5b5af2f2b05e4bc20aa606eb5528310c84e42aa495feec6050 + md5: b35923aad96b07d76db4c31ccc74584f depends: - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.1.0 h4065667_12_cpu - - libarrow-acero 18.1.0 h3b568fd_12_cpu - - libarrow-dataset 18.1.0 h3b568fd_12_cpu + - libarrow 19.0.0 h03ebaaf_7_cpu + - libarrow-acero 19.0.0 h3b568fd_7_cpu + - libarrow-dataset 19.0.0 h3b568fd_7_cpu - libgcc >=13 - libprotobuf >=5.28.3,<5.28.4.0a0 - libstdcxx >=13 arch: aarch64 platform: linux license: Apache-2.0 - size: 516135 - timestamp: 1737451754178 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-19.0.0-h4239455_4_cpu.conda - build_number: 4 - sha256: 1de1100bddcaa4aacae5cc30e3c0ae3259d130bee7b3d52a57a1c9950e0c6588 - md5: 6988cd2fdf01cae4bc454859a7cf8bac + size: 515585 + timestamp: 1737757899077 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-19.0.0-h4239455_7_cpu.conda + build_number: 7 + sha256: 94e5351779728cacd3fcadcfe082fc840a79333ce8b1056bb811e39417decd2a + md5: 05a75db98927961f86b64340442150c3 depends: - __osx >=11.0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 19.0.0 hd1aa4b5_4_cpu - - libarrow-acero 19.0.0 hf07054f_4_cpu - - libarrow-dataset 19.0.0 hf07054f_4_cpu + - libarrow 19.0.0 h819e3af_7_cpu + - libarrow-acero 19.0.0 hf07054f_7_cpu + - libarrow-dataset 19.0.0 hf07054f_7_cpu - libcxx >=18 - libprotobuf >=5.28.3,<5.28.4.0a0 arch: arm64 platform: osx license: Apache-2.0 - size: 449975 - timestamp: 1737460148737 + size: 449238 + timestamp: 1737757536452 - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-26_linux64_openblas.conda build_number: 26 sha256: 30bd658682b124243f8e52d8edf8a19e7be1bc31e4fe4baec30a64002dc8cd0c @@ -3485,9 +3505,9 @@ packages: license_family: GPL size: 463521 timestamp: 1729089357313 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.33.0-h2b5623c_1.conda - sha256: ae48ee93e2c226bf682f1e389c2fd51ae7bf77c2ce4b3aee069764f4be1c63f2 - md5: 61829a8dd5f4e2327e707572065bae41 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.34.0-h2b5623c_0.conda + sha256: 348ee1dddd82dcef5a185c86e65dda8acfc9b583acc425ccb9b661f2d433b2cc + md5: 2a5142c88dd6132eaa8079f99476e922 depends: - __glibc >=2.17,<3.0.a0 - libabseil * cxx17* @@ -3499,13 +3519,13 @@ packages: - libstdcxx >=13 - openssl >=3.4.0,<4.0a0 constrains: - - libgoogle-cloud 2.33.0 *_1 + - libgoogle-cloud 2.34.0 *_0 arch: x86_64 platform: linux license: Apache-2.0 license_family: Apache - size: 1254656 - timestamp: 1735648569457 + size: 1256795 + timestamp: 1737286199784 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-2.34.0-hccf9d24_0.conda sha256: 54267dda8fafc2a2d379ef77b6029d8240e0628d4b29758f788fb903f84397a3 md5: 1ce0fd876001c40801b40fea22987e41 @@ -3546,16 +3566,16 @@ packages: license_family: Apache size: 878217 timestamp: 1737284441192 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.33.0-h0121fbd_1.conda - sha256: 41022523320ca8633a6c615710823e596efadb50f06d724e1a0c81e27994f257 - md5: b0cfb5044685a7a9fa43ae669124f0a0 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.34.0-h0121fbd_0.conda + sha256: aa1b3b30ae6b2eab7c9e6a8e2fd8ec3776f25d2e3f0b6f9dc547ff8083bf25fa + md5: 9f0c43225243c81c6991733edcaafff5 depends: - __glibc >=2.17,<3.0.a0 - libabseil - libcrc32c >=1.1.2,<1.2.0a0 - libcurl - libgcc >=13 - - libgoogle-cloud 2.33.0 h2b5623c_1 + - libgoogle-cloud 2.34.0 h2b5623c_0 - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - openssl @@ -3563,8 +3583,8 @@ packages: platform: linux license: Apache-2.0 license_family: Apache - size: 784357 - timestamp: 1735648759177 + size: 785792 + timestamp: 1737286406612 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-storage-2.34.0-hb9b2b65_0.conda sha256: 4ad4fb7c02dcfa4c86dcf9591e0131a01fc0f2c3f2729c12882b944ddf2b8a9d md5: 0732a5988f7f556f2c1d1f51026fc1be @@ -3784,6 +3804,8 @@ packages: depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 + constrains: + - xz ==5.6.3=*_1 arch: x86_64 platform: linux license: 0BSD @@ -3794,6 +3816,8 @@ packages: md5: eb08b903681f9f2432c320e8ed626723 depends: - libgcc >=13 + constrains: + - xz ==5.6.3=*_1 arch: aarch64 platform: linux license: 0BSD @@ -3804,6 +3828,8 @@ packages: md5: b2553114a7f5e20ccd02378a77d836aa depends: - __osx >=11.0 + constrains: + - xz ==5.6.3=*_1 arch: arm64 platform: osx license: 0BSD @@ -3930,13 +3956,103 @@ packages: license_family: BSD size: 4165774 timestamp: 1730772154295 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-19.0.0-h081d1f1_3_cpu.conda - build_number: 3 - sha256: 287c4864b849180ce9e447df8227da2c4006001056e1668dacc3365264b0e828 - md5: 95f8b5758148e62a055f4c6538a31f0b +- conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-1.18.0-hfcad708_1.conda + sha256: 4ea235e08676f16b0d3c3380befe1478c0fa0141512ee709b011005c55c9619f + md5: 1f5a5d66e77a39dc5bd639ec953705cf + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcurl >=8.11.1,<9.0a0 + - libgrpc >=1.67.1,<1.68.0a0 + - libopentelemetry-cpp-headers 1.18.0 ha770c72_1 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libzlib >=1.3.1,<2.0a0 + - nlohmann_json + - prometheus-cpp >=1.3.0,<1.4.0a0 + constrains: + - cpp-opentelemetry-sdk =1.18.0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 801927 + timestamp: 1735643375271 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopentelemetry-cpp-1.18.0-h60b47f9_1.conda + sha256: 160c493cd0f897955b0b6035b51c6d7255ffbaed3c8a12d43e8e8a719d405aba + md5: afe3c8c53f4b6d27d553c230d4b34038 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcurl >=8.11.1,<9.0a0 + - libgrpc >=1.67.1,<1.68.0a0 + - libopentelemetry-cpp-headers 1.18.0 h8af1aa0_1 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libzlib >=1.3.1,<2.0a0 + - nlohmann_json + - prometheus-cpp >=1.3.0,<1.4.0a0 + constrains: + - cpp-opentelemetry-sdk =1.18.0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 800896 + timestamp: 1735643533825 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopentelemetry-cpp-1.18.0-h0c05b2d_1.conda + sha256: c6bcbd53d62a9e0d8c667e560db0ca2ecb7679277cbb3c23457aabe74fcb8cba + md5: 19c46cc18825f3924251c39ec1b0d983 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcurl >=8.11.1,<9.0a0 + - libgrpc >=1.67.1,<1.68.0a0 + - libopentelemetry-cpp-headers 1.18.0 hce30654_1 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libzlib >=1.3.1,<2.0a0 + - nlohmann_json + - prometheus-cpp >=1.3.0,<1.4.0a0 + constrains: + - cpp-opentelemetry-sdk =1.18.0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + size: 529588 + timestamp: 1735643889612 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-headers-1.18.0-ha770c72_1.conda + sha256: aa1f7dea79ea8513ff77339ba7c6e9cf10dfa537143e7718b1cfb3af52b649f2 + md5: 4fb055f57404920a43b147031471e03b + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 320359 + timestamp: 1735643346175 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopentelemetry-cpp-headers-1.18.0-h8af1aa0_1.conda + sha256: 981c0b29a0789597fa8ed147b02df2d2ad0c7f863d87df74770c40cee1800228 + md5: 282193b19a19e3b5d75d18ef82713ef0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 319401 + timestamp: 1735643509251 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopentelemetry-cpp-headers-1.18.0-hce30654_1.conda + sha256: 82e5f5ba64debbaab3c601b265dfc0cdb4d2880feba9bada5fd2e67b9f91ada5 + md5: e965dad955841507549fdacd8f7f94c0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + size: 320565 + timestamp: 1735643673319 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-19.0.0-h081d1f1_7_cpu.conda + build_number: 7 + sha256: f117af1368c613328fb3af251287c6885962d9477a55d9bf1ab253626730b4ea + md5: a8b3022bfe8a2cb4249229768401340c depends: - __glibc >=2.17,<3.0.a0 - - libarrow 19.0.0 hce2e470_3_cpu + - libarrow 19.0.0 h00a82cf_7_cpu - libgcc >=13 - libstdcxx >=13 - libthrift >=0.21.0,<0.21.1.0a0 @@ -3944,14 +4060,14 @@ packages: arch: x86_64 platform: linux license: Apache-2.0 - size: 1227537 - timestamp: 1737343982323 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-hfc78867_12_cpu.conda - build_number: 12 - sha256: 224da9fb417e1dc569700cddf6dd7febe9a6e5c12547a389a5b934b8d385c4f8 - md5: 517447be85cda09f9410ca609c69499d + size: 1240902 + timestamp: 1737757526098 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-19.0.0-hfc78867_7_cpu.conda + build_number: 7 + sha256: 85a9964201ab6ed15b22a5ea29c66b44febc5a815a7d3234c3a605ca7644cc02 + md5: 8814a0cd443b9ebbb1662b370b6b14fb depends: - - libarrow 18.1.0 h4065667_12_cpu + - libarrow 19.0.0 h03ebaaf_7_cpu - libgcc >=13 - libstdcxx >=13 - libthrift >=0.21.0,<0.21.1.0a0 @@ -3959,23 +4075,23 @@ packages: arch: aarch64 platform: linux license: Apache-2.0 - size: 1116762 - timestamp: 1737451682325 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-19.0.0-h636d7b7_4_cpu.conda - build_number: 4 - sha256: d394423b8a096cec5481ef4cdb4d39dd4b89949cd6f23bdc14896d8af36d78f3 - md5: 639473b0344e0d2f46feb544cff5c6d8 + size: 1153344 + timestamp: 1737757846296 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-19.0.0-h636d7b7_7_cpu.conda + build_number: 7 + sha256: 637298e97c586a74e19df44cf378be3e99274aef09ee1b2a5f30c4492bd62e0d + md5: 3f0e87a16e30ff26bb513fcda9f971ac depends: - __osx >=11.0 - - libarrow 19.0.0 hd1aa4b5_4_cpu + - libarrow 19.0.0 h819e3af_7_cpu - libcxx >=18 - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 arch: arm64 platform: osx license: Apache-2.0 - size: 885681 - timestamp: 1737459816091 + size: 893815 + timestamp: 1737757309795 - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.45-h943b412_0.conda sha256: b8f5b5ba9a14dedf7c97c01300de492b1b52b68eacbc3249a13fdbfa82349a2f md5: 85cbdaacad93808395ac295b5667d25b @@ -4749,47 +4865,47 @@ packages: license_family: BSD size: 24048 timestamp: 1733219945697 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025012205-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025012505-release.conda noarch: python - sha256: 63e2ce51c01fdb5a73f62ea5f862acea5946f45d6b6bd63dafc78d242822e1b7 - md5: 5289b5be19bf0f500e1a06f44d816343 + sha256: 83e72ee5d9c5965eefc04dc84a9f496b5064e006dbfcfe137ab1710285d6b3f3 + md5: 3359ea55713294fb8bb2c70e6bd5753a depends: - - max-core ==25.1.0.dev2025012205 release - - max-python >=25.1.0.dev2025012205,<26.0a0 - - mojo-jupyter ==25.1.0.dev2025012205 release - - mblack ==25.1.0.dev2025012205 release + - max-core ==25.1.0.dev2025012505 release + - max-python >=25.1.0.dev2025012505,<26.0a0 + - mojo-jupyter ==25.1.0.dev2025012505 release + - mblack ==25.1.0.dev2025012505 release license: LicenseRef-Modular-Proprietary - size: 9919 - timestamp: 1737524122346 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025012205-release.conda - sha256: 061e7c8aba735fd2d15aca623c2f81452723bc0a5ab1e5a63af1761a9eaba9ef - md5: 2d8a82ff460cd4e03382a9151a8cf8d8 + size: 9918 + timestamp: 1737782253436 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025012505-release.conda + sha256: d89d1a2279776c687b3b729d53b1e737477afc3eae214d5750b00a048667aaed + md5: ebf37a7d5882bb676718a5648dee3654 depends: - - mblack ==25.1.0.dev2025012205 release + - mblack ==25.1.0.dev2025012505 release license: LicenseRef-Modular-Proprietary - size: 242139658 - timestamp: 1737523134733 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025012205-release.conda - sha256: eade442118da29d8b42289e6859699b4faafcf51d02189729259a2e7a97a0dcc - md5: 8e0412932905d3a4decf17acd50899ce + size: 243130339 + timestamp: 1737782221031 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025012505-release.conda + sha256: ad52887002d135793158f9bc4afcd2ea1d89111f65351885669894bb23a83763 + md5: bde4e25a295f947b730261246613b83d depends: - - mblack ==25.1.0.dev2025012205 release + - mblack ==25.1.0.dev2025012505 release license: LicenseRef-Modular-Proprietary - size: 244683388 - timestamp: 1737524122344 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025012205-release.conda - sha256: b5ccec88293901182a43d7f407d04b522b729cefaab066788496adec5bd3f2d2 - md5: bd5da5f25bd5151b4b691c34acdbeff0 + size: 245590611 + timestamp: 1737782253434 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025012505-release.conda + sha256: b1d103910f7b6a273906ea40f7dc993144511ed61239a5d764aca21ea479fe46 + md5: e01118f345f22ed4efb89192dfbbdbc6 depends: - - mblack ==25.1.0.dev2025012205 release + - mblack ==25.1.0.dev2025012505 release license: LicenseRef-Modular-Proprietary - size: 203820478 - timestamp: 1737523349069 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025012205-3.12release.conda - sha256: ceb4d33afe634401be386903e2f516b78f2b5e23e15cbedad42cce2600c97b7d - md5: ecfacd66a5b71794c53a468fbefcef6a + size: 204961123 + timestamp: 1737782482300 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025012505-3.12release.conda + sha256: b52562f368fe5dbc95343bcd7f2ee4699a25589c689b0cba444e5a93757b1ea7 + md5: a43f10619b5e0502b7f59ad823770f9f depends: - - max-core ==25.1.0.dev2025012205 release + - max-core ==25.1.0.dev2025012505 release - python 3.12.* - fastapi - httpx @@ -4810,13 +4926,13 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 119861319 - timestamp: 1737523134743 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025012205-3.12release.conda - sha256: 14ae6f16ce6c895de574bb02307cd58e87e32013bde0d905d6a1a67e686ca204 - md5: fb06394177c69b52c2ecf9ceaa7b308b + size: 120565142 + timestamp: 1737782221040 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025012505-3.12release.conda + sha256: c6252c78ced4b1a2c793ff2cb5846bd34dd6d16e8fd65425e9f1df6fe6227b0d + md5: 8ee044754ebf79922c85299e7425abf3 depends: - - max-core ==25.1.0.dev2025012205 release + - max-core ==25.1.0.dev2025012505 release - python 3.12.* - fastapi - httpx @@ -4837,13 +4953,13 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 122258493 - timestamp: 1737524122355 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025012205-3.12release.conda - sha256: 35e34095931d604893d014773f8c61c1c09a9888946dec4a01f1db827bd2f439 - md5: 589be4ace2edf68cfc3cf1d0cc429864 + size: 123069129 + timestamp: 1737782253444 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025012505-3.12release.conda + sha256: 489140758c2f0df45e077c6d52aac9bd419774b2d00b0a594d49505495e7aca4 + md5: 03b88370aa08d78471ff2e88973534d3 depends: - - max-core ==25.1.0.dev2025012205 release + - max-core ==25.1.0.dev2025012505 release - python 3.12.* - fastapi - httpx @@ -4864,12 +4980,12 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 105223218 - timestamp: 1737523349072 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012205-release.conda + size: 105954416 + timestamp: 1737782482303 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012505-release.conda noarch: python - sha256: 31bce03569c241ade0a344f1fe1a683f928fe367ae57147b3e316783631822fe - md5: c54b5f7d0d777b8995e38978d8626ffc + sha256: 906a374c4b22380993352480333cd5fc9c1a2e2179ab2e7ea65abc3bd54fc35e + md5: 3109b109f417bff02b27ff1cc78239ae depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -4879,8 +4995,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130797 - timestamp: 1737524122352 + size: 130805 + timestamp: 1737782253440 - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda sha256: 78c1bbe1723449c52b7a9df1af2ee5f005209f67e40b6e1d3c7619127c43b1c7 md5: 592132998493b3ff25fd7479396e8351 @@ -4890,18 +5006,18 @@ packages: license_family: MIT size: 14465 timestamp: 1733255681319 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025012205-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025012505-release.conda noarch: python - sha256: 78e2818c9d17321c5fe73f9dca3d7a9c51ad989c00f8ea9721deb94a4f03800e - md5: ca3c9282adb4a04dbd02f3ab8e73445c + sha256: 6cba6b01c693678b0e48d5428788d3734e885f6efc911b345fae474e4405460f + md5: 16521d51e47d4d67cf1a42351687f6b8 depends: - - max-core ==25.1.0.dev2025012205 release + - max-core ==25.1.0.dev2025012505 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22925 - timestamp: 1737524122353 + size: 22934 + timestamp: 1737782253442 - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py312h178313f_2.conda sha256: b05bc8252a6e957bf4a776ed5e0e61d1ba88cdc46ccb55890c72cc58b10371f4 md5: 5b5e3267d915a107eca793d52e1b780a @@ -5027,6 +5143,43 @@ packages: license: X11 AND BSD-3-Clause size: 796754 timestamp: 1736683572099 +- conda: https://conda.anaconda.org/conda-forge/linux-64/nlohmann_json-3.11.3-he02047a_1.conda + sha256: ce4bcced4f8eea71b7cac8bc3daac097abf7a5792f278cd811dedada199500c1 + md5: e46f7ac4917215b49df2ea09a694a3fa + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 122743 + timestamp: 1723652407663 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/nlohmann_json-3.11.3-h0a1ffab_1.conda + sha256: c90b1f11fc337d90a9e4c5aeeacac1418c5ba6a195097086566d38bb2ecf0f24 + md5: f2bd10ff23ab5c87327439c4499b3f3e + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 122755 + timestamp: 1723652622631 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/nlohmann_json-3.11.3-h00cdb27_1.conda + sha256: 3f4e6a4fa074bb297855f8111ab974dab6d9f98b7d4317d4dd46f8687ee2363b + md5: d2dee849c806430eee64d3acc98ce090 + depends: + - __osx >=11.0 + - libcxx >=16 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 123250 + timestamp: 1723652704997 - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda sha256: fe3459c75cf84dcef6ef14efcc4adb0ade66038ddd27cadb894f34f4797687d8 md5: d8285bea2a350f63fab23bf460221f3f @@ -5485,6 +5638,52 @@ packages: license_family: MIT size: 20448 timestamp: 1733232756001 +- conda: https://conda.anaconda.org/conda-forge/linux-64/prometheus-cpp-1.3.0-ha5d0236_0.conda + sha256: 013669433eb447548f21c3c6b16b2ed64356f726b5f77c1b39d5ba17a8a4b8bc + md5: a83f6a2fdc079e643237887a37460668 + depends: + - __glibc >=2.17,<3.0.a0 + - libcurl >=8.10.1,<9.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - zlib + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 199544 + timestamp: 1730769112346 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/prometheus-cpp-1.3.0-h7938499_0.conda + sha256: 9350d7bbc3982a732ff13a7fd17b585509e3b7d0191ac7b810cc3224868e3648 + md5: 10f4301290e51c49979ff98d1bdf2556 + depends: + - libcurl >=8.10.1,<9.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - zlib + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 211335 + timestamp: 1730769181127 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/prometheus-cpp-1.3.0-h0967b3e_0.conda + sha256: 851a77ae1a8e90db9b9f3c4466abea7afb52713c3d98ceb0d37ba6ff27df2eff + md5: 7172339b49c94275ba42fec3eaeda34f + depends: + - __osx >=11.0 + - libcurl >=8.10.1,<9.0a0 + - libcxx >=18 + - libzlib >=1.3.1,<2.0a0 + - zlib + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 173220 + timestamp: 1730769371051 - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda sha256: bc8f00d5155deb7b47702cb8370f233935704100dbc23e30747c161d1b6cf3ab md5: 3e01e386307acc60b2f89af0b2e161aa @@ -5494,9 +5693,9 @@ packages: license_family: Apache size: 49002 timestamp: 1733327434163 -- conda: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.1-py312h66e93f0_0.conda - sha256: 5771311fb5ded614ca349c92579a0b752af55a310f40b71fc533e20625965391 - md5: 55d5742a696d7da1c1262e99b6217ceb +- conda: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.1-py312h178313f_1.conda + sha256: 6d5ff6490c53e14591b70924711fe7bd70eb7fbeeeb1cbd9ed2f6d794ec8c4eb + md5: 349635694b4df27336bc15a49e9220e9 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -5506,11 +5705,11 @@ packages: platform: linux license: Apache-2.0 license_family: APACHE - size: 52747 - timestamp: 1733391916349 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.2.1-py312hb2c0f52_0.conda - sha256: c7f62c11ed929ccf1f3d4a1e200e28be01e8d0e0786bf8f76c5893f2ea681e1b - md5: 50ab8953e7ff1333a4a47cda32e68123 + size: 52947 + timestamp: 1737635699390 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.2.1-py312hcc812fe_1.conda + sha256: d759d8ab9c060b42cabf6312b9a04aa590daecabf1dd4e35731f4bc1b5c388bb + md5: 533b07e9fd835938f465225613825eee depends: - libgcc >=13 - python >=3.12,<3.13.0a0 @@ -5520,11 +5719,11 @@ packages: platform: linux license: Apache-2.0 license_family: APACHE - size: 52484 - timestamp: 1733391993461 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.1-py312hea69d52_0.conda - sha256: f8c266c494aa1e4cfb8bf0b6fca060044b2f3d65afe4c5062ebeea382e77aa6d - md5: c84e3dd97fe25a17322c4a0f670c6750 + size: 52776 + timestamp: 1737635802135 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.1-py312h998013c_1.conda + sha256: 96145760baad111d7ae4213ea8f8cc035cf33b001f5ff37d92268e4d28b0941d + md5: 83678928c58c9ae76778a435b6c7a94a depends: - __osx >=11.0 - python >=3.12,<3.13.0a0 @@ -5534,8 +5733,8 @@ packages: platform: osx license: Apache-2.0 license_family: APACHE - size: 48225 - timestamp: 1733392308901 + size: 50942 + timestamp: 1737635896600 - conda: https://conda.anaconda.org/conda-forge/linux-64/protobuf-5.28.3-py312h2ec8cdc_0.conda sha256: acb2e0ee948e3941f8ed191cb77f654e06538638aed8ccd71cbc78a15242ebbb md5: 9d7e427d159c1b2d516cc047ff177c48 @@ -5638,23 +5837,23 @@ packages: license_family: APACHE size: 25289 timestamp: 1737128438818 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-18.1.0-py312h8025657_0.conda - sha256: 49db959887cb89b44053a44a98d0f35644fc0b2003587492f02b56046de0b60a - md5: 9bb7d32e96a5dcb5ea7fd90a11a83656 - depends: - - libarrow-acero 18.1.0.* - - libarrow-dataset 18.1.0.* - - libarrow-substrait 18.1.0.* - - libparquet 18.1.0.* - - pyarrow-core 18.1.0 *_0_* +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-19.0.0-py312h8025657_0.conda + sha256: 3a73d3d15031586214381edf5410a6920c1f75f52a8d8b994722b106d9a50150 + md5: a86fa414c44b7e3ee054cc385c79a822 + depends: + - libarrow-acero 19.0.0.* + - libarrow-dataset 19.0.0.* + - libarrow-substrait 19.0.0.* + - libparquet 19.0.0.* + - pyarrow-core 19.0.0 *_0_* - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 arch: aarch64 platform: linux license: Apache-2.0 license_family: APACHE - size: 25374 - timestamp: 1732611006864 + size: 25496 + timestamp: 1737129041038 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-19.0.0-py312h1f38498_0.conda sha256: 9d693901833c2ff4e5d67e1f2f6df50f699e1cec2f580c26d42299654830855a md5: bd5e025292ff1127aa1534b59e55c4d0 @@ -5692,11 +5891,11 @@ packages: license_family: APACHE size: 5230953 timestamp: 1737128097002 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-18.1.0-py312h66f7834_0_cpu.conda - sha256: e7eb062145be554c23dfefa0ebe8c5f6ae8c59635117a6921e66403d6addcda3 - md5: 3390c8b8f57e85506c92a37cf750bdd7 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-19.0.0-py312h66f7834_0_cpu.conda + sha256: 17ff419abfe9596f77857dfa635538200427d87283c28e64920d10d6533ec30e + md5: ce51dbcfeae8709f0b94c78eabe7cf5e depends: - - libarrow 18.1.0.* *cpu + - libarrow 19.0.0.* *cpu - libgcc >=13 - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 @@ -5710,8 +5909,8 @@ packages: platform: linux license: Apache-2.0 license_family: APACHE - size: 4406662 - timestamp: 1732610939832 + size: 5023430 + timestamp: 1737627066264 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-19.0.0-py312hc40f475_0_cpu.conda sha256: 6303fe1c3e6d36273b72f0eeb3f19897d2376d57fe8c757f55dcbfbaa5cd6840 md5: df502157843a7b1d90af04803767be15 @@ -5742,9 +5941,9 @@ packages: license_family: BSD size: 110100 timestamp: 1733195786147 -- conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.5-pyh3cfb1c2_0.conda - sha256: 0f32c30ddc610cd1113335d8b4f311f20f4d72754b7c1a5d0d9493f597cf11d2 - md5: e8ea30925c8271c4128375810d7d3d7a +- conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.6-pyh3cfb1c2_0.conda + sha256: 9a78801a28959edeb945e8270a4e666577b52fac0cf4e35f88cf122f73d83e75 + md5: c69f87041cf24dfc8cb6bf64ca7133c7 depends: - annotated-types >=0.6.0 - pydantic-core 2.27.2 @@ -5753,8 +5952,8 @@ packages: - typing_extensions >=4.12.2 license: MIT license_family: MIT - size: 296805 - timestamp: 1736458364196 + size: 296841 + timestamp: 1737761472006 - conda: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.27.2-py312h12e396e_0.conda sha256: 81602a4592ad2ac1a1cb57372fd25214e63b1c477d5818b0c21cde0f1f85c001 md5: bae01b2563030c085f5158c518b84e86 @@ -5826,9 +6025,9 @@ packages: license_family: BSD size: 888600 timestamp: 1736243563082 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pyinstrument-5.0.0-py312h66e93f0_0.conda - sha256: 8a006507a4003fb01eeee2f9ba79f994478694766ea3b445273da5c11cf8e763 - md5: 798f42d9bfdf125dc80ffbec0e96e0b6 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyinstrument-5.0.1-py312h66e93f0_0.conda + sha256: 3f1c0bc95f2c46dcd107f44cf742ee1fa40ba22e244f01083654743bbbcf28f3 + md5: 9f1d7b421e4c8fd00009490613db64d4 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -5838,11 +6037,11 @@ packages: platform: linux license: BSD-3-Clause license_family: BSD - size: 182021 - timestamp: 1728714164706 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyinstrument-5.0.0-py312hb2c0f52_0.conda - sha256: 7967b94b8f0ff75847302444e9c43ac11a391d74da24cb14fba1049fac9e5ba9 - md5: 5274663cb05dfbe316db50af6da4389f + size: 182333 + timestamp: 1737774425235 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyinstrument-5.0.1-py312hb2c0f52_0.conda + sha256: 16af5db4359078bcb526291855bf1075ab035a96fe4e8d5cc4b0b5c8cba89b9a + md5: 90f5e9e04b1ecf25ad3f28b606f63742 depends: - libgcc >=13 - python >=3.12,<3.13.0a0 @@ -5852,11 +6051,11 @@ packages: platform: linux license: BSD-3-Clause license_family: BSD - size: 183141 - timestamp: 1728714267954 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyinstrument-5.0.0-py312h0bf5046_0.conda - sha256: 6879d52fb0ec2258e2850476786a652c394220d53883c53691ed5390183ae925 - md5: f0e4a98d54477083ddc9d2f33507f848 + size: 183988 + timestamp: 1737774588265 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyinstrument-5.0.1-py312hea69d52_0.conda + sha256: 5e7de2f908af22bbd8cf3562ce5ebf65ad6c0d8e40038f90b56f4db750639ce2 + md5: 07b0eb9b6bd91dfa87f95032825690dc depends: - __osx >=11.0 - python >=3.12,<3.13.0a0 @@ -5866,8 +6065,8 @@ packages: platform: osx license: BSD-3-Clause license_family: BSD - size: 181512 - timestamp: 1728714205508 + size: 182524 + timestamp: 1737774624030 - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda sha256: ba3b032fa52709ce0d9fd388f63d330a026754587a2f461117cac9ab73d8d0d8 md5: 461219d1a5bd61342293efa2c0c90eac @@ -6002,6 +6201,7 @@ packages: depends: - python >=3.9 license: Apache-2.0 + license_family: APACHE size: 143794 timestamp: 1737541204030 - conda: https://conda.anaconda.org/conda-forge/linux-64/python-xxhash-3.5.0-py312h66e93f0_1.conda @@ -6486,17 +6686,17 @@ packages: license_family: BSD size: 15324 timestamp: 1735126414893 -- conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyha770c72_1.conda - sha256: b74fc76107487eb26624c01fc55bfab7eed03ae82e003333c86d8a1eeac53672 - md5: 0207dac04ae2200701fab697f0aaaac4 +- conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.45.2-pyha770c72_0.conda + sha256: 2c429dbbd5e7256517ef6cdfc30664b0c0e87f90f3c526afe3b97681aafb5623 + md5: acd5901cdd0365e18129f4748e524615 depends: - - anyio >=3.4.0,<5 + - anyio >=3.6.2,<5 - python >=3.9 - typing_extensions >=3.10.0 license: BSD-3-Clause license_family: BSD - size: 58838 - timestamp: 1733344472634 + size: 58040 + timestamp: 1736016898891 - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda sha256: e0569c9caa68bf476bead1bed3d79650bb080b532c64a4af7d8ca286c08dea4e md5: d453b98d9c83e71da0741bb0ff4d76bc @@ -7180,6 +7380,43 @@ packages: license_family: MIT size: 21809 timestamp: 1732827613585 +- conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.1-hb9d3cd8_2.conda + sha256: 5d7c0e5f0005f74112a34a7425179f4eb6e73c92f5d109e6af4ddeca407c92ab + md5: c9f075ab2f33b3bbee9e62d4ad0a6cd8 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libzlib 1.3.1 hb9d3cd8_2 + arch: x86_64 + platform: linux + license: Zlib + license_family: Other + size: 92286 + timestamp: 1727963153079 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zlib-1.3.1-h86ecc28_2.conda + sha256: b4f649aa3ecdae384d5dad7074e198bff120edd3dfb816588e31738fc6d627b1 + md5: bc230abb5d21b63ff4799b0e75204783 + depends: + - libgcc >=13 + - libzlib 1.3.1 h86ecc28_2 + arch: aarch64 + platform: linux + license: Zlib + license_family: Other + size: 95582 + timestamp: 1727963203597 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zlib-1.3.1-h8359307_2.conda + sha256: 58f8860756680a4831c1bf4f294e2354d187f2e999791d53b1941834c4b37430 + md5: e3170d898ca6cb48f1bb567afb92f775 + depends: + - __osx >=11.0 + - libzlib 1.3.1 h8359307_2 + arch: arm64 + platform: osx + license: Zlib + license_family: Other + size: 77606 + timestamp: 1727963209370 - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312hef9b889_1.conda sha256: b97015e146437283f2213ff0e95abdc8e2480150634d81fbae6b96ee09f5e50b md5: 8b7069e9792ee4e5b4919a7a306d2e67 From ee9aac9ad60971d6eea528baaafcd58818893174 Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Sat, 25 Jan 2025 13:00:22 -0800 Subject: [PATCH 302/509] [mojo-lang] Tighten up the `__disable_del` operator. This adds more semantic checks to this operator to narrow its behavior - which allows fixing some obcure bugs (eg MOCO-1558) and describing its semantics better. Specifically, this used to allow things like: ``` __disable_del aggregate use(aggregate.field^) ``` where the fields of the aggregate could be used after the dtor for the full object was disabled. Now you must disable the dtor after any uses, e.g.: ``` use(aggregate.field^) __disable_del aggregate ``` This also prohibits disabling the destructor of subfields and references with a good error message - they didn't work reliably before anyway. MODULAR_ORIG_COMMIT_REV_ID: 4ab50094d0901333b1bbc6777b1c2771d969c9f2 --- docs/changelog.md | 5 +++++ stdlib/src/builtin/tuple.mojo | 4 +--- stdlib/src/collections/deque.mojo | 7 ++----- stdlib/src/collections/inline_array.mojo | 4 +--- stdlib/src/collections/linked_list.mojo | 5 ++--- stdlib/src/collections/list.mojo | 4 +--- stdlib/src/python/_bindings.mojo | 8 +++----- stdlib/src/python/python_object.mojo | 9 +++------ 8 files changed, 18 insertions(+), 28 deletions(-) diff --git a/docs/changelog.md b/docs/changelog.md index 8a540858a0..91e798ebc0 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -370,6 +370,11 @@ what we publish. This writes to a buffer on the stack before reallocating the `String`. +- The `__disable_del x` operation has been tightened up to treat all fields of + 'x' as consumed by the point of the del, so it should be used after all the + subfields are transferred or otherwise consumed (e.g. at the end of the + function) not before uses of the fields. + ### Tooling changes - mblack (aka `mojo format`) no longer formats non-mojo files. This prevents diff --git a/stdlib/src/builtin/tuple.mojo b/stdlib/src/builtin/tuple.mojo index d0d3088582..8ffff5a28b 100644 --- a/stdlib/src/builtin/tuple.mojo +++ b/stdlib/src/builtin/tuple.mojo @@ -81,9 +81,7 @@ struct Tuple[*element_types: CollectionElement](Sized, CollectionElement): ) # Do not destroy the elements when 'storage' goes away. - __mlir_op.`lit.ownership.mark_destroyed`( - __get_mvalue_as_litref(storage) - ) + __disable_del storage fn __del__(owned self): """Destructor that destroys all of the elements.""" diff --git a/stdlib/src/collections/deque.mojo b/stdlib/src/collections/deque.mojo index 279867a1f3..75e4dda9e3 100644 --- a/stdlib/src/collections/deque.mojo +++ b/stdlib/src/collections/deque.mojo @@ -157,14 +157,11 @@ struct Deque[ElementType: CollectionElement]( self = Self(capacity=capacity) for i in range(args_length): - src = UnsafePointer.address_of(elements[i]) dst = self._data + i - src.move_pointee_into(dst) + UnsafePointer.address_of(elements[i]).move_pointee_into(dst) # Do not destroy the elements when their backing storage goes away. - __mlir_op.`lit.ownership.mark_destroyed`( - __get_mvalue_as_litref(elements) - ) + __disable_del elements self._tail = args_length diff --git a/stdlib/src/collections/inline_array.mojo b/stdlib/src/collections/inline_array.mojo index 3d0a175073..7def2c4254 100644 --- a/stdlib/src/collections/inline_array.mojo +++ b/stdlib/src/collections/inline_array.mojo @@ -179,9 +179,7 @@ struct InlineArray[ UnsafePointer.address_of(storage[i]).move_pointee_into(eltptr) # Do not destroy the elements when their backing storage goes away. - __mlir_op.`lit.ownership.mark_destroyed`( - __get_mvalue_as_litref(storage) - ) + __disable_del storage fn copy(self) -> Self: """Explicitly copy the provided value. diff --git a/stdlib/src/collections/linked_list.mojo b/stdlib/src/collections/linked_list.mojo index 5da1228a80..1e386a263a 100644 --- a/stdlib/src/collections/linked_list.mojo +++ b/stdlib/src/collections/linked_list.mojo @@ -115,9 +115,8 @@ struct LinkedList[ElementType: WritableCollectionElement]: self.append(elem[]) # Do not destroy the elements when their backing storage goes away. - __mlir_op.`lit.ownership.mark_destroyed`( - __get_mvalue_as_litref(elements) - ) + # FIXME(https://github.com/modular/mojo/issues/3969) this is leaking! + __disable_del elements fn __copyinit__(mut self, read other: Self): """Initialize this list as a copy of another list. diff --git a/stdlib/src/collections/list.mojo b/stdlib/src/collections/list.mojo index 306334eb42..108a8afb41 100644 --- a/stdlib/src/collections/list.mojo +++ b/stdlib/src/collections/list.mojo @@ -159,9 +159,7 @@ struct List[T: CollectionElement, hint_trivial_type: Bool = False]( src.move_pointee_into(dest) # Do not destroy the elements when their backing storage goes away. - __mlir_op.`lit.ownership.mark_destroyed`( - __get_mvalue_as_litref(elements) - ) + __disable_del elements self.size = length diff --git a/stdlib/src/python/_bindings.mojo b/stdlib/src/python/_bindings.mojo index 73e877a9f8..19f3b03fb3 100644 --- a/stdlib/src/python/_bindings.mojo +++ b/stdlib/src/python/_bindings.mojo @@ -249,16 +249,14 @@ fn py_c_function_wrapper[ # Do not destroy the provided PyObjectPtr arguments, since they # actually have ownership of the underlying object. - __mlir_op.`lit.ownership.mark_destroyed`(__get_mvalue_as_litref(py_self)) + __disable_del py_self # SAFETY: # Prevent `args` AND `args._obj` from being destroyed, since we don't # own them. - # TODO: Use a `mem.forget(args^)` function here in the future. - __mlir_op.`lit.ownership.mark_destroyed`(__get_mvalue_as_litref(args)) var _obj = args._obj^ - __mlir_op.`lit.ownership.mark_destroyed`(__get_mvalue_as_litref(_obj)) - + __disable_del args + __disable_del _obj return result diff --git a/stdlib/src/python/python_object.mojo b/stdlib/src/python/python_object.mojo index cf729e0edf..e3339c193f 100644 --- a/stdlib/src/python/python_object.mojo +++ b/stdlib/src/python/python_object.mojo @@ -324,14 +324,11 @@ struct PythonObject( Args: typed_obj: The typed python object to unwrap. """ - - # Note: Mark `typed_obj` as destroyed so we can move out of its field. - __mlir_op.`lit.ownership.mark_destroyed`( - __get_mvalue_as_litref(typed_obj) - ) - self = typed_obj._obj^ + # Mark destroyed so we can transfer out its field. + __disable_del typed_obj + # TODO(MSTDL-715): # This initializer should not be necessary, we should need # only the initilaizer from a `NoneType`. From ec7c1d82652bb3a3531e472dc3d41e396f93e469 Mon Sep 17 00:00:00 2001 From: abdul dakkak Date: Sat, 25 Jan 2025 19:35:13 -0800 Subject: [PATCH 303/509] [Stdlib] Enhance env_get_bool to support more boolean representations - Expand boolean parsing to recognize additional true/false values - Add more flexible parsing for environment variables (1/0, on/off) - Improve error message to include the specific environment variable name and value - Update test cases to verify new parsing behavior MODULAR_ORIG_COMMIT_REV_ID: e197a026a5e3ecd2ea607ef00b7cc62fd59c4225 --- stdlib/src/sys/param_env.mojo | 15 +++++++++++---- stdlib/test/sys/test_invalid_paramenv.mojo | 2 +- stdlib/test/sys/test_paramenv.mojo | 4 +++- 3 files changed, 15 insertions(+), 6 deletions(-) diff --git a/stdlib/src/sys/param_env.mojo b/stdlib/src/sys/param_env.mojo index 06f55888f5..d0484a82b4 100644 --- a/stdlib/src/sys/param_env.mojo +++ b/stdlib/src/sys/param_env.mojo @@ -63,18 +63,25 @@ fn env_get_bool[name: StringLiteral]() -> Bool: Returns: An boolean parameter value. """ - alias val = env_get_string[name]() + alias val = StringLiteral.get[env_get_string[name]().lower()]() @parameter - if val in ("True", "true"): + if val in ("true", "1", "on"): return True @parameter - if val in ("False", "false"): + if val in ("false", "0", "off"): return False constrained[ - False, "the boolean environment value is neither `True` nor `False`" + False, + String( + "the boolean environment value of `", + name, + "` with value `", + env_get_string[name](), + "` is not recognized", + ), ]() return False diff --git a/stdlib/test/sys/test_invalid_paramenv.mojo b/stdlib/test/sys/test_invalid_paramenv.mojo index ab098b3937..09decc6bdc 100644 --- a/stdlib/test/sys/test_invalid_paramenv.mojo +++ b/stdlib/test/sys/test_invalid_paramenv.mojo @@ -16,6 +16,6 @@ from sys import env_get_bool -# CHECK-FAIL: constraint failed: the boolean environment value is neither `True` nor `False` +# CHECK-FAIL: constraint failed: the boolean environment value of `my_false` with value `blah` is not recognized fn main(): _ = env_get_bool["my_false"]() diff --git a/stdlib/test/sys/test_paramenv.mojo b/stdlib/test/sys/test_paramenv.mojo index 81fb252270..a2d21d4c5b 100644 --- a/stdlib/test/sys/test_paramenv.mojo +++ b/stdlib/test/sys/test_paramenv.mojo @@ -10,7 +10,7 @@ # See the License for the specific language governing permissions and # limitations under the License. # ===----------------------------------------------------------------------=== # -# RUN: %mojo -D bar=99 -D baz=hello -D foo=11 -D my_true=True -D my_false=false %s +# RUN: %mojo -D bar=99 -D baz=hello -D foo=11 -D my_true=True -D my_false=false -D my_on=on -D my_off=off %s from sys import env_get_bool, env_get_int, env_get_string, is_defined @@ -37,7 +37,9 @@ def test_env_get_int(): def test_env_get_bool(): assert_equal(env_get_bool["my_true"](), True) + assert_equal(env_get_bool["my_on"](), True) assert_equal(env_get_bool["my_false"](), False) + assert_equal(env_get_bool["my_off"](), False) def main(): From f58d02fdeaf74a5dd97538027aefac7b905379ed Mon Sep 17 00:00:00 2001 From: modularbot Date: Sun, 26 Jan 2025 08:13:11 +0000 Subject: [PATCH 304/509] Update lockfiles to point to latest nightly version: 25.1.0.dev2025012605 --- examples/life/magic.lock | 476 ++++++++++++++++---------------- examples/magic.lock | 476 ++++++++++++++++---------------- examples/notebooks/magic.lock | 494 +++++++++++++++++----------------- examples/operators/magic.lock | 476 ++++++++++++++++---------------- examples/testing/magic.lock | 476 ++++++++++++++++---------------- magic.lock | 494 +++++++++++++++++----------------- 6 files changed, 1446 insertions(+), 1446 deletions(-) diff --git a/examples/life/magic.lock b/examples/life/magic.lock index aeff3da14c..40e1c1de68 100644 --- a/examples/life/magic.lock +++ b/examples/life/magic.lock @@ -16,7 +16,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.8.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aom-3.9.1-hac33072_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/attr-2.5.1-h166bdaf_1.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.3.0-pyh71513ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.1.0-pyh71513ae_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.1-h205f482_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.1-h1a47875_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.10.6-hb9d3cd8_0.conda @@ -99,10 +99,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-19.0.0-h00a82cf_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-19.0.0-hcb10f89_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-19.0.0-hcb10f89_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-19.0.0-h08228c5_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-19.0.0-h00a82cf_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-19.0.0-hcb10f89_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-19.0.0-hcb10f89_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-19.0.0-h08228c5_8_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libasprintf-0.22.5-he8f35ee_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libasprintf-devel-0.22.5-he8f35ee_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libavif16-1.1.1-h1909e37_2.conda @@ -147,8 +147,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-1.18.0-hfcad708_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-headers-1.18.0-ha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopus-1.3.1-h7f98852_1.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-19.0.0-h081d1f1_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.45-h943b412_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-19.0.0-h081d1f1_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.46-h943b412_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsndfile-1.2.2-hc60ed4a_1.conda @@ -172,12 +172,12 @@ 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-25.1.0.dev2025012505-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025012505-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025012505-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025012605-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025012605-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025012605-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012605-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-25.1.0.dev2025012505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025012605-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_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.15-py312h98912ed_1.conda @@ -250,7 +250,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-h8bd8927_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.2.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.45.2-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.45.3-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/svt-av1-2.3.0-h5888daf_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.21.0-py312h8360d73_0.conda @@ -297,7 +297,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.8.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aom-3.9.1-hcccb83c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/attr-2.5.1-h4e544f5_1.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.3.0-pyh71513ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.1.0-pyh71513ae_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.1-hb7ec8d5_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.1-h740c5af_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-common-0.10.6-h86ecc28_0.conda @@ -380,10 +380,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.0.0-h4de3ea5_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h18dbdb1_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-19.0.0-h03ebaaf_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-19.0.0-h3b568fd_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-19.0.0-h3b568fd_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-19.0.0-h1e9d426_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-19.0.0-h03ebaaf_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-19.0.0-h3b568fd_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-19.0.0-h3b568fd_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-19.0.0-h1e9d426_8_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libasprintf-0.22.5-h87f4aca_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libasprintf-devel-0.22.5-h87f4aca_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libavif16-1.1.1-h3b0c220_2.conda @@ -428,8 +428,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopentelemetry-cpp-1.18.0-h60b47f9_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopentelemetry-cpp-headers-1.18.0-h8af1aa0_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopus-1.3.1-hf897c2e_1.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-19.0.0-hfc78867_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.45-hec79eb8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-19.0.0-hfc78867_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.46-hec79eb8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.3-h44a3b7b_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsndfile-1.2.2-h79657aa_1.conda @@ -453,12 +453,12 @@ 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-25.1.0.dev2025012505-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025012505-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025012505-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025012605-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025012605-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025012605-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012605-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-25.1.0.dev2025012505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025012605-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_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.15-py312hdd3e373_1.conda @@ -531,7 +531,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-hd4fb6f5_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.2.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.45.2-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.45.3-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/svt-av1-2.3.0-h5ad3122_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.21.0-py312ha0d6ea1_0.conda @@ -575,7 +575,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.8.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aom-3.9.1-h7bae524_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.3.0-pyh71513ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.1.0-pyh71513ae_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.1-hfc2798a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.1-hc8a0bd2_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.10.6-h5505292_0.conda @@ -653,10 +653,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.16-ha0e7c42_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_h07bc746_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-19.0.0-h819e3af_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-19.0.0-hf07054f_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-19.0.0-hf07054f_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-19.0.0-h4239455_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-19.0.0-h819e3af_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-19.0.0-hf07054f_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-19.0.0-hf07054f_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-19.0.0-h4239455_8_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libasprintf-0.22.5-h8414b35_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libasprintf-devel-0.22.5-h8414b35_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libavif16-1.1.1-h45b7238_2.conda @@ -696,8 +696,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopentelemetry-cpp-1.18.0-h0c05b2d_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopentelemetry-cpp-headers-1.18.0-hce30654_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopus-1.3.1-h27ca646_1.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-19.0.0-h636d7b7_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.45-h3783ad8_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-19.0.0-h636d7b7_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.46-h3783ad8_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.3-h3bd63a1_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h07bc746_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsndfile-1.2.2-h9739721_1.conda @@ -717,12 +717,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-25.1.0.dev2025012505-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025012505-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025012505-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025012605-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025012605-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025012605-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012605-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-25.1.0.dev2025012505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025012605-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 @@ -793,7 +793,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-h98b9ce2_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.2.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.45.2-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.45.3-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/svt-av1-2.3.0-hf24288c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.21.0-py312hf3e4074_0.conda @@ -1051,15 +1051,15 @@ packages: license_family: GPL size: 74992 timestamp: 1660065534958 -- conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.3.0-pyh71513ae_0.conda - sha256: 750186af694a7130eaf7119fbb56db0d2326d8995ad5b8eae23c622b85fea29a - md5: 356927ace43302bf6f5926e2a58dae6a +- conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.1.0-pyh71513ae_0.conda + sha256: 1f267886522dfb9ae4e5ebbc3135b5eb13cff27bdbfe8d881a4d893459166ab4 + md5: 2cc3f588512f04f3a0c64b4e9bedc02d depends: - python >=3.9 license: MIT license_family: MIT - size: 56354 - timestamp: 1734348889193 + size: 56370 + timestamp: 1737819298139 - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.1-h205f482_0.conda sha256: ebe5e33249f37f6bb481de99581ebdc92dbfcf1b6915609bcf3c9e78661d6352 md5: 9c500858e88df50af3cc883d194de78a @@ -3377,10 +3377,10 @@ packages: license_family: Apache size: 1178260 timestamp: 1736008642885 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-19.0.0-h00a82cf_7_cpu.conda - build_number: 7 - sha256: 8b401a256e4632ab6c1ea8d3cfb16d7c8ff3b0fe5af7cd474202a369c63dc74c - md5: 8d553fa6a138f369ed94b8b1a76f1e77 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-19.0.0-h00a82cf_8_cpu.conda + build_number: 8 + sha256: dcac39be95b9afe42bc9b7bfcfa258e31e413a4cb79c49f6707edf2838e8d64c + md5: 51e31b59290c09b58d290f66b908999b depends: - __glibc >=2.17,<3.0.a0 - aws-crt-cpp >=0.29.9,<0.29.10.0a0 @@ -3410,18 +3410,18 @@ packages: - snappy >=1.2.1,<1.3.0a0 - zstd >=1.5.6,<1.6.0a0 constrains: - - apache-arrow-proc =*=cpu - - arrow-cpp <0.0a0 - parquet-cpp <0.0a0 + - arrow-cpp <0.0a0 + - apache-arrow-proc =*=cpu arch: x86_64 platform: linux license: Apache-2.0 - size: 8979130 - timestamp: 1737757402544 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-19.0.0-h03ebaaf_7_cpu.conda - build_number: 7 - sha256: f029b7fbed445a2cb08b95686e9a9cb30c04a10998ef632c2cf84fd0c0d1e424 - md5: b94870200ac053eff3dda878d523f1d1 + size: 8969999 + timestamp: 1737824740139 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-19.0.0-h03ebaaf_8_cpu.conda + build_number: 8 + sha256: ca5db2ba71de0c4fb54ee12e3b841e3e90b988ae7a5935fae3cce90111b5cb6d + md5: 1ac6f73a63d715590a7ad0113a578762 depends: - aws-crt-cpp >=0.29.9,<0.29.10.0a0 - aws-sdk-cpp >=1.11.489,<1.11.490.0a0 @@ -3456,12 +3456,12 @@ packages: arch: aarch64 platform: linux license: Apache-2.0 - size: 8210159 - timestamp: 1737757741310 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-19.0.0-h819e3af_7_cpu.conda - build_number: 7 - sha256: e5e370673b9fe9459a826f474dc470b59fd6744fa652dd534f7ef722cd9be39c - md5: 3cb4f805d9742272591795d487786f2d + size: 8213318 + timestamp: 1737808895185 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-19.0.0-h819e3af_8_cpu.conda + build_number: 8 + sha256: 825afabd1c998dfddce9600584c492296a15219d441c6e3029e6c6228200d695 + md5: fbe0ce0ef6d386ab832ee5cca2ab3048 depends: - __osx >=11.0 - aws-crt-cpp >=0.29.9,<0.29.10.0a0 @@ -3490,155 +3490,155 @@ packages: - snappy >=1.2.1,<1.3.0a0 - zstd >=1.5.6,<1.6.0a0 constrains: - - parquet-cpp <0.0a0 - - apache-arrow-proc =*=cpu - arrow-cpp <0.0a0 + - apache-arrow-proc =*=cpu + - parquet-cpp <0.0a0 arch: arm64 platform: osx license: Apache-2.0 - size: 5540329 - timestamp: 1737756116679 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-19.0.0-hcb10f89_7_cpu.conda - build_number: 7 - sha256: 7018394af408b4ce344c97cd6f97bc676708067a9d2d834bf091b74f13b41be4 - md5: de10e3323bfa9dd8929f7fbe23665883 + size: 5573619 + timestamp: 1737806044972 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-19.0.0-hcb10f89_8_cpu.conda + build_number: 8 + sha256: bf8f64403685eb3ab6ebc5a25cc3a70431a1f822469bf96b0ee80c169deec0ac + md5: dafba09929a58e10bb8231ff7966e623 depends: - __glibc >=2.17,<3.0.a0 - - libarrow 19.0.0 h00a82cf_7_cpu + - libarrow 19.0.0 h00a82cf_8_cpu - libgcc >=13 - libstdcxx >=13 arch: x86_64 platform: linux license: Apache-2.0 - size: 637717 - timestamp: 1737757443960 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-19.0.0-h3b568fd_7_cpu.conda - build_number: 7 - sha256: 97911c3addb66033747e12c608ca32ce5c56d6d9f35674cfb97fff0ff4c7e926 - md5: d50c51a7d86454c90de667fcafb8c785 + size: 637555 + timestamp: 1737824783456 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-19.0.0-h3b568fd_8_cpu.conda + build_number: 8 + sha256: 154fe9bee1a1e3c96497fcbf3c01191965d5c4e9718dcbf8502035d7ff633499 + md5: e015edb6317c81893f9ce4865bbd55f4 depends: - - libarrow 19.0.0 h03ebaaf_7_cpu + - libarrow 19.0.0 h03ebaaf_8_cpu - libgcc >=13 - libstdcxx >=13 arch: aarch64 platform: linux license: Apache-2.0 - size: 602410 - timestamp: 1737757792970 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-19.0.0-hf07054f_7_cpu.conda - build_number: 7 - sha256: a716bd2c6106f0508e69800f73a9368f5b5fadba0cd1f7f7ac753bf43392bf4d - md5: a138208af40b21c840c1075f3bec5014 + size: 602892 + timestamp: 1737808980001 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-19.0.0-hf07054f_8_cpu.conda + build_number: 8 + sha256: 66ce35077dae435cd34644d53159af14afd62452eeec8f63cd55adb11e7f2780 + md5: 68cd272eccf7b4fcb0a3bab95e89e71e depends: - __osx >=11.0 - - libarrow 19.0.0 h819e3af_7_cpu + - libarrow 19.0.0 h819e3af_8_cpu - libcxx >=18 arch: arm64 platform: osx license: Apache-2.0 - size: 499319 - timestamp: 1737756215547 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-19.0.0-hcb10f89_7_cpu.conda - build_number: 7 - sha256: 4f3864b3f004fc320f28ecc5bb47e4cd927f40ef8dc6a16bdef51b34f51da921 - md5: eddf039322781fee4d4137f50769511c + size: 500365 + timestamp: 1737806169385 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-19.0.0-hcb10f89_8_cpu.conda + build_number: 8 + sha256: dc4a0f13428c9bd9781e25b67f5f52a92b8c4beafa2435fe5127e9fac7969218 + md5: 66e19108e4597b9a35d0886607c2d8a8 depends: - __glibc >=2.17,<3.0.a0 - - libarrow 19.0.0 h00a82cf_7_cpu - - libarrow-acero 19.0.0 hcb10f89_7_cpu + - libarrow 19.0.0 h00a82cf_8_cpu + - libarrow-acero 19.0.0 hcb10f89_8_cpu - libgcc >=13 - - libparquet 19.0.0 h081d1f1_7_cpu + - libparquet 19.0.0 h081d1f1_8_cpu - libstdcxx >=13 arch: x86_64 platform: linux license: Apache-2.0 - size: 605090 - timestamp: 1737757550128 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-19.0.0-h3b568fd_7_cpu.conda - build_number: 7 - sha256: e055430747eba48c99a7b1ebe0596e126a121eeffd6ba667c00554a0b2707839 - md5: 2d6208bc6ab9089ee1787d9abbefd172 + size: 604335 + timestamp: 1737824891062 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-19.0.0-h3b568fd_8_cpu.conda + build_number: 8 + sha256: f038f979b3357124a548dd83880f94284355a90e4736caaabd23c750cf06eaa9 + md5: 03f35d7f35dae0e05f5f4f747d7eb6e7 depends: - - libarrow 19.0.0 h03ebaaf_7_cpu - - libarrow-acero 19.0.0 h3b568fd_7_cpu + - libarrow 19.0.0 h03ebaaf_8_cpu + - libarrow-acero 19.0.0 h3b568fd_8_cpu - libgcc >=13 - - libparquet 19.0.0 hfc78867_7_cpu + - libparquet 19.0.0 hfc78867_8_cpu - libstdcxx >=13 arch: aarch64 platform: linux license: Apache-2.0 - size: 580599 - timestamp: 1737757863901 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-19.0.0-hf07054f_7_cpu.conda - build_number: 7 - sha256: dcc8d61eae311c5d377a41e2c6f964b86e7289917c93d3af03e5d4a4c88ab85a - md5: 5791e257ecb73e7745fa62446f22b1ea + size: 579626 + timestamp: 1737809072479 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-19.0.0-hf07054f_8_cpu.conda + build_number: 8 + sha256: 6934ce0503472f002695d45ae12a8f2948e10e7a0b7430330a4d0d83f3e5ca27 + md5: 1a941d1ddc16b532790781a4becdc881 depends: - __osx >=11.0 - - libarrow 19.0.0 h819e3af_7_cpu - - libarrow-acero 19.0.0 hf07054f_7_cpu + - libarrow 19.0.0 h819e3af_8_cpu + - libarrow-acero 19.0.0 hf07054f_8_cpu - libcxx >=18 - - libparquet 19.0.0 h636d7b7_7_cpu + - libparquet 19.0.0 h636d7b7_8_cpu arch: arm64 platform: osx license: Apache-2.0 - size: 500722 - timestamp: 1737757369380 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-19.0.0-h08228c5_7_cpu.conda - build_number: 7 - sha256: 51ec47ed56880cfd64bfa012c8488d127d8f0acfe0d64707880393d49a2663a2 - md5: e14afa8912873a094a30ad9e455bafc3 + size: 501001 + timestamp: 1737807214184 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-19.0.0-h08228c5_8_cpu.conda + build_number: 8 + sha256: e370ee738d3963120f715343a27cf041c62a3ee8bb19e25da9115ec4bae5f2de + md5: e5dd1926e5a4b23de8ba4eacc8eb9b2d depends: - __glibc >=2.17,<3.0.a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 19.0.0 h00a82cf_7_cpu - - libarrow-acero 19.0.0 hcb10f89_7_cpu - - libarrow-dataset 19.0.0 hcb10f89_7_cpu + - libarrow 19.0.0 h00a82cf_8_cpu + - libarrow-acero 19.0.0 hcb10f89_8_cpu + - libarrow-dataset 19.0.0 hcb10f89_8_cpu - libgcc >=13 - libprotobuf >=5.28.3,<5.28.4.0a0 - libstdcxx >=13 arch: x86_64 platform: linux license: Apache-2.0 - size: 521685 - timestamp: 1737757595490 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-19.0.0-h1e9d426_7_cpu.conda - build_number: 7 - sha256: bd85da0813384b5b5af2f2b05e4bc20aa606eb5528310c84e42aa495feec6050 - md5: b35923aad96b07d76db4c31ccc74584f + size: 521475 + timestamp: 1737824942852 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-19.0.0-h1e9d426_8_cpu.conda + build_number: 8 + sha256: 92e1fea8557a931c273ea3bd3bf73a4f4f0c566844dcedf78b9a16e5cf6cab56 + md5: ef08fcb5c165cdc743336bd8f4cbed69 depends: - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 19.0.0 h03ebaaf_7_cpu - - libarrow-acero 19.0.0 h3b568fd_7_cpu - - libarrow-dataset 19.0.0 h3b568fd_7_cpu + - libarrow 19.0.0 h03ebaaf_8_cpu + - libarrow-acero 19.0.0 h3b568fd_8_cpu + - libarrow-dataset 19.0.0 h3b568fd_8_cpu - libgcc >=13 - libprotobuf >=5.28.3,<5.28.4.0a0 - libstdcxx >=13 arch: aarch64 platform: linux license: Apache-2.0 - size: 515585 - timestamp: 1737757899077 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-19.0.0-h4239455_7_cpu.conda - build_number: 7 - sha256: 94e5351779728cacd3fcadcfe082fc840a79333ce8b1056bb811e39417decd2a - md5: 05a75db98927961f86b64340442150c3 + size: 516126 + timestamp: 1737809118915 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-19.0.0-h4239455_8_cpu.conda + build_number: 8 + sha256: 445d2ca20b07e57270f3b07b62c09794369413e5ff3716d9c73d0ad360969583 + md5: a39953d9b03b0463f4ccc187a8bcfcca depends: - __osx >=11.0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 19.0.0 h819e3af_7_cpu - - libarrow-acero 19.0.0 hf07054f_7_cpu - - libarrow-dataset 19.0.0 hf07054f_7_cpu + - libarrow 19.0.0 h819e3af_8_cpu + - libarrow-acero 19.0.0 hf07054f_8_cpu + - libarrow-dataset 19.0.0 hf07054f_8_cpu - libcxx >=18 - libprotobuf >=5.28.3,<5.28.4.0a0 arch: arm64 platform: osx license: Apache-2.0 - size: 449238 - timestamp: 1737757536452 + size: 449672 + timestamp: 1737807386331 - conda: https://conda.anaconda.org/conda-forge/linux-64/libasprintf-0.22.5-he8f35ee_3.conda sha256: 2da5c735811cbf38c7f7844ab457ff8b25046bbf5fe5ebd5dc1c2fafdf4fbe1c md5: 4fab9799da9571266d05ca5503330655 @@ -5344,13 +5344,13 @@ packages: license_family: BSD size: 252854 timestamp: 1606823635137 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-19.0.0-h081d1f1_7_cpu.conda - build_number: 7 - sha256: f117af1368c613328fb3af251287c6885962d9477a55d9bf1ab253626730b4ea - md5: a8b3022bfe8a2cb4249229768401340c +- conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-19.0.0-h081d1f1_8_cpu.conda + build_number: 8 + sha256: b2e1bf8634efb643a9f15fe19f9bc0877482c509eff7cee6136278a2c2fa5842 + md5: bef810a8da683aa11c644066a87f71c3 depends: - __glibc >=2.17,<3.0.a0 - - libarrow 19.0.0 h00a82cf_7_cpu + - libarrow 19.0.0 h00a82cf_8_cpu - libgcc >=13 - libstdcxx >=13 - libthrift >=0.21.0,<0.21.1.0a0 @@ -5358,14 +5358,14 @@ packages: arch: x86_64 platform: linux license: Apache-2.0 - size: 1240902 - timestamp: 1737757526098 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-19.0.0-hfc78867_7_cpu.conda - build_number: 7 - sha256: 85a9964201ab6ed15b22a5ea29c66b44febc5a815a7d3234c3a605ca7644cc02 - md5: 8814a0cd443b9ebbb1662b370b6b14fb + size: 1241786 + timestamp: 1737824866572 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-19.0.0-hfc78867_8_cpu.conda + build_number: 8 + sha256: 8917fc5e5bb65894106bbd461d2f9c9c0c3dc642ff5da197c941bf620ce840a0 + md5: b0d5f8c122a3e9a6b75036e43e78fcfa depends: - - libarrow 19.0.0 h03ebaaf_7_cpu + - libarrow 19.0.0 h03ebaaf_8_cpu - libgcc >=13 - libstdcxx >=13 - libthrift >=0.21.0,<0.21.1.0a0 @@ -5373,26 +5373,26 @@ packages: arch: aarch64 platform: linux license: Apache-2.0 - size: 1153344 - timestamp: 1737757846296 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-19.0.0-h636d7b7_7_cpu.conda - build_number: 7 - sha256: 637298e97c586a74e19df44cf378be3e99274aef09ee1b2a5f30c4492bd62e0d - md5: 3f0e87a16e30ff26bb513fcda9f971ac + size: 1153834 + timestamp: 1737809048861 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-19.0.0-h636d7b7_8_cpu.conda + build_number: 8 + sha256: da04e6bd7ed2ca64aadf0ad12d9752e8423e85c37e0db80e27c7ff334fcbd2b6 + md5: c1ff2e71a289fb76146591c9d3f9de0a depends: - __osx >=11.0 - - libarrow 19.0.0 h819e3af_7_cpu + - libarrow 19.0.0 h819e3af_8_cpu - libcxx >=18 - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 arch: arm64 platform: osx license: Apache-2.0 - size: 893815 - timestamp: 1737757309795 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.45-h943b412_0.conda - sha256: b8f5b5ba9a14dedf7c97c01300de492b1b52b68eacbc3249a13fdbfa82349a2f - md5: 85cbdaacad93808395ac295b5667d25b + size: 893482 + timestamp: 1737807155720 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.46-h943b412_0.conda + sha256: a46436dadd12d58155280d68876dba2d8a3badbc8074956d14fe6530c7c7eda6 + md5: adcf7bacff219488e29cfa95a2abd8f7 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -5400,30 +5400,30 @@ packages: arch: x86_64 platform: linux license: zlib-acknowledgement - size: 289426 - timestamp: 1736339058310 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.45-hec79eb8_0.conda - sha256: a06daa523a0d5775acb96e6e3f083adc2ab1383eb8f664513dbc663f439c9cca - md5: 9a8716c16b40acc7148263de1d0a403b + size: 292273 + timestamp: 1737791061653 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.46-hec79eb8_0.conda + sha256: be4eefe8415c9b37d158eaa9522ce4c399a572339ac2bcc4d26d6433e0ed767d + md5: f9f793497c0973d5416421aa2f96cda4 depends: - libgcc >=13 - libzlib >=1.3.1,<2.0a0 arch: aarch64 platform: linux license: zlib-acknowledgement - size: 299051 - timestamp: 1736344007986 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.45-h3783ad8_0.conda - sha256: ddcc81c049b32fb5eb3ac1f9a6d3a589c08325c8ec6f89eb912208b19330d68c - md5: d554c806d065b1763cb9e1cb1d25741d + size: 304364 + timestamp: 1737795802176 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.46-h3783ad8_0.conda + sha256: db78a711561bb6df274ef421472d948dfd1093404db3915e891ae6d7fd37fadc + md5: 15d480fb9dad036eaa4de0b51eab3ccc depends: - __osx >=11.0 - libzlib >=1.3.1,<2.0a0 arch: arm64 platform: osx license: zlib-acknowledgement - size: 263151 - timestamp: 1736339184358 + size: 266516 + timestamp: 1737791023678 - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda sha256: 51125ebb8b7152e4a4e69fd2398489c4ec8473195c27cde3cbdf1cb6d18c5493 md5: d8703f1ffe5a06356f06467f1d0b9464 @@ -6275,47 +6275,47 @@ packages: license_family: BSD size: 24048 timestamp: 1733219945697 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025012505-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025012605-release.conda noarch: python - sha256: 83e72ee5d9c5965eefc04dc84a9f496b5064e006dbfcfe137ab1710285d6b3f3 - md5: 3359ea55713294fb8bb2c70e6bd5753a + sha256: 8c9827436fb98c4de9cdf0a0f74cdfe1dbe2efa8484f19ced1f4eb939ba0f919 + md5: f09aa38afbb5a1e68bc624a98556bd3f depends: - - max-core ==25.1.0.dev2025012505 release - - max-python >=25.1.0.dev2025012505,<26.0a0 - - mojo-jupyter ==25.1.0.dev2025012505 release - - mblack ==25.1.0.dev2025012505 release + - max-core ==25.1.0.dev2025012605 release + - max-python >=25.1.0.dev2025012605,<26.0a0 + - mojo-jupyter ==25.1.0.dev2025012605 release + - mblack ==25.1.0.dev2025012605 release license: LicenseRef-Modular-Proprietary - size: 9918 - timestamp: 1737782253436 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025012505-release.conda - sha256: d89d1a2279776c687b3b729d53b1e737477afc3eae214d5750b00a048667aaed - md5: ebf37a7d5882bb676718a5648dee3654 + size: 9920 + timestamp: 1737868622340 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025012605-release.conda + sha256: e9ef000deed41edd45df86cdeb3c46eb933a85dc7929f399d18746fa6bf84d3a + md5: d604a770e815feb97cc163a095d74322 depends: - - mblack ==25.1.0.dev2025012505 release + - mblack ==25.1.0.dev2025012605 release license: LicenseRef-Modular-Proprietary - size: 243130339 - timestamp: 1737782221031 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025012505-release.conda - sha256: ad52887002d135793158f9bc4afcd2ea1d89111f65351885669894bb23a83763 - md5: bde4e25a295f947b730261246613b83d + size: 243456510 + timestamp: 1737868720794 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025012605-release.conda + sha256: 589289450e22c82b178157c51ba011e795c115ee4da8f21d4dd8055e05d991c0 + md5: e4e7aecdda98cc52ba8e4c075170713b depends: - - mblack ==25.1.0.dev2025012505 release + - mblack ==25.1.0.dev2025012605 release license: LicenseRef-Modular-Proprietary - size: 245590611 - timestamp: 1737782253434 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025012505-release.conda - sha256: b1d103910f7b6a273906ea40f7dc993144511ed61239a5d764aca21ea479fe46 - md5: e01118f345f22ed4efb89192dfbbdbc6 + size: 245958004 + timestamp: 1737868622338 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025012605-release.conda + sha256: 3004e8b1fca572284485b488639c916e2028fc022e7f9eaece25676c0d420521 + md5: f188ddc4fef4410d599beafd55e61cf1 depends: - - mblack ==25.1.0.dev2025012505 release + - mblack ==25.1.0.dev2025012605 release license: LicenseRef-Modular-Proprietary - size: 204961123 - timestamp: 1737782482300 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025012505-3.12release.conda - sha256: b52562f368fe5dbc95343bcd7f2ee4699a25589c689b0cba444e5a93757b1ea7 - md5: a43f10619b5e0502b7f59ad823770f9f + size: 205170122 + timestamp: 1737869052124 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025012605-3.12release.conda + sha256: 296dcbab2616decb3e19510a8d56d2ad7208fbdc65aa9a5c65c24053e097083d + md5: ae1b2c8ed2537bc3b9cba21266b5771e depends: - - max-core ==25.1.0.dev2025012505 release + - max-core ==25.1.0.dev2025012605 release - python 3.12.* - fastapi - httpx @@ -6336,13 +6336,13 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 120565142 - timestamp: 1737782221040 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025012505-3.12release.conda - sha256: c6252c78ced4b1a2c793ff2cb5846bd34dd6d16e8fd65425e9f1df6fe6227b0d - md5: 8ee044754ebf79922c85299e7425abf3 + size: 120667192 + timestamp: 1737868720803 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025012605-3.12release.conda + sha256: d84debf9ad9537afbf502c89baa3e606e12caba812b193d05e5480ffbec8a8f3 + md5: b2f7e32d1931ad233be7967b4e4880d6 depends: - - max-core ==25.1.0.dev2025012505 release + - max-core ==25.1.0.dev2025012605 release - python 3.12.* - fastapi - httpx @@ -6363,13 +6363,13 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 123069129 - timestamp: 1737782253444 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025012505-3.12release.conda - sha256: 489140758c2f0df45e077c6d52aac9bd419774b2d00b0a594d49505495e7aca4 - md5: 03b88370aa08d78471ff2e88973534d3 + size: 123187293 + timestamp: 1737868622348 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025012605-3.12release.conda + sha256: a4fa173d3d6f12a6ee5fa1dc61300fa3392fd82e416025a0cbd97c6ac01e2288 + md5: 9e3138e7bcd85feea476ca22514f1e1b depends: - - max-core ==25.1.0.dev2025012505 release + - max-core ==25.1.0.dev2025012605 release - python 3.12.* - fastapi - httpx @@ -6390,12 +6390,12 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 105954416 - timestamp: 1737782482303 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012505-release.conda + size: 106062355 + timestamp: 1737869052127 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012605-release.conda noarch: python - sha256: 906a374c4b22380993352480333cd5fc9c1a2e2179ab2e7ea65abc3bd54fc35e - md5: 3109b109f417bff02b27ff1cc78239ae + sha256: 76d9f174ae8245596fcbed5a05d7b0a49ef8eaceac009d1d4c2842f5f31592d6 + md5: f9b9c5654edb0396f0793d557c4fb898 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -6405,8 +6405,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130805 - timestamp: 1737782253440 + size: 130814 + timestamp: 1737868622344 - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda sha256: 78c1bbe1723449c52b7a9df1af2ee5f005209f67e40b6e1d3c7619127c43b1c7 md5: 592132998493b3ff25fd7479396e8351 @@ -6416,18 +6416,18 @@ packages: license_family: MIT size: 14465 timestamp: 1733255681319 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025012505-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025012605-release.conda noarch: python - sha256: 6cba6b01c693678b0e48d5428788d3734e885f6efc911b345fae474e4405460f - md5: 16521d51e47d4d67cf1a42351687f6b8 + sha256: 4e786c10774447edaf5fa00324223340fa7bba82c9b15058903aed23b2a43e25 + md5: 4b66d050c8e56e18a3a7feaaad38d20a depends: - - max-core ==25.1.0.dev2025012505 release + - max-core ==25.1.0.dev2025012605 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22934 - timestamp: 1737782253442 + size: 22930 + timestamp: 1737868622346 - conda: https://conda.anaconda.org/conda-forge/linux-64/mpg123-1.32.9-hc50e24c_0.conda sha256: 39c4700fb3fbe403a77d8cc27352fa72ba744db487559d5d44bf8411bb4ea200 md5: c7f302fd11eeb0987a6a5e1f3aed6a21 @@ -8659,17 +8659,17 @@ packages: license_family: BSD size: 15324 timestamp: 1735126414893 -- conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.45.2-pyha770c72_0.conda - sha256: 2c429dbbd5e7256517ef6cdfc30664b0c0e87f90f3c526afe3b97681aafb5623 - md5: acd5901cdd0365e18129f4748e524615 +- conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.45.3-pyha770c72_0.conda + sha256: be48c99e6fb8e12ebee09e6fbb4d78a170b614cdaa19ab791a8f5b6caf09919a + md5: 9b3a68bc7aed7949ef86f950993261f4 depends: - anyio >=3.6.2,<5 - python >=3.9 - typing_extensions >=3.10.0 license: BSD-3-Clause license_family: BSD - size: 58040 - timestamp: 1736016898891 + size: 57934 + timestamp: 1737824077668 - conda: https://conda.anaconda.org/conda-forge/linux-64/svt-av1-2.3.0-h5888daf_0.conda sha256: df30a9be29f1a8b5a2e314dd5b16ccfbcbd1cc6a4f659340e8bc2bd4de37bc6f md5: 355898d24394b2af353eb96358db9fdd diff --git a/examples/magic.lock b/examples/magic.lock index 1aa532e452..3f7721cdc2 100644 --- a/examples/magic.lock +++ b/examples/magic.lock @@ -13,7 +13,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.8.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.3.0-pyh71513ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.1.0-pyh71513ae_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.1-h205f482_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.1-h1a47875_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.10.6-hb9d3cd8_0.conda @@ -77,10 +77,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-19.0.0-h00a82cf_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-19.0.0-hcb10f89_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-19.0.0-hcb10f89_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-19.0.0-h08228c5_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-19.0.0-h00a82cf_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-19.0.0-hcb10f89_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-19.0.0-hcb10f89_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-19.0.0-h08228c5_8_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-26_linux64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hb9d3cd8_2.conda @@ -111,8 +111,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.28-pthreads_h94d23a6_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-1.18.0-hfcad708_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-headers-1.18.0-ha770c72_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-19.0.0-h081d1f1_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.45-h943b412_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-19.0.0-h081d1f1_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.46-h943b412_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda @@ -133,12 +133,12 @@ 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-25.1.0.dev2025012505-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025012505-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025012505-3.11release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025012605-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025012605-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025012605-3.11release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012605-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-25.1.0.dev2025012505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025012605-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 @@ -198,7 +198,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-h8bd8927_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.2.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.45.2-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.45.3-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.21.0-py311h182c674_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py311h9ecbd09_0.conda @@ -235,7 +235,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.8.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.3.0-pyh71513ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.1.0-pyh71513ae_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.1-hb7ec8d5_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.1-h740c5af_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-common-0.10.6-h86ecc28_0.conda @@ -300,10 +300,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.0.0-h4de3ea5_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h18dbdb1_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-19.0.0-h03ebaaf_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-19.0.0-h3b568fd_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-19.0.0-h3b568fd_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-19.0.0-h1e9d426_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-19.0.0-h03ebaaf_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-19.0.0-h3b568fd_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-19.0.0-h3b568fd_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-19.0.0-h1e9d426_8_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-26_linuxaarch64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlicommon-1.1.0-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlidec-1.1.0-h86ecc28_2.conda @@ -334,8 +334,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.28-pthreads_h9d3fd7e_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopentelemetry-cpp-1.18.0-h60b47f9_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopentelemetry-cpp-headers-1.18.0-h8af1aa0_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-19.0.0-hfc78867_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.45-hec79eb8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-19.0.0-hfc78867_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.46-hec79eb8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.3-h44a3b7b_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.20-h68df207_0.conda @@ -356,12 +356,12 @@ 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-25.1.0.dev2025012505-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025012505-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025012505-3.11release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025012605-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025012605-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025012605-3.11release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012605-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-25.1.0.dev2025012505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025012605-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 @@ -421,7 +421,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-hd4fb6f5_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.2.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.45.2-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.45.3-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.21.0-py311h5e37e04_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py311h5487e9b_0.conda @@ -457,7 +457,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.8.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.3.0-pyh71513ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.1.0-pyh71513ae_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.1-hfc2798a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.1-hc8a0bd2_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.10.6-h5505292_0.conda @@ -520,10 +520,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.16-ha0e7c42_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_h07bc746_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-19.0.0-h819e3af_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-19.0.0-hf07054f_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-19.0.0-hf07054f_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-19.0.0-h4239455_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-19.0.0-h819e3af_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-19.0.0-hf07054f_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-19.0.0-hf07054f_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-19.0.0-h4239455_8_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-26_osxarm64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.1.0-hd74edd7_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.1.0-hd74edd7_2.conda @@ -551,8 +551,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.28-openmp_hf332438_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopentelemetry-cpp-1.18.0-h0c05b2d_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopentelemetry-cpp-headers-1.18.0-hce30654_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-19.0.0-h636d7b7_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.45-h3783ad8_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-19.0.0-h636d7b7_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.46-h3783ad8_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.3-h3bd63a1_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h07bc746_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda @@ -570,12 +570,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-25.1.0.dev2025012505-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025012505-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025012505-3.11release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025012605-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025012605-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025012605-3.11release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012605-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-25.1.0.dev2025012505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025012605-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 @@ -634,7 +634,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-h98b9ce2_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.2.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.45.2-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.45.3-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.21.0-py311h82b0fb8_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py311h917b07b_0.conda @@ -810,15 +810,15 @@ packages: license_family: MIT size: 115305 timestamp: 1736174485476 -- conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.3.0-pyh71513ae_0.conda - sha256: 750186af694a7130eaf7119fbb56db0d2326d8995ad5b8eae23c622b85fea29a - md5: 356927ace43302bf6f5926e2a58dae6a +- conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.1.0-pyh71513ae_0.conda + sha256: 1f267886522dfb9ae4e5ebbc3135b5eb13cff27bdbfe8d881a4d893459166ab4 + md5: 2cc3f588512f04f3a0c64b4e9bedc02d depends: - python >=3.9 license: MIT license_family: MIT - size: 56354 - timestamp: 1734348889193 + size: 56370 + timestamp: 1737819298139 - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.1-h205f482_0.conda sha256: ebe5e33249f37f6bb481de99581ebdc92dbfcf1b6915609bcf3c9e78661d6352 md5: 9c500858e88df50af3cc883d194de78a @@ -2574,10 +2574,10 @@ packages: license_family: Apache size: 1178260 timestamp: 1736008642885 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-19.0.0-h00a82cf_7_cpu.conda - build_number: 7 - sha256: 8b401a256e4632ab6c1ea8d3cfb16d7c8ff3b0fe5af7cd474202a369c63dc74c - md5: 8d553fa6a138f369ed94b8b1a76f1e77 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-19.0.0-h00a82cf_8_cpu.conda + build_number: 8 + sha256: dcac39be95b9afe42bc9b7bfcfa258e31e413a4cb79c49f6707edf2838e8d64c + md5: 51e31b59290c09b58d290f66b908999b depends: - __glibc >=2.17,<3.0.a0 - aws-crt-cpp >=0.29.9,<0.29.10.0a0 @@ -2607,18 +2607,18 @@ packages: - snappy >=1.2.1,<1.3.0a0 - zstd >=1.5.6,<1.6.0a0 constrains: - - apache-arrow-proc =*=cpu - - arrow-cpp <0.0a0 - parquet-cpp <0.0a0 + - arrow-cpp <0.0a0 + - apache-arrow-proc =*=cpu arch: x86_64 platform: linux license: Apache-2.0 - size: 8979130 - timestamp: 1737757402544 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-19.0.0-h03ebaaf_7_cpu.conda - build_number: 7 - sha256: f029b7fbed445a2cb08b95686e9a9cb30c04a10998ef632c2cf84fd0c0d1e424 - md5: b94870200ac053eff3dda878d523f1d1 + size: 8969999 + timestamp: 1737824740139 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-19.0.0-h03ebaaf_8_cpu.conda + build_number: 8 + sha256: ca5db2ba71de0c4fb54ee12e3b841e3e90b988ae7a5935fae3cce90111b5cb6d + md5: 1ac6f73a63d715590a7ad0113a578762 depends: - aws-crt-cpp >=0.29.9,<0.29.10.0a0 - aws-sdk-cpp >=1.11.489,<1.11.490.0a0 @@ -2653,12 +2653,12 @@ packages: arch: aarch64 platform: linux license: Apache-2.0 - size: 8210159 - timestamp: 1737757741310 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-19.0.0-h819e3af_7_cpu.conda - build_number: 7 - sha256: e5e370673b9fe9459a826f474dc470b59fd6744fa652dd534f7ef722cd9be39c - md5: 3cb4f805d9742272591795d487786f2d + size: 8213318 + timestamp: 1737808895185 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-19.0.0-h819e3af_8_cpu.conda + build_number: 8 + sha256: 825afabd1c998dfddce9600584c492296a15219d441c6e3029e6c6228200d695 + md5: fbe0ce0ef6d386ab832ee5cca2ab3048 depends: - __osx >=11.0 - aws-crt-cpp >=0.29.9,<0.29.10.0a0 @@ -2687,155 +2687,155 @@ packages: - snappy >=1.2.1,<1.3.0a0 - zstd >=1.5.6,<1.6.0a0 constrains: - - parquet-cpp <0.0a0 - - apache-arrow-proc =*=cpu - arrow-cpp <0.0a0 + - apache-arrow-proc =*=cpu + - parquet-cpp <0.0a0 arch: arm64 platform: osx license: Apache-2.0 - size: 5540329 - timestamp: 1737756116679 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-19.0.0-hcb10f89_7_cpu.conda - build_number: 7 - sha256: 7018394af408b4ce344c97cd6f97bc676708067a9d2d834bf091b74f13b41be4 - md5: de10e3323bfa9dd8929f7fbe23665883 + size: 5573619 + timestamp: 1737806044972 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-19.0.0-hcb10f89_8_cpu.conda + build_number: 8 + sha256: bf8f64403685eb3ab6ebc5a25cc3a70431a1f822469bf96b0ee80c169deec0ac + md5: dafba09929a58e10bb8231ff7966e623 depends: - __glibc >=2.17,<3.0.a0 - - libarrow 19.0.0 h00a82cf_7_cpu + - libarrow 19.0.0 h00a82cf_8_cpu - libgcc >=13 - libstdcxx >=13 arch: x86_64 platform: linux license: Apache-2.0 - size: 637717 - timestamp: 1737757443960 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-19.0.0-h3b568fd_7_cpu.conda - build_number: 7 - sha256: 97911c3addb66033747e12c608ca32ce5c56d6d9f35674cfb97fff0ff4c7e926 - md5: d50c51a7d86454c90de667fcafb8c785 + size: 637555 + timestamp: 1737824783456 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-19.0.0-h3b568fd_8_cpu.conda + build_number: 8 + sha256: 154fe9bee1a1e3c96497fcbf3c01191965d5c4e9718dcbf8502035d7ff633499 + md5: e015edb6317c81893f9ce4865bbd55f4 depends: - - libarrow 19.0.0 h03ebaaf_7_cpu + - libarrow 19.0.0 h03ebaaf_8_cpu - libgcc >=13 - libstdcxx >=13 arch: aarch64 platform: linux license: Apache-2.0 - size: 602410 - timestamp: 1737757792970 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-19.0.0-hf07054f_7_cpu.conda - build_number: 7 - sha256: a716bd2c6106f0508e69800f73a9368f5b5fadba0cd1f7f7ac753bf43392bf4d - md5: a138208af40b21c840c1075f3bec5014 + size: 602892 + timestamp: 1737808980001 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-19.0.0-hf07054f_8_cpu.conda + build_number: 8 + sha256: 66ce35077dae435cd34644d53159af14afd62452eeec8f63cd55adb11e7f2780 + md5: 68cd272eccf7b4fcb0a3bab95e89e71e depends: - __osx >=11.0 - - libarrow 19.0.0 h819e3af_7_cpu + - libarrow 19.0.0 h819e3af_8_cpu - libcxx >=18 arch: arm64 platform: osx license: Apache-2.0 - size: 499319 - timestamp: 1737756215547 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-19.0.0-hcb10f89_7_cpu.conda - build_number: 7 - sha256: 4f3864b3f004fc320f28ecc5bb47e4cd927f40ef8dc6a16bdef51b34f51da921 - md5: eddf039322781fee4d4137f50769511c + size: 500365 + timestamp: 1737806169385 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-19.0.0-hcb10f89_8_cpu.conda + build_number: 8 + sha256: dc4a0f13428c9bd9781e25b67f5f52a92b8c4beafa2435fe5127e9fac7969218 + md5: 66e19108e4597b9a35d0886607c2d8a8 depends: - __glibc >=2.17,<3.0.a0 - - libarrow 19.0.0 h00a82cf_7_cpu - - libarrow-acero 19.0.0 hcb10f89_7_cpu + - libarrow 19.0.0 h00a82cf_8_cpu + - libarrow-acero 19.0.0 hcb10f89_8_cpu - libgcc >=13 - - libparquet 19.0.0 h081d1f1_7_cpu + - libparquet 19.0.0 h081d1f1_8_cpu - libstdcxx >=13 arch: x86_64 platform: linux license: Apache-2.0 - size: 605090 - timestamp: 1737757550128 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-19.0.0-h3b568fd_7_cpu.conda - build_number: 7 - sha256: e055430747eba48c99a7b1ebe0596e126a121eeffd6ba667c00554a0b2707839 - md5: 2d6208bc6ab9089ee1787d9abbefd172 + size: 604335 + timestamp: 1737824891062 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-19.0.0-h3b568fd_8_cpu.conda + build_number: 8 + sha256: f038f979b3357124a548dd83880f94284355a90e4736caaabd23c750cf06eaa9 + md5: 03f35d7f35dae0e05f5f4f747d7eb6e7 depends: - - libarrow 19.0.0 h03ebaaf_7_cpu - - libarrow-acero 19.0.0 h3b568fd_7_cpu + - libarrow 19.0.0 h03ebaaf_8_cpu + - libarrow-acero 19.0.0 h3b568fd_8_cpu - libgcc >=13 - - libparquet 19.0.0 hfc78867_7_cpu + - libparquet 19.0.0 hfc78867_8_cpu - libstdcxx >=13 arch: aarch64 platform: linux license: Apache-2.0 - size: 580599 - timestamp: 1737757863901 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-19.0.0-hf07054f_7_cpu.conda - build_number: 7 - sha256: dcc8d61eae311c5d377a41e2c6f964b86e7289917c93d3af03e5d4a4c88ab85a - md5: 5791e257ecb73e7745fa62446f22b1ea + size: 579626 + timestamp: 1737809072479 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-19.0.0-hf07054f_8_cpu.conda + build_number: 8 + sha256: 6934ce0503472f002695d45ae12a8f2948e10e7a0b7430330a4d0d83f3e5ca27 + md5: 1a941d1ddc16b532790781a4becdc881 depends: - __osx >=11.0 - - libarrow 19.0.0 h819e3af_7_cpu - - libarrow-acero 19.0.0 hf07054f_7_cpu + - libarrow 19.0.0 h819e3af_8_cpu + - libarrow-acero 19.0.0 hf07054f_8_cpu - libcxx >=18 - - libparquet 19.0.0 h636d7b7_7_cpu + - libparquet 19.0.0 h636d7b7_8_cpu arch: arm64 platform: osx license: Apache-2.0 - size: 500722 - timestamp: 1737757369380 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-19.0.0-h08228c5_7_cpu.conda - build_number: 7 - sha256: 51ec47ed56880cfd64bfa012c8488d127d8f0acfe0d64707880393d49a2663a2 - md5: e14afa8912873a094a30ad9e455bafc3 + size: 501001 + timestamp: 1737807214184 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-19.0.0-h08228c5_8_cpu.conda + build_number: 8 + sha256: e370ee738d3963120f715343a27cf041c62a3ee8bb19e25da9115ec4bae5f2de + md5: e5dd1926e5a4b23de8ba4eacc8eb9b2d depends: - __glibc >=2.17,<3.0.a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 19.0.0 h00a82cf_7_cpu - - libarrow-acero 19.0.0 hcb10f89_7_cpu - - libarrow-dataset 19.0.0 hcb10f89_7_cpu + - libarrow 19.0.0 h00a82cf_8_cpu + - libarrow-acero 19.0.0 hcb10f89_8_cpu + - libarrow-dataset 19.0.0 hcb10f89_8_cpu - libgcc >=13 - libprotobuf >=5.28.3,<5.28.4.0a0 - libstdcxx >=13 arch: x86_64 platform: linux license: Apache-2.0 - size: 521685 - timestamp: 1737757595490 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-19.0.0-h1e9d426_7_cpu.conda - build_number: 7 - sha256: bd85da0813384b5b5af2f2b05e4bc20aa606eb5528310c84e42aa495feec6050 - md5: b35923aad96b07d76db4c31ccc74584f + size: 521475 + timestamp: 1737824942852 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-19.0.0-h1e9d426_8_cpu.conda + build_number: 8 + sha256: 92e1fea8557a931c273ea3bd3bf73a4f4f0c566844dcedf78b9a16e5cf6cab56 + md5: ef08fcb5c165cdc743336bd8f4cbed69 depends: - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 19.0.0 h03ebaaf_7_cpu - - libarrow-acero 19.0.0 h3b568fd_7_cpu - - libarrow-dataset 19.0.0 h3b568fd_7_cpu + - libarrow 19.0.0 h03ebaaf_8_cpu + - libarrow-acero 19.0.0 h3b568fd_8_cpu + - libarrow-dataset 19.0.0 h3b568fd_8_cpu - libgcc >=13 - libprotobuf >=5.28.3,<5.28.4.0a0 - libstdcxx >=13 arch: aarch64 platform: linux license: Apache-2.0 - size: 515585 - timestamp: 1737757899077 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-19.0.0-h4239455_7_cpu.conda - build_number: 7 - sha256: 94e5351779728cacd3fcadcfe082fc840a79333ce8b1056bb811e39417decd2a - md5: 05a75db98927961f86b64340442150c3 + size: 516126 + timestamp: 1737809118915 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-19.0.0-h4239455_8_cpu.conda + build_number: 8 + sha256: 445d2ca20b07e57270f3b07b62c09794369413e5ff3716d9c73d0ad360969583 + md5: a39953d9b03b0463f4ccc187a8bcfcca depends: - __osx >=11.0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 19.0.0 h819e3af_7_cpu - - libarrow-acero 19.0.0 hf07054f_7_cpu - - libarrow-dataset 19.0.0 hf07054f_7_cpu + - libarrow 19.0.0 h819e3af_8_cpu + - libarrow-acero 19.0.0 hf07054f_8_cpu + - libarrow-dataset 19.0.0 hf07054f_8_cpu - libcxx >=18 - libprotobuf >=5.28.3,<5.28.4.0a0 arch: arm64 platform: osx license: Apache-2.0 - size: 449238 - timestamp: 1737757536452 + size: 449672 + timestamp: 1737807386331 - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-26_linux64_openblas.conda build_number: 26 sha256: 30bd658682b124243f8e52d8edf8a19e7be1bc31e4fe4baec30a64002dc8cd0c @@ -4043,13 +4043,13 @@ packages: license_family: APACHE size: 320565 timestamp: 1735643673319 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-19.0.0-h081d1f1_7_cpu.conda - build_number: 7 - sha256: f117af1368c613328fb3af251287c6885962d9477a55d9bf1ab253626730b4ea - md5: a8b3022bfe8a2cb4249229768401340c +- conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-19.0.0-h081d1f1_8_cpu.conda + build_number: 8 + sha256: b2e1bf8634efb643a9f15fe19f9bc0877482c509eff7cee6136278a2c2fa5842 + md5: bef810a8da683aa11c644066a87f71c3 depends: - __glibc >=2.17,<3.0.a0 - - libarrow 19.0.0 h00a82cf_7_cpu + - libarrow 19.0.0 h00a82cf_8_cpu - libgcc >=13 - libstdcxx >=13 - libthrift >=0.21.0,<0.21.1.0a0 @@ -4057,14 +4057,14 @@ packages: arch: x86_64 platform: linux license: Apache-2.0 - size: 1240902 - timestamp: 1737757526098 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-19.0.0-hfc78867_7_cpu.conda - build_number: 7 - sha256: 85a9964201ab6ed15b22a5ea29c66b44febc5a815a7d3234c3a605ca7644cc02 - md5: 8814a0cd443b9ebbb1662b370b6b14fb + size: 1241786 + timestamp: 1737824866572 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-19.0.0-hfc78867_8_cpu.conda + build_number: 8 + sha256: 8917fc5e5bb65894106bbd461d2f9c9c0c3dc642ff5da197c941bf620ce840a0 + md5: b0d5f8c122a3e9a6b75036e43e78fcfa depends: - - libarrow 19.0.0 h03ebaaf_7_cpu + - libarrow 19.0.0 h03ebaaf_8_cpu - libgcc >=13 - libstdcxx >=13 - libthrift >=0.21.0,<0.21.1.0a0 @@ -4072,26 +4072,26 @@ packages: arch: aarch64 platform: linux license: Apache-2.0 - size: 1153344 - timestamp: 1737757846296 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-19.0.0-h636d7b7_7_cpu.conda - build_number: 7 - sha256: 637298e97c586a74e19df44cf378be3e99274aef09ee1b2a5f30c4492bd62e0d - md5: 3f0e87a16e30ff26bb513fcda9f971ac + size: 1153834 + timestamp: 1737809048861 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-19.0.0-h636d7b7_8_cpu.conda + build_number: 8 + sha256: da04e6bd7ed2ca64aadf0ad12d9752e8423e85c37e0db80e27c7ff334fcbd2b6 + md5: c1ff2e71a289fb76146591c9d3f9de0a depends: - __osx >=11.0 - - libarrow 19.0.0 h819e3af_7_cpu + - libarrow 19.0.0 h819e3af_8_cpu - libcxx >=18 - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 arch: arm64 platform: osx license: Apache-2.0 - size: 893815 - timestamp: 1737757309795 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.45-h943b412_0.conda - sha256: b8f5b5ba9a14dedf7c97c01300de492b1b52b68eacbc3249a13fdbfa82349a2f - md5: 85cbdaacad93808395ac295b5667d25b + size: 893482 + timestamp: 1737807155720 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.46-h943b412_0.conda + sha256: a46436dadd12d58155280d68876dba2d8a3badbc8074956d14fe6530c7c7eda6 + md5: adcf7bacff219488e29cfa95a2abd8f7 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -4099,30 +4099,30 @@ packages: arch: x86_64 platform: linux license: zlib-acknowledgement - size: 289426 - timestamp: 1736339058310 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.45-hec79eb8_0.conda - sha256: a06daa523a0d5775acb96e6e3f083adc2ab1383eb8f664513dbc663f439c9cca - md5: 9a8716c16b40acc7148263de1d0a403b + size: 292273 + timestamp: 1737791061653 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.46-hec79eb8_0.conda + sha256: be4eefe8415c9b37d158eaa9522ce4c399a572339ac2bcc4d26d6433e0ed767d + md5: f9f793497c0973d5416421aa2f96cda4 depends: - libgcc >=13 - libzlib >=1.3.1,<2.0a0 arch: aarch64 platform: linux license: zlib-acknowledgement - size: 299051 - timestamp: 1736344007986 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.45-h3783ad8_0.conda - sha256: ddcc81c049b32fb5eb3ac1f9a6d3a589c08325c8ec6f89eb912208b19330d68c - md5: d554c806d065b1763cb9e1cb1d25741d + size: 304364 + timestamp: 1737795802176 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.46-h3783ad8_0.conda + sha256: db78a711561bb6df274ef421472d948dfd1093404db3915e891ae6d7fd37fadc + md5: 15d480fb9dad036eaa4de0b51eab3ccc depends: - __osx >=11.0 - libzlib >=1.3.1,<2.0a0 arch: arm64 platform: osx license: zlib-acknowledgement - size: 263151 - timestamp: 1736339184358 + size: 266516 + timestamp: 1737791023678 - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda sha256: 51125ebb8b7152e4a4e69fd2398489c4ec8473195c27cde3cbdf1cb6d18c5493 md5: d8703f1ffe5a06356f06467f1d0b9464 @@ -4853,47 +4853,47 @@ packages: license_family: BSD size: 24976 timestamp: 1733219849253 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025012505-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025012605-release.conda noarch: python - sha256: 83e72ee5d9c5965eefc04dc84a9f496b5064e006dbfcfe137ab1710285d6b3f3 - md5: 3359ea55713294fb8bb2c70e6bd5753a + sha256: 8c9827436fb98c4de9cdf0a0f74cdfe1dbe2efa8484f19ced1f4eb939ba0f919 + md5: f09aa38afbb5a1e68bc624a98556bd3f depends: - - max-core ==25.1.0.dev2025012505 release - - max-python >=25.1.0.dev2025012505,<26.0a0 - - mojo-jupyter ==25.1.0.dev2025012505 release - - mblack ==25.1.0.dev2025012505 release + - max-core ==25.1.0.dev2025012605 release + - max-python >=25.1.0.dev2025012605,<26.0a0 + - mojo-jupyter ==25.1.0.dev2025012605 release + - mblack ==25.1.0.dev2025012605 release license: LicenseRef-Modular-Proprietary - size: 9918 - timestamp: 1737782253436 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025012505-release.conda - sha256: d89d1a2279776c687b3b729d53b1e737477afc3eae214d5750b00a048667aaed - md5: ebf37a7d5882bb676718a5648dee3654 + size: 9920 + timestamp: 1737868622340 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025012605-release.conda + sha256: e9ef000deed41edd45df86cdeb3c46eb933a85dc7929f399d18746fa6bf84d3a + md5: d604a770e815feb97cc163a095d74322 depends: - - mblack ==25.1.0.dev2025012505 release + - mblack ==25.1.0.dev2025012605 release license: LicenseRef-Modular-Proprietary - size: 243130339 - timestamp: 1737782221031 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025012505-release.conda - sha256: ad52887002d135793158f9bc4afcd2ea1d89111f65351885669894bb23a83763 - md5: bde4e25a295f947b730261246613b83d + size: 243456510 + timestamp: 1737868720794 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025012605-release.conda + sha256: 589289450e22c82b178157c51ba011e795c115ee4da8f21d4dd8055e05d991c0 + md5: e4e7aecdda98cc52ba8e4c075170713b depends: - - mblack ==25.1.0.dev2025012505 release + - mblack ==25.1.0.dev2025012605 release license: LicenseRef-Modular-Proprietary - size: 245590611 - timestamp: 1737782253434 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025012505-release.conda - sha256: b1d103910f7b6a273906ea40f7dc993144511ed61239a5d764aca21ea479fe46 - md5: e01118f345f22ed4efb89192dfbbdbc6 + size: 245958004 + timestamp: 1737868622338 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025012605-release.conda + sha256: 3004e8b1fca572284485b488639c916e2028fc022e7f9eaece25676c0d420521 + md5: f188ddc4fef4410d599beafd55e61cf1 depends: - - mblack ==25.1.0.dev2025012505 release + - mblack ==25.1.0.dev2025012605 release license: LicenseRef-Modular-Proprietary - size: 204961123 - timestamp: 1737782482300 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025012505-3.11release.conda - sha256: 4921d719c4d8033dfb84fe7b14b87ac4a7a3c0be3d797d6d741161bd4117d72f - md5: 86e77e56d21daacc50f4fce33fa439ad + size: 205170122 + timestamp: 1737869052124 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025012605-3.11release.conda + sha256: 197a9f40d1e6d49f9ff0ca1d42b4a0ad4dc3d393eecbbbbfe4b2c253776caeb6 + md5: 627c21adfa7fe5618373942dfe9fa077 depends: - - max-core ==25.1.0.dev2025012505 release + - max-core ==25.1.0.dev2025012605 release - python 3.11.* - fastapi - httpx @@ -4914,13 +4914,13 @@ packages: - uvicorn - python_abi 3.11.* *_cp311 license: LicenseRef-Modular-Proprietary - size: 120584571 - timestamp: 1737782221037 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025012505-3.11release.conda - sha256: 4d1acc104c3be81fab3254b4fd3dfe289901bec5598095640cf7a9853c75f1f9 - md5: e59f7be421d9cd9d59d7d8929a70ad69 + size: 120663808 + timestamp: 1737868720800 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025012605-3.11release.conda + sha256: f0ba6690a65115f111d4076f591a71ffc973e8a1de3895fbd8d35eb8c93a29a9 + md5: c12aa3f097fa309bccbb60320415d4a5 depends: - - max-core ==25.1.0.dev2025012505 release + - max-core ==25.1.0.dev2025012605 release - python 3.11.* - fastapi - httpx @@ -4941,13 +4941,13 @@ packages: - uvicorn - python_abi 3.11.* *_cp311 license: LicenseRef-Modular-Proprietary - size: 123078620 - timestamp: 1737782253441 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025012505-3.11release.conda - sha256: 2c1b976ee6a40acff3a4cf69c812eafe0bcd30c47ee40c72bbfe7391439798ac - md5: ad138f1bb99cd69bb1ac3b3988f19003 + size: 123206793 + timestamp: 1737868622345 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025012605-3.11release.conda + sha256: 4590f14a55ed4daa394e653d748472f1e6c5570f70003820816b2cb77d8f2393 + md5: 306f822767c37f1d60fd970ebdac333e depends: - - max-core ==25.1.0.dev2025012505 release + - max-core ==25.1.0.dev2025012605 release - python 3.11.* - fastapi - httpx @@ -4968,12 +4968,12 @@ packages: - uvicorn - python_abi 3.11.* *_cp311 license: LicenseRef-Modular-Proprietary - size: 105988289 - timestamp: 1737782482302 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012505-release.conda + size: 106065941 + timestamp: 1737869052126 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012605-release.conda noarch: python - sha256: 906a374c4b22380993352480333cd5fc9c1a2e2179ab2e7ea65abc3bd54fc35e - md5: 3109b109f417bff02b27ff1cc78239ae + sha256: 76d9f174ae8245596fcbed5a05d7b0a49ef8eaceac009d1d4c2842f5f31592d6 + md5: f9b9c5654edb0396f0793d557c4fb898 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -4983,8 +4983,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130805 - timestamp: 1737782253440 + size: 130814 + timestamp: 1737868622344 - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda sha256: 78c1bbe1723449c52b7a9df1af2ee5f005209f67e40b6e1d3c7619127c43b1c7 md5: 592132998493b3ff25fd7479396e8351 @@ -4994,18 +4994,18 @@ packages: license_family: MIT size: 14465 timestamp: 1733255681319 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025012505-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025012605-release.conda noarch: python - sha256: 6cba6b01c693678b0e48d5428788d3734e885f6efc911b345fae474e4405460f - md5: 16521d51e47d4d67cf1a42351687f6b8 + sha256: 4e786c10774447edaf5fa00324223340fa7bba82c9b15058903aed23b2a43e25 + md5: 4b66d050c8e56e18a3a7feaaad38d20a depends: - - max-core ==25.1.0.dev2025012505 release + - max-core ==25.1.0.dev2025012605 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22934 - timestamp: 1737782253442 + size: 22930 + timestamp: 1737868622346 - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py311h2dc5d0c_2.conda sha256: afaab7a028281d8b5336db2b994fd3f9694862b6ca372c079dc4e84ad768c20a md5: bb8ca118919836624d920b4c44383a15 @@ -6674,17 +6674,17 @@ packages: license_family: BSD size: 15324 timestamp: 1735126414893 -- conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.45.2-pyha770c72_0.conda - sha256: 2c429dbbd5e7256517ef6cdfc30664b0c0e87f90f3c526afe3b97681aafb5623 - md5: acd5901cdd0365e18129f4748e524615 +- conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.45.3-pyha770c72_0.conda + sha256: be48c99e6fb8e12ebee09e6fbb4d78a170b614cdaa19ab791a8f5b6caf09919a + md5: 9b3a68bc7aed7949ef86f950993261f4 depends: - anyio >=3.6.2,<5 - python >=3.9 - typing_extensions >=3.10.0 license: BSD-3-Clause license_family: BSD - size: 58040 - timestamp: 1736016898891 + size: 57934 + timestamp: 1737824077668 - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda sha256: e0569c9caa68bf476bead1bed3d79650bb080b532c64a4af7d8ca286c08dea4e md5: d453b98d9c83e71da0741bb0ff4d76bc diff --git a/examples/notebooks/magic.lock b/examples/notebooks/magic.lock index 544df4382d..2a61a6f390 100644 --- a/examples/notebooks/magic.lock +++ b/examples/notebooks/magic.lock @@ -18,7 +18,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.3.0-pyh71513ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.1.0-pyh71513ae_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.1-h205f482_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.1-h1a47875_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.10.6-hb9d3cd8_0.conda @@ -112,10 +112,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-19.0.0-h00a82cf_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-19.0.0-hcb10f89_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-19.0.0-hcb10f89_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-19.0.0-h08228c5_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-19.0.0-h00a82cf_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-19.0.0-hcb10f89_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-19.0.0-hcb10f89_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-19.0.0-h08228c5_8_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-26_linux64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hb9d3cd8_2.conda @@ -146,8 +146,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.28-pthreads_h94d23a6_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-1.18.0-hfcad708_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-headers-1.18.0-ha770c72_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-19.0.0-h081d1f1_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.45-h943b412_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-19.0.0-h081d1f1_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.46-h943b412_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda @@ -169,13 +169,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/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-25.1.0.dev2025012505-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025012505-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025012505-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025012605-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025012605-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025012605-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012605-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.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025012505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025012605-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 @@ -241,7 +241,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.0-py312hbf22597_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/re2-2024.07.02-h9925aae_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.36.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.36.2-pyh29332c3_0.conda - 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/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda @@ -260,7 +260,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.45.2-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.45.3-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh0d859eb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda @@ -313,7 +313,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.3.0-pyh71513ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.1.0-pyh71513ae_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.1-hb7ec8d5_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.1-h740c5af_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-common-0.10.6-h86ecc28_0.conda @@ -408,10 +408,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.0.0-h4de3ea5_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h18dbdb1_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-19.0.0-h03ebaaf_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-19.0.0-h3b568fd_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-19.0.0-h3b568fd_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-19.0.0-h1e9d426_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-19.0.0-h03ebaaf_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-19.0.0-h3b568fd_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-19.0.0-h3b568fd_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-19.0.0-h1e9d426_8_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-26_linuxaarch64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlicommon-1.1.0-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlidec-1.1.0-h86ecc28_2.conda @@ -442,8 +442,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.28-pthreads_h9d3fd7e_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopentelemetry-cpp-1.18.0-h60b47f9_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopentelemetry-cpp-headers-1.18.0-h8af1aa0_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-19.0.0-hfc78867_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.45-hec79eb8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-19.0.0-hfc78867_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.46-hec79eb8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.3-h44a3b7b_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.20-h68df207_0.conda @@ -465,13 +465,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/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-25.1.0.dev2025012505-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025012505-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025012505-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025012605-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025012605-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025012605-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012605-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.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025012505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025012605-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 @@ -537,7 +537,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyzmq-26.2.0-py312h2427ae1_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/re2-2024.07.02-haa97905_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8fc344f_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.36.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.36.2-pyh29332c3_0.conda - 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/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda @@ -556,7 +556,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.45.2-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.45.3-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh0d859eb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda @@ -609,7 +609,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.3.0-pyh71513ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.1.0-pyh71513ae_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.1-hfc2798a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.1-hc8a0bd2_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.10.6-h5505292_0.conda @@ -702,10 +702,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.16-ha0e7c42_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_h07bc746_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-19.0.0-h819e3af_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-19.0.0-hf07054f_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-19.0.0-hf07054f_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-19.0.0-h4239455_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-19.0.0-h819e3af_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-19.0.0-hf07054f_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-19.0.0-hf07054f_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-19.0.0-h4239455_8_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-26_osxarm64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.1.0-hd74edd7_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.1.0-hd74edd7_2.conda @@ -733,8 +733,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.28-openmp_hf332438_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopentelemetry-cpp-1.18.0-h0c05b2d_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopentelemetry-cpp-headers-1.18.0-hce30654_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-19.0.0-h636d7b7_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.45-h3783ad8_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-19.0.0-h636d7b7_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.46-h3783ad8_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.3-h3bd63a1_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h07bc746_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda @@ -753,13 +753,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-25.1.0.dev2025012505-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025012505-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025012505-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025012605-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025012605-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025012605-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012605-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.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025012505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025012605-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 @@ -827,7 +827,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.0-py312hf8a1cbd_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/re2-2024.07.02-h6589ca4_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h92ec313_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.36.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.36.2-pyh29332c3_0.conda - 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/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda @@ -845,7 +845,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.45.2-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.45.3-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh31c8845_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda @@ -1131,15 +1131,15 @@ packages: license_family: MIT size: 15318 timestamp: 1733584388228 -- conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.3.0-pyh71513ae_0.conda - sha256: 750186af694a7130eaf7119fbb56db0d2326d8995ad5b8eae23c622b85fea29a - md5: 356927ace43302bf6f5926e2a58dae6a +- conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.1.0-pyh71513ae_0.conda + sha256: 1f267886522dfb9ae4e5ebbc3135b5eb13cff27bdbfe8d881a4d893459166ab4 + md5: 2cc3f588512f04f3a0c64b4e9bedc02d depends: - python >=3.9 license: MIT license_family: MIT - size: 56354 - timestamp: 1734348889193 + size: 56370 + timestamp: 1737819298139 - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.1-h205f482_0.conda sha256: ebe5e33249f37f6bb481de99581ebdc92dbfcf1b6915609bcf3c9e78661d6352 md5: 9c500858e88df50af3cc883d194de78a @@ -3362,10 +3362,10 @@ packages: license_family: Apache size: 1178260 timestamp: 1736008642885 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-19.0.0-h00a82cf_7_cpu.conda - build_number: 7 - sha256: 8b401a256e4632ab6c1ea8d3cfb16d7c8ff3b0fe5af7cd474202a369c63dc74c - md5: 8d553fa6a138f369ed94b8b1a76f1e77 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-19.0.0-h00a82cf_8_cpu.conda + build_number: 8 + sha256: dcac39be95b9afe42bc9b7bfcfa258e31e413a4cb79c49f6707edf2838e8d64c + md5: 51e31b59290c09b58d290f66b908999b depends: - __glibc >=2.17,<3.0.a0 - aws-crt-cpp >=0.29.9,<0.29.10.0a0 @@ -3395,18 +3395,18 @@ packages: - snappy >=1.2.1,<1.3.0a0 - zstd >=1.5.6,<1.6.0a0 constrains: - - apache-arrow-proc =*=cpu - - arrow-cpp <0.0a0 - parquet-cpp <0.0a0 + - arrow-cpp <0.0a0 + - apache-arrow-proc =*=cpu arch: x86_64 platform: linux license: Apache-2.0 - size: 8979130 - timestamp: 1737757402544 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-19.0.0-h03ebaaf_7_cpu.conda - build_number: 7 - sha256: f029b7fbed445a2cb08b95686e9a9cb30c04a10998ef632c2cf84fd0c0d1e424 - md5: b94870200ac053eff3dda878d523f1d1 + size: 8969999 + timestamp: 1737824740139 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-19.0.0-h03ebaaf_8_cpu.conda + build_number: 8 + sha256: ca5db2ba71de0c4fb54ee12e3b841e3e90b988ae7a5935fae3cce90111b5cb6d + md5: 1ac6f73a63d715590a7ad0113a578762 depends: - aws-crt-cpp >=0.29.9,<0.29.10.0a0 - aws-sdk-cpp >=1.11.489,<1.11.490.0a0 @@ -3441,12 +3441,12 @@ packages: arch: aarch64 platform: linux license: Apache-2.0 - size: 8210159 - timestamp: 1737757741310 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-19.0.0-h819e3af_7_cpu.conda - build_number: 7 - sha256: e5e370673b9fe9459a826f474dc470b59fd6744fa652dd534f7ef722cd9be39c - md5: 3cb4f805d9742272591795d487786f2d + size: 8213318 + timestamp: 1737808895185 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-19.0.0-h819e3af_8_cpu.conda + build_number: 8 + sha256: 825afabd1c998dfddce9600584c492296a15219d441c6e3029e6c6228200d695 + md5: fbe0ce0ef6d386ab832ee5cca2ab3048 depends: - __osx >=11.0 - aws-crt-cpp >=0.29.9,<0.29.10.0a0 @@ -3475,155 +3475,155 @@ packages: - snappy >=1.2.1,<1.3.0a0 - zstd >=1.5.6,<1.6.0a0 constrains: - - parquet-cpp <0.0a0 - - apache-arrow-proc =*=cpu - arrow-cpp <0.0a0 + - apache-arrow-proc =*=cpu + - parquet-cpp <0.0a0 arch: arm64 platform: osx license: Apache-2.0 - size: 5540329 - timestamp: 1737756116679 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-19.0.0-hcb10f89_7_cpu.conda - build_number: 7 - sha256: 7018394af408b4ce344c97cd6f97bc676708067a9d2d834bf091b74f13b41be4 - md5: de10e3323bfa9dd8929f7fbe23665883 + size: 5573619 + timestamp: 1737806044972 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-19.0.0-hcb10f89_8_cpu.conda + build_number: 8 + sha256: bf8f64403685eb3ab6ebc5a25cc3a70431a1f822469bf96b0ee80c169deec0ac + md5: dafba09929a58e10bb8231ff7966e623 depends: - __glibc >=2.17,<3.0.a0 - - libarrow 19.0.0 h00a82cf_7_cpu + - libarrow 19.0.0 h00a82cf_8_cpu - libgcc >=13 - libstdcxx >=13 arch: x86_64 platform: linux license: Apache-2.0 - size: 637717 - timestamp: 1737757443960 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-19.0.0-h3b568fd_7_cpu.conda - build_number: 7 - sha256: 97911c3addb66033747e12c608ca32ce5c56d6d9f35674cfb97fff0ff4c7e926 - md5: d50c51a7d86454c90de667fcafb8c785 + size: 637555 + timestamp: 1737824783456 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-19.0.0-h3b568fd_8_cpu.conda + build_number: 8 + sha256: 154fe9bee1a1e3c96497fcbf3c01191965d5c4e9718dcbf8502035d7ff633499 + md5: e015edb6317c81893f9ce4865bbd55f4 depends: - - libarrow 19.0.0 h03ebaaf_7_cpu + - libarrow 19.0.0 h03ebaaf_8_cpu - libgcc >=13 - libstdcxx >=13 arch: aarch64 platform: linux license: Apache-2.0 - size: 602410 - timestamp: 1737757792970 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-19.0.0-hf07054f_7_cpu.conda - build_number: 7 - sha256: a716bd2c6106f0508e69800f73a9368f5b5fadba0cd1f7f7ac753bf43392bf4d - md5: a138208af40b21c840c1075f3bec5014 + size: 602892 + timestamp: 1737808980001 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-19.0.0-hf07054f_8_cpu.conda + build_number: 8 + sha256: 66ce35077dae435cd34644d53159af14afd62452eeec8f63cd55adb11e7f2780 + md5: 68cd272eccf7b4fcb0a3bab95e89e71e depends: - __osx >=11.0 - - libarrow 19.0.0 h819e3af_7_cpu + - libarrow 19.0.0 h819e3af_8_cpu - libcxx >=18 arch: arm64 platform: osx license: Apache-2.0 - size: 499319 - timestamp: 1737756215547 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-19.0.0-hcb10f89_7_cpu.conda - build_number: 7 - sha256: 4f3864b3f004fc320f28ecc5bb47e4cd927f40ef8dc6a16bdef51b34f51da921 - md5: eddf039322781fee4d4137f50769511c + size: 500365 + timestamp: 1737806169385 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-19.0.0-hcb10f89_8_cpu.conda + build_number: 8 + sha256: dc4a0f13428c9bd9781e25b67f5f52a92b8c4beafa2435fe5127e9fac7969218 + md5: 66e19108e4597b9a35d0886607c2d8a8 depends: - __glibc >=2.17,<3.0.a0 - - libarrow 19.0.0 h00a82cf_7_cpu - - libarrow-acero 19.0.0 hcb10f89_7_cpu + - libarrow 19.0.0 h00a82cf_8_cpu + - libarrow-acero 19.0.0 hcb10f89_8_cpu - libgcc >=13 - - libparquet 19.0.0 h081d1f1_7_cpu + - libparquet 19.0.0 h081d1f1_8_cpu - libstdcxx >=13 arch: x86_64 platform: linux license: Apache-2.0 - size: 605090 - timestamp: 1737757550128 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-19.0.0-h3b568fd_7_cpu.conda - build_number: 7 - sha256: e055430747eba48c99a7b1ebe0596e126a121eeffd6ba667c00554a0b2707839 - md5: 2d6208bc6ab9089ee1787d9abbefd172 + size: 604335 + timestamp: 1737824891062 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-19.0.0-h3b568fd_8_cpu.conda + build_number: 8 + sha256: f038f979b3357124a548dd83880f94284355a90e4736caaabd23c750cf06eaa9 + md5: 03f35d7f35dae0e05f5f4f747d7eb6e7 depends: - - libarrow 19.0.0 h03ebaaf_7_cpu - - libarrow-acero 19.0.0 h3b568fd_7_cpu + - libarrow 19.0.0 h03ebaaf_8_cpu + - libarrow-acero 19.0.0 h3b568fd_8_cpu - libgcc >=13 - - libparquet 19.0.0 hfc78867_7_cpu + - libparquet 19.0.0 hfc78867_8_cpu - libstdcxx >=13 arch: aarch64 platform: linux license: Apache-2.0 - size: 580599 - timestamp: 1737757863901 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-19.0.0-hf07054f_7_cpu.conda - build_number: 7 - sha256: dcc8d61eae311c5d377a41e2c6f964b86e7289917c93d3af03e5d4a4c88ab85a - md5: 5791e257ecb73e7745fa62446f22b1ea + size: 579626 + timestamp: 1737809072479 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-19.0.0-hf07054f_8_cpu.conda + build_number: 8 + sha256: 6934ce0503472f002695d45ae12a8f2948e10e7a0b7430330a4d0d83f3e5ca27 + md5: 1a941d1ddc16b532790781a4becdc881 depends: - __osx >=11.0 - - libarrow 19.0.0 h819e3af_7_cpu - - libarrow-acero 19.0.0 hf07054f_7_cpu + - libarrow 19.0.0 h819e3af_8_cpu + - libarrow-acero 19.0.0 hf07054f_8_cpu - libcxx >=18 - - libparquet 19.0.0 h636d7b7_7_cpu + - libparquet 19.0.0 h636d7b7_8_cpu arch: arm64 platform: osx license: Apache-2.0 - size: 500722 - timestamp: 1737757369380 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-19.0.0-h08228c5_7_cpu.conda - build_number: 7 - sha256: 51ec47ed56880cfd64bfa012c8488d127d8f0acfe0d64707880393d49a2663a2 - md5: e14afa8912873a094a30ad9e455bafc3 + size: 501001 + timestamp: 1737807214184 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-19.0.0-h08228c5_8_cpu.conda + build_number: 8 + sha256: e370ee738d3963120f715343a27cf041c62a3ee8bb19e25da9115ec4bae5f2de + md5: e5dd1926e5a4b23de8ba4eacc8eb9b2d depends: - __glibc >=2.17,<3.0.a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 19.0.0 h00a82cf_7_cpu - - libarrow-acero 19.0.0 hcb10f89_7_cpu - - libarrow-dataset 19.0.0 hcb10f89_7_cpu + - libarrow 19.0.0 h00a82cf_8_cpu + - libarrow-acero 19.0.0 hcb10f89_8_cpu + - libarrow-dataset 19.0.0 hcb10f89_8_cpu - libgcc >=13 - libprotobuf >=5.28.3,<5.28.4.0a0 - libstdcxx >=13 arch: x86_64 platform: linux license: Apache-2.0 - size: 521685 - timestamp: 1737757595490 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-19.0.0-h1e9d426_7_cpu.conda - build_number: 7 - sha256: bd85da0813384b5b5af2f2b05e4bc20aa606eb5528310c84e42aa495feec6050 - md5: b35923aad96b07d76db4c31ccc74584f + size: 521475 + timestamp: 1737824942852 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-19.0.0-h1e9d426_8_cpu.conda + build_number: 8 + sha256: 92e1fea8557a931c273ea3bd3bf73a4f4f0c566844dcedf78b9a16e5cf6cab56 + md5: ef08fcb5c165cdc743336bd8f4cbed69 depends: - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 19.0.0 h03ebaaf_7_cpu - - libarrow-acero 19.0.0 h3b568fd_7_cpu - - libarrow-dataset 19.0.0 h3b568fd_7_cpu + - libarrow 19.0.0 h03ebaaf_8_cpu + - libarrow-acero 19.0.0 h3b568fd_8_cpu + - libarrow-dataset 19.0.0 h3b568fd_8_cpu - libgcc >=13 - libprotobuf >=5.28.3,<5.28.4.0a0 - libstdcxx >=13 arch: aarch64 platform: linux license: Apache-2.0 - size: 515585 - timestamp: 1737757899077 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-19.0.0-h4239455_7_cpu.conda - build_number: 7 - sha256: 94e5351779728cacd3fcadcfe082fc840a79333ce8b1056bb811e39417decd2a - md5: 05a75db98927961f86b64340442150c3 + size: 516126 + timestamp: 1737809118915 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-19.0.0-h4239455_8_cpu.conda + build_number: 8 + sha256: 445d2ca20b07e57270f3b07b62c09794369413e5ff3716d9c73d0ad360969583 + md5: a39953d9b03b0463f4ccc187a8bcfcca depends: - __osx >=11.0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 19.0.0 h819e3af_7_cpu - - libarrow-acero 19.0.0 hf07054f_7_cpu - - libarrow-dataset 19.0.0 hf07054f_7_cpu + - libarrow 19.0.0 h819e3af_8_cpu + - libarrow-acero 19.0.0 hf07054f_8_cpu + - libarrow-dataset 19.0.0 hf07054f_8_cpu - libcxx >=18 - libprotobuf >=5.28.3,<5.28.4.0a0 arch: arm64 platform: osx license: Apache-2.0 - size: 449238 - timestamp: 1737757536452 + size: 449672 + timestamp: 1737807386331 - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-26_linux64_openblas.conda build_number: 26 sha256: 30bd658682b124243f8e52d8edf8a19e7be1bc31e4fe4baec30a64002dc8cd0c @@ -4831,13 +4831,13 @@ packages: license_family: APACHE size: 320565 timestamp: 1735643673319 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-19.0.0-h081d1f1_7_cpu.conda - build_number: 7 - sha256: f117af1368c613328fb3af251287c6885962d9477a55d9bf1ab253626730b4ea - md5: a8b3022bfe8a2cb4249229768401340c +- conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-19.0.0-h081d1f1_8_cpu.conda + build_number: 8 + sha256: b2e1bf8634efb643a9f15fe19f9bc0877482c509eff7cee6136278a2c2fa5842 + md5: bef810a8da683aa11c644066a87f71c3 depends: - __glibc >=2.17,<3.0.a0 - - libarrow 19.0.0 h00a82cf_7_cpu + - libarrow 19.0.0 h00a82cf_8_cpu - libgcc >=13 - libstdcxx >=13 - libthrift >=0.21.0,<0.21.1.0a0 @@ -4845,14 +4845,14 @@ packages: arch: x86_64 platform: linux license: Apache-2.0 - size: 1240902 - timestamp: 1737757526098 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-19.0.0-hfc78867_7_cpu.conda - build_number: 7 - sha256: 85a9964201ab6ed15b22a5ea29c66b44febc5a815a7d3234c3a605ca7644cc02 - md5: 8814a0cd443b9ebbb1662b370b6b14fb + size: 1241786 + timestamp: 1737824866572 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-19.0.0-hfc78867_8_cpu.conda + build_number: 8 + sha256: 8917fc5e5bb65894106bbd461d2f9c9c0c3dc642ff5da197c941bf620ce840a0 + md5: b0d5f8c122a3e9a6b75036e43e78fcfa depends: - - libarrow 19.0.0 h03ebaaf_7_cpu + - libarrow 19.0.0 h03ebaaf_8_cpu - libgcc >=13 - libstdcxx >=13 - libthrift >=0.21.0,<0.21.1.0a0 @@ -4860,26 +4860,26 @@ packages: arch: aarch64 platform: linux license: Apache-2.0 - size: 1153344 - timestamp: 1737757846296 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-19.0.0-h636d7b7_7_cpu.conda - build_number: 7 - sha256: 637298e97c586a74e19df44cf378be3e99274aef09ee1b2a5f30c4492bd62e0d - md5: 3f0e87a16e30ff26bb513fcda9f971ac + size: 1153834 + timestamp: 1737809048861 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-19.0.0-h636d7b7_8_cpu.conda + build_number: 8 + sha256: da04e6bd7ed2ca64aadf0ad12d9752e8423e85c37e0db80e27c7ff334fcbd2b6 + md5: c1ff2e71a289fb76146591c9d3f9de0a depends: - __osx >=11.0 - - libarrow 19.0.0 h819e3af_7_cpu + - libarrow 19.0.0 h819e3af_8_cpu - libcxx >=18 - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 arch: arm64 platform: osx license: Apache-2.0 - size: 893815 - timestamp: 1737757309795 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.45-h943b412_0.conda - sha256: b8f5b5ba9a14dedf7c97c01300de492b1b52b68eacbc3249a13fdbfa82349a2f - md5: 85cbdaacad93808395ac295b5667d25b + size: 893482 + timestamp: 1737807155720 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.46-h943b412_0.conda + sha256: a46436dadd12d58155280d68876dba2d8a3badbc8074956d14fe6530c7c7eda6 + md5: adcf7bacff219488e29cfa95a2abd8f7 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -4887,30 +4887,30 @@ packages: arch: x86_64 platform: linux license: zlib-acknowledgement - size: 289426 - timestamp: 1736339058310 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.45-hec79eb8_0.conda - sha256: a06daa523a0d5775acb96e6e3f083adc2ab1383eb8f664513dbc663f439c9cca - md5: 9a8716c16b40acc7148263de1d0a403b + size: 292273 + timestamp: 1737791061653 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.46-hec79eb8_0.conda + sha256: be4eefe8415c9b37d158eaa9522ce4c399a572339ac2bcc4d26d6433e0ed767d + md5: f9f793497c0973d5416421aa2f96cda4 depends: - libgcc >=13 - libzlib >=1.3.1,<2.0a0 arch: aarch64 platform: linux license: zlib-acknowledgement - size: 299051 - timestamp: 1736344007986 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.45-h3783ad8_0.conda - sha256: ddcc81c049b32fb5eb3ac1f9a6d3a589c08325c8ec6f89eb912208b19330d68c - md5: d554c806d065b1763cb9e1cb1d25741d + size: 304364 + timestamp: 1737795802176 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.46-h3783ad8_0.conda + sha256: db78a711561bb6df274ef421472d948dfd1093404db3915e891ae6d7fd37fadc + md5: 15d480fb9dad036eaa4de0b51eab3ccc depends: - __osx >=11.0 - libzlib >=1.3.1,<2.0a0 arch: arm64 platform: osx license: zlib-acknowledgement - size: 263151 - timestamp: 1736339184358 + size: 266516 + timestamp: 1737791023678 - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda sha256: 51125ebb8b7152e4a4e69fd2398489c4ec8473195c27cde3cbdf1cb6d18c5493 md5: d8703f1ffe5a06356f06467f1d0b9464 @@ -5651,47 +5651,47 @@ packages: license_family: BSD size: 14467 timestamp: 1733417051523 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025012505-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025012605-release.conda noarch: python - sha256: 83e72ee5d9c5965eefc04dc84a9f496b5064e006dbfcfe137ab1710285d6b3f3 - md5: 3359ea55713294fb8bb2c70e6bd5753a + sha256: 8c9827436fb98c4de9cdf0a0f74cdfe1dbe2efa8484f19ced1f4eb939ba0f919 + md5: f09aa38afbb5a1e68bc624a98556bd3f depends: - - max-core ==25.1.0.dev2025012505 release - - max-python >=25.1.0.dev2025012505,<26.0a0 - - mojo-jupyter ==25.1.0.dev2025012505 release - - mblack ==25.1.0.dev2025012505 release + - max-core ==25.1.0.dev2025012605 release + - max-python >=25.1.0.dev2025012605,<26.0a0 + - mojo-jupyter ==25.1.0.dev2025012605 release + - mblack ==25.1.0.dev2025012605 release license: LicenseRef-Modular-Proprietary - size: 9918 - timestamp: 1737782253436 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025012505-release.conda - sha256: d89d1a2279776c687b3b729d53b1e737477afc3eae214d5750b00a048667aaed - md5: ebf37a7d5882bb676718a5648dee3654 + size: 9920 + timestamp: 1737868622340 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025012605-release.conda + sha256: e9ef000deed41edd45df86cdeb3c46eb933a85dc7929f399d18746fa6bf84d3a + md5: d604a770e815feb97cc163a095d74322 depends: - - mblack ==25.1.0.dev2025012505 release + - mblack ==25.1.0.dev2025012605 release license: LicenseRef-Modular-Proprietary - size: 243130339 - timestamp: 1737782221031 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025012505-release.conda - sha256: ad52887002d135793158f9bc4afcd2ea1d89111f65351885669894bb23a83763 - md5: bde4e25a295f947b730261246613b83d + size: 243456510 + timestamp: 1737868720794 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025012605-release.conda + sha256: 589289450e22c82b178157c51ba011e795c115ee4da8f21d4dd8055e05d991c0 + md5: e4e7aecdda98cc52ba8e4c075170713b depends: - - mblack ==25.1.0.dev2025012505 release + - mblack ==25.1.0.dev2025012605 release license: LicenseRef-Modular-Proprietary - size: 245590611 - timestamp: 1737782253434 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025012505-release.conda - sha256: b1d103910f7b6a273906ea40f7dc993144511ed61239a5d764aca21ea479fe46 - md5: e01118f345f22ed4efb89192dfbbdbc6 + size: 245958004 + timestamp: 1737868622338 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025012605-release.conda + sha256: 3004e8b1fca572284485b488639c916e2028fc022e7f9eaece25676c0d420521 + md5: f188ddc4fef4410d599beafd55e61cf1 depends: - - mblack ==25.1.0.dev2025012505 release + - mblack ==25.1.0.dev2025012605 release license: LicenseRef-Modular-Proprietary - size: 204961123 - timestamp: 1737782482300 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025012505-3.12release.conda - sha256: b52562f368fe5dbc95343bcd7f2ee4699a25589c689b0cba444e5a93757b1ea7 - md5: a43f10619b5e0502b7f59ad823770f9f + size: 205170122 + timestamp: 1737869052124 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025012605-3.12release.conda + sha256: 296dcbab2616decb3e19510a8d56d2ad7208fbdc65aa9a5c65c24053e097083d + md5: ae1b2c8ed2537bc3b9cba21266b5771e depends: - - max-core ==25.1.0.dev2025012505 release + - max-core ==25.1.0.dev2025012605 release - python 3.12.* - fastapi - httpx @@ -5712,13 +5712,13 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 120565142 - timestamp: 1737782221040 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025012505-3.12release.conda - sha256: c6252c78ced4b1a2c793ff2cb5846bd34dd6d16e8fd65425e9f1df6fe6227b0d - md5: 8ee044754ebf79922c85299e7425abf3 + size: 120667192 + timestamp: 1737868720803 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025012605-3.12release.conda + sha256: d84debf9ad9537afbf502c89baa3e606e12caba812b193d05e5480ffbec8a8f3 + md5: b2f7e32d1931ad233be7967b4e4880d6 depends: - - max-core ==25.1.0.dev2025012505 release + - max-core ==25.1.0.dev2025012605 release - python 3.12.* - fastapi - httpx @@ -5739,13 +5739,13 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 123069129 - timestamp: 1737782253444 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025012505-3.12release.conda - sha256: 489140758c2f0df45e077c6d52aac9bd419774b2d00b0a594d49505495e7aca4 - md5: 03b88370aa08d78471ff2e88973534d3 + size: 123187293 + timestamp: 1737868622348 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025012605-3.12release.conda + sha256: a4fa173d3d6f12a6ee5fa1dc61300fa3392fd82e416025a0cbd97c6ac01e2288 + md5: 9e3138e7bcd85feea476ca22514f1e1b depends: - - max-core ==25.1.0.dev2025012505 release + - max-core ==25.1.0.dev2025012605 release - python 3.12.* - fastapi - httpx @@ -5766,12 +5766,12 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 105954416 - timestamp: 1737782482303 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012505-release.conda + size: 106062355 + timestamp: 1737869052127 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012605-release.conda noarch: python - sha256: 906a374c4b22380993352480333cd5fc9c1a2e2179ab2e7ea65abc3bd54fc35e - md5: 3109b109f417bff02b27ff1cc78239ae + sha256: 76d9f174ae8245596fcbed5a05d7b0a49ef8eaceac009d1d4c2842f5f31592d6 + md5: f9b9c5654edb0396f0793d557c4fb898 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -5781,8 +5781,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130805 - timestamp: 1737782253440 + size: 130814 + timestamp: 1737868622344 - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda sha256: 78c1bbe1723449c52b7a9df1af2ee5f005209f67e40b6e1d3c7619127c43b1c7 md5: 592132998493b3ff25fd7479396e8351 @@ -5802,18 +5802,18 @@ packages: license_family: BSD size: 68803 timestamp: 1735686983426 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025012505-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025012605-release.conda noarch: python - sha256: 6cba6b01c693678b0e48d5428788d3734e885f6efc911b345fae474e4405460f - md5: 16521d51e47d4d67cf1a42351687f6b8 + sha256: 4e786c10774447edaf5fa00324223340fa7bba82c9b15058903aed23b2a43e25 + md5: 4b66d050c8e56e18a3a7feaaad38d20a depends: - - max-core ==25.1.0.dev2025012505 release + - max-core ==25.1.0.dev2025012605 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22934 - timestamp: 1737782253442 + size: 22930 + timestamp: 1737868622346 - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py312h178313f_2.conda sha256: b05bc8252a6e957bf4a776ed5e0e61d1ba88cdc46ccb55890c72cc58b10371f4 md5: 5b5e3267d915a107eca793d52e1b780a @@ -7472,18 +7472,18 @@ packages: license_family: GPL size: 250351 timestamp: 1679532511311 -- conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.36.1-pyhd8ed1ab_0.conda - sha256: 55a8c68d75bc70624be9dbd5550d2de0fae295363fb836860a4a5d244a5b088a - md5: dbb48421efd666ea133c6d5e67291766 +- conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.36.2-pyh29332c3_0.conda + sha256: e20909f474a6cece176dfc0dc1addac265deb5fa92ea90e975fbca48085b20c3 + md5: 9140f1c09dd5489549c6a33931b943c7 depends: - attrs >=22.2.0 - python >=3.9 - rpds-py >=0.7.0 - typing_extensions >=4.4.0 + - python license: MIT - license_family: MIT - size: 42296 - timestamp: 1737120499679 + size: 51668 + timestamp: 1737836872415 - conda: https://conda.anaconda.org/conda-forge/linux-64/regex-2024.11.6-py312h66e93f0_0.conda sha256: fcb5687d3ec5fff580b64b8fb649d9d65c999a91a5c3108a313ecdd2de99f06b md5: 647770db979b43f9c9ca25dcfa7dc4e4 @@ -7831,17 +7831,17 @@ packages: license_family: MIT size: 26988 timestamp: 1733569565672 -- conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.45.2-pyha770c72_0.conda - sha256: 2c429dbbd5e7256517ef6cdfc30664b0c0e87f90f3c526afe3b97681aafb5623 - md5: acd5901cdd0365e18129f4748e524615 +- conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.45.3-pyha770c72_0.conda + sha256: be48c99e6fb8e12ebee09e6fbb4d78a170b614cdaa19ab791a8f5b6caf09919a + md5: 9b3a68bc7aed7949ef86f950993261f4 depends: - anyio >=3.6.2,<5 - python >=3.9 - typing_extensions >=3.10.0 license: BSD-3-Clause license_family: BSD - size: 58040 - timestamp: 1736016898891 + size: 57934 + timestamp: 1737824077668 - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh0d859eb_0.conda sha256: b300557c0382478cf661ddb520263508e4b3b5871b471410450ef2846e8c352c md5: efba281bbdae5f6b0a1d53c6d4a97c93 diff --git a/examples/operators/magic.lock b/examples/operators/magic.lock index 2ef666c55d..4d9c20ea30 100644 --- a/examples/operators/magic.lock +++ b/examples/operators/magic.lock @@ -13,7 +13,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.8.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.3.0-pyh71513ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.1.0-pyh71513ae_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.1-h205f482_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.1-h1a47875_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.10.6-hb9d3cd8_0.conda @@ -77,10 +77,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-19.0.0-h00a82cf_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-19.0.0-hcb10f89_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-19.0.0-hcb10f89_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-19.0.0-h08228c5_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-19.0.0-h00a82cf_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-19.0.0-hcb10f89_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-19.0.0-hcb10f89_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-19.0.0-h08228c5_8_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-26_linux64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hb9d3cd8_2.conda @@ -111,8 +111,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.28-pthreads_h94d23a6_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-1.18.0-hfcad708_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-headers-1.18.0-ha770c72_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-19.0.0-h081d1f1_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.45-h943b412_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-19.0.0-h081d1f1_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.46-h943b412_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda @@ -133,12 +133,12 @@ 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-25.1.0.dev2025012505-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025012505-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025012505-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025012605-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025012605-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025012605-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012605-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-25.1.0.dev2025012505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025012605-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 @@ -198,7 +198,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-h8bd8927_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.2.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.45.2-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.45.3-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.21.0-py312h8360d73_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda @@ -235,7 +235,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.8.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.3.0-pyh71513ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.1.0-pyh71513ae_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.1-hb7ec8d5_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.1-h740c5af_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-common-0.10.6-h86ecc28_0.conda @@ -300,10 +300,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.0.0-h4de3ea5_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h18dbdb1_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-19.0.0-h03ebaaf_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-19.0.0-h3b568fd_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-19.0.0-h3b568fd_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-19.0.0-h1e9d426_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-19.0.0-h03ebaaf_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-19.0.0-h3b568fd_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-19.0.0-h3b568fd_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-19.0.0-h1e9d426_8_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-26_linuxaarch64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlicommon-1.1.0-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlidec-1.1.0-h86ecc28_2.conda @@ -334,8 +334,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.28-pthreads_h9d3fd7e_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopentelemetry-cpp-1.18.0-h60b47f9_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopentelemetry-cpp-headers-1.18.0-h8af1aa0_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-19.0.0-hfc78867_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.45-hec79eb8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-19.0.0-hfc78867_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.46-hec79eb8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.3-h44a3b7b_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.20-h68df207_0.conda @@ -356,12 +356,12 @@ 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-25.1.0.dev2025012505-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025012505-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025012505-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025012605-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025012605-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025012605-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012605-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-25.1.0.dev2025012505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025012605-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 @@ -421,7 +421,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-hd4fb6f5_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.2.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.45.2-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.45.3-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.21.0-py312ha0d6ea1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py312h52516f5_0.conda @@ -457,7 +457,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.8.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.3.0-pyh71513ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.1.0-pyh71513ae_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.1-hfc2798a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.1-hc8a0bd2_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.10.6-h5505292_0.conda @@ -520,10 +520,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.16-ha0e7c42_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_h07bc746_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-19.0.0-h819e3af_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-19.0.0-hf07054f_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-19.0.0-hf07054f_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-19.0.0-h4239455_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-19.0.0-h819e3af_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-19.0.0-hf07054f_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-19.0.0-hf07054f_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-19.0.0-h4239455_8_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-26_osxarm64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.1.0-hd74edd7_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.1.0-hd74edd7_2.conda @@ -551,8 +551,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.28-openmp_hf332438_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopentelemetry-cpp-1.18.0-h0c05b2d_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopentelemetry-cpp-headers-1.18.0-hce30654_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-19.0.0-h636d7b7_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.45-h3783ad8_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-19.0.0-h636d7b7_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.46-h3783ad8_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.3-h3bd63a1_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h07bc746_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda @@ -570,12 +570,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-25.1.0.dev2025012505-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025012505-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025012505-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025012605-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025012605-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025012605-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012605-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-25.1.0.dev2025012505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025012605-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 @@ -634,7 +634,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-h98b9ce2_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.2.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.45.2-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.45.3-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.21.0-py312hf3e4074_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda @@ -810,15 +810,15 @@ packages: license_family: MIT size: 115305 timestamp: 1736174485476 -- conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.3.0-pyh71513ae_0.conda - sha256: 750186af694a7130eaf7119fbb56db0d2326d8995ad5b8eae23c622b85fea29a - md5: 356927ace43302bf6f5926e2a58dae6a +- conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.1.0-pyh71513ae_0.conda + sha256: 1f267886522dfb9ae4e5ebbc3135b5eb13cff27bdbfe8d881a4d893459166ab4 + md5: 2cc3f588512f04f3a0c64b4e9bedc02d depends: - python >=3.9 license: MIT license_family: MIT - size: 56354 - timestamp: 1734348889193 + size: 56370 + timestamp: 1737819298139 - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.1-h205f482_0.conda sha256: ebe5e33249f37f6bb481de99581ebdc92dbfcf1b6915609bcf3c9e78661d6352 md5: 9c500858e88df50af3cc883d194de78a @@ -2574,10 +2574,10 @@ packages: license_family: Apache size: 1178260 timestamp: 1736008642885 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-19.0.0-h00a82cf_7_cpu.conda - build_number: 7 - sha256: 8b401a256e4632ab6c1ea8d3cfb16d7c8ff3b0fe5af7cd474202a369c63dc74c - md5: 8d553fa6a138f369ed94b8b1a76f1e77 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-19.0.0-h00a82cf_8_cpu.conda + build_number: 8 + sha256: dcac39be95b9afe42bc9b7bfcfa258e31e413a4cb79c49f6707edf2838e8d64c + md5: 51e31b59290c09b58d290f66b908999b depends: - __glibc >=2.17,<3.0.a0 - aws-crt-cpp >=0.29.9,<0.29.10.0a0 @@ -2607,18 +2607,18 @@ packages: - snappy >=1.2.1,<1.3.0a0 - zstd >=1.5.6,<1.6.0a0 constrains: - - apache-arrow-proc =*=cpu - - arrow-cpp <0.0a0 - parquet-cpp <0.0a0 + - arrow-cpp <0.0a0 + - apache-arrow-proc =*=cpu arch: x86_64 platform: linux license: Apache-2.0 - size: 8979130 - timestamp: 1737757402544 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-19.0.0-h03ebaaf_7_cpu.conda - build_number: 7 - sha256: f029b7fbed445a2cb08b95686e9a9cb30c04a10998ef632c2cf84fd0c0d1e424 - md5: b94870200ac053eff3dda878d523f1d1 + size: 8969999 + timestamp: 1737824740139 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-19.0.0-h03ebaaf_8_cpu.conda + build_number: 8 + sha256: ca5db2ba71de0c4fb54ee12e3b841e3e90b988ae7a5935fae3cce90111b5cb6d + md5: 1ac6f73a63d715590a7ad0113a578762 depends: - aws-crt-cpp >=0.29.9,<0.29.10.0a0 - aws-sdk-cpp >=1.11.489,<1.11.490.0a0 @@ -2653,12 +2653,12 @@ packages: arch: aarch64 platform: linux license: Apache-2.0 - size: 8210159 - timestamp: 1737757741310 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-19.0.0-h819e3af_7_cpu.conda - build_number: 7 - sha256: e5e370673b9fe9459a826f474dc470b59fd6744fa652dd534f7ef722cd9be39c - md5: 3cb4f805d9742272591795d487786f2d + size: 8213318 + timestamp: 1737808895185 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-19.0.0-h819e3af_8_cpu.conda + build_number: 8 + sha256: 825afabd1c998dfddce9600584c492296a15219d441c6e3029e6c6228200d695 + md5: fbe0ce0ef6d386ab832ee5cca2ab3048 depends: - __osx >=11.0 - aws-crt-cpp >=0.29.9,<0.29.10.0a0 @@ -2687,155 +2687,155 @@ packages: - snappy >=1.2.1,<1.3.0a0 - zstd >=1.5.6,<1.6.0a0 constrains: - - parquet-cpp <0.0a0 - - apache-arrow-proc =*=cpu - arrow-cpp <0.0a0 + - apache-arrow-proc =*=cpu + - parquet-cpp <0.0a0 arch: arm64 platform: osx license: Apache-2.0 - size: 5540329 - timestamp: 1737756116679 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-19.0.0-hcb10f89_7_cpu.conda - build_number: 7 - sha256: 7018394af408b4ce344c97cd6f97bc676708067a9d2d834bf091b74f13b41be4 - md5: de10e3323bfa9dd8929f7fbe23665883 + size: 5573619 + timestamp: 1737806044972 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-19.0.0-hcb10f89_8_cpu.conda + build_number: 8 + sha256: bf8f64403685eb3ab6ebc5a25cc3a70431a1f822469bf96b0ee80c169deec0ac + md5: dafba09929a58e10bb8231ff7966e623 depends: - __glibc >=2.17,<3.0.a0 - - libarrow 19.0.0 h00a82cf_7_cpu + - libarrow 19.0.0 h00a82cf_8_cpu - libgcc >=13 - libstdcxx >=13 arch: x86_64 platform: linux license: Apache-2.0 - size: 637717 - timestamp: 1737757443960 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-19.0.0-h3b568fd_7_cpu.conda - build_number: 7 - sha256: 97911c3addb66033747e12c608ca32ce5c56d6d9f35674cfb97fff0ff4c7e926 - md5: d50c51a7d86454c90de667fcafb8c785 + size: 637555 + timestamp: 1737824783456 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-19.0.0-h3b568fd_8_cpu.conda + build_number: 8 + sha256: 154fe9bee1a1e3c96497fcbf3c01191965d5c4e9718dcbf8502035d7ff633499 + md5: e015edb6317c81893f9ce4865bbd55f4 depends: - - libarrow 19.0.0 h03ebaaf_7_cpu + - libarrow 19.0.0 h03ebaaf_8_cpu - libgcc >=13 - libstdcxx >=13 arch: aarch64 platform: linux license: Apache-2.0 - size: 602410 - timestamp: 1737757792970 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-19.0.0-hf07054f_7_cpu.conda - build_number: 7 - sha256: a716bd2c6106f0508e69800f73a9368f5b5fadba0cd1f7f7ac753bf43392bf4d - md5: a138208af40b21c840c1075f3bec5014 + size: 602892 + timestamp: 1737808980001 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-19.0.0-hf07054f_8_cpu.conda + build_number: 8 + sha256: 66ce35077dae435cd34644d53159af14afd62452eeec8f63cd55adb11e7f2780 + md5: 68cd272eccf7b4fcb0a3bab95e89e71e depends: - __osx >=11.0 - - libarrow 19.0.0 h819e3af_7_cpu + - libarrow 19.0.0 h819e3af_8_cpu - libcxx >=18 arch: arm64 platform: osx license: Apache-2.0 - size: 499319 - timestamp: 1737756215547 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-19.0.0-hcb10f89_7_cpu.conda - build_number: 7 - sha256: 4f3864b3f004fc320f28ecc5bb47e4cd927f40ef8dc6a16bdef51b34f51da921 - md5: eddf039322781fee4d4137f50769511c + size: 500365 + timestamp: 1737806169385 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-19.0.0-hcb10f89_8_cpu.conda + build_number: 8 + sha256: dc4a0f13428c9bd9781e25b67f5f52a92b8c4beafa2435fe5127e9fac7969218 + md5: 66e19108e4597b9a35d0886607c2d8a8 depends: - __glibc >=2.17,<3.0.a0 - - libarrow 19.0.0 h00a82cf_7_cpu - - libarrow-acero 19.0.0 hcb10f89_7_cpu + - libarrow 19.0.0 h00a82cf_8_cpu + - libarrow-acero 19.0.0 hcb10f89_8_cpu - libgcc >=13 - - libparquet 19.0.0 h081d1f1_7_cpu + - libparquet 19.0.0 h081d1f1_8_cpu - libstdcxx >=13 arch: x86_64 platform: linux license: Apache-2.0 - size: 605090 - timestamp: 1737757550128 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-19.0.0-h3b568fd_7_cpu.conda - build_number: 7 - sha256: e055430747eba48c99a7b1ebe0596e126a121eeffd6ba667c00554a0b2707839 - md5: 2d6208bc6ab9089ee1787d9abbefd172 + size: 604335 + timestamp: 1737824891062 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-19.0.0-h3b568fd_8_cpu.conda + build_number: 8 + sha256: f038f979b3357124a548dd83880f94284355a90e4736caaabd23c750cf06eaa9 + md5: 03f35d7f35dae0e05f5f4f747d7eb6e7 depends: - - libarrow 19.0.0 h03ebaaf_7_cpu - - libarrow-acero 19.0.0 h3b568fd_7_cpu + - libarrow 19.0.0 h03ebaaf_8_cpu + - libarrow-acero 19.0.0 h3b568fd_8_cpu - libgcc >=13 - - libparquet 19.0.0 hfc78867_7_cpu + - libparquet 19.0.0 hfc78867_8_cpu - libstdcxx >=13 arch: aarch64 platform: linux license: Apache-2.0 - size: 580599 - timestamp: 1737757863901 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-19.0.0-hf07054f_7_cpu.conda - build_number: 7 - sha256: dcc8d61eae311c5d377a41e2c6f964b86e7289917c93d3af03e5d4a4c88ab85a - md5: 5791e257ecb73e7745fa62446f22b1ea + size: 579626 + timestamp: 1737809072479 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-19.0.0-hf07054f_8_cpu.conda + build_number: 8 + sha256: 6934ce0503472f002695d45ae12a8f2948e10e7a0b7430330a4d0d83f3e5ca27 + md5: 1a941d1ddc16b532790781a4becdc881 depends: - __osx >=11.0 - - libarrow 19.0.0 h819e3af_7_cpu - - libarrow-acero 19.0.0 hf07054f_7_cpu + - libarrow 19.0.0 h819e3af_8_cpu + - libarrow-acero 19.0.0 hf07054f_8_cpu - libcxx >=18 - - libparquet 19.0.0 h636d7b7_7_cpu + - libparquet 19.0.0 h636d7b7_8_cpu arch: arm64 platform: osx license: Apache-2.0 - size: 500722 - timestamp: 1737757369380 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-19.0.0-h08228c5_7_cpu.conda - build_number: 7 - sha256: 51ec47ed56880cfd64bfa012c8488d127d8f0acfe0d64707880393d49a2663a2 - md5: e14afa8912873a094a30ad9e455bafc3 + size: 501001 + timestamp: 1737807214184 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-19.0.0-h08228c5_8_cpu.conda + build_number: 8 + sha256: e370ee738d3963120f715343a27cf041c62a3ee8bb19e25da9115ec4bae5f2de + md5: e5dd1926e5a4b23de8ba4eacc8eb9b2d depends: - __glibc >=2.17,<3.0.a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 19.0.0 h00a82cf_7_cpu - - libarrow-acero 19.0.0 hcb10f89_7_cpu - - libarrow-dataset 19.0.0 hcb10f89_7_cpu + - libarrow 19.0.0 h00a82cf_8_cpu + - libarrow-acero 19.0.0 hcb10f89_8_cpu + - libarrow-dataset 19.0.0 hcb10f89_8_cpu - libgcc >=13 - libprotobuf >=5.28.3,<5.28.4.0a0 - libstdcxx >=13 arch: x86_64 platform: linux license: Apache-2.0 - size: 521685 - timestamp: 1737757595490 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-19.0.0-h1e9d426_7_cpu.conda - build_number: 7 - sha256: bd85da0813384b5b5af2f2b05e4bc20aa606eb5528310c84e42aa495feec6050 - md5: b35923aad96b07d76db4c31ccc74584f + size: 521475 + timestamp: 1737824942852 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-19.0.0-h1e9d426_8_cpu.conda + build_number: 8 + sha256: 92e1fea8557a931c273ea3bd3bf73a4f4f0c566844dcedf78b9a16e5cf6cab56 + md5: ef08fcb5c165cdc743336bd8f4cbed69 depends: - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 19.0.0 h03ebaaf_7_cpu - - libarrow-acero 19.0.0 h3b568fd_7_cpu - - libarrow-dataset 19.0.0 h3b568fd_7_cpu + - libarrow 19.0.0 h03ebaaf_8_cpu + - libarrow-acero 19.0.0 h3b568fd_8_cpu + - libarrow-dataset 19.0.0 h3b568fd_8_cpu - libgcc >=13 - libprotobuf >=5.28.3,<5.28.4.0a0 - libstdcxx >=13 arch: aarch64 platform: linux license: Apache-2.0 - size: 515585 - timestamp: 1737757899077 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-19.0.0-h4239455_7_cpu.conda - build_number: 7 - sha256: 94e5351779728cacd3fcadcfe082fc840a79333ce8b1056bb811e39417decd2a - md5: 05a75db98927961f86b64340442150c3 + size: 516126 + timestamp: 1737809118915 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-19.0.0-h4239455_8_cpu.conda + build_number: 8 + sha256: 445d2ca20b07e57270f3b07b62c09794369413e5ff3716d9c73d0ad360969583 + md5: a39953d9b03b0463f4ccc187a8bcfcca depends: - __osx >=11.0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 19.0.0 h819e3af_7_cpu - - libarrow-acero 19.0.0 hf07054f_7_cpu - - libarrow-dataset 19.0.0 hf07054f_7_cpu + - libarrow 19.0.0 h819e3af_8_cpu + - libarrow-acero 19.0.0 hf07054f_8_cpu + - libarrow-dataset 19.0.0 hf07054f_8_cpu - libcxx >=18 - libprotobuf >=5.28.3,<5.28.4.0a0 arch: arm64 platform: osx license: Apache-2.0 - size: 449238 - timestamp: 1737757536452 + size: 449672 + timestamp: 1737807386331 - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-26_linux64_openblas.conda build_number: 26 sha256: 30bd658682b124243f8e52d8edf8a19e7be1bc31e4fe4baec30a64002dc8cd0c @@ -4043,13 +4043,13 @@ packages: license_family: APACHE size: 320565 timestamp: 1735643673319 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-19.0.0-h081d1f1_7_cpu.conda - build_number: 7 - sha256: f117af1368c613328fb3af251287c6885962d9477a55d9bf1ab253626730b4ea - md5: a8b3022bfe8a2cb4249229768401340c +- conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-19.0.0-h081d1f1_8_cpu.conda + build_number: 8 + sha256: b2e1bf8634efb643a9f15fe19f9bc0877482c509eff7cee6136278a2c2fa5842 + md5: bef810a8da683aa11c644066a87f71c3 depends: - __glibc >=2.17,<3.0.a0 - - libarrow 19.0.0 h00a82cf_7_cpu + - libarrow 19.0.0 h00a82cf_8_cpu - libgcc >=13 - libstdcxx >=13 - libthrift >=0.21.0,<0.21.1.0a0 @@ -4057,14 +4057,14 @@ packages: arch: x86_64 platform: linux license: Apache-2.0 - size: 1240902 - timestamp: 1737757526098 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-19.0.0-hfc78867_7_cpu.conda - build_number: 7 - sha256: 85a9964201ab6ed15b22a5ea29c66b44febc5a815a7d3234c3a605ca7644cc02 - md5: 8814a0cd443b9ebbb1662b370b6b14fb + size: 1241786 + timestamp: 1737824866572 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-19.0.0-hfc78867_8_cpu.conda + build_number: 8 + sha256: 8917fc5e5bb65894106bbd461d2f9c9c0c3dc642ff5da197c941bf620ce840a0 + md5: b0d5f8c122a3e9a6b75036e43e78fcfa depends: - - libarrow 19.0.0 h03ebaaf_7_cpu + - libarrow 19.0.0 h03ebaaf_8_cpu - libgcc >=13 - libstdcxx >=13 - libthrift >=0.21.0,<0.21.1.0a0 @@ -4072,26 +4072,26 @@ packages: arch: aarch64 platform: linux license: Apache-2.0 - size: 1153344 - timestamp: 1737757846296 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-19.0.0-h636d7b7_7_cpu.conda - build_number: 7 - sha256: 637298e97c586a74e19df44cf378be3e99274aef09ee1b2a5f30c4492bd62e0d - md5: 3f0e87a16e30ff26bb513fcda9f971ac + size: 1153834 + timestamp: 1737809048861 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-19.0.0-h636d7b7_8_cpu.conda + build_number: 8 + sha256: da04e6bd7ed2ca64aadf0ad12d9752e8423e85c37e0db80e27c7ff334fcbd2b6 + md5: c1ff2e71a289fb76146591c9d3f9de0a depends: - __osx >=11.0 - - libarrow 19.0.0 h819e3af_7_cpu + - libarrow 19.0.0 h819e3af_8_cpu - libcxx >=18 - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 arch: arm64 platform: osx license: Apache-2.0 - size: 893815 - timestamp: 1737757309795 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.45-h943b412_0.conda - sha256: b8f5b5ba9a14dedf7c97c01300de492b1b52b68eacbc3249a13fdbfa82349a2f - md5: 85cbdaacad93808395ac295b5667d25b + size: 893482 + timestamp: 1737807155720 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.46-h943b412_0.conda + sha256: a46436dadd12d58155280d68876dba2d8a3badbc8074956d14fe6530c7c7eda6 + md5: adcf7bacff219488e29cfa95a2abd8f7 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -4099,30 +4099,30 @@ packages: arch: x86_64 platform: linux license: zlib-acknowledgement - size: 289426 - timestamp: 1736339058310 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.45-hec79eb8_0.conda - sha256: a06daa523a0d5775acb96e6e3f083adc2ab1383eb8f664513dbc663f439c9cca - md5: 9a8716c16b40acc7148263de1d0a403b + size: 292273 + timestamp: 1737791061653 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.46-hec79eb8_0.conda + sha256: be4eefe8415c9b37d158eaa9522ce4c399a572339ac2bcc4d26d6433e0ed767d + md5: f9f793497c0973d5416421aa2f96cda4 depends: - libgcc >=13 - libzlib >=1.3.1,<2.0a0 arch: aarch64 platform: linux license: zlib-acknowledgement - size: 299051 - timestamp: 1736344007986 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.45-h3783ad8_0.conda - sha256: ddcc81c049b32fb5eb3ac1f9a6d3a589c08325c8ec6f89eb912208b19330d68c - md5: d554c806d065b1763cb9e1cb1d25741d + size: 304364 + timestamp: 1737795802176 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.46-h3783ad8_0.conda + sha256: db78a711561bb6df274ef421472d948dfd1093404db3915e891ae6d7fd37fadc + md5: 15d480fb9dad036eaa4de0b51eab3ccc depends: - __osx >=11.0 - libzlib >=1.3.1,<2.0a0 arch: arm64 platform: osx license: zlib-acknowledgement - size: 263151 - timestamp: 1736339184358 + size: 266516 + timestamp: 1737791023678 - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda sha256: 51125ebb8b7152e4a4e69fd2398489c4ec8473195c27cde3cbdf1cb6d18c5493 md5: d8703f1ffe5a06356f06467f1d0b9464 @@ -4853,47 +4853,47 @@ packages: license_family: BSD size: 24048 timestamp: 1733219945697 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025012505-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025012605-release.conda noarch: python - sha256: 83e72ee5d9c5965eefc04dc84a9f496b5064e006dbfcfe137ab1710285d6b3f3 - md5: 3359ea55713294fb8bb2c70e6bd5753a + sha256: 8c9827436fb98c4de9cdf0a0f74cdfe1dbe2efa8484f19ced1f4eb939ba0f919 + md5: f09aa38afbb5a1e68bc624a98556bd3f depends: - - max-core ==25.1.0.dev2025012505 release - - max-python >=25.1.0.dev2025012505,<26.0a0 - - mojo-jupyter ==25.1.0.dev2025012505 release - - mblack ==25.1.0.dev2025012505 release + - max-core ==25.1.0.dev2025012605 release + - max-python >=25.1.0.dev2025012605,<26.0a0 + - mojo-jupyter ==25.1.0.dev2025012605 release + - mblack ==25.1.0.dev2025012605 release license: LicenseRef-Modular-Proprietary - size: 9918 - timestamp: 1737782253436 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025012505-release.conda - sha256: d89d1a2279776c687b3b729d53b1e737477afc3eae214d5750b00a048667aaed - md5: ebf37a7d5882bb676718a5648dee3654 + size: 9920 + timestamp: 1737868622340 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025012605-release.conda + sha256: e9ef000deed41edd45df86cdeb3c46eb933a85dc7929f399d18746fa6bf84d3a + md5: d604a770e815feb97cc163a095d74322 depends: - - mblack ==25.1.0.dev2025012505 release + - mblack ==25.1.0.dev2025012605 release license: LicenseRef-Modular-Proprietary - size: 243130339 - timestamp: 1737782221031 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025012505-release.conda - sha256: ad52887002d135793158f9bc4afcd2ea1d89111f65351885669894bb23a83763 - md5: bde4e25a295f947b730261246613b83d + size: 243456510 + timestamp: 1737868720794 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025012605-release.conda + sha256: 589289450e22c82b178157c51ba011e795c115ee4da8f21d4dd8055e05d991c0 + md5: e4e7aecdda98cc52ba8e4c075170713b depends: - - mblack ==25.1.0.dev2025012505 release + - mblack ==25.1.0.dev2025012605 release license: LicenseRef-Modular-Proprietary - size: 245590611 - timestamp: 1737782253434 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025012505-release.conda - sha256: b1d103910f7b6a273906ea40f7dc993144511ed61239a5d764aca21ea479fe46 - md5: e01118f345f22ed4efb89192dfbbdbc6 + size: 245958004 + timestamp: 1737868622338 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025012605-release.conda + sha256: 3004e8b1fca572284485b488639c916e2028fc022e7f9eaece25676c0d420521 + md5: f188ddc4fef4410d599beafd55e61cf1 depends: - - mblack ==25.1.0.dev2025012505 release + - mblack ==25.1.0.dev2025012605 release license: LicenseRef-Modular-Proprietary - size: 204961123 - timestamp: 1737782482300 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025012505-3.12release.conda - sha256: b52562f368fe5dbc95343bcd7f2ee4699a25589c689b0cba444e5a93757b1ea7 - md5: a43f10619b5e0502b7f59ad823770f9f + size: 205170122 + timestamp: 1737869052124 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025012605-3.12release.conda + sha256: 296dcbab2616decb3e19510a8d56d2ad7208fbdc65aa9a5c65c24053e097083d + md5: ae1b2c8ed2537bc3b9cba21266b5771e depends: - - max-core ==25.1.0.dev2025012505 release + - max-core ==25.1.0.dev2025012605 release - python 3.12.* - fastapi - httpx @@ -4914,13 +4914,13 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 120565142 - timestamp: 1737782221040 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025012505-3.12release.conda - sha256: c6252c78ced4b1a2c793ff2cb5846bd34dd6d16e8fd65425e9f1df6fe6227b0d - md5: 8ee044754ebf79922c85299e7425abf3 + size: 120667192 + timestamp: 1737868720803 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025012605-3.12release.conda + sha256: d84debf9ad9537afbf502c89baa3e606e12caba812b193d05e5480ffbec8a8f3 + md5: b2f7e32d1931ad233be7967b4e4880d6 depends: - - max-core ==25.1.0.dev2025012505 release + - max-core ==25.1.0.dev2025012605 release - python 3.12.* - fastapi - httpx @@ -4941,13 +4941,13 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 123069129 - timestamp: 1737782253444 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025012505-3.12release.conda - sha256: 489140758c2f0df45e077c6d52aac9bd419774b2d00b0a594d49505495e7aca4 - md5: 03b88370aa08d78471ff2e88973534d3 + size: 123187293 + timestamp: 1737868622348 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025012605-3.12release.conda + sha256: a4fa173d3d6f12a6ee5fa1dc61300fa3392fd82e416025a0cbd97c6ac01e2288 + md5: 9e3138e7bcd85feea476ca22514f1e1b depends: - - max-core ==25.1.0.dev2025012505 release + - max-core ==25.1.0.dev2025012605 release - python 3.12.* - fastapi - httpx @@ -4968,12 +4968,12 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 105954416 - timestamp: 1737782482303 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012505-release.conda + size: 106062355 + timestamp: 1737869052127 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012605-release.conda noarch: python - sha256: 906a374c4b22380993352480333cd5fc9c1a2e2179ab2e7ea65abc3bd54fc35e - md5: 3109b109f417bff02b27ff1cc78239ae + sha256: 76d9f174ae8245596fcbed5a05d7b0a49ef8eaceac009d1d4c2842f5f31592d6 + md5: f9b9c5654edb0396f0793d557c4fb898 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -4983,8 +4983,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130805 - timestamp: 1737782253440 + size: 130814 + timestamp: 1737868622344 - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda sha256: 78c1bbe1723449c52b7a9df1af2ee5f005209f67e40b6e1d3c7619127c43b1c7 md5: 592132998493b3ff25fd7479396e8351 @@ -4994,18 +4994,18 @@ packages: license_family: MIT size: 14465 timestamp: 1733255681319 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025012505-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025012605-release.conda noarch: python - sha256: 6cba6b01c693678b0e48d5428788d3734e885f6efc911b345fae474e4405460f - md5: 16521d51e47d4d67cf1a42351687f6b8 + sha256: 4e786c10774447edaf5fa00324223340fa7bba82c9b15058903aed23b2a43e25 + md5: 4b66d050c8e56e18a3a7feaaad38d20a depends: - - max-core ==25.1.0.dev2025012505 release + - max-core ==25.1.0.dev2025012605 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22934 - timestamp: 1737782253442 + size: 22930 + timestamp: 1737868622346 - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py312h178313f_2.conda sha256: b05bc8252a6e957bf4a776ed5e0e61d1ba88cdc46ccb55890c72cc58b10371f4 md5: 5b5e3267d915a107eca793d52e1b780a @@ -6674,17 +6674,17 @@ packages: license_family: BSD size: 15324 timestamp: 1735126414893 -- conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.45.2-pyha770c72_0.conda - sha256: 2c429dbbd5e7256517ef6cdfc30664b0c0e87f90f3c526afe3b97681aafb5623 - md5: acd5901cdd0365e18129f4748e524615 +- conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.45.3-pyha770c72_0.conda + sha256: be48c99e6fb8e12ebee09e6fbb4d78a170b614cdaa19ab791a8f5b6caf09919a + md5: 9b3a68bc7aed7949ef86f950993261f4 depends: - anyio >=3.6.2,<5 - python >=3.9 - typing_extensions >=3.10.0 license: BSD-3-Clause license_family: BSD - size: 58040 - timestamp: 1736016898891 + size: 57934 + timestamp: 1737824077668 - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda sha256: e0569c9caa68bf476bead1bed3d79650bb080b532c64a4af7d8ca286c08dea4e md5: d453b98d9c83e71da0741bb0ff4d76bc diff --git a/examples/testing/magic.lock b/examples/testing/magic.lock index 2ef666c55d..4d9c20ea30 100644 --- a/examples/testing/magic.lock +++ b/examples/testing/magic.lock @@ -13,7 +13,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.8.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.3.0-pyh71513ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.1.0-pyh71513ae_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.1-h205f482_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.1-h1a47875_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.10.6-hb9d3cd8_0.conda @@ -77,10 +77,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-19.0.0-h00a82cf_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-19.0.0-hcb10f89_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-19.0.0-hcb10f89_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-19.0.0-h08228c5_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-19.0.0-h00a82cf_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-19.0.0-hcb10f89_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-19.0.0-hcb10f89_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-19.0.0-h08228c5_8_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-26_linux64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hb9d3cd8_2.conda @@ -111,8 +111,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.28-pthreads_h94d23a6_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-1.18.0-hfcad708_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-headers-1.18.0-ha770c72_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-19.0.0-h081d1f1_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.45-h943b412_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-19.0.0-h081d1f1_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.46-h943b412_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda @@ -133,12 +133,12 @@ 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-25.1.0.dev2025012505-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025012505-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025012505-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025012605-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025012605-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025012605-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012605-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-25.1.0.dev2025012505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025012605-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 @@ -198,7 +198,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-h8bd8927_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.2.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.45.2-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.45.3-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.21.0-py312h8360d73_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda @@ -235,7 +235,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.8.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.3.0-pyh71513ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.1.0-pyh71513ae_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.1-hb7ec8d5_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.1-h740c5af_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-common-0.10.6-h86ecc28_0.conda @@ -300,10 +300,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.0.0-h4de3ea5_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h18dbdb1_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-19.0.0-h03ebaaf_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-19.0.0-h3b568fd_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-19.0.0-h3b568fd_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-19.0.0-h1e9d426_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-19.0.0-h03ebaaf_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-19.0.0-h3b568fd_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-19.0.0-h3b568fd_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-19.0.0-h1e9d426_8_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-26_linuxaarch64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlicommon-1.1.0-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlidec-1.1.0-h86ecc28_2.conda @@ -334,8 +334,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.28-pthreads_h9d3fd7e_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopentelemetry-cpp-1.18.0-h60b47f9_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopentelemetry-cpp-headers-1.18.0-h8af1aa0_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-19.0.0-hfc78867_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.45-hec79eb8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-19.0.0-hfc78867_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.46-hec79eb8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.3-h44a3b7b_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.20-h68df207_0.conda @@ -356,12 +356,12 @@ 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-25.1.0.dev2025012505-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025012505-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025012505-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025012605-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025012605-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025012605-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012605-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-25.1.0.dev2025012505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025012605-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 @@ -421,7 +421,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-hd4fb6f5_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.2.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.45.2-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.45.3-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.21.0-py312ha0d6ea1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py312h52516f5_0.conda @@ -457,7 +457,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.8.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.3.0-pyh71513ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.1.0-pyh71513ae_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.1-hfc2798a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.1-hc8a0bd2_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.10.6-h5505292_0.conda @@ -520,10 +520,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.16-ha0e7c42_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_h07bc746_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-19.0.0-h819e3af_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-19.0.0-hf07054f_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-19.0.0-hf07054f_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-19.0.0-h4239455_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-19.0.0-h819e3af_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-19.0.0-hf07054f_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-19.0.0-hf07054f_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-19.0.0-h4239455_8_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-26_osxarm64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.1.0-hd74edd7_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.1.0-hd74edd7_2.conda @@ -551,8 +551,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.28-openmp_hf332438_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopentelemetry-cpp-1.18.0-h0c05b2d_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopentelemetry-cpp-headers-1.18.0-hce30654_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-19.0.0-h636d7b7_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.45-h3783ad8_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-19.0.0-h636d7b7_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.46-h3783ad8_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.3-h3bd63a1_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h07bc746_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda @@ -570,12 +570,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-25.1.0.dev2025012505-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025012505-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025012505-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025012605-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025012605-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025012605-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012605-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-25.1.0.dev2025012505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025012605-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 @@ -634,7 +634,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-h98b9ce2_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.2.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.45.2-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.45.3-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.21.0-py312hf3e4074_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda @@ -810,15 +810,15 @@ packages: license_family: MIT size: 115305 timestamp: 1736174485476 -- conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.3.0-pyh71513ae_0.conda - sha256: 750186af694a7130eaf7119fbb56db0d2326d8995ad5b8eae23c622b85fea29a - md5: 356927ace43302bf6f5926e2a58dae6a +- conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.1.0-pyh71513ae_0.conda + sha256: 1f267886522dfb9ae4e5ebbc3135b5eb13cff27bdbfe8d881a4d893459166ab4 + md5: 2cc3f588512f04f3a0c64b4e9bedc02d depends: - python >=3.9 license: MIT license_family: MIT - size: 56354 - timestamp: 1734348889193 + size: 56370 + timestamp: 1737819298139 - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.1-h205f482_0.conda sha256: ebe5e33249f37f6bb481de99581ebdc92dbfcf1b6915609bcf3c9e78661d6352 md5: 9c500858e88df50af3cc883d194de78a @@ -2574,10 +2574,10 @@ packages: license_family: Apache size: 1178260 timestamp: 1736008642885 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-19.0.0-h00a82cf_7_cpu.conda - build_number: 7 - sha256: 8b401a256e4632ab6c1ea8d3cfb16d7c8ff3b0fe5af7cd474202a369c63dc74c - md5: 8d553fa6a138f369ed94b8b1a76f1e77 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-19.0.0-h00a82cf_8_cpu.conda + build_number: 8 + sha256: dcac39be95b9afe42bc9b7bfcfa258e31e413a4cb79c49f6707edf2838e8d64c + md5: 51e31b59290c09b58d290f66b908999b depends: - __glibc >=2.17,<3.0.a0 - aws-crt-cpp >=0.29.9,<0.29.10.0a0 @@ -2607,18 +2607,18 @@ packages: - snappy >=1.2.1,<1.3.0a0 - zstd >=1.5.6,<1.6.0a0 constrains: - - apache-arrow-proc =*=cpu - - arrow-cpp <0.0a0 - parquet-cpp <0.0a0 + - arrow-cpp <0.0a0 + - apache-arrow-proc =*=cpu arch: x86_64 platform: linux license: Apache-2.0 - size: 8979130 - timestamp: 1737757402544 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-19.0.0-h03ebaaf_7_cpu.conda - build_number: 7 - sha256: f029b7fbed445a2cb08b95686e9a9cb30c04a10998ef632c2cf84fd0c0d1e424 - md5: b94870200ac053eff3dda878d523f1d1 + size: 8969999 + timestamp: 1737824740139 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-19.0.0-h03ebaaf_8_cpu.conda + build_number: 8 + sha256: ca5db2ba71de0c4fb54ee12e3b841e3e90b988ae7a5935fae3cce90111b5cb6d + md5: 1ac6f73a63d715590a7ad0113a578762 depends: - aws-crt-cpp >=0.29.9,<0.29.10.0a0 - aws-sdk-cpp >=1.11.489,<1.11.490.0a0 @@ -2653,12 +2653,12 @@ packages: arch: aarch64 platform: linux license: Apache-2.0 - size: 8210159 - timestamp: 1737757741310 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-19.0.0-h819e3af_7_cpu.conda - build_number: 7 - sha256: e5e370673b9fe9459a826f474dc470b59fd6744fa652dd534f7ef722cd9be39c - md5: 3cb4f805d9742272591795d487786f2d + size: 8213318 + timestamp: 1737808895185 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-19.0.0-h819e3af_8_cpu.conda + build_number: 8 + sha256: 825afabd1c998dfddce9600584c492296a15219d441c6e3029e6c6228200d695 + md5: fbe0ce0ef6d386ab832ee5cca2ab3048 depends: - __osx >=11.0 - aws-crt-cpp >=0.29.9,<0.29.10.0a0 @@ -2687,155 +2687,155 @@ packages: - snappy >=1.2.1,<1.3.0a0 - zstd >=1.5.6,<1.6.0a0 constrains: - - parquet-cpp <0.0a0 - - apache-arrow-proc =*=cpu - arrow-cpp <0.0a0 + - apache-arrow-proc =*=cpu + - parquet-cpp <0.0a0 arch: arm64 platform: osx license: Apache-2.0 - size: 5540329 - timestamp: 1737756116679 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-19.0.0-hcb10f89_7_cpu.conda - build_number: 7 - sha256: 7018394af408b4ce344c97cd6f97bc676708067a9d2d834bf091b74f13b41be4 - md5: de10e3323bfa9dd8929f7fbe23665883 + size: 5573619 + timestamp: 1737806044972 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-19.0.0-hcb10f89_8_cpu.conda + build_number: 8 + sha256: bf8f64403685eb3ab6ebc5a25cc3a70431a1f822469bf96b0ee80c169deec0ac + md5: dafba09929a58e10bb8231ff7966e623 depends: - __glibc >=2.17,<3.0.a0 - - libarrow 19.0.0 h00a82cf_7_cpu + - libarrow 19.0.0 h00a82cf_8_cpu - libgcc >=13 - libstdcxx >=13 arch: x86_64 platform: linux license: Apache-2.0 - size: 637717 - timestamp: 1737757443960 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-19.0.0-h3b568fd_7_cpu.conda - build_number: 7 - sha256: 97911c3addb66033747e12c608ca32ce5c56d6d9f35674cfb97fff0ff4c7e926 - md5: d50c51a7d86454c90de667fcafb8c785 + size: 637555 + timestamp: 1737824783456 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-19.0.0-h3b568fd_8_cpu.conda + build_number: 8 + sha256: 154fe9bee1a1e3c96497fcbf3c01191965d5c4e9718dcbf8502035d7ff633499 + md5: e015edb6317c81893f9ce4865bbd55f4 depends: - - libarrow 19.0.0 h03ebaaf_7_cpu + - libarrow 19.0.0 h03ebaaf_8_cpu - libgcc >=13 - libstdcxx >=13 arch: aarch64 platform: linux license: Apache-2.0 - size: 602410 - timestamp: 1737757792970 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-19.0.0-hf07054f_7_cpu.conda - build_number: 7 - sha256: a716bd2c6106f0508e69800f73a9368f5b5fadba0cd1f7f7ac753bf43392bf4d - md5: a138208af40b21c840c1075f3bec5014 + size: 602892 + timestamp: 1737808980001 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-19.0.0-hf07054f_8_cpu.conda + build_number: 8 + sha256: 66ce35077dae435cd34644d53159af14afd62452eeec8f63cd55adb11e7f2780 + md5: 68cd272eccf7b4fcb0a3bab95e89e71e depends: - __osx >=11.0 - - libarrow 19.0.0 h819e3af_7_cpu + - libarrow 19.0.0 h819e3af_8_cpu - libcxx >=18 arch: arm64 platform: osx license: Apache-2.0 - size: 499319 - timestamp: 1737756215547 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-19.0.0-hcb10f89_7_cpu.conda - build_number: 7 - sha256: 4f3864b3f004fc320f28ecc5bb47e4cd927f40ef8dc6a16bdef51b34f51da921 - md5: eddf039322781fee4d4137f50769511c + size: 500365 + timestamp: 1737806169385 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-19.0.0-hcb10f89_8_cpu.conda + build_number: 8 + sha256: dc4a0f13428c9bd9781e25b67f5f52a92b8c4beafa2435fe5127e9fac7969218 + md5: 66e19108e4597b9a35d0886607c2d8a8 depends: - __glibc >=2.17,<3.0.a0 - - libarrow 19.0.0 h00a82cf_7_cpu - - libarrow-acero 19.0.0 hcb10f89_7_cpu + - libarrow 19.0.0 h00a82cf_8_cpu + - libarrow-acero 19.0.0 hcb10f89_8_cpu - libgcc >=13 - - libparquet 19.0.0 h081d1f1_7_cpu + - libparquet 19.0.0 h081d1f1_8_cpu - libstdcxx >=13 arch: x86_64 platform: linux license: Apache-2.0 - size: 605090 - timestamp: 1737757550128 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-19.0.0-h3b568fd_7_cpu.conda - build_number: 7 - sha256: e055430747eba48c99a7b1ebe0596e126a121eeffd6ba667c00554a0b2707839 - md5: 2d6208bc6ab9089ee1787d9abbefd172 + size: 604335 + timestamp: 1737824891062 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-19.0.0-h3b568fd_8_cpu.conda + build_number: 8 + sha256: f038f979b3357124a548dd83880f94284355a90e4736caaabd23c750cf06eaa9 + md5: 03f35d7f35dae0e05f5f4f747d7eb6e7 depends: - - libarrow 19.0.0 h03ebaaf_7_cpu - - libarrow-acero 19.0.0 h3b568fd_7_cpu + - libarrow 19.0.0 h03ebaaf_8_cpu + - libarrow-acero 19.0.0 h3b568fd_8_cpu - libgcc >=13 - - libparquet 19.0.0 hfc78867_7_cpu + - libparquet 19.0.0 hfc78867_8_cpu - libstdcxx >=13 arch: aarch64 platform: linux license: Apache-2.0 - size: 580599 - timestamp: 1737757863901 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-19.0.0-hf07054f_7_cpu.conda - build_number: 7 - sha256: dcc8d61eae311c5d377a41e2c6f964b86e7289917c93d3af03e5d4a4c88ab85a - md5: 5791e257ecb73e7745fa62446f22b1ea + size: 579626 + timestamp: 1737809072479 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-19.0.0-hf07054f_8_cpu.conda + build_number: 8 + sha256: 6934ce0503472f002695d45ae12a8f2948e10e7a0b7430330a4d0d83f3e5ca27 + md5: 1a941d1ddc16b532790781a4becdc881 depends: - __osx >=11.0 - - libarrow 19.0.0 h819e3af_7_cpu - - libarrow-acero 19.0.0 hf07054f_7_cpu + - libarrow 19.0.0 h819e3af_8_cpu + - libarrow-acero 19.0.0 hf07054f_8_cpu - libcxx >=18 - - libparquet 19.0.0 h636d7b7_7_cpu + - libparquet 19.0.0 h636d7b7_8_cpu arch: arm64 platform: osx license: Apache-2.0 - size: 500722 - timestamp: 1737757369380 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-19.0.0-h08228c5_7_cpu.conda - build_number: 7 - sha256: 51ec47ed56880cfd64bfa012c8488d127d8f0acfe0d64707880393d49a2663a2 - md5: e14afa8912873a094a30ad9e455bafc3 + size: 501001 + timestamp: 1737807214184 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-19.0.0-h08228c5_8_cpu.conda + build_number: 8 + sha256: e370ee738d3963120f715343a27cf041c62a3ee8bb19e25da9115ec4bae5f2de + md5: e5dd1926e5a4b23de8ba4eacc8eb9b2d depends: - __glibc >=2.17,<3.0.a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 19.0.0 h00a82cf_7_cpu - - libarrow-acero 19.0.0 hcb10f89_7_cpu - - libarrow-dataset 19.0.0 hcb10f89_7_cpu + - libarrow 19.0.0 h00a82cf_8_cpu + - libarrow-acero 19.0.0 hcb10f89_8_cpu + - libarrow-dataset 19.0.0 hcb10f89_8_cpu - libgcc >=13 - libprotobuf >=5.28.3,<5.28.4.0a0 - libstdcxx >=13 arch: x86_64 platform: linux license: Apache-2.0 - size: 521685 - timestamp: 1737757595490 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-19.0.0-h1e9d426_7_cpu.conda - build_number: 7 - sha256: bd85da0813384b5b5af2f2b05e4bc20aa606eb5528310c84e42aa495feec6050 - md5: b35923aad96b07d76db4c31ccc74584f + size: 521475 + timestamp: 1737824942852 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-19.0.0-h1e9d426_8_cpu.conda + build_number: 8 + sha256: 92e1fea8557a931c273ea3bd3bf73a4f4f0c566844dcedf78b9a16e5cf6cab56 + md5: ef08fcb5c165cdc743336bd8f4cbed69 depends: - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 19.0.0 h03ebaaf_7_cpu - - libarrow-acero 19.0.0 h3b568fd_7_cpu - - libarrow-dataset 19.0.0 h3b568fd_7_cpu + - libarrow 19.0.0 h03ebaaf_8_cpu + - libarrow-acero 19.0.0 h3b568fd_8_cpu + - libarrow-dataset 19.0.0 h3b568fd_8_cpu - libgcc >=13 - libprotobuf >=5.28.3,<5.28.4.0a0 - libstdcxx >=13 arch: aarch64 platform: linux license: Apache-2.0 - size: 515585 - timestamp: 1737757899077 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-19.0.0-h4239455_7_cpu.conda - build_number: 7 - sha256: 94e5351779728cacd3fcadcfe082fc840a79333ce8b1056bb811e39417decd2a - md5: 05a75db98927961f86b64340442150c3 + size: 516126 + timestamp: 1737809118915 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-19.0.0-h4239455_8_cpu.conda + build_number: 8 + sha256: 445d2ca20b07e57270f3b07b62c09794369413e5ff3716d9c73d0ad360969583 + md5: a39953d9b03b0463f4ccc187a8bcfcca depends: - __osx >=11.0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 19.0.0 h819e3af_7_cpu - - libarrow-acero 19.0.0 hf07054f_7_cpu - - libarrow-dataset 19.0.0 hf07054f_7_cpu + - libarrow 19.0.0 h819e3af_8_cpu + - libarrow-acero 19.0.0 hf07054f_8_cpu + - libarrow-dataset 19.0.0 hf07054f_8_cpu - libcxx >=18 - libprotobuf >=5.28.3,<5.28.4.0a0 arch: arm64 platform: osx license: Apache-2.0 - size: 449238 - timestamp: 1737757536452 + size: 449672 + timestamp: 1737807386331 - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-26_linux64_openblas.conda build_number: 26 sha256: 30bd658682b124243f8e52d8edf8a19e7be1bc31e4fe4baec30a64002dc8cd0c @@ -4043,13 +4043,13 @@ packages: license_family: APACHE size: 320565 timestamp: 1735643673319 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-19.0.0-h081d1f1_7_cpu.conda - build_number: 7 - sha256: f117af1368c613328fb3af251287c6885962d9477a55d9bf1ab253626730b4ea - md5: a8b3022bfe8a2cb4249229768401340c +- conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-19.0.0-h081d1f1_8_cpu.conda + build_number: 8 + sha256: b2e1bf8634efb643a9f15fe19f9bc0877482c509eff7cee6136278a2c2fa5842 + md5: bef810a8da683aa11c644066a87f71c3 depends: - __glibc >=2.17,<3.0.a0 - - libarrow 19.0.0 h00a82cf_7_cpu + - libarrow 19.0.0 h00a82cf_8_cpu - libgcc >=13 - libstdcxx >=13 - libthrift >=0.21.0,<0.21.1.0a0 @@ -4057,14 +4057,14 @@ packages: arch: x86_64 platform: linux license: Apache-2.0 - size: 1240902 - timestamp: 1737757526098 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-19.0.0-hfc78867_7_cpu.conda - build_number: 7 - sha256: 85a9964201ab6ed15b22a5ea29c66b44febc5a815a7d3234c3a605ca7644cc02 - md5: 8814a0cd443b9ebbb1662b370b6b14fb + size: 1241786 + timestamp: 1737824866572 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-19.0.0-hfc78867_8_cpu.conda + build_number: 8 + sha256: 8917fc5e5bb65894106bbd461d2f9c9c0c3dc642ff5da197c941bf620ce840a0 + md5: b0d5f8c122a3e9a6b75036e43e78fcfa depends: - - libarrow 19.0.0 h03ebaaf_7_cpu + - libarrow 19.0.0 h03ebaaf_8_cpu - libgcc >=13 - libstdcxx >=13 - libthrift >=0.21.0,<0.21.1.0a0 @@ -4072,26 +4072,26 @@ packages: arch: aarch64 platform: linux license: Apache-2.0 - size: 1153344 - timestamp: 1737757846296 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-19.0.0-h636d7b7_7_cpu.conda - build_number: 7 - sha256: 637298e97c586a74e19df44cf378be3e99274aef09ee1b2a5f30c4492bd62e0d - md5: 3f0e87a16e30ff26bb513fcda9f971ac + size: 1153834 + timestamp: 1737809048861 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-19.0.0-h636d7b7_8_cpu.conda + build_number: 8 + sha256: da04e6bd7ed2ca64aadf0ad12d9752e8423e85c37e0db80e27c7ff334fcbd2b6 + md5: c1ff2e71a289fb76146591c9d3f9de0a depends: - __osx >=11.0 - - libarrow 19.0.0 h819e3af_7_cpu + - libarrow 19.0.0 h819e3af_8_cpu - libcxx >=18 - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 arch: arm64 platform: osx license: Apache-2.0 - size: 893815 - timestamp: 1737757309795 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.45-h943b412_0.conda - sha256: b8f5b5ba9a14dedf7c97c01300de492b1b52b68eacbc3249a13fdbfa82349a2f - md5: 85cbdaacad93808395ac295b5667d25b + size: 893482 + timestamp: 1737807155720 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.46-h943b412_0.conda + sha256: a46436dadd12d58155280d68876dba2d8a3badbc8074956d14fe6530c7c7eda6 + md5: adcf7bacff219488e29cfa95a2abd8f7 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -4099,30 +4099,30 @@ packages: arch: x86_64 platform: linux license: zlib-acknowledgement - size: 289426 - timestamp: 1736339058310 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.45-hec79eb8_0.conda - sha256: a06daa523a0d5775acb96e6e3f083adc2ab1383eb8f664513dbc663f439c9cca - md5: 9a8716c16b40acc7148263de1d0a403b + size: 292273 + timestamp: 1737791061653 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.46-hec79eb8_0.conda + sha256: be4eefe8415c9b37d158eaa9522ce4c399a572339ac2bcc4d26d6433e0ed767d + md5: f9f793497c0973d5416421aa2f96cda4 depends: - libgcc >=13 - libzlib >=1.3.1,<2.0a0 arch: aarch64 platform: linux license: zlib-acknowledgement - size: 299051 - timestamp: 1736344007986 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.45-h3783ad8_0.conda - sha256: ddcc81c049b32fb5eb3ac1f9a6d3a589c08325c8ec6f89eb912208b19330d68c - md5: d554c806d065b1763cb9e1cb1d25741d + size: 304364 + timestamp: 1737795802176 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.46-h3783ad8_0.conda + sha256: db78a711561bb6df274ef421472d948dfd1093404db3915e891ae6d7fd37fadc + md5: 15d480fb9dad036eaa4de0b51eab3ccc depends: - __osx >=11.0 - libzlib >=1.3.1,<2.0a0 arch: arm64 platform: osx license: zlib-acknowledgement - size: 263151 - timestamp: 1736339184358 + size: 266516 + timestamp: 1737791023678 - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda sha256: 51125ebb8b7152e4a4e69fd2398489c4ec8473195c27cde3cbdf1cb6d18c5493 md5: d8703f1ffe5a06356f06467f1d0b9464 @@ -4853,47 +4853,47 @@ packages: license_family: BSD size: 24048 timestamp: 1733219945697 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025012505-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025012605-release.conda noarch: python - sha256: 83e72ee5d9c5965eefc04dc84a9f496b5064e006dbfcfe137ab1710285d6b3f3 - md5: 3359ea55713294fb8bb2c70e6bd5753a + sha256: 8c9827436fb98c4de9cdf0a0f74cdfe1dbe2efa8484f19ced1f4eb939ba0f919 + md5: f09aa38afbb5a1e68bc624a98556bd3f depends: - - max-core ==25.1.0.dev2025012505 release - - max-python >=25.1.0.dev2025012505,<26.0a0 - - mojo-jupyter ==25.1.0.dev2025012505 release - - mblack ==25.1.0.dev2025012505 release + - max-core ==25.1.0.dev2025012605 release + - max-python >=25.1.0.dev2025012605,<26.0a0 + - mojo-jupyter ==25.1.0.dev2025012605 release + - mblack ==25.1.0.dev2025012605 release license: LicenseRef-Modular-Proprietary - size: 9918 - timestamp: 1737782253436 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025012505-release.conda - sha256: d89d1a2279776c687b3b729d53b1e737477afc3eae214d5750b00a048667aaed - md5: ebf37a7d5882bb676718a5648dee3654 + size: 9920 + timestamp: 1737868622340 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025012605-release.conda + sha256: e9ef000deed41edd45df86cdeb3c46eb933a85dc7929f399d18746fa6bf84d3a + md5: d604a770e815feb97cc163a095d74322 depends: - - mblack ==25.1.0.dev2025012505 release + - mblack ==25.1.0.dev2025012605 release license: LicenseRef-Modular-Proprietary - size: 243130339 - timestamp: 1737782221031 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025012505-release.conda - sha256: ad52887002d135793158f9bc4afcd2ea1d89111f65351885669894bb23a83763 - md5: bde4e25a295f947b730261246613b83d + size: 243456510 + timestamp: 1737868720794 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025012605-release.conda + sha256: 589289450e22c82b178157c51ba011e795c115ee4da8f21d4dd8055e05d991c0 + md5: e4e7aecdda98cc52ba8e4c075170713b depends: - - mblack ==25.1.0.dev2025012505 release + - mblack ==25.1.0.dev2025012605 release license: LicenseRef-Modular-Proprietary - size: 245590611 - timestamp: 1737782253434 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025012505-release.conda - sha256: b1d103910f7b6a273906ea40f7dc993144511ed61239a5d764aca21ea479fe46 - md5: e01118f345f22ed4efb89192dfbbdbc6 + size: 245958004 + timestamp: 1737868622338 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025012605-release.conda + sha256: 3004e8b1fca572284485b488639c916e2028fc022e7f9eaece25676c0d420521 + md5: f188ddc4fef4410d599beafd55e61cf1 depends: - - mblack ==25.1.0.dev2025012505 release + - mblack ==25.1.0.dev2025012605 release license: LicenseRef-Modular-Proprietary - size: 204961123 - timestamp: 1737782482300 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025012505-3.12release.conda - sha256: b52562f368fe5dbc95343bcd7f2ee4699a25589c689b0cba444e5a93757b1ea7 - md5: a43f10619b5e0502b7f59ad823770f9f + size: 205170122 + timestamp: 1737869052124 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025012605-3.12release.conda + sha256: 296dcbab2616decb3e19510a8d56d2ad7208fbdc65aa9a5c65c24053e097083d + md5: ae1b2c8ed2537bc3b9cba21266b5771e depends: - - max-core ==25.1.0.dev2025012505 release + - max-core ==25.1.0.dev2025012605 release - python 3.12.* - fastapi - httpx @@ -4914,13 +4914,13 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 120565142 - timestamp: 1737782221040 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025012505-3.12release.conda - sha256: c6252c78ced4b1a2c793ff2cb5846bd34dd6d16e8fd65425e9f1df6fe6227b0d - md5: 8ee044754ebf79922c85299e7425abf3 + size: 120667192 + timestamp: 1737868720803 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025012605-3.12release.conda + sha256: d84debf9ad9537afbf502c89baa3e606e12caba812b193d05e5480ffbec8a8f3 + md5: b2f7e32d1931ad233be7967b4e4880d6 depends: - - max-core ==25.1.0.dev2025012505 release + - max-core ==25.1.0.dev2025012605 release - python 3.12.* - fastapi - httpx @@ -4941,13 +4941,13 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 123069129 - timestamp: 1737782253444 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025012505-3.12release.conda - sha256: 489140758c2f0df45e077c6d52aac9bd419774b2d00b0a594d49505495e7aca4 - md5: 03b88370aa08d78471ff2e88973534d3 + size: 123187293 + timestamp: 1737868622348 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025012605-3.12release.conda + sha256: a4fa173d3d6f12a6ee5fa1dc61300fa3392fd82e416025a0cbd97c6ac01e2288 + md5: 9e3138e7bcd85feea476ca22514f1e1b depends: - - max-core ==25.1.0.dev2025012505 release + - max-core ==25.1.0.dev2025012605 release - python 3.12.* - fastapi - httpx @@ -4968,12 +4968,12 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 105954416 - timestamp: 1737782482303 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012505-release.conda + size: 106062355 + timestamp: 1737869052127 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012605-release.conda noarch: python - sha256: 906a374c4b22380993352480333cd5fc9c1a2e2179ab2e7ea65abc3bd54fc35e - md5: 3109b109f417bff02b27ff1cc78239ae + sha256: 76d9f174ae8245596fcbed5a05d7b0a49ef8eaceac009d1d4c2842f5f31592d6 + md5: f9b9c5654edb0396f0793d557c4fb898 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -4983,8 +4983,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130805 - timestamp: 1737782253440 + size: 130814 + timestamp: 1737868622344 - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda sha256: 78c1bbe1723449c52b7a9df1af2ee5f005209f67e40b6e1d3c7619127c43b1c7 md5: 592132998493b3ff25fd7479396e8351 @@ -4994,18 +4994,18 @@ packages: license_family: MIT size: 14465 timestamp: 1733255681319 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025012505-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025012605-release.conda noarch: python - sha256: 6cba6b01c693678b0e48d5428788d3734e885f6efc911b345fae474e4405460f - md5: 16521d51e47d4d67cf1a42351687f6b8 + sha256: 4e786c10774447edaf5fa00324223340fa7bba82c9b15058903aed23b2a43e25 + md5: 4b66d050c8e56e18a3a7feaaad38d20a depends: - - max-core ==25.1.0.dev2025012505 release + - max-core ==25.1.0.dev2025012605 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22934 - timestamp: 1737782253442 + size: 22930 + timestamp: 1737868622346 - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py312h178313f_2.conda sha256: b05bc8252a6e957bf4a776ed5e0e61d1ba88cdc46ccb55890c72cc58b10371f4 md5: 5b5e3267d915a107eca793d52e1b780a @@ -6674,17 +6674,17 @@ packages: license_family: BSD size: 15324 timestamp: 1735126414893 -- conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.45.2-pyha770c72_0.conda - sha256: 2c429dbbd5e7256517ef6cdfc30664b0c0e87f90f3c526afe3b97681aafb5623 - md5: acd5901cdd0365e18129f4748e524615 +- conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.45.3-pyha770c72_0.conda + sha256: be48c99e6fb8e12ebee09e6fbb4d78a170b614cdaa19ab791a8f5b6caf09919a + md5: 9b3a68bc7aed7949ef86f950993261f4 depends: - anyio >=3.6.2,<5 - python >=3.9 - typing_extensions >=3.10.0 license: BSD-3-Clause license_family: BSD - size: 58040 - timestamp: 1736016898891 + size: 57934 + timestamp: 1737824077668 - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda sha256: e0569c9caa68bf476bead1bed3d79650bb080b532c64a4af7d8ca286c08dea4e md5: d453b98d9c83e71da0741bb0ff4d76bc diff --git a/magic.lock b/magic.lock index 238aac50c5..8a62c653f9 100644 --- a/magic.lock +++ b/magic.lock @@ -13,7 +13,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.8.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.3.0-pyh71513ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.1.0-pyh71513ae_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.1-h205f482_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.1-h1a47875_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.10.6-hb9d3cd8_0.conda @@ -77,10 +77,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-19.0.0-h00a82cf_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-19.0.0-hcb10f89_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-19.0.0-hcb10f89_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-19.0.0-h08228c5_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-19.0.0-h00a82cf_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-19.0.0-hcb10f89_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-19.0.0-hcb10f89_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-19.0.0-h08228c5_8_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-26_linux64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hb9d3cd8_2.conda @@ -111,8 +111,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.28-pthreads_h94d23a6_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-1.18.0-hfcad708_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-headers-1.18.0-ha770c72_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-19.0.0-h081d1f1_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.45-h943b412_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-19.0.0-h081d1f1_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.46-h943b412_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda @@ -130,16 +130,16 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.5-h0d44e9d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/lit-19.1.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/lit-19.1.7-pyhd8ed1ab_1.conda - 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-25.1.0.dev2025012505-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025012505-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025012505-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025012605-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025012605-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025012605-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012605-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-25.1.0.dev2025012505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025012605-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 @@ -199,7 +199,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-h8bd8927_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.2.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.45.2-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.45.3-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.21.0-py312h8360d73_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda @@ -236,7 +236,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.8.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.3.0-pyh71513ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.1.0-pyh71513ae_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.1-hb7ec8d5_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.1-h740c5af_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-common-0.10.6-h86ecc28_0.conda @@ -301,10 +301,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.0.0-h4de3ea5_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h18dbdb1_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-19.0.0-h03ebaaf_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-19.0.0-h3b568fd_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-19.0.0-h3b568fd_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-19.0.0-h1e9d426_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-19.0.0-h03ebaaf_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-19.0.0-h3b568fd_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-19.0.0-h3b568fd_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-19.0.0-h1e9d426_8_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-26_linuxaarch64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlicommon-1.1.0-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlidec-1.1.0-h86ecc28_2.conda @@ -335,8 +335,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.28-pthreads_h9d3fd7e_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopentelemetry-cpp-1.18.0-h60b47f9_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopentelemetry-cpp-headers-1.18.0-h8af1aa0_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-19.0.0-hfc78867_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.45-hec79eb8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-19.0.0-hfc78867_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.46-hec79eb8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.3-h44a3b7b_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.20-h68df207_0.conda @@ -354,16 +354,16 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.5-h2e0c361_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/lit-19.1.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/lit-19.1.7-pyhd8ed1ab_1.conda - 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-25.1.0.dev2025012505-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025012505-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025012505-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025012605-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025012605-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025012605-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012605-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-25.1.0.dev2025012505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025012605-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 @@ -423,7 +423,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-hd4fb6f5_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.2.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.45.2-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.45.3-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.21.0-py312ha0d6ea1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py312h52516f5_0.conda @@ -459,7 +459,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.8.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.3.0-pyh71513ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.1.0-pyh71513ae_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.1-hfc2798a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.1-hc8a0bd2_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.10.6-h5505292_0.conda @@ -522,10 +522,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.16-ha0e7c42_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_h07bc746_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-19.0.0-h819e3af_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-19.0.0-hf07054f_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-19.0.0-hf07054f_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-19.0.0-h4239455_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-19.0.0-h819e3af_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-19.0.0-hf07054f_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-19.0.0-hf07054f_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-19.0.0-h4239455_8_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-26_osxarm64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.1.0-hd74edd7_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.1.0-hd74edd7_2.conda @@ -553,8 +553,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.28-openmp_hf332438_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopentelemetry-cpp-1.18.0-h0c05b2d_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopentelemetry-cpp-headers-1.18.0-hce30654_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-19.0.0-h636d7b7_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.45-h3783ad8_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-19.0.0-h636d7b7_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.46-h3783ad8_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.3-h3bd63a1_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h07bc746_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda @@ -568,17 +568,17 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxcb-1.17.0-hdb1d25a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.5-h178c5d8_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/lit-19.1.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/lit-19.1.7-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda - 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-25.1.0.dev2025012505-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025012505-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025012505-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025012605-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025012605-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025012605-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012605-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-25.1.0.dev2025012505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025012605-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 @@ -637,7 +637,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-h98b9ce2_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.2.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.45.2-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.45.3-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.21.0-py312hf3e4074_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda @@ -813,15 +813,15 @@ packages: license_family: MIT size: 115305 timestamp: 1736174485476 -- conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.3.0-pyh71513ae_0.conda - sha256: 750186af694a7130eaf7119fbb56db0d2326d8995ad5b8eae23c622b85fea29a - md5: 356927ace43302bf6f5926e2a58dae6a +- conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.1.0-pyh71513ae_0.conda + sha256: 1f267886522dfb9ae4e5ebbc3135b5eb13cff27bdbfe8d881a4d893459166ab4 + md5: 2cc3f588512f04f3a0c64b4e9bedc02d depends: - python >=3.9 license: MIT license_family: MIT - size: 56354 - timestamp: 1734348889193 + size: 56370 + timestamp: 1737819298139 - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.1-h205f482_0.conda sha256: ebe5e33249f37f6bb481de99581ebdc92dbfcf1b6915609bcf3c9e78661d6352 md5: 9c500858e88df50af3cc883d194de78a @@ -2577,10 +2577,10 @@ packages: license_family: Apache size: 1178260 timestamp: 1736008642885 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-19.0.0-h00a82cf_7_cpu.conda - build_number: 7 - sha256: 8b401a256e4632ab6c1ea8d3cfb16d7c8ff3b0fe5af7cd474202a369c63dc74c - md5: 8d553fa6a138f369ed94b8b1a76f1e77 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-19.0.0-h00a82cf_8_cpu.conda + build_number: 8 + sha256: dcac39be95b9afe42bc9b7bfcfa258e31e413a4cb79c49f6707edf2838e8d64c + md5: 51e31b59290c09b58d290f66b908999b depends: - __glibc >=2.17,<3.0.a0 - aws-crt-cpp >=0.29.9,<0.29.10.0a0 @@ -2610,18 +2610,18 @@ packages: - snappy >=1.2.1,<1.3.0a0 - zstd >=1.5.6,<1.6.0a0 constrains: - - apache-arrow-proc =*=cpu - - arrow-cpp <0.0a0 - parquet-cpp <0.0a0 + - arrow-cpp <0.0a0 + - apache-arrow-proc =*=cpu arch: x86_64 platform: linux license: Apache-2.0 - size: 8979130 - timestamp: 1737757402544 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-19.0.0-h03ebaaf_7_cpu.conda - build_number: 7 - sha256: f029b7fbed445a2cb08b95686e9a9cb30c04a10998ef632c2cf84fd0c0d1e424 - md5: b94870200ac053eff3dda878d523f1d1 + size: 8969999 + timestamp: 1737824740139 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-19.0.0-h03ebaaf_8_cpu.conda + build_number: 8 + sha256: ca5db2ba71de0c4fb54ee12e3b841e3e90b988ae7a5935fae3cce90111b5cb6d + md5: 1ac6f73a63d715590a7ad0113a578762 depends: - aws-crt-cpp >=0.29.9,<0.29.10.0a0 - aws-sdk-cpp >=1.11.489,<1.11.490.0a0 @@ -2656,12 +2656,12 @@ packages: arch: aarch64 platform: linux license: Apache-2.0 - size: 8210159 - timestamp: 1737757741310 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-19.0.0-h819e3af_7_cpu.conda - build_number: 7 - sha256: e5e370673b9fe9459a826f474dc470b59fd6744fa652dd534f7ef722cd9be39c - md5: 3cb4f805d9742272591795d487786f2d + size: 8213318 + timestamp: 1737808895185 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-19.0.0-h819e3af_8_cpu.conda + build_number: 8 + sha256: 825afabd1c998dfddce9600584c492296a15219d441c6e3029e6c6228200d695 + md5: fbe0ce0ef6d386ab832ee5cca2ab3048 depends: - __osx >=11.0 - aws-crt-cpp >=0.29.9,<0.29.10.0a0 @@ -2690,155 +2690,155 @@ packages: - snappy >=1.2.1,<1.3.0a0 - zstd >=1.5.6,<1.6.0a0 constrains: - - parquet-cpp <0.0a0 - - apache-arrow-proc =*=cpu - arrow-cpp <0.0a0 + - apache-arrow-proc =*=cpu + - parquet-cpp <0.0a0 arch: arm64 platform: osx license: Apache-2.0 - size: 5540329 - timestamp: 1737756116679 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-19.0.0-hcb10f89_7_cpu.conda - build_number: 7 - sha256: 7018394af408b4ce344c97cd6f97bc676708067a9d2d834bf091b74f13b41be4 - md5: de10e3323bfa9dd8929f7fbe23665883 + size: 5573619 + timestamp: 1737806044972 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-19.0.0-hcb10f89_8_cpu.conda + build_number: 8 + sha256: bf8f64403685eb3ab6ebc5a25cc3a70431a1f822469bf96b0ee80c169deec0ac + md5: dafba09929a58e10bb8231ff7966e623 depends: - __glibc >=2.17,<3.0.a0 - - libarrow 19.0.0 h00a82cf_7_cpu + - libarrow 19.0.0 h00a82cf_8_cpu - libgcc >=13 - libstdcxx >=13 arch: x86_64 platform: linux license: Apache-2.0 - size: 637717 - timestamp: 1737757443960 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-19.0.0-h3b568fd_7_cpu.conda - build_number: 7 - sha256: 97911c3addb66033747e12c608ca32ce5c56d6d9f35674cfb97fff0ff4c7e926 - md5: d50c51a7d86454c90de667fcafb8c785 + size: 637555 + timestamp: 1737824783456 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-19.0.0-h3b568fd_8_cpu.conda + build_number: 8 + sha256: 154fe9bee1a1e3c96497fcbf3c01191965d5c4e9718dcbf8502035d7ff633499 + md5: e015edb6317c81893f9ce4865bbd55f4 depends: - - libarrow 19.0.0 h03ebaaf_7_cpu + - libarrow 19.0.0 h03ebaaf_8_cpu - libgcc >=13 - libstdcxx >=13 arch: aarch64 platform: linux license: Apache-2.0 - size: 602410 - timestamp: 1737757792970 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-19.0.0-hf07054f_7_cpu.conda - build_number: 7 - sha256: a716bd2c6106f0508e69800f73a9368f5b5fadba0cd1f7f7ac753bf43392bf4d - md5: a138208af40b21c840c1075f3bec5014 + size: 602892 + timestamp: 1737808980001 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-19.0.0-hf07054f_8_cpu.conda + build_number: 8 + sha256: 66ce35077dae435cd34644d53159af14afd62452eeec8f63cd55adb11e7f2780 + md5: 68cd272eccf7b4fcb0a3bab95e89e71e depends: - __osx >=11.0 - - libarrow 19.0.0 h819e3af_7_cpu + - libarrow 19.0.0 h819e3af_8_cpu - libcxx >=18 arch: arm64 platform: osx license: Apache-2.0 - size: 499319 - timestamp: 1737756215547 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-19.0.0-hcb10f89_7_cpu.conda - build_number: 7 - sha256: 4f3864b3f004fc320f28ecc5bb47e4cd927f40ef8dc6a16bdef51b34f51da921 - md5: eddf039322781fee4d4137f50769511c + size: 500365 + timestamp: 1737806169385 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-19.0.0-hcb10f89_8_cpu.conda + build_number: 8 + sha256: dc4a0f13428c9bd9781e25b67f5f52a92b8c4beafa2435fe5127e9fac7969218 + md5: 66e19108e4597b9a35d0886607c2d8a8 depends: - __glibc >=2.17,<3.0.a0 - - libarrow 19.0.0 h00a82cf_7_cpu - - libarrow-acero 19.0.0 hcb10f89_7_cpu + - libarrow 19.0.0 h00a82cf_8_cpu + - libarrow-acero 19.0.0 hcb10f89_8_cpu - libgcc >=13 - - libparquet 19.0.0 h081d1f1_7_cpu + - libparquet 19.0.0 h081d1f1_8_cpu - libstdcxx >=13 arch: x86_64 platform: linux license: Apache-2.0 - size: 605090 - timestamp: 1737757550128 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-19.0.0-h3b568fd_7_cpu.conda - build_number: 7 - sha256: e055430747eba48c99a7b1ebe0596e126a121eeffd6ba667c00554a0b2707839 - md5: 2d6208bc6ab9089ee1787d9abbefd172 + size: 604335 + timestamp: 1737824891062 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-19.0.0-h3b568fd_8_cpu.conda + build_number: 8 + sha256: f038f979b3357124a548dd83880f94284355a90e4736caaabd23c750cf06eaa9 + md5: 03f35d7f35dae0e05f5f4f747d7eb6e7 depends: - - libarrow 19.0.0 h03ebaaf_7_cpu - - libarrow-acero 19.0.0 h3b568fd_7_cpu + - libarrow 19.0.0 h03ebaaf_8_cpu + - libarrow-acero 19.0.0 h3b568fd_8_cpu - libgcc >=13 - - libparquet 19.0.0 hfc78867_7_cpu + - libparquet 19.0.0 hfc78867_8_cpu - libstdcxx >=13 arch: aarch64 platform: linux license: Apache-2.0 - size: 580599 - timestamp: 1737757863901 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-19.0.0-hf07054f_7_cpu.conda - build_number: 7 - sha256: dcc8d61eae311c5d377a41e2c6f964b86e7289917c93d3af03e5d4a4c88ab85a - md5: 5791e257ecb73e7745fa62446f22b1ea + size: 579626 + timestamp: 1737809072479 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-19.0.0-hf07054f_8_cpu.conda + build_number: 8 + sha256: 6934ce0503472f002695d45ae12a8f2948e10e7a0b7430330a4d0d83f3e5ca27 + md5: 1a941d1ddc16b532790781a4becdc881 depends: - __osx >=11.0 - - libarrow 19.0.0 h819e3af_7_cpu - - libarrow-acero 19.0.0 hf07054f_7_cpu + - libarrow 19.0.0 h819e3af_8_cpu + - libarrow-acero 19.0.0 hf07054f_8_cpu - libcxx >=18 - - libparquet 19.0.0 h636d7b7_7_cpu + - libparquet 19.0.0 h636d7b7_8_cpu arch: arm64 platform: osx license: Apache-2.0 - size: 500722 - timestamp: 1737757369380 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-19.0.0-h08228c5_7_cpu.conda - build_number: 7 - sha256: 51ec47ed56880cfd64bfa012c8488d127d8f0acfe0d64707880393d49a2663a2 - md5: e14afa8912873a094a30ad9e455bafc3 + size: 501001 + timestamp: 1737807214184 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-19.0.0-h08228c5_8_cpu.conda + build_number: 8 + sha256: e370ee738d3963120f715343a27cf041c62a3ee8bb19e25da9115ec4bae5f2de + md5: e5dd1926e5a4b23de8ba4eacc8eb9b2d depends: - __glibc >=2.17,<3.0.a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 19.0.0 h00a82cf_7_cpu - - libarrow-acero 19.0.0 hcb10f89_7_cpu - - libarrow-dataset 19.0.0 hcb10f89_7_cpu + - libarrow 19.0.0 h00a82cf_8_cpu + - libarrow-acero 19.0.0 hcb10f89_8_cpu + - libarrow-dataset 19.0.0 hcb10f89_8_cpu - libgcc >=13 - libprotobuf >=5.28.3,<5.28.4.0a0 - libstdcxx >=13 arch: x86_64 platform: linux license: Apache-2.0 - size: 521685 - timestamp: 1737757595490 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-19.0.0-h1e9d426_7_cpu.conda - build_number: 7 - sha256: bd85da0813384b5b5af2f2b05e4bc20aa606eb5528310c84e42aa495feec6050 - md5: b35923aad96b07d76db4c31ccc74584f + size: 521475 + timestamp: 1737824942852 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-19.0.0-h1e9d426_8_cpu.conda + build_number: 8 + sha256: 92e1fea8557a931c273ea3bd3bf73a4f4f0c566844dcedf78b9a16e5cf6cab56 + md5: ef08fcb5c165cdc743336bd8f4cbed69 depends: - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 19.0.0 h03ebaaf_7_cpu - - libarrow-acero 19.0.0 h3b568fd_7_cpu - - libarrow-dataset 19.0.0 h3b568fd_7_cpu + - libarrow 19.0.0 h03ebaaf_8_cpu + - libarrow-acero 19.0.0 h3b568fd_8_cpu + - libarrow-dataset 19.0.0 h3b568fd_8_cpu - libgcc >=13 - libprotobuf >=5.28.3,<5.28.4.0a0 - libstdcxx >=13 arch: aarch64 platform: linux license: Apache-2.0 - size: 515585 - timestamp: 1737757899077 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-19.0.0-h4239455_7_cpu.conda - build_number: 7 - sha256: 94e5351779728cacd3fcadcfe082fc840a79333ce8b1056bb811e39417decd2a - md5: 05a75db98927961f86b64340442150c3 + size: 516126 + timestamp: 1737809118915 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-19.0.0-h4239455_8_cpu.conda + build_number: 8 + sha256: 445d2ca20b07e57270f3b07b62c09794369413e5ff3716d9c73d0ad360969583 + md5: a39953d9b03b0463f4ccc187a8bcfcca depends: - __osx >=11.0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 19.0.0 h819e3af_7_cpu - - libarrow-acero 19.0.0 hf07054f_7_cpu - - libarrow-dataset 19.0.0 hf07054f_7_cpu + - libarrow 19.0.0 h819e3af_8_cpu + - libarrow-acero 19.0.0 hf07054f_8_cpu + - libarrow-dataset 19.0.0 hf07054f_8_cpu - libcxx >=18 - libprotobuf >=5.28.3,<5.28.4.0a0 arch: arm64 platform: osx license: Apache-2.0 - size: 449238 - timestamp: 1737757536452 + size: 449672 + timestamp: 1737807386331 - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-26_linux64_openblas.conda build_number: 26 sha256: 30bd658682b124243f8e52d8edf8a19e7be1bc31e4fe4baec30a64002dc8cd0c @@ -4046,13 +4046,13 @@ packages: license_family: APACHE size: 320565 timestamp: 1735643673319 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-19.0.0-h081d1f1_7_cpu.conda - build_number: 7 - sha256: f117af1368c613328fb3af251287c6885962d9477a55d9bf1ab253626730b4ea - md5: a8b3022bfe8a2cb4249229768401340c +- conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-19.0.0-h081d1f1_8_cpu.conda + build_number: 8 + sha256: b2e1bf8634efb643a9f15fe19f9bc0877482c509eff7cee6136278a2c2fa5842 + md5: bef810a8da683aa11c644066a87f71c3 depends: - __glibc >=2.17,<3.0.a0 - - libarrow 19.0.0 h00a82cf_7_cpu + - libarrow 19.0.0 h00a82cf_8_cpu - libgcc >=13 - libstdcxx >=13 - libthrift >=0.21.0,<0.21.1.0a0 @@ -4060,14 +4060,14 @@ packages: arch: x86_64 platform: linux license: Apache-2.0 - size: 1240902 - timestamp: 1737757526098 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-19.0.0-hfc78867_7_cpu.conda - build_number: 7 - sha256: 85a9964201ab6ed15b22a5ea29c66b44febc5a815a7d3234c3a605ca7644cc02 - md5: 8814a0cd443b9ebbb1662b370b6b14fb + size: 1241786 + timestamp: 1737824866572 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-19.0.0-hfc78867_8_cpu.conda + build_number: 8 + sha256: 8917fc5e5bb65894106bbd461d2f9c9c0c3dc642ff5da197c941bf620ce840a0 + md5: b0d5f8c122a3e9a6b75036e43e78fcfa depends: - - libarrow 19.0.0 h03ebaaf_7_cpu + - libarrow 19.0.0 h03ebaaf_8_cpu - libgcc >=13 - libstdcxx >=13 - libthrift >=0.21.0,<0.21.1.0a0 @@ -4075,26 +4075,26 @@ packages: arch: aarch64 platform: linux license: Apache-2.0 - size: 1153344 - timestamp: 1737757846296 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-19.0.0-h636d7b7_7_cpu.conda - build_number: 7 - sha256: 637298e97c586a74e19df44cf378be3e99274aef09ee1b2a5f30c4492bd62e0d - md5: 3f0e87a16e30ff26bb513fcda9f971ac + size: 1153834 + timestamp: 1737809048861 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-19.0.0-h636d7b7_8_cpu.conda + build_number: 8 + sha256: da04e6bd7ed2ca64aadf0ad12d9752e8423e85c37e0db80e27c7ff334fcbd2b6 + md5: c1ff2e71a289fb76146591c9d3f9de0a depends: - __osx >=11.0 - - libarrow 19.0.0 h819e3af_7_cpu + - libarrow 19.0.0 h819e3af_8_cpu - libcxx >=18 - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 arch: arm64 platform: osx license: Apache-2.0 - size: 893815 - timestamp: 1737757309795 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.45-h943b412_0.conda - sha256: b8f5b5ba9a14dedf7c97c01300de492b1b52b68eacbc3249a13fdbfa82349a2f - md5: 85cbdaacad93808395ac295b5667d25b + size: 893482 + timestamp: 1737807155720 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.46-h943b412_0.conda + sha256: a46436dadd12d58155280d68876dba2d8a3badbc8074956d14fe6530c7c7eda6 + md5: adcf7bacff219488e29cfa95a2abd8f7 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -4102,30 +4102,30 @@ packages: arch: x86_64 platform: linux license: zlib-acknowledgement - size: 289426 - timestamp: 1736339058310 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.45-hec79eb8_0.conda - sha256: a06daa523a0d5775acb96e6e3f083adc2ab1383eb8f664513dbc663f439c9cca - md5: 9a8716c16b40acc7148263de1d0a403b + size: 292273 + timestamp: 1737791061653 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.46-hec79eb8_0.conda + sha256: be4eefe8415c9b37d158eaa9522ce4c399a572339ac2bcc4d26d6433e0ed767d + md5: f9f793497c0973d5416421aa2f96cda4 depends: - libgcc >=13 - libzlib >=1.3.1,<2.0a0 arch: aarch64 platform: linux license: zlib-acknowledgement - size: 299051 - timestamp: 1736344007986 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.45-h3783ad8_0.conda - sha256: ddcc81c049b32fb5eb3ac1f9a6d3a589c08325c8ec6f89eb912208b19330d68c - md5: d554c806d065b1763cb9e1cb1d25741d + size: 304364 + timestamp: 1737795802176 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.46-h3783ad8_0.conda + sha256: db78a711561bb6df274ef421472d948dfd1093404db3915e891ae6d7fd37fadc + md5: 15d480fb9dad036eaa4de0b51eab3ccc depends: - __osx >=11.0 - libzlib >=1.3.1,<2.0a0 arch: arm64 platform: osx license: zlib-acknowledgement - size: 263151 - timestamp: 1736339184358 + size: 266516 + timestamp: 1737791023678 - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda sha256: 51125ebb8b7152e4a4e69fd2398489c4ec8473195c27cde3cbdf1cb6d18c5493 md5: d8703f1ffe5a06356f06467f1d0b9464 @@ -4749,15 +4749,15 @@ packages: license_family: Other size: 46438 timestamp: 1727963202283 -- conda: https://conda.anaconda.org/conda-forge/noarch/lit-19.1.7-pyhd8ed1ab_0.conda - sha256: 3527dcdd45af61cc00fb7efe4c454a956d421dde4b459de3beb0993352a4e0cb - md5: 665a0aafb15ba7a5771cca614146c718 +- conda: https://conda.anaconda.org/conda-forge/noarch/lit-19.1.7-pyhd8ed1ab_1.conda + sha256: 57b535a67f59c97302e2bbc60abcbc8d51ef0a4c7b1926049091d7da96da7b3a + md5: c5a4e2d9818fe6551dccd02243765527 depends: - - python >=3 + - python >=3.9 license: Apache-2.0 WITH LLVM-exception license_family: Apache - size: 128580 - timestamp: 1736894117712 + size: 128565 + timestamp: 1737789576837 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda sha256: b92a669f2059874ebdcb69041b6c243d68ffc3fb356ac1339cec44aeb27245d7 md5: c4d54bfd3817313ce758aa76283b118d @@ -4865,47 +4865,47 @@ packages: license_family: BSD size: 24048 timestamp: 1733219945697 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025012505-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025012605-release.conda noarch: python - sha256: 83e72ee5d9c5965eefc04dc84a9f496b5064e006dbfcfe137ab1710285d6b3f3 - md5: 3359ea55713294fb8bb2c70e6bd5753a + sha256: 8c9827436fb98c4de9cdf0a0f74cdfe1dbe2efa8484f19ced1f4eb939ba0f919 + md5: f09aa38afbb5a1e68bc624a98556bd3f depends: - - max-core ==25.1.0.dev2025012505 release - - max-python >=25.1.0.dev2025012505,<26.0a0 - - mojo-jupyter ==25.1.0.dev2025012505 release - - mblack ==25.1.0.dev2025012505 release + - max-core ==25.1.0.dev2025012605 release + - max-python >=25.1.0.dev2025012605,<26.0a0 + - mojo-jupyter ==25.1.0.dev2025012605 release + - mblack ==25.1.0.dev2025012605 release license: LicenseRef-Modular-Proprietary - size: 9918 - timestamp: 1737782253436 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025012505-release.conda - sha256: d89d1a2279776c687b3b729d53b1e737477afc3eae214d5750b00a048667aaed - md5: ebf37a7d5882bb676718a5648dee3654 + size: 9920 + timestamp: 1737868622340 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025012605-release.conda + sha256: e9ef000deed41edd45df86cdeb3c46eb933a85dc7929f399d18746fa6bf84d3a + md5: d604a770e815feb97cc163a095d74322 depends: - - mblack ==25.1.0.dev2025012505 release + - mblack ==25.1.0.dev2025012605 release license: LicenseRef-Modular-Proprietary - size: 243130339 - timestamp: 1737782221031 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025012505-release.conda - sha256: ad52887002d135793158f9bc4afcd2ea1d89111f65351885669894bb23a83763 - md5: bde4e25a295f947b730261246613b83d + size: 243456510 + timestamp: 1737868720794 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025012605-release.conda + sha256: 589289450e22c82b178157c51ba011e795c115ee4da8f21d4dd8055e05d991c0 + md5: e4e7aecdda98cc52ba8e4c075170713b depends: - - mblack ==25.1.0.dev2025012505 release + - mblack ==25.1.0.dev2025012605 release license: LicenseRef-Modular-Proprietary - size: 245590611 - timestamp: 1737782253434 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025012505-release.conda - sha256: b1d103910f7b6a273906ea40f7dc993144511ed61239a5d764aca21ea479fe46 - md5: e01118f345f22ed4efb89192dfbbdbc6 + size: 245958004 + timestamp: 1737868622338 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025012605-release.conda + sha256: 3004e8b1fca572284485b488639c916e2028fc022e7f9eaece25676c0d420521 + md5: f188ddc4fef4410d599beafd55e61cf1 depends: - - mblack ==25.1.0.dev2025012505 release + - mblack ==25.1.0.dev2025012605 release license: LicenseRef-Modular-Proprietary - size: 204961123 - timestamp: 1737782482300 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025012505-3.12release.conda - sha256: b52562f368fe5dbc95343bcd7f2ee4699a25589c689b0cba444e5a93757b1ea7 - md5: a43f10619b5e0502b7f59ad823770f9f + size: 205170122 + timestamp: 1737869052124 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025012605-3.12release.conda + sha256: 296dcbab2616decb3e19510a8d56d2ad7208fbdc65aa9a5c65c24053e097083d + md5: ae1b2c8ed2537bc3b9cba21266b5771e depends: - - max-core ==25.1.0.dev2025012505 release + - max-core ==25.1.0.dev2025012605 release - python 3.12.* - fastapi - httpx @@ -4926,13 +4926,13 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 120565142 - timestamp: 1737782221040 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025012505-3.12release.conda - sha256: c6252c78ced4b1a2c793ff2cb5846bd34dd6d16e8fd65425e9f1df6fe6227b0d - md5: 8ee044754ebf79922c85299e7425abf3 + size: 120667192 + timestamp: 1737868720803 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025012605-3.12release.conda + sha256: d84debf9ad9537afbf502c89baa3e606e12caba812b193d05e5480ffbec8a8f3 + md5: b2f7e32d1931ad233be7967b4e4880d6 depends: - - max-core ==25.1.0.dev2025012505 release + - max-core ==25.1.0.dev2025012605 release - python 3.12.* - fastapi - httpx @@ -4953,13 +4953,13 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 123069129 - timestamp: 1737782253444 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025012505-3.12release.conda - sha256: 489140758c2f0df45e077c6d52aac9bd419774b2d00b0a594d49505495e7aca4 - md5: 03b88370aa08d78471ff2e88973534d3 + size: 123187293 + timestamp: 1737868622348 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025012605-3.12release.conda + sha256: a4fa173d3d6f12a6ee5fa1dc61300fa3392fd82e416025a0cbd97c6ac01e2288 + md5: 9e3138e7bcd85feea476ca22514f1e1b depends: - - max-core ==25.1.0.dev2025012505 release + - max-core ==25.1.0.dev2025012605 release - python 3.12.* - fastapi - httpx @@ -4980,12 +4980,12 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 105954416 - timestamp: 1737782482303 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012505-release.conda + size: 106062355 + timestamp: 1737869052127 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012605-release.conda noarch: python - sha256: 906a374c4b22380993352480333cd5fc9c1a2e2179ab2e7ea65abc3bd54fc35e - md5: 3109b109f417bff02b27ff1cc78239ae + sha256: 76d9f174ae8245596fcbed5a05d7b0a49ef8eaceac009d1d4c2842f5f31592d6 + md5: f9b9c5654edb0396f0793d557c4fb898 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -4995,8 +4995,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130805 - timestamp: 1737782253440 + size: 130814 + timestamp: 1737868622344 - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda sha256: 78c1bbe1723449c52b7a9df1af2ee5f005209f67e40b6e1d3c7619127c43b1c7 md5: 592132998493b3ff25fd7479396e8351 @@ -5006,18 +5006,18 @@ packages: license_family: MIT size: 14465 timestamp: 1733255681319 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025012505-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025012605-release.conda noarch: python - sha256: 6cba6b01c693678b0e48d5428788d3734e885f6efc911b345fae474e4405460f - md5: 16521d51e47d4d67cf1a42351687f6b8 + sha256: 4e786c10774447edaf5fa00324223340fa7bba82c9b15058903aed23b2a43e25 + md5: 4b66d050c8e56e18a3a7feaaad38d20a depends: - - max-core ==25.1.0.dev2025012505 release + - max-core ==25.1.0.dev2025012605 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22934 - timestamp: 1737782253442 + size: 22930 + timestamp: 1737868622346 - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py312h178313f_2.conda sha256: b05bc8252a6e957bf4a776ed5e0e61d1ba88cdc46ccb55890c72cc58b10371f4 md5: 5b5e3267d915a107eca793d52e1b780a @@ -6686,17 +6686,17 @@ packages: license_family: BSD size: 15324 timestamp: 1735126414893 -- conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.45.2-pyha770c72_0.conda - sha256: 2c429dbbd5e7256517ef6cdfc30664b0c0e87f90f3c526afe3b97681aafb5623 - md5: acd5901cdd0365e18129f4748e524615 +- conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.45.3-pyha770c72_0.conda + sha256: be48c99e6fb8e12ebee09e6fbb4d78a170b614cdaa19ab791a8f5b6caf09919a + md5: 9b3a68bc7aed7949ef86f950993261f4 depends: - anyio >=3.6.2,<5 - python >=3.9 - typing_extensions >=3.10.0 license: BSD-3-Clause license_family: BSD - size: 58040 - timestamp: 1736016898891 + size: 57934 + timestamp: 1737824077668 - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda sha256: e0569c9caa68bf476bead1bed3d79650bb080b532c64a4af7d8ca286c08dea4e md5: d453b98d9c83e71da0741bb0ff4d76bc From c669f7c58937bc2f3fbc9608a5152a617e83f250 Mon Sep 17 00:00:00 2001 From: modularbot Date: Mon, 27 Jan 2025 07:31:21 +0000 Subject: [PATCH 305/509] Update lockfiles to point to latest nightly version: 25.1.0.dev2025012705 --- examples/life/magic.lock | 157 ++++++++++++++++++--------------- examples/magic.lock | 157 ++++++++++++++++++--------------- examples/notebooks/magic.lock | 158 +++++++++++++++++++--------------- examples/operators/magic.lock | 157 ++++++++++++++++++--------------- examples/testing/magic.lock | 157 ++++++++++++++++++--------------- magic.lock | 157 ++++++++++++++++++--------------- 6 files changed, 517 insertions(+), 426 deletions(-) diff --git a/examples/life/magic.lock b/examples/life/magic.lock index 40e1c1de68..35a2fdcb83 100644 --- a/examples/life/magic.lock +++ b/examples/life/magic.lock @@ -172,12 +172,12 @@ 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-25.1.0.dev2025012605-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025012605-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025012605-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025012705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025012705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025012705-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012705-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-25.1.0.dev2025012605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025012705-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_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.15-py312h98912ed_1.conda @@ -453,12 +453,12 @@ 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-25.1.0.dev2025012605-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025012605-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025012605-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025012705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025012705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025012705-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012705-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-25.1.0.dev2025012605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025012705-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_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.15-py312hdd3e373_1.conda @@ -717,12 +717,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-25.1.0.dev2025012605-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025012605-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025012605-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025012705-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025012705-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025012705-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012705-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-25.1.0.dev2025012605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025012705-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 @@ -3416,6 +3416,7 @@ packages: arch: x86_64 platform: linux license: Apache-2.0 + license_family: APACHE size: 8969999 timestamp: 1737824740139 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-19.0.0-h03ebaaf_8_cpu.conda @@ -3456,6 +3457,7 @@ packages: arch: aarch64 platform: linux license: Apache-2.0 + license_family: APACHE size: 8213318 timestamp: 1737808895185 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-19.0.0-h819e3af_8_cpu.conda @@ -3496,6 +3498,7 @@ packages: arch: arm64 platform: osx license: Apache-2.0 + license_family: APACHE size: 5573619 timestamp: 1737806044972 - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-19.0.0-hcb10f89_8_cpu.conda @@ -3510,6 +3513,7 @@ packages: arch: x86_64 platform: linux license: Apache-2.0 + license_family: APACHE size: 637555 timestamp: 1737824783456 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-19.0.0-h3b568fd_8_cpu.conda @@ -3523,6 +3527,7 @@ packages: arch: aarch64 platform: linux license: Apache-2.0 + license_family: APACHE size: 602892 timestamp: 1737808980001 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-19.0.0-hf07054f_8_cpu.conda @@ -3536,6 +3541,7 @@ packages: arch: arm64 platform: osx license: Apache-2.0 + license_family: APACHE size: 500365 timestamp: 1737806169385 - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-19.0.0-hcb10f89_8_cpu.conda @@ -3552,6 +3558,7 @@ packages: arch: x86_64 platform: linux license: Apache-2.0 + license_family: APACHE size: 604335 timestamp: 1737824891062 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-19.0.0-h3b568fd_8_cpu.conda @@ -3567,6 +3574,7 @@ packages: arch: aarch64 platform: linux license: Apache-2.0 + license_family: APACHE size: 579626 timestamp: 1737809072479 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-19.0.0-hf07054f_8_cpu.conda @@ -3582,6 +3590,7 @@ packages: arch: arm64 platform: osx license: Apache-2.0 + license_family: APACHE size: 501001 timestamp: 1737807214184 - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-19.0.0-h08228c5_8_cpu.conda @@ -3601,6 +3610,7 @@ packages: arch: x86_64 platform: linux license: Apache-2.0 + license_family: APACHE size: 521475 timestamp: 1737824942852 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-19.0.0-h1e9d426_8_cpu.conda @@ -3619,6 +3629,7 @@ packages: arch: aarch64 platform: linux license: Apache-2.0 + license_family: APACHE size: 516126 timestamp: 1737809118915 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-19.0.0-h4239455_8_cpu.conda @@ -3637,6 +3648,7 @@ packages: arch: arm64 platform: osx license: Apache-2.0 + license_family: APACHE size: 449672 timestamp: 1737807386331 - conda: https://conda.anaconda.org/conda-forge/linux-64/libasprintf-0.22.5-he8f35ee_3.conda @@ -5358,6 +5370,7 @@ packages: arch: x86_64 platform: linux license: Apache-2.0 + license_family: APACHE size: 1241786 timestamp: 1737824866572 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-19.0.0-hfc78867_8_cpu.conda @@ -5373,6 +5386,7 @@ packages: arch: aarch64 platform: linux license: Apache-2.0 + license_family: APACHE size: 1153834 timestamp: 1737809048861 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-19.0.0-h636d7b7_8_cpu.conda @@ -5388,6 +5402,7 @@ packages: arch: arm64 platform: osx license: Apache-2.0 + license_family: APACHE size: 893482 timestamp: 1737807155720 - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.46-h943b412_0.conda @@ -6275,47 +6290,47 @@ packages: license_family: BSD size: 24048 timestamp: 1733219945697 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025012605-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025012705-release.conda noarch: python - sha256: 8c9827436fb98c4de9cdf0a0f74cdfe1dbe2efa8484f19ced1f4eb939ba0f919 - md5: f09aa38afbb5a1e68bc624a98556bd3f + sha256: 858899a14213e31412668b979537779ddaf730cad15593c3be3602d30d925cd3 + md5: 0788ab9a7003126a6d7285d3fb912104 depends: - - max-core ==25.1.0.dev2025012605 release - - max-python >=25.1.0.dev2025012605,<26.0a0 - - mojo-jupyter ==25.1.0.dev2025012605 release - - mblack ==25.1.0.dev2025012605 release + - max-core ==25.1.0.dev2025012705 release + - max-python >=25.1.0.dev2025012705,<26.0a0 + - mojo-jupyter ==25.1.0.dev2025012705 release + - mblack ==25.1.0.dev2025012705 release license: LicenseRef-Modular-Proprietary - size: 9920 - timestamp: 1737868622340 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025012605-release.conda - sha256: e9ef000deed41edd45df86cdeb3c46eb933a85dc7929f399d18746fa6bf84d3a - md5: d604a770e815feb97cc163a095d74322 + size: 9922 + timestamp: 1737955039963 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025012705-release.conda + sha256: d860e83c54d3824879bb5ae313ec290164a00c6aa33b3b6a613a52f5533f7f87 + md5: c2ef9257cbac5945ec0269b52400177b depends: - - mblack ==25.1.0.dev2025012605 release + - mblack ==25.1.0.dev2025012705 release license: LicenseRef-Modular-Proprietary - size: 243456510 - timestamp: 1737868720794 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025012605-release.conda - sha256: 589289450e22c82b178157c51ba011e795c115ee4da8f21d4dd8055e05d991c0 - md5: e4e7aecdda98cc52ba8e4c075170713b + size: 243456501 + timestamp: 1737955017859 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025012705-release.conda + sha256: 911fa0d215f2aef388f1b69600312c84fe8aa62300e8090e4970ede5519eeff3 + md5: 85e8cd9ee3ac21238a923b938e997c48 depends: - - mblack ==25.1.0.dev2025012605 release + - mblack ==25.1.0.dev2025012705 release license: LicenseRef-Modular-Proprietary - size: 245958004 - timestamp: 1737868622338 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025012605-release.conda - sha256: 3004e8b1fca572284485b488639c916e2028fc022e7f9eaece25676c0d420521 - md5: f188ddc4fef4410d599beafd55e61cf1 + size: 245946155 + timestamp: 1737955039961 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025012705-release.conda + sha256: f338470aae98f63c08c9dda7d9b94c559a21055509c2ed924cb55441c8b60ba9 + md5: 44cfd5ca1dc48bab35146702380ac083 depends: - - mblack ==25.1.0.dev2025012605 release + - mblack ==25.1.0.dev2025012705 release license: LicenseRef-Modular-Proprietary - size: 205170122 - timestamp: 1737869052124 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025012605-3.12release.conda - sha256: 296dcbab2616decb3e19510a8d56d2ad7208fbdc65aa9a5c65c24053e097083d - md5: ae1b2c8ed2537bc3b9cba21266b5771e + size: 205169482 + timestamp: 1737956267686 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025012705-3.12release.conda + sha256: 0a18a085825c9fa2bf3e575310837f3dbdddc96b7aaea8b651e3eae61c02530f + md5: 42d30c788187591cf4b61d3ef4129e38 depends: - - max-core ==25.1.0.dev2025012605 release + - max-core ==25.1.0.dev2025012705 release - python 3.12.* - fastapi - httpx @@ -6336,13 +6351,13 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 120667192 - timestamp: 1737868720803 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025012605-3.12release.conda - sha256: d84debf9ad9537afbf502c89baa3e606e12caba812b193d05e5480ffbec8a8f3 - md5: b2f7e32d1931ad233be7967b4e4880d6 + size: 120669382 + timestamp: 1737955017868 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025012705-3.12release.conda + sha256: 8372666a6ad71409d0ed7336e1b955dd86d1ceb3f9b96c0a098cb59a802b688e + md5: 222a46c2286742510e8ee05ad24f2523 depends: - - max-core ==25.1.0.dev2025012605 release + - max-core ==25.1.0.dev2025012705 release - python 3.12.* - fastapi - httpx @@ -6363,13 +6378,13 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 123187293 - timestamp: 1737868622348 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025012605-3.12release.conda - sha256: a4fa173d3d6f12a6ee5fa1dc61300fa3392fd82e416025a0cbd97c6ac01e2288 - md5: 9e3138e7bcd85feea476ca22514f1e1b + size: 123185570 + timestamp: 1737955039973 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025012705-3.12release.conda + sha256: c4894d84b65bc2e997f5c7fa10027f276b481bbb2ded68f34bd74bf1e195076a + md5: fcb3723a6dbf99dd5d6ab6895e97de58 depends: - - max-core ==25.1.0.dev2025012605 release + - max-core ==25.1.0.dev2025012705 release - python 3.12.* - fastapi - httpx @@ -6390,12 +6405,12 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 106062355 - timestamp: 1737869052127 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012605-release.conda + size: 106061856 + timestamp: 1737956267689 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012705-release.conda noarch: python - sha256: 76d9f174ae8245596fcbed5a05d7b0a49ef8eaceac009d1d4c2842f5f31592d6 - md5: f9b9c5654edb0396f0793d557c4fb898 + sha256: 90cc368b1a6ceac15f44c67517c1af7fe1dc5dce40b92f91f1830be2f6a66fb9 + md5: 15ff6d8c842fbce739084f0bbd23bd27 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -6405,8 +6420,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130814 - timestamp: 1737868622344 + size: 130811 + timestamp: 1737955039968 - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda sha256: 78c1bbe1723449c52b7a9df1af2ee5f005209f67e40b6e1d3c7619127c43b1c7 md5: 592132998493b3ff25fd7479396e8351 @@ -6416,18 +6431,18 @@ packages: license_family: MIT size: 14465 timestamp: 1733255681319 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025012605-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025012705-release.conda noarch: python - sha256: 4e786c10774447edaf5fa00324223340fa7bba82c9b15058903aed23b2a43e25 - md5: 4b66d050c8e56e18a3a7feaaad38d20a + sha256: fb3ed00e9f7df548142bb0afa9edf654413f61d1b39c6b1cbfc9cf2fbb6e04f9 + md5: 961e0d8087b0ab6e38d0e1a518438827 depends: - - max-core ==25.1.0.dev2025012605 release + - max-core ==25.1.0.dev2025012705 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22930 - timestamp: 1737868622346 + size: 22933 + timestamp: 1737955039968 - conda: https://conda.anaconda.org/conda-forge/linux-64/mpg123-1.32.9-hc50e24c_0.conda sha256: 39c4700fb3fbe403a77d8cc27352fa72ba744db487559d5d44bf8411bb4ea200 md5: c7f302fd11eeb0987a6a5e1f3aed6a21 diff --git a/examples/magic.lock b/examples/magic.lock index 3f7721cdc2..4676795e18 100644 --- a/examples/magic.lock +++ b/examples/magic.lock @@ -133,12 +133,12 @@ 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-25.1.0.dev2025012605-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025012605-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025012605-3.11release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025012705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025012705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025012705-3.11release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012705-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-25.1.0.dev2025012605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025012705-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 @@ -356,12 +356,12 @@ 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-25.1.0.dev2025012605-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025012605-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025012605-3.11release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025012705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025012705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025012705-3.11release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012705-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-25.1.0.dev2025012605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025012705-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 @@ -570,12 +570,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-25.1.0.dev2025012605-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025012605-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025012605-3.11release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025012705-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025012705-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025012705-3.11release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012705-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-25.1.0.dev2025012605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025012705-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 @@ -2613,6 +2613,7 @@ packages: arch: x86_64 platform: linux license: Apache-2.0 + license_family: APACHE size: 8969999 timestamp: 1737824740139 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-19.0.0-h03ebaaf_8_cpu.conda @@ -2653,6 +2654,7 @@ packages: arch: aarch64 platform: linux license: Apache-2.0 + license_family: APACHE size: 8213318 timestamp: 1737808895185 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-19.0.0-h819e3af_8_cpu.conda @@ -2693,6 +2695,7 @@ packages: arch: arm64 platform: osx license: Apache-2.0 + license_family: APACHE size: 5573619 timestamp: 1737806044972 - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-19.0.0-hcb10f89_8_cpu.conda @@ -2707,6 +2710,7 @@ packages: arch: x86_64 platform: linux license: Apache-2.0 + license_family: APACHE size: 637555 timestamp: 1737824783456 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-19.0.0-h3b568fd_8_cpu.conda @@ -2720,6 +2724,7 @@ packages: arch: aarch64 platform: linux license: Apache-2.0 + license_family: APACHE size: 602892 timestamp: 1737808980001 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-19.0.0-hf07054f_8_cpu.conda @@ -2733,6 +2738,7 @@ packages: arch: arm64 platform: osx license: Apache-2.0 + license_family: APACHE size: 500365 timestamp: 1737806169385 - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-19.0.0-hcb10f89_8_cpu.conda @@ -2749,6 +2755,7 @@ packages: arch: x86_64 platform: linux license: Apache-2.0 + license_family: APACHE size: 604335 timestamp: 1737824891062 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-19.0.0-h3b568fd_8_cpu.conda @@ -2764,6 +2771,7 @@ packages: arch: aarch64 platform: linux license: Apache-2.0 + license_family: APACHE size: 579626 timestamp: 1737809072479 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-19.0.0-hf07054f_8_cpu.conda @@ -2779,6 +2787,7 @@ packages: arch: arm64 platform: osx license: Apache-2.0 + license_family: APACHE size: 501001 timestamp: 1737807214184 - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-19.0.0-h08228c5_8_cpu.conda @@ -2798,6 +2807,7 @@ packages: arch: x86_64 platform: linux license: Apache-2.0 + license_family: APACHE size: 521475 timestamp: 1737824942852 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-19.0.0-h1e9d426_8_cpu.conda @@ -2816,6 +2826,7 @@ packages: arch: aarch64 platform: linux license: Apache-2.0 + license_family: APACHE size: 516126 timestamp: 1737809118915 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-19.0.0-h4239455_8_cpu.conda @@ -2834,6 +2845,7 @@ packages: arch: arm64 platform: osx license: Apache-2.0 + license_family: APACHE size: 449672 timestamp: 1737807386331 - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-26_linux64_openblas.conda @@ -4057,6 +4069,7 @@ packages: arch: x86_64 platform: linux license: Apache-2.0 + license_family: APACHE size: 1241786 timestamp: 1737824866572 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-19.0.0-hfc78867_8_cpu.conda @@ -4072,6 +4085,7 @@ packages: arch: aarch64 platform: linux license: Apache-2.0 + license_family: APACHE size: 1153834 timestamp: 1737809048861 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-19.0.0-h636d7b7_8_cpu.conda @@ -4087,6 +4101,7 @@ packages: arch: arm64 platform: osx license: Apache-2.0 + license_family: APACHE size: 893482 timestamp: 1737807155720 - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.46-h943b412_0.conda @@ -4853,47 +4868,47 @@ packages: license_family: BSD size: 24976 timestamp: 1733219849253 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025012605-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025012705-release.conda noarch: python - sha256: 8c9827436fb98c4de9cdf0a0f74cdfe1dbe2efa8484f19ced1f4eb939ba0f919 - md5: f09aa38afbb5a1e68bc624a98556bd3f + sha256: 858899a14213e31412668b979537779ddaf730cad15593c3be3602d30d925cd3 + md5: 0788ab9a7003126a6d7285d3fb912104 depends: - - max-core ==25.1.0.dev2025012605 release - - max-python >=25.1.0.dev2025012605,<26.0a0 - - mojo-jupyter ==25.1.0.dev2025012605 release - - mblack ==25.1.0.dev2025012605 release + - max-core ==25.1.0.dev2025012705 release + - max-python >=25.1.0.dev2025012705,<26.0a0 + - mojo-jupyter ==25.1.0.dev2025012705 release + - mblack ==25.1.0.dev2025012705 release license: LicenseRef-Modular-Proprietary - size: 9920 - timestamp: 1737868622340 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025012605-release.conda - sha256: e9ef000deed41edd45df86cdeb3c46eb933a85dc7929f399d18746fa6bf84d3a - md5: d604a770e815feb97cc163a095d74322 + size: 9922 + timestamp: 1737955039963 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025012705-release.conda + sha256: d860e83c54d3824879bb5ae313ec290164a00c6aa33b3b6a613a52f5533f7f87 + md5: c2ef9257cbac5945ec0269b52400177b depends: - - mblack ==25.1.0.dev2025012605 release + - mblack ==25.1.0.dev2025012705 release license: LicenseRef-Modular-Proprietary - size: 243456510 - timestamp: 1737868720794 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025012605-release.conda - sha256: 589289450e22c82b178157c51ba011e795c115ee4da8f21d4dd8055e05d991c0 - md5: e4e7aecdda98cc52ba8e4c075170713b + size: 243456501 + timestamp: 1737955017859 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025012705-release.conda + sha256: 911fa0d215f2aef388f1b69600312c84fe8aa62300e8090e4970ede5519eeff3 + md5: 85e8cd9ee3ac21238a923b938e997c48 depends: - - mblack ==25.1.0.dev2025012605 release + - mblack ==25.1.0.dev2025012705 release license: LicenseRef-Modular-Proprietary - size: 245958004 - timestamp: 1737868622338 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025012605-release.conda - sha256: 3004e8b1fca572284485b488639c916e2028fc022e7f9eaece25676c0d420521 - md5: f188ddc4fef4410d599beafd55e61cf1 + size: 245946155 + timestamp: 1737955039961 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025012705-release.conda + sha256: f338470aae98f63c08c9dda7d9b94c559a21055509c2ed924cb55441c8b60ba9 + md5: 44cfd5ca1dc48bab35146702380ac083 depends: - - mblack ==25.1.0.dev2025012605 release + - mblack ==25.1.0.dev2025012705 release license: LicenseRef-Modular-Proprietary - size: 205170122 - timestamp: 1737869052124 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025012605-3.11release.conda - sha256: 197a9f40d1e6d49f9ff0ca1d42b4a0ad4dc3d393eecbbbbfe4b2c253776caeb6 - md5: 627c21adfa7fe5618373942dfe9fa077 + size: 205169482 + timestamp: 1737956267686 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025012705-3.11release.conda + sha256: 0d25f1c446705f5719263b8c06af9ce04ff8cfbdc1693d0e2d4fc6cc42e2bcbd + md5: f72d2bd60c1d15d3b477c6be3eabfa93 depends: - - max-core ==25.1.0.dev2025012605 release + - max-core ==25.1.0.dev2025012705 release - python 3.11.* - fastapi - httpx @@ -4914,13 +4929,13 @@ packages: - uvicorn - python_abi 3.11.* *_cp311 license: LicenseRef-Modular-Proprietary - size: 120663808 - timestamp: 1737868720800 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025012605-3.11release.conda - sha256: f0ba6690a65115f111d4076f591a71ffc973e8a1de3895fbd8d35eb8c93a29a9 - md5: c12aa3f097fa309bccbb60320415d4a5 + size: 120662548 + timestamp: 1737955017865 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025012705-3.11release.conda + sha256: eeb1f357289071575a862a6704cc7d92d9d03b59987b7173f746019a482f5b7c + md5: 0510f86087d3cd7d781811a20047e6f8 depends: - - max-core ==25.1.0.dev2025012605 release + - max-core ==25.1.0.dev2025012705 release - python 3.11.* - fastapi - httpx @@ -4941,13 +4956,13 @@ packages: - uvicorn - python_abi 3.11.* *_cp311 license: LicenseRef-Modular-Proprietary - size: 123206793 - timestamp: 1737868622345 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025012605-3.11release.conda - sha256: 4590f14a55ed4daa394e653d748472f1e6c5570f70003820816b2cb77d8f2393 - md5: 306f822767c37f1d60fd970ebdac333e + size: 123202039 + timestamp: 1737955039969 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025012705-3.11release.conda + sha256: 2370aaf0bbcce7e736a87b2f88cd9c8bd4bac338fe1be8dd245afd16f7fc89fe + md5: 8339b4061e6b3b065ae43a598ed0ea3c depends: - - max-core ==25.1.0.dev2025012605 release + - max-core ==25.1.0.dev2025012705 release - python 3.11.* - fastapi - httpx @@ -4968,12 +4983,12 @@ packages: - uvicorn - python_abi 3.11.* *_cp311 license: LicenseRef-Modular-Proprietary - size: 106065941 - timestamp: 1737869052126 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012605-release.conda + size: 106066748 + timestamp: 1737956267688 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012705-release.conda noarch: python - sha256: 76d9f174ae8245596fcbed5a05d7b0a49ef8eaceac009d1d4c2842f5f31592d6 - md5: f9b9c5654edb0396f0793d557c4fb898 + sha256: 90cc368b1a6ceac15f44c67517c1af7fe1dc5dce40b92f91f1830be2f6a66fb9 + md5: 15ff6d8c842fbce739084f0bbd23bd27 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -4983,8 +4998,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130814 - timestamp: 1737868622344 + size: 130811 + timestamp: 1737955039968 - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda sha256: 78c1bbe1723449c52b7a9df1af2ee5f005209f67e40b6e1d3c7619127c43b1c7 md5: 592132998493b3ff25fd7479396e8351 @@ -4994,18 +5009,18 @@ packages: license_family: MIT size: 14465 timestamp: 1733255681319 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025012605-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025012705-release.conda noarch: python - sha256: 4e786c10774447edaf5fa00324223340fa7bba82c9b15058903aed23b2a43e25 - md5: 4b66d050c8e56e18a3a7feaaad38d20a + sha256: fb3ed00e9f7df548142bb0afa9edf654413f61d1b39c6b1cbfc9cf2fbb6e04f9 + md5: 961e0d8087b0ab6e38d0e1a518438827 depends: - - max-core ==25.1.0.dev2025012605 release + - max-core ==25.1.0.dev2025012705 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22930 - timestamp: 1737868622346 + size: 22933 + timestamp: 1737955039968 - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py311h2dc5d0c_2.conda sha256: afaab7a028281d8b5336db2b994fd3f9694862b6ca372c079dc4e84ad768c20a md5: bb8ca118919836624d920b4c44383a15 diff --git a/examples/notebooks/magic.lock b/examples/notebooks/magic.lock index 2a61a6f390..f137729a31 100644 --- a/examples/notebooks/magic.lock +++ b/examples/notebooks/magic.lock @@ -169,13 +169,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/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-25.1.0.dev2025012605-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025012605-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025012605-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025012705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025012705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025012705-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012705-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.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025012605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025012705-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 @@ -465,13 +465,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/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-25.1.0.dev2025012605-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025012605-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025012605-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025012705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025012705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025012705-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012705-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.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025012605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025012705-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 @@ -753,13 +753,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-25.1.0.dev2025012605-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025012605-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025012605-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025012705-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025012705-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025012705-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012705-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.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025012605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025012705-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 @@ -3401,6 +3401,7 @@ packages: arch: x86_64 platform: linux license: Apache-2.0 + license_family: APACHE size: 8969999 timestamp: 1737824740139 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-19.0.0-h03ebaaf_8_cpu.conda @@ -3441,6 +3442,7 @@ packages: arch: aarch64 platform: linux license: Apache-2.0 + license_family: APACHE size: 8213318 timestamp: 1737808895185 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-19.0.0-h819e3af_8_cpu.conda @@ -3481,6 +3483,7 @@ packages: arch: arm64 platform: osx license: Apache-2.0 + license_family: APACHE size: 5573619 timestamp: 1737806044972 - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-19.0.0-hcb10f89_8_cpu.conda @@ -3495,6 +3498,7 @@ packages: arch: x86_64 platform: linux license: Apache-2.0 + license_family: APACHE size: 637555 timestamp: 1737824783456 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-19.0.0-h3b568fd_8_cpu.conda @@ -3508,6 +3512,7 @@ packages: arch: aarch64 platform: linux license: Apache-2.0 + license_family: APACHE size: 602892 timestamp: 1737808980001 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-19.0.0-hf07054f_8_cpu.conda @@ -3521,6 +3526,7 @@ packages: arch: arm64 platform: osx license: Apache-2.0 + license_family: APACHE size: 500365 timestamp: 1737806169385 - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-19.0.0-hcb10f89_8_cpu.conda @@ -3537,6 +3543,7 @@ packages: arch: x86_64 platform: linux license: Apache-2.0 + license_family: APACHE size: 604335 timestamp: 1737824891062 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-19.0.0-h3b568fd_8_cpu.conda @@ -3552,6 +3559,7 @@ packages: arch: aarch64 platform: linux license: Apache-2.0 + license_family: APACHE size: 579626 timestamp: 1737809072479 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-19.0.0-hf07054f_8_cpu.conda @@ -3567,6 +3575,7 @@ packages: arch: arm64 platform: osx license: Apache-2.0 + license_family: APACHE size: 501001 timestamp: 1737807214184 - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-19.0.0-h08228c5_8_cpu.conda @@ -3586,6 +3595,7 @@ packages: arch: x86_64 platform: linux license: Apache-2.0 + license_family: APACHE size: 521475 timestamp: 1737824942852 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-19.0.0-h1e9d426_8_cpu.conda @@ -3604,6 +3614,7 @@ packages: arch: aarch64 platform: linux license: Apache-2.0 + license_family: APACHE size: 516126 timestamp: 1737809118915 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-19.0.0-h4239455_8_cpu.conda @@ -3622,6 +3633,7 @@ packages: arch: arm64 platform: osx license: Apache-2.0 + license_family: APACHE size: 449672 timestamp: 1737807386331 - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-26_linux64_openblas.conda @@ -4845,6 +4857,7 @@ packages: arch: x86_64 platform: linux license: Apache-2.0 + license_family: APACHE size: 1241786 timestamp: 1737824866572 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-19.0.0-hfc78867_8_cpu.conda @@ -4860,6 +4873,7 @@ packages: arch: aarch64 platform: linux license: Apache-2.0 + license_family: APACHE size: 1153834 timestamp: 1737809048861 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-19.0.0-h636d7b7_8_cpu.conda @@ -4875,6 +4889,7 @@ packages: arch: arm64 platform: osx license: Apache-2.0 + license_family: APACHE size: 893482 timestamp: 1737807155720 - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.46-h943b412_0.conda @@ -5651,47 +5666,47 @@ packages: license_family: BSD size: 14467 timestamp: 1733417051523 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025012605-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025012705-release.conda noarch: python - sha256: 8c9827436fb98c4de9cdf0a0f74cdfe1dbe2efa8484f19ced1f4eb939ba0f919 - md5: f09aa38afbb5a1e68bc624a98556bd3f + sha256: 858899a14213e31412668b979537779ddaf730cad15593c3be3602d30d925cd3 + md5: 0788ab9a7003126a6d7285d3fb912104 depends: - - max-core ==25.1.0.dev2025012605 release - - max-python >=25.1.0.dev2025012605,<26.0a0 - - mojo-jupyter ==25.1.0.dev2025012605 release - - mblack ==25.1.0.dev2025012605 release + - max-core ==25.1.0.dev2025012705 release + - max-python >=25.1.0.dev2025012705,<26.0a0 + - mojo-jupyter ==25.1.0.dev2025012705 release + - mblack ==25.1.0.dev2025012705 release license: LicenseRef-Modular-Proprietary - size: 9920 - timestamp: 1737868622340 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025012605-release.conda - sha256: e9ef000deed41edd45df86cdeb3c46eb933a85dc7929f399d18746fa6bf84d3a - md5: d604a770e815feb97cc163a095d74322 + size: 9922 + timestamp: 1737955039963 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025012705-release.conda + sha256: d860e83c54d3824879bb5ae313ec290164a00c6aa33b3b6a613a52f5533f7f87 + md5: c2ef9257cbac5945ec0269b52400177b depends: - - mblack ==25.1.0.dev2025012605 release + - mblack ==25.1.0.dev2025012705 release license: LicenseRef-Modular-Proprietary - size: 243456510 - timestamp: 1737868720794 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025012605-release.conda - sha256: 589289450e22c82b178157c51ba011e795c115ee4da8f21d4dd8055e05d991c0 - md5: e4e7aecdda98cc52ba8e4c075170713b + size: 243456501 + timestamp: 1737955017859 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025012705-release.conda + sha256: 911fa0d215f2aef388f1b69600312c84fe8aa62300e8090e4970ede5519eeff3 + md5: 85e8cd9ee3ac21238a923b938e997c48 depends: - - mblack ==25.1.0.dev2025012605 release + - mblack ==25.1.0.dev2025012705 release license: LicenseRef-Modular-Proprietary - size: 245958004 - timestamp: 1737868622338 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025012605-release.conda - sha256: 3004e8b1fca572284485b488639c916e2028fc022e7f9eaece25676c0d420521 - md5: f188ddc4fef4410d599beafd55e61cf1 + size: 245946155 + timestamp: 1737955039961 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025012705-release.conda + sha256: f338470aae98f63c08c9dda7d9b94c559a21055509c2ed924cb55441c8b60ba9 + md5: 44cfd5ca1dc48bab35146702380ac083 depends: - - mblack ==25.1.0.dev2025012605 release + - mblack ==25.1.0.dev2025012705 release license: LicenseRef-Modular-Proprietary - size: 205170122 - timestamp: 1737869052124 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025012605-3.12release.conda - sha256: 296dcbab2616decb3e19510a8d56d2ad7208fbdc65aa9a5c65c24053e097083d - md5: ae1b2c8ed2537bc3b9cba21266b5771e + size: 205169482 + timestamp: 1737956267686 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025012705-3.12release.conda + sha256: 0a18a085825c9fa2bf3e575310837f3dbdddc96b7aaea8b651e3eae61c02530f + md5: 42d30c788187591cf4b61d3ef4129e38 depends: - - max-core ==25.1.0.dev2025012605 release + - max-core ==25.1.0.dev2025012705 release - python 3.12.* - fastapi - httpx @@ -5712,13 +5727,13 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 120667192 - timestamp: 1737868720803 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025012605-3.12release.conda - sha256: d84debf9ad9537afbf502c89baa3e606e12caba812b193d05e5480ffbec8a8f3 - md5: b2f7e32d1931ad233be7967b4e4880d6 + size: 120669382 + timestamp: 1737955017868 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025012705-3.12release.conda + sha256: 8372666a6ad71409d0ed7336e1b955dd86d1ceb3f9b96c0a098cb59a802b688e + md5: 222a46c2286742510e8ee05ad24f2523 depends: - - max-core ==25.1.0.dev2025012605 release + - max-core ==25.1.0.dev2025012705 release - python 3.12.* - fastapi - httpx @@ -5739,13 +5754,13 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 123187293 - timestamp: 1737868622348 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025012605-3.12release.conda - sha256: a4fa173d3d6f12a6ee5fa1dc61300fa3392fd82e416025a0cbd97c6ac01e2288 - md5: 9e3138e7bcd85feea476ca22514f1e1b + size: 123185570 + timestamp: 1737955039973 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025012705-3.12release.conda + sha256: c4894d84b65bc2e997f5c7fa10027f276b481bbb2ded68f34bd74bf1e195076a + md5: fcb3723a6dbf99dd5d6ab6895e97de58 depends: - - max-core ==25.1.0.dev2025012605 release + - max-core ==25.1.0.dev2025012705 release - python 3.12.* - fastapi - httpx @@ -5766,12 +5781,12 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 106062355 - timestamp: 1737869052127 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012605-release.conda + size: 106061856 + timestamp: 1737956267689 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012705-release.conda noarch: python - sha256: 76d9f174ae8245596fcbed5a05d7b0a49ef8eaceac009d1d4c2842f5f31592d6 - md5: f9b9c5654edb0396f0793d557c4fb898 + sha256: 90cc368b1a6ceac15f44c67517c1af7fe1dc5dce40b92f91f1830be2f6a66fb9 + md5: 15ff6d8c842fbce739084f0bbd23bd27 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -5781,8 +5796,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130814 - timestamp: 1737868622344 + size: 130811 + timestamp: 1737955039968 - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda sha256: 78c1bbe1723449c52b7a9df1af2ee5f005209f67e40b6e1d3c7619127c43b1c7 md5: 592132998493b3ff25fd7479396e8351 @@ -5802,18 +5817,18 @@ packages: license_family: BSD size: 68803 timestamp: 1735686983426 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025012605-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025012705-release.conda noarch: python - sha256: 4e786c10774447edaf5fa00324223340fa7bba82c9b15058903aed23b2a43e25 - md5: 4b66d050c8e56e18a3a7feaaad38d20a + sha256: fb3ed00e9f7df548142bb0afa9edf654413f61d1b39c6b1cbfc9cf2fbb6e04f9 + md5: 961e0d8087b0ab6e38d0e1a518438827 depends: - - max-core ==25.1.0.dev2025012605 release + - max-core ==25.1.0.dev2025012705 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22930 - timestamp: 1737868622346 + size: 22933 + timestamp: 1737955039968 - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py312h178313f_2.conda sha256: b05bc8252a6e957bf4a776ed5e0e61d1ba88cdc46ccb55890c72cc58b10371f4 md5: 5b5e3267d915a107eca793d52e1b780a @@ -7482,6 +7497,7 @@ packages: - typing_extensions >=4.4.0 - python license: MIT + license_family: MIT size: 51668 timestamp: 1737836872415 - conda: https://conda.anaconda.org/conda-forge/linux-64/regex-2024.11.6-py312h66e93f0_0.conda diff --git a/examples/operators/magic.lock b/examples/operators/magic.lock index 4d9c20ea30..9fc75e692a 100644 --- a/examples/operators/magic.lock +++ b/examples/operators/magic.lock @@ -133,12 +133,12 @@ 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-25.1.0.dev2025012605-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025012605-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025012605-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025012705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025012705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025012705-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012705-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-25.1.0.dev2025012605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025012705-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 @@ -356,12 +356,12 @@ 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-25.1.0.dev2025012605-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025012605-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025012605-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025012705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025012705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025012705-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012705-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-25.1.0.dev2025012605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025012705-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 @@ -570,12 +570,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-25.1.0.dev2025012605-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025012605-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025012605-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025012705-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025012705-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025012705-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012705-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-25.1.0.dev2025012605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025012705-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 @@ -2613,6 +2613,7 @@ packages: arch: x86_64 platform: linux license: Apache-2.0 + license_family: APACHE size: 8969999 timestamp: 1737824740139 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-19.0.0-h03ebaaf_8_cpu.conda @@ -2653,6 +2654,7 @@ packages: arch: aarch64 platform: linux license: Apache-2.0 + license_family: APACHE size: 8213318 timestamp: 1737808895185 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-19.0.0-h819e3af_8_cpu.conda @@ -2693,6 +2695,7 @@ packages: arch: arm64 platform: osx license: Apache-2.0 + license_family: APACHE size: 5573619 timestamp: 1737806044972 - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-19.0.0-hcb10f89_8_cpu.conda @@ -2707,6 +2710,7 @@ packages: arch: x86_64 platform: linux license: Apache-2.0 + license_family: APACHE size: 637555 timestamp: 1737824783456 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-19.0.0-h3b568fd_8_cpu.conda @@ -2720,6 +2724,7 @@ packages: arch: aarch64 platform: linux license: Apache-2.0 + license_family: APACHE size: 602892 timestamp: 1737808980001 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-19.0.0-hf07054f_8_cpu.conda @@ -2733,6 +2738,7 @@ packages: arch: arm64 platform: osx license: Apache-2.0 + license_family: APACHE size: 500365 timestamp: 1737806169385 - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-19.0.0-hcb10f89_8_cpu.conda @@ -2749,6 +2755,7 @@ packages: arch: x86_64 platform: linux license: Apache-2.0 + license_family: APACHE size: 604335 timestamp: 1737824891062 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-19.0.0-h3b568fd_8_cpu.conda @@ -2764,6 +2771,7 @@ packages: arch: aarch64 platform: linux license: Apache-2.0 + license_family: APACHE size: 579626 timestamp: 1737809072479 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-19.0.0-hf07054f_8_cpu.conda @@ -2779,6 +2787,7 @@ packages: arch: arm64 platform: osx license: Apache-2.0 + license_family: APACHE size: 501001 timestamp: 1737807214184 - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-19.0.0-h08228c5_8_cpu.conda @@ -2798,6 +2807,7 @@ packages: arch: x86_64 platform: linux license: Apache-2.0 + license_family: APACHE size: 521475 timestamp: 1737824942852 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-19.0.0-h1e9d426_8_cpu.conda @@ -2816,6 +2826,7 @@ packages: arch: aarch64 platform: linux license: Apache-2.0 + license_family: APACHE size: 516126 timestamp: 1737809118915 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-19.0.0-h4239455_8_cpu.conda @@ -2834,6 +2845,7 @@ packages: arch: arm64 platform: osx license: Apache-2.0 + license_family: APACHE size: 449672 timestamp: 1737807386331 - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-26_linux64_openblas.conda @@ -4057,6 +4069,7 @@ packages: arch: x86_64 platform: linux license: Apache-2.0 + license_family: APACHE size: 1241786 timestamp: 1737824866572 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-19.0.0-hfc78867_8_cpu.conda @@ -4072,6 +4085,7 @@ packages: arch: aarch64 platform: linux license: Apache-2.0 + license_family: APACHE size: 1153834 timestamp: 1737809048861 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-19.0.0-h636d7b7_8_cpu.conda @@ -4087,6 +4101,7 @@ packages: arch: arm64 platform: osx license: Apache-2.0 + license_family: APACHE size: 893482 timestamp: 1737807155720 - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.46-h943b412_0.conda @@ -4853,47 +4868,47 @@ packages: license_family: BSD size: 24048 timestamp: 1733219945697 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025012605-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025012705-release.conda noarch: python - sha256: 8c9827436fb98c4de9cdf0a0f74cdfe1dbe2efa8484f19ced1f4eb939ba0f919 - md5: f09aa38afbb5a1e68bc624a98556bd3f + sha256: 858899a14213e31412668b979537779ddaf730cad15593c3be3602d30d925cd3 + md5: 0788ab9a7003126a6d7285d3fb912104 depends: - - max-core ==25.1.0.dev2025012605 release - - max-python >=25.1.0.dev2025012605,<26.0a0 - - mojo-jupyter ==25.1.0.dev2025012605 release - - mblack ==25.1.0.dev2025012605 release + - max-core ==25.1.0.dev2025012705 release + - max-python >=25.1.0.dev2025012705,<26.0a0 + - mojo-jupyter ==25.1.0.dev2025012705 release + - mblack ==25.1.0.dev2025012705 release license: LicenseRef-Modular-Proprietary - size: 9920 - timestamp: 1737868622340 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025012605-release.conda - sha256: e9ef000deed41edd45df86cdeb3c46eb933a85dc7929f399d18746fa6bf84d3a - md5: d604a770e815feb97cc163a095d74322 + size: 9922 + timestamp: 1737955039963 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025012705-release.conda + sha256: d860e83c54d3824879bb5ae313ec290164a00c6aa33b3b6a613a52f5533f7f87 + md5: c2ef9257cbac5945ec0269b52400177b depends: - - mblack ==25.1.0.dev2025012605 release + - mblack ==25.1.0.dev2025012705 release license: LicenseRef-Modular-Proprietary - size: 243456510 - timestamp: 1737868720794 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025012605-release.conda - sha256: 589289450e22c82b178157c51ba011e795c115ee4da8f21d4dd8055e05d991c0 - md5: e4e7aecdda98cc52ba8e4c075170713b + size: 243456501 + timestamp: 1737955017859 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025012705-release.conda + sha256: 911fa0d215f2aef388f1b69600312c84fe8aa62300e8090e4970ede5519eeff3 + md5: 85e8cd9ee3ac21238a923b938e997c48 depends: - - mblack ==25.1.0.dev2025012605 release + - mblack ==25.1.0.dev2025012705 release license: LicenseRef-Modular-Proprietary - size: 245958004 - timestamp: 1737868622338 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025012605-release.conda - sha256: 3004e8b1fca572284485b488639c916e2028fc022e7f9eaece25676c0d420521 - md5: f188ddc4fef4410d599beafd55e61cf1 + size: 245946155 + timestamp: 1737955039961 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025012705-release.conda + sha256: f338470aae98f63c08c9dda7d9b94c559a21055509c2ed924cb55441c8b60ba9 + md5: 44cfd5ca1dc48bab35146702380ac083 depends: - - mblack ==25.1.0.dev2025012605 release + - mblack ==25.1.0.dev2025012705 release license: LicenseRef-Modular-Proprietary - size: 205170122 - timestamp: 1737869052124 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025012605-3.12release.conda - sha256: 296dcbab2616decb3e19510a8d56d2ad7208fbdc65aa9a5c65c24053e097083d - md5: ae1b2c8ed2537bc3b9cba21266b5771e + size: 205169482 + timestamp: 1737956267686 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025012705-3.12release.conda + sha256: 0a18a085825c9fa2bf3e575310837f3dbdddc96b7aaea8b651e3eae61c02530f + md5: 42d30c788187591cf4b61d3ef4129e38 depends: - - max-core ==25.1.0.dev2025012605 release + - max-core ==25.1.0.dev2025012705 release - python 3.12.* - fastapi - httpx @@ -4914,13 +4929,13 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 120667192 - timestamp: 1737868720803 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025012605-3.12release.conda - sha256: d84debf9ad9537afbf502c89baa3e606e12caba812b193d05e5480ffbec8a8f3 - md5: b2f7e32d1931ad233be7967b4e4880d6 + size: 120669382 + timestamp: 1737955017868 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025012705-3.12release.conda + sha256: 8372666a6ad71409d0ed7336e1b955dd86d1ceb3f9b96c0a098cb59a802b688e + md5: 222a46c2286742510e8ee05ad24f2523 depends: - - max-core ==25.1.0.dev2025012605 release + - max-core ==25.1.0.dev2025012705 release - python 3.12.* - fastapi - httpx @@ -4941,13 +4956,13 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 123187293 - timestamp: 1737868622348 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025012605-3.12release.conda - sha256: a4fa173d3d6f12a6ee5fa1dc61300fa3392fd82e416025a0cbd97c6ac01e2288 - md5: 9e3138e7bcd85feea476ca22514f1e1b + size: 123185570 + timestamp: 1737955039973 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025012705-3.12release.conda + sha256: c4894d84b65bc2e997f5c7fa10027f276b481bbb2ded68f34bd74bf1e195076a + md5: fcb3723a6dbf99dd5d6ab6895e97de58 depends: - - max-core ==25.1.0.dev2025012605 release + - max-core ==25.1.0.dev2025012705 release - python 3.12.* - fastapi - httpx @@ -4968,12 +4983,12 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 106062355 - timestamp: 1737869052127 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012605-release.conda + size: 106061856 + timestamp: 1737956267689 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012705-release.conda noarch: python - sha256: 76d9f174ae8245596fcbed5a05d7b0a49ef8eaceac009d1d4c2842f5f31592d6 - md5: f9b9c5654edb0396f0793d557c4fb898 + sha256: 90cc368b1a6ceac15f44c67517c1af7fe1dc5dce40b92f91f1830be2f6a66fb9 + md5: 15ff6d8c842fbce739084f0bbd23bd27 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -4983,8 +4998,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130814 - timestamp: 1737868622344 + size: 130811 + timestamp: 1737955039968 - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda sha256: 78c1bbe1723449c52b7a9df1af2ee5f005209f67e40b6e1d3c7619127c43b1c7 md5: 592132998493b3ff25fd7479396e8351 @@ -4994,18 +5009,18 @@ packages: license_family: MIT size: 14465 timestamp: 1733255681319 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025012605-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025012705-release.conda noarch: python - sha256: 4e786c10774447edaf5fa00324223340fa7bba82c9b15058903aed23b2a43e25 - md5: 4b66d050c8e56e18a3a7feaaad38d20a + sha256: fb3ed00e9f7df548142bb0afa9edf654413f61d1b39c6b1cbfc9cf2fbb6e04f9 + md5: 961e0d8087b0ab6e38d0e1a518438827 depends: - - max-core ==25.1.0.dev2025012605 release + - max-core ==25.1.0.dev2025012705 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22930 - timestamp: 1737868622346 + size: 22933 + timestamp: 1737955039968 - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py312h178313f_2.conda sha256: b05bc8252a6e957bf4a776ed5e0e61d1ba88cdc46ccb55890c72cc58b10371f4 md5: 5b5e3267d915a107eca793d52e1b780a diff --git a/examples/testing/magic.lock b/examples/testing/magic.lock index 4d9c20ea30..9fc75e692a 100644 --- a/examples/testing/magic.lock +++ b/examples/testing/magic.lock @@ -133,12 +133,12 @@ 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-25.1.0.dev2025012605-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025012605-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025012605-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025012705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025012705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025012705-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012705-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-25.1.0.dev2025012605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025012705-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 @@ -356,12 +356,12 @@ 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-25.1.0.dev2025012605-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025012605-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025012605-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025012705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025012705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025012705-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012705-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-25.1.0.dev2025012605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025012705-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 @@ -570,12 +570,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-25.1.0.dev2025012605-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025012605-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025012605-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025012705-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025012705-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025012705-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012705-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-25.1.0.dev2025012605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025012705-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 @@ -2613,6 +2613,7 @@ packages: arch: x86_64 platform: linux license: Apache-2.0 + license_family: APACHE size: 8969999 timestamp: 1737824740139 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-19.0.0-h03ebaaf_8_cpu.conda @@ -2653,6 +2654,7 @@ packages: arch: aarch64 platform: linux license: Apache-2.0 + license_family: APACHE size: 8213318 timestamp: 1737808895185 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-19.0.0-h819e3af_8_cpu.conda @@ -2693,6 +2695,7 @@ packages: arch: arm64 platform: osx license: Apache-2.0 + license_family: APACHE size: 5573619 timestamp: 1737806044972 - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-19.0.0-hcb10f89_8_cpu.conda @@ -2707,6 +2710,7 @@ packages: arch: x86_64 platform: linux license: Apache-2.0 + license_family: APACHE size: 637555 timestamp: 1737824783456 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-19.0.0-h3b568fd_8_cpu.conda @@ -2720,6 +2724,7 @@ packages: arch: aarch64 platform: linux license: Apache-2.0 + license_family: APACHE size: 602892 timestamp: 1737808980001 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-19.0.0-hf07054f_8_cpu.conda @@ -2733,6 +2738,7 @@ packages: arch: arm64 platform: osx license: Apache-2.0 + license_family: APACHE size: 500365 timestamp: 1737806169385 - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-19.0.0-hcb10f89_8_cpu.conda @@ -2749,6 +2755,7 @@ packages: arch: x86_64 platform: linux license: Apache-2.0 + license_family: APACHE size: 604335 timestamp: 1737824891062 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-19.0.0-h3b568fd_8_cpu.conda @@ -2764,6 +2771,7 @@ packages: arch: aarch64 platform: linux license: Apache-2.0 + license_family: APACHE size: 579626 timestamp: 1737809072479 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-19.0.0-hf07054f_8_cpu.conda @@ -2779,6 +2787,7 @@ packages: arch: arm64 platform: osx license: Apache-2.0 + license_family: APACHE size: 501001 timestamp: 1737807214184 - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-19.0.0-h08228c5_8_cpu.conda @@ -2798,6 +2807,7 @@ packages: arch: x86_64 platform: linux license: Apache-2.0 + license_family: APACHE size: 521475 timestamp: 1737824942852 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-19.0.0-h1e9d426_8_cpu.conda @@ -2816,6 +2826,7 @@ packages: arch: aarch64 platform: linux license: Apache-2.0 + license_family: APACHE size: 516126 timestamp: 1737809118915 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-19.0.0-h4239455_8_cpu.conda @@ -2834,6 +2845,7 @@ packages: arch: arm64 platform: osx license: Apache-2.0 + license_family: APACHE size: 449672 timestamp: 1737807386331 - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-26_linux64_openblas.conda @@ -4057,6 +4069,7 @@ packages: arch: x86_64 platform: linux license: Apache-2.0 + license_family: APACHE size: 1241786 timestamp: 1737824866572 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-19.0.0-hfc78867_8_cpu.conda @@ -4072,6 +4085,7 @@ packages: arch: aarch64 platform: linux license: Apache-2.0 + license_family: APACHE size: 1153834 timestamp: 1737809048861 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-19.0.0-h636d7b7_8_cpu.conda @@ -4087,6 +4101,7 @@ packages: arch: arm64 platform: osx license: Apache-2.0 + license_family: APACHE size: 893482 timestamp: 1737807155720 - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.46-h943b412_0.conda @@ -4853,47 +4868,47 @@ packages: license_family: BSD size: 24048 timestamp: 1733219945697 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025012605-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025012705-release.conda noarch: python - sha256: 8c9827436fb98c4de9cdf0a0f74cdfe1dbe2efa8484f19ced1f4eb939ba0f919 - md5: f09aa38afbb5a1e68bc624a98556bd3f + sha256: 858899a14213e31412668b979537779ddaf730cad15593c3be3602d30d925cd3 + md5: 0788ab9a7003126a6d7285d3fb912104 depends: - - max-core ==25.1.0.dev2025012605 release - - max-python >=25.1.0.dev2025012605,<26.0a0 - - mojo-jupyter ==25.1.0.dev2025012605 release - - mblack ==25.1.0.dev2025012605 release + - max-core ==25.1.0.dev2025012705 release + - max-python >=25.1.0.dev2025012705,<26.0a0 + - mojo-jupyter ==25.1.0.dev2025012705 release + - mblack ==25.1.0.dev2025012705 release license: LicenseRef-Modular-Proprietary - size: 9920 - timestamp: 1737868622340 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025012605-release.conda - sha256: e9ef000deed41edd45df86cdeb3c46eb933a85dc7929f399d18746fa6bf84d3a - md5: d604a770e815feb97cc163a095d74322 + size: 9922 + timestamp: 1737955039963 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025012705-release.conda + sha256: d860e83c54d3824879bb5ae313ec290164a00c6aa33b3b6a613a52f5533f7f87 + md5: c2ef9257cbac5945ec0269b52400177b depends: - - mblack ==25.1.0.dev2025012605 release + - mblack ==25.1.0.dev2025012705 release license: LicenseRef-Modular-Proprietary - size: 243456510 - timestamp: 1737868720794 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025012605-release.conda - sha256: 589289450e22c82b178157c51ba011e795c115ee4da8f21d4dd8055e05d991c0 - md5: e4e7aecdda98cc52ba8e4c075170713b + size: 243456501 + timestamp: 1737955017859 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025012705-release.conda + sha256: 911fa0d215f2aef388f1b69600312c84fe8aa62300e8090e4970ede5519eeff3 + md5: 85e8cd9ee3ac21238a923b938e997c48 depends: - - mblack ==25.1.0.dev2025012605 release + - mblack ==25.1.0.dev2025012705 release license: LicenseRef-Modular-Proprietary - size: 245958004 - timestamp: 1737868622338 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025012605-release.conda - sha256: 3004e8b1fca572284485b488639c916e2028fc022e7f9eaece25676c0d420521 - md5: f188ddc4fef4410d599beafd55e61cf1 + size: 245946155 + timestamp: 1737955039961 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025012705-release.conda + sha256: f338470aae98f63c08c9dda7d9b94c559a21055509c2ed924cb55441c8b60ba9 + md5: 44cfd5ca1dc48bab35146702380ac083 depends: - - mblack ==25.1.0.dev2025012605 release + - mblack ==25.1.0.dev2025012705 release license: LicenseRef-Modular-Proprietary - size: 205170122 - timestamp: 1737869052124 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025012605-3.12release.conda - sha256: 296dcbab2616decb3e19510a8d56d2ad7208fbdc65aa9a5c65c24053e097083d - md5: ae1b2c8ed2537bc3b9cba21266b5771e + size: 205169482 + timestamp: 1737956267686 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025012705-3.12release.conda + sha256: 0a18a085825c9fa2bf3e575310837f3dbdddc96b7aaea8b651e3eae61c02530f + md5: 42d30c788187591cf4b61d3ef4129e38 depends: - - max-core ==25.1.0.dev2025012605 release + - max-core ==25.1.0.dev2025012705 release - python 3.12.* - fastapi - httpx @@ -4914,13 +4929,13 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 120667192 - timestamp: 1737868720803 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025012605-3.12release.conda - sha256: d84debf9ad9537afbf502c89baa3e606e12caba812b193d05e5480ffbec8a8f3 - md5: b2f7e32d1931ad233be7967b4e4880d6 + size: 120669382 + timestamp: 1737955017868 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025012705-3.12release.conda + sha256: 8372666a6ad71409d0ed7336e1b955dd86d1ceb3f9b96c0a098cb59a802b688e + md5: 222a46c2286742510e8ee05ad24f2523 depends: - - max-core ==25.1.0.dev2025012605 release + - max-core ==25.1.0.dev2025012705 release - python 3.12.* - fastapi - httpx @@ -4941,13 +4956,13 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 123187293 - timestamp: 1737868622348 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025012605-3.12release.conda - sha256: a4fa173d3d6f12a6ee5fa1dc61300fa3392fd82e416025a0cbd97c6ac01e2288 - md5: 9e3138e7bcd85feea476ca22514f1e1b + size: 123185570 + timestamp: 1737955039973 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025012705-3.12release.conda + sha256: c4894d84b65bc2e997f5c7fa10027f276b481bbb2ded68f34bd74bf1e195076a + md5: fcb3723a6dbf99dd5d6ab6895e97de58 depends: - - max-core ==25.1.0.dev2025012605 release + - max-core ==25.1.0.dev2025012705 release - python 3.12.* - fastapi - httpx @@ -4968,12 +4983,12 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 106062355 - timestamp: 1737869052127 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012605-release.conda + size: 106061856 + timestamp: 1737956267689 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012705-release.conda noarch: python - sha256: 76d9f174ae8245596fcbed5a05d7b0a49ef8eaceac009d1d4c2842f5f31592d6 - md5: f9b9c5654edb0396f0793d557c4fb898 + sha256: 90cc368b1a6ceac15f44c67517c1af7fe1dc5dce40b92f91f1830be2f6a66fb9 + md5: 15ff6d8c842fbce739084f0bbd23bd27 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -4983,8 +4998,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130814 - timestamp: 1737868622344 + size: 130811 + timestamp: 1737955039968 - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda sha256: 78c1bbe1723449c52b7a9df1af2ee5f005209f67e40b6e1d3c7619127c43b1c7 md5: 592132998493b3ff25fd7479396e8351 @@ -4994,18 +5009,18 @@ packages: license_family: MIT size: 14465 timestamp: 1733255681319 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025012605-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025012705-release.conda noarch: python - sha256: 4e786c10774447edaf5fa00324223340fa7bba82c9b15058903aed23b2a43e25 - md5: 4b66d050c8e56e18a3a7feaaad38d20a + sha256: fb3ed00e9f7df548142bb0afa9edf654413f61d1b39c6b1cbfc9cf2fbb6e04f9 + md5: 961e0d8087b0ab6e38d0e1a518438827 depends: - - max-core ==25.1.0.dev2025012605 release + - max-core ==25.1.0.dev2025012705 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22930 - timestamp: 1737868622346 + size: 22933 + timestamp: 1737955039968 - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py312h178313f_2.conda sha256: b05bc8252a6e957bf4a776ed5e0e61d1ba88cdc46ccb55890c72cc58b10371f4 md5: 5b5e3267d915a107eca793d52e1b780a diff --git a/magic.lock b/magic.lock index 8a62c653f9..17140d55cc 100644 --- a/magic.lock +++ b/magic.lock @@ -134,12 +134,12 @@ 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-25.1.0.dev2025012605-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025012605-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025012605-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025012705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025012705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025012705-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012705-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-25.1.0.dev2025012605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025012705-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 @@ -358,12 +358,12 @@ 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-25.1.0.dev2025012605-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025012605-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025012605-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025012705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025012705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025012705-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012705-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-25.1.0.dev2025012605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025012705-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 @@ -573,12 +573,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-25.1.0.dev2025012605-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025012605-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025012605-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025012705-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025012705-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025012705-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012705-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-25.1.0.dev2025012605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025012705-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 @@ -2616,6 +2616,7 @@ packages: arch: x86_64 platform: linux license: Apache-2.0 + license_family: APACHE size: 8969999 timestamp: 1737824740139 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-19.0.0-h03ebaaf_8_cpu.conda @@ -2656,6 +2657,7 @@ packages: arch: aarch64 platform: linux license: Apache-2.0 + license_family: APACHE size: 8213318 timestamp: 1737808895185 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-19.0.0-h819e3af_8_cpu.conda @@ -2696,6 +2698,7 @@ packages: arch: arm64 platform: osx license: Apache-2.0 + license_family: APACHE size: 5573619 timestamp: 1737806044972 - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-19.0.0-hcb10f89_8_cpu.conda @@ -2710,6 +2713,7 @@ packages: arch: x86_64 platform: linux license: Apache-2.0 + license_family: APACHE size: 637555 timestamp: 1737824783456 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-19.0.0-h3b568fd_8_cpu.conda @@ -2723,6 +2727,7 @@ packages: arch: aarch64 platform: linux license: Apache-2.0 + license_family: APACHE size: 602892 timestamp: 1737808980001 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-19.0.0-hf07054f_8_cpu.conda @@ -2736,6 +2741,7 @@ packages: arch: arm64 platform: osx license: Apache-2.0 + license_family: APACHE size: 500365 timestamp: 1737806169385 - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-19.0.0-hcb10f89_8_cpu.conda @@ -2752,6 +2758,7 @@ packages: arch: x86_64 platform: linux license: Apache-2.0 + license_family: APACHE size: 604335 timestamp: 1737824891062 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-19.0.0-h3b568fd_8_cpu.conda @@ -2767,6 +2774,7 @@ packages: arch: aarch64 platform: linux license: Apache-2.0 + license_family: APACHE size: 579626 timestamp: 1737809072479 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-19.0.0-hf07054f_8_cpu.conda @@ -2782,6 +2790,7 @@ packages: arch: arm64 platform: osx license: Apache-2.0 + license_family: APACHE size: 501001 timestamp: 1737807214184 - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-19.0.0-h08228c5_8_cpu.conda @@ -2801,6 +2810,7 @@ packages: arch: x86_64 platform: linux license: Apache-2.0 + license_family: APACHE size: 521475 timestamp: 1737824942852 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-19.0.0-h1e9d426_8_cpu.conda @@ -2819,6 +2829,7 @@ packages: arch: aarch64 platform: linux license: Apache-2.0 + license_family: APACHE size: 516126 timestamp: 1737809118915 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-19.0.0-h4239455_8_cpu.conda @@ -2837,6 +2848,7 @@ packages: arch: arm64 platform: osx license: Apache-2.0 + license_family: APACHE size: 449672 timestamp: 1737807386331 - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-26_linux64_openblas.conda @@ -4060,6 +4072,7 @@ packages: arch: x86_64 platform: linux license: Apache-2.0 + license_family: APACHE size: 1241786 timestamp: 1737824866572 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-19.0.0-hfc78867_8_cpu.conda @@ -4075,6 +4088,7 @@ packages: arch: aarch64 platform: linux license: Apache-2.0 + license_family: APACHE size: 1153834 timestamp: 1737809048861 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-19.0.0-h636d7b7_8_cpu.conda @@ -4090,6 +4104,7 @@ packages: arch: arm64 platform: osx license: Apache-2.0 + license_family: APACHE size: 893482 timestamp: 1737807155720 - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.46-h943b412_0.conda @@ -4865,47 +4880,47 @@ packages: license_family: BSD size: 24048 timestamp: 1733219945697 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025012605-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025012705-release.conda noarch: python - sha256: 8c9827436fb98c4de9cdf0a0f74cdfe1dbe2efa8484f19ced1f4eb939ba0f919 - md5: f09aa38afbb5a1e68bc624a98556bd3f + sha256: 858899a14213e31412668b979537779ddaf730cad15593c3be3602d30d925cd3 + md5: 0788ab9a7003126a6d7285d3fb912104 depends: - - max-core ==25.1.0.dev2025012605 release - - max-python >=25.1.0.dev2025012605,<26.0a0 - - mojo-jupyter ==25.1.0.dev2025012605 release - - mblack ==25.1.0.dev2025012605 release + - max-core ==25.1.0.dev2025012705 release + - max-python >=25.1.0.dev2025012705,<26.0a0 + - mojo-jupyter ==25.1.0.dev2025012705 release + - mblack ==25.1.0.dev2025012705 release license: LicenseRef-Modular-Proprietary - size: 9920 - timestamp: 1737868622340 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025012605-release.conda - sha256: e9ef000deed41edd45df86cdeb3c46eb933a85dc7929f399d18746fa6bf84d3a - md5: d604a770e815feb97cc163a095d74322 + size: 9922 + timestamp: 1737955039963 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025012705-release.conda + sha256: d860e83c54d3824879bb5ae313ec290164a00c6aa33b3b6a613a52f5533f7f87 + md5: c2ef9257cbac5945ec0269b52400177b depends: - - mblack ==25.1.0.dev2025012605 release + - mblack ==25.1.0.dev2025012705 release license: LicenseRef-Modular-Proprietary - size: 243456510 - timestamp: 1737868720794 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025012605-release.conda - sha256: 589289450e22c82b178157c51ba011e795c115ee4da8f21d4dd8055e05d991c0 - md5: e4e7aecdda98cc52ba8e4c075170713b + size: 243456501 + timestamp: 1737955017859 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025012705-release.conda + sha256: 911fa0d215f2aef388f1b69600312c84fe8aa62300e8090e4970ede5519eeff3 + md5: 85e8cd9ee3ac21238a923b938e997c48 depends: - - mblack ==25.1.0.dev2025012605 release + - mblack ==25.1.0.dev2025012705 release license: LicenseRef-Modular-Proprietary - size: 245958004 - timestamp: 1737868622338 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025012605-release.conda - sha256: 3004e8b1fca572284485b488639c916e2028fc022e7f9eaece25676c0d420521 - md5: f188ddc4fef4410d599beafd55e61cf1 + size: 245946155 + timestamp: 1737955039961 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025012705-release.conda + sha256: f338470aae98f63c08c9dda7d9b94c559a21055509c2ed924cb55441c8b60ba9 + md5: 44cfd5ca1dc48bab35146702380ac083 depends: - - mblack ==25.1.0.dev2025012605 release + - mblack ==25.1.0.dev2025012705 release license: LicenseRef-Modular-Proprietary - size: 205170122 - timestamp: 1737869052124 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025012605-3.12release.conda - sha256: 296dcbab2616decb3e19510a8d56d2ad7208fbdc65aa9a5c65c24053e097083d - md5: ae1b2c8ed2537bc3b9cba21266b5771e + size: 205169482 + timestamp: 1737956267686 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025012705-3.12release.conda + sha256: 0a18a085825c9fa2bf3e575310837f3dbdddc96b7aaea8b651e3eae61c02530f + md5: 42d30c788187591cf4b61d3ef4129e38 depends: - - max-core ==25.1.0.dev2025012605 release + - max-core ==25.1.0.dev2025012705 release - python 3.12.* - fastapi - httpx @@ -4926,13 +4941,13 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 120667192 - timestamp: 1737868720803 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025012605-3.12release.conda - sha256: d84debf9ad9537afbf502c89baa3e606e12caba812b193d05e5480ffbec8a8f3 - md5: b2f7e32d1931ad233be7967b4e4880d6 + size: 120669382 + timestamp: 1737955017868 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025012705-3.12release.conda + sha256: 8372666a6ad71409d0ed7336e1b955dd86d1ceb3f9b96c0a098cb59a802b688e + md5: 222a46c2286742510e8ee05ad24f2523 depends: - - max-core ==25.1.0.dev2025012605 release + - max-core ==25.1.0.dev2025012705 release - python 3.12.* - fastapi - httpx @@ -4953,13 +4968,13 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 123187293 - timestamp: 1737868622348 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025012605-3.12release.conda - sha256: a4fa173d3d6f12a6ee5fa1dc61300fa3392fd82e416025a0cbd97c6ac01e2288 - md5: 9e3138e7bcd85feea476ca22514f1e1b + size: 123185570 + timestamp: 1737955039973 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025012705-3.12release.conda + sha256: c4894d84b65bc2e997f5c7fa10027f276b481bbb2ded68f34bd74bf1e195076a + md5: fcb3723a6dbf99dd5d6ab6895e97de58 depends: - - max-core ==25.1.0.dev2025012605 release + - max-core ==25.1.0.dev2025012705 release - python 3.12.* - fastapi - httpx @@ -4980,12 +4995,12 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 106062355 - timestamp: 1737869052127 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012605-release.conda + size: 106061856 + timestamp: 1737956267689 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012705-release.conda noarch: python - sha256: 76d9f174ae8245596fcbed5a05d7b0a49ef8eaceac009d1d4c2842f5f31592d6 - md5: f9b9c5654edb0396f0793d557c4fb898 + sha256: 90cc368b1a6ceac15f44c67517c1af7fe1dc5dce40b92f91f1830be2f6a66fb9 + md5: 15ff6d8c842fbce739084f0bbd23bd27 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -4995,8 +5010,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130814 - timestamp: 1737868622344 + size: 130811 + timestamp: 1737955039968 - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda sha256: 78c1bbe1723449c52b7a9df1af2ee5f005209f67e40b6e1d3c7619127c43b1c7 md5: 592132998493b3ff25fd7479396e8351 @@ -5006,18 +5021,18 @@ packages: license_family: MIT size: 14465 timestamp: 1733255681319 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025012605-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025012705-release.conda noarch: python - sha256: 4e786c10774447edaf5fa00324223340fa7bba82c9b15058903aed23b2a43e25 - md5: 4b66d050c8e56e18a3a7feaaad38d20a + sha256: fb3ed00e9f7df548142bb0afa9edf654413f61d1b39c6b1cbfc9cf2fbb6e04f9 + md5: 961e0d8087b0ab6e38d0e1a518438827 depends: - - max-core ==25.1.0.dev2025012605 release + - max-core ==25.1.0.dev2025012705 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22930 - timestamp: 1737868622346 + size: 22933 + timestamp: 1737955039968 - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py312h178313f_2.conda sha256: b05bc8252a6e957bf4a776ed5e0e61d1ba88cdc46ccb55890c72cc58b10371f4 md5: 5b5e3267d915a107eca793d52e1b780a From 13ce670dc1fbb0b2f67d7cb924a7a230b56eafa4 Mon Sep 17 00:00:00 2001 From: abdul dakkak Date: Mon, 27 Jan 2025 08:05:19 -0800 Subject: [PATCH 306/509] [Kernels][GPU] Extend DUMP_GPU_* to be able to specify paths MODULAR_ORIG_COMMIT_REV_ID: a4ac555d7329161f5a31acbc7c25e98e1e91ad01 --- stdlib/src/sys/param_env.mojo | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/stdlib/src/sys/param_env.mojo b/stdlib/src/sys/param_env.mojo index d0484a82b4..ea70902070 100644 --- a/stdlib/src/sys/param_env.mojo +++ b/stdlib/src/sys/param_env.mojo @@ -53,6 +53,17 @@ fn is_defined[name: StringLiteral]() -> Bool: return __mlir_attr[`#kgen.param.expr : i1`] +fn _is_bool_like(val: String) -> Bool: + return val.lower() in ( + String("true"), + String("1"), + String("on"), + String("false"), + String("0"), + String("off"), + ) + + fn env_get_bool[name: StringLiteral]() -> Bool: """Try to get an boolean-valued define. Compilation fails if the name is not defined or the value is neither `True` or `False`. @@ -65,16 +76,8 @@ fn env_get_bool[name: StringLiteral]() -> Bool: """ alias val = StringLiteral.get[env_get_string[name]().lower()]() - @parameter - if val in ("true", "1", "on"): - return True - - @parameter - if val in ("false", "0", "off"): - return False - constrained[ - False, + _is_bool_like(val), String( "the boolean environment value of `", name, @@ -83,7 +86,8 @@ fn env_get_bool[name: StringLiteral]() -> Bool: "` is not recognized", ), ]() - return False + + return val in ("true", "1", "on") fn env_get_bool[name: StringLiteral, default: Bool]() -> Bool: From 6a89a1b618eb22eb8da09950f3a606e7666a7523 Mon Sep 17 00:00:00 2001 From: Tracy Sharpe <99041446+raiseirql@users.noreply.github.com> Date: Mon, 27 Jan 2025 08:31:08 -0800 Subject: [PATCH 307/509] [Kernels][AMD] `_amdgpu.mojo` cleanup (#54641) MODULAR_ORIG_COMMIT_REV_ID: f45adb6c7039f7550e4071afe8112ed08f91bcd6 --- stdlib/src/sys/_amdgpu.mojo | 101 +++++++++--------------------------- 1 file changed, 24 insertions(+), 77 deletions(-) diff --git a/stdlib/src/sys/_amdgpu.mojo b/stdlib/src/sys/_amdgpu.mojo index 2fa98df525..9e16997830 100644 --- a/stdlib/src/sys/_amdgpu.mojo +++ b/stdlib/src/sys/_amdgpu.mojo @@ -54,9 +54,9 @@ struct amd_signal_t: @always_inline -fn update_mbox(sig: UnsafePointer[amd_signal_t]): +fn update_mbox(sig: UnsafePointer[amd_signal_t, **_]): var mb = UnsafePointer.address_of(sig[].event_mailbox_ptr).bitcast[ - UnsafePointer[UInt64] + UnsafePointer[UInt64, address_space = _GPUAddressSpace.GLOBAL] ]()[] if mb: var id = sig[].event_id.cast[DType.uint64]() @@ -67,7 +67,7 @@ fn update_mbox(sig: UnsafePointer[amd_signal_t]): @always_inline fn hsa_signal_add(sig: UInt64, value: UInt64): var s = UnsafePointer.address_of(sig).bitcast[ - UnsafePointer[amd_signal_t] + UnsafePointer[amd_signal_t, address_space = _GPUAddressSpace.GLOBAL] ]()[] _ = Atomic._fetch_add(UnsafePointer.address_of(s[].value), value) update_mbox(s) @@ -156,16 +156,7 @@ fn append_bytes( fn pack_uint64() -> UInt64: var arg = UInt64(0) if len(data) >= 8: - arg = ( - data[0].cast[DType.uint64]() - | (data[1].cast[DType.uint64]() << 8) - | (data[2].cast[DType.uint64]() << 16) - | (data[3].cast[DType.uint64]() << 24) - | (data[4].cast[DType.uint64]() << 32) - | (data[5].cast[DType.uint64]() << 40) - | (data[6].cast[DType.uint64]() << 48) - | (data[7].cast[DType.uint64]() << 56) - ) + arg = data.unsafe_ptr().bitcast[UInt64]()[] data = data[8:] else: var ii = 0 @@ -195,6 +186,7 @@ fn append_bytes( ) +@no_inline fn message_append_bytes( service_id: UInt32, msg_desc: UInt64, data: Span[UInt8] ) -> (UInt64, UInt64): @@ -342,7 +334,7 @@ fn fprintf_stdout_begin() -> UInt64: Returns: Message descriptor for a new printf invocation. """ - return begin_fprintf(0) + return begin_fprintf(FprintfCtrl.stdout) @always_inline @@ -833,67 +825,7 @@ fn send_signal(signal: UInt64): hsa_signal_add(signal, 1) -fn _hostcall( - mut buffer: Buffer, - service_id: UInt32, - arg0: UInt64, - arg1: UInt64, - arg2: UInt64, - arg3: UInt64, - arg4: UInt64, - arg5: UInt64, - arg6: UInt64, - arg7: UInt64, -) -> (UInt64, UInt64): - """ - The implementation that should be hidden behind an ABI - The transaction is a wave-wide operation, where the service_id - must be uniform, but the parameters are different for each - workitem. Parameters from all active lanes are written into a - hostcall packet. The hostcall blocks until the host processes the - request, and returns the response it receiveds. - - TODO: This function and everything above it should eventually move - to a separate library that is loaded by the language runtime. The - function itself will be exposed as an orindary function symbol to - be linked into kernel objects that are loaded after this library. - - *** INTERNAL USE ONLY *** - Internal function, not safe for direct use in user - code. Application kernels must only use __ockl_hostcall_preview() - defined elsewhere.""" - # all 0s - var me = lane_id() - # all 0s - var low = readfirstlane(me).cast[DType.uint32]() - - var packet_ptr = buffer.pop_free_stack(me, low) - - var header = buffer.get_header(packet_ptr) - var payload = buffer.get_payload(packet_ptr) - - header.fill_packet( - payload, - service_id, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7, - me, - low, - ) - - buffer.push_ready_stack(packet_ptr, me, low) - - var retval = header.get_return_value(payload, me, low) - buffer.return_free_packet(packet_ptr, me, low) - return retval - - +@no_inline fn hostcall( service_id: UInt32, arg0: UInt64, @@ -945,8 +877,16 @@ fn hostcall( .offset(10)[] ) - return _hostcall( - buffer, + var me = lane_id() + var low = readfirstlane(me).cast[DType.uint32]() + + var packet_ptr = buffer.pop_free_stack(me, low) + + var header = buffer.get_header(packet_ptr) + var payload = buffer.get_payload(packet_ptr) + + header.fill_packet( + payload, service_id, arg0, arg1, @@ -956,4 +896,11 @@ fn hostcall( arg5, arg6, arg7, + me, + low, ) + + buffer.push_ready_stack(packet_ptr, me, low) + var retval = header.get_return_value(payload, me, low) + buffer.return_free_packet(packet_ptr, me, low) + return retval From d344d7ba18046945b01a0ec668237971898f51cc Mon Sep 17 00:00:00 2001 From: soraros Date: Mon, 27 Jan 2025 09:39:03 -0800 Subject: [PATCH 308/509] [External] [stdlib] Add `build` task in `pixi.toml` to build the stdlib (#54663) [External] [stdlib] Add `build` task in `pixi.toml` to build the stdlib Co-authored-by: soraros Closes modularml/mojo#3970 MODULAR_ORIG_COMMIT_REV_ID: 9f343de748cdb1c4c5216963782dfb8b4971bb66 --- pixi.toml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/pixi.toml b/pixi.toml index 0067a5d6c1..37772a1b5e 100644 --- a/pixi.toml +++ b/pixi.toml @@ -5,11 +5,12 @@ channels = ["conda-forge", "https://conda.modular.com/max-nightly/"] platforms = ["linux-64", "linux-aarch64", "osx-arm64"] [tasks] -tests ="./stdlib/scripts/run-tests.sh" +build = "./stdlib/scripts/build-stdlib.sh" +tests = "./stdlib/scripts/run-tests.sh" examples = "./examples/run-examples.sh" benchmarks = { cmd = ["./stdlib/scripts/run-benchmarks.sh"], env = { MODULAR_MOJO_NIGHTLY_IMPORT_PATH = "$CONDA_PREFIX/lib/mojo" } } [dependencies] python = ">=3.9,<3.13" lit = "*" -max = "*" \ No newline at end of file +max = "*" From cba1fed83b5284df8b044c151d29ce9614705780 Mon Sep 17 00:00:00 2001 From: Scott Main Date: Tue, 28 Jan 2025 12:54:05 -0800 Subject: [PATCH 309/509] Update github paths for nightly/main branch update MODULAR_ORIG_COMMIT_REV_ID: 8b537faac59ee67e5019900a18a3774b802d77e2 --- docs/manual/get-started.mdx | 4 ++-- docs/manual/operators.mdx | 2 +- docs/tools/testing.mdx | 14 +++++++------- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/docs/manual/get-started.mdx b/docs/manual/get-started.mdx index da014c24d4..799ebbc78d 100644 --- a/docs/manual/get-started.mdx +++ b/docs/manual/get-started.mdx @@ -2,7 +2,7 @@ title: "Get started with Mojo" sidebar_label: "Tutorial: Get started with Mojo" description: "Install Mojo and learn the language basics by building a complete Mojo program" -github_url: https://github.com/modular/mojo/tree/nightly/examples/life +github_url: https://github.com/modular/mojo/tree/main/examples/life image: /images/artwork/mojo-get-started.jpg --- @@ -37,7 +37,7 @@ This tutorial might be a little long because there's a lot to learn, but we tried to keep the explanations simple, and we included links along the way for you to go learn more about each topic. If you just want to see the finished code, you can [get it on -GitHub](https://github.com/modular/mojo/tree/nightly/examples/life). +GitHub](https://github.com/modular/mojo/tree/main/examples/life). System requirements: diff --git a/docs/manual/operators.mdx b/docs/manual/operators.mdx index baaf9f5d8f..902e453224 100644 --- a/docs/manual/operators.mdx +++ b/docs/manual/operators.mdx @@ -1030,7 +1030,7 @@ operations like printing complex values. We'll also allow mixing `Complex` and This example builds our `Complex` struct incrementally. You can also find the [complete example in the public Mojo GitHub -repo](https://github.com/modular/mojo/tree/nightly/examples/operators). +repo](https://github.com/modular/mojo/tree/main/examples/operators). :::note diff --git a/docs/tools/testing.mdx b/docs/tools/testing.mdx index f444d44d5a..ed1b22ea62 100644 --- a/docs/tools/testing.mdx +++ b/docs/tools/testing.mdx @@ -2,7 +2,7 @@ title: Testing sidebar_position: 2 description: Testing Mojo programs. -github_url: https://github.com/modular/mojo/tree/nightly/examples/testing +github_url: https://github.com/modular/mojo/tree/main/examples/testing --- Mojo includes a framework for developing and executing unit tests. The framework @@ -102,9 +102,9 @@ its error message. - [Writing API documentation tests](#writing-api-documentation-tests) discusses how to use the Mojo testing framework to test code examples in your API documentation. -- The public [GitHub repo](https://github.com/modular/mojo/tree/nightly) +- The public [GitHub repo](https://github.com/modular/mojo/tree/main) contains an [example - project](https://github.com/modular/mojo/tree/nightly/examples/testing) to + project](https://github.com/modular/mojo/tree/main/examples/testing) to demonstrate both unit testing and docstring testing. Several of the examples shown later are based on this project. @@ -297,7 +297,7 @@ the following: If needed, you can optionally use the `-I` option one or more times to append additional paths to the list of directories searched to import Mojo modules and packages. Consider the [example testing -project](https://github.com/modular/mojo/tree/nightly/examples/testing) in +project](https://github.com/modular/mojo/tree/main/examples/testing) in GitHub, which has the following directory structure: ```output @@ -369,7 +369,7 @@ By including the `--collect-only` or `--co` option, you can use `mojo test` to discover and print a list of tests. Consider the [example testing -project](https://github.com/modular/mojo/tree/nightly/examples/testing) +project](https://github.com/modular/mojo/tree/main/examples/testing) directory structure shown in the [Running tests](#running-tests) section. The following command produces a list of all of the tests defined in the `test` directory hierarchy. @@ -440,7 +440,7 @@ output shown): You can also produce JSON output for test collection as well. Consider the [example testing -project](https://github.com/modular/mojo/tree/nightly/examples/testing) +project](https://github.com/modular/mojo/tree/main/examples/testing) directory structure shown in the [Running tests](#running-tests) section. The following command collects a list in JSON format of all of the tests defined in the `test` directory hierarchy: @@ -626,7 +626,7 @@ suite within the same module. The format of a documentation test identifier is `@::`. This is best explained by an example. Consider the [example testing -project](https://github.com/modular/mojo/tree/nightly/examples/testing) +project](https://github.com/modular/mojo/tree/main/examples/testing) directory structure shown in the [Running tests](#running-tests) section. The source files in the `src` directory might contain docstrings for the `my_math` package, the `utils.mojo` module, and the individual functions within that From 1ce5c3e4e3bf713393928c18f5d3fb4c84156673 Mon Sep 17 00:00:00 2001 From: Owen Hilyard Date: Tue, 28 Jan 2025 14:31:26 -0800 Subject: [PATCH 310/509] [External] [stdlib] Enhance Linked List (#54700) [External] [stdlib] Enhance Linked List Adds a `LinkedList` type which implements most of the API surface of `List` (also grabbing the tests). This should help with filling in basic data structures in the stdlib. No iterator because I ran into some nasty issues with origins and I'm not sure how far I can push casting them before I get to UB. There's also an instance of `list.__getitem__(0).__getitem__(1).value = "Mojo"` in test_linked_list.mojo since I couldn't find another way to avoid the copy. If someone has a solution please let me know. --------- Signed-off-by: Lukas Hermann <1734032+lsh@users.noreply.github.com> Co-authored-by: Owen Hilyard Co-authored-by: Lukas Hermann <1734032+lsh@users.noreply.github.com> Closes modularml/mojo#3942 MODULAR_ORIG_COMMIT_REV_ID: 85e58ec8b82a0d7cc34667c247b6bd980550a0f4 --- stdlib/src/builtin/value.mojo | 38 ++ stdlib/src/collections/linked_list.mojo | 531 ++++++++++++++++-- stdlib/test/collections/test_linked_list.mojo | 461 ++++++++++++++- stdlib/test/collections/test_list.mojo | 48 +- stdlib/test/test_utils/__init__.mojo | 3 + stdlib/test/test_utils/types.mojo | 66 ++- 6 files changed, 1048 insertions(+), 99 deletions(-) diff --git a/stdlib/src/builtin/value.mojo b/stdlib/src/builtin/value.mojo index a96e88d045..ac0ba28484 100644 --- a/stdlib/src/builtin/value.mojo +++ b/stdlib/src/builtin/value.mojo @@ -308,3 +308,41 @@ trait BoolableKeyElement(Boolable, KeyElement): """ pass + + +trait EqualityComparableWritableCollectionElement( + WritableCollectionElement, EqualityComparable +): + """A trait that combines the CollectionElement, Writable and + EqualityComparable traits. + + This trait requires types to implement CollectionElement, Writable and + EqualityComparable interfaces, allowing them to be used in collections, + compared, and written to output. + """ + + pass + + +trait WritableCollectionElementNew(CollectionElementNew, Writable): + """A trait that combines the CollectionElement and Writable traits. + + This trait requires types to implement both CollectionElement and Writable + interfaces, allowing them to be used in collections and written to output. + """ + + pass + + +trait EqualityComparableWritableCollectionElementNew( + WritableCollectionElementNew, EqualityComparable +): + """A trait that combines the CollectionElement, Writable and + EqualityComparable traits. + + This trait requires types to implement CollectionElement, Writable and + EqualityComparable interfaces, allowing them to be used in collections, + compared, and written to output. + """ + + pass diff --git a/stdlib/src/collections/linked_list.mojo b/stdlib/src/collections/linked_list.mojo index 1e386a263a..19beb26112 100644 --- a/stdlib/src/collections/linked_list.mojo +++ b/stdlib/src/collections/linked_list.mojo @@ -14,28 +14,33 @@ from memory import UnsafePointer from collections import Optional from collections._index_normalization import normalize_index +from os import abort @value -struct Node[ElementType: WritableCollectionElement]: +struct Node[ + ElementType: CollectionElement, +]: """A node in a linked list data structure. Parameters: ElementType: The type of element stored in the node. """ + alias _NodePointer = UnsafePointer[Self] + var value: ElementType """The value stored in this node.""" - var prev: UnsafePointer[Node[ElementType]] + var prev: Self._NodePointer """The previous node in the list.""" - var next: UnsafePointer[Node[ElementType]] + var next: Self._NodePointer """The next node in the list.""" fn __init__( out self, owned value: ElementType, - prev: Optional[UnsafePointer[Node[ElementType]]], - next: Optional[UnsafePointer[Node[ElementType]]], + prev: Optional[Self._NodePointer], + next: Optional[Self._NodePointer], ): """Initialize a new Node with the given value and optional prev/next pointers. @@ -46,22 +51,32 @@ struct Node[ElementType: WritableCollectionElement]: next: Optional pointer to the next node. """ self.value = value^ - self.prev = prev.value() if prev else __type_of(self.prev)() - self.next = next.value() if next else __type_of(self.next)() + self.prev = prev.value() if prev else Self._NodePointer() + self.next = next.value() if next else Self._NodePointer() - fn __str__(self) -> String: + fn __str__[ + ElementType: WritableCollectionElement + ](self: Node[ElementType]) -> String: """Convert this node's value to a string representation. + Parameters: + ElementType: Used to conditionally enable this function if + `ElementType` is `Writable`. + Returns: String representation of the node's value. """ - return String.write(self) + return String.write(self.value) @no_inline - fn write_to[W: Writer](self, mut writer: W): + fn write_to[ + ElementType: WritableCollectionElement, W: Writer + ](self: Node[ElementType], mut writer: W): """Write this node's value to the given writer. Parameters: + ElementType: Used to conditionally enable this function if + `ElementType` is `Writable`. W: The type of writer to write the value to. Args: @@ -70,7 +85,9 @@ struct Node[ElementType: WritableCollectionElement]: writer.write(self.value) -struct LinkedList[ElementType: WritableCollectionElement]: +struct LinkedList[ + ElementType: CollectionElement, +]: """A doubly-linked list implementation. A doubly-linked list is a data structure where each element points to both @@ -79,70 +96,104 @@ struct LinkedList[ElementType: WritableCollectionElement]: Parameters: ElementType: The type of elements stored in the list. Must implement - WritableCollectionElement. + CollectionElement. """ - var _head: UnsafePointer[Node[ElementType]] + alias _NodePointer = UnsafePointer[Node[ElementType]] + + var _head: Self._NodePointer """The first node in the list.""" - var _tail: UnsafePointer[Node[ElementType]] + var _tail: Self._NodePointer """The last node in the list.""" var _size: Int """The number of elements in the list.""" fn __init__(out self): - """Initialize an empty linked list.""" - self._head = __type_of(self._head)() - self._tail = __type_of(self._tail)() + """ + Initialize an empty linked list. + + Time Complexity: O(1) + """ + self._head = Self._NodePointer() + self._tail = Self._NodePointer() self._size = 0 fn __init__(mut self, owned *elements: ElementType): """Initialize a linked list with the given elements. + Time Complexity: O(n) in len(elements) + Args: elements: Variable number of elements to initialize the list with. """ self = Self(elements=elements^) fn __init__(out self, *, owned elements: VariadicListMem[ElementType, _]): - """Initialize a linked list with the given elements. + """ + Construct a list from a `VariadicListMem`. + + Time Complexity: O(n) in len(elements) Args: - elements: Variable number of elements to initialize the list with. + elements: The elements to add to the list. """ self = Self() - for elem in elements: - self.append(elem[]) + var length = len(elements) + + for i in range(length): + var src = UnsafePointer.address_of(elements[i]) + var node = Self._NodePointer.alloc(1) + if not node: + abort("Out of memory") + var dst = UnsafePointer.address_of(node[].value) + src.move_pointee_into(dst) + node[].next = Self._NodePointer() + node[].prev = self._tail + if self._tail: + self._tail[].next = node + self._tail = node + else: + self._head = node + self._tail = node # Do not destroy the elements when their backing storage goes away. # FIXME(https://github.com/modular/mojo/issues/3969) this is leaking! __disable_del elements + self._size = length + fn __copyinit__(mut self, read other: Self): """Initialize this list as a copy of another list. + Time Complexity: O(n) in len(elements) + Args: other: The list to copy from. """ - self._head = other._head - self._tail = other._tail - self._size = other._size + self = other.copy() fn __moveinit__(mut self, owned other: Self): """Initialize this list by moving elements from another list. + Time Complexity: O(1) + Args: other: The list to move elements from. """ self._head = other._head self._tail = other._tail self._size = other._size - other._head = __type_of(other._head)() - other._tail = __type_of(other._tail)() + other._head = Self._NodePointer() + other._tail = Self._NodePointer() other._size = 0 fn __del__(owned self): - """Clean up the list by freeing all nodes.""" + """ + Clean up the list by freeing all nodes. + + Time Complexity: O(n) in len(self) + """ var curr = self._head while curr: var next = curr[].next @@ -151,15 +202,22 @@ struct LinkedList[ElementType: WritableCollectionElement]: curr = next fn append(mut self, owned value: ElementType): - """Add an element to the end of the list. + """ + Add an element to the end of the list. + + Time Complexity: O(1) Args: value: The value to append. """ - var node = Node(value^, self._tail, None) - var addr = UnsafePointer[__type_of(node)].alloc(1) - addr.init_pointee_move(node) - if self: + var addr = Self._NodePointer.alloc(1) + if not addr: + abort("Out of memory") + var value_ptr = UnsafePointer.address_of(addr[].value) + value_ptr.init_pointee_move(value^) + addr[].prev = self._tail + addr[].next = Self._NodePointer() + if self._tail: self._tail[].next = addr else: self._head = addr @@ -167,13 +225,18 @@ struct LinkedList[ElementType: WritableCollectionElement]: self._size += 1 fn prepend(mut self, owned value: ElementType): - """Add an element to the beginning of the list. + """ + Add an element to the beginning of the list. + + Time Complexity: O(1) Args: value: The value to prepend. """ var node = Node(value^, None, self._head) - var addr = UnsafePointer[__type_of(node)].alloc(1) + var addr = Self._NodePointer.alloc(1) + if not addr: + abort("Out of memory") addr.init_pointee_move(node) if self: self._head[].prev = addr @@ -183,8 +246,12 @@ struct LinkedList[ElementType: WritableCollectionElement]: self._size += 1 fn reverse(mut self): - """Reverse the order of elements in the list.""" - var prev = __type_of(self._head)() + """ + Reverse the order of elements in the list. + + Time Complexity: O(n) in len(self) + """ + var prev = Self._NodePointer() var curr = self._head while curr: var next = curr[].next @@ -194,23 +261,154 @@ struct LinkedList[ElementType: WritableCollectionElement]: self._tail = self._head self._head = prev - fn pop(mut self) -> ElementType: - """Remove and return the first element of the list. + fn pop(mut self) raises -> ElementType: + """Remove and return the last element of the list. + + Time Complexity: O(1) + + Returns: + The last element in the list. + """ + var elem = self._tail + if not elem: + raise "Pop on empty list." + + var value = elem[].value + self._tail = elem[].prev + self._size -= 1 + if self._size == 0: + self._head = Self._NodePointer() + else: + self._tail[].next = Self._NodePointer() + elem.free() + return value^ + + fn pop[I: Indexer](mut self, owned i: I) raises -> ElementType: + """ + Remove the ith element of the list, counting from the tail if + given a negative index. + + Time Complexity: O(1) + + Parameters: + I: The type of index to use. + + Args: + i: The index of the element to get. Returns: - The first element in the list. + Ownership of the indicated element. + """ + var current = self._get_node_ptr(Int(i)) + + if current: + var node = current[] + if node.prev: + node.prev[].next = node.next + else: + self._head = node.next + if node.next: + node.next[].prev = node.prev + else: + self._tail = node.prev + + var data = node.value^ + + # Aside from T, destructor is trivial + __mlir_op.`lit.ownership.mark_destroyed`( + __get_mvalue_as_litref(node) + ) + current.free() + self._size -= 1 + return data^ + + raise String("Invalid index for pop: {}").format(Int(i)) + + fn maybe_pop(mut self) -> Optional[ElementType]: + """ + Removes the head of the list and returns it, if it exists. + + Time Complexity: O(1) + + Returns: + The head of the list, if it was present. """ var elem = self._tail + if not elem: + return Optional[ElementType]() var value = elem[].value self._tail = elem[].prev self._size -= 1 if self._size == 0: - self._head = __type_of(self._head)() + self._head = Self._NodePointer() + else: + self._tail[].next = Self._NodePointer() + elem.free() return value^ + fn maybe_pop[I: Indexer](mut self, owned i: I) -> Optional[ElementType]: + """ + Remove the ith element of the list, counting from the tail if + given a negative index. + + Time Complexity: O(1) + + Parameters: + I: The type of index to use. + + Args: + i: The index of the element to get. + + Returns: + The element, if it was found. + """ + var current = self._get_node_ptr(Int(i)) + + if not current: + return Optional[ElementType]() + else: + var node = current[] + if node.prev: + node.prev[].next = node.next + else: + self._head = node.next + if node.next: + node.next[].prev = node.prev + else: + self._tail = node.prev + + var data = node.value^ + + # Aside from T, destructor is trivial + __mlir_op.`lit.ownership.mark_destroyed`( + __get_mvalue_as_litref(node) + ) + current.free() + self._size -= 1 + return Optional[ElementType](data^) + + fn clear(mut self): + """ + Removes all elements from the list. + + Time Complexity: O(n) in len(self) + """ + var current = self._head + while current: + var old = current + current = current[].next + old.destroy_pointee() + old.free() + + self._head = Self._NodePointer() + self._tail = Self._NodePointer() + self._size = 0 + fn copy(self) -> Self: """Create a deep copy of the list. + Time Complexity: O(n) in len(self) + Returns: A new list containing copies of all elements. """ @@ -221,12 +419,205 @@ struct LinkedList[ElementType: WritableCollectionElement]: curr = curr[].next return new^ + fn insert(mut self, owned idx: Int, owned elem: ElementType) raises: + """ + Insert an element `elem` into the list at index `idx`. + + Time Complexity: O(1) + + Raises: + When given an out of bounds index. + + Args: + idx: The index to insert `elem` at. `-len(self) <= idx <= len(self)`. + elem: The item to insert into the list. + """ + var i = max(0, index(idx) if idx >= 0 else index(idx) + len(self)) + + if i == 0: + var node = Self._NodePointer.alloc(1) + if not node: + abort("Out of memory") + node.init_pointee_move( + Node[ElementType]( + elem^, Self._NodePointer(), Self._NodePointer() + ) + ) + + if self._head: + node[].next = self._head + self._head[].prev = node + + self._head = node + + if not self._tail: + self._tail = node + + self._size += 1 + return + + i -= 1 + + var current = self._get_node_ptr(i) + if current: + var next = current[].next + var node = Self._NodePointer.alloc(1) + if not node: + abort("Out of memory") + var data = UnsafePointer.address_of(node[].value) + data[] = elem^ + node[].next = next + node[].prev = current + if next: + next[].prev = node + current[].next = node + if node[].next == Self._NodePointer(): + self._tail = node + if node[].prev == Self._NodePointer(): + self._head = node + self._size += 1 + else: + raise String("Index {} out of bounds").format(idx) + + fn extend(mut self, owned other: Self): + """ + Extends the list with another. + + Time Complexity: O(1) + + Args: + other: The list to append to this one. + """ + if self._tail: + self._tail[].next = other._head + if other._head: + other._head[].prev = self._tail + if other._tail: + self._tail = other._tail + + self._size += other._size + else: + self._head = other._head + self._tail = other._tail + self._size = other._size + + other._head = Self._NodePointer() + other._tail = Self._NodePointer() + + fn count[ + ElementType: EqualityComparableCollectionElement + ](self: LinkedList[ElementType], read elem: ElementType) -> UInt: + """ + Count the occurrences of `elem` in the list. + + Time Complexity: O(n) in len(self) compares + + Parameters: + ElementType: The list element type, used to conditionally enable the function. + + Args: + elem: The element to search for. + + Returns: + The number of occurrences of `elem` in the list. + """ + var current = self._head + var count = 0 + while current: + if current[].value == elem: + count += 1 + + current = current[].next + + return count + + fn __contains__[ + ElementType: EqualityComparableCollectionElement, // + ](self: LinkedList[ElementType], value: ElementType) -> Bool: + """ + Checks if the list contains `value`. + + Time Complexity: O(n) in len(self) compares + + Parameters: + ElementType: The list element type, used to conditionally enable the function. + + Args: + value: The value to search for in the list. + + Returns: + Whether the list contains `value`. + """ + var current = self._head + while current: + if current[].value == value: + return True + current = current[].next + + return False + + fn __eq__[ + ElementType: EqualityComparableCollectionElement, // + ]( + read self: LinkedList[ElementType], read other: LinkedList[ElementType] + ) -> Bool: + """ + Checks if the two lists are equal. + + Time Complexity: O(n) in min(len(self), len(other)) compares + + Parameters: + ElementType: The list element type, used to conditionally enable the function. + + Args: + other: The list to compare to. + + Returns: + Whether the lists are equal. + """ + if self._size != other._size: + return False + + var self_cursor = self._head + var other_cursor = other._head + + while self_cursor: + if self_cursor[].value != other_cursor[].value: + return False + + self_cursor = self_cursor[].next + other_cursor = other_cursor[].next + + return True + + fn __ne__[ + ElementType: EqualityComparableCollectionElement, // + ](self: LinkedList[ElementType], other: LinkedList[ElementType]) -> Bool: + """ + Checks if the two lists are not equal. + + Time Complexity: O(n) in min(len(self), len(other)) compares + + Parameters: + ElementType: The list element type, used to conditionally enable the function. + + Args: + other: The list to compare to. + + Returns: + Whether the lists are not equal. + """ + return not (self == other) + fn _get_node_ptr(ref self, index: Int) -> UnsafePointer[Node[ElementType]]: - """Get a pointer to the node at the specified index. + """ + Get a pointer to the node at the specified index. This method optimizes traversal by starting from either the head or tail depending on which is closer to the target index. + Time Complexity: O(n) in len(self) + Args: index: The index of the node to get. @@ -249,7 +640,10 @@ struct LinkedList[ElementType: WritableCollectionElement]: return curr fn __getitem__(ref self, index: Int) -> ref [self] ElementType: - """Get the element at the specified index. + """ + Get the element at the specified index. + + Time Complexity: O(n) in len(self) Args: index: The index of the element to get. @@ -261,7 +655,10 @@ struct LinkedList[ElementType: WritableCollectionElement]: return self._get_node_ptr(index)[].value fn __setitem__(mut self, index: Int, owned value: ElementType): - """Set the element at the specified index. + """ + Set the element at the specified index. + + Time Complexity: O(n) in len(self) Args: index: The index of the element to set. @@ -273,6 +670,8 @@ struct LinkedList[ElementType: WritableCollectionElement]: fn __len__(self) -> Int: """Get the number of elements in the list. + Time Complexity: O(1) + Returns: The number of elements in the list. """ @@ -281,22 +680,42 @@ struct LinkedList[ElementType: WritableCollectionElement]: fn __bool__(self) -> Bool: """Check if the list is non-empty. + Time Complexity: O(1) + Returns: True if the list has elements, False otherwise. """ return len(self) != 0 - fn __str__(self) -> String: + fn __str__[ + ElementType: WritableCollectionElement + ](self: LinkedList[ElementType]) -> String: """Convert the list to its string representation. + Time Complexity: O(n) in len(self) + + Parameters: + ElementType: Used to conditionally enable this function when + `ElementType` is `Writable`. + Returns: String representation of the list. """ - return String.write(self) + var writer = String() + self._write(writer) + return writer - fn __repr__(self) -> String: + fn __repr__[ + ElementType: WritableCollectionElement + ](self: LinkedList[ElementType]) -> String: """Convert the list to its string representation. + Time Complexity: O(n) in len(self) + + Parameters: + ElementType: Used to conditionally enable this function when + `ElementType` is `Writable`. + Returns: String representation of the list. """ @@ -304,11 +723,17 @@ struct LinkedList[ElementType: WritableCollectionElement]: self._write(writer, prefix="LinkedList(", suffix=")") return writer - fn write_to[W: Writer](self, mut writer: W): + fn write_to[ + W: Writer, ElementType: WritableCollectionElement + ](self: LinkedList[ElementType], mut writer: W): """Write the list to the given writer. + Time Complexity: O(n) in len(self) + Parameters: W: The type of writer to write the list to. + ElementType: Used to conditionally enable this function when + `ElementType` is `Writable`. Args: writer: The writer to write the list to. @@ -317,8 +742,14 @@ struct LinkedList[ElementType: WritableCollectionElement]: @no_inline fn _write[ - W: Writer - ](self, mut writer: W, *, prefix: String = "[", suffix: String = "]"): + W: Writer, ElementType: WritableCollectionElement + ]( + self: LinkedList[ElementType], + mut writer: W, + *, + prefix: String = "[", + suffix: String = "]", + ): if not self: return writer.write(prefix, suffix) @@ -327,6 +758,6 @@ struct LinkedList[ElementType: WritableCollectionElement]: for i in range(len(self)): if i: writer.write(", ") - writer.write(curr[]) + writer.write(curr[].value) curr = curr[].next writer.write(suffix) diff --git a/stdlib/test/collections/test_linked_list.mojo b/stdlib/test/collections/test_linked_list.mojo index f1be0e72bf..5641002066 100644 --- a/stdlib/test/collections/test_linked_list.mojo +++ b/stdlib/test/collections/test_linked_list.mojo @@ -12,8 +12,15 @@ # ===----------------------------------------------------------------------=== # # RUN: %mojo %s -from collections import LinkedList -from testing import assert_equal +from collections import LinkedList, Optional +from testing import assert_equal, assert_raises, assert_true, assert_false +from test_utils import ( + CopyCounter, + MoveCounter, + DtorCounter, + g_dtor_count, + CopyCountedStruct, +) def test_construction(): @@ -101,12 +108,439 @@ def test_setitem(): def test_str(): var l1 = LinkedList[Int](1, 2, 3) - assert_equal(String(l1), "[1, 2, 3]") + assert_equal(l1.__str__(), "[1, 2, 3]") def test_repr(): var l1 = LinkedList[Int](1, 2, 3) - assert_equal(repr(l1), "LinkedList(1, 2, 3)") + assert_equal(l1.__repr__(), "LinkedList(1, 2, 3)") + + +def test_pop_on_empty_list(): + with assert_raises(): + var ll = LinkedList[Int]() + _ = ll.pop() + + +def test_optional_pop_on_empty_linked_list(): + var ll = LinkedList[Int]() + var result = ll.maybe_pop() + assert_false(Bool(result)) + + +def test_list(): + var list = LinkedList[Int]() + + for i in range(5): + list.append(i) + + assert_equal(5, len(list)) + assert_equal(0, list[0]) + assert_equal(1, list[1]) + assert_equal(2, list[2]) + assert_equal(3, list[3]) + assert_equal(4, list[4]) + + assert_equal(0, list[-5]) + assert_equal(3, list[-2]) + assert_equal(4, list[-1]) + + list[2] = -2 + assert_equal(-2, list[2]) + + list[-5] = 5 + assert_equal(5, list[-5]) + list[-2] = 3 + assert_equal(3, list[-2]) + list[-1] = 7 + assert_equal(7, list[-1]) + + +def test_list_clear(): + var list = LinkedList[Int](1, 2, 3) + assert_equal(len(list), 3) + list.clear() + + assert_equal(len(list), 0) + + +def test_list_to_bool_conversion(): + assert_false(LinkedList[String]()) + assert_true(LinkedList[String]("a")) + assert_true(LinkedList[String]("", "a")) + assert_true(LinkedList[String]("")) + + +def test_list_pop(): + var list = LinkedList[Int]() + # Test pop with index + for i in range(6): + list.append(i) + + assert_equal(6, len(list)) + + # try popping from index 3 for 3 times + for i in range(3, 6): + assert_equal(i, list.pop(3)) + + # list should have 3 elements now + assert_equal(3, len(list)) + assert_equal(0, list[0]) + assert_equal(1, list[1]) + assert_equal(2, list[2]) + + # Test pop with negative index + for i in range(0, 2): + var popped: Int = list.pop(-len(list)) + assert_equal(i, popped) + + # test default index as well + assert_equal(2, list.pop()) + list.append(2) + assert_equal(2, list.pop()) + + # list should be empty now + assert_equal(0, len(list)) + + +def test_list_variadic_constructor(): + var l = LinkedList[Int](2, 4, 6) + assert_equal(3, len(l)) + assert_equal(2, l[0]) + assert_equal(4, l[1]) + assert_equal(6, l[2]) + + l.append(8) + assert_equal(4, len(l)) + assert_equal(8, l[3]) + + # + # Test variadic construct copying behavior + # + + var l2 = LinkedList[CopyCounter]( + CopyCounter(), CopyCounter(), CopyCounter() + ) + + assert_equal(len(l2), 3) + assert_equal(l2[0].copy_count, 0) + assert_equal(l2[1].copy_count, 0) + assert_equal(l2[2].copy_count, 0) + + +def test_list_reverse(): + # + # Test reversing the list [] + # + + var vec = LinkedList[Int]() + + assert_equal(len(vec), 0) + + vec.reverse() + + assert_equal(len(vec), 0) + + # + # Test reversing the list [123] + # + + vec = LinkedList[Int]() + + vec.append(123) + + assert_equal(len(vec), 1) + assert_equal(vec[0], 123) + + vec.reverse() + + assert_equal(len(vec), 1) + assert_equal(vec[0], 123) + + # + # Test reversing the list ["one", "two", "three"] + # + + var vec2 = LinkedList[String]("one", "two", "three") + + assert_equal(len(vec2), 3) + assert_equal(vec2[0], "one") + assert_equal(vec2[1], "two") + assert_equal(vec2[2], "three") + + vec2.reverse() + + assert_equal(len(vec2), 3) + assert_equal(vec2[0], "three") + assert_equal(vec2[1], "two") + assert_equal(vec2[2], "one") + + # + # Test reversing the list [5, 10] + # + + vec = LinkedList[Int]() + vec.append(5) + vec.append(10) + + assert_equal(len(vec), 2) + assert_equal(vec[0], 5) + assert_equal(vec[1], 10) + + vec.reverse() + + assert_equal(len(vec), 2) + assert_equal(vec[0], 10) + assert_equal(vec[1], 5) + + +def test_list_insert(): + # + # Test the list [1, 2, 3] created with insert + # + + var v1 = LinkedList[Int]() + v1.insert(len(v1), 1) + v1.insert(len(v1), 3) + v1.insert(1, 2) + + assert_equal(len(v1), 3) + assert_equal(v1[0], 1) + assert_equal(v1[1], 2) + assert_equal(v1[2], 3) + + # + # Test the list [1, 2, 3, 4, 5] created with negative and positive index + # + + var v2 = LinkedList[Int]() + v2.insert(-1729, 2) + v2.insert(len(v2), 3) + v2.insert(len(v2), 5) + v2.insert(-1, 4) + v2.insert(-len(v2), 1) + + assert_equal(len(v2), 5) + assert_equal(v2[0], 1) + assert_equal(v2[1], 2) + assert_equal(v2[2], 3) + assert_equal(v2[3], 4) + assert_equal(v2[4], 5) + + # + # Test the list [1, 2, 3, 4] created with negative index + # + + var v3 = LinkedList[Int]() + v3.insert(-11, 4) + v3.insert(-13, 3) + v3.insert(-17, 2) + v3.insert(-19, 1) + + assert_equal(len(v3), 4) + assert_equal(v3[0], 1) + assert_equal(v3[1], 2) + assert_equal(v3[2], 3) + assert_equal(v3[3], 4) + + # + # Test the list [1, 2, 3, 4, 5, 6, 7, 8] created with insert + # + + var v4 = LinkedList[Int]() + for i in range(4): + v4.insert(0, 4 - i) + v4.insert(len(v4), 4 + i + 1) + + for i in range(len(v4)): + assert_equal(v4[i], i + 1) + + +def test_list_extend_non_trivial(): + # Tests three things: + # - extend() for non-plain-old-data types + # - extend() with mixed-length self and other lists + # - extend() using optimal number of __moveinit__() calls + var v1 = LinkedList[MoveCounter[String]]() + v1.append(MoveCounter[String]("Hello")) + v1.append(MoveCounter[String]("World")) + + var v2 = LinkedList[MoveCounter[String]]() + v2.append(MoveCounter[String]("Foo")) + v2.append(MoveCounter[String]("Bar")) + v2.append(MoveCounter[String]("Baz")) + + v1.extend(v2^) + + assert_equal(len(v1), 5) + assert_equal(v1[0].value, "Hello") + assert_equal(v1[1].value, "World") + assert_equal(v1[2].value, "Foo") + assert_equal(v1[3].value, "Bar") + assert_equal(v1[4].value, "Baz") + + assert_equal(v1[0].move_count, 1) + assert_equal(v1[1].move_count, 1) + assert_equal(v1[2].move_count, 1) + assert_equal(v1[3].move_count, 1) + assert_equal(v1[4].move_count, 1) + + +def test_2d_dynamic_list(): + var list = LinkedList[LinkedList[Int]]() + + for i in range(2): + var v = LinkedList[Int]() + for j in range(3): + v.append(i + j) + list.append(v) + + assert_equal(0, list[0][0]) + assert_equal(1, list[0][1]) + assert_equal(2, list[0][2]) + assert_equal(1, list[1][0]) + assert_equal(2, list[1][1]) + assert_equal(3, list[1][2]) + + assert_equal(2, len(list)) + + assert_equal(3, len(list[0])) + + list[0].clear() + assert_equal(0, len(list[0])) + + list.clear() + assert_equal(0, len(list)) + + +def test_list_explicit_copy(): + var list = LinkedList[CopyCounter]() + list.append(CopyCounter()) + var list_copy = list.copy() + assert_equal(0, list[0].copy_count) + assert_equal(1, list_copy[0].copy_count) + + var l2 = LinkedList[Int]() + for i in range(10): + l2.append(i) + + var l2_copy = l2.copy() + assert_equal(len(l2), len(l2_copy)) + for i in range(len(l2)): + assert_equal(l2[i], l2_copy[i]) + + +def test_no_extra_copies_with_sugared_set_by_field(): + var list = LinkedList[LinkedList[CopyCountedStruct]]() + var child_list = LinkedList[CopyCountedStruct]() + child_list.append(CopyCountedStruct("Hello")) + child_list.append(CopyCountedStruct("World")) + + # No copies here. Constructing with LinkedList[CopyCountedStruct](CopyCountedStruct("Hello")) is a copy. + assert_equal(0, child_list[0].counter.copy_count) + assert_equal(0, child_list[1].counter.copy_count) + + list.append(child_list^) + + assert_equal(0, list[0][0].counter.copy_count) + assert_equal(0, list[0][1].counter.copy_count) + + # list[0][1] makes a copy for reasons I cannot determine + list.__getitem__(0).__getitem__(1).value = "Mojo" + + assert_equal(0, list[0][0].counter.copy_count) + assert_equal(0, list[0][1].counter.copy_count) + + assert_equal("Mojo", list[0][1].value) + + assert_equal(0, list[0][0].counter.copy_count) + assert_equal(0, list[0][1].counter.copy_count) + + +def test_list_boolable(): + assert_true(LinkedList[Int](1)) + assert_false(LinkedList[Int]()) + + +def test_list_count(): + var list = LinkedList[Int](1, 2, 3, 2, 5, 6, 7, 8, 9, 10) + assert_equal(1, list.count(1)) + assert_equal(2, list.count(2)) + assert_equal(0, list.count(4)) + + var list2 = LinkedList[Int]() + assert_equal(0, list2.count(1)) + + +def test_list_contains(): + var x = LinkedList[Int](1, 2, 3) + assert_false(0 in x) + assert_true(1 in x) + assert_false(4 in x) + + # TODO: implement LinkedList.__eq__ for Self[ComparableCollectionElement] + # var y = LinkedList[LinkedList[Int]]() + # y.append(LinkedList(1,2)) + # assert_equal(LinkedList(1,2) in y,True) + # assert_equal(LinkedList(0,1) in y,False) + + +def test_list_eq_ne(): + var l1 = LinkedList[Int](1, 2, 3) + var l2 = LinkedList[Int](1, 2, 3) + assert_true(l1 == l2) + assert_false(l1 != l2) + + var l3 = LinkedList[Int](1, 2, 3, 4) + assert_false(l1 == l3) + assert_true(l1 != l3) + + var l4 = LinkedList[Int]() + var l5 = LinkedList[Int]() + assert_true(l4 == l5) + assert_true(l1 != l4) + + var l6 = LinkedList[String]("a", "b", "c") + var l7 = LinkedList[String]("a", "b", "c") + var l8 = LinkedList[String]("a", "b") + assert_true(l6 == l7) + assert_false(l6 != l7) + assert_false(l6 == l8) + + +def test_indexing(): + var l = LinkedList[Int](1, 2, 3) + assert_equal(l[Int(1)], 2) + assert_equal(l[False], 1) + assert_equal(l[True], 2) + assert_equal(l[2], 3) + + +# ===-------------------------------------------------------------------===# +# LinkedList dtor tests +# ===-------------------------------------------------------------------===# + + +def inner_test_list_dtor(): + # explicitly reset global counter + g_dtor_count = 0 + + var l = LinkedList[DtorCounter]() + assert_equal(g_dtor_count, 0) + + l.append(DtorCounter()) + assert_equal(g_dtor_count, 0) + + l^.__del__() + assert_equal(g_dtor_count, 1) + + +def test_list_dtor(): + # call another function to force the destruction of the list + inner_test_list_dtor() + + # verify we still only ran the destructor once + assert_equal(g_dtor_count, 1) def main(): @@ -120,3 +554,22 @@ def main(): test_setitem() test_str() test_repr() + test_pop_on_empty_list() + test_optional_pop_on_empty_linked_list() + test_list() + test_list_clear() + test_list_to_bool_conversion() + test_list_pop() + test_list_variadic_constructor() + test_list_reverse() + test_list_extend_non_trivial() + test_list_explicit_copy() + test_no_extra_copies_with_sugared_set_by_field() + test_2d_dynamic_list() + test_list_boolable() + test_list_count() + test_list_contains() + test_indexing() + test_list_dtor() + test_list_insert() + test_list_eq_ne() diff --git a/stdlib/test/collections/test_list.mojo b/stdlib/test/collections/test_list.mojo index ef218a90b0..159c3bd73e 100644 --- a/stdlib/test/collections/test_list.mojo +++ b/stdlib/test/collections/test_list.mojo @@ -16,7 +16,13 @@ from collections import List from sys.info import sizeof from memory import UnsafePointer, Span -from test_utils import CopyCounter, MoveCounter +from test_utils import ( + CopyCounter, + MoveCounter, + DtorCounter, + g_dtor_count, + CopyCountedStruct, +) from testing import assert_equal, assert_false, assert_raises, assert_true @@ -548,21 +554,6 @@ def test_list_explicit_copy(): assert_equal(l2[i], l2_copy[i]) -@value -struct CopyCountedStruct(CollectionElement): - var counter: CopyCounter - var value: String - - fn __init__(out self, *, other: Self): - self.counter = other.counter.copy() - self.value = other.value.copy() - - @implicit - fn __init__(out self, value: String): - self.counter = CopyCounter() - self.value = value - - def test_no_extra_copies_with_sugared_set_by_field(): var list = List[List[CopyCountedStruct]](capacity=1) var child_list = List[CopyCountedStruct](capacity=2) @@ -872,31 +863,6 @@ def test_indexing(): # ===-------------------------------------------------------------------===# # List dtor tests # ===-------------------------------------------------------------------===# -var g_dtor_count: Int = 0 - - -struct DtorCounter(CollectionElement): - # NOTE: payload is required because List does not support zero sized structs. - var payload: Int - - fn __init__(out self): - self.payload = 0 - - fn __init__(out self, *, other: Self): - self.payload = other.payload - - fn __copyinit__(out self, existing: Self, /): - self.payload = existing.payload - - fn copy(self) -> Self: - return self - - fn __moveinit__(out self, owned existing: Self, /): - self.payload = existing.payload - existing.payload = 0 - - fn __del__(owned self): - g_dtor_count += 1 def inner_test_list_dtor(): diff --git a/stdlib/test/test_utils/__init__.mojo b/stdlib/test/test_utils/__init__.mojo index 0159453e8a..d85307ba91 100644 --- a/stdlib/test/test_utils/__init__.mojo +++ b/stdlib/test/test_utils/__init__.mojo @@ -20,4 +20,7 @@ from .types import ( MoveOnly, ObservableDel, ValueDestructorRecorder, + DtorCounter, + g_dtor_count, + CopyCountedStruct, ) diff --git a/stdlib/test/test_utils/types.mojo b/stdlib/test/test_utils/types.mojo index c31642e342..e729601231 100644 --- a/stdlib/test/test_utils/types.mojo +++ b/stdlib/test/test_utils/types.mojo @@ -88,7 +88,7 @@ struct ImplicitCopyOnly(Copyable): # ===----------------------------------------------------------------------=== # -struct CopyCounter(CollectionElement, ExplicitlyCopyable): +struct CopyCounter(CollectionElement, ExplicitlyCopyable, Writable): """Counts the number of copies performed on a value.""" var copy_count: Int @@ -108,6 +108,11 @@ struct CopyCounter(CollectionElement, ExplicitlyCopyable): fn copy(self) -> Self: return self + fn write_to[W: Writer](self, mut writer: W): + writer.write("CopyCounter(") + writer.write(String(self.copy_count)) + writer.write(")") + # ===----------------------------------------------------------------------=== # # MoveCounter @@ -148,12 +153,12 @@ struct MoveCounter[T: CollectionElementNew]( # TODO: This type should not be Copyable, but has to be to satisfy # CollectionElement at the moment. fn __copyinit__(out self, existing: Self): - # print("ERROR: _MoveCounter copy constructor called unexpectedly!") self.value = existing.value.copy() self.move_count = existing.move_count - fn copy(self) -> Self: - return self + fn copy(self, out existing: Self): + existing = Self(self.value.copy()) + existing.move_count = self.move_count # ===----------------------------------------------------------------------=== # @@ -191,3 +196,56 @@ struct ObservableDel(CollectionElement): fn __del__(owned self): self.target.init_pointee_move(True) + + +# ===----------------------------------------------------------------------=== # +# DtorCounter +# ===----------------------------------------------------------------------=== # + +var g_dtor_count: Int = 0 + + +struct DtorCounter(CollectionElement, Writable): + # NOTE: payload is required because LinkedList does not support zero sized structs. + var payload: Int + + fn __init__(out self): + self.payload = 0 + + fn __init__(out self, *, other: Self): + self.payload = other.payload + + fn __copyinit__(out self, existing: Self, /): + self.payload = existing.payload + + fn __moveinit__(out self, owned existing: Self, /): + self.payload = existing.payload + existing.payload = 0 + + fn __del__(owned self): + g_dtor_count += 1 + + fn write_to[W: Writer](self, mut writer: W): + writer.write("DtorCounter(") + writer.write(String(g_dtor_count)) + writer.write(")") + + +# ===----------------------------------------------------------------------=== # +# CopyCountedStruct +# ===----------------------------------------------------------------------=== # + + +@value +struct CopyCountedStruct(CollectionElement): + var counter: CopyCounter + var value: String + + fn __init__(out self, *, other: Self): + self.counter = other.counter.copy() + self.value = other.value.copy() + + @implicit + fn __init__(out self, value: String): + self.counter = CopyCounter() + self.value = value From 0636353eab4fe1b65ab174676417315787af1713 Mon Sep 17 00:00:00 2001 From: Lukas Hermann <1734032+lsh@users.noreply.github.com> Date: Tue, 28 Jan 2025 17:16:26 -0800 Subject: [PATCH 311/509] [stdlib] Add `_printf` support for AMD This PR adds support for `_printf` on AMD GPUs. Right now we only support printing using the `Writable` trait, but this PR will also allow C style printing. MODULAR_ORIG_COMMIT_REV_ID: a837c6914dd378c216f18ae2645e8479a676c14a --- stdlib/src/builtin/io.mojo | 75 ++++++++++++++++++++++++++++++++++++-- 1 file changed, 72 insertions(+), 3 deletions(-) diff --git a/stdlib/src/builtin/io.mojo b/stdlib/src/builtin/io.mojo index 4271f75e0e..d52d56e411 100644 --- a/stdlib/src/builtin/io.mojo +++ b/stdlib/src/builtin/io.mojo @@ -27,11 +27,13 @@ from sys import ( stdout, ) from sys._libc import dup, fclose, fdopen, fflush -from sys.ffi import OpaquePointer, c_char +from sys.ffi import OpaquePointer, c_char, OpaquePointer +from sys._amdgpu import printf_begin, printf_append_args, printf_append_string_n +from sys.intrinsics import _type_is_eq from builtin.dtype import _get_dtype_printf_format from builtin.file_descriptor import FileDescriptor -from memory import UnsafePointer, memcpy +from memory import UnsafePointer, memcpy, bitcast from utils import ( StaticString, @@ -187,7 +189,74 @@ fn _printf[ fmt.unsafe_cstr_ptr(), Pointer.address_of(loaded_pack) ) elif is_amd_gpu(): - pass + # This is adapted from Triton's third party method for lowering + # AMD printf calls: + # https://github.com/triton-lang/triton/blob/1c28e08971a0d70c4331432994338ee05d31e633/third_party/amd/lib/TritonAMDGPUToLLVM/TargetInfo.cpp#L321 + fn _to_uint64[T: AnyType, //](value: T) -> UInt64: + @parameter + if _type_is_eq[T, UInt64](): + return rebind[UInt64](value) + elif _type_is_eq[T, UInt32](): + return UInt64(rebind[UInt32](value)) + elif _type_is_eq[T, UInt16](): + return UInt64(rebind[UInt16](value)) + elif _type_is_eq[T, UInt8](): + return UInt64(rebind[UInt8](value)) + elif _type_is_eq[T, Int64](): + return UInt64(rebind[Int64](value)) + elif _type_is_eq[T, Int32](): + return UInt64(rebind[Int32](value)) + elif _type_is_eq[T, Int16](): + return UInt64(rebind[Int16](value)) + elif _type_is_eq[T, Int8](): + return UInt64(rebind[Int8](value)) + elif _type_is_eq[T, Float16](): + return bitcast[DType.uint64](Float64(rebind[Float16](value))) + elif _type_is_eq[T, Float32](): + return bitcast[DType.uint64](Float64(rebind[Float32](value))) + elif _type_is_eq[T, Float64](): + return bitcast[DType.uint64](rebind[Float64](value)) + elif _type_is_eq[T, Int](): + return UInt64(rebind[Int](value)) + elif _type_is_eq[T, UInt](): + return UInt64(rebind[UInt](value)) + elif _type_is_eq[UnsafePointer[UInt8], UInt](): + return UInt64(Int(rebind[UnsafePointer[UInt8]](value))) + elif _type_is_eq[UnsafePointer[Int8], UInt](): + return UInt64(Int(rebind[UnsafePointer[Int8]](value))) + elif _type_is_eq[OpaquePointer, UInt](): + return UInt64(Int(rebind[OpaquePointer](value))) + return 0 + + alias args_len = len(VariadicList(types)) + + var message = printf_begin() + message = printf_append_string_n(message, fmt.as_bytes(), args_len == 0) + alias k_args_per_group = 7 + + @parameter + for group in range(0, args_len, k_args_per_group): + alias bound = min(group + k_args_per_group, args_len) + alias num_args = bound - group + + var arguments = InlineArray[UInt64, k_args_per_group](fill=0) + + @parameter + for i in range(num_args): + arguments[i] = _to_uint64(args[i]) + message = printf_append_args( + message, + num_args, + arguments[0], + arguments[1], + arguments[2], + arguments[3], + arguments[4], + arguments[5], + arguments[6], + Int32(Int(bound == args_len)), + ) + else: with _fdopen(file) as fd: # FIXME: external_call should handle this From a46bc0f1e9ed0e6e4aaa1ecb52cd56adadec12ec Mon Sep 17 00:00:00 2001 From: Ken Jones <165197230+KenJones-Modular@users.noreply.github.com> Date: Tue, 28 Jan 2025 18:29:40 -0800 Subject: [PATCH 312/509] [docs] Document casting SIMDs using constructors Documented how to cast SIMD values using SIMD constructors. MODULAR_ORIG_COMMIT_REV_ID: 54bc6b66b70369a0950ca0c0c3446fb1c588c6c3 --- docs/manual/operators.mdx | 34 ++++++++++++++---------- docs/manual/types.mdx | 51 ++++++++++++++++++++++++++++++++++++ examples/operators/README.md | 2 +- 3 files changed, 72 insertions(+), 15 deletions(-) diff --git a/docs/manual/operators.mdx b/docs/manual/operators.mdx index 902e453224..a309e1f503 100644 --- a/docs/manual/operators.mdx +++ b/docs/manual/operators.mdx @@ -1,6 +1,7 @@ --- title: Operators, expressions, and dunder methods sidebar_label: Operators and expressions +github_url: https://github.com/modular/mojo/tree/main/examples/operators --- Mojo includes a variety of operators for manipulating values of different types. @@ -217,19 +218,22 @@ error: invalid call to '__mul__': could not deduce parameter 'type' of parent st ``` If you need to perform an arithmetic or bitwise operator on two `SIMD` values of -different types, you can explicitly -[`cast()`](/mojo/stdlib/builtin/simd/SIMD#cast) a `SIMD` so that they have the -same type. +different types, you can explicitly convert a value to the desired type either +by invoking its [`cast()`](/mojo/stdlib/builtin/simd/SIMD#cast) method or by +passing it as an argument to the constructor of the target type. ```mojo simd1 = SIMD[DType.float32, 4](2.2, 3.3, 4.4, 5.5) simd2 = SIMD[DType.int16, 4](-1, 2, -3, 4) -simd3 = simd1 * simd2.cast[DType.float32]() # Result is SIMD[DType.float32, 4] -print(simd3) +simd3 = simd1 * simd2.cast[DType.float32]() # Convert with cast() method +print("simd3:", simd3) +simd4 = simd2 + SIMD[DType.int16, 4](simd1) # Convert with SIMD constructor +print("simd4:", simd4) ``` ```output -[-2.2000000476837158, 6.5999999046325684, -13.200000762939453, 22.0] +simd3: [-2.2, 6.6, -13.200001, 22.0] +simd4: [1, 5, 1, 9] ``` One exception is that the exponentiation operator, `**`, is overloaded so that @@ -270,7 +274,7 @@ There are three operators related to division: ``` ```output - True float16 division: [1.400390625, -1.400390625, -1.400390625, 1.400390625] + True float16 division: [1.4003906, -1.4003906, -1.4003906, 1.4003906] True int32 division: [2, -2, -1, 1] ``` @@ -380,9 +384,10 @@ compared. `Int` or `UInt` do standard numerical comparison with a `Bool` result. - Two `SIMD` values can be compared only if they are the same `DType` and size. (If you need to compare two `SIMD` values of different types, you can - explicitly [`cast()`](/mojo/stdlib/builtin/simd/SIMD#cast) a `SIMD` so that - they have the same type.) Mojo performs elementwise comparison with a - `SIMD[DType.bool]` result. For example: + explicitly convert a value so that they have the same type either by invoking + its [`cast()`](/mojo/stdlib/builtin/simd/SIMD#cast) method or by passing it as + an argument to the constructor of the target type.) Mojo performs elementwise + comparison with a `SIMD[DType.bool]` result. For example: ```mojo simd1 = SIMD[DType.int16, 4](-1, 2, -3, 4) @@ -428,12 +433,13 @@ compared. - `Scalar` values are simply aliases for single-element `SIMD` vectors. Therefore, the same restrictions apply against comparing different types. In other words, you can't compare a `Float16` value to a `Float32` value unless - you cast the values to the same type. For example: + you convert the values to the same type. You can convert a `Scalar` value by + passing it as an argument to the constructor of the target type: ```mojo - var float1: Float16 = 12.345 # SIMD[DType.float16, 1] - var float2: Float32 = 0.5 # SIMD[DType.float32, 1] - result = float1.cast[DType.float32]() > float2 # SIMD[DType.bool, 1] + var float1: Float16 = 12.345 # SIMD[DType.float16, 1] + var float2: Float32 = 0.5 # SIMD[DType.float32, 1] + result = Float32(float1) > float2 # Result is SIMD[DType.bool, 1] print(result) ``` diff --git a/docs/manual/types.mdx b/docs/manual/types.mdx index 49669c32d9..641cfdb8e7 100644 --- a/docs/manual/types.mdx +++ b/docs/manual/types.mdx @@ -304,6 +304,57 @@ Min/max finite values for float32 There are several other data types in the standard library that also use the `DType` abstraction. +### Numeric type conversion + +[Constructors and implicit conversion](/mojo/manual/lifecycle/life/#constructors-and-implicit-conversion) +documents the circumstances in which Mojo automatically converts a value from +one type to another. Importantly, numeric [operators](/mojo/manual/operators) +**don't** automatically narrow or widen operands to a common type. + +You can explicitly convert a `SIMD` value to a different `SIMD` type either +by invoking its [`cast()`](/mojo/stdlib/builtin/simd/SIMD#cast) method or by +passing it as an argument to the constructor of the target type. For example: + +```mojo +simd1 = SIMD[DType.float32, 4](2.2, 3.3, 4.4, 5.5) +simd2 = SIMD[DType.int16, 4](-1, 2, -3, 4) +simd3 = simd1 * simd2.cast[DType.float32]() # Convert with cast() method +print("simd3:", simd3) +simd4 = simd2 + SIMD[DType.int16, 4](simd1) # Convert with SIMD constructor +print("simd4:", simd4) +``` + +```output +simd3: [-2.2, 6.6, -13.200001, 22.0] +simd4: [1, 5, 1, 9] +``` + +You can convert a `Scalar` value by passing it as an argument to the constructor +of the target type. For example: + +```mojo +var my_int: Int16 = 12 # SIMD[DType.int16, 1] +var my_float: Float32 = 0.75 # SIMD[DType.float32, 1] +result = Float32(my_int) * my_float # Result is SIMD[DType.float32, 1] +print("Result:", result) +``` + +```output +Result: 9.0 +``` + +You can convert a scalar value of any numeric type to `Int` by passing the value +to the [`Int()`](/mojo/stdlib/builtin/int/Int#__init__) constructor method. +Additionally, you can pass an instance of any struct that implements the +[`Intable`](/mojo/stdlib/builtin/int/Intable) trait or +[`IntableRaising`](/mojo/stdlib/builtin/int/IntableRaising) trait to the `Int()` +constructor to convert that instance to an `Int`. + +You can convert an `Int` or `IntLiteral` value to the `UInt` type by passing the +value to the [`UInt()`](/mojo/stdlib/builtin/uint/UInt#__init__) constructor. +You can't convert other numeric types to `UInt` directly, though you can first +convert them to `Int` and then to `UInt`. + ## Strings Mojo's `String` type represents a mutable string. (For Python programmers, note diff --git a/examples/operators/README.md b/examples/operators/README.md index 928b8b20ef..0c74aa65f4 100644 --- a/examples/operators/README.md +++ b/examples/operators/README.md @@ -23,5 +23,5 @@ magic run mojo main.mojo You can run the unit tests by running the following command: ```bash -magic run test +magic run tests ``` From b123cfef8724d6f9b2e2c6779a89200d121d5752 Mon Sep 17 00:00:00 2001 From: modularbot Date: Wed, 29 Jan 2025 08:36:31 +0000 Subject: [PATCH 313/509] Update lockfiles to point to latest nightly version: 25.1.0.dev2025012905 --- examples/life/magic.lock | 373 +++++++++++++++--------------- examples/magic.lock | 373 +++++++++++++++--------------- examples/notebooks/magic.lock | 414 ++++++++++++++++------------------ examples/operators/magic.lock | 373 +++++++++++++++--------------- examples/testing/magic.lock | 373 +++++++++++++++--------------- magic.lock | 373 +++++++++++++++--------------- 6 files changed, 1106 insertions(+), 1173 deletions(-) diff --git a/examples/life/magic.lock b/examples/life/magic.lock index 35a2fdcb83..c7fb6ac875 100644 --- a/examples/life/magic.lock +++ b/examples/life/magic.lock @@ -49,7 +49,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/dav1d-1.2.1-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/dbus-1.13.6-h5008d03_3.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.18-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda @@ -106,12 +106,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libasprintf-0.22.5-he8f35ee_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libasprintf-devel-0.22.5-he8f35ee_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libavif16-1.1.1-h1909e37_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-26_linux64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-28_h59b9bed_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.1.0-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libcap-2.71-h39aace5_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-26_linux64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-28_he106b2a_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libcrc32c-1.1.2-h9c3ff4c_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.11.1-h332b0f4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libdb-6.2.32-h9c3ff4c_0.tar.bz2 @@ -137,7 +137,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.67.1-h25350d4_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-hd590300_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-26_linux64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-28_h7ac8fdf_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.3-hb9d3cd8_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libmad-0.15.1b-h0b41bf4_1001.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda @@ -172,12 +172,12 @@ 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-25.1.0.dev2025012705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025012705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025012705-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025012905-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025012905-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025012905-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012905-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-25.1.0.dev2025012705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025012905-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_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.15-py312h98912ed_1.conda @@ -330,7 +330,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/dav1d-1.2.1-h31becfc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/dbus-1.13.6-h12b9eeb_3.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.18-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda @@ -387,12 +387,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libasprintf-0.22.5-h87f4aca_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libasprintf-devel-0.22.5-h87f4aca_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libavif16-1.1.1-h3b0c220_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-26_linuxaarch64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-28_h1a9f1db_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlicommon-1.1.0-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlidec-1.1.0-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlienc-1.1.0-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcap-2.71-h51d75a7_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-26_linuxaarch64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-28_hab92f65_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcrc32c-1.1.2-h01db608_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcurl-8.11.1-h6702fde_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libdb-6.2.32-h01db608_0.tar.bz2 @@ -418,7 +418,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgrpc-1.67.1-hf7ccdd3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libiconv-1.17-h31becfc_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libjpeg-turbo-3.0.0-h31becfc_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-26_linuxaarch64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-28_h411afd4_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.3-h86ecc28_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libmad-0.15.1b-hb4cce97_1001.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnghttp2-1.64.0-hc8609a4_0.conda @@ -453,12 +453,12 @@ 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-25.1.0.dev2025012705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025012705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025012705-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025012905-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025012905-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025012905-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012905-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-25.1.0.dev2025012705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025012905-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_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.15-py312hdd3e373_1.conda @@ -607,7 +607,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/dav1d-1.2.1-hb547adb_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.18-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda @@ -660,11 +660,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libasprintf-0.22.5-h8414b35_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libasprintf-devel-0.22.5-h8414b35_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libavif16-1.1.1-h45b7238_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-26_osxarm64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-28_h10e41b3_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.1.0-hd74edd7_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.1.0-hd74edd7_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlienc-1.1.0-hd74edd7_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-26_osxarm64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-28_hb3479ef_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcrc32c-1.1.2-hbdafb3b_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.11.1-h73640d1_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda @@ -687,7 +687,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libintl-0.22.5-h8414b35_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libintl-devel-0.22.5-h8414b35_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.0.0-hb547adb_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-26_osxarm64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-28_hc9a63f6_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.3-h39f12f2_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libmad-0.15.1b-h1a8c8d9_1001.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.64.0-h6d7220d_0.conda @@ -717,12 +717,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-25.1.0.dev2025012705-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025012705-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025012705-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025012905-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025012905-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025012905-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012905-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-25.1.0.dev2025012705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025012905-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 @@ -2256,16 +2256,16 @@ packages: license_family: GPL size: 672759 timestamp: 1640113663539 -- conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhd8ed1ab_1.conda - sha256: a20ebf2c9b02a6eb32412ceb5c4cffaae49417db7e75414a76417538293a9402 - md5: eaef2e94d5bd76f758545d172c1fda67 +- conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.18-pyhd8ed1ab_0.conda + sha256: d614bcff10696f1efc714df07651b50bf3808401fcc03814309ecec242cc8870 + md5: 0cef44b1754ae4d6924ac0eef6b9fdbe depends: - python >=3.9 - wrapt <2,>=1.10 license: MIT license_family: MIT - size: 14297 - timestamp: 1733662697343 + size: 14382 + timestamp: 1737987072859 - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda sha256: 4ff20c6be028be2825235631c45d9e4a75bca1de65f8840c02dfb28ea0137c45 md5: 5e4f3466526c52bc9af2d2353a1460bd @@ -3765,60 +3765,57 @@ packages: license_family: BSD size: 96781 timestamp: 1730268761553 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-26_linux64_openblas.conda - build_number: 26 - sha256: 30bd658682b124243f8e52d8edf8a19e7be1bc31e4fe4baec30a64002dc8cd0c - md5: ac52800af2e0c0e7dac770b435ce768a +- conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-28_h59b9bed_openblas.conda + build_number: 28 + sha256: 93fbcf2800b859b7ca5add3ab5d3aa11c6a6ff4b942a1cea4bf644f78488edb8 + md5: 73e2a99fdeb8531d50168987378fda8a depends: - libopenblas >=0.3.28,<0.3.29.0a0 - libopenblas >=0.3.28,<1.0a0 constrains: - - libcblas 3.9.0 26_linux64_openblas - - liblapack 3.9.0 26_linux64_openblas - - liblapacke 3.9.0 26_linux64_openblas - - blas * openblas + - libcblas =3.9.0=28*_openblas + - blas =2.128=openblas + - liblapack =3.9.0=28*_openblas + - liblapacke =3.9.0=28*_openblas arch: x86_64 platform: linux license: BSD-3-Clause - license_family: BSD - size: 16393 - timestamp: 1734432564346 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-26_linuxaarch64_openblas.conda - build_number: 26 - sha256: df6d8ee34d45cf35609ecdd55c1ff03e32e0cd87ae41ebe4ef3747a8e09ead4d - md5: 8d900b7079a00969d70305e9aad550b7 + size: 16621 + timestamp: 1738114033763 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-28_h1a9f1db_openblas.conda + build_number: 28 + sha256: a50dc7ed1f49789aab4ffb560d9a46b5dc3f059a925282f699c1a96fa566a1a0 + md5: 88dfbb3875d62b431aa676b4a54734bf depends: - libopenblas >=0.3.28,<0.3.29.0a0 - libopenblas >=0.3.28,<1.0a0 constrains: - - blas * openblas - - liblapacke 3.9.0 26_linuxaarch64_openblas - - libcblas 3.9.0 26_linuxaarch64_openblas - - liblapack 3.9.0 26_linuxaarch64_openblas + - liblapack =3.9.0=28*_openblas + - libcblas =3.9.0=28*_openblas + - blas =2.128=openblas + - liblapacke =3.9.0=28*_openblas arch: aarch64 platform: linux license: BSD-3-Clause - license_family: BSD - size: 16477 - timestamp: 1734432576699 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-26_osxarm64_openblas.conda - build_number: 26 - sha256: 597f9c3779caa979c8c6abbb3ba8c7191b84e1a910d6b0d10e5faf35284c450c - md5: 21be102c9ae80a67ba7de23b129aa7f6 + size: 16697 + timestamp: 1738114082682 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-28_h10e41b3_openblas.conda + build_number: 28 + sha256: 5bea855a1a7435ce2238535aa4b13db8af8ee301d99a42b083b63fa64c1ea144 + md5: 166166d84a0e9571dc50210baf993b46 depends: - libopenblas >=0.3.28,<0.3.29.0a0 - libopenblas >=0.3.28,<1.0a0 constrains: - - liblapack 3.9.0 26_osxarm64_openblas - - liblapacke 3.9.0 26_osxarm64_openblas - - libcblas 3.9.0 26_osxarm64_openblas - - blas * openblas + - liblapack =3.9.0=28*_openblas + - liblapacke =3.9.0=28*_openblas + - blas =2.128=openblas + - libcblas =3.9.0=28*_openblas arch: arm64 platform: osx license: BSD-3-Clause - license_family: BSD - size: 16714 - timestamp: 1734433054681 + size: 16840 + timestamp: 1738114389937 - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hb9d3cd8_2.conda sha256: d9db2de60ea917298e658143354a530e9ca5f9c63471c65cf47ab39fd2f429e3 md5: 41b599ed2b02abcfdd84302bff174b23 @@ -3952,54 +3949,51 @@ packages: license_family: BSD size: 106877 timestamp: 1729940936697 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-26_linux64_openblas.conda - build_number: 26 - sha256: 9c74e536c9bc868e356ffd43f81c2cb398aec84b40fcadc312315b164a5500ee - md5: ebcc5f37a435aa3c19640533c82f8d76 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-28_he106b2a_openblas.conda + build_number: 28 + sha256: de293e117db53e5d78b579136509c35a5e4ad11529c05f9af83cf89be4d30de1 + md5: 4e20a1c00b4e8a984aac0f6cce59e3ac depends: - - libblas 3.9.0 26_linux64_openblas + - libblas 3.9.0 28_h59b9bed_openblas constrains: - - liblapack 3.9.0 26_linux64_openblas - - liblapacke 3.9.0 26_linux64_openblas - - blas * openblas + - blas =2.128=openblas + - liblapack =3.9.0=28*_openblas + - liblapacke =3.9.0=28*_openblas arch: x86_64 platform: linux license: BSD-3-Clause - license_family: BSD - size: 16336 - timestamp: 1734432570482 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-26_linuxaarch64_openblas.conda - build_number: 26 - sha256: 521e78be0c4170f229c43e1a6c94337a72db3ebcbe6e5960f8413aa438dcb8f9 - md5: d77f943ae4083f3aeddca698f2d28262 - depends: - - libblas 3.9.0 26_linuxaarch64_openblas + size: 16539 + timestamp: 1738114043618 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-28_hab92f65_openblas.conda + build_number: 28 + sha256: ed62f13a85726f568e17ad569b5cc01a49a6c7bd334802cf1c1b15e9d10e7e93 + md5: 8cff453f547365131be5647c7680ac6d + depends: + - libblas 3.9.0 28_h1a9f1db_openblas constrains: - - blas * openblas - - liblapacke 3.9.0 26_linuxaarch64_openblas - - liblapack 3.9.0 26_linuxaarch64_openblas + - liblapack =3.9.0=28*_openblas + - blas =2.128=openblas + - liblapacke =3.9.0=28*_openblas arch: aarch64 platform: linux license: BSD-3-Clause - license_family: BSD - size: 16398 - timestamp: 1734432580937 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-26_osxarm64_openblas.conda - build_number: 26 - sha256: 27a29ef6b2fd2179bc3a0bb9db351f078ba140ca10485dca147c399639f84c93 - md5: a0e9980fe12d42f6d0c0ec009f67e948 - depends: - - libblas 3.9.0 26_osxarm64_openblas + size: 16655 + timestamp: 1738114088527 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-28_hb3479ef_openblas.conda + build_number: 28 + sha256: f08adea59381babb3568e6d23e52aff874cbc25f299821647ab1127d1e1332ca + md5: 30942dea911ce333765003a8adec4e8a + depends: + - libblas 3.9.0 28_h10e41b3_openblas constrains: - - liblapack 3.9.0 26_osxarm64_openblas - - liblapacke 3.9.0 26_osxarm64_openblas - - blas * openblas + - blas =2.128=openblas + - liblapacke =3.9.0=28*_openblas + - liblapack =3.9.0=28*_openblas arch: arm64 platform: osx license: BSD-3-Clause - license_family: BSD - size: 16628 - timestamp: 1734433061517 + size: 16788 + timestamp: 1738114399962 - conda: https://conda.anaconda.org/conda-forge/linux-64/libcrc32c-1.1.2-h9c3ff4c_0.tar.bz2 sha256: fd1d153962764433fe6233f34a72cdeed5dcf8a883a85769e8295ce940b5b0c5 md5: c965a5aa0d5c1c37ffc62dff36e28400 @@ -4965,54 +4959,51 @@ packages: license: IJG AND BSD-3-Clause AND Zlib size: 547541 timestamp: 1694475104253 -- conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-26_linux64_openblas.conda - build_number: 26 - sha256: b76458c36331376911e0f98fa68109e02f4d5e5ebfffa79587ac69cef748bba1 - md5: 3792604c43695d6a273bc5faaac47d48 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-28_h7ac8fdf_openblas.conda + build_number: 28 + sha256: 9530e6840690b78360946390a1d29624734a6b624f02c26631fb451592cbb8ef + md5: 069f40bfbf1dc55c83ddb07fc6a6ef8d depends: - - libblas 3.9.0 26_linux64_openblas + - libblas 3.9.0 28_h59b9bed_openblas constrains: - - libcblas 3.9.0 26_linux64_openblas - - liblapacke 3.9.0 26_linux64_openblas - - blas * openblas + - libcblas =3.9.0=28*_openblas + - blas =2.128=openblas + - liblapacke =3.9.0=28*_openblas arch: x86_64 platform: linux license: BSD-3-Clause - license_family: BSD - size: 16338 - timestamp: 1734432576650 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-26_linuxaarch64_openblas.conda - build_number: 26 - sha256: a42bd01498efe2ccf6d08d56ac3cbd3ceab79e06699ff5aac3da8e45a66738f7 - md5: a5d4e18876393633da62fd8492c00156 - depends: - - libblas 3.9.0 26_linuxaarch64_openblas + size: 16553 + timestamp: 1738114053556 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-28_h411afd4_openblas.conda + build_number: 28 + sha256: 1290ce1071a586e22bdd7d8f4c48000cc0005f0a67660be150d1ea5c6092129f + md5: bc4c5ee31476521e202356b56bba6077 + depends: + - libblas 3.9.0 28_h1a9f1db_openblas constrains: - - blas * openblas - - liblapacke 3.9.0 26_linuxaarch64_openblas - - libcblas 3.9.0 26_linuxaarch64_openblas + - liblapacke =3.9.0=28*_openblas + - libcblas =3.9.0=28*_openblas + - blas =2.128=openblas arch: aarch64 platform: linux license: BSD-3-Clause - license_family: BSD - size: 16403 - timestamp: 1734432585123 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-26_osxarm64_openblas.conda - build_number: 26 - sha256: dd6d9a21e672aee4332f019c8229ce70cf5eaf6c2f4cbd1443b105fb66c00dc5 - md5: cebad79038a75cfd28fa90d147a2d34d - depends: - - libblas 3.9.0 26_osxarm64_openblas + size: 16637 + timestamp: 1738114094310 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-28_hc9a63f6_openblas.conda + build_number: 28 + sha256: 79c75a02bff20f8b001e6aecfee8d22a51552c3986e7037fca68e5ed071cc213 + md5: 45f26652530b558c21083ceb7adaf273 + depends: + - libblas 3.9.0 28_h10e41b3_openblas constrains: - - liblapacke 3.9.0 26_osxarm64_openblas - - libcblas 3.9.0 26_osxarm64_openblas - - blas * openblas + - blas =2.128=openblas + - liblapacke =3.9.0=28*_openblas + - libcblas =3.9.0=28*_openblas arch: arm64 platform: osx license: BSD-3-Clause - license_family: BSD - size: 16624 - timestamp: 1734433068120 + size: 16793 + timestamp: 1738114407021 - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.3-hb9d3cd8_1.conda sha256: e6e425252f3839e2756e4af1ea2074dffd3396c161bf460629f9dfd6a65f15c6 md5: 2ecf2f1c7e4e21fcfe6423a51a992d84 @@ -6290,47 +6281,47 @@ packages: license_family: BSD size: 24048 timestamp: 1733219945697 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025012705-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025012905-release.conda noarch: python - sha256: 858899a14213e31412668b979537779ddaf730cad15593c3be3602d30d925cd3 - md5: 0788ab9a7003126a6d7285d3fb912104 + sha256: 128e24b31c4d5852e70066a0d29b2b72c5fa442541a51edeb51c84553b078c21 + md5: c74a71227a86ff11c0b1f454df78753a depends: - - max-core ==25.1.0.dev2025012705 release - - max-python >=25.1.0.dev2025012705,<26.0a0 - - mojo-jupyter ==25.1.0.dev2025012705 release - - mblack ==25.1.0.dev2025012705 release + - max-core ==25.1.0.dev2025012905 release + - max-python >=25.1.0.dev2025012905,<26.0a0 + - mojo-jupyter ==25.1.0.dev2025012905 release + - mblack ==25.1.0.dev2025012905 release license: LicenseRef-Modular-Proprietary - size: 9922 - timestamp: 1737955039963 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025012705-release.conda - sha256: d860e83c54d3824879bb5ae313ec290164a00c6aa33b3b6a613a52f5533f7f87 - md5: c2ef9257cbac5945ec0269b52400177b + size: 9917 + timestamp: 1738127836739 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025012905-release.conda + sha256: 912bd4ab637f60a1da328f0ec8502737e37ce4fdbbeede25c6c40b58a808a34d + md5: 4ffb2fe54ee89169f96d8c74292af542 depends: - - mblack ==25.1.0.dev2025012705 release + - mblack ==25.1.0.dev2025012905 release license: LicenseRef-Modular-Proprietary - size: 243456501 - timestamp: 1737955017859 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025012705-release.conda - sha256: 911fa0d215f2aef388f1b69600312c84fe8aa62300e8090e4970ede5519eeff3 - md5: 85e8cd9ee3ac21238a923b938e997c48 + size: 243535907 + timestamp: 1738127911507 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025012905-release.conda + sha256: e1ccfb768b5cc84198eb0c8c8d273d4ce6cda149427479089bc484440105e67d + md5: 5a919171033c9dfe518aef703b7ec3d8 depends: - - mblack ==25.1.0.dev2025012705 release + - mblack ==25.1.0.dev2025012905 release license: LicenseRef-Modular-Proprietary - size: 245946155 - timestamp: 1737955039961 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025012705-release.conda - sha256: f338470aae98f63c08c9dda7d9b94c559a21055509c2ed924cb55441c8b60ba9 - md5: 44cfd5ca1dc48bab35146702380ac083 + size: 246085619 + timestamp: 1738127836737 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025012905-release.conda + sha256: 58573782ee40eb77b183e93988590d11184302e8cc257673cb72745b0447d204 + md5: 9dc83277bf38cbd419f52909847ed796 depends: - - mblack ==25.1.0.dev2025012705 release + - mblack ==25.1.0.dev2025012905 release license: LicenseRef-Modular-Proprietary - size: 205169482 - timestamp: 1737956267686 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025012705-3.12release.conda - sha256: 0a18a085825c9fa2bf3e575310837f3dbdddc96b7aaea8b651e3eae61c02530f - md5: 42d30c788187591cf4b61d3ef4129e38 + size: 205298533 + timestamp: 1738128880810 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025012905-3.12release.conda + sha256: 1cb5820b79790fbcdf69a17d3f2de668e335afda26d4896dc5d8df7495c3f2fc + md5: 4c8cd5b0bb94e4b0566c66614882417c depends: - - max-core ==25.1.0.dev2025012705 release + - max-core ==25.1.0.dev2025012905 release - python 3.12.* - fastapi - httpx @@ -6351,13 +6342,13 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 120669382 - timestamp: 1737955017868 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025012705-3.12release.conda - sha256: 8372666a6ad71409d0ed7336e1b955dd86d1ceb3f9b96c0a098cb59a802b688e - md5: 222a46c2286742510e8ee05ad24f2523 + size: 120728426 + timestamp: 1738127911515 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025012905-3.12release.conda + sha256: 569a53d099bf8fe518e3148f6bcad3d499d8eaeeb96587c0e06e792f51161553 + md5: c5094829938eded41b20717d7f135a3e depends: - - max-core ==25.1.0.dev2025012705 release + - max-core ==25.1.0.dev2025012905 release - python 3.12.* - fastapi - httpx @@ -6378,13 +6369,13 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 123185570 - timestamp: 1737955039973 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025012705-3.12release.conda - sha256: c4894d84b65bc2e997f5c7fa10027f276b481bbb2ded68f34bd74bf1e195076a - md5: fcb3723a6dbf99dd5d6ab6895e97de58 + size: 123278531 + timestamp: 1738127836748 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025012905-3.12release.conda + sha256: c4629b7ca8859e4b1f736de64721c9998ae1b2f2f183ab496cc0ab5faa053c00 + md5: 411d19e9c18c3d8c665f765041cd9a3e depends: - - max-core ==25.1.0.dev2025012705 release + - max-core ==25.1.0.dev2025012905 release - python 3.12.* - fastapi - httpx @@ -6405,12 +6396,12 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 106061856 - timestamp: 1737956267689 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012705-release.conda + size: 106174079 + timestamp: 1738128880813 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012905-release.conda noarch: python - sha256: 90cc368b1a6ceac15f44c67517c1af7fe1dc5dce40b92f91f1830be2f6a66fb9 - md5: 15ff6d8c842fbce739084f0bbd23bd27 + sha256: 14bb3045350a288f80df5b386555586d8e035c3f7454ba8214f73cfeace26887 + md5: ee06a37bf7cb1d8ef7b646b6e7ad2bfd depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -6420,8 +6411,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130811 - timestamp: 1737955039968 + size: 130809 + timestamp: 1738127836744 - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda sha256: 78c1bbe1723449c52b7a9df1af2ee5f005209f67e40b6e1d3c7619127c43b1c7 md5: 592132998493b3ff25fd7479396e8351 @@ -6431,18 +6422,18 @@ packages: license_family: MIT size: 14465 timestamp: 1733255681319 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025012705-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025012905-release.conda noarch: python - sha256: fb3ed00e9f7df548142bb0afa9edf654413f61d1b39c6b1cbfc9cf2fbb6e04f9 - md5: 961e0d8087b0ab6e38d0e1a518438827 + sha256: 00c9bbee63d4d9d18235be72c23e10a8c63eeabef853575f4fdfa3cc4df9ac83 + md5: 646e77b26ddf8c7aba7d2a3ac21631a6 depends: - - max-core ==25.1.0.dev2025012705 release + - max-core ==25.1.0.dev2025012905 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22933 - timestamp: 1737955039968 + size: 22932 + timestamp: 1738127836744 - conda: https://conda.anaconda.org/conda-forge/linux-64/mpg123-1.32.9-hc50e24c_0.conda sha256: 39c4700fb3fbe403a77d8cc27352fa72ba744db487559d5d44bf8411bb4ea200 md5: c7f302fd11eeb0987a6a5e1f3aed6a21 diff --git a/examples/magic.lock b/examples/magic.lock index 4676795e18..b56e6d8e67 100644 --- a/examples/magic.lock +++ b/examples/magic.lock @@ -43,7 +43,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.18-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda @@ -81,11 +81,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-19.0.0-hcb10f89_8_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-19.0.0-hcb10f89_8_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-19.0.0-h08228c5_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-26_linux64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-28_h59b9bed_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.1.0-hb9d3cd8_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-26_linux64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-28_he106b2a_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libcrc32c-1.1.2-h9c3ff4c_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.11.1-h332b0f4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.23-h4ddbbb0_0.conda @@ -104,7 +104,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.67.1-h25350d4_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-hd590300_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-26_linux64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-28_h7ac8fdf_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.3-hb9d3cd8_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda @@ -133,12 +133,12 @@ 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-25.1.0.dev2025012705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025012705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025012705-3.11release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025012905-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025012905-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025012905-3.11release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012905-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-25.1.0.dev2025012705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025012905-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 @@ -265,7 +265,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.18-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda @@ -304,11 +304,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-19.0.0-h3b568fd_8_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-19.0.0-h3b568fd_8_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-19.0.0-h1e9d426_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-26_linuxaarch64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-28_h1a9f1db_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlicommon-1.1.0-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlidec-1.1.0-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlienc-1.1.0-h86ecc28_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-26_linuxaarch64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-28_hab92f65_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcrc32c-1.1.2-h01db608_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcurl-8.11.1-h6702fde_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libdeflate-1.23-h5e3c512_0.conda @@ -327,7 +327,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgrpc-1.67.1-hf7ccdd3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libiconv-1.17-h31becfc_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libjpeg-turbo-3.0.0-h31becfc_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-26_linuxaarch64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-28_h411afd4_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.3-h86ecc28_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnghttp2-1.64.0-hc8609a4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda @@ -356,12 +356,12 @@ 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-25.1.0.dev2025012705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025012705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025012705-3.11release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025012905-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025012905-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025012905-3.11release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012905-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-25.1.0.dev2025012705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025012905-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 @@ -487,7 +487,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.18-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda @@ -524,11 +524,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-19.0.0-hf07054f_8_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-19.0.0-hf07054f_8_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-19.0.0-h4239455_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-26_osxarm64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-28_h10e41b3_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.1.0-hd74edd7_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.1.0-hd74edd7_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlienc-1.1.0-hd74edd7_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-26_osxarm64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-28_hb3479ef_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcrc32c-1.1.2-hbdafb3b_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.11.1-h73640d1_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda @@ -545,7 +545,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgrpc-1.67.1-h0a426d6_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.17-h0d3ecfb_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.0.0-hb547adb_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-26_osxarm64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-28_hc9a63f6_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.3-h39f12f2_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.64.0-h6d7220d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.28-openmp_hf332438_1.conda @@ -570,12 +570,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-25.1.0.dev2025012705-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025012705-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025012705-3.11release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025012905-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025012905-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025012905-3.11release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012905-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-25.1.0.dev2025012705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025012905-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 @@ -1885,16 +1885,16 @@ packages: license_family: Apache size: 347303 timestamp: 1691593908658 -- conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhd8ed1ab_1.conda - sha256: a20ebf2c9b02a6eb32412ceb5c4cffaae49417db7e75414a76417538293a9402 - md5: eaef2e94d5bd76f758545d172c1fda67 +- conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.18-pyhd8ed1ab_0.conda + sha256: d614bcff10696f1efc714df07651b50bf3808401fcc03814309ecec242cc8870 + md5: 0cef44b1754ae4d6924ac0eef6b9fdbe depends: - python >=3.9 - wrapt <2,>=1.10 license: MIT license_family: MIT - size: 14297 - timestamp: 1733662697343 + size: 14382 + timestamp: 1737987072859 - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda sha256: 4ff20c6be028be2825235631c45d9e4a75bca1de65f8840c02dfb28ea0137c45 md5: 5e4f3466526c52bc9af2d2353a1460bd @@ -2848,60 +2848,57 @@ packages: license_family: APACHE size: 449672 timestamp: 1737807386331 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-26_linux64_openblas.conda - build_number: 26 - sha256: 30bd658682b124243f8e52d8edf8a19e7be1bc31e4fe4baec30a64002dc8cd0c - md5: ac52800af2e0c0e7dac770b435ce768a +- conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-28_h59b9bed_openblas.conda + build_number: 28 + sha256: 93fbcf2800b859b7ca5add3ab5d3aa11c6a6ff4b942a1cea4bf644f78488edb8 + md5: 73e2a99fdeb8531d50168987378fda8a depends: - libopenblas >=0.3.28,<0.3.29.0a0 - libopenblas >=0.3.28,<1.0a0 constrains: - - libcblas 3.9.0 26_linux64_openblas - - liblapack 3.9.0 26_linux64_openblas - - liblapacke 3.9.0 26_linux64_openblas - - blas * openblas + - libcblas =3.9.0=28*_openblas + - blas =2.128=openblas + - liblapack =3.9.0=28*_openblas + - liblapacke =3.9.0=28*_openblas arch: x86_64 platform: linux license: BSD-3-Clause - license_family: BSD - size: 16393 - timestamp: 1734432564346 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-26_linuxaarch64_openblas.conda - build_number: 26 - sha256: df6d8ee34d45cf35609ecdd55c1ff03e32e0cd87ae41ebe4ef3747a8e09ead4d - md5: 8d900b7079a00969d70305e9aad550b7 + size: 16621 + timestamp: 1738114033763 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-28_h1a9f1db_openblas.conda + build_number: 28 + sha256: a50dc7ed1f49789aab4ffb560d9a46b5dc3f059a925282f699c1a96fa566a1a0 + md5: 88dfbb3875d62b431aa676b4a54734bf depends: - libopenblas >=0.3.28,<0.3.29.0a0 - libopenblas >=0.3.28,<1.0a0 constrains: - - blas * openblas - - liblapacke 3.9.0 26_linuxaarch64_openblas - - libcblas 3.9.0 26_linuxaarch64_openblas - - liblapack 3.9.0 26_linuxaarch64_openblas + - liblapack =3.9.0=28*_openblas + - libcblas =3.9.0=28*_openblas + - blas =2.128=openblas + - liblapacke =3.9.0=28*_openblas arch: aarch64 platform: linux license: BSD-3-Clause - license_family: BSD - size: 16477 - timestamp: 1734432576699 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-26_osxarm64_openblas.conda - build_number: 26 - sha256: 597f9c3779caa979c8c6abbb3ba8c7191b84e1a910d6b0d10e5faf35284c450c - md5: 21be102c9ae80a67ba7de23b129aa7f6 + size: 16697 + timestamp: 1738114082682 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-28_h10e41b3_openblas.conda + build_number: 28 + sha256: 5bea855a1a7435ce2238535aa4b13db8af8ee301d99a42b083b63fa64c1ea144 + md5: 166166d84a0e9571dc50210baf993b46 depends: - libopenblas >=0.3.28,<0.3.29.0a0 - libopenblas >=0.3.28,<1.0a0 constrains: - - liblapack 3.9.0 26_osxarm64_openblas - - liblapacke 3.9.0 26_osxarm64_openblas - - libcblas 3.9.0 26_osxarm64_openblas - - blas * openblas + - liblapack =3.9.0=28*_openblas + - liblapacke =3.9.0=28*_openblas + - blas =2.128=openblas + - libcblas =3.9.0=28*_openblas arch: arm64 platform: osx license: BSD-3-Clause - license_family: BSD - size: 16714 - timestamp: 1734433054681 + size: 16840 + timestamp: 1738114389937 - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hb9d3cd8_2.conda sha256: d9db2de60ea917298e658143354a530e9ca5f9c63471c65cf47ab39fd2f429e3 md5: 41b599ed2b02abcfdd84302bff174b23 @@ -3010,54 +3007,51 @@ packages: license_family: MIT size: 279644 timestamp: 1725268003553 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-26_linux64_openblas.conda - build_number: 26 - sha256: 9c74e536c9bc868e356ffd43f81c2cb398aec84b40fcadc312315b164a5500ee - md5: ebcc5f37a435aa3c19640533c82f8d76 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-28_he106b2a_openblas.conda + build_number: 28 + sha256: de293e117db53e5d78b579136509c35a5e4ad11529c05f9af83cf89be4d30de1 + md5: 4e20a1c00b4e8a984aac0f6cce59e3ac depends: - - libblas 3.9.0 26_linux64_openblas + - libblas 3.9.0 28_h59b9bed_openblas constrains: - - liblapack 3.9.0 26_linux64_openblas - - liblapacke 3.9.0 26_linux64_openblas - - blas * openblas + - blas =2.128=openblas + - liblapack =3.9.0=28*_openblas + - liblapacke =3.9.0=28*_openblas arch: x86_64 platform: linux license: BSD-3-Clause - license_family: BSD - size: 16336 - timestamp: 1734432570482 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-26_linuxaarch64_openblas.conda - build_number: 26 - sha256: 521e78be0c4170f229c43e1a6c94337a72db3ebcbe6e5960f8413aa438dcb8f9 - md5: d77f943ae4083f3aeddca698f2d28262 - depends: - - libblas 3.9.0 26_linuxaarch64_openblas + size: 16539 + timestamp: 1738114043618 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-28_hab92f65_openblas.conda + build_number: 28 + sha256: ed62f13a85726f568e17ad569b5cc01a49a6c7bd334802cf1c1b15e9d10e7e93 + md5: 8cff453f547365131be5647c7680ac6d + depends: + - libblas 3.9.0 28_h1a9f1db_openblas constrains: - - blas * openblas - - liblapacke 3.9.0 26_linuxaarch64_openblas - - liblapack 3.9.0 26_linuxaarch64_openblas + - liblapack =3.9.0=28*_openblas + - blas =2.128=openblas + - liblapacke =3.9.0=28*_openblas arch: aarch64 platform: linux license: BSD-3-Clause - license_family: BSD - size: 16398 - timestamp: 1734432580937 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-26_osxarm64_openblas.conda - build_number: 26 - sha256: 27a29ef6b2fd2179bc3a0bb9db351f078ba140ca10485dca147c399639f84c93 - md5: a0e9980fe12d42f6d0c0ec009f67e948 - depends: - - libblas 3.9.0 26_osxarm64_openblas + size: 16655 + timestamp: 1738114088527 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-28_hb3479ef_openblas.conda + build_number: 28 + sha256: f08adea59381babb3568e6d23e52aff874cbc25f299821647ab1127d1e1332ca + md5: 30942dea911ce333765003a8adec4e8a + depends: + - libblas 3.9.0 28_h10e41b3_openblas constrains: - - liblapack 3.9.0 26_osxarm64_openblas - - liblapacke 3.9.0 26_osxarm64_openblas - - blas * openblas + - blas =2.128=openblas + - liblapacke =3.9.0=28*_openblas + - liblapack =3.9.0=28*_openblas arch: arm64 platform: osx license: BSD-3-Clause - license_family: BSD - size: 16628 - timestamp: 1734433061517 + size: 16788 + timestamp: 1738114399962 - conda: https://conda.anaconda.org/conda-forge/linux-64/libcrc32c-1.1.2-h9c3ff4c_0.tar.bz2 sha256: fd1d153962764433fe6233f34a72cdeed5dcf8a883a85769e8295ce940b5b0c5 md5: c965a5aa0d5c1c37ffc62dff36e28400 @@ -3759,54 +3753,51 @@ packages: license: IJG AND BSD-3-Clause AND Zlib size: 547541 timestamp: 1694475104253 -- conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-26_linux64_openblas.conda - build_number: 26 - sha256: b76458c36331376911e0f98fa68109e02f4d5e5ebfffa79587ac69cef748bba1 - md5: 3792604c43695d6a273bc5faaac47d48 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-28_h7ac8fdf_openblas.conda + build_number: 28 + sha256: 9530e6840690b78360946390a1d29624734a6b624f02c26631fb451592cbb8ef + md5: 069f40bfbf1dc55c83ddb07fc6a6ef8d depends: - - libblas 3.9.0 26_linux64_openblas + - libblas 3.9.0 28_h59b9bed_openblas constrains: - - libcblas 3.9.0 26_linux64_openblas - - liblapacke 3.9.0 26_linux64_openblas - - blas * openblas + - libcblas =3.9.0=28*_openblas + - blas =2.128=openblas + - liblapacke =3.9.0=28*_openblas arch: x86_64 platform: linux license: BSD-3-Clause - license_family: BSD - size: 16338 - timestamp: 1734432576650 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-26_linuxaarch64_openblas.conda - build_number: 26 - sha256: a42bd01498efe2ccf6d08d56ac3cbd3ceab79e06699ff5aac3da8e45a66738f7 - md5: a5d4e18876393633da62fd8492c00156 - depends: - - libblas 3.9.0 26_linuxaarch64_openblas + size: 16553 + timestamp: 1738114053556 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-28_h411afd4_openblas.conda + build_number: 28 + sha256: 1290ce1071a586e22bdd7d8f4c48000cc0005f0a67660be150d1ea5c6092129f + md5: bc4c5ee31476521e202356b56bba6077 + depends: + - libblas 3.9.0 28_h1a9f1db_openblas constrains: - - blas * openblas - - liblapacke 3.9.0 26_linuxaarch64_openblas - - libcblas 3.9.0 26_linuxaarch64_openblas + - liblapacke =3.9.0=28*_openblas + - libcblas =3.9.0=28*_openblas + - blas =2.128=openblas arch: aarch64 platform: linux license: BSD-3-Clause - license_family: BSD - size: 16403 - timestamp: 1734432585123 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-26_osxarm64_openblas.conda - build_number: 26 - sha256: dd6d9a21e672aee4332f019c8229ce70cf5eaf6c2f4cbd1443b105fb66c00dc5 - md5: cebad79038a75cfd28fa90d147a2d34d - depends: - - libblas 3.9.0 26_osxarm64_openblas + size: 16637 + timestamp: 1738114094310 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-28_hc9a63f6_openblas.conda + build_number: 28 + sha256: 79c75a02bff20f8b001e6aecfee8d22a51552c3986e7037fca68e5ed071cc213 + md5: 45f26652530b558c21083ceb7adaf273 + depends: + - libblas 3.9.0 28_h10e41b3_openblas constrains: - - liblapacke 3.9.0 26_osxarm64_openblas - - libcblas 3.9.0 26_osxarm64_openblas - - blas * openblas + - blas =2.128=openblas + - liblapacke =3.9.0=28*_openblas + - libcblas =3.9.0=28*_openblas arch: arm64 platform: osx license: BSD-3-Clause - license_family: BSD - size: 16624 - timestamp: 1734433068120 + size: 16793 + timestamp: 1738114407021 - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.3-hb9d3cd8_1.conda sha256: e6e425252f3839e2756e4af1ea2074dffd3396c161bf460629f9dfd6a65f15c6 md5: 2ecf2f1c7e4e21fcfe6423a51a992d84 @@ -4868,47 +4859,47 @@ packages: license_family: BSD size: 24976 timestamp: 1733219849253 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025012705-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025012905-release.conda noarch: python - sha256: 858899a14213e31412668b979537779ddaf730cad15593c3be3602d30d925cd3 - md5: 0788ab9a7003126a6d7285d3fb912104 + sha256: 128e24b31c4d5852e70066a0d29b2b72c5fa442541a51edeb51c84553b078c21 + md5: c74a71227a86ff11c0b1f454df78753a depends: - - max-core ==25.1.0.dev2025012705 release - - max-python >=25.1.0.dev2025012705,<26.0a0 - - mojo-jupyter ==25.1.0.dev2025012705 release - - mblack ==25.1.0.dev2025012705 release + - max-core ==25.1.0.dev2025012905 release + - max-python >=25.1.0.dev2025012905,<26.0a0 + - mojo-jupyter ==25.1.0.dev2025012905 release + - mblack ==25.1.0.dev2025012905 release license: LicenseRef-Modular-Proprietary - size: 9922 - timestamp: 1737955039963 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025012705-release.conda - sha256: d860e83c54d3824879bb5ae313ec290164a00c6aa33b3b6a613a52f5533f7f87 - md5: c2ef9257cbac5945ec0269b52400177b + size: 9917 + timestamp: 1738127836739 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025012905-release.conda + sha256: 912bd4ab637f60a1da328f0ec8502737e37ce4fdbbeede25c6c40b58a808a34d + md5: 4ffb2fe54ee89169f96d8c74292af542 depends: - - mblack ==25.1.0.dev2025012705 release + - mblack ==25.1.0.dev2025012905 release license: LicenseRef-Modular-Proprietary - size: 243456501 - timestamp: 1737955017859 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025012705-release.conda - sha256: 911fa0d215f2aef388f1b69600312c84fe8aa62300e8090e4970ede5519eeff3 - md5: 85e8cd9ee3ac21238a923b938e997c48 + size: 243535907 + timestamp: 1738127911507 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025012905-release.conda + sha256: e1ccfb768b5cc84198eb0c8c8d273d4ce6cda149427479089bc484440105e67d + md5: 5a919171033c9dfe518aef703b7ec3d8 depends: - - mblack ==25.1.0.dev2025012705 release + - mblack ==25.1.0.dev2025012905 release license: LicenseRef-Modular-Proprietary - size: 245946155 - timestamp: 1737955039961 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025012705-release.conda - sha256: f338470aae98f63c08c9dda7d9b94c559a21055509c2ed924cb55441c8b60ba9 - md5: 44cfd5ca1dc48bab35146702380ac083 + size: 246085619 + timestamp: 1738127836737 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025012905-release.conda + sha256: 58573782ee40eb77b183e93988590d11184302e8cc257673cb72745b0447d204 + md5: 9dc83277bf38cbd419f52909847ed796 depends: - - mblack ==25.1.0.dev2025012705 release + - mblack ==25.1.0.dev2025012905 release license: LicenseRef-Modular-Proprietary - size: 205169482 - timestamp: 1737956267686 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025012705-3.11release.conda - sha256: 0d25f1c446705f5719263b8c06af9ce04ff8cfbdc1693d0e2d4fc6cc42e2bcbd - md5: f72d2bd60c1d15d3b477c6be3eabfa93 + size: 205298533 + timestamp: 1738128880810 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025012905-3.11release.conda + sha256: 064de76e06b11b938f18d2d1c7f333e52af6fd5b98a9285456c86f56ccd84a25 + md5: f49590c09c0cd35195dfdb6493fe98bc depends: - - max-core ==25.1.0.dev2025012705 release + - max-core ==25.1.0.dev2025012905 release - python 3.11.* - fastapi - httpx @@ -4929,13 +4920,13 @@ packages: - uvicorn - python_abi 3.11.* *_cp311 license: LicenseRef-Modular-Proprietary - size: 120662548 - timestamp: 1737955017865 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025012705-3.11release.conda - sha256: eeb1f357289071575a862a6704cc7d92d9d03b59987b7173f746019a482f5b7c - md5: 0510f86087d3cd7d781811a20047e6f8 + size: 120761463 + timestamp: 1738127911513 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025012905-3.11release.conda + sha256: ab870a6e082e37d537a14017a859b67a5b18fae561c3fbb56beb56a7686b1ec3 + md5: eee7390d88bc9990b9df6b6a3d39535f depends: - - max-core ==25.1.0.dev2025012705 release + - max-core ==25.1.0.dev2025012905 release - python 3.11.* - fastapi - httpx @@ -4956,13 +4947,13 @@ packages: - uvicorn - python_abi 3.11.* *_cp311 license: LicenseRef-Modular-Proprietary - size: 123202039 - timestamp: 1737955039969 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025012705-3.11release.conda - sha256: 2370aaf0bbcce7e736a87b2f88cd9c8bd4bac338fe1be8dd245afd16f7fc89fe - md5: 8339b4061e6b3b065ae43a598ed0ea3c + size: 123257986 + timestamp: 1738127836745 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025012905-3.11release.conda + sha256: 244fc35350c06a30663c7bd5ffb9ef2d1cdf14abd62f750677c0020e8b629bd4 + md5: c41659b842b65f9c71131aff6a4bf254 depends: - - max-core ==25.1.0.dev2025012705 release + - max-core ==25.1.0.dev2025012905 release - python 3.11.* - fastapi - httpx @@ -4983,12 +4974,12 @@ packages: - uvicorn - python_abi 3.11.* *_cp311 license: LicenseRef-Modular-Proprietary - size: 106066748 - timestamp: 1737956267688 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012705-release.conda + size: 106175400 + timestamp: 1738128880812 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012905-release.conda noarch: python - sha256: 90cc368b1a6ceac15f44c67517c1af7fe1dc5dce40b92f91f1830be2f6a66fb9 - md5: 15ff6d8c842fbce739084f0bbd23bd27 + sha256: 14bb3045350a288f80df5b386555586d8e035c3f7454ba8214f73cfeace26887 + md5: ee06a37bf7cb1d8ef7b646b6e7ad2bfd depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -4998,8 +4989,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130811 - timestamp: 1737955039968 + size: 130809 + timestamp: 1738127836744 - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda sha256: 78c1bbe1723449c52b7a9df1af2ee5f005209f67e40b6e1d3c7619127c43b1c7 md5: 592132998493b3ff25fd7479396e8351 @@ -5009,18 +5000,18 @@ packages: license_family: MIT size: 14465 timestamp: 1733255681319 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025012705-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025012905-release.conda noarch: python - sha256: fb3ed00e9f7df548142bb0afa9edf654413f61d1b39c6b1cbfc9cf2fbb6e04f9 - md5: 961e0d8087b0ab6e38d0e1a518438827 + sha256: 00c9bbee63d4d9d18235be72c23e10a8c63eeabef853575f4fdfa3cc4df9ac83 + md5: 646e77b26ddf8c7aba7d2a3ac21631a6 depends: - - max-core ==25.1.0.dev2025012705 release + - max-core ==25.1.0.dev2025012905 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22933 - timestamp: 1737955039968 + size: 22932 + timestamp: 1738127836744 - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py311h2dc5d0c_2.conda sha256: afaab7a028281d8b5336db2b994fd3f9694862b6ca372c079dc4e84ad768c20a md5: bb8ca118919836624d920b4c44383a15 diff --git a/examples/notebooks/magic.lock b/examples/notebooks/magic.lock index f137729a31..d247a52c3d 100644 --- a/examples/notebooks/magic.lock +++ b/examples/notebooks/magic.lock @@ -58,12 +58,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.12-py312h2ec8cdc_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.1.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.18-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/entrypoints-0.4-pyhd8ed1ab_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/executing-2.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.7-pyh29332c3_1.conda @@ -116,11 +115,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-19.0.0-hcb10f89_8_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-19.0.0-hcb10f89_8_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-19.0.0-h08228c5_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-26_linux64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-28_h59b9bed_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.1.0-hb9d3cd8_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-26_linux64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-28_he106b2a_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libcrc32c-1.1.2-h9c3ff4c_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.11.1-h332b0f4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.23-h4ddbbb0_0.conda @@ -139,7 +138,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.67.1-h25350d4_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-hd590300_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-26_linux64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-28_h7ac8fdf_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.3-hb9d3cd8_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda @@ -169,18 +168,18 @@ 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-25.1.0.dev2025012705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025012705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025012705-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025012905-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025012905-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025012905-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012905-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.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025012705-release.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.1-pyhd8ed1ab_0.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025012905-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.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.6-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda @@ -353,12 +352,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/debugpy-1.8.12-py312h6f74592_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.1.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.18-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/entrypoints-0.4-pyhd8ed1ab_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/executing-2.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.7-pyh29332c3_1.conda @@ -412,11 +410,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-19.0.0-h3b568fd_8_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-19.0.0-h3b568fd_8_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-19.0.0-h1e9d426_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-26_linuxaarch64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-28_h1a9f1db_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlicommon-1.1.0-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlidec-1.1.0-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlienc-1.1.0-h86ecc28_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-26_linuxaarch64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-28_hab92f65_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcrc32c-1.1.2-h01db608_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcurl-8.11.1-h6702fde_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libdeflate-1.23-h5e3c512_0.conda @@ -435,7 +433,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgrpc-1.67.1-hf7ccdd3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libiconv-1.17-h31becfc_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libjpeg-turbo-3.0.0-h31becfc_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-26_linuxaarch64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-28_h411afd4_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.3-h86ecc28_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnghttp2-1.64.0-hc8609a4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda @@ -465,18 +463,18 @@ 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-25.1.0.dev2025012705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025012705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025012705-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025012905-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025012905-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025012905-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012905-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.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025012705-release.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.1-pyhd8ed1ab_0.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025012905-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.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.6-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-ha32ae93_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda @@ -649,12 +647,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/debugpy-1.8.12-py312hd8f9ff3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.1.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.18-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/entrypoints-0.4-pyhd8ed1ab_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/executing-2.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.7-pyh29332c3_1.conda @@ -706,11 +703,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-19.0.0-hf07054f_8_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-19.0.0-hf07054f_8_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-19.0.0-h4239455_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-26_osxarm64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-28_h10e41b3_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.1.0-hd74edd7_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.1.0-hd74edd7_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlienc-1.1.0-hd74edd7_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-26_osxarm64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-28_hb3479ef_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcrc32c-1.1.2-hbdafb3b_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.11.1-h73640d1_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda @@ -727,7 +724,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgrpc-1.67.1-h0a426d6_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.17-h0d3ecfb_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.0.0-hb547adb_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-26_osxarm64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-28_hc9a63f6_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.3-h39f12f2_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.64.0-h6d7220d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.28-openmp_hf332438_1.conda @@ -753,18 +750,18 @@ 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-25.1.0.dev2025012705-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025012705-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025012705-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025012905-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025012905-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025012905-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012905-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.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025012705-release.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.1-pyhd8ed1ab_0.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025012905-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 - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.6-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda @@ -2339,16 +2336,16 @@ packages: license_family: PSF size: 24062 timestamp: 1615232388757 -- conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhd8ed1ab_1.conda - sha256: a20ebf2c9b02a6eb32412ceb5c4cffaae49417db7e75414a76417538293a9402 - md5: eaef2e94d5bd76f758545d172c1fda67 +- conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.18-pyhd8ed1ab_0.conda + sha256: d614bcff10696f1efc714df07651b50bf3808401fcc03814309ecec242cc8870 + md5: 0cef44b1754ae4d6924ac0eef6b9fdbe depends: - python >=3.9 - wrapt <2,>=1.10 license: MIT license_family: MIT - size: 14297 - timestamp: 1733662697343 + size: 14382 + timestamp: 1737987072859 - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda sha256: 4ff20c6be028be2825235631c45d9e4a75bca1de65f8840c02dfb28ea0137c45 md5: 5e4f3466526c52bc9af2d2353a1460bd @@ -2395,15 +2392,6 @@ packages: license: Unlicense size: 6552 timestamp: 1733300828176 -- conda: https://conda.anaconda.org/conda-forge/noarch/entrypoints-0.4-pyhd8ed1ab_1.conda - sha256: 80f579bfc71b3dab5bef74114b89e26c85cb0df8caf4c27ab5ffc16363d57ee7 - md5: 3366592d3c219f2731721f11bc93755c - depends: - - python >=3.9 - license: MIT - license_family: MIT - size: 11259 - timestamp: 1733327239578 - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda sha256: cbde2c64ec317118fc06b223c5fd87c8a680255e7348dd60e7b292d2e103e701 md5: a16662747cdeb9abbac74d0057cc976e @@ -3636,60 +3624,57 @@ packages: license_family: APACHE size: 449672 timestamp: 1737807386331 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-26_linux64_openblas.conda - build_number: 26 - sha256: 30bd658682b124243f8e52d8edf8a19e7be1bc31e4fe4baec30a64002dc8cd0c - md5: ac52800af2e0c0e7dac770b435ce768a +- conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-28_h59b9bed_openblas.conda + build_number: 28 + sha256: 93fbcf2800b859b7ca5add3ab5d3aa11c6a6ff4b942a1cea4bf644f78488edb8 + md5: 73e2a99fdeb8531d50168987378fda8a depends: - libopenblas >=0.3.28,<0.3.29.0a0 - libopenblas >=0.3.28,<1.0a0 constrains: - - libcblas 3.9.0 26_linux64_openblas - - liblapack 3.9.0 26_linux64_openblas - - liblapacke 3.9.0 26_linux64_openblas - - blas * openblas + - libcblas =3.9.0=28*_openblas + - blas =2.128=openblas + - liblapack =3.9.0=28*_openblas + - liblapacke =3.9.0=28*_openblas arch: x86_64 platform: linux license: BSD-3-Clause - license_family: BSD - size: 16393 - timestamp: 1734432564346 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-26_linuxaarch64_openblas.conda - build_number: 26 - sha256: df6d8ee34d45cf35609ecdd55c1ff03e32e0cd87ae41ebe4ef3747a8e09ead4d - md5: 8d900b7079a00969d70305e9aad550b7 + size: 16621 + timestamp: 1738114033763 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-28_h1a9f1db_openblas.conda + build_number: 28 + sha256: a50dc7ed1f49789aab4ffb560d9a46b5dc3f059a925282f699c1a96fa566a1a0 + md5: 88dfbb3875d62b431aa676b4a54734bf depends: - libopenblas >=0.3.28,<0.3.29.0a0 - libopenblas >=0.3.28,<1.0a0 constrains: - - blas * openblas - - liblapacke 3.9.0 26_linuxaarch64_openblas - - libcblas 3.9.0 26_linuxaarch64_openblas - - liblapack 3.9.0 26_linuxaarch64_openblas + - liblapack =3.9.0=28*_openblas + - libcblas =3.9.0=28*_openblas + - blas =2.128=openblas + - liblapacke =3.9.0=28*_openblas arch: aarch64 platform: linux license: BSD-3-Clause - license_family: BSD - size: 16477 - timestamp: 1734432576699 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-26_osxarm64_openblas.conda - build_number: 26 - sha256: 597f9c3779caa979c8c6abbb3ba8c7191b84e1a910d6b0d10e5faf35284c450c - md5: 21be102c9ae80a67ba7de23b129aa7f6 + size: 16697 + timestamp: 1738114082682 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-28_h10e41b3_openblas.conda + build_number: 28 + sha256: 5bea855a1a7435ce2238535aa4b13db8af8ee301d99a42b083b63fa64c1ea144 + md5: 166166d84a0e9571dc50210baf993b46 depends: - libopenblas >=0.3.28,<0.3.29.0a0 - libopenblas >=0.3.28,<1.0a0 constrains: - - liblapack 3.9.0 26_osxarm64_openblas - - liblapacke 3.9.0 26_osxarm64_openblas - - libcblas 3.9.0 26_osxarm64_openblas - - blas * openblas + - liblapack =3.9.0=28*_openblas + - liblapacke =3.9.0=28*_openblas + - blas =2.128=openblas + - libcblas =3.9.0=28*_openblas arch: arm64 platform: osx license: BSD-3-Clause - license_family: BSD - size: 16714 - timestamp: 1734433054681 + size: 16840 + timestamp: 1738114389937 - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hb9d3cd8_2.conda sha256: d9db2de60ea917298e658143354a530e9ca5f9c63471c65cf47ab39fd2f429e3 md5: 41b599ed2b02abcfdd84302bff174b23 @@ -3798,54 +3783,51 @@ packages: license_family: MIT size: 279644 timestamp: 1725268003553 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-26_linux64_openblas.conda - build_number: 26 - sha256: 9c74e536c9bc868e356ffd43f81c2cb398aec84b40fcadc312315b164a5500ee - md5: ebcc5f37a435aa3c19640533c82f8d76 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-28_he106b2a_openblas.conda + build_number: 28 + sha256: de293e117db53e5d78b579136509c35a5e4ad11529c05f9af83cf89be4d30de1 + md5: 4e20a1c00b4e8a984aac0f6cce59e3ac depends: - - libblas 3.9.0 26_linux64_openblas + - libblas 3.9.0 28_h59b9bed_openblas constrains: - - liblapack 3.9.0 26_linux64_openblas - - liblapacke 3.9.0 26_linux64_openblas - - blas * openblas + - blas =2.128=openblas + - liblapack =3.9.0=28*_openblas + - liblapacke =3.9.0=28*_openblas arch: x86_64 platform: linux license: BSD-3-Clause - license_family: BSD - size: 16336 - timestamp: 1734432570482 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-26_linuxaarch64_openblas.conda - build_number: 26 - sha256: 521e78be0c4170f229c43e1a6c94337a72db3ebcbe6e5960f8413aa438dcb8f9 - md5: d77f943ae4083f3aeddca698f2d28262 + size: 16539 + timestamp: 1738114043618 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-28_hab92f65_openblas.conda + build_number: 28 + sha256: ed62f13a85726f568e17ad569b5cc01a49a6c7bd334802cf1c1b15e9d10e7e93 + md5: 8cff453f547365131be5647c7680ac6d depends: - - libblas 3.9.0 26_linuxaarch64_openblas + - libblas 3.9.0 28_h1a9f1db_openblas constrains: - - blas * openblas - - liblapacke 3.9.0 26_linuxaarch64_openblas - - liblapack 3.9.0 26_linuxaarch64_openblas + - liblapack =3.9.0=28*_openblas + - blas =2.128=openblas + - liblapacke =3.9.0=28*_openblas arch: aarch64 platform: linux license: BSD-3-Clause - license_family: BSD - size: 16398 - timestamp: 1734432580937 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-26_osxarm64_openblas.conda - build_number: 26 - sha256: 27a29ef6b2fd2179bc3a0bb9db351f078ba140ca10485dca147c399639f84c93 - md5: a0e9980fe12d42f6d0c0ec009f67e948 + size: 16655 + timestamp: 1738114088527 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-28_hb3479ef_openblas.conda + build_number: 28 + sha256: f08adea59381babb3568e6d23e52aff874cbc25f299821647ab1127d1e1332ca + md5: 30942dea911ce333765003a8adec4e8a depends: - - libblas 3.9.0 26_osxarm64_openblas + - libblas 3.9.0 28_h10e41b3_openblas constrains: - - liblapack 3.9.0 26_osxarm64_openblas - - liblapacke 3.9.0 26_osxarm64_openblas - - blas * openblas + - blas =2.128=openblas + - liblapacke =3.9.0=28*_openblas + - liblapack =3.9.0=28*_openblas arch: arm64 platform: osx license: BSD-3-Clause - license_family: BSD - size: 16628 - timestamp: 1734433061517 + size: 16788 + timestamp: 1738114399962 - conda: https://conda.anaconda.org/conda-forge/linux-64/libcrc32c-1.1.2-h9c3ff4c_0.tar.bz2 sha256: fd1d153962764433fe6233f34a72cdeed5dcf8a883a85769e8295ce940b5b0c5 md5: c965a5aa0d5c1c37ffc62dff36e28400 @@ -4547,54 +4529,51 @@ packages: license: IJG AND BSD-3-Clause AND Zlib size: 547541 timestamp: 1694475104253 -- conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-26_linux64_openblas.conda - build_number: 26 - sha256: b76458c36331376911e0f98fa68109e02f4d5e5ebfffa79587ac69cef748bba1 - md5: 3792604c43695d6a273bc5faaac47d48 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-28_h7ac8fdf_openblas.conda + build_number: 28 + sha256: 9530e6840690b78360946390a1d29624734a6b624f02c26631fb451592cbb8ef + md5: 069f40bfbf1dc55c83ddb07fc6a6ef8d depends: - - libblas 3.9.0 26_linux64_openblas + - libblas 3.9.0 28_h59b9bed_openblas constrains: - - libcblas 3.9.0 26_linux64_openblas - - liblapacke 3.9.0 26_linux64_openblas - - blas * openblas + - libcblas =3.9.0=28*_openblas + - blas =2.128=openblas + - liblapacke =3.9.0=28*_openblas arch: x86_64 platform: linux license: BSD-3-Clause - license_family: BSD - size: 16338 - timestamp: 1734432576650 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-26_linuxaarch64_openblas.conda - build_number: 26 - sha256: a42bd01498efe2ccf6d08d56ac3cbd3ceab79e06699ff5aac3da8e45a66738f7 - md5: a5d4e18876393633da62fd8492c00156 + size: 16553 + timestamp: 1738114053556 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-28_h411afd4_openblas.conda + build_number: 28 + sha256: 1290ce1071a586e22bdd7d8f4c48000cc0005f0a67660be150d1ea5c6092129f + md5: bc4c5ee31476521e202356b56bba6077 depends: - - libblas 3.9.0 26_linuxaarch64_openblas + - libblas 3.9.0 28_h1a9f1db_openblas constrains: - - blas * openblas - - liblapacke 3.9.0 26_linuxaarch64_openblas - - libcblas 3.9.0 26_linuxaarch64_openblas + - liblapacke =3.9.0=28*_openblas + - libcblas =3.9.0=28*_openblas + - blas =2.128=openblas arch: aarch64 platform: linux license: BSD-3-Clause - license_family: BSD - size: 16403 - timestamp: 1734432585123 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-26_osxarm64_openblas.conda - build_number: 26 - sha256: dd6d9a21e672aee4332f019c8229ce70cf5eaf6c2f4cbd1443b105fb66c00dc5 - md5: cebad79038a75cfd28fa90d147a2d34d + size: 16637 + timestamp: 1738114094310 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-28_hc9a63f6_openblas.conda + build_number: 28 + sha256: 79c75a02bff20f8b001e6aecfee8d22a51552c3986e7037fca68e5ed071cc213 + md5: 45f26652530b558c21083ceb7adaf273 depends: - - libblas 3.9.0 26_osxarm64_openblas + - libblas 3.9.0 28_h10e41b3_openblas constrains: - - liblapacke 3.9.0 26_osxarm64_openblas - - libcblas 3.9.0 26_osxarm64_openblas - - blas * openblas + - blas =2.128=openblas + - liblapacke =3.9.0=28*_openblas + - libcblas =3.9.0=28*_openblas arch: arm64 platform: osx license: BSD-3-Clause - license_family: BSD - size: 16624 - timestamp: 1734433068120 + size: 16793 + timestamp: 1738114407021 - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.3-hb9d3cd8_1.conda sha256: e6e425252f3839e2756e4af1ea2074dffd3396c161bf460629f9dfd6a65f15c6 md5: 2ecf2f1c7e4e21fcfe6423a51a992d84 @@ -5666,47 +5645,47 @@ packages: license_family: BSD size: 14467 timestamp: 1733417051523 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025012705-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025012905-release.conda noarch: python - sha256: 858899a14213e31412668b979537779ddaf730cad15593c3be3602d30d925cd3 - md5: 0788ab9a7003126a6d7285d3fb912104 + sha256: 128e24b31c4d5852e70066a0d29b2b72c5fa442541a51edeb51c84553b078c21 + md5: c74a71227a86ff11c0b1f454df78753a depends: - - max-core ==25.1.0.dev2025012705 release - - max-python >=25.1.0.dev2025012705,<26.0a0 - - mojo-jupyter ==25.1.0.dev2025012705 release - - mblack ==25.1.0.dev2025012705 release + - max-core ==25.1.0.dev2025012905 release + - max-python >=25.1.0.dev2025012905,<26.0a0 + - mojo-jupyter ==25.1.0.dev2025012905 release + - mblack ==25.1.0.dev2025012905 release license: LicenseRef-Modular-Proprietary - size: 9922 - timestamp: 1737955039963 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025012705-release.conda - sha256: d860e83c54d3824879bb5ae313ec290164a00c6aa33b3b6a613a52f5533f7f87 - md5: c2ef9257cbac5945ec0269b52400177b + size: 9917 + timestamp: 1738127836739 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025012905-release.conda + sha256: 912bd4ab637f60a1da328f0ec8502737e37ce4fdbbeede25c6c40b58a808a34d + md5: 4ffb2fe54ee89169f96d8c74292af542 depends: - - mblack ==25.1.0.dev2025012705 release + - mblack ==25.1.0.dev2025012905 release license: LicenseRef-Modular-Proprietary - size: 243456501 - timestamp: 1737955017859 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025012705-release.conda - sha256: 911fa0d215f2aef388f1b69600312c84fe8aa62300e8090e4970ede5519eeff3 - md5: 85e8cd9ee3ac21238a923b938e997c48 + size: 243535907 + timestamp: 1738127911507 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025012905-release.conda + sha256: e1ccfb768b5cc84198eb0c8c8d273d4ce6cda149427479089bc484440105e67d + md5: 5a919171033c9dfe518aef703b7ec3d8 depends: - - mblack ==25.1.0.dev2025012705 release + - mblack ==25.1.0.dev2025012905 release license: LicenseRef-Modular-Proprietary - size: 245946155 - timestamp: 1737955039961 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025012705-release.conda - sha256: f338470aae98f63c08c9dda7d9b94c559a21055509c2ed924cb55441c8b60ba9 - md5: 44cfd5ca1dc48bab35146702380ac083 + size: 246085619 + timestamp: 1738127836737 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025012905-release.conda + sha256: 58573782ee40eb77b183e93988590d11184302e8cc257673cb72745b0447d204 + md5: 9dc83277bf38cbd419f52909847ed796 depends: - - mblack ==25.1.0.dev2025012705 release + - mblack ==25.1.0.dev2025012905 release license: LicenseRef-Modular-Proprietary - size: 205169482 - timestamp: 1737956267686 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025012705-3.12release.conda - sha256: 0a18a085825c9fa2bf3e575310837f3dbdddc96b7aaea8b651e3eae61c02530f - md5: 42d30c788187591cf4b61d3ef4129e38 + size: 205298533 + timestamp: 1738128880810 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025012905-3.12release.conda + sha256: 1cb5820b79790fbcdf69a17d3f2de668e335afda26d4896dc5d8df7495c3f2fc + md5: 4c8cd5b0bb94e4b0566c66614882417c depends: - - max-core ==25.1.0.dev2025012705 release + - max-core ==25.1.0.dev2025012905 release - python 3.12.* - fastapi - httpx @@ -5727,13 +5706,13 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 120669382 - timestamp: 1737955017868 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025012705-3.12release.conda - sha256: 8372666a6ad71409d0ed7336e1b955dd86d1ceb3f9b96c0a098cb59a802b688e - md5: 222a46c2286742510e8ee05ad24f2523 + size: 120728426 + timestamp: 1738127911515 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025012905-3.12release.conda + sha256: 569a53d099bf8fe518e3148f6bcad3d499d8eaeeb96587c0e06e792f51161553 + md5: c5094829938eded41b20717d7f135a3e depends: - - max-core ==25.1.0.dev2025012705 release + - max-core ==25.1.0.dev2025012905 release - python 3.12.* - fastapi - httpx @@ -5754,13 +5733,13 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 123185570 - timestamp: 1737955039973 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025012705-3.12release.conda - sha256: c4894d84b65bc2e997f5c7fa10027f276b481bbb2ded68f34bd74bf1e195076a - md5: fcb3723a6dbf99dd5d6ab6895e97de58 + size: 123278531 + timestamp: 1738127836748 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025012905-3.12release.conda + sha256: c4629b7ca8859e4b1f736de64721c9998ae1b2f2f183ab496cc0ab5faa053c00 + md5: 411d19e9c18c3d8c665f765041cd9a3e depends: - - max-core ==25.1.0.dev2025012705 release + - max-core ==25.1.0.dev2025012905 release - python 3.12.* - fastapi - httpx @@ -5781,12 +5760,12 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 106061856 - timestamp: 1737956267689 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012705-release.conda + size: 106174079 + timestamp: 1738128880813 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012905-release.conda noarch: python - sha256: 90cc368b1a6ceac15f44c67517c1af7fe1dc5dce40b92f91f1830be2f6a66fb9 - md5: 15ff6d8c842fbce739084f0bbd23bd27 + sha256: 14bb3045350a288f80df5b386555586d8e035c3f7454ba8214f73cfeace26887 + md5: ee06a37bf7cb1d8ef7b646b6e7ad2bfd depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -5796,8 +5775,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130811 - timestamp: 1737955039968 + size: 130809 + timestamp: 1738127836744 - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda sha256: 78c1bbe1723449c52b7a9df1af2ee5f005209f67e40b6e1d3c7619127c43b1c7 md5: 592132998493b3ff25fd7479396e8351 @@ -5807,28 +5786,28 @@ packages: license_family: MIT size: 14465 timestamp: 1733255681319 -- conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.0-pyhd8ed1ab_0.conda - sha256: d932404dc610464130db5f36f59cd29947a687d9708daaad369d0020707de41a - md5: d10024c163a52eeecbb166fdeaef8b12 +- conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.1-pyhd8ed1ab_0.conda + sha256: b82ceee187e715a287d2e1dc2d79dd2c68f84858e9b9dbac38df3d48a6f426d9 + md5: 6e6b93442c2ab2f9902a3637b70c720f depends: - python >=3.9 - typing_extensions license: BSD-3-Clause license_family: BSD - size: 68803 - timestamp: 1735686983426 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025012705-release.conda + size: 68935 + timestamp: 1738085278568 +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025012905-release.conda noarch: python - sha256: fb3ed00e9f7df548142bb0afa9edf654413f61d1b39c6b1cbfc9cf2fbb6e04f9 - md5: 961e0d8087b0ab6e38d0e1a518438827 + sha256: 00c9bbee63d4d9d18235be72c23e10a8c63eeabef853575f4fdfa3cc4df9ac83 + md5: 646e77b26ddf8c7aba7d2a3ac21631a6 depends: - - max-core ==25.1.0.dev2025012705 release + - max-core ==25.1.0.dev2025012905 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22933 - timestamp: 1737955039968 + size: 22932 + timestamp: 1738127836744 - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py312h178313f_2.conda sha256: b05bc8252a6e957bf4a776ed5e0e61d1ba88cdc46ccb55890c72cc58b10371f4 md5: 5b5e3267d915a107eca793d52e1b780a @@ -5936,14 +5915,13 @@ packages: license_family: BSD size: 28045 timestamp: 1734628936013 -- conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.5-pyhd8ed1ab_1.conda - sha256: 9eed80365c012ab3bbb0f0ed1446af496d6810063dfa07dde33ae4a6d8a392ef - md5: dd50a122c5b9782b1e9b2695473bfd95 +- conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.6-pyh29332c3_0.conda + sha256: dcccb07c5a1acb7dc8be94330e62d54754c0e9c9cb2bb6865c8e3cfe44cf5a58 + md5: d24beda1d30748afcc87c429454ece1b depends: - beautifulsoup4 - bleach-with-css !=5.0.0 - defusedxml - - entrypoints >=0.2.2 - importlib-metadata >=3.6 - jinja2 >=3.0 - jupyter_core >=4.7 @@ -5957,13 +5935,13 @@ packages: - pygments >=2.4.1 - python >=3.9 - traitlets >=5.1 + - python constrains: - - nbconvert =7.16.5=*_1 - pandoc >=2.9.2,<4.0.0 + - nbconvert ==7.16.6 *_0 license: BSD-3-Clause - license_family: BSD - size: 189127 - timestamp: 1736258775758 + size: 200601 + timestamp: 1738067871724 - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda sha256: 7a5bd30a2e7ddd7b85031a5e2e14f290898098dc85bea5b3a5bf147c25122838 md5: bbe1963f1e47f594070ffe87cdf612ea diff --git a/examples/operators/magic.lock b/examples/operators/magic.lock index 9fc75e692a..75d69d71e3 100644 --- a/examples/operators/magic.lock +++ b/examples/operators/magic.lock @@ -43,7 +43,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.18-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda @@ -81,11 +81,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-19.0.0-hcb10f89_8_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-19.0.0-hcb10f89_8_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-19.0.0-h08228c5_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-26_linux64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-28_h59b9bed_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.1.0-hb9d3cd8_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-26_linux64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-28_he106b2a_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libcrc32c-1.1.2-h9c3ff4c_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.11.1-h332b0f4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.23-h4ddbbb0_0.conda @@ -104,7 +104,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.67.1-h25350d4_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-hd590300_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-26_linux64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-28_h7ac8fdf_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.3-hb9d3cd8_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda @@ -133,12 +133,12 @@ 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-25.1.0.dev2025012705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025012705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025012705-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025012905-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025012905-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025012905-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012905-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-25.1.0.dev2025012705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025012905-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 @@ -265,7 +265,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.18-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda @@ -304,11 +304,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-19.0.0-h3b568fd_8_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-19.0.0-h3b568fd_8_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-19.0.0-h1e9d426_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-26_linuxaarch64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-28_h1a9f1db_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlicommon-1.1.0-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlidec-1.1.0-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlienc-1.1.0-h86ecc28_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-26_linuxaarch64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-28_hab92f65_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcrc32c-1.1.2-h01db608_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcurl-8.11.1-h6702fde_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libdeflate-1.23-h5e3c512_0.conda @@ -327,7 +327,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgrpc-1.67.1-hf7ccdd3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libiconv-1.17-h31becfc_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libjpeg-turbo-3.0.0-h31becfc_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-26_linuxaarch64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-28_h411afd4_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.3-h86ecc28_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnghttp2-1.64.0-hc8609a4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda @@ -356,12 +356,12 @@ 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-25.1.0.dev2025012705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025012705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025012705-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025012905-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025012905-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025012905-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012905-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-25.1.0.dev2025012705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025012905-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 @@ -487,7 +487,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.18-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda @@ -524,11 +524,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-19.0.0-hf07054f_8_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-19.0.0-hf07054f_8_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-19.0.0-h4239455_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-26_osxarm64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-28_h10e41b3_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.1.0-hd74edd7_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.1.0-hd74edd7_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlienc-1.1.0-hd74edd7_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-26_osxarm64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-28_hb3479ef_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcrc32c-1.1.2-hbdafb3b_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.11.1-h73640d1_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda @@ -545,7 +545,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgrpc-1.67.1-h0a426d6_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.17-h0d3ecfb_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.0.0-hb547adb_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-26_osxarm64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-28_hc9a63f6_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.3-h39f12f2_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.64.0-h6d7220d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.28-openmp_hf332438_1.conda @@ -570,12 +570,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-25.1.0.dev2025012705-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025012705-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025012705-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025012905-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025012905-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025012905-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012905-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-25.1.0.dev2025012705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025012905-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 @@ -1885,16 +1885,16 @@ packages: license_family: Apache size: 347303 timestamp: 1691593908658 -- conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhd8ed1ab_1.conda - sha256: a20ebf2c9b02a6eb32412ceb5c4cffaae49417db7e75414a76417538293a9402 - md5: eaef2e94d5bd76f758545d172c1fda67 +- conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.18-pyhd8ed1ab_0.conda + sha256: d614bcff10696f1efc714df07651b50bf3808401fcc03814309ecec242cc8870 + md5: 0cef44b1754ae4d6924ac0eef6b9fdbe depends: - python >=3.9 - wrapt <2,>=1.10 license: MIT license_family: MIT - size: 14297 - timestamp: 1733662697343 + size: 14382 + timestamp: 1737987072859 - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda sha256: 4ff20c6be028be2825235631c45d9e4a75bca1de65f8840c02dfb28ea0137c45 md5: 5e4f3466526c52bc9af2d2353a1460bd @@ -2848,60 +2848,57 @@ packages: license_family: APACHE size: 449672 timestamp: 1737807386331 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-26_linux64_openblas.conda - build_number: 26 - sha256: 30bd658682b124243f8e52d8edf8a19e7be1bc31e4fe4baec30a64002dc8cd0c - md5: ac52800af2e0c0e7dac770b435ce768a +- conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-28_h59b9bed_openblas.conda + build_number: 28 + sha256: 93fbcf2800b859b7ca5add3ab5d3aa11c6a6ff4b942a1cea4bf644f78488edb8 + md5: 73e2a99fdeb8531d50168987378fda8a depends: - libopenblas >=0.3.28,<0.3.29.0a0 - libopenblas >=0.3.28,<1.0a0 constrains: - - libcblas 3.9.0 26_linux64_openblas - - liblapack 3.9.0 26_linux64_openblas - - liblapacke 3.9.0 26_linux64_openblas - - blas * openblas + - libcblas =3.9.0=28*_openblas + - blas =2.128=openblas + - liblapack =3.9.0=28*_openblas + - liblapacke =3.9.0=28*_openblas arch: x86_64 platform: linux license: BSD-3-Clause - license_family: BSD - size: 16393 - timestamp: 1734432564346 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-26_linuxaarch64_openblas.conda - build_number: 26 - sha256: df6d8ee34d45cf35609ecdd55c1ff03e32e0cd87ae41ebe4ef3747a8e09ead4d - md5: 8d900b7079a00969d70305e9aad550b7 + size: 16621 + timestamp: 1738114033763 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-28_h1a9f1db_openblas.conda + build_number: 28 + sha256: a50dc7ed1f49789aab4ffb560d9a46b5dc3f059a925282f699c1a96fa566a1a0 + md5: 88dfbb3875d62b431aa676b4a54734bf depends: - libopenblas >=0.3.28,<0.3.29.0a0 - libopenblas >=0.3.28,<1.0a0 constrains: - - blas * openblas - - liblapacke 3.9.0 26_linuxaarch64_openblas - - libcblas 3.9.0 26_linuxaarch64_openblas - - liblapack 3.9.0 26_linuxaarch64_openblas + - liblapack =3.9.0=28*_openblas + - libcblas =3.9.0=28*_openblas + - blas =2.128=openblas + - liblapacke =3.9.0=28*_openblas arch: aarch64 platform: linux license: BSD-3-Clause - license_family: BSD - size: 16477 - timestamp: 1734432576699 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-26_osxarm64_openblas.conda - build_number: 26 - sha256: 597f9c3779caa979c8c6abbb3ba8c7191b84e1a910d6b0d10e5faf35284c450c - md5: 21be102c9ae80a67ba7de23b129aa7f6 + size: 16697 + timestamp: 1738114082682 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-28_h10e41b3_openblas.conda + build_number: 28 + sha256: 5bea855a1a7435ce2238535aa4b13db8af8ee301d99a42b083b63fa64c1ea144 + md5: 166166d84a0e9571dc50210baf993b46 depends: - libopenblas >=0.3.28,<0.3.29.0a0 - libopenblas >=0.3.28,<1.0a0 constrains: - - liblapack 3.9.0 26_osxarm64_openblas - - liblapacke 3.9.0 26_osxarm64_openblas - - libcblas 3.9.0 26_osxarm64_openblas - - blas * openblas + - liblapack =3.9.0=28*_openblas + - liblapacke =3.9.0=28*_openblas + - blas =2.128=openblas + - libcblas =3.9.0=28*_openblas arch: arm64 platform: osx license: BSD-3-Clause - license_family: BSD - size: 16714 - timestamp: 1734433054681 + size: 16840 + timestamp: 1738114389937 - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hb9d3cd8_2.conda sha256: d9db2de60ea917298e658143354a530e9ca5f9c63471c65cf47ab39fd2f429e3 md5: 41b599ed2b02abcfdd84302bff174b23 @@ -3010,54 +3007,51 @@ packages: license_family: MIT size: 279644 timestamp: 1725268003553 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-26_linux64_openblas.conda - build_number: 26 - sha256: 9c74e536c9bc868e356ffd43f81c2cb398aec84b40fcadc312315b164a5500ee - md5: ebcc5f37a435aa3c19640533c82f8d76 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-28_he106b2a_openblas.conda + build_number: 28 + sha256: de293e117db53e5d78b579136509c35a5e4ad11529c05f9af83cf89be4d30de1 + md5: 4e20a1c00b4e8a984aac0f6cce59e3ac depends: - - libblas 3.9.0 26_linux64_openblas + - libblas 3.9.0 28_h59b9bed_openblas constrains: - - liblapack 3.9.0 26_linux64_openblas - - liblapacke 3.9.0 26_linux64_openblas - - blas * openblas + - blas =2.128=openblas + - liblapack =3.9.0=28*_openblas + - liblapacke =3.9.0=28*_openblas arch: x86_64 platform: linux license: BSD-3-Clause - license_family: BSD - size: 16336 - timestamp: 1734432570482 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-26_linuxaarch64_openblas.conda - build_number: 26 - sha256: 521e78be0c4170f229c43e1a6c94337a72db3ebcbe6e5960f8413aa438dcb8f9 - md5: d77f943ae4083f3aeddca698f2d28262 - depends: - - libblas 3.9.0 26_linuxaarch64_openblas + size: 16539 + timestamp: 1738114043618 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-28_hab92f65_openblas.conda + build_number: 28 + sha256: ed62f13a85726f568e17ad569b5cc01a49a6c7bd334802cf1c1b15e9d10e7e93 + md5: 8cff453f547365131be5647c7680ac6d + depends: + - libblas 3.9.0 28_h1a9f1db_openblas constrains: - - blas * openblas - - liblapacke 3.9.0 26_linuxaarch64_openblas - - liblapack 3.9.0 26_linuxaarch64_openblas + - liblapack =3.9.0=28*_openblas + - blas =2.128=openblas + - liblapacke =3.9.0=28*_openblas arch: aarch64 platform: linux license: BSD-3-Clause - license_family: BSD - size: 16398 - timestamp: 1734432580937 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-26_osxarm64_openblas.conda - build_number: 26 - sha256: 27a29ef6b2fd2179bc3a0bb9db351f078ba140ca10485dca147c399639f84c93 - md5: a0e9980fe12d42f6d0c0ec009f67e948 - depends: - - libblas 3.9.0 26_osxarm64_openblas + size: 16655 + timestamp: 1738114088527 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-28_hb3479ef_openblas.conda + build_number: 28 + sha256: f08adea59381babb3568e6d23e52aff874cbc25f299821647ab1127d1e1332ca + md5: 30942dea911ce333765003a8adec4e8a + depends: + - libblas 3.9.0 28_h10e41b3_openblas constrains: - - liblapack 3.9.0 26_osxarm64_openblas - - liblapacke 3.9.0 26_osxarm64_openblas - - blas * openblas + - blas =2.128=openblas + - liblapacke =3.9.0=28*_openblas + - liblapack =3.9.0=28*_openblas arch: arm64 platform: osx license: BSD-3-Clause - license_family: BSD - size: 16628 - timestamp: 1734433061517 + size: 16788 + timestamp: 1738114399962 - conda: https://conda.anaconda.org/conda-forge/linux-64/libcrc32c-1.1.2-h9c3ff4c_0.tar.bz2 sha256: fd1d153962764433fe6233f34a72cdeed5dcf8a883a85769e8295ce940b5b0c5 md5: c965a5aa0d5c1c37ffc62dff36e28400 @@ -3759,54 +3753,51 @@ packages: license: IJG AND BSD-3-Clause AND Zlib size: 547541 timestamp: 1694475104253 -- conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-26_linux64_openblas.conda - build_number: 26 - sha256: b76458c36331376911e0f98fa68109e02f4d5e5ebfffa79587ac69cef748bba1 - md5: 3792604c43695d6a273bc5faaac47d48 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-28_h7ac8fdf_openblas.conda + build_number: 28 + sha256: 9530e6840690b78360946390a1d29624734a6b624f02c26631fb451592cbb8ef + md5: 069f40bfbf1dc55c83ddb07fc6a6ef8d depends: - - libblas 3.9.0 26_linux64_openblas + - libblas 3.9.0 28_h59b9bed_openblas constrains: - - libcblas 3.9.0 26_linux64_openblas - - liblapacke 3.9.0 26_linux64_openblas - - blas * openblas + - libcblas =3.9.0=28*_openblas + - blas =2.128=openblas + - liblapacke =3.9.0=28*_openblas arch: x86_64 platform: linux license: BSD-3-Clause - license_family: BSD - size: 16338 - timestamp: 1734432576650 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-26_linuxaarch64_openblas.conda - build_number: 26 - sha256: a42bd01498efe2ccf6d08d56ac3cbd3ceab79e06699ff5aac3da8e45a66738f7 - md5: a5d4e18876393633da62fd8492c00156 - depends: - - libblas 3.9.0 26_linuxaarch64_openblas + size: 16553 + timestamp: 1738114053556 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-28_h411afd4_openblas.conda + build_number: 28 + sha256: 1290ce1071a586e22bdd7d8f4c48000cc0005f0a67660be150d1ea5c6092129f + md5: bc4c5ee31476521e202356b56bba6077 + depends: + - libblas 3.9.0 28_h1a9f1db_openblas constrains: - - blas * openblas - - liblapacke 3.9.0 26_linuxaarch64_openblas - - libcblas 3.9.0 26_linuxaarch64_openblas + - liblapacke =3.9.0=28*_openblas + - libcblas =3.9.0=28*_openblas + - blas =2.128=openblas arch: aarch64 platform: linux license: BSD-3-Clause - license_family: BSD - size: 16403 - timestamp: 1734432585123 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-26_osxarm64_openblas.conda - build_number: 26 - sha256: dd6d9a21e672aee4332f019c8229ce70cf5eaf6c2f4cbd1443b105fb66c00dc5 - md5: cebad79038a75cfd28fa90d147a2d34d - depends: - - libblas 3.9.0 26_osxarm64_openblas + size: 16637 + timestamp: 1738114094310 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-28_hc9a63f6_openblas.conda + build_number: 28 + sha256: 79c75a02bff20f8b001e6aecfee8d22a51552c3986e7037fca68e5ed071cc213 + md5: 45f26652530b558c21083ceb7adaf273 + depends: + - libblas 3.9.0 28_h10e41b3_openblas constrains: - - liblapacke 3.9.0 26_osxarm64_openblas - - libcblas 3.9.0 26_osxarm64_openblas - - blas * openblas + - blas =2.128=openblas + - liblapacke =3.9.0=28*_openblas + - libcblas =3.9.0=28*_openblas arch: arm64 platform: osx license: BSD-3-Clause - license_family: BSD - size: 16624 - timestamp: 1734433068120 + size: 16793 + timestamp: 1738114407021 - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.3-hb9d3cd8_1.conda sha256: e6e425252f3839e2756e4af1ea2074dffd3396c161bf460629f9dfd6a65f15c6 md5: 2ecf2f1c7e4e21fcfe6423a51a992d84 @@ -4868,47 +4859,47 @@ packages: license_family: BSD size: 24048 timestamp: 1733219945697 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025012705-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025012905-release.conda noarch: python - sha256: 858899a14213e31412668b979537779ddaf730cad15593c3be3602d30d925cd3 - md5: 0788ab9a7003126a6d7285d3fb912104 + sha256: 128e24b31c4d5852e70066a0d29b2b72c5fa442541a51edeb51c84553b078c21 + md5: c74a71227a86ff11c0b1f454df78753a depends: - - max-core ==25.1.0.dev2025012705 release - - max-python >=25.1.0.dev2025012705,<26.0a0 - - mojo-jupyter ==25.1.0.dev2025012705 release - - mblack ==25.1.0.dev2025012705 release + - max-core ==25.1.0.dev2025012905 release + - max-python >=25.1.0.dev2025012905,<26.0a0 + - mojo-jupyter ==25.1.0.dev2025012905 release + - mblack ==25.1.0.dev2025012905 release license: LicenseRef-Modular-Proprietary - size: 9922 - timestamp: 1737955039963 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025012705-release.conda - sha256: d860e83c54d3824879bb5ae313ec290164a00c6aa33b3b6a613a52f5533f7f87 - md5: c2ef9257cbac5945ec0269b52400177b + size: 9917 + timestamp: 1738127836739 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025012905-release.conda + sha256: 912bd4ab637f60a1da328f0ec8502737e37ce4fdbbeede25c6c40b58a808a34d + md5: 4ffb2fe54ee89169f96d8c74292af542 depends: - - mblack ==25.1.0.dev2025012705 release + - mblack ==25.1.0.dev2025012905 release license: LicenseRef-Modular-Proprietary - size: 243456501 - timestamp: 1737955017859 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025012705-release.conda - sha256: 911fa0d215f2aef388f1b69600312c84fe8aa62300e8090e4970ede5519eeff3 - md5: 85e8cd9ee3ac21238a923b938e997c48 + size: 243535907 + timestamp: 1738127911507 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025012905-release.conda + sha256: e1ccfb768b5cc84198eb0c8c8d273d4ce6cda149427479089bc484440105e67d + md5: 5a919171033c9dfe518aef703b7ec3d8 depends: - - mblack ==25.1.0.dev2025012705 release + - mblack ==25.1.0.dev2025012905 release license: LicenseRef-Modular-Proprietary - size: 245946155 - timestamp: 1737955039961 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025012705-release.conda - sha256: f338470aae98f63c08c9dda7d9b94c559a21055509c2ed924cb55441c8b60ba9 - md5: 44cfd5ca1dc48bab35146702380ac083 + size: 246085619 + timestamp: 1738127836737 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025012905-release.conda + sha256: 58573782ee40eb77b183e93988590d11184302e8cc257673cb72745b0447d204 + md5: 9dc83277bf38cbd419f52909847ed796 depends: - - mblack ==25.1.0.dev2025012705 release + - mblack ==25.1.0.dev2025012905 release license: LicenseRef-Modular-Proprietary - size: 205169482 - timestamp: 1737956267686 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025012705-3.12release.conda - sha256: 0a18a085825c9fa2bf3e575310837f3dbdddc96b7aaea8b651e3eae61c02530f - md5: 42d30c788187591cf4b61d3ef4129e38 + size: 205298533 + timestamp: 1738128880810 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025012905-3.12release.conda + sha256: 1cb5820b79790fbcdf69a17d3f2de668e335afda26d4896dc5d8df7495c3f2fc + md5: 4c8cd5b0bb94e4b0566c66614882417c depends: - - max-core ==25.1.0.dev2025012705 release + - max-core ==25.1.0.dev2025012905 release - python 3.12.* - fastapi - httpx @@ -4929,13 +4920,13 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 120669382 - timestamp: 1737955017868 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025012705-3.12release.conda - sha256: 8372666a6ad71409d0ed7336e1b955dd86d1ceb3f9b96c0a098cb59a802b688e - md5: 222a46c2286742510e8ee05ad24f2523 + size: 120728426 + timestamp: 1738127911515 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025012905-3.12release.conda + sha256: 569a53d099bf8fe518e3148f6bcad3d499d8eaeeb96587c0e06e792f51161553 + md5: c5094829938eded41b20717d7f135a3e depends: - - max-core ==25.1.0.dev2025012705 release + - max-core ==25.1.0.dev2025012905 release - python 3.12.* - fastapi - httpx @@ -4956,13 +4947,13 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 123185570 - timestamp: 1737955039973 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025012705-3.12release.conda - sha256: c4894d84b65bc2e997f5c7fa10027f276b481bbb2ded68f34bd74bf1e195076a - md5: fcb3723a6dbf99dd5d6ab6895e97de58 + size: 123278531 + timestamp: 1738127836748 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025012905-3.12release.conda + sha256: c4629b7ca8859e4b1f736de64721c9998ae1b2f2f183ab496cc0ab5faa053c00 + md5: 411d19e9c18c3d8c665f765041cd9a3e depends: - - max-core ==25.1.0.dev2025012705 release + - max-core ==25.1.0.dev2025012905 release - python 3.12.* - fastapi - httpx @@ -4983,12 +4974,12 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 106061856 - timestamp: 1737956267689 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012705-release.conda + size: 106174079 + timestamp: 1738128880813 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012905-release.conda noarch: python - sha256: 90cc368b1a6ceac15f44c67517c1af7fe1dc5dce40b92f91f1830be2f6a66fb9 - md5: 15ff6d8c842fbce739084f0bbd23bd27 + sha256: 14bb3045350a288f80df5b386555586d8e035c3f7454ba8214f73cfeace26887 + md5: ee06a37bf7cb1d8ef7b646b6e7ad2bfd depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -4998,8 +4989,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130811 - timestamp: 1737955039968 + size: 130809 + timestamp: 1738127836744 - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda sha256: 78c1bbe1723449c52b7a9df1af2ee5f005209f67e40b6e1d3c7619127c43b1c7 md5: 592132998493b3ff25fd7479396e8351 @@ -5009,18 +5000,18 @@ packages: license_family: MIT size: 14465 timestamp: 1733255681319 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025012705-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025012905-release.conda noarch: python - sha256: fb3ed00e9f7df548142bb0afa9edf654413f61d1b39c6b1cbfc9cf2fbb6e04f9 - md5: 961e0d8087b0ab6e38d0e1a518438827 + sha256: 00c9bbee63d4d9d18235be72c23e10a8c63eeabef853575f4fdfa3cc4df9ac83 + md5: 646e77b26ddf8c7aba7d2a3ac21631a6 depends: - - max-core ==25.1.0.dev2025012705 release + - max-core ==25.1.0.dev2025012905 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22933 - timestamp: 1737955039968 + size: 22932 + timestamp: 1738127836744 - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py312h178313f_2.conda sha256: b05bc8252a6e957bf4a776ed5e0e61d1ba88cdc46ccb55890c72cc58b10371f4 md5: 5b5e3267d915a107eca793d52e1b780a diff --git a/examples/testing/magic.lock b/examples/testing/magic.lock index 9fc75e692a..75d69d71e3 100644 --- a/examples/testing/magic.lock +++ b/examples/testing/magic.lock @@ -43,7 +43,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.18-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda @@ -81,11 +81,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-19.0.0-hcb10f89_8_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-19.0.0-hcb10f89_8_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-19.0.0-h08228c5_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-26_linux64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-28_h59b9bed_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.1.0-hb9d3cd8_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-26_linux64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-28_he106b2a_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libcrc32c-1.1.2-h9c3ff4c_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.11.1-h332b0f4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.23-h4ddbbb0_0.conda @@ -104,7 +104,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.67.1-h25350d4_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-hd590300_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-26_linux64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-28_h7ac8fdf_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.3-hb9d3cd8_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda @@ -133,12 +133,12 @@ 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-25.1.0.dev2025012705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025012705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025012705-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025012905-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025012905-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025012905-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012905-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-25.1.0.dev2025012705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025012905-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 @@ -265,7 +265,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.18-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda @@ -304,11 +304,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-19.0.0-h3b568fd_8_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-19.0.0-h3b568fd_8_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-19.0.0-h1e9d426_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-26_linuxaarch64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-28_h1a9f1db_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlicommon-1.1.0-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlidec-1.1.0-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlienc-1.1.0-h86ecc28_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-26_linuxaarch64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-28_hab92f65_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcrc32c-1.1.2-h01db608_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcurl-8.11.1-h6702fde_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libdeflate-1.23-h5e3c512_0.conda @@ -327,7 +327,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgrpc-1.67.1-hf7ccdd3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libiconv-1.17-h31becfc_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libjpeg-turbo-3.0.0-h31becfc_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-26_linuxaarch64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-28_h411afd4_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.3-h86ecc28_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnghttp2-1.64.0-hc8609a4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda @@ -356,12 +356,12 @@ 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-25.1.0.dev2025012705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025012705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025012705-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025012905-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025012905-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025012905-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012905-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-25.1.0.dev2025012705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025012905-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 @@ -487,7 +487,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.18-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda @@ -524,11 +524,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-19.0.0-hf07054f_8_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-19.0.0-hf07054f_8_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-19.0.0-h4239455_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-26_osxarm64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-28_h10e41b3_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.1.0-hd74edd7_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.1.0-hd74edd7_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlienc-1.1.0-hd74edd7_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-26_osxarm64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-28_hb3479ef_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcrc32c-1.1.2-hbdafb3b_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.11.1-h73640d1_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda @@ -545,7 +545,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgrpc-1.67.1-h0a426d6_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.17-h0d3ecfb_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.0.0-hb547adb_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-26_osxarm64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-28_hc9a63f6_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.3-h39f12f2_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.64.0-h6d7220d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.28-openmp_hf332438_1.conda @@ -570,12 +570,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-25.1.0.dev2025012705-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025012705-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025012705-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025012905-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025012905-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025012905-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012905-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-25.1.0.dev2025012705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025012905-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 @@ -1885,16 +1885,16 @@ packages: license_family: Apache size: 347303 timestamp: 1691593908658 -- conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhd8ed1ab_1.conda - sha256: a20ebf2c9b02a6eb32412ceb5c4cffaae49417db7e75414a76417538293a9402 - md5: eaef2e94d5bd76f758545d172c1fda67 +- conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.18-pyhd8ed1ab_0.conda + sha256: d614bcff10696f1efc714df07651b50bf3808401fcc03814309ecec242cc8870 + md5: 0cef44b1754ae4d6924ac0eef6b9fdbe depends: - python >=3.9 - wrapt <2,>=1.10 license: MIT license_family: MIT - size: 14297 - timestamp: 1733662697343 + size: 14382 + timestamp: 1737987072859 - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda sha256: 4ff20c6be028be2825235631c45d9e4a75bca1de65f8840c02dfb28ea0137c45 md5: 5e4f3466526c52bc9af2d2353a1460bd @@ -2848,60 +2848,57 @@ packages: license_family: APACHE size: 449672 timestamp: 1737807386331 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-26_linux64_openblas.conda - build_number: 26 - sha256: 30bd658682b124243f8e52d8edf8a19e7be1bc31e4fe4baec30a64002dc8cd0c - md5: ac52800af2e0c0e7dac770b435ce768a +- conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-28_h59b9bed_openblas.conda + build_number: 28 + sha256: 93fbcf2800b859b7ca5add3ab5d3aa11c6a6ff4b942a1cea4bf644f78488edb8 + md5: 73e2a99fdeb8531d50168987378fda8a depends: - libopenblas >=0.3.28,<0.3.29.0a0 - libopenblas >=0.3.28,<1.0a0 constrains: - - libcblas 3.9.0 26_linux64_openblas - - liblapack 3.9.0 26_linux64_openblas - - liblapacke 3.9.0 26_linux64_openblas - - blas * openblas + - libcblas =3.9.0=28*_openblas + - blas =2.128=openblas + - liblapack =3.9.0=28*_openblas + - liblapacke =3.9.0=28*_openblas arch: x86_64 platform: linux license: BSD-3-Clause - license_family: BSD - size: 16393 - timestamp: 1734432564346 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-26_linuxaarch64_openblas.conda - build_number: 26 - sha256: df6d8ee34d45cf35609ecdd55c1ff03e32e0cd87ae41ebe4ef3747a8e09ead4d - md5: 8d900b7079a00969d70305e9aad550b7 + size: 16621 + timestamp: 1738114033763 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-28_h1a9f1db_openblas.conda + build_number: 28 + sha256: a50dc7ed1f49789aab4ffb560d9a46b5dc3f059a925282f699c1a96fa566a1a0 + md5: 88dfbb3875d62b431aa676b4a54734bf depends: - libopenblas >=0.3.28,<0.3.29.0a0 - libopenblas >=0.3.28,<1.0a0 constrains: - - blas * openblas - - liblapacke 3.9.0 26_linuxaarch64_openblas - - libcblas 3.9.0 26_linuxaarch64_openblas - - liblapack 3.9.0 26_linuxaarch64_openblas + - liblapack =3.9.0=28*_openblas + - libcblas =3.9.0=28*_openblas + - blas =2.128=openblas + - liblapacke =3.9.0=28*_openblas arch: aarch64 platform: linux license: BSD-3-Clause - license_family: BSD - size: 16477 - timestamp: 1734432576699 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-26_osxarm64_openblas.conda - build_number: 26 - sha256: 597f9c3779caa979c8c6abbb3ba8c7191b84e1a910d6b0d10e5faf35284c450c - md5: 21be102c9ae80a67ba7de23b129aa7f6 + size: 16697 + timestamp: 1738114082682 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-28_h10e41b3_openblas.conda + build_number: 28 + sha256: 5bea855a1a7435ce2238535aa4b13db8af8ee301d99a42b083b63fa64c1ea144 + md5: 166166d84a0e9571dc50210baf993b46 depends: - libopenblas >=0.3.28,<0.3.29.0a0 - libopenblas >=0.3.28,<1.0a0 constrains: - - liblapack 3.9.0 26_osxarm64_openblas - - liblapacke 3.9.0 26_osxarm64_openblas - - libcblas 3.9.0 26_osxarm64_openblas - - blas * openblas + - liblapack =3.9.0=28*_openblas + - liblapacke =3.9.0=28*_openblas + - blas =2.128=openblas + - libcblas =3.9.0=28*_openblas arch: arm64 platform: osx license: BSD-3-Clause - license_family: BSD - size: 16714 - timestamp: 1734433054681 + size: 16840 + timestamp: 1738114389937 - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hb9d3cd8_2.conda sha256: d9db2de60ea917298e658143354a530e9ca5f9c63471c65cf47ab39fd2f429e3 md5: 41b599ed2b02abcfdd84302bff174b23 @@ -3010,54 +3007,51 @@ packages: license_family: MIT size: 279644 timestamp: 1725268003553 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-26_linux64_openblas.conda - build_number: 26 - sha256: 9c74e536c9bc868e356ffd43f81c2cb398aec84b40fcadc312315b164a5500ee - md5: ebcc5f37a435aa3c19640533c82f8d76 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-28_he106b2a_openblas.conda + build_number: 28 + sha256: de293e117db53e5d78b579136509c35a5e4ad11529c05f9af83cf89be4d30de1 + md5: 4e20a1c00b4e8a984aac0f6cce59e3ac depends: - - libblas 3.9.0 26_linux64_openblas + - libblas 3.9.0 28_h59b9bed_openblas constrains: - - liblapack 3.9.0 26_linux64_openblas - - liblapacke 3.9.0 26_linux64_openblas - - blas * openblas + - blas =2.128=openblas + - liblapack =3.9.0=28*_openblas + - liblapacke =3.9.0=28*_openblas arch: x86_64 platform: linux license: BSD-3-Clause - license_family: BSD - size: 16336 - timestamp: 1734432570482 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-26_linuxaarch64_openblas.conda - build_number: 26 - sha256: 521e78be0c4170f229c43e1a6c94337a72db3ebcbe6e5960f8413aa438dcb8f9 - md5: d77f943ae4083f3aeddca698f2d28262 - depends: - - libblas 3.9.0 26_linuxaarch64_openblas + size: 16539 + timestamp: 1738114043618 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-28_hab92f65_openblas.conda + build_number: 28 + sha256: ed62f13a85726f568e17ad569b5cc01a49a6c7bd334802cf1c1b15e9d10e7e93 + md5: 8cff453f547365131be5647c7680ac6d + depends: + - libblas 3.9.0 28_h1a9f1db_openblas constrains: - - blas * openblas - - liblapacke 3.9.0 26_linuxaarch64_openblas - - liblapack 3.9.0 26_linuxaarch64_openblas + - liblapack =3.9.0=28*_openblas + - blas =2.128=openblas + - liblapacke =3.9.0=28*_openblas arch: aarch64 platform: linux license: BSD-3-Clause - license_family: BSD - size: 16398 - timestamp: 1734432580937 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-26_osxarm64_openblas.conda - build_number: 26 - sha256: 27a29ef6b2fd2179bc3a0bb9db351f078ba140ca10485dca147c399639f84c93 - md5: a0e9980fe12d42f6d0c0ec009f67e948 - depends: - - libblas 3.9.0 26_osxarm64_openblas + size: 16655 + timestamp: 1738114088527 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-28_hb3479ef_openblas.conda + build_number: 28 + sha256: f08adea59381babb3568e6d23e52aff874cbc25f299821647ab1127d1e1332ca + md5: 30942dea911ce333765003a8adec4e8a + depends: + - libblas 3.9.0 28_h10e41b3_openblas constrains: - - liblapack 3.9.0 26_osxarm64_openblas - - liblapacke 3.9.0 26_osxarm64_openblas - - blas * openblas + - blas =2.128=openblas + - liblapacke =3.9.0=28*_openblas + - liblapack =3.9.0=28*_openblas arch: arm64 platform: osx license: BSD-3-Clause - license_family: BSD - size: 16628 - timestamp: 1734433061517 + size: 16788 + timestamp: 1738114399962 - conda: https://conda.anaconda.org/conda-forge/linux-64/libcrc32c-1.1.2-h9c3ff4c_0.tar.bz2 sha256: fd1d153962764433fe6233f34a72cdeed5dcf8a883a85769e8295ce940b5b0c5 md5: c965a5aa0d5c1c37ffc62dff36e28400 @@ -3759,54 +3753,51 @@ packages: license: IJG AND BSD-3-Clause AND Zlib size: 547541 timestamp: 1694475104253 -- conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-26_linux64_openblas.conda - build_number: 26 - sha256: b76458c36331376911e0f98fa68109e02f4d5e5ebfffa79587ac69cef748bba1 - md5: 3792604c43695d6a273bc5faaac47d48 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-28_h7ac8fdf_openblas.conda + build_number: 28 + sha256: 9530e6840690b78360946390a1d29624734a6b624f02c26631fb451592cbb8ef + md5: 069f40bfbf1dc55c83ddb07fc6a6ef8d depends: - - libblas 3.9.0 26_linux64_openblas + - libblas 3.9.0 28_h59b9bed_openblas constrains: - - libcblas 3.9.0 26_linux64_openblas - - liblapacke 3.9.0 26_linux64_openblas - - blas * openblas + - libcblas =3.9.0=28*_openblas + - blas =2.128=openblas + - liblapacke =3.9.0=28*_openblas arch: x86_64 platform: linux license: BSD-3-Clause - license_family: BSD - size: 16338 - timestamp: 1734432576650 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-26_linuxaarch64_openblas.conda - build_number: 26 - sha256: a42bd01498efe2ccf6d08d56ac3cbd3ceab79e06699ff5aac3da8e45a66738f7 - md5: a5d4e18876393633da62fd8492c00156 - depends: - - libblas 3.9.0 26_linuxaarch64_openblas + size: 16553 + timestamp: 1738114053556 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-28_h411afd4_openblas.conda + build_number: 28 + sha256: 1290ce1071a586e22bdd7d8f4c48000cc0005f0a67660be150d1ea5c6092129f + md5: bc4c5ee31476521e202356b56bba6077 + depends: + - libblas 3.9.0 28_h1a9f1db_openblas constrains: - - blas * openblas - - liblapacke 3.9.0 26_linuxaarch64_openblas - - libcblas 3.9.0 26_linuxaarch64_openblas + - liblapacke =3.9.0=28*_openblas + - libcblas =3.9.0=28*_openblas + - blas =2.128=openblas arch: aarch64 platform: linux license: BSD-3-Clause - license_family: BSD - size: 16403 - timestamp: 1734432585123 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-26_osxarm64_openblas.conda - build_number: 26 - sha256: dd6d9a21e672aee4332f019c8229ce70cf5eaf6c2f4cbd1443b105fb66c00dc5 - md5: cebad79038a75cfd28fa90d147a2d34d - depends: - - libblas 3.9.0 26_osxarm64_openblas + size: 16637 + timestamp: 1738114094310 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-28_hc9a63f6_openblas.conda + build_number: 28 + sha256: 79c75a02bff20f8b001e6aecfee8d22a51552c3986e7037fca68e5ed071cc213 + md5: 45f26652530b558c21083ceb7adaf273 + depends: + - libblas 3.9.0 28_h10e41b3_openblas constrains: - - liblapacke 3.9.0 26_osxarm64_openblas - - libcblas 3.9.0 26_osxarm64_openblas - - blas * openblas + - blas =2.128=openblas + - liblapacke =3.9.0=28*_openblas + - libcblas =3.9.0=28*_openblas arch: arm64 platform: osx license: BSD-3-Clause - license_family: BSD - size: 16624 - timestamp: 1734433068120 + size: 16793 + timestamp: 1738114407021 - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.3-hb9d3cd8_1.conda sha256: e6e425252f3839e2756e4af1ea2074dffd3396c161bf460629f9dfd6a65f15c6 md5: 2ecf2f1c7e4e21fcfe6423a51a992d84 @@ -4868,47 +4859,47 @@ packages: license_family: BSD size: 24048 timestamp: 1733219945697 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025012705-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025012905-release.conda noarch: python - sha256: 858899a14213e31412668b979537779ddaf730cad15593c3be3602d30d925cd3 - md5: 0788ab9a7003126a6d7285d3fb912104 + sha256: 128e24b31c4d5852e70066a0d29b2b72c5fa442541a51edeb51c84553b078c21 + md5: c74a71227a86ff11c0b1f454df78753a depends: - - max-core ==25.1.0.dev2025012705 release - - max-python >=25.1.0.dev2025012705,<26.0a0 - - mojo-jupyter ==25.1.0.dev2025012705 release - - mblack ==25.1.0.dev2025012705 release + - max-core ==25.1.0.dev2025012905 release + - max-python >=25.1.0.dev2025012905,<26.0a0 + - mojo-jupyter ==25.1.0.dev2025012905 release + - mblack ==25.1.0.dev2025012905 release license: LicenseRef-Modular-Proprietary - size: 9922 - timestamp: 1737955039963 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025012705-release.conda - sha256: d860e83c54d3824879bb5ae313ec290164a00c6aa33b3b6a613a52f5533f7f87 - md5: c2ef9257cbac5945ec0269b52400177b + size: 9917 + timestamp: 1738127836739 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025012905-release.conda + sha256: 912bd4ab637f60a1da328f0ec8502737e37ce4fdbbeede25c6c40b58a808a34d + md5: 4ffb2fe54ee89169f96d8c74292af542 depends: - - mblack ==25.1.0.dev2025012705 release + - mblack ==25.1.0.dev2025012905 release license: LicenseRef-Modular-Proprietary - size: 243456501 - timestamp: 1737955017859 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025012705-release.conda - sha256: 911fa0d215f2aef388f1b69600312c84fe8aa62300e8090e4970ede5519eeff3 - md5: 85e8cd9ee3ac21238a923b938e997c48 + size: 243535907 + timestamp: 1738127911507 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025012905-release.conda + sha256: e1ccfb768b5cc84198eb0c8c8d273d4ce6cda149427479089bc484440105e67d + md5: 5a919171033c9dfe518aef703b7ec3d8 depends: - - mblack ==25.1.0.dev2025012705 release + - mblack ==25.1.0.dev2025012905 release license: LicenseRef-Modular-Proprietary - size: 245946155 - timestamp: 1737955039961 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025012705-release.conda - sha256: f338470aae98f63c08c9dda7d9b94c559a21055509c2ed924cb55441c8b60ba9 - md5: 44cfd5ca1dc48bab35146702380ac083 + size: 246085619 + timestamp: 1738127836737 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025012905-release.conda + sha256: 58573782ee40eb77b183e93988590d11184302e8cc257673cb72745b0447d204 + md5: 9dc83277bf38cbd419f52909847ed796 depends: - - mblack ==25.1.0.dev2025012705 release + - mblack ==25.1.0.dev2025012905 release license: LicenseRef-Modular-Proprietary - size: 205169482 - timestamp: 1737956267686 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025012705-3.12release.conda - sha256: 0a18a085825c9fa2bf3e575310837f3dbdddc96b7aaea8b651e3eae61c02530f - md5: 42d30c788187591cf4b61d3ef4129e38 + size: 205298533 + timestamp: 1738128880810 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025012905-3.12release.conda + sha256: 1cb5820b79790fbcdf69a17d3f2de668e335afda26d4896dc5d8df7495c3f2fc + md5: 4c8cd5b0bb94e4b0566c66614882417c depends: - - max-core ==25.1.0.dev2025012705 release + - max-core ==25.1.0.dev2025012905 release - python 3.12.* - fastapi - httpx @@ -4929,13 +4920,13 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 120669382 - timestamp: 1737955017868 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025012705-3.12release.conda - sha256: 8372666a6ad71409d0ed7336e1b955dd86d1ceb3f9b96c0a098cb59a802b688e - md5: 222a46c2286742510e8ee05ad24f2523 + size: 120728426 + timestamp: 1738127911515 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025012905-3.12release.conda + sha256: 569a53d099bf8fe518e3148f6bcad3d499d8eaeeb96587c0e06e792f51161553 + md5: c5094829938eded41b20717d7f135a3e depends: - - max-core ==25.1.0.dev2025012705 release + - max-core ==25.1.0.dev2025012905 release - python 3.12.* - fastapi - httpx @@ -4956,13 +4947,13 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 123185570 - timestamp: 1737955039973 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025012705-3.12release.conda - sha256: c4894d84b65bc2e997f5c7fa10027f276b481bbb2ded68f34bd74bf1e195076a - md5: fcb3723a6dbf99dd5d6ab6895e97de58 + size: 123278531 + timestamp: 1738127836748 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025012905-3.12release.conda + sha256: c4629b7ca8859e4b1f736de64721c9998ae1b2f2f183ab496cc0ab5faa053c00 + md5: 411d19e9c18c3d8c665f765041cd9a3e depends: - - max-core ==25.1.0.dev2025012705 release + - max-core ==25.1.0.dev2025012905 release - python 3.12.* - fastapi - httpx @@ -4983,12 +4974,12 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 106061856 - timestamp: 1737956267689 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012705-release.conda + size: 106174079 + timestamp: 1738128880813 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012905-release.conda noarch: python - sha256: 90cc368b1a6ceac15f44c67517c1af7fe1dc5dce40b92f91f1830be2f6a66fb9 - md5: 15ff6d8c842fbce739084f0bbd23bd27 + sha256: 14bb3045350a288f80df5b386555586d8e035c3f7454ba8214f73cfeace26887 + md5: ee06a37bf7cb1d8ef7b646b6e7ad2bfd depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -4998,8 +4989,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130811 - timestamp: 1737955039968 + size: 130809 + timestamp: 1738127836744 - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda sha256: 78c1bbe1723449c52b7a9df1af2ee5f005209f67e40b6e1d3c7619127c43b1c7 md5: 592132998493b3ff25fd7479396e8351 @@ -5009,18 +5000,18 @@ packages: license_family: MIT size: 14465 timestamp: 1733255681319 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025012705-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025012905-release.conda noarch: python - sha256: fb3ed00e9f7df548142bb0afa9edf654413f61d1b39c6b1cbfc9cf2fbb6e04f9 - md5: 961e0d8087b0ab6e38d0e1a518438827 + sha256: 00c9bbee63d4d9d18235be72c23e10a8c63eeabef853575f4fdfa3cc4df9ac83 + md5: 646e77b26ddf8c7aba7d2a3ac21631a6 depends: - - max-core ==25.1.0.dev2025012705 release + - max-core ==25.1.0.dev2025012905 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22933 - timestamp: 1737955039968 + size: 22932 + timestamp: 1738127836744 - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py312h178313f_2.conda sha256: b05bc8252a6e957bf4a776ed5e0e61d1ba88cdc46ccb55890c72cc58b10371f4 md5: 5b5e3267d915a107eca793d52e1b780a diff --git a/magic.lock b/magic.lock index 17140d55cc..8a4e8843f2 100644 --- a/magic.lock +++ b/magic.lock @@ -43,7 +43,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.18-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda @@ -81,11 +81,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-19.0.0-hcb10f89_8_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-19.0.0-hcb10f89_8_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-19.0.0-h08228c5_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-26_linux64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-28_h59b9bed_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.1.0-hb9d3cd8_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-26_linux64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-28_he106b2a_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libcrc32c-1.1.2-h9c3ff4c_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.11.1-h332b0f4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.23-h4ddbbb0_0.conda @@ -104,7 +104,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.67.1-h25350d4_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-hd590300_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-26_linux64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-28_h7ac8fdf_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.3-hb9d3cd8_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda @@ -134,12 +134,12 @@ 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-25.1.0.dev2025012705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025012705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025012705-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025012905-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025012905-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025012905-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012905-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-25.1.0.dev2025012705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025012905-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 @@ -266,7 +266,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.18-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda @@ -305,11 +305,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-19.0.0-h3b568fd_8_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-19.0.0-h3b568fd_8_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-19.0.0-h1e9d426_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-26_linuxaarch64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-28_h1a9f1db_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlicommon-1.1.0-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlidec-1.1.0-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlienc-1.1.0-h86ecc28_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-26_linuxaarch64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-28_hab92f65_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcrc32c-1.1.2-h01db608_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcurl-8.11.1-h6702fde_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libdeflate-1.23-h5e3c512_0.conda @@ -328,7 +328,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgrpc-1.67.1-hf7ccdd3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libiconv-1.17-h31becfc_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libjpeg-turbo-3.0.0-h31becfc_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-26_linuxaarch64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-28_h411afd4_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.3-h86ecc28_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnghttp2-1.64.0-hc8609a4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda @@ -358,12 +358,12 @@ 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-25.1.0.dev2025012705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025012705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025012705-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025012905-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025012905-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025012905-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012905-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-25.1.0.dev2025012705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025012905-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 @@ -489,7 +489,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.18-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda @@ -526,11 +526,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-19.0.0-hf07054f_8_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-19.0.0-hf07054f_8_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-19.0.0-h4239455_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-26_osxarm64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-28_h10e41b3_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.1.0-hd74edd7_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.1.0-hd74edd7_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlienc-1.1.0-hd74edd7_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-26_osxarm64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-28_hb3479ef_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcrc32c-1.1.2-hbdafb3b_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.11.1-h73640d1_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda @@ -547,7 +547,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgrpc-1.67.1-h0a426d6_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.17-h0d3ecfb_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.0.0-hb547adb_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-26_osxarm64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-28_hc9a63f6_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.3-h39f12f2_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.64.0-h6d7220d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.28-openmp_hf332438_1.conda @@ -573,12 +573,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-25.1.0.dev2025012705-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025012705-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025012705-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025012905-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025012905-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025012905-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012905-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-25.1.0.dev2025012705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025012905-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 @@ -1888,16 +1888,16 @@ packages: license_family: Apache size: 347303 timestamp: 1691593908658 -- conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhd8ed1ab_1.conda - sha256: a20ebf2c9b02a6eb32412ceb5c4cffaae49417db7e75414a76417538293a9402 - md5: eaef2e94d5bd76f758545d172c1fda67 +- conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.18-pyhd8ed1ab_0.conda + sha256: d614bcff10696f1efc714df07651b50bf3808401fcc03814309ecec242cc8870 + md5: 0cef44b1754ae4d6924ac0eef6b9fdbe depends: - python >=3.9 - wrapt <2,>=1.10 license: MIT license_family: MIT - size: 14297 - timestamp: 1733662697343 + size: 14382 + timestamp: 1737987072859 - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda sha256: 4ff20c6be028be2825235631c45d9e4a75bca1de65f8840c02dfb28ea0137c45 md5: 5e4f3466526c52bc9af2d2353a1460bd @@ -2851,60 +2851,57 @@ packages: license_family: APACHE size: 449672 timestamp: 1737807386331 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-26_linux64_openblas.conda - build_number: 26 - sha256: 30bd658682b124243f8e52d8edf8a19e7be1bc31e4fe4baec30a64002dc8cd0c - md5: ac52800af2e0c0e7dac770b435ce768a +- conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-28_h59b9bed_openblas.conda + build_number: 28 + sha256: 93fbcf2800b859b7ca5add3ab5d3aa11c6a6ff4b942a1cea4bf644f78488edb8 + md5: 73e2a99fdeb8531d50168987378fda8a depends: - libopenblas >=0.3.28,<0.3.29.0a0 - libopenblas >=0.3.28,<1.0a0 constrains: - - libcblas 3.9.0 26_linux64_openblas - - liblapack 3.9.0 26_linux64_openblas - - liblapacke 3.9.0 26_linux64_openblas - - blas * openblas + - libcblas =3.9.0=28*_openblas + - blas =2.128=openblas + - liblapack =3.9.0=28*_openblas + - liblapacke =3.9.0=28*_openblas arch: x86_64 platform: linux license: BSD-3-Clause - license_family: BSD - size: 16393 - timestamp: 1734432564346 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-26_linuxaarch64_openblas.conda - build_number: 26 - sha256: df6d8ee34d45cf35609ecdd55c1ff03e32e0cd87ae41ebe4ef3747a8e09ead4d - md5: 8d900b7079a00969d70305e9aad550b7 + size: 16621 + timestamp: 1738114033763 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-28_h1a9f1db_openblas.conda + build_number: 28 + sha256: a50dc7ed1f49789aab4ffb560d9a46b5dc3f059a925282f699c1a96fa566a1a0 + md5: 88dfbb3875d62b431aa676b4a54734bf depends: - libopenblas >=0.3.28,<0.3.29.0a0 - libopenblas >=0.3.28,<1.0a0 constrains: - - blas * openblas - - liblapacke 3.9.0 26_linuxaarch64_openblas - - libcblas 3.9.0 26_linuxaarch64_openblas - - liblapack 3.9.0 26_linuxaarch64_openblas + - liblapack =3.9.0=28*_openblas + - libcblas =3.9.0=28*_openblas + - blas =2.128=openblas + - liblapacke =3.9.0=28*_openblas arch: aarch64 platform: linux license: BSD-3-Clause - license_family: BSD - size: 16477 - timestamp: 1734432576699 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-26_osxarm64_openblas.conda - build_number: 26 - sha256: 597f9c3779caa979c8c6abbb3ba8c7191b84e1a910d6b0d10e5faf35284c450c - md5: 21be102c9ae80a67ba7de23b129aa7f6 + size: 16697 + timestamp: 1738114082682 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-28_h10e41b3_openblas.conda + build_number: 28 + sha256: 5bea855a1a7435ce2238535aa4b13db8af8ee301d99a42b083b63fa64c1ea144 + md5: 166166d84a0e9571dc50210baf993b46 depends: - libopenblas >=0.3.28,<0.3.29.0a0 - libopenblas >=0.3.28,<1.0a0 constrains: - - liblapack 3.9.0 26_osxarm64_openblas - - liblapacke 3.9.0 26_osxarm64_openblas - - libcblas 3.9.0 26_osxarm64_openblas - - blas * openblas + - liblapack =3.9.0=28*_openblas + - liblapacke =3.9.0=28*_openblas + - blas =2.128=openblas + - libcblas =3.9.0=28*_openblas arch: arm64 platform: osx license: BSD-3-Clause - license_family: BSD - size: 16714 - timestamp: 1734433054681 + size: 16840 + timestamp: 1738114389937 - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hb9d3cd8_2.conda sha256: d9db2de60ea917298e658143354a530e9ca5f9c63471c65cf47ab39fd2f429e3 md5: 41b599ed2b02abcfdd84302bff174b23 @@ -3013,54 +3010,51 @@ packages: license_family: MIT size: 279644 timestamp: 1725268003553 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-26_linux64_openblas.conda - build_number: 26 - sha256: 9c74e536c9bc868e356ffd43f81c2cb398aec84b40fcadc312315b164a5500ee - md5: ebcc5f37a435aa3c19640533c82f8d76 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-28_he106b2a_openblas.conda + build_number: 28 + sha256: de293e117db53e5d78b579136509c35a5e4ad11529c05f9af83cf89be4d30de1 + md5: 4e20a1c00b4e8a984aac0f6cce59e3ac depends: - - libblas 3.9.0 26_linux64_openblas + - libblas 3.9.0 28_h59b9bed_openblas constrains: - - liblapack 3.9.0 26_linux64_openblas - - liblapacke 3.9.0 26_linux64_openblas - - blas * openblas + - blas =2.128=openblas + - liblapack =3.9.0=28*_openblas + - liblapacke =3.9.0=28*_openblas arch: x86_64 platform: linux license: BSD-3-Clause - license_family: BSD - size: 16336 - timestamp: 1734432570482 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-26_linuxaarch64_openblas.conda - build_number: 26 - sha256: 521e78be0c4170f229c43e1a6c94337a72db3ebcbe6e5960f8413aa438dcb8f9 - md5: d77f943ae4083f3aeddca698f2d28262 - depends: - - libblas 3.9.0 26_linuxaarch64_openblas + size: 16539 + timestamp: 1738114043618 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-28_hab92f65_openblas.conda + build_number: 28 + sha256: ed62f13a85726f568e17ad569b5cc01a49a6c7bd334802cf1c1b15e9d10e7e93 + md5: 8cff453f547365131be5647c7680ac6d + depends: + - libblas 3.9.0 28_h1a9f1db_openblas constrains: - - blas * openblas - - liblapacke 3.9.0 26_linuxaarch64_openblas - - liblapack 3.9.0 26_linuxaarch64_openblas + - liblapack =3.9.0=28*_openblas + - blas =2.128=openblas + - liblapacke =3.9.0=28*_openblas arch: aarch64 platform: linux license: BSD-3-Clause - license_family: BSD - size: 16398 - timestamp: 1734432580937 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-26_osxarm64_openblas.conda - build_number: 26 - sha256: 27a29ef6b2fd2179bc3a0bb9db351f078ba140ca10485dca147c399639f84c93 - md5: a0e9980fe12d42f6d0c0ec009f67e948 - depends: - - libblas 3.9.0 26_osxarm64_openblas + size: 16655 + timestamp: 1738114088527 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-28_hb3479ef_openblas.conda + build_number: 28 + sha256: f08adea59381babb3568e6d23e52aff874cbc25f299821647ab1127d1e1332ca + md5: 30942dea911ce333765003a8adec4e8a + depends: + - libblas 3.9.0 28_h10e41b3_openblas constrains: - - liblapack 3.9.0 26_osxarm64_openblas - - liblapacke 3.9.0 26_osxarm64_openblas - - blas * openblas + - blas =2.128=openblas + - liblapacke =3.9.0=28*_openblas + - liblapack =3.9.0=28*_openblas arch: arm64 platform: osx license: BSD-3-Clause - license_family: BSD - size: 16628 - timestamp: 1734433061517 + size: 16788 + timestamp: 1738114399962 - conda: https://conda.anaconda.org/conda-forge/linux-64/libcrc32c-1.1.2-h9c3ff4c_0.tar.bz2 sha256: fd1d153962764433fe6233f34a72cdeed5dcf8a883a85769e8295ce940b5b0c5 md5: c965a5aa0d5c1c37ffc62dff36e28400 @@ -3762,54 +3756,51 @@ packages: license: IJG AND BSD-3-Clause AND Zlib size: 547541 timestamp: 1694475104253 -- conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-26_linux64_openblas.conda - build_number: 26 - sha256: b76458c36331376911e0f98fa68109e02f4d5e5ebfffa79587ac69cef748bba1 - md5: 3792604c43695d6a273bc5faaac47d48 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-28_h7ac8fdf_openblas.conda + build_number: 28 + sha256: 9530e6840690b78360946390a1d29624734a6b624f02c26631fb451592cbb8ef + md5: 069f40bfbf1dc55c83ddb07fc6a6ef8d depends: - - libblas 3.9.0 26_linux64_openblas + - libblas 3.9.0 28_h59b9bed_openblas constrains: - - libcblas 3.9.0 26_linux64_openblas - - liblapacke 3.9.0 26_linux64_openblas - - blas * openblas + - libcblas =3.9.0=28*_openblas + - blas =2.128=openblas + - liblapacke =3.9.0=28*_openblas arch: x86_64 platform: linux license: BSD-3-Clause - license_family: BSD - size: 16338 - timestamp: 1734432576650 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-26_linuxaarch64_openblas.conda - build_number: 26 - sha256: a42bd01498efe2ccf6d08d56ac3cbd3ceab79e06699ff5aac3da8e45a66738f7 - md5: a5d4e18876393633da62fd8492c00156 - depends: - - libblas 3.9.0 26_linuxaarch64_openblas + size: 16553 + timestamp: 1738114053556 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-28_h411afd4_openblas.conda + build_number: 28 + sha256: 1290ce1071a586e22bdd7d8f4c48000cc0005f0a67660be150d1ea5c6092129f + md5: bc4c5ee31476521e202356b56bba6077 + depends: + - libblas 3.9.0 28_h1a9f1db_openblas constrains: - - blas * openblas - - liblapacke 3.9.0 26_linuxaarch64_openblas - - libcblas 3.9.0 26_linuxaarch64_openblas + - liblapacke =3.9.0=28*_openblas + - libcblas =3.9.0=28*_openblas + - blas =2.128=openblas arch: aarch64 platform: linux license: BSD-3-Clause - license_family: BSD - size: 16403 - timestamp: 1734432585123 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-26_osxarm64_openblas.conda - build_number: 26 - sha256: dd6d9a21e672aee4332f019c8229ce70cf5eaf6c2f4cbd1443b105fb66c00dc5 - md5: cebad79038a75cfd28fa90d147a2d34d - depends: - - libblas 3.9.0 26_osxarm64_openblas + size: 16637 + timestamp: 1738114094310 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-28_hc9a63f6_openblas.conda + build_number: 28 + sha256: 79c75a02bff20f8b001e6aecfee8d22a51552c3986e7037fca68e5ed071cc213 + md5: 45f26652530b558c21083ceb7adaf273 + depends: + - libblas 3.9.0 28_h10e41b3_openblas constrains: - - liblapacke 3.9.0 26_osxarm64_openblas - - libcblas 3.9.0 26_osxarm64_openblas - - blas * openblas + - blas =2.128=openblas + - liblapacke =3.9.0=28*_openblas + - libcblas =3.9.0=28*_openblas arch: arm64 platform: osx license: BSD-3-Clause - license_family: BSD - size: 16624 - timestamp: 1734433068120 + size: 16793 + timestamp: 1738114407021 - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.3-hb9d3cd8_1.conda sha256: e6e425252f3839e2756e4af1ea2074dffd3396c161bf460629f9dfd6a65f15c6 md5: 2ecf2f1c7e4e21fcfe6423a51a992d84 @@ -4880,47 +4871,47 @@ packages: license_family: BSD size: 24048 timestamp: 1733219945697 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025012705-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025012905-release.conda noarch: python - sha256: 858899a14213e31412668b979537779ddaf730cad15593c3be3602d30d925cd3 - md5: 0788ab9a7003126a6d7285d3fb912104 + sha256: 128e24b31c4d5852e70066a0d29b2b72c5fa442541a51edeb51c84553b078c21 + md5: c74a71227a86ff11c0b1f454df78753a depends: - - max-core ==25.1.0.dev2025012705 release - - max-python >=25.1.0.dev2025012705,<26.0a0 - - mojo-jupyter ==25.1.0.dev2025012705 release - - mblack ==25.1.0.dev2025012705 release + - max-core ==25.1.0.dev2025012905 release + - max-python >=25.1.0.dev2025012905,<26.0a0 + - mojo-jupyter ==25.1.0.dev2025012905 release + - mblack ==25.1.0.dev2025012905 release license: LicenseRef-Modular-Proprietary - size: 9922 - timestamp: 1737955039963 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025012705-release.conda - sha256: d860e83c54d3824879bb5ae313ec290164a00c6aa33b3b6a613a52f5533f7f87 - md5: c2ef9257cbac5945ec0269b52400177b + size: 9917 + timestamp: 1738127836739 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025012905-release.conda + sha256: 912bd4ab637f60a1da328f0ec8502737e37ce4fdbbeede25c6c40b58a808a34d + md5: 4ffb2fe54ee89169f96d8c74292af542 depends: - - mblack ==25.1.0.dev2025012705 release + - mblack ==25.1.0.dev2025012905 release license: LicenseRef-Modular-Proprietary - size: 243456501 - timestamp: 1737955017859 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025012705-release.conda - sha256: 911fa0d215f2aef388f1b69600312c84fe8aa62300e8090e4970ede5519eeff3 - md5: 85e8cd9ee3ac21238a923b938e997c48 + size: 243535907 + timestamp: 1738127911507 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025012905-release.conda + sha256: e1ccfb768b5cc84198eb0c8c8d273d4ce6cda149427479089bc484440105e67d + md5: 5a919171033c9dfe518aef703b7ec3d8 depends: - - mblack ==25.1.0.dev2025012705 release + - mblack ==25.1.0.dev2025012905 release license: LicenseRef-Modular-Proprietary - size: 245946155 - timestamp: 1737955039961 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025012705-release.conda - sha256: f338470aae98f63c08c9dda7d9b94c559a21055509c2ed924cb55441c8b60ba9 - md5: 44cfd5ca1dc48bab35146702380ac083 + size: 246085619 + timestamp: 1738127836737 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025012905-release.conda + sha256: 58573782ee40eb77b183e93988590d11184302e8cc257673cb72745b0447d204 + md5: 9dc83277bf38cbd419f52909847ed796 depends: - - mblack ==25.1.0.dev2025012705 release + - mblack ==25.1.0.dev2025012905 release license: LicenseRef-Modular-Proprietary - size: 205169482 - timestamp: 1737956267686 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025012705-3.12release.conda - sha256: 0a18a085825c9fa2bf3e575310837f3dbdddc96b7aaea8b651e3eae61c02530f - md5: 42d30c788187591cf4b61d3ef4129e38 + size: 205298533 + timestamp: 1738128880810 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025012905-3.12release.conda + sha256: 1cb5820b79790fbcdf69a17d3f2de668e335afda26d4896dc5d8df7495c3f2fc + md5: 4c8cd5b0bb94e4b0566c66614882417c depends: - - max-core ==25.1.0.dev2025012705 release + - max-core ==25.1.0.dev2025012905 release - python 3.12.* - fastapi - httpx @@ -4941,13 +4932,13 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 120669382 - timestamp: 1737955017868 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025012705-3.12release.conda - sha256: 8372666a6ad71409d0ed7336e1b955dd86d1ceb3f9b96c0a098cb59a802b688e - md5: 222a46c2286742510e8ee05ad24f2523 + size: 120728426 + timestamp: 1738127911515 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025012905-3.12release.conda + sha256: 569a53d099bf8fe518e3148f6bcad3d499d8eaeeb96587c0e06e792f51161553 + md5: c5094829938eded41b20717d7f135a3e depends: - - max-core ==25.1.0.dev2025012705 release + - max-core ==25.1.0.dev2025012905 release - python 3.12.* - fastapi - httpx @@ -4968,13 +4959,13 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 123185570 - timestamp: 1737955039973 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025012705-3.12release.conda - sha256: c4894d84b65bc2e997f5c7fa10027f276b481bbb2ded68f34bd74bf1e195076a - md5: fcb3723a6dbf99dd5d6ab6895e97de58 + size: 123278531 + timestamp: 1738127836748 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025012905-3.12release.conda + sha256: c4629b7ca8859e4b1f736de64721c9998ae1b2f2f183ab496cc0ab5faa053c00 + md5: 411d19e9c18c3d8c665f765041cd9a3e depends: - - max-core ==25.1.0.dev2025012705 release + - max-core ==25.1.0.dev2025012905 release - python 3.12.* - fastapi - httpx @@ -4995,12 +4986,12 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 106061856 - timestamp: 1737956267689 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012705-release.conda + size: 106174079 + timestamp: 1738128880813 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012905-release.conda noarch: python - sha256: 90cc368b1a6ceac15f44c67517c1af7fe1dc5dce40b92f91f1830be2f6a66fb9 - md5: 15ff6d8c842fbce739084f0bbd23bd27 + sha256: 14bb3045350a288f80df5b386555586d8e035c3f7454ba8214f73cfeace26887 + md5: ee06a37bf7cb1d8ef7b646b6e7ad2bfd depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -5010,8 +5001,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130811 - timestamp: 1737955039968 + size: 130809 + timestamp: 1738127836744 - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda sha256: 78c1bbe1723449c52b7a9df1af2ee5f005209f67e40b6e1d3c7619127c43b1c7 md5: 592132998493b3ff25fd7479396e8351 @@ -5021,18 +5012,18 @@ packages: license_family: MIT size: 14465 timestamp: 1733255681319 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025012705-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025012905-release.conda noarch: python - sha256: fb3ed00e9f7df548142bb0afa9edf654413f61d1b39c6b1cbfc9cf2fbb6e04f9 - md5: 961e0d8087b0ab6e38d0e1a518438827 + sha256: 00c9bbee63d4d9d18235be72c23e10a8c63eeabef853575f4fdfa3cc4df9ac83 + md5: 646e77b26ddf8c7aba7d2a3ac21631a6 depends: - - max-core ==25.1.0.dev2025012705 release + - max-core ==25.1.0.dev2025012905 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22933 - timestamp: 1737955039968 + size: 22932 + timestamp: 1738127836744 - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py312h178313f_2.conda sha256: b05bc8252a6e957bf4a776ed5e0e61d1ba88cdc46ccb55890c72cc58b10371f4 md5: 5b5e3267d915a107eca793d52e1b780a From 4b185ffb59347dacdfa0d396b875173eecb5f7b8 Mon Sep 17 00:00:00 2001 From: ematejska Date: Wed, 29 Jan 2025 11:45:29 -0800 Subject: [PATCH 314/509] Update check_pr_target.yml The main branch is the new contribution branch. Signed-off-by: ematejska --- .github/workflows/check_pr_target.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/check_pr_target.yml b/.github/workflows/check_pr_target.yml index c86c4ed4b3..4e333baf2a 100644 --- a/.github/workflows/check_pr_target.yml +++ b/.github/workflows/check_pr_target.yml @@ -20,9 +20,9 @@ jobs: shell: bash steps: - - name: Fail if not targeting nightly branch - if: ${{ github.base_ref != 'nightly' }} + - name: Fail if not targeting main branch + if: ${{ github.base_ref != 'main' }} run: | - echo "PRs must be targeted to merge to the nightly branch!" + echo "PRs must be targeted to merge to the main branch!" echo "PR is currently targeting: \"${{ github.base_ref }}\"" exit 1 From 76a0af35202d744d023b8e0686675ccd5d1d67ed Mon Sep 17 00:00:00 2001 From: ematejska Date: Wed, 29 Jan 2025 11:54:43 -0800 Subject: [PATCH 315/509] [docs] Update documentation for main branch getting nightly updates and stable added (#3978) Update documentation for main branch getting nightly updates --- CONTRIBUTING.md | 22 +++++++++++----------- README.md | 19 +++++++++---------- docs/changelog-released.md | 2 +- stdlib/docs/development.md | 4 ++-- stdlib/docs/internal/README.md | 2 +- 5 files changed, 24 insertions(+), 25 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 72f230da1b..4ad284fa1c 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -200,7 +200,7 @@ Library, Mojo examples, or Mojo documentation. This page gives an overview of the process. For a more detailed walkthrough, see [How to contribute to the Mojo standard library: a step-by-step guide](https://www.modular.com/blog/how-to-contribute-to-mojo-standard-library-a-step-by-step-guide). -**Note:** Pull requests should be submitted against the `nightly` branch, +**Note:** Pull requests should be submitted against the `main` branch, which represents the most recent nightly build. ### Pull request process @@ -243,10 +243,10 @@ git fetch upstream #### Branching off nightly -Make sure to branch off `nightly` to work on your PR: +Make sure to branch off `main` to work on your PR: ```bash -git checkout upstream/nightly +git checkout upstream/main git checkout -b my-fix-pr ``` @@ -255,20 +255,20 @@ before raising a PR: ```bash git fetch upstream -git rebase upstream/nightly +git rebase upstream/main ``` #### Getting the nightly Mojo compiler -Now that you're on the nightly branch, you need to install the latest nightly +Now that you're on the main branch, you need to install the latest nightly build. -If you're using [`magic`](https://docs.modular.com/magic), create a new -project environment with the `max-nightly` channel like this: +If you're using [`magic`](https://docs.modular.com/magic) (version 0.6.4 or +higher), create a new project environment like this and it will install the +latest nightly version of `max` by default: ```bash -magic init mojo-nightly --format mojoproject \ - -c conda-forge -c https://conda.modular.com/max-nightly +magic init mojo-nightly --format mojoproject ``` If you're [using conda](https://docs.modular.com/magic/conda), add the @@ -299,7 +299,7 @@ when using the stable release! If your change is one of the improvements described above or it has been discussed and agreed upon by the project maintainers, please create a pull -request into the `nightly` branch. +request into the `main` branch. First push your changes: @@ -314,7 +314,7 @@ remote: Create a pull request for 'my-fix-pr' on GitHub by visiting: remote: https://github.com/jackos/mojo/pull/new/my-fix-pr ``` -Make sure you point it to the `nightly` branch: +Make sure you point it to the `main` branch: ![Base Branch](stdlib/docs/images/base-branch.png) diff --git a/README.md b/README.md index 5774ca462a..3dac78f624 100644 --- a/README.md +++ b/README.md @@ -25,11 +25,11 @@ This repo includes source code for: This repo has two primary branches: -- The [`main`](https://github.com/modularml/mojo/tree/main) branch, which is in -sync with the last stable released version of Mojo. Use the examples here if you’re -using a [release build of Mojo](#latest-released). +- The [`stable`](https://github.com/modularml/mojo/tree/stable) branch, which +is in sync with the last stable released version of Mojo. Use the examples +here if you’re using a [release build of Mojo](#latest-released). -- The [`nightly`](https://github.com/modularml/mojo/tree/nightly) branch, which +- The [`main`](https://github.com/modularml/mojo/tree/main) branch, which is in sync with the Mojo nightly build and subject to breakage. Use this branch for [contributions](./CONTRIBUTING.md), or if you're using the latest [nightly build of Mojo](#latest-nightly). @@ -74,16 +74,15 @@ platforms = ["osx-arm64", "linux-aarch64", "linux-64"] max = "*" ``` -And when you clone this repo, switch to the `nightly` branch because the `main` -branch might not be compatible with nightly builds: +When you clone this repo, you'll be on the `main` branch by default, +which includes code matching the latest nightly build: ```bash git clone https://github.com/modularml/mojo.git ``` -```bash -git checkout nightly -``` +If you want to instead see the source from the most recent stable +release, then you can switch to the `stable` branch. ## Contributing @@ -92,7 +91,7 @@ issue here](https://github.com/modularml/mojo/issues). See [here](./CONTRIBUTING.md) for guidelines on filing good bugs. We welcome contributions to this repo on the -[`nightly`](https://github.com/modularml/mojo/tree/nightly) +[`main`](https://github.com/modularml/mojo/tree/main) branch. If you’d like to contribute to Mojo, please first read our [Contributor Guide](https://github.com/modularml/mojo/blob/main/CONTRIBUTING.md). diff --git a/docs/changelog-released.md b/docs/changelog-released.md index 18a2551f4f..95ee3fbab8 100644 --- a/docs/changelog-released.md +++ b/docs/changelog-released.md @@ -3189,7 +3189,7 @@ This release doesn't include any changes to Mojo. ### 🔥 Legendary - The Mojo standard library is now open source! Check out the - [README](https://github.com/modular/mojo/blob/nightly/stdlib/README.md) + [README](https://github.com/modular/mojo/blob/main/stdlib/README.md) for everything you need to get started. - Structs and other nominal types are now allowed to implicitly conform to diff --git a/stdlib/docs/development.md b/stdlib/docs/development.md index ef21e6fb81..000676598e 100644 --- a/stdlib/docs/development.md +++ b/stdlib/docs/development.md @@ -9,7 +9,7 @@ If this is your first time contributing, first read everything in you need to do the following: 1. [Fork and clone the repo](../../CONTRIBUTING.md#fork-and-clone-the-repo) -2. [Branch off nightly](../../CONTRIBUTING.md#branching-off-nightly) +2. [Branch off main](../../CONTRIBUTING.md#branching-off-nightly) 3. [Install the nightly Mojo compiler](../../CONTRIBUTING.md#getting-the-nightly-mojo-compiler) And if you're using VS Code: @@ -104,7 +104,7 @@ You can do the same for a directory with ./stdlib/scripts/run-tests.sh ./stdlib/test/utils ``` -All the tests should pass on the `nightly` branch with the nightly Mojo +All the tests should pass on the `main` branch with the nightly Mojo compiler. If you've pulled the latest changes and they're still failing please [open a GitHub issue](https://github.com/modularml/mojo/issues/new?assignees=&labels=bug%2Cmojo&projects=&template=mojo_bug_report.yaml&title=%5BBUG%5D). diff --git a/stdlib/docs/internal/README.md b/stdlib/docs/internal/README.md index b80fd03dca..9699b52b72 100644 --- a/stdlib/docs/internal/README.md +++ b/stdlib/docs/internal/README.md @@ -11,6 +11,6 @@ WE FIND IT CONVENIENT TO DO SO WITHOUT WARNING OR NOTICE**. This directory contains internal documentation for the implementation details of the Mojo compiler, runtime, and stdlib. You must always reference the -current version of this documentation on the branch nightly before using the +current version of this documentation on the branch main before using the operations or behavior documented within. Any new files should contain the above warning. From faf9b6a9fd244398894fa905222b678c4a7aa4c2 Mon Sep 17 00:00:00 2001 From: Ken Jones <165197230+KenJones-Modular@users.noreply.github.com> Date: Tue, 28 Jan 2025 21:40:37 -0800 Subject: [PATCH 316/509] [docs] Update documentation examples to use StringLiteral.format() When the String.format() method was first introduced, a corresponding method wasn't added to StringLiteral. StringLiteral.format() was added in 24.6, so this updates examples in the documentation to use it. MODULAR_ORIG_COMMIT_REV_ID: 8326133984041f8017f9262c6cc7c367c9b7804b --- CONTRIBUTING.md | 22 +++++++++++----------- README.md | 19 ++++++++++--------- docs/changelog-released.md | 2 +- docs/manual/errors.mdx | 2 +- docs/manual/operators.mdx | 6 +++--- docs/manual/traits.mdx | 4 ++-- examples/operators/main.mojo | 8 ++++---- stdlib/docs/development.md | 4 ++-- stdlib/docs/internal/README.md | 2 +- 9 files changed, 35 insertions(+), 34 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 4ad284fa1c..72f230da1b 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -200,7 +200,7 @@ Library, Mojo examples, or Mojo documentation. This page gives an overview of the process. For a more detailed walkthrough, see [How to contribute to the Mojo standard library: a step-by-step guide](https://www.modular.com/blog/how-to-contribute-to-mojo-standard-library-a-step-by-step-guide). -**Note:** Pull requests should be submitted against the `main` branch, +**Note:** Pull requests should be submitted against the `nightly` branch, which represents the most recent nightly build. ### Pull request process @@ -243,10 +243,10 @@ git fetch upstream #### Branching off nightly -Make sure to branch off `main` to work on your PR: +Make sure to branch off `nightly` to work on your PR: ```bash -git checkout upstream/main +git checkout upstream/nightly git checkout -b my-fix-pr ``` @@ -255,20 +255,20 @@ before raising a PR: ```bash git fetch upstream -git rebase upstream/main +git rebase upstream/nightly ``` #### Getting the nightly Mojo compiler -Now that you're on the main branch, you need to install the latest nightly +Now that you're on the nightly branch, you need to install the latest nightly build. -If you're using [`magic`](https://docs.modular.com/magic) (version 0.6.4 or -higher), create a new project environment like this and it will install the -latest nightly version of `max` by default: +If you're using [`magic`](https://docs.modular.com/magic), create a new +project environment with the `max-nightly` channel like this: ```bash -magic init mojo-nightly --format mojoproject +magic init mojo-nightly --format mojoproject \ + -c conda-forge -c https://conda.modular.com/max-nightly ``` If you're [using conda](https://docs.modular.com/magic/conda), add the @@ -299,7 +299,7 @@ when using the stable release! If your change is one of the improvements described above or it has been discussed and agreed upon by the project maintainers, please create a pull -request into the `main` branch. +request into the `nightly` branch. First push your changes: @@ -314,7 +314,7 @@ remote: Create a pull request for 'my-fix-pr' on GitHub by visiting: remote: https://github.com/jackos/mojo/pull/new/my-fix-pr ``` -Make sure you point it to the `main` branch: +Make sure you point it to the `nightly` branch: ![Base Branch](stdlib/docs/images/base-branch.png) diff --git a/README.md b/README.md index 3dac78f624..5774ca462a 100644 --- a/README.md +++ b/README.md @@ -25,11 +25,11 @@ This repo includes source code for: This repo has two primary branches: -- The [`stable`](https://github.com/modularml/mojo/tree/stable) branch, which -is in sync with the last stable released version of Mojo. Use the examples -here if you’re using a [release build of Mojo](#latest-released). +- The [`main`](https://github.com/modularml/mojo/tree/main) branch, which is in +sync with the last stable released version of Mojo. Use the examples here if you’re +using a [release build of Mojo](#latest-released). -- The [`main`](https://github.com/modularml/mojo/tree/main) branch, which +- The [`nightly`](https://github.com/modularml/mojo/tree/nightly) branch, which is in sync with the Mojo nightly build and subject to breakage. Use this branch for [contributions](./CONTRIBUTING.md), or if you're using the latest [nightly build of Mojo](#latest-nightly). @@ -74,15 +74,16 @@ platforms = ["osx-arm64", "linux-aarch64", "linux-64"] max = "*" ``` -When you clone this repo, you'll be on the `main` branch by default, -which includes code matching the latest nightly build: +And when you clone this repo, switch to the `nightly` branch because the `main` +branch might not be compatible with nightly builds: ```bash git clone https://github.com/modularml/mojo.git ``` -If you want to instead see the source from the most recent stable -release, then you can switch to the `stable` branch. +```bash +git checkout nightly +``` ## Contributing @@ -91,7 +92,7 @@ issue here](https://github.com/modularml/mojo/issues). See [here](./CONTRIBUTING.md) for guidelines on filing good bugs. We welcome contributions to this repo on the -[`main`](https://github.com/modularml/mojo/tree/main) +[`nightly`](https://github.com/modularml/mojo/tree/nightly) branch. If you’d like to contribute to Mojo, please first read our [Contributor Guide](https://github.com/modularml/mojo/blob/main/CONTRIBUTING.md). diff --git a/docs/changelog-released.md b/docs/changelog-released.md index 95ee3fbab8..18a2551f4f 100644 --- a/docs/changelog-released.md +++ b/docs/changelog-released.md @@ -3189,7 +3189,7 @@ This release doesn't include any changes to Mojo. ### 🔥 Legendary - The Mojo standard library is now open source! Check out the - [README](https://github.com/modular/mojo/blob/main/stdlib/README.md) + [README](https://github.com/modular/mojo/blob/nightly/stdlib/README.md) for everything you need to get started. - Structs and other nominal types are now allowed to implicitly conform to diff --git a/docs/manual/errors.mdx b/docs/manual/errors.mdx index ff7512798a..2fa9d6b66f 100644 --- a/docs/manual/errors.mdx +++ b/docs/manual/errors.mdx @@ -152,7 +152,7 @@ def main(): print("try =>", value[]) if value[] == 1: continue - result = String("{} incremented is {}").format(value[], incr(value[])) + result = "{} incremented is {}".format(value[], incr(value[])) except e: print("except =>", e) else: diff --git a/docs/manual/operators.mdx b/docs/manual/operators.mdx index a309e1f503..5ee235c9b0 100644 --- a/docs/manual/operators.mdx +++ b/docs/manual/operators.mdx @@ -1069,7 +1069,7 @@ real and imaginary fields. ```mojo c1 = Complex(-1.2, 6.5) -print(String("c1: Real: {}; Imaginary: {}").format(c1.re, c1.im)) +print("c1: Real: {}; Imaginary: {}".format(c1.re, c1.im)) ``` ```output @@ -1094,7 +1094,7 @@ Now we can create a `Complex` instance and provide just a real component. ```mojo c2 = Complex(3.14159) -print(String("c2: Real: {}; Imaginary: {}").format(c2.re, c2.im)) +print("c2: Real: {}; Imaginary: {}".format(c2.re, c2.im)) ``` ```output @@ -1190,7 +1190,7 @@ Now let's try getting and setting the real and imaginary components of a ```mojo c2 = Complex(3.14159) -print(String("c2[0]: {}; c2[1]: {}").format(c2[0], c2[1])) +print("c2[0]: {}; c2[1]: {}".format(c2[0], c2[1])) c2[0] = 2.71828 c2[1] = 42 print("c2[0] = 2.71828; c2[1] = 42; c2:", c2) diff --git a/docs/manual/traits.mdx b/docs/manual/traits.mdx index 948185e09b..a9be57cf71 100644 --- a/docs/manual/traits.mdx +++ b/docs/manual/traits.mdx @@ -447,13 +447,13 @@ struct Dog(Stringable, Representable, Writable): # Alternative full representation when calling `repr` fn __repr__(self) -> String: - return String("Dog(name=", repr(self.name)", age=", repr(self.age), ")") + return String("Dog(name=", repr(self.name), ", age=", repr(self.age), ")") var dog = Dog("Rex", 5) print(repr(dog)) print(dog) -var dog_info = String("String: {!s}\nRepresentation: {!r}").format(dog, dog) +var dog_info = "String: {!s}\nRepresentation: {!r}".format(dog, dog) print(dog_info) ``` diff --git a/examples/operators/main.mojo b/examples/operators/main.mojo index c26e654568..f4b07c4ac7 100644 --- a/examples/operators/main.mojo +++ b/examples/operators/main.mojo @@ -17,10 +17,10 @@ from my_complex import Complex def main(): # Examples of creating Complex instances c1 = Complex(-1.2, 6.5) - print(String("c1: Real: {}; Imaginary: {}").format(c1.re, c1.im)) + print("c1: Real: {}; Imaginary: {}".format(c1.re, c1.im)) c2 = Complex(3.14159) - print(String("c2: Real: {}; Imaginary: {}").format(c2.re, c2.im)) + print("c2: Real: {}; Imaginary: {}".format(c2.re, c2.im)) print() @@ -29,12 +29,12 @@ def main(): print("c3 =", c3) var msg = String("The value is: ", c3) print(msg) - print(String("{!r}").format(c3)) + print("{!r}".format(c3)) print() # Examples of using Complex indexing - print(String("c2[0]: {}; c2[1]: {}").format(c2[0], c2[1])) + print("c2[0]: {}; c2[1]: {}".format(c2[0], c2[1])) c2[0] = 2.71828 c2[1] = 42 print("c2[0] = 2.71828; c2[1] = 42; c2:", c2) diff --git a/stdlib/docs/development.md b/stdlib/docs/development.md index 000676598e..ef21e6fb81 100644 --- a/stdlib/docs/development.md +++ b/stdlib/docs/development.md @@ -9,7 +9,7 @@ If this is your first time contributing, first read everything in you need to do the following: 1. [Fork and clone the repo](../../CONTRIBUTING.md#fork-and-clone-the-repo) -2. [Branch off main](../../CONTRIBUTING.md#branching-off-nightly) +2. [Branch off nightly](../../CONTRIBUTING.md#branching-off-nightly) 3. [Install the nightly Mojo compiler](../../CONTRIBUTING.md#getting-the-nightly-mojo-compiler) And if you're using VS Code: @@ -104,7 +104,7 @@ You can do the same for a directory with ./stdlib/scripts/run-tests.sh ./stdlib/test/utils ``` -All the tests should pass on the `main` branch with the nightly Mojo +All the tests should pass on the `nightly` branch with the nightly Mojo compiler. If you've pulled the latest changes and they're still failing please [open a GitHub issue](https://github.com/modularml/mojo/issues/new?assignees=&labels=bug%2Cmojo&projects=&template=mojo_bug_report.yaml&title=%5BBUG%5D). diff --git a/stdlib/docs/internal/README.md b/stdlib/docs/internal/README.md index 9699b52b72..b80fd03dca 100644 --- a/stdlib/docs/internal/README.md +++ b/stdlib/docs/internal/README.md @@ -11,6 +11,6 @@ WE FIND IT CONVENIENT TO DO SO WITHOUT WARNING OR NOTICE**. This directory contains internal documentation for the implementation details of the Mojo compiler, runtime, and stdlib. You must always reference the -current version of this documentation on the branch main before using the +current version of this documentation on the branch nightly before using the operations or behavior documented within. Any new files should contain the above warning. From 6700eea251fc149ce19ee956078f6c4a3a8b851c Mon Sep 17 00:00:00 2001 From: Joe Loser Date: Wed, 29 Jan 2025 11:55:16 -0500 Subject: [PATCH 317/509] [docs] Fix typo in `changelog` With the recent functionality for overloading by keyword-only arguments, there was a typo with the resulting value. Fix this typo. MODULAR_ORIG_COMMIT_REV_ID: f02ce2c89a9be5ffa5d61ffe421f0b5ab35226ed --- docs/changelog.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/changelog.md b/docs/changelog.md index 91e798ebc0..d871838912 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -61,7 +61,7 @@ what we publish. fn main(): OverloadedKwArgs(1) # val=1 OverloadedKwArgs(double=1) # val=2 - OverloadedKwArgs(triple=2) # val=3 + OverloadedKwArgs(triple=2) # val=6 ``` This also works with indexing operations: From e782cb0b8f12051a9f31e0a5280633f2c7db64c1 Mon Sep 17 00:00:00 2001 From: Ken Jones <165197230+KenJones-Modular@users.noreply.github.com> Date: Wed, 29 Jan 2025 13:17:28 -0800 Subject: [PATCH 318/509] Remove the Examples tab from the Mojo documentation site We're retiring the Mojo notebook examples in the GitHub repo, which is the source for the current Examples tab on the Mojo documentation site. We'll have a new interface for exposing tutorials and examples on the site in the future. MODULAR_ORIG_COMMIT_REV_ID: 385ba3732165d8cf9b0de6208d8e6cbaa63b314b --- docs/notebooks/README.md | 3 --- docs/notebooks/index.mdx | 25 ------------------------- 2 files changed, 28 deletions(-) delete mode 100644 docs/notebooks/README.md delete mode 100644 docs/notebooks/index.mdx diff --git a/docs/notebooks/README.md b/docs/notebooks/README.md deleted file mode 100644 index 9337020707..0000000000 --- a/docs/notebooks/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# Mojo notebooks - -These files are actually in [examples/notebooks/](../../examples/notebooks). diff --git a/docs/notebooks/index.mdx b/docs/notebooks/index.mdx deleted file mode 100644 index 0b88575238..0000000000 --- a/docs/notebooks/index.mdx +++ /dev/null @@ -1,25 +0,0 @@ ---- -title: Mojo🔥 notebooks -sidebar_label: Overview -hide_table_of_contents: true -description: All the Jupyter notebooks we've created for the Mojo Playground. -anchor-sections: false -listing: - - id: docs - contents: - - BoolMLIR.ipynb - - Mandelbrot.ipynb - - Matmul.ipynb - - RayTracing.ipynb - type: grid - grid-columns: 2 - sort: 'false' ---- - -The following pages are rendered from the Jupyter notebooks that are [available -on GitHub](https://github.com/modular/mojo/tree/main/examples/notebooks). - -


- -:::🔥#docs -::: From 5a1ba901274472a2d178335dc358f482e0c807ca Mon Sep 17 00:00:00 2001 From: modularbot Date: Thu, 30 Jan 2025 17:31:28 +0000 Subject: [PATCH 319/509] Update lockfiles to point to latest nightly version: 25.1.0.dev2025013005 --- examples/life/magic.lock | 187 ++++++++++++++++--------------- examples/magic.lock | 187 ++++++++++++++++--------------- examples/notebooks/magic.lock | 204 ++++++++++++++++++---------------- examples/operators/magic.lock | 187 ++++++++++++++++--------------- examples/testing/magic.lock | 187 ++++++++++++++++--------------- magic.lock | 187 ++++++++++++++++--------------- 6 files changed, 597 insertions(+), 542 deletions(-) diff --git a/examples/life/magic.lock b/examples/life/magic.lock index c7fb6ac875..2836acd5f1 100644 --- a/examples/life/magic.lock +++ b/examples/life/magic.lock @@ -172,17 +172,17 @@ 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-25.1.0.dev2025012905-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025012905-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025012905-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012905-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025013005-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025013005-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025013005-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025013005-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-25.1.0.dev2025012905-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025013005-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_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-h2d0b736_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/nlohmann_json-3.11.3-he02047a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.3-h5fbd93e_0.conda @@ -453,17 +453,17 @@ 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-25.1.0.dev2025012905-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025012905-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025012905-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012905-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025013005-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025013005-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025013005-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025013005-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-25.1.0.dev2025012905-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025013005-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_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-ha32ae93_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-ha32ae93_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/nlohmann_json-3.11.3-h0a1ffab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openjpeg-2.5.3-h3f56577_0.conda @@ -717,17 +717,17 @@ 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-25.1.0.dev2025012905-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025012905-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025012905-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012905-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025013005-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025013005-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025013005-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025013005-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-25.1.0.dev2025012905-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025013005-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 - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/nlohmann_json-3.11.3-h00cdb27_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openjpeg-2.5.3-h8a3d83b_0.conda @@ -3780,6 +3780,7 @@ packages: arch: x86_64 platform: linux license: BSD-3-Clause + license_family: BSD size: 16621 timestamp: 1738114033763 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-28_h1a9f1db_openblas.conda @@ -3797,6 +3798,7 @@ packages: arch: aarch64 platform: linux license: BSD-3-Clause + license_family: BSD size: 16697 timestamp: 1738114082682 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-28_h10e41b3_openblas.conda @@ -3814,6 +3816,7 @@ packages: arch: arm64 platform: osx license: BSD-3-Clause + license_family: BSD size: 16840 timestamp: 1738114389937 - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hb9d3cd8_2.conda @@ -3962,6 +3965,7 @@ packages: arch: x86_64 platform: linux license: BSD-3-Clause + license_family: BSD size: 16539 timestamp: 1738114043618 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-28_hab92f65_openblas.conda @@ -3977,6 +3981,7 @@ packages: arch: aarch64 platform: linux license: BSD-3-Clause + license_family: BSD size: 16655 timestamp: 1738114088527 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-28_hb3479ef_openblas.conda @@ -3992,6 +3997,7 @@ packages: arch: arm64 platform: osx license: BSD-3-Clause + license_family: BSD size: 16788 timestamp: 1738114399962 - conda: https://conda.anaconda.org/conda-forge/linux-64/libcrc32c-1.1.2-h9c3ff4c_0.tar.bz2 @@ -4972,6 +4978,7 @@ packages: arch: x86_64 platform: linux license: BSD-3-Clause + license_family: BSD size: 16553 timestamp: 1738114053556 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-28_h411afd4_openblas.conda @@ -4987,6 +4994,7 @@ packages: arch: aarch64 platform: linux license: BSD-3-Clause + license_family: BSD size: 16637 timestamp: 1738114094310 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-28_hc9a63f6_openblas.conda @@ -5002,6 +5010,7 @@ packages: arch: arm64 platform: osx license: BSD-3-Clause + license_family: BSD size: 16793 timestamp: 1738114407021 - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.3-hb9d3cd8_1.conda @@ -6281,47 +6290,47 @@ packages: license_family: BSD size: 24048 timestamp: 1733219945697 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025012905-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025013005-release.conda noarch: python - sha256: 128e24b31c4d5852e70066a0d29b2b72c5fa442541a51edeb51c84553b078c21 - md5: c74a71227a86ff11c0b1f454df78753a + sha256: 3948fa0d797c3adac4c09a2b806f4eeccd541d76e04538a66d8f12f3e95c32ee + md5: 1e5f3d8c627016a0a2b8982bf17e61af depends: - - max-core ==25.1.0.dev2025012905 release - - max-python >=25.1.0.dev2025012905,<26.0a0 - - mojo-jupyter ==25.1.0.dev2025012905 release - - mblack ==25.1.0.dev2025012905 release + - max-core ==25.1.0.dev2025013005 release + - max-python >=25.1.0.dev2025013005,<26.0a0 + - mojo-jupyter ==25.1.0.dev2025013005 release + - mblack ==25.1.0.dev2025013005 release license: LicenseRef-Modular-Proprietary - size: 9917 - timestamp: 1738127836739 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025012905-release.conda - sha256: 912bd4ab637f60a1da328f0ec8502737e37ce4fdbbeede25c6c40b58a808a34d - md5: 4ffb2fe54ee89169f96d8c74292af542 + size: 9915 + timestamp: 1738214254861 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025013005-release.conda + sha256: 4a68142da5f25068e17fd2974a9b94cba4cc3fdbf0de872c2d9a2ce1dc22ea8f + md5: 9604e0c0d7c78ef69d218810c68f74d6 depends: - - mblack ==25.1.0.dev2025012905 release + - mblack ==25.1.0.dev2025013005 release license: LicenseRef-Modular-Proprietary - size: 243535907 - timestamp: 1738127911507 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025012905-release.conda - sha256: e1ccfb768b5cc84198eb0c8c8d273d4ce6cda149427479089bc484440105e67d - md5: 5a919171033c9dfe518aef703b7ec3d8 + size: 243572302 + timestamp: 1738214269238 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025013005-release.conda + sha256: 8c826b3931ad42bbf9a4719f2ff3afcb4bae722dfe295aabb4f9c090de921c01 + md5: 6d328fe99bca688dad8cbde9e87c1409 depends: - - mblack ==25.1.0.dev2025012905 release + - mblack ==25.1.0.dev2025013005 release license: LicenseRef-Modular-Proprietary - size: 246085619 - timestamp: 1738127836737 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025012905-release.conda - sha256: 58573782ee40eb77b183e93988590d11184302e8cc257673cb72745b0447d204 - md5: 9dc83277bf38cbd419f52909847ed796 + size: 246120276 + timestamp: 1738214254859 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025013005-release.conda + sha256: 2d2e017becec59c1d82022cbf78344f27d3ec9c2c443213ddc2f3cbb5097e4a6 + md5: 6a4347efe0e034458049baed54857b4f depends: - - mblack ==25.1.0.dev2025012905 release + - mblack ==25.1.0.dev2025013005 release license: LicenseRef-Modular-Proprietary - size: 205298533 - timestamp: 1738128880810 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025012905-3.12release.conda - sha256: 1cb5820b79790fbcdf69a17d3f2de668e335afda26d4896dc5d8df7495c3f2fc - md5: 4c8cd5b0bb94e4b0566c66614882417c + size: 205294583 + timestamp: 1738218076583 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025013005-3.12release.conda + sha256: 19277c4f68fdfdc727da1c002a257d81147487672aa1ae2619d773a645a779b6 + md5: 18357c34c7e416b960cdfe0a8b2dd7fc depends: - - max-core ==25.1.0.dev2025012905 release + - max-core ==25.1.0.dev2025013005 release - python 3.12.* - fastapi - httpx @@ -6342,13 +6351,13 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 120728426 - timestamp: 1738127911515 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025012905-3.12release.conda - sha256: 569a53d099bf8fe518e3148f6bcad3d499d8eaeeb96587c0e06e792f51161553 - md5: c5094829938eded41b20717d7f135a3e + size: 120796012 + timestamp: 1738214269247 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025013005-3.12release.conda + sha256: 550c6b48bf15369d19c2624fc90a765ff1d8e3b8a429f8be99a3bed75203c3ce + md5: 6097c00b654e46b6949a0aa981b59f39 depends: - - max-core ==25.1.0.dev2025012905 release + - max-core ==25.1.0.dev2025013005 release - python 3.12.* - fastapi - httpx @@ -6369,13 +6378,13 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 123278531 - timestamp: 1738127836748 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025012905-3.12release.conda - sha256: c4629b7ca8859e4b1f736de64721c9998ae1b2f2f183ab496cc0ab5faa053c00 - md5: 411d19e9c18c3d8c665f765041cd9a3e + size: 123320768 + timestamp: 1738214254870 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025013005-3.12release.conda + sha256: c47d8b914f60590ecf3d5b08f8f7a56b258fd586348fd92194d82fdf7886e2b5 + md5: 059a0562bff4464237c2ef721a575c1c depends: - - max-core ==25.1.0.dev2025012905 release + - max-core ==25.1.0.dev2025013005 release - python 3.12.* - fastapi - httpx @@ -6396,12 +6405,12 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 106174079 - timestamp: 1738128880813 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012905-release.conda + size: 106209351 + timestamp: 1738218076586 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025013005-release.conda noarch: python - sha256: 14bb3045350a288f80df5b386555586d8e035c3f7454ba8214f73cfeace26887 - md5: ee06a37bf7cb1d8ef7b646b6e7ad2bfd + sha256: 9e6b97d7429aad6a4a95ac02151d17104912563733e0b110422eed4a5b266043 + md5: 56e3f58c601f40f008b72986f6fea6d3 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -6411,8 +6420,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130809 - timestamp: 1738127836744 + size: 130808 + timestamp: 1738214254865 - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda sha256: 78c1bbe1723449c52b7a9df1af2ee5f005209f67e40b6e1d3c7619127c43b1c7 md5: 592132998493b3ff25fd7479396e8351 @@ -6422,18 +6431,18 @@ packages: license_family: MIT size: 14465 timestamp: 1733255681319 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025012905-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025013005-release.conda noarch: python - sha256: 00c9bbee63d4d9d18235be72c23e10a8c63eeabef853575f4fdfa3cc4df9ac83 - md5: 646e77b26ddf8c7aba7d2a3ac21631a6 + sha256: 117d59275fc24b179b1df699096cb19e1ab08f2e1e17b9a81ad743dd266fc0c7 + md5: beb27e986a758a1a8755673e8c41ef4a depends: - - max-core ==25.1.0.dev2025012905 release + - max-core ==25.1.0.dev2025013005 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22932 - timestamp: 1738127836744 + size: 22933 + timestamp: 1738214254866 - conda: https://conda.anaconda.org/conda-forge/linux-64/mpg123-1.32.9-hc50e24c_0.conda sha256: 39c4700fb3fbe403a77d8cc27352fa72ba744db487559d5d44bf8411bb4ea200 md5: c7f302fd11eeb0987a6a5e1f3aed6a21 @@ -6565,37 +6574,37 @@ packages: license_family: MIT size: 10854 timestamp: 1733230986902 -- conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_2.conda - sha256: 17fe6afd8a00446010220d52256bd222b1e4fcb93bd587e7784b03219f3dc358 - md5: 04b34b9a40cdc48cfdab261ab176ff74 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda + sha256: 3fde293232fa3fca98635e1167de6b7c7fda83caf24b9d6c91ec9eefb4f4d586 + md5: 47e340acb35de30501a76c7c799c41d7 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 arch: x86_64 platform: linux license: X11 AND BSD-3-Clause - size: 894452 - timestamp: 1736683239706 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-ha32ae93_2.conda - sha256: 9fd726174dde993c560dd6fa1a383e61d546d380e98e0b0348d22512e5d86e24 - md5: 779046fb585c71373e8a051be06c6011 + size: 891641 + timestamp: 1738195959188 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-ha32ae93_3.conda + sha256: 91cfb655a68b0353b2833521dc919188db3d8a7f4c64bea2c6a7557b24747468 + md5: 182afabe009dc78d8b73100255ee6868 depends: - libgcc >=13 arch: aarch64 platform: linux license: X11 AND BSD-3-Clause - size: 928402 - timestamp: 1736683192463 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_2.conda - sha256: b45c73348ec9841d5c893acc2e97adff24127548fe8c786109d03c41ed564e91 - md5: f6f7c5b7d0983be186c46c4f6f8f9af8 + size: 926034 + timestamp: 1738196018799 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda + sha256: 2827ada40e8d9ca69a153a45f7fd14f32b2ead7045d3bbb5d10964898fe65733 + md5: 068d497125e4bf8a66bf707254fff5ae depends: - __osx >=11.0 arch: arm64 platform: osx license: X11 AND BSD-3-Clause - size: 796754 - timestamp: 1736683572099 + size: 797030 + timestamp: 1738196177597 - conda: https://conda.anaconda.org/conda-forge/linux-64/nlohmann_json-3.11.3-he02047a_1.conda sha256: ce4bcced4f8eea71b7cac8bc3daac097abf7a5792f278cd811dedada199500c1 md5: e46f7ac4917215b49df2ea09a694a3fa diff --git a/examples/magic.lock b/examples/magic.lock index b56e6d8e67..f01d135d63 100644 --- a/examples/magic.lock +++ b/examples/magic.lock @@ -133,16 +133,16 @@ 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-25.1.0.dev2025012905-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025012905-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025012905-3.11release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012905-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025013005-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025013005-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025013005-3.11release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025013005-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-25.1.0.dev2025012905-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025013005-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-h2d0b736_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/nlohmann_json-3.11.3-he02047a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py311h64a7726_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.3-h5fbd93e_0.conda @@ -356,16 +356,16 @@ 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-25.1.0.dev2025012905-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025012905-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025012905-3.11release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012905-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025013005-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025013005-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025013005-3.11release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025013005-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-25.1.0.dev2025012905-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025013005-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-ha32ae93_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-ha32ae93_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/nlohmann_json-3.11.3-h0a1ffab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py311h69ead2a_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openjpeg-2.5.3-h3f56577_0.conda @@ -570,16 +570,16 @@ 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-25.1.0.dev2025012905-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025012905-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025012905-3.11release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012905-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025013005-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025013005-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025013005-3.11release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025013005-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-25.1.0.dev2025012905-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025013005-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 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/nlohmann_json-3.11.3-h00cdb27_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py311h7125741_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openjpeg-2.5.3-h8a3d83b_0.conda @@ -2863,6 +2863,7 @@ packages: arch: x86_64 platform: linux license: BSD-3-Clause + license_family: BSD size: 16621 timestamp: 1738114033763 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-28_h1a9f1db_openblas.conda @@ -2880,6 +2881,7 @@ packages: arch: aarch64 platform: linux license: BSD-3-Clause + license_family: BSD size: 16697 timestamp: 1738114082682 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-28_h10e41b3_openblas.conda @@ -2897,6 +2899,7 @@ packages: arch: arm64 platform: osx license: BSD-3-Clause + license_family: BSD size: 16840 timestamp: 1738114389937 - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hb9d3cd8_2.conda @@ -3020,6 +3023,7 @@ packages: arch: x86_64 platform: linux license: BSD-3-Clause + license_family: BSD size: 16539 timestamp: 1738114043618 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-28_hab92f65_openblas.conda @@ -3035,6 +3039,7 @@ packages: arch: aarch64 platform: linux license: BSD-3-Clause + license_family: BSD size: 16655 timestamp: 1738114088527 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-28_hb3479ef_openblas.conda @@ -3050,6 +3055,7 @@ packages: arch: arm64 platform: osx license: BSD-3-Clause + license_family: BSD size: 16788 timestamp: 1738114399962 - conda: https://conda.anaconda.org/conda-forge/linux-64/libcrc32c-1.1.2-h9c3ff4c_0.tar.bz2 @@ -3766,6 +3772,7 @@ packages: arch: x86_64 platform: linux license: BSD-3-Clause + license_family: BSD size: 16553 timestamp: 1738114053556 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-28_h411afd4_openblas.conda @@ -3781,6 +3788,7 @@ packages: arch: aarch64 platform: linux license: BSD-3-Clause + license_family: BSD size: 16637 timestamp: 1738114094310 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-28_hc9a63f6_openblas.conda @@ -3796,6 +3804,7 @@ packages: arch: arm64 platform: osx license: BSD-3-Clause + license_family: BSD size: 16793 timestamp: 1738114407021 - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.3-hb9d3cd8_1.conda @@ -4859,47 +4868,47 @@ packages: license_family: BSD size: 24976 timestamp: 1733219849253 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025012905-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025013005-release.conda noarch: python - sha256: 128e24b31c4d5852e70066a0d29b2b72c5fa442541a51edeb51c84553b078c21 - md5: c74a71227a86ff11c0b1f454df78753a + sha256: 3948fa0d797c3adac4c09a2b806f4eeccd541d76e04538a66d8f12f3e95c32ee + md5: 1e5f3d8c627016a0a2b8982bf17e61af depends: - - max-core ==25.1.0.dev2025012905 release - - max-python >=25.1.0.dev2025012905,<26.0a0 - - mojo-jupyter ==25.1.0.dev2025012905 release - - mblack ==25.1.0.dev2025012905 release + - max-core ==25.1.0.dev2025013005 release + - max-python >=25.1.0.dev2025013005,<26.0a0 + - mojo-jupyter ==25.1.0.dev2025013005 release + - mblack ==25.1.0.dev2025013005 release license: LicenseRef-Modular-Proprietary - size: 9917 - timestamp: 1738127836739 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025012905-release.conda - sha256: 912bd4ab637f60a1da328f0ec8502737e37ce4fdbbeede25c6c40b58a808a34d - md5: 4ffb2fe54ee89169f96d8c74292af542 + size: 9915 + timestamp: 1738214254861 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025013005-release.conda + sha256: 4a68142da5f25068e17fd2974a9b94cba4cc3fdbf0de872c2d9a2ce1dc22ea8f + md5: 9604e0c0d7c78ef69d218810c68f74d6 depends: - - mblack ==25.1.0.dev2025012905 release + - mblack ==25.1.0.dev2025013005 release license: LicenseRef-Modular-Proprietary - size: 243535907 - timestamp: 1738127911507 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025012905-release.conda - sha256: e1ccfb768b5cc84198eb0c8c8d273d4ce6cda149427479089bc484440105e67d - md5: 5a919171033c9dfe518aef703b7ec3d8 + size: 243572302 + timestamp: 1738214269238 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025013005-release.conda + sha256: 8c826b3931ad42bbf9a4719f2ff3afcb4bae722dfe295aabb4f9c090de921c01 + md5: 6d328fe99bca688dad8cbde9e87c1409 depends: - - mblack ==25.1.0.dev2025012905 release + - mblack ==25.1.0.dev2025013005 release license: LicenseRef-Modular-Proprietary - size: 246085619 - timestamp: 1738127836737 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025012905-release.conda - sha256: 58573782ee40eb77b183e93988590d11184302e8cc257673cb72745b0447d204 - md5: 9dc83277bf38cbd419f52909847ed796 + size: 246120276 + timestamp: 1738214254859 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025013005-release.conda + sha256: 2d2e017becec59c1d82022cbf78344f27d3ec9c2c443213ddc2f3cbb5097e4a6 + md5: 6a4347efe0e034458049baed54857b4f depends: - - mblack ==25.1.0.dev2025012905 release + - mblack ==25.1.0.dev2025013005 release license: LicenseRef-Modular-Proprietary - size: 205298533 - timestamp: 1738128880810 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025012905-3.11release.conda - sha256: 064de76e06b11b938f18d2d1c7f333e52af6fd5b98a9285456c86f56ccd84a25 - md5: f49590c09c0cd35195dfdb6493fe98bc + size: 205294583 + timestamp: 1738218076583 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025013005-3.11release.conda + sha256: 78a0260e73172a8024e832cb1cfc12962ca8048eef3292ba5803a1153e6ebc1f + md5: 9d53425f5269231907b73491bd8f6092 depends: - - max-core ==25.1.0.dev2025012905 release + - max-core ==25.1.0.dev2025013005 release - python 3.11.* - fastapi - httpx @@ -4920,13 +4929,13 @@ packages: - uvicorn - python_abi 3.11.* *_cp311 license: LicenseRef-Modular-Proprietary - size: 120761463 - timestamp: 1738127911513 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025012905-3.11release.conda - sha256: ab870a6e082e37d537a14017a859b67a5b18fae561c3fbb56beb56a7686b1ec3 - md5: eee7390d88bc9990b9df6b6a3d39535f + size: 120815398 + timestamp: 1738214269244 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025013005-3.11release.conda + sha256: b43435c70735424dddce7959eff9cd7ee3392bf646b82eaf1a9df9628db3724d + md5: 48512e72d18b711ac28d413746ee86d6 depends: - - max-core ==25.1.0.dev2025012905 release + - max-core ==25.1.0.dev2025013005 release - python 3.11.* - fastapi - httpx @@ -4947,13 +4956,13 @@ packages: - uvicorn - python_abi 3.11.* *_cp311 license: LicenseRef-Modular-Proprietary - size: 123257986 - timestamp: 1738127836745 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025012905-3.11release.conda - sha256: 244fc35350c06a30663c7bd5ffb9ef2d1cdf14abd62f750677c0020e8b629bd4 - md5: c41659b842b65f9c71131aff6a4bf254 + size: 123363649 + timestamp: 1738214254866 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025013005-3.11release.conda + sha256: df098a50652414f9491568bcdb0327e1a3868515e19571a2d10dc39039e7991c + md5: 19bee2b7aac5db6f4a38883eb1e5de8f depends: - - max-core ==25.1.0.dev2025012905 release + - max-core ==25.1.0.dev2025013005 release - python 3.11.* - fastapi - httpx @@ -4974,12 +4983,12 @@ packages: - uvicorn - python_abi 3.11.* *_cp311 license: LicenseRef-Modular-Proprietary - size: 106175400 - timestamp: 1738128880812 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012905-release.conda + size: 106218061 + timestamp: 1738218076585 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025013005-release.conda noarch: python - sha256: 14bb3045350a288f80df5b386555586d8e035c3f7454ba8214f73cfeace26887 - md5: ee06a37bf7cb1d8ef7b646b6e7ad2bfd + sha256: 9e6b97d7429aad6a4a95ac02151d17104912563733e0b110422eed4a5b266043 + md5: 56e3f58c601f40f008b72986f6fea6d3 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -4989,8 +4998,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130809 - timestamp: 1738127836744 + size: 130808 + timestamp: 1738214254865 - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda sha256: 78c1bbe1723449c52b7a9df1af2ee5f005209f67e40b6e1d3c7619127c43b1c7 md5: 592132998493b3ff25fd7479396e8351 @@ -5000,18 +5009,18 @@ packages: license_family: MIT size: 14465 timestamp: 1733255681319 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025012905-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025013005-release.conda noarch: python - sha256: 00c9bbee63d4d9d18235be72c23e10a8c63eeabef853575f4fdfa3cc4df9ac83 - md5: 646e77b26ddf8c7aba7d2a3ac21631a6 + sha256: 117d59275fc24b179b1df699096cb19e1ab08f2e1e17b9a81ad743dd266fc0c7 + md5: beb27e986a758a1a8755673e8c41ef4a depends: - - max-core ==25.1.0.dev2025012905 release + - max-core ==25.1.0.dev2025013005 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22932 - timestamp: 1738127836744 + size: 22933 + timestamp: 1738214254866 - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py311h2dc5d0c_2.conda sha256: afaab7a028281d8b5336db2b994fd3f9694862b6ca372c079dc4e84ad768c20a md5: bb8ca118919836624d920b4c44383a15 @@ -5106,37 +5115,37 @@ packages: license_family: MIT size: 10854 timestamp: 1733230986902 -- conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_2.conda - sha256: 17fe6afd8a00446010220d52256bd222b1e4fcb93bd587e7784b03219f3dc358 - md5: 04b34b9a40cdc48cfdab261ab176ff74 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda + sha256: 3fde293232fa3fca98635e1167de6b7c7fda83caf24b9d6c91ec9eefb4f4d586 + md5: 47e340acb35de30501a76c7c799c41d7 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 arch: x86_64 platform: linux license: X11 AND BSD-3-Clause - size: 894452 - timestamp: 1736683239706 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-ha32ae93_2.conda - sha256: 9fd726174dde993c560dd6fa1a383e61d546d380e98e0b0348d22512e5d86e24 - md5: 779046fb585c71373e8a051be06c6011 + size: 891641 + timestamp: 1738195959188 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-ha32ae93_3.conda + sha256: 91cfb655a68b0353b2833521dc919188db3d8a7f4c64bea2c6a7557b24747468 + md5: 182afabe009dc78d8b73100255ee6868 depends: - libgcc >=13 arch: aarch64 platform: linux license: X11 AND BSD-3-Clause - size: 928402 - timestamp: 1736683192463 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_2.conda - sha256: b45c73348ec9841d5c893acc2e97adff24127548fe8c786109d03c41ed564e91 - md5: f6f7c5b7d0983be186c46c4f6f8f9af8 + size: 926034 + timestamp: 1738196018799 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda + sha256: 2827ada40e8d9ca69a153a45f7fd14f32b2ead7045d3bbb5d10964898fe65733 + md5: 068d497125e4bf8a66bf707254fff5ae depends: - __osx >=11.0 arch: arm64 platform: osx license: X11 AND BSD-3-Clause - size: 796754 - timestamp: 1736683572099 + size: 797030 + timestamp: 1738196177597 - conda: https://conda.anaconda.org/conda-forge/linux-64/nlohmann_json-3.11.3-he02047a_1.conda sha256: ce4bcced4f8eea71b7cac8bc3daac097abf7a5792f278cd811dedada199500c1 md5: e46f7ac4917215b49df2ea09a694a3fa diff --git a/examples/notebooks/magic.lock b/examples/notebooks/magic.lock index d247a52c3d..aef33d6a54 100644 --- a/examples/notebooks/magic.lock +++ b/examples/notebooks/magic.lock @@ -102,7 +102,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.11.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.15.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.3.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.3.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 @@ -168,20 +168,20 @@ 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-25.1.0.dev2025012905-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025012905-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025012905-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012905-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025013005-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025013005-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025013005-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025013005-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.1.1-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025012905-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025013005-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.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.6-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/nlohmann_json-3.11.3-he02047a_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda @@ -397,7 +397,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.11.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.15.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.3.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.3.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/keyutils-1.6.1-h4e544f5_0.tar.bz2 @@ -463,20 +463,20 @@ 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-25.1.0.dev2025012905-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025012905-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025012905-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012905-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025013005-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025013005-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025013005-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025013005-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.1.1-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025012905-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025013005-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.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.6-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-ha32ae93_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-ha32ae93_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/nlohmann_json-3.11.3-h0a1ffab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda @@ -692,7 +692,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.11.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.15.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.3.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.3.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda @@ -750,20 +750,20 @@ 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-25.1.0.dev2025012905-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025012905-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025012905-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012905-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025013005-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025013005-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025013005-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025013005-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.1.1-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025012905-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025013005-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 - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.6-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/nlohmann_json-3.11.3-h00cdb27_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda @@ -3085,9 +3085,9 @@ packages: license_family: BSD size: 19711 timestamp: 1733428049134 -- conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.3.4-pyhd8ed1ab_0.conda - sha256: bcf9fc0ea4bd6cf06a7a23b7f8b7bb7d8520eea8d0cdd6d3b975ede7793ed69b - md5: edc13687180382b4444d9f143a2e1ef7 +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.3.5-pyhd8ed1ab_0.conda + sha256: 9d033314060993522e1ad999ded9da316a8b928d11b7a58c254597382239a72e + md5: ec1f95d39ec862a7a87de0662a98ce3e depends: - async-lru >=1.0.0 - httpx >=0.25.0 @@ -3107,8 +3107,8 @@ packages: - traitlets license: BSD-3-Clause license_family: BSD - size: 7257751 - timestamp: 1734539283837 + size: 7614652 + timestamp: 1738184813883 - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda sha256: dc24b900742fdaf1e077d9a3458fd865711de80bca95fe3c6d46610c532c6ef0 md5: fd312693df06da3578383232528c468d @@ -3639,6 +3639,7 @@ packages: arch: x86_64 platform: linux license: BSD-3-Clause + license_family: BSD size: 16621 timestamp: 1738114033763 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-28_h1a9f1db_openblas.conda @@ -3656,6 +3657,7 @@ packages: arch: aarch64 platform: linux license: BSD-3-Clause + license_family: BSD size: 16697 timestamp: 1738114082682 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-28_h10e41b3_openblas.conda @@ -3673,6 +3675,7 @@ packages: arch: arm64 platform: osx license: BSD-3-Clause + license_family: BSD size: 16840 timestamp: 1738114389937 - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hb9d3cd8_2.conda @@ -3796,6 +3799,7 @@ packages: arch: x86_64 platform: linux license: BSD-3-Clause + license_family: BSD size: 16539 timestamp: 1738114043618 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-28_hab92f65_openblas.conda @@ -3811,6 +3815,7 @@ packages: arch: aarch64 platform: linux license: BSD-3-Clause + license_family: BSD size: 16655 timestamp: 1738114088527 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-28_hb3479ef_openblas.conda @@ -3826,6 +3831,7 @@ packages: arch: arm64 platform: osx license: BSD-3-Clause + license_family: BSD size: 16788 timestamp: 1738114399962 - conda: https://conda.anaconda.org/conda-forge/linux-64/libcrc32c-1.1.2-h9c3ff4c_0.tar.bz2 @@ -4542,6 +4548,7 @@ packages: arch: x86_64 platform: linux license: BSD-3-Clause + license_family: BSD size: 16553 timestamp: 1738114053556 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-28_h411afd4_openblas.conda @@ -4557,6 +4564,7 @@ packages: arch: aarch64 platform: linux license: BSD-3-Clause + license_family: BSD size: 16637 timestamp: 1738114094310 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-28_hc9a63f6_openblas.conda @@ -4572,6 +4580,7 @@ packages: arch: arm64 platform: osx license: BSD-3-Clause + license_family: BSD size: 16793 timestamp: 1738114407021 - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.3-hb9d3cd8_1.conda @@ -5645,47 +5654,47 @@ packages: license_family: BSD size: 14467 timestamp: 1733417051523 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025012905-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025013005-release.conda noarch: python - sha256: 128e24b31c4d5852e70066a0d29b2b72c5fa442541a51edeb51c84553b078c21 - md5: c74a71227a86ff11c0b1f454df78753a + sha256: 3948fa0d797c3adac4c09a2b806f4eeccd541d76e04538a66d8f12f3e95c32ee + md5: 1e5f3d8c627016a0a2b8982bf17e61af depends: - - max-core ==25.1.0.dev2025012905 release - - max-python >=25.1.0.dev2025012905,<26.0a0 - - mojo-jupyter ==25.1.0.dev2025012905 release - - mblack ==25.1.0.dev2025012905 release + - max-core ==25.1.0.dev2025013005 release + - max-python >=25.1.0.dev2025013005,<26.0a0 + - mojo-jupyter ==25.1.0.dev2025013005 release + - mblack ==25.1.0.dev2025013005 release license: LicenseRef-Modular-Proprietary - size: 9917 - timestamp: 1738127836739 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025012905-release.conda - sha256: 912bd4ab637f60a1da328f0ec8502737e37ce4fdbbeede25c6c40b58a808a34d - md5: 4ffb2fe54ee89169f96d8c74292af542 + size: 9915 + timestamp: 1738214254861 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025013005-release.conda + sha256: 4a68142da5f25068e17fd2974a9b94cba4cc3fdbf0de872c2d9a2ce1dc22ea8f + md5: 9604e0c0d7c78ef69d218810c68f74d6 depends: - - mblack ==25.1.0.dev2025012905 release + - mblack ==25.1.0.dev2025013005 release license: LicenseRef-Modular-Proprietary - size: 243535907 - timestamp: 1738127911507 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025012905-release.conda - sha256: e1ccfb768b5cc84198eb0c8c8d273d4ce6cda149427479089bc484440105e67d - md5: 5a919171033c9dfe518aef703b7ec3d8 + size: 243572302 + timestamp: 1738214269238 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025013005-release.conda + sha256: 8c826b3931ad42bbf9a4719f2ff3afcb4bae722dfe295aabb4f9c090de921c01 + md5: 6d328fe99bca688dad8cbde9e87c1409 depends: - - mblack ==25.1.0.dev2025012905 release + - mblack ==25.1.0.dev2025013005 release license: LicenseRef-Modular-Proprietary - size: 246085619 - timestamp: 1738127836737 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025012905-release.conda - sha256: 58573782ee40eb77b183e93988590d11184302e8cc257673cb72745b0447d204 - md5: 9dc83277bf38cbd419f52909847ed796 + size: 246120276 + timestamp: 1738214254859 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025013005-release.conda + sha256: 2d2e017becec59c1d82022cbf78344f27d3ec9c2c443213ddc2f3cbb5097e4a6 + md5: 6a4347efe0e034458049baed54857b4f depends: - - mblack ==25.1.0.dev2025012905 release + - mblack ==25.1.0.dev2025013005 release license: LicenseRef-Modular-Proprietary - size: 205298533 - timestamp: 1738128880810 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025012905-3.12release.conda - sha256: 1cb5820b79790fbcdf69a17d3f2de668e335afda26d4896dc5d8df7495c3f2fc - md5: 4c8cd5b0bb94e4b0566c66614882417c + size: 205294583 + timestamp: 1738218076583 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025013005-3.12release.conda + sha256: 19277c4f68fdfdc727da1c002a257d81147487672aa1ae2619d773a645a779b6 + md5: 18357c34c7e416b960cdfe0a8b2dd7fc depends: - - max-core ==25.1.0.dev2025012905 release + - max-core ==25.1.0.dev2025013005 release - python 3.12.* - fastapi - httpx @@ -5706,13 +5715,13 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 120728426 - timestamp: 1738127911515 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025012905-3.12release.conda - sha256: 569a53d099bf8fe518e3148f6bcad3d499d8eaeeb96587c0e06e792f51161553 - md5: c5094829938eded41b20717d7f135a3e + size: 120796012 + timestamp: 1738214269247 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025013005-3.12release.conda + sha256: 550c6b48bf15369d19c2624fc90a765ff1d8e3b8a429f8be99a3bed75203c3ce + md5: 6097c00b654e46b6949a0aa981b59f39 depends: - - max-core ==25.1.0.dev2025012905 release + - max-core ==25.1.0.dev2025013005 release - python 3.12.* - fastapi - httpx @@ -5733,13 +5742,13 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 123278531 - timestamp: 1738127836748 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025012905-3.12release.conda - sha256: c4629b7ca8859e4b1f736de64721c9998ae1b2f2f183ab496cc0ab5faa053c00 - md5: 411d19e9c18c3d8c665f765041cd9a3e + size: 123320768 + timestamp: 1738214254870 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025013005-3.12release.conda + sha256: c47d8b914f60590ecf3d5b08f8f7a56b258fd586348fd92194d82fdf7886e2b5 + md5: 059a0562bff4464237c2ef721a575c1c depends: - - max-core ==25.1.0.dev2025012905 release + - max-core ==25.1.0.dev2025013005 release - python 3.12.* - fastapi - httpx @@ -5760,12 +5769,12 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 106174079 - timestamp: 1738128880813 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012905-release.conda + size: 106209351 + timestamp: 1738218076586 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025013005-release.conda noarch: python - sha256: 14bb3045350a288f80df5b386555586d8e035c3f7454ba8214f73cfeace26887 - md5: ee06a37bf7cb1d8ef7b646b6e7ad2bfd + sha256: 9e6b97d7429aad6a4a95ac02151d17104912563733e0b110422eed4a5b266043 + md5: 56e3f58c601f40f008b72986f6fea6d3 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -5775,8 +5784,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130809 - timestamp: 1738127836744 + size: 130808 + timestamp: 1738214254865 - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda sha256: 78c1bbe1723449c52b7a9df1af2ee5f005209f67e40b6e1d3c7619127c43b1c7 md5: 592132998493b3ff25fd7479396e8351 @@ -5796,18 +5805,18 @@ packages: license_family: BSD size: 68935 timestamp: 1738085278568 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025012905-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025013005-release.conda noarch: python - sha256: 00c9bbee63d4d9d18235be72c23e10a8c63eeabef853575f4fdfa3cc4df9ac83 - md5: 646e77b26ddf8c7aba7d2a3ac21631a6 + sha256: 117d59275fc24b179b1df699096cb19e1ab08f2e1e17b9a81ad743dd266fc0c7 + md5: beb27e986a758a1a8755673e8c41ef4a depends: - - max-core ==25.1.0.dev2025012905 release + - max-core ==25.1.0.dev2025013005 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22932 - timestamp: 1738127836744 + size: 22933 + timestamp: 1738214254866 - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py312h178313f_2.conda sha256: b05bc8252a6e957bf4a776ed5e0e61d1ba88cdc46ccb55890c72cc58b10371f4 md5: 5b5e3267d915a107eca793d52e1b780a @@ -5940,6 +5949,7 @@ packages: - pandoc >=2.9.2,<4.0.0 - nbconvert ==7.16.6 *_0 license: BSD-3-Clause + license_family: BSD size: 200601 timestamp: 1738067871724 - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda @@ -5955,37 +5965,37 @@ packages: license_family: BSD size: 100945 timestamp: 1733402844974 -- conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_2.conda - sha256: 17fe6afd8a00446010220d52256bd222b1e4fcb93bd587e7784b03219f3dc358 - md5: 04b34b9a40cdc48cfdab261ab176ff74 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda + sha256: 3fde293232fa3fca98635e1167de6b7c7fda83caf24b9d6c91ec9eefb4f4d586 + md5: 47e340acb35de30501a76c7c799c41d7 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 arch: x86_64 platform: linux license: X11 AND BSD-3-Clause - size: 894452 - timestamp: 1736683239706 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-ha32ae93_2.conda - sha256: 9fd726174dde993c560dd6fa1a383e61d546d380e98e0b0348d22512e5d86e24 - md5: 779046fb585c71373e8a051be06c6011 + size: 891641 + timestamp: 1738195959188 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-ha32ae93_3.conda + sha256: 91cfb655a68b0353b2833521dc919188db3d8a7f4c64bea2c6a7557b24747468 + md5: 182afabe009dc78d8b73100255ee6868 depends: - libgcc >=13 arch: aarch64 platform: linux license: X11 AND BSD-3-Clause - size: 928402 - timestamp: 1736683192463 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_2.conda - sha256: b45c73348ec9841d5c893acc2e97adff24127548fe8c786109d03c41ed564e91 - md5: f6f7c5b7d0983be186c46c4f6f8f9af8 + size: 926034 + timestamp: 1738196018799 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda + sha256: 2827ada40e8d9ca69a153a45f7fd14f32b2ead7045d3bbb5d10964898fe65733 + md5: 068d497125e4bf8a66bf707254fff5ae depends: - __osx >=11.0 arch: arm64 platform: osx license: X11 AND BSD-3-Clause - size: 796754 - timestamp: 1736683572099 + size: 797030 + timestamp: 1738196177597 - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda sha256: bb7b21d7fd0445ddc0631f64e66d91a179de4ba920b8381f29b9d006a42788c0 md5: 598fd7d4d0de2455fb74f56063969a97 diff --git a/examples/operators/magic.lock b/examples/operators/magic.lock index 75d69d71e3..9376f84e75 100644 --- a/examples/operators/magic.lock +++ b/examples/operators/magic.lock @@ -133,16 +133,16 @@ 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-25.1.0.dev2025012905-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025012905-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025012905-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012905-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025013005-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025013005-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025013005-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025013005-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-25.1.0.dev2025012905-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025013005-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-h2d0b736_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/nlohmann_json-3.11.3-he02047a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.3-h5fbd93e_0.conda @@ -356,16 +356,16 @@ 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-25.1.0.dev2025012905-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025012905-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025012905-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012905-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025013005-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025013005-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025013005-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025013005-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-25.1.0.dev2025012905-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025013005-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-ha32ae93_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-ha32ae93_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/nlohmann_json-3.11.3-h0a1ffab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openjpeg-2.5.3-h3f56577_0.conda @@ -570,16 +570,16 @@ 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-25.1.0.dev2025012905-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025012905-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025012905-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012905-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025013005-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025013005-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025013005-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025013005-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-25.1.0.dev2025012905-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025013005-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 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/nlohmann_json-3.11.3-h00cdb27_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openjpeg-2.5.3-h8a3d83b_0.conda @@ -2863,6 +2863,7 @@ packages: arch: x86_64 platform: linux license: BSD-3-Clause + license_family: BSD size: 16621 timestamp: 1738114033763 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-28_h1a9f1db_openblas.conda @@ -2880,6 +2881,7 @@ packages: arch: aarch64 platform: linux license: BSD-3-Clause + license_family: BSD size: 16697 timestamp: 1738114082682 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-28_h10e41b3_openblas.conda @@ -2897,6 +2899,7 @@ packages: arch: arm64 platform: osx license: BSD-3-Clause + license_family: BSD size: 16840 timestamp: 1738114389937 - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hb9d3cd8_2.conda @@ -3020,6 +3023,7 @@ packages: arch: x86_64 platform: linux license: BSD-3-Clause + license_family: BSD size: 16539 timestamp: 1738114043618 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-28_hab92f65_openblas.conda @@ -3035,6 +3039,7 @@ packages: arch: aarch64 platform: linux license: BSD-3-Clause + license_family: BSD size: 16655 timestamp: 1738114088527 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-28_hb3479ef_openblas.conda @@ -3050,6 +3055,7 @@ packages: arch: arm64 platform: osx license: BSD-3-Clause + license_family: BSD size: 16788 timestamp: 1738114399962 - conda: https://conda.anaconda.org/conda-forge/linux-64/libcrc32c-1.1.2-h9c3ff4c_0.tar.bz2 @@ -3766,6 +3772,7 @@ packages: arch: x86_64 platform: linux license: BSD-3-Clause + license_family: BSD size: 16553 timestamp: 1738114053556 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-28_h411afd4_openblas.conda @@ -3781,6 +3788,7 @@ packages: arch: aarch64 platform: linux license: BSD-3-Clause + license_family: BSD size: 16637 timestamp: 1738114094310 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-28_hc9a63f6_openblas.conda @@ -3796,6 +3804,7 @@ packages: arch: arm64 platform: osx license: BSD-3-Clause + license_family: BSD size: 16793 timestamp: 1738114407021 - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.3-hb9d3cd8_1.conda @@ -4859,47 +4868,47 @@ packages: license_family: BSD size: 24048 timestamp: 1733219945697 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025012905-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025013005-release.conda noarch: python - sha256: 128e24b31c4d5852e70066a0d29b2b72c5fa442541a51edeb51c84553b078c21 - md5: c74a71227a86ff11c0b1f454df78753a + sha256: 3948fa0d797c3adac4c09a2b806f4eeccd541d76e04538a66d8f12f3e95c32ee + md5: 1e5f3d8c627016a0a2b8982bf17e61af depends: - - max-core ==25.1.0.dev2025012905 release - - max-python >=25.1.0.dev2025012905,<26.0a0 - - mojo-jupyter ==25.1.0.dev2025012905 release - - mblack ==25.1.0.dev2025012905 release + - max-core ==25.1.0.dev2025013005 release + - max-python >=25.1.0.dev2025013005,<26.0a0 + - mojo-jupyter ==25.1.0.dev2025013005 release + - mblack ==25.1.0.dev2025013005 release license: LicenseRef-Modular-Proprietary - size: 9917 - timestamp: 1738127836739 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025012905-release.conda - sha256: 912bd4ab637f60a1da328f0ec8502737e37ce4fdbbeede25c6c40b58a808a34d - md5: 4ffb2fe54ee89169f96d8c74292af542 + size: 9915 + timestamp: 1738214254861 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025013005-release.conda + sha256: 4a68142da5f25068e17fd2974a9b94cba4cc3fdbf0de872c2d9a2ce1dc22ea8f + md5: 9604e0c0d7c78ef69d218810c68f74d6 depends: - - mblack ==25.1.0.dev2025012905 release + - mblack ==25.1.0.dev2025013005 release license: LicenseRef-Modular-Proprietary - size: 243535907 - timestamp: 1738127911507 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025012905-release.conda - sha256: e1ccfb768b5cc84198eb0c8c8d273d4ce6cda149427479089bc484440105e67d - md5: 5a919171033c9dfe518aef703b7ec3d8 + size: 243572302 + timestamp: 1738214269238 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025013005-release.conda + sha256: 8c826b3931ad42bbf9a4719f2ff3afcb4bae722dfe295aabb4f9c090de921c01 + md5: 6d328fe99bca688dad8cbde9e87c1409 depends: - - mblack ==25.1.0.dev2025012905 release + - mblack ==25.1.0.dev2025013005 release license: LicenseRef-Modular-Proprietary - size: 246085619 - timestamp: 1738127836737 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025012905-release.conda - sha256: 58573782ee40eb77b183e93988590d11184302e8cc257673cb72745b0447d204 - md5: 9dc83277bf38cbd419f52909847ed796 + size: 246120276 + timestamp: 1738214254859 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025013005-release.conda + sha256: 2d2e017becec59c1d82022cbf78344f27d3ec9c2c443213ddc2f3cbb5097e4a6 + md5: 6a4347efe0e034458049baed54857b4f depends: - - mblack ==25.1.0.dev2025012905 release + - mblack ==25.1.0.dev2025013005 release license: LicenseRef-Modular-Proprietary - size: 205298533 - timestamp: 1738128880810 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025012905-3.12release.conda - sha256: 1cb5820b79790fbcdf69a17d3f2de668e335afda26d4896dc5d8df7495c3f2fc - md5: 4c8cd5b0bb94e4b0566c66614882417c + size: 205294583 + timestamp: 1738218076583 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025013005-3.12release.conda + sha256: 19277c4f68fdfdc727da1c002a257d81147487672aa1ae2619d773a645a779b6 + md5: 18357c34c7e416b960cdfe0a8b2dd7fc depends: - - max-core ==25.1.0.dev2025012905 release + - max-core ==25.1.0.dev2025013005 release - python 3.12.* - fastapi - httpx @@ -4920,13 +4929,13 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 120728426 - timestamp: 1738127911515 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025012905-3.12release.conda - sha256: 569a53d099bf8fe518e3148f6bcad3d499d8eaeeb96587c0e06e792f51161553 - md5: c5094829938eded41b20717d7f135a3e + size: 120796012 + timestamp: 1738214269247 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025013005-3.12release.conda + sha256: 550c6b48bf15369d19c2624fc90a765ff1d8e3b8a429f8be99a3bed75203c3ce + md5: 6097c00b654e46b6949a0aa981b59f39 depends: - - max-core ==25.1.0.dev2025012905 release + - max-core ==25.1.0.dev2025013005 release - python 3.12.* - fastapi - httpx @@ -4947,13 +4956,13 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 123278531 - timestamp: 1738127836748 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025012905-3.12release.conda - sha256: c4629b7ca8859e4b1f736de64721c9998ae1b2f2f183ab496cc0ab5faa053c00 - md5: 411d19e9c18c3d8c665f765041cd9a3e + size: 123320768 + timestamp: 1738214254870 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025013005-3.12release.conda + sha256: c47d8b914f60590ecf3d5b08f8f7a56b258fd586348fd92194d82fdf7886e2b5 + md5: 059a0562bff4464237c2ef721a575c1c depends: - - max-core ==25.1.0.dev2025012905 release + - max-core ==25.1.0.dev2025013005 release - python 3.12.* - fastapi - httpx @@ -4974,12 +4983,12 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 106174079 - timestamp: 1738128880813 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012905-release.conda + size: 106209351 + timestamp: 1738218076586 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025013005-release.conda noarch: python - sha256: 14bb3045350a288f80df5b386555586d8e035c3f7454ba8214f73cfeace26887 - md5: ee06a37bf7cb1d8ef7b646b6e7ad2bfd + sha256: 9e6b97d7429aad6a4a95ac02151d17104912563733e0b110422eed4a5b266043 + md5: 56e3f58c601f40f008b72986f6fea6d3 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -4989,8 +4998,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130809 - timestamp: 1738127836744 + size: 130808 + timestamp: 1738214254865 - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda sha256: 78c1bbe1723449c52b7a9df1af2ee5f005209f67e40b6e1d3c7619127c43b1c7 md5: 592132998493b3ff25fd7479396e8351 @@ -5000,18 +5009,18 @@ packages: license_family: MIT size: 14465 timestamp: 1733255681319 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025012905-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025013005-release.conda noarch: python - sha256: 00c9bbee63d4d9d18235be72c23e10a8c63eeabef853575f4fdfa3cc4df9ac83 - md5: 646e77b26ddf8c7aba7d2a3ac21631a6 + sha256: 117d59275fc24b179b1df699096cb19e1ab08f2e1e17b9a81ad743dd266fc0c7 + md5: beb27e986a758a1a8755673e8c41ef4a depends: - - max-core ==25.1.0.dev2025012905 release + - max-core ==25.1.0.dev2025013005 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22932 - timestamp: 1738127836744 + size: 22933 + timestamp: 1738214254866 - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py312h178313f_2.conda sha256: b05bc8252a6e957bf4a776ed5e0e61d1ba88cdc46ccb55890c72cc58b10371f4 md5: 5b5e3267d915a107eca793d52e1b780a @@ -5106,37 +5115,37 @@ packages: license_family: MIT size: 10854 timestamp: 1733230986902 -- conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_2.conda - sha256: 17fe6afd8a00446010220d52256bd222b1e4fcb93bd587e7784b03219f3dc358 - md5: 04b34b9a40cdc48cfdab261ab176ff74 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda + sha256: 3fde293232fa3fca98635e1167de6b7c7fda83caf24b9d6c91ec9eefb4f4d586 + md5: 47e340acb35de30501a76c7c799c41d7 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 arch: x86_64 platform: linux license: X11 AND BSD-3-Clause - size: 894452 - timestamp: 1736683239706 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-ha32ae93_2.conda - sha256: 9fd726174dde993c560dd6fa1a383e61d546d380e98e0b0348d22512e5d86e24 - md5: 779046fb585c71373e8a051be06c6011 + size: 891641 + timestamp: 1738195959188 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-ha32ae93_3.conda + sha256: 91cfb655a68b0353b2833521dc919188db3d8a7f4c64bea2c6a7557b24747468 + md5: 182afabe009dc78d8b73100255ee6868 depends: - libgcc >=13 arch: aarch64 platform: linux license: X11 AND BSD-3-Clause - size: 928402 - timestamp: 1736683192463 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_2.conda - sha256: b45c73348ec9841d5c893acc2e97adff24127548fe8c786109d03c41ed564e91 - md5: f6f7c5b7d0983be186c46c4f6f8f9af8 + size: 926034 + timestamp: 1738196018799 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda + sha256: 2827ada40e8d9ca69a153a45f7fd14f32b2ead7045d3bbb5d10964898fe65733 + md5: 068d497125e4bf8a66bf707254fff5ae depends: - __osx >=11.0 arch: arm64 platform: osx license: X11 AND BSD-3-Clause - size: 796754 - timestamp: 1736683572099 + size: 797030 + timestamp: 1738196177597 - conda: https://conda.anaconda.org/conda-forge/linux-64/nlohmann_json-3.11.3-he02047a_1.conda sha256: ce4bcced4f8eea71b7cac8bc3daac097abf7a5792f278cd811dedada199500c1 md5: e46f7ac4917215b49df2ea09a694a3fa diff --git a/examples/testing/magic.lock b/examples/testing/magic.lock index 75d69d71e3..9376f84e75 100644 --- a/examples/testing/magic.lock +++ b/examples/testing/magic.lock @@ -133,16 +133,16 @@ 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-25.1.0.dev2025012905-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025012905-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025012905-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012905-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025013005-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025013005-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025013005-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025013005-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-25.1.0.dev2025012905-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025013005-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-h2d0b736_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/nlohmann_json-3.11.3-he02047a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.3-h5fbd93e_0.conda @@ -356,16 +356,16 @@ 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-25.1.0.dev2025012905-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025012905-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025012905-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012905-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025013005-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025013005-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025013005-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025013005-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-25.1.0.dev2025012905-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025013005-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-ha32ae93_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-ha32ae93_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/nlohmann_json-3.11.3-h0a1ffab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openjpeg-2.5.3-h3f56577_0.conda @@ -570,16 +570,16 @@ 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-25.1.0.dev2025012905-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025012905-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025012905-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012905-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025013005-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025013005-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025013005-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025013005-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-25.1.0.dev2025012905-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025013005-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 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/nlohmann_json-3.11.3-h00cdb27_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openjpeg-2.5.3-h8a3d83b_0.conda @@ -2863,6 +2863,7 @@ packages: arch: x86_64 platform: linux license: BSD-3-Clause + license_family: BSD size: 16621 timestamp: 1738114033763 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-28_h1a9f1db_openblas.conda @@ -2880,6 +2881,7 @@ packages: arch: aarch64 platform: linux license: BSD-3-Clause + license_family: BSD size: 16697 timestamp: 1738114082682 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-28_h10e41b3_openblas.conda @@ -2897,6 +2899,7 @@ packages: arch: arm64 platform: osx license: BSD-3-Clause + license_family: BSD size: 16840 timestamp: 1738114389937 - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hb9d3cd8_2.conda @@ -3020,6 +3023,7 @@ packages: arch: x86_64 platform: linux license: BSD-3-Clause + license_family: BSD size: 16539 timestamp: 1738114043618 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-28_hab92f65_openblas.conda @@ -3035,6 +3039,7 @@ packages: arch: aarch64 platform: linux license: BSD-3-Clause + license_family: BSD size: 16655 timestamp: 1738114088527 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-28_hb3479ef_openblas.conda @@ -3050,6 +3055,7 @@ packages: arch: arm64 platform: osx license: BSD-3-Clause + license_family: BSD size: 16788 timestamp: 1738114399962 - conda: https://conda.anaconda.org/conda-forge/linux-64/libcrc32c-1.1.2-h9c3ff4c_0.tar.bz2 @@ -3766,6 +3772,7 @@ packages: arch: x86_64 platform: linux license: BSD-3-Clause + license_family: BSD size: 16553 timestamp: 1738114053556 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-28_h411afd4_openblas.conda @@ -3781,6 +3788,7 @@ packages: arch: aarch64 platform: linux license: BSD-3-Clause + license_family: BSD size: 16637 timestamp: 1738114094310 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-28_hc9a63f6_openblas.conda @@ -3796,6 +3804,7 @@ packages: arch: arm64 platform: osx license: BSD-3-Clause + license_family: BSD size: 16793 timestamp: 1738114407021 - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.3-hb9d3cd8_1.conda @@ -4859,47 +4868,47 @@ packages: license_family: BSD size: 24048 timestamp: 1733219945697 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025012905-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025013005-release.conda noarch: python - sha256: 128e24b31c4d5852e70066a0d29b2b72c5fa442541a51edeb51c84553b078c21 - md5: c74a71227a86ff11c0b1f454df78753a + sha256: 3948fa0d797c3adac4c09a2b806f4eeccd541d76e04538a66d8f12f3e95c32ee + md5: 1e5f3d8c627016a0a2b8982bf17e61af depends: - - max-core ==25.1.0.dev2025012905 release - - max-python >=25.1.0.dev2025012905,<26.0a0 - - mojo-jupyter ==25.1.0.dev2025012905 release - - mblack ==25.1.0.dev2025012905 release + - max-core ==25.1.0.dev2025013005 release + - max-python >=25.1.0.dev2025013005,<26.0a0 + - mojo-jupyter ==25.1.0.dev2025013005 release + - mblack ==25.1.0.dev2025013005 release license: LicenseRef-Modular-Proprietary - size: 9917 - timestamp: 1738127836739 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025012905-release.conda - sha256: 912bd4ab637f60a1da328f0ec8502737e37ce4fdbbeede25c6c40b58a808a34d - md5: 4ffb2fe54ee89169f96d8c74292af542 + size: 9915 + timestamp: 1738214254861 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025013005-release.conda + sha256: 4a68142da5f25068e17fd2974a9b94cba4cc3fdbf0de872c2d9a2ce1dc22ea8f + md5: 9604e0c0d7c78ef69d218810c68f74d6 depends: - - mblack ==25.1.0.dev2025012905 release + - mblack ==25.1.0.dev2025013005 release license: LicenseRef-Modular-Proprietary - size: 243535907 - timestamp: 1738127911507 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025012905-release.conda - sha256: e1ccfb768b5cc84198eb0c8c8d273d4ce6cda149427479089bc484440105e67d - md5: 5a919171033c9dfe518aef703b7ec3d8 + size: 243572302 + timestamp: 1738214269238 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025013005-release.conda + sha256: 8c826b3931ad42bbf9a4719f2ff3afcb4bae722dfe295aabb4f9c090de921c01 + md5: 6d328fe99bca688dad8cbde9e87c1409 depends: - - mblack ==25.1.0.dev2025012905 release + - mblack ==25.1.0.dev2025013005 release license: LicenseRef-Modular-Proprietary - size: 246085619 - timestamp: 1738127836737 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025012905-release.conda - sha256: 58573782ee40eb77b183e93988590d11184302e8cc257673cb72745b0447d204 - md5: 9dc83277bf38cbd419f52909847ed796 + size: 246120276 + timestamp: 1738214254859 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025013005-release.conda + sha256: 2d2e017becec59c1d82022cbf78344f27d3ec9c2c443213ddc2f3cbb5097e4a6 + md5: 6a4347efe0e034458049baed54857b4f depends: - - mblack ==25.1.0.dev2025012905 release + - mblack ==25.1.0.dev2025013005 release license: LicenseRef-Modular-Proprietary - size: 205298533 - timestamp: 1738128880810 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025012905-3.12release.conda - sha256: 1cb5820b79790fbcdf69a17d3f2de668e335afda26d4896dc5d8df7495c3f2fc - md5: 4c8cd5b0bb94e4b0566c66614882417c + size: 205294583 + timestamp: 1738218076583 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025013005-3.12release.conda + sha256: 19277c4f68fdfdc727da1c002a257d81147487672aa1ae2619d773a645a779b6 + md5: 18357c34c7e416b960cdfe0a8b2dd7fc depends: - - max-core ==25.1.0.dev2025012905 release + - max-core ==25.1.0.dev2025013005 release - python 3.12.* - fastapi - httpx @@ -4920,13 +4929,13 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 120728426 - timestamp: 1738127911515 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025012905-3.12release.conda - sha256: 569a53d099bf8fe518e3148f6bcad3d499d8eaeeb96587c0e06e792f51161553 - md5: c5094829938eded41b20717d7f135a3e + size: 120796012 + timestamp: 1738214269247 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025013005-3.12release.conda + sha256: 550c6b48bf15369d19c2624fc90a765ff1d8e3b8a429f8be99a3bed75203c3ce + md5: 6097c00b654e46b6949a0aa981b59f39 depends: - - max-core ==25.1.0.dev2025012905 release + - max-core ==25.1.0.dev2025013005 release - python 3.12.* - fastapi - httpx @@ -4947,13 +4956,13 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 123278531 - timestamp: 1738127836748 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025012905-3.12release.conda - sha256: c4629b7ca8859e4b1f736de64721c9998ae1b2f2f183ab496cc0ab5faa053c00 - md5: 411d19e9c18c3d8c665f765041cd9a3e + size: 123320768 + timestamp: 1738214254870 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025013005-3.12release.conda + sha256: c47d8b914f60590ecf3d5b08f8f7a56b258fd586348fd92194d82fdf7886e2b5 + md5: 059a0562bff4464237c2ef721a575c1c depends: - - max-core ==25.1.0.dev2025012905 release + - max-core ==25.1.0.dev2025013005 release - python 3.12.* - fastapi - httpx @@ -4974,12 +4983,12 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 106174079 - timestamp: 1738128880813 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012905-release.conda + size: 106209351 + timestamp: 1738218076586 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025013005-release.conda noarch: python - sha256: 14bb3045350a288f80df5b386555586d8e035c3f7454ba8214f73cfeace26887 - md5: ee06a37bf7cb1d8ef7b646b6e7ad2bfd + sha256: 9e6b97d7429aad6a4a95ac02151d17104912563733e0b110422eed4a5b266043 + md5: 56e3f58c601f40f008b72986f6fea6d3 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -4989,8 +4998,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130809 - timestamp: 1738127836744 + size: 130808 + timestamp: 1738214254865 - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda sha256: 78c1bbe1723449c52b7a9df1af2ee5f005209f67e40b6e1d3c7619127c43b1c7 md5: 592132998493b3ff25fd7479396e8351 @@ -5000,18 +5009,18 @@ packages: license_family: MIT size: 14465 timestamp: 1733255681319 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025012905-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025013005-release.conda noarch: python - sha256: 00c9bbee63d4d9d18235be72c23e10a8c63eeabef853575f4fdfa3cc4df9ac83 - md5: 646e77b26ddf8c7aba7d2a3ac21631a6 + sha256: 117d59275fc24b179b1df699096cb19e1ab08f2e1e17b9a81ad743dd266fc0c7 + md5: beb27e986a758a1a8755673e8c41ef4a depends: - - max-core ==25.1.0.dev2025012905 release + - max-core ==25.1.0.dev2025013005 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22932 - timestamp: 1738127836744 + size: 22933 + timestamp: 1738214254866 - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py312h178313f_2.conda sha256: b05bc8252a6e957bf4a776ed5e0e61d1ba88cdc46ccb55890c72cc58b10371f4 md5: 5b5e3267d915a107eca793d52e1b780a @@ -5106,37 +5115,37 @@ packages: license_family: MIT size: 10854 timestamp: 1733230986902 -- conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_2.conda - sha256: 17fe6afd8a00446010220d52256bd222b1e4fcb93bd587e7784b03219f3dc358 - md5: 04b34b9a40cdc48cfdab261ab176ff74 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda + sha256: 3fde293232fa3fca98635e1167de6b7c7fda83caf24b9d6c91ec9eefb4f4d586 + md5: 47e340acb35de30501a76c7c799c41d7 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 arch: x86_64 platform: linux license: X11 AND BSD-3-Clause - size: 894452 - timestamp: 1736683239706 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-ha32ae93_2.conda - sha256: 9fd726174dde993c560dd6fa1a383e61d546d380e98e0b0348d22512e5d86e24 - md5: 779046fb585c71373e8a051be06c6011 + size: 891641 + timestamp: 1738195959188 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-ha32ae93_3.conda + sha256: 91cfb655a68b0353b2833521dc919188db3d8a7f4c64bea2c6a7557b24747468 + md5: 182afabe009dc78d8b73100255ee6868 depends: - libgcc >=13 arch: aarch64 platform: linux license: X11 AND BSD-3-Clause - size: 928402 - timestamp: 1736683192463 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_2.conda - sha256: b45c73348ec9841d5c893acc2e97adff24127548fe8c786109d03c41ed564e91 - md5: f6f7c5b7d0983be186c46c4f6f8f9af8 + size: 926034 + timestamp: 1738196018799 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda + sha256: 2827ada40e8d9ca69a153a45f7fd14f32b2ead7045d3bbb5d10964898fe65733 + md5: 068d497125e4bf8a66bf707254fff5ae depends: - __osx >=11.0 arch: arm64 platform: osx license: X11 AND BSD-3-Clause - size: 796754 - timestamp: 1736683572099 + size: 797030 + timestamp: 1738196177597 - conda: https://conda.anaconda.org/conda-forge/linux-64/nlohmann_json-3.11.3-he02047a_1.conda sha256: ce4bcced4f8eea71b7cac8bc3daac097abf7a5792f278cd811dedada199500c1 md5: e46f7ac4917215b49df2ea09a694a3fa diff --git a/magic.lock b/magic.lock index 8a4e8843f2..cb24a169f8 100644 --- a/magic.lock +++ b/magic.lock @@ -134,16 +134,16 @@ 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-25.1.0.dev2025012905-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025012905-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025012905-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012905-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025013005-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025013005-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025013005-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025013005-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-25.1.0.dev2025012905-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025013005-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-h2d0b736_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/nlohmann_json-3.11.3-he02047a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.3-h5fbd93e_0.conda @@ -358,16 +358,16 @@ 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-25.1.0.dev2025012905-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025012905-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025012905-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012905-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025013005-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025013005-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025013005-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025013005-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-25.1.0.dev2025012905-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025013005-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-ha32ae93_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-ha32ae93_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/nlohmann_json-3.11.3-h0a1ffab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openjpeg-2.5.3-h3f56577_0.conda @@ -573,16 +573,16 @@ 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-25.1.0.dev2025012905-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025012905-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025012905-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012905-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025013005-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025013005-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025013005-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025013005-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-25.1.0.dev2025012905-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025013005-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 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/nlohmann_json-3.11.3-h00cdb27_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openjpeg-2.5.3-h8a3d83b_0.conda @@ -2866,6 +2866,7 @@ packages: arch: x86_64 platform: linux license: BSD-3-Clause + license_family: BSD size: 16621 timestamp: 1738114033763 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-28_h1a9f1db_openblas.conda @@ -2883,6 +2884,7 @@ packages: arch: aarch64 platform: linux license: BSD-3-Clause + license_family: BSD size: 16697 timestamp: 1738114082682 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-28_h10e41b3_openblas.conda @@ -2900,6 +2902,7 @@ packages: arch: arm64 platform: osx license: BSD-3-Clause + license_family: BSD size: 16840 timestamp: 1738114389937 - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hb9d3cd8_2.conda @@ -3023,6 +3026,7 @@ packages: arch: x86_64 platform: linux license: BSD-3-Clause + license_family: BSD size: 16539 timestamp: 1738114043618 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-28_hab92f65_openblas.conda @@ -3038,6 +3042,7 @@ packages: arch: aarch64 platform: linux license: BSD-3-Clause + license_family: BSD size: 16655 timestamp: 1738114088527 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-28_hb3479ef_openblas.conda @@ -3053,6 +3058,7 @@ packages: arch: arm64 platform: osx license: BSD-3-Clause + license_family: BSD size: 16788 timestamp: 1738114399962 - conda: https://conda.anaconda.org/conda-forge/linux-64/libcrc32c-1.1.2-h9c3ff4c_0.tar.bz2 @@ -3769,6 +3775,7 @@ packages: arch: x86_64 platform: linux license: BSD-3-Clause + license_family: BSD size: 16553 timestamp: 1738114053556 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-28_h411afd4_openblas.conda @@ -3784,6 +3791,7 @@ packages: arch: aarch64 platform: linux license: BSD-3-Clause + license_family: BSD size: 16637 timestamp: 1738114094310 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-28_hc9a63f6_openblas.conda @@ -3799,6 +3807,7 @@ packages: arch: arm64 platform: osx license: BSD-3-Clause + license_family: BSD size: 16793 timestamp: 1738114407021 - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.3-hb9d3cd8_1.conda @@ -4871,47 +4880,47 @@ packages: license_family: BSD size: 24048 timestamp: 1733219945697 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025012905-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025013005-release.conda noarch: python - sha256: 128e24b31c4d5852e70066a0d29b2b72c5fa442541a51edeb51c84553b078c21 - md5: c74a71227a86ff11c0b1f454df78753a + sha256: 3948fa0d797c3adac4c09a2b806f4eeccd541d76e04538a66d8f12f3e95c32ee + md5: 1e5f3d8c627016a0a2b8982bf17e61af depends: - - max-core ==25.1.0.dev2025012905 release - - max-python >=25.1.0.dev2025012905,<26.0a0 - - mojo-jupyter ==25.1.0.dev2025012905 release - - mblack ==25.1.0.dev2025012905 release + - max-core ==25.1.0.dev2025013005 release + - max-python >=25.1.0.dev2025013005,<26.0a0 + - mojo-jupyter ==25.1.0.dev2025013005 release + - mblack ==25.1.0.dev2025013005 release license: LicenseRef-Modular-Proprietary - size: 9917 - timestamp: 1738127836739 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025012905-release.conda - sha256: 912bd4ab637f60a1da328f0ec8502737e37ce4fdbbeede25c6c40b58a808a34d - md5: 4ffb2fe54ee89169f96d8c74292af542 + size: 9915 + timestamp: 1738214254861 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025013005-release.conda + sha256: 4a68142da5f25068e17fd2974a9b94cba4cc3fdbf0de872c2d9a2ce1dc22ea8f + md5: 9604e0c0d7c78ef69d218810c68f74d6 depends: - - mblack ==25.1.0.dev2025012905 release + - mblack ==25.1.0.dev2025013005 release license: LicenseRef-Modular-Proprietary - size: 243535907 - timestamp: 1738127911507 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025012905-release.conda - sha256: e1ccfb768b5cc84198eb0c8c8d273d4ce6cda149427479089bc484440105e67d - md5: 5a919171033c9dfe518aef703b7ec3d8 + size: 243572302 + timestamp: 1738214269238 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025013005-release.conda + sha256: 8c826b3931ad42bbf9a4719f2ff3afcb4bae722dfe295aabb4f9c090de921c01 + md5: 6d328fe99bca688dad8cbde9e87c1409 depends: - - mblack ==25.1.0.dev2025012905 release + - mblack ==25.1.0.dev2025013005 release license: LicenseRef-Modular-Proprietary - size: 246085619 - timestamp: 1738127836737 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025012905-release.conda - sha256: 58573782ee40eb77b183e93988590d11184302e8cc257673cb72745b0447d204 - md5: 9dc83277bf38cbd419f52909847ed796 + size: 246120276 + timestamp: 1738214254859 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025013005-release.conda + sha256: 2d2e017becec59c1d82022cbf78344f27d3ec9c2c443213ddc2f3cbb5097e4a6 + md5: 6a4347efe0e034458049baed54857b4f depends: - - mblack ==25.1.0.dev2025012905 release + - mblack ==25.1.0.dev2025013005 release license: LicenseRef-Modular-Proprietary - size: 205298533 - timestamp: 1738128880810 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025012905-3.12release.conda - sha256: 1cb5820b79790fbcdf69a17d3f2de668e335afda26d4896dc5d8df7495c3f2fc - md5: 4c8cd5b0bb94e4b0566c66614882417c + size: 205294583 + timestamp: 1738218076583 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025013005-3.12release.conda + sha256: 19277c4f68fdfdc727da1c002a257d81147487672aa1ae2619d773a645a779b6 + md5: 18357c34c7e416b960cdfe0a8b2dd7fc depends: - - max-core ==25.1.0.dev2025012905 release + - max-core ==25.1.0.dev2025013005 release - python 3.12.* - fastapi - httpx @@ -4932,13 +4941,13 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 120728426 - timestamp: 1738127911515 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025012905-3.12release.conda - sha256: 569a53d099bf8fe518e3148f6bcad3d499d8eaeeb96587c0e06e792f51161553 - md5: c5094829938eded41b20717d7f135a3e + size: 120796012 + timestamp: 1738214269247 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025013005-3.12release.conda + sha256: 550c6b48bf15369d19c2624fc90a765ff1d8e3b8a429f8be99a3bed75203c3ce + md5: 6097c00b654e46b6949a0aa981b59f39 depends: - - max-core ==25.1.0.dev2025012905 release + - max-core ==25.1.0.dev2025013005 release - python 3.12.* - fastapi - httpx @@ -4959,13 +4968,13 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 123278531 - timestamp: 1738127836748 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025012905-3.12release.conda - sha256: c4629b7ca8859e4b1f736de64721c9998ae1b2f2f183ab496cc0ab5faa053c00 - md5: 411d19e9c18c3d8c665f765041cd9a3e + size: 123320768 + timestamp: 1738214254870 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025013005-3.12release.conda + sha256: c47d8b914f60590ecf3d5b08f8f7a56b258fd586348fd92194d82fdf7886e2b5 + md5: 059a0562bff4464237c2ef721a575c1c depends: - - max-core ==25.1.0.dev2025012905 release + - max-core ==25.1.0.dev2025013005 release - python 3.12.* - fastapi - httpx @@ -4986,12 +4995,12 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 106174079 - timestamp: 1738128880813 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025012905-release.conda + size: 106209351 + timestamp: 1738218076586 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025013005-release.conda noarch: python - sha256: 14bb3045350a288f80df5b386555586d8e035c3f7454ba8214f73cfeace26887 - md5: ee06a37bf7cb1d8ef7b646b6e7ad2bfd + sha256: 9e6b97d7429aad6a4a95ac02151d17104912563733e0b110422eed4a5b266043 + md5: 56e3f58c601f40f008b72986f6fea6d3 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -5001,8 +5010,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130809 - timestamp: 1738127836744 + size: 130808 + timestamp: 1738214254865 - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda sha256: 78c1bbe1723449c52b7a9df1af2ee5f005209f67e40b6e1d3c7619127c43b1c7 md5: 592132998493b3ff25fd7479396e8351 @@ -5012,18 +5021,18 @@ packages: license_family: MIT size: 14465 timestamp: 1733255681319 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025012905-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025013005-release.conda noarch: python - sha256: 00c9bbee63d4d9d18235be72c23e10a8c63eeabef853575f4fdfa3cc4df9ac83 - md5: 646e77b26ddf8c7aba7d2a3ac21631a6 + sha256: 117d59275fc24b179b1df699096cb19e1ab08f2e1e17b9a81ad743dd266fc0c7 + md5: beb27e986a758a1a8755673e8c41ef4a depends: - - max-core ==25.1.0.dev2025012905 release + - max-core ==25.1.0.dev2025013005 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22932 - timestamp: 1738127836744 + size: 22933 + timestamp: 1738214254866 - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py312h178313f_2.conda sha256: b05bc8252a6e957bf4a776ed5e0e61d1ba88cdc46ccb55890c72cc58b10371f4 md5: 5b5e3267d915a107eca793d52e1b780a @@ -5118,37 +5127,37 @@ packages: license_family: MIT size: 10854 timestamp: 1733230986902 -- conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_2.conda - sha256: 17fe6afd8a00446010220d52256bd222b1e4fcb93bd587e7784b03219f3dc358 - md5: 04b34b9a40cdc48cfdab261ab176ff74 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda + sha256: 3fde293232fa3fca98635e1167de6b7c7fda83caf24b9d6c91ec9eefb4f4d586 + md5: 47e340acb35de30501a76c7c799c41d7 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 arch: x86_64 platform: linux license: X11 AND BSD-3-Clause - size: 894452 - timestamp: 1736683239706 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-ha32ae93_2.conda - sha256: 9fd726174dde993c560dd6fa1a383e61d546d380e98e0b0348d22512e5d86e24 - md5: 779046fb585c71373e8a051be06c6011 + size: 891641 + timestamp: 1738195959188 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-ha32ae93_3.conda + sha256: 91cfb655a68b0353b2833521dc919188db3d8a7f4c64bea2c6a7557b24747468 + md5: 182afabe009dc78d8b73100255ee6868 depends: - libgcc >=13 arch: aarch64 platform: linux license: X11 AND BSD-3-Clause - size: 928402 - timestamp: 1736683192463 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_2.conda - sha256: b45c73348ec9841d5c893acc2e97adff24127548fe8c786109d03c41ed564e91 - md5: f6f7c5b7d0983be186c46c4f6f8f9af8 + size: 926034 + timestamp: 1738196018799 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda + sha256: 2827ada40e8d9ca69a153a45f7fd14f32b2ead7045d3bbb5d10964898fe65733 + md5: 068d497125e4bf8a66bf707254fff5ae depends: - __osx >=11.0 arch: arm64 platform: osx license: X11 AND BSD-3-Clause - size: 796754 - timestamp: 1736683572099 + size: 797030 + timestamp: 1738196177597 - conda: https://conda.anaconda.org/conda-forge/linux-64/nlohmann_json-3.11.3-he02047a_1.conda sha256: ce4bcced4f8eea71b7cac8bc3daac097abf7a5792f278cd811dedada199500c1 md5: e46f7ac4917215b49df2ea09a694a3fa From 0e03d6eee7b935768059beb038d3bedb1fb79e6e Mon Sep 17 00:00:00 2001 From: ematejska Date: Thu, 30 Jan 2025 11:12:13 -0800 Subject: [PATCH 320/509] [Issues] Updating the issue templates (#3981) Updating the issue templates to use magic. --- .github/ISSUE_TEMPLATE/dev_console_issue.yaml | 31 -------------- .github/ISSUE_TEMPLATE/modular_cli_issue.yaml | 41 ------------------- .github/ISSUE_TEMPLATE/mojo_bug_report.yaml | 5 +-- 3 files changed, 2 insertions(+), 75 deletions(-) delete mode 100644 .github/ISSUE_TEMPLATE/dev_console_issue.yaml delete mode 100644 .github/ISSUE_TEMPLATE/modular_cli_issue.yaml diff --git a/.github/ISSUE_TEMPLATE/dev_console_issue.yaml b/.github/ISSUE_TEMPLATE/dev_console_issue.yaml deleted file mode 100644 index 42d8e0f641..0000000000 --- a/.github/ISSUE_TEMPLATE/dev_console_issue.yaml +++ /dev/null @@ -1,31 +0,0 @@ -name: Developer Console issue -description: Create an issue report to help us improve the Developer Console. -title: "[Dev Console]" -labels: - - dev-console -body: - - type: markdown - attributes: - value: | - Thanks for taking the time to fill out a bug report! - - Please provide a descriptive title above and fill in the following fields. - - - type: textarea - id: Description - attributes: - label: Issue description - description: Describe the issue you encountered and what you expected to happen. - validations: - required: true - - - type: textarea - id: Steps - attributes: - label: Steps to reproduce - description: Provide the specific steps to reproduce the issue. - value: | - - Add screenshots if possible, to help explain the problem. - - Include anything that might help us debug the issue. - validations: - required: true diff --git a/.github/ISSUE_TEMPLATE/modular_cli_issue.yaml b/.github/ISSUE_TEMPLATE/modular_cli_issue.yaml deleted file mode 100644 index acaa5ece88..0000000000 --- a/.github/ISSUE_TEMPLATE/modular_cli_issue.yaml +++ /dev/null @@ -1,41 +0,0 @@ -name: Modular CLI issue -description: Create an issue for the Modular CLI tool. -title: "[Modular CLI]" -labels: - - modular-cli -body: - - type: markdown - attributes: - value: | - Thanks for taking the time to fill out an issue report! - - Please provide a descriptive title above and fill in the following fields. - - - type: textarea - id: Description - attributes: - label: Issue description - description: Describe the issue you encountered and what you expected to happen. - validations: - required: true - - type: textarea - id: Steps - attributes: - label: Steps to reproduce - description: Provide the specific steps to reproduce the issue. - value: | - - Include relevant code snippet that did not work as expected. - - If applicable, add screenshots to help explain the problem. - - Include anything else that might help us debug the issue. - validations: - required: true - - - type: textarea - id: Context - attributes: - label: Version Info - description: Which version of the Modular CLI are you using ? - value: | - - Provide Modular CLI version by pasting the output of `modular -v` - - What OS did you install modular CLI on ? - render: shell diff --git a/.github/ISSUE_TEMPLATE/mojo_bug_report.yaml b/.github/ISSUE_TEMPLATE/mojo_bug_report.yaml index 411821ba3f..82d5a3763f 100644 --- a/.github/ISSUE_TEMPLATE/mojo_bug_report.yaml +++ b/.github/ISSUE_TEMPLATE/mojo_bug_report.yaml @@ -44,6 +44,5 @@ body: label: System information description: What version of Mojo are you using? value: | - - What OS did you install Mojo on? - - Provide version information for Mojo by pasting the output of `mojo -v`. - - Provide the Modular CLI version by pasting the output of `modular -v`. + - Provide the system information by running `magic info`. + - Provide version information for MAX (includes Mojo) by pasting the output of `magic list max`. From 1219cc42b0112e0b698728f44601dd61005dd22a Mon Sep 17 00:00:00 2001 From: Lukas Hermann <1734032+lsh@users.noreply.github.com> Date: Thu, 30 Jan 2025 10:54:48 -0800 Subject: [PATCH 321/509] [stdlib] Add `UnsafePointer` constructors for `StringSlice` As we move more methods away from `StringRef` towards `StringSlice`, we want a way to handle the common case of construction from a null terminated pointer. MODULAR_ORIG_COMMIT_REV_ID: b2d43d9b170f472698614cd164b175fa2d3f224f --- stdlib/src/collections/string/string.mojo | 5 +- .../src/collections/string/string_slice.mojo | 58 +++++++++++++++++++ .../collections/string/test_string_slice.mojo | 23 ++++++++ 3 files changed, 85 insertions(+), 1 deletion(-) diff --git a/stdlib/src/collections/string/string.mojo b/stdlib/src/collections/string/string.mojo index bfe956985e..5d94f01e08 100644 --- a/stdlib/src/collections/string/string.mojo +++ b/stdlib/src/collections/string/string.mojo @@ -828,7 +828,10 @@ struct String( buff: The buffer. This should have an existing terminator. """ - return String(ptr=buff, length=len(StringRef(ptr=buff)) + 1) + return String( + ptr=buff, + length=len(StringSlice[buff.origin](unsafe_from_utf8_ptr=buff)) + 1, + ) @staticmethod fn _from_bytes(owned buff: Self._buffer_type) -> String: diff --git a/stdlib/src/collections/string/string_slice.mojo b/stdlib/src/collections/string/string_slice.mojo index ed6939b8f5..f5c684462c 100644 --- a/stdlib/src/collections/string/string_slice.mojo +++ b/stdlib/src/collections/string/string_slice.mojo @@ -29,6 +29,7 @@ from memory import UnsafePointer, memcmp, memcpy, Span from memory.memory import _memcmp_impl_unconstrained from sys import bitwidthof, simdwidthof from sys.intrinsics import unlikely, likely +from sys.ffi import c_char from utils.stringref import StringRef, _memmem from os import PathLike @@ -423,6 +424,45 @@ struct StringSlice[mut: Bool, //, origin: Origin[mut]]( self = Self(unsafe_from_utf8=byte_slice) + fn __init__(out self, *, unsafe_from_utf8_ptr: UnsafePointer[Byte]): + """Construct a new StringSlice from a `UnsafePointer[Byte]` pointing to null-terminated UTF-8 + encoded bytes. + + Args: + unsafe_from_utf8_ptr: An `UnsafePointer[Byte]` of null-terminated bytes encoded in UTF-8. + + Safety: + - `unsafe_from_utf8_ptr` MUST point to data that is valid for + `origin`. + - `unsafe_from_utf8_ptr` MUST be valid UTF-8 encoded data. + - `unsafe_from_utf8_ptr` MUST be null terminated. + """ + + var count = _unsafe_strlen(unsafe_from_utf8_ptr) + + var byte_slice = Span[Byte, origin]( + ptr=unsafe_from_utf8_ptr, + length=count, + ) + + self = Self(unsafe_from_utf8=byte_slice) + + fn __init__(out self, *, unsafe_from_utf8_cstr_ptr: UnsafePointer[c_char]): + """Construct a new StringSlice from a `UnsafePointer[c_char]` pointing to null-terminated UTF-8 + encoded bytes. + + Args: + unsafe_from_utf8_cstr_ptr: An `UnsafePointer[c_char]` of null-terminated bytes encoded in UTF-8. + + Safety: + - `unsafe_from_utf8_ptr` MUST point to data that is valid for + `origin`. + - `unsafe_from_utf8_ptr` MUST be valid UTF-8 encoded data. + - `unsafe_from_utf8_ptr` MUST be null terminated. + """ + var ptr = unsafe_from_utf8_cstr_ptr.bitcast[Byte]() + self = Self(unsafe_from_utf8_ptr=ptr) + @always_inline fn __init__(out self, *, ptr: UnsafePointer[Byte], length: UInt): """Construct a `StringSlice` from a pointer to a sequence of UTF-8 @@ -1584,3 +1624,21 @@ fn _is_newline_char[ var b2 = p[eol_start + 2] return b0 == 0xE2 and b1 == 0x80 and (b2 == 0xA8 or b2 == 0xA9) return False + + +@always_inline +fn _unsafe_strlen(owned ptr: UnsafePointer[Byte]) -> Int: + """ + Get the length of a null-terminated string from a pointer. + Note: the length does NOT include the null terminator. + + Args: + ptr: The null-terminated pointer to the string. + + Returns: + The length of the null terminated string without the null terminator. + """ + var len = 0 + while ptr.load(len): + len += 1 + return len diff --git a/stdlib/test/collections/string/test_string_slice.mojo b/stdlib/test/collections/string/test_string_slice.mojo index 0e7edc9980..1ac338e12d 100644 --- a/stdlib/test/collections/string/test_string_slice.mojo +++ b/stdlib/test/collections/string/test_string_slice.mojo @@ -857,6 +857,28 @@ def test_chars_iter(): assert_equal(s3_iter.__has_next__(), False) +def test_string_slice_from_pointer(): + var a = StringSlice("AAA") + var b = StringSlice[StaticConstantOrigin]( + unsafe_from_utf8_ptr=a.unsafe_ptr() + ) + assert_equal(3, len(a)) + assert_equal(3, len(b)) + var c = String("ABCD") + var d = StringSlice[__origin_of(c)]( + unsafe_from_utf8_cstr_ptr=c.unsafe_cstr_ptr() + ) + var e = StringSlice[__origin_of(c)](unsafe_from_utf8_ptr=c.unsafe_ptr()) + assert_equal(4, len(c)) + assert_equal(4, len(d)) + assert_equal(4, len(e)) + assert_true("A", d[0]) + assert_true("B", d[1]) + assert_true("C", d[2]) + assert_true("D", d[3]) + assert_true("D", d[-1]) + + def main(): test_string_slice_layout() test_string_literal_byte_span() @@ -886,3 +908,4 @@ def main(): test_startswith() test_endswith() test_chars_iter() + test_string_slice_from_pointer() From 32f48ac13d21287dbba2a192d5ed7ac9886a1a35 Mon Sep 17 00:00:00 2001 From: Lukas Hermann <1734032+lsh@users.noreply.github.com> Date: Thu, 30 Jan 2025 14:44:13 -0800 Subject: [PATCH 322/509] [stdlib] Replace a ton of StringRefs with StringSlice `StringSlice` has the same ABI as `StringRef`, but `StringRef` doesn't have an `Origin` associated with it. We should get rid of `StringRef` and replace it with `StringSlice`, and this PR does a first pass at that. MODULAR_ORIG_COMMIT_REV_ID: 04cd7c710e9c1b16e03562fb5dbd3fcf93336b8d --- stdlib/src/builtin/error.mojo | 19 +++- stdlib/src/builtin/io.mojo | 5 +- stdlib/src/builtin/object.mojo | 25 +++--- .../src/collections/string/inline_string.mojo | 2 +- stdlib/src/collections/string/string.mojo | 13 +-- .../src/collections/string/string_slice.mojo | 12 +++ stdlib/src/os/env.mojo | 6 +- stdlib/src/os/os.mojo | 12 +-- stdlib/src/pathlib/path.mojo | 4 +- stdlib/src/pwd/_linux.mojo | 32 +++++-- stdlib/src/pwd/_macos.mojo | 33 +++++-- stdlib/src/python/_cpython.mojo | 86 ++++++++----------- stdlib/src/python/python.mojo | 14 +-- stdlib/src/python/python_object.mojo | 19 +--- stdlib/src/sys/arg.mojo | 2 - stdlib/src/sys/ffi.mojo | 22 +++-- stdlib/test/builtin/test_print.mojo | 6 +- .../test/collections/string/test_string.mojo | 3 +- stdlib/test/hashlib/test_hasher.mojo | 4 +- stdlib/test/python/test_ownership.mojo | 16 ++-- stdlib/test/python/test_python_object.mojo | 10 +-- 21 files changed, 201 insertions(+), 144 deletions(-) diff --git a/stdlib/src/builtin/error.mojo b/stdlib/src/builtin/error.mojo index 0e89c0ee6b..adb6fcecc8 100644 --- a/stdlib/src/builtin/error.mojo +++ b/stdlib/src/builtin/error.mojo @@ -22,7 +22,6 @@ from memory import UnsafePointer, memcpy from memory.memory import _free from collections.string import StringSlice -from utils import StringRef from utils.write import write_buffered # ===-----------------------------------------------------------------------===# @@ -96,7 +95,7 @@ struct Error( self.loaded_length = -length @implicit - fn __init__(out self, src: StringRef): + fn __init__(out self, src: StringSlice): """Construct an Error object with a given string ref. Args: @@ -196,7 +195,11 @@ struct Error( """ if not self: return - writer.write(StringRef(self.unsafe_cstr_ptr())) + writer.write( + StringSlice[__origin_of(self)]( + unsafe_from_utf8_cstr_ptr=self.unsafe_cstr_ptr() + ) + ) @no_inline fn __repr__(self) -> String: @@ -206,7 +209,15 @@ struct Error( A printable representation of the error message. """ return String( - "Error(", repr(String(StringRef(self.unsafe_cstr_ptr()))), ")" + "Error(", + repr( + String( + StringSlice[__origin_of(self)]( + unsafe_from_utf8_cstr_ptr=self.unsafe_cstr_ptr() + ) + ) + ), + ")", ) # ===-------------------------------------------------------------------===# diff --git a/stdlib/src/builtin/io.mojo b/stdlib/src/builtin/io.mojo index d52d56e411..58283eacbc 100644 --- a/stdlib/src/builtin/io.mojo +++ b/stdlib/src/builtin/io.mojo @@ -37,7 +37,6 @@ from memory import UnsafePointer, memcpy, bitcast from utils import ( StaticString, - StringRef, write_args, write_buffered, ) @@ -152,7 +151,9 @@ struct _fdopen[mode: StringLiteral = "a"]: # TODO: check errno to ensure we haven't encountered EINVAL or ENOMEM instead raise Error("EOF") # Copy the buffer (excluding the delimiter itself) into a Mojo String. - var s = String(StringRef(buffer, bytes_read - 1)) + var s = String( + StringSlice[buffer.origin](ptr=buffer, length=bytes_read - 1) + ) # Explicitly free the buffer using free() instead of the Mojo allocator. libc.free(buffer.bitcast[NoneType]()) return s diff --git a/stdlib/src/builtin/object.mojo b/stdlib/src/builtin/object.mojo index a1d896f9aa..f8fcd52e66 100644 --- a/stdlib/src/builtin/object.mojo +++ b/stdlib/src/builtin/object.mojo @@ -16,12 +16,13 @@ These are Mojo built-ins, so you don't need to import them. """ from collections import Dict, List +from collections.string import StringSlice from sys.ffi import OpaquePointer from sys.intrinsics import _type_is_eq from memory import ArcPointer, UnsafePointer, memcmp, memcpy -from utils import StringRef, Variant +from utils import Variant # ===----------------------------------------------------------------------=== # # _ObjectImpl @@ -578,7 +579,13 @@ struct _ObjectImpl( return if self.is_str(): var string = self.get_as_string() - writer.write("'", StringRef(string.data, string.length), "'") + writer.write( + "'", + StringSlice[__origin_of(string)]( + ptr=string.data, length=string.length + ), + "'", + ) return if self.is_func(): writer.write( @@ -799,24 +806,20 @@ struct object( Args: value: The string value. """ - self = object(StringRef(value)) + self = object(StringSlice(value)) @always_inline @implicit - fn __init__(out self, value: StringRef): + fn __init__(out self, value: StringSlice): """Initializes the object from a string reference. Args: value: The string value. """ var impl = _ImmutableString( - UnsafePointer[UInt8].alloc(value.length), value.length - ) - memcpy( - dest=impl.data, - src=value.unsafe_ptr(), - count=value.length, + UnsafePointer[UInt8].alloc(len(value)), len(value) ) + memcpy(dest=impl.data, src=value.unsafe_ptr(), count=len(value)) self._value = impl @always_inline @@ -845,8 +848,6 @@ struct object( self._append(value.get[i, Float64]()) elif _type_is_eq[T, Bool](): self._append(value.get[i, Bool]()) - elif _type_is_eq[T, StringRef](): - self._append(value.get[i, StringRef]()) elif _type_is_eq[T, StringLiteral](): self._append(value.get[i, StringLiteral]()) else: diff --git a/stdlib/src/collections/string/inline_string.mojo b/stdlib/src/collections/string/inline_string.mojo index 28304f1418..7245653360 100644 --- a/stdlib/src/collections/string/inline_string.mojo +++ b/stdlib/src/collections/string/inline_string.mojo @@ -20,7 +20,7 @@ from collections.string import StringSlice from memory import UnsafePointer, memcpy, Span from os import abort from sys import sizeof -from utils import Variant, StringRef +from utils import Variant # ===-----------------------------------------------------------------------===# diff --git a/stdlib/src/collections/string/string.mojo b/stdlib/src/collections/string/string.mojo index 5d94f01e08..1b0fbe9a4e 100644 --- a/stdlib/src/collections/string/string.mojo +++ b/stdlib/src/collections/string/string.mojo @@ -28,8 +28,6 @@ from python import PythonObject from utils import ( IndexList, - StaticString, - StringRef, Variant, Writable, Writer, @@ -44,6 +42,7 @@ from collections.string._unicode import ( from collections.string.format import _CurlyEntryFormattable, _FormatCurlyEntry from collections.string.string_slice import ( StringSlice, + StaticString, _StringSliceIter, _to_string_list, _utf8_byte_type, @@ -466,9 +465,9 @@ fn atof(str_slice: StringSlice) raises -> Float64: start += 1 sign = -1 if (str_len - start) >= 3: - if StringRef(buff + start, 3) == "nan": + if StringSlice[buff.origin](ptr=buff + start, length=3) == "nan": return FloatLiteral.nan - if StringRef(buff + start, 3) == "inf": + if StringSlice[buff.origin](ptr=buff + start, length=3) == "inf": return FloatLiteral.infinity * sign # read before dot for pos in range(start, str_len): @@ -890,7 +889,11 @@ struct String( start, end, step = span.indices(self.byte_length()) var r = range(start, end, step) if step == 1: - return String(StringRef(self._buffer.data + start, len(r))) + return String( + StringSlice[__origin_of(self._buffer)]( + ptr=self._buffer.data + start, length=len(r) + ) + ) var buffer = Self._buffer_type() var result_len = len(r) diff --git a/stdlib/src/collections/string/string_slice.mojo b/stdlib/src/collections/string/string_slice.mojo index f5c684462c..f2ae7cd174 100644 --- a/stdlib/src/collections/string/string_slice.mojo +++ b/stdlib/src/collections/string/string_slice.mojo @@ -31,6 +31,7 @@ from sys import bitwidthof, simdwidthof from sys.intrinsics import unlikely, likely from sys.ffi import c_char from utils.stringref import StringRef, _memmem +from hashlib._hasher import _HashableWithHasher, _Hasher from os import PathLike alias StaticString = StringSlice[StaticConstantOrigin] @@ -659,6 +660,17 @@ struct StringSlice[mut: Bool, //, origin: Origin[mut]]( """ return hash(self._slice._data, self._slice._len) + fn __hash__[H: _Hasher](self, mut hasher: H): + """Updates hasher with the underlying bytes. + + Parameters: + H: The hasher type. + + Args: + hasher: The hasher instance. + """ + hasher._update_with_bytes(self.unsafe_ptr(), len(self)) + fn __fspath__(self) -> String: """Return the file system path representation of this string. diff --git a/stdlib/src/os/env.mojo b/stdlib/src/os/env.mojo index 0ccec33950..06c017fd2a 100644 --- a/stdlib/src/os/env.mojo +++ b/stdlib/src/os/env.mojo @@ -22,9 +22,9 @@ from os import setenv from sys import external_call, os_is_linux, os_is_macos, os_is_windows from sys.ffi import c_int -from memory import UnsafePointer +from collections.string import StringSlice -from utils import StringRef +from memory import UnsafePointer fn setenv(name: String, value: String, overwrite: Bool = True) -> Bool: @@ -96,4 +96,4 @@ fn getenv(name: String, default: String = "") -> String: ) if not ptr: return default - return String(StringRef(ptr=ptr)) + return String(StringSlice[ptr.origin](unsafe_from_utf8_ptr=ptr)) diff --git a/stdlib/src/os/os.mojo b/stdlib/src/os/os.mojo index 30c1880ab4..791b186acd 100644 --- a/stdlib/src/os/os.mojo +++ b/stdlib/src/os/os.mojo @@ -20,12 +20,12 @@ from os import listdir """ from collections import InlineArray, List +from collections.string import StringSlice from sys import external_call, is_gpu, os_is_linux, os_is_windows from sys.ffi import OpaquePointer, c_char from memory import UnsafePointer -from utils import StringRef from .path import isdir, split from .pathlike import PathLike @@ -149,8 +149,9 @@ struct _DirHandle: break var name = ep.take_pointee().name var name_ptr = name.unsafe_ptr() - var name_str = StringRef( - name_ptr, _strnlen(name_ptr, _dirent_linux.MAX_NAME_SIZE) + var name_str = StringSlice[__origin_of(name)]( + ptr=name_ptr.bitcast[UInt8](), + length=_strnlen(name_ptr, _dirent_linux.MAX_NAME_SIZE), ) if name_str == "." or name_str == "..": continue @@ -175,8 +176,9 @@ struct _DirHandle: break var name = ep.take_pointee().name var name_ptr = name.unsafe_ptr() - var name_str = StringRef( - name_ptr, _strnlen(name_ptr, _dirent_macos.MAX_NAME_SIZE) + var name_str = StringSlice[__origin_of(name)]( + ptr=name_ptr.bitcast[UInt8](), + length=_strnlen(name_ptr, _dirent_macos.MAX_NAME_SIZE), ) if name_str == "." or name_str == "..": continue diff --git a/stdlib/src/pathlib/path.mojo b/stdlib/src/pathlib/path.mojo index 353c0a6ece..89dec5a50d 100644 --- a/stdlib/src/pathlib/path.mojo +++ b/stdlib/src/pathlib/path.mojo @@ -24,8 +24,6 @@ from sys.ffi import c_char from builtin._location import __call_location, _SourceLocation from memory import UnsafePointer, stack_allocation -from utils import StringRef - alias DIR_SEPARATOR = "\\" if os_is_windows() else "/" @@ -46,7 +44,7 @@ fn cwd() raises -> Path: if res == UnsafePointer[c_char](): raise Error("unable to query the current directory") - return String(StringRef(ptr=buf)) + return String(StringSlice[buf.origin](unsafe_from_utf8_cstr_ptr=buf)) @always_inline diff --git a/stdlib/src/pwd/_linux.mojo b/stdlib/src/pwd/_linux.mojo index 0bc59866a6..9fbb80fe54 100644 --- a/stdlib/src/pwd/_linux.mojo +++ b/stdlib/src/pwd/_linux.mojo @@ -11,7 +11,7 @@ # limitations under the License. # ===----------------------------------------------------------------------=== # from memory import UnsafePointer -from utils import StringRef +from collections.string import StringSlice from sys.ffi import c_char, external_call from .pwd import Passwd @@ -35,13 +35,33 @@ struct _C_Passwd: fn _build_pw_struct(passwd_ptr: UnsafePointer[_C_Passwd]) raises -> Passwd: var c_pwuid = passwd_ptr[] return Passwd( - pw_name=String(StringRef(c_pwuid.pw_name)), - pw_passwd=String(StringRef(c_pwuid.pw_passwd)), + pw_name=String( + StringSlice[__origin_of(c_pwuid)]( + unsafe_from_utf8_cstr_ptr=c_pwuid.pw_name + ) + ), + pw_passwd=String( + StringSlice[__origin_of(c_pwuid)]( + unsafe_from_utf8_cstr_ptr=c_pwuid.pw_passwd + ) + ), pw_uid=Int(c_pwuid.pw_uid), pw_gid=Int(c_pwuid.pw_gid), - pw_gecos=String(StringRef(c_pwuid.pw_gecos)), - pw_dir=String(StringRef(c_pwuid.pw_dir)), - pw_shell=String(StringRef(c_pwuid.pw_shell)), + pw_gecos=String( + StringSlice[__origin_of(c_pwuid)]( + unsafe_from_utf8_cstr_ptr=c_pwuid.pw_gecos + ) + ), + pw_dir=String( + StringSlice[__origin_of(c_pwuid)]( + unsafe_from_utf8_cstr_ptr=c_pwuid.pw_dir + ) + ), + pw_shell=String( + StringSlice[__origin_of(c_pwuid)]( + unsafe_from_utf8_cstr_ptr=c_pwuid.pw_shell + ) + ), ) diff --git a/stdlib/src/pwd/_macos.mojo b/stdlib/src/pwd/_macos.mojo index d35f056153..fe6ea33593 100644 --- a/stdlib/src/pwd/_macos.mojo +++ b/stdlib/src/pwd/_macos.mojo @@ -10,10 +10,11 @@ # See the License for the specific language governing permissions and # limitations under the License. # ===----------------------------------------------------------------------=== # -from utils import StringRef from memory import UnsafePointer from sys.ffi import c_char, external_call +from collections.string import StringSlice + from .pwd import Passwd alias uid_t = Int32 @@ -39,13 +40,33 @@ struct _C_Passwd: fn _build_pw_struct(passwd_ptr: UnsafePointer[_C_Passwd]) raises -> Passwd: var c_pwuid = passwd_ptr[] var passwd = Passwd( - pw_name=String(StringRef(c_pwuid.pw_name)), - pw_passwd=String(StringRef(c_pwuid.pw_passwd)), + pw_name=String( + StringSlice[__origin_of(c_pwuid)]( + unsafe_from_utf8_cstr_ptr=c_pwuid.pw_name + ) + ), + pw_passwd=String( + StringSlice[__origin_of(c_pwuid)]( + unsafe_from_utf8_cstr_ptr=c_pwuid.pw_passwd + ) + ), pw_uid=Int(c_pwuid.pw_uid), pw_gid=Int(c_pwuid.pw_gid), - pw_gecos=String(StringRef(c_pwuid.pw_gecos)), - pw_dir=String(StringRef(c_pwuid.pw_dir)), - pw_shell=String(StringRef(c_pwuid.pw_shell)), + pw_gecos=String( + StringSlice[__origin_of(c_pwuid)]( + unsafe_from_utf8_cstr_ptr=c_pwuid.pw_gecos + ) + ), + pw_dir=String( + StringSlice[__origin_of(c_pwuid)]( + unsafe_from_utf8_cstr_ptr=c_pwuid.pw_dir + ) + ), + pw_shell=String( + StringSlice[__origin_of(c_pwuid)]( + unsafe_from_utf8_cstr_ptr=c_pwuid.pw_shell + ) + ), ) return passwd diff --git a/stdlib/src/python/_cpython.mojo b/stdlib/src/python/_cpython.mojo index 264a7f1536..715f156c9a 100644 --- a/stdlib/src/python/_cpython.mojo +++ b/stdlib/src/python/_cpython.mojo @@ -38,7 +38,7 @@ from memory import UnsafePointer from python._bindings import PyMojoObject, Pythonable, Typed_initproc from python.python import _get_global_python_itf -from utils import StringRef, StringSlice +from collections.string import StringSlice # ===-----------------------------------------------------------------------===# # Raw Bindings @@ -258,7 +258,7 @@ struct PythonVersion: """The patch version number.""" @implicit - fn __init__(out self, version: StringRef): + fn __init__(out self, version: StringSlice): """Initialize a PythonVersion object from a version string. Args: @@ -287,8 +287,12 @@ struct PythonVersion: self = PythonVersion(components[0], components[1], components[2]) -fn _py_get_version(lib: DLHandle) -> StringRef: - return StringRef(ptr=lib.call["Py_GetVersion", UnsafePointer[c_char]]()) +fn _py_get_version(lib: DLHandle) -> StringSlice[StaticConstantOrigin]: + return StringSlice[StaticConstantOrigin]( + unsafe_from_utf8_cstr_ptr=lib.call[ + "Py_GetVersion", UnsafePointer[c_char] + ]() + ) fn _py_finalize(lib: DLHandle): @@ -741,7 +745,7 @@ struct CPython: """The version of the Python runtime.""" var total_ref_count: UnsafePointer[Int] """The total reference count of all Python objects.""" - var init_error: StringRef + var init_error: StringSlice[StaticConstantOrigin] """An error message if initialization failed.""" # ===-------------------------------------------------------------------===# @@ -771,9 +775,11 @@ struct CPython: # TODO(MOCO-772) Allow raises to propagate through function pointers # and make this initialization a raising function. - self.init_error = external_call[ - "KGEN_CompilerRT_Python_SetPythonPath", UnsafePointer[c_char] - ]() + self.init_error = StringSlice[StaticConstantOrigin]( + unsafe_from_utf8_cstr_ptr=external_call[ + "KGEN_CompilerRT_Python_SetPythonPath", UnsafePointer[c_char] + ]() + ) var python_lib = getenv("MOJO_PYTHON_LIBRARY") @@ -1062,13 +1068,15 @@ struct CPython: fn PyImport_ImportModule( mut self, - name: StringRef, + name: StringSlice, ) -> PyObjectPtr: """[Reference]( https://docs.python.org/3/c-api/import.html#c.PyImport_ImportModule). """ - var r = self.lib.call["PyImport_ImportModule", PyObjectPtr](name.data) + var r = self.lib.call["PyImport_ImportModule", PyObjectPtr]( + name.unsafe_ptr() + ) self.log( r._get_ptr_as_int(), @@ -1081,7 +1089,7 @@ struct CPython: self._inc_total_rc() return r - fn PyImport_AddModule(mut self, name: StringRef) -> PyObjectPtr: + fn PyImport_AddModule(mut self, name: StringSlice) -> PyObjectPtr: """[Reference]( https://docs.python.org/3/c-api/import.html#c.PyImport_AddModule). """ @@ -1188,7 +1196,7 @@ struct CPython: # Python Evaluation # ===-------------------------------------------------------------------===# - fn PyRun_SimpleString(mut self, strref: StringRef) -> Bool: + fn PyRun_SimpleString(mut self, strref: StringSlice) -> Bool: """Executes the given Python code. Args: @@ -1208,7 +1216,7 @@ struct CPython: fn PyRun_String( mut self, - strref: StringRef, + strref: StringSlice, globals: PyObjectPtr, locals: PyObjectPtr, run_mode: Int, @@ -1256,8 +1264,8 @@ struct CPython: fn Py_CompileString( mut self, - strref: StringRef, - filename: StringRef, + strref: StringSlice, + filename: StringSlice, compile_mode: Int, ) -> PyObjectPtr: """[Reference]( @@ -1353,24 +1361,24 @@ struct CPython: fn PyObject_HasAttrString( mut self, obj: PyObjectPtr, - name: StringRef, + name: StringSlice, ) -> Int: var r = self.lib.get_function[ fn (PyObjectPtr, UnsafePointer[UInt8]) -> Int - ]("PyObject_HasAttrString")(obj, name.data) + ]("PyObject_HasAttrString")(obj, name.unsafe_ptr()) return r fn PyObject_GetAttrString( mut self, obj: PyObjectPtr, - name: StringRef, + name: StringSlice, ) -> PyObjectPtr: """[Reference]( https://docs.python.org/3/c-api/object.html#c.PyObject_GetAttrString). """ var r = self.lib.call["PyObject_GetAttrString", PyObjectPtr]( - obj, name.data + obj, name.unsafe_ptr() ) self.log( @@ -1387,14 +1395,14 @@ struct CPython: return r fn PyObject_SetAttrString( - mut self, obj: PyObjectPtr, name: StringRef, new_value: PyObjectPtr + mut self, obj: PyObjectPtr, name: StringSlice, new_value: PyObjectPtr ) -> c_int: """[Reference]( https://docs.python.org/3/c-api/object.html#c.PyObject_SetAttrString). """ var r = self.lib.call["PyObject_SetAttrString", c_int]( - obj, name.data, new_value + obj, name.unsafe_ptr(), new_value ) self.log( @@ -1711,28 +1719,6 @@ struct CPython: # Unicode Objects # ===-------------------------------------------------------------------===# - fn PyUnicode_DecodeUTF8(mut self, strref: StringRef) -> PyObjectPtr: - """[Reference]( - https://docs.python.org/3/c-api/unicode.html#c.PyUnicode_DecodeUTF8). - """ - - var r = self.lib.call["PyUnicode_DecodeUTF8", PyObjectPtr]( - strref.unsafe_ptr().bitcast[Int8](), - strref.length, - "strict".unsafe_cstr_ptr(), - ) - - self.log( - r._get_ptr_as_int(), - " NEWREF PyUnicode_DecodeUTF8, refcnt:", - self._Py_REFCNT(r), - ", str:", - strref, - ) - - self._inc_total_rc() - return r - fn PyUnicode_DecodeUTF8(mut self, strslice: StringSlice) -> PyObjectPtr: """[Reference]( https://docs.python.org/3/c-api/unicode.html#c.PyUnicode_DecodeUTF8). @@ -1781,16 +1767,20 @@ struct CPython: return py_slice - fn PyUnicode_AsUTF8AndSize(mut self, py_object: PyObjectPtr) -> StringRef: + fn PyUnicode_AsUTF8AndSize( + mut self, py_object: PyObjectPtr + ) -> StringSlice[__origin_of(py_object.unsized_obj_ptr.origin)]: """[Reference]( https://docs.python.org/3/c-api/unicode.html#c.PyUnicode_AsUTF8AndSize). """ - var s = StringRef() - s.data = self.lib.call[ + var length = Int(0) + var ptr = self.lib.call[ "PyUnicode_AsUTF8AndSize", UnsafePointer[c_char] - ](py_object, UnsafePointer.address_of(s.length)).bitcast[UInt8]() - return s + ](py_object, UnsafePointer.address_of(length)).bitcast[UInt8]() + return StringSlice[__origin_of(py_object.unsized_obj_ptr.origin)]( + ptr=ptr, length=length + ) # ===-------------------------------------------------------------------===# # Python Error operations diff --git a/stdlib/src/python/python.mojo b/stdlib/src/python/python.mojo index 5c7ad725bf..889dbef436 100644 --- a/stdlib/src/python/python.mojo +++ b/stdlib/src/python/python.mojo @@ -27,8 +27,6 @@ from sys.ffi import _Global from memory import UnsafePointer -from utils import StringRef - from ._cpython import ( CPython, Py_eval_input, @@ -100,7 +98,7 @@ struct Python: """ self.impl = existing.impl - fn eval(mut self, code: StringRef) -> Bool: + fn eval(mut self, code: StringSlice) -> Bool: """Executes the given Python code. Args: @@ -115,7 +113,9 @@ struct Python: @staticmethod fn evaluate( - expr: StringRef, file: Bool = False, name: StringRef = "__main__" + expr: StringSlice, + file: Bool = False, + name: StringSlice[StaticConstantOrigin] = "__main__", ) raises -> PythonObject: """Executes the given Python code. @@ -204,7 +204,7 @@ struct Python: # TODO(MSTDL-880): Change this to return `TypedPythonObject["Module"]` @staticmethod - fn import_module(module: StringRef) raises -> PythonObject: + fn import_module(module: StringSlice) raises -> PythonObject: """Imports a Python module. This provides you with a module object you can use just like you would @@ -368,7 +368,9 @@ struct Python: return PythonObject([]) @no_inline - fn __str__(mut self, str_obj: PythonObject) -> StringRef: + fn as_string_slice( + mut self, str_obj: PythonObject + ) -> StringSlice[__origin_of(str_obj.py_object.unsized_obj_ptr.origin)]: """Return a string representing the given Python object. Args: diff --git a/stdlib/src/python/python_object.mojo b/stdlib/src/python/python_object.mojo index e3339c193f..468ea13ebd 100644 --- a/stdlib/src/python/python_object.mojo +++ b/stdlib/src/python/python_object.mojo @@ -27,7 +27,6 @@ from sys.intrinsics import _type_is_eq from memory import UnsafePointer -from utils import StringRef from ._cpython import CPython, PyObjectPtr from .python import Python, _get_global_python_itf @@ -455,12 +454,6 @@ struct PythonObject( obj = PythonObject(value.get[i, Float64]()) elif _type_is_eq[T, Bool](): obj = PythonObject(value.get[i, Bool]()) - elif _type_is_eq[T, StringRef](): - obj = PythonObject( - StringSlice[MutableAnyOrigin]( - unsafe_from_utf8_strref=value.get[i, StringRef]() - ) - ) elif _type_is_eq[T, StringLiteral](): obj = PythonObject(value.get[i, StringLiteral]()) else: @@ -503,12 +496,6 @@ struct PythonObject( obj = PythonObject(rebind[Float64](value[i])) elif _type_is_eq[T, Bool](): obj = PythonObject(rebind[Bool](value[i])) - elif _type_is_eq[T, StringRef](): - obj = PythonObject( - StringSlice[MutableAnyOrigin]( - unsafe_from_utf8_strref=rebind[StringRef](value[i]) - ) - ) elif _type_is_eq[T, StringLiteral](): obj = PythonObject(rebind[StringLiteral](value[i])) else: @@ -755,7 +742,7 @@ struct PythonObject( cpython.Py_DecRef(value.py_object) fn _call_zero_arg_method( - self, method_name: StringRef + self, method_name: StringSlice ) raises -> PythonObject: var cpython = _get_global_python_itf().cpython() var tuple_obj = cpython.PyTuple_New(0) @@ -770,7 +757,7 @@ struct PythonObject( return PythonObject(result) fn _call_single_arg_method( - self, method_name: StringRef, rhs: PythonObject + self, method_name: StringSlice, rhs: PythonObject ) raises -> PythonObject: var cpython = _get_global_python_itf().cpython() var tuple_obj = cpython.PyTuple_New(1) @@ -789,7 +776,7 @@ struct PythonObject( return PythonObject(result_obj) fn _call_single_arg_inplace_method( - mut self, method_name: StringRef, rhs: PythonObject + mut self, method_name: StringSlice, rhs: PythonObject ) raises: var cpython = _get_global_python_itf().cpython() var tuple_obj = cpython.PyTuple_New(1) diff --git a/stdlib/src/sys/arg.mojo b/stdlib/src/sys/arg.mojo index b9140ffb3b..64257cce6c 100644 --- a/stdlib/src/sys/arg.mojo +++ b/stdlib/src/sys/arg.mojo @@ -36,8 +36,6 @@ from memory import UnsafePointer from collections.string import StringSlice -from utils import StringRef - # TODO: When we have global variables, this should be a global list. fn argv() -> VariadicList[StringSlice[StaticConstantOrigin]]: diff --git a/stdlib/src/sys/ffi.mojo b/stdlib/src/sys/ffi.mojo index bd515a899e..8179ce0dd8 100644 --- a/stdlib/src/sys/ffi.mojo +++ b/stdlib/src/sys/ffi.mojo @@ -17,7 +17,7 @@ from sys._libc import dlclose, dlerror, dlopen, dlsym from memory import UnsafePointer -from utils import StringRef +from collections.string import StringSlice from .info import is_64bit, os_is_linux, os_is_macos, os_is_windows from .intrinsics import _mlirtype_is_eq @@ -174,7 +174,14 @@ struct DLHandle(CollectionElement, CollectionElementNew, Boolable): var handle = dlopen(path.unsafe_cstr_ptr(), flags) if handle == OpaquePointer(): var error_message = dlerror() - abort("dlopen failed: ", String(StringRef(error_message))) + abort( + "dlopen failed: ", + String( + StringSlice[error_message.origin]( + unsafe_from_utf8_cstr_ptr=error_message + ) + ), + ) self.handle = handle else: self.handle = OpaquePointer() @@ -355,7 +362,12 @@ struct DLHandle(CollectionElement, CollectionElementNew, Boolable): var err = dlerror() if err: - abort("dlsym failed: ", String(StringRef(err))) + abort( + "dlsym failed: ", + String( + StringSlice[err.origin](unsafe_from_utf8_cstr_ptr=err) + ), + ) return res @@ -418,7 +430,7 @@ fn _get_dylib_function[ var new_func = dylib._get_function[func_name, result_type]() external_call["KGEN_CompilerRT_InsertGlobal", NoneType]( - StringRef(func_cache_name), + StringSlice(func_cache_name), UnsafePointer.address_of(new_func).bitcast[OpaquePointer]()[], ) @@ -475,7 +487,7 @@ fn _get_global[ destroy_fn: fn (OpaquePointer) -> None, ](payload: OpaquePointer = OpaquePointer()) -> OpaquePointer: return external_call["KGEN_CompilerRT_GetGlobalOrCreate", OpaquePointer]( - StringRef(name), + StringSlice(name), payload, init_fn, destroy_fn, diff --git a/stdlib/test/builtin/test_print.mojo b/stdlib/test/builtin/test_print.mojo index b2ca0dd2e0..8dc2aad510 100644 --- a/stdlib/test/builtin/test_print.mojo +++ b/stdlib/test/builtin/test_print.mojo @@ -16,10 +16,12 @@ import sys from tempfile import NamedTemporaryFile +from collections.string import StaticString + from builtin._location import __call_location, _SourceLocation from testing import assert_equal -from utils import IndexList, StringRef +from utils import IndexList @always_inline @@ -95,7 +97,7 @@ def test_print(): print("World", flush=True, file=checker.stream()) checker.check_line("World") - var hello: StringRef = "Hello," + var hello: StaticString = "Hello," var world: String = "world!" var f: Bool = False print(">", hello, world, 42, True, f, file=checker.stream()) diff --git a/stdlib/test/collections/string/test_string.mojo b/stdlib/test/collections/string/test_string.mojo index 25263afad3..0d39db2fa5 100644 --- a/stdlib/test/collections/string/test_string.mojo +++ b/stdlib/test/collections/string/test_string.mojo @@ -27,7 +27,6 @@ from collections.string.string import ( ) from memory import UnsafePointer from python import Python -from utils import StringRef @value @@ -39,7 +38,7 @@ struct AString(Stringable): def test_stringable(): assert_equal("hello", String("hello")) assert_equal("0", String(0)) - assert_equal("AAA", String(StringRef("AAA"))) + assert_equal("AAA", String(StringSlice("AAA"))) assert_equal("a string", String(AString())) diff --git a/stdlib/test/hashlib/test_hasher.mojo b/stdlib/test/hashlib/test_hasher.mojo index b349c600ef..3f16ed259d 100644 --- a/stdlib/test/hashlib/test_hasher.mojo +++ b/stdlib/test/hashlib/test_hasher.mojo @@ -21,7 +21,7 @@ from memory import UnsafePointer from python import Python, PythonObject from testing import assert_equal, assert_true -from utils import StringRef +from collections.string import StringSlice struct DummyHasher(_Hasher): @@ -157,7 +157,7 @@ def test_hash_hashable_with_hasher_types(): assert_equal(_hash_with_hasher(DType.uint64), 6529703120343940753) assert_equal(_hash_with_hasher(""), 11583516797109448887) assert_equal(_hash_with_hasher(String("")), 11583516797109448887) - assert_equal(_hash_with_hasher(StringRef("")), 11583516797109448887) + assert_equal(_hash_with_hasher(StringSlice("")), 11583516797109448887) assert_equal(_hash_with_hasher(Int(-123)), 4720193641311814362) assert_equal(_hash_with_hasher(UInt(123)), 4498397628805512285) assert_equal( diff --git a/stdlib/test/python/test_ownership.mojo b/stdlib/test/python/test_ownership.mojo index 1fa9bc026a..d950b3f950 100644 --- a/stdlib/test/python/test_ownership.mojo +++ b/stdlib/test/python/test_ownership.mojo @@ -14,13 +14,13 @@ # RUN: %mojo %s from python import Python, PythonObject -from testing import assert_equal +from testing import assert_equal, assert_true fn test_import(mut python: Python) raises: var my_module: PythonObject = Python.import_module("my_module") var py_string = my_module.my_function("Hello") - var str = String(python.__str__(py_string)) + var str = String(python.as_string_slice(py_string)) assert_equal(str, "Formatting the string from Lit with Python: Hello") @@ -41,23 +41,23 @@ fn test_tuple(mut python: Python) raises: fn test_call_ownership(mut python: Python) raises: var obj: PythonObject = [1, "5"] var py_string = String(obj) - var string = python.__str__(py_string) - assert_equal(string, "[1, '5']") + var string = python.as_string_slice(py_string) + assert_true(string == "[1, '5']") fn test_getitem_ownership(mut python: Python) raises: var obj: PythonObject = [1, "5"] var py_string = String(obj[1]) - var string = python.__str__(py_string) - assert_equal(string, "5") + var string = python.as_string_slice(py_string) + assert_true(string == "5") fn test_getattr_ownership(mut python: Python) raises: var my_module: PythonObject = Python.import_module("my_module") var obj = my_module.Foo(4) var py_string = String(obj.bar) - var string = python.__str__(py_string) - assert_equal(string, "4") + var string = python.as_string_slice(py_string) + assert_true(string == "4") def main(): diff --git a/stdlib/test/python/test_python_object.mojo b/stdlib/test/python/test_python_object.mojo index 659b97c1b5..79f87ee65a 100644 --- a/stdlib/test/python/test_python_object.mojo +++ b/stdlib/test/python/test_python_object.mojo @@ -18,8 +18,6 @@ from collections import Dict from python import Python, PythonObject from testing import assert_equal, assert_false, assert_raises, assert_true -from utils import StringRef - def test_dunder_methods(mut python: Python): var a = PythonObject(34) @@ -268,8 +266,8 @@ fn test_string_conversions() raises -> None: var py_str = PythonObject(mojo_str) var py_capitalized = py_str.capitalize() var py = Python() - var mojo_capitalized = py.__str__(py_capitalized) - assert_equal(mojo_capitalized, "Mojo") + var mojo_capitalized = py.as_string_slice(py_capitalized) + assert_true(mojo_capitalized == "Mojo") except e: print("Error occurred") @@ -281,8 +279,8 @@ fn test_string_conversions() raises -> None: var py_str = PythonObject(mojo_str) var py_capitalized = py_str.capitalize() var py = Python() - var mojo_capitalized = py.__str__(py_capitalized) - assert_equal(mojo_capitalized, "Mojo") + var mojo_capitalized = py.as_string_slice(py_capitalized) + assert_true(mojo_capitalized == "Mojo") except e: print("Error occurred") From 773bd572f4e2c0d3033c3fda12d035928137132d Mon Sep 17 00:00:00 2001 From: Joe Loser Date: Thu, 30 Jan 2025 17:48:45 -0500 Subject: [PATCH 323/509] [docs] Update docs for main branch vs. stable Reapply of https://github.com/modular/mojo/pull/3978 internally since it only got applied/merged externally. MODULAR_ORIG_COMMIT_REV_ID: 46c2ff83c7f61791c15c4058f69888568581365b --- CONTRIBUTING.md | 22 +++++++++++----------- README.md | 19 +++++++++---------- docs/changelog-released.md | 2 +- stdlib/docs/development.md | 4 ++-- stdlib/docs/internal/README.md | 2 +- 5 files changed, 24 insertions(+), 25 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 72f230da1b..4ad284fa1c 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -200,7 +200,7 @@ Library, Mojo examples, or Mojo documentation. This page gives an overview of the process. For a more detailed walkthrough, see [How to contribute to the Mojo standard library: a step-by-step guide](https://www.modular.com/blog/how-to-contribute-to-mojo-standard-library-a-step-by-step-guide). -**Note:** Pull requests should be submitted against the `nightly` branch, +**Note:** Pull requests should be submitted against the `main` branch, which represents the most recent nightly build. ### Pull request process @@ -243,10 +243,10 @@ git fetch upstream #### Branching off nightly -Make sure to branch off `nightly` to work on your PR: +Make sure to branch off `main` to work on your PR: ```bash -git checkout upstream/nightly +git checkout upstream/main git checkout -b my-fix-pr ``` @@ -255,20 +255,20 @@ before raising a PR: ```bash git fetch upstream -git rebase upstream/nightly +git rebase upstream/main ``` #### Getting the nightly Mojo compiler -Now that you're on the nightly branch, you need to install the latest nightly +Now that you're on the main branch, you need to install the latest nightly build. -If you're using [`magic`](https://docs.modular.com/magic), create a new -project environment with the `max-nightly` channel like this: +If you're using [`magic`](https://docs.modular.com/magic) (version 0.6.4 or +higher), create a new project environment like this and it will install the +latest nightly version of `max` by default: ```bash -magic init mojo-nightly --format mojoproject \ - -c conda-forge -c https://conda.modular.com/max-nightly +magic init mojo-nightly --format mojoproject ``` If you're [using conda](https://docs.modular.com/magic/conda), add the @@ -299,7 +299,7 @@ when using the stable release! If your change is one of the improvements described above or it has been discussed and agreed upon by the project maintainers, please create a pull -request into the `nightly` branch. +request into the `main` branch. First push your changes: @@ -314,7 +314,7 @@ remote: Create a pull request for 'my-fix-pr' on GitHub by visiting: remote: https://github.com/jackos/mojo/pull/new/my-fix-pr ``` -Make sure you point it to the `nightly` branch: +Make sure you point it to the `main` branch: ![Base Branch](stdlib/docs/images/base-branch.png) diff --git a/README.md b/README.md index 5774ca462a..3dac78f624 100644 --- a/README.md +++ b/README.md @@ -25,11 +25,11 @@ This repo includes source code for: This repo has two primary branches: -- The [`main`](https://github.com/modularml/mojo/tree/main) branch, which is in -sync with the last stable released version of Mojo. Use the examples here if you’re -using a [release build of Mojo](#latest-released). +- The [`stable`](https://github.com/modularml/mojo/tree/stable) branch, which +is in sync with the last stable released version of Mojo. Use the examples +here if you’re using a [release build of Mojo](#latest-released). -- The [`nightly`](https://github.com/modularml/mojo/tree/nightly) branch, which +- The [`main`](https://github.com/modularml/mojo/tree/main) branch, which is in sync with the Mojo nightly build and subject to breakage. Use this branch for [contributions](./CONTRIBUTING.md), or if you're using the latest [nightly build of Mojo](#latest-nightly). @@ -74,16 +74,15 @@ platforms = ["osx-arm64", "linux-aarch64", "linux-64"] max = "*" ``` -And when you clone this repo, switch to the `nightly` branch because the `main` -branch might not be compatible with nightly builds: +When you clone this repo, you'll be on the `main` branch by default, +which includes code matching the latest nightly build: ```bash git clone https://github.com/modularml/mojo.git ``` -```bash -git checkout nightly -``` +If you want to instead see the source from the most recent stable +release, then you can switch to the `stable` branch. ## Contributing @@ -92,7 +91,7 @@ issue here](https://github.com/modularml/mojo/issues). See [here](./CONTRIBUTING.md) for guidelines on filing good bugs. We welcome contributions to this repo on the -[`nightly`](https://github.com/modularml/mojo/tree/nightly) +[`main`](https://github.com/modularml/mojo/tree/main) branch. If you’d like to contribute to Mojo, please first read our [Contributor Guide](https://github.com/modularml/mojo/blob/main/CONTRIBUTING.md). diff --git a/docs/changelog-released.md b/docs/changelog-released.md index 18a2551f4f..95ee3fbab8 100644 --- a/docs/changelog-released.md +++ b/docs/changelog-released.md @@ -3189,7 +3189,7 @@ This release doesn't include any changes to Mojo. ### 🔥 Legendary - The Mojo standard library is now open source! Check out the - [README](https://github.com/modular/mojo/blob/nightly/stdlib/README.md) + [README](https://github.com/modular/mojo/blob/main/stdlib/README.md) for everything you need to get started. - Structs and other nominal types are now allowed to implicitly conform to diff --git a/stdlib/docs/development.md b/stdlib/docs/development.md index ef21e6fb81..000676598e 100644 --- a/stdlib/docs/development.md +++ b/stdlib/docs/development.md @@ -9,7 +9,7 @@ If this is your first time contributing, first read everything in you need to do the following: 1. [Fork and clone the repo](../../CONTRIBUTING.md#fork-and-clone-the-repo) -2. [Branch off nightly](../../CONTRIBUTING.md#branching-off-nightly) +2. [Branch off main](../../CONTRIBUTING.md#branching-off-nightly) 3. [Install the nightly Mojo compiler](../../CONTRIBUTING.md#getting-the-nightly-mojo-compiler) And if you're using VS Code: @@ -104,7 +104,7 @@ You can do the same for a directory with ./stdlib/scripts/run-tests.sh ./stdlib/test/utils ``` -All the tests should pass on the `nightly` branch with the nightly Mojo +All the tests should pass on the `main` branch with the nightly Mojo compiler. If you've pulled the latest changes and they're still failing please [open a GitHub issue](https://github.com/modularml/mojo/issues/new?assignees=&labels=bug%2Cmojo&projects=&template=mojo_bug_report.yaml&title=%5BBUG%5D). diff --git a/stdlib/docs/internal/README.md b/stdlib/docs/internal/README.md index b80fd03dca..9699b52b72 100644 --- a/stdlib/docs/internal/README.md +++ b/stdlib/docs/internal/README.md @@ -11,6 +11,6 @@ WE FIND IT CONVENIENT TO DO SO WITHOUT WARNING OR NOTICE**. This directory contains internal documentation for the implementation details of the Mojo compiler, runtime, and stdlib. You must always reference the -current version of this documentation on the branch nightly before using the +current version of this documentation on the branch main before using the operations or behavior documented within. Any new files should contain the above warning. From 9c6d9fac0eff88c9bdf9e8633d1638327ce9556f Mon Sep 17 00:00:00 2001 From: Manuel Saelices Date: Thu, 30 Jan 2025 18:18:10 -0800 Subject: [PATCH 324/509] [External] [stdlib] Add a new `validate` parameter to the `b64decode()` function (#54857) [External] [stdlib] Add a new `validate` parameter to the `b64decode()` function Matching the `validate` bool argument in Python's [base64.b64decode](https://docs.python.org/3/library/base64.html#base64.b64decode) but a using comp time parameter so it will not add CPU cycles if validation is not needed. Co-authored-by: Manuel Saelices Closes modularml/mojo#3929 MODULAR_ORIG_COMMIT_REV_ID: 10ee9bb8c9b339c8360afc75f2f28717188e954d --- docs/changelog.md | 2 ++ stdlib/src/base64/base64.mojo | 34 +++++++++++++++++++---------- stdlib/test/base64/test_base64.mojo | 12 +++++++++- 3 files changed, 35 insertions(+), 13 deletions(-) diff --git a/docs/changelog.md b/docs/changelog.md index d871838912..d7ef52f96f 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -100,6 +100,8 @@ what we publish. ### Standard library changes +- Add a new `validate` parameter to the `b64decode()` function. + - The free floating functions for constructing different types have been deprecated for actual constructors: diff --git a/stdlib/src/base64/base64.mojo b/stdlib/src/base64/base64.mojo index a902a710ab..d0b11c46bd 100644 --- a/stdlib/src/base64/base64.mojo +++ b/stdlib/src/base64/base64.mojo @@ -34,7 +34,7 @@ from ._b64encode import b64encode_with_buffers as _b64encode_with_buffers @always_inline -fn _ascii_to_value(char: StringSlice) -> Int: +fn _ascii_to_value[validate: Bool = False](char: StringSlice) raises -> Int: """Converts an ASCII character to its integer value for base64 decoding. Args: @@ -58,6 +58,12 @@ fn _ascii_to_value(char: StringSlice) -> Int: elif char == "/": return 63 else: + + @parameter + if validate: + raise Error( + 'ValueError: Unexpected character "{}" encountered'.format(char) + ) return -1 @@ -112,9 +118,12 @@ fn b64encode(input_bytes: Span[Byte, _]) -> String: @always_inline -fn b64decode(str: StringSlice) -> String: +fn b64decode[validate: Bool = False](str: StringSlice) raises -> String: """Performs base64 decoding on the input string. + Parameters: + validate: If true, the function will validate the input string. + Args: str: A base64 encoded string. @@ -122,21 +131,22 @@ fn b64decode(str: StringSlice) -> String: The decoded string. """ var n = str.byte_length() - debug_assert(n % 4 == 0, "Input length must be divisible by 4") + + @parameter + if validate: + if n % 4 != 0: + raise Error( + "ValueError: Input length {} must be divisible by 4".format(n) + ) var p = String._buffer_type(capacity=n + 1) # This algorithm is based on https://arxiv.org/abs/1704.00605 for i in range(0, n, 4): - var a = _ascii_to_value(str[i]) - var b = _ascii_to_value(str[i + 1]) - var c = _ascii_to_value(str[i + 2]) - var d = _ascii_to_value(str[i + 3]) - - debug_assert( - a >= 0 and b >= 0 and c >= 0 and d >= 0, - "Unexpected character encountered", - ) + var a = _ascii_to_value[validate](str[i]) + var b = _ascii_to_value[validate](str[i + 1]) + var c = _ascii_to_value[validate](str[i + 2]) + var d = _ascii_to_value[validate](str[i + 3]) p.append((a << 2) | (b >> 4)) if str[i + 2] == "=": diff --git a/stdlib/test/base64/test_base64.mojo b/stdlib/test/base64/test_base64.mojo index 3b630f73f8..1e6b1c4460 100644 --- a/stdlib/test/base64/test_base64.mojo +++ b/stdlib/test/base64/test_base64.mojo @@ -14,7 +14,7 @@ from base64 import b16decode, b16encode, b64decode, b64encode -from testing import assert_equal +from testing import assert_equal, assert_raises def test_b64encode(): @@ -60,6 +60,16 @@ def test_b64decode(): assert_equal(b64decode("QUJDREVGYWJjZGVm"), "ABCDEFabcdef") + with assert_raises( + contains="ValueError: Input length 21 must be divisible by 4" + ): + _ = b64decode[validate=True]("invalid base64 string") + + with assert_raises( + contains='ValueError: Unexpected character " " encountered' + ): + _ = b64decode[validate=True]("invalid base64 string!!!") + def test_b16encode(): assert_equal(b16encode("a"), "61") From d00e4edc7ba118552ad57a349b5521a5bb5d6362 Mon Sep 17 00:00:00 2001 From: abdul dakkak Date: Thu, 30 Jan 2025 21:05:47 -0800 Subject: [PATCH 325/509] [Stdlib] Add new sys.compile package with Optimization Level and DebugLevel It's sometimes useful to know one's Optimization and DebugLevel in Mojo. This PR's purpose though is to enable future cleanups. MODULAR_ORIG_COMMIT_REV_ID: bb67bf5930fdbacec97059db7c7daece6cefec70 --- stdlib/src/sys/compile.mojo | 127 ++++++++++++++++++++++++ stdlib/test/sys/test_compile.mojo | 22 ++++ stdlib/test/sys/test_compile_debug.mojo | 22 ++++ 3 files changed, 171 insertions(+) create mode 100644 stdlib/src/sys/compile.mojo create mode 100644 stdlib/test/sys/test_compile.mojo create mode 100644 stdlib/test/sys/test_compile_debug.mojo diff --git a/stdlib/src/sys/compile.mojo b/stdlib/src/sys/compile.mojo new file mode 100644 index 0000000000..a2a737b551 --- /dev/null +++ b/stdlib/src/sys/compile.mojo @@ -0,0 +1,127 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # +"""Implements functions that return compile-time information. +""" +from .param_env import env_get_string, env_get_int + +# ===----------------------------------------------------------------------=== # +# OptimizationLevel +# ===----------------------------------------------------------------------=== # + + +@value +struct _OptimizationLevel(Intable): + """Represents the optimization level used during compilation. + + The optimization level is determined by the __OPTIMIZATION_LEVEL environment + variable, with a default value of 4 if not specified. + + Attributes: + level: The integer value of the optimization level. + """ + + alias level = env_get_int["__OPTIMIZATION_LEVEL", 4]() + + fn __copyinit__(out self, existing: Self): + """Copy initialization. + + Args: + existing: The existing optimization level. + """ + return + + fn __moveinit__(out self, owned existing: Self): + """Move initialization. + + Args: + existing: The existing optimization level. + """ + return + + @no_inline + fn write_to[W: Writer](self, mut writer: W): + """Writes the optimization level to a writer.""" + writer.write(Self.level) + + @no_inline + fn __str__(self) -> String: + """Returns the string representation of the optimization level. + + Returns: + A string containing the optimization level value. + """ + return String.write(self) + + fn __int__(self) -> Int: + """Returns the integer value of the optimization level. + + Returns: + The optimization level as an integer. + """ + return Self.level + + +alias OptimizationLevel = _OptimizationLevel() +"""Represents the optimization level used during compilation.""" + +# ===----------------------------------------------------------------------=== # +# DebugLevel +# ===----------------------------------------------------------------------=== # + + +@value +struct _DebugLevel: + """Represents the debug level used during compilation. + + The debug level is determined by the __DEBUG_LEVEL environment variable, + with a default value of "none" if not specified. + + Attributes: + level: The string value of the debug level. + """ + + alias level = env_get_string["__DEBUG_LEVEL", "none"]() + + fn __copyinit__(out self, existing: Self): + """Copy initialization. + + Args: + existing: The existing optimization level. + """ + return + + fn __moveinit__(out self, owned existing: Self): + """Move initialization. + + Args: + existing: The existing optimization level. + """ + return + + @no_inline + fn write_to[W: Writer](self, mut writer: W): + """Writes the optimization level to a writer.""" + writer.write(Self.level) + + @no_inline + fn __str__(self) -> String: + """Returns the string representation of the debug level. + + Returns: + The debug level as a string. + """ + return Self.level + + +alias DebugLevel = _DebugLevel() +"""Represents the debug level used during compilation.""" diff --git a/stdlib/test/sys/test_compile.mojo b/stdlib/test/sys/test_compile.mojo new file mode 100644 index 0000000000..d18535ee72 --- /dev/null +++ b/stdlib/test/sys/test_compile.mojo @@ -0,0 +1,22 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # +# RUN: %bare-mojo %s + +from sys.compile import OptimizationLevel, DebugLevel + +from testing import assert_equal + + +def main(): + assert_equal(Int(OptimizationLevel), 3) + assert_equal(String(DebugLevel), "none") diff --git a/stdlib/test/sys/test_compile_debug.mojo b/stdlib/test/sys/test_compile_debug.mojo new file mode 100644 index 0000000000..d6e2271e20 --- /dev/null +++ b/stdlib/test/sys/test_compile_debug.mojo @@ -0,0 +1,22 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # +# RUN: %bare-mojo -O0 %s + +from sys.compile import OptimizationLevel, DebugLevel + +from testing import assert_equal + + +def main(): + assert_equal(Int(OptimizationLevel), 0) + assert_equal(String(DebugLevel), "none") From b367ba895e7846272f152ceb154717ac5d20a937 Mon Sep 17 00:00:00 2001 From: modularbot Date: Sat, 1 Feb 2025 02:14:38 +0000 Subject: [PATCH 326/509] Update lockfiles to point to latest nightly version: 25.1.0.dev2025013105 --- examples/life/magic.lock | 276 ++++++++++++++++---------------- examples/magic.lock | 276 ++++++++++++++++---------------- examples/notebooks/magic.lock | 292 +++++++++++++++++----------------- examples/operators/magic.lock | 276 ++++++++++++++++---------------- examples/testing/magic.lock | 276 ++++++++++++++++---------------- magic.lock | 276 ++++++++++++++++---------------- 6 files changed, 836 insertions(+), 836 deletions(-) diff --git a/examples/life/magic.lock b/examples/life/magic.lock index 2836acd5f1..eae1460d3d 100644 --- a/examples/life/magic.lock +++ b/examples/life/magic.lock @@ -39,7 +39,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py312h2ec8cdc_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.4-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2024.12.14-hbcca054_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2025.1.31-hbcca054_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.2-h3394656_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.12.14-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py312h06ac9bb_0.conda @@ -56,7 +56,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/linux-64/expat-2.6.4-h5888daf_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.7-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.8-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/fluidsynth-2.3.7-hd992666_0.conda @@ -83,7 +83,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/httptools-0.6.4-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.27.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.28.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda @@ -172,12 +172,12 @@ 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-25.1.0.dev2025013005-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025013005-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025013005-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025013005-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025013105-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025013105-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025013105-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025013105-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-25.1.0.dev2025013005-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025013105-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_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.15-py312h98912ed_1.conda @@ -231,7 +231,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py312h178313f_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.0-py312hbf22597_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.1-py312hbf22597_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/rav1e-0.6.6-he8a937b_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/re2-2024.07.02-h9925aae_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda @@ -257,7 +257,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.48.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.48.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda @@ -320,7 +320,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/brotli-python-1.1.0-py312h6f74592_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h68df207_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/c-ares-1.34.4-h86ecc28_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2024.12.14-hcefe29a_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2025.1.31-hcefe29a_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cairo-1.18.2-h83712da_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.12.14-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cffi-1.17.1-py312hac81daf_0.conda @@ -337,7 +337,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/linux-aarch64/expat-2.6.4-h5ad3122_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.7-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.8-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/fluidsynth-2.3.7-h4f58cef_0.conda @@ -364,7 +364,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/httptools-0.6.4-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.27.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.28.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda @@ -453,12 +453,12 @@ 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-25.1.0.dev2025013005-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025013005-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025013005-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025013005-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025013105-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025013105-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025013105-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025013105-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-25.1.0.dev2025013005-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025013105-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_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.15-py312hdd3e373_1.conda @@ -512,7 +512,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.12-5_cp312.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyyaml-6.0.2-py312hcc812fe_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyzmq-26.2.0-py312h2427ae1_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyzmq-26.2.1-py312h2427ae1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/rav1e-0.6.6-h1d8f897_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/re2-2024.07.02-haa97905_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8fc344f_1.conda @@ -538,7 +538,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py312h52516f5_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.48.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.48.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda @@ -598,7 +598,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py312hde4cb15_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.4-h5505292_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2024.12.14-hf0a4a13_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2025.1.31-hf0a4a13_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cairo-1.18.2-h6a3b0d2_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.12.14-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.1-py312h0fad829_0.conda @@ -613,7 +613,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda - 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.7-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.8-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/fluidsynth-2.3.7-h80fea77_0.conda @@ -640,7 +640,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/httptools-0.6.4-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.27.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.28.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda @@ -717,12 +717,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-25.1.0.dev2025013005-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025013005-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025013005-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025013005-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025013105-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025013105-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025013105-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025013105-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-25.1.0.dev2025013005-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025013105-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 @@ -775,7 +775,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-5_cp312.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py312h998013c_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.0-py312hf8a1cbd_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.1-py312hf4875e0_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/rav1e-0.6.6-h69fbcac_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/re2-2024.07.02-h6589ca4_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h92ec313_1.conda @@ -800,7 +800,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.48.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.48.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda @@ -1996,30 +1996,30 @@ packages: license_family: MIT size: 179496 timestamp: 1734208291879 -- conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2024.12.14-hbcca054_0.conda - sha256: 1afd7274cbc9a334d6d0bc62fa760acc7afdaceb0b91a8df370ec01fd75dc7dd - md5: 720523eb0d6a9b0f6120c16b2aa4e7de +- conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2025.1.31-hbcca054_0.conda + sha256: bf832198976d559ab44d6cdb315642655547e26d826e34da67cbee6624cda189 + md5: 19f3a56f68d2fd06c516076bff482c52 arch: x86_64 platform: linux license: ISC - size: 157088 - timestamp: 1734208393264 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2024.12.14-hcefe29a_0.conda - sha256: ad7b43211051332a5a4e788bb4619a2d0ecb5be73e0f76be17f733a87d7effd1 - md5: 83b4ad1e6dc14df5891f3fcfdeb44351 + size: 158144 + timestamp: 1738298224464 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2025.1.31-hcefe29a_0.conda + sha256: 66c6408ee461593cfdb2d78d82e6ed74d04a04ccb51df3ef8a5f35148c9c6eec + md5: 462cb166cd2e26a396f856510a3aff67 arch: aarch64 platform: linux license: ISC - size: 157096 - timestamp: 1734209301744 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2024.12.14-hf0a4a13_0.conda - sha256: 256be633fd0882ccc1a7a32bc278547e1703f85082c0789a87a603ee3ab8fb82 - md5: 7cb381a6783d91902638e4ed1ebd478e + size: 158290 + timestamp: 1738299057652 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2025.1.31-hf0a4a13_0.conda + sha256: 7e12816618173fe70f5c638b72adf4bfd4ddabf27794369bb17871c5bb75b9f9 + md5: 3569d6a9141adc64d2fe4797f3289e06 arch: arm64 platform: osx license: ISC - size: 157091 - timestamp: 1734208344343 + size: 158425 + timestamp: 1738298167688 - conda: https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.2-h3394656_1.conda sha256: de7d0d094e53decc005cb13e527be2635b8f604978da497d4c0d282c7dc08385 md5: b34c2833a1f56db610aeb27f206d800d @@ -2345,9 +2345,9 @@ packages: license_family: MIT size: 130354 timestamp: 1730967212801 -- conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.7-pyh29332c3_1.conda - sha256: ac0c357b216e0b37d1a31af200548783d9e5a0413caaee92c5184dbef63b578e - md5: b53637ce62c4bcf3123a2a40f6a3824b +- conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.8-pyh29332c3_0.conda + sha256: 5e1e3d5cf306d9b3b5fe0d45a9e8440e8770ba7e4a5fac1ac847ca693b0dc064 + md5: 753382711adab47269f0bfe994906bc4 depends: - python >=3.9 - starlette >=0.40.0,<0.46.0 @@ -2362,8 +2362,8 @@ packages: - python license: MIT license_family: MIT - size: 77890 - timestamp: 1737647037273 + size: 77940 + timestamp: 1738326226051 - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.7-pyhd8ed1ab_0.conda sha256: 300683731013b7221922339cd40430bb3c2ddeeb658fd7e37f5099ffe64e4db0 md5: d960e0ea9e1c561aa928f6c4439f04c7 @@ -2988,9 +2988,9 @@ packages: license_family: BSD size: 63082 timestamp: 1733663449209 -- conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.27.1-pyhd8ed1ab_0.conda - sha256: 4597d7aa720f4acdddacc27b3f9e8d4336cb79477c53aee2d7ab96d136169cdb - md5: 8c9a53ecd0c3c278efbdac567dd12ed0 +- conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.28.0-pyhd8ed1ab_0.conda + sha256: 3c48ffeb8a425eeba5dfa81a4da4b738a12d2104da0c3b443185029718dd6e48 + md5: 317f31a6fe151756ef10e7ed97a15f8a depends: - filelock - fsspec >=2023.5.0 @@ -3003,8 +3003,8 @@ packages: - typing_extensions >=3.7.4.3 license: Apache-2.0 license_family: APACHE - size: 278363 - timestamp: 1736350219225 + size: 284361 + timestamp: 1738349452337 - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda sha256: 77af6f5fe8b62ca07d09ac60127a30d9069fdc3c68d6b256754d0ffb1f7779f8 md5: 8e6923fc12f1fe8f8c4e5c9f343256ac @@ -6290,48 +6290,48 @@ packages: license_family: BSD size: 24048 timestamp: 1733219945697 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025013005-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025013105-release.conda noarch: python - sha256: 3948fa0d797c3adac4c09a2b806f4eeccd541d76e04538a66d8f12f3e95c32ee - md5: 1e5f3d8c627016a0a2b8982bf17e61af + sha256: 1b8fcd33ceff5e6e87603d1de72c12493fe20e4f5204bc3d061a7e2b8ab33e84 + md5: 74268fafa5367b803cb82c74751fb0f0 depends: - - max-core ==25.1.0.dev2025013005 release - - max-python >=25.1.0.dev2025013005,<26.0a0 - - mojo-jupyter ==25.1.0.dev2025013005 release - - mblack ==25.1.0.dev2025013005 release + - max-core ==25.1.0.dev2025013105 release + - max-python >=25.1.0.dev2025013105,<26.0a0 + - mojo-jupyter ==25.1.0.dev2025013105 release + - mblack ==25.1.0.dev2025013105 release license: LicenseRef-Modular-Proprietary - size: 9915 - timestamp: 1738214254861 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025013005-release.conda - sha256: 4a68142da5f25068e17fd2974a9b94cba4cc3fdbf0de872c2d9a2ce1dc22ea8f - md5: 9604e0c0d7c78ef69d218810c68f74d6 + size: 9918 + timestamp: 1738300734602 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025013105-release.conda + sha256: 1ac416f06cc0adad41d5ca07d55c0e146073c2971ba30696ce561fd7af5afb1a + md5: ddc94cd4ca461791a9e3ae7a571e78ed depends: - - mblack ==25.1.0.dev2025013005 release + - mblack ==25.1.0.dev2025013105 release license: LicenseRef-Modular-Proprietary - size: 243572302 - timestamp: 1738214269238 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025013005-release.conda - sha256: 8c826b3931ad42bbf9a4719f2ff3afcb4bae722dfe295aabb4f9c090de921c01 - md5: 6d328fe99bca688dad8cbde9e87c1409 + size: 243598857 + timestamp: 1738300650444 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025013105-release.conda + sha256: faee2aee06a50c1ca71fc7df91564dafe97986a71474fe0c2694b663bc7b0a1d + md5: 203e66b533a2e81c659276ce2a211b6b depends: - - mblack ==25.1.0.dev2025013005 release + - mblack ==25.1.0.dev2025013105 release license: LicenseRef-Modular-Proprietary - size: 246120276 - timestamp: 1738214254859 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025013005-release.conda - sha256: 2d2e017becec59c1d82022cbf78344f27d3ec9c2c443213ddc2f3cbb5097e4a6 - md5: 6a4347efe0e034458049baed54857b4f + size: 246147380 + timestamp: 1738300734602 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025013105-release.conda + sha256: 12c6501ffb4e951a4e583ef694529e5621ee4c9d06554b0db464de1a37552974 + md5: 5663c30c6ab3e0a29c0fdb08f5634a68 depends: - - mblack ==25.1.0.dev2025013005 release + - mblack ==25.1.0.dev2025013105 release license: LicenseRef-Modular-Proprietary - size: 205294583 - timestamp: 1738218076583 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025013005-3.12release.conda - sha256: 19277c4f68fdfdc727da1c002a257d81147487672aa1ae2619d773a645a779b6 - md5: 18357c34c7e416b960cdfe0a8b2dd7fc - depends: - - max-core ==25.1.0.dev2025013005 release - - python 3.12.* + size: 209002959 + timestamp: 1738349723783 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025013105-3.12release.conda + sha256: d08de32fd4aa12b4593146fc6f268a105b264e279c3a75009870e8d310778ea6 + md5: 27c0957cae6a8620faf67beb5f320aa4 + depends: + - max-core ==25.1.0.dev2025013105 release + - python - fastapi - httpx - huggingface_hub @@ -6351,14 +6351,14 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 120796012 - timestamp: 1738214269247 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025013005-3.12release.conda - sha256: 550c6b48bf15369d19c2624fc90a765ff1d8e3b8a429f8be99a3bed75203c3ce - md5: 6097c00b654e46b6949a0aa981b59f39 - depends: - - max-core ==25.1.0.dev2025013005 release - - python 3.12.* + size: 120809611 + timestamp: 1738300650444 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025013105-3.12release.conda + sha256: 55f72914a83403fac6e20372314774856b769c67f59791a217593be0132e0433 + md5: 1467c9c730b2fba872caba9c325d3a93 + depends: + - max-core ==25.1.0.dev2025013105 release + - python - fastapi - httpx - huggingface_hub @@ -6378,14 +6378,14 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 123320768 - timestamp: 1738214254870 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025013005-3.12release.conda - sha256: c47d8b914f60590ecf3d5b08f8f7a56b258fd586348fd92194d82fdf7886e2b5 - md5: 059a0562bff4464237c2ef721a575c1c - depends: - - max-core ==25.1.0.dev2025013005 release - - python 3.12.* + size: 123341772 + timestamp: 1738300734603 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025013105-3.12release.conda + sha256: 880116fc694ec36b549849a351f70e00f092e9de19a17862f76184672ae2bc83 + md5: 8493ea4815ffa8ae223182f94a7a6ecc + depends: + - max-core ==25.1.0.dev2025013105 release + - python - fastapi - httpx - huggingface_hub @@ -6405,12 +6405,12 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 106209351 - timestamp: 1738218076586 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025013005-release.conda + size: 108536428 + timestamp: 1738349723783 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025013105-release.conda noarch: python - sha256: 9e6b97d7429aad6a4a95ac02151d17104912563733e0b110422eed4a5b266043 - md5: 56e3f58c601f40f008b72986f6fea6d3 + sha256: 0c8bbcd2d1133b99b54ebff3c8f5461c025c9de38bd8b6a65b5dc01f285dfa22 + md5: 01c6b9f78100a28719df93826b30be0d depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -6420,8 +6420,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130808 - timestamp: 1738214254865 + size: 130813 + timestamp: 1738300734602 - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda sha256: 78c1bbe1723449c52b7a9df1af2ee5f005209f67e40b6e1d3c7619127c43b1c7 md5: 592132998493b3ff25fd7479396e8351 @@ -6431,18 +6431,18 @@ packages: license_family: MIT size: 14465 timestamp: 1733255681319 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025013005-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025013105-release.conda noarch: python - sha256: 117d59275fc24b179b1df699096cb19e1ab08f2e1e17b9a81ad743dd266fc0c7 - md5: beb27e986a758a1a8755673e8c41ef4a + sha256: 122b3ad0404caebf7c5271d75ae5504f228795f529b98be2011d1a1cdc71f93d + md5: f218b84b9f1baa40269eaa760534be98 depends: - - max-core ==25.1.0.dev2025013005 release + - max-core ==25.1.0.dev2025013105 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22933 - timestamp: 1738214254866 + size: 22925 + timestamp: 1738300734602 - conda: https://conda.anaconda.org/conda-forge/linux-64/mpg123-1.32.9-hc50e24c_0.conda sha256: 39c4700fb3fbe403a77d8cc27352fa72ba744db487559d5d44bf8411bb4ea200 md5: c7f302fd11eeb0987a6a5e1f3aed6a21 @@ -8101,9 +8101,9 @@ packages: license_family: MIT size: 192148 timestamp: 1737454886351 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.0-py312hbf22597_3.conda - sha256: bc303f9b11e04a515f79cd5ad3bfa0e84b9dfec76552626d6263b38789fe6678 - md5: 746ce19f0829ec3e19c93007b1a224d3 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.1-py312hbf22597_0.conda + sha256: 90ec0da0317d3d76990a40c61e1709ef859dd3d8c63838bad2814f46a63c8a2e + md5: 7cec8d0dac15a2d9fea8e49879aa779d depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -8116,11 +8116,11 @@ packages: platform: linux license: BSD-3-Clause license_family: BSD - size: 378126 - timestamp: 1728642454632 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyzmq-26.2.0-py312h2427ae1_3.conda - sha256: cfc4ea87d68b5f0ed64a61f500d5ea0a2310d1f281a4f95afa06c703ea1bdf7d - md5: 1f0779280c3dc1e72cfd86bd1e59791d + size: 382698 + timestamp: 1738271121975 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyzmq-26.2.1-py312h2427ae1_0.conda + sha256: 9558f9330093e5c21b7c04e2e212e19b9b88ad9c808315f12c0765b244018a09 + md5: 0520da8de6870d8ff63e818e927d1524 depends: - libgcc >=13 - libsodium >=1.0.20,<1.0.21.0a0 @@ -8132,14 +8132,14 @@ packages: platform: linux license: BSD-3-Clause license_family: BSD - size: 371730 - timestamp: 1728644030875 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.0-py312hf8a1cbd_3.conda - sha256: 2e0ca1bb9ab3af5d1f9b38548d65be7097ba0246e7e63c908c9b1323df3f45b5 - md5: 7bdaa4c2a84b744ef26c8b2ba65c3d0e + size: 375156 + timestamp: 1738273130727 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.1-py312hf4875e0_0.conda + sha256: 70d398b334668dc597d33e27847ede1b0829a639b9c91ee845355e52c86c2293 + md5: bfbefdb140b546a80827ff7c9d5ac7b8 depends: - __osx >=11.0 - - libcxx >=17 + - libcxx >=18 - libsodium >=1.0.20,<1.0.21.0a0 - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython @@ -8149,8 +8149,8 @@ packages: platform: osx license: BSD-3-Clause license_family: BSD - size: 361674 - timestamp: 1728642457661 + size: 364649 + timestamp: 1738271263898 - conda: https://conda.anaconda.org/conda-forge/linux-64/rav1e-0.6.6-he8a937b_2.conda sha256: 91b3c1ced90d04ee2eded1f72cf3cbc19ff05a25e41876ef0758266a5bab009f md5: 77d9955b4abddb811cb8ab1aa7d743e4 @@ -8872,9 +8872,9 @@ packages: license_family: BSD size: 110051 timestamp: 1733367480074 -- conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.48.1-pyhd8ed1ab_0.conda - sha256: 92fc16e2449fc81f516d31630fd18c3f33b95bc0c069655a3c0042fbd11a09a4 - md5: 08f62b2c92d1fa610896fc7b16b05031 +- conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.48.2-pyhd8ed1ab_0.conda + sha256: 67b19c3d6befcc538df3e6d8dc7c4a2b6c7e35b7c1666da790cea4166f1b768a + md5: 717807c559e9a30fea4850ab8881adcb depends: - datasets !=2.5.0 - filelock @@ -8890,8 +8890,8 @@ packages: - tqdm >=4.27 license: Apache-2.0 license_family: APACHE - size: 3405362 - timestamp: 1737429408302 + size: 3416794 + timestamp: 1738278628376 - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda sha256: ef695490e895c2ad552c77ec497b899b09fd4ad4ab07edcf5649f5994cf92a35 md5: 170a0398946d8f5b454e592672b6fc20 diff --git a/examples/magic.lock b/examples/magic.lock index f01d135d63..1a1dcb3ae5 100644 --- a/examples/magic.lock +++ b/examples/magic.lock @@ -36,7 +36,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py311hfdbb021_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.4-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2024.12.14-hbcca054_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2025.1.31-hbcca054_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.12.14-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py311hf29c0ef_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda @@ -49,7 +49,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda - 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.7-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.8-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.12.1-h267a509_2.conda @@ -64,7 +64,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/httptools-0.6.4-py311h9ecbd09_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.27.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.28.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_1.conda @@ -133,12 +133,12 @@ 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-25.1.0.dev2025013005-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025013005-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025013005-3.11release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025013005-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025013105-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025013105-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025013105-3.11release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025013105-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-25.1.0.dev2025013005-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025013105-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 @@ -184,7 +184,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.11-5_cp311.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py311h2dc5d0c_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.0-py311h7deb3e3_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.1-py311h7deb3e3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/re2-2024.07.02-h9925aae_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/regex-2024.11.6-py311h9ecbd09_0.conda @@ -204,7 +204,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py311h9ecbd09_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.48.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.48.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda @@ -258,7 +258,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/brotli-python-1.1.0-py311h89d996e_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h68df207_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/c-ares-1.34.4-h86ecc28_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2024.12.14-hcefe29a_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2025.1.31-hcefe29a_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.12.14-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cffi-1.17.1-py311h14e8bb7_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda @@ -271,7 +271,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda - 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.7-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.8-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/freetype-2.12.1-hf0a5ef3_2.conda @@ -286,7 +286,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/httptools-0.6.4-py311ha879c10_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.27.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.28.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda @@ -356,12 +356,12 @@ 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-25.1.0.dev2025013005-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025013005-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025013005-3.11release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025013005-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025013105-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025013105-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025013105-3.11release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025013105-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-25.1.0.dev2025013005-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025013105-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 @@ -407,7 +407,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.11-5_cp311.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyyaml-6.0.2-py311h58d527c_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyzmq-26.2.0-py311h826da9f_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyzmq-26.2.1-py311h826da9f_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/re2-2024.07.02-haa97905_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8fc344f_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/regex-2024.11.6-py311ha879c10_0.conda @@ -427,7 +427,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py311h5487e9b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.48.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.48.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda @@ -480,7 +480,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py311h3f08180_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.4-h5505292_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2024.12.14-hf0a4a13_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2025.1.31-hf0a4a13_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.12.14-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.1-py311h3a79f62_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda @@ -493,7 +493,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda - 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.7-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.8-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/freetype-2.12.1-hadb7bae_2.conda @@ -508,7 +508,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/httptools-0.6.4-py311h917b07b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.27.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.28.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda @@ -570,12 +570,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-25.1.0.dev2025013005-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025013005-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025013005-3.11release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025013005-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025013105-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025013105-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025013105-3.11release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025013105-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-25.1.0.dev2025013005-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025013105-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 @@ -621,7 +621,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.11-5_cp311.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py311h4921393_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.0-py311h730b646_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.1-py311h01f2145_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/re2-2024.07.02-h6589ca4_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h92ec313_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/regex-2024.11.6-py311h917b07b_0.conda @@ -640,7 +640,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py311h917b07b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.48.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.48.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda @@ -1755,30 +1755,30 @@ packages: license_family: MIT size: 179496 timestamp: 1734208291879 -- conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2024.12.14-hbcca054_0.conda - sha256: 1afd7274cbc9a334d6d0bc62fa760acc7afdaceb0b91a8df370ec01fd75dc7dd - md5: 720523eb0d6a9b0f6120c16b2aa4e7de +- conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2025.1.31-hbcca054_0.conda + sha256: bf832198976d559ab44d6cdb315642655547e26d826e34da67cbee6624cda189 + md5: 19f3a56f68d2fd06c516076bff482c52 arch: x86_64 platform: linux license: ISC - size: 157088 - timestamp: 1734208393264 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2024.12.14-hcefe29a_0.conda - sha256: ad7b43211051332a5a4e788bb4619a2d0ecb5be73e0f76be17f733a87d7effd1 - md5: 83b4ad1e6dc14df5891f3fcfdeb44351 + size: 158144 + timestamp: 1738298224464 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2025.1.31-hcefe29a_0.conda + sha256: 66c6408ee461593cfdb2d78d82e6ed74d04a04ccb51df3ef8a5f35148c9c6eec + md5: 462cb166cd2e26a396f856510a3aff67 arch: aarch64 platform: linux license: ISC - size: 157096 - timestamp: 1734209301744 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2024.12.14-hf0a4a13_0.conda - sha256: 256be633fd0882ccc1a7a32bc278547e1703f85082c0789a87a603ee3ab8fb82 - md5: 7cb381a6783d91902638e4ed1ebd478e + size: 158290 + timestamp: 1738299057652 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2025.1.31-hf0a4a13_0.conda + sha256: 7e12816618173fe70f5c638b72adf4bfd4ddabf27794369bb17871c5bb75b9f9 + md5: 3569d6a9141adc64d2fe4797f3289e06 arch: arm64 platform: osx license: ISC - size: 157091 - timestamp: 1734208344343 + size: 158425 + timestamp: 1738298167688 - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.12.14-pyhd8ed1ab_0.conda sha256: 048c16a9cbcb1fbad02083414d3bc7c1d0eea4b39aee6aa6bf8d1d5089ca8bad md5: 6feb87357ecd66733be3279f16a8c400 @@ -1949,9 +1949,9 @@ packages: license: MIT and PSF-2.0 size: 20486 timestamp: 1733208916977 -- conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.7-pyh29332c3_1.conda - sha256: ac0c357b216e0b37d1a31af200548783d9e5a0413caaee92c5184dbef63b578e - md5: b53637ce62c4bcf3123a2a40f6a3824b +- conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.8-pyh29332c3_0.conda + sha256: 5e1e3d5cf306d9b3b5fe0d45a9e8440e8770ba7e4a5fac1ac847ca693b0dc064 + md5: 753382711adab47269f0bfe994906bc4 depends: - python >=3.9 - starlette >=0.40.0,<0.46.0 @@ -1966,8 +1966,8 @@ packages: - python license: MIT license_family: MIT - size: 77890 - timestamp: 1737647037273 + size: 77940 + timestamp: 1738326226051 - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.7-pyhd8ed1ab_0.conda sha256: 300683731013b7221922339cd40430bb3c2ddeeb658fd7e37f5099ffe64e4db0 md5: d960e0ea9e1c561aa928f6c4439f04c7 @@ -2259,9 +2259,9 @@ packages: license_family: BSD size: 63082 timestamp: 1733663449209 -- conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.27.1-pyhd8ed1ab_0.conda - sha256: 4597d7aa720f4acdddacc27b3f9e8d4336cb79477c53aee2d7ab96d136169cdb - md5: 8c9a53ecd0c3c278efbdac567dd12ed0 +- conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.28.0-pyhd8ed1ab_0.conda + sha256: 3c48ffeb8a425eeba5dfa81a4da4b738a12d2104da0c3b443185029718dd6e48 + md5: 317f31a6fe151756ef10e7ed97a15f8a depends: - filelock - fsspec >=2023.5.0 @@ -2274,8 +2274,8 @@ packages: - typing_extensions >=3.7.4.3 license: Apache-2.0 license_family: APACHE - size: 278363 - timestamp: 1736350219225 + size: 284361 + timestamp: 1738349452337 - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda sha256: 77af6f5fe8b62ca07d09ac60127a30d9069fdc3c68d6b256754d0ffb1f7779f8 md5: 8e6923fc12f1fe8f8c4e5c9f343256ac @@ -4868,48 +4868,48 @@ packages: license_family: BSD size: 24976 timestamp: 1733219849253 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025013005-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025013105-release.conda noarch: python - sha256: 3948fa0d797c3adac4c09a2b806f4eeccd541d76e04538a66d8f12f3e95c32ee - md5: 1e5f3d8c627016a0a2b8982bf17e61af + sha256: 1b8fcd33ceff5e6e87603d1de72c12493fe20e4f5204bc3d061a7e2b8ab33e84 + md5: 74268fafa5367b803cb82c74751fb0f0 depends: - - max-core ==25.1.0.dev2025013005 release - - max-python >=25.1.0.dev2025013005,<26.0a0 - - mojo-jupyter ==25.1.0.dev2025013005 release - - mblack ==25.1.0.dev2025013005 release + - max-core ==25.1.0.dev2025013105 release + - max-python >=25.1.0.dev2025013105,<26.0a0 + - mojo-jupyter ==25.1.0.dev2025013105 release + - mblack ==25.1.0.dev2025013105 release license: LicenseRef-Modular-Proprietary - size: 9915 - timestamp: 1738214254861 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025013005-release.conda - sha256: 4a68142da5f25068e17fd2974a9b94cba4cc3fdbf0de872c2d9a2ce1dc22ea8f - md5: 9604e0c0d7c78ef69d218810c68f74d6 + size: 9918 + timestamp: 1738300734602 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025013105-release.conda + sha256: 1ac416f06cc0adad41d5ca07d55c0e146073c2971ba30696ce561fd7af5afb1a + md5: ddc94cd4ca461791a9e3ae7a571e78ed depends: - - mblack ==25.1.0.dev2025013005 release + - mblack ==25.1.0.dev2025013105 release license: LicenseRef-Modular-Proprietary - size: 243572302 - timestamp: 1738214269238 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025013005-release.conda - sha256: 8c826b3931ad42bbf9a4719f2ff3afcb4bae722dfe295aabb4f9c090de921c01 - md5: 6d328fe99bca688dad8cbde9e87c1409 + size: 243598857 + timestamp: 1738300650444 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025013105-release.conda + sha256: faee2aee06a50c1ca71fc7df91564dafe97986a71474fe0c2694b663bc7b0a1d + md5: 203e66b533a2e81c659276ce2a211b6b depends: - - mblack ==25.1.0.dev2025013005 release + - mblack ==25.1.0.dev2025013105 release license: LicenseRef-Modular-Proprietary - size: 246120276 - timestamp: 1738214254859 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025013005-release.conda - sha256: 2d2e017becec59c1d82022cbf78344f27d3ec9c2c443213ddc2f3cbb5097e4a6 - md5: 6a4347efe0e034458049baed54857b4f + size: 246147380 + timestamp: 1738300734602 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025013105-release.conda + sha256: 12c6501ffb4e951a4e583ef694529e5621ee4c9d06554b0db464de1a37552974 + md5: 5663c30c6ab3e0a29c0fdb08f5634a68 depends: - - mblack ==25.1.0.dev2025013005 release + - mblack ==25.1.0.dev2025013105 release license: LicenseRef-Modular-Proprietary - size: 205294583 - timestamp: 1738218076583 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025013005-3.11release.conda - sha256: 78a0260e73172a8024e832cb1cfc12962ca8048eef3292ba5803a1153e6ebc1f - md5: 9d53425f5269231907b73491bd8f6092 - depends: - - max-core ==25.1.0.dev2025013005 release - - python 3.11.* + size: 209002959 + timestamp: 1738349723783 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025013105-3.11release.conda + sha256: b2eca43a60b2e333e24a3c54b060c2b9ca4ec2663168c8c982b8b9c3e02ef436 + md5: 3ecb473bf78313dedd8112789df6d5bb + depends: + - max-core ==25.1.0.dev2025013105 release + - python - fastapi - httpx - huggingface_hub @@ -4929,14 +4929,14 @@ packages: - uvicorn - python_abi 3.11.* *_cp311 license: LicenseRef-Modular-Proprietary - size: 120815398 - timestamp: 1738214269244 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025013005-3.11release.conda - sha256: b43435c70735424dddce7959eff9cd7ee3392bf646b82eaf1a9df9628db3724d - md5: 48512e72d18b711ac28d413746ee86d6 - depends: - - max-core ==25.1.0.dev2025013005 release - - python 3.11.* + size: 120832940 + timestamp: 1738300650444 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025013105-3.11release.conda + sha256: 0383a6007f30d4653457ee5ae77df6906f1f7384f8ba170b15dbe7652576a534 + md5: 2a76ac2294311a8f8032e5efbf39450c + depends: + - max-core ==25.1.0.dev2025013105 release + - python - fastapi - httpx - huggingface_hub @@ -4956,14 +4956,14 @@ packages: - uvicorn - python_abi 3.11.* *_cp311 license: LicenseRef-Modular-Proprietary - size: 123363649 - timestamp: 1738214254866 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025013005-3.11release.conda - sha256: df098a50652414f9491568bcdb0327e1a3868515e19571a2d10dc39039e7991c - md5: 19bee2b7aac5db6f4a38883eb1e5de8f - depends: - - max-core ==25.1.0.dev2025013005 release - - python 3.11.* + size: 123382599 + timestamp: 1738300734602 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025013105-3.11release.conda + sha256: 69ad9e176a511fd3bace492ec12e1c014a59a3f3a78187a0e30d0654d338d815 + md5: 47819b3e8818ad4fcd8101d992dc92cd + depends: + - max-core ==25.1.0.dev2025013105 release + - python - fastapi - httpx - huggingface_hub @@ -4983,12 +4983,12 @@ packages: - uvicorn - python_abi 3.11.* *_cp311 license: LicenseRef-Modular-Proprietary - size: 106218061 - timestamp: 1738218076585 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025013005-release.conda + size: 108556922 + timestamp: 1738349723783 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025013105-release.conda noarch: python - sha256: 9e6b97d7429aad6a4a95ac02151d17104912563733e0b110422eed4a5b266043 - md5: 56e3f58c601f40f008b72986f6fea6d3 + sha256: 0c8bbcd2d1133b99b54ebff3c8f5461c025c9de38bd8b6a65b5dc01f285dfa22 + md5: 01c6b9f78100a28719df93826b30be0d depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -4998,8 +4998,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130808 - timestamp: 1738214254865 + size: 130813 + timestamp: 1738300734602 - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda sha256: 78c1bbe1723449c52b7a9df1af2ee5f005209f67e40b6e1d3c7619127c43b1c7 md5: 592132998493b3ff25fd7479396e8351 @@ -5009,18 +5009,18 @@ packages: license_family: MIT size: 14465 timestamp: 1733255681319 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025013005-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025013105-release.conda noarch: python - sha256: 117d59275fc24b179b1df699096cb19e1ab08f2e1e17b9a81ad743dd266fc0c7 - md5: beb27e986a758a1a8755673e8c41ef4a + sha256: 122b3ad0404caebf7c5271d75ae5504f228795f529b98be2011d1a1cdc71f93d + md5: f218b84b9f1baa40269eaa760534be98 depends: - - max-core ==25.1.0.dev2025013005 release + - max-core ==25.1.0.dev2025013105 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22933 - timestamp: 1738214254866 + size: 22925 + timestamp: 1738300734602 - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py311h2dc5d0c_2.conda sha256: afaab7a028281d8b5336db2b994fd3f9694862b6ca372c079dc4e84ad768c20a md5: bb8ca118919836624d920b4c44383a15 @@ -6341,9 +6341,9 @@ packages: license_family: MIT size: 196951 timestamp: 1737454935552 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.0-py311h7deb3e3_3.conda - sha256: 3fdef7b3c43474b7225868776a373289a8fd92787ffdf8bed11cf7f39b4ac741 - md5: e0897de1d8979a3bb20ef031ae1f7d28 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.1-py311h7deb3e3_0.conda + sha256: bd6309ef4629744aaaccd9b33d6389dfe879e9864386137e6e4ecc7e1b9ed0f3 + md5: 52457fbaa0aef8136d5dd7bb8a36db9e depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -6356,11 +6356,11 @@ packages: platform: linux license: BSD-3-Clause license_family: BSD - size: 389074 - timestamp: 1728642373938 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyzmq-26.2.0-py311h826da9f_3.conda - sha256: 4bffb8caa7b44ec2974d18a2660bbf9c53553d3343c114a33442ca4a8e192f1a - md5: 2d901569f3142d9c7ea9e89f6f965369 + size: 392547 + timestamp: 1738271109731 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyzmq-26.2.1-py311h826da9f_0.conda + sha256: 09783a354a64324ed363a3c9de0f98d088f74f009d1a6fdd263c3758c4924992 + md5: 919dc1bfa979c20c6358f06e4ee8529f depends: - libgcc >=13 - libsodium >=1.0.20,<1.0.21.0a0 @@ -6372,14 +6372,14 @@ packages: platform: linux license: BSD-3-Clause license_family: BSD - size: 382698 - timestamp: 1728644123354 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.0-py311h730b646_3.conda - sha256: 7e75589d9c3723ecf314435f15a7b486cebafa89ebf00bb616354e37587dc7ae - md5: b6f3e527de0c0384cd78cfa779bd6ddf + size: 386832 + timestamp: 1738273148939 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.1-py311h01f2145_0.conda + sha256: 29255e5ca9f0b50d551fce4d5b7745fa11b4e672418a6d88a4c3f1a974dd4e44 + md5: 4c5daee5a983fb515460a2714b612126 depends: - __osx >=11.0 - - libcxx >=17 + - libcxx >=18 - libsodium >=1.0.20,<1.0.21.0a0 - python >=3.11,<3.12.0a0 - python >=3.11,<3.12.0a0 *_cpython @@ -6389,8 +6389,8 @@ packages: platform: osx license: BSD-3-Clause license_family: BSD - size: 365841 - timestamp: 1728642472021 + size: 370170 + timestamp: 1738271259321 - conda: https://conda.anaconda.org/conda-forge/linux-64/re2-2024.07.02-h9925aae_2.conda sha256: d213c44958d49ce7e0d4d5b81afec23640cce5016685dbb2d23571a99caa4474 md5: e84ddf12bde691e8ec894b00ea829ddf @@ -6850,9 +6850,9 @@ packages: license_family: BSD size: 110051 timestamp: 1733367480074 -- conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.48.1-pyhd8ed1ab_0.conda - sha256: 92fc16e2449fc81f516d31630fd18c3f33b95bc0c069655a3c0042fbd11a09a4 - md5: 08f62b2c92d1fa610896fc7b16b05031 +- conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.48.2-pyhd8ed1ab_0.conda + sha256: 67b19c3d6befcc538df3e6d8dc7c4a2b6c7e35b7c1666da790cea4166f1b768a + md5: 717807c559e9a30fea4850ab8881adcb depends: - datasets !=2.5.0 - filelock @@ -6868,8 +6868,8 @@ packages: - tqdm >=4.27 license: Apache-2.0 license_family: APACHE - size: 3405362 - timestamp: 1737429408302 + size: 3416794 + timestamp: 1738278628376 - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda sha256: ef695490e895c2ad552c77ec497b899b09fd4ad4ab07edcf5649f5994cf92a35 md5: 170a0398946d8f5b454e592672b6fc20 diff --git a/examples/notebooks/magic.lock b/examples/notebooks/magic.lock index aef33d6a54..a9ee6e08a6 100644 --- a/examples/notebooks/magic.lock +++ b/examples/notebooks/magic.lock @@ -45,7 +45,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py312h2ec8cdc_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.4-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2024.12.14-hbcca054_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2025.1.31-hbcca054_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.12.14-pyhd8ed1ab_0.conda @@ -65,7 +65,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/executing-2.1.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.7-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.8-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_1.conda @@ -81,7 +81,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/httptools-0.6.4-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.27.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.28.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_1.conda @@ -168,13 +168,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/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-25.1.0.dev2025013005-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025013005-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025013005-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025013005-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025013105-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025013105-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025013105-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025013105-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.1.1-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025013005-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025013105-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 @@ -235,9 +235,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python-xxhash-3.5.0-py312h66e93f0_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py312h178313f_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.0-py312hbf22597_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.1-py312hbf22597_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/re2-2024.07.02-h9925aae_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.36.2-pyh29332c3_0.conda @@ -268,7 +268,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.48.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.48.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda @@ -339,7 +339,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/brotli-python-1.1.0-py312h6f74592_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h68df207_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/c-ares-1.34.4-h86ecc28_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2024.12.14-hcefe29a_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2025.1.31-hcefe29a_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.12.14-pyhd8ed1ab_0.conda @@ -359,7 +359,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/executing-2.1.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.7-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.8-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_1.conda @@ -375,7 +375,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/httptools-0.6.4-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.27.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.28.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda @@ -463,13 +463,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/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-25.1.0.dev2025013005-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025013005-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025013005-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025013005-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025013105-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025013105-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025013105-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025013105-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.1.1-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025013005-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025013105-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 @@ -530,9 +530,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-xxhash-3.5.0-py312h52516f5_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.12-5_cp312.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyyaml-6.0.2-py312hcc812fe_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyzmq-26.2.0-py312h2427ae1_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyzmq-26.2.1-py312h2427ae1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/re2-2024.07.02-haa97905_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8fc344f_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.36.2-pyh29332c3_0.conda @@ -563,7 +563,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py312h52516f5_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.48.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.48.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda @@ -634,7 +634,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py312hde4cb15_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.4-h5505292_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2024.12.14-hf0a4a13_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2025.1.31-hf0a4a13_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.12.14-pyhd8ed1ab_0.conda @@ -654,7 +654,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/executing-2.1.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.7-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.8-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_1.conda @@ -670,7 +670,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/httptools-0.6.4-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.27.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.28.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda @@ -750,13 +750,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-25.1.0.dev2025013005-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025013005-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025013005-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025013005-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025013105-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025013105-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025013105-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025013105-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.1.1-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025013005-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025013105-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 @@ -819,9 +819,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-xxhash-3.5.0-py312h024a12e_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-5_cp312.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py312h998013c_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.0-py312hf8a1cbd_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.1-py312hf4875e0_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/re2-2024.07.02-h6589ca4_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h92ec313_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.36.2-pyh29332c3_0.conda @@ -851,7 +851,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.48.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.48.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda @@ -2114,30 +2114,30 @@ packages: license_family: MIT size: 179496 timestamp: 1734208291879 -- conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2024.12.14-hbcca054_0.conda - sha256: 1afd7274cbc9a334d6d0bc62fa760acc7afdaceb0b91a8df370ec01fd75dc7dd - md5: 720523eb0d6a9b0f6120c16b2aa4e7de +- conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2025.1.31-hbcca054_0.conda + sha256: bf832198976d559ab44d6cdb315642655547e26d826e34da67cbee6624cda189 + md5: 19f3a56f68d2fd06c516076bff482c52 arch: x86_64 platform: linux license: ISC - size: 157088 - timestamp: 1734208393264 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2024.12.14-hcefe29a_0.conda - sha256: ad7b43211051332a5a4e788bb4619a2d0ecb5be73e0f76be17f733a87d7effd1 - md5: 83b4ad1e6dc14df5891f3fcfdeb44351 + size: 158144 + timestamp: 1738298224464 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2025.1.31-hcefe29a_0.conda + sha256: 66c6408ee461593cfdb2d78d82e6ed74d04a04ccb51df3ef8a5f35148c9c6eec + md5: 462cb166cd2e26a396f856510a3aff67 arch: aarch64 platform: linux license: ISC - size: 157096 - timestamp: 1734209301744 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2024.12.14-hf0a4a13_0.conda - sha256: 256be633fd0882ccc1a7a32bc278547e1703f85082c0789a87a603ee3ab8fb82 - md5: 7cb381a6783d91902638e4ed1ebd478e + size: 158290 + timestamp: 1738299057652 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2025.1.31-hf0a4a13_0.conda + sha256: 7e12816618173fe70f5c638b72adf4bfd4ddabf27794369bb17871c5bb75b9f9 + md5: 3569d6a9141adc64d2fe4797f3289e06 arch: arm64 platform: osx license: ISC - size: 157091 - timestamp: 1734208344343 + size: 158425 + timestamp: 1738298167688 - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 noarch: python sha256: 561e6660f26c35d137ee150187d89767c988413c978e1b712d53f27ddf70ea17 @@ -2409,9 +2409,9 @@ packages: license_family: MIT size: 28348 timestamp: 1733569440265 -- conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.7-pyh29332c3_1.conda - sha256: ac0c357b216e0b37d1a31af200548783d9e5a0413caaee92c5184dbef63b578e - md5: b53637ce62c4bcf3123a2a40f6a3824b +- conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.8-pyh29332c3_0.conda + sha256: 5e1e3d5cf306d9b3b5fe0d45a9e8440e8770ba7e4a5fac1ac847ca693b0dc064 + md5: 753382711adab47269f0bfe994906bc4 depends: - python >=3.9 - starlette >=0.40.0,<0.46.0 @@ -2426,8 +2426,8 @@ packages: - python license: MIT license_family: MIT - size: 77890 - timestamp: 1737647037273 + size: 77940 + timestamp: 1738326226051 - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.7-pyhd8ed1ab_0.conda sha256: 300683731013b7221922339cd40430bb3c2ddeeb658fd7e37f5099ffe64e4db0 md5: d960e0ea9e1c561aa928f6c4439f04c7 @@ -2729,9 +2729,9 @@ packages: license_family: BSD size: 63082 timestamp: 1733663449209 -- conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.27.1-pyhd8ed1ab_0.conda - sha256: 4597d7aa720f4acdddacc27b3f9e8d4336cb79477c53aee2d7ab96d136169cdb - md5: 8c9a53ecd0c3c278efbdac567dd12ed0 +- conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.28.0-pyhd8ed1ab_0.conda + sha256: 3c48ffeb8a425eeba5dfa81a4da4b738a12d2104da0c3b443185029718dd6e48 + md5: 317f31a6fe151756ef10e7ed97a15f8a depends: - filelock - fsspec >=2023.5.0 @@ -2744,8 +2744,8 @@ packages: - typing_extensions >=3.7.4.3 license: Apache-2.0 license_family: APACHE - size: 278363 - timestamp: 1736350219225 + size: 284361 + timestamp: 1738349452337 - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda sha256: 77af6f5fe8b62ca07d09ac60127a30d9069fdc3c68d6b256754d0ffb1f7779f8 md5: 8e6923fc12f1fe8f8c4e5c9f343256ac @@ -5654,48 +5654,48 @@ packages: license_family: BSD size: 14467 timestamp: 1733417051523 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025013005-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025013105-release.conda noarch: python - sha256: 3948fa0d797c3adac4c09a2b806f4eeccd541d76e04538a66d8f12f3e95c32ee - md5: 1e5f3d8c627016a0a2b8982bf17e61af + sha256: 1b8fcd33ceff5e6e87603d1de72c12493fe20e4f5204bc3d061a7e2b8ab33e84 + md5: 74268fafa5367b803cb82c74751fb0f0 depends: - - max-core ==25.1.0.dev2025013005 release - - max-python >=25.1.0.dev2025013005,<26.0a0 - - mojo-jupyter ==25.1.0.dev2025013005 release - - mblack ==25.1.0.dev2025013005 release + - max-core ==25.1.0.dev2025013105 release + - max-python >=25.1.0.dev2025013105,<26.0a0 + - mojo-jupyter ==25.1.0.dev2025013105 release + - mblack ==25.1.0.dev2025013105 release license: LicenseRef-Modular-Proprietary - size: 9915 - timestamp: 1738214254861 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025013005-release.conda - sha256: 4a68142da5f25068e17fd2974a9b94cba4cc3fdbf0de872c2d9a2ce1dc22ea8f - md5: 9604e0c0d7c78ef69d218810c68f74d6 + size: 9918 + timestamp: 1738300734602 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025013105-release.conda + sha256: 1ac416f06cc0adad41d5ca07d55c0e146073c2971ba30696ce561fd7af5afb1a + md5: ddc94cd4ca461791a9e3ae7a571e78ed depends: - - mblack ==25.1.0.dev2025013005 release + - mblack ==25.1.0.dev2025013105 release license: LicenseRef-Modular-Proprietary - size: 243572302 - timestamp: 1738214269238 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025013005-release.conda - sha256: 8c826b3931ad42bbf9a4719f2ff3afcb4bae722dfe295aabb4f9c090de921c01 - md5: 6d328fe99bca688dad8cbde9e87c1409 + size: 243598857 + timestamp: 1738300650444 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025013105-release.conda + sha256: faee2aee06a50c1ca71fc7df91564dafe97986a71474fe0c2694b663bc7b0a1d + md5: 203e66b533a2e81c659276ce2a211b6b depends: - - mblack ==25.1.0.dev2025013005 release + - mblack ==25.1.0.dev2025013105 release license: LicenseRef-Modular-Proprietary - size: 246120276 - timestamp: 1738214254859 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025013005-release.conda - sha256: 2d2e017becec59c1d82022cbf78344f27d3ec9c2c443213ddc2f3cbb5097e4a6 - md5: 6a4347efe0e034458049baed54857b4f + size: 246147380 + timestamp: 1738300734602 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025013105-release.conda + sha256: 12c6501ffb4e951a4e583ef694529e5621ee4c9d06554b0db464de1a37552974 + md5: 5663c30c6ab3e0a29c0fdb08f5634a68 depends: - - mblack ==25.1.0.dev2025013005 release + - mblack ==25.1.0.dev2025013105 release license: LicenseRef-Modular-Proprietary - size: 205294583 - timestamp: 1738218076583 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025013005-3.12release.conda - sha256: 19277c4f68fdfdc727da1c002a257d81147487672aa1ae2619d773a645a779b6 - md5: 18357c34c7e416b960cdfe0a8b2dd7fc - depends: - - max-core ==25.1.0.dev2025013005 release - - python 3.12.* + size: 209002959 + timestamp: 1738349723783 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025013105-3.12release.conda + sha256: d08de32fd4aa12b4593146fc6f268a105b264e279c3a75009870e8d310778ea6 + md5: 27c0957cae6a8620faf67beb5f320aa4 + depends: + - max-core ==25.1.0.dev2025013105 release + - python - fastapi - httpx - huggingface_hub @@ -5715,14 +5715,14 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 120796012 - timestamp: 1738214269247 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025013005-3.12release.conda - sha256: 550c6b48bf15369d19c2624fc90a765ff1d8e3b8a429f8be99a3bed75203c3ce - md5: 6097c00b654e46b6949a0aa981b59f39 - depends: - - max-core ==25.1.0.dev2025013005 release - - python 3.12.* + size: 120809611 + timestamp: 1738300650444 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025013105-3.12release.conda + sha256: 55f72914a83403fac6e20372314774856b769c67f59791a217593be0132e0433 + md5: 1467c9c730b2fba872caba9c325d3a93 + depends: + - max-core ==25.1.0.dev2025013105 release + - python - fastapi - httpx - huggingface_hub @@ -5742,14 +5742,14 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 123320768 - timestamp: 1738214254870 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025013005-3.12release.conda - sha256: c47d8b914f60590ecf3d5b08f8f7a56b258fd586348fd92194d82fdf7886e2b5 - md5: 059a0562bff4464237c2ef721a575c1c - depends: - - max-core ==25.1.0.dev2025013005 release - - python 3.12.* + size: 123341772 + timestamp: 1738300734603 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025013105-3.12release.conda + sha256: 880116fc694ec36b549849a351f70e00f092e9de19a17862f76184672ae2bc83 + md5: 8493ea4815ffa8ae223182f94a7a6ecc + depends: + - max-core ==25.1.0.dev2025013105 release + - python - fastapi - httpx - huggingface_hub @@ -5769,12 +5769,12 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 106209351 - timestamp: 1738218076586 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025013005-release.conda + size: 108536428 + timestamp: 1738349723783 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025013105-release.conda noarch: python - sha256: 9e6b97d7429aad6a4a95ac02151d17104912563733e0b110422eed4a5b266043 - md5: 56e3f58c601f40f008b72986f6fea6d3 + sha256: 0c8bbcd2d1133b99b54ebff3c8f5461c025c9de38bd8b6a65b5dc01f285dfa22 + md5: 01c6b9f78100a28719df93826b30be0d depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -5784,8 +5784,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130808 - timestamp: 1738214254865 + size: 130813 + timestamp: 1738300734602 - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda sha256: 78c1bbe1723449c52b7a9df1af2ee5f005209f67e40b6e1d3c7619127c43b1c7 md5: 592132998493b3ff25fd7479396e8351 @@ -5805,18 +5805,18 @@ packages: license_family: BSD size: 68935 timestamp: 1738085278568 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025013005-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025013105-release.conda noarch: python - sha256: 117d59275fc24b179b1df699096cb19e1ab08f2e1e17b9a81ad743dd266fc0c7 - md5: beb27e986a758a1a8755673e8c41ef4a + sha256: 122b3ad0404caebf7c5271d75ae5504f228795f529b98be2011d1a1cdc71f93d + md5: f218b84b9f1baa40269eaa760534be98 depends: - - max-core ==25.1.0.dev2025013005 release + - max-core ==25.1.0.dev2025013105 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22933 - timestamp: 1738214254866 + size: 22925 + timestamp: 1738300734602 - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py312h178313f_2.conda sha256: b05bc8252a6e957bf4a776ed5e0e61d1ba88cdc46ccb55890c72cc58b10371f4 md5: 5b5e3267d915a107eca793d52e1b780a @@ -7303,15 +7303,15 @@ packages: license_family: BSD size: 6278 timestamp: 1723823099686 -- conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.2-pyhd8ed1ab_1.conda - sha256: 0a7c706b2eb13f7da5692d9ddf1567209964875710b471de6f2743b33d1ba960 - md5: f26ec986456c30f6dff154b670ae140f +- conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.1-pyhd8ed1ab_0.conda + sha256: bc35995ecbd38693567fc143d3e6008e53cff900b453412cae48ffa535f25d1f + md5: d451ccded808abf6511f0a2ac9bb9dcc depends: - python >=3.9 license: MIT license_family: MIT - size: 185890 - timestamp: 1733215766006 + size: 186859 + timestamp: 1738317649432 - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py312h178313f_2.conda sha256: 159cba13a93b3fe084a1eb9bda0a07afc9148147647f0d437c3c3da60980503b md5: cf2485f39740de96e2a7f2bb18ed2fee @@ -7357,9 +7357,9 @@ packages: license_family: MIT size: 192148 timestamp: 1737454886351 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.0-py312hbf22597_3.conda - sha256: bc303f9b11e04a515f79cd5ad3bfa0e84b9dfec76552626d6263b38789fe6678 - md5: 746ce19f0829ec3e19c93007b1a224d3 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.1-py312hbf22597_0.conda + sha256: 90ec0da0317d3d76990a40c61e1709ef859dd3d8c63838bad2814f46a63c8a2e + md5: 7cec8d0dac15a2d9fea8e49879aa779d depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -7372,11 +7372,11 @@ packages: platform: linux license: BSD-3-Clause license_family: BSD - size: 378126 - timestamp: 1728642454632 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyzmq-26.2.0-py312h2427ae1_3.conda - sha256: cfc4ea87d68b5f0ed64a61f500d5ea0a2310d1f281a4f95afa06c703ea1bdf7d - md5: 1f0779280c3dc1e72cfd86bd1e59791d + size: 382698 + timestamp: 1738271121975 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyzmq-26.2.1-py312h2427ae1_0.conda + sha256: 9558f9330093e5c21b7c04e2e212e19b9b88ad9c808315f12c0765b244018a09 + md5: 0520da8de6870d8ff63e818e927d1524 depends: - libgcc >=13 - libsodium >=1.0.20,<1.0.21.0a0 @@ -7388,14 +7388,14 @@ packages: platform: linux license: BSD-3-Clause license_family: BSD - size: 371730 - timestamp: 1728644030875 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.0-py312hf8a1cbd_3.conda - sha256: 2e0ca1bb9ab3af5d1f9b38548d65be7097ba0246e7e63c908c9b1323df3f45b5 - md5: 7bdaa4c2a84b744ef26c8b2ba65c3d0e + size: 375156 + timestamp: 1738273130727 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.1-py312hf4875e0_0.conda + sha256: 70d398b334668dc597d33e27847ede1b0829a639b9c91ee845355e52c86c2293 + md5: bfbefdb140b546a80827ff7c9d5ac7b8 depends: - __osx >=11.0 - - libcxx >=17 + - libcxx >=18 - libsodium >=1.0.20,<1.0.21.0a0 - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython @@ -7405,8 +7405,8 @@ packages: platform: osx license: BSD-3-Clause license_family: BSD - size: 361674 - timestamp: 1728642457661 + size: 364649 + timestamp: 1738271263898 - conda: https://conda.anaconda.org/conda-forge/linux-64/re2-2024.07.02-h9925aae_2.conda sha256: d213c44958d49ce7e0d4d5b81afec23640cce5016685dbb2d23571a99caa4474 md5: e84ddf12bde691e8ec894b00ea829ddf @@ -8039,9 +8039,9 @@ packages: license_family: BSD size: 110051 timestamp: 1733367480074 -- conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.48.1-pyhd8ed1ab_0.conda - sha256: 92fc16e2449fc81f516d31630fd18c3f33b95bc0c069655a3c0042fbd11a09a4 - md5: 08f62b2c92d1fa610896fc7b16b05031 +- conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.48.2-pyhd8ed1ab_0.conda + sha256: 67b19c3d6befcc538df3e6d8dc7c4a2b6c7e35b7c1666da790cea4166f1b768a + md5: 717807c559e9a30fea4850ab8881adcb depends: - datasets !=2.5.0 - filelock @@ -8057,8 +8057,8 @@ packages: - tqdm >=4.27 license: Apache-2.0 license_family: APACHE - size: 3405362 - timestamp: 1737429408302 + size: 3416794 + timestamp: 1738278628376 - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda sha256: ef695490e895c2ad552c77ec497b899b09fd4ad4ab07edcf5649f5994cf92a35 md5: 170a0398946d8f5b454e592672b6fc20 diff --git a/examples/operators/magic.lock b/examples/operators/magic.lock index 9376f84e75..f45b978de6 100644 --- a/examples/operators/magic.lock +++ b/examples/operators/magic.lock @@ -36,7 +36,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py312h2ec8cdc_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.4-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2024.12.14-hbcca054_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2025.1.31-hbcca054_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.12.14-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py312h06ac9bb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda @@ -49,7 +49,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda - 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.7-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.8-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.12.1-h267a509_2.conda @@ -64,7 +64,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/httptools-0.6.4-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.27.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.28.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_1.conda @@ -133,12 +133,12 @@ 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-25.1.0.dev2025013005-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025013005-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025013005-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025013005-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025013105-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025013105-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025013105-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025013105-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-25.1.0.dev2025013005-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025013105-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 @@ -184,7 +184,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py312h178313f_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.0-py312hbf22597_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.1-py312hbf22597_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/re2-2024.07.02-h9925aae_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/regex-2024.11.6-py312h66e93f0_0.conda @@ -204,7 +204,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.48.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.48.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda @@ -258,7 +258,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/brotli-python-1.1.0-py312h6f74592_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h68df207_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/c-ares-1.34.4-h86ecc28_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2024.12.14-hcefe29a_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2025.1.31-hcefe29a_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.12.14-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cffi-1.17.1-py312hac81daf_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda @@ -271,7 +271,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda - 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.7-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.8-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/freetype-2.12.1-hf0a5ef3_2.conda @@ -286,7 +286,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/httptools-0.6.4-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.27.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.28.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda @@ -356,12 +356,12 @@ 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-25.1.0.dev2025013005-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025013005-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025013005-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025013005-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025013105-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025013105-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025013105-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025013105-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-25.1.0.dev2025013005-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025013105-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 @@ -407,7 +407,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.12-5_cp312.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyyaml-6.0.2-py312hcc812fe_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyzmq-26.2.0-py312h2427ae1_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyzmq-26.2.1-py312h2427ae1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/re2-2024.07.02-haa97905_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8fc344f_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/regex-2024.11.6-py312hb2c0f52_0.conda @@ -427,7 +427,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py312h52516f5_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.48.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.48.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda @@ -480,7 +480,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py312hde4cb15_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.4-h5505292_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2024.12.14-hf0a4a13_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2025.1.31-hf0a4a13_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.12.14-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.1-py312h0fad829_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda @@ -493,7 +493,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda - 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.7-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.8-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/freetype-2.12.1-hadb7bae_2.conda @@ -508,7 +508,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/httptools-0.6.4-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.27.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.28.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda @@ -570,12 +570,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-25.1.0.dev2025013005-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025013005-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025013005-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025013005-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025013105-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025013105-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025013105-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025013105-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-25.1.0.dev2025013005-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025013105-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 @@ -621,7 +621,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-5_cp312.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py312h998013c_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.0-py312hf8a1cbd_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.1-py312hf4875e0_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/re2-2024.07.02-h6589ca4_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h92ec313_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/regex-2024.11.6-py312hea69d52_0.conda @@ -640,7 +640,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.48.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.48.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda @@ -1755,30 +1755,30 @@ packages: license_family: MIT size: 179496 timestamp: 1734208291879 -- conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2024.12.14-hbcca054_0.conda - sha256: 1afd7274cbc9a334d6d0bc62fa760acc7afdaceb0b91a8df370ec01fd75dc7dd - md5: 720523eb0d6a9b0f6120c16b2aa4e7de +- conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2025.1.31-hbcca054_0.conda + sha256: bf832198976d559ab44d6cdb315642655547e26d826e34da67cbee6624cda189 + md5: 19f3a56f68d2fd06c516076bff482c52 arch: x86_64 platform: linux license: ISC - size: 157088 - timestamp: 1734208393264 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2024.12.14-hcefe29a_0.conda - sha256: ad7b43211051332a5a4e788bb4619a2d0ecb5be73e0f76be17f733a87d7effd1 - md5: 83b4ad1e6dc14df5891f3fcfdeb44351 + size: 158144 + timestamp: 1738298224464 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2025.1.31-hcefe29a_0.conda + sha256: 66c6408ee461593cfdb2d78d82e6ed74d04a04ccb51df3ef8a5f35148c9c6eec + md5: 462cb166cd2e26a396f856510a3aff67 arch: aarch64 platform: linux license: ISC - size: 157096 - timestamp: 1734209301744 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2024.12.14-hf0a4a13_0.conda - sha256: 256be633fd0882ccc1a7a32bc278547e1703f85082c0789a87a603ee3ab8fb82 - md5: 7cb381a6783d91902638e4ed1ebd478e + size: 158290 + timestamp: 1738299057652 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2025.1.31-hf0a4a13_0.conda + sha256: 7e12816618173fe70f5c638b72adf4bfd4ddabf27794369bb17871c5bb75b9f9 + md5: 3569d6a9141adc64d2fe4797f3289e06 arch: arm64 platform: osx license: ISC - size: 157091 - timestamp: 1734208344343 + size: 158425 + timestamp: 1738298167688 - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.12.14-pyhd8ed1ab_0.conda sha256: 048c16a9cbcb1fbad02083414d3bc7c1d0eea4b39aee6aa6bf8d1d5089ca8bad md5: 6feb87357ecd66733be3279f16a8c400 @@ -1949,9 +1949,9 @@ packages: license: MIT and PSF-2.0 size: 20486 timestamp: 1733208916977 -- conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.7-pyh29332c3_1.conda - sha256: ac0c357b216e0b37d1a31af200548783d9e5a0413caaee92c5184dbef63b578e - md5: b53637ce62c4bcf3123a2a40f6a3824b +- conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.8-pyh29332c3_0.conda + sha256: 5e1e3d5cf306d9b3b5fe0d45a9e8440e8770ba7e4a5fac1ac847ca693b0dc064 + md5: 753382711adab47269f0bfe994906bc4 depends: - python >=3.9 - starlette >=0.40.0,<0.46.0 @@ -1966,8 +1966,8 @@ packages: - python license: MIT license_family: MIT - size: 77890 - timestamp: 1737647037273 + size: 77940 + timestamp: 1738326226051 - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.7-pyhd8ed1ab_0.conda sha256: 300683731013b7221922339cd40430bb3c2ddeeb658fd7e37f5099ffe64e4db0 md5: d960e0ea9e1c561aa928f6c4439f04c7 @@ -2259,9 +2259,9 @@ packages: license_family: BSD size: 63082 timestamp: 1733663449209 -- conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.27.1-pyhd8ed1ab_0.conda - sha256: 4597d7aa720f4acdddacc27b3f9e8d4336cb79477c53aee2d7ab96d136169cdb - md5: 8c9a53ecd0c3c278efbdac567dd12ed0 +- conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.28.0-pyhd8ed1ab_0.conda + sha256: 3c48ffeb8a425eeba5dfa81a4da4b738a12d2104da0c3b443185029718dd6e48 + md5: 317f31a6fe151756ef10e7ed97a15f8a depends: - filelock - fsspec >=2023.5.0 @@ -2274,8 +2274,8 @@ packages: - typing_extensions >=3.7.4.3 license: Apache-2.0 license_family: APACHE - size: 278363 - timestamp: 1736350219225 + size: 284361 + timestamp: 1738349452337 - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda sha256: 77af6f5fe8b62ca07d09ac60127a30d9069fdc3c68d6b256754d0ffb1f7779f8 md5: 8e6923fc12f1fe8f8c4e5c9f343256ac @@ -4868,48 +4868,48 @@ packages: license_family: BSD size: 24048 timestamp: 1733219945697 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025013005-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025013105-release.conda noarch: python - sha256: 3948fa0d797c3adac4c09a2b806f4eeccd541d76e04538a66d8f12f3e95c32ee - md5: 1e5f3d8c627016a0a2b8982bf17e61af + sha256: 1b8fcd33ceff5e6e87603d1de72c12493fe20e4f5204bc3d061a7e2b8ab33e84 + md5: 74268fafa5367b803cb82c74751fb0f0 depends: - - max-core ==25.1.0.dev2025013005 release - - max-python >=25.1.0.dev2025013005,<26.0a0 - - mojo-jupyter ==25.1.0.dev2025013005 release - - mblack ==25.1.0.dev2025013005 release + - max-core ==25.1.0.dev2025013105 release + - max-python >=25.1.0.dev2025013105,<26.0a0 + - mojo-jupyter ==25.1.0.dev2025013105 release + - mblack ==25.1.0.dev2025013105 release license: LicenseRef-Modular-Proprietary - size: 9915 - timestamp: 1738214254861 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025013005-release.conda - sha256: 4a68142da5f25068e17fd2974a9b94cba4cc3fdbf0de872c2d9a2ce1dc22ea8f - md5: 9604e0c0d7c78ef69d218810c68f74d6 + size: 9918 + timestamp: 1738300734602 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025013105-release.conda + sha256: 1ac416f06cc0adad41d5ca07d55c0e146073c2971ba30696ce561fd7af5afb1a + md5: ddc94cd4ca461791a9e3ae7a571e78ed depends: - - mblack ==25.1.0.dev2025013005 release + - mblack ==25.1.0.dev2025013105 release license: LicenseRef-Modular-Proprietary - size: 243572302 - timestamp: 1738214269238 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025013005-release.conda - sha256: 8c826b3931ad42bbf9a4719f2ff3afcb4bae722dfe295aabb4f9c090de921c01 - md5: 6d328fe99bca688dad8cbde9e87c1409 + size: 243598857 + timestamp: 1738300650444 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025013105-release.conda + sha256: faee2aee06a50c1ca71fc7df91564dafe97986a71474fe0c2694b663bc7b0a1d + md5: 203e66b533a2e81c659276ce2a211b6b depends: - - mblack ==25.1.0.dev2025013005 release + - mblack ==25.1.0.dev2025013105 release license: LicenseRef-Modular-Proprietary - size: 246120276 - timestamp: 1738214254859 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025013005-release.conda - sha256: 2d2e017becec59c1d82022cbf78344f27d3ec9c2c443213ddc2f3cbb5097e4a6 - md5: 6a4347efe0e034458049baed54857b4f + size: 246147380 + timestamp: 1738300734602 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025013105-release.conda + sha256: 12c6501ffb4e951a4e583ef694529e5621ee4c9d06554b0db464de1a37552974 + md5: 5663c30c6ab3e0a29c0fdb08f5634a68 depends: - - mblack ==25.1.0.dev2025013005 release + - mblack ==25.1.0.dev2025013105 release license: LicenseRef-Modular-Proprietary - size: 205294583 - timestamp: 1738218076583 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025013005-3.12release.conda - sha256: 19277c4f68fdfdc727da1c002a257d81147487672aa1ae2619d773a645a779b6 - md5: 18357c34c7e416b960cdfe0a8b2dd7fc - depends: - - max-core ==25.1.0.dev2025013005 release - - python 3.12.* + size: 209002959 + timestamp: 1738349723783 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025013105-3.12release.conda + sha256: d08de32fd4aa12b4593146fc6f268a105b264e279c3a75009870e8d310778ea6 + md5: 27c0957cae6a8620faf67beb5f320aa4 + depends: + - max-core ==25.1.0.dev2025013105 release + - python - fastapi - httpx - huggingface_hub @@ -4929,14 +4929,14 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 120796012 - timestamp: 1738214269247 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025013005-3.12release.conda - sha256: 550c6b48bf15369d19c2624fc90a765ff1d8e3b8a429f8be99a3bed75203c3ce - md5: 6097c00b654e46b6949a0aa981b59f39 - depends: - - max-core ==25.1.0.dev2025013005 release - - python 3.12.* + size: 120809611 + timestamp: 1738300650444 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025013105-3.12release.conda + sha256: 55f72914a83403fac6e20372314774856b769c67f59791a217593be0132e0433 + md5: 1467c9c730b2fba872caba9c325d3a93 + depends: + - max-core ==25.1.0.dev2025013105 release + - python - fastapi - httpx - huggingface_hub @@ -4956,14 +4956,14 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 123320768 - timestamp: 1738214254870 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025013005-3.12release.conda - sha256: c47d8b914f60590ecf3d5b08f8f7a56b258fd586348fd92194d82fdf7886e2b5 - md5: 059a0562bff4464237c2ef721a575c1c - depends: - - max-core ==25.1.0.dev2025013005 release - - python 3.12.* + size: 123341772 + timestamp: 1738300734603 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025013105-3.12release.conda + sha256: 880116fc694ec36b549849a351f70e00f092e9de19a17862f76184672ae2bc83 + md5: 8493ea4815ffa8ae223182f94a7a6ecc + depends: + - max-core ==25.1.0.dev2025013105 release + - python - fastapi - httpx - huggingface_hub @@ -4983,12 +4983,12 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 106209351 - timestamp: 1738218076586 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025013005-release.conda + size: 108536428 + timestamp: 1738349723783 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025013105-release.conda noarch: python - sha256: 9e6b97d7429aad6a4a95ac02151d17104912563733e0b110422eed4a5b266043 - md5: 56e3f58c601f40f008b72986f6fea6d3 + sha256: 0c8bbcd2d1133b99b54ebff3c8f5461c025c9de38bd8b6a65b5dc01f285dfa22 + md5: 01c6b9f78100a28719df93826b30be0d depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -4998,8 +4998,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130808 - timestamp: 1738214254865 + size: 130813 + timestamp: 1738300734602 - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda sha256: 78c1bbe1723449c52b7a9df1af2ee5f005209f67e40b6e1d3c7619127c43b1c7 md5: 592132998493b3ff25fd7479396e8351 @@ -5009,18 +5009,18 @@ packages: license_family: MIT size: 14465 timestamp: 1733255681319 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025013005-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025013105-release.conda noarch: python - sha256: 117d59275fc24b179b1df699096cb19e1ab08f2e1e17b9a81ad743dd266fc0c7 - md5: beb27e986a758a1a8755673e8c41ef4a + sha256: 122b3ad0404caebf7c5271d75ae5504f228795f529b98be2011d1a1cdc71f93d + md5: f218b84b9f1baa40269eaa760534be98 depends: - - max-core ==25.1.0.dev2025013005 release + - max-core ==25.1.0.dev2025013105 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22933 - timestamp: 1738214254866 + size: 22925 + timestamp: 1738300734602 - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py312h178313f_2.conda sha256: b05bc8252a6e957bf4a776ed5e0e61d1ba88cdc46ccb55890c72cc58b10371f4 md5: 5b5e3267d915a107eca793d52e1b780a @@ -6341,9 +6341,9 @@ packages: license_family: MIT size: 192148 timestamp: 1737454886351 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.0-py312hbf22597_3.conda - sha256: bc303f9b11e04a515f79cd5ad3bfa0e84b9dfec76552626d6263b38789fe6678 - md5: 746ce19f0829ec3e19c93007b1a224d3 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.1-py312hbf22597_0.conda + sha256: 90ec0da0317d3d76990a40c61e1709ef859dd3d8c63838bad2814f46a63c8a2e + md5: 7cec8d0dac15a2d9fea8e49879aa779d depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -6356,11 +6356,11 @@ packages: platform: linux license: BSD-3-Clause license_family: BSD - size: 378126 - timestamp: 1728642454632 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyzmq-26.2.0-py312h2427ae1_3.conda - sha256: cfc4ea87d68b5f0ed64a61f500d5ea0a2310d1f281a4f95afa06c703ea1bdf7d - md5: 1f0779280c3dc1e72cfd86bd1e59791d + size: 382698 + timestamp: 1738271121975 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyzmq-26.2.1-py312h2427ae1_0.conda + sha256: 9558f9330093e5c21b7c04e2e212e19b9b88ad9c808315f12c0765b244018a09 + md5: 0520da8de6870d8ff63e818e927d1524 depends: - libgcc >=13 - libsodium >=1.0.20,<1.0.21.0a0 @@ -6372,14 +6372,14 @@ packages: platform: linux license: BSD-3-Clause license_family: BSD - size: 371730 - timestamp: 1728644030875 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.0-py312hf8a1cbd_3.conda - sha256: 2e0ca1bb9ab3af5d1f9b38548d65be7097ba0246e7e63c908c9b1323df3f45b5 - md5: 7bdaa4c2a84b744ef26c8b2ba65c3d0e + size: 375156 + timestamp: 1738273130727 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.1-py312hf4875e0_0.conda + sha256: 70d398b334668dc597d33e27847ede1b0829a639b9c91ee845355e52c86c2293 + md5: bfbefdb140b546a80827ff7c9d5ac7b8 depends: - __osx >=11.0 - - libcxx >=17 + - libcxx >=18 - libsodium >=1.0.20,<1.0.21.0a0 - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython @@ -6389,8 +6389,8 @@ packages: platform: osx license: BSD-3-Clause license_family: BSD - size: 361674 - timestamp: 1728642457661 + size: 364649 + timestamp: 1738271263898 - conda: https://conda.anaconda.org/conda-forge/linux-64/re2-2024.07.02-h9925aae_2.conda sha256: d213c44958d49ce7e0d4d5b81afec23640cce5016685dbb2d23571a99caa4474 md5: e84ddf12bde691e8ec894b00ea829ddf @@ -6850,9 +6850,9 @@ packages: license_family: BSD size: 110051 timestamp: 1733367480074 -- conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.48.1-pyhd8ed1ab_0.conda - sha256: 92fc16e2449fc81f516d31630fd18c3f33b95bc0c069655a3c0042fbd11a09a4 - md5: 08f62b2c92d1fa610896fc7b16b05031 +- conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.48.2-pyhd8ed1ab_0.conda + sha256: 67b19c3d6befcc538df3e6d8dc7c4a2b6c7e35b7c1666da790cea4166f1b768a + md5: 717807c559e9a30fea4850ab8881adcb depends: - datasets !=2.5.0 - filelock @@ -6868,8 +6868,8 @@ packages: - tqdm >=4.27 license: Apache-2.0 license_family: APACHE - size: 3405362 - timestamp: 1737429408302 + size: 3416794 + timestamp: 1738278628376 - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda sha256: ef695490e895c2ad552c77ec497b899b09fd4ad4ab07edcf5649f5994cf92a35 md5: 170a0398946d8f5b454e592672b6fc20 diff --git a/examples/testing/magic.lock b/examples/testing/magic.lock index 9376f84e75..f45b978de6 100644 --- a/examples/testing/magic.lock +++ b/examples/testing/magic.lock @@ -36,7 +36,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py312h2ec8cdc_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.4-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2024.12.14-hbcca054_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2025.1.31-hbcca054_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.12.14-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py312h06ac9bb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda @@ -49,7 +49,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda - 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.7-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.8-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.12.1-h267a509_2.conda @@ -64,7 +64,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/httptools-0.6.4-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.27.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.28.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_1.conda @@ -133,12 +133,12 @@ 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-25.1.0.dev2025013005-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025013005-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025013005-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025013005-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025013105-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025013105-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025013105-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025013105-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-25.1.0.dev2025013005-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025013105-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 @@ -184,7 +184,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py312h178313f_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.0-py312hbf22597_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.1-py312hbf22597_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/re2-2024.07.02-h9925aae_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/regex-2024.11.6-py312h66e93f0_0.conda @@ -204,7 +204,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.48.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.48.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda @@ -258,7 +258,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/brotli-python-1.1.0-py312h6f74592_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h68df207_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/c-ares-1.34.4-h86ecc28_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2024.12.14-hcefe29a_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2025.1.31-hcefe29a_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.12.14-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cffi-1.17.1-py312hac81daf_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda @@ -271,7 +271,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda - 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.7-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.8-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/freetype-2.12.1-hf0a5ef3_2.conda @@ -286,7 +286,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/httptools-0.6.4-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.27.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.28.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda @@ -356,12 +356,12 @@ 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-25.1.0.dev2025013005-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025013005-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025013005-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025013005-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025013105-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025013105-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025013105-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025013105-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-25.1.0.dev2025013005-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025013105-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 @@ -407,7 +407,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.12-5_cp312.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyyaml-6.0.2-py312hcc812fe_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyzmq-26.2.0-py312h2427ae1_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyzmq-26.2.1-py312h2427ae1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/re2-2024.07.02-haa97905_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8fc344f_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/regex-2024.11.6-py312hb2c0f52_0.conda @@ -427,7 +427,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py312h52516f5_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.48.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.48.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda @@ -480,7 +480,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py312hde4cb15_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.4-h5505292_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2024.12.14-hf0a4a13_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2025.1.31-hf0a4a13_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.12.14-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.1-py312h0fad829_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda @@ -493,7 +493,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda - 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.7-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.8-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/freetype-2.12.1-hadb7bae_2.conda @@ -508,7 +508,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/httptools-0.6.4-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.27.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.28.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda @@ -570,12 +570,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-25.1.0.dev2025013005-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025013005-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025013005-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025013005-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025013105-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025013105-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025013105-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025013105-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-25.1.0.dev2025013005-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025013105-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 @@ -621,7 +621,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-5_cp312.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py312h998013c_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.0-py312hf8a1cbd_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.1-py312hf4875e0_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/re2-2024.07.02-h6589ca4_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h92ec313_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/regex-2024.11.6-py312hea69d52_0.conda @@ -640,7 +640,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.48.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.48.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda @@ -1755,30 +1755,30 @@ packages: license_family: MIT size: 179496 timestamp: 1734208291879 -- conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2024.12.14-hbcca054_0.conda - sha256: 1afd7274cbc9a334d6d0bc62fa760acc7afdaceb0b91a8df370ec01fd75dc7dd - md5: 720523eb0d6a9b0f6120c16b2aa4e7de +- conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2025.1.31-hbcca054_0.conda + sha256: bf832198976d559ab44d6cdb315642655547e26d826e34da67cbee6624cda189 + md5: 19f3a56f68d2fd06c516076bff482c52 arch: x86_64 platform: linux license: ISC - size: 157088 - timestamp: 1734208393264 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2024.12.14-hcefe29a_0.conda - sha256: ad7b43211051332a5a4e788bb4619a2d0ecb5be73e0f76be17f733a87d7effd1 - md5: 83b4ad1e6dc14df5891f3fcfdeb44351 + size: 158144 + timestamp: 1738298224464 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2025.1.31-hcefe29a_0.conda + sha256: 66c6408ee461593cfdb2d78d82e6ed74d04a04ccb51df3ef8a5f35148c9c6eec + md5: 462cb166cd2e26a396f856510a3aff67 arch: aarch64 platform: linux license: ISC - size: 157096 - timestamp: 1734209301744 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2024.12.14-hf0a4a13_0.conda - sha256: 256be633fd0882ccc1a7a32bc278547e1703f85082c0789a87a603ee3ab8fb82 - md5: 7cb381a6783d91902638e4ed1ebd478e + size: 158290 + timestamp: 1738299057652 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2025.1.31-hf0a4a13_0.conda + sha256: 7e12816618173fe70f5c638b72adf4bfd4ddabf27794369bb17871c5bb75b9f9 + md5: 3569d6a9141adc64d2fe4797f3289e06 arch: arm64 platform: osx license: ISC - size: 157091 - timestamp: 1734208344343 + size: 158425 + timestamp: 1738298167688 - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.12.14-pyhd8ed1ab_0.conda sha256: 048c16a9cbcb1fbad02083414d3bc7c1d0eea4b39aee6aa6bf8d1d5089ca8bad md5: 6feb87357ecd66733be3279f16a8c400 @@ -1949,9 +1949,9 @@ packages: license: MIT and PSF-2.0 size: 20486 timestamp: 1733208916977 -- conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.7-pyh29332c3_1.conda - sha256: ac0c357b216e0b37d1a31af200548783d9e5a0413caaee92c5184dbef63b578e - md5: b53637ce62c4bcf3123a2a40f6a3824b +- conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.8-pyh29332c3_0.conda + sha256: 5e1e3d5cf306d9b3b5fe0d45a9e8440e8770ba7e4a5fac1ac847ca693b0dc064 + md5: 753382711adab47269f0bfe994906bc4 depends: - python >=3.9 - starlette >=0.40.0,<0.46.0 @@ -1966,8 +1966,8 @@ packages: - python license: MIT license_family: MIT - size: 77890 - timestamp: 1737647037273 + size: 77940 + timestamp: 1738326226051 - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.7-pyhd8ed1ab_0.conda sha256: 300683731013b7221922339cd40430bb3c2ddeeb658fd7e37f5099ffe64e4db0 md5: d960e0ea9e1c561aa928f6c4439f04c7 @@ -2259,9 +2259,9 @@ packages: license_family: BSD size: 63082 timestamp: 1733663449209 -- conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.27.1-pyhd8ed1ab_0.conda - sha256: 4597d7aa720f4acdddacc27b3f9e8d4336cb79477c53aee2d7ab96d136169cdb - md5: 8c9a53ecd0c3c278efbdac567dd12ed0 +- conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.28.0-pyhd8ed1ab_0.conda + sha256: 3c48ffeb8a425eeba5dfa81a4da4b738a12d2104da0c3b443185029718dd6e48 + md5: 317f31a6fe151756ef10e7ed97a15f8a depends: - filelock - fsspec >=2023.5.0 @@ -2274,8 +2274,8 @@ packages: - typing_extensions >=3.7.4.3 license: Apache-2.0 license_family: APACHE - size: 278363 - timestamp: 1736350219225 + size: 284361 + timestamp: 1738349452337 - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda sha256: 77af6f5fe8b62ca07d09ac60127a30d9069fdc3c68d6b256754d0ffb1f7779f8 md5: 8e6923fc12f1fe8f8c4e5c9f343256ac @@ -4868,48 +4868,48 @@ packages: license_family: BSD size: 24048 timestamp: 1733219945697 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025013005-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025013105-release.conda noarch: python - sha256: 3948fa0d797c3adac4c09a2b806f4eeccd541d76e04538a66d8f12f3e95c32ee - md5: 1e5f3d8c627016a0a2b8982bf17e61af + sha256: 1b8fcd33ceff5e6e87603d1de72c12493fe20e4f5204bc3d061a7e2b8ab33e84 + md5: 74268fafa5367b803cb82c74751fb0f0 depends: - - max-core ==25.1.0.dev2025013005 release - - max-python >=25.1.0.dev2025013005,<26.0a0 - - mojo-jupyter ==25.1.0.dev2025013005 release - - mblack ==25.1.0.dev2025013005 release + - max-core ==25.1.0.dev2025013105 release + - max-python >=25.1.0.dev2025013105,<26.0a0 + - mojo-jupyter ==25.1.0.dev2025013105 release + - mblack ==25.1.0.dev2025013105 release license: LicenseRef-Modular-Proprietary - size: 9915 - timestamp: 1738214254861 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025013005-release.conda - sha256: 4a68142da5f25068e17fd2974a9b94cba4cc3fdbf0de872c2d9a2ce1dc22ea8f - md5: 9604e0c0d7c78ef69d218810c68f74d6 + size: 9918 + timestamp: 1738300734602 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025013105-release.conda + sha256: 1ac416f06cc0adad41d5ca07d55c0e146073c2971ba30696ce561fd7af5afb1a + md5: ddc94cd4ca461791a9e3ae7a571e78ed depends: - - mblack ==25.1.0.dev2025013005 release + - mblack ==25.1.0.dev2025013105 release license: LicenseRef-Modular-Proprietary - size: 243572302 - timestamp: 1738214269238 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025013005-release.conda - sha256: 8c826b3931ad42bbf9a4719f2ff3afcb4bae722dfe295aabb4f9c090de921c01 - md5: 6d328fe99bca688dad8cbde9e87c1409 + size: 243598857 + timestamp: 1738300650444 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025013105-release.conda + sha256: faee2aee06a50c1ca71fc7df91564dafe97986a71474fe0c2694b663bc7b0a1d + md5: 203e66b533a2e81c659276ce2a211b6b depends: - - mblack ==25.1.0.dev2025013005 release + - mblack ==25.1.0.dev2025013105 release license: LicenseRef-Modular-Proprietary - size: 246120276 - timestamp: 1738214254859 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025013005-release.conda - sha256: 2d2e017becec59c1d82022cbf78344f27d3ec9c2c443213ddc2f3cbb5097e4a6 - md5: 6a4347efe0e034458049baed54857b4f + size: 246147380 + timestamp: 1738300734602 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025013105-release.conda + sha256: 12c6501ffb4e951a4e583ef694529e5621ee4c9d06554b0db464de1a37552974 + md5: 5663c30c6ab3e0a29c0fdb08f5634a68 depends: - - mblack ==25.1.0.dev2025013005 release + - mblack ==25.1.0.dev2025013105 release license: LicenseRef-Modular-Proprietary - size: 205294583 - timestamp: 1738218076583 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025013005-3.12release.conda - sha256: 19277c4f68fdfdc727da1c002a257d81147487672aa1ae2619d773a645a779b6 - md5: 18357c34c7e416b960cdfe0a8b2dd7fc - depends: - - max-core ==25.1.0.dev2025013005 release - - python 3.12.* + size: 209002959 + timestamp: 1738349723783 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025013105-3.12release.conda + sha256: d08de32fd4aa12b4593146fc6f268a105b264e279c3a75009870e8d310778ea6 + md5: 27c0957cae6a8620faf67beb5f320aa4 + depends: + - max-core ==25.1.0.dev2025013105 release + - python - fastapi - httpx - huggingface_hub @@ -4929,14 +4929,14 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 120796012 - timestamp: 1738214269247 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025013005-3.12release.conda - sha256: 550c6b48bf15369d19c2624fc90a765ff1d8e3b8a429f8be99a3bed75203c3ce - md5: 6097c00b654e46b6949a0aa981b59f39 - depends: - - max-core ==25.1.0.dev2025013005 release - - python 3.12.* + size: 120809611 + timestamp: 1738300650444 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025013105-3.12release.conda + sha256: 55f72914a83403fac6e20372314774856b769c67f59791a217593be0132e0433 + md5: 1467c9c730b2fba872caba9c325d3a93 + depends: + - max-core ==25.1.0.dev2025013105 release + - python - fastapi - httpx - huggingface_hub @@ -4956,14 +4956,14 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 123320768 - timestamp: 1738214254870 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025013005-3.12release.conda - sha256: c47d8b914f60590ecf3d5b08f8f7a56b258fd586348fd92194d82fdf7886e2b5 - md5: 059a0562bff4464237c2ef721a575c1c - depends: - - max-core ==25.1.0.dev2025013005 release - - python 3.12.* + size: 123341772 + timestamp: 1738300734603 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025013105-3.12release.conda + sha256: 880116fc694ec36b549849a351f70e00f092e9de19a17862f76184672ae2bc83 + md5: 8493ea4815ffa8ae223182f94a7a6ecc + depends: + - max-core ==25.1.0.dev2025013105 release + - python - fastapi - httpx - huggingface_hub @@ -4983,12 +4983,12 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 106209351 - timestamp: 1738218076586 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025013005-release.conda + size: 108536428 + timestamp: 1738349723783 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025013105-release.conda noarch: python - sha256: 9e6b97d7429aad6a4a95ac02151d17104912563733e0b110422eed4a5b266043 - md5: 56e3f58c601f40f008b72986f6fea6d3 + sha256: 0c8bbcd2d1133b99b54ebff3c8f5461c025c9de38bd8b6a65b5dc01f285dfa22 + md5: 01c6b9f78100a28719df93826b30be0d depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -4998,8 +4998,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130808 - timestamp: 1738214254865 + size: 130813 + timestamp: 1738300734602 - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda sha256: 78c1bbe1723449c52b7a9df1af2ee5f005209f67e40b6e1d3c7619127c43b1c7 md5: 592132998493b3ff25fd7479396e8351 @@ -5009,18 +5009,18 @@ packages: license_family: MIT size: 14465 timestamp: 1733255681319 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025013005-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025013105-release.conda noarch: python - sha256: 117d59275fc24b179b1df699096cb19e1ab08f2e1e17b9a81ad743dd266fc0c7 - md5: beb27e986a758a1a8755673e8c41ef4a + sha256: 122b3ad0404caebf7c5271d75ae5504f228795f529b98be2011d1a1cdc71f93d + md5: f218b84b9f1baa40269eaa760534be98 depends: - - max-core ==25.1.0.dev2025013005 release + - max-core ==25.1.0.dev2025013105 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22933 - timestamp: 1738214254866 + size: 22925 + timestamp: 1738300734602 - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py312h178313f_2.conda sha256: b05bc8252a6e957bf4a776ed5e0e61d1ba88cdc46ccb55890c72cc58b10371f4 md5: 5b5e3267d915a107eca793d52e1b780a @@ -6341,9 +6341,9 @@ packages: license_family: MIT size: 192148 timestamp: 1737454886351 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.0-py312hbf22597_3.conda - sha256: bc303f9b11e04a515f79cd5ad3bfa0e84b9dfec76552626d6263b38789fe6678 - md5: 746ce19f0829ec3e19c93007b1a224d3 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.1-py312hbf22597_0.conda + sha256: 90ec0da0317d3d76990a40c61e1709ef859dd3d8c63838bad2814f46a63c8a2e + md5: 7cec8d0dac15a2d9fea8e49879aa779d depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -6356,11 +6356,11 @@ packages: platform: linux license: BSD-3-Clause license_family: BSD - size: 378126 - timestamp: 1728642454632 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyzmq-26.2.0-py312h2427ae1_3.conda - sha256: cfc4ea87d68b5f0ed64a61f500d5ea0a2310d1f281a4f95afa06c703ea1bdf7d - md5: 1f0779280c3dc1e72cfd86bd1e59791d + size: 382698 + timestamp: 1738271121975 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyzmq-26.2.1-py312h2427ae1_0.conda + sha256: 9558f9330093e5c21b7c04e2e212e19b9b88ad9c808315f12c0765b244018a09 + md5: 0520da8de6870d8ff63e818e927d1524 depends: - libgcc >=13 - libsodium >=1.0.20,<1.0.21.0a0 @@ -6372,14 +6372,14 @@ packages: platform: linux license: BSD-3-Clause license_family: BSD - size: 371730 - timestamp: 1728644030875 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.0-py312hf8a1cbd_3.conda - sha256: 2e0ca1bb9ab3af5d1f9b38548d65be7097ba0246e7e63c908c9b1323df3f45b5 - md5: 7bdaa4c2a84b744ef26c8b2ba65c3d0e + size: 375156 + timestamp: 1738273130727 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.1-py312hf4875e0_0.conda + sha256: 70d398b334668dc597d33e27847ede1b0829a639b9c91ee845355e52c86c2293 + md5: bfbefdb140b546a80827ff7c9d5ac7b8 depends: - __osx >=11.0 - - libcxx >=17 + - libcxx >=18 - libsodium >=1.0.20,<1.0.21.0a0 - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython @@ -6389,8 +6389,8 @@ packages: platform: osx license: BSD-3-Clause license_family: BSD - size: 361674 - timestamp: 1728642457661 + size: 364649 + timestamp: 1738271263898 - conda: https://conda.anaconda.org/conda-forge/linux-64/re2-2024.07.02-h9925aae_2.conda sha256: d213c44958d49ce7e0d4d5b81afec23640cce5016685dbb2d23571a99caa4474 md5: e84ddf12bde691e8ec894b00ea829ddf @@ -6850,9 +6850,9 @@ packages: license_family: BSD size: 110051 timestamp: 1733367480074 -- conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.48.1-pyhd8ed1ab_0.conda - sha256: 92fc16e2449fc81f516d31630fd18c3f33b95bc0c069655a3c0042fbd11a09a4 - md5: 08f62b2c92d1fa610896fc7b16b05031 +- conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.48.2-pyhd8ed1ab_0.conda + sha256: 67b19c3d6befcc538df3e6d8dc7c4a2b6c7e35b7c1666da790cea4166f1b768a + md5: 717807c559e9a30fea4850ab8881adcb depends: - datasets !=2.5.0 - filelock @@ -6868,8 +6868,8 @@ packages: - tqdm >=4.27 license: Apache-2.0 license_family: APACHE - size: 3405362 - timestamp: 1737429408302 + size: 3416794 + timestamp: 1738278628376 - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda sha256: ef695490e895c2ad552c77ec497b899b09fd4ad4ab07edcf5649f5994cf92a35 md5: 170a0398946d8f5b454e592672b6fc20 diff --git a/magic.lock b/magic.lock index cb24a169f8..17811730d2 100644 --- a/magic.lock +++ b/magic.lock @@ -36,7 +36,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py312h2ec8cdc_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.4-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2024.12.14-hbcca054_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2025.1.31-hbcca054_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.12.14-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py312h06ac9bb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda @@ -49,7 +49,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda - 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.7-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.8-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.12.1-h267a509_2.conda @@ -64,7 +64,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/httptools-0.6.4-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.27.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.28.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_1.conda @@ -134,12 +134,12 @@ 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-25.1.0.dev2025013005-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025013005-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025013005-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025013005-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025013105-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025013105-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025013105-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025013105-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-25.1.0.dev2025013005-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025013105-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 @@ -185,7 +185,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py312h178313f_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.0-py312hbf22597_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.1-py312hbf22597_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/re2-2024.07.02-h9925aae_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/regex-2024.11.6-py312h66e93f0_0.conda @@ -205,7 +205,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.48.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.48.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda @@ -259,7 +259,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/brotli-python-1.1.0-py312h6f74592_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h68df207_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/c-ares-1.34.4-h86ecc28_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2024.12.14-hcefe29a_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2025.1.31-hcefe29a_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.12.14-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cffi-1.17.1-py312hac81daf_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda @@ -272,7 +272,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda - 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.7-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.8-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/freetype-2.12.1-hf0a5ef3_2.conda @@ -287,7 +287,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/httptools-0.6.4-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.27.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.28.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda @@ -358,12 +358,12 @@ 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-25.1.0.dev2025013005-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025013005-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025013005-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025013005-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025013105-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025013105-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025013105-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025013105-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-25.1.0.dev2025013005-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025013105-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 @@ -409,7 +409,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.12-5_cp312.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyyaml-6.0.2-py312hcc812fe_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyzmq-26.2.0-py312h2427ae1_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyzmq-26.2.1-py312h2427ae1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/re2-2024.07.02-haa97905_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8fc344f_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/regex-2024.11.6-py312hb2c0f52_0.conda @@ -429,7 +429,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py312h52516f5_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.48.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.48.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda @@ -482,7 +482,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py312hde4cb15_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.4-h5505292_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2024.12.14-hf0a4a13_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2025.1.31-hf0a4a13_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.12.14-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.1-py312h0fad829_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda @@ -495,7 +495,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda - 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.7-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.8-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/freetype-2.12.1-hadb7bae_2.conda @@ -510,7 +510,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/httptools-0.6.4-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.27.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.28.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda @@ -573,12 +573,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-25.1.0.dev2025013005-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025013005-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025013005-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025013005-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025013105-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025013105-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025013105-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025013105-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-25.1.0.dev2025013005-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025013105-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 @@ -624,7 +624,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-5_cp312.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py312h998013c_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.0-py312hf8a1cbd_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.1-py312hf4875e0_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/re2-2024.07.02-h6589ca4_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h92ec313_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/regex-2024.11.6-py312hea69d52_0.conda @@ -643,7 +643,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.48.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.48.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda @@ -1758,30 +1758,30 @@ packages: license_family: MIT size: 179496 timestamp: 1734208291879 -- conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2024.12.14-hbcca054_0.conda - sha256: 1afd7274cbc9a334d6d0bc62fa760acc7afdaceb0b91a8df370ec01fd75dc7dd - md5: 720523eb0d6a9b0f6120c16b2aa4e7de +- conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2025.1.31-hbcca054_0.conda + sha256: bf832198976d559ab44d6cdb315642655547e26d826e34da67cbee6624cda189 + md5: 19f3a56f68d2fd06c516076bff482c52 arch: x86_64 platform: linux license: ISC - size: 157088 - timestamp: 1734208393264 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2024.12.14-hcefe29a_0.conda - sha256: ad7b43211051332a5a4e788bb4619a2d0ecb5be73e0f76be17f733a87d7effd1 - md5: 83b4ad1e6dc14df5891f3fcfdeb44351 + size: 158144 + timestamp: 1738298224464 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2025.1.31-hcefe29a_0.conda + sha256: 66c6408ee461593cfdb2d78d82e6ed74d04a04ccb51df3ef8a5f35148c9c6eec + md5: 462cb166cd2e26a396f856510a3aff67 arch: aarch64 platform: linux license: ISC - size: 157096 - timestamp: 1734209301744 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2024.12.14-hf0a4a13_0.conda - sha256: 256be633fd0882ccc1a7a32bc278547e1703f85082c0789a87a603ee3ab8fb82 - md5: 7cb381a6783d91902638e4ed1ebd478e + size: 158290 + timestamp: 1738299057652 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2025.1.31-hf0a4a13_0.conda + sha256: 7e12816618173fe70f5c638b72adf4bfd4ddabf27794369bb17871c5bb75b9f9 + md5: 3569d6a9141adc64d2fe4797f3289e06 arch: arm64 platform: osx license: ISC - size: 157091 - timestamp: 1734208344343 + size: 158425 + timestamp: 1738298167688 - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.12.14-pyhd8ed1ab_0.conda sha256: 048c16a9cbcb1fbad02083414d3bc7c1d0eea4b39aee6aa6bf8d1d5089ca8bad md5: 6feb87357ecd66733be3279f16a8c400 @@ -1952,9 +1952,9 @@ packages: license: MIT and PSF-2.0 size: 20486 timestamp: 1733208916977 -- conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.7-pyh29332c3_1.conda - sha256: ac0c357b216e0b37d1a31af200548783d9e5a0413caaee92c5184dbef63b578e - md5: b53637ce62c4bcf3123a2a40f6a3824b +- conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.8-pyh29332c3_0.conda + sha256: 5e1e3d5cf306d9b3b5fe0d45a9e8440e8770ba7e4a5fac1ac847ca693b0dc064 + md5: 753382711adab47269f0bfe994906bc4 depends: - python >=3.9 - starlette >=0.40.0,<0.46.0 @@ -1969,8 +1969,8 @@ packages: - python license: MIT license_family: MIT - size: 77890 - timestamp: 1737647037273 + size: 77940 + timestamp: 1738326226051 - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.7-pyhd8ed1ab_0.conda sha256: 300683731013b7221922339cd40430bb3c2ddeeb658fd7e37f5099ffe64e4db0 md5: d960e0ea9e1c561aa928f6c4439f04c7 @@ -2262,9 +2262,9 @@ packages: license_family: BSD size: 63082 timestamp: 1733663449209 -- conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.27.1-pyhd8ed1ab_0.conda - sha256: 4597d7aa720f4acdddacc27b3f9e8d4336cb79477c53aee2d7ab96d136169cdb - md5: 8c9a53ecd0c3c278efbdac567dd12ed0 +- conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.28.0-pyhd8ed1ab_0.conda + sha256: 3c48ffeb8a425eeba5dfa81a4da4b738a12d2104da0c3b443185029718dd6e48 + md5: 317f31a6fe151756ef10e7ed97a15f8a depends: - filelock - fsspec >=2023.5.0 @@ -2277,8 +2277,8 @@ packages: - typing_extensions >=3.7.4.3 license: Apache-2.0 license_family: APACHE - size: 278363 - timestamp: 1736350219225 + size: 284361 + timestamp: 1738349452337 - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda sha256: 77af6f5fe8b62ca07d09ac60127a30d9069fdc3c68d6b256754d0ffb1f7779f8 md5: 8e6923fc12f1fe8f8c4e5c9f343256ac @@ -4880,48 +4880,48 @@ packages: license_family: BSD size: 24048 timestamp: 1733219945697 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025013005-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025013105-release.conda noarch: python - sha256: 3948fa0d797c3adac4c09a2b806f4eeccd541d76e04538a66d8f12f3e95c32ee - md5: 1e5f3d8c627016a0a2b8982bf17e61af + sha256: 1b8fcd33ceff5e6e87603d1de72c12493fe20e4f5204bc3d061a7e2b8ab33e84 + md5: 74268fafa5367b803cb82c74751fb0f0 depends: - - max-core ==25.1.0.dev2025013005 release - - max-python >=25.1.0.dev2025013005,<26.0a0 - - mojo-jupyter ==25.1.0.dev2025013005 release - - mblack ==25.1.0.dev2025013005 release + - max-core ==25.1.0.dev2025013105 release + - max-python >=25.1.0.dev2025013105,<26.0a0 + - mojo-jupyter ==25.1.0.dev2025013105 release + - mblack ==25.1.0.dev2025013105 release license: LicenseRef-Modular-Proprietary - size: 9915 - timestamp: 1738214254861 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025013005-release.conda - sha256: 4a68142da5f25068e17fd2974a9b94cba4cc3fdbf0de872c2d9a2ce1dc22ea8f - md5: 9604e0c0d7c78ef69d218810c68f74d6 + size: 9918 + timestamp: 1738300734602 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025013105-release.conda + sha256: 1ac416f06cc0adad41d5ca07d55c0e146073c2971ba30696ce561fd7af5afb1a + md5: ddc94cd4ca461791a9e3ae7a571e78ed depends: - - mblack ==25.1.0.dev2025013005 release + - mblack ==25.1.0.dev2025013105 release license: LicenseRef-Modular-Proprietary - size: 243572302 - timestamp: 1738214269238 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025013005-release.conda - sha256: 8c826b3931ad42bbf9a4719f2ff3afcb4bae722dfe295aabb4f9c090de921c01 - md5: 6d328fe99bca688dad8cbde9e87c1409 + size: 243598857 + timestamp: 1738300650444 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025013105-release.conda + sha256: faee2aee06a50c1ca71fc7df91564dafe97986a71474fe0c2694b663bc7b0a1d + md5: 203e66b533a2e81c659276ce2a211b6b depends: - - mblack ==25.1.0.dev2025013005 release + - mblack ==25.1.0.dev2025013105 release license: LicenseRef-Modular-Proprietary - size: 246120276 - timestamp: 1738214254859 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025013005-release.conda - sha256: 2d2e017becec59c1d82022cbf78344f27d3ec9c2c443213ddc2f3cbb5097e4a6 - md5: 6a4347efe0e034458049baed54857b4f + size: 246147380 + timestamp: 1738300734602 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025013105-release.conda + sha256: 12c6501ffb4e951a4e583ef694529e5621ee4c9d06554b0db464de1a37552974 + md5: 5663c30c6ab3e0a29c0fdb08f5634a68 depends: - - mblack ==25.1.0.dev2025013005 release + - mblack ==25.1.0.dev2025013105 release license: LicenseRef-Modular-Proprietary - size: 205294583 - timestamp: 1738218076583 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025013005-3.12release.conda - sha256: 19277c4f68fdfdc727da1c002a257d81147487672aa1ae2619d773a645a779b6 - md5: 18357c34c7e416b960cdfe0a8b2dd7fc - depends: - - max-core ==25.1.0.dev2025013005 release - - python 3.12.* + size: 209002959 + timestamp: 1738349723783 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025013105-3.12release.conda + sha256: d08de32fd4aa12b4593146fc6f268a105b264e279c3a75009870e8d310778ea6 + md5: 27c0957cae6a8620faf67beb5f320aa4 + depends: + - max-core ==25.1.0.dev2025013105 release + - python - fastapi - httpx - huggingface_hub @@ -4941,14 +4941,14 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 120796012 - timestamp: 1738214269247 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025013005-3.12release.conda - sha256: 550c6b48bf15369d19c2624fc90a765ff1d8e3b8a429f8be99a3bed75203c3ce - md5: 6097c00b654e46b6949a0aa981b59f39 - depends: - - max-core ==25.1.0.dev2025013005 release - - python 3.12.* + size: 120809611 + timestamp: 1738300650444 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025013105-3.12release.conda + sha256: 55f72914a83403fac6e20372314774856b769c67f59791a217593be0132e0433 + md5: 1467c9c730b2fba872caba9c325d3a93 + depends: + - max-core ==25.1.0.dev2025013105 release + - python - fastapi - httpx - huggingface_hub @@ -4968,14 +4968,14 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 123320768 - timestamp: 1738214254870 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025013005-3.12release.conda - sha256: c47d8b914f60590ecf3d5b08f8f7a56b258fd586348fd92194d82fdf7886e2b5 - md5: 059a0562bff4464237c2ef721a575c1c - depends: - - max-core ==25.1.0.dev2025013005 release - - python 3.12.* + size: 123341772 + timestamp: 1738300734603 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025013105-3.12release.conda + sha256: 880116fc694ec36b549849a351f70e00f092e9de19a17862f76184672ae2bc83 + md5: 8493ea4815ffa8ae223182f94a7a6ecc + depends: + - max-core ==25.1.0.dev2025013105 release + - python - fastapi - httpx - huggingface_hub @@ -4995,12 +4995,12 @@ packages: - uvicorn - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 106209351 - timestamp: 1738218076586 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025013005-release.conda + size: 108536428 + timestamp: 1738349723783 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025013105-release.conda noarch: python - sha256: 9e6b97d7429aad6a4a95ac02151d17104912563733e0b110422eed4a5b266043 - md5: 56e3f58c601f40f008b72986f6fea6d3 + sha256: 0c8bbcd2d1133b99b54ebff3c8f5461c025c9de38bd8b6a65b5dc01f285dfa22 + md5: 01c6b9f78100a28719df93826b30be0d depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -5010,8 +5010,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130808 - timestamp: 1738214254865 + size: 130813 + timestamp: 1738300734602 - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda sha256: 78c1bbe1723449c52b7a9df1af2ee5f005209f67e40b6e1d3c7619127c43b1c7 md5: 592132998493b3ff25fd7479396e8351 @@ -5021,18 +5021,18 @@ packages: license_family: MIT size: 14465 timestamp: 1733255681319 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025013005-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025013105-release.conda noarch: python - sha256: 117d59275fc24b179b1df699096cb19e1ab08f2e1e17b9a81ad743dd266fc0c7 - md5: beb27e986a758a1a8755673e8c41ef4a + sha256: 122b3ad0404caebf7c5271d75ae5504f228795f529b98be2011d1a1cdc71f93d + md5: f218b84b9f1baa40269eaa760534be98 depends: - - max-core ==25.1.0.dev2025013005 release + - max-core ==25.1.0.dev2025013105 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22933 - timestamp: 1738214254866 + size: 22925 + timestamp: 1738300734602 - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py312h178313f_2.conda sha256: b05bc8252a6e957bf4a776ed5e0e61d1ba88cdc46ccb55890c72cc58b10371f4 md5: 5b5e3267d915a107eca793d52e1b780a @@ -6353,9 +6353,9 @@ packages: license_family: MIT size: 192148 timestamp: 1737454886351 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.0-py312hbf22597_3.conda - sha256: bc303f9b11e04a515f79cd5ad3bfa0e84b9dfec76552626d6263b38789fe6678 - md5: 746ce19f0829ec3e19c93007b1a224d3 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.1-py312hbf22597_0.conda + sha256: 90ec0da0317d3d76990a40c61e1709ef859dd3d8c63838bad2814f46a63c8a2e + md5: 7cec8d0dac15a2d9fea8e49879aa779d depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -6368,11 +6368,11 @@ packages: platform: linux license: BSD-3-Clause license_family: BSD - size: 378126 - timestamp: 1728642454632 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyzmq-26.2.0-py312h2427ae1_3.conda - sha256: cfc4ea87d68b5f0ed64a61f500d5ea0a2310d1f281a4f95afa06c703ea1bdf7d - md5: 1f0779280c3dc1e72cfd86bd1e59791d + size: 382698 + timestamp: 1738271121975 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyzmq-26.2.1-py312h2427ae1_0.conda + sha256: 9558f9330093e5c21b7c04e2e212e19b9b88ad9c808315f12c0765b244018a09 + md5: 0520da8de6870d8ff63e818e927d1524 depends: - libgcc >=13 - libsodium >=1.0.20,<1.0.21.0a0 @@ -6384,14 +6384,14 @@ packages: platform: linux license: BSD-3-Clause license_family: BSD - size: 371730 - timestamp: 1728644030875 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.0-py312hf8a1cbd_3.conda - sha256: 2e0ca1bb9ab3af5d1f9b38548d65be7097ba0246e7e63c908c9b1323df3f45b5 - md5: 7bdaa4c2a84b744ef26c8b2ba65c3d0e + size: 375156 + timestamp: 1738273130727 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.1-py312hf4875e0_0.conda + sha256: 70d398b334668dc597d33e27847ede1b0829a639b9c91ee845355e52c86c2293 + md5: bfbefdb140b546a80827ff7c9d5ac7b8 depends: - __osx >=11.0 - - libcxx >=17 + - libcxx >=18 - libsodium >=1.0.20,<1.0.21.0a0 - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython @@ -6401,8 +6401,8 @@ packages: platform: osx license: BSD-3-Clause license_family: BSD - size: 361674 - timestamp: 1728642457661 + size: 364649 + timestamp: 1738271263898 - conda: https://conda.anaconda.org/conda-forge/linux-64/re2-2024.07.02-h9925aae_2.conda sha256: d213c44958d49ce7e0d4d5b81afec23640cce5016685dbb2d23571a99caa4474 md5: e84ddf12bde691e8ec894b00ea829ddf @@ -6862,9 +6862,9 @@ packages: license_family: BSD size: 110051 timestamp: 1733367480074 -- conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.48.1-pyhd8ed1ab_0.conda - sha256: 92fc16e2449fc81f516d31630fd18c3f33b95bc0c069655a3c0042fbd11a09a4 - md5: 08f62b2c92d1fa610896fc7b16b05031 +- conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.48.2-pyhd8ed1ab_0.conda + sha256: 67b19c3d6befcc538df3e6d8dc7c4a2b6c7e35b7c1666da790cea4166f1b768a + md5: 717807c559e9a30fea4850ab8881adcb depends: - datasets !=2.5.0 - filelock @@ -6880,8 +6880,8 @@ packages: - tqdm >=4.27 license: Apache-2.0 license_family: APACHE - size: 3405362 - timestamp: 1737429408302 + size: 3416794 + timestamp: 1738278628376 - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda sha256: ef695490e895c2ad552c77ec497b899b09fd4ad4ab07edcf5649f5994cf92a35 md5: 170a0398946d8f5b454e592672b6fc20 From 1e21f2fb615c1867b7bcf89ad9cd8cbb5254f242 Mon Sep 17 00:00:00 2001 From: Ken Jones <165197230+KenJones-Modular@users.noreply.github.com> Date: Thu, 30 Jan 2025 22:29:17 -0800 Subject: [PATCH 327/509] [docs] Delete old Mojo examples notebooks MODULAR_ORIG_COMMIT_REV_ID: 690468d1b56a6ca123321037c36f5b478cf91bdb --- examples/README.md | 29 +- examples/notebooks/BoolMLIR.ipynb | 613 ------------- examples/notebooks/Mandelbrot.ipynb | 385 -------- examples/notebooks/Matmul.ipynb | 931 -------------------- examples/notebooks/README.md | 134 --- examples/notebooks/RayTracing.ipynb | 1022 ---------------------- examples/notebooks/images/background.png | Bin 607043 -> 0 bytes examples/notebooks/pixi.toml | 13 - 8 files changed, 17 insertions(+), 3110 deletions(-) delete mode 100644 examples/notebooks/BoolMLIR.ipynb delete mode 100644 examples/notebooks/Mandelbrot.ipynb delete mode 100644 examples/notebooks/Matmul.ipynb delete mode 100644 examples/notebooks/README.md delete mode 100644 examples/notebooks/RayTracing.ipynb delete mode 100644 examples/notebooks/images/background.png delete mode 100644 examples/notebooks/pixi.toml diff --git a/examples/README.md b/examples/README.md index 63647c925c..6c651cd92d 100644 --- a/examples/README.md +++ b/examples/README.md @@ -1,36 +1,41 @@ # Mojo code examples -A collection of sample programs and Mojo notebooks written in the -[Mojo](https://docs.modular.com/mojo/programming-manual.html) programming language. +A collection of sample programs written in the +[Mojo](https://docs.modular.com/mojo/manual/) programming language. ## Getting Started -Access a Mojo programming environment available from the -Mojo product [page](https://www.modular.com/mojo). +The easiest way to get started with Mojo is to install the Magic package and +virtual environment manager. By following the instructions in [Get started with +Magic](https://docs.modular.com/magic/), you can quickly install Magic and use +it to create a virtual environment for Mojo programming. Alternatively, you can +follow the instructions for how to [Add MAX/Mojo to a conda +project](https://docs.modular.com/magic/conda). -Git clone the repository of Mojo samples using the command below: +After you have set up a Mojo programming environment, you can then use `git` to +clone this repository of Mojo samples using the command below: ```bash -git clone https://github.com/modularml/mojo.git +git clone https://github.com/modular/mojo.git ``` ## Running If you're using [`magic`](https://docs.modular.com/magic), navigate into -the examples directory and use `magic run`. For example: +the `examples` directory and use `magic run` to invoke `mojo` and run the basic +example programs. For example: ```bash magic run mojo matmul.mojo ``` -You can run the Mojo notebooks using [JupyterLab or Visual Studio -Code](notebooks/README.md) with the Mojo extension available on the Marketplace. +You'll also find several complete Mojo projects as subdirectories of the +`examples` directory. ## License -The Mojo examples and notebooks in this repository are licensed -under the Apache License v2.0 with LLVM Exceptions -(see the LLVM [License](https://llvm.org/LICENSE.txt)). +The Mojo examples in this repository are licensed under the Apache License v2.0 +with LLVM Exceptions (see the LLVM [License](https://llvm.org/LICENSE.txt)). ## Contributing diff --git a/examples/notebooks/BoolMLIR.ipynb b/examples/notebooks/BoolMLIR.ipynb deleted file mode 100644 index 514770e9e8..0000000000 --- a/examples/notebooks/BoolMLIR.ipynb +++ /dev/null @@ -1,613 +0,0 @@ -{ - "cells": [ - { - "cell_type": "raw", - "metadata": {}, - "source": [ - "---\n", - "title: Low-level IR in Mojo\n", - "description: Learn how to use low-level primitives to define your own boolean type in Mojo.\n", - "website:\n", - " open-graph:\n", - " image: /static/images/mojo-social-card.png\n", - " twitter-card:\n", - " image: /static/images/mojo-social-card.png\n", - "---" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "[//]: # REMOVE_FOR_WEBSITE\n", - "*Copyright 2023 Modular, Inc: Licensed under the Apache License v2.0 with LLVM Exceptions.*" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "[//]: # REMOVE_FOR_WEBSITE\n", - "# Low-level IR in Mojo" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "tags": [] - }, - "source": [ - "Mojo is a high-level programming language with an extensive set of modern features. Mojo also provides you, the programmer, access to all of the low-level primitives that you need to write powerful -- yet zero-cost -- abstractions.\n", - "\n", - "These primitives are implemented in [MLIR](https://mlir.llvm.org), an extensible intermediate representation (IR) format for compiler design. Many different programming languages and compilers translate their source programs into MLIR, and because Mojo provides direct access to MLIR features, this means Mojo programs can enjoy the benefits of each of these tools.\n", - "\n", - "Going one step further, Mojo's unique combination of zero-cost abstractions with MLIR interoperability means that Mojo programs can take full advantage of *anything* that interfaces with MLIR. While this isn't something normal Mojo programmers may ever need to do, it's an extremely powerful capability when extending a system to interface with a new datatype, or an esoteric new accelerator feature.\n", - "\n", - "To illustrate these ideas, we'll implement a boolean type in Mojo below, which we'll call `OurBool`. We'll make extensive use of MLIR, so let's begin with a short primer.\n" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "tags": [] - }, - "source": [ - "## What is MLIR?\n", - "\n", - "MLIR is an intermediate representation of a program, not unlike an assembly language, in which a sequential set of instructions operate on in-memory values.\n", - "\n", - "More importantly, MLIR is modular and extensible. MLIR is composed of an ever-growing number of \"dialects.\" Each dialect defines operations and optimizations: for example, the ['math' dialect](https://mlir.llvm.org/docs/Dialects/MathOps/) provides mathematical operations such as sine and cosine, the ['amdgpu' dialect](https://mlir.llvm.org/docs/Dialects/AMDGPU/) provides operations specific to AMD processors, and so on.\n", - "\n", - "Each of MLIR's dialects can interoperate with the others. This is why MLIR is said to unlock heterogeneous compute: as newer, faster processors and architectures are developed, new MLIR dialects are implemented to generate optimal code for those environments. Any new MLIR dialect can be translated seamlessly into other dialects, so as more get added, all existing MLIR becomes more powerful.\n", - "\n", - "This means that our own custom types, such as the `OurBool` type we'll create below, can be used to provide programmers with a high-level, Python-like interface. But \"under the covers,\" Mojo and MLIR will optimize our convenient, high-level types for each new processor that appears in the future.\n", - "\n", - "There's much more to write about why MLIR is such a revolutionary technology, but let's get back to Mojo and defining the `OurBool` type. There will be opportunities to learn more about MLIR along the way." - ] - }, - { - "cell_type": "markdown", - "metadata": { - "tags": [] - }, - "source": [ - "## Defining the `OurBool` type\n", - "\n", - "We can use Mojo's `struct` keyword to define a new type `OurBool`:" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "struct OurBool:\n", - " var value: __mlir_type.i1" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "A boolean can represent 0 or 1, \"true\" or \"false.\" To store this information, `OurBool` has a single member, called `value`. Its type is represented *directly in MLIR*, using the MLIR builtin type [`i1`](https://mlir.llvm.org/docs/Dialects/Builtin/#integertype). In fact, you can use any MLIR type in Mojo, by prefixing the type name with `__mlir_type`.\n", - "\n", - "As we'll see below, representing our boolean value with `i1` will allow us to utilize all of the MLIR operations and optimizations that interface with the `i1` type -- and there are many of them!\n", - "\n", - "Having defined `OurBool`, we can now declare a variable of this type:" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [], - "source": [ - "fn uninitialized_our_bool():\n", - " var a: OurBool\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Leveraging MLIR\n", - "\n", - "Naturally, we might next try to create an instance of `OurBool`. Attempting to do so at this point, however, results in an error:\n", - "\n", - "```mojo\n", - "var a = OurBool() # error: 'OurBool' does not implement an '__init__' method\n", - "```\n", - "\n", - "As in Python, `__init__` is a [special method](https://docs.python.org/3/reference/datamodel.html#specialnames) that can be defined to customize the behavior of a type. We can implement an `__init__` method that takes no arguments, and returns an `OurBool` with a \"false\" value." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "struct OurBool:\n", - " var value: __mlir_type.i1\n", - "\n", - " fn __init__(out self):\n", - " self.value = __mlir_op.`index.bool.constant`[\n", - " value=__mlir_attr.false,\n", - " ]()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "To initialize the underlying `i1` value, we use an MLIR operation from its ['index' dialect](https://mlir.llvm.org/docs/Dialects/IndexOps/), called [`index.bool.constant`](https://mlir.llvm.org/docs/Dialects/IndexOps/#indexboolconstant-mlirindexboolconstantop).\n", - "\n", - "MLIR's 'index' dialect provides us with operations for manipulating builtin MLIR types, such as the `i1` we use to store the value of `OurBool`. The `index.bool.constant` operation takes a `true` or `false` compile-time constant as input, and produces a runtime output of type `i1` with the given value.\n", - "\n", - "So, as shown above, in addition to any MLIR type, Mojo also provides direct access to any MLIR operation via the `__mlir_op` prefix, and to any attribute via the `__mlir_attr` prefix. MLIR attributes are used to represent compile-time constants.\n", - "\n", - "As you can see above, the syntax for interacting with MLIR isn't always pretty: MLIR attributes are passed in between square brackets `[...]`, and the operation is executed via a parentheses suffix `(...)`, which can take runtime argument values. However, most Mojo programmers will not need to access MLIR directly, and for the few that do, this \"ugly\" syntax gives them superpowers: they can define high-level types that are easy to use, but that internally plug into MLIR and its powerful system of dialects.\n", - "\n", - "We think this is very exciting, but let's bring things back down to earth: having defined an `__init__` method, we can now create an instance of our `OurBool` type:" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [], - "source": [ - "var b = OurBool()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Value semantics in Mojo\n", - "\n", - "We can now instantiate `OurBool`, but using it is another story:\n", - "\n", - "```mojo\n", - "var a = OurBool()\n", - "var b = a # error: 'OurBool' does not implement the '__copyinit__' method\n", - "```\n", - "\n", - "Mojo uses \"value semantics\" by default, meaning that it expects to create a copy of `a` when assigning to `b`. However, Mojo doesn't make any assumptions about *how* to copy `OurBool`, or its underlying `i1` value. The error indicates that we should implement a `__copyinit__` method, which would implement the copying logic.\n", - "\n", - "In our case, however, `OurBool` is a very simple type, with only one \"trivially copyable\" member. We can use a decorator to tell the Mojo compiler that, saving us the trouble of defining our own `__copyinit__` boilerplate. Trivially copyable types must implement an `__init__` method that returns an instance of themselves, so we must also rewrite our initializer slightly." - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [], - "source": [ - "@register_passable(\"trivial\")\n", - "struct OurBool:\n", - " var value: __mlir_type.i1\n", - "\n", - " fn __init__(out self):\n", - " self.value = __mlir_op.`index.bool.constant`[\n", - " value=__mlir_attr.false,\n", - " ]()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We can now copy `OurBool` as we please:" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [], - "source": [ - "var c = OurBool()\n", - "var d = c" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Compile-time constants\n", - "\n", - "It's not very useful to have a boolean type that can only represent \"false.\" Let's define compile-time constants that represent true and false `OurBool` values.\n", - "\n", - "First, let's define another `__init__` constructor for `OurBool` that takes its `i1` value as an argument:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "@register_passable(\"trivial\")\n", - "struct OurBool:\n", - " var value: __mlir_type.i1\n", - "\n", - " # ...\n", - "\n", - " @implicit\n", - " fn __init__(out self, value: __mlir_type.i1):\n", - " self.value = value" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "This allows us to define compile-time constant `OurBool` values, using the `alias` keyword. First, let's define `OurTrue`:" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [], - "source": [ - "alias OurTrue = OurBool(__mlir_attr.true)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Here we're passing in an MLIR compile-time constant value of `true`, which has the `i1` type that our new `__init__` constructor expects. We can use a slightly different syntax for `OurFalse`:" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "alias OurFalse: OurBool = __mlir_attr.false" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "`OurFalse` is declared to be of type `OurBool`, and then assigned an `i1` type -- in this case, the `OurBool` constructor we added is called implicitly.\n", - "\n", - "With true and false constants, we can also simplify our original `__init__` constructor for `OurBool`. Instead of constructing an MLIR value, we can simply return our `OurFalse` constant:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "alias OurTrue = OurBool(__mlir_attr.true)\n", - "alias OurFalse: OurBool = __mlir_attr.false\n", - "\n", - "\n", - "@register_passable(\"trivial\")\n", - "struct OurBool:\n", - " var value: __mlir_type.i1\n", - "\n", - " # We can simplify our no-argument constructor:\n", - " fn __init__(out self):\n", - " self = OurFalse\n", - "\n", - " @implicit\n", - " fn __init__(out self, value: __mlir_type.i1):\n", - " self.value = value" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Note also that we can define `OurTrue` before we define `OurBool`. The Mojo compiler is smart enough to figure this out.\n", - "\n", - "With these constants, we can now define variables with both true and false values of `OurBool`:" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "var e = OurTrue\n", - "var f = OurFalse" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Implementing `__bool__`\n", - "\n", - "Of course, the reason booleans are ubiquitous in programming is because they can be used for program control flow. However, if we attempt to use `OurBool` in this way, we get an error:\n", - "\n", - "```mojo\n", - "var a = OurTrue\n", - "if a: print(\"It's true!\") # error: 'OurBool' does not implement the '__bool__' method\n", - "```\n", - "\n", - "When Mojo attempts to execute our program, it needs to be able to determine whether to print \"It's true!\" or not. It doesn't yet know that `OurBool` represents a boolean value -- Mojo just sees a struct that is 1 bit in size. However, Mojo also provides interfaces that convey boolean qualities, which are the same as those used by Mojo's standard library types, like `Bool`. In practice, this means Mojo gives you full control: any type that's packaged with the language's standard library is one for which you could define your own version.\n", - "\n", - "In the case of our error message, Mojo is telling us that implementing a `__bool__` method on `OurBool` would signify that it has boolean qualities.\n", - "\n", - "Thankfully, `__bool__` is simple to implement: Mojo's standard library and builtin types are all implemented on top of MLIR, and so the builtin `Bool` type also defines a constructor that takes an `i1`, just like `OurBool`:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "alias OurTrue = OurBool(__mlir_attr.true)\n", - "alias OurFalse: OurBool = __mlir_attr.false\n", - "\n", - "\n", - "@register_passable(\"trivial\")\n", - "struct OurBool:\n", - " var value: __mlir_type.i1\n", - "\n", - " # ...\n", - "\n", - " @implicit\n", - " fn __init__(out self, value: __mlir_type.i1):\n", - " self.value = value\n", - "\n", - " # Our new method converts `OurBool` to `Bool`:\n", - " fn __bool__(self) -> Bool:\n", - " return Bool(self.value)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Now we can use `OurBool` anywhere we can use the builtin `Bool` type:" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "It's true!\n" - ] - } - ], - "source": [ - "#| CHECK: It's true!\n", - "var g = OurTrue\n", - "if g: print(\"It's true!\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Avoiding type conversion with `__mlir_i1__`\n", - "\n", - "The `OurBool` type is looking great, and by providing a conversion to `Bool`,\n", - "it can be used anywhere the builtin `Bool` type can. But we promised you \"full\n", - "control,\" and the ability to define your own version of any type built into\n", - "Mojo or its standard library. So, why do we depend on `__bool__` to convert our\n", - "type into `Bool` (the standard library type)? This is just the formal way for\n", - "Mojo to evaluate a type as a boolean, which is useful for real-world scenarios.\n", - "However, to define a boolean type from scratch, you have a more low-level\n", - "option.\n", - "\n", - "When Mojo evaluates a conditional expression, it actually attempts to convert\n", - "the expression to an MLIR `i1` value, by searching for the special interface\n", - "method `__mlir_i1__`. (The automatic conversion to `Bool` occurs because `Bool`\n", - "is known to implement the `__mlir_i1__` method.)\n", - "\n", - "Thus, by implementing the `__mlir_i1__` special methods in `OurBool`, we can\n", - "create a type that can replaces `Bool` entirely:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "alias OurTrue = OurBool(__mlir_attr.true)\n", - "alias OurFalse: OurBool = __mlir_attr.false\n", - "\n", - "\n", - "@register_passable(\"trivial\")\n", - "struct OurBool:\n", - " var value: __mlir_type.i1\n", - "\n", - " @implicit\n", - " fn __init__(out self, value: __mlir_type.i1):\n", - " self.value = value\n", - "\n", - " # Our new method converts `OurBool` to `i1`:\n", - " fn __mlir_i1__(self) -> __mlir_type.i1:\n", - " return self.value" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We can still use `OurBool` in conditionals just as we did before:" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No more Bool conversion!\n" - ] - } - ], - "source": [ - "#| CHECK: No more Bool conversion!\n", - "var h = OurTrue\n", - "if h: print(\"No more Bool conversion!\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "But this time, no conversion to `Bool` occurs. You can try adding `print` statements to the `__bool__` and `__mlir_i1__` methods to see for yourself." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Adding functionality with MLIR\n", - "\n", - "There are many more ways we can improve `OurBool`. Many of those involve implementing special methods, some of which you may recognize from Python, and some which are specific to Mojo. For example, we can implement inversion of a `OurBool` value by adding a `__invert__` method. We can also add an `__eq__` method, which allows two `OurBool` to be compared with the `==` operator.\n", - "\n", - "What sets Mojo apart is the fact that we can implement each of these using MLIR. To implement `__eq__`, for example, we use the [`index.casts`](https://mlir.llvm.org/docs/Dialects/IndexOps/#indexcasts-mlirindexcastsop) operation to cast our `i1` values to the MLIR index dialect's `index` type, and then the [`index.cmp`](https://mlir.llvm.org/docs/Dialects/IndexOps/#indexcmp-mlirindexcmpop) operation to compare them for equality. And with the `__eq__` method implemented, we can then implement `__invert__` in terms of `__eq__`:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "alias OurTrue = OurBool(__mlir_attr.true)\n", - "alias OurFalse: OurBool = __mlir_attr.false\n", - "\n", - "\n", - "@register_passable(\"trivial\")\n", - "struct OurBool:\n", - " var value: __mlir_type.i1\n", - "\n", - " @implicit\n", - " fn __init__(out self, value: __mlir_type.i1):\n", - " self.value = value\n", - "\n", - " # ...\n", - "\n", - " fn __mlir_i1__(self) -> __mlir_type.i1:\n", - " return self.value\n", - "\n", - " fn __eq__(self, rhs: OurBool) -> Self:\n", - " var lhs_index = __mlir_op.`index.casts`[_type=__mlir_type.index](\n", - " self.value\n", - " )\n", - " var rhs_index = __mlir_op.`index.casts`[_type=__mlir_type.index](\n", - " rhs.value\n", - " )\n", - " return Self(\n", - " __mlir_op.`index.cmp`[\n", - " pred=__mlir_attr.`#index`\n", - " ](lhs_index, rhs_index)\n", - " )\n", - "\n", - " fn __invert__(self) -> Self:\n", - " return OurFalse if self == OurTrue else OurTrue" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "This allows us to use the `~` operator with `OurBool`:" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "It's false!\n" - ] - } - ], - "source": [ - "#| CHECK: It's false!\n", - "var i = OurFalse\n", - "if ~i: print(\"It's false!\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "This extensible design is what allows even \"built in\" Mojo types like `Bool`, `Int`, and even `Tuple` to be implemented in the Mojo standard library in terms of MLIR, rather than hard-coded into the Mojo language. This also means that there's almost nothing that those types can achieve that user-defined types cannot.\n", - "\n", - "By extension, this means that the incredible performance that Mojo unlocks for machine learning workflows isn't due to some magic being performed behind a curtain -- you can define your own high-level types that, in their implementation, use low-level MLIR to achieve unprecedented speed and control." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## The promise of modularity\n", - "\n", - "As we've seen, Mojo's integration with MLIR allows Mojo programmers to implement zero-cost abstractions on par with Mojo's own built-in and standard library types.\n", - "\n", - "MLIR is open-source and extensible: new dialects are being added all the time, and those dialects then become available to use in Mojo. All the while, Mojo code gets more powerful and more optimized for new hardware -- with no additional work necessary by Mojo programmers.\n", - "\n", - "What this means is that your own custom types, whether those be `OurBool` or `OurTensor`, can be used to provide programmers with an easy-to-use and unchanging interface. But behind the scenes, MLIR will optimize those convenient, high-level types for the computing environments of tomorrow.\n", - "\n", - "In other words: Mojo isn't magic, it's modular." - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Mojo", - "language": "mojo", - "name": "mojo-jupyter-kernel" - }, - "language_info": { - "codemirror_mode": { - "name": "mojo" - }, - "file_extension": ".mojo", - "mimetype": "text/x-mojo", - "name": "mojo" - }, - "vscode": { - "interpreter": { - "hash": "b0fa6594d8f4cbf19f97940f81e996739fb7646882a419484c72d19e05852a7e" - } - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} diff --git a/examples/notebooks/Mandelbrot.ipynb b/examples/notebooks/Mandelbrot.ipynb deleted file mode 100644 index 348d0013ff..0000000000 --- a/examples/notebooks/Mandelbrot.ipynb +++ /dev/null @@ -1,385 +0,0 @@ -{ - "cells": [ - { - "cell_type": "raw", - "metadata": {}, - "source": [ - "---\n", - "title: Mandelbrot in Mojo with Python plots\n", - "description: Learn how to write high-performance Mojo code and import Python packages.\n", - "website:\n", - " open-graph:\n", - " image: /static/images/mojo-social-card.png\n", - " twitter-card:\n", - " image: /static/images/mojo-social-card.png\n", - "---" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "[//]: # REMOVE_FOR_WEBSITE\n", - "*Copyright 2023 Modular, Inc: Licensed under the Apache License v2.0 with LLVM Exceptions.*" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "[//]: # REMOVE_FOR_WEBSITE\n", - "# Mandelbrot in Mojo with Python plots\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Not only is Mojo great for writing high-performance code, but it also allows us to leverage the huge Python ecosystem of libraries and tools. With seamless Python interoperability, Mojo can use Python for what it's good at, especially GUIs, without sacrificing performance in critical code. Let's take the classic Mandelbrot set algorithm and implement it in Mojo.\n", - "\n", - "This tutorial shows two aspects of Mojo. First, it shows that Mojo can be used to develop fast programs for irregular applications. It also shows how we can leverage Python for visualizing the results." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "#|code-fold: true\n", - "import benchmark\n", - "from math import iota\n", - "from sys import num_physical_cores, simdwidthof\n", - "from algorithm import parallelize, vectorize\n", - "from complex import ComplexFloat64, ComplexSIMD\n", - "from python import Python\n", - "from memory import UnsafePointer\n", - "\n", - "alias float_type = DType.float32\n", - "alias int_type = DType.int32\n", - "alias simd_width = 2 * simdwidthof[float_type]()\n", - "alias unit = benchmark.Unit.ms" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "First set some parameters, you can try changing these to see different results:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "alias width = 960\n", - "alias height = 960\n", - "alias MAX_ITERS = 200\n", - "\n", - "alias min_x = -2.0\n", - "alias max_x = 0.6\n", - "alias min_y = -1.5\n", - "alias max_y = 1.5" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Here we define a simple `Matrix` struct:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "@value\n", - "struct Matrix[type: DType, rows: Int, cols: Int]:\n", - " var data: UnsafePointer[Scalar[type]]\n", - "\n", - " fn __init__(out self):\n", - " self.data = UnsafePointer[Scalar[type]].alloc(rows * cols)\n", - "\n", - " fn __getitem__(self, row: Int, col: Int) -> Scalar[type]:\n", - " return self.data.load(row * cols + col)\n", - "\n", - " fn store[width: Int = 1](self, row: Int, col: Int, val: SIMD[type, width]):\n", - " self.data.store(row * cols + col, val)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The core [Mandelbrot](https://en.wikipedia.org/wiki/Mandelbrot_set) algorithm involves computing an iterative complex function for each pixel until it \"escapes\" the complex circle of radius 2, counting the number of iterations to escape:\n", - "\n", - "$$z_{i+1} = z_i^2 + c$$" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Compute the number of steps to escape.\n", - "def mandelbrot_kernel(c: ComplexFloat64) -> Int:\n", - " z = c\n", - " for i in range(MAX_ITERS):\n", - " z = z * z + c\n", - " if z.squared_norm() > 4:\n", - " return i\n", - " return MAX_ITERS\n", - "\n", - "\n", - "def compute_mandelbrot() -> Matrix[float_type, height, width]:\n", - " # create a matrix. Each element of the matrix corresponds to a pixel\n", - " matrix = Matrix[float_type, height, width]()\n", - "\n", - " dx = (max_x - min_x) / width\n", - " dy = (max_y - min_y) / height\n", - "\n", - " y = min_y\n", - " for row in range(height):\n", - " x = min_x\n", - " for col in range(width):\n", - " matrix.store(row, col, mandelbrot_kernel(ComplexFloat64(x, y)))\n", - " x += dx\n", - " y += dy\n", - " return matrix" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Plotting the number of iterations to escape with some color gives us the canonical Mandelbrot set plot. To render it we can directly leverage Python's `matplotlib` right from Mojo!\n", - "\n", - "First install the required libraries:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "%%python\n", - "from importlib.util import find_spec\n", - "import shutil\n", - "import subprocess\n", - "\n", - "fix = \"\"\"\n", - "-------------------------------------------------------------------------\n", - "fix following the steps here:\n", - " https://github.com/modularml/mojo/issues/1085#issuecomment-1771403719\n", - "-------------------------------------------------------------------------\n", - "\"\"\"\n", - "\n", - "def install_if_missing(name: str):\n", - " if find_spec(name):\n", - " return\n", - " print(\"missing\", name)\n", - " print(f\"{name} not found, installing...\")\n", - " try:\n", - " if shutil.which('python3'): python = \"python3\"\n", - " elif shutil.which('python'): python = \"python\"\n", - " else: raise (\"python not on path\" + fix)\n", - " subprocess.check_call([python, \"-m\", \"pip\", \"install\", name])\n", - " except:\n", - " raise ImportError(f\"{name} not found\" + fix)\n", - "\n", - "install_if_missing(\"numpy\")\n", - "install_if_missing(\"matplotlib\")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "def show_plot[type: DType](matrix: Matrix[type, height, width]):\n", - " alias scale = 10\n", - " alias dpi = 64\n", - "\n", - " np = Python.import_module(\"numpy\")\n", - " plt = Python.import_module(\"matplotlib.pyplot\")\n", - " colors = Python.import_module(\"matplotlib.colors\")\n", - "\n", - " numpy_array = np.zeros((height, width), np.float64)\n", - "\n", - " for row in range(height):\n", - " for col in range(width):\n", - " numpy_array.itemset((row, col), matrix[row, col])\n", - "\n", - " fig = plt.figure(1, [scale, scale * height // width], dpi)\n", - " ax = fig.add_axes([0.0, 0.0, 1.0, 1.0], False, 1)\n", - " light = colors.LightSource(315, 10, 0, 1, 1, 0)\n", - "\n", - " image = light.shade(numpy_array, plt.cm.hot, colors.PowerNorm(0.3), \"hsv\", 0, 0, 1.5)\n", - " plt.imshow(image)\n", - " plt.axis(\"off\")\n", - " plt.show()\n", - "\n", - "show_plot(compute_mandelbrot())" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Vectorizing Mandelbrot\n", - "We showed a naive implementation of the Mandelbrot algorithm, but there are two things we can do to speed it up. We can early-stop the loop iteration when a pixel is known to have escaped, and we can leverage Mojo's access to hardware by vectorizing the loop, computing multiple pixels simultaneously. To do that we will use the `vectorize` higher order generator.\n", - "\n", - "We start by defining our main iteration loop in a vectorized fashion" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "fn mandelbrot_kernel_SIMD[\n", - " simd_width: Int\n", - "](c: ComplexSIMD[float_type, simd_width]) -> SIMD[int_type, simd_width]:\n", - " \"\"\"A vectorized implementation of the inner mandelbrot computation.\"\"\"\n", - " var cx = c.re\n", - " var cy = c.im\n", - " var x = SIMD[float_type, simd_width](0)\n", - " var y = SIMD[float_type, simd_width](0)\n", - " var y2 = SIMD[float_type, simd_width](0)\n", - " var iters = SIMD[int_type, simd_width](0)\n", - "\n", - " var t: SIMD[DType.bool, simd_width] = True\n", - " for _ in range(MAX_ITERS):\n", - " if not any(t):\n", - " break\n", - " y2 = y * y\n", - " y = x.fma(y + y, cy)\n", - " t = x.fma(x, y2) <= 4\n", - " x = x.fma(x, cx - y2)\n", - " iters = t.select(iters + 1, iters)\n", - " return iters" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The above function is parameterized on the `simd_width` and processes simd_width pixels. It only escapes once all pixels within the vector lane are done. We can use the same iteration loop as above, but this time we vectorize within each row instead. We use the `vectorize` generator to make this a simple function call. The benchmark can run in parallel or just vectorized." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "fn run_mandelbrot(parallel: Bool) raises -> Float64:\n", - " var matrix = Matrix[int_type, height, width]()\n", - "\n", - " @parameter\n", - " fn worker(row: Int):\n", - " alias scale_x = (max_x - min_x) / width\n", - " alias scale_y = (max_y - min_y) / height\n", - "\n", - " @parameter\n", - " fn compute_vector[simd_width: Int](col: Int):\n", - " \"\"\"Each time we operate on a `simd_width` vector of pixels.\"\"\"\n", - " var cx = min_x + (col + iota[float_type, simd_width]()) * scale_x\n", - " var cy = min_y + row * SIMD[float_type, simd_width](scale_y)\n", - " var c = ComplexSIMD[float_type, simd_width](cx, cy)\n", - " matrix.store(row, col, mandelbrot_kernel_SIMD[simd_width](c))\n", - "\n", - " # Vectorize the call to compute_vector where call gets a chunk of pixels.\n", - " vectorize[compute_vector, simd_width](width)\n", - "\n", - " @parameter\n", - " fn bench():\n", - " for row in range(height):\n", - " worker(row)\n", - "\n", - " @parameter\n", - " fn bench_parallel():\n", - " parallelize[worker](height, height)\n", - "\n", - " var time: Float64 = 0\n", - " if parallel:\n", - " time = benchmark.run[bench_parallel](max_runtime_secs=0.5).mean(unit)\n", - " else:\n", - " time = benchmark.run[bench](max_runtime_secs=0.5).mean(unit)\n", - "\n", - " show_plot(matrix)\n", - " matrix.data.free()\n", - " return time\n", - "\n", - "vectorized = run_mandelbrot(parallel=False)\n", - "print(\"Vectorized:\", vectorized, unit)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Parallelizing Mandelbrot\n", - "While the vectorized implementation above is efficient, we can get better performance by parallelizing on the cols. This again is simple in Mojo using the `parallelize` higher order function:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "parallelized = run_mandelbrot(parallel=True)\n", - "print(\"Parallelized:\", parallelized, unit)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Benchmarking\n", - "\n", - "In this section we compare the vectorized speed to the parallelized speed " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "print(\"Number of physical cores:\", num_physical_cores())\n", - "print(\"Vectorized:\", vectorized, \"ms\")\n", - "print(\"Parallelized:\", parallelized, \"ms\")\n", - "#| CHECK: speedup\n", - "print(\"Parallel speedup:\", vectorized / parallelized)" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Mojo (nightly)", - "language": "mojo", - "name": "mojo-nightly-jupyter-kernel" - }, - "language_info": { - "codemirror_mode": { - "name": "mojo" - }, - "file_extension": ".mojo", - "mimetype": "text/x-mojo", - "name": "mojo" - }, - "orig_nbformat": 4 - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/examples/notebooks/Matmul.ipynb b/examples/notebooks/Matmul.ipynb deleted file mode 100644 index 239654bf5e..0000000000 --- a/examples/notebooks/Matmul.ipynb +++ /dev/null @@ -1,931 +0,0 @@ -{ - "cells": [ - { - "cell_type": "raw", - "metadata": {}, - "source": [ - "---\n", - "title: Matrix multiplication in Mojo\n", - "description: Learn how to leverage Mojo's various functions to write a high-performance matmul.\n", - "website:\n", - " open-graph:\n", - " image: /static/images/mojo-social-card.png\n", - " twitter-card:\n", - " image: /static/images/mojo-social-card.png\n", - "---" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "[//]: # REMOVE_FOR_WEBSITE\n", - "*Copyright 2023 Modular, Inc: Licensed under the Apache License v2.0 with LLVM Exceptions.*" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "[//]: # REMOVE_FOR_WEBSITE\n", - "# Matrix multiplication in Mojo" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "This notebook describes how to write a matrix multiplication (matmul) algorithm in Mojo. We will start with a pure Python implementation, transition to a naive implementation that is essentially a copy of the Python one, then add types, then continue the optimizations by vectorizing, tiling, and parallelizing the implementation." - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "First, let's define matrix multiplication. Given two dense matrices $A$ and $B$ of dimensions $M\\times K$ and $K\\times N$ respectively, we want to compute their dot product $C = A . B$ (also known as matmul). The dot product $C += A . B$ is defined by" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "$$C_{i,j} += \\sum_{k \\in [0 \\cdots K)} A_{i,k} B_{k,j}$$" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
\n", - "\n", - "Please take look at our [blog](https://www.modular.com/blog/ais-compute-fragmentation-what-matrix-multiplication-teaches-us) post on matmul and why it is important for ML and DL workloads.\n", - "\n", - "
" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The format of this notebook is to start with an implementation which is identical to that of Python (effectively renaming the file extension), then look at how adding types to the implementation helps performance before extending the implementation by leveraging the vectorization and parallelization capabilities available on modern hardware. Throughout the execution, we report the GFlops achieved." - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "[//]: # REMOVE_FOR_WEBSITE\n", - "
" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Python Implementation" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Let's first implement matmul in Python directly from the definition." - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "%%python\n", - "def matmul_python(C, A, B):\n", - " for m in range(C.rows):\n", - " for k in range(A.cols):\n", - " for n in range(C.cols):\n", - " C[m, n] += A[m, k] * B[k, n]" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Let's benchmark our implementation using 128 by 128 square matrices and report the achieved GFLops." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Install numpy if it's not already:" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [], - "source": [ - "%%python\n", - "from importlib.util import find_spec\n", - "import shutil\n", - "import subprocess\n", - "\n", - "fix = \"\"\"\n", - "-------------------------------------------------------------------------\n", - "fix following the steps here:\n", - " https://github.com/modularml/mojo/issues/1085#issuecomment-1771403719\n", - "-------------------------------------------------------------------------\n", - "\"\"\"\n", - "\n", - "def install_if_missing(name: str):\n", - " if find_spec(name):\n", - " return\n", - "\n", - " print(f\"{name} not found, installing...\")\n", - " try:\n", - " if shutil.which('python3'): python = \"python3\"\n", - " elif shutil.which('python'): python = \"python\"\n", - " else: raise (\"python not on path\" + fix)\n", - " subprocess.check_call([python, \"-m\", \"pip\", \"install\", name])\n", - " except:\n", - " raise ImportError(f\"{name} not found\" + fix)\n", - "\n", - "install_if_missing(\"numpy\")" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "%%python\n", - "from timeit import timeit\n", - "import numpy as np\n", - "\n", - "class Matrix:\n", - " def __init__(self, value, rows, cols):\n", - " self.value = value\n", - " self.rows = rows\n", - " self.cols = cols\n", - "\n", - " def __getitem__(self, idxs):\n", - " return self.value[idxs[0]][idxs[1]]\n", - "\n", - " def __setitem__(self, idxs, value):\n", - " self.value[idxs[0]][idxs[1]] = value\n", - "\n", - "def benchmark_matmul_python(M, N, K):\n", - " A = Matrix(list(np.random.rand(M, K)), M, K)\n", - " B = Matrix(list(np.random.rand(K, N)), K, N)\n", - " C = Matrix(list(np.zeros((M, N))), M, N)\n", - " secs = timeit(lambda: matmul_python(C, A, B), number=2)/2\n", - " gflops = ((2*M*N*K)/secs) / 1e9\n", - " print(gflops, \"GFLOP/s\")\n", - " return gflops" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": { - "tags": [] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0.004532987790119301 GFLOP/s\n" - ] - } - ], - "source": [ - "python_gflops = benchmark_matmul_python(128, 128, 128).to_float64()" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Importing the Python implementation to Mojo" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Using Mojo is as simple as Python. First, let's include that modules from the Mojo stdlib that we are going to use:" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "#|code-fold: true\n", - "#|code-summary: \"Import utilities and define `Matrix` (click to show/hide)\"\n", - "\n", - "import benchmark\n", - "from memory import memset_zero\n", - "from random import rand, random_float64" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Then, we can copy and paste our Python code. Mojo adopts the syntax of Python, so the same Python code will run as Mojo code" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "# This exactly the same Python implementation, but is infact Mojo code!\n", - "def matmul_untyped(C, A, B):\n", - " for m in range(C.rows):\n", - " for k in range(A.cols):\n", - " for n in range(C.cols):\n", - " C[m, n] += A[m, k] * B[k, n]" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We can then benchmark the implementation. As before we use a 128 by 128 matrix" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "fn matrix_getitem(self: object, i: object) raises -> object:\n", - " return self.value[i]\n", - "\n", - "\n", - "fn matrix_setitem(self: object, i: object, value: object) raises -> object:\n", - " self.value[i] = value\n", - " return None\n", - "\n", - "\n", - "fn matrix_append(self: object, value: object) raises -> object:\n", - " self.value.append(value)\n", - " return None\n", - "\n", - "\n", - "fn matrix_init(rows: Int, cols: Int) raises -> object:\n", - " var value = object([])\n", - " return object(\n", - " Attr(\"value\", value), Attr(\"__getitem__\", matrix_getitem), Attr(\"__setitem__\", matrix_setitem),\n", - " Attr(\"rows\", rows), Attr(\"cols\", cols), Attr(\"append\", matrix_append),\n", - " )\n", - "\n", - "def benchmark_matmul_untyped(M: Int, N: Int, K: Int, python_gflops: Float64):\n", - " C = matrix_init(M, N)\n", - " A = matrix_init(M, K)\n", - " B = matrix_init(K, N)\n", - " for i in range(M):\n", - " c_row = object([])\n", - " b_row = object([])\n", - " a_row = object([])\n", - " for j in range(N):\n", - " c_row.append(0.0)\n", - " b_row.append(random_float64(-5, 5))\n", - " a_row.append(random_float64(-5, 5))\n", - " C.append(c_row)\n", - " B.append(b_row)\n", - " A.append(a_row)\n", - "\n", - " @parameter\n", - " fn test_fn():\n", - " try:\n", - " _ = matmul_untyped(C, A, B)\n", - " except:\n", - " pass\n", - "\n", - " var secs = benchmark.run[test_fn](max_runtime_secs=0.5).mean()\n", - " _ = (A, B, C)\n", - " var gflops = ((2*M*N*K)/secs) / 1e9\n", - " var speedup : Float64 = gflops / python_gflops\n", - " print(gflops, \"GFLOP/s, a\", speedup, \"x speedup over Python\")" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": { - "tags": [] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0.014276454358821751 GFLOP/s, a 3.1494579336702819 x speedup over Python\n" - ] - } - ], - "source": [ - "benchmark_matmul_untyped(128, 128, 128, python_gflops)" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Note the huge speedup with no effort that we have gotten." - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Adding types to the Python implementation" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The above program, while achieving better performance than Python, is still not the best we can get from Mojo. If we tell Mojo the types of the inputs, it can optimize much of the code away and reduce dispatching costs (unlike Python, which only uses types for type checking, Mojo exploits type info for performance optimizations as well)." - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "To do that, let's first define a `Matrix` struct. The `Matrix` struct contains a data pointer along with size fields. While the `Matrix` struct can be parametrized on any data type, here we set the data type to be Float32 for conciseness." - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "from memory import memset_zero\n", - "alias type = DType.float32\n", - "\n", - "struct Matrix[rows: Int, cols: Int]:\n", - " var data: UnsafePointer[Scalar[type]]\n", - "\n", - " # Initialize zeroeing all values\n", - " fn __init__(out self):\n", - " self.data = UnsafePointer[Scalar[type]].alloc(rows * cols)\n", - " memset_zero(self.data, rows * cols)\n", - "\n", - " # Initialize taking a pointer, don't set any elements\n", - " fn __init__(out self, data: UnsafePointer[Scalar[type]]):\n", - " self.data = data\n", - "\n", - " # Initialize with random values\n", - " @staticmethod\n", - " fn rand() -> Self:\n", - " var data = UnsafePointer[Scalar[type]].alloc(rows * cols)\n", - " rand(data.address, rows * cols)\n", - " return Self(data)\n", - "\n", - " fn __getitem__(self, y: Int, x: Int) -> Scalar[type]:\n", - " return self.load[1](y, x)\n", - "\n", - " fn __setitem__(self, y: Int, x: Int, val: Scalar[type]):\n", - " self.store(y, x, val)\n", - "\n", - " fn load[nelts: Int](self, y: Int, x: Int) -> SIMD[type, nelts]:\n", - " return self.data.load[width=nelts](y * self.cols + x)\n", - "\n", - " fn store[nelts: Int, //](self, y: Int, x: Int, val: SIMD[type, nelts]):\n", - " return self.data.store(y * self.cols + x, val)" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
\n", - "\n", - "Note that we implement `getitem` and `setitem` in terms of `load` and `store`. For the naive implementation of matmul it does not make a difference, but we will utilize this later in a more optimized vectorized version of matmul.\n", - "\n", - "
" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "With the above `Matrix` type we can effectively copy and paste the Python implementation and just add type annotations:" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "# Note that C, A, and B have types.\n", - "fn matmul_naive(C: Matrix, A: Matrix, B: Matrix):\n", - " for m in range(C.rows):\n", - " for k in range(A.cols):\n", - " for n in range(C.cols):\n", - " C[m, n] += A[m, k] * B[k, n]" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We are going to benchmark the implementations as we improve, so let's write a helper function that will do that for us: " - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "alias M = 1024\n", - "alias N = 1024\n", - "alias K = 1024\n", - "\n", - "@always_inline\n", - "fn bench[\n", - " func: fn (Matrix, Matrix, Matrix) -> None](base_gflops: Float64) raises:\n", - " var C = Matrix[M, N]()\n", - " var A = Matrix[M, K].rand()\n", - " var B = Matrix[K, N].rand()\n", - "\n", - " @always_inline\n", - " @parameter\n", - " fn test_fn():\n", - " _ = func(C, A, B)\n", - "\n", - " var secs = benchmark.run[test_fn](max_runtime_secs=1).mean()\n", - "\n", - " A.data.free()\n", - " B.data.free()\n", - " C.data.free()\n", - "\n", - " var gflops = ((2 * M * N * K) / secs) / 1e9\n", - " var speedup: Float64 = gflops / base_gflops\n", - "\n", - " print(gflops, \"GFLOP/s, a\", speedup, \"x speedup over Python\")" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Benchmarking shows significant speedups. We increase the size of the matrix to 512 by 512, since Mojo is much faster than Python." - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": { - "tags": [] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "5.5584227194331879 GFLOP/s, a 1226.2161242854129 x speedup over Python\n" - ] - } - ], - "source": [ - "bench[matmul_naive](python_gflops)" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Adding type annotations gives a huge improvement compared to the original untyped version." - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Vectorizing the inner most loop" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We can do better than the above implementation by utilizing vector instructions. Rather than assuming a vector width, we query the simd width of the specified dtype using `simdwidthof`. This makes our code portable as we transition to other hardware. Leveraging SIMD instructions is as easy as:" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "from sys import simdwidthof\n", - "# simdwidthof = number of float32 elements that fit into a single SIMD register\n", - "# using a 2x multiplier allows some SIMD operations to run in the same cycle\n", - "alias nelts = simdwidthof[DType.float32]() * 2\n", - "\n", - "fn matmul_vectorized_0(C: Matrix, A: Matrix, B: Matrix):\n", - " for m in range(C.rows):\n", - " for k in range(A.cols):\n", - " for nv in range(0, C.cols - nelts + 1, nelts):\n", - " C.store(m, nv, C.load[nelts](m, nv) + A[m, k] * B.load[nelts](k, nv))\n", - "\n", - " # Handle remaining elements with scalars.\n", - " for n in range(nelts * (C.cols // nelts), C.cols):\n", - " C[m, n] += A[m, k] * B[k, n]" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We can benchmark the above implementation. Note that many compilers can detect naive loops and perform optimizations on them. Mojo, however, allows you to be explicit and precisely control what optimizations are applied." - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": { - "tags": [] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "24.522805389188736 GFLOP/s, a 5409.8547193623335 x speedup over Python\n" - ] - } - ], - "source": [ - "bench[matmul_vectorized_0](python_gflops)" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Vectorization is a common optimization, and Mojo provides a higher-order function that performs vectorization for you. The `vectorize` function takes a vector width and a function which is parametric on the vector width and is going to be evaluated in a vectorized manner." - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "# Simplify the code by using the builtin vectorize function\n", - "from algorithm import vectorize\n", - "\n", - "fn matmul_vectorized_1(C: Matrix, A: Matrix, B: Matrix):\n", - " for m in range(C.rows):\n", - " for k in range(A.cols):\n", - " @parameter\n", - " fn dot[nelts: Int](n: Int):\n", - " C.store(m, n, C.load[nelts](m, n) + A[m, k] * B.load[nelts](k, n))\n", - " vectorize[dot, nelts, size = C.cols]()" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "There is only a slight difference in terms of performance between the two implementations:" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "metadata": { - "tags": [] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "17.823704154967395 GFLOP/s, a 3931.9991538071854 x speedup over Python\n" - ] - } - ], - "source": [ - "bench[matmul_vectorized_1](python_gflops)" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Parallelizing Matmul" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "With Mojo we can easily run code in parallel with the `parallelize` function.\n", - "\n", - "Let's modify our matmul implementation and make it multi-threaded (for simplicity, we only `parallelize` on the M dimension).\n", - "\n", - "In `parallelize` below we're overpartitioning by distributing the work more evenly among processors. This ensures they all have something to work on even if some tasks finish before others, or some processors are stragglers. Intel and Apple now have separate performance and efficiency cores and this mitigates the problems that can cause." - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "# Parallelize the code by using the builtin parallelize function\n", - "from algorithm import parallelize\n", - "\n", - "fn matmul_parallelized(C: Matrix, A: Matrix, B: Matrix):\n", - " @parameter\n", - " fn calc_row(m: Int):\n", - " for k in range(A.cols):\n", - " @parameter\n", - " fn dot[nelts : Int](n : Int):\n", - " C.store(m,n, C.load[nelts](m,n) + A[m,k] * B.load[nelts](k,n))\n", - " vectorize[dot, nelts, size = C.cols]()\n", - " parallelize[calc_row](C.rows, C.rows)" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We can benchmark the parallel matmul implementation." - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "metadata": { - "tags": [] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "66.225456232955807 GFLOP/s, a 14609.670111468104 x speedup over Python\n" - ] - } - ], - "source": [ - "bench[matmul_parallelized](python_gflops)" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Tiling Matmul" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Tiling is an optimization performed for matmul to increase cache locality. The idea is to keep sub-matrices resident in the cache and increase the reuse. The tile function itself can be written in Mojo as:" - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "from algorithm import Static2DTileUnitFunc as Tile2DFunc\n", - "\n", - "# Perform 2D tiling on the iteration space defined by end_x and end_y.\n", - "fn tile[tiled_fn: Tile2DFunc, tile_x: Int, tile_y: Int](end_x: Int, end_y: Int):\n", - " # Note: this assumes that ends are multiples of the tiles.\n", - " for y in range(0, end_y, tile_y):\n", - " for x in range(0, end_x, tile_x):\n", - " tiled_fn[tile_x, tile_y](x, y)" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The above will perform 2 dimensional tiling over a 2D iteration space defined to be between $([0, end_x], [0, end_y])$. Once we define it above, we can use it within our matmul kernel. For simplicity we choose `4` as the tile height and since we also want to vectorize we use `4 * nelts` as the tile width (since we vectorize on the columns)." - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "# Use the above tile function to perform tiled matmul.\n", - "fn matmul_tiled_parallelized(C: Matrix, A: Matrix, B: Matrix):\n", - " @parameter\n", - " fn calc_row(m: Int):\n", - " @parameter\n", - " fn calc_tile[tile_x: Int, tile_y: Int](x: Int, y: Int):\n", - " for k in range(y, y + tile_y):\n", - " @parameter\n", - " fn dot[nelts: Int](n: Int):\n", - " C.store(m, n + x, C.load[nelts](m, n + x) + A[m, k] * B.load[nelts](k, n + x))\n", - " vectorize[dot, nelts, size = tile_x]()\n", - "\n", - " # We hardcode the tile factor to be 4.\n", - " alias tile_size = 4\n", - " tile[calc_tile, nelts * tile_size, tile_size](A.cols, C.cols)\n", - "\n", - " parallelize[calc_row](C.rows, C.rows)" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Again, we can benchmark the tiled parallel matmul implementation:" - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "metadata": { - "tags": [] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "66.530139059653536 GFLOP/s, a 14676.884681814368 x speedup over Python\n" - ] - } - ], - "source": [ - "bench[matmul_tiled_parallelized](python_gflops)" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "One source of overhead in the above implementation is the fact that the we are not unrolling the loops introduced by vectorize of the dot function. We can do that via the `unroll_factor` higher-order function in Mojo:" - ] - }, - { - "cell_type": "code", - "execution_count": 22, - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "# Unroll the vectorized loop by a constant factor.\n", - "fn matmul_tiled_unrolled_parallelized(C: Matrix, A: Matrix, B: Matrix):\n", - " @parameter\n", - " fn calc_row(m: Int):\n", - " @parameter\n", - " fn calc_tile[tile_x: Int, tile_y: Int](x: Int, y: Int):\n", - " for k in range(y, y + tile_y):\n", - " @parameter\n", - " fn dot[nelts: Int](n: Int):\n", - " C.store(m, n + x, C.load[nelts](m, n + x) + A[m, k] * B.load[nelts](k, n + x))\n", - "\n", - " # Vectorize by nelts and unroll by tile_x/nelts\n", - " # Here unroll factor is 4\n", - " alias unroll_factor = tile_x // nelts\n", - " vectorize[dot, nelts, size=tile_x, unroll_factor=unroll_factor]()\n", - "\n", - " alias tile_size = 4\n", - " tile[calc_tile, nelts * tile_size, tile_size](A.cols, C.cols)\n", - "\n", - " parallelize[calc_row](C.rows, C.rows)" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Again, we can benchmark the new tiled parallel matmul implementation with unrolled and vectorized inner loop:" - ] - }, - { - "cell_type": "code", - "execution_count": 23, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "72.59541968462139 GFLOP/s, a 16014.916219906869 x speedup over Python\n" - ] - } - ], - "source": [ - "#| CHECK: GFLOP\n", - "bench[matmul_tiled_unrolled_parallelized](python_gflops)" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Mojo", - "language": "mojo", - "name": "mojo-jupyter-kernel" - }, - "language_info": { - "codemirror_mode": { - "name": "mojo" - }, - "file_extension": ".mojo", - "mimetype": "text/x-mojo", - "name": "mojo" - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} diff --git a/examples/notebooks/README.md b/examples/notebooks/README.md deleted file mode 100644 index d94bb7bf4b..0000000000 --- a/examples/notebooks/README.md +++ /dev/null @@ -1,134 +0,0 @@ -# Mojo Jupyter notebooks - -Mojo supports programming in [Jupyter notebooks](https://jupyter.org/), just -like Python. - -This page explains how to get started with Mojo notebooks, and this repo -directory contains notebooks that demonstrate some of Mojo's features. - -If you're not familiar with Jupyter notebooks, they're files that allow you to -create documents with live code, equations, visualizations, and explanatory -text. They're basically documents with executable code blocks, making them -great for sharing code experiments and programming tutorials. We actually wrote -the [Mojo programming -manual](https://docs.modular.com/mojo/programming-manual.html) as a Jupyter -notebook, so we can easily test all the code samples. - -And because Mojo allows you to import Python modules, you can use visualization -libraries in your notebooks to draw graphs and charts, or display images. For -an example, check out the `Mandelbrot.ipynb` notebook, which uses `matplotlib` -to draw the Mandelbrot set calculated in Mojo, and the `RayTracing.ipynb` -notebook, which draws images using `numpy`. - -## Get started in VS Code - -Visual Studio Code is a great environment for programming with Jupyter -notebooks. Especially if you're developing with Mojo on a remote system, using -VS Code is ideal because it allows you to edit and interact with notebooks on -the remote machine where you've installed Mojo. - -All you need is Mojo and the Jupyter VS Code extension: - -1. [Create a new Mojo -project](https://docs.modular.com/mojo/manual/get-started#1-create-a-new-project). - -2. Install [Visual Studio Code](https://code.visualstudio.com/) and the - [Jupyter - extension](https://marketplace.visualstudio.com/items?itemName=ms-toolsai.jupyter). - -3. Then open any `.ipynb` file with Mojo code, click **Select Kernel** in the - top-right corner of the document, and then select **Jupyter Kernel > Mojo**. - - The Mojo kernel should have been installed automatically when you installed - the Mojo SDK. If the Mojo kernel is not listed, make sure that your - `$MODULAR_HOME` environment variable is set on the system where you - installed the Mojo SDK (specified in the `~/.profile` or `~/.bashrc` file). - - Now run some Mojo code! - -## Get started with JupyterLab - -You can also select the Mojo kernel when running notebooks in a local instance -of JupyterLab. The following is just a quick setup guide for Linux users with -the Mojo SDK installed locally, and it might not work with your system (these -instructions don't support remote access to the JupyterLab). For more details -about using JupyterLab, see the complete [JupyterLab installation -guide](https://jupyterlab.readthedocs.io/en/latest/getting_started/installation.html). - -### 1. Launch JupyterLab - -You can use either Magic or conda. - -#### Using Magic - -If you have [`magic`](https://docs.modular.com/magic) you can run the following -command to launch JupyterLab from this directory: - -```sh -# Run from an active conda or magic shell environment -magic run jupyter lab -``` - -After a moment, it will open a browser window with JupterLab running. - -#### Using conda - -Conda allows you to export environments in `.yml` format. (For more -information, see -[Managing environments](https://docs.conda.io/projects/conda/en/latest/user-guide/tasks/manage-environments.html) -in the Conda documentation.) - -If you already have a working Jupyter environment on a different computer and -server you can export it using the following command. - -```sh -# Example of exporting environment.yml from a conda environment named `your-env` -conda env export --name your_env > environment.yml -``` - -To create a Conda environment, activate that environment, and install JupyterLab. - -``` sh -# Create a Conda environment if you don't have one -conda create -n mojo-repo -# Activate the environment -conda env update -n mojo-repo -f environment.yml --prune -# run JupyterLab -conda run -n mojo-repo jupyter lab -``` - -After a moment, it will open a browser window with JupterLab running. - -#### Using more magic - -Magic allows you to create an environment from a Conda `environment.yml`. - -```sh -# Create a magic environment if you don't have one -magic init mojo-repo --import environment.yml -# Activate the environment -cd mojo-repo && magic shell -# run JupyterLab -magic run jupyter lab -``` - -### 2. Run the .ipynb notebooks - -The left nav bar should show all the notebooks in this directory. -Open any `.ipynb` file and start running the code. - -## Notes and tips - -- Code in a Jupyter notebook cell behaves like code in a Mojo REPL environment: - The `main()` function is not required, but there are some caveats: - - - Top-level variables (variables declared outside a function) are not visible - inside functions. - - - Redefining undeclared variables is not supported (variables without a `let` - or `var` in front). If you’d like to redefine a variable across notebook - cells, you must declare the variable with either `let` or `var`. - -- You can use `%%python` at the top of a code cell and write normal Python - code. Variables, functions, and imports defined in a Python cell are available - from subsequent Mojo code cells. diff --git a/examples/notebooks/RayTracing.ipynb b/examples/notebooks/RayTracing.ipynb deleted file mode 100644 index ad3830bbe1..0000000000 --- a/examples/notebooks/RayTracing.ipynb +++ /dev/null @@ -1,1022 +0,0 @@ -{ - "cells": [ - { - "cell_type": "raw", - "id": "7a924a43", - "metadata": {}, - "source": [ - "---\n", - "title: Ray tracing in Mojo\n", - "description: Learn how to draw 3D graphics with ray-traced lighting using Mojo.\n", - "website:\n", - " open-graph:\n", - " image: /static/images/mojo-social-card.png\n", - " twitter-card:\n", - " image: /static/images/mojo-social-card.png\n", - "---" - ] - }, - { - "cell_type": "markdown", - "id": "e48ca293", - "metadata": {}, - "source": [ - "[//]: # REMOVE_FOR_WEBSITE\n", - "*Copyright 2023 Modular, Inc: Licensed under the Apache License v2.0 with LLVM Exceptions.*" - ] - }, - { - "cell_type": "markdown", - "id": "214584ac", - "metadata": {}, - "source": [ - "[//]: # REMOVE_FOR_WEBSITE\n", - "# Ray tracing in Mojo" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "id": "c4edb2c9-5109-4e00-98c0-3aa92dbca7d1", - "metadata": {}, - "source": [ - "This tutorial about [ray\n", - "tracing](https://en.wikipedia.org/wiki/Ray_tracing_(graphics)) is based on the\n", - "popular tutorial [Understandable RayTracing in\n", - "C++](https://github.com/ssloy/tinyraytracer/wiki/Part-1:-understandable-raytracing).\n", - "The mathematical explanations are well described in that tutorial, so we'll\n", - "just point you to the appropriate sections for reference as we implement a\n", - "basic ray tracer in Mojo." - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "id": "fbd4aa63-a178-41f2-ad66-b017c1c69d2a", - "metadata": {}, - "source": [ - "## Step 1: Basic definitions\n", - "\n", - "We'll start by defining a `Vec3f` struct, which will use to represent a vector\n", - "in 3D space as well as RGB pixels. We'll use a `SIMD` representation for our\n", - "vector to enable vectorized operations. The `SIMD` type is a fixed-size vector,\n", - "and its size must be a power of 2. So we'll use a size of 4 and always pad the\n", - "underlying storage with a 0." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "78a07829-05bc-4a67-8ccc-f2e1537c478c", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "from math import isqrt\n", - "\n", - "\n", - "@register_passable(\"trivial\")\n", - "struct Vec3f:\n", - " var data: SIMD[DType.float32, 4]\n", - "\n", - " @always_inline\n", - " fn __init__(out self, x: Float32, y: Float32, z: Float32):\n", - " self.data = SIMD[DType.float32, 4](x, y, z, 0)\n", - "\n", - " @implicit\n", - " @always_inline\n", - " fn __init__(out self, data: SIMD[DType.float32, 4]):\n", - " self.data = data\n", - "\n", - " @always_inline\n", - " @staticmethod\n", - " fn zero() -> Vec3f:\n", - " return Vec3f(0, 0, 0)\n", - "\n", - " @always_inline\n", - " fn __sub__(self, other: Vec3f) -> Vec3f:\n", - " return self.data - other.data\n", - "\n", - " @always_inline\n", - " fn __add__(self, other: Vec3f) -> Vec3f:\n", - " return self.data + other.data\n", - "\n", - " @always_inline\n", - " fn __matmul__(self, other: Vec3f) -> Float32:\n", - " return (self.data * other.data).reduce_add()\n", - "\n", - " @always_inline\n", - " fn __mul__(self, k: Float32) -> Vec3f:\n", - " return self.data * k\n", - "\n", - " @always_inline\n", - " fn __neg__(self) -> Vec3f:\n", - " return self.data * -1.0\n", - "\n", - " @always_inline\n", - " fn __getitem__(self, idx: Int) -> SIMD[DType.float32, 1]:\n", - " return self.data[idx]\n", - "\n", - " @always_inline\n", - " fn cross(self, other: Vec3f) -> Vec3f:\n", - " var self_zxy = self.data.shuffle[2, 0, 1, 3]()\n", - " var other_zxy = other.data.shuffle[2, 0, 1, 3]()\n", - " return (self_zxy * other.data - self.data * other_zxy).shuffle[\n", - " 2, 0, 1, 3\n", - " ]()\n", - "\n", - " @always_inline\n", - " fn normalize(self) -> Vec3f:\n", - " return self.data * isqrt(self @ self)\n" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "id": "2619eb1b-103b-4453-9725-4480e388452e", - "metadata": {}, - "source": [ - "We now define our `Image` struct, which will store the RGB pixels of our\n", - "images. It also contains a method to convert this Mojo struct into a NumPy\n", - "image, which will be used for implementing a straightforward display\n", - "mechanism. We will also implement a function for loading PNG files from disk." - ] - }, - { - "cell_type": "markdown", - "id": "acd55d71", - "metadata": {}, - "source": [ - "First install the required libraries:" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "53266408", - "metadata": {}, - "outputs": [], - "source": [ - "%%python\n", - "from importlib.util import find_spec\n", - "import shutil\n", - "import subprocess\n", - "\n", - "fix = \"\"\"\n", - "-------------------------------------------------------------------------\n", - "fix following the steps here:\n", - " https://github.com/modularml/mojo/issues/1085#issuecomment-1771403719\n", - "-------------------------------------------------------------------------\n", - "\"\"\"\n", - "\n", - "def install_if_missing(name: str):\n", - " if find_spec(name):\n", - " return\n", - "\n", - " print(f\"{name} not found, installing...\")\n", - " try:\n", - " if shutil.which('python3'): python = \"python3\"\n", - " elif shutil.which('python'): python = \"python\"\n", - " else: raise (\"python not on path\" + fix)\n", - " subprocess.check_call([python, \"-m\", \"pip\", \"install\", name])\n", - " except:\n", - " raise ImportError(f\"{name} not found\" + fix)\n", - "\n", - "install_if_missing(\"numpy\")\n", - "install_if_missing(\"matplotlib\")\n" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "ca218d22-0578-42af-a906-7f15a91c5bec", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "from python import Python\n", - "from python import PythonObject\n", - "from memory import UnsafePointer\n", - "\n", - "struct Image:\n", - " # reference count used to make the object efficiently copyable\n", - " var rc: UnsafePointer[Int]\n", - " # the two dimensional image is represented as a flat array\n", - " var pixels: UnsafePointer[Vec3f]\n", - " var height: Int\n", - " var width: Int\n", - "\n", - " fn __init__(out self, height: Int, width: Int):\n", - " self.height = height\n", - " self.width = width\n", - " self.pixels = UnsafePointer[Vec3f].alloc(self.height * self.width)\n", - " self.rc = UnsafePointer[Int].alloc(1)\n", - " self.rc[] = 1\n", - "\n", - " fn __copyinit__(out self, other: Self):\n", - " other._inc_rc()\n", - " self.pixels = other.pixels\n", - " self.rc = other.rc\n", - " self.height = other.height\n", - " self.width = other.width\n", - "\n", - " fn __del__(owned self):\n", - " self._dec_rc()\n", - "\n", - " fn _dec_rc(self):\n", - " if self.rc[] > 1:\n", - " self.rc[] -= 1\n", - " return\n", - " self._free()\n", - "\n", - " fn _inc_rc(self):\n", - " self.rc[] += 1\n", - "\n", - " fn _free(self):\n", - " self.rc.free()\n", - " self.pixels.free()\n", - "\n", - " @always_inline\n", - " fn set(self, row: Int, col: Int, value: Vec3f) -> None:\n", - " self.pixels[self._pos_to_index(row, col)] = value\n", - "\n", - " @always_inline\n", - " fn _pos_to_index(self, row: Int, col: Int) -> Int:\n", - " # Convert a (rol, col) position into an index in the underlying linear storage\n", - " return row * self.width + col\n", - "\n", - " def to_numpy_image(self) -> PythonObject:\n", - " var np = Python.import_module(\"numpy\")\n", - " var plt = Python.import_module(\"matplotlib.pyplot\")\n", - "\n", - " var np_image = np.zeros((self.height, self.width, 3), np.float32)\n", - "\n", - " # We use raw pointers to efficiently copy the pixels to the numpy array\n", - " var out_pointer = np_image.__array_interface__[\"data\"][0].unsafe_get_as_pointer[DType.float32]()\n", - " var in_pointer = self.pixels.bitcast[Float32]()\n", - "\n", - " for row in range(self.height):\n", - " for col in range(self.width):\n", - " var index = self._pos_to_index(row, col)\n", - " for dim in range(3):\n", - " out_pointer[index * 3 + dim] = in_pointer[index * 4 + dim]\n", - "\n", - " return np_image\n", - "\n", - "\n", - "def load_image(fname: String) -> Image:\n", - " var np = Python.import_module(\"numpy\")\n", - " var plt = Python.import_module(\"matplotlib.pyplot\")\n", - "\n", - " var np_image = plt.imread(fname)\n", - " var rows = Int(np_image.shape[0])\n", - " var cols = Int(np_image.shape[1])\n", - " var image = Image(rows, cols)\n", - "\n", - " var in_pointer = np_image.__array_interface__[\"data\"][0].unsafe_get_as_pointer[DType.float32]()\n", - " var out_pointer = image.pixels.bitcast[Float32]()\n", - "\n", - " for row in range(rows):\n", - " for col in range(cols):\n", - " var index = image._pos_to_index(row, col)\n", - " for dim in range(3):\n", - " out_pointer[index * 4 + dim] = in_pointer[index * 3 + dim]\n", - " return image\n" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "id": "7a7dbe6f-f35f-42c5-ad37-b7400f6262f8", - "metadata": {}, - "source": [ - "We then add a function for quickly displaying an `Image` into the notebook. Our\n", - "Python interop comes in quite handy." - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "9a3a8e81-7500-439b-a8d2-8e71ceea3e8b", - "metadata": {}, - "outputs": [], - "source": [ - "def render(image: Image):\n", - " np = Python.import_module(\"numpy\")\n", - " plt = Python.import_module(\"matplotlib.pyplot\")\n", - " colors = Python.import_module(\"matplotlib.colors\")\n", - " dpi = 32\n", - " fig = plt.figure(1, [image.width // 10, image.height // 10], dpi)\n", - "\n", - " plt.imshow(image.to_numpy_image())\n", - " plt.axis(\"off\")\n", - " plt.show()\n" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "id": "5f42f174-d7d9-4f6c-9b4e-d0d586f8f5ec", - "metadata": {}, - "source": [ - "Finally, we test all our code so far with a simple image, which is the one\n", - "rendered in the [Step 1 of the C++\n", - "tutorial](https://github.com/ssloy/tinyraytracer/wiki/Part-1:-understandable-raytracing#step-1-write-an-image-to-the-disk)." - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "id": "52005588-38e7-4ef0-affe-6d063b9bf9b7", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAd0AAAFnCAYAAADjbJN9AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8pXeV/AAAACXBIWXMAAATsAAAE7AGKbv1yAAAGG0lEQVR4nO3ZwWoCQRRFQVv8/19+LtyMILjyTMtUbUICCWZ1uP3WzMwNAPi5+9kfAACu4nH8Zq11+ObD108/+/Z1x9/xmfb4+zt+Jv/zHr/z739/x890xf95o9+Z9XpUtnQBIPK+dM/6FABwAZYuAEQsXQCIiC4ARDwvA0DE0gWAiOgCQER0ASDipgsAEUsXACKiCwAR0QWAiJsuAEQsXQCIiC4ARDwvA0DE0gWAiOgCQER0ASDipgsAEUsXACKiCwAR0QWAiJsuAEQsXQCIiC4ARDwvA0DE0gWAiOgCQER0ASDipgsAEUsXACKiCwAR0QWAiJsuAEQsXQCIWLoAELF0ASAiugAQEV0AiLjpAkDE0gWAiOgCQMTzMgBELF0AiIguAEREFwAibroAELF0ASAiugAQEV0AiLjpAkDE0gWAiOgCQMTzMgBELF0AiIguAEREFwAibroAELF0ASAiugAQEV0AiLjpAkDE0gWAiOgCQMTzMgBELF0AiIguAEREFwAibroAELF0ASAiugAQEV0AiLjpAkDE0gWAiOgCQMTzMgBELF0AiIguAEREFwAibroAELF0ASAiugAQEV0AiLjpAkDE0gWAiOgCQMTzMgBELF0AiIguAEREFwAibroAELF0ASAiugAQ8bwMABFLFwAiogsAEc/LABCxdAEgIroAEBFdAIi46QJAxNIFgIjoAkDE8zIARCxdAIiILgBERBcAIm66ABCxdAEgIroAEBFdAIi46QJAxNIFgIjoAkDE8zIARCxdAIiILgBERBcAIm66ABCxdAEgIroAEPG8DAARSxcAIqILABHRBYCImy4ARCxdAIiILgBERBcAIm66ABCxdAEgIroAEPG8DAARSxcAIqILABHRBYCImy4ARCxdAIiILgBERBcAIm66ABCxdAEgIroAEPG8DAARSxcAIqILABHRBYCImy4ARCxdAIiILgBERBcAIm66ABCxdAEgYukCQMTSBYCI6AJARHQBIOKmCwARSxcAIqILABHPywAQsXQBICK6ABARXQCIuOkCQMTSBYCI6AJARHQBIOKmCwARSxcAIqILABHPywAQsXQBICK6ABARXQCIuOkCQMTSBYCI6AJARHQBIOKmCwARSxcAIqILABHPywAQsXQBICK6ABARXQCIuOkCQMTSBYCI6AJARHQBIOKmCwARSxcAIqILABHPywAQsXQBICK6ABARXQCIuOkCQMTSBYCI6AJARHQBIOKmCwARSxcAIqILABHPywAQsXQBICK6ABARXQCIuOkCQMTSBYCI6AJAxPMyAEQsXQCIiC4ARDwvA0DE0gWAiOgCQER0ASDipgsAEUsXACKiCwARz8sAELF0ASAiugAQEV0AiLjpAkDE0gWAiOgCQER0ASDipgsAEUsXACKiCwARz8sAELF0ASAiugAQEV0AiLjpAkDE0gWAiOgCQMTzMgBELF0AiIguAEREFwAibroAELF0ASAiugAQEV0AiLjpAkDE0gWAiOgCQMTzMgBELF0AiIguAEREFwAibroAELF0ASAiugAQEV0AiLjpAkDE0gWAiOgCQMTzMgBELF0AiIguAEREFwAibroAELF0ASAiugAQEV0AiLjpAkDE0gWAiKULABFLFwAiogsAEdEFgIibLgBELF0AiIguAEQ8LwNAxNIFgIjoAkBEdAEg4qYLABFLFwAiogsAEdEFgIibLgBELF0AiIguAEQ8LwNAxNIFgIjoAkBEdAEg4qYLABFLFwAiogsAEdEFgIibLgBELF0AiIguAEQ8LwNAxNIFgIjoAkBEdAEg4qYLABFLFwAiogsAEdEFgIibLgBELF0AiIguAEQ8LwNAxNIFgIjoAkBEdAEg4qYLABFLFwAiogsAEdEFgIibLgBELF0AiIguAEQ8LwNAxNIFgIjoAkBEdAEg4qYLABFLFwAiogsAEc/LABCxdAEgIroAEPG8DAARSxcAIqILABHRBYCImy4ARCxdAIiILgBEPC8DQMTSBYCI6AJARHQBIOKmCwARSxcAIqILABHRBYCImy4ARCxdAIiILgBEPC8DQGTNzJz9IQDgCixdAIiILgBEnv7cEL5KaxYBAAAAAElFTkSuQmCC" - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n" - ] - } - ], - "source": [ - "var image = Image(192, 256)\n", - "\n", - "for row in range(image.height):\n", - " for col in range(image.width):\n", - " image.set(\n", - " row,\n", - " col,\n", - " Vec3f(Float32(row) / image.height, Float32(col) / image.width, 0),\n", - " )\n", - "\n", - "render(image)\n" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "id": "ef3206b4-0bbb-4108-a592-f748843e5d3d", - "metadata": {}, - "source": [ - "## Step 2: Ray tracing\n", - "\n", - "Now we'll perform ray tracing from a camera into a scene with a sphere. Before\n", - "reading the code below, we suggest you read more about how this works\n", - "conceptually from [Step 2 of the C++\n", - "tutorial](https://github.com/ssloy/tinyraytracer/wiki/Part-1:-understandable-raytracing#step-2-the-crucial-one-ray-tracing)." - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "id": "778d8339-5b19-47ee-bdc6-a08e4ec5094c", - "metadata": {}, - "source": [ - "We first define the `Material` and `Sphere` structs, which are the new data\n", - "structures we'll need." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "1c4a79de-0b65-48ac-97c9-187b74b96b9f", - "metadata": {}, - "outputs": [], - "source": [ - "from math import sqrt\n", - "\n", - "@register_passable(\"trivial\")\n", - "struct Material:\n", - " var color: Vec3f\n", - " var albedo: Vec3f\n", - " var specular_component: Float32\n", - "\n", - " @implicit\n", - " fn __init__(out self, color: Vec3f, albedo: Vec3f = Vec3f(0, 0, 0),\n", - " specular_component: Float32 = 0):\n", - " self.color = color\n", - " self.albedo = albedo\n", - " self.specular_component = specular_component\n", - "\n", - "alias W = 1024\n", - "alias H = 768\n", - "alias bg_color = Vec3f(0.02, 0.02, 0.02)\n", - "var shiny_yellow = Material(Vec3f(0.95, 0.95, 0.4), Vec3f(0.7, 0.6, 0), 30.0)\n", - "var green_rubber = Material(Vec3f( 0.3, 0.7, 0.3), Vec3f(0.9, 0.1, 0), 1.0)\n", - "\n", - "\n", - "@value\n", - "@register_passable(\"trivial\")\n", - "struct Sphere(CollectionElement):\n", - " var center: Vec3f\n", - " var radius: Float32\n", - " var material: Material\n", - "\n", - " @always_inline\n", - " fn intersects(self, orig: Vec3f, dir: Vec3f, mut dist: Float32) -> Bool:\n", - " \"\"\"This method returns True if a given ray intersects this sphere.\n", - " And if it does, it writes in the `dist` parameter the distance to the\n", - " origin of the ray.\n", - " \"\"\"\n", - " var L = orig - self.center\n", - " var a = dir @ dir\n", - " var b = 2 * (dir @ L)\n", - " var c = L @ L - self.radius * self.radius\n", - " var discriminant = b * b - 4 * a * c\n", - " if discriminant < 0:\n", - " return False\n", - " if discriminant == 0:\n", - " dist = -b / 2 * a\n", - " return True\n", - " var q = -0.5 * (b + sqrt(discriminant)) if b > 0 else -0.5 * (\n", - " b - sqrt(discriminant)\n", - " )\n", - " var t0 = q / a\n", - " var t1 = c / q\n", - " if t0 > t1:\n", - " t0 = t1\n", - " if t0 < 0:\n", - " t0 = t1\n", - " if t0 < 0:\n", - " return False\n", - "\n", - " dist = t0\n", - " return True\n" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "id": "e5ed8e76-efc1-4905-90ea-4cad6df0c553", - "metadata": {}, - "source": [ - "We then define a `cast_ray` method, which will be used to figure out the color\n", - "of a particular pixel in the image we'll produce. It basically works by\n", - "identifying whether this ray intersects the sphere or not." - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "id": "beeecde1-f365-4be5-a3b1-d8a145810be1", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "fn cast_ray(orig: Vec3f, dir: Vec3f, sphere: Sphere) -> Vec3f:\n", - " var dist: Float32 = 0\n", - " if not sphere.intersects(orig, dir, dist):\n", - " return bg_color\n", - "\n", - " return sphere.material.color\n" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "id": "1baec786-664c-4fea-8be1-c2d5f25924e7", - "metadata": {}, - "source": [ - "Lastly, we parallelize the ray tracing for every pixel row-wise." - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "id": "80c81118-acf9-4786-9a3a-694fe7f2d08a", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAB2MAAAWMCAYAAAATKi3mAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8pXeV/AAAACXBIWXMAAATsAAAE7AGKbv1yAABKUUlEQVR4nOzde5CddX3H8e85u3t2N9lkc11CCESEXEgD2CRY1KJStNrRabWidAZGOy3qH62O1dE6dRCYsVXqH7ZTW+8WrdVpB2+1DkWQKVQCbeQypSAkQAhJSHYJuWw2ezm7e57+EQ3BAiWw333O7nm9ZpjZk7MhnznJHzl5n9/zVIqiKAIAAAAAAACAKVUtewAAAAAAAADAbCTGAgAAAAAAACRoP/5BrVYrawcAAAAAAADAjFev14997WQsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEA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AABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAP63fTs4AQAEYCCG+w9dpzgESSbo/ygAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAIDA2bbXIwAAAAAAAAB+4xkLAAAAAAAAEBBjAQAAAAAAAAIXPgf3yqAAlNMAAAAASUVORK5CYII=" - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n" - ] - } - ], - "source": [ - "from math import tan, acos\n", - "from algorithm import parallelize\n", - "\n", - "\n", - "fn create_image_with_sphere(sphere: Sphere, height: Int, width: Int) -> Image:\n", - " var image = Image(height, width)\n", - "\n", - " @parameter\n", - " fn _process_row(row: Int):\n", - " var y = -((Float32(2.0) * row + 1) / height - 1)\n", - " for col in range(width):\n", - " var x = ((Float32(2.0) * col + 1) / width - 1) * width / height\n", - " var dir = Vec3f(x, y, -1).normalize()\n", - " image.set(row, col, cast_ray(Vec3f.zero(), dir, sphere))\n", - "\n", - " parallelize[_process_row](height)\n", - "\n", - " return image\n", - "\n", - "\n", - "render(\n", - " create_image_with_sphere(Sphere(Vec3f(-3, 0, -16), 2, shiny_yellow), H, W)\n", - ")\n" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "id": "ee9bbf4c-91ad-4787-a332-b509fdc8d512", - "metadata": {}, - "source": [ - "## Step 3: More spheres\n", - "\n", - "This section corresponds to the [Step 3 of the C++\n", - "tutorial](https://github.com/ssloy/tinyraytracer/wiki/Part-1:-understandable-raytracing#step-3-add-more-spheres).\n", - "\n", - "We include here all the necessary changes:\n", - "\n", - "- We add 3 more spheres to the scene, 2 of them being of green rubber material.\n", - "- When we intersect the ray with the sphere, we render the color of the closest\n", - " sphere." - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "id": "b4774ada-3cef-4ce3-a573-3fd721fe41b0", - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAB2MAAAWMCAYAAAATKi3mAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8pXeV/AAAACXBIWXMAAATsAAAE7AGKbv1yAACKqklEQVR4nOzdd5hdd30n/ve5d+70plGXbMm2uptcMN00h5YQAtmwIUsNkJBNNgUSkk3IhmUT8sumJ8+PFNLYpW1Ywoaw+2Npxiam2oANuFtuki1ZvY6m3vv7Q0a2cZWlM+fOzOv1PHqYe+femTdn7sx4zvt8vt+i1Wq1AgAAAAAAAMApVas6AAAAAAAAAMBcpIwFAAAAAAAAKEHHg290dnZWlQMAAAAAAABg1puYmDj+tslYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAA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nszHPnZ7PvWpuzM11aw6DsCMabVaueKKe/ORj9yWPXvGqo4DAJwiylgAAAAAAACAElimGAAAAACgQocPT+bw4cmMj09XHQUAOMWUsQAAAAAAFXr/+2/Ohz50S+69d7TqKADAKaaMBQAAANrO6OhUbrxxf5Yt68nKlX1JiqojAZxye/eOZceO0dx0077ccsuBquMAACUoWq1W63s3Ojs7q8wCAAAAkCTp6CgyMNCZV7zijPzBHzwjRaGMBeaeD3/41rzrXVdndHQqY2OWKAaAuWJiYuL42yZjAQAAgLYzNdXKvn3jOXx4Kq1WoosF5qLx8ens3TtedQwAoES1qgMAAAAAAAAAzEXKWAAAAKBt3Xbbgfzt396Yb3xjV9VRAE6ZrVsP5+/+7sZcddX2qqMAACWzZywAAADQ9t7xjs35j//xoqpjAJwSn//8trz2tZ/PxESz6igAQAkevGesyVgAAAAAAACAEnRUHQAAAAAAYD5otVqZnj7274H1CgGAuUwZCwAAAAAwA+6550h+93e/mS1bDmZqyhLFADAfKGMBAACAtjc2Np39+8fT29uRzs561XEATkiz2crhw5O5997RfPaz27J373jVkQCAGVK0Wg8siNHZ2VllFgAAAIBHtGRJT5Yt682v/doFeclLVlUdB+CE7N8/nre97cu56aZ92bLlYKanrVEMAHPZxMTE8bdNxgIAAABtb+fOo9m582j27TNNBsw+09Ot3Hrr/txyy4GqowAAM6xWdQAAAAAAAACAuUgZCwAAAMwat9xyIF/60vYcOGBCFmh/zWYr3/3u3nzlK/flyJGpquMAABWwZywAAAAwazQatfT1deSDH7wsz3jGsqrjADymycnp/ORPXpHLL78nExPTadkqFgDmBXvGAgAAALPS5GQz4+PTaTY1GkA7a+Xqq3flhhv25c47D2V8fLrqQABARZSxAAAAAACn2Mc+tiV/+7c3VR0DAKiYPWMBAACAWWVyspkPfODW/Pmffyd7945VHQfgEVmSGABIlLEAAADALDM11cr//J9b8r733ZD9+yce/wkAM6jVaqXZrDoFANAuLFMMAAAAUKpWkqLqELNcWcfwRD9u2Y+fD9rlGJb3tfnc57blox/dkmuv3VPKxwcAZhdlLAAAADArNZutjI5O5ejRqXR311MU7Vp6tWuu2aSsY3iiH7fsx88H7XIM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+plce+3uakPNMutftz5n/siZD9zhZcpjaSXT49P5xnu+kX037Ks6TZJje26fdlpf/uVfXppVqwaqjgNz0vj4dF772s/nC1+4Jw+czQQAaE8mYwEAYA677LKVueiiRUmSnp6OLFnSk6LQbpWlKIp87/B2d3fk9a9fnxe+cGWSZOvWI/nYx27P1PeWWOUhBtcMZvFFizO8cVgByxNXHNtPduXzV2bknJEkyfi+8dx75b1pTlbzvdZqJQcOTOR977shmzYtyKtetSadprvhpH3ta/fli188tiz51FQzd9xxUBELAMw6ylgAAJhDiiJ54QtPy0/91NlVR5mXurrqecMbNhy//eUv78i//MudythHMbR2KGtfvbbqGMxCRb3IyhesPH774JaD2fGVHZWVsUly8OBk/vIvb8hTnrI4L3/5GWk0alYkgCfpewv5ffWr9+X3fu9bFacBADg5likGAIBZ7vzzR/KWt2xKrXbshP/FFy/O+vXD1YYiSbJz59FceeW9+fKXd+S///dbqo7TNvpX9Wf1y1an//T+DHutcgpMHprM7mt3Z/8t+3P3p+5OKpycW7iwO8973oo8/elL88Y3brj/Z3MrStmT5RjOJ9/85q78wz/clOuv35frrttTdRwAgBNmmWIAAJgDiuLYJOaZZw7mx398bTo6alVH4vssWdKTV71qTYoi+djHbj8+6TMx0cz09DxcZ/H+5WV7l/ZmxXNXpOY1yynSGGhk+aXLU++u557L70lzsplWRd9je/aM5Z/+6fZMTjbz4z9+bLniRsNr/eQpYueyVquV8fHp40sQb9lyMP/jf2xJszkPf1cCAHOOyVgAAJilzjprML/zO5dk1aqBbNw4bF/YNrZz59HceuuBJK20Wsmf/Mm3c8UV91Yda8b1LOnJxp/cmJ6lPRlYNaBb4ZSbODiRI9uOZPtV27P101srzbJoUXfWrx/Kq161Jq9//YbHfwLMY7t3H82v//rXsmPH0STHLmq4+eb91YYCADgJJmMBAGAWq9WKLFzYldWrB/L0py/L0JCLKtvdkiU9WbKkJ8mx6Z///b/vyk037cveveOZmJjb+8k2Bhqp3T8V2LOkJws2LUhjoFFxKuaqzsHOdJ7dmcPbDqdrpCtTR6YyPT5dSZbdu8eye/dYzj57JNu3H7n/3iIjI13p6qpXkgnaTavVyt6949m69XC+/vWd2bbtyOM/CQBgljEZCwAAs8yiRd35q796TtavH8qyZX2p140Xzi6t7Nw5ll27juYXfuGqXHvt3N0Lr6gXOfutZ2fk7JEkx5Yo7hrpSlHzmqVck0cmM3lwMrf9j9uy/artlWYZHu7MggVdSY4tLf8nf/KsPPWpSyrNBO3i6NGp/MIvXJWrr96V7duPZGrKssQAwNxgMhYAAGahoji2NPHq1QNZu3YoK1f2Vx2JJ6XIkiU9GRxs5LzzFmZiopnbbjsw5yZkuxd1p2ukK/0r+9O7vLfqOMwzjb5GGn2N9K/uz+C9gxndPpqpo1OVZNm/fyL79x87EdPZWct3v7snvb0dWbt2MN3dTssw/+zYMZodO0aTJGNj07n11gPZuvVwxakAAMpjMhYAAGaJrq56/v7vn5dnPWtZ+voaqZkunNVarVZGR6eydevhvPrVn5tzJ6I3vGFDTvuB01LvqqcwvU1FmhPNTI1N5bo/vi57v7O36jhJkt7ejixf3puPfOQHsmbNUNVxYMb96Z9+O3/2Z99OkrRayejoVKanTcQCAHOLyVgAAJgl1q0bysaNw0mSRqOWVasGMjBwqi6ibCU5kZKs7MfPBw8ck6Io0tfXyJIlPXnhC0/LLbfsz1e/et+sX6Kxd3lvBlYPpH9Vfzp6/clJtWqdtTTqjYycO5J6Zz37bthX2YTs94yOTmX37rF8/vP35Prr9yVJli3ryVOessRFNo+prN8pfheWbc+esXztaw/8fvvOd/bk4MHJilMBAMwck7EAANDGfumXzs9v/MaFx2/XakWKYn6f1J1rWq1Wms1WvvnN3XnVqz6TQ4dm9wnq1S9bnQ1v2HDsdeqlSptoNVuZODCRa959TQ63yRT6g4vXF7/49Lz//c9PR0etwkRQjq98ZUde/erPZXT02IUQrVYrrdl93REAwOMyGQsAAG1u3bqhvOhFp+eZz1yaet3J+bmsKIrU60WWL+/NT//02bn++r359Ke3zroT1b3Le7PkkiVZcM6CFKb7aDNFrUhHT0dWvmBlDt99ONu/tD3NivdpbjYf+Ca//faDee97v5uLLlqcSy9dXmEqOHUOHBjPxz9+R66/fm/Gx6cf8poHAJhPTMYCAEAbeuUrz8z73vdcS1bOQ5/4xB15y1uunHUnrZc8dUku+JUL7A9L2zt89+F8/V1fz2QbLpP6Mz9zdt7znqd+372+p5hNHvjddccdh/Lyl38q9947WmEeAIBqPHgyVhkLAABtZPXq/vz0T5+djRsX5LnPXW5J4nnozjsP5oor7s3ll9+T//N/7q46zuPqXtSd1S9bnf7T+rPogkV6I9re5OHJ7Lx6Zw5uOZitn96aVhtd+HD22Qvy1KcuSZLU60Xe+MYNOfvskYpTwRPTbLbygQ/ckm9/e0+S5NChyXzqU3cfX54YAGA+sUwxAAC0oUajlhUr+vLa165Pf3+j6jhU5IwzBvPGNw7myJGpfPaz2zI11WrbKdmiXqRrQVdWvmBlGn1es8wOjf5GVj5/ZboWdOWeL9yT5kSzbQrZG27Ylxtu2Jck6ego8tznrsjatUNpNGouzqEtTU+3Mj3dPP725z+/bVZcSAQAMJNMxgIAQBtYtKg77373JVm7djAXXLAoHR32iZ3v7rrrUG677UDe974b87nPbas6zsM0+htZ//r16T+tP0NrhyxPzKwzcXAiB28/mF3X7Mrdn2q/8qgokvPOW5gzzxzIu971lKxePVB1JHiYz352a973vhuTJK1WK9/97t7s2jVWcSoAgOqZjAUAgDZRFMngYGdWrOjLpZcuy8qV/VVHok2sXj2Q1av7c+WV9+Zb39qdgwcnMjnZrDrWcbVGLSNnj6R3eW/VUeBJ6RzszKILFmV873g6BzszNTaV5kT7fI+1Wsm3v70nd999KFu3Hk5f37FTOI1GPYODDZOyVGJqqpmDByeOr9hw880Hcvnl91ScCgCgvZmMBQCACvX01PMnf/KsXHTRoqxa1Z9Go151JNpKKzt2HM3OnUfzq7/6lVx99a6qAx3XtaArT/3tpypjmfUmD09mfN947vjEHbn3C/dWHedh6vUip5/en+7uY78fLrlkSX7/95+ezk6/L5h5d9xxMD//81dl377xJMn+/ePZseNoxakAANqPyVgAAGgTtVqR1av7s2bNUNVRaEtFli3rzchIVzZtWpD9+ydy112HMlHl9F6R9CzuSc+SnhQdJvOY/Rr9jTT6Gxk4fSD9p/fn6O6jmT46XXWs46anW7nzzkPHb/f3N3LjjfuOl7FLlvRk4cLuquIxx7VarWzbdiSHD08mSe6441Buumn/8TIWAIDHZzIWAAAq1NfXkY997EV56lOXVh2FNtZqtXLo0GS2bx/Na1/7+dx++8HKstQatWx+++Ys2LQgHX0dKWoKWeaG6bHpTI1N5bvv/W52f3N31XEeVaNRy8BAI99bpfgd77ggP/VTZ1cbijlrcrKZn/3ZL+bKK49NjU9Pt3LgwEQeOJsIAMAjMRkLAABt4NxzR3LGGQMZGuqqOgptriiKDA52ptls5dJLl2Xx4u5885u7Z3wP2f5V/eld1puepT1pDDRm9HND2erd9dQ6axleP5zWVCsHbj2QqaNTVcd6mMnJZvbufWAq8dvf3pvPfW5bkqSjo8iFFy7O0JCL7Xny7r77UG655UCSY3vE3nHHoezZYxIWAODJMhkLAAAVKIrkve+9NK985Znp6KilZrqQJ6DVamVqqpXrr9+bH/uxz8z4MpHn/PtzsuJ5K1Kr1xIvWeao1nQrk4cnc81vX5NDdxx6/CdUrF4vjv8OGRho5KMffWEuvHBxxamYzf76r6/Pu951zfHbU1NNk7AAACfIZCwAAFTo4osX5YILFmX9+uHje/7BE1EURRqNIkuW9OQ1r1mXm2/en89/fluaJQ/IDq4ZzNC6ofSv6k+to1buJ4OKFfUi9e56lj1zWfpP68/Or+/M9Hj77CH7/aanW5mePtaUHTkylU984s588/uWWV67dijPec7yFIWrKHjA6OhU/r//764cODDxkPu/8pX7ZnzlBQCAucxkLAAAzLB3vvOivP3t599/y4lxnoxjf8Z9+tPb8vrXX56pqXJPmp/1Y2dl3U+sK/VzQDsa3T6ar/+nr2d8hqfQT7VXvWpN/uIvLrUKAw+xY8doXv7yT2XLlur2IQcAmKtMxgIAQAUuumhRfuRHzszTn74kSlhOzsy8fgbPHMzyS5dneMPwjHw+oBzXXbc773rX1Tk2GFvkla88MxdeuKjqWMygK6+8N5///LaH3HfkyFT27BmrKBEAwPyhjAUAgBmyadOC/NzPnWOZSE6Zoji2X+T0dErZz6/vtL6c8fIzXDvAvFbUimPfA7N4z8xbbjmQW245cPz2hg3DOf/8kYc9rl4v4ht+bmi1Wmk2H3jRXn31zrz3vddXmAgAYP5SxgIAAMxSmzcvzN/8zXPzmc9szQc/eGvVcWDO6VrQlbN/5uwc3HIwWz62Ja2pWdzIPsjf/d2N+cxntj7kvjPPHMiv/uqF6e11qmguuO22g/mDP7g24/fvd3zrrQce5xkAAJTFf2EDAEDJ6vUifX0d6enxn9+cWkuX9uaHfmh1du8ey7/8y10ZG5vKxMTJ7x9b1IrUu+upd9VPQUqYverd9Sy+aHE6ejpy9/+9O1OjU2megu+xql133Z5cd92eh9x3/vkjectbNmVysvGge4v09NTT2elnQTsaG5s6XrZ+v61bD+dTn7o7o6NTM5wKAIDvV7RaDyxm1dnZWWUWAACYky68cFHe856nZvny3qxa1R9LQHKq7dp1NPfccyR/8RfX55/+6faT/ngDqwey6S2b0r2wOz1Le05BQpjdpo5OZXT7aHZevTNbPrql6jil6O3tyJo1g/cvVfyAX/zF8/Pyl59RTSge09///Y350IceeVWEI0emsmXLwYcsVQwAwMyZmJg4/rZL8wEAoCSNRi3Ll/dm3bqhXHDBonSZMqQkixf33P+v+6Q+TlEv0j3Snb6VfRlcM2gyFu7X0dORwbMGc+jOQ1VHKc3o6FS+8529D7v/5pv35/bbDz7kvs7OY7/f6vXaTMWb1yYnp3PvvaOZnn5osXrjjftz7bV7HuVZAAC0C2UsAACUZMWK3rz//S/Iaaf1pbPTCWvaX9dwVzb/8ub0LO1J3bKkQJK/+Ivv5v3vv+kh961fP5y///vnZ8GCropSzS/33HMkb3zjF7Jr19GH3H/o0GRFiQAAOBHKWAAAKEm9XsuSJT0ZGTm5aUV4os48czDPetay3HjjvuzdO37Czy9qRTqHO9M5aAsbeCRdC7oycu5IRu8bzdiusarjzIiDBydz8OBDS7+urnq+8pUdGXyEnxVFkWzcuCALF/rddyLuvffIwyaQv+eee45k27Yj2bfvxH+uAwBQPXvGAgBASc46azCf/ORLs2xZb9VRmCcmJ5sZG5vKT//0lfnMZ7ad8PN7Fvfkkt++JD2L7RMLj6TVbKU51cyWj27JHf/rjqrjVKYoks7OeopH2AK9o6PIX//1c/OSl6ya+WCz2Pvff1Pe+c6vP+L7Wq1kfHx6hhMBAHAy7BkLAAAlajRqueyyldmwYTg9PZZ6ZeY0GrUURccJ7+NY1IssumBR+k7rS0e3PxPh0RS1IvXOeobWDWXF81dk3w37cvS+o4//xDnmscrBWq3IFVfc+7jT+Zs3L8w554yUEa9t3HDDvlx77e4n9NivfvW+jI0pXAEA5iJ/ZQMAwCnW29uRd7zjgmzevPARp4ag3dQatZz1b87K8IbhqqPArLD0aUuz5JIl+c6ff2delrGPpdls5W/+5sbHfdw733nRnC9jP/e5bXn3u6+pOgYAABVTxgIAQAmKIik0sVSgVivyYz92VjZuHM6HP3xr7nucomjZM5dlcM1guhfZ3xFOhJ/xJ+fKK+99UpOgHR21/Nt/uyZnnDFQQqqHu/vuQ/nHf9ySycnmCT/36qt3lpAIAIDZRhkLAACn0LESNkmcpKcatVqRV7zizDzveSvyuc9te+wytkiWPG1Jlj97+cwFhLmkuP9fq+ogs89VV+3IVVftOOHndXfX87SnLcmqVf0lpHq4rVsP58/+7Ns5etQSwgAAPDnKWAAAOEVqtSJvfeumXHLJzJ0kBqAiRbLqxauy8NyFuf2fb8/ovaNVJ5oXJiaa+dM//XY+/OFbZ+Tz7do1lomJE5+KBQCA71HGAgDAKVIUyTOesSw/9EOrq44CSZKeno709NQzNjad1vdN7hUdRWqNWmr1WjXhYA4Y3jicgTMGsu3ybcrYGdJstvLFL26vOgYAADxhylgAAIA5qL+/kd///afnllsO5Nd+7avZt2/8Ie9f+fyVWfm8leld0VtRQgAAAJj7lLEAAHAKDA11Zni4Mz09/hOb9tDRUct55y1MT09HGo2HT7/2LOnJ8MbhmQ8Gc02RdA13pWukKxP7J9Jq2kAWAAB4gDNFAABwCrz5zRvz2teuz+LFPVVHAWAG1Tvr2fSWTRm9bzTX/fF1Gd8z/vhPAgAA5g1lLAAAnAILFnRl9eqBqmPAw3R317N588Lceeeh3HbbgTQGOtOztCddC7qqjgZzQ5F0LehKa7qVWs0ezAAAwEMpYwEAAOawFSv68rd/+7xcddX2vOlNX8jCixZl05s3pdapNAIAAICy+esbAABgDqvVivT3N+7fz7hIUS/S0duRWoc/B+FUqnXVsvgpizNy3kiKelF1HAAAoE346xsAAADgJHUOdGbjmzdm3avXpdZwugUAADjGMsUAAHASzj9/YZ7//BW56KLFVUeBx9SzpCdn/MgZ6bG3MZSmKIrEUCwAAPAgylgAADgJl1yyOL/1WxfH2XfaXe+y3qz7iXWZbLaqjgJzWxG/EgAAgOOsmwMAADAPrOjtyE+uG8qlS3uqjgJzWu/S3mx686ac9gOnVR0FAABoA8pYAACAeWCkq57nLe/NxuGuqqPAnNY51JmVz1+ZkfNGTMgCAADKWAAAAAAAAIAyKGMBAOBJ6OysZfHi7gwMNKqOAkAbqnfW0zXclXp3veooAABAhZSxAADwJDzlKYvz8Y+/OG996zmxDiUA32/k3JFc8u5L7B0LAADzXEfVAQAAYDbq62tk3bqhNBomnphd+htFVvc3sn9iOgcmmlXHgTmro7cjHb0d6RzqrDoKAABQIZOxAAAA88gFI9155+aFeeaSnqqjAAAAwJxnMhYAAGAeadSKNGpFOmuW1wYAAICymYwFAAAAAAAAKIHJWAAAgDbXbLXyjT1j2TM2fcLP7euo5amLu9NVdy0uVGFozVBW/eCq7P3O3hzeerjqOAAAwAxTxgIAALS56VbyuXtG85194yf83OW9HTlvpCtd9RKCAY9r4eaFWbh5Yb77F99VxgIAwDykjAUAgBOwbFlP3vKWTdm4cUHqJg15Elpp5Uv3Hc3thyaf8HOareTe0akn9fkOTjTzP+84lK76Q/eIveXAxJP6eAAAAMATp4wFAIATMDLSnde/fkMWLuyuOgptqZXp1uM8opVct3c8X7rv6Iwk+v/bu/MYT+/Dvu+fmdmd3eXyECmSK9KkJCuS7MqSE1mu5dqx4xx1GxQNgsZA0ziFkQOF/yhcJ2laFKgTqEFg/ZGihqPYVlLVNpSoSaNETmzZoU2ROiJFoURS9JK7y13uvTOzu3PP776ep3+sNOJKFPfgfueZ4/UCBMz1036wAEnMvOf7fDvjKk8vdLfkzwIAAACuJ8YCAADcIYNJnX95rpXL3de/2/Vc++ZPxQIAAAA7lxgLAABwG0ZVncG3HIPtTaocWx2KrcC32XdwX/bfvT/j3jj1jY7QAwAAu4YYCwAAcBueW+7nt863r/tYVSdXerd3tyuwu739z709j/zYIzn+seNZP7Xe9BwAAGCLiLEAAACvo6rrLA8mGVXXf/xSZ5zzTsACN+nggwcze99sZg7OND0FAADYQmIsAADA6+iO63z0xHrmu9eH10HlMaMAAADA6xNjAQAArlNnvjvJymCSJOmOqyz1x1kbVjd4HQAAAMD1xFgAAIBv8Zn5Tp6c726+P3YKFgAAALgNYiwAALDnLfbHeWl1mG8k1/PtcUYCLAAAAPAGibEAANCYOslU0yN2uNf7O7z5v9/z7VE+dnItE/0VAAAAuIPEWAAAaIwQ+8a93t/hd/5cb1zl6YVuWqNr98Au9MZxEBYobWp6Ko/96cfypne9KRefvJjRxqjpSQAAQGFiLAAAsCfUdb35GOLepM6T891c7o0b3QTsLVMzU3nkxx7JYG2QK//xihgLAAB7gBgLAADsenXqPLXQzbG1YZJkWNVZG04aXgUAAADsdmIsAACwK03qOsNvPHu4Tl5eH+Y/XO01OwoAAADYU8RYAABgVzq2Osy/Ot9K/fUee8UjiQEAAIAtJsYCAAC7yqiqsz6cZK47zqn14eY9sQAAAABbTYwFAAB2lYudUX7l+Fpao0qIBQAAABolxgIAALvCqKpzsTPKmdYoS/3JN++LBQAAAGiIGAsAAOwK68NJfvX4WhaFWAAAAGCbEGMBAIAdqU6dk+ujLPXHSZLWqMrGqBJiAQAAgG1DjAUAAHamOnlyvpMvXem9+kMAAAAA24YYCwAA7DjH1gY5sTbMxfZYgAV2nH0H9+Xx/+LxtC+0M//5+VTDqulJAABAIWIsAACwg9Spk7y4OshvnW83PQbgtswcnMnb/qu3pXW2lStfviLGAgDALibGAgAAO8aJ9WE+t9DL2fao6SkAAAAANyTGAgAA215V1xnXyaXOOJ+73G16DgAAAMBNEWMBAIBt70J7nH9+diNL/UnTUwAAAABumhgLAABsO3VdpzWqMqmvvX+5N87xtWFGVd3sMAAAAIBbIMYCAADbTm9S55+cXM9cZ5wkGVZ1xkIsAAAAsMOIsQAAwLZRp87V3iTLg0kWuuNc7o2bngQAAABw28RYAABg26jq5JPnWnl+eZD+pGp6DgAAAMAbIsYCAADbwsXO6Npp2O443bEQCwAAAOx8YiwAALAtfO5yN//uUie1q2EBAACAXWK66QEAALCTLC/38+u/fiKf/vT5TCaq4Z1U19ceU+xvFQAAANgtxFgAALgFV6708ou/+Hw+/vGTqSqP0r0z6kiwAAAAwG7kMcUAAECjjq8N8x8X+3l5fdj0FAAAAIA7SowFAAAaUdd1JnVyvj3K7891mp4DAAAAcMeJsQAAQCPOtEf5rfPtXOmNm54CAAAAUIQYCwAAbKlJXac3rnOlN8nXlgeZ1O6LBQAAAHYnMRYAANhSV3uT/JOX17I8mKQSYgEAAIBdbLrpAQAAsBO126OcOLGWK1e6TU/ZMSZ1ncu9cS51R7nYGWexP4kUCwAAAOxmYiwAANyGr351MX/hL/x+PvrRY4mkeFM64yofPbGWf3xiPd1x1fQcAAAAgOI8phgAAG7DaFRlebmfdnvU9JRtr6rrnGuPcqU3yfJgko4QCwAAAOwRYiwAAFDUpE7+1blWjq4MM3FHLAAAALCHiLEAAEBxkzoZC7EAAADAHuPOWAAAAAAAAIACxFgAAHgDnnnmav7u3/1qvvSly01P2YbqPLPYy784s5GF7rjpMQAAAABbzmOKAQDgDTh6dCVHj67kyJFD+ZEfeUvTc7aNuq5TJ/nDlUGeWug2PQcAAACgEWIsAADsWXWSqSJf/+zyIP/+SjfnWqPbGQYAAACwK4ixAACwZ91KiL21r1/ojvPMYv8W//8BAAAAdhd3xgIAAAAAAAAUIMYCAMAdsLIyyLlzG+l09vZjefuTKld647THVdNTAAAAABonxgIAwB3wsY8dz5//80/ky1++0vSURh1fG+bvv7Ccz8x3m54CAAAA0Dh3xgIAwB2wsTFKpzNOvz9pekqjhlWdlcEkVd30EoDtqxpXaZ1rpX2+nWriSQIAALCbibEAAAAAW2jcHuelX30pnblOqpEYCwAAu5kYCwAAd0hdJ1/84uUMBpP8yT/5aO6//2DTk7ZMa1TlxdVBXl4fpnYqFuB11alTjSohFgAA9gB3xgIAwB1SVXU++tFj+dt/+z/kwoV203O21GJ/nP/n5Hr+YK4TLRYAAADgGidjAQDgDrv5k6F1kqmCS8rrjat87nIvlzqjDKtaiAUAAAB4FTEWAAAKqOukrutMTSXfObju7BCbJL1JnSfmOrnSGzc9BQAAAGDb8ZhiAAC4w7rdcT784efzoQ99NWtrw6bnAAAAANAQMRYAAO6w0ajKH/zBpXz60xfS70+anlNEnTqjqs5wUqe++ecyAwAAAOwpHlMMAADcsnGVfOL0Rk63RlkbVk3PAQAAANiWxFgAAChkMqly+XI3+/ZN581vPpCpqZ1/R+w3VHWd8+1RXtnwGGaAm1Ynw9Ywg5VBqolfZAEAgL1AjAUAgELm5jr5mZ95Kj/8w0fyy7/8x3PgwEzTkwBoUDWucuLXT2T1+GoGK4Om5wAAAFvAnbEAAFDIeFzn0qVOXnllPc89t5jz51tJ3K8KsJcNVgfpL/ZTT/z3AAAA9gIxFgAACjt6dCV/8S8+mX/0j15M7WfvAAAAAHuGxxQDAEBhk0mddnuUfn/S9JQ3rE6dMxujLPTGaY3cdwgAAADwesRYAADg5tXJH8x38++vdFM55QsAAADwujymGAAAtsixY6v5h//waL7ylatNT3lD6roWYgEAAABughgLAABb5Pnnl/KhDz2bz39+IUn99f/tJDttL8A241+jAACw53hMMQAAbLHf+70LmZ/v5Kd/+l35gR94qOk5N+255UGeW+7n1Mao6SkAO8785+az8tJKOnOdpqcAAABbSIwFAIAt9vzzS/na15byQz/0cN773geyb990pqenmp51Q2dbozw13216BsCOtPLSSuY+M9f0DAAAYIt5TDEAADSgrpOPfOTF/NW/+tmcOrXe9BwAAAAACnAyFgAAGnLs2GrOn29lff29TU8BAAAAoAAnYwEAAAAAAAAKcDIWAAAaVFV1zp5t5f77D+Rtb7sns7MzTU/6Np1xleX+JOvDSdNTAHac4fowg7VBxu1x01MAAIAGTNV1XX/jndnZ2Sa3AADAnnTvvfvztrfdk3/6T/90Hnvs7qbnfJsvX+3lN06tpz+pM6zqG78AgE3nf+d8Tn/ydCb9SapR1fQcAABgCwyHw823PaYYAAAatrExysJCN5/73EKeeeZqxuPt9cP6UVWnNaqEWIDbMBlOMmqNhFgAANijxFgAANgGlpb6+Zt/84v50Ie+mn7f44ABAAAAdgMxFgAAtonxuM78fCe/+Zsv56mn5vKqG0UAAAAA2IHEWAAA2EYuXGjn7/ydr+QTnzgVLRYAAABgZxNjAQBgGzp6dDm/8AvP5MknLzU9BYDbsHF2Iy//5stZfHax6SkAAECD9jU9AAAA+HavvLKRV145loMH9+UnfuLRzY/PzExlampqSzbUqVPVSbUlfxrA7tKZ6+Tcb59LPOUAAAD2NDEWAAC2sd/+7XM5eXItSTI7O52/9bf+aN7znge25M+e64zzqfPtXO6NtQQAAACA2yDGAgDANnb69EZOn95Ikhw4MJOf+qk/ksceuzuHD+/PzEzZE7KtUZXnlvsZTKRYgJtVV3UmvUkmg0nTUwAAgG1AjAUAgB1iOJzkF37hmbztbffkl37pR/P443c3PQmAb9G+2M6xf3wsg5WBRxQDAABiLAAA7BR1nZw928rGxiinTq0lSR599HDxE7IA3LxJf5LWuVYmfSdjAQCAZLrpAQAAwK1ZXR3kZ3/2C/n5n/9i2u1R03MAAAAA+A7EWAAA2GGqqs7ycj/nz7fyxS9ezksvraSuPQsToEnVqMray2vZOLORuvLvZAAA4BoxFgAAdqhz51r563/9s/kH/+CFTCZ+8A/QpOH6MC9+5MWc+I0TqYZV03MAAIBtwp2xAACwQ9V1MhhMcvbsRj7xiVObd8f+4A8+nO/5njc1Ow5gD6pGVeqxX44BAAC+SYwFAIAd7ujRlfyNv/Glzfc//OEPirEAAAAA24AYCwAAu8wTT1zM1au9JMmhQ/vyl//yu/Pww4du+vXtUZWnF7q52Bll7N5DgNdVjavMPz2f1vlWRp1R03MAAIBtRowFAIBd5umn5/P00/NJkgceOJCf/MnH8+CDBzM9nSRTN3x9Z1zliblOVgaTskMBdoF6XGfus3NZO7HW9BQAAGAbmm56AAAAUE67Pcrf+3tfzYc+9NVsbHzriS2nXgEAAABKEmMBAGAXGw6rPPnkXJ544mJWVwdpt0dpt0cZOPUK8IZVoyrj/ji1R7oDAADfgccUAwDAHnDxYjt/7a99Nvv3X/t9zD/7Z9+an/u59zY7CmAnq5MznzqTpeeW0r7UbnoNAACwTYmxAACwB/T7kzz//NLm+48/fncuXuxc9zXT08lDDx3a6mkAO1Z3vpv1U+tNzwAAALYxMRYAAPagJ564kGeeuXrdx+6+e39+7dd+PA/9kXsbWgUAAACwu4ixAACwB7Xb47Tb1z9W86679uVrX1vKke4ow6E7ZQG+k/5SP/3lfoYbw6anAAAA29xUXdf1N96ZnZ1tcgsAANCwQ4dmcviRw3nv//YDOfDAgabnAGxLpz95Omc/dTbVqEo9qW/8AgAAYE8ZDr/5i5tOxgIAAJt6vUnSHeVVv7MJwLeoRlUmfU8QAAAAbmy66QEAAAAAAAAAu5GTsQAAAAA3oXW+lcVnF7N2Yq3pKQAAwA4hxgIAAADchI3TGzn1z041PQMAANhBxFgAAACA19GZ6+T8p8+nfbHd9BQAAGCHEWMBAAAAXkudVOMqvcVe5p6eSzWsml4EAADsMGIsAAAAwGvor/Tz8m+8nO7lbqqREAsAANw6MRYAAADgNVTDKqvHVzNYHTQ9BQAA2KGmmx4AAAAAAAAAsBs5GQsAAADwKnVVp7vQTWeuk2ri8cQAAMDtE2MBAAAAXmXSn+TYR49l4+xGxr1x03MAAIAdTIwFAAAASJI6WX9lPd3L3fSWehl3hVgAAOCNEWMBAAAAktR1nbO/dTZXn7mauqqbngMAAOwCYiwAAACw560eW8366fV05jtCLAAAcMeIsQAAAMCed/UrV3Pu355regYAALDLiLEAAADAnrV6fDWXv3Q5q8dXm54CAADsQmIsAAAAsPfUSV3VaZ1t5cLvXmh6DQAAsEuJsQAAAMCes3FmI6c/eTrdy92mpwAAALuYGAsAAADsGXVVZ9wdp3u5m8VnF1NP6qYnAQAAu5gYCwAAAOwZvSu9vPirL6a/2BdiAQCA4sRYAAAAYNerqzr9xX7al9ppnWtl3Bk3PQkAANgDxFgAAABg1xt3xjn6kaNpX2xn3BViAQCArSHGAgAAALtXnWyc3Uj3Sje9xV5GrVHTiwAAgD1EjAUAAAB2rWpS5ZV/8UqWv7acalw1PQcAANhjxFgAAOA6k+4kC19YyN2P3Z0H3/9gpmammp4EcFtWj6+mfaGd3pWeEAsAADRCjAUAAK4z3Bjm5MdP5v733J8H3vdAZmZmmp4EcFsWvrCQi09cbHoGAACwh4mxAAAAwK6yenw1i88uZu3kWtNTAACAPU6MBQAAAHaHOqnrOmsn13L2U2ebXgMAACDGAgAAALvD+ivrOfc759K51Gl6CgAAQBIxFgAAANjh6qrOZDBJd6GbK1+6krqqm54EAACQRIwFAAAAdrjufDfH/u9j6S/1hVgAAGBbEWMBAACAnaVOBmuDTIaTJElnvpP1V9Yz6U0aHgYAAHA9MRYAAADYUapRleMfO571k+vX3h9XmfSFWAAAYPsRYwEAgNc07o6zdmItBx86mMOPHm56DkCSa6dg+0v9dBe66S/3m54DAADwuqbqut68TGV2drbJLQAAwHYylczMzuSRH3sk3/ez35dMNT0I2PPq5KWPvpSFzy9ce0Sx62EBAIBtaDgcbr7tZCwAAPDa6mQymKQaVU0vAfaw3pVeVl9e3QyvnUudTAYeSQwAAOwMYiwAAACwba2+vJqjv3z0mx9wGhYAANhBxFgAAABg2+kv9TP/+flsnN4QYAEAgB1LjAUAAG6oTp0pl8YCpb0quvYWeznzyTMeSQwAAOxoU3Vdb36rMzs72+QWAABgGzp05FDu/0/uz5EPHsnDP/Rw03OAXaoaVjn7b86me7mbJBmuD7P8wnLqyrFYAABgZxkOh5tvOxkLAAC8rt6VXnpXejn08CExFrij6nGdalIlSSa9SRa/upj1V9YbXgUAAHDniLEAAABAI+aensv8F+aTJPWkTnuu3fAiAACAO0uMBQAAALZENaoyao1Sf/1y2Na5VlZfWm14FQAAQDliLAAAALAl1k+v59ivHUs1uvZo4mFreINXAAAA7GxiLAAAcFMGq4NsnN7IoYcPZf89+5ueA+wAdVWnM99JNbgWX1vnWuksdFKP64aXAQAAbI2puq43vwOanZ1tcgsAALCNTe+fzvTsdN7zP7wnj/zxR5qeA+wAo/Yoz3/4+bTOt5Jcuxd2Mpg0vAoAAKCs4fCbTwFyMhYAALgp1ahKNaqcaANeV+t8K93L3STJpDdJf7mfcXfc8CoAAIBmiLEAAADAHTP31Fwu/O6FJEmdOqkaHgQAANAgMRYAAAC4ZcP1YS5/6XKq0fW1deP0RurKCXoAAIBEjAUAAABuw2BlkFf++SsZtUdNTwEAANi2xFgAAOCWzH12LhtnN/LW//KtueuRu5qeA2yBhS8sZPX46nUfG7VGmQwmDS0CAADYGcRYAADglqwcXcnaybUc+eARMRZ2kXpcX7vj9TUsH13O3GfmtngRAADAzifGAgAAwB43XB/m5MdPZrA2eM3Pty+0t3gRAADA7iDGAgAAt65ORp1RRq1R9h3el6npqaYXwZab9Ce3/JjefYf2ZXp2utCir/v6P5/15LVPub6W/ko/y0eX01/qFxwGAACw90zVdb353dns7GyTWwAAgJ1iKjn00KEcOnIo7/sf35eDDx5sehFsufO/cz6Xnrx0S69513/3rjz8wYcLLbpm3BvnpV95Ke2LN3+atRpX6V3t3VLABQAA4LUNh8PNt52MBQAAbl2d9K72Uk2qVOOq6TXQiOH68JaCZ5K0LraK37U87o3Tvti+5W0AAADceWIsAAAAbJGznzqb858+X/YPqZNxZ1z2zwAAAOCmiLEAAMBtq4ZVVl9azXB9mPveeV+mZtwdy+7XX+6nfb6d7uXuLb920p9k0r+1e2YBAADYudwZCwAAvCFTM1O575335QP/+wey7y6/78nuN/fUXF766EupqzrxlG4AAAC+hTtjAQCAO6ae1KkmihR7R13Vqcf1jb8QAACAPW+66QEAAAAAAAAAu5GTsQAAwBvWX+rn1CdO5b533pdH/8Sjiatj2YW6C91c+sylbJzZaHoKAAAAO4STsQAAwBs2XBvmwu9dyNWvXE01qVLXHuHK7lJXdbpXujn/O+ez/MJy03MAAADYIabqV/2UZHZ2tsktAADADnfggQO575335cgPH7l2QhZ2gf5KP6/8v6+kM9/J2strid81AAAA4HUMh8PNtz2mGAAAuGMGK4NcfeZqDj96uOkpcMdMepMsPreY4drwxl8MAAAAr+IxxQAAAAAAAAAFiLEAAMAdN2qP0l3oZtwdNz0Fbltd1ekv9dNb7KWuPJsYAACAW+fOWAAA4I6bOTiTfXfty7v/+3fn0R93dyw706gzygv/5wtpnWtluDF0VywAAAA3xZ2xAABAUZP+JJP+JK0zraw+uJq733p39t+9v+lZcHPqpH2xne7VbnpXehmuuysWAACA2+NkLAAAUMzUvqnMHJjJH/uf/1je/P1vbnoO3JR6UueF/+uFLD67mGpUORELAADALXEyFgAA2BL1uE6Vyn2b7DjVqEo1rJqeAQAAwA433fQAAAAAAAAAgN3IyVgAAKCouqoz/7n5tM618l1/6rsye6/rUdi+lp5byurLq+nMd5qeAgAAwC4gxgIAAEXVVZ2Fzy9k+b7lPPSBhzJ7z2wy1fQqeA11svj8Yi787oWmlwAAALBLTNV1vXl50+ys31AHAADKmN4/nTf/0Tfn7rfenXf8N+/IvkN+N5TtY+lrS5n/3Hw2Tm+kM+dULAAAALdvOBxuvu3OWAAAYEtUoyqLX13M4lcWM+6MU42qpidB6qrOZDBJ63wrC59fEGIBAAC4o5yMBQAAttTMgZnc/da7c/977s+7f/rdmZrxzGKas3ZiLSc/cTL9xX56V3tNzwEAAGAXePXJWM8FAwAAttRkMMn6qfXsv2d/6rrOlAtkaUA1rjJcH6Yz38naibXUk/rGLwIAAIBbJMYCAACw5/Qu9/LCL72QwcpAiAUAAKAYd8YCAACNGHfGWT+17tGwbKl6Uqd1rpX1M+vpXelluD688YsAAADgNrkzFgAAaMTU9FSmD0zn8f/88XzPz3xP03PYI4brwzz7959N51Ink8Gk6TkAAADsQq++M9bJWAAAoBF1VWfSm6R1oZXLX7ycznyn6UnsYnVVZ+WllVx95moGqwMhFgAAgC3hzlgAAKBRy19bzvILy/nev/K9Ofzo4abnsEvVkzpn/vWZLL+wnLgiFgAAgC0ixgIAAM2rk+UXllONqhz54JHc9chdTS9iF1l6finrp9fTu9wTYgEAANhSYiwAALAtLD67mKXnl3L40cNiLHfUlS9fyaUnLzU9AwAAgD1IjAUAALaNuq5z4d9dyMqLK3n7n3t7Dj54sOlJ7GBLzy/lypevZPX4atNTAAAA2KPEWAAAYPv4+uOK119ZzyM/9khm75u99vGpZHrfdLPb2DHqqk49qbN+et2JWAAAABo1Vdf15o05s7OzTW4BAABIkkzNTOXed9ybfYeu/f7oPd99T971l94lyHJTVl5ayZl/fSa9y710L3ebngMAAMAeMxwON992MhYAANh26kmd9VPrm+9PhpMMVgfZf3h/9t3l2xheWz2pM2qP0p3vZvmF5aS+8WsAAACgJCdjAQCAbW/mwEwOvvlgjvxnR/Kuv/SupuewTbXOtfLir7yYweogg5VB03MAAADYo159MtYzvgAAgG1vMpikM99J+2I7rXOtDNeHN34Re0Y9rtOZ66R1oZXOpY4QCwAAwLbhZCwAALBjTO+fzsyBmbzjp96Rt//Xb296DtvEYGWQ537xuXQvdzPujpueAwAAwB7nzlgAAGBHqkZVqlGV1tlWFp9dzL3ffW8OPHCg6Vk0YOPsRgbL107ADlvD9Ff6QiwAAADbjpOxAADAzjOVTM9M530/97685Uff0vQatlqdHP3I0Sx8YeGbH5rUr/MCAAAA2DpOxgIAADtbnVTjKovPLW7eHztzaCZHfvhI9h3ybc5utn5qPWsn19K+2BZgAQAA2Pb8lAIAANix5j87n/nPzidJDj10KA+89wExdpdbfHYxp//l6aZnAAAAwE3xUwoAAGBXGLVHOf3/nc49b78nj//k45neP930JO6A7uVuLv7+xc1TsGsvrzU7CAAAAG6BGAsAAOwK4944c0/N5U3vflMe/YlHMzU9de0T08nU1FSz47gt9aROb7GXC793IdWwanoOAAAA3LKpuq43L9mZnZ1tcgsAAMAbtv/u/bnv3fdtxti3/Mhb8uifeLThVdyqweogp/7ZqXTmO1k7tZZosQAAAOwQw+Fw820nYwEAgF1l1B5l6bmlzfcPP3I4ow+MMnNgxqOLt7lJf5JqfK269lf6WfraUgarg4ZXAQAAwO1zMhYAANjVZu+bzYH7D+Sd/+078/APPdz0HL6Duqpz8uMns/yHy0mSalSle7m7eVcsAAAA7BROxgIAAHvGcH2Y4fow7YvtHP6uw0mSqZmpHHzwYKb3OSnbpFFnlOHatW9Q66pO63wrrXOthlcBAADAneNkLAAAsCfsu2tfpmevxdcD9x3I+//X9+fQkUMNr9rb5j87n5c//vLm++POONXI5bAAAADsbE7GAgAAe864O066196ux3VWjq3k4JWDSa49yviet96TTDU4cA+Y9CfZOLOxeS/sxpmNzZOxAAAAsBs5GQsAAOxJ0/umN+Prw//pw/n+n//+TM2osSW1L7Xz7P/xbIYb33w0sTthAQAA2G2cjAUAAPa8b5zOTJLOQieXnrqUqalvxtip6am8+fvfnIMPHmxi3q5QV3WW/3A5/aV+kmSwMsioO/IoYgAAAPYMJ2MBAABew9S+qbz/f3l/HvrAQ01P2bGqcZXnP/x8lp5fanoKAAAAbBknYwEAAG6gntSZ/+x81k6sJbl2r+xjf+axzBycaXbYNtW+2M7CFxaSVz11uK7qdOY7zY0CAACAhomxAAAAr6VOLn/p8ua7hx87nLf86FsyfWD6ui+bytTm3bN7Rp3Uuf6u185cJ2c/dTZ15Q5YAAAA+AaPKQYAALgJ+w7tywPveyDT+6+PsY/++KN56Af3zqOMq3GVs586m/bF9nUf7y/3N08RAwAAwF7mMcUAAAC3aNwb5+ozV7/t43e/9e7c/333v+ZrpqanMnNg5z3WuK7qVMMqr/rd3U3VsMryC8tZPb7awDIAAADYWZyMBQAAeAMOPnQwB+4/8Jqfu/e77833/pXv/bbTtNtd63wrJ379RCaDybd/sk46lzoZ98ZbPwwAAAB2ACdjAQAA7pD+Yj/9xf5rf7JKeld6mZ69cYyd3j+d2TfNZmqqzAW01bDKYH2Q3MSVrt2FbtZPrr92jAUAAABumpOxAAAAhUzvn87sfbPJTfTVe99+b973P70v+w6V+Z3Z1ROrefEjL6YaVzf82mpUZbg+vKlwCwAAAFzPyVgAAIAtUI2q9Je+w6nZbzFzYCbrJ9czc7DMHbMbpzfSW+ylHiusAAAAsFWcjAUAANgOppKZ2ZmbOkV7O+qqTjW88alYAAAA4I1xMhYAAGC7qeOOVgAAANhlppseAAAAAAAAALAbibEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABUzVdV03PQIAAAAAAABgt3EyFgAAAAAAAKAAMRYAAAAAAACggP8fjymaWYXEdVMAAAAASUVORK5CYII=" - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n" - ] - } - ], - "source": [ - "from algorithm import parallelize\n", - "from utils.numerics import inf\n", - "from collections import List\n", - "\n", - "\n", - "fn scene_intersect(\n", - " orig: Vec3f,\n", - " dir: Vec3f,\n", - " spheres: List[Sphere],\n", - " background: Material,\n", - ") -> Material:\n", - " var spheres_dist = inf[DType.float32]()\n", - " var material = background\n", - "\n", - " for i in range(spheres.size):\n", - " var dist = inf[DType.float32]()\n", - " if spheres[i].intersects(orig, dir, dist) and dist < spheres_dist:\n", - " spheres_dist = dist\n", - " material = spheres[i].material\n", - "\n", - " return material\n", - "\n", - "\n", - "fn cast_ray(\n", - " orig: Vec3f, dir: Vec3f, spheres: List[Sphere]\n", - ") -> Material:\n", - " var background = Material(Vec3f(0.02, 0.02, 0.02))\n", - " return scene_intersect(orig, dir, spheres, background)\n", - "\n", - "\n", - "fn create_image_with_spheres(\n", - " spheres: List[Sphere], height: Int, width: Int\n", - ") -> Image:\n", - " var image = Image(height, width)\n", - "\n", - " @parameter\n", - " fn _process_row(row: Int):\n", - " var y = -((Float32(2.0) * row + 1) / height - 1)\n", - " for col in range(width):\n", - " var x = ((Float32(2.0) * col + 1) / width - 1) * width / height\n", - " var dir = Vec3f(x, y, -1).normalize()\n", - " image.set(row, col, cast_ray(Vec3f.zero(), dir, spheres).color)\n", - "\n", - " parallelize[_process_row](height)\n", - "\n", - " return image\n", - "\n", - "var spheres = List[Sphere]()\n", - "spheres.append(Sphere(Vec3f(-3, 0, -16), 2, shiny_yellow))\n", - "spheres.append(Sphere(Vec3f(-1.0, -1.5, -12), 1.8, green_rubber))\n", - "spheres.append(Sphere(Vec3f( 1.5, -0.5, -18), 3, green_rubber))\n", - "spheres.append(Sphere(Vec3f( 7, 5, -18), 4, shiny_yellow))\n", - "\n", - "render(create_image_with_spheres(spheres, H, W))\n" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "id": "f53abdf2", - "metadata": {}, - "source": [ - "## Step 4: Add lighting\n", - "\n", - "This section corresponds to the [Step 4 of the C++\n", - "tutorial](https://github.com/ssloy/tinyraytracer/wiki/Part-1:-understandable-raytracing#step-4-lighting).\n", - "Please read that section for an explanation of the trick used to estimate the\n", - "light intensity of pixel based on the angle of intersection between each ray\n", - "and the spheres. The changes are minimal and are primarily about handling this\n", - "intersection angle." - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "id": "3ed5bc7c-f335-48c4-abf8-31c75d6e79ad", - "metadata": {}, - "outputs": [], - "source": [ - "@value\n", - "@register_passable(\"trivial\")\n", - "struct Light(CollectionElement):\n", - " var position: Vec3f\n", - " var intensity: Float32" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "id": "8b99f641", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Clipping input data to the valid range for imshow with RGB data ([0..1] for floats or [0..255] for integers).\n" - ] - }, - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAB2MAAAWMCAYAAAATKi3mAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8pXeV/AAAACXBIWXMAAATsAAAE7AGKbv1yAAEAAElEQVR4nOzd7a8syX0f9uqZOQ/3aR/uPnKXu3wQRVOk+KDYBkU7kWXHD3IcGVESGIkTJAaSGAaSF3l4nX8pSIDkRWJbQQLDEQwYgS1bgBNHpmSLkiiKS2p3ubv33jOdF33qdFV1dU/PnOl7zr37+QAHM1NdXV0zd2ZI7Hd+VU3btm0AAAAAAAAA4KhWNz0BAAAAAAAAgOeRMBYAAAAAAABgAZv0wenp6U3NAwAAAAAAAOCZ9+jRo6v7KmMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAA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AACuQBgLAAAAAAAAcAXCWAAAAAAAAIArEMYCAAAAAAAAXIEwFgAAAAAAAOAKhLEAAAAAAAAAVyCMBQAAAAAAALgCYSwAAAAAAADAFQhjAQAAAAAAAK5AGAsAAAAAAABwBcJYAAAAAAAAgCsQxgIAAAAAAABcgTAWAAAAAAAA4AqEsQAAAAAAAABXIIwFAAAAAAAAuAJhLAAAAAAAAMAVCGMBAAAAAAAArkAYCwAAAAAAAHAFwlgAAAAAAACAKxDGAgAAAAAAAFyBMBYAAAAAAADgCoSxAAAAAAAAAFcgjAUAAAAAAAC4AmEsAAAAAAAAwBUIYwEAAAAAAACuQBgLAAAAAAAAcAXCWAAAAAAAAIArEMYCAAAAAAAAXIEwFgAAAAAAAOAKhLEAAAAAAAAAVyCMBQAAAAAAALgCYSwAAAAAAADAFQhjAQAAAAAAAK5AGAsAAAAAAABwBcJYAAAAAAAAgCsQxgIAAAAAAABcgTAWAAAAAAAA4AqEsQAAAAAAAABXIIwFAAAAAAAAuAJhLAAAAAAAAMAVCGMBAAAAAAAArkAYCwAAAAAAAHAFwlgAAAAAAACAKxDGAgAAAAAAAFyBMBYAAAAAAADgCoSxAAAAAAAAAFcgjAUAAAAAAAC4AmEsAAAAAAAAwBUIYwEAAAAAAACuQBgLAAAAAAAAcAXCWAAAAAAAAIArEMYCAAAAAAAAXIEwFgAAAAAAAOAKhLEAAAAAAAAAVyCMBQAAAAAAALgCYSwAAAAAAADAFQhjAQAAAAAAAK5AGAsAAAAAAABwBcJYAAAAAAAAgCsQxgIAAAAAAABcgTAWAAAAAAAA4AqEsQAAAAAAAABXIIwFAAAAAAAAuAJhLAAAAAAAAMAVCGMBAAAAAAAArkAYCwAAAAAAAHAFwlgAAAAAAACAKxDGAgAAAAAAAFyBMBYAAAAAAADgCoSxAAAAAAAAAFcgjAUAAAAAAAC4AmEsAAAAAAAAwBUIYwEAAAAAAACuQBgLAAAAAAAAcAXCWAAAAAAAAIArEMYCAAAAAAAAXIEwFgAAAAAAAOAKhLEAAAAAAAAAVyCMBQAAAAAAALgCYSwAAAAAAADAFQhjAQAAAAAAAK5AGAsAAAAAAABwBcJYAAAAAAAAgCsQxgIAAAAAAABcgTAWAAAAAAAA4AqEsQAAAAAAAABXIIwFAAAAAAAAuAJhLAAAAAAAAMAVCGMBAAAAAAAArkAYCwAAAAAAAHAFwlgAAAAAAACAKxDGAgAAAAAAAFyBMBYAAAAAAADgCoSxAAAAAAAAAFcgjAUAAAAAAAC4AmEsAAAAAAAAwBUIYwEAAAAAAACuQBgLAAAAAAAAcAXCWAAAAAAAAIArEMYCAAAAAAAAXIEwFgAAAAAAAOAKhLEAAAAAAAAAVyCMBQAAAAAAALgCYSwAAAAAAADAFQhjAQAAAAAAAK5AGAsAAAAAAABwBcJYAAAAAAAAgCsQxgIAAAAAAABcgTAWAAAAAAAA4AqEsQAAAAAAAABXIIwFAAAAAAAAuAJhLAAAAAAAAMAVCGMBAAAAAAAArkAYCwAAAAAAAHAFwlgAAAAAAACAKxDGAgAAAAAAAFyBMBYAAAAAAADgCoSxAAAAAAAAAFcgjAUAAAAAAAC4AmEsAAAAAAAAwBUIYwEAAAAAAACuQBgLAAAAAAAAcAXCWAAAAAAAAIArEMYCAAAAAAAAXIEwFgAAAAAAAOAKhLEAAAAAAAAAVyCMBQAAAAAAALgCYSwAAAAAAADAFQhjAQAAAAAAAK5AGAsAAAAAAABwBcJYAAAAAAAAgCsQxgIAAAAAAABcgTAWAAAAAAAA4AqEsQAAAAAAAABXIIwFAAAAAAAAuAJhLAAAAAAAAMAVCGMBAAAAAAAArkAYCwAAAAAAAHAFwlgAAAAAAACAKxDGAgAAAAAAAFyBMBYAAAAAAADgCoSxAAAAAAAAAFcgjAUAAAAAAAC4AmEsAAAAAAAAwBUIYwEAAAAAAACuQBgLAAAAAAAAcAXCWAAAAAAAAIArEMYCAAAAAAAAXIEwFgAAAAAAAOAKhLEAAAAAAAAAVyCMBQAAAAAAALgCYSwAAAAAAADAFQhjAQAAAAAAAK5AGAsAAAAAAABwBcJYAAAAAAAAgCsQxgIAAAAAAABcgTAWAAAAAAAA4AqEsQAAAAAAAABXIIwFAAAAAAAAuAJhLAAAAAAAAMAVCGMBAAAAAAAArkAYCwAAAAAAAHAFwlgAAAAAAACAKxDGAgAAAAAAAFyBMBYAAAAAAADgCoSxAAAAAAAAAFcgjAUAAAAAAAC4AmEsAAAAAAAAwBUIYwEAAAAAAACuQBgLAAAAAAAAcAXCWAAAAAAAAIArEMYCAAAAAAAAXIEwFgAAAAAAAOAKhLEAAAAAAAAAVyCMBQAAAAAAALgCYSwAAAAAAADAFQhjAQAAAAAAAK5AGAsAAAAAAABwBcJYAAAAAAAAgCsQxgIAAAAAAABcgTAWAAAAAAAA4AqEsQAAAAAAAABXIIwFAAAAAAAAuAJhLAAAAAAAAMAVCGMBAAAAAAAArkAYCwAAAAAAAHAFwlgAAAAAAACAKxDGAgAAAAAAAFyBMBYAAAAAAADgCoSxAAAAAAAAAFcgjAUAAAAAAAC4AmEsAAAAAAAAwBUIYwEAAAAAAACuQBgLAAAAAAAAcAXCWAAAAAAAAIArEMYCAAAAAAAAXIEwFgAAAAAAAOAKhLEAAAAAAAAAVyCMBQAAAAAAALgCYSwAAAAAAADAFQhjAQAAAAAAAK5AGAsAAAAAAABwBcJYAAAAAAAAgCsQxgIAAAAAAABcgTAWAAAAAAAA4AqEsQAAAAAAAABXIIwFAAAAAAAAuAJhLAAAAAAAAMAVCGMBAAAAAAAArkAYCwAAAAAAAHAFwlgAAAAAAACAKxDGAgAAAAAAAFyBMBYAAAAAAADgCoSxAAAAAAAAAFcgjAUAAAAAAAC4AmEsAAAAAAAAwBUIYwEAAAAAAACuQBgLAAAAAAAAcAXCWAAAAAAAAIArEMYCAAAAAAAAXIEwFgAAAAAAAOAKhLEAAAAAAAAAVyCMBQAAAAAAALgCYSwAAAAAAADAFQhjAQAAAAAAAK5AGAsAAAAAAABwBcJYAAAAAAAAgCsQxgIAAAAAAABcgTAWAAAAAAAA4AqEsQAAAADw/2/fDk4AAAEYiOH+Q9cpDkGSCfo/CgAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmfbXo8AAAAAAAAA+I1nLAAAAAAAAEBAjAUAAAAAAAAIXNpczcumkMt4AAAAAElFTkSuQmCC" - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n" - ] - } - ], - "source": [ - "fn scene_intersect(\n", - " orig: Vec3f,\n", - " dir: Vec3f,\n", - " spheres: List[Sphere],\n", - " mut material: Material,\n", - " mut hit: Vec3f,\n", - " mut N: Vec3f,\n", - ") -> Bool:\n", - " var spheres_dist = inf[DType.float32]()\n", - "\n", - " for i in range(0, spheres.size):\n", - " var dist: Float32 = 0\n", - " if spheres[i].intersects(orig, dir, dist) and dist < spheres_dist:\n", - " spheres_dist = dist\n", - " hit = orig + dir * dist\n", - " N = (hit - spheres[i].center).normalize()\n", - " material = spheres[i].material\n", - "\n", - " return (spheres_dist != inf[DType.float32]())\n", - "\n", - "\n", - "fn cast_ray(\n", - " orig: Vec3f,\n", - " dir: Vec3f,\n", - " spheres: List[Sphere],\n", - " lights: List[Light],\n", - ") -> Material:\n", - " var point = Vec3f.zero()\n", - " var material = Material(Vec3f.zero())\n", - " var N = Vec3f.zero()\n", - " if not scene_intersect(orig, dir, spheres, material, point, N):\n", - " return bg_color\n", - "\n", - " var diffuse_light_intensity: Float32 = 0\n", - " for i in range(lights.size):\n", - " var light_dir = (lights[i].position - point).normalize()\n", - " diffuse_light_intensity += lights[i].intensity * max(light_dir @ N, 0)\n", - "\n", - " return material.color * diffuse_light_intensity\n", - "\n", - "\n", - "fn create_image_with_spheres_and_lights(\n", - " spheres: List[Sphere],\n", - " lights: List[Light],\n", - " height: Int,\n", - " width: Int,\n", - ") -> Image:\n", - " var image = Image(height, width)\n", - "\n", - " @parameter\n", - " fn _process_row(row: Int):\n", - " var y = -((Float32(2.0) * row + 1) / height - 1)\n", - " for col in range(width):\n", - " var x = ((Float32(2.0) * col + 1) / width - 1) * width / height\n", - " var dir = Vec3f(x, y, -1).normalize()\n", - " image.set(\n", - " row, col, cast_ray(Vec3f.zero(), dir, spheres, lights).color\n", - " )\n", - "\n", - " parallelize[_process_row](height)\n", - "\n", - " return image\n", - "\n", - "\n", - "var lights = List[Light]()\n", - "lights.append(Light(Vec3f(-20, 20, 20), 1.0))\n", - "lights.append(Light(Vec3f(20, -20, 20), 0.5))\n", - "\n", - "render(create_image_with_spheres_and_lights(spheres, lights, H, W))\n" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "id": "78043756-0ce9-455f-9e49-fb75268d4478", - "metadata": {}, - "source": [ - "## Step 5: Add specular lighting\n", - "\n", - "This section corresponds to the [Step 5 of the C++\n", - "tutorial](https://github.com/ssloy/tinyraytracer/wiki/Part-1:-understandable-raytracing#step-5-specular-lighting).\n", - "The changes to the code are quite minimal, but the rendered picture looks much\n", - "more realistic!" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "id": "3ed5bc7c-f335-48c4-abf8-31c75d6e79ad", - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAB2MAAAWMCAYAAAATKi3mAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8pXeV/AAAACXBIWXMAAATsAAAE7AGKbv1yAAEAAElEQVR4nOzd6XM0SX4f9qxqAM81z9wzO7vckzK5q4OySJk2fTEsH7LCDof8yn+z7VCELdEKSZYVJk1LFimSy13O7FwPuv2ikMi7uhoPeoCZ+XwiEN1VlZWVVd14ZmO/+GVOh8PhEAAAAAAAAAC4V/NDDwAAAAAAAADgm0gYCwAAAAAAAHAGF/nG1dXVQ40DAAAAAAAA4Gvviy++uH2vMhYAAAAAAADgDISxAAAAAAAAAGcgjAUAAAAAAAA4A2EsAAAAAAAAwBkIYwEAAAAAAADOQBgLAAAAAAAAcAbCWAAAAAAAAIAzEMYCAAAAAAAAnIEwFgAAAAAAAOAMhLEAAAAAAAAAZyCMBQAAAAAAADgDYSwAAAAAAADAGQhjAQAAAAAAAM5AGAsAAAAAAABwBsJYAAAAAAAAgDMQxgIAAAAAAACcgTAWAAAAAAAA4AyEsQAAAAAAAABnIIwFAAAAAAAAOANhLAAAAAAAAMAZCGMBAAAAAAAAzkAYCwAAAAAAAHAGwlgAAAAAAACAMxDGAgAAAAAAAJyBMBYAAAAAAADgDISxAAAAAAAAAGcgjAUAAAAAAAA4A2EsAAAAAAAAwBkIYwEAAAAAAADOQBgLAAAAAAAAcAbCWAAAAAAAAIAzEMYCAAAAAAAAnIEwFgAAAAAAAOAMhLEAAAAAAAAAZyCMBQAAAAAAADgDYSwAAAAAAADAGQhjAQAAAAAAAM5AGAsAAAAAAABwBsJYAAAAAAAAgDMQxgIAAAAAAACcgTAWAAAAAAAA4AyEsQAAAAAAAABnIIwFAAAAAAAAOANhLAAAAAAAAMAZCGMBAAAAAAAAzkAYCwAAAAAAAHAGwlgAAAAAAACAMxDGAgAAAAAAAJyBMBYAAAAAAADgDISxAAAAAAAAAGcgjAUAAAAAAAA4A2EsAAAAAAAAwBkIYwEAAAAAAADOQBgLAAAAAAAAcAbCWAAAAAAAAIAzEMYCAAAAAAAAnIEwFgAAAAAAAOAMhLEAAAAAAAAAZyCMBQAAAAAAADgDYSwAAAAAAADAGQhjAQAAAAAAAM5AGAsAAAAAAABwBsJYAAAAAAAAgDMQxgIAAAAAAACcgTAWAAAAAAAA4AyEsQAAAAAAAABnIIwFAAAAAAAAOANhLAAAAAAAAMAZCGMBAAAAAAAAzkAYCwAAAAAAAHAGwlgAAAAAAACAMxDGAgAAAAAAAJyBMBYAAAAAAADgDISxAAAAAAAAAGcgjAUAAAAAAAA4A2EsAAAAAAAAwBkIYwEAAAAAAADOQBgLAAAAAAAAcAbCWAAAAAAAAIAzEMYCAAAAAAAAnIEwFgAAAAAAAOAMhLEAAAAAAAAAZyCMBQAAAAAAADgDYSwAAAAAAADAGQhjAQAAAAAAAM5AGAsAAAAAAABwBsJYAAAAAAAAgDMQxgIAAAAAAACcgTAWAAAAAAAA4AyEsQAAAAAAAABnIIwFAAAAAAAAOANhLAAAAAAAAMAZCGMBAAAAAAAAzkAYCwAAAAAAAHAGwlgAAAAAAACAMxDGAgAAAAAAAJyBMBYAAAAAAADgDISxAAAAAAAAAGcgjAUAAAAAAAA4A2EsAAAAAAAAwBkIYwEAAAAAAADOQBgLAAAAAAAAcAbCWAAAAAAAAIAzEMYCAAAAAAAAnIEwFgAAAAAAAOAMhLEAAAAAAAAAZyCMBQAAAAAAADgDYSwAAAAAAADAGQhjAQAAAAAAAM5AGAsAAAAAAABwBsJYAAAAAAAAgDMQxgIAAAAAAACcgTAWAAAAAAAA4AyEsQAAAAAAAABnIIwFAAAAAAAAOANhLAAAAAAAAMAZCGMBAAAAAAAAzkAYCwAAAAAAAHAGwlgAAAAAAACAMxDGAgAAAAAAAJyBMBYAAAAAAADgDISxAAAAAAAAAGcgjAUAAAAAAAA4A2EsAAAAAAAAwBkIYwEAAAAAAADOQBgLAAAAAAAAcAbCWAAAAAAAAIAzEMYCAAAAAAAAnIEwFgAAAAAAAOAMhLEAAAAAAAAAZyCMBQAAAAAAADgDYSwAAAAAAADAGQhjAQAAAAAAAM5AGAsAAAAAAABwBsJYAAAAAAAAgDMQxgIAAAAAAACcgTAWAAAAAAAA4AyEsQAAAAAAAABnIIwFAAAAAAAAOANhLAAAAAAAAMAZCGMBAAAAAAAAzkAYCwAAAAAAAHAGwlgAAAAAAACAMxDGAgAAAAAAAJyBMBYAAAAAAADgDISxAAAAAAAAAGcgjAUAAAAAAAA4A2EsAAAAAAAAwBkIYwEAAAAAAADOQBgLAAAAAAAAcAbCWAAAAAAAAIAzEMYCAAAAAAAAnIEwFgAAAAAAAOAMhLEAAAAAAAAAZyCMBQAAAAAAADgDYSwAAAAAAADAGQhjAQAAAAAAAM5AGAsAAAAAAABwBsJYAAAAAAAAgDMQxgIAAAAAAACcgTAWAAAAAAAA4AyEsQAAAAAAAABnIIwFAAAAAAAAOANhLAAAAAAAAMAZCGMBAAAAAAAAzkAYCwAAAAAAAHAGwlgAAAAAAACAMxDGAgAAAAAAAJyBMBYAAAAAAADgDISxAAAAAAAAAGcgjAUAAAAAAAA4A2EsAAAAAAAAwBkIYwEAAAAAAADOQBgLAAAAAAAAcAbCWAAAAAAAAIAzEMYCAAAAAAAAnIEwFgAAAAAAAOAMhLEAAAAAAAAAZyCMBQAAAAAAADgDYSwAAAAAAADAGQhjAQAAAAAAAM5AGAsAAAAAAABwBsJYAAAAAAAAgDMQxgIAAAAAAACcgTAWAAAAAAAA4AyEsQAAAAAAAABnIIwFAAAAAAAAOANhLAAAAAAAAMAZCGMBAAAAAAAAzkAYCwAAAAAAAHAGwlgAAAAAAACAMxDGAgAAAAAAAJyBMBYAAAAAAADgDISxAAAAAAAAAGcgjAUAAAAAAAA4A2EsAAAAAAAAwBkIYwEAAAAAAADOQBgLAAAAAAAAcAbCWAAAAAAAAIAzEMYCAAAAAAAAnIEwFgAAAAAAAOAMhLEAAAAAAAAAZyCMBQAAAAAAADgDYSwAAAAAAADAGQhjAQAAAAAAAM5AGAsAAAAAAABwBsJYAAAAAAAAgDMQxgIAAAAAAACcgTAWAAAAAAAA4AyEsQAAAAAAAABnIIwFAAAAAAAAOANhLAAAAAAAAMAZCGMBAAAAAAAAzkAYCwAAAAAAAHAGwlgAAAAAAACAMxDGAgAAAAAAAJyBMBYAAAAAAADgDISxAAAAAAAAAGcgjAUAAAAAAAA4A2EsAAAAAAAAwBkIYwEAAAAAAADOQBgLAAAAAAAAcAbCWAAAAAAAAIAzEMYCAAAAAAAAnIEwFgAAAAAAAOAMhLEAAAAAAAAAZyCMBQAAAAAAADgDYSwAAAAAAADAGQhjAQAAAAAAAM5AGAsAAAAAAABwBsJYAAAAAAAAgDMQxgIAAAAAAACcgTAWAAAAAAAA4AyEsQAAAAAAAABnIIwFAAAAAAAAOANhLAAAAAAAAMAZCGMBAAAAAAAAzkAYCwAAAAAAAHAGwlgAAAAAAACAMxDGAgAAAAAAAJyBMBYAAAAAAADgDISxAAAAAAAAAGcgjAUAAAAAAAA4A2EsAAAAAAAAwBkIYwEAAAAAAADOQBgLAAAAAAAAcAbCWAAAAAAAAIAzEMYCAAAAAAAAnIEwFgAAAAAAAOAMhLEAAAAAAAAAZyCMBQAAAAAAADgDYSwAAAAAAADAGQhjAQAAAAAAAM5AGAsAAAAAAABwBsJYAAAAAAAAgDMQxgIAAAAAAACcgTAWAAAAAAAA4AyEsQAAAAAAAABnIIwFAAAAAAAAOANhLAAAAAAAAMAZCGMBAAAAAAAAzkAYCwAAAAAAAHAGwlgAAAAAAACAMxDGAgAAAAAAAJyBMBYAAAAAAADgDISxAAAAAAAAAGcgjAUAAAAAAAA4A2EsAAAAAAAAwBkIYwEAAAAAAADOQBgLAAAAAAAAcAbCWAAAAAAAAIAzEMYCAAAAAAAAnIEwFgAAAAAAAOAMhLEAAAAAAAAAZyCMBQAAAAAAADgDYSwAAAAAAADAGQhjAQAAAAAAAM5AGAsAAAAAAABwBsJYAAAAAAAAgDMQxgIAAAAAAACcgTAWAAAAAAAA4AyEsQAAAAAAAABnIIwFAAAAAAAAOANhLAAAAAAAAMAZCGMBAAAAAAAAzkAYCwAAAAAAAHAGwlgAAAAAAACAMxDGAgAAAAAAAJyBMBYAAAAAAADgDISxAAAAAAAAAGcgjAUAAAAAAAA4A2EsAAAAAAAAwBkIYwEAAAAAAADOQBgLAAAAAAAAcAbCWAAAAAAAAIAzEMYCAAAAAAAAnIEwFgAAAAAAAOAMhLEAAAAAAAAAZyCMBQAAAAAAADgDYSwAAAAAAADAGQhjAQAAAAAAAM5AGAsAAAAAAABwBsJYAAAAAAAAgDMQxgIAAAAAAACcgTAWAAAAAAAA4AyEsQAAAAAAAABnIIwFAAAAAAAAOANhLAAAAAAAAMAZCGMBAAAAAAAAzkAYCwAAAAAAAHAGwlgAAAAAAACAMxDGAgAAAAAAAJyBMBYAAAAAAADgDISxAAAAAAAAAGcgjAUAAAAAAAA4A2EsAAAAAAAAwBkIYwEAAAAAAADOQBgLAAAAAAAAcAbCWAAAAAAAAIAzEMYCAAAA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XjcWAAAAAAC8PipjAQAAAODLQq8f+6bN68ECAAAAAIDLojIWAAAAAL6MCEwBAAAAAHirDF/0AAAAAAAAAAAAAADgbUQYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwD///bt4AQAEICBGO4/dJ3iECSZoP+jAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABA42/Z6BAAAAAAAAMBvPGMBAAAAAAAAAmIsAAAAAAAAQOACaazXSuW+u20AAAAASUVORK5CYII=" - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n" - ] - } - ], - "source": [ - "fn reflect(I: Vec3f, N: Vec3f) -> Vec3f:\n", - " return I - N * (I @ N) * 2.0\n", - "\n", - "\n", - "fn cast_ray(\n", - " orig: Vec3f,\n", - " dir: Vec3f,\n", - " spheres: List[Sphere],\n", - " lights: List[Light],\n", - ") -> Material:\n", - " var point = Vec3f.zero()\n", - " var material = Material(Vec3f.zero())\n", - " var N = Vec3f.zero()\n", - " if not scene_intersect(orig, dir, spheres, material, point, N):\n", - " return bg_color\n", - "\n", - " var diffuse_light_intensity: Float32 = 0\n", - " var specular_light_intensity: Float32 = 0\n", - " for i in range(lights.size):\n", - " var light_dir = (lights[i].position - point).normalize()\n", - " diffuse_light_intensity += lights[i].intensity * max(light_dir @ N, 0)\n", - " specular_light_intensity += (\n", - " pow(\n", - " max(-reflect(-light_dir, N) @ dir, 0.0),\n", - " material.specular_component,\n", - " )\n", - " * lights[i].intensity\n", - " )\n", - "\n", - " var result = material.color * diffuse_light_intensity * material.albedo.data[\n", - " 0\n", - " ] + Vec3f(\n", - " 1.0, 1.0, 1.0\n", - " ) * specular_light_intensity * material.albedo.data[\n", - " 1\n", - " ]\n", - " var result_max = max(result[0], max(result[1], result[2]))\n", - " # Cap the resulting vector\n", - " if result_max > 1:\n", - " return result * (1.0 / result_max)\n", - " return result\n", - "\n", - "\n", - "fn create_image_with_spheres_and_specular_lights(\n", - " spheres: List[Sphere],\n", - " lights: List[Light],\n", - " height: Int,\n", - " width: Int,\n", - ") -> Image:\n", - " var image = Image(height, width)\n", - "\n", - " @parameter\n", - " fn _process_row(row: Int):\n", - " var y = -((Float32(2.0) * row + 1) / height - 1)\n", - " for col in range(width):\n", - " var x = ((Float32(2.0) * col + 1) / width - 1) * width / height\n", - " var dir = Vec3f(x, y, -1).normalize()\n", - " image.set(\n", - " row, col, cast_ray(Vec3f.zero(), dir, spheres, lights).color\n", - " )\n", - "\n", - " parallelize[_process_row](height)\n", - "\n", - " return image\n", - "\n", - "render(create_image_with_spheres_and_specular_lights(spheres, lights, H, W))\n" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "id": "a6e7fc32", - "metadata": {}, - "source": [ - "## Step 6: Add background\n", - "\n", - "As a last step, let's use an image for the background instead of a uniform\n", - "fill. The only code that we need to change is the code where we used to return\n", - "`bg_color`. Now we will determine a point in the background image to which the\n", - "ray is directed and draw that." - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "id": "3de30ee3", - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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" - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n" - ] - } - ], - "source": [ - "fn cast_ray(\n", - " orig: Vec3f,\n", - " dir: Vec3f,\n", - " spheres: List[Sphere],\n", - " lights: List[Light],\n", - " bg: Image,\n", - ") -> Material:\n", - " var point = Vec3f.zero()\n", - " var material = Material(Vec3f.zero())\n", - " var N = Vec3f.zero()\n", - " if not scene_intersect(orig, dir, spheres, material, point, N):\n", - " # Background\n", - " # Given a direction vector `dir` we need to find a pixel in the image\n", - " var x = dir[0]\n", - " var y = dir[1]\n", - "\n", - " # Now map x from [-1,1] to [0,w-1] and do the same for y.\n", - " var w = bg.width\n", - " var h = bg.height\n", - " var col = Int((1.0 + x) * 0.5 * (w - 1))\n", - " var row = Int((1.0 + y) * 0.5 * (h - 1))\n", - " return Material(bg.pixels[bg._pos_to_index(row, col)])\n", - "\n", - " var diffuse_light_intensity: Float32 = 0\n", - " var specular_light_intensity: Float32 = 0\n", - " for i in range(lights.size):\n", - " var light_dir = (lights[i].position - point).normalize()\n", - " diffuse_light_intensity += lights[i].intensity * max(light_dir @ N, 0)\n", - " specular_light_intensity += (\n", - " pow(\n", - " max(-reflect(-light_dir, N) @ dir, 0.0),\n", - " material.specular_component,\n", - " )\n", - " * lights[i].intensity\n", - " )\n", - "\n", - " var result = material.color * diffuse_light_intensity * material.albedo.data[\n", - " 0\n", - " ] + Vec3f(\n", - " 1.0, 1.0, 1.0\n", - " ) * specular_light_intensity * material.albedo.data[\n", - " 1\n", - " ]\n", - " var result_max = max(result[0], max(result[1], result[2]))\n", - " # Cap the resulting vector\n", - " if result_max > 1:\n", - " return result * (1.0 / result_max)\n", - " return result\n", - "\n", - "\n", - "fn create_image_with_spheres_and_specular_lights(\n", - " spheres: List[Sphere],\n", - " lights: List[Light],\n", - " height: Int,\n", - " width: Int,\n", - " bg: Image,\n", - ") -> Image:\n", - " var image = Image(height, width)\n", - "\n", - " @parameter\n", - " fn _process_row(row: Int):\n", - " var y = -((Float32(2.0) * row + 1) / height - 1)\n", - " for col in range(width):\n", - " var x = ((Float32(2.0) * col + 1) / width - 1) * width / height\n", - " var dir = Vec3f(x, y, -1).normalize()\n", - " image.set(\n", - " row, col, cast_ray(Vec3f.zero(), dir, spheres, lights, bg).color\n", - " )\n", - "\n", - " parallelize[_process_row](height)\n", - "\n", - " return image\n", - "\n", - "\n", - "var bg = load_image(\"images/background.png\")\n", - "render(\n", - " create_image_with_spheres_and_specular_lights(spheres, lights, H, W, bg)\n", - ")\n" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "id": "766de19f-200c-4dce-8678-b36cc3c3dc93", - "metadata": {}, - "source": [ - "## Next steps\n", - "\n", - "We've only explored the basics of ray tracing here, but you can add shadows,\n", - "reflections and so much more! Fortunately these are explained in [the C++\n", - "tutorial](https://github.com/ssloy/tinyraytracer/wiki/Part-1:-understandable-raytracing),\n", - "and we leave the corresponding Mojo implementations as an exercise for you." - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Mojo", - "language": "mojo", - "name": "mojo-jupyter-kernel" - }, - "language_info": { - "codemirror_mode": { - "name": "mojo" - }, - "file_extension": ".mojo", - "mimetype": "text/x-mojo", - "name": "mojo" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/examples/notebooks/images/background.png b/examples/notebooks/images/background.png deleted file mode 100644 index 5b8d32f8f99170ece26120e5b985be0d9dc9fde8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 607043 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%0A*>$W1RK?h?H_QK;Z38&v_CP82)Ra{56KQDqtbe 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�>}GpNNNNb85b7E68E3OA91$E|A=+6< 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%0Avg_N*b^KX zp@#gfhOk`iGG<7<3SIJ_e)_3b<;Z5Infv%cvW1wJUHFk7`4Rt_2E%oMj8L5v*ju-i zmlvNx-zkr2xOy1c@MIx44w7B-nFXEQE^>{33%)me4Xy`dWDAc2WH(GfUt0*H8sHf% zf?*={DVMR>2oUY$q#t;9zUh?Vlse=#Vj*XW(=O&jPP-KKC(d3~Y$AreD6pM@2&QRy z4I>A#;r4FBy!EXNmsvnAo0rf|u72{fz{A-ySul&E*(BM`?V zt9KJ~GKD;v=PHwJL#hK`|~_PFnVb@R7r7zSqi`fVRpq{K=#(%0&>lm(QJ72wTgr z1Y3pSA%^s0l4a;20&C@3F%88+vcJ~7GNh&9Zao7~YLyx}J;|p%kaDJ&B^SR z68X~KG99uF>o3g5VH4VVR!_sorekPx4LAE!oDIieSTQvHbPVBvBZL6gPUW`j!f6;y zRQdylWGr^Z>RCug1x)rFo`mps^_TFIHrI?Z#mRi$R(1;iA9eTgYU{V1^&b2m#6a-4 zf4OMlCGiqaF&-mZ6ANA<#F_EqvsfJt~++ri>T^5{oyc79gqy45Q*j2ZB+I5|tyE;{X zT<|g?$1x<*_Jb7Owabv<>EF*75z2^PqI4egC#?b?_*)G|6;?_5KtnBM!>*Y{o#{dp zmgYU-B!7VYu^#|lOxbIj7hQo7IwV$~Vb%04N-K!j5i*1ijAJ1*pq8DoA)`KoH{;9Q ze+d({OWKZ=-Hb}ne67Q7y6nK4IiCD`!Vuz`8!f?(MLI3JD}`GQ@8AC0fBP@}rN88s z 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≥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 w%hSjZbh=J1+!OLrT7VzqYFP* zz20zE%T{0-t2G+OK+u~}m1r8+)Iy{qAj8{Ie#~mY7e(OX3oVP&qT&}~jqwr60+x7> z-)>WdlEpVtDPu3hwL7Pr$R@rWwzV3QC14>f$n2I`2sq(JyfHS;xt4}iQp#%2}FRf2n~2ycC6|l z@!7|56A2~pWcZA(OfUY_SXK^O2RaKerBLhm#+nwwY2^`24SULBRyqY0ozWeIqGiKF2Q8NoRWbPReFG(9WwYi#M>HjI$N+Ju2ITNj@=e`7k&78 z#A0Sf&>=oMlY`^4v)LxoG%>Ll$DJIv>-tP`Jh{>Z@P<>M#7l zFTkB5uUP|=t<^_AsSA#5C`5|Lt^B=#Dz*tOjkkGyslzjkPy;hf(|pr871HWTgq&od z6iS?6c>D-sN~hUr1ezkSTHO><=a{AMF^i*0SwaRsaefZ#^K7?4dmEWG(wqVZ0Z2jA z)ToVQv4sWPzN4DJW`nF3lhK1ApLe{Effi_eM1H$X^x_qug4` zms0<>h?BzX(nB_#13#6M(v>$qaYW1I=&&XOOFVr{S+%heBcwAsLRsM_I3@+F^W9Ou zyqnrWIZuKo2VtBiOPpjr&U3WsJXiW&>dmI%#82&#`=r9X^8ai9{hc&-@8AFXf4{Xm zDspYCDC;Vi_UPakD-_c-ok~P|xEcDp5&mw0r|DC_&Ru=7DNm%6;3?bXrT|}vb65SEThK+e zX(`A}mj$m}p_MQ_AO33zzZ7>}AH2pX+7h-Q8ipf7tZQ`x!)pV@Ng0!4N`GX2i!bEz`wlcUQwv7(PowV( ztiY5j#D_%Y03q~4OuZ6~uS9LI5Je3sP0MW>jbCDfWZB`ZH_p4;)MhQv+g7(WvII3O zw2^GncQ3Ilj#vCXpyD`%>G+ANL)j0wm2;|Wc-wU*LX41iu{IOUOJU;Ps&%8WDC6uu zB#U3DY1gh=a85{^kXb3EZ^uGPf3y;NjpgSdzGRQkG^VJAeeUQ-{OPbA7$E~~`lk6D zTV%c7Vs)0H?WCc_%$|vu$*uuYYoW7rA^I0udvacy-CuxbuAl;Bj{<*S6u%|koDd>I_!aG_kJhC>`&kMHjycO22yeYrfp@zL zuN)sJ6sIach{0Lg2yxoLZDRxr@6|w^V6LT@sSz~p+HdxuimVjR$3!0aNtGL)0tYjv zP_`ydWWLM9NAR&lH>ibbsa!rh%V~l2P|>pLa|*9=)^@U_+|#K-FBj*J~=Nm83K2ssf)Q`V@>qfzGMGTI8vzE5H zX}36j(^qY5S)WTBkL;#aU5KY%U<73Q*e_#Ih&=IzEuNRUy=IKm%ijknYO4bPUo!YMf`EvLOgB9r>6O6@1pP|8K{R1I>wk)gs1|{ zd2DP*iM_c6N?%H{{Y_$>tB7oK$}KTlGx&xm3y*)&hDSSf)WtM}iq3{lwrNZyqKVeS ztUhrnF^de`7A@E6aC(HMZz|eY`o}tt6+`GOcLIDyqI7h-CdDjgV7Im5X|-4>@HCsAR@99;4%@&tG)&(Iz22Dlp{Pw3C0>-}xAU4b-e$kq&&X_iY9qXd zQ#qY$skNN?RVmsrQ%(wm71bVRJrsf?u%CRS?5DWC;6ZJLURJKRmSZ!&Ud_B*^y?Mv zVf(NC)xYv{LdU>4w8>qaw$~;A^I1b_YwR$8z1sLj>9i1c2`>Sk>!D-d%C-+2-}eLV zLUY=d`}W)n4z%DaBtQZ~ZYA#r zU`JviuXU12pEXUBW2zaBP2N76R)TYm+OAdBK(o3ji%ZSE5#BA&hJq0<2+9BYfa!qQJMT*Zu!i?Co>pR!Rb> zJ@y5;Tjn$4F-wPbhGu)RhO5%FgD7{=e2p28n$IELWeNFah2O2@^i_L~0183%zGm6S z(IVhy-DnWe8sKO?4x2NY5CX7O2>gbh z8~oa@{o1xvXd=~RrOcNVfdf1T+L)a55$^DtZOqr3=-Mc2QcXoUiBv1=QQ&(o;VHzd ztBG8katGE%(@S+Aa$r>;O}+cFQLOizlZvdm2WhhWDU5b;V(R>YHzj3@T3y!>PIk)l zA^UBpI}nYIAv!_`I~~rV^b1u8PR*DaeXn5pum(6C{8GA& z{Ll~mkiQP(4dHSlSDh>;{uClCRJ6LUwP)_C+}H8u`54%e>*wUFWk2EgY&-ng243d7 zlwJt>vgKd>tAEw|B_&?q*CE2$WS}LS;0q$3QfR%oAz0LTt)Hx@VTZ@ta)}7eQdgl% z(?w}TaGY=K>YiM}dxP#de&NK=uJ>!`7pd)@Ra-kg#MvAyfBnh*uxITNl4Wz?bNI=g;)+H%!KuBY zLqR%g=*@R2IUyR~})-?sY#ZY^tG?>A~!n`YK3U&mwqu!)v|8OA+d5I;?)V#|qVj)AaJO z9TAe~Gi-m9ZO;d1xtf=fl&LC|)2U*Gq<5D=E=yDvuqOFNQ6Zy+=MYR2$SIW0Ywca> zrjSElUA{H~pA%f?oX7EG7ER1TN~mSM?W8H(W6bLVPSs;hJWk-t))GkhvnoIHGe5)W zt=dW_IEBj;-X_3REQ=ybH?EdA?${jdM|KmX@C^l(~K zA`!#Rbnq%YLQd_W4VQ@NxYl#iqI@GChhsWg(+d-=)rHTNm`y=Q8yCcMU`_TkkWNTT zPzX7^-d5{5$F^Wro$ZZfB9}IvQ-F8ye7VyXZz%N8E8W5&IHpF<3sRTRvf$dYa7V(D zTQytfD#mQpjzmR84Ky7h@aeS1@SD)v+qByhuqM%T-gG?_Vx`PqRLXpbhGsCGBA43JO84jkS$iUT6_dPq;%G*O{3v2QF_ckI7d3Cal+XWN|A zJm^gS^q>CIf8tO42@A2+(Jl%uoDa75@Ek{P4I()uw(!bb5YzV?EkWtT>w(Py8hkWY ziao2CYERULyLLhs!byG)pSah8?zG+m_(!trhL77`RpPdc`*>B>d$jtoDY|e^?w5Kk z%37Xl3DbT$HffsL2M3#lbVcNH*!$w%7@Uu7<1`=g;DN>uoCb`LWP8)U2-=q>Ybj0aXAkuq|BPK#%>5X z;R*I^ej+RM?v4_X>9~n`*KK<4DuSt~F*1%zu&ZDy$|4vsLvX?q5#<=A;22FYIhGlS z&;qM65WexziV1AQaPax9>`qQe)YW?!ximf$QpVzYyZkMC%^W(rTN?)aEB>in%JB*N!t? z8=BWZ)$8iDf-mzc*ShGt5M2vaX}=-h18fS>lG^6HtbBrTsSKLL3UBy&N<}c5EOVB@BKzgmX@-3vVFj?7-kR z>XVPdM#z^!v$M({hhw_Lrs=CIS4w1l)1-j13?RSdxT{8nmq-LZEA-rGy`nCzU(xyC zgAe?ZE4E86Fgr&@$gP|EzOl6-7sqLjA1G={-{2TH?>BDs?k^N9t=C@ZqzM!a=_`f) zI@XW>_>V*U7)Nz4NwpL~lWni5P>FQ-I1OMSP9;p^Ct|k~S$a6K0SpHc9 zKHK)vs!ROXfQDTHBZB4~C!4&@Z=WSXS{(>hv$-P36wv8#_YF4P-HIjC;8%o)_pz{S)*~Z{jCTFddrk z)om*3iidMn@l<$kUx_ry=0Liq6}qkV?ZP2O+g?T2LR2n%*X3-cT+x1OeV%=wzz=+GQ#L+B>yBR*Mq!}}yJLCWP~@*8Wl=|ZO?Yg0a^>3a`d^&F;2 zYTd{#ns79GRcW;%uyFP=UTB6wXE8@2g@z9uzxvg$o=?W2Nv-Y+%4bNTO?ItM1tO+H z@RP0jna&?`4l+%9Fl{({_oEM#R&$sKlm_v;Wa* zjNOe$NLEN$_Pj#yLRAzs;=^$ajzVlDEEY%slT#06@o@sJ-LJ^oK#pk52pMNZ)2*T& zssdamD{;?$!`BA~iM-&%pg7gEk`=X zNQWcZ4)b?lMB&-UKGOCu30yRhPhyGpDE2i8KL;S?^sdTt%Cd~2$Q#e`e|zxmhyJ~! zfA|mop}+9s&frn`WN8hz1dh#jp?63+*sZQxifB`|6Y`|y?-Z~l>-Oh*;NFWU}?Zck!LH263yA9LjSL(0l_Y%a)!iE|-W?#%imzH)8Iu53NeCT^;3hvbtq zP`MV)_gM2g%1Tf!#OG{WcC}}>wOZ%BohuO{m!IP>BgYRHGAw~qA=AonAVp6yWaC|b z{v}_5t<&`Mn_9Cz@+*+92@XWm*NgiTdlm_Imv2d;^~%|rA$+pl{d1<7bK0ex;C#^t z37#ExoitVmt*kjCw**!Sj+B@X0;sH64t~?=)J&y|DykWS zbLPe@)WbPG>)800w*0{&zZD||2f?UHiTO|3RgYsl8bnhEm+oB8cfg>DBuW%Dj zGh2yDSG4tF3OP2cQH@&deHRd?md*|$uh1F#SihtDPyWe2!E}bbA9z8hd)j(S{4)L6 zik}j}>80%VvV5KCFaPDg?7P0+e?IwsrrpNhO55bFg*7@(LV;E{2lyFT?74?p+ConJ zIo}ocl<_bB<-hcs-?qrl^d6Zla|`F>yNR6}Vh{Z!fr1Zedu>+Y`e{l(WYfor2pw!3 zKI?%nouwBQqTnVl!lU5FB37hlw66R3YZ7iK!HRN>(cZ(EvfR7&n=eUj+9sQ}Km~Yd1jN|ZYi6AH05GgrjW#9aQSG)x_y*ToXf%y5^ zg>o*mrcP?hGYy#tXNf{qYpQ8W@=sHRbXe7J9TJ3$+mtLoTZp$4C$oEuHqg z3(!?8G5%7Tmb*~VbDHMtC1h%(A4j(k7dvN(PSWQ-_qpHoyMC89{rGmt=CFQ%?z1It zL-CR2F6Ct>X4_8CsFRMY-1cFb7iH5BiE&bRu4v?#{7cqN>j0ze!WGre*0>Pnq!z`m zjY9eFZl#l&NYe@hw$jsvvn~p&)lQBqK4cA_O?olsxysAUZoXRxe*W56h@j|65HcX^ z(A2@`@}`Bcl*0HKk*Yk;pJDMbn+{d=89IuG$e;5+g~6Fp|H@I0@TKA zj@(YW={9Xy__h?M-f*5Amx|IQlJ(GVuk@`pr&=OBo!T%R!m(+Fa;}IQmu7&nfZj-W zY2|5BbPXU>_o9XXsZa{0mVmE~oX3WT)RO5CheSUgeDHzar~1lQzM{Q0WQ8!>I=LJ5 zY03%YEb%V?=8=0cPjRnV_u4{Yt5{d98ou;G?VE~)+6tkZ^;0v>UN6@YNdYHEN_gux;)|9m;|NDRcZ<{%U6n}!$Osy!e5^S_F z@c^A*7z>gVm*DhHMzg_*gsci)$M@wit_RK zl)IgB;=3bx10b3Xu^}qV9CAtw~6M1+4O}+cWOjd>3ibN0sH?6wfjC}U&p{b~paF^I`T=ytLl>7)k9soOmsrEj{|kJkT~xDvokgOUot=2tqTf%B_>L+J~QUDsjJ|Sw# zN-+v?kPGoOP$*h>cFQM-Gg?gsPU=j27eBRZ&9jD$l3t1Fm>Qyxmdp<^?X-`uEF6!) z9)>5F&X5-z?Rj_6tN&%IcyZGblV zr1P;Kn~C4(`nIPFVXD*u0w6Ssy&Y#eCx7II^|BGOK;jB zUaj+W9mFyA=^-gjd$`?rn|j@`bVkcL%jL5aPMT?;hSh2cF;3dM`xNM;#u{=HoTmLr zaCo$LuX16oZ4PmxTY;nNEm>qCLm^Q}O=_UKC|nc{k?VK&zxc&3Lb}DpF^$g>iJv$^ zNPEb~S>0sWQq)2-m38YU-jnvM@gyOzC5>EvLLnz^ZEk9<3QdTQ*>w&J zG5s9hX9Ezs?9D(sUe=RVld^=QXXVy;Rh9)efTBkHIYbKKM_c0QlofK<`}Ug8T*t+tS@ z3tu`}$f=_%$X54)tXxBG=_NMxh~s#MLx4YuETvGne2!2lURw29qz+Sd`Dj86{B#PH zwe+N-JvJa3A%#ux^LwOwVdUEp(rpNh)%iX49qeYC3FGd{YYK(x~mG1d(Jo=O%uOesE=ubP?=FqcVYikQini(Ltmi;XBAz|%ZCMo(Z8~uH)RZ<7wE36@9Z#KJ>V3<% ze2XvGXufWj^;vMN#p`}=bpP(({kwntum5##x&8ax)}sHlXUcDN`Gw?K(RM?K-vQ?1 zqe1w_)V|?P&1CNv>Z6s`+vD2dz*cHqITV1iIUzkBTYLLP0RhtS@cD>$kC1aW>o& zoYTiK>XuW8{(Q)MPF>-5X-=tE`4>&OG>w&Le^_As^zeLDm6J@zlzto79Ew8GXUmlBoBWK9J+A z7D2a2Q_EzvXDEGN#M3W#Ua0bpA^IyKJ`Oq~Ae)w6)S_g0@Vl&DVY?BS zMkq1=OstJ9WNL9r$3dWAM5vG{JjB`7|G)cp|E_;e!%N$uQ%-@DT<=d<2d{?`W=@4l zK{#_i)+b`1k(!R)Y7YVz^expKs;ECfGD)E+oM=;_1wp0~GT`#W%|INSoH$skz5JH-f z0*tr&Of%CENb|z zf{v@8VU8i4RWyH&X%CGxQ0e%SYRNbr0)FJEmQT=dIZazywnu%0kk80^wP7tDK6-OSOwSwC*(!o)OW+6@cBzw@jWZgs zvq5?3wp2w!lubtpzXtdQJSV%lCwTEoQIT`8DCH{TUAKlqZg{0uSv9mqi;o8F&LLdlX4V)^nUC_jZ za4LZl$cBh=0y*#h20-#E^*BD}&<=pb`gYVX675;9Q zuM_y&^H07OnbgH;?S7rws~I6bn%`%)UO_6?nO2Iw_AVk{muV$Pxj=TtXt8kM7XDc4 z5_*y!Snhm|6*bLQbkRC-D$-{S(Ub7l%n-EH;>#7{tGK0wG!-%+RT*s}I+=KCr4O8g z>8km}%g5(V9daTFoM(SG<+#96uNX(x6}7gVn02z>K@k@Dd`Yd>73J~+T;nIJtKsd zrCU`Z)Oi-i;5Yd7P{m4TqrorA{d{@%r3j@ zIpHPtNUsoUiX#-W*DlnWW~-jQYigQuJs{`2VAJn$p(3ZODOYg~bA*bvoW%7b*K1$z zW8FMWUnu%ysFc=%P>Grex|W_42h#WIUwd}a)b({%KmYm9`_ou(=?I1r ztSP7JXsByn(OVpZ@8e?(de^7PQaWu#nyZw3BChZ3U!tu^kf3mWI%1 ze~PvPY*GmGPw{W8U;jO_902|6^K9udU1)1;ncIpHI6_6)N+`#vD6n!NY}3bzL!=}N zF*XH;6rIgU+3HFui!b^~2A!l>owI4)(8IS_QI9g8cD3-@cx`E#QYyjHG`c(W_!Xre z?bgBDgIAWRec*TDC?I<&Xj{sHcs;4BBXrkhvRVK-{jt|di+&{oTDlbe=gk{fWP<`|DqppdIMnU z71*L@%A@b8%PILs|L7kHar$#_Zj_cop~mXaGL5eHyNHh?Ya9O9KuERFTE4n%FFfSA z#NjKKb8h28Cn#~#9Ckwkve*#hdTT>~qU@@l&dROC84YZK4xVM=Z-3Hn3O5j>+P2;3C+7heVo{KsFt6K<&>~7*ah5Qdc{E%$v_94#p%DQmc zA9hs+LZmpfaayma)5X5upqZL<;`%@9rU|Lm*|77u#K+Q;J=G>|LwXC{c0Hz_h$>4= z4YE!k#sw)ou;`uj=DJTDfiE-*Ihlp56d`h3q@O)Jb6mUgDpcCN(H}gO;zS_?rkS8z z)7An>q(Uc-P%c~PwZU-{mfHm)*hdm@NHkGua-|YsDdEsb%THR#`n8Sd*{aS zHBpb;-myeWN0oC5yiE0D!0T#JU3m}Sx#OpP>ZgDTp>d3q*_N>BH_Fk5<~6o{LN={2 zgmdR_E4i-)Z4N@qY<2L9$Tw<@XWhDmXw^fKZCxjazeSx(z%L~0ksniHnoZgEfo+Ha zJwQ?b=ER@urXwtLBKg$1MJ&srJYji&gba_r=``QPk!#3Ri=)Iv2fo+k&b$|Xo(sGO zuy6S9QsTl%U#*W`dPlQTX)@05%n4-z~W;_?#vhk}usD0_+-u*RCjBm#h&#pT#k7;B6Mr)GoBD zLfsjYf>YzaJW{Ki5@ZwPbo*;hYb+@QzmDlgkn5JStd*llQ2G!~g-&PDmbs~)!$yPVhk4!iYvQg2q*6Bayp2)fC zvLFWEsE6@G0~^IRdz-0IL`_9%8@{XIcZOY1sbL?TzEimYjZqQo~n z+d$Af@>#mW0F-r6YkDd`8Yf6C!HOcZx;imc!mv92IF{)RfNyyBmXdX&5Vh(Sh%Cia zZpgVV71yw+M1yk<3dYH-F(7g_KAZz#9c&d7mkT^ciIDO6$oka3_cL<60q__}xm@73 zD1|c}2Usmq$ZbVEr0{;0LbA%O0ge(OzT4@Hb&t|RT|HL|!JXVy^J8J}*#Gw5{@Y%l zOYs9<|2D$jc+&^A%k!9A#7VE)M|B$V>=w(`BKRA*VpLImzv&ORUU3bgpcyRHBI?rf8JGNZYK+cmR z*^BQHDf}~2S5BWWFZ(F4d6$($-Qk1QlUaPHR&@a zKWeuprtvxBaDZ%@Y$L*>eH;I1D}4VFIEBZQ=MY(*#x%xRZ;@-sdf_hUx#Z{6hEt>I zBdG8F-tV<=3bi-F=_o|p0JRGMv6o&RJT)e@qHV|vowNW9HGMM_+j(z_Pvcn#qj zwA4(|3_e;S(tA9@*J@T4ZN-dMgh{=VP$ z`#3f>HQx-h&l5+hG>+0`@s&7FLO7-&x&d$PEZI#*_$)h@Zd*P(NAn$nEgxcMwmBVF zds510ZLziO(>?cIN61>vB^SLf_l?niAnT2Be2Z;ek;XYsLLtoQr?bRDO`o%8C;TUA zWb22c0Ue^b3Z7poT~|v#+jvs&1#ruucIm(BYQaVAt*1rSJ&NEbDJr*Gd-R=x)+?&6 zq6ig&;6MycEv*M#6^$SH6hCt*oHyG9Bd|1+y;Zso{m}1$|26jor^l`55C7pm?2k)w z_PH{Z=LYGmB+k9un>%}j!<8P>UI;-np-`6u4Poh~rHJyA>TvVBX6=Y69JxY|w%iEW zG^Lxe{b;p{kcKP{Wlf%lT+_8wxsVq4*uaUzWV^E8r4JlU&&E)DFAB>&hMd7$cMrHT+FZj>aTi$pPl!pK{nupYD35;{oeh4$9H^(ODs`KLYTMa z?mk;B)~MENEx}R}xwUfNG*iyK)U9sOob0+S{bCaVau%vdh+%=P;*3V9^m38o!0YEO zaJvN+f?q-x<)q5G_@*tS=me{1N}0d?*LEDB5MR1$y}JicV}`@vy8q12{LD}Oze}g!0`a_(zg8p#wm2qxTQCm7NT$H z)^9!ed8yqnML3Jbuhx9dsU~WTMbE{CyvmZ&8}V$NutZq+svzVKe6A2ePYS*P=%vZ; z`8~hKxAQCHxmcE-4Nm23h(VuSi3m;4P9QbFHikt09b_;4TV`u%y`rY))q%7{F|#;x z-f!)nF#XA*G+k>CXMdW>*Mm78#kKla?t+-&cK~+kRz=ikbATLoiKge7x$vckE~_Yz zbCY{Jl*^59;R8c(Vw#fGEyoC-_+#^h-o>VmS=+?<^x1oK6?BdVt4d*M>s3l1sUA@f(-uz&Uh$ zBI|YPU->J4|A~ZKE8N-6NKGE`fe8 zI;*t?##z>LPUVU|>C;ShnoXtjWVsV>nJyFSdjfv0!b#RbmV34_oq=e#V)wCT-U7G( z$80k<1=^){VEe#%vS|txrfdj*&;`0HoQr@Fns~H!au6;j_Kq za4Y!WgAWM$3Nl<{QtW423O9g6(g}I3RZjZ33H4CL@Oy>Z>CJhMa*rt&DLdefREdhN zB}{(&Hcii*27G%0rw}=3iKPd!r^6S$V^16U0?M%j8>6;S`mY~T4~jT`mfJVxg_LNk z(~+KRI`{~3o8lm^Q0)OBI5C^zo5FMW2A?=WH+c?(_3PJO*?6L<6QEIUK3jTtb&TtT6LmwxG&kXxxx1PEtR$~8tXtpp1+AUSMcQWG5i;vg6oFp&%RNV^c8 zoYvKQ%$7rz17~xh@j2O)WhHXK2S$4#dMj|RRm$w}6@pBs%Qx{?IqQwHk+SKO z`BmhIo-2K_T(l=ciFd%z&RaoQY_)Ee;kc=W7a~G|Z*YhtSjFkMt59TL-1k)K5Kr5K5` zbE16`OIEoymY-B5Sh(>X`cs(ZDFQTFMZO21uf2WqH-EEo5T{yKg(Qy5mnCHDe)sSG z-3}Xmwd@rdf}M=BZCs%=n=ZO4mku|@cXLm(2BcI4SW#-O_@wHJMLS=8;<(#ro{p5# zQz*9%MNNyc?MeNFk1!`3Ies|1Dc|s8CH?ffcc%5JpN`p`^2SJ{8KfVKTX`eW#0QxF;}ngguuqWqBc(=h{X`7xz)9AkgIgOA4II6nzy&)vYsG3GSI zY4^@tAG{i0{_>Z9N&U??PwKe05nHn=)B%cl|+L3kPb+rPM=Fwz@(bx5w=* z#FMlv|9qp*w)aD`l-tRPa2(P0R;X1IlDetW{W;|NA?lQ`*MHXu@NjQiUmS%whn3p~H@3%_7{ zb%-MoM?a=_`pv)_Kv^Mgq~HDzVf;BGhs14j@Hvnw78=b(;oF}&L2gB>g3mvjoWh*7 zaXPXLoIpM&d(xD<@$Pl2VsF3mJHHcW&&Bnytm>9E@G^xD;XKlS>n(De#Q7CHH?0(S z`xSm(yIVWZ!tRr{sD&)DukHwd(CFE@2N|@${vzF#qa&}Jm#+J;VT0KCJy^;Q| z@A@wPaC@)S*5HoQ?n=|TK;a2l~^GhxwfUPPEFL-<#S9|afRO9sg^dBsJ-(#*1&UW zatlSPjrv(AeYBz)HcVT1R)`ZP!J5&@H0!YFY~nZ}IhD>1xp43yIKxv2xqu6C5I*`~ z)x0|(>+8Z^0?Is-Yoh!|i#Y;ke#{oXtV?wG%Z{vjM{ho@w2A4|r%Eq!^sv^ zS4B}sOb9<@j%l|ZH%;H^Dy1glr;Km#fl~-KBl}Mq7Yd>=JrCzcb$6? z_I^^Y%~HDMv{=5=;=o(AFU&YU-}61+WB+|g?{Y$11+}^&Ud!s4g3XlT9~Tq)>Q}$& z(>r+A3qm1%4v=gJP_9uYV{(9)XhmbP3MC8gcyo+$b)|na1IQ*)6e9Y$&wb9DoL~Os zUv9BL{Y;ZD3qQ*-(r3{cwNaE^xyYEtrMg5&JK$HIY!{B{QX&9D*ha|u+16FG>09m- z|E~mbj@2190gvoCAhm}UZYm4EP$}7(K{I{rSk@d0{1xJ>Ykz$3@8?nf;$Qp=U*c*N zudQ|R&vI2PdgA=1tTnbww6?Ab1iZ68GW8bDT1e?<_0tz61(`m7xA&9zD*sZ{bm z7<_}X=)e}DlMy&*x3ss3O(R&Thmy}nd`iLx8VKj5EU{XmrmC=z$o!`5iChGCW>Jqa zgJXFbG<_&;Gb>;@`)xV!`wbb>e@A)~cklzXs zw$y-&$JF`w!eLFTs!zrw#ranPg^OGfRtk3zSnAU@7<7{AAbCy2j zy&Y19q7*n;)9w)#;)Na13l~vc#XQTww-u$QbNY}#k8AIa4EiCbRDLCFh|-Vufk*!P zA^#tD_tLBDwv~1NGgweed@*b7r3l2Wf`S?eZUr=INHh{HP$5?F5D(#FSTHdfOIEB1 zF-8*)Kw?BC#zTPZAu705f>HbwZ{FW{{&QZdbB{5{8e`1E+PuBc=ha)g+SOX`cfSwM zVLa1Z%+7D5eAjnwH5l;kn?Hr=NFG#ja#1Xa&M_dSQS$0;3|QhQ_N$ zsFJzf2B<+JsBflviM;j(e&ttw#kMqjn-pSiN$$Gg!20|4EfFA4AHY;CtSVPpMQ)WC zx5#J@HXJ8Nfh}Wm4?h_40%HXWY|4QPRyj*^QPs$!Wz+|%lUIYC@}GYCX@4IWXLFBJ z*+szvytyub2o6_UkynL=Wj7q5@DJ8s>a3DwH>~VvinJdpb(JHVODnK-m=SHU9h8Yb z7gSr{Om=|evY3q7^c$T-dPWhFfr)n=MLz~a5Pcb@3M?9VbP zsXALs8?+*K-cGHnQp2~Ih;&I!kfrR&>c^3;;aot**$vMHKXFkAnvJG!jf#p zhNCfR2$aK5?=K>63Os45S^=lM*wqQR#(C3-9Zi&D*W9_Z_*|NMw#(wjAAjtZSh_ww zSP5ools)ZviqbMZ$bXqJK~HAhHTPhuHkOPp6FlepbOlkSDQ}Bbpk>_BO)7m$0U(Rw z!t6(rf8iH?!9$ye8!MJwe`=`l}4)`DYN6HQebGC@WS$GQK#-}}8@DmW=v%C!ZF%vfXB9!&RKV}hb? zg}lnks7_`7#83Q$zbUfREYDSb6Tixr_oU5Ox-lzHe>d%0Yl&=wZ~fM9^$DIuV@7Z^ zThIFiPu$|$fj%ztO1Q&e{TW9%OL`l;8metlvu81sUFB$iHYU(aac=Xzo1<#=iP%?N zwO9}sJB|&bF=iJCFlLvi!qx*g+N1!jlElJ=f8hRB#jDhtf*RPXO0UT9xqzMK(VBJ4 zu$gXX-I`tf+e|R2Qq!+(wI5fO{lXM3q^c;xDK|}C#yF9=*L*$1u~?V*>cy^kmr?u4P=f~+rN9DVBpyk#X9eQK?Cm9%1|fZZzKB`r37Mp(;E zArV8y`+>`q%ZB%bPJaX14T({k+CYiy{~m6lJ*BUPO1khX_+m6Z{n`KdKmVulY>5?yW3_p+*an6kfcz(G z?awajj0jpFeziF$zGCEah91osr6_g1D3)9FtIcePw(?ehjO<$bDm$`t3iDR|>I4es z)uh%-vAh5gMu44WeG1``(b#eH_uFK9Y!!tmq#j?L8Q~HEeQV20VpjmJ)`#4Uc-Ns-16)0o@o>s#T31quik6PuzG~vn zl>7pEvyQZhw2Te)HAZbUv}ghuJp(A%qJ8qoCoBrqv)GpH%=FJ*6j?`v@&CCsz+Tla z-N}D3mPl-U;**l7G6L)>S3^TC<*{@u01d~)H5|JaNYhY*ci^1_>a&Kp7(` zXHG^f{TIxlV%$@_uO!^CaDb5uzN__CZQf#8I(B+?y*3(7 z_>oFJr0Z^fKi-;~qS2i8uBSef1X_Z{-X9i-aB;CO>Se$pTGN!vBE^}dp`N$?l8C(- z&7O`SyVg)Y!VAD9bwf9pb5p)R_ML|)ti20p^bNCEfh-oBrDaFRc*lP9r24{Ax6V^; z@e9m57b9=kxn{3O!E`Uo^N1g&tcym|-MJylh1u4v`LEJc8k zizN=A-85e5AjB~S(DYsxef{fSw=8?pSJWNv_46MxS$$cWpjFM%5SgXG>aWMSE8^BL z*BD^lECVCF2^8q*->E05EX4w01QrGR6O_+B`%F)YYZ>n*b_--@%wGSdq))V0$ytxQ zXRItLKP_*A?@GV5M9RxxSl+NeC?P@Mzmw=$bTm$_VTvqW3)%|Zc;XX-2-XnZ<9yQFBV z4Okh@G&C&&dkXifJw&JfV$A0uje-zm@i(N>xM|vD5i=T+; zDRazXDG$sAYzl!aaLrJZV*ywn4Y04I@Q67wuvQjB3ijdbUoLQfD*jnzm;(N0wAlNW zxlYg;O5Fl3s-gYkcy+y=t8^Vf1a>_ItL+)c%3D&q$PT=Opoy(uy%eH~%^sgU4kJSP zEPy@$7weUt|H&n0F5xsaM(=)kmaP(A77fVT99gJo+4Wj^Z}e9oMA!>7M=xC{1I6O= z;uHcW3-o^8CPe|6m!+hUttXJ0emWWBFg8p)ol1)TNRPHsqZv|QPqQg_75bAu`ICMZ zZ?1BkB`xEsdL-|&T+8yTs3($}ekrQFiC>cD%BYW{*Cc9{*eycX1D0dw1))cI$FzOI zrFDqU@&qCavCe=82_LWdv!A|cTnfrs_>6rPF1-2$0)=0I;VjFWg@XFcLf|IS4(G}) z1ZW8GvXt&7{HwYOXlipX7IFfDtATeodyDLoJujS`TzM0J-@O84cgh9ATQuc?`J`_dM7*kuW7XW*VPJ+?_E9^~brCyI8Q!yI5VMfFDL$d5F zxmdLL=jQRh5_w0)WtkCQIDX`^e2M*IF94Ld%FL=Ko=B?{%;^}H1al+(Ew2` z$Bd`Wj4uYn9bFAryQs0V)L&d1o>isOfvnFm^2@*qD3{);OWz$-|1!<@7gdo>UlzkG z&Eo!oM2PdUs>G6&F_1_rGm91T^uO=tR9?m4Xhog4g4qM5I4dkXf$bOY;x^;Xm}h2=(qSPW+|AguT7(3+sT_Go={e!vhsIi?>hx^toJ^3eY+< zdS1J(yVQlL+6e5ht>UqU#W8}l?71$nO%SJ@gOg>)*Rb#{1!ZmJ!P6A3Ew&+Xv5NPX zzM^=Wmq0jiI5L1-NV0RqL=&!Oui3zgw=yZ9jmbi7WPy1ZrOwM@xR$Xg%r!wY1TEJH zr=9V%PkA7(;?oISyb3U>niFRW(v$@vXrxvQFp;+ecN4fh_vqhJ>P_LQtzfeVoViY% z0*i*JXVD7;&PBLm+^(FKD=$Lgoj6I=<2X%z_=kVkPtdyN;P;5u7R5;|{WI{nn2wNh zj&Q^Ja@}lqvy;(Vv!2WVM!ip6l*%=Z;_VHt6*DP2gpo^Q+@5Fe#3_Wg!pfd_SU|L6b4-}oC=_r1}PFrZuw#|fhW9okFOhLJaXhk&x9s{t!==>nJGnO#V2#*tYZ8^e0T z(>4Ah;68trCADt!6M0?B=l?z;{#=(OvRN-tGG$R1!iK=A8lmF304=q1ak5`hJaL#B z@ii+mOaxBKJ4U@p%(CneSkw>=-pN_)$^)`sp8PPEi@qOb0n(4JUt@Rn3YWs!TXtR{ z`U-ecZ(bGVMlwE-NFb4UbJdq+uJPGbVsU=%=YH<*|NXzOJeIyTkecv;q`U*?8SWqd zzBSR$0Mr|mEonopv<`QjT&T?0#6c!ZtT(_xu-8RJv~45X8H zfz5&oV61pROR&6#0<+9jF}cEY0(waeJ2gtJUn|P6!th}|do^#!vZz4hRi1IQMD$v& z1f83Pum&_2oOGOA3a+XJ7XGgK_awXWOr$Fq%efjIh%K_8H8z-JkrIkH5qlo1SP zzl(qAu}t>TQzLFE?U-f3IkSZ8$1z-+X5QI>`>rf;;xDSa4!IW16*IiN1Bu%W9?_h= zX!kXd$6qDS0yI;w$-LL%($?uzuB562%`%4B?-IYhi)WmR!X{v_SP`_UG=YTCu0sI6~`1#k&?3X1P~{JUSrYAWjz5O6lj18qCPME zv$3y5aN+jE=Ce*i%)9}X8N&@{L~H$p^ytA1~#c*Ji#R{$_F>>A_^i9UQ^ zB`5g<<7zuAtN<2=MukArzZBM1%!tqh0a=^ECFC4lmQfUuTCS6P;uZ~m`xem3JB4j# zv0Qn@Dw`|8jCxVSrwczp#tyXGjAQ3BG5mIHd_AU~9kT{kZ5+lpm7&)Z!w%E~RRSP4 z)TeMx>SRV(4~V7HOdC=FWJyYofW`vUGX^jj_1Y|j7*63qAVjQ7pEDH3xl?&Pg$;4S ziqwz;jB^zL1ws10C}W@nL3sOCis=|$EOWgjNLH_SyEL`CWUo(?8M#g)?9BrAded*G zbxd1HUUtn;Uo6btTAgJ_@F{EWTX)bAk}_QCENASquU7Zk(Ui|-dkw%< zRRC{8#TVk#W7JsMDgpgzNA7W!v3VhAsbv|zbQ#wJTN6>~^am<_7|Px7qmMqqar-6< zyw|n@dcc)SZS9%47~u^uE6gf2Q~WGAfFZk{RE?cTvTrk~EiA#3Qj_9|OH?@Ws%_Tn z2|BVcZw13COVOkn#y9Kedf9g;Dsh|J( zpZ|CN?%%mIm>3T7$qY~7LGOM36D=0e!l?vb_8r=#n+{j251chHQkVs}5Gdr$Whi8p zKpa@}L}iz>cReFI#x9peOA+oMe|SCxnL1p>A7>lMcMtnx18@@_Tc3Qrlq!dg`uZzZF*12m|F!c0FZRZBOUF>v#Pwzw6h9iFZ+w zGTxHk6)7DIXw}oCTzy1s9i|T`%nM8J42kt-LvuL^!!#ZAtnwRGYz0$R+#&G5=Hg23zphE#V^foAN-$3EmZYYwQ_K0caxi zWlSghYo)giTIa~7Y$8_aJVBb81MMig%3*r*!n=OXBNySz^wBJsm0>T?@c!bE>P(^F z3yR2w(N@X3T1J8^ayX0HfEf)H=C!oX)BN8@=AtC6lA4I&X1BlyT&ZDpy&ZE|%2;0w zcL`qa|5+v&U@xR$y#wb*-h8#s8oI*w!wFl)q~1rbl8UM9Tlud}@UU5{a2!KhMI`_N z7hE65klo5RFU#J#=}*GT=91?63ChBl{Sjq_EhKREd8gCt5Lntgo9R;Ez|K1a2P-u* z6~dl(r3|IE+)%uoOHPkZ3#4bi+S-LP4$f47sQCWY4?dZ&b;b}nT@ zmJZC#|LT5IsrAvq6+b)$c1FW`pluXEuUV6?eB~>@<+uEn|MkEAmo@pG@A)2_e&r+C z^~e`&TQItIlqm0==)qjb6G5|Z20A*w`*;6tQhuAI-+08ELhnF}~$^CA>w7~u?2 zi8ryjkEXNA0}I~}z;yEa&FpXg_HXxk%y5Sznv9e$u?o-_^@aG%mk#Fr)Na-8(|_qN z{UskVxHmZB38w!I-kZL5o9?SMhn?g0@bCFOzsC;-`pCt}bskv+?*g?gbfi`)z`_*)KOE36FlL(L12H?|hJZIdyqTJ-lR}S1 zLBDiopw(;Biqg8~L@*R`7JQb3V;G_9)l!sBkD#SiZ+OddSG?Gp|IUKE^2+OwDIPvU zik)V8OVmseD31VN8W*Ph^WYOw;q{diAEuM69zj2l_mb$>(9p_j7Q~E{4eQO(LhV}7 znq=3rYp%VXlAVwKV{GKs0h0nLggf2aCNDgF;cG&K`v}z2zn^?@O17#ImUR4g4wP3_ zt4&haiQw<1JpBWT%xI2W=Cv}|a}}N%3&M5!R)7Hv{t{Zarm98sF#sXXsQK0LT9>FHUUhO@=fM)MI% z;&Fut=VCq1f0MWMYKd(c?eWxQd=n>oJ*L*|00rC(uXg!3fLl?7ip=FfL}PIg`Ic|_ z7Efu_#v9?m8I{iE*u8n0@i%-h@Nwg*;6b6!4V%tn@5;J0HOxphnmx+7)i}>>_Pod` zJYLKbz2!wN7v%+p^>al&`;#xwum+=@QtYS2(KO8n?2g*7VKW6pO@z^P?R=^@y$c`z z1ae8S8!*>djA3Onu2rx=n?&=M&|ZGr-}(6FQZD#R`i+mbfK}eIGj`>5HhJHx#nH#n zJJ;-OpQ~hSVJF2X+>vrV{@@S(;9fnlzh#qJE)9@QwFDg?K(AFH*BU~T0vN?+i3y(| zT;B=^F)RwXCK1hK^^6E*ge&8&n%iB69U!6=f!Iz{gwYx=m zy(}zn1>hIU5}v)l1nV(1UmkWn^asIvye{PZ^%cDGR(y87s$>UNe1LuR2gL3y2ETu4K zSM3*H9~HM*!CuN+%`MgwOFtE!7;>RaLFz6{z}A;H!hrA>tdJ02as(^Uvd#sT)k z&ysjMgr3Rrc8qtCwMxo6Lx$r=DA(#4=VhRpt&ec;oBCV=SV{0XkybB@zIJk|pPf-N zti9%bem+EaR^P-6scb#{FuUc|SYYc@8B5K$!WIH_6a>PFM;nJR*9b`oS&BFdT%rUk z=`;=x#H@Fqi8~hm{@?$5*u8MHfZi{KxfKDcDo|A><&xpv*^#Y)Ges630z{bp$@xac zCfj@~61GsVClBvC0w#E)++AUvac1hfh=1&l{V}%?SEO^@kTESL;D1Q)U!L*ykjJ8( ziLyMguYk5zA{8mzDJBb-Ix`}$q}_=9T?W5X%uj7YjD>k&Vn3YU&xtvRdK=7EO5ib8H;Vm8^KqATE;9Nrr#W; zgIj^-Xt?^DlvgQEZFcL1!>C0AC@?yaeNf=V3{J*7(#?yhy{mayJ?RJ%hih*VH!sZQ zRlmRuDX3XLL4dbSLcvgru!*oVasAEz`O$wT@|s?sGO_E+H4f z8Gdm+cbJsj^I)P=ZAk<5YI8{HSuz$C&SlEL=`}pXVcrh8&k)CSm2`f(_i(wfp}BOn zCobXX>#e6N?EO`}@Si?RQw_eVF3OFwy_TK9_n#lM`F;X@i9G3M9WJI{w6B)nZN*Z{O;1JswzPZs; z{-i`zjQ7S|);*bF&f6j@L#dcv(b*^Mu4=<%hl$hqyMOoZ{_-#XvJ~%dJFS@a1Qc%y z&0^DGbPMso=NC&EP1#bc0N>fQlD=-I_j5*G4_G$}Bc!9ZnER~^%i`5Sw5{G5@)W!* zfRZ|P0tw31VM^RJsuTa*W}-T4P91zhQZeVEuO-e4M4&)i6o7yaYmwvY4M#9s3U42} z@7gD>4D1?l;lK(gR>)cWEy-PnS>8&8D~~-6OSsw$i_&A(5VUQ0#&iM;pTQajgFQG=3D_TobY|`h5XKkQdk z$j}(iQsH9hbSd^%Iyk=3w67@R*j+JSHVd&TX}Q9BO(NO38YZ4SECi@RU?MI)T^}g0 z>ors8Y7a9`KXE;ycH`c4EcA(I)W9}f6XZg3f%~Oj`X&FZi9PLR_TxYP)nRlEQfU0#~_4MDQ=$tb;Wk=ZTfN&wjUTAZjQcuT)r>U2&oN zQW=Hhk@Z~labODYT7q#Vo>u{@ zA(v}Qdq&S9yO&RHy%q!}GCl=_(gEl2rh3;2*)`Cx6hev$gi|2WP+)wZEPx&R>8GFe zj)|d$!sO$M>S{Wp9X9ZCR3nH|wgcc-S(+fEH&({u%{l(L|b~ zSpXTcXJOQaxi*9ytegMyUDRqYS}2F+qmMrFKi1i7hPl=!b>BY1%Ru#PpH%HdO43dT zcG$rMnst5rIL$?Gekd$$0iLg%m|(v%X2*b@+^drp6L~1$Zlr=pN(BYO@LwffoPGYZjq!i(T- zwgNjhO1GYiKEbw&_bEm7J}%c%jQ;|lo(H3dOHr1yHy1-82(^YRT(51fV#nki?ZI@9 z7$*Xp)ygI6tO3T+vftN4=y)lWH|A(bW#>w*5XQjfnB^|no6}AC>0mW1q%tblgS*?L zjL`u0y9#bKSe)$5F(b>Q07D-mct|=|@+5p?Vr4g-%4@iTXfCHWPN$)7c)L2Y2yqK% z9FwI*@ZXgFlYjD0{3WqJKy4sreESuU|(w14%uxNg)t<52-9= zDK(d2;*sM&QU6P)ZGrU8Ed4MnFT36Aez#(B%jrre4dH(ZXhY zSN+5Rtt>z#0TRKAm)a3WsO^Z`il$jTz2IaKqTMOJJ{=Ik_3=q%pDS@g8N)Fnu#8z? z3N6cdLA&r1`Cz@Ol%#DDR(S~0|2j3-nsn;pt3hn{HoqezyB%p*7O@LC zamM?Wk>3Os0-P9smf4pji;`Hj$niIPQ^u#*%{nz}QX>m6re6W10A#Mo=F*SP)#}C1 zRS2xnByyhBELsX;UGC8u-XdOI5tj6EAml>Ga^D`U+VqvZVpzgxT-5`|FLvb_rr(wH zO}UEt2J98w1e@K4R^a|zSe#sD>OVjBqawb5=h4uxy&K!!Gr}5j7QN=q>LDptUV$3|(Xy1zVd|lfE5cnJub;_S z;8vAXC!?OFdwB%0ygnH)mp}SP|ERwP`Dg#^pZV{ld`h6g(p~!d_DW^XrI)&@r_DOWzFxW`$Eej1+3acR&zr&O#Fh+;W!fk zE=e2ex34G|*2lkuTx2gpLk? zn$#sbqsBM@H%Ak(P$&OQ(=luB;y$30y3RAm451*MH{A zm8Sc&2YtgVBbSA~-+J=%h_lDM^pP0{!Yg|~0e<$LV9TPf2|Qyj`p+FoSH^+F8_xAy z*$4TQ6TF+i?a){&7W2Z-a`U|E7#*oX#^Gy)dASU^SY|9WJ8zA}!G&|(?_1dHuY>NM z!cQi<6l57;Ak3JuVfG063Zrx5zPd?8j$?L3HEaj6G}(;q+JE>D|6zNzyZKU=w?6$T z3p`tDyjsk>rLJ#%U@o+UulP&g2pEwcI|z@}}UyL?6E_NzFK^EzT^!Xi1%A%ysg^Xb!eb&A3|ko> zY-L;%U2Vl~zCe>YrSh7-2YP?cYUtM_e9xG2u_+Uz>`w0@?#}>#QfHqa&S^QT!l(c7 z#~)`DQZe-cS;(q6Y)C3^`m+Ox%!{dwka#`LX;+5p339V53yi~tUdnJ)?J6oNkxAV$ym}48n;Ng}>UrJwcA6B;VwWqjUMm-- z25YN?6eEuJS^V_EZ~JY(t?y6X;vVkAYV%PzhcHWZ`Y^$vm(H1cau62&mVoS(1H{w6 zc|Nc6Efdk);@>jdO<@@aa#a9AA$co+%YuXhvn+Pu(a!KJXJ7aNLc{b=yy)pnhs=KoyaY_-;GuB|_dYs9^GZs6SK)CXv zu^>C|DzB@0r(1I=_8X_)OfMxh5p#*q3dAwrtpm)M_vBpE3@w7F@u$opSAq`i#HR^_ zt!nQe_&TV+*re&1zVM}^BN3yfxgD# z%i;d>>5*RmB&DMau~lxUHM}o~Q}MvX`}qrik;V{Hn+1@@8d)80%(%H)f)bw`QPj`? z_w|&^&2loIi>s%MNlkG2aVXE_iC@T{{F8su&!qh6KmDgY5cD2@+0h&@d%}V`LOqDw z4(_X8{jdJ}rB1)pCqX(%trE4Zk1SiR_K-kcz2AuRX{qe6R`JuHa+WvQNBc0q6immR zay5ULyid$>f0YDwdh6AU5a$FtSRIA>CuVFN(p-pPNe8$vGmds2q=Ts>txDPg@6)wc>kLJ7-;~MZxaJ-k$MC^RCoRlP@e-pnG$d zbtjG=eHT)eVq0D`C3OkvUe2zSH>PT}WyI&jQNO+IRTjXa;k3??*}Yky>~23(cn}n* zN7h>(DKP6W*gwX+Yf&I__`9J@ofAo*+ z0TuF&aGBBlVd*NnBA3N(B#uyO_5jN`_XVG2sni6k84l!1EyA;uFJx+G@yiHU?U7q~ zLx+z`gR5tp_X?V|!vS=T04t;NHjx!}tMpZ;ybwSK*${J6bF#o1V}!8Y_XGQ5^pwTA zsQORe|I>f^Pe7aG9ZtV2@=63-bG_Dip_ftdGU9Af@34SxaH;0r;j=^*!I}j0ir24s zC+Ii)hTqUDxE1}W!xf`!~qcQ^lnfx=EI%e)1* zE*|}T?C#q#ayvur>#h`U&b2^GbP>EC`-o++o8f)gQm+8Oilcq>(MP^5>IDGoMc5^a zd08ym$T{C3?*=yg_>$b1DESGzHhwgc-^buR=CoS+s&_AUKw+X#Z zJ+Nq{&NPP>Y3UT!PMfbUzY#6@wg0gXj_w*`EIt67$gtX`?6-=VP@ERJSN=Pdx2Xzv{PKVdwL^rW|` zwP>xdgX}^6`SN}qq_$oX@W*k_S zX_~&H(js)6Z~&IBM21orY6HTTD8QBG>?bGJhwtq+uW)|f@B4j!{jdLZ7f?e-*+f2k zCC|!e{p|rOskN{G1-L5$kSlxrvr=5h6dZ1O+4YkR*dZ=Pu1yy3l1n8;b@i!8MvWk& z{}#Zv+u0q6y!tPzRjS%-11qV)iUGVs<4e`fK9=T)%nrv{&3P~DFz=gyrPC^4oKsvD ztz|^xszqke5YAZGy`;Y(K6mwK0UR%H7WgKxbd^C+Mk^3sVeDEoU^*;@F=2rk%dO=9 z*KubQ-Vlh;kZU^60s=KzY%_s=VCPqUim%kWRP; zXeU3*#fX4>(q4d@U?1Q#9a$I?PoF(yz`}Y|>gc~9-P?rN6)uLq_xJwZ-|;(shohj* z)@qu{&Z5q(4BWZ_cBX>`2x*#nM%N#$ySzX;**%~5i7@YG{*}M-SA=+HaIz&W-3mCt zg?YLj#|3T*mukf-cojAj(jj|X`TrkY3({mABS+KRcNu{h5%d95_DJ1!ZDG$v$WreO z9h=Jb{;&V_zh2&hh(NH-)1fh}3`0j`XT)9N+sRwcF8r)e0bGn4+|hKgx(mBqSN%c4 zS>(&Gye*C_QY5l3prdQXDj<9of`(ZfmoD7%mZh?N{H1IbSC8xu_A)N1z)49FpSMj2l=rkd z%RIP<5?eToX{iGX7X|C1CGy-pg~ZL>pC`Fpsfwmvi(t(GjYS!T2!_&m$@d$7<8Nd+ zQ(GdRB)A9v*pL0#pZ&9c)_&Lr3upon=)n5w@36Kq+3QQn+eOjSTCMq>hudJWA!@pm15)WwjLR%~AQ(@#J3N&v9g zS`)6o#0z;ReVWRsfDOBNva{qxsFnA96!T7I^ln8uKzhyeiQA1@Ssa&)R>RH0ee+-Z zi+}M`KlM{U*U4x&2rO~Ge*`M&LXc^8G&sBxb4BtIF8*_IAa;Pl43z-oDK!p zBh&J}03_ITN%$&ZuM(DkG8i#U8Q27u^wl*kNAdFkNb!`AGyFl^4)fuU7ndFp^v=Bpncq-G z)7L6#prg>TFakBSJNE1Lrit*6j{~y=V1RxA?z&?L^u+%IKkx(lB&|TSTC~Ea0B9Mz zU$&jZGF}v3E4}xB+Ybu!V7KCLmEN6w-bGfJpk3bW%d0@H+DQoR81xBhB&ex2UY2DUzEYBQ`MxX2XSa;@hg>$$`) zS0Lvt)mI-}=i)p?Q^}o({l;)}(N>7pEh53Evb3D!!$T zFC;IJ_XT}*_YMI%)C(t^a0m zSN*MxgV}UqvL`~>F5Lx_T^yaRSN@E|ACvt0U;pb388?Mw4F~1|D4fHm+ zhc&Kc0eBe~*pQ{D#a=S9C#bjm(ov@i^-{k8P}7L7!YY}aCR`7AnIz+iKQn&*b=wsA zD!SfAJcaUl#|8K||K{Ix^6Zv>>Iyd$`{}2j61gns$$SAOt1U&VAO&M;0}WN^O$8^p zKS=P=591>r!KB<`xmRKCqL53kNvG`q+|R2#Egk$8;TC!q3lzeR*51vV{nF#ia$?2} zr#WT-fy;-RZovQZ_MaB3D&vKDe>m}r%M@6gb^fB-m!@1gTMdcc6mn7c@WTqz2P{If zP&2@&cb*t(%3~RRdbL8%!0^Hi!yR|H)IdqcOb5S%mEF(-ne&;~6Cq<)6ZYn^@DB_W zQ2lPSO|AO%3iDD&ot4zGvum4L``;}v@J@=SPe);TH5gXpUEcBB-$+G9tTTj{99d3&gjR>sga$i{#j*wG_>$#0) zC6!nBna)s(TzampZ8aOJ*=5t>REdx@BegETv;CqoF2N zpV1)(wr}rmvt*yr(;-_ivKww4Dn=HBRpmUgL@bfd6n8g_jn5dy(&U}Xkh(ki&;IPs z!oB--iZC{;rl!p}HNfy~8fD?KXw~?tG?X>$+ zvnAc&5<&rneaCKIL!j#0D@nkZ(Zl3cheB~+lDK#&OIR4V5%*%4>uw$|V9+!Q7 z;wtKq*Rabeay7J>8>Yrit-H(SvVxxi|e;z*yyK4p37M zJFhn57iM{okVr1LnOa+m#;BON&SA#q_VkslC1ug}k}|2y-PY=uu77T>x96)(!#v)fqCx(B~`Nud6(kxsvhy$!&?O6>N)#Tuq+o$4eiwY z{7(<7IA3#P0kn)G0FJ1?elrJP_USH!1!wjE@BNSq=fUAAI|8XvK6}NCV`x`V$gV%@zmOLdXm%Il6NipeKR&g6 z(=6T;UWNWc9P4(;YpA(w`RhR8UJYhx%EQ2$#NVx5qOCS%xa<3AWUn5FzV+vAG|%6^^h>|wk;tN~wAed(t5bkOl?K}5;!?+^gTluIt+hMNx1 zRYg6ba9DsdqoEz{iu&U}{^RU!ANKz$479P~rXvI>5u% zRyYL)SbyQO5UhrlH*!oNGhPCpGE7Pzps9X`*wd$rvqwO7+1abJsWB3-fTv_RITT2> zu-U1Z0;6FwZB>_7qRK1psrFo)&U2$$8T%HhhP@3fo0M`t|-+%CXQ4W#^4h!Fuf-mhoYvJRT_9Q^eC>1K?W$>tL1c z=KT7kVAPb&Uh&pv!JA*z;IHREzxk~_@}YFEY)^O!5TvIdc2;;z4R~T zt!yb=9wWp_s=_X^udb)8!cN~^rME_C(j%CgIdGxOcmcVJEq9hjLM{rIp}@rgm-SsS zH`d)Mmy}4D-7Tl3x3>(>5V&E=Xs#Fj6v;=-_U_I}Y6t{nXB4t5t2V-h12HFsmYQ5~ zSTZ&|m1obm;lv*YQn>Zn7T!(7EWD*?$Z|GJx22Ci{`hNO`euN!*o3mng!-l-tq9U+7 ztFQ~1n%j17?%0;Fjp~oi^}ARJkwvK^W0^;W44-fn$sFw{rh@9n>PAu6Jgsg__hFxmh7k~#7J<)ik zmdGqVFJYl&KoSuR7@r5^20`WBVC~@0am~mI~NP8p7%4qEJam!PXPr23v~HA0R~H%@N*t!j5qE zCwWl=yfqde`z)h93kW}tgxHo~OW6{zV^(b$H;iCt$80UOa6s5%;rKS5Prc9Ym@+0_ zFMAflvz;{dlOsgiL2At#uHd8=1*|O#%kUQhWH%W1Z+`}Dg3d{n(uo~7b<)?@PS=Ue zrKbe@gpMVZNC>PqJjw4COD%<-taN3BeRSi$1^ugk^{@6DBOTB)bypU4;l)<)bj*dU zMsvpSsdFFG5$nx7ADaMDX!mJpmQ)sX3TXi^1- zOUJfxfOwxJf~+=yRv_gjUWHi@6p5*^aD@R)U{lE3q}ZnkFDigTQ*Q`F5DtXd-)&2I zWhbt3*(;l+0yeC$9i4Yu&wEm{q$cG#%5}rp*QB19s|{fKtx1a`*3z{mmSRT-KxkFd zpX-U~qNSXUzRkm!WjmxYN|CD~3r~s#5K`2s0CzM`eo;^9MY#rg#`x%?k1T?XU3Rft zW!&PhOs6XDX2cCkM=MD`|=-lh3& z!mmFCM!uWIF%f&n#|7-}Ox`VPOI>JmG{$<{%RTJdzx~@k`Q#J)&PLw%)NaY|PD}c7 z>9ds1hv^@G{4u*$c`L)(Do-GL>pX&!N=wIPNW9?=&~zRI$X3-Ndqj|hT2E0Ak~0eN zFjU?PtpfBlf(ZE4?;wT^0qqk0A&0VCB9q+%u9`n&0ng2KTd=$R1DqGobmnaq4fW5> za`M}3dV4ZVkiHGmkwq>=!=>(UFFSjUC0Burz$}IfIm>uDCY3@`>J$qrK1=HcV`^>n z-jz2zuN%{OBs(2muinMtmx#r3>C4U=z(LR=KO)PO8Xe!S@Y^!0pNm3-B^@8oq`T$0 zqXCO;MmNf{y97&}Y!&u}K$eEN8tUJs5mdPqFdZ{JrIeAkq|Fh*P`@J2kT1lde2ACTyniyK~}t4jM%4zy=3~@MeBVJU#GpB7+ktlI4^sr%2{L~vluSi(svap#)%v|Nk}JhR7Psm0NsIveJl>oT1EO`r>F=Th5|LdG+Nv($Uiev!Z* zMSc3|r|!EJL3t0#vWsn7`=YSGXe^W;40$I;N!#4(St?R$=SBqm(#^|K*+AiFokFu0 z#jf2q^5%+Gk4D6kP=DQM0e|yv{>}HVTxZB5m_Bc*_3CU0$inL|!5iX42t1N!uD_mS)EHCtOcJuW2JQil;t1a>8feD-mk+qW${I%Eyu?uf)MjW};-5av!m zH1;+C&fVd^UE=F`8F_Q*U(l*VVfPn@vP4ydR#l7|zN@GY`rYpVO`X~bIPr`Z;E|Dj zv#5-EMuPs^J3r(CG})W{-Hq@fat?VZU;=)qK&voDHPdk*d?g7XnyCR4>Jd___(FV% zXtXoe6LDqJ*OJxWt>CSxQ&KH&1j++X%yOYQIy7fY|5n1QiyK@4-UY)bFO1vz*fL7&Vn@CZZ+Bj&5Fa}t7Vd0|b!n(44tt#{@6!^`KU`?C1zZ()6n!UtSt!Sa-1%zEo!aqQltc9>eLddxPA zMMHjy{(~GTwDQvN2+?C?+ex2mz3I%jz<}^Ot=rZb9-pQ5U>RR%B&#-;SwCp0fObeL zqpu|T=^zgbpDAALGrkAi6B1L7$(<@63|Hh?)l$z0I8RP{i;^V;TS~*!S~Y75)G)If z0z&i?+(H4vyeE!-^Z%;Y>}46BF*^&_?3J;+aW)LxLO-wV;ys6jTMGJc0Pb02;sMth zKbqur{xd)GGp^>0XH`oLRB$T{cj~g^51(bcJ+2t~lESi7GfTj^@pC`-bKZi=yNrfw z$njai(F_3-A>MTI!qXWu@@aRH`+EtGDU5#9*?(yX*jgv&iI{jvf!YF<)b3TJW*8H= zFc#Z2e8YosYI`Gy=6SBn)gx+`^EC~p_P%# z*|fLGyCv+95!W`XJRCq4;dyVYyCZ%(_@8%YV7ub!wOyFYRSjjN$?kM>#jvFn=EW@+ zJDMR8uYM62fw`u3$@1W^jB|>}>3L>fmJUHK zMrBOoe#S>E6q?9N0$3_?u7+IrT0`IwG!21G@8vO^!_l>fv({bTiF{7n3wE+a!krFEkK4%AOc>_1Y-I^fx;T3G_ zHtTwp<$Z@h>Z+AR#*`VY5{t&tMrAaewqFIm!!kaAR5NW-X4LR0d0Y9G0=5XnX17o* z+N9XqFi%gh*b7*qc1s!SxinQ7Y6=MGC&Czw1#Svi^j#ad&XC1E9Z+`d^*-Zf&7w&s zOI4j}dG+`6e!hqz&zKAK95$bm{9&*fI!Q{msaAQD@9?;1AZG{6JS?y%%hxu_!kGO$ z*#v5v+I=i!Uf?7&WWlMhy9BS#{FvisPimYgk2cGFfb)ekWeD6V!FL7Swu@N<$p(BL z-P_o`qaW>(H>SLRnB&81$L^#d5PE_vS?@nh3ISSrH=O6{Awpyx?YH0yrX>~5Lli1ay1>x z>!zh_tqW^qDE`H{zOa}_2qpC()yHU$Fu9bfX3XaDIQhMLm2CmrtFTr{^<1*IA1eFp z3$`b}@|CZA^EZFlPc1Lz!p78~#KV*p6NoSq=wz@0c z(<^UTS_i!*HbKD3v{o)exl+#f;yIEMn;m}8Q93uD;0+V_! zu&Soqvl&2N((>vX)~6hY<$m5*n~V=tUkew^a*AerSwHa?hg(Fkbo5naZa^)g{oyZ8 zoGoU{tBs6SI2X*Nr$*LoEPmo#z`0)8g{Kgx=Q_P7fxQ$X1Tx0VqSs{X22*Ml%w-8| zczRFQgBY2;eiLVrs1&(a6yX0N@lLiAY}t$5aB7P}c6o9)t$xh8#JOh@yQ z`U{7ray77MFhT3Q!Wg##@E0n-bAtIg>3sI$mtj@npgdTHf|YHPSQ&@O@SRukbiuOM ztJ#vawiM3A?AW0_IHM<~6Yf#NtpDI2{DXe7+G|wL@oilSl$Wt|ESe}o`v=*&!TN9d zrf;%vDrI2KDo z(&ihPg}r5&WguqLe_Z@QFJ)Iz`_OCMU;gD^_NN!$`JLZs=ewscJ{WQ_cDNPEe(tVj z!PumVLc@=iy}(N^mc_A-qY_bu-lNg_3FhTO)-F}O!=W0ewHnpAxd1E(ZSpNe#)^N3 zmAqG}rsk^zKlDRCWFj_$XI5+el%&?bRnlv%6<}EwjIIJF?aFl1o zJg=ySj=orZbJ1(;c3`d-lqygwJ1IZ|C}$rA`U4?_sRvCu96i^a%4?kzB0N|U@uG0H zf10DYSOJ0yhmoT##eLZ&t#SkwtsxOj_yUtcFdgTtymobjdM;$)m%u4J1tbzPtWOY- zsHG_5S$USHq&PXE$Tk^*8_K-}KBUPh}+VpzkSP+tQ4?%%2>aJ zl2H@2XOg=|oZ5<~}ZkX`D$>^?W}Vdjtg$d7pA-{%Hgp1C!J;pp3e0*j?7O3$TD z`RQO$(-aHqWz?5~#bwr?x%--jKdx1nzzFq*I9={UO%{HzMOae9EcHTehF6E9dLGo7 z5x+{1i%rUqJqz;b4eR}n0V;R;7ZNRRvCHx-Kq3CJQ`0WSdE*h6Ryo~oJsAg9u&EL)YN|>ue^ZLS!0$ZGB zt+xnS#2Pwk*3Fg2v72iv_J#Tn63DU>DQU}I((VPNju0LP&=#ANe&qYHEN{~&m(=n~ z1XH`zfU^`_(VU5z8Rh!?I+#S(P2d&jxI&F^s%Lz#M|&c(aO4(lY6}n4Hy@ma6>J!= zKiJnM^(KIM+o-P|=DNeRngG>6D!*LS11x+-mQ@0mecnPYwOvBe#EB-P?Ab5g)A%4R zG5c9h&qC%CTRtn*@pofgpL}p z*5TIs6W&ih{q(H=B*R>yCbhXR7L_ICRvTU*@8uAXDt7fxyg;#9-oy>L(8?I!&u&j`wIBV_A7$|iU|W!qHoF1>b!AlFJ% z$n*gX{|upUW`rZeDP)8|1ejMkJq)mCDK-mNDHy9ZejL54jnCfwT*qEGy_(W^Q5W2h zE)WN2xshx(FAHh zb_yrKaIS#fW%0skNGCpy#;899PdvgYRY?7|%Ls*(La)UHx>85Tc&46xQWv0dmSrq9 z{R?x$yY#mL>a&N>bf*``FiRY7h5D`1z4LtrB3H&T&Rex~STtp)tmpDYcHdj=!7I*P z${QK8V}uExx07W#0davW%Tl1rN=XfG+P`X(AhTEGN(Ho$akPxth4`yG&n~K}T9#Th z)Uym+@GJJ~f9QktuWfh#PAzbsaFWC3tIh7uOT0Vi*kz$WN=pi0zZqTucI{%H+6fXV zb|I;qnqdS-VYGl=L+HV`!?e`wmsYN2Tl>bb3C1A zq-@rD<&~&9XJLGLO9UTq1i$UuzRf$Pl9oL??3th$#c!rh$r!VG!W3+8nuUAFC`=xUBW9ct98df3B zqOvb4Ldx}X0SlioPE)?yI48R3F_If4PyuLo|bZ8W_-8(Spa3(O9YszRy_|^ z^=>P9P)*(k?e~qCZJLW~)4ABsp;$9@cp}%Igz%-9Xaae;^6J@hojBv{?Vdt}XTP8E zz9pt!Y}e}@qc?5w`y#WffGn5cXeD)5`@jG9|N170Z~U{!+f$~f1+E5OoLYo&7%A^y zk#)f`)K&(v;Y0$AfoS6sWKTcw!eO9Qf@@+KH6fkVbhy%VT-f6TxR6;4Yd8hE)Uq!& zg~$7(#wk_->`iC6aM~n51g^aG6S)9h&-x3oyuKg&cmB@b@wu?ag*%Dc+%HjY8peN< z_bGOBY?@66uC|P;lQ%VhF&c|Ck6EuCKm+2RmQ{-&5Wz9ZNYl`P12hDEvHG$z_7wH? zuYcWNrQ=s~iQZE$J7uZ$6{co+S7G&+-CZQ+UW7khRhz#QCo@e_P25`bN{L0g&p%_| z6_&*%*JQu?)vx}!KlkT;_=kU(vNz0>WF6i<%Q;7aWHtYHvTww-D>6!C`p6~@Gj94> zo>hr(YwleV8_9oA*zu|oF5fHTm0d=ybh3mWPlVH0j7s!Q`qjT8 z0ku`$nZguQyNN_FOhLbPi+=U)B!VGV#-`t2=9KaCzX3Sa3p;Cq1(%~D&f>lhKQ{!w zkO8SXYyjhza^xzhWf^YWtnVx*p0Oor7D8Oh9$7R|-k9m$-!XfHe7Xb@FN^nkh_Gll zXTK1}))P=Rd(+7nt-yuc2SR4t+*4+MQ+RfLU`(lp=b8o3WU(yrx}W)Gp^#PyAJ%Z1 z$ZF%Nwo@}Ei?%4ShONe3vfD52VthBYom7UFu(J*AG>y_pNG zJ(IoIYQtyLY#6Wa8EZJp$Pz|lj{uj~Fng|X&Mb^*X*Q`uQkZ7O^`gA@JVP4D)N60v36NEFC zLaY}5;zGlTW&?OC^#|7e8!V4jefwY3duaQBw z$&VD)r0j58Vy_(HH`(=!eFWD6wr-CozbjWi2=j;j&>#B2AN)bTF7Q)7^;5n!6Wq8z?T;mrPsC^aK#KHb$8;N# zrUU1-hjsRehoopVE-A{wlIEq4$#|jlfyw{Z-o5LNvDQ*rj2I&@wU6hKbrRv7@o0i4Y@+L_q=wqLd;C7T~TBfoMbjh4=TF z^SjpAH_tq*xemLkeD!YJ`?|-t#x=%$c%J#px#n7%GQsfzt4??}IhVS8R@Mpnl@-CpBJ#&XdyRVoyWVNxh#Z#m#St0bUzF*XLNkri zFhO`Oio6wB>iX>Qc@0I$!jh|utDOsHRu$GV4w)1zDrM{D5nNjrF!Gb=B~_m6%FvYe zz2E!2{+frI5mpz*Rugbd5Fp$-2@ zfF|g-u1!{vUM#z2-}=_KT7ml)V=kI`>8W{hRDqWOl?AL+X!kD1k&$?gQa05P4)qKZ=367ccWx;kHA+D|dhY)QhSgJ4?*j!G@#18IJt{ffT!I`}#`Xm3w`|=hDiR zeUo4Xk2r)%}&eZeCBl#`Doa!yCZt_N)xrL^{JGe1rU(>7&m2II23-0S?auK zhFL6=PmKH~oExzlfuVv=iM#^s>y%qPMK(3SbiBG}VYF2^-~7$r{KhxF(XZCcU3&sg zO)$Y|eQq}?7~vTP7^e*D8RwMv8N0waKXdrb@N<>@MjFDDJ><@G_C7Wn7h`t%-MJ23 zX-2CbOZRa@;kCkHKrYu0Sp}H#p+bcfu18=IiwtOX^Hr~UmH#oU5y&zM8D*|X zkwRoT%3xV+(U4le-LJQHyG&2MSp=0x?Q-yDRjaD0d?saQ=huJF)a6(@`F{EA-S2+44>g20 zy9pT!d#+XtK^a4P(!fm3=mQ`4z{fxSaX+(iJ$gj8_-giDpxKl=mtmUIT*8_+8-MW^ zf8pc#Zu>KLDcS`+qo_%`;xV2A2?}Wk(V7K|OY*ay{p^b`z9==j1z#s9u-K!@)vyv+ zgqx9r3fIKOS^Hebz($-giv!~gSOnPniXZ#2AM-|(zKLjDy)shPS}R7F0-z;bKZ$!G3@L`H8ii88e<{sPqa;ivNVf|oLR8L8*fa;j*uaMrv3t1iehiF$wrIg zB5J;LcF!>}%A_y8VF~mWB_^!#K8ZHUY6w?MGx6lqA87A}HRLBz$x+Q)Wn34Qn%L%| zpT_8Z;Z?_XG}|G}&YwAYp2IBm!qh`^b0k|VWuS&Ye`u@gn)3K+8Os@v6dkgfye!Iw z&qS>*u|l*lHfzJ9Ami?m-5>gz7zYsfhD7kJoXS|8`|)1UtIfBxrxu4^@9BGi%^qd;wjD>!8z z&PHnND@dfgP19wF(7a;i4budQ($6|%WSOL*cr}1s8wD86dhX4;H8kv1D*a*$(Oa&n zN+EmrN%wLo$#mhun{r`R0$$eF(bG_lhP_ug$GI zCVm;Gp8}AzqYE;e)q7|p?p7xI%nJwB1a?qYg;O|X#Q-{hA4yAPW&w6t0yZh#S>ScA*duzVwQ9wdIAlXt@`W0lP3hz&1MdsvQ% zPkCYbn^P5mmkZt$kbPWU;C;5?ch3AV`#=8UKlXa#4w9hW4{dwh-H4nTPCD!3hw{GJ z2{;XsYP>0zy*1BAi&DV z0!(;J1+diMXnKvZo=YE1-;5Z&Lc^vBV`>0G%`i|b9IXOY?+|d{hVv+3C?r==bZnNl z4enEYAsYeBt+_2mGgMef@ill_DP{<42w8>}(4)y!mNk4ZPQ{ERP^>oqAN$zHoDeO| zLt4e}D!yL!Lk<^XJslIDl{qRKbE9JznOB1wn%ywXg>v5bZ~&RNSM)Km@HQ+ka(ye4 z7nZ1uu&peRMWFYVm4U1=N(A7%l&y@-R6QNAp0w6gx>ZR6olM_!H%*6Jtf4D+L?$Uq z>w}rs@TFV?d2NkPnm+i!4=TWms7wAUU-=57rKq+k`?i2WE8v0E4|v_--~ayiTM#K` zuO%XD%9z&8RkJR|Va7_r*LWLVUZa76JI^M?Y#WtP%@C0Je0#E^9sghJ&X!cN<=d=5$e;RV7kJA+?fjjMvVK z{;g)c=3^Z%<;sR>YJr5*uYlI}BI#EWN%5MBOscv7bD7~2Ew(K6mh{G4!?730Di^D@ z9kT_78bV&XZ#n1096Zrv#Igb0UoZ&K{QtkU`Hm=XFI%pYj` ziJ$lhv8HLY-O;={`b(7Wd*A!|^{hFy=VkLIE~NiGbV_2$HGQrrX2cII<2nT0i0z0Q zuF7T63@;Qxiy5dS{hBBO%WBVPxoWu>WzVIzjJzzx4u?xyQ@|NrGov7OK6Cw}dBqa$)oVV=s=}o7)*0VX@foV+RSaXA zfL1YcX=F)+ORJdhseZ3?bsH+A{oTZlY+35hXu75Lbi2`+B9+}XB{G6TD5GJPCXU>2 z6LqSRp$Uh}Xo7~;(-6>B%?a5h-Zz!ttSLG$dD$aWa7?|uL%`GaU2cbJ&CYiC z(*oXXd*W-vQ8F<1N1z>HtdQCW;qfH?1&3mPg+c|P^x=FHGnp1n?$?E2)-CFx8>0H!XG<3Ie<50`mg_*#Z7Y_zlQLHK$SGL%>-w-R;~1E zJc=jLKEu^(K)Z=QI`(>)6_8rSp&dVCI<;JkhOm=1gq6=_ULMdr{pvmq5J`9GWdP9fXFFXCf;Y7f?uELuz_0 zd!U{Ls3iP`^$iPI6OF8rU~?>7-^53sMN2K?p$^NWz^NUjU1Cg1QaYB=A4BxM&R^Q; z#1Os#3IvpBDb`O-|Y3a6NkgrR~pWoTn`DrTE- zsu00Tz@tZx{7;(xEUzERIYnLmBl{$PyvbIEA_MhP-kO?AD^L$d%VKs!v?k647{-ho zb2N8f*wBzhcX(NNXB}5p5?NM^KkBCdjvI0MUA=CFL(aY`a|!YE1N782tSANQrTz34_zsGvennJ_rO^w}98G5bLn}U9Z%_7bydodP> zGm92&!kt^*87iRIdiIfu)3Bw6#pp*}h_%!`Sj zpVV0lry&epK~bw^!<0hm(Z?JdSow!)DHCxs9sbZ*#t0zi$~d%=jyKKK3m1}W!_1ie z1{Y<5_S8o{vniu90MjfQmKwRCb0Qo;W6>kfjMgwF+?E;6s?ve&zGt#gpc#%IPUI!) zC2e74oVlORE@UQnlu6L1q;B|5Z|gI(!#R#+z>qiKjMN&7W|4iV@@IecXT25qtH1gy zFDO<%4(|Z^Yv3l`eTLS@c2ltLYVg!J2dPDFILD)^rk~VP9#`IR4PY-9z^Hdn%V-e{ zd&-f~s}CliSH>DBQG3cbNlQ_|>_E4p?wP|JK8uhU4wzC`P8ehu}Aj7KdmS|7^ z^|z^ zZ&Ix3%5t}U)v1^gjeV_f#TAbhvjraomj=5jYZZnNU@2q@-cg4%7>`_GjDTT44>y!4 zz^IMrCBVhtYH=re%Uj+eox5QQd!-|4OlVrPOH$wJ$sJz?X*)bIluW?nBrN z$9@zbE5`A1)I1(}_xT_H@gJD%S_=ytjXh;ttAgo|U@jJmz-UN3d=ZWjlZ8k} zg~EixO)c5Yu+$j`Z#Xj~-c}N4)UV30MkE~==TtL`2tzBDCRYkgA)HR+@s2pVmL{-< z;IORW6E$ELypN(_RlTQj|FNg-)X+v2nbB}8hE+=eFx*S-u7#J_CLs^#WMH$YF#>HapZq81- z74WS*-!k>rjSNNg+}x2Xkw8PO`;4KMtG?Q3TElKr$T;i>d-~Nyv0~l`diJ?k_U5a= zT)e7sT?}6(>*633C9g8Vrc-z|z(S_%G8$&go{s*ut?e+#=IKUZJzyDO!-^KC@YlvWK>xRx;Cf8W* z1E{TnGgQ?oyK-7{Jwj6e@U>{_hcmKZYThcF&Z-Gty>zYd6b)U{`sDV?SErd#BZuay zD^14Bd$LLq>yGS?d%6)fjY)U8)OjXZ6Y=XoN>wxc+WDxX-ou$*i|zg`q=h;fzA>g| z5tQcxj8A;x6YgTIJf>>lk=?|e8kW7PaNIpvMzg5V9B@kQLOUIwDtTRT=Dz;*ub20d zShZC{OEL8{i!%zCkpqRtZ;N5BCeG4u1dAGl>&jbL*TdUnAvOsYLSHJ6vsuDn_kpWd6OUOQWa!wOH?51IF| zsLf@vUd5?Zo4rP0nVp)s98DVesOt_!No{NUP8p~%=IW|vB<>`b1^eM#cq?qm8_>M; zHB8}7m%qQ{lLf=qzV@~6dCz+oWpRMf7&U-My%%LJhc-e*M$@CI%|}=MG^dY#I=Tf` z#uPIlfyuQI%qyzEXi`iRdyBxOHDs}Fnj0g`=zc2%p^FGkFrBq$&xO3&FUOTJd_%38 zQ|6j!w%U4}3Hg5mG%4q{Eih%%uYW=l-0j@K^KlDX?-;b;F)M6Vo>6&fV+jWwB)_5L zz%%ZT)$Tix&F%?JL|#pb$x^}7mlvmM^(t2zpl=pH;d`;&jHYZjg)RrQhSOh-MYdsO z!t23hc);X~?3bp0@CSbojlDF*t|4cz5H}Y;5%x)EZ{H)crvqqb6fSX@h>uZ!;0J!- zd%ov;q^t5vWHGffDOQmi$%i`KCIr&)TIFtQ8PQm5g#QG=~C>SH7>%;XHcu$Xq&V6-d=>NVFTYoyq32ia3N&WYYoR3L9W?c9L7EOs$2Ch!BbN4XF^s&QTh+wjDr9GJ|js)K~%t* zs536HCNi>C&$b#Cve*8GPw!Z4fgTeLh&&+zbG02YC#qb2Nv5mb`OymL^kU*n5Ad$y z74}N&TZ&4xK5k;~eCIpe(jDfPw^V!KM>?(`V6CJ#0Dt?pf9p^0E8aIo^j5yjZNZyV zTc97X>f9M8u2-16bh_|maT4@g8dpb!rGwEO;7ndoyj2S{9KKf*_@{sRr~Ng3!22|x zyFK^Zb3Ph#6wAx*C9*`0v3>L(c+0L-1UDaqWUH-RcB4A%=u!&MFDbyzSXG#S#@KqcTxh_^rpbs2YhjvU!`rsK%&uE^%9=DBS)l3AmtAkD z-8S7TmTxW=zxmpiroS%!JuBa@*74<9mr((=>Tz7Hc1NNDcvo;u-|Y^jKC-`?ImMff zJH`awb0UY~l4?^`B^j>vl`zZzmyn8As zdG+OhZMlb3f0M)uCwq$Q0@GP@oWWv!p~8Kqa}$$MgX_E&`z_mYn_NBj&(lUhO#wLc5qzUm%Ujgs1@Nno z3%Q#eoSLe7n%5Loc>UD8dMB{$;6lb+FIW~^!|1|sc;4`aH$3&!Q<#q)J^Gh_`4-6n!f4e`l5Aa6N<9NaH zHN`J|=}Ul3xA=Si6{o|Hh1v=(spLkE0whK2{Ln9Bfu+M?)EnwG-g=fzitHQXIxJ+4 z<+psxxA6YW-~5d)6Tap(uYo5EDHta3sPu8w_1f*J8y;Js%D%5GR};&9Bo_wQ%jBx--tv@&Yot$-E^KC=S% zFXp9DXbR1)Uf!m!XEE6)I?a}}z9~yrM!iF8BW5^cK-=-IH)XYm>ci+_oxo`NbybC| z!#m@Vtp+-$l(XYcV}Y|;jI{u7%mxwmY4TN17bA;5BRchFpjnM1PqJ ze?;K|$8reLLG#6Te;304wuo~oaLPE;xzWrwjnYljlNe4? z;&A;;PKCOD;oXu~RlLm!T8Fj*vd1#+yRr6_sFtgMm1!B}|9r5Y$W)*+(Nj?K6zF zrZ^?F5kE@HDCu~2Gr3-wDQTqgZV0>+KFsqV1=Cpr8#^sd8ti*7UaeP zgv4(<3@gBsZvSf}uVS>s^?oJHC*p08C@!~L_C0I2{=k}dGhAJ_#U(A*n#g>spRu`1 zno&sjR4!_@Qv~6C_~-9j^-}9C=%4=SpZ4cB> z`lkUXVG+f<0@x1Y5nsS(mOpZ`fh*iK^P>RPb_X zNwq^Ojv?7k5}ud!1wwWcFPE6adnGv1-!OYV-!v{huX@UHgAEQJqHC#+@!W!o1+ zMr{;$8Q1psm40+1`HM&`O~HEk(yB5`>_dX0rq)&Z5=^lB^?7os?~sK)Wj_aSM*}E~ z2v@iXP63!!!2itU3r@gVUXvYW0B566q77{`9H})HZt*>8AN_gFMr1QIol#3lKl2@O zYhuWC=pEVyI1Eoe{j?{TD%^N!w!$0xjl&9F%RW=mzTVv&hqG?t%xjZW!SN?*Logf{ z@osIaF=a1u{@^sbo5i8RQ42NMr?4rbH8iY#LrHsu8%}G2Q2l_$YiKWg^>+Q*Smd5# z5?|{{GY)$o&yp5GUI>ZzxAm7$kqIDrCB_4G@z5?0ILLm)&7jcdHC&K)o{ zQ<%9}(nIl#BVGZFqQc`6o76n<8#21{=rej$`s!D|YG|9fs}x0$nx-BWEj%kcS)M46 zl)jA)+%}g<2{A`sF9C?$O-GbZ6RenZxNQyPE$YP=U+j@|${0Zl>ss3_^z}owVKlB) zB&l4;4e!&J(b<@bT}DI8zRI=>^5S<0tD$~n!bb~ZTfW}|>BLHnAdwAqONTp$dDGMnP@eY{J_qa=Z)%%id_&6G*aKrh+xvH2i?HTJ zR!matt4Q`fnt>Ic)NqoWGJt8rxf`G(a5l6diwaGl)k`_Nsr+t9U*0J5@(GkT*zRL4 z)h?grW%}*iI`R8dJL@?j^iSbjdjE+>fBL2HdPlTY_!JDN76;JcuxP{NC2PJ2Wm%P{ zp36bu!(TNSS1-H{S0=o1Rli%P<|=3kjDVd2CS&00g9j?KYN+P<>Q}$ot5+v@mw&na zArSK4xx4ba@AHaHab<3j-C?*(e4Tp0fP^t_YeKh54qY~nGN$+rHYkzRhY^*^^6^;Rea$cX!a2-d^mvm5#q<3ya~=Q5NBLT zaXCxASPWR$O~{!colac^V2-jCgU4Q-jP%(t$7PtY`Qq4u4lvrhgxeY}oWjpnb;y~S z5-BwfwZR)fG!~qxb3u_R$Q}&e;E!nXPWN9vm81hcvc1N>E zZNW(O!ar&@MIdrljo**-j75R{%U}Mozv2qGH5aaz7rzvMCbr>lM*PVEH+(E@3H-jnqGR^j#Xq%;}~&TL!f$G4rm^B zeb35e(#{TlK;j9?YiQyWMs1k41t}kmvirQ+EZxkAMYT2p5Ibc63KKGdVYHZIpJ8A_ zlSpuC3lwGAm&DA zcR$M1tYE;Z5rXL!R$odX2wui~P>q%mxlF0uzn{VYO#$}iwz4X8d-~1a{7r#AF}2N8 zt;!t~L*lD!Lu3bnUEV|Qh;Xe~>^fWnS6ouPwpp|+KE6_(HzB<;t+D6v6rk);ra4i~ zuH9thV#&DDh7aUb&o_P3H~Ah2%Vteh^26d&C9#{GRwcmXRqf1fH?jRUu$|R0VlocD z*euf{ubPgH>Hpo|{hhov#c)*^siOeX#UhX7#QuaA3?5-<{|me z(yA6%Zy9MOtDnu9*!BpSrNu{U$U;ynDna*R_5|IC7%iads9*3XRtTV#ML67U0u6H+ zPOdBu(v#Ild2Q>r`4#Ezmr-BRW;7Y|8je>Kqd%fIPq9P31kj;iH9TJUX`46OhKUzW z+)J93!5P8ITWhmo2-@5{r^2au1Z}9FY9hOu#=9n+L>Gc$tLiYM^HU<_HJ1uDoV`|$ z*!rpJQ0tZZdcG8-GK4}a* zn>u$}ks5-&u=pN^W(e$Aj|r=5gUeXmDQ6k|b%?fdHd5z@X5<`rMe*9U-a$l7u2n%^ zk9RD-(f*aMd<77WIph_ufw#i4&}m-!mOX{+j+cUc>3qs&U)KblR-hpctgo?*=3rpf zGxGFt^uh~Vd#fj~(}OUAIPf~$2(BVGVmgP}HZOkq=4 z8Kc3PD?$o)H~j3IkX3VB8HH$!hBeCwWY_m{#S(|5q$~l8Zz8fcO-BEhaPMk_7#2$w z0j^aB9EeF|wTx>85vrMZz!Q?+oDw}YY~Hsc;xO7rA5Hn6PkcNR6OD2Tl?tyf zqQ&OYOSHkeI+pr3-joqGu|q?EE5_d=?l*Z13yGG9=|rB`4T$DN;XG{UrAmKFW$2=89QrQW^Du!?U_7r|H$ffA4L|cCcbbJdt`E!9K3F?DFnX?)MHy zsW31!!)WQifbyzPYGgGS0v*Dg-1WEHN9QP*L;-!V8}e$5DV<|EcE6Hm@h6Ixs}l%} zJ&=V?Q!s?JvBMKGMwZncAq!4-!lYU#7?@jM3mZW%yz4H@DCbIiaGZ>jm$8@Bin$I$M>h*0- z9|Dn%jZ-Q3EQS-f%3X-(dXAsw$f~k*Yk#5gAe>5h$CT83CIRcVVwFAOHBr z|Nig)9x&VxHbcd)^>4g0jJEdU0@|c3T}7CFhSiJi=ub$NwKoyNTH6fc>s!x;rfh$` zwc{!TaNO6;%~j8ynsxBn+)qV@umZRg8>8VRZ8ic3*H0|*+E|*GAuxE|Qwn{JRUq0X zJe@1i>l*>1C?a{M2Kp1un0>XtLZSf;>*LqwD!dfsvMCV^iyDz;!Tt5zA}+ z4PBUlNf*#h7Pp8F#)Jbkv}vp5+W)wC*@?L4f8YZj0NgEcq|nS)Z+(0iF~yK&9Pxk< zI@#gzmTravhEtXj`3-4*rqff!{JIf4W-n&n_kG{zkJ&53maRHT=}GBp2x654u;_UW zh3kjIPTZPD6Eb|@uqDM#O&bEcq1E#-p|vukxvCY2(<((MoTVe-Hai3^9A}`wNfcll zdtinLbZBlu&JR`Yr+ogN8&GVs(`%Cg=515qZb8pJ`)ohwWXFki+xlc|e_lNAQNamZy-lQfW!G!j+j2uSc;Hc|$X2kShHMc$GJ1>eCqhpD=Rg1Xo?xO)j|?C7L%1hMIgu65>_)!{&NR)` z0(v>bWSm&Q&_c1}v|<^P;$6kLQs9MalQd&}sUw8hlWM5v4YR|OXoll0g$gyeiOdrW z8vA;wQY++Ck8iT+M>h0$$4-`onld^bXe{*sF8qp-f^k~IP2O_F;VSQHlqaO}^leQ;u{a54f!9Qg2)Ra zLL54PUUTVbm^c-~SgwZpcHb=Gu+)f0F3Sdwca3txk&aZAsJz<5;%i*j^0)X`;8AvV zJ$;F^GCF%KdQprBnvz_|zT4_!5kIN$%+Yb3+6G_>6jFG!nGu>smKR`mL-R~i(tWC{ zPBG~i?}K(7i#DJvEXAnGOYe{W_>WsCe;>2Jyt}aL=@ec_3e&I3V+^FQ_G1^NTH6O` zC0dym;#PaeYXM{pwORJokY!v2?parR>a;UDqN0G&7cyJ0+QlYvv`?9e)312t+=vA_Kw2dRc9YxBR?lLS@*=}} z_8XN?5vJ5#juSdKL!)zsc`D0!`zpR3o$ATECbbC8TukwXtrBF$Br`>$LnDt$qb*7k= zjoE^;>?g5X>cTf_Gei^8QUgO~aZP!aO;bNoT!s}O1jk=ua3=k}N6&V=vw#JPwW0cX z&4c4042MzM471F<42g8cD!3`^BCi{ZcBpghKmPA2es=vvb5?*0=A{cL&na~a^5K>W zi^6FNMXhT10(obNgmiHMTCv?`C1D3JWJI3`sQgbKqIl9jXE3!Vd z@bIfS5rmqdmY{SBiw2)*ChMrUgsqQjR!9moN9s)Yp=$z#tEVB{Pi89BP|IcFEr=nt z>@0>&C)(=5X{g5;4BXguiLbX~@QqQY2-Q}dR`2g4?EVn{-)?+RFvh)(Qh= z>P%)aJD@37YOAehS8aT~cC>g*je=Qw`gav{;3;cIL+)dgtEv)jcpt%2v5$X{y5@k- z&noYE&Z(5y#mb^}w_;4q_Ou6cH^GT~UhqaQot2a9YN>$i;qG7Im3ap|*-g;X6;0Dz zl@a1JalMcKqe%zw)|Xv4&bY`rof_J_0E~WtTnOPfECpuNmz|xymlOIv{_l560H0iz zeR{N#imjMj6ov!m9m{>ds!XThM&FRV!T@tLuR!a@Vz@T%cKl@wf2u{S#X+!5^pl!I zLM9iSoh9Sy<i)CzB2%`pTKod#Xu(<#%2nhz_Ynh5B`jnay;_j1FfX5suvQ2l-RMjT?*Y~?-R&d3;l+lf zWuGEhU_Isd5fYztlVZXHg;2npdK#KSSsu2pB$`uz#gVItl)8)_yTA6eufaZwTg#4F z!7vvEZxvvx+WIp_Fe#WzOB`U_8+QDZ^JWy-(A8n@($s5HUIei&sE>T)Ba+%~-qsKZ z&t$V0YGuh1*5@j!l`loKO`l7~COdN^vSHq8Xo3lfY9a*v1V%lT&E8__5g377fTkoO zK=Z=q)qt4}FqQ!CC2ayPA)n&NSS3K~*2WpC90sc25biZGvi_8;C8DO`jDDCJd&S>4 zg+kUush!Gu-Y(WH#p}3D^nE{{dYF`uTWL~o0s0eL0zdi5PnwH0St~qW!xQzkTvAx% zu&LFmP_^z1?MszJ%gcgXcwWN@hJag;56Ha7?jFAC#DAz>UYA~Ejzf{=EEn^{iQ3b-9 z%LUQt2ST*_B=8Tr0rIg2t}b7a5dypK`)F;x?o##= z)u&bz%jl1H^oxzJM;JV=q9&HTI$5f%A~&(C&WbOj6@ol#0$2o=nHNiH%CII*CYQi5 z&NMs!yaDz=s~W#pt`rzGw0d?RS6Hv5<65p5cTQIa8np-`Yq(zW_-Gp0VzZzzW(k*< z(J-}L*uF)(9v%PJZPo`yef)2}6)X@q9&mwGNs5_z3>D`2iA8jC9}Y{)=!U>JsUx%n z1#)SVp9{`aKducRrLD%zaCKdXRYFAG`h96v>HX_3e!hp81V-O>U5LwjYm&tZZ(FbI6Oc1O#S#eOlY?%-*}DP zGr?iFg|m(pu{G5nsb(zhf+_%BG;3UrAfJ`VZTS>T{w$5&T5-Ai=l?8=hYak zPklo!!&WIgJ>Y^A?$FFcQfraJEj|&iRrCAoVl_q$ppOPS@g78go(OmD>qbpUl~+1_ z69I^O=g@1?b;KS2r6zkH$&)aw)B))l4w(7IH`HL|q3H<@*(`j)$?wkN@S3kVc-jpk5LMkR##+EdDB2uhTjFYQM3@f9a0t;6S))))y*@$IR;i=)oQs_QT*0Ola za%Ue|6|&n+Kts?M3pXqUqZYn!r;5CleN|gA5qS@#DpDDMRy~ysH)LM} z85?Fl9A+;&+_jdJKtN+hh&lWKZ~9Y4_NhT&jfJbm5@7>)v*;5%N@GNjdcva#59n7s z#`}N-%ebkHYucKEv76EuyMox8pnk3?#%L_Fsw}NP9Z5B`dM@EwWT0>W0iL7o<{+GX zQiP+qe0m7ZI4QZ z+Qz=8T%BsgXzm!+0f+;bW4&;g-H=X0Pdw`)Fy7dv$SLE-kfVgkXhznp+Il6$HxU-! z?D9uoB^R%87@khU_y8NTG$-D0suX)sUt)FhZVw`swfd&hG@g zUhGpnzQ!*UREg<(Irg4&O1&`liP9=&T_~3JOI|x`I42Osj9efN5YB#BZC)ag4+#%q zapY9{UElRx{-S`TcBndU`+Dzn3^wImz1WQPRD%7oJU*1CXrpr;2)BYX%?dWvEKQPY zF2Y>Yka5n--ru`sfeAiTQfiv%&~$_FVgRs|!jwxieIP>poVh7!$V4ckSwKB|_Z{|W z?5%2Ro*nMTOomfK>yPi7tn7dEM}PD?zwNx53CycR*VX7{zPeXW~5i#pBg8=uVr^!^U7YU9vpVK;S@7c2v$4JYGl7plc-$vq}Bq$>F|kLvAz**U*k))ZL^ z%w6^Snv0t70lbHTED`jQ9wl626mF)N{+NeP<$xYSE{Q$GnaWQQUShiiG{;uSvTF)x zRbh7CnRTm?w^LNLCiSw92JTznUvDLQy_M;d1wxQ_eff2s=848sMhpJN+Jf;Yli-*RtzfA*7r_#wslD+T&El zYLp1y%dp=|^EbA+yaAX`rz&{mpTWpp(G}^9#GBsqCV!jNA8aADimb)6uWB zY95erTrqhq#Zf`VIj(Rz^=n8w!ma?nX5dxf#TQ?+sw`UD1n}zV0Q$05%#OEr9rnoW zR3UN|QaIy{&5N0>`IA5S6HLIfi;eR;!6~mg4#^AywjNMGppc5B#-%ap8`dK*>a|?# z57JU2drGa0Xp?$E%%ZD+tC`vwUaQet!88*uYWk7I8RaojPRgtkv0P-~vB=1nMW80C zo>3wgs1KAK*5KI%!=c4747lD^GCQ&ly$X*rfw@-Wnr;Fg1RN$MD_z;wc^yrMh7%vb z>{{E%L79XJyEYym^AC- zQx-enfn0+PcZ}<+-mun`uSa+JSMgp<|NPJYT(Dj1cMS7XUH=1tg21+!Y}U=iGQPDle%2|5++S|6StTTedt5p*tr|FqwIjz1gp)O zG^C86XVK8clD*!AP25xRbI(2J`Pk_x+)@Jq(Exo4Nx50iZV6dynM}TUc*>M~Fh|85e&>~A+W7pu_O!lqRVXk!+W5nUQvB*mZ>8xrirXcC) zRDhDQn2U+yvol(X>{BOKEjzrCO5C<~gvMJ`S9($OtJFiVZkC|vI@?Q0l9io(err=Ba2c+6-l zM;ksVuF5c3cimOzXw-RQd2xX7lxJubp8kLS=YRf3fAmM)F6QON+*?}(dp)W!e1JuH zYNOdA1KF!&m*zGH44I}@_e%R1l4tK}uYlG-3Ur71~~opW|W?V)PeUOX*_z61jvDj%Ivm`|Yf)w7rw zqmAkEgXcQrig~6I{P8A!Xc@vGSoL9T4L{`HXrX|!-l5X;-`toNdjwgWzcBtJMHmiy zE5NdDzo-Jey5oG?w|$%cWHgansfhvv7HfrZ5C9D*(Y!A5PV1_e;Rd8XH3QTp#HS{Y z9z7CL-ir6jLvBEf6D1^BmW%;W)y6A?>_oBi4w*fXv2$g~<)$p}SPEQ2sL^Mcz_9Qd zyB036Nx>CncD#nu@LTx;-H$Y!(E(~hGZdaq%q(e^F?%6da0*EczHKW|mIU>cT3%|- zhMt`zvI0z8D|^QJVLDwbLZ%)=ff|c`bq(hZpsFqpY$EZ+ngvU>8RiALFagY_rVs05 z0{9f1F^#dtp35SH^@&6XGY%hfzcyFzqiAv!6-{5u4iC8YT%E4$;{_By8BmO8wJb1D!!JtDV%Q06$TFIFS3aC^ zVu4zL>y{zU&74}ZBC@+`t($mJG-Y3e7c zO1zU{dEM(?*Vi(8^1MT8*X5Wd z9T`hkiu$RF7p7^}j$CB?LIUB*JJS(3Wyg#Y=E_@m!*OA*c*O4sx|5gjo>H&0@K(Fc zvQ1{Hx2i0TihG4m2N>;+%CjSA>o(<@skK3~HSFncXv2RHAcZ1b8d_(d3M=(NQY3Qq z6`)a^*>*k*pTt3-IWqy;4?w!+IZ0bgWtF5&B8QUQ zkP)bFWuoaT7lrz@KI)YGWL43iV?gzz!E19@imo{$*EK7Xm`-zzD0s5O7Ou?l9$2 z4=~iYHf`$9J43X6#MP%Z>=LnzU^*>VQPqj&d*qniqN`0`cv0z;V$GQMuop|sW6kO+ zkko3tC!S)G?faZB?!V1QnRi2IUN!=M)+bI1^;QPhM_=71gGeg_>QkUz(xz~S(!iq=psByfv z1*w?=5T*b$-&JkA84Fo^1VbyJ*9^7D0ZZgg^xD_Hwm%&hb4_s`D@n*+b+`CZjCkoz zg-;nnNW@T}_W+*$J@qPYn4Tw`W|x^nYZQz#sSP7w3i0FDfBxrx_NowJdLUYP^&^|5 zN=oFFk}*7>p{TLYgjvcm_HGS^TCT|z$atvFZUubj(i1?RAq{7wMiAI%*rljVZA2{Q z8{Y5+8~y0fBg<>!yiDRJczCq3U(!!fWO$?`g;P)u*L7W2D?j3u5kX&@WgJ>tp9s#_ z9~RJG1uKRH;8InE%`lhAI-KJws-=KOa36hjgQ6xX9eWW60pJ?_O+6zuprkFeD8n)q z2-nhtConvFls&bf0SIwYh=3f2k;M>b$JxW4a=c^~wF)A0v1=*wYKHnz4ja~1*R|~y z{}x_~Q64ZtGdoOI9D-A)S7+1IYZ)gBK@&2Tqaa#R>txyS$p&VK!E!6oXO7=`Y)uy8-i(gW`N+uD|1s>U}k`K1}=AH`#^Gu?nu1Ojw*JMv{ z3OK6pzs7Y1W~UgfTTAD3v3GL(0Y(SOuRc0I*1V&LY+I38G{6CCC=e(`_HHHu4Oj14 z#)DwulXnCwMv-H=C%Ae8Fe*vUx@6z2%5pZPk@%W`U6T7K!SMk2)W-X9fviea|-VhQmYE8tlR$@|K60(foCU%#5|LOSH z%fcw*JpB`48IF4a%%Z&Pdd;wO@KjrBmI+}ga5xSv%M2snQ`6?9s{*o5>WNALKUYJG z;HCG?Z+^31t@hIuk6-q^Vp5x2BYrC&oSGJxV)ljaj-07!0FIJ?IEFa6vhYUW8XA{o z7A*K9VtCI+N?S!5O1H7&WMmI?u?(MabWDL=sabNdG&S}JELx`;K(iD@!QQ9&DyIjR zA&)+QUyqMmYbA#kXC0!g!w4Bi5MgMH%3~RCU@VwTDxiQjEf-2_vc*vZ8{?Wl3Qw*sW(vTo}RQmDcb@w#NPaN+CQonH0VjA$-T_F`Ap zid!g_K;o1&%8FqJ40EXg&@#5sFa?}?Aqc}PT}JkXYcJe_`$K{L+~k+O^d&EjqqEYU z5Z+B@{|mByDqHGJB3>5L;qBm=X%pXv?z#v-%V-GC3YcJlS%jmRvS&EI4Ca%R7I2gI zw!_LOs_byf4zRR|Lx?Z6bK?B})KC4C*W7*!Vsk4lKe+@Brmu1qStQk3ZQ098|{U7htf=2iXiQ=G~RNi79rYkrmZ`Wad*3j!uV|I4yR7K>&Wb1f##_~8kkVHsx# zgtI4Gzm^?l9~Zzl!$kDi0~@bdxbZS-6&B6J4ZX4P_t61=@YnxuXpX(Ri>W`;%6^7$ z$|bN^wOQV3YdeH=3AFf%^jhx5s29>^;d@KqgIm9p@3z@Qnq7obd9!1d-LNb`;p{9# z^ldj+6~`#TQ@n@jqZ#<85K<89i$DAEmL_3q4Mo0wAnI%Ikiu#ax12CWD+`*n9o_Ub`)JMh2f z`U)3LcD)d-!V)>(pJ667;hW*uF9Z^GI{>N>sNJYgYQ2>af)5vE7}n1@05bX$#s12q zPa}qZW3H7@d2U1fSbs9EoI_lNhjx|(^)rz`A$cp+6f&m67&AM}f?(@sYVl_{1x&8d z50E;%K_@$htzl9V-b5T!&v2e~y0h>`28J(17_f}1OI5ijWVOyhE2pUX5p>C zKmOxCe&Q3KkfO@nBWxKgaLrrD<^3cAHc^Vv=NXoGQ5m|egx#Df}dI5knj zXUSL=BIN~GGU{hIV4_%7BYVRk2$wynqu#y1uFD%4UnRW(sCX95_IZW|d@Ij4K=!u( zuScQ@TvJDQ@V+^!P%f<{t>;ptgR1$A+zW>b#J(uc^}_qiGta!`EpJg$o5do~lYuw+ z9nMqLV%8$8Nt=5MMFfpkuQuc`5P==u7ryg01g3F~F@O#de^)BB=)Uued{m(@-O@SE|W#Ouo%;cObwQ|M20XI&=N(fo>`m= zv-}UF%@PGHV~b!Jtzi$`v+}vv(PFw?c+|AZ0K1k>J-b^(=b?~EciW{Ft_*+Q+}*WY z8wJV;yxsu#`Kn4fBxrX|Iw>f-zMgvOsjFwl95?DlXr)H$4nTTRrqtzR{)UXCJjJ>- zOTjX|?|yLksN>mZpJg=EYt?hUfHUDJh?p*gSa?_oVx_w==RM*6&)EbOyxaSRE< z$fIDWiDl7}Dq}M$Z?u?`Zd_jSDHp|y1_L#+4c$97FFd6{8vqNR;ba^mSF&kNU($v% zk(jy4qPL`80{sNQRb$8tbVUFyQGs{pD?s2>lAtV%6~>~;r7@Zja;=OGPsW)PZ?1s1 zD~{P}3E#h$Q5&5VkFiqCr6K{1cOQDS^)T9OR<2P4xbzcPxZd2uT+S7anYzpSrUb#R z&~z#TIlg`@08Y!BeL@0bG(=t%!WpCKSFjGt7+FtEi=f}F%k|;Uz7D+sF#OoZKK8*6 zeh}GzqGy_b6-aQE8qJ3SRZcCiD|BC~lgVgz3;`F5s`T@}GIa~$0@#7J3?StVww4IX zsfO9v0B~Rp7N{p^?yx>%IvG3pun?T;OouTh7r>Z8-drOEn1a7G`ImqBm;F!e81vPV_d<$%&T)%C60=#0PX{0_1t)Js#eBYxn$AkTQ_~fEJFikLGC%_|A)h8xom`e z(OO}4z}nif7P&=eN!@7y9BVGn(fzl7`#0ob>kZKe`t3VEfWk4vPv^G1ToQSw@s4-A zYA? zXJOZ(v1rwEd8y?p>cU>em;){hTxsoDQ_!0NHDKkO$3lv#jKcMr!1U``oQyAi@ryo| zuz-x`l{el5Gg@Jvkik>xfKAk9xGU>=-6p(?%`Av$iiD@U37Kg|8y$cvZ!_(Z&WJ1# zPEif@vUE;HKd|PlLUzDsR6W@zm8QNXSIXwnr=Hm}PRNL}D-wBVEKLEZaRCzxXf2M| z;fP9vm%d4Hu>ifDz~)k{UXde+0P9y{%n1SPzL|RH?EG6R z&&R!ibkA)O6wvewuLgL4Gl^5WO^>Ecwd2j+Fz?zI!mCw3?-*GIZ=w{;VqU|KpghJe zfBDPq7@kD^D8RPf`6rNT(hXKvWskj54cXypGqm9A?5sAgUs33fvO98^ZGr!)$&W8g zp<4<&rVHGElG@hLnRF{a)5=w>VOu#NRkbHxRh~suu><7Ir4JOPHym2naMR@d%x6C1 z3-NCIh1YLrFa6L`JMjJ!NfYsjl3|54yXtA3VMY^i%z%b^-pB%r)#LbMS&tq)a$}iI zPwj5~Ui+~=k+u?;q=B(0%oCf-)Bg+h`Okmeaq4w}rSovBN}6&vii#mpMlPU}8SPfe z{{zXEt2;m|X)6OA6+_FY*IJzHt*u_e*LPg!1R^t12Hea8EQJfX?NSTzp}wfMzy0mM z_=~>?xN{O*b*fwqU;XM=eSQRJcQ|0H=3wG3rQI(>k4bv1$pG0K4(CCDRhuk|FeUpj ziG07g^=+yu880v!HWgk{(uiL|eh`lGI*8QNY??C*F6~T7x%6ma3)GWh)Yb|Ob2%K| zwh94O!X;Q#G*WJ7J~NwNw`JdCJTDlTU}d*oVXjFu7~qYNGLEg+4`;kt^qOhvgehS5oTC_N=%qo>#U%`P< zPDDEA%G`NbG-SoI&nsfaL~hlmNeZwU>A|=XMgr* zpZ@fxJux%VDUf(kWz6MUL-yM1jbZjULtaY?6O37fYG7Z(S1+vbj!t40}X2$7bPkH6NUJ4y&-r3&96Y zRZaoHz7N3=PPt`Ft-@HU6Gw$Gz7}Uh;uMm1IAt8>03m(-ZzDB?mjx(W-VT!YCp{lm zVN1d5Cg8oIul4fU3&UJ!h0i(w;}QtlHO2>-+Pco=Ek(tbqU>|mmD&TMWA8oWd*1V& zx4rFcU;p~oF6T^TG=+&;*(%0+&Y|My|dKWa)2} zS33N4$yf}vTpP8c#trAj;oJ+_$T^OZo{z8hj zCgoiEI-~XPfU@68u<}F|s4AL_10v`H6@$E1)ewPExMnda#0l&Lu0+Z;g2>_QML9(U zQUh|qEiyh@d4a;G4>*Kw@fLaP_^GiJrSFCk2ce{8R9GQsaLkh8QUGKLh=_pZhtVO!WQl3KIwvrB@hBcS)d$s1WvZ zs(xJFl)3Iu?S&zS;$|ean&Apt)fCw-GdBH1>I>(Z*;y+%snoiByknd#W|z@d1^P-f zduo$6+0rp0_y&=C=X|96L>42wh>$dH+5D<6E~4gm-6~JBax=brBsbK!K5sElQle*6hD_w zxB-_#vHF??w0HUre=CfsS*5B1khAPPSKh=8)@c^CT2_49SHm^-31Rg&J1g%I$FK{^ z+&dmDm2C@}tiFRZLkrktLQ0*jTe9#2R&IHz$*av$mz15QBav5M4L&CG*6Z)~4b8{@ zuJ@#FRogD>^{Wp+T%(|Gn0NZTw@UFpirl(6A&%CZnOT8ZTb7nLPRkpOrK1R>wt9O6 z<)YsOezzTQew>!y{_Wp>)0^JpBS`OoR~`Di^6I+~V2@;m+FH*{?GAv>{|{tVrkkb> R#wh>*002ovPDHLkV1kC15n})V diff --git a/examples/notebooks/pixi.toml b/examples/notebooks/pixi.toml deleted file mode 100644 index cf658ff6cf..0000000000 --- a/examples/notebooks/pixi.toml +++ /dev/null @@ -1,13 +0,0 @@ -[project] -name = "Mojo notebooks" -version = "1.0.0" -description = "Environment for running JupyterLab" -authors = ["Modular "] -channels = ["conda-forge", "https://conda.modular.com/max-nightly/"] -platforms = ["osx-arm64", "linux-aarch64", "linux-64"] - -[dependencies] -python = ">=3.9,<3.13" -max = "*" -pip = ">=24.0,<25" -jupyterlab = ">=4.2.5,<5" From 02f49f261a233aec484b4c1448726f3c5ddafdc9 Mon Sep 17 00:00:00 2001 From: abdul dakkak Date: Fri, 31 Jan 2025 09:51:06 -0800 Subject: [PATCH 328/509] [Stdlib] Moves the env_get_dtype for internal utils to sys module MODULAR_ORIG_COMMIT_REV_ID: 661e1b25f33085614924b17be8fbb85a211bb1c9 --- docs/changelog.md | 3 +++ stdlib/src/sys/__init__.mojo | 8 +++++++- stdlib/src/sys/param_env.mojo | 19 +++++++++++++++++++ 3 files changed, 29 insertions(+), 1 deletion(-) diff --git a/docs/changelog.md b/docs/changelog.md index d7ef52f96f..bfc8714e05 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -386,6 +386,9 @@ what we publish. generator, and in the symbol outline and hover markdown via the Mojo Language Server. +- The `env_get_dtype` function has been added to the `sys` module. This allows + you to get the value of a `DType` from the param environment. + ### ❌ Removed - `StringRef` is being deprecated. Use `StringSlice` instead. diff --git a/stdlib/src/sys/__init__.mojo b/stdlib/src/sys/__init__.mojo index 5c9fbd6fb1..0f0e7e55ed 100644 --- a/stdlib/src/sys/__init__.mojo +++ b/stdlib/src/sys/__init__.mojo @@ -70,5 +70,11 @@ from .intrinsics import ( strided_load, strided_store, ) -from .param_env import env_get_bool, env_get_int, env_get_string, is_defined +from .param_env import ( + env_get_bool, + env_get_int, + env_get_string, + env_get_dtype, + is_defined, +) from .terminate import exit diff --git a/stdlib/src/sys/param_env.mojo b/stdlib/src/sys/param_env.mojo index ea70902070..c24a38d274 100644 --- a/stdlib/src/sys/param_env.mojo +++ b/stdlib/src/sys/param_env.mojo @@ -196,3 +196,22 @@ fn env_get_string[ return env_get_string[name]() else: return default + + +fn env_get_dtype[name: StringLiteral, default: DType]() -> DType: + """Try to get an DType-valued define. If the name is not defined, return + a default value instead. + + Parameters: + name: The name of the define. + default: The default value to use. + + Returns: + An DType parameter value. + """ + + @parameter + if is_defined[name](): + return DType._from_str(env_get_string[name]()) + else: + return default From 20b8fd04e7781bcd739ade0b90d28cc0b1dd8b32 Mon Sep 17 00:00:00 2001 From: Lukas Hermann <1734032+lsh@users.noreply.github.com> Date: Fri, 31 Jan 2025 12:27:05 -0800 Subject: [PATCH 329/509] [stdlib] Remove StringRef from more methods Continuing to replace `StringRef` with `StringSlice`. Note that a `StaticString` is morally & ABI equivalent to a `StringRef`. MODULAR_ORIG_COMMIT_REV_ID: fabf361ae33251a78dfe548f4ad518e8e7317251 --- stdlib/src/builtin/file.mojo | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/stdlib/src/builtin/file.mojo b/stdlib/src/builtin/file.mojo index 94f1724e3a..27ea5906ed 100644 --- a/stdlib/src/builtin/file.mojo +++ b/stdlib/src/builtin/file.mojo @@ -37,7 +37,7 @@ from sys.ffi import OpaquePointer from memory import AddressSpace, UnsafePointer, Span -from utils import StringRef, StringSlice, write_buffered +from utils import StringSlice, write_buffered @register_passable From 61c89c6f45af6b376936019ed3302e85e5386062 Mon Sep 17 00:00:00 2001 From: Lukas Hermann <1734032+lsh@users.noreply.github.com> Date: Fri, 31 Jan 2025 13:49:28 -0800 Subject: [PATCH 330/509] [stdlib] Remove `StringRef` in favor of `StringSlice` `StringRef` is at this point just a `StringSlice` without an `Origin`. Since we can use `StaticConstantOrigin` for the cases where `StringRef` was previously used, it is time to retire that type. MODULAR_ORIG_COMMIT_REV_ID: e1d29eb406764186101b0b91d34a5cb2d136745a --- docs/changelog.md | 5 + stdlib/benchmarks/utils/bench_formatter.mojo | 2 +- stdlib/benchmarks/utils/bench_memmem.mojo | 2 +- .../src/collections/string/string_slice.mojo | 294 ++++--- stdlib/src/utils/__init__.mojo | 1 - stdlib/src/utils/stringref.mojo | 759 ------------------ stdlib/test/utils/test_stringref.mojo | 215 ----- 7 files changed, 184 insertions(+), 1094 deletions(-) delete mode 100644 stdlib/src/utils/stringref.mojo delete mode 100644 stdlib/test/utils/test_stringref.mojo diff --git a/docs/changelog.md b/docs/changelog.md index bfc8714e05..472a8059c2 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -100,6 +100,11 @@ what we publish. ### Standard library changes +- `StringRef` has been removed in favor of `StringSlice`. + The two types are ABI compatible, and for the exact same + behavior one can use `StaticString`, which is an alias + to `StringSlice[StaticConstantOrigin]`. + - Add a new `validate` parameter to the `b64decode()` function. - The free floating functions for constructing different types have been diff --git a/stdlib/benchmarks/utils/bench_formatter.mojo b/stdlib/benchmarks/utils/bench_formatter.mojo index 6d67e9cd9b..e84a58b562 100644 --- a/stdlib/benchmarks/utils/bench_formatter.mojo +++ b/stdlib/benchmarks/utils/bench_formatter.mojo @@ -20,7 +20,7 @@ from benchmark import Bench, BenchConfig, Bencher, BenchId, Unit, keep, run from bit import count_trailing_zeros from builtin.dtype import _uint_type_of_width -from utils.stringref import _align_down, _memchr, _memmem +from collections.string.string_slice import _memchr, _memmem # ===-----------------------------------------------------------------------===# # Benchmark Data diff --git a/stdlib/benchmarks/utils/bench_memmem.mojo b/stdlib/benchmarks/utils/bench_memmem.mojo index 1f3f5118d2..4167011cf4 100644 --- a/stdlib/benchmarks/utils/bench_memmem.mojo +++ b/stdlib/benchmarks/utils/bench_memmem.mojo @@ -21,7 +21,7 @@ from bit import count_trailing_zeros from builtin.dtype import _uint_type_of_width from memory import UnsafePointer, bitcast, memcmp, pack_bits -from utils.stringref import _align_down, _memchr, _memmem +from collections.string.string_slice import _align_down, _memchr, _memmem # ===-----------------------------------------------------------------------===# # Benchmark Data diff --git a/stdlib/src/collections/string/string_slice.mojo b/stdlib/src/collections/string/string_slice.mojo index f2ae7cd174..820c262621 100644 --- a/stdlib/src/collections/string/string_slice.mojo +++ b/stdlib/src/collections/string/string_slice.mojo @@ -21,16 +21,15 @@ from collections.string import StringSlice ``` """ -from bit import count_leading_zeros +from bit import count_leading_zeros, count_trailing_zeros from collections import List, Optional from collections.string.format import _CurlyEntryFormattable, _FormatCurlyEntry from collections.string._utf8_validation import _is_valid_utf8 -from memory import UnsafePointer, memcmp, memcpy, Span +from memory import UnsafePointer, memcmp, memcpy, Span, pack_bits from memory.memory import _memcmp_impl_unconstrained from sys import bitwidthof, simdwidthof from sys.intrinsics import unlikely, likely from sys.ffi import c_char -from utils.stringref import StringRef, _memmem from hashlib._hasher import _HashableWithHasher, _Hasher from os import PathLike @@ -38,98 +37,6 @@ alias StaticString = StringSlice[StaticConstantOrigin] """An immutable static string slice.""" -fn _count_utf8_continuation_bytes(str_slice: StringSlice) -> Int: - alias sizes = (256, 128, 64, 32, 16, 8) - var ptr = str_slice.unsafe_ptr() - var num_bytes = str_slice.byte_length() - var amnt: Int = 0 - var processed = 0 - - @parameter - for i in range(len(sizes)): - alias s = sizes[i] - - @parameter - if simdwidthof[DType.uint8]() >= s: - var rest = num_bytes - processed - for _ in range(rest // s): - var vec = (ptr + processed).load[width=s]() - var comp = (vec & 0b1100_0000) == 0b1000_0000 - amnt += Int(comp.cast[DType.uint8]().reduce_add()) - processed += s - - for i in range(num_bytes - processed): - amnt += Int((ptr[processed + i] & 0b1100_0000) == 0b1000_0000) - - return amnt - - -@always_inline -fn _utf8_first_byte_sequence_length(b: Byte) -> Int: - """Get the length of the sequence starting with given byte. Do note that - this does not work correctly if given a continuation byte.""" - - debug_assert( - (b & 0b1100_0000) != 0b1000_0000, - "Function does not work correctly if given a continuation byte.", - ) - return Int(count_leading_zeros(~b)) + Int(b < 0b1000_0000) - - -fn _utf8_byte_type(b: SIMD[DType.uint8, _], /) -> __type_of(b): - """UTF-8 byte type. - - Returns: - The byte type. - - Notes: - - - 0 -> ASCII byte. - - 1 -> continuation byte. - - 2 -> start of 2 byte long sequence. - - 3 -> start of 3 byte long sequence. - - 4 -> start of 4 byte long sequence. - """ - return count_leading_zeros(~(b & UInt8(0b1111_0000))) - - -@always_inline -fn _memrchr[ - type: DType -]( - source: UnsafePointer[Scalar[type]], char: Scalar[type], len: Int -) -> UnsafePointer[Scalar[type]]: - if not len: - return UnsafePointer[Scalar[type]]() - for i in reversed(range(len)): - if source[i] == char: - return source + i - return UnsafePointer[Scalar[type]]() - - -@always_inline -fn _memrmem[ - type: DType -]( - haystack: UnsafePointer[Scalar[type]], - haystack_len: Int, - needle: UnsafePointer[Scalar[type]], - needle_len: Int, -) -> UnsafePointer[Scalar[type]]: - if not needle_len: - return haystack - if needle_len > haystack_len: - return UnsafePointer[Scalar[type]]() - if needle_len == 1: - return _memrchr[type](haystack, needle[0], haystack_len) - for i in reversed(range(haystack_len - needle_len + 1)): - if haystack[i] != needle[0]: - continue - if memcmp(haystack + i + 1, needle + 1, needle_len - 1) == 0: - return haystack + i - return UnsafePointer[Scalar[type]]() - - @value struct _StringSliceIter[ mut: Bool, //, @@ -403,28 +310,6 @@ struct StringSlice[mut: Bool, //, origin: Origin[mut]]( # ) self._slice = unsafe_from_utf8 - fn __init__(out self, *, unsafe_from_utf8_strref: StringRef): - """Construct a new StringSlice from a `StringRef` pointing to UTF-8 - encoded bytes. - - Args: - unsafe_from_utf8_strref: A `StringRef` of bytes encoded in UTF-8. - - Safety: - - `unsafe_from_utf8_strref` MUST point to data that is valid for - `origin`. - - `unsafe_from_utf8_strref` MUST be valid UTF-8 encoded data. - """ - - var strref = unsafe_from_utf8_strref - - var byte_slice = Span[Byte, origin]( - ptr=strref.unsafe_ptr(), - length=len(strref), - ) - - self = Self(unsafe_from_utf8=byte_slice) - fn __init__(out self, *, unsafe_from_utf8_ptr: UnsafePointer[Byte]): """Construct a new StringSlice from a `UnsafePointer[Byte]` pointing to null-terminated UTF-8 encoded bytes. @@ -1654,3 +1539,178 @@ fn _unsafe_strlen(owned ptr: UnsafePointer[Byte]) -> Int: while ptr.load(len): len += 1 return len + + +@always_inline +fn _align_down(value: Int, alignment: Int) -> Int: + return value._positive_div(alignment) * alignment + + +@always_inline +fn _memchr[ + type: DType +]( + source: UnsafePointer[Scalar[type]], char: Scalar[type], len: Int +) -> UnsafePointer[Scalar[type]]: + if not len: + return UnsafePointer[Scalar[type]]() + alias bool_mask_width = simdwidthof[DType.bool]() + var first_needle = SIMD[type, bool_mask_width](char) + var vectorized_end = _align_down(len, bool_mask_width) + + for i in range(0, vectorized_end, bool_mask_width): + var bool_mask = source.load[width=bool_mask_width](i) == first_needle + var mask = pack_bits(bool_mask) + if mask: + return source + Int(i + count_trailing_zeros(mask)) + + for i in range(vectorized_end, len): + if source[i] == char: + return source + i + return UnsafePointer[Scalar[type]]() + + +@always_inline +fn _memmem[ + type: DType +]( + haystack: UnsafePointer[Scalar[type]], + haystack_len: Int, + needle: UnsafePointer[Scalar[type]], + needle_len: Int, +) -> UnsafePointer[Scalar[type]]: + if not needle_len: + return haystack + if needle_len > haystack_len: + return UnsafePointer[Scalar[type]]() + if needle_len == 1: + return _memchr[type](haystack, needle[0], haystack_len) + + alias bool_mask_width = simdwidthof[DType.bool]() + var vectorized_end = _align_down( + haystack_len - needle_len + 1, bool_mask_width + ) + + var first_needle = SIMD[type, bool_mask_width](needle[0]) + var last_needle = SIMD[type, bool_mask_width](needle[needle_len - 1]) + + for i in range(0, vectorized_end, bool_mask_width): + var first_block = haystack.load[width=bool_mask_width](i) + var last_block = haystack.load[width=bool_mask_width]( + i + needle_len - 1 + ) + + var eq_first = first_needle == first_block + var eq_last = last_needle == last_block + + var bool_mask = eq_first & eq_last + var mask = pack_bits(bool_mask) + + while mask: + var offset = Int(i + count_trailing_zeros(mask)) + if memcmp(haystack + offset + 1, needle + 1, needle_len - 1) == 0: + return haystack + offset + mask = mask & (mask - 1) + + # remaining partial block compare using byte-by-byte + # + for i in range(vectorized_end, haystack_len - needle_len + 1): + if haystack[i] != needle[0]: + continue + + if memcmp(haystack + i + 1, needle + 1, needle_len - 1) == 0: + return haystack + i + + return UnsafePointer[Scalar[type]]() + + +fn _count_utf8_continuation_bytes(str_slice: StringSlice) -> Int: + alias sizes = (256, 128, 64, 32, 16, 8) + var ptr = str_slice.unsafe_ptr() + var num_bytes = str_slice.byte_length() + var amnt: Int = 0 + var processed = 0 + + @parameter + for i in range(len(sizes)): + alias s = sizes[i] + + @parameter + if simdwidthof[DType.uint8]() >= s: + var rest = num_bytes - processed + for _ in range(rest // s): + var vec = (ptr + processed).load[width=s]() + var comp = (vec & 0b1100_0000) == 0b1000_0000 + amnt += Int(comp.cast[DType.uint8]().reduce_add()) + processed += s + + for i in range(num_bytes - processed): + amnt += Int((ptr[processed + i] & 0b1100_0000) == 0b1000_0000) + + return amnt + + +@always_inline +fn _utf8_first_byte_sequence_length(b: Byte) -> Int: + """Get the length of the sequence starting with given byte. Do note that + this does not work correctly if given a continuation byte.""" + + debug_assert( + (b & 0b1100_0000) != 0b1000_0000, + "Function does not work correctly if given a continuation byte.", + ) + return Int(count_leading_zeros(~b)) + Int(b < 0b1000_0000) + + +fn _utf8_byte_type(b: SIMD[DType.uint8, _], /) -> __type_of(b): + """UTF-8 byte type. + + Returns: + The byte type. + + Notes: + + - 0 -> ASCII byte. + - 1 -> continuation byte. + - 2 -> start of 2 byte long sequence. + - 3 -> start of 3 byte long sequence. + - 4 -> start of 4 byte long sequence. + """ + return count_leading_zeros(~(b & UInt8(0b1111_0000))) + + +@always_inline +fn _memrchr[ + type: DType +]( + source: UnsafePointer[Scalar[type]], char: Scalar[type], len: Int +) -> UnsafePointer[Scalar[type]]: + if not len: + return UnsafePointer[Scalar[type]]() + for i in reversed(range(len)): + if source[i] == char: + return source + i + return UnsafePointer[Scalar[type]]() + + +@always_inline +fn _memrmem[ + type: DType +]( + haystack: UnsafePointer[Scalar[type]], + haystack_len: Int, + needle: UnsafePointer[Scalar[type]], + needle_len: Int, +) -> UnsafePointer[Scalar[type]]: + if not needle_len: + return haystack + if needle_len > haystack_len: + return UnsafePointer[Scalar[type]]() + if needle_len == 1: + return _memrchr[type](haystack, needle[0], haystack_len) + for i in reversed(range(haystack_len - needle_len + 1)): + if haystack[i] != needle[0]: + continue + if memcmp(haystack + i + 1, needle + 1, needle_len - 1) == 0: + return haystack + i + return UnsafePointer[Scalar[type]]() diff --git a/stdlib/src/utils/__init__.mojo b/stdlib/src/utils/__init__.mojo index 2521ef4b8d..87133a3238 100644 --- a/stdlib/src/utils/__init__.mojo +++ b/stdlib/src/utils/__init__.mojo @@ -18,6 +18,5 @@ from .lock import BlockingScopedLock, BlockingSpinLock, SpinWaiter from .loop import unroll from .static_tuple import StaticTuple from collections.string.string_slice import StaticString, StringSlice -from .stringref import StringRef from .variant import Variant from .write import Writable, Writer, write_args, write_buffered diff --git a/stdlib/src/utils/stringref.mojo b/stdlib/src/utils/stringref.mojo deleted file mode 100644 index 295dd70c9a..0000000000 --- a/stdlib/src/utils/stringref.mojo +++ /dev/null @@ -1,759 +0,0 @@ -# ===----------------------------------------------------------------------=== # -# Copyright (c) 2025, Modular Inc. All rights reserved. -# -# Licensed under the Apache License v2.0 with LLVM Exceptions: -# https://llvm.org/LICENSE.txt -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# ===----------------------------------------------------------------------=== # -"""Implements the StringRef class. -""" - -from collections.string import StringSlice -from hashlib._hasher import _HashableWithHasher, _Hasher -from sys import simdwidthof -from sys.ffi import c_char - -from bit import count_trailing_zeros -from builtin.dtype import _uint_type_of_width -from memory import UnsafePointer, memcmp, pack_bits, Span, memcpy -from memory.memory import _memcmp_impl_unconstrained - - -# ===----------------------------------------------------------------------=== # -# Utilities -# ===----------------------------------------------------------------------=== # - - -@always_inline -fn _align_down(value: Int, alignment: Int) -> Int: - return value._positive_div(alignment) * alignment - - -# ===-----------------------------------------------------------------------===# -# StringRef -# ===-----------------------------------------------------------------------===# - - -@value -@register_passable("trivial") -struct StringRef( - AsBytes, - Boolable, - CollectionElement, - CollectionElementNew, - Comparable, - Hashable, - IntableRaising, - Representable, - Sized, - Stringable, - Writable, - _HashableWithHasher, -): - """ - Represent a constant reference to a string, i.e. a sequence of characters - and a length, which need not be null terminated. - """ - - # Fields - var data: UnsafePointer[UInt8] - """A pointer to the beginning of the string data being referenced.""" - var length: Int - """The length of the string being referenced.""" - - # ===-------------------------------------------------------------------===# - # Life cycle methods - # ===-------------------------------------------------------------------===# - - @always_inline - fn __init__(out self): - """Construct a StringRef value with length zero.""" - self = StringRef(UnsafePointer[UInt8](), 0) - - @always_inline - fn copy(self) -> Self: - """Copy the object. - - Returns: - A copy of the value. - """ - return StringRef(self.data, self.length) - - @always_inline - @implicit - fn __init__(out self, str: StringLiteral): - """Construct a StringRef value given a constant string. - - Args: - str: The input constant string. - """ - self = StringRef(str.unsafe_ptr(), len(str)) - - @always_inline - fn __init__(out self, ptr: UnsafePointer[c_char], len: Int): - """Construct a StringRef value given a (potentially non-0 terminated - string). - - The constructor takes a raw pointer and a length. - - Note that you should use the constructor from `UnsafePointer[UInt8]` instead - as we are now storing the bytes as UInt8. - See https://github.com/modularml/mojo/issues/2317 for more information. - - Args: - ptr: UnsafePointer to the string. - len: The length of the string. - """ - - self.data = ptr.bitcast[UInt8]() - self.length = len - - @always_inline - fn __init__(out self, *, ptr: UnsafePointer[UInt8]): - """Construct a StringRef value given a null-terminated string. - - Args: - ptr: UnsafePointer to the string. - """ - - var len = 0 - while ptr.load(len): - len += 1 - - self = StringRef(ptr, len) - - @always_inline - @implicit - fn __init__(out self, ptr: UnsafePointer[c_char]): - """Construct a StringRef value given a null-terminated string. - - Note that you should use the constructor from `UnsafePointer[UInt8]` instead - as we are now storing the bytes as UInt8. - See https://github.com/modularml/mojo/issues/2317 for more information. - - Args: - ptr: UnsafePointer to the string. - """ - - var len = 0 - while ptr.load(len): - len += 1 - - self = StringRef(ptr, len) - - # ===-------------------------------------------------------------------===# - # Helper methods for slicing - # ===-------------------------------------------------------------------===# - # TODO: Move to slice syntax like str_ref[:42] - - fn take_front(self, num_bytes: Int = 1) -> Self: - """Return a StringRef equal to 'self' but with only the first - `num_bytes` elements remaining. If `num_bytes` is greater than the - length of the string, the entire string is returned. - - Args: - num_bytes: The number of bytes to include. - - Returns: - A new slice that starts with those bytes. - """ - debug_assert(num_bytes >= 0, "num_bytes must be non-negative") - if num_bytes >= self.length: - return self - return Self(self.data, num_bytes) - - fn take_back(self, num_bytes: Int = 1) -> Self: - """Return a StringRef equal to 'self' but with only the last - `num_bytes` elements remaining. If `num_bytes` is greater than the - length of the string, the entire string is returned. - - Args: - num_bytes: The number of bytes to include. - - Returns: - A new slice that ends with those bytes. - """ - debug_assert(num_bytes >= 0, "num_bytes must be non-negative") - if num_bytes >= self.length: - return self - return Self(self.data + (self.length - num_bytes), num_bytes) - - fn drop_front(self, num_bytes: Int = 1) -> Self: - """Return a StringRef equal to 'self' but with the first - `num_bytes` elements skipped. If `num_bytes` is greater than the - length of the string, an empty StringRef is returned. - - Args: - num_bytes: The number of bytes to drop. - - Returns: - A new slice with those bytes skipped. - """ - debug_assert(num_bytes >= 0, "num_bytes must be non-negative") - if num_bytes >= self.length: - return StringRef() - return Self(self.data + num_bytes, self.length - num_bytes) - - fn drop_back(self, num_bytes: Int = 1) -> Self: - """Return a StringRef equal to 'self' but with the last `num_bytes` - elements skipped. If `num_bytes` is greater than the - length of the string, the entire string is returned. - - Args: - num_bytes: The number of bytes to include. - - Returns: - A new slice ends earlier than those bytes. - """ - debug_assert(num_bytes >= 0, "num_bytes must be non-negative") - if num_bytes >= self.length: - return StringRef() - return Self(self.data, self.length - num_bytes) - - fn as_bytes(ref self) -> Span[Byte, __origin_of(self)]: - """Returns a contiguous Span of the bytes owned by this string. - - Returns: - A contiguous slice pointing to the bytes owned by this string. - """ - return Span[Byte, __origin_of(self)](ptr=self.data, length=self.length) - - # ===-------------------------------------------------------------------===# - # Operator dunders - # ===-------------------------------------------------------------------===# - - @always_inline("nodebug") - fn __getitem__[I: Indexer](self, idx: I) -> StringRef: - """Get the string value at the specified position. - - Args: - idx: The index position. - - Parameters: - I: A type that can be used as an index. - - Returns: - The character at the specified position. - """ - return StringRef {data: self.data + Int(idx), length: 1} - - @always_inline - fn __eq__(self, rhs: StringRef) -> Bool: - """Compares two strings are equal. - - Args: - rhs: The other string. - - Returns: - True if the strings match and False otherwise. - """ - return not (self != rhs) - - fn __contains__(self, substr: StringRef) -> Bool: - """Returns True if the substring is contained within the current string. - - Args: - substr: The substring to check. - - Returns: - True if the string contains the substring. - """ - return self.find(substr) != -1 - - @always_inline - fn __ne__(self, rhs: StringRef) -> Bool: - """Compares two strings are not equal. - - Args: - rhs: The other string. - - Returns: - True if the strings do not match and False otherwise. - """ - return len(self) != len(rhs) or _memcmp_impl_unconstrained( - self.data, rhs.data, len(self) - ) - - @always_inline - fn __lt__(self, rhs: StringRef) -> Bool: - """Compare this StringRef to the RHS using LT comparison. - - Args: - rhs: The other StringRef to compare against. - - Returns: - True if this string is strictly less than the RHS string and False - otherwise. - """ - var len1 = len(self) - var len2 = len(rhs) - return Int(len1 < len2) > _memcmp_impl_unconstrained( - self.data, rhs.data, min(len1, len2) - ) - - @always_inline - fn __le__(self, rhs: StringRef) -> Bool: - """Compare this StringRef to the RHS using LE comparison. - - Args: - rhs: The other StringRef to compare against. - - Returns: - True if this string is less than or equal to the RHS string and - False otherwise. - """ - return not (rhs < self) - - @always_inline - fn __gt__(self, rhs: StringRef) -> Bool: - """Compare this StringRef to the RHS using GT comparison. - - Args: - rhs: The other StringRef to compare against. - - Returns: - True if this string is strictly greater than the RHS string and - False otherwise. - """ - return rhs < self - - @always_inline - fn __ge__(self, rhs: StringRef) -> Bool: - """Compare this StringRef to the RHS using GE comparison. - - Args: - rhs: The other StringRef to compare against. - - Returns: - True if this string is greater than or equal to the RHS string and - False otherwise. - """ - return not (self < rhs) - - # ===-------------------------------------------------------------------===# - # Trait implementations - # ===-------------------------------------------------------------------===# - - @always_inline - fn __bool__(self) -> Bool: - """Checks if the string is empty or not. - - Returns: - Returns True if the string is not empty and False otherwise. - """ - return len(self) != 0 - - fn __hash__(self) -> UInt: - """Hash the underlying buffer using builtin hash. - - Returns: - A 64-bit hash value. This value is _not_ suitable for cryptographic - uses. Its intended usage is for data structures. See the `hash` - builtin documentation for more details. - """ - return hash(self.data, self.length) - - fn __hash__[H: _Hasher](self, mut hasher: H): - """Updates hasher with the underlying bytes. - - Parameters: - H: The hasher type. - - Args: - hasher: The hasher instance. - """ - hasher._update_with_bytes(self.data, self.length) - - fn __int__(self) raises -> Int: - """Parses the given string as a base-10 integer and returns that value. - - For example, `Int("19")` returns `19`. If the given string cannot be parsed - as an integer value, an error is raised. For example, `Int("hi")` raises an - error. - - Returns: - An integer value that represents the string, or otherwise raises. - """ - var str_slice = StringSlice[ImmutableAnyOrigin]( - unsafe_from_utf8_strref=self - ) - return atol(str_slice) - - @always_inline - fn __len__(self) -> Int: - """Returns the length of the string. - - Returns: - The length of the string. - """ - return self.length - - @no_inline - fn __str__(self) -> String: - """Convert the string reference to a string. - - Returns: - A new string. - """ - var length = len(self) - var buffer = String._buffer_type() - # +1 for null terminator, initialized to 0 - buffer.resize(length + 1, 0) - memcpy(dest=buffer.data, src=self.data, count=length) - return String(buffer^) - - @no_inline - fn __repr__(self) -> String: - """Convert the string reference to a string. - - Returns: - The String representation of the StringRef. - """ - return String("StringRef(", repr(String(self)), ")") - - @no_inline - fn write_to[W: Writer](self, mut writer: W): - """ - Formats this StringRef to the provided Writer. - - Parameters: - W: A type conforming to the Writable trait. - - Args: - writer: The object to write to. - """ - # SAFETY: - # Safe because our use of this Span does not outlive `self`. - writer.write_bytes( - Span[Byte, ImmutableAnyOrigin]( - ptr=self.unsafe_ptr(), length=len(self) - ) - ) - - fn __fspath__(self) -> String: - """Return the file system path representation of the object. - - Returns: - The file system path representation as a string. - """ - return self.__str__() - - # ===-------------------------------------------------------------------===# - # Methods - # ===-------------------------------------------------------------------===# - - @always_inline - fn unsafe_ptr(self) -> UnsafePointer[UInt8]: - """Retrieves a pointer to the underlying memory. - - Returns: - The pointer to the underlying memory. - """ - return self.data - - @always_inline - fn empty(self) -> Bool: - """Returns True if the StringRef has length = 0. - - Returns: - Whether the stringref is empty. - """ - return self.length == 0 - - fn count(self, substr: StringRef) -> Int: - """Return the number of non-overlapping occurrences of substring - `substr` in the string. - - If sub is empty, returns the number of empty strings between characters - which is the length of the string plus one. - - Args: - substr: The substring to count. - - Returns: - The number of occurrences of `substr`. - """ - if not substr: - return len(self) + 1 - - var res = 0 - var offset = 0 - - while True: - var pos = self.find(substr, offset) - if pos == -1: - break - res += 1 - - offset = pos + len(substr) - - return res - - # TODO: remove this method later on when nothing depends on it anymore. - # It has already been copied to `StringSlice`. - fn find(self, substr: StringRef, start: Int = 0) -> Int: - """Finds the offset of the first occurrence of `substr` starting at - `start`. If not found, returns -1. - - Args: - substr: The substring to find. - start: The offset from which to find. - - Returns: - The offset of `substr` relative to the beginning of the string. - """ - if not substr: - return 0 - - if len(self) < len(substr) + start: - return -1 - - # The substring to search within, offset from the beginning if `start` - # is positive, and offset from the end if `start` is negative. - var haystack_str = self._from_start(start) - - var loc = _memmem( - haystack_str.unsafe_ptr(), - len(haystack_str), - substr.unsafe_ptr(), - len(substr), - ) - - if not loc: - return -1 - - return Int(loc) - Int(self.unsafe_ptr()) - - fn rfind(self, substr: StringRef, start: Int = 0) -> Int: - """Finds the offset of the last occurrence of `substr` starting at - `start`. If not found, returns -1. - - Args: - substr: The substring to find. - start: The offset from which to find. - - Returns: - The offset of `substr` relative to the beginning of the string. - """ - if not substr: - return len(self) - - if len(self) < len(substr) + start: - return -1 - - # The substring to search within, offset from the beginning if `start` - # is positive, and offset from the end if `start` is negative. - var haystack_str = self._from_start(start) - - var loc = _memrmem( - haystack_str.unsafe_ptr(), - len(haystack_str), - substr.unsafe_ptr(), - len(substr), - ) - - if not loc: - return -1 - - return Int(loc) - Int(self.unsafe_ptr()) - - fn _from_start(self, start: Int) -> StringRef: - """Gets the StringRef pointing to the substring after the specified slice start position. - - If start is negative, it is interpreted as the number of characters - from the end of the string to start at. - - Args: - start: Starting index of the slice. - - Returns: - A StringRef borrowed from the current string containing the - characters of the slice starting at start. - """ - - var self_len = len(self) - - var abs_start: Int - if start < 0: - # Avoid out of bounds earlier than the start - # len = 5, start = -3, then abs_start == 2, i.e. a partial string - # len = 5, start = -10, then abs_start == 0, i.e. the full string - abs_start = max(self_len + start, 0) - else: - # Avoid out of bounds past the end - # len = 5, start = 2, then abs_start == 2, i.e. a partial string - # len = 5, start = 8, then abs_start == 5, i.e. an empty string - abs_start = min(start, self_len) - - debug_assert( - abs_start >= 0, "strref absolute start must be non-negative" - ) - debug_assert( - abs_start <= self_len, - "strref absolute start must be less than source String len", - ) - - var data = self.data + abs_start - var length = self_len - abs_start - - return StringRef(data, length) - - fn split(self, delimiter: StringRef) raises -> List[StringRef]: - """Split the StringRef by a delimiter. - - Args: - delimiter: The StringRef to split on. - - Returns: - A List of StringRefs containing the input split by the delimiter. - - Raises: - Error if an empty delimiter is specified. - """ - if not delimiter: - raise Error("empty delimiter not allowed to be passed to split.") - - var output = List[StringRef]() - var ptr = self.unsafe_ptr() - - var current_offset = 0 - while True: - var loc = self.find(delimiter, current_offset) - # delimiter not found, so add the search slice from where we're currently at - if loc == -1: - output.append( - StringRef(ptr + current_offset, len(self) - current_offset) - ) - break - - # We found a delimiter, so add the preceding string slice - output.append(StringRef(ptr + current_offset, loc - current_offset)) - - # Advance our search offset past the delimiter - current_offset = loc + len(delimiter) - return output - - -# ===-----------------------------------------------------------------------===# -# Utilities -# ===-----------------------------------------------------------------------===# - - -@always_inline -fn _memchr[ - type: DType -]( - source: UnsafePointer[Scalar[type]], char: Scalar[type], len: Int -) -> UnsafePointer[Scalar[type]]: - if not len: - return UnsafePointer[Scalar[type]]() - alias bool_mask_width = simdwidthof[DType.bool]() - var first_needle = SIMD[type, bool_mask_width](char) - var vectorized_end = _align_down(len, bool_mask_width) - - for i in range(0, vectorized_end, bool_mask_width): - var bool_mask = source.load[width=bool_mask_width](i) == first_needle - var mask = pack_bits(bool_mask) - if mask: - return source + Int(i + count_trailing_zeros(mask)) - - for i in range(vectorized_end, len): - if source[i] == char: - return source + i - return UnsafePointer[Scalar[type]]() - - -@always_inline -fn _memmem[ - type: DType -]( - haystack: UnsafePointer[Scalar[type]], - haystack_len: Int, - needle: UnsafePointer[Scalar[type]], - needle_len: Int, -) -> UnsafePointer[Scalar[type]]: - if not needle_len: - return haystack - if needle_len > haystack_len: - return UnsafePointer[Scalar[type]]() - if needle_len == 1: - return _memchr[type](haystack, needle[0], haystack_len) - - alias bool_mask_width = simdwidthof[DType.bool]() - var vectorized_end = _align_down( - haystack_len - needle_len + 1, bool_mask_width - ) - - var first_needle = SIMD[type, bool_mask_width](needle[0]) - var last_needle = SIMD[type, bool_mask_width](needle[needle_len - 1]) - - for i in range(0, vectorized_end, bool_mask_width): - var first_block = haystack.load[width=bool_mask_width](i) - var last_block = haystack.load[width=bool_mask_width]( - i + needle_len - 1 - ) - - var eq_first = first_needle == first_block - var eq_last = last_needle == last_block - - var bool_mask = eq_first & eq_last - var mask = pack_bits(bool_mask) - - while mask: - var offset = Int(i + count_trailing_zeros(mask)) - if memcmp(haystack + offset + 1, needle + 1, needle_len - 1) == 0: - return haystack + offset - mask = mask & (mask - 1) - - # remaining partial block compare using byte-by-byte - # - for i in range(vectorized_end, haystack_len - needle_len + 1): - if haystack[i] != needle[0]: - continue - - if memcmp(haystack + i + 1, needle + 1, needle_len - 1) == 0: - return haystack + i - - return UnsafePointer[Scalar[type]]() - - -@always_inline -fn _memrchr[ - type: DType -]( - source: UnsafePointer[Scalar[type]], char: Scalar[type], len: Int -) -> UnsafePointer[Scalar[type]]: - if not len: - return UnsafePointer[Scalar[type]]() - for i in reversed(range(len)): - if source[i] == char: - return source + i - return UnsafePointer[Scalar[type]]() - - -@always_inline -fn _memrmem[ - type: DType -]( - haystack: UnsafePointer[Scalar[type]], - haystack_len: Int, - needle: UnsafePointer[Scalar[type]], - needle_len: Int, -) -> UnsafePointer[Scalar[type]]: - if not needle_len: - return haystack - if needle_len > haystack_len: - return UnsafePointer[Scalar[type]]() - if needle_len == 1: - return _memrchr[type](haystack, needle[0], haystack_len) - for i in reversed(range(haystack_len - needle_len + 1)): - if haystack[i] != needle[0]: - continue - if memcmp(haystack + i + 1, needle + 1, needle_len - 1) == 0: - return haystack + i - return UnsafePointer[Scalar[type]]() diff --git a/stdlib/test/utils/test_stringref.mojo b/stdlib/test/utils/test_stringref.mojo deleted file mode 100644 index a0950cf990..0000000000 --- a/stdlib/test/utils/test_stringref.mojo +++ /dev/null @@ -1,215 +0,0 @@ -# ===----------------------------------------------------------------------=== # -# Copyright (c) 2025, Modular Inc. All rights reserved. -# -# Licensed under the Apache License v2.0 with LLVM Exceptions: -# https://llvm.org/LICENSE.txt -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# ===----------------------------------------------------------------------=== # -# RUN: %mojo %s - -from testing import ( - assert_equal, - assert_false, - assert_raises, - assert_true, - assert_not_equal, -) - -from utils import StringRef - - -def test_stringref(): - var a = StringRef("AAA") - var b = StringRef("BBB") - var c = StringRef("AAA") - - assert_equal(3, len(a)) - assert_equal(3, len(b)) - assert_equal(3, len(c)) - assert_equal(4, len("ABBA")) - - # Equality operators - assert_not_equal(a, b) - assert_not_equal(b, a) - - # Self equality - assert_equal(a, a) - - # Value equality - assert_equal(a, c) - - -def test_stringref_from_pointer(): - var a = StringRef("AAA") - var b = StringRef(ptr=a.data) - assert_equal(3, len(a)) - assert_equal(3, len(b)) - assert_equal(a, b) - - -def test_strref_from_start(): - var str = StringRef("Hello") - - assert_equal(5, len(str)) - - assert_equal(str._from_start(0), "Hello") - assert_equal(str._from_start(1), "ello") - assert_equal(str._from_start(4), "o") - assert_equal(str._from_start(5), "") - assert_equal(str._from_start(10), "") - - assert_equal(str._from_start(-1), "o") - assert_equal(str._from_start(-3), "llo") - assert_equal(str._from_start(-5), "Hello") - assert_equal(str._from_start(-10), "Hello") - - -fn test_comparison_operators() raises: - var abc = StringRef("abc") - var de = StringRef("de") - var ABC = StringRef("ABC") - var ab = StringRef("ab") - var abcd = StringRef("abcd") - - # Test less than and greater than - assert_true(StringRef.__lt__(abc, de)) - assert_false(StringRef.__lt__(de, abc)) - assert_false(StringRef.__lt__(abc, abc)) - assert_true(StringRef.__lt__(ab, abc)) - assert_true(StringRef.__gt__(abc, ab)) - assert_false(StringRef.__gt__(abc, abcd)) - - # Test less than or equal to and greater than or equal to - assert_true(StringRef.__le__(abc, de)) - assert_true(StringRef.__le__(abc, abc)) - assert_false(StringRef.__le__(de, abc)) - assert_true(StringRef.__ge__(abc, abc)) - assert_false(StringRef.__ge__(ab, abc)) - assert_true(StringRef.__ge__(abcd, abc)) - - # Test case sensitivity in comparison (assuming ASCII order) - assert_true(StringRef.__gt__(abc, ABC)) - assert_false(StringRef.__le__(abc, ABC)) - - # Test comparisons involving empty strings - assert_true(StringRef.__lt__("", abc)) - assert_false(StringRef.__lt__(abc, "")) - assert_true(StringRef.__le__("", "")) - assert_true(StringRef.__ge__("", "")) - - -def test_intable(): - assert_equal(Int(StringRef("123")), 123) - - with assert_raises(): - _ = Int(StringRef("hi")) - - -def test_indexing(): - a = StringRef("abc") - assert_equal(a[False], "a") - assert_equal(a[Int(1)], "b") - assert_equal(a[0], "a") - - -def test_find(): - haystack = StringRef("abcdefg") - haystack_with_special_chars = StringRef("abcdefg@#$") - haystack_repeated_chars = StringRef("aaaaaaaaaaaaaaaaaaaaaaaa") - - assert_equal(haystack.find("a"), 0) - assert_equal(haystack.find("ab"), 0) - assert_equal(haystack.find("abc"), 0) - assert_equal(haystack.find("bcd"), 1) - assert_equal(haystack.find("de"), 3) - assert_equal(haystack.find("fg"), 5) - assert_equal(haystack.find("g"), 6) - assert_equal(haystack.find("z"), -1) - assert_equal(haystack.find("zzz"), -1) - - assert_equal(haystack.find("@#$"), -1) - assert_equal(haystack_with_special_chars.find("@#$"), 7) - - assert_equal(haystack_repeated_chars.find("aaa"), 0) - assert_equal(haystack_repeated_chars.find("AAa"), -1) - - assert_equal(haystack.find("hijklmnopqrstuvwxyz"), -1) - - assert_equal(StringRef("").find("abc"), -1) - - -fn test_stringref_split() raises: - # Reject empty delimiters - with assert_raises( - contains="empty delimiter not allowed to be passed to split." - ): - _ = StringRef("hello").split("") - - # Split in middle - var d1 = StringRef("n") - var in1 = StringRef("faang") - var res1 = in1.split(d1) - assert_equal(len(res1), 2) - assert_equal(res1[0], "faa") - assert_equal(res1[1], "g") - - # Matches should be properly split in multiple case - var d2 = StringRef(" ") - var in2 = StringRef("modcon is coming soon") - var res2 = in2.split(d2) - assert_equal(len(res2), 4) - assert_equal(res2[0], "modcon") - assert_equal(res2[1], "is") - assert_equal(res2[2], "coming") - assert_equal(res2[3], "soon") - - # No match from the delimiter - var d3 = StringRef("x") - var in3 = StringRef("hello world") - var res3 = in3.split(d3) - assert_equal(len(res3), 1) - assert_equal(res3[0], "hello world") - - # Multiple character delimiter - var d4 = StringRef("ll") - var in4 = StringRef("hello") - var res4 = in4.split(d4) - assert_equal(len(res4), 2) - assert_equal(res4[0], "he") - assert_equal(res4[1], "o") - - -def test_str_and_ref(): - assert_equal(StringRef("abc").__str__(), "abc") - assert_equal(StringRef("abc").__repr__(), "StringRef('abc')") - assert_equal(StringRef("\0").__repr__(), r"StringRef('\x00')") - assert_equal(StringRef("\x09").__repr__(), r"StringRef('\t')") - assert_equal(StringRef("\n").__repr__(), r"StringRef('\n')") - assert_equal(StringRef("\x0d").__repr__(), r"StringRef('\r')") - assert_equal(StringRef("'").__repr__(), 'StringRef("\'")') - - # Multi-byte characters.__repr__() - assert_equal( - StringRef("Örnsköldsvik").__repr__(), "StringRef('Örnsköldsvik')" - ) # 2-byte - assert_equal(StringRef("你好!").__repr__(), "StringRef('你好!')") # 3-byte - assert_equal( - StringRef("hello 🔥!").__repr__(), "StringRef('hello 🔥!')" - ) # 4-byte - - -def main(): - test_stringref() - test_stringref_from_pointer() - test_strref_from_start() - test_stringref_split() - test_comparison_operators() - test_intable() - test_indexing() - test_find() - test_str_and_ref() From eb566057628f639b7b05c920a83409422521e26b Mon Sep 17 00:00:00 2001 From: Manuel Saelices Date: Fri, 31 Jan 2025 17:40:19 -0800 Subject: [PATCH 331/509] [External] [stdlib] `SIMD.from_bytes()` and `SIMD.as_bytes()` (#54932) [External] [stdlib] `SIMD.from_bytes()` and `SIMD.as_bytes()` Similar to the Python's [int.from_bytes()](https://docs.python.org/3/library/stdtypes.html#int.from_bytes) and [int.to_bytes()](https://docs.python.org/3/library/stdtypes.html#int.to_bytes) one. --------- Signed-off-by: Lukas Hermann <1734032+lsh@users.noreply.github.com> Co-authored-by: Manuel Saelices Co-authored-by: Lukas Hermann <1734032+lsh@users.noreply.github.com> Co-authored-by: abdul dakkak Closes modularml/mojo#3966 MODULAR_ORIG_COMMIT_REV_ID: 6f00b8254c5e5bf87b10818da7021d0f682a8949 --- docs/changelog.md | 4 +++ stdlib/src/builtin/simd.mojo | 56 ++++++++++++++++++++++++++++-- stdlib/test/builtin/test_simd.mojo | 45 ++++++++++++++++++++++++ 3 files changed, 103 insertions(+), 2 deletions(-) diff --git a/docs/changelog.md b/docs/changelog.md index 472a8059c2..d5edc96c7f 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -107,6 +107,10 @@ what we publish. - Add a new `validate` parameter to the `b64decode()` function. +- New `SIMD.from_bytes()` and `SIMD.as_bytes()` functions to convert a list of bytes + to a list of scalars and vice versa, accepting the endianess as an argument. Similar + to Python `int.from_bytes()` and `int.to_bytes()` functions. + - The free floating functions for constructing different types have been deprecated for actual constructors: diff --git a/stdlib/src/builtin/simd.mojo b/stdlib/src/builtin/simd.mojo index f3f6f493cf..3da7506276 100644 --- a/stdlib/src/builtin/simd.mojo +++ b/stdlib/src/builtin/simd.mojo @@ -34,6 +34,7 @@ from sys import ( bitwidthof, has_neon, is_amd_gpu, + is_big_endian, is_gpu, is_nvidia_gpu, is_x86, @@ -45,13 +46,13 @@ from sys import ( from sys._assembly import inlined_assembly from sys.info import _current_arch, _is_sm_9x -from bit import pop_count +from bit import pop_count, byte_swap from builtin._format_float import _write_float from builtin.dtype import _uint_type_of_width from builtin.format_int import _try_write_int from builtin.io import _snprintf from documentation import doc_private -from memory import UnsafePointer, bitcast, Span +from memory import UnsafePointer, bitcast, memcpy, Span from utils import IndexList, StaticTuple from utils._visualizers import lldb_formatter_wrapping_type @@ -268,6 +269,7 @@ struct SIMD[type: DType, size: Int]( alias _Mask = SIMD[DType.bool, size] alias element_type = type + var value: __mlir_type[`!pop.simd<`, size.value, `, `, type.value, `>`] """The underlying storage for the vector.""" @@ -1956,6 +1958,56 @@ struct SIMD[type: DType, size: Int]( return bitcast[_integral_type_of[type](), size](self).cast[int_dtype]() + @staticmethod + fn from_bytes[ + big_endian: Bool = is_big_endian() + ](bytes: InlineArray[Byte, type.sizeof()]) -> Scalar[type]: + """Converts a byte array to an scalar integer. + + Args: + bytes: The byte array to convert. + + Parameters: + big_endian: Whether the byte array is big-endian. + + Returns: + The integer value. + """ + var ptr: UnsafePointer[Scalar[type]] = bytes.unsafe_ptr().bitcast[ + Scalar[type] + ]() + var value = ptr[] + + @parameter + if is_big_endian() != big_endian: + return byte_swap(value) + + return value + + fn as_bytes[ + big_endian: Bool = is_big_endian() + ](self) -> InlineArray[Byte, type.sizeof()]: + """Convert the scalar integer to a byte array. + + Parameters: + big_endian: Whether the byte array should be big-endian. + + Returns: + The byte array. + """ + var value = self + + @parameter + if is_big_endian() != big_endian: + value = byte_swap(value) + + var ptr = UnsafePointer.address_of(value) + var array = InlineArray[Byte, type.sizeof()](fill=0) + + memcpy(array.unsafe_ptr(), ptr.bitcast[Byte](), type.sizeof()) + + return array^ + fn _floor_ceil_trunc_impl[intrinsic: StringLiteral](self) -> Self: constrained[ intrinsic == "llvm.floor" diff --git a/stdlib/test/builtin/test_simd.mojo b/stdlib/test/builtin/test_simd.mojo index 16704d13e4..16684aedfb 100644 --- a/stdlib/test/builtin/test_simd.mojo +++ b/stdlib/test/builtin/test_simd.mojo @@ -1855,6 +1855,50 @@ def test_float_conversion(): assert_almost_equal(Float64(UInt64(36)), 36.0) +def test_from_bytes_as_bytes(): + alias TwoBytes = InlineArray[Byte, DType.int16.sizeof()] + alias TwoUBytes = InlineArray[Byte, DType.uint16.sizeof()] + alias FourBytes = InlineArray[Byte, DType.int32.sizeof()] + + assert_equal(Int16.from_bytes[big_endian=True](TwoBytes(0, 16)), 16) + assert_equal(Int16.from_bytes[big_endian=False](TwoBytes(0, 16)), 4096) + assert_equal(Int16.from_bytes[big_endian=True](TwoBytes(252, 0)), -1024) + assert_equal(UInt16.from_bytes[big_endian=True](TwoUBytes(252, 0)), 64512) + assert_equal(Int16.from_bytes[big_endian=False](TwoBytes(252, 0)), 252) + assert_equal(Int32.from_bytes[big_endian=True](FourBytes(0, 0, 0, 1)), 1) + assert_equal( + Int32.from_bytes[big_endian=False](FourBytes(0, 0, 0, 1)), + 16777216, + ) + assert_equal( + Int32.from_bytes[big_endian=True](FourBytes(1, 0, 0, 0)), + 16777216, + ) + assert_equal( + Int32.from_bytes[big_endian=True](FourBytes(1, 0, 0, 1)), + 16777217, + ) + assert_equal( + Int32.from_bytes[big_endian=False](FourBytes(1, 0, 0, 1)), + 16777217, + ) + assert_equal( + Int32.from_bytes[big_endian=True](FourBytes(255, 0, 0, 0)), + -16777216, + ) + for x_ref in List[Int16](10, 100, -12, 0, 1, -1, 1000, -1000): + x = x_ref[] + + @parameter + for b in range(2): + assert_equal( + Int16.from_bytes[big_endian=b]( + Int16(x).as_bytes[big_endian=b]() + ), + x, + ) + + def test_reversed(): fn test[D: DType]() raises: assert_equal(SIMD[D, 4](1, 2, 3, 4).reversed(), SIMD[D, 4](4, 3, 2, 1)) @@ -1885,6 +1929,7 @@ def main(): test_extract() test_floor() test_floordiv() + test_from_bytes_as_bytes() test_iadd() test_indexing() test_insert() From c3432d058ea241397247927e9dd3a4ea473b5461 Mon Sep 17 00:00:00 2001 From: Lukas Hermann <1734032+lsh@users.noreply.github.com> Date: Fri, 31 Jan 2025 18:44:06 -0800 Subject: [PATCH 332/509] [stdlib] Round out FFI aliases In order to have better symmetry for FFI bindings, it makes sense to have all of the relevant C basic data type aliases in `sys.ffi`. This PR just adds the other common ones. MODULAR_ORIG_COMMIT_REV_ID: 870a57d75cca333a3ffeb3a4a9d7f44a52bf3e2c --- docs/changelog.md | 2 ++ stdlib/src/sys/ffi.mojo | 15 +++++++++++++++ 2 files changed, 17 insertions(+) diff --git a/docs/changelog.md b/docs/changelog.md index d5edc96c7f..f7a8421ca7 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -111,6 +111,8 @@ what we publish. to a list of scalars and vice versa, accepting the endianess as an argument. Similar to Python `int.from_bytes()` and `int.to_bytes()` functions. +- Added more aliases in `sys.ffi` to round out the usual needs for FFI bindings. + - The free floating functions for constructing different types have been deprecated for actual constructors: diff --git a/stdlib/src/sys/ffi.mojo b/stdlib/src/sys/ffi.mojo index 8179ce0dd8..3ead55a560 100644 --- a/stdlib/src/sys/ffi.mojo +++ b/stdlib/src/sys/ffi.mojo @@ -29,6 +29,9 @@ from .intrinsics import _mlirtype_is_eq alias c_char = Int8 """C `char` type.""" +alias c_uchar = UInt8 +"""C `unsigned char` type.""" + alias c_int = Int32 """C `int` type. @@ -39,6 +42,12 @@ today. alias c_uint = UInt32 """C `unsigned int` type.""" +alias c_short = Int16 +"""C `short` type.""" + +alias c_ushort = UInt16 +"""C `unsigned short` type.""" + alias c_long = Scalar[_c_long_dtype()] """C `long` type. @@ -57,6 +66,12 @@ alias c_size_t = UInt alias c_ssize_t = Int """C `ssize_t` type.""" +alias c_float = Float32 +"""C `float` type.""" + +alias c_double = Float64 +"""C `double` type.""" + alias OpaquePointer = UnsafePointer[NoneType] """An opaque pointer, equivalent to the C `void*` type.""" From 66870915363831c25878ad47fcd52626dc5db0a3 Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Sat, 1 Feb 2025 07:46:35 -0800 Subject: [PATCH 333/509] [mojo-stdlib] Remove some uses of old elementwise init syntax. This removes some uses of the obsolete direct-inlined elementwise initialization syntax. We now have fully functional `__init__` functionality, so use that instead. MODULAR_ORIG_COMMIT_REV_ID: 0b3f62c7961608d7aa0f9e68cc4ccaaecc548d88 --- stdlib/src/builtin/file.mojo | 10 ++++------ stdlib/src/builtin/object.mojo | 19 +++++++++++++++---- stdlib/src/builtin/simd.mojo | 6 +++--- 3 files changed, 22 insertions(+), 13 deletions(-) diff --git a/stdlib/src/builtin/file.mojo b/stdlib/src/builtin/file.mojo index 27ea5906ed..b86a62a02e 100644 --- a/stdlib/src/builtin/file.mojo +++ b/stdlib/src/builtin/file.mojo @@ -54,15 +54,13 @@ struct _OwnedStringRef(Boolable): self.data.free() fn consume_as_error(owned self) -> Error: - var data = self.data + result = Error() + result.data = self.data + result.loaded_length = -self.length # Don't free self.data in our dtor. self.data = UnsafePointer[UInt8]() - - return Error { - data: data, - loaded_length: -self.length, - } + return result fn __bool__(self) -> Bool: return self.length != 0 diff --git a/stdlib/src/builtin/object.mojo b/stdlib/src/builtin/object.mojo index f8fcd52e66..9aa2d3a308 100644 --- a/stdlib/src/builtin/object.mojo +++ b/stdlib/src/builtin/object.mojo @@ -33,8 +33,11 @@ from utils import Variant struct _NoneMarker(CollectionElementNew): """This is a trivial class to indicate that an object is `None`.""" + fn __init__(out self): + pass + fn copy(self) -> Self: - return _NoneMarker {} + return _NoneMarker() @register_passable("trivial") @@ -95,10 +98,14 @@ struct _RefCountedListRef(CollectionElement, CollectionElementNew): __get_address_as_uninit_lvalue(ptr.address) = _RefCountedList() self.lst = ptr.bitcast[NoneType]() + @always_inline + fn __init__(out self, *, lst: OpaquePointer): + self.lst = lst + @always_inline fn copy(self) -> Self: _ = self.lst.bitcast[_RefCountedList]()[].impl - return Self {lst: self.lst} + return Self(lst=self.lst) fn release(self): var ptr = self.lst.bitcast[_RefCountedList]()[].impl @@ -185,10 +192,14 @@ struct _RefCountedAttrsDictRef(CollectionElement, CollectionElementNew): self.attrs = ptr.bitcast[Int8]() + @always_inline + fn __init__(out self, *, attrs: UnsafePointer[Int8]): + self.attrs = attrs + @always_inline fn copy(self) -> Self: _ = self.attrs.bitcast[_RefCountedAttrsDict]()[].impl - return Self {attrs: self.attrs} + return Self(attrs=self.attrs) fn release(self): var ptr = self.attrs.bitcast[_RefCountedAttrsDict]()[].impl @@ -305,7 +316,7 @@ struct _ObjectImpl( @always_inline fn __init__(out self): - self.value = Self.type(_NoneMarker {}) + self.value = Self.type(_NoneMarker()) @always_inline @implicit diff --git a/stdlib/src/builtin/simd.mojo b/stdlib/src/builtin/simd.mojo index 3da7506276..2c9065e06d 100644 --- a/stdlib/src/builtin/simd.mojo +++ b/stdlib/src/builtin/simd.mojo @@ -208,11 +208,11 @@ fn _unchecked_zero[type: DType, size: Int]() -> SIMD[type, size]: value = __mlir_attr[`#pop.simd<0> : !pop.scalar`], ]() ) - return SIMD[type, size] { - value: __mlir_op.`pop.simd.splat`[ + return SIMD[type, size]( + __mlir_op.`pop.simd.splat`[ _type = __mlir_type[`!pop.simd<`, size.value, `, `, type.value, `>`] ](zero) - } + ) @always_inline("nodebug") From b5e6455c914ea60ce6b4ca7407d1ffbfb24daff0 Mon Sep 17 00:00:00 2001 From: modularbot Date: Sun, 2 Feb 2025 07:50:18 +0000 Subject: [PATCH 334/509] Update lockfiles to point to latest nightly version: 25.1.0.dev2025020205 --- examples/life/magic.lock | 186 +++++++++++++++++----------------- examples/magic.lock | 186 +++++++++++++++++----------------- examples/operators/magic.lock | 186 +++++++++++++++++----------------- examples/testing/magic.lock | 186 +++++++++++++++++----------------- magic.lock | 186 +++++++++++++++++----------------- 5 files changed, 460 insertions(+), 470 deletions(-) diff --git a/examples/life/magic.lock b/examples/life/magic.lock index eae1460d3d..a74da0c302 100644 --- a/examples/life/magic.lock +++ b/examples/life/magic.lock @@ -116,7 +116,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.11.1-h332b0f4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libdb-6.2.32-h9c3ff4c_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.23-h4ddbbb0_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20240808-pl5321h7949ede_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libevent-2.1.12-hf998b51_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda @@ -172,12 +172,12 @@ 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-25.1.0.dev2025013105-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025013105-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025013105-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025013105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020205-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025020205-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025020205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020205-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-25.1.0.dev2025013105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020205-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_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.15-py312h98912ed_1.conda @@ -397,7 +397,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcurl-8.11.1-h6702fde_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libdb-6.2.32-h01db608_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libdeflate-1.23-h5e3c512_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20240808-pl5321h976ea20_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20250104-pl5321h976ea20_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libev-4.33-h31becfc_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libevent-2.1.12-h4ba1bb4_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.6.4-h5ad3122_0.conda @@ -453,12 +453,12 @@ 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-25.1.0.dev2025013105-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025013105-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025013105-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025013105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020205-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025020205-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025020205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020205-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-25.1.0.dev2025013105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020205-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_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.15-py312hdd3e373_1.conda @@ -669,7 +669,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.11.1-h73640d1_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.23-hec38601_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20240808-pl5321hafb1f1b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libev-4.33-h93a5062_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libevent-2.1.12-h2757513_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.4-h286801f_0.conda @@ -717,12 +717,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-25.1.0.dev2025013105-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025013105-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025013105-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025013105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020205-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025020205-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025020205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020205-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-25.1.0.dev2025013105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020205-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 @@ -4156,9 +4156,9 @@ packages: license_family: MIT size: 54132 timestamp: 1734373971372 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20240808-pl5321h7949ede_0.conda - sha256: 4d0d69ddf9cc7d724a1ccf3a9852e44c8aea9825692582bac2c4e8d21ec95ccd - md5: 8247f80f3dc464d9322e85007e307fe8 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda + sha256: d789471216e7aba3c184cd054ed61ce3f6dac6f87a50ec69291b9297f8c18724 + md5: c277e0a4d549b03ac1e9d6cbbe3d017b depends: - ncurses - __glibc >=2.17,<3.0.a0 @@ -4167,12 +4167,11 @@ packages: arch: x86_64 platform: linux license: BSD-2-Clause - license_family: BSD - size: 134657 - timestamp: 1736191912705 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20240808-pl5321h976ea20_0.conda - sha256: 031daea98cf278f858b7957ad5dc475f1b5673cd5e718850529401ced64cef2c - md5: 0be40129d3dd1a152fff29a85f0785d0 + size: 134676 + timestamp: 1738479519902 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20250104-pl5321h976ea20_0.conda + sha256: c0b27546aa3a23d47919226b3a1635fccdb4f24b94e72e206a751b33f46fd8d6 + md5: fb640d776fc92b682a14e001980825b1 depends: - ncurses - libgcc >=13 @@ -4180,12 +4179,11 @@ packages: arch: aarch64 platform: linux license: BSD-2-Clause - license_family: BSD - size: 148120 - timestamp: 1736192137151 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20240808-pl5321hafb1f1b_0.conda - sha256: fb934d7a03279ec8eae4bf1913ac9058fcf6fed35290d8ffa6e04157f396a3b1 - md5: af89aa84ffb5ee551ce0c137b951a3b5 + size: 148125 + timestamp: 1738479808948 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda + sha256: 66aa216a403de0bb0c1340a88d1a06adaff66bae2cfd196731aa24db9859d631 + md5: 44083d2d2c2025afca315c7a172eab2b depends: - ncurses - __osx >=11.0 @@ -4193,9 +4191,8 @@ packages: arch: arm64 platform: osx license: BSD-2-Clause - license_family: BSD - size: 107634 - timestamp: 1736192034117 + size: 107691 + timestamp: 1738479560845 - conda: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda sha256: 1cd6048169fa0395af74ed5d8f1716e22c19a81a8a36f934c110ca3ad4dd27b4 md5: 172bf1cd1ff8629f2b1179945ed45055 @@ -6290,47 +6287,48 @@ packages: license_family: BSD size: 24048 timestamp: 1733219945697 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025013105-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020205-release.conda noarch: python - sha256: 1b8fcd33ceff5e6e87603d1de72c12493fe20e4f5204bc3d061a7e2b8ab33e84 - md5: 74268fafa5367b803cb82c74751fb0f0 + sha256: cba426880b6c5f6e60a9743e30fa8af9fb4a83455d09eb0eb2f20d98a9441b3b + md5: 18aab6d4943b48a5623561d11171fbd1 depends: - - max-core ==25.1.0.dev2025013105 release - - max-python >=25.1.0.dev2025013105,<26.0a0 - - mojo-jupyter ==25.1.0.dev2025013105 release - - mblack ==25.1.0.dev2025013105 release + - max-core ==25.1.0.dev2025020205 release + - max-python >=25.1.0.dev2025020205,<26.0a0 + - mojo-jupyter ==25.1.0.dev2025020205 release + - mblack ==25.1.0.dev2025020205 release license: LicenseRef-Modular-Proprietary - size: 9918 - timestamp: 1738300734602 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025013105-release.conda - sha256: 1ac416f06cc0adad41d5ca07d55c0e146073c2971ba30696ce561fd7af5afb1a - md5: ddc94cd4ca461791a9e3ae7a571e78ed + size: 9921 + timestamp: 1738473487228 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025020205-release.conda + sha256: 10e99aec52a9fa2e8fe67fda4f5e01e134a9c697d62d25255d4bb40fca19f85d + md5: 6d2162cd5f992294f5847c835bc894a4 depends: - - mblack ==25.1.0.dev2025013105 release + - mblack ==25.1.0.dev2025020205 release license: LicenseRef-Modular-Proprietary - size: 243598857 - timestamp: 1738300650444 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025013105-release.conda - sha256: faee2aee06a50c1ca71fc7df91564dafe97986a71474fe0c2694b663bc7b0a1d - md5: 203e66b533a2e81c659276ce2a211b6b + size: 243782696 + timestamp: 1738473498297 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025020205-release.conda + sha256: 2c6b44893e750a6d21a47c281bd3555a6ec3ee7cc66afe07de7a50521e43b98d + md5: 39660fe658e7877715f12da0ad8c60a5 depends: - - mblack ==25.1.0.dev2025013105 release + - mblack ==25.1.0.dev2025020205 release license: LicenseRef-Modular-Proprietary - size: 246147380 - timestamp: 1738300734602 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025013105-release.conda - sha256: 12c6501ffb4e951a4e583ef694529e5621ee4c9d06554b0db464de1a37552974 - md5: 5663c30c6ab3e0a29c0fdb08f5634a68 + size: 246300496 + timestamp: 1738473487228 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025020205-release.conda + sha256: 02fbc22b5f121fe292edc0997bfdfa303ec6bfb5d6ea8545acb1dcec03719091 + md5: 5343afd23543fc39a5d619bcce50bd32 depends: - - mblack ==25.1.0.dev2025013105 release + - mblack ==25.1.0.dev2025020205 release license: LicenseRef-Modular-Proprietary - size: 209002959 - timestamp: 1738349723783 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025013105-3.12release.conda - sha256: d08de32fd4aa12b4593146fc6f268a105b264e279c3a75009870e8d310778ea6 - md5: 27c0957cae6a8620faf67beb5f320aa4 + size: 209133254 + timestamp: 1738476199729 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025020205-release.conda + noarch: python + sha256: b1e33fd7cd3547ca3e54c22f1ad5635f7ea73c3fb4edd4d8aa46fd1eb9514c10 + md5: 965d9d920d9e367d20c6abdac59dd134 depends: - - max-core ==25.1.0.dev2025013105 release + - max-core ==25.1.0.dev2025020205 release - python - fastapi - httpx @@ -6349,15 +6347,15 @@ packages: - transformers - typing_extensions - uvicorn - - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 120809611 - timestamp: 1738300650444 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025013105-3.12release.conda - sha256: 55f72914a83403fac6e20372314774856b769c67f59791a217593be0132e0433 - md5: 1467c9c730b2fba872caba9c325d3a93 + size: 120415742 + timestamp: 1738473498298 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025020205-release.conda + noarch: python + sha256: c94728b5100f37256699ae2397ab9ec45092b1eee9524d2bcb7faf0d65de4beb + md5: 5a82778a4ee4be515783c64d33019f9b depends: - - max-core ==25.1.0.dev2025013105 release + - max-core ==25.1.0.dev2025020205 release - python - fastapi - httpx @@ -6376,15 +6374,15 @@ packages: - transformers - typing_extensions - uvicorn - - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 123341772 - timestamp: 1738300734603 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025013105-3.12release.conda - sha256: 880116fc694ec36b549849a351f70e00f092e9de19a17862f76184672ae2bc83 - md5: 8493ea4815ffa8ae223182f94a7a6ecc + size: 123027690 + timestamp: 1738473487228 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025020205-release.conda + noarch: python + sha256: 35fae7f5dda50acf55557a7cf8220434b197beae9c016370f430ec666d38e443 + md5: 1e1911e6b3f2af24fbe9dd920e3ce7e3 depends: - - max-core ==25.1.0.dev2025013105 release + - max-core ==25.1.0.dev2025020205 release - python - fastapi - httpx @@ -6403,14 +6401,13 @@ packages: - transformers - typing_extensions - uvicorn - - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 108536428 - timestamp: 1738349723783 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025013105-release.conda + size: 108138052 + timestamp: 1738476199729 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020205-release.conda noarch: python - sha256: 0c8bbcd2d1133b99b54ebff3c8f5461c025c9de38bd8b6a65b5dc01f285dfa22 - md5: 01c6b9f78100a28719df93826b30be0d + sha256: 70ae00ae631ea771af53ac1c1f9882982470255d361bf5578a0602d768972d26 + md5: ba967e4130dc9a10186de20c6883aae0 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -6418,10 +6415,11 @@ packages: - packaging >=22.0 - pathspec >=0.9.0 - platformdirs >=2 + - typing_extensions >=v4.12.2 - python license: MIT - size: 130813 - timestamp: 1738300734602 + size: 130823 + timestamp: 1738473487228 - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda sha256: 78c1bbe1723449c52b7a9df1af2ee5f005209f67e40b6e1d3c7619127c43b1c7 md5: 592132998493b3ff25fd7479396e8351 @@ -6431,18 +6429,18 @@ packages: license_family: MIT size: 14465 timestamp: 1733255681319 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025013105-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020205-release.conda noarch: python - sha256: 122b3ad0404caebf7c5271d75ae5504f228795f529b98be2011d1a1cdc71f93d - md5: f218b84b9f1baa40269eaa760534be98 + sha256: c70af4ebd29c7c4e445bdf37f592ea39dec3090c59cdd4c96f8eec1e0a6fcba8 + md5: 40b22aabe3af350b240167b503c4c48e depends: - - max-core ==25.1.0.dev2025013105 release + - max-core ==25.1.0.dev2025020205 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary size: 22925 - timestamp: 1738300734602 + timestamp: 1738473487228 - conda: https://conda.anaconda.org/conda-forge/linux-64/mpg123-1.32.9-hc50e24c_0.conda sha256: 39c4700fb3fbe403a77d8cc27352fa72ba744db487559d5d44bf8411bb4ea200 md5: c7f302fd11eeb0987a6a5e1f3aed6a21 diff --git a/examples/magic.lock b/examples/magic.lock index 1a1dcb3ae5..87654d57f6 100644 --- a/examples/magic.lock +++ b/examples/magic.lock @@ -89,7 +89,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libcrc32c-1.1.2-h9c3ff4c_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.11.1-h332b0f4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.23-h4ddbbb0_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20240808-pl5321h7949ede_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libevent-2.1.12-hf998b51_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda @@ -133,12 +133,12 @@ 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-25.1.0.dev2025013105-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025013105-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025013105-3.11release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025013105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020205-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025020205-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025020205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020205-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-25.1.0.dev2025013105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020205-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 @@ -312,7 +312,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcrc32c-1.1.2-h01db608_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcurl-8.11.1-h6702fde_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libdeflate-1.23-h5e3c512_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20240808-pl5321h976ea20_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20250104-pl5321h976ea20_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libev-4.33-h31becfc_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libevent-2.1.12-h4ba1bb4_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.6.4-h5ad3122_0.conda @@ -356,12 +356,12 @@ 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-25.1.0.dev2025013105-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025013105-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025013105-3.11release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025013105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020205-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025020205-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025020205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020205-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-25.1.0.dev2025013105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020205-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 @@ -533,7 +533,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.11.1-h73640d1_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.23-hec38601_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20240808-pl5321hafb1f1b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libev-4.33-h93a5062_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libevent-2.1.12-h2757513_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.4-h286801f_0.conda @@ -570,12 +570,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-25.1.0.dev2025013105-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025013105-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025013105-3.11release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025013105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020205-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025020205-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025020205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020205-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-25.1.0.dev2025013105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020205-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 @@ -3190,9 +3190,9 @@ packages: license_family: MIT size: 54132 timestamp: 1734373971372 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20240808-pl5321h7949ede_0.conda - sha256: 4d0d69ddf9cc7d724a1ccf3a9852e44c8aea9825692582bac2c4e8d21ec95ccd - md5: 8247f80f3dc464d9322e85007e307fe8 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda + sha256: d789471216e7aba3c184cd054ed61ce3f6dac6f87a50ec69291b9297f8c18724 + md5: c277e0a4d549b03ac1e9d6cbbe3d017b depends: - ncurses - __glibc >=2.17,<3.0.a0 @@ -3201,12 +3201,11 @@ packages: arch: x86_64 platform: linux license: BSD-2-Clause - license_family: BSD - size: 134657 - timestamp: 1736191912705 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20240808-pl5321h976ea20_0.conda - sha256: 031daea98cf278f858b7957ad5dc475f1b5673cd5e718850529401ced64cef2c - md5: 0be40129d3dd1a152fff29a85f0785d0 + size: 134676 + timestamp: 1738479519902 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20250104-pl5321h976ea20_0.conda + sha256: c0b27546aa3a23d47919226b3a1635fccdb4f24b94e72e206a751b33f46fd8d6 + md5: fb640d776fc92b682a14e001980825b1 depends: - ncurses - libgcc >=13 @@ -3214,12 +3213,11 @@ packages: arch: aarch64 platform: linux license: BSD-2-Clause - license_family: BSD - size: 148120 - timestamp: 1736192137151 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20240808-pl5321hafb1f1b_0.conda - sha256: fb934d7a03279ec8eae4bf1913ac9058fcf6fed35290d8ffa6e04157f396a3b1 - md5: af89aa84ffb5ee551ce0c137b951a3b5 + size: 148125 + timestamp: 1738479808948 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda + sha256: 66aa216a403de0bb0c1340a88d1a06adaff66bae2cfd196731aa24db9859d631 + md5: 44083d2d2c2025afca315c7a172eab2b depends: - ncurses - __osx >=11.0 @@ -3227,9 +3225,8 @@ packages: arch: arm64 platform: osx license: BSD-2-Clause - license_family: BSD - size: 107634 - timestamp: 1736192034117 + size: 107691 + timestamp: 1738479560845 - conda: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda sha256: 1cd6048169fa0395af74ed5d8f1716e22c19a81a8a36f934c110ca3ad4dd27b4 md5: 172bf1cd1ff8629f2b1179945ed45055 @@ -4868,47 +4865,48 @@ packages: license_family: BSD size: 24976 timestamp: 1733219849253 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025013105-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020205-release.conda noarch: python - sha256: 1b8fcd33ceff5e6e87603d1de72c12493fe20e4f5204bc3d061a7e2b8ab33e84 - md5: 74268fafa5367b803cb82c74751fb0f0 + sha256: cba426880b6c5f6e60a9743e30fa8af9fb4a83455d09eb0eb2f20d98a9441b3b + md5: 18aab6d4943b48a5623561d11171fbd1 depends: - - max-core ==25.1.0.dev2025013105 release - - max-python >=25.1.0.dev2025013105,<26.0a0 - - mojo-jupyter ==25.1.0.dev2025013105 release - - mblack ==25.1.0.dev2025013105 release + - max-core ==25.1.0.dev2025020205 release + - max-python >=25.1.0.dev2025020205,<26.0a0 + - mojo-jupyter ==25.1.0.dev2025020205 release + - mblack ==25.1.0.dev2025020205 release license: LicenseRef-Modular-Proprietary - size: 9918 - timestamp: 1738300734602 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025013105-release.conda - sha256: 1ac416f06cc0adad41d5ca07d55c0e146073c2971ba30696ce561fd7af5afb1a - md5: ddc94cd4ca461791a9e3ae7a571e78ed + size: 9921 + timestamp: 1738473487228 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025020205-release.conda + sha256: 10e99aec52a9fa2e8fe67fda4f5e01e134a9c697d62d25255d4bb40fca19f85d + md5: 6d2162cd5f992294f5847c835bc894a4 depends: - - mblack ==25.1.0.dev2025013105 release + - mblack ==25.1.0.dev2025020205 release license: LicenseRef-Modular-Proprietary - size: 243598857 - timestamp: 1738300650444 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025013105-release.conda - sha256: faee2aee06a50c1ca71fc7df91564dafe97986a71474fe0c2694b663bc7b0a1d - md5: 203e66b533a2e81c659276ce2a211b6b + size: 243782696 + timestamp: 1738473498297 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025020205-release.conda + sha256: 2c6b44893e750a6d21a47c281bd3555a6ec3ee7cc66afe07de7a50521e43b98d + md5: 39660fe658e7877715f12da0ad8c60a5 depends: - - mblack ==25.1.0.dev2025013105 release + - mblack ==25.1.0.dev2025020205 release license: LicenseRef-Modular-Proprietary - size: 246147380 - timestamp: 1738300734602 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025013105-release.conda - sha256: 12c6501ffb4e951a4e583ef694529e5621ee4c9d06554b0db464de1a37552974 - md5: 5663c30c6ab3e0a29c0fdb08f5634a68 + size: 246300496 + timestamp: 1738473487228 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025020205-release.conda + sha256: 02fbc22b5f121fe292edc0997bfdfa303ec6bfb5d6ea8545acb1dcec03719091 + md5: 5343afd23543fc39a5d619bcce50bd32 depends: - - mblack ==25.1.0.dev2025013105 release + - mblack ==25.1.0.dev2025020205 release license: LicenseRef-Modular-Proprietary - size: 209002959 - timestamp: 1738349723783 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025013105-3.11release.conda - sha256: b2eca43a60b2e333e24a3c54b060c2b9ca4ec2663168c8c982b8b9c3e02ef436 - md5: 3ecb473bf78313dedd8112789df6d5bb + size: 209133254 + timestamp: 1738476199729 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025020205-release.conda + noarch: python + sha256: b1e33fd7cd3547ca3e54c22f1ad5635f7ea73c3fb4edd4d8aa46fd1eb9514c10 + md5: 965d9d920d9e367d20c6abdac59dd134 depends: - - max-core ==25.1.0.dev2025013105 release + - max-core ==25.1.0.dev2025020205 release - python - fastapi - httpx @@ -4927,15 +4925,15 @@ packages: - transformers - typing_extensions - uvicorn - - python_abi 3.11.* *_cp311 license: LicenseRef-Modular-Proprietary - size: 120832940 - timestamp: 1738300650444 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025013105-3.11release.conda - sha256: 0383a6007f30d4653457ee5ae77df6906f1f7384f8ba170b15dbe7652576a534 - md5: 2a76ac2294311a8f8032e5efbf39450c + size: 120415742 + timestamp: 1738473498298 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025020205-release.conda + noarch: python + sha256: c94728b5100f37256699ae2397ab9ec45092b1eee9524d2bcb7faf0d65de4beb + md5: 5a82778a4ee4be515783c64d33019f9b depends: - - max-core ==25.1.0.dev2025013105 release + - max-core ==25.1.0.dev2025020205 release - python - fastapi - httpx @@ -4954,15 +4952,15 @@ packages: - transformers - typing_extensions - uvicorn - - python_abi 3.11.* *_cp311 license: LicenseRef-Modular-Proprietary - size: 123382599 - timestamp: 1738300734602 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025013105-3.11release.conda - sha256: 69ad9e176a511fd3bace492ec12e1c014a59a3f3a78187a0e30d0654d338d815 - md5: 47819b3e8818ad4fcd8101d992dc92cd + size: 123027690 + timestamp: 1738473487228 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025020205-release.conda + noarch: python + sha256: 35fae7f5dda50acf55557a7cf8220434b197beae9c016370f430ec666d38e443 + md5: 1e1911e6b3f2af24fbe9dd920e3ce7e3 depends: - - max-core ==25.1.0.dev2025013105 release + - max-core ==25.1.0.dev2025020205 release - python - fastapi - httpx @@ -4981,14 +4979,13 @@ packages: - transformers - typing_extensions - uvicorn - - python_abi 3.11.* *_cp311 license: LicenseRef-Modular-Proprietary - size: 108556922 - timestamp: 1738349723783 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025013105-release.conda + size: 108138052 + timestamp: 1738476199729 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020205-release.conda noarch: python - sha256: 0c8bbcd2d1133b99b54ebff3c8f5461c025c9de38bd8b6a65b5dc01f285dfa22 - md5: 01c6b9f78100a28719df93826b30be0d + sha256: 70ae00ae631ea771af53ac1c1f9882982470255d361bf5578a0602d768972d26 + md5: ba967e4130dc9a10186de20c6883aae0 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -4996,10 +4993,11 @@ packages: - packaging >=22.0 - pathspec >=0.9.0 - platformdirs >=2 + - typing_extensions >=v4.12.2 - python license: MIT - size: 130813 - timestamp: 1738300734602 + size: 130823 + timestamp: 1738473487228 - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda sha256: 78c1bbe1723449c52b7a9df1af2ee5f005209f67e40b6e1d3c7619127c43b1c7 md5: 592132998493b3ff25fd7479396e8351 @@ -5009,18 +5007,18 @@ packages: license_family: MIT size: 14465 timestamp: 1733255681319 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025013105-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020205-release.conda noarch: python - sha256: 122b3ad0404caebf7c5271d75ae5504f228795f529b98be2011d1a1cdc71f93d - md5: f218b84b9f1baa40269eaa760534be98 + sha256: c70af4ebd29c7c4e445bdf37f592ea39dec3090c59cdd4c96f8eec1e0a6fcba8 + md5: 40b22aabe3af350b240167b503c4c48e depends: - - max-core ==25.1.0.dev2025013105 release + - max-core ==25.1.0.dev2025020205 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary size: 22925 - timestamp: 1738300734602 + timestamp: 1738473487228 - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py311h2dc5d0c_2.conda sha256: afaab7a028281d8b5336db2b994fd3f9694862b6ca372c079dc4e84ad768c20a md5: bb8ca118919836624d920b4c44383a15 diff --git a/examples/operators/magic.lock b/examples/operators/magic.lock index f45b978de6..b47920c676 100644 --- a/examples/operators/magic.lock +++ b/examples/operators/magic.lock @@ -89,7 +89,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libcrc32c-1.1.2-h9c3ff4c_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.11.1-h332b0f4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.23-h4ddbbb0_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20240808-pl5321h7949ede_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libevent-2.1.12-hf998b51_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda @@ -133,12 +133,12 @@ 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-25.1.0.dev2025013105-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025013105-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025013105-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025013105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020205-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025020205-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025020205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020205-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-25.1.0.dev2025013105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020205-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 @@ -312,7 +312,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcrc32c-1.1.2-h01db608_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcurl-8.11.1-h6702fde_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libdeflate-1.23-h5e3c512_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20240808-pl5321h976ea20_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20250104-pl5321h976ea20_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libev-4.33-h31becfc_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libevent-2.1.12-h4ba1bb4_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.6.4-h5ad3122_0.conda @@ -356,12 +356,12 @@ 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-25.1.0.dev2025013105-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025013105-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025013105-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025013105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020205-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025020205-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025020205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020205-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-25.1.0.dev2025013105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020205-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 @@ -533,7 +533,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.11.1-h73640d1_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.23-hec38601_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20240808-pl5321hafb1f1b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libev-4.33-h93a5062_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libevent-2.1.12-h2757513_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.4-h286801f_0.conda @@ -570,12 +570,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-25.1.0.dev2025013105-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025013105-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025013105-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025013105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020205-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025020205-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025020205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020205-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-25.1.0.dev2025013105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020205-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 @@ -3190,9 +3190,9 @@ packages: license_family: MIT size: 54132 timestamp: 1734373971372 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20240808-pl5321h7949ede_0.conda - sha256: 4d0d69ddf9cc7d724a1ccf3a9852e44c8aea9825692582bac2c4e8d21ec95ccd - md5: 8247f80f3dc464d9322e85007e307fe8 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda + sha256: d789471216e7aba3c184cd054ed61ce3f6dac6f87a50ec69291b9297f8c18724 + md5: c277e0a4d549b03ac1e9d6cbbe3d017b depends: - ncurses - __glibc >=2.17,<3.0.a0 @@ -3201,12 +3201,11 @@ packages: arch: x86_64 platform: linux license: BSD-2-Clause - license_family: BSD - size: 134657 - timestamp: 1736191912705 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20240808-pl5321h976ea20_0.conda - sha256: 031daea98cf278f858b7957ad5dc475f1b5673cd5e718850529401ced64cef2c - md5: 0be40129d3dd1a152fff29a85f0785d0 + size: 134676 + timestamp: 1738479519902 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20250104-pl5321h976ea20_0.conda + sha256: c0b27546aa3a23d47919226b3a1635fccdb4f24b94e72e206a751b33f46fd8d6 + md5: fb640d776fc92b682a14e001980825b1 depends: - ncurses - libgcc >=13 @@ -3214,12 +3213,11 @@ packages: arch: aarch64 platform: linux license: BSD-2-Clause - license_family: BSD - size: 148120 - timestamp: 1736192137151 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20240808-pl5321hafb1f1b_0.conda - sha256: fb934d7a03279ec8eae4bf1913ac9058fcf6fed35290d8ffa6e04157f396a3b1 - md5: af89aa84ffb5ee551ce0c137b951a3b5 + size: 148125 + timestamp: 1738479808948 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda + sha256: 66aa216a403de0bb0c1340a88d1a06adaff66bae2cfd196731aa24db9859d631 + md5: 44083d2d2c2025afca315c7a172eab2b depends: - ncurses - __osx >=11.0 @@ -3227,9 +3225,8 @@ packages: arch: arm64 platform: osx license: BSD-2-Clause - license_family: BSD - size: 107634 - timestamp: 1736192034117 + size: 107691 + timestamp: 1738479560845 - conda: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda sha256: 1cd6048169fa0395af74ed5d8f1716e22c19a81a8a36f934c110ca3ad4dd27b4 md5: 172bf1cd1ff8629f2b1179945ed45055 @@ -4868,47 +4865,48 @@ packages: license_family: BSD size: 24048 timestamp: 1733219945697 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025013105-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020205-release.conda noarch: python - sha256: 1b8fcd33ceff5e6e87603d1de72c12493fe20e4f5204bc3d061a7e2b8ab33e84 - md5: 74268fafa5367b803cb82c74751fb0f0 + sha256: cba426880b6c5f6e60a9743e30fa8af9fb4a83455d09eb0eb2f20d98a9441b3b + md5: 18aab6d4943b48a5623561d11171fbd1 depends: - - max-core ==25.1.0.dev2025013105 release - - max-python >=25.1.0.dev2025013105,<26.0a0 - - mojo-jupyter ==25.1.0.dev2025013105 release - - mblack ==25.1.0.dev2025013105 release + - max-core ==25.1.0.dev2025020205 release + - max-python >=25.1.0.dev2025020205,<26.0a0 + - mojo-jupyter ==25.1.0.dev2025020205 release + - mblack ==25.1.0.dev2025020205 release license: LicenseRef-Modular-Proprietary - size: 9918 - timestamp: 1738300734602 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025013105-release.conda - sha256: 1ac416f06cc0adad41d5ca07d55c0e146073c2971ba30696ce561fd7af5afb1a - md5: ddc94cd4ca461791a9e3ae7a571e78ed + size: 9921 + timestamp: 1738473487228 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025020205-release.conda + sha256: 10e99aec52a9fa2e8fe67fda4f5e01e134a9c697d62d25255d4bb40fca19f85d + md5: 6d2162cd5f992294f5847c835bc894a4 depends: - - mblack ==25.1.0.dev2025013105 release + - mblack ==25.1.0.dev2025020205 release license: LicenseRef-Modular-Proprietary - size: 243598857 - timestamp: 1738300650444 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025013105-release.conda - sha256: faee2aee06a50c1ca71fc7df91564dafe97986a71474fe0c2694b663bc7b0a1d - md5: 203e66b533a2e81c659276ce2a211b6b + size: 243782696 + timestamp: 1738473498297 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025020205-release.conda + sha256: 2c6b44893e750a6d21a47c281bd3555a6ec3ee7cc66afe07de7a50521e43b98d + md5: 39660fe658e7877715f12da0ad8c60a5 depends: - - mblack ==25.1.0.dev2025013105 release + - mblack ==25.1.0.dev2025020205 release license: LicenseRef-Modular-Proprietary - size: 246147380 - timestamp: 1738300734602 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025013105-release.conda - sha256: 12c6501ffb4e951a4e583ef694529e5621ee4c9d06554b0db464de1a37552974 - md5: 5663c30c6ab3e0a29c0fdb08f5634a68 + size: 246300496 + timestamp: 1738473487228 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025020205-release.conda + sha256: 02fbc22b5f121fe292edc0997bfdfa303ec6bfb5d6ea8545acb1dcec03719091 + md5: 5343afd23543fc39a5d619bcce50bd32 depends: - - mblack ==25.1.0.dev2025013105 release + - mblack ==25.1.0.dev2025020205 release license: LicenseRef-Modular-Proprietary - size: 209002959 - timestamp: 1738349723783 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025013105-3.12release.conda - sha256: d08de32fd4aa12b4593146fc6f268a105b264e279c3a75009870e8d310778ea6 - md5: 27c0957cae6a8620faf67beb5f320aa4 + size: 209133254 + timestamp: 1738476199729 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025020205-release.conda + noarch: python + sha256: b1e33fd7cd3547ca3e54c22f1ad5635f7ea73c3fb4edd4d8aa46fd1eb9514c10 + md5: 965d9d920d9e367d20c6abdac59dd134 depends: - - max-core ==25.1.0.dev2025013105 release + - max-core ==25.1.0.dev2025020205 release - python - fastapi - httpx @@ -4927,15 +4925,15 @@ packages: - transformers - typing_extensions - uvicorn - - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 120809611 - timestamp: 1738300650444 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025013105-3.12release.conda - sha256: 55f72914a83403fac6e20372314774856b769c67f59791a217593be0132e0433 - md5: 1467c9c730b2fba872caba9c325d3a93 + size: 120415742 + timestamp: 1738473498298 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025020205-release.conda + noarch: python + sha256: c94728b5100f37256699ae2397ab9ec45092b1eee9524d2bcb7faf0d65de4beb + md5: 5a82778a4ee4be515783c64d33019f9b depends: - - max-core ==25.1.0.dev2025013105 release + - max-core ==25.1.0.dev2025020205 release - python - fastapi - httpx @@ -4954,15 +4952,15 @@ packages: - transformers - typing_extensions - uvicorn - - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 123341772 - timestamp: 1738300734603 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025013105-3.12release.conda - sha256: 880116fc694ec36b549849a351f70e00f092e9de19a17862f76184672ae2bc83 - md5: 8493ea4815ffa8ae223182f94a7a6ecc + size: 123027690 + timestamp: 1738473487228 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025020205-release.conda + noarch: python + sha256: 35fae7f5dda50acf55557a7cf8220434b197beae9c016370f430ec666d38e443 + md5: 1e1911e6b3f2af24fbe9dd920e3ce7e3 depends: - - max-core ==25.1.0.dev2025013105 release + - max-core ==25.1.0.dev2025020205 release - python - fastapi - httpx @@ -4981,14 +4979,13 @@ packages: - transformers - typing_extensions - uvicorn - - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 108536428 - timestamp: 1738349723783 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025013105-release.conda + size: 108138052 + timestamp: 1738476199729 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020205-release.conda noarch: python - sha256: 0c8bbcd2d1133b99b54ebff3c8f5461c025c9de38bd8b6a65b5dc01f285dfa22 - md5: 01c6b9f78100a28719df93826b30be0d + sha256: 70ae00ae631ea771af53ac1c1f9882982470255d361bf5578a0602d768972d26 + md5: ba967e4130dc9a10186de20c6883aae0 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -4996,10 +4993,11 @@ packages: - packaging >=22.0 - pathspec >=0.9.0 - platformdirs >=2 + - typing_extensions >=v4.12.2 - python license: MIT - size: 130813 - timestamp: 1738300734602 + size: 130823 + timestamp: 1738473487228 - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda sha256: 78c1bbe1723449c52b7a9df1af2ee5f005209f67e40b6e1d3c7619127c43b1c7 md5: 592132998493b3ff25fd7479396e8351 @@ -5009,18 +5007,18 @@ packages: license_family: MIT size: 14465 timestamp: 1733255681319 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025013105-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020205-release.conda noarch: python - sha256: 122b3ad0404caebf7c5271d75ae5504f228795f529b98be2011d1a1cdc71f93d - md5: f218b84b9f1baa40269eaa760534be98 + sha256: c70af4ebd29c7c4e445bdf37f592ea39dec3090c59cdd4c96f8eec1e0a6fcba8 + md5: 40b22aabe3af350b240167b503c4c48e depends: - - max-core ==25.1.0.dev2025013105 release + - max-core ==25.1.0.dev2025020205 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary size: 22925 - timestamp: 1738300734602 + timestamp: 1738473487228 - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py312h178313f_2.conda sha256: b05bc8252a6e957bf4a776ed5e0e61d1ba88cdc46ccb55890c72cc58b10371f4 md5: 5b5e3267d915a107eca793d52e1b780a diff --git a/examples/testing/magic.lock b/examples/testing/magic.lock index f45b978de6..b47920c676 100644 --- a/examples/testing/magic.lock +++ b/examples/testing/magic.lock @@ -89,7 +89,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libcrc32c-1.1.2-h9c3ff4c_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.11.1-h332b0f4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.23-h4ddbbb0_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20240808-pl5321h7949ede_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libevent-2.1.12-hf998b51_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda @@ -133,12 +133,12 @@ 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-25.1.0.dev2025013105-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025013105-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025013105-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025013105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020205-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025020205-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025020205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020205-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-25.1.0.dev2025013105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020205-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 @@ -312,7 +312,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcrc32c-1.1.2-h01db608_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcurl-8.11.1-h6702fde_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libdeflate-1.23-h5e3c512_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20240808-pl5321h976ea20_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20250104-pl5321h976ea20_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libev-4.33-h31becfc_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libevent-2.1.12-h4ba1bb4_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.6.4-h5ad3122_0.conda @@ -356,12 +356,12 @@ 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-25.1.0.dev2025013105-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025013105-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025013105-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025013105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020205-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025020205-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025020205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020205-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-25.1.0.dev2025013105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020205-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 @@ -533,7 +533,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.11.1-h73640d1_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.23-hec38601_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20240808-pl5321hafb1f1b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libev-4.33-h93a5062_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libevent-2.1.12-h2757513_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.4-h286801f_0.conda @@ -570,12 +570,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-25.1.0.dev2025013105-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025013105-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025013105-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025013105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020205-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025020205-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025020205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020205-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-25.1.0.dev2025013105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020205-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 @@ -3190,9 +3190,9 @@ packages: license_family: MIT size: 54132 timestamp: 1734373971372 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20240808-pl5321h7949ede_0.conda - sha256: 4d0d69ddf9cc7d724a1ccf3a9852e44c8aea9825692582bac2c4e8d21ec95ccd - md5: 8247f80f3dc464d9322e85007e307fe8 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda + sha256: d789471216e7aba3c184cd054ed61ce3f6dac6f87a50ec69291b9297f8c18724 + md5: c277e0a4d549b03ac1e9d6cbbe3d017b depends: - ncurses - __glibc >=2.17,<3.0.a0 @@ -3201,12 +3201,11 @@ packages: arch: x86_64 platform: linux license: BSD-2-Clause - license_family: BSD - size: 134657 - timestamp: 1736191912705 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20240808-pl5321h976ea20_0.conda - sha256: 031daea98cf278f858b7957ad5dc475f1b5673cd5e718850529401ced64cef2c - md5: 0be40129d3dd1a152fff29a85f0785d0 + size: 134676 + timestamp: 1738479519902 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20250104-pl5321h976ea20_0.conda + sha256: c0b27546aa3a23d47919226b3a1635fccdb4f24b94e72e206a751b33f46fd8d6 + md5: fb640d776fc92b682a14e001980825b1 depends: - ncurses - libgcc >=13 @@ -3214,12 +3213,11 @@ packages: arch: aarch64 platform: linux license: BSD-2-Clause - license_family: BSD - size: 148120 - timestamp: 1736192137151 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20240808-pl5321hafb1f1b_0.conda - sha256: fb934d7a03279ec8eae4bf1913ac9058fcf6fed35290d8ffa6e04157f396a3b1 - md5: af89aa84ffb5ee551ce0c137b951a3b5 + size: 148125 + timestamp: 1738479808948 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda + sha256: 66aa216a403de0bb0c1340a88d1a06adaff66bae2cfd196731aa24db9859d631 + md5: 44083d2d2c2025afca315c7a172eab2b depends: - ncurses - __osx >=11.0 @@ -3227,9 +3225,8 @@ packages: arch: arm64 platform: osx license: BSD-2-Clause - license_family: BSD - size: 107634 - timestamp: 1736192034117 + size: 107691 + timestamp: 1738479560845 - conda: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda sha256: 1cd6048169fa0395af74ed5d8f1716e22c19a81a8a36f934c110ca3ad4dd27b4 md5: 172bf1cd1ff8629f2b1179945ed45055 @@ -4868,47 +4865,48 @@ packages: license_family: BSD size: 24048 timestamp: 1733219945697 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025013105-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020205-release.conda noarch: python - sha256: 1b8fcd33ceff5e6e87603d1de72c12493fe20e4f5204bc3d061a7e2b8ab33e84 - md5: 74268fafa5367b803cb82c74751fb0f0 + sha256: cba426880b6c5f6e60a9743e30fa8af9fb4a83455d09eb0eb2f20d98a9441b3b + md5: 18aab6d4943b48a5623561d11171fbd1 depends: - - max-core ==25.1.0.dev2025013105 release - - max-python >=25.1.0.dev2025013105,<26.0a0 - - mojo-jupyter ==25.1.0.dev2025013105 release - - mblack ==25.1.0.dev2025013105 release + - max-core ==25.1.0.dev2025020205 release + - max-python >=25.1.0.dev2025020205,<26.0a0 + - mojo-jupyter ==25.1.0.dev2025020205 release + - mblack ==25.1.0.dev2025020205 release license: LicenseRef-Modular-Proprietary - size: 9918 - timestamp: 1738300734602 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025013105-release.conda - sha256: 1ac416f06cc0adad41d5ca07d55c0e146073c2971ba30696ce561fd7af5afb1a - md5: ddc94cd4ca461791a9e3ae7a571e78ed + size: 9921 + timestamp: 1738473487228 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025020205-release.conda + sha256: 10e99aec52a9fa2e8fe67fda4f5e01e134a9c697d62d25255d4bb40fca19f85d + md5: 6d2162cd5f992294f5847c835bc894a4 depends: - - mblack ==25.1.0.dev2025013105 release + - mblack ==25.1.0.dev2025020205 release license: LicenseRef-Modular-Proprietary - size: 243598857 - timestamp: 1738300650444 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025013105-release.conda - sha256: faee2aee06a50c1ca71fc7df91564dafe97986a71474fe0c2694b663bc7b0a1d - md5: 203e66b533a2e81c659276ce2a211b6b + size: 243782696 + timestamp: 1738473498297 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025020205-release.conda + sha256: 2c6b44893e750a6d21a47c281bd3555a6ec3ee7cc66afe07de7a50521e43b98d + md5: 39660fe658e7877715f12da0ad8c60a5 depends: - - mblack ==25.1.0.dev2025013105 release + - mblack ==25.1.0.dev2025020205 release license: LicenseRef-Modular-Proprietary - size: 246147380 - timestamp: 1738300734602 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025013105-release.conda - sha256: 12c6501ffb4e951a4e583ef694529e5621ee4c9d06554b0db464de1a37552974 - md5: 5663c30c6ab3e0a29c0fdb08f5634a68 + size: 246300496 + timestamp: 1738473487228 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025020205-release.conda + sha256: 02fbc22b5f121fe292edc0997bfdfa303ec6bfb5d6ea8545acb1dcec03719091 + md5: 5343afd23543fc39a5d619bcce50bd32 depends: - - mblack ==25.1.0.dev2025013105 release + - mblack ==25.1.0.dev2025020205 release license: LicenseRef-Modular-Proprietary - size: 209002959 - timestamp: 1738349723783 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025013105-3.12release.conda - sha256: d08de32fd4aa12b4593146fc6f268a105b264e279c3a75009870e8d310778ea6 - md5: 27c0957cae6a8620faf67beb5f320aa4 + size: 209133254 + timestamp: 1738476199729 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025020205-release.conda + noarch: python + sha256: b1e33fd7cd3547ca3e54c22f1ad5635f7ea73c3fb4edd4d8aa46fd1eb9514c10 + md5: 965d9d920d9e367d20c6abdac59dd134 depends: - - max-core ==25.1.0.dev2025013105 release + - max-core ==25.1.0.dev2025020205 release - python - fastapi - httpx @@ -4927,15 +4925,15 @@ packages: - transformers - typing_extensions - uvicorn - - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 120809611 - timestamp: 1738300650444 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025013105-3.12release.conda - sha256: 55f72914a83403fac6e20372314774856b769c67f59791a217593be0132e0433 - md5: 1467c9c730b2fba872caba9c325d3a93 + size: 120415742 + timestamp: 1738473498298 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025020205-release.conda + noarch: python + sha256: c94728b5100f37256699ae2397ab9ec45092b1eee9524d2bcb7faf0d65de4beb + md5: 5a82778a4ee4be515783c64d33019f9b depends: - - max-core ==25.1.0.dev2025013105 release + - max-core ==25.1.0.dev2025020205 release - python - fastapi - httpx @@ -4954,15 +4952,15 @@ packages: - transformers - typing_extensions - uvicorn - - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 123341772 - timestamp: 1738300734603 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025013105-3.12release.conda - sha256: 880116fc694ec36b549849a351f70e00f092e9de19a17862f76184672ae2bc83 - md5: 8493ea4815ffa8ae223182f94a7a6ecc + size: 123027690 + timestamp: 1738473487228 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025020205-release.conda + noarch: python + sha256: 35fae7f5dda50acf55557a7cf8220434b197beae9c016370f430ec666d38e443 + md5: 1e1911e6b3f2af24fbe9dd920e3ce7e3 depends: - - max-core ==25.1.0.dev2025013105 release + - max-core ==25.1.0.dev2025020205 release - python - fastapi - httpx @@ -4981,14 +4979,13 @@ packages: - transformers - typing_extensions - uvicorn - - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 108536428 - timestamp: 1738349723783 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025013105-release.conda + size: 108138052 + timestamp: 1738476199729 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020205-release.conda noarch: python - sha256: 0c8bbcd2d1133b99b54ebff3c8f5461c025c9de38bd8b6a65b5dc01f285dfa22 - md5: 01c6b9f78100a28719df93826b30be0d + sha256: 70ae00ae631ea771af53ac1c1f9882982470255d361bf5578a0602d768972d26 + md5: ba967e4130dc9a10186de20c6883aae0 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -4996,10 +4993,11 @@ packages: - packaging >=22.0 - pathspec >=0.9.0 - platformdirs >=2 + - typing_extensions >=v4.12.2 - python license: MIT - size: 130813 - timestamp: 1738300734602 + size: 130823 + timestamp: 1738473487228 - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda sha256: 78c1bbe1723449c52b7a9df1af2ee5f005209f67e40b6e1d3c7619127c43b1c7 md5: 592132998493b3ff25fd7479396e8351 @@ -5009,18 +5007,18 @@ packages: license_family: MIT size: 14465 timestamp: 1733255681319 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025013105-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020205-release.conda noarch: python - sha256: 122b3ad0404caebf7c5271d75ae5504f228795f529b98be2011d1a1cdc71f93d - md5: f218b84b9f1baa40269eaa760534be98 + sha256: c70af4ebd29c7c4e445bdf37f592ea39dec3090c59cdd4c96f8eec1e0a6fcba8 + md5: 40b22aabe3af350b240167b503c4c48e depends: - - max-core ==25.1.0.dev2025013105 release + - max-core ==25.1.0.dev2025020205 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary size: 22925 - timestamp: 1738300734602 + timestamp: 1738473487228 - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py312h178313f_2.conda sha256: b05bc8252a6e957bf4a776ed5e0e61d1ba88cdc46ccb55890c72cc58b10371f4 md5: 5b5e3267d915a107eca793d52e1b780a diff --git a/magic.lock b/magic.lock index 17811730d2..515b706129 100644 --- a/magic.lock +++ b/magic.lock @@ -89,7 +89,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libcrc32c-1.1.2-h9c3ff4c_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.11.1-h332b0f4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.23-h4ddbbb0_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20240808-pl5321h7949ede_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libevent-2.1.12-hf998b51_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda @@ -134,12 +134,12 @@ 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-25.1.0.dev2025013105-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025013105-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025013105-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025013105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020205-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025020205-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025020205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020205-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-25.1.0.dev2025013105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020205-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 @@ -313,7 +313,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcrc32c-1.1.2-h01db608_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcurl-8.11.1-h6702fde_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libdeflate-1.23-h5e3c512_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20240808-pl5321h976ea20_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20250104-pl5321h976ea20_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libev-4.33-h31becfc_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libevent-2.1.12-h4ba1bb4_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.6.4-h5ad3122_0.conda @@ -358,12 +358,12 @@ 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-25.1.0.dev2025013105-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025013105-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025013105-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025013105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020205-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025020205-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025020205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020205-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-25.1.0.dev2025013105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020205-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 @@ -535,7 +535,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.11.1-h73640d1_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.23-hec38601_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20240808-pl5321hafb1f1b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libev-4.33-h93a5062_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libevent-2.1.12-h2757513_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.4-h286801f_0.conda @@ -573,12 +573,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-25.1.0.dev2025013105-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025013105-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025013105-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025013105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020205-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025020205-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025020205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020205-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-25.1.0.dev2025013105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020205-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 @@ -3193,9 +3193,9 @@ packages: license_family: MIT size: 54132 timestamp: 1734373971372 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20240808-pl5321h7949ede_0.conda - sha256: 4d0d69ddf9cc7d724a1ccf3a9852e44c8aea9825692582bac2c4e8d21ec95ccd - md5: 8247f80f3dc464d9322e85007e307fe8 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda + sha256: d789471216e7aba3c184cd054ed61ce3f6dac6f87a50ec69291b9297f8c18724 + md5: c277e0a4d549b03ac1e9d6cbbe3d017b depends: - ncurses - __glibc >=2.17,<3.0.a0 @@ -3204,12 +3204,11 @@ packages: arch: x86_64 platform: linux license: BSD-2-Clause - license_family: BSD - size: 134657 - timestamp: 1736191912705 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20240808-pl5321h976ea20_0.conda - sha256: 031daea98cf278f858b7957ad5dc475f1b5673cd5e718850529401ced64cef2c - md5: 0be40129d3dd1a152fff29a85f0785d0 + size: 134676 + timestamp: 1738479519902 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20250104-pl5321h976ea20_0.conda + sha256: c0b27546aa3a23d47919226b3a1635fccdb4f24b94e72e206a751b33f46fd8d6 + md5: fb640d776fc92b682a14e001980825b1 depends: - ncurses - libgcc >=13 @@ -3217,12 +3216,11 @@ packages: arch: aarch64 platform: linux license: BSD-2-Clause - license_family: BSD - size: 148120 - timestamp: 1736192137151 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20240808-pl5321hafb1f1b_0.conda - sha256: fb934d7a03279ec8eae4bf1913ac9058fcf6fed35290d8ffa6e04157f396a3b1 - md5: af89aa84ffb5ee551ce0c137b951a3b5 + size: 148125 + timestamp: 1738479808948 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda + sha256: 66aa216a403de0bb0c1340a88d1a06adaff66bae2cfd196731aa24db9859d631 + md5: 44083d2d2c2025afca315c7a172eab2b depends: - ncurses - __osx >=11.0 @@ -3230,9 +3228,8 @@ packages: arch: arm64 platform: osx license: BSD-2-Clause - license_family: BSD - size: 107634 - timestamp: 1736192034117 + size: 107691 + timestamp: 1738479560845 - conda: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda sha256: 1cd6048169fa0395af74ed5d8f1716e22c19a81a8a36f934c110ca3ad4dd27b4 md5: 172bf1cd1ff8629f2b1179945ed45055 @@ -4880,47 +4877,48 @@ packages: license_family: BSD size: 24048 timestamp: 1733219945697 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025013105-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020205-release.conda noarch: python - sha256: 1b8fcd33ceff5e6e87603d1de72c12493fe20e4f5204bc3d061a7e2b8ab33e84 - md5: 74268fafa5367b803cb82c74751fb0f0 + sha256: cba426880b6c5f6e60a9743e30fa8af9fb4a83455d09eb0eb2f20d98a9441b3b + md5: 18aab6d4943b48a5623561d11171fbd1 depends: - - max-core ==25.1.0.dev2025013105 release - - max-python >=25.1.0.dev2025013105,<26.0a0 - - mojo-jupyter ==25.1.0.dev2025013105 release - - mblack ==25.1.0.dev2025013105 release + - max-core ==25.1.0.dev2025020205 release + - max-python >=25.1.0.dev2025020205,<26.0a0 + - mojo-jupyter ==25.1.0.dev2025020205 release + - mblack ==25.1.0.dev2025020205 release license: LicenseRef-Modular-Proprietary - size: 9918 - timestamp: 1738300734602 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025013105-release.conda - sha256: 1ac416f06cc0adad41d5ca07d55c0e146073c2971ba30696ce561fd7af5afb1a - md5: ddc94cd4ca461791a9e3ae7a571e78ed + size: 9921 + timestamp: 1738473487228 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025020205-release.conda + sha256: 10e99aec52a9fa2e8fe67fda4f5e01e134a9c697d62d25255d4bb40fca19f85d + md5: 6d2162cd5f992294f5847c835bc894a4 depends: - - mblack ==25.1.0.dev2025013105 release + - mblack ==25.1.0.dev2025020205 release license: LicenseRef-Modular-Proprietary - size: 243598857 - timestamp: 1738300650444 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025013105-release.conda - sha256: faee2aee06a50c1ca71fc7df91564dafe97986a71474fe0c2694b663bc7b0a1d - md5: 203e66b533a2e81c659276ce2a211b6b + size: 243782696 + timestamp: 1738473498297 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025020205-release.conda + sha256: 2c6b44893e750a6d21a47c281bd3555a6ec3ee7cc66afe07de7a50521e43b98d + md5: 39660fe658e7877715f12da0ad8c60a5 depends: - - mblack ==25.1.0.dev2025013105 release + - mblack ==25.1.0.dev2025020205 release license: LicenseRef-Modular-Proprietary - size: 246147380 - timestamp: 1738300734602 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025013105-release.conda - sha256: 12c6501ffb4e951a4e583ef694529e5621ee4c9d06554b0db464de1a37552974 - md5: 5663c30c6ab3e0a29c0fdb08f5634a68 + size: 246300496 + timestamp: 1738473487228 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025020205-release.conda + sha256: 02fbc22b5f121fe292edc0997bfdfa303ec6bfb5d6ea8545acb1dcec03719091 + md5: 5343afd23543fc39a5d619bcce50bd32 depends: - - mblack ==25.1.0.dev2025013105 release + - mblack ==25.1.0.dev2025020205 release license: LicenseRef-Modular-Proprietary - size: 209002959 - timestamp: 1738349723783 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025013105-3.12release.conda - sha256: d08de32fd4aa12b4593146fc6f268a105b264e279c3a75009870e8d310778ea6 - md5: 27c0957cae6a8620faf67beb5f320aa4 + size: 209133254 + timestamp: 1738476199729 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025020205-release.conda + noarch: python + sha256: b1e33fd7cd3547ca3e54c22f1ad5635f7ea73c3fb4edd4d8aa46fd1eb9514c10 + md5: 965d9d920d9e367d20c6abdac59dd134 depends: - - max-core ==25.1.0.dev2025013105 release + - max-core ==25.1.0.dev2025020205 release - python - fastapi - httpx @@ -4939,15 +4937,15 @@ packages: - transformers - typing_extensions - uvicorn - - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 120809611 - timestamp: 1738300650444 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025013105-3.12release.conda - sha256: 55f72914a83403fac6e20372314774856b769c67f59791a217593be0132e0433 - md5: 1467c9c730b2fba872caba9c325d3a93 + size: 120415742 + timestamp: 1738473498298 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025020205-release.conda + noarch: python + sha256: c94728b5100f37256699ae2397ab9ec45092b1eee9524d2bcb7faf0d65de4beb + md5: 5a82778a4ee4be515783c64d33019f9b depends: - - max-core ==25.1.0.dev2025013105 release + - max-core ==25.1.0.dev2025020205 release - python - fastapi - httpx @@ -4966,15 +4964,15 @@ packages: - transformers - typing_extensions - uvicorn - - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 123341772 - timestamp: 1738300734603 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025013105-3.12release.conda - sha256: 880116fc694ec36b549849a351f70e00f092e9de19a17862f76184672ae2bc83 - md5: 8493ea4815ffa8ae223182f94a7a6ecc + size: 123027690 + timestamp: 1738473487228 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025020205-release.conda + noarch: python + sha256: 35fae7f5dda50acf55557a7cf8220434b197beae9c016370f430ec666d38e443 + md5: 1e1911e6b3f2af24fbe9dd920e3ce7e3 depends: - - max-core ==25.1.0.dev2025013105 release + - max-core ==25.1.0.dev2025020205 release - python - fastapi - httpx @@ -4993,14 +4991,13 @@ packages: - transformers - typing_extensions - uvicorn - - python_abi 3.12.* *_cp312 license: LicenseRef-Modular-Proprietary - size: 108536428 - timestamp: 1738349723783 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025013105-release.conda + size: 108138052 + timestamp: 1738476199729 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020205-release.conda noarch: python - sha256: 0c8bbcd2d1133b99b54ebff3c8f5461c025c9de38bd8b6a65b5dc01f285dfa22 - md5: 01c6b9f78100a28719df93826b30be0d + sha256: 70ae00ae631ea771af53ac1c1f9882982470255d361bf5578a0602d768972d26 + md5: ba967e4130dc9a10186de20c6883aae0 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -5008,10 +5005,11 @@ packages: - packaging >=22.0 - pathspec >=0.9.0 - platformdirs >=2 + - typing_extensions >=v4.12.2 - python license: MIT - size: 130813 - timestamp: 1738300734602 + size: 130823 + timestamp: 1738473487228 - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda sha256: 78c1bbe1723449c52b7a9df1af2ee5f005209f67e40b6e1d3c7619127c43b1c7 md5: 592132998493b3ff25fd7479396e8351 @@ -5021,18 +5019,18 @@ packages: license_family: MIT size: 14465 timestamp: 1733255681319 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025013105-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020205-release.conda noarch: python - sha256: 122b3ad0404caebf7c5271d75ae5504f228795f529b98be2011d1a1cdc71f93d - md5: f218b84b9f1baa40269eaa760534be98 + sha256: c70af4ebd29c7c4e445bdf37f592ea39dec3090c59cdd4c96f8eec1e0a6fcba8 + md5: 40b22aabe3af350b240167b503c4c48e depends: - - max-core ==25.1.0.dev2025013105 release + - max-core ==25.1.0.dev2025020205 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary size: 22925 - timestamp: 1738300734602 + timestamp: 1738473487228 - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py312h178313f_2.conda sha256: b05bc8252a6e957bf4a776ed5e0e61d1ba88cdc46ccb55890c72cc58b10371f4 md5: 5b5e3267d915a107eca793d52e1b780a From 637ff9c0e685ba61b86abe78dbb883ad43a27912 Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Sat, 1 Feb 2025 23:35:24 -0800 Subject: [PATCH 335/509] [mojo-stdlib] Migrate off old self-init initializer syntax. This adopts modern initializer syntax, removing uses of the old thing that only worked with register passable types. MODULAR_ORIG_COMMIT_REV_ID: c92d14e24e46dd0c7b51d75a4905a363929898fb --- stdlib/src/python/_bindings.mojo | 14 +++++++------- stdlib/src/python/_cpython.mojo | 14 +++++++------- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/stdlib/src/python/_bindings.mojo b/stdlib/src/python/_bindings.mojo index 19f3b03fb3..c556659e94 100644 --- a/stdlib/src/python/_bindings.mojo +++ b/stdlib/src/python/_bindings.mojo @@ -107,15 +107,15 @@ fn python_type_object[ # Zeroed item terminator slots.append(PyType_Slot.null()) - var type_spec = PyType_Spec { + var type_spec = PyType_Spec( # FIXME(MOCO-1306): This should be `T.__name__`. - name: type_name.unsafe_cstr_ptr(), - basicsize: sizeof[PyMojoObject[T]](), - itemsize: 0, - flags: Py_TPFLAGS_DEFAULT, + type_name.unsafe_cstr_ptr(), + sizeof[PyMojoObject[T]](), + 0, + Py_TPFLAGS_DEFAULT, # Note: This pointer is only "read-only" by PyType_FromSpec. - slots: slots.unsafe_ptr(), - } + slots.unsafe_ptr(), + ) # Construct a Python 'type' object from our type spec. var type_obj = cpython.PyType_FromSpec(UnsafePointer.address_of(type_spec)) diff --git a/stdlib/src/python/_cpython.mojo b/stdlib/src/python/_cpython.mojo index 715f156c9a..187354298a 100644 --- a/stdlib/src/python/_cpython.mojo +++ b/stdlib/src/python/_cpython.mojo @@ -449,7 +449,7 @@ struct PyType_Slot: @staticmethod fn null() -> Self: - return PyType_Slot {slot: 0, pfunc: OpaquePointer()} + return PyType_Slot(0, OpaquePointer()) @value @@ -1055,12 +1055,12 @@ struct CPython: ) _ = v - return PyKeysValuePair { - key: key, - value: value, - position: position.take_pointee(), - success: result == 1, - } + return PyKeysValuePair( + key, + value, + position.take_pointee(), + result == 1, + ) # ===-------------------------------------------------------------------===# # Python Module operations From e064839300c11c7c6ce23e5afd5075cacc2254b1 Mon Sep 17 00:00:00 2001 From: modularbot Date: Tue, 4 Feb 2025 06:46:17 +0000 Subject: [PATCH 336/509] Update lockfiles to point to latest nightly version: 25.1.0.dev2025020316 --- examples/life/magic.lock | 245 +++++++++++++++++----------------- examples/magic.lock | 221 +++++++++++++++--------------- examples/operators/magic.lock | 221 +++++++++++++++--------------- examples/testing/magic.lock | 221 +++++++++++++++--------------- magic.lock | 221 +++++++++++++++--------------- 5 files changed, 557 insertions(+), 572 deletions(-) diff --git a/examples/life/magic.lock b/examples/life/magic.lock index a74da0c302..d4aa9219b5 100644 --- a/examples/life/magic.lock +++ b/examples/life/magic.lock @@ -69,7 +69,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2 - 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-py312h178313f_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.12.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2025.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gettext-0.22.5-he02047a_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gettext-tools-0.22.5-he02047a_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gflags-2.2.2-h5888daf_1005.conda @@ -77,7 +77,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.13-h59595ed_1003.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-10.2.0-h4bba637_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda @@ -138,7 +138,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-hd590300_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-28_h7ac8fdf_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.3-hb9d3cd8_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libmad-0.15.1b-h0b41bf4_1001.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda @@ -172,12 +172,12 @@ 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-25.1.0.dev2025020205-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025020205-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025020205-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020316-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025020316-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025020316-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020316-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-25.1.0.dev2025020205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020316-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_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.15-py312h98912ed_1.conda @@ -273,7 +273,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.17.2-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libice-1.1.2-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libsm-1.2.5-he73a12e_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libx11-1.8.10-h4f16b4b_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libx11-1.8.11-h4f16b4b_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxext-1.3.6-hb9d3cd8_0.conda @@ -350,7 +350,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2 - 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-py312hcc812fe_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.12.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2025.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gettext-0.22.5-h0a1ffab_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gettext-tools-0.22.5-h0a1ffab_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gflags-2.2.2-h5ad3122_1005.conda @@ -358,7 +358,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/graphite2-1.3.13-h2f0025b_1003.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/harfbuzz-10.2.0-h785c1aa_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda @@ -419,7 +419,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libiconv-1.17-h31becfc_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libjpeg-turbo-3.0.0-h31becfc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-28_h411afd4_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.3-h86ecc28_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.4-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libmad-0.15.1b-hb4cce97_1001.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnghttp2-1.64.0-hc8609a4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda @@ -453,12 +453,12 @@ 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-25.1.0.dev2025020205-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025020205-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025020205-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020316-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025020316-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025020316-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020316-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-25.1.0.dev2025020205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020316-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_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.15-py312hdd3e373_1.conda @@ -554,7 +554,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/wrapt-1.17.2-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libice-1.1.2-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libsm-1.2.5-h0808dbd_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libx11-1.8.10-hca56bd8_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libx11-1.8.11-hca56bd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxau-1.0.12-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxdmcp-1.1.5-h57736b2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxext-1.3.6-h57736b2_0.conda @@ -626,7 +626,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2 - 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-py312h998013c_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.12.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2025.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gettext-0.22.5-h8414b35_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gettext-tools-0.22.5-h8414b35_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gflags-2.2.2-hf9b8971_1005.conda @@ -634,7 +634,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/graphite2-1.3.13-hebf3989_1003.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/harfbuzz-10.2.0-ha0dd535_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda @@ -688,7 +688,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libintl-devel-0.22.5-h8414b35_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.0.0-hb547adb_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-28_hc9a63f6_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.3-h39f12f2_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.4-h39f12f2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libmad-0.15.1b-h1a8c8d9_1001.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.64.0-h6d7220d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libogg-1.3.5-h99b78c6_0.conda @@ -717,12 +717,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-25.1.0.dev2025020205-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025020205-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025020205-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020316-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025020316-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025020316-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020316-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-25.1.0.dev2025020205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020316-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 @@ -2613,15 +2613,15 @@ packages: license_family: APACHE size: 57256 timestamp: 1737645503377 -- conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.12.0-pyhd8ed1ab_0.conda - sha256: 3320970c4604989eadf908397a9475f9e6a96a773c185915111399cbfbe47817 - md5: e041ad4c43ab5e10c74587f95378ebc7 +- conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2025.2.0-pyhd8ed1ab_0.conda + sha256: 7433b8469074985b651693778ec6f03d2a23fad9919a515e3b8545996b5e721a + md5: d9ea16b71920b03beafc17fcca16df90 depends: - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 137756 - timestamp: 1734650349242 + size: 138186 + timestamp: 1738501352608 - conda: https://conda.anaconda.org/conda-forge/linux-64/gettext-0.22.5-he02047a_3.conda sha256: c3d9a453f523acbf2b3e1c82a42edfc7c7111b4686a2180ab48cb9b51a274218 md5: c7f243bbaea97cd6ea1edd693270100e @@ -2841,17 +2841,17 @@ packages: license_family: MIT size: 51846 timestamp: 1733327599467 -- conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_1.conda - sha256: 843ddad410c370672a8250470697027618f104153612439076d4d7b91eeb7b5c - md5: 825927dc7b0f287ef8d4d0011bb113b1 +- conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda + sha256: 0aa1cdc67a9fe75ea95b5644b734a756200d6ec9d0dff66530aec3d1c1e9df75 + md5: b4754fb1bdcb70c8fd54f918301582c6 depends: - - hpack >=4.0,<5 - - hyperframe >=6.0,<7 + - hpack >=4.1,<5 + - hyperframe >=6.1,<7 - python >=3.9 license: MIT license_family: MIT - size: 52000 - timestamp: 1733298867359 + size: 53888 + timestamp: 1738578623567 - conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-10.2.0-h4bba637_0.conda sha256: 94426eca8c60b43f57beb3338d3298dda09452c7a42314bbbb4ebfa552542a84 md5: 9e38e86167e8b1ea0094747d12944ce4 @@ -4167,6 +4167,7 @@ packages: arch: x86_64 platform: linux license: BSD-2-Clause + license_family: BSD size: 134676 timestamp: 1738479519902 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20250104-pl5321h976ea20_0.conda @@ -4179,6 +4180,7 @@ packages: arch: aarch64 platform: linux license: BSD-2-Clause + license_family: BSD size: 148125 timestamp: 1738479808948 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda @@ -4191,6 +4193,7 @@ packages: arch: arm64 platform: osx license: BSD-2-Clause + license_family: BSD size: 107691 timestamp: 1738479560845 - conda: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda @@ -5010,43 +5013,37 @@ packages: license_family: BSD size: 16793 timestamp: 1738114407021 -- conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.3-hb9d3cd8_1.conda - sha256: e6e425252f3839e2756e4af1ea2074dffd3396c161bf460629f9dfd6a65f15c6 - md5: 2ecf2f1c7e4e21fcfe6423a51a992d84 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda + sha256: cad52e10319ca4585bc37f0bc7cce99ec7c15dc9168e42ccb96b741b0a27db3f + md5: 42d5b6a0f30d3c10cd88cb8584fda1cb depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - constrains: - - xz ==5.6.3=*_1 arch: x86_64 platform: linux license: 0BSD - size: 111132 - timestamp: 1733407410083 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.3-h86ecc28_1.conda - sha256: d1cce0b7d62d1e54e2164d3e0667ee808efc6c3870256e5b47a150cd0bf46824 - md5: eb08b903681f9f2432c320e8ed626723 + size: 111357 + timestamp: 1738525339684 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.4-h86ecc28_0.conda + sha256: 96413664f0fade54a4931940d18749cfc8e6308349dbb0cb83adb2394ca1f730 + md5: b88244e0a115cc34f7fbca9b11248e76 depends: - libgcc >=13 - constrains: - - xz ==5.6.3=*_1 arch: aarch64 platform: linux license: 0BSD - size: 124138 - timestamp: 1733409137214 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.3-h39f12f2_1.conda - sha256: d863b8257406918ffdc50ae65502f2b2d6cede29404d09a094f59509d6a0aaf1 - md5: b2553114a7f5e20ccd02378a77d836aa + size: 124197 + timestamp: 1738528201520 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.4-h39f12f2_0.conda + sha256: 560c59d3834cc652a84fb45531bd335ad06e271b34ebc216e380a89798fe8e2c + md5: e3fd1f8320a100f2b210e690a57cd615 depends: - __osx >=11.0 - constrains: - - xz ==5.6.3=*_1 arch: arm64 platform: osx license: 0BSD - size: 99129 - timestamp: 1733407496073 + size: 98945 + timestamp: 1738525462560 - conda: https://conda.anaconda.org/conda-forge/linux-64/libmad-0.15.1b-h0b41bf4_1001.conda sha256: 9e94cec54c4baadaa652c761179b8d32771fe7fa55faf6c78c2e35f942367f74 md5: dc5cc4700f02ffeecc48253c9f29025b @@ -6287,48 +6284,48 @@ packages: license_family: BSD size: 24048 timestamp: 1733219945697 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020205-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020316-release.conda noarch: python - sha256: cba426880b6c5f6e60a9743e30fa8af9fb4a83455d09eb0eb2f20d98a9441b3b - md5: 18aab6d4943b48a5623561d11171fbd1 + sha256: fa04aab936b2812928f5e277bcf9b99c39ecb469b407da4ef450bb9c6b2b1b09 + md5: cc06b062838bb42ef03d615dc91f928f depends: - - max-core ==25.1.0.dev2025020205 release - - max-python >=25.1.0.dev2025020205,<26.0a0 - - mojo-jupyter ==25.1.0.dev2025020205 release - - mblack ==25.1.0.dev2025020205 release + - max-core ==25.1.0.dev2025020316 release + - max-python >=25.1.0.dev2025020316,<26.0a0 + - mojo-jupyter ==25.1.0.dev2025020316 release + - mblack ==25.1.0.dev2025020316 release license: LicenseRef-Modular-Proprietary size: 9921 - timestamp: 1738473487228 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025020205-release.conda - sha256: 10e99aec52a9fa2e8fe67fda4f5e01e134a9c697d62d25255d4bb40fca19f85d - md5: 6d2162cd5f992294f5847c835bc894a4 + timestamp: 1738599319244 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025020316-release.conda + sha256: 2accd020d7672ee37ca6b1efcf3a7d473d1879a8950e2aca54b0a7c336aaecb3 + md5: b643efbec2de4c1d033737261171fb73 depends: - - mblack ==25.1.0.dev2025020205 release + - mblack ==25.1.0.dev2025020316 release license: LicenseRef-Modular-Proprietary - size: 243782696 - timestamp: 1738473498297 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025020205-release.conda - sha256: 2c6b44893e750a6d21a47c281bd3555a6ec3ee7cc66afe07de7a50521e43b98d - md5: 39660fe658e7877715f12da0ad8c60a5 + size: 244981800 + timestamp: 1738599374541 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025020316-release.conda + sha256: 86ba07335c645a2a93e629da708ec8b166bb78a0861f8f5c25f251483a420e3b + md5: 4e72006884a03c55ef53d758d1cf2c42 depends: - - mblack ==25.1.0.dev2025020205 release + - mblack ==25.1.0.dev2025020316 release license: LicenseRef-Modular-Proprietary - size: 246300496 - timestamp: 1738473487228 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025020205-release.conda - sha256: 02fbc22b5f121fe292edc0997bfdfa303ec6bfb5d6ea8545acb1dcec03719091 - md5: 5343afd23543fc39a5d619bcce50bd32 + size: 247551749 + timestamp: 1738599319244 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025020316-release.conda + sha256: d8358654224478f1366b43d9d363d8922f3927c9da29c28af2958f277fab51f0 + md5: c9a3b40307c937630ab20599bd50a2ee depends: - - mblack ==25.1.0.dev2025020205 release + - mblack ==25.1.0.dev2025020316 release license: LicenseRef-Modular-Proprietary - size: 209133254 - timestamp: 1738476199729 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025020205-release.conda + size: 209875188 + timestamp: 1738619060481 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025020316-release.conda noarch: python - sha256: b1e33fd7cd3547ca3e54c22f1ad5635f7ea73c3fb4edd4d8aa46fd1eb9514c10 - md5: 965d9d920d9e367d20c6abdac59dd134 + sha256: a063046c75f5cc0c826bca82c030dba613448e76b255103e1fc9183c0dc9aee4 + md5: f44697c7217e8c949a62919af73caafb depends: - - max-core ==25.1.0.dev2025020205 release + - max-core ==25.1.0.dev2025020316 release - python - fastapi - httpx @@ -6348,14 +6345,14 @@ packages: - typing_extensions - uvicorn license: LicenseRef-Modular-Proprietary - size: 120415742 - timestamp: 1738473498298 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025020205-release.conda + size: 120871754 + timestamp: 1738599374542 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025020316-release.conda noarch: python - sha256: c94728b5100f37256699ae2397ab9ec45092b1eee9524d2bcb7faf0d65de4beb - md5: 5a82778a4ee4be515783c64d33019f9b + sha256: fb086fa9278256d4a923bd5280b6ec2ca8b2861d34a141c1343960cbb83d2097 + md5: 1dd74954d08dcab1e1de3c6401cfa344 depends: - - max-core ==25.1.0.dev2025020205 release + - max-core ==25.1.0.dev2025020316 release - python - fastapi - httpx @@ -6375,14 +6372,14 @@ packages: - typing_extensions - uvicorn license: LicenseRef-Modular-Proprietary - size: 123027690 - timestamp: 1738473487228 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025020205-release.conda + size: 123518428 + timestamp: 1738599319244 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025020316-release.conda noarch: python - sha256: 35fae7f5dda50acf55557a7cf8220434b197beae9c016370f430ec666d38e443 - md5: 1e1911e6b3f2af24fbe9dd920e3ce7e3 + sha256: 922b3f272f8ccfcafea072a47139f599c3d911e48f026fdada57bb139d740d60 + md5: 7cf83019f7ed2ae02250f01899a1f045 depends: - - max-core ==25.1.0.dev2025020205 release + - max-core ==25.1.0.dev2025020316 release - python - fastapi - httpx @@ -6402,12 +6399,12 @@ packages: - typing_extensions - uvicorn license: LicenseRef-Modular-Proprietary - size: 108138052 - timestamp: 1738476199729 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020205-release.conda + size: 108582366 + timestamp: 1738619060481 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020316-release.conda noarch: python - sha256: 70ae00ae631ea771af53ac1c1f9882982470255d361bf5578a0602d768972d26 - md5: ba967e4130dc9a10186de20c6883aae0 + sha256: 394fafcc27e16f2ef0a98c1a07e0fec0cb7f238ff972a153ba9bc9da39772b26 + md5: 7eaf7888650b7941a1475c1f8834797a depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -6418,8 +6415,8 @@ packages: - typing_extensions >=v4.12.2 - python license: MIT - size: 130823 - timestamp: 1738473487228 + size: 130821 + timestamp: 1738599319244 - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda sha256: 78c1bbe1723449c52b7a9df1af2ee5f005209f67e40b6e1d3c7619127c43b1c7 md5: 592132998493b3ff25fd7479396e8351 @@ -6429,18 +6426,18 @@ packages: license_family: MIT size: 14465 timestamp: 1733255681319 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020205-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020316-release.conda noarch: python - sha256: c70af4ebd29c7c4e445bdf37f592ea39dec3090c59cdd4c96f8eec1e0a6fcba8 - md5: 40b22aabe3af350b240167b503c4c48e + sha256: b835fba08c1acc7bcd4ca871b98e013a1bdc72c538a3e307d75d081355c95c76 + md5: 9a263ca62e2cb9b31a0de06053f87b30 depends: - - max-core ==25.1.0.dev2025020205 release + - max-core ==25.1.0.dev2025020316 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22925 - timestamp: 1738473487228 + size: 22930 + timestamp: 1738599319244 - conda: https://conda.anaconda.org/conda-forge/linux-64/mpg123-1.32.9-hc50e24c_0.conda sha256: 39c4700fb3fbe403a77d8cc27352fa72ba744db487559d5d44bf8411bb4ea200 md5: c7f302fd11eeb0987a6a5e1f3aed6a21 @@ -9220,9 +9217,9 @@ packages: license_family: MIT size: 28061 timestamp: 1734232077988 -- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libx11-1.8.10-h4f16b4b_1.conda - sha256: f53994d54f0604df881c4e984279b3cf6a1648a22d4b2113e2c89829968784c9 - md5: 125f34a17d7b4bea418a83904ea82ea6 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libx11-1.8.11-h4f16b4b_0.conda + sha256: a0e7fca9e341dc2455b20cd320fc1655e011f7f5f28367ecf8617cccd4bb2821 + md5: b6eb6d0cb323179af168df8fe16fb0a1 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -9231,11 +9228,11 @@ packages: platform: linux license: MIT license_family: MIT - size: 837524 - timestamp: 1733324962639 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libx11-1.8.10-hca56bd8_1.conda - sha256: 5604f295906dfc496a4590e8ec19f775ccb40c5d503e6dfbac0781b5446b5391 - md5: 6e3e980940b26a060e553266ae0181a9 + size: 835157 + timestamp: 1738613163812 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libx11-1.8.11-hca56bd8_0.conda + sha256: 351ce88b3c2df30520721d45e3d32127a0f7f406be234c25a224ed46f082d2e5 + md5: b4f818a0a4e60cffe755381166c82888 depends: - libgcc >=13 - libxcb >=1.17.0,<2.0a0 @@ -9243,8 +9240,8 @@ packages: platform: linux license: MIT license_family: MIT - size: 858427 - timestamp: 1733325062374 + size: 864226 + timestamp: 1738613196126 - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-hb9d3cd8_0.conda sha256: ed10c9283974d311855ae08a16dfd7e56241fac632aec3b92e3cfe73cff31038 md5: f6ebe2cb3f82ba6c057dde5d9debe4f7 diff --git a/examples/magic.lock b/examples/magic.lock index 87654d57f6..0747fe8841 100644 --- a/examples/magic.lock +++ b/examples/magic.lock @@ -54,12 +54,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.17.0-pyhd8ed1ab_0.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-py311h2dc5d0c_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.12.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2025.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gflags-2.2.2-h5888daf_1005.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/glog-0.7.1-hbabe93e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/httptools-0.6.4-py311h9ecbd09_0.conda @@ -105,7 +105,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-hd590300_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-28_h7ac8fdf_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.3-hb9d3cd8_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.28-pthreads_h94d23a6_1.conda @@ -133,12 +133,12 @@ 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-25.1.0.dev2025020205-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025020205-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025020205-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020316-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025020316-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025020316-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020316-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-25.1.0.dev2025020205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020316-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 @@ -276,12 +276,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.17.0-pyhd8ed1ab_0.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-py311h58d527c_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.12.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2025.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gflags-2.2.2-h5ad3122_1005.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/glog-0.7.1-h468a4a4_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/httptools-0.6.4-py311ha879c10_0.conda @@ -328,7 +328,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libiconv-1.17-h31becfc_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libjpeg-turbo-3.0.0-h31becfc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-28_h411afd4_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.3-h86ecc28_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.4-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnghttp2-1.64.0-hc8609a4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.28-pthreads_h9d3fd7e_1.conda @@ -356,12 +356,12 @@ 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-25.1.0.dev2025020205-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025020205-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025020205-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020316-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025020316-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025020316-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020316-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-25.1.0.dev2025020205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020316-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 @@ -498,12 +498,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.17.0-pyhd8ed1ab_0.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-py311h4921393_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.12.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2025.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gflags-2.2.2-hf9b8971_1005.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/glog-0.7.1-heb240a5_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/httptools-0.6.4-py311h917b07b_0.conda @@ -546,7 +546,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.17-h0d3ecfb_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.0.0-hb547adb_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-28_hc9a63f6_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.3-h39f12f2_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.4-h39f12f2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.64.0-h6d7220d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.28-openmp_hf332438_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopentelemetry-cpp-1.18.0-h0c05b2d_1.conda @@ -570,12 +570,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-25.1.0.dev2025020205-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025020205-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025020205-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020316-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025020316-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025020316-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020316-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-25.1.0.dev2025020205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020316-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 @@ -2065,15 +2065,15 @@ packages: license_family: APACHE size: 56495 timestamp: 1737645461874 -- conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.12.0-pyhd8ed1ab_0.conda - sha256: 3320970c4604989eadf908397a9475f9e6a96a773c185915111399cbfbe47817 - md5: e041ad4c43ab5e10c74587f95378ebc7 +- conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2025.2.0-pyhd8ed1ab_0.conda + sha256: 7433b8469074985b651693778ec6f03d2a23fad9919a515e3b8545996b5e721a + md5: d9ea16b71920b03beafc17fcca16df90 depends: - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 137756 - timestamp: 1734650349242 + size: 138186 + timestamp: 1738501352608 - conda: https://conda.anaconda.org/conda-forge/linux-64/gflags-2.2.2-h5888daf_1005.conda sha256: 6c33bf0c4d8f418546ba9c250db4e4221040936aef8956353bc764d4877bc39a md5: d411fc29e338efb48c5fd4576d71d881 @@ -2170,17 +2170,17 @@ packages: license_family: MIT size: 51846 timestamp: 1733327599467 -- conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_1.conda - sha256: 843ddad410c370672a8250470697027618f104153612439076d4d7b91eeb7b5c - md5: 825927dc7b0f287ef8d4d0011bb113b1 +- conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda + sha256: 0aa1cdc67a9fe75ea95b5644b734a756200d6ec9d0dff66530aec3d1c1e9df75 + md5: b4754fb1bdcb70c8fd54f918301582c6 depends: - - hpack >=4.0,<5 - - hyperframe >=6.0,<7 + - hpack >=4.1,<5 + - hyperframe >=6.1,<7 - python >=3.9 license: MIT license_family: MIT - size: 52000 - timestamp: 1733298867359 + size: 53888 + timestamp: 1738578623567 - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda sha256: 6ad78a180576c706aabeb5b4c8ceb97c0cb25f1e112d76495bff23e3779948ba md5: 0a802cb9888dd14eeefc611f05c40b6e @@ -3201,6 +3201,7 @@ packages: arch: x86_64 platform: linux license: BSD-2-Clause + license_family: BSD size: 134676 timestamp: 1738479519902 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20250104-pl5321h976ea20_0.conda @@ -3213,6 +3214,7 @@ packages: arch: aarch64 platform: linux license: BSD-2-Clause + license_family: BSD size: 148125 timestamp: 1738479808948 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda @@ -3225,6 +3227,7 @@ packages: arch: arm64 platform: osx license: BSD-2-Clause + license_family: BSD size: 107691 timestamp: 1738479560845 - conda: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda @@ -3804,43 +3807,37 @@ packages: license_family: BSD size: 16793 timestamp: 1738114407021 -- conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.3-hb9d3cd8_1.conda - sha256: e6e425252f3839e2756e4af1ea2074dffd3396c161bf460629f9dfd6a65f15c6 - md5: 2ecf2f1c7e4e21fcfe6423a51a992d84 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda + sha256: cad52e10319ca4585bc37f0bc7cce99ec7c15dc9168e42ccb96b741b0a27db3f + md5: 42d5b6a0f30d3c10cd88cb8584fda1cb depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - constrains: - - xz ==5.6.3=*_1 arch: x86_64 platform: linux license: 0BSD - size: 111132 - timestamp: 1733407410083 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.3-h86ecc28_1.conda - sha256: d1cce0b7d62d1e54e2164d3e0667ee808efc6c3870256e5b47a150cd0bf46824 - md5: eb08b903681f9f2432c320e8ed626723 + size: 111357 + timestamp: 1738525339684 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.4-h86ecc28_0.conda + sha256: 96413664f0fade54a4931940d18749cfc8e6308349dbb0cb83adb2394ca1f730 + md5: b88244e0a115cc34f7fbca9b11248e76 depends: - libgcc >=13 - constrains: - - xz ==5.6.3=*_1 arch: aarch64 platform: linux license: 0BSD - size: 124138 - timestamp: 1733409137214 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.3-h39f12f2_1.conda - sha256: d863b8257406918ffdc50ae65502f2b2d6cede29404d09a094f59509d6a0aaf1 - md5: b2553114a7f5e20ccd02378a77d836aa + size: 124197 + timestamp: 1738528201520 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.4-h39f12f2_0.conda + sha256: 560c59d3834cc652a84fb45531bd335ad06e271b34ebc216e380a89798fe8e2c + md5: e3fd1f8320a100f2b210e690a57cd615 depends: - __osx >=11.0 - constrains: - - xz ==5.6.3=*_1 arch: arm64 platform: osx license: 0BSD - size: 99129 - timestamp: 1733407496073 + size: 98945 + timestamp: 1738525462560 - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda sha256: b0f2b3695b13a989f75d8fd7f4778e1c7aabe3b36db83f0fe80b2cd812c0e975 md5: 19e57602824042dfd0446292ef90488b @@ -4865,48 +4862,48 @@ packages: license_family: BSD size: 24976 timestamp: 1733219849253 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020205-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020316-release.conda noarch: python - sha256: cba426880b6c5f6e60a9743e30fa8af9fb4a83455d09eb0eb2f20d98a9441b3b - md5: 18aab6d4943b48a5623561d11171fbd1 + sha256: fa04aab936b2812928f5e277bcf9b99c39ecb469b407da4ef450bb9c6b2b1b09 + md5: cc06b062838bb42ef03d615dc91f928f depends: - - max-core ==25.1.0.dev2025020205 release - - max-python >=25.1.0.dev2025020205,<26.0a0 - - mojo-jupyter ==25.1.0.dev2025020205 release - - mblack ==25.1.0.dev2025020205 release + - max-core ==25.1.0.dev2025020316 release + - max-python >=25.1.0.dev2025020316,<26.0a0 + - mojo-jupyter ==25.1.0.dev2025020316 release + - mblack ==25.1.0.dev2025020316 release license: LicenseRef-Modular-Proprietary size: 9921 - timestamp: 1738473487228 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025020205-release.conda - sha256: 10e99aec52a9fa2e8fe67fda4f5e01e134a9c697d62d25255d4bb40fca19f85d - md5: 6d2162cd5f992294f5847c835bc894a4 + timestamp: 1738599319244 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025020316-release.conda + sha256: 2accd020d7672ee37ca6b1efcf3a7d473d1879a8950e2aca54b0a7c336aaecb3 + md5: b643efbec2de4c1d033737261171fb73 depends: - - mblack ==25.1.0.dev2025020205 release + - mblack ==25.1.0.dev2025020316 release license: LicenseRef-Modular-Proprietary - size: 243782696 - timestamp: 1738473498297 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025020205-release.conda - sha256: 2c6b44893e750a6d21a47c281bd3555a6ec3ee7cc66afe07de7a50521e43b98d - md5: 39660fe658e7877715f12da0ad8c60a5 + size: 244981800 + timestamp: 1738599374541 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025020316-release.conda + sha256: 86ba07335c645a2a93e629da708ec8b166bb78a0861f8f5c25f251483a420e3b + md5: 4e72006884a03c55ef53d758d1cf2c42 depends: - - mblack ==25.1.0.dev2025020205 release + - mblack ==25.1.0.dev2025020316 release license: LicenseRef-Modular-Proprietary - size: 246300496 - timestamp: 1738473487228 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025020205-release.conda - sha256: 02fbc22b5f121fe292edc0997bfdfa303ec6bfb5d6ea8545acb1dcec03719091 - md5: 5343afd23543fc39a5d619bcce50bd32 + size: 247551749 + timestamp: 1738599319244 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025020316-release.conda + sha256: d8358654224478f1366b43d9d363d8922f3927c9da29c28af2958f277fab51f0 + md5: c9a3b40307c937630ab20599bd50a2ee depends: - - mblack ==25.1.0.dev2025020205 release + - mblack ==25.1.0.dev2025020316 release license: LicenseRef-Modular-Proprietary - size: 209133254 - timestamp: 1738476199729 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025020205-release.conda + size: 209875188 + timestamp: 1738619060481 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025020316-release.conda noarch: python - sha256: b1e33fd7cd3547ca3e54c22f1ad5635f7ea73c3fb4edd4d8aa46fd1eb9514c10 - md5: 965d9d920d9e367d20c6abdac59dd134 + sha256: a063046c75f5cc0c826bca82c030dba613448e76b255103e1fc9183c0dc9aee4 + md5: f44697c7217e8c949a62919af73caafb depends: - - max-core ==25.1.0.dev2025020205 release + - max-core ==25.1.0.dev2025020316 release - python - fastapi - httpx @@ -4926,14 +4923,14 @@ packages: - typing_extensions - uvicorn license: LicenseRef-Modular-Proprietary - size: 120415742 - timestamp: 1738473498298 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025020205-release.conda + size: 120871754 + timestamp: 1738599374542 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025020316-release.conda noarch: python - sha256: c94728b5100f37256699ae2397ab9ec45092b1eee9524d2bcb7faf0d65de4beb - md5: 5a82778a4ee4be515783c64d33019f9b + sha256: fb086fa9278256d4a923bd5280b6ec2ca8b2861d34a141c1343960cbb83d2097 + md5: 1dd74954d08dcab1e1de3c6401cfa344 depends: - - max-core ==25.1.0.dev2025020205 release + - max-core ==25.1.0.dev2025020316 release - python - fastapi - httpx @@ -4953,14 +4950,14 @@ packages: - typing_extensions - uvicorn license: LicenseRef-Modular-Proprietary - size: 123027690 - timestamp: 1738473487228 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025020205-release.conda + size: 123518428 + timestamp: 1738599319244 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025020316-release.conda noarch: python - sha256: 35fae7f5dda50acf55557a7cf8220434b197beae9c016370f430ec666d38e443 - md5: 1e1911e6b3f2af24fbe9dd920e3ce7e3 + sha256: 922b3f272f8ccfcafea072a47139f599c3d911e48f026fdada57bb139d740d60 + md5: 7cf83019f7ed2ae02250f01899a1f045 depends: - - max-core ==25.1.0.dev2025020205 release + - max-core ==25.1.0.dev2025020316 release - python - fastapi - httpx @@ -4980,12 +4977,12 @@ packages: - typing_extensions - uvicorn license: LicenseRef-Modular-Proprietary - size: 108138052 - timestamp: 1738476199729 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020205-release.conda + size: 108582366 + timestamp: 1738619060481 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020316-release.conda noarch: python - sha256: 70ae00ae631ea771af53ac1c1f9882982470255d361bf5578a0602d768972d26 - md5: ba967e4130dc9a10186de20c6883aae0 + sha256: 394fafcc27e16f2ef0a98c1a07e0fec0cb7f238ff972a153ba9bc9da39772b26 + md5: 7eaf7888650b7941a1475c1f8834797a depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -4996,8 +4993,8 @@ packages: - typing_extensions >=v4.12.2 - python license: MIT - size: 130823 - timestamp: 1738473487228 + size: 130821 + timestamp: 1738599319244 - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda sha256: 78c1bbe1723449c52b7a9df1af2ee5f005209f67e40b6e1d3c7619127c43b1c7 md5: 592132998493b3ff25fd7479396e8351 @@ -5007,18 +5004,18 @@ packages: license_family: MIT size: 14465 timestamp: 1733255681319 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020205-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020316-release.conda noarch: python - sha256: c70af4ebd29c7c4e445bdf37f592ea39dec3090c59cdd4c96f8eec1e0a6fcba8 - md5: 40b22aabe3af350b240167b503c4c48e + sha256: b835fba08c1acc7bcd4ca871b98e013a1bdc72c538a3e307d75d081355c95c76 + md5: 9a263ca62e2cb9b31a0de06053f87b30 depends: - - max-core ==25.1.0.dev2025020205 release + - max-core ==25.1.0.dev2025020316 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22925 - timestamp: 1738473487228 + size: 22930 + timestamp: 1738599319244 - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py311h2dc5d0c_2.conda sha256: afaab7a028281d8b5336db2b994fd3f9694862b6ca372c079dc4e84ad768c20a md5: bb8ca118919836624d920b4c44383a15 diff --git a/examples/operators/magic.lock b/examples/operators/magic.lock index b47920c676..cf7d4ac9b4 100644 --- a/examples/operators/magic.lock +++ b/examples/operators/magic.lock @@ -54,12 +54,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.17.0-pyhd8ed1ab_0.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-py312h178313f_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.12.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2025.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gflags-2.2.2-h5888daf_1005.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/glog-0.7.1-hbabe93e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/httptools-0.6.4-py312h66e93f0_0.conda @@ -105,7 +105,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-hd590300_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-28_h7ac8fdf_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.3-hb9d3cd8_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.28-pthreads_h94d23a6_1.conda @@ -133,12 +133,12 @@ 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-25.1.0.dev2025020205-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025020205-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025020205-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020316-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025020316-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025020316-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020316-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-25.1.0.dev2025020205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020316-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 @@ -276,12 +276,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.17.0-pyhd8ed1ab_0.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-py312hcc812fe_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.12.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2025.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gflags-2.2.2-h5ad3122_1005.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/glog-0.7.1-h468a4a4_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/httptools-0.6.4-py312hb2c0f52_0.conda @@ -328,7 +328,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libiconv-1.17-h31becfc_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libjpeg-turbo-3.0.0-h31becfc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-28_h411afd4_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.3-h86ecc28_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.4-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnghttp2-1.64.0-hc8609a4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.28-pthreads_h9d3fd7e_1.conda @@ -356,12 +356,12 @@ 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-25.1.0.dev2025020205-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025020205-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025020205-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020316-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025020316-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025020316-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020316-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-25.1.0.dev2025020205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020316-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 @@ -498,12 +498,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.17.0-pyhd8ed1ab_0.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-py312h998013c_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.12.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2025.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gflags-2.2.2-hf9b8971_1005.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/glog-0.7.1-heb240a5_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/httptools-0.6.4-py312hea69d52_0.conda @@ -546,7 +546,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.17-h0d3ecfb_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.0.0-hb547adb_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-28_hc9a63f6_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.3-h39f12f2_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.4-h39f12f2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.64.0-h6d7220d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.28-openmp_hf332438_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopentelemetry-cpp-1.18.0-h0c05b2d_1.conda @@ -570,12 +570,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-25.1.0.dev2025020205-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025020205-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025020205-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020316-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025020316-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025020316-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020316-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-25.1.0.dev2025020205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020316-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 @@ -2065,15 +2065,15 @@ packages: license_family: APACHE size: 57256 timestamp: 1737645503377 -- conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.12.0-pyhd8ed1ab_0.conda - sha256: 3320970c4604989eadf908397a9475f9e6a96a773c185915111399cbfbe47817 - md5: e041ad4c43ab5e10c74587f95378ebc7 +- conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2025.2.0-pyhd8ed1ab_0.conda + sha256: 7433b8469074985b651693778ec6f03d2a23fad9919a515e3b8545996b5e721a + md5: d9ea16b71920b03beafc17fcca16df90 depends: - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 137756 - timestamp: 1734650349242 + size: 138186 + timestamp: 1738501352608 - conda: https://conda.anaconda.org/conda-forge/linux-64/gflags-2.2.2-h5888daf_1005.conda sha256: 6c33bf0c4d8f418546ba9c250db4e4221040936aef8956353bc764d4877bc39a md5: d411fc29e338efb48c5fd4576d71d881 @@ -2170,17 +2170,17 @@ packages: license_family: MIT size: 51846 timestamp: 1733327599467 -- conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_1.conda - sha256: 843ddad410c370672a8250470697027618f104153612439076d4d7b91eeb7b5c - md5: 825927dc7b0f287ef8d4d0011bb113b1 +- conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda + sha256: 0aa1cdc67a9fe75ea95b5644b734a756200d6ec9d0dff66530aec3d1c1e9df75 + md5: b4754fb1bdcb70c8fd54f918301582c6 depends: - - hpack >=4.0,<5 - - hyperframe >=6.0,<7 + - hpack >=4.1,<5 + - hyperframe >=6.1,<7 - python >=3.9 license: MIT license_family: MIT - size: 52000 - timestamp: 1733298867359 + size: 53888 + timestamp: 1738578623567 - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda sha256: 6ad78a180576c706aabeb5b4c8ceb97c0cb25f1e112d76495bff23e3779948ba md5: 0a802cb9888dd14eeefc611f05c40b6e @@ -3201,6 +3201,7 @@ packages: arch: x86_64 platform: linux license: BSD-2-Clause + license_family: BSD size: 134676 timestamp: 1738479519902 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20250104-pl5321h976ea20_0.conda @@ -3213,6 +3214,7 @@ packages: arch: aarch64 platform: linux license: BSD-2-Clause + license_family: BSD size: 148125 timestamp: 1738479808948 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda @@ -3225,6 +3227,7 @@ packages: arch: arm64 platform: osx license: BSD-2-Clause + license_family: BSD size: 107691 timestamp: 1738479560845 - conda: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda @@ -3804,43 +3807,37 @@ packages: license_family: BSD size: 16793 timestamp: 1738114407021 -- conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.3-hb9d3cd8_1.conda - sha256: e6e425252f3839e2756e4af1ea2074dffd3396c161bf460629f9dfd6a65f15c6 - md5: 2ecf2f1c7e4e21fcfe6423a51a992d84 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda + sha256: cad52e10319ca4585bc37f0bc7cce99ec7c15dc9168e42ccb96b741b0a27db3f + md5: 42d5b6a0f30d3c10cd88cb8584fda1cb depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - constrains: - - xz ==5.6.3=*_1 arch: x86_64 platform: linux license: 0BSD - size: 111132 - timestamp: 1733407410083 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.3-h86ecc28_1.conda - sha256: d1cce0b7d62d1e54e2164d3e0667ee808efc6c3870256e5b47a150cd0bf46824 - md5: eb08b903681f9f2432c320e8ed626723 + size: 111357 + timestamp: 1738525339684 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.4-h86ecc28_0.conda + sha256: 96413664f0fade54a4931940d18749cfc8e6308349dbb0cb83adb2394ca1f730 + md5: b88244e0a115cc34f7fbca9b11248e76 depends: - libgcc >=13 - constrains: - - xz ==5.6.3=*_1 arch: aarch64 platform: linux license: 0BSD - size: 124138 - timestamp: 1733409137214 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.3-h39f12f2_1.conda - sha256: d863b8257406918ffdc50ae65502f2b2d6cede29404d09a094f59509d6a0aaf1 - md5: b2553114a7f5e20ccd02378a77d836aa + size: 124197 + timestamp: 1738528201520 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.4-h39f12f2_0.conda + sha256: 560c59d3834cc652a84fb45531bd335ad06e271b34ebc216e380a89798fe8e2c + md5: e3fd1f8320a100f2b210e690a57cd615 depends: - __osx >=11.0 - constrains: - - xz ==5.6.3=*_1 arch: arm64 platform: osx license: 0BSD - size: 99129 - timestamp: 1733407496073 + size: 98945 + timestamp: 1738525462560 - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda sha256: b0f2b3695b13a989f75d8fd7f4778e1c7aabe3b36db83f0fe80b2cd812c0e975 md5: 19e57602824042dfd0446292ef90488b @@ -4865,48 +4862,48 @@ packages: license_family: BSD size: 24048 timestamp: 1733219945697 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020205-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020316-release.conda noarch: python - sha256: cba426880b6c5f6e60a9743e30fa8af9fb4a83455d09eb0eb2f20d98a9441b3b - md5: 18aab6d4943b48a5623561d11171fbd1 + sha256: fa04aab936b2812928f5e277bcf9b99c39ecb469b407da4ef450bb9c6b2b1b09 + md5: cc06b062838bb42ef03d615dc91f928f depends: - - max-core ==25.1.0.dev2025020205 release - - max-python >=25.1.0.dev2025020205,<26.0a0 - - mojo-jupyter ==25.1.0.dev2025020205 release - - mblack ==25.1.0.dev2025020205 release + - max-core ==25.1.0.dev2025020316 release + - max-python >=25.1.0.dev2025020316,<26.0a0 + - mojo-jupyter ==25.1.0.dev2025020316 release + - mblack ==25.1.0.dev2025020316 release license: LicenseRef-Modular-Proprietary size: 9921 - timestamp: 1738473487228 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025020205-release.conda - sha256: 10e99aec52a9fa2e8fe67fda4f5e01e134a9c697d62d25255d4bb40fca19f85d - md5: 6d2162cd5f992294f5847c835bc894a4 + timestamp: 1738599319244 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025020316-release.conda + sha256: 2accd020d7672ee37ca6b1efcf3a7d473d1879a8950e2aca54b0a7c336aaecb3 + md5: b643efbec2de4c1d033737261171fb73 depends: - - mblack ==25.1.0.dev2025020205 release + - mblack ==25.1.0.dev2025020316 release license: LicenseRef-Modular-Proprietary - size: 243782696 - timestamp: 1738473498297 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025020205-release.conda - sha256: 2c6b44893e750a6d21a47c281bd3555a6ec3ee7cc66afe07de7a50521e43b98d - md5: 39660fe658e7877715f12da0ad8c60a5 + size: 244981800 + timestamp: 1738599374541 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025020316-release.conda + sha256: 86ba07335c645a2a93e629da708ec8b166bb78a0861f8f5c25f251483a420e3b + md5: 4e72006884a03c55ef53d758d1cf2c42 depends: - - mblack ==25.1.0.dev2025020205 release + - mblack ==25.1.0.dev2025020316 release license: LicenseRef-Modular-Proprietary - size: 246300496 - timestamp: 1738473487228 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025020205-release.conda - sha256: 02fbc22b5f121fe292edc0997bfdfa303ec6bfb5d6ea8545acb1dcec03719091 - md5: 5343afd23543fc39a5d619bcce50bd32 + size: 247551749 + timestamp: 1738599319244 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025020316-release.conda + sha256: d8358654224478f1366b43d9d363d8922f3927c9da29c28af2958f277fab51f0 + md5: c9a3b40307c937630ab20599bd50a2ee depends: - - mblack ==25.1.0.dev2025020205 release + - mblack ==25.1.0.dev2025020316 release license: LicenseRef-Modular-Proprietary - size: 209133254 - timestamp: 1738476199729 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025020205-release.conda + size: 209875188 + timestamp: 1738619060481 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025020316-release.conda noarch: python - sha256: b1e33fd7cd3547ca3e54c22f1ad5635f7ea73c3fb4edd4d8aa46fd1eb9514c10 - md5: 965d9d920d9e367d20c6abdac59dd134 + sha256: a063046c75f5cc0c826bca82c030dba613448e76b255103e1fc9183c0dc9aee4 + md5: f44697c7217e8c949a62919af73caafb depends: - - max-core ==25.1.0.dev2025020205 release + - max-core ==25.1.0.dev2025020316 release - python - fastapi - httpx @@ -4926,14 +4923,14 @@ packages: - typing_extensions - uvicorn license: LicenseRef-Modular-Proprietary - size: 120415742 - timestamp: 1738473498298 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025020205-release.conda + size: 120871754 + timestamp: 1738599374542 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025020316-release.conda noarch: python - sha256: c94728b5100f37256699ae2397ab9ec45092b1eee9524d2bcb7faf0d65de4beb - md5: 5a82778a4ee4be515783c64d33019f9b + sha256: fb086fa9278256d4a923bd5280b6ec2ca8b2861d34a141c1343960cbb83d2097 + md5: 1dd74954d08dcab1e1de3c6401cfa344 depends: - - max-core ==25.1.0.dev2025020205 release + - max-core ==25.1.0.dev2025020316 release - python - fastapi - httpx @@ -4953,14 +4950,14 @@ packages: - typing_extensions - uvicorn license: LicenseRef-Modular-Proprietary - size: 123027690 - timestamp: 1738473487228 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025020205-release.conda + size: 123518428 + timestamp: 1738599319244 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025020316-release.conda noarch: python - sha256: 35fae7f5dda50acf55557a7cf8220434b197beae9c016370f430ec666d38e443 - md5: 1e1911e6b3f2af24fbe9dd920e3ce7e3 + sha256: 922b3f272f8ccfcafea072a47139f599c3d911e48f026fdada57bb139d740d60 + md5: 7cf83019f7ed2ae02250f01899a1f045 depends: - - max-core ==25.1.0.dev2025020205 release + - max-core ==25.1.0.dev2025020316 release - python - fastapi - httpx @@ -4980,12 +4977,12 @@ packages: - typing_extensions - uvicorn license: LicenseRef-Modular-Proprietary - size: 108138052 - timestamp: 1738476199729 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020205-release.conda + size: 108582366 + timestamp: 1738619060481 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020316-release.conda noarch: python - sha256: 70ae00ae631ea771af53ac1c1f9882982470255d361bf5578a0602d768972d26 - md5: ba967e4130dc9a10186de20c6883aae0 + sha256: 394fafcc27e16f2ef0a98c1a07e0fec0cb7f238ff972a153ba9bc9da39772b26 + md5: 7eaf7888650b7941a1475c1f8834797a depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -4996,8 +4993,8 @@ packages: - typing_extensions >=v4.12.2 - python license: MIT - size: 130823 - timestamp: 1738473487228 + size: 130821 + timestamp: 1738599319244 - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda sha256: 78c1bbe1723449c52b7a9df1af2ee5f005209f67e40b6e1d3c7619127c43b1c7 md5: 592132998493b3ff25fd7479396e8351 @@ -5007,18 +5004,18 @@ packages: license_family: MIT size: 14465 timestamp: 1733255681319 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020205-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020316-release.conda noarch: python - sha256: c70af4ebd29c7c4e445bdf37f592ea39dec3090c59cdd4c96f8eec1e0a6fcba8 - md5: 40b22aabe3af350b240167b503c4c48e + sha256: b835fba08c1acc7bcd4ca871b98e013a1bdc72c538a3e307d75d081355c95c76 + md5: 9a263ca62e2cb9b31a0de06053f87b30 depends: - - max-core ==25.1.0.dev2025020205 release + - max-core ==25.1.0.dev2025020316 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22925 - timestamp: 1738473487228 + size: 22930 + timestamp: 1738599319244 - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py312h178313f_2.conda sha256: b05bc8252a6e957bf4a776ed5e0e61d1ba88cdc46ccb55890c72cc58b10371f4 md5: 5b5e3267d915a107eca793d52e1b780a diff --git a/examples/testing/magic.lock b/examples/testing/magic.lock index b47920c676..cf7d4ac9b4 100644 --- a/examples/testing/magic.lock +++ b/examples/testing/magic.lock @@ -54,12 +54,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.17.0-pyhd8ed1ab_0.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-py312h178313f_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.12.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2025.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gflags-2.2.2-h5888daf_1005.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/glog-0.7.1-hbabe93e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/httptools-0.6.4-py312h66e93f0_0.conda @@ -105,7 +105,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-hd590300_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-28_h7ac8fdf_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.3-hb9d3cd8_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.28-pthreads_h94d23a6_1.conda @@ -133,12 +133,12 @@ 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-25.1.0.dev2025020205-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025020205-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025020205-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020316-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025020316-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025020316-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020316-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-25.1.0.dev2025020205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020316-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 @@ -276,12 +276,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.17.0-pyhd8ed1ab_0.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-py312hcc812fe_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.12.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2025.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gflags-2.2.2-h5ad3122_1005.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/glog-0.7.1-h468a4a4_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/httptools-0.6.4-py312hb2c0f52_0.conda @@ -328,7 +328,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libiconv-1.17-h31becfc_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libjpeg-turbo-3.0.0-h31becfc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-28_h411afd4_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.3-h86ecc28_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.4-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnghttp2-1.64.0-hc8609a4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.28-pthreads_h9d3fd7e_1.conda @@ -356,12 +356,12 @@ 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-25.1.0.dev2025020205-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025020205-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025020205-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020316-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025020316-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025020316-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020316-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-25.1.0.dev2025020205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020316-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 @@ -498,12 +498,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.17.0-pyhd8ed1ab_0.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-py312h998013c_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.12.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2025.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gflags-2.2.2-hf9b8971_1005.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/glog-0.7.1-heb240a5_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/httptools-0.6.4-py312hea69d52_0.conda @@ -546,7 +546,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.17-h0d3ecfb_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.0.0-hb547adb_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-28_hc9a63f6_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.3-h39f12f2_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.4-h39f12f2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.64.0-h6d7220d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.28-openmp_hf332438_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopentelemetry-cpp-1.18.0-h0c05b2d_1.conda @@ -570,12 +570,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-25.1.0.dev2025020205-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025020205-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025020205-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020316-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025020316-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025020316-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020316-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-25.1.0.dev2025020205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020316-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 @@ -2065,15 +2065,15 @@ packages: license_family: APACHE size: 57256 timestamp: 1737645503377 -- conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.12.0-pyhd8ed1ab_0.conda - sha256: 3320970c4604989eadf908397a9475f9e6a96a773c185915111399cbfbe47817 - md5: e041ad4c43ab5e10c74587f95378ebc7 +- conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2025.2.0-pyhd8ed1ab_0.conda + sha256: 7433b8469074985b651693778ec6f03d2a23fad9919a515e3b8545996b5e721a + md5: d9ea16b71920b03beafc17fcca16df90 depends: - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 137756 - timestamp: 1734650349242 + size: 138186 + timestamp: 1738501352608 - conda: https://conda.anaconda.org/conda-forge/linux-64/gflags-2.2.2-h5888daf_1005.conda sha256: 6c33bf0c4d8f418546ba9c250db4e4221040936aef8956353bc764d4877bc39a md5: d411fc29e338efb48c5fd4576d71d881 @@ -2170,17 +2170,17 @@ packages: license_family: MIT size: 51846 timestamp: 1733327599467 -- conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_1.conda - sha256: 843ddad410c370672a8250470697027618f104153612439076d4d7b91eeb7b5c - md5: 825927dc7b0f287ef8d4d0011bb113b1 +- conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda + sha256: 0aa1cdc67a9fe75ea95b5644b734a756200d6ec9d0dff66530aec3d1c1e9df75 + md5: b4754fb1bdcb70c8fd54f918301582c6 depends: - - hpack >=4.0,<5 - - hyperframe >=6.0,<7 + - hpack >=4.1,<5 + - hyperframe >=6.1,<7 - python >=3.9 license: MIT license_family: MIT - size: 52000 - timestamp: 1733298867359 + size: 53888 + timestamp: 1738578623567 - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda sha256: 6ad78a180576c706aabeb5b4c8ceb97c0cb25f1e112d76495bff23e3779948ba md5: 0a802cb9888dd14eeefc611f05c40b6e @@ -3201,6 +3201,7 @@ packages: arch: x86_64 platform: linux license: BSD-2-Clause + license_family: BSD size: 134676 timestamp: 1738479519902 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20250104-pl5321h976ea20_0.conda @@ -3213,6 +3214,7 @@ packages: arch: aarch64 platform: linux license: BSD-2-Clause + license_family: BSD size: 148125 timestamp: 1738479808948 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda @@ -3225,6 +3227,7 @@ packages: arch: arm64 platform: osx license: BSD-2-Clause + license_family: BSD size: 107691 timestamp: 1738479560845 - conda: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda @@ -3804,43 +3807,37 @@ packages: license_family: BSD size: 16793 timestamp: 1738114407021 -- conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.3-hb9d3cd8_1.conda - sha256: e6e425252f3839e2756e4af1ea2074dffd3396c161bf460629f9dfd6a65f15c6 - md5: 2ecf2f1c7e4e21fcfe6423a51a992d84 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda + sha256: cad52e10319ca4585bc37f0bc7cce99ec7c15dc9168e42ccb96b741b0a27db3f + md5: 42d5b6a0f30d3c10cd88cb8584fda1cb depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - constrains: - - xz ==5.6.3=*_1 arch: x86_64 platform: linux license: 0BSD - size: 111132 - timestamp: 1733407410083 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.3-h86ecc28_1.conda - sha256: d1cce0b7d62d1e54e2164d3e0667ee808efc6c3870256e5b47a150cd0bf46824 - md5: eb08b903681f9f2432c320e8ed626723 + size: 111357 + timestamp: 1738525339684 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.4-h86ecc28_0.conda + sha256: 96413664f0fade54a4931940d18749cfc8e6308349dbb0cb83adb2394ca1f730 + md5: b88244e0a115cc34f7fbca9b11248e76 depends: - libgcc >=13 - constrains: - - xz ==5.6.3=*_1 arch: aarch64 platform: linux license: 0BSD - size: 124138 - timestamp: 1733409137214 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.3-h39f12f2_1.conda - sha256: d863b8257406918ffdc50ae65502f2b2d6cede29404d09a094f59509d6a0aaf1 - md5: b2553114a7f5e20ccd02378a77d836aa + size: 124197 + timestamp: 1738528201520 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.4-h39f12f2_0.conda + sha256: 560c59d3834cc652a84fb45531bd335ad06e271b34ebc216e380a89798fe8e2c + md5: e3fd1f8320a100f2b210e690a57cd615 depends: - __osx >=11.0 - constrains: - - xz ==5.6.3=*_1 arch: arm64 platform: osx license: 0BSD - size: 99129 - timestamp: 1733407496073 + size: 98945 + timestamp: 1738525462560 - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda sha256: b0f2b3695b13a989f75d8fd7f4778e1c7aabe3b36db83f0fe80b2cd812c0e975 md5: 19e57602824042dfd0446292ef90488b @@ -4865,48 +4862,48 @@ packages: license_family: BSD size: 24048 timestamp: 1733219945697 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020205-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020316-release.conda noarch: python - sha256: cba426880b6c5f6e60a9743e30fa8af9fb4a83455d09eb0eb2f20d98a9441b3b - md5: 18aab6d4943b48a5623561d11171fbd1 + sha256: fa04aab936b2812928f5e277bcf9b99c39ecb469b407da4ef450bb9c6b2b1b09 + md5: cc06b062838bb42ef03d615dc91f928f depends: - - max-core ==25.1.0.dev2025020205 release - - max-python >=25.1.0.dev2025020205,<26.0a0 - - mojo-jupyter ==25.1.0.dev2025020205 release - - mblack ==25.1.0.dev2025020205 release + - max-core ==25.1.0.dev2025020316 release + - max-python >=25.1.0.dev2025020316,<26.0a0 + - mojo-jupyter ==25.1.0.dev2025020316 release + - mblack ==25.1.0.dev2025020316 release license: LicenseRef-Modular-Proprietary size: 9921 - timestamp: 1738473487228 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025020205-release.conda - sha256: 10e99aec52a9fa2e8fe67fda4f5e01e134a9c697d62d25255d4bb40fca19f85d - md5: 6d2162cd5f992294f5847c835bc894a4 + timestamp: 1738599319244 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025020316-release.conda + sha256: 2accd020d7672ee37ca6b1efcf3a7d473d1879a8950e2aca54b0a7c336aaecb3 + md5: b643efbec2de4c1d033737261171fb73 depends: - - mblack ==25.1.0.dev2025020205 release + - mblack ==25.1.0.dev2025020316 release license: LicenseRef-Modular-Proprietary - size: 243782696 - timestamp: 1738473498297 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025020205-release.conda - sha256: 2c6b44893e750a6d21a47c281bd3555a6ec3ee7cc66afe07de7a50521e43b98d - md5: 39660fe658e7877715f12da0ad8c60a5 + size: 244981800 + timestamp: 1738599374541 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025020316-release.conda + sha256: 86ba07335c645a2a93e629da708ec8b166bb78a0861f8f5c25f251483a420e3b + md5: 4e72006884a03c55ef53d758d1cf2c42 depends: - - mblack ==25.1.0.dev2025020205 release + - mblack ==25.1.0.dev2025020316 release license: LicenseRef-Modular-Proprietary - size: 246300496 - timestamp: 1738473487228 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025020205-release.conda - sha256: 02fbc22b5f121fe292edc0997bfdfa303ec6bfb5d6ea8545acb1dcec03719091 - md5: 5343afd23543fc39a5d619bcce50bd32 + size: 247551749 + timestamp: 1738599319244 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025020316-release.conda + sha256: d8358654224478f1366b43d9d363d8922f3927c9da29c28af2958f277fab51f0 + md5: c9a3b40307c937630ab20599bd50a2ee depends: - - mblack ==25.1.0.dev2025020205 release + - mblack ==25.1.0.dev2025020316 release license: LicenseRef-Modular-Proprietary - size: 209133254 - timestamp: 1738476199729 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025020205-release.conda + size: 209875188 + timestamp: 1738619060481 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025020316-release.conda noarch: python - sha256: b1e33fd7cd3547ca3e54c22f1ad5635f7ea73c3fb4edd4d8aa46fd1eb9514c10 - md5: 965d9d920d9e367d20c6abdac59dd134 + sha256: a063046c75f5cc0c826bca82c030dba613448e76b255103e1fc9183c0dc9aee4 + md5: f44697c7217e8c949a62919af73caafb depends: - - max-core ==25.1.0.dev2025020205 release + - max-core ==25.1.0.dev2025020316 release - python - fastapi - httpx @@ -4926,14 +4923,14 @@ packages: - typing_extensions - uvicorn license: LicenseRef-Modular-Proprietary - size: 120415742 - timestamp: 1738473498298 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025020205-release.conda + size: 120871754 + timestamp: 1738599374542 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025020316-release.conda noarch: python - sha256: c94728b5100f37256699ae2397ab9ec45092b1eee9524d2bcb7faf0d65de4beb - md5: 5a82778a4ee4be515783c64d33019f9b + sha256: fb086fa9278256d4a923bd5280b6ec2ca8b2861d34a141c1343960cbb83d2097 + md5: 1dd74954d08dcab1e1de3c6401cfa344 depends: - - max-core ==25.1.0.dev2025020205 release + - max-core ==25.1.0.dev2025020316 release - python - fastapi - httpx @@ -4953,14 +4950,14 @@ packages: - typing_extensions - uvicorn license: LicenseRef-Modular-Proprietary - size: 123027690 - timestamp: 1738473487228 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025020205-release.conda + size: 123518428 + timestamp: 1738599319244 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025020316-release.conda noarch: python - sha256: 35fae7f5dda50acf55557a7cf8220434b197beae9c016370f430ec666d38e443 - md5: 1e1911e6b3f2af24fbe9dd920e3ce7e3 + sha256: 922b3f272f8ccfcafea072a47139f599c3d911e48f026fdada57bb139d740d60 + md5: 7cf83019f7ed2ae02250f01899a1f045 depends: - - max-core ==25.1.0.dev2025020205 release + - max-core ==25.1.0.dev2025020316 release - python - fastapi - httpx @@ -4980,12 +4977,12 @@ packages: - typing_extensions - uvicorn license: LicenseRef-Modular-Proprietary - size: 108138052 - timestamp: 1738476199729 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020205-release.conda + size: 108582366 + timestamp: 1738619060481 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020316-release.conda noarch: python - sha256: 70ae00ae631ea771af53ac1c1f9882982470255d361bf5578a0602d768972d26 - md5: ba967e4130dc9a10186de20c6883aae0 + sha256: 394fafcc27e16f2ef0a98c1a07e0fec0cb7f238ff972a153ba9bc9da39772b26 + md5: 7eaf7888650b7941a1475c1f8834797a depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -4996,8 +4993,8 @@ packages: - typing_extensions >=v4.12.2 - python license: MIT - size: 130823 - timestamp: 1738473487228 + size: 130821 + timestamp: 1738599319244 - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda sha256: 78c1bbe1723449c52b7a9df1af2ee5f005209f67e40b6e1d3c7619127c43b1c7 md5: 592132998493b3ff25fd7479396e8351 @@ -5007,18 +5004,18 @@ packages: license_family: MIT size: 14465 timestamp: 1733255681319 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020205-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020316-release.conda noarch: python - sha256: c70af4ebd29c7c4e445bdf37f592ea39dec3090c59cdd4c96f8eec1e0a6fcba8 - md5: 40b22aabe3af350b240167b503c4c48e + sha256: b835fba08c1acc7bcd4ca871b98e013a1bdc72c538a3e307d75d081355c95c76 + md5: 9a263ca62e2cb9b31a0de06053f87b30 depends: - - max-core ==25.1.0.dev2025020205 release + - max-core ==25.1.0.dev2025020316 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22925 - timestamp: 1738473487228 + size: 22930 + timestamp: 1738599319244 - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py312h178313f_2.conda sha256: b05bc8252a6e957bf4a776ed5e0e61d1ba88cdc46ccb55890c72cc58b10371f4 md5: 5b5e3267d915a107eca793d52e1b780a diff --git a/magic.lock b/magic.lock index 515b706129..00e98a04e9 100644 --- a/magic.lock +++ b/magic.lock @@ -54,12 +54,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.17.0-pyhd8ed1ab_0.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-py312h178313f_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.12.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2025.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gflags-2.2.2-h5888daf_1005.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/glog-0.7.1-hbabe93e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/httptools-0.6.4-py312h66e93f0_0.conda @@ -105,7 +105,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-hd590300_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-28_h7ac8fdf_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.3-hb9d3cd8_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.28-pthreads_h94d23a6_1.conda @@ -134,12 +134,12 @@ 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-25.1.0.dev2025020205-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025020205-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025020205-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020316-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025020316-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025020316-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020316-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-25.1.0.dev2025020205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020316-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 @@ -277,12 +277,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.17.0-pyhd8ed1ab_0.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-py312hcc812fe_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.12.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2025.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gflags-2.2.2-h5ad3122_1005.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/glog-0.7.1-h468a4a4_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/httptools-0.6.4-py312hb2c0f52_0.conda @@ -329,7 +329,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libiconv-1.17-h31becfc_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libjpeg-turbo-3.0.0-h31becfc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-28_h411afd4_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.3-h86ecc28_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.4-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnghttp2-1.64.0-hc8609a4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.28-pthreads_h9d3fd7e_1.conda @@ -358,12 +358,12 @@ 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-25.1.0.dev2025020205-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025020205-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025020205-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020316-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025020316-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025020316-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020316-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-25.1.0.dev2025020205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020316-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 @@ -500,12 +500,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.17.0-pyhd8ed1ab_0.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-py312h998013c_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.12.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2025.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gflags-2.2.2-hf9b8971_1005.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/glog-0.7.1-heb240a5_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/httptools-0.6.4-py312hea69d52_0.conda @@ -548,7 +548,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.17-h0d3ecfb_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.0.0-hb547adb_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-28_hc9a63f6_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.3-h39f12f2_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.4-h39f12f2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.64.0-h6d7220d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.28-openmp_hf332438_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopentelemetry-cpp-1.18.0-h0c05b2d_1.conda @@ -573,12 +573,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-25.1.0.dev2025020205-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025020205-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025020205-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020316-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025020316-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025020316-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020316-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-25.1.0.dev2025020205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020316-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 @@ -2068,15 +2068,15 @@ packages: license_family: APACHE size: 57256 timestamp: 1737645503377 -- conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.12.0-pyhd8ed1ab_0.conda - sha256: 3320970c4604989eadf908397a9475f9e6a96a773c185915111399cbfbe47817 - md5: e041ad4c43ab5e10c74587f95378ebc7 +- conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2025.2.0-pyhd8ed1ab_0.conda + sha256: 7433b8469074985b651693778ec6f03d2a23fad9919a515e3b8545996b5e721a + md5: d9ea16b71920b03beafc17fcca16df90 depends: - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 137756 - timestamp: 1734650349242 + size: 138186 + timestamp: 1738501352608 - conda: https://conda.anaconda.org/conda-forge/linux-64/gflags-2.2.2-h5888daf_1005.conda sha256: 6c33bf0c4d8f418546ba9c250db4e4221040936aef8956353bc764d4877bc39a md5: d411fc29e338efb48c5fd4576d71d881 @@ -2173,17 +2173,17 @@ packages: license_family: MIT size: 51846 timestamp: 1733327599467 -- conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_1.conda - sha256: 843ddad410c370672a8250470697027618f104153612439076d4d7b91eeb7b5c - md5: 825927dc7b0f287ef8d4d0011bb113b1 +- conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda + sha256: 0aa1cdc67a9fe75ea95b5644b734a756200d6ec9d0dff66530aec3d1c1e9df75 + md5: b4754fb1bdcb70c8fd54f918301582c6 depends: - - hpack >=4.0,<5 - - hyperframe >=6.0,<7 + - hpack >=4.1,<5 + - hyperframe >=6.1,<7 - python >=3.9 license: MIT license_family: MIT - size: 52000 - timestamp: 1733298867359 + size: 53888 + timestamp: 1738578623567 - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda sha256: 6ad78a180576c706aabeb5b4c8ceb97c0cb25f1e112d76495bff23e3779948ba md5: 0a802cb9888dd14eeefc611f05c40b6e @@ -3204,6 +3204,7 @@ packages: arch: x86_64 platform: linux license: BSD-2-Clause + license_family: BSD size: 134676 timestamp: 1738479519902 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20250104-pl5321h976ea20_0.conda @@ -3216,6 +3217,7 @@ packages: arch: aarch64 platform: linux license: BSD-2-Clause + license_family: BSD size: 148125 timestamp: 1738479808948 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda @@ -3228,6 +3230,7 @@ packages: arch: arm64 platform: osx license: BSD-2-Clause + license_family: BSD size: 107691 timestamp: 1738479560845 - conda: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda @@ -3807,43 +3810,37 @@ packages: license_family: BSD size: 16793 timestamp: 1738114407021 -- conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.3-hb9d3cd8_1.conda - sha256: e6e425252f3839e2756e4af1ea2074dffd3396c161bf460629f9dfd6a65f15c6 - md5: 2ecf2f1c7e4e21fcfe6423a51a992d84 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda + sha256: cad52e10319ca4585bc37f0bc7cce99ec7c15dc9168e42ccb96b741b0a27db3f + md5: 42d5b6a0f30d3c10cd88cb8584fda1cb depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - constrains: - - xz ==5.6.3=*_1 arch: x86_64 platform: linux license: 0BSD - size: 111132 - timestamp: 1733407410083 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.3-h86ecc28_1.conda - sha256: d1cce0b7d62d1e54e2164d3e0667ee808efc6c3870256e5b47a150cd0bf46824 - md5: eb08b903681f9f2432c320e8ed626723 + size: 111357 + timestamp: 1738525339684 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.4-h86ecc28_0.conda + sha256: 96413664f0fade54a4931940d18749cfc8e6308349dbb0cb83adb2394ca1f730 + md5: b88244e0a115cc34f7fbca9b11248e76 depends: - libgcc >=13 - constrains: - - xz ==5.6.3=*_1 arch: aarch64 platform: linux license: 0BSD - size: 124138 - timestamp: 1733409137214 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.3-h39f12f2_1.conda - sha256: d863b8257406918ffdc50ae65502f2b2d6cede29404d09a094f59509d6a0aaf1 - md5: b2553114a7f5e20ccd02378a77d836aa + size: 124197 + timestamp: 1738528201520 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.4-h39f12f2_0.conda + sha256: 560c59d3834cc652a84fb45531bd335ad06e271b34ebc216e380a89798fe8e2c + md5: e3fd1f8320a100f2b210e690a57cd615 depends: - __osx >=11.0 - constrains: - - xz ==5.6.3=*_1 arch: arm64 platform: osx license: 0BSD - size: 99129 - timestamp: 1733407496073 + size: 98945 + timestamp: 1738525462560 - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda sha256: b0f2b3695b13a989f75d8fd7f4778e1c7aabe3b36db83f0fe80b2cd812c0e975 md5: 19e57602824042dfd0446292ef90488b @@ -4877,48 +4874,48 @@ packages: license_family: BSD size: 24048 timestamp: 1733219945697 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020205-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020316-release.conda noarch: python - sha256: cba426880b6c5f6e60a9743e30fa8af9fb4a83455d09eb0eb2f20d98a9441b3b - md5: 18aab6d4943b48a5623561d11171fbd1 + sha256: fa04aab936b2812928f5e277bcf9b99c39ecb469b407da4ef450bb9c6b2b1b09 + md5: cc06b062838bb42ef03d615dc91f928f depends: - - max-core ==25.1.0.dev2025020205 release - - max-python >=25.1.0.dev2025020205,<26.0a0 - - mojo-jupyter ==25.1.0.dev2025020205 release - - mblack ==25.1.0.dev2025020205 release + - max-core ==25.1.0.dev2025020316 release + - max-python >=25.1.0.dev2025020316,<26.0a0 + - mojo-jupyter ==25.1.0.dev2025020316 release + - mblack ==25.1.0.dev2025020316 release license: LicenseRef-Modular-Proprietary size: 9921 - timestamp: 1738473487228 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025020205-release.conda - sha256: 10e99aec52a9fa2e8fe67fda4f5e01e134a9c697d62d25255d4bb40fca19f85d - md5: 6d2162cd5f992294f5847c835bc894a4 + timestamp: 1738599319244 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025020316-release.conda + sha256: 2accd020d7672ee37ca6b1efcf3a7d473d1879a8950e2aca54b0a7c336aaecb3 + md5: b643efbec2de4c1d033737261171fb73 depends: - - mblack ==25.1.0.dev2025020205 release + - mblack ==25.1.0.dev2025020316 release license: LicenseRef-Modular-Proprietary - size: 243782696 - timestamp: 1738473498297 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025020205-release.conda - sha256: 2c6b44893e750a6d21a47c281bd3555a6ec3ee7cc66afe07de7a50521e43b98d - md5: 39660fe658e7877715f12da0ad8c60a5 + size: 244981800 + timestamp: 1738599374541 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025020316-release.conda + sha256: 86ba07335c645a2a93e629da708ec8b166bb78a0861f8f5c25f251483a420e3b + md5: 4e72006884a03c55ef53d758d1cf2c42 depends: - - mblack ==25.1.0.dev2025020205 release + - mblack ==25.1.0.dev2025020316 release license: LicenseRef-Modular-Proprietary - size: 246300496 - timestamp: 1738473487228 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025020205-release.conda - sha256: 02fbc22b5f121fe292edc0997bfdfa303ec6bfb5d6ea8545acb1dcec03719091 - md5: 5343afd23543fc39a5d619bcce50bd32 + size: 247551749 + timestamp: 1738599319244 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025020316-release.conda + sha256: d8358654224478f1366b43d9d363d8922f3927c9da29c28af2958f277fab51f0 + md5: c9a3b40307c937630ab20599bd50a2ee depends: - - mblack ==25.1.0.dev2025020205 release + - mblack ==25.1.0.dev2025020316 release license: LicenseRef-Modular-Proprietary - size: 209133254 - timestamp: 1738476199729 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025020205-release.conda + size: 209875188 + timestamp: 1738619060481 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025020316-release.conda noarch: python - sha256: b1e33fd7cd3547ca3e54c22f1ad5635f7ea73c3fb4edd4d8aa46fd1eb9514c10 - md5: 965d9d920d9e367d20c6abdac59dd134 + sha256: a063046c75f5cc0c826bca82c030dba613448e76b255103e1fc9183c0dc9aee4 + md5: f44697c7217e8c949a62919af73caafb depends: - - max-core ==25.1.0.dev2025020205 release + - max-core ==25.1.0.dev2025020316 release - python - fastapi - httpx @@ -4938,14 +4935,14 @@ packages: - typing_extensions - uvicorn license: LicenseRef-Modular-Proprietary - size: 120415742 - timestamp: 1738473498298 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025020205-release.conda + size: 120871754 + timestamp: 1738599374542 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025020316-release.conda noarch: python - sha256: c94728b5100f37256699ae2397ab9ec45092b1eee9524d2bcb7faf0d65de4beb - md5: 5a82778a4ee4be515783c64d33019f9b + sha256: fb086fa9278256d4a923bd5280b6ec2ca8b2861d34a141c1343960cbb83d2097 + md5: 1dd74954d08dcab1e1de3c6401cfa344 depends: - - max-core ==25.1.0.dev2025020205 release + - max-core ==25.1.0.dev2025020316 release - python - fastapi - httpx @@ -4965,14 +4962,14 @@ packages: - typing_extensions - uvicorn license: LicenseRef-Modular-Proprietary - size: 123027690 - timestamp: 1738473487228 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025020205-release.conda + size: 123518428 + timestamp: 1738599319244 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025020316-release.conda noarch: python - sha256: 35fae7f5dda50acf55557a7cf8220434b197beae9c016370f430ec666d38e443 - md5: 1e1911e6b3f2af24fbe9dd920e3ce7e3 + sha256: 922b3f272f8ccfcafea072a47139f599c3d911e48f026fdada57bb139d740d60 + md5: 7cf83019f7ed2ae02250f01899a1f045 depends: - - max-core ==25.1.0.dev2025020205 release + - max-core ==25.1.0.dev2025020316 release - python - fastapi - httpx @@ -4992,12 +4989,12 @@ packages: - typing_extensions - uvicorn license: LicenseRef-Modular-Proprietary - size: 108138052 - timestamp: 1738476199729 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020205-release.conda + size: 108582366 + timestamp: 1738619060481 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020316-release.conda noarch: python - sha256: 70ae00ae631ea771af53ac1c1f9882982470255d361bf5578a0602d768972d26 - md5: ba967e4130dc9a10186de20c6883aae0 + sha256: 394fafcc27e16f2ef0a98c1a07e0fec0cb7f238ff972a153ba9bc9da39772b26 + md5: 7eaf7888650b7941a1475c1f8834797a depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -5008,8 +5005,8 @@ packages: - typing_extensions >=v4.12.2 - python license: MIT - size: 130823 - timestamp: 1738473487228 + size: 130821 + timestamp: 1738599319244 - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda sha256: 78c1bbe1723449c52b7a9df1af2ee5f005209f67e40b6e1d3c7619127c43b1c7 md5: 592132998493b3ff25fd7479396e8351 @@ -5019,18 +5016,18 @@ packages: license_family: MIT size: 14465 timestamp: 1733255681319 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020205-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020316-release.conda noarch: python - sha256: c70af4ebd29c7c4e445bdf37f592ea39dec3090c59cdd4c96f8eec1e0a6fcba8 - md5: 40b22aabe3af350b240167b503c4c48e + sha256: b835fba08c1acc7bcd4ca871b98e013a1bdc72c538a3e307d75d081355c95c76 + md5: 9a263ca62e2cb9b31a0de06053f87b30 depends: - - max-core ==25.1.0.dev2025020205 release + - max-core ==25.1.0.dev2025020316 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22925 - timestamp: 1738473487228 + size: 22930 + timestamp: 1738599319244 - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py312h178313f_2.conda sha256: b05bc8252a6e957bf4a776ed5e0e61d1ba88cdc46ccb55890c72cc58b10371f4 md5: 5b5e3267d915a107eca793d52e1b780a From 677529df4158ee9aa1ba55dc3494a449708ca39c Mon Sep 17 00:00:00 2001 From: Nikolay Panchenko Date: Mon, 3 Feb 2025 11:26:14 -0500 Subject: [PATCH 337/509] [stdlib] Removing special handling of `[max|min]` of a bool type `pop.[max|min]` can correctly handle boolean type, therefore no need to have extra code in `max` and `min` functions. MODULAR_ORIG_COMMIT_REV_ID: 626b7b7659d4ac6cc2b762e4c55f69919da8616c --- stdlib/src/builtin/math.mojo | 26 ++++++++++---------------- 1 file changed, 10 insertions(+), 16 deletions(-) diff --git a/stdlib/src/builtin/math.mojo b/stdlib/src/builtin/math.mojo index 4b2bc355ab..897500bb67 100644 --- a/stdlib/src/builtin/math.mojo +++ b/stdlib/src/builtin/math.mojo @@ -192,15 +192,12 @@ fn max(x: SIMD, y: __type_of(x), /) -> __type_of(x): A SIMD vector containing the elementwise maximum of x and y. """ - @parameter - if x.type is DType.bool: - return max(x.cast[DType.uint8](), y.cast[DType.uint8]()).cast[x.type]() - else: - constrained[ - x.type.is_numeric(), "the SIMD type must be numeric or boolean" - ]() + constrained[ + x.type is DType.bool or x.type.is_numeric(), + "the SIMD type must be numeric or boolean", + ]() - return __mlir_op.`pop.max`(x.value, y.value) + return __mlir_op.`pop.max`(x.value, y.value) trait _CopyableGreaterThanComparable(Copyable, GreaterThanComparable): @@ -279,15 +276,12 @@ fn min(x: SIMD, y: __type_of(x), /) -> __type_of(x): A SIMD vector containing the elementwise minimum of x and y. """ - @parameter - if x.type is DType.bool: - return min(x.cast[DType.uint8](), y.cast[DType.uint8]()).cast[x.type]() - else: - constrained[ - x.type.is_numeric(), "the SIMD type must be numeric or boolean" - ]() + constrained[ + x.type is DType.bool or x.type.is_numeric(), + "the SIMD type must be numeric or boolean", + ]() - return __mlir_op.`pop.min`(x.value, y.value) + return __mlir_op.`pop.min`(x.value, y.value) trait _CopyableLessThanComparable(Copyable, LessThanComparable): From 09f0651125677e1d738a48d36c1e60ba1989156f Mon Sep 17 00:00:00 2001 From: ematejska Date: Mon, 3 Feb 2025 14:08:46 -0800 Subject: [PATCH 338/509] Update faq and readme MODULAR_ORIG_COMMIT_REV_ID: e9bb82f5512eab152df1afcee714fe966dcafc01 --- README.md | 5 +++-- docs/faq.md | 65 ++++++++++++++++++++++++++++------------------------- 2 files changed, 37 insertions(+), 33 deletions(-) diff --git a/README.md b/README.md index 3dac78f624..88777c3bb3 100644 --- a/README.md +++ b/README.md @@ -14,8 +14,9 @@ Mojo is a new programming language that bridges the gap between research and production by combining Python syntax and ecosystem with systems -programming and metaprogramming features. Mojo is still young, but it is designed -to become the best way to extend Python over time. +programming and metaprogramming features. Mojo is still young, but it is +designed to write blazing-fast code for CPUs, GPUs, and more as part of +the [MAX Platform](https://www.modular.com/max). This repo includes source code for: diff --git a/docs/faq.md b/docs/faq.md index eb07300b96..6ff7db931b 100644 --- a/docs/faq.md +++ b/docs/faq.md @@ -13,12 +13,14 @@ channels](https://www.modular.com/community). ### Why did you build Mojo? We built Mojo to solve an internal challenge at Modular, and we are using it -extensively in our systems such as our [AI -Engine](/engine). As a result, we are extremely committed to +extensively in our systems such as our [MAX Platform](https://www.modular.com/max). +As a result, we are extremely committed to its long term success and are investing heavily in it. Our overall mission is to unify AI software and we can’t do that without a unified language that can -scale across the AI infrastructure stack. That said, we don’t plan to stop at -AI—the north star is for Mojo to support the whole gamut of general-purpose +scale across the AI infrastructure stack. Our current focus is to unify +CPU+GPU programming with blazing-fast execution on the +[MAX Platform](https://www.modular.com/max). That said, the north star +is for Mojo to support the whole gamut of general-purpose programming over time. For a longer answer, read [Why Mojo](/mojo/why-mojo). @@ -138,9 +140,12 @@ direct programming support for the MLIR intermediate representations. ### Is Mojo only for AI or can it be used for other stuff? -Mojo is a general purpose programming language. We use Mojo at Modular to -develop AI algorithms, but as we grow Mojo into a superset of Python, you can -use it for other things like HPC, data transformations, writing pre/post +Mojo's initial focus is to solve AI programmability challenges. See +[here](https://github.com/modular/max/tree/main/examples/custom_ops) for examples +of how to write custom GPU operations. That being said, +the goal is to grow Mojo into a general purpose programming language. We use Mojo +at Modular to develop AI algorithms, but +you can use it for other things like HPC, data transformations, writing pre/post processing operations, and much more. For examples of how Mojo can be used for other general programming tasks, see our [Mojo examples](https://github.com/modular/mojo/tree/main/examples). @@ -163,22 +168,21 @@ languages (EDSLs) like Triton, read the “Embedded DSLs in Python” section of [Why Mojo](/mojo/why-mojo#embedded-dsls-in-python). -### How does Mojo help with PyTorch and TensorFlow acceleration? +### How does Mojo help with PyTorch acceleration? -Mojo is a general purpose programming language, so it has no specific -implementations for ML training or serving, although we use Mojo as part of the -overall Modular AI stack. The [Modular AI -Engine](/engine), for example, supports deployment of PyTorch -and TensorFlow models, while Mojo is the language we use to write the engine’s -in-house kernels. +We use Mojo as part of the overall Modular AI stack, +[MAX](https://www.modular.com/max) which accelerates PyTorch models. +Mojo is the language we use to write the MAX’s high-performance CPU and GPU graph +operations. ### Does Mojo support distributed execution? -Not alone. You will need to leverage the [Modular AI -Engine](/engine) for that. Mojo is one component of the -Modular stack that makes it easier for you to author highly performant, -portable kernels, but you’ll also need a runtime (or “OS”) that supports graph -level transformations and heterogeneous compute. +Not alone. You will need to leverage the +[MAX Platform](https://www.modular.com/max) +for that. Mojo is one component of the Modular stack that makes it easier +for you to author highly performant, portable CPU and GPU graph operations, +but you’ll also need a runtime (or “OS”) that supports graph level +transformations and heterogeneous compute, which is provided by MAX. ### Will Mojo support web deployment (such as Wasm or WebGPU)? @@ -229,11 +233,11 @@ For lots more information, check out our 3-part blog post series about [how Mojo gets a 35,000x speedup over Python](https://www.modular.com/blog/how-mojo-gets-a-35-000x-speedup-over-python-part-1). -By the way, all the kernels that power the [Modular AI -Engine](/engine) are written in Mojo. We also compared our -matrix multiplication implementation to other state-of-the-art implementations -that are usually written in assembly. To see the results, see [our blog post -about unified matrix +By the way, all the CPU and GPU graph operations that power Modular's +[MAX Platfrom](https://www.modular.com/max) are written in Mojo. +We also compared our matrix multiplication implementation to other +state-of-the-art implementations that are usually written in assembly. +To see the results, see [our blog post about unified matrix multiplication](https://www.modular.com/blog/the-worlds-fastest-unified-matrix-multiplication). ## Performance @@ -242,13 +246,12 @@ multiplication](https://www.modular.com/blog/the-worlds-fastest-unified-matrix-m It’s important to remember that Mojo is a general-purpose programming language, and any AI-related benchmarks will rely heavily upon other framework -components. For example, our in-house kernels for the [Modular AI -Engine](/engine) are all written in Mojo and you can learn more -about our kernel performance in our [matrix multiplication blog +components. For example, our in-house CPU and GPU graph operations that power +Modular's [MAX](https://www.modular.com/max) are all written in +Mojo and you can learn more about performance in our [matrix multiplication blog post](https://www.modular.com/blog/the-worlds-fastest-unified-matrix-multiplication). -For details about our end-to-end model performance relative to the latest -releases of TensorFlow and PyTorch, check out our [performance -dashboard](https://www.modular.com/max/performance). +For details about our end-to-end model performance, read about how we measure +performance at Modular [here](https://www.modular.com/blog/max-gpu-state-of-the-art-throughput-on-a-new-genai-platform). ## Mojo SDK @@ -365,7 +368,7 @@ for more coarse-grain updates. ### Will Mojo be open-sourced? -We expect to open-source Mojo progressively over time as it continues to mature. +We have commited to open-sourcing Mojo in 2026. Mojo is still young, so we will continue to incubate it within Modular until more of its internal architecture is fleshed out. From 4a3c4a5655dae45e7cf7f4e679e1fa526e2d4d5d Mon Sep 17 00:00:00 2001 From: Scott Main Date: Mon, 3 Feb 2025 14:55:09 -0800 Subject: [PATCH 339/509] Remove notice to switch to magic It's been long enough since we deprecated the `modular` tool. MODULAR_ORIG_COMMIT_REV_ID: 8625c1a6733633fc4af60388b8fdaeeea21ca038 --- docs/changelog-released.md | 9 --------- 1 file changed, 9 deletions(-) diff --git a/docs/changelog-released.md b/docs/changelog-released.md index 95ee3fbab8..eb0dd26bc1 100644 --- a/docs/changelog-released.md +++ b/docs/changelog-released.md @@ -11,15 +11,6 @@ To check your current version, run `mojo --version`. To update the version of Mojo for your project with the `magic` package manager, follow the instructions in [Update a package](/magic#update-a-package) to update the `max` package. -:::caution Switch to Magic - -The `modular` command-line tool is deprecated (see [how to uninstall -it](/max/faq#if-you-installed-with-modular-deprecated-1)). We recommend that -you now [manage your packages with `magic`](/magic), but you can also [use -conda](/magic/conda). - -::: - ## v24.6 (2024-12-17) ### ✨ Highlights From e225478aae071a027ccdae69ae27806887c5cddc Mon Sep 17 00:00:00 2001 From: Rasool Sharifi Date: Mon, 3 Feb 2025 19:02:02 -0500 Subject: [PATCH 340/509] [stdlib] Add all swizzle modes to TMA load and multicast Add all swizzle modes to TMA load and multicast MODULAR_ORIG_COMMIT_REV_ID: 009f45488a08cd7bf438a4396881e6c47c2bda33 --- stdlib/src/sys/intrinsics.mojo | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/stdlib/src/sys/intrinsics.mojo b/stdlib/src/sys/intrinsics.mojo index 653e772849..6b7ca6dfaf 100644 --- a/stdlib/src/sys/intrinsics.mojo +++ b/stdlib/src/sys/intrinsics.mojo @@ -1286,7 +1286,7 @@ struct _ClusterIdx: return "llvm.nvvm.read.ptx.sreg.clusterid." + dim @always_inline("nodebug") - fn __getattr__[dim: StringLiteral](self) -> UInt32: + fn __getattr__[dim: StringLiteral](self) -> UInt: """Gets the `x`, `y`, or `z` coordinates of a cluster within a grid. Returns: @@ -1300,7 +1300,9 @@ struct _ClusterIdx: dim in ("x", "y", "z"), "the accessor must be either x, y, or z" ]() alias intrinsic_name = Self._get_intrinsic_name[dim]() - return llvm_intrinsic[intrinsic_name, UInt32, has_side_effect=False]() + return UInt( + Int(llvm_intrinsic[intrinsic_name, UInt32, has_side_effect=False]()) + ) alias cluster_idx = _ClusterIdx() From c4a8caeb51cc00caa9fc4fa9b3970dfd06c070ec Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Tue, 4 Feb 2025 02:34:16 -0800 Subject: [PATCH 341/509] [mojo-lang] Remove the old direct elementwise initializer syntax This removes the `Type{field1: 42, field2: 17}` syntax for direct initializing register passable types. This was legacy syntax - to upgrade your code, add the `@value` decorator to your struct to get a memberwise initializer and use `Type(field1=42, field2 = 17)` instead. MODULAR_ORIG_COMMIT_REV_ID: 38785823341373c2abdee70e26b754f6a061facd --- docs/changelog.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/docs/changelog.md b/docs/changelog.md index f7a8421ca7..3711ca5f2f 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -412,6 +412,10 @@ what we publish. - `StringableCollectionElement` is deprecated, use `WritableCollectionElement` instead which still allows you to construct a `String`, but can avoid intermediary allocations. +- The `Type{field1: 42, field2: 17}` syntax for direct initializing register + passable types has been removed. This was legacy syntax - to upgrade + your code, add the @value decorator to your struct to get a memberwise + initializer and use `Type(field1=42, field2 = 17)` instead. ### 🛠️ Fixed From eb85596bb27eb754f11158295df315fc650c6fe5 Mon Sep 17 00:00:00 2001 From: Arthur Evans Date: Tue, 4 Feb 2025 11:04:42 -0800 Subject: [PATCH 342/509] Clarify that functions can have a single return value, declared using either `-> type` or an `out` argument. MODULAR_ORIG_COMMIT_REV_ID: fc58bdcef8ab0f7b61f30da9c4fd43ba96f756da --- docs/manual/functions.mdx | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/docs/manual/functions.mdx b/docs/manual/functions.mdx index 371eff68ce..20874904d4 100644 --- a/docs/manual/functions.mdx +++ b/docs/manual/functions.mdx @@ -638,10 +638,13 @@ def get_name_tag(owned name: String, out name_tag: NameTag): The `out` argument convention identifies an uninitialized variable that the function must initialize. (This is the same as the `out` convention used in -[struct constructors](/mojo/manual/lifecycle/life#constructor).) A function can -have only one `out` argument. The `out` argument for a named result can appear -anywhere in the argument list, but by convention, it should be the last argument -in the list. +[struct constructors](/mojo/manual/lifecycle/life#constructor).) The `out` +argument for a named result can appear anywhere in the argument list, but by +convention, it should be the last argument in the list. + +A function can declare only one return value, whether it's declared using an +`out` argument or using the standard -> +type syntax. A function with a named result argument doesn't need to include an explicit `return` statement, as shown above. If the function terminates without a `return`, From 2a65660cae458ce95ed2e5dc16781fffb77b01d6 Mon Sep 17 00:00:00 2001 From: Tracy Sharpe <99041446+raiseirql@users.noreply.github.com> Date: Tue, 4 Feb 2025 14:58:25 -0800 Subject: [PATCH 343/509] [stdlib] Fix AMD _printf() handling of many arguments Fix the indexing of the parameter pack when _printf() is given a large number of inputs. MODULAR_ORIG_COMMIT_REV_ID: 8640719a0f9565acdd102fbe09d447a044ebdde0 --- stdlib/src/builtin/io.mojo | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/stdlib/src/builtin/io.mojo b/stdlib/src/builtin/io.mojo index 58283eacbc..c2ff86a746 100644 --- a/stdlib/src/builtin/io.mojo +++ b/stdlib/src/builtin/io.mojo @@ -244,7 +244,7 @@ fn _printf[ @parameter for i in range(num_args): - arguments[i] = _to_uint64(args[i]) + arguments[i] = _to_uint64(args[group + i]) message = printf_append_args( message, num_args, From 658af3a9cc98a26569d2ae080916599dd219680d Mon Sep 17 00:00:00 2001 From: Jack Clayton Date: Wed, 5 Feb 2025 12:23:15 -0500 Subject: [PATCH 344/509] [docs] Fix contributing guide with nightly/main branch change There was still an image that was incorrect for the old setup. Also some other minor cleanup e.g. no need to branch off upstream in case user didn't fork all the branches now that they work off the default branch. MODULAR_ORIG_COMMIT_REV_ID: d4af6bb3e3dc6fbe78504ad22bf8efb2580f5542 --- CONTRIBUTING.md | 13 ++++++------- stdlib/docs/development.md | 2 +- stdlib/docs/images/base-branch.png | Bin 163923 -> 0 bytes 3 files changed, 7 insertions(+), 8 deletions(-) delete mode 100644 stdlib/docs/images/base-branch.png diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 4ad284fa1c..daca213393 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -237,16 +237,16 @@ cd mojo Add the upstream remote and fetch it: ```bash -git remote add upstream git@github.com:modularml/mojo.git +git remote add upstream git@github.com:modular/mojo.git git fetch upstream ``` -#### Branching off nightly +#### Branching off main Make sure to branch off `main` to work on your PR: ```bash -git checkout upstream/main +git checkout main git checkout -b my-fix-pr ``` @@ -311,12 +311,11 @@ You'll see a link to create a PR: ```plaintext remote: Create a pull request for 'my-fix-pr' on GitHub by visiting: -remote: https://github.com/jackos/mojo/pull/new/my-fix-pr +remote: https://github.com/[your-username]/mojo/pull/new/my-fix-pr ``` -Make sure you point it to the `main` branch: - -![Base Branch](stdlib/docs/images/base-branch.png) +It should automatically set the base branch to the upstream `modular/mojo/main`, +but if it doesn't, you can set it manually. Now fill out the details: diff --git a/stdlib/docs/development.md b/stdlib/docs/development.md index 000676598e..1b6e812a4d 100644 --- a/stdlib/docs/development.md +++ b/stdlib/docs/development.md @@ -9,7 +9,7 @@ If this is your first time contributing, first read everything in you need to do the following: 1. [Fork and clone the repo](../../CONTRIBUTING.md#fork-and-clone-the-repo) -2. [Branch off main](../../CONTRIBUTING.md#branching-off-nightly) +2. [Branch off main](../../CONTRIBUTING.md#branching-off-main) 3. [Install the nightly Mojo compiler](../../CONTRIBUTING.md#getting-the-nightly-mojo-compiler) And if you're using VS Code: diff --git a/stdlib/docs/images/base-branch.png b/stdlib/docs/images/base-branch.png deleted file mode 100644 index a65ba47490281d93c0d5f6ce695f05bacd80c3cd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 163923 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 Q0tq3FvBRFMvGGm$52szTO#lD@ From 135a9756ac3773a72406169a87116d997ce47727 Mon Sep 17 00:00:00 2001 From: modularbot Date: Wed, 5 Feb 2025 20:08:11 +0000 Subject: [PATCH 345/509] Update lockfiles to point to latest nightly version: 25.1.0.dev2025020517 --- examples/life/magic.lock | 140 +++++++++++++++++----------------- examples/magic.lock | 140 +++++++++++++++++----------------- examples/operators/magic.lock | 140 +++++++++++++++++----------------- examples/testing/magic.lock | 140 +++++++++++++++++----------------- magic.lock | 140 +++++++++++++++++----------------- 5 files changed, 350 insertions(+), 350 deletions(-) diff --git a/examples/life/magic.lock b/examples/life/magic.lock index d4aa9219b5..9651b71eac 100644 --- a/examples/life/magic.lock +++ b/examples/life/magic.lock @@ -172,12 +172,12 @@ 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-25.1.0.dev2025020316-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025020316-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025020316-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020316-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020517-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025020517-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025020517-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020517-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-25.1.0.dev2025020316-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020517-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_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.15-py312h98912ed_1.conda @@ -453,12 +453,12 @@ 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-25.1.0.dev2025020316-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025020316-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025020316-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020316-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020517-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025020517-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025020517-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020517-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-25.1.0.dev2025020316-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020517-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_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.15-py312hdd3e373_1.conda @@ -717,12 +717,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-25.1.0.dev2025020316-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025020316-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025020316-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020316-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020517-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025020517-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025020517-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020517-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-25.1.0.dev2025020316-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020517-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 @@ -6284,48 +6284,48 @@ packages: license_family: BSD size: 24048 timestamp: 1733219945697 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020316-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020517-release.conda noarch: python - sha256: fa04aab936b2812928f5e277bcf9b99c39ecb469b407da4ef450bb9c6b2b1b09 - md5: cc06b062838bb42ef03d615dc91f928f + sha256: 6396cd052b828d7c4f789dcf74e6ab3e2079de9bc84bd20074d1760c9c97819f + md5: 85b2ffda5c2da000ffa2a9280b8536c5 depends: - - max-core ==25.1.0.dev2025020316 release - - max-python >=25.1.0.dev2025020316,<26.0a0 - - mojo-jupyter ==25.1.0.dev2025020316 release - - mblack ==25.1.0.dev2025020316 release + - max-core ==25.1.0.dev2025020517 release + - max-python >=25.1.0.dev2025020517,<26.0a0 + - mojo-jupyter ==25.1.0.dev2025020517 release + - mblack ==25.1.0.dev2025020517 release license: LicenseRef-Modular-Proprietary size: 9921 - timestamp: 1738599319244 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025020316-release.conda - sha256: 2accd020d7672ee37ca6b1efcf3a7d473d1879a8950e2aca54b0a7c336aaecb3 - md5: b643efbec2de4c1d033737261171fb73 + timestamp: 1738777581246 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025020517-release.conda + sha256: 3ec241b25c5fedc503a58b03a3525dc63476fa2eda83b08e1831f028ff20ff4c + md5: e3e1ce11b2394ec97d5c9bc5e5a20f8d depends: - - mblack ==25.1.0.dev2025020316 release + - mblack ==25.1.0.dev2025020517 release license: LicenseRef-Modular-Proprietary - size: 244981800 - timestamp: 1738599374541 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025020316-release.conda - sha256: 86ba07335c645a2a93e629da708ec8b166bb78a0861f8f5c25f251483a420e3b - md5: 4e72006884a03c55ef53d758d1cf2c42 + size: 244792727 + timestamp: 1738777581246 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025020517-release.conda + sha256: 1228375bfe81051f76aa76d2930eac97b966a81e0b815f0f2bf91389cbc5e22b + md5: 3db990fd7502d1ba2c7b0ef98de91e02 depends: - - mblack ==25.1.0.dev2025020316 release + - mblack ==25.1.0.dev2025020517 release license: LicenseRef-Modular-Proprietary - size: 247551749 - timestamp: 1738599319244 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025020316-release.conda - sha256: d8358654224478f1366b43d9d363d8922f3927c9da29c28af2958f277fab51f0 - md5: c9a3b40307c937630ab20599bd50a2ee + size: 247307353 + timestamp: 1738777505489 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025020517-release.conda + sha256: 47f1d44ae41e1d493b049e5a795a96093eaabf5fb261dd335a0cdd245895dae7 + md5: aed282e275af884afa53d86fc2dfa056 depends: - - mblack ==25.1.0.dev2025020316 release + - mblack ==25.1.0.dev2025020517 release license: LicenseRef-Modular-Proprietary - size: 209875188 - timestamp: 1738619060481 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025020316-release.conda + size: 209788114 + timestamp: 1738779402747 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025020517-release.conda noarch: python - sha256: a063046c75f5cc0c826bca82c030dba613448e76b255103e1fc9183c0dc9aee4 - md5: f44697c7217e8c949a62919af73caafb + sha256: 05695ef5135e95ac0c4f1971007dadaf679b2fddc7b12a529eb526c6e8fe458e + md5: 6bb837833256f109e51188cd44bee92f depends: - - max-core ==25.1.0.dev2025020316 release + - max-core ==25.1.0.dev2025020517 release - python - fastapi - httpx @@ -6345,14 +6345,14 @@ packages: - typing_extensions - uvicorn license: LicenseRef-Modular-Proprietary - size: 120871754 - timestamp: 1738599374542 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025020316-release.conda + size: 120681157 + timestamp: 1738777581246 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025020517-release.conda noarch: python - sha256: fb086fa9278256d4a923bd5280b6ec2ca8b2861d34a141c1343960cbb83d2097 - md5: 1dd74954d08dcab1e1de3c6401cfa344 + sha256: 5bb2a212445a28a94a247e440484cb3fda61b41ed35fe7efb9f15b08ccfc7233 + md5: bbee11044044b5d5b87bac6591a6c14e depends: - - max-core ==25.1.0.dev2025020316 release + - max-core ==25.1.0.dev2025020517 release - python - fastapi - httpx @@ -6372,14 +6372,14 @@ packages: - typing_extensions - uvicorn license: LicenseRef-Modular-Proprietary - size: 123518428 - timestamp: 1738599319244 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025020316-release.conda + size: 123083255 + timestamp: 1738777505490 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025020517-release.conda noarch: python - sha256: 922b3f272f8ccfcafea072a47139f599c3d911e48f026fdada57bb139d740d60 - md5: 7cf83019f7ed2ae02250f01899a1f045 + sha256: cc6cc09eae53533bc60afe3b6c7330f14bff410e160fd4abfe541843e7ec6177 + md5: b70537cb869b1adac9670a0920f5032f depends: - - max-core ==25.1.0.dev2025020316 release + - max-core ==25.1.0.dev2025020517 release - python - fastapi - httpx @@ -6399,12 +6399,12 @@ packages: - typing_extensions - uvicorn license: LicenseRef-Modular-Proprietary - size: 108582366 - timestamp: 1738619060481 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020316-release.conda + size: 108484791 + timestamp: 1738779402747 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020517-release.conda noarch: python - sha256: 394fafcc27e16f2ef0a98c1a07e0fec0cb7f238ff972a153ba9bc9da39772b26 - md5: 7eaf7888650b7941a1475c1f8834797a + sha256: 64f2d36f69f31a3257a699f45944b669c582177000d04aad5665a2c5442a2f85 + md5: 42f3b1611ee59ba8d3b5aee70c382809 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -6415,8 +6415,8 @@ packages: - typing_extensions >=v4.12.2 - python license: MIT - size: 130821 - timestamp: 1738599319244 + size: 130825 + timestamp: 1738777581246 - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda sha256: 78c1bbe1723449c52b7a9df1af2ee5f005209f67e40b6e1d3c7619127c43b1c7 md5: 592132998493b3ff25fd7479396e8351 @@ -6426,18 +6426,18 @@ packages: license_family: MIT size: 14465 timestamp: 1733255681319 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020316-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020517-release.conda noarch: python - sha256: b835fba08c1acc7bcd4ca871b98e013a1bdc72c538a3e307d75d081355c95c76 - md5: 9a263ca62e2cb9b31a0de06053f87b30 + sha256: d57f26218e88f2d8ffc84d06a9022817588e7b5f810a10b60ad7b5153b39dcad + md5: 939c3020651164ebe9c9e39cf512448d depends: - - max-core ==25.1.0.dev2025020316 release + - max-core ==25.1.0.dev2025020517 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22930 - timestamp: 1738599319244 + size: 22926 + timestamp: 1738777581246 - conda: https://conda.anaconda.org/conda-forge/linux-64/mpg123-1.32.9-hc50e24c_0.conda sha256: 39c4700fb3fbe403a77d8cc27352fa72ba744db487559d5d44bf8411bb4ea200 md5: c7f302fd11eeb0987a6a5e1f3aed6a21 diff --git a/examples/magic.lock b/examples/magic.lock index 0747fe8841..1687e801bd 100644 --- a/examples/magic.lock +++ b/examples/magic.lock @@ -133,12 +133,12 @@ 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-25.1.0.dev2025020316-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025020316-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025020316-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020316-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020517-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025020517-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025020517-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020517-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-25.1.0.dev2025020316-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020517-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 @@ -356,12 +356,12 @@ 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-25.1.0.dev2025020316-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025020316-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025020316-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020316-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020517-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025020517-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025020517-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020517-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-25.1.0.dev2025020316-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020517-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 @@ -570,12 +570,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-25.1.0.dev2025020316-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025020316-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025020316-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020316-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020517-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025020517-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025020517-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020517-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-25.1.0.dev2025020316-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020517-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 @@ -4862,48 +4862,48 @@ packages: license_family: BSD size: 24976 timestamp: 1733219849253 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020316-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020517-release.conda noarch: python - sha256: fa04aab936b2812928f5e277bcf9b99c39ecb469b407da4ef450bb9c6b2b1b09 - md5: cc06b062838bb42ef03d615dc91f928f + sha256: 6396cd052b828d7c4f789dcf74e6ab3e2079de9bc84bd20074d1760c9c97819f + md5: 85b2ffda5c2da000ffa2a9280b8536c5 depends: - - max-core ==25.1.0.dev2025020316 release - - max-python >=25.1.0.dev2025020316,<26.0a0 - - mojo-jupyter ==25.1.0.dev2025020316 release - - mblack ==25.1.0.dev2025020316 release + - max-core ==25.1.0.dev2025020517 release + - max-python >=25.1.0.dev2025020517,<26.0a0 + - mojo-jupyter ==25.1.0.dev2025020517 release + - mblack ==25.1.0.dev2025020517 release license: LicenseRef-Modular-Proprietary size: 9921 - timestamp: 1738599319244 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025020316-release.conda - sha256: 2accd020d7672ee37ca6b1efcf3a7d473d1879a8950e2aca54b0a7c336aaecb3 - md5: b643efbec2de4c1d033737261171fb73 + timestamp: 1738777581246 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025020517-release.conda + sha256: 3ec241b25c5fedc503a58b03a3525dc63476fa2eda83b08e1831f028ff20ff4c + md5: e3e1ce11b2394ec97d5c9bc5e5a20f8d depends: - - mblack ==25.1.0.dev2025020316 release + - mblack ==25.1.0.dev2025020517 release license: LicenseRef-Modular-Proprietary - size: 244981800 - timestamp: 1738599374541 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025020316-release.conda - sha256: 86ba07335c645a2a93e629da708ec8b166bb78a0861f8f5c25f251483a420e3b - md5: 4e72006884a03c55ef53d758d1cf2c42 + size: 244792727 + timestamp: 1738777581246 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025020517-release.conda + sha256: 1228375bfe81051f76aa76d2930eac97b966a81e0b815f0f2bf91389cbc5e22b + md5: 3db990fd7502d1ba2c7b0ef98de91e02 depends: - - mblack ==25.1.0.dev2025020316 release + - mblack ==25.1.0.dev2025020517 release license: LicenseRef-Modular-Proprietary - size: 247551749 - timestamp: 1738599319244 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025020316-release.conda - sha256: d8358654224478f1366b43d9d363d8922f3927c9da29c28af2958f277fab51f0 - md5: c9a3b40307c937630ab20599bd50a2ee + size: 247307353 + timestamp: 1738777505489 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025020517-release.conda + sha256: 47f1d44ae41e1d493b049e5a795a96093eaabf5fb261dd335a0cdd245895dae7 + md5: aed282e275af884afa53d86fc2dfa056 depends: - - mblack ==25.1.0.dev2025020316 release + - mblack ==25.1.0.dev2025020517 release license: LicenseRef-Modular-Proprietary - size: 209875188 - timestamp: 1738619060481 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025020316-release.conda + size: 209788114 + timestamp: 1738779402747 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025020517-release.conda noarch: python - sha256: a063046c75f5cc0c826bca82c030dba613448e76b255103e1fc9183c0dc9aee4 - md5: f44697c7217e8c949a62919af73caafb + sha256: 05695ef5135e95ac0c4f1971007dadaf679b2fddc7b12a529eb526c6e8fe458e + md5: 6bb837833256f109e51188cd44bee92f depends: - - max-core ==25.1.0.dev2025020316 release + - max-core ==25.1.0.dev2025020517 release - python - fastapi - httpx @@ -4923,14 +4923,14 @@ packages: - typing_extensions - uvicorn license: LicenseRef-Modular-Proprietary - size: 120871754 - timestamp: 1738599374542 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025020316-release.conda + size: 120681157 + timestamp: 1738777581246 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025020517-release.conda noarch: python - sha256: fb086fa9278256d4a923bd5280b6ec2ca8b2861d34a141c1343960cbb83d2097 - md5: 1dd74954d08dcab1e1de3c6401cfa344 + sha256: 5bb2a212445a28a94a247e440484cb3fda61b41ed35fe7efb9f15b08ccfc7233 + md5: bbee11044044b5d5b87bac6591a6c14e depends: - - max-core ==25.1.0.dev2025020316 release + - max-core ==25.1.0.dev2025020517 release - python - fastapi - httpx @@ -4950,14 +4950,14 @@ packages: - typing_extensions - uvicorn license: LicenseRef-Modular-Proprietary - size: 123518428 - timestamp: 1738599319244 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025020316-release.conda + size: 123083255 + timestamp: 1738777505490 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025020517-release.conda noarch: python - sha256: 922b3f272f8ccfcafea072a47139f599c3d911e48f026fdada57bb139d740d60 - md5: 7cf83019f7ed2ae02250f01899a1f045 + sha256: cc6cc09eae53533bc60afe3b6c7330f14bff410e160fd4abfe541843e7ec6177 + md5: b70537cb869b1adac9670a0920f5032f depends: - - max-core ==25.1.0.dev2025020316 release + - max-core ==25.1.0.dev2025020517 release - python - fastapi - httpx @@ -4977,12 +4977,12 @@ packages: - typing_extensions - uvicorn license: LicenseRef-Modular-Proprietary - size: 108582366 - timestamp: 1738619060481 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020316-release.conda + size: 108484791 + timestamp: 1738779402747 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020517-release.conda noarch: python - sha256: 394fafcc27e16f2ef0a98c1a07e0fec0cb7f238ff972a153ba9bc9da39772b26 - md5: 7eaf7888650b7941a1475c1f8834797a + sha256: 64f2d36f69f31a3257a699f45944b669c582177000d04aad5665a2c5442a2f85 + md5: 42f3b1611ee59ba8d3b5aee70c382809 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -4993,8 +4993,8 @@ packages: - typing_extensions >=v4.12.2 - python license: MIT - size: 130821 - timestamp: 1738599319244 + size: 130825 + timestamp: 1738777581246 - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda sha256: 78c1bbe1723449c52b7a9df1af2ee5f005209f67e40b6e1d3c7619127c43b1c7 md5: 592132998493b3ff25fd7479396e8351 @@ -5004,18 +5004,18 @@ packages: license_family: MIT size: 14465 timestamp: 1733255681319 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020316-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020517-release.conda noarch: python - sha256: b835fba08c1acc7bcd4ca871b98e013a1bdc72c538a3e307d75d081355c95c76 - md5: 9a263ca62e2cb9b31a0de06053f87b30 + sha256: d57f26218e88f2d8ffc84d06a9022817588e7b5f810a10b60ad7b5153b39dcad + md5: 939c3020651164ebe9c9e39cf512448d depends: - - max-core ==25.1.0.dev2025020316 release + - max-core ==25.1.0.dev2025020517 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22930 - timestamp: 1738599319244 + size: 22926 + timestamp: 1738777581246 - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py311h2dc5d0c_2.conda sha256: afaab7a028281d8b5336db2b994fd3f9694862b6ca372c079dc4e84ad768c20a md5: bb8ca118919836624d920b4c44383a15 diff --git a/examples/operators/magic.lock b/examples/operators/magic.lock index cf7d4ac9b4..f624fae33d 100644 --- a/examples/operators/magic.lock +++ b/examples/operators/magic.lock @@ -133,12 +133,12 @@ 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-25.1.0.dev2025020316-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025020316-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025020316-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020316-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020517-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025020517-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025020517-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020517-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-25.1.0.dev2025020316-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020517-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 @@ -356,12 +356,12 @@ 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-25.1.0.dev2025020316-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025020316-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025020316-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020316-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020517-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025020517-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025020517-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020517-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-25.1.0.dev2025020316-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020517-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 @@ -570,12 +570,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-25.1.0.dev2025020316-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025020316-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025020316-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020316-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020517-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025020517-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025020517-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020517-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-25.1.0.dev2025020316-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020517-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 @@ -4862,48 +4862,48 @@ packages: license_family: BSD size: 24048 timestamp: 1733219945697 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020316-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020517-release.conda noarch: python - sha256: fa04aab936b2812928f5e277bcf9b99c39ecb469b407da4ef450bb9c6b2b1b09 - md5: cc06b062838bb42ef03d615dc91f928f + sha256: 6396cd052b828d7c4f789dcf74e6ab3e2079de9bc84bd20074d1760c9c97819f + md5: 85b2ffda5c2da000ffa2a9280b8536c5 depends: - - max-core ==25.1.0.dev2025020316 release - - max-python >=25.1.0.dev2025020316,<26.0a0 - - mojo-jupyter ==25.1.0.dev2025020316 release - - mblack ==25.1.0.dev2025020316 release + - max-core ==25.1.0.dev2025020517 release + - max-python >=25.1.0.dev2025020517,<26.0a0 + - mojo-jupyter ==25.1.0.dev2025020517 release + - mblack ==25.1.0.dev2025020517 release license: LicenseRef-Modular-Proprietary size: 9921 - timestamp: 1738599319244 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025020316-release.conda - sha256: 2accd020d7672ee37ca6b1efcf3a7d473d1879a8950e2aca54b0a7c336aaecb3 - md5: b643efbec2de4c1d033737261171fb73 + timestamp: 1738777581246 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025020517-release.conda + sha256: 3ec241b25c5fedc503a58b03a3525dc63476fa2eda83b08e1831f028ff20ff4c + md5: e3e1ce11b2394ec97d5c9bc5e5a20f8d depends: - - mblack ==25.1.0.dev2025020316 release + - mblack ==25.1.0.dev2025020517 release license: LicenseRef-Modular-Proprietary - size: 244981800 - timestamp: 1738599374541 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025020316-release.conda - sha256: 86ba07335c645a2a93e629da708ec8b166bb78a0861f8f5c25f251483a420e3b - md5: 4e72006884a03c55ef53d758d1cf2c42 + size: 244792727 + timestamp: 1738777581246 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025020517-release.conda + sha256: 1228375bfe81051f76aa76d2930eac97b966a81e0b815f0f2bf91389cbc5e22b + md5: 3db990fd7502d1ba2c7b0ef98de91e02 depends: - - mblack ==25.1.0.dev2025020316 release + - mblack ==25.1.0.dev2025020517 release license: LicenseRef-Modular-Proprietary - size: 247551749 - timestamp: 1738599319244 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025020316-release.conda - sha256: d8358654224478f1366b43d9d363d8922f3927c9da29c28af2958f277fab51f0 - md5: c9a3b40307c937630ab20599bd50a2ee + size: 247307353 + timestamp: 1738777505489 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025020517-release.conda + sha256: 47f1d44ae41e1d493b049e5a795a96093eaabf5fb261dd335a0cdd245895dae7 + md5: aed282e275af884afa53d86fc2dfa056 depends: - - mblack ==25.1.0.dev2025020316 release + - mblack ==25.1.0.dev2025020517 release license: LicenseRef-Modular-Proprietary - size: 209875188 - timestamp: 1738619060481 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025020316-release.conda + size: 209788114 + timestamp: 1738779402747 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025020517-release.conda noarch: python - sha256: a063046c75f5cc0c826bca82c030dba613448e76b255103e1fc9183c0dc9aee4 - md5: f44697c7217e8c949a62919af73caafb + sha256: 05695ef5135e95ac0c4f1971007dadaf679b2fddc7b12a529eb526c6e8fe458e + md5: 6bb837833256f109e51188cd44bee92f depends: - - max-core ==25.1.0.dev2025020316 release + - max-core ==25.1.0.dev2025020517 release - python - fastapi - httpx @@ -4923,14 +4923,14 @@ packages: - typing_extensions - uvicorn license: LicenseRef-Modular-Proprietary - size: 120871754 - timestamp: 1738599374542 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025020316-release.conda + size: 120681157 + timestamp: 1738777581246 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025020517-release.conda noarch: python - sha256: fb086fa9278256d4a923bd5280b6ec2ca8b2861d34a141c1343960cbb83d2097 - md5: 1dd74954d08dcab1e1de3c6401cfa344 + sha256: 5bb2a212445a28a94a247e440484cb3fda61b41ed35fe7efb9f15b08ccfc7233 + md5: bbee11044044b5d5b87bac6591a6c14e depends: - - max-core ==25.1.0.dev2025020316 release + - max-core ==25.1.0.dev2025020517 release - python - fastapi - httpx @@ -4950,14 +4950,14 @@ packages: - typing_extensions - uvicorn license: LicenseRef-Modular-Proprietary - size: 123518428 - timestamp: 1738599319244 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025020316-release.conda + size: 123083255 + timestamp: 1738777505490 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025020517-release.conda noarch: python - sha256: 922b3f272f8ccfcafea072a47139f599c3d911e48f026fdada57bb139d740d60 - md5: 7cf83019f7ed2ae02250f01899a1f045 + sha256: cc6cc09eae53533bc60afe3b6c7330f14bff410e160fd4abfe541843e7ec6177 + md5: b70537cb869b1adac9670a0920f5032f depends: - - max-core ==25.1.0.dev2025020316 release + - max-core ==25.1.0.dev2025020517 release - python - fastapi - httpx @@ -4977,12 +4977,12 @@ packages: - typing_extensions - uvicorn license: LicenseRef-Modular-Proprietary - size: 108582366 - timestamp: 1738619060481 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020316-release.conda + size: 108484791 + timestamp: 1738779402747 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020517-release.conda noarch: python - sha256: 394fafcc27e16f2ef0a98c1a07e0fec0cb7f238ff972a153ba9bc9da39772b26 - md5: 7eaf7888650b7941a1475c1f8834797a + sha256: 64f2d36f69f31a3257a699f45944b669c582177000d04aad5665a2c5442a2f85 + md5: 42f3b1611ee59ba8d3b5aee70c382809 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -4993,8 +4993,8 @@ packages: - typing_extensions >=v4.12.2 - python license: MIT - size: 130821 - timestamp: 1738599319244 + size: 130825 + timestamp: 1738777581246 - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda sha256: 78c1bbe1723449c52b7a9df1af2ee5f005209f67e40b6e1d3c7619127c43b1c7 md5: 592132998493b3ff25fd7479396e8351 @@ -5004,18 +5004,18 @@ packages: license_family: MIT size: 14465 timestamp: 1733255681319 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020316-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020517-release.conda noarch: python - sha256: b835fba08c1acc7bcd4ca871b98e013a1bdc72c538a3e307d75d081355c95c76 - md5: 9a263ca62e2cb9b31a0de06053f87b30 + sha256: d57f26218e88f2d8ffc84d06a9022817588e7b5f810a10b60ad7b5153b39dcad + md5: 939c3020651164ebe9c9e39cf512448d depends: - - max-core ==25.1.0.dev2025020316 release + - max-core ==25.1.0.dev2025020517 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22930 - timestamp: 1738599319244 + size: 22926 + timestamp: 1738777581246 - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py312h178313f_2.conda sha256: b05bc8252a6e957bf4a776ed5e0e61d1ba88cdc46ccb55890c72cc58b10371f4 md5: 5b5e3267d915a107eca793d52e1b780a diff --git a/examples/testing/magic.lock b/examples/testing/magic.lock index cf7d4ac9b4..f624fae33d 100644 --- a/examples/testing/magic.lock +++ b/examples/testing/magic.lock @@ -133,12 +133,12 @@ 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-25.1.0.dev2025020316-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025020316-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025020316-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020316-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020517-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025020517-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025020517-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020517-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-25.1.0.dev2025020316-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020517-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 @@ -356,12 +356,12 @@ 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-25.1.0.dev2025020316-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025020316-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025020316-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020316-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020517-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025020517-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025020517-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020517-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-25.1.0.dev2025020316-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020517-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 @@ -570,12 +570,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-25.1.0.dev2025020316-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025020316-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025020316-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020316-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020517-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025020517-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025020517-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020517-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-25.1.0.dev2025020316-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020517-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 @@ -4862,48 +4862,48 @@ packages: license_family: BSD size: 24048 timestamp: 1733219945697 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020316-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020517-release.conda noarch: python - sha256: fa04aab936b2812928f5e277bcf9b99c39ecb469b407da4ef450bb9c6b2b1b09 - md5: cc06b062838bb42ef03d615dc91f928f + sha256: 6396cd052b828d7c4f789dcf74e6ab3e2079de9bc84bd20074d1760c9c97819f + md5: 85b2ffda5c2da000ffa2a9280b8536c5 depends: - - max-core ==25.1.0.dev2025020316 release - - max-python >=25.1.0.dev2025020316,<26.0a0 - - mojo-jupyter ==25.1.0.dev2025020316 release - - mblack ==25.1.0.dev2025020316 release + - max-core ==25.1.0.dev2025020517 release + - max-python >=25.1.0.dev2025020517,<26.0a0 + - mojo-jupyter ==25.1.0.dev2025020517 release + - mblack ==25.1.0.dev2025020517 release license: LicenseRef-Modular-Proprietary size: 9921 - timestamp: 1738599319244 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025020316-release.conda - sha256: 2accd020d7672ee37ca6b1efcf3a7d473d1879a8950e2aca54b0a7c336aaecb3 - md5: b643efbec2de4c1d033737261171fb73 + timestamp: 1738777581246 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025020517-release.conda + sha256: 3ec241b25c5fedc503a58b03a3525dc63476fa2eda83b08e1831f028ff20ff4c + md5: e3e1ce11b2394ec97d5c9bc5e5a20f8d depends: - - mblack ==25.1.0.dev2025020316 release + - mblack ==25.1.0.dev2025020517 release license: LicenseRef-Modular-Proprietary - size: 244981800 - timestamp: 1738599374541 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025020316-release.conda - sha256: 86ba07335c645a2a93e629da708ec8b166bb78a0861f8f5c25f251483a420e3b - md5: 4e72006884a03c55ef53d758d1cf2c42 + size: 244792727 + timestamp: 1738777581246 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025020517-release.conda + sha256: 1228375bfe81051f76aa76d2930eac97b966a81e0b815f0f2bf91389cbc5e22b + md5: 3db990fd7502d1ba2c7b0ef98de91e02 depends: - - mblack ==25.1.0.dev2025020316 release + - mblack ==25.1.0.dev2025020517 release license: LicenseRef-Modular-Proprietary - size: 247551749 - timestamp: 1738599319244 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025020316-release.conda - sha256: d8358654224478f1366b43d9d363d8922f3927c9da29c28af2958f277fab51f0 - md5: c9a3b40307c937630ab20599bd50a2ee + size: 247307353 + timestamp: 1738777505489 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025020517-release.conda + sha256: 47f1d44ae41e1d493b049e5a795a96093eaabf5fb261dd335a0cdd245895dae7 + md5: aed282e275af884afa53d86fc2dfa056 depends: - - mblack ==25.1.0.dev2025020316 release + - mblack ==25.1.0.dev2025020517 release license: LicenseRef-Modular-Proprietary - size: 209875188 - timestamp: 1738619060481 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025020316-release.conda + size: 209788114 + timestamp: 1738779402747 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025020517-release.conda noarch: python - sha256: a063046c75f5cc0c826bca82c030dba613448e76b255103e1fc9183c0dc9aee4 - md5: f44697c7217e8c949a62919af73caafb + sha256: 05695ef5135e95ac0c4f1971007dadaf679b2fddc7b12a529eb526c6e8fe458e + md5: 6bb837833256f109e51188cd44bee92f depends: - - max-core ==25.1.0.dev2025020316 release + - max-core ==25.1.0.dev2025020517 release - python - fastapi - httpx @@ -4923,14 +4923,14 @@ packages: - typing_extensions - uvicorn license: LicenseRef-Modular-Proprietary - size: 120871754 - timestamp: 1738599374542 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025020316-release.conda + size: 120681157 + timestamp: 1738777581246 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025020517-release.conda noarch: python - sha256: fb086fa9278256d4a923bd5280b6ec2ca8b2861d34a141c1343960cbb83d2097 - md5: 1dd74954d08dcab1e1de3c6401cfa344 + sha256: 5bb2a212445a28a94a247e440484cb3fda61b41ed35fe7efb9f15b08ccfc7233 + md5: bbee11044044b5d5b87bac6591a6c14e depends: - - max-core ==25.1.0.dev2025020316 release + - max-core ==25.1.0.dev2025020517 release - python - fastapi - httpx @@ -4950,14 +4950,14 @@ packages: - typing_extensions - uvicorn license: LicenseRef-Modular-Proprietary - size: 123518428 - timestamp: 1738599319244 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025020316-release.conda + size: 123083255 + timestamp: 1738777505490 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025020517-release.conda noarch: python - sha256: 922b3f272f8ccfcafea072a47139f599c3d911e48f026fdada57bb139d740d60 - md5: 7cf83019f7ed2ae02250f01899a1f045 + sha256: cc6cc09eae53533bc60afe3b6c7330f14bff410e160fd4abfe541843e7ec6177 + md5: b70537cb869b1adac9670a0920f5032f depends: - - max-core ==25.1.0.dev2025020316 release + - max-core ==25.1.0.dev2025020517 release - python - fastapi - httpx @@ -4977,12 +4977,12 @@ packages: - typing_extensions - uvicorn license: LicenseRef-Modular-Proprietary - size: 108582366 - timestamp: 1738619060481 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020316-release.conda + size: 108484791 + timestamp: 1738779402747 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020517-release.conda noarch: python - sha256: 394fafcc27e16f2ef0a98c1a07e0fec0cb7f238ff972a153ba9bc9da39772b26 - md5: 7eaf7888650b7941a1475c1f8834797a + sha256: 64f2d36f69f31a3257a699f45944b669c582177000d04aad5665a2c5442a2f85 + md5: 42f3b1611ee59ba8d3b5aee70c382809 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -4993,8 +4993,8 @@ packages: - typing_extensions >=v4.12.2 - python license: MIT - size: 130821 - timestamp: 1738599319244 + size: 130825 + timestamp: 1738777581246 - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda sha256: 78c1bbe1723449c52b7a9df1af2ee5f005209f67e40b6e1d3c7619127c43b1c7 md5: 592132998493b3ff25fd7479396e8351 @@ -5004,18 +5004,18 @@ packages: license_family: MIT size: 14465 timestamp: 1733255681319 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020316-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020517-release.conda noarch: python - sha256: b835fba08c1acc7bcd4ca871b98e013a1bdc72c538a3e307d75d081355c95c76 - md5: 9a263ca62e2cb9b31a0de06053f87b30 + sha256: d57f26218e88f2d8ffc84d06a9022817588e7b5f810a10b60ad7b5153b39dcad + md5: 939c3020651164ebe9c9e39cf512448d depends: - - max-core ==25.1.0.dev2025020316 release + - max-core ==25.1.0.dev2025020517 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22930 - timestamp: 1738599319244 + size: 22926 + timestamp: 1738777581246 - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py312h178313f_2.conda sha256: b05bc8252a6e957bf4a776ed5e0e61d1ba88cdc46ccb55890c72cc58b10371f4 md5: 5b5e3267d915a107eca793d52e1b780a diff --git a/magic.lock b/magic.lock index 00e98a04e9..4c90f39a1c 100644 --- a/magic.lock +++ b/magic.lock @@ -134,12 +134,12 @@ 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-25.1.0.dev2025020316-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025020316-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025020316-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020316-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020517-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025020517-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025020517-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020517-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-25.1.0.dev2025020316-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020517-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 @@ -358,12 +358,12 @@ 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-25.1.0.dev2025020316-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025020316-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025020316-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020316-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020517-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025020517-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025020517-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020517-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-25.1.0.dev2025020316-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020517-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 @@ -573,12 +573,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-25.1.0.dev2025020316-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025020316-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025020316-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020316-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020517-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025020517-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025020517-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020517-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-25.1.0.dev2025020316-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020517-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 @@ -4874,48 +4874,48 @@ packages: license_family: BSD size: 24048 timestamp: 1733219945697 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020316-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020517-release.conda noarch: python - sha256: fa04aab936b2812928f5e277bcf9b99c39ecb469b407da4ef450bb9c6b2b1b09 - md5: cc06b062838bb42ef03d615dc91f928f + sha256: 6396cd052b828d7c4f789dcf74e6ab3e2079de9bc84bd20074d1760c9c97819f + md5: 85b2ffda5c2da000ffa2a9280b8536c5 depends: - - max-core ==25.1.0.dev2025020316 release - - max-python >=25.1.0.dev2025020316,<26.0a0 - - mojo-jupyter ==25.1.0.dev2025020316 release - - mblack ==25.1.0.dev2025020316 release + - max-core ==25.1.0.dev2025020517 release + - max-python >=25.1.0.dev2025020517,<26.0a0 + - mojo-jupyter ==25.1.0.dev2025020517 release + - mblack ==25.1.0.dev2025020517 release license: LicenseRef-Modular-Proprietary size: 9921 - timestamp: 1738599319244 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025020316-release.conda - sha256: 2accd020d7672ee37ca6b1efcf3a7d473d1879a8950e2aca54b0a7c336aaecb3 - md5: b643efbec2de4c1d033737261171fb73 + timestamp: 1738777581246 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025020517-release.conda + sha256: 3ec241b25c5fedc503a58b03a3525dc63476fa2eda83b08e1831f028ff20ff4c + md5: e3e1ce11b2394ec97d5c9bc5e5a20f8d depends: - - mblack ==25.1.0.dev2025020316 release + - mblack ==25.1.0.dev2025020517 release license: LicenseRef-Modular-Proprietary - size: 244981800 - timestamp: 1738599374541 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025020316-release.conda - sha256: 86ba07335c645a2a93e629da708ec8b166bb78a0861f8f5c25f251483a420e3b - md5: 4e72006884a03c55ef53d758d1cf2c42 + size: 244792727 + timestamp: 1738777581246 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025020517-release.conda + sha256: 1228375bfe81051f76aa76d2930eac97b966a81e0b815f0f2bf91389cbc5e22b + md5: 3db990fd7502d1ba2c7b0ef98de91e02 depends: - - mblack ==25.1.0.dev2025020316 release + - mblack ==25.1.0.dev2025020517 release license: LicenseRef-Modular-Proprietary - size: 247551749 - timestamp: 1738599319244 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025020316-release.conda - sha256: d8358654224478f1366b43d9d363d8922f3927c9da29c28af2958f277fab51f0 - md5: c9a3b40307c937630ab20599bd50a2ee + size: 247307353 + timestamp: 1738777505489 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025020517-release.conda + sha256: 47f1d44ae41e1d493b049e5a795a96093eaabf5fb261dd335a0cdd245895dae7 + md5: aed282e275af884afa53d86fc2dfa056 depends: - - mblack ==25.1.0.dev2025020316 release + - mblack ==25.1.0.dev2025020517 release license: LicenseRef-Modular-Proprietary - size: 209875188 - timestamp: 1738619060481 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025020316-release.conda + size: 209788114 + timestamp: 1738779402747 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025020517-release.conda noarch: python - sha256: a063046c75f5cc0c826bca82c030dba613448e76b255103e1fc9183c0dc9aee4 - md5: f44697c7217e8c949a62919af73caafb + sha256: 05695ef5135e95ac0c4f1971007dadaf679b2fddc7b12a529eb526c6e8fe458e + md5: 6bb837833256f109e51188cd44bee92f depends: - - max-core ==25.1.0.dev2025020316 release + - max-core ==25.1.0.dev2025020517 release - python - fastapi - httpx @@ -4935,14 +4935,14 @@ packages: - typing_extensions - uvicorn license: LicenseRef-Modular-Proprietary - size: 120871754 - timestamp: 1738599374542 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025020316-release.conda + size: 120681157 + timestamp: 1738777581246 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025020517-release.conda noarch: python - sha256: fb086fa9278256d4a923bd5280b6ec2ca8b2861d34a141c1343960cbb83d2097 - md5: 1dd74954d08dcab1e1de3c6401cfa344 + sha256: 5bb2a212445a28a94a247e440484cb3fda61b41ed35fe7efb9f15b08ccfc7233 + md5: bbee11044044b5d5b87bac6591a6c14e depends: - - max-core ==25.1.0.dev2025020316 release + - max-core ==25.1.0.dev2025020517 release - python - fastapi - httpx @@ -4962,14 +4962,14 @@ packages: - typing_extensions - uvicorn license: LicenseRef-Modular-Proprietary - size: 123518428 - timestamp: 1738599319244 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025020316-release.conda + size: 123083255 + timestamp: 1738777505490 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025020517-release.conda noarch: python - sha256: 922b3f272f8ccfcafea072a47139f599c3d911e48f026fdada57bb139d740d60 - md5: 7cf83019f7ed2ae02250f01899a1f045 + sha256: cc6cc09eae53533bc60afe3b6c7330f14bff410e160fd4abfe541843e7ec6177 + md5: b70537cb869b1adac9670a0920f5032f depends: - - max-core ==25.1.0.dev2025020316 release + - max-core ==25.1.0.dev2025020517 release - python - fastapi - httpx @@ -4989,12 +4989,12 @@ packages: - typing_extensions - uvicorn license: LicenseRef-Modular-Proprietary - size: 108582366 - timestamp: 1738619060481 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020316-release.conda + size: 108484791 + timestamp: 1738779402747 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020517-release.conda noarch: python - sha256: 394fafcc27e16f2ef0a98c1a07e0fec0cb7f238ff972a153ba9bc9da39772b26 - md5: 7eaf7888650b7941a1475c1f8834797a + sha256: 64f2d36f69f31a3257a699f45944b669c582177000d04aad5665a2c5442a2f85 + md5: 42f3b1611ee59ba8d3b5aee70c382809 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -5005,8 +5005,8 @@ packages: - typing_extensions >=v4.12.2 - python license: MIT - size: 130821 - timestamp: 1738599319244 + size: 130825 + timestamp: 1738777581246 - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda sha256: 78c1bbe1723449c52b7a9df1af2ee5f005209f67e40b6e1d3c7619127c43b1c7 md5: 592132998493b3ff25fd7479396e8351 @@ -5016,18 +5016,18 @@ packages: license_family: MIT size: 14465 timestamp: 1733255681319 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020316-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020517-release.conda noarch: python - sha256: b835fba08c1acc7bcd4ca871b98e013a1bdc72c538a3e307d75d081355c95c76 - md5: 9a263ca62e2cb9b31a0de06053f87b30 + sha256: d57f26218e88f2d8ffc84d06a9022817588e7b5f810a10b60ad7b5153b39dcad + md5: 939c3020651164ebe9c9e39cf512448d depends: - - max-core ==25.1.0.dev2025020316 release + - max-core ==25.1.0.dev2025020517 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22930 - timestamp: 1738599319244 + size: 22926 + timestamp: 1738777581246 - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py312h178313f_2.conda sha256: b05bc8252a6e957bf4a776ed5e0e61d1ba88cdc46ccb55890c72cc58b10371f4 md5: 5b5e3267d915a107eca793d52e1b780a From b42a59010dda4e7d08878527f6c895f5a59a3ad7 Mon Sep 17 00:00:00 2001 From: Ken Jones <165197230+KenJones-Modular@users.noreply.github.com> Date: Wed, 5 Feb 2025 10:24:57 -0800 Subject: [PATCH 346/509] [docs] Clarified descriptions of error propagation and non-raising functions MODULAR_ORIG_COMMIT_REV_ID: 4bd813d808c26263635f602ecd1619c028ac7c78 --- docs/manual/errors.mdx | 32 +++++++++++++++++++++++++------- 1 file changed, 25 insertions(+), 7 deletions(-) diff --git a/docs/manual/errors.mdx b/docs/manual/errors.mdx index 2fa9d6b66f..b3200ca547 100644 --- a/docs/manual/errors.mdx +++ b/docs/manual/errors.mdx @@ -39,9 +39,10 @@ conditions is the error message that you provide. An error interrupts the current execution flow of your program. If you provide an error handler (as described in [Handle an error](#handle-an-error)) in the -current scope or any calling scope, execution resumes with that handler. If -there is no applicable error handler, your program terminates with a non-zero -exit code and prints the error message. For example: +current function, execution resumes with that handler. If the error isn't +handled in the current function, it propagates to the calling function and so +on. If an error isn't caught by any error handler, your program terminates with +a non-zero exit code and prints the error message. For example: ```output Unhandled exception caught during execution: integer overflow @@ -58,10 +59,27 @@ fn incr(n: Int) raises -> Int: return n + 1 ``` -On the other hand, you **cannot** use the `raises` keyword when defining a -function using the `def` keyword, because `def` already implies that the -function may raise an error. So the following is equivalent to the function -defined above: +If you don't include the `raises` keyword when defining a function with `fn`, +then the function must explicitly handle any errors that might occur in code +that it executes. For example: + +```mojo +# This function doesn't compile because of the unhandled error +fn unhandled_error(n: Int): + print(n, "+ 1 =", incr(n)) + +# This function compiles because it handles the possible error +fn handled_error(n: Int): + try: + print(n, "+ 1 =", incr(n)) + except e: + print("Handled an error:", e) +``` + +In contrast, you **cannot** use the `raises` keyword when defining a +function using the `def` keyword, because `def` always implies that the +function might raise an error. So the following is equivalent to the `incr` +function defined above with `fn`: ```mojo def incr(n: Int) -> Int: From 245ea979f61dd341d61964b3df425b3b487aa37b Mon Sep 17 00:00:00 2001 From: Ken Jones <165197230+KenJones-Modular@users.noreply.github.com> Date: Wed, 5 Feb 2025 16:15:44 -0800 Subject: [PATCH 347/509] [docs] Updated string operators information to reflect 26.1 changes Updated the Operators section of the Mojo manual to document that `StringLiteral` now supports both compile-time and run-time string replication. Also added a tip to use `String()` instead of `+` to concatenate multiple values. MODULAR_ORIG_COMMIT_REV_ID: 089fa452c5e17f2d5c95f04c74c11e14f6460269 --- docs/manual/operators.mdx | 41 +++++++++++++++++++++++++++++++-------- 1 file changed, 33 insertions(+), 8 deletions(-) diff --git a/docs/manual/operators.mdx b/docs/manual/operators.mdx index 5ee235c9b0..0356ec4a93 100644 --- a/docs/manual/operators.mdx +++ b/docs/manual/operators.mdx @@ -528,6 +528,24 @@ Grace Hopper Grace Slick ``` +:::tip +When concatenating multiple values together to form a `String`, using the +multi-argument `String()` constructor is more performant than using multiple +`+` concatenation operators and can improve code readability. For example, +instead of writing this: + +```mojo +result = "The point at (" + String(x) + ", " + String(y) + ")" +``` + +you can write: + +```mojo +result = String("The point at (", x, ", ", y, ")") +``` + +::: + #### String replication The `*` operator replicates a `String` a specified number of times. For example: @@ -542,8 +560,9 @@ print(str2) lalalalala ``` -`StringLiteral` supports the `*` operator for string replication *only* at -compile time. So the following examples compile and run successfully: +`StringLiteral` supports the `*` operator for both compile-time and run-time +string replication. The following examples perform compile-time string +replication resulting in `StringLiteral` values: ```mojo alias divider1 = "=" * 40 @@ -552,7 +571,7 @@ alias divider2 = symbol * 40 # You must define the following function using `fn` because an alias # initializer cannot call a function that can potentially raise an error. -fn generate_divider(char: StringLiteral, repeat: Int) -> StringLiteral: +fn generate_divider(char: StringLiteral, repeat: IntLiteral) -> StringLiteral: return char * repeat alias divider3 = generate_divider("~", 40) # Evaluated at compile-time @@ -568,13 +587,19 @@ print(divider3) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ``` -However, the following examples fail to compile because the replication -operators would be evaluated at run-time: +In contrast, the following examples perform run-time string replication +resulting in `String` values: ```mojo -# Both of these statements would fail to compile -var div1 = "^" * 40 -print("_" * 40) +repeat = 40 +div1 = "^" * repeat +print(div1) +print("_" * repeat) +``` + +```output +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +________________________________________ ``` #### String comparison From 08163c76969517bc814784cd5df4d3a9826e62fa Mon Sep 17 00:00:00 2001 From: Ken Jones <165197230+KenJones-Modular@users.noreply.github.com> Date: Wed, 5 Feb 2025 16:16:06 -0800 Subject: [PATCH 348/509] [docs] Documented walrus operator limitation MODULAR_ORIG_COMMIT_REV_ID: f6879165bbba919a0e2035d38848bac090dba010 --- docs/roadmap.md | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) diff --git a/docs/roadmap.md b/docs/roadmap.md index 764e99495e..05e5bf94da 100644 --- a/docs/roadmap.md +++ b/docs/roadmap.md @@ -474,3 +474,52 @@ var h: String = "hello" # or print(g or String("hello")) ``` + +### Walrus assignment expression limitations + +The Mojo compiler reports an uninitialized value error if an expression uses +multiple "walrus" [assignment +expressions](/mojo/manual/operators#assignment-expressions) to declare more than +one variable. For example: + +```mojo +def A() -> Int: return 42 + +def B() -> String: return "waffles" + +def main(): + if (a := A()) and (b := B()): + print("a =", a) + print("b =", b) +``` + +```output +walrus-conditional.mojo:8:14: error: use of uninitialized value 'b' + print("b =", b) + ^ +walrus-conditional.mojo:6:24: note: 'b' declared here + if (a := A()) and (b := B()): + ^ +``` + +Ideally, the Mojo compiler should compile this code because the second `print()` +statement executes only if a value is assigned to `b`. To work around this +limitation you can explicitly initialize `b` before the `if` statement, like +this: + +```mojo +def A() -> Int: return 42 + +def B() -> String: return "waffles" + +def main(): + b = String() + if (a := A()) and (b := B()): + print("a =", a) + print("b =", b) +``` + +```output +a = 42 +b = waffles +``` From 940a0f7dbeda0d1fdbcf8084f4b3c8ca007d52d7 Mon Sep 17 00:00:00 2001 From: ematejska Date: Wed, 5 Feb 2025 16:51:47 -0800 Subject: [PATCH 349/509] Updating modularml to modular for max and mojo repos now that the Github org changes MODULAR_ORIG_COMMIT_REV_ID: b9ef61ba464a2f508359b05dd9a5bea99b2d34c1 --- CONTRIBUTING.md | 2 +- README.md | 16 ++++++++-------- examples/check_mod.py | 2 +- proposals/byte-as-uint8.md | 2 +- proposals/inferred-parameters.md | 2 +- proposals/lifetimes-keyword-renaming.md | 2 +- proposals/ref-convention.md | 4 ++-- proposals/remove-let-decls.md | 10 +++++----- stdlib/README.md | 2 +- stdlib/docs/development.md | 4 ++-- stdlib/src/builtin/simd.mojo | 2 +- stdlib/test/builtin/test_issue_1004.mojo | 2 +- stdlib/test/builtin/test_issue_1505.mojo | 2 +- stdlib/test/builtin/test_simd.mojo | 4 ++-- stdlib/test/collections/test_list.mojo | 2 +- 15 files changed, 29 insertions(+), 29 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index daca213393..4c39f7729a 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -222,7 +222,7 @@ for more details. #### Fork and clone the repo -Go to the [Mojo repo](https://github.com/modularml/mojo) and click the fork +Go to the [Mojo repo](https://github.com/modular/mojo) and click the fork button: ![Create Fork](stdlib/docs/images/create-fork.png) diff --git a/README.md b/README.md index 88777c3bb3..2a4878c789 100644 --- a/README.md +++ b/README.md @@ -26,11 +26,11 @@ This repo includes source code for: This repo has two primary branches: -- The [`stable`](https://github.com/modularml/mojo/tree/stable) branch, which +- The [`stable`](https://github.com/modular/mojo/tree/stable) branch, which is in sync with the last stable released version of Mojo. Use the examples here if you’re using a [release build of Mojo](#latest-released). -- The [`main`](https://github.com/modularml/mojo/tree/main) branch, which +- The [`main`](https://github.com/modular/mojo/tree/main) branch, which is in sync with the Mojo nightly build and subject to breakage. Use this branch for [contributions](./CONTRIBUTING.md), or if you're using the latest [nightly build of Mojo](#latest-nightly). @@ -79,7 +79,7 @@ When you clone this repo, you'll be on the `main` branch by default, which includes code matching the latest nightly build: ```bash -git clone https://github.com/modularml/mojo.git +git clone https://github.com/modular/mojo.git ``` If you want to instead see the source from the most recent stable @@ -88,13 +88,13 @@ release, then you can switch to the `stable` branch. ## Contributing When you want to report issues or request features, [please create a GitHub -issue here](https://github.com/modularml/mojo/issues). +issue here](https://github.com/modular/mojo/issues). See [here](./CONTRIBUTING.md) for guidelines on filing good bugs. We welcome contributions to this repo on the -[`main`](https://github.com/modularml/mojo/tree/main) +[`main`](https://github.com/modular/mojo/tree/main) branch. If you’d like to contribute to Mojo, please first read our [Contributor -Guide](https://github.com/modularml/mojo/blob/main/CONTRIBUTING.md). +Guide](https://github.com/modular/mojo/blob/main/CONTRIBUTING.md). For more general questions or to chat with other Mojo developers, check out our [Discord](https://discord.gg/modular). @@ -108,6 +108,6 @@ MAX and Mojo usage and distribution are licensed under the ## Thanks to our contributors - - + + diff --git a/examples/check_mod.py b/examples/check_mod.py index 88ef0e75cb..e2f2719906 100644 --- a/examples/check_mod.py +++ b/examples/check_mod.py @@ -18,7 +18,7 @@ FIX = """ ------------------------------------------------------------------------- fix following the steps here: - https://github.com/modularml/mojo/issues/1085#issuecomment-1771403719 + https://github.com/modular/mojo/issues/1085#issuecomment-1771403719 ------------------------------------------------------------------------- """ diff --git a/proposals/byte-as-uint8.md b/proposals/byte-as-uint8.md index 7ff764a60e..9881574ccd 100644 --- a/proposals/byte-as-uint8.md +++ b/proposals/byte-as-uint8.md @@ -40,5 +40,5 @@ and 78 results for `DTypePointer[DType.int8]`. Replacing `DTypePointer[DType.int8]` with `DTypePointer[DType.uint8]` and `Pointer[Int8]` with `Pointer[UInt8]` on case by case bases is a substantial refactoring effort, but it will prevent a certain class of logical bugs (see -). As it is a breaking change in +). As it is a breaking change in sense of API design, it is sensible to do the refactoring as soon as possible. diff --git a/proposals/inferred-parameters.md b/proposals/inferred-parameters.md index b9ae5a7451..f8eb6bf5c1 100644 --- a/proposals/inferred-parameters.md +++ b/proposals/inferred-parameters.md @@ -49,7 +49,7 @@ scalar_param[DType.int32, Int32()]() # 'dt' parameter is required This has been requested multiple times in various forms, especially given the new autoparameterization feature. The current tracking feature request: -- +- ## Proposal diff --git a/proposals/lifetimes-keyword-renaming.md b/proposals/lifetimes-keyword-renaming.md index e39c39b32b..3b783202e7 100644 --- a/proposals/lifetimes-keyword-renaming.md +++ b/proposals/lifetimes-keyword-renaming.md @@ -2,7 +2,7 @@ Date: October 2024 -Previous revision: [[June 2023](https://github.com/modularml/mojo/blob/f8d7cb8ba4c21ec3fbc87e21609b3fd56cab695f/proposals/lifetimes-keyword-renaming.md)] +Previous revision: [[June 2023](https://github.com/modular/mojo/blob/f8d7cb8ba4c21ec3fbc87e21609b3fd56cab695f/proposals/lifetimes-keyword-renaming.md)] The design of the Mojo references subsystem is starting to come together. To finalize the major points, it helps to come back and re-evaluate several early diff --git a/proposals/ref-convention.md b/proposals/ref-convention.md index 3d69a9f9ce..53b608e51e 100644 --- a/proposals/ref-convention.md +++ b/proposals/ref-convention.md @@ -12,7 +12,7 @@ Mojo’s safe references have evolved and iterated a lot. From the initial compiler re-plumbing that made memory-only types possible, to threading lifetimes through everything with the introduction of `!lit.ref` to the development of a “user-space” Reference type, to the recent discussions about -[adding automatic dereference to Reference](https://github.com/modularml/mojo/discussions/2594), +[adding automatic dereference to Reference](https://github.com/modular/mojo/discussions/2594), we’ve been iteratively improving the model with a goal of ending up with something powerful and explainable. @@ -42,7 +42,7 @@ Along the way, we’ve had a number of challenges to address: to `Reference`. It would be awesome to clarify this. 5. We still need to - [reconsider which keywords](https://github.com/modularml/mojo/blob/main/proposals/lifetimes-keyword-renaming.md) + [reconsider which keywords](https://github.com/modular/mojo/blob/main/proposals/lifetimes-keyword-renaming.md) to use for argument conventions. The `inout` keyword, for example, is problematic because it works with types that are not movable or copyable. The callee doesn’t actually move things in and out, it takes a mutable reference. diff --git a/proposals/remove-let-decls.md b/proposals/remove-let-decls.md index 34f8eb3b7c..1d1f8a3692 100644 --- a/proposals/remove-let-decls.md +++ b/proposals/remove-let-decls.md @@ -1,6 +1,6 @@ # Simplifying Mojo🔥 - let's get rid of `let` -Chris Lattner, Dec 5, 2023, Status: **Accepted**, [discussion thread](https://github.com/modularml/mojo/discussions/1456#discussioncomment-8358722) +Chris Lattner, Dec 5, 2023, Status: **Accepted**, [discussion thread](https://github.com/modular/mojo/discussions/1456#discussioncomment-8358722) Mojo is still a new language, and is rapidly evolving. We’re learning a lot from other languages, but Mojo poses its own set of tradeoffs that indicate a @@ -10,7 +10,7 @@ One of the early decisions made in Mojo's development is that it adopts the `let` and `var` design point that Swift uses. This whitepaper argues that we should switch to a simpler model by jettisoning `let` and just retaining `var` (and implicit Python-style variable declarations in `def`). This has also been -[suggested by the community](https://github.com/modularml/mojo/issues/1205). +[suggested by the community](https://github.com/modular/mojo/issues/1205). Note that immutability and value semantics remain an important part of the Mojo design, this is just about removing "named immutable variables". Immutable @@ -31,7 +31,7 @@ variables aren't a core programming concept, and not something required to achieve Mojo's goals. 2. The naming of `let` caused a lot of early [heat and -debate](https://github.com/modularml/mojo/discussions/120). Other programming +debate](https://github.com/modular/mojo/discussions/120). Other programming languages have a wide range of design points (e.g. `const` in C/C++ and Javascript) and there is a divergence of naming for all these things: `let`, `val`, `const`, etc, etc. @@ -43,7 +43,7 @@ three concepts going around: `alias`, `let`, and `var`. Most of the uses of 4. Both Swift and Rust encourage immutable values - Swift (and currently Mojo) warn about unneeded mutability, Rust makes mutability more verbose (`let mut`), and some propose that Mojo [make mutability more -verbose](https://github.com/modularml/mojo/issues/451). This cuts very hard +verbose](https://github.com/modular/mojo/issues/451). This cuts very hard against a lot of the design center of Python, which doesn’t even have this concept at all: it would be weird to make it the default, but if we don’t, then why bother having it? @@ -112,7 +112,7 @@ This would eliminate a bunch of complexity in the compiler as well: like: “`let x: Int; x = 1; use(x); x = 2; use(x)`” even though the original lifetime of the first “`x=1`” naturally ended and “`x`” is uninitialized before being assigned to. This has always been a design smell, and it - [doesn’t work right](https://github.com/modularml/mojo/issues/1414). + [doesn’t work right](https://github.com/modular/mojo/issues/1414). This proposal will not affect runtime performance at all as far as we know. diff --git a/stdlib/README.md b/stdlib/README.md index f9ec6c7224..d64144c02d 100644 --- a/stdlib/README.md +++ b/stdlib/README.md @@ -54,6 +54,6 @@ See the license file in the repository for more details. ## Support For any inquiries, bug reports, or feature requests, please [open an -issue](https://github.com/modularml/mojo/issues) on the GitHub repository. See +issue](https://github.com/modular/mojo/issues) on the GitHub repository. See the [Mojo contributor guide](../CONTRIBUTING.md) for guidelines on filing good bugs. diff --git a/stdlib/docs/development.md b/stdlib/docs/development.md index 1b6e812a4d..37cfb5182e 100644 --- a/stdlib/docs/development.md +++ b/stdlib/docs/development.md @@ -107,7 +107,7 @@ You can do the same for a directory with All the tests should pass on the `main` branch with the nightly Mojo compiler. If you've pulled the latest changes and they're still failing please [open a GitHub -issue](https://github.com/modularml/mojo/issues/new?assignees=&labels=bug%2Cmojo&projects=&template=mojo_bug_report.yaml&title=%5BBUG%5D). +issue](https://github.com/modular/mojo/issues/new?assignees=&labels=bug%2Cmojo&projects=&template=mojo_bug_report.yaml&title=%5BBUG%5D). ### Running a subset of the Standard Library Unit Tests @@ -135,7 +135,7 @@ disabled, you can set the environment variable `MOJO_ENABLE_ASSERTIONS_IN_TESTS=0`. If you run into any issues when running the tests, -[please file an issue](https://github.com/modularml/mojo/issues) and we’ll take +[please file an issue](https://github.com/modular/mojo/issues) and we’ll take a look. ## Formatting changes diff --git a/stdlib/src/builtin/simd.mojo b/stdlib/src/builtin/simd.mojo index 2c9065e06d..fb9b239707 100644 --- a/stdlib/src/builtin/simd.mojo +++ b/stdlib/src/builtin/simd.mojo @@ -2247,7 +2247,7 @@ struct SIMD[type: DType, size: Int]( # Not an overload of shuffle because there is ambiguity # with fn shuffle[*mask: Int](self, other: Self) -> Self: - # TODO: move to the utils directory - see https://github.com/modularml/mojo/issues/3477 + # TODO: move to the utils directory - see https://github.com/modular/mojo/issues/3477 @always_inline fn _dynamic_shuffle[ mask_size: Int, // diff --git a/stdlib/test/builtin/test_issue_1004.mojo b/stdlib/test/builtin/test_issue_1004.mojo index f6cfe49792..e80c944316 100644 --- a/stdlib/test/builtin/test_issue_1004.mojo +++ b/stdlib/test/builtin/test_issue_1004.mojo @@ -11,7 +11,7 @@ # limitations under the License. # ===----------------------------------------------------------------------=== # # RUN: %mojo %s -# Test for https://github.com/modularml/mojo/issues/1004 +# Test for https://github.com/modular/mojo/issues/1004 from testing import assert_equal diff --git a/stdlib/test/builtin/test_issue_1505.mojo b/stdlib/test/builtin/test_issue_1505.mojo index f76f0dc4a8..712c1d9c0c 100644 --- a/stdlib/test/builtin/test_issue_1505.mojo +++ b/stdlib/test/builtin/test_issue_1505.mojo @@ -11,7 +11,7 @@ # limitations under the License. # ===----------------------------------------------------------------------=== # # RUN: %mojo %s -# Test for https://github.com/modularml/mojo/issues/1505 +# Test for https://github.com/modular/mojo/issues/1505 from random import random_ui64 diff --git a/stdlib/test/builtin/test_simd.mojo b/stdlib/test/builtin/test_simd.mojo index 16684aedfb..b89a35e70e 100644 --- a/stdlib/test/builtin/test_simd.mojo +++ b/stdlib/test/builtin/test_simd.mojo @@ -119,7 +119,7 @@ def test_convert_simd_to_string(): var c: SIMD[DType.index, 8] = 7 assert_equal(String(c), "[7, 7, 7, 7, 7, 7, 7, 7]") - # TODO: uncomment when https://github.com/modularml/mojo/issues/2353 is fixed + # TODO: uncomment when https://github.com/modular/mojo/issues/2353 is fixed # assert_equal(String(UInt32(-1)), "4294967295") assert_equal(String(UInt64(-1)), "18446744073709551615") @@ -129,7 +129,7 @@ def test_convert_simd_to_string(): assert_equal(String(UInt64(16646288086500911323)), "16646288086500911323") - # https://github.com/modularml/mojo/issues/556 + # https://github.com/modular/mojo/issues/556 assert_equal( String( SIMD[DType.uint64, 4]( diff --git a/stdlib/test/collections/test_list.mojo b/stdlib/test/collections/test_list.mojo index 159c3bd73e..e7af56f5a8 100644 --- a/stdlib/test/collections/test_list.mojo +++ b/stdlib/test/collections/test_list.mojo @@ -574,7 +574,7 @@ def test_no_extra_copies_with_sugared_set_by_field(): # Ensure correct behavior of __copyinit__ # as reported in GH issue 27875 internally and -# https://github.com/modularml/mojo/issues/1493 +# https://github.com/modular/mojo/issues/1493 def test_list_copy_constructor(): var vec = List[Int](capacity=1) var vec_copy = vec From 8610d5f8567798da275c6c7320a0a26fecf4c3fb Mon Sep 17 00:00:00 2001 From: abdul dakkak Date: Wed, 5 Feb 2025 20:53:01 -0800 Subject: [PATCH 350/509] [All] Rename float8 types to be more pythonic MODULAR_ORIG_COMMIT_REV_ID: f4b3478c009197a3aa92a2abc8080fe3db9c4932 --- stdlib/src/builtin/_format_float.mojo | 28 +++++++----- stdlib/src/builtin/dtype.mojo | 66 +++++++++++++-------------- stdlib/src/builtin/simd.mojo | 28 ++++++------ stdlib/src/prelude/__init__.mojo | 8 ++-- stdlib/src/utils/numerics.mojo | 64 +++++++++++++------------- 5 files changed, 99 insertions(+), 95 deletions(-) diff --git a/stdlib/src/builtin/_format_float.mojo b/stdlib/src/builtin/_format_float.mojo index 16e33a7972..9f5fde5fe1 100644 --- a/stdlib/src/builtin/_format_float.mojo +++ b/stdlib/src/builtin/_format_float.mojo @@ -105,17 +105,21 @@ fn _write_float[W: Writer, type: DType, //](mut writer: W, value: Scalar[type]): constrained[type.is_floating_point()]() @parameter - if type is DType.float8e5m2: - return writer.write(float8e5m2_to_str[Int(bitcast[DType.uint8](value))]) - elif type is DType.float8e4m3: - return writer.write(float8e4m3_to_str[Int(bitcast[DType.uint8](value))]) - elif type is DType.float8e5m2fnuz: + if type is DType.float8_e5m2: return writer.write( - float8e5m2fnuz_to_str[Int(bitcast[DType.uint8](value))] + float8_e5m2_to_str[Int(bitcast[DType.uint8](value))] ) - elif type is DType.float8e4m3fnuz: + elif type is DType.float8_e4m3: return writer.write( - float8e4m3fnuz_to_str[Int(bitcast[DType.uint8](value))] + float8_e4m3_to_str[Int(bitcast[DType.uint8](value))] + ) + elif type is DType.float8_e5m2fnuz: + return writer.write( + float8_e5m2fnuz_to_str[Int(bitcast[DType.uint8](value))] + ) + elif type is DType.float8_e4m3fnuz: + return writer.write( + float8_e4m3fnuz_to_str[Int(bitcast[DType.uint8](value))] ) else: # Upcast the float16 types to float32 @@ -1424,7 +1428,7 @@ alias cache_f64 = StaticTuple[_UInt128, 619]( _UInt128(0xF70867153AA2DB38, 0xB8CBEE4FC66D1EA8), ) -alias float8e5m2_to_str = StaticTuple[StringLiteral, 256]( +alias float8_e5m2_to_str = StaticTuple[StringLiteral, 256]( "0.0", "1.52587890625e-05", "3.0517578125e-05", @@ -1683,7 +1687,7 @@ alias float8e5m2_to_str = StaticTuple[StringLiteral, 256]( "nan", ) -alias float8e4m3_to_str = StaticTuple[StringLiteral, 256]( +alias float8_e4m3_to_str = StaticTuple[StringLiteral, 256]( "0.0", "0.001953125", "0.00390625", @@ -1942,7 +1946,7 @@ alias float8e4m3_to_str = StaticTuple[StringLiteral, 256]( "nan", ) -alias float8e5m2fnuz_to_str = StaticTuple[StringLiteral, 256]( +alias float8_e5m2fnuz_to_str = StaticTuple[StringLiteral, 256]( "0.0", "7.62939453125e-06", "1.52587890625e-05", @@ -2201,7 +2205,7 @@ alias float8e5m2fnuz_to_str = StaticTuple[StringLiteral, 256]( "-57344.0", ) -alias float8e4m3fnuz_to_str = StaticTuple[StringLiteral, 256]( +alias float8_e4m3fnuz_to_str = StaticTuple[StringLiteral, 256]( "0.0", "0.0009765625", "0.001953125", diff --git a/stdlib/src/builtin/dtype.mojo b/stdlib/src/builtin/dtype.mojo index d474424927..0b38797ac8 100644 --- a/stdlib/src/builtin/dtype.mojo +++ b/stdlib/src/builtin/dtype.mojo @@ -64,7 +64,7 @@ struct DType( """Represents a signed integer type whose bitwidth is 64.""" alias uint64 = DType(__mlir_attr.`#kgen.dtype.constant : !kgen.dtype`) """Represents an unsigned integer type whose bitwidth is 64.""" - alias float8e5m2 = DType( + alias float8_e5m2 = DType( __mlir_attr.`#kgen.dtype.constant : !kgen.dtype` ) """Represents a FP8E5M2 floating point format from the [OFP8 @@ -80,7 +80,7 @@ struct DType( - -inf: 11111100 - -0: 10000000 """ - alias float8e5m2fnuz = DType( + alias float8_e5m2fnuz = DType( __mlir_attr.`#kgen.dtype.constant : !kgen.dtype` ) """Represents a FP8E5M2FNUZ floating point format. @@ -94,7 +94,7 @@ struct DType( - fn: finite (no inf or -inf encodings) - uz: unsigned zero (no -0 encoding) """ - alias float8e4m3 = DType( + alias float8_e4m3 = DType( __mlir_attr.`#kgen.dtype.constant : !kgen.dtype` ) """Represents a FP8E4M3 floating point format from the [OFP8 @@ -112,7 +112,7 @@ struct DType( - -0: 10000000 - fn: finite (no inf or -inf encodings) """ - alias float8e4m3fnuz = DType( + alias float8_e4m3fnuz = DType( __mlir_attr.`#kgen.dtype.constant : !kgen.dtype` ) """Represents a FP8E4M3FNUZ floating point format. @@ -195,14 +195,14 @@ struct DType( return DType.uint64 elif str == "index": return DType.index - elif str == "float8e5m2": - return DType.float8e5m2 - elif str == "float8e5m2fnuz": - return DType.float8e5m2fnuz - elif str == "float8e4m3": - return DType.float8e4m3 - elif str == "float8e4m3fnuz": - return DType.float8e4m3fnuz + elif str == "float8_e5m2": + return DType.float8_e5m2 + elif str == "float8_e5m2fnuz": + return DType.float8_e5m2fnuz + elif str == "float8_e4m3": + return DType.float8_e4m3 + elif str == "float8_e4m3fnuz": + return DType.float8_e4m3fnuz elif str == "bfloat16": return DType.bfloat16 elif str == "float16": @@ -260,14 +260,14 @@ struct DType( return writer.write("uint64") if self == DType.index: return writer.write("index") - if self == DType.float8e5m2: - return writer.write("float8e5m2") - if self == DType.float8e5m2fnuz: - return writer.write("float8e5m2fnuz") - if self == DType.float8e4m3: - return writer.write("float8e4m3") - if self == DType.float8e4m3fnuz: - return writer.write("float8e4m3fnuz") + if self == DType.float8_e5m2: + return writer.write("float8_e5m2") + if self == DType.float8_e5m2fnuz: + return writer.write("float8_e5m2fnuz") + if self == DType.float8_e4m3: + return writer.write("float8_e4m3") + if self == DType.float8_e4m3fnuz: + return writer.write("float8_e4m3fnuz") if self == DType.bfloat16: return writer.write("bfloat16") if self == DType.float16: @@ -470,17 +470,17 @@ struct DType( @always_inline("nodebug") fn is_float8(self) -> Bool: """Returns True if the type is a 8bit-precision floating point type, - e.g. float8e5m2, float8e5m2fnuz, float8e4m3 and float8e4m3fnuz. + e.g. float8_e5m2, float8_e5m2fnuz, float8_e4m3 and float8_e4m3fnuz. Returns: True if the type is a 8bit-precision float, false otherwise. """ return self in ( - DType.float8e5m2, - DType.float8e4m3, - DType.float8e5m2fnuz, - DType.float8e4m3fnuz, + DType.float8_e5m2, + DType.float8_e4m3, + DType.float8_e5m2fnuz, + DType.float8_e4m3fnuz, ) @always_inline("nodebug") @@ -535,14 +535,14 @@ struct DType( return sizeof[DType.bool]() if self == DType.index: return sizeof[DType.index]() - if self == DType.float8e5m2: - return sizeof[DType.float8e5m2]() - if self == DType.float8e5m2fnuz: - return sizeof[DType.float8e5m2fnuz]() - if self == DType.float8e4m3: - return sizeof[DType.float8e4m3]() - if self == DType.float8e4m3fnuz: - return sizeof[DType.float8e4m3fnuz]() + if self == DType.float8_e5m2: + return sizeof[DType.float8_e5m2]() + if self == DType.float8_e5m2fnuz: + return sizeof[DType.float8_e5m2fnuz]() + if self == DType.float8_e4m3: + return sizeof[DType.float8_e4m3]() + if self == DType.float8_e4m3fnuz: + return sizeof[DType.float8_e4m3fnuz]() if self == DType.bfloat16: return sizeof[DType.bfloat16]() if self == DType.float16: diff --git a/stdlib/src/builtin/simd.mojo b/stdlib/src/builtin/simd.mojo index fb9b239707..5683dd0557 100644 --- a/stdlib/src/builtin/simd.mojo +++ b/stdlib/src/builtin/simd.mojo @@ -96,7 +96,7 @@ alias Int64 = Scalar[DType.int64] alias UInt64 = Scalar[DType.uint64] """Represents a 64-bit unsigned scalar integer.""" -alias Float8e5m2 = Scalar[DType.float8e5m2] +alias Float8_e5m2 = Scalar[DType.float8_e5m2] """Represents a FP8E5M2 floating point format from the [OFP8 standard](https://www.opencompute.org/documents/ocp-8-bit-floating-point-specification-ofp8-revision-1-0-2023-12-01-pdf-1). @@ -110,7 +110,7 @@ The 8 bits are encoded as `seeeeemm`: - -inf: 11111100 - -0: 10000000 """ -alias Float8e5m2fnuz = Scalar[DType.float8e5m2fnuz] +alias Float8_e5m2fnuz = Scalar[DType.float8_e5m2fnuz] """Represents a FP8E5M2FNUZ floating point format. The 8 bits are encoded as `seeeeemm`: @@ -122,7 +122,7 @@ The 8 bits are encoded as `seeeeemm`: - fn: finite (no inf or -inf encodings) - uz: unsigned zero (no -0 encoding) """ -alias Float8e4m3 = Scalar[DType.float8e4m3] +alias Float8_e4m3 = Scalar[DType.float8_e4m3] """Represents a FP8E4M3 floating point format from the [OFP8 standard](https://www.opencompute.org/documents/ocp-8-bit-floating-point-specification-ofp8-revision-1-0-2023-12-01-pdf-1). @@ -138,7 +138,7 @@ The 8 bits are encoded as `seeeemmm`: - -0: 10000000 - fn: finite (no inf or -inf encodings) """ -alias Float8e4m3fnuz = Scalar[DType.float8e4m3fnuz] +alias Float8_e4m3fnuz = Scalar[DType.float8_e4m3fnuz] """Represents a FP8E4M3FNUZ floating point format. The 8 bits are encoded as `seeeemmm`: @@ -556,7 +556,7 @@ struct SIMD[type: DType, size: Int]( # TODO (#36686): This introduces unneeded casts here to work around # parameter if issues. @parameter - if type is DType.float8e4m3: + if type is DType.float8_e4m3: self = SIMD[type, size]( __mlir_op.`pop.simd.splat`[ _type = __mlir_type[ @@ -574,7 +574,7 @@ struct SIMD[type: DType, size: Int]( ) ) ) - elif type is DType.float8e4m3fnuz: + elif type is DType.float8_e4m3fnuz: self = SIMD[type, size]( __mlir_op.`pop.simd.splat`[ _type = __mlir_type[ @@ -592,7 +592,7 @@ struct SIMD[type: DType, size: Int]( ) ) ) - elif type is DType.float8e5m2: + elif type is DType.float8_e5m2: self = SIMD[type, size]( __mlir_op.`pop.simd.splat`[ _type = __mlir_type[ @@ -610,7 +610,7 @@ struct SIMD[type: DType, size: Int]( ) ) ) - elif type is DType.float8e5m2fnuz: + elif type is DType.float8_e5m2fnuz: self = SIMD[type, size]( __mlir_op.`pop.simd.splat`[ _type = __mlir_type[ @@ -1830,7 +1830,7 @@ struct SIMD[type: DType, size: Int]( return self.cast[DType.float32]().cast[target]() @parameter - if target in (DType.float8e4m3, DType.float8e5m2): + if target in (DType.float8_e4m3, DType.float8_e5m2): # TODO(KERN-1488): use gpu (H100) instruction to convert from fp16 to fp8 return rebind[SIMD[target, size]]( _convert_f32_to_float8[size=size, target=target]( @@ -1841,7 +1841,7 @@ struct SIMD[type: DType, size: Int]( ) @parameter - if type in (DType.float8e4m3, DType.float8e5m2): + if type in (DType.float8_e4m3, DType.float8_e5m2): constrained[ target in (DType.float32, DType.float16, DType.bfloat16), ( @@ -3198,7 +3198,7 @@ fn _convert_float8_to_f32_scaler[ ](x: Scalar[type]) -> Scalar[DType.float32]: var kF32_NaN: UInt32 = 0x7FFFFFFF var FP8_NUM_BITS = 8 - var IS_E4M3 = type is DType.float8e4m3 + var IS_E4M3 = type is DType.float8_e4m3 var FP8_NUM_MANTISSA_BITS = FPUtils[type].mantissa_width() var FP8_NUM_EXPONENT_BITS = FPUtils[type].exponent_width() var FP32_NUM_BITS = 32 @@ -3283,7 +3283,7 @@ fn _convert_float8_to_f16[ ](val: SIMD[type, size],) -> SIMD[DType.float16, size]: @parameter if is_nvidia_gpu() and _is_sm_9x(): - alias asm_prefix = "cvt.rn.f16x2.e4m3x2" if type is DType.float8e4m3 else "cvt.rn.f16x2.e5m2x2" + alias asm_prefix = "cvt.rn.f16x2.e4m3x2" if type is DType.float8_e4m3 else "cvt.rn.f16x2.e5m2x2" var val_uint8 = bitcast[DType.uint8](val) @parameter @@ -3325,7 +3325,7 @@ fn _convert_f32_to_float8[ ](val: SIMD[type, size],) -> SIMD[target, size]: @parameter if is_nvidia_gpu() and _is_sm_9x(): - alias asm_prefix = "cvt.rn.satfinite.e4m3x2.f32" if target is DType.float8e4m3 else "cvt.rn.satfinite.e5m2x2.f32" + alias asm_prefix = "cvt.rn.satfinite.e4m3x2.f32" if target is DType.float8_e4m3 else "cvt.rn.satfinite.e5m2x2.f32" @parameter if size > 1: @@ -3374,7 +3374,7 @@ fn _convert_f32_to_float8_scaler[ ](x: Scalar[type]) -> Scalar[target]: # software implementation rounds toward nearest even - alias IS_E4M3 = target is DType.float8e4m3 + alias IS_E4M3 = target is DType.float8_e4m3 alias FP8_NUM_MANTISSA_BITS = FPUtils[target].mantissa_width() alias FP8_NUM_EXPONENT_BITS = FPUtils[target].exponent_width() alias FP32_NUM_BITS = bitwidthof[type]() diff --git a/stdlib/src/prelude/__init__.mojo b/stdlib/src/prelude/__init__.mojo index 72de0eea4f..56dc6be9b4 100644 --- a/stdlib/src/prelude/__init__.mojo +++ b/stdlib/src/prelude/__init__.mojo @@ -88,10 +88,10 @@ from builtin.simd import ( SIMD, BFloat16, Byte, - Float8e5m2, - Float8e5m2fnuz, - Float8e4m3, - Float8e4m3fnuz, + Float8_e5m2, + Float8_e5m2fnuz, + Float8_e4m3, + Float8_e4m3fnuz, Float16, Float32, Float64, diff --git a/stdlib/src/utils/numerics.mojo b/stdlib/src/utils/numerics.mojo index d39f43cee9..4eddc38a80 100644 --- a/stdlib/src/utils/numerics.mojo +++ b/stdlib/src/utils/numerics.mojo @@ -67,9 +67,9 @@ struct FPUtils[ """ @parameter - if type in (DType.float8e4m3, DType.float8e4m3fnuz): + if type in (DType.float8_e4m3, DType.float8_e4m3fnuz): return 3 - elif type in (DType.float8e5m2, DType.float8e5m2fnuz): + elif type in (DType.float8_e5m2, DType.float8_e5m2fnuz): return 2 elif type is DType.float16: return 10 @@ -94,9 +94,9 @@ struct FPUtils[ """ @parameter - if type in (DType.float8e4m3, DType.float8e4m3fnuz): + if type in (DType.float8_e4m3, DType.float8_e4m3fnuz): return 8 - elif type in (DType.float8e5m2, DType.float8e5m2fnuz, DType.float16): + elif type in (DType.float8_e5m2, DType.float8_e5m2fnuz, DType.float16): return 16 elif type in (DType.bfloat16, DType.float32): return 128 @@ -114,9 +114,9 @@ struct FPUtils[ """ @parameter - if type in (DType.float8e4m3, DType.float8e4m3fnuz): + if type in (DType.float8_e4m3, DType.float8_e4m3fnuz): return 4 - elif type in (DType.float8e5m2, DType.float8e5m2fnuz, DType.float16): + elif type in (DType.float8_e5m2, DType.float8_e5m2fnuz, DType.float16): return 5 elif type in (DType.float32, DType.bfloat16): return 8 @@ -144,7 +144,7 @@ struct FPUtils[ """ @parameter - if type in (DType.float8e4m3fnuz, DType.float8e5m2fnuz): + if type in (DType.float8_e4m3fnuz, DType.float8_e5m2fnuz): return Self.max_exponent() else: return Self.max_exponent() - 1 @@ -511,14 +511,14 @@ fn nan[type: DType]() -> Scalar[type]: """ @parameter - if type is DType.float8e5m2: + if type is DType.float8_e5m2: return rebind[__mlir_type[`!pop.scalar<`, type.value, `>`]]( __mlir_op.`kgen.param.constant`[ _type = __mlir_type[`!pop.scalar`], value = __mlir_attr[`#pop.simd<"nan"> : !pop.scalar`], ]() ) - elif type is DType.float8e5m2fnuz: + elif type is DType.float8_e5m2fnuz: return rebind[__mlir_type[`!pop.scalar<`, type.value, `>`]]( __mlir_op.`kgen.param.constant`[ _type = __mlir_type[`!pop.scalar`], @@ -527,14 +527,14 @@ fn nan[type: DType]() -> Scalar[type]: ], ]() ) - elif type is DType.float8e4m3: + elif type is DType.float8_e4m3: return rebind[__mlir_type[`!pop.scalar<`, type.value, `>`]]( __mlir_op.`kgen.param.constant`[ _type = __mlir_type[`!pop.scalar`], value = __mlir_attr[`#pop.simd<"nan"> : !pop.scalar`], ]() ) - elif type is DType.float8e4m3fnuz: + elif type is DType.float8_e4m3fnuz: return rebind[__mlir_type[`!pop.scalar<`, type.value, `>`]]( __mlir_op.`kgen.param.constant`[ _type = __mlir_type[`!pop.scalar`], @@ -600,18 +600,18 @@ fn isnan[ @parameter if not type.is_floating_point() or type in ( - DType.float8e4m3fnuz, - DType.float8e5m2fnuz, + DType.float8_e4m3fnuz, + DType.float8_e5m2fnuz, ): return False alias int_dtype = _integral_type_of[type]() @parameter - if type is DType.float8e4m3: + if type is DType.float8_e4m3: return (bitcast[int_dtype, simd_width](val) & 0x7F) == 0x7F - elif type is DType.float8e5m2: - # For the float8e5m2 type NaN is limited to 0x7F and 0xFF values. + elif type is DType.float8_e5m2: + # For the float8_e5m2 type NaN is limited to 0x7F and 0xFF values. # 7D, 7E, 7F are positive NaNs; FD, FE, FF are negative NaNs. return (bitcast[int_dtype, simd_width](val) & 0x7F) > 0x7C elif type is DType.float16: @@ -649,14 +649,14 @@ fn inf[type: DType]() -> Scalar[type]: """ @parameter - if type is DType.float8e5m2: + if type is DType.float8_e5m2: return rebind[__mlir_type[`!pop.scalar<`, type.value, `>`]]( __mlir_op.`kgen.param.constant`[ _type = __mlir_type[`!pop.scalar`], value = __mlir_attr[`#pop.simd<"inf"> : !pop.scalar`], ]() ) - elif type is DType.float8e5m2fnuz: + elif type is DType.float8_e5m2fnuz: return rebind[__mlir_type[`!pop.scalar<`, type.value, `>`]]( __mlir_op.`kgen.param.constant`[ _type = __mlir_type[`!pop.scalar`], @@ -665,14 +665,14 @@ fn inf[type: DType]() -> Scalar[type]: ], ]() ) - elif type is DType.float8e4m3: + elif type is DType.float8_e4m3: return rebind[__mlir_type[`!pop.scalar<`, type.value, `>`]]( __mlir_op.`kgen.param.constant`[ _type = __mlir_type[`!pop.scalar`], value = __mlir_attr[`#pop.simd<"inf"> : !pop.scalar`], ]() ) - elif type is DType.float8e4m3fnuz: + elif type is DType.float8_e4m3fnuz: return rebind[__mlir_type[`!pop.scalar<`, type.value, `>`]]( __mlir_op.`kgen.param.constant`[ _type = __mlir_type[`!pop.scalar`], @@ -734,14 +734,14 @@ fn neg_inf[type: DType]() -> Scalar[type]: """ @parameter - if type is DType.float8e5m2: + if type is DType.float8_e5m2: return rebind[__mlir_type[`!pop.scalar<`, type.value, `>`]]( __mlir_op.`kgen.param.constant`[ _type = __mlir_type[`!pop.scalar`], value = __mlir_attr[`#pop.simd<"-inf"> : !pop.scalar`], ]() ) - elif type is DType.float8e5m2fnuz: + elif type is DType.float8_e5m2fnuz: return rebind[__mlir_type[`!pop.scalar<`, type.value, `>`]]( __mlir_op.`kgen.param.constant`[ _type = __mlir_type[`!pop.scalar`], @@ -750,14 +750,14 @@ fn neg_inf[type: DType]() -> Scalar[type]: ], ]() ) - elif type is DType.float8e4m3: + elif type is DType.float8_e4m3: return rebind[__mlir_type[`!pop.scalar<`, type.value, `>`]]( __mlir_op.`kgen.param.constant`[ _type = __mlir_type[`!pop.scalar`], value = __mlir_attr[`#pop.simd<"-inf"> : !pop.scalar`], ]() ) - elif type is DType.float8e4m3fnuz: + elif type is DType.float8_e4m3fnuz: return rebind[__mlir_type[`!pop.scalar<`, type.value, `>`]]( __mlir_op.`kgen.param.constant`[ _type = __mlir_type[`!pop.scalar`], @@ -837,11 +837,11 @@ fn max_finite[type: DType]() -> Scalar[type]: return 9223372036854775807 elif type is DType.uint64: return 18446744073709551615 - elif type is DType.float8e4m3: + elif type is DType.float8_e4m3: return 448 - elif type is DType.float8e4m3fnuz: + elif type is DType.float8_e4m3fnuz: return 240 - elif type in (DType.float8e5m2, DType.float8e5m2fnuz): + elif type in (DType.float8_e5m2, DType.float8_e5m2fnuz): return 57344 elif type is DType.float16: return 65504 @@ -973,12 +973,12 @@ fn isinf[ @parameter if not type.is_floating_point() or type in ( - DType.float8e4m3fnuz, - DType.float8e5m2fnuz, + DType.float8_e4m3fnuz, + DType.float8_e5m2fnuz, ): return False - elif type is DType.float8e5m2: - # For the float8e5m2 both 7C and FC are infinity. + elif type is DType.float8_e5m2: + # For the float8_e5m2 both 7C and FC are infinity. alias int_dtype = _integral_type_of[type]() return (bitcast[int_dtype, simd_width](val) & 0x7F) == 0x7C @@ -1044,7 +1044,7 @@ fn get_accum_type[type: DType]() -> DType: """ return DType.float32 if ( - type.is_half_float() or type in (DType.float8e4m3, DType.float8e5m2) + type.is_half_float() or type in (DType.float8_e4m3, DType.float8_e5m2) ) else type From 53f48472858ca7093b37fa2ec181965eac42f29f Mon Sep 17 00:00:00 2001 From: modularbot Date: Thu, 6 Feb 2025 07:55:16 +0000 Subject: [PATCH 351/509] Update lockfiles to point to latest nightly version: 25.1.0.dev2025020605 --- examples/life/magic.lock | 178 +++++++++++++++++----------------- examples/magic.lock | 178 +++++++++++++++++----------------- examples/operators/magic.lock | 178 +++++++++++++++++----------------- examples/testing/magic.lock | 178 +++++++++++++++++----------------- magic.lock | 178 +++++++++++++++++----------------- 5 files changed, 445 insertions(+), 445 deletions(-) diff --git a/examples/life/magic.lock b/examples/life/magic.lock index 9651b71eac..5560428e0a 100644 --- a/examples/life/magic.lock +++ b/examples/life/magic.lock @@ -9,7 +9,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.11-py312h178313f_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.12-py312h178313f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/alsa-lib-1.2.13-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda @@ -172,12 +172,12 @@ 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-25.1.0.dev2025020517-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025020517-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025020517-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020517-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020605-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025020605-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025020605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020605-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-25.1.0.dev2025020517-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020605-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_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.15-py312h98912ed_1.conda @@ -290,7 +290,7 @@ environments: linux-aarch64: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.11-py312hcc812fe_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.12-py312hcc812fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/alsa-lib-1.2.13-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda @@ -453,12 +453,12 @@ 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-25.1.0.dev2025020517-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025020517-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025020517-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020517-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020605-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025020605-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025020605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020605-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-25.1.0.dev2025020517-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020605-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_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.15-py312hdd3e373_1.conda @@ -570,7 +570,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.6-h02f22dd_0.conda osx-arm64: - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.11-py312h998013c_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.12-py312h998013c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.8.0-pyhd8ed1ab_0.conda @@ -717,12 +717,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-25.1.0.dev2025020517-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025020517-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025020517-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020517-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020605-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025020605-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025020605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020605-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-25.1.0.dev2025020517-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020605-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 @@ -871,9 +871,9 @@ packages: license_family: PSF size: 19351 timestamp: 1733332029649 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.11-py312h178313f_0.conda - sha256: 2e817805e8a4fed33f23f116ff5649f8651af693328e9ed82d9d11a951338693 - md5: 8219afa093757bbe07b9825eb1973ed9 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.12-py312h178313f_0.conda + sha256: 223f271deceaf71d0cbee21162084104a6eca06e79c04ecb322706be3e406ea1 + md5: 9f96d8b6fb9bab11e46c12132283b5b1 depends: - __glibc >=2.17,<3.0.a0 - aiohappyeyeballs >=2.3.0 @@ -890,11 +890,11 @@ packages: platform: linux license: MIT AND Apache-2.0 license_family: Apache - size: 915358 - timestamp: 1734597073870 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.11-py312hcc812fe_0.conda - sha256: f28e81e458d19df4ca0002f8a92d7f647fa25e8179887a8676801dfe44edb1f2 - md5: 11fa88136d9bf39d2136b2378f7c10be + size: 915782 + timestamp: 1738824701518 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.12-py312hcc812fe_0.conda + sha256: 8d865017a2f2b2ab9a23e0ab325730c79fb7dc38246f46f4b58da24d7a324805 + md5: e26817b48ca6e2035f69d88165a792f6 depends: - aiohappyeyeballs >=2.3.0 - aiosignal >=1.1.2 @@ -911,11 +911,11 @@ packages: platform: linux license: MIT AND Apache-2.0 license_family: Apache - size: 902422 - timestamp: 1734597104529 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.11-py312h998013c_0.conda - sha256: 446f078e7a7b892894d7f4851a278b7834ffb4f5632313646a55c3abe13690d4 - md5: c69c904691364cfb27d15aa7153e9c29 + size: 901058 + timestamp: 1738823269469 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.12-py312h998013c_0.conda + sha256: a4d04942bdeedbb7260b41eafb0302b6f8c3799f578c4389984c084a8fc34c16 + md5: 7675cee14b7e7d9ccf17ad37a4bdf53a depends: - __osx >=11.0 - aiohappyeyeballs >=2.3.0 @@ -932,8 +932,8 @@ packages: platform: osx license: MIT AND Apache-2.0 license_family: Apache - size: 875711 - timestamp: 1734597277258 + size: 889104 + timestamp: 1738823362301 - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda sha256: 7de8ced1918bbdadecf8e1c1c68237fe5709c097bd9e0d254f4cad118f4345d0 md5: 1a3981115a398535dbe3f6d5faae3d36 @@ -6284,48 +6284,48 @@ packages: license_family: BSD size: 24048 timestamp: 1733219945697 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020517-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020605-release.conda noarch: python - sha256: 6396cd052b828d7c4f789dcf74e6ab3e2079de9bc84bd20074d1760c9c97819f - md5: 85b2ffda5c2da000ffa2a9280b8536c5 + sha256: f33974d10b1d4e642f287392b461a9437bffa776547f3537116d8018caf3da7c + md5: 61f314b8a3d2ddaa878b1056e09e48eb depends: - - max-core ==25.1.0.dev2025020517 release - - max-python >=25.1.0.dev2025020517,<26.0a0 - - mojo-jupyter ==25.1.0.dev2025020517 release - - mblack ==25.1.0.dev2025020517 release + - max-core ==25.1.0.dev2025020605 release + - max-python >=25.1.0.dev2025020605,<26.0a0 + - mojo-jupyter ==25.1.0.dev2025020605 release + - mblack ==25.1.0.dev2025020605 release license: LicenseRef-Modular-Proprietary - size: 9921 - timestamp: 1738777581246 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025020517-release.conda - sha256: 3ec241b25c5fedc503a58b03a3525dc63476fa2eda83b08e1831f028ff20ff4c - md5: e3e1ce11b2394ec97d5c9bc5e5a20f8d + size: 9922 + timestamp: 1738819257916 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025020605-release.conda + sha256: f4f507695eebb8fbbd6107922b4a2d211ab622983f34a24fc8036faf2a7887e3 + md5: 3d4f12391220243dcfc810b5352b2a37 depends: - - mblack ==25.1.0.dev2025020517 release + - mblack ==25.1.0.dev2025020605 release license: LicenseRef-Modular-Proprietary - size: 244792727 - timestamp: 1738777581246 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025020517-release.conda - sha256: 1228375bfe81051f76aa76d2930eac97b966a81e0b815f0f2bf91389cbc5e22b - md5: 3db990fd7502d1ba2c7b0ef98de91e02 + size: 244769750 + timestamp: 1738819214550 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025020605-release.conda + sha256: e2a216b17d89af7cb2aa1a77a7b8416f04724fe0adbf1d36637b36c632b3517a + md5: 8207a6065094dbb73c472a03ea6df87d depends: - - mblack ==25.1.0.dev2025020517 release + - mblack ==25.1.0.dev2025020605 release license: LicenseRef-Modular-Proprietary - size: 247307353 - timestamp: 1738777505489 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025020517-release.conda - sha256: 47f1d44ae41e1d493b049e5a795a96093eaabf5fb261dd335a0cdd245895dae7 - md5: aed282e275af884afa53d86fc2dfa056 + size: 247282125 + timestamp: 1738819257916 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025020605-release.conda + sha256: 6bf41ea344e035b21701a362dd22265eeaa72c08687287b7c13a664b163d893d + md5: c34a8e1ead4712284ec549d122aa5f9c depends: - - mblack ==25.1.0.dev2025020517 release + - mblack ==25.1.0.dev2025020605 release license: LicenseRef-Modular-Proprietary - size: 209788114 - timestamp: 1738779402747 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025020517-release.conda + size: 209659254 + timestamp: 1738820968072 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025020605-release.conda noarch: python - sha256: 05695ef5135e95ac0c4f1971007dadaf679b2fddc7b12a529eb526c6e8fe458e - md5: 6bb837833256f109e51188cd44bee92f + sha256: d8a81b52c2a513d083e81f2217e98409a1a0d885a8c446bf4a5852f6c8612725 + md5: b1adba04b753ac70558cedaee35fe306 depends: - - max-core ==25.1.0.dev2025020517 release + - max-core ==25.1.0.dev2025020605 release - python - fastapi - httpx @@ -6345,14 +6345,14 @@ packages: - typing_extensions - uvicorn license: LicenseRef-Modular-Proprietary - size: 120681157 - timestamp: 1738777581246 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025020517-release.conda + size: 120666001 + timestamp: 1738819214550 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025020605-release.conda noarch: python - sha256: 5bb2a212445a28a94a247e440484cb3fda61b41ed35fe7efb9f15b08ccfc7233 - md5: bbee11044044b5d5b87bac6591a6c14e + sha256: 505eee35cbd7705c48c9d561cb6f38479fb2f3c7d893c51d930c9b4e16da7104 + md5: 9c5aaecd6d6500c081363552c952c213 depends: - - max-core ==25.1.0.dev2025020517 release + - max-core ==25.1.0.dev2025020605 release - python - fastapi - httpx @@ -6372,14 +6372,14 @@ packages: - typing_extensions - uvicorn license: LicenseRef-Modular-Proprietary - size: 123083255 - timestamp: 1738777505490 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025020517-release.conda + size: 123043775 + timestamp: 1738819257916 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025020605-release.conda noarch: python - sha256: cc6cc09eae53533bc60afe3b6c7330f14bff410e160fd4abfe541843e7ec6177 - md5: b70537cb869b1adac9670a0920f5032f + sha256: b1d2614caf1da1bca20540127b0f71b6357f75b155eb93bac4fcaa10b5737f7e + md5: be243c36de2750e5a51af50a571e0e98 depends: - - max-core ==25.1.0.dev2025020517 release + - max-core ==25.1.0.dev2025020605 release - python - fastapi - httpx @@ -6399,12 +6399,12 @@ packages: - typing_extensions - uvicorn license: LicenseRef-Modular-Proprietary - size: 108484791 - timestamp: 1738779402747 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020517-release.conda + size: 108461286 + timestamp: 1738820968072 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020605-release.conda noarch: python - sha256: 64f2d36f69f31a3257a699f45944b669c582177000d04aad5665a2c5442a2f85 - md5: 42f3b1611ee59ba8d3b5aee70c382809 + sha256: 8cbc7067cdf1cce1a11e2b385168697793c4090e37fcee65c19b0d3782320ce8 + md5: b8dc96fb459fbeb13a3dcee463b17613 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -6415,8 +6415,8 @@ packages: - typing_extensions >=v4.12.2 - python license: MIT - size: 130825 - timestamp: 1738777581246 + size: 130824 + timestamp: 1738819257916 - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda sha256: 78c1bbe1723449c52b7a9df1af2ee5f005209f67e40b6e1d3c7619127c43b1c7 md5: 592132998493b3ff25fd7479396e8351 @@ -6426,18 +6426,18 @@ packages: license_family: MIT size: 14465 timestamp: 1733255681319 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020517-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020605-release.conda noarch: python - sha256: d57f26218e88f2d8ffc84d06a9022817588e7b5f810a10b60ad7b5153b39dcad - md5: 939c3020651164ebe9c9e39cf512448d + sha256: a98de01d436333c23597e626195c5d49272c1c5d3359889979bafb8f19d4f3bf + md5: f68f7d08fc12083075182da8482fcfa9 depends: - - max-core ==25.1.0.dev2025020517 release + - max-core ==25.1.0.dev2025020605 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22926 - timestamp: 1738777581246 + size: 22925 + timestamp: 1738819257916 - conda: https://conda.anaconda.org/conda-forge/linux-64/mpg123-1.32.9-hc50e24c_0.conda sha256: 39c4700fb3fbe403a77d8cc27352fa72ba744db487559d5d44bf8411bb4ea200 md5: c7f302fd11eeb0987a6a5e1f3aed6a21 diff --git a/examples/magic.lock b/examples/magic.lock index 1687e801bd..74137e0fa7 100644 --- a/examples/magic.lock +++ b/examples/magic.lock @@ -9,7 +9,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.11-py311h2dc5d0c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.12-py311h2dc5d0c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.8.0-pyhd8ed1ab_0.conda @@ -133,12 +133,12 @@ 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-25.1.0.dev2025020517-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025020517-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025020517-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020517-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020605-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025020605-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025020605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020605-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-25.1.0.dev2025020517-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020605-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 @@ -231,7 +231,7 @@ environments: linux-aarch64: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.11-py311h58d527c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.12-py311h58d527c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.8.0-pyhd8ed1ab_0.conda @@ -356,12 +356,12 @@ 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-25.1.0.dev2025020517-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025020517-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025020517-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020517-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020605-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025020605-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025020605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020605-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-25.1.0.dev2025020517-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020605-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 @@ -453,7 +453,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.6-h02f22dd_0.conda osx-arm64: - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.11-py311h4921393_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.12-py311h4921393_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.8.0-pyhd8ed1ab_0.conda @@ -570,12 +570,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-25.1.0.dev2025020517-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025020517-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025020517-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020517-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020605-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025020605-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025020605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020605-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-25.1.0.dev2025020517-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020605-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 @@ -711,9 +711,9 @@ packages: license_family: PSF size: 19351 timestamp: 1733332029649 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.11-py311h2dc5d0c_0.conda - sha256: 36f9d3a88ece3048582551435f85f494911c805b188650b2589ffded2b52d74f - md5: 098c05da2799d9300eec94c24a7c8bda +- conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.12-py311h2dc5d0c_0.conda + sha256: c067eb2bd14e6b093e53ea7196a2ccbad77dccbb9e34bef5e5afe83fdae23ad6 + md5: 42ebc5f3f372926eea5ed4871b3d4c61 depends: - __glibc >=2.17,<3.0.a0 - aiohappyeyeballs >=2.3.0 @@ -730,11 +730,11 @@ packages: platform: linux license: MIT AND Apache-2.0 license_family: Apache - size: 922661 - timestamp: 1734597050134 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.11-py311h58d527c_0.conda - sha256: c2e4d66d513172964276b234f4ce083ced8bbcad66dd587af43712c3c64f0aa8 - md5: 768cae9a9d28a575e7242f189b5fefb7 + size: 926040 + timestamp: 1738824347720 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.12-py311h58d527c_0.conda + sha256: 8f8ce8eb087fde132f176fe8eb81efb9f9553e8a6c5dd4f728b683cd6a2d93b6 + md5: 8e389dbe375b30fa7fba7dd1ad1b5976 depends: - aiohappyeyeballs >=2.3.0 - aiosignal >=1.1.2 @@ -751,11 +751,11 @@ packages: platform: linux license: MIT AND Apache-2.0 license_family: Apache - size: 915731 - timestamp: 1734597110765 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.11-py311h4921393_0.conda - sha256: ab72cf46f71f1a611c0ad9a8abf144b8cfd6d5d49363513d9a9d9c14d97ead97 - md5: a478957d38ef52e856c11429fd505ec6 + size: 915118 + timestamp: 1738823356948 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.12-py311h4921393_0.conda + sha256: 8168d5859c28ec55c5c555975020a6509950aa9f3c92a35076e18ea31e416da6 + md5: bac8306af4a2368a82c4440286c185ca depends: - __osx >=11.0 - aiohappyeyeballs >=2.3.0 @@ -772,8 +772,8 @@ packages: platform: osx license: MIT AND Apache-2.0 license_family: Apache - size: 881820 - timestamp: 1734597274648 + size: 888949 + timestamp: 1738823298947 - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda sha256: 7de8ced1918bbdadecf8e1c1c68237fe5709c097bd9e0d254f4cad118f4345d0 md5: 1a3981115a398535dbe3f6d5faae3d36 @@ -4862,48 +4862,48 @@ packages: license_family: BSD size: 24976 timestamp: 1733219849253 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020517-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020605-release.conda noarch: python - sha256: 6396cd052b828d7c4f789dcf74e6ab3e2079de9bc84bd20074d1760c9c97819f - md5: 85b2ffda5c2da000ffa2a9280b8536c5 + sha256: f33974d10b1d4e642f287392b461a9437bffa776547f3537116d8018caf3da7c + md5: 61f314b8a3d2ddaa878b1056e09e48eb depends: - - max-core ==25.1.0.dev2025020517 release - - max-python >=25.1.0.dev2025020517,<26.0a0 - - mojo-jupyter ==25.1.0.dev2025020517 release - - mblack ==25.1.0.dev2025020517 release + - max-core ==25.1.0.dev2025020605 release + - max-python >=25.1.0.dev2025020605,<26.0a0 + - mojo-jupyter ==25.1.0.dev2025020605 release + - mblack ==25.1.0.dev2025020605 release license: LicenseRef-Modular-Proprietary - size: 9921 - timestamp: 1738777581246 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025020517-release.conda - sha256: 3ec241b25c5fedc503a58b03a3525dc63476fa2eda83b08e1831f028ff20ff4c - md5: e3e1ce11b2394ec97d5c9bc5e5a20f8d + size: 9922 + timestamp: 1738819257916 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025020605-release.conda + sha256: f4f507695eebb8fbbd6107922b4a2d211ab622983f34a24fc8036faf2a7887e3 + md5: 3d4f12391220243dcfc810b5352b2a37 depends: - - mblack ==25.1.0.dev2025020517 release + - mblack ==25.1.0.dev2025020605 release license: LicenseRef-Modular-Proprietary - size: 244792727 - timestamp: 1738777581246 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025020517-release.conda - sha256: 1228375bfe81051f76aa76d2930eac97b966a81e0b815f0f2bf91389cbc5e22b - md5: 3db990fd7502d1ba2c7b0ef98de91e02 + size: 244769750 + timestamp: 1738819214550 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025020605-release.conda + sha256: e2a216b17d89af7cb2aa1a77a7b8416f04724fe0adbf1d36637b36c632b3517a + md5: 8207a6065094dbb73c472a03ea6df87d depends: - - mblack ==25.1.0.dev2025020517 release + - mblack ==25.1.0.dev2025020605 release license: LicenseRef-Modular-Proprietary - size: 247307353 - timestamp: 1738777505489 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025020517-release.conda - sha256: 47f1d44ae41e1d493b049e5a795a96093eaabf5fb261dd335a0cdd245895dae7 - md5: aed282e275af884afa53d86fc2dfa056 + size: 247282125 + timestamp: 1738819257916 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025020605-release.conda + sha256: 6bf41ea344e035b21701a362dd22265eeaa72c08687287b7c13a664b163d893d + md5: c34a8e1ead4712284ec549d122aa5f9c depends: - - mblack ==25.1.0.dev2025020517 release + - mblack ==25.1.0.dev2025020605 release license: LicenseRef-Modular-Proprietary - size: 209788114 - timestamp: 1738779402747 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025020517-release.conda + size: 209659254 + timestamp: 1738820968072 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025020605-release.conda noarch: python - sha256: 05695ef5135e95ac0c4f1971007dadaf679b2fddc7b12a529eb526c6e8fe458e - md5: 6bb837833256f109e51188cd44bee92f + sha256: d8a81b52c2a513d083e81f2217e98409a1a0d885a8c446bf4a5852f6c8612725 + md5: b1adba04b753ac70558cedaee35fe306 depends: - - max-core ==25.1.0.dev2025020517 release + - max-core ==25.1.0.dev2025020605 release - python - fastapi - httpx @@ -4923,14 +4923,14 @@ packages: - typing_extensions - uvicorn license: LicenseRef-Modular-Proprietary - size: 120681157 - timestamp: 1738777581246 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025020517-release.conda + size: 120666001 + timestamp: 1738819214550 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025020605-release.conda noarch: python - sha256: 5bb2a212445a28a94a247e440484cb3fda61b41ed35fe7efb9f15b08ccfc7233 - md5: bbee11044044b5d5b87bac6591a6c14e + sha256: 505eee35cbd7705c48c9d561cb6f38479fb2f3c7d893c51d930c9b4e16da7104 + md5: 9c5aaecd6d6500c081363552c952c213 depends: - - max-core ==25.1.0.dev2025020517 release + - max-core ==25.1.0.dev2025020605 release - python - fastapi - httpx @@ -4950,14 +4950,14 @@ packages: - typing_extensions - uvicorn license: LicenseRef-Modular-Proprietary - size: 123083255 - timestamp: 1738777505490 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025020517-release.conda + size: 123043775 + timestamp: 1738819257916 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025020605-release.conda noarch: python - sha256: cc6cc09eae53533bc60afe3b6c7330f14bff410e160fd4abfe541843e7ec6177 - md5: b70537cb869b1adac9670a0920f5032f + sha256: b1d2614caf1da1bca20540127b0f71b6357f75b155eb93bac4fcaa10b5737f7e + md5: be243c36de2750e5a51af50a571e0e98 depends: - - max-core ==25.1.0.dev2025020517 release + - max-core ==25.1.0.dev2025020605 release - python - fastapi - httpx @@ -4977,12 +4977,12 @@ packages: - typing_extensions - uvicorn license: LicenseRef-Modular-Proprietary - size: 108484791 - timestamp: 1738779402747 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020517-release.conda + size: 108461286 + timestamp: 1738820968072 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020605-release.conda noarch: python - sha256: 64f2d36f69f31a3257a699f45944b669c582177000d04aad5665a2c5442a2f85 - md5: 42f3b1611ee59ba8d3b5aee70c382809 + sha256: 8cbc7067cdf1cce1a11e2b385168697793c4090e37fcee65c19b0d3782320ce8 + md5: b8dc96fb459fbeb13a3dcee463b17613 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -4993,8 +4993,8 @@ packages: - typing_extensions >=v4.12.2 - python license: MIT - size: 130825 - timestamp: 1738777581246 + size: 130824 + timestamp: 1738819257916 - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda sha256: 78c1bbe1723449c52b7a9df1af2ee5f005209f67e40b6e1d3c7619127c43b1c7 md5: 592132998493b3ff25fd7479396e8351 @@ -5004,18 +5004,18 @@ packages: license_family: MIT size: 14465 timestamp: 1733255681319 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020517-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020605-release.conda noarch: python - sha256: d57f26218e88f2d8ffc84d06a9022817588e7b5f810a10b60ad7b5153b39dcad - md5: 939c3020651164ebe9c9e39cf512448d + sha256: a98de01d436333c23597e626195c5d49272c1c5d3359889979bafb8f19d4f3bf + md5: f68f7d08fc12083075182da8482fcfa9 depends: - - max-core ==25.1.0.dev2025020517 release + - max-core ==25.1.0.dev2025020605 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22926 - timestamp: 1738777581246 + size: 22925 + timestamp: 1738819257916 - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py311h2dc5d0c_2.conda sha256: afaab7a028281d8b5336db2b994fd3f9694862b6ca372c079dc4e84ad768c20a md5: bb8ca118919836624d920b4c44383a15 diff --git a/examples/operators/magic.lock b/examples/operators/magic.lock index f624fae33d..9c18241bfa 100644 --- a/examples/operators/magic.lock +++ b/examples/operators/magic.lock @@ -9,7 +9,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.11-py312h178313f_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.12-py312h178313f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.8.0-pyhd8ed1ab_0.conda @@ -133,12 +133,12 @@ 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-25.1.0.dev2025020517-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025020517-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025020517-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020517-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020605-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025020605-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025020605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020605-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-25.1.0.dev2025020517-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020605-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 @@ -231,7 +231,7 @@ environments: linux-aarch64: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.11-py312hcc812fe_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.12-py312hcc812fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.8.0-pyhd8ed1ab_0.conda @@ -356,12 +356,12 @@ 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-25.1.0.dev2025020517-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025020517-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025020517-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020517-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020605-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025020605-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025020605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020605-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-25.1.0.dev2025020517-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020605-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 @@ -453,7 +453,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.6-h02f22dd_0.conda osx-arm64: - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.11-py312h998013c_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.12-py312h998013c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.8.0-pyhd8ed1ab_0.conda @@ -570,12 +570,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-25.1.0.dev2025020517-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025020517-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025020517-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020517-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020605-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025020605-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025020605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020605-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-25.1.0.dev2025020517-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020605-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 @@ -711,9 +711,9 @@ packages: license_family: PSF size: 19351 timestamp: 1733332029649 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.11-py312h178313f_0.conda - sha256: 2e817805e8a4fed33f23f116ff5649f8651af693328e9ed82d9d11a951338693 - md5: 8219afa093757bbe07b9825eb1973ed9 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.12-py312h178313f_0.conda + sha256: 223f271deceaf71d0cbee21162084104a6eca06e79c04ecb322706be3e406ea1 + md5: 9f96d8b6fb9bab11e46c12132283b5b1 depends: - __glibc >=2.17,<3.0.a0 - aiohappyeyeballs >=2.3.0 @@ -730,11 +730,11 @@ packages: platform: linux license: MIT AND Apache-2.0 license_family: Apache - size: 915358 - timestamp: 1734597073870 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.11-py312hcc812fe_0.conda - sha256: f28e81e458d19df4ca0002f8a92d7f647fa25e8179887a8676801dfe44edb1f2 - md5: 11fa88136d9bf39d2136b2378f7c10be + size: 915782 + timestamp: 1738824701518 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.12-py312hcc812fe_0.conda + sha256: 8d865017a2f2b2ab9a23e0ab325730c79fb7dc38246f46f4b58da24d7a324805 + md5: e26817b48ca6e2035f69d88165a792f6 depends: - aiohappyeyeballs >=2.3.0 - aiosignal >=1.1.2 @@ -751,11 +751,11 @@ packages: platform: linux license: MIT AND Apache-2.0 license_family: Apache - size: 902422 - timestamp: 1734597104529 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.11-py312h998013c_0.conda - sha256: 446f078e7a7b892894d7f4851a278b7834ffb4f5632313646a55c3abe13690d4 - md5: c69c904691364cfb27d15aa7153e9c29 + size: 901058 + timestamp: 1738823269469 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.12-py312h998013c_0.conda + sha256: a4d04942bdeedbb7260b41eafb0302b6f8c3799f578c4389984c084a8fc34c16 + md5: 7675cee14b7e7d9ccf17ad37a4bdf53a depends: - __osx >=11.0 - aiohappyeyeballs >=2.3.0 @@ -772,8 +772,8 @@ packages: platform: osx license: MIT AND Apache-2.0 license_family: Apache - size: 875711 - timestamp: 1734597277258 + size: 889104 + timestamp: 1738823362301 - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda sha256: 7de8ced1918bbdadecf8e1c1c68237fe5709c097bd9e0d254f4cad118f4345d0 md5: 1a3981115a398535dbe3f6d5faae3d36 @@ -4862,48 +4862,48 @@ packages: license_family: BSD size: 24048 timestamp: 1733219945697 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020517-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020605-release.conda noarch: python - sha256: 6396cd052b828d7c4f789dcf74e6ab3e2079de9bc84bd20074d1760c9c97819f - md5: 85b2ffda5c2da000ffa2a9280b8536c5 + sha256: f33974d10b1d4e642f287392b461a9437bffa776547f3537116d8018caf3da7c + md5: 61f314b8a3d2ddaa878b1056e09e48eb depends: - - max-core ==25.1.0.dev2025020517 release - - max-python >=25.1.0.dev2025020517,<26.0a0 - - mojo-jupyter ==25.1.0.dev2025020517 release - - mblack ==25.1.0.dev2025020517 release + - max-core ==25.1.0.dev2025020605 release + - max-python >=25.1.0.dev2025020605,<26.0a0 + - mojo-jupyter ==25.1.0.dev2025020605 release + - mblack ==25.1.0.dev2025020605 release license: LicenseRef-Modular-Proprietary - size: 9921 - timestamp: 1738777581246 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025020517-release.conda - sha256: 3ec241b25c5fedc503a58b03a3525dc63476fa2eda83b08e1831f028ff20ff4c - md5: e3e1ce11b2394ec97d5c9bc5e5a20f8d + size: 9922 + timestamp: 1738819257916 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025020605-release.conda + sha256: f4f507695eebb8fbbd6107922b4a2d211ab622983f34a24fc8036faf2a7887e3 + md5: 3d4f12391220243dcfc810b5352b2a37 depends: - - mblack ==25.1.0.dev2025020517 release + - mblack ==25.1.0.dev2025020605 release license: LicenseRef-Modular-Proprietary - size: 244792727 - timestamp: 1738777581246 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025020517-release.conda - sha256: 1228375bfe81051f76aa76d2930eac97b966a81e0b815f0f2bf91389cbc5e22b - md5: 3db990fd7502d1ba2c7b0ef98de91e02 + size: 244769750 + timestamp: 1738819214550 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025020605-release.conda + sha256: e2a216b17d89af7cb2aa1a77a7b8416f04724fe0adbf1d36637b36c632b3517a + md5: 8207a6065094dbb73c472a03ea6df87d depends: - - mblack ==25.1.0.dev2025020517 release + - mblack ==25.1.0.dev2025020605 release license: LicenseRef-Modular-Proprietary - size: 247307353 - timestamp: 1738777505489 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025020517-release.conda - sha256: 47f1d44ae41e1d493b049e5a795a96093eaabf5fb261dd335a0cdd245895dae7 - md5: aed282e275af884afa53d86fc2dfa056 + size: 247282125 + timestamp: 1738819257916 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025020605-release.conda + sha256: 6bf41ea344e035b21701a362dd22265eeaa72c08687287b7c13a664b163d893d + md5: c34a8e1ead4712284ec549d122aa5f9c depends: - - mblack ==25.1.0.dev2025020517 release + - mblack ==25.1.0.dev2025020605 release license: LicenseRef-Modular-Proprietary - size: 209788114 - timestamp: 1738779402747 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025020517-release.conda + size: 209659254 + timestamp: 1738820968072 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025020605-release.conda noarch: python - sha256: 05695ef5135e95ac0c4f1971007dadaf679b2fddc7b12a529eb526c6e8fe458e - md5: 6bb837833256f109e51188cd44bee92f + sha256: d8a81b52c2a513d083e81f2217e98409a1a0d885a8c446bf4a5852f6c8612725 + md5: b1adba04b753ac70558cedaee35fe306 depends: - - max-core ==25.1.0.dev2025020517 release + - max-core ==25.1.0.dev2025020605 release - python - fastapi - httpx @@ -4923,14 +4923,14 @@ packages: - typing_extensions - uvicorn license: LicenseRef-Modular-Proprietary - size: 120681157 - timestamp: 1738777581246 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025020517-release.conda + size: 120666001 + timestamp: 1738819214550 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025020605-release.conda noarch: python - sha256: 5bb2a212445a28a94a247e440484cb3fda61b41ed35fe7efb9f15b08ccfc7233 - md5: bbee11044044b5d5b87bac6591a6c14e + sha256: 505eee35cbd7705c48c9d561cb6f38479fb2f3c7d893c51d930c9b4e16da7104 + md5: 9c5aaecd6d6500c081363552c952c213 depends: - - max-core ==25.1.0.dev2025020517 release + - max-core ==25.1.0.dev2025020605 release - python - fastapi - httpx @@ -4950,14 +4950,14 @@ packages: - typing_extensions - uvicorn license: LicenseRef-Modular-Proprietary - size: 123083255 - timestamp: 1738777505490 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025020517-release.conda + size: 123043775 + timestamp: 1738819257916 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025020605-release.conda noarch: python - sha256: cc6cc09eae53533bc60afe3b6c7330f14bff410e160fd4abfe541843e7ec6177 - md5: b70537cb869b1adac9670a0920f5032f + sha256: b1d2614caf1da1bca20540127b0f71b6357f75b155eb93bac4fcaa10b5737f7e + md5: be243c36de2750e5a51af50a571e0e98 depends: - - max-core ==25.1.0.dev2025020517 release + - max-core ==25.1.0.dev2025020605 release - python - fastapi - httpx @@ -4977,12 +4977,12 @@ packages: - typing_extensions - uvicorn license: LicenseRef-Modular-Proprietary - size: 108484791 - timestamp: 1738779402747 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020517-release.conda + size: 108461286 + timestamp: 1738820968072 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020605-release.conda noarch: python - sha256: 64f2d36f69f31a3257a699f45944b669c582177000d04aad5665a2c5442a2f85 - md5: 42f3b1611ee59ba8d3b5aee70c382809 + sha256: 8cbc7067cdf1cce1a11e2b385168697793c4090e37fcee65c19b0d3782320ce8 + md5: b8dc96fb459fbeb13a3dcee463b17613 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -4993,8 +4993,8 @@ packages: - typing_extensions >=v4.12.2 - python license: MIT - size: 130825 - timestamp: 1738777581246 + size: 130824 + timestamp: 1738819257916 - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda sha256: 78c1bbe1723449c52b7a9df1af2ee5f005209f67e40b6e1d3c7619127c43b1c7 md5: 592132998493b3ff25fd7479396e8351 @@ -5004,18 +5004,18 @@ packages: license_family: MIT size: 14465 timestamp: 1733255681319 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020517-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020605-release.conda noarch: python - sha256: d57f26218e88f2d8ffc84d06a9022817588e7b5f810a10b60ad7b5153b39dcad - md5: 939c3020651164ebe9c9e39cf512448d + sha256: a98de01d436333c23597e626195c5d49272c1c5d3359889979bafb8f19d4f3bf + md5: f68f7d08fc12083075182da8482fcfa9 depends: - - max-core ==25.1.0.dev2025020517 release + - max-core ==25.1.0.dev2025020605 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22926 - timestamp: 1738777581246 + size: 22925 + timestamp: 1738819257916 - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py312h178313f_2.conda sha256: b05bc8252a6e957bf4a776ed5e0e61d1ba88cdc46ccb55890c72cc58b10371f4 md5: 5b5e3267d915a107eca793d52e1b780a diff --git a/examples/testing/magic.lock b/examples/testing/magic.lock index f624fae33d..9c18241bfa 100644 --- a/examples/testing/magic.lock +++ b/examples/testing/magic.lock @@ -9,7 +9,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.11-py312h178313f_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.12-py312h178313f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.8.0-pyhd8ed1ab_0.conda @@ -133,12 +133,12 @@ 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-25.1.0.dev2025020517-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025020517-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025020517-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020517-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020605-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025020605-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025020605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020605-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-25.1.0.dev2025020517-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020605-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 @@ -231,7 +231,7 @@ environments: linux-aarch64: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.11-py312hcc812fe_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.12-py312hcc812fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.8.0-pyhd8ed1ab_0.conda @@ -356,12 +356,12 @@ 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-25.1.0.dev2025020517-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025020517-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025020517-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020517-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020605-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025020605-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025020605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020605-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-25.1.0.dev2025020517-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020605-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 @@ -453,7 +453,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.6-h02f22dd_0.conda osx-arm64: - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.11-py312h998013c_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.12-py312h998013c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.8.0-pyhd8ed1ab_0.conda @@ -570,12 +570,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-25.1.0.dev2025020517-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025020517-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025020517-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020517-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020605-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025020605-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025020605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020605-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-25.1.0.dev2025020517-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020605-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 @@ -711,9 +711,9 @@ packages: license_family: PSF size: 19351 timestamp: 1733332029649 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.11-py312h178313f_0.conda - sha256: 2e817805e8a4fed33f23f116ff5649f8651af693328e9ed82d9d11a951338693 - md5: 8219afa093757bbe07b9825eb1973ed9 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.12-py312h178313f_0.conda + sha256: 223f271deceaf71d0cbee21162084104a6eca06e79c04ecb322706be3e406ea1 + md5: 9f96d8b6fb9bab11e46c12132283b5b1 depends: - __glibc >=2.17,<3.0.a0 - aiohappyeyeballs >=2.3.0 @@ -730,11 +730,11 @@ packages: platform: linux license: MIT AND Apache-2.0 license_family: Apache - size: 915358 - timestamp: 1734597073870 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.11-py312hcc812fe_0.conda - sha256: f28e81e458d19df4ca0002f8a92d7f647fa25e8179887a8676801dfe44edb1f2 - md5: 11fa88136d9bf39d2136b2378f7c10be + size: 915782 + timestamp: 1738824701518 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.12-py312hcc812fe_0.conda + sha256: 8d865017a2f2b2ab9a23e0ab325730c79fb7dc38246f46f4b58da24d7a324805 + md5: e26817b48ca6e2035f69d88165a792f6 depends: - aiohappyeyeballs >=2.3.0 - aiosignal >=1.1.2 @@ -751,11 +751,11 @@ packages: platform: linux license: MIT AND Apache-2.0 license_family: Apache - size: 902422 - timestamp: 1734597104529 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.11-py312h998013c_0.conda - sha256: 446f078e7a7b892894d7f4851a278b7834ffb4f5632313646a55c3abe13690d4 - md5: c69c904691364cfb27d15aa7153e9c29 + size: 901058 + timestamp: 1738823269469 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.12-py312h998013c_0.conda + sha256: a4d04942bdeedbb7260b41eafb0302b6f8c3799f578c4389984c084a8fc34c16 + md5: 7675cee14b7e7d9ccf17ad37a4bdf53a depends: - __osx >=11.0 - aiohappyeyeballs >=2.3.0 @@ -772,8 +772,8 @@ packages: platform: osx license: MIT AND Apache-2.0 license_family: Apache - size: 875711 - timestamp: 1734597277258 + size: 889104 + timestamp: 1738823362301 - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda sha256: 7de8ced1918bbdadecf8e1c1c68237fe5709c097bd9e0d254f4cad118f4345d0 md5: 1a3981115a398535dbe3f6d5faae3d36 @@ -4862,48 +4862,48 @@ packages: license_family: BSD size: 24048 timestamp: 1733219945697 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020517-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020605-release.conda noarch: python - sha256: 6396cd052b828d7c4f789dcf74e6ab3e2079de9bc84bd20074d1760c9c97819f - md5: 85b2ffda5c2da000ffa2a9280b8536c5 + sha256: f33974d10b1d4e642f287392b461a9437bffa776547f3537116d8018caf3da7c + md5: 61f314b8a3d2ddaa878b1056e09e48eb depends: - - max-core ==25.1.0.dev2025020517 release - - max-python >=25.1.0.dev2025020517,<26.0a0 - - mojo-jupyter ==25.1.0.dev2025020517 release - - mblack ==25.1.0.dev2025020517 release + - max-core ==25.1.0.dev2025020605 release + - max-python >=25.1.0.dev2025020605,<26.0a0 + - mojo-jupyter ==25.1.0.dev2025020605 release + - mblack ==25.1.0.dev2025020605 release license: LicenseRef-Modular-Proprietary - size: 9921 - timestamp: 1738777581246 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025020517-release.conda - sha256: 3ec241b25c5fedc503a58b03a3525dc63476fa2eda83b08e1831f028ff20ff4c - md5: e3e1ce11b2394ec97d5c9bc5e5a20f8d + size: 9922 + timestamp: 1738819257916 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025020605-release.conda + sha256: f4f507695eebb8fbbd6107922b4a2d211ab622983f34a24fc8036faf2a7887e3 + md5: 3d4f12391220243dcfc810b5352b2a37 depends: - - mblack ==25.1.0.dev2025020517 release + - mblack ==25.1.0.dev2025020605 release license: LicenseRef-Modular-Proprietary - size: 244792727 - timestamp: 1738777581246 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025020517-release.conda - sha256: 1228375bfe81051f76aa76d2930eac97b966a81e0b815f0f2bf91389cbc5e22b - md5: 3db990fd7502d1ba2c7b0ef98de91e02 + size: 244769750 + timestamp: 1738819214550 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025020605-release.conda + sha256: e2a216b17d89af7cb2aa1a77a7b8416f04724fe0adbf1d36637b36c632b3517a + md5: 8207a6065094dbb73c472a03ea6df87d depends: - - mblack ==25.1.0.dev2025020517 release + - mblack ==25.1.0.dev2025020605 release license: LicenseRef-Modular-Proprietary - size: 247307353 - timestamp: 1738777505489 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025020517-release.conda - sha256: 47f1d44ae41e1d493b049e5a795a96093eaabf5fb261dd335a0cdd245895dae7 - md5: aed282e275af884afa53d86fc2dfa056 + size: 247282125 + timestamp: 1738819257916 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025020605-release.conda + sha256: 6bf41ea344e035b21701a362dd22265eeaa72c08687287b7c13a664b163d893d + md5: c34a8e1ead4712284ec549d122aa5f9c depends: - - mblack ==25.1.0.dev2025020517 release + - mblack ==25.1.0.dev2025020605 release license: LicenseRef-Modular-Proprietary - size: 209788114 - timestamp: 1738779402747 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025020517-release.conda + size: 209659254 + timestamp: 1738820968072 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025020605-release.conda noarch: python - sha256: 05695ef5135e95ac0c4f1971007dadaf679b2fddc7b12a529eb526c6e8fe458e - md5: 6bb837833256f109e51188cd44bee92f + sha256: d8a81b52c2a513d083e81f2217e98409a1a0d885a8c446bf4a5852f6c8612725 + md5: b1adba04b753ac70558cedaee35fe306 depends: - - max-core ==25.1.0.dev2025020517 release + - max-core ==25.1.0.dev2025020605 release - python - fastapi - httpx @@ -4923,14 +4923,14 @@ packages: - typing_extensions - uvicorn license: LicenseRef-Modular-Proprietary - size: 120681157 - timestamp: 1738777581246 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025020517-release.conda + size: 120666001 + timestamp: 1738819214550 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025020605-release.conda noarch: python - sha256: 5bb2a212445a28a94a247e440484cb3fda61b41ed35fe7efb9f15b08ccfc7233 - md5: bbee11044044b5d5b87bac6591a6c14e + sha256: 505eee35cbd7705c48c9d561cb6f38479fb2f3c7d893c51d930c9b4e16da7104 + md5: 9c5aaecd6d6500c081363552c952c213 depends: - - max-core ==25.1.0.dev2025020517 release + - max-core ==25.1.0.dev2025020605 release - python - fastapi - httpx @@ -4950,14 +4950,14 @@ packages: - typing_extensions - uvicorn license: LicenseRef-Modular-Proprietary - size: 123083255 - timestamp: 1738777505490 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025020517-release.conda + size: 123043775 + timestamp: 1738819257916 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025020605-release.conda noarch: python - sha256: cc6cc09eae53533bc60afe3b6c7330f14bff410e160fd4abfe541843e7ec6177 - md5: b70537cb869b1adac9670a0920f5032f + sha256: b1d2614caf1da1bca20540127b0f71b6357f75b155eb93bac4fcaa10b5737f7e + md5: be243c36de2750e5a51af50a571e0e98 depends: - - max-core ==25.1.0.dev2025020517 release + - max-core ==25.1.0.dev2025020605 release - python - fastapi - httpx @@ -4977,12 +4977,12 @@ packages: - typing_extensions - uvicorn license: LicenseRef-Modular-Proprietary - size: 108484791 - timestamp: 1738779402747 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020517-release.conda + size: 108461286 + timestamp: 1738820968072 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020605-release.conda noarch: python - sha256: 64f2d36f69f31a3257a699f45944b669c582177000d04aad5665a2c5442a2f85 - md5: 42f3b1611ee59ba8d3b5aee70c382809 + sha256: 8cbc7067cdf1cce1a11e2b385168697793c4090e37fcee65c19b0d3782320ce8 + md5: b8dc96fb459fbeb13a3dcee463b17613 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -4993,8 +4993,8 @@ packages: - typing_extensions >=v4.12.2 - python license: MIT - size: 130825 - timestamp: 1738777581246 + size: 130824 + timestamp: 1738819257916 - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda sha256: 78c1bbe1723449c52b7a9df1af2ee5f005209f67e40b6e1d3c7619127c43b1c7 md5: 592132998493b3ff25fd7479396e8351 @@ -5004,18 +5004,18 @@ packages: license_family: MIT size: 14465 timestamp: 1733255681319 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020517-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020605-release.conda noarch: python - sha256: d57f26218e88f2d8ffc84d06a9022817588e7b5f810a10b60ad7b5153b39dcad - md5: 939c3020651164ebe9c9e39cf512448d + sha256: a98de01d436333c23597e626195c5d49272c1c5d3359889979bafb8f19d4f3bf + md5: f68f7d08fc12083075182da8482fcfa9 depends: - - max-core ==25.1.0.dev2025020517 release + - max-core ==25.1.0.dev2025020605 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22926 - timestamp: 1738777581246 + size: 22925 + timestamp: 1738819257916 - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py312h178313f_2.conda sha256: b05bc8252a6e957bf4a776ed5e0e61d1ba88cdc46ccb55890c72cc58b10371f4 md5: 5b5e3267d915a107eca793d52e1b780a diff --git a/magic.lock b/magic.lock index 4c90f39a1c..2bd6c23dd7 100644 --- a/magic.lock +++ b/magic.lock @@ -9,7 +9,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.11-py312h178313f_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.12-py312h178313f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.8.0-pyhd8ed1ab_0.conda @@ -134,12 +134,12 @@ 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-25.1.0.dev2025020517-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025020517-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025020517-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020517-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020605-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025020605-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025020605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020605-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-25.1.0.dev2025020517-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020605-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 @@ -232,7 +232,7 @@ environments: linux-aarch64: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.11-py312hcc812fe_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.12-py312hcc812fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.8.0-pyhd8ed1ab_0.conda @@ -358,12 +358,12 @@ 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-25.1.0.dev2025020517-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025020517-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025020517-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020517-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020605-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025020605-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025020605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020605-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-25.1.0.dev2025020517-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020605-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 @@ -455,7 +455,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.6-h02f22dd_0.conda osx-arm64: - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.11-py312h998013c_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.12-py312h998013c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.8.0-pyhd8ed1ab_0.conda @@ -573,12 +573,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-25.1.0.dev2025020517-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025020517-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025020517-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020517-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020605-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025020605-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025020605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020605-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-25.1.0.dev2025020517-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020605-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 @@ -714,9 +714,9 @@ packages: license_family: PSF size: 19351 timestamp: 1733332029649 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.11-py312h178313f_0.conda - sha256: 2e817805e8a4fed33f23f116ff5649f8651af693328e9ed82d9d11a951338693 - md5: 8219afa093757bbe07b9825eb1973ed9 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.12-py312h178313f_0.conda + sha256: 223f271deceaf71d0cbee21162084104a6eca06e79c04ecb322706be3e406ea1 + md5: 9f96d8b6fb9bab11e46c12132283b5b1 depends: - __glibc >=2.17,<3.0.a0 - aiohappyeyeballs >=2.3.0 @@ -733,11 +733,11 @@ packages: platform: linux license: MIT AND Apache-2.0 license_family: Apache - size: 915358 - timestamp: 1734597073870 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.11-py312hcc812fe_0.conda - sha256: f28e81e458d19df4ca0002f8a92d7f647fa25e8179887a8676801dfe44edb1f2 - md5: 11fa88136d9bf39d2136b2378f7c10be + size: 915782 + timestamp: 1738824701518 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.12-py312hcc812fe_0.conda + sha256: 8d865017a2f2b2ab9a23e0ab325730c79fb7dc38246f46f4b58da24d7a324805 + md5: e26817b48ca6e2035f69d88165a792f6 depends: - aiohappyeyeballs >=2.3.0 - aiosignal >=1.1.2 @@ -754,11 +754,11 @@ packages: platform: linux license: MIT AND Apache-2.0 license_family: Apache - size: 902422 - timestamp: 1734597104529 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.11-py312h998013c_0.conda - sha256: 446f078e7a7b892894d7f4851a278b7834ffb4f5632313646a55c3abe13690d4 - md5: c69c904691364cfb27d15aa7153e9c29 + size: 901058 + timestamp: 1738823269469 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.12-py312h998013c_0.conda + sha256: a4d04942bdeedbb7260b41eafb0302b6f8c3799f578c4389984c084a8fc34c16 + md5: 7675cee14b7e7d9ccf17ad37a4bdf53a depends: - __osx >=11.0 - aiohappyeyeballs >=2.3.0 @@ -775,8 +775,8 @@ packages: platform: osx license: MIT AND Apache-2.0 license_family: Apache - size: 875711 - timestamp: 1734597277258 + size: 889104 + timestamp: 1738823362301 - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda sha256: 7de8ced1918bbdadecf8e1c1c68237fe5709c097bd9e0d254f4cad118f4345d0 md5: 1a3981115a398535dbe3f6d5faae3d36 @@ -4874,48 +4874,48 @@ packages: license_family: BSD size: 24048 timestamp: 1733219945697 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020517-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020605-release.conda noarch: python - sha256: 6396cd052b828d7c4f789dcf74e6ab3e2079de9bc84bd20074d1760c9c97819f - md5: 85b2ffda5c2da000ffa2a9280b8536c5 + sha256: f33974d10b1d4e642f287392b461a9437bffa776547f3537116d8018caf3da7c + md5: 61f314b8a3d2ddaa878b1056e09e48eb depends: - - max-core ==25.1.0.dev2025020517 release - - max-python >=25.1.0.dev2025020517,<26.0a0 - - mojo-jupyter ==25.1.0.dev2025020517 release - - mblack ==25.1.0.dev2025020517 release + - max-core ==25.1.0.dev2025020605 release + - max-python >=25.1.0.dev2025020605,<26.0a0 + - mojo-jupyter ==25.1.0.dev2025020605 release + - mblack ==25.1.0.dev2025020605 release license: LicenseRef-Modular-Proprietary - size: 9921 - timestamp: 1738777581246 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025020517-release.conda - sha256: 3ec241b25c5fedc503a58b03a3525dc63476fa2eda83b08e1831f028ff20ff4c - md5: e3e1ce11b2394ec97d5c9bc5e5a20f8d + size: 9922 + timestamp: 1738819257916 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025020605-release.conda + sha256: f4f507695eebb8fbbd6107922b4a2d211ab622983f34a24fc8036faf2a7887e3 + md5: 3d4f12391220243dcfc810b5352b2a37 depends: - - mblack ==25.1.0.dev2025020517 release + - mblack ==25.1.0.dev2025020605 release license: LicenseRef-Modular-Proprietary - size: 244792727 - timestamp: 1738777581246 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025020517-release.conda - sha256: 1228375bfe81051f76aa76d2930eac97b966a81e0b815f0f2bf91389cbc5e22b - md5: 3db990fd7502d1ba2c7b0ef98de91e02 + size: 244769750 + timestamp: 1738819214550 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025020605-release.conda + sha256: e2a216b17d89af7cb2aa1a77a7b8416f04724fe0adbf1d36637b36c632b3517a + md5: 8207a6065094dbb73c472a03ea6df87d depends: - - mblack ==25.1.0.dev2025020517 release + - mblack ==25.1.0.dev2025020605 release license: LicenseRef-Modular-Proprietary - size: 247307353 - timestamp: 1738777505489 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025020517-release.conda - sha256: 47f1d44ae41e1d493b049e5a795a96093eaabf5fb261dd335a0cdd245895dae7 - md5: aed282e275af884afa53d86fc2dfa056 + size: 247282125 + timestamp: 1738819257916 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025020605-release.conda + sha256: 6bf41ea344e035b21701a362dd22265eeaa72c08687287b7c13a664b163d893d + md5: c34a8e1ead4712284ec549d122aa5f9c depends: - - mblack ==25.1.0.dev2025020517 release + - mblack ==25.1.0.dev2025020605 release license: LicenseRef-Modular-Proprietary - size: 209788114 - timestamp: 1738779402747 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025020517-release.conda + size: 209659254 + timestamp: 1738820968072 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025020605-release.conda noarch: python - sha256: 05695ef5135e95ac0c4f1971007dadaf679b2fddc7b12a529eb526c6e8fe458e - md5: 6bb837833256f109e51188cd44bee92f + sha256: d8a81b52c2a513d083e81f2217e98409a1a0d885a8c446bf4a5852f6c8612725 + md5: b1adba04b753ac70558cedaee35fe306 depends: - - max-core ==25.1.0.dev2025020517 release + - max-core ==25.1.0.dev2025020605 release - python - fastapi - httpx @@ -4935,14 +4935,14 @@ packages: - typing_extensions - uvicorn license: LicenseRef-Modular-Proprietary - size: 120681157 - timestamp: 1738777581246 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025020517-release.conda + size: 120666001 + timestamp: 1738819214550 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025020605-release.conda noarch: python - sha256: 5bb2a212445a28a94a247e440484cb3fda61b41ed35fe7efb9f15b08ccfc7233 - md5: bbee11044044b5d5b87bac6591a6c14e + sha256: 505eee35cbd7705c48c9d561cb6f38479fb2f3c7d893c51d930c9b4e16da7104 + md5: 9c5aaecd6d6500c081363552c952c213 depends: - - max-core ==25.1.0.dev2025020517 release + - max-core ==25.1.0.dev2025020605 release - python - fastapi - httpx @@ -4962,14 +4962,14 @@ packages: - typing_extensions - uvicorn license: LicenseRef-Modular-Proprietary - size: 123083255 - timestamp: 1738777505490 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025020517-release.conda + size: 123043775 + timestamp: 1738819257916 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025020605-release.conda noarch: python - sha256: cc6cc09eae53533bc60afe3b6c7330f14bff410e160fd4abfe541843e7ec6177 - md5: b70537cb869b1adac9670a0920f5032f + sha256: b1d2614caf1da1bca20540127b0f71b6357f75b155eb93bac4fcaa10b5737f7e + md5: be243c36de2750e5a51af50a571e0e98 depends: - - max-core ==25.1.0.dev2025020517 release + - max-core ==25.1.0.dev2025020605 release - python - fastapi - httpx @@ -4989,12 +4989,12 @@ packages: - typing_extensions - uvicorn license: LicenseRef-Modular-Proprietary - size: 108484791 - timestamp: 1738779402747 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020517-release.conda + size: 108461286 + timestamp: 1738820968072 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020605-release.conda noarch: python - sha256: 64f2d36f69f31a3257a699f45944b669c582177000d04aad5665a2c5442a2f85 - md5: 42f3b1611ee59ba8d3b5aee70c382809 + sha256: 8cbc7067cdf1cce1a11e2b385168697793c4090e37fcee65c19b0d3782320ce8 + md5: b8dc96fb459fbeb13a3dcee463b17613 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -5005,8 +5005,8 @@ packages: - typing_extensions >=v4.12.2 - python license: MIT - size: 130825 - timestamp: 1738777581246 + size: 130824 + timestamp: 1738819257916 - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda sha256: 78c1bbe1723449c52b7a9df1af2ee5f005209f67e40b6e1d3c7619127c43b1c7 md5: 592132998493b3ff25fd7479396e8351 @@ -5016,18 +5016,18 @@ packages: license_family: MIT size: 14465 timestamp: 1733255681319 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020517-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020605-release.conda noarch: python - sha256: d57f26218e88f2d8ffc84d06a9022817588e7b5f810a10b60ad7b5153b39dcad - md5: 939c3020651164ebe9c9e39cf512448d + sha256: a98de01d436333c23597e626195c5d49272c1c5d3359889979bafb8f19d4f3bf + md5: f68f7d08fc12083075182da8482fcfa9 depends: - - max-core ==25.1.0.dev2025020517 release + - max-core ==25.1.0.dev2025020605 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22926 - timestamp: 1738777581246 + size: 22925 + timestamp: 1738819257916 - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py312h178313f_2.conda sha256: b05bc8252a6e957bf4a776ed5e0e61d1ba88cdc46ccb55890c72cc58b10371f4 md5: 5b5e3267d915a107eca793d52e1b780a From a6195d2f9a655a3de24db57bc78eda4f5a901096 Mon Sep 17 00:00:00 2001 From: ematejska Date: Thu, 6 Feb 2025 09:51:32 -0800 Subject: [PATCH 352/509] Update mojo_feature_request.yaml Updating issue template Signed-off-by: ematejska --- .github/ISSUE_TEMPLATE/mojo_feature_request.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/ISSUE_TEMPLATE/mojo_feature_request.yaml b/.github/ISSUE_TEMPLATE/mojo_feature_request.yaml index d81855f5f0..fff1896844 100644 --- a/.github/ISSUE_TEMPLATE/mojo_feature_request.yaml +++ b/.github/ISSUE_TEMPLATE/mojo_feature_request.yaml @@ -23,7 +23,7 @@ body: - type: markdown attributes: value: | - If the request is out of the published roadmap and priorities, please start an [idea](https://github.com/modularml/mojo/discussions/categories/ideas) in GH Discussions to get feedback from the team. + If the request is out of the published roadmap and priorities, please start a [discussion](https://forum.modular.com/) in the Modular Forum to get feedback from the team. - type: textarea id: Request From ddd7d06de25aa131b93a2d88f4656725a867cf9b Mon Sep 17 00:00:00 2001 From: Ken Jones <165197230+KenJones-Modular@users.noreply.github.com> Date: Thu, 6 Feb 2025 10:30:18 -0800 Subject: [PATCH 353/509] [docs] Removed docstring tests from example testing project MODULAR_ORIG_COMMIT_REV_ID: 587bbfcf3636f8d9c1f4c9e3731e385a6db3ccbf --- examples/testing/README.md | 25 ++++++---------------- examples/testing/mojoproject.toml | 6 ++---- examples/testing/src/my_math/__init__.mojo | 22 ------------------- examples/testing/src/my_math/utils.mojo | 6 ------ 4 files changed, 8 insertions(+), 51 deletions(-) diff --git a/examples/testing/README.md b/examples/testing/README.md index 849554de04..d4748d676e 100644 --- a/examples/testing/README.md +++ b/examples/testing/README.md @@ -1,23 +1,17 @@ # Modular testing framework examples -This directory contains examples of using the Mojo testing framework. It -demonstrates using the testing framework for both unit testing and testing code -examples in the [documentation -strings](https://docs.modular.com/mojo/manual/basics#code-comments) (also known -as *docstrings*) of Mojo API documentation. See the -[Testing](https://docs.modular.com/mojo/tools/testing) section of the [Mojo -manual](https://docs.modular.com/mojo/manual/) for a complete discussion of how -to use the Mojo testing framework. +This directory contains examples of using the Mojo testing framework for unit +testing. See the [Testing](https://docs.modular.com/mojo/tools/testing) section +of the [Mojo manual](https://docs.modular.com/mojo/manual/) for a complete +discussion of how to use the Mojo testing framework. ## Files This directory contains the following files: -- `src/my_math/__init__.mojo`: a Mojo package file with package-level docstrings - containing code examples to test +- `src/my_math/__init__.mojo`: a Mojo package file -- `src/my_math/utils.mojo`: a Mojo module source file with both module-level and - function-level docstrings containing code examples to test +- `src/my_math/utils.mojo`: a Mojo module source file - `src/example.mojo`: a simple Mojo program that uses the functions from the `my_math` package @@ -48,13 +42,6 @@ Run the unit tests contained in the `test` directory by executing: mojo test -I src test ``` -Run the docstring tests for the API documentation contained in the `src` -directory by executing: - -```bash -mojo test src -``` - If desired, you can run the example program by executing: ```bash diff --git a/examples/testing/mojoproject.toml b/examples/testing/mojoproject.toml index 487fdcfa48..9ee3dfb8cd 100644 --- a/examples/testing/mojoproject.toml +++ b/examples/testing/mojoproject.toml @@ -8,9 +8,7 @@ version = "0.1.0" [tasks] main = "mojo run src/example.mojo" -doc-tests = "mojo test src" -unit-tests = "mojo test -I src test" -tests = { depends-on = ["doc-tests", "unit-tests"] } +tests = "mojo test -I src test" [dependencies] -max = "*" +max = "~=24.6" diff --git a/examples/testing/src/my_math/__init__.mojo b/examples/testing/src/my_math/__init__.mojo index 79dd92b79d..d9e1691687 100644 --- a/examples/testing/src/my_math/__init__.mojo +++ b/examples/testing/src/my_math/__init__.mojo @@ -24,28 +24,6 @@ You can import these APIs from the `my_math` package. For example: ```mojo from my_math import dec, inc ``` - -The `inc()` function performs a simple increment: - -```mojo -%# from testing import assert_equal -from my_math import inc -a = 1 -b = inc(a) # b = 2 -%# assert_equal(b, 2) -``` - -However, `inc()` raises an error if it would result in integer overflow: - -```mojo -c = 0 -try: - c = inc(Int.MAX) -except e: - print(e) -%# assert_equal("inc overflow", String(e)) -``` - """ from .utils import dec, inc diff --git a/examples/testing/src/my_math/utils.mojo b/examples/testing/src/my_math/utils.mojo index 000fa023cd..bb8aab2837 100644 --- a/examples/testing/src/my_math/utils.mojo +++ b/examples/testing/src/my_math/utils.mojo @@ -25,11 +25,9 @@ def inc(n: Int) -> Int: """Returns an incremented integer value. ```mojo - %# from testing import assert_equal from my_math import inc i = 7 j = inc(i) # j = 8 - %# assert_equal(j, 8) ``` However, `inc()` raises an error if it would result in integer overflow: @@ -40,7 +38,6 @@ def inc(n: Int) -> Int: k = inc(Int.MAX) except e: print(e) # inc overflow - %# assert_equal("inc overflow", String(e)) ``` Args: @@ -61,11 +58,9 @@ def dec(n: Int) -> Int: """Returns a decremented integer value. ```mojo - %# from testing import assert_equal from my_math import dec i = 7 j = dec(i) # j = 6 - %# assert_equal(j, 6) ``` However, `dec()` raises an error if it would result in integer overflow: @@ -76,7 +71,6 @@ def dec(n: Int) -> Int: k = dec(Int.MIN) except e: print(e) # inc overflow - %# assert_equal("dec overflow", String(e)) ``` Args: From f2bc2f4de840d0004c19499d08468002021acf31 Mon Sep 17 00:00:00 2001 From: Ken Jones <165197230+KenJones-Modular@users.noreply.github.com> Date: Thu, 6 Feb 2025 10:30:52 -0800 Subject: [PATCH 354/509] [docs] Removed all references from the docs to Mojo REPL and notebook support MODULAR_ORIG_COMMIT_REV_ID: 7e71ad726001f24daa93083be23f217c1b1b89be --- docs/faq.md | 9 ++++----- docs/manual/basics.mdx | 9 --------- docs/manual/values/ownership.mdx | 8 -------- 3 files changed, 4 insertions(+), 22 deletions(-) diff --git a/docs/faq.md b/docs/faq.md index 6ff7db931b..e6f68d46e2 100644 --- a/docs/faq.md +++ b/docs/faq.md @@ -152,11 +152,10 @@ examples](https://github.com/modular/mojo/tree/main/examples). ### Is Mojo interpreted or compiled? -Mojo supports both just-in-time (JIT) and ahead-of-time (AOT) compilation. In -either a REPL environment or Jupyter notebook, Mojo is JIT’d. However, for AI -deployment, it’s important that Mojo also supports AOT compilation instead of -having to JIT compile everything. You can compile your Mojo programs using the -[`mojo` CLI](/mojo/cli/). +Mojo is a compiled language. [`mojo build`](/mojo/cli/build) performs +ahead-of-time (AOT) compilation to save an executable program. [`mojo +run`](/mojo/cli/run) performs just-in-time (JIT) compilation to execute a Mojo +source file without saving the compiled result. ### How does Mojo compare to Triton Lang? diff --git a/docs/manual/basics.mdx b/docs/manual/basics.mdx index 9238fd3799..853ad16ad6 100644 --- a/docs/manual/basics.mdx +++ b/docs/manual/basics.mdx @@ -49,15 +49,6 @@ you can write `def main():` followed by an indented function body. The `print()` statement does what you'd expect, printing its arguments to the standard output. -:::note - -You don't need a `main()` function when coding in the [REPL](/mojo/cli/repl) or -in a Jupyter notebook. In these environments, Mojo executes top-level code (that -is, statements that appear outside of a function). Mojo doesn't support -top-level code in a `.mojo` (or `.🔥`) file. - -::: - ## Variables In Mojo, you can declare a variable by simply assigning a value to diff --git a/docs/manual/values/ownership.mdx b/docs/manual/values/ownership.mdx index 817f43ef4c..4410687c22 100644 --- a/docs/manual/values/ownership.mdx +++ b/docs/manual/values/ownership.mdx @@ -390,14 +390,6 @@ def consume_string(owned s: String): # s is destroyed here ``` -:::note - -Value lifetimes are not fully implemented for top-level code in -Mojo's REPL, so the transfer sigil currently works as intended only when -used inside a function. - -::: - ### Transfer implementation details In Mojo, you shouldn't conflate "ownership transfer" with a "move From fffb7f8c7bccd9ddb80041a8d67ca9914fcafcc6 Mon Sep 17 00:00:00 2001 From: Ken Jones <165197230+KenJones-Modular@users.noreply.github.com> Date: Thu, 6 Feb 2025 10:31:22 -0800 Subject: [PATCH 355/509] [docs] Removed section on docstring tests from the Testing section of the Mojo manual MODULAR_ORIG_COMMIT_REV_ID: f2fd146f87ff44c1ae587db6dcad45451571b9ef --- docs/tools/testing.mdx | 184 ++--------------------------------------- 1 file changed, 8 insertions(+), 176 deletions(-) diff --git a/docs/tools/testing.mdx b/docs/tools/testing.mdx index ed1b22ea62..34dc575ce1 100644 --- a/docs/tools/testing.mdx +++ b/docs/tools/testing.mdx @@ -5,13 +5,10 @@ description: Testing Mojo programs. github_url: https://github.com/modular/mojo/tree/main/examples/testing --- -Mojo includes a framework for developing and executing unit tests. The framework -also supports testing code examples in the -[documentation strings](/mojo/manual/basics#code-comments) -(also known as *docstrings*) of your API references. The Mojo testing framework -consists of a set of assertions defined as part of the -[Mojo standard library](/mojo/lib) and the -[`mojo test`](/mojo/cli/test) command line tool. +Mojo includes a framework for developing and executing unit tests. The Mojo +testing framework consists of a set of assertions defined as part of the [Mojo +standard library](/mojo/lib) and the [`mojo test`](/mojo/cli/test) command line +tool. ## Get started @@ -99,14 +96,11 @@ its error message. organize them into test files. - [The `mojo test` command](#the-mojo-test-command) describes how to execute and collect lists of tests. -- [Writing API documentation tests](#writing-api-documentation-tests) - discusses how to use the Mojo testing framework to test code examples in your - API documentation. -- The public [GitHub repo](https://github.com/modular/mojo/tree/main) - contains an [example +- The public [GitHub repo](https://github.com/modular/mojo/tree/main) contains + an [example project](https://github.com/modular/mojo/tree/main/examples/testing) to - demonstrate both unit testing and docstring testing. Several of the examples - shown later are based on this project. + demonstrate unit testing. Several of the examples shown later are based on + this project. ## The `testing` module @@ -505,165 +499,3 @@ filesystem paths from the output shown): "id": "ROOT_DIR/test/my_math" } ``` - -## Writing API documentation tests - -The Mojo testing framework also supports testing code examples that you include -in [docstrings](/mojo/manual/basics#code-comments). This helps to ensure that -the code examples in your API documentation are correct and up to date. - -### Identifying executable code - -The Mojo testing framework requires you to explicitly identify the code blocks -that you want it to execute. - -In a Mojo docstring, a fenced code block delimited by standard triple-backquotes -is a *display-only* code block. It appears in the API documentation, but -`mojo test` does not identify it as a test or attempt to execute any of the code -in the block. - -```` -""" Non-executable code block example. - -The generated API documentation includes all lines of the following code block, -but `mojo test` does not execute any of the code in it. - -``` -# mojo test does NOT execute any of this code block -a = 1 -print(a) -``` -""" -```` - -In contrast, a fenced code block that starts with the line \`\`\`mojo -not only appears in the API documentation, but `mojo test` treats it as an -executable test. The test fails if the code raises any error, otherwise it -passes. - -```` -""" Executable code block example. - -The generated API documentation includes all lines of the following code block -*and* `mojo test` executes it as a test. - -```mojo -from testing import assert_equals - -b = 2 -assert_equals(b, 2) -``` -""" -```` - -Sometimes you might want to execute a line of code as part of the test but *not* -display that line in the API documentation. To achieve this, prefix the line of -code with `%#`. For example, you can use this technique to omit `import` -statements and assertion functions from the documentation. - -```` -""" Executable code block example with some code lines omitted from output. - -The generated API documentation includes only the lines of code that do *not* -start with `%#`. However, `mojo test` executes *all* lines of code. - -```mojo -%# from testing import assert_equal -c = 3 -print(c) -%# assert_equal(c, 3) -``` -""" -```` - -### Documentation test suites and scoping - -The Mojo testing framework treats each docstring as a separate *test suite*. -In other words, a single test suite can correspond to the docstring for an -individual package, module, function, struct, struct method, etc. - -Each executable code block within a given docstring is a single test of the same -test suite. The `mojo test` command executes the tests of a test suite -sequentially in the order that they appear within the docstring. If a test -within a particular test suite fails, then all subsequent tests within the same -test suite are skipped. - -All tests within the test suite execute in the same scope, and test execution -within that scope is stateful. This means, for example, that a variable created -within one test is then accessible to subsequent tests in the same test suite. - -```` -""" Stateful example. - -Assign 1 to the variable `a`: - -```mojo -%# from testing import assert_equal -a = 1 -%# assert_equal(a, 1) -``` - -Then increment the value of `a` by 1: - -```mojo -a += 1 -%# assert_equal(a, 2) -``` -""" -```` - -:::note - -Test suite scopes do *not* nest. In other words, the test suite scope of a -module is completely independent of the test suite scope of a function or struct -defined within that module. For example, this means that if a module's test -suite creates a variable, that variable is *not* accessible to a function's test -suite within the same module. - -::: - -### Documentation test identifiers - -The format of a documentation test identifier is `@::`. -This is best explained by an example. Consider the [example testing -project](https://github.com/modular/mojo/tree/main/examples/testing) -directory structure shown in the [Running tests](#running-tests) section. The -source files in the `src` directory might contain docstrings for the `my_math` -package, the `utils.mojo` module, and the individual functions within that -module. You can collect the full list of tests by executing: - -```bash -mojo test --co src -``` - -The output shows the hierarchy of directories, test files, and individual tests -(note that this example elides the full filesystem paths from the output shown): - -```output - - - - - - - - - - - - - - - -``` - -Several different test suites appear in this result: - -| Test suite scope | File | Test suite name | -| ---------------- | --------------------------- | ------------------------ | -| Package | `src/my_math/__init__.mojo` | `__doc__` | -| Module | `src/my_math/utils.mojo` | `__doc__` | -| Function | `src/my_math/utils.mojo` | `inc(\3A\3AInt).__doc__` | - -Then within a specific test suite, tests are numbered sequentially in the order -they appear in the docstring, starting with 0. From 6931b41c5bedf42d82e2cd522c8a9e3699968bd5 Mon Sep 17 00:00:00 2001 From: Lukas Hermann <1734032+lsh@users.noreply.github.com> Date: Thu, 6 Feb 2025 11:11:18 -0800 Subject: [PATCH 356/509] [stdlib] Add StringLiteral comparisons with StringSlice Adds comparison operators to `StringSlice` for `StringLiteral` so that e.g. `"abc" < "def".as_string_slice()` works. MODULAR_ORIG_COMMIT_REV_ID: eced06f00457ff442f25a0985dfacf4b05719db4 --- stdlib/src/builtin/string_literal.mojo | 56 ++++++++++++++++++-- stdlib/test/builtin/test_string_literal.mojo | 30 +++++++++++ 2 files changed, 82 insertions(+), 4 deletions(-) diff --git a/stdlib/src/builtin/string_literal.mojo b/stdlib/src/builtin/string_literal.mojo index 3250111b66..571236110b 100644 --- a/stdlib/src/builtin/string_literal.mojo +++ b/stdlib/src/builtin/string_literal.mojo @@ -274,7 +274,7 @@ struct StringLiteral( @always_inline("nodebug") fn __lt__(self, rhs: StringLiteral) -> Bool: - """Compare this StringLiteral to the RHS using LT comparison. + """Compare this StringLiteral to the RHS using lesser than (LT) comparison. Args: rhs: The other StringLiteral to compare against. @@ -286,7 +286,7 @@ struct StringLiteral( @always_inline("nodebug") fn __le__(self, rhs: StringLiteral) -> Bool: - """Compare this StringLiteral to the RHS using LE comparison. + """Compare this StringLiteral to the RHS using lesser than or equal to (LE) comparison. Args: rhs: The other StringLiteral to compare against. @@ -298,7 +298,7 @@ struct StringLiteral( @always_inline("nodebug") fn __gt__(self, rhs: StringLiteral) -> Bool: - """Compare this StringLiteral to the RHS using GT comparison. + """Compare this StringLiteral to the RHS using greater than (GT) comparison. Args: rhs: The other StringLiteral to compare against. @@ -310,7 +310,55 @@ struct StringLiteral( @always_inline("nodebug") fn __ge__(self, rhs: StringLiteral) -> Bool: - """Compare this StringLiteral to the RHS using GE comparison. + """Compare this StringLiteral to the RHS using greater than or equal to (GE) comparison. + + Args: + rhs: The other StringLiteral to compare against. + + Returns: + True if this StringLiteral is greater than or equal to the RHS StringLiteral and False otherwise. + """ + return not (self < rhs) + + @always_inline("nodebug") + fn __lt__(self, rhs: StringSlice) -> Bool: + """Compare this StringLiteral to the RHS using lesser than (LT) comparison. + + Args: + rhs: The other StringLiteral to compare against. + + Returns: + True if this StringLiteral is strictly less than the RHS StringLiteral and False otherwise. + """ + return self.as_string_slice() < rhs + + @always_inline("nodebug") + fn __le__(self, rhs: StringSlice) -> Bool: + """Compare this StringLiteral to the RHS using lesser than or equal to (LE) comparison. + + Args: + rhs: The other StringLiteral to compare against. + + Returns: + True if this StringLiteral is less than or equal to the RHS StringLiteral and False otherwise. + """ + return not (rhs < self) + + @always_inline("nodebug") + fn __gt__(self, rhs: StringSlice) -> Bool: + """Compare this StringLiteral to the RHS using greater than (GT) comparison. + + Args: + rhs: The other StringLiteral to compare against. + + Returns: + True if this StringLiteral is strictly greater than the RHS StringLiteral and False otherwise. + """ + return rhs < self + + @always_inline("nodebug") + fn __ge__(self, rhs: StringSlice) -> Bool: + """Compare this StringLiteral to the RHS using greater than or equal to (GE) comparison. Args: rhs: The other StringLiteral to compare against. diff --git a/stdlib/test/builtin/test_string_literal.mojo b/stdlib/test/builtin/test_string_literal.mojo index bd839a3c54..00ef2fec3f 100644 --- a/stdlib/test/builtin/test_string_literal.mojo +++ b/stdlib/test/builtin/test_string_literal.mojo @@ -195,6 +195,36 @@ def test_comparison_operators(): assert_true(StringLiteral.__le__("", "")) assert_true(StringLiteral.__ge__("", "")) + # Test less than and greater than + def_slice = "def".as_string_slice() + abcd_slice = "abc".as_string_slice() + assert_true(StringLiteral.__lt__("abc", def_slice)) + assert_false(StringLiteral.__lt__("def", abcd_slice[0:3])) + assert_false(StringLiteral.__lt__("abc", abcd_slice[0:3])) + assert_true(StringLiteral.__lt__("ab", abcd_slice[0:3])) + assert_true(StringLiteral.__gt__("abc", abcd_slice[0:2])) + assert_false(StringLiteral.__gt__("abc", abcd_slice)) + + # Test less than or equal to and greater than or equal to + assert_true(StringLiteral.__le__("abc", def_slice)) + assert_true(StringLiteral.__le__("abc", abcd_slice[0:3])) + assert_false(StringLiteral.__le__("def", abcd_slice[0:3])) + assert_true(StringLiteral.__ge__("abc", abcd_slice[0:3])) + assert_false(StringLiteral.__ge__("ab", abcd_slice[0:3])) + assert_true(StringLiteral.__ge__("abcd", abcd_slice[0:3])) + + abc_upper_slice = "ABC".as_string_slice() + # Test case sensitivity in comparison (assuming ASCII order) + assert_true(StringLiteral.__gt__("abc", abc_upper_slice)) + assert_false(StringLiteral.__le__("abc", abc_upper_slice)) + + empty_slice = "".as_string_slice() + # Test comparisons involving empty strings + assert_true(StringLiteral.__lt__("", abcd_slice[0:3])) + assert_false(StringLiteral.__lt__("abc", empty_slice)) + assert_true(StringLiteral.__le__("", empty_slice)) + assert_true(StringLiteral.__ge__("", empty_slice)) + def test_hash(): # Test a couple basic hash behaviors. From 134f845e6c963ee53c1c86a7bcd0745296ec899f Mon Sep 17 00:00:00 2001 From: Ken Jones <165197230+KenJones-Modular@users.noreply.github.com> Date: Thu, 6 Feb 2025 13:20:46 -0800 Subject: [PATCH 357/509] [docs] Documented improved String/StringLiteral comparison ergonomics MODULAR_ORIG_COMMIT_REV_ID: 48bfc4bc18a3549cd7d20cede402f906f34fe6b8 --- docs/manual/operators.mdx | 39 +++++++++++++++++++++++++-------------- 1 file changed, 25 insertions(+), 14 deletions(-) diff --git a/docs/manual/operators.mdx b/docs/manual/operators.mdx index 0356ec4a93..b3f9e8fd00 100644 --- a/docs/manual/operators.mdx +++ b/docs/manual/operators.mdx @@ -604,25 +604,36 @@ ________________________________________ #### String comparison -`String` values can be compared using standard lexicographical ordering, -producing a `Bool`. (For example, "Zebra" is treated as less than "ant" because -upper case letters occur before lower case letters in the character encoding.) -`StringLiteral` values can be directly compared against each other as well. -However when comparing a `String` to a `StringLiteral` value, the `String` value -**must** be the left-hand operand to avoid a compilation error. For example: +`String` and `StringLiteral` values can be compared using standard +lexicographical ordering, producing a `Bool`. For example, "Zebra" is treated as +less than "ant" because upper case letters occur before lower case letters in +the character encoding. ```mojo -var str: String = "bird" -# Compilation error: -# result = "cat" >= str -# You could explicitly convert the StringLiteral to a String: -# result = String("cat") >= str -result = str < "cat" # Successful comparison -print(result) +var animal: String = "bird" + +is_cat_eq = "cat" == animal +print('Is "cat" equal to "{}"?'.format(animal), is_cat_eq) + +is_cat_ne = "cat" != animal +print('Is "cat" not equal to "{}"?'.format(animal), is_cat_ne) + +is_bird_eq = "bird" == animal +print('Is "bird" equal to "{}"?'.format(animal), is_bird_eq) + +is_cat_gt = "CAT" > animal +print('Is "CAT" greater than "{}"?'.format(animal), is_cat_gt) + +is_ge_cat = animal >= "CAT" +print('Is "{}" greater than or equal to "CAT"?'.format(animal), is_ge_cat) ``` ```output -True +Is "cat" equal to "bird"? False +Is "cat" not equal to "bird"? True +Is "bird" equal to "bird"? True +Is "CAT" greater than "bird"? False +Is "bird" greater than or equal to "CAT"? True ``` #### Substring testing From 795d8fed3997e4321e072d1f98ef7a4006516f79 Mon Sep 17 00:00:00 2001 From: modularbot Date: Fri, 7 Feb 2025 05:52:24 +0000 Subject: [PATCH 358/509] Update lockfiles to point to latest nightly version: 25.1.0.dev2025020700 --- examples/life/magic.lock | 5870 +++-------------------- examples/magic.lock | 8259 ++++++-------------------------- examples/operators/magic.lock | 8259 ++++++-------------------------- examples/testing/magic.lock | 8259 ++++++-------------------------- magic.lock | 8273 ++++++--------------------------- 5 files changed, 6402 insertions(+), 32518 deletions(-) diff --git a/examples/life/magic.lock b/examples/life/magic.lock index 5560428e0a..243d509ba1 100644 --- a/examples/life/magic.lock +++ b/examples/life/magic.lock @@ -8,57 +8,17 @@ environments: linux-64: - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.12-py312h178313f_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/alsa-lib-1.2.13-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.8.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aom-3.9.1-hac33072_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/attr-2.5.1-h166bdaf_1.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.1.0-pyh71513ae_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.1-h205f482_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.1-h1a47875_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.10.6-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.3.0-h4e1184b_5.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.0-h7959bf6_11.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.2-hefd7a92_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-h173a860_6.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h11f4f37_12.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.9-he1b24dc_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.2-h4e1184b_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-h4e1184b_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.9-he0e7f3f_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.489-h4d475cb_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.10.0-h113e628_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.13.0-h3cf044e_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-common-cpp-12.8.0-h736e048_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-files-datalake-cpp-12.12.0-ha633028_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/backoff-2.2.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py312h2ec8cdc_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.4-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2025.1.31-hbcca054_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.2-h3394656_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.12.14-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py312h06ac9bb_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/dav1d-1.2.1-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/dbus-1.13.6-h5008d03_3.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.18-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda - - 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/linux-64/expat-2.6.4-h5888daf_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.8-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.17.0-pyhd8ed1ab_0.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 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 @@ -68,57 +28,30 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2 - 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-py312h178313f_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2025.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gettext-0.22.5-he02047a_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gettext-tools-0.22.5-he02047a_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/gflags-2.2.2-h5888daf_1005.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/glog-0.7.1-hbabe93e_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.13-h59595ed_1003.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-10.2.0-h4bba637_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/httptools-0.6.4-py312h66e93f0_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.28.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/jack-1.9.22-h7c63dc7_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lame-3.100-h166bdaf_1003.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.16-hb7c19ff_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-19.0.0-h00a82cf_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-19.0.0-hcb10f89_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-19.0.0-hcb10f89_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-19.0.0-h08228c5_8_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libasprintf-0.22.5-he8f35ee_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libasprintf-devel-0.22.5-he8f35ee_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libavif16-1.1.1-h1909e37_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-28_h59b9bed_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hb9d3cd8_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hb9d3cd8_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.1.0-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libcap-2.71-h39aace5_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-28_he106b2a_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libcrc32c-1.1.2-h9c3ff4c_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.11.1-h332b0f4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libdb-6.2.32-h9c3ff4c_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.23-h4ddbbb0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libevent-2.1.12-hf998b51_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.2-h7f98852_5.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libflac-1.4.3-h59595ed_0.conda @@ -131,146 +64,75 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hd5240d6_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.82.2-h2ff4ddf_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h77fa898_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.34.0-h2b5623c_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.34.0-h0121fbd_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgpg-error-1.51-hbd13f7d_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.67.1-h25350d4_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-hd590300_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-28_h7ac8fdf_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libmad-0.15.1b-h0b41bf4_1001.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libogg-1.3.5-h4ab18f5_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.28-pthreads_h94d23a6_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-1.18.0-hfcad708_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-headers-1.18.0-ha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopus-1.3.1-h7f98852_1.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-19.0.0-h081d1f1_8_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.46-h943b412_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsentencepiece-0.2.0-h8e10757_10.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsndfile-1.2.2-hc60ed4a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.48.0-hee588c1_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hf672d98_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-hc0a3c3a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsystemd0-257.2-h3dc2cb9_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libthrift-0.21.0-h0e7cc3e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hd9ff511_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.10.0-h4c51ac1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.50.0-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libvorbis-1.3.7-h9c3ff4c_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.5.0-h851e524_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.5-h8d12d68_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - 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-25.1.0.dev2025020605-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025020605-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025020605-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020605-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-25.1.0.dev2025020605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020700-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025020700-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025020700-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020700-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020700-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_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-h2d0b736_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/nlohmann_json-3.11.3-he02047a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.3-h5fbd93e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.0-h7b32b05_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.29.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.29.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.29.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-prometheus-1.12.0rc1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.29.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.29.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.50b0-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/opusfile-0.12-h3358134_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/orc-2.0.3-h12ee42a_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.3-py312hf9745cd_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.44-hba22ea6_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-11.1.0-py312h80c1187_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.44.2-h29eaf8c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/portaudio-19.6.0-h7c63dc7_9.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/portmidi-2.0.4-h7c63dc7_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/prometheus-cpp-1.3.0-ha5d0236_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.1-py312h178313f_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/protobuf-5.28.3-py312h2ec8cdc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pulseaudio-client-17.0-hb77b528_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-19.0.0-py312h7900ff3_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-19.0.0-py312h01725c0_0_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.6-pyh3cfb1c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.27.2-py312h12e396e_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.7.1-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pygame-2.6.1-py312h4fcb14b_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pyinstrument-5.0.1-py312h66e93f0_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.8-h9e4cc4f_1_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.20-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/python-xxhash-3.5.0-py312h66e93f0_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py312h178313f_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.1-py312hbf22597_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/rav1e-0.6.6-he8a937b_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/re2-2024.07.02-h9925aae_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda - - 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.11-h072c03f_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/safetensors-0.5.2-py312h12e396e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/sdl2-2.30.10-h63c27ac_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/sdl2_image-2.8.2-h06ee604_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/sdl2_mixer-2.6.3-h8830914_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/sdl2_ttf-2.24.0-h287479f_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-0.2.0-hc8f76dd_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-python-0.2.0-py312hb6b8a2b_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-spm-0.2.0-h8e10757_10.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-h8bd8927_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.2.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.45.3-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/svt-av1-2.3.0-h5888daf_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.21.0-py312h8360d73_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.48.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.34.0-pyh31011fe_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.34.0-h31011fe_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/uvloop-0.21.0-py312h66e93f0_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/watchfiles-1.0.4-py312h12e396e_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/websockets-14.2-py312h66e93f0_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.17.2-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libice-1.1.2-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libsm-1.2.5-he73a12e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libx11-1.8.11-h4f16b4b_0.conda @@ -279,67 +141,22 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxext-1.3.6-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxfixes-6.0.1-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrender-0.9.12-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xxhash-0.8.2-hd590300_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.18.3-py312h178313f_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.1-hb9d3cd8_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312hef9b889_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda linux-aarch64: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.12-py312hcc812fe_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/alsa-lib-1.2.13-h86ecc28_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.8.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aom-3.9.1-hcccb83c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/attr-2.5.1-h4e544f5_1.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.1.0-pyh71513ae_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.1-hb7ec8d5_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.1-h740c5af_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-common-0.10.6-h86ecc28_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-compression-0.3.0-h0f0193d_5.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-event-stream-0.5.0-hcbd8f92_11.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.2-h3df160d_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-hfd5ba81_6.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h5f50e26_12.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.9-h05b070f_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.2-h0f0193d_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h0f0193d_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.9-hab3ce66_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.489-h88461e4_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-core-cpp-1.14.0-h1887c18_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-identity-cpp-1.10.0-h47b0b28_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-blobs-cpp-12.13.0-h185ecfd_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-common-cpp-12.8.0-h1b94036_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-files-datalake-cpp-12.12.0-h37d6d07_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/backoff-2.2.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/brotli-python-1.1.0-py312h6f74592_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h68df207_7.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/c-ares-1.34.4-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2025.1.31-hcefe29a_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cairo-1.18.2-h83712da_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.12.14-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cffi-1.17.1-py312hac81daf_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/dav1d-1.2.1-h31becfc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/dbus-1.13.6-h12b9eeb_3.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.18-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda - - 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/linux-aarch64/expat-2.6.4-h5ad3122_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.8-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.17.0-pyhd8ed1ab_0.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 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 @@ -349,57 +166,30 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2 - 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-py312hcc812fe_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2025.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gettext-0.22.5-h0a1ffab_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gettext-tools-0.22.5-h0a1ffab_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gflags-2.2.2-h5ad3122_1005.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/glog-0.7.1-h468a4a4_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/graphite2-1.3.13-h2f0025b_1003.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/harfbuzz-10.2.0-h785c1aa_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/httptools-0.6.4-py312hb2c0f52_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.28.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/jack-1.9.22-h5c6c0ed_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/keyutils-1.6.1-h4e544f5_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/krb5-1.21.3-h50a48e9_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lame-3.100-h4e544f5_1003.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lcms2-2.16-h922389a_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.0.0-h4de3ea5_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h18dbdb1_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-19.0.0-h03ebaaf_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-19.0.0-h3b568fd_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-19.0.0-h3b568fd_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-19.0.0-h1e9d426_8_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libasprintf-0.22.5-h87f4aca_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libasprintf-devel-0.22.5-h87f4aca_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libavif16-1.1.1-h3b0c220_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-28_h1a9f1db_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlicommon-1.1.0-h86ecc28_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlidec-1.1.0-h86ecc28_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlienc-1.1.0-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcap-2.71-h51d75a7_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-28_hab92f65_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcrc32c-1.1.2-h01db608_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcurl-8.11.1-h6702fde_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libdb-6.2.32-h01db608_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libdeflate-1.23-h5e3c512_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20250104-pl5321h976ea20_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libev-4.33-h31becfc_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libevent-2.1.12-h4ba1bb4_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.6.4-h5ad3122_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.4.2-h3557bc0_5.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libflac-1.4.3-h2f0025b_0.conda @@ -412,146 +202,75 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libglib-2.82.2-hc486b8e_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-2.34.0-hccf9d24_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-storage-2.34.0-hb9b2b65_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgpg-error-1.51-h05609ea_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgrpc-1.67.1-hf7ccdd3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libiconv-1.17-h31becfc_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libjpeg-turbo-3.0.0-h31becfc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-28_h411afd4_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.4-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libmad-0.15.1b-hb4cce97_1001.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnghttp2-1.64.0-hc8609a4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libogg-1.3.5-h0b9eccb_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.28-pthreads_h9d3fd7e_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopentelemetry-cpp-1.18.0-h60b47f9_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopentelemetry-cpp-headers-1.18.0-h8af1aa0_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopus-1.3.1-hf897c2e_1.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-19.0.0-hfc78867_8_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.46-hec79eb8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.3-h44a3b7b_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsentencepiece-0.2.0-h6164ad9_10.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsndfile-1.2.2-h79657aa_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.20-h68df207_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.48.0-h5eb1b54_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libssh2-1.11.1-ha41c0db_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsystemd0-257.2-h27834fc_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libthrift-0.21.0-h154c74f_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.0-h88f7998_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.10.0-ha346350_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuv-1.50.0-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libvorbis-1.3.7-h01db608_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libwebp-base-1.5.0-h0886dbf_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcb-1.17.0-h262b8f6_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.5-h2e0c361_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - 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-25.1.0.dev2025020605-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025020605-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025020605-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020605-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-25.1.0.dev2025020605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020700-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025020700-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025020700-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020700-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020700-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_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-ha32ae93_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/nlohmann_json-3.11.3-h0a1ffab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openjpeg-2.5.3-h3f56577_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.0-hd08dc88_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.29.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.29.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.29.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-prometheus-1.12.0rc1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.29.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.29.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.50b0-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/opusfile-0.12-hf55b2d5_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/orc-2.0.3-hdd485aa_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pandas-2.2.3-py312ha2895bd_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pcre2-10.44-h070dd5b_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pillow-11.1.0-py312h719f0cf_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pixman-0.44.2-h86a87f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/portaudio-19.6.0-h5c6c0ed_9.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/portmidi-2.0.4-h5c6c0ed_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/prometheus-cpp-1.3.0-h7938499_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.2.1-py312hcc812fe_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/protobuf-5.28.3-py312h6f74592_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pthread-stubs-0.4-h86ecc28_1002.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pulseaudio-client-17.0-h729494f_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-19.0.0-py312h8025657_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-19.0.0-py312h66f7834_0_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.6-pyh3cfb1c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pydantic-core-2.27.2-py312h8cbf658_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.7.1-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pygame-2.6.1-py312hb2c8110_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyinstrument-5.0.1-py312hb2c0f52_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.8-h1683364_1_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.20-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-xxhash-3.5.0-py312h52516f5_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.12-5_cp312.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyyaml-6.0.2-py312hcc812fe_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyzmq-26.2.1-py312h2427ae1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/rav1e-0.6.6-h1d8f897_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/re2-2024.07.02-haa97905_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8fc344f_1.conda - - 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.11-h3caee7a_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/safetensors-0.5.2-py312h8cbf658_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sdl2-2.30.10-h93e764a_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sdl2_image-2.8.2-hd95cb85_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sdl2_mixer-2.6.3-h422cae6_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sdl2_ttf-2.24.0-hb1608df_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-0.2.0-h6c1b121_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-python-0.2.0-py312h197ff68_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-spm-0.2.0-h6164ad9_10.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-hd4fb6f5_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.2.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.45.3-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/svt-av1-2.3.0-h5ad3122_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.21.0-py312ha0d6ea1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py312h52516f5_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.48.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.34.0-pyh31011fe_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.34.0-h31011fe_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/uvloop-0.21.0-py312hb2c0f52_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/watchfiles-1.0.4-py312h8cbf658_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/websockets-14.2-py312hb2c0f52_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/wrapt-1.17.2-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libice-1.1.2-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libsm-1.2.5-h0808dbd_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libx11-1.8.11-hca56bd8_0.conda @@ -560,62 +279,17 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxext-1.3.6-h57736b2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxfixes-6.0.1-h57736b2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxrender-0.9.12-h86ecc28_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xxhash-0.8.2-h31becfc_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yaml-0.2.5-hf897c2e_2.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.18.3-py312hcc812fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zeromq-4.3.5-h5efb499_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zlib-1.3.1-h86ecc28_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstandard-0.23.0-py312hb698573_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.6-h02f22dd_0.conda osx-arm64: - - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.12-py312h998013c_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.8.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aom-3.9.1-h7bae524_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.1.0-pyh71513ae_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.1-hfc2798a_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.1-hc8a0bd2_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.10.6-h5505292_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-compression-0.3.0-hc8a0bd2_5.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.0-h54f970a_11.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.2-h96aa502_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-haba67d1_6.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h24f418c_12.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.9-hf37e03c_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.2-hc8a0bd2_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-hc8a0bd2_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.9-ha81f72f_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.489-h0e5014b_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.14.0-hd50102c_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.10.0-hc602bab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-blobs-cpp-12.13.0-h7585a09_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-common-cpp-12.8.0-h9ca1f76_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-files-datalake-cpp-12.12.0-hcdd55da_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/backoff-2.2.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py312hde4cb15_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.4-h5505292_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2025.1.31-hf0a4a13_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cairo-1.18.2-h6a3b0d2_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.12.14-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.1-py312h0fad829_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/dav1d-1.2.1-hb547adb_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.18-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda - - 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.8-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.17.0-pyhd8ed1ab_0.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 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 @@ -625,53 +299,26 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2 - 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-py312h998013c_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2025.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gettext-0.22.5-h8414b35_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gettext-tools-0.22.5-h8414b35_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gflags-2.2.2-hf9b8971_1005.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/glog-0.7.1-heb240a5_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/graphite2-1.3.13-hebf3989_1003.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/harfbuzz-10.2.0-ha0dd535_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/httptools-0.6.4-py312hea69d52_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.28.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lame-3.100-h1a8c8d9_1003.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.16-ha0e7c42_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_h07bc746_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-19.0.0-h819e3af_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-19.0.0-hf07054f_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-19.0.0-hf07054f_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-19.0.0-h4239455_8_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libasprintf-0.22.5-h8414b35_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libasprintf-devel-0.22.5-h8414b35_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libavif16-1.1.1-h45b7238_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-28_h10e41b3_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.1.0-hd74edd7_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.1.0-hd74edd7_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlienc-1.1.0-hd74edd7_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-28_hb3479ef_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcrc32c-1.1.2-hbdafb3b_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.11.1-h73640d1_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.23-hec38601_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libev-4.33-h93a5062_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libevent-2.1.12-h2757513_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.4-h286801f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libflac-1.4.3-hb765f3a_0.conda @@ -680,9 +327,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libglib-2.82.2-hdff4504_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-2.34.0-hdbe95d5_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-storage-2.34.0-h7081f7f_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgrpc-1.67.1-h0a426d6_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.17-h0d3ecfb_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libintl-0.22.5-h8414b35_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libintl-devel-0.22.5-h8414b35_3.conda @@ -690,139 +334,62 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-28_hc9a63f6_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.4-h39f12f2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libmad-0.15.1b-h1a8c8d9_1001.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.64.0-h6d7220d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libogg-1.3.5-h99b78c6_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.28-openmp_hf332438_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopentelemetry-cpp-1.18.0-h0c05b2d_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopentelemetry-cpp-headers-1.18.0-hce30654_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopus-1.3.1-h27ca646_1.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-19.0.0-h636d7b7_8_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.46-h3783ad8_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.3-h3bd63a1_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h07bc746_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsentencepiece-0.2.0-he13a0af_10.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsndfile-1.2.2-h9739721_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.48.0-h3f77e49_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.1-h9cc3647_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libthrift-0.21.0-h64651cc_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-h551f018_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.10.0-hda25de7_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libuv-1.50.0-h5505292_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libvorbis-1.3.7-h9f76cd9_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.5.0-h2471fea_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxcb-1.17.0-hdb1d25a_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.5-h178c5d8_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda - - 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-25.1.0.dev2025020605-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025020605-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025020605-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020605-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-25.1.0.dev2025020605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020700-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025020700-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025020700-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020700-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020700-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 - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/nlohmann_json-3.11.3-h00cdb27_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openjpeg-2.5.3-h8a3d83b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.0-h81ee809_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.29.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.29.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.29.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-prometheus-1.12.0rc1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.29.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.29.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.50b0-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/opusfile-0.12-h5643135_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/orc-2.0.3-h0ff2369_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.3-py312hcd31e36_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pcre2-10.44-h297a79d_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-11.1.0-py312h50aef2c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pixman-0.44.2-h2f9eb0b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/portaudio-19.6.0-h13dd4ca_9.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/portmidi-2.0.4-h13dd4ca_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/prometheus-cpp-1.3.0-h0967b3e_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.1-py312h998013c_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/protobuf-5.28.3-py312hd8f9ff3_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pthread-stubs-0.4-hd74edd7_1002.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-19.0.0-py312h1f38498_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-19.0.0-py312hc40f475_0_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.6-pyh3cfb1c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.27.2-py312hcd83bfe_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.7.1-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pygame-2.6.1-py312hb14fe3b_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyinstrument-5.0.1-py312hea69d52_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.8-hc22306f_1_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.20-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-xxhash-3.5.0-py312h024a12e_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-5_cp312.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py312h998013c_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.1-py312hf4875e0_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/rav1e-0.6.6-h69fbcac_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/re2-2024.07.02-h6589ca4_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h92ec313_1.conda - - 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.5.2-py312hcd83bfe_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 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sdl2_mixer-2.6.3-h4fe3bdc_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sdl2_ttf-2.24.0-h443c5de_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-0.2.0-h22a84ea_10.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-python-0.2.0-py312h155166a_10.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-spm-0.2.0-he13a0af_10.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-h98b9ce2_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.2.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.45.3-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/svt-av1-2.3.0-hf24288c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.21.0-py312hf3e4074_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.48.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.34.0-pyh31011fe_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.34.0-h31011fe_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/uvloop-0.21.0-py312h0bf5046_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/watchfiles-1.0.4-py312hcd83bfe_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/websockets-14.2-py312hea69d52_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/wrapt-1.17.2-py312hea69d52_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxau-1.0.12-h5505292_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxdmcp-1.1.5-hd74edd7_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xxhash-0.8.2-hb547adb_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.18.3-py312h998013c_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zlib-1.3.1-h8359307_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py312h15fbf35_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.6-hb46c0d2_0.conda packages: - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 @@ -862,1072 +429,87 @@ packages: license_family: BSD size: 23712 timestamp: 1650670790230 -- conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_1.conda - sha256: 95d4713e49ea92ae50cf42393683ede706b7875af5f7cb14c253438180afa732 - md5: 296b403617bafa89df4971567af79013 - depends: - - python >=3.9 - license: PSF-2.0 - license_family: PSF - size: 19351 - timestamp: 1733332029649 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.12-py312h178313f_0.conda - sha256: 223f271deceaf71d0cbee21162084104a6eca06e79c04ecb322706be3e406ea1 - md5: 9f96d8b6fb9bab11e46c12132283b5b1 - depends: - - __glibc >=2.17,<3.0.a0 - - aiohappyeyeballs >=2.3.0 - - aiosignal >=1.1.2 - - attrs >=17.3.0 - - frozenlist >=1.1.1 - - libgcc >=13 - - multidict >=4.5,<7.0 - - propcache >=0.2.0 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - - yarl >=1.17.0,<2.0 - arch: x86_64 - platform: linux - license: MIT AND Apache-2.0 - license_family: Apache - size: 915782 - timestamp: 1738824701518 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.12-py312hcc812fe_0.conda - sha256: 8d865017a2f2b2ab9a23e0ab325730c79fb7dc38246f46f4b58da24d7a324805 - md5: e26817b48ca6e2035f69d88165a792f6 - depends: - - aiohappyeyeballs >=2.3.0 - - aiosignal >=1.1.2 - - attrs >=17.3.0 - - frozenlist >=1.1.1 - - libgcc >=13 - - multidict >=4.5,<7.0 - - propcache >=0.2.0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - - yarl >=1.17.0,<2.0 - arch: aarch64 - platform: linux - license: MIT AND Apache-2.0 - license_family: Apache - size: 901058 - timestamp: 1738823269469 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.12-py312h998013c_0.conda - sha256: a4d04942bdeedbb7260b41eafb0302b6f8c3799f578c4389984c084a8fc34c16 - md5: 7675cee14b7e7d9ccf17ad37a4bdf53a - depends: - - __osx >=11.0 - - aiohappyeyeballs >=2.3.0 - - aiosignal >=1.1.2 - - attrs >=17.3.0 - - frozenlist >=1.1.1 - - multidict >=4.5,<7.0 - - propcache >=0.2.0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - - yarl >=1.17.0,<2.0 - arch: arm64 - platform: osx - license: MIT AND Apache-2.0 - license_family: Apache - size: 889104 - timestamp: 1738823362301 -- conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda - sha256: 7de8ced1918bbdadecf8e1c1c68237fe5709c097bd9e0d254f4cad118f4345d0 - md5: 1a3981115a398535dbe3f6d5faae3d36 - depends: - - frozenlist >=1.1.0 - - python >=3.9 - license: Apache-2.0 - license_family: APACHE - size: 13229 - timestamp: 1734342253061 -- conda: https://conda.anaconda.org/conda-forge/linux-64/alsa-lib-1.2.13-hb9d3cd8_0.conda - sha256: f507b58f77eabc0cc133723cb7fc45c053d551f234df85e70fb3ede082b0cd53 - md5: ae1370588aa6a5157c34c73e9bbb36a0 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - arch: x86_64 - platform: linux - license: LGPL-2.1-or-later - license_family: GPL - size: 560238 - timestamp: 1731489643707 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/alsa-lib-1.2.13-h86ecc28_0.conda - sha256: 4141180b0304559fefa8ca66f1cc217a1d957b03aa959f955daf33718162042f - md5: f643bb02c4bbcfe7de161a8ca5df530b - depends: - - libgcc >=13 - arch: aarch64 - platform: linux - license: LGPL-2.1-or-later - license_family: GPL - size: 591318 - timestamp: 1731489774660 -- conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - sha256: e0ea1ba78fbb64f17062601edda82097fcf815012cf52bb704150a2668110d48 - md5: 2934f256a8acfe48f6ebb4fce6cde29c - depends: - - python >=3.9 - - typing-extensions >=4.0.0 - license: MIT - license_family: MIT - size: 18074 - timestamp: 1733247158254 -- conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.8.0-pyhd8ed1ab_0.conda - sha256: f1455d2953e3eb6d71bc49881c8558d8e01888469dfd21061dd48afb6183e836 - md5: 848d25bfbadf020ee4d4ba90e5668252 - depends: - - exceptiongroup >=1.0.2 - - idna >=2.8 - - python >=3.9 - - sniffio >=1.1 - - typing_extensions >=4.5 - constrains: - - trio >=0.26.1 - - uvloop >=0.21 - license: MIT - license_family: MIT - size: 115305 - timestamp: 1736174485476 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aom-3.9.1-hac33072_0.conda - sha256: b08ef033817b5f9f76ce62dfcac7694e7b6b4006420372de22494503decac855 - md5: 346722a0be40f6edc53f12640d301338 - depends: - - libgcc-ng >=12 - - libstdcxx-ng >=12 - arch: x86_64 - platform: linux - license: BSD-2-Clause - license_family: BSD - size: 2706396 - timestamp: 1718551242397 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aom-3.9.1-hcccb83c_0.conda - sha256: ac438ce5d3d3673a9188b535fc7cda413b479f0d52536aeeac1bd82faa656ea0 - md5: cc744ac4efe5bcaa8cca51ff5b850df0 - depends: - - libgcc-ng >=12 - - libstdcxx-ng >=12 - arch: aarch64 - platform: linux - license: BSD-2-Clause - license_family: BSD - size: 3250813 - timestamp: 1718551360260 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aom-3.9.1-h7bae524_0.conda - sha256: ec238f18ce8140485645252351a0eca9ef4f7a1c568a420f240a585229bc12ef - md5: 7adba36492a1bb22d98ffffe4f6fc6de - depends: - - __osx >=11.0 - - libcxx >=16 - arch: arm64 - platform: osx - license: BSD-2-Clause - license_family: BSD - size: 2235747 - timestamp: 1718551382432 -- conda: https://conda.anaconda.org/conda-forge/linux-64/attr-2.5.1-h166bdaf_1.tar.bz2 - sha256: 82c13b1772c21fc4a17441734de471d3aabf82b61db9b11f4a1bd04a9c4ac324 - md5: d9c69a24ad678ffce24c6543a0176b00 - depends: - - libgcc-ng >=12 - arch: x86_64 - platform: linux - license: GPL-2.0-or-later - license_family: GPL - size: 71042 - timestamp: 1660065501192 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/attr-2.5.1-h4e544f5_1.tar.bz2 - sha256: 2c793b48e835a8fac93f1664c706442972a0206963bf8ca202e83f7f4d29a7d7 - md5: 1ef6c06fec1b6f5ee99ffe2152e53568 - depends: - - libgcc-ng >=12 - arch: aarch64 - platform: linux - license: GPL-2.0-or-later - license_family: GPL - size: 74992 - timestamp: 1660065534958 -- conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.1.0-pyh71513ae_0.conda - sha256: 1f267886522dfb9ae4e5ebbc3135b5eb13cff27bdbfe8d881a4d893459166ab4 - md5: 2cc3f588512f04f3a0c64b4e9bedc02d - depends: - - python >=3.9 - license: MIT - license_family: MIT - size: 56370 - timestamp: 1737819298139 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.1-h205f482_0.conda - sha256: ebe5e33249f37f6bb481de99581ebdc92dbfcf1b6915609bcf3c9e78661d6352 - md5: 9c500858e88df50af3cc883d194de78a - depends: - - __glibc >=2.17,<3.0.a0 - - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - aws-c-http >=0.9.2,<0.9.3.0a0 - - aws-c-io >=0.15.3,<0.15.4.0a0 - - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 - - libgcc >=13 - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 108111 - timestamp: 1737509831651 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.1-hb7ec8d5_0.conda - sha256: e1e6c9267a4d9af30b1d28c11a9041b17b7840ff83ef08614145a2a4f444f5b4 - md5: 2630f030652970a5531e492f6b2a6dd3 - depends: - - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - aws-c-http >=0.9.2,<0.9.3.0a0 - - aws-c-io >=0.15.3,<0.15.4.0a0 - - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 - - libgcc >=13 - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 112658 - timestamp: 1737509863269 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.1-hfc2798a_0.conda - sha256: 5a60d196a585b25d1446fb973009e4e648e8d70beaa2793787243ede6da0fd9a - md5: 0abd67c0f7b60d50348fbb32fef50b65 - depends: - - __osx >=11.0 - - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - aws-c-http >=0.9.2,<0.9.3.0a0 - - aws-c-io >=0.15.3,<0.15.4.0a0 - - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: Apache - size: 92562 - timestamp: 1737509877079 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.1-h1a47875_3.conda - sha256: 095ac824ea9303eff67e04090ae531d9eb33d2bf8f82eaade39b839c421e16e8 - md5: 55a8561fdbbbd34f50f57d9be12ed084 - depends: - - __glibc >=2.17,<3.0.a0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - libgcc >=13 - - openssl >=3.3.1,<4.0a0 - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 47601 - timestamp: 1733991564405 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.1-h740c5af_3.conda - sha256: c5c7961d48ca7320ed3560c036f7aa5244df4b85d9657f70aacc5faba3e1509a - md5: 57ed2c445d7ef01d121b9bcea0522913 - depends: - - aws-c-common >=0.10.6,<0.10.7.0a0 - - libgcc >=13 - - openssl >=3.3.1,<4.0a0 - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 50036 - timestamp: 1733991581303 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.1-hc8a0bd2_3.conda - sha256: 1f44be36e1daa17b4b081debb8aee492d13571084f38b503ad13e869fef24fe4 - md5: 8b0ce61384e5a33d2b301a64f3d22ac5 - depends: - - __osx >=11.0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - openssl >=3.3.1,<4.0a0 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: Apache - size: 39925 - timestamp: 1733991649383 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.10.6-hb9d3cd8_0.conda - sha256: 496e92f2150fdc351eacf6e236015deedb3d0d3114f8e5954341cbf9f3dda257 - md5: d7d4680337a14001b0e043e96529409b - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 236574 - timestamp: 1733975453350 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-common-0.10.6-h86ecc28_0.conda - sha256: 57288ec5df35781bea8fc6a8c9099cad6695b747784fc1b8862a0f9e5b3bf5ab - md5: fef806a0f6de853670c746bbece01966 - depends: - - libgcc >=13 - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 259031 - timestamp: 1733975520465 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.10.6-h5505292_0.conda - sha256: 3bde135c8e74987c0f79ecd4fa17ec9cff0d658b3090168727ca1af3815ae57a - md5: 145e5b4c9702ed279d7d68aaf096f77d - depends: - - __osx >=11.0 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: Apache - size: 221863 - timestamp: 1733975576886 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.3.0-h4e1184b_5.conda - sha256: 62ca84da83585e7814a40240a1e750b1563b2680b032a471464eccc001c3309b - md5: 3f4c1197462a6df2be6dc8241828fe93 - depends: - - __glibc >=2.17,<3.0.a0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - libgcc >=13 - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 19086 - timestamp: 1733991637424 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-compression-0.3.0-h0f0193d_5.conda - sha256: 3f05d19f68ef800f33d44ea2a4211003124076516c8469abc7d432236344df53 - md5: 3a1421d12435df5b4c412cc4c8fac64d - depends: - - aws-c-common >=0.10.6,<0.10.7.0a0 - - libgcc >=13 - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 19740 - timestamp: 1733991625201 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-compression-0.3.0-hc8a0bd2_5.conda - sha256: 47b2813f652ce7e64ac442f771b2a5f7d4af4ad0d07ff51f6075ea80ed2e3f09 - md5: a8b6c17732d14ed49d0e9b59c43186bc - depends: - - __osx >=11.0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: Apache - size: 18068 - timestamp: 1733991869211 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.0-h7959bf6_11.conda - sha256: 10d7240c7db0c941fb1a59c4f8ea6689a434b03309ee7b766fa15a809c553c02 - md5: 9b3fb60fe57925a92f399bc3fc42eccf - depends: - - __glibc >=2.17,<3.0.a0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - aws-c-io >=0.15.3,<0.15.4.0a0 - - aws-checksums >=0.2.2,<0.2.3.0a0 - - libgcc >=13 - - libstdcxx >=13 - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 54003 - timestamp: 1734024480949 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-event-stream-0.5.0-hcbd8f92_11.conda - sha256: 79aa363c71c891a27496c0498f8d498b2ddc87b3ccb3b6c9da5b50b05936ebb8 - md5: e0772c59af4243a9b2565baa5d79e5b6 - depends: - - aws-c-common >=0.10.6,<0.10.7.0a0 - - aws-c-io >=0.15.3,<0.15.4.0a0 - - aws-checksums >=0.2.2,<0.2.3.0a0 - - libgcc >=13 - - libstdcxx >=13 - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 55207 - timestamp: 1734024546663 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.0-h54f970a_11.conda - sha256: f0667935f4e0d4c25e0e51da035640310b5ceeb8f723156734439bde8b848d7d - md5: ba41238f8e653998d7d2f42e3a8db054 - depends: - - __osx >=11.0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - aws-c-io >=0.15.3,<0.15.4.0a0 - - aws-checksums >=0.2.2,<0.2.3.0a0 - - libcxx >=18 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: Apache - size: 47078 - timestamp: 1734024749727 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.2-hefd7a92_4.conda - sha256: 4a330206bd51148f6c13ca0b7a4db40f29a46f090642ebacdeb88b8a4abd7f99 - md5: 5ce4df662d32d3123ea8da15571b6f51 - depends: - - __glibc >=2.17,<3.0.a0 - - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - aws-c-compression >=0.3.0,<0.3.1.0a0 - - aws-c-io >=0.15.3,<0.15.4.0a0 - - libgcc >=13 - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 197731 - timestamp: 1734008380764 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.2-h3df160d_4.conda - sha256: 3a1d2d332945306be9d49e569b95e4cc172d825f10e88715513a172f28ebb59e - md5: 28f00aa7fd9556c4c461328cf146c20b - depends: - - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - aws-c-compression >=0.3.0,<0.3.1.0a0 - - aws-c-io >=0.15.3,<0.15.4.0a0 - - libgcc >=13 - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 190586 - timestamp: 1734008442362 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.2-h96aa502_4.conda - sha256: 22e4737c8a885995b7c1ae1d79c1f6e78d489e16ec079615980fdde067aeaf76 - md5: 495c93a4f08b17deb3c04894512330e6 - depends: - - __osx >=11.0 - - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - aws-c-compression >=0.3.0,<0.3.1.0a0 - - aws-c-io >=0.15.3,<0.15.4.0a0 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: Apache - size: 152983 - timestamp: 1734008451473 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-h173a860_6.conda - sha256: 335d822eead0a097ffd23677a288e1f18ea22f47a92d4f877419debb93af0e81 - md5: 9a063178f1af0a898526cc24ba7be486 - depends: - - __glibc >=2.17,<3.0.a0 - - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - libgcc >=13 - - s2n >=1.5.11,<1.5.12.0a0 - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 157263 - timestamp: 1737207617838 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-hfd5ba81_6.conda - sha256: d8adfde05cee11057d99c3802e84b2300430a7c7c3c9936165d1d4b25ef59d91 - md5: 4e6771b45cb2b035c62d023dbf0dc000 - depends: - - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - libgcc >=13 - - s2n >=1.5.11,<1.5.12.0a0 - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 160933 - timestamp: 1737207637279 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-haba67d1_6.conda - sha256: 73722dd175af78b6cbfa033066f0933351f5382a1a737f6c6d9b8cfa84022161 - md5: d02e8f40ff69562903e70a1c6c48b009 - depends: - - __osx >=11.0 - - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: Apache - size: 136048 - timestamp: 1737207681224 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h11f4f37_12.conda - sha256: 512d3969426152d9d5fd886e27b13706122dc3fa90eb08c37b0d51a33d7bb14a - md5: 96c3e0221fa2da97619ee82faa341a73 - depends: - - __glibc >=2.17,<3.0.a0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - aws-c-http >=0.9.2,<0.9.3.0a0 - - aws-c-io >=0.15.3,<0.15.4.0a0 - - libgcc >=13 - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 194672 - timestamp: 1734025626798 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h5f50e26_12.conda - sha256: ffeb9100cc8fd4093e1a6fdfd938bc4a396dd77480b7fb17aa42855a4d5e2c70 - md5: 031ca33115d4b1eeb43f435d6215778c - depends: - - aws-c-common >=0.10.6,<0.10.7.0a0 - - aws-c-http >=0.9.2,<0.9.3.0a0 - - aws-c-io >=0.15.3,<0.15.4.0a0 - - libgcc >=13 - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 169516 - timestamp: 1734025167885 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h24f418c_12.conda - sha256: 96575ea1dd2a9ea94763882e40a66dcbff9c41f702bf37c9514c4c719b3c11dd - md5: c072045a6206f88015d02fcba1705ea1 - depends: - - __osx >=11.0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - aws-c-http >=0.9.2,<0.9.3.0a0 - - aws-c-io >=0.15.3,<0.15.4.0a0 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: Apache - size: 134371 - timestamp: 1734025379525 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.9-he1b24dc_1.conda - sha256: 15fbdedc56850f8be5be7a5bcaea1af09c97590e631c024ae089737fc932fc42 - md5: caafc32928a5f7f3f7ef67d287689144 - depends: - - __glibc >=2.17,<3.0.a0 - - aws-c-auth >=0.8.1,<0.8.2.0a0 - - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - aws-c-http >=0.9.2,<0.9.3.0a0 - - aws-c-io >=0.15.3,<0.15.4.0a0 - - aws-checksums >=0.2.2,<0.2.3.0a0 - - libgcc >=13 - - openssl >=3.4.0,<4.0a0 - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 115413 - timestamp: 1737558687616 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.9-h05b070f_1.conda - sha256: 9e7857fbc33eddc291fa09890ce468a92485d3e3e127bc00bbd1803e34121f84 - md5: e0a2869195f069db88b8932f5b00bee5 - depends: - - aws-c-auth >=0.8.1,<0.8.2.0a0 - - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - aws-c-http >=0.9.2,<0.9.3.0a0 - - aws-c-io >=0.15.3,<0.15.4.0a0 - - aws-checksums >=0.2.2,<0.2.3.0a0 - - libgcc >=13 - - openssl >=3.4.0,<4.0a0 - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 117875 - timestamp: 1737558720047 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.9-hf37e03c_1.conda - sha256: 92e8ca4eefcbbdf4189584c9410382884a06ed3030e5ecaac656dab8c95e6a80 - md5: de65f5e4ab5020103fe70a0eba9432a0 - depends: - - __osx >=11.0 - - aws-c-auth >=0.8.1,<0.8.2.0a0 - - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - aws-c-http >=0.9.2,<0.9.3.0a0 - - aws-c-io >=0.15.3,<0.15.4.0a0 - - aws-checksums >=0.2.2,<0.2.3.0a0 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: Apache - size: 98731 - timestamp: 1737558731831 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.2-h4e1184b_0.conda - sha256: 0424e380c435ba03b5948d02e8c958866c4eee50ed29e57f99473a5f795a4cfc - md5: dcd498d493818b776a77fbc242fbf8e4 - depends: - - __glibc >=2.17,<3.0.a0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - libgcc >=13 - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 55911 - timestamp: 1736535960724 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.2-h0f0193d_0.conda - sha256: fba38e469457764afcb94aa84d4d7788e6b5fa1554d34b05c904d2245fdd3c81 - md5: a78928881c652facde2a13ec6e776f3c - depends: - - aws-c-common >=0.10.6,<0.10.7.0a0 - - libgcc >=13 - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 58221 - timestamp: 1736536003041 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.2-hc8a0bd2_0.conda - sha256: ea4f0f1e99056293c69615f581a997d65ba7e229e296e402e0d8ef750648a5b5 - md5: e7b5498ac7b7ab921a907be38f3a8080 - depends: - - __osx >=11.0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: Apache - size: 49872 - timestamp: 1736536152332 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-h4e1184b_4.conda - sha256: 1ed9a332d06ad595694907fad2d6d801082916c27cd5076096fda4061e6d24a8 - md5: 74e8c3e4df4ceae34aa2959df4b28101 - depends: - - __glibc >=2.17,<3.0.a0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - libgcc >=13 - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 72762 - timestamp: 1733994347547 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h0f0193d_4.conda - sha256: 9f1e3635a587bcf92b61d88c7af7d24cd89c147c6d0ae58afbde08e65bcf48da - md5: 3bd35b0adab3d743f09e0252cc441d6b - depends: - - aws-c-common >=0.10.6,<0.10.7.0a0 - - libgcc >=13 - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 72154 - timestamp: 1733994384415 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-hc8a0bd2_4.conda - sha256: 215086d95e8ff1d3fcb0197ada116cc9d7db1fdae7573f5e810d20fa9215b47c - md5: e70e88a357a3749b67679c0788c5b08a - depends: - - __osx >=11.0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: Apache - size: 70186 - timestamp: 1733994496998 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.9-he0e7f3f_2.conda - sha256: c1930569713bd5231d48d885a5e3707ac917b428e8f08189d14064a2bb128adc - md5: 8a4e6fc8a3b285536202b5456a74a940 - depends: - - __glibc >=2.17,<3.0.a0 - - aws-c-auth >=0.8.1,<0.8.2.0a0 - - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - - aws-c-http >=0.9.2,<0.9.3.0a0 - - aws-c-io >=0.15.3,<0.15.4.0a0 - - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - - aws-c-s3 >=0.7.9,<0.7.10.0a0 - - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 - - libgcc >=13 - - libstdcxx >=13 - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 353222 - timestamp: 1737565463079 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.9-hab3ce66_2.conda - sha256: c3884fb10e0fd9be5c13256cabcda1afa9d2fcf8878c67214d02fc344509857d - md5: 875968ebffe992b68faf2caebbf32f02 - depends: - - aws-c-auth >=0.8.1,<0.8.2.0a0 - - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - - aws-c-http >=0.9.2,<0.9.3.0a0 - - aws-c-io >=0.15.3,<0.15.4.0a0 - - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - - aws-c-s3 >=0.7.9,<0.7.10.0a0 - - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 - - libgcc >=13 - - libstdcxx >=13 - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 283812 - timestamp: 1737565480034 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.9-ha81f72f_2.conda - sha256: ed5f1d19aad53787fdebe13db4709c97eae2092536cc55d3536eba320c4286e1 - md5: c9c034d3239bf25687ca4dd985007ecd - depends: - - __osx >=11.0 - - aws-c-auth >=0.8.1,<0.8.2.0a0 - - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - - aws-c-http >=0.9.2,<0.9.3.0a0 - - aws-c-io >=0.15.3,<0.15.4.0a0 - - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - - aws-c-s3 >=0.7.9,<0.7.10.0a0 - - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 - - libcxx >=18 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: Apache - size: 235976 - timestamp: 1737565563139 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.489-h4d475cb_0.conda - sha256: 08d6b7d2ed17bfcc7deb903c7751278ee434abdb27e3be0dceb561f30f030c75 - md5: b775e9f46dfa94b228a81d8e8c6d8b1d - depends: - - __glibc >=2.17,<3.0.a0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - - aws-checksums >=0.2.2,<0.2.3.0a0 - - aws-crt-cpp >=0.29.9,<0.29.10.0a0 - - libcurl >=8.11.1,<9.0a0 - - libgcc >=13 - - libstdcxx >=13 - - libzlib >=1.3.1,<2.0a0 - - openssl >=3.4.0,<4.0a0 - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 3144364 - timestamp: 1737576036746 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.489-h88461e4_0.conda - sha256: 88353e82b053763168cddbe2f88048defc1c97b3dad0966fbe8c4fa7aa592c7e - md5: e725d8fa77a6a5f38a78c5de914a5f40 - depends: - - aws-c-common >=0.10.6,<0.10.7.0a0 - - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - - aws-checksums >=0.2.2,<0.2.3.0a0 - - aws-crt-cpp >=0.29.9,<0.29.10.0a0 - - libcurl >=8.11.1,<9.0a0 - - libgcc >=13 - - libstdcxx >=13 - - libzlib >=1.3.1,<2.0a0 - - openssl >=3.4.0,<4.0a0 - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 3015109 - timestamp: 1737575993030 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.489-h0e5014b_0.conda - sha256: d82451530ddf363d8bb31a8a7391bb9699f745e940ace91d78c0e6170deef03c - md5: 156cfb45a1bb8cffc81e59047bb34f51 - depends: - - __osx >=11.0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - - aws-checksums >=0.2.2,<0.2.3.0a0 - - aws-crt-cpp >=0.29.9,<0.29.10.0a0 - - libcurl >=8.11.1,<9.0a0 - - libcxx >=18 - - libzlib >=1.3.1,<2.0a0 - - openssl >=3.4.0,<4.0a0 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: Apache - size: 2874126 - timestamp: 1737577023623 -- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda - sha256: fe07debdb089a3db17f40a7f20d283d75284bb4fc269ef727b8ba6fc93f7cb5a - md5: 0a8838771cc2e985cd295e01ae83baf1 - depends: - - __glibc >=2.17,<3.0.a0 - - libcurl >=8.10.1,<9.0a0 - - libgcc >=13 - - libstdcxx >=13 - - openssl >=3.3.2,<4.0a0 - arch: x86_64 - platform: linux - license: MIT - license_family: MIT - size: 345117 - timestamp: 1728053909574 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-core-cpp-1.14.0-h1887c18_0.conda - sha256: 8967b3ccee4d74e61f6ec82dd8efb9deb854ee7ba012dfe767b7a92e0ac77724 - md5: e0c3a906a41be769f0ae20ca3e31cfc0 - depends: - - libcurl >=8.10.1,<9.0a0 - - libgcc >=13 - - libstdcxx >=13 - - openssl >=3.3.2,<4.0a0 - arch: aarch64 - platform: linux - license: MIT - license_family: MIT - size: 338650 - timestamp: 1728055589907 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.14.0-hd50102c_0.conda - sha256: f5b91329ed59ffc0be8747784c6e4cc7e56250c54032883a83bc11808ef6a87e - md5: f093a11dcf3cdcca010b20a818fcc6dc - depends: - - __osx >=11.0 - - libcurl >=8.10.1,<9.0a0 - - libcxx >=17 - - openssl >=3.3.2,<4.0a0 - arch: arm64 - platform: osx - license: MIT - license_family: MIT - size: 294299 - timestamp: 1728054014060 -- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.10.0-h113e628_0.conda - sha256: 286b31616c191486626cb49e9ceb5920d29394b9e913c23adb7eb637629ba4de - md5: 73f73f60854f325a55f1d31459f2ab73 - depends: - - __glibc >=2.17,<3.0.a0 - - azure-core-cpp >=1.14.0,<1.14.1.0a0 - - libgcc >=13 - - libstdcxx >=13 - - openssl >=3.3.2,<4.0a0 - arch: x86_64 - platform: linux - license: MIT - license_family: MIT - size: 232351 - timestamp: 1728486729511 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-identity-cpp-1.10.0-h47b0b28_0.conda - sha256: 1c72423b9beba167d2f01b80dc204da77240a8266f1edb3d89510c852b300d69 - md5: 94e73a7877743a85c57091d8afab2348 - depends: - - azure-core-cpp >=1.14.0,<1.14.1.0a0 - - libgcc >=13 - - libstdcxx >=13 - - openssl >=3.3.2,<4.0a0 - arch: aarch64 - platform: linux - license: MIT - license_family: MIT - size: 217132 - timestamp: 1728488096615 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.10.0-hc602bab_0.conda - sha256: bde446b916fff5150606f8ed3e6058ffc55a3aa72381e46f1ab346590b1ae40a - md5: d7b71593a937459f2d4b67e1a4727dc2 - depends: - - __osx >=11.0 - - azure-core-cpp >=1.14.0,<1.14.1.0a0 - - libcxx >=17 - - openssl >=3.3.2,<4.0a0 - arch: arm64 - platform: osx - license: MIT - license_family: MIT - size: 166907 - timestamp: 1728486882502 -- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.13.0-h3cf044e_1.conda - sha256: 2606260e5379eed255bcdc6adc39b93fb31477337bcd911c121fc43cd29bf394 - md5: 7eb66060455c7a47d9dcdbfa9f46579b - depends: - - __glibc >=2.17,<3.0.a0 - - azure-core-cpp >=1.14.0,<1.14.1.0a0 - - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 - - libgcc >=13 - - libstdcxx >=13 - arch: x86_64 - platform: linux - license: MIT - license_family: MIT - size: 549342 - timestamp: 1728578123088 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-blobs-cpp-12.13.0-h185ecfd_1.conda - sha256: 280ec70009a92626054f58e45b168fce393e71a9710587488bd8401628cda481 - md5: 221e1e5ecb2643e113f32b3229d5ba33 - depends: - - azure-core-cpp >=1.14.0,<1.14.1.0a0 - - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 - - libgcc >=13 - - libstdcxx >=13 - arch: aarch64 - platform: linux - license: MIT - license_family: MIT - size: 502934 - timestamp: 1728580241002 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-blobs-cpp-12.13.0-h7585a09_1.conda - sha256: 08d52d130addc0fb55d5ba10d9fa483e39be25d69bac7f4c676c2c3069207590 - md5: 704238ef05d46144dae2e6b5853df8bc - depends: - - __osx >=11.0 - - azure-core-cpp >=1.14.0,<1.14.1.0a0 - - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 - - libcxx >=17 - arch: arm64 - platform: osx - license: MIT - license_family: MIT - size: 438636 - timestamp: 1728578216193 -- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-common-cpp-12.8.0-h736e048_1.conda - sha256: 273475f002b091b66ce7366da04bf164c3732c03f8692ab2ee2d23335b6a82ba - md5: 13de36be8de3ae3f05ba127631599213 +- conda: https://conda.anaconda.org/conda-forge/linux-64/alsa-lib-1.2.13-hb9d3cd8_0.conda + sha256: f507b58f77eabc0cc133723cb7fc45c053d551f234df85e70fb3ede082b0cd53 + md5: ae1370588aa6a5157c34c73e9bbb36a0 depends: - __glibc >=2.17,<3.0.a0 - - azure-core-cpp >=1.14.0,<1.14.1.0a0 - libgcc >=13 - - libstdcxx >=13 - - libxml2 >=2.12.7,<3.0a0 - - openssl >=3.3.2,<4.0a0 arch: x86_64 platform: linux - license: MIT - license_family: MIT - size: 149312 - timestamp: 1728563338704 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-common-cpp-12.8.0-h1b94036_1.conda - sha256: 146e76aac169e3dbdce5d3b142b7930ac643795c765e7655d1989905ec7d3231 - md5: 793b1080ab2d958980f137a8643cd6e8 + license: LGPL-2.1-or-later + license_family: GPL + size: 560238 + timestamp: 1731489643707 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/alsa-lib-1.2.13-h86ecc28_0.conda + sha256: 4141180b0304559fefa8ca66f1cc217a1d957b03aa959f955daf33718162042f + md5: f643bb02c4bbcfe7de161a8ca5df530b depends: - - azure-core-cpp >=1.14.0,<1.14.1.0a0 - libgcc >=13 - - libstdcxx >=13 - - libxml2 >=2.12.7,<3.0a0 - - openssl >=3.3.2,<4.0a0 arch: aarch64 platform: linux - license: MIT - license_family: MIT - size: 140832 - timestamp: 1728565334900 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-common-cpp-12.8.0-h9ca1f76_1.conda - sha256: 77ab04e8fe5636a2de9c718f72a43645f7502cd208868c8a91ffba385547d585 - md5: 7a187cd7b1445afc80253bb186a607cc - depends: - - __osx >=11.0 - - azure-core-cpp >=1.14.0,<1.14.1.0a0 - - libcxx >=17 - - libxml2 >=2.12.7,<3.0a0 - - openssl >=3.3.2,<4.0a0 - arch: arm64 - platform: osx - license: MIT - license_family: MIT - size: 121278 - timestamp: 1728563418777 -- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-files-datalake-cpp-12.12.0-ha633028_1.conda - sha256: 5371e4f3f920933bb89b926a85a67f24388227419abd6e99f6086481e5e8d5f2 - md5: 7c1980f89dd41b097549782121a73490 + license: LGPL-2.1-or-later + license_family: GPL + size: 591318 + timestamp: 1731489774660 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aom-3.9.1-hac33072_0.conda + sha256: b08ef033817b5f9f76ce62dfcac7694e7b6b4006420372de22494503decac855 + md5: 346722a0be40f6edc53f12640d301338 depends: - - __glibc >=2.17,<3.0.a0 - - azure-core-cpp >=1.14.0,<1.14.1.0a0 - - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 - - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 - - libgcc >=13 - - libstdcxx >=13 + - libgcc-ng >=12 + - libstdcxx-ng >=12 arch: x86_64 platform: linux - license: MIT - license_family: MIT - size: 287366 - timestamp: 1728729530295 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-files-datalake-cpp-12.12.0-h37d6d07_1.conda - sha256: 4079c617a75682e49bae63670d58fd6078ccfbbe55ca1f994acab3a74ab6bbcc - md5: b724f3b4b7f4e9b36c58cbe3ed8610a2 - depends: - - azure-core-cpp >=1.14.0,<1.14.1.0a0 - - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 - - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 - - libgcc >=13 - - libstdcxx >=13 + license: BSD-2-Clause + license_family: BSD + size: 2706396 + timestamp: 1718551242397 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aom-3.9.1-hcccb83c_0.conda + sha256: ac438ce5d3d3673a9188b535fc7cda413b479f0d52536aeeac1bd82faa656ea0 + md5: cc744ac4efe5bcaa8cca51ff5b850df0 + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 arch: aarch64 platform: linux - license: MIT - license_family: MIT - size: 260547 - timestamp: 1728730924071 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-files-datalake-cpp-12.12.0-hcdd55da_1.conda - sha256: f48523f8aa0b5b80f45a92f0556b388dd96f44ac2dc2f44a01d08c1822eec97d - md5: c49fbc5233fcbaa86391162ff1adef38 + license: BSD-2-Clause + license_family: BSD + size: 3250813 + timestamp: 1718551360260 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aom-3.9.1-h7bae524_0.conda + sha256: ec238f18ce8140485645252351a0eca9ef4f7a1c568a420f240a585229bc12ef + md5: 7adba36492a1bb22d98ffffe4f6fc6de depends: - __osx >=11.0 - - azure-core-cpp >=1.14.0,<1.14.1.0a0 - - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 - - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 - - libcxx >=17 + - libcxx >=16 arch: arm64 platform: osx - license: MIT - license_family: MIT - size: 196032 - timestamp: 1728729672889 -- conda: https://conda.anaconda.org/conda-forge/noarch/backoff-2.2.1-pyhd8ed1ab_1.conda - sha256: f334115c6b0c6c2cd0d28595365f205ec7eaa60bcc5ff91a75d7245f728be820 - md5: a38b801f2bcc12af80c2e02a9e4ce7d9 - depends: - - python >=3.9 - license: MIT - license_family: MIT - size: 18816 - timestamp: 1733771192649 -- conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py312h2ec8cdc_2.conda - sha256: f2a59ccd20b4816dea9a2a5cb917eb69728271dbf1aeab4e1b7e609330a50b6f - md5: b0b867af6fc74b2a0aa206da29c0f3cf + license: BSD-2-Clause + license_family: BSD + size: 2235747 + timestamp: 1718551382432 +- conda: https://conda.anaconda.org/conda-forge/linux-64/attr-2.5.1-h166bdaf_1.tar.bz2 + sha256: 82c13b1772c21fc4a17441734de471d3aabf82b61db9b11f4a1bd04a9c4ac324 + md5: d9c69a24ad678ffce24c6543a0176b00 depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libstdcxx >=13 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - constrains: - - libbrotlicommon 1.1.0 hb9d3cd8_2 + - libgcc-ng >=12 arch: x86_64 platform: linux - license: MIT - license_family: MIT - size: 349867 - timestamp: 1725267732089 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/brotli-python-1.1.0-py312h6f74592_2.conda - sha256: 9736bf660a0e4260c68f81d2635b51067f817813e6490ac9e8abd9a835dcbf6d - md5: e1e9727063057168d95f27a032acd0a4 + license: GPL-2.0-or-later + license_family: GPL + size: 71042 + timestamp: 1660065501192 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/attr-2.5.1-h4e544f5_1.tar.bz2 + sha256: 2c793b48e835a8fac93f1664c706442972a0206963bf8ca202e83f7f4d29a7d7 + md5: 1ef6c06fec1b6f5ee99ffe2152e53568 depends: - - libgcc >=13 - - libstdcxx >=13 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - constrains: - - libbrotlicommon 1.1.0 h86ecc28_2 + - libgcc-ng >=12 arch: aarch64 platform: linux - license: MIT - license_family: MIT - size: 356878 - timestamp: 1725267878508 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py312hde4cb15_2.conda - sha256: 254b411fa78ccc226f42daf606772972466f93e9bc6895eabb4cfda22f5178af - md5: a83c2ef76ccb11bc2349f4f17696b15d - depends: - - __osx >=11.0 - - libcxx >=17 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - constrains: - - libbrotlicommon 1.1.0 hd74edd7_2 - arch: arm64 - platform: osx - license: MIT - license_family: MIT - size: 339360 - timestamp: 1725268143995 + license: GPL-2.0-or-later + license_family: GPL + size: 74992 + timestamp: 1660065534958 - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda sha256: 5ced96500d945fb286c9c838e54fa759aa04a7129c59800f0846b4335cee770d md5: 62ee74e96c5ebb0af99386de58cf9553 @@ -1962,40 +544,6 @@ packages: license_family: BSD size: 122909 timestamp: 1720974522888 -- conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.4-hb9d3cd8_0.conda - sha256: d4f28d87b6339b94f74762c0076e29c8ef8ddfff51a564a92da2843573c18320 - md5: e2775acf57efd5af15b8e3d1d74d72d3 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - arch: x86_64 - platform: linux - license: MIT - license_family: MIT - size: 206085 - timestamp: 1734208189009 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/c-ares-1.34.4-h86ecc28_0.conda - sha256: 1187a41d4bb2afe02cb18690682edc98d1e9f5e0ccda638d8704a75ea1875bbe - md5: 356da36f35d36dcba16e43f1589d4e39 - depends: - - libgcc >=13 - arch: aarch64 - platform: linux - license: MIT - license_family: MIT - size: 215979 - timestamp: 1734208193181 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.4-h5505292_0.conda - sha256: 09c0c8476e50b2955f474a4a1c17c4c047dd52993b5366b6ea8e968e583b921f - md5: c1c999a38a4303b29d75c636eaa13cf9 - depends: - - __osx >=11.0 - arch: arm64 - platform: osx - license: MIT - license_family: MIT - size: 179496 - timestamp: 1734208291879 - conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2025.1.31-hbcca054_0.conda sha256: bf832198976d559ab44d6cdb315642655547e26d826e34da67cbee6624cda189 md5: 19f3a56f68d2fd06c516076bff482c52 @@ -2093,70 +641,6 @@ packages: license: LGPL-2.1-only or MPL-1.1 size: 894517 timestamp: 1733791145035 -- conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.12.14-pyhd8ed1ab_0.conda - sha256: 048c16a9cbcb1fbad02083414d3bc7c1d0eea4b39aee6aa6bf8d1d5089ca8bad - md5: 6feb87357ecd66733be3279f16a8c400 - depends: - - python >=3.9 - license: ISC - size: 161642 - timestamp: 1734380604767 -- conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py312h06ac9bb_0.conda - sha256: cba6ea83c4b0b4f5b5dc59cb19830519b28f95d7ebef7c9c5cf1c14843621457 - md5: a861504bbea4161a9170b85d4d2be840 - depends: - - __glibc >=2.17,<3.0.a0 - - libffi >=3.4,<4.0a0 - - libgcc >=13 - - pycparser - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - arch: x86_64 - platform: linux - license: MIT - license_family: MIT - size: 294403 - timestamp: 1725560714366 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cffi-1.17.1-py312hac81daf_0.conda - sha256: 1162e3ca039e7ca7c0e78f0a020ed1bde968096841b663e3f393c966eb82f0f0 - md5: 1a256e5581b1099e9295cb84d53db3ea - depends: - - libffi >=3.4,<4.0a0 - - libgcc >=13 - - pycparser - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - arch: aarch64 - platform: linux - license: MIT - license_family: MIT - size: 312892 - timestamp: 1725561779888 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.1-py312h0fad829_0.conda - sha256: 8d91a0d01358b5c3f20297c6c536c5d24ccd3e0c2ddd37f9d0593d0f0070226f - md5: 19a5456f72f505881ba493979777b24e - depends: - - __osx >=11.0 - - libffi >=3.4,<4.0a0 - - pycparser - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - arch: arm64 - platform: osx - license: MIT - license_family: MIT - size: 281206 - timestamp: 1725560813378 -- conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda - sha256: 4e0ee91b97e5de3e74567bdacea27f0139709fceca4db8adffbe24deffccb09b - md5: e83a31202d1c0a000fce3e9cf3825875 - depends: - - python >=3.9 - license: MIT - license_family: MIT - size: 47438 - timestamp: 1735929811779 - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda sha256: c920d23cd1fcf565031c679adb62d848af60d6fbb0edc2d50ba475cea4f0d8ab md5: f22f4d4970e09d68a10b922cbb0408d3 @@ -2176,29 +660,6 @@ packages: license_family: BSD size: 27011 timestamp: 1733218222191 -- conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda - sha256: 7e09bd083a609138b780fcc4535924cb96814d2c908a36d4c64a2ba9ee3efe7f - md5: 3e087f072ce03c43a9b60522f5d0ca2f - depends: - - aiohttp - - dill >=0.3.0,<0.3.8 - - fsspec >=2021.11.1 - - huggingface_hub >=0.14.0,<1.0.0 - - importlib-metadata - - multiprocess - - numpy >=1.17 - - packaging - - pandas - - pyarrow >=8.0.0 - - python >=3.8.0 - - python-xxhash - - pyyaml >=5.1 - - requests >=2.19.0 - - tqdm >=4.62.1 - license: Apache-2.0 - license_family: Apache - size: 347303 - timestamp: 1691593908658 - conda: https://conda.anaconda.org/conda-forge/linux-64/dav1d-1.2.1-hd590300_0.conda sha256: 22053a5842ca8ee1cf8e1a817138cdb5e647eb2c46979f84153f6ad7bde73020 md5: 418c6ca5929a611cbd69204907a83995 @@ -2256,70 +717,6 @@ packages: license_family: GPL size: 672759 timestamp: 1640113663539 -- conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.18-pyhd8ed1ab_0.conda - sha256: d614bcff10696f1efc714df07651b50bf3808401fcc03814309ecec242cc8870 - md5: 0cef44b1754ae4d6924ac0eef6b9fdbe - depends: - - python >=3.9 - - wrapt <2,>=1.10 - license: MIT - license_family: MIT - size: 14382 - timestamp: 1737987072859 -- conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda - sha256: 4ff20c6be028be2825235631c45d9e4a75bca1de65f8840c02dfb28ea0137c45 - md5: 5e4f3466526c52bc9af2d2353a1460bd - depends: - - python >=3.7 - license: BSD-3-Clause - license_family: BSD - size: 87553 - timestamp: 1690101185422 -- conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda - sha256: 3ec40ccf63f2450c5e6c7dd579e42fc2e97caf0d8cd4ba24aa434e6fc264eda0 - md5: 5fbd60d61d21b4bd2f9d7a48fe100418 - depends: - - python >=3.9,<4.0.0 - - sniffio - constrains: - - aioquic >=1.0.0 - - wmi >=1.5.1 - - httpx >=0.26.0 - - trio >=0.23 - - cryptography >=43 - - httpcore >=1.0.0 - - idna >=3.7 - - h2 >=4.1.0 - license: ISC - license_family: OTHER - size: 172172 - timestamp: 1733256829961 -- conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda - sha256: b91a19eb78edfc2dbb36de9a67f74ee2416f1b5273dd7327abe53f2dbf864736 - md5: da16dd3b0b71339060cd44cb7110ddf9 - depends: - - dnspython >=2.0.0 - - idna >=2.0.0 - - python >=3.9 - license: Unlicense - size: 44401 - timestamp: 1733300827551 -- conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_1.conda - sha256: e0d0fdf587aa0ed0ff08b2bce3ab355f46687b87b0775bfba01cc80a859ee6a2 - md5: 0794f8807ff2c6f020422cacb1bd7bfa - depends: - - email-validator >=2.2.0,<2.2.1.0a0 - license: Unlicense - size: 6552 - timestamp: 1733300828176 -- conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda - sha256: cbde2c64ec317118fc06b223c5fd87c8a680255e7348dd60e7b292d2e103e701 - md5: a16662747cdeb9abbac74d0057cc976e - depends: - - python >=3.9 - license: MIT and PSF-2.0 - size: 20486 - timestamp: 1733208916977 - conda: https://conda.anaconda.org/conda-forge/linux-64/expat-2.6.4-h5888daf_0.conda sha256: 1848c7db9e264e3b8036ee133d570dd880422983cd20dd9585a505289606d276 md5: 1d6afef758879ef5ee78127eb4cd2c4a @@ -2345,45 +742,6 @@ packages: license_family: MIT size: 130354 timestamp: 1730967212801 -- conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.8-pyh29332c3_0.conda - sha256: 5e1e3d5cf306d9b3b5fe0d45a9e8440e8770ba7e4a5fac1ac847ca693b0dc064 - md5: 753382711adab47269f0bfe994906bc4 - depends: - - python >=3.9 - - starlette >=0.40.0,<0.46.0 - - typing_extensions >=4.8.0 - - pydantic >=1.7.4,!=1.8,!=1.8.1,!=2.0.0,!=2.0.1,!=2.1.0,<3.0.0 - - email_validator >=2.0.0 - - fastapi-cli >=0.0.5 - - httpx >=0.23.0 - - jinja2 >=3.1.5 - - python-multipart >=0.0.18 - - uvicorn-standard >=0.12.0 - - python - license: MIT - license_family: MIT - size: 77940 - timestamp: 1738326226051 -- conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.7-pyhd8ed1ab_0.conda - sha256: 300683731013b7221922339cd40430bb3c2ddeeb658fd7e37f5099ffe64e4db0 - md5: d960e0ea9e1c561aa928f6c4439f04c7 - depends: - - python >=3.9 - - rich-toolkit >=0.11.1 - - typer >=0.12.3 - - uvicorn-standard >=0.15.0 - license: MIT - license_family: MIT - size: 15546 - timestamp: 1734302408607 -- conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.17.0-pyhd8ed1ab_0.conda - sha256: 006d7e5a0c17a6973596dd86bfc80d74ce541144d2aee2d22d46fd41df560a63 - md5: 7f402b4a1007ee355bc50ce4d24d4a57 - depends: - - python >=3.9 - license: Unlicense - size: 17544 - timestamp: 1737517924333 - conda: https://conda.anaconda.org/conda-forge/linux-64/fluidsynth-2.3.7-hd992666_0.conda sha256: 0bf26d25ae79e6f5f01a49a00e9ba3b60b10dd4c12ec43bdba51055c26bc9dd6 md5: dd6c7b8a1b217ef7522ca987c465651d @@ -2568,60 +926,9 @@ packages: - libzlib >=1.2.13,<2.0.0a0 arch: arm64 platform: osx - license: GPL-2.0-only OR FTL - size: 596430 - timestamp: 1694616332835 -- conda: https://conda.anaconda.org/conda-forge/linux-64/frozenlist-1.5.0-py312h178313f_1.conda - sha256: 501e20626798b6d7f130f4db0fb02c0385d8f4c11ca525925602a4208afb343f - md5: fb986e1c089021979dc79606af78ef8f - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 60939 - timestamp: 1737645356438 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/frozenlist-1.5.0-py312hcc812fe_1.conda - sha256: 84895c5e207e0cb2044f3607fb36b82eb8cb45f0a009d03dc04c777ed975757d - md5: 9090bf5c43e8011fb2e9a82a1db20cc3 - depends: - - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 60472 - timestamp: 1737645511278 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/frozenlist-1.5.0-py312h998013c_1.conda - sha256: d503ac8c050abdbd129253973f23be34944978d510de78ef5a3e6aa1e3d9552d - md5: 5eb3715c7e3fa9b533361375bfefe6ee - depends: - - __osx >=11.0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: APACHE - size: 57256 - timestamp: 1737645503377 -- conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2025.2.0-pyhd8ed1ab_0.conda - sha256: 7433b8469074985b651693778ec6f03d2a23fad9919a515e3b8545996b5e721a - md5: d9ea16b71920b03beafc17fcca16df90 - depends: - - python >=3.9 - license: BSD-3-Clause - license_family: BSD - size: 138186 - timestamp: 1738501352608 + license: GPL-2.0-only OR FTL + size: 596430 + timestamp: 1694616332835 - conda: https://conda.anaconda.org/conda-forge/linux-64/gettext-0.22.5-he02047a_3.conda sha256: c3d9a453f523acbf2b3e1c82a42edfc7c7111b4686a2180ab48cb9b51a274218 md5: c7f243bbaea97cd6ea1edd693270100e @@ -2710,92 +1017,6 @@ packages: license_family: GPL size: 2467439 timestamp: 1723627140130 -- conda: https://conda.anaconda.org/conda-forge/linux-64/gflags-2.2.2-h5888daf_1005.conda - sha256: 6c33bf0c4d8f418546ba9c250db4e4221040936aef8956353bc764d4877bc39a - md5: d411fc29e338efb48c5fd4576d71d881 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libstdcxx >=13 - arch: x86_64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 119654 - timestamp: 1726600001928 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gflags-2.2.2-h5ad3122_1005.conda - sha256: 28fe6b40b20454106d5e4ef6947cf298c13cc72a46347bbc49b563cd3a463bfa - md5: 4ff634d515abbf664774b5e1168a9744 - depends: - - libgcc >=13 - - libstdcxx >=13 - arch: aarch64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 106638 - timestamp: 1726599967617 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/gflags-2.2.2-hf9b8971_1005.conda - sha256: fd56ed8a1dab72ab90d8a8929b6f916a6d9220ca297ff077f8f04c5ed3408e20 - md5: 57a511a5905caa37540eb914dfcbf1fb - depends: - - __osx >=11.0 - - libcxx >=17 - arch: arm64 - platform: osx - license: BSD-3-Clause - license_family: BSD - size: 82090 - timestamp: 1726600145480 -- conda: https://conda.anaconda.org/conda-forge/linux-64/glog-0.7.1-hbabe93e_0.conda - sha256: dc824dc1d0aa358e28da2ecbbb9f03d932d976c8dca11214aa1dcdfcbd054ba2 - md5: ff862eebdfeb2fd048ae9dc92510baca - depends: - - gflags >=2.2.2,<2.3.0a0 - - libgcc-ng >=12 - - libstdcxx-ng >=12 - arch: x86_64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 143452 - timestamp: 1718284177264 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/glog-0.7.1-h468a4a4_0.conda - sha256: 920795d4f775a9f47e91c2223e64847f0b212b3fedc56c137c5889e32efe8ba0 - md5: 08940a32c6ced3703d1412dd37df4f62 - depends: - - gflags >=2.2.2,<2.3.0a0 - - libgcc-ng >=12 - - libstdcxx-ng >=12 - arch: aarch64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 145811 - timestamp: 1718284208668 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/glog-0.7.1-heb240a5_0.conda - sha256: 9fc77de416953aa959039db72bc41bfa4600ae3ff84acad04a7d0c1ab9552602 - md5: fef68d0a95aa5b84b5c1a4f6f3bf40e1 - depends: - - __osx >=11.0 - - gflags >=2.2.2,<2.3.0a0 - - libcxx >=16 - arch: arm64 - platform: osx - license: BSD-3-Clause - license_family: BSD - size: 112215 - timestamp: 1718284365403 -- conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda - sha256: d8d19575a827f2c62500949b9536efdd6b5406c9f546a73b6a87ac90b03a5875 - md5: 4861e30ff0cd566ea6fb4593e3b7c22a - depends: - - protobuf >=3.20.2,<6.0.0.dev0,!=3.20.0,!=3.20.1,!=4.21.1,!=4.21.2,!=4.21.3,!=4.21.4,!=4.21.5 - - python >=3.9 - license: Apache-2.0 - license_family: APACHE - size: 116522 - timestamp: 1731459019854 - conda: https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.13-h59595ed_1003.conda sha256: 0595b009f20f8f60f13a6398e7cdcbd2acea5f986633adcf85f5a2283c992add md5: f87c7b7c2cb45f323ffbce941c78ab7c @@ -2831,27 +1052,6 @@ packages: license_family: LGPL size: 79774 timestamp: 1711634444608 -- conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda - sha256: 622516185a7c740d5c7f27016d0c15b45782c1501e5611deec63fd70344ce7c8 - md5: 7ee49e89531c0dcbba9466f6d115d585 - depends: - - python >=3.9 - - typing_extensions - license: MIT - license_family: MIT - size: 51846 - timestamp: 1733327599467 -- conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda - sha256: 0aa1cdc67a9fe75ea95b5644b734a756200d6ec9d0dff66530aec3d1c1e9df75 - md5: b4754fb1bdcb70c8fd54f918301582c6 - depends: - - hpack >=4.1,<5 - - hyperframe >=6.1,<7 - - python >=3.9 - license: MIT - license_family: MIT - size: 53888 - timestamp: 1738578623567 - conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-10.2.0-h4bba637_0.conda sha256: 94426eca8c60b43f57beb3338d3298dda09452c7a42314bbbb4ebfa552542a84 md5: 9e38e86167e8b1ea0094747d12944ce4 @@ -2910,110 +1110,6 @@ packages: license_family: MIT size: 1473375 timestamp: 1736703265901 -- conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda - sha256: 6ad78a180576c706aabeb5b4c8ceb97c0cb25f1e112d76495bff23e3779948ba - md5: 0a802cb9888dd14eeefc611f05c40b6e - depends: - - python >=3.9 - license: MIT - license_family: MIT - size: 30731 - timestamp: 1737618390337 -- conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - sha256: c84d012a245171f3ed666a8bf9319580c269b7843ffa79f26468842da3abd5df - md5: 2ca8e6dbc86525c8b95e3c0ffa26442e - depends: - - python >=3.8 - - h11 >=0.13,<0.15 - - h2 >=3,<5 - - sniffio 1.* - - anyio >=3.0,<5.0 - - certifi - license: BSD-3-Clause - license_family: BSD - size: 48959 - timestamp: 1731707562362 -- conda: https://conda.anaconda.org/conda-forge/linux-64/httptools-0.6.4-py312h66e93f0_0.conda - sha256: 621e7e050b888e5239d33e37ea72d6419f8367e5babcad38b755586f20264796 - md5: 8b1160b32557290b64d5be68db3d996d - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - arch: x86_64 - platform: linux - license: MIT - license_family: MIT - size: 101872 - timestamp: 1732707756745 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/httptools-0.6.4-py312hb2c0f52_0.conda - sha256: 0bd1f30224af142711d11033a7469ae402a1147143f399f7341bbc1d8178c722 - md5: 5e70a6de59352f9a52e9caa7f3447390 - depends: - - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - arch: aarch64 - platform: linux - license: MIT - license_family: MIT - size: 101255 - timestamp: 1732707891645 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/httptools-0.6.4-py312hea69d52_0.conda - sha256: 5e93cda79e32e8c0039e05ea1939e688da336187dab025f699b42ef529e848be - md5: e1747a8e8d2aca5499aaea9993bf31ff - depends: - - __osx >=11.0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - arch: arm64 - platform: osx - license: MIT - license_family: MIT - size: 85623 - timestamp: 1732707871414 -- conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - sha256: cd0f1de3697b252df95f98383e9edb1d00386bfdd03fdf607fa42fe5fcb09950 - md5: d6989ead454181f4f9bc987d3dc4e285 - depends: - - anyio - - certifi - - httpcore 1.* - - idna - - python >=3.9 - license: BSD-3-Clause - license_family: BSD - size: 63082 - timestamp: 1733663449209 -- conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.28.0-pyhd8ed1ab_0.conda - sha256: 3c48ffeb8a425eeba5dfa81a4da4b738a12d2104da0c3b443185029718dd6e48 - md5: 317f31a6fe151756ef10e7ed97a15f8a - depends: - - filelock - - fsspec >=2023.5.0 - - packaging >=20.9 - - python >=3.9 - - pyyaml >=5.1 - - requests - - tqdm >=4.42.1 - - typing-extensions >=3.7.4.3 - - typing_extensions >=3.7.4.3 - license: Apache-2.0 - license_family: APACHE - size: 284361 - timestamp: 1738349452337 -- conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - sha256: 77af6f5fe8b62ca07d09ac60127a30d9069fdc3c68d6b256754d0ffb1f7779f8 - md5: 8e6923fc12f1fe8f8c4e5c9f343256ac - depends: - - python >=3.9 - license: MIT - license_family: MIT - size: 17397 - timestamp: 1737618427549 - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda sha256: 71e750d509f5fa3421087ba88ef9a7b9be11c53174af3aa4d06aff4c18b38e8e md5: 8b189310083baabfb622af68fd9d3ae3 @@ -3050,25 +1146,16 @@ packages: license_family: MIT size: 11857802 timestamp: 1720853997952 -- conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - sha256: d7a472c9fd479e2e8dcb83fb8d433fce971ea369d704ece380e876f9c3494e87 - md5: 39a4f67be3286c86d696df570b1201b7 - depends: - - python >=3.9 - license: BSD-3-Clause - license_family: BSD - size: 49765 - timestamp: 1733211921194 -- conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_1.conda - sha256: 13766b88fc5b23581530d3a0287c0c58ad82f60401afefab283bf158d2be55a9 - md5: 315607a3030ad5d5227e76e0733798ff +- conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + sha256: 598951ebdb23e25e4cec4bbff0ae369cec65ead80b50bc08b441d8e54de5cf03 + md5: f4b39bf00c69f56ac01e020ebfac066c depends: - python >=3.9 - zipp >=0.5 license: Apache-2.0 license_family: APACHE - size: 28623 - timestamp: 1733223207185 + size: 29141 + timestamp: 1737420302391 - conda: https://conda.anaconda.org/conda-forge/linux-64/jack-1.9.22-h7c63dc7_2.conda sha256: 5e44a3a4b9791d1268636811628555ad40d4a8dd5c3be3334062df75580ae25b md5: f56277b7f079f1b13cbf7fb9b4f194c4 @@ -3099,16 +1186,6 @@ packages: license_family: LGPL size: 489040 timestamp: 1693881455137 -- conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.5-pyhd8ed1ab_0.conda - sha256: 98977694b9ecaa3218662f843425f39501f81973c450f995eec68f1803ed71c3 - md5: 2752a6ed44105bfb18c9bef1177d9dcd - depends: - - markupsafe >=2.0 - - python >=3.9 - license: BSD-3-Clause - license_family: BSD - size: 112561 - timestamp: 1734824044952 - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda sha256: 19d8bd5bb2fde910ec59e081eeb59529491995ce0d653a5209366611023a0b3a md5: 4ebae00eae9705b0c3d6d1018a81d047 @@ -3234,44 +1311,6 @@ packages: license_family: LGPL size: 528805 timestamp: 1664996399305 -- conda: https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.16-hb7c19ff_0.conda - sha256: 5c878d104b461b7ef922abe6320711c0d01772f4cd55de18b674f88547870041 - md5: 51bb7010fc86f70eee639b4bb7a894f5 - depends: - - libgcc-ng >=12 - - libjpeg-turbo >=3.0.0,<4.0a0 - - libtiff >=4.6.0,<4.8.0a0 - arch: x86_64 - platform: linux - license: MIT - license_family: MIT - size: 245247 - timestamp: 1701647787198 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lcms2-2.16-h922389a_0.conda - sha256: be4847b1014d3cbbc524a53bdbf66182f86125775020563e11d914c8468dd97d - md5: ffdd8267a04c515e7ce69c727b051414 - depends: - - libgcc-ng >=12 - - libjpeg-turbo >=3.0.0,<4.0a0 - - libtiff >=4.6.0,<4.8.0a0 - arch: aarch64 - platform: linux - license: MIT - license_family: MIT - size: 296219 - timestamp: 1701647961116 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.16-ha0e7c42_0.conda - sha256: 151e0c84feb7e0747fabcc85006b8973b22f5abbc3af76a9add0b0ef0320ebe4 - md5: 66f6c134e76fe13cce8a9ea5814b5dd5 - depends: - - libjpeg-turbo >=3.0.0,<4.0a0 - - libtiff >=4.6.0,<4.8.0a0 - arch: arm64 - platform: osx - license: MIT - license_family: MIT - size: 211959 - timestamp: 1701647962657 - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_2.conda sha256: 7c91cea91b13f4314d125d1bedb9d03a29ebbd5080ccdea70260363424646dbe md5: 048b02e3962f066da18efe3a21b77672 @@ -3362,295 +1401,21 @@ packages: license_family: Apache size: 1334844 timestamp: 1736008472455 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_h07bc746_4.conda - sha256: 05fa5e5e908962b9c5aba95f962e2ca81d9599c4715aebe5e4ddb72b309d1770 - md5: c2d95bd7aa8d564a9bd7eca5e571a5b3 - depends: - - __osx >=11.0 - - libcxx >=18 - constrains: - - libabseil-static =20240722.0=cxx17* - - abseil-cpp =20240722.0 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: Apache - size: 1178260 - timestamp: 1736008642885 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-19.0.0-h00a82cf_8_cpu.conda - build_number: 8 - sha256: dcac39be95b9afe42bc9b7bfcfa258e31e413a4cb79c49f6707edf2838e8d64c - md5: 51e31b59290c09b58d290f66b908999b - depends: - - __glibc >=2.17,<3.0.a0 - - aws-crt-cpp >=0.29.9,<0.29.10.0a0 - - aws-sdk-cpp >=1.11.489,<1.11.490.0a0 - - azure-core-cpp >=1.14.0,<1.14.1.0a0 - - azure-identity-cpp >=1.10.0,<1.10.1.0a0 - - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 - - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 - - bzip2 >=1.0.8,<2.0a0 - - glog >=0.7.1,<0.8.0a0 - - libabseil * cxx17* - - libabseil >=20240722.0,<20240723.0a0 - - libbrotlidec >=1.1.0,<1.2.0a0 - - libbrotlienc >=1.1.0,<1.2.0a0 - - libgcc >=13 - - libgoogle-cloud >=2.34.0,<2.35.0a0 - - libgoogle-cloud-storage >=2.34.0,<2.35.0a0 - - libopentelemetry-cpp >=1.18.0,<1.19.0a0 - - libprotobuf >=5.28.3,<5.28.4.0a0 - - libre2-11 >=2024.7.2 - - libstdcxx >=13 - - libutf8proc >=2.10.0,<2.11.0a0 - - libzlib >=1.3.1,<2.0a0 - - lz4-c >=1.10.0,<1.11.0a0 - - orc >=2.0.3,<2.0.4.0a0 - - re2 - - snappy >=1.2.1,<1.3.0a0 - - zstd >=1.5.6,<1.6.0a0 - constrains: - - parquet-cpp <0.0a0 - - arrow-cpp <0.0a0 - - apache-arrow-proc =*=cpu - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 8969999 - timestamp: 1737824740139 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-19.0.0-h03ebaaf_8_cpu.conda - build_number: 8 - sha256: ca5db2ba71de0c4fb54ee12e3b841e3e90b988ae7a5935fae3cce90111b5cb6d - md5: 1ac6f73a63d715590a7ad0113a578762 - depends: - - aws-crt-cpp >=0.29.9,<0.29.10.0a0 - - aws-sdk-cpp >=1.11.489,<1.11.490.0a0 - - azure-core-cpp >=1.14.0,<1.14.1.0a0 - - azure-identity-cpp >=1.10.0,<1.10.1.0a0 - - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 - - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 - - bzip2 >=1.0.8,<2.0a0 - - glog >=0.7.1,<0.8.0a0 - - libabseil * cxx17* - - libabseil >=20240722.0,<20240723.0a0 - - libbrotlidec >=1.1.0,<1.2.0a0 - - libbrotlienc >=1.1.0,<1.2.0a0 - - libgcc >=13 - - libgoogle-cloud >=2.34.0,<2.35.0a0 - - libgoogle-cloud-storage >=2.34.0,<2.35.0a0 - - libopentelemetry-cpp >=1.18.0,<1.19.0a0 - - libprotobuf >=5.28.3,<5.28.4.0a0 - - libre2-11 >=2024.7.2 - - libstdcxx >=13 - - libutf8proc >=2.10.0,<2.11.0a0 - - libzlib >=1.3.1,<2.0a0 - - lz4-c >=1.10.0,<1.11.0a0 - - orc >=2.0.3,<2.0.4.0a0 - - re2 - - snappy >=1.2.1,<1.3.0a0 - - zstd >=1.5.6,<1.6.0a0 - constrains: - - arrow-cpp <0.0a0 - - apache-arrow-proc =*=cpu - - parquet-cpp <0.0a0 - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 8213318 - timestamp: 1737808895185 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-19.0.0-h819e3af_8_cpu.conda - build_number: 8 - sha256: 825afabd1c998dfddce9600584c492296a15219d441c6e3029e6c6228200d695 - md5: fbe0ce0ef6d386ab832ee5cca2ab3048 - depends: - - __osx >=11.0 - - aws-crt-cpp >=0.29.9,<0.29.10.0a0 - - aws-sdk-cpp >=1.11.489,<1.11.490.0a0 - - azure-core-cpp >=1.14.0,<1.14.1.0a0 - - azure-identity-cpp >=1.10.0,<1.10.1.0a0 - - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 - - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 - - bzip2 >=1.0.8,<2.0a0 - - glog >=0.7.1,<0.8.0a0 - - libabseil * cxx17* - - libabseil >=20240722.0,<20240723.0a0 - - libbrotlidec >=1.1.0,<1.2.0a0 - - libbrotlienc >=1.1.0,<1.2.0a0 - - libcxx >=18 - - libgoogle-cloud >=2.34.0,<2.35.0a0 - - libgoogle-cloud-storage >=2.34.0,<2.35.0a0 - - libopentelemetry-cpp >=1.18.0,<1.19.0a0 - - libprotobuf >=5.28.3,<5.28.4.0a0 - - libre2-11 >=2024.7.2 - - libutf8proc >=2.10.0,<2.11.0a0 - - libzlib >=1.3.1,<2.0a0 - - lz4-c >=1.10.0,<1.11.0a0 - - orc >=2.0.3,<2.0.4.0a0 - - re2 - - snappy >=1.2.1,<1.3.0a0 - - zstd >=1.5.6,<1.6.0a0 - constrains: - - arrow-cpp <0.0a0 - - apache-arrow-proc =*=cpu - - parquet-cpp <0.0a0 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: APACHE - size: 5573619 - timestamp: 1737806044972 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-19.0.0-hcb10f89_8_cpu.conda - build_number: 8 - sha256: bf8f64403685eb3ab6ebc5a25cc3a70431a1f822469bf96b0ee80c169deec0ac - md5: dafba09929a58e10bb8231ff7966e623 - depends: - - __glibc >=2.17,<3.0.a0 - - libarrow 19.0.0 h00a82cf_8_cpu - - libgcc >=13 - - libstdcxx >=13 - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 637555 - timestamp: 1737824783456 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-19.0.0-h3b568fd_8_cpu.conda - build_number: 8 - sha256: 154fe9bee1a1e3c96497fcbf3c01191965d5c4e9718dcbf8502035d7ff633499 - md5: e015edb6317c81893f9ce4865bbd55f4 - depends: - - libarrow 19.0.0 h03ebaaf_8_cpu - - libgcc >=13 - - libstdcxx >=13 - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 602892 - timestamp: 1737808980001 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-19.0.0-hf07054f_8_cpu.conda - build_number: 8 - sha256: 66ce35077dae435cd34644d53159af14afd62452eeec8f63cd55adb11e7f2780 - md5: 68cd272eccf7b4fcb0a3bab95e89e71e - depends: - - __osx >=11.0 - - libarrow 19.0.0 h819e3af_8_cpu - - libcxx >=18 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: APACHE - size: 500365 - timestamp: 1737806169385 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-19.0.0-hcb10f89_8_cpu.conda - build_number: 8 - sha256: dc4a0f13428c9bd9781e25b67f5f52a92b8c4beafa2435fe5127e9fac7969218 - md5: 66e19108e4597b9a35d0886607c2d8a8 - depends: - - __glibc >=2.17,<3.0.a0 - - libarrow 19.0.0 h00a82cf_8_cpu - - libarrow-acero 19.0.0 hcb10f89_8_cpu - - libgcc >=13 - - libparquet 19.0.0 h081d1f1_8_cpu - - libstdcxx >=13 - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 604335 - timestamp: 1737824891062 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-19.0.0-h3b568fd_8_cpu.conda - build_number: 8 - sha256: f038f979b3357124a548dd83880f94284355a90e4736caaabd23c750cf06eaa9 - md5: 03f35d7f35dae0e05f5f4f747d7eb6e7 - depends: - - libarrow 19.0.0 h03ebaaf_8_cpu - - libarrow-acero 19.0.0 h3b568fd_8_cpu - - libgcc >=13 - - libparquet 19.0.0 hfc78867_8_cpu - - libstdcxx >=13 - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 579626 - timestamp: 1737809072479 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-19.0.0-hf07054f_8_cpu.conda - build_number: 8 - sha256: 6934ce0503472f002695d45ae12a8f2948e10e7a0b7430330a4d0d83f3e5ca27 - md5: 1a941d1ddc16b532790781a4becdc881 - depends: - - __osx >=11.0 - - libarrow 19.0.0 h819e3af_8_cpu - - libarrow-acero 19.0.0 hf07054f_8_cpu - - libcxx >=18 - - libparquet 19.0.0 h636d7b7_8_cpu - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: APACHE - size: 501001 - timestamp: 1737807214184 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-19.0.0-h08228c5_8_cpu.conda - build_number: 8 - sha256: e370ee738d3963120f715343a27cf041c62a3ee8bb19e25da9115ec4bae5f2de - md5: e5dd1926e5a4b23de8ba4eacc8eb9b2d - depends: - - __glibc >=2.17,<3.0.a0 - - libabseil * cxx17* - - libabseil >=20240722.0,<20240723.0a0 - - libarrow 19.0.0 h00a82cf_8_cpu - - libarrow-acero 19.0.0 hcb10f89_8_cpu - - libarrow-dataset 19.0.0 hcb10f89_8_cpu - - libgcc >=13 - - libprotobuf >=5.28.3,<5.28.4.0a0 - - libstdcxx >=13 - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 521475 - timestamp: 1737824942852 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-19.0.0-h1e9d426_8_cpu.conda - build_number: 8 - sha256: 92e1fea8557a931c273ea3bd3bf73a4f4f0c566844dcedf78b9a16e5cf6cab56 - md5: ef08fcb5c165cdc743336bd8f4cbed69 - depends: - - libabseil * cxx17* - - libabseil >=20240722.0,<20240723.0a0 - - libarrow 19.0.0 h03ebaaf_8_cpu - - libarrow-acero 19.0.0 h3b568fd_8_cpu - - libarrow-dataset 19.0.0 h3b568fd_8_cpu - - libgcc >=13 - - libprotobuf >=5.28.3,<5.28.4.0a0 - - libstdcxx >=13 - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 516126 - timestamp: 1737809118915 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-19.0.0-h4239455_8_cpu.conda - build_number: 8 - sha256: 445d2ca20b07e57270f3b07b62c09794369413e5ff3716d9c73d0ad360969583 - md5: a39953d9b03b0463f4ccc187a8bcfcca +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_h07bc746_4.conda + sha256: 05fa5e5e908962b9c5aba95f962e2ca81d9599c4715aebe5e4ddb72b309d1770 + md5: c2d95bd7aa8d564a9bd7eca5e571a5b3 depends: - __osx >=11.0 - - libabseil * cxx17* - - libabseil >=20240722.0,<20240723.0a0 - - libarrow 19.0.0 h819e3af_8_cpu - - libarrow-acero 19.0.0 hf07054f_8_cpu - - libarrow-dataset 19.0.0 hf07054f_8_cpu - libcxx >=18 - - libprotobuf >=5.28.3,<5.28.4.0a0 + constrains: + - libabseil-static =20240722.0=cxx17* + - abseil-cpp =20240722.0 arch: arm64 platform: osx license: Apache-2.0 - license_family: APACHE - size: 449672 - timestamp: 1737807386331 + license_family: Apache + size: 1178260 + timestamp: 1736008642885 - conda: https://conda.anaconda.org/conda-forge/linux-64/libasprintf-0.22.5-he8f35ee_3.conda sha256: 2da5c735811cbf38c7f7844ab457ff8b25046bbf5fe5ebd5dc1c2fafdf4fbe1c md5: 4fab9799da9571266d05ca5503330655 @@ -3819,114 +1584,6 @@ packages: license_family: BSD size: 16840 timestamp: 1738114389937 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hb9d3cd8_2.conda - sha256: d9db2de60ea917298e658143354a530e9ca5f9c63471c65cf47ab39fd2f429e3 - md5: 41b599ed2b02abcfdd84302bff174b23 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - arch: x86_64 - platform: linux - license: MIT - license_family: MIT - size: 68851 - timestamp: 1725267660471 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlicommon-1.1.0-h86ecc28_2.conda - sha256: 64112af913974b309d67fd342e065fd184347043a6387933b3db796778a28019 - md5: 3ee026955c688f551a9999840cff4c67 - depends: - - libgcc >=13 - arch: aarch64 - platform: linux - license: MIT - license_family: MIT - size: 68982 - timestamp: 1725267774142 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.1.0-hd74edd7_2.conda - sha256: 839dacb741bdbb25e58f42088a2001b649f4f12195aeb700b5ddfca3267749e5 - md5: d0bf1dff146b799b319ea0434b93f779 - depends: - - __osx >=11.0 - arch: arm64 - platform: osx - license: MIT - license_family: MIT - size: 68426 - timestamp: 1725267943211 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hb9d3cd8_2.conda - sha256: 2892d512cad096cb03f1b66361deeab58b64e15ba525d6592bb6d609e7045edf - md5: 9566f0bd264fbd463002e759b8a82401 - depends: - - __glibc >=2.17,<3.0.a0 - - libbrotlicommon 1.1.0 hb9d3cd8_2 - - libgcc >=13 - arch: x86_64 - platform: linux - license: MIT - license_family: MIT - size: 32696 - timestamp: 1725267669305 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlidec-1.1.0-h86ecc28_2.conda - sha256: 94c808d9ca3eb6ef30976a9843e27f027cf3a1e84e8c6835cbb696b7bdb35c4c - md5: e64d0f3b59c7c4047446b97a8624a72d - depends: - - libbrotlicommon 1.1.0 h86ecc28_2 - - libgcc >=13 - arch: aarch64 - platform: linux - license: MIT - license_family: MIT - size: 31708 - timestamp: 1725267783442 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.1.0-hd74edd7_2.conda - sha256: 6c6862eb274f21a7c0b60e5345467a12e6dda8b9af4438c66d496a2c1a538264 - md5: 55e66e68ce55523a6811633dd1ac74e2 - depends: - - __osx >=11.0 - - libbrotlicommon 1.1.0 hd74edd7_2 - arch: arm64 - platform: osx - license: MIT - license_family: MIT - size: 28378 - timestamp: 1725267980316 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.1.0-hb9d3cd8_2.conda - sha256: 779f58174e99de3600e939fa46eddb453ec5d3c60bb46cdaa8b4c127224dbf29 - md5: 06f70867945ea6a84d35836af780f1de - depends: - - __glibc >=2.17,<3.0.a0 - - libbrotlicommon 1.1.0 hb9d3cd8_2 - - libgcc >=13 - arch: x86_64 - platform: linux - license: MIT - license_family: MIT - size: 281750 - timestamp: 1725267679782 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlienc-1.1.0-h86ecc28_2.conda - sha256: 41385e17bc73834b235c5aff12d6d82eccb534acb3c30986996f9dad92a0d54c - md5: 0e9bd365480c72b25c71a448257b537d - depends: - - libbrotlicommon 1.1.0 h86ecc28_2 - - libgcc >=13 - arch: aarch64 - platform: linux - license: MIT - license_family: MIT - size: 290230 - timestamp: 1725267792697 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlienc-1.1.0-hd74edd7_2.conda - sha256: eeb1eb0d58b9d02bc1b98dc0a058f104ab168eb2f7d1c7bfa0570a12cfcdb7b7 - md5: 4f3a434504c67b2c42565c0b85c1885c - depends: - - __osx >=11.0 - - libbrotlicommon 1.1.0 hd74edd7_2 - arch: arm64 - platform: osx - license: MIT - license_family: MIT - size: 279644 - timestamp: 1725268003553 - conda: https://conda.anaconda.org/conda-forge/linux-64/libcap-2.71-h39aace5_0.conda sha256: 2bbefac94f4ab8ff7c64dc843238b6c8edcc9ff1f2b5a0a48407a904dc7ccfb2 md5: dd19e4e3043f6948bd7454b946ee0983 @@ -4000,93 +1657,6 @@ packages: license_family: BSD size: 16788 timestamp: 1738114399962 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libcrc32c-1.1.2-h9c3ff4c_0.tar.bz2 - sha256: fd1d153962764433fe6233f34a72cdeed5dcf8a883a85769e8295ce940b5b0c5 - md5: c965a5aa0d5c1c37ffc62dff36e28400 - depends: - - libgcc-ng >=9.4.0 - - libstdcxx-ng >=9.4.0 - arch: x86_64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 20440 - timestamp: 1633683576494 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcrc32c-1.1.2-h01db608_0.tar.bz2 - sha256: b8b8c57a87da86b3ea24280fd6aa8efaf92f4e684b606bf2db5d3cb06ffbe2ea - md5: 268ee639c17ada0002fb04dd21816cc2 - depends: - - libgcc-ng >=9.4.0 - - libstdcxx-ng >=9.4.0 - arch: aarch64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 18669 - timestamp: 1633683724891 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcrc32c-1.1.2-hbdafb3b_0.tar.bz2 - sha256: 58477b67cc719060b5b069ba57161e20ba69b8695d154a719cb4b60caf577929 - md5: 32bd82a6a625ea6ce090a81c3d34edeb - depends: - - libcxx >=11.1.0 - arch: arm64 - platform: osx - license: BSD-3-Clause - license_family: BSD - size: 18765 - timestamp: 1633683992603 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.11.1-h332b0f4_0.conda - sha256: 3cd4075b2a7b5562e46c8ec626f6f9ca57aeecaa94ff7df57eca26daa94c9906 - md5: 2b3e0081006dc21e8bf53a91c83a055c - depends: - - __glibc >=2.17,<3.0.a0 - - krb5 >=1.21.3,<1.22.0a0 - - libgcc >=13 - - libnghttp2 >=1.64.0,<2.0a0 - - libssh2 >=1.11.1,<2.0a0 - - libzlib >=1.3.1,<2.0a0 - - openssl >=3.4.0,<4.0a0 - - zstd >=1.5.6,<1.6.0a0 - arch: x86_64 - platform: linux - license: curl - license_family: MIT - size: 423011 - timestamp: 1733999897624 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcurl-8.11.1-h6702fde_0.conda - sha256: 9fc65d21a58f4aad1bc39dfb94a178893aeb035850c5cf0ed9736674279f390b - md5: 7dec1cd271c403d1636bda5aa388a55d - depends: - - krb5 >=1.21.3,<1.22.0a0 - - libgcc >=13 - - libnghttp2 >=1.64.0,<2.0a0 - - libssh2 >=1.11.1,<2.0a0 - - libzlib >=1.3.1,<2.0a0 - - openssl >=3.4.0,<4.0a0 - - zstd >=1.5.6,<1.6.0a0 - arch: aarch64 - platform: linux - license: curl - license_family: MIT - size: 440737 - timestamp: 1733999835504 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.11.1-h73640d1_0.conda - sha256: f47c35938144c23278987c7d12096f6a42d7c850ffc277222b032073412383b6 - md5: 46d7524cabfdd199bffe63f8f19a552b - depends: - - __osx >=11.0 - - krb5 >=1.21.3,<1.22.0a0 - - libnghttp2 >=1.64.0,<2.0a0 - - libssh2 >=1.11.1,<2.0a0 - - libzlib >=1.3.1,<2.0a0 - - openssl >=3.4.0,<4.0a0 - - zstd >=1.5.6,<1.6.0a0 - arch: arm64 - platform: osx - license: curl - license_family: MIT - size: 385098 - timestamp: 1734000160270 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda sha256: 776092346da87a2a23502e14d91eb0c32699c4a1522b7331537bd1c3751dcff5 md5: 5b3e1610ff8bd5443476b91d618f5b77 @@ -4196,72 +1766,6 @@ packages: license_family: BSD size: 107691 timestamp: 1738479560845 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda - sha256: 1cd6048169fa0395af74ed5d8f1716e22c19a81a8a36f934c110ca3ad4dd27b4 - md5: 172bf1cd1ff8629f2b1179945ed45055 - depends: - - libgcc-ng >=12 - arch: x86_64 - platform: linux - license: BSD-2-Clause - license_family: BSD - size: 112766 - timestamp: 1702146165126 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libev-4.33-h31becfc_2.conda - sha256: 973af77e297f1955dd1f69c2cbdc5ab9dfc88388a5576cd152cda178af0fd006 - md5: a9a13cb143bbaa477b1ebaefbe47a302 - depends: - - libgcc-ng >=12 - arch: aarch64 - platform: linux - license: BSD-2-Clause - license_family: BSD - size: 115123 - timestamp: 1702146237623 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libev-4.33-h93a5062_2.conda - sha256: 95cecb3902fbe0399c3a7e67a5bed1db813e5ab0e22f4023a5e0f722f2cc214f - md5: 36d33e440c31857372a72137f78bacf5 - arch: arm64 - platform: osx - license: BSD-2-Clause - license_family: BSD - size: 107458 - timestamp: 1702146414478 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libevent-2.1.12-hf998b51_1.conda - sha256: 2e14399d81fb348e9d231a82ca4d816bf855206923759b69ad006ba482764131 - md5: a1cfcc585f0c42bf8d5546bb1dfb668d - depends: - - libgcc-ng >=12 - - openssl >=3.1.1,<4.0a0 - arch: x86_64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 427426 - timestamp: 1685725977222 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libevent-2.1.12-h4ba1bb4_1.conda - sha256: 01333cc7d6e6985dd5700b43660d90e9e58049182017fd24862088ecbe1458e4 - md5: 96ae6083cd1ac9f6bc81631ac835b317 - depends: - - libgcc-ng >=12 - - openssl >=3.1.1,<4.0a0 - arch: aarch64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 438992 - timestamp: 1685726046519 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libevent-2.1.12-h2757513_1.conda - sha256: 8c136d7586259bb5c0d2b913aaadc5b9737787ae4f40e3ad1beaf96c80b919b7 - md5: 1a109764bff3bdc7bdd84088347d71dc - depends: - - openssl >=3.1.1,<4.0a0 - arch: arm64 - platform: osx - license: BSD-3-Clause - license_family: BSD - size: 368167 - timestamp: 1685726248899 - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda sha256: 56541b98447b58e52d824bd59d6382d609e11de1f8adf20b23143e353d2b8d26 md5: db833e03127376d461e1e13e76f09b6c @@ -4672,122 +2176,6 @@ packages: license_family: GPL size: 463521 timestamp: 1729089357313 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.34.0-h2b5623c_0.conda - sha256: 348ee1dddd82dcef5a185c86e65dda8acfc9b583acc425ccb9b661f2d433b2cc - md5: 2a5142c88dd6132eaa8079f99476e922 - depends: - - __glibc >=2.17,<3.0.a0 - - libabseil * cxx17* - - libabseil >=20240722.0,<20240723.0a0 - - libcurl >=8.11.1,<9.0a0 - - libgcc >=13 - - libgrpc >=1.67.1,<1.68.0a0 - - libprotobuf >=5.28.3,<5.28.4.0a0 - - libstdcxx >=13 - - openssl >=3.4.0,<4.0a0 - constrains: - - libgoogle-cloud 2.34.0 *_0 - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 1256795 - timestamp: 1737286199784 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-2.34.0-hccf9d24_0.conda - sha256: 54267dda8fafc2a2d379ef77b6029d8240e0628d4b29758f788fb903f84397a3 - md5: 1ce0fd876001c40801b40fea22987e41 - depends: - - libabseil * cxx17* - - libabseil >=20240722.0,<20240723.0a0 - - libcurl >=8.11.1,<9.0a0 - - libgcc >=13 - - libgrpc >=1.67.1,<1.68.0a0 - - libprotobuf >=5.28.3,<5.28.4.0a0 - - libstdcxx >=13 - - openssl >=3.4.0,<4.0a0 - constrains: - - libgoogle-cloud 2.34.0 *_0 - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 1256586 - timestamp: 1737285242684 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-2.34.0-hdbe95d5_0.conda - sha256: 919d8cbcd47d5bd2244c55b2bb87e2bd2eed8215996aab8435cb7123ffd9d20e - md5: 69826544e7978fcaa6bc8c1962d96ad6 - depends: - - __osx >=11.0 - - libabseil * cxx17* - - libabseil >=20240722.0,<20240723.0a0 - - libcurl >=8.11.1,<9.0a0 - - libcxx >=18 - - libgrpc >=1.67.1,<1.68.0a0 - - libprotobuf >=5.28.3,<5.28.4.0a0 - - openssl >=3.4.0,<4.0a0 - constrains: - - libgoogle-cloud 2.34.0 *_0 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: Apache - size: 878217 - timestamp: 1737284441192 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.34.0-h0121fbd_0.conda - sha256: aa1b3b30ae6b2eab7c9e6a8e2fd8ec3776f25d2e3f0b6f9dc547ff8083bf25fa - md5: 9f0c43225243c81c6991733edcaafff5 - depends: - - __glibc >=2.17,<3.0.a0 - - libabseil - - libcrc32c >=1.1.2,<1.2.0a0 - - libcurl - - libgcc >=13 - - libgoogle-cloud 2.34.0 h2b5623c_0 - - libstdcxx >=13 - - libzlib >=1.3.1,<2.0a0 - - openssl - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 785792 - timestamp: 1737286406612 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-storage-2.34.0-hb9b2b65_0.conda - sha256: 4ad4fb7c02dcfa4c86dcf9591e0131a01fc0f2c3f2729c12882b944ddf2b8a9d - md5: 0732a5988f7f556f2c1d1f51026fc1be - depends: - - libabseil - - libcrc32c >=1.1.2,<1.2.0a0 - - libcurl - - libgcc >=13 - - libgoogle-cloud 2.34.0 hccf9d24_0 - - libstdcxx >=13 - - libzlib >=1.3.1,<2.0a0 - - openssl - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 739678 - timestamp: 1737285399565 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-storage-2.34.0-h7081f7f_0.conda - sha256: 79f6b93fb330728530036b2b38764e9d42e0eedd3ae7e549ac7eae49acd1e52b - md5: f09cb03f9cf847f1dc41b4c1f65c97c2 - depends: - - __osx >=11.0 - - libabseil - - libcrc32c >=1.1.2,<1.2.0a0 - - libcurl - - libcxx >=18 - - libgoogle-cloud 2.34.0 hdbe95d5_0 - - libzlib >=1.3.1,<2.0a0 - - openssl - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: Apache - size: 529202 - timestamp: 1737285376801 - conda: https://conda.anaconda.org/conda-forge/linux-64/libgpg-error-1.51-hbd13f7d_1.conda sha256: 9e0c09c1faf2151ade3ccb64e52d3c1f2dde85c00e37c6a3e6a8bced2aba68be md5: 168cc19c031482f83b23c4eebbb94e26 @@ -4806,80 +2194,13 @@ packages: md5: 9cabbbc1c3c8e9fa30e90748f14534dd depends: - libgcc >=13 - - libstdcxx >=13 - arch: aarch64 - platform: linux - license: LGPL-2.1-only - license_family: GPL - size: 277785 - timestamp: 1731920977846 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.67.1-h25350d4_1.conda - sha256: 014627485b3cf0ea18e04c0bab07be7fb98722a3aeeb58477acc7e1c3d2f911e - md5: 0c6497a760b99a926c7c12b74951a39c - depends: - - __glibc >=2.17,<3.0.a0 - - c-ares >=1.34.4,<2.0a0 - - libabseil * cxx17* - - libabseil >=20240722.0,<20240723.0a0 - - libgcc >=13 - - libprotobuf >=5.28.3,<5.28.4.0a0 - - libre2-11 >=2024.7.2 - - libstdcxx >=13 - - libzlib >=1.3.1,<2.0a0 - - openssl >=3.4.0,<4.0a0 - - re2 - constrains: - - grpc-cpp =1.67.1 - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 7792251 - timestamp: 1735584856826 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgrpc-1.67.1-hf7ccdd3_1.conda - sha256: 3fa173dc1d7456aac2b26937daae86a08432a31640e3d6569c62edc661fc9bbe - md5: 8fb41a425bebaeb3d0fa568503612e64 - depends: - - c-ares >=1.34.4,<2.0a0 - - libabseil * cxx17* - - libabseil >=20240722.0,<20240723.0a0 - - libgcc >=13 - - libprotobuf >=5.28.3,<5.28.4.0a0 - - libre2-11 >=2024.7.2 - - libstdcxx >=13 - - libzlib >=1.3.1,<2.0a0 - - openssl >=3.4.0,<4.0a0 - - re2 - constrains: - - grpc-cpp =1.67.1 - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 7430006 - timestamp: 1735585769731 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgrpc-1.67.1-h0a426d6_1.conda - sha256: 630edf63981818ff590367cb95fddbed0f5a390464d0952c90ec81de899e84a6 - md5: 8a3cba079d6ac985e7d73c76a678fbb4 - depends: - - __osx >=11.0 - - c-ares >=1.34.4,<2.0a0 - - libabseil * cxx17* - - libabseil >=20240722.0,<20240723.0a0 - - libcxx >=18 - - libprotobuf >=5.28.3,<5.28.4.0a0 - - libre2-11 >=2024.7.2 - - libzlib >=1.3.1,<2.0a0 - - openssl >=3.4.0,<4.0a0 - - re2 - constrains: - - grpc-cpp =1.67.1 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: APACHE - size: 5311706 - timestamp: 1735585137716 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: LGPL-2.1-only + license_family: GPL + size: 277785 + timestamp: 1731920977846 - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-hd590300_2.conda sha256: 8ac2f6a9f186e76539439e50505d98581472fedb347a20e7d1f36429849f05c9 md5: d66573916ffcf376178462f1b61c941e @@ -5075,58 +2396,6 @@ packages: license_family: GPL size: 77255 timestamp: 1670815732700 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda - sha256: b0f2b3695b13a989f75d8fd7f4778e1c7aabe3b36db83f0fe80b2cd812c0e975 - md5: 19e57602824042dfd0446292ef90488b - depends: - - __glibc >=2.17,<3.0.a0 - - c-ares >=1.32.3,<2.0a0 - - libev >=4.33,<4.34.0a0 - - libev >=4.33,<5.0a0 - - libgcc >=13 - - libstdcxx >=13 - - libzlib >=1.3.1,<2.0a0 - - openssl >=3.3.2,<4.0a0 - arch: x86_64 - platform: linux - license: MIT - license_family: MIT - size: 647599 - timestamp: 1729571887612 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnghttp2-1.64.0-hc8609a4_0.conda - sha256: c093c6d370aadbf0409c20b6c54c488ee2f6fea976181919fcc63e87ee232673 - md5: f52c614fa214a8bedece9421c771670d - depends: - - c-ares >=1.32.3,<2.0a0 - - libev >=4.33,<4.34.0a0 - - libev >=4.33,<5.0a0 - - libgcc >=13 - - libstdcxx >=13 - - libzlib >=1.3.1,<2.0a0 - - openssl >=3.3.2,<4.0a0 - arch: aarch64 - platform: linux - license: MIT - license_family: MIT - size: 714610 - timestamp: 1729571912479 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.64.0-h6d7220d_0.conda - sha256: 00cc685824f39f51be5233b54e19f45abd60de5d8847f1a56906f8936648b72f - md5: 3408c02539cee5f1141f9f11450b6a51 - depends: - - __osx >=11.0 - - c-ares >=1.34.2,<2.0a0 - - libcxx >=17 - - libev >=4.33,<4.34.0a0 - - libev >=4.33,<5.0a0 - - libzlib >=1.3.1,<2.0a0 - - openssl >=3.3.2,<4.0a0 - arch: arm64 - platform: osx - license: MIT - license_family: MIT - size: 566719 - timestamp: 1729572385640 - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda sha256: 26d77a3bb4dceeedc2a41bd688564fe71bf2d149fdcf117049970bc02ff1add6 md5: 30fd6e37fe21f86f4bd26d6ee73eeec7 @@ -5229,96 +2498,6 @@ packages: license_family: BSD size: 4165774 timestamp: 1730772154295 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-1.18.0-hfcad708_1.conda - sha256: 4ea235e08676f16b0d3c3380befe1478c0fa0141512ee709b011005c55c9619f - md5: 1f5a5d66e77a39dc5bd639ec953705cf - depends: - - libabseil * cxx17* - - libabseil >=20240722.0,<20240723.0a0 - - libcurl >=8.11.1,<9.0a0 - - libgrpc >=1.67.1,<1.68.0a0 - - libopentelemetry-cpp-headers 1.18.0 ha770c72_1 - - libprotobuf >=5.28.3,<5.28.4.0a0 - - libzlib >=1.3.1,<2.0a0 - - nlohmann_json - - prometheus-cpp >=1.3.0,<1.4.0a0 - constrains: - - cpp-opentelemetry-sdk =1.18.0 - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 801927 - timestamp: 1735643375271 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopentelemetry-cpp-1.18.0-h60b47f9_1.conda - sha256: 160c493cd0f897955b0b6035b51c6d7255ffbaed3c8a12d43e8e8a719d405aba - md5: afe3c8c53f4b6d27d553c230d4b34038 - depends: - - libabseil * cxx17* - - libabseil >=20240722.0,<20240723.0a0 - - libcurl >=8.11.1,<9.0a0 - - libgrpc >=1.67.1,<1.68.0a0 - - libopentelemetry-cpp-headers 1.18.0 h8af1aa0_1 - - libprotobuf >=5.28.3,<5.28.4.0a0 - - libzlib >=1.3.1,<2.0a0 - - nlohmann_json - - prometheus-cpp >=1.3.0,<1.4.0a0 - constrains: - - cpp-opentelemetry-sdk =1.18.0 - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 800896 - timestamp: 1735643533825 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopentelemetry-cpp-1.18.0-h0c05b2d_1.conda - sha256: c6bcbd53d62a9e0d8c667e560db0ca2ecb7679277cbb3c23457aabe74fcb8cba - md5: 19c46cc18825f3924251c39ec1b0d983 - depends: - - libabseil * cxx17* - - libabseil >=20240722.0,<20240723.0a0 - - libcurl >=8.11.1,<9.0a0 - - libgrpc >=1.67.1,<1.68.0a0 - - libopentelemetry-cpp-headers 1.18.0 hce30654_1 - - libprotobuf >=5.28.3,<5.28.4.0a0 - - libzlib >=1.3.1,<2.0a0 - - nlohmann_json - - prometheus-cpp >=1.3.0,<1.4.0a0 - constrains: - - cpp-opentelemetry-sdk =1.18.0 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: APACHE - size: 529588 - timestamp: 1735643889612 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-headers-1.18.0-ha770c72_1.conda - sha256: aa1f7dea79ea8513ff77339ba7c6e9cf10dfa537143e7718b1cfb3af52b649f2 - md5: 4fb055f57404920a43b147031471e03b - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 320359 - timestamp: 1735643346175 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopentelemetry-cpp-headers-1.18.0-h8af1aa0_1.conda - sha256: 981c0b29a0789597fa8ed147b02df2d2ad0c7f863d87df74770c40cee1800228 - md5: 282193b19a19e3b5d75d18ef82713ef0 - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 319401 - timestamp: 1735643509251 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopentelemetry-cpp-headers-1.18.0-hce30654_1.conda - sha256: 82e5f5ba64debbaab3c601b265dfc0cdb4d2880feba9bada5fd2e67b9f91ada5 - md5: e965dad955841507549fdacd8f7f94c0 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: APACHE - size: 320565 - timestamp: 1735643673319 - conda: https://conda.anaconda.org/conda-forge/linux-64/libopus-1.3.1-h7f98852_1.tar.bz2 sha256: 0e1c2740ebd1c93226dc5387461bbcf8142c518f2092f3ea7551f77755decc8f md5: 15345e56d527b330e1cacbdf58676e8f @@ -5350,55 +2529,6 @@ packages: license_family: BSD size: 252854 timestamp: 1606823635137 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-19.0.0-h081d1f1_8_cpu.conda - build_number: 8 - sha256: b2e1bf8634efb643a9f15fe19f9bc0877482c509eff7cee6136278a2c2fa5842 - md5: bef810a8da683aa11c644066a87f71c3 - depends: - - __glibc >=2.17,<3.0.a0 - - libarrow 19.0.0 h00a82cf_8_cpu - - libgcc >=13 - - libstdcxx >=13 - - libthrift >=0.21.0,<0.21.1.0a0 - - openssl >=3.4.0,<4.0a0 - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 1241786 - timestamp: 1737824866572 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-19.0.0-hfc78867_8_cpu.conda - build_number: 8 - sha256: 8917fc5e5bb65894106bbd461d2f9c9c0c3dc642ff5da197c941bf620ce840a0 - md5: b0d5f8c122a3e9a6b75036e43e78fcfa - depends: - - libarrow 19.0.0 h03ebaaf_8_cpu - - libgcc >=13 - - libstdcxx >=13 - - libthrift >=0.21.0,<0.21.1.0a0 - - openssl >=3.4.0,<4.0a0 - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 1153834 - timestamp: 1737809048861 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-19.0.0-h636d7b7_8_cpu.conda - build_number: 8 - sha256: da04e6bd7ed2ca64aadf0ad12d9752e8423e85c37e0db80e27c7ff334fcbd2b6 - md5: c1ff2e71a289fb76146591c9d3f9de0a - depends: - - __osx >=11.0 - - libarrow 19.0.0 h819e3af_8_cpu - - libcxx >=18 - - libthrift >=0.21.0,<0.21.1.0a0 - - openssl >=3.4.0,<4.0a0 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: APACHE - size: 893482 - timestamp: 1737807155720 - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.46-h943b412_0.conda sha256: a46436dadd12d58155280d68876dba2d8a3badbc8074956d14fe6530c7c7eda6 md5: adcf7bacff219488e29cfa95a2abd8f7 @@ -5479,55 +2609,52 @@ packages: license_family: BSD size: 2271580 timestamp: 1735576361997 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_2.conda - sha256: 4420f8362c71251892ba1eeb957c5e445e4e1596c0c651c28d0d8b415fe120c7 - md5: b2fede24428726dd867611664fb372e8 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsentencepiece-0.2.0-h8e10757_10.conda + sha256: dc399e0f04a09f8c1807c3b36e578eb81f81891c0ddf21de9c1fb9f048ce4031 + md5: 4f43dbcfacd3cc9a183dd3a48b94d3c0 depends: - __glibc >=2.17,<3.0.a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 - libstdcxx >=13 - constrains: - - re2 2024.07.02.* arch: x86_64 platform: linux - license: BSD-3-Clause - license_family: BSD - size: 209793 - timestamp: 1735541054068 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_2.conda - sha256: 862c20de0120f802e618dcb25913d00c5b82f91f4be60b2d46a774e851adc2f6 - md5: 9a7dbbaab49f76a6f36e5c9d98e323a7 + license: Apache-2.0 + license_family: Apache + size: 823649 + timestamp: 1735627841126 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsentencepiece-0.2.0-h6164ad9_10.conda + sha256: 57074803772f65d4075b7d6dc17ff5aa40ec3a30109fa4225ca16911504c4a8b + md5: a7a192edc9cfba26a27df3283203e6a1 depends: - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 - libstdcxx >=13 - constrains: - - re2 2024.07.02.* arch: aarch64 platform: linux - license: BSD-3-Clause - license_family: BSD - size: 204305 - timestamp: 1735540986919 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h07bc746_2.conda - sha256: 112a73ad483353751d4c5d63648c69a4d6fcebf5e1b698a860a3f5124fc3db96 - md5: 6b1e3624d3488016ca4f1ca0c412efaa + license: Apache-2.0 + license_family: Apache + size: 800865 + timestamp: 1735627982895 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsentencepiece-0.2.0-he13a0af_10.conda + sha256: 3347a8840d085ce1661928e736229f068d56c84312fbed90886e059023d85611 + md5: 1f67e5e30edd56e0a0bf6df6bb711a9d depends: - __osx >=11.0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - libcxx >=18 - constrains: - - re2 2024.07.02.* + - libprotobuf >=5.28.3,<5.28.4.0a0 arch: arm64 platform: osx - license: BSD-3-Clause - license_family: BSD - size: 167155 - timestamp: 1735541067807 + license: Apache-2.0 + license_family: Apache + size: 754657 + timestamp: 1735628030895 - conda: https://conda.anaconda.org/conda-forge/linux-64/libsndfile-1.2.2-hc60ed4a_1.conda sha256: f709cbede3d4f3aee4e2f8d60bd9e256057f410bd60b8964cb8cf82ec1457573 md5: ef1910918dd895516a769ed36b5b3a4e @@ -5645,45 +2772,6 @@ packages: license: Unlicense size: 852831 timestamp: 1737564996616 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hf672d98_0.conda - sha256: 0407ac9fda2bb67e11e357066eff144c845801d00b5f664efbc48813af1e7bb9 - md5: be2de152d8073ef1c01b7728475f2fe7 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libzlib >=1.3.1,<2.0a0 - - openssl >=3.4.0,<4.0a0 - arch: x86_64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 304278 - timestamp: 1732349402869 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libssh2-1.11.1-ha41c0db_0.conda - sha256: 40f2af5357457546bd11cd64a3b9043d83865180f65ce602515c35f353be35c7 - md5: aeffe03c0e598f015aab08dbb04f6ee4 - depends: - - libgcc >=13 - - libzlib >=1.3.1,<2.0a0 - - openssl >=3.4.0,<4.0a0 - arch: aarch64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 311577 - timestamp: 1732349396421 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.1-h9cc3647_0.conda - sha256: f7047c6ed44bcaeb04432e8c74da87591940d091b0a3940c0d884b7faa8062e9 - md5: ddc7194676c285513706e5fc64f214d7 - depends: - - libzlib >=1.3.1,<2.0a0 - - openssl >=3.4.0,<4.0a0 - arch: arm64 - platform: osx - license: BSD-3-Clause - license_family: BSD - size: 279028 - timestamp: 1732349599461 - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-hc0a3c3a_1.conda sha256: 4661af0eb9bdcbb5fb33e5d0023b001ad4be828fccdcc56500059d56f9869462 md5: 234a5554c53625688d51062645337328 @@ -5759,52 +2847,6 @@ packages: license: LGPL-2.1-or-later size: 512091 timestamp: 1736377189744 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libthrift-0.21.0-h0e7cc3e_0.conda - sha256: ebb395232973c18745b86c9a399a4725b2c39293c9a91b8e59251be013db42f0 - md5: dcb95c0a98ba9ff737f7ae482aef7833 - depends: - - __glibc >=2.17,<3.0.a0 - - libevent >=2.1.12,<2.1.13.0a0 - - libgcc >=13 - - libstdcxx >=13 - - libzlib >=1.3.1,<2.0a0 - - openssl >=3.3.2,<4.0a0 - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 425773 - timestamp: 1727205853307 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libthrift-0.21.0-h154c74f_0.conda - sha256: f04ab1417aca1687edff9c30d8423ace285eb8c053dc16d595c6e47cfeefb274 - md5: c28792bf37f4ecdce8e3cb9e40750650 - depends: - - libevent >=2.1.12,<2.1.13.0a0 - - libgcc >=13 - - libstdcxx >=13 - - libzlib >=1.3.1,<2.0a0 - - openssl >=3.3.2,<4.0a0 - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 417329 - timestamp: 1727205944238 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libthrift-0.21.0-h64651cc_0.conda - sha256: 7a6c7d5f58cbbc2ccd6493b4b821639fdb0701b9b04c737a949e8cb6adf1c9ad - md5: 7ce2bd2f650f8c31ad7ba4c7bfea61b7 - depends: - - __osx >=11.0 - - libcxx >=17 - - libevent >=2.1.12,<2.1.13.0a0 - - libzlib >=1.3.1,<2.0a0 - - openssl >=3.3.2,<4.0a0 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: APACHE - size: 324342 - timestamp: 1727206096912 - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hd9ff511_3.conda sha256: b224e16b88d76ea95e4af56e2bc638c603bd26a770b98d117d04541d3aafa002 md5: 0ea6510969e1296cc19966fad481f6de @@ -5860,40 +2902,6 @@ packages: license: HPND size: 370600 timestamp: 1734398863052 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.10.0-h4c51ac1_0.conda - sha256: 8e41563ee963bf8ded06da45f4e70bf42f913cb3c2e79364eb3218deffa3cd74 - md5: aeccfff2806ae38430638ffbb4be9610 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - arch: x86_64 - platform: linux - license: MIT - license_family: MIT - size: 82745 - timestamp: 1737244366901 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.10.0-ha346350_0.conda - sha256: 9c333e07b76ae1ea2c882db764be52dc82f632be66d993a50b35ca9c5475074a - md5: c5166bcfb8348e8fc31ee16ec3981a5e - depends: - - libgcc >=13 - arch: aarch64 - platform: linux - license: MIT - license_family: MIT - size: 82679 - timestamp: 1737329054400 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.10.0-hda25de7_0.conda - sha256: aca3ef31d3dff5cefd3790742a5ee6548f1cf0201d0e8cee08b01da503484eb6 - md5: 5f741aed1d8d393586a5fdcaaa87f45c - depends: - - __osx >=11.0 - arch: arm64 - platform: osx - license: MIT - license_family: MIT - size: 83628 - timestamp: 1737244450097 - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda sha256: 787eb542f055a2b3de553614b25f09eefb0a0931b0c87dbcce6efdfd92f04f18 md5: 40b61aab5c7ba9ff276c41cfffe6b80b @@ -5916,40 +2924,6 @@ packages: license_family: BSD size: 35720 timestamp: 1680113474501 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.50.0-hb9d3cd8_0.conda - sha256: b4a8890023902aef9f1f33e3e35603ad9c2f16c21fdb58e968fa6c1bd3e94c0b - md5: 771ee65e13bc599b0b62af5359d80169 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - arch: x86_64 - platform: linux - license: MIT - license_family: MIT - size: 891272 - timestamp: 1737016632446 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuv-1.50.0-h86ecc28_0.conda - sha256: 67914c7f171d343059144d804c2f17fcd621a94e45f179a0fd843b8c1618823e - md5: 915db044076cbbdffb425170deb4ce38 - depends: - - libgcc >=13 - arch: aarch64 - platform: linux - license: MIT - license_family: MIT - size: 621056 - timestamp: 1737016626950 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libuv-1.50.0-h5505292_0.conda - sha256: d13fb49d4c8262bf2c44ffb2c77bb2b5d0f85fc6de76bdb75208efeccb29fce6 - md5: 20717343fb30798ab7c23c2e92b748c1 - depends: - - __osx >=11.0 - arch: arm64 - platform: osx - license: MIT - license_family: MIT - size: 418890 - timestamp: 1737016751326 - conda: https://conda.anaconda.org/conda-forge/linux-64/libvorbis-1.3.7-h9c3ff4c_0.tar.bz2 sha256: 53080d72388a57b3c31ad5805c93a7328e46ff22fab7c44ad2a86d712740af33 md5: 309dec04b70a3cc0f1e84a4013683bc0 @@ -6057,86 +3031,26 @@ packages: license_family: MIT size: 397493 timestamp: 1727280745441 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxcb-1.17.0-hdb1d25a_0.conda - sha256: bd3816218924b1e43b275863e21a3e13a5db4a6da74cca8e60bc3c213eb62f71 - md5: af523aae2eca6dfa1c8eec693f5b9a79 - depends: - - __osx >=11.0 - - pthread-stubs - - xorg-libxau >=1.0.11,<2.0a0 - - xorg-libxdmcp - arch: arm64 - platform: osx - license: MIT - license_family: MIT - size: 323658 - timestamp: 1727278733917 - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda sha256: 6ae68e0b86423ef188196fff6207ed0c8195dd84273cb5623b85aa08033a410c md5: 5aa797f8787fe7a17d1b0821485b5adc depends: - libgcc-ng >=12 arch: x86_64 - platform: linux - license: LGPL-2.1-or-later - size: 100393 - timestamp: 1702724383534 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda - sha256: 6b46c397644091b8a26a3048636d10b989b1bf266d4be5e9474bf763f828f41f - md5: b4df5d7d4b63579d081fd3a4cf99740e - depends: - - libgcc-ng >=12 - arch: aarch64 - platform: linux - license: LGPL-2.1-or-later - size: 114269 - timestamp: 1702724369203 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.5-h8d12d68_1.conda - sha256: c3b05bdc40d27a9249f0bb60f3f71718f94104b8bcd200163a6c9d4ade7aa052 - md5: 1a21e49e190d1ffe58531a81b6e400e1 - depends: - - __glibc >=2.17,<3.0.a0 - - icu >=75.1,<76.0a0 - - libgcc >=13 - - libiconv >=1.17,<2.0a0 - - liblzma >=5.6.3,<6.0a0 - - libzlib >=1.3.1,<2.0a0 - arch: x86_64 - platform: linux - license: MIT - license_family: MIT - size: 690589 - timestamp: 1733443667823 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.5-h2e0c361_1.conda - sha256: dc0e86d35a836af6e99d18f50c6551fc64c53ed3a3da5a9fea90e78763cf14b4 - md5: 63410f85031930cde371dfe0ee89109a - depends: - - icu >=75.1,<76.0a0 - - libgcc >=13 - - libiconv >=1.17,<2.0a0 - - liblzma >=5.6.3,<6.0a0 - - libzlib >=1.3.1,<2.0a0 - arch: aarch64 - platform: linux - license: MIT - license_family: MIT - size: 732155 - timestamp: 1733443825814 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.5-h178c5d8_1.conda - sha256: d7af3f25a4cece170502acd38f2dafbea4521f373f46dcb28a37fbe6ac2da544 - md5: 3dc3cff0eca1640a6acbbfab2f78139e - depends: - - __osx >=11.0 - - icu >=75.1,<76.0a0 - - libiconv >=1.17,<2.0a0 - - liblzma >=5.6.3,<6.0a0 - - libzlib >=1.3.1,<2.0a0 - arch: arm64 - platform: osx - license: MIT - license_family: MIT - size: 582898 - timestamp: 1733443841584 + platform: linux + license: LGPL-2.1-or-later + size: 100393 + timestamp: 1702724383534 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda + sha256: 6b46c397644091b8a26a3048636d10b989b1bf266d4be5e9474bf763f828f41f + md5: b4df5d7d4b63579d081fd3a4cf99740e + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: LGPL-2.1-or-later + size: 114269 + timestamp: 1702724369203 - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda sha256: d4bfe88d7cb447768e31650f06257995601f89076080e76df55e3112d4e47dc4 md5: edb0dca6bc32e4f4789199455a1dbeb8 @@ -6215,196 +3129,178 @@ packages: license_family: BSD size: 184953 timestamp: 1733740984533 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.10.0-h286801f_1.conda - sha256: 94d3e2a485dab8bdfdd4837880bde3dd0d701e2b97d6134b8806b7c8e69c8652 - md5: 01511afc6cc1909c5303cf31be17b44f - depends: - - __osx >=11.0 - - libcxx >=18 - arch: arm64 - platform: osx - license: BSD-2-Clause - license_family: BSD - size: 148824 - timestamp: 1733741047892 -- conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_1.conda - sha256: 0fbacdfb31e55964152b24d5567e9a9996e1e7902fb08eb7d91b5fd6ce60803a - md5: fee3164ac23dfca50cfcc8b85ddefb81 - depends: - - mdurl >=0.1,<1 - - python >=3.9 - license: MIT - license_family: MIT - size: 64430 - timestamp: 1733250550053 -- conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_1.conda - sha256: 4a6bf68d2a2b669fecc9a4a009abd1cf8e72c2289522ff00d81b5a6e51ae78f5 - md5: eb227c3e0bf58f5bd69c0532b157975b - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - constrains: - - jinja2 >=3.0.0 - arch: x86_64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 24604 - timestamp: 1733219911494 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.2-py312h74ce7d3_1.conda - sha256: 1d500158262f30b9c23e37d1c861fe76e127a3926d69b3b38c25d20d3faa6f9f - md5: bc8607ab678073a0441808a31465f4fb - depends: - - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - constrains: - - jinja2 >=3.0.0 - arch: aarch64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 25079 - timestamp: 1733220639175 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312h998013c_1.conda - sha256: 4aa997b244014d3707eeef54ab0ee497d12c0d0d184018960cce096169758283 - md5: 46e547061080fddf9cf95a0327e8aba6 - depends: - - __osx >=11.0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - constrains: - - jinja2 >=3.0.0 - arch: arm64 - platform: osx - license: BSD-3-Clause - license_family: BSD - size: 24048 - timestamp: 1733219945697 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020605-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020700-release.conda noarch: python - sha256: f33974d10b1d4e642f287392b461a9437bffa776547f3537116d8018caf3da7c - md5: 61f314b8a3d2ddaa878b1056e09e48eb + sha256: 0c5086da2c8515aae71eb8b4c0b7805411c39d89a141fba0c48071d06352ae58 + md5: 8a119d75ab58c7869a319618c1bd0629 depends: - - max-core ==25.1.0.dev2025020605 release - - max-python >=25.1.0.dev2025020605,<26.0a0 - - mojo-jupyter ==25.1.0.dev2025020605 release - - mblack ==25.1.0.dev2025020605 release + - max-core ==25.1.0.dev2025020700 release + - max-python ==25.1.0.dev2025020700 release + - mojo-jupyter ==25.1.0.dev2025020700 release + - mblack ==25.1.0.dev2025020700 release license: LicenseRef-Modular-Proprietary - size: 9922 - timestamp: 1738819257916 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025020605-release.conda - sha256: f4f507695eebb8fbbd6107922b4a2d211ab622983f34a24fc8036faf2a7887e3 - md5: 3d4f12391220243dcfc810b5352b2a37 + size: 9901 + timestamp: 1738887556307 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025020700-release.conda + sha256: 0a2843fb9b523381166040e5f9196d555a8173d20e9facf63668ac4c3c3bd7e5 + md5: bcd3f009a29988347468e74c40230aa0 depends: - - mblack ==25.1.0.dev2025020605 release + - mblack ==25.1.0.dev2025020700 release license: LicenseRef-Modular-Proprietary - size: 244769750 - timestamp: 1738819214550 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025020605-release.conda - sha256: e2a216b17d89af7cb2aa1a77a7b8416f04724fe0adbf1d36637b36c632b3517a - md5: 8207a6065094dbb73c472a03ea6df87d + size: 244772443 + timestamp: 1738887618224 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025020700-release.conda + sha256: e6a390b2417ee1da36047c75ce78d80cd076d03eae3ebf44db45cf6339f13310 + md5: 8b535a200a237518b5255359b884dd1c depends: - - mblack ==25.1.0.dev2025020605 release + - mblack ==25.1.0.dev2025020700 release license: LicenseRef-Modular-Proprietary - size: 247282125 - timestamp: 1738819257916 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025020605-release.conda - sha256: 6bf41ea344e035b21701a362dd22265eeaa72c08687287b7c13a664b163d893d - md5: c34a8e1ead4712284ec549d122aa5f9c + size: 247279800 + timestamp: 1738887556307 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025020700-release.conda + sha256: f2fd1544fd907bcc8529dd32ec5424187892397745e4898368e956ac05c48e02 + md5: c0cbf1c622073adc4c1e002559ee4984 depends: - - mblack ==25.1.0.dev2025020605 release + - mblack ==25.1.0.dev2025020700 release license: LicenseRef-Modular-Proprietary - size: 209659254 - timestamp: 1738820968072 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025020605-release.conda + size: 209654994 + timestamp: 1738888179079 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025020700-release.conda noarch: python - sha256: d8a81b52c2a513d083e81f2217e98409a1a0d885a8c446bf4a5852f6c8612725 - md5: b1adba04b753ac70558cedaee35fe306 + sha256: 23e51aa18d098b77a33de9b223e858ceb24dca4883dec954036d1d3cb5b3c7f2 + md5: d7bfb71fa8c8936ac46cd65cdbaceed6 depends: - - max-core ==25.1.0.dev2025020605 release - - python - - fastapi - - httpx - - huggingface_hub + - max-core ==25.1.0.dev2025020700 release + - click >=8.0.0 - numpy >=1.18,<2.0 - - opentelemetry-api + - sentencepiece >=0.2.0 + - tqdm >=4.67.1 + constrains: + - aiohttp >=3.11.12 + - fastapi >=0.114.2 + - gguf >=0.14.0 + - hf-transfer >=0.1.9 + - httpx >=0.28.1 + - huggingface_hub >=0.24.0 + - nvitop >=1.4.1 + - opentelemetry-api >=1.29.0 - opentelemetry-exporter-otlp-proto-http >=1.27.0 - opentelemetry-exporter-prometheus >=0.48b0 - - opentelemetry-sdk >=1.27.0 - - pillow - - pydantic-settings >=2.4.0,<3 - - pydantic >=2.4.0,<3 - - pyinstrument - - python-json-logger - - sse-starlette >=2.1.3,<3 - - transformers - - typing_extensions - - uvicorn + - opentelemetry-sdk >=1.29.0,<2.0 + - pillow >=10.3.0 + - prometheus_client >=0.21.0 + - prometheus-async >=22.2.0 + - psutil >=6.1.1 + - pydantic + - pydantic-settings >=2.7.1 + - pyinstrument >=5.0.1 + - python-json-logger >=2.0.7 + - requests >=2.32.3 + - rich >=13.9.4 + - safetensors >=0.5.2 + - scipy >=1.15.1 + - sentinel >=0.3.0 + - sse-starlette >=2.1.2 + - tokenizers >=0.19.0 + - pytorch >=2.2.2,<=2.5.1 + - transformers >=4.40.1 + - uvicorn >=0.34.0 + - uvloop >=0.21.0 license: LicenseRef-Modular-Proprietary - size: 120666001 - timestamp: 1738819214550 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025020605-release.conda + size: 120644157 + timestamp: 1738887618224 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025020700-release.conda noarch: python - sha256: 505eee35cbd7705c48c9d561cb6f38479fb2f3c7d893c51d930c9b4e16da7104 - md5: 9c5aaecd6d6500c081363552c952c213 + sha256: 1113181f7ac5ab5b19dec273f34eea07d39d9ac3713d372cde746fe7804e2692 + md5: b5cdc8249909a14ad5cc69cb7b5c30e4 depends: - - max-core ==25.1.0.dev2025020605 release - - python - - fastapi - - httpx - - huggingface_hub + - max-core ==25.1.0.dev2025020700 release + - click >=8.0.0 - numpy >=1.18,<2.0 - - opentelemetry-api + - sentencepiece >=0.2.0 + - tqdm >=4.67.1 + constrains: + - aiohttp >=3.11.12 + - fastapi >=0.114.2 + - gguf >=0.14.0 + - hf-transfer >=0.1.9 + - httpx >=0.28.1 + - huggingface_hub >=0.24.0 + - nvitop >=1.4.1 + - opentelemetry-api >=1.29.0 - opentelemetry-exporter-otlp-proto-http >=1.27.0 - opentelemetry-exporter-prometheus >=0.48b0 - - opentelemetry-sdk >=1.27.0 - - pillow - - pydantic-settings >=2.4.0,<3 - - pydantic >=2.4.0,<3 - - pyinstrument - - python-json-logger - - sse-starlette >=2.1.3,<3 - - transformers - - typing_extensions - - uvicorn + - opentelemetry-sdk >=1.29.0,<2.0 + - pillow >=10.3.0 + - prometheus_client >=0.21.0 + - prometheus-async >=22.2.0 + - psutil >=6.1.1 + - pydantic + - pydantic-settings >=2.7.1 + - pyinstrument >=5.0.1 + - python-json-logger >=2.0.7 + - requests >=2.32.3 + - rich >=13.9.4 + - safetensors >=0.5.2 + - scipy >=1.15.1 + - sentinel >=0.3.0 + - sse-starlette >=2.1.2 + - tokenizers >=0.19.0 + - pytorch >=2.2.2,<=2.5.1 + - transformers >=4.40.1 + - uvicorn >=0.34.0 + - uvloop >=0.21.0 license: LicenseRef-Modular-Proprietary - size: 123043775 - timestamp: 1738819257916 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025020605-release.conda + size: 123020201 + timestamp: 1738887556307 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025020700-release.conda noarch: python - sha256: b1d2614caf1da1bca20540127b0f71b6357f75b155eb93bac4fcaa10b5737f7e - md5: be243c36de2750e5a51af50a571e0e98 + sha256: 847e472b44904735bbc68e1fcec6a4fe53883ad6409af4f8155b2b40772c74cc + md5: 14bf0cbc7ef6cf6f3b728780a19b14ab depends: - - max-core ==25.1.0.dev2025020605 release - - python - - fastapi - - httpx - - huggingface_hub + - max-core ==25.1.0.dev2025020700 release + - click >=8.0.0 - numpy >=1.18,<2.0 - - opentelemetry-api + - sentencepiece >=0.2.0 + - tqdm >=4.67.1 + constrains: + - aiohttp >=3.11.12 + - fastapi >=0.114.2 + - gguf >=0.14.0 + - hf-transfer >=0.1.9 + - httpx >=0.28.1 + - huggingface_hub >=0.24.0 + - nvitop >=1.4.1 + - opentelemetry-api >=1.29.0 - opentelemetry-exporter-otlp-proto-http >=1.27.0 - opentelemetry-exporter-prometheus >=0.48b0 - - opentelemetry-sdk >=1.27.0 - - pillow - - pydantic-settings >=2.4.0,<3 - - pydantic >=2.4.0,<3 - - pyinstrument - - python-json-logger - - sse-starlette >=2.1.3,<3 - - transformers - - typing_extensions - - uvicorn + - opentelemetry-sdk >=1.29.0,<2.0 + - pillow >=10.3.0 + - prometheus_client >=0.21.0 + - prometheus-async >=22.2.0 + - psutil >=6.1.1 + - pydantic + - pydantic-settings >=2.7.1 + - pyinstrument >=5.0.1 + - python-json-logger >=2.0.7 + - requests >=2.32.3 + - rich >=13.9.4 + - safetensors >=0.5.2 + - scipy >=1.15.1 + - sentinel >=0.3.0 + - sse-starlette >=2.1.2 + - tokenizers >=0.19.0 + - pytorch >=2.2.2,<=2.5.1 + - transformers >=4.40.1 + - uvicorn >=0.34.0 + - uvloop >=0.21.0 license: LicenseRef-Modular-Proprietary - size: 108461286 - timestamp: 1738820968072 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020605-release.conda + size: 108448310 + timestamp: 1738888179079 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020700-release.conda noarch: python - sha256: 8cbc7067cdf1cce1a11e2b385168697793c4090e37fcee65c19b0d3782320ce8 - md5: b8dc96fb459fbeb13a3dcee463b17613 + sha256: 17daf1d55dd29b1bee00b6febfb9037b863e1e70e115606174c334b5c9159f94 + md5: 3443f44398d7184cb2f05944e90fccca depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -6415,29 +3311,20 @@ packages: - typing_extensions >=v4.12.2 - python license: MIT - size: 130824 - timestamp: 1738819257916 -- conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda - sha256: 78c1bbe1723449c52b7a9df1af2ee5f005209f67e40b6e1d3c7619127c43b1c7 - md5: 592132998493b3ff25fd7479396e8351 - depends: - - python >=3.9 - license: MIT - license_family: MIT - size: 14465 - timestamp: 1733255681319 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020605-release.conda + size: 130848 + timestamp: 1738887556306 +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020700-release.conda noarch: python - sha256: a98de01d436333c23597e626195c5d49272c1c5d3359889979bafb8f19d4f3bf - md5: f68f7d08fc12083075182da8482fcfa9 + sha256: 951321ffc06290d15d11f519c32aae835d8194a692c017ae8175bb98879215c0 + md5: 4a2ebf4276afe6a0b569f4550b5ecedf depends: - - max-core ==25.1.0.dev2025020605 release + - max-core ==25.1.0.dev2025020700 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22925 - timestamp: 1738819257916 + size: 22987 + timestamp: 1738887556307 - conda: https://conda.anaconda.org/conda-forge/linux-64/mpg123-1.32.9-hc50e24c_0.conda sha256: 39c4700fb3fbe403a77d8cc27352fa72ba744db487559d5d44bf8411bb4ea200 md5: c7f302fd11eeb0987a6a5e1f3aed6a21 @@ -6475,91 +3362,6 @@ packages: license_family: LGPL size: 360712 timestamp: 1730581491116 -- conda: 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 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 61507 - timestamp: 1733913288935 -- conda: 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 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 63077 - timestamp: 1733913233032 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/multidict-6.1.0-py312hdb8e49c_1.conda - sha256: 482fd09fb798090dc8cce2285fa69f43b1459099122eac2fb112d9b922b9f916 - md5: 0048335516fed938e4dd2c457b4c5b9b - depends: - - __osx >=11.0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: APACHE - size: 55968 - timestamp: 1729065664275 -- conda: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.15-py312h98912ed_1.conda - sha256: bb612a921fafda6375a2204ffebd8811db8dd3b8f25ac9886cc9bcbff7e3664e - md5: 5a64b9f44790d9a187a85366dd0ffa8d - depends: - - dill >=0.3.6 - - libgcc-ng >=12 - - python >=3.12.0rc3,<3.13.0a0 - - python_abi 3.12.* *_cp312 - arch: x86_64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 335666 - timestamp: 1695459025249 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.15-py312hdd3e373_1.conda - sha256: c53362cdf346f314e111faddc53061e3fd2ece0ba68ca303f5dd109976df158f - md5: 173a1692d2b3ddc265dc6afd21a869b3 - depends: - - dill >=0.3.6 - - libgcc-ng >=12 - - python >=3.12.0rc3,<3.13.0a0 - - python >=3.12.0rc3,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - arch: aarch64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 336110 - timestamp: 1695459137796 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/multiprocess-0.70.15-py312h02f2b3b_1.conda - sha256: 8041371e3ec3fbc2ca13c71b0180672896e6382e62892d9f6b11a4c5dd675951 - md5: 910ef2223c71902175418d9163152788 - depends: - - dill >=0.3.6 - - python >=3.12.0rc3,<3.13.0a0 - - python >=3.12.0rc3,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - arch: arm64 - platform: osx - license: BSD-3-Clause - license_family: BSD - size: 335147 - timestamp: 1695459275360 - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda sha256: 1895f47b7d68581a6facde5cb13ab8c2764c2e53a76bd746f8f98910dc4e08fe md5: 29097e7ea634a45cc5386b95cac6568f @@ -6600,43 +3402,6 @@ packages: license: X11 AND BSD-3-Clause size: 797030 timestamp: 1738196177597 -- conda: https://conda.anaconda.org/conda-forge/linux-64/nlohmann_json-3.11.3-he02047a_1.conda - sha256: ce4bcced4f8eea71b7cac8bc3daac097abf7a5792f278cd811dedada199500c1 - md5: e46f7ac4917215b49df2ea09a694a3fa - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc-ng >=12 - - libstdcxx-ng >=12 - arch: x86_64 - platform: linux - license: MIT - license_family: MIT - size: 122743 - timestamp: 1723652407663 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/nlohmann_json-3.11.3-h0a1ffab_1.conda - sha256: c90b1f11fc337d90a9e4c5aeeacac1418c5ba6a195097086566d38bb2ecf0f24 - md5: f2bd10ff23ab5c87327439c4499b3f3e - depends: - - libgcc-ng >=12 - - libstdcxx-ng >=12 - arch: aarch64 - platform: linux - license: MIT - license_family: MIT - size: 122755 - timestamp: 1723652622631 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/nlohmann_json-3.11.3-h00cdb27_1.conda - sha256: 3f4e6a4fa074bb297855f8111ab974dab6d9f98b7d4317d4dd46f8687ee2363b - md5: d2dee849c806430eee64d3acc98ce090 - depends: - - __osx >=11.0 - - libcxx >=16 - arch: arm64 - platform: osx - license: MIT - license_family: MIT - size: 123250 - timestamp: 1723652704997 - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda sha256: fe3459c75cf84dcef6ef14efcc4adb0ade66038ddd27cadb894f34f4797687d8 md5: d8285bea2a350f63fab23bf460221f3f @@ -6695,52 +3460,6 @@ packages: license_family: BSD size: 6073136 timestamp: 1707226249608 -- conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.3-h5fbd93e_0.conda - sha256: 5bee706ea5ba453ed7fd9da7da8380dd88b865c8d30b5aaec14d2b6dd32dbc39 - md5: 9e5816bc95d285c115a3ebc2f8563564 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libpng >=1.6.44,<1.7.0a0 - - libstdcxx >=13 - - libtiff >=4.7.0,<4.8.0a0 - - libzlib >=1.3.1,<2.0a0 - arch: x86_64 - platform: linux - license: BSD-2-Clause - license_family: BSD - size: 342988 - timestamp: 1733816638720 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openjpeg-2.5.3-h3f56577_0.conda - sha256: 92d310033e20538e896f4e4b1ea4205eb6604eee7c5c651c4965a0d8d3ca0f1d - md5: 04231368e4af50d11184b50e14250993 - depends: - - libgcc >=13 - - libpng >=1.6.44,<1.7.0a0 - - libstdcxx >=13 - - libtiff >=4.7.0,<4.8.0a0 - - libzlib >=1.3.1,<2.0a0 - arch: aarch64 - platform: linux - license: BSD-2-Clause - license_family: BSD - size: 377796 - timestamp: 1733816683252 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/openjpeg-2.5.3-h8a3d83b_0.conda - sha256: 1d59bc72ca7faac06d349c1a280f5cfb8a57ee5896f1e24225a997189d7418c7 - md5: 4b71d78648dbcf68ce8bf22bb07ff838 - depends: - - __osx >=11.0 - - libcxx >=18 - - libpng >=1.6.44,<1.7.0a0 - - libtiff >=4.7.0,<4.8.0a0 - - libzlib >=1.3.1,<2.0a0 - arch: arm64 - platform: osx - license: BSD-2-Clause - license_family: BSD - size: 319362 - timestamp: 1733816781741 - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.0-h7b32b05_1.conda sha256: f62f6bca4a33ca5109b6d571b052a394d836956d21b25b7ffd03376abf7a481f md5: 4ce6875f75469b2757a65e10a5d05e31 @@ -6778,90 +3497,6 @@ packages: license_family: Apache size: 2936415 timestamp: 1736086108693 -- conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.29.0-pyhd8ed1ab_1.conda - sha256: 296280c8ace35c0a1cf72bed1077f248b3af903c3bf92332f1783a207cb5abdb - md5: 307b05402c1a382f2f09426492dee8f8 - depends: - - deprecated >=1.2.6 - - importlib-metadata >=6.0,<=8.5.0 - - python >=3.9 - license: Apache-2.0 - license_family: APACHE - size: 44166 - timestamp: 1734132973331 -- conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.29.0-pyhd8ed1ab_0.conda - sha256: ae9776efe52564e0d6711cfcee7c54439273e57a3999f7f796f66e862f58aae9 - md5: 0c02e74d26bce3fec93b227cf7ea6e6b - depends: - - backoff >=1.10.0,<3.0.0 - - opentelemetry-proto 1.29.0 - - python >=3.9 - license: Apache-2.0 - license_family: APACHE - size: 18922 - timestamp: 1734310457116 -- conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.29.0-pyhd8ed1ab_1.conda - sha256: 5d61db9d5b4f91b3932f5f2348920d5b7fdaa09e52c8ea054cf7bf3f21677c9c - md5: 223f4e56a29601c887f0dc467034af5b - depends: - - deprecated >=1.2.6 - - googleapis-common-protos >=1.52,<2.dev0 - - opentelemetry-api >=1.15,<2.dev0 - - opentelemetry-exporter-otlp-proto-common 1.29.0 - - opentelemetry-proto 1.29.0 - - opentelemetry-sdk 1.29.0 - - python >=3.9 - - requests >=2.7,<3.dev0 - license: Apache-2.0 - license_family: APACHE - size: 17147 - timestamp: 1734345675510 -- conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-prometheus-1.12.0rc1-pyhd8ed1ab_0.conda - sha256: b8239230dbbdb491401e41b53bd9f21d60551cedef1a8d5807fca1bf9bdd331c - md5: 1ddc95052b31147d1e10d818cf519cf5 - depends: - - opentelemetry-api >=1.10.0 - - opentelemetry-sdk >=1.10.0 - - prometheus_client >=0.5.0,<1.0.0 - - python >=3.6 - license: Apache-2.0 - license_family: APACHE - size: 14721 - timestamp: 1695214221489 -- conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.29.0-pyhd8ed1ab_0.conda - sha256: 200a7cb8acc8a0ddd6ef55c5460cec871b6a265929b240a0296c0ccb9c8d9758 - md5: e2a6d2ad10b813c7fdc1c64aac376128 - depends: - - protobuf <6.0,>=5.0 - - python >=3.9 - license: Apache-2.0 - license_family: APACHE - size: 37235 - timestamp: 1734291034372 -- conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.29.0-pyhd8ed1ab_0.conda - sha256: 7b36629d8b8be8a019fcfd1518d7b7f862dd25de96f8adcadb93e4fd12cf9bd6 - md5: 2a8893f06e6ebda4bfa78875bc923ea4 - depends: - - opentelemetry-api 1.29.0 - - opentelemetry-semantic-conventions 0.50b0 - - python >=3.9 - - typing-extensions >=3.7.4 - - typing_extensions >=3.7.4 - license: Apache-2.0 - license_family: APACHE - size: 77645 - timestamp: 1734297838999 -- conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.50b0-pyh3cfb1c2_0.conda - sha256: 6526e70368d5bf66ef0eaa51fb800d53782dde71a24bd38f40139919a6f784dc - md5: f7111fa4188d646c8108e232d024cb99 - depends: - - deprecated >=1.2.6 - - opentelemetry-api 1.29.0 - - python >=3.9 - license: Apache-2.0 - license_family: APACHE - size: 86084 - timestamp: 1734208980168 - conda: https://conda.anaconda.org/conda-forge/linux-64/opusfile-0.12-h3358134_2.conda sha256: f4df9df880e405e5c856383f869d5b9d434f78fb7c234c9e7b099ab604fb7fc3 md5: 5931bcae00b98f952696b6bcdd0be34b @@ -6903,156 +3538,15 @@ packages: license_family: BSD size: 80128 timestamp: 1670387790769 -- conda: https://conda.anaconda.org/conda-forge/linux-64/orc-2.0.3-h12ee42a_2.conda - sha256: dff5cc8023905782c86b3459055f26d4b97890e403b0698477c9fed15d8669cc - md5: 4f6f9f3f80354ad185e276c120eac3f0 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libprotobuf >=5.28.3,<5.28.4.0a0 - - libstdcxx >=13 - - libzlib >=1.3.1,<2.0a0 - - lz4-c >=1.10.0,<1.11.0a0 - - snappy >=1.2.1,<1.3.0a0 - - tzdata - - zstd >=1.5.6,<1.6.0a0 - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 1188881 - timestamp: 1735630209320 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/orc-2.0.3-hdd485aa_2.conda - sha256: b6c67542352a86cdf143c3066d5cda855b74454a156eedcd8958b494c6a32a83 - md5: d19f01b42e5d6a2908b65df435aff42f - depends: - - libgcc >=13 - - libprotobuf >=5.28.3,<5.28.4.0a0 - - libstdcxx >=13 - - libzlib >=1.3.1,<2.0a0 - - lz4-c >=1.10.0,<1.11.0a0 - - snappy >=1.2.1,<1.3.0a0 - - tzdata - - zstd >=1.5.6,<1.6.0a0 - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 1167714 - timestamp: 1735630248837 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/orc-2.0.3-h0ff2369_2.conda - sha256: cca330695f3bdb8c0e46350c29cd4af3345865544e36f1d7c9ba9190ad22f5f4 - md5: 24b1897c0d24afbb70704ba998793b78 - depends: - - __osx >=11.0 - - libcxx >=18 - - libprotobuf >=5.28.3,<5.28.4.0a0 - - libzlib >=1.3.1,<2.0a0 - - lz4-c >=1.10.0,<1.11.0a0 - - snappy >=1.2.1,<1.3.0a0 - - tzdata - - zstd >=1.5.6,<1.6.0a0 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: Apache - size: 438520 - timestamp: 1735630624140 - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda sha256: da157b19bcd398b9804c5c52fc000fcb8ab0525bdb9c70f95beaa0bb42f85af1 md5: 3bfed7e6228ebf2f7b9eaa47f1b4e2aa depends: - python >=3.8 license: Apache-2.0 - license_family: APACHE - size: 60164 - timestamp: 1733203368787 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.3-py312hf9745cd_1.conda - sha256: ad275a83bfebfa8a8fee9b0569aaf6f513ada6a246b2f5d5b85903d8ca61887e - md5: 8bce4f6caaf8c5448c7ac86d87e26b4b - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libstdcxx >=13 - - numpy >=1.19,<3 - - numpy >=1.22.4 - - python >=3.12,<3.13.0a0 - - python-dateutil >=2.8.1 - - python-tzdata >=2022a - - python_abi 3.12.* *_cp312 - - pytz >=2020.1,<2024.2 - arch: x86_64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 15436913 - timestamp: 1726879054912 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pandas-2.2.3-py312ha2895bd_2.conda - sha256: a34b10077de97eea72c81cb96e3ddc7d48320c0fc7d9b28ba8d9d2bead1d8297 - md5: 39a91ac336d350513de6aad56da5a920 - depends: - - libgcc >=13 - - libstdcxx >=13 - - numpy >=1.19,<3 - - numpy >=1.22.4 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python-dateutil >=2.8.1 - - python-tzdata >=2022a - - python_abi 3.12.* *_cp312 - - pytz >=2020.1,<2024.2 - constrains: - - fsspec >=2022.11.0 - - s3fs >=2022.11.0 - - fastparquet >=2022.12.0 - - pyreadstat >=1.2.0 - - qtpy >=2.3.0 - - scipy >=1.10.0 - - beautifulsoup4 >=4.11.2 - - gcsfs >=2022.11.0 - - numexpr >=2.8.4 - - sqlalchemy >=2.0.0 - - pyxlsb >=1.0.10 - - numba >=0.56.4 - - lxml >=4.9.2 - - matplotlib >=3.6.3 - - psycopg2 >=2.9.6 - - tzdata >=2022.7 - - bottleneck >=1.3.6 - - xarray >=2022.12.0 - - xlsxwriter >=3.0.5 - - zstandard >=0.19.0 - - blosc >=1.21.3 - - pytables >=3.8.0 - - openpyxl >=3.1.0 - - pyqt5 >=5.15.8 - - tabulate >=0.9.0 - arch: aarch64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 15162992 - timestamp: 1736811533875 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.3-py312hcd31e36_1.conda - sha256: ff0cb54b5d058c7987b4a0984066e893642d1865a7bb695294b6172e2fcdc457 - md5: c68bfa69e6086c381c74e16fd72613a8 - depends: - - __osx >=11.0 - - libcxx >=17 - - numpy >=1.19,<3 - - numpy >=1.22.4 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python-dateutil >=2.8.1 - - python-tzdata >=2022a - - python_abi 3.12.* *_cp312 - - pytz >=2020.1,<2024.2 - arch: arm64 - platform: osx - license: BSD-3-Clause - license_family: BSD - size: 14470437 - timestamp: 1726878887799 + license_family: APACHE + size: 60164 + timestamp: 1733203368787 - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda sha256: 9f64009cdf5b8e529995f18e03665b03f5d07c0b17445b8badef45bde76249ee md5: 617f15191456cc6a13db418a275435e5 @@ -7102,71 +3596,6 @@ packages: license_family: BSD size: 618973 timestamp: 1723488853807 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-11.1.0-py312h80c1187_0.conda - sha256: 5c347962202b55ae4d8a463e0555c5c6ca33396266a08284bf1384399894e541 - md5: d3894405f05b2c0f351d5de3ae26fa9c - depends: - - __glibc >=2.17,<3.0.a0 - - freetype >=2.12.1,<3.0a0 - - lcms2 >=2.16,<3.0a0 - - libgcc >=13 - - libjpeg-turbo >=3.0.0,<4.0a0 - - libtiff >=4.7.0,<4.8.0a0 - - libwebp-base >=1.5.0,<2.0a0 - - libxcb >=1.17.0,<2.0a0 - - libzlib >=1.3.1,<2.0a0 - - openjpeg >=2.5.3,<3.0a0 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - - tk >=8.6.13,<8.7.0a0 - arch: x86_64 - platform: linux - license: HPND - size: 42749785 - timestamp: 1735929845390 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pillow-11.1.0-py312h719f0cf_0.conda - sha256: 7559556ffc44bda777f85c2e5acd6b5756fa5822c0271b329b7b9a3c6bb20349 - md5: 77e0ec0a6fc847d317f204aa15b59f6b - depends: - - freetype >=2.12.1,<3.0a0 - - lcms2 >=2.16,<3.0a0 - - libgcc >=13 - - libjpeg-turbo >=3.0.0,<4.0a0 - - libtiff >=4.7.0,<4.8.0a0 - - libwebp-base >=1.5.0,<2.0a0 - - libxcb >=1.17.0,<2.0a0 - - libzlib >=1.3.1,<2.0a0 - - openjpeg >=2.5.3,<3.0a0 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - - tk >=8.6.13,<8.7.0a0 - arch: aarch64 - platform: linux - license: HPND - size: 41362848 - timestamp: 1735932311857 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-11.1.0-py312h50aef2c_0.conda - sha256: b29b7c915053e06a7a5b4118760202c572c9c35d23bd6ce8e73270b6a50e50ee - md5: 94d6ba8cd468668a9fb04193b0f4b36e - depends: - - __osx >=11.0 - - freetype >=2.12.1,<3.0a0 - - lcms2 >=2.16,<3.0a0 - - libjpeg-turbo >=3.0.0,<4.0a0 - - libtiff >=4.7.0,<4.8.0a0 - - libwebp-base >=1.5.0,<2.0a0 - - libxcb >=1.17.0,<2.0a0 - - libzlib >=1.3.1,<2.0a0 - - openjpeg >=2.5.3,<3.0a0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - - tk >=8.6.13,<8.7.0a0 - arch: arm64 - platform: osx - license: HPND - size: 42852329 - timestamp: 1735930118976 - conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.44.2-h29eaf8c_0.conda sha256: 747c58db800d5583fee78e76240bf89cbaeedf7ab1ef339c2990602332b9c4be md5: 5e2a7acfa2c24188af39e7944e1b3604 @@ -7287,154 +3716,6 @@ packages: license_family: MIT size: 47319 timestamp: 1693882007724 -- conda: https://conda.anaconda.org/conda-forge/linux-64/prometheus-cpp-1.3.0-ha5d0236_0.conda - sha256: 013669433eb447548f21c3c6b16b2ed64356f726b5f77c1b39d5ba17a8a4b8bc - md5: a83f6a2fdc079e643237887a37460668 - depends: - - __glibc >=2.17,<3.0.a0 - - libcurl >=8.10.1,<9.0a0 - - libgcc >=13 - - libstdcxx >=13 - - libzlib >=1.3.1,<2.0a0 - - zlib - arch: x86_64 - platform: linux - license: MIT - license_family: MIT - size: 199544 - timestamp: 1730769112346 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/prometheus-cpp-1.3.0-h7938499_0.conda - sha256: 9350d7bbc3982a732ff13a7fd17b585509e3b7d0191ac7b810cc3224868e3648 - md5: 10f4301290e51c49979ff98d1bdf2556 - depends: - - libcurl >=8.10.1,<9.0a0 - - libgcc >=13 - - libstdcxx >=13 - - libzlib >=1.3.1,<2.0a0 - - zlib - arch: aarch64 - platform: linux - license: MIT - license_family: MIT - size: 211335 - timestamp: 1730769181127 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/prometheus-cpp-1.3.0-h0967b3e_0.conda - sha256: 851a77ae1a8e90db9b9f3c4466abea7afb52713c3d98ceb0d37ba6ff27df2eff - md5: 7172339b49c94275ba42fec3eaeda34f - depends: - - __osx >=11.0 - - libcurl >=8.10.1,<9.0a0 - - libcxx >=18 - - libzlib >=1.3.1,<2.0a0 - - zlib - arch: arm64 - platform: osx - license: MIT - license_family: MIT - size: 173220 - timestamp: 1730769371051 -- conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda - sha256: bc8f00d5155deb7b47702cb8370f233935704100dbc23e30747c161d1b6cf3ab - md5: 3e01e386307acc60b2f89af0b2e161aa - depends: - - python >=3.9 - license: Apache-2.0 - license_family: Apache - size: 49002 - timestamp: 1733327434163 -- conda: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.1-py312h178313f_1.conda - sha256: 6d5ff6490c53e14591b70924711fe7bd70eb7fbeeeb1cbd9ed2f6d794ec8c4eb - md5: 349635694b4df27336bc15a49e9220e9 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 52947 - timestamp: 1737635699390 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.2.1-py312hcc812fe_1.conda - sha256: d759d8ab9c060b42cabf6312b9a04aa590daecabf1dd4e35731f4bc1b5c388bb - md5: 533b07e9fd835938f465225613825eee - depends: - - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 52776 - timestamp: 1737635802135 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.1-py312h998013c_1.conda - sha256: 96145760baad111d7ae4213ea8f8cc035cf33b001f5ff37d92268e4d28b0941d - md5: 83678928c58c9ae76778a435b6c7a94a - depends: - - __osx >=11.0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: APACHE - size: 50942 - timestamp: 1737635896600 -- conda: https://conda.anaconda.org/conda-forge/linux-64/protobuf-5.28.3-py312h2ec8cdc_0.conda - sha256: acb2e0ee948e3941f8ed191cb77f654e06538638aed8ccd71cbc78a15242ebbb - md5: 9d7e427d159c1b2d516cc047ff177c48 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libstdcxx >=13 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - constrains: - - libprotobuf 5.28.3 - arch: x86_64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 464794 - timestamp: 1731366525051 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/protobuf-5.28.3-py312h6f74592_0.conda - sha256: 9c575d5035c7ecb114ab9e17906c0a54087d9598dd6a2104c02fe33f0a29dd46 - md5: 06513608c94fb1c1b17136ace77063a9 - depends: - - libgcc >=13 - - libstdcxx >=13 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - constrains: - - libprotobuf 5.28.3 - arch: aarch64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 473242 - timestamp: 1731366577844 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/protobuf-5.28.3-py312hd8f9ff3_0.conda - sha256: 9d572a97419bdace14d7c7cc8cc8c4bf2dcb22b56965dac87a27fbdb5061b926 - md5: 5afbe52a59f04dd1fe566d0d17590d7e - depends: - - __osx >=11.0 - - libcxx >=18 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - constrains: - - libprotobuf 5.28.3 - arch: arm64 - platform: osx - license: BSD-3-Clause - license_family: BSD - size: 448803 - timestamp: 1731367010746 - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda sha256: 9c88f8c64590e9567c6c80823f0328e58d3b1efb0e1c539c0315ceca764e0973 md5: b3c17d95b5a10c6e64a21fa17573e70e @@ -7450,255 +3731,48 @@ packages: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pthread-stubs-0.4-h86ecc28_1002.conda sha256: 977dfb0cb3935d748521dd80262fe7169ab82920afd38ed14b7fee2ea5ec01ba md5: bb5a90c93e3bac3d5690acf76b4a6386 - depends: - - libgcc >=13 - arch: aarch64 - platform: linux - license: MIT - license_family: MIT - size: 8342 - timestamp: 1726803319942 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pthread-stubs-0.4-hd74edd7_1002.conda - sha256: 8ed65e17fbb0ca944bfb8093b60086e3f9dd678c3448b5de212017394c247ee3 - md5: 415816daf82e0b23a736a069a75e9da7 - depends: - - __osx >=11.0 - arch: arm64 - platform: osx - license: MIT - license_family: MIT - size: 8381 - timestamp: 1726802424786 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pulseaudio-client-17.0-hb77b528_0.conda - sha256: b27c0c8671bd95c205a61aeeac807c095b60bc76eb5021863f919036d7a964fc - md5: 07f45f1be1c25345faddb8db0de8039b - depends: - - dbus >=1.13.6,<2.0a0 - - libgcc-ng >=12 - - libglib >=2.78.3,<3.0a0 - - libsndfile >=1.2.2,<1.3.0a0 - - libsystemd0 >=255 - constrains: - - pulseaudio 17.0 *_0 - arch: x86_64 - platform: linux - license: LGPL-2.1-or-later - license_family: LGPL - size: 757633 - timestamp: 1705690081905 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pulseaudio-client-17.0-h729494f_0.conda - sha256: 209eac3123ee2c84a35401626941c4aa64e04e2c9854084ddeba6432c6078a41 - md5: f35f57712d5c2abca98c85a51a408bc1 - depends: - - dbus >=1.13.6,<2.0a0 - - libgcc-ng >=12 - - libglib >=2.78.3,<3.0a0 - - libsndfile >=1.2.2,<1.3.0a0 - - libsystemd0 >=255 - constrains: - - pulseaudio 17.0 *_0 - arch: aarch64 - platform: linux - license: LGPL-2.1-or-later - license_family: LGPL - size: 766184 - timestamp: 1705690164726 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-19.0.0-py312h7900ff3_0.conda - sha256: 7d98e626ec65b882341482ad15ecb7a670ee41dbaf375aa660ba8b7d0a940504 - md5: 14f86e63b5c214dd9fb34e5472d4bafc - depends: - - libarrow-acero 19.0.0.* - - libarrow-dataset 19.0.0.* - - libarrow-substrait 19.0.0.* - - libparquet 19.0.0.* - - pyarrow-core 19.0.0 *_0_* - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 25289 - timestamp: 1737128438818 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-19.0.0-py312h8025657_0.conda - sha256: 3a73d3d15031586214381edf5410a6920c1f75f52a8d8b994722b106d9a50150 - md5: a86fa414c44b7e3ee054cc385c79a822 - depends: - - libarrow-acero 19.0.0.* - - libarrow-dataset 19.0.0.* - - libarrow-substrait 19.0.0.* - - libparquet 19.0.0.* - - pyarrow-core 19.0.0 *_0_* - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 25496 - timestamp: 1737129041038 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-19.0.0-py312h1f38498_0.conda - sha256: 9d693901833c2ff4e5d67e1f2f6df50f699e1cec2f580c26d42299654830855a - md5: bd5e025292ff1127aa1534b59e55c4d0 - depends: - - libarrow-acero 19.0.0.* - - libarrow-dataset 19.0.0.* - - libarrow-substrait 19.0.0.* - - libparquet 19.0.0.* - - pyarrow-core 19.0.0 *_0_* - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: APACHE - size: 25428 - timestamp: 1737128284082 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-19.0.0-py312h01725c0_0_cpu.conda - sha256: 81178d0de0ac851a0a78e09c81ad92274cf770a38b28acdf53a0cfb2122d15aa - md5: 7ab1143b9ac1af5cc4a630706f643627 - depends: - - __glibc >=2.17,<3.0.a0 - - libarrow 19.0.0.* *cpu - - libgcc >=13 - - libstdcxx >=13 - - libzlib >=1.3.1,<2.0a0 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - constrains: - - apache-arrow-proc =*=cpu - - numpy >=1.21,<3 - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 5230953 - timestamp: 1737128097002 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-19.0.0-py312h66f7834_0_cpu.conda - sha256: 17ff419abfe9596f77857dfa635538200427d87283c28e64920d10d6533ec30e - md5: ce51dbcfeae8709f0b94c78eabe7cf5e - depends: - - libarrow 19.0.0.* *cpu - - libgcc >=13 - - libstdcxx >=13 - - libzlib >=1.3.1,<2.0a0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - constrains: - - numpy >=1.21,<3 - - apache-arrow-proc =*=cpu - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 5023430 - timestamp: 1737627066264 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-19.0.0-py312hc40f475_0_cpu.conda - sha256: 6303fe1c3e6d36273b72f0eeb3f19897d2376d57fe8c757f55dcbfbaa5cd6840 - md5: df502157843a7b1d90af04803767be15 - depends: - - __osx >=11.0 - - libarrow 19.0.0.* *cpu - - libcxx >=18 - - libzlib >=1.3.1,<2.0a0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - constrains: - - apache-arrow-proc =*=cpu - - numpy >=1.21,<3 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: APACHE - size: 4393075 - timestamp: 1737128225546 -- conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - sha256: 79db7928d13fab2d892592223d7570f5061c192f27b9febd1a418427b719acc6 - md5: 12c566707c80111f9799308d9e265aef - depends: - - python >=3.9 - - python - license: BSD-3-Clause - license_family: BSD - size: 110100 - timestamp: 1733195786147 -- conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.6-pyh3cfb1c2_0.conda - sha256: 9a78801a28959edeb945e8270a4e666577b52fac0cf4e35f88cf122f73d83e75 - md5: c69f87041cf24dfc8cb6bf64ca7133c7 - depends: - - annotated-types >=0.6.0 - - pydantic-core 2.27.2 - - python >=3.9 - - typing-extensions >=4.6.1 - - typing_extensions >=4.12.2 - license: MIT - license_family: MIT - size: 296841 - timestamp: 1737761472006 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.27.2-py312h12e396e_0.conda - sha256: 81602a4592ad2ac1a1cb57372fd25214e63b1c477d5818b0c21cde0f1f85c001 - md5: bae01b2563030c085f5158c518b84e86 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - - typing-extensions >=4.6.0,!=4.7.0 - constrains: - - __glibc >=2.17 - arch: x86_64 - platform: linux - license: MIT - license_family: MIT - size: 1641402 - timestamp: 1734571789895 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pydantic-core-2.27.2-py312h8cbf658_0.conda - sha256: 623e0f3846f15d035ce7ab7ae445fc8d9e547b6684ab55858b6f44510d24b097 - md5: 9677f6ab4bf27ba3c2aee70d08c7b27c - depends: - - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - - typing-extensions >=4.6.0,!=4.7.0 - constrains: - - __glibc >=2.17 + depends: + - libgcc >=13 arch: aarch64 platform: linux license: MIT license_family: MIT - size: 1505076 - timestamp: 1734571966615 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.27.2-py312hcd83bfe_0.conda - sha256: cfa7201f890d5d08ce29ff70e65a96787d5793a1718776733666b44bbd4a1205 - md5: dcb307e02f17d38c6e1cbfbf8c602852 + size: 8342 + timestamp: 1726803319942 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pulseaudio-client-17.0-hb77b528_0.conda + sha256: b27c0c8671bd95c205a61aeeac807c095b60bc76eb5021863f919036d7a964fc + md5: 07f45f1be1c25345faddb8db0de8039b depends: - - __osx >=11.0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - - typing-extensions >=4.6.0,!=4.7.0 + - dbus >=1.13.6,<2.0a0 + - libgcc-ng >=12 + - libglib >=2.78.3,<3.0a0 + - libsndfile >=1.2.2,<1.3.0a0 + - libsystemd0 >=255 constrains: - - __osx >=11.0 - arch: arm64 - platform: osx - license: MIT - license_family: MIT - size: 1593461 - timestamp: 1734571986644 -- conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.7.1-pyh3cfb1c2_0.conda - sha256: 082fb1ec29917d2c9ed6a862cb8eb9beb88c208ea62c9fef1aeb5f4f3e0e0b06 - md5: d71d76b62bed332b037d7adfc0f3989a + - pulseaudio 17.0 *_0 + arch: x86_64 + platform: linux + license: LGPL-2.1-or-later + license_family: LGPL + size: 757633 + timestamp: 1705690081905 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pulseaudio-client-17.0-h729494f_0.conda + sha256: 209eac3123ee2c84a35401626941c4aa64e04e2c9854084ddeba6432c6078a41 + md5: f35f57712d5c2abca98c85a51a408bc1 depends: - - pydantic >=2.7.0 - - python >=3.9 - - python-dotenv >=0.21.0 - license: MIT - license_family: MIT - size: 31822 - timestamp: 1735650532951 + - dbus >=1.13.6,<2.0a0 + - libgcc-ng >=12 + - libglib >=2.78.3,<3.0a0 + - libsndfile >=1.2.2,<1.3.0a0 + - libsystemd0 >=255 + constrains: + - pulseaudio 17.0 *_0 + arch: aarch64 + platform: linux + license: LGPL-2.1-or-later + license_family: LGPL + size: 766184 + timestamp: 1705690164726 - conda: https://conda.anaconda.org/conda-forge/linux-64/pygame-2.6.1-py312h4fcb14b_0.conda sha256: 7a5582c3eed17d0223cbd79dfb25ebae1ec7f8b06eb550fb65e163adb5f1c75b md5: 80c4be6aac23ad6dfc2aeca1b1ab7d1f @@ -7774,67 +3848,6 @@ packages: license: LGPL-2.1-only size: 2932509 timestamp: 1727636775263 -- conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda - sha256: 28a3e3161390a9d23bc02b4419448f8d27679d9e2c250e29849e37749c8de86b - md5: 232fb4577b6687b2d503ef8e254270c9 - depends: - - python >=3.9 - license: BSD-2-Clause - license_family: BSD - size: 888600 - timestamp: 1736243563082 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pyinstrument-5.0.1-py312h66e93f0_0.conda - sha256: 3f1c0bc95f2c46dcd107f44cf742ee1fa40ba22e244f01083654743bbbcf28f3 - md5: 9f1d7b421e4c8fd00009490613db64d4 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - arch: x86_64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 182333 - timestamp: 1737774425235 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyinstrument-5.0.1-py312hb2c0f52_0.conda - sha256: 16af5db4359078bcb526291855bf1075ab035a96fe4e8d5cc4b0b5c8cba89b9a - md5: 90f5e9e04b1ecf25ad3f28b606f63742 - depends: - - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - arch: aarch64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 183988 - timestamp: 1737774588265 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyinstrument-5.0.1-py312hea69d52_0.conda - sha256: 5e7de2f908af22bbd8cf3562ce5ebf65ad6c0d8e40038f90b56f4db750639ce2 - md5: 07b0eb9b6bd91dfa87f95032825690dc - depends: - - __osx >=11.0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - arch: arm64 - platform: osx - license: BSD-3-Clause - license_family: BSD - size: 182524 - timestamp: 1737774624030 -- conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - sha256: ba3b032fa52709ce0d9fd388f63d330a026754587a2f461117cac9ab73d8d0d8 - md5: 461219d1a5bd61342293efa2c0c90eac - depends: - - __unix - - python >=3.9 - license: BSD-3-Clause - license_family: BSD - size: 21085 - timestamp: 1733217331982 - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.8-h9e4cc4f_1_cpython.conda build_number: 1 sha256: 3f0e0518c992d8ccfe62b189125721309836fe48a010dc424240583e157f9ff0 @@ -7926,86 +3939,6 @@ packages: license_family: APACHE size: 222505 timestamp: 1733215763718 -- conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda - sha256: 99713f6b534fef94995c6c16fd21d59f3548784e9111775d692bdc7c44678f02 - md5: e5c6ed218664802d305e79cc2d4491de - depends: - - python >=3.9 - license: BSD-3-Clause - license_family: BSD - size: 24215 - timestamp: 1733243277223 -- conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - sha256: 4790787fe1f4e8da616edca4acf6a4f8ed4e7c6967aa31b920208fc8f95efcca - md5: a61bf9ec79426938ff785eb69dbb1960 - depends: - - python >=3.6 - license: BSD-2-Clause - license_family: BSD - size: 13383 - timestamp: 1677079727691 -- conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.20-pyhff2d567_0.conda - sha256: 1b03678d145b1675b757cba165a0d9803885807792f7eb4495e48a38858c3cca - md5: a28c984e0429aff3ab7386f7de56de6f - depends: - - python >=3.9 - license: Apache-2.0 - license_family: Apache - size: 27913 - timestamp: 1734420869885 -- conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.1-pyhd8ed1ab_0.conda - sha256: 1597d6055d34e709ab8915091973552a0b8764c8032ede07c4e99670da029629 - md5: 392c91c42edd569a7ec99ed8648f597a - depends: - - python >=3.9 - license: Apache-2.0 - license_family: APACHE - size: 143794 - timestamp: 1737541204030 -- conda: https://conda.anaconda.org/conda-forge/linux-64/python-xxhash-3.5.0-py312h66e93f0_1.conda - sha256: 20851b1e59fee127d49e01fc73195a88ab0779f103b7d6ffc90d11142a83678f - md5: 39aed2afe4d0cf76ab3d6b09eecdbea7 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - - xxhash >=0.8.2,<0.8.3.0a0 - arch: x86_64 - platform: linux - license: BSD-2-Clause - license_family: BSD - size: 23162 - timestamp: 1725272139519 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-xxhash-3.5.0-py312h52516f5_1.conda - sha256: 0fa5ba80073a43391ee90303814adbc9fd826175de1fdac273ba0e5b711aa255 - md5: 591c4ae6d8338dfd07b951e00433a405 - depends: - - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - - xxhash >=0.8.2,<0.8.3.0a0 - arch: aarch64 - platform: linux - license: BSD-2-Clause - license_family: BSD - size: 23589 - timestamp: 1725273317965 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-xxhash-3.5.0-py312h024a12e_1.conda - sha256: 28204ef48f028a4d872e22040da0dad7ebd703549b010a1bb511b6dd94cf466d - md5: 266fe1ae54a7bb17990206664d0f0ae4 - depends: - - __osx >=11.0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - - xxhash >=0.8.2,<0.8.3.0a0 - arch: arm64 - platform: osx - license: BSD-2-Clause - license_family: BSD - size: 21765 - timestamp: 1725272382968 - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda build_number: 5 sha256: d10e93d759931ffb6372b45d65ff34d95c6000c61a07e298d162a3bc2accebb0 @@ -8042,60 +3975,6 @@ packages: license_family: BSD size: 6278 timestamp: 1723823099686 -- conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda - sha256: 1a7d6b233f7e6e3bbcbad054c8fd51e690a67b129a899a056a5e45dd9f00cb41 - md5: 3eeeeb9e4827ace8c0c1419c85d590ad - depends: - - python >=3.7 - license: MIT - license_family: MIT - size: 188538 - timestamp: 1706886944988 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py312h178313f_2.conda - sha256: 159cba13a93b3fe084a1eb9bda0a07afc9148147647f0d437c3c3da60980503b - md5: cf2485f39740de96e2a7f2bb18ed2fee - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - - yaml >=0.2.5,<0.3.0a0 - arch: x86_64 - platform: linux - license: MIT - license_family: MIT - size: 206903 - timestamp: 1737454910324 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyyaml-6.0.2-py312hcc812fe_2.conda - sha256: dc78e41d51300722ba35ac4a10d37339ceffbe22d7501c71dfd3f633a4f8e79a - md5: 4de4a5ff81c941674e08595244e7cd61 - depends: - - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - - yaml >=0.2.5,<0.3.0a0 - arch: aarch64 - platform: linux - license: MIT - license_family: MIT - size: 199172 - timestamp: 1737454840766 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py312h998013c_2.conda - sha256: ad225ad24bfd60f7719709791345042c3cb32da1692e62bd463b084cf140e00d - md5: 68149ed4d4e9e1c42d2ba1f27f08ca96 - depends: - - __osx >=11.0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - - yaml >=0.2.5,<0.3.0a0 - arch: arm64 - platform: osx - license: MIT - license_family: MIT - size: 192148 - timestamp: 1737454886351 - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.1-py312hbf22597_0.conda sha256: 90ec0da0317d3d76990a40c61e1709ef859dd3d8c63838bad2814f46a63c8a2e md5: 7cec8d0dac15a2d9fea8e49879aa779d @@ -8177,39 +4056,6 @@ packages: license_family: BSD size: 1526706 timestamp: 1694329743011 -- conda: https://conda.anaconda.org/conda-forge/linux-64/re2-2024.07.02-h9925aae_2.conda - sha256: d213c44958d49ce7e0d4d5b81afec23640cce5016685dbb2d23571a99caa4474 - md5: e84ddf12bde691e8ec894b00ea829ddf - depends: - - libre2-11 2024.07.02 hbbce691_2 - arch: x86_64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 26786 - timestamp: 1735541074034 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/re2-2024.07.02-haa97905_2.conda - sha256: 040848655df9119bae5a549fb5c8956a5537120859416c1d9d0712b7bac9f12e - md5: 1bf0135339b4a7419a198a795d2d4be0 - depends: - - libre2-11 2024.07.02 h18dbdb1_2 - arch: aarch64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 26830 - timestamp: 1735540999398 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/re2-2024.07.02-h6589ca4_2.conda - sha256: 4d3799c05f8f662922a0acd129d119774760a3281b883603678e128d1cb307fb - md5: 7a8b4ad8c58a3408ca89d78788c78178 - depends: - - libre2-11 2024.07.02 h07bc746_2 - arch: arm64 - platform: osx - license: BSD-3-Clause - license_family: BSD - size: 26861 - timestamp: 1735541088455 - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda sha256: 5435cf39d039387fbdc977b0a762357ea909a7694d9528ab40f005e9208744d7 md5: 47d31b792659ce70f470b5c82fdfb7a4 @@ -8243,163 +4089,8 @@ packages: platform: osx license: GPL-3.0-only license_family: GPL - size: 250351 - timestamp: 1679532511311 -- conda: https://conda.anaconda.org/conda-forge/linux-64/regex-2024.11.6-py312h66e93f0_0.conda - sha256: fcb5687d3ec5fff580b64b8fb649d9d65c999a91a5c3108a313ecdd2de99f06b - md5: 647770db979b43f9c9ca25dcfa7dc4e4 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - arch: x86_64 - platform: linux - license: Python-2.0 - license_family: PSF - size: 402821 - timestamp: 1730952378415 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/regex-2024.11.6-py312hb2c0f52_0.conda - sha256: ec2c416860de29224e447e2031f8686a05476759c17da1f32f61d4307e540ec8 - md5: fa8b589107567f532fa1380e66f91776 - depends: - - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - arch: aarch64 - platform: linux - license: Python-2.0 - license_family: PSF - size: 398947 - timestamp: 1730952477463 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/regex-2024.11.6-py312hea69d52_0.conda - sha256: dcdec32f2c7dd37986baa692bedf9db126ad34e92e5e9b64f707cba3d04d2525 - md5: e73cda1f18846b608284bd784f061eac - depends: - - __osx >=11.0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - arch: arm64 - platform: osx - license: Python-2.0 - license_family: PSF - size: 366374 - timestamp: 1730952427552 -- conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda - sha256: d701ca1136197aa121bbbe0e8c18db6b5c94acbd041c2b43c70e5ae104e1d8ad - md5: a9b9368f3701a417eac9edbcae7cb737 - depends: - - certifi >=2017.4.17 - - charset-normalizer >=2,<4 - - idna >=2.5,<4 - - python >=3.9 - - urllib3 >=1.21.1,<3 - constrains: - - chardet >=3.0.2,<6 - license: Apache-2.0 - license_family: APACHE - size: 58723 - timestamp: 1733217126197 -- conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_1.conda - sha256: 06a760c5ae572e72e865d5a87e9fe3cc171e1a9c996e63daf3db52ff1a0b4457 - md5: 7aed65d4ff222bfb7335997aa40b7da5 - depends: - - markdown-it-py >=2.2.0 - - pygments >=2.13.0,<3.0.0 - - python >=3.9 - - typing_extensions >=4.0.0,<5.0.0 - license: MIT - license_family: MIT - size: 185646 - timestamp: 1733342347277 -- conda: 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 -- conda: https://conda.anaconda.org/conda-forge/linux-64/s2n-1.5.11-h072c03f_0.conda - sha256: cfdd98c8f9a1e5b6f9abce5dac6d590cc9fe541a08466c9e4a26f90e00b569e3 - md5: 5e8060d52f676a40edef0006a75c718f - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - openssl >=3.4.0,<4.0a0 - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 356213 - timestamp: 1737146304079 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/s2n-1.5.11-h3caee7a_0.conda - sha256: 5a7ae66f96be24c3b2007139b6c3701ab015b4b4eb4eccfdd07be97710243a47 - md5: 1517c0518f8a06a48a15f41d94252874 - depends: - - libgcc >=13 - - openssl >=3.4.0,<4.0a0 - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 352811 - timestamp: 1737146319512 -- conda: https://conda.anaconda.org/conda-forge/linux-64/safetensors-0.5.2-py312h12e396e_0.conda - sha256: 98b8dfa5eec083e0b3ace00906a7f7e748b1e2446dca17e87473f43278fcc036 - md5: 999ca9d87d2bb8b4c01e62c755b928cf - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - constrains: - - __glibc >=2.17 - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 424409 - timestamp: 1736383159339 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/safetensors-0.5.2-py312h8cbf658_0.conda - sha256: 3e230060c1366cbaf03f4315b021dfe47f5147f3af88f17975d661c08fe15ad3 - md5: 2c77c961c4e813b1d05122ac4d803d80 - depends: - - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - constrains: - - __glibc >=2.17 - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 408166 - timestamp: 1736383184569 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/safetensors-0.5.2-py312hcd83bfe_0.conda - sha256: 0aeb3e654095ca0261d560d1fc05912d0e94d547a7dc435d7f4cedeba966d176 - md5: fc0383682805e293eba9b8afc9ad0931 - depends: - - __osx >=11.0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - constrains: - - __osx >=11.0 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: APACHE - size: 378060 - timestamp: 1736383410115 + size: 250351 + timestamp: 1679532511311 - conda: https://conda.anaconda.org/conda-forge/linux-64/sdl2-2.30.10-h63c27ac_0.conda sha256: 639325326d51cd70f56a55ffd3c1fa778e61751f16d66d0baea155375f1a139c md5: 5cecf6d327e4f8c5dfafc71b4a8556e7 @@ -8594,540 +4285,232 @@ packages: license: Zlib size: 45429 timestamp: 1736118165229 -- conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda - sha256: 0557c090913aa63cdbe821dbdfa038a321b488e22bc80196c4b3b1aace4914ef - md5: 7c3c2a0f3ebdea2bbc35538d162b43bf - depends: - - python >=3.9 - license: MIT - license_family: MIT - size: 14462 - timestamp: 1733301007770 -- conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - sha256: 41db0180680cc67c3fa76544ffd48d6a5679d96f4b71d7498a759e94edc9a2db - md5: a451d576819089b0d672f18768be0f65 - depends: - - python >=3.9 - license: MIT - license_family: MIT - size: 16385 - timestamp: 1733381032766 -- conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-h8bd8927_1.conda - sha256: ec91e86eeb2c6bbf09d51351b851e945185d70661d2ada67204c9a6419d282d3 - md5: 3b3e64af585eadfb52bb90b553db5edf +- conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-0.2.0-hc8f76dd_10.conda + sha256: a1bde55ceb9dc5bd7879283d0f594a6ce65c07fda3de76230c65a4a5df47858a + md5: 480e915dfc6c592615ef6f217e615aa6 depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libstdcxx >=13 + - libsentencepiece 0.2.0 h8e10757_10 + - python_abi 3.12.* *_cp312 + - sentencepiece-python 0.2.0 py312hb6b8a2b_10 + - sentencepiece-spm 0.2.0 h8e10757_10 arch: x86_64 platform: linux - license: BSD-3-Clause - license_family: BSD - size: 42739 - timestamp: 1733501881851 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-hd4fb6f5_1.conda - sha256: c4a07ae5def8d55128f25a567a296ef9d7bf99a3bc79d46bd5160c076a5f50af - md5: 2fcc6cd1e5550deb509073fd2e6693e1 - depends: - - libgcc >=13 - - libstdcxx >=13 - arch: aarch64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 43032 - timestamp: 1733501964775 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-h98b9ce2_1.conda - sha256: 4242f95b215127a006eb664fe26ed5a82df87e90cbdbc7ce7ff4971f0720997f - md5: ded86dee325290da2967a3fea3800eb5 - depends: - - __osx >=11.0 - - libcxx >=18 - arch: arm64 - platform: osx - license: BSD-3-Clause - license_family: BSD - size: 35857 - timestamp: 1733502172664 -- conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - sha256: c2248418c310bdd1719b186796ae50a8a77ce555228b6acd32768e2543a15012 - md5: bf7a226e58dfb8346c70df36065d86c9 - depends: - - python >=3.9 license: Apache-2.0 license_family: Apache - size: 15019 - timestamp: 1733244175724 -- conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.2.1-pyhd8ed1ab_0.conda - sha256: 3c6a476e7afb702d841e23c61a0c4cc491929d2e39376d329e67e94c40a236cc - md5: c1ef6bc13dd2caa4b406fb3cb06c2791 - depends: - - anyio >=4.7.0 - - python >=3.9 - - starlette >=0.41.3 - license: BSD-3-Clause - license_family: BSD - size: 15324 - timestamp: 1735126414893 -- conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.45.3-pyha770c72_0.conda - sha256: be48c99e6fb8e12ebee09e6fbb4d78a170b614cdaa19ab791a8f5b6caf09919a - md5: 9b3a68bc7aed7949ef86f950993261f4 - depends: - - anyio >=3.6.2,<5 - - python >=3.9 - - typing_extensions >=3.10.0 - license: BSD-3-Clause - license_family: BSD - size: 57934 - timestamp: 1737824077668 -- conda: https://conda.anaconda.org/conda-forge/linux-64/svt-av1-2.3.0-h5888daf_0.conda - sha256: df30a9be29f1a8b5a2e314dd5b16ccfbcbd1cc6a4f659340e8bc2bd4de37bc6f - md5: 355898d24394b2af353eb96358db9fdd - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libstdcxx >=13 - arch: x86_64 - platform: linux - license: BSD-2-Clause - license_family: BSD - size: 2746291 - timestamp: 1730246036363 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/svt-av1-2.3.0-h5ad3122_0.conda - sha256: 2fad2496a21d198ea72f5dabfdace2fae0ced5cc3ea243922cb372fcf4c18222 - md5: efb60b536bbf64772929b57f6b30298b - depends: - - libgcc >=13 - - libstdcxx >=13 - arch: aarch64 - platform: linux - license: BSD-2-Clause - license_family: BSD - size: 1796731 - timestamp: 1730246027014 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/svt-av1-2.3.0-hf24288c_0.conda - sha256: ab876ed8bdd20e22a868dcb8d03e9ce9bbba7762d7e652d49bfff6af768a5b8f - md5: 114c33e9eec335a379c9ee6c498bb807 - depends: - - __osx >=11.0 - - libcxx >=17 - arch: arm64 - platform: osx - license: BSD-2-Clause - license_family: BSD - size: 1387330 - timestamp: 1730246134730 -- conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda - sha256: e0569c9caa68bf476bead1bed3d79650bb080b532c64a4af7d8ca286c08dea4e - md5: d453b98d9c83e71da0741bb0ff4d76bc - depends: - - libgcc-ng >=12 - - libzlib >=1.2.13,<2.0.0a0 - arch: x86_64 - platform: linux - license: TCL - license_family: BSD - size: 3318875 - timestamp: 1699202167581 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda - sha256: 7fa27cc512d3a783f38bd16bbbffc008807372499d5b65d089a8e43bde9db267 - md5: f75105e0585851f818e0009dd1dde4dc + size: 19470 + timestamp: 1735628377167 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-0.2.0-h6c1b121_10.conda + sha256: 846d885a560fbb4375b645e7caf2f756ef88bbeb441b670375da0090aaa427fb + md5: 33a89eb1dedae8eb7222b0a89856f337 depends: - - libgcc-ng >=12 - - libzlib >=1.2.13,<2.0.0a0 + - libsentencepiece 0.2.0 h6164ad9_10 + - python_abi 3.12.* *_cp312 + - sentencepiece-python 0.2.0 py312h197ff68_10 + - sentencepiece-spm 0.2.0 h6164ad9_10 arch: aarch64 platform: linux - license: TCL - license_family: BSD - size: 3351802 - timestamp: 1695506242997 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda - sha256: 72457ad031b4c048e5891f3f6cb27a53cb479db68a52d965f796910e71a403a8 - md5: b50a57ba89c32b62428b71a875291c9b + license: Apache-2.0 + license_family: Apache + size: 19686 + timestamp: 1735628718991 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-0.2.0-h22a84ea_10.conda + sha256: 526c934b897131bd274697649c3b1c492a7d66c03368885a954112468b3c1424 + md5: 346abe448f69949a65473b336856860a depends: - - libzlib >=1.2.13,<2.0.0a0 + - libsentencepiece 0.2.0 he13a0af_10 + - python_abi 3.12.* *_cp312 + - sentencepiece-python 0.2.0 py312h155166a_10 + - sentencepiece-spm 0.2.0 he13a0af_10 arch: arm64 platform: osx - license: TCL - license_family: BSD - size: 3145523 - timestamp: 1699202432999 -- conda: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.21.0-py312h8360d73_0.conda - sha256: 4f504a5e9d77c6d88a8f735c4319429d8bf40b742384f908a2efe0a09acc3cc5 - md5: f953aa733207f3d37acf4a3efbedba89 + license: Apache-2.0 + license_family: Apache + size: 19759 + timestamp: 1735628533490 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-python-0.2.0-py312hb6b8a2b_10.conda + sha256: 37df7fb659564587b950b39c936769d9b5095afb7bc223f42d6248a5540c6567 + md5: 7908b7b977e2e123a5f6a29906f2ce44 depends: - __glibc >=2.17,<3.0.a0 - - huggingface_hub >=0.16.4,<1.0 - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 h8e10757_10 - libstdcxx >=13 - - openssl >=3.4.0,<4.0a0 - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 - constrains: - - __glibc >=2.17 arch: x86_64 platform: linux license: Apache-2.0 - license_family: APACHE - size: 2258007 - timestamp: 1732734202127 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.21.0-py312ha0d6ea1_0.conda - sha256: ef0f4d4e2c798b1821187ea0ba4c86484e48abaa0e9a19fe68030fa7ff5dde84 - md5: 077f48c9e0c08a30d842e15c51df4143 + license_family: Apache + size: 2411182 + timestamp: 1735628106455 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-python-0.2.0-py312h197ff68_10.conda + sha256: a7c2c19cc397c7632e2630af49ddcff128f145c93ea493421e6f42bfa5e1d30b + md5: 5642e4545a3cf03e446fb3b3e9fd723b depends: - - huggingface_hub >=0.16.4,<1.0 - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 h6164ad9_10 - libstdcxx >=13 - - openssl >=3.4.0,<4.0a0 - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 - constrains: - - __glibc >=2.17 arch: aarch64 platform: linux license: Apache-2.0 - license_family: APACHE - size: 2331194 - timestamp: 1732734303196 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.21.0-py312hf3e4074_0.conda - sha256: 5d395333fcb22dc611140286c1f2ea8b3fa220a4931c583587cb612238091555 - md5: 4c732c74b485ef7ac8ec1c548dd45e8e + license_family: Apache + size: 2458076 + timestamp: 1735628298246 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-python-0.2.0-py312h155166a_10.conda + sha256: 2d59614aeafbf54cc718805798c11c2d0a3b4b8d947d1bd81c87c484b4883077 + md5: 6e11367ef670296fce01fc9860be944d depends: - __osx >=11.0 - - huggingface_hub >=0.16.4,<1.0 - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 he13a0af_10 - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 - constrains: - - __osx >=11.0 arch: arm64 platform: osx license: Apache-2.0 - license_family: APACHE - size: 1931389 - timestamp: 1732734727624 -- conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda - sha256: 062a3a3a37fa8615ce57929ba7e982c76f5a5810bcebd435950f6d6c4147c310 - md5: e417822cb989e80a0d2b1b576fdd1657 + license_family: Apache + size: 2433303 + timestamp: 1735628083958 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-spm-0.2.0-h8e10757_10.conda + sha256: 6b55e1121545357d63c3aa0766931720e8aafc52d88641ba7631c8cbaa68c52f + md5: e977b7be5ac26c55825e121e00b90493 depends: - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 h8e10757_10 + - libstdcxx >=13 arch: x86_64 platform: linux license: Apache-2.0 license_family: Apache - size: 840414 - timestamp: 1732616043734 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py312h52516f5_0.conda - sha256: 4c19a544354172b2273553267e734795a6da3c78a04c2d19f8e9e159ca3178bc - md5: e28996d9d2d44d777b7e6fb12f63715b + size: 89076 + timestamp: 1735628334078 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-spm-0.2.0-h6164ad9_10.conda + sha256: b98fc1028a8e8fbf309af383f9c837290a14e076e6c5533dc251694ea33ffc6e + md5: a4b75936c01dca3f089f02752b7ee325 depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 h6164ad9_10 + - libstdcxx >=13 arch: aarch64 platform: linux license: Apache-2.0 license_family: Apache - size: 841662 - timestamp: 1732616934923 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda - sha256: 964a2705a36c50040c967b18b45b9cc8de3c2aff4af546979a574e0b38e58e39 - md5: fb0605888a475d6a380ae1d1a819d976 + size: 85983 + timestamp: 1735628693813 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-spm-0.2.0-he13a0af_10.conda + sha256: b760aeee02e2afbfcce3f559e8a227aa4c94139157b1702fdfb41a057dad0e52 + md5: 9b7300f23cd330da8664cd072c162e5f depends: - __osx >=11.0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 he13a0af_10 arch: arm64 platform: osx license: Apache-2.0 license_family: Apache - size: 842549 - timestamp: 1732616081362 -- conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda - sha256: 11e2c85468ae9902d24a27137b6b39b4a78099806e551d390e394a8c34b48e40 - md5: 9efbfdc37242619130ea42b1cc4ed861 - depends: - - colorama - - python >=3.9 - license: MPL-2.0 or MIT - size: 89498 - timestamp: 1735661472632 -- conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - sha256: f39a5620c6e8e9e98357507262a7869de2ae8cc07da8b7f84e517c9fd6c2b959 - md5: 019a7385be9af33791c989871317e1ed - depends: - - python >=3.9 - license: BSD-3-Clause - license_family: BSD - size: 110051 - timestamp: 1733367480074 -- conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.48.2-pyhd8ed1ab_0.conda - sha256: 67b19c3d6befcc538df3e6d8dc7c4a2b6c7e35b7c1666da790cea4166f1b768a - md5: 717807c559e9a30fea4850ab8881adcb - depends: - - datasets !=2.5.0 - - filelock - - huggingface_hub >=0.23.0,<1.0 - - numpy >=1.17 - - packaging >=20.0 - - python >=3.9 - - pyyaml >=5.1 - - regex !=2019.12.17 - - requests - - safetensors >=0.4.1 - - tokenizers >=0.21,<0.22 - - tqdm >=4.27 - license: Apache-2.0 - license_family: APACHE - size: 3416794 - timestamp: 1738278628376 -- conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda - sha256: ef695490e895c2ad552c77ec497b899b09fd4ad4ab07edcf5649f5994cf92a35 - md5: 170a0398946d8f5b454e592672b6fc20 - depends: - - python >=3.9 - - typer-slim-standard 0.15.1 hd8ed1ab_0 - license: MIT - license_family: MIT - size: 56175 - timestamp: 1733408582623 -- conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda - sha256: d4965516f35e0805199de6596c4ac76c4ad3d6b012be35e532102f9e53ecb860 - md5: 0218b16f5a1dd569e575a7a6415489db - depends: - - click >=8.0.0 - - python >=3.9 - - typing_extensions >=3.7.4.3 - constrains: - - rich >=10.11.0 - - typer >=0.15.1,<0.15.2.0a0 - - shellingham >=1.3.0 - license: MIT - license_family: MIT - size: 43592 - timestamp: 1733408569554 -- conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda - sha256: f31c56fe98315da8b9ce848256c17e0b9f87896b41a6ccf0c9cc74644dcef20f - md5: 4e603c43bfdfc7b533be087c3e070cc9 - depends: - - rich - - shellingham - - typer-slim 0.15.1 pyhd8ed1ab_0 - license: MIT - license_family: MIT - size: 49531 - timestamp: 1733408570063 -- conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda - noarch: python - sha256: c8e9c1c467b5f960b627d7adc1c65fece8e929a3de89967e91ef0f726422fd32 - md5: b6a408c64b78ec7b779a3e5c7a902433 - depends: - - typing_extensions 4.12.2 pyha770c72_1 - license: PSF-2.0 - license_family: PSF - size: 10075 - timestamp: 1733188758872 -- conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - sha256: 337be7af5af8b2817f115b3b68870208b30c31d3439bec07bfb2d8f4823e3568 - md5: d17f13df8b65464ca316cbc000a3cb64 - depends: - - python >=3.9 - license: PSF-2.0 - license_family: PSF - size: 39637 - timestamp: 1733188758212 -- conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda - sha256: c4b1ae8a2931fe9b274c44af29c5475a85b37693999f8c792dad0f8c6734b1de - md5: dbcace4706afdfb7eb891f7b37d07c04 - license: LicenseRef-Public-Domain - size: 122921 - timestamp: 1737119101255 -- conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda - sha256: 114919ffa80c328127dab9c8e7a38f9d563c617691fb81fccb11c1e86763727e - md5: 32674f8dbfb7b26410ed580dd3c10a29 + size: 83826 + timestamp: 1735628514667 +- conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + sha256: 41db0180680cc67c3fa76544ffd48d6a5679d96f4b71d7498a759e94edc9a2db + md5: a451d576819089b0d672f18768be0f65 depends: - - brotli-python >=1.0.9 - - h2 >=4,<5 - - pysocks >=1.5.6,<2.0,!=1.5.7 - python >=3.9 - - zstandard >=0.18.0 license: MIT license_family: MIT - size: 100102 - timestamp: 1734859520452 -- conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.34.0-pyh31011fe_0.conda - sha256: 55c160b0cf9274e2b98bc0f7fcce548bffa8d788bc86aa02801877457040f6fa - md5: 5d448feee86e4740498ec8f8eb40e052 - depends: - - __unix - - click >=7.0 - - h11 >=0.8 - - python >=3.9 - - typing_extensions >=4.0 - license: BSD-3-Clause - license_family: BSD - size: 48643 - timestamp: 1734293057914 -- conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.34.0-h31011fe_0.conda - sha256: 87e1531e175e75122f9f37608eb953af4c977465ab0ae11283cc01fef954e4ec - md5: 32a94143a7f65d76d2d5da37dcb4ed79 - depends: - - __unix - - httptools >=0.6.3 - - python-dotenv >=0.13 - - pyyaml >=5.1 - - uvicorn 0.34.0 pyh31011fe_0 - - uvloop >=0.14.0,!=0.15.0,!=0.15.1 - - watchfiles >=0.13 - - websockets >=10.4 - license: BSD-3-Clause - license_family: BSD - size: 7203 - timestamp: 1734293058849 -- conda: https://conda.anaconda.org/conda-forge/linux-64/uvloop-0.21.0-py312h66e93f0_1.conda - sha256: 9337a80165fcf70b06b9d6ba920dad702260ca966419ae77560a15540e41ab72 - md5: 998e481e17c1b6a74572e73b06f2df08 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libuv >=1.49.2,<2.0a0 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - arch: x86_64 - platform: linux - license: MIT OR Apache-2.0 - size: 701355 - timestamp: 1730214506716 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/uvloop-0.21.0-py312hb2c0f52_1.conda - sha256: 807eede6698bd00a1d739a3e19ee6ae6a03a66d2ddd2ef150f2dfd198c3b0292 - md5: d83e107ba16c77aba2feec47b7b666a4 - depends: - - libgcc >=13 - - libuv >=1.49.2,<2.0a0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - arch: aarch64 - platform: linux - license: MIT OR Apache-2.0 - size: 655266 - timestamp: 1730214606664 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/uvloop-0.21.0-py312h0bf5046_1.conda - sha256: b1efa77aa4871d7bb09c8dd297fa9bd9070ba7f0f95f2d12ae9cdd31ce8b6b22 - md5: 4f5110253ba80ebf27e55c4ab333880a - depends: - - __osx >=11.0 - - libuv >=1.49.2,<2.0a0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - arch: arm64 - platform: osx - license: MIT OR Apache-2.0 - size: 544097 - timestamp: 1730214653726 -- conda: https://conda.anaconda.org/conda-forge/linux-64/watchfiles-1.0.4-py312h12e396e_0.conda - sha256: b728f525dcae2c10524f9942255346eba62aee9c820ff269d7dd4f7caffb7ffb - md5: df87129c4cb7afc4a3cbad71a1b9e223 + size: 16385 + timestamp: 1733381032766 +- conda: https://conda.anaconda.org/conda-forge/linux-64/svt-av1-2.3.0-h5888daf_0.conda + sha256: df30a9be29f1a8b5a2e314dd5b16ccfbcbd1cc6a4f659340e8bc2bd4de37bc6f + md5: 355898d24394b2af353eb96358db9fdd depends: - __glibc >=2.17,<3.0.a0 - - anyio >=3.0.0 - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - constrains: - - __glibc >=2.17 + - libstdcxx >=13 arch: x86_64 platform: linux - license: MIT - license_family: MIT - size: 410192 - timestamp: 1736550568524 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/watchfiles-1.0.4-py312h8cbf658_0.conda - sha256: 45193910f6bafc287c784442d173745161b18f96223f0f990a9a744fda753787 - md5: ed958a27e610c31de625e167d4c11a04 + license: BSD-2-Clause + license_family: BSD + size: 2746291 + timestamp: 1730246036363 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/svt-av1-2.3.0-h5ad3122_0.conda + sha256: 2fad2496a21d198ea72f5dabfdace2fae0ced5cc3ea243922cb372fcf4c18222 + md5: efb60b536bbf64772929b57f6b30298b depends: - - anyio >=3.0.0 - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - constrains: - - __glibc >=2.17 + - libstdcxx >=13 arch: aarch64 platform: linux - license: MIT - license_family: MIT - size: 403791 - timestamp: 1736550743174 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/watchfiles-1.0.4-py312hcd83bfe_0.conda - sha256: 84122e3712f2263e12c9d2be75d122eaf2d269801183df4b73aadcb670943b17 - md5: 946eb0208d09b811a671fad9b2831f4e + license: BSD-2-Clause + license_family: BSD + size: 1796731 + timestamp: 1730246027014 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/svt-av1-2.3.0-hf24288c_0.conda + sha256: ab876ed8bdd20e22a868dcb8d03e9ce9bbba7762d7e652d49bfff6af768a5b8f + md5: 114c33e9eec335a379c9ee6c498bb807 depends: - __osx >=11.0 - - anyio >=3.0.0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - constrains: - - __osx >=11.0 + - libcxx >=17 arch: arm64 platform: osx - license: MIT - license_family: MIT - size: 363822 - timestamp: 1736550859472 -- conda: https://conda.anaconda.org/conda-forge/linux-64/websockets-14.2-py312h66e93f0_0.conda - sha256: 52092f1f811fddcbb63e4e8e1c726f32a0a1ea14c36b70982fc2021a3c010e48 - md5: 279166352304d5d4b63429e9c86fa3dc + license: BSD-2-Clause + license_family: BSD + size: 1387330 + timestamp: 1730246134730 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda + sha256: e0569c9caa68bf476bead1bed3d79650bb080b532c64a4af7d8ca286c08dea4e + md5: d453b98d9c83e71da0741bb0ff4d76bc depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 + - libgcc-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 arch: x86_64 platform: linux - license: BSD-3-Clause + license: TCL license_family: BSD - size: 242949 - timestamp: 1737358315063 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/websockets-14.2-py312hb2c0f52_0.conda - sha256: 5b8273df10b85a667b4fe71788a12c33a9626723650e28f582fd56c87bad0471 - md5: d7535d5d2f8d49d625071f305d6112a1 + size: 3318875 + timestamp: 1699202167581 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda + sha256: 7fa27cc512d3a783f38bd16bbbffc008807372499d5b65d089a8e43bde9db267 + md5: f75105e0585851f818e0009dd1dde4dc depends: - - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 + - libgcc-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 arch: aarch64 platform: linux - license: BSD-3-Clause + license: TCL license_family: BSD - size: 244675 - timestamp: 1737358397158 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/websockets-14.2-py312hea69d52_0.conda - sha256: e5ad8c983a1669d06a6648990c0491d5469143f02003c8fd2ae7d066d7d4b086 - md5: 8757561d3ea10ba178fb7fb888f33e3a + size: 3351802 + timestamp: 1695506242997 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda + sha256: 72457ad031b4c048e5891f3f6cb27a53cb479db68a52d965f796910e71a403a8 + md5: b50a57ba89c32b62428b71a875291c9b depends: - - __osx >=11.0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 + - libzlib >=1.2.13,<2.0.0a0 arch: arm64 platform: osx - license: BSD-3-Clause + license: TCL license_family: BSD - size: 246269 - timestamp: 1737358485546 -- conda: https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.17.2-py312h66e93f0_0.conda - sha256: ed3a1700ecc5d38c7e7dc7d2802df1bc1da6ba3d6f6017448b8ded0affb4ae00 - md5: 669e63af87710f8d52fdec9d4d63b404 + size: 3145523 + timestamp: 1699202432999 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda + sha256: 062a3a3a37fa8615ce57929ba7e982c76f5a5810bcebd435950f6d6c4147c310 + md5: e417822cb989e80a0d2b1b576fdd1657 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -9135,27 +4518,26 @@ packages: - python_abi 3.12.* *_cp312 arch: x86_64 platform: linux - license: BSD-2-Clause - license_family: BSD - size: 63590 - timestamp: 1736869574299 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/wrapt-1.17.2-py312hb2c0f52_0.conda - sha256: cc28914462a21b2f64d9b763a9733bfcbc811dd2975d0d2e6e429e35f5b6d59c - md5: 8a5c6e3f809bae085be369b62dc5d06a + license: Apache-2.0 + license_family: Apache + size: 840414 + timestamp: 1732616043734 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py312h52516f5_0.conda + sha256: 4c19a544354172b2273553267e734795a6da3c78a04c2d19f8e9e159ca3178bc + md5: e28996d9d2d44d777b7e6fb12f63715b depends: - libgcc >=13 - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 arch: aarch64 platform: linux - license: BSD-2-Clause - license_family: BSD - size: 63967 - timestamp: 1736869675870 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/wrapt-1.17.2-py312hea69d52_0.conda - sha256: 6a3e68b57de29802e8703d1791dcacb7613bfdc17bbb087c6b2ea2796e6893ef - md5: e49608c832fcf438f70cbcae09c3adc5 + license: Apache-2.0 + license_family: Apache + size: 841662 + timestamp: 1732616934923 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda + sha256: 964a2705a36c50040c967b18b45b9cc8de3c2aff4af546979a574e0b38e58e39 + md5: fb0605888a475d6a380ae1d1a819d976 depends: - __osx >=11.0 - python >=3.12,<3.13.0a0 @@ -9163,10 +4545,43 @@ packages: - python_abi 3.12.* *_cp312 arch: arm64 platform: osx - license: BSD-2-Clause + license: Apache-2.0 + license_family: Apache + size: 842549 + timestamp: 1732616081362 +- conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + sha256: 11e2c85468ae9902d24a27137b6b39b4a78099806e551d390e394a8c34b48e40 + md5: 9efbfdc37242619130ea42b1cc4ed861 + depends: + - colorama + - python >=3.9 + license: MPL-2.0 or MIT + size: 89498 + timestamp: 1735661472632 +- conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + sha256: f39a5620c6e8e9e98357507262a7869de2ae8cc07da8b7f84e517c9fd6c2b959 + md5: 019a7385be9af33791c989871317e1ed + depends: + - python >=3.9 + license: BSD-3-Clause license_family: BSD - size: 61198 - timestamp: 1736869673767 + size: 110051 + timestamp: 1733367480074 +- conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + sha256: 337be7af5af8b2817f115b3b68870208b30c31d3439bec07bfb2d8f4823e3568 + md5: d17f13df8b65464ca316cbc000a3cb64 + depends: + - python >=3.9 + license: PSF-2.0 + license_family: PSF + size: 39637 + timestamp: 1733188758212 +- conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + sha256: c4b1ae8a2931fe9b274c44af29c5475a85b37693999f8c792dad0f8c6734b1de + md5: dbcace4706afdfb7eb891f7b37d07c04 + license: LicenseRef-Public-Domain + size: 122921 + timestamp: 1737119101255 - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libice-1.1.2-hb9d3cd8_0.conda sha256: c12396aabb21244c212e488bbdc4abcdef0b7404b15761d9329f5a4a39113c4b md5: fb901ff28063514abb6046c9ec2c4a45 @@ -9265,17 +4680,6 @@ packages: license_family: MIT size: 15873 timestamp: 1734230458294 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxau-1.0.12-h5505292_0.conda - sha256: f33e6f013fc36ebc200f09ddead83468544cb5c353a3b50499b07b8c34e28a8d - md5: 50901e0764b7701d8ed7343496f4f301 - depends: - - __osx >=11.0 - arch: arm64 - platform: osx - license: MIT - license_family: MIT - size: 13593 - timestamp: 1734229104321 - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb9d3cd8_0.conda sha256: 6b250f3e59db07c2514057944a3ea2044d6a8cdde8a47b6497c254520fade1ee md5: 8035c64cb77ed555e3f150b7b3972480 @@ -9299,17 +4703,6 @@ packages: license_family: MIT size: 20615 timestamp: 1727796660574 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxdmcp-1.1.5-hd74edd7_0.conda - sha256: 9939a166d780700d81023546759102b33fdc2c5f11ef09f5f66c77210fd334c8 - md5: 77c447f48cab5d3a15ac224edb86a968 - depends: - - __osx >=11.0 - arch: arm64 - platform: osx - license: MIT - license_family: MIT - size: 18487 - timestamp: 1727795205022 - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxext-1.3.6-hb9d3cd8_0.conda sha256: da5dc921c017c05f38a38bd75245017463104457b63a1ce633ed41f214159c14 md5: febbab7d15033c913d53c7a2c102309d @@ -9385,119 +4778,6 @@ packages: license_family: MIT size: 33649 timestamp: 1734229123157 -- conda: https://conda.anaconda.org/conda-forge/linux-64/xxhash-0.8.2-hd590300_0.conda - sha256: 6fe74a8fd84ab0dc25e4dc3e0c22388dd8accb212897a208b14fe5d4fbb8fc2f - md5: f08fb5c89edfc4aadee1c81d4cfb1fa1 - depends: - - libgcc-ng >=12 - arch: x86_64 - platform: linux - license: BSD-2-Clause - license_family: BSD - size: 97691 - timestamp: 1689951608120 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xxhash-0.8.2-h31becfc_0.conda - sha256: 4c526aed70b579d80e5c20d32130b6bc8bde59b3250d43c2b5269755f4da8a9b - md5: bb9faf6857108a9f62ebb4dab6ef05da - depends: - - libgcc-ng >=12 - arch: aarch64 - platform: linux - license: BSD-2-Clause - license_family: BSD - size: 102442 - timestamp: 1689951682147 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/xxhash-0.8.2-hb547adb_0.conda - sha256: a70f59f7221ee72c45b39a6b36a33eb9c717ba01921cce1a3c361a4676979a2e - md5: 144cd3b88706507f332f5eb5fb83a33b - arch: arm64 - platform: osx - license: BSD-2-Clause - license_family: BSD - size: 97593 - timestamp: 1689951969732 -- conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 - sha256: a4e34c710eeb26945bdbdaba82d3d74f60a78f54a874ec10d373811a5d217535 - md5: 4cb3ad778ec2d5a7acbdf254eb1c42ae - depends: - - libgcc-ng >=9.4.0 - arch: x86_64 - platform: linux - license: MIT - license_family: MIT - size: 89141 - timestamp: 1641346969816 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yaml-0.2.5-hf897c2e_2.tar.bz2 - sha256: 8bc601d6dbe249eba44b3c456765265cd8f42ef1e778f8df9b0c9c88b8558d7e - md5: b853307650cb226731f653aa623936a4 - depends: - - libgcc-ng >=9.4.0 - arch: aarch64 - platform: linux - license: MIT - license_family: MIT - size: 92927 - timestamp: 1641347626613 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 - sha256: 93181a04ba8cfecfdfb162fc958436d868cc37db504c58078eab4c1a3e57fbb7 - md5: 4bb3f014845110883a3c5ee811fd84b4 - arch: arm64 - platform: osx - license: MIT - license_family: MIT - size: 88016 - timestamp: 1641347076660 -- conda: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.18.3-py312h178313f_1.conda - sha256: 6b054c93dd19fd7544af51b41a8eacca2ab62271f6c0c5a2a0cffe80dc37a0ce - md5: 6822c49f294d4355f19d314b8b6063d8 - depends: - - __glibc >=2.17,<3.0.a0 - - idna >=2.0 - - libgcc >=13 - - multidict >=4.0 - - propcache >=0.2.1 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 152305 - timestamp: 1737575898300 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.18.3-py312hcc812fe_1.conda - sha256: bfa211c0dd5dbb308788f055277dc428b7923ceb2de6a22ea98bc17cf306f9f5 - md5: d14c78abdd6109e2b7162f53b6cc1e77 - depends: - - idna >=2.0 - - libgcc >=13 - - multidict >=4.0 - - propcache >=0.2.1 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 149654 - timestamp: 1737576065314 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.18.3-py312h998013c_1.conda - sha256: 48821d23567ca0f853eee6f7812c74392867e123798b5b3c44f58758d8eb580e - md5: 092d3b40acc67c470f379049be343a7a - depends: - - __osx >=11.0 - - idna >=2.0 - - multidict >=4.0 - - propcache >=0.2.1 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: Apache - size: 145543 - timestamp: 1737576074753 - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda sha256: a4dc72c96848f764bb5a5176aa93dd1e9b9e52804137b99daeebba277b31ea10 md5: 3947a35e916fcc6b9825449affbf4214 @@ -9550,94 +4830,6 @@ packages: license_family: MIT size: 21809 timestamp: 1732827613585 -- conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.1-hb9d3cd8_2.conda - sha256: 5d7c0e5f0005f74112a34a7425179f4eb6e73c92f5d109e6af4ddeca407c92ab - md5: c9f075ab2f33b3bbee9e62d4ad0a6cd8 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libzlib 1.3.1 hb9d3cd8_2 - arch: x86_64 - platform: linux - license: Zlib - license_family: Other - size: 92286 - timestamp: 1727963153079 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zlib-1.3.1-h86ecc28_2.conda - sha256: b4f649aa3ecdae384d5dad7074e198bff120edd3dfb816588e31738fc6d627b1 - md5: bc230abb5d21b63ff4799b0e75204783 - depends: - - libgcc >=13 - - libzlib 1.3.1 h86ecc28_2 - arch: aarch64 - platform: linux - license: Zlib - license_family: Other - size: 95582 - timestamp: 1727963203597 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zlib-1.3.1-h8359307_2.conda - sha256: 58f8860756680a4831c1bf4f294e2354d187f2e999791d53b1941834c4b37430 - md5: e3170d898ca6cb48f1bb567afb92f775 - depends: - - __osx >=11.0 - - libzlib 1.3.1 h8359307_2 - arch: arm64 - platform: osx - license: Zlib - license_family: Other - size: 77606 - timestamp: 1727963209370 -- conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312hef9b889_1.conda - sha256: b97015e146437283f2213ff0e95abdc8e2480150634d81fbae6b96ee09f5e50b - md5: 8b7069e9792ee4e5b4919a7a306d2e67 - depends: - - __glibc >=2.17,<3.0.a0 - - cffi >=1.11 - - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - - zstd >=1.5.6,<1.5.7.0a0 - - zstd >=1.5.6,<1.6.0a0 - arch: x86_64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 419552 - timestamp: 1725305670210 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstandard-0.23.0-py312hb698573_1.conda - sha256: 2681c2a249752bdc7978e59ee2f34fcdfcbfda80029b84b8e5fec8dbc9e3af25 - md5: ffcb8e97e62af42075e0e5f46bb9856e - depends: - - cffi >=1.11 - - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - - zstd >=1.5.6,<1.5.7.0a0 - - zstd >=1.5.6,<1.6.0a0 - arch: aarch64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 392496 - timestamp: 1725305808244 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py312h15fbf35_1.conda - sha256: d00ca25c1e28fd31199b26a94f8c96574475704a825d244d7a6351ad3745eeeb - md5: a4cde595509a7ad9c13b1a3809bcfe51 - depends: - - __osx >=11.0 - - cffi >=1.11 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - - zstd >=1.5.6,<1.5.7.0a0 - - zstd >=1.5.6,<1.6.0a0 - arch: arm64 - platform: osx - license: BSD-3-Clause - license_family: BSD - size: 330788 - timestamp: 1725305806565 - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda sha256: c558b9cc01d9c1444031bd1ce4b9cff86f9085765f17627a6cd85fc623c8a02b md5: 4d056880988120e29d75bfff282e0f45 diff --git a/examples/magic.lock b/examples/magic.lock index 74137e0fa7..173b078307 100644 --- a/examples/magic.lock +++ b/examples/magic.lock @@ -8,90 +8,20 @@ environments: linux-64: - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.12-py311h2dc5d0c_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.8.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.1.0-pyh71513ae_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.1-h205f482_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.1-h1a47875_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.10.6-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.3.0-h4e1184b_5.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.0-h7959bf6_11.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.2-hefd7a92_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-h173a860_6.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h11f4f37_12.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.9-he1b24dc_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.2-h4e1184b_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-h4e1184b_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.9-he0e7f3f_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.489-h4d475cb_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.10.0-h113e628_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.13.0-h3cf044e_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-common-cpp-12.8.0-h736e048_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-files-datalake-cpp-12.12.0-ha633028_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/backoff-2.2.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py311hfdbb021_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.4-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2025.1.31-hbcca054_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.12.14-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py311hf29c0ef_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.18-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda - - 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.8-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.17.0-pyhd8ed1ab_0.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-py311h2dc5d0c_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2025.2.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/gflags-2.2.2-h5888daf_1005.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/glog-0.7.1-hbabe93e_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/httptools-0.6.4-py311h9ecbd09_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.28.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.16-hb7c19ff_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-19.0.0-h00a82cf_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-19.0.0-hcb10f89_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-19.0.0-hcb10f89_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-19.0.0-h08228c5_8_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-28_h59b9bed_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hb9d3cd8_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hb9d3cd8_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.1.0-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-28_he106b2a_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libcrc32c-1.1.2-h9c3ff4c_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.11.1-h332b0f4_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.23-h4ddbbb0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libevent-2.1.12-hf998b51_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.2-h7f98852_5.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h77fa898_1.conda @@ -99,222 +29,64 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hd5240d6_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h77fa898_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.34.0-h2b5623c_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.34.0-h0121fbd_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.67.1-h25350d4_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-hd590300_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-28_h7ac8fdf_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.28-pthreads_h94d23a6_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-1.18.0-hfcad708_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-headers-1.18.0-ha770c72_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-19.0.0-h081d1f1_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.46-h943b412_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsentencepiece-0.2.0-h8e10757_10.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.48.0-hee588c1_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hf672d98_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-hc0a3c3a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libthrift-0.21.0-h0e7cc3e_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hd9ff511_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.10.0-h4c51ac1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.50.0-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.5.0-h851e524_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.5-h0d44e9d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - - 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-25.1.0.dev2025020605-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025020605-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025020605-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020605-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-25.1.0.dev2025020605-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.modular.com/max-nightly/noarch/max-25.1.0.dev2025020700-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025020700-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025020700-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020700-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020700-release.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-h2d0b736_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/nlohmann_json-3.11.3-he02047a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py311h64a7726_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.3-h5fbd93e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.0-h7b32b05_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.29.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.29.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.29.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-prometheus-1.12.0rc1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.29.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.29.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.50b0-pyh3cfb1c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/orc-2.0.3-h12ee42a_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.3-py311h7db5c69_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-11.1.0-py311h1322bbf_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/prometheus-cpp-1.3.0-ha5d0236_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.1-py311h2dc5d0c_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/protobuf-5.28.3-py311hfdbb021_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-19.0.0-py311h38be061_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-19.0.0-py311h4854187_0_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.6-pyh3cfb1c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.27.2-py311h9e33e62_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.7.1-pyh3cfb1c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pyinstrument-5.0.1-py311h9ecbd09_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.11.11-h9e4cc4f_1_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.20-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/python-xxhash-3.5.0-py311h9ecbd09_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.11-5_cp311.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py311h2dc5d0c_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.1-py311h7deb3e3_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/re2-2024.07.02-h9925aae_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda - - 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.11-h072c03f_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/safetensors-0.5.2-py311h9e33e62_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-0.2.0-h074ec65_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-python-0.2.0-py311hf886319_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-spm-0.2.0-h8e10757_10.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-h8bd8927_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.2.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.45.3-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.21.0-py311h182c674_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py311h9ecbd09_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.48.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.34.0-pyh31011fe_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.34.0-h31011fe_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/uvloop-0.21.0-py311h9ecbd09_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/watchfiles-1.0.4-py311h9e33e62_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/websockets-14.2-py311h9ecbd09_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.17.2-py311h9ecbd09_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xxhash-0.8.2-hd590300_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.18.3-py311h2dc5d0c_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.1-hb9d3cd8_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py311hbc35293_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda linux-aarch64: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.12-py311h58d527c_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.8.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.1.0-pyh71513ae_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.1-hb7ec8d5_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.1-h740c5af_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-common-0.10.6-h86ecc28_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-compression-0.3.0-h0f0193d_5.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-event-stream-0.5.0-hcbd8f92_11.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.2-h3df160d_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-hfd5ba81_6.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h5f50e26_12.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.9-h05b070f_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.2-h0f0193d_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h0f0193d_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.9-hab3ce66_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.489-h88461e4_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-core-cpp-1.14.0-h1887c18_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-identity-cpp-1.10.0-h47b0b28_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-blobs-cpp-12.13.0-h185ecfd_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-common-cpp-12.8.0-h1b94036_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-files-datalake-cpp-12.12.0-h37d6d07_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/backoff-2.2.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/brotli-python-1.1.0-py311h89d996e_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h68df207_7.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/c-ares-1.34.4-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2025.1.31-hcefe29a_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.12.14-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cffi-1.17.1-py311h14e8bb7_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.18-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda - - 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.8-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.17.0-pyhd8ed1ab_0.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-py311h58d527c_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2025.2.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gflags-2.2.2-h5ad3122_1005.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/glog-0.7.1-h468a4a4_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/httptools-0.6.4-py311ha879c10_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.28.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/keyutils-1.6.1-h4e544f5_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/krb5-1.21.3-h50a48e9_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lcms2-2.16-h922389a_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.0.0-h4de3ea5_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h18dbdb1_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-19.0.0-h03ebaaf_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-19.0.0-h3b568fd_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-19.0.0-h3b568fd_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-19.0.0-h1e9d426_8_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-28_h1a9f1db_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlicommon-1.1.0-h86ecc28_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlidec-1.1.0-h86ecc28_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlienc-1.1.0-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-28_hab92f65_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcrc32c-1.1.2-h01db608_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcurl-8.11.1-h6702fde_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libdeflate-1.23-h5e3c512_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20250104-pl5321h976ea20_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libev-4.33-h31becfc_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libevent-2.1.12-h4ba1bb4_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.6.4-h5ad3122_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.4.2-h3557bc0_5.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-14.2.0-he277a41_1.conda @@ -322,348 +94,104 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-2.34.0-hccf9d24_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-storage-2.34.0-hb9b2b65_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgrpc-1.67.1-hf7ccdd3_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libiconv-1.17-h31becfc_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libjpeg-turbo-3.0.0-h31becfc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-28_h411afd4_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.4-h86ecc28_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnghttp2-1.64.0-hc8609a4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.28-pthreads_h9d3fd7e_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopentelemetry-cpp-1.18.0-h60b47f9_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopentelemetry-cpp-headers-1.18.0-h8af1aa0_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-19.0.0-hfc78867_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.46-hec79eb8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.3-h44a3b7b_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsentencepiece-0.2.0-h6164ad9_10.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.20-h68df207_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.48.0-h5eb1b54_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libssh2-1.11.1-ha41c0db_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libthrift-0.21.0-h154c74f_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.0-h88f7998_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.10.0-ha346350_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuv-1.50.0-h86ecc28_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libwebp-base-1.5.0-h0886dbf_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcb-1.17.0-h262b8f6_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.5-h2e0c361_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - - 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-25.1.0.dev2025020605-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025020605-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025020605-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020605-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-25.1.0.dev2025020605-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.modular.com/max-nightly/noarch/max-25.1.0.dev2025020700-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025020700-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025020700-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020700-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020700-release.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-ha32ae93_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/nlohmann_json-3.11.3-h0a1ffab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py311h69ead2a_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openjpeg-2.5.3-h3f56577_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.0-hd08dc88_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.29.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.29.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.29.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-prometheus-1.12.0rc1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.29.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.29.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.50b0-pyh3cfb1c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/orc-2.0.3-hdd485aa_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pandas-2.2.3-py311h848c333_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pillow-11.1.0-py311ha4eaa5e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/prometheus-cpp-1.3.0-h7938499_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.2.1-py311h58d527c_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/protobuf-5.28.3-py311h89d996e_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pthread-stubs-0.4-h86ecc28_1002.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-19.0.0-py311hfecb2dc_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-19.0.0-py311ha6d2531_0_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.6-pyh3cfb1c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pydantic-core-2.27.2-py311h0ca61a2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.7.1-pyh3cfb1c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyinstrument-5.0.1-py311ha879c10_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.11.11-h1683364_1_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.20-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-xxhash-3.5.0-py311h5487e9b_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.11-5_cp311.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyyaml-6.0.2-py311h58d527c_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyzmq-26.2.1-py311h826da9f_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/re2-2024.07.02-haa97905_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8fc344f_1.conda - - 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.11-h3caee7a_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/safetensors-0.5.2-py311h0ca61a2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-0.2.0-h7028846_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-python-0.2.0-py311h5c441b1_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-spm-0.2.0-h6164ad9_10.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-hd4fb6f5_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.2.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.45.3-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.21.0-py311h5e37e04_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py311h5487e9b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.48.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.34.0-pyh31011fe_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.34.0-h31011fe_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/uvloop-0.21.0-py311ha879c10_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/watchfiles-1.0.4-py311h0ca61a2_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/websockets-14.2-py311ha879c10_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/wrapt-1.17.2-py311ha879c10_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxau-1.0.12-h86ecc28_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxdmcp-1.1.5-h57736b2_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xxhash-0.8.2-h31becfc_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yaml-0.2.5-hf897c2e_2.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.18.3-py311h58d527c_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zeromq-4.3.5-h5efb499_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zlib-1.3.1-h86ecc28_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstandard-0.23.0-py311hd5293d8_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.6-h02f22dd_0.conda osx-arm64: - - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.12-py311h4921393_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.8.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.1.0-pyh71513ae_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.1-hfc2798a_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.1-hc8a0bd2_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.10.6-h5505292_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-compression-0.3.0-hc8a0bd2_5.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.0-h54f970a_11.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.2-h96aa502_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-haba67d1_6.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h24f418c_12.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.9-hf37e03c_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.2-hc8a0bd2_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-hc8a0bd2_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.9-ha81f72f_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.489-h0e5014b_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.14.0-hd50102c_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.10.0-hc602bab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-blobs-cpp-12.13.0-h7585a09_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-common-cpp-12.8.0-h9ca1f76_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-files-datalake-cpp-12.12.0-hcdd55da_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/backoff-2.2.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py311h3f08180_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.4-h5505292_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2025.1.31-hf0a4a13_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.12.14-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.1-py311h3a79f62_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.18-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda - - 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.8-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.17.0-pyhd8ed1ab_0.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-py311h4921393_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2025.2.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gflags-2.2.2-hf9b8971_1005.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/glog-0.7.1-heb240a5_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/httptools-0.6.4-py311h917b07b_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.28.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.16-ha0e7c42_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_h07bc746_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-19.0.0-h819e3af_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-19.0.0-hf07054f_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-19.0.0-hf07054f_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-19.0.0-h4239455_8_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-28_h10e41b3_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.1.0-hd74edd7_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.1.0-hd74edd7_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlienc-1.1.0-hd74edd7_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-28_hb3479ef_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcrc32c-1.1.2-hbdafb3b_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.11.1-h73640d1_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.23-hec38601_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libev-4.33-h93a5062_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libevent-2.1.12-h2757513_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.4-h286801f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-2.34.0-hdbe95d5_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-storage-2.34.0-h7081f7f_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgrpc-1.67.1-h0a426d6_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.17-h0d3ecfb_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.0.0-hb547adb_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-28_hc9a63f6_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.4-h39f12f2_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.64.0-h6d7220d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.28-openmp_hf332438_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopentelemetry-cpp-1.18.0-h0c05b2d_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopentelemetry-cpp-headers-1.18.0-hce30654_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-19.0.0-h636d7b7_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.46-h3783ad8_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.3-h3bd63a1_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h07bc746_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsentencepiece-0.2.0-he13a0af_10.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.48.0-h3f77e49_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.1-h9cc3647_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libthrift-0.21.0-h64651cc_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-h551f018_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.10.0-hda25de7_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libuv-1.50.0-h5505292_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.5.0-h2471fea_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxcb-1.17.0-hdb1d25a_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.5-h178c5d8_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda - - 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-25.1.0.dev2025020605-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025020605-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025020605-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020605-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-25.1.0.dev2025020605-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.modular.com/max-nightly/noarch/max-25.1.0.dev2025020700-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025020700-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025020700-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020700-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020700-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/nlohmann_json-3.11.3-h00cdb27_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py311h7125741_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openjpeg-2.5.3-h8a3d83b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.0-h81ee809_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.29.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.29.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.29.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-prometheus-1.12.0rc1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.29.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.29.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.50b0-pyh3cfb1c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/orc-2.0.3-h0ff2369_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.3-py311h9cb3ce9_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-11.1.0-py311hb9ba9e9_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/prometheus-cpp-1.3.0-h0967b3e_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.1-py311h4921393_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/protobuf-5.28.3-py311h155a34a_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pthread-stubs-0.4-hd74edd7_1002.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-19.0.0-py311ha1ab1f8_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-19.0.0-py311he04fa90_0_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.6-pyh3cfb1c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.27.2-py311h3ff9189_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.7.1-pyh3cfb1c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyinstrument-5.0.1-py311h917b07b_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.11.11-hc22306f_1_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.20-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-xxhash-3.5.0-py311h460d6c5_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.11-5_cp311.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py311h4921393_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.1-py311h01f2145_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/re2-2024.07.02-h6589ca4_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h92ec313_1.conda - - 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.5.2-py311h3ff9189_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-0.2.0-hf736513_10.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-python-0.2.0-py311hb1a73f2_10.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-spm-0.2.0-he13a0af_10.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-h98b9ce2_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.2.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.45.3-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.21.0-py311h82b0fb8_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py311h917b07b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.48.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.34.0-pyh31011fe_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.34.0-h31011fe_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/uvloop-0.21.0-py311hae2e1ce_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/watchfiles-1.0.4-py311h3ff9189_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/websockets-14.2-py311h917b07b_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/wrapt-1.17.2-py311h917b07b_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxau-1.0.12-h5505292_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxdmcp-1.1.5-hd74edd7_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xxhash-0.8.2-hb547adb_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.18.3-py311h4921393_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zlib-1.3.1-h8359307_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py311ha60cc69_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.6-hb46c0d2_0.conda packages: - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 sha256: fe51de6107f9edc7aa4f786a70f4a883943bc9d39b3bb7307c04c41410990726 @@ -702,6621 +230,1859 @@ packages: license_family: BSD size: 23712 timestamp: 1650670790230 -- conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_1.conda - sha256: 95d4713e49ea92ae50cf42393683ede706b7875af5f7cb14c253438180afa732 - md5: 296b403617bafa89df4971567af79013 - depends: - - python >=3.9 - license: PSF-2.0 - license_family: PSF - size: 19351 - timestamp: 1733332029649 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.12-py311h2dc5d0c_0.conda - sha256: c067eb2bd14e6b093e53ea7196a2ccbad77dccbb9e34bef5e5afe83fdae23ad6 - md5: 42ebc5f3f372926eea5ed4871b3d4c61 +- conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda + sha256: 5ced96500d945fb286c9c838e54fa759aa04a7129c59800f0846b4335cee770d + md5: 62ee74e96c5ebb0af99386de58cf9553 depends: - __glibc >=2.17,<3.0.a0 - - aiohappyeyeballs >=2.3.0 - - aiosignal >=1.1.2 - - attrs >=17.3.0 - - frozenlist >=1.1.1 - - libgcc >=13 - - multidict >=4.5,<7.0 - - propcache >=0.2.0 - - python >=3.11,<3.12.0a0 - - python_abi 3.11.* *_cp311 - - yarl >=1.17.0,<2.0 + - libgcc-ng >=12 arch: x86_64 platform: linux - license: MIT AND Apache-2.0 - license_family: Apache - size: 926040 - timestamp: 1738824347720 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.12-py311h58d527c_0.conda - sha256: 8f8ce8eb087fde132f176fe8eb81efb9f9553e8a6c5dd4f728b683cd6a2d93b6 - md5: 8e389dbe375b30fa7fba7dd1ad1b5976 - depends: - - aiohappyeyeballs >=2.3.0 - - aiosignal >=1.1.2 - - attrs >=17.3.0 - - frozenlist >=1.1.1 - - libgcc >=13 - - multidict >=4.5,<7.0 - - propcache >=0.2.0 - - python >=3.11,<3.12.0a0 - - python >=3.11,<3.12.0a0 *_cpython - - python_abi 3.11.* *_cp311 - - yarl >=1.17.0,<2.0 + license: bzip2-1.0.6 + license_family: BSD + size: 252783 + timestamp: 1720974456583 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h68df207_7.conda + sha256: 2258b0b33e1cb3a9852d47557984abb6e7ea58e3d7f92706ec1f8e879290c4cb + md5: 56398c28220513b9ea13d7b450acfb20 + depends: + - libgcc-ng >=12 arch: aarch64 platform: linux - license: MIT AND Apache-2.0 - license_family: Apache - size: 915118 - timestamp: 1738823356948 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.12-py311h4921393_0.conda - sha256: 8168d5859c28ec55c5c555975020a6509950aa9f3c92a35076e18ea31e416da6 - md5: bac8306af4a2368a82c4440286c185ca + license: bzip2-1.0.6 + license_family: BSD + size: 189884 + timestamp: 1720974504976 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda + sha256: adfa71f158cbd872a36394c56c3568e6034aa55c623634b37a4836bd036e6b91 + md5: fc6948412dbbbe9a4c9ddbbcfe0a79ab depends: - __osx >=11.0 - - aiohappyeyeballs >=2.3.0 - - aiosignal >=1.1.2 - - attrs >=17.3.0 - - frozenlist >=1.1.1 - - multidict >=4.5,<7.0 - - propcache >=0.2.0 - - python >=3.11,<3.12.0a0 - - python >=3.11,<3.12.0a0 *_cpython - - python_abi 3.11.* *_cp311 - - yarl >=1.17.0,<2.0 arch: arm64 platform: osx - license: MIT AND Apache-2.0 - license_family: Apache - size: 888949 - timestamp: 1738823298947 -- conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda - sha256: 7de8ced1918bbdadecf8e1c1c68237fe5709c097bd9e0d254f4cad118f4345d0 - md5: 1a3981115a398535dbe3f6d5faae3d36 + license: bzip2-1.0.6 + license_family: BSD + size: 122909 + timestamp: 1720974522888 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2025.1.31-hbcca054_0.conda + sha256: bf832198976d559ab44d6cdb315642655547e26d826e34da67cbee6624cda189 + md5: 19f3a56f68d2fd06c516076bff482c52 + arch: x86_64 + platform: linux + license: ISC + size: 158144 + timestamp: 1738298224464 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2025.1.31-hcefe29a_0.conda + sha256: 66c6408ee461593cfdb2d78d82e6ed74d04a04ccb51df3ef8a5f35148c9c6eec + md5: 462cb166cd2e26a396f856510a3aff67 + arch: aarch64 + platform: linux + license: ISC + size: 158290 + timestamp: 1738299057652 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2025.1.31-hf0a4a13_0.conda + sha256: 7e12816618173fe70f5c638b72adf4bfd4ddabf27794369bb17871c5bb75b9f9 + md5: 3569d6a9141adc64d2fe4797f3289e06 + arch: arm64 + platform: osx + license: ISC + size: 158425 + timestamp: 1738298167688 +- conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda + sha256: c920d23cd1fcf565031c679adb62d848af60d6fbb0edc2d50ba475cea4f0d8ab + md5: f22f4d4970e09d68a10b922cbb0408d3 depends: - - frozenlist >=1.1.0 + - __unix - python >=3.9 - license: Apache-2.0 - license_family: APACHE - size: 13229 - timestamp: 1734342253061 -- conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - sha256: e0ea1ba78fbb64f17062601edda82097fcf815012cf52bb704150a2668110d48 - md5: 2934f256a8acfe48f6ebb4fce6cde29c + license: BSD-3-Clause + license_family: BSD + size: 84705 + timestamp: 1734858922844 +- conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + sha256: ab29d57dc70786c1269633ba3dff20288b81664d3ff8d21af995742e2bb03287 + md5: 962b9857ee8e7018c22f2776ffa0b2d7 depends: - python >=3.9 - - typing-extensions >=4.0.0 - license: MIT - license_family: MIT - size: 18074 - timestamp: 1733247158254 -- conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.8.0-pyhd8ed1ab_0.conda - sha256: f1455d2953e3eb6d71bc49881c8558d8e01888469dfd21061dd48afb6183e836 - md5: 848d25bfbadf020ee4d4ba90e5668252 - depends: - - exceptiongroup >=1.0.2 - - idna >=2.8 + license: BSD-3-Clause + license_family: BSD + size: 27011 + timestamp: 1733218222191 +- conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + sha256: 598951ebdb23e25e4cec4bbff0ae369cec65ead80b50bc08b441d8e54de5cf03 + md5: f4b39bf00c69f56ac01e020ebfac066c + depends: - python >=3.9 - - sniffio >=1.1 - - typing_extensions >=4.5 - constrains: - - trio >=0.26.1 - - uvloop >=0.21 - license: MIT - license_family: MIT - size: 115305 - timestamp: 1736174485476 -- conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.1.0-pyh71513ae_0.conda - sha256: 1f267886522dfb9ae4e5ebbc3135b5eb13cff27bdbfe8d881a4d893459166ab4 - md5: 2cc3f588512f04f3a0c64b4e9bedc02d + - zipp >=0.5 + license: Apache-2.0 + license_family: APACHE + size: 29141 + timestamp: 1737420302391 +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + sha256: 19d8bd5bb2fde910ec59e081eeb59529491995ce0d653a5209366611023a0b3a + md5: 4ebae00eae9705b0c3d6d1018a81d047 depends: + - importlib-metadata >=4.8.3 + - jupyter_core >=4.12,!=5.0.* - python >=3.9 - license: MIT - license_family: MIT - size: 56370 - timestamp: 1737819298139 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.1-h205f482_0.conda - sha256: ebe5e33249f37f6bb481de99581ebdc92dbfcf1b6915609bcf3c9e78661d6352 - md5: 9c500858e88df50af3cc883d194de78a + - python-dateutil >=2.8.2 + - pyzmq >=23.0 + - tornado >=6.2 + - traitlets >=5.3 + license: BSD-3-Clause + license_family: BSD + size: 106342 + timestamp: 1733441040958 +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + sha256: 732b1e8536bc22a5a174baa79842d79db2f4956d90293dd82dc1b3f6099bcccd + md5: 0a2980dada0dd7fd0998f0342308b1b1 depends: - - __glibc >=2.17,<3.0.a0 - - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - aws-c-http >=0.9.2,<0.9.3.0a0 - - aws-c-io >=0.15.3,<0.15.4.0a0 - - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 - - libgcc >=13 + - __unix + - platformdirs >=2.5 + - python >=3.8 + - traitlets >=5.3 + license: BSD-3-Clause + license_family: BSD + size: 57671 + timestamp: 1727163547058 +- conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 + sha256: 150c05a6e538610ca7c43beb3a40d65c90537497a4f6a5f4d15ec0451b6f5ebb + md5: 30186d27e2c9fa62b45fb1476b7200e3 + depends: + - libgcc-ng >=10.3.0 arch: x86_64 platform: linux - license: Apache-2.0 - license_family: Apache - size: 108111 - timestamp: 1737509831651 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.1-hb7ec8d5_0.conda - sha256: e1e6c9267a4d9af30b1d28c11a9041b17b7840ff83ef08614145a2a4f444f5b4 - md5: 2630f030652970a5531e492f6b2a6dd3 - depends: - - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - aws-c-http >=0.9.2,<0.9.3.0a0 - - aws-c-io >=0.15.3,<0.15.4.0a0 - - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 - - libgcc >=13 + license: LGPL-2.1-or-later + size: 117831 + timestamp: 1646151697040 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/keyutils-1.6.1-h4e544f5_0.tar.bz2 + sha256: 6d4233d97a9b38acbb26e1268bcf8c10a8e79c2aed7e5a385ec3769967e3e65b + md5: 1f24853e59c68892452ef94ddd8afd4b + depends: + - libgcc-ng >=10.3.0 arch: aarch64 platform: linux - license: Apache-2.0 - license_family: Apache - size: 112658 - timestamp: 1737509863269 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.1-hfc2798a_0.conda - sha256: 5a60d196a585b25d1446fb973009e4e648e8d70beaa2793787243ede6da0fd9a - md5: 0abd67c0f7b60d50348fbb32fef50b65 - depends: - - __osx >=11.0 - - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - aws-c-http >=0.9.2,<0.9.3.0a0 - - aws-c-io >=0.15.3,<0.15.4.0a0 - - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: Apache - size: 92562 - timestamp: 1737509877079 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.1-h1a47875_3.conda - sha256: 095ac824ea9303eff67e04090ae531d9eb33d2bf8f82eaade39b839c421e16e8 - md5: 55a8561fdbbbd34f50f57d9be12ed084 + license: LGPL-2.1-or-later + size: 112327 + timestamp: 1646166857935 +- conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda + sha256: 99df692f7a8a5c27cd14b5fb1374ee55e756631b9c3d659ed3ee60830249b238 + md5: 3f43953b7d3fb3aaa1d0d0723d91e368 depends: - - __glibc >=2.17,<3.0.a0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - libgcc >=13 + - keyutils >=1.6.1,<2.0a0 + - libedit >=3.1.20191231,<3.2.0a0 + - libedit >=3.1.20191231,<4.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 - openssl >=3.3.1,<4.0a0 arch: x86_64 platform: linux - license: Apache-2.0 - license_family: Apache - size: 47601 - timestamp: 1733991564405 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.1-h740c5af_3.conda - sha256: c5c7961d48ca7320ed3560c036f7aa5244df4b85d9657f70aacc5faba3e1509a - md5: 57ed2c445d7ef01d121b9bcea0522913 + license: MIT + license_family: MIT + size: 1370023 + timestamp: 1719463201255 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/krb5-1.21.3-h50a48e9_0.conda + sha256: 0ec272afcf7ea7fbf007e07a3b4678384b7da4047348107b2ae02630a570a815 + md5: 29c10432a2ca1472b53f299ffb2ffa37 depends: - - aws-c-common >=0.10.6,<0.10.7.0a0 - - libgcc >=13 + - keyutils >=1.6.1,<2.0a0 + - libedit >=3.1.20191231,<3.2.0a0 + - libedit >=3.1.20191231,<4.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 - openssl >=3.3.1,<4.0a0 arch: aarch64 platform: linux - license: Apache-2.0 - license_family: Apache - size: 50036 - timestamp: 1733991581303 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.1-hc8a0bd2_3.conda - sha256: 1f44be36e1daa17b4b081debb8aee492d13571084f38b503ad13e869fef24fe4 - md5: 8b0ce61384e5a33d2b301a64f3d22ac5 + license: MIT + license_family: MIT + size: 1474620 + timestamp: 1719463205834 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda + sha256: 4442f957c3c77d69d9da3521268cad5d54c9033f1a73f99cde0a3658937b159b + md5: c6dc8a0fdec13a0565936655c33069a1 depends: - __osx >=11.0 - - aws-c-common >=0.10.6,<0.10.7.0a0 + - libcxx >=16 + - libedit >=3.1.20191231,<3.2.0a0 + - libedit >=3.1.20191231,<4.0a0 - openssl >=3.3.1,<4.0a0 arch: arm64 platform: osx - license: Apache-2.0 - license_family: Apache - size: 39925 - timestamp: 1733991649383 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.10.6-hb9d3cd8_0.conda - sha256: 496e92f2150fdc351eacf6e236015deedb3d0d3114f8e5954341cbf9f3dda257 - md5: d7d4680337a14001b0e043e96529409b + license: MIT + license_family: MIT + size: 1155530 + timestamp: 1719463474401 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_2.conda + sha256: 7c91cea91b13f4314d125d1bedb9d03a29ebbd5080ccdea70260363424646dbe + md5: 048b02e3962f066da18efe3a21b77672 depends: - __glibc >=2.17,<3.0.a0 - - libgcc >=13 + constrains: + - binutils_impl_linux-64 2.43 arch: x86_64 platform: linux - license: Apache-2.0 - license_family: Apache - size: 236574 - timestamp: 1733975453350 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-common-0.10.6-h86ecc28_0.conda - sha256: 57288ec5df35781bea8fc6a8c9099cad6695b747784fc1b8862a0f9e5b3bf5ab - md5: fef806a0f6de853670c746bbece01966 - depends: - - libgcc >=13 + license: GPL-3.0-only + license_family: GPL + size: 669211 + timestamp: 1729655358674 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_2.conda + sha256: 80ec7e8f006196808fac5bd4b3773a652847f97bbf08044cd87731424ac64f8b + md5: fcbde5ea19d55468953bf588770c0501 + constrains: + - binutils_impl_linux-aarch64 2.43 arch: aarch64 platform: linux - license: Apache-2.0 - license_family: Apache - size: 259031 - timestamp: 1733975520465 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.10.6-h5505292_0.conda - sha256: 3bde135c8e74987c0f79ecd4fa17ec9cff0d658b3090168727ca1af3815ae57a - md5: 145e5b4c9702ed279d7d68aaf096f77d - depends: - - __osx >=11.0 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: Apache - size: 221863 - timestamp: 1733975576886 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.3.0-h4e1184b_5.conda - sha256: 62ca84da83585e7814a40240a1e750b1563b2680b032a471464eccc001c3309b - md5: 3f4c1197462a6df2be6dc8241828fe93 + license: GPL-3.0-only + license_family: GPL + size: 698245 + timestamp: 1729655345825 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda + sha256: 143a586aa67d50622ef703de57b9d43f44945836d6568e0e7aa174bd8c45e0d4 + md5: 488f260ccda0afaf08acb286db439c2f depends: - __glibc >=2.17,<3.0.a0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - libgcc >=13 + - libstdcxx >=13 + constrains: + - libabseil-static =20240722.0=cxx17* + - abseil-cpp =20240722.0 arch: x86_64 platform: linux license: Apache-2.0 license_family: Apache - size: 19086 - timestamp: 1733991637424 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-compression-0.3.0-h0f0193d_5.conda - sha256: 3f05d19f68ef800f33d44ea2a4211003124076516c8469abc7d432236344df53 - md5: 3a1421d12435df5b4c412cc4c8fac64d + size: 1311599 + timestamp: 1736008414161 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h18dbdb1_4.conda + sha256: bb6c5fb3b8de5f90735c5252b57efb3c268ee222c755569dac18065f05147670 + md5: 633b9fe454ffea2aaf29e191d946a83b depends: - - aws-c-common >=0.10.6,<0.10.7.0a0 - libgcc >=13 + - libstdcxx >=13 + constrains: + - abseil-cpp =20240722.0 + - libabseil-static =20240722.0=cxx17* arch: aarch64 platform: linux license: Apache-2.0 license_family: Apache - size: 19740 - timestamp: 1733991625201 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-compression-0.3.0-hc8a0bd2_5.conda - sha256: 47b2813f652ce7e64ac442f771b2a5f7d4af4ad0d07ff51f6075ea80ed2e3f09 - md5: a8b6c17732d14ed49d0e9b59c43186bc + size: 1334844 + timestamp: 1736008472455 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_h07bc746_4.conda + sha256: 05fa5e5e908962b9c5aba95f962e2ca81d9599c4715aebe5e4ddb72b309d1770 + md5: c2d95bd7aa8d564a9bd7eca5e571a5b3 depends: - __osx >=11.0 - - aws-c-common >=0.10.6,<0.10.7.0a0 + - libcxx >=18 + constrains: + - libabseil-static =20240722.0=cxx17* + - abseil-cpp =20240722.0 arch: arm64 platform: osx license: Apache-2.0 license_family: Apache - size: 18068 - timestamp: 1733991869211 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.0-h7959bf6_11.conda - sha256: 10d7240c7db0c941fb1a59c4f8ea6689a434b03309ee7b766fa15a809c553c02 - md5: 9b3fb60fe57925a92f399bc3fc42eccf + size: 1178260 + timestamp: 1736008642885 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-28_h59b9bed_openblas.conda + build_number: 28 + sha256: 93fbcf2800b859b7ca5add3ab5d3aa11c6a6ff4b942a1cea4bf644f78488edb8 + md5: 73e2a99fdeb8531d50168987378fda8a depends: - - __glibc >=2.17,<3.0.a0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - aws-c-io >=0.15.3,<0.15.4.0a0 - - aws-checksums >=0.2.2,<0.2.3.0a0 - - libgcc >=13 - - libstdcxx >=13 - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 54003 - timestamp: 1734024480949 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-event-stream-0.5.0-hcbd8f92_11.conda - sha256: 79aa363c71c891a27496c0498f8d498b2ddc87b3ccb3b6c9da5b50b05936ebb8 - md5: e0772c59af4243a9b2565baa5d79e5b6 - depends: - - aws-c-common >=0.10.6,<0.10.7.0a0 - - aws-c-io >=0.15.3,<0.15.4.0a0 - - aws-checksums >=0.2.2,<0.2.3.0a0 - - libgcc >=13 - - libstdcxx >=13 - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 55207 - timestamp: 1734024546663 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.0-h54f970a_11.conda - sha256: f0667935f4e0d4c25e0e51da035640310b5ceeb8f723156734439bde8b848d7d - md5: ba41238f8e653998d7d2f42e3a8db054 - depends: - - __osx >=11.0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - aws-c-io >=0.15.3,<0.15.4.0a0 - - aws-checksums >=0.2.2,<0.2.3.0a0 - - libcxx >=18 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: Apache - size: 47078 - timestamp: 1734024749727 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.2-hefd7a92_4.conda - sha256: 4a330206bd51148f6c13ca0b7a4db40f29a46f090642ebacdeb88b8a4abd7f99 - md5: 5ce4df662d32d3123ea8da15571b6f51 - depends: - - __glibc >=2.17,<3.0.a0 - - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - aws-c-compression >=0.3.0,<0.3.1.0a0 - - aws-c-io >=0.15.3,<0.15.4.0a0 - - libgcc >=13 + - libopenblas >=0.3.28,<0.3.29.0a0 + - libopenblas >=0.3.28,<1.0a0 + constrains: + - libcblas =3.9.0=28*_openblas + - blas =2.128=openblas + - liblapack =3.9.0=28*_openblas + - liblapacke =3.9.0=28*_openblas arch: x86_64 platform: linux - license: Apache-2.0 - license_family: Apache - size: 197731 - timestamp: 1734008380764 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.2-h3df160d_4.conda - sha256: 3a1d2d332945306be9d49e569b95e4cc172d825f10e88715513a172f28ebb59e - md5: 28f00aa7fd9556c4c461328cf146c20b - depends: - - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - aws-c-compression >=0.3.0,<0.3.1.0a0 - - aws-c-io >=0.15.3,<0.15.4.0a0 - - libgcc >=13 + license: BSD-3-Clause + license_family: BSD + size: 16621 + timestamp: 1738114033763 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-28_h1a9f1db_openblas.conda + build_number: 28 + sha256: a50dc7ed1f49789aab4ffb560d9a46b5dc3f059a925282f699c1a96fa566a1a0 + md5: 88dfbb3875d62b431aa676b4a54734bf + depends: + - libopenblas >=0.3.28,<0.3.29.0a0 + - libopenblas >=0.3.28,<1.0a0 + constrains: + - liblapack =3.9.0=28*_openblas + - libcblas =3.9.0=28*_openblas + - blas =2.128=openblas + - liblapacke =3.9.0=28*_openblas arch: aarch64 platform: linux - license: Apache-2.0 - license_family: Apache - size: 190586 - timestamp: 1734008442362 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.2-h96aa502_4.conda - sha256: 22e4737c8a885995b7c1ae1d79c1f6e78d489e16ec079615980fdde067aeaf76 - md5: 495c93a4f08b17deb3c04894512330e6 + license: BSD-3-Clause + license_family: BSD + size: 16697 + timestamp: 1738114082682 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-28_h10e41b3_openblas.conda + build_number: 28 + sha256: 5bea855a1a7435ce2238535aa4b13db8af8ee301d99a42b083b63fa64c1ea144 + md5: 166166d84a0e9571dc50210baf993b46 depends: - - __osx >=11.0 - - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - aws-c-compression >=0.3.0,<0.3.1.0a0 - - aws-c-io >=0.15.3,<0.15.4.0a0 + - libopenblas >=0.3.28,<0.3.29.0a0 + - libopenblas >=0.3.28,<1.0a0 + constrains: + - liblapack =3.9.0=28*_openblas + - liblapacke =3.9.0=28*_openblas + - blas =2.128=openblas + - libcblas =3.9.0=28*_openblas arch: arm64 platform: osx - license: Apache-2.0 - license_family: Apache - size: 152983 - timestamp: 1734008451473 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-h173a860_6.conda - sha256: 335d822eead0a097ffd23677a288e1f18ea22f47a92d4f877419debb93af0e81 - md5: 9a063178f1af0a898526cc24ba7be486 + license: BSD-3-Clause + license_family: BSD + size: 16840 + timestamp: 1738114389937 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-28_he106b2a_openblas.conda + build_number: 28 + sha256: de293e117db53e5d78b579136509c35a5e4ad11529c05f9af83cf89be4d30de1 + md5: 4e20a1c00b4e8a984aac0f6cce59e3ac depends: - - __glibc >=2.17,<3.0.a0 - - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - libgcc >=13 - - s2n >=1.5.11,<1.5.12.0a0 + - libblas 3.9.0 28_h59b9bed_openblas + constrains: + - blas =2.128=openblas + - liblapack =3.9.0=28*_openblas + - liblapacke =3.9.0=28*_openblas arch: x86_64 platform: linux - license: Apache-2.0 - license_family: Apache - size: 157263 - timestamp: 1737207617838 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-hfd5ba81_6.conda - sha256: d8adfde05cee11057d99c3802e84b2300430a7c7c3c9936165d1d4b25ef59d91 - md5: 4e6771b45cb2b035c62d023dbf0dc000 - depends: - - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - libgcc >=13 - - s2n >=1.5.11,<1.5.12.0a0 + license: BSD-3-Clause + license_family: BSD + size: 16539 + timestamp: 1738114043618 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-28_hab92f65_openblas.conda + build_number: 28 + sha256: ed62f13a85726f568e17ad569b5cc01a49a6c7bd334802cf1c1b15e9d10e7e93 + md5: 8cff453f547365131be5647c7680ac6d + depends: + - libblas 3.9.0 28_h1a9f1db_openblas + constrains: + - liblapack =3.9.0=28*_openblas + - blas =2.128=openblas + - liblapacke =3.9.0=28*_openblas arch: aarch64 platform: linux - license: Apache-2.0 - license_family: Apache - size: 160933 - timestamp: 1737207637279 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-haba67d1_6.conda - sha256: 73722dd175af78b6cbfa033066f0933351f5382a1a737f6c6d9b8cfa84022161 - md5: d02e8f40ff69562903e70a1c6c48b009 + license: BSD-3-Clause + license_family: BSD + size: 16655 + timestamp: 1738114088527 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-28_hb3479ef_openblas.conda + build_number: 28 + sha256: f08adea59381babb3568e6d23e52aff874cbc25f299821647ab1127d1e1332ca + md5: 30942dea911ce333765003a8adec4e8a depends: - - __osx >=11.0 - - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.6,<0.10.7.0a0 + - libblas 3.9.0 28_h10e41b3_openblas + constrains: + - blas =2.128=openblas + - liblapacke =3.9.0=28*_openblas + - liblapack =3.9.0=28*_openblas arch: arm64 platform: osx - license: Apache-2.0 - license_family: Apache - size: 136048 - timestamp: 1737207681224 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h11f4f37_12.conda - sha256: 512d3969426152d9d5fd886e27b13706122dc3fa90eb08c37b0d51a33d7bb14a - md5: 96c3e0221fa2da97619ee82faa341a73 - depends: - - __glibc >=2.17,<3.0.a0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - aws-c-http >=0.9.2,<0.9.3.0a0 - - aws-c-io >=0.15.3,<0.15.4.0a0 - - libgcc >=13 - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 194672 - timestamp: 1734025626798 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h5f50e26_12.conda - sha256: ffeb9100cc8fd4093e1a6fdfd938bc4a396dd77480b7fb17aa42855a4d5e2c70 - md5: 031ca33115d4b1eeb43f435d6215778c - depends: - - aws-c-common >=0.10.6,<0.10.7.0a0 - - aws-c-http >=0.9.2,<0.9.3.0a0 - - aws-c-io >=0.15.3,<0.15.4.0a0 - - libgcc >=13 - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 169516 - timestamp: 1734025167885 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h24f418c_12.conda - sha256: 96575ea1dd2a9ea94763882e40a66dcbff9c41f702bf37c9514c4c719b3c11dd - md5: c072045a6206f88015d02fcba1705ea1 + license: BSD-3-Clause + license_family: BSD + size: 16788 + timestamp: 1738114399962 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda + sha256: 776092346da87a2a23502e14d91eb0c32699c4a1522b7331537bd1c3751dcff5 + md5: 5b3e1610ff8bd5443476b91d618f5b77 depends: - __osx >=11.0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - aws-c-http >=0.9.2,<0.9.3.0a0 - - aws-c-io >=0.15.3,<0.15.4.0a0 arch: arm64 platform: osx - license: Apache-2.0 + license: Apache-2.0 WITH LLVM-exception license_family: Apache - size: 134371 - timestamp: 1734025379525 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.9-he1b24dc_1.conda - sha256: 15fbdedc56850f8be5be7a5bcaea1af09c97590e631c024ae089737fc932fc42 - md5: caafc32928a5f7f3f7ef67d287689144 + size: 523505 + timestamp: 1736877862502 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda + sha256: d789471216e7aba3c184cd054ed61ce3f6dac6f87a50ec69291b9297f8c18724 + md5: c277e0a4d549b03ac1e9d6cbbe3d017b depends: + - ncurses - __glibc >=2.17,<3.0.a0 - - aws-c-auth >=0.8.1,<0.8.2.0a0 - - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - aws-c-http >=0.9.2,<0.9.3.0a0 - - aws-c-io >=0.15.3,<0.15.4.0a0 - - aws-checksums >=0.2.2,<0.2.3.0a0 - libgcc >=13 - - openssl >=3.4.0,<4.0a0 + - ncurses >=6.5,<7.0a0 arch: x86_64 platform: linux - license: Apache-2.0 - license_family: Apache - size: 115413 - timestamp: 1737558687616 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.9-h05b070f_1.conda - sha256: 9e7857fbc33eddc291fa09890ce468a92485d3e3e127bc00bbd1803e34121f84 - md5: e0a2869195f069db88b8932f5b00bee5 - depends: - - aws-c-auth >=0.8.1,<0.8.2.0a0 - - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - aws-c-http >=0.9.2,<0.9.3.0a0 - - aws-c-io >=0.15.3,<0.15.4.0a0 - - aws-checksums >=0.2.2,<0.2.3.0a0 + license: BSD-2-Clause + license_family: BSD + size: 134676 + timestamp: 1738479519902 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20250104-pl5321h976ea20_0.conda + sha256: c0b27546aa3a23d47919226b3a1635fccdb4f24b94e72e206a751b33f46fd8d6 + md5: fb640d776fc92b682a14e001980825b1 + depends: + - ncurses - libgcc >=13 - - openssl >=3.4.0,<4.0a0 + - ncurses >=6.5,<7.0a0 arch: aarch64 platform: linux - license: Apache-2.0 - license_family: Apache - size: 117875 - timestamp: 1737558720047 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.9-hf37e03c_1.conda - sha256: 92e8ca4eefcbbdf4189584c9410382884a06ed3030e5ecaac656dab8c95e6a80 - md5: de65f5e4ab5020103fe70a0eba9432a0 + license: BSD-2-Clause + license_family: BSD + size: 148125 + timestamp: 1738479808948 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda + sha256: 66aa216a403de0bb0c1340a88d1a06adaff66bae2cfd196731aa24db9859d631 + md5: 44083d2d2c2025afca315c7a172eab2b depends: + - ncurses - __osx >=11.0 - - aws-c-auth >=0.8.1,<0.8.2.0a0 - - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - aws-c-http >=0.9.2,<0.9.3.0a0 - - aws-c-io >=0.15.3,<0.15.4.0a0 - - aws-checksums >=0.2.2,<0.2.3.0a0 + - ncurses >=6.5,<7.0a0 arch: arm64 platform: osx - license: Apache-2.0 - license_family: Apache - size: 98731 - timestamp: 1737558731831 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.2-h4e1184b_0.conda - sha256: 0424e380c435ba03b5948d02e8c958866c4eee50ed29e57f99473a5f795a4cfc - md5: dcd498d493818b776a77fbc242fbf8e4 + license: BSD-2-Clause + license_family: BSD + size: 107691 + timestamp: 1738479560845 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda + sha256: 56541b98447b58e52d824bd59d6382d609e11de1f8adf20b23143e353d2b8d26 + md5: db833e03127376d461e1e13e76f09b6c depends: - __glibc >=2.17,<3.0.a0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - libgcc >=13 + constrains: + - expat 2.6.4.* arch: x86_64 platform: linux - license: Apache-2.0 - license_family: Apache - size: 55911 - timestamp: 1736535960724 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.2-h0f0193d_0.conda - sha256: fba38e469457764afcb94aa84d4d7788e6b5fa1554d34b05c904d2245fdd3c81 - md5: a78928881c652facde2a13ec6e776f3c + license: MIT + license_family: MIT + size: 73304 + timestamp: 1730967041968 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.6.4-h5ad3122_0.conda + sha256: f42e758009ba9db90d1fe7992bc3e60d0c52f71fb20923375d2c44ae69a5a2b3 + md5: f1b3fab36861b3ce945a13f0dfdfc688 depends: - - aws-c-common >=0.10.6,<0.10.7.0a0 - libgcc >=13 + constrains: + - expat 2.6.4.* arch: aarch64 platform: linux - license: Apache-2.0 - license_family: Apache - size: 58221 - timestamp: 1736536003041 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.2-hc8a0bd2_0.conda - sha256: ea4f0f1e99056293c69615f581a997d65ba7e229e296e402e0d8ef750648a5b5 - md5: e7b5498ac7b7ab921a907be38f3a8080 + license: MIT + license_family: MIT + size: 72345 + timestamp: 1730967203789 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.4-h286801f_0.conda + sha256: e42ab5ace927ee7c84e3f0f7d813671e1cf3529f5f06ee5899606630498c2745 + md5: 38d2656dd914feb0cab8c629370768bf depends: - __osx >=11.0 - - aws-c-common >=0.10.6,<0.10.7.0a0 + constrains: + - expat 2.6.4.* arch: arm64 platform: osx - license: Apache-2.0 - license_family: Apache - size: 49872 - timestamp: 1736536152332 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-h4e1184b_4.conda - sha256: 1ed9a332d06ad595694907fad2d6d801082916c27cd5076096fda4061e6d24a8 - md5: 74e8c3e4df4ceae34aa2959df4b28101 + license: MIT + license_family: MIT + size: 64693 + timestamp: 1730967175868 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.2-h7f98852_5.tar.bz2 + sha256: ab6e9856c21709b7b517e940ae7028ae0737546122f83c2aa5d692860c3b149e + md5: d645c6d2ac96843a2bfaccd2d62b3ac3 depends: - - __glibc >=2.17,<3.0.a0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - libgcc >=13 + - libgcc-ng >=9.4.0 arch: x86_64 platform: linux - license: Apache-2.0 - license_family: Apache - size: 72762 - timestamp: 1733994347547 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h0f0193d_4.conda - sha256: 9f1e3635a587bcf92b61d88c7af7d24cd89c147c6d0ae58afbde08e65bcf48da - md5: 3bd35b0adab3d743f09e0252cc441d6b + license: MIT + license_family: MIT + size: 58292 + timestamp: 1636488182923 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.4.2-h3557bc0_5.tar.bz2 + sha256: 7e9258a102480757fe3faeb225a3ca04dffd10fecd2a958c65cdb4cdf75f2c3c + md5: dddd85f4d52121fab0a8b099c5e06501 depends: - - aws-c-common >=0.10.6,<0.10.7.0a0 - - libgcc >=13 + - libgcc-ng >=9.4.0 arch: aarch64 platform: linux - license: Apache-2.0 - license_family: Apache - size: 72154 - timestamp: 1733994384415 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-hc8a0bd2_4.conda - sha256: 215086d95e8ff1d3fcb0197ada116cc9d7db1fdae7573f5e810d20fa9215b47c - md5: e70e88a357a3749b67679c0788c5b08a - depends: - - __osx >=11.0 - - aws-c-common >=0.10.6,<0.10.7.0a0 + license: MIT + license_family: MIT + size: 59450 + timestamp: 1636488255090 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 + sha256: 41b3d13efb775e340e4dba549ab5c029611ea6918703096b2eaa9c015c0750ca + md5: 086914b672be056eb70fd4285b6783b6 arch: arm64 platform: osx - license: Apache-2.0 - license_family: Apache - size: 70186 - timestamp: 1733994496998 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.9-he0e7f3f_2.conda - sha256: c1930569713bd5231d48d885a5e3707ac917b428e8f08189d14064a2bb128adc - md5: 8a4e6fc8a3b285536202b5456a74a940 + license: MIT + license_family: MIT + size: 39020 + timestamp: 1636488587153 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h77fa898_1.conda + sha256: 53eb8a79365e58849e7b1a068d31f4f9e718dc938d6f2c03e960345739a03569 + md5: 3cb76c3f10d3bc7f1105b2fc9db984df depends: - - __glibc >=2.17,<3.0.a0 - - aws-c-auth >=0.8.1,<0.8.2.0a0 - - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - - aws-c-http >=0.9.2,<0.9.3.0a0 - - aws-c-io >=0.15.3,<0.15.4.0a0 - - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - - aws-c-s3 >=0.7.9,<0.7.10.0a0 - - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 - - libgcc >=13 - - libstdcxx >=13 + - _libgcc_mutex 0.1 conda_forge + - _openmp_mutex >=4.5 + constrains: + - libgomp 14.2.0 h77fa898_1 + - libgcc-ng ==14.2.0=*_1 arch: x86_64 platform: linux - license: Apache-2.0 - license_family: Apache - size: 353222 - timestamp: 1737565463079 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.9-hab3ce66_2.conda - sha256: c3884fb10e0fd9be5c13256cabcda1afa9d2fcf8878c67214d02fc344509857d - md5: 875968ebffe992b68faf2caebbf32f02 - depends: - - aws-c-auth >=0.8.1,<0.8.2.0a0 - - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - - aws-c-http >=0.9.2,<0.9.3.0a0 - - aws-c-io >=0.15.3,<0.15.4.0a0 - - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - - aws-c-s3 >=0.7.9,<0.7.10.0a0 - - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 - - libgcc >=13 - - libstdcxx >=13 - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 283812 - timestamp: 1737565480034 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.9-ha81f72f_2.conda - sha256: ed5f1d19aad53787fdebe13db4709c97eae2092536cc55d3536eba320c4286e1 - md5: c9c034d3239bf25687ca4dd985007ecd + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 848745 + timestamp: 1729027721139 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-14.2.0-he277a41_1.conda + sha256: 5d56757ccad208c79214395b00d006d8d18929a4ba49c47bd9460789a7620943 + md5: 511b511c5445e324066c3377481bcab8 depends: - - __osx >=11.0 - - aws-c-auth >=0.8.1,<0.8.2.0a0 - - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - - aws-c-http >=0.9.2,<0.9.3.0a0 - - aws-c-io >=0.15.3,<0.15.4.0a0 - - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - - aws-c-s3 >=0.7.9,<0.7.10.0a0 - - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 - - libcxx >=18 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: Apache - size: 235976 - timestamp: 1737565563139 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.489-h4d475cb_0.conda - sha256: 08d6b7d2ed17bfcc7deb903c7751278ee434abdb27e3be0dceb561f30f030c75 - md5: b775e9f46dfa94b228a81d8e8c6d8b1d + - _openmp_mutex >=4.5 + constrains: + - libgcc-ng ==14.2.0=*_1 + - libgomp 14.2.0 he277a41_1 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 535243 + timestamp: 1729089435134 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_1.conda + sha256: 3a76969c80e9af8b6e7a55090088bc41da4cffcde9e2c71b17f44d37b7cb87f7 + md5: e39480b9ca41323497b05492a63bc35b depends: - - __glibc >=2.17,<3.0.a0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - - aws-checksums >=0.2.2,<0.2.3.0a0 - - aws-crt-cpp >=0.29.9,<0.29.10.0a0 - - libcurl >=8.11.1,<9.0a0 - - libgcc >=13 - - libstdcxx >=13 - - libzlib >=1.3.1,<2.0a0 - - openssl >=3.4.0,<4.0a0 + - libgcc 14.2.0 h77fa898_1 arch: x86_64 platform: linux - license: Apache-2.0 - license_family: Apache - size: 3144364 - timestamp: 1737576036746 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.489-h88461e4_0.conda - sha256: 88353e82b053763168cddbe2f88048defc1c97b3dad0966fbe8c4fa7aa592c7e - md5: e725d8fa77a6a5f38a78c5de914a5f40 - depends: - - aws-c-common >=0.10.6,<0.10.7.0a0 - - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - - aws-checksums >=0.2.2,<0.2.3.0a0 - - aws-crt-cpp >=0.29.9,<0.29.10.0a0 - - libcurl >=8.11.1,<9.0a0 - - libgcc >=13 - - libstdcxx >=13 - - libzlib >=1.3.1,<2.0a0 - - openssl >=3.4.0,<4.0a0 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 54142 + timestamp: 1729027726517 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-14.2.0-he9431aa_1.conda + sha256: 9b5cf168a6c7361cae869cb74b716766ee7c6d6b3f6172b32ba9bf91135efdc4 + md5: 0694c249c61469f2c0f7e2990782af21 + depends: + - libgcc 14.2.0 he277a41_1 arch: aarch64 platform: linux - license: Apache-2.0 - license_family: Apache - size: 3015109 - timestamp: 1737575993030 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.489-h0e5014b_0.conda - sha256: d82451530ddf363d8bb31a8a7391bb9699f745e940ace91d78c0e6170deef03c - md5: 156cfb45a1bb8cffc81e59047bb34f51 - depends: - - __osx >=11.0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - - aws-checksums >=0.2.2,<0.2.3.0a0 - - aws-crt-cpp >=0.29.9,<0.29.10.0a0 - - libcurl >=8.11.1,<9.0a0 - - libcxx >=18 - - libzlib >=1.3.1,<2.0a0 - - openssl >=3.4.0,<4.0a0 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: Apache - size: 2874126 - timestamp: 1737577023623 -- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda - sha256: fe07debdb089a3db17f40a7f20d283d75284bb4fc269ef727b8ba6fc93f7cb5a - md5: 0a8838771cc2e985cd295e01ae83baf1 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 54104 + timestamp: 1729089444587 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_1.conda + sha256: fc9e7f22a17faf74da904ebfc4d88699013d2992e55505e4aa0eb01770290977 + md5: f1fd30127802683586f768875127a987 depends: - - __glibc >=2.17,<3.0.a0 - - libcurl >=8.10.1,<9.0a0 - - libgcc >=13 - - libstdcxx >=13 - - openssl >=3.3.2,<4.0a0 + - libgfortran5 14.2.0 hd5240d6_1 + constrains: + - libgfortran-ng ==14.2.0=*_1 arch: x86_64 platform: linux - license: MIT - license_family: MIT - size: 345117 - timestamp: 1728053909574 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-core-cpp-1.14.0-h1887c18_0.conda - sha256: 8967b3ccee4d74e61f6ec82dd8efb9deb854ee7ba012dfe767b7a92e0ac77724 - md5: e0c3a906a41be769f0ae20ca3e31cfc0 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 53997 + timestamp: 1729027752995 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_1.conda + sha256: cb66e411fa32a5c6040f4e5e2a63c00897aae4c3133a9c004c2e929ccf19575b + md5: 0294b92d2f47a240bebb1e3336b495f1 depends: - - libcurl >=8.10.1,<9.0a0 - - libgcc >=13 - - libstdcxx >=13 - - openssl >=3.3.2,<4.0a0 + - libgfortran5 14.2.0 hb6113d0_1 + constrains: + - libgfortran-ng ==14.2.0=*_1 arch: aarch64 platform: linux - license: MIT - license_family: MIT - size: 338650 - timestamp: 1728055589907 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.14.0-hd50102c_0.conda - sha256: f5b91329ed59ffc0be8747784c6e4cc7e56250c54032883a83bc11808ef6a87e - md5: f093a11dcf3cdcca010b20a818fcc6dc + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 54105 + timestamp: 1729089471124 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda + sha256: 44e541b4821c96b28b27fef5630883a60ce4fee91fd9c79f25a199f8f73f337b + md5: 4a55d9e169114b2b90d3ec4604cd7bbf depends: - - __osx >=11.0 - - libcurl >=8.10.1,<9.0a0 - - libcxx >=17 - - openssl >=3.3.2,<4.0a0 + - libgfortran5 13.2.0 hf226fd6_3 arch: arm64 platform: osx - license: MIT - license_family: MIT - size: 294299 - timestamp: 1728054014060 -- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.10.0-h113e628_0.conda - sha256: 286b31616c191486626cb49e9ceb5920d29394b9e913c23adb7eb637629ba4de - md5: 73f73f60854f325a55f1d31459f2ab73 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 110233 + timestamp: 1707330749033 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hd5240d6_1.conda + sha256: d149a37ca73611e425041f33b9d8dbed6e52ec506fe8cc1fc0ee054bddeb6d5d + md5: 9822b874ea29af082e5d36098d25427d depends: - - __glibc >=2.17,<3.0.a0 - - azure-core-cpp >=1.14.0,<1.14.1.0a0 - - libgcc >=13 - - libstdcxx >=13 - - openssl >=3.3.2,<4.0a0 + - libgcc >=14.2.0 + constrains: + - libgfortran 14.2.0 arch: x86_64 platform: linux - license: MIT - license_family: MIT - size: 232351 - timestamp: 1728486729511 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-identity-cpp-1.10.0-h47b0b28_0.conda - sha256: 1c72423b9beba167d2f01b80dc204da77240a8266f1edb3d89510c852b300d69 - md5: 94e73a7877743a85c57091d8afab2348 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 1462645 + timestamp: 1729027735353 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_1.conda + sha256: a87ff46d19916403cbf68cf1d785bf56b4d1ab7b2552468d2ea775d70782493f + md5: fc068e11b10e18f184e027782baa12b6 depends: - - azure-core-cpp >=1.14.0,<1.14.1.0a0 - - libgcc >=13 - - libstdcxx >=13 - - openssl >=3.3.2,<4.0a0 + - libgcc >=14.2.0 + constrains: + - libgfortran 14.2.0 arch: aarch64 platform: linux - license: MIT - license_family: MIT - size: 217132 - timestamp: 1728488096615 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.10.0-hc602bab_0.conda - sha256: bde446b916fff5150606f8ed3e6058ffc55a3aa72381e46f1ab346590b1ae40a - md5: d7b71593a937459f2d4b67e1a4727dc2 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 1102158 + timestamp: 1729089452640 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda + sha256: bafc679eedb468a86aa4636061c55966186399ee0a04b605920d208d97ac579a + md5: 66ac81d54e95c534ae488726c1f698ea depends: - - __osx >=11.0 - - azure-core-cpp >=1.14.0,<1.14.1.0a0 - - libcxx >=17 - - openssl >=3.3.2,<4.0a0 + - llvm-openmp >=8.0.0 + constrains: + - libgfortran 5.0.0 13_2_0_*_3 arch: arm64 platform: osx - license: MIT - license_family: MIT - size: 166907 - timestamp: 1728486882502 -- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.13.0-h3cf044e_1.conda - sha256: 2606260e5379eed255bcdc6adc39b93fb31477337bcd911c121fc43cd29bf394 - md5: 7eb66060455c7a47d9dcdbfa9f46579b + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 997381 + timestamp: 1707330687590 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h77fa898_1.conda + sha256: 1911c29975ec99b6b906904040c855772ccb265a1c79d5d75c8ceec4ed89cd63 + md5: cc3573974587f12dda90d96e3e55a702 depends: - - __glibc >=2.17,<3.0.a0 - - azure-core-cpp >=1.14.0,<1.14.1.0a0 - - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 - - libgcc >=13 - - libstdcxx >=13 + - _libgcc_mutex 0.1 conda_forge arch: x86_64 platform: linux - license: MIT - license_family: MIT - size: 549342 - timestamp: 1728578123088 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-blobs-cpp-12.13.0-h185ecfd_1.conda - sha256: 280ec70009a92626054f58e45b168fce393e71a9710587488bd8401628cda481 - md5: 221e1e5ecb2643e113f32b3229d5ba33 - depends: - - azure-core-cpp >=1.14.0,<1.14.1.0a0 - - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 - - libgcc >=13 - - libstdcxx >=13 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 460992 + timestamp: 1729027639220 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_1.conda + sha256: 5aa53874a5e57a00f2e0c2e2910684eb674429cd5fcb803619b226a73e89aedf + md5: 376f0e73abbda6d23c0cb749adc195ef arch: aarch64 platform: linux - license: MIT - license_family: MIT - size: 502934 - timestamp: 1728580241002 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-blobs-cpp-12.13.0-h7585a09_1.conda - sha256: 08d52d130addc0fb55d5ba10d9fa483e39be25d69bac7f4c676c2c3069207590 - md5: 704238ef05d46144dae2e6b5853df8bc - depends: - - __osx >=11.0 - - azure-core-cpp >=1.14.0,<1.14.1.0a0 - - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 - - libcxx >=17 - arch: arm64 - platform: osx - license: MIT - license_family: MIT - size: 438636 - timestamp: 1728578216193 -- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-common-cpp-12.8.0-h736e048_1.conda - sha256: 273475f002b091b66ce7366da04bf164c3732c03f8692ab2ee2d23335b6a82ba - md5: 13de36be8de3ae3f05ba127631599213 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 463521 + timestamp: 1729089357313 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-28_h7ac8fdf_openblas.conda + build_number: 28 + sha256: 9530e6840690b78360946390a1d29624734a6b624f02c26631fb451592cbb8ef + md5: 069f40bfbf1dc55c83ddb07fc6a6ef8d depends: - - __glibc >=2.17,<3.0.a0 - - azure-core-cpp >=1.14.0,<1.14.1.0a0 - - libgcc >=13 - - libstdcxx >=13 - - libxml2 >=2.12.7,<3.0a0 - - openssl >=3.3.2,<4.0a0 + - libblas 3.9.0 28_h59b9bed_openblas + constrains: + - libcblas =3.9.0=28*_openblas + - blas =2.128=openblas + - liblapacke =3.9.0=28*_openblas arch: x86_64 platform: linux - license: MIT - license_family: MIT - size: 149312 - timestamp: 1728563338704 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-common-cpp-12.8.0-h1b94036_1.conda - sha256: 146e76aac169e3dbdce5d3b142b7930ac643795c765e7655d1989905ec7d3231 - md5: 793b1080ab2d958980f137a8643cd6e8 + license: BSD-3-Clause + license_family: BSD + size: 16553 + timestamp: 1738114053556 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-28_h411afd4_openblas.conda + build_number: 28 + sha256: 1290ce1071a586e22bdd7d8f4c48000cc0005f0a67660be150d1ea5c6092129f + md5: bc4c5ee31476521e202356b56bba6077 depends: - - azure-core-cpp >=1.14.0,<1.14.1.0a0 - - libgcc >=13 - - libstdcxx >=13 - - libxml2 >=2.12.7,<3.0a0 - - openssl >=3.3.2,<4.0a0 + - libblas 3.9.0 28_h1a9f1db_openblas + constrains: + - liblapacke =3.9.0=28*_openblas + - libcblas =3.9.0=28*_openblas + - blas =2.128=openblas arch: aarch64 platform: linux - license: MIT - license_family: MIT - size: 140832 - timestamp: 1728565334900 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-common-cpp-12.8.0-h9ca1f76_1.conda - sha256: 77ab04e8fe5636a2de9c718f72a43645f7502cd208868c8a91ffba385547d585 - md5: 7a187cd7b1445afc80253bb186a607cc + license: BSD-3-Clause + license_family: BSD + size: 16637 + timestamp: 1738114094310 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-28_hc9a63f6_openblas.conda + build_number: 28 + sha256: 79c75a02bff20f8b001e6aecfee8d22a51552c3986e7037fca68e5ed071cc213 + md5: 45f26652530b558c21083ceb7adaf273 depends: - - __osx >=11.0 - - azure-core-cpp >=1.14.0,<1.14.1.0a0 - - libcxx >=17 - - libxml2 >=2.12.7,<3.0a0 - - openssl >=3.3.2,<4.0a0 + - libblas 3.9.0 28_h10e41b3_openblas + constrains: + - blas =2.128=openblas + - liblapacke =3.9.0=28*_openblas + - libcblas =3.9.0=28*_openblas arch: arm64 platform: osx - license: MIT - license_family: MIT - size: 121278 - timestamp: 1728563418777 -- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-files-datalake-cpp-12.12.0-ha633028_1.conda - sha256: 5371e4f3f920933bb89b926a85a67f24388227419abd6e99f6086481e5e8d5f2 - md5: 7c1980f89dd41b097549782121a73490 + license: BSD-3-Clause + license_family: BSD + size: 16793 + timestamp: 1738114407021 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda + sha256: cad52e10319ca4585bc37f0bc7cce99ec7c15dc9168e42ccb96b741b0a27db3f + md5: 42d5b6a0f30d3c10cd88cb8584fda1cb depends: - __glibc >=2.17,<3.0.a0 - - azure-core-cpp >=1.14.0,<1.14.1.0a0 - - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 - - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 - libgcc >=13 - - libstdcxx >=13 arch: x86_64 platform: linux - license: MIT - license_family: MIT - size: 287366 - timestamp: 1728729530295 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-files-datalake-cpp-12.12.0-h37d6d07_1.conda - sha256: 4079c617a75682e49bae63670d58fd6078ccfbbe55ca1f994acab3a74ab6bbcc - md5: b724f3b4b7f4e9b36c58cbe3ed8610a2 - depends: - - azure-core-cpp >=1.14.0,<1.14.1.0a0 - - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 - - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 + license: 0BSD + size: 111357 + timestamp: 1738525339684 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.4-h86ecc28_0.conda + sha256: 96413664f0fade54a4931940d18749cfc8e6308349dbb0cb83adb2394ca1f730 + md5: b88244e0a115cc34f7fbca9b11248e76 + depends: - libgcc >=13 - - libstdcxx >=13 arch: aarch64 platform: linux - license: MIT - license_family: MIT - size: 260547 - timestamp: 1728730924071 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-files-datalake-cpp-12.12.0-hcdd55da_1.conda - sha256: f48523f8aa0b5b80f45a92f0556b388dd96f44ac2dc2f44a01d08c1822eec97d - md5: c49fbc5233fcbaa86391162ff1adef38 + license: 0BSD + size: 124197 + timestamp: 1738528201520 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.4-h39f12f2_0.conda + sha256: 560c59d3834cc652a84fb45531bd335ad06e271b34ebc216e380a89798fe8e2c + md5: e3fd1f8320a100f2b210e690a57cd615 depends: - __osx >=11.0 - - azure-core-cpp >=1.14.0,<1.14.1.0a0 - - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 - - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 - - libcxx >=17 arch: arm64 platform: osx - license: MIT - license_family: MIT - size: 196032 - timestamp: 1728729672889 -- conda: https://conda.anaconda.org/conda-forge/noarch/backoff-2.2.1-pyhd8ed1ab_1.conda - sha256: f334115c6b0c6c2cd0d28595365f205ec7eaa60bcc5ff91a75d7245f728be820 - md5: a38b801f2bcc12af80c2e02a9e4ce7d9 - depends: - - python >=3.9 - license: MIT - license_family: MIT - size: 18816 - timestamp: 1733771192649 -- conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py311hfdbb021_2.conda - sha256: 949913bbd1f74d1af202d3e4bff2e0a4e792ec00271dc4dd08641d4221aa2e12 - md5: d21daab070d76490cb39a8f1d1729d79 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libstdcxx >=13 - - python >=3.11,<3.12.0a0 - - python_abi 3.11.* *_cp311 - constrains: - - libbrotlicommon 1.1.0 hb9d3cd8_2 - arch: x86_64 - platform: linux - license: MIT - license_family: MIT - size: 350367 - timestamp: 1725267768486 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/brotli-python-1.1.0-py311h89d996e_2.conda - sha256: 8f299ccbda87e19f393bf9c01381415343650b06b9ef088dc2129ddcd48c05d4 - md5: c62b4c4d3eb1d13dfe16abbe648c28b7 - depends: - - libgcc >=13 - - libstdcxx >=13 - - python >=3.11,<3.12.0a0 - - python >=3.11,<3.12.0a0 *_cpython - - python_abi 3.11.* *_cp311 - constrains: - - libbrotlicommon 1.1.0 h86ecc28_2 - arch: aarch64 - platform: linux - license: MIT - license_family: MIT - size: 356967 - timestamp: 1725268124383 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py311h3f08180_2.conda - sha256: f507d65e740777a629ceacb062c768829ab76fde01446b191699a734521ecaad - md5: c8793a23206344faa25f4e0b5d0e7908 - depends: - - __osx >=11.0 - - libcxx >=17 - - python >=3.11,<3.12.0a0 - - python >=3.11,<3.12.0a0 *_cpython - - python_abi 3.11.* *_cp311 - constrains: - - libbrotlicommon 1.1.0 hd74edd7_2 - arch: arm64 - platform: osx - license: MIT - license_family: MIT - size: 339584 - timestamp: 1725268241628 -- conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda - sha256: 5ced96500d945fb286c9c838e54fa759aa04a7129c59800f0846b4335cee770d - md5: 62ee74e96c5ebb0af99386de58cf9553 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc-ng >=12 - arch: x86_64 - platform: linux - license: bzip2-1.0.6 - license_family: BSD - size: 252783 - timestamp: 1720974456583 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h68df207_7.conda - sha256: 2258b0b33e1cb3a9852d47557984abb6e7ea58e3d7f92706ec1f8e879290c4cb - md5: 56398c28220513b9ea13d7b450acfb20 - depends: - - libgcc-ng >=12 - arch: aarch64 - platform: linux - license: bzip2-1.0.6 - license_family: BSD - size: 189884 - timestamp: 1720974504976 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda - sha256: adfa71f158cbd872a36394c56c3568e6034aa55c623634b37a4836bd036e6b91 - md5: fc6948412dbbbe9a4c9ddbbcfe0a79ab - depends: - - __osx >=11.0 - arch: arm64 - platform: osx - license: bzip2-1.0.6 - license_family: BSD - size: 122909 - timestamp: 1720974522888 -- conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.4-hb9d3cd8_0.conda - sha256: d4f28d87b6339b94f74762c0076e29c8ef8ddfff51a564a92da2843573c18320 - md5: e2775acf57efd5af15b8e3d1d74d72d3 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - arch: x86_64 - platform: linux - license: MIT - license_family: MIT - size: 206085 - timestamp: 1734208189009 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/c-ares-1.34.4-h86ecc28_0.conda - sha256: 1187a41d4bb2afe02cb18690682edc98d1e9f5e0ccda638d8704a75ea1875bbe - md5: 356da36f35d36dcba16e43f1589d4e39 - depends: - - libgcc >=13 - arch: aarch64 - platform: linux - license: MIT - license_family: MIT - size: 215979 - timestamp: 1734208193181 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.4-h5505292_0.conda - sha256: 09c0c8476e50b2955f474a4a1c17c4c047dd52993b5366b6ea8e968e583b921f - md5: c1c999a38a4303b29d75c636eaa13cf9 - depends: - - __osx >=11.0 - arch: arm64 - platform: osx - license: MIT - license_family: MIT - size: 179496 - timestamp: 1734208291879 -- conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2025.1.31-hbcca054_0.conda - sha256: bf832198976d559ab44d6cdb315642655547e26d826e34da67cbee6624cda189 - md5: 19f3a56f68d2fd06c516076bff482c52 - arch: x86_64 - platform: linux - license: ISC - size: 158144 - timestamp: 1738298224464 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2025.1.31-hcefe29a_0.conda - sha256: 66c6408ee461593cfdb2d78d82e6ed74d04a04ccb51df3ef8a5f35148c9c6eec - md5: 462cb166cd2e26a396f856510a3aff67 - arch: aarch64 - platform: linux - license: ISC - size: 158290 - timestamp: 1738299057652 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2025.1.31-hf0a4a13_0.conda - sha256: 7e12816618173fe70f5c638b72adf4bfd4ddabf27794369bb17871c5bb75b9f9 - md5: 3569d6a9141adc64d2fe4797f3289e06 - arch: arm64 - platform: osx - license: ISC - size: 158425 - timestamp: 1738298167688 -- conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.12.14-pyhd8ed1ab_0.conda - sha256: 048c16a9cbcb1fbad02083414d3bc7c1d0eea4b39aee6aa6bf8d1d5089ca8bad - md5: 6feb87357ecd66733be3279f16a8c400 - depends: - - python >=3.9 - license: ISC - size: 161642 - timestamp: 1734380604767 -- conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py311hf29c0ef_0.conda - sha256: bc47aa39c8254e9e487b8bcd74cfa3b4a3de3648869eb1a0b89905986b668e35 - md5: 55553ecd5328336368db611f350b7039 - depends: - - __glibc >=2.17,<3.0.a0 - - libffi >=3.4,<4.0a0 - - libgcc >=13 - - pycparser - - python >=3.11,<3.12.0a0 - - python_abi 3.11.* *_cp311 - arch: x86_64 - platform: linux - license: MIT - license_family: MIT - size: 302115 - timestamp: 1725560701719 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cffi-1.17.1-py311h14e8bb7_0.conda - sha256: 3d220020c9782ebd4f23cd0a6148b419e4397590ee414e6e69b9be810c57d2ca - md5: 616d65d1eea809af7e2b5f7ea36350fc - depends: - - libffi >=3.4,<4.0a0 - - libgcc >=13 - - pycparser - - python >=3.11,<3.12.0a0 - - python_abi 3.11.* *_cp311 - arch: aarch64 - platform: linux - license: MIT - license_family: MIT - size: 319122 - timestamp: 1725562148568 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.1-py311h3a79f62_0.conda - sha256: 253605b305cc4548b8f97eb7c2e146697e0c7672b099c4862ec5ca7e8e995307 - md5: a42272c5dbb6ffbc1a5af70f24c7b448 - depends: - - __osx >=11.0 - - libffi >=3.4,<4.0a0 - - pycparser - - python >=3.11,<3.12.0a0 - - python >=3.11,<3.12.0a0 *_cpython - - python_abi 3.11.* *_cp311 - arch: arm64 - platform: osx - license: MIT - license_family: MIT - size: 288211 - timestamp: 1725560745212 -- conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda - sha256: 4e0ee91b97e5de3e74567bdacea27f0139709fceca4db8adffbe24deffccb09b - md5: e83a31202d1c0a000fce3e9cf3825875 - depends: - - python >=3.9 - license: MIT - license_family: MIT - size: 47438 - timestamp: 1735929811779 -- conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda - sha256: c920d23cd1fcf565031c679adb62d848af60d6fbb0edc2d50ba475cea4f0d8ab - md5: f22f4d4970e09d68a10b922cbb0408d3 - depends: - - __unix - - python >=3.9 - license: BSD-3-Clause - license_family: BSD - size: 84705 - timestamp: 1734858922844 -- conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - sha256: ab29d57dc70786c1269633ba3dff20288b81664d3ff8d21af995742e2bb03287 - md5: 962b9857ee8e7018c22f2776ffa0b2d7 - depends: - - python >=3.9 - license: BSD-3-Clause - license_family: BSD - size: 27011 - timestamp: 1733218222191 -- conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda - sha256: 7e09bd083a609138b780fcc4535924cb96814d2c908a36d4c64a2ba9ee3efe7f - md5: 3e087f072ce03c43a9b60522f5d0ca2f - depends: - - aiohttp - - dill >=0.3.0,<0.3.8 - - fsspec >=2021.11.1 - - huggingface_hub >=0.14.0,<1.0.0 - - importlib-metadata - - multiprocess - - numpy >=1.17 - - packaging - - pandas - - pyarrow >=8.0.0 - - python >=3.8.0 - - python-xxhash - - pyyaml >=5.1 - - requests >=2.19.0 - - tqdm >=4.62.1 - license: Apache-2.0 - license_family: Apache - size: 347303 - timestamp: 1691593908658 -- conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.18-pyhd8ed1ab_0.conda - sha256: d614bcff10696f1efc714df07651b50bf3808401fcc03814309ecec242cc8870 - md5: 0cef44b1754ae4d6924ac0eef6b9fdbe - depends: - - python >=3.9 - - wrapt <2,>=1.10 - license: MIT - license_family: MIT - size: 14382 - timestamp: 1737987072859 -- conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda - sha256: 4ff20c6be028be2825235631c45d9e4a75bca1de65f8840c02dfb28ea0137c45 - md5: 5e4f3466526c52bc9af2d2353a1460bd - depends: - - python >=3.7 - license: BSD-3-Clause - license_family: BSD - size: 87553 - timestamp: 1690101185422 -- conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda - sha256: 3ec40ccf63f2450c5e6c7dd579e42fc2e97caf0d8cd4ba24aa434e6fc264eda0 - md5: 5fbd60d61d21b4bd2f9d7a48fe100418 - depends: - - python >=3.9,<4.0.0 - - sniffio - constrains: - - aioquic >=1.0.0 - - wmi >=1.5.1 - - httpx >=0.26.0 - - trio >=0.23 - - cryptography >=43 - - httpcore >=1.0.0 - - idna >=3.7 - - h2 >=4.1.0 - license: ISC - license_family: OTHER - size: 172172 - timestamp: 1733256829961 -- conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda - sha256: b91a19eb78edfc2dbb36de9a67f74ee2416f1b5273dd7327abe53f2dbf864736 - md5: da16dd3b0b71339060cd44cb7110ddf9 - depends: - - dnspython >=2.0.0 - - idna >=2.0.0 - - python >=3.9 - license: Unlicense - size: 44401 - timestamp: 1733300827551 -- conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_1.conda - sha256: e0d0fdf587aa0ed0ff08b2bce3ab355f46687b87b0775bfba01cc80a859ee6a2 - md5: 0794f8807ff2c6f020422cacb1bd7bfa - depends: - - email-validator >=2.2.0,<2.2.1.0a0 - license: Unlicense - size: 6552 - timestamp: 1733300828176 -- conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda - sha256: cbde2c64ec317118fc06b223c5fd87c8a680255e7348dd60e7b292d2e103e701 - md5: a16662747cdeb9abbac74d0057cc976e - depends: - - python >=3.9 - license: MIT and PSF-2.0 - size: 20486 - timestamp: 1733208916977 -- conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.8-pyh29332c3_0.conda - sha256: 5e1e3d5cf306d9b3b5fe0d45a9e8440e8770ba7e4a5fac1ac847ca693b0dc064 - md5: 753382711adab47269f0bfe994906bc4 - depends: - - python >=3.9 - - starlette >=0.40.0,<0.46.0 - - typing_extensions >=4.8.0 - - pydantic >=1.7.4,!=1.8,!=1.8.1,!=2.0.0,!=2.0.1,!=2.1.0,<3.0.0 - - email_validator >=2.0.0 - - fastapi-cli >=0.0.5 - - httpx >=0.23.0 - - jinja2 >=3.1.5 - - python-multipart >=0.0.18 - - uvicorn-standard >=0.12.0 - - python - license: MIT - license_family: MIT - size: 77940 - timestamp: 1738326226051 -- conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.7-pyhd8ed1ab_0.conda - sha256: 300683731013b7221922339cd40430bb3c2ddeeb658fd7e37f5099ffe64e4db0 - md5: d960e0ea9e1c561aa928f6c4439f04c7 - depends: - - python >=3.9 - - rich-toolkit >=0.11.1 - - typer >=0.12.3 - - uvicorn-standard >=0.15.0 - license: MIT - license_family: MIT - size: 15546 - timestamp: 1734302408607 -- conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.17.0-pyhd8ed1ab_0.conda - sha256: 006d7e5a0c17a6973596dd86bfc80d74ce541144d2aee2d22d46fd41df560a63 - md5: 7f402b4a1007ee355bc50ce4d24d4a57 - depends: - - python >=3.9 - license: Unlicense - size: 17544 - timestamp: 1737517924333 -- conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.12.1-h267a509_2.conda - sha256: b2e3c449ec9d907dd4656cb0dc93e140f447175b125a3824b31368b06c666bb6 - md5: 9ae35c3d96db2c94ce0cef86efdfa2cb - depends: - - libgcc-ng >=12 - - libpng >=1.6.39,<1.7.0a0 - - libzlib >=1.2.13,<2.0.0a0 - arch: x86_64 - platform: linux - license: GPL-2.0-only OR FTL - size: 634972 - timestamp: 1694615932610 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/freetype-2.12.1-hf0a5ef3_2.conda - sha256: 7af93030f4407f076dce181062360efac2cd54dce863b5d7765287a6f5382537 - md5: a5ab74c5bd158c3d5532b66d8d83d907 - depends: - - libgcc-ng >=12 - - libpng >=1.6.39,<1.7.0a0 - - libzlib >=1.2.13,<2.0.0a0 - arch: aarch64 - platform: linux - license: GPL-2.0-only OR FTL - size: 642092 - timestamp: 1694617858496 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/freetype-2.12.1-hadb7bae_2.conda - sha256: 791673127e037a2dc0eebe122dc4f904cb3f6e635bb888f42cbe1a76b48748d9 - md5: e6085e516a3e304ce41a8ee08b9b89ad - depends: - - libpng >=1.6.39,<1.7.0a0 - - libzlib >=1.2.13,<2.0.0a0 - arch: arm64 - platform: osx - license: GPL-2.0-only OR FTL - size: 596430 - timestamp: 1694616332835 -- conda: https://conda.anaconda.org/conda-forge/linux-64/frozenlist-1.5.0-py311h2dc5d0c_1.conda - sha256: f42d8a79ef19c3ab660bec902c00c3d1c706c499ade10ac08128d757c93a7bfc - md5: 3bc993732a46956232503b005a58c051 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - python >=3.11,<3.12.0a0 - - python_abi 3.11.* *_cp311 - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 60911 - timestamp: 1737645516304 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/frozenlist-1.5.0-py311h58d527c_1.conda - sha256: 512e68c0053ab9495ccb0207e4d2b29f348dc9d7f7c479a8fd68ef74332226b7 - md5: 2ed2f19c420343f0fc18277d3dedfe26 - depends: - - libgcc >=13 - - python >=3.11,<3.12.0a0 - - python >=3.11,<3.12.0a0 *_cpython - - python_abi 3.11.* *_cp311 - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 61113 - timestamp: 1737645417807 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/frozenlist-1.5.0-py311h4921393_1.conda - sha256: f23f65686688ba67c5649e3d7ff3f96344d1d5b647ad51f66ee013f8d9bd114c - md5: fd7c347b480cd5ff02bc12487806b6f2 - depends: - - __osx >=11.0 - - python >=3.11,<3.12.0a0 - - python >=3.11,<3.12.0a0 *_cpython - - python_abi 3.11.* *_cp311 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: APACHE - size: 56495 - timestamp: 1737645461874 -- conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2025.2.0-pyhd8ed1ab_0.conda - sha256: 7433b8469074985b651693778ec6f03d2a23fad9919a515e3b8545996b5e721a - md5: d9ea16b71920b03beafc17fcca16df90 - depends: - - python >=3.9 - license: BSD-3-Clause - license_family: BSD - size: 138186 - timestamp: 1738501352608 -- conda: https://conda.anaconda.org/conda-forge/linux-64/gflags-2.2.2-h5888daf_1005.conda - sha256: 6c33bf0c4d8f418546ba9c250db4e4221040936aef8956353bc764d4877bc39a - md5: d411fc29e338efb48c5fd4576d71d881 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libstdcxx >=13 - arch: x86_64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 119654 - timestamp: 1726600001928 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gflags-2.2.2-h5ad3122_1005.conda - sha256: 28fe6b40b20454106d5e4ef6947cf298c13cc72a46347bbc49b563cd3a463bfa - md5: 4ff634d515abbf664774b5e1168a9744 - depends: - - libgcc >=13 - - libstdcxx >=13 - arch: aarch64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 106638 - timestamp: 1726599967617 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/gflags-2.2.2-hf9b8971_1005.conda - sha256: fd56ed8a1dab72ab90d8a8929b6f916a6d9220ca297ff077f8f04c5ed3408e20 - md5: 57a511a5905caa37540eb914dfcbf1fb - depends: - - __osx >=11.0 - - libcxx >=17 - arch: arm64 - platform: osx - license: BSD-3-Clause - license_family: BSD - size: 82090 - timestamp: 1726600145480 -- conda: https://conda.anaconda.org/conda-forge/linux-64/glog-0.7.1-hbabe93e_0.conda - sha256: dc824dc1d0aa358e28da2ecbbb9f03d932d976c8dca11214aa1dcdfcbd054ba2 - md5: ff862eebdfeb2fd048ae9dc92510baca - depends: - - gflags >=2.2.2,<2.3.0a0 - - libgcc-ng >=12 - - libstdcxx-ng >=12 - arch: x86_64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 143452 - timestamp: 1718284177264 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/glog-0.7.1-h468a4a4_0.conda - sha256: 920795d4f775a9f47e91c2223e64847f0b212b3fedc56c137c5889e32efe8ba0 - md5: 08940a32c6ced3703d1412dd37df4f62 - depends: - - gflags >=2.2.2,<2.3.0a0 - - libgcc-ng >=12 - - libstdcxx-ng >=12 - arch: aarch64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 145811 - timestamp: 1718284208668 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/glog-0.7.1-heb240a5_0.conda - sha256: 9fc77de416953aa959039db72bc41bfa4600ae3ff84acad04a7d0c1ab9552602 - md5: fef68d0a95aa5b84b5c1a4f6f3bf40e1 - depends: - - __osx >=11.0 - - gflags >=2.2.2,<2.3.0a0 - - libcxx >=16 - arch: arm64 - platform: osx - license: BSD-3-Clause - license_family: BSD - size: 112215 - timestamp: 1718284365403 -- conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda - sha256: d8d19575a827f2c62500949b9536efdd6b5406c9f546a73b6a87ac90b03a5875 - md5: 4861e30ff0cd566ea6fb4593e3b7c22a - depends: - - protobuf >=3.20.2,<6.0.0.dev0,!=3.20.0,!=3.20.1,!=4.21.1,!=4.21.2,!=4.21.3,!=4.21.4,!=4.21.5 - - python >=3.9 - license: Apache-2.0 - license_family: APACHE - size: 116522 - timestamp: 1731459019854 -- conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda - sha256: 622516185a7c740d5c7f27016d0c15b45782c1501e5611deec63fd70344ce7c8 - md5: 7ee49e89531c0dcbba9466f6d115d585 - depends: - - python >=3.9 - - typing_extensions - license: MIT - license_family: MIT - size: 51846 - timestamp: 1733327599467 -- conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda - sha256: 0aa1cdc67a9fe75ea95b5644b734a756200d6ec9d0dff66530aec3d1c1e9df75 - md5: b4754fb1bdcb70c8fd54f918301582c6 - depends: - - hpack >=4.1,<5 - - hyperframe >=6.1,<7 - - python >=3.9 - license: MIT - license_family: MIT - size: 53888 - timestamp: 1738578623567 -- conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda - sha256: 6ad78a180576c706aabeb5b4c8ceb97c0cb25f1e112d76495bff23e3779948ba - md5: 0a802cb9888dd14eeefc611f05c40b6e - depends: - - python >=3.9 - license: MIT - license_family: MIT - size: 30731 - timestamp: 1737618390337 -- conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - sha256: c84d012a245171f3ed666a8bf9319580c269b7843ffa79f26468842da3abd5df - md5: 2ca8e6dbc86525c8b95e3c0ffa26442e - depends: - - python >=3.8 - - h11 >=0.13,<0.15 - - h2 >=3,<5 - - sniffio 1.* - - anyio >=3.0,<5.0 - - certifi - license: BSD-3-Clause - license_family: BSD - size: 48959 - timestamp: 1731707562362 -- conda: https://conda.anaconda.org/conda-forge/linux-64/httptools-0.6.4-py311h9ecbd09_0.conda - sha256: 1775083ed07111778559e9a0b47033c13cbe6f1c489eaceff204f6cf7a9e02da - md5: c16a94f3d0c6a2a495b3071cff3f598d - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - python >=3.11,<3.12.0a0 - - python_abi 3.11.* *_cp311 - arch: x86_64 - platform: linux - license: MIT - license_family: MIT - size: 99955 - timestamp: 1732707791797 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/httptools-0.6.4-py311ha879c10_0.conda - sha256: f33cd0bb6db6bf8ad44bb908a0befe5564921a570c4c39784c518be81ddd6ab0 - md5: fd2dfd6afe96a5843af75eb4f085ed56 - depends: - - libgcc >=13 - - python >=3.11,<3.12.0a0 - - python >=3.11,<3.12.0a0 *_cpython - - python_abi 3.11.* *_cp311 - arch: aarch64 - platform: linux - license: MIT - license_family: MIT - size: 98813 - timestamp: 1732707937311 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/httptools-0.6.4-py311h917b07b_0.conda - sha256: 47af7c9e41ea0327f12757527cea28c430ef84aade923d81cc397ebb2bf9eb28 - md5: 4aca39fe9eb4224026c907e1aa8156fb - depends: - - __osx >=11.0 - - python >=3.11,<3.12.0a0 - - python >=3.11,<3.12.0a0 *_cpython - - python_abi 3.11.* *_cp311 - arch: arm64 - platform: osx - license: MIT - license_family: MIT - size: 84562 - timestamp: 1732707884099 -- conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - sha256: cd0f1de3697b252df95f98383e9edb1d00386bfdd03fdf607fa42fe5fcb09950 - md5: d6989ead454181f4f9bc987d3dc4e285 - depends: - - anyio - - certifi - - httpcore 1.* - - idna - - python >=3.9 - license: BSD-3-Clause - license_family: BSD - size: 63082 - timestamp: 1733663449209 -- conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.28.0-pyhd8ed1ab_0.conda - sha256: 3c48ffeb8a425eeba5dfa81a4da4b738a12d2104da0c3b443185029718dd6e48 - md5: 317f31a6fe151756ef10e7ed97a15f8a - depends: - - filelock - - fsspec >=2023.5.0 - - packaging >=20.9 - - python >=3.9 - - pyyaml >=5.1 - - requests - - tqdm >=4.42.1 - - typing-extensions >=3.7.4.3 - - typing_extensions >=3.7.4.3 - license: Apache-2.0 - license_family: APACHE - size: 284361 - timestamp: 1738349452337 -- conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - sha256: 77af6f5fe8b62ca07d09ac60127a30d9069fdc3c68d6b256754d0ffb1f7779f8 - md5: 8e6923fc12f1fe8f8c4e5c9f343256ac - depends: - - python >=3.9 - license: MIT - license_family: MIT - size: 17397 - timestamp: 1737618427549 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda - sha256: 813298f2e54ef087dbfc9cc2e56e08ded41de65cff34c639cc8ba4e27e4540c9 - md5: 268203e8b983fddb6412b36f2024e75c - depends: - - libgcc-ng >=12 - - libstdcxx-ng >=12 - arch: aarch64 - platform: linux - license: MIT - license_family: MIT - size: 12282786 - timestamp: 1720853454991 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda - sha256: 9ba12c93406f3df5ab0a43db8a4b4ef67a5871dfd401010fbe29b218b2cbe620 - md5: 5eb22c1d7b3fc4abb50d92d621583137 - depends: - - __osx >=11.0 - arch: arm64 - platform: osx - license: MIT - license_family: MIT - size: 11857802 - timestamp: 1720853997952 -- conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - sha256: d7a472c9fd479e2e8dcb83fb8d433fce971ea369d704ece380e876f9c3494e87 - md5: 39a4f67be3286c86d696df570b1201b7 - depends: - - python >=3.9 - license: BSD-3-Clause - license_family: BSD - size: 49765 - timestamp: 1733211921194 -- conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_1.conda - sha256: 13766b88fc5b23581530d3a0287c0c58ad82f60401afefab283bf158d2be55a9 - md5: 315607a3030ad5d5227e76e0733798ff - depends: - - python >=3.9 - - zipp >=0.5 - license: Apache-2.0 - license_family: APACHE - size: 28623 - timestamp: 1733223207185 -- conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.5-pyhd8ed1ab_0.conda - sha256: 98977694b9ecaa3218662f843425f39501f81973c450f995eec68f1803ed71c3 - md5: 2752a6ed44105bfb18c9bef1177d9dcd - depends: - - markupsafe >=2.0 - - python >=3.9 - license: BSD-3-Clause - license_family: BSD - size: 112561 - timestamp: 1734824044952 -- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - sha256: 19d8bd5bb2fde910ec59e081eeb59529491995ce0d653a5209366611023a0b3a - md5: 4ebae00eae9705b0c3d6d1018a81d047 - depends: - - importlib-metadata >=4.8.3 - - jupyter_core >=4.12,!=5.0.* - - python >=3.9 - - python-dateutil >=2.8.2 - - pyzmq >=23.0 - - tornado >=6.2 - - traitlets >=5.3 - license: BSD-3-Clause - license_family: BSD - size: 106342 - timestamp: 1733441040958 -- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - sha256: 732b1e8536bc22a5a174baa79842d79db2f4956d90293dd82dc1b3f6099bcccd - md5: 0a2980dada0dd7fd0998f0342308b1b1 - depends: - - __unix - - platformdirs >=2.5 - - python >=3.8 - - traitlets >=5.3 - license: BSD-3-Clause - license_family: BSD - size: 57671 - timestamp: 1727163547058 -- conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 - sha256: 150c05a6e538610ca7c43beb3a40d65c90537497a4f6a5f4d15ec0451b6f5ebb - md5: 30186d27e2c9fa62b45fb1476b7200e3 - depends: - - libgcc-ng >=10.3.0 - arch: x86_64 - platform: linux - license: LGPL-2.1-or-later - size: 117831 - timestamp: 1646151697040 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/keyutils-1.6.1-h4e544f5_0.tar.bz2 - sha256: 6d4233d97a9b38acbb26e1268bcf8c10a8e79c2aed7e5a385ec3769967e3e65b - md5: 1f24853e59c68892452ef94ddd8afd4b - depends: - - libgcc-ng >=10.3.0 - arch: aarch64 - platform: linux - license: LGPL-2.1-or-later - size: 112327 - timestamp: 1646166857935 -- conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda - sha256: 99df692f7a8a5c27cd14b5fb1374ee55e756631b9c3d659ed3ee60830249b238 - md5: 3f43953b7d3fb3aaa1d0d0723d91e368 - depends: - - keyutils >=1.6.1,<2.0a0 - - libedit >=3.1.20191231,<3.2.0a0 - - libedit >=3.1.20191231,<4.0a0 - - libgcc-ng >=12 - - libstdcxx-ng >=12 - - openssl >=3.3.1,<4.0a0 - arch: x86_64 - platform: linux - license: MIT - license_family: MIT - size: 1370023 - timestamp: 1719463201255 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/krb5-1.21.3-h50a48e9_0.conda - sha256: 0ec272afcf7ea7fbf007e07a3b4678384b7da4047348107b2ae02630a570a815 - md5: 29c10432a2ca1472b53f299ffb2ffa37 - depends: - - keyutils >=1.6.1,<2.0a0 - - libedit >=3.1.20191231,<3.2.0a0 - - libedit >=3.1.20191231,<4.0a0 - - libgcc-ng >=12 - - libstdcxx-ng >=12 - - openssl >=3.3.1,<4.0a0 - arch: aarch64 - platform: linux - license: MIT - license_family: MIT - size: 1474620 - timestamp: 1719463205834 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda - sha256: 4442f957c3c77d69d9da3521268cad5d54c9033f1a73f99cde0a3658937b159b - md5: c6dc8a0fdec13a0565936655c33069a1 - depends: - - __osx >=11.0 - - libcxx >=16 - - libedit >=3.1.20191231,<3.2.0a0 - - libedit >=3.1.20191231,<4.0a0 - - openssl >=3.3.1,<4.0a0 - arch: arm64 - platform: osx - license: MIT - license_family: MIT - size: 1155530 - timestamp: 1719463474401 -- conda: https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.16-hb7c19ff_0.conda - sha256: 5c878d104b461b7ef922abe6320711c0d01772f4cd55de18b674f88547870041 - md5: 51bb7010fc86f70eee639b4bb7a894f5 - depends: - - libgcc-ng >=12 - - libjpeg-turbo >=3.0.0,<4.0a0 - - libtiff >=4.6.0,<4.8.0a0 - arch: x86_64 - platform: linux - license: MIT - license_family: MIT - size: 245247 - timestamp: 1701647787198 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lcms2-2.16-h922389a_0.conda - sha256: be4847b1014d3cbbc524a53bdbf66182f86125775020563e11d914c8468dd97d - md5: ffdd8267a04c515e7ce69c727b051414 - depends: - - libgcc-ng >=12 - - libjpeg-turbo >=3.0.0,<4.0a0 - - libtiff >=4.6.0,<4.8.0a0 - arch: aarch64 - platform: linux - license: MIT - license_family: MIT - size: 296219 - timestamp: 1701647961116 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.16-ha0e7c42_0.conda - sha256: 151e0c84feb7e0747fabcc85006b8973b22f5abbc3af76a9add0b0ef0320ebe4 - md5: 66f6c134e76fe13cce8a9ea5814b5dd5 - depends: - - libjpeg-turbo >=3.0.0,<4.0a0 - - libtiff >=4.6.0,<4.8.0a0 - arch: arm64 - platform: osx - license: MIT - license_family: MIT - size: 211959 - timestamp: 1701647962657 -- conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_2.conda - sha256: 7c91cea91b13f4314d125d1bedb9d03a29ebbd5080ccdea70260363424646dbe - md5: 048b02e3962f066da18efe3a21b77672 - depends: - - __glibc >=2.17,<3.0.a0 - constrains: - - binutils_impl_linux-64 2.43 - arch: x86_64 - platform: linux - license: GPL-3.0-only - license_family: GPL - size: 669211 - timestamp: 1729655358674 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_2.conda - sha256: 80ec7e8f006196808fac5bd4b3773a652847f97bbf08044cd87731424ac64f8b - md5: fcbde5ea19d55468953bf588770c0501 - constrains: - - binutils_impl_linux-aarch64 2.43 - arch: aarch64 - platform: linux - license: GPL-3.0-only - license_family: GPL - size: 698245 - timestamp: 1729655345825 -- conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 - sha256: cb55f36dcd898203927133280ae1dc643368af041a48bcf7c026acb7c47b0c12 - md5: 76bbff344f0134279f225174e9064c8f - depends: - - libgcc-ng >=12 - - libstdcxx-ng >=12 - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 281798 - timestamp: 1657977462600 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.0.0-h4de3ea5_0.tar.bz2 - sha256: 2d09ef9b7796d83364957e420b41c32d94e628c3f0520b61c332518a7b5cd586 - md5: 1a0ffc65e03ce81559dbcb0695ad1476 - depends: - - libgcc-ng >=12 - - libstdcxx-ng >=12 - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 262096 - timestamp: 1657978241894 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 - sha256: 6f068bb53dfb6147d3147d981bb851bb5477e769407ad4e6a68edf482fdcb958 - md5: de462d5aacda3b30721b512c5da4e742 - depends: - - libcxx >=13.0.1 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: Apache - size: 215721 - timestamp: 1657977558796 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda - sha256: 143a586aa67d50622ef703de57b9d43f44945836d6568e0e7aa174bd8c45e0d4 - md5: 488f260ccda0afaf08acb286db439c2f - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libstdcxx >=13 - constrains: - - libabseil-static =20240722.0=cxx17* - - abseil-cpp =20240722.0 - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 1311599 - timestamp: 1736008414161 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h18dbdb1_4.conda - sha256: bb6c5fb3b8de5f90735c5252b57efb3c268ee222c755569dac18065f05147670 - md5: 633b9fe454ffea2aaf29e191d946a83b - depends: - - libgcc >=13 - - libstdcxx >=13 - constrains: - - abseil-cpp =20240722.0 - - libabseil-static =20240722.0=cxx17* - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 1334844 - timestamp: 1736008472455 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_h07bc746_4.conda - sha256: 05fa5e5e908962b9c5aba95f962e2ca81d9599c4715aebe5e4ddb72b309d1770 - md5: c2d95bd7aa8d564a9bd7eca5e571a5b3 - depends: - - __osx >=11.0 - - libcxx >=18 - constrains: - - libabseil-static =20240722.0=cxx17* - - abseil-cpp =20240722.0 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: Apache - size: 1178260 - timestamp: 1736008642885 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-19.0.0-h00a82cf_8_cpu.conda - build_number: 8 - sha256: dcac39be95b9afe42bc9b7bfcfa258e31e413a4cb79c49f6707edf2838e8d64c - md5: 51e31b59290c09b58d290f66b908999b - depends: - - __glibc >=2.17,<3.0.a0 - - aws-crt-cpp >=0.29.9,<0.29.10.0a0 - - aws-sdk-cpp >=1.11.489,<1.11.490.0a0 - - azure-core-cpp >=1.14.0,<1.14.1.0a0 - - azure-identity-cpp >=1.10.0,<1.10.1.0a0 - - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 - - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 - - bzip2 >=1.0.8,<2.0a0 - - glog >=0.7.1,<0.8.0a0 - - libabseil * cxx17* - - libabseil >=20240722.0,<20240723.0a0 - - libbrotlidec >=1.1.0,<1.2.0a0 - - libbrotlienc >=1.1.0,<1.2.0a0 - - libgcc >=13 - - libgoogle-cloud >=2.34.0,<2.35.0a0 - - libgoogle-cloud-storage >=2.34.0,<2.35.0a0 - - libopentelemetry-cpp >=1.18.0,<1.19.0a0 - - libprotobuf >=5.28.3,<5.28.4.0a0 - - libre2-11 >=2024.7.2 - - libstdcxx >=13 - - libutf8proc >=2.10.0,<2.11.0a0 - - libzlib >=1.3.1,<2.0a0 - - lz4-c >=1.10.0,<1.11.0a0 - - orc >=2.0.3,<2.0.4.0a0 - - re2 - - snappy >=1.2.1,<1.3.0a0 - - zstd >=1.5.6,<1.6.0a0 - constrains: - - parquet-cpp <0.0a0 - - arrow-cpp <0.0a0 - - apache-arrow-proc =*=cpu - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 8969999 - timestamp: 1737824740139 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-19.0.0-h03ebaaf_8_cpu.conda - build_number: 8 - sha256: ca5db2ba71de0c4fb54ee12e3b841e3e90b988ae7a5935fae3cce90111b5cb6d - md5: 1ac6f73a63d715590a7ad0113a578762 - depends: - - aws-crt-cpp >=0.29.9,<0.29.10.0a0 - - aws-sdk-cpp >=1.11.489,<1.11.490.0a0 - - azure-core-cpp >=1.14.0,<1.14.1.0a0 - - azure-identity-cpp >=1.10.0,<1.10.1.0a0 - - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 - - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 - - bzip2 >=1.0.8,<2.0a0 - - glog >=0.7.1,<0.8.0a0 - - libabseil * cxx17* - - libabseil >=20240722.0,<20240723.0a0 - - libbrotlidec >=1.1.0,<1.2.0a0 - - libbrotlienc >=1.1.0,<1.2.0a0 - - libgcc >=13 - - libgoogle-cloud >=2.34.0,<2.35.0a0 - - libgoogle-cloud-storage >=2.34.0,<2.35.0a0 - - libopentelemetry-cpp >=1.18.0,<1.19.0a0 - - libprotobuf >=5.28.3,<5.28.4.0a0 - - libre2-11 >=2024.7.2 - - libstdcxx >=13 - - libutf8proc >=2.10.0,<2.11.0a0 - - libzlib >=1.3.1,<2.0a0 - - lz4-c >=1.10.0,<1.11.0a0 - - orc >=2.0.3,<2.0.4.0a0 - - re2 - - snappy >=1.2.1,<1.3.0a0 - - zstd >=1.5.6,<1.6.0a0 - constrains: - - arrow-cpp <0.0a0 - - apache-arrow-proc =*=cpu - - parquet-cpp <0.0a0 - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 8213318 - timestamp: 1737808895185 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-19.0.0-h819e3af_8_cpu.conda - build_number: 8 - sha256: 825afabd1c998dfddce9600584c492296a15219d441c6e3029e6c6228200d695 - md5: fbe0ce0ef6d386ab832ee5cca2ab3048 - depends: - - __osx >=11.0 - - aws-crt-cpp >=0.29.9,<0.29.10.0a0 - - aws-sdk-cpp >=1.11.489,<1.11.490.0a0 - - azure-core-cpp >=1.14.0,<1.14.1.0a0 - - azure-identity-cpp >=1.10.0,<1.10.1.0a0 - - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 - - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 - - bzip2 >=1.0.8,<2.0a0 - - glog >=0.7.1,<0.8.0a0 - - libabseil * cxx17* - - libabseil >=20240722.0,<20240723.0a0 - - libbrotlidec >=1.1.0,<1.2.0a0 - - libbrotlienc >=1.1.0,<1.2.0a0 - - libcxx >=18 - - libgoogle-cloud >=2.34.0,<2.35.0a0 - - libgoogle-cloud-storage >=2.34.0,<2.35.0a0 - - libopentelemetry-cpp >=1.18.0,<1.19.0a0 - - libprotobuf >=5.28.3,<5.28.4.0a0 - - libre2-11 >=2024.7.2 - - libutf8proc >=2.10.0,<2.11.0a0 - - libzlib >=1.3.1,<2.0a0 - - lz4-c >=1.10.0,<1.11.0a0 - - orc >=2.0.3,<2.0.4.0a0 - - re2 - - snappy >=1.2.1,<1.3.0a0 - - zstd >=1.5.6,<1.6.0a0 - constrains: - - arrow-cpp <0.0a0 - - apache-arrow-proc =*=cpu - - parquet-cpp <0.0a0 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: APACHE - size: 5573619 - timestamp: 1737806044972 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-19.0.0-hcb10f89_8_cpu.conda - build_number: 8 - sha256: bf8f64403685eb3ab6ebc5a25cc3a70431a1f822469bf96b0ee80c169deec0ac - md5: dafba09929a58e10bb8231ff7966e623 - depends: - - __glibc >=2.17,<3.0.a0 - - libarrow 19.0.0 h00a82cf_8_cpu - - libgcc >=13 - - libstdcxx >=13 - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 637555 - timestamp: 1737824783456 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-19.0.0-h3b568fd_8_cpu.conda - build_number: 8 - sha256: 154fe9bee1a1e3c96497fcbf3c01191965d5c4e9718dcbf8502035d7ff633499 - md5: e015edb6317c81893f9ce4865bbd55f4 - depends: - - libarrow 19.0.0 h03ebaaf_8_cpu - - libgcc >=13 - - libstdcxx >=13 - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 602892 - timestamp: 1737808980001 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-19.0.0-hf07054f_8_cpu.conda - build_number: 8 - sha256: 66ce35077dae435cd34644d53159af14afd62452eeec8f63cd55adb11e7f2780 - md5: 68cd272eccf7b4fcb0a3bab95e89e71e - depends: - - __osx >=11.0 - - libarrow 19.0.0 h819e3af_8_cpu - - libcxx >=18 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: APACHE - size: 500365 - timestamp: 1737806169385 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-19.0.0-hcb10f89_8_cpu.conda - build_number: 8 - sha256: dc4a0f13428c9bd9781e25b67f5f52a92b8c4beafa2435fe5127e9fac7969218 - md5: 66e19108e4597b9a35d0886607c2d8a8 - depends: - - __glibc >=2.17,<3.0.a0 - - libarrow 19.0.0 h00a82cf_8_cpu - - libarrow-acero 19.0.0 hcb10f89_8_cpu - - libgcc >=13 - - libparquet 19.0.0 h081d1f1_8_cpu - - libstdcxx >=13 - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 604335 - timestamp: 1737824891062 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-19.0.0-h3b568fd_8_cpu.conda - build_number: 8 - sha256: f038f979b3357124a548dd83880f94284355a90e4736caaabd23c750cf06eaa9 - md5: 03f35d7f35dae0e05f5f4f747d7eb6e7 - depends: - - libarrow 19.0.0 h03ebaaf_8_cpu - - libarrow-acero 19.0.0 h3b568fd_8_cpu - - libgcc >=13 - - libparquet 19.0.0 hfc78867_8_cpu - - libstdcxx >=13 - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 579626 - timestamp: 1737809072479 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-19.0.0-hf07054f_8_cpu.conda - build_number: 8 - sha256: 6934ce0503472f002695d45ae12a8f2948e10e7a0b7430330a4d0d83f3e5ca27 - md5: 1a941d1ddc16b532790781a4becdc881 - depends: - - __osx >=11.0 - - libarrow 19.0.0 h819e3af_8_cpu - - libarrow-acero 19.0.0 hf07054f_8_cpu - - libcxx >=18 - - libparquet 19.0.0 h636d7b7_8_cpu - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: APACHE - size: 501001 - timestamp: 1737807214184 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-19.0.0-h08228c5_8_cpu.conda - build_number: 8 - sha256: e370ee738d3963120f715343a27cf041c62a3ee8bb19e25da9115ec4bae5f2de - md5: e5dd1926e5a4b23de8ba4eacc8eb9b2d - depends: - - __glibc >=2.17,<3.0.a0 - - libabseil * cxx17* - - libabseil >=20240722.0,<20240723.0a0 - - libarrow 19.0.0 h00a82cf_8_cpu - - libarrow-acero 19.0.0 hcb10f89_8_cpu - - libarrow-dataset 19.0.0 hcb10f89_8_cpu - - libgcc >=13 - - libprotobuf >=5.28.3,<5.28.4.0a0 - - libstdcxx >=13 - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 521475 - timestamp: 1737824942852 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-19.0.0-h1e9d426_8_cpu.conda - build_number: 8 - sha256: 92e1fea8557a931c273ea3bd3bf73a4f4f0c566844dcedf78b9a16e5cf6cab56 - md5: ef08fcb5c165cdc743336bd8f4cbed69 - depends: - - libabseil * cxx17* - - libabseil >=20240722.0,<20240723.0a0 - - libarrow 19.0.0 h03ebaaf_8_cpu - - libarrow-acero 19.0.0 h3b568fd_8_cpu - - libarrow-dataset 19.0.0 h3b568fd_8_cpu - - libgcc >=13 - - libprotobuf >=5.28.3,<5.28.4.0a0 - - libstdcxx >=13 - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 516126 - timestamp: 1737809118915 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-19.0.0-h4239455_8_cpu.conda - build_number: 8 - sha256: 445d2ca20b07e57270f3b07b62c09794369413e5ff3716d9c73d0ad360969583 - md5: a39953d9b03b0463f4ccc187a8bcfcca - depends: - - __osx >=11.0 - - libabseil * cxx17* - - libabseil >=20240722.0,<20240723.0a0 - - libarrow 19.0.0 h819e3af_8_cpu - - libarrow-acero 19.0.0 hf07054f_8_cpu - - libarrow-dataset 19.0.0 hf07054f_8_cpu - - libcxx >=18 - - libprotobuf >=5.28.3,<5.28.4.0a0 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: APACHE - size: 449672 - timestamp: 1737807386331 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-28_h59b9bed_openblas.conda - build_number: 28 - sha256: 93fbcf2800b859b7ca5add3ab5d3aa11c6a6ff4b942a1cea4bf644f78488edb8 - md5: 73e2a99fdeb8531d50168987378fda8a - depends: - - libopenblas >=0.3.28,<0.3.29.0a0 - - libopenblas >=0.3.28,<1.0a0 - constrains: - - libcblas =3.9.0=28*_openblas - - blas =2.128=openblas - - liblapack =3.9.0=28*_openblas - - liblapacke =3.9.0=28*_openblas - arch: x86_64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 16621 - timestamp: 1738114033763 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-28_h1a9f1db_openblas.conda - build_number: 28 - sha256: a50dc7ed1f49789aab4ffb560d9a46b5dc3f059a925282f699c1a96fa566a1a0 - md5: 88dfbb3875d62b431aa676b4a54734bf - depends: - - libopenblas >=0.3.28,<0.3.29.0a0 - - libopenblas >=0.3.28,<1.0a0 - constrains: - - liblapack =3.9.0=28*_openblas - - libcblas =3.9.0=28*_openblas - - blas =2.128=openblas - - liblapacke =3.9.0=28*_openblas - arch: aarch64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 16697 - timestamp: 1738114082682 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-28_h10e41b3_openblas.conda - build_number: 28 - sha256: 5bea855a1a7435ce2238535aa4b13db8af8ee301d99a42b083b63fa64c1ea144 - md5: 166166d84a0e9571dc50210baf993b46 - depends: - - libopenblas >=0.3.28,<0.3.29.0a0 - - libopenblas >=0.3.28,<1.0a0 - constrains: - - liblapack =3.9.0=28*_openblas - - liblapacke =3.9.0=28*_openblas - - blas =2.128=openblas - - libcblas =3.9.0=28*_openblas - arch: arm64 - platform: osx - license: BSD-3-Clause - license_family: BSD - size: 16840 - timestamp: 1738114389937 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hb9d3cd8_2.conda - sha256: d9db2de60ea917298e658143354a530e9ca5f9c63471c65cf47ab39fd2f429e3 - md5: 41b599ed2b02abcfdd84302bff174b23 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - arch: x86_64 - platform: linux - license: MIT - license_family: MIT - size: 68851 - timestamp: 1725267660471 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlicommon-1.1.0-h86ecc28_2.conda - sha256: 64112af913974b309d67fd342e065fd184347043a6387933b3db796778a28019 - md5: 3ee026955c688f551a9999840cff4c67 - depends: - - libgcc >=13 - arch: aarch64 - platform: linux - license: MIT - license_family: MIT - size: 68982 - timestamp: 1725267774142 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.1.0-hd74edd7_2.conda - sha256: 839dacb741bdbb25e58f42088a2001b649f4f12195aeb700b5ddfca3267749e5 - md5: d0bf1dff146b799b319ea0434b93f779 - depends: - - __osx >=11.0 - arch: arm64 - platform: osx - license: MIT - license_family: MIT - size: 68426 - timestamp: 1725267943211 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hb9d3cd8_2.conda - sha256: 2892d512cad096cb03f1b66361deeab58b64e15ba525d6592bb6d609e7045edf - md5: 9566f0bd264fbd463002e759b8a82401 - depends: - - __glibc >=2.17,<3.0.a0 - - libbrotlicommon 1.1.0 hb9d3cd8_2 - - libgcc >=13 - arch: x86_64 - platform: linux - license: MIT - license_family: MIT - size: 32696 - timestamp: 1725267669305 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlidec-1.1.0-h86ecc28_2.conda - sha256: 94c808d9ca3eb6ef30976a9843e27f027cf3a1e84e8c6835cbb696b7bdb35c4c - md5: e64d0f3b59c7c4047446b97a8624a72d - depends: - - libbrotlicommon 1.1.0 h86ecc28_2 - - libgcc >=13 - arch: aarch64 - platform: linux - license: MIT - license_family: MIT - size: 31708 - timestamp: 1725267783442 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.1.0-hd74edd7_2.conda - sha256: 6c6862eb274f21a7c0b60e5345467a12e6dda8b9af4438c66d496a2c1a538264 - md5: 55e66e68ce55523a6811633dd1ac74e2 - depends: - - __osx >=11.0 - - libbrotlicommon 1.1.0 hd74edd7_2 - arch: arm64 - platform: osx - license: MIT - license_family: MIT - size: 28378 - timestamp: 1725267980316 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.1.0-hb9d3cd8_2.conda - sha256: 779f58174e99de3600e939fa46eddb453ec5d3c60bb46cdaa8b4c127224dbf29 - md5: 06f70867945ea6a84d35836af780f1de - depends: - - __glibc >=2.17,<3.0.a0 - - libbrotlicommon 1.1.0 hb9d3cd8_2 - - libgcc >=13 - arch: x86_64 - platform: linux - license: MIT - license_family: MIT - size: 281750 - timestamp: 1725267679782 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlienc-1.1.0-h86ecc28_2.conda - sha256: 41385e17bc73834b235c5aff12d6d82eccb534acb3c30986996f9dad92a0d54c - md5: 0e9bd365480c72b25c71a448257b537d - depends: - - libbrotlicommon 1.1.0 h86ecc28_2 - - libgcc >=13 - arch: aarch64 - platform: linux - license: MIT - license_family: MIT - size: 290230 - timestamp: 1725267792697 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlienc-1.1.0-hd74edd7_2.conda - sha256: eeb1eb0d58b9d02bc1b98dc0a058f104ab168eb2f7d1c7bfa0570a12cfcdb7b7 - md5: 4f3a434504c67b2c42565c0b85c1885c - depends: - - __osx >=11.0 - - libbrotlicommon 1.1.0 hd74edd7_2 - arch: arm64 - platform: osx - license: MIT - license_family: MIT - size: 279644 - timestamp: 1725268003553 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-28_he106b2a_openblas.conda - build_number: 28 - sha256: de293e117db53e5d78b579136509c35a5e4ad11529c05f9af83cf89be4d30de1 - md5: 4e20a1c00b4e8a984aac0f6cce59e3ac - depends: - - libblas 3.9.0 28_h59b9bed_openblas - constrains: - - blas =2.128=openblas - - liblapack =3.9.0=28*_openblas - - liblapacke =3.9.0=28*_openblas - arch: x86_64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 16539 - timestamp: 1738114043618 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-28_hab92f65_openblas.conda - build_number: 28 - sha256: ed62f13a85726f568e17ad569b5cc01a49a6c7bd334802cf1c1b15e9d10e7e93 - md5: 8cff453f547365131be5647c7680ac6d - depends: - - libblas 3.9.0 28_h1a9f1db_openblas - constrains: - - liblapack =3.9.0=28*_openblas - - blas =2.128=openblas - - liblapacke =3.9.0=28*_openblas - arch: aarch64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 16655 - timestamp: 1738114088527 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-28_hb3479ef_openblas.conda - build_number: 28 - sha256: f08adea59381babb3568e6d23e52aff874cbc25f299821647ab1127d1e1332ca - md5: 30942dea911ce333765003a8adec4e8a - depends: - - libblas 3.9.0 28_h10e41b3_openblas - constrains: - - blas =2.128=openblas - - liblapacke =3.9.0=28*_openblas - - liblapack =3.9.0=28*_openblas - arch: arm64 - platform: osx - license: BSD-3-Clause - license_family: BSD - size: 16788 - timestamp: 1738114399962 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libcrc32c-1.1.2-h9c3ff4c_0.tar.bz2 - sha256: fd1d153962764433fe6233f34a72cdeed5dcf8a883a85769e8295ce940b5b0c5 - md5: c965a5aa0d5c1c37ffc62dff36e28400 - depends: - - libgcc-ng >=9.4.0 - - libstdcxx-ng >=9.4.0 - arch: x86_64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 20440 - timestamp: 1633683576494 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcrc32c-1.1.2-h01db608_0.tar.bz2 - sha256: b8b8c57a87da86b3ea24280fd6aa8efaf92f4e684b606bf2db5d3cb06ffbe2ea - md5: 268ee639c17ada0002fb04dd21816cc2 - depends: - - libgcc-ng >=9.4.0 - - libstdcxx-ng >=9.4.0 - arch: aarch64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 18669 - timestamp: 1633683724891 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcrc32c-1.1.2-hbdafb3b_0.tar.bz2 - sha256: 58477b67cc719060b5b069ba57161e20ba69b8695d154a719cb4b60caf577929 - md5: 32bd82a6a625ea6ce090a81c3d34edeb - depends: - - libcxx >=11.1.0 - arch: arm64 - platform: osx - license: BSD-3-Clause - license_family: BSD - size: 18765 - timestamp: 1633683992603 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.11.1-h332b0f4_0.conda - sha256: 3cd4075b2a7b5562e46c8ec626f6f9ca57aeecaa94ff7df57eca26daa94c9906 - md5: 2b3e0081006dc21e8bf53a91c83a055c - depends: - - __glibc >=2.17,<3.0.a0 - - krb5 >=1.21.3,<1.22.0a0 - - libgcc >=13 - - libnghttp2 >=1.64.0,<2.0a0 - - libssh2 >=1.11.1,<2.0a0 - - libzlib >=1.3.1,<2.0a0 - - openssl >=3.4.0,<4.0a0 - - zstd >=1.5.6,<1.6.0a0 - arch: x86_64 - platform: linux - license: curl - license_family: MIT - size: 423011 - timestamp: 1733999897624 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcurl-8.11.1-h6702fde_0.conda - sha256: 9fc65d21a58f4aad1bc39dfb94a178893aeb035850c5cf0ed9736674279f390b - md5: 7dec1cd271c403d1636bda5aa388a55d - depends: - - krb5 >=1.21.3,<1.22.0a0 - - libgcc >=13 - - libnghttp2 >=1.64.0,<2.0a0 - - libssh2 >=1.11.1,<2.0a0 - - libzlib >=1.3.1,<2.0a0 - - openssl >=3.4.0,<4.0a0 - - zstd >=1.5.6,<1.6.0a0 - arch: aarch64 - platform: linux - license: curl - license_family: MIT - size: 440737 - timestamp: 1733999835504 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.11.1-h73640d1_0.conda - sha256: f47c35938144c23278987c7d12096f6a42d7c850ffc277222b032073412383b6 - md5: 46d7524cabfdd199bffe63f8f19a552b - depends: - - __osx >=11.0 - - krb5 >=1.21.3,<1.22.0a0 - - libnghttp2 >=1.64.0,<2.0a0 - - libssh2 >=1.11.1,<2.0a0 - - libzlib >=1.3.1,<2.0a0 - - openssl >=3.4.0,<4.0a0 - - zstd >=1.5.6,<1.6.0a0 - arch: arm64 - platform: osx - license: curl - license_family: MIT - size: 385098 - timestamp: 1734000160270 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda - sha256: 776092346da87a2a23502e14d91eb0c32699c4a1522b7331537bd1c3751dcff5 - md5: 5b3e1610ff8bd5443476b91d618f5b77 - depends: - - __osx >=11.0 - arch: arm64 - platform: osx - license: Apache-2.0 WITH LLVM-exception - license_family: Apache - size: 523505 - timestamp: 1736877862502 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.23-h4ddbbb0_0.conda - sha256: 511d801626d02f4247a04fff957cc6e9ec4cc7e8622bd9acd076bcdc5de5fe66 - md5: 8dfae1d2e74767e9ce36d5fa0d8605db - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - arch: x86_64 - platform: linux - license: MIT - license_family: MIT - size: 72255 - timestamp: 1734373823254 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libdeflate-1.23-h5e3c512_0.conda - sha256: 959419d87cd2b789a9055db95704c614f31aeb70bef7949fa2f734122a3a2863 - md5: 7e7ca2607b11b180120cefc2354fc0cb - depends: - - libgcc >=13 - arch: aarch64 - platform: linux - license: MIT - license_family: MIT - size: 69862 - timestamp: 1734373858306 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.23-hec38601_0.conda - sha256: 887c02deaed6d583459eba6367023e36d8761085b2f7126e389424f57155da53 - md5: 1d8b9588be14e71df38c525767a1ac30 - depends: - - __osx >=11.0 - arch: arm64 - platform: osx - license: MIT - license_family: MIT - size: 54132 - timestamp: 1734373971372 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda - sha256: d789471216e7aba3c184cd054ed61ce3f6dac6f87a50ec69291b9297f8c18724 - md5: c277e0a4d549b03ac1e9d6cbbe3d017b - depends: - - ncurses - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - ncurses >=6.5,<7.0a0 - arch: x86_64 - platform: linux - license: BSD-2-Clause - license_family: BSD - size: 134676 - timestamp: 1738479519902 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20250104-pl5321h976ea20_0.conda - sha256: c0b27546aa3a23d47919226b3a1635fccdb4f24b94e72e206a751b33f46fd8d6 - md5: fb640d776fc92b682a14e001980825b1 - depends: - - ncurses - - libgcc >=13 - - ncurses >=6.5,<7.0a0 - arch: aarch64 - platform: linux - license: BSD-2-Clause - license_family: BSD - size: 148125 - timestamp: 1738479808948 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda - sha256: 66aa216a403de0bb0c1340a88d1a06adaff66bae2cfd196731aa24db9859d631 - md5: 44083d2d2c2025afca315c7a172eab2b - depends: - - ncurses - - __osx >=11.0 - - ncurses >=6.5,<7.0a0 - arch: arm64 - platform: osx - license: BSD-2-Clause - license_family: BSD - size: 107691 - timestamp: 1738479560845 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda - sha256: 1cd6048169fa0395af74ed5d8f1716e22c19a81a8a36f934c110ca3ad4dd27b4 - md5: 172bf1cd1ff8629f2b1179945ed45055 - depends: - - libgcc-ng >=12 - arch: x86_64 - platform: linux - license: BSD-2-Clause - license_family: BSD - size: 112766 - timestamp: 1702146165126 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libev-4.33-h31becfc_2.conda - sha256: 973af77e297f1955dd1f69c2cbdc5ab9dfc88388a5576cd152cda178af0fd006 - md5: a9a13cb143bbaa477b1ebaefbe47a302 - depends: - - libgcc-ng >=12 - arch: aarch64 - platform: linux - license: BSD-2-Clause - license_family: BSD - size: 115123 - timestamp: 1702146237623 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libev-4.33-h93a5062_2.conda - sha256: 95cecb3902fbe0399c3a7e67a5bed1db813e5ab0e22f4023a5e0f722f2cc214f - md5: 36d33e440c31857372a72137f78bacf5 - arch: arm64 - platform: osx - license: BSD-2-Clause - license_family: BSD - size: 107458 - timestamp: 1702146414478 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libevent-2.1.12-hf998b51_1.conda - sha256: 2e14399d81fb348e9d231a82ca4d816bf855206923759b69ad006ba482764131 - md5: a1cfcc585f0c42bf8d5546bb1dfb668d - depends: - - libgcc-ng >=12 - - openssl >=3.1.1,<4.0a0 - arch: x86_64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 427426 - timestamp: 1685725977222 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libevent-2.1.12-h4ba1bb4_1.conda - sha256: 01333cc7d6e6985dd5700b43660d90e9e58049182017fd24862088ecbe1458e4 - md5: 96ae6083cd1ac9f6bc81631ac835b317 - depends: - - libgcc-ng >=12 - - openssl >=3.1.1,<4.0a0 - arch: aarch64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 438992 - timestamp: 1685726046519 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libevent-2.1.12-h2757513_1.conda - sha256: 8c136d7586259bb5c0d2b913aaadc5b9737787ae4f40e3ad1beaf96c80b919b7 - md5: 1a109764bff3bdc7bdd84088347d71dc - depends: - - openssl >=3.1.1,<4.0a0 - arch: arm64 - platform: osx - license: BSD-3-Clause - license_family: BSD - size: 368167 - timestamp: 1685726248899 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda - sha256: 56541b98447b58e52d824bd59d6382d609e11de1f8adf20b23143e353d2b8d26 - md5: db833e03127376d461e1e13e76f09b6c - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - constrains: - - expat 2.6.4.* - arch: x86_64 - platform: linux - license: MIT - license_family: MIT - size: 73304 - timestamp: 1730967041968 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.6.4-h5ad3122_0.conda - sha256: f42e758009ba9db90d1fe7992bc3e60d0c52f71fb20923375d2c44ae69a5a2b3 - md5: f1b3fab36861b3ce945a13f0dfdfc688 - depends: - - libgcc >=13 - constrains: - - expat 2.6.4.* - arch: aarch64 - platform: linux - license: MIT - license_family: MIT - size: 72345 - timestamp: 1730967203789 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.4-h286801f_0.conda - sha256: e42ab5ace927ee7c84e3f0f7d813671e1cf3529f5f06ee5899606630498c2745 - md5: 38d2656dd914feb0cab8c629370768bf - depends: - - __osx >=11.0 - constrains: - - expat 2.6.4.* - arch: arm64 - platform: osx - license: MIT - license_family: MIT - size: 64693 - timestamp: 1730967175868 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.2-h7f98852_5.tar.bz2 - sha256: ab6e9856c21709b7b517e940ae7028ae0737546122f83c2aa5d692860c3b149e - md5: d645c6d2ac96843a2bfaccd2d62b3ac3 - depends: - - libgcc-ng >=9.4.0 - arch: x86_64 - platform: linux - license: MIT - license_family: MIT - size: 58292 - timestamp: 1636488182923 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.4.2-h3557bc0_5.tar.bz2 - sha256: 7e9258a102480757fe3faeb225a3ca04dffd10fecd2a958c65cdb4cdf75f2c3c - md5: dddd85f4d52121fab0a8b099c5e06501 - depends: - - libgcc-ng >=9.4.0 - arch: aarch64 - platform: linux - license: MIT - license_family: MIT - size: 59450 - timestamp: 1636488255090 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 - sha256: 41b3d13efb775e340e4dba549ab5c029611ea6918703096b2eaa9c015c0750ca - md5: 086914b672be056eb70fd4285b6783b6 - arch: arm64 - platform: osx - license: MIT - license_family: MIT - size: 39020 - timestamp: 1636488587153 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h77fa898_1.conda - sha256: 53eb8a79365e58849e7b1a068d31f4f9e718dc938d6f2c03e960345739a03569 - md5: 3cb76c3f10d3bc7f1105b2fc9db984df - depends: - - _libgcc_mutex 0.1 conda_forge - - _openmp_mutex >=4.5 - constrains: - - libgomp 14.2.0 h77fa898_1 - - libgcc-ng ==14.2.0=*_1 - arch: x86_64 - platform: linux - license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - size: 848745 - timestamp: 1729027721139 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-14.2.0-he277a41_1.conda - sha256: 5d56757ccad208c79214395b00d006d8d18929a4ba49c47bd9460789a7620943 - md5: 511b511c5445e324066c3377481bcab8 - depends: - - _openmp_mutex >=4.5 - constrains: - - libgcc-ng ==14.2.0=*_1 - - libgomp 14.2.0 he277a41_1 - arch: aarch64 - platform: linux - license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - size: 535243 - timestamp: 1729089435134 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_1.conda - sha256: 3a76969c80e9af8b6e7a55090088bc41da4cffcde9e2c71b17f44d37b7cb87f7 - md5: e39480b9ca41323497b05492a63bc35b - depends: - - libgcc 14.2.0 h77fa898_1 - arch: x86_64 - platform: linux - license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - size: 54142 - timestamp: 1729027726517 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-14.2.0-he9431aa_1.conda - sha256: 9b5cf168a6c7361cae869cb74b716766ee7c6d6b3f6172b32ba9bf91135efdc4 - md5: 0694c249c61469f2c0f7e2990782af21 - depends: - - libgcc 14.2.0 he277a41_1 - arch: aarch64 - platform: linux - license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - size: 54104 - timestamp: 1729089444587 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_1.conda - sha256: fc9e7f22a17faf74da904ebfc4d88699013d2992e55505e4aa0eb01770290977 - md5: f1fd30127802683586f768875127a987 - depends: - - libgfortran5 14.2.0 hd5240d6_1 - constrains: - - libgfortran-ng ==14.2.0=*_1 - arch: x86_64 - platform: linux - license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - size: 53997 - timestamp: 1729027752995 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_1.conda - sha256: cb66e411fa32a5c6040f4e5e2a63c00897aae4c3133a9c004c2e929ccf19575b - md5: 0294b92d2f47a240bebb1e3336b495f1 - depends: - - libgfortran5 14.2.0 hb6113d0_1 - constrains: - - libgfortran-ng ==14.2.0=*_1 - arch: aarch64 - platform: linux - license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - size: 54105 - timestamp: 1729089471124 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda - sha256: 44e541b4821c96b28b27fef5630883a60ce4fee91fd9c79f25a199f8f73f337b - md5: 4a55d9e169114b2b90d3ec4604cd7bbf - depends: - - libgfortran5 13.2.0 hf226fd6_3 - arch: arm64 - platform: osx - license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - size: 110233 - timestamp: 1707330749033 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hd5240d6_1.conda - sha256: d149a37ca73611e425041f33b9d8dbed6e52ec506fe8cc1fc0ee054bddeb6d5d - md5: 9822b874ea29af082e5d36098d25427d - depends: - - libgcc >=14.2.0 - constrains: - - libgfortran 14.2.0 - arch: x86_64 - platform: linux - license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - size: 1462645 - timestamp: 1729027735353 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_1.conda - sha256: a87ff46d19916403cbf68cf1d785bf56b4d1ab7b2552468d2ea775d70782493f - md5: fc068e11b10e18f184e027782baa12b6 - depends: - - libgcc >=14.2.0 - constrains: - - libgfortran 14.2.0 - arch: aarch64 - platform: linux - license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - size: 1102158 - timestamp: 1729089452640 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda - sha256: bafc679eedb468a86aa4636061c55966186399ee0a04b605920d208d97ac579a - md5: 66ac81d54e95c534ae488726c1f698ea - depends: - - llvm-openmp >=8.0.0 - constrains: - - libgfortran 5.0.0 13_2_0_*_3 - arch: arm64 - platform: osx - license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - size: 997381 - timestamp: 1707330687590 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h77fa898_1.conda - sha256: 1911c29975ec99b6b906904040c855772ccb265a1c79d5d75c8ceec4ed89cd63 - md5: cc3573974587f12dda90d96e3e55a702 - depends: - - _libgcc_mutex 0.1 conda_forge - arch: x86_64 - platform: linux - license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - size: 460992 - timestamp: 1729027639220 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_1.conda - sha256: 5aa53874a5e57a00f2e0c2e2910684eb674429cd5fcb803619b226a73e89aedf - md5: 376f0e73abbda6d23c0cb749adc195ef - arch: aarch64 - platform: linux - license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - size: 463521 - timestamp: 1729089357313 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.34.0-h2b5623c_0.conda - sha256: 348ee1dddd82dcef5a185c86e65dda8acfc9b583acc425ccb9b661f2d433b2cc - md5: 2a5142c88dd6132eaa8079f99476e922 - depends: - - __glibc >=2.17,<3.0.a0 - - libabseil * cxx17* - - libabseil >=20240722.0,<20240723.0a0 - - libcurl >=8.11.1,<9.0a0 - - libgcc >=13 - - libgrpc >=1.67.1,<1.68.0a0 - - libprotobuf >=5.28.3,<5.28.4.0a0 - - libstdcxx >=13 - - openssl >=3.4.0,<4.0a0 - constrains: - - libgoogle-cloud 2.34.0 *_0 - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 1256795 - timestamp: 1737286199784 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-2.34.0-hccf9d24_0.conda - sha256: 54267dda8fafc2a2d379ef77b6029d8240e0628d4b29758f788fb903f84397a3 - md5: 1ce0fd876001c40801b40fea22987e41 - depends: - - libabseil * cxx17* - - libabseil >=20240722.0,<20240723.0a0 - - libcurl >=8.11.1,<9.0a0 - - libgcc >=13 - - libgrpc >=1.67.1,<1.68.0a0 - - libprotobuf >=5.28.3,<5.28.4.0a0 - - libstdcxx >=13 - - openssl >=3.4.0,<4.0a0 - constrains: - - libgoogle-cloud 2.34.0 *_0 - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 1256586 - timestamp: 1737285242684 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-2.34.0-hdbe95d5_0.conda - sha256: 919d8cbcd47d5bd2244c55b2bb87e2bd2eed8215996aab8435cb7123ffd9d20e - md5: 69826544e7978fcaa6bc8c1962d96ad6 - depends: - - __osx >=11.0 - - libabseil * cxx17* - - libabseil >=20240722.0,<20240723.0a0 - - libcurl >=8.11.1,<9.0a0 - - libcxx >=18 - - libgrpc >=1.67.1,<1.68.0a0 - - libprotobuf >=5.28.3,<5.28.4.0a0 - - openssl >=3.4.0,<4.0a0 - constrains: - - libgoogle-cloud 2.34.0 *_0 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: Apache - size: 878217 - timestamp: 1737284441192 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.34.0-h0121fbd_0.conda - sha256: aa1b3b30ae6b2eab7c9e6a8e2fd8ec3776f25d2e3f0b6f9dc547ff8083bf25fa - md5: 9f0c43225243c81c6991733edcaafff5 - depends: - - __glibc >=2.17,<3.0.a0 - - libabseil - - libcrc32c >=1.1.2,<1.2.0a0 - - libcurl - - libgcc >=13 - - libgoogle-cloud 2.34.0 h2b5623c_0 - - libstdcxx >=13 - - libzlib >=1.3.1,<2.0a0 - - openssl - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 785792 - timestamp: 1737286406612 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-storage-2.34.0-hb9b2b65_0.conda - sha256: 4ad4fb7c02dcfa4c86dcf9591e0131a01fc0f2c3f2729c12882b944ddf2b8a9d - md5: 0732a5988f7f556f2c1d1f51026fc1be - depends: - - libabseil - - libcrc32c >=1.1.2,<1.2.0a0 - - libcurl - - libgcc >=13 - - libgoogle-cloud 2.34.0 hccf9d24_0 - - libstdcxx >=13 - - libzlib >=1.3.1,<2.0a0 - - openssl - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 739678 - timestamp: 1737285399565 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-storage-2.34.0-h7081f7f_0.conda - sha256: 79f6b93fb330728530036b2b38764e9d42e0eedd3ae7e549ac7eae49acd1e52b - md5: f09cb03f9cf847f1dc41b4c1f65c97c2 - depends: - - __osx >=11.0 - - libabseil - - libcrc32c >=1.1.2,<1.2.0a0 - - libcurl - - libcxx >=18 - - libgoogle-cloud 2.34.0 hdbe95d5_0 - - libzlib >=1.3.1,<2.0a0 - - openssl - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: Apache - size: 529202 - timestamp: 1737285376801 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.67.1-h25350d4_1.conda - sha256: 014627485b3cf0ea18e04c0bab07be7fb98722a3aeeb58477acc7e1c3d2f911e - md5: 0c6497a760b99a926c7c12b74951a39c - depends: - - __glibc >=2.17,<3.0.a0 - - c-ares >=1.34.4,<2.0a0 - - libabseil * cxx17* - - libabseil >=20240722.0,<20240723.0a0 - - libgcc >=13 - - libprotobuf >=5.28.3,<5.28.4.0a0 - - libre2-11 >=2024.7.2 - - libstdcxx >=13 - - libzlib >=1.3.1,<2.0a0 - - openssl >=3.4.0,<4.0a0 - - re2 - constrains: - - grpc-cpp =1.67.1 - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 7792251 - timestamp: 1735584856826 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgrpc-1.67.1-hf7ccdd3_1.conda - sha256: 3fa173dc1d7456aac2b26937daae86a08432a31640e3d6569c62edc661fc9bbe - md5: 8fb41a425bebaeb3d0fa568503612e64 - depends: - - c-ares >=1.34.4,<2.0a0 - - libabseil * cxx17* - - libabseil >=20240722.0,<20240723.0a0 - - libgcc >=13 - - libprotobuf >=5.28.3,<5.28.4.0a0 - - libre2-11 >=2024.7.2 - - libstdcxx >=13 - - libzlib >=1.3.1,<2.0a0 - - openssl >=3.4.0,<4.0a0 - - re2 - constrains: - - grpc-cpp =1.67.1 - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 7430006 - timestamp: 1735585769731 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgrpc-1.67.1-h0a426d6_1.conda - sha256: 630edf63981818ff590367cb95fddbed0f5a390464d0952c90ec81de899e84a6 - md5: 8a3cba079d6ac985e7d73c76a678fbb4 - depends: - - __osx >=11.0 - - c-ares >=1.34.4,<2.0a0 - - libabseil * cxx17* - - libabseil >=20240722.0,<20240723.0a0 - - libcxx >=18 - - libprotobuf >=5.28.3,<5.28.4.0a0 - - libre2-11 >=2024.7.2 - - libzlib >=1.3.1,<2.0a0 - - openssl >=3.4.0,<4.0a0 - - re2 - constrains: - - grpc-cpp =1.67.1 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: APACHE - size: 5311706 - timestamp: 1735585137716 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-hd590300_2.conda - sha256: 8ac2f6a9f186e76539439e50505d98581472fedb347a20e7d1f36429849f05c9 - md5: d66573916ffcf376178462f1b61c941e - depends: - - libgcc-ng >=12 - arch: x86_64 - platform: linux - license: LGPL-2.1-only - size: 705775 - timestamp: 1702682170569 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libiconv-1.17-h31becfc_2.conda - sha256: a30e09d089cb75a0d5b8e5c354694c1317da98261185ed65aa3793e741060614 - md5: 9a8eb13f14de7d761555a98712e6df65 - depends: - - libgcc-ng >=12 - arch: aarch64 - platform: linux - license: LGPL-2.1-only - size: 705787 - timestamp: 1702684557134 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.17-h0d3ecfb_2.conda - sha256: bc7de5097b97bcafcf7deaaed505f7ce02f648aac8eccc0d5a47cc599a1d0304 - md5: 69bda57310071cf6d2b86caf11573d2d - arch: arm64 - platform: osx - license: LGPL-2.1-only - size: 676469 - timestamp: 1702682458114 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda - sha256: b954e09b7e49c2f2433d6f3bb73868eda5e378278b0f8c1dd10a7ef090e14f2f - md5: ea25936bb4080d843790b586850f82b8 - depends: - - libgcc-ng >=12 - constrains: - - jpeg <0.0.0a - arch: x86_64 - platform: linux - license: IJG AND BSD-3-Clause AND Zlib - size: 618575 - timestamp: 1694474974816 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libjpeg-turbo-3.0.0-h31becfc_1.conda - sha256: 675bc1f2a8581cd34a86c412663ec29c5f90c1d9f8d11866aa1ade5cdbdf8429 - md5: ed24e702928be089d9ba3f05618515c6 - depends: - - libgcc-ng >=12 - constrains: - - jpeg <0.0.0a - arch: aarch64 - platform: linux - license: IJG AND BSD-3-Clause AND Zlib - size: 647126 - timestamp: 1694475003570 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.0.0-hb547adb_1.conda - sha256: a42054eaa38e84fc1e5ab443facac4bbc9d1b6b6f23f54b7bf4f1eb687e1d993 - md5: 3ff1e053dc3a2b8e36b9bfa4256a58d1 - constrains: - - jpeg <0.0.0a - arch: arm64 - platform: osx - license: IJG AND BSD-3-Clause AND Zlib - size: 547541 - timestamp: 1694475104253 -- conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-28_h7ac8fdf_openblas.conda - build_number: 28 - sha256: 9530e6840690b78360946390a1d29624734a6b624f02c26631fb451592cbb8ef - md5: 069f40bfbf1dc55c83ddb07fc6a6ef8d - depends: - - libblas 3.9.0 28_h59b9bed_openblas - constrains: - - libcblas =3.9.0=28*_openblas - - blas =2.128=openblas - - liblapacke =3.9.0=28*_openblas - arch: x86_64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 16553 - timestamp: 1738114053556 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-28_h411afd4_openblas.conda - build_number: 28 - sha256: 1290ce1071a586e22bdd7d8f4c48000cc0005f0a67660be150d1ea5c6092129f - md5: bc4c5ee31476521e202356b56bba6077 - depends: - - libblas 3.9.0 28_h1a9f1db_openblas - constrains: - - liblapacke =3.9.0=28*_openblas - - libcblas =3.9.0=28*_openblas - - blas =2.128=openblas - arch: aarch64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 16637 - timestamp: 1738114094310 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-28_hc9a63f6_openblas.conda - build_number: 28 - sha256: 79c75a02bff20f8b001e6aecfee8d22a51552c3986e7037fca68e5ed071cc213 - md5: 45f26652530b558c21083ceb7adaf273 - depends: - - libblas 3.9.0 28_h10e41b3_openblas - constrains: - - blas =2.128=openblas - - liblapacke =3.9.0=28*_openblas - - libcblas =3.9.0=28*_openblas - arch: arm64 - platform: osx - license: BSD-3-Clause - license_family: BSD - size: 16793 - timestamp: 1738114407021 -- conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda - sha256: cad52e10319ca4585bc37f0bc7cce99ec7c15dc9168e42ccb96b741b0a27db3f - md5: 42d5b6a0f30d3c10cd88cb8584fda1cb - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - arch: x86_64 - platform: linux - license: 0BSD - size: 111357 - timestamp: 1738525339684 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.4-h86ecc28_0.conda - sha256: 96413664f0fade54a4931940d18749cfc8e6308349dbb0cb83adb2394ca1f730 - md5: b88244e0a115cc34f7fbca9b11248e76 - depends: - - libgcc >=13 - arch: aarch64 - platform: linux - license: 0BSD - size: 124197 - timestamp: 1738528201520 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.4-h39f12f2_0.conda - sha256: 560c59d3834cc652a84fb45531bd335ad06e271b34ebc216e380a89798fe8e2c - md5: e3fd1f8320a100f2b210e690a57cd615 - depends: - - __osx >=11.0 - arch: arm64 - platform: osx - license: 0BSD - size: 98945 - timestamp: 1738525462560 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda - sha256: b0f2b3695b13a989f75d8fd7f4778e1c7aabe3b36db83f0fe80b2cd812c0e975 - md5: 19e57602824042dfd0446292ef90488b - depends: - - __glibc >=2.17,<3.0.a0 - - c-ares >=1.32.3,<2.0a0 - - libev >=4.33,<4.34.0a0 - - libev >=4.33,<5.0a0 - - libgcc >=13 - - libstdcxx >=13 - - libzlib >=1.3.1,<2.0a0 - - openssl >=3.3.2,<4.0a0 - arch: x86_64 - platform: linux - license: MIT - license_family: MIT - size: 647599 - timestamp: 1729571887612 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnghttp2-1.64.0-hc8609a4_0.conda - sha256: c093c6d370aadbf0409c20b6c54c488ee2f6fea976181919fcc63e87ee232673 - md5: f52c614fa214a8bedece9421c771670d - depends: - - c-ares >=1.32.3,<2.0a0 - - libev >=4.33,<4.34.0a0 - - libev >=4.33,<5.0a0 - - libgcc >=13 - - libstdcxx >=13 - - libzlib >=1.3.1,<2.0a0 - - openssl >=3.3.2,<4.0a0 - arch: aarch64 - platform: linux - license: MIT - license_family: MIT - size: 714610 - timestamp: 1729571912479 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.64.0-h6d7220d_0.conda - sha256: 00cc685824f39f51be5233b54e19f45abd60de5d8847f1a56906f8936648b72f - md5: 3408c02539cee5f1141f9f11450b6a51 - depends: - - __osx >=11.0 - - c-ares >=1.34.2,<2.0a0 - - libcxx >=17 - - libev >=4.33,<4.34.0a0 - - libev >=4.33,<5.0a0 - - libzlib >=1.3.1,<2.0a0 - - openssl >=3.3.2,<4.0a0 - arch: arm64 - platform: osx - license: MIT - license_family: MIT - size: 566719 - timestamp: 1729572385640 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda - sha256: 26d77a3bb4dceeedc2a41bd688564fe71bf2d149fdcf117049970bc02ff1add6 - md5: 30fd6e37fe21f86f4bd26d6ee73eeec7 - depends: - - libgcc-ng >=12 - arch: x86_64 - platform: linux - license: LGPL-2.1-only - license_family: GPL - size: 33408 - timestamp: 1697359010159 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda - sha256: fd18c2b75d7411096428d36a70b36b1a17e31f7b8956b6905d145792d49e97f8 - md5: c14f32510f694e3185704d89967ec422 - depends: - - libgcc-ng >=12 - arch: aarch64 - platform: linux - license: LGPL-2.1-only - license_family: GPL - size: 34501 - timestamp: 1697358973269 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.28-pthreads_h94d23a6_1.conda - sha256: 99ba271d8a80a1af2723f2e124ffd91d850074c0389c067e6d96d72a2dbfeabe - md5: 62857b389e42b36b686331bec0922050 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - - libgfortran - - libgfortran5 >=14.2.0 - constrains: - - openblas >=0.3.28,<0.3.29.0a0 - arch: x86_64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 5578513 - timestamp: 1730772671118 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.28-pthreads_h9d3fd7e_1.conda - sha256: 30623a40764e935aa77e0d4db54c1a1589189a9bf3a03fdb445505c1e319b5a6 - md5: e8dde93dd199da3c1f2c1fcfd0042cd4 - depends: - - libgcc >=14 - - libgfortran - - libgfortran5 >=14.2.0 - constrains: - - openblas >=0.3.28,<0.3.29.0a0 - arch: aarch64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 4793435 - timestamp: 1730773029647 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.28-openmp_hf332438_1.conda - sha256: 62bb669c37a845129096f73d446cdb6bb170e4927f2fea2b661329680dbbc373 - md5: 40803a48d947c8639da6704e9a44d3ce - depends: - - __osx >=11.0 - - libgfortran 5.* - - libgfortran5 >=13.2.0 - - llvm-openmp >=18.1.8 - constrains: - - openblas >=0.3.28,<0.3.29.0a0 - arch: arm64 - platform: osx - license: BSD-3-Clause - license_family: BSD - size: 4165774 - timestamp: 1730772154295 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-1.18.0-hfcad708_1.conda - sha256: 4ea235e08676f16b0d3c3380befe1478c0fa0141512ee709b011005c55c9619f - md5: 1f5a5d66e77a39dc5bd639ec953705cf - depends: - - libabseil * cxx17* - - libabseil >=20240722.0,<20240723.0a0 - - libcurl >=8.11.1,<9.0a0 - - libgrpc >=1.67.1,<1.68.0a0 - - libopentelemetry-cpp-headers 1.18.0 ha770c72_1 - - libprotobuf >=5.28.3,<5.28.4.0a0 - - libzlib >=1.3.1,<2.0a0 - - nlohmann_json - - prometheus-cpp >=1.3.0,<1.4.0a0 - constrains: - - cpp-opentelemetry-sdk =1.18.0 - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 801927 - timestamp: 1735643375271 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopentelemetry-cpp-1.18.0-h60b47f9_1.conda - sha256: 160c493cd0f897955b0b6035b51c6d7255ffbaed3c8a12d43e8e8a719d405aba - md5: afe3c8c53f4b6d27d553c230d4b34038 - depends: - - libabseil * cxx17* - - libabseil >=20240722.0,<20240723.0a0 - - libcurl >=8.11.1,<9.0a0 - - libgrpc >=1.67.1,<1.68.0a0 - - libopentelemetry-cpp-headers 1.18.0 h8af1aa0_1 - - libprotobuf >=5.28.3,<5.28.4.0a0 - - libzlib >=1.3.1,<2.0a0 - - nlohmann_json - - prometheus-cpp >=1.3.0,<1.4.0a0 - constrains: - - cpp-opentelemetry-sdk =1.18.0 - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 800896 - timestamp: 1735643533825 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopentelemetry-cpp-1.18.0-h0c05b2d_1.conda - sha256: c6bcbd53d62a9e0d8c667e560db0ca2ecb7679277cbb3c23457aabe74fcb8cba - md5: 19c46cc18825f3924251c39ec1b0d983 - depends: - - libabseil * cxx17* - - libabseil >=20240722.0,<20240723.0a0 - - libcurl >=8.11.1,<9.0a0 - - libgrpc >=1.67.1,<1.68.0a0 - - libopentelemetry-cpp-headers 1.18.0 hce30654_1 - - libprotobuf >=5.28.3,<5.28.4.0a0 - - libzlib >=1.3.1,<2.0a0 - - nlohmann_json - - prometheus-cpp >=1.3.0,<1.4.0a0 - constrains: - - cpp-opentelemetry-sdk =1.18.0 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: APACHE - size: 529588 - timestamp: 1735643889612 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-headers-1.18.0-ha770c72_1.conda - sha256: aa1f7dea79ea8513ff77339ba7c6e9cf10dfa537143e7718b1cfb3af52b649f2 - md5: 4fb055f57404920a43b147031471e03b - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 320359 - timestamp: 1735643346175 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopentelemetry-cpp-headers-1.18.0-h8af1aa0_1.conda - sha256: 981c0b29a0789597fa8ed147b02df2d2ad0c7f863d87df74770c40cee1800228 - md5: 282193b19a19e3b5d75d18ef82713ef0 - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 319401 - timestamp: 1735643509251 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopentelemetry-cpp-headers-1.18.0-hce30654_1.conda - sha256: 82e5f5ba64debbaab3c601b265dfc0cdb4d2880feba9bada5fd2e67b9f91ada5 - md5: e965dad955841507549fdacd8f7f94c0 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: APACHE - size: 320565 - timestamp: 1735643673319 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-19.0.0-h081d1f1_8_cpu.conda - build_number: 8 - sha256: b2e1bf8634efb643a9f15fe19f9bc0877482c509eff7cee6136278a2c2fa5842 - md5: bef810a8da683aa11c644066a87f71c3 - depends: - - __glibc >=2.17,<3.0.a0 - - libarrow 19.0.0 h00a82cf_8_cpu - - libgcc >=13 - - libstdcxx >=13 - - libthrift >=0.21.0,<0.21.1.0a0 - - openssl >=3.4.0,<4.0a0 - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 1241786 - timestamp: 1737824866572 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-19.0.0-hfc78867_8_cpu.conda - build_number: 8 - sha256: 8917fc5e5bb65894106bbd461d2f9c9c0c3dc642ff5da197c941bf620ce840a0 - md5: b0d5f8c122a3e9a6b75036e43e78fcfa - depends: - - libarrow 19.0.0 h03ebaaf_8_cpu - - libgcc >=13 - - libstdcxx >=13 - - libthrift >=0.21.0,<0.21.1.0a0 - - openssl >=3.4.0,<4.0a0 - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 1153834 - timestamp: 1737809048861 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-19.0.0-h636d7b7_8_cpu.conda - build_number: 8 - sha256: da04e6bd7ed2ca64aadf0ad12d9752e8423e85c37e0db80e27c7ff334fcbd2b6 - md5: c1ff2e71a289fb76146591c9d3f9de0a - depends: - - __osx >=11.0 - - libarrow 19.0.0 h819e3af_8_cpu - - libcxx >=18 - - libthrift >=0.21.0,<0.21.1.0a0 - - openssl >=3.4.0,<4.0a0 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: APACHE - size: 893482 - timestamp: 1737807155720 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.46-h943b412_0.conda - sha256: a46436dadd12d58155280d68876dba2d8a3badbc8074956d14fe6530c7c7eda6 - md5: adcf7bacff219488e29cfa95a2abd8f7 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libzlib >=1.3.1,<2.0a0 - arch: x86_64 - platform: linux - license: zlib-acknowledgement - size: 292273 - timestamp: 1737791061653 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.46-hec79eb8_0.conda - sha256: be4eefe8415c9b37d158eaa9522ce4c399a572339ac2bcc4d26d6433e0ed767d - md5: f9f793497c0973d5416421aa2f96cda4 - depends: - - libgcc >=13 - - libzlib >=1.3.1,<2.0a0 - arch: aarch64 - platform: linux - license: zlib-acknowledgement - size: 304364 - timestamp: 1737795802176 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.46-h3783ad8_0.conda - sha256: db78a711561bb6df274ef421472d948dfd1093404db3915e891ae6d7fd37fadc - md5: 15d480fb9dad036eaa4de0b51eab3ccc - depends: - - __osx >=11.0 - - libzlib >=1.3.1,<2.0a0 - arch: arm64 - platform: osx - license: zlib-acknowledgement - size: 266516 - timestamp: 1737791023678 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda - sha256: 51125ebb8b7152e4a4e69fd2398489c4ec8473195c27cde3cbdf1cb6d18c5493 - md5: d8703f1ffe5a06356f06467f1d0b9464 - depends: - - __glibc >=2.17,<3.0.a0 - - libabseil * cxx17* - - libabseil >=20240722.0,<20240723.0a0 - - libgcc >=13 - - libstdcxx >=13 - - libzlib >=1.3.1,<2.0a0 - arch: x86_64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 2960815 - timestamp: 1735577210663 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.3-h44a3b7b_1.conda - sha256: ecb69f2b1668e784b41ba667493be846662d5ef702bef64fb2e013bb1364cdc4 - md5: 68f807f7cc13951652bbe048253fd405 - depends: - - libabseil * cxx17* - - libabseil >=20240722.0,<20240723.0a0 - - libgcc >=13 - - libstdcxx >=13 - - libzlib >=1.3.1,<2.0a0 - arch: aarch64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 2788074 - timestamp: 1735576315676 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.3-h3bd63a1_1.conda - sha256: f58a16b13ad53346903c833e266f83c3d770a43a432659b98710aed85ca885e7 - md5: bdbfea4cf45ae36652c6bbcc2e7ebe91 - depends: - - __osx >=11.0 - - libabseil * cxx17* - - libabseil >=20240722.0,<20240723.0a0 - - libcxx >=18 - - libzlib >=1.3.1,<2.0a0 - arch: arm64 - platform: osx - license: BSD-3-Clause - license_family: BSD - size: 2271580 - timestamp: 1735576361997 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_2.conda - sha256: 4420f8362c71251892ba1eeb957c5e445e4e1596c0c651c28d0d8b415fe120c7 - md5: b2fede24428726dd867611664fb372e8 - depends: - - __glibc >=2.17,<3.0.a0 - - libabseil * cxx17* - - libabseil >=20240722.0,<20240723.0a0 - - libgcc >=13 - - libstdcxx >=13 - constrains: - - re2 2024.07.02.* - arch: x86_64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 209793 - timestamp: 1735541054068 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_2.conda - sha256: 862c20de0120f802e618dcb25913d00c5b82f91f4be60b2d46a774e851adc2f6 - md5: 9a7dbbaab49f76a6f36e5c9d98e323a7 - depends: - - libabseil * cxx17* - - libabseil >=20240722.0,<20240723.0a0 - - libgcc >=13 - - libstdcxx >=13 - constrains: - - re2 2024.07.02.* - arch: aarch64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 204305 - timestamp: 1735540986919 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h07bc746_2.conda - sha256: 112a73ad483353751d4c5d63648c69a4d6fcebf5e1b698a860a3f5124fc3db96 - md5: 6b1e3624d3488016ca4f1ca0c412efaa - depends: - - __osx >=11.0 - - libabseil * cxx17* - - libabseil >=20240722.0,<20240723.0a0 - - libcxx >=18 - constrains: - - re2 2024.07.02.* - arch: arm64 - platform: osx - license: BSD-3-Clause - license_family: BSD - size: 167155 - timestamp: 1735541067807 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda - sha256: 0105bd108f19ea8e6a78d2d994a6d4a8db16d19a41212070d2d1d48a63c34161 - md5: a587892d3c13b6621a6091be690dbca2 - depends: - - libgcc-ng >=12 - arch: x86_64 - platform: linux - license: ISC - size: 205978 - timestamp: 1716828628198 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.20-h68df207_0.conda - sha256: 448df5ea3c5cf1af785aad46858d7a5be0522f4234a4dc9bb764f4d11ff3b981 - md5: 2e4a8f23bebdcb85ca8e5a0fbe75666a - depends: - - libgcc-ng >=12 - arch: aarch64 - platform: linux - license: ISC - size: 177394 - timestamp: 1716828514515 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda - sha256: fade8223e1e1004367d7101dd17261003b60aa576df6d7802191f8972f7470b1 - md5: a7ce36e284c5faaf93c220dfc39e3abd - depends: - - __osx >=11.0 - arch: arm64 - platform: osx - license: ISC - size: 164972 - timestamp: 1716828607917 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.48.0-hee588c1_1.conda - sha256: 22853d289ef6ec8a5b20f1aa261895b06525439990d3b139f8bfd0b5c5e32a3a - md5: 3fa05c528d8a1e2a67bbf1e36f22d3bc - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libzlib >=1.3.1,<2.0a0 - arch: x86_64 - platform: linux - license: Unlicense - size: 878223 - timestamp: 1737564987837 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.48.0-h5eb1b54_1.conda - sha256: 81dd9bf66c7f1d9064e007e2c787133100c406e7ca2de61dba9fb7b87372f255 - md5: 4f3a61fe206f20b27c385ee608bcdfda - depends: - - libgcc >=13 - - libzlib >=1.3.1,<2.0a0 - arch: aarch64 - platform: linux - license: Unlicense - size: 1044879 - timestamp: 1737565049785 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.48.0-h3f77e49_1.conda - sha256: 17c06940cc2a13fd6a17effabd6881b1477db38b2cd3ee2571092d293d3fdd75 - md5: 4c55169502ecddf8077973a987d08f08 - depends: - - __osx >=11.0 - - libzlib >=1.3.1,<2.0a0 - arch: arm64 - platform: osx - license: Unlicense - size: 852831 - timestamp: 1737564996616 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hf672d98_0.conda - sha256: 0407ac9fda2bb67e11e357066eff144c845801d00b5f664efbc48813af1e7bb9 - md5: be2de152d8073ef1c01b7728475f2fe7 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libzlib >=1.3.1,<2.0a0 - - openssl >=3.4.0,<4.0a0 - arch: x86_64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 304278 - timestamp: 1732349402869 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libssh2-1.11.1-ha41c0db_0.conda - sha256: 40f2af5357457546bd11cd64a3b9043d83865180f65ce602515c35f353be35c7 - md5: aeffe03c0e598f015aab08dbb04f6ee4 - depends: - - libgcc >=13 - - libzlib >=1.3.1,<2.0a0 - - openssl >=3.4.0,<4.0a0 - arch: aarch64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 311577 - timestamp: 1732349396421 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.1-h9cc3647_0.conda - sha256: f7047c6ed44bcaeb04432e8c74da87591940d091b0a3940c0d884b7faa8062e9 - md5: ddc7194676c285513706e5fc64f214d7 - depends: - - libzlib >=1.3.1,<2.0a0 - - openssl >=3.4.0,<4.0a0 - arch: arm64 - platform: osx - license: BSD-3-Clause - license_family: BSD - size: 279028 - timestamp: 1732349599461 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-hc0a3c3a_1.conda - sha256: 4661af0eb9bdcbb5fb33e5d0023b001ad4be828fccdcc56500059d56f9869462 - md5: 234a5554c53625688d51062645337328 - depends: - - libgcc 14.2.0 h77fa898_1 - arch: x86_64 - platform: linux - license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - size: 3893695 - timestamp: 1729027746910 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_1.conda - sha256: 519556d2c93f1b487091ce046d62e762286177f4a670ec10e16005177d0bcab3 - md5: 37f489acd39e22b623d2d1e5ac6d195c - depends: - - libgcc 14.2.0 he277a41_1 - arch: aarch64 - platform: linux - license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - size: 3816794 - timestamp: 1729089463404 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_1.conda - sha256: 25bb30b827d4f6d6f0522cc0579e431695503822f144043b93c50237017fffd8 - md5: 8371ac6457591af2cf6159439c1fd051 - depends: - - libstdcxx 14.2.0 hc0a3c3a_1 - arch: x86_64 - platform: linux - license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - size: 54105 - timestamp: 1729027780628 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_1.conda - sha256: 9f97461bd55a2745a7a0941f3502a047f15bfe7bb2952dc7fb204b3202f866fd - md5: 0e75771b8a03afae5a2c6ce71bc733f5 - depends: - - libstdcxx 14.2.0 h3f4de04_1 - arch: aarch64 - platform: linux - license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - size: 54133 - timestamp: 1729089498541 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libthrift-0.21.0-h0e7cc3e_0.conda - sha256: ebb395232973c18745b86c9a399a4725b2c39293c9a91b8e59251be013db42f0 - md5: dcb95c0a98ba9ff737f7ae482aef7833 - depends: - - __glibc >=2.17,<3.0.a0 - - libevent >=2.1.12,<2.1.13.0a0 - - libgcc >=13 - - libstdcxx >=13 - - libzlib >=1.3.1,<2.0a0 - - openssl >=3.3.2,<4.0a0 - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 425773 - timestamp: 1727205853307 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libthrift-0.21.0-h154c74f_0.conda - sha256: f04ab1417aca1687edff9c30d8423ace285eb8c053dc16d595c6e47cfeefb274 - md5: c28792bf37f4ecdce8e3cb9e40750650 - depends: - - libevent >=2.1.12,<2.1.13.0a0 - - libgcc >=13 - - libstdcxx >=13 - - libzlib >=1.3.1,<2.0a0 - - openssl >=3.3.2,<4.0a0 - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 417329 - timestamp: 1727205944238 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libthrift-0.21.0-h64651cc_0.conda - sha256: 7a6c7d5f58cbbc2ccd6493b4b821639fdb0701b9b04c737a949e8cb6adf1c9ad - md5: 7ce2bd2f650f8c31ad7ba4c7bfea61b7 - depends: - - __osx >=11.0 - - libcxx >=17 - - libevent >=2.1.12,<2.1.13.0a0 - - libzlib >=1.3.1,<2.0a0 - - openssl >=3.3.2,<4.0a0 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: APACHE - size: 324342 - timestamp: 1727206096912 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hd9ff511_3.conda - sha256: b224e16b88d76ea95e4af56e2bc638c603bd26a770b98d117d04541d3aafa002 - md5: 0ea6510969e1296cc19966fad481f6de - depends: - - __glibc >=2.17,<3.0.a0 - - lerc >=4.0.0,<5.0a0 - - libdeflate >=1.23,<1.24.0a0 - - libgcc >=13 - - libjpeg-turbo >=3.0.0,<4.0a0 - - liblzma >=5.6.3,<6.0a0 - - libstdcxx >=13 - - libwebp-base >=1.4.0,<2.0a0 - - libzlib >=1.3.1,<2.0a0 - - zstd >=1.5.6,<1.6.0a0 - arch: x86_64 - platform: linux - license: HPND - size: 428173 - timestamp: 1734398813264 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.0-h88f7998_3.conda - sha256: 5888bd66ba7606ae8596856c7dac800940ecad0aed77d6aa37db69d434c81cf0 - md5: 36a0ea4a173338c8725dc0807e99cf22 - depends: - - lerc >=4.0.0,<5.0a0 - - libdeflate >=1.23,<1.24.0a0 - - libgcc >=13 - - libjpeg-turbo >=3.0.0,<4.0a0 - - liblzma >=5.6.3,<6.0a0 - - libstdcxx >=13 - - libwebp-base >=1.4.0,<2.0a0 - - libzlib >=1.3.1,<2.0a0 - - zstd >=1.5.6,<1.6.0a0 - arch: aarch64 - platform: linux - license: HPND - size: 464699 - timestamp: 1734398752249 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-h551f018_3.conda - sha256: 91417846157e04992801438a496b151df89604b2e7c6775d6f701fcd0cbed5ae - md5: a5d084a957563e614ec0c0196d890654 - depends: - - __osx >=11.0 - - lerc >=4.0.0,<5.0a0 - - libcxx >=18 - - libdeflate >=1.23,<1.24.0a0 - - libjpeg-turbo >=3.0.0,<4.0a0 - - liblzma >=5.6.3,<6.0a0 - - libwebp-base >=1.4.0,<2.0a0 - - libzlib >=1.3.1,<2.0a0 - - zstd >=1.5.6,<1.6.0a0 - arch: arm64 - platform: osx - license: HPND - size: 370600 - timestamp: 1734398863052 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.10.0-h4c51ac1_0.conda - sha256: 8e41563ee963bf8ded06da45f4e70bf42f913cb3c2e79364eb3218deffa3cd74 - md5: aeccfff2806ae38430638ffbb4be9610 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - arch: x86_64 - platform: linux - license: MIT - license_family: MIT - size: 82745 - timestamp: 1737244366901 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.10.0-ha346350_0.conda - sha256: 9c333e07b76ae1ea2c882db764be52dc82f632be66d993a50b35ca9c5475074a - md5: c5166bcfb8348e8fc31ee16ec3981a5e - depends: - - libgcc >=13 - arch: aarch64 - platform: linux - license: MIT - license_family: MIT - size: 82679 - timestamp: 1737329054400 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.10.0-hda25de7_0.conda - sha256: aca3ef31d3dff5cefd3790742a5ee6548f1cf0201d0e8cee08b01da503484eb6 - md5: 5f741aed1d8d393586a5fdcaaa87f45c - depends: - - __osx >=11.0 - arch: arm64 - platform: osx - license: MIT - license_family: MIT - size: 83628 - timestamp: 1737244450097 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - sha256: 787eb542f055a2b3de553614b25f09eefb0a0931b0c87dbcce6efdfd92f04f18 - md5: 40b61aab5c7ba9ff276c41cfffe6b80b - depends: - - libgcc-ng >=12 - arch: x86_64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 33601 - timestamp: 1680112270483 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda - sha256: 616277b0c5f7616c2cdf36f6c316ea3f9aa5bb35f2d4476a349ab58b9b91675f - md5: 000e30b09db0b7c775b21695dff30969 - depends: - - libgcc-ng >=12 - arch: aarch64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 35720 - timestamp: 1680113474501 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.50.0-hb9d3cd8_0.conda - sha256: b4a8890023902aef9f1f33e3e35603ad9c2f16c21fdb58e968fa6c1bd3e94c0b - md5: 771ee65e13bc599b0b62af5359d80169 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - arch: x86_64 - platform: linux - license: MIT - license_family: MIT - size: 891272 - timestamp: 1737016632446 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuv-1.50.0-h86ecc28_0.conda - sha256: 67914c7f171d343059144d804c2f17fcd621a94e45f179a0fd843b8c1618823e - md5: 915db044076cbbdffb425170deb4ce38 - depends: - - libgcc >=13 - arch: aarch64 - platform: linux - license: MIT - license_family: MIT - size: 621056 - timestamp: 1737016626950 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libuv-1.50.0-h5505292_0.conda - sha256: d13fb49d4c8262bf2c44ffb2c77bb2b5d0f85fc6de76bdb75208efeccb29fce6 - md5: 20717343fb30798ab7c23c2e92b748c1 - depends: - - __osx >=11.0 - arch: arm64 - platform: osx - license: MIT - license_family: MIT - size: 418890 - timestamp: 1737016751326 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.5.0-h851e524_0.conda - sha256: c45283fd3e90df5f0bd3dbcd31f59cdd2b001d424cf30a07223655413b158eaf - md5: 63f790534398730f59e1b899c3644d4a - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - constrains: - - libwebp 1.5.0 - arch: x86_64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 429973 - timestamp: 1734777489810 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libwebp-base-1.5.0-h0886dbf_0.conda - sha256: b3d881a0ae08bb07fff7fa8ead506c8d2e0388733182fe4f216f3ec5d61ffcf0 - md5: 95ef4a689b8cc1b7e18b53784d88f96b - depends: - - libgcc >=13 - constrains: - - libwebp 1.5.0 - arch: aarch64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 362623 - timestamp: 1734779054659 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.5.0-h2471fea_0.conda - sha256: f8bdb876b4bc8cb5df47c28af29188de8911c3fea4b799a33743500149de3f4a - md5: 569466afeb84f90d5bb88c11cc23d746 - depends: - - __osx >=11.0 - constrains: - - libwebp 1.5.0 - arch: arm64 - platform: osx - license: BSD-3-Clause - license_family: BSD - size: 290013 - timestamp: 1734777593617 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda - sha256: 666c0c431b23c6cec6e492840b176dde533d48b7e6fb8883f5071223433776aa - md5: 92ed62436b625154323d40d5f2f11dd7 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - pthread-stubs - - xorg-libxau >=1.0.11,<2.0a0 - - xorg-libxdmcp - arch: x86_64 - platform: linux - license: MIT - license_family: MIT - size: 395888 - timestamp: 1727278577118 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcb-1.17.0-h262b8f6_0.conda - sha256: 461cab3d5650ac6db73a367de5c8eca50363966e862dcf60181d693236b1ae7b - md5: cd14ee5cca2464a425b1dbfc24d90db2 - depends: - - libgcc >=13 - - pthread-stubs - - xorg-libxau >=1.0.11,<2.0a0 - - xorg-libxdmcp - arch: aarch64 - platform: linux - license: MIT - license_family: MIT - size: 397493 - timestamp: 1727280745441 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxcb-1.17.0-hdb1d25a_0.conda - sha256: bd3816218924b1e43b275863e21a3e13a5db4a6da74cca8e60bc3c213eb62f71 - md5: af523aae2eca6dfa1c8eec693f5b9a79 - depends: - - __osx >=11.0 - - pthread-stubs - - xorg-libxau >=1.0.11,<2.0a0 - - xorg-libxdmcp - arch: arm64 - platform: osx - license: MIT - license_family: MIT - size: 323658 - timestamp: 1727278733917 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - sha256: 6ae68e0b86423ef188196fff6207ed0c8195dd84273cb5623b85aa08033a410c - md5: 5aa797f8787fe7a17d1b0821485b5adc - depends: - - libgcc-ng >=12 - arch: x86_64 - platform: linux - license: LGPL-2.1-or-later - size: 100393 - timestamp: 1702724383534 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda - sha256: 6b46c397644091b8a26a3048636d10b989b1bf266d4be5e9474bf763f828f41f - md5: b4df5d7d4b63579d081fd3a4cf99740e - depends: - - libgcc-ng >=12 - arch: aarch64 - platform: linux - license: LGPL-2.1-or-later - size: 114269 - timestamp: 1702724369203 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.5-h0d44e9d_1.conda - sha256: 306e18aa647d8208ad2cd0e62d84933222b2fbe93d2d53cd5283d2256b1d54de - md5: f5b05674697ae7d2c5932766695945e1 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libiconv >=1.17,<2.0a0 - - liblzma >=5.6.3,<6.0a0 - - libzlib >=1.3.1,<2.0a0 - constrains: - - icu <0.0a0 - arch: x86_64 - platform: linux - license: MIT - license_family: MIT - size: 689993 - timestamp: 1733443678322 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.5-h2e0c361_1.conda - sha256: dc0e86d35a836af6e99d18f50c6551fc64c53ed3a3da5a9fea90e78763cf14b4 - md5: 63410f85031930cde371dfe0ee89109a - depends: - - icu >=75.1,<76.0a0 - - libgcc >=13 - - libiconv >=1.17,<2.0a0 - - liblzma >=5.6.3,<6.0a0 - - libzlib >=1.3.1,<2.0a0 - arch: aarch64 - platform: linux - license: MIT - license_family: MIT - size: 732155 - timestamp: 1733443825814 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.5-h178c5d8_1.conda - sha256: d7af3f25a4cece170502acd38f2dafbea4521f373f46dcb28a37fbe6ac2da544 - md5: 3dc3cff0eca1640a6acbbfab2f78139e - depends: - - __osx >=11.0 - - icu >=75.1,<76.0a0 - - libiconv >=1.17,<2.0a0 - - liblzma >=5.6.3,<6.0a0 - - libzlib >=1.3.1,<2.0a0 - arch: arm64 - platform: osx - license: MIT - license_family: MIT - size: 582898 - timestamp: 1733443841584 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - sha256: d4bfe88d7cb447768e31650f06257995601f89076080e76df55e3112d4e47dc4 - md5: edb0dca6bc32e4f4789199455a1dbeb8 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - constrains: - - zlib 1.3.1 *_2 - arch: x86_64 - platform: linux - license: Zlib - license_family: Other - size: 60963 - timestamp: 1727963148474 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - sha256: 5a2c1eeef69342e88a98d1d95bff1603727ab1ff4ee0e421522acd8813439b84 - md5: 08aad7cbe9f5a6b460d0976076b6ae64 - depends: - - libgcc >=13 - constrains: - - zlib 1.3.1 *_2 - arch: aarch64 - platform: linux - license: Zlib - license_family: Other - size: 66657 - timestamp: 1727963199518 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - sha256: ce34669eadaba351cd54910743e6a2261b67009624dbc7daeeafdef93616711b - md5: 369964e85dc26bfe78f41399b366c435 - depends: - - __osx >=11.0 - constrains: - - zlib 1.3.1 *_2 - arch: arm64 - platform: osx - license: Zlib - license_family: Other - size: 46438 - timestamp: 1727963202283 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda - sha256: b92a669f2059874ebdcb69041b6c243d68ffc3fb356ac1339cec44aeb27245d7 - md5: c4d54bfd3817313ce758aa76283b118d - depends: - - __osx >=11.0 - constrains: - - openmp 19.1.7|19.1.7.* - arch: arm64 - platform: osx - license: Apache-2.0 WITH LLVM-exception - license_family: APACHE - size: 280830 - timestamp: 1736986295869 -- conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.10.0-h5888daf_1.conda - sha256: 47326f811392a5fd3055f0f773036c392d26fdb32e4d8e7a8197eed951489346 - md5: 9de5350a85c4a20c685259b889aa6393 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libstdcxx >=13 - arch: x86_64 - platform: linux - license: BSD-2-Clause - license_family: BSD - size: 167055 - timestamp: 1733741040117 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.10.0-h5ad3122_1.conda - sha256: 67e55058d275beea76c1882399640c37b5be8be4eb39354c94b610928e9a0573 - md5: 6654e411da94011e8fbe004eacb8fe11 - depends: - - libgcc >=13 - - libstdcxx >=13 - arch: aarch64 - platform: linux - license: BSD-2-Clause - license_family: BSD - size: 184953 - timestamp: 1733740984533 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.10.0-h286801f_1.conda - sha256: 94d3e2a485dab8bdfdd4837880bde3dd0d701e2b97d6134b8806b7c8e69c8652 - md5: 01511afc6cc1909c5303cf31be17b44f - depends: - - __osx >=11.0 - - libcxx >=18 - arch: arm64 - platform: osx - license: BSD-2-Clause - license_family: BSD - size: 148824 - timestamp: 1733741047892 -- conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_1.conda - sha256: 0fbacdfb31e55964152b24d5567e9a9996e1e7902fb08eb7d91b5fd6ce60803a - md5: fee3164ac23dfca50cfcc8b85ddefb81 - depends: - - mdurl >=0.1,<1 - - python >=3.9 - license: MIT - license_family: MIT - size: 64430 - timestamp: 1733250550053 -- conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py311h2dc5d0c_1.conda - sha256: 0291d90706ac6d3eea73e66cd290ef6d805da3fad388d1d476b8536ec92ca9a8 - md5: 6565a715337ae279e351d0abd8ffe88a - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - python >=3.11,<3.12.0a0 - - python_abi 3.11.* *_cp311 - constrains: - - jinja2 >=3.0.0 - arch: x86_64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 25354 - timestamp: 1733219879408 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.2-py311ha09ea12_1.conda - sha256: 0af0d9357e309876adf6ca61fa574afee74741fb1628755ce1f36028d294e854 - md5: eb3611be0cc15845bf6e5075adc520ee - depends: - - libgcc >=13 - - python >=3.11,<3.12.0a0 - - python_abi 3.11.* *_cp311 - constrains: - - jinja2 >=3.0.0 - arch: aarch64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 25787 - timestamp: 1733220925299 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py311h4921393_1.conda - sha256: 4f738a7c80e34e5e5d558e946b06d08e7c40e3cc4bdf08140bf782c359845501 - md5: 249e2f6f5393bb6b36b3d3a3eebdcdf9 - depends: - - __osx >=11.0 - - python >=3.11,<3.12.0a0 - - python >=3.11,<3.12.0a0 *_cpython - - python_abi 3.11.* *_cp311 - constrains: - - jinja2 >=3.0.0 - arch: arm64 - platform: osx - license: BSD-3-Clause - license_family: BSD - size: 24976 - timestamp: 1733219849253 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020605-release.conda - noarch: python - sha256: f33974d10b1d4e642f287392b461a9437bffa776547f3537116d8018caf3da7c - md5: 61f314b8a3d2ddaa878b1056e09e48eb - depends: - - max-core ==25.1.0.dev2025020605 release - - max-python >=25.1.0.dev2025020605,<26.0a0 - - mojo-jupyter ==25.1.0.dev2025020605 release - - mblack ==25.1.0.dev2025020605 release - license: LicenseRef-Modular-Proprietary - size: 9922 - timestamp: 1738819257916 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025020605-release.conda - sha256: f4f507695eebb8fbbd6107922b4a2d211ab622983f34a24fc8036faf2a7887e3 - md5: 3d4f12391220243dcfc810b5352b2a37 - depends: - - mblack ==25.1.0.dev2025020605 release - license: LicenseRef-Modular-Proprietary - size: 244769750 - timestamp: 1738819214550 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025020605-release.conda - sha256: e2a216b17d89af7cb2aa1a77a7b8416f04724fe0adbf1d36637b36c632b3517a - md5: 8207a6065094dbb73c472a03ea6df87d - depends: - - mblack ==25.1.0.dev2025020605 release - license: LicenseRef-Modular-Proprietary - size: 247282125 - timestamp: 1738819257916 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025020605-release.conda - sha256: 6bf41ea344e035b21701a362dd22265eeaa72c08687287b7c13a664b163d893d - md5: c34a8e1ead4712284ec549d122aa5f9c - depends: - - mblack ==25.1.0.dev2025020605 release - license: LicenseRef-Modular-Proprietary - size: 209659254 - timestamp: 1738820968072 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025020605-release.conda - noarch: python - sha256: d8a81b52c2a513d083e81f2217e98409a1a0d885a8c446bf4a5852f6c8612725 - md5: b1adba04b753ac70558cedaee35fe306 - depends: - - max-core ==25.1.0.dev2025020605 release - - python - - fastapi - - httpx - - huggingface_hub - - numpy >=1.18,<2.0 - - opentelemetry-api - - opentelemetry-exporter-otlp-proto-http >=1.27.0 - - opentelemetry-exporter-prometheus >=0.48b0 - - opentelemetry-sdk >=1.27.0 - - pillow - - pydantic-settings >=2.4.0,<3 - - pydantic >=2.4.0,<3 - - pyinstrument - - python-json-logger - - sse-starlette >=2.1.3,<3 - - transformers - - typing_extensions - - uvicorn - license: LicenseRef-Modular-Proprietary - size: 120666001 - timestamp: 1738819214550 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025020605-release.conda - noarch: python - sha256: 505eee35cbd7705c48c9d561cb6f38479fb2f3c7d893c51d930c9b4e16da7104 - md5: 9c5aaecd6d6500c081363552c952c213 - depends: - - max-core ==25.1.0.dev2025020605 release - - python - - fastapi - - httpx - - huggingface_hub - - numpy >=1.18,<2.0 - - opentelemetry-api - - opentelemetry-exporter-otlp-proto-http >=1.27.0 - - opentelemetry-exporter-prometheus >=0.48b0 - - opentelemetry-sdk >=1.27.0 - - pillow - - pydantic-settings >=2.4.0,<3 - - pydantic >=2.4.0,<3 - - pyinstrument - - python-json-logger - - sse-starlette >=2.1.3,<3 - - transformers - - typing_extensions - - uvicorn - license: LicenseRef-Modular-Proprietary - size: 123043775 - timestamp: 1738819257916 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025020605-release.conda - noarch: python - sha256: b1d2614caf1da1bca20540127b0f71b6357f75b155eb93bac4fcaa10b5737f7e - md5: be243c36de2750e5a51af50a571e0e98 - depends: - - max-core ==25.1.0.dev2025020605 release - - python - - fastapi - - httpx - - huggingface_hub - - numpy >=1.18,<2.0 - - opentelemetry-api - - opentelemetry-exporter-otlp-proto-http >=1.27.0 - - opentelemetry-exporter-prometheus >=0.48b0 - - opentelemetry-sdk >=1.27.0 - - pillow - - pydantic-settings >=2.4.0,<3 - - pydantic >=2.4.0,<3 - - pyinstrument - - python-json-logger - - sse-starlette >=2.1.3,<3 - - transformers - - typing_extensions - - uvicorn - license: LicenseRef-Modular-Proprietary - size: 108461286 - timestamp: 1738820968072 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020605-release.conda - noarch: python - sha256: 8cbc7067cdf1cce1a11e2b385168697793c4090e37fcee65c19b0d3782320ce8 - md5: b8dc96fb459fbeb13a3dcee463b17613 - depends: - - python >=3.9,<3.13 - - click >=8.0.0 - - mypy_extensions >=0.4.3 - - packaging >=22.0 - - pathspec >=0.9.0 - - platformdirs >=2 - - typing_extensions >=v4.12.2 - - python - license: MIT - size: 130824 - timestamp: 1738819257916 -- conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda - sha256: 78c1bbe1723449c52b7a9df1af2ee5f005209f67e40b6e1d3c7619127c43b1c7 - md5: 592132998493b3ff25fd7479396e8351 - depends: - - python >=3.9 - license: MIT - license_family: MIT - size: 14465 - timestamp: 1733255681319 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020605-release.conda - noarch: python - sha256: a98de01d436333c23597e626195c5d49272c1c5d3359889979bafb8f19d4f3bf - md5: f68f7d08fc12083075182da8482fcfa9 - depends: - - max-core ==25.1.0.dev2025020605 release - - python >=3.9,<3.13 - - jupyter_client >=8.6.2,<8.7 - - python - license: LicenseRef-Modular-Proprietary - size: 22925 - timestamp: 1738819257916 -- conda: 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 - - python >=3.11,<3.12.0a0 - - python_abi 3.11.* *_cp311 - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 62595 - timestamp: 1733913166104 -- conda: 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 - - python >=3.11,<3.12.0a0 *_cpython - - python_abi 3.11.* *_cp311 - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 63847 - timestamp: 1733913235773 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/multidict-6.1.0-py311h30e7462_1.conda - sha256: 9e7beeeef3c13e000e2e9dab38dff3a5284a8c8665019be149db50b4eff9a340 - md5: ff4227ea49745aeddbf45edef09036bc - depends: - - __osx >=11.0 - - python >=3.11,<3.12.0a0 - - python >=3.11,<3.12.0a0 *_cpython - - python_abi 3.11.* *_cp311 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: APACHE - size: 56769 - timestamp: 1729065684471 -- conda: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.15-py311h459d7ec_1.conda - sha256: eca27e6fb5fb4ee73f04ae030bce29f5daa46fea3d6abdabb91740646f0d188e - md5: cebd02a02b199549a57e0d70aed7e2dc - depends: - - dill >=0.3.6 - - libgcc-ng >=12 - - python >=3.11,<3.12.0a0 - - python_abi 3.11.* *_cp311 - arch: x86_64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 339543 - timestamp: 1695459055911 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.15-py311hcd402e7_1.conda - sha256: 126190f2f981ea84cbf891a2ff6ff52e1bdd681c48392db40b79da0e9e786af8 - md5: bd07035dd460220466bcab62cefced4d - depends: - - dill >=0.3.6 - - libgcc-ng >=12 - - python >=3.11,<3.12.0a0 - - python >=3.11,<3.12.0a0 *_cpython - - python_abi 3.11.* *_cp311 - arch: aarch64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 339518 - timestamp: 1695459050286 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/multiprocess-0.70.15-py311heffc1b2_1.conda - sha256: 1bf6f7bd6b3515f26fbd977ad26bfb7012516fb3854fe9f2d715a6fbbf28a5de - md5: 68b2ed99d42d6eea3cecd25b6a151cc9 - depends: - - dill >=0.3.6 - - python >=3.11,<3.12.0a0 - - python >=3.11,<3.12.0a0 *_cpython - - python_abi 3.11.* *_cp311 - arch: arm64 - platform: osx - license: BSD-3-Clause - license_family: BSD - size: 339630 - timestamp: 1695459263809 -- conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - sha256: 1895f47b7d68581a6facde5cb13ab8c2764c2e53a76bd746f8f98910dc4e08fe - md5: 29097e7ea634a45cc5386b95cac6568f - depends: - - python >=3.9 - license: MIT - license_family: MIT - size: 10854 - timestamp: 1733230986902 -- conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda - sha256: 3fde293232fa3fca98635e1167de6b7c7fda83caf24b9d6c91ec9eefb4f4d586 - md5: 47e340acb35de30501a76c7c799c41d7 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - arch: x86_64 - platform: linux - license: X11 AND BSD-3-Clause - size: 891641 - timestamp: 1738195959188 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-ha32ae93_3.conda - sha256: 91cfb655a68b0353b2833521dc919188db3d8a7f4c64bea2c6a7557b24747468 - md5: 182afabe009dc78d8b73100255ee6868 - depends: - - libgcc >=13 - arch: aarch64 - platform: linux - license: X11 AND BSD-3-Clause - size: 926034 - timestamp: 1738196018799 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda - sha256: 2827ada40e8d9ca69a153a45f7fd14f32b2ead7045d3bbb5d10964898fe65733 - md5: 068d497125e4bf8a66bf707254fff5ae - depends: - - __osx >=11.0 - arch: arm64 - platform: osx - license: X11 AND BSD-3-Clause - size: 797030 - timestamp: 1738196177597 -- conda: https://conda.anaconda.org/conda-forge/linux-64/nlohmann_json-3.11.3-he02047a_1.conda - sha256: ce4bcced4f8eea71b7cac8bc3daac097abf7a5792f278cd811dedada199500c1 - md5: e46f7ac4917215b49df2ea09a694a3fa - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc-ng >=12 - - libstdcxx-ng >=12 - arch: x86_64 - platform: linux - license: MIT - license_family: MIT - size: 122743 - timestamp: 1723652407663 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/nlohmann_json-3.11.3-h0a1ffab_1.conda - sha256: c90b1f11fc337d90a9e4c5aeeacac1418c5ba6a195097086566d38bb2ecf0f24 - md5: f2bd10ff23ab5c87327439c4499b3f3e - depends: - - libgcc-ng >=12 - - libstdcxx-ng >=12 - arch: aarch64 - platform: linux - license: MIT - license_family: MIT - size: 122755 - timestamp: 1723652622631 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/nlohmann_json-3.11.3-h00cdb27_1.conda - sha256: 3f4e6a4fa074bb297855f8111ab974dab6d9f98b7d4317d4dd46f8687ee2363b - md5: d2dee849c806430eee64d3acc98ce090 - depends: - - __osx >=11.0 - - libcxx >=16 - arch: arm64 - platform: osx - license: MIT - license_family: MIT - size: 123250 - timestamp: 1723652704997 -- conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py311h64a7726_0.conda - sha256: 3f4365e11b28e244c95ba8579942b0802761ba7bb31c026f50d1a9ea9c728149 - md5: a502d7aad449a1206efb366d6a12c52d - depends: - - libblas >=3.9.0,<4.0a0 - - libcblas >=3.9.0,<4.0a0 - - libgcc-ng >=12 - - liblapack >=3.9.0,<4.0a0 - - libstdcxx-ng >=12 - - python >=3.11,<3.12.0a0 - - python_abi 3.11.* *_cp311 - constrains: - - numpy-base <0a0 - arch: x86_64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 8065890 - timestamp: 1707225944355 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py311h69ead2a_0.conda - sha256: 88800a1d9d11c2fccab09d40d36f7001616f5119eaf0ec86186562f33564e651 - md5: 3fd00dd400c8d3f9da12bf33061dd28d - depends: - - libblas >=3.9.0,<4.0a0 - - libcblas >=3.9.0,<4.0a0 - - libgcc-ng >=12 - - liblapack >=3.9.0,<4.0a0 - - libstdcxx-ng >=12 - - python >=3.11,<3.12.0a0 - - python >=3.11,<3.12.0a0 *_cpython - - python_abi 3.11.* *_cp311 - constrains: - - numpy-base <0a0 - arch: aarch64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 7234391 - timestamp: 1707225781489 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py311h7125741_0.conda - sha256: 160a52a01fea44fe9753a2ed22cf13d7b55c8a89ea0b8738546fdbf4795d6514 - md5: 3160b93669a0def35a7a8158ebb33816 - depends: - - libblas >=3.9.0,<4.0a0 - - libcblas >=3.9.0,<4.0a0 - - libcxx >=16 - - liblapack >=3.9.0,<4.0a0 - - python >=3.11,<3.12.0a0 - - python >=3.11,<3.12.0a0 *_cpython - - python_abi 3.11.* *_cp311 - constrains: - - numpy-base <0a0 - arch: arm64 - platform: osx - license: BSD-3-Clause - license_family: BSD - size: 6652352 - timestamp: 1707226297967 -- conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.3-h5fbd93e_0.conda - sha256: 5bee706ea5ba453ed7fd9da7da8380dd88b865c8d30b5aaec14d2b6dd32dbc39 - md5: 9e5816bc95d285c115a3ebc2f8563564 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libpng >=1.6.44,<1.7.0a0 - - libstdcxx >=13 - - libtiff >=4.7.0,<4.8.0a0 - - libzlib >=1.3.1,<2.0a0 - arch: x86_64 - platform: linux - license: BSD-2-Clause - license_family: BSD - size: 342988 - timestamp: 1733816638720 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openjpeg-2.5.3-h3f56577_0.conda - sha256: 92d310033e20538e896f4e4b1ea4205eb6604eee7c5c651c4965a0d8d3ca0f1d - md5: 04231368e4af50d11184b50e14250993 - depends: - - libgcc >=13 - - libpng >=1.6.44,<1.7.0a0 - - libstdcxx >=13 - - libtiff >=4.7.0,<4.8.0a0 - - libzlib >=1.3.1,<2.0a0 - arch: aarch64 - platform: linux - license: BSD-2-Clause - license_family: BSD - size: 377796 - timestamp: 1733816683252 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/openjpeg-2.5.3-h8a3d83b_0.conda - sha256: 1d59bc72ca7faac06d349c1a280f5cfb8a57ee5896f1e24225a997189d7418c7 - md5: 4b71d78648dbcf68ce8bf22bb07ff838 - depends: - - __osx >=11.0 - - libcxx >=18 - - libpng >=1.6.44,<1.7.0a0 - - libtiff >=4.7.0,<4.8.0a0 - - libzlib >=1.3.1,<2.0a0 - arch: arm64 - platform: osx - license: BSD-2-Clause - license_family: BSD - size: 319362 - timestamp: 1733816781741 -- conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.0-h7b32b05_1.conda - sha256: f62f6bca4a33ca5109b6d571b052a394d836956d21b25b7ffd03376abf7a481f - md5: 4ce6875f75469b2757a65e10a5d05e31 - depends: - - __glibc >=2.17,<3.0.a0 - - ca-certificates - - libgcc >=13 - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 2937158 - timestamp: 1736086387286 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.0-hd08dc88_1.conda - sha256: 60d34454b861501d7355f25a7b39fdb5de8d56fca49b5bcbe8b8142b7d82dce4 - md5: e21c4767e783a58c373fdb99de6211bf - depends: - - ca-certificates - - libgcc >=13 - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 3469279 - timestamp: 1736088141230 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.0-h81ee809_1.conda - sha256: 97772762abc70b3a537683ca9fc3ff3d6099eb64e4aba3b9c99e6fce48422d21 - md5: 22f971393637480bda8c679f374d8861 - depends: - - __osx >=11.0 - - ca-certificates - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: Apache - size: 2936415 - timestamp: 1736086108693 -- conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.29.0-pyhd8ed1ab_1.conda - sha256: 296280c8ace35c0a1cf72bed1077f248b3af903c3bf92332f1783a207cb5abdb - md5: 307b05402c1a382f2f09426492dee8f8 - depends: - - deprecated >=1.2.6 - - importlib-metadata >=6.0,<=8.5.0 - - python >=3.9 - license: Apache-2.0 - license_family: APACHE - size: 44166 - timestamp: 1734132973331 -- conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.29.0-pyhd8ed1ab_0.conda - sha256: ae9776efe52564e0d6711cfcee7c54439273e57a3999f7f796f66e862f58aae9 - md5: 0c02e74d26bce3fec93b227cf7ea6e6b - depends: - - backoff >=1.10.0,<3.0.0 - - opentelemetry-proto 1.29.0 - - python >=3.9 - license: Apache-2.0 - license_family: APACHE - size: 18922 - timestamp: 1734310457116 -- conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.29.0-pyhd8ed1ab_1.conda - sha256: 5d61db9d5b4f91b3932f5f2348920d5b7fdaa09e52c8ea054cf7bf3f21677c9c - md5: 223f4e56a29601c887f0dc467034af5b - depends: - - deprecated >=1.2.6 - - googleapis-common-protos >=1.52,<2.dev0 - - opentelemetry-api >=1.15,<2.dev0 - - opentelemetry-exporter-otlp-proto-common 1.29.0 - - opentelemetry-proto 1.29.0 - - opentelemetry-sdk 1.29.0 - - python >=3.9 - - requests >=2.7,<3.dev0 - license: Apache-2.0 - license_family: APACHE - size: 17147 - timestamp: 1734345675510 -- conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-prometheus-1.12.0rc1-pyhd8ed1ab_0.conda - sha256: b8239230dbbdb491401e41b53bd9f21d60551cedef1a8d5807fca1bf9bdd331c - md5: 1ddc95052b31147d1e10d818cf519cf5 - depends: - - opentelemetry-api >=1.10.0 - - opentelemetry-sdk >=1.10.0 - - prometheus_client >=0.5.0,<1.0.0 - - python >=3.6 - license: Apache-2.0 - license_family: APACHE - size: 14721 - timestamp: 1695214221489 -- conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.29.0-pyhd8ed1ab_0.conda - sha256: 200a7cb8acc8a0ddd6ef55c5460cec871b6a265929b240a0296c0ccb9c8d9758 - md5: e2a6d2ad10b813c7fdc1c64aac376128 - depends: - - protobuf <6.0,>=5.0 - - python >=3.9 - license: Apache-2.0 - license_family: APACHE - size: 37235 - timestamp: 1734291034372 -- conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.29.0-pyhd8ed1ab_0.conda - sha256: 7b36629d8b8be8a019fcfd1518d7b7f862dd25de96f8adcadb93e4fd12cf9bd6 - md5: 2a8893f06e6ebda4bfa78875bc923ea4 - depends: - - opentelemetry-api 1.29.0 - - opentelemetry-semantic-conventions 0.50b0 - - python >=3.9 - - typing-extensions >=3.7.4 - - typing_extensions >=3.7.4 - license: Apache-2.0 - license_family: APACHE - size: 77645 - timestamp: 1734297838999 -- conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.50b0-pyh3cfb1c2_0.conda - sha256: 6526e70368d5bf66ef0eaa51fb800d53782dde71a24bd38f40139919a6f784dc - md5: f7111fa4188d646c8108e232d024cb99 - depends: - - deprecated >=1.2.6 - - opentelemetry-api 1.29.0 - - python >=3.9 - license: Apache-2.0 - license_family: APACHE - size: 86084 - timestamp: 1734208980168 -- conda: https://conda.anaconda.org/conda-forge/linux-64/orc-2.0.3-h12ee42a_2.conda - sha256: dff5cc8023905782c86b3459055f26d4b97890e403b0698477c9fed15d8669cc - md5: 4f6f9f3f80354ad185e276c120eac3f0 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libprotobuf >=5.28.3,<5.28.4.0a0 - - libstdcxx >=13 - - libzlib >=1.3.1,<2.0a0 - - lz4-c >=1.10.0,<1.11.0a0 - - snappy >=1.2.1,<1.3.0a0 - - tzdata - - zstd >=1.5.6,<1.6.0a0 - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 1188881 - timestamp: 1735630209320 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/orc-2.0.3-hdd485aa_2.conda - sha256: b6c67542352a86cdf143c3066d5cda855b74454a156eedcd8958b494c6a32a83 - md5: d19f01b42e5d6a2908b65df435aff42f - depends: - - libgcc >=13 - - libprotobuf >=5.28.3,<5.28.4.0a0 - - libstdcxx >=13 - - libzlib >=1.3.1,<2.0a0 - - lz4-c >=1.10.0,<1.11.0a0 - - snappy >=1.2.1,<1.3.0a0 - - tzdata - - zstd >=1.5.6,<1.6.0a0 - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 1167714 - timestamp: 1735630248837 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/orc-2.0.3-h0ff2369_2.conda - sha256: cca330695f3bdb8c0e46350c29cd4af3345865544e36f1d7c9ba9190ad22f5f4 - md5: 24b1897c0d24afbb70704ba998793b78 - depends: - - __osx >=11.0 - - libcxx >=18 - - libprotobuf >=5.28.3,<5.28.4.0a0 - - libzlib >=1.3.1,<2.0a0 - - lz4-c >=1.10.0,<1.11.0a0 - - snappy >=1.2.1,<1.3.0a0 - - tzdata - - zstd >=1.5.6,<1.6.0a0 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: Apache - size: 438520 - timestamp: 1735630624140 -- conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - sha256: da157b19bcd398b9804c5c52fc000fcb8ab0525bdb9c70f95beaa0bb42f85af1 - md5: 3bfed7e6228ebf2f7b9eaa47f1b4e2aa - depends: - - python >=3.8 - license: Apache-2.0 - license_family: APACHE - size: 60164 - timestamp: 1733203368787 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.3-py311h7db5c69_1.conda - sha256: dce121d3838996b77b810ca9097cc17068552075c761408a9b2eb788cf8fd1b0 - md5: 643f8cb35133eb1be4919fb953f0a25f - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libstdcxx >=13 - - numpy >=1.19,<3 - - numpy >=1.22.4 - - python >=3.11,<3.12.0a0 - - python-dateutil >=2.8.1 - - python-tzdata >=2022a - - python_abi 3.11.* *_cp311 - - pytz >=2020.1,<2024.2 - arch: x86_64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 15695466 - timestamp: 1726879158862 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pandas-2.2.3-py311h848c333_2.conda - sha256: 85c43e205902b6960ce203201aada9cef9b3e24c51de5bdd4feb1127000c5680 - md5: f5ab90c426888c9c916b1956e1a03b3c - depends: - - libgcc >=13 - - libstdcxx >=13 - - numpy >=1.19,<3 - - numpy >=1.22.4 - - python >=3.11,<3.12.0a0 - - python >=3.11,<3.12.0a0 *_cpython - - python-dateutil >=2.8.1 - - python-tzdata >=2022a - - python_abi 3.11.* *_cp311 - - pytz >=2020.1,<2024.2 - constrains: - - sqlalchemy >=2.0.0 - - scipy >=1.10.0 - - fsspec >=2022.11.0 - - xlsxwriter >=3.0.5 - - numba >=0.56.4 - - tabulate >=0.9.0 - - pytables >=3.8.0 - - zstandard >=0.19.0 - - gcsfs >=2022.11.0 - - pyqt5 >=5.15.8 - - beautifulsoup4 >=4.11.2 - - psycopg2 >=2.9.6 - - s3fs >=2022.11.0 - - lxml >=4.9.2 - - xarray >=2022.12.0 - - openpyxl >=3.1.0 - - fastparquet >=2022.12.0 - - numexpr >=2.8.4 - - pyreadstat >=1.2.0 - - qtpy >=2.3.0 - - tzdata >=2022.7 - - matplotlib >=3.6.3 - - pyxlsb >=1.0.10 - - blosc >=1.21.3 - - bottleneck >=1.3.6 - arch: aarch64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 15432560 - timestamp: 1736811218050 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.3-py311h9cb3ce9_1.conda - sha256: 0a08027b25e4f6034d7733c7366f44283246d61cb82d1721f8789d50ebfef287 - md5: 9ffa9dee175c76e68ea5de5aa1168d83 - depends: - - __osx >=11.0 - - libcxx >=17 - - numpy >=1.19,<3 - - numpy >=1.22.4 - - python >=3.11,<3.12.0a0 - - python >=3.11,<3.12.0a0 *_cpython - - python-dateutil >=2.8.1 - - python-tzdata >=2022a - - python_abi 3.11.* *_cp311 - - pytz >=2020.1,<2024.2 - arch: arm64 - platform: osx - license: BSD-3-Clause - license_family: BSD - size: 14807397 - timestamp: 1726879116250 -- conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda - sha256: 9f64009cdf5b8e529995f18e03665b03f5d07c0b17445b8badef45bde76249ee - md5: 617f15191456cc6a13db418a275435e5 - depends: - - python >=3.9 - license: MPL-2.0 - license_family: MOZILLA - size: 41075 - timestamp: 1733233471940 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-11.1.0-py311h1322bbf_0.conda - sha256: 71e0ce18201695adec3bbbfbab74e82b0ab05fe8929ad046d2c507a71c8a3c63 - md5: 9f4f5593335f76c1dbf7381c11fe7155 - depends: - - __glibc >=2.17,<3.0.a0 - - freetype >=2.12.1,<3.0a0 - - lcms2 >=2.16,<3.0a0 - - libgcc >=13 - - libjpeg-turbo >=3.0.0,<4.0a0 - - libtiff >=4.7.0,<4.8.0a0 - - libwebp-base >=1.5.0,<2.0a0 - - libxcb >=1.17.0,<2.0a0 - - libzlib >=1.3.1,<2.0a0 - - openjpeg >=2.5.3,<3.0a0 - - python >=3.11,<3.12.0a0 - - python_abi 3.11.* *_cp311 - - tk >=8.6.13,<8.7.0a0 - arch: x86_64 - platform: linux - license: HPND - size: 42021920 - timestamp: 1735929841160 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pillow-11.1.0-py311ha4eaa5e_0.conda - sha256: d31c5eed4a5b0a5f7aee0da620c255d217ac154b59022dca1970395e744f3ba9 - md5: 588cc6d9e6adc21508221b3655cb5949 - depends: - - freetype >=2.12.1,<3.0a0 - - lcms2 >=2.16,<3.0a0 - - libgcc >=13 - - libjpeg-turbo >=3.0.0,<4.0a0 - - libtiff >=4.7.0,<4.8.0a0 - - libwebp-base >=1.5.0,<2.0a0 - - libxcb >=1.17.0,<2.0a0 - - libzlib >=1.3.1,<2.0a0 - - openjpeg >=2.5.3,<3.0a0 - - python >=3.11,<3.12.0a0 - - python_abi 3.11.* *_cp311 - - tk >=8.6.13,<8.7.0a0 - arch: aarch64 - platform: linux - license: HPND - size: 42077620 - timestamp: 1735931287216 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-11.1.0-py311hb9ba9e9_0.conda - sha256: 9d9274b1456e463401169a8b7bfc35378c09686cfac56d2b96a1393085f3fd8f - md5: d8bb4736b33791e270c998dd68a76621 - depends: - - __osx >=11.0 - - freetype >=2.12.1,<3.0a0 - - lcms2 >=2.16,<3.0a0 - - libjpeg-turbo >=3.0.0,<4.0a0 - - libtiff >=4.7.0,<4.8.0a0 - - libwebp-base >=1.5.0,<2.0a0 - - libxcb >=1.17.0,<2.0a0 - - libzlib >=1.3.1,<2.0a0 - - openjpeg >=2.5.3,<3.0a0 - - python >=3.11,<3.12.0a0 - - python >=3.11,<3.12.0a0 *_cpython - - python_abi 3.11.* *_cp311 - - tk >=8.6.13,<8.7.0a0 - arch: arm64 - platform: osx - license: HPND - size: 42451890 - timestamp: 1735929996422 -- conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda - sha256: bb50f6499e8bc1d1a26f17716c97984671121608dc0c3ecd34858112bce59a27 - md5: 577852c7e53901ddccc7e6a9959ddebe - depends: - - python >=3.9 - license: MIT - license_family: MIT - size: 20448 - timestamp: 1733232756001 -- conda: https://conda.anaconda.org/conda-forge/linux-64/prometheus-cpp-1.3.0-ha5d0236_0.conda - sha256: 013669433eb447548f21c3c6b16b2ed64356f726b5f77c1b39d5ba17a8a4b8bc - md5: a83f6a2fdc079e643237887a37460668 - depends: - - __glibc >=2.17,<3.0.a0 - - libcurl >=8.10.1,<9.0a0 - - libgcc >=13 - - libstdcxx >=13 - - libzlib >=1.3.1,<2.0a0 - - zlib - arch: x86_64 - platform: linux - license: MIT - license_family: MIT - size: 199544 - timestamp: 1730769112346 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/prometheus-cpp-1.3.0-h7938499_0.conda - sha256: 9350d7bbc3982a732ff13a7fd17b585509e3b7d0191ac7b810cc3224868e3648 - md5: 10f4301290e51c49979ff98d1bdf2556 - depends: - - libcurl >=8.10.1,<9.0a0 - - libgcc >=13 - - libstdcxx >=13 - - libzlib >=1.3.1,<2.0a0 - - zlib - arch: aarch64 - platform: linux - license: MIT - license_family: MIT - size: 211335 - timestamp: 1730769181127 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/prometheus-cpp-1.3.0-h0967b3e_0.conda - sha256: 851a77ae1a8e90db9b9f3c4466abea7afb52713c3d98ceb0d37ba6ff27df2eff - md5: 7172339b49c94275ba42fec3eaeda34f - depends: - - __osx >=11.0 - - libcurl >=8.10.1,<9.0a0 - - libcxx >=18 - - libzlib >=1.3.1,<2.0a0 - - zlib - arch: arm64 - platform: osx - license: MIT - license_family: MIT - size: 173220 - timestamp: 1730769371051 -- conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda - sha256: bc8f00d5155deb7b47702cb8370f233935704100dbc23e30747c161d1b6cf3ab - md5: 3e01e386307acc60b2f89af0b2e161aa - depends: - - python >=3.9 - license: Apache-2.0 - license_family: Apache - size: 49002 - timestamp: 1733327434163 -- conda: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.1-py311h2dc5d0c_1.conda - sha256: fd19a500d872cd59a48686778d88d845b6fc13728e9bbb5296e01473c99f316a - md5: 70303cb1ae9fd81d7ac642b1115f1b4d - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - python >=3.11,<3.12.0a0 - - python_abi 3.11.* *_cp311 - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 53386 - timestamp: 1737635754425 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.2.1-py311h58d527c_1.conda - sha256: 4e22ba89257a68206e86739134f45055a31b03b4e141bb08efdd11bd287937f9 - md5: 0b2b8c440c33aec87b68d50eabbabbfd - depends: - - libgcc >=13 - - python >=3.11,<3.12.0a0 - - python >=3.11,<3.12.0a0 *_cpython - - python_abi 3.11.* *_cp311 - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 52950 - timestamp: 1737635694294 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.1-py311h4921393_1.conda - sha256: efcef85c917f66722c724c3dee5d4da46141491c161e3da7bca0f749a24dd975 - md5: 56fc6da103f6a19baa493f84ead4eac9 - depends: - - __osx >=11.0 - - python >=3.11,<3.12.0a0 - - python >=3.11,<3.12.0a0 *_cpython - - python_abi 3.11.* *_cp311 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: APACHE - size: 49903 - timestamp: 1737635760954 -- conda: https://conda.anaconda.org/conda-forge/linux-64/protobuf-5.28.3-py311hfdbb021_0.conda - sha256: 2d9b2b9a7549e7dd58138cd3211a11893b8f6dee5a1137529623bf92cddba45b - md5: ddf920c3b5d1cbd5ffbea591d2ad09ea - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libstdcxx >=13 - - python >=3.11,<3.12.0a0 - - python_abi 3.11.* *_cp311 - constrains: - - libprotobuf 5.28.3 - arch: x86_64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 471398 - timestamp: 1731366737017 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/protobuf-5.28.3-py311h89d996e_0.conda - sha256: d09135eb40d9d00741337459e3bc3c28bf30a8817e93874594096a37851d3eca - md5: 6dd92bec86836581e235fb7c42de7df2 - depends: - - libgcc >=13 - - libstdcxx >=13 - - python >=3.11,<3.12.0a0 - - python >=3.11,<3.12.0a0 *_cpython - - python_abi 3.11.* *_cp311 - constrains: - - libprotobuf 5.28.3 - arch: aarch64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 479273 - timestamp: 1731366544077 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/protobuf-5.28.3-py311h155a34a_0.conda - sha256: 18a1b3e59b76c27b03318818e85f7a66b035de77c6b32f077e4af72efbc12269 - md5: ab0b501f96671046b577316280ddb72b - depends: - - __osx >=11.0 - - libcxx >=18 - - python >=3.11,<3.12.0a0 - - python >=3.11,<3.12.0a0 *_cpython - - python_abi 3.11.* *_cp311 - constrains: - - libprotobuf 5.28.3 - arch: arm64 - platform: osx - license: BSD-3-Clause - license_family: BSD - size: 457403 - timestamp: 1731367189837 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda - sha256: 9c88f8c64590e9567c6c80823f0328e58d3b1efb0e1c539c0315ceca764e0973 - md5: b3c17d95b5a10c6e64a21fa17573e70e - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - arch: x86_64 - platform: linux - license: MIT - license_family: MIT - size: 8252 - timestamp: 1726802366959 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pthread-stubs-0.4-h86ecc28_1002.conda - sha256: 977dfb0cb3935d748521dd80262fe7169ab82920afd38ed14b7fee2ea5ec01ba - md5: bb5a90c93e3bac3d5690acf76b4a6386 - depends: - - libgcc >=13 - arch: aarch64 - platform: linux - license: MIT - license_family: MIT - size: 8342 - timestamp: 1726803319942 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pthread-stubs-0.4-hd74edd7_1002.conda - sha256: 8ed65e17fbb0ca944bfb8093b60086e3f9dd678c3448b5de212017394c247ee3 - md5: 415816daf82e0b23a736a069a75e9da7 - depends: - - __osx >=11.0 - arch: arm64 - platform: osx - license: MIT - license_family: MIT - size: 8381 - timestamp: 1726802424786 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-19.0.0-py311h38be061_0.conda - sha256: a9ce1120e916ac00c0d939239a8e37869706424b093cd7bc77fac15da4026a7b - md5: 7c025ec9f61c9a879bbd04fa0b6fe665 - depends: - - libarrow-acero 19.0.0.* - - libarrow-dataset 19.0.0.* - - libarrow-substrait 19.0.0.* - - libparquet 19.0.0.* - - pyarrow-core 19.0.0 *_0_* - - python >=3.11,<3.12.0a0 - - python_abi 3.11.* *_cp311 - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 25288 - timestamp: 1737128217855 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-19.0.0-py311hfecb2dc_0.conda - sha256: b8a11babac0cad24e6cabff3c916588c9c23d82fda04da5d887fa64c9bc601e0 - md5: 06aee69f724f9cec34168b5d2b4d50a1 - depends: - - libarrow-acero 19.0.0.* - - libarrow-dataset 19.0.0.* - - libarrow-substrait 19.0.0.* - - libparquet 19.0.0.* - - pyarrow-core 19.0.0 *_0_* - - python >=3.11,<3.12.0a0 - - python_abi 3.11.* *_cp311 - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 25471 - timestamp: 1737128750973 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-19.0.0-py311ha1ab1f8_0.conda - sha256: ea05d450aad30d57cc13961bef1053c37e3157e399b35f17caf91899da6afb42 - md5: 8638cb5d912482302e58f47975b2b0f8 - depends: - - libarrow-acero 19.0.0.* - - libarrow-dataset 19.0.0.* - - libarrow-substrait 19.0.0.* - - libparquet 19.0.0.* - - pyarrow-core 19.0.0 *_0_* - - python >=3.11,<3.12.0a0 - - python_abi 3.11.* *_cp311 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: APACHE - size: 25396 - timestamp: 1737128390423 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-19.0.0-py311h4854187_0_cpu.conda - sha256: 0f6b9936c1dffb498412dd9ed90f6470fe6fb7db59f560e815a253f0a7e8b263 - md5: c36547523780efe647af301323cf28c8 - depends: - - __glibc >=2.17,<3.0.a0 - - libarrow 19.0.0.* *cpu - - libgcc >=13 - - libstdcxx >=13 - - libzlib >=1.3.1,<2.0a0 - - python >=3.11,<3.12.0a0 - - python_abi 3.11.* *_cp311 - constrains: - - apache-arrow-proc =*=cpu - - numpy >=1.21,<3 - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 5766113 - timestamp: 1737128187299 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-19.0.0-py311ha6d2531_0_cpu.conda - sha256: 5a07866e4716e6f6d39ff0d072f6c89e17cd8b99134533d3459c44b104794d6d - md5: 8626be7cb2437a6d418af4cb656da172 - depends: - - libarrow 19.0.0.* *cpu - - libgcc >=13 - - libstdcxx >=13 - - libzlib >=1.3.1,<2.0a0 - - python >=3.11,<3.12.0a0 - - python >=3.11,<3.12.0a0 *_cpython - - python_abi 3.11.* *_cp311 - constrains: - - apache-arrow-proc =*=cpu - - numpy >=1.21,<3 - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 5123473 - timestamp: 1737128388324 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-19.0.0-py311he04fa90_0_cpu.conda - sha256: e1ea35a0a1dff0763c683b68f3d90978d9c60377a68e86d18cb38ff1aebac054 - md5: a3f7720275193baad2e0c566f48ac485 - depends: - - __osx >=11.0 - - libarrow 19.0.0.* *cpu - - libcxx >=18 - - libzlib >=1.3.1,<2.0a0 - - python >=3.11,<3.12.0a0 - - python >=3.11,<3.12.0a0 *_cpython - - python_abi 3.11.* *_cp311 - constrains: - - apache-arrow-proc =*=cpu - - numpy >=1.21,<3 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: APACHE - size: 4069544 - timestamp: 1737128317188 -- conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - sha256: 79db7928d13fab2d892592223d7570f5061c192f27b9febd1a418427b719acc6 - md5: 12c566707c80111f9799308d9e265aef - depends: - - python >=3.9 - - python - license: BSD-3-Clause - license_family: BSD - size: 110100 - timestamp: 1733195786147 -- conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.6-pyh3cfb1c2_0.conda - sha256: 9a78801a28959edeb945e8270a4e666577b52fac0cf4e35f88cf122f73d83e75 - md5: c69f87041cf24dfc8cb6bf64ca7133c7 - depends: - - annotated-types >=0.6.0 - - pydantic-core 2.27.2 - - python >=3.9 - - typing-extensions >=4.6.1 - - typing_extensions >=4.12.2 - license: MIT - license_family: MIT - size: 296841 - timestamp: 1737761472006 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.27.2-py311h9e33e62_0.conda - sha256: 8ead97151b2f349cd327456fe4a6fcf7c51a3ab6c06f48f4330f86de0d848bd1 - md5: 675cb6079b6b3b4ef4f20399fedf6666 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - python >=3.11,<3.12.0a0 - - python_abi 3.11.* *_cp311 - - typing-extensions >=4.6.0,!=4.7.0 - constrains: - - __glibc >=2.17 - arch: x86_64 - platform: linux - license: MIT - license_family: MIT - size: 1640287 - timestamp: 1734571788310 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pydantic-core-2.27.2-py311h0ca61a2_0.conda - sha256: bae487615db914258d64e44ddb698f8826a3785e97989b37ca2d310069e86e28 - md5: a082086545ee0bcb6c3e7e393532fe03 - depends: - - libgcc >=13 - - python >=3.11,<3.12.0a0 - - python >=3.11,<3.12.0a0 *_cpython - - python_abi 3.11.* *_cp311 - - typing-extensions >=4.6.0,!=4.7.0 - constrains: - - __glibc >=2.17 - arch: aarch64 - platform: linux - license: MIT - license_family: MIT - size: 1504928 - timestamp: 1734572100526 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.27.2-py311h3ff9189_0.conda - sha256: 5163982ef229292ca5b9fe96e756ac29b6c6453d56c9f1dfaf48f5796de78d05 - md5: b96fba96baad08b81c57fd157b481b22 - depends: - - __osx >=11.0 - - python >=3.11,<3.12.0a0 - - python >=3.11,<3.12.0a0 *_cpython - - python_abi 3.11.* *_cp311 - - typing-extensions >=4.6.0,!=4.7.0 - constrains: - - __osx >=11.0 - arch: arm64 - platform: osx - license: MIT - license_family: MIT - size: 1595471 - timestamp: 1734572148778 -- conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.7.1-pyh3cfb1c2_0.conda - sha256: 082fb1ec29917d2c9ed6a862cb8eb9beb88c208ea62c9fef1aeb5f4f3e0e0b06 - md5: d71d76b62bed332b037d7adfc0f3989a - depends: - - pydantic >=2.7.0 - - python >=3.9 - - python-dotenv >=0.21.0 - license: MIT - license_family: MIT - size: 31822 - timestamp: 1735650532951 -- conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda - sha256: 28a3e3161390a9d23bc02b4419448f8d27679d9e2c250e29849e37749c8de86b - md5: 232fb4577b6687b2d503ef8e254270c9 - depends: - - python >=3.9 - license: BSD-2-Clause - license_family: BSD - size: 888600 - timestamp: 1736243563082 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pyinstrument-5.0.1-py311h9ecbd09_0.conda - sha256: c4f1607c86028537c40f7890b731a7e20f0eeff410738e77e9922af72f04658e - md5: e7dcb448d7ad554712347c4b38c14403 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - python >=3.11,<3.12.0a0 - - python_abi 3.11.* *_cp311 - arch: x86_64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 185793 - timestamp: 1737774419894 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyinstrument-5.0.1-py311ha879c10_0.conda - sha256: d5f616be8969d7416212802f516a438800566685db44fb940a8b6bc356789df1 - md5: 48b44b6d83c4248d1f5e6dfe47813ce9 - depends: - - libgcc >=13 - - python >=3.11,<3.12.0a0 - - python >=3.11,<3.12.0a0 *_cpython - - python_abi 3.11.* *_cp311 - arch: aarch64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 187285 - timestamp: 1737774479477 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyinstrument-5.0.1-py311h917b07b_0.conda - sha256: 1429a6c8b9ddf2ed48b87969274cd8973d1153064e28ec9c528a946347d5f258 - md5: 6c4a51644a29a1ee05a113b1a4251a80 - depends: - - __osx >=11.0 - - python >=3.11,<3.12.0a0 - - python >=3.11,<3.12.0a0 *_cpython - - python_abi 3.11.* *_cp311 - arch: arm64 - platform: osx - license: BSD-3-Clause - license_family: BSD - size: 185985 - timestamp: 1737774711065 -- conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - sha256: ba3b032fa52709ce0d9fd388f63d330a026754587a2f461117cac9ab73d8d0d8 - md5: 461219d1a5bd61342293efa2c0c90eac - depends: - - __unix - - python >=3.9 - license: BSD-3-Clause - license_family: BSD - size: 21085 - timestamp: 1733217331982 -- conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.11.11-h9e4cc4f_1_cpython.conda - build_number: 1 - sha256: b29ce0836fce55bdff8d5c5b71c4921a23f87d3b950aea89a9e75784120b06b0 - md5: 8387070aa413ce9a8cc35a509fae938b + license: 0BSD + size: 98945 + timestamp: 1738525462560 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda + sha256: 26d77a3bb4dceeedc2a41bd688564fe71bf2d149fdcf117049970bc02ff1add6 + md5: 30fd6e37fe21f86f4bd26d6ee73eeec7 depends: - - __glibc >=2.17,<3.0.a0 - - bzip2 >=1.0.8,<2.0a0 - - ld_impl_linux-64 >=2.36.1 - - libexpat >=2.6.4,<3.0a0 - - libffi >=3.4,<4.0a0 - - libgcc >=13 - - liblzma >=5.6.3,<6.0a0 - - libnsl >=2.0.1,<2.1.0a0 - - libsqlite >=3.47.0,<4.0a0 - - libuuid >=2.38.1,<3.0a0 - - libxcrypt >=4.4.36 - - libzlib >=1.3.1,<2.0a0 - - ncurses >=6.5,<7.0a0 - - openssl >=3.4.0,<4.0a0 - - readline >=8.2,<9.0a0 - - tk >=8.6.13,<8.7.0a0 - - tzdata - constrains: - - python_abi 3.11.* *_cp311 + - libgcc-ng >=12 arch: x86_64 platform: linux - license: Python-2.0 - size: 30624804 - timestamp: 1733409665928 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.11.11-h1683364_1_cpython.conda - build_number: 1 - sha256: b39a2253510b26213093cb29e27722cb33782aec213c020dfd17cd74d58f68e7 - md5: 7e8786cbe7b83e7011e681a4780c9b7f + license: LGPL-2.1-only + license_family: GPL + size: 33408 + timestamp: 1697359010159 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda + sha256: fd18c2b75d7411096428d36a70b36b1a17e31f7b8956b6905d145792d49e97f8 + md5: c14f32510f694e3185704d89967ec422 depends: - - bzip2 >=1.0.8,<2.0a0 - - ld_impl_linux-aarch64 >=2.36.1 - - libexpat >=2.6.4,<3.0a0 - - libffi >=3.4,<4.0a0 - - libgcc >=13 - - liblzma >=5.6.3,<6.0a0 - - libnsl >=2.0.1,<2.1.0a0 - - libsqlite >=3.47.0,<4.0a0 - - libuuid >=2.38.1,<3.0a0 - - libxcrypt >=4.4.36 - - libzlib >=1.3.1,<2.0a0 - - ncurses >=6.5,<7.0a0 - - openssl >=3.4.0,<4.0a0 - - readline >=8.2,<9.0a0 - - tk >=8.6.13,<8.7.0a0 - - tzdata - constrains: - - python_abi 3.11.* *_cp311 + - libgcc-ng >=12 arch: aarch64 platform: linux - license: Python-2.0 - size: 15234582 - timestamp: 1733407838276 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.11.11-hc22306f_1_cpython.conda - build_number: 1 - sha256: 94e198f6a5affa1431401fca7e3b27fda68c59f5ee726083288bff1f6bed8c7f - md5: 8d81dcd0be5bdcdd98e0f2482bf63784 - depends: - - __osx >=11.0 - - bzip2 >=1.0.8,<2.0a0 - - libexpat >=2.6.4,<3.0a0 - - libffi >=3.4,<4.0a0 - - liblzma >=5.6.3,<6.0a0 - - libsqlite >=3.47.0,<4.0a0 - - libzlib >=1.3.1,<2.0a0 - - ncurses >=6.5,<7.0a0 - - openssl >=3.4.0,<4.0a0 - - readline >=8.2,<9.0a0 - - tk >=8.6.13,<8.7.0a0 - - tzdata - constrains: - - python_abi 3.11.* *_cp311 - arch: arm64 - platform: osx - license: Python-2.0 - size: 14647146 - timestamp: 1733409012105 -- conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - sha256: a50052536f1ef8516ed11a844f9413661829aa083304dc624c5925298d078d79 - md5: 5ba79d7c71f03c678c8ead841f347d6e - depends: - - python >=3.9 - - six >=1.5 - license: Apache-2.0 - license_family: APACHE - size: 222505 - timestamp: 1733215763718 -- conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda - sha256: 99713f6b534fef94995c6c16fd21d59f3548784e9111775d692bdc7c44678f02 - md5: e5c6ed218664802d305e79cc2d4491de - depends: - - python >=3.9 - license: BSD-3-Clause - license_family: BSD - size: 24215 - timestamp: 1733243277223 -- conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - sha256: 4790787fe1f4e8da616edca4acf6a4f8ed4e7c6967aa31b920208fc8f95efcca - md5: a61bf9ec79426938ff785eb69dbb1960 - depends: - - python >=3.6 - license: BSD-2-Clause - license_family: BSD - size: 13383 - timestamp: 1677079727691 -- conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.20-pyhff2d567_0.conda - sha256: 1b03678d145b1675b757cba165a0d9803885807792f7eb4495e48a38858c3cca - md5: a28c984e0429aff3ab7386f7de56de6f - depends: - - python >=3.9 - license: Apache-2.0 - license_family: Apache - size: 27913 - timestamp: 1734420869885 -- conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.1-pyhd8ed1ab_0.conda - sha256: 1597d6055d34e709ab8915091973552a0b8764c8032ede07c4e99670da029629 - md5: 392c91c42edd569a7ec99ed8648f597a - depends: - - python >=3.9 - license: Apache-2.0 - license_family: APACHE - size: 143794 - timestamp: 1737541204030 -- conda: https://conda.anaconda.org/conda-forge/linux-64/python-xxhash-3.5.0-py311h9ecbd09_1.conda - sha256: 77d1b380b672cdcb9b0b79b9d37b7617014219246d26462f92fae0e40fa72d05 - md5: b1796d741ca619dbacb79917b20e5a05 + license: LGPL-2.1-only + license_family: GPL + size: 34501 + timestamp: 1697358973269 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.28-pthreads_h94d23a6_1.conda + sha256: 99ba271d8a80a1af2723f2e124ffd91d850074c0389c067e6d96d72a2dbfeabe + md5: 62857b389e42b36b686331bec0922050 depends: - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - python >=3.11,<3.12.0a0 - - python_abi 3.11.* *_cp311 - - xxhash >=0.8.2,<0.8.3.0a0 - arch: x86_64 - platform: linux - license: BSD-2-Clause - license_family: BSD - size: 23052 - timestamp: 1725272142790 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-xxhash-3.5.0-py311h5487e9b_1.conda - sha256: b6afb0cf56db20f58746caf340ef6506e97c393c75d3606bc24f250146c31da0 - md5: 5236c2ea626886210fd14e7c005ac732 - depends: - - libgcc >=13 - - python >=3.11,<3.12.0a0 - - python_abi 3.11.* *_cp311 - - xxhash >=0.8.2,<0.8.3.0a0 - arch: aarch64 - platform: linux - license: BSD-2-Clause - license_family: BSD - size: 23601 - timestamp: 1725273164263 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-xxhash-3.5.0-py311h460d6c5_1.conda - sha256: fbed29039fd5eabf7c8e55dcfba2533673e1e48346efdc16096d2a2bb785e262 - md5: f4d1c51beffde2a6612b993bb9a63622 - depends: - - __osx >=11.0 - - python >=3.11,<3.12.0a0 - - python >=3.11,<3.12.0a0 *_cpython - - python_abi 3.11.* *_cp311 - - xxhash >=0.8.2,<0.8.3.0a0 - arch: arm64 - platform: osx - license: BSD-2-Clause - license_family: BSD - size: 21621 - timestamp: 1725272333568 -- conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.11-5_cp311.conda - build_number: 5 - sha256: 2660b8059b3ee854bc5d3c6b1fce946e5bd2fe8fbca7827de2c5885ead6209de - md5: 139a8d40c8a2f430df31048949e450de + - libgcc >=14 + - libgfortran + - libgfortran5 >=14.2.0 constrains: - - python 3.11.* *_cpython + - openblas >=0.3.28,<0.3.29.0a0 arch: x86_64 platform: linux license: BSD-3-Clause license_family: BSD - size: 6211 - timestamp: 1723823324668 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.11-5_cp311.conda - build_number: 5 - sha256: 76974c2732919ace87b5f3a634eac93fed6900d557fcae0575787ec0a33c370e - md5: c2078141f21872cc34d9305123ba08f2 + size: 5578513 + timestamp: 1730772671118 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.28-pthreads_h9d3fd7e_1.conda + sha256: 30623a40764e935aa77e0d4db54c1a1589189a9bf3a03fdb445505c1e319b5a6 + md5: e8dde93dd199da3c1f2c1fcfd0042cd4 + depends: + - libgcc >=14 + - libgfortran + - libgfortran5 >=14.2.0 constrains: - - python 3.11.* *_cpython + - openblas >=0.3.28,<0.3.29.0a0 arch: aarch64 platform: linux license: BSD-3-Clause license_family: BSD - size: 6300 - timestamp: 1723823316891 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.11-5_cp311.conda - build_number: 5 - sha256: adc05729b7e0aca7b436e60a86f10822a92185dfcb48d66d6444e3629d3a1f6a - md5: 3b855e3734344134cb56c410f729c340 + size: 4793435 + timestamp: 1730773029647 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.28-openmp_hf332438_1.conda + sha256: 62bb669c37a845129096f73d446cdb6bb170e4927f2fea2b661329680dbbc373 + md5: 40803a48d947c8639da6704e9a44d3ce + depends: + - __osx >=11.0 + - libgfortran 5.* + - libgfortran5 >=13.2.0 + - llvm-openmp >=18.1.8 constrains: - - python 3.11.* *_cpython + - openblas >=0.3.28,<0.3.29.0a0 arch: arm64 platform: osx license: BSD-3-Clause license_family: BSD - size: 6308 - timestamp: 1723823096865 -- conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda - sha256: 1a7d6b233f7e6e3bbcbad054c8fd51e690a67b129a899a056a5e45dd9f00cb41 - md5: 3eeeeb9e4827ace8c0c1419c85d590ad - depends: - - python >=3.7 - license: MIT - license_family: MIT - size: 188538 - timestamp: 1706886944988 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py311h2dc5d0c_2.conda - sha256: d107ad62ed5c62764fba9400f2c423d89adf917d687c7f2e56c3bfed605fb5b3 - md5: 014417753f948da1f70d132b2de573be - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - python >=3.11,<3.12.0a0 - - python_abi 3.11.* *_cp311 - - yaml >=0.2.5,<0.3.0a0 - arch: x86_64 - platform: linux - license: MIT - license_family: MIT - size: 213136 - timestamp: 1737454846598 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyyaml-6.0.2-py311h58d527c_2.conda - sha256: b7eb3696fae7e3ae66d523f422fc4757b1842b23f022ad5d0c94209f75c258b2 - md5: 01b93dc85ced3be09926e04498cbd260 - depends: - - libgcc >=13 - - python >=3.11,<3.12.0a0 - - python >=3.11,<3.12.0a0 *_cpython - - python_abi 3.11.* *_cp311 - - yaml >=0.2.5,<0.3.0a0 - arch: aarch64 - platform: linux - license: MIT - license_family: MIT - size: 206194 - timestamp: 1737454848998 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py311h4921393_2.conda - sha256: 2af6006c9f692742181f4aa2e0656eb112981ccb0b420b899d3dd42c881bd72f - md5: 250b2ee8777221153fd2de9c279a7efa - depends: - - __osx >=11.0 - - python >=3.11,<3.12.0a0 - - python >=3.11,<3.12.0a0 *_cpython - - python_abi 3.11.* *_cp311 - - yaml >=0.2.5,<0.3.0a0 - arch: arm64 - platform: osx - license: MIT - license_family: MIT - size: 196951 - timestamp: 1737454935552 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.1-py311h7deb3e3_0.conda - sha256: bd6309ef4629744aaaccd9b33d6389dfe879e9864386137e6e4ecc7e1b9ed0f3 - md5: 52457fbaa0aef8136d5dd7bb8a36db9e + size: 4165774 + timestamp: 1730772154295 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda + sha256: 51125ebb8b7152e4a4e69fd2398489c4ec8473195c27cde3cbdf1cb6d18c5493 + md5: d8703f1ffe5a06356f06467f1d0b9464 depends: - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 - libgcc >=13 - - libsodium >=1.0.20,<1.0.21.0a0 - libstdcxx >=13 - - python >=3.11,<3.12.0a0 - - python_abi 3.11.* *_cp311 - - zeromq >=4.3.5,<4.4.0a0 + - libzlib >=1.3.1,<2.0a0 arch: x86_64 platform: linux - license: BSD-3-Clause - license_family: BSD - size: 392547 - timestamp: 1738271109731 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyzmq-26.2.1-py311h826da9f_0.conda - sha256: 09783a354a64324ed363a3c9de0f98d088f74f009d1a6fdd263c3758c4924992 - md5: 919dc1bfa979c20c6358f06e4ee8529f + license: BSD-3-Clause + license_family: BSD + size: 2960815 + timestamp: 1735577210663 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.3-h44a3b7b_1.conda + sha256: ecb69f2b1668e784b41ba667493be846662d5ef702bef64fb2e013bb1364cdc4 + md5: 68f807f7cc13951652bbe048253fd405 depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 - libgcc >=13 - - libsodium >=1.0.20,<1.0.21.0a0 - libstdcxx >=13 - - python >=3.11,<3.12.0a0 - - python_abi 3.11.* *_cp311 - - zeromq >=4.3.5,<4.4.0a0 + - libzlib >=1.3.1,<2.0a0 arch: aarch64 platform: linux license: BSD-3-Clause license_family: BSD - size: 386832 - timestamp: 1738273148939 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.1-py311h01f2145_0.conda - sha256: 29255e5ca9f0b50d551fce4d5b7745fa11b4e672418a6d88a4c3f1a974dd4e44 - md5: 4c5daee5a983fb515460a2714b612126 + size: 2788074 + timestamp: 1735576315676 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.3-h3bd63a1_1.conda + sha256: f58a16b13ad53346903c833e266f83c3d770a43a432659b98710aed85ca885e7 + md5: bdbfea4cf45ae36652c6bbcc2e7ebe91 depends: - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 - libcxx >=18 - - libsodium >=1.0.20,<1.0.21.0a0 - - python >=3.11,<3.12.0a0 - - python >=3.11,<3.12.0a0 *_cpython - - python_abi 3.11.* *_cp311 - - zeromq >=4.3.5,<4.4.0a0 + - libzlib >=1.3.1,<2.0a0 arch: arm64 platform: osx license: BSD-3-Clause license_family: BSD - size: 370170 - timestamp: 1738271259321 -- conda: https://conda.anaconda.org/conda-forge/linux-64/re2-2024.07.02-h9925aae_2.conda - sha256: d213c44958d49ce7e0d4d5b81afec23640cce5016685dbb2d23571a99caa4474 - md5: e84ddf12bde691e8ec894b00ea829ddf + size: 2271580 + timestamp: 1735576361997 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsentencepiece-0.2.0-h8e10757_10.conda + sha256: dc399e0f04a09f8c1807c3b36e578eb81f81891c0ddf21de9c1fb9f048ce4031 + md5: 4f43dbcfacd3cc9a183dd3a48b94d3c0 depends: - - libre2-11 2024.07.02 hbbce691_2 + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 arch: x86_64 platform: linux - license: BSD-3-Clause - license_family: BSD - size: 26786 - timestamp: 1735541074034 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/re2-2024.07.02-haa97905_2.conda - sha256: 040848655df9119bae5a549fb5c8956a5537120859416c1d9d0712b7bac9f12e - md5: 1bf0135339b4a7419a198a795d2d4be0 + license: Apache-2.0 + license_family: Apache + size: 823649 + timestamp: 1735627841126 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsentencepiece-0.2.0-h6164ad9_10.conda + sha256: 57074803772f65d4075b7d6dc17ff5aa40ec3a30109fa4225ca16911504c4a8b + md5: a7a192edc9cfba26a27df3283203e6a1 depends: - - libre2-11 2024.07.02 h18dbdb1_2 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 arch: aarch64 platform: linux - license: BSD-3-Clause - license_family: BSD - size: 26830 - timestamp: 1735540999398 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/re2-2024.07.02-h6589ca4_2.conda - sha256: 4d3799c05f8f662922a0acd129d119774760a3281b883603678e128d1cb307fb - md5: 7a8b4ad8c58a3408ca89d78788c78178 + license: Apache-2.0 + license_family: Apache + size: 800865 + timestamp: 1735627982895 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsentencepiece-0.2.0-he13a0af_10.conda + sha256: 3347a8840d085ce1661928e736229f068d56c84312fbed90886e059023d85611 + md5: 1f67e5e30edd56e0a0bf6df6bb711a9d depends: - - libre2-11 2024.07.02 h07bc746_2 + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 arch: arm64 platform: osx - license: BSD-3-Clause - license_family: BSD - size: 26861 - timestamp: 1735541088455 -- conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda - sha256: 5435cf39d039387fbdc977b0a762357ea909a7694d9528ab40f005e9208744d7 - md5: 47d31b792659ce70f470b5c82fdfb7a4 + license: Apache-2.0 + license_family: Apache + size: 754657 + timestamp: 1735628030895 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda + sha256: 0105bd108f19ea8e6a78d2d994a6d4a8db16d19a41212070d2d1d48a63c34161 + md5: a587892d3c13b6621a6091be690dbca2 depends: - libgcc-ng >=12 - - ncurses >=6.3,<7.0a0 arch: x86_64 platform: linux - license: GPL-3.0-only - license_family: GPL - size: 281456 - timestamp: 1679532220005 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8fc344f_1.conda - sha256: 4c99f7417419734e3797d45bc355e61c26520e111893b0d7087a01a7fbfbe3dd - md5: 105eb1e16bf83bfb2eb380a48032b655 + license: ISC + size: 205978 + timestamp: 1716828628198 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.20-h68df207_0.conda + sha256: 448df5ea3c5cf1af785aad46858d7a5be0522f4234a4dc9bb764f4d11ff3b981 + md5: 2e4a8f23bebdcb85ca8e5a0fbe75666a depends: - libgcc-ng >=12 - - ncurses >=6.3,<7.0a0 arch: aarch64 platform: linux - license: GPL-3.0-only - license_family: GPL - size: 294092 - timestamp: 1679532238805 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h92ec313_1.conda - sha256: a1dfa679ac3f6007362386576a704ad2d0d7a02e98f5d0b115f207a2da63e884 - md5: 8cbb776a2f641b943d413b3e19df71f4 + license: ISC + size: 177394 + timestamp: 1716828514515 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda + sha256: fade8223e1e1004367d7101dd17261003b60aa576df6d7802191f8972f7470b1 + md5: a7ce36e284c5faaf93c220dfc39e3abd depends: - - ncurses >=6.3,<7.0a0 + - __osx >=11.0 arch: arm64 platform: osx - license: GPL-3.0-only - license_family: GPL - size: 250351 - timestamp: 1679532511311 -- conda: https://conda.anaconda.org/conda-forge/linux-64/regex-2024.11.6-py311h9ecbd09_0.conda - sha256: 5151d752339013a81d62632f807b370a231faaff5a6b550cb848e53fbcaf581f - md5: 08f56182b69c47595c7fbbbc195f4867 + license: ISC + size: 164972 + timestamp: 1716828607917 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.48.0-hee588c1_1.conda + sha256: 22853d289ef6ec8a5b20f1aa261895b06525439990d3b139f8bfd0b5c5e32a3a + md5: 3fa05c528d8a1e2a67bbf1e36f22d3bc depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - - python >=3.11,<3.12.0a0 - - python_abi 3.11.* *_cp311 + - libzlib >=1.3.1,<2.0a0 arch: x86_64 platform: linux - license: Python-2.0 - license_family: PSF - size: 409743 - timestamp: 1730952290379 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/regex-2024.11.6-py311ha879c10_0.conda - sha256: 6de016ed6900c06b0536f7797e4056e7baebd4158663c1df2498990433da437e - md5: 8981724b818c01d6d0d2d7b9750b1d7e + license: Unlicense + size: 878223 + timestamp: 1737564987837 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.48.0-h5eb1b54_1.conda + sha256: 81dd9bf66c7f1d9064e007e2c787133100c406e7ca2de61dba9fb7b87372f255 + md5: 4f3a61fe206f20b27c385ee608bcdfda depends: - libgcc >=13 - - python >=3.11,<3.12.0a0 - - python >=3.11,<3.12.0a0 *_cpython - - python_abi 3.11.* *_cp311 + - libzlib >=1.3.1,<2.0a0 arch: aarch64 platform: linux - license: Python-2.0 - license_family: PSF - size: 404338 - timestamp: 1730952422447 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/regex-2024.11.6-py311h917b07b_0.conda - sha256: 508beb88118fcb9977346cbb95ada84c478381f12108d40787f64e9355b9370e - md5: 8ee270aa3c07b51b22e5288e51dd3efb + license: Unlicense + size: 1044879 + timestamp: 1737565049785 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.48.0-h3f77e49_1.conda + sha256: 17c06940cc2a13fd6a17effabd6881b1477db38b2cd3ee2571092d293d3fdd75 + md5: 4c55169502ecddf8077973a987d08f08 depends: - __osx >=11.0 - - python >=3.11,<3.12.0a0 - - python >=3.11,<3.12.0a0 *_cpython - - python_abi 3.11.* *_cp311 + - libzlib >=1.3.1,<2.0a0 arch: arm64 platform: osx - license: Python-2.0 - license_family: PSF - size: 375284 - timestamp: 1730952380791 -- conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda - sha256: d701ca1136197aa121bbbe0e8c18db6b5c94acbd041c2b43c70e5ae104e1d8ad - md5: a9b9368f3701a417eac9edbcae7cb737 - depends: - - certifi >=2017.4.17 - - charset-normalizer >=2,<4 - - idna >=2.5,<4 - - python >=3.9 - - urllib3 >=1.21.1,<3 - constrains: - - chardet >=3.0.2,<6 - license: Apache-2.0 - license_family: APACHE - size: 58723 - timestamp: 1733217126197 -- conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_1.conda - sha256: 06a760c5ae572e72e865d5a87e9fe3cc171e1a9c996e63daf3db52ff1a0b4457 - md5: 7aed65d4ff222bfb7335997aa40b7da5 - depends: - - markdown-it-py >=2.2.0 - - pygments >=2.13.0,<3.0.0 - - python >=3.9 - - typing_extensions >=4.0.0,<5.0.0 - license: MIT - license_family: MIT - size: 185646 - timestamp: 1733342347277 -- conda: https://conda.anaconda.org/conda-forge/noarch/rich-toolkit-0.11.3-pyh29332c3_0.conda - sha256: e558f8c254a9ff9164d069110da162fc79497d70c60f2c09a5d3d0d7101c5628 - md5: 4ba15ae9388b67d09782798347481f69 + license: Unlicense + size: 852831 + timestamp: 1737564996616 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-hc0a3c3a_1.conda + sha256: 4661af0eb9bdcbb5fb33e5d0023b001ad4be828fccdcc56500059d56f9869462 + md5: 234a5554c53625688d51062645337328 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 -- conda: https://conda.anaconda.org/conda-forge/linux-64/s2n-1.5.11-h072c03f_0.conda - sha256: cfdd98c8f9a1e5b6f9abce5dac6d590cc9fe541a08466c9e4a26f90e00b569e3 - md5: 5e8060d52f676a40edef0006a75c718f + - libgcc 14.2.0 h77fa898_1 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 3893695 + timestamp: 1729027746910 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_1.conda + sha256: 519556d2c93f1b487091ce046d62e762286177f4a670ec10e16005177d0bcab3 + md5: 37f489acd39e22b623d2d1e5ac6d195c depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - openssl >=3.4.0,<4.0a0 + - libgcc 14.2.0 he277a41_1 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 3816794 + timestamp: 1729089463404 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_1.conda + sha256: 25bb30b827d4f6d6f0522cc0579e431695503822f144043b93c50237017fffd8 + md5: 8371ac6457591af2cf6159439c1fd051 + depends: + - libstdcxx 14.2.0 hc0a3c3a_1 arch: x86_64 platform: linux - license: Apache-2.0 - license_family: Apache - size: 356213 - timestamp: 1737146304079 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/s2n-1.5.11-h3caee7a_0.conda - sha256: 5a7ae66f96be24c3b2007139b6c3701ab015b4b4eb4eccfdd07be97710243a47 - md5: 1517c0518f8a06a48a15f41d94252874 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 54105 + timestamp: 1729027780628 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_1.conda + sha256: 9f97461bd55a2745a7a0941f3502a047f15bfe7bb2952dc7fb204b3202f866fd + md5: 0e75771b8a03afae5a2c6ce71bc733f5 depends: - - libgcc >=13 - - openssl >=3.4.0,<4.0a0 + - libstdcxx 14.2.0 h3f4de04_1 arch: aarch64 platform: linux - license: Apache-2.0 - license_family: Apache - size: 352811 - timestamp: 1737146319512 -- conda: https://conda.anaconda.org/conda-forge/linux-64/safetensors-0.5.2-py311h9e33e62_0.conda - sha256: 44cd1d3def08f2aaad270263f08a07c2237fb38f2de40a26d1d23a3b9f01e542 - md5: 167fe161b7ba7c613676e67eb5e81335 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 54133 + timestamp: 1729089498541 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda + sha256: 787eb542f055a2b3de553614b25f09eefb0a0931b0c87dbcce6efdfd92f04f18 + md5: 40b61aab5c7ba9ff276c41cfffe6b80b + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 33601 + timestamp: 1680112270483 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda + sha256: 616277b0c5f7616c2cdf36f6c316ea3f9aa5bb35f2d4476a349ab58b9b91675f + md5: 000e30b09db0b7c775b21695dff30969 + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 35720 + timestamp: 1680113474501 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda + sha256: 6ae68e0b86423ef188196fff6207ed0c8195dd84273cb5623b85aa08033a410c + md5: 5aa797f8787fe7a17d1b0821485b5adc + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: LGPL-2.1-or-later + size: 100393 + timestamp: 1702724383534 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda + sha256: 6b46c397644091b8a26a3048636d10b989b1bf266d4be5e9474bf763f828f41f + md5: b4df5d7d4b63579d081fd3a4cf99740e + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: LGPL-2.1-or-later + size: 114269 + timestamp: 1702724369203 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda + sha256: d4bfe88d7cb447768e31650f06257995601f89076080e76df55e3112d4e47dc4 + md5: edb0dca6bc32e4f4789199455a1dbeb8 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - - python >=3.11,<3.12.0a0 - - python_abi 3.11.* *_cp311 constrains: - - __glibc >=2.17 + - zlib 1.3.1 *_2 arch: x86_64 platform: linux - license: Apache-2.0 - license_family: APACHE - size: 424244 - timestamp: 1736383224621 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/safetensors-0.5.2-py311h0ca61a2_0.conda - sha256: 37368ad91632f174c7320080a0e585757d107e4ed96293b4c105ea4cd94b27af - md5: b7e3ca91aed0f0e599674b337b2ff1de + license: Zlib + license_family: Other + size: 60963 + timestamp: 1727963148474 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda + sha256: 5a2c1eeef69342e88a98d1d95bff1603727ab1ff4ee0e421522acd8813439b84 + md5: 08aad7cbe9f5a6b460d0976076b6ae64 depends: - libgcc >=13 - - python >=3.11,<3.12.0a0 - - python >=3.11,<3.12.0a0 *_cpython - - python_abi 3.11.* *_cp311 constrains: - - __glibc >=2.17 + - zlib 1.3.1 *_2 arch: aarch64 platform: linux - license: Apache-2.0 - license_family: APACHE - size: 410151 - timestamp: 1736383157694 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/safetensors-0.5.2-py311h3ff9189_0.conda - sha256: bdc212832af1daef1769d4ec087a9e0de167a7874d2194b38b8c19a5e1b2b4d6 - md5: c9c0839c2dc7b9a35ce0adf722562c34 + license: Zlib + license_family: Other + size: 66657 + timestamp: 1727963199518 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda + sha256: ce34669eadaba351cd54910743e6a2261b67009624dbc7daeeafdef93616711b + md5: 369964e85dc26bfe78f41399b366c435 depends: - __osx >=11.0 - - python >=3.11,<3.12.0a0 - - python >=3.11,<3.12.0a0 *_cpython - - python_abi 3.11.* *_cp311 constrains: + - zlib 1.3.1 *_2 + arch: arm64 + platform: osx + license: Zlib + license_family: Other + size: 46438 + timestamp: 1727963202283 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda + sha256: b92a669f2059874ebdcb69041b6c243d68ffc3fb356ac1339cec44aeb27245d7 + md5: c4d54bfd3817313ce758aa76283b118d + depends: - __osx >=11.0 + constrains: + - openmp 19.1.7|19.1.7.* arch: arm64 platform: osx - license: Apache-2.0 + license: Apache-2.0 WITH LLVM-exception license_family: APACHE - size: 379719 - timestamp: 1736383534476 -- conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda - sha256: 0557c090913aa63cdbe821dbdfa038a321b488e22bc80196c4b3b1aace4914ef - md5: 7c3c2a0f3ebdea2bbc35538d162b43bf + size: 280830 + timestamp: 1736986295869 +- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020700-release.conda + noarch: python + sha256: 0c5086da2c8515aae71eb8b4c0b7805411c39d89a141fba0c48071d06352ae58 + md5: 8a119d75ab58c7869a319618c1bd0629 depends: - - python >=3.9 + - max-core ==25.1.0.dev2025020700 release + - max-python ==25.1.0.dev2025020700 release + - mojo-jupyter ==25.1.0.dev2025020700 release + - mblack ==25.1.0.dev2025020700 release + license: LicenseRef-Modular-Proprietary + size: 9901 + timestamp: 1738887556307 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025020700-release.conda + sha256: 0a2843fb9b523381166040e5f9196d555a8173d20e9facf63668ac4c3c3bd7e5 + md5: bcd3f009a29988347468e74c40230aa0 + depends: + - mblack ==25.1.0.dev2025020700 release + license: LicenseRef-Modular-Proprietary + size: 244772443 + timestamp: 1738887618224 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025020700-release.conda + sha256: e6a390b2417ee1da36047c75ce78d80cd076d03eae3ebf44db45cf6339f13310 + md5: 8b535a200a237518b5255359b884dd1c + depends: + - mblack ==25.1.0.dev2025020700 release + license: LicenseRef-Modular-Proprietary + size: 247279800 + timestamp: 1738887556307 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025020700-release.conda + sha256: f2fd1544fd907bcc8529dd32ec5424187892397745e4898368e956ac05c48e02 + md5: c0cbf1c622073adc4c1e002559ee4984 + depends: + - mblack ==25.1.0.dev2025020700 release + license: LicenseRef-Modular-Proprietary + size: 209654994 + timestamp: 1738888179079 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025020700-release.conda + noarch: python + sha256: 23e51aa18d098b77a33de9b223e858ceb24dca4883dec954036d1d3cb5b3c7f2 + md5: d7bfb71fa8c8936ac46cd65cdbaceed6 + depends: + - max-core ==25.1.0.dev2025020700 release + - click >=8.0.0 + - numpy >=1.18,<2.0 + - sentencepiece >=0.2.0 + - tqdm >=4.67.1 + constrains: + - aiohttp >=3.11.12 + - fastapi >=0.114.2 + - gguf >=0.14.0 + - hf-transfer >=0.1.9 + - httpx >=0.28.1 + - huggingface_hub >=0.24.0 + - nvitop >=1.4.1 + - opentelemetry-api >=1.29.0 + - opentelemetry-exporter-otlp-proto-http >=1.27.0 + - opentelemetry-exporter-prometheus >=0.48b0 + - opentelemetry-sdk >=1.29.0,<2.0 + - pillow >=10.3.0 + - prometheus_client >=0.21.0 + - prometheus-async >=22.2.0 + - psutil >=6.1.1 + - pydantic + - pydantic-settings >=2.7.1 + - pyinstrument >=5.0.1 + - python-json-logger >=2.0.7 + - requests >=2.32.3 + - rich >=13.9.4 + - safetensors >=0.5.2 + - scipy >=1.15.1 + - sentinel >=0.3.0 + - sse-starlette >=2.1.2 + - tokenizers >=0.19.0 + - pytorch >=2.2.2,<=2.5.1 + - transformers >=4.40.1 + - uvicorn >=0.34.0 + - uvloop >=0.21.0 + license: LicenseRef-Modular-Proprietary + size: 120644157 + timestamp: 1738887618224 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025020700-release.conda + noarch: python + sha256: 1113181f7ac5ab5b19dec273f34eea07d39d9ac3713d372cde746fe7804e2692 + md5: b5cdc8249909a14ad5cc69cb7b5c30e4 + depends: + - max-core ==25.1.0.dev2025020700 release + - click >=8.0.0 + - numpy >=1.18,<2.0 + - sentencepiece >=0.2.0 + - tqdm >=4.67.1 + constrains: + - aiohttp >=3.11.12 + - fastapi >=0.114.2 + - gguf >=0.14.0 + - hf-transfer >=0.1.9 + - httpx >=0.28.1 + - huggingface_hub >=0.24.0 + - nvitop >=1.4.1 + - opentelemetry-api >=1.29.0 + - opentelemetry-exporter-otlp-proto-http >=1.27.0 + - opentelemetry-exporter-prometheus >=0.48b0 + - opentelemetry-sdk >=1.29.0,<2.0 + - pillow >=10.3.0 + - prometheus_client >=0.21.0 + - prometheus-async >=22.2.0 + - psutil >=6.1.1 + - pydantic + - pydantic-settings >=2.7.1 + - pyinstrument >=5.0.1 + - python-json-logger >=2.0.7 + - requests >=2.32.3 + - rich >=13.9.4 + - safetensors >=0.5.2 + - scipy >=1.15.1 + - sentinel >=0.3.0 + - sse-starlette >=2.1.2 + - tokenizers >=0.19.0 + - pytorch >=2.2.2,<=2.5.1 + - transformers >=4.40.1 + - uvicorn >=0.34.0 + - uvloop >=0.21.0 + license: LicenseRef-Modular-Proprietary + size: 123020201 + timestamp: 1738887556307 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025020700-release.conda + noarch: python + sha256: 847e472b44904735bbc68e1fcec6a4fe53883ad6409af4f8155b2b40772c74cc + md5: 14bf0cbc7ef6cf6f3b728780a19b14ab + depends: + - max-core ==25.1.0.dev2025020700 release + - click >=8.0.0 + - numpy >=1.18,<2.0 + - sentencepiece >=0.2.0 + - tqdm >=4.67.1 + constrains: + - aiohttp >=3.11.12 + - fastapi >=0.114.2 + - gguf >=0.14.0 + - hf-transfer >=0.1.9 + - httpx >=0.28.1 + - huggingface_hub >=0.24.0 + - nvitop >=1.4.1 + - opentelemetry-api >=1.29.0 + - opentelemetry-exporter-otlp-proto-http >=1.27.0 + - opentelemetry-exporter-prometheus >=0.48b0 + - opentelemetry-sdk >=1.29.0,<2.0 + - pillow >=10.3.0 + - prometheus_client >=0.21.0 + - prometheus-async >=22.2.0 + - psutil >=6.1.1 + - pydantic + - pydantic-settings >=2.7.1 + - pyinstrument >=5.0.1 + - python-json-logger >=2.0.7 + - requests >=2.32.3 + - rich >=13.9.4 + - safetensors >=0.5.2 + - scipy >=1.15.1 + - sentinel >=0.3.0 + - sse-starlette >=2.1.2 + - tokenizers >=0.19.0 + - pytorch >=2.2.2,<=2.5.1 + - transformers >=4.40.1 + - uvicorn >=0.34.0 + - uvloop >=0.21.0 + license: LicenseRef-Modular-Proprietary + size: 108448310 + timestamp: 1738888179079 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020700-release.conda + noarch: python + sha256: 17daf1d55dd29b1bee00b6febfb9037b863e1e70e115606174c334b5c9159f94 + md5: 3443f44398d7184cb2f05944e90fccca + depends: + - python >=3.9,<3.13 + - click >=8.0.0 + - mypy_extensions >=0.4.3 + - packaging >=22.0 + - pathspec >=0.9.0 + - platformdirs >=2 + - typing_extensions >=v4.12.2 + - python license: MIT - license_family: MIT - size: 14462 - timestamp: 1733301007770 -- conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - sha256: 41db0180680cc67c3fa76544ffd48d6a5679d96f4b71d7498a759e94edc9a2db - md5: a451d576819089b0d672f18768be0f65 + size: 130848 + timestamp: 1738887556306 +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020700-release.conda + noarch: python + sha256: 951321ffc06290d15d11f519c32aae835d8194a692c017ae8175bb98879215c0 + md5: 4a2ebf4276afe6a0b569f4550b5ecedf + depends: + - max-core ==25.1.0.dev2025020700 release + - python >=3.9,<3.13 + - jupyter_client >=8.6.2,<8.7 + - python + license: LicenseRef-Modular-Proprietary + size: 22987 + timestamp: 1738887556307 +- conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda + sha256: 1895f47b7d68581a6facde5cb13ab8c2764c2e53a76bd746f8f98910dc4e08fe + md5: 29097e7ea634a45cc5386b95cac6568f depends: - python >=3.9 license: MIT license_family: MIT - size: 16385 - timestamp: 1733381032766 -- conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-h8bd8927_1.conda - sha256: ec91e86eeb2c6bbf09d51351b851e945185d70661d2ada67204c9a6419d282d3 - md5: 3b3e64af585eadfb52bb90b553db5edf + size: 10854 + timestamp: 1733230986902 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda + sha256: 3fde293232fa3fca98635e1167de6b7c7fda83caf24b9d6c91ec9eefb4f4d586 + md5: 47e340acb35de30501a76c7c799c41d7 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - - libstdcxx >=13 arch: x86_64 platform: linux - license: BSD-3-Clause - license_family: BSD - size: 42739 - timestamp: 1733501881851 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-hd4fb6f5_1.conda - sha256: c4a07ae5def8d55128f25a567a296ef9d7bf99a3bc79d46bd5160c076a5f50af - md5: 2fcc6cd1e5550deb509073fd2e6693e1 + license: X11 AND BSD-3-Clause + size: 891641 + timestamp: 1738195959188 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-ha32ae93_3.conda + sha256: 91cfb655a68b0353b2833521dc919188db3d8a7f4c64bea2c6a7557b24747468 + md5: 182afabe009dc78d8b73100255ee6868 depends: - libgcc >=13 - - libstdcxx >=13 arch: aarch64 platform: linux - license: BSD-3-Clause - license_family: BSD - size: 43032 - timestamp: 1733501964775 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-h98b9ce2_1.conda - sha256: 4242f95b215127a006eb664fe26ed5a82df87e90cbdbc7ce7ff4971f0720997f - md5: ded86dee325290da2967a3fea3800eb5 + license: X11 AND BSD-3-Clause + size: 926034 + timestamp: 1738196018799 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda + sha256: 2827ada40e8d9ca69a153a45f7fd14f32b2ead7045d3bbb5d10964898fe65733 + md5: 068d497125e4bf8a66bf707254fff5ae depends: - __osx >=11.0 - - libcxx >=18 arch: arm64 platform: osx - license: BSD-3-Clause - license_family: BSD - size: 35857 - timestamp: 1733502172664 -- conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - sha256: c2248418c310bdd1719b186796ae50a8a77ce555228b6acd32768e2543a15012 - md5: bf7a226e58dfb8346c70df36065d86c9 - depends: - - python >=3.9 - license: Apache-2.0 - license_family: Apache - size: 15019 - timestamp: 1733244175724 -- conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.2.1-pyhd8ed1ab_0.conda - sha256: 3c6a476e7afb702d841e23c61a0c4cc491929d2e39376d329e67e94c40a236cc - md5: c1ef6bc13dd2caa4b406fb3cb06c2791 - depends: - - anyio >=4.7.0 - - python >=3.9 - - starlette >=0.41.3 - license: BSD-3-Clause - license_family: BSD - size: 15324 - timestamp: 1735126414893 -- conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.45.3-pyha770c72_0.conda - sha256: be48c99e6fb8e12ebee09e6fbb4d78a170b614cdaa19ab791a8f5b6caf09919a - md5: 9b3a68bc7aed7949ef86f950993261f4 - depends: - - anyio >=3.6.2,<5 - - python >=3.9 - - typing_extensions >=3.10.0 - license: BSD-3-Clause - license_family: BSD - size: 57934 - timestamp: 1737824077668 -- conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda - sha256: e0569c9caa68bf476bead1bed3d79650bb080b532c64a4af7d8ca286c08dea4e - md5: d453b98d9c83e71da0741bb0ff4d76bc + license: X11 AND BSD-3-Clause + size: 797030 + timestamp: 1738196177597 +- conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py311h64a7726_0.conda + sha256: 3f4365e11b28e244c95ba8579942b0802761ba7bb31c026f50d1a9ea9c728149 + md5: a502d7aad449a1206efb366d6a12c52d depends: + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 - libgcc-ng >=12 - - libzlib >=1.2.13,<2.0.0a0 + - liblapack >=3.9.0,<4.0a0 + - libstdcxx-ng >=12 + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 + constrains: + - numpy-base <0a0 arch: x86_64 platform: linux - license: TCL + license: BSD-3-Clause license_family: BSD - size: 3318875 - timestamp: 1699202167581 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda - sha256: 7fa27cc512d3a783f38bd16bbbffc008807372499d5b65d089a8e43bde9db267 - md5: f75105e0585851f818e0009dd1dde4dc + size: 8065890 + timestamp: 1707225944355 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py311h69ead2a_0.conda + sha256: 88800a1d9d11c2fccab09d40d36f7001616f5119eaf0ec86186562f33564e651 + md5: 3fd00dd400c8d3f9da12bf33061dd28d depends: + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 - libgcc-ng >=12 - - libzlib >=1.2.13,<2.0.0a0 + - liblapack >=3.9.0,<4.0a0 + - libstdcxx-ng >=12 + - python >=3.11,<3.12.0a0 + - python >=3.11,<3.12.0a0 *_cpython + - python_abi 3.11.* *_cp311 + constrains: + - numpy-base <0a0 arch: aarch64 platform: linux - license: TCL + license: BSD-3-Clause license_family: BSD - size: 3351802 - timestamp: 1695506242997 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda - sha256: 72457ad031b4c048e5891f3f6cb27a53cb479db68a52d965f796910e71a403a8 - md5: b50a57ba89c32b62428b71a875291c9b + size: 7234391 + timestamp: 1707225781489 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py311h7125741_0.conda + sha256: 160a52a01fea44fe9753a2ed22cf13d7b55c8a89ea0b8738546fdbf4795d6514 + md5: 3160b93669a0def35a7a8158ebb33816 depends: - - libzlib >=1.2.13,<2.0.0a0 + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - libcxx >=16 + - liblapack >=3.9.0,<4.0a0 + - python >=3.11,<3.12.0a0 + - python >=3.11,<3.12.0a0 *_cpython + - python_abi 3.11.* *_cp311 + constrains: + - numpy-base <0a0 arch: arm64 platform: osx - license: TCL + license: BSD-3-Clause license_family: BSD - size: 3145523 - timestamp: 1699202432999 -- conda: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.21.0-py311h182c674_0.conda - sha256: 231ecde88bb291437a8060e4eaee74d87318ee635b4ceac5d74fc82343f137d0 - md5: 7e9304388022ef7f7f21b94953a5181b + size: 6652352 + timestamp: 1707226297967 +- conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.0-h7b32b05_1.conda + sha256: f62f6bca4a33ca5109b6d571b052a394d836956d21b25b7ffd03376abf7a481f + md5: 4ce6875f75469b2757a65e10a5d05e31 depends: - __glibc >=2.17,<3.0.a0 - - huggingface_hub >=0.16.4,<1.0 + - ca-certificates - libgcc >=13 - - libstdcxx >=13 - - openssl >=3.4.0,<4.0a0 - - python >=3.11,<3.12.0a0 - - python_abi 3.11.* *_cp311 - constrains: - - __glibc >=2.17 arch: x86_64 platform: linux license: Apache-2.0 - license_family: APACHE - size: 2264312 - timestamp: 1732734291587 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.21.0-py311h5e37e04_0.conda - sha256: 02fad918a39c9e10feedac2937e3bee619fa49707734ae478e0342a85784fb98 - md5: 833844038ba171a27678bf201c3f4c74 + license_family: Apache + size: 2937158 + timestamp: 1736086387286 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.0-hd08dc88_1.conda + sha256: 60d34454b861501d7355f25a7b39fdb5de8d56fca49b5bcbe8b8142b7d82dce4 + md5: e21c4767e783a58c373fdb99de6211bf depends: - - huggingface_hub >=0.16.4,<1.0 + - ca-certificates - libgcc >=13 - - libstdcxx >=13 - - openssl >=3.4.0,<4.0a0 - - python >=3.11,<3.12.0a0 - - python >=3.11,<3.12.0a0 *_cpython - - python_abi 3.11.* *_cp311 - constrains: - - __glibc >=2.17 arch: aarch64 platform: linux license: Apache-2.0 - license_family: APACHE - size: 2329972 - timestamp: 1732734458949 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.21.0-py311h82b0fb8_0.conda - sha256: 8f2a22323b67a75d57192d37bb031fb44a51f013d3232f18a0df3c453ea68ab9 - md5: d1543e49d59c7537c7c97f6d70544b00 + license_family: Apache + size: 3469279 + timestamp: 1736088141230 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.0-h81ee809_1.conda + sha256: 97772762abc70b3a537683ca9fc3ff3d6099eb64e4aba3b9c99e6fce48422d21 + md5: 22f971393637480bda8c679f374d8861 depends: - __osx >=11.0 - - huggingface_hub >=0.16.4,<1.0 - - libcxx >=18 - - python >=3.11,<3.12.0a0 - - python >=3.11,<3.12.0a0 *_cpython - - python_abi 3.11.* *_cp311 - constrains: - - __osx >=11.0 + - ca-certificates arch: arm64 platform: osx license: Apache-2.0 + license_family: Apache + size: 2936415 + timestamp: 1736086108693 +- conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + sha256: da157b19bcd398b9804c5c52fc000fcb8ab0525bdb9c70f95beaa0bb42f85af1 + md5: 3bfed7e6228ebf2f7b9eaa47f1b4e2aa + depends: + - python >=3.8 + license: Apache-2.0 license_family: APACHE - size: 1935264 - timestamp: 1732734431057 -- conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py311h9ecbd09_0.conda - sha256: afa3489113154b5cb0724b0bf120b62df91f426dabfe5d02f2ba09e90d346b28 - md5: df3aee9c3e44489257a840b8354e77b9 + size: 60164 + timestamp: 1733203368787 +- conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + sha256: 9f64009cdf5b8e529995f18e03665b03f5d07c0b17445b8badef45bde76249ee + md5: 617f15191456cc6a13db418a275435e5 + depends: + - python >=3.9 + license: MPL-2.0 + license_family: MOZILLA + size: 41075 + timestamp: 1733233471940 +- conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + sha256: bb50f6499e8bc1d1a26f17716c97984671121608dc0c3ecd34858112bce59a27 + md5: 577852c7e53901ddccc7e6a9959ddebe + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 20448 + timestamp: 1733232756001 +- conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.11.11-h9e4cc4f_1_cpython.conda + build_number: 1 + sha256: b29ce0836fce55bdff8d5c5b71c4921a23f87d3b950aea89a9e75784120b06b0 + md5: 8387070aa413ce9a8cc35a509fae938b depends: - __glibc >=2.17,<3.0.a0 + - bzip2 >=1.0.8,<2.0a0 + - ld_impl_linux-64 >=2.36.1 + - libexpat >=2.6.4,<3.0a0 + - libffi >=3.4,<4.0a0 - libgcc >=13 - - python >=3.11,<3.12.0a0 + - liblzma >=5.6.3,<6.0a0 + - libnsl >=2.0.1,<2.1.0a0 + - libsqlite >=3.47.0,<4.0a0 + - libuuid >=2.38.1,<3.0a0 + - libxcrypt >=4.4.36 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.4.0,<4.0a0 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + constrains: - python_abi 3.11.* *_cp311 arch: x86_64 platform: linux - license: Apache-2.0 - license_family: Apache - size: 855653 - timestamp: 1732616048886 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py311h5487e9b_0.conda - sha256: 0619169eb95f8d7285dd267be3559d3f71af071954792cdd9591a90602992cee - md5: fe331d12b7fccca2348a114c4742a0e0 + license: Python-2.0 + size: 30624804 + timestamp: 1733409665928 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.11.11-h1683364_1_cpython.conda + build_number: 1 + sha256: b39a2253510b26213093cb29e27722cb33782aec213c020dfd17cd74d58f68e7 + md5: 7e8786cbe7b83e7011e681a4780c9b7f depends: + - bzip2 >=1.0.8,<2.0a0 + - ld_impl_linux-aarch64 >=2.36.1 + - libexpat >=2.6.4,<3.0a0 + - libffi >=3.4,<4.0a0 - libgcc >=13 - - python >=3.11,<3.12.0a0 + - liblzma >=5.6.3,<6.0a0 + - libnsl >=2.0.1,<2.1.0a0 + - libsqlite >=3.47.0,<4.0a0 + - libuuid >=2.38.1,<3.0a0 + - libxcrypt >=4.4.36 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.4.0,<4.0a0 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + constrains: - python_abi 3.11.* *_cp311 arch: aarch64 platform: linux - license: Apache-2.0 - license_family: Apache - size: 859892 - timestamp: 1732616872562 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py311h917b07b_0.conda - sha256: 80b79a7d4ed8e16019b8c634cca66935d18fc98be358c76a6ead8c611306ee14 - md5: 183b74c576dc7f920dae168997dbd1dd + license: Python-2.0 + size: 15234582 + timestamp: 1733407838276 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.11.11-hc22306f_1_cpython.conda + build_number: 1 + sha256: 94e198f6a5affa1431401fca7e3b27fda68c59f5ee726083288bff1f6bed8c7f + md5: 8d81dcd0be5bdcdd98e0f2482bf63784 depends: - __osx >=11.0 - - python >=3.11,<3.12.0a0 - - python >=3.11,<3.12.0a0 *_cpython + - bzip2 >=1.0.8,<2.0a0 + - libexpat >=2.6.4,<3.0a0 + - libffi >=3.4,<4.0a0 + - liblzma >=5.6.3,<6.0a0 + - libsqlite >=3.47.0,<4.0a0 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.4.0,<4.0a0 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + constrains: - python_abi 3.11.* *_cp311 arch: arm64 platform: osx - license: Apache-2.0 - license_family: Apache - size: 858954 - timestamp: 1732616142626 -- conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda - sha256: 11e2c85468ae9902d24a27137b6b39b4a78099806e551d390e394a8c34b48e40 - md5: 9efbfdc37242619130ea42b1cc4ed861 - depends: - - colorama - - python >=3.9 - license: MPL-2.0 or MIT - size: 89498 - timestamp: 1735661472632 -- conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - sha256: f39a5620c6e8e9e98357507262a7869de2ae8cc07da8b7f84e517c9fd6c2b959 - md5: 019a7385be9af33791c989871317e1ed + license: Python-2.0 + size: 14647146 + timestamp: 1733409012105 +- conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + sha256: a50052536f1ef8516ed11a844f9413661829aa083304dc624c5925298d078d79 + md5: 5ba79d7c71f03c678c8ead841f347d6e depends: - python >=3.9 - license: BSD-3-Clause - license_family: BSD - size: 110051 - timestamp: 1733367480074 -- conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.48.2-pyhd8ed1ab_0.conda - sha256: 67b19c3d6befcc538df3e6d8dc7c4a2b6c7e35b7c1666da790cea4166f1b768a - md5: 717807c559e9a30fea4850ab8881adcb - depends: - - datasets !=2.5.0 - - filelock - - huggingface_hub >=0.23.0,<1.0 - - numpy >=1.17 - - packaging >=20.0 - - python >=3.9 - - pyyaml >=5.1 - - regex !=2019.12.17 - - requests - - safetensors >=0.4.1 - - tokenizers >=0.21,<0.22 - - tqdm >=4.27 + - six >=1.5 license: Apache-2.0 license_family: APACHE - size: 3416794 - timestamp: 1738278628376 -- conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda - sha256: ef695490e895c2ad552c77ec497b899b09fd4ad4ab07edcf5649f5994cf92a35 - md5: 170a0398946d8f5b454e592672b6fc20 - depends: - - python >=3.9 - - typer-slim-standard 0.15.1 hd8ed1ab_0 - license: MIT - license_family: MIT - size: 56175 - timestamp: 1733408582623 -- conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda - sha256: d4965516f35e0805199de6596c4ac76c4ad3d6b012be35e532102f9e53ecb860 - md5: 0218b16f5a1dd569e575a7a6415489db - depends: - - click >=8.0.0 - - python >=3.9 - - typing_extensions >=3.7.4.3 + size: 222505 + timestamp: 1733215763718 +- conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.11-5_cp311.conda + build_number: 5 + sha256: 2660b8059b3ee854bc5d3c6b1fce946e5bd2fe8fbca7827de2c5885ead6209de + md5: 139a8d40c8a2f430df31048949e450de constrains: - - rich >=10.11.0 - - typer >=0.15.1,<0.15.2.0a0 - - shellingham >=1.3.0 - license: MIT - license_family: MIT - size: 43592 - timestamp: 1733408569554 -- conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda - sha256: f31c56fe98315da8b9ce848256c17e0b9f87896b41a6ccf0c9cc74644dcef20f - md5: 4e603c43bfdfc7b533be087c3e070cc9 - depends: - - rich - - shellingham - - typer-slim 0.15.1 pyhd8ed1ab_0 - license: MIT - license_family: MIT - size: 49531 - timestamp: 1733408570063 -- conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda - noarch: python - sha256: c8e9c1c467b5f960b627d7adc1c65fece8e929a3de89967e91ef0f726422fd32 - md5: b6a408c64b78ec7b779a3e5c7a902433 - depends: - - typing_extensions 4.12.2 pyha770c72_1 - license: PSF-2.0 - license_family: PSF - size: 10075 - timestamp: 1733188758872 -- conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - sha256: 337be7af5af8b2817f115b3b68870208b30c31d3439bec07bfb2d8f4823e3568 - md5: d17f13df8b65464ca316cbc000a3cb64 - depends: - - python >=3.9 - license: PSF-2.0 - license_family: PSF - size: 39637 - timestamp: 1733188758212 -- conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda - sha256: c4b1ae8a2931fe9b274c44af29c5475a85b37693999f8c792dad0f8c6734b1de - md5: dbcace4706afdfb7eb891f7b37d07c04 - license: LicenseRef-Public-Domain - size: 122921 - timestamp: 1737119101255 -- conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda - sha256: 114919ffa80c328127dab9c8e7a38f9d563c617691fb81fccb11c1e86763727e - md5: 32674f8dbfb7b26410ed580dd3c10a29 - depends: - - brotli-python >=1.0.9 - - h2 >=4,<5 - - pysocks >=1.5.6,<2.0,!=1.5.7 - - python >=3.9 - - zstandard >=0.18.0 - license: MIT - license_family: MIT - size: 100102 - timestamp: 1734859520452 -- conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.34.0-pyh31011fe_0.conda - sha256: 55c160b0cf9274e2b98bc0f7fcce548bffa8d788bc86aa02801877457040f6fa - md5: 5d448feee86e4740498ec8f8eb40e052 - depends: - - __unix - - click >=7.0 - - h11 >=0.8 - - python >=3.9 - - typing_extensions >=4.0 + - python 3.11.* *_cpython + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD - size: 48643 - timestamp: 1734293057914 -- conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.34.0-h31011fe_0.conda - sha256: 87e1531e175e75122f9f37608eb953af4c977465ab0ae11283cc01fef954e4ec - md5: 32a94143a7f65d76d2d5da37dcb4ed79 - depends: - - __unix - - httptools >=0.6.3 - - python-dotenv >=0.13 - - pyyaml >=5.1 - - uvicorn 0.34.0 pyh31011fe_0 - - uvloop >=0.14.0,!=0.15.0,!=0.15.1 - - watchfiles >=0.13 - - websockets >=10.4 + size: 6211 + timestamp: 1723823324668 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.11-5_cp311.conda + build_number: 5 + sha256: 76974c2732919ace87b5f3a634eac93fed6900d557fcae0575787ec0a33c370e + md5: c2078141f21872cc34d9305123ba08f2 + constrains: + - python 3.11.* *_cpython + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 6300 + timestamp: 1723823316891 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.11-5_cp311.conda + build_number: 5 + sha256: adc05729b7e0aca7b436e60a86f10822a92185dfcb48d66d6444e3629d3a1f6a + md5: 3b855e3734344134cb56c410f729c340 + constrains: + - python 3.11.* *_cpython + arch: arm64 + platform: osx license: BSD-3-Clause license_family: BSD - size: 7203 - timestamp: 1734293058849 -- conda: https://conda.anaconda.org/conda-forge/linux-64/uvloop-0.21.0-py311h9ecbd09_1.conda - sha256: 9421eeb1e15b99985bb15dec9cf0f337d332106cea584a147449c91c389a4418 - md5: 66890e34ed6a9bd84f1c189043a928f8 + size: 6308 + timestamp: 1723823096865 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.1-py311h7deb3e3_0.conda + sha256: bd6309ef4629744aaaccd9b33d6389dfe879e9864386137e6e4ecc7e1b9ed0f3 + md5: 52457fbaa0aef8136d5dd7bb8a36db9e depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - - libuv >=1.49.2,<2.0a0 + - libsodium >=1.0.20,<1.0.21.0a0 + - libstdcxx >=13 - python >=3.11,<3.12.0a0 - python_abi 3.11.* *_cp311 + - zeromq >=4.3.5,<4.4.0a0 arch: x86_64 platform: linux - license: MIT OR Apache-2.0 - size: 677289 - timestamp: 1730214493601 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/uvloop-0.21.0-py311ha879c10_1.conda - sha256: 23e592499434da8a721164ab163765152e6f5f94b1a4cea5447803a0cdfd00fb - md5: 744b9c908ae05f4712bf4ea9d98e45c5 + license: BSD-3-Clause + license_family: BSD + size: 392547 + timestamp: 1738271109731 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyzmq-26.2.1-py311h826da9f_0.conda + sha256: 09783a354a64324ed363a3c9de0f98d088f74f009d1a6fdd263c3758c4924992 + md5: 919dc1bfa979c20c6358f06e4ee8529f depends: - libgcc >=13 - - libuv >=1.49.2,<2.0a0 + - libsodium >=1.0.20,<1.0.21.0a0 + - libstdcxx >=13 - python >=3.11,<3.12.0a0 - - python >=3.11,<3.12.0a0 *_cpython - python_abi 3.11.* *_cp311 + - zeromq >=4.3.5,<4.4.0a0 arch: aarch64 platform: linux - license: MIT OR Apache-2.0 - size: 643444 - timestamp: 1730214665299 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/uvloop-0.21.0-py311hae2e1ce_1.conda - sha256: f42e2ca33beedef252d234d3aac7642432bf8545a6d37c11e58a69f6aee36898 - md5: bc9ca85e86e305b58432c4791b732ae6 + license: BSD-3-Clause + license_family: BSD + size: 386832 + timestamp: 1738273148939 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.1-py311h01f2145_0.conda + sha256: 29255e5ca9f0b50d551fce4d5b7745fa11b4e672418a6d88a4c3f1a974dd4e44 + md5: 4c5daee5a983fb515460a2714b612126 depends: - __osx >=11.0 - - libuv >=1.49.2,<2.0a0 + - libcxx >=18 + - libsodium >=1.0.20,<1.0.21.0a0 - python >=3.11,<3.12.0a0 - python >=3.11,<3.12.0a0 *_cpython - python_abi 3.11.* *_cp311 + - zeromq >=4.3.5,<4.4.0a0 arch: arm64 platform: osx - license: MIT OR Apache-2.0 - size: 544025 - timestamp: 1730214665776 -- conda: https://conda.anaconda.org/conda-forge/linux-64/watchfiles-1.0.4-py311h9e33e62_0.conda - sha256: 30d0b7c7173c979b0770fac8e7a3206b6d6a7cfd2c0da671af3d98d1399bff7c - md5: dbad881039736bed1cc0956f9fd20f8c + license: BSD-3-Clause + license_family: BSD + size: 370170 + timestamp: 1738271259321 +- conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda + sha256: 5435cf39d039387fbdc977b0a762357ea909a7694d9528ab40f005e9208744d7 + md5: 47d31b792659ce70f470b5c82fdfb7a4 depends: - - __glibc >=2.17,<3.0.a0 - - anyio >=3.0.0 - - libgcc >=13 - - python >=3.11,<3.12.0a0 - - python_abi 3.11.* *_cp311 - constrains: - - __glibc >=2.17 + - libgcc-ng >=12 + - ncurses >=6.3,<7.0a0 arch: x86_64 platform: linux - license: MIT - license_family: MIT - size: 409870 - timestamp: 1736550564534 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/watchfiles-1.0.4-py311h0ca61a2_0.conda - sha256: 4cd394860f79aff4b0ad083a852a6104b3e80edd83d9072f333dd86f5165a998 - md5: 289764aac62dd48cb5a6a20e3252508a + license: GPL-3.0-only + license_family: GPL + size: 281456 + timestamp: 1679532220005 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8fc344f_1.conda + sha256: 4c99f7417419734e3797d45bc355e61c26520e111893b0d7087a01a7fbfbe3dd + md5: 105eb1e16bf83bfb2eb380a48032b655 depends: - - anyio >=3.0.0 - - libgcc >=13 - - python >=3.11,<3.12.0a0 - - python >=3.11,<3.12.0a0 *_cpython - - python_abi 3.11.* *_cp311 - constrains: - - __glibc >=2.17 + - libgcc-ng >=12 + - ncurses >=6.3,<7.0a0 arch: aarch64 platform: linux - license: MIT - license_family: MIT - size: 404840 - timestamp: 1736550636184 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/watchfiles-1.0.4-py311h3ff9189_0.conda - sha256: cbf65f73e95b19623ded1d4fd1f7feb6b2b88ea7931299f1d41ed3446aa1e636 - md5: 0dc7429ff1ce8cdc986fb56295a0c122 - depends: - - __osx >=11.0 - - anyio >=3.0.0 - - python >=3.11,<3.12.0a0 - - python >=3.11,<3.12.0a0 *_cpython - - python_abi 3.11.* *_cp311 - constrains: - - __osx >=11.0 + license: GPL-3.0-only + license_family: GPL + size: 294092 + timestamp: 1679532238805 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h92ec313_1.conda + sha256: a1dfa679ac3f6007362386576a704ad2d0d7a02e98f5d0b115f207a2da63e884 + md5: 8cbb776a2f641b943d413b3e19df71f4 + depends: + - ncurses >=6.3,<7.0a0 arch: arm64 platform: osx - license: MIT - license_family: MIT - size: 365948 - timestamp: 1736550860802 -- conda: https://conda.anaconda.org/conda-forge/linux-64/websockets-14.2-py311h9ecbd09_0.conda - sha256: ab387485cb6e68b519c35e1d03751321dd90db21b0ab184eef064bb7b37102a5 - md5: 39b3a87c8475ad9e3f05f1f2d1a2f115 + license: GPL-3.0-only + license_family: GPL + size: 250351 + timestamp: 1679532511311 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-0.2.0-h074ec65_10.conda + sha256: 1c7b8a24296bf1309f866d363a1152a796d495f97a87d0c6f35b845e6c153250 + md5: 4b2fa94e6d42231ffee6707dfe578915 depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - python >=3.11,<3.12.0a0 + - libsentencepiece 0.2.0 h8e10757_10 - python_abi 3.11.* *_cp311 + - sentencepiece-python 0.2.0 py311hf886319_10 + - sentencepiece-spm 0.2.0 h8e10757_10 arch: x86_64 platform: linux - license: BSD-3-Clause - license_family: BSD - size: 242047 - timestamp: 1737358342146 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/websockets-14.2-py311ha879c10_0.conda - sha256: 74800c9718c6a63746a4b8cf7c701a41a530ebd43a807ce182533c8eea108aa0 - md5: 503931f5ee692f0962e7a2862d33109a + license: Apache-2.0 + license_family: Apache + size: 19473 + timestamp: 1735628355599 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-0.2.0-h7028846_10.conda + sha256: a8b4437185e91d858566be18830fe93148a6335005349db08f60859c4ac413ad + md5: 64c3bcdf9faa00799dd2ed3f16044c26 depends: - - libgcc >=13 - - python >=3.11,<3.12.0a0 - - python >=3.11,<3.12.0a0 *_cpython + - libsentencepiece 0.2.0 h6164ad9_10 - python_abi 3.11.* *_cp311 + - sentencepiece-python 0.2.0 py311h5c441b1_10 + - sentencepiece-spm 0.2.0 h6164ad9_10 arch: aarch64 platform: linux - license: BSD-3-Clause - license_family: BSD - size: 243511 - timestamp: 1737358392466 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/websockets-14.2-py311h917b07b_0.conda - sha256: e1a37eb1359ba7df117246251bbfd816ef77e8c756ef9e104ff741206d93bbc3 - md5: c240594ffe865b94aa05c2a8c3fe02d0 + license: Apache-2.0 + license_family: Apache + size: 19719 + timestamp: 1735628704628 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-0.2.0-hf736513_10.conda + sha256: 16826ce65b4a391990fa85dd2af7d0cd98549be9e993181f18e6d633185a0bd9 + md5: 4b55d377c0ba17934ab1515b608b8276 depends: - - __osx >=11.0 - - python >=3.11,<3.12.0a0 - - python >=3.11,<3.12.0a0 *_cpython + - libsentencepiece 0.2.0 he13a0af_10 - python_abi 3.11.* *_cp311 + - sentencepiece-python 0.2.0 py311hb1a73f2_10 + - sentencepiece-spm 0.2.0 he13a0af_10 arch: arm64 platform: osx - license: BSD-3-Clause - license_family: BSD - size: 244425 - timestamp: 1737358465982 -- conda: https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.17.2-py311h9ecbd09_0.conda - sha256: e383de6512e65b5a227e7b0e1a34ffc441484044096a23ca4d3b6eb53a64d261 - md5: c4bb961f5a2020837fe3f7f30fadc2e1 + license: Apache-2.0 + license_family: Apache + size: 19753 + timestamp: 1735628583443 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-python-0.2.0-py311hf886319_10.conda + sha256: 6d92d183dbe714d2b2b042542b36e1a875f307c83bde4324f24a6a1ea62400b6 + md5: 90c0c6f0d4d58d2383373e3ab7bc4d19 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 h8e10757_10 + - libstdcxx >=13 - python >=3.11,<3.12.0a0 - python_abi 3.11.* *_cp311 arch: x86_64 platform: linux - license: BSD-2-Clause - license_family: BSD - size: 64880 - timestamp: 1736869605707 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/wrapt-1.17.2-py311ha879c10_0.conda - sha256: ef2c09b8c62a195120dcf6d2dc32c349fe957167dca98765babb9a3be6f87d92 - md5: 4d4f5aa0b7ed545efca6597c6ae5259d + license: Apache-2.0 + license_family: Apache + size: 2350779 + timestamp: 1735627954130 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-python-0.2.0-py311h5c441b1_10.conda + sha256: 27f130942401ad16fc41417747cdc31cb2e579d8586335ddae7ee03b156ab3d8 + md5: df5020e8701d1a3eccfb5740c1e7af23 depends: - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 h6164ad9_10 + - libstdcxx >=13 - python >=3.11,<3.12.0a0 - python >=3.11,<3.12.0a0 *_cpython - python_abi 3.11.* *_cp311 arch: aarch64 platform: linux - license: BSD-2-Clause - license_family: BSD - size: 65830 - timestamp: 1736869702140 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/wrapt-1.17.2-py311h917b07b_0.conda - sha256: 121396c6f75ffcbf4d2296ad0ad9190a62aff0ae22ed4080a39827a6275cdf1b - md5: 40fa235e40013f4e5400f1d01add07dc + license: Apache-2.0 + license_family: Apache + size: 2516036 + timestamp: 1735628059861 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-python-0.2.0-py311hb1a73f2_10.conda + sha256: 877e5831eb93d1b18c2218284806d8e6fb623a484c368bb0de785ca8586d97bf + md5: 2c13a5b72d87bad8a5af1f4b100e6a36 depends: - __osx >=11.0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 he13a0af_10 - python >=3.11,<3.12.0a0 - python >=3.11,<3.12.0a0 *_cpython - python_abi 3.11.* *_cp311 arch: arm64 platform: osx - license: BSD-2-Clause - license_family: BSD - size: 62401 - timestamp: 1736869710495 -- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-hb9d3cd8_0.conda - sha256: ed10c9283974d311855ae08a16dfd7e56241fac632aec3b92e3cfe73cff31038 - md5: f6ebe2cb3f82ba6c057dde5d9debe4f7 + license: Apache-2.0 + license_family: Apache + size: 2498193 + timestamp: 1735628323682 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-spm-0.2.0-h8e10757_10.conda + sha256: 6b55e1121545357d63c3aa0766931720e8aafc52d88641ba7631c8cbaa68c52f + md5: e977b7be5ac26c55825e121e00b90493 depends: - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 h8e10757_10 + - libstdcxx >=13 arch: x86_64 platform: linux - license: MIT - license_family: MIT - size: 14780 - timestamp: 1734229004433 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxau-1.0.12-h86ecc28_0.conda - sha256: 7829a0019b99ba462aece7592d2d7f42e12d12ccd3b9614e529de6ddba453685 - md5: d5397424399a66d33c80b1f2345a36a6 + license: Apache-2.0 + license_family: Apache + size: 89076 + timestamp: 1735628334078 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-spm-0.2.0-h6164ad9_10.conda + sha256: b98fc1028a8e8fbf309af383f9c837290a14e076e6c5533dc251694ea33ffc6e + md5: a4b75936c01dca3f089f02752b7ee325 depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 h6164ad9_10 + - libstdcxx >=13 arch: aarch64 platform: linux - license: MIT - license_family: MIT - size: 15873 - timestamp: 1734230458294 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxau-1.0.12-h5505292_0.conda - sha256: f33e6f013fc36ebc200f09ddead83468544cb5c353a3b50499b07b8c34e28a8d - md5: 50901e0764b7701d8ed7343496f4f301 + license: Apache-2.0 + license_family: Apache + size: 85983 + timestamp: 1735628693813 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-spm-0.2.0-he13a0af_10.conda + sha256: b760aeee02e2afbfcce3f559e8a227aa4c94139157b1702fdfb41a057dad0e52 + md5: 9b7300f23cd330da8664cd072c162e5f depends: - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 he13a0af_10 arch: arm64 platform: osx - license: MIT - license_family: MIT - size: 13593 - timestamp: 1734229104321 -- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb9d3cd8_0.conda - sha256: 6b250f3e59db07c2514057944a3ea2044d6a8cdde8a47b6497c254520fade1ee - md5: 8035c64cb77ed555e3f150b7b3972480 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - arch: x86_64 - platform: linux - license: MIT - license_family: MIT - size: 19901 - timestamp: 1727794976192 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxdmcp-1.1.5-h57736b2_0.conda - sha256: efcc150da5926cf244f757b8376d96a4db78bc15b8d90ca9f56ac6e75755971f - md5: 25a5a7b797fe6e084e04ffe2db02fc62 - depends: - - libgcc >=13 - arch: aarch64 - platform: linux - license: MIT - license_family: MIT - size: 20615 - timestamp: 1727796660574 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxdmcp-1.1.5-hd74edd7_0.conda - sha256: 9939a166d780700d81023546759102b33fdc2c5f11ef09f5f66c77210fd334c8 - md5: 77c447f48cab5d3a15ac224edb86a968 + license: Apache-2.0 + license_family: Apache + size: 83826 + timestamp: 1735628514667 +- conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + sha256: 41db0180680cc67c3fa76544ffd48d6a5679d96f4b71d7498a759e94edc9a2db + md5: a451d576819089b0d672f18768be0f65 depends: - - __osx >=11.0 - arch: arm64 - platform: osx + - python >=3.9 license: MIT license_family: MIT - size: 18487 - timestamp: 1727795205022 -- conda: https://conda.anaconda.org/conda-forge/linux-64/xxhash-0.8.2-hd590300_0.conda - sha256: 6fe74a8fd84ab0dc25e4dc3e0c22388dd8accb212897a208b14fe5d4fbb8fc2f - md5: f08fb5c89edfc4aadee1c81d4cfb1fa1 + size: 16385 + timestamp: 1733381032766 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda + sha256: e0569c9caa68bf476bead1bed3d79650bb080b532c64a4af7d8ca286c08dea4e + md5: d453b98d9c83e71da0741bb0ff4d76bc depends: - libgcc-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 arch: x86_64 platform: linux - license: BSD-2-Clause + license: TCL license_family: BSD - size: 97691 - timestamp: 1689951608120 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xxhash-0.8.2-h31becfc_0.conda - sha256: 4c526aed70b579d80e5c20d32130b6bc8bde59b3250d43c2b5269755f4da8a9b - md5: bb9faf6857108a9f62ebb4dab6ef05da + size: 3318875 + timestamp: 1699202167581 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda + sha256: 7fa27cc512d3a783f38bd16bbbffc008807372499d5b65d089a8e43bde9db267 + md5: f75105e0585851f818e0009dd1dde4dc depends: - libgcc-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 arch: aarch64 platform: linux - license: BSD-2-Clause - license_family: BSD - size: 102442 - timestamp: 1689951682147 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/xxhash-0.8.2-hb547adb_0.conda - sha256: a70f59f7221ee72c45b39a6b36a33eb9c717ba01921cce1a3c361a4676979a2e - md5: 144cd3b88706507f332f5eb5fb83a33b - arch: arm64 - platform: osx - license: BSD-2-Clause + license: TCL license_family: BSD - size: 97593 - timestamp: 1689951969732 -- conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 - sha256: a4e34c710eeb26945bdbdaba82d3d74f60a78f54a874ec10d373811a5d217535 - md5: 4cb3ad778ec2d5a7acbdf254eb1c42ae - depends: - - libgcc-ng >=9.4.0 - arch: x86_64 - platform: linux - license: MIT - license_family: MIT - size: 89141 - timestamp: 1641346969816 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yaml-0.2.5-hf897c2e_2.tar.bz2 - sha256: 8bc601d6dbe249eba44b3c456765265cd8f42ef1e778f8df9b0c9c88b8558d7e - md5: b853307650cb226731f653aa623936a4 + size: 3351802 + timestamp: 1695506242997 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda + sha256: 72457ad031b4c048e5891f3f6cb27a53cb479db68a52d965f796910e71a403a8 + md5: b50a57ba89c32b62428b71a875291c9b depends: - - libgcc-ng >=9.4.0 - arch: aarch64 - platform: linux - license: MIT - license_family: MIT - size: 92927 - timestamp: 1641347626613 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 - sha256: 93181a04ba8cfecfdfb162fc958436d868cc37db504c58078eab4c1a3e57fbb7 - md5: 4bb3f014845110883a3c5ee811fd84b4 + - libzlib >=1.2.13,<2.0.0a0 arch: arm64 platform: osx - license: MIT - license_family: MIT - size: 88016 - timestamp: 1641347076660 -- conda: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.18.3-py311h2dc5d0c_1.conda - sha256: 521ab90aac56c63088023bba4b960c25b7975191c6d9a10c7fb23eb892351e84 - md5: adb884966b6f9a43642ee3f67d54e01d + license: TCL + license_family: BSD + size: 3145523 + timestamp: 1699202432999 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py311h9ecbd09_0.conda + sha256: afa3489113154b5cb0724b0bf120b62df91f426dabfe5d02f2ba09e90d346b28 + md5: df3aee9c3e44489257a840b8354e77b9 depends: - __glibc >=2.17,<3.0.a0 - - idna >=2.0 - libgcc >=13 - - multidict >=4.0 - - propcache >=0.2.1 - python >=3.11,<3.12.0a0 - python_abi 3.11.* *_cp311 arch: x86_64 platform: linux license: Apache-2.0 license_family: Apache - size: 153704 - timestamp: 1737576099033 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.18.3-py311h58d527c_1.conda - sha256: 3564ce225c76066be23f1fa06bfb90b40d275a96c0105f375ebdaf3d1f9cfbd6 - md5: d930ce8a57811fffe9484312767b313c + size: 855653 + timestamp: 1732616048886 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py311h5487e9b_0.conda + sha256: 0619169eb95f8d7285dd267be3559d3f71af071954792cdd9591a90602992cee + md5: fe331d12b7fccca2348a114c4742a0e0 depends: - - idna >=2.0 - libgcc >=13 - - multidict >=4.0 - - propcache >=0.2.1 - python >=3.11,<3.12.0a0 - - python >=3.11,<3.12.0a0 *_cpython - python_abi 3.11.* *_cp311 arch: aarch64 platform: linux license: Apache-2.0 license_family: Apache - size: 152607 - timestamp: 1737576002155 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.18.3-py311h4921393_1.conda - sha256: 7afae1570bc6e285181787849bd99cb587c060f6629ca36c3ee5eef125dfe4ec - md5: 9b377ec67d9ec07914db1c70f45be9e7 + size: 859892 + timestamp: 1732616872562 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py311h917b07b_0.conda + sha256: 80b79a7d4ed8e16019b8c634cca66935d18fc98be358c76a6ead8c611306ee14 + md5: 183b74c576dc7f920dae168997dbd1dd depends: - __osx >=11.0 - - idna >=2.0 - - multidict >=4.0 - - propcache >=0.2.1 - python >=3.11,<3.12.0a0 - python >=3.11,<3.12.0a0 *_cpython - python_abi 3.11.* *_cp311 @@ -7324,8 +2090,41 @@ packages: platform: osx license: Apache-2.0 license_family: Apache - size: 145896 - timestamp: 1737576068070 + size: 858954 + timestamp: 1732616142626 +- conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + sha256: 11e2c85468ae9902d24a27137b6b39b4a78099806e551d390e394a8c34b48e40 + md5: 9efbfdc37242619130ea42b1cc4ed861 + depends: + - colorama + - python >=3.9 + license: MPL-2.0 or MIT + size: 89498 + timestamp: 1735661472632 +- conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + sha256: f39a5620c6e8e9e98357507262a7869de2ae8cc07da8b7f84e517c9fd6c2b959 + md5: 019a7385be9af33791c989871317e1ed + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 110051 + timestamp: 1733367480074 +- conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + sha256: 337be7af5af8b2817f115b3b68870208b30c31d3439bec07bfb2d8f4823e3568 + md5: d17f13df8b65464ca316cbc000a3cb64 + depends: + - python >=3.9 + license: PSF-2.0 + license_family: PSF + size: 39637 + timestamp: 1733188758212 +- conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + sha256: c4b1ae8a2931fe9b274c44af29c5475a85b37693999f8c792dad0f8c6734b1de + md5: dbcace4706afdfb7eb891f7b37d07c04 + license: LicenseRef-Public-Domain + size: 122921 + timestamp: 1737119101255 - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda sha256: a4dc72c96848f764bb5a5176aa93dd1e9b9e52804137b99daeebba277b31ea10 md5: 3947a35e916fcc6b9825449affbf4214 @@ -7378,129 +2177,3 @@ packages: license_family: MIT size: 21809 timestamp: 1732827613585 -- conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.1-hb9d3cd8_2.conda - sha256: 5d7c0e5f0005f74112a34a7425179f4eb6e73c92f5d109e6af4ddeca407c92ab - md5: c9f075ab2f33b3bbee9e62d4ad0a6cd8 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libzlib 1.3.1 hb9d3cd8_2 - arch: x86_64 - platform: linux - license: Zlib - license_family: Other - size: 92286 - timestamp: 1727963153079 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zlib-1.3.1-h86ecc28_2.conda - sha256: b4f649aa3ecdae384d5dad7074e198bff120edd3dfb816588e31738fc6d627b1 - md5: bc230abb5d21b63ff4799b0e75204783 - depends: - - libgcc >=13 - - libzlib 1.3.1 h86ecc28_2 - arch: aarch64 - platform: linux - license: Zlib - license_family: Other - size: 95582 - timestamp: 1727963203597 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zlib-1.3.1-h8359307_2.conda - sha256: 58f8860756680a4831c1bf4f294e2354d187f2e999791d53b1941834c4b37430 - md5: e3170d898ca6cb48f1bb567afb92f775 - depends: - - __osx >=11.0 - - libzlib 1.3.1 h8359307_2 - arch: arm64 - platform: osx - license: Zlib - license_family: Other - size: 77606 - timestamp: 1727963209370 -- conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py311hbc35293_1.conda - sha256: a5cf0eef1ffce0d710eb3dffcb07d9d5922d4f7a141abc96f6476b98600f718f - md5: aec590674ba365e50ae83aa2d6e1efae - depends: - - __glibc >=2.17,<3.0.a0 - - cffi >=1.11 - - libgcc >=13 - - python >=3.11,<3.12.0a0 - - python_abi 3.11.* *_cp311 - - zstd >=1.5.6,<1.5.7.0a0 - - zstd >=1.5.6,<1.6.0a0 - arch: x86_64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 417923 - timestamp: 1725305669690 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstandard-0.23.0-py311hd5293d8_1.conda - sha256: 44c4c8e718f7f50c985d9b3de23760fb01987e6307301eef0bcfc26862094690 - md5: 7a022310d8759b7d251717b09242ee13 - depends: - - cffi >=1.11 - - libgcc >=13 - - python >=3.11,<3.12.0a0 - - python >=3.11,<3.12.0a0 *_cpython - - python_abi 3.11.* *_cp311 - - zstd >=1.5.6,<1.5.7.0a0 - - zstd >=1.5.6,<1.6.0a0 - arch: aarch64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 391826 - timestamp: 1725305804278 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py311ha60cc69_1.conda - sha256: d2f2f1a408e2353fc61d2bf064313270be2260ee212fe827dcf3cfd3754f1354 - md5: 29d320d6450b2948740a9be3761b2e9d - depends: - - __osx >=11.0 - - cffi >=1.11 - - python >=3.11,<3.12.0a0 - - python >=3.11,<3.12.0a0 *_cpython - - python_abi 3.11.* *_cp311 - - zstd >=1.5.6,<1.5.7.0a0 - - zstd >=1.5.6,<1.6.0a0 - arch: arm64 - platform: osx - license: BSD-3-Clause - license_family: BSD - size: 332271 - timestamp: 1725305847224 -- conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda - sha256: c558b9cc01d9c1444031bd1ce4b9cff86f9085765f17627a6cd85fc623c8a02b - md5: 4d056880988120e29d75bfff282e0f45 - depends: - - libgcc-ng >=12 - - libstdcxx-ng >=12 - - libzlib >=1.2.13,<2.0.0a0 - arch: x86_64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 554846 - timestamp: 1714722996770 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.6-h02f22dd_0.conda - sha256: 484f9d0722c77685ae379fbff3ccd662af9ead7e59eb39cd6d0c677cdf25ff6c - md5: be8d5f8cf21aed237b8b182ea86b3dd6 - depends: - - libgcc-ng >=12 - - libstdcxx-ng >=12 - - libzlib >=1.2.13,<2.0.0a0 - arch: aarch64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 539937 - timestamp: 1714723130243 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.6-hb46c0d2_0.conda - sha256: 2d4fd1ff7ee79cd954ca8e81abf11d9d49954dd1fef80f27289e2402ae9c2e09 - md5: d96942c06c3e84bfcc5efb038724a7fd - depends: - - __osx >=11.0 - - libzlib >=1.2.13,<2.0.0a0 - arch: arm64 - platform: osx - license: BSD-3-Clause - license_family: BSD - size: 405089 - timestamp: 1714723101397 diff --git a/examples/operators/magic.lock b/examples/operators/magic.lock index 9c18241bfa..e115e1b185 100644 --- a/examples/operators/magic.lock +++ b/examples/operators/magic.lock @@ -8,90 +8,20 @@ environments: linux-64: - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.12-py312h178313f_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.8.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.1.0-pyh71513ae_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.1-h205f482_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.1-h1a47875_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.10.6-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.3.0-h4e1184b_5.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.0-h7959bf6_11.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.2-hefd7a92_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-h173a860_6.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h11f4f37_12.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.9-he1b24dc_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.2-h4e1184b_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-h4e1184b_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.9-he0e7f3f_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.489-h4d475cb_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.10.0-h113e628_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.13.0-h3cf044e_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-common-cpp-12.8.0-h736e048_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-files-datalake-cpp-12.12.0-ha633028_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/backoff-2.2.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py312h2ec8cdc_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.4-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2025.1.31-hbcca054_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.12.14-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py312h06ac9bb_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.18-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda - - 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.8-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.17.0-pyhd8ed1ab_0.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-py312h178313f_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2025.2.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/gflags-2.2.2-h5888daf_1005.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/glog-0.7.1-hbabe93e_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/httptools-0.6.4-py312h66e93f0_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.28.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.16-hb7c19ff_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-19.0.0-h00a82cf_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-19.0.0-hcb10f89_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-19.0.0-hcb10f89_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-19.0.0-h08228c5_8_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-28_h59b9bed_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hb9d3cd8_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hb9d3cd8_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.1.0-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-28_he106b2a_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libcrc32c-1.1.2-h9c3ff4c_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.11.1-h332b0f4_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.23-h4ddbbb0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libevent-2.1.12-hf998b51_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.2-h7f98852_5.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h77fa898_1.conda @@ -99,222 +29,64 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hd5240d6_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h77fa898_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.34.0-h2b5623c_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.34.0-h0121fbd_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.67.1-h25350d4_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-hd590300_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-28_h7ac8fdf_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.28-pthreads_h94d23a6_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-1.18.0-hfcad708_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-headers-1.18.0-ha770c72_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-19.0.0-h081d1f1_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.46-h943b412_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsentencepiece-0.2.0-h8e10757_10.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.48.0-hee588c1_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hf672d98_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-hc0a3c3a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libthrift-0.21.0-h0e7cc3e_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hd9ff511_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.10.0-h4c51ac1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.50.0-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.5.0-h851e524_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.5-h0d44e9d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - - 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-25.1.0.dev2025020605-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025020605-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025020605-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020605-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-25.1.0.dev2025020605-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.modular.com/max-nightly/noarch/max-25.1.0.dev2025020700-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025020700-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025020700-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020700-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020700-release.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-h2d0b736_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/nlohmann_json-3.11.3-he02047a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.3-h5fbd93e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.0-h7b32b05_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.29.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.29.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.29.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-prometheus-1.12.0rc1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.29.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.29.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.50b0-pyh3cfb1c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/orc-2.0.3-h12ee42a_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.3-py312hf9745cd_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-11.1.0-py312h80c1187_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/prometheus-cpp-1.3.0-ha5d0236_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.1-py312h178313f_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/protobuf-5.28.3-py312h2ec8cdc_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-19.0.0-py312h7900ff3_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-19.0.0-py312h01725c0_0_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.6-pyh3cfb1c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.27.2-py312h12e396e_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.7.1-pyh3cfb1c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pyinstrument-5.0.1-py312h66e93f0_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.8-h9e4cc4f_1_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.20-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/python-xxhash-3.5.0-py312h66e93f0_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py312h178313f_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.1-py312hbf22597_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/re2-2024.07.02-h9925aae_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda - - 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.11-h072c03f_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/safetensors-0.5.2-py312h12e396e_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-0.2.0-hc8f76dd_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-python-0.2.0-py312hb6b8a2b_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-spm-0.2.0-h8e10757_10.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-h8bd8927_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.2.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.45.3-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.21.0-py312h8360d73_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.48.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.34.0-pyh31011fe_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.34.0-h31011fe_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/uvloop-0.21.0-py312h66e93f0_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/watchfiles-1.0.4-py312h12e396e_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/websockets-14.2-py312h66e93f0_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.17.2-py312h66e93f0_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xxhash-0.8.2-hd590300_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.18.3-py312h178313f_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.1-hb9d3cd8_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312hef9b889_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda linux-aarch64: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.12-py312hcc812fe_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.8.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.1.0-pyh71513ae_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.1-hb7ec8d5_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.1-h740c5af_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-common-0.10.6-h86ecc28_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-compression-0.3.0-h0f0193d_5.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-event-stream-0.5.0-hcbd8f92_11.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.2-h3df160d_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-hfd5ba81_6.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h5f50e26_12.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.9-h05b070f_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.2-h0f0193d_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h0f0193d_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.9-hab3ce66_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.489-h88461e4_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-core-cpp-1.14.0-h1887c18_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-identity-cpp-1.10.0-h47b0b28_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-blobs-cpp-12.13.0-h185ecfd_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-common-cpp-12.8.0-h1b94036_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-files-datalake-cpp-12.12.0-h37d6d07_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/backoff-2.2.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/brotli-python-1.1.0-py312h6f74592_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h68df207_7.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/c-ares-1.34.4-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2025.1.31-hcefe29a_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.12.14-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cffi-1.17.1-py312hac81daf_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.18-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda - - 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.8-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.17.0-pyhd8ed1ab_0.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-py312hcc812fe_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2025.2.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gflags-2.2.2-h5ad3122_1005.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/glog-0.7.1-h468a4a4_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/httptools-0.6.4-py312hb2c0f52_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.28.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/keyutils-1.6.1-h4e544f5_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/krb5-1.21.3-h50a48e9_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lcms2-2.16-h922389a_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.0.0-h4de3ea5_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h18dbdb1_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-19.0.0-h03ebaaf_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-19.0.0-h3b568fd_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-19.0.0-h3b568fd_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-19.0.0-h1e9d426_8_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-28_h1a9f1db_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlicommon-1.1.0-h86ecc28_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlidec-1.1.0-h86ecc28_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlienc-1.1.0-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-28_hab92f65_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcrc32c-1.1.2-h01db608_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcurl-8.11.1-h6702fde_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libdeflate-1.23-h5e3c512_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20250104-pl5321h976ea20_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libev-4.33-h31becfc_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libevent-2.1.12-h4ba1bb4_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.6.4-h5ad3122_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.4.2-h3557bc0_5.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-14.2.0-he277a41_1.conda @@ -322,348 +94,104 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-2.34.0-hccf9d24_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-storage-2.34.0-hb9b2b65_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgrpc-1.67.1-hf7ccdd3_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libiconv-1.17-h31becfc_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libjpeg-turbo-3.0.0-h31becfc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-28_h411afd4_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.4-h86ecc28_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnghttp2-1.64.0-hc8609a4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.28-pthreads_h9d3fd7e_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopentelemetry-cpp-1.18.0-h60b47f9_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopentelemetry-cpp-headers-1.18.0-h8af1aa0_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-19.0.0-hfc78867_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.46-hec79eb8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.3-h44a3b7b_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsentencepiece-0.2.0-h6164ad9_10.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.20-h68df207_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.48.0-h5eb1b54_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libssh2-1.11.1-ha41c0db_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libthrift-0.21.0-h154c74f_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.0-h88f7998_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.10.0-ha346350_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuv-1.50.0-h86ecc28_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libwebp-base-1.5.0-h0886dbf_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcb-1.17.0-h262b8f6_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.5-h2e0c361_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - - 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-25.1.0.dev2025020605-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025020605-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025020605-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020605-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-25.1.0.dev2025020605-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.modular.com/max-nightly/noarch/max-25.1.0.dev2025020700-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025020700-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025020700-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020700-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020700-release.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-ha32ae93_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/nlohmann_json-3.11.3-h0a1ffab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openjpeg-2.5.3-h3f56577_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.0-hd08dc88_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.29.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.29.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.29.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-prometheus-1.12.0rc1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.29.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.29.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.50b0-pyh3cfb1c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/orc-2.0.3-hdd485aa_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pandas-2.2.3-py312ha2895bd_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pillow-11.1.0-py312h719f0cf_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/prometheus-cpp-1.3.0-h7938499_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.2.1-py312hcc812fe_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/protobuf-5.28.3-py312h6f74592_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pthread-stubs-0.4-h86ecc28_1002.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-19.0.0-py312h8025657_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-19.0.0-py312h66f7834_0_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.6-pyh3cfb1c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pydantic-core-2.27.2-py312h8cbf658_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.7.1-pyh3cfb1c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyinstrument-5.0.1-py312hb2c0f52_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.8-h1683364_1_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.20-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-xxhash-3.5.0-py312h52516f5_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.12-5_cp312.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyyaml-6.0.2-py312hcc812fe_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyzmq-26.2.1-py312h2427ae1_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/re2-2024.07.02-haa97905_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8fc344f_1.conda - - 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.11-h3caee7a_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/safetensors-0.5.2-py312h8cbf658_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-0.2.0-h6c1b121_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-python-0.2.0-py312h197ff68_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-spm-0.2.0-h6164ad9_10.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-hd4fb6f5_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.2.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.45.3-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.21.0-py312ha0d6ea1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py312h52516f5_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.48.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.34.0-pyh31011fe_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.34.0-h31011fe_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/uvloop-0.21.0-py312hb2c0f52_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/watchfiles-1.0.4-py312h8cbf658_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/websockets-14.2-py312hb2c0f52_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/wrapt-1.17.2-py312hb2c0f52_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxau-1.0.12-h86ecc28_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxdmcp-1.1.5-h57736b2_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xxhash-0.8.2-h31becfc_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yaml-0.2.5-hf897c2e_2.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.18.3-py312hcc812fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zeromq-4.3.5-h5efb499_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zlib-1.3.1-h86ecc28_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstandard-0.23.0-py312hb698573_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.6-h02f22dd_0.conda osx-arm64: - - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.12-py312h998013c_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.8.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.1.0-pyh71513ae_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.1-hfc2798a_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.1-hc8a0bd2_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.10.6-h5505292_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-compression-0.3.0-hc8a0bd2_5.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.0-h54f970a_11.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.2-h96aa502_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-haba67d1_6.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h24f418c_12.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.9-hf37e03c_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.2-hc8a0bd2_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-hc8a0bd2_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.9-ha81f72f_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.489-h0e5014b_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.14.0-hd50102c_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.10.0-hc602bab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-blobs-cpp-12.13.0-h7585a09_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-common-cpp-12.8.0-h9ca1f76_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-files-datalake-cpp-12.12.0-hcdd55da_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/backoff-2.2.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py312hde4cb15_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.4-h5505292_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2025.1.31-hf0a4a13_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.12.14-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.1-py312h0fad829_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.18-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda - - 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.8-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.17.0-pyhd8ed1ab_0.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-py312h998013c_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2025.2.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gflags-2.2.2-hf9b8971_1005.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/glog-0.7.1-heb240a5_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/httptools-0.6.4-py312hea69d52_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.28.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.16-ha0e7c42_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_h07bc746_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-19.0.0-h819e3af_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-19.0.0-hf07054f_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-19.0.0-hf07054f_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-19.0.0-h4239455_8_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-28_h10e41b3_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.1.0-hd74edd7_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.1.0-hd74edd7_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlienc-1.1.0-hd74edd7_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-28_hb3479ef_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcrc32c-1.1.2-hbdafb3b_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.11.1-h73640d1_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.23-hec38601_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libev-4.33-h93a5062_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libevent-2.1.12-h2757513_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.4-h286801f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-2.34.0-hdbe95d5_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-storage-2.34.0-h7081f7f_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgrpc-1.67.1-h0a426d6_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.17-h0d3ecfb_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.0.0-hb547adb_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-28_hc9a63f6_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.4-h39f12f2_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.64.0-h6d7220d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.28-openmp_hf332438_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopentelemetry-cpp-1.18.0-h0c05b2d_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopentelemetry-cpp-headers-1.18.0-hce30654_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-19.0.0-h636d7b7_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.46-h3783ad8_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.3-h3bd63a1_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h07bc746_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsentencepiece-0.2.0-he13a0af_10.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.48.0-h3f77e49_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.1-h9cc3647_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libthrift-0.21.0-h64651cc_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-h551f018_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.10.0-hda25de7_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libuv-1.50.0-h5505292_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.5.0-h2471fea_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxcb-1.17.0-hdb1d25a_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.5-h178c5d8_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda - - 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-25.1.0.dev2025020605-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025020605-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025020605-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020605-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-25.1.0.dev2025020605-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.modular.com/max-nightly/noarch/max-25.1.0.dev2025020700-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025020700-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025020700-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020700-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020700-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/nlohmann_json-3.11.3-h00cdb27_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openjpeg-2.5.3-h8a3d83b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.0-h81ee809_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.29.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.29.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.29.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-prometheus-1.12.0rc1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.29.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.29.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.50b0-pyh3cfb1c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/orc-2.0.3-h0ff2369_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.3-py312hcd31e36_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-11.1.0-py312h50aef2c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/prometheus-cpp-1.3.0-h0967b3e_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.1-py312h998013c_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/protobuf-5.28.3-py312hd8f9ff3_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pthread-stubs-0.4-hd74edd7_1002.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-19.0.0-py312h1f38498_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-19.0.0-py312hc40f475_0_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.6-pyh3cfb1c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.27.2-py312hcd83bfe_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.7.1-pyh3cfb1c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyinstrument-5.0.1-py312hea69d52_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.8-hc22306f_1_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.20-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-xxhash-3.5.0-py312h024a12e_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-5_cp312.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py312h998013c_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.1-py312hf4875e0_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/re2-2024.07.02-h6589ca4_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h92ec313_1.conda - - 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.5.2-py312hcd83bfe_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-0.2.0-h22a84ea_10.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-python-0.2.0-py312h155166a_10.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-spm-0.2.0-he13a0af_10.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-h98b9ce2_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.2.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.45.3-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.21.0-py312hf3e4074_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.48.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.34.0-pyh31011fe_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.34.0-h31011fe_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/uvloop-0.21.0-py312h0bf5046_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/watchfiles-1.0.4-py312hcd83bfe_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/websockets-14.2-py312hea69d52_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/wrapt-1.17.2-py312hea69d52_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxau-1.0.12-h5505292_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxdmcp-1.1.5-hd74edd7_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xxhash-0.8.2-hb547adb_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.18.3-py312h998013c_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zlib-1.3.1-h8359307_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py312h15fbf35_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.6-hb46c0d2_0.conda packages: - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 sha256: fe51de6107f9edc7aa4f786a70f4a883943bc9d39b3bb7307c04c41410990726 @@ -702,6621 +230,1859 @@ packages: license_family: BSD size: 23712 timestamp: 1650670790230 -- conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_1.conda - sha256: 95d4713e49ea92ae50cf42393683ede706b7875af5f7cb14c253438180afa732 - md5: 296b403617bafa89df4971567af79013 - depends: - - python >=3.9 - license: PSF-2.0 - license_family: PSF - size: 19351 - timestamp: 1733332029649 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.12-py312h178313f_0.conda - sha256: 223f271deceaf71d0cbee21162084104a6eca06e79c04ecb322706be3e406ea1 - md5: 9f96d8b6fb9bab11e46c12132283b5b1 +- conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda + sha256: 5ced96500d945fb286c9c838e54fa759aa04a7129c59800f0846b4335cee770d + md5: 62ee74e96c5ebb0af99386de58cf9553 depends: - __glibc >=2.17,<3.0.a0 - - aiohappyeyeballs >=2.3.0 - - aiosignal >=1.1.2 - - attrs >=17.3.0 - - frozenlist >=1.1.1 - - libgcc >=13 - - multidict >=4.5,<7.0 - - propcache >=0.2.0 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - - yarl >=1.17.0,<2.0 + - libgcc-ng >=12 arch: x86_64 platform: linux - license: MIT AND Apache-2.0 - license_family: Apache - size: 915782 - timestamp: 1738824701518 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.12-py312hcc812fe_0.conda - sha256: 8d865017a2f2b2ab9a23e0ab325730c79fb7dc38246f46f4b58da24d7a324805 - md5: e26817b48ca6e2035f69d88165a792f6 - depends: - - aiohappyeyeballs >=2.3.0 - - aiosignal >=1.1.2 - - attrs >=17.3.0 - - frozenlist >=1.1.1 - - libgcc >=13 - - multidict >=4.5,<7.0 - - propcache >=0.2.0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - - yarl >=1.17.0,<2.0 + license: bzip2-1.0.6 + license_family: BSD + size: 252783 + timestamp: 1720974456583 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h68df207_7.conda + sha256: 2258b0b33e1cb3a9852d47557984abb6e7ea58e3d7f92706ec1f8e879290c4cb + md5: 56398c28220513b9ea13d7b450acfb20 + depends: + - libgcc-ng >=12 arch: aarch64 platform: linux - license: MIT AND Apache-2.0 - license_family: Apache - size: 901058 - timestamp: 1738823269469 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.12-py312h998013c_0.conda - sha256: a4d04942bdeedbb7260b41eafb0302b6f8c3799f578c4389984c084a8fc34c16 - md5: 7675cee14b7e7d9ccf17ad37a4bdf53a + license: bzip2-1.0.6 + license_family: BSD + size: 189884 + timestamp: 1720974504976 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda + sha256: adfa71f158cbd872a36394c56c3568e6034aa55c623634b37a4836bd036e6b91 + md5: fc6948412dbbbe9a4c9ddbbcfe0a79ab depends: - __osx >=11.0 - - aiohappyeyeballs >=2.3.0 - - aiosignal >=1.1.2 - - attrs >=17.3.0 - - frozenlist >=1.1.1 - - multidict >=4.5,<7.0 - - propcache >=0.2.0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - - yarl >=1.17.0,<2.0 arch: arm64 platform: osx - license: MIT AND Apache-2.0 - license_family: Apache - size: 889104 - timestamp: 1738823362301 -- conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda - sha256: 7de8ced1918bbdadecf8e1c1c68237fe5709c097bd9e0d254f4cad118f4345d0 - md5: 1a3981115a398535dbe3f6d5faae3d36 + license: bzip2-1.0.6 + license_family: BSD + size: 122909 + timestamp: 1720974522888 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2025.1.31-hbcca054_0.conda + sha256: bf832198976d559ab44d6cdb315642655547e26d826e34da67cbee6624cda189 + md5: 19f3a56f68d2fd06c516076bff482c52 + arch: x86_64 + platform: linux + license: ISC + size: 158144 + timestamp: 1738298224464 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2025.1.31-hcefe29a_0.conda + sha256: 66c6408ee461593cfdb2d78d82e6ed74d04a04ccb51df3ef8a5f35148c9c6eec + md5: 462cb166cd2e26a396f856510a3aff67 + arch: aarch64 + platform: linux + license: ISC + size: 158290 + timestamp: 1738299057652 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2025.1.31-hf0a4a13_0.conda + sha256: 7e12816618173fe70f5c638b72adf4bfd4ddabf27794369bb17871c5bb75b9f9 + md5: 3569d6a9141adc64d2fe4797f3289e06 + arch: arm64 + platform: osx + license: ISC + size: 158425 + timestamp: 1738298167688 +- conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda + sha256: c920d23cd1fcf565031c679adb62d848af60d6fbb0edc2d50ba475cea4f0d8ab + md5: f22f4d4970e09d68a10b922cbb0408d3 depends: - - frozenlist >=1.1.0 + - __unix - python >=3.9 - license: Apache-2.0 - license_family: APACHE - size: 13229 - timestamp: 1734342253061 -- conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - sha256: e0ea1ba78fbb64f17062601edda82097fcf815012cf52bb704150a2668110d48 - md5: 2934f256a8acfe48f6ebb4fce6cde29c + license: BSD-3-Clause + license_family: BSD + size: 84705 + timestamp: 1734858922844 +- conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + sha256: ab29d57dc70786c1269633ba3dff20288b81664d3ff8d21af995742e2bb03287 + md5: 962b9857ee8e7018c22f2776ffa0b2d7 depends: - python >=3.9 - - typing-extensions >=4.0.0 - license: MIT - license_family: MIT - size: 18074 - timestamp: 1733247158254 -- conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.8.0-pyhd8ed1ab_0.conda - sha256: f1455d2953e3eb6d71bc49881c8558d8e01888469dfd21061dd48afb6183e836 - md5: 848d25bfbadf020ee4d4ba90e5668252 - depends: - - exceptiongroup >=1.0.2 - - idna >=2.8 + license: BSD-3-Clause + license_family: BSD + size: 27011 + timestamp: 1733218222191 +- conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + sha256: 598951ebdb23e25e4cec4bbff0ae369cec65ead80b50bc08b441d8e54de5cf03 + md5: f4b39bf00c69f56ac01e020ebfac066c + depends: - python >=3.9 - - sniffio >=1.1 - - typing_extensions >=4.5 - constrains: - - trio >=0.26.1 - - uvloop >=0.21 - license: MIT - license_family: MIT - size: 115305 - timestamp: 1736174485476 -- conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.1.0-pyh71513ae_0.conda - sha256: 1f267886522dfb9ae4e5ebbc3135b5eb13cff27bdbfe8d881a4d893459166ab4 - md5: 2cc3f588512f04f3a0c64b4e9bedc02d + - zipp >=0.5 + license: Apache-2.0 + license_family: APACHE + size: 29141 + timestamp: 1737420302391 +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + sha256: 19d8bd5bb2fde910ec59e081eeb59529491995ce0d653a5209366611023a0b3a + md5: 4ebae00eae9705b0c3d6d1018a81d047 depends: + - importlib-metadata >=4.8.3 + - jupyter_core >=4.12,!=5.0.* - python >=3.9 - license: MIT - license_family: MIT - size: 56370 - timestamp: 1737819298139 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.1-h205f482_0.conda - sha256: ebe5e33249f37f6bb481de99581ebdc92dbfcf1b6915609bcf3c9e78661d6352 - md5: 9c500858e88df50af3cc883d194de78a + - python-dateutil >=2.8.2 + - pyzmq >=23.0 + - tornado >=6.2 + - traitlets >=5.3 + license: BSD-3-Clause + license_family: BSD + size: 106342 + timestamp: 1733441040958 +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + sha256: 732b1e8536bc22a5a174baa79842d79db2f4956d90293dd82dc1b3f6099bcccd + md5: 0a2980dada0dd7fd0998f0342308b1b1 depends: - - __glibc >=2.17,<3.0.a0 - - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - aws-c-http >=0.9.2,<0.9.3.0a0 - - aws-c-io >=0.15.3,<0.15.4.0a0 - - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 - - libgcc >=13 + - __unix + - platformdirs >=2.5 + - python >=3.8 + - traitlets >=5.3 + license: BSD-3-Clause + license_family: BSD + size: 57671 + timestamp: 1727163547058 +- conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 + sha256: 150c05a6e538610ca7c43beb3a40d65c90537497a4f6a5f4d15ec0451b6f5ebb + md5: 30186d27e2c9fa62b45fb1476b7200e3 + depends: + - libgcc-ng >=10.3.0 arch: x86_64 platform: linux - license: Apache-2.0 - license_family: Apache - size: 108111 - timestamp: 1737509831651 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.1-hb7ec8d5_0.conda - sha256: e1e6c9267a4d9af30b1d28c11a9041b17b7840ff83ef08614145a2a4f444f5b4 - md5: 2630f030652970a5531e492f6b2a6dd3 - depends: - - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - aws-c-http >=0.9.2,<0.9.3.0a0 - - aws-c-io >=0.15.3,<0.15.4.0a0 - - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 - - libgcc >=13 + license: LGPL-2.1-or-later + size: 117831 + timestamp: 1646151697040 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/keyutils-1.6.1-h4e544f5_0.tar.bz2 + sha256: 6d4233d97a9b38acbb26e1268bcf8c10a8e79c2aed7e5a385ec3769967e3e65b + md5: 1f24853e59c68892452ef94ddd8afd4b + depends: + - libgcc-ng >=10.3.0 arch: aarch64 platform: linux - license: Apache-2.0 - license_family: Apache - size: 112658 - timestamp: 1737509863269 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.1-hfc2798a_0.conda - sha256: 5a60d196a585b25d1446fb973009e4e648e8d70beaa2793787243ede6da0fd9a - md5: 0abd67c0f7b60d50348fbb32fef50b65 - depends: - - __osx >=11.0 - - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - aws-c-http >=0.9.2,<0.9.3.0a0 - - aws-c-io >=0.15.3,<0.15.4.0a0 - - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: Apache - size: 92562 - timestamp: 1737509877079 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.1-h1a47875_3.conda - sha256: 095ac824ea9303eff67e04090ae531d9eb33d2bf8f82eaade39b839c421e16e8 - md5: 55a8561fdbbbd34f50f57d9be12ed084 + license: LGPL-2.1-or-later + size: 112327 + timestamp: 1646166857935 +- conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda + sha256: 99df692f7a8a5c27cd14b5fb1374ee55e756631b9c3d659ed3ee60830249b238 + md5: 3f43953b7d3fb3aaa1d0d0723d91e368 depends: - - __glibc >=2.17,<3.0.a0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - libgcc >=13 + - keyutils >=1.6.1,<2.0a0 + - libedit >=3.1.20191231,<3.2.0a0 + - libedit >=3.1.20191231,<4.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 - openssl >=3.3.1,<4.0a0 arch: x86_64 platform: linux - license: Apache-2.0 - license_family: Apache - size: 47601 - timestamp: 1733991564405 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.1-h740c5af_3.conda - sha256: c5c7961d48ca7320ed3560c036f7aa5244df4b85d9657f70aacc5faba3e1509a - md5: 57ed2c445d7ef01d121b9bcea0522913 + license: MIT + license_family: MIT + size: 1370023 + timestamp: 1719463201255 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/krb5-1.21.3-h50a48e9_0.conda + sha256: 0ec272afcf7ea7fbf007e07a3b4678384b7da4047348107b2ae02630a570a815 + md5: 29c10432a2ca1472b53f299ffb2ffa37 depends: - - aws-c-common >=0.10.6,<0.10.7.0a0 - - libgcc >=13 + - keyutils >=1.6.1,<2.0a0 + - libedit >=3.1.20191231,<3.2.0a0 + - libedit >=3.1.20191231,<4.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 - openssl >=3.3.1,<4.0a0 arch: aarch64 platform: linux - license: Apache-2.0 - license_family: Apache - size: 50036 - timestamp: 1733991581303 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.1-hc8a0bd2_3.conda - sha256: 1f44be36e1daa17b4b081debb8aee492d13571084f38b503ad13e869fef24fe4 - md5: 8b0ce61384e5a33d2b301a64f3d22ac5 + license: MIT + license_family: MIT + size: 1474620 + timestamp: 1719463205834 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda + sha256: 4442f957c3c77d69d9da3521268cad5d54c9033f1a73f99cde0a3658937b159b + md5: c6dc8a0fdec13a0565936655c33069a1 depends: - __osx >=11.0 - - aws-c-common >=0.10.6,<0.10.7.0a0 + - libcxx >=16 + - libedit >=3.1.20191231,<3.2.0a0 + - libedit >=3.1.20191231,<4.0a0 - openssl >=3.3.1,<4.0a0 arch: arm64 platform: osx - license: Apache-2.0 - license_family: Apache - size: 39925 - timestamp: 1733991649383 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.10.6-hb9d3cd8_0.conda - sha256: 496e92f2150fdc351eacf6e236015deedb3d0d3114f8e5954341cbf9f3dda257 - md5: d7d4680337a14001b0e043e96529409b + license: MIT + license_family: MIT + size: 1155530 + timestamp: 1719463474401 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_2.conda + sha256: 7c91cea91b13f4314d125d1bedb9d03a29ebbd5080ccdea70260363424646dbe + md5: 048b02e3962f066da18efe3a21b77672 depends: - __glibc >=2.17,<3.0.a0 - - libgcc >=13 + constrains: + - binutils_impl_linux-64 2.43 arch: x86_64 platform: linux - license: Apache-2.0 - license_family: Apache - size: 236574 - timestamp: 1733975453350 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-common-0.10.6-h86ecc28_0.conda - sha256: 57288ec5df35781bea8fc6a8c9099cad6695b747784fc1b8862a0f9e5b3bf5ab - md5: fef806a0f6de853670c746bbece01966 - depends: - - libgcc >=13 + license: GPL-3.0-only + license_family: GPL + size: 669211 + timestamp: 1729655358674 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_2.conda + sha256: 80ec7e8f006196808fac5bd4b3773a652847f97bbf08044cd87731424ac64f8b + md5: fcbde5ea19d55468953bf588770c0501 + constrains: + - binutils_impl_linux-aarch64 2.43 arch: aarch64 platform: linux - license: Apache-2.0 - license_family: Apache - size: 259031 - timestamp: 1733975520465 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.10.6-h5505292_0.conda - sha256: 3bde135c8e74987c0f79ecd4fa17ec9cff0d658b3090168727ca1af3815ae57a - md5: 145e5b4c9702ed279d7d68aaf096f77d - depends: - - __osx >=11.0 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: Apache - size: 221863 - timestamp: 1733975576886 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.3.0-h4e1184b_5.conda - sha256: 62ca84da83585e7814a40240a1e750b1563b2680b032a471464eccc001c3309b - md5: 3f4c1197462a6df2be6dc8241828fe93 + license: GPL-3.0-only + license_family: GPL + size: 698245 + timestamp: 1729655345825 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda + sha256: 143a586aa67d50622ef703de57b9d43f44945836d6568e0e7aa174bd8c45e0d4 + md5: 488f260ccda0afaf08acb286db439c2f depends: - __glibc >=2.17,<3.0.a0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - libgcc >=13 + - libstdcxx >=13 + constrains: + - libabseil-static =20240722.0=cxx17* + - abseil-cpp =20240722.0 arch: x86_64 platform: linux license: Apache-2.0 license_family: Apache - size: 19086 - timestamp: 1733991637424 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-compression-0.3.0-h0f0193d_5.conda - sha256: 3f05d19f68ef800f33d44ea2a4211003124076516c8469abc7d432236344df53 - md5: 3a1421d12435df5b4c412cc4c8fac64d + size: 1311599 + timestamp: 1736008414161 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h18dbdb1_4.conda + sha256: bb6c5fb3b8de5f90735c5252b57efb3c268ee222c755569dac18065f05147670 + md5: 633b9fe454ffea2aaf29e191d946a83b depends: - - aws-c-common >=0.10.6,<0.10.7.0a0 - libgcc >=13 + - libstdcxx >=13 + constrains: + - abseil-cpp =20240722.0 + - libabseil-static =20240722.0=cxx17* arch: aarch64 platform: linux license: Apache-2.0 license_family: Apache - size: 19740 - timestamp: 1733991625201 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-compression-0.3.0-hc8a0bd2_5.conda - sha256: 47b2813f652ce7e64ac442f771b2a5f7d4af4ad0d07ff51f6075ea80ed2e3f09 - md5: a8b6c17732d14ed49d0e9b59c43186bc + size: 1334844 + timestamp: 1736008472455 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_h07bc746_4.conda + sha256: 05fa5e5e908962b9c5aba95f962e2ca81d9599c4715aebe5e4ddb72b309d1770 + md5: c2d95bd7aa8d564a9bd7eca5e571a5b3 depends: - __osx >=11.0 - - aws-c-common >=0.10.6,<0.10.7.0a0 + - libcxx >=18 + constrains: + - libabseil-static =20240722.0=cxx17* + - abseil-cpp =20240722.0 arch: arm64 platform: osx license: Apache-2.0 license_family: Apache - size: 18068 - timestamp: 1733991869211 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.0-h7959bf6_11.conda - sha256: 10d7240c7db0c941fb1a59c4f8ea6689a434b03309ee7b766fa15a809c553c02 - md5: 9b3fb60fe57925a92f399bc3fc42eccf + size: 1178260 + timestamp: 1736008642885 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-28_h59b9bed_openblas.conda + build_number: 28 + sha256: 93fbcf2800b859b7ca5add3ab5d3aa11c6a6ff4b942a1cea4bf644f78488edb8 + md5: 73e2a99fdeb8531d50168987378fda8a depends: - - __glibc >=2.17,<3.0.a0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - aws-c-io >=0.15.3,<0.15.4.0a0 - - aws-checksums >=0.2.2,<0.2.3.0a0 - - libgcc >=13 - - libstdcxx >=13 - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 54003 - timestamp: 1734024480949 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-event-stream-0.5.0-hcbd8f92_11.conda - sha256: 79aa363c71c891a27496c0498f8d498b2ddc87b3ccb3b6c9da5b50b05936ebb8 - md5: e0772c59af4243a9b2565baa5d79e5b6 - depends: - - aws-c-common >=0.10.6,<0.10.7.0a0 - - aws-c-io >=0.15.3,<0.15.4.0a0 - - aws-checksums >=0.2.2,<0.2.3.0a0 - - libgcc >=13 - - libstdcxx >=13 - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 55207 - timestamp: 1734024546663 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.0-h54f970a_11.conda - sha256: f0667935f4e0d4c25e0e51da035640310b5ceeb8f723156734439bde8b848d7d - md5: ba41238f8e653998d7d2f42e3a8db054 - depends: - - __osx >=11.0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - aws-c-io >=0.15.3,<0.15.4.0a0 - - aws-checksums >=0.2.2,<0.2.3.0a0 - - libcxx >=18 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: Apache - size: 47078 - timestamp: 1734024749727 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.2-hefd7a92_4.conda - sha256: 4a330206bd51148f6c13ca0b7a4db40f29a46f090642ebacdeb88b8a4abd7f99 - md5: 5ce4df662d32d3123ea8da15571b6f51 - depends: - - __glibc >=2.17,<3.0.a0 - - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - aws-c-compression >=0.3.0,<0.3.1.0a0 - - aws-c-io >=0.15.3,<0.15.4.0a0 - - libgcc >=13 + - libopenblas >=0.3.28,<0.3.29.0a0 + - libopenblas >=0.3.28,<1.0a0 + constrains: + - libcblas =3.9.0=28*_openblas + - blas =2.128=openblas + - liblapack =3.9.0=28*_openblas + - liblapacke =3.9.0=28*_openblas arch: x86_64 platform: linux - license: Apache-2.0 - license_family: Apache - size: 197731 - timestamp: 1734008380764 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.2-h3df160d_4.conda - sha256: 3a1d2d332945306be9d49e569b95e4cc172d825f10e88715513a172f28ebb59e - md5: 28f00aa7fd9556c4c461328cf146c20b - depends: - - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - aws-c-compression >=0.3.0,<0.3.1.0a0 - - aws-c-io >=0.15.3,<0.15.4.0a0 - - libgcc >=13 + license: BSD-3-Clause + license_family: BSD + size: 16621 + timestamp: 1738114033763 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-28_h1a9f1db_openblas.conda + build_number: 28 + sha256: a50dc7ed1f49789aab4ffb560d9a46b5dc3f059a925282f699c1a96fa566a1a0 + md5: 88dfbb3875d62b431aa676b4a54734bf + depends: + - libopenblas >=0.3.28,<0.3.29.0a0 + - libopenblas >=0.3.28,<1.0a0 + constrains: + - liblapack =3.9.0=28*_openblas + - libcblas =3.9.0=28*_openblas + - blas =2.128=openblas + - liblapacke =3.9.0=28*_openblas arch: aarch64 platform: linux - license: Apache-2.0 - license_family: Apache - size: 190586 - timestamp: 1734008442362 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.2-h96aa502_4.conda - sha256: 22e4737c8a885995b7c1ae1d79c1f6e78d489e16ec079615980fdde067aeaf76 - md5: 495c93a4f08b17deb3c04894512330e6 + license: BSD-3-Clause + license_family: BSD + size: 16697 + timestamp: 1738114082682 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-28_h10e41b3_openblas.conda + build_number: 28 + sha256: 5bea855a1a7435ce2238535aa4b13db8af8ee301d99a42b083b63fa64c1ea144 + md5: 166166d84a0e9571dc50210baf993b46 depends: - - __osx >=11.0 - - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - aws-c-compression >=0.3.0,<0.3.1.0a0 - - aws-c-io >=0.15.3,<0.15.4.0a0 + - libopenblas >=0.3.28,<0.3.29.0a0 + - libopenblas >=0.3.28,<1.0a0 + constrains: + - liblapack =3.9.0=28*_openblas + - liblapacke =3.9.0=28*_openblas + - blas =2.128=openblas + - libcblas =3.9.0=28*_openblas arch: arm64 platform: osx - license: Apache-2.0 - license_family: Apache - size: 152983 - timestamp: 1734008451473 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-h173a860_6.conda - sha256: 335d822eead0a097ffd23677a288e1f18ea22f47a92d4f877419debb93af0e81 - md5: 9a063178f1af0a898526cc24ba7be486 + license: BSD-3-Clause + license_family: BSD + size: 16840 + timestamp: 1738114389937 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-28_he106b2a_openblas.conda + build_number: 28 + sha256: de293e117db53e5d78b579136509c35a5e4ad11529c05f9af83cf89be4d30de1 + md5: 4e20a1c00b4e8a984aac0f6cce59e3ac depends: - - __glibc >=2.17,<3.0.a0 - - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - libgcc >=13 - - s2n >=1.5.11,<1.5.12.0a0 + - libblas 3.9.0 28_h59b9bed_openblas + constrains: + - blas =2.128=openblas + - liblapack =3.9.0=28*_openblas + - liblapacke =3.9.0=28*_openblas arch: x86_64 platform: linux - license: Apache-2.0 - license_family: Apache - size: 157263 - timestamp: 1737207617838 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-hfd5ba81_6.conda - sha256: d8adfde05cee11057d99c3802e84b2300430a7c7c3c9936165d1d4b25ef59d91 - md5: 4e6771b45cb2b035c62d023dbf0dc000 - depends: - - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - libgcc >=13 - - s2n >=1.5.11,<1.5.12.0a0 + license: BSD-3-Clause + license_family: BSD + size: 16539 + timestamp: 1738114043618 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-28_hab92f65_openblas.conda + build_number: 28 + sha256: ed62f13a85726f568e17ad569b5cc01a49a6c7bd334802cf1c1b15e9d10e7e93 + md5: 8cff453f547365131be5647c7680ac6d + depends: + - libblas 3.9.0 28_h1a9f1db_openblas + constrains: + - liblapack =3.9.0=28*_openblas + - blas =2.128=openblas + - liblapacke =3.9.0=28*_openblas arch: aarch64 platform: linux - license: Apache-2.0 - license_family: Apache - size: 160933 - timestamp: 1737207637279 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-haba67d1_6.conda - sha256: 73722dd175af78b6cbfa033066f0933351f5382a1a737f6c6d9b8cfa84022161 - md5: d02e8f40ff69562903e70a1c6c48b009 + license: BSD-3-Clause + license_family: BSD + size: 16655 + timestamp: 1738114088527 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-28_hb3479ef_openblas.conda + build_number: 28 + sha256: f08adea59381babb3568e6d23e52aff874cbc25f299821647ab1127d1e1332ca + md5: 30942dea911ce333765003a8adec4e8a depends: - - __osx >=11.0 - - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.6,<0.10.7.0a0 + - libblas 3.9.0 28_h10e41b3_openblas + constrains: + - blas =2.128=openblas + - liblapacke =3.9.0=28*_openblas + - liblapack =3.9.0=28*_openblas arch: arm64 platform: osx - license: Apache-2.0 - license_family: Apache - size: 136048 - timestamp: 1737207681224 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h11f4f37_12.conda - sha256: 512d3969426152d9d5fd886e27b13706122dc3fa90eb08c37b0d51a33d7bb14a - md5: 96c3e0221fa2da97619ee82faa341a73 - depends: - - __glibc >=2.17,<3.0.a0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - aws-c-http >=0.9.2,<0.9.3.0a0 - - aws-c-io >=0.15.3,<0.15.4.0a0 - - libgcc >=13 - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 194672 - timestamp: 1734025626798 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h5f50e26_12.conda - sha256: ffeb9100cc8fd4093e1a6fdfd938bc4a396dd77480b7fb17aa42855a4d5e2c70 - md5: 031ca33115d4b1eeb43f435d6215778c - depends: - - aws-c-common >=0.10.6,<0.10.7.0a0 - - aws-c-http >=0.9.2,<0.9.3.0a0 - - aws-c-io >=0.15.3,<0.15.4.0a0 - - libgcc >=13 - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 169516 - timestamp: 1734025167885 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h24f418c_12.conda - sha256: 96575ea1dd2a9ea94763882e40a66dcbff9c41f702bf37c9514c4c719b3c11dd - md5: c072045a6206f88015d02fcba1705ea1 + license: BSD-3-Clause + license_family: BSD + size: 16788 + timestamp: 1738114399962 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda + sha256: 776092346da87a2a23502e14d91eb0c32699c4a1522b7331537bd1c3751dcff5 + md5: 5b3e1610ff8bd5443476b91d618f5b77 depends: - __osx >=11.0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - aws-c-http >=0.9.2,<0.9.3.0a0 - - aws-c-io >=0.15.3,<0.15.4.0a0 arch: arm64 platform: osx - license: Apache-2.0 + license: Apache-2.0 WITH LLVM-exception license_family: Apache - size: 134371 - timestamp: 1734025379525 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.9-he1b24dc_1.conda - sha256: 15fbdedc56850f8be5be7a5bcaea1af09c97590e631c024ae089737fc932fc42 - md5: caafc32928a5f7f3f7ef67d287689144 + size: 523505 + timestamp: 1736877862502 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda + sha256: d789471216e7aba3c184cd054ed61ce3f6dac6f87a50ec69291b9297f8c18724 + md5: c277e0a4d549b03ac1e9d6cbbe3d017b depends: + - ncurses - __glibc >=2.17,<3.0.a0 - - aws-c-auth >=0.8.1,<0.8.2.0a0 - - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - aws-c-http >=0.9.2,<0.9.3.0a0 - - aws-c-io >=0.15.3,<0.15.4.0a0 - - aws-checksums >=0.2.2,<0.2.3.0a0 - libgcc >=13 - - openssl >=3.4.0,<4.0a0 + - ncurses >=6.5,<7.0a0 arch: x86_64 platform: linux - license: Apache-2.0 - license_family: Apache - size: 115413 - timestamp: 1737558687616 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.9-h05b070f_1.conda - sha256: 9e7857fbc33eddc291fa09890ce468a92485d3e3e127bc00bbd1803e34121f84 - md5: e0a2869195f069db88b8932f5b00bee5 - depends: - - aws-c-auth >=0.8.1,<0.8.2.0a0 - - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - aws-c-http >=0.9.2,<0.9.3.0a0 - - aws-c-io >=0.15.3,<0.15.4.0a0 - - aws-checksums >=0.2.2,<0.2.3.0a0 + license: BSD-2-Clause + license_family: BSD + size: 134676 + timestamp: 1738479519902 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20250104-pl5321h976ea20_0.conda + sha256: c0b27546aa3a23d47919226b3a1635fccdb4f24b94e72e206a751b33f46fd8d6 + md5: fb640d776fc92b682a14e001980825b1 + depends: + - ncurses - libgcc >=13 - - openssl >=3.4.0,<4.0a0 + - ncurses >=6.5,<7.0a0 arch: aarch64 platform: linux - license: Apache-2.0 - license_family: Apache - size: 117875 - timestamp: 1737558720047 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.9-hf37e03c_1.conda - sha256: 92e8ca4eefcbbdf4189584c9410382884a06ed3030e5ecaac656dab8c95e6a80 - md5: de65f5e4ab5020103fe70a0eba9432a0 + license: BSD-2-Clause + license_family: BSD + size: 148125 + timestamp: 1738479808948 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda + sha256: 66aa216a403de0bb0c1340a88d1a06adaff66bae2cfd196731aa24db9859d631 + md5: 44083d2d2c2025afca315c7a172eab2b depends: + - ncurses - __osx >=11.0 - - aws-c-auth >=0.8.1,<0.8.2.0a0 - - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - aws-c-http >=0.9.2,<0.9.3.0a0 - - aws-c-io >=0.15.3,<0.15.4.0a0 - - aws-checksums >=0.2.2,<0.2.3.0a0 + - ncurses >=6.5,<7.0a0 arch: arm64 platform: osx - license: Apache-2.0 - license_family: Apache - size: 98731 - timestamp: 1737558731831 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.2-h4e1184b_0.conda - sha256: 0424e380c435ba03b5948d02e8c958866c4eee50ed29e57f99473a5f795a4cfc - md5: dcd498d493818b776a77fbc242fbf8e4 + license: BSD-2-Clause + license_family: BSD + size: 107691 + timestamp: 1738479560845 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda + sha256: 56541b98447b58e52d824bd59d6382d609e11de1f8adf20b23143e353d2b8d26 + md5: db833e03127376d461e1e13e76f09b6c depends: - __glibc >=2.17,<3.0.a0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - libgcc >=13 + constrains: + - expat 2.6.4.* arch: x86_64 platform: linux - license: Apache-2.0 - license_family: Apache - size: 55911 - timestamp: 1736535960724 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.2-h0f0193d_0.conda - sha256: fba38e469457764afcb94aa84d4d7788e6b5fa1554d34b05c904d2245fdd3c81 - md5: a78928881c652facde2a13ec6e776f3c + license: MIT + license_family: MIT + size: 73304 + timestamp: 1730967041968 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.6.4-h5ad3122_0.conda + sha256: f42e758009ba9db90d1fe7992bc3e60d0c52f71fb20923375d2c44ae69a5a2b3 + md5: f1b3fab36861b3ce945a13f0dfdfc688 depends: - - aws-c-common >=0.10.6,<0.10.7.0a0 - libgcc >=13 + constrains: + - expat 2.6.4.* arch: aarch64 platform: linux - license: Apache-2.0 - license_family: Apache - size: 58221 - timestamp: 1736536003041 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.2-hc8a0bd2_0.conda - sha256: ea4f0f1e99056293c69615f581a997d65ba7e229e296e402e0d8ef750648a5b5 - md5: e7b5498ac7b7ab921a907be38f3a8080 + license: MIT + license_family: MIT + size: 72345 + timestamp: 1730967203789 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.4-h286801f_0.conda + sha256: e42ab5ace927ee7c84e3f0f7d813671e1cf3529f5f06ee5899606630498c2745 + md5: 38d2656dd914feb0cab8c629370768bf depends: - __osx >=11.0 - - aws-c-common >=0.10.6,<0.10.7.0a0 + constrains: + - expat 2.6.4.* arch: arm64 platform: osx - license: Apache-2.0 - license_family: Apache - size: 49872 - timestamp: 1736536152332 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-h4e1184b_4.conda - sha256: 1ed9a332d06ad595694907fad2d6d801082916c27cd5076096fda4061e6d24a8 - md5: 74e8c3e4df4ceae34aa2959df4b28101 + license: MIT + license_family: MIT + size: 64693 + timestamp: 1730967175868 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.2-h7f98852_5.tar.bz2 + sha256: ab6e9856c21709b7b517e940ae7028ae0737546122f83c2aa5d692860c3b149e + md5: d645c6d2ac96843a2bfaccd2d62b3ac3 depends: - - __glibc >=2.17,<3.0.a0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - libgcc >=13 + - libgcc-ng >=9.4.0 arch: x86_64 platform: linux - license: Apache-2.0 - license_family: Apache - size: 72762 - timestamp: 1733994347547 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h0f0193d_4.conda - sha256: 9f1e3635a587bcf92b61d88c7af7d24cd89c147c6d0ae58afbde08e65bcf48da - md5: 3bd35b0adab3d743f09e0252cc441d6b + license: MIT + license_family: MIT + size: 58292 + timestamp: 1636488182923 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.4.2-h3557bc0_5.tar.bz2 + sha256: 7e9258a102480757fe3faeb225a3ca04dffd10fecd2a958c65cdb4cdf75f2c3c + md5: dddd85f4d52121fab0a8b099c5e06501 depends: - - aws-c-common >=0.10.6,<0.10.7.0a0 - - libgcc >=13 + - libgcc-ng >=9.4.0 arch: aarch64 platform: linux - license: Apache-2.0 - license_family: Apache - size: 72154 - timestamp: 1733994384415 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-hc8a0bd2_4.conda - sha256: 215086d95e8ff1d3fcb0197ada116cc9d7db1fdae7573f5e810d20fa9215b47c - md5: e70e88a357a3749b67679c0788c5b08a - depends: - - __osx >=11.0 - - aws-c-common >=0.10.6,<0.10.7.0a0 + license: MIT + license_family: MIT + size: 59450 + timestamp: 1636488255090 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 + sha256: 41b3d13efb775e340e4dba549ab5c029611ea6918703096b2eaa9c015c0750ca + md5: 086914b672be056eb70fd4285b6783b6 arch: arm64 platform: osx - license: Apache-2.0 - license_family: Apache - size: 70186 - timestamp: 1733994496998 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.9-he0e7f3f_2.conda - sha256: c1930569713bd5231d48d885a5e3707ac917b428e8f08189d14064a2bb128adc - md5: 8a4e6fc8a3b285536202b5456a74a940 + license: MIT + license_family: MIT + size: 39020 + timestamp: 1636488587153 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h77fa898_1.conda + sha256: 53eb8a79365e58849e7b1a068d31f4f9e718dc938d6f2c03e960345739a03569 + md5: 3cb76c3f10d3bc7f1105b2fc9db984df depends: - - __glibc >=2.17,<3.0.a0 - - aws-c-auth >=0.8.1,<0.8.2.0a0 - - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - - aws-c-http >=0.9.2,<0.9.3.0a0 - - aws-c-io >=0.15.3,<0.15.4.0a0 - - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - - aws-c-s3 >=0.7.9,<0.7.10.0a0 - - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 - - libgcc >=13 - - libstdcxx >=13 + - _libgcc_mutex 0.1 conda_forge + - _openmp_mutex >=4.5 + constrains: + - libgomp 14.2.0 h77fa898_1 + - libgcc-ng ==14.2.0=*_1 arch: x86_64 platform: linux - license: Apache-2.0 - license_family: Apache - size: 353222 - timestamp: 1737565463079 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.9-hab3ce66_2.conda - sha256: c3884fb10e0fd9be5c13256cabcda1afa9d2fcf8878c67214d02fc344509857d - md5: 875968ebffe992b68faf2caebbf32f02 - depends: - - aws-c-auth >=0.8.1,<0.8.2.0a0 - - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - - aws-c-http >=0.9.2,<0.9.3.0a0 - - aws-c-io >=0.15.3,<0.15.4.0a0 - - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - - aws-c-s3 >=0.7.9,<0.7.10.0a0 - - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 - - libgcc >=13 - - libstdcxx >=13 - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 283812 - timestamp: 1737565480034 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.9-ha81f72f_2.conda - sha256: ed5f1d19aad53787fdebe13db4709c97eae2092536cc55d3536eba320c4286e1 - md5: c9c034d3239bf25687ca4dd985007ecd + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 848745 + timestamp: 1729027721139 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-14.2.0-he277a41_1.conda + sha256: 5d56757ccad208c79214395b00d006d8d18929a4ba49c47bd9460789a7620943 + md5: 511b511c5445e324066c3377481bcab8 depends: - - __osx >=11.0 - - aws-c-auth >=0.8.1,<0.8.2.0a0 - - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - - aws-c-http >=0.9.2,<0.9.3.0a0 - - aws-c-io >=0.15.3,<0.15.4.0a0 - - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - - aws-c-s3 >=0.7.9,<0.7.10.0a0 - - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 - - libcxx >=18 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: Apache - size: 235976 - timestamp: 1737565563139 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.489-h4d475cb_0.conda - sha256: 08d6b7d2ed17bfcc7deb903c7751278ee434abdb27e3be0dceb561f30f030c75 - md5: b775e9f46dfa94b228a81d8e8c6d8b1d + - _openmp_mutex >=4.5 + constrains: + - libgcc-ng ==14.2.0=*_1 + - libgomp 14.2.0 he277a41_1 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 535243 + timestamp: 1729089435134 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_1.conda + sha256: 3a76969c80e9af8b6e7a55090088bc41da4cffcde9e2c71b17f44d37b7cb87f7 + md5: e39480b9ca41323497b05492a63bc35b depends: - - __glibc >=2.17,<3.0.a0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - - aws-checksums >=0.2.2,<0.2.3.0a0 - - aws-crt-cpp >=0.29.9,<0.29.10.0a0 - - libcurl >=8.11.1,<9.0a0 - - libgcc >=13 - - libstdcxx >=13 - - libzlib >=1.3.1,<2.0a0 - - openssl >=3.4.0,<4.0a0 + - libgcc 14.2.0 h77fa898_1 arch: x86_64 platform: linux - license: Apache-2.0 - license_family: Apache - size: 3144364 - timestamp: 1737576036746 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.489-h88461e4_0.conda - sha256: 88353e82b053763168cddbe2f88048defc1c97b3dad0966fbe8c4fa7aa592c7e - md5: e725d8fa77a6a5f38a78c5de914a5f40 - depends: - - aws-c-common >=0.10.6,<0.10.7.0a0 - - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - - aws-checksums >=0.2.2,<0.2.3.0a0 - - aws-crt-cpp >=0.29.9,<0.29.10.0a0 - - libcurl >=8.11.1,<9.0a0 - - libgcc >=13 - - libstdcxx >=13 - - libzlib >=1.3.1,<2.0a0 - - openssl >=3.4.0,<4.0a0 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 54142 + timestamp: 1729027726517 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-14.2.0-he9431aa_1.conda + sha256: 9b5cf168a6c7361cae869cb74b716766ee7c6d6b3f6172b32ba9bf91135efdc4 + md5: 0694c249c61469f2c0f7e2990782af21 + depends: + - libgcc 14.2.0 he277a41_1 arch: aarch64 platform: linux - license: Apache-2.0 - license_family: Apache - size: 3015109 - timestamp: 1737575993030 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.489-h0e5014b_0.conda - sha256: d82451530ddf363d8bb31a8a7391bb9699f745e940ace91d78c0e6170deef03c - md5: 156cfb45a1bb8cffc81e59047bb34f51 - depends: - - __osx >=11.0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - - aws-checksums >=0.2.2,<0.2.3.0a0 - - aws-crt-cpp >=0.29.9,<0.29.10.0a0 - - libcurl >=8.11.1,<9.0a0 - - libcxx >=18 - - libzlib >=1.3.1,<2.0a0 - - openssl >=3.4.0,<4.0a0 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: Apache - size: 2874126 - timestamp: 1737577023623 -- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda - sha256: fe07debdb089a3db17f40a7f20d283d75284bb4fc269ef727b8ba6fc93f7cb5a - md5: 0a8838771cc2e985cd295e01ae83baf1 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 54104 + timestamp: 1729089444587 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_1.conda + sha256: fc9e7f22a17faf74da904ebfc4d88699013d2992e55505e4aa0eb01770290977 + md5: f1fd30127802683586f768875127a987 depends: - - __glibc >=2.17,<3.0.a0 - - libcurl >=8.10.1,<9.0a0 - - libgcc >=13 - - libstdcxx >=13 - - openssl >=3.3.2,<4.0a0 + - libgfortran5 14.2.0 hd5240d6_1 + constrains: + - libgfortran-ng ==14.2.0=*_1 arch: x86_64 platform: linux - license: MIT - license_family: MIT - size: 345117 - timestamp: 1728053909574 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-core-cpp-1.14.0-h1887c18_0.conda - sha256: 8967b3ccee4d74e61f6ec82dd8efb9deb854ee7ba012dfe767b7a92e0ac77724 - md5: e0c3a906a41be769f0ae20ca3e31cfc0 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 53997 + timestamp: 1729027752995 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_1.conda + sha256: cb66e411fa32a5c6040f4e5e2a63c00897aae4c3133a9c004c2e929ccf19575b + md5: 0294b92d2f47a240bebb1e3336b495f1 depends: - - libcurl >=8.10.1,<9.0a0 - - libgcc >=13 - - libstdcxx >=13 - - openssl >=3.3.2,<4.0a0 + - libgfortran5 14.2.0 hb6113d0_1 + constrains: + - libgfortran-ng ==14.2.0=*_1 arch: aarch64 platform: linux - license: MIT - license_family: MIT - size: 338650 - timestamp: 1728055589907 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.14.0-hd50102c_0.conda - sha256: f5b91329ed59ffc0be8747784c6e4cc7e56250c54032883a83bc11808ef6a87e - md5: f093a11dcf3cdcca010b20a818fcc6dc + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 54105 + timestamp: 1729089471124 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda + sha256: 44e541b4821c96b28b27fef5630883a60ce4fee91fd9c79f25a199f8f73f337b + md5: 4a55d9e169114b2b90d3ec4604cd7bbf depends: - - __osx >=11.0 - - libcurl >=8.10.1,<9.0a0 - - libcxx >=17 - - openssl >=3.3.2,<4.0a0 + - libgfortran5 13.2.0 hf226fd6_3 arch: arm64 platform: osx - license: MIT - license_family: MIT - size: 294299 - timestamp: 1728054014060 -- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.10.0-h113e628_0.conda - sha256: 286b31616c191486626cb49e9ceb5920d29394b9e913c23adb7eb637629ba4de - md5: 73f73f60854f325a55f1d31459f2ab73 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 110233 + timestamp: 1707330749033 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hd5240d6_1.conda + sha256: d149a37ca73611e425041f33b9d8dbed6e52ec506fe8cc1fc0ee054bddeb6d5d + md5: 9822b874ea29af082e5d36098d25427d depends: - - __glibc >=2.17,<3.0.a0 - - azure-core-cpp >=1.14.0,<1.14.1.0a0 - - libgcc >=13 - - libstdcxx >=13 - - openssl >=3.3.2,<4.0a0 + - libgcc >=14.2.0 + constrains: + - libgfortran 14.2.0 arch: x86_64 platform: linux - license: MIT - license_family: MIT - size: 232351 - timestamp: 1728486729511 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-identity-cpp-1.10.0-h47b0b28_0.conda - sha256: 1c72423b9beba167d2f01b80dc204da77240a8266f1edb3d89510c852b300d69 - md5: 94e73a7877743a85c57091d8afab2348 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 1462645 + timestamp: 1729027735353 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_1.conda + sha256: a87ff46d19916403cbf68cf1d785bf56b4d1ab7b2552468d2ea775d70782493f + md5: fc068e11b10e18f184e027782baa12b6 depends: - - azure-core-cpp >=1.14.0,<1.14.1.0a0 - - libgcc >=13 - - libstdcxx >=13 - - openssl >=3.3.2,<4.0a0 + - libgcc >=14.2.0 + constrains: + - libgfortran 14.2.0 arch: aarch64 platform: linux - license: MIT - license_family: MIT - size: 217132 - timestamp: 1728488096615 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.10.0-hc602bab_0.conda - sha256: bde446b916fff5150606f8ed3e6058ffc55a3aa72381e46f1ab346590b1ae40a - md5: d7b71593a937459f2d4b67e1a4727dc2 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 1102158 + timestamp: 1729089452640 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda + sha256: bafc679eedb468a86aa4636061c55966186399ee0a04b605920d208d97ac579a + md5: 66ac81d54e95c534ae488726c1f698ea depends: - - __osx >=11.0 - - azure-core-cpp >=1.14.0,<1.14.1.0a0 - - libcxx >=17 - - openssl >=3.3.2,<4.0a0 + - llvm-openmp >=8.0.0 + constrains: + - libgfortran 5.0.0 13_2_0_*_3 arch: arm64 platform: osx - license: MIT - license_family: MIT - size: 166907 - timestamp: 1728486882502 -- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.13.0-h3cf044e_1.conda - sha256: 2606260e5379eed255bcdc6adc39b93fb31477337bcd911c121fc43cd29bf394 - md5: 7eb66060455c7a47d9dcdbfa9f46579b + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 997381 + timestamp: 1707330687590 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h77fa898_1.conda + sha256: 1911c29975ec99b6b906904040c855772ccb265a1c79d5d75c8ceec4ed89cd63 + md5: cc3573974587f12dda90d96e3e55a702 depends: - - __glibc >=2.17,<3.0.a0 - - azure-core-cpp >=1.14.0,<1.14.1.0a0 - - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 - - libgcc >=13 - - libstdcxx >=13 + - _libgcc_mutex 0.1 conda_forge arch: x86_64 platform: linux - license: MIT - license_family: MIT - size: 549342 - timestamp: 1728578123088 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-blobs-cpp-12.13.0-h185ecfd_1.conda - sha256: 280ec70009a92626054f58e45b168fce393e71a9710587488bd8401628cda481 - md5: 221e1e5ecb2643e113f32b3229d5ba33 - depends: - - azure-core-cpp >=1.14.0,<1.14.1.0a0 - - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 - - libgcc >=13 - - libstdcxx >=13 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 460992 + timestamp: 1729027639220 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_1.conda + sha256: 5aa53874a5e57a00f2e0c2e2910684eb674429cd5fcb803619b226a73e89aedf + md5: 376f0e73abbda6d23c0cb749adc195ef arch: aarch64 platform: linux - license: MIT - license_family: MIT - size: 502934 - timestamp: 1728580241002 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-blobs-cpp-12.13.0-h7585a09_1.conda - sha256: 08d52d130addc0fb55d5ba10d9fa483e39be25d69bac7f4c676c2c3069207590 - md5: 704238ef05d46144dae2e6b5853df8bc - depends: - - __osx >=11.0 - - azure-core-cpp >=1.14.0,<1.14.1.0a0 - - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 - - libcxx >=17 - arch: arm64 - platform: osx - license: MIT - license_family: MIT - size: 438636 - timestamp: 1728578216193 -- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-common-cpp-12.8.0-h736e048_1.conda - sha256: 273475f002b091b66ce7366da04bf164c3732c03f8692ab2ee2d23335b6a82ba - md5: 13de36be8de3ae3f05ba127631599213 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 463521 + timestamp: 1729089357313 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-28_h7ac8fdf_openblas.conda + build_number: 28 + sha256: 9530e6840690b78360946390a1d29624734a6b624f02c26631fb451592cbb8ef + md5: 069f40bfbf1dc55c83ddb07fc6a6ef8d depends: - - __glibc >=2.17,<3.0.a0 - - azure-core-cpp >=1.14.0,<1.14.1.0a0 - - libgcc >=13 - - libstdcxx >=13 - - libxml2 >=2.12.7,<3.0a0 - - openssl >=3.3.2,<4.0a0 + - libblas 3.9.0 28_h59b9bed_openblas + constrains: + - libcblas =3.9.0=28*_openblas + - blas =2.128=openblas + - liblapacke =3.9.0=28*_openblas arch: x86_64 platform: linux - license: MIT - license_family: MIT - size: 149312 - timestamp: 1728563338704 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-common-cpp-12.8.0-h1b94036_1.conda - sha256: 146e76aac169e3dbdce5d3b142b7930ac643795c765e7655d1989905ec7d3231 - md5: 793b1080ab2d958980f137a8643cd6e8 + license: BSD-3-Clause + license_family: BSD + size: 16553 + timestamp: 1738114053556 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-28_h411afd4_openblas.conda + build_number: 28 + sha256: 1290ce1071a586e22bdd7d8f4c48000cc0005f0a67660be150d1ea5c6092129f + md5: bc4c5ee31476521e202356b56bba6077 depends: - - azure-core-cpp >=1.14.0,<1.14.1.0a0 - - libgcc >=13 - - libstdcxx >=13 - - libxml2 >=2.12.7,<3.0a0 - - openssl >=3.3.2,<4.0a0 + - libblas 3.9.0 28_h1a9f1db_openblas + constrains: + - liblapacke =3.9.0=28*_openblas + - libcblas =3.9.0=28*_openblas + - blas =2.128=openblas arch: aarch64 platform: linux - license: MIT - license_family: MIT - size: 140832 - timestamp: 1728565334900 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-common-cpp-12.8.0-h9ca1f76_1.conda - sha256: 77ab04e8fe5636a2de9c718f72a43645f7502cd208868c8a91ffba385547d585 - md5: 7a187cd7b1445afc80253bb186a607cc + license: BSD-3-Clause + license_family: BSD + size: 16637 + timestamp: 1738114094310 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-28_hc9a63f6_openblas.conda + build_number: 28 + sha256: 79c75a02bff20f8b001e6aecfee8d22a51552c3986e7037fca68e5ed071cc213 + md5: 45f26652530b558c21083ceb7adaf273 depends: - - __osx >=11.0 - - azure-core-cpp >=1.14.0,<1.14.1.0a0 - - libcxx >=17 - - libxml2 >=2.12.7,<3.0a0 - - openssl >=3.3.2,<4.0a0 + - libblas 3.9.0 28_h10e41b3_openblas + constrains: + - blas =2.128=openblas + - liblapacke =3.9.0=28*_openblas + - libcblas =3.9.0=28*_openblas arch: arm64 platform: osx - license: MIT - license_family: MIT - size: 121278 - timestamp: 1728563418777 -- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-files-datalake-cpp-12.12.0-ha633028_1.conda - sha256: 5371e4f3f920933bb89b926a85a67f24388227419abd6e99f6086481e5e8d5f2 - md5: 7c1980f89dd41b097549782121a73490 + license: BSD-3-Clause + license_family: BSD + size: 16793 + timestamp: 1738114407021 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda + sha256: cad52e10319ca4585bc37f0bc7cce99ec7c15dc9168e42ccb96b741b0a27db3f + md5: 42d5b6a0f30d3c10cd88cb8584fda1cb depends: - __glibc >=2.17,<3.0.a0 - - azure-core-cpp >=1.14.0,<1.14.1.0a0 - - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 - - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 - libgcc >=13 - - libstdcxx >=13 arch: x86_64 platform: linux - license: MIT - license_family: MIT - size: 287366 - timestamp: 1728729530295 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-files-datalake-cpp-12.12.0-h37d6d07_1.conda - sha256: 4079c617a75682e49bae63670d58fd6078ccfbbe55ca1f994acab3a74ab6bbcc - md5: b724f3b4b7f4e9b36c58cbe3ed8610a2 - depends: - - azure-core-cpp >=1.14.0,<1.14.1.0a0 - - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 - - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 + license: 0BSD + size: 111357 + timestamp: 1738525339684 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.4-h86ecc28_0.conda + sha256: 96413664f0fade54a4931940d18749cfc8e6308349dbb0cb83adb2394ca1f730 + md5: b88244e0a115cc34f7fbca9b11248e76 + depends: - libgcc >=13 - - libstdcxx >=13 arch: aarch64 platform: linux - license: MIT - license_family: MIT - size: 260547 - timestamp: 1728730924071 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-files-datalake-cpp-12.12.0-hcdd55da_1.conda - sha256: f48523f8aa0b5b80f45a92f0556b388dd96f44ac2dc2f44a01d08c1822eec97d - md5: c49fbc5233fcbaa86391162ff1adef38 + license: 0BSD + size: 124197 + timestamp: 1738528201520 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.4-h39f12f2_0.conda + sha256: 560c59d3834cc652a84fb45531bd335ad06e271b34ebc216e380a89798fe8e2c + md5: e3fd1f8320a100f2b210e690a57cd615 depends: - __osx >=11.0 - - azure-core-cpp >=1.14.0,<1.14.1.0a0 - - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 - - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 - - libcxx >=17 arch: arm64 platform: osx - license: MIT - license_family: MIT - size: 196032 - timestamp: 1728729672889 -- conda: https://conda.anaconda.org/conda-forge/noarch/backoff-2.2.1-pyhd8ed1ab_1.conda - sha256: f334115c6b0c6c2cd0d28595365f205ec7eaa60bcc5ff91a75d7245f728be820 - md5: a38b801f2bcc12af80c2e02a9e4ce7d9 - depends: - - python >=3.9 - license: MIT - license_family: MIT - size: 18816 - timestamp: 1733771192649 -- conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py312h2ec8cdc_2.conda - sha256: f2a59ccd20b4816dea9a2a5cb917eb69728271dbf1aeab4e1b7e609330a50b6f - md5: b0b867af6fc74b2a0aa206da29c0f3cf - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libstdcxx >=13 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - constrains: - - libbrotlicommon 1.1.0 hb9d3cd8_2 - arch: x86_64 - platform: linux - license: MIT - license_family: MIT - size: 349867 - timestamp: 1725267732089 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/brotli-python-1.1.0-py312h6f74592_2.conda - sha256: 9736bf660a0e4260c68f81d2635b51067f817813e6490ac9e8abd9a835dcbf6d - md5: e1e9727063057168d95f27a032acd0a4 - depends: - - libgcc >=13 - - libstdcxx >=13 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - constrains: - - libbrotlicommon 1.1.0 h86ecc28_2 - arch: aarch64 - platform: linux - license: MIT - license_family: MIT - size: 356878 - timestamp: 1725267878508 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py312hde4cb15_2.conda - sha256: 254b411fa78ccc226f42daf606772972466f93e9bc6895eabb4cfda22f5178af - md5: a83c2ef76ccb11bc2349f4f17696b15d - depends: - - __osx >=11.0 - - libcxx >=17 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - constrains: - - libbrotlicommon 1.1.0 hd74edd7_2 - arch: arm64 - platform: osx - license: MIT - license_family: MIT - size: 339360 - timestamp: 1725268143995 -- conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda - sha256: 5ced96500d945fb286c9c838e54fa759aa04a7129c59800f0846b4335cee770d - md5: 62ee74e96c5ebb0af99386de58cf9553 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc-ng >=12 - arch: x86_64 - platform: linux - license: bzip2-1.0.6 - license_family: BSD - size: 252783 - timestamp: 1720974456583 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h68df207_7.conda - sha256: 2258b0b33e1cb3a9852d47557984abb6e7ea58e3d7f92706ec1f8e879290c4cb - md5: 56398c28220513b9ea13d7b450acfb20 - depends: - - libgcc-ng >=12 - arch: aarch64 - platform: linux - license: bzip2-1.0.6 - license_family: BSD - size: 189884 - timestamp: 1720974504976 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda - sha256: adfa71f158cbd872a36394c56c3568e6034aa55c623634b37a4836bd036e6b91 - md5: fc6948412dbbbe9a4c9ddbbcfe0a79ab - depends: - - __osx >=11.0 - arch: arm64 - platform: osx - license: bzip2-1.0.6 - license_family: BSD - size: 122909 - timestamp: 1720974522888 -- conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.4-hb9d3cd8_0.conda - sha256: d4f28d87b6339b94f74762c0076e29c8ef8ddfff51a564a92da2843573c18320 - md5: e2775acf57efd5af15b8e3d1d74d72d3 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - arch: x86_64 - platform: linux - license: MIT - license_family: MIT - size: 206085 - timestamp: 1734208189009 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/c-ares-1.34.4-h86ecc28_0.conda - sha256: 1187a41d4bb2afe02cb18690682edc98d1e9f5e0ccda638d8704a75ea1875bbe - md5: 356da36f35d36dcba16e43f1589d4e39 - depends: - - libgcc >=13 - arch: aarch64 - platform: linux - license: MIT - license_family: MIT - size: 215979 - timestamp: 1734208193181 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.4-h5505292_0.conda - sha256: 09c0c8476e50b2955f474a4a1c17c4c047dd52993b5366b6ea8e968e583b921f - md5: c1c999a38a4303b29d75c636eaa13cf9 - depends: - - __osx >=11.0 - arch: arm64 - platform: osx - license: MIT - license_family: MIT - size: 179496 - timestamp: 1734208291879 -- conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2025.1.31-hbcca054_0.conda - sha256: bf832198976d559ab44d6cdb315642655547e26d826e34da67cbee6624cda189 - md5: 19f3a56f68d2fd06c516076bff482c52 - arch: x86_64 - platform: linux - license: ISC - size: 158144 - timestamp: 1738298224464 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2025.1.31-hcefe29a_0.conda - sha256: 66c6408ee461593cfdb2d78d82e6ed74d04a04ccb51df3ef8a5f35148c9c6eec - md5: 462cb166cd2e26a396f856510a3aff67 - arch: aarch64 - platform: linux - license: ISC - size: 158290 - timestamp: 1738299057652 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2025.1.31-hf0a4a13_0.conda - sha256: 7e12816618173fe70f5c638b72adf4bfd4ddabf27794369bb17871c5bb75b9f9 - md5: 3569d6a9141adc64d2fe4797f3289e06 - arch: arm64 - platform: osx - license: ISC - size: 158425 - timestamp: 1738298167688 -- conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.12.14-pyhd8ed1ab_0.conda - sha256: 048c16a9cbcb1fbad02083414d3bc7c1d0eea4b39aee6aa6bf8d1d5089ca8bad - md5: 6feb87357ecd66733be3279f16a8c400 - depends: - - python >=3.9 - license: ISC - size: 161642 - timestamp: 1734380604767 -- conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py312h06ac9bb_0.conda - sha256: cba6ea83c4b0b4f5b5dc59cb19830519b28f95d7ebef7c9c5cf1c14843621457 - md5: a861504bbea4161a9170b85d4d2be840 - depends: - - __glibc >=2.17,<3.0.a0 - - libffi >=3.4,<4.0a0 - - libgcc >=13 - - pycparser - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - arch: x86_64 - platform: linux - license: MIT - license_family: MIT - size: 294403 - timestamp: 1725560714366 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cffi-1.17.1-py312hac81daf_0.conda - sha256: 1162e3ca039e7ca7c0e78f0a020ed1bde968096841b663e3f393c966eb82f0f0 - md5: 1a256e5581b1099e9295cb84d53db3ea - depends: - - libffi >=3.4,<4.0a0 - - libgcc >=13 - - pycparser - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - arch: aarch64 - platform: linux - license: MIT - license_family: MIT - size: 312892 - timestamp: 1725561779888 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.1-py312h0fad829_0.conda - sha256: 8d91a0d01358b5c3f20297c6c536c5d24ccd3e0c2ddd37f9d0593d0f0070226f - md5: 19a5456f72f505881ba493979777b24e - depends: - - __osx >=11.0 - - libffi >=3.4,<4.0a0 - - pycparser - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - arch: arm64 - platform: osx - license: MIT - license_family: MIT - size: 281206 - timestamp: 1725560813378 -- conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda - sha256: 4e0ee91b97e5de3e74567bdacea27f0139709fceca4db8adffbe24deffccb09b - md5: e83a31202d1c0a000fce3e9cf3825875 - depends: - - python >=3.9 - license: MIT - license_family: MIT - size: 47438 - timestamp: 1735929811779 -- conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda - sha256: c920d23cd1fcf565031c679adb62d848af60d6fbb0edc2d50ba475cea4f0d8ab - md5: f22f4d4970e09d68a10b922cbb0408d3 - depends: - - __unix - - python >=3.9 - license: BSD-3-Clause - license_family: BSD - size: 84705 - timestamp: 1734858922844 -- conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - sha256: ab29d57dc70786c1269633ba3dff20288b81664d3ff8d21af995742e2bb03287 - md5: 962b9857ee8e7018c22f2776ffa0b2d7 - depends: - - python >=3.9 - license: BSD-3-Clause - license_family: BSD - size: 27011 - timestamp: 1733218222191 -- conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda - sha256: 7e09bd083a609138b780fcc4535924cb96814d2c908a36d4c64a2ba9ee3efe7f - md5: 3e087f072ce03c43a9b60522f5d0ca2f - depends: - - aiohttp - - dill >=0.3.0,<0.3.8 - - fsspec >=2021.11.1 - - huggingface_hub >=0.14.0,<1.0.0 - - importlib-metadata - - multiprocess - - numpy >=1.17 - - packaging - - pandas - - pyarrow >=8.0.0 - - python >=3.8.0 - - python-xxhash - - pyyaml >=5.1 - - requests >=2.19.0 - - tqdm >=4.62.1 - license: Apache-2.0 - license_family: Apache - size: 347303 - timestamp: 1691593908658 -- conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.18-pyhd8ed1ab_0.conda - sha256: d614bcff10696f1efc714df07651b50bf3808401fcc03814309ecec242cc8870 - md5: 0cef44b1754ae4d6924ac0eef6b9fdbe - depends: - - python >=3.9 - - wrapt <2,>=1.10 - license: MIT - license_family: MIT - size: 14382 - timestamp: 1737987072859 -- conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda - sha256: 4ff20c6be028be2825235631c45d9e4a75bca1de65f8840c02dfb28ea0137c45 - md5: 5e4f3466526c52bc9af2d2353a1460bd - depends: - - python >=3.7 - license: BSD-3-Clause - license_family: BSD - size: 87553 - timestamp: 1690101185422 -- conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda - sha256: 3ec40ccf63f2450c5e6c7dd579e42fc2e97caf0d8cd4ba24aa434e6fc264eda0 - md5: 5fbd60d61d21b4bd2f9d7a48fe100418 - depends: - - python >=3.9,<4.0.0 - - sniffio - constrains: - - aioquic >=1.0.0 - - wmi >=1.5.1 - - httpx >=0.26.0 - - trio >=0.23 - - cryptography >=43 - - httpcore >=1.0.0 - - idna >=3.7 - - h2 >=4.1.0 - license: ISC - license_family: OTHER - size: 172172 - timestamp: 1733256829961 -- conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda - sha256: b91a19eb78edfc2dbb36de9a67f74ee2416f1b5273dd7327abe53f2dbf864736 - md5: da16dd3b0b71339060cd44cb7110ddf9 - depends: - - dnspython >=2.0.0 - - idna >=2.0.0 - - python >=3.9 - license: Unlicense - size: 44401 - timestamp: 1733300827551 -- conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_1.conda - sha256: e0d0fdf587aa0ed0ff08b2bce3ab355f46687b87b0775bfba01cc80a859ee6a2 - md5: 0794f8807ff2c6f020422cacb1bd7bfa - depends: - - email-validator >=2.2.0,<2.2.1.0a0 - license: Unlicense - size: 6552 - timestamp: 1733300828176 -- conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda - sha256: cbde2c64ec317118fc06b223c5fd87c8a680255e7348dd60e7b292d2e103e701 - md5: a16662747cdeb9abbac74d0057cc976e - depends: - - python >=3.9 - license: MIT and PSF-2.0 - size: 20486 - timestamp: 1733208916977 -- conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.8-pyh29332c3_0.conda - sha256: 5e1e3d5cf306d9b3b5fe0d45a9e8440e8770ba7e4a5fac1ac847ca693b0dc064 - md5: 753382711adab47269f0bfe994906bc4 - depends: - - python >=3.9 - - starlette >=0.40.0,<0.46.0 - - typing_extensions >=4.8.0 - - pydantic >=1.7.4,!=1.8,!=1.8.1,!=2.0.0,!=2.0.1,!=2.1.0,<3.0.0 - - email_validator >=2.0.0 - - fastapi-cli >=0.0.5 - - httpx >=0.23.0 - - jinja2 >=3.1.5 - - python-multipart >=0.0.18 - - uvicorn-standard >=0.12.0 - - python - license: MIT - license_family: MIT - size: 77940 - timestamp: 1738326226051 -- conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.7-pyhd8ed1ab_0.conda - sha256: 300683731013b7221922339cd40430bb3c2ddeeb658fd7e37f5099ffe64e4db0 - md5: d960e0ea9e1c561aa928f6c4439f04c7 - depends: - - python >=3.9 - - rich-toolkit >=0.11.1 - - typer >=0.12.3 - - uvicorn-standard >=0.15.0 - license: MIT - license_family: MIT - size: 15546 - timestamp: 1734302408607 -- conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.17.0-pyhd8ed1ab_0.conda - sha256: 006d7e5a0c17a6973596dd86bfc80d74ce541144d2aee2d22d46fd41df560a63 - md5: 7f402b4a1007ee355bc50ce4d24d4a57 - depends: - - python >=3.9 - license: Unlicense - size: 17544 - timestamp: 1737517924333 -- conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.12.1-h267a509_2.conda - sha256: b2e3c449ec9d907dd4656cb0dc93e140f447175b125a3824b31368b06c666bb6 - md5: 9ae35c3d96db2c94ce0cef86efdfa2cb - depends: - - libgcc-ng >=12 - - libpng >=1.6.39,<1.7.0a0 - - libzlib >=1.2.13,<2.0.0a0 - arch: x86_64 - platform: linux - license: GPL-2.0-only OR FTL - size: 634972 - timestamp: 1694615932610 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/freetype-2.12.1-hf0a5ef3_2.conda - sha256: 7af93030f4407f076dce181062360efac2cd54dce863b5d7765287a6f5382537 - md5: a5ab74c5bd158c3d5532b66d8d83d907 - depends: - - libgcc-ng >=12 - - libpng >=1.6.39,<1.7.0a0 - - libzlib >=1.2.13,<2.0.0a0 - arch: aarch64 - platform: linux - license: GPL-2.0-only OR FTL - size: 642092 - timestamp: 1694617858496 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/freetype-2.12.1-hadb7bae_2.conda - sha256: 791673127e037a2dc0eebe122dc4f904cb3f6e635bb888f42cbe1a76b48748d9 - md5: e6085e516a3e304ce41a8ee08b9b89ad - depends: - - libpng >=1.6.39,<1.7.0a0 - - libzlib >=1.2.13,<2.0.0a0 - arch: arm64 - platform: osx - license: GPL-2.0-only OR FTL - size: 596430 - timestamp: 1694616332835 -- conda: https://conda.anaconda.org/conda-forge/linux-64/frozenlist-1.5.0-py312h178313f_1.conda - sha256: 501e20626798b6d7f130f4db0fb02c0385d8f4c11ca525925602a4208afb343f - md5: fb986e1c089021979dc79606af78ef8f - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 60939 - timestamp: 1737645356438 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/frozenlist-1.5.0-py312hcc812fe_1.conda - sha256: 84895c5e207e0cb2044f3607fb36b82eb8cb45f0a009d03dc04c777ed975757d - md5: 9090bf5c43e8011fb2e9a82a1db20cc3 - depends: - - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 60472 - timestamp: 1737645511278 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/frozenlist-1.5.0-py312h998013c_1.conda - sha256: d503ac8c050abdbd129253973f23be34944978d510de78ef5a3e6aa1e3d9552d - md5: 5eb3715c7e3fa9b533361375bfefe6ee - depends: - - __osx >=11.0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: APACHE - size: 57256 - timestamp: 1737645503377 -- conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2025.2.0-pyhd8ed1ab_0.conda - sha256: 7433b8469074985b651693778ec6f03d2a23fad9919a515e3b8545996b5e721a - md5: d9ea16b71920b03beafc17fcca16df90 - depends: - - python >=3.9 - license: BSD-3-Clause - license_family: BSD - size: 138186 - timestamp: 1738501352608 -- conda: https://conda.anaconda.org/conda-forge/linux-64/gflags-2.2.2-h5888daf_1005.conda - sha256: 6c33bf0c4d8f418546ba9c250db4e4221040936aef8956353bc764d4877bc39a - md5: d411fc29e338efb48c5fd4576d71d881 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libstdcxx >=13 - arch: x86_64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 119654 - timestamp: 1726600001928 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gflags-2.2.2-h5ad3122_1005.conda - sha256: 28fe6b40b20454106d5e4ef6947cf298c13cc72a46347bbc49b563cd3a463bfa - md5: 4ff634d515abbf664774b5e1168a9744 - depends: - - libgcc >=13 - - libstdcxx >=13 - arch: aarch64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 106638 - timestamp: 1726599967617 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/gflags-2.2.2-hf9b8971_1005.conda - sha256: fd56ed8a1dab72ab90d8a8929b6f916a6d9220ca297ff077f8f04c5ed3408e20 - md5: 57a511a5905caa37540eb914dfcbf1fb - depends: - - __osx >=11.0 - - libcxx >=17 - arch: arm64 - platform: osx - license: BSD-3-Clause - license_family: BSD - size: 82090 - timestamp: 1726600145480 -- conda: https://conda.anaconda.org/conda-forge/linux-64/glog-0.7.1-hbabe93e_0.conda - sha256: dc824dc1d0aa358e28da2ecbbb9f03d932d976c8dca11214aa1dcdfcbd054ba2 - md5: ff862eebdfeb2fd048ae9dc92510baca - depends: - - gflags >=2.2.2,<2.3.0a0 - - libgcc-ng >=12 - - libstdcxx-ng >=12 - arch: x86_64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 143452 - timestamp: 1718284177264 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/glog-0.7.1-h468a4a4_0.conda - sha256: 920795d4f775a9f47e91c2223e64847f0b212b3fedc56c137c5889e32efe8ba0 - md5: 08940a32c6ced3703d1412dd37df4f62 - depends: - - gflags >=2.2.2,<2.3.0a0 - - libgcc-ng >=12 - - libstdcxx-ng >=12 - arch: aarch64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 145811 - timestamp: 1718284208668 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/glog-0.7.1-heb240a5_0.conda - sha256: 9fc77de416953aa959039db72bc41bfa4600ae3ff84acad04a7d0c1ab9552602 - md5: fef68d0a95aa5b84b5c1a4f6f3bf40e1 - depends: - - __osx >=11.0 - - gflags >=2.2.2,<2.3.0a0 - - libcxx >=16 - arch: arm64 - platform: osx - license: BSD-3-Clause - license_family: BSD - size: 112215 - timestamp: 1718284365403 -- conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda - sha256: d8d19575a827f2c62500949b9536efdd6b5406c9f546a73b6a87ac90b03a5875 - md5: 4861e30ff0cd566ea6fb4593e3b7c22a - depends: - - protobuf >=3.20.2,<6.0.0.dev0,!=3.20.0,!=3.20.1,!=4.21.1,!=4.21.2,!=4.21.3,!=4.21.4,!=4.21.5 - - python >=3.9 - license: Apache-2.0 - license_family: APACHE - size: 116522 - timestamp: 1731459019854 -- conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda - sha256: 622516185a7c740d5c7f27016d0c15b45782c1501e5611deec63fd70344ce7c8 - md5: 7ee49e89531c0dcbba9466f6d115d585 - depends: - - python >=3.9 - - typing_extensions - license: MIT - license_family: MIT - size: 51846 - timestamp: 1733327599467 -- conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda - sha256: 0aa1cdc67a9fe75ea95b5644b734a756200d6ec9d0dff66530aec3d1c1e9df75 - md5: b4754fb1bdcb70c8fd54f918301582c6 - depends: - - hpack >=4.1,<5 - - hyperframe >=6.1,<7 - - python >=3.9 - license: MIT - license_family: MIT - size: 53888 - timestamp: 1738578623567 -- conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda - sha256: 6ad78a180576c706aabeb5b4c8ceb97c0cb25f1e112d76495bff23e3779948ba - md5: 0a802cb9888dd14eeefc611f05c40b6e - depends: - - python >=3.9 - license: MIT - license_family: MIT - size: 30731 - timestamp: 1737618390337 -- conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - sha256: c84d012a245171f3ed666a8bf9319580c269b7843ffa79f26468842da3abd5df - md5: 2ca8e6dbc86525c8b95e3c0ffa26442e - depends: - - python >=3.8 - - h11 >=0.13,<0.15 - - h2 >=3,<5 - - sniffio 1.* - - anyio >=3.0,<5.0 - - certifi - license: BSD-3-Clause - license_family: BSD - size: 48959 - timestamp: 1731707562362 -- conda: https://conda.anaconda.org/conda-forge/linux-64/httptools-0.6.4-py312h66e93f0_0.conda - sha256: 621e7e050b888e5239d33e37ea72d6419f8367e5babcad38b755586f20264796 - md5: 8b1160b32557290b64d5be68db3d996d - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - arch: x86_64 - platform: linux - license: MIT - license_family: MIT - size: 101872 - timestamp: 1732707756745 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/httptools-0.6.4-py312hb2c0f52_0.conda - sha256: 0bd1f30224af142711d11033a7469ae402a1147143f399f7341bbc1d8178c722 - md5: 5e70a6de59352f9a52e9caa7f3447390 - depends: - - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - arch: aarch64 - platform: linux - license: MIT - license_family: MIT - size: 101255 - timestamp: 1732707891645 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/httptools-0.6.4-py312hea69d52_0.conda - sha256: 5e93cda79e32e8c0039e05ea1939e688da336187dab025f699b42ef529e848be - md5: e1747a8e8d2aca5499aaea9993bf31ff - depends: - - __osx >=11.0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - arch: arm64 - platform: osx - license: MIT - license_family: MIT - size: 85623 - timestamp: 1732707871414 -- conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - sha256: cd0f1de3697b252df95f98383e9edb1d00386bfdd03fdf607fa42fe5fcb09950 - md5: d6989ead454181f4f9bc987d3dc4e285 - depends: - - anyio - - certifi - - httpcore 1.* - - idna - - python >=3.9 - license: BSD-3-Clause - license_family: BSD - size: 63082 - timestamp: 1733663449209 -- conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.28.0-pyhd8ed1ab_0.conda - sha256: 3c48ffeb8a425eeba5dfa81a4da4b738a12d2104da0c3b443185029718dd6e48 - md5: 317f31a6fe151756ef10e7ed97a15f8a - depends: - - filelock - - fsspec >=2023.5.0 - - packaging >=20.9 - - python >=3.9 - - pyyaml >=5.1 - - requests - - tqdm >=4.42.1 - - typing-extensions >=3.7.4.3 - - typing_extensions >=3.7.4.3 - license: Apache-2.0 - license_family: APACHE - size: 284361 - timestamp: 1738349452337 -- conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - sha256: 77af6f5fe8b62ca07d09ac60127a30d9069fdc3c68d6b256754d0ffb1f7779f8 - md5: 8e6923fc12f1fe8f8c4e5c9f343256ac - depends: - - python >=3.9 - license: MIT - license_family: MIT - size: 17397 - timestamp: 1737618427549 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda - sha256: 813298f2e54ef087dbfc9cc2e56e08ded41de65cff34c639cc8ba4e27e4540c9 - md5: 268203e8b983fddb6412b36f2024e75c - depends: - - libgcc-ng >=12 - - libstdcxx-ng >=12 - arch: aarch64 - platform: linux - license: MIT - license_family: MIT - size: 12282786 - timestamp: 1720853454991 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda - sha256: 9ba12c93406f3df5ab0a43db8a4b4ef67a5871dfd401010fbe29b218b2cbe620 - md5: 5eb22c1d7b3fc4abb50d92d621583137 - depends: - - __osx >=11.0 - arch: arm64 - platform: osx - license: MIT - license_family: MIT - size: 11857802 - timestamp: 1720853997952 -- conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - sha256: d7a472c9fd479e2e8dcb83fb8d433fce971ea369d704ece380e876f9c3494e87 - md5: 39a4f67be3286c86d696df570b1201b7 - depends: - - python >=3.9 - license: BSD-3-Clause - license_family: BSD - size: 49765 - timestamp: 1733211921194 -- conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_1.conda - sha256: 13766b88fc5b23581530d3a0287c0c58ad82f60401afefab283bf158d2be55a9 - md5: 315607a3030ad5d5227e76e0733798ff - depends: - - python >=3.9 - - zipp >=0.5 - license: Apache-2.0 - license_family: APACHE - size: 28623 - timestamp: 1733223207185 -- conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.5-pyhd8ed1ab_0.conda - sha256: 98977694b9ecaa3218662f843425f39501f81973c450f995eec68f1803ed71c3 - md5: 2752a6ed44105bfb18c9bef1177d9dcd - depends: - - markupsafe >=2.0 - - python >=3.9 - license: BSD-3-Clause - license_family: BSD - size: 112561 - timestamp: 1734824044952 -- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - sha256: 19d8bd5bb2fde910ec59e081eeb59529491995ce0d653a5209366611023a0b3a - md5: 4ebae00eae9705b0c3d6d1018a81d047 - depends: - - importlib-metadata >=4.8.3 - - jupyter_core >=4.12,!=5.0.* - - python >=3.9 - - python-dateutil >=2.8.2 - - pyzmq >=23.0 - - tornado >=6.2 - - traitlets >=5.3 - license: BSD-3-Clause - license_family: BSD - size: 106342 - timestamp: 1733441040958 -- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - sha256: 732b1e8536bc22a5a174baa79842d79db2f4956d90293dd82dc1b3f6099bcccd - md5: 0a2980dada0dd7fd0998f0342308b1b1 - depends: - - __unix - - platformdirs >=2.5 - - python >=3.8 - - traitlets >=5.3 - license: BSD-3-Clause - license_family: BSD - size: 57671 - timestamp: 1727163547058 -- conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 - sha256: 150c05a6e538610ca7c43beb3a40d65c90537497a4f6a5f4d15ec0451b6f5ebb - md5: 30186d27e2c9fa62b45fb1476b7200e3 - depends: - - libgcc-ng >=10.3.0 - arch: x86_64 - platform: linux - license: LGPL-2.1-or-later - size: 117831 - timestamp: 1646151697040 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/keyutils-1.6.1-h4e544f5_0.tar.bz2 - sha256: 6d4233d97a9b38acbb26e1268bcf8c10a8e79c2aed7e5a385ec3769967e3e65b - md5: 1f24853e59c68892452ef94ddd8afd4b - depends: - - libgcc-ng >=10.3.0 - arch: aarch64 - platform: linux - license: LGPL-2.1-or-later - size: 112327 - timestamp: 1646166857935 -- conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda - sha256: 99df692f7a8a5c27cd14b5fb1374ee55e756631b9c3d659ed3ee60830249b238 - md5: 3f43953b7d3fb3aaa1d0d0723d91e368 - depends: - - keyutils >=1.6.1,<2.0a0 - - libedit >=3.1.20191231,<3.2.0a0 - - libedit >=3.1.20191231,<4.0a0 - - libgcc-ng >=12 - - libstdcxx-ng >=12 - - openssl >=3.3.1,<4.0a0 - arch: x86_64 - platform: linux - license: MIT - license_family: MIT - size: 1370023 - timestamp: 1719463201255 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/krb5-1.21.3-h50a48e9_0.conda - sha256: 0ec272afcf7ea7fbf007e07a3b4678384b7da4047348107b2ae02630a570a815 - md5: 29c10432a2ca1472b53f299ffb2ffa37 - depends: - - keyutils >=1.6.1,<2.0a0 - - libedit >=3.1.20191231,<3.2.0a0 - - libedit >=3.1.20191231,<4.0a0 - - libgcc-ng >=12 - - libstdcxx-ng >=12 - - openssl >=3.3.1,<4.0a0 - arch: aarch64 - platform: linux - license: MIT - license_family: MIT - size: 1474620 - timestamp: 1719463205834 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda - sha256: 4442f957c3c77d69d9da3521268cad5d54c9033f1a73f99cde0a3658937b159b - md5: c6dc8a0fdec13a0565936655c33069a1 - depends: - - __osx >=11.0 - - libcxx >=16 - - libedit >=3.1.20191231,<3.2.0a0 - - libedit >=3.1.20191231,<4.0a0 - - openssl >=3.3.1,<4.0a0 - arch: arm64 - platform: osx - license: MIT - license_family: MIT - size: 1155530 - timestamp: 1719463474401 -- conda: https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.16-hb7c19ff_0.conda - sha256: 5c878d104b461b7ef922abe6320711c0d01772f4cd55de18b674f88547870041 - md5: 51bb7010fc86f70eee639b4bb7a894f5 - depends: - - libgcc-ng >=12 - - libjpeg-turbo >=3.0.0,<4.0a0 - - libtiff >=4.6.0,<4.8.0a0 - arch: x86_64 - platform: linux - license: MIT - license_family: MIT - size: 245247 - timestamp: 1701647787198 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lcms2-2.16-h922389a_0.conda - sha256: be4847b1014d3cbbc524a53bdbf66182f86125775020563e11d914c8468dd97d - md5: ffdd8267a04c515e7ce69c727b051414 - depends: - - libgcc-ng >=12 - - libjpeg-turbo >=3.0.0,<4.0a0 - - libtiff >=4.6.0,<4.8.0a0 - arch: aarch64 - platform: linux - license: MIT - license_family: MIT - size: 296219 - timestamp: 1701647961116 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.16-ha0e7c42_0.conda - sha256: 151e0c84feb7e0747fabcc85006b8973b22f5abbc3af76a9add0b0ef0320ebe4 - md5: 66f6c134e76fe13cce8a9ea5814b5dd5 - depends: - - libjpeg-turbo >=3.0.0,<4.0a0 - - libtiff >=4.6.0,<4.8.0a0 - arch: arm64 - platform: osx - license: MIT - license_family: MIT - size: 211959 - timestamp: 1701647962657 -- conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_2.conda - sha256: 7c91cea91b13f4314d125d1bedb9d03a29ebbd5080ccdea70260363424646dbe - md5: 048b02e3962f066da18efe3a21b77672 - depends: - - __glibc >=2.17,<3.0.a0 - constrains: - - binutils_impl_linux-64 2.43 - arch: x86_64 - platform: linux - license: GPL-3.0-only - license_family: GPL - size: 669211 - timestamp: 1729655358674 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_2.conda - sha256: 80ec7e8f006196808fac5bd4b3773a652847f97bbf08044cd87731424ac64f8b - md5: fcbde5ea19d55468953bf588770c0501 - constrains: - - binutils_impl_linux-aarch64 2.43 - arch: aarch64 - platform: linux - license: GPL-3.0-only - license_family: GPL - size: 698245 - timestamp: 1729655345825 -- conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 - sha256: cb55f36dcd898203927133280ae1dc643368af041a48bcf7c026acb7c47b0c12 - md5: 76bbff344f0134279f225174e9064c8f - depends: - - libgcc-ng >=12 - - libstdcxx-ng >=12 - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 281798 - timestamp: 1657977462600 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.0.0-h4de3ea5_0.tar.bz2 - sha256: 2d09ef9b7796d83364957e420b41c32d94e628c3f0520b61c332518a7b5cd586 - md5: 1a0ffc65e03ce81559dbcb0695ad1476 - depends: - - libgcc-ng >=12 - - libstdcxx-ng >=12 - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 262096 - timestamp: 1657978241894 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 - sha256: 6f068bb53dfb6147d3147d981bb851bb5477e769407ad4e6a68edf482fdcb958 - md5: de462d5aacda3b30721b512c5da4e742 - depends: - - libcxx >=13.0.1 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: Apache - size: 215721 - timestamp: 1657977558796 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda - sha256: 143a586aa67d50622ef703de57b9d43f44945836d6568e0e7aa174bd8c45e0d4 - md5: 488f260ccda0afaf08acb286db439c2f - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libstdcxx >=13 - constrains: - - libabseil-static =20240722.0=cxx17* - - abseil-cpp =20240722.0 - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 1311599 - timestamp: 1736008414161 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h18dbdb1_4.conda - sha256: bb6c5fb3b8de5f90735c5252b57efb3c268ee222c755569dac18065f05147670 - md5: 633b9fe454ffea2aaf29e191d946a83b - depends: - - libgcc >=13 - - libstdcxx >=13 - constrains: - - abseil-cpp =20240722.0 - - libabseil-static =20240722.0=cxx17* - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 1334844 - timestamp: 1736008472455 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_h07bc746_4.conda - sha256: 05fa5e5e908962b9c5aba95f962e2ca81d9599c4715aebe5e4ddb72b309d1770 - md5: c2d95bd7aa8d564a9bd7eca5e571a5b3 - depends: - - __osx >=11.0 - - libcxx >=18 - constrains: - - libabseil-static =20240722.0=cxx17* - - abseil-cpp =20240722.0 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: Apache - size: 1178260 - timestamp: 1736008642885 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-19.0.0-h00a82cf_8_cpu.conda - build_number: 8 - sha256: dcac39be95b9afe42bc9b7bfcfa258e31e413a4cb79c49f6707edf2838e8d64c - md5: 51e31b59290c09b58d290f66b908999b - depends: - - __glibc >=2.17,<3.0.a0 - - aws-crt-cpp >=0.29.9,<0.29.10.0a0 - - aws-sdk-cpp >=1.11.489,<1.11.490.0a0 - - azure-core-cpp >=1.14.0,<1.14.1.0a0 - - azure-identity-cpp >=1.10.0,<1.10.1.0a0 - - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 - - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 - - bzip2 >=1.0.8,<2.0a0 - - glog >=0.7.1,<0.8.0a0 - - libabseil * cxx17* - - libabseil >=20240722.0,<20240723.0a0 - - libbrotlidec >=1.1.0,<1.2.0a0 - - libbrotlienc >=1.1.0,<1.2.0a0 - - libgcc >=13 - - libgoogle-cloud >=2.34.0,<2.35.0a0 - - libgoogle-cloud-storage >=2.34.0,<2.35.0a0 - - libopentelemetry-cpp >=1.18.0,<1.19.0a0 - - libprotobuf >=5.28.3,<5.28.4.0a0 - - libre2-11 >=2024.7.2 - - libstdcxx >=13 - - libutf8proc >=2.10.0,<2.11.0a0 - - libzlib >=1.3.1,<2.0a0 - - lz4-c >=1.10.0,<1.11.0a0 - - orc >=2.0.3,<2.0.4.0a0 - - re2 - - snappy >=1.2.1,<1.3.0a0 - - zstd >=1.5.6,<1.6.0a0 - constrains: - - parquet-cpp <0.0a0 - - arrow-cpp <0.0a0 - - apache-arrow-proc =*=cpu - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 8969999 - timestamp: 1737824740139 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-19.0.0-h03ebaaf_8_cpu.conda - build_number: 8 - sha256: ca5db2ba71de0c4fb54ee12e3b841e3e90b988ae7a5935fae3cce90111b5cb6d - md5: 1ac6f73a63d715590a7ad0113a578762 - depends: - - aws-crt-cpp >=0.29.9,<0.29.10.0a0 - - aws-sdk-cpp >=1.11.489,<1.11.490.0a0 - - azure-core-cpp >=1.14.0,<1.14.1.0a0 - - azure-identity-cpp >=1.10.0,<1.10.1.0a0 - - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 - - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 - - bzip2 >=1.0.8,<2.0a0 - - glog >=0.7.1,<0.8.0a0 - - libabseil * cxx17* - - libabseil >=20240722.0,<20240723.0a0 - - libbrotlidec >=1.1.0,<1.2.0a0 - - libbrotlienc >=1.1.0,<1.2.0a0 - - libgcc >=13 - - libgoogle-cloud >=2.34.0,<2.35.0a0 - - libgoogle-cloud-storage >=2.34.0,<2.35.0a0 - - libopentelemetry-cpp >=1.18.0,<1.19.0a0 - - libprotobuf >=5.28.3,<5.28.4.0a0 - - libre2-11 >=2024.7.2 - - libstdcxx >=13 - - libutf8proc >=2.10.0,<2.11.0a0 - - libzlib >=1.3.1,<2.0a0 - - lz4-c >=1.10.0,<1.11.0a0 - - orc >=2.0.3,<2.0.4.0a0 - - re2 - - snappy >=1.2.1,<1.3.0a0 - - zstd >=1.5.6,<1.6.0a0 - constrains: - - arrow-cpp <0.0a0 - - apache-arrow-proc =*=cpu - - parquet-cpp <0.0a0 - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 8213318 - timestamp: 1737808895185 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-19.0.0-h819e3af_8_cpu.conda - build_number: 8 - sha256: 825afabd1c998dfddce9600584c492296a15219d441c6e3029e6c6228200d695 - md5: fbe0ce0ef6d386ab832ee5cca2ab3048 - depends: - - __osx >=11.0 - - aws-crt-cpp >=0.29.9,<0.29.10.0a0 - - aws-sdk-cpp >=1.11.489,<1.11.490.0a0 - - azure-core-cpp >=1.14.0,<1.14.1.0a0 - - azure-identity-cpp >=1.10.0,<1.10.1.0a0 - - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 - - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 - - bzip2 >=1.0.8,<2.0a0 - - glog >=0.7.1,<0.8.0a0 - - libabseil * cxx17* - - libabseil >=20240722.0,<20240723.0a0 - - libbrotlidec >=1.1.0,<1.2.0a0 - - libbrotlienc >=1.1.0,<1.2.0a0 - - libcxx >=18 - - libgoogle-cloud >=2.34.0,<2.35.0a0 - - libgoogle-cloud-storage >=2.34.0,<2.35.0a0 - - libopentelemetry-cpp >=1.18.0,<1.19.0a0 - - libprotobuf >=5.28.3,<5.28.4.0a0 - - libre2-11 >=2024.7.2 - - libutf8proc >=2.10.0,<2.11.0a0 - - libzlib >=1.3.1,<2.0a0 - - lz4-c >=1.10.0,<1.11.0a0 - - orc >=2.0.3,<2.0.4.0a0 - - re2 - - snappy >=1.2.1,<1.3.0a0 - - zstd >=1.5.6,<1.6.0a0 - constrains: - - arrow-cpp <0.0a0 - - apache-arrow-proc =*=cpu - - parquet-cpp <0.0a0 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: APACHE - size: 5573619 - timestamp: 1737806044972 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-19.0.0-hcb10f89_8_cpu.conda - build_number: 8 - sha256: bf8f64403685eb3ab6ebc5a25cc3a70431a1f822469bf96b0ee80c169deec0ac - md5: dafba09929a58e10bb8231ff7966e623 - depends: - - __glibc >=2.17,<3.0.a0 - - libarrow 19.0.0 h00a82cf_8_cpu - - libgcc >=13 - - libstdcxx >=13 - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 637555 - timestamp: 1737824783456 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-19.0.0-h3b568fd_8_cpu.conda - build_number: 8 - sha256: 154fe9bee1a1e3c96497fcbf3c01191965d5c4e9718dcbf8502035d7ff633499 - md5: e015edb6317c81893f9ce4865bbd55f4 - depends: - - libarrow 19.0.0 h03ebaaf_8_cpu - - libgcc >=13 - - libstdcxx >=13 - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 602892 - timestamp: 1737808980001 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-19.0.0-hf07054f_8_cpu.conda - build_number: 8 - sha256: 66ce35077dae435cd34644d53159af14afd62452eeec8f63cd55adb11e7f2780 - md5: 68cd272eccf7b4fcb0a3bab95e89e71e - depends: - - __osx >=11.0 - - libarrow 19.0.0 h819e3af_8_cpu - - libcxx >=18 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: APACHE - size: 500365 - timestamp: 1737806169385 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-19.0.0-hcb10f89_8_cpu.conda - build_number: 8 - sha256: dc4a0f13428c9bd9781e25b67f5f52a92b8c4beafa2435fe5127e9fac7969218 - md5: 66e19108e4597b9a35d0886607c2d8a8 - depends: - - __glibc >=2.17,<3.0.a0 - - libarrow 19.0.0 h00a82cf_8_cpu - - libarrow-acero 19.0.0 hcb10f89_8_cpu - - libgcc >=13 - - libparquet 19.0.0 h081d1f1_8_cpu - - libstdcxx >=13 - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 604335 - timestamp: 1737824891062 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-19.0.0-h3b568fd_8_cpu.conda - build_number: 8 - sha256: f038f979b3357124a548dd83880f94284355a90e4736caaabd23c750cf06eaa9 - md5: 03f35d7f35dae0e05f5f4f747d7eb6e7 - depends: - - libarrow 19.0.0 h03ebaaf_8_cpu - - libarrow-acero 19.0.0 h3b568fd_8_cpu - - libgcc >=13 - - libparquet 19.0.0 hfc78867_8_cpu - - libstdcxx >=13 - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 579626 - timestamp: 1737809072479 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-19.0.0-hf07054f_8_cpu.conda - build_number: 8 - sha256: 6934ce0503472f002695d45ae12a8f2948e10e7a0b7430330a4d0d83f3e5ca27 - md5: 1a941d1ddc16b532790781a4becdc881 - depends: - - __osx >=11.0 - - libarrow 19.0.0 h819e3af_8_cpu - - libarrow-acero 19.0.0 hf07054f_8_cpu - - libcxx >=18 - - libparquet 19.0.0 h636d7b7_8_cpu - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: APACHE - size: 501001 - timestamp: 1737807214184 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-19.0.0-h08228c5_8_cpu.conda - build_number: 8 - sha256: e370ee738d3963120f715343a27cf041c62a3ee8bb19e25da9115ec4bae5f2de - md5: e5dd1926e5a4b23de8ba4eacc8eb9b2d - depends: - - __glibc >=2.17,<3.0.a0 - - libabseil * cxx17* - - libabseil >=20240722.0,<20240723.0a0 - - libarrow 19.0.0 h00a82cf_8_cpu - - libarrow-acero 19.0.0 hcb10f89_8_cpu - - libarrow-dataset 19.0.0 hcb10f89_8_cpu - - libgcc >=13 - - libprotobuf >=5.28.3,<5.28.4.0a0 - - libstdcxx >=13 - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 521475 - timestamp: 1737824942852 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-19.0.0-h1e9d426_8_cpu.conda - build_number: 8 - sha256: 92e1fea8557a931c273ea3bd3bf73a4f4f0c566844dcedf78b9a16e5cf6cab56 - md5: ef08fcb5c165cdc743336bd8f4cbed69 - depends: - - libabseil * cxx17* - - libabseil >=20240722.0,<20240723.0a0 - - libarrow 19.0.0 h03ebaaf_8_cpu - - libarrow-acero 19.0.0 h3b568fd_8_cpu - - libarrow-dataset 19.0.0 h3b568fd_8_cpu - - libgcc >=13 - - libprotobuf >=5.28.3,<5.28.4.0a0 - - libstdcxx >=13 - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 516126 - timestamp: 1737809118915 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-19.0.0-h4239455_8_cpu.conda - build_number: 8 - sha256: 445d2ca20b07e57270f3b07b62c09794369413e5ff3716d9c73d0ad360969583 - md5: a39953d9b03b0463f4ccc187a8bcfcca - depends: - - __osx >=11.0 - - libabseil * cxx17* - - libabseil >=20240722.0,<20240723.0a0 - - libarrow 19.0.0 h819e3af_8_cpu - - libarrow-acero 19.0.0 hf07054f_8_cpu - - libarrow-dataset 19.0.0 hf07054f_8_cpu - - libcxx >=18 - - libprotobuf >=5.28.3,<5.28.4.0a0 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: APACHE - size: 449672 - timestamp: 1737807386331 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-28_h59b9bed_openblas.conda - build_number: 28 - sha256: 93fbcf2800b859b7ca5add3ab5d3aa11c6a6ff4b942a1cea4bf644f78488edb8 - md5: 73e2a99fdeb8531d50168987378fda8a - depends: - - libopenblas >=0.3.28,<0.3.29.0a0 - - libopenblas >=0.3.28,<1.0a0 - constrains: - - libcblas =3.9.0=28*_openblas - - blas =2.128=openblas - - liblapack =3.9.0=28*_openblas - - liblapacke =3.9.0=28*_openblas - arch: x86_64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 16621 - timestamp: 1738114033763 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-28_h1a9f1db_openblas.conda - build_number: 28 - sha256: a50dc7ed1f49789aab4ffb560d9a46b5dc3f059a925282f699c1a96fa566a1a0 - md5: 88dfbb3875d62b431aa676b4a54734bf - depends: - - libopenblas >=0.3.28,<0.3.29.0a0 - - libopenblas >=0.3.28,<1.0a0 - constrains: - - liblapack =3.9.0=28*_openblas - - libcblas =3.9.0=28*_openblas - - blas =2.128=openblas - - liblapacke =3.9.0=28*_openblas - arch: aarch64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 16697 - timestamp: 1738114082682 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-28_h10e41b3_openblas.conda - build_number: 28 - sha256: 5bea855a1a7435ce2238535aa4b13db8af8ee301d99a42b083b63fa64c1ea144 - md5: 166166d84a0e9571dc50210baf993b46 - depends: - - libopenblas >=0.3.28,<0.3.29.0a0 - - libopenblas >=0.3.28,<1.0a0 - constrains: - - liblapack =3.9.0=28*_openblas - - liblapacke =3.9.0=28*_openblas - - blas =2.128=openblas - - libcblas =3.9.0=28*_openblas - arch: arm64 - platform: osx - license: BSD-3-Clause - license_family: BSD - size: 16840 - timestamp: 1738114389937 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hb9d3cd8_2.conda - sha256: d9db2de60ea917298e658143354a530e9ca5f9c63471c65cf47ab39fd2f429e3 - md5: 41b599ed2b02abcfdd84302bff174b23 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - arch: x86_64 - platform: linux - license: MIT - license_family: MIT - size: 68851 - timestamp: 1725267660471 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlicommon-1.1.0-h86ecc28_2.conda - sha256: 64112af913974b309d67fd342e065fd184347043a6387933b3db796778a28019 - md5: 3ee026955c688f551a9999840cff4c67 - depends: - - libgcc >=13 - arch: aarch64 - platform: linux - license: MIT - license_family: MIT - size: 68982 - timestamp: 1725267774142 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.1.0-hd74edd7_2.conda - sha256: 839dacb741bdbb25e58f42088a2001b649f4f12195aeb700b5ddfca3267749e5 - md5: d0bf1dff146b799b319ea0434b93f779 - depends: - - __osx >=11.0 - arch: arm64 - platform: osx - license: MIT - license_family: MIT - size: 68426 - timestamp: 1725267943211 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hb9d3cd8_2.conda - sha256: 2892d512cad096cb03f1b66361deeab58b64e15ba525d6592bb6d609e7045edf - md5: 9566f0bd264fbd463002e759b8a82401 - depends: - - __glibc >=2.17,<3.0.a0 - - libbrotlicommon 1.1.0 hb9d3cd8_2 - - libgcc >=13 - arch: x86_64 - platform: linux - license: MIT - license_family: MIT - size: 32696 - timestamp: 1725267669305 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlidec-1.1.0-h86ecc28_2.conda - sha256: 94c808d9ca3eb6ef30976a9843e27f027cf3a1e84e8c6835cbb696b7bdb35c4c - md5: e64d0f3b59c7c4047446b97a8624a72d - depends: - - libbrotlicommon 1.1.0 h86ecc28_2 - - libgcc >=13 - arch: aarch64 - platform: linux - license: MIT - license_family: MIT - size: 31708 - timestamp: 1725267783442 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.1.0-hd74edd7_2.conda - sha256: 6c6862eb274f21a7c0b60e5345467a12e6dda8b9af4438c66d496a2c1a538264 - md5: 55e66e68ce55523a6811633dd1ac74e2 - depends: - - __osx >=11.0 - - libbrotlicommon 1.1.0 hd74edd7_2 - arch: arm64 - platform: osx - license: MIT - license_family: MIT - size: 28378 - timestamp: 1725267980316 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.1.0-hb9d3cd8_2.conda - sha256: 779f58174e99de3600e939fa46eddb453ec5d3c60bb46cdaa8b4c127224dbf29 - md5: 06f70867945ea6a84d35836af780f1de - depends: - - __glibc >=2.17,<3.0.a0 - - libbrotlicommon 1.1.0 hb9d3cd8_2 - - libgcc >=13 - arch: x86_64 - platform: linux - license: MIT - license_family: MIT - size: 281750 - timestamp: 1725267679782 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlienc-1.1.0-h86ecc28_2.conda - sha256: 41385e17bc73834b235c5aff12d6d82eccb534acb3c30986996f9dad92a0d54c - md5: 0e9bd365480c72b25c71a448257b537d - depends: - - libbrotlicommon 1.1.0 h86ecc28_2 - - libgcc >=13 - arch: aarch64 - platform: linux - license: MIT - license_family: MIT - size: 290230 - timestamp: 1725267792697 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlienc-1.1.0-hd74edd7_2.conda - sha256: eeb1eb0d58b9d02bc1b98dc0a058f104ab168eb2f7d1c7bfa0570a12cfcdb7b7 - md5: 4f3a434504c67b2c42565c0b85c1885c - depends: - - __osx >=11.0 - - libbrotlicommon 1.1.0 hd74edd7_2 - arch: arm64 - platform: osx - license: MIT - license_family: MIT - size: 279644 - timestamp: 1725268003553 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-28_he106b2a_openblas.conda - build_number: 28 - sha256: de293e117db53e5d78b579136509c35a5e4ad11529c05f9af83cf89be4d30de1 - md5: 4e20a1c00b4e8a984aac0f6cce59e3ac - depends: - - libblas 3.9.0 28_h59b9bed_openblas - constrains: - - blas =2.128=openblas - - liblapack =3.9.0=28*_openblas - - liblapacke =3.9.0=28*_openblas - arch: x86_64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 16539 - timestamp: 1738114043618 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-28_hab92f65_openblas.conda - build_number: 28 - sha256: ed62f13a85726f568e17ad569b5cc01a49a6c7bd334802cf1c1b15e9d10e7e93 - md5: 8cff453f547365131be5647c7680ac6d - depends: - - libblas 3.9.0 28_h1a9f1db_openblas - constrains: - - liblapack =3.9.0=28*_openblas - - blas =2.128=openblas - - liblapacke =3.9.0=28*_openblas - arch: aarch64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 16655 - timestamp: 1738114088527 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-28_hb3479ef_openblas.conda - build_number: 28 - sha256: f08adea59381babb3568e6d23e52aff874cbc25f299821647ab1127d1e1332ca - md5: 30942dea911ce333765003a8adec4e8a - depends: - - libblas 3.9.0 28_h10e41b3_openblas - constrains: - - blas =2.128=openblas - - liblapacke =3.9.0=28*_openblas - - liblapack =3.9.0=28*_openblas - arch: arm64 - platform: osx - license: BSD-3-Clause - license_family: BSD - size: 16788 - timestamp: 1738114399962 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libcrc32c-1.1.2-h9c3ff4c_0.tar.bz2 - sha256: fd1d153962764433fe6233f34a72cdeed5dcf8a883a85769e8295ce940b5b0c5 - md5: c965a5aa0d5c1c37ffc62dff36e28400 - depends: - - libgcc-ng >=9.4.0 - - libstdcxx-ng >=9.4.0 - arch: x86_64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 20440 - timestamp: 1633683576494 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcrc32c-1.1.2-h01db608_0.tar.bz2 - sha256: b8b8c57a87da86b3ea24280fd6aa8efaf92f4e684b606bf2db5d3cb06ffbe2ea - md5: 268ee639c17ada0002fb04dd21816cc2 - depends: - - libgcc-ng >=9.4.0 - - libstdcxx-ng >=9.4.0 - arch: aarch64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 18669 - timestamp: 1633683724891 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcrc32c-1.1.2-hbdafb3b_0.tar.bz2 - sha256: 58477b67cc719060b5b069ba57161e20ba69b8695d154a719cb4b60caf577929 - md5: 32bd82a6a625ea6ce090a81c3d34edeb - depends: - - libcxx >=11.1.0 - arch: arm64 - platform: osx - license: BSD-3-Clause - license_family: BSD - size: 18765 - timestamp: 1633683992603 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.11.1-h332b0f4_0.conda - sha256: 3cd4075b2a7b5562e46c8ec626f6f9ca57aeecaa94ff7df57eca26daa94c9906 - md5: 2b3e0081006dc21e8bf53a91c83a055c - depends: - - __glibc >=2.17,<3.0.a0 - - krb5 >=1.21.3,<1.22.0a0 - - libgcc >=13 - - libnghttp2 >=1.64.0,<2.0a0 - - libssh2 >=1.11.1,<2.0a0 - - libzlib >=1.3.1,<2.0a0 - - openssl >=3.4.0,<4.0a0 - - zstd >=1.5.6,<1.6.0a0 - arch: x86_64 - platform: linux - license: curl - license_family: MIT - size: 423011 - timestamp: 1733999897624 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcurl-8.11.1-h6702fde_0.conda - sha256: 9fc65d21a58f4aad1bc39dfb94a178893aeb035850c5cf0ed9736674279f390b - md5: 7dec1cd271c403d1636bda5aa388a55d - depends: - - krb5 >=1.21.3,<1.22.0a0 - - libgcc >=13 - - libnghttp2 >=1.64.0,<2.0a0 - - libssh2 >=1.11.1,<2.0a0 - - libzlib >=1.3.1,<2.0a0 - - openssl >=3.4.0,<4.0a0 - - zstd >=1.5.6,<1.6.0a0 - arch: aarch64 - platform: linux - license: curl - license_family: MIT - size: 440737 - timestamp: 1733999835504 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.11.1-h73640d1_0.conda - sha256: f47c35938144c23278987c7d12096f6a42d7c850ffc277222b032073412383b6 - md5: 46d7524cabfdd199bffe63f8f19a552b - depends: - - __osx >=11.0 - - krb5 >=1.21.3,<1.22.0a0 - - libnghttp2 >=1.64.0,<2.0a0 - - libssh2 >=1.11.1,<2.0a0 - - libzlib >=1.3.1,<2.0a0 - - openssl >=3.4.0,<4.0a0 - - zstd >=1.5.6,<1.6.0a0 - arch: arm64 - platform: osx - license: curl - license_family: MIT - size: 385098 - timestamp: 1734000160270 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda - sha256: 776092346da87a2a23502e14d91eb0c32699c4a1522b7331537bd1c3751dcff5 - md5: 5b3e1610ff8bd5443476b91d618f5b77 - depends: - - __osx >=11.0 - arch: arm64 - platform: osx - license: Apache-2.0 WITH LLVM-exception - license_family: Apache - size: 523505 - timestamp: 1736877862502 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.23-h4ddbbb0_0.conda - sha256: 511d801626d02f4247a04fff957cc6e9ec4cc7e8622bd9acd076bcdc5de5fe66 - md5: 8dfae1d2e74767e9ce36d5fa0d8605db - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - arch: x86_64 - platform: linux - license: MIT - license_family: MIT - size: 72255 - timestamp: 1734373823254 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libdeflate-1.23-h5e3c512_0.conda - sha256: 959419d87cd2b789a9055db95704c614f31aeb70bef7949fa2f734122a3a2863 - md5: 7e7ca2607b11b180120cefc2354fc0cb - depends: - - libgcc >=13 - arch: aarch64 - platform: linux - license: MIT - license_family: MIT - size: 69862 - timestamp: 1734373858306 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.23-hec38601_0.conda - sha256: 887c02deaed6d583459eba6367023e36d8761085b2f7126e389424f57155da53 - md5: 1d8b9588be14e71df38c525767a1ac30 - depends: - - __osx >=11.0 - arch: arm64 - platform: osx - license: MIT - license_family: MIT - size: 54132 - timestamp: 1734373971372 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda - sha256: d789471216e7aba3c184cd054ed61ce3f6dac6f87a50ec69291b9297f8c18724 - md5: c277e0a4d549b03ac1e9d6cbbe3d017b - depends: - - ncurses - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - ncurses >=6.5,<7.0a0 - arch: x86_64 - platform: linux - license: BSD-2-Clause - license_family: BSD - size: 134676 - timestamp: 1738479519902 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20250104-pl5321h976ea20_0.conda - sha256: c0b27546aa3a23d47919226b3a1635fccdb4f24b94e72e206a751b33f46fd8d6 - md5: fb640d776fc92b682a14e001980825b1 - depends: - - ncurses - - libgcc >=13 - - ncurses >=6.5,<7.0a0 - arch: aarch64 - platform: linux - license: BSD-2-Clause - license_family: BSD - size: 148125 - timestamp: 1738479808948 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda - sha256: 66aa216a403de0bb0c1340a88d1a06adaff66bae2cfd196731aa24db9859d631 - md5: 44083d2d2c2025afca315c7a172eab2b - depends: - - ncurses - - __osx >=11.0 - - ncurses >=6.5,<7.0a0 - arch: arm64 - platform: osx - license: BSD-2-Clause - license_family: BSD - size: 107691 - timestamp: 1738479560845 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda - sha256: 1cd6048169fa0395af74ed5d8f1716e22c19a81a8a36f934c110ca3ad4dd27b4 - md5: 172bf1cd1ff8629f2b1179945ed45055 - depends: - - libgcc-ng >=12 - arch: x86_64 - platform: linux - license: BSD-2-Clause - license_family: BSD - size: 112766 - timestamp: 1702146165126 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libev-4.33-h31becfc_2.conda - sha256: 973af77e297f1955dd1f69c2cbdc5ab9dfc88388a5576cd152cda178af0fd006 - md5: a9a13cb143bbaa477b1ebaefbe47a302 - depends: - - libgcc-ng >=12 - arch: aarch64 - platform: linux - license: BSD-2-Clause - license_family: BSD - size: 115123 - timestamp: 1702146237623 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libev-4.33-h93a5062_2.conda - sha256: 95cecb3902fbe0399c3a7e67a5bed1db813e5ab0e22f4023a5e0f722f2cc214f - md5: 36d33e440c31857372a72137f78bacf5 - arch: arm64 - platform: osx - license: BSD-2-Clause - license_family: BSD - size: 107458 - timestamp: 1702146414478 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libevent-2.1.12-hf998b51_1.conda - sha256: 2e14399d81fb348e9d231a82ca4d816bf855206923759b69ad006ba482764131 - md5: a1cfcc585f0c42bf8d5546bb1dfb668d - depends: - - libgcc-ng >=12 - - openssl >=3.1.1,<4.0a0 - arch: x86_64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 427426 - timestamp: 1685725977222 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libevent-2.1.12-h4ba1bb4_1.conda - sha256: 01333cc7d6e6985dd5700b43660d90e9e58049182017fd24862088ecbe1458e4 - md5: 96ae6083cd1ac9f6bc81631ac835b317 - depends: - - libgcc-ng >=12 - - openssl >=3.1.1,<4.0a0 - arch: aarch64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 438992 - timestamp: 1685726046519 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libevent-2.1.12-h2757513_1.conda - sha256: 8c136d7586259bb5c0d2b913aaadc5b9737787ae4f40e3ad1beaf96c80b919b7 - md5: 1a109764bff3bdc7bdd84088347d71dc - depends: - - openssl >=3.1.1,<4.0a0 - arch: arm64 - platform: osx - license: BSD-3-Clause - license_family: BSD - size: 368167 - timestamp: 1685726248899 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda - sha256: 56541b98447b58e52d824bd59d6382d609e11de1f8adf20b23143e353d2b8d26 - md5: db833e03127376d461e1e13e76f09b6c - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - constrains: - - expat 2.6.4.* - arch: x86_64 - platform: linux - license: MIT - license_family: MIT - size: 73304 - timestamp: 1730967041968 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.6.4-h5ad3122_0.conda - sha256: f42e758009ba9db90d1fe7992bc3e60d0c52f71fb20923375d2c44ae69a5a2b3 - md5: f1b3fab36861b3ce945a13f0dfdfc688 - depends: - - libgcc >=13 - constrains: - - expat 2.6.4.* - arch: aarch64 - platform: linux - license: MIT - license_family: MIT - size: 72345 - timestamp: 1730967203789 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.4-h286801f_0.conda - sha256: e42ab5ace927ee7c84e3f0f7d813671e1cf3529f5f06ee5899606630498c2745 - md5: 38d2656dd914feb0cab8c629370768bf - depends: - - __osx >=11.0 - constrains: - - expat 2.6.4.* - arch: arm64 - platform: osx - license: MIT - license_family: MIT - size: 64693 - timestamp: 1730967175868 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.2-h7f98852_5.tar.bz2 - sha256: ab6e9856c21709b7b517e940ae7028ae0737546122f83c2aa5d692860c3b149e - md5: d645c6d2ac96843a2bfaccd2d62b3ac3 - depends: - - libgcc-ng >=9.4.0 - arch: x86_64 - platform: linux - license: MIT - license_family: MIT - size: 58292 - timestamp: 1636488182923 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.4.2-h3557bc0_5.tar.bz2 - sha256: 7e9258a102480757fe3faeb225a3ca04dffd10fecd2a958c65cdb4cdf75f2c3c - md5: dddd85f4d52121fab0a8b099c5e06501 - depends: - - libgcc-ng >=9.4.0 - arch: aarch64 - platform: linux - license: MIT - license_family: MIT - size: 59450 - timestamp: 1636488255090 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 - sha256: 41b3d13efb775e340e4dba549ab5c029611ea6918703096b2eaa9c015c0750ca - md5: 086914b672be056eb70fd4285b6783b6 - arch: arm64 - platform: osx - license: MIT - license_family: MIT - size: 39020 - timestamp: 1636488587153 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h77fa898_1.conda - sha256: 53eb8a79365e58849e7b1a068d31f4f9e718dc938d6f2c03e960345739a03569 - md5: 3cb76c3f10d3bc7f1105b2fc9db984df - depends: - - _libgcc_mutex 0.1 conda_forge - - _openmp_mutex >=4.5 - constrains: - - libgomp 14.2.0 h77fa898_1 - - libgcc-ng ==14.2.0=*_1 - arch: x86_64 - platform: linux - license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - size: 848745 - timestamp: 1729027721139 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-14.2.0-he277a41_1.conda - sha256: 5d56757ccad208c79214395b00d006d8d18929a4ba49c47bd9460789a7620943 - md5: 511b511c5445e324066c3377481bcab8 - depends: - - _openmp_mutex >=4.5 - constrains: - - libgcc-ng ==14.2.0=*_1 - - libgomp 14.2.0 he277a41_1 - arch: aarch64 - platform: linux - license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - size: 535243 - timestamp: 1729089435134 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_1.conda - sha256: 3a76969c80e9af8b6e7a55090088bc41da4cffcde9e2c71b17f44d37b7cb87f7 - md5: e39480b9ca41323497b05492a63bc35b - depends: - - libgcc 14.2.0 h77fa898_1 - arch: x86_64 - platform: linux - license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - size: 54142 - timestamp: 1729027726517 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-14.2.0-he9431aa_1.conda - sha256: 9b5cf168a6c7361cae869cb74b716766ee7c6d6b3f6172b32ba9bf91135efdc4 - md5: 0694c249c61469f2c0f7e2990782af21 - depends: - - libgcc 14.2.0 he277a41_1 - arch: aarch64 - platform: linux - license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - size: 54104 - timestamp: 1729089444587 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_1.conda - sha256: fc9e7f22a17faf74da904ebfc4d88699013d2992e55505e4aa0eb01770290977 - md5: f1fd30127802683586f768875127a987 - depends: - - libgfortran5 14.2.0 hd5240d6_1 - constrains: - - libgfortran-ng ==14.2.0=*_1 - arch: x86_64 - platform: linux - license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - size: 53997 - timestamp: 1729027752995 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_1.conda - sha256: cb66e411fa32a5c6040f4e5e2a63c00897aae4c3133a9c004c2e929ccf19575b - md5: 0294b92d2f47a240bebb1e3336b495f1 - depends: - - libgfortran5 14.2.0 hb6113d0_1 - constrains: - - libgfortran-ng ==14.2.0=*_1 - arch: aarch64 - platform: linux - license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - size: 54105 - timestamp: 1729089471124 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda - sha256: 44e541b4821c96b28b27fef5630883a60ce4fee91fd9c79f25a199f8f73f337b - md5: 4a55d9e169114b2b90d3ec4604cd7bbf - depends: - - libgfortran5 13.2.0 hf226fd6_3 - arch: arm64 - platform: osx - license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - size: 110233 - timestamp: 1707330749033 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hd5240d6_1.conda - sha256: d149a37ca73611e425041f33b9d8dbed6e52ec506fe8cc1fc0ee054bddeb6d5d - md5: 9822b874ea29af082e5d36098d25427d - depends: - - libgcc >=14.2.0 - constrains: - - libgfortran 14.2.0 - arch: x86_64 - platform: linux - license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - size: 1462645 - timestamp: 1729027735353 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_1.conda - sha256: a87ff46d19916403cbf68cf1d785bf56b4d1ab7b2552468d2ea775d70782493f - md5: fc068e11b10e18f184e027782baa12b6 - depends: - - libgcc >=14.2.0 - constrains: - - libgfortran 14.2.0 - arch: aarch64 - platform: linux - license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - size: 1102158 - timestamp: 1729089452640 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda - sha256: bafc679eedb468a86aa4636061c55966186399ee0a04b605920d208d97ac579a - md5: 66ac81d54e95c534ae488726c1f698ea - depends: - - llvm-openmp >=8.0.0 - constrains: - - libgfortran 5.0.0 13_2_0_*_3 - arch: arm64 - platform: osx - license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - size: 997381 - timestamp: 1707330687590 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h77fa898_1.conda - sha256: 1911c29975ec99b6b906904040c855772ccb265a1c79d5d75c8ceec4ed89cd63 - md5: cc3573974587f12dda90d96e3e55a702 - depends: - - _libgcc_mutex 0.1 conda_forge - arch: x86_64 - platform: linux - license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - size: 460992 - timestamp: 1729027639220 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_1.conda - sha256: 5aa53874a5e57a00f2e0c2e2910684eb674429cd5fcb803619b226a73e89aedf - md5: 376f0e73abbda6d23c0cb749adc195ef - arch: aarch64 - platform: linux - license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - size: 463521 - timestamp: 1729089357313 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.34.0-h2b5623c_0.conda - sha256: 348ee1dddd82dcef5a185c86e65dda8acfc9b583acc425ccb9b661f2d433b2cc - md5: 2a5142c88dd6132eaa8079f99476e922 - depends: - - __glibc >=2.17,<3.0.a0 - - libabseil * cxx17* - - libabseil >=20240722.0,<20240723.0a0 - - libcurl >=8.11.1,<9.0a0 - - libgcc >=13 - - libgrpc >=1.67.1,<1.68.0a0 - - libprotobuf >=5.28.3,<5.28.4.0a0 - - libstdcxx >=13 - - openssl >=3.4.0,<4.0a0 - constrains: - - libgoogle-cloud 2.34.0 *_0 - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 1256795 - timestamp: 1737286199784 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-2.34.0-hccf9d24_0.conda - sha256: 54267dda8fafc2a2d379ef77b6029d8240e0628d4b29758f788fb903f84397a3 - md5: 1ce0fd876001c40801b40fea22987e41 - depends: - - libabseil * cxx17* - - libabseil >=20240722.0,<20240723.0a0 - - libcurl >=8.11.1,<9.0a0 - - libgcc >=13 - - libgrpc >=1.67.1,<1.68.0a0 - - libprotobuf >=5.28.3,<5.28.4.0a0 - - libstdcxx >=13 - - openssl >=3.4.0,<4.0a0 - constrains: - - libgoogle-cloud 2.34.0 *_0 - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 1256586 - timestamp: 1737285242684 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-2.34.0-hdbe95d5_0.conda - sha256: 919d8cbcd47d5bd2244c55b2bb87e2bd2eed8215996aab8435cb7123ffd9d20e - md5: 69826544e7978fcaa6bc8c1962d96ad6 - depends: - - __osx >=11.0 - - libabseil * cxx17* - - libabseil >=20240722.0,<20240723.0a0 - - libcurl >=8.11.1,<9.0a0 - - libcxx >=18 - - libgrpc >=1.67.1,<1.68.0a0 - - libprotobuf >=5.28.3,<5.28.4.0a0 - - openssl >=3.4.0,<4.0a0 - constrains: - - libgoogle-cloud 2.34.0 *_0 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: Apache - size: 878217 - timestamp: 1737284441192 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.34.0-h0121fbd_0.conda - sha256: aa1b3b30ae6b2eab7c9e6a8e2fd8ec3776f25d2e3f0b6f9dc547ff8083bf25fa - md5: 9f0c43225243c81c6991733edcaafff5 - depends: - - __glibc >=2.17,<3.0.a0 - - libabseil - - libcrc32c >=1.1.2,<1.2.0a0 - - libcurl - - libgcc >=13 - - libgoogle-cloud 2.34.0 h2b5623c_0 - - libstdcxx >=13 - - libzlib >=1.3.1,<2.0a0 - - openssl - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 785792 - timestamp: 1737286406612 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-storage-2.34.0-hb9b2b65_0.conda - sha256: 4ad4fb7c02dcfa4c86dcf9591e0131a01fc0f2c3f2729c12882b944ddf2b8a9d - md5: 0732a5988f7f556f2c1d1f51026fc1be - depends: - - libabseil - - libcrc32c >=1.1.2,<1.2.0a0 - - libcurl - - libgcc >=13 - - libgoogle-cloud 2.34.0 hccf9d24_0 - - libstdcxx >=13 - - libzlib >=1.3.1,<2.0a0 - - openssl - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 739678 - timestamp: 1737285399565 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-storage-2.34.0-h7081f7f_0.conda - sha256: 79f6b93fb330728530036b2b38764e9d42e0eedd3ae7e549ac7eae49acd1e52b - md5: f09cb03f9cf847f1dc41b4c1f65c97c2 - depends: - - __osx >=11.0 - - libabseil - - libcrc32c >=1.1.2,<1.2.0a0 - - libcurl - - libcxx >=18 - - libgoogle-cloud 2.34.0 hdbe95d5_0 - - libzlib >=1.3.1,<2.0a0 - - openssl - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: Apache - size: 529202 - timestamp: 1737285376801 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.67.1-h25350d4_1.conda - sha256: 014627485b3cf0ea18e04c0bab07be7fb98722a3aeeb58477acc7e1c3d2f911e - md5: 0c6497a760b99a926c7c12b74951a39c - depends: - - __glibc >=2.17,<3.0.a0 - - c-ares >=1.34.4,<2.0a0 - - libabseil * cxx17* - - libabseil >=20240722.0,<20240723.0a0 - - libgcc >=13 - - libprotobuf >=5.28.3,<5.28.4.0a0 - - libre2-11 >=2024.7.2 - - libstdcxx >=13 - - libzlib >=1.3.1,<2.0a0 - - openssl >=3.4.0,<4.0a0 - - re2 - constrains: - - grpc-cpp =1.67.1 - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 7792251 - timestamp: 1735584856826 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgrpc-1.67.1-hf7ccdd3_1.conda - sha256: 3fa173dc1d7456aac2b26937daae86a08432a31640e3d6569c62edc661fc9bbe - md5: 8fb41a425bebaeb3d0fa568503612e64 - depends: - - c-ares >=1.34.4,<2.0a0 - - libabseil * cxx17* - - libabseil >=20240722.0,<20240723.0a0 - - libgcc >=13 - - libprotobuf >=5.28.3,<5.28.4.0a0 - - libre2-11 >=2024.7.2 - - libstdcxx >=13 - - libzlib >=1.3.1,<2.0a0 - - openssl >=3.4.0,<4.0a0 - - re2 - constrains: - - grpc-cpp =1.67.1 - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 7430006 - timestamp: 1735585769731 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgrpc-1.67.1-h0a426d6_1.conda - sha256: 630edf63981818ff590367cb95fddbed0f5a390464d0952c90ec81de899e84a6 - md5: 8a3cba079d6ac985e7d73c76a678fbb4 - depends: - - __osx >=11.0 - - c-ares >=1.34.4,<2.0a0 - - libabseil * cxx17* - - libabseil >=20240722.0,<20240723.0a0 - - libcxx >=18 - - libprotobuf >=5.28.3,<5.28.4.0a0 - - libre2-11 >=2024.7.2 - - libzlib >=1.3.1,<2.0a0 - - openssl >=3.4.0,<4.0a0 - - re2 - constrains: - - grpc-cpp =1.67.1 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: APACHE - size: 5311706 - timestamp: 1735585137716 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-hd590300_2.conda - sha256: 8ac2f6a9f186e76539439e50505d98581472fedb347a20e7d1f36429849f05c9 - md5: d66573916ffcf376178462f1b61c941e - depends: - - libgcc-ng >=12 - arch: x86_64 - platform: linux - license: LGPL-2.1-only - size: 705775 - timestamp: 1702682170569 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libiconv-1.17-h31becfc_2.conda - sha256: a30e09d089cb75a0d5b8e5c354694c1317da98261185ed65aa3793e741060614 - md5: 9a8eb13f14de7d761555a98712e6df65 - depends: - - libgcc-ng >=12 - arch: aarch64 - platform: linux - license: LGPL-2.1-only - size: 705787 - timestamp: 1702684557134 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.17-h0d3ecfb_2.conda - sha256: bc7de5097b97bcafcf7deaaed505f7ce02f648aac8eccc0d5a47cc599a1d0304 - md5: 69bda57310071cf6d2b86caf11573d2d - arch: arm64 - platform: osx - license: LGPL-2.1-only - size: 676469 - timestamp: 1702682458114 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda - sha256: b954e09b7e49c2f2433d6f3bb73868eda5e378278b0f8c1dd10a7ef090e14f2f - md5: ea25936bb4080d843790b586850f82b8 - depends: - - libgcc-ng >=12 - constrains: - - jpeg <0.0.0a - arch: x86_64 - platform: linux - license: IJG AND BSD-3-Clause AND Zlib - size: 618575 - timestamp: 1694474974816 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libjpeg-turbo-3.0.0-h31becfc_1.conda - sha256: 675bc1f2a8581cd34a86c412663ec29c5f90c1d9f8d11866aa1ade5cdbdf8429 - md5: ed24e702928be089d9ba3f05618515c6 - depends: - - libgcc-ng >=12 - constrains: - - jpeg <0.0.0a - arch: aarch64 - platform: linux - license: IJG AND BSD-3-Clause AND Zlib - size: 647126 - timestamp: 1694475003570 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.0.0-hb547adb_1.conda - sha256: a42054eaa38e84fc1e5ab443facac4bbc9d1b6b6f23f54b7bf4f1eb687e1d993 - md5: 3ff1e053dc3a2b8e36b9bfa4256a58d1 - constrains: - - jpeg <0.0.0a - arch: arm64 - platform: osx - license: IJG AND BSD-3-Clause AND Zlib - size: 547541 - timestamp: 1694475104253 -- conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-28_h7ac8fdf_openblas.conda - build_number: 28 - sha256: 9530e6840690b78360946390a1d29624734a6b624f02c26631fb451592cbb8ef - md5: 069f40bfbf1dc55c83ddb07fc6a6ef8d - depends: - - libblas 3.9.0 28_h59b9bed_openblas - constrains: - - libcblas =3.9.0=28*_openblas - - blas =2.128=openblas - - liblapacke =3.9.0=28*_openblas - arch: x86_64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 16553 - timestamp: 1738114053556 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-28_h411afd4_openblas.conda - build_number: 28 - sha256: 1290ce1071a586e22bdd7d8f4c48000cc0005f0a67660be150d1ea5c6092129f - md5: bc4c5ee31476521e202356b56bba6077 - depends: - - libblas 3.9.0 28_h1a9f1db_openblas - constrains: - - liblapacke =3.9.0=28*_openblas - - libcblas =3.9.0=28*_openblas - - blas =2.128=openblas - arch: aarch64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 16637 - timestamp: 1738114094310 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-28_hc9a63f6_openblas.conda - build_number: 28 - sha256: 79c75a02bff20f8b001e6aecfee8d22a51552c3986e7037fca68e5ed071cc213 - md5: 45f26652530b558c21083ceb7adaf273 - depends: - - libblas 3.9.0 28_h10e41b3_openblas - constrains: - - blas =2.128=openblas - - liblapacke =3.9.0=28*_openblas - - libcblas =3.9.0=28*_openblas - arch: arm64 - platform: osx - license: BSD-3-Clause - license_family: BSD - size: 16793 - timestamp: 1738114407021 -- conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda - sha256: cad52e10319ca4585bc37f0bc7cce99ec7c15dc9168e42ccb96b741b0a27db3f - md5: 42d5b6a0f30d3c10cd88cb8584fda1cb - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - arch: x86_64 - platform: linux - license: 0BSD - size: 111357 - timestamp: 1738525339684 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.4-h86ecc28_0.conda - sha256: 96413664f0fade54a4931940d18749cfc8e6308349dbb0cb83adb2394ca1f730 - md5: b88244e0a115cc34f7fbca9b11248e76 - depends: - - libgcc >=13 - arch: aarch64 - platform: linux - license: 0BSD - size: 124197 - timestamp: 1738528201520 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.4-h39f12f2_0.conda - sha256: 560c59d3834cc652a84fb45531bd335ad06e271b34ebc216e380a89798fe8e2c - md5: e3fd1f8320a100f2b210e690a57cd615 - depends: - - __osx >=11.0 - arch: arm64 - platform: osx - license: 0BSD - size: 98945 - timestamp: 1738525462560 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda - sha256: b0f2b3695b13a989f75d8fd7f4778e1c7aabe3b36db83f0fe80b2cd812c0e975 - md5: 19e57602824042dfd0446292ef90488b - depends: - - __glibc >=2.17,<3.0.a0 - - c-ares >=1.32.3,<2.0a0 - - libev >=4.33,<4.34.0a0 - - libev >=4.33,<5.0a0 - - libgcc >=13 - - libstdcxx >=13 - - libzlib >=1.3.1,<2.0a0 - - openssl >=3.3.2,<4.0a0 - arch: x86_64 - platform: linux - license: MIT - license_family: MIT - size: 647599 - timestamp: 1729571887612 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnghttp2-1.64.0-hc8609a4_0.conda - sha256: c093c6d370aadbf0409c20b6c54c488ee2f6fea976181919fcc63e87ee232673 - md5: f52c614fa214a8bedece9421c771670d - depends: - - c-ares >=1.32.3,<2.0a0 - - libev >=4.33,<4.34.0a0 - - libev >=4.33,<5.0a0 - - libgcc >=13 - - libstdcxx >=13 - - libzlib >=1.3.1,<2.0a0 - - openssl >=3.3.2,<4.0a0 - arch: aarch64 - platform: linux - license: MIT - license_family: MIT - size: 714610 - timestamp: 1729571912479 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.64.0-h6d7220d_0.conda - sha256: 00cc685824f39f51be5233b54e19f45abd60de5d8847f1a56906f8936648b72f - md5: 3408c02539cee5f1141f9f11450b6a51 - depends: - - __osx >=11.0 - - c-ares >=1.34.2,<2.0a0 - - libcxx >=17 - - libev >=4.33,<4.34.0a0 - - libev >=4.33,<5.0a0 - - libzlib >=1.3.1,<2.0a0 - - openssl >=3.3.2,<4.0a0 - arch: arm64 - platform: osx - license: MIT - license_family: MIT - size: 566719 - timestamp: 1729572385640 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda - sha256: 26d77a3bb4dceeedc2a41bd688564fe71bf2d149fdcf117049970bc02ff1add6 - md5: 30fd6e37fe21f86f4bd26d6ee73eeec7 - depends: - - libgcc-ng >=12 - arch: x86_64 - platform: linux - license: LGPL-2.1-only - license_family: GPL - size: 33408 - timestamp: 1697359010159 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda - sha256: fd18c2b75d7411096428d36a70b36b1a17e31f7b8956b6905d145792d49e97f8 - md5: c14f32510f694e3185704d89967ec422 - depends: - - libgcc-ng >=12 - arch: aarch64 - platform: linux - license: LGPL-2.1-only - license_family: GPL - size: 34501 - timestamp: 1697358973269 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.28-pthreads_h94d23a6_1.conda - sha256: 99ba271d8a80a1af2723f2e124ffd91d850074c0389c067e6d96d72a2dbfeabe - md5: 62857b389e42b36b686331bec0922050 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - - libgfortran - - libgfortran5 >=14.2.0 - constrains: - - openblas >=0.3.28,<0.3.29.0a0 - arch: x86_64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 5578513 - timestamp: 1730772671118 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.28-pthreads_h9d3fd7e_1.conda - sha256: 30623a40764e935aa77e0d4db54c1a1589189a9bf3a03fdb445505c1e319b5a6 - md5: e8dde93dd199da3c1f2c1fcfd0042cd4 - depends: - - libgcc >=14 - - libgfortran - - libgfortran5 >=14.2.0 - constrains: - - openblas >=0.3.28,<0.3.29.0a0 - arch: aarch64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 4793435 - timestamp: 1730773029647 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.28-openmp_hf332438_1.conda - sha256: 62bb669c37a845129096f73d446cdb6bb170e4927f2fea2b661329680dbbc373 - md5: 40803a48d947c8639da6704e9a44d3ce - depends: - - __osx >=11.0 - - libgfortran 5.* - - libgfortran5 >=13.2.0 - - llvm-openmp >=18.1.8 - constrains: - - openblas >=0.3.28,<0.3.29.0a0 - arch: arm64 - platform: osx - license: BSD-3-Clause - license_family: BSD - size: 4165774 - timestamp: 1730772154295 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-1.18.0-hfcad708_1.conda - sha256: 4ea235e08676f16b0d3c3380befe1478c0fa0141512ee709b011005c55c9619f - md5: 1f5a5d66e77a39dc5bd639ec953705cf - depends: - - libabseil * cxx17* - - libabseil >=20240722.0,<20240723.0a0 - - libcurl >=8.11.1,<9.0a0 - - libgrpc >=1.67.1,<1.68.0a0 - - libopentelemetry-cpp-headers 1.18.0 ha770c72_1 - - libprotobuf >=5.28.3,<5.28.4.0a0 - - libzlib >=1.3.1,<2.0a0 - - nlohmann_json - - prometheus-cpp >=1.3.0,<1.4.0a0 - constrains: - - cpp-opentelemetry-sdk =1.18.0 - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 801927 - timestamp: 1735643375271 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopentelemetry-cpp-1.18.0-h60b47f9_1.conda - sha256: 160c493cd0f897955b0b6035b51c6d7255ffbaed3c8a12d43e8e8a719d405aba - md5: afe3c8c53f4b6d27d553c230d4b34038 - depends: - - libabseil * cxx17* - - libabseil >=20240722.0,<20240723.0a0 - - libcurl >=8.11.1,<9.0a0 - - libgrpc >=1.67.1,<1.68.0a0 - - libopentelemetry-cpp-headers 1.18.0 h8af1aa0_1 - - libprotobuf >=5.28.3,<5.28.4.0a0 - - libzlib >=1.3.1,<2.0a0 - - nlohmann_json - - prometheus-cpp >=1.3.0,<1.4.0a0 - constrains: - - cpp-opentelemetry-sdk =1.18.0 - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 800896 - timestamp: 1735643533825 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopentelemetry-cpp-1.18.0-h0c05b2d_1.conda - sha256: c6bcbd53d62a9e0d8c667e560db0ca2ecb7679277cbb3c23457aabe74fcb8cba - md5: 19c46cc18825f3924251c39ec1b0d983 - depends: - - libabseil * cxx17* - - libabseil >=20240722.0,<20240723.0a0 - - libcurl >=8.11.1,<9.0a0 - - libgrpc >=1.67.1,<1.68.0a0 - - libopentelemetry-cpp-headers 1.18.0 hce30654_1 - - libprotobuf >=5.28.3,<5.28.4.0a0 - - libzlib >=1.3.1,<2.0a0 - - nlohmann_json - - prometheus-cpp >=1.3.0,<1.4.0a0 - constrains: - - cpp-opentelemetry-sdk =1.18.0 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: APACHE - size: 529588 - timestamp: 1735643889612 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-headers-1.18.0-ha770c72_1.conda - sha256: aa1f7dea79ea8513ff77339ba7c6e9cf10dfa537143e7718b1cfb3af52b649f2 - md5: 4fb055f57404920a43b147031471e03b - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 320359 - timestamp: 1735643346175 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopentelemetry-cpp-headers-1.18.0-h8af1aa0_1.conda - sha256: 981c0b29a0789597fa8ed147b02df2d2ad0c7f863d87df74770c40cee1800228 - md5: 282193b19a19e3b5d75d18ef82713ef0 - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 319401 - timestamp: 1735643509251 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopentelemetry-cpp-headers-1.18.0-hce30654_1.conda - sha256: 82e5f5ba64debbaab3c601b265dfc0cdb4d2880feba9bada5fd2e67b9f91ada5 - md5: e965dad955841507549fdacd8f7f94c0 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: APACHE - size: 320565 - timestamp: 1735643673319 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-19.0.0-h081d1f1_8_cpu.conda - build_number: 8 - sha256: b2e1bf8634efb643a9f15fe19f9bc0877482c509eff7cee6136278a2c2fa5842 - md5: bef810a8da683aa11c644066a87f71c3 - depends: - - __glibc >=2.17,<3.0.a0 - - libarrow 19.0.0 h00a82cf_8_cpu - - libgcc >=13 - - libstdcxx >=13 - - libthrift >=0.21.0,<0.21.1.0a0 - - openssl >=3.4.0,<4.0a0 - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 1241786 - timestamp: 1737824866572 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-19.0.0-hfc78867_8_cpu.conda - build_number: 8 - sha256: 8917fc5e5bb65894106bbd461d2f9c9c0c3dc642ff5da197c941bf620ce840a0 - md5: b0d5f8c122a3e9a6b75036e43e78fcfa - depends: - - libarrow 19.0.0 h03ebaaf_8_cpu - - libgcc >=13 - - libstdcxx >=13 - - libthrift >=0.21.0,<0.21.1.0a0 - - openssl >=3.4.0,<4.0a0 - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 1153834 - timestamp: 1737809048861 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-19.0.0-h636d7b7_8_cpu.conda - build_number: 8 - sha256: da04e6bd7ed2ca64aadf0ad12d9752e8423e85c37e0db80e27c7ff334fcbd2b6 - md5: c1ff2e71a289fb76146591c9d3f9de0a - depends: - - __osx >=11.0 - - libarrow 19.0.0 h819e3af_8_cpu - - libcxx >=18 - - libthrift >=0.21.0,<0.21.1.0a0 - - openssl >=3.4.0,<4.0a0 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: APACHE - size: 893482 - timestamp: 1737807155720 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.46-h943b412_0.conda - sha256: a46436dadd12d58155280d68876dba2d8a3badbc8074956d14fe6530c7c7eda6 - md5: adcf7bacff219488e29cfa95a2abd8f7 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libzlib >=1.3.1,<2.0a0 - arch: x86_64 - platform: linux - license: zlib-acknowledgement - size: 292273 - timestamp: 1737791061653 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.46-hec79eb8_0.conda - sha256: be4eefe8415c9b37d158eaa9522ce4c399a572339ac2bcc4d26d6433e0ed767d - md5: f9f793497c0973d5416421aa2f96cda4 - depends: - - libgcc >=13 - - libzlib >=1.3.1,<2.0a0 - arch: aarch64 - platform: linux - license: zlib-acknowledgement - size: 304364 - timestamp: 1737795802176 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.46-h3783ad8_0.conda - sha256: db78a711561bb6df274ef421472d948dfd1093404db3915e891ae6d7fd37fadc - md5: 15d480fb9dad036eaa4de0b51eab3ccc - depends: - - __osx >=11.0 - - libzlib >=1.3.1,<2.0a0 - arch: arm64 - platform: osx - license: zlib-acknowledgement - size: 266516 - timestamp: 1737791023678 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda - sha256: 51125ebb8b7152e4a4e69fd2398489c4ec8473195c27cde3cbdf1cb6d18c5493 - md5: d8703f1ffe5a06356f06467f1d0b9464 - depends: - - __glibc >=2.17,<3.0.a0 - - libabseil * cxx17* - - libabseil >=20240722.0,<20240723.0a0 - - libgcc >=13 - - libstdcxx >=13 - - libzlib >=1.3.1,<2.0a0 - arch: x86_64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 2960815 - timestamp: 1735577210663 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.3-h44a3b7b_1.conda - sha256: ecb69f2b1668e784b41ba667493be846662d5ef702bef64fb2e013bb1364cdc4 - md5: 68f807f7cc13951652bbe048253fd405 - depends: - - libabseil * cxx17* - - libabseil >=20240722.0,<20240723.0a0 - - libgcc >=13 - - libstdcxx >=13 - - libzlib >=1.3.1,<2.0a0 - arch: aarch64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 2788074 - timestamp: 1735576315676 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.3-h3bd63a1_1.conda - sha256: f58a16b13ad53346903c833e266f83c3d770a43a432659b98710aed85ca885e7 - md5: bdbfea4cf45ae36652c6bbcc2e7ebe91 - depends: - - __osx >=11.0 - - libabseil * cxx17* - - libabseil >=20240722.0,<20240723.0a0 - - libcxx >=18 - - libzlib >=1.3.1,<2.0a0 - arch: arm64 - platform: osx - license: BSD-3-Clause - license_family: BSD - size: 2271580 - timestamp: 1735576361997 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_2.conda - sha256: 4420f8362c71251892ba1eeb957c5e445e4e1596c0c651c28d0d8b415fe120c7 - md5: b2fede24428726dd867611664fb372e8 - depends: - - __glibc >=2.17,<3.0.a0 - - libabseil * cxx17* - - libabseil >=20240722.0,<20240723.0a0 - - libgcc >=13 - - libstdcxx >=13 - constrains: - - re2 2024.07.02.* - arch: x86_64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 209793 - timestamp: 1735541054068 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_2.conda - sha256: 862c20de0120f802e618dcb25913d00c5b82f91f4be60b2d46a774e851adc2f6 - md5: 9a7dbbaab49f76a6f36e5c9d98e323a7 - depends: - - libabseil * cxx17* - - libabseil >=20240722.0,<20240723.0a0 - - libgcc >=13 - - libstdcxx >=13 - constrains: - - re2 2024.07.02.* - arch: aarch64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 204305 - timestamp: 1735540986919 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h07bc746_2.conda - sha256: 112a73ad483353751d4c5d63648c69a4d6fcebf5e1b698a860a3f5124fc3db96 - md5: 6b1e3624d3488016ca4f1ca0c412efaa - depends: - - __osx >=11.0 - - libabseil * cxx17* - - libabseil >=20240722.0,<20240723.0a0 - - libcxx >=18 - constrains: - - re2 2024.07.02.* - arch: arm64 - platform: osx - license: BSD-3-Clause - license_family: BSD - size: 167155 - timestamp: 1735541067807 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda - sha256: 0105bd108f19ea8e6a78d2d994a6d4a8db16d19a41212070d2d1d48a63c34161 - md5: a587892d3c13b6621a6091be690dbca2 - depends: - - libgcc-ng >=12 - arch: x86_64 - platform: linux - license: ISC - size: 205978 - timestamp: 1716828628198 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.20-h68df207_0.conda - sha256: 448df5ea3c5cf1af785aad46858d7a5be0522f4234a4dc9bb764f4d11ff3b981 - md5: 2e4a8f23bebdcb85ca8e5a0fbe75666a - depends: - - libgcc-ng >=12 - arch: aarch64 - platform: linux - license: ISC - size: 177394 - timestamp: 1716828514515 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda - sha256: fade8223e1e1004367d7101dd17261003b60aa576df6d7802191f8972f7470b1 - md5: a7ce36e284c5faaf93c220dfc39e3abd - depends: - - __osx >=11.0 - arch: arm64 - platform: osx - license: ISC - size: 164972 - timestamp: 1716828607917 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.48.0-hee588c1_1.conda - sha256: 22853d289ef6ec8a5b20f1aa261895b06525439990d3b139f8bfd0b5c5e32a3a - md5: 3fa05c528d8a1e2a67bbf1e36f22d3bc - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libzlib >=1.3.1,<2.0a0 - arch: x86_64 - platform: linux - license: Unlicense - size: 878223 - timestamp: 1737564987837 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.48.0-h5eb1b54_1.conda - sha256: 81dd9bf66c7f1d9064e007e2c787133100c406e7ca2de61dba9fb7b87372f255 - md5: 4f3a61fe206f20b27c385ee608bcdfda - depends: - - libgcc >=13 - - libzlib >=1.3.1,<2.0a0 - arch: aarch64 - platform: linux - license: Unlicense - size: 1044879 - timestamp: 1737565049785 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.48.0-h3f77e49_1.conda - sha256: 17c06940cc2a13fd6a17effabd6881b1477db38b2cd3ee2571092d293d3fdd75 - md5: 4c55169502ecddf8077973a987d08f08 - depends: - - __osx >=11.0 - - libzlib >=1.3.1,<2.0a0 - arch: arm64 - platform: osx - license: Unlicense - size: 852831 - timestamp: 1737564996616 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hf672d98_0.conda - sha256: 0407ac9fda2bb67e11e357066eff144c845801d00b5f664efbc48813af1e7bb9 - md5: be2de152d8073ef1c01b7728475f2fe7 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libzlib >=1.3.1,<2.0a0 - - openssl >=3.4.0,<4.0a0 - arch: x86_64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 304278 - timestamp: 1732349402869 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libssh2-1.11.1-ha41c0db_0.conda - sha256: 40f2af5357457546bd11cd64a3b9043d83865180f65ce602515c35f353be35c7 - md5: aeffe03c0e598f015aab08dbb04f6ee4 - depends: - - libgcc >=13 - - libzlib >=1.3.1,<2.0a0 - - openssl >=3.4.0,<4.0a0 - arch: aarch64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 311577 - timestamp: 1732349396421 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.1-h9cc3647_0.conda - sha256: f7047c6ed44bcaeb04432e8c74da87591940d091b0a3940c0d884b7faa8062e9 - md5: ddc7194676c285513706e5fc64f214d7 - depends: - - libzlib >=1.3.1,<2.0a0 - - openssl >=3.4.0,<4.0a0 - arch: arm64 - platform: osx - license: BSD-3-Clause - license_family: BSD - size: 279028 - timestamp: 1732349599461 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-hc0a3c3a_1.conda - sha256: 4661af0eb9bdcbb5fb33e5d0023b001ad4be828fccdcc56500059d56f9869462 - md5: 234a5554c53625688d51062645337328 - depends: - - libgcc 14.2.0 h77fa898_1 - arch: x86_64 - platform: linux - license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - size: 3893695 - timestamp: 1729027746910 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_1.conda - sha256: 519556d2c93f1b487091ce046d62e762286177f4a670ec10e16005177d0bcab3 - md5: 37f489acd39e22b623d2d1e5ac6d195c - depends: - - libgcc 14.2.0 he277a41_1 - arch: aarch64 - platform: linux - license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - size: 3816794 - timestamp: 1729089463404 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_1.conda - sha256: 25bb30b827d4f6d6f0522cc0579e431695503822f144043b93c50237017fffd8 - md5: 8371ac6457591af2cf6159439c1fd051 - depends: - - libstdcxx 14.2.0 hc0a3c3a_1 - arch: x86_64 - platform: linux - license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - size: 54105 - timestamp: 1729027780628 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_1.conda - sha256: 9f97461bd55a2745a7a0941f3502a047f15bfe7bb2952dc7fb204b3202f866fd - md5: 0e75771b8a03afae5a2c6ce71bc733f5 - depends: - - libstdcxx 14.2.0 h3f4de04_1 - arch: aarch64 - platform: linux - license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - size: 54133 - timestamp: 1729089498541 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libthrift-0.21.0-h0e7cc3e_0.conda - sha256: ebb395232973c18745b86c9a399a4725b2c39293c9a91b8e59251be013db42f0 - md5: dcb95c0a98ba9ff737f7ae482aef7833 - depends: - - __glibc >=2.17,<3.0.a0 - - libevent >=2.1.12,<2.1.13.0a0 - - libgcc >=13 - - libstdcxx >=13 - - libzlib >=1.3.1,<2.0a0 - - openssl >=3.3.2,<4.0a0 - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 425773 - timestamp: 1727205853307 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libthrift-0.21.0-h154c74f_0.conda - sha256: f04ab1417aca1687edff9c30d8423ace285eb8c053dc16d595c6e47cfeefb274 - md5: c28792bf37f4ecdce8e3cb9e40750650 - depends: - - libevent >=2.1.12,<2.1.13.0a0 - - libgcc >=13 - - libstdcxx >=13 - - libzlib >=1.3.1,<2.0a0 - - openssl >=3.3.2,<4.0a0 - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 417329 - timestamp: 1727205944238 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libthrift-0.21.0-h64651cc_0.conda - sha256: 7a6c7d5f58cbbc2ccd6493b4b821639fdb0701b9b04c737a949e8cb6adf1c9ad - md5: 7ce2bd2f650f8c31ad7ba4c7bfea61b7 - depends: - - __osx >=11.0 - - libcxx >=17 - - libevent >=2.1.12,<2.1.13.0a0 - - libzlib >=1.3.1,<2.0a0 - - openssl >=3.3.2,<4.0a0 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: APACHE - size: 324342 - timestamp: 1727206096912 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hd9ff511_3.conda - sha256: b224e16b88d76ea95e4af56e2bc638c603bd26a770b98d117d04541d3aafa002 - md5: 0ea6510969e1296cc19966fad481f6de - depends: - - __glibc >=2.17,<3.0.a0 - - lerc >=4.0.0,<5.0a0 - - libdeflate >=1.23,<1.24.0a0 - - libgcc >=13 - - libjpeg-turbo >=3.0.0,<4.0a0 - - liblzma >=5.6.3,<6.0a0 - - libstdcxx >=13 - - libwebp-base >=1.4.0,<2.0a0 - - libzlib >=1.3.1,<2.0a0 - - zstd >=1.5.6,<1.6.0a0 - arch: x86_64 - platform: linux - license: HPND - size: 428173 - timestamp: 1734398813264 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.0-h88f7998_3.conda - sha256: 5888bd66ba7606ae8596856c7dac800940ecad0aed77d6aa37db69d434c81cf0 - md5: 36a0ea4a173338c8725dc0807e99cf22 - depends: - - lerc >=4.0.0,<5.0a0 - - libdeflate >=1.23,<1.24.0a0 - - libgcc >=13 - - libjpeg-turbo >=3.0.0,<4.0a0 - - liblzma >=5.6.3,<6.0a0 - - libstdcxx >=13 - - libwebp-base >=1.4.0,<2.0a0 - - libzlib >=1.3.1,<2.0a0 - - zstd >=1.5.6,<1.6.0a0 - arch: aarch64 - platform: linux - license: HPND - size: 464699 - timestamp: 1734398752249 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-h551f018_3.conda - sha256: 91417846157e04992801438a496b151df89604b2e7c6775d6f701fcd0cbed5ae - md5: a5d084a957563e614ec0c0196d890654 - depends: - - __osx >=11.0 - - lerc >=4.0.0,<5.0a0 - - libcxx >=18 - - libdeflate >=1.23,<1.24.0a0 - - libjpeg-turbo >=3.0.0,<4.0a0 - - liblzma >=5.6.3,<6.0a0 - - libwebp-base >=1.4.0,<2.0a0 - - libzlib >=1.3.1,<2.0a0 - - zstd >=1.5.6,<1.6.0a0 - arch: arm64 - platform: osx - license: HPND - size: 370600 - timestamp: 1734398863052 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.10.0-h4c51ac1_0.conda - sha256: 8e41563ee963bf8ded06da45f4e70bf42f913cb3c2e79364eb3218deffa3cd74 - md5: aeccfff2806ae38430638ffbb4be9610 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - arch: x86_64 - platform: linux - license: MIT - license_family: MIT - size: 82745 - timestamp: 1737244366901 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.10.0-ha346350_0.conda - sha256: 9c333e07b76ae1ea2c882db764be52dc82f632be66d993a50b35ca9c5475074a - md5: c5166bcfb8348e8fc31ee16ec3981a5e - depends: - - libgcc >=13 - arch: aarch64 - platform: linux - license: MIT - license_family: MIT - size: 82679 - timestamp: 1737329054400 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.10.0-hda25de7_0.conda - sha256: aca3ef31d3dff5cefd3790742a5ee6548f1cf0201d0e8cee08b01da503484eb6 - md5: 5f741aed1d8d393586a5fdcaaa87f45c - depends: - - __osx >=11.0 - arch: arm64 - platform: osx - license: MIT - license_family: MIT - size: 83628 - timestamp: 1737244450097 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - sha256: 787eb542f055a2b3de553614b25f09eefb0a0931b0c87dbcce6efdfd92f04f18 - md5: 40b61aab5c7ba9ff276c41cfffe6b80b - depends: - - libgcc-ng >=12 - arch: x86_64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 33601 - timestamp: 1680112270483 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda - sha256: 616277b0c5f7616c2cdf36f6c316ea3f9aa5bb35f2d4476a349ab58b9b91675f - md5: 000e30b09db0b7c775b21695dff30969 - depends: - - libgcc-ng >=12 - arch: aarch64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 35720 - timestamp: 1680113474501 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.50.0-hb9d3cd8_0.conda - sha256: b4a8890023902aef9f1f33e3e35603ad9c2f16c21fdb58e968fa6c1bd3e94c0b - md5: 771ee65e13bc599b0b62af5359d80169 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - arch: x86_64 - platform: linux - license: MIT - license_family: MIT - size: 891272 - timestamp: 1737016632446 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuv-1.50.0-h86ecc28_0.conda - sha256: 67914c7f171d343059144d804c2f17fcd621a94e45f179a0fd843b8c1618823e - md5: 915db044076cbbdffb425170deb4ce38 - depends: - - libgcc >=13 - arch: aarch64 - platform: linux - license: MIT - license_family: MIT - size: 621056 - timestamp: 1737016626950 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libuv-1.50.0-h5505292_0.conda - sha256: d13fb49d4c8262bf2c44ffb2c77bb2b5d0f85fc6de76bdb75208efeccb29fce6 - md5: 20717343fb30798ab7c23c2e92b748c1 - depends: - - __osx >=11.0 - arch: arm64 - platform: osx - license: MIT - license_family: MIT - size: 418890 - timestamp: 1737016751326 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.5.0-h851e524_0.conda - sha256: c45283fd3e90df5f0bd3dbcd31f59cdd2b001d424cf30a07223655413b158eaf - md5: 63f790534398730f59e1b899c3644d4a - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - constrains: - - libwebp 1.5.0 - arch: x86_64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 429973 - timestamp: 1734777489810 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libwebp-base-1.5.0-h0886dbf_0.conda - sha256: b3d881a0ae08bb07fff7fa8ead506c8d2e0388733182fe4f216f3ec5d61ffcf0 - md5: 95ef4a689b8cc1b7e18b53784d88f96b - depends: - - libgcc >=13 - constrains: - - libwebp 1.5.0 - arch: aarch64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 362623 - timestamp: 1734779054659 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.5.0-h2471fea_0.conda - sha256: f8bdb876b4bc8cb5df47c28af29188de8911c3fea4b799a33743500149de3f4a - md5: 569466afeb84f90d5bb88c11cc23d746 - depends: - - __osx >=11.0 - constrains: - - libwebp 1.5.0 - arch: arm64 - platform: osx - license: BSD-3-Clause - license_family: BSD - size: 290013 - timestamp: 1734777593617 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda - sha256: 666c0c431b23c6cec6e492840b176dde533d48b7e6fb8883f5071223433776aa - md5: 92ed62436b625154323d40d5f2f11dd7 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - pthread-stubs - - xorg-libxau >=1.0.11,<2.0a0 - - xorg-libxdmcp - arch: x86_64 - platform: linux - license: MIT - license_family: MIT - size: 395888 - timestamp: 1727278577118 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcb-1.17.0-h262b8f6_0.conda - sha256: 461cab3d5650ac6db73a367de5c8eca50363966e862dcf60181d693236b1ae7b - md5: cd14ee5cca2464a425b1dbfc24d90db2 - depends: - - libgcc >=13 - - pthread-stubs - - xorg-libxau >=1.0.11,<2.0a0 - - xorg-libxdmcp - arch: aarch64 - platform: linux - license: MIT - license_family: MIT - size: 397493 - timestamp: 1727280745441 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxcb-1.17.0-hdb1d25a_0.conda - sha256: bd3816218924b1e43b275863e21a3e13a5db4a6da74cca8e60bc3c213eb62f71 - md5: af523aae2eca6dfa1c8eec693f5b9a79 - depends: - - __osx >=11.0 - - pthread-stubs - - xorg-libxau >=1.0.11,<2.0a0 - - xorg-libxdmcp - arch: arm64 - platform: osx - license: MIT - license_family: MIT - size: 323658 - timestamp: 1727278733917 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - sha256: 6ae68e0b86423ef188196fff6207ed0c8195dd84273cb5623b85aa08033a410c - md5: 5aa797f8787fe7a17d1b0821485b5adc - depends: - - libgcc-ng >=12 - arch: x86_64 - platform: linux - license: LGPL-2.1-or-later - size: 100393 - timestamp: 1702724383534 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda - sha256: 6b46c397644091b8a26a3048636d10b989b1bf266d4be5e9474bf763f828f41f - md5: b4df5d7d4b63579d081fd3a4cf99740e - depends: - - libgcc-ng >=12 - arch: aarch64 - platform: linux - license: LGPL-2.1-or-later - size: 114269 - timestamp: 1702724369203 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.5-h0d44e9d_1.conda - sha256: 306e18aa647d8208ad2cd0e62d84933222b2fbe93d2d53cd5283d2256b1d54de - md5: f5b05674697ae7d2c5932766695945e1 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libiconv >=1.17,<2.0a0 - - liblzma >=5.6.3,<6.0a0 - - libzlib >=1.3.1,<2.0a0 - constrains: - - icu <0.0a0 - arch: x86_64 - platform: linux - license: MIT - license_family: MIT - size: 689993 - timestamp: 1733443678322 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.5-h2e0c361_1.conda - sha256: dc0e86d35a836af6e99d18f50c6551fc64c53ed3a3da5a9fea90e78763cf14b4 - md5: 63410f85031930cde371dfe0ee89109a - depends: - - icu >=75.1,<76.0a0 - - libgcc >=13 - - libiconv >=1.17,<2.0a0 - - liblzma >=5.6.3,<6.0a0 - - libzlib >=1.3.1,<2.0a0 - arch: aarch64 - platform: linux - license: MIT - license_family: MIT - size: 732155 - timestamp: 1733443825814 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.5-h178c5d8_1.conda - sha256: d7af3f25a4cece170502acd38f2dafbea4521f373f46dcb28a37fbe6ac2da544 - md5: 3dc3cff0eca1640a6acbbfab2f78139e - depends: - - __osx >=11.0 - - icu >=75.1,<76.0a0 - - libiconv >=1.17,<2.0a0 - - liblzma >=5.6.3,<6.0a0 - - libzlib >=1.3.1,<2.0a0 - arch: arm64 - platform: osx - license: MIT - license_family: MIT - size: 582898 - timestamp: 1733443841584 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - sha256: d4bfe88d7cb447768e31650f06257995601f89076080e76df55e3112d4e47dc4 - md5: edb0dca6bc32e4f4789199455a1dbeb8 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - constrains: - - zlib 1.3.1 *_2 - arch: x86_64 - platform: linux - license: Zlib - license_family: Other - size: 60963 - timestamp: 1727963148474 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - sha256: 5a2c1eeef69342e88a98d1d95bff1603727ab1ff4ee0e421522acd8813439b84 - md5: 08aad7cbe9f5a6b460d0976076b6ae64 - depends: - - libgcc >=13 - constrains: - - zlib 1.3.1 *_2 - arch: aarch64 - platform: linux - license: Zlib - license_family: Other - size: 66657 - timestamp: 1727963199518 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - sha256: ce34669eadaba351cd54910743e6a2261b67009624dbc7daeeafdef93616711b - md5: 369964e85dc26bfe78f41399b366c435 - depends: - - __osx >=11.0 - constrains: - - zlib 1.3.1 *_2 - arch: arm64 - platform: osx - license: Zlib - license_family: Other - size: 46438 - timestamp: 1727963202283 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda - sha256: b92a669f2059874ebdcb69041b6c243d68ffc3fb356ac1339cec44aeb27245d7 - md5: c4d54bfd3817313ce758aa76283b118d - depends: - - __osx >=11.0 - constrains: - - openmp 19.1.7|19.1.7.* - arch: arm64 - platform: osx - license: Apache-2.0 WITH LLVM-exception - license_family: APACHE - size: 280830 - timestamp: 1736986295869 -- conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.10.0-h5888daf_1.conda - sha256: 47326f811392a5fd3055f0f773036c392d26fdb32e4d8e7a8197eed951489346 - md5: 9de5350a85c4a20c685259b889aa6393 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libstdcxx >=13 - arch: x86_64 - platform: linux - license: BSD-2-Clause - license_family: BSD - size: 167055 - timestamp: 1733741040117 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.10.0-h5ad3122_1.conda - sha256: 67e55058d275beea76c1882399640c37b5be8be4eb39354c94b610928e9a0573 - md5: 6654e411da94011e8fbe004eacb8fe11 - depends: - - libgcc >=13 - - libstdcxx >=13 - arch: aarch64 - platform: linux - license: BSD-2-Clause - license_family: BSD - size: 184953 - timestamp: 1733740984533 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.10.0-h286801f_1.conda - sha256: 94d3e2a485dab8bdfdd4837880bde3dd0d701e2b97d6134b8806b7c8e69c8652 - md5: 01511afc6cc1909c5303cf31be17b44f - depends: - - __osx >=11.0 - - libcxx >=18 - arch: arm64 - platform: osx - license: BSD-2-Clause - license_family: BSD - size: 148824 - timestamp: 1733741047892 -- conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_1.conda - sha256: 0fbacdfb31e55964152b24d5567e9a9996e1e7902fb08eb7d91b5fd6ce60803a - md5: fee3164ac23dfca50cfcc8b85ddefb81 - depends: - - mdurl >=0.1,<1 - - python >=3.9 - license: MIT - license_family: MIT - size: 64430 - timestamp: 1733250550053 -- conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_1.conda - sha256: 4a6bf68d2a2b669fecc9a4a009abd1cf8e72c2289522ff00d81b5a6e51ae78f5 - md5: eb227c3e0bf58f5bd69c0532b157975b - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - constrains: - - jinja2 >=3.0.0 - arch: x86_64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 24604 - timestamp: 1733219911494 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.2-py312h74ce7d3_1.conda - sha256: 1d500158262f30b9c23e37d1c861fe76e127a3926d69b3b38c25d20d3faa6f9f - md5: bc8607ab678073a0441808a31465f4fb - depends: - - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - constrains: - - jinja2 >=3.0.0 - arch: aarch64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 25079 - timestamp: 1733220639175 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312h998013c_1.conda - sha256: 4aa997b244014d3707eeef54ab0ee497d12c0d0d184018960cce096169758283 - md5: 46e547061080fddf9cf95a0327e8aba6 - depends: - - __osx >=11.0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - constrains: - - jinja2 >=3.0.0 - arch: arm64 - platform: osx - license: BSD-3-Clause - license_family: BSD - size: 24048 - timestamp: 1733219945697 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020605-release.conda - noarch: python - sha256: f33974d10b1d4e642f287392b461a9437bffa776547f3537116d8018caf3da7c - md5: 61f314b8a3d2ddaa878b1056e09e48eb - depends: - - max-core ==25.1.0.dev2025020605 release - - max-python >=25.1.0.dev2025020605,<26.0a0 - - mojo-jupyter ==25.1.0.dev2025020605 release - - mblack ==25.1.0.dev2025020605 release - license: LicenseRef-Modular-Proprietary - size: 9922 - timestamp: 1738819257916 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025020605-release.conda - sha256: f4f507695eebb8fbbd6107922b4a2d211ab622983f34a24fc8036faf2a7887e3 - md5: 3d4f12391220243dcfc810b5352b2a37 - depends: - - mblack ==25.1.0.dev2025020605 release - license: LicenseRef-Modular-Proprietary - size: 244769750 - timestamp: 1738819214550 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025020605-release.conda - sha256: e2a216b17d89af7cb2aa1a77a7b8416f04724fe0adbf1d36637b36c632b3517a - md5: 8207a6065094dbb73c472a03ea6df87d - depends: - - mblack ==25.1.0.dev2025020605 release - license: LicenseRef-Modular-Proprietary - size: 247282125 - timestamp: 1738819257916 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025020605-release.conda - sha256: 6bf41ea344e035b21701a362dd22265eeaa72c08687287b7c13a664b163d893d - md5: c34a8e1ead4712284ec549d122aa5f9c - depends: - - mblack ==25.1.0.dev2025020605 release - license: LicenseRef-Modular-Proprietary - size: 209659254 - timestamp: 1738820968072 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025020605-release.conda - noarch: python - sha256: d8a81b52c2a513d083e81f2217e98409a1a0d885a8c446bf4a5852f6c8612725 - md5: b1adba04b753ac70558cedaee35fe306 - depends: - - max-core ==25.1.0.dev2025020605 release - - python - - fastapi - - httpx - - huggingface_hub - - numpy >=1.18,<2.0 - - opentelemetry-api - - opentelemetry-exporter-otlp-proto-http >=1.27.0 - - opentelemetry-exporter-prometheus >=0.48b0 - - opentelemetry-sdk >=1.27.0 - - pillow - - pydantic-settings >=2.4.0,<3 - - pydantic >=2.4.0,<3 - - pyinstrument - - python-json-logger - - sse-starlette >=2.1.3,<3 - - transformers - - typing_extensions - - uvicorn - license: LicenseRef-Modular-Proprietary - size: 120666001 - timestamp: 1738819214550 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025020605-release.conda - noarch: python - sha256: 505eee35cbd7705c48c9d561cb6f38479fb2f3c7d893c51d930c9b4e16da7104 - md5: 9c5aaecd6d6500c081363552c952c213 - depends: - - max-core ==25.1.0.dev2025020605 release - - python - - fastapi - - httpx - - huggingface_hub - - numpy >=1.18,<2.0 - - opentelemetry-api - - opentelemetry-exporter-otlp-proto-http >=1.27.0 - - opentelemetry-exporter-prometheus >=0.48b0 - - opentelemetry-sdk >=1.27.0 - - pillow - - pydantic-settings >=2.4.0,<3 - - pydantic >=2.4.0,<3 - - pyinstrument - - python-json-logger - - sse-starlette >=2.1.3,<3 - - transformers - - typing_extensions - - uvicorn - license: LicenseRef-Modular-Proprietary - size: 123043775 - timestamp: 1738819257916 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025020605-release.conda - noarch: python - sha256: b1d2614caf1da1bca20540127b0f71b6357f75b155eb93bac4fcaa10b5737f7e - md5: be243c36de2750e5a51af50a571e0e98 - depends: - - max-core ==25.1.0.dev2025020605 release - - python - - fastapi - - httpx - - huggingface_hub - - numpy >=1.18,<2.0 - - opentelemetry-api - - opentelemetry-exporter-otlp-proto-http >=1.27.0 - - opentelemetry-exporter-prometheus >=0.48b0 - - opentelemetry-sdk >=1.27.0 - - pillow - - pydantic-settings >=2.4.0,<3 - - pydantic >=2.4.0,<3 - - pyinstrument - - python-json-logger - - sse-starlette >=2.1.3,<3 - - transformers - - typing_extensions - - uvicorn - license: LicenseRef-Modular-Proprietary - size: 108461286 - timestamp: 1738820968072 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020605-release.conda - noarch: python - sha256: 8cbc7067cdf1cce1a11e2b385168697793c4090e37fcee65c19b0d3782320ce8 - md5: b8dc96fb459fbeb13a3dcee463b17613 - depends: - - python >=3.9,<3.13 - - click >=8.0.0 - - mypy_extensions >=0.4.3 - - packaging >=22.0 - - pathspec >=0.9.0 - - platformdirs >=2 - - typing_extensions >=v4.12.2 - - python - license: MIT - size: 130824 - timestamp: 1738819257916 -- conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda - sha256: 78c1bbe1723449c52b7a9df1af2ee5f005209f67e40b6e1d3c7619127c43b1c7 - md5: 592132998493b3ff25fd7479396e8351 - depends: - - python >=3.9 - license: MIT - license_family: MIT - size: 14465 - timestamp: 1733255681319 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020605-release.conda - noarch: python - sha256: a98de01d436333c23597e626195c5d49272c1c5d3359889979bafb8f19d4f3bf - md5: f68f7d08fc12083075182da8482fcfa9 - depends: - - max-core ==25.1.0.dev2025020605 release - - python >=3.9,<3.13 - - jupyter_client >=8.6.2,<8.7 - - python - license: LicenseRef-Modular-Proprietary - size: 22925 - timestamp: 1738819257916 -- conda: 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 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 61507 - timestamp: 1733913288935 -- conda: 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 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 63077 - timestamp: 1733913233032 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/multidict-6.1.0-py312hdb8e49c_1.conda - sha256: 482fd09fb798090dc8cce2285fa69f43b1459099122eac2fb112d9b922b9f916 - md5: 0048335516fed938e4dd2c457b4c5b9b - depends: - - __osx >=11.0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: APACHE - size: 55968 - timestamp: 1729065664275 -- conda: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.15-py312h98912ed_1.conda - sha256: bb612a921fafda6375a2204ffebd8811db8dd3b8f25ac9886cc9bcbff7e3664e - md5: 5a64b9f44790d9a187a85366dd0ffa8d - depends: - - dill >=0.3.6 - - libgcc-ng >=12 - - python >=3.12.0rc3,<3.13.0a0 - - python_abi 3.12.* *_cp312 - arch: x86_64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 335666 - timestamp: 1695459025249 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.15-py312hdd3e373_1.conda - sha256: c53362cdf346f314e111faddc53061e3fd2ece0ba68ca303f5dd109976df158f - md5: 173a1692d2b3ddc265dc6afd21a869b3 - depends: - - dill >=0.3.6 - - libgcc-ng >=12 - - python >=3.12.0rc3,<3.13.0a0 - - python >=3.12.0rc3,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - arch: aarch64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 336110 - timestamp: 1695459137796 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/multiprocess-0.70.15-py312h02f2b3b_1.conda - sha256: 8041371e3ec3fbc2ca13c71b0180672896e6382e62892d9f6b11a4c5dd675951 - md5: 910ef2223c71902175418d9163152788 - depends: - - dill >=0.3.6 - - python >=3.12.0rc3,<3.13.0a0 - - python >=3.12.0rc3,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - arch: arm64 - platform: osx - license: BSD-3-Clause - license_family: BSD - size: 335147 - timestamp: 1695459275360 -- conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - sha256: 1895f47b7d68581a6facde5cb13ab8c2764c2e53a76bd746f8f98910dc4e08fe - md5: 29097e7ea634a45cc5386b95cac6568f - depends: - - python >=3.9 - license: MIT - license_family: MIT - size: 10854 - timestamp: 1733230986902 -- conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda - sha256: 3fde293232fa3fca98635e1167de6b7c7fda83caf24b9d6c91ec9eefb4f4d586 - md5: 47e340acb35de30501a76c7c799c41d7 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - arch: x86_64 - platform: linux - license: X11 AND BSD-3-Clause - size: 891641 - timestamp: 1738195959188 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-ha32ae93_3.conda - sha256: 91cfb655a68b0353b2833521dc919188db3d8a7f4c64bea2c6a7557b24747468 - md5: 182afabe009dc78d8b73100255ee6868 - depends: - - libgcc >=13 - arch: aarch64 - platform: linux - license: X11 AND BSD-3-Clause - size: 926034 - timestamp: 1738196018799 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda - sha256: 2827ada40e8d9ca69a153a45f7fd14f32b2ead7045d3bbb5d10964898fe65733 - md5: 068d497125e4bf8a66bf707254fff5ae - depends: - - __osx >=11.0 - arch: arm64 - platform: osx - license: X11 AND BSD-3-Clause - size: 797030 - timestamp: 1738196177597 -- conda: https://conda.anaconda.org/conda-forge/linux-64/nlohmann_json-3.11.3-he02047a_1.conda - sha256: ce4bcced4f8eea71b7cac8bc3daac097abf7a5792f278cd811dedada199500c1 - md5: e46f7ac4917215b49df2ea09a694a3fa - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc-ng >=12 - - libstdcxx-ng >=12 - arch: x86_64 - platform: linux - license: MIT - license_family: MIT - size: 122743 - timestamp: 1723652407663 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/nlohmann_json-3.11.3-h0a1ffab_1.conda - sha256: c90b1f11fc337d90a9e4c5aeeacac1418c5ba6a195097086566d38bb2ecf0f24 - md5: f2bd10ff23ab5c87327439c4499b3f3e - depends: - - libgcc-ng >=12 - - libstdcxx-ng >=12 - arch: aarch64 - platform: linux - license: MIT - license_family: MIT - size: 122755 - timestamp: 1723652622631 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/nlohmann_json-3.11.3-h00cdb27_1.conda - sha256: 3f4e6a4fa074bb297855f8111ab974dab6d9f98b7d4317d4dd46f8687ee2363b - md5: d2dee849c806430eee64d3acc98ce090 - depends: - - __osx >=11.0 - - libcxx >=16 - arch: arm64 - platform: osx - license: MIT - license_family: MIT - size: 123250 - timestamp: 1723652704997 -- conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda - sha256: fe3459c75cf84dcef6ef14efcc4adb0ade66038ddd27cadb894f34f4797687d8 - md5: d8285bea2a350f63fab23bf460221f3f - depends: - - libblas >=3.9.0,<4.0a0 - - libcblas >=3.9.0,<4.0a0 - - libgcc-ng >=12 - - liblapack >=3.9.0,<4.0a0 - - libstdcxx-ng >=12 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - constrains: - - numpy-base <0a0 - arch: x86_64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 7484186 - timestamp: 1707225809722 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda - sha256: 23767677a7790bee5457d5e75ebd508b9a31c5354216f4310dd1acfca3f7a6f9 - md5: 9cebf5a06cb87d4569cd68df887af476 - depends: - - libblas >=3.9.0,<4.0a0 - - libcblas >=3.9.0,<4.0a0 - - libgcc-ng >=12 - - liblapack >=3.9.0,<4.0a0 - - libstdcxx-ng >=12 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - constrains: - - numpy-base <0a0 - arch: aarch64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 6614296 - timestamp: 1707225994762 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda - sha256: c8841d6d6f61fd70ca80682efbab6bdb8606dc77c68d8acabfbd7c222054f518 - md5: d83fc83d589e2625a3451c9a7e21047c - depends: - - libblas >=3.9.0,<4.0a0 - - libcblas >=3.9.0,<4.0a0 - - libcxx >=16 - - liblapack >=3.9.0,<4.0a0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - constrains: - - numpy-base <0a0 - arch: arm64 - platform: osx - license: BSD-3-Clause - license_family: BSD - size: 6073136 - timestamp: 1707226249608 -- conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.3-h5fbd93e_0.conda - sha256: 5bee706ea5ba453ed7fd9da7da8380dd88b865c8d30b5aaec14d2b6dd32dbc39 - md5: 9e5816bc95d285c115a3ebc2f8563564 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libpng >=1.6.44,<1.7.0a0 - - libstdcxx >=13 - - libtiff >=4.7.0,<4.8.0a0 - - libzlib >=1.3.1,<2.0a0 - arch: x86_64 - platform: linux - license: BSD-2-Clause - license_family: BSD - size: 342988 - timestamp: 1733816638720 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openjpeg-2.5.3-h3f56577_0.conda - sha256: 92d310033e20538e896f4e4b1ea4205eb6604eee7c5c651c4965a0d8d3ca0f1d - md5: 04231368e4af50d11184b50e14250993 - depends: - - libgcc >=13 - - libpng >=1.6.44,<1.7.0a0 - - libstdcxx >=13 - - libtiff >=4.7.0,<4.8.0a0 - - libzlib >=1.3.1,<2.0a0 - arch: aarch64 - platform: linux - license: BSD-2-Clause - license_family: BSD - size: 377796 - timestamp: 1733816683252 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/openjpeg-2.5.3-h8a3d83b_0.conda - sha256: 1d59bc72ca7faac06d349c1a280f5cfb8a57ee5896f1e24225a997189d7418c7 - md5: 4b71d78648dbcf68ce8bf22bb07ff838 - depends: - - __osx >=11.0 - - libcxx >=18 - - libpng >=1.6.44,<1.7.0a0 - - libtiff >=4.7.0,<4.8.0a0 - - libzlib >=1.3.1,<2.0a0 - arch: arm64 - platform: osx - license: BSD-2-Clause - license_family: BSD - size: 319362 - timestamp: 1733816781741 -- conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.0-h7b32b05_1.conda - sha256: f62f6bca4a33ca5109b6d571b052a394d836956d21b25b7ffd03376abf7a481f - md5: 4ce6875f75469b2757a65e10a5d05e31 - depends: - - __glibc >=2.17,<3.0.a0 - - ca-certificates - - libgcc >=13 - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 2937158 - timestamp: 1736086387286 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.0-hd08dc88_1.conda - sha256: 60d34454b861501d7355f25a7b39fdb5de8d56fca49b5bcbe8b8142b7d82dce4 - md5: e21c4767e783a58c373fdb99de6211bf - depends: - - ca-certificates - - libgcc >=13 - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 3469279 - timestamp: 1736088141230 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.0-h81ee809_1.conda - sha256: 97772762abc70b3a537683ca9fc3ff3d6099eb64e4aba3b9c99e6fce48422d21 - md5: 22f971393637480bda8c679f374d8861 - depends: - - __osx >=11.0 - - ca-certificates - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: Apache - size: 2936415 - timestamp: 1736086108693 -- conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.29.0-pyhd8ed1ab_1.conda - sha256: 296280c8ace35c0a1cf72bed1077f248b3af903c3bf92332f1783a207cb5abdb - md5: 307b05402c1a382f2f09426492dee8f8 - depends: - - deprecated >=1.2.6 - - importlib-metadata >=6.0,<=8.5.0 - - python >=3.9 - license: Apache-2.0 - license_family: APACHE - size: 44166 - timestamp: 1734132973331 -- conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.29.0-pyhd8ed1ab_0.conda - sha256: ae9776efe52564e0d6711cfcee7c54439273e57a3999f7f796f66e862f58aae9 - md5: 0c02e74d26bce3fec93b227cf7ea6e6b - depends: - - backoff >=1.10.0,<3.0.0 - - opentelemetry-proto 1.29.0 - - python >=3.9 - license: Apache-2.0 - license_family: APACHE - size: 18922 - timestamp: 1734310457116 -- conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.29.0-pyhd8ed1ab_1.conda - sha256: 5d61db9d5b4f91b3932f5f2348920d5b7fdaa09e52c8ea054cf7bf3f21677c9c - md5: 223f4e56a29601c887f0dc467034af5b - depends: - - deprecated >=1.2.6 - - googleapis-common-protos >=1.52,<2.dev0 - - opentelemetry-api >=1.15,<2.dev0 - - opentelemetry-exporter-otlp-proto-common 1.29.0 - - opentelemetry-proto 1.29.0 - - opentelemetry-sdk 1.29.0 - - python >=3.9 - - requests >=2.7,<3.dev0 - license: Apache-2.0 - license_family: APACHE - size: 17147 - timestamp: 1734345675510 -- conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-prometheus-1.12.0rc1-pyhd8ed1ab_0.conda - sha256: b8239230dbbdb491401e41b53bd9f21d60551cedef1a8d5807fca1bf9bdd331c - md5: 1ddc95052b31147d1e10d818cf519cf5 - depends: - - opentelemetry-api >=1.10.0 - - opentelemetry-sdk >=1.10.0 - - prometheus_client >=0.5.0,<1.0.0 - - python >=3.6 - license: Apache-2.0 - license_family: APACHE - size: 14721 - timestamp: 1695214221489 -- conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.29.0-pyhd8ed1ab_0.conda - sha256: 200a7cb8acc8a0ddd6ef55c5460cec871b6a265929b240a0296c0ccb9c8d9758 - md5: e2a6d2ad10b813c7fdc1c64aac376128 - depends: - - protobuf <6.0,>=5.0 - - python >=3.9 - license: Apache-2.0 - license_family: APACHE - size: 37235 - timestamp: 1734291034372 -- conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.29.0-pyhd8ed1ab_0.conda - sha256: 7b36629d8b8be8a019fcfd1518d7b7f862dd25de96f8adcadb93e4fd12cf9bd6 - md5: 2a8893f06e6ebda4bfa78875bc923ea4 - depends: - - opentelemetry-api 1.29.0 - - opentelemetry-semantic-conventions 0.50b0 - - python >=3.9 - - typing-extensions >=3.7.4 - - typing_extensions >=3.7.4 - license: Apache-2.0 - license_family: APACHE - size: 77645 - timestamp: 1734297838999 -- conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.50b0-pyh3cfb1c2_0.conda - sha256: 6526e70368d5bf66ef0eaa51fb800d53782dde71a24bd38f40139919a6f784dc - md5: f7111fa4188d646c8108e232d024cb99 - depends: - - deprecated >=1.2.6 - - opentelemetry-api 1.29.0 - - python >=3.9 - license: Apache-2.0 - license_family: APACHE - size: 86084 - timestamp: 1734208980168 -- conda: https://conda.anaconda.org/conda-forge/linux-64/orc-2.0.3-h12ee42a_2.conda - sha256: dff5cc8023905782c86b3459055f26d4b97890e403b0698477c9fed15d8669cc - md5: 4f6f9f3f80354ad185e276c120eac3f0 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libprotobuf >=5.28.3,<5.28.4.0a0 - - libstdcxx >=13 - - libzlib >=1.3.1,<2.0a0 - - lz4-c >=1.10.0,<1.11.0a0 - - snappy >=1.2.1,<1.3.0a0 - - tzdata - - zstd >=1.5.6,<1.6.0a0 - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 1188881 - timestamp: 1735630209320 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/orc-2.0.3-hdd485aa_2.conda - sha256: b6c67542352a86cdf143c3066d5cda855b74454a156eedcd8958b494c6a32a83 - md5: d19f01b42e5d6a2908b65df435aff42f - depends: - - libgcc >=13 - - libprotobuf >=5.28.3,<5.28.4.0a0 - - libstdcxx >=13 - - libzlib >=1.3.1,<2.0a0 - - lz4-c >=1.10.0,<1.11.0a0 - - snappy >=1.2.1,<1.3.0a0 - - tzdata - - zstd >=1.5.6,<1.6.0a0 - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 1167714 - timestamp: 1735630248837 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/orc-2.0.3-h0ff2369_2.conda - sha256: cca330695f3bdb8c0e46350c29cd4af3345865544e36f1d7c9ba9190ad22f5f4 - md5: 24b1897c0d24afbb70704ba998793b78 - depends: - - __osx >=11.0 - - libcxx >=18 - - libprotobuf >=5.28.3,<5.28.4.0a0 - - libzlib >=1.3.1,<2.0a0 - - lz4-c >=1.10.0,<1.11.0a0 - - snappy >=1.2.1,<1.3.0a0 - - tzdata - - zstd >=1.5.6,<1.6.0a0 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: Apache - size: 438520 - timestamp: 1735630624140 -- conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - sha256: da157b19bcd398b9804c5c52fc000fcb8ab0525bdb9c70f95beaa0bb42f85af1 - md5: 3bfed7e6228ebf2f7b9eaa47f1b4e2aa - depends: - - python >=3.8 - license: Apache-2.0 - license_family: APACHE - size: 60164 - timestamp: 1733203368787 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.3-py312hf9745cd_1.conda - sha256: ad275a83bfebfa8a8fee9b0569aaf6f513ada6a246b2f5d5b85903d8ca61887e - md5: 8bce4f6caaf8c5448c7ac86d87e26b4b - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libstdcxx >=13 - - numpy >=1.19,<3 - - numpy >=1.22.4 - - python >=3.12,<3.13.0a0 - - python-dateutil >=2.8.1 - - python-tzdata >=2022a - - python_abi 3.12.* *_cp312 - - pytz >=2020.1,<2024.2 - arch: x86_64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 15436913 - timestamp: 1726879054912 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pandas-2.2.3-py312ha2895bd_2.conda - sha256: a34b10077de97eea72c81cb96e3ddc7d48320c0fc7d9b28ba8d9d2bead1d8297 - md5: 39a91ac336d350513de6aad56da5a920 - depends: - - libgcc >=13 - - libstdcxx >=13 - - numpy >=1.19,<3 - - numpy >=1.22.4 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python-dateutil >=2.8.1 - - python-tzdata >=2022a - - python_abi 3.12.* *_cp312 - - pytz >=2020.1,<2024.2 - constrains: - - fsspec >=2022.11.0 - - s3fs >=2022.11.0 - - fastparquet >=2022.12.0 - - pyreadstat >=1.2.0 - - qtpy >=2.3.0 - - scipy >=1.10.0 - - beautifulsoup4 >=4.11.2 - - gcsfs >=2022.11.0 - - numexpr >=2.8.4 - - sqlalchemy >=2.0.0 - - pyxlsb >=1.0.10 - - numba >=0.56.4 - - lxml >=4.9.2 - - matplotlib >=3.6.3 - - psycopg2 >=2.9.6 - - tzdata >=2022.7 - - bottleneck >=1.3.6 - - xarray >=2022.12.0 - - xlsxwriter >=3.0.5 - - zstandard >=0.19.0 - - blosc >=1.21.3 - - pytables >=3.8.0 - - openpyxl >=3.1.0 - - pyqt5 >=5.15.8 - - tabulate >=0.9.0 - arch: aarch64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 15162992 - timestamp: 1736811533875 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.3-py312hcd31e36_1.conda - sha256: ff0cb54b5d058c7987b4a0984066e893642d1865a7bb695294b6172e2fcdc457 - md5: c68bfa69e6086c381c74e16fd72613a8 - depends: - - __osx >=11.0 - - libcxx >=17 - - numpy >=1.19,<3 - - numpy >=1.22.4 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python-dateutil >=2.8.1 - - python-tzdata >=2022a - - python_abi 3.12.* *_cp312 - - pytz >=2020.1,<2024.2 - arch: arm64 - platform: osx - license: BSD-3-Clause - license_family: BSD - size: 14470437 - timestamp: 1726878887799 -- conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda - sha256: 9f64009cdf5b8e529995f18e03665b03f5d07c0b17445b8badef45bde76249ee - md5: 617f15191456cc6a13db418a275435e5 - depends: - - python >=3.9 - license: MPL-2.0 - license_family: MOZILLA - size: 41075 - timestamp: 1733233471940 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-11.1.0-py312h80c1187_0.conda - sha256: 5c347962202b55ae4d8a463e0555c5c6ca33396266a08284bf1384399894e541 - md5: d3894405f05b2c0f351d5de3ae26fa9c - depends: - - __glibc >=2.17,<3.0.a0 - - freetype >=2.12.1,<3.0a0 - - lcms2 >=2.16,<3.0a0 - - libgcc >=13 - - libjpeg-turbo >=3.0.0,<4.0a0 - - libtiff >=4.7.0,<4.8.0a0 - - libwebp-base >=1.5.0,<2.0a0 - - libxcb >=1.17.0,<2.0a0 - - libzlib >=1.3.1,<2.0a0 - - openjpeg >=2.5.3,<3.0a0 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - - tk >=8.6.13,<8.7.0a0 - arch: x86_64 - platform: linux - license: HPND - size: 42749785 - timestamp: 1735929845390 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pillow-11.1.0-py312h719f0cf_0.conda - sha256: 7559556ffc44bda777f85c2e5acd6b5756fa5822c0271b329b7b9a3c6bb20349 - md5: 77e0ec0a6fc847d317f204aa15b59f6b - depends: - - freetype >=2.12.1,<3.0a0 - - lcms2 >=2.16,<3.0a0 - - libgcc >=13 - - libjpeg-turbo >=3.0.0,<4.0a0 - - libtiff >=4.7.0,<4.8.0a0 - - libwebp-base >=1.5.0,<2.0a0 - - libxcb >=1.17.0,<2.0a0 - - libzlib >=1.3.1,<2.0a0 - - openjpeg >=2.5.3,<3.0a0 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - - tk >=8.6.13,<8.7.0a0 - arch: aarch64 - platform: linux - license: HPND - size: 41362848 - timestamp: 1735932311857 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-11.1.0-py312h50aef2c_0.conda - sha256: b29b7c915053e06a7a5b4118760202c572c9c35d23bd6ce8e73270b6a50e50ee - md5: 94d6ba8cd468668a9fb04193b0f4b36e - depends: - - __osx >=11.0 - - freetype >=2.12.1,<3.0a0 - - lcms2 >=2.16,<3.0a0 - - libjpeg-turbo >=3.0.0,<4.0a0 - - libtiff >=4.7.0,<4.8.0a0 - - libwebp-base >=1.5.0,<2.0a0 - - libxcb >=1.17.0,<2.0a0 - - libzlib >=1.3.1,<2.0a0 - - openjpeg >=2.5.3,<3.0a0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - - tk >=8.6.13,<8.7.0a0 - arch: arm64 - platform: osx - license: HPND - size: 42852329 - timestamp: 1735930118976 -- conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda - sha256: bb50f6499e8bc1d1a26f17716c97984671121608dc0c3ecd34858112bce59a27 - md5: 577852c7e53901ddccc7e6a9959ddebe - depends: - - python >=3.9 - license: MIT - license_family: MIT - size: 20448 - timestamp: 1733232756001 -- conda: https://conda.anaconda.org/conda-forge/linux-64/prometheus-cpp-1.3.0-ha5d0236_0.conda - sha256: 013669433eb447548f21c3c6b16b2ed64356f726b5f77c1b39d5ba17a8a4b8bc - md5: a83f6a2fdc079e643237887a37460668 - depends: - - __glibc >=2.17,<3.0.a0 - - libcurl >=8.10.1,<9.0a0 - - libgcc >=13 - - libstdcxx >=13 - - libzlib >=1.3.1,<2.0a0 - - zlib - arch: x86_64 - platform: linux - license: MIT - license_family: MIT - size: 199544 - timestamp: 1730769112346 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/prometheus-cpp-1.3.0-h7938499_0.conda - sha256: 9350d7bbc3982a732ff13a7fd17b585509e3b7d0191ac7b810cc3224868e3648 - md5: 10f4301290e51c49979ff98d1bdf2556 - depends: - - libcurl >=8.10.1,<9.0a0 - - libgcc >=13 - - libstdcxx >=13 - - libzlib >=1.3.1,<2.0a0 - - zlib - arch: aarch64 - platform: linux - license: MIT - license_family: MIT - size: 211335 - timestamp: 1730769181127 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/prometheus-cpp-1.3.0-h0967b3e_0.conda - sha256: 851a77ae1a8e90db9b9f3c4466abea7afb52713c3d98ceb0d37ba6ff27df2eff - md5: 7172339b49c94275ba42fec3eaeda34f - depends: - - __osx >=11.0 - - libcurl >=8.10.1,<9.0a0 - - libcxx >=18 - - libzlib >=1.3.1,<2.0a0 - - zlib - arch: arm64 - platform: osx - license: MIT - license_family: MIT - size: 173220 - timestamp: 1730769371051 -- conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda - sha256: bc8f00d5155deb7b47702cb8370f233935704100dbc23e30747c161d1b6cf3ab - md5: 3e01e386307acc60b2f89af0b2e161aa - depends: - - python >=3.9 - license: Apache-2.0 - license_family: Apache - size: 49002 - timestamp: 1733327434163 -- conda: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.1-py312h178313f_1.conda - sha256: 6d5ff6490c53e14591b70924711fe7bd70eb7fbeeeb1cbd9ed2f6d794ec8c4eb - md5: 349635694b4df27336bc15a49e9220e9 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 52947 - timestamp: 1737635699390 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.2.1-py312hcc812fe_1.conda - sha256: d759d8ab9c060b42cabf6312b9a04aa590daecabf1dd4e35731f4bc1b5c388bb - md5: 533b07e9fd835938f465225613825eee - depends: - - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 52776 - timestamp: 1737635802135 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.1-py312h998013c_1.conda - sha256: 96145760baad111d7ae4213ea8f8cc035cf33b001f5ff37d92268e4d28b0941d - md5: 83678928c58c9ae76778a435b6c7a94a - depends: - - __osx >=11.0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: APACHE - size: 50942 - timestamp: 1737635896600 -- conda: https://conda.anaconda.org/conda-forge/linux-64/protobuf-5.28.3-py312h2ec8cdc_0.conda - sha256: acb2e0ee948e3941f8ed191cb77f654e06538638aed8ccd71cbc78a15242ebbb - md5: 9d7e427d159c1b2d516cc047ff177c48 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libstdcxx >=13 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - constrains: - - libprotobuf 5.28.3 - arch: x86_64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 464794 - timestamp: 1731366525051 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/protobuf-5.28.3-py312h6f74592_0.conda - sha256: 9c575d5035c7ecb114ab9e17906c0a54087d9598dd6a2104c02fe33f0a29dd46 - md5: 06513608c94fb1c1b17136ace77063a9 - depends: - - libgcc >=13 - - libstdcxx >=13 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - constrains: - - libprotobuf 5.28.3 - arch: aarch64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 473242 - timestamp: 1731366577844 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/protobuf-5.28.3-py312hd8f9ff3_0.conda - sha256: 9d572a97419bdace14d7c7cc8cc8c4bf2dcb22b56965dac87a27fbdb5061b926 - md5: 5afbe52a59f04dd1fe566d0d17590d7e - depends: - - __osx >=11.0 - - libcxx >=18 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - constrains: - - libprotobuf 5.28.3 - arch: arm64 - platform: osx - license: BSD-3-Clause - license_family: BSD - size: 448803 - timestamp: 1731367010746 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda - sha256: 9c88f8c64590e9567c6c80823f0328e58d3b1efb0e1c539c0315ceca764e0973 - md5: b3c17d95b5a10c6e64a21fa17573e70e - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - arch: x86_64 - platform: linux - license: MIT - license_family: MIT - size: 8252 - timestamp: 1726802366959 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pthread-stubs-0.4-h86ecc28_1002.conda - sha256: 977dfb0cb3935d748521dd80262fe7169ab82920afd38ed14b7fee2ea5ec01ba - md5: bb5a90c93e3bac3d5690acf76b4a6386 - depends: - - libgcc >=13 - arch: aarch64 - platform: linux - license: MIT - license_family: MIT - size: 8342 - timestamp: 1726803319942 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pthread-stubs-0.4-hd74edd7_1002.conda - sha256: 8ed65e17fbb0ca944bfb8093b60086e3f9dd678c3448b5de212017394c247ee3 - md5: 415816daf82e0b23a736a069a75e9da7 - depends: - - __osx >=11.0 - arch: arm64 - platform: osx - license: MIT - license_family: MIT - size: 8381 - timestamp: 1726802424786 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-19.0.0-py312h7900ff3_0.conda - sha256: 7d98e626ec65b882341482ad15ecb7a670ee41dbaf375aa660ba8b7d0a940504 - md5: 14f86e63b5c214dd9fb34e5472d4bafc - depends: - - libarrow-acero 19.0.0.* - - libarrow-dataset 19.0.0.* - - libarrow-substrait 19.0.0.* - - libparquet 19.0.0.* - - pyarrow-core 19.0.0 *_0_* - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 25289 - timestamp: 1737128438818 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-19.0.0-py312h8025657_0.conda - sha256: 3a73d3d15031586214381edf5410a6920c1f75f52a8d8b994722b106d9a50150 - md5: a86fa414c44b7e3ee054cc385c79a822 - depends: - - libarrow-acero 19.0.0.* - - libarrow-dataset 19.0.0.* - - libarrow-substrait 19.0.0.* - - libparquet 19.0.0.* - - pyarrow-core 19.0.0 *_0_* - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 25496 - timestamp: 1737129041038 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-19.0.0-py312h1f38498_0.conda - sha256: 9d693901833c2ff4e5d67e1f2f6df50f699e1cec2f580c26d42299654830855a - md5: bd5e025292ff1127aa1534b59e55c4d0 - depends: - - libarrow-acero 19.0.0.* - - libarrow-dataset 19.0.0.* - - libarrow-substrait 19.0.0.* - - libparquet 19.0.0.* - - pyarrow-core 19.0.0 *_0_* - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: APACHE - size: 25428 - timestamp: 1737128284082 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-19.0.0-py312h01725c0_0_cpu.conda - sha256: 81178d0de0ac851a0a78e09c81ad92274cf770a38b28acdf53a0cfb2122d15aa - md5: 7ab1143b9ac1af5cc4a630706f643627 - depends: - - __glibc >=2.17,<3.0.a0 - - libarrow 19.0.0.* *cpu - - libgcc >=13 - - libstdcxx >=13 - - libzlib >=1.3.1,<2.0a0 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - constrains: - - apache-arrow-proc =*=cpu - - numpy >=1.21,<3 - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 5230953 - timestamp: 1737128097002 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-19.0.0-py312h66f7834_0_cpu.conda - sha256: 17ff419abfe9596f77857dfa635538200427d87283c28e64920d10d6533ec30e - md5: ce51dbcfeae8709f0b94c78eabe7cf5e - depends: - - libarrow 19.0.0.* *cpu - - libgcc >=13 - - libstdcxx >=13 - - libzlib >=1.3.1,<2.0a0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - constrains: - - numpy >=1.21,<3 - - apache-arrow-proc =*=cpu - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 5023430 - timestamp: 1737627066264 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-19.0.0-py312hc40f475_0_cpu.conda - sha256: 6303fe1c3e6d36273b72f0eeb3f19897d2376d57fe8c757f55dcbfbaa5cd6840 - md5: df502157843a7b1d90af04803767be15 - depends: - - __osx >=11.0 - - libarrow 19.0.0.* *cpu - - libcxx >=18 - - libzlib >=1.3.1,<2.0a0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - constrains: - - apache-arrow-proc =*=cpu - - numpy >=1.21,<3 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: APACHE - size: 4393075 - timestamp: 1737128225546 -- conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - sha256: 79db7928d13fab2d892592223d7570f5061c192f27b9febd1a418427b719acc6 - md5: 12c566707c80111f9799308d9e265aef - depends: - - python >=3.9 - - python - license: BSD-3-Clause - license_family: BSD - size: 110100 - timestamp: 1733195786147 -- conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.6-pyh3cfb1c2_0.conda - sha256: 9a78801a28959edeb945e8270a4e666577b52fac0cf4e35f88cf122f73d83e75 - md5: c69f87041cf24dfc8cb6bf64ca7133c7 - depends: - - annotated-types >=0.6.0 - - pydantic-core 2.27.2 - - python >=3.9 - - typing-extensions >=4.6.1 - - typing_extensions >=4.12.2 - license: MIT - license_family: MIT - size: 296841 - timestamp: 1737761472006 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.27.2-py312h12e396e_0.conda - sha256: 81602a4592ad2ac1a1cb57372fd25214e63b1c477d5818b0c21cde0f1f85c001 - md5: bae01b2563030c085f5158c518b84e86 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - - typing-extensions >=4.6.0,!=4.7.0 - constrains: - - __glibc >=2.17 - arch: x86_64 - platform: linux - license: MIT - license_family: MIT - size: 1641402 - timestamp: 1734571789895 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pydantic-core-2.27.2-py312h8cbf658_0.conda - sha256: 623e0f3846f15d035ce7ab7ae445fc8d9e547b6684ab55858b6f44510d24b097 - md5: 9677f6ab4bf27ba3c2aee70d08c7b27c - depends: - - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - - typing-extensions >=4.6.0,!=4.7.0 - constrains: - - __glibc >=2.17 - arch: aarch64 - platform: linux - license: MIT - license_family: MIT - size: 1505076 - timestamp: 1734571966615 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.27.2-py312hcd83bfe_0.conda - sha256: cfa7201f890d5d08ce29ff70e65a96787d5793a1718776733666b44bbd4a1205 - md5: dcb307e02f17d38c6e1cbfbf8c602852 - depends: - - __osx >=11.0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - - typing-extensions >=4.6.0,!=4.7.0 - constrains: - - __osx >=11.0 - arch: arm64 - platform: osx - license: MIT - license_family: MIT - size: 1593461 - timestamp: 1734571986644 -- conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.7.1-pyh3cfb1c2_0.conda - sha256: 082fb1ec29917d2c9ed6a862cb8eb9beb88c208ea62c9fef1aeb5f4f3e0e0b06 - md5: d71d76b62bed332b037d7adfc0f3989a - depends: - - pydantic >=2.7.0 - - python >=3.9 - - python-dotenv >=0.21.0 - license: MIT - license_family: MIT - size: 31822 - timestamp: 1735650532951 -- conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda - sha256: 28a3e3161390a9d23bc02b4419448f8d27679d9e2c250e29849e37749c8de86b - md5: 232fb4577b6687b2d503ef8e254270c9 - depends: - - python >=3.9 - license: BSD-2-Clause - license_family: BSD - size: 888600 - timestamp: 1736243563082 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pyinstrument-5.0.1-py312h66e93f0_0.conda - sha256: 3f1c0bc95f2c46dcd107f44cf742ee1fa40ba22e244f01083654743bbbcf28f3 - md5: 9f1d7b421e4c8fd00009490613db64d4 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - arch: x86_64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 182333 - timestamp: 1737774425235 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyinstrument-5.0.1-py312hb2c0f52_0.conda - sha256: 16af5db4359078bcb526291855bf1075ab035a96fe4e8d5cc4b0b5c8cba89b9a - md5: 90f5e9e04b1ecf25ad3f28b606f63742 - depends: - - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - arch: aarch64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 183988 - timestamp: 1737774588265 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyinstrument-5.0.1-py312hea69d52_0.conda - sha256: 5e7de2f908af22bbd8cf3562ce5ebf65ad6c0d8e40038f90b56f4db750639ce2 - md5: 07b0eb9b6bd91dfa87f95032825690dc - depends: - - __osx >=11.0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - arch: arm64 - platform: osx - license: BSD-3-Clause - license_family: BSD - size: 182524 - timestamp: 1737774624030 -- conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - sha256: ba3b032fa52709ce0d9fd388f63d330a026754587a2f461117cac9ab73d8d0d8 - md5: 461219d1a5bd61342293efa2c0c90eac - depends: - - __unix - - python >=3.9 - license: BSD-3-Clause - license_family: BSD - size: 21085 - timestamp: 1733217331982 -- conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.8-h9e4cc4f_1_cpython.conda - build_number: 1 - sha256: 3f0e0518c992d8ccfe62b189125721309836fe48a010dc424240583e157f9ff0 - md5: 7fd2fd79436d9b473812f14e86746844 + license: 0BSD + size: 98945 + timestamp: 1738525462560 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda + sha256: 26d77a3bb4dceeedc2a41bd688564fe71bf2d149fdcf117049970bc02ff1add6 + md5: 30fd6e37fe21f86f4bd26d6ee73eeec7 depends: - - __glibc >=2.17,<3.0.a0 - - bzip2 >=1.0.8,<2.0a0 - - ld_impl_linux-64 >=2.36.1 - - libexpat >=2.6.4,<3.0a0 - - libffi >=3.4,<4.0a0 - - libgcc >=13 - - liblzma >=5.6.3,<6.0a0 - - libnsl >=2.0.1,<2.1.0a0 - - libsqlite >=3.47.0,<4.0a0 - - libuuid >=2.38.1,<3.0a0 - - libxcrypt >=4.4.36 - - libzlib >=1.3.1,<2.0a0 - - ncurses >=6.5,<7.0a0 - - openssl >=3.4.0,<4.0a0 - - readline >=8.2,<9.0a0 - - tk >=8.6.13,<8.7.0a0 - - tzdata - constrains: - - python_abi 3.12.* *_cp312 + - libgcc-ng >=12 arch: x86_64 platform: linux - license: Python-2.0 - size: 31565686 - timestamp: 1733410597922 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.8-h1683364_1_cpython.conda - build_number: 1 - sha256: 85573582d5b0f79923fed0a8365d3d74d21eee9f0a5fa1b9345f191e006363ab - md5: 09ec612ea05370989eaa3d81abf0f369 + license: LGPL-2.1-only + license_family: GPL + size: 33408 + timestamp: 1697359010159 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda + sha256: fd18c2b75d7411096428d36a70b36b1a17e31f7b8956b6905d145792d49e97f8 + md5: c14f32510f694e3185704d89967ec422 depends: - - bzip2 >=1.0.8,<2.0a0 - - ld_impl_linux-aarch64 >=2.36.1 - - libexpat >=2.6.4,<3.0a0 - - libffi >=3.4,<4.0a0 - - libgcc >=13 - - liblzma >=5.6.3,<6.0a0 - - libnsl >=2.0.1,<2.1.0a0 - - libsqlite >=3.47.0,<4.0a0 - - libuuid >=2.38.1,<3.0a0 - - libxcrypt >=4.4.36 - - libzlib >=1.3.1,<2.0a0 - - ncurses >=6.5,<7.0a0 - - openssl >=3.4.0,<4.0a0 - - readline >=8.2,<9.0a0 - - tk >=8.6.13,<8.7.0a0 - - tzdata - constrains: - - python_abi 3.12.* *_cp312 + - libgcc-ng >=12 arch: aarch64 platform: linux - license: Python-2.0 - size: 13760816 - timestamp: 1733407890896 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.8-hc22306f_1_cpython.conda - build_number: 1 - sha256: 7586a711b1b08a9df8864e26efdc06980bdfb0e18d5ac4651d0fee30a8d3e3a0 - md5: 54ca5b5d92ef3a3ba61e195ee882a518 - depends: - - __osx >=11.0 - - bzip2 >=1.0.8,<2.0a0 - - libexpat >=2.6.4,<3.0a0 - - libffi >=3.4,<4.0a0 - - liblzma >=5.6.3,<6.0a0 - - libsqlite >=3.47.0,<4.0a0 - - libzlib >=1.3.1,<2.0a0 - - ncurses >=6.5,<7.0a0 - - openssl >=3.4.0,<4.0a0 - - readline >=8.2,<9.0a0 - - tk >=8.6.13,<8.7.0a0 - - tzdata - constrains: - - python_abi 3.12.* *_cp312 - arch: arm64 - platform: osx - license: Python-2.0 - size: 12998673 - timestamp: 1733408900971 -- conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - sha256: a50052536f1ef8516ed11a844f9413661829aa083304dc624c5925298d078d79 - md5: 5ba79d7c71f03c678c8ead841f347d6e - depends: - - python >=3.9 - - six >=1.5 - license: Apache-2.0 - license_family: APACHE - size: 222505 - timestamp: 1733215763718 -- conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda - sha256: 99713f6b534fef94995c6c16fd21d59f3548784e9111775d692bdc7c44678f02 - md5: e5c6ed218664802d305e79cc2d4491de - depends: - - python >=3.9 - license: BSD-3-Clause - license_family: BSD - size: 24215 - timestamp: 1733243277223 -- conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - sha256: 4790787fe1f4e8da616edca4acf6a4f8ed4e7c6967aa31b920208fc8f95efcca - md5: a61bf9ec79426938ff785eb69dbb1960 - depends: - - python >=3.6 - license: BSD-2-Clause - license_family: BSD - size: 13383 - timestamp: 1677079727691 -- conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.20-pyhff2d567_0.conda - sha256: 1b03678d145b1675b757cba165a0d9803885807792f7eb4495e48a38858c3cca - md5: a28c984e0429aff3ab7386f7de56de6f - depends: - - python >=3.9 - license: Apache-2.0 - license_family: Apache - size: 27913 - timestamp: 1734420869885 -- conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.1-pyhd8ed1ab_0.conda - sha256: 1597d6055d34e709ab8915091973552a0b8764c8032ede07c4e99670da029629 - md5: 392c91c42edd569a7ec99ed8648f597a - depends: - - python >=3.9 - license: Apache-2.0 - license_family: APACHE - size: 143794 - timestamp: 1737541204030 -- conda: https://conda.anaconda.org/conda-forge/linux-64/python-xxhash-3.5.0-py312h66e93f0_1.conda - sha256: 20851b1e59fee127d49e01fc73195a88ab0779f103b7d6ffc90d11142a83678f - md5: 39aed2afe4d0cf76ab3d6b09eecdbea7 + license: LGPL-2.1-only + license_family: GPL + size: 34501 + timestamp: 1697358973269 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.28-pthreads_h94d23a6_1.conda + sha256: 99ba271d8a80a1af2723f2e124ffd91d850074c0389c067e6d96d72a2dbfeabe + md5: 62857b389e42b36b686331bec0922050 depends: - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - - xxhash >=0.8.2,<0.8.3.0a0 - arch: x86_64 - platform: linux - license: BSD-2-Clause - license_family: BSD - size: 23162 - timestamp: 1725272139519 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-xxhash-3.5.0-py312h52516f5_1.conda - sha256: 0fa5ba80073a43391ee90303814adbc9fd826175de1fdac273ba0e5b711aa255 - md5: 591c4ae6d8338dfd07b951e00433a405 - depends: - - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - - xxhash >=0.8.2,<0.8.3.0a0 - arch: aarch64 - platform: linux - license: BSD-2-Clause - license_family: BSD - size: 23589 - timestamp: 1725273317965 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-xxhash-3.5.0-py312h024a12e_1.conda - sha256: 28204ef48f028a4d872e22040da0dad7ebd703549b010a1bb511b6dd94cf466d - md5: 266fe1ae54a7bb17990206664d0f0ae4 - depends: - - __osx >=11.0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - - xxhash >=0.8.2,<0.8.3.0a0 - arch: arm64 - platform: osx - license: BSD-2-Clause - license_family: BSD - size: 21765 - timestamp: 1725272382968 -- conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda - build_number: 5 - sha256: d10e93d759931ffb6372b45d65ff34d95c6000c61a07e298d162a3bc2accebb0 - md5: 0424ae29b104430108f5218a66db7260 + - libgcc >=14 + - libgfortran + - libgfortran5 >=14.2.0 constrains: - - python 3.12.* *_cpython + - openblas >=0.3.28,<0.3.29.0a0 arch: x86_64 platform: linux license: BSD-3-Clause license_family: BSD - size: 6238 - timestamp: 1723823388266 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.12-5_cp312.conda - build_number: 5 - sha256: 5ccdad9981753cc4a2d126e356673a21c0cd5b34e209cb8d476a3947d4ad9b39 - md5: 62b20f305498284a07dc6c45fd0e5c87 + size: 5578513 + timestamp: 1730772671118 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.28-pthreads_h9d3fd7e_1.conda + sha256: 30623a40764e935aa77e0d4db54c1a1589189a9bf3a03fdb445505c1e319b5a6 + md5: e8dde93dd199da3c1f2c1fcfd0042cd4 + depends: + - libgcc >=14 + - libgfortran + - libgfortran5 >=14.2.0 constrains: - - python 3.12.* *_cpython + - openblas >=0.3.28,<0.3.29.0a0 arch: aarch64 platform: linux license: BSD-3-Clause license_family: BSD - size: 6329 - timestamp: 1723823366253 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-5_cp312.conda - build_number: 5 - sha256: 49d624e4b809c799d2bf257b22c23cf3fc4460f5570d9a58e7ad86350aeaa1f4 - md5: b76f9b1c862128e56ac7aa8cd2333de9 + size: 4793435 + timestamp: 1730773029647 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.28-openmp_hf332438_1.conda + sha256: 62bb669c37a845129096f73d446cdb6bb170e4927f2fea2b661329680dbbc373 + md5: 40803a48d947c8639da6704e9a44d3ce + depends: + - __osx >=11.0 + - libgfortran 5.* + - libgfortran5 >=13.2.0 + - llvm-openmp >=18.1.8 constrains: - - python 3.12.* *_cpython + - openblas >=0.3.28,<0.3.29.0a0 arch: arm64 platform: osx license: BSD-3-Clause license_family: BSD - size: 6278 - timestamp: 1723823099686 -- conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda - sha256: 1a7d6b233f7e6e3bbcbad054c8fd51e690a67b129a899a056a5e45dd9f00cb41 - md5: 3eeeeb9e4827ace8c0c1419c85d590ad - depends: - - python >=3.7 - license: MIT - license_family: MIT - size: 188538 - timestamp: 1706886944988 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py312h178313f_2.conda - sha256: 159cba13a93b3fe084a1eb9bda0a07afc9148147647f0d437c3c3da60980503b - md5: cf2485f39740de96e2a7f2bb18ed2fee - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - - yaml >=0.2.5,<0.3.0a0 - arch: x86_64 - platform: linux - license: MIT - license_family: MIT - size: 206903 - timestamp: 1737454910324 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyyaml-6.0.2-py312hcc812fe_2.conda - sha256: dc78e41d51300722ba35ac4a10d37339ceffbe22d7501c71dfd3f633a4f8e79a - md5: 4de4a5ff81c941674e08595244e7cd61 - depends: - - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - - yaml >=0.2.5,<0.3.0a0 - arch: aarch64 - platform: linux - license: MIT - license_family: MIT - size: 199172 - timestamp: 1737454840766 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py312h998013c_2.conda - sha256: ad225ad24bfd60f7719709791345042c3cb32da1692e62bd463b084cf140e00d - md5: 68149ed4d4e9e1c42d2ba1f27f08ca96 - depends: - - __osx >=11.0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - - yaml >=0.2.5,<0.3.0a0 - arch: arm64 - platform: osx - license: MIT - license_family: MIT - size: 192148 - timestamp: 1737454886351 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.1-py312hbf22597_0.conda - sha256: 90ec0da0317d3d76990a40c61e1709ef859dd3d8c63838bad2814f46a63c8a2e - md5: 7cec8d0dac15a2d9fea8e49879aa779d + size: 4165774 + timestamp: 1730772154295 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda + sha256: 51125ebb8b7152e4a4e69fd2398489c4ec8473195c27cde3cbdf1cb6d18c5493 + md5: d8703f1ffe5a06356f06467f1d0b9464 depends: - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 - libgcc >=13 - - libsodium >=1.0.20,<1.0.21.0a0 - libstdcxx >=13 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - - zeromq >=4.3.5,<4.4.0a0 + - libzlib >=1.3.1,<2.0a0 arch: x86_64 platform: linux - license: BSD-3-Clause - license_family: BSD - size: 382698 - timestamp: 1738271121975 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyzmq-26.2.1-py312h2427ae1_0.conda - sha256: 9558f9330093e5c21b7c04e2e212e19b9b88ad9c808315f12c0765b244018a09 - md5: 0520da8de6870d8ff63e818e927d1524 + license: BSD-3-Clause + license_family: BSD + size: 2960815 + timestamp: 1735577210663 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.3-h44a3b7b_1.conda + sha256: ecb69f2b1668e784b41ba667493be846662d5ef702bef64fb2e013bb1364cdc4 + md5: 68f807f7cc13951652bbe048253fd405 depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 - libgcc >=13 - - libsodium >=1.0.20,<1.0.21.0a0 - libstdcxx >=13 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - - zeromq >=4.3.5,<4.4.0a0 + - libzlib >=1.3.1,<2.0a0 arch: aarch64 platform: linux license: BSD-3-Clause license_family: BSD - size: 375156 - timestamp: 1738273130727 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.1-py312hf4875e0_0.conda - sha256: 70d398b334668dc597d33e27847ede1b0829a639b9c91ee845355e52c86c2293 - md5: bfbefdb140b546a80827ff7c9d5ac7b8 + size: 2788074 + timestamp: 1735576315676 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.3-h3bd63a1_1.conda + sha256: f58a16b13ad53346903c833e266f83c3d770a43a432659b98710aed85ca885e7 + md5: bdbfea4cf45ae36652c6bbcc2e7ebe91 depends: - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 - libcxx >=18 - - libsodium >=1.0.20,<1.0.21.0a0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - - zeromq >=4.3.5,<4.4.0a0 + - libzlib >=1.3.1,<2.0a0 arch: arm64 platform: osx license: BSD-3-Clause license_family: BSD - size: 364649 - timestamp: 1738271263898 -- conda: https://conda.anaconda.org/conda-forge/linux-64/re2-2024.07.02-h9925aae_2.conda - sha256: d213c44958d49ce7e0d4d5b81afec23640cce5016685dbb2d23571a99caa4474 - md5: e84ddf12bde691e8ec894b00ea829ddf + size: 2271580 + timestamp: 1735576361997 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsentencepiece-0.2.0-h8e10757_10.conda + sha256: dc399e0f04a09f8c1807c3b36e578eb81f81891c0ddf21de9c1fb9f048ce4031 + md5: 4f43dbcfacd3cc9a183dd3a48b94d3c0 depends: - - libre2-11 2024.07.02 hbbce691_2 + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 arch: x86_64 platform: linux - license: BSD-3-Clause - license_family: BSD - size: 26786 - timestamp: 1735541074034 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/re2-2024.07.02-haa97905_2.conda - sha256: 040848655df9119bae5a549fb5c8956a5537120859416c1d9d0712b7bac9f12e - md5: 1bf0135339b4a7419a198a795d2d4be0 + license: Apache-2.0 + license_family: Apache + size: 823649 + timestamp: 1735627841126 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsentencepiece-0.2.0-h6164ad9_10.conda + sha256: 57074803772f65d4075b7d6dc17ff5aa40ec3a30109fa4225ca16911504c4a8b + md5: a7a192edc9cfba26a27df3283203e6a1 depends: - - libre2-11 2024.07.02 h18dbdb1_2 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 arch: aarch64 platform: linux - license: BSD-3-Clause - license_family: BSD - size: 26830 - timestamp: 1735540999398 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/re2-2024.07.02-h6589ca4_2.conda - sha256: 4d3799c05f8f662922a0acd129d119774760a3281b883603678e128d1cb307fb - md5: 7a8b4ad8c58a3408ca89d78788c78178 + license: Apache-2.0 + license_family: Apache + size: 800865 + timestamp: 1735627982895 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsentencepiece-0.2.0-he13a0af_10.conda + sha256: 3347a8840d085ce1661928e736229f068d56c84312fbed90886e059023d85611 + md5: 1f67e5e30edd56e0a0bf6df6bb711a9d depends: - - libre2-11 2024.07.02 h07bc746_2 + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 arch: arm64 platform: osx - license: BSD-3-Clause - license_family: BSD - size: 26861 - timestamp: 1735541088455 -- conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda - sha256: 5435cf39d039387fbdc977b0a762357ea909a7694d9528ab40f005e9208744d7 - md5: 47d31b792659ce70f470b5c82fdfb7a4 + license: Apache-2.0 + license_family: Apache + size: 754657 + timestamp: 1735628030895 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda + sha256: 0105bd108f19ea8e6a78d2d994a6d4a8db16d19a41212070d2d1d48a63c34161 + md5: a587892d3c13b6621a6091be690dbca2 depends: - libgcc-ng >=12 - - ncurses >=6.3,<7.0a0 arch: x86_64 platform: linux - license: GPL-3.0-only - license_family: GPL - size: 281456 - timestamp: 1679532220005 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8fc344f_1.conda - sha256: 4c99f7417419734e3797d45bc355e61c26520e111893b0d7087a01a7fbfbe3dd - md5: 105eb1e16bf83bfb2eb380a48032b655 + license: ISC + size: 205978 + timestamp: 1716828628198 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.20-h68df207_0.conda + sha256: 448df5ea3c5cf1af785aad46858d7a5be0522f4234a4dc9bb764f4d11ff3b981 + md5: 2e4a8f23bebdcb85ca8e5a0fbe75666a depends: - libgcc-ng >=12 - - ncurses >=6.3,<7.0a0 arch: aarch64 platform: linux - license: GPL-3.0-only - license_family: GPL - size: 294092 - timestamp: 1679532238805 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h92ec313_1.conda - sha256: a1dfa679ac3f6007362386576a704ad2d0d7a02e98f5d0b115f207a2da63e884 - md5: 8cbb776a2f641b943d413b3e19df71f4 + license: ISC + size: 177394 + timestamp: 1716828514515 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda + sha256: fade8223e1e1004367d7101dd17261003b60aa576df6d7802191f8972f7470b1 + md5: a7ce36e284c5faaf93c220dfc39e3abd depends: - - ncurses >=6.3,<7.0a0 + - __osx >=11.0 arch: arm64 platform: osx - license: GPL-3.0-only - license_family: GPL - size: 250351 - timestamp: 1679532511311 -- conda: https://conda.anaconda.org/conda-forge/linux-64/regex-2024.11.6-py312h66e93f0_0.conda - sha256: fcb5687d3ec5fff580b64b8fb649d9d65c999a91a5c3108a313ecdd2de99f06b - md5: 647770db979b43f9c9ca25dcfa7dc4e4 + license: ISC + size: 164972 + timestamp: 1716828607917 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.48.0-hee588c1_1.conda + sha256: 22853d289ef6ec8a5b20f1aa261895b06525439990d3b139f8bfd0b5c5e32a3a + md5: 3fa05c528d8a1e2a67bbf1e36f22d3bc depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 + - libzlib >=1.3.1,<2.0a0 arch: x86_64 platform: linux - license: Python-2.0 - license_family: PSF - size: 402821 - timestamp: 1730952378415 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/regex-2024.11.6-py312hb2c0f52_0.conda - sha256: ec2c416860de29224e447e2031f8686a05476759c17da1f32f61d4307e540ec8 - md5: fa8b589107567f532fa1380e66f91776 + license: Unlicense + size: 878223 + timestamp: 1737564987837 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.48.0-h5eb1b54_1.conda + sha256: 81dd9bf66c7f1d9064e007e2c787133100c406e7ca2de61dba9fb7b87372f255 + md5: 4f3a61fe206f20b27c385ee608bcdfda depends: - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 + - libzlib >=1.3.1,<2.0a0 arch: aarch64 platform: linux - license: Python-2.0 - license_family: PSF - size: 398947 - timestamp: 1730952477463 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/regex-2024.11.6-py312hea69d52_0.conda - sha256: dcdec32f2c7dd37986baa692bedf9db126ad34e92e5e9b64f707cba3d04d2525 - md5: e73cda1f18846b608284bd784f061eac + license: Unlicense + size: 1044879 + timestamp: 1737565049785 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.48.0-h3f77e49_1.conda + sha256: 17c06940cc2a13fd6a17effabd6881b1477db38b2cd3ee2571092d293d3fdd75 + md5: 4c55169502ecddf8077973a987d08f08 depends: - __osx >=11.0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 + - libzlib >=1.3.1,<2.0a0 arch: arm64 platform: osx - license: Python-2.0 - license_family: PSF - size: 366374 - timestamp: 1730952427552 -- conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda - sha256: d701ca1136197aa121bbbe0e8c18db6b5c94acbd041c2b43c70e5ae104e1d8ad - md5: a9b9368f3701a417eac9edbcae7cb737 - depends: - - certifi >=2017.4.17 - - charset-normalizer >=2,<4 - - idna >=2.5,<4 - - python >=3.9 - - urllib3 >=1.21.1,<3 - constrains: - - chardet >=3.0.2,<6 - license: Apache-2.0 - license_family: APACHE - size: 58723 - timestamp: 1733217126197 -- conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_1.conda - sha256: 06a760c5ae572e72e865d5a87e9fe3cc171e1a9c996e63daf3db52ff1a0b4457 - md5: 7aed65d4ff222bfb7335997aa40b7da5 - depends: - - markdown-it-py >=2.2.0 - - pygments >=2.13.0,<3.0.0 - - python >=3.9 - - typing_extensions >=4.0.0,<5.0.0 - license: MIT - license_family: MIT - size: 185646 - timestamp: 1733342347277 -- conda: https://conda.anaconda.org/conda-forge/noarch/rich-toolkit-0.11.3-pyh29332c3_0.conda - sha256: e558f8c254a9ff9164d069110da162fc79497d70c60f2c09a5d3d0d7101c5628 - md5: 4ba15ae9388b67d09782798347481f69 + license: Unlicense + size: 852831 + timestamp: 1737564996616 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-hc0a3c3a_1.conda + sha256: 4661af0eb9bdcbb5fb33e5d0023b001ad4be828fccdcc56500059d56f9869462 + md5: 234a5554c53625688d51062645337328 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 -- conda: https://conda.anaconda.org/conda-forge/linux-64/s2n-1.5.11-h072c03f_0.conda - sha256: cfdd98c8f9a1e5b6f9abce5dac6d590cc9fe541a08466c9e4a26f90e00b569e3 - md5: 5e8060d52f676a40edef0006a75c718f + - libgcc 14.2.0 h77fa898_1 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 3893695 + timestamp: 1729027746910 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_1.conda + sha256: 519556d2c93f1b487091ce046d62e762286177f4a670ec10e16005177d0bcab3 + md5: 37f489acd39e22b623d2d1e5ac6d195c depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - openssl >=3.4.0,<4.0a0 + - libgcc 14.2.0 he277a41_1 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 3816794 + timestamp: 1729089463404 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_1.conda + sha256: 25bb30b827d4f6d6f0522cc0579e431695503822f144043b93c50237017fffd8 + md5: 8371ac6457591af2cf6159439c1fd051 + depends: + - libstdcxx 14.2.0 hc0a3c3a_1 arch: x86_64 platform: linux - license: Apache-2.0 - license_family: Apache - size: 356213 - timestamp: 1737146304079 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/s2n-1.5.11-h3caee7a_0.conda - sha256: 5a7ae66f96be24c3b2007139b6c3701ab015b4b4eb4eccfdd07be97710243a47 - md5: 1517c0518f8a06a48a15f41d94252874 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 54105 + timestamp: 1729027780628 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_1.conda + sha256: 9f97461bd55a2745a7a0941f3502a047f15bfe7bb2952dc7fb204b3202f866fd + md5: 0e75771b8a03afae5a2c6ce71bc733f5 depends: - - libgcc >=13 - - openssl >=3.4.0,<4.0a0 + - libstdcxx 14.2.0 h3f4de04_1 arch: aarch64 platform: linux - license: Apache-2.0 - license_family: Apache - size: 352811 - timestamp: 1737146319512 -- conda: https://conda.anaconda.org/conda-forge/linux-64/safetensors-0.5.2-py312h12e396e_0.conda - sha256: 98b8dfa5eec083e0b3ace00906a7f7e748b1e2446dca17e87473f43278fcc036 - md5: 999ca9d87d2bb8b4c01e62c755b928cf + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 54133 + timestamp: 1729089498541 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda + sha256: 787eb542f055a2b3de553614b25f09eefb0a0931b0c87dbcce6efdfd92f04f18 + md5: 40b61aab5c7ba9ff276c41cfffe6b80b + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 33601 + timestamp: 1680112270483 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda + sha256: 616277b0c5f7616c2cdf36f6c316ea3f9aa5bb35f2d4476a349ab58b9b91675f + md5: 000e30b09db0b7c775b21695dff30969 + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 35720 + timestamp: 1680113474501 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda + sha256: 6ae68e0b86423ef188196fff6207ed0c8195dd84273cb5623b85aa08033a410c + md5: 5aa797f8787fe7a17d1b0821485b5adc + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: LGPL-2.1-or-later + size: 100393 + timestamp: 1702724383534 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda + sha256: 6b46c397644091b8a26a3048636d10b989b1bf266d4be5e9474bf763f828f41f + md5: b4df5d7d4b63579d081fd3a4cf99740e + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: LGPL-2.1-or-later + size: 114269 + timestamp: 1702724369203 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda + sha256: d4bfe88d7cb447768e31650f06257995601f89076080e76df55e3112d4e47dc4 + md5: edb0dca6bc32e4f4789199455a1dbeb8 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 constrains: - - __glibc >=2.17 + - zlib 1.3.1 *_2 arch: x86_64 platform: linux - license: Apache-2.0 - license_family: APACHE - size: 424409 - timestamp: 1736383159339 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/safetensors-0.5.2-py312h8cbf658_0.conda - sha256: 3e230060c1366cbaf03f4315b021dfe47f5147f3af88f17975d661c08fe15ad3 - md5: 2c77c961c4e813b1d05122ac4d803d80 + license: Zlib + license_family: Other + size: 60963 + timestamp: 1727963148474 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda + sha256: 5a2c1eeef69342e88a98d1d95bff1603727ab1ff4ee0e421522acd8813439b84 + md5: 08aad7cbe9f5a6b460d0976076b6ae64 depends: - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 constrains: - - __glibc >=2.17 + - zlib 1.3.1 *_2 arch: aarch64 platform: linux - license: Apache-2.0 - license_family: APACHE - size: 408166 - timestamp: 1736383184569 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/safetensors-0.5.2-py312hcd83bfe_0.conda - sha256: 0aeb3e654095ca0261d560d1fc05912d0e94d547a7dc435d7f4cedeba966d176 - md5: fc0383682805e293eba9b8afc9ad0931 + license: Zlib + license_family: Other + size: 66657 + timestamp: 1727963199518 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda + sha256: ce34669eadaba351cd54910743e6a2261b67009624dbc7daeeafdef93616711b + md5: 369964e85dc26bfe78f41399b366c435 depends: - __osx >=11.0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 constrains: + - zlib 1.3.1 *_2 + arch: arm64 + platform: osx + license: Zlib + license_family: Other + size: 46438 + timestamp: 1727963202283 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda + sha256: b92a669f2059874ebdcb69041b6c243d68ffc3fb356ac1339cec44aeb27245d7 + md5: c4d54bfd3817313ce758aa76283b118d + depends: - __osx >=11.0 + constrains: + - openmp 19.1.7|19.1.7.* arch: arm64 platform: osx - license: Apache-2.0 + license: Apache-2.0 WITH LLVM-exception license_family: APACHE - size: 378060 - timestamp: 1736383410115 -- conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda - sha256: 0557c090913aa63cdbe821dbdfa038a321b488e22bc80196c4b3b1aace4914ef - md5: 7c3c2a0f3ebdea2bbc35538d162b43bf + size: 280830 + timestamp: 1736986295869 +- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020700-release.conda + noarch: python + sha256: 0c5086da2c8515aae71eb8b4c0b7805411c39d89a141fba0c48071d06352ae58 + md5: 8a119d75ab58c7869a319618c1bd0629 depends: - - python >=3.9 + - max-core ==25.1.0.dev2025020700 release + - max-python ==25.1.0.dev2025020700 release + - mojo-jupyter ==25.1.0.dev2025020700 release + - mblack ==25.1.0.dev2025020700 release + license: LicenseRef-Modular-Proprietary + size: 9901 + timestamp: 1738887556307 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025020700-release.conda + sha256: 0a2843fb9b523381166040e5f9196d555a8173d20e9facf63668ac4c3c3bd7e5 + md5: bcd3f009a29988347468e74c40230aa0 + depends: + - mblack ==25.1.0.dev2025020700 release + license: LicenseRef-Modular-Proprietary + size: 244772443 + timestamp: 1738887618224 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025020700-release.conda + sha256: e6a390b2417ee1da36047c75ce78d80cd076d03eae3ebf44db45cf6339f13310 + md5: 8b535a200a237518b5255359b884dd1c + depends: + - mblack ==25.1.0.dev2025020700 release + license: LicenseRef-Modular-Proprietary + size: 247279800 + timestamp: 1738887556307 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025020700-release.conda + sha256: f2fd1544fd907bcc8529dd32ec5424187892397745e4898368e956ac05c48e02 + md5: c0cbf1c622073adc4c1e002559ee4984 + depends: + - mblack ==25.1.0.dev2025020700 release + license: LicenseRef-Modular-Proprietary + size: 209654994 + timestamp: 1738888179079 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025020700-release.conda + noarch: python + sha256: 23e51aa18d098b77a33de9b223e858ceb24dca4883dec954036d1d3cb5b3c7f2 + md5: d7bfb71fa8c8936ac46cd65cdbaceed6 + depends: + - max-core ==25.1.0.dev2025020700 release + - click >=8.0.0 + - numpy >=1.18,<2.0 + - sentencepiece >=0.2.0 + - tqdm >=4.67.1 + constrains: + - aiohttp >=3.11.12 + - fastapi >=0.114.2 + - gguf >=0.14.0 + - hf-transfer >=0.1.9 + - httpx >=0.28.1 + - huggingface_hub >=0.24.0 + - nvitop >=1.4.1 + - opentelemetry-api >=1.29.0 + - opentelemetry-exporter-otlp-proto-http >=1.27.0 + - opentelemetry-exporter-prometheus >=0.48b0 + - opentelemetry-sdk >=1.29.0,<2.0 + - pillow >=10.3.0 + - prometheus_client >=0.21.0 + - prometheus-async >=22.2.0 + - psutil >=6.1.1 + - pydantic + - pydantic-settings >=2.7.1 + - pyinstrument >=5.0.1 + - python-json-logger >=2.0.7 + - requests >=2.32.3 + - rich >=13.9.4 + - safetensors >=0.5.2 + - scipy >=1.15.1 + - sentinel >=0.3.0 + - sse-starlette >=2.1.2 + - tokenizers >=0.19.0 + - pytorch >=2.2.2,<=2.5.1 + - transformers >=4.40.1 + - uvicorn >=0.34.0 + - uvloop >=0.21.0 + license: LicenseRef-Modular-Proprietary + size: 120644157 + timestamp: 1738887618224 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025020700-release.conda + noarch: python + sha256: 1113181f7ac5ab5b19dec273f34eea07d39d9ac3713d372cde746fe7804e2692 + md5: b5cdc8249909a14ad5cc69cb7b5c30e4 + depends: + - max-core ==25.1.0.dev2025020700 release + - click >=8.0.0 + - numpy >=1.18,<2.0 + - sentencepiece >=0.2.0 + - tqdm >=4.67.1 + constrains: + - aiohttp >=3.11.12 + - fastapi >=0.114.2 + - gguf >=0.14.0 + - hf-transfer >=0.1.9 + - httpx >=0.28.1 + - huggingface_hub >=0.24.0 + - nvitop >=1.4.1 + - opentelemetry-api >=1.29.0 + - opentelemetry-exporter-otlp-proto-http >=1.27.0 + - opentelemetry-exporter-prometheus >=0.48b0 + - opentelemetry-sdk >=1.29.0,<2.0 + - pillow >=10.3.0 + - prometheus_client >=0.21.0 + - prometheus-async >=22.2.0 + - psutil >=6.1.1 + - pydantic + - pydantic-settings >=2.7.1 + - pyinstrument >=5.0.1 + - python-json-logger >=2.0.7 + - requests >=2.32.3 + - rich >=13.9.4 + - safetensors >=0.5.2 + - scipy >=1.15.1 + - sentinel >=0.3.0 + - sse-starlette >=2.1.2 + - tokenizers >=0.19.0 + - pytorch >=2.2.2,<=2.5.1 + - transformers >=4.40.1 + - uvicorn >=0.34.0 + - uvloop >=0.21.0 + license: LicenseRef-Modular-Proprietary + size: 123020201 + timestamp: 1738887556307 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025020700-release.conda + noarch: python + sha256: 847e472b44904735bbc68e1fcec6a4fe53883ad6409af4f8155b2b40772c74cc + md5: 14bf0cbc7ef6cf6f3b728780a19b14ab + depends: + - max-core ==25.1.0.dev2025020700 release + - click >=8.0.0 + - numpy >=1.18,<2.0 + - sentencepiece >=0.2.0 + - tqdm >=4.67.1 + constrains: + - aiohttp >=3.11.12 + - fastapi >=0.114.2 + - gguf >=0.14.0 + - hf-transfer >=0.1.9 + - httpx >=0.28.1 + - huggingface_hub >=0.24.0 + - nvitop >=1.4.1 + - opentelemetry-api >=1.29.0 + - opentelemetry-exporter-otlp-proto-http >=1.27.0 + - opentelemetry-exporter-prometheus >=0.48b0 + - opentelemetry-sdk >=1.29.0,<2.0 + - pillow >=10.3.0 + - prometheus_client >=0.21.0 + - prometheus-async >=22.2.0 + - psutil >=6.1.1 + - pydantic + - pydantic-settings >=2.7.1 + - pyinstrument >=5.0.1 + - python-json-logger >=2.0.7 + - requests >=2.32.3 + - rich >=13.9.4 + - safetensors >=0.5.2 + - scipy >=1.15.1 + - sentinel >=0.3.0 + - sse-starlette >=2.1.2 + - tokenizers >=0.19.0 + - pytorch >=2.2.2,<=2.5.1 + - transformers >=4.40.1 + - uvicorn >=0.34.0 + - uvloop >=0.21.0 + license: LicenseRef-Modular-Proprietary + size: 108448310 + timestamp: 1738888179079 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020700-release.conda + noarch: python + sha256: 17daf1d55dd29b1bee00b6febfb9037b863e1e70e115606174c334b5c9159f94 + md5: 3443f44398d7184cb2f05944e90fccca + depends: + - python >=3.9,<3.13 + - click >=8.0.0 + - mypy_extensions >=0.4.3 + - packaging >=22.0 + - pathspec >=0.9.0 + - platformdirs >=2 + - typing_extensions >=v4.12.2 + - python license: MIT - license_family: MIT - size: 14462 - timestamp: 1733301007770 -- conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - sha256: 41db0180680cc67c3fa76544ffd48d6a5679d96f4b71d7498a759e94edc9a2db - md5: a451d576819089b0d672f18768be0f65 + size: 130848 + timestamp: 1738887556306 +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020700-release.conda + noarch: python + sha256: 951321ffc06290d15d11f519c32aae835d8194a692c017ae8175bb98879215c0 + md5: 4a2ebf4276afe6a0b569f4550b5ecedf + depends: + - max-core ==25.1.0.dev2025020700 release + - python >=3.9,<3.13 + - jupyter_client >=8.6.2,<8.7 + - python + license: LicenseRef-Modular-Proprietary + size: 22987 + timestamp: 1738887556307 +- conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda + sha256: 1895f47b7d68581a6facde5cb13ab8c2764c2e53a76bd746f8f98910dc4e08fe + md5: 29097e7ea634a45cc5386b95cac6568f depends: - python >=3.9 license: MIT license_family: MIT - size: 16385 - timestamp: 1733381032766 -- conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-h8bd8927_1.conda - sha256: ec91e86eeb2c6bbf09d51351b851e945185d70661d2ada67204c9a6419d282d3 - md5: 3b3e64af585eadfb52bb90b553db5edf + size: 10854 + timestamp: 1733230986902 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda + sha256: 3fde293232fa3fca98635e1167de6b7c7fda83caf24b9d6c91ec9eefb4f4d586 + md5: 47e340acb35de30501a76c7c799c41d7 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - - libstdcxx >=13 arch: x86_64 platform: linux - license: BSD-3-Clause - license_family: BSD - size: 42739 - timestamp: 1733501881851 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-hd4fb6f5_1.conda - sha256: c4a07ae5def8d55128f25a567a296ef9d7bf99a3bc79d46bd5160c076a5f50af - md5: 2fcc6cd1e5550deb509073fd2e6693e1 + license: X11 AND BSD-3-Clause + size: 891641 + timestamp: 1738195959188 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-ha32ae93_3.conda + sha256: 91cfb655a68b0353b2833521dc919188db3d8a7f4c64bea2c6a7557b24747468 + md5: 182afabe009dc78d8b73100255ee6868 depends: - libgcc >=13 - - libstdcxx >=13 arch: aarch64 platform: linux - license: BSD-3-Clause - license_family: BSD - size: 43032 - timestamp: 1733501964775 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-h98b9ce2_1.conda - sha256: 4242f95b215127a006eb664fe26ed5a82df87e90cbdbc7ce7ff4971f0720997f - md5: ded86dee325290da2967a3fea3800eb5 + license: X11 AND BSD-3-Clause + size: 926034 + timestamp: 1738196018799 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda + sha256: 2827ada40e8d9ca69a153a45f7fd14f32b2ead7045d3bbb5d10964898fe65733 + md5: 068d497125e4bf8a66bf707254fff5ae depends: - __osx >=11.0 - - libcxx >=18 arch: arm64 platform: osx - license: BSD-3-Clause - license_family: BSD - size: 35857 - timestamp: 1733502172664 -- conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - sha256: c2248418c310bdd1719b186796ae50a8a77ce555228b6acd32768e2543a15012 - md5: bf7a226e58dfb8346c70df36065d86c9 - depends: - - python >=3.9 - license: Apache-2.0 - license_family: Apache - size: 15019 - timestamp: 1733244175724 -- conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.2.1-pyhd8ed1ab_0.conda - sha256: 3c6a476e7afb702d841e23c61a0c4cc491929d2e39376d329e67e94c40a236cc - md5: c1ef6bc13dd2caa4b406fb3cb06c2791 - depends: - - anyio >=4.7.0 - - python >=3.9 - - starlette >=0.41.3 - license: BSD-3-Clause - license_family: BSD - size: 15324 - timestamp: 1735126414893 -- conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.45.3-pyha770c72_0.conda - sha256: be48c99e6fb8e12ebee09e6fbb4d78a170b614cdaa19ab791a8f5b6caf09919a - md5: 9b3a68bc7aed7949ef86f950993261f4 - depends: - - anyio >=3.6.2,<5 - - python >=3.9 - - typing_extensions >=3.10.0 - license: BSD-3-Clause - license_family: BSD - size: 57934 - timestamp: 1737824077668 -- conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda - sha256: e0569c9caa68bf476bead1bed3d79650bb080b532c64a4af7d8ca286c08dea4e - md5: d453b98d9c83e71da0741bb0ff4d76bc + license: X11 AND BSD-3-Clause + size: 797030 + timestamp: 1738196177597 +- conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda + sha256: fe3459c75cf84dcef6ef14efcc4adb0ade66038ddd27cadb894f34f4797687d8 + md5: d8285bea2a350f63fab23bf460221f3f depends: + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 - libgcc-ng >=12 - - libzlib >=1.2.13,<2.0.0a0 + - liblapack >=3.9.0,<4.0a0 + - libstdcxx-ng >=12 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - numpy-base <0a0 arch: x86_64 platform: linux - license: TCL + license: BSD-3-Clause license_family: BSD - size: 3318875 - timestamp: 1699202167581 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda - sha256: 7fa27cc512d3a783f38bd16bbbffc008807372499d5b65d089a8e43bde9db267 - md5: f75105e0585851f818e0009dd1dde4dc + size: 7484186 + timestamp: 1707225809722 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda + sha256: 23767677a7790bee5457d5e75ebd508b9a31c5354216f4310dd1acfca3f7a6f9 + md5: 9cebf5a06cb87d4569cd68df887af476 depends: + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 - libgcc-ng >=12 - - libzlib >=1.2.13,<2.0.0a0 + - liblapack >=3.9.0,<4.0a0 + - libstdcxx-ng >=12 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - numpy-base <0a0 arch: aarch64 platform: linux - license: TCL + license: BSD-3-Clause license_family: BSD - size: 3351802 - timestamp: 1695506242997 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda - sha256: 72457ad031b4c048e5891f3f6cb27a53cb479db68a52d965f796910e71a403a8 - md5: b50a57ba89c32b62428b71a875291c9b + size: 6614296 + timestamp: 1707225994762 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda + sha256: c8841d6d6f61fd70ca80682efbab6bdb8606dc77c68d8acabfbd7c222054f518 + md5: d83fc83d589e2625a3451c9a7e21047c depends: - - libzlib >=1.2.13,<2.0.0a0 + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - libcxx >=16 + - liblapack >=3.9.0,<4.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - numpy-base <0a0 arch: arm64 platform: osx - license: TCL + license: BSD-3-Clause license_family: BSD - size: 3145523 - timestamp: 1699202432999 -- conda: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.21.0-py312h8360d73_0.conda - sha256: 4f504a5e9d77c6d88a8f735c4319429d8bf40b742384f908a2efe0a09acc3cc5 - md5: f953aa733207f3d37acf4a3efbedba89 + size: 6073136 + timestamp: 1707226249608 +- conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.0-h7b32b05_1.conda + sha256: f62f6bca4a33ca5109b6d571b052a394d836956d21b25b7ffd03376abf7a481f + md5: 4ce6875f75469b2757a65e10a5d05e31 depends: - __glibc >=2.17,<3.0.a0 - - huggingface_hub >=0.16.4,<1.0 + - ca-certificates - libgcc >=13 - - libstdcxx >=13 - - openssl >=3.4.0,<4.0a0 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - constrains: - - __glibc >=2.17 arch: x86_64 platform: linux license: Apache-2.0 - license_family: APACHE - size: 2258007 - timestamp: 1732734202127 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.21.0-py312ha0d6ea1_0.conda - sha256: ef0f4d4e2c798b1821187ea0ba4c86484e48abaa0e9a19fe68030fa7ff5dde84 - md5: 077f48c9e0c08a30d842e15c51df4143 + license_family: Apache + size: 2937158 + timestamp: 1736086387286 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.0-hd08dc88_1.conda + sha256: 60d34454b861501d7355f25a7b39fdb5de8d56fca49b5bcbe8b8142b7d82dce4 + md5: e21c4767e783a58c373fdb99de6211bf depends: - - huggingface_hub >=0.16.4,<1.0 + - ca-certificates - libgcc >=13 - - libstdcxx >=13 - - openssl >=3.4.0,<4.0a0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - constrains: - - __glibc >=2.17 arch: aarch64 platform: linux license: Apache-2.0 - license_family: APACHE - size: 2331194 - timestamp: 1732734303196 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.21.0-py312hf3e4074_0.conda - sha256: 5d395333fcb22dc611140286c1f2ea8b3fa220a4931c583587cb612238091555 - md5: 4c732c74b485ef7ac8ec1c548dd45e8e + license_family: Apache + size: 3469279 + timestamp: 1736088141230 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.0-h81ee809_1.conda + sha256: 97772762abc70b3a537683ca9fc3ff3d6099eb64e4aba3b9c99e6fce48422d21 + md5: 22f971393637480bda8c679f374d8861 depends: - __osx >=11.0 - - huggingface_hub >=0.16.4,<1.0 - - libcxx >=18 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - constrains: - - __osx >=11.0 + - ca-certificates arch: arm64 platform: osx license: Apache-2.0 + license_family: Apache + size: 2936415 + timestamp: 1736086108693 +- conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + sha256: da157b19bcd398b9804c5c52fc000fcb8ab0525bdb9c70f95beaa0bb42f85af1 + md5: 3bfed7e6228ebf2f7b9eaa47f1b4e2aa + depends: + - python >=3.8 + license: Apache-2.0 license_family: APACHE - size: 1931389 - timestamp: 1732734727624 -- conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda - sha256: 062a3a3a37fa8615ce57929ba7e982c76f5a5810bcebd435950f6d6c4147c310 - md5: e417822cb989e80a0d2b1b576fdd1657 + size: 60164 + timestamp: 1733203368787 +- conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + sha256: 9f64009cdf5b8e529995f18e03665b03f5d07c0b17445b8badef45bde76249ee + md5: 617f15191456cc6a13db418a275435e5 + depends: + - python >=3.9 + license: MPL-2.0 + license_family: MOZILLA + size: 41075 + timestamp: 1733233471940 +- conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + sha256: bb50f6499e8bc1d1a26f17716c97984671121608dc0c3ecd34858112bce59a27 + md5: 577852c7e53901ddccc7e6a9959ddebe + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 20448 + timestamp: 1733232756001 +- conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.8-h9e4cc4f_1_cpython.conda + build_number: 1 + sha256: 3f0e0518c992d8ccfe62b189125721309836fe48a010dc424240583e157f9ff0 + md5: 7fd2fd79436d9b473812f14e86746844 depends: - __glibc >=2.17,<3.0.a0 + - bzip2 >=1.0.8,<2.0a0 + - ld_impl_linux-64 >=2.36.1 + - libexpat >=2.6.4,<3.0a0 + - libffi >=3.4,<4.0a0 - libgcc >=13 - - python >=3.12,<3.13.0a0 + - liblzma >=5.6.3,<6.0a0 + - libnsl >=2.0.1,<2.1.0a0 + - libsqlite >=3.47.0,<4.0a0 + - libuuid >=2.38.1,<3.0a0 + - libxcrypt >=4.4.36 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.4.0,<4.0a0 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + constrains: - python_abi 3.12.* *_cp312 arch: x86_64 platform: linux - license: Apache-2.0 - license_family: Apache - size: 840414 - timestamp: 1732616043734 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py312h52516f5_0.conda - sha256: 4c19a544354172b2273553267e734795a6da3c78a04c2d19f8e9e159ca3178bc - md5: e28996d9d2d44d777b7e6fb12f63715b + license: Python-2.0 + size: 31565686 + timestamp: 1733410597922 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.8-h1683364_1_cpython.conda + build_number: 1 + sha256: 85573582d5b0f79923fed0a8365d3d74d21eee9f0a5fa1b9345f191e006363ab + md5: 09ec612ea05370989eaa3d81abf0f369 depends: + - bzip2 >=1.0.8,<2.0a0 + - ld_impl_linux-aarch64 >=2.36.1 + - libexpat >=2.6.4,<3.0a0 + - libffi >=3.4,<4.0a0 - libgcc >=13 - - python >=3.12,<3.13.0a0 + - liblzma >=5.6.3,<6.0a0 + - libnsl >=2.0.1,<2.1.0a0 + - libsqlite >=3.47.0,<4.0a0 + - libuuid >=2.38.1,<3.0a0 + - libxcrypt >=4.4.36 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.4.0,<4.0a0 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + constrains: - python_abi 3.12.* *_cp312 arch: aarch64 platform: linux - license: Apache-2.0 - license_family: Apache - size: 841662 - timestamp: 1732616934923 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda - sha256: 964a2705a36c50040c967b18b45b9cc8de3c2aff4af546979a574e0b38e58e39 - md5: fb0605888a475d6a380ae1d1a819d976 + license: Python-2.0 + size: 13760816 + timestamp: 1733407890896 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.8-hc22306f_1_cpython.conda + build_number: 1 + sha256: 7586a711b1b08a9df8864e26efdc06980bdfb0e18d5ac4651d0fee30a8d3e3a0 + md5: 54ca5b5d92ef3a3ba61e195ee882a518 depends: - __osx >=11.0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython + - bzip2 >=1.0.8,<2.0a0 + - libexpat >=2.6.4,<3.0a0 + - libffi >=3.4,<4.0a0 + - liblzma >=5.6.3,<6.0a0 + - libsqlite >=3.47.0,<4.0a0 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.4.0,<4.0a0 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + constrains: - python_abi 3.12.* *_cp312 arch: arm64 platform: osx - license: Apache-2.0 - license_family: Apache - size: 842549 - timestamp: 1732616081362 -- conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda - sha256: 11e2c85468ae9902d24a27137b6b39b4a78099806e551d390e394a8c34b48e40 - md5: 9efbfdc37242619130ea42b1cc4ed861 - depends: - - colorama - - python >=3.9 - license: MPL-2.0 or MIT - size: 89498 - timestamp: 1735661472632 -- conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - sha256: f39a5620c6e8e9e98357507262a7869de2ae8cc07da8b7f84e517c9fd6c2b959 - md5: 019a7385be9af33791c989871317e1ed + license: Python-2.0 + size: 12998673 + timestamp: 1733408900971 +- conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + sha256: a50052536f1ef8516ed11a844f9413661829aa083304dc624c5925298d078d79 + md5: 5ba79d7c71f03c678c8ead841f347d6e depends: - python >=3.9 - license: BSD-3-Clause - license_family: BSD - size: 110051 - timestamp: 1733367480074 -- conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.48.2-pyhd8ed1ab_0.conda - sha256: 67b19c3d6befcc538df3e6d8dc7c4a2b6c7e35b7c1666da790cea4166f1b768a - md5: 717807c559e9a30fea4850ab8881adcb - depends: - - datasets !=2.5.0 - - filelock - - huggingface_hub >=0.23.0,<1.0 - - numpy >=1.17 - - packaging >=20.0 - - python >=3.9 - - pyyaml >=5.1 - - regex !=2019.12.17 - - requests - - safetensors >=0.4.1 - - tokenizers >=0.21,<0.22 - - tqdm >=4.27 + - six >=1.5 license: Apache-2.0 license_family: APACHE - size: 3416794 - timestamp: 1738278628376 -- conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda - sha256: ef695490e895c2ad552c77ec497b899b09fd4ad4ab07edcf5649f5994cf92a35 - md5: 170a0398946d8f5b454e592672b6fc20 - depends: - - python >=3.9 - - typer-slim-standard 0.15.1 hd8ed1ab_0 - license: MIT - license_family: MIT - size: 56175 - timestamp: 1733408582623 -- conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda - sha256: d4965516f35e0805199de6596c4ac76c4ad3d6b012be35e532102f9e53ecb860 - md5: 0218b16f5a1dd569e575a7a6415489db - depends: - - click >=8.0.0 - - python >=3.9 - - typing_extensions >=3.7.4.3 + size: 222505 + timestamp: 1733215763718 +- conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda + build_number: 5 + sha256: d10e93d759931ffb6372b45d65ff34d95c6000c61a07e298d162a3bc2accebb0 + md5: 0424ae29b104430108f5218a66db7260 constrains: - - rich >=10.11.0 - - typer >=0.15.1,<0.15.2.0a0 - - shellingham >=1.3.0 - license: MIT - license_family: MIT - size: 43592 - timestamp: 1733408569554 -- conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda - sha256: f31c56fe98315da8b9ce848256c17e0b9f87896b41a6ccf0c9cc74644dcef20f - md5: 4e603c43bfdfc7b533be087c3e070cc9 - depends: - - rich - - shellingham - - typer-slim 0.15.1 pyhd8ed1ab_0 - license: MIT - license_family: MIT - size: 49531 - timestamp: 1733408570063 -- conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda - noarch: python - sha256: c8e9c1c467b5f960b627d7adc1c65fece8e929a3de89967e91ef0f726422fd32 - md5: b6a408c64b78ec7b779a3e5c7a902433 - depends: - - typing_extensions 4.12.2 pyha770c72_1 - license: PSF-2.0 - license_family: PSF - size: 10075 - timestamp: 1733188758872 -- conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - sha256: 337be7af5af8b2817f115b3b68870208b30c31d3439bec07bfb2d8f4823e3568 - md5: d17f13df8b65464ca316cbc000a3cb64 - depends: - - python >=3.9 - license: PSF-2.0 - license_family: PSF - size: 39637 - timestamp: 1733188758212 -- conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda - sha256: c4b1ae8a2931fe9b274c44af29c5475a85b37693999f8c792dad0f8c6734b1de - md5: dbcace4706afdfb7eb891f7b37d07c04 - license: LicenseRef-Public-Domain - size: 122921 - timestamp: 1737119101255 -- conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda - sha256: 114919ffa80c328127dab9c8e7a38f9d563c617691fb81fccb11c1e86763727e - md5: 32674f8dbfb7b26410ed580dd3c10a29 - depends: - - brotli-python >=1.0.9 - - h2 >=4,<5 - - pysocks >=1.5.6,<2.0,!=1.5.7 - - python >=3.9 - - zstandard >=0.18.0 - license: MIT - license_family: MIT - size: 100102 - timestamp: 1734859520452 -- conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.34.0-pyh31011fe_0.conda - sha256: 55c160b0cf9274e2b98bc0f7fcce548bffa8d788bc86aa02801877457040f6fa - md5: 5d448feee86e4740498ec8f8eb40e052 - depends: - - __unix - - click >=7.0 - - h11 >=0.8 - - python >=3.9 - - typing_extensions >=4.0 + - python 3.12.* *_cpython + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD - size: 48643 - timestamp: 1734293057914 -- conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.34.0-h31011fe_0.conda - sha256: 87e1531e175e75122f9f37608eb953af4c977465ab0ae11283cc01fef954e4ec - md5: 32a94143a7f65d76d2d5da37dcb4ed79 - depends: - - __unix - - httptools >=0.6.3 - - python-dotenv >=0.13 - - pyyaml >=5.1 - - uvicorn 0.34.0 pyh31011fe_0 - - uvloop >=0.14.0,!=0.15.0,!=0.15.1 - - watchfiles >=0.13 - - websockets >=10.4 + size: 6238 + timestamp: 1723823388266 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.12-5_cp312.conda + build_number: 5 + sha256: 5ccdad9981753cc4a2d126e356673a21c0cd5b34e209cb8d476a3947d4ad9b39 + md5: 62b20f305498284a07dc6c45fd0e5c87 + constrains: + - python 3.12.* *_cpython + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 6329 + timestamp: 1723823366253 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-5_cp312.conda + build_number: 5 + sha256: 49d624e4b809c799d2bf257b22c23cf3fc4460f5570d9a58e7ad86350aeaa1f4 + md5: b76f9b1c862128e56ac7aa8cd2333de9 + constrains: + - python 3.12.* *_cpython + arch: arm64 + platform: osx license: BSD-3-Clause license_family: BSD - size: 7203 - timestamp: 1734293058849 -- conda: https://conda.anaconda.org/conda-forge/linux-64/uvloop-0.21.0-py312h66e93f0_1.conda - sha256: 9337a80165fcf70b06b9d6ba920dad702260ca966419ae77560a15540e41ab72 - md5: 998e481e17c1b6a74572e73b06f2df08 + size: 6278 + timestamp: 1723823099686 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.1-py312hbf22597_0.conda + sha256: 90ec0da0317d3d76990a40c61e1709ef859dd3d8c63838bad2814f46a63c8a2e + md5: 7cec8d0dac15a2d9fea8e49879aa779d depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - - libuv >=1.49.2,<2.0a0 + - libsodium >=1.0.20,<1.0.21.0a0 + - libstdcxx >=13 - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 + - zeromq >=4.3.5,<4.4.0a0 arch: x86_64 platform: linux - license: MIT OR Apache-2.0 - size: 701355 - timestamp: 1730214506716 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/uvloop-0.21.0-py312hb2c0f52_1.conda - sha256: 807eede6698bd00a1d739a3e19ee6ae6a03a66d2ddd2ef150f2dfd198c3b0292 - md5: d83e107ba16c77aba2feec47b7b666a4 + license: BSD-3-Clause + license_family: BSD + size: 382698 + timestamp: 1738271121975 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyzmq-26.2.1-py312h2427ae1_0.conda + sha256: 9558f9330093e5c21b7c04e2e212e19b9b88ad9c808315f12c0765b244018a09 + md5: 0520da8de6870d8ff63e818e927d1524 depends: - libgcc >=13 - - libuv >=1.49.2,<2.0a0 + - libsodium >=1.0.20,<1.0.21.0a0 + - libstdcxx >=13 - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 + - zeromq >=4.3.5,<4.4.0a0 arch: aarch64 platform: linux - license: MIT OR Apache-2.0 - size: 655266 - timestamp: 1730214606664 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/uvloop-0.21.0-py312h0bf5046_1.conda - sha256: b1efa77aa4871d7bb09c8dd297fa9bd9070ba7f0f95f2d12ae9cdd31ce8b6b22 - md5: 4f5110253ba80ebf27e55c4ab333880a + license: BSD-3-Clause + license_family: BSD + size: 375156 + timestamp: 1738273130727 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.1-py312hf4875e0_0.conda + sha256: 70d398b334668dc597d33e27847ede1b0829a639b9c91ee845355e52c86c2293 + md5: bfbefdb140b546a80827ff7c9d5ac7b8 depends: - __osx >=11.0 - - libuv >=1.49.2,<2.0a0 + - libcxx >=18 + - libsodium >=1.0.20,<1.0.21.0a0 - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 + - zeromq >=4.3.5,<4.4.0a0 arch: arm64 platform: osx - license: MIT OR Apache-2.0 - size: 544097 - timestamp: 1730214653726 -- conda: https://conda.anaconda.org/conda-forge/linux-64/watchfiles-1.0.4-py312h12e396e_0.conda - sha256: b728f525dcae2c10524f9942255346eba62aee9c820ff269d7dd4f7caffb7ffb - md5: df87129c4cb7afc4a3cbad71a1b9e223 + license: BSD-3-Clause + license_family: BSD + size: 364649 + timestamp: 1738271263898 +- conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda + sha256: 5435cf39d039387fbdc977b0a762357ea909a7694d9528ab40f005e9208744d7 + md5: 47d31b792659ce70f470b5c82fdfb7a4 depends: - - __glibc >=2.17,<3.0.a0 - - anyio >=3.0.0 - - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - constrains: - - __glibc >=2.17 + - libgcc-ng >=12 + - ncurses >=6.3,<7.0a0 arch: x86_64 platform: linux - license: MIT - license_family: MIT - size: 410192 - timestamp: 1736550568524 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/watchfiles-1.0.4-py312h8cbf658_0.conda - sha256: 45193910f6bafc287c784442d173745161b18f96223f0f990a9a744fda753787 - md5: ed958a27e610c31de625e167d4c11a04 + license: GPL-3.0-only + license_family: GPL + size: 281456 + timestamp: 1679532220005 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8fc344f_1.conda + sha256: 4c99f7417419734e3797d45bc355e61c26520e111893b0d7087a01a7fbfbe3dd + md5: 105eb1e16bf83bfb2eb380a48032b655 depends: - - anyio >=3.0.0 - - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - constrains: - - __glibc >=2.17 + - libgcc-ng >=12 + - ncurses >=6.3,<7.0a0 arch: aarch64 platform: linux - license: MIT - license_family: MIT - size: 403791 - timestamp: 1736550743174 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/watchfiles-1.0.4-py312hcd83bfe_0.conda - sha256: 84122e3712f2263e12c9d2be75d122eaf2d269801183df4b73aadcb670943b17 - md5: 946eb0208d09b811a671fad9b2831f4e - depends: - - __osx >=11.0 - - anyio >=3.0.0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - constrains: - - __osx >=11.0 + license: GPL-3.0-only + license_family: GPL + size: 294092 + timestamp: 1679532238805 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h92ec313_1.conda + sha256: a1dfa679ac3f6007362386576a704ad2d0d7a02e98f5d0b115f207a2da63e884 + md5: 8cbb776a2f641b943d413b3e19df71f4 + depends: + - ncurses >=6.3,<7.0a0 arch: arm64 platform: osx - license: MIT - license_family: MIT - size: 363822 - timestamp: 1736550859472 -- conda: https://conda.anaconda.org/conda-forge/linux-64/websockets-14.2-py312h66e93f0_0.conda - sha256: 52092f1f811fddcbb63e4e8e1c726f32a0a1ea14c36b70982fc2021a3c010e48 - md5: 279166352304d5d4b63429e9c86fa3dc + license: GPL-3.0-only + license_family: GPL + size: 250351 + timestamp: 1679532511311 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-0.2.0-hc8f76dd_10.conda + sha256: a1bde55ceb9dc5bd7879283d0f594a6ce65c07fda3de76230c65a4a5df47858a + md5: 480e915dfc6c592615ef6f217e615aa6 depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - python >=3.12,<3.13.0a0 + - libsentencepiece 0.2.0 h8e10757_10 - python_abi 3.12.* *_cp312 + - sentencepiece-python 0.2.0 py312hb6b8a2b_10 + - sentencepiece-spm 0.2.0 h8e10757_10 arch: x86_64 platform: linux - license: BSD-3-Clause - license_family: BSD - size: 242949 - timestamp: 1737358315063 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/websockets-14.2-py312hb2c0f52_0.conda - sha256: 5b8273df10b85a667b4fe71788a12c33a9626723650e28f582fd56c87bad0471 - md5: d7535d5d2f8d49d625071f305d6112a1 + license: Apache-2.0 + license_family: Apache + size: 19470 + timestamp: 1735628377167 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-0.2.0-h6c1b121_10.conda + sha256: 846d885a560fbb4375b645e7caf2f756ef88bbeb441b670375da0090aaa427fb + md5: 33a89eb1dedae8eb7222b0a89856f337 depends: - - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython + - libsentencepiece 0.2.0 h6164ad9_10 - python_abi 3.12.* *_cp312 + - sentencepiece-python 0.2.0 py312h197ff68_10 + - sentencepiece-spm 0.2.0 h6164ad9_10 arch: aarch64 platform: linux - license: BSD-3-Clause - license_family: BSD - size: 244675 - timestamp: 1737358397158 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/websockets-14.2-py312hea69d52_0.conda - sha256: e5ad8c983a1669d06a6648990c0491d5469143f02003c8fd2ae7d066d7d4b086 - md5: 8757561d3ea10ba178fb7fb888f33e3a + license: Apache-2.0 + license_family: Apache + size: 19686 + timestamp: 1735628718991 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-0.2.0-h22a84ea_10.conda + sha256: 526c934b897131bd274697649c3b1c492a7d66c03368885a954112468b3c1424 + md5: 346abe448f69949a65473b336856860a depends: - - __osx >=11.0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython + - libsentencepiece 0.2.0 he13a0af_10 - python_abi 3.12.* *_cp312 + - sentencepiece-python 0.2.0 py312h155166a_10 + - sentencepiece-spm 0.2.0 he13a0af_10 arch: arm64 platform: osx - license: BSD-3-Clause - license_family: BSD - size: 246269 - timestamp: 1737358485546 -- conda: https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.17.2-py312h66e93f0_0.conda - sha256: ed3a1700ecc5d38c7e7dc7d2802df1bc1da6ba3d6f6017448b8ded0affb4ae00 - md5: 669e63af87710f8d52fdec9d4d63b404 + license: Apache-2.0 + license_family: Apache + size: 19759 + timestamp: 1735628533490 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-python-0.2.0-py312hb6b8a2b_10.conda + sha256: 37df7fb659564587b950b39c936769d9b5095afb7bc223f42d6248a5540c6567 + md5: 7908b7b977e2e123a5f6a29906f2ce44 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 h8e10757_10 + - libstdcxx >=13 - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 arch: x86_64 platform: linux - license: BSD-2-Clause - license_family: BSD - size: 63590 - timestamp: 1736869574299 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/wrapt-1.17.2-py312hb2c0f52_0.conda - sha256: cc28914462a21b2f64d9b763a9733bfcbc811dd2975d0d2e6e429e35f5b6d59c - md5: 8a5c6e3f809bae085be369b62dc5d06a + license: Apache-2.0 + license_family: Apache + size: 2411182 + timestamp: 1735628106455 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-python-0.2.0-py312h197ff68_10.conda + sha256: a7c2c19cc397c7632e2630af49ddcff128f145c93ea493421e6f42bfa5e1d30b + md5: 5642e4545a3cf03e446fb3b3e9fd723b depends: - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 h6164ad9_10 + - libstdcxx >=13 - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 arch: aarch64 platform: linux - license: BSD-2-Clause - license_family: BSD - size: 63967 - timestamp: 1736869675870 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/wrapt-1.17.2-py312hea69d52_0.conda - sha256: 6a3e68b57de29802e8703d1791dcacb7613bfdc17bbb087c6b2ea2796e6893ef - md5: e49608c832fcf438f70cbcae09c3adc5 + license: Apache-2.0 + license_family: Apache + size: 2458076 + timestamp: 1735628298246 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-python-0.2.0-py312h155166a_10.conda + sha256: 2d59614aeafbf54cc718805798c11c2d0a3b4b8d947d1bd81c87c484b4883077 + md5: 6e11367ef670296fce01fc9860be944d depends: - __osx >=11.0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 he13a0af_10 - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 arch: arm64 platform: osx - license: BSD-2-Clause - license_family: BSD - size: 61198 - timestamp: 1736869673767 -- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-hb9d3cd8_0.conda - sha256: ed10c9283974d311855ae08a16dfd7e56241fac632aec3b92e3cfe73cff31038 - md5: f6ebe2cb3f82ba6c057dde5d9debe4f7 + license: Apache-2.0 + license_family: Apache + size: 2433303 + timestamp: 1735628083958 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-spm-0.2.0-h8e10757_10.conda + sha256: 6b55e1121545357d63c3aa0766931720e8aafc52d88641ba7631c8cbaa68c52f + md5: e977b7be5ac26c55825e121e00b90493 depends: - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 h8e10757_10 + - libstdcxx >=13 arch: x86_64 platform: linux - license: MIT - license_family: MIT - size: 14780 - timestamp: 1734229004433 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxau-1.0.12-h86ecc28_0.conda - sha256: 7829a0019b99ba462aece7592d2d7f42e12d12ccd3b9614e529de6ddba453685 - md5: d5397424399a66d33c80b1f2345a36a6 + license: Apache-2.0 + license_family: Apache + size: 89076 + timestamp: 1735628334078 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-spm-0.2.0-h6164ad9_10.conda + sha256: b98fc1028a8e8fbf309af383f9c837290a14e076e6c5533dc251694ea33ffc6e + md5: a4b75936c01dca3f089f02752b7ee325 depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 h6164ad9_10 + - libstdcxx >=13 arch: aarch64 platform: linux - license: MIT - license_family: MIT - size: 15873 - timestamp: 1734230458294 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxau-1.0.12-h5505292_0.conda - sha256: f33e6f013fc36ebc200f09ddead83468544cb5c353a3b50499b07b8c34e28a8d - md5: 50901e0764b7701d8ed7343496f4f301 + license: Apache-2.0 + license_family: Apache + size: 85983 + timestamp: 1735628693813 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-spm-0.2.0-he13a0af_10.conda + sha256: b760aeee02e2afbfcce3f559e8a227aa4c94139157b1702fdfb41a057dad0e52 + md5: 9b7300f23cd330da8664cd072c162e5f depends: - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 he13a0af_10 arch: arm64 platform: osx - license: MIT - license_family: MIT - size: 13593 - timestamp: 1734229104321 -- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb9d3cd8_0.conda - sha256: 6b250f3e59db07c2514057944a3ea2044d6a8cdde8a47b6497c254520fade1ee - md5: 8035c64cb77ed555e3f150b7b3972480 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - arch: x86_64 - platform: linux - license: MIT - license_family: MIT - size: 19901 - timestamp: 1727794976192 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxdmcp-1.1.5-h57736b2_0.conda - sha256: efcc150da5926cf244f757b8376d96a4db78bc15b8d90ca9f56ac6e75755971f - md5: 25a5a7b797fe6e084e04ffe2db02fc62 - depends: - - libgcc >=13 - arch: aarch64 - platform: linux - license: MIT - license_family: MIT - size: 20615 - timestamp: 1727796660574 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxdmcp-1.1.5-hd74edd7_0.conda - sha256: 9939a166d780700d81023546759102b33fdc2c5f11ef09f5f66c77210fd334c8 - md5: 77c447f48cab5d3a15ac224edb86a968 + license: Apache-2.0 + license_family: Apache + size: 83826 + timestamp: 1735628514667 +- conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + sha256: 41db0180680cc67c3fa76544ffd48d6a5679d96f4b71d7498a759e94edc9a2db + md5: a451d576819089b0d672f18768be0f65 depends: - - __osx >=11.0 - arch: arm64 - platform: osx + - python >=3.9 license: MIT license_family: MIT - size: 18487 - timestamp: 1727795205022 -- conda: https://conda.anaconda.org/conda-forge/linux-64/xxhash-0.8.2-hd590300_0.conda - sha256: 6fe74a8fd84ab0dc25e4dc3e0c22388dd8accb212897a208b14fe5d4fbb8fc2f - md5: f08fb5c89edfc4aadee1c81d4cfb1fa1 + size: 16385 + timestamp: 1733381032766 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda + sha256: e0569c9caa68bf476bead1bed3d79650bb080b532c64a4af7d8ca286c08dea4e + md5: d453b98d9c83e71da0741bb0ff4d76bc depends: - libgcc-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 arch: x86_64 platform: linux - license: BSD-2-Clause + license: TCL license_family: BSD - size: 97691 - timestamp: 1689951608120 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xxhash-0.8.2-h31becfc_0.conda - sha256: 4c526aed70b579d80e5c20d32130b6bc8bde59b3250d43c2b5269755f4da8a9b - md5: bb9faf6857108a9f62ebb4dab6ef05da + size: 3318875 + timestamp: 1699202167581 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda + sha256: 7fa27cc512d3a783f38bd16bbbffc008807372499d5b65d089a8e43bde9db267 + md5: f75105e0585851f818e0009dd1dde4dc depends: - libgcc-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 arch: aarch64 platform: linux - license: BSD-2-Clause - license_family: BSD - size: 102442 - timestamp: 1689951682147 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/xxhash-0.8.2-hb547adb_0.conda - sha256: a70f59f7221ee72c45b39a6b36a33eb9c717ba01921cce1a3c361a4676979a2e - md5: 144cd3b88706507f332f5eb5fb83a33b - arch: arm64 - platform: osx - license: BSD-2-Clause + license: TCL license_family: BSD - size: 97593 - timestamp: 1689951969732 -- conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 - sha256: a4e34c710eeb26945bdbdaba82d3d74f60a78f54a874ec10d373811a5d217535 - md5: 4cb3ad778ec2d5a7acbdf254eb1c42ae - depends: - - libgcc-ng >=9.4.0 - arch: x86_64 - platform: linux - license: MIT - license_family: MIT - size: 89141 - timestamp: 1641346969816 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yaml-0.2.5-hf897c2e_2.tar.bz2 - sha256: 8bc601d6dbe249eba44b3c456765265cd8f42ef1e778f8df9b0c9c88b8558d7e - md5: b853307650cb226731f653aa623936a4 + size: 3351802 + timestamp: 1695506242997 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda + sha256: 72457ad031b4c048e5891f3f6cb27a53cb479db68a52d965f796910e71a403a8 + md5: b50a57ba89c32b62428b71a875291c9b depends: - - libgcc-ng >=9.4.0 - arch: aarch64 - platform: linux - license: MIT - license_family: MIT - size: 92927 - timestamp: 1641347626613 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 - sha256: 93181a04ba8cfecfdfb162fc958436d868cc37db504c58078eab4c1a3e57fbb7 - md5: 4bb3f014845110883a3c5ee811fd84b4 + - libzlib >=1.2.13,<2.0.0a0 arch: arm64 platform: osx - license: MIT - license_family: MIT - size: 88016 - timestamp: 1641347076660 -- conda: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.18.3-py312h178313f_1.conda - sha256: 6b054c93dd19fd7544af51b41a8eacca2ab62271f6c0c5a2a0cffe80dc37a0ce - md5: 6822c49f294d4355f19d314b8b6063d8 + license: TCL + license_family: BSD + size: 3145523 + timestamp: 1699202432999 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda + sha256: 062a3a3a37fa8615ce57929ba7e982c76f5a5810bcebd435950f6d6c4147c310 + md5: e417822cb989e80a0d2b1b576fdd1657 depends: - __glibc >=2.17,<3.0.a0 - - idna >=2.0 - libgcc >=13 - - multidict >=4.0 - - propcache >=0.2.1 - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 arch: x86_64 platform: linux license: Apache-2.0 license_family: Apache - size: 152305 - timestamp: 1737575898300 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.18.3-py312hcc812fe_1.conda - sha256: bfa211c0dd5dbb308788f055277dc428b7923ceb2de6a22ea98bc17cf306f9f5 - md5: d14c78abdd6109e2b7162f53b6cc1e77 + size: 840414 + timestamp: 1732616043734 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py312h52516f5_0.conda + sha256: 4c19a544354172b2273553267e734795a6da3c78a04c2d19f8e9e159ca3178bc + md5: e28996d9d2d44d777b7e6fb12f63715b depends: - - idna >=2.0 - libgcc >=13 - - multidict >=4.0 - - propcache >=0.2.1 - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 arch: aarch64 platform: linux license: Apache-2.0 license_family: Apache - size: 149654 - timestamp: 1737576065314 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.18.3-py312h998013c_1.conda - sha256: 48821d23567ca0f853eee6f7812c74392867e123798b5b3c44f58758d8eb580e - md5: 092d3b40acc67c470f379049be343a7a + size: 841662 + timestamp: 1732616934923 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda + sha256: 964a2705a36c50040c967b18b45b9cc8de3c2aff4af546979a574e0b38e58e39 + md5: fb0605888a475d6a380ae1d1a819d976 depends: - __osx >=11.0 - - idna >=2.0 - - multidict >=4.0 - - propcache >=0.2.1 - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 @@ -7324,8 +2090,41 @@ packages: platform: osx license: Apache-2.0 license_family: Apache - size: 145543 - timestamp: 1737576074753 + size: 842549 + timestamp: 1732616081362 +- conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + sha256: 11e2c85468ae9902d24a27137b6b39b4a78099806e551d390e394a8c34b48e40 + md5: 9efbfdc37242619130ea42b1cc4ed861 + depends: + - colorama + - python >=3.9 + license: MPL-2.0 or MIT + size: 89498 + timestamp: 1735661472632 +- conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + sha256: f39a5620c6e8e9e98357507262a7869de2ae8cc07da8b7f84e517c9fd6c2b959 + md5: 019a7385be9af33791c989871317e1ed + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 110051 + timestamp: 1733367480074 +- conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + sha256: 337be7af5af8b2817f115b3b68870208b30c31d3439bec07bfb2d8f4823e3568 + md5: d17f13df8b65464ca316cbc000a3cb64 + depends: + - python >=3.9 + license: PSF-2.0 + license_family: PSF + size: 39637 + timestamp: 1733188758212 +- conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + sha256: c4b1ae8a2931fe9b274c44af29c5475a85b37693999f8c792dad0f8c6734b1de + md5: dbcace4706afdfb7eb891f7b37d07c04 + license: LicenseRef-Public-Domain + size: 122921 + timestamp: 1737119101255 - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda sha256: a4dc72c96848f764bb5a5176aa93dd1e9b9e52804137b99daeebba277b31ea10 md5: 3947a35e916fcc6b9825449affbf4214 @@ -7378,129 +2177,3 @@ packages: license_family: MIT size: 21809 timestamp: 1732827613585 -- conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.1-hb9d3cd8_2.conda - sha256: 5d7c0e5f0005f74112a34a7425179f4eb6e73c92f5d109e6af4ddeca407c92ab - md5: c9f075ab2f33b3bbee9e62d4ad0a6cd8 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libzlib 1.3.1 hb9d3cd8_2 - arch: x86_64 - platform: linux - license: Zlib - license_family: Other - size: 92286 - timestamp: 1727963153079 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zlib-1.3.1-h86ecc28_2.conda - sha256: b4f649aa3ecdae384d5dad7074e198bff120edd3dfb816588e31738fc6d627b1 - md5: bc230abb5d21b63ff4799b0e75204783 - depends: - - libgcc >=13 - - libzlib 1.3.1 h86ecc28_2 - arch: aarch64 - platform: linux - license: Zlib - license_family: Other - size: 95582 - timestamp: 1727963203597 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zlib-1.3.1-h8359307_2.conda - sha256: 58f8860756680a4831c1bf4f294e2354d187f2e999791d53b1941834c4b37430 - md5: e3170d898ca6cb48f1bb567afb92f775 - depends: - - __osx >=11.0 - - libzlib 1.3.1 h8359307_2 - arch: arm64 - platform: osx - license: Zlib - license_family: Other - size: 77606 - timestamp: 1727963209370 -- conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312hef9b889_1.conda - sha256: b97015e146437283f2213ff0e95abdc8e2480150634d81fbae6b96ee09f5e50b - md5: 8b7069e9792ee4e5b4919a7a306d2e67 - depends: - - __glibc >=2.17,<3.0.a0 - - cffi >=1.11 - - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - - zstd >=1.5.6,<1.5.7.0a0 - - zstd >=1.5.6,<1.6.0a0 - arch: x86_64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 419552 - timestamp: 1725305670210 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstandard-0.23.0-py312hb698573_1.conda - sha256: 2681c2a249752bdc7978e59ee2f34fcdfcbfda80029b84b8e5fec8dbc9e3af25 - md5: ffcb8e97e62af42075e0e5f46bb9856e - depends: - - cffi >=1.11 - - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - - zstd >=1.5.6,<1.5.7.0a0 - - zstd >=1.5.6,<1.6.0a0 - arch: aarch64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 392496 - timestamp: 1725305808244 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py312h15fbf35_1.conda - sha256: d00ca25c1e28fd31199b26a94f8c96574475704a825d244d7a6351ad3745eeeb - md5: a4cde595509a7ad9c13b1a3809bcfe51 - depends: - - __osx >=11.0 - - cffi >=1.11 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - - zstd >=1.5.6,<1.5.7.0a0 - - zstd >=1.5.6,<1.6.0a0 - arch: arm64 - platform: osx - license: BSD-3-Clause - license_family: BSD - size: 330788 - timestamp: 1725305806565 -- conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda - sha256: c558b9cc01d9c1444031bd1ce4b9cff86f9085765f17627a6cd85fc623c8a02b - md5: 4d056880988120e29d75bfff282e0f45 - depends: - - libgcc-ng >=12 - - libstdcxx-ng >=12 - - libzlib >=1.2.13,<2.0.0a0 - arch: x86_64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 554846 - timestamp: 1714722996770 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.6-h02f22dd_0.conda - sha256: 484f9d0722c77685ae379fbff3ccd662af9ead7e59eb39cd6d0c677cdf25ff6c - md5: be8d5f8cf21aed237b8b182ea86b3dd6 - depends: - - libgcc-ng >=12 - - libstdcxx-ng >=12 - - libzlib >=1.2.13,<2.0.0a0 - arch: aarch64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 539937 - timestamp: 1714723130243 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.6-hb46c0d2_0.conda - sha256: 2d4fd1ff7ee79cd954ca8e81abf11d9d49954dd1fef80f27289e2402ae9c2e09 - md5: d96942c06c3e84bfcc5efb038724a7fd - depends: - - __osx >=11.0 - - libzlib >=1.2.13,<2.0.0a0 - arch: arm64 - platform: osx - license: BSD-3-Clause - license_family: BSD - size: 405089 - timestamp: 1714723101397 diff --git a/examples/testing/magic.lock b/examples/testing/magic.lock index 9c18241bfa..e115e1b185 100644 --- a/examples/testing/magic.lock +++ b/examples/testing/magic.lock @@ -8,90 +8,20 @@ environments: linux-64: - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.12-py312h178313f_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.8.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.1.0-pyh71513ae_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.1-h205f482_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.1-h1a47875_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.10.6-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.3.0-h4e1184b_5.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.0-h7959bf6_11.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.2-hefd7a92_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-h173a860_6.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h11f4f37_12.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.9-he1b24dc_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.2-h4e1184b_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-h4e1184b_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.9-he0e7f3f_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.489-h4d475cb_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.10.0-h113e628_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.13.0-h3cf044e_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-common-cpp-12.8.0-h736e048_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-files-datalake-cpp-12.12.0-ha633028_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/backoff-2.2.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py312h2ec8cdc_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.4-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2025.1.31-hbcca054_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.12.14-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py312h06ac9bb_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.18-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda - - 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.8-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.17.0-pyhd8ed1ab_0.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-py312h178313f_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2025.2.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/gflags-2.2.2-h5888daf_1005.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/glog-0.7.1-hbabe93e_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/httptools-0.6.4-py312h66e93f0_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.28.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.16-hb7c19ff_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-19.0.0-h00a82cf_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-19.0.0-hcb10f89_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-19.0.0-hcb10f89_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-19.0.0-h08228c5_8_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-28_h59b9bed_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hb9d3cd8_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hb9d3cd8_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.1.0-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-28_he106b2a_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libcrc32c-1.1.2-h9c3ff4c_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.11.1-h332b0f4_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.23-h4ddbbb0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libevent-2.1.12-hf998b51_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.2-h7f98852_5.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h77fa898_1.conda @@ -99,222 +29,64 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hd5240d6_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h77fa898_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.34.0-h2b5623c_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.34.0-h0121fbd_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.67.1-h25350d4_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-hd590300_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-28_h7ac8fdf_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.28-pthreads_h94d23a6_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-1.18.0-hfcad708_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-headers-1.18.0-ha770c72_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-19.0.0-h081d1f1_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.46-h943b412_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsentencepiece-0.2.0-h8e10757_10.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.48.0-hee588c1_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hf672d98_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-hc0a3c3a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libthrift-0.21.0-h0e7cc3e_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hd9ff511_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.10.0-h4c51ac1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.50.0-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.5.0-h851e524_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.5-h0d44e9d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - - 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-25.1.0.dev2025020605-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025020605-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025020605-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020605-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-25.1.0.dev2025020605-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.modular.com/max-nightly/noarch/max-25.1.0.dev2025020700-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025020700-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025020700-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020700-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020700-release.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-h2d0b736_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/nlohmann_json-3.11.3-he02047a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.3-h5fbd93e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.0-h7b32b05_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.29.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.29.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.29.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-prometheus-1.12.0rc1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.29.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.29.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.50b0-pyh3cfb1c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/orc-2.0.3-h12ee42a_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.3-py312hf9745cd_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-11.1.0-py312h80c1187_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/prometheus-cpp-1.3.0-ha5d0236_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.1-py312h178313f_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/protobuf-5.28.3-py312h2ec8cdc_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-19.0.0-py312h7900ff3_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-19.0.0-py312h01725c0_0_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.6-pyh3cfb1c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.27.2-py312h12e396e_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.7.1-pyh3cfb1c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pyinstrument-5.0.1-py312h66e93f0_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.8-h9e4cc4f_1_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.20-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/python-xxhash-3.5.0-py312h66e93f0_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py312h178313f_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.1-py312hbf22597_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/re2-2024.07.02-h9925aae_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda - - 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.11-h072c03f_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/safetensors-0.5.2-py312h12e396e_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-0.2.0-hc8f76dd_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-python-0.2.0-py312hb6b8a2b_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-spm-0.2.0-h8e10757_10.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-h8bd8927_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.2.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.45.3-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.21.0-py312h8360d73_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.48.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.34.0-pyh31011fe_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.34.0-h31011fe_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/uvloop-0.21.0-py312h66e93f0_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/watchfiles-1.0.4-py312h12e396e_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/websockets-14.2-py312h66e93f0_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.17.2-py312h66e93f0_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xxhash-0.8.2-hd590300_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.18.3-py312h178313f_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.1-hb9d3cd8_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312hef9b889_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda linux-aarch64: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.12-py312hcc812fe_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.8.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.1.0-pyh71513ae_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.1-hb7ec8d5_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.1-h740c5af_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-common-0.10.6-h86ecc28_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-compression-0.3.0-h0f0193d_5.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-event-stream-0.5.0-hcbd8f92_11.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.2-h3df160d_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-hfd5ba81_6.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h5f50e26_12.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.9-h05b070f_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.2-h0f0193d_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h0f0193d_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.9-hab3ce66_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.489-h88461e4_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-core-cpp-1.14.0-h1887c18_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-identity-cpp-1.10.0-h47b0b28_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-blobs-cpp-12.13.0-h185ecfd_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-common-cpp-12.8.0-h1b94036_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-files-datalake-cpp-12.12.0-h37d6d07_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/backoff-2.2.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/brotli-python-1.1.0-py312h6f74592_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h68df207_7.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/c-ares-1.34.4-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2025.1.31-hcefe29a_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.12.14-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cffi-1.17.1-py312hac81daf_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.18-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda - - 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.8-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.17.0-pyhd8ed1ab_0.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-py312hcc812fe_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2025.2.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gflags-2.2.2-h5ad3122_1005.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/glog-0.7.1-h468a4a4_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/httptools-0.6.4-py312hb2c0f52_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.28.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/keyutils-1.6.1-h4e544f5_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/krb5-1.21.3-h50a48e9_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lcms2-2.16-h922389a_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.0.0-h4de3ea5_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h18dbdb1_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-19.0.0-h03ebaaf_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-19.0.0-h3b568fd_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-19.0.0-h3b568fd_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-19.0.0-h1e9d426_8_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-28_h1a9f1db_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlicommon-1.1.0-h86ecc28_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlidec-1.1.0-h86ecc28_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlienc-1.1.0-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-28_hab92f65_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcrc32c-1.1.2-h01db608_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcurl-8.11.1-h6702fde_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libdeflate-1.23-h5e3c512_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20250104-pl5321h976ea20_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libev-4.33-h31becfc_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libevent-2.1.12-h4ba1bb4_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.6.4-h5ad3122_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.4.2-h3557bc0_5.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-14.2.0-he277a41_1.conda @@ -322,348 +94,104 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-2.34.0-hccf9d24_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-storage-2.34.0-hb9b2b65_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgrpc-1.67.1-hf7ccdd3_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libiconv-1.17-h31becfc_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libjpeg-turbo-3.0.0-h31becfc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-28_h411afd4_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.4-h86ecc28_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnghttp2-1.64.0-hc8609a4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.28-pthreads_h9d3fd7e_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopentelemetry-cpp-1.18.0-h60b47f9_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopentelemetry-cpp-headers-1.18.0-h8af1aa0_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-19.0.0-hfc78867_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.46-hec79eb8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.3-h44a3b7b_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsentencepiece-0.2.0-h6164ad9_10.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.20-h68df207_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.48.0-h5eb1b54_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libssh2-1.11.1-ha41c0db_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libthrift-0.21.0-h154c74f_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.0-h88f7998_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.10.0-ha346350_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuv-1.50.0-h86ecc28_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libwebp-base-1.5.0-h0886dbf_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcb-1.17.0-h262b8f6_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.5-h2e0c361_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - - 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-25.1.0.dev2025020605-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025020605-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025020605-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020605-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-25.1.0.dev2025020605-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.modular.com/max-nightly/noarch/max-25.1.0.dev2025020700-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025020700-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025020700-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020700-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020700-release.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-ha32ae93_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/nlohmann_json-3.11.3-h0a1ffab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openjpeg-2.5.3-h3f56577_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.0-hd08dc88_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.29.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.29.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.29.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-prometheus-1.12.0rc1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.29.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.29.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.50b0-pyh3cfb1c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/orc-2.0.3-hdd485aa_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pandas-2.2.3-py312ha2895bd_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pillow-11.1.0-py312h719f0cf_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/prometheus-cpp-1.3.0-h7938499_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.2.1-py312hcc812fe_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/protobuf-5.28.3-py312h6f74592_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pthread-stubs-0.4-h86ecc28_1002.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-19.0.0-py312h8025657_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-19.0.0-py312h66f7834_0_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.6-pyh3cfb1c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pydantic-core-2.27.2-py312h8cbf658_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.7.1-pyh3cfb1c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyinstrument-5.0.1-py312hb2c0f52_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.8-h1683364_1_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.20-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-xxhash-3.5.0-py312h52516f5_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.12-5_cp312.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyyaml-6.0.2-py312hcc812fe_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyzmq-26.2.1-py312h2427ae1_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/re2-2024.07.02-haa97905_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8fc344f_1.conda - - 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.11-h3caee7a_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/safetensors-0.5.2-py312h8cbf658_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-0.2.0-h6c1b121_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-python-0.2.0-py312h197ff68_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-spm-0.2.0-h6164ad9_10.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-hd4fb6f5_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.2.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.45.3-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.21.0-py312ha0d6ea1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py312h52516f5_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.48.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.34.0-pyh31011fe_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.34.0-h31011fe_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/uvloop-0.21.0-py312hb2c0f52_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/watchfiles-1.0.4-py312h8cbf658_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/websockets-14.2-py312hb2c0f52_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/wrapt-1.17.2-py312hb2c0f52_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxau-1.0.12-h86ecc28_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxdmcp-1.1.5-h57736b2_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xxhash-0.8.2-h31becfc_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yaml-0.2.5-hf897c2e_2.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.18.3-py312hcc812fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zeromq-4.3.5-h5efb499_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zlib-1.3.1-h86ecc28_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstandard-0.23.0-py312hb698573_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.6-h02f22dd_0.conda osx-arm64: - - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.12-py312h998013c_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.8.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.1.0-pyh71513ae_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.1-hfc2798a_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.1-hc8a0bd2_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.10.6-h5505292_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-compression-0.3.0-hc8a0bd2_5.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.0-h54f970a_11.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.2-h96aa502_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-haba67d1_6.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h24f418c_12.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.9-hf37e03c_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.2-hc8a0bd2_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-hc8a0bd2_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.9-ha81f72f_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.489-h0e5014b_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.14.0-hd50102c_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.10.0-hc602bab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-blobs-cpp-12.13.0-h7585a09_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-common-cpp-12.8.0-h9ca1f76_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-files-datalake-cpp-12.12.0-hcdd55da_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/backoff-2.2.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py312hde4cb15_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.4-h5505292_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2025.1.31-hf0a4a13_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.12.14-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.1-py312h0fad829_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.18-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda - - 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.8-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.17.0-pyhd8ed1ab_0.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-py312h998013c_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2025.2.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gflags-2.2.2-hf9b8971_1005.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/glog-0.7.1-heb240a5_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/httptools-0.6.4-py312hea69d52_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.28.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.16-ha0e7c42_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_h07bc746_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-19.0.0-h819e3af_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-19.0.0-hf07054f_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-19.0.0-hf07054f_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-19.0.0-h4239455_8_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-28_h10e41b3_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.1.0-hd74edd7_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.1.0-hd74edd7_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlienc-1.1.0-hd74edd7_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-28_hb3479ef_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcrc32c-1.1.2-hbdafb3b_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.11.1-h73640d1_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.23-hec38601_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libev-4.33-h93a5062_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libevent-2.1.12-h2757513_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.4-h286801f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-2.34.0-hdbe95d5_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-storage-2.34.0-h7081f7f_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgrpc-1.67.1-h0a426d6_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.17-h0d3ecfb_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.0.0-hb547adb_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-28_hc9a63f6_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.4-h39f12f2_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.64.0-h6d7220d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.28-openmp_hf332438_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopentelemetry-cpp-1.18.0-h0c05b2d_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopentelemetry-cpp-headers-1.18.0-hce30654_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-19.0.0-h636d7b7_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.46-h3783ad8_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.3-h3bd63a1_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h07bc746_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsentencepiece-0.2.0-he13a0af_10.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.48.0-h3f77e49_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.1-h9cc3647_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libthrift-0.21.0-h64651cc_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-h551f018_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.10.0-hda25de7_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libuv-1.50.0-h5505292_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.5.0-h2471fea_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxcb-1.17.0-hdb1d25a_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.5-h178c5d8_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda - - 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-25.1.0.dev2025020605-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025020605-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025020605-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020605-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-25.1.0.dev2025020605-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.modular.com/max-nightly/noarch/max-25.1.0.dev2025020700-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025020700-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025020700-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020700-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020700-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/nlohmann_json-3.11.3-h00cdb27_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openjpeg-2.5.3-h8a3d83b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.0-h81ee809_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.29.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.29.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.29.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-prometheus-1.12.0rc1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.29.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.29.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.50b0-pyh3cfb1c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/orc-2.0.3-h0ff2369_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.3-py312hcd31e36_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-11.1.0-py312h50aef2c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/prometheus-cpp-1.3.0-h0967b3e_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.1-py312h998013c_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/protobuf-5.28.3-py312hd8f9ff3_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pthread-stubs-0.4-hd74edd7_1002.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-19.0.0-py312h1f38498_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-19.0.0-py312hc40f475_0_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.6-pyh3cfb1c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.27.2-py312hcd83bfe_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.7.1-pyh3cfb1c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyinstrument-5.0.1-py312hea69d52_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.8-hc22306f_1_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.20-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-xxhash-3.5.0-py312h024a12e_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-5_cp312.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py312h998013c_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.1-py312hf4875e0_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/re2-2024.07.02-h6589ca4_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h92ec313_1.conda - - 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.5.2-py312hcd83bfe_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-0.2.0-h22a84ea_10.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-python-0.2.0-py312h155166a_10.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-spm-0.2.0-he13a0af_10.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-h98b9ce2_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.2.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.45.3-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.21.0-py312hf3e4074_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.48.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.34.0-pyh31011fe_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.34.0-h31011fe_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/uvloop-0.21.0-py312h0bf5046_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/watchfiles-1.0.4-py312hcd83bfe_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/websockets-14.2-py312hea69d52_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/wrapt-1.17.2-py312hea69d52_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxau-1.0.12-h5505292_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxdmcp-1.1.5-hd74edd7_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xxhash-0.8.2-hb547adb_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.18.3-py312h998013c_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zlib-1.3.1-h8359307_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py312h15fbf35_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.6-hb46c0d2_0.conda packages: - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 sha256: fe51de6107f9edc7aa4f786a70f4a883943bc9d39b3bb7307c04c41410990726 @@ -702,6621 +230,1859 @@ packages: license_family: BSD size: 23712 timestamp: 1650670790230 -- conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_1.conda - sha256: 95d4713e49ea92ae50cf42393683ede706b7875af5f7cb14c253438180afa732 - md5: 296b403617bafa89df4971567af79013 - depends: - - python >=3.9 - license: PSF-2.0 - license_family: PSF - size: 19351 - timestamp: 1733332029649 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.12-py312h178313f_0.conda - sha256: 223f271deceaf71d0cbee21162084104a6eca06e79c04ecb322706be3e406ea1 - md5: 9f96d8b6fb9bab11e46c12132283b5b1 +- conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda + sha256: 5ced96500d945fb286c9c838e54fa759aa04a7129c59800f0846b4335cee770d + md5: 62ee74e96c5ebb0af99386de58cf9553 depends: - __glibc >=2.17,<3.0.a0 - - aiohappyeyeballs >=2.3.0 - - aiosignal >=1.1.2 - - attrs >=17.3.0 - - frozenlist >=1.1.1 - - libgcc >=13 - - multidict >=4.5,<7.0 - - propcache >=0.2.0 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - - yarl >=1.17.0,<2.0 + - libgcc-ng >=12 arch: x86_64 platform: linux - license: MIT AND Apache-2.0 - license_family: Apache - size: 915782 - timestamp: 1738824701518 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.12-py312hcc812fe_0.conda - sha256: 8d865017a2f2b2ab9a23e0ab325730c79fb7dc38246f46f4b58da24d7a324805 - md5: e26817b48ca6e2035f69d88165a792f6 - depends: - - aiohappyeyeballs >=2.3.0 - - aiosignal >=1.1.2 - - attrs >=17.3.0 - - frozenlist >=1.1.1 - - libgcc >=13 - - multidict >=4.5,<7.0 - - propcache >=0.2.0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - - yarl >=1.17.0,<2.0 + license: bzip2-1.0.6 + license_family: BSD + size: 252783 + timestamp: 1720974456583 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h68df207_7.conda + sha256: 2258b0b33e1cb3a9852d47557984abb6e7ea58e3d7f92706ec1f8e879290c4cb + md5: 56398c28220513b9ea13d7b450acfb20 + depends: + - libgcc-ng >=12 arch: aarch64 platform: linux - license: MIT AND Apache-2.0 - license_family: Apache - size: 901058 - timestamp: 1738823269469 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.12-py312h998013c_0.conda - sha256: a4d04942bdeedbb7260b41eafb0302b6f8c3799f578c4389984c084a8fc34c16 - md5: 7675cee14b7e7d9ccf17ad37a4bdf53a + license: bzip2-1.0.6 + license_family: BSD + size: 189884 + timestamp: 1720974504976 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda + sha256: adfa71f158cbd872a36394c56c3568e6034aa55c623634b37a4836bd036e6b91 + md5: fc6948412dbbbe9a4c9ddbbcfe0a79ab depends: - __osx >=11.0 - - aiohappyeyeballs >=2.3.0 - - aiosignal >=1.1.2 - - attrs >=17.3.0 - - frozenlist >=1.1.1 - - multidict >=4.5,<7.0 - - propcache >=0.2.0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - - yarl >=1.17.0,<2.0 arch: arm64 platform: osx - license: MIT AND Apache-2.0 - license_family: Apache - size: 889104 - timestamp: 1738823362301 -- conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda - sha256: 7de8ced1918bbdadecf8e1c1c68237fe5709c097bd9e0d254f4cad118f4345d0 - md5: 1a3981115a398535dbe3f6d5faae3d36 + license: bzip2-1.0.6 + license_family: BSD + size: 122909 + timestamp: 1720974522888 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2025.1.31-hbcca054_0.conda + sha256: bf832198976d559ab44d6cdb315642655547e26d826e34da67cbee6624cda189 + md5: 19f3a56f68d2fd06c516076bff482c52 + arch: x86_64 + platform: linux + license: ISC + size: 158144 + timestamp: 1738298224464 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2025.1.31-hcefe29a_0.conda + sha256: 66c6408ee461593cfdb2d78d82e6ed74d04a04ccb51df3ef8a5f35148c9c6eec + md5: 462cb166cd2e26a396f856510a3aff67 + arch: aarch64 + platform: linux + license: ISC + size: 158290 + timestamp: 1738299057652 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2025.1.31-hf0a4a13_0.conda + sha256: 7e12816618173fe70f5c638b72adf4bfd4ddabf27794369bb17871c5bb75b9f9 + md5: 3569d6a9141adc64d2fe4797f3289e06 + arch: arm64 + platform: osx + license: ISC + size: 158425 + timestamp: 1738298167688 +- conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda + sha256: c920d23cd1fcf565031c679adb62d848af60d6fbb0edc2d50ba475cea4f0d8ab + md5: f22f4d4970e09d68a10b922cbb0408d3 depends: - - frozenlist >=1.1.0 + - __unix - python >=3.9 - license: Apache-2.0 - license_family: APACHE - size: 13229 - timestamp: 1734342253061 -- conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - sha256: e0ea1ba78fbb64f17062601edda82097fcf815012cf52bb704150a2668110d48 - md5: 2934f256a8acfe48f6ebb4fce6cde29c + license: BSD-3-Clause + license_family: BSD + size: 84705 + timestamp: 1734858922844 +- conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + sha256: ab29d57dc70786c1269633ba3dff20288b81664d3ff8d21af995742e2bb03287 + md5: 962b9857ee8e7018c22f2776ffa0b2d7 depends: - python >=3.9 - - typing-extensions >=4.0.0 - license: MIT - license_family: MIT - size: 18074 - timestamp: 1733247158254 -- conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.8.0-pyhd8ed1ab_0.conda - sha256: f1455d2953e3eb6d71bc49881c8558d8e01888469dfd21061dd48afb6183e836 - md5: 848d25bfbadf020ee4d4ba90e5668252 - depends: - - exceptiongroup >=1.0.2 - - idna >=2.8 + license: BSD-3-Clause + license_family: BSD + size: 27011 + timestamp: 1733218222191 +- conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + sha256: 598951ebdb23e25e4cec4bbff0ae369cec65ead80b50bc08b441d8e54de5cf03 + md5: f4b39bf00c69f56ac01e020ebfac066c + depends: - python >=3.9 - - sniffio >=1.1 - - typing_extensions >=4.5 - constrains: - - trio >=0.26.1 - - uvloop >=0.21 - license: MIT - license_family: MIT - size: 115305 - timestamp: 1736174485476 -- conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.1.0-pyh71513ae_0.conda - sha256: 1f267886522dfb9ae4e5ebbc3135b5eb13cff27bdbfe8d881a4d893459166ab4 - md5: 2cc3f588512f04f3a0c64b4e9bedc02d + - zipp >=0.5 + license: Apache-2.0 + license_family: APACHE + size: 29141 + timestamp: 1737420302391 +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + sha256: 19d8bd5bb2fde910ec59e081eeb59529491995ce0d653a5209366611023a0b3a + md5: 4ebae00eae9705b0c3d6d1018a81d047 depends: + - importlib-metadata >=4.8.3 + - jupyter_core >=4.12,!=5.0.* - python >=3.9 - license: MIT - license_family: MIT - size: 56370 - timestamp: 1737819298139 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.1-h205f482_0.conda - sha256: ebe5e33249f37f6bb481de99581ebdc92dbfcf1b6915609bcf3c9e78661d6352 - md5: 9c500858e88df50af3cc883d194de78a + - python-dateutil >=2.8.2 + - pyzmq >=23.0 + - tornado >=6.2 + - traitlets >=5.3 + license: BSD-3-Clause + license_family: BSD + size: 106342 + timestamp: 1733441040958 +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + sha256: 732b1e8536bc22a5a174baa79842d79db2f4956d90293dd82dc1b3f6099bcccd + md5: 0a2980dada0dd7fd0998f0342308b1b1 depends: - - __glibc >=2.17,<3.0.a0 - - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - aws-c-http >=0.9.2,<0.9.3.0a0 - - aws-c-io >=0.15.3,<0.15.4.0a0 - - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 - - libgcc >=13 + - __unix + - platformdirs >=2.5 + - python >=3.8 + - traitlets >=5.3 + license: BSD-3-Clause + license_family: BSD + size: 57671 + timestamp: 1727163547058 +- conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 + sha256: 150c05a6e538610ca7c43beb3a40d65c90537497a4f6a5f4d15ec0451b6f5ebb + md5: 30186d27e2c9fa62b45fb1476b7200e3 + depends: + - libgcc-ng >=10.3.0 arch: x86_64 platform: linux - license: Apache-2.0 - license_family: Apache - size: 108111 - timestamp: 1737509831651 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.1-hb7ec8d5_0.conda - sha256: e1e6c9267a4d9af30b1d28c11a9041b17b7840ff83ef08614145a2a4f444f5b4 - md5: 2630f030652970a5531e492f6b2a6dd3 - depends: - - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - aws-c-http >=0.9.2,<0.9.3.0a0 - - aws-c-io >=0.15.3,<0.15.4.0a0 - - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 - - libgcc >=13 + license: LGPL-2.1-or-later + size: 117831 + timestamp: 1646151697040 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/keyutils-1.6.1-h4e544f5_0.tar.bz2 + sha256: 6d4233d97a9b38acbb26e1268bcf8c10a8e79c2aed7e5a385ec3769967e3e65b + md5: 1f24853e59c68892452ef94ddd8afd4b + depends: + - libgcc-ng >=10.3.0 arch: aarch64 platform: linux - license: Apache-2.0 - license_family: Apache - size: 112658 - timestamp: 1737509863269 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.1-hfc2798a_0.conda - sha256: 5a60d196a585b25d1446fb973009e4e648e8d70beaa2793787243ede6da0fd9a - md5: 0abd67c0f7b60d50348fbb32fef50b65 - depends: - - __osx >=11.0 - - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - aws-c-http >=0.9.2,<0.9.3.0a0 - - aws-c-io >=0.15.3,<0.15.4.0a0 - - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: Apache - size: 92562 - timestamp: 1737509877079 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.1-h1a47875_3.conda - sha256: 095ac824ea9303eff67e04090ae531d9eb33d2bf8f82eaade39b839c421e16e8 - md5: 55a8561fdbbbd34f50f57d9be12ed084 + license: LGPL-2.1-or-later + size: 112327 + timestamp: 1646166857935 +- conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda + sha256: 99df692f7a8a5c27cd14b5fb1374ee55e756631b9c3d659ed3ee60830249b238 + md5: 3f43953b7d3fb3aaa1d0d0723d91e368 depends: - - __glibc >=2.17,<3.0.a0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - libgcc >=13 + - keyutils >=1.6.1,<2.0a0 + - libedit >=3.1.20191231,<3.2.0a0 + - libedit >=3.1.20191231,<4.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 - openssl >=3.3.1,<4.0a0 arch: x86_64 platform: linux - license: Apache-2.0 - license_family: Apache - size: 47601 - timestamp: 1733991564405 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.1-h740c5af_3.conda - sha256: c5c7961d48ca7320ed3560c036f7aa5244df4b85d9657f70aacc5faba3e1509a - md5: 57ed2c445d7ef01d121b9bcea0522913 + license: MIT + license_family: MIT + size: 1370023 + timestamp: 1719463201255 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/krb5-1.21.3-h50a48e9_0.conda + sha256: 0ec272afcf7ea7fbf007e07a3b4678384b7da4047348107b2ae02630a570a815 + md5: 29c10432a2ca1472b53f299ffb2ffa37 depends: - - aws-c-common >=0.10.6,<0.10.7.0a0 - - libgcc >=13 + - keyutils >=1.6.1,<2.0a0 + - libedit >=3.1.20191231,<3.2.0a0 + - libedit >=3.1.20191231,<4.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 - openssl >=3.3.1,<4.0a0 arch: aarch64 platform: linux - license: Apache-2.0 - license_family: Apache - size: 50036 - timestamp: 1733991581303 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.1-hc8a0bd2_3.conda - sha256: 1f44be36e1daa17b4b081debb8aee492d13571084f38b503ad13e869fef24fe4 - md5: 8b0ce61384e5a33d2b301a64f3d22ac5 + license: MIT + license_family: MIT + size: 1474620 + timestamp: 1719463205834 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda + sha256: 4442f957c3c77d69d9da3521268cad5d54c9033f1a73f99cde0a3658937b159b + md5: c6dc8a0fdec13a0565936655c33069a1 depends: - __osx >=11.0 - - aws-c-common >=0.10.6,<0.10.7.0a0 + - libcxx >=16 + - libedit >=3.1.20191231,<3.2.0a0 + - libedit >=3.1.20191231,<4.0a0 - openssl >=3.3.1,<4.0a0 arch: arm64 platform: osx - license: Apache-2.0 - license_family: Apache - size: 39925 - timestamp: 1733991649383 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.10.6-hb9d3cd8_0.conda - sha256: 496e92f2150fdc351eacf6e236015deedb3d0d3114f8e5954341cbf9f3dda257 - md5: d7d4680337a14001b0e043e96529409b + license: MIT + license_family: MIT + size: 1155530 + timestamp: 1719463474401 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_2.conda + sha256: 7c91cea91b13f4314d125d1bedb9d03a29ebbd5080ccdea70260363424646dbe + md5: 048b02e3962f066da18efe3a21b77672 depends: - __glibc >=2.17,<3.0.a0 - - libgcc >=13 + constrains: + - binutils_impl_linux-64 2.43 arch: x86_64 platform: linux - license: Apache-2.0 - license_family: Apache - size: 236574 - timestamp: 1733975453350 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-common-0.10.6-h86ecc28_0.conda - sha256: 57288ec5df35781bea8fc6a8c9099cad6695b747784fc1b8862a0f9e5b3bf5ab - md5: fef806a0f6de853670c746bbece01966 - depends: - - libgcc >=13 + license: GPL-3.0-only + license_family: GPL + size: 669211 + timestamp: 1729655358674 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_2.conda + sha256: 80ec7e8f006196808fac5bd4b3773a652847f97bbf08044cd87731424ac64f8b + md5: fcbde5ea19d55468953bf588770c0501 + constrains: + - binutils_impl_linux-aarch64 2.43 arch: aarch64 platform: linux - license: Apache-2.0 - license_family: Apache - size: 259031 - timestamp: 1733975520465 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.10.6-h5505292_0.conda - sha256: 3bde135c8e74987c0f79ecd4fa17ec9cff0d658b3090168727ca1af3815ae57a - md5: 145e5b4c9702ed279d7d68aaf096f77d - depends: - - __osx >=11.0 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: Apache - size: 221863 - timestamp: 1733975576886 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.3.0-h4e1184b_5.conda - sha256: 62ca84da83585e7814a40240a1e750b1563b2680b032a471464eccc001c3309b - md5: 3f4c1197462a6df2be6dc8241828fe93 + license: GPL-3.0-only + license_family: GPL + size: 698245 + timestamp: 1729655345825 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda + sha256: 143a586aa67d50622ef703de57b9d43f44945836d6568e0e7aa174bd8c45e0d4 + md5: 488f260ccda0afaf08acb286db439c2f depends: - __glibc >=2.17,<3.0.a0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - libgcc >=13 + - libstdcxx >=13 + constrains: + - libabseil-static =20240722.0=cxx17* + - abseil-cpp =20240722.0 arch: x86_64 platform: linux license: Apache-2.0 license_family: Apache - size: 19086 - timestamp: 1733991637424 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-compression-0.3.0-h0f0193d_5.conda - sha256: 3f05d19f68ef800f33d44ea2a4211003124076516c8469abc7d432236344df53 - md5: 3a1421d12435df5b4c412cc4c8fac64d + size: 1311599 + timestamp: 1736008414161 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h18dbdb1_4.conda + sha256: bb6c5fb3b8de5f90735c5252b57efb3c268ee222c755569dac18065f05147670 + md5: 633b9fe454ffea2aaf29e191d946a83b depends: - - aws-c-common >=0.10.6,<0.10.7.0a0 - libgcc >=13 + - libstdcxx >=13 + constrains: + - abseil-cpp =20240722.0 + - libabseil-static =20240722.0=cxx17* arch: aarch64 platform: linux license: Apache-2.0 license_family: Apache - size: 19740 - timestamp: 1733991625201 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-compression-0.3.0-hc8a0bd2_5.conda - sha256: 47b2813f652ce7e64ac442f771b2a5f7d4af4ad0d07ff51f6075ea80ed2e3f09 - md5: a8b6c17732d14ed49d0e9b59c43186bc + size: 1334844 + timestamp: 1736008472455 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_h07bc746_4.conda + sha256: 05fa5e5e908962b9c5aba95f962e2ca81d9599c4715aebe5e4ddb72b309d1770 + md5: c2d95bd7aa8d564a9bd7eca5e571a5b3 depends: - __osx >=11.0 - - aws-c-common >=0.10.6,<0.10.7.0a0 + - libcxx >=18 + constrains: + - libabseil-static =20240722.0=cxx17* + - abseil-cpp =20240722.0 arch: arm64 platform: osx license: Apache-2.0 license_family: Apache - size: 18068 - timestamp: 1733991869211 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.0-h7959bf6_11.conda - sha256: 10d7240c7db0c941fb1a59c4f8ea6689a434b03309ee7b766fa15a809c553c02 - md5: 9b3fb60fe57925a92f399bc3fc42eccf + size: 1178260 + timestamp: 1736008642885 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-28_h59b9bed_openblas.conda + build_number: 28 + sha256: 93fbcf2800b859b7ca5add3ab5d3aa11c6a6ff4b942a1cea4bf644f78488edb8 + md5: 73e2a99fdeb8531d50168987378fda8a depends: - - __glibc >=2.17,<3.0.a0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - aws-c-io >=0.15.3,<0.15.4.0a0 - - aws-checksums >=0.2.2,<0.2.3.0a0 - - libgcc >=13 - - libstdcxx >=13 - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 54003 - timestamp: 1734024480949 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-event-stream-0.5.0-hcbd8f92_11.conda - sha256: 79aa363c71c891a27496c0498f8d498b2ddc87b3ccb3b6c9da5b50b05936ebb8 - md5: e0772c59af4243a9b2565baa5d79e5b6 - depends: - - aws-c-common >=0.10.6,<0.10.7.0a0 - - aws-c-io >=0.15.3,<0.15.4.0a0 - - aws-checksums >=0.2.2,<0.2.3.0a0 - - libgcc >=13 - - libstdcxx >=13 - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 55207 - timestamp: 1734024546663 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.0-h54f970a_11.conda - sha256: f0667935f4e0d4c25e0e51da035640310b5ceeb8f723156734439bde8b848d7d - md5: ba41238f8e653998d7d2f42e3a8db054 - depends: - - __osx >=11.0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - aws-c-io >=0.15.3,<0.15.4.0a0 - - aws-checksums >=0.2.2,<0.2.3.0a0 - - libcxx >=18 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: Apache - size: 47078 - timestamp: 1734024749727 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.2-hefd7a92_4.conda - sha256: 4a330206bd51148f6c13ca0b7a4db40f29a46f090642ebacdeb88b8a4abd7f99 - md5: 5ce4df662d32d3123ea8da15571b6f51 - depends: - - __glibc >=2.17,<3.0.a0 - - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - aws-c-compression >=0.3.0,<0.3.1.0a0 - - aws-c-io >=0.15.3,<0.15.4.0a0 - - libgcc >=13 + - libopenblas >=0.3.28,<0.3.29.0a0 + - libopenblas >=0.3.28,<1.0a0 + constrains: + - libcblas =3.9.0=28*_openblas + - blas =2.128=openblas + - liblapack =3.9.0=28*_openblas + - liblapacke =3.9.0=28*_openblas arch: x86_64 platform: linux - license: Apache-2.0 - license_family: Apache - size: 197731 - timestamp: 1734008380764 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.2-h3df160d_4.conda - sha256: 3a1d2d332945306be9d49e569b95e4cc172d825f10e88715513a172f28ebb59e - md5: 28f00aa7fd9556c4c461328cf146c20b - depends: - - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - aws-c-compression >=0.3.0,<0.3.1.0a0 - - aws-c-io >=0.15.3,<0.15.4.0a0 - - libgcc >=13 + license: BSD-3-Clause + license_family: BSD + size: 16621 + timestamp: 1738114033763 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-28_h1a9f1db_openblas.conda + build_number: 28 + sha256: a50dc7ed1f49789aab4ffb560d9a46b5dc3f059a925282f699c1a96fa566a1a0 + md5: 88dfbb3875d62b431aa676b4a54734bf + depends: + - libopenblas >=0.3.28,<0.3.29.0a0 + - libopenblas >=0.3.28,<1.0a0 + constrains: + - liblapack =3.9.0=28*_openblas + - libcblas =3.9.0=28*_openblas + - blas =2.128=openblas + - liblapacke =3.9.0=28*_openblas arch: aarch64 platform: linux - license: Apache-2.0 - license_family: Apache - size: 190586 - timestamp: 1734008442362 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.2-h96aa502_4.conda - sha256: 22e4737c8a885995b7c1ae1d79c1f6e78d489e16ec079615980fdde067aeaf76 - md5: 495c93a4f08b17deb3c04894512330e6 + license: BSD-3-Clause + license_family: BSD + size: 16697 + timestamp: 1738114082682 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-28_h10e41b3_openblas.conda + build_number: 28 + sha256: 5bea855a1a7435ce2238535aa4b13db8af8ee301d99a42b083b63fa64c1ea144 + md5: 166166d84a0e9571dc50210baf993b46 depends: - - __osx >=11.0 - - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - aws-c-compression >=0.3.0,<0.3.1.0a0 - - aws-c-io >=0.15.3,<0.15.4.0a0 + - libopenblas >=0.3.28,<0.3.29.0a0 + - libopenblas >=0.3.28,<1.0a0 + constrains: + - liblapack =3.9.0=28*_openblas + - liblapacke =3.9.0=28*_openblas + - blas =2.128=openblas + - libcblas =3.9.0=28*_openblas arch: arm64 platform: osx - license: Apache-2.0 - license_family: Apache - size: 152983 - timestamp: 1734008451473 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-h173a860_6.conda - sha256: 335d822eead0a097ffd23677a288e1f18ea22f47a92d4f877419debb93af0e81 - md5: 9a063178f1af0a898526cc24ba7be486 + license: BSD-3-Clause + license_family: BSD + size: 16840 + timestamp: 1738114389937 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-28_he106b2a_openblas.conda + build_number: 28 + sha256: de293e117db53e5d78b579136509c35a5e4ad11529c05f9af83cf89be4d30de1 + md5: 4e20a1c00b4e8a984aac0f6cce59e3ac depends: - - __glibc >=2.17,<3.0.a0 - - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - libgcc >=13 - - s2n >=1.5.11,<1.5.12.0a0 + - libblas 3.9.0 28_h59b9bed_openblas + constrains: + - blas =2.128=openblas + - liblapack =3.9.0=28*_openblas + - liblapacke =3.9.0=28*_openblas arch: x86_64 platform: linux - license: Apache-2.0 - license_family: Apache - size: 157263 - timestamp: 1737207617838 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-hfd5ba81_6.conda - sha256: d8adfde05cee11057d99c3802e84b2300430a7c7c3c9936165d1d4b25ef59d91 - md5: 4e6771b45cb2b035c62d023dbf0dc000 - depends: - - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - libgcc >=13 - - s2n >=1.5.11,<1.5.12.0a0 + license: BSD-3-Clause + license_family: BSD + size: 16539 + timestamp: 1738114043618 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-28_hab92f65_openblas.conda + build_number: 28 + sha256: ed62f13a85726f568e17ad569b5cc01a49a6c7bd334802cf1c1b15e9d10e7e93 + md5: 8cff453f547365131be5647c7680ac6d + depends: + - libblas 3.9.0 28_h1a9f1db_openblas + constrains: + - liblapack =3.9.0=28*_openblas + - blas =2.128=openblas + - liblapacke =3.9.0=28*_openblas arch: aarch64 platform: linux - license: Apache-2.0 - license_family: Apache - size: 160933 - timestamp: 1737207637279 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-haba67d1_6.conda - sha256: 73722dd175af78b6cbfa033066f0933351f5382a1a737f6c6d9b8cfa84022161 - md5: d02e8f40ff69562903e70a1c6c48b009 + license: BSD-3-Clause + license_family: BSD + size: 16655 + timestamp: 1738114088527 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-28_hb3479ef_openblas.conda + build_number: 28 + sha256: f08adea59381babb3568e6d23e52aff874cbc25f299821647ab1127d1e1332ca + md5: 30942dea911ce333765003a8adec4e8a depends: - - __osx >=11.0 - - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.6,<0.10.7.0a0 + - libblas 3.9.0 28_h10e41b3_openblas + constrains: + - blas =2.128=openblas + - liblapacke =3.9.0=28*_openblas + - liblapack =3.9.0=28*_openblas arch: arm64 platform: osx - license: Apache-2.0 - license_family: Apache - size: 136048 - timestamp: 1737207681224 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h11f4f37_12.conda - sha256: 512d3969426152d9d5fd886e27b13706122dc3fa90eb08c37b0d51a33d7bb14a - md5: 96c3e0221fa2da97619ee82faa341a73 - depends: - - __glibc >=2.17,<3.0.a0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - aws-c-http >=0.9.2,<0.9.3.0a0 - - aws-c-io >=0.15.3,<0.15.4.0a0 - - libgcc >=13 - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 194672 - timestamp: 1734025626798 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h5f50e26_12.conda - sha256: ffeb9100cc8fd4093e1a6fdfd938bc4a396dd77480b7fb17aa42855a4d5e2c70 - md5: 031ca33115d4b1eeb43f435d6215778c - depends: - - aws-c-common >=0.10.6,<0.10.7.0a0 - - aws-c-http >=0.9.2,<0.9.3.0a0 - - aws-c-io >=0.15.3,<0.15.4.0a0 - - libgcc >=13 - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 169516 - timestamp: 1734025167885 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h24f418c_12.conda - sha256: 96575ea1dd2a9ea94763882e40a66dcbff9c41f702bf37c9514c4c719b3c11dd - md5: c072045a6206f88015d02fcba1705ea1 + license: BSD-3-Clause + license_family: BSD + size: 16788 + timestamp: 1738114399962 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda + sha256: 776092346da87a2a23502e14d91eb0c32699c4a1522b7331537bd1c3751dcff5 + md5: 5b3e1610ff8bd5443476b91d618f5b77 depends: - __osx >=11.0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - aws-c-http >=0.9.2,<0.9.3.0a0 - - aws-c-io >=0.15.3,<0.15.4.0a0 arch: arm64 platform: osx - license: Apache-2.0 + license: Apache-2.0 WITH LLVM-exception license_family: Apache - size: 134371 - timestamp: 1734025379525 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.9-he1b24dc_1.conda - sha256: 15fbdedc56850f8be5be7a5bcaea1af09c97590e631c024ae089737fc932fc42 - md5: caafc32928a5f7f3f7ef67d287689144 + size: 523505 + timestamp: 1736877862502 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda + sha256: d789471216e7aba3c184cd054ed61ce3f6dac6f87a50ec69291b9297f8c18724 + md5: c277e0a4d549b03ac1e9d6cbbe3d017b depends: + - ncurses - __glibc >=2.17,<3.0.a0 - - aws-c-auth >=0.8.1,<0.8.2.0a0 - - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - aws-c-http >=0.9.2,<0.9.3.0a0 - - aws-c-io >=0.15.3,<0.15.4.0a0 - - aws-checksums >=0.2.2,<0.2.3.0a0 - libgcc >=13 - - openssl >=3.4.0,<4.0a0 + - ncurses >=6.5,<7.0a0 arch: x86_64 platform: linux - license: Apache-2.0 - license_family: Apache - size: 115413 - timestamp: 1737558687616 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.9-h05b070f_1.conda - sha256: 9e7857fbc33eddc291fa09890ce468a92485d3e3e127bc00bbd1803e34121f84 - md5: e0a2869195f069db88b8932f5b00bee5 - depends: - - aws-c-auth >=0.8.1,<0.8.2.0a0 - - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - aws-c-http >=0.9.2,<0.9.3.0a0 - - aws-c-io >=0.15.3,<0.15.4.0a0 - - aws-checksums >=0.2.2,<0.2.3.0a0 + license: BSD-2-Clause + license_family: BSD + size: 134676 + timestamp: 1738479519902 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20250104-pl5321h976ea20_0.conda + sha256: c0b27546aa3a23d47919226b3a1635fccdb4f24b94e72e206a751b33f46fd8d6 + md5: fb640d776fc92b682a14e001980825b1 + depends: + - ncurses - libgcc >=13 - - openssl >=3.4.0,<4.0a0 + - ncurses >=6.5,<7.0a0 arch: aarch64 platform: linux - license: Apache-2.0 - license_family: Apache - size: 117875 - timestamp: 1737558720047 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.9-hf37e03c_1.conda - sha256: 92e8ca4eefcbbdf4189584c9410382884a06ed3030e5ecaac656dab8c95e6a80 - md5: de65f5e4ab5020103fe70a0eba9432a0 + license: BSD-2-Clause + license_family: BSD + size: 148125 + timestamp: 1738479808948 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda + sha256: 66aa216a403de0bb0c1340a88d1a06adaff66bae2cfd196731aa24db9859d631 + md5: 44083d2d2c2025afca315c7a172eab2b depends: + - ncurses - __osx >=11.0 - - aws-c-auth >=0.8.1,<0.8.2.0a0 - - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - aws-c-http >=0.9.2,<0.9.3.0a0 - - aws-c-io >=0.15.3,<0.15.4.0a0 - - aws-checksums >=0.2.2,<0.2.3.0a0 + - ncurses >=6.5,<7.0a0 arch: arm64 platform: osx - license: Apache-2.0 - license_family: Apache - size: 98731 - timestamp: 1737558731831 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.2-h4e1184b_0.conda - sha256: 0424e380c435ba03b5948d02e8c958866c4eee50ed29e57f99473a5f795a4cfc - md5: dcd498d493818b776a77fbc242fbf8e4 + license: BSD-2-Clause + license_family: BSD + size: 107691 + timestamp: 1738479560845 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda + sha256: 56541b98447b58e52d824bd59d6382d609e11de1f8adf20b23143e353d2b8d26 + md5: db833e03127376d461e1e13e76f09b6c depends: - __glibc >=2.17,<3.0.a0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - libgcc >=13 + constrains: + - expat 2.6.4.* arch: x86_64 platform: linux - license: Apache-2.0 - license_family: Apache - size: 55911 - timestamp: 1736535960724 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.2-h0f0193d_0.conda - sha256: fba38e469457764afcb94aa84d4d7788e6b5fa1554d34b05c904d2245fdd3c81 - md5: a78928881c652facde2a13ec6e776f3c + license: MIT + license_family: MIT + size: 73304 + timestamp: 1730967041968 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.6.4-h5ad3122_0.conda + sha256: f42e758009ba9db90d1fe7992bc3e60d0c52f71fb20923375d2c44ae69a5a2b3 + md5: f1b3fab36861b3ce945a13f0dfdfc688 depends: - - aws-c-common >=0.10.6,<0.10.7.0a0 - libgcc >=13 + constrains: + - expat 2.6.4.* arch: aarch64 platform: linux - license: Apache-2.0 - license_family: Apache - size: 58221 - timestamp: 1736536003041 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.2-hc8a0bd2_0.conda - sha256: ea4f0f1e99056293c69615f581a997d65ba7e229e296e402e0d8ef750648a5b5 - md5: e7b5498ac7b7ab921a907be38f3a8080 + license: MIT + license_family: MIT + size: 72345 + timestamp: 1730967203789 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.4-h286801f_0.conda + sha256: e42ab5ace927ee7c84e3f0f7d813671e1cf3529f5f06ee5899606630498c2745 + md5: 38d2656dd914feb0cab8c629370768bf depends: - __osx >=11.0 - - aws-c-common >=0.10.6,<0.10.7.0a0 + constrains: + - expat 2.6.4.* arch: arm64 platform: osx - license: Apache-2.0 - license_family: Apache - size: 49872 - timestamp: 1736536152332 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-h4e1184b_4.conda - sha256: 1ed9a332d06ad595694907fad2d6d801082916c27cd5076096fda4061e6d24a8 - md5: 74e8c3e4df4ceae34aa2959df4b28101 + license: MIT + license_family: MIT + size: 64693 + timestamp: 1730967175868 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.2-h7f98852_5.tar.bz2 + sha256: ab6e9856c21709b7b517e940ae7028ae0737546122f83c2aa5d692860c3b149e + md5: d645c6d2ac96843a2bfaccd2d62b3ac3 depends: - - __glibc >=2.17,<3.0.a0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - libgcc >=13 + - libgcc-ng >=9.4.0 arch: x86_64 platform: linux - license: Apache-2.0 - license_family: Apache - size: 72762 - timestamp: 1733994347547 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h0f0193d_4.conda - sha256: 9f1e3635a587bcf92b61d88c7af7d24cd89c147c6d0ae58afbde08e65bcf48da - md5: 3bd35b0adab3d743f09e0252cc441d6b + license: MIT + license_family: MIT + size: 58292 + timestamp: 1636488182923 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.4.2-h3557bc0_5.tar.bz2 + sha256: 7e9258a102480757fe3faeb225a3ca04dffd10fecd2a958c65cdb4cdf75f2c3c + md5: dddd85f4d52121fab0a8b099c5e06501 depends: - - aws-c-common >=0.10.6,<0.10.7.0a0 - - libgcc >=13 + - libgcc-ng >=9.4.0 arch: aarch64 platform: linux - license: Apache-2.0 - license_family: Apache - size: 72154 - timestamp: 1733994384415 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-hc8a0bd2_4.conda - sha256: 215086d95e8ff1d3fcb0197ada116cc9d7db1fdae7573f5e810d20fa9215b47c - md5: e70e88a357a3749b67679c0788c5b08a - depends: - - __osx >=11.0 - - aws-c-common >=0.10.6,<0.10.7.0a0 + license: MIT + license_family: MIT + size: 59450 + timestamp: 1636488255090 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 + sha256: 41b3d13efb775e340e4dba549ab5c029611ea6918703096b2eaa9c015c0750ca + md5: 086914b672be056eb70fd4285b6783b6 arch: arm64 platform: osx - license: Apache-2.0 - license_family: Apache - size: 70186 - timestamp: 1733994496998 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.9-he0e7f3f_2.conda - sha256: c1930569713bd5231d48d885a5e3707ac917b428e8f08189d14064a2bb128adc - md5: 8a4e6fc8a3b285536202b5456a74a940 + license: MIT + license_family: MIT + size: 39020 + timestamp: 1636488587153 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h77fa898_1.conda + sha256: 53eb8a79365e58849e7b1a068d31f4f9e718dc938d6f2c03e960345739a03569 + md5: 3cb76c3f10d3bc7f1105b2fc9db984df depends: - - __glibc >=2.17,<3.0.a0 - - aws-c-auth >=0.8.1,<0.8.2.0a0 - - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - - aws-c-http >=0.9.2,<0.9.3.0a0 - - aws-c-io >=0.15.3,<0.15.4.0a0 - - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - - aws-c-s3 >=0.7.9,<0.7.10.0a0 - - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 - - libgcc >=13 - - libstdcxx >=13 + - _libgcc_mutex 0.1 conda_forge + - _openmp_mutex >=4.5 + constrains: + - libgomp 14.2.0 h77fa898_1 + - libgcc-ng ==14.2.0=*_1 arch: x86_64 platform: linux - license: Apache-2.0 - license_family: Apache - size: 353222 - timestamp: 1737565463079 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.9-hab3ce66_2.conda - sha256: c3884fb10e0fd9be5c13256cabcda1afa9d2fcf8878c67214d02fc344509857d - md5: 875968ebffe992b68faf2caebbf32f02 - depends: - - aws-c-auth >=0.8.1,<0.8.2.0a0 - - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - - aws-c-http >=0.9.2,<0.9.3.0a0 - - aws-c-io >=0.15.3,<0.15.4.0a0 - - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - - aws-c-s3 >=0.7.9,<0.7.10.0a0 - - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 - - libgcc >=13 - - libstdcxx >=13 - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 283812 - timestamp: 1737565480034 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.9-ha81f72f_2.conda - sha256: ed5f1d19aad53787fdebe13db4709c97eae2092536cc55d3536eba320c4286e1 - md5: c9c034d3239bf25687ca4dd985007ecd + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 848745 + timestamp: 1729027721139 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-14.2.0-he277a41_1.conda + sha256: 5d56757ccad208c79214395b00d006d8d18929a4ba49c47bd9460789a7620943 + md5: 511b511c5445e324066c3377481bcab8 depends: - - __osx >=11.0 - - aws-c-auth >=0.8.1,<0.8.2.0a0 - - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - - aws-c-http >=0.9.2,<0.9.3.0a0 - - aws-c-io >=0.15.3,<0.15.4.0a0 - - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - - aws-c-s3 >=0.7.9,<0.7.10.0a0 - - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 - - libcxx >=18 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: Apache - size: 235976 - timestamp: 1737565563139 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.489-h4d475cb_0.conda - sha256: 08d6b7d2ed17bfcc7deb903c7751278ee434abdb27e3be0dceb561f30f030c75 - md5: b775e9f46dfa94b228a81d8e8c6d8b1d + - _openmp_mutex >=4.5 + constrains: + - libgcc-ng ==14.2.0=*_1 + - libgomp 14.2.0 he277a41_1 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 535243 + timestamp: 1729089435134 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_1.conda + sha256: 3a76969c80e9af8b6e7a55090088bc41da4cffcde9e2c71b17f44d37b7cb87f7 + md5: e39480b9ca41323497b05492a63bc35b depends: - - __glibc >=2.17,<3.0.a0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - - aws-checksums >=0.2.2,<0.2.3.0a0 - - aws-crt-cpp >=0.29.9,<0.29.10.0a0 - - libcurl >=8.11.1,<9.0a0 - - libgcc >=13 - - libstdcxx >=13 - - libzlib >=1.3.1,<2.0a0 - - openssl >=3.4.0,<4.0a0 + - libgcc 14.2.0 h77fa898_1 arch: x86_64 platform: linux - license: Apache-2.0 - license_family: Apache - size: 3144364 - timestamp: 1737576036746 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.489-h88461e4_0.conda - sha256: 88353e82b053763168cddbe2f88048defc1c97b3dad0966fbe8c4fa7aa592c7e - md5: e725d8fa77a6a5f38a78c5de914a5f40 - depends: - - aws-c-common >=0.10.6,<0.10.7.0a0 - - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - - aws-checksums >=0.2.2,<0.2.3.0a0 - - aws-crt-cpp >=0.29.9,<0.29.10.0a0 - - libcurl >=8.11.1,<9.0a0 - - libgcc >=13 - - libstdcxx >=13 - - libzlib >=1.3.1,<2.0a0 - - openssl >=3.4.0,<4.0a0 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 54142 + timestamp: 1729027726517 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-14.2.0-he9431aa_1.conda + sha256: 9b5cf168a6c7361cae869cb74b716766ee7c6d6b3f6172b32ba9bf91135efdc4 + md5: 0694c249c61469f2c0f7e2990782af21 + depends: + - libgcc 14.2.0 he277a41_1 arch: aarch64 platform: linux - license: Apache-2.0 - license_family: Apache - size: 3015109 - timestamp: 1737575993030 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.489-h0e5014b_0.conda - sha256: d82451530ddf363d8bb31a8a7391bb9699f745e940ace91d78c0e6170deef03c - md5: 156cfb45a1bb8cffc81e59047bb34f51 - depends: - - __osx >=11.0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - - aws-checksums >=0.2.2,<0.2.3.0a0 - - aws-crt-cpp >=0.29.9,<0.29.10.0a0 - - libcurl >=8.11.1,<9.0a0 - - libcxx >=18 - - libzlib >=1.3.1,<2.0a0 - - openssl >=3.4.0,<4.0a0 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: Apache - size: 2874126 - timestamp: 1737577023623 -- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda - sha256: fe07debdb089a3db17f40a7f20d283d75284bb4fc269ef727b8ba6fc93f7cb5a - md5: 0a8838771cc2e985cd295e01ae83baf1 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 54104 + timestamp: 1729089444587 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_1.conda + sha256: fc9e7f22a17faf74da904ebfc4d88699013d2992e55505e4aa0eb01770290977 + md5: f1fd30127802683586f768875127a987 depends: - - __glibc >=2.17,<3.0.a0 - - libcurl >=8.10.1,<9.0a0 - - libgcc >=13 - - libstdcxx >=13 - - openssl >=3.3.2,<4.0a0 + - libgfortran5 14.2.0 hd5240d6_1 + constrains: + - libgfortran-ng ==14.2.0=*_1 arch: x86_64 platform: linux - license: MIT - license_family: MIT - size: 345117 - timestamp: 1728053909574 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-core-cpp-1.14.0-h1887c18_0.conda - sha256: 8967b3ccee4d74e61f6ec82dd8efb9deb854ee7ba012dfe767b7a92e0ac77724 - md5: e0c3a906a41be769f0ae20ca3e31cfc0 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 53997 + timestamp: 1729027752995 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_1.conda + sha256: cb66e411fa32a5c6040f4e5e2a63c00897aae4c3133a9c004c2e929ccf19575b + md5: 0294b92d2f47a240bebb1e3336b495f1 depends: - - libcurl >=8.10.1,<9.0a0 - - libgcc >=13 - - libstdcxx >=13 - - openssl >=3.3.2,<4.0a0 + - libgfortran5 14.2.0 hb6113d0_1 + constrains: + - libgfortran-ng ==14.2.0=*_1 arch: aarch64 platform: linux - license: MIT - license_family: MIT - size: 338650 - timestamp: 1728055589907 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.14.0-hd50102c_0.conda - sha256: f5b91329ed59ffc0be8747784c6e4cc7e56250c54032883a83bc11808ef6a87e - md5: f093a11dcf3cdcca010b20a818fcc6dc + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 54105 + timestamp: 1729089471124 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda + sha256: 44e541b4821c96b28b27fef5630883a60ce4fee91fd9c79f25a199f8f73f337b + md5: 4a55d9e169114b2b90d3ec4604cd7bbf depends: - - __osx >=11.0 - - libcurl >=8.10.1,<9.0a0 - - libcxx >=17 - - openssl >=3.3.2,<4.0a0 + - libgfortran5 13.2.0 hf226fd6_3 arch: arm64 platform: osx - license: MIT - license_family: MIT - size: 294299 - timestamp: 1728054014060 -- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.10.0-h113e628_0.conda - sha256: 286b31616c191486626cb49e9ceb5920d29394b9e913c23adb7eb637629ba4de - md5: 73f73f60854f325a55f1d31459f2ab73 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 110233 + timestamp: 1707330749033 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hd5240d6_1.conda + sha256: d149a37ca73611e425041f33b9d8dbed6e52ec506fe8cc1fc0ee054bddeb6d5d + md5: 9822b874ea29af082e5d36098d25427d depends: - - __glibc >=2.17,<3.0.a0 - - azure-core-cpp >=1.14.0,<1.14.1.0a0 - - libgcc >=13 - - libstdcxx >=13 - - openssl >=3.3.2,<4.0a0 + - libgcc >=14.2.0 + constrains: + - libgfortran 14.2.0 arch: x86_64 platform: linux - license: MIT - license_family: MIT - size: 232351 - timestamp: 1728486729511 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-identity-cpp-1.10.0-h47b0b28_0.conda - sha256: 1c72423b9beba167d2f01b80dc204da77240a8266f1edb3d89510c852b300d69 - md5: 94e73a7877743a85c57091d8afab2348 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 1462645 + timestamp: 1729027735353 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_1.conda + sha256: a87ff46d19916403cbf68cf1d785bf56b4d1ab7b2552468d2ea775d70782493f + md5: fc068e11b10e18f184e027782baa12b6 depends: - - azure-core-cpp >=1.14.0,<1.14.1.0a0 - - libgcc >=13 - - libstdcxx >=13 - - openssl >=3.3.2,<4.0a0 + - libgcc >=14.2.0 + constrains: + - libgfortran 14.2.0 arch: aarch64 platform: linux - license: MIT - license_family: MIT - size: 217132 - timestamp: 1728488096615 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.10.0-hc602bab_0.conda - sha256: bde446b916fff5150606f8ed3e6058ffc55a3aa72381e46f1ab346590b1ae40a - md5: d7b71593a937459f2d4b67e1a4727dc2 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 1102158 + timestamp: 1729089452640 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda + sha256: bafc679eedb468a86aa4636061c55966186399ee0a04b605920d208d97ac579a + md5: 66ac81d54e95c534ae488726c1f698ea depends: - - __osx >=11.0 - - azure-core-cpp >=1.14.0,<1.14.1.0a0 - - libcxx >=17 - - openssl >=3.3.2,<4.0a0 + - llvm-openmp >=8.0.0 + constrains: + - libgfortran 5.0.0 13_2_0_*_3 arch: arm64 platform: osx - license: MIT - license_family: MIT - size: 166907 - timestamp: 1728486882502 -- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.13.0-h3cf044e_1.conda - sha256: 2606260e5379eed255bcdc6adc39b93fb31477337bcd911c121fc43cd29bf394 - md5: 7eb66060455c7a47d9dcdbfa9f46579b + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 997381 + timestamp: 1707330687590 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h77fa898_1.conda + sha256: 1911c29975ec99b6b906904040c855772ccb265a1c79d5d75c8ceec4ed89cd63 + md5: cc3573974587f12dda90d96e3e55a702 depends: - - __glibc >=2.17,<3.0.a0 - - azure-core-cpp >=1.14.0,<1.14.1.0a0 - - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 - - libgcc >=13 - - libstdcxx >=13 + - _libgcc_mutex 0.1 conda_forge arch: x86_64 platform: linux - license: MIT - license_family: MIT - size: 549342 - timestamp: 1728578123088 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-blobs-cpp-12.13.0-h185ecfd_1.conda - sha256: 280ec70009a92626054f58e45b168fce393e71a9710587488bd8401628cda481 - md5: 221e1e5ecb2643e113f32b3229d5ba33 - depends: - - azure-core-cpp >=1.14.0,<1.14.1.0a0 - - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 - - libgcc >=13 - - libstdcxx >=13 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 460992 + timestamp: 1729027639220 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_1.conda + sha256: 5aa53874a5e57a00f2e0c2e2910684eb674429cd5fcb803619b226a73e89aedf + md5: 376f0e73abbda6d23c0cb749adc195ef arch: aarch64 platform: linux - license: MIT - license_family: MIT - size: 502934 - timestamp: 1728580241002 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-blobs-cpp-12.13.0-h7585a09_1.conda - sha256: 08d52d130addc0fb55d5ba10d9fa483e39be25d69bac7f4c676c2c3069207590 - md5: 704238ef05d46144dae2e6b5853df8bc - depends: - - __osx >=11.0 - - azure-core-cpp >=1.14.0,<1.14.1.0a0 - - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 - - libcxx >=17 - arch: arm64 - platform: osx - license: MIT - license_family: MIT - size: 438636 - timestamp: 1728578216193 -- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-common-cpp-12.8.0-h736e048_1.conda - sha256: 273475f002b091b66ce7366da04bf164c3732c03f8692ab2ee2d23335b6a82ba - md5: 13de36be8de3ae3f05ba127631599213 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 463521 + timestamp: 1729089357313 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-28_h7ac8fdf_openblas.conda + build_number: 28 + sha256: 9530e6840690b78360946390a1d29624734a6b624f02c26631fb451592cbb8ef + md5: 069f40bfbf1dc55c83ddb07fc6a6ef8d depends: - - __glibc >=2.17,<3.0.a0 - - azure-core-cpp >=1.14.0,<1.14.1.0a0 - - libgcc >=13 - - libstdcxx >=13 - - libxml2 >=2.12.7,<3.0a0 - - openssl >=3.3.2,<4.0a0 + - libblas 3.9.0 28_h59b9bed_openblas + constrains: + - libcblas =3.9.0=28*_openblas + - blas =2.128=openblas + - liblapacke =3.9.0=28*_openblas arch: x86_64 platform: linux - license: MIT - license_family: MIT - size: 149312 - timestamp: 1728563338704 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-common-cpp-12.8.0-h1b94036_1.conda - sha256: 146e76aac169e3dbdce5d3b142b7930ac643795c765e7655d1989905ec7d3231 - md5: 793b1080ab2d958980f137a8643cd6e8 + license: BSD-3-Clause + license_family: BSD + size: 16553 + timestamp: 1738114053556 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-28_h411afd4_openblas.conda + build_number: 28 + sha256: 1290ce1071a586e22bdd7d8f4c48000cc0005f0a67660be150d1ea5c6092129f + md5: bc4c5ee31476521e202356b56bba6077 depends: - - azure-core-cpp >=1.14.0,<1.14.1.0a0 - - libgcc >=13 - - libstdcxx >=13 - - libxml2 >=2.12.7,<3.0a0 - - openssl >=3.3.2,<4.0a0 + - libblas 3.9.0 28_h1a9f1db_openblas + constrains: + - liblapacke =3.9.0=28*_openblas + - libcblas =3.9.0=28*_openblas + - blas =2.128=openblas arch: aarch64 platform: linux - license: MIT - license_family: MIT - size: 140832 - timestamp: 1728565334900 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-common-cpp-12.8.0-h9ca1f76_1.conda - sha256: 77ab04e8fe5636a2de9c718f72a43645f7502cd208868c8a91ffba385547d585 - md5: 7a187cd7b1445afc80253bb186a607cc + license: BSD-3-Clause + license_family: BSD + size: 16637 + timestamp: 1738114094310 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-28_hc9a63f6_openblas.conda + build_number: 28 + sha256: 79c75a02bff20f8b001e6aecfee8d22a51552c3986e7037fca68e5ed071cc213 + md5: 45f26652530b558c21083ceb7adaf273 depends: - - __osx >=11.0 - - azure-core-cpp >=1.14.0,<1.14.1.0a0 - - libcxx >=17 - - libxml2 >=2.12.7,<3.0a0 - - openssl >=3.3.2,<4.0a0 + - libblas 3.9.0 28_h10e41b3_openblas + constrains: + - blas =2.128=openblas + - liblapacke =3.9.0=28*_openblas + - libcblas =3.9.0=28*_openblas arch: arm64 platform: osx - license: MIT - license_family: MIT - size: 121278 - timestamp: 1728563418777 -- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-files-datalake-cpp-12.12.0-ha633028_1.conda - sha256: 5371e4f3f920933bb89b926a85a67f24388227419abd6e99f6086481e5e8d5f2 - md5: 7c1980f89dd41b097549782121a73490 + license: BSD-3-Clause + license_family: BSD + size: 16793 + timestamp: 1738114407021 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda + sha256: cad52e10319ca4585bc37f0bc7cce99ec7c15dc9168e42ccb96b741b0a27db3f + md5: 42d5b6a0f30d3c10cd88cb8584fda1cb depends: - __glibc >=2.17,<3.0.a0 - - azure-core-cpp >=1.14.0,<1.14.1.0a0 - - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 - - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 - libgcc >=13 - - libstdcxx >=13 arch: x86_64 platform: linux - license: MIT - license_family: MIT - size: 287366 - timestamp: 1728729530295 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-files-datalake-cpp-12.12.0-h37d6d07_1.conda - sha256: 4079c617a75682e49bae63670d58fd6078ccfbbe55ca1f994acab3a74ab6bbcc - md5: b724f3b4b7f4e9b36c58cbe3ed8610a2 - depends: - - azure-core-cpp >=1.14.0,<1.14.1.0a0 - - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 - - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 + license: 0BSD + size: 111357 + timestamp: 1738525339684 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.4-h86ecc28_0.conda + sha256: 96413664f0fade54a4931940d18749cfc8e6308349dbb0cb83adb2394ca1f730 + md5: b88244e0a115cc34f7fbca9b11248e76 + depends: - libgcc >=13 - - libstdcxx >=13 arch: aarch64 platform: linux - license: MIT - license_family: MIT - size: 260547 - timestamp: 1728730924071 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-files-datalake-cpp-12.12.0-hcdd55da_1.conda - sha256: f48523f8aa0b5b80f45a92f0556b388dd96f44ac2dc2f44a01d08c1822eec97d - md5: c49fbc5233fcbaa86391162ff1adef38 + license: 0BSD + size: 124197 + timestamp: 1738528201520 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.4-h39f12f2_0.conda + sha256: 560c59d3834cc652a84fb45531bd335ad06e271b34ebc216e380a89798fe8e2c + md5: e3fd1f8320a100f2b210e690a57cd615 depends: - __osx >=11.0 - - azure-core-cpp >=1.14.0,<1.14.1.0a0 - - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 - - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 - - libcxx >=17 arch: arm64 platform: osx - license: MIT - license_family: MIT - size: 196032 - timestamp: 1728729672889 -- conda: https://conda.anaconda.org/conda-forge/noarch/backoff-2.2.1-pyhd8ed1ab_1.conda - sha256: f334115c6b0c6c2cd0d28595365f205ec7eaa60bcc5ff91a75d7245f728be820 - md5: a38b801f2bcc12af80c2e02a9e4ce7d9 - depends: - - python >=3.9 - license: MIT - license_family: MIT - size: 18816 - timestamp: 1733771192649 -- conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py312h2ec8cdc_2.conda - sha256: f2a59ccd20b4816dea9a2a5cb917eb69728271dbf1aeab4e1b7e609330a50b6f - md5: b0b867af6fc74b2a0aa206da29c0f3cf - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libstdcxx >=13 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - constrains: - - libbrotlicommon 1.1.0 hb9d3cd8_2 - arch: x86_64 - platform: linux - license: MIT - license_family: MIT - size: 349867 - timestamp: 1725267732089 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/brotli-python-1.1.0-py312h6f74592_2.conda - sha256: 9736bf660a0e4260c68f81d2635b51067f817813e6490ac9e8abd9a835dcbf6d - md5: e1e9727063057168d95f27a032acd0a4 - depends: - - libgcc >=13 - - libstdcxx >=13 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - constrains: - - libbrotlicommon 1.1.0 h86ecc28_2 - arch: aarch64 - platform: linux - license: MIT - license_family: MIT - size: 356878 - timestamp: 1725267878508 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py312hde4cb15_2.conda - sha256: 254b411fa78ccc226f42daf606772972466f93e9bc6895eabb4cfda22f5178af - md5: a83c2ef76ccb11bc2349f4f17696b15d - depends: - - __osx >=11.0 - - libcxx >=17 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - constrains: - - libbrotlicommon 1.1.0 hd74edd7_2 - arch: arm64 - platform: osx - license: MIT - license_family: MIT - size: 339360 - timestamp: 1725268143995 -- conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda - sha256: 5ced96500d945fb286c9c838e54fa759aa04a7129c59800f0846b4335cee770d - md5: 62ee74e96c5ebb0af99386de58cf9553 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc-ng >=12 - arch: x86_64 - platform: linux - license: bzip2-1.0.6 - license_family: BSD - size: 252783 - timestamp: 1720974456583 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h68df207_7.conda - sha256: 2258b0b33e1cb3a9852d47557984abb6e7ea58e3d7f92706ec1f8e879290c4cb - md5: 56398c28220513b9ea13d7b450acfb20 - depends: - - libgcc-ng >=12 - arch: aarch64 - platform: linux - license: bzip2-1.0.6 - license_family: BSD - size: 189884 - timestamp: 1720974504976 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda - sha256: adfa71f158cbd872a36394c56c3568e6034aa55c623634b37a4836bd036e6b91 - md5: fc6948412dbbbe9a4c9ddbbcfe0a79ab - depends: - - __osx >=11.0 - arch: arm64 - platform: osx - license: bzip2-1.0.6 - license_family: BSD - size: 122909 - timestamp: 1720974522888 -- conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.4-hb9d3cd8_0.conda - sha256: d4f28d87b6339b94f74762c0076e29c8ef8ddfff51a564a92da2843573c18320 - md5: e2775acf57efd5af15b8e3d1d74d72d3 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - arch: x86_64 - platform: linux - license: MIT - license_family: MIT - size: 206085 - timestamp: 1734208189009 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/c-ares-1.34.4-h86ecc28_0.conda - sha256: 1187a41d4bb2afe02cb18690682edc98d1e9f5e0ccda638d8704a75ea1875bbe - md5: 356da36f35d36dcba16e43f1589d4e39 - depends: - - libgcc >=13 - arch: aarch64 - platform: linux - license: MIT - license_family: MIT - size: 215979 - timestamp: 1734208193181 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.4-h5505292_0.conda - sha256: 09c0c8476e50b2955f474a4a1c17c4c047dd52993b5366b6ea8e968e583b921f - md5: c1c999a38a4303b29d75c636eaa13cf9 - depends: - - __osx >=11.0 - arch: arm64 - platform: osx - license: MIT - license_family: MIT - size: 179496 - timestamp: 1734208291879 -- conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2025.1.31-hbcca054_0.conda - sha256: bf832198976d559ab44d6cdb315642655547e26d826e34da67cbee6624cda189 - md5: 19f3a56f68d2fd06c516076bff482c52 - arch: x86_64 - platform: linux - license: ISC - size: 158144 - timestamp: 1738298224464 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2025.1.31-hcefe29a_0.conda - sha256: 66c6408ee461593cfdb2d78d82e6ed74d04a04ccb51df3ef8a5f35148c9c6eec - md5: 462cb166cd2e26a396f856510a3aff67 - arch: aarch64 - platform: linux - license: ISC - size: 158290 - timestamp: 1738299057652 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2025.1.31-hf0a4a13_0.conda - sha256: 7e12816618173fe70f5c638b72adf4bfd4ddabf27794369bb17871c5bb75b9f9 - md5: 3569d6a9141adc64d2fe4797f3289e06 - arch: arm64 - platform: osx - license: ISC - size: 158425 - timestamp: 1738298167688 -- conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.12.14-pyhd8ed1ab_0.conda - sha256: 048c16a9cbcb1fbad02083414d3bc7c1d0eea4b39aee6aa6bf8d1d5089ca8bad - md5: 6feb87357ecd66733be3279f16a8c400 - depends: - - python >=3.9 - license: ISC - size: 161642 - timestamp: 1734380604767 -- conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py312h06ac9bb_0.conda - sha256: cba6ea83c4b0b4f5b5dc59cb19830519b28f95d7ebef7c9c5cf1c14843621457 - md5: a861504bbea4161a9170b85d4d2be840 - depends: - - __glibc >=2.17,<3.0.a0 - - libffi >=3.4,<4.0a0 - - libgcc >=13 - - pycparser - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - arch: x86_64 - platform: linux - license: MIT - license_family: MIT - size: 294403 - timestamp: 1725560714366 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cffi-1.17.1-py312hac81daf_0.conda - sha256: 1162e3ca039e7ca7c0e78f0a020ed1bde968096841b663e3f393c966eb82f0f0 - md5: 1a256e5581b1099e9295cb84d53db3ea - depends: - - libffi >=3.4,<4.0a0 - - libgcc >=13 - - pycparser - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - arch: aarch64 - platform: linux - license: MIT - license_family: MIT - size: 312892 - timestamp: 1725561779888 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.1-py312h0fad829_0.conda - sha256: 8d91a0d01358b5c3f20297c6c536c5d24ccd3e0c2ddd37f9d0593d0f0070226f - md5: 19a5456f72f505881ba493979777b24e - depends: - - __osx >=11.0 - - libffi >=3.4,<4.0a0 - - pycparser - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - arch: arm64 - platform: osx - license: MIT - license_family: MIT - size: 281206 - timestamp: 1725560813378 -- conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda - sha256: 4e0ee91b97e5de3e74567bdacea27f0139709fceca4db8adffbe24deffccb09b - md5: e83a31202d1c0a000fce3e9cf3825875 - depends: - - python >=3.9 - license: MIT - license_family: MIT - size: 47438 - timestamp: 1735929811779 -- conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda - sha256: c920d23cd1fcf565031c679adb62d848af60d6fbb0edc2d50ba475cea4f0d8ab - md5: f22f4d4970e09d68a10b922cbb0408d3 - depends: - - __unix - - python >=3.9 - license: BSD-3-Clause - license_family: BSD - size: 84705 - timestamp: 1734858922844 -- conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - sha256: ab29d57dc70786c1269633ba3dff20288b81664d3ff8d21af995742e2bb03287 - md5: 962b9857ee8e7018c22f2776ffa0b2d7 - depends: - - python >=3.9 - license: BSD-3-Clause - license_family: BSD - size: 27011 - timestamp: 1733218222191 -- conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda - sha256: 7e09bd083a609138b780fcc4535924cb96814d2c908a36d4c64a2ba9ee3efe7f - md5: 3e087f072ce03c43a9b60522f5d0ca2f - depends: - - aiohttp - - dill >=0.3.0,<0.3.8 - - fsspec >=2021.11.1 - - huggingface_hub >=0.14.0,<1.0.0 - - importlib-metadata - - multiprocess - - numpy >=1.17 - - packaging - - pandas - - pyarrow >=8.0.0 - - python >=3.8.0 - - python-xxhash - - pyyaml >=5.1 - - requests >=2.19.0 - - tqdm >=4.62.1 - license: Apache-2.0 - license_family: Apache - size: 347303 - timestamp: 1691593908658 -- conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.18-pyhd8ed1ab_0.conda - sha256: d614bcff10696f1efc714df07651b50bf3808401fcc03814309ecec242cc8870 - md5: 0cef44b1754ae4d6924ac0eef6b9fdbe - depends: - - python >=3.9 - - wrapt <2,>=1.10 - license: MIT - license_family: MIT - size: 14382 - timestamp: 1737987072859 -- conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda - sha256: 4ff20c6be028be2825235631c45d9e4a75bca1de65f8840c02dfb28ea0137c45 - md5: 5e4f3466526c52bc9af2d2353a1460bd - depends: - - python >=3.7 - license: BSD-3-Clause - license_family: BSD - size: 87553 - timestamp: 1690101185422 -- conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda - sha256: 3ec40ccf63f2450c5e6c7dd579e42fc2e97caf0d8cd4ba24aa434e6fc264eda0 - md5: 5fbd60d61d21b4bd2f9d7a48fe100418 - depends: - - python >=3.9,<4.0.0 - - sniffio - constrains: - - aioquic >=1.0.0 - - wmi >=1.5.1 - - httpx >=0.26.0 - - trio >=0.23 - - cryptography >=43 - - httpcore >=1.0.0 - - idna >=3.7 - - h2 >=4.1.0 - license: ISC - license_family: OTHER - size: 172172 - timestamp: 1733256829961 -- conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda - sha256: b91a19eb78edfc2dbb36de9a67f74ee2416f1b5273dd7327abe53f2dbf864736 - md5: da16dd3b0b71339060cd44cb7110ddf9 - depends: - - dnspython >=2.0.0 - - idna >=2.0.0 - - python >=3.9 - license: Unlicense - size: 44401 - timestamp: 1733300827551 -- conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_1.conda - sha256: e0d0fdf587aa0ed0ff08b2bce3ab355f46687b87b0775bfba01cc80a859ee6a2 - md5: 0794f8807ff2c6f020422cacb1bd7bfa - depends: - - email-validator >=2.2.0,<2.2.1.0a0 - license: Unlicense - size: 6552 - timestamp: 1733300828176 -- conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda - sha256: cbde2c64ec317118fc06b223c5fd87c8a680255e7348dd60e7b292d2e103e701 - md5: a16662747cdeb9abbac74d0057cc976e - depends: - - python >=3.9 - license: MIT and PSF-2.0 - size: 20486 - timestamp: 1733208916977 -- conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.8-pyh29332c3_0.conda - sha256: 5e1e3d5cf306d9b3b5fe0d45a9e8440e8770ba7e4a5fac1ac847ca693b0dc064 - md5: 753382711adab47269f0bfe994906bc4 - depends: - - python >=3.9 - - starlette >=0.40.0,<0.46.0 - - typing_extensions >=4.8.0 - - pydantic >=1.7.4,!=1.8,!=1.8.1,!=2.0.0,!=2.0.1,!=2.1.0,<3.0.0 - - email_validator >=2.0.0 - - fastapi-cli >=0.0.5 - - httpx >=0.23.0 - - jinja2 >=3.1.5 - - python-multipart >=0.0.18 - - uvicorn-standard >=0.12.0 - - python - license: MIT - license_family: MIT - size: 77940 - timestamp: 1738326226051 -- conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.7-pyhd8ed1ab_0.conda - sha256: 300683731013b7221922339cd40430bb3c2ddeeb658fd7e37f5099ffe64e4db0 - md5: d960e0ea9e1c561aa928f6c4439f04c7 - depends: - - python >=3.9 - - rich-toolkit >=0.11.1 - - typer >=0.12.3 - - uvicorn-standard >=0.15.0 - license: MIT - license_family: MIT - size: 15546 - timestamp: 1734302408607 -- conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.17.0-pyhd8ed1ab_0.conda - sha256: 006d7e5a0c17a6973596dd86bfc80d74ce541144d2aee2d22d46fd41df560a63 - md5: 7f402b4a1007ee355bc50ce4d24d4a57 - depends: - - python >=3.9 - license: Unlicense - size: 17544 - timestamp: 1737517924333 -- conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.12.1-h267a509_2.conda - sha256: b2e3c449ec9d907dd4656cb0dc93e140f447175b125a3824b31368b06c666bb6 - md5: 9ae35c3d96db2c94ce0cef86efdfa2cb - depends: - - libgcc-ng >=12 - - libpng >=1.6.39,<1.7.0a0 - - libzlib >=1.2.13,<2.0.0a0 - arch: x86_64 - platform: linux - license: GPL-2.0-only OR FTL - size: 634972 - timestamp: 1694615932610 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/freetype-2.12.1-hf0a5ef3_2.conda - sha256: 7af93030f4407f076dce181062360efac2cd54dce863b5d7765287a6f5382537 - md5: a5ab74c5bd158c3d5532b66d8d83d907 - depends: - - libgcc-ng >=12 - - libpng >=1.6.39,<1.7.0a0 - - libzlib >=1.2.13,<2.0.0a0 - arch: aarch64 - platform: linux - license: GPL-2.0-only OR FTL - size: 642092 - timestamp: 1694617858496 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/freetype-2.12.1-hadb7bae_2.conda - sha256: 791673127e037a2dc0eebe122dc4f904cb3f6e635bb888f42cbe1a76b48748d9 - md5: e6085e516a3e304ce41a8ee08b9b89ad - depends: - - libpng >=1.6.39,<1.7.0a0 - - libzlib >=1.2.13,<2.0.0a0 - arch: arm64 - platform: osx - license: GPL-2.0-only OR FTL - size: 596430 - timestamp: 1694616332835 -- conda: https://conda.anaconda.org/conda-forge/linux-64/frozenlist-1.5.0-py312h178313f_1.conda - sha256: 501e20626798b6d7f130f4db0fb02c0385d8f4c11ca525925602a4208afb343f - md5: fb986e1c089021979dc79606af78ef8f - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 60939 - timestamp: 1737645356438 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/frozenlist-1.5.0-py312hcc812fe_1.conda - sha256: 84895c5e207e0cb2044f3607fb36b82eb8cb45f0a009d03dc04c777ed975757d - md5: 9090bf5c43e8011fb2e9a82a1db20cc3 - depends: - - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 60472 - timestamp: 1737645511278 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/frozenlist-1.5.0-py312h998013c_1.conda - sha256: d503ac8c050abdbd129253973f23be34944978d510de78ef5a3e6aa1e3d9552d - md5: 5eb3715c7e3fa9b533361375bfefe6ee - depends: - - __osx >=11.0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: APACHE - size: 57256 - timestamp: 1737645503377 -- conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2025.2.0-pyhd8ed1ab_0.conda - sha256: 7433b8469074985b651693778ec6f03d2a23fad9919a515e3b8545996b5e721a - md5: d9ea16b71920b03beafc17fcca16df90 - depends: - - python >=3.9 - license: BSD-3-Clause - license_family: BSD - size: 138186 - timestamp: 1738501352608 -- conda: https://conda.anaconda.org/conda-forge/linux-64/gflags-2.2.2-h5888daf_1005.conda - sha256: 6c33bf0c4d8f418546ba9c250db4e4221040936aef8956353bc764d4877bc39a - md5: d411fc29e338efb48c5fd4576d71d881 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libstdcxx >=13 - arch: x86_64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 119654 - timestamp: 1726600001928 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gflags-2.2.2-h5ad3122_1005.conda - sha256: 28fe6b40b20454106d5e4ef6947cf298c13cc72a46347bbc49b563cd3a463bfa - md5: 4ff634d515abbf664774b5e1168a9744 - depends: - - libgcc >=13 - - libstdcxx >=13 - arch: aarch64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 106638 - timestamp: 1726599967617 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/gflags-2.2.2-hf9b8971_1005.conda - sha256: fd56ed8a1dab72ab90d8a8929b6f916a6d9220ca297ff077f8f04c5ed3408e20 - md5: 57a511a5905caa37540eb914dfcbf1fb - depends: - - __osx >=11.0 - - libcxx >=17 - arch: arm64 - platform: osx - license: BSD-3-Clause - license_family: BSD - size: 82090 - timestamp: 1726600145480 -- conda: https://conda.anaconda.org/conda-forge/linux-64/glog-0.7.1-hbabe93e_0.conda - sha256: dc824dc1d0aa358e28da2ecbbb9f03d932d976c8dca11214aa1dcdfcbd054ba2 - md5: ff862eebdfeb2fd048ae9dc92510baca - depends: - - gflags >=2.2.2,<2.3.0a0 - - libgcc-ng >=12 - - libstdcxx-ng >=12 - arch: x86_64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 143452 - timestamp: 1718284177264 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/glog-0.7.1-h468a4a4_0.conda - sha256: 920795d4f775a9f47e91c2223e64847f0b212b3fedc56c137c5889e32efe8ba0 - md5: 08940a32c6ced3703d1412dd37df4f62 - depends: - - gflags >=2.2.2,<2.3.0a0 - - libgcc-ng >=12 - - libstdcxx-ng >=12 - arch: aarch64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 145811 - timestamp: 1718284208668 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/glog-0.7.1-heb240a5_0.conda - sha256: 9fc77de416953aa959039db72bc41bfa4600ae3ff84acad04a7d0c1ab9552602 - md5: fef68d0a95aa5b84b5c1a4f6f3bf40e1 - depends: - - __osx >=11.0 - - gflags >=2.2.2,<2.3.0a0 - - libcxx >=16 - arch: arm64 - platform: osx - license: BSD-3-Clause - license_family: BSD - size: 112215 - timestamp: 1718284365403 -- conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda - sha256: d8d19575a827f2c62500949b9536efdd6b5406c9f546a73b6a87ac90b03a5875 - md5: 4861e30ff0cd566ea6fb4593e3b7c22a - depends: - - protobuf >=3.20.2,<6.0.0.dev0,!=3.20.0,!=3.20.1,!=4.21.1,!=4.21.2,!=4.21.3,!=4.21.4,!=4.21.5 - - python >=3.9 - license: Apache-2.0 - license_family: APACHE - size: 116522 - timestamp: 1731459019854 -- conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda - sha256: 622516185a7c740d5c7f27016d0c15b45782c1501e5611deec63fd70344ce7c8 - md5: 7ee49e89531c0dcbba9466f6d115d585 - depends: - - python >=3.9 - - typing_extensions - license: MIT - license_family: MIT - size: 51846 - timestamp: 1733327599467 -- conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda - sha256: 0aa1cdc67a9fe75ea95b5644b734a756200d6ec9d0dff66530aec3d1c1e9df75 - md5: b4754fb1bdcb70c8fd54f918301582c6 - depends: - - hpack >=4.1,<5 - - hyperframe >=6.1,<7 - - python >=3.9 - license: MIT - license_family: MIT - size: 53888 - timestamp: 1738578623567 -- conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda - sha256: 6ad78a180576c706aabeb5b4c8ceb97c0cb25f1e112d76495bff23e3779948ba - md5: 0a802cb9888dd14eeefc611f05c40b6e - depends: - - python >=3.9 - license: MIT - license_family: MIT - size: 30731 - timestamp: 1737618390337 -- conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - sha256: c84d012a245171f3ed666a8bf9319580c269b7843ffa79f26468842da3abd5df - md5: 2ca8e6dbc86525c8b95e3c0ffa26442e - depends: - - python >=3.8 - - h11 >=0.13,<0.15 - - h2 >=3,<5 - - sniffio 1.* - - anyio >=3.0,<5.0 - - certifi - license: BSD-3-Clause - license_family: BSD - size: 48959 - timestamp: 1731707562362 -- conda: https://conda.anaconda.org/conda-forge/linux-64/httptools-0.6.4-py312h66e93f0_0.conda - sha256: 621e7e050b888e5239d33e37ea72d6419f8367e5babcad38b755586f20264796 - md5: 8b1160b32557290b64d5be68db3d996d - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - arch: x86_64 - platform: linux - license: MIT - license_family: MIT - size: 101872 - timestamp: 1732707756745 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/httptools-0.6.4-py312hb2c0f52_0.conda - sha256: 0bd1f30224af142711d11033a7469ae402a1147143f399f7341bbc1d8178c722 - md5: 5e70a6de59352f9a52e9caa7f3447390 - depends: - - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - arch: aarch64 - platform: linux - license: MIT - license_family: MIT - size: 101255 - timestamp: 1732707891645 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/httptools-0.6.4-py312hea69d52_0.conda - sha256: 5e93cda79e32e8c0039e05ea1939e688da336187dab025f699b42ef529e848be - md5: e1747a8e8d2aca5499aaea9993bf31ff - depends: - - __osx >=11.0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - arch: arm64 - platform: osx - license: MIT - license_family: MIT - size: 85623 - timestamp: 1732707871414 -- conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - sha256: cd0f1de3697b252df95f98383e9edb1d00386bfdd03fdf607fa42fe5fcb09950 - md5: d6989ead454181f4f9bc987d3dc4e285 - depends: - - anyio - - certifi - - httpcore 1.* - - idna - - python >=3.9 - license: BSD-3-Clause - license_family: BSD - size: 63082 - timestamp: 1733663449209 -- conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.28.0-pyhd8ed1ab_0.conda - sha256: 3c48ffeb8a425eeba5dfa81a4da4b738a12d2104da0c3b443185029718dd6e48 - md5: 317f31a6fe151756ef10e7ed97a15f8a - depends: - - filelock - - fsspec >=2023.5.0 - - packaging >=20.9 - - python >=3.9 - - pyyaml >=5.1 - - requests - - tqdm >=4.42.1 - - typing-extensions >=3.7.4.3 - - typing_extensions >=3.7.4.3 - license: Apache-2.0 - license_family: APACHE - size: 284361 - timestamp: 1738349452337 -- conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - sha256: 77af6f5fe8b62ca07d09ac60127a30d9069fdc3c68d6b256754d0ffb1f7779f8 - md5: 8e6923fc12f1fe8f8c4e5c9f343256ac - depends: - - python >=3.9 - license: MIT - license_family: MIT - size: 17397 - timestamp: 1737618427549 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda - sha256: 813298f2e54ef087dbfc9cc2e56e08ded41de65cff34c639cc8ba4e27e4540c9 - md5: 268203e8b983fddb6412b36f2024e75c - depends: - - libgcc-ng >=12 - - libstdcxx-ng >=12 - arch: aarch64 - platform: linux - license: MIT - license_family: MIT - size: 12282786 - timestamp: 1720853454991 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda - sha256: 9ba12c93406f3df5ab0a43db8a4b4ef67a5871dfd401010fbe29b218b2cbe620 - md5: 5eb22c1d7b3fc4abb50d92d621583137 - depends: - - __osx >=11.0 - arch: arm64 - platform: osx - license: MIT - license_family: MIT - size: 11857802 - timestamp: 1720853997952 -- conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - sha256: d7a472c9fd479e2e8dcb83fb8d433fce971ea369d704ece380e876f9c3494e87 - md5: 39a4f67be3286c86d696df570b1201b7 - depends: - - python >=3.9 - license: BSD-3-Clause - license_family: BSD - size: 49765 - timestamp: 1733211921194 -- conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_1.conda - sha256: 13766b88fc5b23581530d3a0287c0c58ad82f60401afefab283bf158d2be55a9 - md5: 315607a3030ad5d5227e76e0733798ff - depends: - - python >=3.9 - - zipp >=0.5 - license: Apache-2.0 - license_family: APACHE - size: 28623 - timestamp: 1733223207185 -- conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.5-pyhd8ed1ab_0.conda - sha256: 98977694b9ecaa3218662f843425f39501f81973c450f995eec68f1803ed71c3 - md5: 2752a6ed44105bfb18c9bef1177d9dcd - depends: - - markupsafe >=2.0 - - python >=3.9 - license: BSD-3-Clause - license_family: BSD - size: 112561 - timestamp: 1734824044952 -- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - sha256: 19d8bd5bb2fde910ec59e081eeb59529491995ce0d653a5209366611023a0b3a - md5: 4ebae00eae9705b0c3d6d1018a81d047 - depends: - - importlib-metadata >=4.8.3 - - jupyter_core >=4.12,!=5.0.* - - python >=3.9 - - python-dateutil >=2.8.2 - - pyzmq >=23.0 - - tornado >=6.2 - - traitlets >=5.3 - license: BSD-3-Clause - license_family: BSD - size: 106342 - timestamp: 1733441040958 -- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - sha256: 732b1e8536bc22a5a174baa79842d79db2f4956d90293dd82dc1b3f6099bcccd - md5: 0a2980dada0dd7fd0998f0342308b1b1 - depends: - - __unix - - platformdirs >=2.5 - - python >=3.8 - - traitlets >=5.3 - license: BSD-3-Clause - license_family: BSD - size: 57671 - timestamp: 1727163547058 -- conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 - sha256: 150c05a6e538610ca7c43beb3a40d65c90537497a4f6a5f4d15ec0451b6f5ebb - md5: 30186d27e2c9fa62b45fb1476b7200e3 - depends: - - libgcc-ng >=10.3.0 - arch: x86_64 - platform: linux - license: LGPL-2.1-or-later - size: 117831 - timestamp: 1646151697040 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/keyutils-1.6.1-h4e544f5_0.tar.bz2 - sha256: 6d4233d97a9b38acbb26e1268bcf8c10a8e79c2aed7e5a385ec3769967e3e65b - md5: 1f24853e59c68892452ef94ddd8afd4b - depends: - - libgcc-ng >=10.3.0 - arch: aarch64 - platform: linux - license: LGPL-2.1-or-later - size: 112327 - timestamp: 1646166857935 -- conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda - sha256: 99df692f7a8a5c27cd14b5fb1374ee55e756631b9c3d659ed3ee60830249b238 - md5: 3f43953b7d3fb3aaa1d0d0723d91e368 - depends: - - keyutils >=1.6.1,<2.0a0 - - libedit >=3.1.20191231,<3.2.0a0 - - libedit >=3.1.20191231,<4.0a0 - - libgcc-ng >=12 - - libstdcxx-ng >=12 - - openssl >=3.3.1,<4.0a0 - arch: x86_64 - platform: linux - license: MIT - license_family: MIT - size: 1370023 - timestamp: 1719463201255 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/krb5-1.21.3-h50a48e9_0.conda - sha256: 0ec272afcf7ea7fbf007e07a3b4678384b7da4047348107b2ae02630a570a815 - md5: 29c10432a2ca1472b53f299ffb2ffa37 - depends: - - keyutils >=1.6.1,<2.0a0 - - libedit >=3.1.20191231,<3.2.0a0 - - libedit >=3.1.20191231,<4.0a0 - - libgcc-ng >=12 - - libstdcxx-ng >=12 - - openssl >=3.3.1,<4.0a0 - arch: aarch64 - platform: linux - license: MIT - license_family: MIT - size: 1474620 - timestamp: 1719463205834 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda - sha256: 4442f957c3c77d69d9da3521268cad5d54c9033f1a73f99cde0a3658937b159b - md5: c6dc8a0fdec13a0565936655c33069a1 - depends: - - __osx >=11.0 - - libcxx >=16 - - libedit >=3.1.20191231,<3.2.0a0 - - libedit >=3.1.20191231,<4.0a0 - - openssl >=3.3.1,<4.0a0 - arch: arm64 - platform: osx - license: MIT - license_family: MIT - size: 1155530 - timestamp: 1719463474401 -- conda: https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.16-hb7c19ff_0.conda - sha256: 5c878d104b461b7ef922abe6320711c0d01772f4cd55de18b674f88547870041 - md5: 51bb7010fc86f70eee639b4bb7a894f5 - depends: - - libgcc-ng >=12 - - libjpeg-turbo >=3.0.0,<4.0a0 - - libtiff >=4.6.0,<4.8.0a0 - arch: x86_64 - platform: linux - license: MIT - license_family: MIT - size: 245247 - timestamp: 1701647787198 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lcms2-2.16-h922389a_0.conda - sha256: be4847b1014d3cbbc524a53bdbf66182f86125775020563e11d914c8468dd97d - md5: ffdd8267a04c515e7ce69c727b051414 - depends: - - libgcc-ng >=12 - - libjpeg-turbo >=3.0.0,<4.0a0 - - libtiff >=4.6.0,<4.8.0a0 - arch: aarch64 - platform: linux - license: MIT - license_family: MIT - size: 296219 - timestamp: 1701647961116 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.16-ha0e7c42_0.conda - sha256: 151e0c84feb7e0747fabcc85006b8973b22f5abbc3af76a9add0b0ef0320ebe4 - md5: 66f6c134e76fe13cce8a9ea5814b5dd5 - depends: - - libjpeg-turbo >=3.0.0,<4.0a0 - - libtiff >=4.6.0,<4.8.0a0 - arch: arm64 - platform: osx - license: MIT - license_family: MIT - size: 211959 - timestamp: 1701647962657 -- conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_2.conda - sha256: 7c91cea91b13f4314d125d1bedb9d03a29ebbd5080ccdea70260363424646dbe - md5: 048b02e3962f066da18efe3a21b77672 - depends: - - __glibc >=2.17,<3.0.a0 - constrains: - - binutils_impl_linux-64 2.43 - arch: x86_64 - platform: linux - license: GPL-3.0-only - license_family: GPL - size: 669211 - timestamp: 1729655358674 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_2.conda - sha256: 80ec7e8f006196808fac5bd4b3773a652847f97bbf08044cd87731424ac64f8b - md5: fcbde5ea19d55468953bf588770c0501 - constrains: - - binutils_impl_linux-aarch64 2.43 - arch: aarch64 - platform: linux - license: GPL-3.0-only - license_family: GPL - size: 698245 - timestamp: 1729655345825 -- conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 - sha256: cb55f36dcd898203927133280ae1dc643368af041a48bcf7c026acb7c47b0c12 - md5: 76bbff344f0134279f225174e9064c8f - depends: - - libgcc-ng >=12 - - libstdcxx-ng >=12 - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 281798 - timestamp: 1657977462600 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.0.0-h4de3ea5_0.tar.bz2 - sha256: 2d09ef9b7796d83364957e420b41c32d94e628c3f0520b61c332518a7b5cd586 - md5: 1a0ffc65e03ce81559dbcb0695ad1476 - depends: - - libgcc-ng >=12 - - libstdcxx-ng >=12 - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 262096 - timestamp: 1657978241894 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 - sha256: 6f068bb53dfb6147d3147d981bb851bb5477e769407ad4e6a68edf482fdcb958 - md5: de462d5aacda3b30721b512c5da4e742 - depends: - - libcxx >=13.0.1 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: Apache - size: 215721 - timestamp: 1657977558796 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda - sha256: 143a586aa67d50622ef703de57b9d43f44945836d6568e0e7aa174bd8c45e0d4 - md5: 488f260ccda0afaf08acb286db439c2f - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libstdcxx >=13 - constrains: - - libabseil-static =20240722.0=cxx17* - - abseil-cpp =20240722.0 - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 1311599 - timestamp: 1736008414161 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h18dbdb1_4.conda - sha256: bb6c5fb3b8de5f90735c5252b57efb3c268ee222c755569dac18065f05147670 - md5: 633b9fe454ffea2aaf29e191d946a83b - depends: - - libgcc >=13 - - libstdcxx >=13 - constrains: - - abseil-cpp =20240722.0 - - libabseil-static =20240722.0=cxx17* - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 1334844 - timestamp: 1736008472455 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_h07bc746_4.conda - sha256: 05fa5e5e908962b9c5aba95f962e2ca81d9599c4715aebe5e4ddb72b309d1770 - md5: c2d95bd7aa8d564a9bd7eca5e571a5b3 - depends: - - __osx >=11.0 - - libcxx >=18 - constrains: - - libabseil-static =20240722.0=cxx17* - - abseil-cpp =20240722.0 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: Apache - size: 1178260 - timestamp: 1736008642885 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-19.0.0-h00a82cf_8_cpu.conda - build_number: 8 - sha256: dcac39be95b9afe42bc9b7bfcfa258e31e413a4cb79c49f6707edf2838e8d64c - md5: 51e31b59290c09b58d290f66b908999b - depends: - - __glibc >=2.17,<3.0.a0 - - aws-crt-cpp >=0.29.9,<0.29.10.0a0 - - aws-sdk-cpp >=1.11.489,<1.11.490.0a0 - - azure-core-cpp >=1.14.0,<1.14.1.0a0 - - azure-identity-cpp >=1.10.0,<1.10.1.0a0 - - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 - - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 - - bzip2 >=1.0.8,<2.0a0 - - glog >=0.7.1,<0.8.0a0 - - libabseil * cxx17* - - libabseil >=20240722.0,<20240723.0a0 - - libbrotlidec >=1.1.0,<1.2.0a0 - - libbrotlienc >=1.1.0,<1.2.0a0 - - libgcc >=13 - - libgoogle-cloud >=2.34.0,<2.35.0a0 - - libgoogle-cloud-storage >=2.34.0,<2.35.0a0 - - libopentelemetry-cpp >=1.18.0,<1.19.0a0 - - libprotobuf >=5.28.3,<5.28.4.0a0 - - libre2-11 >=2024.7.2 - - libstdcxx >=13 - - libutf8proc >=2.10.0,<2.11.0a0 - - libzlib >=1.3.1,<2.0a0 - - lz4-c >=1.10.0,<1.11.0a0 - - orc >=2.0.3,<2.0.4.0a0 - - re2 - - snappy >=1.2.1,<1.3.0a0 - - zstd >=1.5.6,<1.6.0a0 - constrains: - - parquet-cpp <0.0a0 - - arrow-cpp <0.0a0 - - apache-arrow-proc =*=cpu - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 8969999 - timestamp: 1737824740139 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-19.0.0-h03ebaaf_8_cpu.conda - build_number: 8 - sha256: ca5db2ba71de0c4fb54ee12e3b841e3e90b988ae7a5935fae3cce90111b5cb6d - md5: 1ac6f73a63d715590a7ad0113a578762 - depends: - - aws-crt-cpp >=0.29.9,<0.29.10.0a0 - - aws-sdk-cpp >=1.11.489,<1.11.490.0a0 - - azure-core-cpp >=1.14.0,<1.14.1.0a0 - - azure-identity-cpp >=1.10.0,<1.10.1.0a0 - - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 - - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 - - bzip2 >=1.0.8,<2.0a0 - - glog >=0.7.1,<0.8.0a0 - - libabseil * cxx17* - - libabseil >=20240722.0,<20240723.0a0 - - libbrotlidec >=1.1.0,<1.2.0a0 - - libbrotlienc >=1.1.0,<1.2.0a0 - - libgcc >=13 - - libgoogle-cloud >=2.34.0,<2.35.0a0 - - libgoogle-cloud-storage >=2.34.0,<2.35.0a0 - - libopentelemetry-cpp >=1.18.0,<1.19.0a0 - - libprotobuf >=5.28.3,<5.28.4.0a0 - - libre2-11 >=2024.7.2 - - libstdcxx >=13 - - libutf8proc >=2.10.0,<2.11.0a0 - - libzlib >=1.3.1,<2.0a0 - - lz4-c >=1.10.0,<1.11.0a0 - - orc >=2.0.3,<2.0.4.0a0 - - re2 - - snappy >=1.2.1,<1.3.0a0 - - zstd >=1.5.6,<1.6.0a0 - constrains: - - arrow-cpp <0.0a0 - - apache-arrow-proc =*=cpu - - parquet-cpp <0.0a0 - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 8213318 - timestamp: 1737808895185 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-19.0.0-h819e3af_8_cpu.conda - build_number: 8 - sha256: 825afabd1c998dfddce9600584c492296a15219d441c6e3029e6c6228200d695 - md5: fbe0ce0ef6d386ab832ee5cca2ab3048 - depends: - - __osx >=11.0 - - aws-crt-cpp >=0.29.9,<0.29.10.0a0 - - aws-sdk-cpp >=1.11.489,<1.11.490.0a0 - - azure-core-cpp >=1.14.0,<1.14.1.0a0 - - azure-identity-cpp >=1.10.0,<1.10.1.0a0 - - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 - - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 - - bzip2 >=1.0.8,<2.0a0 - - glog >=0.7.1,<0.8.0a0 - - libabseil * cxx17* - - libabseil >=20240722.0,<20240723.0a0 - - libbrotlidec >=1.1.0,<1.2.0a0 - - libbrotlienc >=1.1.0,<1.2.0a0 - - libcxx >=18 - - libgoogle-cloud >=2.34.0,<2.35.0a0 - - libgoogle-cloud-storage >=2.34.0,<2.35.0a0 - - libopentelemetry-cpp >=1.18.0,<1.19.0a0 - - libprotobuf >=5.28.3,<5.28.4.0a0 - - libre2-11 >=2024.7.2 - - libutf8proc >=2.10.0,<2.11.0a0 - - libzlib >=1.3.1,<2.0a0 - - lz4-c >=1.10.0,<1.11.0a0 - - orc >=2.0.3,<2.0.4.0a0 - - re2 - - snappy >=1.2.1,<1.3.0a0 - - zstd >=1.5.6,<1.6.0a0 - constrains: - - arrow-cpp <0.0a0 - - apache-arrow-proc =*=cpu - - parquet-cpp <0.0a0 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: APACHE - size: 5573619 - timestamp: 1737806044972 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-19.0.0-hcb10f89_8_cpu.conda - build_number: 8 - sha256: bf8f64403685eb3ab6ebc5a25cc3a70431a1f822469bf96b0ee80c169deec0ac - md5: dafba09929a58e10bb8231ff7966e623 - depends: - - __glibc >=2.17,<3.0.a0 - - libarrow 19.0.0 h00a82cf_8_cpu - - libgcc >=13 - - libstdcxx >=13 - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 637555 - timestamp: 1737824783456 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-19.0.0-h3b568fd_8_cpu.conda - build_number: 8 - sha256: 154fe9bee1a1e3c96497fcbf3c01191965d5c4e9718dcbf8502035d7ff633499 - md5: e015edb6317c81893f9ce4865bbd55f4 - depends: - - libarrow 19.0.0 h03ebaaf_8_cpu - - libgcc >=13 - - libstdcxx >=13 - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 602892 - timestamp: 1737808980001 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-19.0.0-hf07054f_8_cpu.conda - build_number: 8 - sha256: 66ce35077dae435cd34644d53159af14afd62452eeec8f63cd55adb11e7f2780 - md5: 68cd272eccf7b4fcb0a3bab95e89e71e - depends: - - __osx >=11.0 - - libarrow 19.0.0 h819e3af_8_cpu - - libcxx >=18 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: APACHE - size: 500365 - timestamp: 1737806169385 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-19.0.0-hcb10f89_8_cpu.conda - build_number: 8 - sha256: dc4a0f13428c9bd9781e25b67f5f52a92b8c4beafa2435fe5127e9fac7969218 - md5: 66e19108e4597b9a35d0886607c2d8a8 - depends: - - __glibc >=2.17,<3.0.a0 - - libarrow 19.0.0 h00a82cf_8_cpu - - libarrow-acero 19.0.0 hcb10f89_8_cpu - - libgcc >=13 - - libparquet 19.0.0 h081d1f1_8_cpu - - libstdcxx >=13 - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 604335 - timestamp: 1737824891062 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-19.0.0-h3b568fd_8_cpu.conda - build_number: 8 - sha256: f038f979b3357124a548dd83880f94284355a90e4736caaabd23c750cf06eaa9 - md5: 03f35d7f35dae0e05f5f4f747d7eb6e7 - depends: - - libarrow 19.0.0 h03ebaaf_8_cpu - - libarrow-acero 19.0.0 h3b568fd_8_cpu - - libgcc >=13 - - libparquet 19.0.0 hfc78867_8_cpu - - libstdcxx >=13 - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 579626 - timestamp: 1737809072479 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-19.0.0-hf07054f_8_cpu.conda - build_number: 8 - sha256: 6934ce0503472f002695d45ae12a8f2948e10e7a0b7430330a4d0d83f3e5ca27 - md5: 1a941d1ddc16b532790781a4becdc881 - depends: - - __osx >=11.0 - - libarrow 19.0.0 h819e3af_8_cpu - - libarrow-acero 19.0.0 hf07054f_8_cpu - - libcxx >=18 - - libparquet 19.0.0 h636d7b7_8_cpu - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: APACHE - size: 501001 - timestamp: 1737807214184 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-19.0.0-h08228c5_8_cpu.conda - build_number: 8 - sha256: e370ee738d3963120f715343a27cf041c62a3ee8bb19e25da9115ec4bae5f2de - md5: e5dd1926e5a4b23de8ba4eacc8eb9b2d - depends: - - __glibc >=2.17,<3.0.a0 - - libabseil * cxx17* - - libabseil >=20240722.0,<20240723.0a0 - - libarrow 19.0.0 h00a82cf_8_cpu - - libarrow-acero 19.0.0 hcb10f89_8_cpu - - libarrow-dataset 19.0.0 hcb10f89_8_cpu - - libgcc >=13 - - libprotobuf >=5.28.3,<5.28.4.0a0 - - libstdcxx >=13 - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 521475 - timestamp: 1737824942852 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-19.0.0-h1e9d426_8_cpu.conda - build_number: 8 - sha256: 92e1fea8557a931c273ea3bd3bf73a4f4f0c566844dcedf78b9a16e5cf6cab56 - md5: ef08fcb5c165cdc743336bd8f4cbed69 - depends: - - libabseil * cxx17* - - libabseil >=20240722.0,<20240723.0a0 - - libarrow 19.0.0 h03ebaaf_8_cpu - - libarrow-acero 19.0.0 h3b568fd_8_cpu - - libarrow-dataset 19.0.0 h3b568fd_8_cpu - - libgcc >=13 - - libprotobuf >=5.28.3,<5.28.4.0a0 - - libstdcxx >=13 - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 516126 - timestamp: 1737809118915 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-19.0.0-h4239455_8_cpu.conda - build_number: 8 - sha256: 445d2ca20b07e57270f3b07b62c09794369413e5ff3716d9c73d0ad360969583 - md5: a39953d9b03b0463f4ccc187a8bcfcca - depends: - - __osx >=11.0 - - libabseil * cxx17* - - libabseil >=20240722.0,<20240723.0a0 - - libarrow 19.0.0 h819e3af_8_cpu - - libarrow-acero 19.0.0 hf07054f_8_cpu - - libarrow-dataset 19.0.0 hf07054f_8_cpu - - libcxx >=18 - - libprotobuf >=5.28.3,<5.28.4.0a0 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: APACHE - size: 449672 - timestamp: 1737807386331 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-28_h59b9bed_openblas.conda - build_number: 28 - sha256: 93fbcf2800b859b7ca5add3ab5d3aa11c6a6ff4b942a1cea4bf644f78488edb8 - md5: 73e2a99fdeb8531d50168987378fda8a - depends: - - libopenblas >=0.3.28,<0.3.29.0a0 - - libopenblas >=0.3.28,<1.0a0 - constrains: - - libcblas =3.9.0=28*_openblas - - blas =2.128=openblas - - liblapack =3.9.0=28*_openblas - - liblapacke =3.9.0=28*_openblas - arch: x86_64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 16621 - timestamp: 1738114033763 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-28_h1a9f1db_openblas.conda - build_number: 28 - sha256: a50dc7ed1f49789aab4ffb560d9a46b5dc3f059a925282f699c1a96fa566a1a0 - md5: 88dfbb3875d62b431aa676b4a54734bf - depends: - - libopenblas >=0.3.28,<0.3.29.0a0 - - libopenblas >=0.3.28,<1.0a0 - constrains: - - liblapack =3.9.0=28*_openblas - - libcblas =3.9.0=28*_openblas - - blas =2.128=openblas - - liblapacke =3.9.0=28*_openblas - arch: aarch64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 16697 - timestamp: 1738114082682 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-28_h10e41b3_openblas.conda - build_number: 28 - sha256: 5bea855a1a7435ce2238535aa4b13db8af8ee301d99a42b083b63fa64c1ea144 - md5: 166166d84a0e9571dc50210baf993b46 - depends: - - libopenblas >=0.3.28,<0.3.29.0a0 - - libopenblas >=0.3.28,<1.0a0 - constrains: - - liblapack =3.9.0=28*_openblas - - liblapacke =3.9.0=28*_openblas - - blas =2.128=openblas - - libcblas =3.9.0=28*_openblas - arch: arm64 - platform: osx - license: BSD-3-Clause - license_family: BSD - size: 16840 - timestamp: 1738114389937 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hb9d3cd8_2.conda - sha256: d9db2de60ea917298e658143354a530e9ca5f9c63471c65cf47ab39fd2f429e3 - md5: 41b599ed2b02abcfdd84302bff174b23 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - arch: x86_64 - platform: linux - license: MIT - license_family: MIT - size: 68851 - timestamp: 1725267660471 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlicommon-1.1.0-h86ecc28_2.conda - sha256: 64112af913974b309d67fd342e065fd184347043a6387933b3db796778a28019 - md5: 3ee026955c688f551a9999840cff4c67 - depends: - - libgcc >=13 - arch: aarch64 - platform: linux - license: MIT - license_family: MIT - size: 68982 - timestamp: 1725267774142 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.1.0-hd74edd7_2.conda - sha256: 839dacb741bdbb25e58f42088a2001b649f4f12195aeb700b5ddfca3267749e5 - md5: d0bf1dff146b799b319ea0434b93f779 - depends: - - __osx >=11.0 - arch: arm64 - platform: osx - license: MIT - license_family: MIT - size: 68426 - timestamp: 1725267943211 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hb9d3cd8_2.conda - sha256: 2892d512cad096cb03f1b66361deeab58b64e15ba525d6592bb6d609e7045edf - md5: 9566f0bd264fbd463002e759b8a82401 - depends: - - __glibc >=2.17,<3.0.a0 - - libbrotlicommon 1.1.0 hb9d3cd8_2 - - libgcc >=13 - arch: x86_64 - platform: linux - license: MIT - license_family: MIT - size: 32696 - timestamp: 1725267669305 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlidec-1.1.0-h86ecc28_2.conda - sha256: 94c808d9ca3eb6ef30976a9843e27f027cf3a1e84e8c6835cbb696b7bdb35c4c - md5: e64d0f3b59c7c4047446b97a8624a72d - depends: - - libbrotlicommon 1.1.0 h86ecc28_2 - - libgcc >=13 - arch: aarch64 - platform: linux - license: MIT - license_family: MIT - size: 31708 - timestamp: 1725267783442 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.1.0-hd74edd7_2.conda - sha256: 6c6862eb274f21a7c0b60e5345467a12e6dda8b9af4438c66d496a2c1a538264 - md5: 55e66e68ce55523a6811633dd1ac74e2 - depends: - - __osx >=11.0 - - libbrotlicommon 1.1.0 hd74edd7_2 - arch: arm64 - platform: osx - license: MIT - license_family: MIT - size: 28378 - timestamp: 1725267980316 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.1.0-hb9d3cd8_2.conda - sha256: 779f58174e99de3600e939fa46eddb453ec5d3c60bb46cdaa8b4c127224dbf29 - md5: 06f70867945ea6a84d35836af780f1de - depends: - - __glibc >=2.17,<3.0.a0 - - libbrotlicommon 1.1.0 hb9d3cd8_2 - - libgcc >=13 - arch: x86_64 - platform: linux - license: MIT - license_family: MIT - size: 281750 - timestamp: 1725267679782 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlienc-1.1.0-h86ecc28_2.conda - sha256: 41385e17bc73834b235c5aff12d6d82eccb534acb3c30986996f9dad92a0d54c - md5: 0e9bd365480c72b25c71a448257b537d - depends: - - libbrotlicommon 1.1.0 h86ecc28_2 - - libgcc >=13 - arch: aarch64 - platform: linux - license: MIT - license_family: MIT - size: 290230 - timestamp: 1725267792697 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlienc-1.1.0-hd74edd7_2.conda - sha256: eeb1eb0d58b9d02bc1b98dc0a058f104ab168eb2f7d1c7bfa0570a12cfcdb7b7 - md5: 4f3a434504c67b2c42565c0b85c1885c - depends: - - __osx >=11.0 - - libbrotlicommon 1.1.0 hd74edd7_2 - arch: arm64 - platform: osx - license: MIT - license_family: MIT - size: 279644 - timestamp: 1725268003553 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-28_he106b2a_openblas.conda - build_number: 28 - sha256: de293e117db53e5d78b579136509c35a5e4ad11529c05f9af83cf89be4d30de1 - md5: 4e20a1c00b4e8a984aac0f6cce59e3ac - depends: - - libblas 3.9.0 28_h59b9bed_openblas - constrains: - - blas =2.128=openblas - - liblapack =3.9.0=28*_openblas - - liblapacke =3.9.0=28*_openblas - arch: x86_64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 16539 - timestamp: 1738114043618 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-28_hab92f65_openblas.conda - build_number: 28 - sha256: ed62f13a85726f568e17ad569b5cc01a49a6c7bd334802cf1c1b15e9d10e7e93 - md5: 8cff453f547365131be5647c7680ac6d - depends: - - libblas 3.9.0 28_h1a9f1db_openblas - constrains: - - liblapack =3.9.0=28*_openblas - - blas =2.128=openblas - - liblapacke =3.9.0=28*_openblas - arch: aarch64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 16655 - timestamp: 1738114088527 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-28_hb3479ef_openblas.conda - build_number: 28 - sha256: f08adea59381babb3568e6d23e52aff874cbc25f299821647ab1127d1e1332ca - md5: 30942dea911ce333765003a8adec4e8a - depends: - - libblas 3.9.0 28_h10e41b3_openblas - constrains: - - blas =2.128=openblas - - liblapacke =3.9.0=28*_openblas - - liblapack =3.9.0=28*_openblas - arch: arm64 - platform: osx - license: BSD-3-Clause - license_family: BSD - size: 16788 - timestamp: 1738114399962 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libcrc32c-1.1.2-h9c3ff4c_0.tar.bz2 - sha256: fd1d153962764433fe6233f34a72cdeed5dcf8a883a85769e8295ce940b5b0c5 - md5: c965a5aa0d5c1c37ffc62dff36e28400 - depends: - - libgcc-ng >=9.4.0 - - libstdcxx-ng >=9.4.0 - arch: x86_64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 20440 - timestamp: 1633683576494 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcrc32c-1.1.2-h01db608_0.tar.bz2 - sha256: b8b8c57a87da86b3ea24280fd6aa8efaf92f4e684b606bf2db5d3cb06ffbe2ea - md5: 268ee639c17ada0002fb04dd21816cc2 - depends: - - libgcc-ng >=9.4.0 - - libstdcxx-ng >=9.4.0 - arch: aarch64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 18669 - timestamp: 1633683724891 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcrc32c-1.1.2-hbdafb3b_0.tar.bz2 - sha256: 58477b67cc719060b5b069ba57161e20ba69b8695d154a719cb4b60caf577929 - md5: 32bd82a6a625ea6ce090a81c3d34edeb - depends: - - libcxx >=11.1.0 - arch: arm64 - platform: osx - license: BSD-3-Clause - license_family: BSD - size: 18765 - timestamp: 1633683992603 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.11.1-h332b0f4_0.conda - sha256: 3cd4075b2a7b5562e46c8ec626f6f9ca57aeecaa94ff7df57eca26daa94c9906 - md5: 2b3e0081006dc21e8bf53a91c83a055c - depends: - - __glibc >=2.17,<3.0.a0 - - krb5 >=1.21.3,<1.22.0a0 - - libgcc >=13 - - libnghttp2 >=1.64.0,<2.0a0 - - libssh2 >=1.11.1,<2.0a0 - - libzlib >=1.3.1,<2.0a0 - - openssl >=3.4.0,<4.0a0 - - zstd >=1.5.6,<1.6.0a0 - arch: x86_64 - platform: linux - license: curl - license_family: MIT - size: 423011 - timestamp: 1733999897624 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcurl-8.11.1-h6702fde_0.conda - sha256: 9fc65d21a58f4aad1bc39dfb94a178893aeb035850c5cf0ed9736674279f390b - md5: 7dec1cd271c403d1636bda5aa388a55d - depends: - - krb5 >=1.21.3,<1.22.0a0 - - libgcc >=13 - - libnghttp2 >=1.64.0,<2.0a0 - - libssh2 >=1.11.1,<2.0a0 - - libzlib >=1.3.1,<2.0a0 - - openssl >=3.4.0,<4.0a0 - - zstd >=1.5.6,<1.6.0a0 - arch: aarch64 - platform: linux - license: curl - license_family: MIT - size: 440737 - timestamp: 1733999835504 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.11.1-h73640d1_0.conda - sha256: f47c35938144c23278987c7d12096f6a42d7c850ffc277222b032073412383b6 - md5: 46d7524cabfdd199bffe63f8f19a552b - depends: - - __osx >=11.0 - - krb5 >=1.21.3,<1.22.0a0 - - libnghttp2 >=1.64.0,<2.0a0 - - libssh2 >=1.11.1,<2.0a0 - - libzlib >=1.3.1,<2.0a0 - - openssl >=3.4.0,<4.0a0 - - zstd >=1.5.6,<1.6.0a0 - arch: arm64 - platform: osx - license: curl - license_family: MIT - size: 385098 - timestamp: 1734000160270 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda - sha256: 776092346da87a2a23502e14d91eb0c32699c4a1522b7331537bd1c3751dcff5 - md5: 5b3e1610ff8bd5443476b91d618f5b77 - depends: - - __osx >=11.0 - arch: arm64 - platform: osx - license: Apache-2.0 WITH LLVM-exception - license_family: Apache - size: 523505 - timestamp: 1736877862502 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.23-h4ddbbb0_0.conda - sha256: 511d801626d02f4247a04fff957cc6e9ec4cc7e8622bd9acd076bcdc5de5fe66 - md5: 8dfae1d2e74767e9ce36d5fa0d8605db - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - arch: x86_64 - platform: linux - license: MIT - license_family: MIT - size: 72255 - timestamp: 1734373823254 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libdeflate-1.23-h5e3c512_0.conda - sha256: 959419d87cd2b789a9055db95704c614f31aeb70bef7949fa2f734122a3a2863 - md5: 7e7ca2607b11b180120cefc2354fc0cb - depends: - - libgcc >=13 - arch: aarch64 - platform: linux - license: MIT - license_family: MIT - size: 69862 - timestamp: 1734373858306 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.23-hec38601_0.conda - sha256: 887c02deaed6d583459eba6367023e36d8761085b2f7126e389424f57155da53 - md5: 1d8b9588be14e71df38c525767a1ac30 - depends: - - __osx >=11.0 - arch: arm64 - platform: osx - license: MIT - license_family: MIT - size: 54132 - timestamp: 1734373971372 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda - sha256: d789471216e7aba3c184cd054ed61ce3f6dac6f87a50ec69291b9297f8c18724 - md5: c277e0a4d549b03ac1e9d6cbbe3d017b - depends: - - ncurses - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - ncurses >=6.5,<7.0a0 - arch: x86_64 - platform: linux - license: BSD-2-Clause - license_family: BSD - size: 134676 - timestamp: 1738479519902 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20250104-pl5321h976ea20_0.conda - sha256: c0b27546aa3a23d47919226b3a1635fccdb4f24b94e72e206a751b33f46fd8d6 - md5: fb640d776fc92b682a14e001980825b1 - depends: - - ncurses - - libgcc >=13 - - ncurses >=6.5,<7.0a0 - arch: aarch64 - platform: linux - license: BSD-2-Clause - license_family: BSD - size: 148125 - timestamp: 1738479808948 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda - sha256: 66aa216a403de0bb0c1340a88d1a06adaff66bae2cfd196731aa24db9859d631 - md5: 44083d2d2c2025afca315c7a172eab2b - depends: - - ncurses - - __osx >=11.0 - - ncurses >=6.5,<7.0a0 - arch: arm64 - platform: osx - license: BSD-2-Clause - license_family: BSD - size: 107691 - timestamp: 1738479560845 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda - sha256: 1cd6048169fa0395af74ed5d8f1716e22c19a81a8a36f934c110ca3ad4dd27b4 - md5: 172bf1cd1ff8629f2b1179945ed45055 - depends: - - libgcc-ng >=12 - arch: x86_64 - platform: linux - license: BSD-2-Clause - license_family: BSD - size: 112766 - timestamp: 1702146165126 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libev-4.33-h31becfc_2.conda - sha256: 973af77e297f1955dd1f69c2cbdc5ab9dfc88388a5576cd152cda178af0fd006 - md5: a9a13cb143bbaa477b1ebaefbe47a302 - depends: - - libgcc-ng >=12 - arch: aarch64 - platform: linux - license: BSD-2-Clause - license_family: BSD - size: 115123 - timestamp: 1702146237623 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libev-4.33-h93a5062_2.conda - sha256: 95cecb3902fbe0399c3a7e67a5bed1db813e5ab0e22f4023a5e0f722f2cc214f - md5: 36d33e440c31857372a72137f78bacf5 - arch: arm64 - platform: osx - license: BSD-2-Clause - license_family: BSD - size: 107458 - timestamp: 1702146414478 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libevent-2.1.12-hf998b51_1.conda - sha256: 2e14399d81fb348e9d231a82ca4d816bf855206923759b69ad006ba482764131 - md5: a1cfcc585f0c42bf8d5546bb1dfb668d - depends: - - libgcc-ng >=12 - - openssl >=3.1.1,<4.0a0 - arch: x86_64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 427426 - timestamp: 1685725977222 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libevent-2.1.12-h4ba1bb4_1.conda - sha256: 01333cc7d6e6985dd5700b43660d90e9e58049182017fd24862088ecbe1458e4 - md5: 96ae6083cd1ac9f6bc81631ac835b317 - depends: - - libgcc-ng >=12 - - openssl >=3.1.1,<4.0a0 - arch: aarch64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 438992 - timestamp: 1685726046519 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libevent-2.1.12-h2757513_1.conda - sha256: 8c136d7586259bb5c0d2b913aaadc5b9737787ae4f40e3ad1beaf96c80b919b7 - md5: 1a109764bff3bdc7bdd84088347d71dc - depends: - - openssl >=3.1.1,<4.0a0 - arch: arm64 - platform: osx - license: BSD-3-Clause - license_family: BSD - size: 368167 - timestamp: 1685726248899 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda - sha256: 56541b98447b58e52d824bd59d6382d609e11de1f8adf20b23143e353d2b8d26 - md5: db833e03127376d461e1e13e76f09b6c - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - constrains: - - expat 2.6.4.* - arch: x86_64 - platform: linux - license: MIT - license_family: MIT - size: 73304 - timestamp: 1730967041968 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.6.4-h5ad3122_0.conda - sha256: f42e758009ba9db90d1fe7992bc3e60d0c52f71fb20923375d2c44ae69a5a2b3 - md5: f1b3fab36861b3ce945a13f0dfdfc688 - depends: - - libgcc >=13 - constrains: - - expat 2.6.4.* - arch: aarch64 - platform: linux - license: MIT - license_family: MIT - size: 72345 - timestamp: 1730967203789 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.4-h286801f_0.conda - sha256: e42ab5ace927ee7c84e3f0f7d813671e1cf3529f5f06ee5899606630498c2745 - md5: 38d2656dd914feb0cab8c629370768bf - depends: - - __osx >=11.0 - constrains: - - expat 2.6.4.* - arch: arm64 - platform: osx - license: MIT - license_family: MIT - size: 64693 - timestamp: 1730967175868 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.2-h7f98852_5.tar.bz2 - sha256: ab6e9856c21709b7b517e940ae7028ae0737546122f83c2aa5d692860c3b149e - md5: d645c6d2ac96843a2bfaccd2d62b3ac3 - depends: - - libgcc-ng >=9.4.0 - arch: x86_64 - platform: linux - license: MIT - license_family: MIT - size: 58292 - timestamp: 1636488182923 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.4.2-h3557bc0_5.tar.bz2 - sha256: 7e9258a102480757fe3faeb225a3ca04dffd10fecd2a958c65cdb4cdf75f2c3c - md5: dddd85f4d52121fab0a8b099c5e06501 - depends: - - libgcc-ng >=9.4.0 - arch: aarch64 - platform: linux - license: MIT - license_family: MIT - size: 59450 - timestamp: 1636488255090 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 - sha256: 41b3d13efb775e340e4dba549ab5c029611ea6918703096b2eaa9c015c0750ca - md5: 086914b672be056eb70fd4285b6783b6 - arch: arm64 - platform: osx - license: MIT - license_family: MIT - size: 39020 - timestamp: 1636488587153 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h77fa898_1.conda - sha256: 53eb8a79365e58849e7b1a068d31f4f9e718dc938d6f2c03e960345739a03569 - md5: 3cb76c3f10d3bc7f1105b2fc9db984df - depends: - - _libgcc_mutex 0.1 conda_forge - - _openmp_mutex >=4.5 - constrains: - - libgomp 14.2.0 h77fa898_1 - - libgcc-ng ==14.2.0=*_1 - arch: x86_64 - platform: linux - license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - size: 848745 - timestamp: 1729027721139 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-14.2.0-he277a41_1.conda - sha256: 5d56757ccad208c79214395b00d006d8d18929a4ba49c47bd9460789a7620943 - md5: 511b511c5445e324066c3377481bcab8 - depends: - - _openmp_mutex >=4.5 - constrains: - - libgcc-ng ==14.2.0=*_1 - - libgomp 14.2.0 he277a41_1 - arch: aarch64 - platform: linux - license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - size: 535243 - timestamp: 1729089435134 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_1.conda - sha256: 3a76969c80e9af8b6e7a55090088bc41da4cffcde9e2c71b17f44d37b7cb87f7 - md5: e39480b9ca41323497b05492a63bc35b - depends: - - libgcc 14.2.0 h77fa898_1 - arch: x86_64 - platform: linux - license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - size: 54142 - timestamp: 1729027726517 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-14.2.0-he9431aa_1.conda - sha256: 9b5cf168a6c7361cae869cb74b716766ee7c6d6b3f6172b32ba9bf91135efdc4 - md5: 0694c249c61469f2c0f7e2990782af21 - depends: - - libgcc 14.2.0 he277a41_1 - arch: aarch64 - platform: linux - license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - size: 54104 - timestamp: 1729089444587 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_1.conda - sha256: fc9e7f22a17faf74da904ebfc4d88699013d2992e55505e4aa0eb01770290977 - md5: f1fd30127802683586f768875127a987 - depends: - - libgfortran5 14.2.0 hd5240d6_1 - constrains: - - libgfortran-ng ==14.2.0=*_1 - arch: x86_64 - platform: linux - license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - size: 53997 - timestamp: 1729027752995 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_1.conda - sha256: cb66e411fa32a5c6040f4e5e2a63c00897aae4c3133a9c004c2e929ccf19575b - md5: 0294b92d2f47a240bebb1e3336b495f1 - depends: - - libgfortran5 14.2.0 hb6113d0_1 - constrains: - - libgfortran-ng ==14.2.0=*_1 - arch: aarch64 - platform: linux - license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - size: 54105 - timestamp: 1729089471124 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda - sha256: 44e541b4821c96b28b27fef5630883a60ce4fee91fd9c79f25a199f8f73f337b - md5: 4a55d9e169114b2b90d3ec4604cd7bbf - depends: - - libgfortran5 13.2.0 hf226fd6_3 - arch: arm64 - platform: osx - license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - size: 110233 - timestamp: 1707330749033 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hd5240d6_1.conda - sha256: d149a37ca73611e425041f33b9d8dbed6e52ec506fe8cc1fc0ee054bddeb6d5d - md5: 9822b874ea29af082e5d36098d25427d - depends: - - libgcc >=14.2.0 - constrains: - - libgfortran 14.2.0 - arch: x86_64 - platform: linux - license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - size: 1462645 - timestamp: 1729027735353 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_1.conda - sha256: a87ff46d19916403cbf68cf1d785bf56b4d1ab7b2552468d2ea775d70782493f - md5: fc068e11b10e18f184e027782baa12b6 - depends: - - libgcc >=14.2.0 - constrains: - - libgfortran 14.2.0 - arch: aarch64 - platform: linux - license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - size: 1102158 - timestamp: 1729089452640 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda - sha256: bafc679eedb468a86aa4636061c55966186399ee0a04b605920d208d97ac579a - md5: 66ac81d54e95c534ae488726c1f698ea - depends: - - llvm-openmp >=8.0.0 - constrains: - - libgfortran 5.0.0 13_2_0_*_3 - arch: arm64 - platform: osx - license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - size: 997381 - timestamp: 1707330687590 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h77fa898_1.conda - sha256: 1911c29975ec99b6b906904040c855772ccb265a1c79d5d75c8ceec4ed89cd63 - md5: cc3573974587f12dda90d96e3e55a702 - depends: - - _libgcc_mutex 0.1 conda_forge - arch: x86_64 - platform: linux - license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - size: 460992 - timestamp: 1729027639220 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_1.conda - sha256: 5aa53874a5e57a00f2e0c2e2910684eb674429cd5fcb803619b226a73e89aedf - md5: 376f0e73abbda6d23c0cb749adc195ef - arch: aarch64 - platform: linux - license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - size: 463521 - timestamp: 1729089357313 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.34.0-h2b5623c_0.conda - sha256: 348ee1dddd82dcef5a185c86e65dda8acfc9b583acc425ccb9b661f2d433b2cc - md5: 2a5142c88dd6132eaa8079f99476e922 - depends: - - __glibc >=2.17,<3.0.a0 - - libabseil * cxx17* - - libabseil >=20240722.0,<20240723.0a0 - - libcurl >=8.11.1,<9.0a0 - - libgcc >=13 - - libgrpc >=1.67.1,<1.68.0a0 - - libprotobuf >=5.28.3,<5.28.4.0a0 - - libstdcxx >=13 - - openssl >=3.4.0,<4.0a0 - constrains: - - libgoogle-cloud 2.34.0 *_0 - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 1256795 - timestamp: 1737286199784 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-2.34.0-hccf9d24_0.conda - sha256: 54267dda8fafc2a2d379ef77b6029d8240e0628d4b29758f788fb903f84397a3 - md5: 1ce0fd876001c40801b40fea22987e41 - depends: - - libabseil * cxx17* - - libabseil >=20240722.0,<20240723.0a0 - - libcurl >=8.11.1,<9.0a0 - - libgcc >=13 - - libgrpc >=1.67.1,<1.68.0a0 - - libprotobuf >=5.28.3,<5.28.4.0a0 - - libstdcxx >=13 - - openssl >=3.4.0,<4.0a0 - constrains: - - libgoogle-cloud 2.34.0 *_0 - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 1256586 - timestamp: 1737285242684 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-2.34.0-hdbe95d5_0.conda - sha256: 919d8cbcd47d5bd2244c55b2bb87e2bd2eed8215996aab8435cb7123ffd9d20e - md5: 69826544e7978fcaa6bc8c1962d96ad6 - depends: - - __osx >=11.0 - - libabseil * cxx17* - - libabseil >=20240722.0,<20240723.0a0 - - libcurl >=8.11.1,<9.0a0 - - libcxx >=18 - - libgrpc >=1.67.1,<1.68.0a0 - - libprotobuf >=5.28.3,<5.28.4.0a0 - - openssl >=3.4.0,<4.0a0 - constrains: - - libgoogle-cloud 2.34.0 *_0 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: Apache - size: 878217 - timestamp: 1737284441192 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.34.0-h0121fbd_0.conda - sha256: aa1b3b30ae6b2eab7c9e6a8e2fd8ec3776f25d2e3f0b6f9dc547ff8083bf25fa - md5: 9f0c43225243c81c6991733edcaafff5 - depends: - - __glibc >=2.17,<3.0.a0 - - libabseil - - libcrc32c >=1.1.2,<1.2.0a0 - - libcurl - - libgcc >=13 - - libgoogle-cloud 2.34.0 h2b5623c_0 - - libstdcxx >=13 - - libzlib >=1.3.1,<2.0a0 - - openssl - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 785792 - timestamp: 1737286406612 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-storage-2.34.0-hb9b2b65_0.conda - sha256: 4ad4fb7c02dcfa4c86dcf9591e0131a01fc0f2c3f2729c12882b944ddf2b8a9d - md5: 0732a5988f7f556f2c1d1f51026fc1be - depends: - - libabseil - - libcrc32c >=1.1.2,<1.2.0a0 - - libcurl - - libgcc >=13 - - libgoogle-cloud 2.34.0 hccf9d24_0 - - libstdcxx >=13 - - libzlib >=1.3.1,<2.0a0 - - openssl - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 739678 - timestamp: 1737285399565 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-storage-2.34.0-h7081f7f_0.conda - sha256: 79f6b93fb330728530036b2b38764e9d42e0eedd3ae7e549ac7eae49acd1e52b - md5: f09cb03f9cf847f1dc41b4c1f65c97c2 - depends: - - __osx >=11.0 - - libabseil - - libcrc32c >=1.1.2,<1.2.0a0 - - libcurl - - libcxx >=18 - - libgoogle-cloud 2.34.0 hdbe95d5_0 - - libzlib >=1.3.1,<2.0a0 - - openssl - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: Apache - size: 529202 - timestamp: 1737285376801 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.67.1-h25350d4_1.conda - sha256: 014627485b3cf0ea18e04c0bab07be7fb98722a3aeeb58477acc7e1c3d2f911e - md5: 0c6497a760b99a926c7c12b74951a39c - depends: - - __glibc >=2.17,<3.0.a0 - - c-ares >=1.34.4,<2.0a0 - - libabseil * cxx17* - - libabseil >=20240722.0,<20240723.0a0 - - libgcc >=13 - - libprotobuf >=5.28.3,<5.28.4.0a0 - - libre2-11 >=2024.7.2 - - libstdcxx >=13 - - libzlib >=1.3.1,<2.0a0 - - openssl >=3.4.0,<4.0a0 - - re2 - constrains: - - grpc-cpp =1.67.1 - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 7792251 - timestamp: 1735584856826 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgrpc-1.67.1-hf7ccdd3_1.conda - sha256: 3fa173dc1d7456aac2b26937daae86a08432a31640e3d6569c62edc661fc9bbe - md5: 8fb41a425bebaeb3d0fa568503612e64 - depends: - - c-ares >=1.34.4,<2.0a0 - - libabseil * cxx17* - - libabseil >=20240722.0,<20240723.0a0 - - libgcc >=13 - - libprotobuf >=5.28.3,<5.28.4.0a0 - - libre2-11 >=2024.7.2 - - libstdcxx >=13 - - libzlib >=1.3.1,<2.0a0 - - openssl >=3.4.0,<4.0a0 - - re2 - constrains: - - grpc-cpp =1.67.1 - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 7430006 - timestamp: 1735585769731 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgrpc-1.67.1-h0a426d6_1.conda - sha256: 630edf63981818ff590367cb95fddbed0f5a390464d0952c90ec81de899e84a6 - md5: 8a3cba079d6ac985e7d73c76a678fbb4 - depends: - - __osx >=11.0 - - c-ares >=1.34.4,<2.0a0 - - libabseil * cxx17* - - libabseil >=20240722.0,<20240723.0a0 - - libcxx >=18 - - libprotobuf >=5.28.3,<5.28.4.0a0 - - libre2-11 >=2024.7.2 - - libzlib >=1.3.1,<2.0a0 - - openssl >=3.4.0,<4.0a0 - - re2 - constrains: - - grpc-cpp =1.67.1 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: APACHE - size: 5311706 - timestamp: 1735585137716 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-hd590300_2.conda - sha256: 8ac2f6a9f186e76539439e50505d98581472fedb347a20e7d1f36429849f05c9 - md5: d66573916ffcf376178462f1b61c941e - depends: - - libgcc-ng >=12 - arch: x86_64 - platform: linux - license: LGPL-2.1-only - size: 705775 - timestamp: 1702682170569 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libiconv-1.17-h31becfc_2.conda - sha256: a30e09d089cb75a0d5b8e5c354694c1317da98261185ed65aa3793e741060614 - md5: 9a8eb13f14de7d761555a98712e6df65 - depends: - - libgcc-ng >=12 - arch: aarch64 - platform: linux - license: LGPL-2.1-only - size: 705787 - timestamp: 1702684557134 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.17-h0d3ecfb_2.conda - sha256: bc7de5097b97bcafcf7deaaed505f7ce02f648aac8eccc0d5a47cc599a1d0304 - md5: 69bda57310071cf6d2b86caf11573d2d - arch: arm64 - platform: osx - license: LGPL-2.1-only - size: 676469 - timestamp: 1702682458114 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda - sha256: b954e09b7e49c2f2433d6f3bb73868eda5e378278b0f8c1dd10a7ef090e14f2f - md5: ea25936bb4080d843790b586850f82b8 - depends: - - libgcc-ng >=12 - constrains: - - jpeg <0.0.0a - arch: x86_64 - platform: linux - license: IJG AND BSD-3-Clause AND Zlib - size: 618575 - timestamp: 1694474974816 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libjpeg-turbo-3.0.0-h31becfc_1.conda - sha256: 675bc1f2a8581cd34a86c412663ec29c5f90c1d9f8d11866aa1ade5cdbdf8429 - md5: ed24e702928be089d9ba3f05618515c6 - depends: - - libgcc-ng >=12 - constrains: - - jpeg <0.0.0a - arch: aarch64 - platform: linux - license: IJG AND BSD-3-Clause AND Zlib - size: 647126 - timestamp: 1694475003570 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.0.0-hb547adb_1.conda - sha256: a42054eaa38e84fc1e5ab443facac4bbc9d1b6b6f23f54b7bf4f1eb687e1d993 - md5: 3ff1e053dc3a2b8e36b9bfa4256a58d1 - constrains: - - jpeg <0.0.0a - arch: arm64 - platform: osx - license: IJG AND BSD-3-Clause AND Zlib - size: 547541 - timestamp: 1694475104253 -- conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-28_h7ac8fdf_openblas.conda - build_number: 28 - sha256: 9530e6840690b78360946390a1d29624734a6b624f02c26631fb451592cbb8ef - md5: 069f40bfbf1dc55c83ddb07fc6a6ef8d - depends: - - libblas 3.9.0 28_h59b9bed_openblas - constrains: - - libcblas =3.9.0=28*_openblas - - blas =2.128=openblas - - liblapacke =3.9.0=28*_openblas - arch: x86_64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 16553 - timestamp: 1738114053556 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-28_h411afd4_openblas.conda - build_number: 28 - sha256: 1290ce1071a586e22bdd7d8f4c48000cc0005f0a67660be150d1ea5c6092129f - md5: bc4c5ee31476521e202356b56bba6077 - depends: - - libblas 3.9.0 28_h1a9f1db_openblas - constrains: - - liblapacke =3.9.0=28*_openblas - - libcblas =3.9.0=28*_openblas - - blas =2.128=openblas - arch: aarch64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 16637 - timestamp: 1738114094310 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-28_hc9a63f6_openblas.conda - build_number: 28 - sha256: 79c75a02bff20f8b001e6aecfee8d22a51552c3986e7037fca68e5ed071cc213 - md5: 45f26652530b558c21083ceb7adaf273 - depends: - - libblas 3.9.0 28_h10e41b3_openblas - constrains: - - blas =2.128=openblas - - liblapacke =3.9.0=28*_openblas - - libcblas =3.9.0=28*_openblas - arch: arm64 - platform: osx - license: BSD-3-Clause - license_family: BSD - size: 16793 - timestamp: 1738114407021 -- conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda - sha256: cad52e10319ca4585bc37f0bc7cce99ec7c15dc9168e42ccb96b741b0a27db3f - md5: 42d5b6a0f30d3c10cd88cb8584fda1cb - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - arch: x86_64 - platform: linux - license: 0BSD - size: 111357 - timestamp: 1738525339684 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.4-h86ecc28_0.conda - sha256: 96413664f0fade54a4931940d18749cfc8e6308349dbb0cb83adb2394ca1f730 - md5: b88244e0a115cc34f7fbca9b11248e76 - depends: - - libgcc >=13 - arch: aarch64 - platform: linux - license: 0BSD - size: 124197 - timestamp: 1738528201520 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.4-h39f12f2_0.conda - sha256: 560c59d3834cc652a84fb45531bd335ad06e271b34ebc216e380a89798fe8e2c - md5: e3fd1f8320a100f2b210e690a57cd615 - depends: - - __osx >=11.0 - arch: arm64 - platform: osx - license: 0BSD - size: 98945 - timestamp: 1738525462560 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda - sha256: b0f2b3695b13a989f75d8fd7f4778e1c7aabe3b36db83f0fe80b2cd812c0e975 - md5: 19e57602824042dfd0446292ef90488b - depends: - - __glibc >=2.17,<3.0.a0 - - c-ares >=1.32.3,<2.0a0 - - libev >=4.33,<4.34.0a0 - - libev >=4.33,<5.0a0 - - libgcc >=13 - - libstdcxx >=13 - - libzlib >=1.3.1,<2.0a0 - - openssl >=3.3.2,<4.0a0 - arch: x86_64 - platform: linux - license: MIT - license_family: MIT - size: 647599 - timestamp: 1729571887612 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnghttp2-1.64.0-hc8609a4_0.conda - sha256: c093c6d370aadbf0409c20b6c54c488ee2f6fea976181919fcc63e87ee232673 - md5: f52c614fa214a8bedece9421c771670d - depends: - - c-ares >=1.32.3,<2.0a0 - - libev >=4.33,<4.34.0a0 - - libev >=4.33,<5.0a0 - - libgcc >=13 - - libstdcxx >=13 - - libzlib >=1.3.1,<2.0a0 - - openssl >=3.3.2,<4.0a0 - arch: aarch64 - platform: linux - license: MIT - license_family: MIT - size: 714610 - timestamp: 1729571912479 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.64.0-h6d7220d_0.conda - sha256: 00cc685824f39f51be5233b54e19f45abd60de5d8847f1a56906f8936648b72f - md5: 3408c02539cee5f1141f9f11450b6a51 - depends: - - __osx >=11.0 - - c-ares >=1.34.2,<2.0a0 - - libcxx >=17 - - libev >=4.33,<4.34.0a0 - - libev >=4.33,<5.0a0 - - libzlib >=1.3.1,<2.0a0 - - openssl >=3.3.2,<4.0a0 - arch: arm64 - platform: osx - license: MIT - license_family: MIT - size: 566719 - timestamp: 1729572385640 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda - sha256: 26d77a3bb4dceeedc2a41bd688564fe71bf2d149fdcf117049970bc02ff1add6 - md5: 30fd6e37fe21f86f4bd26d6ee73eeec7 - depends: - - libgcc-ng >=12 - arch: x86_64 - platform: linux - license: LGPL-2.1-only - license_family: GPL - size: 33408 - timestamp: 1697359010159 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda - sha256: fd18c2b75d7411096428d36a70b36b1a17e31f7b8956b6905d145792d49e97f8 - md5: c14f32510f694e3185704d89967ec422 - depends: - - libgcc-ng >=12 - arch: aarch64 - platform: linux - license: LGPL-2.1-only - license_family: GPL - size: 34501 - timestamp: 1697358973269 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.28-pthreads_h94d23a6_1.conda - sha256: 99ba271d8a80a1af2723f2e124ffd91d850074c0389c067e6d96d72a2dbfeabe - md5: 62857b389e42b36b686331bec0922050 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - - libgfortran - - libgfortran5 >=14.2.0 - constrains: - - openblas >=0.3.28,<0.3.29.0a0 - arch: x86_64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 5578513 - timestamp: 1730772671118 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.28-pthreads_h9d3fd7e_1.conda - sha256: 30623a40764e935aa77e0d4db54c1a1589189a9bf3a03fdb445505c1e319b5a6 - md5: e8dde93dd199da3c1f2c1fcfd0042cd4 - depends: - - libgcc >=14 - - libgfortran - - libgfortran5 >=14.2.0 - constrains: - - openblas >=0.3.28,<0.3.29.0a0 - arch: aarch64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 4793435 - timestamp: 1730773029647 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.28-openmp_hf332438_1.conda - sha256: 62bb669c37a845129096f73d446cdb6bb170e4927f2fea2b661329680dbbc373 - md5: 40803a48d947c8639da6704e9a44d3ce - depends: - - __osx >=11.0 - - libgfortran 5.* - - libgfortran5 >=13.2.0 - - llvm-openmp >=18.1.8 - constrains: - - openblas >=0.3.28,<0.3.29.0a0 - arch: arm64 - platform: osx - license: BSD-3-Clause - license_family: BSD - size: 4165774 - timestamp: 1730772154295 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-1.18.0-hfcad708_1.conda - sha256: 4ea235e08676f16b0d3c3380befe1478c0fa0141512ee709b011005c55c9619f - md5: 1f5a5d66e77a39dc5bd639ec953705cf - depends: - - libabseil * cxx17* - - libabseil >=20240722.0,<20240723.0a0 - - libcurl >=8.11.1,<9.0a0 - - libgrpc >=1.67.1,<1.68.0a0 - - libopentelemetry-cpp-headers 1.18.0 ha770c72_1 - - libprotobuf >=5.28.3,<5.28.4.0a0 - - libzlib >=1.3.1,<2.0a0 - - nlohmann_json - - prometheus-cpp >=1.3.0,<1.4.0a0 - constrains: - - cpp-opentelemetry-sdk =1.18.0 - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 801927 - timestamp: 1735643375271 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopentelemetry-cpp-1.18.0-h60b47f9_1.conda - sha256: 160c493cd0f897955b0b6035b51c6d7255ffbaed3c8a12d43e8e8a719d405aba - md5: afe3c8c53f4b6d27d553c230d4b34038 - depends: - - libabseil * cxx17* - - libabseil >=20240722.0,<20240723.0a0 - - libcurl >=8.11.1,<9.0a0 - - libgrpc >=1.67.1,<1.68.0a0 - - libopentelemetry-cpp-headers 1.18.0 h8af1aa0_1 - - libprotobuf >=5.28.3,<5.28.4.0a0 - - libzlib >=1.3.1,<2.0a0 - - nlohmann_json - - prometheus-cpp >=1.3.0,<1.4.0a0 - constrains: - - cpp-opentelemetry-sdk =1.18.0 - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 800896 - timestamp: 1735643533825 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopentelemetry-cpp-1.18.0-h0c05b2d_1.conda - sha256: c6bcbd53d62a9e0d8c667e560db0ca2ecb7679277cbb3c23457aabe74fcb8cba - md5: 19c46cc18825f3924251c39ec1b0d983 - depends: - - libabseil * cxx17* - - libabseil >=20240722.0,<20240723.0a0 - - libcurl >=8.11.1,<9.0a0 - - libgrpc >=1.67.1,<1.68.0a0 - - libopentelemetry-cpp-headers 1.18.0 hce30654_1 - - libprotobuf >=5.28.3,<5.28.4.0a0 - - libzlib >=1.3.1,<2.0a0 - - nlohmann_json - - prometheus-cpp >=1.3.0,<1.4.0a0 - constrains: - - cpp-opentelemetry-sdk =1.18.0 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: APACHE - size: 529588 - timestamp: 1735643889612 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-headers-1.18.0-ha770c72_1.conda - sha256: aa1f7dea79ea8513ff77339ba7c6e9cf10dfa537143e7718b1cfb3af52b649f2 - md5: 4fb055f57404920a43b147031471e03b - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 320359 - timestamp: 1735643346175 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopentelemetry-cpp-headers-1.18.0-h8af1aa0_1.conda - sha256: 981c0b29a0789597fa8ed147b02df2d2ad0c7f863d87df74770c40cee1800228 - md5: 282193b19a19e3b5d75d18ef82713ef0 - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 319401 - timestamp: 1735643509251 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopentelemetry-cpp-headers-1.18.0-hce30654_1.conda - sha256: 82e5f5ba64debbaab3c601b265dfc0cdb4d2880feba9bada5fd2e67b9f91ada5 - md5: e965dad955841507549fdacd8f7f94c0 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: APACHE - size: 320565 - timestamp: 1735643673319 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-19.0.0-h081d1f1_8_cpu.conda - build_number: 8 - sha256: b2e1bf8634efb643a9f15fe19f9bc0877482c509eff7cee6136278a2c2fa5842 - md5: bef810a8da683aa11c644066a87f71c3 - depends: - - __glibc >=2.17,<3.0.a0 - - libarrow 19.0.0 h00a82cf_8_cpu - - libgcc >=13 - - libstdcxx >=13 - - libthrift >=0.21.0,<0.21.1.0a0 - - openssl >=3.4.0,<4.0a0 - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 1241786 - timestamp: 1737824866572 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-19.0.0-hfc78867_8_cpu.conda - build_number: 8 - sha256: 8917fc5e5bb65894106bbd461d2f9c9c0c3dc642ff5da197c941bf620ce840a0 - md5: b0d5f8c122a3e9a6b75036e43e78fcfa - depends: - - libarrow 19.0.0 h03ebaaf_8_cpu - - libgcc >=13 - - libstdcxx >=13 - - libthrift >=0.21.0,<0.21.1.0a0 - - openssl >=3.4.0,<4.0a0 - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 1153834 - timestamp: 1737809048861 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-19.0.0-h636d7b7_8_cpu.conda - build_number: 8 - sha256: da04e6bd7ed2ca64aadf0ad12d9752e8423e85c37e0db80e27c7ff334fcbd2b6 - md5: c1ff2e71a289fb76146591c9d3f9de0a - depends: - - __osx >=11.0 - - libarrow 19.0.0 h819e3af_8_cpu - - libcxx >=18 - - libthrift >=0.21.0,<0.21.1.0a0 - - openssl >=3.4.0,<4.0a0 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: APACHE - size: 893482 - timestamp: 1737807155720 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.46-h943b412_0.conda - sha256: a46436dadd12d58155280d68876dba2d8a3badbc8074956d14fe6530c7c7eda6 - md5: adcf7bacff219488e29cfa95a2abd8f7 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libzlib >=1.3.1,<2.0a0 - arch: x86_64 - platform: linux - license: zlib-acknowledgement - size: 292273 - timestamp: 1737791061653 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.46-hec79eb8_0.conda - sha256: be4eefe8415c9b37d158eaa9522ce4c399a572339ac2bcc4d26d6433e0ed767d - md5: f9f793497c0973d5416421aa2f96cda4 - depends: - - libgcc >=13 - - libzlib >=1.3.1,<2.0a0 - arch: aarch64 - platform: linux - license: zlib-acknowledgement - size: 304364 - timestamp: 1737795802176 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.46-h3783ad8_0.conda - sha256: db78a711561bb6df274ef421472d948dfd1093404db3915e891ae6d7fd37fadc - md5: 15d480fb9dad036eaa4de0b51eab3ccc - depends: - - __osx >=11.0 - - libzlib >=1.3.1,<2.0a0 - arch: arm64 - platform: osx - license: zlib-acknowledgement - size: 266516 - timestamp: 1737791023678 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda - sha256: 51125ebb8b7152e4a4e69fd2398489c4ec8473195c27cde3cbdf1cb6d18c5493 - md5: d8703f1ffe5a06356f06467f1d0b9464 - depends: - - __glibc >=2.17,<3.0.a0 - - libabseil * cxx17* - - libabseil >=20240722.0,<20240723.0a0 - - libgcc >=13 - - libstdcxx >=13 - - libzlib >=1.3.1,<2.0a0 - arch: x86_64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 2960815 - timestamp: 1735577210663 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.3-h44a3b7b_1.conda - sha256: ecb69f2b1668e784b41ba667493be846662d5ef702bef64fb2e013bb1364cdc4 - md5: 68f807f7cc13951652bbe048253fd405 - depends: - - libabseil * cxx17* - - libabseil >=20240722.0,<20240723.0a0 - - libgcc >=13 - - libstdcxx >=13 - - libzlib >=1.3.1,<2.0a0 - arch: aarch64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 2788074 - timestamp: 1735576315676 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.3-h3bd63a1_1.conda - sha256: f58a16b13ad53346903c833e266f83c3d770a43a432659b98710aed85ca885e7 - md5: bdbfea4cf45ae36652c6bbcc2e7ebe91 - depends: - - __osx >=11.0 - - libabseil * cxx17* - - libabseil >=20240722.0,<20240723.0a0 - - libcxx >=18 - - libzlib >=1.3.1,<2.0a0 - arch: arm64 - platform: osx - license: BSD-3-Clause - license_family: BSD - size: 2271580 - timestamp: 1735576361997 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_2.conda - sha256: 4420f8362c71251892ba1eeb957c5e445e4e1596c0c651c28d0d8b415fe120c7 - md5: b2fede24428726dd867611664fb372e8 - depends: - - __glibc >=2.17,<3.0.a0 - - libabseil * cxx17* - - libabseil >=20240722.0,<20240723.0a0 - - libgcc >=13 - - libstdcxx >=13 - constrains: - - re2 2024.07.02.* - arch: x86_64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 209793 - timestamp: 1735541054068 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_2.conda - sha256: 862c20de0120f802e618dcb25913d00c5b82f91f4be60b2d46a774e851adc2f6 - md5: 9a7dbbaab49f76a6f36e5c9d98e323a7 - depends: - - libabseil * cxx17* - - libabseil >=20240722.0,<20240723.0a0 - - libgcc >=13 - - libstdcxx >=13 - constrains: - - re2 2024.07.02.* - arch: aarch64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 204305 - timestamp: 1735540986919 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h07bc746_2.conda - sha256: 112a73ad483353751d4c5d63648c69a4d6fcebf5e1b698a860a3f5124fc3db96 - md5: 6b1e3624d3488016ca4f1ca0c412efaa - depends: - - __osx >=11.0 - - libabseil * cxx17* - - libabseil >=20240722.0,<20240723.0a0 - - libcxx >=18 - constrains: - - re2 2024.07.02.* - arch: arm64 - platform: osx - license: BSD-3-Clause - license_family: BSD - size: 167155 - timestamp: 1735541067807 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda - sha256: 0105bd108f19ea8e6a78d2d994a6d4a8db16d19a41212070d2d1d48a63c34161 - md5: a587892d3c13b6621a6091be690dbca2 - depends: - - libgcc-ng >=12 - arch: x86_64 - platform: linux - license: ISC - size: 205978 - timestamp: 1716828628198 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.20-h68df207_0.conda - sha256: 448df5ea3c5cf1af785aad46858d7a5be0522f4234a4dc9bb764f4d11ff3b981 - md5: 2e4a8f23bebdcb85ca8e5a0fbe75666a - depends: - - libgcc-ng >=12 - arch: aarch64 - platform: linux - license: ISC - size: 177394 - timestamp: 1716828514515 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda - sha256: fade8223e1e1004367d7101dd17261003b60aa576df6d7802191f8972f7470b1 - md5: a7ce36e284c5faaf93c220dfc39e3abd - depends: - - __osx >=11.0 - arch: arm64 - platform: osx - license: ISC - size: 164972 - timestamp: 1716828607917 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.48.0-hee588c1_1.conda - sha256: 22853d289ef6ec8a5b20f1aa261895b06525439990d3b139f8bfd0b5c5e32a3a - md5: 3fa05c528d8a1e2a67bbf1e36f22d3bc - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libzlib >=1.3.1,<2.0a0 - arch: x86_64 - platform: linux - license: Unlicense - size: 878223 - timestamp: 1737564987837 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.48.0-h5eb1b54_1.conda - sha256: 81dd9bf66c7f1d9064e007e2c787133100c406e7ca2de61dba9fb7b87372f255 - md5: 4f3a61fe206f20b27c385ee608bcdfda - depends: - - libgcc >=13 - - libzlib >=1.3.1,<2.0a0 - arch: aarch64 - platform: linux - license: Unlicense - size: 1044879 - timestamp: 1737565049785 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.48.0-h3f77e49_1.conda - sha256: 17c06940cc2a13fd6a17effabd6881b1477db38b2cd3ee2571092d293d3fdd75 - md5: 4c55169502ecddf8077973a987d08f08 - depends: - - __osx >=11.0 - - libzlib >=1.3.1,<2.0a0 - arch: arm64 - platform: osx - license: Unlicense - size: 852831 - timestamp: 1737564996616 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hf672d98_0.conda - sha256: 0407ac9fda2bb67e11e357066eff144c845801d00b5f664efbc48813af1e7bb9 - md5: be2de152d8073ef1c01b7728475f2fe7 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libzlib >=1.3.1,<2.0a0 - - openssl >=3.4.0,<4.0a0 - arch: x86_64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 304278 - timestamp: 1732349402869 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libssh2-1.11.1-ha41c0db_0.conda - sha256: 40f2af5357457546bd11cd64a3b9043d83865180f65ce602515c35f353be35c7 - md5: aeffe03c0e598f015aab08dbb04f6ee4 - depends: - - libgcc >=13 - - libzlib >=1.3.1,<2.0a0 - - openssl >=3.4.0,<4.0a0 - arch: aarch64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 311577 - timestamp: 1732349396421 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.1-h9cc3647_0.conda - sha256: f7047c6ed44bcaeb04432e8c74da87591940d091b0a3940c0d884b7faa8062e9 - md5: ddc7194676c285513706e5fc64f214d7 - depends: - - libzlib >=1.3.1,<2.0a0 - - openssl >=3.4.0,<4.0a0 - arch: arm64 - platform: osx - license: BSD-3-Clause - license_family: BSD - size: 279028 - timestamp: 1732349599461 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-hc0a3c3a_1.conda - sha256: 4661af0eb9bdcbb5fb33e5d0023b001ad4be828fccdcc56500059d56f9869462 - md5: 234a5554c53625688d51062645337328 - depends: - - libgcc 14.2.0 h77fa898_1 - arch: x86_64 - platform: linux - license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - size: 3893695 - timestamp: 1729027746910 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_1.conda - sha256: 519556d2c93f1b487091ce046d62e762286177f4a670ec10e16005177d0bcab3 - md5: 37f489acd39e22b623d2d1e5ac6d195c - depends: - - libgcc 14.2.0 he277a41_1 - arch: aarch64 - platform: linux - license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - size: 3816794 - timestamp: 1729089463404 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_1.conda - sha256: 25bb30b827d4f6d6f0522cc0579e431695503822f144043b93c50237017fffd8 - md5: 8371ac6457591af2cf6159439c1fd051 - depends: - - libstdcxx 14.2.0 hc0a3c3a_1 - arch: x86_64 - platform: linux - license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - size: 54105 - timestamp: 1729027780628 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_1.conda - sha256: 9f97461bd55a2745a7a0941f3502a047f15bfe7bb2952dc7fb204b3202f866fd - md5: 0e75771b8a03afae5a2c6ce71bc733f5 - depends: - - libstdcxx 14.2.0 h3f4de04_1 - arch: aarch64 - platform: linux - license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - size: 54133 - timestamp: 1729089498541 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libthrift-0.21.0-h0e7cc3e_0.conda - sha256: ebb395232973c18745b86c9a399a4725b2c39293c9a91b8e59251be013db42f0 - md5: dcb95c0a98ba9ff737f7ae482aef7833 - depends: - - __glibc >=2.17,<3.0.a0 - - libevent >=2.1.12,<2.1.13.0a0 - - libgcc >=13 - - libstdcxx >=13 - - libzlib >=1.3.1,<2.0a0 - - openssl >=3.3.2,<4.0a0 - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 425773 - timestamp: 1727205853307 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libthrift-0.21.0-h154c74f_0.conda - sha256: f04ab1417aca1687edff9c30d8423ace285eb8c053dc16d595c6e47cfeefb274 - md5: c28792bf37f4ecdce8e3cb9e40750650 - depends: - - libevent >=2.1.12,<2.1.13.0a0 - - libgcc >=13 - - libstdcxx >=13 - - libzlib >=1.3.1,<2.0a0 - - openssl >=3.3.2,<4.0a0 - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 417329 - timestamp: 1727205944238 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libthrift-0.21.0-h64651cc_0.conda - sha256: 7a6c7d5f58cbbc2ccd6493b4b821639fdb0701b9b04c737a949e8cb6adf1c9ad - md5: 7ce2bd2f650f8c31ad7ba4c7bfea61b7 - depends: - - __osx >=11.0 - - libcxx >=17 - - libevent >=2.1.12,<2.1.13.0a0 - - libzlib >=1.3.1,<2.0a0 - - openssl >=3.3.2,<4.0a0 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: APACHE - size: 324342 - timestamp: 1727206096912 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hd9ff511_3.conda - sha256: b224e16b88d76ea95e4af56e2bc638c603bd26a770b98d117d04541d3aafa002 - md5: 0ea6510969e1296cc19966fad481f6de - depends: - - __glibc >=2.17,<3.0.a0 - - lerc >=4.0.0,<5.0a0 - - libdeflate >=1.23,<1.24.0a0 - - libgcc >=13 - - libjpeg-turbo >=3.0.0,<4.0a0 - - liblzma >=5.6.3,<6.0a0 - - libstdcxx >=13 - - libwebp-base >=1.4.0,<2.0a0 - - libzlib >=1.3.1,<2.0a0 - - zstd >=1.5.6,<1.6.0a0 - arch: x86_64 - platform: linux - license: HPND - size: 428173 - timestamp: 1734398813264 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.0-h88f7998_3.conda - sha256: 5888bd66ba7606ae8596856c7dac800940ecad0aed77d6aa37db69d434c81cf0 - md5: 36a0ea4a173338c8725dc0807e99cf22 - depends: - - lerc >=4.0.0,<5.0a0 - - libdeflate >=1.23,<1.24.0a0 - - libgcc >=13 - - libjpeg-turbo >=3.0.0,<4.0a0 - - liblzma >=5.6.3,<6.0a0 - - libstdcxx >=13 - - libwebp-base >=1.4.0,<2.0a0 - - libzlib >=1.3.1,<2.0a0 - - zstd >=1.5.6,<1.6.0a0 - arch: aarch64 - platform: linux - license: HPND - size: 464699 - timestamp: 1734398752249 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-h551f018_3.conda - sha256: 91417846157e04992801438a496b151df89604b2e7c6775d6f701fcd0cbed5ae - md5: a5d084a957563e614ec0c0196d890654 - depends: - - __osx >=11.0 - - lerc >=4.0.0,<5.0a0 - - libcxx >=18 - - libdeflate >=1.23,<1.24.0a0 - - libjpeg-turbo >=3.0.0,<4.0a0 - - liblzma >=5.6.3,<6.0a0 - - libwebp-base >=1.4.0,<2.0a0 - - libzlib >=1.3.1,<2.0a0 - - zstd >=1.5.6,<1.6.0a0 - arch: arm64 - platform: osx - license: HPND - size: 370600 - timestamp: 1734398863052 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.10.0-h4c51ac1_0.conda - sha256: 8e41563ee963bf8ded06da45f4e70bf42f913cb3c2e79364eb3218deffa3cd74 - md5: aeccfff2806ae38430638ffbb4be9610 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - arch: x86_64 - platform: linux - license: MIT - license_family: MIT - size: 82745 - timestamp: 1737244366901 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.10.0-ha346350_0.conda - sha256: 9c333e07b76ae1ea2c882db764be52dc82f632be66d993a50b35ca9c5475074a - md5: c5166bcfb8348e8fc31ee16ec3981a5e - depends: - - libgcc >=13 - arch: aarch64 - platform: linux - license: MIT - license_family: MIT - size: 82679 - timestamp: 1737329054400 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.10.0-hda25de7_0.conda - sha256: aca3ef31d3dff5cefd3790742a5ee6548f1cf0201d0e8cee08b01da503484eb6 - md5: 5f741aed1d8d393586a5fdcaaa87f45c - depends: - - __osx >=11.0 - arch: arm64 - platform: osx - license: MIT - license_family: MIT - size: 83628 - timestamp: 1737244450097 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - sha256: 787eb542f055a2b3de553614b25f09eefb0a0931b0c87dbcce6efdfd92f04f18 - md5: 40b61aab5c7ba9ff276c41cfffe6b80b - depends: - - libgcc-ng >=12 - arch: x86_64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 33601 - timestamp: 1680112270483 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda - sha256: 616277b0c5f7616c2cdf36f6c316ea3f9aa5bb35f2d4476a349ab58b9b91675f - md5: 000e30b09db0b7c775b21695dff30969 - depends: - - libgcc-ng >=12 - arch: aarch64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 35720 - timestamp: 1680113474501 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.50.0-hb9d3cd8_0.conda - sha256: b4a8890023902aef9f1f33e3e35603ad9c2f16c21fdb58e968fa6c1bd3e94c0b - md5: 771ee65e13bc599b0b62af5359d80169 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - arch: x86_64 - platform: linux - license: MIT - license_family: MIT - size: 891272 - timestamp: 1737016632446 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuv-1.50.0-h86ecc28_0.conda - sha256: 67914c7f171d343059144d804c2f17fcd621a94e45f179a0fd843b8c1618823e - md5: 915db044076cbbdffb425170deb4ce38 - depends: - - libgcc >=13 - arch: aarch64 - platform: linux - license: MIT - license_family: MIT - size: 621056 - timestamp: 1737016626950 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libuv-1.50.0-h5505292_0.conda - sha256: d13fb49d4c8262bf2c44ffb2c77bb2b5d0f85fc6de76bdb75208efeccb29fce6 - md5: 20717343fb30798ab7c23c2e92b748c1 - depends: - - __osx >=11.0 - arch: arm64 - platform: osx - license: MIT - license_family: MIT - size: 418890 - timestamp: 1737016751326 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.5.0-h851e524_0.conda - sha256: c45283fd3e90df5f0bd3dbcd31f59cdd2b001d424cf30a07223655413b158eaf - md5: 63f790534398730f59e1b899c3644d4a - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - constrains: - - libwebp 1.5.0 - arch: x86_64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 429973 - timestamp: 1734777489810 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libwebp-base-1.5.0-h0886dbf_0.conda - sha256: b3d881a0ae08bb07fff7fa8ead506c8d2e0388733182fe4f216f3ec5d61ffcf0 - md5: 95ef4a689b8cc1b7e18b53784d88f96b - depends: - - libgcc >=13 - constrains: - - libwebp 1.5.0 - arch: aarch64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 362623 - timestamp: 1734779054659 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.5.0-h2471fea_0.conda - sha256: f8bdb876b4bc8cb5df47c28af29188de8911c3fea4b799a33743500149de3f4a - md5: 569466afeb84f90d5bb88c11cc23d746 - depends: - - __osx >=11.0 - constrains: - - libwebp 1.5.0 - arch: arm64 - platform: osx - license: BSD-3-Clause - license_family: BSD - size: 290013 - timestamp: 1734777593617 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda - sha256: 666c0c431b23c6cec6e492840b176dde533d48b7e6fb8883f5071223433776aa - md5: 92ed62436b625154323d40d5f2f11dd7 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - pthread-stubs - - xorg-libxau >=1.0.11,<2.0a0 - - xorg-libxdmcp - arch: x86_64 - platform: linux - license: MIT - license_family: MIT - size: 395888 - timestamp: 1727278577118 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcb-1.17.0-h262b8f6_0.conda - sha256: 461cab3d5650ac6db73a367de5c8eca50363966e862dcf60181d693236b1ae7b - md5: cd14ee5cca2464a425b1dbfc24d90db2 - depends: - - libgcc >=13 - - pthread-stubs - - xorg-libxau >=1.0.11,<2.0a0 - - xorg-libxdmcp - arch: aarch64 - platform: linux - license: MIT - license_family: MIT - size: 397493 - timestamp: 1727280745441 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxcb-1.17.0-hdb1d25a_0.conda - sha256: bd3816218924b1e43b275863e21a3e13a5db4a6da74cca8e60bc3c213eb62f71 - md5: af523aae2eca6dfa1c8eec693f5b9a79 - depends: - - __osx >=11.0 - - pthread-stubs - - xorg-libxau >=1.0.11,<2.0a0 - - xorg-libxdmcp - arch: arm64 - platform: osx - license: MIT - license_family: MIT - size: 323658 - timestamp: 1727278733917 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - sha256: 6ae68e0b86423ef188196fff6207ed0c8195dd84273cb5623b85aa08033a410c - md5: 5aa797f8787fe7a17d1b0821485b5adc - depends: - - libgcc-ng >=12 - arch: x86_64 - platform: linux - license: LGPL-2.1-or-later - size: 100393 - timestamp: 1702724383534 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda - sha256: 6b46c397644091b8a26a3048636d10b989b1bf266d4be5e9474bf763f828f41f - md5: b4df5d7d4b63579d081fd3a4cf99740e - depends: - - libgcc-ng >=12 - arch: aarch64 - platform: linux - license: LGPL-2.1-or-later - size: 114269 - timestamp: 1702724369203 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.5-h0d44e9d_1.conda - sha256: 306e18aa647d8208ad2cd0e62d84933222b2fbe93d2d53cd5283d2256b1d54de - md5: f5b05674697ae7d2c5932766695945e1 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libiconv >=1.17,<2.0a0 - - liblzma >=5.6.3,<6.0a0 - - libzlib >=1.3.1,<2.0a0 - constrains: - - icu <0.0a0 - arch: x86_64 - platform: linux - license: MIT - license_family: MIT - size: 689993 - timestamp: 1733443678322 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.5-h2e0c361_1.conda - sha256: dc0e86d35a836af6e99d18f50c6551fc64c53ed3a3da5a9fea90e78763cf14b4 - md5: 63410f85031930cde371dfe0ee89109a - depends: - - icu >=75.1,<76.0a0 - - libgcc >=13 - - libiconv >=1.17,<2.0a0 - - liblzma >=5.6.3,<6.0a0 - - libzlib >=1.3.1,<2.0a0 - arch: aarch64 - platform: linux - license: MIT - license_family: MIT - size: 732155 - timestamp: 1733443825814 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.5-h178c5d8_1.conda - sha256: d7af3f25a4cece170502acd38f2dafbea4521f373f46dcb28a37fbe6ac2da544 - md5: 3dc3cff0eca1640a6acbbfab2f78139e - depends: - - __osx >=11.0 - - icu >=75.1,<76.0a0 - - libiconv >=1.17,<2.0a0 - - liblzma >=5.6.3,<6.0a0 - - libzlib >=1.3.1,<2.0a0 - arch: arm64 - platform: osx - license: MIT - license_family: MIT - size: 582898 - timestamp: 1733443841584 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - sha256: d4bfe88d7cb447768e31650f06257995601f89076080e76df55e3112d4e47dc4 - md5: edb0dca6bc32e4f4789199455a1dbeb8 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - constrains: - - zlib 1.3.1 *_2 - arch: x86_64 - platform: linux - license: Zlib - license_family: Other - size: 60963 - timestamp: 1727963148474 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - sha256: 5a2c1eeef69342e88a98d1d95bff1603727ab1ff4ee0e421522acd8813439b84 - md5: 08aad7cbe9f5a6b460d0976076b6ae64 - depends: - - libgcc >=13 - constrains: - - zlib 1.3.1 *_2 - arch: aarch64 - platform: linux - license: Zlib - license_family: Other - size: 66657 - timestamp: 1727963199518 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - sha256: ce34669eadaba351cd54910743e6a2261b67009624dbc7daeeafdef93616711b - md5: 369964e85dc26bfe78f41399b366c435 - depends: - - __osx >=11.0 - constrains: - - zlib 1.3.1 *_2 - arch: arm64 - platform: osx - license: Zlib - license_family: Other - size: 46438 - timestamp: 1727963202283 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda - sha256: b92a669f2059874ebdcb69041b6c243d68ffc3fb356ac1339cec44aeb27245d7 - md5: c4d54bfd3817313ce758aa76283b118d - depends: - - __osx >=11.0 - constrains: - - openmp 19.1.7|19.1.7.* - arch: arm64 - platform: osx - license: Apache-2.0 WITH LLVM-exception - license_family: APACHE - size: 280830 - timestamp: 1736986295869 -- conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.10.0-h5888daf_1.conda - sha256: 47326f811392a5fd3055f0f773036c392d26fdb32e4d8e7a8197eed951489346 - md5: 9de5350a85c4a20c685259b889aa6393 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libstdcxx >=13 - arch: x86_64 - platform: linux - license: BSD-2-Clause - license_family: BSD - size: 167055 - timestamp: 1733741040117 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.10.0-h5ad3122_1.conda - sha256: 67e55058d275beea76c1882399640c37b5be8be4eb39354c94b610928e9a0573 - md5: 6654e411da94011e8fbe004eacb8fe11 - depends: - - libgcc >=13 - - libstdcxx >=13 - arch: aarch64 - platform: linux - license: BSD-2-Clause - license_family: BSD - size: 184953 - timestamp: 1733740984533 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.10.0-h286801f_1.conda - sha256: 94d3e2a485dab8bdfdd4837880bde3dd0d701e2b97d6134b8806b7c8e69c8652 - md5: 01511afc6cc1909c5303cf31be17b44f - depends: - - __osx >=11.0 - - libcxx >=18 - arch: arm64 - platform: osx - license: BSD-2-Clause - license_family: BSD - size: 148824 - timestamp: 1733741047892 -- conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_1.conda - sha256: 0fbacdfb31e55964152b24d5567e9a9996e1e7902fb08eb7d91b5fd6ce60803a - md5: fee3164ac23dfca50cfcc8b85ddefb81 - depends: - - mdurl >=0.1,<1 - - python >=3.9 - license: MIT - license_family: MIT - size: 64430 - timestamp: 1733250550053 -- conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_1.conda - sha256: 4a6bf68d2a2b669fecc9a4a009abd1cf8e72c2289522ff00d81b5a6e51ae78f5 - md5: eb227c3e0bf58f5bd69c0532b157975b - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - constrains: - - jinja2 >=3.0.0 - arch: x86_64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 24604 - timestamp: 1733219911494 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.2-py312h74ce7d3_1.conda - sha256: 1d500158262f30b9c23e37d1c861fe76e127a3926d69b3b38c25d20d3faa6f9f - md5: bc8607ab678073a0441808a31465f4fb - depends: - - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - constrains: - - jinja2 >=3.0.0 - arch: aarch64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 25079 - timestamp: 1733220639175 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312h998013c_1.conda - sha256: 4aa997b244014d3707eeef54ab0ee497d12c0d0d184018960cce096169758283 - md5: 46e547061080fddf9cf95a0327e8aba6 - depends: - - __osx >=11.0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - constrains: - - jinja2 >=3.0.0 - arch: arm64 - platform: osx - license: BSD-3-Clause - license_family: BSD - size: 24048 - timestamp: 1733219945697 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020605-release.conda - noarch: python - sha256: f33974d10b1d4e642f287392b461a9437bffa776547f3537116d8018caf3da7c - md5: 61f314b8a3d2ddaa878b1056e09e48eb - depends: - - max-core ==25.1.0.dev2025020605 release - - max-python >=25.1.0.dev2025020605,<26.0a0 - - mojo-jupyter ==25.1.0.dev2025020605 release - - mblack ==25.1.0.dev2025020605 release - license: LicenseRef-Modular-Proprietary - size: 9922 - timestamp: 1738819257916 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025020605-release.conda - sha256: f4f507695eebb8fbbd6107922b4a2d211ab622983f34a24fc8036faf2a7887e3 - md5: 3d4f12391220243dcfc810b5352b2a37 - depends: - - mblack ==25.1.0.dev2025020605 release - license: LicenseRef-Modular-Proprietary - size: 244769750 - timestamp: 1738819214550 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025020605-release.conda - sha256: e2a216b17d89af7cb2aa1a77a7b8416f04724fe0adbf1d36637b36c632b3517a - md5: 8207a6065094dbb73c472a03ea6df87d - depends: - - mblack ==25.1.0.dev2025020605 release - license: LicenseRef-Modular-Proprietary - size: 247282125 - timestamp: 1738819257916 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025020605-release.conda - sha256: 6bf41ea344e035b21701a362dd22265eeaa72c08687287b7c13a664b163d893d - md5: c34a8e1ead4712284ec549d122aa5f9c - depends: - - mblack ==25.1.0.dev2025020605 release - license: LicenseRef-Modular-Proprietary - size: 209659254 - timestamp: 1738820968072 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025020605-release.conda - noarch: python - sha256: d8a81b52c2a513d083e81f2217e98409a1a0d885a8c446bf4a5852f6c8612725 - md5: b1adba04b753ac70558cedaee35fe306 - depends: - - max-core ==25.1.0.dev2025020605 release - - python - - fastapi - - httpx - - huggingface_hub - - numpy >=1.18,<2.0 - - opentelemetry-api - - opentelemetry-exporter-otlp-proto-http >=1.27.0 - - opentelemetry-exporter-prometheus >=0.48b0 - - opentelemetry-sdk >=1.27.0 - - pillow - - pydantic-settings >=2.4.0,<3 - - pydantic >=2.4.0,<3 - - pyinstrument - - python-json-logger - - sse-starlette >=2.1.3,<3 - - transformers - - typing_extensions - - uvicorn - license: LicenseRef-Modular-Proprietary - size: 120666001 - timestamp: 1738819214550 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025020605-release.conda - noarch: python - sha256: 505eee35cbd7705c48c9d561cb6f38479fb2f3c7d893c51d930c9b4e16da7104 - md5: 9c5aaecd6d6500c081363552c952c213 - depends: - - max-core ==25.1.0.dev2025020605 release - - python - - fastapi - - httpx - - huggingface_hub - - numpy >=1.18,<2.0 - - opentelemetry-api - - opentelemetry-exporter-otlp-proto-http >=1.27.0 - - opentelemetry-exporter-prometheus >=0.48b0 - - opentelemetry-sdk >=1.27.0 - - pillow - - pydantic-settings >=2.4.0,<3 - - pydantic >=2.4.0,<3 - - pyinstrument - - python-json-logger - - sse-starlette >=2.1.3,<3 - - transformers - - typing_extensions - - uvicorn - license: LicenseRef-Modular-Proprietary - size: 123043775 - timestamp: 1738819257916 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025020605-release.conda - noarch: python - sha256: b1d2614caf1da1bca20540127b0f71b6357f75b155eb93bac4fcaa10b5737f7e - md5: be243c36de2750e5a51af50a571e0e98 - depends: - - max-core ==25.1.0.dev2025020605 release - - python - - fastapi - - httpx - - huggingface_hub - - numpy >=1.18,<2.0 - - opentelemetry-api - - opentelemetry-exporter-otlp-proto-http >=1.27.0 - - opentelemetry-exporter-prometheus >=0.48b0 - - opentelemetry-sdk >=1.27.0 - - pillow - - pydantic-settings >=2.4.0,<3 - - pydantic >=2.4.0,<3 - - pyinstrument - - python-json-logger - - sse-starlette >=2.1.3,<3 - - transformers - - typing_extensions - - uvicorn - license: LicenseRef-Modular-Proprietary - size: 108461286 - timestamp: 1738820968072 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020605-release.conda - noarch: python - sha256: 8cbc7067cdf1cce1a11e2b385168697793c4090e37fcee65c19b0d3782320ce8 - md5: b8dc96fb459fbeb13a3dcee463b17613 - depends: - - python >=3.9,<3.13 - - click >=8.0.0 - - mypy_extensions >=0.4.3 - - packaging >=22.0 - - pathspec >=0.9.0 - - platformdirs >=2 - - typing_extensions >=v4.12.2 - - python - license: MIT - size: 130824 - timestamp: 1738819257916 -- conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda - sha256: 78c1bbe1723449c52b7a9df1af2ee5f005209f67e40b6e1d3c7619127c43b1c7 - md5: 592132998493b3ff25fd7479396e8351 - depends: - - python >=3.9 - license: MIT - license_family: MIT - size: 14465 - timestamp: 1733255681319 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020605-release.conda - noarch: python - sha256: a98de01d436333c23597e626195c5d49272c1c5d3359889979bafb8f19d4f3bf - md5: f68f7d08fc12083075182da8482fcfa9 - depends: - - max-core ==25.1.0.dev2025020605 release - - python >=3.9,<3.13 - - jupyter_client >=8.6.2,<8.7 - - python - license: LicenseRef-Modular-Proprietary - size: 22925 - timestamp: 1738819257916 -- conda: 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 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 61507 - timestamp: 1733913288935 -- conda: 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 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 63077 - timestamp: 1733913233032 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/multidict-6.1.0-py312hdb8e49c_1.conda - sha256: 482fd09fb798090dc8cce2285fa69f43b1459099122eac2fb112d9b922b9f916 - md5: 0048335516fed938e4dd2c457b4c5b9b - depends: - - __osx >=11.0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: APACHE - size: 55968 - timestamp: 1729065664275 -- conda: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.15-py312h98912ed_1.conda - sha256: bb612a921fafda6375a2204ffebd8811db8dd3b8f25ac9886cc9bcbff7e3664e - md5: 5a64b9f44790d9a187a85366dd0ffa8d - depends: - - dill >=0.3.6 - - libgcc-ng >=12 - - python >=3.12.0rc3,<3.13.0a0 - - python_abi 3.12.* *_cp312 - arch: x86_64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 335666 - timestamp: 1695459025249 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.15-py312hdd3e373_1.conda - sha256: c53362cdf346f314e111faddc53061e3fd2ece0ba68ca303f5dd109976df158f - md5: 173a1692d2b3ddc265dc6afd21a869b3 - depends: - - dill >=0.3.6 - - libgcc-ng >=12 - - python >=3.12.0rc3,<3.13.0a0 - - python >=3.12.0rc3,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - arch: aarch64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 336110 - timestamp: 1695459137796 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/multiprocess-0.70.15-py312h02f2b3b_1.conda - sha256: 8041371e3ec3fbc2ca13c71b0180672896e6382e62892d9f6b11a4c5dd675951 - md5: 910ef2223c71902175418d9163152788 - depends: - - dill >=0.3.6 - - python >=3.12.0rc3,<3.13.0a0 - - python >=3.12.0rc3,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - arch: arm64 - platform: osx - license: BSD-3-Clause - license_family: BSD - size: 335147 - timestamp: 1695459275360 -- conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - sha256: 1895f47b7d68581a6facde5cb13ab8c2764c2e53a76bd746f8f98910dc4e08fe - md5: 29097e7ea634a45cc5386b95cac6568f - depends: - - python >=3.9 - license: MIT - license_family: MIT - size: 10854 - timestamp: 1733230986902 -- conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda - sha256: 3fde293232fa3fca98635e1167de6b7c7fda83caf24b9d6c91ec9eefb4f4d586 - md5: 47e340acb35de30501a76c7c799c41d7 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - arch: x86_64 - platform: linux - license: X11 AND BSD-3-Clause - size: 891641 - timestamp: 1738195959188 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-ha32ae93_3.conda - sha256: 91cfb655a68b0353b2833521dc919188db3d8a7f4c64bea2c6a7557b24747468 - md5: 182afabe009dc78d8b73100255ee6868 - depends: - - libgcc >=13 - arch: aarch64 - platform: linux - license: X11 AND BSD-3-Clause - size: 926034 - timestamp: 1738196018799 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda - sha256: 2827ada40e8d9ca69a153a45f7fd14f32b2ead7045d3bbb5d10964898fe65733 - md5: 068d497125e4bf8a66bf707254fff5ae - depends: - - __osx >=11.0 - arch: arm64 - platform: osx - license: X11 AND BSD-3-Clause - size: 797030 - timestamp: 1738196177597 -- conda: https://conda.anaconda.org/conda-forge/linux-64/nlohmann_json-3.11.3-he02047a_1.conda - sha256: ce4bcced4f8eea71b7cac8bc3daac097abf7a5792f278cd811dedada199500c1 - md5: e46f7ac4917215b49df2ea09a694a3fa - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc-ng >=12 - - libstdcxx-ng >=12 - arch: x86_64 - platform: linux - license: MIT - license_family: MIT - size: 122743 - timestamp: 1723652407663 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/nlohmann_json-3.11.3-h0a1ffab_1.conda - sha256: c90b1f11fc337d90a9e4c5aeeacac1418c5ba6a195097086566d38bb2ecf0f24 - md5: f2bd10ff23ab5c87327439c4499b3f3e - depends: - - libgcc-ng >=12 - - libstdcxx-ng >=12 - arch: aarch64 - platform: linux - license: MIT - license_family: MIT - size: 122755 - timestamp: 1723652622631 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/nlohmann_json-3.11.3-h00cdb27_1.conda - sha256: 3f4e6a4fa074bb297855f8111ab974dab6d9f98b7d4317d4dd46f8687ee2363b - md5: d2dee849c806430eee64d3acc98ce090 - depends: - - __osx >=11.0 - - libcxx >=16 - arch: arm64 - platform: osx - license: MIT - license_family: MIT - size: 123250 - timestamp: 1723652704997 -- conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda - sha256: fe3459c75cf84dcef6ef14efcc4adb0ade66038ddd27cadb894f34f4797687d8 - md5: d8285bea2a350f63fab23bf460221f3f - depends: - - libblas >=3.9.0,<4.0a0 - - libcblas >=3.9.0,<4.0a0 - - libgcc-ng >=12 - - liblapack >=3.9.0,<4.0a0 - - libstdcxx-ng >=12 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - constrains: - - numpy-base <0a0 - arch: x86_64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 7484186 - timestamp: 1707225809722 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda - sha256: 23767677a7790bee5457d5e75ebd508b9a31c5354216f4310dd1acfca3f7a6f9 - md5: 9cebf5a06cb87d4569cd68df887af476 - depends: - - libblas >=3.9.0,<4.0a0 - - libcblas >=3.9.0,<4.0a0 - - libgcc-ng >=12 - - liblapack >=3.9.0,<4.0a0 - - libstdcxx-ng >=12 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - constrains: - - numpy-base <0a0 - arch: aarch64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 6614296 - timestamp: 1707225994762 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda - sha256: c8841d6d6f61fd70ca80682efbab6bdb8606dc77c68d8acabfbd7c222054f518 - md5: d83fc83d589e2625a3451c9a7e21047c - depends: - - libblas >=3.9.0,<4.0a0 - - libcblas >=3.9.0,<4.0a0 - - libcxx >=16 - - liblapack >=3.9.0,<4.0a0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - constrains: - - numpy-base <0a0 - arch: arm64 - platform: osx - license: BSD-3-Clause - license_family: BSD - size: 6073136 - timestamp: 1707226249608 -- conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.3-h5fbd93e_0.conda - sha256: 5bee706ea5ba453ed7fd9da7da8380dd88b865c8d30b5aaec14d2b6dd32dbc39 - md5: 9e5816bc95d285c115a3ebc2f8563564 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libpng >=1.6.44,<1.7.0a0 - - libstdcxx >=13 - - libtiff >=4.7.0,<4.8.0a0 - - libzlib >=1.3.1,<2.0a0 - arch: x86_64 - platform: linux - license: BSD-2-Clause - license_family: BSD - size: 342988 - timestamp: 1733816638720 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openjpeg-2.5.3-h3f56577_0.conda - sha256: 92d310033e20538e896f4e4b1ea4205eb6604eee7c5c651c4965a0d8d3ca0f1d - md5: 04231368e4af50d11184b50e14250993 - depends: - - libgcc >=13 - - libpng >=1.6.44,<1.7.0a0 - - libstdcxx >=13 - - libtiff >=4.7.0,<4.8.0a0 - - libzlib >=1.3.1,<2.0a0 - arch: aarch64 - platform: linux - license: BSD-2-Clause - license_family: BSD - size: 377796 - timestamp: 1733816683252 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/openjpeg-2.5.3-h8a3d83b_0.conda - sha256: 1d59bc72ca7faac06d349c1a280f5cfb8a57ee5896f1e24225a997189d7418c7 - md5: 4b71d78648dbcf68ce8bf22bb07ff838 - depends: - - __osx >=11.0 - - libcxx >=18 - - libpng >=1.6.44,<1.7.0a0 - - libtiff >=4.7.0,<4.8.0a0 - - libzlib >=1.3.1,<2.0a0 - arch: arm64 - platform: osx - license: BSD-2-Clause - license_family: BSD - size: 319362 - timestamp: 1733816781741 -- conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.0-h7b32b05_1.conda - sha256: f62f6bca4a33ca5109b6d571b052a394d836956d21b25b7ffd03376abf7a481f - md5: 4ce6875f75469b2757a65e10a5d05e31 - depends: - - __glibc >=2.17,<3.0.a0 - - ca-certificates - - libgcc >=13 - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 2937158 - timestamp: 1736086387286 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.0-hd08dc88_1.conda - sha256: 60d34454b861501d7355f25a7b39fdb5de8d56fca49b5bcbe8b8142b7d82dce4 - md5: e21c4767e783a58c373fdb99de6211bf - depends: - - ca-certificates - - libgcc >=13 - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 3469279 - timestamp: 1736088141230 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.0-h81ee809_1.conda - sha256: 97772762abc70b3a537683ca9fc3ff3d6099eb64e4aba3b9c99e6fce48422d21 - md5: 22f971393637480bda8c679f374d8861 - depends: - - __osx >=11.0 - - ca-certificates - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: Apache - size: 2936415 - timestamp: 1736086108693 -- conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.29.0-pyhd8ed1ab_1.conda - sha256: 296280c8ace35c0a1cf72bed1077f248b3af903c3bf92332f1783a207cb5abdb - md5: 307b05402c1a382f2f09426492dee8f8 - depends: - - deprecated >=1.2.6 - - importlib-metadata >=6.0,<=8.5.0 - - python >=3.9 - license: Apache-2.0 - license_family: APACHE - size: 44166 - timestamp: 1734132973331 -- conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.29.0-pyhd8ed1ab_0.conda - sha256: ae9776efe52564e0d6711cfcee7c54439273e57a3999f7f796f66e862f58aae9 - md5: 0c02e74d26bce3fec93b227cf7ea6e6b - depends: - - backoff >=1.10.0,<3.0.0 - - opentelemetry-proto 1.29.0 - - python >=3.9 - license: Apache-2.0 - license_family: APACHE - size: 18922 - timestamp: 1734310457116 -- conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.29.0-pyhd8ed1ab_1.conda - sha256: 5d61db9d5b4f91b3932f5f2348920d5b7fdaa09e52c8ea054cf7bf3f21677c9c - md5: 223f4e56a29601c887f0dc467034af5b - depends: - - deprecated >=1.2.6 - - googleapis-common-protos >=1.52,<2.dev0 - - opentelemetry-api >=1.15,<2.dev0 - - opentelemetry-exporter-otlp-proto-common 1.29.0 - - opentelemetry-proto 1.29.0 - - opentelemetry-sdk 1.29.0 - - python >=3.9 - - requests >=2.7,<3.dev0 - license: Apache-2.0 - license_family: APACHE - size: 17147 - timestamp: 1734345675510 -- conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-prometheus-1.12.0rc1-pyhd8ed1ab_0.conda - sha256: b8239230dbbdb491401e41b53bd9f21d60551cedef1a8d5807fca1bf9bdd331c - md5: 1ddc95052b31147d1e10d818cf519cf5 - depends: - - opentelemetry-api >=1.10.0 - - opentelemetry-sdk >=1.10.0 - - prometheus_client >=0.5.0,<1.0.0 - - python >=3.6 - license: Apache-2.0 - license_family: APACHE - size: 14721 - timestamp: 1695214221489 -- conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.29.0-pyhd8ed1ab_0.conda - sha256: 200a7cb8acc8a0ddd6ef55c5460cec871b6a265929b240a0296c0ccb9c8d9758 - md5: e2a6d2ad10b813c7fdc1c64aac376128 - depends: - - protobuf <6.0,>=5.0 - - python >=3.9 - license: Apache-2.0 - license_family: APACHE - size: 37235 - timestamp: 1734291034372 -- conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.29.0-pyhd8ed1ab_0.conda - sha256: 7b36629d8b8be8a019fcfd1518d7b7f862dd25de96f8adcadb93e4fd12cf9bd6 - md5: 2a8893f06e6ebda4bfa78875bc923ea4 - depends: - - opentelemetry-api 1.29.0 - - opentelemetry-semantic-conventions 0.50b0 - - python >=3.9 - - typing-extensions >=3.7.4 - - typing_extensions >=3.7.4 - license: Apache-2.0 - license_family: APACHE - size: 77645 - timestamp: 1734297838999 -- conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.50b0-pyh3cfb1c2_0.conda - sha256: 6526e70368d5bf66ef0eaa51fb800d53782dde71a24bd38f40139919a6f784dc - md5: f7111fa4188d646c8108e232d024cb99 - depends: - - deprecated >=1.2.6 - - opentelemetry-api 1.29.0 - - python >=3.9 - license: Apache-2.0 - license_family: APACHE - size: 86084 - timestamp: 1734208980168 -- conda: https://conda.anaconda.org/conda-forge/linux-64/orc-2.0.3-h12ee42a_2.conda - sha256: dff5cc8023905782c86b3459055f26d4b97890e403b0698477c9fed15d8669cc - md5: 4f6f9f3f80354ad185e276c120eac3f0 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libprotobuf >=5.28.3,<5.28.4.0a0 - - libstdcxx >=13 - - libzlib >=1.3.1,<2.0a0 - - lz4-c >=1.10.0,<1.11.0a0 - - snappy >=1.2.1,<1.3.0a0 - - tzdata - - zstd >=1.5.6,<1.6.0a0 - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 1188881 - timestamp: 1735630209320 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/orc-2.0.3-hdd485aa_2.conda - sha256: b6c67542352a86cdf143c3066d5cda855b74454a156eedcd8958b494c6a32a83 - md5: d19f01b42e5d6a2908b65df435aff42f - depends: - - libgcc >=13 - - libprotobuf >=5.28.3,<5.28.4.0a0 - - libstdcxx >=13 - - libzlib >=1.3.1,<2.0a0 - - lz4-c >=1.10.0,<1.11.0a0 - - snappy >=1.2.1,<1.3.0a0 - - tzdata - - zstd >=1.5.6,<1.6.0a0 - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 1167714 - timestamp: 1735630248837 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/orc-2.0.3-h0ff2369_2.conda - sha256: cca330695f3bdb8c0e46350c29cd4af3345865544e36f1d7c9ba9190ad22f5f4 - md5: 24b1897c0d24afbb70704ba998793b78 - depends: - - __osx >=11.0 - - libcxx >=18 - - libprotobuf >=5.28.3,<5.28.4.0a0 - - libzlib >=1.3.1,<2.0a0 - - lz4-c >=1.10.0,<1.11.0a0 - - snappy >=1.2.1,<1.3.0a0 - - tzdata - - zstd >=1.5.6,<1.6.0a0 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: Apache - size: 438520 - timestamp: 1735630624140 -- conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - sha256: da157b19bcd398b9804c5c52fc000fcb8ab0525bdb9c70f95beaa0bb42f85af1 - md5: 3bfed7e6228ebf2f7b9eaa47f1b4e2aa - depends: - - python >=3.8 - license: Apache-2.0 - license_family: APACHE - size: 60164 - timestamp: 1733203368787 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.3-py312hf9745cd_1.conda - sha256: ad275a83bfebfa8a8fee9b0569aaf6f513ada6a246b2f5d5b85903d8ca61887e - md5: 8bce4f6caaf8c5448c7ac86d87e26b4b - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libstdcxx >=13 - - numpy >=1.19,<3 - - numpy >=1.22.4 - - python >=3.12,<3.13.0a0 - - python-dateutil >=2.8.1 - - python-tzdata >=2022a - - python_abi 3.12.* *_cp312 - - pytz >=2020.1,<2024.2 - arch: x86_64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 15436913 - timestamp: 1726879054912 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pandas-2.2.3-py312ha2895bd_2.conda - sha256: a34b10077de97eea72c81cb96e3ddc7d48320c0fc7d9b28ba8d9d2bead1d8297 - md5: 39a91ac336d350513de6aad56da5a920 - depends: - - libgcc >=13 - - libstdcxx >=13 - - numpy >=1.19,<3 - - numpy >=1.22.4 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python-dateutil >=2.8.1 - - python-tzdata >=2022a - - python_abi 3.12.* *_cp312 - - pytz >=2020.1,<2024.2 - constrains: - - fsspec >=2022.11.0 - - s3fs >=2022.11.0 - - fastparquet >=2022.12.0 - - pyreadstat >=1.2.0 - - qtpy >=2.3.0 - - scipy >=1.10.0 - - beautifulsoup4 >=4.11.2 - - gcsfs >=2022.11.0 - - numexpr >=2.8.4 - - sqlalchemy >=2.0.0 - - pyxlsb >=1.0.10 - - numba >=0.56.4 - - lxml >=4.9.2 - - matplotlib >=3.6.3 - - psycopg2 >=2.9.6 - - tzdata >=2022.7 - - bottleneck >=1.3.6 - - xarray >=2022.12.0 - - xlsxwriter >=3.0.5 - - zstandard >=0.19.0 - - blosc >=1.21.3 - - pytables >=3.8.0 - - openpyxl >=3.1.0 - - pyqt5 >=5.15.8 - - tabulate >=0.9.0 - arch: aarch64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 15162992 - timestamp: 1736811533875 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.3-py312hcd31e36_1.conda - sha256: ff0cb54b5d058c7987b4a0984066e893642d1865a7bb695294b6172e2fcdc457 - md5: c68bfa69e6086c381c74e16fd72613a8 - depends: - - __osx >=11.0 - - libcxx >=17 - - numpy >=1.19,<3 - - numpy >=1.22.4 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python-dateutil >=2.8.1 - - python-tzdata >=2022a - - python_abi 3.12.* *_cp312 - - pytz >=2020.1,<2024.2 - arch: arm64 - platform: osx - license: BSD-3-Clause - license_family: BSD - size: 14470437 - timestamp: 1726878887799 -- conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda - sha256: 9f64009cdf5b8e529995f18e03665b03f5d07c0b17445b8badef45bde76249ee - md5: 617f15191456cc6a13db418a275435e5 - depends: - - python >=3.9 - license: MPL-2.0 - license_family: MOZILLA - size: 41075 - timestamp: 1733233471940 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-11.1.0-py312h80c1187_0.conda - sha256: 5c347962202b55ae4d8a463e0555c5c6ca33396266a08284bf1384399894e541 - md5: d3894405f05b2c0f351d5de3ae26fa9c - depends: - - __glibc >=2.17,<3.0.a0 - - freetype >=2.12.1,<3.0a0 - - lcms2 >=2.16,<3.0a0 - - libgcc >=13 - - libjpeg-turbo >=3.0.0,<4.0a0 - - libtiff >=4.7.0,<4.8.0a0 - - libwebp-base >=1.5.0,<2.0a0 - - libxcb >=1.17.0,<2.0a0 - - libzlib >=1.3.1,<2.0a0 - - openjpeg >=2.5.3,<3.0a0 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - - tk >=8.6.13,<8.7.0a0 - arch: x86_64 - platform: linux - license: HPND - size: 42749785 - timestamp: 1735929845390 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pillow-11.1.0-py312h719f0cf_0.conda - sha256: 7559556ffc44bda777f85c2e5acd6b5756fa5822c0271b329b7b9a3c6bb20349 - md5: 77e0ec0a6fc847d317f204aa15b59f6b - depends: - - freetype >=2.12.1,<3.0a0 - - lcms2 >=2.16,<3.0a0 - - libgcc >=13 - - libjpeg-turbo >=3.0.0,<4.0a0 - - libtiff >=4.7.0,<4.8.0a0 - - libwebp-base >=1.5.0,<2.0a0 - - libxcb >=1.17.0,<2.0a0 - - libzlib >=1.3.1,<2.0a0 - - openjpeg >=2.5.3,<3.0a0 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - - tk >=8.6.13,<8.7.0a0 - arch: aarch64 - platform: linux - license: HPND - size: 41362848 - timestamp: 1735932311857 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-11.1.0-py312h50aef2c_0.conda - sha256: b29b7c915053e06a7a5b4118760202c572c9c35d23bd6ce8e73270b6a50e50ee - md5: 94d6ba8cd468668a9fb04193b0f4b36e - depends: - - __osx >=11.0 - - freetype >=2.12.1,<3.0a0 - - lcms2 >=2.16,<3.0a0 - - libjpeg-turbo >=3.0.0,<4.0a0 - - libtiff >=4.7.0,<4.8.0a0 - - libwebp-base >=1.5.0,<2.0a0 - - libxcb >=1.17.0,<2.0a0 - - libzlib >=1.3.1,<2.0a0 - - openjpeg >=2.5.3,<3.0a0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - - tk >=8.6.13,<8.7.0a0 - arch: arm64 - platform: osx - license: HPND - size: 42852329 - timestamp: 1735930118976 -- conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda - sha256: bb50f6499e8bc1d1a26f17716c97984671121608dc0c3ecd34858112bce59a27 - md5: 577852c7e53901ddccc7e6a9959ddebe - depends: - - python >=3.9 - license: MIT - license_family: MIT - size: 20448 - timestamp: 1733232756001 -- conda: https://conda.anaconda.org/conda-forge/linux-64/prometheus-cpp-1.3.0-ha5d0236_0.conda - sha256: 013669433eb447548f21c3c6b16b2ed64356f726b5f77c1b39d5ba17a8a4b8bc - md5: a83f6a2fdc079e643237887a37460668 - depends: - - __glibc >=2.17,<3.0.a0 - - libcurl >=8.10.1,<9.0a0 - - libgcc >=13 - - libstdcxx >=13 - - libzlib >=1.3.1,<2.0a0 - - zlib - arch: x86_64 - platform: linux - license: MIT - license_family: MIT - size: 199544 - timestamp: 1730769112346 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/prometheus-cpp-1.3.0-h7938499_0.conda - sha256: 9350d7bbc3982a732ff13a7fd17b585509e3b7d0191ac7b810cc3224868e3648 - md5: 10f4301290e51c49979ff98d1bdf2556 - depends: - - libcurl >=8.10.1,<9.0a0 - - libgcc >=13 - - libstdcxx >=13 - - libzlib >=1.3.1,<2.0a0 - - zlib - arch: aarch64 - platform: linux - license: MIT - license_family: MIT - size: 211335 - timestamp: 1730769181127 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/prometheus-cpp-1.3.0-h0967b3e_0.conda - sha256: 851a77ae1a8e90db9b9f3c4466abea7afb52713c3d98ceb0d37ba6ff27df2eff - md5: 7172339b49c94275ba42fec3eaeda34f - depends: - - __osx >=11.0 - - libcurl >=8.10.1,<9.0a0 - - libcxx >=18 - - libzlib >=1.3.1,<2.0a0 - - zlib - arch: arm64 - platform: osx - license: MIT - license_family: MIT - size: 173220 - timestamp: 1730769371051 -- conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda - sha256: bc8f00d5155deb7b47702cb8370f233935704100dbc23e30747c161d1b6cf3ab - md5: 3e01e386307acc60b2f89af0b2e161aa - depends: - - python >=3.9 - license: Apache-2.0 - license_family: Apache - size: 49002 - timestamp: 1733327434163 -- conda: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.1-py312h178313f_1.conda - sha256: 6d5ff6490c53e14591b70924711fe7bd70eb7fbeeeb1cbd9ed2f6d794ec8c4eb - md5: 349635694b4df27336bc15a49e9220e9 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 52947 - timestamp: 1737635699390 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.2.1-py312hcc812fe_1.conda - sha256: d759d8ab9c060b42cabf6312b9a04aa590daecabf1dd4e35731f4bc1b5c388bb - md5: 533b07e9fd835938f465225613825eee - depends: - - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 52776 - timestamp: 1737635802135 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.1-py312h998013c_1.conda - sha256: 96145760baad111d7ae4213ea8f8cc035cf33b001f5ff37d92268e4d28b0941d - md5: 83678928c58c9ae76778a435b6c7a94a - depends: - - __osx >=11.0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: APACHE - size: 50942 - timestamp: 1737635896600 -- conda: https://conda.anaconda.org/conda-forge/linux-64/protobuf-5.28.3-py312h2ec8cdc_0.conda - sha256: acb2e0ee948e3941f8ed191cb77f654e06538638aed8ccd71cbc78a15242ebbb - md5: 9d7e427d159c1b2d516cc047ff177c48 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libstdcxx >=13 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - constrains: - - libprotobuf 5.28.3 - arch: x86_64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 464794 - timestamp: 1731366525051 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/protobuf-5.28.3-py312h6f74592_0.conda - sha256: 9c575d5035c7ecb114ab9e17906c0a54087d9598dd6a2104c02fe33f0a29dd46 - md5: 06513608c94fb1c1b17136ace77063a9 - depends: - - libgcc >=13 - - libstdcxx >=13 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - constrains: - - libprotobuf 5.28.3 - arch: aarch64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 473242 - timestamp: 1731366577844 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/protobuf-5.28.3-py312hd8f9ff3_0.conda - sha256: 9d572a97419bdace14d7c7cc8cc8c4bf2dcb22b56965dac87a27fbdb5061b926 - md5: 5afbe52a59f04dd1fe566d0d17590d7e - depends: - - __osx >=11.0 - - libcxx >=18 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - constrains: - - libprotobuf 5.28.3 - arch: arm64 - platform: osx - license: BSD-3-Clause - license_family: BSD - size: 448803 - timestamp: 1731367010746 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda - sha256: 9c88f8c64590e9567c6c80823f0328e58d3b1efb0e1c539c0315ceca764e0973 - md5: b3c17d95b5a10c6e64a21fa17573e70e - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - arch: x86_64 - platform: linux - license: MIT - license_family: MIT - size: 8252 - timestamp: 1726802366959 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pthread-stubs-0.4-h86ecc28_1002.conda - sha256: 977dfb0cb3935d748521dd80262fe7169ab82920afd38ed14b7fee2ea5ec01ba - md5: bb5a90c93e3bac3d5690acf76b4a6386 - depends: - - libgcc >=13 - arch: aarch64 - platform: linux - license: MIT - license_family: MIT - size: 8342 - timestamp: 1726803319942 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pthread-stubs-0.4-hd74edd7_1002.conda - sha256: 8ed65e17fbb0ca944bfb8093b60086e3f9dd678c3448b5de212017394c247ee3 - md5: 415816daf82e0b23a736a069a75e9da7 - depends: - - __osx >=11.0 - arch: arm64 - platform: osx - license: MIT - license_family: MIT - size: 8381 - timestamp: 1726802424786 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-19.0.0-py312h7900ff3_0.conda - sha256: 7d98e626ec65b882341482ad15ecb7a670ee41dbaf375aa660ba8b7d0a940504 - md5: 14f86e63b5c214dd9fb34e5472d4bafc - depends: - - libarrow-acero 19.0.0.* - - libarrow-dataset 19.0.0.* - - libarrow-substrait 19.0.0.* - - libparquet 19.0.0.* - - pyarrow-core 19.0.0 *_0_* - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 25289 - timestamp: 1737128438818 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-19.0.0-py312h8025657_0.conda - sha256: 3a73d3d15031586214381edf5410a6920c1f75f52a8d8b994722b106d9a50150 - md5: a86fa414c44b7e3ee054cc385c79a822 - depends: - - libarrow-acero 19.0.0.* - - libarrow-dataset 19.0.0.* - - libarrow-substrait 19.0.0.* - - libparquet 19.0.0.* - - pyarrow-core 19.0.0 *_0_* - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 25496 - timestamp: 1737129041038 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-19.0.0-py312h1f38498_0.conda - sha256: 9d693901833c2ff4e5d67e1f2f6df50f699e1cec2f580c26d42299654830855a - md5: bd5e025292ff1127aa1534b59e55c4d0 - depends: - - libarrow-acero 19.0.0.* - - libarrow-dataset 19.0.0.* - - libarrow-substrait 19.0.0.* - - libparquet 19.0.0.* - - pyarrow-core 19.0.0 *_0_* - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: APACHE - size: 25428 - timestamp: 1737128284082 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-19.0.0-py312h01725c0_0_cpu.conda - sha256: 81178d0de0ac851a0a78e09c81ad92274cf770a38b28acdf53a0cfb2122d15aa - md5: 7ab1143b9ac1af5cc4a630706f643627 - depends: - - __glibc >=2.17,<3.0.a0 - - libarrow 19.0.0.* *cpu - - libgcc >=13 - - libstdcxx >=13 - - libzlib >=1.3.1,<2.0a0 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - constrains: - - apache-arrow-proc =*=cpu - - numpy >=1.21,<3 - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 5230953 - timestamp: 1737128097002 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-19.0.0-py312h66f7834_0_cpu.conda - sha256: 17ff419abfe9596f77857dfa635538200427d87283c28e64920d10d6533ec30e - md5: ce51dbcfeae8709f0b94c78eabe7cf5e - depends: - - libarrow 19.0.0.* *cpu - - libgcc >=13 - - libstdcxx >=13 - - libzlib >=1.3.1,<2.0a0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - constrains: - - numpy >=1.21,<3 - - apache-arrow-proc =*=cpu - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 5023430 - timestamp: 1737627066264 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-19.0.0-py312hc40f475_0_cpu.conda - sha256: 6303fe1c3e6d36273b72f0eeb3f19897d2376d57fe8c757f55dcbfbaa5cd6840 - md5: df502157843a7b1d90af04803767be15 - depends: - - __osx >=11.0 - - libarrow 19.0.0.* *cpu - - libcxx >=18 - - libzlib >=1.3.1,<2.0a0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - constrains: - - apache-arrow-proc =*=cpu - - numpy >=1.21,<3 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: APACHE - size: 4393075 - timestamp: 1737128225546 -- conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - sha256: 79db7928d13fab2d892592223d7570f5061c192f27b9febd1a418427b719acc6 - md5: 12c566707c80111f9799308d9e265aef - depends: - - python >=3.9 - - python - license: BSD-3-Clause - license_family: BSD - size: 110100 - timestamp: 1733195786147 -- conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.6-pyh3cfb1c2_0.conda - sha256: 9a78801a28959edeb945e8270a4e666577b52fac0cf4e35f88cf122f73d83e75 - md5: c69f87041cf24dfc8cb6bf64ca7133c7 - depends: - - annotated-types >=0.6.0 - - pydantic-core 2.27.2 - - python >=3.9 - - typing-extensions >=4.6.1 - - typing_extensions >=4.12.2 - license: MIT - license_family: MIT - size: 296841 - timestamp: 1737761472006 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.27.2-py312h12e396e_0.conda - sha256: 81602a4592ad2ac1a1cb57372fd25214e63b1c477d5818b0c21cde0f1f85c001 - md5: bae01b2563030c085f5158c518b84e86 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - - typing-extensions >=4.6.0,!=4.7.0 - constrains: - - __glibc >=2.17 - arch: x86_64 - platform: linux - license: MIT - license_family: MIT - size: 1641402 - timestamp: 1734571789895 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pydantic-core-2.27.2-py312h8cbf658_0.conda - sha256: 623e0f3846f15d035ce7ab7ae445fc8d9e547b6684ab55858b6f44510d24b097 - md5: 9677f6ab4bf27ba3c2aee70d08c7b27c - depends: - - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - - typing-extensions >=4.6.0,!=4.7.0 - constrains: - - __glibc >=2.17 - arch: aarch64 - platform: linux - license: MIT - license_family: MIT - size: 1505076 - timestamp: 1734571966615 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.27.2-py312hcd83bfe_0.conda - sha256: cfa7201f890d5d08ce29ff70e65a96787d5793a1718776733666b44bbd4a1205 - md5: dcb307e02f17d38c6e1cbfbf8c602852 - depends: - - __osx >=11.0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - - typing-extensions >=4.6.0,!=4.7.0 - constrains: - - __osx >=11.0 - arch: arm64 - platform: osx - license: MIT - license_family: MIT - size: 1593461 - timestamp: 1734571986644 -- conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.7.1-pyh3cfb1c2_0.conda - sha256: 082fb1ec29917d2c9ed6a862cb8eb9beb88c208ea62c9fef1aeb5f4f3e0e0b06 - md5: d71d76b62bed332b037d7adfc0f3989a - depends: - - pydantic >=2.7.0 - - python >=3.9 - - python-dotenv >=0.21.0 - license: MIT - license_family: MIT - size: 31822 - timestamp: 1735650532951 -- conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda - sha256: 28a3e3161390a9d23bc02b4419448f8d27679d9e2c250e29849e37749c8de86b - md5: 232fb4577b6687b2d503ef8e254270c9 - depends: - - python >=3.9 - license: BSD-2-Clause - license_family: BSD - size: 888600 - timestamp: 1736243563082 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pyinstrument-5.0.1-py312h66e93f0_0.conda - sha256: 3f1c0bc95f2c46dcd107f44cf742ee1fa40ba22e244f01083654743bbbcf28f3 - md5: 9f1d7b421e4c8fd00009490613db64d4 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - arch: x86_64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 182333 - timestamp: 1737774425235 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyinstrument-5.0.1-py312hb2c0f52_0.conda - sha256: 16af5db4359078bcb526291855bf1075ab035a96fe4e8d5cc4b0b5c8cba89b9a - md5: 90f5e9e04b1ecf25ad3f28b606f63742 - depends: - - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - arch: aarch64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 183988 - timestamp: 1737774588265 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyinstrument-5.0.1-py312hea69d52_0.conda - sha256: 5e7de2f908af22bbd8cf3562ce5ebf65ad6c0d8e40038f90b56f4db750639ce2 - md5: 07b0eb9b6bd91dfa87f95032825690dc - depends: - - __osx >=11.0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - arch: arm64 - platform: osx - license: BSD-3-Clause - license_family: BSD - size: 182524 - timestamp: 1737774624030 -- conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - sha256: ba3b032fa52709ce0d9fd388f63d330a026754587a2f461117cac9ab73d8d0d8 - md5: 461219d1a5bd61342293efa2c0c90eac - depends: - - __unix - - python >=3.9 - license: BSD-3-Clause - license_family: BSD - size: 21085 - timestamp: 1733217331982 -- conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.8-h9e4cc4f_1_cpython.conda - build_number: 1 - sha256: 3f0e0518c992d8ccfe62b189125721309836fe48a010dc424240583e157f9ff0 - md5: 7fd2fd79436d9b473812f14e86746844 + license: 0BSD + size: 98945 + timestamp: 1738525462560 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda + sha256: 26d77a3bb4dceeedc2a41bd688564fe71bf2d149fdcf117049970bc02ff1add6 + md5: 30fd6e37fe21f86f4bd26d6ee73eeec7 depends: - - __glibc >=2.17,<3.0.a0 - - bzip2 >=1.0.8,<2.0a0 - - ld_impl_linux-64 >=2.36.1 - - libexpat >=2.6.4,<3.0a0 - - libffi >=3.4,<4.0a0 - - libgcc >=13 - - liblzma >=5.6.3,<6.0a0 - - libnsl >=2.0.1,<2.1.0a0 - - libsqlite >=3.47.0,<4.0a0 - - libuuid >=2.38.1,<3.0a0 - - libxcrypt >=4.4.36 - - libzlib >=1.3.1,<2.0a0 - - ncurses >=6.5,<7.0a0 - - openssl >=3.4.0,<4.0a0 - - readline >=8.2,<9.0a0 - - tk >=8.6.13,<8.7.0a0 - - tzdata - constrains: - - python_abi 3.12.* *_cp312 + - libgcc-ng >=12 arch: x86_64 platform: linux - license: Python-2.0 - size: 31565686 - timestamp: 1733410597922 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.8-h1683364_1_cpython.conda - build_number: 1 - sha256: 85573582d5b0f79923fed0a8365d3d74d21eee9f0a5fa1b9345f191e006363ab - md5: 09ec612ea05370989eaa3d81abf0f369 + license: LGPL-2.1-only + license_family: GPL + size: 33408 + timestamp: 1697359010159 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda + sha256: fd18c2b75d7411096428d36a70b36b1a17e31f7b8956b6905d145792d49e97f8 + md5: c14f32510f694e3185704d89967ec422 depends: - - bzip2 >=1.0.8,<2.0a0 - - ld_impl_linux-aarch64 >=2.36.1 - - libexpat >=2.6.4,<3.0a0 - - libffi >=3.4,<4.0a0 - - libgcc >=13 - - liblzma >=5.6.3,<6.0a0 - - libnsl >=2.0.1,<2.1.0a0 - - libsqlite >=3.47.0,<4.0a0 - - libuuid >=2.38.1,<3.0a0 - - libxcrypt >=4.4.36 - - libzlib >=1.3.1,<2.0a0 - - ncurses >=6.5,<7.0a0 - - openssl >=3.4.0,<4.0a0 - - readline >=8.2,<9.0a0 - - tk >=8.6.13,<8.7.0a0 - - tzdata - constrains: - - python_abi 3.12.* *_cp312 + - libgcc-ng >=12 arch: aarch64 platform: linux - license: Python-2.0 - size: 13760816 - timestamp: 1733407890896 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.8-hc22306f_1_cpython.conda - build_number: 1 - sha256: 7586a711b1b08a9df8864e26efdc06980bdfb0e18d5ac4651d0fee30a8d3e3a0 - md5: 54ca5b5d92ef3a3ba61e195ee882a518 - depends: - - __osx >=11.0 - - bzip2 >=1.0.8,<2.0a0 - - libexpat >=2.6.4,<3.0a0 - - libffi >=3.4,<4.0a0 - - liblzma >=5.6.3,<6.0a0 - - libsqlite >=3.47.0,<4.0a0 - - libzlib >=1.3.1,<2.0a0 - - ncurses >=6.5,<7.0a0 - - openssl >=3.4.0,<4.0a0 - - readline >=8.2,<9.0a0 - - tk >=8.6.13,<8.7.0a0 - - tzdata - constrains: - - python_abi 3.12.* *_cp312 - arch: arm64 - platform: osx - license: Python-2.0 - size: 12998673 - timestamp: 1733408900971 -- conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - sha256: a50052536f1ef8516ed11a844f9413661829aa083304dc624c5925298d078d79 - md5: 5ba79d7c71f03c678c8ead841f347d6e - depends: - - python >=3.9 - - six >=1.5 - license: Apache-2.0 - license_family: APACHE - size: 222505 - timestamp: 1733215763718 -- conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda - sha256: 99713f6b534fef94995c6c16fd21d59f3548784e9111775d692bdc7c44678f02 - md5: e5c6ed218664802d305e79cc2d4491de - depends: - - python >=3.9 - license: BSD-3-Clause - license_family: BSD - size: 24215 - timestamp: 1733243277223 -- conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - sha256: 4790787fe1f4e8da616edca4acf6a4f8ed4e7c6967aa31b920208fc8f95efcca - md5: a61bf9ec79426938ff785eb69dbb1960 - depends: - - python >=3.6 - license: BSD-2-Clause - license_family: BSD - size: 13383 - timestamp: 1677079727691 -- conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.20-pyhff2d567_0.conda - sha256: 1b03678d145b1675b757cba165a0d9803885807792f7eb4495e48a38858c3cca - md5: a28c984e0429aff3ab7386f7de56de6f - depends: - - python >=3.9 - license: Apache-2.0 - license_family: Apache - size: 27913 - timestamp: 1734420869885 -- conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.1-pyhd8ed1ab_0.conda - sha256: 1597d6055d34e709ab8915091973552a0b8764c8032ede07c4e99670da029629 - md5: 392c91c42edd569a7ec99ed8648f597a - depends: - - python >=3.9 - license: Apache-2.0 - license_family: APACHE - size: 143794 - timestamp: 1737541204030 -- conda: https://conda.anaconda.org/conda-forge/linux-64/python-xxhash-3.5.0-py312h66e93f0_1.conda - sha256: 20851b1e59fee127d49e01fc73195a88ab0779f103b7d6ffc90d11142a83678f - md5: 39aed2afe4d0cf76ab3d6b09eecdbea7 + license: LGPL-2.1-only + license_family: GPL + size: 34501 + timestamp: 1697358973269 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.28-pthreads_h94d23a6_1.conda + sha256: 99ba271d8a80a1af2723f2e124ffd91d850074c0389c067e6d96d72a2dbfeabe + md5: 62857b389e42b36b686331bec0922050 depends: - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - - xxhash >=0.8.2,<0.8.3.0a0 - arch: x86_64 - platform: linux - license: BSD-2-Clause - license_family: BSD - size: 23162 - timestamp: 1725272139519 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-xxhash-3.5.0-py312h52516f5_1.conda - sha256: 0fa5ba80073a43391ee90303814adbc9fd826175de1fdac273ba0e5b711aa255 - md5: 591c4ae6d8338dfd07b951e00433a405 - depends: - - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - - xxhash >=0.8.2,<0.8.3.0a0 - arch: aarch64 - platform: linux - license: BSD-2-Clause - license_family: BSD - size: 23589 - timestamp: 1725273317965 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-xxhash-3.5.0-py312h024a12e_1.conda - sha256: 28204ef48f028a4d872e22040da0dad7ebd703549b010a1bb511b6dd94cf466d - md5: 266fe1ae54a7bb17990206664d0f0ae4 - depends: - - __osx >=11.0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - - xxhash >=0.8.2,<0.8.3.0a0 - arch: arm64 - platform: osx - license: BSD-2-Clause - license_family: BSD - size: 21765 - timestamp: 1725272382968 -- conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda - build_number: 5 - sha256: d10e93d759931ffb6372b45d65ff34d95c6000c61a07e298d162a3bc2accebb0 - md5: 0424ae29b104430108f5218a66db7260 + - libgcc >=14 + - libgfortran + - libgfortran5 >=14.2.0 constrains: - - python 3.12.* *_cpython + - openblas >=0.3.28,<0.3.29.0a0 arch: x86_64 platform: linux license: BSD-3-Clause license_family: BSD - size: 6238 - timestamp: 1723823388266 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.12-5_cp312.conda - build_number: 5 - sha256: 5ccdad9981753cc4a2d126e356673a21c0cd5b34e209cb8d476a3947d4ad9b39 - md5: 62b20f305498284a07dc6c45fd0e5c87 + size: 5578513 + timestamp: 1730772671118 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.28-pthreads_h9d3fd7e_1.conda + sha256: 30623a40764e935aa77e0d4db54c1a1589189a9bf3a03fdb445505c1e319b5a6 + md5: e8dde93dd199da3c1f2c1fcfd0042cd4 + depends: + - libgcc >=14 + - libgfortran + - libgfortran5 >=14.2.0 constrains: - - python 3.12.* *_cpython + - openblas >=0.3.28,<0.3.29.0a0 arch: aarch64 platform: linux license: BSD-3-Clause license_family: BSD - size: 6329 - timestamp: 1723823366253 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-5_cp312.conda - build_number: 5 - sha256: 49d624e4b809c799d2bf257b22c23cf3fc4460f5570d9a58e7ad86350aeaa1f4 - md5: b76f9b1c862128e56ac7aa8cd2333de9 + size: 4793435 + timestamp: 1730773029647 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.28-openmp_hf332438_1.conda + sha256: 62bb669c37a845129096f73d446cdb6bb170e4927f2fea2b661329680dbbc373 + md5: 40803a48d947c8639da6704e9a44d3ce + depends: + - __osx >=11.0 + - libgfortran 5.* + - libgfortran5 >=13.2.0 + - llvm-openmp >=18.1.8 constrains: - - python 3.12.* *_cpython + - openblas >=0.3.28,<0.3.29.0a0 arch: arm64 platform: osx license: BSD-3-Clause license_family: BSD - size: 6278 - timestamp: 1723823099686 -- conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda - sha256: 1a7d6b233f7e6e3bbcbad054c8fd51e690a67b129a899a056a5e45dd9f00cb41 - md5: 3eeeeb9e4827ace8c0c1419c85d590ad - depends: - - python >=3.7 - license: MIT - license_family: MIT - size: 188538 - timestamp: 1706886944988 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py312h178313f_2.conda - sha256: 159cba13a93b3fe084a1eb9bda0a07afc9148147647f0d437c3c3da60980503b - md5: cf2485f39740de96e2a7f2bb18ed2fee - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - - yaml >=0.2.5,<0.3.0a0 - arch: x86_64 - platform: linux - license: MIT - license_family: MIT - size: 206903 - timestamp: 1737454910324 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyyaml-6.0.2-py312hcc812fe_2.conda - sha256: dc78e41d51300722ba35ac4a10d37339ceffbe22d7501c71dfd3f633a4f8e79a - md5: 4de4a5ff81c941674e08595244e7cd61 - depends: - - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - - yaml >=0.2.5,<0.3.0a0 - arch: aarch64 - platform: linux - license: MIT - license_family: MIT - size: 199172 - timestamp: 1737454840766 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py312h998013c_2.conda - sha256: ad225ad24bfd60f7719709791345042c3cb32da1692e62bd463b084cf140e00d - md5: 68149ed4d4e9e1c42d2ba1f27f08ca96 - depends: - - __osx >=11.0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - - yaml >=0.2.5,<0.3.0a0 - arch: arm64 - platform: osx - license: MIT - license_family: MIT - size: 192148 - timestamp: 1737454886351 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.1-py312hbf22597_0.conda - sha256: 90ec0da0317d3d76990a40c61e1709ef859dd3d8c63838bad2814f46a63c8a2e - md5: 7cec8d0dac15a2d9fea8e49879aa779d + size: 4165774 + timestamp: 1730772154295 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda + sha256: 51125ebb8b7152e4a4e69fd2398489c4ec8473195c27cde3cbdf1cb6d18c5493 + md5: d8703f1ffe5a06356f06467f1d0b9464 depends: - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 - libgcc >=13 - - libsodium >=1.0.20,<1.0.21.0a0 - libstdcxx >=13 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - - zeromq >=4.3.5,<4.4.0a0 + - libzlib >=1.3.1,<2.0a0 arch: x86_64 platform: linux - license: BSD-3-Clause - license_family: BSD - size: 382698 - timestamp: 1738271121975 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyzmq-26.2.1-py312h2427ae1_0.conda - sha256: 9558f9330093e5c21b7c04e2e212e19b9b88ad9c808315f12c0765b244018a09 - md5: 0520da8de6870d8ff63e818e927d1524 + license: BSD-3-Clause + license_family: BSD + size: 2960815 + timestamp: 1735577210663 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.3-h44a3b7b_1.conda + sha256: ecb69f2b1668e784b41ba667493be846662d5ef702bef64fb2e013bb1364cdc4 + md5: 68f807f7cc13951652bbe048253fd405 depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 - libgcc >=13 - - libsodium >=1.0.20,<1.0.21.0a0 - libstdcxx >=13 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - - zeromq >=4.3.5,<4.4.0a0 + - libzlib >=1.3.1,<2.0a0 arch: aarch64 platform: linux license: BSD-3-Clause license_family: BSD - size: 375156 - timestamp: 1738273130727 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.1-py312hf4875e0_0.conda - sha256: 70d398b334668dc597d33e27847ede1b0829a639b9c91ee845355e52c86c2293 - md5: bfbefdb140b546a80827ff7c9d5ac7b8 + size: 2788074 + timestamp: 1735576315676 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.3-h3bd63a1_1.conda + sha256: f58a16b13ad53346903c833e266f83c3d770a43a432659b98710aed85ca885e7 + md5: bdbfea4cf45ae36652c6bbcc2e7ebe91 depends: - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 - libcxx >=18 - - libsodium >=1.0.20,<1.0.21.0a0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - - zeromq >=4.3.5,<4.4.0a0 + - libzlib >=1.3.1,<2.0a0 arch: arm64 platform: osx license: BSD-3-Clause license_family: BSD - size: 364649 - timestamp: 1738271263898 -- conda: https://conda.anaconda.org/conda-forge/linux-64/re2-2024.07.02-h9925aae_2.conda - sha256: d213c44958d49ce7e0d4d5b81afec23640cce5016685dbb2d23571a99caa4474 - md5: e84ddf12bde691e8ec894b00ea829ddf + size: 2271580 + timestamp: 1735576361997 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsentencepiece-0.2.0-h8e10757_10.conda + sha256: dc399e0f04a09f8c1807c3b36e578eb81f81891c0ddf21de9c1fb9f048ce4031 + md5: 4f43dbcfacd3cc9a183dd3a48b94d3c0 depends: - - libre2-11 2024.07.02 hbbce691_2 + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 arch: x86_64 platform: linux - license: BSD-3-Clause - license_family: BSD - size: 26786 - timestamp: 1735541074034 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/re2-2024.07.02-haa97905_2.conda - sha256: 040848655df9119bae5a549fb5c8956a5537120859416c1d9d0712b7bac9f12e - md5: 1bf0135339b4a7419a198a795d2d4be0 + license: Apache-2.0 + license_family: Apache + size: 823649 + timestamp: 1735627841126 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsentencepiece-0.2.0-h6164ad9_10.conda + sha256: 57074803772f65d4075b7d6dc17ff5aa40ec3a30109fa4225ca16911504c4a8b + md5: a7a192edc9cfba26a27df3283203e6a1 depends: - - libre2-11 2024.07.02 h18dbdb1_2 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 arch: aarch64 platform: linux - license: BSD-3-Clause - license_family: BSD - size: 26830 - timestamp: 1735540999398 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/re2-2024.07.02-h6589ca4_2.conda - sha256: 4d3799c05f8f662922a0acd129d119774760a3281b883603678e128d1cb307fb - md5: 7a8b4ad8c58a3408ca89d78788c78178 + license: Apache-2.0 + license_family: Apache + size: 800865 + timestamp: 1735627982895 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsentencepiece-0.2.0-he13a0af_10.conda + sha256: 3347a8840d085ce1661928e736229f068d56c84312fbed90886e059023d85611 + md5: 1f67e5e30edd56e0a0bf6df6bb711a9d depends: - - libre2-11 2024.07.02 h07bc746_2 + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 arch: arm64 platform: osx - license: BSD-3-Clause - license_family: BSD - size: 26861 - timestamp: 1735541088455 -- conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda - sha256: 5435cf39d039387fbdc977b0a762357ea909a7694d9528ab40f005e9208744d7 - md5: 47d31b792659ce70f470b5c82fdfb7a4 + license: Apache-2.0 + license_family: Apache + size: 754657 + timestamp: 1735628030895 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda + sha256: 0105bd108f19ea8e6a78d2d994a6d4a8db16d19a41212070d2d1d48a63c34161 + md5: a587892d3c13b6621a6091be690dbca2 depends: - libgcc-ng >=12 - - ncurses >=6.3,<7.0a0 arch: x86_64 platform: linux - license: GPL-3.0-only - license_family: GPL - size: 281456 - timestamp: 1679532220005 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8fc344f_1.conda - sha256: 4c99f7417419734e3797d45bc355e61c26520e111893b0d7087a01a7fbfbe3dd - md5: 105eb1e16bf83bfb2eb380a48032b655 + license: ISC + size: 205978 + timestamp: 1716828628198 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.20-h68df207_0.conda + sha256: 448df5ea3c5cf1af785aad46858d7a5be0522f4234a4dc9bb764f4d11ff3b981 + md5: 2e4a8f23bebdcb85ca8e5a0fbe75666a depends: - libgcc-ng >=12 - - ncurses >=6.3,<7.0a0 arch: aarch64 platform: linux - license: GPL-3.0-only - license_family: GPL - size: 294092 - timestamp: 1679532238805 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h92ec313_1.conda - sha256: a1dfa679ac3f6007362386576a704ad2d0d7a02e98f5d0b115f207a2da63e884 - md5: 8cbb776a2f641b943d413b3e19df71f4 + license: ISC + size: 177394 + timestamp: 1716828514515 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda + sha256: fade8223e1e1004367d7101dd17261003b60aa576df6d7802191f8972f7470b1 + md5: a7ce36e284c5faaf93c220dfc39e3abd depends: - - ncurses >=6.3,<7.0a0 + - __osx >=11.0 arch: arm64 platform: osx - license: GPL-3.0-only - license_family: GPL - size: 250351 - timestamp: 1679532511311 -- conda: https://conda.anaconda.org/conda-forge/linux-64/regex-2024.11.6-py312h66e93f0_0.conda - sha256: fcb5687d3ec5fff580b64b8fb649d9d65c999a91a5c3108a313ecdd2de99f06b - md5: 647770db979b43f9c9ca25dcfa7dc4e4 + license: ISC + size: 164972 + timestamp: 1716828607917 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.48.0-hee588c1_1.conda + sha256: 22853d289ef6ec8a5b20f1aa261895b06525439990d3b139f8bfd0b5c5e32a3a + md5: 3fa05c528d8a1e2a67bbf1e36f22d3bc depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 + - libzlib >=1.3.1,<2.0a0 arch: x86_64 platform: linux - license: Python-2.0 - license_family: PSF - size: 402821 - timestamp: 1730952378415 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/regex-2024.11.6-py312hb2c0f52_0.conda - sha256: ec2c416860de29224e447e2031f8686a05476759c17da1f32f61d4307e540ec8 - md5: fa8b589107567f532fa1380e66f91776 + license: Unlicense + size: 878223 + timestamp: 1737564987837 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.48.0-h5eb1b54_1.conda + sha256: 81dd9bf66c7f1d9064e007e2c787133100c406e7ca2de61dba9fb7b87372f255 + md5: 4f3a61fe206f20b27c385ee608bcdfda depends: - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 + - libzlib >=1.3.1,<2.0a0 arch: aarch64 platform: linux - license: Python-2.0 - license_family: PSF - size: 398947 - timestamp: 1730952477463 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/regex-2024.11.6-py312hea69d52_0.conda - sha256: dcdec32f2c7dd37986baa692bedf9db126ad34e92e5e9b64f707cba3d04d2525 - md5: e73cda1f18846b608284bd784f061eac + license: Unlicense + size: 1044879 + timestamp: 1737565049785 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.48.0-h3f77e49_1.conda + sha256: 17c06940cc2a13fd6a17effabd6881b1477db38b2cd3ee2571092d293d3fdd75 + md5: 4c55169502ecddf8077973a987d08f08 depends: - __osx >=11.0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 + - libzlib >=1.3.1,<2.0a0 arch: arm64 platform: osx - license: Python-2.0 - license_family: PSF - size: 366374 - timestamp: 1730952427552 -- conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda - sha256: d701ca1136197aa121bbbe0e8c18db6b5c94acbd041c2b43c70e5ae104e1d8ad - md5: a9b9368f3701a417eac9edbcae7cb737 - depends: - - certifi >=2017.4.17 - - charset-normalizer >=2,<4 - - idna >=2.5,<4 - - python >=3.9 - - urllib3 >=1.21.1,<3 - constrains: - - chardet >=3.0.2,<6 - license: Apache-2.0 - license_family: APACHE - size: 58723 - timestamp: 1733217126197 -- conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_1.conda - sha256: 06a760c5ae572e72e865d5a87e9fe3cc171e1a9c996e63daf3db52ff1a0b4457 - md5: 7aed65d4ff222bfb7335997aa40b7da5 - depends: - - markdown-it-py >=2.2.0 - - pygments >=2.13.0,<3.0.0 - - python >=3.9 - - typing_extensions >=4.0.0,<5.0.0 - license: MIT - license_family: MIT - size: 185646 - timestamp: 1733342347277 -- conda: https://conda.anaconda.org/conda-forge/noarch/rich-toolkit-0.11.3-pyh29332c3_0.conda - sha256: e558f8c254a9ff9164d069110da162fc79497d70c60f2c09a5d3d0d7101c5628 - md5: 4ba15ae9388b67d09782798347481f69 + license: Unlicense + size: 852831 + timestamp: 1737564996616 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-hc0a3c3a_1.conda + sha256: 4661af0eb9bdcbb5fb33e5d0023b001ad4be828fccdcc56500059d56f9869462 + md5: 234a5554c53625688d51062645337328 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 -- conda: https://conda.anaconda.org/conda-forge/linux-64/s2n-1.5.11-h072c03f_0.conda - sha256: cfdd98c8f9a1e5b6f9abce5dac6d590cc9fe541a08466c9e4a26f90e00b569e3 - md5: 5e8060d52f676a40edef0006a75c718f + - libgcc 14.2.0 h77fa898_1 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 3893695 + timestamp: 1729027746910 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_1.conda + sha256: 519556d2c93f1b487091ce046d62e762286177f4a670ec10e16005177d0bcab3 + md5: 37f489acd39e22b623d2d1e5ac6d195c depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - openssl >=3.4.0,<4.0a0 + - libgcc 14.2.0 he277a41_1 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 3816794 + timestamp: 1729089463404 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_1.conda + sha256: 25bb30b827d4f6d6f0522cc0579e431695503822f144043b93c50237017fffd8 + md5: 8371ac6457591af2cf6159439c1fd051 + depends: + - libstdcxx 14.2.0 hc0a3c3a_1 arch: x86_64 platform: linux - license: Apache-2.0 - license_family: Apache - size: 356213 - timestamp: 1737146304079 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/s2n-1.5.11-h3caee7a_0.conda - sha256: 5a7ae66f96be24c3b2007139b6c3701ab015b4b4eb4eccfdd07be97710243a47 - md5: 1517c0518f8a06a48a15f41d94252874 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 54105 + timestamp: 1729027780628 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_1.conda + sha256: 9f97461bd55a2745a7a0941f3502a047f15bfe7bb2952dc7fb204b3202f866fd + md5: 0e75771b8a03afae5a2c6ce71bc733f5 depends: - - libgcc >=13 - - openssl >=3.4.0,<4.0a0 + - libstdcxx 14.2.0 h3f4de04_1 arch: aarch64 platform: linux - license: Apache-2.0 - license_family: Apache - size: 352811 - timestamp: 1737146319512 -- conda: https://conda.anaconda.org/conda-forge/linux-64/safetensors-0.5.2-py312h12e396e_0.conda - sha256: 98b8dfa5eec083e0b3ace00906a7f7e748b1e2446dca17e87473f43278fcc036 - md5: 999ca9d87d2bb8b4c01e62c755b928cf + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 54133 + timestamp: 1729089498541 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda + sha256: 787eb542f055a2b3de553614b25f09eefb0a0931b0c87dbcce6efdfd92f04f18 + md5: 40b61aab5c7ba9ff276c41cfffe6b80b + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 33601 + timestamp: 1680112270483 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda + sha256: 616277b0c5f7616c2cdf36f6c316ea3f9aa5bb35f2d4476a349ab58b9b91675f + md5: 000e30b09db0b7c775b21695dff30969 + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 35720 + timestamp: 1680113474501 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda + sha256: 6ae68e0b86423ef188196fff6207ed0c8195dd84273cb5623b85aa08033a410c + md5: 5aa797f8787fe7a17d1b0821485b5adc + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: LGPL-2.1-or-later + size: 100393 + timestamp: 1702724383534 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda + sha256: 6b46c397644091b8a26a3048636d10b989b1bf266d4be5e9474bf763f828f41f + md5: b4df5d7d4b63579d081fd3a4cf99740e + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: LGPL-2.1-or-later + size: 114269 + timestamp: 1702724369203 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda + sha256: d4bfe88d7cb447768e31650f06257995601f89076080e76df55e3112d4e47dc4 + md5: edb0dca6bc32e4f4789199455a1dbeb8 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 constrains: - - __glibc >=2.17 + - zlib 1.3.1 *_2 arch: x86_64 platform: linux - license: Apache-2.0 - license_family: APACHE - size: 424409 - timestamp: 1736383159339 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/safetensors-0.5.2-py312h8cbf658_0.conda - sha256: 3e230060c1366cbaf03f4315b021dfe47f5147f3af88f17975d661c08fe15ad3 - md5: 2c77c961c4e813b1d05122ac4d803d80 + license: Zlib + license_family: Other + size: 60963 + timestamp: 1727963148474 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda + sha256: 5a2c1eeef69342e88a98d1d95bff1603727ab1ff4ee0e421522acd8813439b84 + md5: 08aad7cbe9f5a6b460d0976076b6ae64 depends: - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 constrains: - - __glibc >=2.17 + - zlib 1.3.1 *_2 arch: aarch64 platform: linux - license: Apache-2.0 - license_family: APACHE - size: 408166 - timestamp: 1736383184569 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/safetensors-0.5.2-py312hcd83bfe_0.conda - sha256: 0aeb3e654095ca0261d560d1fc05912d0e94d547a7dc435d7f4cedeba966d176 - md5: fc0383682805e293eba9b8afc9ad0931 + license: Zlib + license_family: Other + size: 66657 + timestamp: 1727963199518 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda + sha256: ce34669eadaba351cd54910743e6a2261b67009624dbc7daeeafdef93616711b + md5: 369964e85dc26bfe78f41399b366c435 depends: - __osx >=11.0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 constrains: + - zlib 1.3.1 *_2 + arch: arm64 + platform: osx + license: Zlib + license_family: Other + size: 46438 + timestamp: 1727963202283 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda + sha256: b92a669f2059874ebdcb69041b6c243d68ffc3fb356ac1339cec44aeb27245d7 + md5: c4d54bfd3817313ce758aa76283b118d + depends: - __osx >=11.0 + constrains: + - openmp 19.1.7|19.1.7.* arch: arm64 platform: osx - license: Apache-2.0 + license: Apache-2.0 WITH LLVM-exception license_family: APACHE - size: 378060 - timestamp: 1736383410115 -- conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda - sha256: 0557c090913aa63cdbe821dbdfa038a321b488e22bc80196c4b3b1aace4914ef - md5: 7c3c2a0f3ebdea2bbc35538d162b43bf + size: 280830 + timestamp: 1736986295869 +- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020700-release.conda + noarch: python + sha256: 0c5086da2c8515aae71eb8b4c0b7805411c39d89a141fba0c48071d06352ae58 + md5: 8a119d75ab58c7869a319618c1bd0629 depends: - - python >=3.9 + - max-core ==25.1.0.dev2025020700 release + - max-python ==25.1.0.dev2025020700 release + - mojo-jupyter ==25.1.0.dev2025020700 release + - mblack ==25.1.0.dev2025020700 release + license: LicenseRef-Modular-Proprietary + size: 9901 + timestamp: 1738887556307 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025020700-release.conda + sha256: 0a2843fb9b523381166040e5f9196d555a8173d20e9facf63668ac4c3c3bd7e5 + md5: bcd3f009a29988347468e74c40230aa0 + depends: + - mblack ==25.1.0.dev2025020700 release + license: LicenseRef-Modular-Proprietary + size: 244772443 + timestamp: 1738887618224 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025020700-release.conda + sha256: e6a390b2417ee1da36047c75ce78d80cd076d03eae3ebf44db45cf6339f13310 + md5: 8b535a200a237518b5255359b884dd1c + depends: + - mblack ==25.1.0.dev2025020700 release + license: LicenseRef-Modular-Proprietary + size: 247279800 + timestamp: 1738887556307 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025020700-release.conda + sha256: f2fd1544fd907bcc8529dd32ec5424187892397745e4898368e956ac05c48e02 + md5: c0cbf1c622073adc4c1e002559ee4984 + depends: + - mblack ==25.1.0.dev2025020700 release + license: LicenseRef-Modular-Proprietary + size: 209654994 + timestamp: 1738888179079 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025020700-release.conda + noarch: python + sha256: 23e51aa18d098b77a33de9b223e858ceb24dca4883dec954036d1d3cb5b3c7f2 + md5: d7bfb71fa8c8936ac46cd65cdbaceed6 + depends: + - max-core ==25.1.0.dev2025020700 release + - click >=8.0.0 + - numpy >=1.18,<2.0 + - sentencepiece >=0.2.0 + - tqdm >=4.67.1 + constrains: + - aiohttp >=3.11.12 + - fastapi >=0.114.2 + - gguf >=0.14.0 + - hf-transfer >=0.1.9 + - httpx >=0.28.1 + - huggingface_hub >=0.24.0 + - nvitop >=1.4.1 + - opentelemetry-api >=1.29.0 + - opentelemetry-exporter-otlp-proto-http >=1.27.0 + - opentelemetry-exporter-prometheus >=0.48b0 + - opentelemetry-sdk >=1.29.0,<2.0 + - pillow >=10.3.0 + - prometheus_client >=0.21.0 + - prometheus-async >=22.2.0 + - psutil >=6.1.1 + - pydantic + - pydantic-settings >=2.7.1 + - pyinstrument >=5.0.1 + - python-json-logger >=2.0.7 + - requests >=2.32.3 + - rich >=13.9.4 + - safetensors >=0.5.2 + - scipy >=1.15.1 + - sentinel >=0.3.0 + - sse-starlette >=2.1.2 + - tokenizers >=0.19.0 + - pytorch >=2.2.2,<=2.5.1 + - transformers >=4.40.1 + - uvicorn >=0.34.0 + - uvloop >=0.21.0 + license: LicenseRef-Modular-Proprietary + size: 120644157 + timestamp: 1738887618224 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025020700-release.conda + noarch: python + sha256: 1113181f7ac5ab5b19dec273f34eea07d39d9ac3713d372cde746fe7804e2692 + md5: b5cdc8249909a14ad5cc69cb7b5c30e4 + depends: + - max-core ==25.1.0.dev2025020700 release + - click >=8.0.0 + - numpy >=1.18,<2.0 + - sentencepiece >=0.2.0 + - tqdm >=4.67.1 + constrains: + - aiohttp >=3.11.12 + - fastapi >=0.114.2 + - gguf >=0.14.0 + - hf-transfer >=0.1.9 + - httpx >=0.28.1 + - huggingface_hub >=0.24.0 + - nvitop >=1.4.1 + - opentelemetry-api >=1.29.0 + - opentelemetry-exporter-otlp-proto-http >=1.27.0 + - opentelemetry-exporter-prometheus >=0.48b0 + - opentelemetry-sdk >=1.29.0,<2.0 + - pillow >=10.3.0 + - prometheus_client >=0.21.0 + - prometheus-async >=22.2.0 + - psutil >=6.1.1 + - pydantic + - pydantic-settings >=2.7.1 + - pyinstrument >=5.0.1 + - python-json-logger >=2.0.7 + - requests >=2.32.3 + - rich >=13.9.4 + - safetensors >=0.5.2 + - scipy >=1.15.1 + - sentinel >=0.3.0 + - sse-starlette >=2.1.2 + - tokenizers >=0.19.0 + - pytorch >=2.2.2,<=2.5.1 + - transformers >=4.40.1 + - uvicorn >=0.34.0 + - uvloop >=0.21.0 + license: LicenseRef-Modular-Proprietary + size: 123020201 + timestamp: 1738887556307 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025020700-release.conda + noarch: python + sha256: 847e472b44904735bbc68e1fcec6a4fe53883ad6409af4f8155b2b40772c74cc + md5: 14bf0cbc7ef6cf6f3b728780a19b14ab + depends: + - max-core ==25.1.0.dev2025020700 release + - click >=8.0.0 + - numpy >=1.18,<2.0 + - sentencepiece >=0.2.0 + - tqdm >=4.67.1 + constrains: + - aiohttp >=3.11.12 + - fastapi >=0.114.2 + - gguf >=0.14.0 + - hf-transfer >=0.1.9 + - httpx >=0.28.1 + - huggingface_hub >=0.24.0 + - nvitop >=1.4.1 + - opentelemetry-api >=1.29.0 + - opentelemetry-exporter-otlp-proto-http >=1.27.0 + - opentelemetry-exporter-prometheus >=0.48b0 + - opentelemetry-sdk >=1.29.0,<2.0 + - pillow >=10.3.0 + - prometheus_client >=0.21.0 + - prometheus-async >=22.2.0 + - psutil >=6.1.1 + - pydantic + - pydantic-settings >=2.7.1 + - pyinstrument >=5.0.1 + - python-json-logger >=2.0.7 + - requests >=2.32.3 + - rich >=13.9.4 + - safetensors >=0.5.2 + - scipy >=1.15.1 + - sentinel >=0.3.0 + - sse-starlette >=2.1.2 + - tokenizers >=0.19.0 + - pytorch >=2.2.2,<=2.5.1 + - transformers >=4.40.1 + - uvicorn >=0.34.0 + - uvloop >=0.21.0 + license: LicenseRef-Modular-Proprietary + size: 108448310 + timestamp: 1738888179079 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020700-release.conda + noarch: python + sha256: 17daf1d55dd29b1bee00b6febfb9037b863e1e70e115606174c334b5c9159f94 + md5: 3443f44398d7184cb2f05944e90fccca + depends: + - python >=3.9,<3.13 + - click >=8.0.0 + - mypy_extensions >=0.4.3 + - packaging >=22.0 + - pathspec >=0.9.0 + - platformdirs >=2 + - typing_extensions >=v4.12.2 + - python license: MIT - license_family: MIT - size: 14462 - timestamp: 1733301007770 -- conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - sha256: 41db0180680cc67c3fa76544ffd48d6a5679d96f4b71d7498a759e94edc9a2db - md5: a451d576819089b0d672f18768be0f65 + size: 130848 + timestamp: 1738887556306 +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020700-release.conda + noarch: python + sha256: 951321ffc06290d15d11f519c32aae835d8194a692c017ae8175bb98879215c0 + md5: 4a2ebf4276afe6a0b569f4550b5ecedf + depends: + - max-core ==25.1.0.dev2025020700 release + - python >=3.9,<3.13 + - jupyter_client >=8.6.2,<8.7 + - python + license: LicenseRef-Modular-Proprietary + size: 22987 + timestamp: 1738887556307 +- conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda + sha256: 1895f47b7d68581a6facde5cb13ab8c2764c2e53a76bd746f8f98910dc4e08fe + md5: 29097e7ea634a45cc5386b95cac6568f depends: - python >=3.9 license: MIT license_family: MIT - size: 16385 - timestamp: 1733381032766 -- conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-h8bd8927_1.conda - sha256: ec91e86eeb2c6bbf09d51351b851e945185d70661d2ada67204c9a6419d282d3 - md5: 3b3e64af585eadfb52bb90b553db5edf + size: 10854 + timestamp: 1733230986902 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda + sha256: 3fde293232fa3fca98635e1167de6b7c7fda83caf24b9d6c91ec9eefb4f4d586 + md5: 47e340acb35de30501a76c7c799c41d7 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - - libstdcxx >=13 arch: x86_64 platform: linux - license: BSD-3-Clause - license_family: BSD - size: 42739 - timestamp: 1733501881851 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-hd4fb6f5_1.conda - sha256: c4a07ae5def8d55128f25a567a296ef9d7bf99a3bc79d46bd5160c076a5f50af - md5: 2fcc6cd1e5550deb509073fd2e6693e1 + license: X11 AND BSD-3-Clause + size: 891641 + timestamp: 1738195959188 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-ha32ae93_3.conda + sha256: 91cfb655a68b0353b2833521dc919188db3d8a7f4c64bea2c6a7557b24747468 + md5: 182afabe009dc78d8b73100255ee6868 depends: - libgcc >=13 - - libstdcxx >=13 arch: aarch64 platform: linux - license: BSD-3-Clause - license_family: BSD - size: 43032 - timestamp: 1733501964775 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-h98b9ce2_1.conda - sha256: 4242f95b215127a006eb664fe26ed5a82df87e90cbdbc7ce7ff4971f0720997f - md5: ded86dee325290da2967a3fea3800eb5 + license: X11 AND BSD-3-Clause + size: 926034 + timestamp: 1738196018799 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda + sha256: 2827ada40e8d9ca69a153a45f7fd14f32b2ead7045d3bbb5d10964898fe65733 + md5: 068d497125e4bf8a66bf707254fff5ae depends: - __osx >=11.0 - - libcxx >=18 arch: arm64 platform: osx - license: BSD-3-Clause - license_family: BSD - size: 35857 - timestamp: 1733502172664 -- conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - sha256: c2248418c310bdd1719b186796ae50a8a77ce555228b6acd32768e2543a15012 - md5: bf7a226e58dfb8346c70df36065d86c9 - depends: - - python >=3.9 - license: Apache-2.0 - license_family: Apache - size: 15019 - timestamp: 1733244175724 -- conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.2.1-pyhd8ed1ab_0.conda - sha256: 3c6a476e7afb702d841e23c61a0c4cc491929d2e39376d329e67e94c40a236cc - md5: c1ef6bc13dd2caa4b406fb3cb06c2791 - depends: - - anyio >=4.7.0 - - python >=3.9 - - starlette >=0.41.3 - license: BSD-3-Clause - license_family: BSD - size: 15324 - timestamp: 1735126414893 -- conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.45.3-pyha770c72_0.conda - sha256: be48c99e6fb8e12ebee09e6fbb4d78a170b614cdaa19ab791a8f5b6caf09919a - md5: 9b3a68bc7aed7949ef86f950993261f4 - depends: - - anyio >=3.6.2,<5 - - python >=3.9 - - typing_extensions >=3.10.0 - license: BSD-3-Clause - license_family: BSD - size: 57934 - timestamp: 1737824077668 -- conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda - sha256: e0569c9caa68bf476bead1bed3d79650bb080b532c64a4af7d8ca286c08dea4e - md5: d453b98d9c83e71da0741bb0ff4d76bc + license: X11 AND BSD-3-Clause + size: 797030 + timestamp: 1738196177597 +- conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda + sha256: fe3459c75cf84dcef6ef14efcc4adb0ade66038ddd27cadb894f34f4797687d8 + md5: d8285bea2a350f63fab23bf460221f3f depends: + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 - libgcc-ng >=12 - - libzlib >=1.2.13,<2.0.0a0 + - liblapack >=3.9.0,<4.0a0 + - libstdcxx-ng >=12 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - numpy-base <0a0 arch: x86_64 platform: linux - license: TCL + license: BSD-3-Clause license_family: BSD - size: 3318875 - timestamp: 1699202167581 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda - sha256: 7fa27cc512d3a783f38bd16bbbffc008807372499d5b65d089a8e43bde9db267 - md5: f75105e0585851f818e0009dd1dde4dc + size: 7484186 + timestamp: 1707225809722 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda + sha256: 23767677a7790bee5457d5e75ebd508b9a31c5354216f4310dd1acfca3f7a6f9 + md5: 9cebf5a06cb87d4569cd68df887af476 depends: + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 - libgcc-ng >=12 - - libzlib >=1.2.13,<2.0.0a0 + - liblapack >=3.9.0,<4.0a0 + - libstdcxx-ng >=12 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - numpy-base <0a0 arch: aarch64 platform: linux - license: TCL + license: BSD-3-Clause license_family: BSD - size: 3351802 - timestamp: 1695506242997 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda - sha256: 72457ad031b4c048e5891f3f6cb27a53cb479db68a52d965f796910e71a403a8 - md5: b50a57ba89c32b62428b71a875291c9b + size: 6614296 + timestamp: 1707225994762 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda + sha256: c8841d6d6f61fd70ca80682efbab6bdb8606dc77c68d8acabfbd7c222054f518 + md5: d83fc83d589e2625a3451c9a7e21047c depends: - - libzlib >=1.2.13,<2.0.0a0 + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - libcxx >=16 + - liblapack >=3.9.0,<4.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - numpy-base <0a0 arch: arm64 platform: osx - license: TCL + license: BSD-3-Clause license_family: BSD - size: 3145523 - timestamp: 1699202432999 -- conda: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.21.0-py312h8360d73_0.conda - sha256: 4f504a5e9d77c6d88a8f735c4319429d8bf40b742384f908a2efe0a09acc3cc5 - md5: f953aa733207f3d37acf4a3efbedba89 + size: 6073136 + timestamp: 1707226249608 +- conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.0-h7b32b05_1.conda + sha256: f62f6bca4a33ca5109b6d571b052a394d836956d21b25b7ffd03376abf7a481f + md5: 4ce6875f75469b2757a65e10a5d05e31 depends: - __glibc >=2.17,<3.0.a0 - - huggingface_hub >=0.16.4,<1.0 + - ca-certificates - libgcc >=13 - - libstdcxx >=13 - - openssl >=3.4.0,<4.0a0 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - constrains: - - __glibc >=2.17 arch: x86_64 platform: linux license: Apache-2.0 - license_family: APACHE - size: 2258007 - timestamp: 1732734202127 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.21.0-py312ha0d6ea1_0.conda - sha256: ef0f4d4e2c798b1821187ea0ba4c86484e48abaa0e9a19fe68030fa7ff5dde84 - md5: 077f48c9e0c08a30d842e15c51df4143 + license_family: Apache + size: 2937158 + timestamp: 1736086387286 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.0-hd08dc88_1.conda + sha256: 60d34454b861501d7355f25a7b39fdb5de8d56fca49b5bcbe8b8142b7d82dce4 + md5: e21c4767e783a58c373fdb99de6211bf depends: - - huggingface_hub >=0.16.4,<1.0 + - ca-certificates - libgcc >=13 - - libstdcxx >=13 - - openssl >=3.4.0,<4.0a0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - constrains: - - __glibc >=2.17 arch: aarch64 platform: linux license: Apache-2.0 - license_family: APACHE - size: 2331194 - timestamp: 1732734303196 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.21.0-py312hf3e4074_0.conda - sha256: 5d395333fcb22dc611140286c1f2ea8b3fa220a4931c583587cb612238091555 - md5: 4c732c74b485ef7ac8ec1c548dd45e8e + license_family: Apache + size: 3469279 + timestamp: 1736088141230 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.0-h81ee809_1.conda + sha256: 97772762abc70b3a537683ca9fc3ff3d6099eb64e4aba3b9c99e6fce48422d21 + md5: 22f971393637480bda8c679f374d8861 depends: - __osx >=11.0 - - huggingface_hub >=0.16.4,<1.0 - - libcxx >=18 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - constrains: - - __osx >=11.0 + - ca-certificates arch: arm64 platform: osx license: Apache-2.0 + license_family: Apache + size: 2936415 + timestamp: 1736086108693 +- conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + sha256: da157b19bcd398b9804c5c52fc000fcb8ab0525bdb9c70f95beaa0bb42f85af1 + md5: 3bfed7e6228ebf2f7b9eaa47f1b4e2aa + depends: + - python >=3.8 + license: Apache-2.0 license_family: APACHE - size: 1931389 - timestamp: 1732734727624 -- conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda - sha256: 062a3a3a37fa8615ce57929ba7e982c76f5a5810bcebd435950f6d6c4147c310 - md5: e417822cb989e80a0d2b1b576fdd1657 + size: 60164 + timestamp: 1733203368787 +- conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + sha256: 9f64009cdf5b8e529995f18e03665b03f5d07c0b17445b8badef45bde76249ee + md5: 617f15191456cc6a13db418a275435e5 + depends: + - python >=3.9 + license: MPL-2.0 + license_family: MOZILLA + size: 41075 + timestamp: 1733233471940 +- conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + sha256: bb50f6499e8bc1d1a26f17716c97984671121608dc0c3ecd34858112bce59a27 + md5: 577852c7e53901ddccc7e6a9959ddebe + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 20448 + timestamp: 1733232756001 +- conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.8-h9e4cc4f_1_cpython.conda + build_number: 1 + sha256: 3f0e0518c992d8ccfe62b189125721309836fe48a010dc424240583e157f9ff0 + md5: 7fd2fd79436d9b473812f14e86746844 depends: - __glibc >=2.17,<3.0.a0 + - bzip2 >=1.0.8,<2.0a0 + - ld_impl_linux-64 >=2.36.1 + - libexpat >=2.6.4,<3.0a0 + - libffi >=3.4,<4.0a0 - libgcc >=13 - - python >=3.12,<3.13.0a0 + - liblzma >=5.6.3,<6.0a0 + - libnsl >=2.0.1,<2.1.0a0 + - libsqlite >=3.47.0,<4.0a0 + - libuuid >=2.38.1,<3.0a0 + - libxcrypt >=4.4.36 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.4.0,<4.0a0 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + constrains: - python_abi 3.12.* *_cp312 arch: x86_64 platform: linux - license: Apache-2.0 - license_family: Apache - size: 840414 - timestamp: 1732616043734 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py312h52516f5_0.conda - sha256: 4c19a544354172b2273553267e734795a6da3c78a04c2d19f8e9e159ca3178bc - md5: e28996d9d2d44d777b7e6fb12f63715b + license: Python-2.0 + size: 31565686 + timestamp: 1733410597922 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.8-h1683364_1_cpython.conda + build_number: 1 + sha256: 85573582d5b0f79923fed0a8365d3d74d21eee9f0a5fa1b9345f191e006363ab + md5: 09ec612ea05370989eaa3d81abf0f369 depends: + - bzip2 >=1.0.8,<2.0a0 + - ld_impl_linux-aarch64 >=2.36.1 + - libexpat >=2.6.4,<3.0a0 + - libffi >=3.4,<4.0a0 - libgcc >=13 - - python >=3.12,<3.13.0a0 + - liblzma >=5.6.3,<6.0a0 + - libnsl >=2.0.1,<2.1.0a0 + - libsqlite >=3.47.0,<4.0a0 + - libuuid >=2.38.1,<3.0a0 + - libxcrypt >=4.4.36 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.4.0,<4.0a0 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + constrains: - python_abi 3.12.* *_cp312 arch: aarch64 platform: linux - license: Apache-2.0 - license_family: Apache - size: 841662 - timestamp: 1732616934923 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda - sha256: 964a2705a36c50040c967b18b45b9cc8de3c2aff4af546979a574e0b38e58e39 - md5: fb0605888a475d6a380ae1d1a819d976 + license: Python-2.0 + size: 13760816 + timestamp: 1733407890896 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.8-hc22306f_1_cpython.conda + build_number: 1 + sha256: 7586a711b1b08a9df8864e26efdc06980bdfb0e18d5ac4651d0fee30a8d3e3a0 + md5: 54ca5b5d92ef3a3ba61e195ee882a518 depends: - __osx >=11.0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython + - bzip2 >=1.0.8,<2.0a0 + - libexpat >=2.6.4,<3.0a0 + - libffi >=3.4,<4.0a0 + - liblzma >=5.6.3,<6.0a0 + - libsqlite >=3.47.0,<4.0a0 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.4.0,<4.0a0 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + constrains: - python_abi 3.12.* *_cp312 arch: arm64 platform: osx - license: Apache-2.0 - license_family: Apache - size: 842549 - timestamp: 1732616081362 -- conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda - sha256: 11e2c85468ae9902d24a27137b6b39b4a78099806e551d390e394a8c34b48e40 - md5: 9efbfdc37242619130ea42b1cc4ed861 - depends: - - colorama - - python >=3.9 - license: MPL-2.0 or MIT - size: 89498 - timestamp: 1735661472632 -- conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - sha256: f39a5620c6e8e9e98357507262a7869de2ae8cc07da8b7f84e517c9fd6c2b959 - md5: 019a7385be9af33791c989871317e1ed + license: Python-2.0 + size: 12998673 + timestamp: 1733408900971 +- conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + sha256: a50052536f1ef8516ed11a844f9413661829aa083304dc624c5925298d078d79 + md5: 5ba79d7c71f03c678c8ead841f347d6e depends: - python >=3.9 - license: BSD-3-Clause - license_family: BSD - size: 110051 - timestamp: 1733367480074 -- conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.48.2-pyhd8ed1ab_0.conda - sha256: 67b19c3d6befcc538df3e6d8dc7c4a2b6c7e35b7c1666da790cea4166f1b768a - md5: 717807c559e9a30fea4850ab8881adcb - depends: - - datasets !=2.5.0 - - filelock - - huggingface_hub >=0.23.0,<1.0 - - numpy >=1.17 - - packaging >=20.0 - - python >=3.9 - - pyyaml >=5.1 - - regex !=2019.12.17 - - requests - - safetensors >=0.4.1 - - tokenizers >=0.21,<0.22 - - tqdm >=4.27 + - six >=1.5 license: Apache-2.0 license_family: APACHE - size: 3416794 - timestamp: 1738278628376 -- conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda - sha256: ef695490e895c2ad552c77ec497b899b09fd4ad4ab07edcf5649f5994cf92a35 - md5: 170a0398946d8f5b454e592672b6fc20 - depends: - - python >=3.9 - - typer-slim-standard 0.15.1 hd8ed1ab_0 - license: MIT - license_family: MIT - size: 56175 - timestamp: 1733408582623 -- conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda - sha256: d4965516f35e0805199de6596c4ac76c4ad3d6b012be35e532102f9e53ecb860 - md5: 0218b16f5a1dd569e575a7a6415489db - depends: - - click >=8.0.0 - - python >=3.9 - - typing_extensions >=3.7.4.3 + size: 222505 + timestamp: 1733215763718 +- conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda + build_number: 5 + sha256: d10e93d759931ffb6372b45d65ff34d95c6000c61a07e298d162a3bc2accebb0 + md5: 0424ae29b104430108f5218a66db7260 constrains: - - rich >=10.11.0 - - typer >=0.15.1,<0.15.2.0a0 - - shellingham >=1.3.0 - license: MIT - license_family: MIT - size: 43592 - timestamp: 1733408569554 -- conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda - sha256: f31c56fe98315da8b9ce848256c17e0b9f87896b41a6ccf0c9cc74644dcef20f - md5: 4e603c43bfdfc7b533be087c3e070cc9 - depends: - - rich - - shellingham - - typer-slim 0.15.1 pyhd8ed1ab_0 - license: MIT - license_family: MIT - size: 49531 - timestamp: 1733408570063 -- conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda - noarch: python - sha256: c8e9c1c467b5f960b627d7adc1c65fece8e929a3de89967e91ef0f726422fd32 - md5: b6a408c64b78ec7b779a3e5c7a902433 - depends: - - typing_extensions 4.12.2 pyha770c72_1 - license: PSF-2.0 - license_family: PSF - size: 10075 - timestamp: 1733188758872 -- conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - sha256: 337be7af5af8b2817f115b3b68870208b30c31d3439bec07bfb2d8f4823e3568 - md5: d17f13df8b65464ca316cbc000a3cb64 - depends: - - python >=3.9 - license: PSF-2.0 - license_family: PSF - size: 39637 - timestamp: 1733188758212 -- conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda - sha256: c4b1ae8a2931fe9b274c44af29c5475a85b37693999f8c792dad0f8c6734b1de - md5: dbcace4706afdfb7eb891f7b37d07c04 - license: LicenseRef-Public-Domain - size: 122921 - timestamp: 1737119101255 -- conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda - sha256: 114919ffa80c328127dab9c8e7a38f9d563c617691fb81fccb11c1e86763727e - md5: 32674f8dbfb7b26410ed580dd3c10a29 - depends: - - brotli-python >=1.0.9 - - h2 >=4,<5 - - pysocks >=1.5.6,<2.0,!=1.5.7 - - python >=3.9 - - zstandard >=0.18.0 - license: MIT - license_family: MIT - size: 100102 - timestamp: 1734859520452 -- conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.34.0-pyh31011fe_0.conda - sha256: 55c160b0cf9274e2b98bc0f7fcce548bffa8d788bc86aa02801877457040f6fa - md5: 5d448feee86e4740498ec8f8eb40e052 - depends: - - __unix - - click >=7.0 - - h11 >=0.8 - - python >=3.9 - - typing_extensions >=4.0 + - python 3.12.* *_cpython + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD - size: 48643 - timestamp: 1734293057914 -- conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.34.0-h31011fe_0.conda - sha256: 87e1531e175e75122f9f37608eb953af4c977465ab0ae11283cc01fef954e4ec - md5: 32a94143a7f65d76d2d5da37dcb4ed79 - depends: - - __unix - - httptools >=0.6.3 - - python-dotenv >=0.13 - - pyyaml >=5.1 - - uvicorn 0.34.0 pyh31011fe_0 - - uvloop >=0.14.0,!=0.15.0,!=0.15.1 - - watchfiles >=0.13 - - websockets >=10.4 + size: 6238 + timestamp: 1723823388266 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.12-5_cp312.conda + build_number: 5 + sha256: 5ccdad9981753cc4a2d126e356673a21c0cd5b34e209cb8d476a3947d4ad9b39 + md5: 62b20f305498284a07dc6c45fd0e5c87 + constrains: + - python 3.12.* *_cpython + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 6329 + timestamp: 1723823366253 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-5_cp312.conda + build_number: 5 + sha256: 49d624e4b809c799d2bf257b22c23cf3fc4460f5570d9a58e7ad86350aeaa1f4 + md5: b76f9b1c862128e56ac7aa8cd2333de9 + constrains: + - python 3.12.* *_cpython + arch: arm64 + platform: osx license: BSD-3-Clause license_family: BSD - size: 7203 - timestamp: 1734293058849 -- conda: https://conda.anaconda.org/conda-forge/linux-64/uvloop-0.21.0-py312h66e93f0_1.conda - sha256: 9337a80165fcf70b06b9d6ba920dad702260ca966419ae77560a15540e41ab72 - md5: 998e481e17c1b6a74572e73b06f2df08 + size: 6278 + timestamp: 1723823099686 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.1-py312hbf22597_0.conda + sha256: 90ec0da0317d3d76990a40c61e1709ef859dd3d8c63838bad2814f46a63c8a2e + md5: 7cec8d0dac15a2d9fea8e49879aa779d depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - - libuv >=1.49.2,<2.0a0 + - libsodium >=1.0.20,<1.0.21.0a0 + - libstdcxx >=13 - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 + - zeromq >=4.3.5,<4.4.0a0 arch: x86_64 platform: linux - license: MIT OR Apache-2.0 - size: 701355 - timestamp: 1730214506716 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/uvloop-0.21.0-py312hb2c0f52_1.conda - sha256: 807eede6698bd00a1d739a3e19ee6ae6a03a66d2ddd2ef150f2dfd198c3b0292 - md5: d83e107ba16c77aba2feec47b7b666a4 + license: BSD-3-Clause + license_family: BSD + size: 382698 + timestamp: 1738271121975 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyzmq-26.2.1-py312h2427ae1_0.conda + sha256: 9558f9330093e5c21b7c04e2e212e19b9b88ad9c808315f12c0765b244018a09 + md5: 0520da8de6870d8ff63e818e927d1524 depends: - libgcc >=13 - - libuv >=1.49.2,<2.0a0 + - libsodium >=1.0.20,<1.0.21.0a0 + - libstdcxx >=13 - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 + - zeromq >=4.3.5,<4.4.0a0 arch: aarch64 platform: linux - license: MIT OR Apache-2.0 - size: 655266 - timestamp: 1730214606664 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/uvloop-0.21.0-py312h0bf5046_1.conda - sha256: b1efa77aa4871d7bb09c8dd297fa9bd9070ba7f0f95f2d12ae9cdd31ce8b6b22 - md5: 4f5110253ba80ebf27e55c4ab333880a + license: BSD-3-Clause + license_family: BSD + size: 375156 + timestamp: 1738273130727 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.1-py312hf4875e0_0.conda + sha256: 70d398b334668dc597d33e27847ede1b0829a639b9c91ee845355e52c86c2293 + md5: bfbefdb140b546a80827ff7c9d5ac7b8 depends: - __osx >=11.0 - - libuv >=1.49.2,<2.0a0 + - libcxx >=18 + - libsodium >=1.0.20,<1.0.21.0a0 - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 + - zeromq >=4.3.5,<4.4.0a0 arch: arm64 platform: osx - license: MIT OR Apache-2.0 - size: 544097 - timestamp: 1730214653726 -- conda: https://conda.anaconda.org/conda-forge/linux-64/watchfiles-1.0.4-py312h12e396e_0.conda - sha256: b728f525dcae2c10524f9942255346eba62aee9c820ff269d7dd4f7caffb7ffb - md5: df87129c4cb7afc4a3cbad71a1b9e223 + license: BSD-3-Clause + license_family: BSD + size: 364649 + timestamp: 1738271263898 +- conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda + sha256: 5435cf39d039387fbdc977b0a762357ea909a7694d9528ab40f005e9208744d7 + md5: 47d31b792659ce70f470b5c82fdfb7a4 depends: - - __glibc >=2.17,<3.0.a0 - - anyio >=3.0.0 - - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - constrains: - - __glibc >=2.17 + - libgcc-ng >=12 + - ncurses >=6.3,<7.0a0 arch: x86_64 platform: linux - license: MIT - license_family: MIT - size: 410192 - timestamp: 1736550568524 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/watchfiles-1.0.4-py312h8cbf658_0.conda - sha256: 45193910f6bafc287c784442d173745161b18f96223f0f990a9a744fda753787 - md5: ed958a27e610c31de625e167d4c11a04 + license: GPL-3.0-only + license_family: GPL + size: 281456 + timestamp: 1679532220005 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8fc344f_1.conda + sha256: 4c99f7417419734e3797d45bc355e61c26520e111893b0d7087a01a7fbfbe3dd + md5: 105eb1e16bf83bfb2eb380a48032b655 depends: - - anyio >=3.0.0 - - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - constrains: - - __glibc >=2.17 + - libgcc-ng >=12 + - ncurses >=6.3,<7.0a0 arch: aarch64 platform: linux - license: MIT - license_family: MIT - size: 403791 - timestamp: 1736550743174 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/watchfiles-1.0.4-py312hcd83bfe_0.conda - sha256: 84122e3712f2263e12c9d2be75d122eaf2d269801183df4b73aadcb670943b17 - md5: 946eb0208d09b811a671fad9b2831f4e - depends: - - __osx >=11.0 - - anyio >=3.0.0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - constrains: - - __osx >=11.0 + license: GPL-3.0-only + license_family: GPL + size: 294092 + timestamp: 1679532238805 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h92ec313_1.conda + sha256: a1dfa679ac3f6007362386576a704ad2d0d7a02e98f5d0b115f207a2da63e884 + md5: 8cbb776a2f641b943d413b3e19df71f4 + depends: + - ncurses >=6.3,<7.0a0 arch: arm64 platform: osx - license: MIT - license_family: MIT - size: 363822 - timestamp: 1736550859472 -- conda: https://conda.anaconda.org/conda-forge/linux-64/websockets-14.2-py312h66e93f0_0.conda - sha256: 52092f1f811fddcbb63e4e8e1c726f32a0a1ea14c36b70982fc2021a3c010e48 - md5: 279166352304d5d4b63429e9c86fa3dc + license: GPL-3.0-only + license_family: GPL + size: 250351 + timestamp: 1679532511311 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-0.2.0-hc8f76dd_10.conda + sha256: a1bde55ceb9dc5bd7879283d0f594a6ce65c07fda3de76230c65a4a5df47858a + md5: 480e915dfc6c592615ef6f217e615aa6 depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - python >=3.12,<3.13.0a0 + - libsentencepiece 0.2.0 h8e10757_10 - python_abi 3.12.* *_cp312 + - sentencepiece-python 0.2.0 py312hb6b8a2b_10 + - sentencepiece-spm 0.2.0 h8e10757_10 arch: x86_64 platform: linux - license: BSD-3-Clause - license_family: BSD - size: 242949 - timestamp: 1737358315063 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/websockets-14.2-py312hb2c0f52_0.conda - sha256: 5b8273df10b85a667b4fe71788a12c33a9626723650e28f582fd56c87bad0471 - md5: d7535d5d2f8d49d625071f305d6112a1 + license: Apache-2.0 + license_family: Apache + size: 19470 + timestamp: 1735628377167 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-0.2.0-h6c1b121_10.conda + sha256: 846d885a560fbb4375b645e7caf2f756ef88bbeb441b670375da0090aaa427fb + md5: 33a89eb1dedae8eb7222b0a89856f337 depends: - - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython + - libsentencepiece 0.2.0 h6164ad9_10 - python_abi 3.12.* *_cp312 + - sentencepiece-python 0.2.0 py312h197ff68_10 + - sentencepiece-spm 0.2.0 h6164ad9_10 arch: aarch64 platform: linux - license: BSD-3-Clause - license_family: BSD - size: 244675 - timestamp: 1737358397158 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/websockets-14.2-py312hea69d52_0.conda - sha256: e5ad8c983a1669d06a6648990c0491d5469143f02003c8fd2ae7d066d7d4b086 - md5: 8757561d3ea10ba178fb7fb888f33e3a + license: Apache-2.0 + license_family: Apache + size: 19686 + timestamp: 1735628718991 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-0.2.0-h22a84ea_10.conda + sha256: 526c934b897131bd274697649c3b1c492a7d66c03368885a954112468b3c1424 + md5: 346abe448f69949a65473b336856860a depends: - - __osx >=11.0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython + - libsentencepiece 0.2.0 he13a0af_10 - python_abi 3.12.* *_cp312 + - sentencepiece-python 0.2.0 py312h155166a_10 + - sentencepiece-spm 0.2.0 he13a0af_10 arch: arm64 platform: osx - license: BSD-3-Clause - license_family: BSD - size: 246269 - timestamp: 1737358485546 -- conda: https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.17.2-py312h66e93f0_0.conda - sha256: ed3a1700ecc5d38c7e7dc7d2802df1bc1da6ba3d6f6017448b8ded0affb4ae00 - md5: 669e63af87710f8d52fdec9d4d63b404 + license: Apache-2.0 + license_family: Apache + size: 19759 + timestamp: 1735628533490 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-python-0.2.0-py312hb6b8a2b_10.conda + sha256: 37df7fb659564587b950b39c936769d9b5095afb7bc223f42d6248a5540c6567 + md5: 7908b7b977e2e123a5f6a29906f2ce44 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 h8e10757_10 + - libstdcxx >=13 - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 arch: x86_64 platform: linux - license: BSD-2-Clause - license_family: BSD - size: 63590 - timestamp: 1736869574299 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/wrapt-1.17.2-py312hb2c0f52_0.conda - sha256: cc28914462a21b2f64d9b763a9733bfcbc811dd2975d0d2e6e429e35f5b6d59c - md5: 8a5c6e3f809bae085be369b62dc5d06a + license: Apache-2.0 + license_family: Apache + size: 2411182 + timestamp: 1735628106455 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-python-0.2.0-py312h197ff68_10.conda + sha256: a7c2c19cc397c7632e2630af49ddcff128f145c93ea493421e6f42bfa5e1d30b + md5: 5642e4545a3cf03e446fb3b3e9fd723b depends: - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 h6164ad9_10 + - libstdcxx >=13 - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 arch: aarch64 platform: linux - license: BSD-2-Clause - license_family: BSD - size: 63967 - timestamp: 1736869675870 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/wrapt-1.17.2-py312hea69d52_0.conda - sha256: 6a3e68b57de29802e8703d1791dcacb7613bfdc17bbb087c6b2ea2796e6893ef - md5: e49608c832fcf438f70cbcae09c3adc5 + license: Apache-2.0 + license_family: Apache + size: 2458076 + timestamp: 1735628298246 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-python-0.2.0-py312h155166a_10.conda + sha256: 2d59614aeafbf54cc718805798c11c2d0a3b4b8d947d1bd81c87c484b4883077 + md5: 6e11367ef670296fce01fc9860be944d depends: - __osx >=11.0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 he13a0af_10 - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 arch: arm64 platform: osx - license: BSD-2-Clause - license_family: BSD - size: 61198 - timestamp: 1736869673767 -- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-hb9d3cd8_0.conda - sha256: ed10c9283974d311855ae08a16dfd7e56241fac632aec3b92e3cfe73cff31038 - md5: f6ebe2cb3f82ba6c057dde5d9debe4f7 + license: Apache-2.0 + license_family: Apache + size: 2433303 + timestamp: 1735628083958 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-spm-0.2.0-h8e10757_10.conda + sha256: 6b55e1121545357d63c3aa0766931720e8aafc52d88641ba7631c8cbaa68c52f + md5: e977b7be5ac26c55825e121e00b90493 depends: - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 h8e10757_10 + - libstdcxx >=13 arch: x86_64 platform: linux - license: MIT - license_family: MIT - size: 14780 - timestamp: 1734229004433 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxau-1.0.12-h86ecc28_0.conda - sha256: 7829a0019b99ba462aece7592d2d7f42e12d12ccd3b9614e529de6ddba453685 - md5: d5397424399a66d33c80b1f2345a36a6 + license: Apache-2.0 + license_family: Apache + size: 89076 + timestamp: 1735628334078 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-spm-0.2.0-h6164ad9_10.conda + sha256: b98fc1028a8e8fbf309af383f9c837290a14e076e6c5533dc251694ea33ffc6e + md5: a4b75936c01dca3f089f02752b7ee325 depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 h6164ad9_10 + - libstdcxx >=13 arch: aarch64 platform: linux - license: MIT - license_family: MIT - size: 15873 - timestamp: 1734230458294 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxau-1.0.12-h5505292_0.conda - sha256: f33e6f013fc36ebc200f09ddead83468544cb5c353a3b50499b07b8c34e28a8d - md5: 50901e0764b7701d8ed7343496f4f301 + license: Apache-2.0 + license_family: Apache + size: 85983 + timestamp: 1735628693813 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-spm-0.2.0-he13a0af_10.conda + sha256: b760aeee02e2afbfcce3f559e8a227aa4c94139157b1702fdfb41a057dad0e52 + md5: 9b7300f23cd330da8664cd072c162e5f depends: - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 he13a0af_10 arch: arm64 platform: osx - license: MIT - license_family: MIT - size: 13593 - timestamp: 1734229104321 -- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb9d3cd8_0.conda - sha256: 6b250f3e59db07c2514057944a3ea2044d6a8cdde8a47b6497c254520fade1ee - md5: 8035c64cb77ed555e3f150b7b3972480 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - arch: x86_64 - platform: linux - license: MIT - license_family: MIT - size: 19901 - timestamp: 1727794976192 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxdmcp-1.1.5-h57736b2_0.conda - sha256: efcc150da5926cf244f757b8376d96a4db78bc15b8d90ca9f56ac6e75755971f - md5: 25a5a7b797fe6e084e04ffe2db02fc62 - depends: - - libgcc >=13 - arch: aarch64 - platform: linux - license: MIT - license_family: MIT - size: 20615 - timestamp: 1727796660574 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxdmcp-1.1.5-hd74edd7_0.conda - sha256: 9939a166d780700d81023546759102b33fdc2c5f11ef09f5f66c77210fd334c8 - md5: 77c447f48cab5d3a15ac224edb86a968 + license: Apache-2.0 + license_family: Apache + size: 83826 + timestamp: 1735628514667 +- conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + sha256: 41db0180680cc67c3fa76544ffd48d6a5679d96f4b71d7498a759e94edc9a2db + md5: a451d576819089b0d672f18768be0f65 depends: - - __osx >=11.0 - arch: arm64 - platform: osx + - python >=3.9 license: MIT license_family: MIT - size: 18487 - timestamp: 1727795205022 -- conda: https://conda.anaconda.org/conda-forge/linux-64/xxhash-0.8.2-hd590300_0.conda - sha256: 6fe74a8fd84ab0dc25e4dc3e0c22388dd8accb212897a208b14fe5d4fbb8fc2f - md5: f08fb5c89edfc4aadee1c81d4cfb1fa1 + size: 16385 + timestamp: 1733381032766 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda + sha256: e0569c9caa68bf476bead1bed3d79650bb080b532c64a4af7d8ca286c08dea4e + md5: d453b98d9c83e71da0741bb0ff4d76bc depends: - libgcc-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 arch: x86_64 platform: linux - license: BSD-2-Clause + license: TCL license_family: BSD - size: 97691 - timestamp: 1689951608120 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xxhash-0.8.2-h31becfc_0.conda - sha256: 4c526aed70b579d80e5c20d32130b6bc8bde59b3250d43c2b5269755f4da8a9b - md5: bb9faf6857108a9f62ebb4dab6ef05da + size: 3318875 + timestamp: 1699202167581 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda + sha256: 7fa27cc512d3a783f38bd16bbbffc008807372499d5b65d089a8e43bde9db267 + md5: f75105e0585851f818e0009dd1dde4dc depends: - libgcc-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 arch: aarch64 platform: linux - license: BSD-2-Clause - license_family: BSD - size: 102442 - timestamp: 1689951682147 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/xxhash-0.8.2-hb547adb_0.conda - sha256: a70f59f7221ee72c45b39a6b36a33eb9c717ba01921cce1a3c361a4676979a2e - md5: 144cd3b88706507f332f5eb5fb83a33b - arch: arm64 - platform: osx - license: BSD-2-Clause + license: TCL license_family: BSD - size: 97593 - timestamp: 1689951969732 -- conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 - sha256: a4e34c710eeb26945bdbdaba82d3d74f60a78f54a874ec10d373811a5d217535 - md5: 4cb3ad778ec2d5a7acbdf254eb1c42ae - depends: - - libgcc-ng >=9.4.0 - arch: x86_64 - platform: linux - license: MIT - license_family: MIT - size: 89141 - timestamp: 1641346969816 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yaml-0.2.5-hf897c2e_2.tar.bz2 - sha256: 8bc601d6dbe249eba44b3c456765265cd8f42ef1e778f8df9b0c9c88b8558d7e - md5: b853307650cb226731f653aa623936a4 + size: 3351802 + timestamp: 1695506242997 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda + sha256: 72457ad031b4c048e5891f3f6cb27a53cb479db68a52d965f796910e71a403a8 + md5: b50a57ba89c32b62428b71a875291c9b depends: - - libgcc-ng >=9.4.0 - arch: aarch64 - platform: linux - license: MIT - license_family: MIT - size: 92927 - timestamp: 1641347626613 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 - sha256: 93181a04ba8cfecfdfb162fc958436d868cc37db504c58078eab4c1a3e57fbb7 - md5: 4bb3f014845110883a3c5ee811fd84b4 + - libzlib >=1.2.13,<2.0.0a0 arch: arm64 platform: osx - license: MIT - license_family: MIT - size: 88016 - timestamp: 1641347076660 -- conda: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.18.3-py312h178313f_1.conda - sha256: 6b054c93dd19fd7544af51b41a8eacca2ab62271f6c0c5a2a0cffe80dc37a0ce - md5: 6822c49f294d4355f19d314b8b6063d8 + license: TCL + license_family: BSD + size: 3145523 + timestamp: 1699202432999 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda + sha256: 062a3a3a37fa8615ce57929ba7e982c76f5a5810bcebd435950f6d6c4147c310 + md5: e417822cb989e80a0d2b1b576fdd1657 depends: - __glibc >=2.17,<3.0.a0 - - idna >=2.0 - libgcc >=13 - - multidict >=4.0 - - propcache >=0.2.1 - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 arch: x86_64 platform: linux license: Apache-2.0 license_family: Apache - size: 152305 - timestamp: 1737575898300 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.18.3-py312hcc812fe_1.conda - sha256: bfa211c0dd5dbb308788f055277dc428b7923ceb2de6a22ea98bc17cf306f9f5 - md5: d14c78abdd6109e2b7162f53b6cc1e77 + size: 840414 + timestamp: 1732616043734 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py312h52516f5_0.conda + sha256: 4c19a544354172b2273553267e734795a6da3c78a04c2d19f8e9e159ca3178bc + md5: e28996d9d2d44d777b7e6fb12f63715b depends: - - idna >=2.0 - libgcc >=13 - - multidict >=4.0 - - propcache >=0.2.1 - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 arch: aarch64 platform: linux license: Apache-2.0 license_family: Apache - size: 149654 - timestamp: 1737576065314 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.18.3-py312h998013c_1.conda - sha256: 48821d23567ca0f853eee6f7812c74392867e123798b5b3c44f58758d8eb580e - md5: 092d3b40acc67c470f379049be343a7a + size: 841662 + timestamp: 1732616934923 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda + sha256: 964a2705a36c50040c967b18b45b9cc8de3c2aff4af546979a574e0b38e58e39 + md5: fb0605888a475d6a380ae1d1a819d976 depends: - __osx >=11.0 - - idna >=2.0 - - multidict >=4.0 - - propcache >=0.2.1 - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 @@ -7324,8 +2090,41 @@ packages: platform: osx license: Apache-2.0 license_family: Apache - size: 145543 - timestamp: 1737576074753 + size: 842549 + timestamp: 1732616081362 +- conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + sha256: 11e2c85468ae9902d24a27137b6b39b4a78099806e551d390e394a8c34b48e40 + md5: 9efbfdc37242619130ea42b1cc4ed861 + depends: + - colorama + - python >=3.9 + license: MPL-2.0 or MIT + size: 89498 + timestamp: 1735661472632 +- conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + sha256: f39a5620c6e8e9e98357507262a7869de2ae8cc07da8b7f84e517c9fd6c2b959 + md5: 019a7385be9af33791c989871317e1ed + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 110051 + timestamp: 1733367480074 +- conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + sha256: 337be7af5af8b2817f115b3b68870208b30c31d3439bec07bfb2d8f4823e3568 + md5: d17f13df8b65464ca316cbc000a3cb64 + depends: + - python >=3.9 + license: PSF-2.0 + license_family: PSF + size: 39637 + timestamp: 1733188758212 +- conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + sha256: c4b1ae8a2931fe9b274c44af29c5475a85b37693999f8c792dad0f8c6734b1de + md5: dbcace4706afdfb7eb891f7b37d07c04 + license: LicenseRef-Public-Domain + size: 122921 + timestamp: 1737119101255 - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda sha256: a4dc72c96848f764bb5a5176aa93dd1e9b9e52804137b99daeebba277b31ea10 md5: 3947a35e916fcc6b9825449affbf4214 @@ -7378,129 +2177,3 @@ packages: license_family: MIT size: 21809 timestamp: 1732827613585 -- conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.1-hb9d3cd8_2.conda - sha256: 5d7c0e5f0005f74112a34a7425179f4eb6e73c92f5d109e6af4ddeca407c92ab - md5: c9f075ab2f33b3bbee9e62d4ad0a6cd8 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libzlib 1.3.1 hb9d3cd8_2 - arch: x86_64 - platform: linux - license: Zlib - license_family: Other - size: 92286 - timestamp: 1727963153079 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zlib-1.3.1-h86ecc28_2.conda - sha256: b4f649aa3ecdae384d5dad7074e198bff120edd3dfb816588e31738fc6d627b1 - md5: bc230abb5d21b63ff4799b0e75204783 - depends: - - libgcc >=13 - - libzlib 1.3.1 h86ecc28_2 - arch: aarch64 - platform: linux - license: Zlib - license_family: Other - size: 95582 - timestamp: 1727963203597 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zlib-1.3.1-h8359307_2.conda - sha256: 58f8860756680a4831c1bf4f294e2354d187f2e999791d53b1941834c4b37430 - md5: e3170d898ca6cb48f1bb567afb92f775 - depends: - - __osx >=11.0 - - libzlib 1.3.1 h8359307_2 - arch: arm64 - platform: osx - license: Zlib - license_family: Other - size: 77606 - timestamp: 1727963209370 -- conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312hef9b889_1.conda - sha256: b97015e146437283f2213ff0e95abdc8e2480150634d81fbae6b96ee09f5e50b - md5: 8b7069e9792ee4e5b4919a7a306d2e67 - depends: - - __glibc >=2.17,<3.0.a0 - - cffi >=1.11 - - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - - zstd >=1.5.6,<1.5.7.0a0 - - zstd >=1.5.6,<1.6.0a0 - arch: x86_64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 419552 - timestamp: 1725305670210 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstandard-0.23.0-py312hb698573_1.conda - sha256: 2681c2a249752bdc7978e59ee2f34fcdfcbfda80029b84b8e5fec8dbc9e3af25 - md5: ffcb8e97e62af42075e0e5f46bb9856e - depends: - - cffi >=1.11 - - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - - zstd >=1.5.6,<1.5.7.0a0 - - zstd >=1.5.6,<1.6.0a0 - arch: aarch64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 392496 - timestamp: 1725305808244 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py312h15fbf35_1.conda - sha256: d00ca25c1e28fd31199b26a94f8c96574475704a825d244d7a6351ad3745eeeb - md5: a4cde595509a7ad9c13b1a3809bcfe51 - depends: - - __osx >=11.0 - - cffi >=1.11 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - - zstd >=1.5.6,<1.5.7.0a0 - - zstd >=1.5.6,<1.6.0a0 - arch: arm64 - platform: osx - license: BSD-3-Clause - license_family: BSD - size: 330788 - timestamp: 1725305806565 -- conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda - sha256: c558b9cc01d9c1444031bd1ce4b9cff86f9085765f17627a6cd85fc623c8a02b - md5: 4d056880988120e29d75bfff282e0f45 - depends: - - libgcc-ng >=12 - - libstdcxx-ng >=12 - - libzlib >=1.2.13,<2.0.0a0 - arch: x86_64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 554846 - timestamp: 1714722996770 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.6-h02f22dd_0.conda - sha256: 484f9d0722c77685ae379fbff3ccd662af9ead7e59eb39cd6d0c677cdf25ff6c - md5: be8d5f8cf21aed237b8b182ea86b3dd6 - depends: - - libgcc-ng >=12 - - libstdcxx-ng >=12 - - libzlib >=1.2.13,<2.0.0a0 - arch: aarch64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 539937 - timestamp: 1714723130243 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.6-hb46c0d2_0.conda - sha256: 2d4fd1ff7ee79cd954ca8e81abf11d9d49954dd1fef80f27289e2402ae9c2e09 - md5: d96942c06c3e84bfcc5efb038724a7fd - depends: - - __osx >=11.0 - - libzlib >=1.2.13,<2.0.0a0 - arch: arm64 - platform: osx - license: BSD-3-Clause - license_family: BSD - size: 405089 - timestamp: 1714723101397 diff --git a/magic.lock b/magic.lock index 2bd6c23dd7..977ef8e028 100644 --- a/magic.lock +++ b/magic.lock @@ -8,90 +8,20 @@ environments: linux-64: - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.12-py312h178313f_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.8.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.1.0-pyh71513ae_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.1-h205f482_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.1-h1a47875_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.10.6-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.3.0-h4e1184b_5.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.0-h7959bf6_11.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.2-hefd7a92_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-h173a860_6.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h11f4f37_12.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.9-he1b24dc_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.2-h4e1184b_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-h4e1184b_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.9-he0e7f3f_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.489-h4d475cb_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.10.0-h113e628_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.13.0-h3cf044e_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-common-cpp-12.8.0-h736e048_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-files-datalake-cpp-12.12.0-ha633028_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/backoff-2.2.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py312h2ec8cdc_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.4-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2025.1.31-hbcca054_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.12.14-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py312h06ac9bb_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.18-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda - - 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.8-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.17.0-pyhd8ed1ab_0.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-py312h178313f_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2025.2.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/gflags-2.2.2-h5888daf_1005.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/glog-0.7.1-hbabe93e_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/httptools-0.6.4-py312h66e93f0_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.28.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.16-hb7c19ff_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-19.0.0-h00a82cf_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-19.0.0-hcb10f89_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-19.0.0-hcb10f89_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-19.0.0-h08228c5_8_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-28_h59b9bed_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hb9d3cd8_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hb9d3cd8_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.1.0-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-28_he106b2a_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libcrc32c-1.1.2-h9c3ff4c_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.11.1-h332b0f4_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.23-h4ddbbb0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libevent-2.1.12-hf998b51_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.2-h7f98852_5.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h77fa898_1.conda @@ -99,223 +29,65 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hd5240d6_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h77fa898_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.34.0-h2b5623c_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.34.0-h0121fbd_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.67.1-h25350d4_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-hd590300_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-28_h7ac8fdf_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.28-pthreads_h94d23a6_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-1.18.0-hfcad708_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-headers-1.18.0-ha770c72_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-19.0.0-h081d1f1_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.46-h943b412_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsentencepiece-0.2.0-h8e10757_10.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.48.0-hee588c1_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hf672d98_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-hc0a3c3a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libthrift-0.21.0-h0e7cc3e_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hd9ff511_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.10.0-h4c51ac1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.50.0-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.5.0-h851e524_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.5-h0d44e9d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/lit-19.1.7-pyhd8ed1ab_1.conda - - 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-25.1.0.dev2025020605-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025020605-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025020605-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020605-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-25.1.0.dev2025020605-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.modular.com/max-nightly/noarch/max-25.1.0.dev2025020700-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025020700-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025020700-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020700-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020700-release.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-h2d0b736_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/nlohmann_json-3.11.3-he02047a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.3-h5fbd93e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.0-h7b32b05_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.29.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.29.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.29.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-prometheus-1.12.0rc1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.29.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.29.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.50b0-pyh3cfb1c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/orc-2.0.3-h12ee42a_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.3-py312hf9745cd_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-11.1.0-py312h80c1187_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/prometheus-cpp-1.3.0-ha5d0236_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.1-py312h178313f_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/protobuf-5.28.3-py312h2ec8cdc_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-19.0.0-py312h7900ff3_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-19.0.0-py312h01725c0_0_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.6-pyh3cfb1c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.27.2-py312h12e396e_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.7.1-pyh3cfb1c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pyinstrument-5.0.1-py312h66e93f0_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.8-h9e4cc4f_1_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.20-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/python-xxhash-3.5.0-py312h66e93f0_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py312h178313f_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.1-py312hbf22597_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/re2-2024.07.02-h9925aae_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda - - 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.11-h072c03f_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/safetensors-0.5.2-py312h12e396e_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-0.2.0-hc8f76dd_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-python-0.2.0-py312hb6b8a2b_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-spm-0.2.0-h8e10757_10.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-h8bd8927_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.2.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.45.3-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.21.0-py312h8360d73_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.48.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.34.0-pyh31011fe_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.34.0-h31011fe_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/uvloop-0.21.0-py312h66e93f0_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/watchfiles-1.0.4-py312h12e396e_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/websockets-14.2-py312h66e93f0_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.17.2-py312h66e93f0_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xxhash-0.8.2-hd590300_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.18.3-py312h178313f_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.1-hb9d3cd8_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312hef9b889_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda linux-aarch64: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.12-py312hcc812fe_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.8.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.1.0-pyh71513ae_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.1-hb7ec8d5_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.1-h740c5af_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-common-0.10.6-h86ecc28_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-compression-0.3.0-h0f0193d_5.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-event-stream-0.5.0-hcbd8f92_11.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.2-h3df160d_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-hfd5ba81_6.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h5f50e26_12.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.9-h05b070f_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.2-h0f0193d_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h0f0193d_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.9-hab3ce66_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.489-h88461e4_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-core-cpp-1.14.0-h1887c18_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-identity-cpp-1.10.0-h47b0b28_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-blobs-cpp-12.13.0-h185ecfd_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-common-cpp-12.8.0-h1b94036_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-files-datalake-cpp-12.12.0-h37d6d07_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/backoff-2.2.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/brotli-python-1.1.0-py312h6f74592_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h68df207_7.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/c-ares-1.34.4-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2025.1.31-hcefe29a_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.12.14-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cffi-1.17.1-py312hac81daf_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.18-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda - - 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.8-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.17.0-pyhd8ed1ab_0.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-py312hcc812fe_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2025.2.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gflags-2.2.2-h5ad3122_1005.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/glog-0.7.1-h468a4a4_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/httptools-0.6.4-py312hb2c0f52_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.28.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/keyutils-1.6.1-h4e544f5_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/krb5-1.21.3-h50a48e9_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lcms2-2.16-h922389a_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.0.0-h4de3ea5_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h18dbdb1_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-19.0.0-h03ebaaf_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-19.0.0-h3b568fd_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-19.0.0-h3b568fd_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-19.0.0-h1e9d426_8_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-28_h1a9f1db_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlicommon-1.1.0-h86ecc28_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlidec-1.1.0-h86ecc28_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlienc-1.1.0-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-28_hab92f65_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcrc32c-1.1.2-h01db608_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcurl-8.11.1-h6702fde_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libdeflate-1.23-h5e3c512_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20250104-pl5321h976ea20_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libev-4.33-h31becfc_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libevent-2.1.12-h4ba1bb4_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.6.4-h5ad3122_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.4.2-h3557bc0_5.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-14.2.0-he277a41_1.conda @@ -323,350 +95,106 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-2.34.0-hccf9d24_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-storage-2.34.0-hb9b2b65_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgrpc-1.67.1-hf7ccdd3_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libiconv-1.17-h31becfc_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libjpeg-turbo-3.0.0-h31becfc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-28_h411afd4_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.4-h86ecc28_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnghttp2-1.64.0-hc8609a4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.28-pthreads_h9d3fd7e_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopentelemetry-cpp-1.18.0-h60b47f9_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopentelemetry-cpp-headers-1.18.0-h8af1aa0_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-19.0.0-hfc78867_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.46-hec79eb8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.3-h44a3b7b_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsentencepiece-0.2.0-h6164ad9_10.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.20-h68df207_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.48.0-h5eb1b54_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libssh2-1.11.1-ha41c0db_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libthrift-0.21.0-h154c74f_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.0-h88f7998_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.10.0-ha346350_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuv-1.50.0-h86ecc28_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libwebp-base-1.5.0-h0886dbf_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcb-1.17.0-h262b8f6_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.5-h2e0c361_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/lit-19.1.7-pyhd8ed1ab_1.conda - - 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-25.1.0.dev2025020605-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025020605-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025020605-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020605-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-25.1.0.dev2025020605-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.modular.com/max-nightly/noarch/max-25.1.0.dev2025020700-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025020700-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025020700-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020700-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020700-release.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-ha32ae93_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/nlohmann_json-3.11.3-h0a1ffab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openjpeg-2.5.3-h3f56577_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.0-hd08dc88_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.29.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.29.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.29.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-prometheus-1.12.0rc1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.29.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.29.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.50b0-pyh3cfb1c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/orc-2.0.3-hdd485aa_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pandas-2.2.3-py312ha2895bd_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pillow-11.1.0-py312h719f0cf_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/prometheus-cpp-1.3.0-h7938499_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.2.1-py312hcc812fe_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/protobuf-5.28.3-py312h6f74592_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pthread-stubs-0.4-h86ecc28_1002.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-19.0.0-py312h8025657_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-19.0.0-py312h66f7834_0_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.6-pyh3cfb1c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pydantic-core-2.27.2-py312h8cbf658_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.7.1-pyh3cfb1c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyinstrument-5.0.1-py312hb2c0f52_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.8-h1683364_1_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.20-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-xxhash-3.5.0-py312h52516f5_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.12-5_cp312.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyyaml-6.0.2-py312hcc812fe_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyzmq-26.2.1-py312h2427ae1_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/re2-2024.07.02-haa97905_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8fc344f_1.conda - - 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.11-h3caee7a_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/safetensors-0.5.2-py312h8cbf658_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-0.2.0-h6c1b121_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-python-0.2.0-py312h197ff68_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-spm-0.2.0-h6164ad9_10.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-hd4fb6f5_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.2.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.45.3-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.21.0-py312ha0d6ea1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py312h52516f5_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.48.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.34.0-pyh31011fe_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.34.0-h31011fe_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/uvloop-0.21.0-py312hb2c0f52_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/watchfiles-1.0.4-py312h8cbf658_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/websockets-14.2-py312hb2c0f52_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/wrapt-1.17.2-py312hb2c0f52_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxau-1.0.12-h86ecc28_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxdmcp-1.1.5-h57736b2_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xxhash-0.8.2-h31becfc_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yaml-0.2.5-hf897c2e_2.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.18.3-py312hcc812fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zeromq-4.3.5-h5efb499_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zlib-1.3.1-h86ecc28_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstandard-0.23.0-py312hb698573_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.6-h02f22dd_0.conda osx-arm64: - - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.12-py312h998013c_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.8.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.1.0-pyh71513ae_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.1-hfc2798a_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.1-hc8a0bd2_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.10.6-h5505292_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-compression-0.3.0-hc8a0bd2_5.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.0-h54f970a_11.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.2-h96aa502_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-haba67d1_6.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h24f418c_12.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.9-hf37e03c_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.2-hc8a0bd2_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-hc8a0bd2_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.9-ha81f72f_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.489-h0e5014b_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.14.0-hd50102c_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.10.0-hc602bab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-blobs-cpp-12.13.0-h7585a09_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-common-cpp-12.8.0-h9ca1f76_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-files-datalake-cpp-12.12.0-hcdd55da_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/backoff-2.2.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py312hde4cb15_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.4-h5505292_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2025.1.31-hf0a4a13_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.12.14-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.1-py312h0fad829_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.18-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda - - 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.8-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.17.0-pyhd8ed1ab_0.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-py312h998013c_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2025.2.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gflags-2.2.2-hf9b8971_1005.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/glog-0.7.1-heb240a5_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/httptools-0.6.4-py312hea69d52_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.28.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.16-ha0e7c42_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_h07bc746_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-19.0.0-h819e3af_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-19.0.0-hf07054f_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-19.0.0-hf07054f_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-19.0.0-h4239455_8_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-28_h10e41b3_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.1.0-hd74edd7_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.1.0-hd74edd7_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlienc-1.1.0-hd74edd7_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-28_hb3479ef_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcrc32c-1.1.2-hbdafb3b_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.11.1-h73640d1_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.23-hec38601_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libev-4.33-h93a5062_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libevent-2.1.12-h2757513_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.4-h286801f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-2.34.0-hdbe95d5_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-storage-2.34.0-h7081f7f_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgrpc-1.67.1-h0a426d6_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.17-h0d3ecfb_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.0.0-hb547adb_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-28_hc9a63f6_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.4-h39f12f2_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.64.0-h6d7220d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.28-openmp_hf332438_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopentelemetry-cpp-1.18.0-h0c05b2d_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopentelemetry-cpp-headers-1.18.0-hce30654_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-19.0.0-h636d7b7_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.46-h3783ad8_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.3-h3bd63a1_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h07bc746_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsentencepiece-0.2.0-he13a0af_10.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.48.0-h3f77e49_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.1-h9cc3647_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libthrift-0.21.0-h64651cc_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-h551f018_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.10.0-hda25de7_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libuv-1.50.0-h5505292_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.5.0-h2471fea_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxcb-1.17.0-hdb1d25a_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.5-h178c5d8_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/lit-19.1.7-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda - - 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-25.1.0.dev2025020605-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025020605-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025020605-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020605-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-25.1.0.dev2025020605-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.modular.com/max-nightly/noarch/max-25.1.0.dev2025020700-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025020700-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025020700-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020700-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020700-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/nlohmann_json-3.11.3-h00cdb27_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openjpeg-2.5.3-h8a3d83b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.0-h81ee809_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.29.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.29.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.29.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-prometheus-1.12.0rc1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.29.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.29.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.50b0-pyh3cfb1c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/orc-2.0.3-h0ff2369_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.3-py312hcd31e36_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-11.1.0-py312h50aef2c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/prometheus-cpp-1.3.0-h0967b3e_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.1-py312h998013c_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/protobuf-5.28.3-py312hd8f9ff3_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pthread-stubs-0.4-hd74edd7_1002.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-19.0.0-py312h1f38498_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-19.0.0-py312hc40f475_0_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.6-pyh3cfb1c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.27.2-py312hcd83bfe_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.7.1-pyh3cfb1c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyinstrument-5.0.1-py312hea69d52_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.8-hc22306f_1_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.20-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-xxhash-3.5.0-py312h024a12e_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-5_cp312.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py312h998013c_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.1-py312hf4875e0_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/re2-2024.07.02-h6589ca4_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h92ec313_1.conda - - 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.5.2-py312hcd83bfe_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-0.2.0-h22a84ea_10.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-python-0.2.0-py312h155166a_10.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-spm-0.2.0-he13a0af_10.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-h98b9ce2_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.2.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.45.3-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.21.0-py312hf3e4074_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.48.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.34.0-pyh31011fe_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.34.0-h31011fe_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/uvloop-0.21.0-py312h0bf5046_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/watchfiles-1.0.4-py312hcd83bfe_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/websockets-14.2-py312hea69d52_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/wrapt-1.17.2-py312hea69d52_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxau-1.0.12-h5505292_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxdmcp-1.1.5-hd74edd7_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xxhash-0.8.2-hb547adb_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.18.3-py312h998013c_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zlib-1.3.1-h8359307_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py312h15fbf35_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.6-hb46c0d2_0.conda packages: - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 sha256: fe51de6107f9edc7aa4f786a70f4a883943bc9d39b3bb7307c04c41410990726 @@ -705,6630 +233,1868 @@ packages: license_family: BSD size: 23712 timestamp: 1650670790230 -- conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_1.conda - sha256: 95d4713e49ea92ae50cf42393683ede706b7875af5f7cb14c253438180afa732 - md5: 296b403617bafa89df4971567af79013 - depends: - - python >=3.9 - license: PSF-2.0 - license_family: PSF - size: 19351 - timestamp: 1733332029649 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.12-py312h178313f_0.conda - sha256: 223f271deceaf71d0cbee21162084104a6eca06e79c04ecb322706be3e406ea1 - md5: 9f96d8b6fb9bab11e46c12132283b5b1 +- conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda + sha256: 5ced96500d945fb286c9c838e54fa759aa04a7129c59800f0846b4335cee770d + md5: 62ee74e96c5ebb0af99386de58cf9553 depends: - __glibc >=2.17,<3.0.a0 - - aiohappyeyeballs >=2.3.0 - - aiosignal >=1.1.2 - - attrs >=17.3.0 - - frozenlist >=1.1.1 - - libgcc >=13 - - multidict >=4.5,<7.0 - - propcache >=0.2.0 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - - yarl >=1.17.0,<2.0 + - libgcc-ng >=12 arch: x86_64 platform: linux - license: MIT AND Apache-2.0 - license_family: Apache - size: 915782 - timestamp: 1738824701518 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.12-py312hcc812fe_0.conda - sha256: 8d865017a2f2b2ab9a23e0ab325730c79fb7dc38246f46f4b58da24d7a324805 - md5: e26817b48ca6e2035f69d88165a792f6 - depends: - - aiohappyeyeballs >=2.3.0 - - aiosignal >=1.1.2 - - attrs >=17.3.0 - - frozenlist >=1.1.1 - - libgcc >=13 - - multidict >=4.5,<7.0 - - propcache >=0.2.0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - - yarl >=1.17.0,<2.0 + license: bzip2-1.0.6 + license_family: BSD + size: 252783 + timestamp: 1720974456583 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h68df207_7.conda + sha256: 2258b0b33e1cb3a9852d47557984abb6e7ea58e3d7f92706ec1f8e879290c4cb + md5: 56398c28220513b9ea13d7b450acfb20 + depends: + - libgcc-ng >=12 arch: aarch64 platform: linux - license: MIT AND Apache-2.0 - license_family: Apache - size: 901058 - timestamp: 1738823269469 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.12-py312h998013c_0.conda - sha256: a4d04942bdeedbb7260b41eafb0302b6f8c3799f578c4389984c084a8fc34c16 - md5: 7675cee14b7e7d9ccf17ad37a4bdf53a + license: bzip2-1.0.6 + license_family: BSD + size: 189884 + timestamp: 1720974504976 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda + sha256: adfa71f158cbd872a36394c56c3568e6034aa55c623634b37a4836bd036e6b91 + md5: fc6948412dbbbe9a4c9ddbbcfe0a79ab depends: - __osx >=11.0 - - aiohappyeyeballs >=2.3.0 - - aiosignal >=1.1.2 - - attrs >=17.3.0 - - frozenlist >=1.1.1 - - multidict >=4.5,<7.0 - - propcache >=0.2.0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - - yarl >=1.17.0,<2.0 arch: arm64 platform: osx - license: MIT AND Apache-2.0 - license_family: Apache - size: 889104 - timestamp: 1738823362301 -- conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda - sha256: 7de8ced1918bbdadecf8e1c1c68237fe5709c097bd9e0d254f4cad118f4345d0 - md5: 1a3981115a398535dbe3f6d5faae3d36 + license: bzip2-1.0.6 + license_family: BSD + size: 122909 + timestamp: 1720974522888 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2025.1.31-hbcca054_0.conda + sha256: bf832198976d559ab44d6cdb315642655547e26d826e34da67cbee6624cda189 + md5: 19f3a56f68d2fd06c516076bff482c52 + arch: x86_64 + platform: linux + license: ISC + size: 158144 + timestamp: 1738298224464 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2025.1.31-hcefe29a_0.conda + sha256: 66c6408ee461593cfdb2d78d82e6ed74d04a04ccb51df3ef8a5f35148c9c6eec + md5: 462cb166cd2e26a396f856510a3aff67 + arch: aarch64 + platform: linux + license: ISC + size: 158290 + timestamp: 1738299057652 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2025.1.31-hf0a4a13_0.conda + sha256: 7e12816618173fe70f5c638b72adf4bfd4ddabf27794369bb17871c5bb75b9f9 + md5: 3569d6a9141adc64d2fe4797f3289e06 + arch: arm64 + platform: osx + license: ISC + size: 158425 + timestamp: 1738298167688 +- conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda + sha256: c920d23cd1fcf565031c679adb62d848af60d6fbb0edc2d50ba475cea4f0d8ab + md5: f22f4d4970e09d68a10b922cbb0408d3 depends: - - frozenlist >=1.1.0 + - __unix - python >=3.9 - license: Apache-2.0 - license_family: APACHE - size: 13229 - timestamp: 1734342253061 -- conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - sha256: e0ea1ba78fbb64f17062601edda82097fcf815012cf52bb704150a2668110d48 - md5: 2934f256a8acfe48f6ebb4fce6cde29c + license: BSD-3-Clause + license_family: BSD + size: 84705 + timestamp: 1734858922844 +- conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + sha256: ab29d57dc70786c1269633ba3dff20288b81664d3ff8d21af995742e2bb03287 + md5: 962b9857ee8e7018c22f2776ffa0b2d7 depends: - python >=3.9 - - typing-extensions >=4.0.0 - license: MIT - license_family: MIT - size: 18074 - timestamp: 1733247158254 -- conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.8.0-pyhd8ed1ab_0.conda - sha256: f1455d2953e3eb6d71bc49881c8558d8e01888469dfd21061dd48afb6183e836 - md5: 848d25bfbadf020ee4d4ba90e5668252 - depends: - - exceptiongroup >=1.0.2 - - idna >=2.8 + license: BSD-3-Clause + license_family: BSD + size: 27011 + timestamp: 1733218222191 +- conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + sha256: 598951ebdb23e25e4cec4bbff0ae369cec65ead80b50bc08b441d8e54de5cf03 + md5: f4b39bf00c69f56ac01e020ebfac066c + depends: - python >=3.9 - - sniffio >=1.1 - - typing_extensions >=4.5 - constrains: - - trio >=0.26.1 - - uvloop >=0.21 - license: MIT - license_family: MIT - size: 115305 - timestamp: 1736174485476 -- conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.1.0-pyh71513ae_0.conda - sha256: 1f267886522dfb9ae4e5ebbc3135b5eb13cff27bdbfe8d881a4d893459166ab4 - md5: 2cc3f588512f04f3a0c64b4e9bedc02d + - zipp >=0.5 + license: Apache-2.0 + license_family: APACHE + size: 29141 + timestamp: 1737420302391 +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + sha256: 19d8bd5bb2fde910ec59e081eeb59529491995ce0d653a5209366611023a0b3a + md5: 4ebae00eae9705b0c3d6d1018a81d047 depends: + - importlib-metadata >=4.8.3 + - jupyter_core >=4.12,!=5.0.* - python >=3.9 - license: MIT - license_family: MIT - size: 56370 - timestamp: 1737819298139 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.1-h205f482_0.conda - sha256: ebe5e33249f37f6bb481de99581ebdc92dbfcf1b6915609bcf3c9e78661d6352 - md5: 9c500858e88df50af3cc883d194de78a + - python-dateutil >=2.8.2 + - pyzmq >=23.0 + - tornado >=6.2 + - traitlets >=5.3 + license: BSD-3-Clause + license_family: BSD + size: 106342 + timestamp: 1733441040958 +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + sha256: 732b1e8536bc22a5a174baa79842d79db2f4956d90293dd82dc1b3f6099bcccd + md5: 0a2980dada0dd7fd0998f0342308b1b1 depends: - - __glibc >=2.17,<3.0.a0 - - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - aws-c-http >=0.9.2,<0.9.3.0a0 - - aws-c-io >=0.15.3,<0.15.4.0a0 - - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 - - libgcc >=13 + - __unix + - platformdirs >=2.5 + - python >=3.8 + - traitlets >=5.3 + license: BSD-3-Clause + license_family: BSD + size: 57671 + timestamp: 1727163547058 +- conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 + sha256: 150c05a6e538610ca7c43beb3a40d65c90537497a4f6a5f4d15ec0451b6f5ebb + md5: 30186d27e2c9fa62b45fb1476b7200e3 + depends: + - libgcc-ng >=10.3.0 arch: x86_64 platform: linux - license: Apache-2.0 - license_family: Apache - size: 108111 - timestamp: 1737509831651 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.1-hb7ec8d5_0.conda - sha256: e1e6c9267a4d9af30b1d28c11a9041b17b7840ff83ef08614145a2a4f444f5b4 - md5: 2630f030652970a5531e492f6b2a6dd3 - depends: - - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - aws-c-http >=0.9.2,<0.9.3.0a0 - - aws-c-io >=0.15.3,<0.15.4.0a0 - - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 - - libgcc >=13 + license: LGPL-2.1-or-later + size: 117831 + timestamp: 1646151697040 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/keyutils-1.6.1-h4e544f5_0.tar.bz2 + sha256: 6d4233d97a9b38acbb26e1268bcf8c10a8e79c2aed7e5a385ec3769967e3e65b + md5: 1f24853e59c68892452ef94ddd8afd4b + depends: + - libgcc-ng >=10.3.0 arch: aarch64 platform: linux - license: Apache-2.0 - license_family: Apache - size: 112658 - timestamp: 1737509863269 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.1-hfc2798a_0.conda - sha256: 5a60d196a585b25d1446fb973009e4e648e8d70beaa2793787243ede6da0fd9a - md5: 0abd67c0f7b60d50348fbb32fef50b65 - depends: - - __osx >=11.0 - - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - aws-c-http >=0.9.2,<0.9.3.0a0 - - aws-c-io >=0.15.3,<0.15.4.0a0 - - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: Apache - size: 92562 - timestamp: 1737509877079 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.1-h1a47875_3.conda - sha256: 095ac824ea9303eff67e04090ae531d9eb33d2bf8f82eaade39b839c421e16e8 - md5: 55a8561fdbbbd34f50f57d9be12ed084 + license: LGPL-2.1-or-later + size: 112327 + timestamp: 1646166857935 +- conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda + sha256: 99df692f7a8a5c27cd14b5fb1374ee55e756631b9c3d659ed3ee60830249b238 + md5: 3f43953b7d3fb3aaa1d0d0723d91e368 depends: - - __glibc >=2.17,<3.0.a0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - libgcc >=13 + - keyutils >=1.6.1,<2.0a0 + - libedit >=3.1.20191231,<3.2.0a0 + - libedit >=3.1.20191231,<4.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 - openssl >=3.3.1,<4.0a0 arch: x86_64 platform: linux - license: Apache-2.0 - license_family: Apache - size: 47601 - timestamp: 1733991564405 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.1-h740c5af_3.conda - sha256: c5c7961d48ca7320ed3560c036f7aa5244df4b85d9657f70aacc5faba3e1509a - md5: 57ed2c445d7ef01d121b9bcea0522913 + license: MIT + license_family: MIT + size: 1370023 + timestamp: 1719463201255 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/krb5-1.21.3-h50a48e9_0.conda + sha256: 0ec272afcf7ea7fbf007e07a3b4678384b7da4047348107b2ae02630a570a815 + md5: 29c10432a2ca1472b53f299ffb2ffa37 depends: - - aws-c-common >=0.10.6,<0.10.7.0a0 - - libgcc >=13 + - keyutils >=1.6.1,<2.0a0 + - libedit >=3.1.20191231,<3.2.0a0 + - libedit >=3.1.20191231,<4.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 - openssl >=3.3.1,<4.0a0 arch: aarch64 platform: linux - license: Apache-2.0 - license_family: Apache - size: 50036 - timestamp: 1733991581303 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.1-hc8a0bd2_3.conda - sha256: 1f44be36e1daa17b4b081debb8aee492d13571084f38b503ad13e869fef24fe4 - md5: 8b0ce61384e5a33d2b301a64f3d22ac5 + license: MIT + license_family: MIT + size: 1474620 + timestamp: 1719463205834 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda + sha256: 4442f957c3c77d69d9da3521268cad5d54c9033f1a73f99cde0a3658937b159b + md5: c6dc8a0fdec13a0565936655c33069a1 depends: - __osx >=11.0 - - aws-c-common >=0.10.6,<0.10.7.0a0 + - libcxx >=16 + - libedit >=3.1.20191231,<3.2.0a0 + - libedit >=3.1.20191231,<4.0a0 - openssl >=3.3.1,<4.0a0 arch: arm64 platform: osx - license: Apache-2.0 - license_family: Apache - size: 39925 - timestamp: 1733991649383 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.10.6-hb9d3cd8_0.conda - sha256: 496e92f2150fdc351eacf6e236015deedb3d0d3114f8e5954341cbf9f3dda257 - md5: d7d4680337a14001b0e043e96529409b + license: MIT + license_family: MIT + size: 1155530 + timestamp: 1719463474401 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_2.conda + sha256: 7c91cea91b13f4314d125d1bedb9d03a29ebbd5080ccdea70260363424646dbe + md5: 048b02e3962f066da18efe3a21b77672 depends: - __glibc >=2.17,<3.0.a0 - - libgcc >=13 + constrains: + - binutils_impl_linux-64 2.43 arch: x86_64 platform: linux - license: Apache-2.0 - license_family: Apache - size: 236574 - timestamp: 1733975453350 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-common-0.10.6-h86ecc28_0.conda - sha256: 57288ec5df35781bea8fc6a8c9099cad6695b747784fc1b8862a0f9e5b3bf5ab - md5: fef806a0f6de853670c746bbece01966 - depends: - - libgcc >=13 + license: GPL-3.0-only + license_family: GPL + size: 669211 + timestamp: 1729655358674 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_2.conda + sha256: 80ec7e8f006196808fac5bd4b3773a652847f97bbf08044cd87731424ac64f8b + md5: fcbde5ea19d55468953bf588770c0501 + constrains: + - binutils_impl_linux-aarch64 2.43 arch: aarch64 platform: linux - license: Apache-2.0 - license_family: Apache - size: 259031 - timestamp: 1733975520465 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.10.6-h5505292_0.conda - sha256: 3bde135c8e74987c0f79ecd4fa17ec9cff0d658b3090168727ca1af3815ae57a - md5: 145e5b4c9702ed279d7d68aaf096f77d - depends: - - __osx >=11.0 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: Apache - size: 221863 - timestamp: 1733975576886 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.3.0-h4e1184b_5.conda - sha256: 62ca84da83585e7814a40240a1e750b1563b2680b032a471464eccc001c3309b - md5: 3f4c1197462a6df2be6dc8241828fe93 + license: GPL-3.0-only + license_family: GPL + size: 698245 + timestamp: 1729655345825 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda + sha256: 143a586aa67d50622ef703de57b9d43f44945836d6568e0e7aa174bd8c45e0d4 + md5: 488f260ccda0afaf08acb286db439c2f depends: - __glibc >=2.17,<3.0.a0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - libgcc >=13 + - libstdcxx >=13 + constrains: + - libabseil-static =20240722.0=cxx17* + - abseil-cpp =20240722.0 arch: x86_64 platform: linux license: Apache-2.0 license_family: Apache - size: 19086 - timestamp: 1733991637424 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-compression-0.3.0-h0f0193d_5.conda - sha256: 3f05d19f68ef800f33d44ea2a4211003124076516c8469abc7d432236344df53 - md5: 3a1421d12435df5b4c412cc4c8fac64d + size: 1311599 + timestamp: 1736008414161 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h18dbdb1_4.conda + sha256: bb6c5fb3b8de5f90735c5252b57efb3c268ee222c755569dac18065f05147670 + md5: 633b9fe454ffea2aaf29e191d946a83b depends: - - aws-c-common >=0.10.6,<0.10.7.0a0 - libgcc >=13 + - libstdcxx >=13 + constrains: + - abseil-cpp =20240722.0 + - libabseil-static =20240722.0=cxx17* arch: aarch64 platform: linux license: Apache-2.0 license_family: Apache - size: 19740 - timestamp: 1733991625201 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-compression-0.3.0-hc8a0bd2_5.conda - sha256: 47b2813f652ce7e64ac442f771b2a5f7d4af4ad0d07ff51f6075ea80ed2e3f09 - md5: a8b6c17732d14ed49d0e9b59c43186bc + size: 1334844 + timestamp: 1736008472455 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_h07bc746_4.conda + sha256: 05fa5e5e908962b9c5aba95f962e2ca81d9599c4715aebe5e4ddb72b309d1770 + md5: c2d95bd7aa8d564a9bd7eca5e571a5b3 depends: - __osx >=11.0 - - aws-c-common >=0.10.6,<0.10.7.0a0 + - libcxx >=18 + constrains: + - libabseil-static =20240722.0=cxx17* + - abseil-cpp =20240722.0 arch: arm64 platform: osx license: Apache-2.0 license_family: Apache - size: 18068 - timestamp: 1733991869211 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.0-h7959bf6_11.conda - sha256: 10d7240c7db0c941fb1a59c4f8ea6689a434b03309ee7b766fa15a809c553c02 - md5: 9b3fb60fe57925a92f399bc3fc42eccf + size: 1178260 + timestamp: 1736008642885 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-28_h59b9bed_openblas.conda + build_number: 28 + sha256: 93fbcf2800b859b7ca5add3ab5d3aa11c6a6ff4b942a1cea4bf644f78488edb8 + md5: 73e2a99fdeb8531d50168987378fda8a depends: - - __glibc >=2.17,<3.0.a0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - aws-c-io >=0.15.3,<0.15.4.0a0 - - aws-checksums >=0.2.2,<0.2.3.0a0 - - libgcc >=13 - - libstdcxx >=13 - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 54003 - timestamp: 1734024480949 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-event-stream-0.5.0-hcbd8f92_11.conda - sha256: 79aa363c71c891a27496c0498f8d498b2ddc87b3ccb3b6c9da5b50b05936ebb8 - md5: e0772c59af4243a9b2565baa5d79e5b6 - depends: - - aws-c-common >=0.10.6,<0.10.7.0a0 - - aws-c-io >=0.15.3,<0.15.4.0a0 - - aws-checksums >=0.2.2,<0.2.3.0a0 - - libgcc >=13 - - libstdcxx >=13 - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 55207 - timestamp: 1734024546663 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.0-h54f970a_11.conda - sha256: f0667935f4e0d4c25e0e51da035640310b5ceeb8f723156734439bde8b848d7d - md5: ba41238f8e653998d7d2f42e3a8db054 - depends: - - __osx >=11.0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - aws-c-io >=0.15.3,<0.15.4.0a0 - - aws-checksums >=0.2.2,<0.2.3.0a0 - - libcxx >=18 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: Apache - size: 47078 - timestamp: 1734024749727 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.2-hefd7a92_4.conda - sha256: 4a330206bd51148f6c13ca0b7a4db40f29a46f090642ebacdeb88b8a4abd7f99 - md5: 5ce4df662d32d3123ea8da15571b6f51 - depends: - - __glibc >=2.17,<3.0.a0 - - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - aws-c-compression >=0.3.0,<0.3.1.0a0 - - aws-c-io >=0.15.3,<0.15.4.0a0 - - libgcc >=13 + - libopenblas >=0.3.28,<0.3.29.0a0 + - libopenblas >=0.3.28,<1.0a0 + constrains: + - libcblas =3.9.0=28*_openblas + - blas =2.128=openblas + - liblapack =3.9.0=28*_openblas + - liblapacke =3.9.0=28*_openblas arch: x86_64 platform: linux - license: Apache-2.0 - license_family: Apache - size: 197731 - timestamp: 1734008380764 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.2-h3df160d_4.conda - sha256: 3a1d2d332945306be9d49e569b95e4cc172d825f10e88715513a172f28ebb59e - md5: 28f00aa7fd9556c4c461328cf146c20b - depends: - - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - aws-c-compression >=0.3.0,<0.3.1.0a0 - - aws-c-io >=0.15.3,<0.15.4.0a0 - - libgcc >=13 + license: BSD-3-Clause + license_family: BSD + size: 16621 + timestamp: 1738114033763 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-28_h1a9f1db_openblas.conda + build_number: 28 + sha256: a50dc7ed1f49789aab4ffb560d9a46b5dc3f059a925282f699c1a96fa566a1a0 + md5: 88dfbb3875d62b431aa676b4a54734bf + depends: + - libopenblas >=0.3.28,<0.3.29.0a0 + - libopenblas >=0.3.28,<1.0a0 + constrains: + - liblapack =3.9.0=28*_openblas + - libcblas =3.9.0=28*_openblas + - blas =2.128=openblas + - liblapacke =3.9.0=28*_openblas arch: aarch64 platform: linux - license: Apache-2.0 - license_family: Apache - size: 190586 - timestamp: 1734008442362 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.2-h96aa502_4.conda - sha256: 22e4737c8a885995b7c1ae1d79c1f6e78d489e16ec079615980fdde067aeaf76 - md5: 495c93a4f08b17deb3c04894512330e6 + license: BSD-3-Clause + license_family: BSD + size: 16697 + timestamp: 1738114082682 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-28_h10e41b3_openblas.conda + build_number: 28 + sha256: 5bea855a1a7435ce2238535aa4b13db8af8ee301d99a42b083b63fa64c1ea144 + md5: 166166d84a0e9571dc50210baf993b46 depends: - - __osx >=11.0 - - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - aws-c-compression >=0.3.0,<0.3.1.0a0 - - aws-c-io >=0.15.3,<0.15.4.0a0 + - libopenblas >=0.3.28,<0.3.29.0a0 + - libopenblas >=0.3.28,<1.0a0 + constrains: + - liblapack =3.9.0=28*_openblas + - liblapacke =3.9.0=28*_openblas + - blas =2.128=openblas + - libcblas =3.9.0=28*_openblas arch: arm64 platform: osx - license: Apache-2.0 - license_family: Apache - size: 152983 - timestamp: 1734008451473 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-h173a860_6.conda - sha256: 335d822eead0a097ffd23677a288e1f18ea22f47a92d4f877419debb93af0e81 - md5: 9a063178f1af0a898526cc24ba7be486 + license: BSD-3-Clause + license_family: BSD + size: 16840 + timestamp: 1738114389937 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-28_he106b2a_openblas.conda + build_number: 28 + sha256: de293e117db53e5d78b579136509c35a5e4ad11529c05f9af83cf89be4d30de1 + md5: 4e20a1c00b4e8a984aac0f6cce59e3ac depends: - - __glibc >=2.17,<3.0.a0 - - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - libgcc >=13 - - s2n >=1.5.11,<1.5.12.0a0 + - libblas 3.9.0 28_h59b9bed_openblas + constrains: + - blas =2.128=openblas + - liblapack =3.9.0=28*_openblas + - liblapacke =3.9.0=28*_openblas arch: x86_64 platform: linux - license: Apache-2.0 - license_family: Apache - size: 157263 - timestamp: 1737207617838 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-hfd5ba81_6.conda - sha256: d8adfde05cee11057d99c3802e84b2300430a7c7c3c9936165d1d4b25ef59d91 - md5: 4e6771b45cb2b035c62d023dbf0dc000 - depends: - - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - libgcc >=13 - - s2n >=1.5.11,<1.5.12.0a0 + license: BSD-3-Clause + license_family: BSD + size: 16539 + timestamp: 1738114043618 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-28_hab92f65_openblas.conda + build_number: 28 + sha256: ed62f13a85726f568e17ad569b5cc01a49a6c7bd334802cf1c1b15e9d10e7e93 + md5: 8cff453f547365131be5647c7680ac6d + depends: + - libblas 3.9.0 28_h1a9f1db_openblas + constrains: + - liblapack =3.9.0=28*_openblas + - blas =2.128=openblas + - liblapacke =3.9.0=28*_openblas arch: aarch64 platform: linux - license: Apache-2.0 - license_family: Apache - size: 160933 - timestamp: 1737207637279 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-haba67d1_6.conda - sha256: 73722dd175af78b6cbfa033066f0933351f5382a1a737f6c6d9b8cfa84022161 - md5: d02e8f40ff69562903e70a1c6c48b009 + license: BSD-3-Clause + license_family: BSD + size: 16655 + timestamp: 1738114088527 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-28_hb3479ef_openblas.conda + build_number: 28 + sha256: f08adea59381babb3568e6d23e52aff874cbc25f299821647ab1127d1e1332ca + md5: 30942dea911ce333765003a8adec4e8a depends: - - __osx >=11.0 - - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.6,<0.10.7.0a0 + - libblas 3.9.0 28_h10e41b3_openblas + constrains: + - blas =2.128=openblas + - liblapacke =3.9.0=28*_openblas + - liblapack =3.9.0=28*_openblas arch: arm64 platform: osx - license: Apache-2.0 - license_family: Apache - size: 136048 - timestamp: 1737207681224 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h11f4f37_12.conda - sha256: 512d3969426152d9d5fd886e27b13706122dc3fa90eb08c37b0d51a33d7bb14a - md5: 96c3e0221fa2da97619ee82faa341a73 - depends: - - __glibc >=2.17,<3.0.a0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - aws-c-http >=0.9.2,<0.9.3.0a0 - - aws-c-io >=0.15.3,<0.15.4.0a0 - - libgcc >=13 - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 194672 - timestamp: 1734025626798 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h5f50e26_12.conda - sha256: ffeb9100cc8fd4093e1a6fdfd938bc4a396dd77480b7fb17aa42855a4d5e2c70 - md5: 031ca33115d4b1eeb43f435d6215778c - depends: - - aws-c-common >=0.10.6,<0.10.7.0a0 - - aws-c-http >=0.9.2,<0.9.3.0a0 - - aws-c-io >=0.15.3,<0.15.4.0a0 - - libgcc >=13 - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 169516 - timestamp: 1734025167885 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h24f418c_12.conda - sha256: 96575ea1dd2a9ea94763882e40a66dcbff9c41f702bf37c9514c4c719b3c11dd - md5: c072045a6206f88015d02fcba1705ea1 + license: BSD-3-Clause + license_family: BSD + size: 16788 + timestamp: 1738114399962 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda + sha256: 776092346da87a2a23502e14d91eb0c32699c4a1522b7331537bd1c3751dcff5 + md5: 5b3e1610ff8bd5443476b91d618f5b77 depends: - __osx >=11.0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - aws-c-http >=0.9.2,<0.9.3.0a0 - - aws-c-io >=0.15.3,<0.15.4.0a0 arch: arm64 platform: osx - license: Apache-2.0 + license: Apache-2.0 WITH LLVM-exception license_family: Apache - size: 134371 - timestamp: 1734025379525 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.9-he1b24dc_1.conda - sha256: 15fbdedc56850f8be5be7a5bcaea1af09c97590e631c024ae089737fc932fc42 - md5: caafc32928a5f7f3f7ef67d287689144 + size: 523505 + timestamp: 1736877862502 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda + sha256: d789471216e7aba3c184cd054ed61ce3f6dac6f87a50ec69291b9297f8c18724 + md5: c277e0a4d549b03ac1e9d6cbbe3d017b depends: + - ncurses - __glibc >=2.17,<3.0.a0 - - aws-c-auth >=0.8.1,<0.8.2.0a0 - - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - aws-c-http >=0.9.2,<0.9.3.0a0 - - aws-c-io >=0.15.3,<0.15.4.0a0 - - aws-checksums >=0.2.2,<0.2.3.0a0 - libgcc >=13 - - openssl >=3.4.0,<4.0a0 + - ncurses >=6.5,<7.0a0 arch: x86_64 platform: linux - license: Apache-2.0 - license_family: Apache - size: 115413 - timestamp: 1737558687616 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.9-h05b070f_1.conda - sha256: 9e7857fbc33eddc291fa09890ce468a92485d3e3e127bc00bbd1803e34121f84 - md5: e0a2869195f069db88b8932f5b00bee5 - depends: - - aws-c-auth >=0.8.1,<0.8.2.0a0 - - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - aws-c-http >=0.9.2,<0.9.3.0a0 - - aws-c-io >=0.15.3,<0.15.4.0a0 - - aws-checksums >=0.2.2,<0.2.3.0a0 + license: BSD-2-Clause + license_family: BSD + size: 134676 + timestamp: 1738479519902 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20250104-pl5321h976ea20_0.conda + sha256: c0b27546aa3a23d47919226b3a1635fccdb4f24b94e72e206a751b33f46fd8d6 + md5: fb640d776fc92b682a14e001980825b1 + depends: + - ncurses - libgcc >=13 - - openssl >=3.4.0,<4.0a0 + - ncurses >=6.5,<7.0a0 arch: aarch64 platform: linux - license: Apache-2.0 - license_family: Apache - size: 117875 - timestamp: 1737558720047 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.9-hf37e03c_1.conda - sha256: 92e8ca4eefcbbdf4189584c9410382884a06ed3030e5ecaac656dab8c95e6a80 - md5: de65f5e4ab5020103fe70a0eba9432a0 + license: BSD-2-Clause + license_family: BSD + size: 148125 + timestamp: 1738479808948 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda + sha256: 66aa216a403de0bb0c1340a88d1a06adaff66bae2cfd196731aa24db9859d631 + md5: 44083d2d2c2025afca315c7a172eab2b depends: + - ncurses - __osx >=11.0 - - aws-c-auth >=0.8.1,<0.8.2.0a0 - - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - aws-c-http >=0.9.2,<0.9.3.0a0 - - aws-c-io >=0.15.3,<0.15.4.0a0 - - aws-checksums >=0.2.2,<0.2.3.0a0 + - ncurses >=6.5,<7.0a0 arch: arm64 platform: osx - license: Apache-2.0 - license_family: Apache - size: 98731 - timestamp: 1737558731831 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.2-h4e1184b_0.conda - sha256: 0424e380c435ba03b5948d02e8c958866c4eee50ed29e57f99473a5f795a4cfc - md5: dcd498d493818b776a77fbc242fbf8e4 + license: BSD-2-Clause + license_family: BSD + size: 107691 + timestamp: 1738479560845 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda + sha256: 56541b98447b58e52d824bd59d6382d609e11de1f8adf20b23143e353d2b8d26 + md5: db833e03127376d461e1e13e76f09b6c depends: - __glibc >=2.17,<3.0.a0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - libgcc >=13 + constrains: + - expat 2.6.4.* arch: x86_64 platform: linux - license: Apache-2.0 - license_family: Apache - size: 55911 - timestamp: 1736535960724 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.2-h0f0193d_0.conda - sha256: fba38e469457764afcb94aa84d4d7788e6b5fa1554d34b05c904d2245fdd3c81 - md5: a78928881c652facde2a13ec6e776f3c + license: MIT + license_family: MIT + size: 73304 + timestamp: 1730967041968 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.6.4-h5ad3122_0.conda + sha256: f42e758009ba9db90d1fe7992bc3e60d0c52f71fb20923375d2c44ae69a5a2b3 + md5: f1b3fab36861b3ce945a13f0dfdfc688 depends: - - aws-c-common >=0.10.6,<0.10.7.0a0 - libgcc >=13 + constrains: + - expat 2.6.4.* arch: aarch64 platform: linux - license: Apache-2.0 - license_family: Apache - size: 58221 - timestamp: 1736536003041 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.2-hc8a0bd2_0.conda - sha256: ea4f0f1e99056293c69615f581a997d65ba7e229e296e402e0d8ef750648a5b5 - md5: e7b5498ac7b7ab921a907be38f3a8080 + license: MIT + license_family: MIT + size: 72345 + timestamp: 1730967203789 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.4-h286801f_0.conda + sha256: e42ab5ace927ee7c84e3f0f7d813671e1cf3529f5f06ee5899606630498c2745 + md5: 38d2656dd914feb0cab8c629370768bf depends: - __osx >=11.0 - - aws-c-common >=0.10.6,<0.10.7.0a0 + constrains: + - expat 2.6.4.* arch: arm64 platform: osx - license: Apache-2.0 - license_family: Apache - size: 49872 - timestamp: 1736536152332 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-h4e1184b_4.conda - sha256: 1ed9a332d06ad595694907fad2d6d801082916c27cd5076096fda4061e6d24a8 - md5: 74e8c3e4df4ceae34aa2959df4b28101 + license: MIT + license_family: MIT + size: 64693 + timestamp: 1730967175868 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.2-h7f98852_5.tar.bz2 + sha256: ab6e9856c21709b7b517e940ae7028ae0737546122f83c2aa5d692860c3b149e + md5: d645c6d2ac96843a2bfaccd2d62b3ac3 depends: - - __glibc >=2.17,<3.0.a0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - libgcc >=13 + - libgcc-ng >=9.4.0 arch: x86_64 platform: linux - license: Apache-2.0 - license_family: Apache - size: 72762 - timestamp: 1733994347547 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h0f0193d_4.conda - sha256: 9f1e3635a587bcf92b61d88c7af7d24cd89c147c6d0ae58afbde08e65bcf48da - md5: 3bd35b0adab3d743f09e0252cc441d6b + license: MIT + license_family: MIT + size: 58292 + timestamp: 1636488182923 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.4.2-h3557bc0_5.tar.bz2 + sha256: 7e9258a102480757fe3faeb225a3ca04dffd10fecd2a958c65cdb4cdf75f2c3c + md5: dddd85f4d52121fab0a8b099c5e06501 depends: - - aws-c-common >=0.10.6,<0.10.7.0a0 - - libgcc >=13 + - libgcc-ng >=9.4.0 arch: aarch64 platform: linux - license: Apache-2.0 - license_family: Apache - size: 72154 - timestamp: 1733994384415 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-hc8a0bd2_4.conda - sha256: 215086d95e8ff1d3fcb0197ada116cc9d7db1fdae7573f5e810d20fa9215b47c - md5: e70e88a357a3749b67679c0788c5b08a - depends: - - __osx >=11.0 - - aws-c-common >=0.10.6,<0.10.7.0a0 + license: MIT + license_family: MIT + size: 59450 + timestamp: 1636488255090 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 + sha256: 41b3d13efb775e340e4dba549ab5c029611ea6918703096b2eaa9c015c0750ca + md5: 086914b672be056eb70fd4285b6783b6 arch: arm64 platform: osx - license: Apache-2.0 - license_family: Apache - size: 70186 - timestamp: 1733994496998 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.9-he0e7f3f_2.conda - sha256: c1930569713bd5231d48d885a5e3707ac917b428e8f08189d14064a2bb128adc - md5: 8a4e6fc8a3b285536202b5456a74a940 + license: MIT + license_family: MIT + size: 39020 + timestamp: 1636488587153 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h77fa898_1.conda + sha256: 53eb8a79365e58849e7b1a068d31f4f9e718dc938d6f2c03e960345739a03569 + md5: 3cb76c3f10d3bc7f1105b2fc9db984df depends: - - __glibc >=2.17,<3.0.a0 - - aws-c-auth >=0.8.1,<0.8.2.0a0 - - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - - aws-c-http >=0.9.2,<0.9.3.0a0 - - aws-c-io >=0.15.3,<0.15.4.0a0 - - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - - aws-c-s3 >=0.7.9,<0.7.10.0a0 - - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 - - libgcc >=13 - - libstdcxx >=13 + - _libgcc_mutex 0.1 conda_forge + - _openmp_mutex >=4.5 + constrains: + - libgomp 14.2.0 h77fa898_1 + - libgcc-ng ==14.2.0=*_1 arch: x86_64 platform: linux - license: Apache-2.0 - license_family: Apache - size: 353222 - timestamp: 1737565463079 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.9-hab3ce66_2.conda - sha256: c3884fb10e0fd9be5c13256cabcda1afa9d2fcf8878c67214d02fc344509857d - md5: 875968ebffe992b68faf2caebbf32f02 - depends: - - aws-c-auth >=0.8.1,<0.8.2.0a0 - - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - - aws-c-http >=0.9.2,<0.9.3.0a0 - - aws-c-io >=0.15.3,<0.15.4.0a0 - - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - - aws-c-s3 >=0.7.9,<0.7.10.0a0 - - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 - - libgcc >=13 - - libstdcxx >=13 - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 283812 - timestamp: 1737565480034 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.9-ha81f72f_2.conda - sha256: ed5f1d19aad53787fdebe13db4709c97eae2092536cc55d3536eba320c4286e1 - md5: c9c034d3239bf25687ca4dd985007ecd + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 848745 + timestamp: 1729027721139 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-14.2.0-he277a41_1.conda + sha256: 5d56757ccad208c79214395b00d006d8d18929a4ba49c47bd9460789a7620943 + md5: 511b511c5445e324066c3377481bcab8 depends: - - __osx >=11.0 - - aws-c-auth >=0.8.1,<0.8.2.0a0 - - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - - aws-c-http >=0.9.2,<0.9.3.0a0 - - aws-c-io >=0.15.3,<0.15.4.0a0 - - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - - aws-c-s3 >=0.7.9,<0.7.10.0a0 - - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 - - libcxx >=18 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: Apache - size: 235976 - timestamp: 1737565563139 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.489-h4d475cb_0.conda - sha256: 08d6b7d2ed17bfcc7deb903c7751278ee434abdb27e3be0dceb561f30f030c75 - md5: b775e9f46dfa94b228a81d8e8c6d8b1d + - _openmp_mutex >=4.5 + constrains: + - libgcc-ng ==14.2.0=*_1 + - libgomp 14.2.0 he277a41_1 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 535243 + timestamp: 1729089435134 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_1.conda + sha256: 3a76969c80e9af8b6e7a55090088bc41da4cffcde9e2c71b17f44d37b7cb87f7 + md5: e39480b9ca41323497b05492a63bc35b depends: - - __glibc >=2.17,<3.0.a0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - - aws-checksums >=0.2.2,<0.2.3.0a0 - - aws-crt-cpp >=0.29.9,<0.29.10.0a0 - - libcurl >=8.11.1,<9.0a0 - - libgcc >=13 - - libstdcxx >=13 - - libzlib >=1.3.1,<2.0a0 - - openssl >=3.4.0,<4.0a0 + - libgcc 14.2.0 h77fa898_1 arch: x86_64 platform: linux - license: Apache-2.0 - license_family: Apache - size: 3144364 - timestamp: 1737576036746 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.489-h88461e4_0.conda - sha256: 88353e82b053763168cddbe2f88048defc1c97b3dad0966fbe8c4fa7aa592c7e - md5: e725d8fa77a6a5f38a78c5de914a5f40 - depends: - - aws-c-common >=0.10.6,<0.10.7.0a0 - - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - - aws-checksums >=0.2.2,<0.2.3.0a0 - - aws-crt-cpp >=0.29.9,<0.29.10.0a0 - - libcurl >=8.11.1,<9.0a0 - - libgcc >=13 - - libstdcxx >=13 - - libzlib >=1.3.1,<2.0a0 - - openssl >=3.4.0,<4.0a0 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 54142 + timestamp: 1729027726517 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-14.2.0-he9431aa_1.conda + sha256: 9b5cf168a6c7361cae869cb74b716766ee7c6d6b3f6172b32ba9bf91135efdc4 + md5: 0694c249c61469f2c0f7e2990782af21 + depends: + - libgcc 14.2.0 he277a41_1 arch: aarch64 platform: linux - license: Apache-2.0 - license_family: Apache - size: 3015109 - timestamp: 1737575993030 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.489-h0e5014b_0.conda - sha256: d82451530ddf363d8bb31a8a7391bb9699f745e940ace91d78c0e6170deef03c - md5: 156cfb45a1bb8cffc81e59047bb34f51 - depends: - - __osx >=11.0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - - aws-checksums >=0.2.2,<0.2.3.0a0 - - aws-crt-cpp >=0.29.9,<0.29.10.0a0 - - libcurl >=8.11.1,<9.0a0 - - libcxx >=18 - - libzlib >=1.3.1,<2.0a0 - - openssl >=3.4.0,<4.0a0 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: Apache - size: 2874126 - timestamp: 1737577023623 -- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda - sha256: fe07debdb089a3db17f40a7f20d283d75284bb4fc269ef727b8ba6fc93f7cb5a - md5: 0a8838771cc2e985cd295e01ae83baf1 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 54104 + timestamp: 1729089444587 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_1.conda + sha256: fc9e7f22a17faf74da904ebfc4d88699013d2992e55505e4aa0eb01770290977 + md5: f1fd30127802683586f768875127a987 depends: - - __glibc >=2.17,<3.0.a0 - - libcurl >=8.10.1,<9.0a0 - - libgcc >=13 - - libstdcxx >=13 - - openssl >=3.3.2,<4.0a0 + - libgfortran5 14.2.0 hd5240d6_1 + constrains: + - libgfortran-ng ==14.2.0=*_1 arch: x86_64 platform: linux - license: MIT - license_family: MIT - size: 345117 - timestamp: 1728053909574 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-core-cpp-1.14.0-h1887c18_0.conda - sha256: 8967b3ccee4d74e61f6ec82dd8efb9deb854ee7ba012dfe767b7a92e0ac77724 - md5: e0c3a906a41be769f0ae20ca3e31cfc0 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 53997 + timestamp: 1729027752995 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_1.conda + sha256: cb66e411fa32a5c6040f4e5e2a63c00897aae4c3133a9c004c2e929ccf19575b + md5: 0294b92d2f47a240bebb1e3336b495f1 depends: - - libcurl >=8.10.1,<9.0a0 - - libgcc >=13 - - libstdcxx >=13 - - openssl >=3.3.2,<4.0a0 + - libgfortran5 14.2.0 hb6113d0_1 + constrains: + - libgfortran-ng ==14.2.0=*_1 arch: aarch64 platform: linux - license: MIT - license_family: MIT - size: 338650 - timestamp: 1728055589907 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.14.0-hd50102c_0.conda - sha256: f5b91329ed59ffc0be8747784c6e4cc7e56250c54032883a83bc11808ef6a87e - md5: f093a11dcf3cdcca010b20a818fcc6dc + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 54105 + timestamp: 1729089471124 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda + sha256: 44e541b4821c96b28b27fef5630883a60ce4fee91fd9c79f25a199f8f73f337b + md5: 4a55d9e169114b2b90d3ec4604cd7bbf depends: - - __osx >=11.0 - - libcurl >=8.10.1,<9.0a0 - - libcxx >=17 - - openssl >=3.3.2,<4.0a0 + - libgfortran5 13.2.0 hf226fd6_3 arch: arm64 platform: osx - license: MIT - license_family: MIT - size: 294299 - timestamp: 1728054014060 -- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.10.0-h113e628_0.conda - sha256: 286b31616c191486626cb49e9ceb5920d29394b9e913c23adb7eb637629ba4de - md5: 73f73f60854f325a55f1d31459f2ab73 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 110233 + timestamp: 1707330749033 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hd5240d6_1.conda + sha256: d149a37ca73611e425041f33b9d8dbed6e52ec506fe8cc1fc0ee054bddeb6d5d + md5: 9822b874ea29af082e5d36098d25427d depends: - - __glibc >=2.17,<3.0.a0 - - azure-core-cpp >=1.14.0,<1.14.1.0a0 - - libgcc >=13 - - libstdcxx >=13 - - openssl >=3.3.2,<4.0a0 + - libgcc >=14.2.0 + constrains: + - libgfortran 14.2.0 arch: x86_64 platform: linux - license: MIT - license_family: MIT - size: 232351 - timestamp: 1728486729511 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-identity-cpp-1.10.0-h47b0b28_0.conda - sha256: 1c72423b9beba167d2f01b80dc204da77240a8266f1edb3d89510c852b300d69 - md5: 94e73a7877743a85c57091d8afab2348 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 1462645 + timestamp: 1729027735353 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_1.conda + sha256: a87ff46d19916403cbf68cf1d785bf56b4d1ab7b2552468d2ea775d70782493f + md5: fc068e11b10e18f184e027782baa12b6 depends: - - azure-core-cpp >=1.14.0,<1.14.1.0a0 - - libgcc >=13 - - libstdcxx >=13 - - openssl >=3.3.2,<4.0a0 + - libgcc >=14.2.0 + constrains: + - libgfortran 14.2.0 arch: aarch64 platform: linux - license: MIT - license_family: MIT - size: 217132 - timestamp: 1728488096615 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.10.0-hc602bab_0.conda - sha256: bde446b916fff5150606f8ed3e6058ffc55a3aa72381e46f1ab346590b1ae40a - md5: d7b71593a937459f2d4b67e1a4727dc2 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 1102158 + timestamp: 1729089452640 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda + sha256: bafc679eedb468a86aa4636061c55966186399ee0a04b605920d208d97ac579a + md5: 66ac81d54e95c534ae488726c1f698ea depends: - - __osx >=11.0 - - azure-core-cpp >=1.14.0,<1.14.1.0a0 - - libcxx >=17 - - openssl >=3.3.2,<4.0a0 + - llvm-openmp >=8.0.0 + constrains: + - libgfortran 5.0.0 13_2_0_*_3 arch: arm64 platform: osx - license: MIT - license_family: MIT - size: 166907 - timestamp: 1728486882502 -- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.13.0-h3cf044e_1.conda - sha256: 2606260e5379eed255bcdc6adc39b93fb31477337bcd911c121fc43cd29bf394 - md5: 7eb66060455c7a47d9dcdbfa9f46579b + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 997381 + timestamp: 1707330687590 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h77fa898_1.conda + sha256: 1911c29975ec99b6b906904040c855772ccb265a1c79d5d75c8ceec4ed89cd63 + md5: cc3573974587f12dda90d96e3e55a702 depends: - - __glibc >=2.17,<3.0.a0 - - azure-core-cpp >=1.14.0,<1.14.1.0a0 - - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 - - libgcc >=13 - - libstdcxx >=13 + - _libgcc_mutex 0.1 conda_forge arch: x86_64 platform: linux - license: MIT - license_family: MIT - size: 549342 - timestamp: 1728578123088 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-blobs-cpp-12.13.0-h185ecfd_1.conda - sha256: 280ec70009a92626054f58e45b168fce393e71a9710587488bd8401628cda481 - md5: 221e1e5ecb2643e113f32b3229d5ba33 - depends: - - azure-core-cpp >=1.14.0,<1.14.1.0a0 - - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 - - libgcc >=13 - - libstdcxx >=13 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 460992 + timestamp: 1729027639220 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_1.conda + sha256: 5aa53874a5e57a00f2e0c2e2910684eb674429cd5fcb803619b226a73e89aedf + md5: 376f0e73abbda6d23c0cb749adc195ef arch: aarch64 platform: linux - license: MIT - license_family: MIT - size: 502934 - timestamp: 1728580241002 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-blobs-cpp-12.13.0-h7585a09_1.conda - sha256: 08d52d130addc0fb55d5ba10d9fa483e39be25d69bac7f4c676c2c3069207590 - md5: 704238ef05d46144dae2e6b5853df8bc - depends: - - __osx >=11.0 - - azure-core-cpp >=1.14.0,<1.14.1.0a0 - - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 - - libcxx >=17 - arch: arm64 - platform: osx - license: MIT - license_family: MIT - size: 438636 - timestamp: 1728578216193 -- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-common-cpp-12.8.0-h736e048_1.conda - sha256: 273475f002b091b66ce7366da04bf164c3732c03f8692ab2ee2d23335b6a82ba - md5: 13de36be8de3ae3f05ba127631599213 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 463521 + timestamp: 1729089357313 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-28_h7ac8fdf_openblas.conda + build_number: 28 + sha256: 9530e6840690b78360946390a1d29624734a6b624f02c26631fb451592cbb8ef + md5: 069f40bfbf1dc55c83ddb07fc6a6ef8d depends: - - __glibc >=2.17,<3.0.a0 - - azure-core-cpp >=1.14.0,<1.14.1.0a0 - - libgcc >=13 - - libstdcxx >=13 - - libxml2 >=2.12.7,<3.0a0 - - openssl >=3.3.2,<4.0a0 + - libblas 3.9.0 28_h59b9bed_openblas + constrains: + - libcblas =3.9.0=28*_openblas + - blas =2.128=openblas + - liblapacke =3.9.0=28*_openblas arch: x86_64 platform: linux - license: MIT - license_family: MIT - size: 149312 - timestamp: 1728563338704 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-common-cpp-12.8.0-h1b94036_1.conda - sha256: 146e76aac169e3dbdce5d3b142b7930ac643795c765e7655d1989905ec7d3231 - md5: 793b1080ab2d958980f137a8643cd6e8 + license: BSD-3-Clause + license_family: BSD + size: 16553 + timestamp: 1738114053556 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-28_h411afd4_openblas.conda + build_number: 28 + sha256: 1290ce1071a586e22bdd7d8f4c48000cc0005f0a67660be150d1ea5c6092129f + md5: bc4c5ee31476521e202356b56bba6077 depends: - - azure-core-cpp >=1.14.0,<1.14.1.0a0 - - libgcc >=13 - - libstdcxx >=13 - - libxml2 >=2.12.7,<3.0a0 - - openssl >=3.3.2,<4.0a0 + - libblas 3.9.0 28_h1a9f1db_openblas + constrains: + - liblapacke =3.9.0=28*_openblas + - libcblas =3.9.0=28*_openblas + - blas =2.128=openblas arch: aarch64 platform: linux - license: MIT - license_family: MIT - size: 140832 - timestamp: 1728565334900 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-common-cpp-12.8.0-h9ca1f76_1.conda - sha256: 77ab04e8fe5636a2de9c718f72a43645f7502cd208868c8a91ffba385547d585 - md5: 7a187cd7b1445afc80253bb186a607cc + license: BSD-3-Clause + license_family: BSD + size: 16637 + timestamp: 1738114094310 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-28_hc9a63f6_openblas.conda + build_number: 28 + sha256: 79c75a02bff20f8b001e6aecfee8d22a51552c3986e7037fca68e5ed071cc213 + md5: 45f26652530b558c21083ceb7adaf273 depends: - - __osx >=11.0 - - azure-core-cpp >=1.14.0,<1.14.1.0a0 - - libcxx >=17 - - libxml2 >=2.12.7,<3.0a0 - - openssl >=3.3.2,<4.0a0 + - libblas 3.9.0 28_h10e41b3_openblas + constrains: + - blas =2.128=openblas + - liblapacke =3.9.0=28*_openblas + - libcblas =3.9.0=28*_openblas arch: arm64 platform: osx - license: MIT - license_family: MIT - size: 121278 - timestamp: 1728563418777 -- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-files-datalake-cpp-12.12.0-ha633028_1.conda - sha256: 5371e4f3f920933bb89b926a85a67f24388227419abd6e99f6086481e5e8d5f2 - md5: 7c1980f89dd41b097549782121a73490 + license: BSD-3-Clause + license_family: BSD + size: 16793 + timestamp: 1738114407021 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda + sha256: cad52e10319ca4585bc37f0bc7cce99ec7c15dc9168e42ccb96b741b0a27db3f + md5: 42d5b6a0f30d3c10cd88cb8584fda1cb depends: - __glibc >=2.17,<3.0.a0 - - azure-core-cpp >=1.14.0,<1.14.1.0a0 - - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 - - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 - libgcc >=13 - - libstdcxx >=13 arch: x86_64 platform: linux - license: MIT - license_family: MIT - size: 287366 - timestamp: 1728729530295 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-files-datalake-cpp-12.12.0-h37d6d07_1.conda - sha256: 4079c617a75682e49bae63670d58fd6078ccfbbe55ca1f994acab3a74ab6bbcc - md5: b724f3b4b7f4e9b36c58cbe3ed8610a2 - depends: - - azure-core-cpp >=1.14.0,<1.14.1.0a0 - - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 - - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 + license: 0BSD + size: 111357 + timestamp: 1738525339684 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.4-h86ecc28_0.conda + sha256: 96413664f0fade54a4931940d18749cfc8e6308349dbb0cb83adb2394ca1f730 + md5: b88244e0a115cc34f7fbca9b11248e76 + depends: - libgcc >=13 - - libstdcxx >=13 arch: aarch64 platform: linux - license: MIT - license_family: MIT - size: 260547 - timestamp: 1728730924071 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-files-datalake-cpp-12.12.0-hcdd55da_1.conda - sha256: f48523f8aa0b5b80f45a92f0556b388dd96f44ac2dc2f44a01d08c1822eec97d - md5: c49fbc5233fcbaa86391162ff1adef38 + license: 0BSD + size: 124197 + timestamp: 1738528201520 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.4-h39f12f2_0.conda + sha256: 560c59d3834cc652a84fb45531bd335ad06e271b34ebc216e380a89798fe8e2c + md5: e3fd1f8320a100f2b210e690a57cd615 depends: - __osx >=11.0 - - azure-core-cpp >=1.14.0,<1.14.1.0a0 - - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 - - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 - - libcxx >=17 arch: arm64 platform: osx - license: MIT - license_family: MIT - size: 196032 - timestamp: 1728729672889 -- conda: https://conda.anaconda.org/conda-forge/noarch/backoff-2.2.1-pyhd8ed1ab_1.conda - sha256: f334115c6b0c6c2cd0d28595365f205ec7eaa60bcc5ff91a75d7245f728be820 - md5: a38b801f2bcc12af80c2e02a9e4ce7d9 - depends: - - python >=3.9 - license: MIT - license_family: MIT - size: 18816 - timestamp: 1733771192649 -- conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py312h2ec8cdc_2.conda - sha256: f2a59ccd20b4816dea9a2a5cb917eb69728271dbf1aeab4e1b7e609330a50b6f - md5: b0b867af6fc74b2a0aa206da29c0f3cf - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libstdcxx >=13 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - constrains: - - libbrotlicommon 1.1.0 hb9d3cd8_2 - arch: x86_64 - platform: linux - license: MIT - license_family: MIT - size: 349867 - timestamp: 1725267732089 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/brotli-python-1.1.0-py312h6f74592_2.conda - sha256: 9736bf660a0e4260c68f81d2635b51067f817813e6490ac9e8abd9a835dcbf6d - md5: e1e9727063057168d95f27a032acd0a4 - depends: - - libgcc >=13 - - libstdcxx >=13 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - constrains: - - libbrotlicommon 1.1.0 h86ecc28_2 - arch: aarch64 - platform: linux - license: MIT - license_family: MIT - size: 356878 - timestamp: 1725267878508 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py312hde4cb15_2.conda - sha256: 254b411fa78ccc226f42daf606772972466f93e9bc6895eabb4cfda22f5178af - md5: a83c2ef76ccb11bc2349f4f17696b15d - depends: - - __osx >=11.0 - - libcxx >=17 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - constrains: - - libbrotlicommon 1.1.0 hd74edd7_2 - arch: arm64 - platform: osx - license: MIT - license_family: MIT - size: 339360 - timestamp: 1725268143995 -- conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda - sha256: 5ced96500d945fb286c9c838e54fa759aa04a7129c59800f0846b4335cee770d - md5: 62ee74e96c5ebb0af99386de58cf9553 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc-ng >=12 - arch: x86_64 - platform: linux - license: bzip2-1.0.6 - license_family: BSD - size: 252783 - timestamp: 1720974456583 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h68df207_7.conda - sha256: 2258b0b33e1cb3a9852d47557984abb6e7ea58e3d7f92706ec1f8e879290c4cb - md5: 56398c28220513b9ea13d7b450acfb20 - depends: - - libgcc-ng >=12 - arch: aarch64 - platform: linux - license: bzip2-1.0.6 - license_family: BSD - size: 189884 - timestamp: 1720974504976 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda - sha256: adfa71f158cbd872a36394c56c3568e6034aa55c623634b37a4836bd036e6b91 - md5: fc6948412dbbbe9a4c9ddbbcfe0a79ab - depends: - - __osx >=11.0 - arch: arm64 - platform: osx - license: bzip2-1.0.6 - license_family: BSD - size: 122909 - timestamp: 1720974522888 -- conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.4-hb9d3cd8_0.conda - sha256: d4f28d87b6339b94f74762c0076e29c8ef8ddfff51a564a92da2843573c18320 - md5: e2775acf57efd5af15b8e3d1d74d72d3 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - arch: x86_64 - platform: linux - license: MIT - license_family: MIT - size: 206085 - timestamp: 1734208189009 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/c-ares-1.34.4-h86ecc28_0.conda - sha256: 1187a41d4bb2afe02cb18690682edc98d1e9f5e0ccda638d8704a75ea1875bbe - md5: 356da36f35d36dcba16e43f1589d4e39 - depends: - - libgcc >=13 - arch: aarch64 - platform: linux - license: MIT - license_family: MIT - size: 215979 - timestamp: 1734208193181 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.4-h5505292_0.conda - sha256: 09c0c8476e50b2955f474a4a1c17c4c047dd52993b5366b6ea8e968e583b921f - md5: c1c999a38a4303b29d75c636eaa13cf9 - depends: - - __osx >=11.0 - arch: arm64 - platform: osx - license: MIT - license_family: MIT - size: 179496 - timestamp: 1734208291879 -- conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2025.1.31-hbcca054_0.conda - sha256: bf832198976d559ab44d6cdb315642655547e26d826e34da67cbee6624cda189 - md5: 19f3a56f68d2fd06c516076bff482c52 - arch: x86_64 - platform: linux - license: ISC - size: 158144 - timestamp: 1738298224464 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2025.1.31-hcefe29a_0.conda - sha256: 66c6408ee461593cfdb2d78d82e6ed74d04a04ccb51df3ef8a5f35148c9c6eec - md5: 462cb166cd2e26a396f856510a3aff67 - arch: aarch64 - platform: linux - license: ISC - size: 158290 - timestamp: 1738299057652 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2025.1.31-hf0a4a13_0.conda - sha256: 7e12816618173fe70f5c638b72adf4bfd4ddabf27794369bb17871c5bb75b9f9 - md5: 3569d6a9141adc64d2fe4797f3289e06 - arch: arm64 - platform: osx - license: ISC - size: 158425 - timestamp: 1738298167688 -- conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.12.14-pyhd8ed1ab_0.conda - sha256: 048c16a9cbcb1fbad02083414d3bc7c1d0eea4b39aee6aa6bf8d1d5089ca8bad - md5: 6feb87357ecd66733be3279f16a8c400 - depends: - - python >=3.9 - license: ISC - size: 161642 - timestamp: 1734380604767 -- conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py312h06ac9bb_0.conda - sha256: cba6ea83c4b0b4f5b5dc59cb19830519b28f95d7ebef7c9c5cf1c14843621457 - md5: a861504bbea4161a9170b85d4d2be840 - depends: - - __glibc >=2.17,<3.0.a0 - - libffi >=3.4,<4.0a0 - - libgcc >=13 - - pycparser - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - arch: x86_64 - platform: linux - license: MIT - license_family: MIT - size: 294403 - timestamp: 1725560714366 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cffi-1.17.1-py312hac81daf_0.conda - sha256: 1162e3ca039e7ca7c0e78f0a020ed1bde968096841b663e3f393c966eb82f0f0 - md5: 1a256e5581b1099e9295cb84d53db3ea - depends: - - libffi >=3.4,<4.0a0 - - libgcc >=13 - - pycparser - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - arch: aarch64 - platform: linux - license: MIT - license_family: MIT - size: 312892 - timestamp: 1725561779888 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.1-py312h0fad829_0.conda - sha256: 8d91a0d01358b5c3f20297c6c536c5d24ccd3e0c2ddd37f9d0593d0f0070226f - md5: 19a5456f72f505881ba493979777b24e - depends: - - __osx >=11.0 - - libffi >=3.4,<4.0a0 - - pycparser - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - arch: arm64 - platform: osx - license: MIT - license_family: MIT - size: 281206 - timestamp: 1725560813378 -- conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda - sha256: 4e0ee91b97e5de3e74567bdacea27f0139709fceca4db8adffbe24deffccb09b - md5: e83a31202d1c0a000fce3e9cf3825875 - depends: - - python >=3.9 - license: MIT - license_family: MIT - size: 47438 - timestamp: 1735929811779 -- conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda - sha256: c920d23cd1fcf565031c679adb62d848af60d6fbb0edc2d50ba475cea4f0d8ab - md5: f22f4d4970e09d68a10b922cbb0408d3 - depends: - - __unix - - python >=3.9 - license: BSD-3-Clause - license_family: BSD - size: 84705 - timestamp: 1734858922844 -- conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - sha256: ab29d57dc70786c1269633ba3dff20288b81664d3ff8d21af995742e2bb03287 - md5: 962b9857ee8e7018c22f2776ffa0b2d7 - depends: - - python >=3.9 - license: BSD-3-Clause - license_family: BSD - size: 27011 - timestamp: 1733218222191 -- conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda - sha256: 7e09bd083a609138b780fcc4535924cb96814d2c908a36d4c64a2ba9ee3efe7f - md5: 3e087f072ce03c43a9b60522f5d0ca2f - depends: - - aiohttp - - dill >=0.3.0,<0.3.8 - - fsspec >=2021.11.1 - - huggingface_hub >=0.14.0,<1.0.0 - - importlib-metadata - - multiprocess - - numpy >=1.17 - - packaging - - pandas - - pyarrow >=8.0.0 - - python >=3.8.0 - - python-xxhash - - pyyaml >=5.1 - - requests >=2.19.0 - - tqdm >=4.62.1 - license: Apache-2.0 - license_family: Apache - size: 347303 - timestamp: 1691593908658 -- conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.18-pyhd8ed1ab_0.conda - sha256: d614bcff10696f1efc714df07651b50bf3808401fcc03814309ecec242cc8870 - md5: 0cef44b1754ae4d6924ac0eef6b9fdbe - depends: - - python >=3.9 - - wrapt <2,>=1.10 - license: MIT - license_family: MIT - size: 14382 - timestamp: 1737987072859 -- conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda - sha256: 4ff20c6be028be2825235631c45d9e4a75bca1de65f8840c02dfb28ea0137c45 - md5: 5e4f3466526c52bc9af2d2353a1460bd - depends: - - python >=3.7 - license: BSD-3-Clause - license_family: BSD - size: 87553 - timestamp: 1690101185422 -- conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda - sha256: 3ec40ccf63f2450c5e6c7dd579e42fc2e97caf0d8cd4ba24aa434e6fc264eda0 - md5: 5fbd60d61d21b4bd2f9d7a48fe100418 - depends: - - python >=3.9,<4.0.0 - - sniffio - constrains: - - aioquic >=1.0.0 - - wmi >=1.5.1 - - httpx >=0.26.0 - - trio >=0.23 - - cryptography >=43 - - httpcore >=1.0.0 - - idna >=3.7 - - h2 >=4.1.0 - license: ISC - license_family: OTHER - size: 172172 - timestamp: 1733256829961 -- conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda - sha256: b91a19eb78edfc2dbb36de9a67f74ee2416f1b5273dd7327abe53f2dbf864736 - md5: da16dd3b0b71339060cd44cb7110ddf9 - depends: - - dnspython >=2.0.0 - - idna >=2.0.0 - - python >=3.9 - license: Unlicense - size: 44401 - timestamp: 1733300827551 -- conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_1.conda - sha256: e0d0fdf587aa0ed0ff08b2bce3ab355f46687b87b0775bfba01cc80a859ee6a2 - md5: 0794f8807ff2c6f020422cacb1bd7bfa - depends: - - email-validator >=2.2.0,<2.2.1.0a0 - license: Unlicense - size: 6552 - timestamp: 1733300828176 -- conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda - sha256: cbde2c64ec317118fc06b223c5fd87c8a680255e7348dd60e7b292d2e103e701 - md5: a16662747cdeb9abbac74d0057cc976e - depends: - - python >=3.9 - license: MIT and PSF-2.0 - size: 20486 - timestamp: 1733208916977 -- conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.8-pyh29332c3_0.conda - sha256: 5e1e3d5cf306d9b3b5fe0d45a9e8440e8770ba7e4a5fac1ac847ca693b0dc064 - md5: 753382711adab47269f0bfe994906bc4 - depends: - - python >=3.9 - - starlette >=0.40.0,<0.46.0 - - typing_extensions >=4.8.0 - - pydantic >=1.7.4,!=1.8,!=1.8.1,!=2.0.0,!=2.0.1,!=2.1.0,<3.0.0 - - email_validator >=2.0.0 - - fastapi-cli >=0.0.5 - - httpx >=0.23.0 - - jinja2 >=3.1.5 - - python-multipart >=0.0.18 - - uvicorn-standard >=0.12.0 - - python - license: MIT - license_family: MIT - size: 77940 - timestamp: 1738326226051 -- conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.7-pyhd8ed1ab_0.conda - sha256: 300683731013b7221922339cd40430bb3c2ddeeb658fd7e37f5099ffe64e4db0 - md5: d960e0ea9e1c561aa928f6c4439f04c7 - depends: - - python >=3.9 - - rich-toolkit >=0.11.1 - - typer >=0.12.3 - - uvicorn-standard >=0.15.0 - license: MIT - license_family: MIT - size: 15546 - timestamp: 1734302408607 -- conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.17.0-pyhd8ed1ab_0.conda - sha256: 006d7e5a0c17a6973596dd86bfc80d74ce541144d2aee2d22d46fd41df560a63 - md5: 7f402b4a1007ee355bc50ce4d24d4a57 - depends: - - python >=3.9 - license: Unlicense - size: 17544 - timestamp: 1737517924333 -- conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.12.1-h267a509_2.conda - sha256: b2e3c449ec9d907dd4656cb0dc93e140f447175b125a3824b31368b06c666bb6 - md5: 9ae35c3d96db2c94ce0cef86efdfa2cb - depends: - - libgcc-ng >=12 - - libpng >=1.6.39,<1.7.0a0 - - libzlib >=1.2.13,<2.0.0a0 - arch: x86_64 - platform: linux - license: GPL-2.0-only OR FTL - size: 634972 - timestamp: 1694615932610 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/freetype-2.12.1-hf0a5ef3_2.conda - sha256: 7af93030f4407f076dce181062360efac2cd54dce863b5d7765287a6f5382537 - md5: a5ab74c5bd158c3d5532b66d8d83d907 - depends: - - libgcc-ng >=12 - - libpng >=1.6.39,<1.7.0a0 - - libzlib >=1.2.13,<2.0.0a0 - arch: aarch64 - platform: linux - license: GPL-2.0-only OR FTL - size: 642092 - timestamp: 1694617858496 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/freetype-2.12.1-hadb7bae_2.conda - sha256: 791673127e037a2dc0eebe122dc4f904cb3f6e635bb888f42cbe1a76b48748d9 - md5: e6085e516a3e304ce41a8ee08b9b89ad - depends: - - libpng >=1.6.39,<1.7.0a0 - - libzlib >=1.2.13,<2.0.0a0 - arch: arm64 - platform: osx - license: GPL-2.0-only OR FTL - size: 596430 - timestamp: 1694616332835 -- conda: https://conda.anaconda.org/conda-forge/linux-64/frozenlist-1.5.0-py312h178313f_1.conda - sha256: 501e20626798b6d7f130f4db0fb02c0385d8f4c11ca525925602a4208afb343f - md5: fb986e1c089021979dc79606af78ef8f - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 60939 - timestamp: 1737645356438 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/frozenlist-1.5.0-py312hcc812fe_1.conda - sha256: 84895c5e207e0cb2044f3607fb36b82eb8cb45f0a009d03dc04c777ed975757d - md5: 9090bf5c43e8011fb2e9a82a1db20cc3 - depends: - - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 60472 - timestamp: 1737645511278 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/frozenlist-1.5.0-py312h998013c_1.conda - sha256: d503ac8c050abdbd129253973f23be34944978d510de78ef5a3e6aa1e3d9552d - md5: 5eb3715c7e3fa9b533361375bfefe6ee - depends: - - __osx >=11.0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: APACHE - size: 57256 - timestamp: 1737645503377 -- conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2025.2.0-pyhd8ed1ab_0.conda - sha256: 7433b8469074985b651693778ec6f03d2a23fad9919a515e3b8545996b5e721a - md5: d9ea16b71920b03beafc17fcca16df90 - depends: - - python >=3.9 - license: BSD-3-Clause - license_family: BSD - size: 138186 - timestamp: 1738501352608 -- conda: https://conda.anaconda.org/conda-forge/linux-64/gflags-2.2.2-h5888daf_1005.conda - sha256: 6c33bf0c4d8f418546ba9c250db4e4221040936aef8956353bc764d4877bc39a - md5: d411fc29e338efb48c5fd4576d71d881 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libstdcxx >=13 - arch: x86_64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 119654 - timestamp: 1726600001928 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gflags-2.2.2-h5ad3122_1005.conda - sha256: 28fe6b40b20454106d5e4ef6947cf298c13cc72a46347bbc49b563cd3a463bfa - md5: 4ff634d515abbf664774b5e1168a9744 - depends: - - libgcc >=13 - - libstdcxx >=13 - arch: aarch64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 106638 - timestamp: 1726599967617 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/gflags-2.2.2-hf9b8971_1005.conda - sha256: fd56ed8a1dab72ab90d8a8929b6f916a6d9220ca297ff077f8f04c5ed3408e20 - md5: 57a511a5905caa37540eb914dfcbf1fb - depends: - - __osx >=11.0 - - libcxx >=17 - arch: arm64 - platform: osx - license: BSD-3-Clause - license_family: BSD - size: 82090 - timestamp: 1726600145480 -- conda: https://conda.anaconda.org/conda-forge/linux-64/glog-0.7.1-hbabe93e_0.conda - sha256: dc824dc1d0aa358e28da2ecbbb9f03d932d976c8dca11214aa1dcdfcbd054ba2 - md5: ff862eebdfeb2fd048ae9dc92510baca - depends: - - gflags >=2.2.2,<2.3.0a0 - - libgcc-ng >=12 - - libstdcxx-ng >=12 - arch: x86_64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 143452 - timestamp: 1718284177264 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/glog-0.7.1-h468a4a4_0.conda - sha256: 920795d4f775a9f47e91c2223e64847f0b212b3fedc56c137c5889e32efe8ba0 - md5: 08940a32c6ced3703d1412dd37df4f62 - depends: - - gflags >=2.2.2,<2.3.0a0 - - libgcc-ng >=12 - - libstdcxx-ng >=12 - arch: aarch64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 145811 - timestamp: 1718284208668 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/glog-0.7.1-heb240a5_0.conda - sha256: 9fc77de416953aa959039db72bc41bfa4600ae3ff84acad04a7d0c1ab9552602 - md5: fef68d0a95aa5b84b5c1a4f6f3bf40e1 - depends: - - __osx >=11.0 - - gflags >=2.2.2,<2.3.0a0 - - libcxx >=16 - arch: arm64 - platform: osx - license: BSD-3-Clause - license_family: BSD - size: 112215 - timestamp: 1718284365403 -- conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda - sha256: d8d19575a827f2c62500949b9536efdd6b5406c9f546a73b6a87ac90b03a5875 - md5: 4861e30ff0cd566ea6fb4593e3b7c22a - depends: - - protobuf >=3.20.2,<6.0.0.dev0,!=3.20.0,!=3.20.1,!=4.21.1,!=4.21.2,!=4.21.3,!=4.21.4,!=4.21.5 - - python >=3.9 - license: Apache-2.0 - license_family: APACHE - size: 116522 - timestamp: 1731459019854 -- conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda - sha256: 622516185a7c740d5c7f27016d0c15b45782c1501e5611deec63fd70344ce7c8 - md5: 7ee49e89531c0dcbba9466f6d115d585 - depends: - - python >=3.9 - - typing_extensions - license: MIT - license_family: MIT - size: 51846 - timestamp: 1733327599467 -- conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda - sha256: 0aa1cdc67a9fe75ea95b5644b734a756200d6ec9d0dff66530aec3d1c1e9df75 - md5: b4754fb1bdcb70c8fd54f918301582c6 - depends: - - hpack >=4.1,<5 - - hyperframe >=6.1,<7 - - python >=3.9 - license: MIT - license_family: MIT - size: 53888 - timestamp: 1738578623567 -- conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda - sha256: 6ad78a180576c706aabeb5b4c8ceb97c0cb25f1e112d76495bff23e3779948ba - md5: 0a802cb9888dd14eeefc611f05c40b6e - depends: - - python >=3.9 - license: MIT - license_family: MIT - size: 30731 - timestamp: 1737618390337 -- conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - sha256: c84d012a245171f3ed666a8bf9319580c269b7843ffa79f26468842da3abd5df - md5: 2ca8e6dbc86525c8b95e3c0ffa26442e - depends: - - python >=3.8 - - h11 >=0.13,<0.15 - - h2 >=3,<5 - - sniffio 1.* - - anyio >=3.0,<5.0 - - certifi - license: BSD-3-Clause - license_family: BSD - size: 48959 - timestamp: 1731707562362 -- conda: https://conda.anaconda.org/conda-forge/linux-64/httptools-0.6.4-py312h66e93f0_0.conda - sha256: 621e7e050b888e5239d33e37ea72d6419f8367e5babcad38b755586f20264796 - md5: 8b1160b32557290b64d5be68db3d996d - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - arch: x86_64 - platform: linux - license: MIT - license_family: MIT - size: 101872 - timestamp: 1732707756745 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/httptools-0.6.4-py312hb2c0f52_0.conda - sha256: 0bd1f30224af142711d11033a7469ae402a1147143f399f7341bbc1d8178c722 - md5: 5e70a6de59352f9a52e9caa7f3447390 - depends: - - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - arch: aarch64 - platform: linux - license: MIT - license_family: MIT - size: 101255 - timestamp: 1732707891645 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/httptools-0.6.4-py312hea69d52_0.conda - sha256: 5e93cda79e32e8c0039e05ea1939e688da336187dab025f699b42ef529e848be - md5: e1747a8e8d2aca5499aaea9993bf31ff - depends: - - __osx >=11.0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - arch: arm64 - platform: osx - license: MIT - license_family: MIT - size: 85623 - timestamp: 1732707871414 -- conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - sha256: cd0f1de3697b252df95f98383e9edb1d00386bfdd03fdf607fa42fe5fcb09950 - md5: d6989ead454181f4f9bc987d3dc4e285 - depends: - - anyio - - certifi - - httpcore 1.* - - idna - - python >=3.9 - license: BSD-3-Clause - license_family: BSD - size: 63082 - timestamp: 1733663449209 -- conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.28.0-pyhd8ed1ab_0.conda - sha256: 3c48ffeb8a425eeba5dfa81a4da4b738a12d2104da0c3b443185029718dd6e48 - md5: 317f31a6fe151756ef10e7ed97a15f8a - depends: - - filelock - - fsspec >=2023.5.0 - - packaging >=20.9 - - python >=3.9 - - pyyaml >=5.1 - - requests - - tqdm >=4.42.1 - - typing-extensions >=3.7.4.3 - - typing_extensions >=3.7.4.3 - license: Apache-2.0 - license_family: APACHE - size: 284361 - timestamp: 1738349452337 -- conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - sha256: 77af6f5fe8b62ca07d09ac60127a30d9069fdc3c68d6b256754d0ffb1f7779f8 - md5: 8e6923fc12f1fe8f8c4e5c9f343256ac - depends: - - python >=3.9 - license: MIT - license_family: MIT - size: 17397 - timestamp: 1737618427549 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda - sha256: 813298f2e54ef087dbfc9cc2e56e08ded41de65cff34c639cc8ba4e27e4540c9 - md5: 268203e8b983fddb6412b36f2024e75c - depends: - - libgcc-ng >=12 - - libstdcxx-ng >=12 - arch: aarch64 - platform: linux - license: MIT - license_family: MIT - size: 12282786 - timestamp: 1720853454991 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda - sha256: 9ba12c93406f3df5ab0a43db8a4b4ef67a5871dfd401010fbe29b218b2cbe620 - md5: 5eb22c1d7b3fc4abb50d92d621583137 - depends: - - __osx >=11.0 - arch: arm64 - platform: osx - license: MIT - license_family: MIT - size: 11857802 - timestamp: 1720853997952 -- conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - sha256: d7a472c9fd479e2e8dcb83fb8d433fce971ea369d704ece380e876f9c3494e87 - md5: 39a4f67be3286c86d696df570b1201b7 - depends: - - python >=3.9 - license: BSD-3-Clause - license_family: BSD - size: 49765 - timestamp: 1733211921194 -- conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_1.conda - sha256: 13766b88fc5b23581530d3a0287c0c58ad82f60401afefab283bf158d2be55a9 - md5: 315607a3030ad5d5227e76e0733798ff - depends: - - python >=3.9 - - zipp >=0.5 - license: Apache-2.0 - license_family: APACHE - size: 28623 - timestamp: 1733223207185 -- conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.5-pyhd8ed1ab_0.conda - sha256: 98977694b9ecaa3218662f843425f39501f81973c450f995eec68f1803ed71c3 - md5: 2752a6ed44105bfb18c9bef1177d9dcd - depends: - - markupsafe >=2.0 - - python >=3.9 - license: BSD-3-Clause - license_family: BSD - size: 112561 - timestamp: 1734824044952 -- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - sha256: 19d8bd5bb2fde910ec59e081eeb59529491995ce0d653a5209366611023a0b3a - md5: 4ebae00eae9705b0c3d6d1018a81d047 - depends: - - importlib-metadata >=4.8.3 - - jupyter_core >=4.12,!=5.0.* - - python >=3.9 - - python-dateutil >=2.8.2 - - pyzmq >=23.0 - - tornado >=6.2 - - traitlets >=5.3 - license: BSD-3-Clause - license_family: BSD - size: 106342 - timestamp: 1733441040958 -- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - sha256: 732b1e8536bc22a5a174baa79842d79db2f4956d90293dd82dc1b3f6099bcccd - md5: 0a2980dada0dd7fd0998f0342308b1b1 - depends: - - __unix - - platformdirs >=2.5 - - python >=3.8 - - traitlets >=5.3 - license: BSD-3-Clause - license_family: BSD - size: 57671 - timestamp: 1727163547058 -- conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 - sha256: 150c05a6e538610ca7c43beb3a40d65c90537497a4f6a5f4d15ec0451b6f5ebb - md5: 30186d27e2c9fa62b45fb1476b7200e3 - depends: - - libgcc-ng >=10.3.0 - arch: x86_64 - platform: linux - license: LGPL-2.1-or-later - size: 117831 - timestamp: 1646151697040 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/keyutils-1.6.1-h4e544f5_0.tar.bz2 - sha256: 6d4233d97a9b38acbb26e1268bcf8c10a8e79c2aed7e5a385ec3769967e3e65b - md5: 1f24853e59c68892452ef94ddd8afd4b - depends: - - libgcc-ng >=10.3.0 - arch: aarch64 - platform: linux - license: LGPL-2.1-or-later - size: 112327 - timestamp: 1646166857935 -- conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda - sha256: 99df692f7a8a5c27cd14b5fb1374ee55e756631b9c3d659ed3ee60830249b238 - md5: 3f43953b7d3fb3aaa1d0d0723d91e368 - depends: - - keyutils >=1.6.1,<2.0a0 - - libedit >=3.1.20191231,<3.2.0a0 - - libedit >=3.1.20191231,<4.0a0 - - libgcc-ng >=12 - - libstdcxx-ng >=12 - - openssl >=3.3.1,<4.0a0 - arch: x86_64 - platform: linux - license: MIT - license_family: MIT - size: 1370023 - timestamp: 1719463201255 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/krb5-1.21.3-h50a48e9_0.conda - sha256: 0ec272afcf7ea7fbf007e07a3b4678384b7da4047348107b2ae02630a570a815 - md5: 29c10432a2ca1472b53f299ffb2ffa37 - depends: - - keyutils >=1.6.1,<2.0a0 - - libedit >=3.1.20191231,<3.2.0a0 - - libedit >=3.1.20191231,<4.0a0 - - libgcc-ng >=12 - - libstdcxx-ng >=12 - - openssl >=3.3.1,<4.0a0 - arch: aarch64 - platform: linux - license: MIT - license_family: MIT - size: 1474620 - timestamp: 1719463205834 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda - sha256: 4442f957c3c77d69d9da3521268cad5d54c9033f1a73f99cde0a3658937b159b - md5: c6dc8a0fdec13a0565936655c33069a1 - depends: - - __osx >=11.0 - - libcxx >=16 - - libedit >=3.1.20191231,<3.2.0a0 - - libedit >=3.1.20191231,<4.0a0 - - openssl >=3.3.1,<4.0a0 - arch: arm64 - platform: osx - license: MIT - license_family: MIT - size: 1155530 - timestamp: 1719463474401 -- conda: https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.16-hb7c19ff_0.conda - sha256: 5c878d104b461b7ef922abe6320711c0d01772f4cd55de18b674f88547870041 - md5: 51bb7010fc86f70eee639b4bb7a894f5 - depends: - - libgcc-ng >=12 - - libjpeg-turbo >=3.0.0,<4.0a0 - - libtiff >=4.6.0,<4.8.0a0 - arch: x86_64 - platform: linux - license: MIT - license_family: MIT - size: 245247 - timestamp: 1701647787198 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lcms2-2.16-h922389a_0.conda - sha256: be4847b1014d3cbbc524a53bdbf66182f86125775020563e11d914c8468dd97d - md5: ffdd8267a04c515e7ce69c727b051414 - depends: - - libgcc-ng >=12 - - libjpeg-turbo >=3.0.0,<4.0a0 - - libtiff >=4.6.0,<4.8.0a0 - arch: aarch64 - platform: linux - license: MIT - license_family: MIT - size: 296219 - timestamp: 1701647961116 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.16-ha0e7c42_0.conda - sha256: 151e0c84feb7e0747fabcc85006b8973b22f5abbc3af76a9add0b0ef0320ebe4 - md5: 66f6c134e76fe13cce8a9ea5814b5dd5 - depends: - - libjpeg-turbo >=3.0.0,<4.0a0 - - libtiff >=4.6.0,<4.8.0a0 - arch: arm64 - platform: osx - license: MIT - license_family: MIT - size: 211959 - timestamp: 1701647962657 -- conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_2.conda - sha256: 7c91cea91b13f4314d125d1bedb9d03a29ebbd5080ccdea70260363424646dbe - md5: 048b02e3962f066da18efe3a21b77672 - depends: - - __glibc >=2.17,<3.0.a0 - constrains: - - binutils_impl_linux-64 2.43 - arch: x86_64 - platform: linux - license: GPL-3.0-only - license_family: GPL - size: 669211 - timestamp: 1729655358674 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_2.conda - sha256: 80ec7e8f006196808fac5bd4b3773a652847f97bbf08044cd87731424ac64f8b - md5: fcbde5ea19d55468953bf588770c0501 - constrains: - - binutils_impl_linux-aarch64 2.43 - arch: aarch64 - platform: linux - license: GPL-3.0-only - license_family: GPL - size: 698245 - timestamp: 1729655345825 -- conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 - sha256: cb55f36dcd898203927133280ae1dc643368af041a48bcf7c026acb7c47b0c12 - md5: 76bbff344f0134279f225174e9064c8f - depends: - - libgcc-ng >=12 - - libstdcxx-ng >=12 - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 281798 - timestamp: 1657977462600 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.0.0-h4de3ea5_0.tar.bz2 - sha256: 2d09ef9b7796d83364957e420b41c32d94e628c3f0520b61c332518a7b5cd586 - md5: 1a0ffc65e03ce81559dbcb0695ad1476 - depends: - - libgcc-ng >=12 - - libstdcxx-ng >=12 - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 262096 - timestamp: 1657978241894 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 - sha256: 6f068bb53dfb6147d3147d981bb851bb5477e769407ad4e6a68edf482fdcb958 - md5: de462d5aacda3b30721b512c5da4e742 - depends: - - libcxx >=13.0.1 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: Apache - size: 215721 - timestamp: 1657977558796 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda - sha256: 143a586aa67d50622ef703de57b9d43f44945836d6568e0e7aa174bd8c45e0d4 - md5: 488f260ccda0afaf08acb286db439c2f - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libstdcxx >=13 - constrains: - - libabseil-static =20240722.0=cxx17* - - abseil-cpp =20240722.0 - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 1311599 - timestamp: 1736008414161 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h18dbdb1_4.conda - sha256: bb6c5fb3b8de5f90735c5252b57efb3c268ee222c755569dac18065f05147670 - md5: 633b9fe454ffea2aaf29e191d946a83b - depends: - - libgcc >=13 - - libstdcxx >=13 - constrains: - - abseil-cpp =20240722.0 - - libabseil-static =20240722.0=cxx17* - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 1334844 - timestamp: 1736008472455 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_h07bc746_4.conda - sha256: 05fa5e5e908962b9c5aba95f962e2ca81d9599c4715aebe5e4ddb72b309d1770 - md5: c2d95bd7aa8d564a9bd7eca5e571a5b3 - depends: - - __osx >=11.0 - - libcxx >=18 - constrains: - - libabseil-static =20240722.0=cxx17* - - abseil-cpp =20240722.0 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: Apache - size: 1178260 - timestamp: 1736008642885 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-19.0.0-h00a82cf_8_cpu.conda - build_number: 8 - sha256: dcac39be95b9afe42bc9b7bfcfa258e31e413a4cb79c49f6707edf2838e8d64c - md5: 51e31b59290c09b58d290f66b908999b - depends: - - __glibc >=2.17,<3.0.a0 - - aws-crt-cpp >=0.29.9,<0.29.10.0a0 - - aws-sdk-cpp >=1.11.489,<1.11.490.0a0 - - azure-core-cpp >=1.14.0,<1.14.1.0a0 - - azure-identity-cpp >=1.10.0,<1.10.1.0a0 - - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 - - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 - - bzip2 >=1.0.8,<2.0a0 - - glog >=0.7.1,<0.8.0a0 - - libabseil * cxx17* - - libabseil >=20240722.0,<20240723.0a0 - - libbrotlidec >=1.1.0,<1.2.0a0 - - libbrotlienc >=1.1.0,<1.2.0a0 - - libgcc >=13 - - libgoogle-cloud >=2.34.0,<2.35.0a0 - - libgoogle-cloud-storage >=2.34.0,<2.35.0a0 - - libopentelemetry-cpp >=1.18.0,<1.19.0a0 - - libprotobuf >=5.28.3,<5.28.4.0a0 - - libre2-11 >=2024.7.2 - - libstdcxx >=13 - - libutf8proc >=2.10.0,<2.11.0a0 - - libzlib >=1.3.1,<2.0a0 - - lz4-c >=1.10.0,<1.11.0a0 - - orc >=2.0.3,<2.0.4.0a0 - - re2 - - snappy >=1.2.1,<1.3.0a0 - - zstd >=1.5.6,<1.6.0a0 - constrains: - - parquet-cpp <0.0a0 - - arrow-cpp <0.0a0 - - apache-arrow-proc =*=cpu - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 8969999 - timestamp: 1737824740139 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-19.0.0-h03ebaaf_8_cpu.conda - build_number: 8 - sha256: ca5db2ba71de0c4fb54ee12e3b841e3e90b988ae7a5935fae3cce90111b5cb6d - md5: 1ac6f73a63d715590a7ad0113a578762 - depends: - - aws-crt-cpp >=0.29.9,<0.29.10.0a0 - - aws-sdk-cpp >=1.11.489,<1.11.490.0a0 - - azure-core-cpp >=1.14.0,<1.14.1.0a0 - - azure-identity-cpp >=1.10.0,<1.10.1.0a0 - - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 - - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 - - bzip2 >=1.0.8,<2.0a0 - - glog >=0.7.1,<0.8.0a0 - - libabseil * cxx17* - - libabseil >=20240722.0,<20240723.0a0 - - libbrotlidec >=1.1.0,<1.2.0a0 - - libbrotlienc >=1.1.0,<1.2.0a0 - - libgcc >=13 - - libgoogle-cloud >=2.34.0,<2.35.0a0 - - libgoogle-cloud-storage >=2.34.0,<2.35.0a0 - - libopentelemetry-cpp >=1.18.0,<1.19.0a0 - - libprotobuf >=5.28.3,<5.28.4.0a0 - - libre2-11 >=2024.7.2 - - libstdcxx >=13 - - libutf8proc >=2.10.0,<2.11.0a0 - - libzlib >=1.3.1,<2.0a0 - - lz4-c >=1.10.0,<1.11.0a0 - - orc >=2.0.3,<2.0.4.0a0 - - re2 - - snappy >=1.2.1,<1.3.0a0 - - zstd >=1.5.6,<1.6.0a0 - constrains: - - arrow-cpp <0.0a0 - - apache-arrow-proc =*=cpu - - parquet-cpp <0.0a0 - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 8213318 - timestamp: 1737808895185 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-19.0.0-h819e3af_8_cpu.conda - build_number: 8 - sha256: 825afabd1c998dfddce9600584c492296a15219d441c6e3029e6c6228200d695 - md5: fbe0ce0ef6d386ab832ee5cca2ab3048 - depends: - - __osx >=11.0 - - aws-crt-cpp >=0.29.9,<0.29.10.0a0 - - aws-sdk-cpp >=1.11.489,<1.11.490.0a0 - - azure-core-cpp >=1.14.0,<1.14.1.0a0 - - azure-identity-cpp >=1.10.0,<1.10.1.0a0 - - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 - - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 - - bzip2 >=1.0.8,<2.0a0 - - glog >=0.7.1,<0.8.0a0 - - libabseil * cxx17* - - libabseil >=20240722.0,<20240723.0a0 - - libbrotlidec >=1.1.0,<1.2.0a0 - - libbrotlienc >=1.1.0,<1.2.0a0 - - libcxx >=18 - - libgoogle-cloud >=2.34.0,<2.35.0a0 - - libgoogle-cloud-storage >=2.34.0,<2.35.0a0 - - libopentelemetry-cpp >=1.18.0,<1.19.0a0 - - libprotobuf >=5.28.3,<5.28.4.0a0 - - libre2-11 >=2024.7.2 - - libutf8proc >=2.10.0,<2.11.0a0 - - libzlib >=1.3.1,<2.0a0 - - lz4-c >=1.10.0,<1.11.0a0 - - orc >=2.0.3,<2.0.4.0a0 - - re2 - - snappy >=1.2.1,<1.3.0a0 - - zstd >=1.5.6,<1.6.0a0 - constrains: - - arrow-cpp <0.0a0 - - apache-arrow-proc =*=cpu - - parquet-cpp <0.0a0 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: APACHE - size: 5573619 - timestamp: 1737806044972 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-19.0.0-hcb10f89_8_cpu.conda - build_number: 8 - sha256: bf8f64403685eb3ab6ebc5a25cc3a70431a1f822469bf96b0ee80c169deec0ac - md5: dafba09929a58e10bb8231ff7966e623 - depends: - - __glibc >=2.17,<3.0.a0 - - libarrow 19.0.0 h00a82cf_8_cpu - - libgcc >=13 - - libstdcxx >=13 - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 637555 - timestamp: 1737824783456 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-19.0.0-h3b568fd_8_cpu.conda - build_number: 8 - sha256: 154fe9bee1a1e3c96497fcbf3c01191965d5c4e9718dcbf8502035d7ff633499 - md5: e015edb6317c81893f9ce4865bbd55f4 - depends: - - libarrow 19.0.0 h03ebaaf_8_cpu - - libgcc >=13 - - libstdcxx >=13 - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 602892 - timestamp: 1737808980001 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-19.0.0-hf07054f_8_cpu.conda - build_number: 8 - sha256: 66ce35077dae435cd34644d53159af14afd62452eeec8f63cd55adb11e7f2780 - md5: 68cd272eccf7b4fcb0a3bab95e89e71e - depends: - - __osx >=11.0 - - libarrow 19.0.0 h819e3af_8_cpu - - libcxx >=18 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: APACHE - size: 500365 - timestamp: 1737806169385 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-19.0.0-hcb10f89_8_cpu.conda - build_number: 8 - sha256: dc4a0f13428c9bd9781e25b67f5f52a92b8c4beafa2435fe5127e9fac7969218 - md5: 66e19108e4597b9a35d0886607c2d8a8 - depends: - - __glibc >=2.17,<3.0.a0 - - libarrow 19.0.0 h00a82cf_8_cpu - - libarrow-acero 19.0.0 hcb10f89_8_cpu - - libgcc >=13 - - libparquet 19.0.0 h081d1f1_8_cpu - - libstdcxx >=13 - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 604335 - timestamp: 1737824891062 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-19.0.0-h3b568fd_8_cpu.conda - build_number: 8 - sha256: f038f979b3357124a548dd83880f94284355a90e4736caaabd23c750cf06eaa9 - md5: 03f35d7f35dae0e05f5f4f747d7eb6e7 - depends: - - libarrow 19.0.0 h03ebaaf_8_cpu - - libarrow-acero 19.0.0 h3b568fd_8_cpu - - libgcc >=13 - - libparquet 19.0.0 hfc78867_8_cpu - - libstdcxx >=13 - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 579626 - timestamp: 1737809072479 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-19.0.0-hf07054f_8_cpu.conda - build_number: 8 - sha256: 6934ce0503472f002695d45ae12a8f2948e10e7a0b7430330a4d0d83f3e5ca27 - md5: 1a941d1ddc16b532790781a4becdc881 - depends: - - __osx >=11.0 - - libarrow 19.0.0 h819e3af_8_cpu - - libarrow-acero 19.0.0 hf07054f_8_cpu - - libcxx >=18 - - libparquet 19.0.0 h636d7b7_8_cpu - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: APACHE - size: 501001 - timestamp: 1737807214184 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-19.0.0-h08228c5_8_cpu.conda - build_number: 8 - sha256: e370ee738d3963120f715343a27cf041c62a3ee8bb19e25da9115ec4bae5f2de - md5: e5dd1926e5a4b23de8ba4eacc8eb9b2d - depends: - - __glibc >=2.17,<3.0.a0 - - libabseil * cxx17* - - libabseil >=20240722.0,<20240723.0a0 - - libarrow 19.0.0 h00a82cf_8_cpu - - libarrow-acero 19.0.0 hcb10f89_8_cpu - - libarrow-dataset 19.0.0 hcb10f89_8_cpu - - libgcc >=13 - - libprotobuf >=5.28.3,<5.28.4.0a0 - - libstdcxx >=13 - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 521475 - timestamp: 1737824942852 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-19.0.0-h1e9d426_8_cpu.conda - build_number: 8 - sha256: 92e1fea8557a931c273ea3bd3bf73a4f4f0c566844dcedf78b9a16e5cf6cab56 - md5: ef08fcb5c165cdc743336bd8f4cbed69 - depends: - - libabseil * cxx17* - - libabseil >=20240722.0,<20240723.0a0 - - libarrow 19.0.0 h03ebaaf_8_cpu - - libarrow-acero 19.0.0 h3b568fd_8_cpu - - libarrow-dataset 19.0.0 h3b568fd_8_cpu - - libgcc >=13 - - libprotobuf >=5.28.3,<5.28.4.0a0 - - libstdcxx >=13 - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 516126 - timestamp: 1737809118915 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-19.0.0-h4239455_8_cpu.conda - build_number: 8 - sha256: 445d2ca20b07e57270f3b07b62c09794369413e5ff3716d9c73d0ad360969583 - md5: a39953d9b03b0463f4ccc187a8bcfcca - depends: - - __osx >=11.0 - - libabseil * cxx17* - - libabseil >=20240722.0,<20240723.0a0 - - libarrow 19.0.0 h819e3af_8_cpu - - libarrow-acero 19.0.0 hf07054f_8_cpu - - libarrow-dataset 19.0.0 hf07054f_8_cpu - - libcxx >=18 - - libprotobuf >=5.28.3,<5.28.4.0a0 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: APACHE - size: 449672 - timestamp: 1737807386331 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-28_h59b9bed_openblas.conda - build_number: 28 - sha256: 93fbcf2800b859b7ca5add3ab5d3aa11c6a6ff4b942a1cea4bf644f78488edb8 - md5: 73e2a99fdeb8531d50168987378fda8a - depends: - - libopenblas >=0.3.28,<0.3.29.0a0 - - libopenblas >=0.3.28,<1.0a0 - constrains: - - libcblas =3.9.0=28*_openblas - - blas =2.128=openblas - - liblapack =3.9.0=28*_openblas - - liblapacke =3.9.0=28*_openblas - arch: x86_64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 16621 - timestamp: 1738114033763 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-28_h1a9f1db_openblas.conda - build_number: 28 - sha256: a50dc7ed1f49789aab4ffb560d9a46b5dc3f059a925282f699c1a96fa566a1a0 - md5: 88dfbb3875d62b431aa676b4a54734bf - depends: - - libopenblas >=0.3.28,<0.3.29.0a0 - - libopenblas >=0.3.28,<1.0a0 - constrains: - - liblapack =3.9.0=28*_openblas - - libcblas =3.9.0=28*_openblas - - blas =2.128=openblas - - liblapacke =3.9.0=28*_openblas - arch: aarch64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 16697 - timestamp: 1738114082682 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-28_h10e41b3_openblas.conda - build_number: 28 - sha256: 5bea855a1a7435ce2238535aa4b13db8af8ee301d99a42b083b63fa64c1ea144 - md5: 166166d84a0e9571dc50210baf993b46 - depends: - - libopenblas >=0.3.28,<0.3.29.0a0 - - libopenblas >=0.3.28,<1.0a0 - constrains: - - liblapack =3.9.0=28*_openblas - - liblapacke =3.9.0=28*_openblas - - blas =2.128=openblas - - libcblas =3.9.0=28*_openblas - arch: arm64 - platform: osx - license: BSD-3-Clause - license_family: BSD - size: 16840 - timestamp: 1738114389937 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hb9d3cd8_2.conda - sha256: d9db2de60ea917298e658143354a530e9ca5f9c63471c65cf47ab39fd2f429e3 - md5: 41b599ed2b02abcfdd84302bff174b23 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - arch: x86_64 - platform: linux - license: MIT - license_family: MIT - size: 68851 - timestamp: 1725267660471 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlicommon-1.1.0-h86ecc28_2.conda - sha256: 64112af913974b309d67fd342e065fd184347043a6387933b3db796778a28019 - md5: 3ee026955c688f551a9999840cff4c67 - depends: - - libgcc >=13 - arch: aarch64 - platform: linux - license: MIT - license_family: MIT - size: 68982 - timestamp: 1725267774142 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.1.0-hd74edd7_2.conda - sha256: 839dacb741bdbb25e58f42088a2001b649f4f12195aeb700b5ddfca3267749e5 - md5: d0bf1dff146b799b319ea0434b93f779 - depends: - - __osx >=11.0 - arch: arm64 - platform: osx - license: MIT - license_family: MIT - size: 68426 - timestamp: 1725267943211 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hb9d3cd8_2.conda - sha256: 2892d512cad096cb03f1b66361deeab58b64e15ba525d6592bb6d609e7045edf - md5: 9566f0bd264fbd463002e759b8a82401 - depends: - - __glibc >=2.17,<3.0.a0 - - libbrotlicommon 1.1.0 hb9d3cd8_2 - - libgcc >=13 - arch: x86_64 - platform: linux - license: MIT - license_family: MIT - size: 32696 - timestamp: 1725267669305 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlidec-1.1.0-h86ecc28_2.conda - sha256: 94c808d9ca3eb6ef30976a9843e27f027cf3a1e84e8c6835cbb696b7bdb35c4c - md5: e64d0f3b59c7c4047446b97a8624a72d - depends: - - libbrotlicommon 1.1.0 h86ecc28_2 - - libgcc >=13 - arch: aarch64 - platform: linux - license: MIT - license_family: MIT - size: 31708 - timestamp: 1725267783442 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.1.0-hd74edd7_2.conda - sha256: 6c6862eb274f21a7c0b60e5345467a12e6dda8b9af4438c66d496a2c1a538264 - md5: 55e66e68ce55523a6811633dd1ac74e2 - depends: - - __osx >=11.0 - - libbrotlicommon 1.1.0 hd74edd7_2 - arch: arm64 - platform: osx - license: MIT - license_family: MIT - size: 28378 - timestamp: 1725267980316 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.1.0-hb9d3cd8_2.conda - sha256: 779f58174e99de3600e939fa46eddb453ec5d3c60bb46cdaa8b4c127224dbf29 - md5: 06f70867945ea6a84d35836af780f1de - depends: - - __glibc >=2.17,<3.0.a0 - - libbrotlicommon 1.1.0 hb9d3cd8_2 - - libgcc >=13 - arch: x86_64 - platform: linux - license: MIT - license_family: MIT - size: 281750 - timestamp: 1725267679782 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlienc-1.1.0-h86ecc28_2.conda - sha256: 41385e17bc73834b235c5aff12d6d82eccb534acb3c30986996f9dad92a0d54c - md5: 0e9bd365480c72b25c71a448257b537d - depends: - - libbrotlicommon 1.1.0 h86ecc28_2 - - libgcc >=13 - arch: aarch64 - platform: linux - license: MIT - license_family: MIT - size: 290230 - timestamp: 1725267792697 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlienc-1.1.0-hd74edd7_2.conda - sha256: eeb1eb0d58b9d02bc1b98dc0a058f104ab168eb2f7d1c7bfa0570a12cfcdb7b7 - md5: 4f3a434504c67b2c42565c0b85c1885c - depends: - - __osx >=11.0 - - libbrotlicommon 1.1.0 hd74edd7_2 - arch: arm64 - platform: osx - license: MIT - license_family: MIT - size: 279644 - timestamp: 1725268003553 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-28_he106b2a_openblas.conda - build_number: 28 - sha256: de293e117db53e5d78b579136509c35a5e4ad11529c05f9af83cf89be4d30de1 - md5: 4e20a1c00b4e8a984aac0f6cce59e3ac - depends: - - libblas 3.9.0 28_h59b9bed_openblas - constrains: - - blas =2.128=openblas - - liblapack =3.9.0=28*_openblas - - liblapacke =3.9.0=28*_openblas - arch: x86_64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 16539 - timestamp: 1738114043618 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-28_hab92f65_openblas.conda - build_number: 28 - sha256: ed62f13a85726f568e17ad569b5cc01a49a6c7bd334802cf1c1b15e9d10e7e93 - md5: 8cff453f547365131be5647c7680ac6d - depends: - - libblas 3.9.0 28_h1a9f1db_openblas - constrains: - - liblapack =3.9.0=28*_openblas - - blas =2.128=openblas - - liblapacke =3.9.0=28*_openblas - arch: aarch64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 16655 - timestamp: 1738114088527 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-28_hb3479ef_openblas.conda - build_number: 28 - sha256: f08adea59381babb3568e6d23e52aff874cbc25f299821647ab1127d1e1332ca - md5: 30942dea911ce333765003a8adec4e8a - depends: - - libblas 3.9.0 28_h10e41b3_openblas - constrains: - - blas =2.128=openblas - - liblapacke =3.9.0=28*_openblas - - liblapack =3.9.0=28*_openblas - arch: arm64 - platform: osx - license: BSD-3-Clause - license_family: BSD - size: 16788 - timestamp: 1738114399962 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libcrc32c-1.1.2-h9c3ff4c_0.tar.bz2 - sha256: fd1d153962764433fe6233f34a72cdeed5dcf8a883a85769e8295ce940b5b0c5 - md5: c965a5aa0d5c1c37ffc62dff36e28400 - depends: - - libgcc-ng >=9.4.0 - - libstdcxx-ng >=9.4.0 - arch: x86_64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 20440 - timestamp: 1633683576494 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcrc32c-1.1.2-h01db608_0.tar.bz2 - sha256: b8b8c57a87da86b3ea24280fd6aa8efaf92f4e684b606bf2db5d3cb06ffbe2ea - md5: 268ee639c17ada0002fb04dd21816cc2 - depends: - - libgcc-ng >=9.4.0 - - libstdcxx-ng >=9.4.0 - arch: aarch64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 18669 - timestamp: 1633683724891 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcrc32c-1.1.2-hbdafb3b_0.tar.bz2 - sha256: 58477b67cc719060b5b069ba57161e20ba69b8695d154a719cb4b60caf577929 - md5: 32bd82a6a625ea6ce090a81c3d34edeb - depends: - - libcxx >=11.1.0 - arch: arm64 - platform: osx - license: BSD-3-Clause - license_family: BSD - size: 18765 - timestamp: 1633683992603 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.11.1-h332b0f4_0.conda - sha256: 3cd4075b2a7b5562e46c8ec626f6f9ca57aeecaa94ff7df57eca26daa94c9906 - md5: 2b3e0081006dc21e8bf53a91c83a055c - depends: - - __glibc >=2.17,<3.0.a0 - - krb5 >=1.21.3,<1.22.0a0 - - libgcc >=13 - - libnghttp2 >=1.64.0,<2.0a0 - - libssh2 >=1.11.1,<2.0a0 - - libzlib >=1.3.1,<2.0a0 - - openssl >=3.4.0,<4.0a0 - - zstd >=1.5.6,<1.6.0a0 - arch: x86_64 - platform: linux - license: curl - license_family: MIT - size: 423011 - timestamp: 1733999897624 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcurl-8.11.1-h6702fde_0.conda - sha256: 9fc65d21a58f4aad1bc39dfb94a178893aeb035850c5cf0ed9736674279f390b - md5: 7dec1cd271c403d1636bda5aa388a55d - depends: - - krb5 >=1.21.3,<1.22.0a0 - - libgcc >=13 - - libnghttp2 >=1.64.0,<2.0a0 - - libssh2 >=1.11.1,<2.0a0 - - libzlib >=1.3.1,<2.0a0 - - openssl >=3.4.0,<4.0a0 - - zstd >=1.5.6,<1.6.0a0 - arch: aarch64 - platform: linux - license: curl - license_family: MIT - size: 440737 - timestamp: 1733999835504 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.11.1-h73640d1_0.conda - sha256: f47c35938144c23278987c7d12096f6a42d7c850ffc277222b032073412383b6 - md5: 46d7524cabfdd199bffe63f8f19a552b - depends: - - __osx >=11.0 - - krb5 >=1.21.3,<1.22.0a0 - - libnghttp2 >=1.64.0,<2.0a0 - - libssh2 >=1.11.1,<2.0a0 - - libzlib >=1.3.1,<2.0a0 - - openssl >=3.4.0,<4.0a0 - - zstd >=1.5.6,<1.6.0a0 - arch: arm64 - platform: osx - license: curl - license_family: MIT - size: 385098 - timestamp: 1734000160270 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda - sha256: 776092346da87a2a23502e14d91eb0c32699c4a1522b7331537bd1c3751dcff5 - md5: 5b3e1610ff8bd5443476b91d618f5b77 - depends: - - __osx >=11.0 - arch: arm64 - platform: osx - license: Apache-2.0 WITH LLVM-exception - license_family: Apache - size: 523505 - timestamp: 1736877862502 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.23-h4ddbbb0_0.conda - sha256: 511d801626d02f4247a04fff957cc6e9ec4cc7e8622bd9acd076bcdc5de5fe66 - md5: 8dfae1d2e74767e9ce36d5fa0d8605db - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - arch: x86_64 - platform: linux - license: MIT - license_family: MIT - size: 72255 - timestamp: 1734373823254 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libdeflate-1.23-h5e3c512_0.conda - sha256: 959419d87cd2b789a9055db95704c614f31aeb70bef7949fa2f734122a3a2863 - md5: 7e7ca2607b11b180120cefc2354fc0cb - depends: - - libgcc >=13 - arch: aarch64 - platform: linux - license: MIT - license_family: MIT - size: 69862 - timestamp: 1734373858306 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.23-hec38601_0.conda - sha256: 887c02deaed6d583459eba6367023e36d8761085b2f7126e389424f57155da53 - md5: 1d8b9588be14e71df38c525767a1ac30 - depends: - - __osx >=11.0 - arch: arm64 - platform: osx - license: MIT - license_family: MIT - size: 54132 - timestamp: 1734373971372 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda - sha256: d789471216e7aba3c184cd054ed61ce3f6dac6f87a50ec69291b9297f8c18724 - md5: c277e0a4d549b03ac1e9d6cbbe3d017b - depends: - - ncurses - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - ncurses >=6.5,<7.0a0 - arch: x86_64 - platform: linux - license: BSD-2-Clause - license_family: BSD - size: 134676 - timestamp: 1738479519902 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20250104-pl5321h976ea20_0.conda - sha256: c0b27546aa3a23d47919226b3a1635fccdb4f24b94e72e206a751b33f46fd8d6 - md5: fb640d776fc92b682a14e001980825b1 - depends: - - ncurses - - libgcc >=13 - - ncurses >=6.5,<7.0a0 - arch: aarch64 - platform: linux - license: BSD-2-Clause - license_family: BSD - size: 148125 - timestamp: 1738479808948 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda - sha256: 66aa216a403de0bb0c1340a88d1a06adaff66bae2cfd196731aa24db9859d631 - md5: 44083d2d2c2025afca315c7a172eab2b - depends: - - ncurses - - __osx >=11.0 - - ncurses >=6.5,<7.0a0 - arch: arm64 - platform: osx - license: BSD-2-Clause - license_family: BSD - size: 107691 - timestamp: 1738479560845 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda - sha256: 1cd6048169fa0395af74ed5d8f1716e22c19a81a8a36f934c110ca3ad4dd27b4 - md5: 172bf1cd1ff8629f2b1179945ed45055 - depends: - - libgcc-ng >=12 - arch: x86_64 - platform: linux - license: BSD-2-Clause - license_family: BSD - size: 112766 - timestamp: 1702146165126 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libev-4.33-h31becfc_2.conda - sha256: 973af77e297f1955dd1f69c2cbdc5ab9dfc88388a5576cd152cda178af0fd006 - md5: a9a13cb143bbaa477b1ebaefbe47a302 - depends: - - libgcc-ng >=12 - arch: aarch64 - platform: linux - license: BSD-2-Clause - license_family: BSD - size: 115123 - timestamp: 1702146237623 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libev-4.33-h93a5062_2.conda - sha256: 95cecb3902fbe0399c3a7e67a5bed1db813e5ab0e22f4023a5e0f722f2cc214f - md5: 36d33e440c31857372a72137f78bacf5 - arch: arm64 - platform: osx - license: BSD-2-Clause - license_family: BSD - size: 107458 - timestamp: 1702146414478 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libevent-2.1.12-hf998b51_1.conda - sha256: 2e14399d81fb348e9d231a82ca4d816bf855206923759b69ad006ba482764131 - md5: a1cfcc585f0c42bf8d5546bb1dfb668d - depends: - - libgcc-ng >=12 - - openssl >=3.1.1,<4.0a0 - arch: x86_64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 427426 - timestamp: 1685725977222 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libevent-2.1.12-h4ba1bb4_1.conda - sha256: 01333cc7d6e6985dd5700b43660d90e9e58049182017fd24862088ecbe1458e4 - md5: 96ae6083cd1ac9f6bc81631ac835b317 - depends: - - libgcc-ng >=12 - - openssl >=3.1.1,<4.0a0 - arch: aarch64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 438992 - timestamp: 1685726046519 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libevent-2.1.12-h2757513_1.conda - sha256: 8c136d7586259bb5c0d2b913aaadc5b9737787ae4f40e3ad1beaf96c80b919b7 - md5: 1a109764bff3bdc7bdd84088347d71dc - depends: - - openssl >=3.1.1,<4.0a0 - arch: arm64 - platform: osx - license: BSD-3-Clause - license_family: BSD - size: 368167 - timestamp: 1685726248899 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda - sha256: 56541b98447b58e52d824bd59d6382d609e11de1f8adf20b23143e353d2b8d26 - md5: db833e03127376d461e1e13e76f09b6c - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - constrains: - - expat 2.6.4.* - arch: x86_64 - platform: linux - license: MIT - license_family: MIT - size: 73304 - timestamp: 1730967041968 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.6.4-h5ad3122_0.conda - sha256: f42e758009ba9db90d1fe7992bc3e60d0c52f71fb20923375d2c44ae69a5a2b3 - md5: f1b3fab36861b3ce945a13f0dfdfc688 - depends: - - libgcc >=13 - constrains: - - expat 2.6.4.* - arch: aarch64 - platform: linux - license: MIT - license_family: MIT - size: 72345 - timestamp: 1730967203789 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.4-h286801f_0.conda - sha256: e42ab5ace927ee7c84e3f0f7d813671e1cf3529f5f06ee5899606630498c2745 - md5: 38d2656dd914feb0cab8c629370768bf - depends: - - __osx >=11.0 - constrains: - - expat 2.6.4.* - arch: arm64 - platform: osx - license: MIT - license_family: MIT - size: 64693 - timestamp: 1730967175868 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.2-h7f98852_5.tar.bz2 - sha256: ab6e9856c21709b7b517e940ae7028ae0737546122f83c2aa5d692860c3b149e - md5: d645c6d2ac96843a2bfaccd2d62b3ac3 - depends: - - libgcc-ng >=9.4.0 - arch: x86_64 - platform: linux - license: MIT - license_family: MIT - size: 58292 - timestamp: 1636488182923 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.4.2-h3557bc0_5.tar.bz2 - sha256: 7e9258a102480757fe3faeb225a3ca04dffd10fecd2a958c65cdb4cdf75f2c3c - md5: dddd85f4d52121fab0a8b099c5e06501 - depends: - - libgcc-ng >=9.4.0 - arch: aarch64 - platform: linux - license: MIT - license_family: MIT - size: 59450 - timestamp: 1636488255090 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 - sha256: 41b3d13efb775e340e4dba549ab5c029611ea6918703096b2eaa9c015c0750ca - md5: 086914b672be056eb70fd4285b6783b6 - arch: arm64 - platform: osx - license: MIT - license_family: MIT - size: 39020 - timestamp: 1636488587153 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h77fa898_1.conda - sha256: 53eb8a79365e58849e7b1a068d31f4f9e718dc938d6f2c03e960345739a03569 - md5: 3cb76c3f10d3bc7f1105b2fc9db984df - depends: - - _libgcc_mutex 0.1 conda_forge - - _openmp_mutex >=4.5 - constrains: - - libgomp 14.2.0 h77fa898_1 - - libgcc-ng ==14.2.0=*_1 - arch: x86_64 - platform: linux - license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - size: 848745 - timestamp: 1729027721139 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-14.2.0-he277a41_1.conda - sha256: 5d56757ccad208c79214395b00d006d8d18929a4ba49c47bd9460789a7620943 - md5: 511b511c5445e324066c3377481bcab8 - depends: - - _openmp_mutex >=4.5 - constrains: - - libgcc-ng ==14.2.0=*_1 - - libgomp 14.2.0 he277a41_1 - arch: aarch64 - platform: linux - license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - size: 535243 - timestamp: 1729089435134 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_1.conda - sha256: 3a76969c80e9af8b6e7a55090088bc41da4cffcde9e2c71b17f44d37b7cb87f7 - md5: e39480b9ca41323497b05492a63bc35b - depends: - - libgcc 14.2.0 h77fa898_1 - arch: x86_64 - platform: linux - license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - size: 54142 - timestamp: 1729027726517 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-14.2.0-he9431aa_1.conda - sha256: 9b5cf168a6c7361cae869cb74b716766ee7c6d6b3f6172b32ba9bf91135efdc4 - md5: 0694c249c61469f2c0f7e2990782af21 - depends: - - libgcc 14.2.0 he277a41_1 - arch: aarch64 - platform: linux - license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - size: 54104 - timestamp: 1729089444587 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_1.conda - sha256: fc9e7f22a17faf74da904ebfc4d88699013d2992e55505e4aa0eb01770290977 - md5: f1fd30127802683586f768875127a987 - depends: - - libgfortran5 14.2.0 hd5240d6_1 - constrains: - - libgfortran-ng ==14.2.0=*_1 - arch: x86_64 - platform: linux - license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - size: 53997 - timestamp: 1729027752995 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_1.conda - sha256: cb66e411fa32a5c6040f4e5e2a63c00897aae4c3133a9c004c2e929ccf19575b - md5: 0294b92d2f47a240bebb1e3336b495f1 - depends: - - libgfortran5 14.2.0 hb6113d0_1 - constrains: - - libgfortran-ng ==14.2.0=*_1 - arch: aarch64 - platform: linux - license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - size: 54105 - timestamp: 1729089471124 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda - sha256: 44e541b4821c96b28b27fef5630883a60ce4fee91fd9c79f25a199f8f73f337b - md5: 4a55d9e169114b2b90d3ec4604cd7bbf - depends: - - libgfortran5 13.2.0 hf226fd6_3 - arch: arm64 - platform: osx - license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - size: 110233 - timestamp: 1707330749033 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hd5240d6_1.conda - sha256: d149a37ca73611e425041f33b9d8dbed6e52ec506fe8cc1fc0ee054bddeb6d5d - md5: 9822b874ea29af082e5d36098d25427d - depends: - - libgcc >=14.2.0 - constrains: - - libgfortran 14.2.0 - arch: x86_64 - platform: linux - license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - size: 1462645 - timestamp: 1729027735353 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_1.conda - sha256: a87ff46d19916403cbf68cf1d785bf56b4d1ab7b2552468d2ea775d70782493f - md5: fc068e11b10e18f184e027782baa12b6 - depends: - - libgcc >=14.2.0 - constrains: - - libgfortran 14.2.0 - arch: aarch64 - platform: linux - license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - size: 1102158 - timestamp: 1729089452640 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda - sha256: bafc679eedb468a86aa4636061c55966186399ee0a04b605920d208d97ac579a - md5: 66ac81d54e95c534ae488726c1f698ea - depends: - - llvm-openmp >=8.0.0 - constrains: - - libgfortran 5.0.0 13_2_0_*_3 - arch: arm64 - platform: osx - license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - size: 997381 - timestamp: 1707330687590 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h77fa898_1.conda - sha256: 1911c29975ec99b6b906904040c855772ccb265a1c79d5d75c8ceec4ed89cd63 - md5: cc3573974587f12dda90d96e3e55a702 - depends: - - _libgcc_mutex 0.1 conda_forge - arch: x86_64 - platform: linux - license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - size: 460992 - timestamp: 1729027639220 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_1.conda - sha256: 5aa53874a5e57a00f2e0c2e2910684eb674429cd5fcb803619b226a73e89aedf - md5: 376f0e73abbda6d23c0cb749adc195ef - arch: aarch64 - platform: linux - license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - size: 463521 - timestamp: 1729089357313 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.34.0-h2b5623c_0.conda - sha256: 348ee1dddd82dcef5a185c86e65dda8acfc9b583acc425ccb9b661f2d433b2cc - md5: 2a5142c88dd6132eaa8079f99476e922 - depends: - - __glibc >=2.17,<3.0.a0 - - libabseil * cxx17* - - libabseil >=20240722.0,<20240723.0a0 - - libcurl >=8.11.1,<9.0a0 - - libgcc >=13 - - libgrpc >=1.67.1,<1.68.0a0 - - libprotobuf >=5.28.3,<5.28.4.0a0 - - libstdcxx >=13 - - openssl >=3.4.0,<4.0a0 - constrains: - - libgoogle-cloud 2.34.0 *_0 - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 1256795 - timestamp: 1737286199784 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-2.34.0-hccf9d24_0.conda - sha256: 54267dda8fafc2a2d379ef77b6029d8240e0628d4b29758f788fb903f84397a3 - md5: 1ce0fd876001c40801b40fea22987e41 - depends: - - libabseil * cxx17* - - libabseil >=20240722.0,<20240723.0a0 - - libcurl >=8.11.1,<9.0a0 - - libgcc >=13 - - libgrpc >=1.67.1,<1.68.0a0 - - libprotobuf >=5.28.3,<5.28.4.0a0 - - libstdcxx >=13 - - openssl >=3.4.0,<4.0a0 - constrains: - - libgoogle-cloud 2.34.0 *_0 - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 1256586 - timestamp: 1737285242684 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-2.34.0-hdbe95d5_0.conda - sha256: 919d8cbcd47d5bd2244c55b2bb87e2bd2eed8215996aab8435cb7123ffd9d20e - md5: 69826544e7978fcaa6bc8c1962d96ad6 - depends: - - __osx >=11.0 - - libabseil * cxx17* - - libabseil >=20240722.0,<20240723.0a0 - - libcurl >=8.11.1,<9.0a0 - - libcxx >=18 - - libgrpc >=1.67.1,<1.68.0a0 - - libprotobuf >=5.28.3,<5.28.4.0a0 - - openssl >=3.4.0,<4.0a0 - constrains: - - libgoogle-cloud 2.34.0 *_0 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: Apache - size: 878217 - timestamp: 1737284441192 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.34.0-h0121fbd_0.conda - sha256: aa1b3b30ae6b2eab7c9e6a8e2fd8ec3776f25d2e3f0b6f9dc547ff8083bf25fa - md5: 9f0c43225243c81c6991733edcaafff5 - depends: - - __glibc >=2.17,<3.0.a0 - - libabseil - - libcrc32c >=1.1.2,<1.2.0a0 - - libcurl - - libgcc >=13 - - libgoogle-cloud 2.34.0 h2b5623c_0 - - libstdcxx >=13 - - libzlib >=1.3.1,<2.0a0 - - openssl - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 785792 - timestamp: 1737286406612 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-storage-2.34.0-hb9b2b65_0.conda - sha256: 4ad4fb7c02dcfa4c86dcf9591e0131a01fc0f2c3f2729c12882b944ddf2b8a9d - md5: 0732a5988f7f556f2c1d1f51026fc1be - depends: - - libabseil - - libcrc32c >=1.1.2,<1.2.0a0 - - libcurl - - libgcc >=13 - - libgoogle-cloud 2.34.0 hccf9d24_0 - - libstdcxx >=13 - - libzlib >=1.3.1,<2.0a0 - - openssl - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 739678 - timestamp: 1737285399565 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-storage-2.34.0-h7081f7f_0.conda - sha256: 79f6b93fb330728530036b2b38764e9d42e0eedd3ae7e549ac7eae49acd1e52b - md5: f09cb03f9cf847f1dc41b4c1f65c97c2 - depends: - - __osx >=11.0 - - libabseil - - libcrc32c >=1.1.2,<1.2.0a0 - - libcurl - - libcxx >=18 - - libgoogle-cloud 2.34.0 hdbe95d5_0 - - libzlib >=1.3.1,<2.0a0 - - openssl - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: Apache - size: 529202 - timestamp: 1737285376801 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.67.1-h25350d4_1.conda - sha256: 014627485b3cf0ea18e04c0bab07be7fb98722a3aeeb58477acc7e1c3d2f911e - md5: 0c6497a760b99a926c7c12b74951a39c - depends: - - __glibc >=2.17,<3.0.a0 - - c-ares >=1.34.4,<2.0a0 - - libabseil * cxx17* - - libabseil >=20240722.0,<20240723.0a0 - - libgcc >=13 - - libprotobuf >=5.28.3,<5.28.4.0a0 - - libre2-11 >=2024.7.2 - - libstdcxx >=13 - - libzlib >=1.3.1,<2.0a0 - - openssl >=3.4.0,<4.0a0 - - re2 - constrains: - - grpc-cpp =1.67.1 - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 7792251 - timestamp: 1735584856826 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgrpc-1.67.1-hf7ccdd3_1.conda - sha256: 3fa173dc1d7456aac2b26937daae86a08432a31640e3d6569c62edc661fc9bbe - md5: 8fb41a425bebaeb3d0fa568503612e64 - depends: - - c-ares >=1.34.4,<2.0a0 - - libabseil * cxx17* - - libabseil >=20240722.0,<20240723.0a0 - - libgcc >=13 - - libprotobuf >=5.28.3,<5.28.4.0a0 - - libre2-11 >=2024.7.2 - - libstdcxx >=13 - - libzlib >=1.3.1,<2.0a0 - - openssl >=3.4.0,<4.0a0 - - re2 - constrains: - - grpc-cpp =1.67.1 - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 7430006 - timestamp: 1735585769731 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgrpc-1.67.1-h0a426d6_1.conda - sha256: 630edf63981818ff590367cb95fddbed0f5a390464d0952c90ec81de899e84a6 - md5: 8a3cba079d6ac985e7d73c76a678fbb4 - depends: - - __osx >=11.0 - - c-ares >=1.34.4,<2.0a0 - - libabseil * cxx17* - - libabseil >=20240722.0,<20240723.0a0 - - libcxx >=18 - - libprotobuf >=5.28.3,<5.28.4.0a0 - - libre2-11 >=2024.7.2 - - libzlib >=1.3.1,<2.0a0 - - openssl >=3.4.0,<4.0a0 - - re2 - constrains: - - grpc-cpp =1.67.1 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: APACHE - size: 5311706 - timestamp: 1735585137716 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-hd590300_2.conda - sha256: 8ac2f6a9f186e76539439e50505d98581472fedb347a20e7d1f36429849f05c9 - md5: d66573916ffcf376178462f1b61c941e - depends: - - libgcc-ng >=12 - arch: x86_64 - platform: linux - license: LGPL-2.1-only - size: 705775 - timestamp: 1702682170569 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libiconv-1.17-h31becfc_2.conda - sha256: a30e09d089cb75a0d5b8e5c354694c1317da98261185ed65aa3793e741060614 - md5: 9a8eb13f14de7d761555a98712e6df65 - depends: - - libgcc-ng >=12 - arch: aarch64 - platform: linux - license: LGPL-2.1-only - size: 705787 - timestamp: 1702684557134 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.17-h0d3ecfb_2.conda - sha256: bc7de5097b97bcafcf7deaaed505f7ce02f648aac8eccc0d5a47cc599a1d0304 - md5: 69bda57310071cf6d2b86caf11573d2d - arch: arm64 - platform: osx - license: LGPL-2.1-only - size: 676469 - timestamp: 1702682458114 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda - sha256: b954e09b7e49c2f2433d6f3bb73868eda5e378278b0f8c1dd10a7ef090e14f2f - md5: ea25936bb4080d843790b586850f82b8 - depends: - - libgcc-ng >=12 - constrains: - - jpeg <0.0.0a - arch: x86_64 - platform: linux - license: IJG AND BSD-3-Clause AND Zlib - size: 618575 - timestamp: 1694474974816 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libjpeg-turbo-3.0.0-h31becfc_1.conda - sha256: 675bc1f2a8581cd34a86c412663ec29c5f90c1d9f8d11866aa1ade5cdbdf8429 - md5: ed24e702928be089d9ba3f05618515c6 - depends: - - libgcc-ng >=12 - constrains: - - jpeg <0.0.0a - arch: aarch64 - platform: linux - license: IJG AND BSD-3-Clause AND Zlib - size: 647126 - timestamp: 1694475003570 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.0.0-hb547adb_1.conda - sha256: a42054eaa38e84fc1e5ab443facac4bbc9d1b6b6f23f54b7bf4f1eb687e1d993 - md5: 3ff1e053dc3a2b8e36b9bfa4256a58d1 - constrains: - - jpeg <0.0.0a - arch: arm64 - platform: osx - license: IJG AND BSD-3-Clause AND Zlib - size: 547541 - timestamp: 1694475104253 -- conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-28_h7ac8fdf_openblas.conda - build_number: 28 - sha256: 9530e6840690b78360946390a1d29624734a6b624f02c26631fb451592cbb8ef - md5: 069f40bfbf1dc55c83ddb07fc6a6ef8d - depends: - - libblas 3.9.0 28_h59b9bed_openblas - constrains: - - libcblas =3.9.0=28*_openblas - - blas =2.128=openblas - - liblapacke =3.9.0=28*_openblas - arch: x86_64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 16553 - timestamp: 1738114053556 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-28_h411afd4_openblas.conda - build_number: 28 - sha256: 1290ce1071a586e22bdd7d8f4c48000cc0005f0a67660be150d1ea5c6092129f - md5: bc4c5ee31476521e202356b56bba6077 - depends: - - libblas 3.9.0 28_h1a9f1db_openblas - constrains: - - liblapacke =3.9.0=28*_openblas - - libcblas =3.9.0=28*_openblas - - blas =2.128=openblas - arch: aarch64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 16637 - timestamp: 1738114094310 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-28_hc9a63f6_openblas.conda - build_number: 28 - sha256: 79c75a02bff20f8b001e6aecfee8d22a51552c3986e7037fca68e5ed071cc213 - md5: 45f26652530b558c21083ceb7adaf273 - depends: - - libblas 3.9.0 28_h10e41b3_openblas - constrains: - - blas =2.128=openblas - - liblapacke =3.9.0=28*_openblas - - libcblas =3.9.0=28*_openblas - arch: arm64 - platform: osx - license: BSD-3-Clause - license_family: BSD - size: 16793 - timestamp: 1738114407021 -- conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda - sha256: cad52e10319ca4585bc37f0bc7cce99ec7c15dc9168e42ccb96b741b0a27db3f - md5: 42d5b6a0f30d3c10cd88cb8584fda1cb - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - arch: x86_64 - platform: linux - license: 0BSD - size: 111357 - timestamp: 1738525339684 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.4-h86ecc28_0.conda - sha256: 96413664f0fade54a4931940d18749cfc8e6308349dbb0cb83adb2394ca1f730 - md5: b88244e0a115cc34f7fbca9b11248e76 - depends: - - libgcc >=13 - arch: aarch64 - platform: linux - license: 0BSD - size: 124197 - timestamp: 1738528201520 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.4-h39f12f2_0.conda - sha256: 560c59d3834cc652a84fb45531bd335ad06e271b34ebc216e380a89798fe8e2c - md5: e3fd1f8320a100f2b210e690a57cd615 - depends: - - __osx >=11.0 - arch: arm64 - platform: osx - license: 0BSD - size: 98945 - timestamp: 1738525462560 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda - sha256: b0f2b3695b13a989f75d8fd7f4778e1c7aabe3b36db83f0fe80b2cd812c0e975 - md5: 19e57602824042dfd0446292ef90488b - depends: - - __glibc >=2.17,<3.0.a0 - - c-ares >=1.32.3,<2.0a0 - - libev >=4.33,<4.34.0a0 - - libev >=4.33,<5.0a0 - - libgcc >=13 - - libstdcxx >=13 - - libzlib >=1.3.1,<2.0a0 - - openssl >=3.3.2,<4.0a0 - arch: x86_64 - platform: linux - license: MIT - license_family: MIT - size: 647599 - timestamp: 1729571887612 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnghttp2-1.64.0-hc8609a4_0.conda - sha256: c093c6d370aadbf0409c20b6c54c488ee2f6fea976181919fcc63e87ee232673 - md5: f52c614fa214a8bedece9421c771670d - depends: - - c-ares >=1.32.3,<2.0a0 - - libev >=4.33,<4.34.0a0 - - libev >=4.33,<5.0a0 - - libgcc >=13 - - libstdcxx >=13 - - libzlib >=1.3.1,<2.0a0 - - openssl >=3.3.2,<4.0a0 - arch: aarch64 - platform: linux - license: MIT - license_family: MIT - size: 714610 - timestamp: 1729571912479 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.64.0-h6d7220d_0.conda - sha256: 00cc685824f39f51be5233b54e19f45abd60de5d8847f1a56906f8936648b72f - md5: 3408c02539cee5f1141f9f11450b6a51 - depends: - - __osx >=11.0 - - c-ares >=1.34.2,<2.0a0 - - libcxx >=17 - - libev >=4.33,<4.34.0a0 - - libev >=4.33,<5.0a0 - - libzlib >=1.3.1,<2.0a0 - - openssl >=3.3.2,<4.0a0 - arch: arm64 - platform: osx - license: MIT - license_family: MIT - size: 566719 - timestamp: 1729572385640 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda - sha256: 26d77a3bb4dceeedc2a41bd688564fe71bf2d149fdcf117049970bc02ff1add6 - md5: 30fd6e37fe21f86f4bd26d6ee73eeec7 - depends: - - libgcc-ng >=12 - arch: x86_64 - platform: linux - license: LGPL-2.1-only - license_family: GPL - size: 33408 - timestamp: 1697359010159 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda - sha256: fd18c2b75d7411096428d36a70b36b1a17e31f7b8956b6905d145792d49e97f8 - md5: c14f32510f694e3185704d89967ec422 - depends: - - libgcc-ng >=12 - arch: aarch64 - platform: linux - license: LGPL-2.1-only - license_family: GPL - size: 34501 - timestamp: 1697358973269 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.28-pthreads_h94d23a6_1.conda - sha256: 99ba271d8a80a1af2723f2e124ffd91d850074c0389c067e6d96d72a2dbfeabe - md5: 62857b389e42b36b686331bec0922050 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - - libgfortran - - libgfortran5 >=14.2.0 - constrains: - - openblas >=0.3.28,<0.3.29.0a0 - arch: x86_64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 5578513 - timestamp: 1730772671118 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.28-pthreads_h9d3fd7e_1.conda - sha256: 30623a40764e935aa77e0d4db54c1a1589189a9bf3a03fdb445505c1e319b5a6 - md5: e8dde93dd199da3c1f2c1fcfd0042cd4 - depends: - - libgcc >=14 - - libgfortran - - libgfortran5 >=14.2.0 - constrains: - - openblas >=0.3.28,<0.3.29.0a0 - arch: aarch64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 4793435 - timestamp: 1730773029647 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.28-openmp_hf332438_1.conda - sha256: 62bb669c37a845129096f73d446cdb6bb170e4927f2fea2b661329680dbbc373 - md5: 40803a48d947c8639da6704e9a44d3ce - depends: - - __osx >=11.0 - - libgfortran 5.* - - libgfortran5 >=13.2.0 - - llvm-openmp >=18.1.8 - constrains: - - openblas >=0.3.28,<0.3.29.0a0 - arch: arm64 - platform: osx - license: BSD-3-Clause - license_family: BSD - size: 4165774 - timestamp: 1730772154295 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-1.18.0-hfcad708_1.conda - sha256: 4ea235e08676f16b0d3c3380befe1478c0fa0141512ee709b011005c55c9619f - md5: 1f5a5d66e77a39dc5bd639ec953705cf - depends: - - libabseil * cxx17* - - libabseil >=20240722.0,<20240723.0a0 - - libcurl >=8.11.1,<9.0a0 - - libgrpc >=1.67.1,<1.68.0a0 - - libopentelemetry-cpp-headers 1.18.0 ha770c72_1 - - libprotobuf >=5.28.3,<5.28.4.0a0 - - libzlib >=1.3.1,<2.0a0 - - nlohmann_json - - prometheus-cpp >=1.3.0,<1.4.0a0 - constrains: - - cpp-opentelemetry-sdk =1.18.0 - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 801927 - timestamp: 1735643375271 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopentelemetry-cpp-1.18.0-h60b47f9_1.conda - sha256: 160c493cd0f897955b0b6035b51c6d7255ffbaed3c8a12d43e8e8a719d405aba - md5: afe3c8c53f4b6d27d553c230d4b34038 - depends: - - libabseil * cxx17* - - libabseil >=20240722.0,<20240723.0a0 - - libcurl >=8.11.1,<9.0a0 - - libgrpc >=1.67.1,<1.68.0a0 - - libopentelemetry-cpp-headers 1.18.0 h8af1aa0_1 - - libprotobuf >=5.28.3,<5.28.4.0a0 - - libzlib >=1.3.1,<2.0a0 - - nlohmann_json - - prometheus-cpp >=1.3.0,<1.4.0a0 - constrains: - - cpp-opentelemetry-sdk =1.18.0 - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 800896 - timestamp: 1735643533825 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopentelemetry-cpp-1.18.0-h0c05b2d_1.conda - sha256: c6bcbd53d62a9e0d8c667e560db0ca2ecb7679277cbb3c23457aabe74fcb8cba - md5: 19c46cc18825f3924251c39ec1b0d983 - depends: - - libabseil * cxx17* - - libabseil >=20240722.0,<20240723.0a0 - - libcurl >=8.11.1,<9.0a0 - - libgrpc >=1.67.1,<1.68.0a0 - - libopentelemetry-cpp-headers 1.18.0 hce30654_1 - - libprotobuf >=5.28.3,<5.28.4.0a0 - - libzlib >=1.3.1,<2.0a0 - - nlohmann_json - - prometheus-cpp >=1.3.0,<1.4.0a0 - constrains: - - cpp-opentelemetry-sdk =1.18.0 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: APACHE - size: 529588 - timestamp: 1735643889612 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-headers-1.18.0-ha770c72_1.conda - sha256: aa1f7dea79ea8513ff77339ba7c6e9cf10dfa537143e7718b1cfb3af52b649f2 - md5: 4fb055f57404920a43b147031471e03b - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 320359 - timestamp: 1735643346175 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopentelemetry-cpp-headers-1.18.0-h8af1aa0_1.conda - sha256: 981c0b29a0789597fa8ed147b02df2d2ad0c7f863d87df74770c40cee1800228 - md5: 282193b19a19e3b5d75d18ef82713ef0 - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 319401 - timestamp: 1735643509251 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopentelemetry-cpp-headers-1.18.0-hce30654_1.conda - sha256: 82e5f5ba64debbaab3c601b265dfc0cdb4d2880feba9bada5fd2e67b9f91ada5 - md5: e965dad955841507549fdacd8f7f94c0 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: APACHE - size: 320565 - timestamp: 1735643673319 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-19.0.0-h081d1f1_8_cpu.conda - build_number: 8 - sha256: b2e1bf8634efb643a9f15fe19f9bc0877482c509eff7cee6136278a2c2fa5842 - md5: bef810a8da683aa11c644066a87f71c3 - depends: - - __glibc >=2.17,<3.0.a0 - - libarrow 19.0.0 h00a82cf_8_cpu - - libgcc >=13 - - libstdcxx >=13 - - libthrift >=0.21.0,<0.21.1.0a0 - - openssl >=3.4.0,<4.0a0 - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 1241786 - timestamp: 1737824866572 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-19.0.0-hfc78867_8_cpu.conda - build_number: 8 - sha256: 8917fc5e5bb65894106bbd461d2f9c9c0c3dc642ff5da197c941bf620ce840a0 - md5: b0d5f8c122a3e9a6b75036e43e78fcfa - depends: - - libarrow 19.0.0 h03ebaaf_8_cpu - - libgcc >=13 - - libstdcxx >=13 - - libthrift >=0.21.0,<0.21.1.0a0 - - openssl >=3.4.0,<4.0a0 - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 1153834 - timestamp: 1737809048861 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-19.0.0-h636d7b7_8_cpu.conda - build_number: 8 - sha256: da04e6bd7ed2ca64aadf0ad12d9752e8423e85c37e0db80e27c7ff334fcbd2b6 - md5: c1ff2e71a289fb76146591c9d3f9de0a - depends: - - __osx >=11.0 - - libarrow 19.0.0 h819e3af_8_cpu - - libcxx >=18 - - libthrift >=0.21.0,<0.21.1.0a0 - - openssl >=3.4.0,<4.0a0 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: APACHE - size: 893482 - timestamp: 1737807155720 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.46-h943b412_0.conda - sha256: a46436dadd12d58155280d68876dba2d8a3badbc8074956d14fe6530c7c7eda6 - md5: adcf7bacff219488e29cfa95a2abd8f7 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libzlib >=1.3.1,<2.0a0 - arch: x86_64 - platform: linux - license: zlib-acknowledgement - size: 292273 - timestamp: 1737791061653 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.46-hec79eb8_0.conda - sha256: be4eefe8415c9b37d158eaa9522ce4c399a572339ac2bcc4d26d6433e0ed767d - md5: f9f793497c0973d5416421aa2f96cda4 - depends: - - libgcc >=13 - - libzlib >=1.3.1,<2.0a0 - arch: aarch64 - platform: linux - license: zlib-acknowledgement - size: 304364 - timestamp: 1737795802176 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.46-h3783ad8_0.conda - sha256: db78a711561bb6df274ef421472d948dfd1093404db3915e891ae6d7fd37fadc - md5: 15d480fb9dad036eaa4de0b51eab3ccc - depends: - - __osx >=11.0 - - libzlib >=1.3.1,<2.0a0 - arch: arm64 - platform: osx - license: zlib-acknowledgement - size: 266516 - timestamp: 1737791023678 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda - sha256: 51125ebb8b7152e4a4e69fd2398489c4ec8473195c27cde3cbdf1cb6d18c5493 - md5: d8703f1ffe5a06356f06467f1d0b9464 - depends: - - __glibc >=2.17,<3.0.a0 - - libabseil * cxx17* - - libabseil >=20240722.0,<20240723.0a0 - - libgcc >=13 - - libstdcxx >=13 - - libzlib >=1.3.1,<2.0a0 - arch: x86_64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 2960815 - timestamp: 1735577210663 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.3-h44a3b7b_1.conda - sha256: ecb69f2b1668e784b41ba667493be846662d5ef702bef64fb2e013bb1364cdc4 - md5: 68f807f7cc13951652bbe048253fd405 - depends: - - libabseil * cxx17* - - libabseil >=20240722.0,<20240723.0a0 - - libgcc >=13 - - libstdcxx >=13 - - libzlib >=1.3.1,<2.0a0 - arch: aarch64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 2788074 - timestamp: 1735576315676 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.3-h3bd63a1_1.conda - sha256: f58a16b13ad53346903c833e266f83c3d770a43a432659b98710aed85ca885e7 - md5: bdbfea4cf45ae36652c6bbcc2e7ebe91 - depends: - - __osx >=11.0 - - libabseil * cxx17* - - libabseil >=20240722.0,<20240723.0a0 - - libcxx >=18 - - libzlib >=1.3.1,<2.0a0 - arch: arm64 - platform: osx - license: BSD-3-Clause - license_family: BSD - size: 2271580 - timestamp: 1735576361997 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_2.conda - sha256: 4420f8362c71251892ba1eeb957c5e445e4e1596c0c651c28d0d8b415fe120c7 - md5: b2fede24428726dd867611664fb372e8 - depends: - - __glibc >=2.17,<3.0.a0 - - libabseil * cxx17* - - libabseil >=20240722.0,<20240723.0a0 - - libgcc >=13 - - libstdcxx >=13 - constrains: - - re2 2024.07.02.* - arch: x86_64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 209793 - timestamp: 1735541054068 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_2.conda - sha256: 862c20de0120f802e618dcb25913d00c5b82f91f4be60b2d46a774e851adc2f6 - md5: 9a7dbbaab49f76a6f36e5c9d98e323a7 - depends: - - libabseil * cxx17* - - libabseil >=20240722.0,<20240723.0a0 - - libgcc >=13 - - libstdcxx >=13 - constrains: - - re2 2024.07.02.* - arch: aarch64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 204305 - timestamp: 1735540986919 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h07bc746_2.conda - sha256: 112a73ad483353751d4c5d63648c69a4d6fcebf5e1b698a860a3f5124fc3db96 - md5: 6b1e3624d3488016ca4f1ca0c412efaa - depends: - - __osx >=11.0 - - libabseil * cxx17* - - libabseil >=20240722.0,<20240723.0a0 - - libcxx >=18 - constrains: - - re2 2024.07.02.* - arch: arm64 - platform: osx - license: BSD-3-Clause - license_family: BSD - size: 167155 - timestamp: 1735541067807 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda - sha256: 0105bd108f19ea8e6a78d2d994a6d4a8db16d19a41212070d2d1d48a63c34161 - md5: a587892d3c13b6621a6091be690dbca2 - depends: - - libgcc-ng >=12 - arch: x86_64 - platform: linux - license: ISC - size: 205978 - timestamp: 1716828628198 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.20-h68df207_0.conda - sha256: 448df5ea3c5cf1af785aad46858d7a5be0522f4234a4dc9bb764f4d11ff3b981 - md5: 2e4a8f23bebdcb85ca8e5a0fbe75666a - depends: - - libgcc-ng >=12 - arch: aarch64 - platform: linux - license: ISC - size: 177394 - timestamp: 1716828514515 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda - sha256: fade8223e1e1004367d7101dd17261003b60aa576df6d7802191f8972f7470b1 - md5: a7ce36e284c5faaf93c220dfc39e3abd - depends: - - __osx >=11.0 - arch: arm64 - platform: osx - license: ISC - size: 164972 - timestamp: 1716828607917 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.48.0-hee588c1_1.conda - sha256: 22853d289ef6ec8a5b20f1aa261895b06525439990d3b139f8bfd0b5c5e32a3a - md5: 3fa05c528d8a1e2a67bbf1e36f22d3bc - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libzlib >=1.3.1,<2.0a0 - arch: x86_64 - platform: linux - license: Unlicense - size: 878223 - timestamp: 1737564987837 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.48.0-h5eb1b54_1.conda - sha256: 81dd9bf66c7f1d9064e007e2c787133100c406e7ca2de61dba9fb7b87372f255 - md5: 4f3a61fe206f20b27c385ee608bcdfda - depends: - - libgcc >=13 - - libzlib >=1.3.1,<2.0a0 - arch: aarch64 - platform: linux - license: Unlicense - size: 1044879 - timestamp: 1737565049785 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.48.0-h3f77e49_1.conda - sha256: 17c06940cc2a13fd6a17effabd6881b1477db38b2cd3ee2571092d293d3fdd75 - md5: 4c55169502ecddf8077973a987d08f08 - depends: - - __osx >=11.0 - - libzlib >=1.3.1,<2.0a0 - arch: arm64 - platform: osx - license: Unlicense - size: 852831 - timestamp: 1737564996616 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hf672d98_0.conda - sha256: 0407ac9fda2bb67e11e357066eff144c845801d00b5f664efbc48813af1e7bb9 - md5: be2de152d8073ef1c01b7728475f2fe7 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libzlib >=1.3.1,<2.0a0 - - openssl >=3.4.0,<4.0a0 - arch: x86_64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 304278 - timestamp: 1732349402869 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libssh2-1.11.1-ha41c0db_0.conda - sha256: 40f2af5357457546bd11cd64a3b9043d83865180f65ce602515c35f353be35c7 - md5: aeffe03c0e598f015aab08dbb04f6ee4 - depends: - - libgcc >=13 - - libzlib >=1.3.1,<2.0a0 - - openssl >=3.4.0,<4.0a0 - arch: aarch64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 311577 - timestamp: 1732349396421 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.1-h9cc3647_0.conda - sha256: f7047c6ed44bcaeb04432e8c74da87591940d091b0a3940c0d884b7faa8062e9 - md5: ddc7194676c285513706e5fc64f214d7 - depends: - - libzlib >=1.3.1,<2.0a0 - - openssl >=3.4.0,<4.0a0 - arch: arm64 - platform: osx - license: BSD-3-Clause - license_family: BSD - size: 279028 - timestamp: 1732349599461 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-hc0a3c3a_1.conda - sha256: 4661af0eb9bdcbb5fb33e5d0023b001ad4be828fccdcc56500059d56f9869462 - md5: 234a5554c53625688d51062645337328 - depends: - - libgcc 14.2.0 h77fa898_1 - arch: x86_64 - platform: linux - license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - size: 3893695 - timestamp: 1729027746910 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_1.conda - sha256: 519556d2c93f1b487091ce046d62e762286177f4a670ec10e16005177d0bcab3 - md5: 37f489acd39e22b623d2d1e5ac6d195c - depends: - - libgcc 14.2.0 he277a41_1 - arch: aarch64 - platform: linux - license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - size: 3816794 - timestamp: 1729089463404 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_1.conda - sha256: 25bb30b827d4f6d6f0522cc0579e431695503822f144043b93c50237017fffd8 - md5: 8371ac6457591af2cf6159439c1fd051 - depends: - - libstdcxx 14.2.0 hc0a3c3a_1 - arch: x86_64 - platform: linux - license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - size: 54105 - timestamp: 1729027780628 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_1.conda - sha256: 9f97461bd55a2745a7a0941f3502a047f15bfe7bb2952dc7fb204b3202f866fd - md5: 0e75771b8a03afae5a2c6ce71bc733f5 - depends: - - libstdcxx 14.2.0 h3f4de04_1 - arch: aarch64 - platform: linux - license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - size: 54133 - timestamp: 1729089498541 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libthrift-0.21.0-h0e7cc3e_0.conda - sha256: ebb395232973c18745b86c9a399a4725b2c39293c9a91b8e59251be013db42f0 - md5: dcb95c0a98ba9ff737f7ae482aef7833 - depends: - - __glibc >=2.17,<3.0.a0 - - libevent >=2.1.12,<2.1.13.0a0 - - libgcc >=13 - - libstdcxx >=13 - - libzlib >=1.3.1,<2.0a0 - - openssl >=3.3.2,<4.0a0 - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 425773 - timestamp: 1727205853307 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libthrift-0.21.0-h154c74f_0.conda - sha256: f04ab1417aca1687edff9c30d8423ace285eb8c053dc16d595c6e47cfeefb274 - md5: c28792bf37f4ecdce8e3cb9e40750650 - depends: - - libevent >=2.1.12,<2.1.13.0a0 - - libgcc >=13 - - libstdcxx >=13 - - libzlib >=1.3.1,<2.0a0 - - openssl >=3.3.2,<4.0a0 - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 417329 - timestamp: 1727205944238 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libthrift-0.21.0-h64651cc_0.conda - sha256: 7a6c7d5f58cbbc2ccd6493b4b821639fdb0701b9b04c737a949e8cb6adf1c9ad - md5: 7ce2bd2f650f8c31ad7ba4c7bfea61b7 - depends: - - __osx >=11.0 - - libcxx >=17 - - libevent >=2.1.12,<2.1.13.0a0 - - libzlib >=1.3.1,<2.0a0 - - openssl >=3.3.2,<4.0a0 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: APACHE - size: 324342 - timestamp: 1727206096912 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hd9ff511_3.conda - sha256: b224e16b88d76ea95e4af56e2bc638c603bd26a770b98d117d04541d3aafa002 - md5: 0ea6510969e1296cc19966fad481f6de - depends: - - __glibc >=2.17,<3.0.a0 - - lerc >=4.0.0,<5.0a0 - - libdeflate >=1.23,<1.24.0a0 - - libgcc >=13 - - libjpeg-turbo >=3.0.0,<4.0a0 - - liblzma >=5.6.3,<6.0a0 - - libstdcxx >=13 - - libwebp-base >=1.4.0,<2.0a0 - - libzlib >=1.3.1,<2.0a0 - - zstd >=1.5.6,<1.6.0a0 - arch: x86_64 - platform: linux - license: HPND - size: 428173 - timestamp: 1734398813264 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.0-h88f7998_3.conda - sha256: 5888bd66ba7606ae8596856c7dac800940ecad0aed77d6aa37db69d434c81cf0 - md5: 36a0ea4a173338c8725dc0807e99cf22 - depends: - - lerc >=4.0.0,<5.0a0 - - libdeflate >=1.23,<1.24.0a0 - - libgcc >=13 - - libjpeg-turbo >=3.0.0,<4.0a0 - - liblzma >=5.6.3,<6.0a0 - - libstdcxx >=13 - - libwebp-base >=1.4.0,<2.0a0 - - libzlib >=1.3.1,<2.0a0 - - zstd >=1.5.6,<1.6.0a0 - arch: aarch64 - platform: linux - license: HPND - size: 464699 - timestamp: 1734398752249 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-h551f018_3.conda - sha256: 91417846157e04992801438a496b151df89604b2e7c6775d6f701fcd0cbed5ae - md5: a5d084a957563e614ec0c0196d890654 - depends: - - __osx >=11.0 - - lerc >=4.0.0,<5.0a0 - - libcxx >=18 - - libdeflate >=1.23,<1.24.0a0 - - libjpeg-turbo >=3.0.0,<4.0a0 - - liblzma >=5.6.3,<6.0a0 - - libwebp-base >=1.4.0,<2.0a0 - - libzlib >=1.3.1,<2.0a0 - - zstd >=1.5.6,<1.6.0a0 - arch: arm64 - platform: osx - license: HPND - size: 370600 - timestamp: 1734398863052 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.10.0-h4c51ac1_0.conda - sha256: 8e41563ee963bf8ded06da45f4e70bf42f913cb3c2e79364eb3218deffa3cd74 - md5: aeccfff2806ae38430638ffbb4be9610 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - arch: x86_64 - platform: linux - license: MIT - license_family: MIT - size: 82745 - timestamp: 1737244366901 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.10.0-ha346350_0.conda - sha256: 9c333e07b76ae1ea2c882db764be52dc82f632be66d993a50b35ca9c5475074a - md5: c5166bcfb8348e8fc31ee16ec3981a5e - depends: - - libgcc >=13 - arch: aarch64 - platform: linux - license: MIT - license_family: MIT - size: 82679 - timestamp: 1737329054400 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.10.0-hda25de7_0.conda - sha256: aca3ef31d3dff5cefd3790742a5ee6548f1cf0201d0e8cee08b01da503484eb6 - md5: 5f741aed1d8d393586a5fdcaaa87f45c - depends: - - __osx >=11.0 - arch: arm64 - platform: osx - license: MIT - license_family: MIT - size: 83628 - timestamp: 1737244450097 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - sha256: 787eb542f055a2b3de553614b25f09eefb0a0931b0c87dbcce6efdfd92f04f18 - md5: 40b61aab5c7ba9ff276c41cfffe6b80b - depends: - - libgcc-ng >=12 - arch: x86_64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 33601 - timestamp: 1680112270483 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda - sha256: 616277b0c5f7616c2cdf36f6c316ea3f9aa5bb35f2d4476a349ab58b9b91675f - md5: 000e30b09db0b7c775b21695dff30969 - depends: - - libgcc-ng >=12 - arch: aarch64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 35720 - timestamp: 1680113474501 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.50.0-hb9d3cd8_0.conda - sha256: b4a8890023902aef9f1f33e3e35603ad9c2f16c21fdb58e968fa6c1bd3e94c0b - md5: 771ee65e13bc599b0b62af5359d80169 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - arch: x86_64 - platform: linux - license: MIT - license_family: MIT - size: 891272 - timestamp: 1737016632446 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuv-1.50.0-h86ecc28_0.conda - sha256: 67914c7f171d343059144d804c2f17fcd621a94e45f179a0fd843b8c1618823e - md5: 915db044076cbbdffb425170deb4ce38 - depends: - - libgcc >=13 - arch: aarch64 - platform: linux - license: MIT - license_family: MIT - size: 621056 - timestamp: 1737016626950 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libuv-1.50.0-h5505292_0.conda - sha256: d13fb49d4c8262bf2c44ffb2c77bb2b5d0f85fc6de76bdb75208efeccb29fce6 - md5: 20717343fb30798ab7c23c2e92b748c1 - depends: - - __osx >=11.0 - arch: arm64 - platform: osx - license: MIT - license_family: MIT - size: 418890 - timestamp: 1737016751326 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.5.0-h851e524_0.conda - sha256: c45283fd3e90df5f0bd3dbcd31f59cdd2b001d424cf30a07223655413b158eaf - md5: 63f790534398730f59e1b899c3644d4a - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - constrains: - - libwebp 1.5.0 - arch: x86_64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 429973 - timestamp: 1734777489810 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libwebp-base-1.5.0-h0886dbf_0.conda - sha256: b3d881a0ae08bb07fff7fa8ead506c8d2e0388733182fe4f216f3ec5d61ffcf0 - md5: 95ef4a689b8cc1b7e18b53784d88f96b - depends: - - libgcc >=13 - constrains: - - libwebp 1.5.0 - arch: aarch64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 362623 - timestamp: 1734779054659 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.5.0-h2471fea_0.conda - sha256: f8bdb876b4bc8cb5df47c28af29188de8911c3fea4b799a33743500149de3f4a - md5: 569466afeb84f90d5bb88c11cc23d746 - depends: - - __osx >=11.0 - constrains: - - libwebp 1.5.0 - arch: arm64 - platform: osx - license: BSD-3-Clause - license_family: BSD - size: 290013 - timestamp: 1734777593617 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda - sha256: 666c0c431b23c6cec6e492840b176dde533d48b7e6fb8883f5071223433776aa - md5: 92ed62436b625154323d40d5f2f11dd7 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - pthread-stubs - - xorg-libxau >=1.0.11,<2.0a0 - - xorg-libxdmcp - arch: x86_64 - platform: linux - license: MIT - license_family: MIT - size: 395888 - timestamp: 1727278577118 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcb-1.17.0-h262b8f6_0.conda - sha256: 461cab3d5650ac6db73a367de5c8eca50363966e862dcf60181d693236b1ae7b - md5: cd14ee5cca2464a425b1dbfc24d90db2 - depends: - - libgcc >=13 - - pthread-stubs - - xorg-libxau >=1.0.11,<2.0a0 - - xorg-libxdmcp - arch: aarch64 - platform: linux - license: MIT - license_family: MIT - size: 397493 - timestamp: 1727280745441 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxcb-1.17.0-hdb1d25a_0.conda - sha256: bd3816218924b1e43b275863e21a3e13a5db4a6da74cca8e60bc3c213eb62f71 - md5: af523aae2eca6dfa1c8eec693f5b9a79 - depends: - - __osx >=11.0 - - pthread-stubs - - xorg-libxau >=1.0.11,<2.0a0 - - xorg-libxdmcp - arch: arm64 - platform: osx - license: MIT - license_family: MIT - size: 323658 - timestamp: 1727278733917 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - sha256: 6ae68e0b86423ef188196fff6207ed0c8195dd84273cb5623b85aa08033a410c - md5: 5aa797f8787fe7a17d1b0821485b5adc - depends: - - libgcc-ng >=12 - arch: x86_64 - platform: linux - license: LGPL-2.1-or-later - size: 100393 - timestamp: 1702724383534 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda - sha256: 6b46c397644091b8a26a3048636d10b989b1bf266d4be5e9474bf763f828f41f - md5: b4df5d7d4b63579d081fd3a4cf99740e - depends: - - libgcc-ng >=12 - arch: aarch64 - platform: linux - license: LGPL-2.1-or-later - size: 114269 - timestamp: 1702724369203 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.5-h0d44e9d_1.conda - sha256: 306e18aa647d8208ad2cd0e62d84933222b2fbe93d2d53cd5283d2256b1d54de - md5: f5b05674697ae7d2c5932766695945e1 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libiconv >=1.17,<2.0a0 - - liblzma >=5.6.3,<6.0a0 - - libzlib >=1.3.1,<2.0a0 - constrains: - - icu <0.0a0 - arch: x86_64 - platform: linux - license: MIT - license_family: MIT - size: 689993 - timestamp: 1733443678322 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.5-h2e0c361_1.conda - sha256: dc0e86d35a836af6e99d18f50c6551fc64c53ed3a3da5a9fea90e78763cf14b4 - md5: 63410f85031930cde371dfe0ee89109a - depends: - - icu >=75.1,<76.0a0 - - libgcc >=13 - - libiconv >=1.17,<2.0a0 - - liblzma >=5.6.3,<6.0a0 - - libzlib >=1.3.1,<2.0a0 - arch: aarch64 - platform: linux - license: MIT - license_family: MIT - size: 732155 - timestamp: 1733443825814 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.5-h178c5d8_1.conda - sha256: d7af3f25a4cece170502acd38f2dafbea4521f373f46dcb28a37fbe6ac2da544 - md5: 3dc3cff0eca1640a6acbbfab2f78139e - depends: - - __osx >=11.0 - - icu >=75.1,<76.0a0 - - libiconv >=1.17,<2.0a0 - - liblzma >=5.6.3,<6.0a0 - - libzlib >=1.3.1,<2.0a0 - arch: arm64 - platform: osx - license: MIT - license_family: MIT - size: 582898 - timestamp: 1733443841584 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - sha256: d4bfe88d7cb447768e31650f06257995601f89076080e76df55e3112d4e47dc4 - md5: edb0dca6bc32e4f4789199455a1dbeb8 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - constrains: - - zlib 1.3.1 *_2 - arch: x86_64 - platform: linux - license: Zlib - license_family: Other - size: 60963 - timestamp: 1727963148474 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - sha256: 5a2c1eeef69342e88a98d1d95bff1603727ab1ff4ee0e421522acd8813439b84 - md5: 08aad7cbe9f5a6b460d0976076b6ae64 - depends: - - libgcc >=13 - constrains: - - zlib 1.3.1 *_2 - arch: aarch64 - platform: linux - license: Zlib - license_family: Other - size: 66657 - timestamp: 1727963199518 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - sha256: ce34669eadaba351cd54910743e6a2261b67009624dbc7daeeafdef93616711b - md5: 369964e85dc26bfe78f41399b366c435 - depends: - - __osx >=11.0 - constrains: - - zlib 1.3.1 *_2 - arch: arm64 - platform: osx - license: Zlib - license_family: Other - size: 46438 - timestamp: 1727963202283 -- conda: https://conda.anaconda.org/conda-forge/noarch/lit-19.1.7-pyhd8ed1ab_1.conda - sha256: 57b535a67f59c97302e2bbc60abcbc8d51ef0a4c7b1926049091d7da96da7b3a - md5: c5a4e2d9818fe6551dccd02243765527 - depends: - - python >=3.9 - license: Apache-2.0 WITH LLVM-exception - license_family: Apache - size: 128565 - timestamp: 1737789576837 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda - sha256: b92a669f2059874ebdcb69041b6c243d68ffc3fb356ac1339cec44aeb27245d7 - md5: c4d54bfd3817313ce758aa76283b118d - depends: - - __osx >=11.0 - constrains: - - openmp 19.1.7|19.1.7.* - arch: arm64 - platform: osx - license: Apache-2.0 WITH LLVM-exception - license_family: APACHE - size: 280830 - timestamp: 1736986295869 -- conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.10.0-h5888daf_1.conda - sha256: 47326f811392a5fd3055f0f773036c392d26fdb32e4d8e7a8197eed951489346 - md5: 9de5350a85c4a20c685259b889aa6393 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libstdcxx >=13 - arch: x86_64 - platform: linux - license: BSD-2-Clause - license_family: BSD - size: 167055 - timestamp: 1733741040117 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.10.0-h5ad3122_1.conda - sha256: 67e55058d275beea76c1882399640c37b5be8be4eb39354c94b610928e9a0573 - md5: 6654e411da94011e8fbe004eacb8fe11 - depends: - - libgcc >=13 - - libstdcxx >=13 - arch: aarch64 - platform: linux - license: BSD-2-Clause - license_family: BSD - size: 184953 - timestamp: 1733740984533 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.10.0-h286801f_1.conda - sha256: 94d3e2a485dab8bdfdd4837880bde3dd0d701e2b97d6134b8806b7c8e69c8652 - md5: 01511afc6cc1909c5303cf31be17b44f - depends: - - __osx >=11.0 - - libcxx >=18 - arch: arm64 - platform: osx - license: BSD-2-Clause - license_family: BSD - size: 148824 - timestamp: 1733741047892 -- conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_1.conda - sha256: 0fbacdfb31e55964152b24d5567e9a9996e1e7902fb08eb7d91b5fd6ce60803a - md5: fee3164ac23dfca50cfcc8b85ddefb81 - depends: - - mdurl >=0.1,<1 - - python >=3.9 - license: MIT - license_family: MIT - size: 64430 - timestamp: 1733250550053 -- conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_1.conda - sha256: 4a6bf68d2a2b669fecc9a4a009abd1cf8e72c2289522ff00d81b5a6e51ae78f5 - md5: eb227c3e0bf58f5bd69c0532b157975b - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - constrains: - - jinja2 >=3.0.0 - arch: x86_64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 24604 - timestamp: 1733219911494 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.2-py312h74ce7d3_1.conda - sha256: 1d500158262f30b9c23e37d1c861fe76e127a3926d69b3b38c25d20d3faa6f9f - md5: bc8607ab678073a0441808a31465f4fb - depends: - - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - constrains: - - jinja2 >=3.0.0 - arch: aarch64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 25079 - timestamp: 1733220639175 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312h998013c_1.conda - sha256: 4aa997b244014d3707eeef54ab0ee497d12c0d0d184018960cce096169758283 - md5: 46e547061080fddf9cf95a0327e8aba6 - depends: - - __osx >=11.0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - constrains: - - jinja2 >=3.0.0 - arch: arm64 - platform: osx - license: BSD-3-Clause - license_family: BSD - size: 24048 - timestamp: 1733219945697 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020605-release.conda - noarch: python - sha256: f33974d10b1d4e642f287392b461a9437bffa776547f3537116d8018caf3da7c - md5: 61f314b8a3d2ddaa878b1056e09e48eb - depends: - - max-core ==25.1.0.dev2025020605 release - - max-python >=25.1.0.dev2025020605,<26.0a0 - - mojo-jupyter ==25.1.0.dev2025020605 release - - mblack ==25.1.0.dev2025020605 release - license: LicenseRef-Modular-Proprietary - size: 9922 - timestamp: 1738819257916 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025020605-release.conda - sha256: f4f507695eebb8fbbd6107922b4a2d211ab622983f34a24fc8036faf2a7887e3 - md5: 3d4f12391220243dcfc810b5352b2a37 - depends: - - mblack ==25.1.0.dev2025020605 release - license: LicenseRef-Modular-Proprietary - size: 244769750 - timestamp: 1738819214550 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025020605-release.conda - sha256: e2a216b17d89af7cb2aa1a77a7b8416f04724fe0adbf1d36637b36c632b3517a - md5: 8207a6065094dbb73c472a03ea6df87d - depends: - - mblack ==25.1.0.dev2025020605 release - license: LicenseRef-Modular-Proprietary - size: 247282125 - timestamp: 1738819257916 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025020605-release.conda - sha256: 6bf41ea344e035b21701a362dd22265eeaa72c08687287b7c13a664b163d893d - md5: c34a8e1ead4712284ec549d122aa5f9c - depends: - - mblack ==25.1.0.dev2025020605 release - license: LicenseRef-Modular-Proprietary - size: 209659254 - timestamp: 1738820968072 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025020605-release.conda - noarch: python - sha256: d8a81b52c2a513d083e81f2217e98409a1a0d885a8c446bf4a5852f6c8612725 - md5: b1adba04b753ac70558cedaee35fe306 - depends: - - max-core ==25.1.0.dev2025020605 release - - python - - fastapi - - httpx - - huggingface_hub - - numpy >=1.18,<2.0 - - opentelemetry-api - - opentelemetry-exporter-otlp-proto-http >=1.27.0 - - opentelemetry-exporter-prometheus >=0.48b0 - - opentelemetry-sdk >=1.27.0 - - pillow - - pydantic-settings >=2.4.0,<3 - - pydantic >=2.4.0,<3 - - pyinstrument - - python-json-logger - - sse-starlette >=2.1.3,<3 - - transformers - - typing_extensions - - uvicorn - license: LicenseRef-Modular-Proprietary - size: 120666001 - timestamp: 1738819214550 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025020605-release.conda - noarch: python - sha256: 505eee35cbd7705c48c9d561cb6f38479fb2f3c7d893c51d930c9b4e16da7104 - md5: 9c5aaecd6d6500c081363552c952c213 - depends: - - max-core ==25.1.0.dev2025020605 release - - python - - fastapi - - httpx - - huggingface_hub - - numpy >=1.18,<2.0 - - opentelemetry-api - - opentelemetry-exporter-otlp-proto-http >=1.27.0 - - opentelemetry-exporter-prometheus >=0.48b0 - - opentelemetry-sdk >=1.27.0 - - pillow - - pydantic-settings >=2.4.0,<3 - - pydantic >=2.4.0,<3 - - pyinstrument - - python-json-logger - - sse-starlette >=2.1.3,<3 - - transformers - - typing_extensions - - uvicorn - license: LicenseRef-Modular-Proprietary - size: 123043775 - timestamp: 1738819257916 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025020605-release.conda - noarch: python - sha256: b1d2614caf1da1bca20540127b0f71b6357f75b155eb93bac4fcaa10b5737f7e - md5: be243c36de2750e5a51af50a571e0e98 - depends: - - max-core ==25.1.0.dev2025020605 release - - python - - fastapi - - httpx - - huggingface_hub - - numpy >=1.18,<2.0 - - opentelemetry-api - - opentelemetry-exporter-otlp-proto-http >=1.27.0 - - opentelemetry-exporter-prometheus >=0.48b0 - - opentelemetry-sdk >=1.27.0 - - pillow - - pydantic-settings >=2.4.0,<3 - - pydantic >=2.4.0,<3 - - pyinstrument - - python-json-logger - - sse-starlette >=2.1.3,<3 - - transformers - - typing_extensions - - uvicorn - license: LicenseRef-Modular-Proprietary - size: 108461286 - timestamp: 1738820968072 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020605-release.conda - noarch: python - sha256: 8cbc7067cdf1cce1a11e2b385168697793c4090e37fcee65c19b0d3782320ce8 - md5: b8dc96fb459fbeb13a3dcee463b17613 - depends: - - python >=3.9,<3.13 - - click >=8.0.0 - - mypy_extensions >=0.4.3 - - packaging >=22.0 - - pathspec >=0.9.0 - - platformdirs >=2 - - typing_extensions >=v4.12.2 - - python - license: MIT - size: 130824 - timestamp: 1738819257916 -- conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda - sha256: 78c1bbe1723449c52b7a9df1af2ee5f005209f67e40b6e1d3c7619127c43b1c7 - md5: 592132998493b3ff25fd7479396e8351 - depends: - - python >=3.9 - license: MIT - license_family: MIT - size: 14465 - timestamp: 1733255681319 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020605-release.conda - noarch: python - sha256: a98de01d436333c23597e626195c5d49272c1c5d3359889979bafb8f19d4f3bf - md5: f68f7d08fc12083075182da8482fcfa9 - depends: - - max-core ==25.1.0.dev2025020605 release - - python >=3.9,<3.13 - - jupyter_client >=8.6.2,<8.7 - - python - license: LicenseRef-Modular-Proprietary - size: 22925 - timestamp: 1738819257916 -- conda: 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 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 61507 - timestamp: 1733913288935 -- conda: 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 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 63077 - timestamp: 1733913233032 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/multidict-6.1.0-py312hdb8e49c_1.conda - sha256: 482fd09fb798090dc8cce2285fa69f43b1459099122eac2fb112d9b922b9f916 - md5: 0048335516fed938e4dd2c457b4c5b9b - depends: - - __osx >=11.0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: APACHE - size: 55968 - timestamp: 1729065664275 -- conda: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.15-py312h98912ed_1.conda - sha256: bb612a921fafda6375a2204ffebd8811db8dd3b8f25ac9886cc9bcbff7e3664e - md5: 5a64b9f44790d9a187a85366dd0ffa8d - depends: - - dill >=0.3.6 - - libgcc-ng >=12 - - python >=3.12.0rc3,<3.13.0a0 - - python_abi 3.12.* *_cp312 - arch: x86_64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 335666 - timestamp: 1695459025249 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.15-py312hdd3e373_1.conda - sha256: c53362cdf346f314e111faddc53061e3fd2ece0ba68ca303f5dd109976df158f - md5: 173a1692d2b3ddc265dc6afd21a869b3 - depends: - - dill >=0.3.6 - - libgcc-ng >=12 - - python >=3.12.0rc3,<3.13.0a0 - - python >=3.12.0rc3,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - arch: aarch64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 336110 - timestamp: 1695459137796 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/multiprocess-0.70.15-py312h02f2b3b_1.conda - sha256: 8041371e3ec3fbc2ca13c71b0180672896e6382e62892d9f6b11a4c5dd675951 - md5: 910ef2223c71902175418d9163152788 - depends: - - dill >=0.3.6 - - python >=3.12.0rc3,<3.13.0a0 - - python >=3.12.0rc3,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - arch: arm64 - platform: osx - license: BSD-3-Clause - license_family: BSD - size: 335147 - timestamp: 1695459275360 -- conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - sha256: 1895f47b7d68581a6facde5cb13ab8c2764c2e53a76bd746f8f98910dc4e08fe - md5: 29097e7ea634a45cc5386b95cac6568f - depends: - - python >=3.9 - license: MIT - license_family: MIT - size: 10854 - timestamp: 1733230986902 -- conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda - sha256: 3fde293232fa3fca98635e1167de6b7c7fda83caf24b9d6c91ec9eefb4f4d586 - md5: 47e340acb35de30501a76c7c799c41d7 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - arch: x86_64 - platform: linux - license: X11 AND BSD-3-Clause - size: 891641 - timestamp: 1738195959188 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-ha32ae93_3.conda - sha256: 91cfb655a68b0353b2833521dc919188db3d8a7f4c64bea2c6a7557b24747468 - md5: 182afabe009dc78d8b73100255ee6868 - depends: - - libgcc >=13 - arch: aarch64 - platform: linux - license: X11 AND BSD-3-Clause - size: 926034 - timestamp: 1738196018799 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda - sha256: 2827ada40e8d9ca69a153a45f7fd14f32b2ead7045d3bbb5d10964898fe65733 - md5: 068d497125e4bf8a66bf707254fff5ae - depends: - - __osx >=11.0 - arch: arm64 - platform: osx - license: X11 AND BSD-3-Clause - size: 797030 - timestamp: 1738196177597 -- conda: https://conda.anaconda.org/conda-forge/linux-64/nlohmann_json-3.11.3-he02047a_1.conda - sha256: ce4bcced4f8eea71b7cac8bc3daac097abf7a5792f278cd811dedada199500c1 - md5: e46f7ac4917215b49df2ea09a694a3fa - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc-ng >=12 - - libstdcxx-ng >=12 - arch: x86_64 - platform: linux - license: MIT - license_family: MIT - size: 122743 - timestamp: 1723652407663 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/nlohmann_json-3.11.3-h0a1ffab_1.conda - sha256: c90b1f11fc337d90a9e4c5aeeacac1418c5ba6a195097086566d38bb2ecf0f24 - md5: f2bd10ff23ab5c87327439c4499b3f3e - depends: - - libgcc-ng >=12 - - libstdcxx-ng >=12 - arch: aarch64 - platform: linux - license: MIT - license_family: MIT - size: 122755 - timestamp: 1723652622631 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/nlohmann_json-3.11.3-h00cdb27_1.conda - sha256: 3f4e6a4fa074bb297855f8111ab974dab6d9f98b7d4317d4dd46f8687ee2363b - md5: d2dee849c806430eee64d3acc98ce090 - depends: - - __osx >=11.0 - - libcxx >=16 - arch: arm64 - platform: osx - license: MIT - license_family: MIT - size: 123250 - timestamp: 1723652704997 -- conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda - sha256: fe3459c75cf84dcef6ef14efcc4adb0ade66038ddd27cadb894f34f4797687d8 - md5: d8285bea2a350f63fab23bf460221f3f - depends: - - libblas >=3.9.0,<4.0a0 - - libcblas >=3.9.0,<4.0a0 - - libgcc-ng >=12 - - liblapack >=3.9.0,<4.0a0 - - libstdcxx-ng >=12 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - constrains: - - numpy-base <0a0 - arch: x86_64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 7484186 - timestamp: 1707225809722 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda - sha256: 23767677a7790bee5457d5e75ebd508b9a31c5354216f4310dd1acfca3f7a6f9 - md5: 9cebf5a06cb87d4569cd68df887af476 - depends: - - libblas >=3.9.0,<4.0a0 - - libcblas >=3.9.0,<4.0a0 - - libgcc-ng >=12 - - liblapack >=3.9.0,<4.0a0 - - libstdcxx-ng >=12 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - constrains: - - numpy-base <0a0 - arch: aarch64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 6614296 - timestamp: 1707225994762 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda - sha256: c8841d6d6f61fd70ca80682efbab6bdb8606dc77c68d8acabfbd7c222054f518 - md5: d83fc83d589e2625a3451c9a7e21047c - depends: - - libblas >=3.9.0,<4.0a0 - - libcblas >=3.9.0,<4.0a0 - - libcxx >=16 - - liblapack >=3.9.0,<4.0a0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - constrains: - - numpy-base <0a0 - arch: arm64 - platform: osx - license: BSD-3-Clause - license_family: BSD - size: 6073136 - timestamp: 1707226249608 -- conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.3-h5fbd93e_0.conda - sha256: 5bee706ea5ba453ed7fd9da7da8380dd88b865c8d30b5aaec14d2b6dd32dbc39 - md5: 9e5816bc95d285c115a3ebc2f8563564 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libpng >=1.6.44,<1.7.0a0 - - libstdcxx >=13 - - libtiff >=4.7.0,<4.8.0a0 - - libzlib >=1.3.1,<2.0a0 - arch: x86_64 - platform: linux - license: BSD-2-Clause - license_family: BSD - size: 342988 - timestamp: 1733816638720 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openjpeg-2.5.3-h3f56577_0.conda - sha256: 92d310033e20538e896f4e4b1ea4205eb6604eee7c5c651c4965a0d8d3ca0f1d - md5: 04231368e4af50d11184b50e14250993 - depends: - - libgcc >=13 - - libpng >=1.6.44,<1.7.0a0 - - libstdcxx >=13 - - libtiff >=4.7.0,<4.8.0a0 - - libzlib >=1.3.1,<2.0a0 - arch: aarch64 - platform: linux - license: BSD-2-Clause - license_family: BSD - size: 377796 - timestamp: 1733816683252 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/openjpeg-2.5.3-h8a3d83b_0.conda - sha256: 1d59bc72ca7faac06d349c1a280f5cfb8a57ee5896f1e24225a997189d7418c7 - md5: 4b71d78648dbcf68ce8bf22bb07ff838 - depends: - - __osx >=11.0 - - libcxx >=18 - - libpng >=1.6.44,<1.7.0a0 - - libtiff >=4.7.0,<4.8.0a0 - - libzlib >=1.3.1,<2.0a0 - arch: arm64 - platform: osx - license: BSD-2-Clause - license_family: BSD - size: 319362 - timestamp: 1733816781741 -- conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.0-h7b32b05_1.conda - sha256: f62f6bca4a33ca5109b6d571b052a394d836956d21b25b7ffd03376abf7a481f - md5: 4ce6875f75469b2757a65e10a5d05e31 - depends: - - __glibc >=2.17,<3.0.a0 - - ca-certificates - - libgcc >=13 - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 2937158 - timestamp: 1736086387286 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.0-hd08dc88_1.conda - sha256: 60d34454b861501d7355f25a7b39fdb5de8d56fca49b5bcbe8b8142b7d82dce4 - md5: e21c4767e783a58c373fdb99de6211bf - depends: - - ca-certificates - - libgcc >=13 - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 3469279 - timestamp: 1736088141230 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.0-h81ee809_1.conda - sha256: 97772762abc70b3a537683ca9fc3ff3d6099eb64e4aba3b9c99e6fce48422d21 - md5: 22f971393637480bda8c679f374d8861 - depends: - - __osx >=11.0 - - ca-certificates - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: Apache - size: 2936415 - timestamp: 1736086108693 -- conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.29.0-pyhd8ed1ab_1.conda - sha256: 296280c8ace35c0a1cf72bed1077f248b3af903c3bf92332f1783a207cb5abdb - md5: 307b05402c1a382f2f09426492dee8f8 - depends: - - deprecated >=1.2.6 - - importlib-metadata >=6.0,<=8.5.0 - - python >=3.9 - license: Apache-2.0 - license_family: APACHE - size: 44166 - timestamp: 1734132973331 -- conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.29.0-pyhd8ed1ab_0.conda - sha256: ae9776efe52564e0d6711cfcee7c54439273e57a3999f7f796f66e862f58aae9 - md5: 0c02e74d26bce3fec93b227cf7ea6e6b - depends: - - backoff >=1.10.0,<3.0.0 - - opentelemetry-proto 1.29.0 - - python >=3.9 - license: Apache-2.0 - license_family: APACHE - size: 18922 - timestamp: 1734310457116 -- conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.29.0-pyhd8ed1ab_1.conda - sha256: 5d61db9d5b4f91b3932f5f2348920d5b7fdaa09e52c8ea054cf7bf3f21677c9c - md5: 223f4e56a29601c887f0dc467034af5b - depends: - - deprecated >=1.2.6 - - googleapis-common-protos >=1.52,<2.dev0 - - opentelemetry-api >=1.15,<2.dev0 - - opentelemetry-exporter-otlp-proto-common 1.29.0 - - opentelemetry-proto 1.29.0 - - opentelemetry-sdk 1.29.0 - - python >=3.9 - - requests >=2.7,<3.dev0 - license: Apache-2.0 - license_family: APACHE - size: 17147 - timestamp: 1734345675510 -- conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-prometheus-1.12.0rc1-pyhd8ed1ab_0.conda - sha256: b8239230dbbdb491401e41b53bd9f21d60551cedef1a8d5807fca1bf9bdd331c - md5: 1ddc95052b31147d1e10d818cf519cf5 - depends: - - opentelemetry-api >=1.10.0 - - opentelemetry-sdk >=1.10.0 - - prometheus_client >=0.5.0,<1.0.0 - - python >=3.6 - license: Apache-2.0 - license_family: APACHE - size: 14721 - timestamp: 1695214221489 -- conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.29.0-pyhd8ed1ab_0.conda - sha256: 200a7cb8acc8a0ddd6ef55c5460cec871b6a265929b240a0296c0ccb9c8d9758 - md5: e2a6d2ad10b813c7fdc1c64aac376128 - depends: - - protobuf <6.0,>=5.0 - - python >=3.9 - license: Apache-2.0 - license_family: APACHE - size: 37235 - timestamp: 1734291034372 -- conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.29.0-pyhd8ed1ab_0.conda - sha256: 7b36629d8b8be8a019fcfd1518d7b7f862dd25de96f8adcadb93e4fd12cf9bd6 - md5: 2a8893f06e6ebda4bfa78875bc923ea4 - depends: - - opentelemetry-api 1.29.0 - - opentelemetry-semantic-conventions 0.50b0 - - python >=3.9 - - typing-extensions >=3.7.4 - - typing_extensions >=3.7.4 - license: Apache-2.0 - license_family: APACHE - size: 77645 - timestamp: 1734297838999 -- conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.50b0-pyh3cfb1c2_0.conda - sha256: 6526e70368d5bf66ef0eaa51fb800d53782dde71a24bd38f40139919a6f784dc - md5: f7111fa4188d646c8108e232d024cb99 - depends: - - deprecated >=1.2.6 - - opentelemetry-api 1.29.0 - - python >=3.9 - license: Apache-2.0 - license_family: APACHE - size: 86084 - timestamp: 1734208980168 -- conda: https://conda.anaconda.org/conda-forge/linux-64/orc-2.0.3-h12ee42a_2.conda - sha256: dff5cc8023905782c86b3459055f26d4b97890e403b0698477c9fed15d8669cc - md5: 4f6f9f3f80354ad185e276c120eac3f0 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libprotobuf >=5.28.3,<5.28.4.0a0 - - libstdcxx >=13 - - libzlib >=1.3.1,<2.0a0 - - lz4-c >=1.10.0,<1.11.0a0 - - snappy >=1.2.1,<1.3.0a0 - - tzdata - - zstd >=1.5.6,<1.6.0a0 - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 1188881 - timestamp: 1735630209320 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/orc-2.0.3-hdd485aa_2.conda - sha256: b6c67542352a86cdf143c3066d5cda855b74454a156eedcd8958b494c6a32a83 - md5: d19f01b42e5d6a2908b65df435aff42f - depends: - - libgcc >=13 - - libprotobuf >=5.28.3,<5.28.4.0a0 - - libstdcxx >=13 - - libzlib >=1.3.1,<2.0a0 - - lz4-c >=1.10.0,<1.11.0a0 - - snappy >=1.2.1,<1.3.0a0 - - tzdata - - zstd >=1.5.6,<1.6.0a0 - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 1167714 - timestamp: 1735630248837 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/orc-2.0.3-h0ff2369_2.conda - sha256: cca330695f3bdb8c0e46350c29cd4af3345865544e36f1d7c9ba9190ad22f5f4 - md5: 24b1897c0d24afbb70704ba998793b78 - depends: - - __osx >=11.0 - - libcxx >=18 - - libprotobuf >=5.28.3,<5.28.4.0a0 - - libzlib >=1.3.1,<2.0a0 - - lz4-c >=1.10.0,<1.11.0a0 - - snappy >=1.2.1,<1.3.0a0 - - tzdata - - zstd >=1.5.6,<1.6.0a0 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: Apache - size: 438520 - timestamp: 1735630624140 -- conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - sha256: da157b19bcd398b9804c5c52fc000fcb8ab0525bdb9c70f95beaa0bb42f85af1 - md5: 3bfed7e6228ebf2f7b9eaa47f1b4e2aa - depends: - - python >=3.8 - license: Apache-2.0 - license_family: APACHE - size: 60164 - timestamp: 1733203368787 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.3-py312hf9745cd_1.conda - sha256: ad275a83bfebfa8a8fee9b0569aaf6f513ada6a246b2f5d5b85903d8ca61887e - md5: 8bce4f6caaf8c5448c7ac86d87e26b4b - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libstdcxx >=13 - - numpy >=1.19,<3 - - numpy >=1.22.4 - - python >=3.12,<3.13.0a0 - - python-dateutil >=2.8.1 - - python-tzdata >=2022a - - python_abi 3.12.* *_cp312 - - pytz >=2020.1,<2024.2 - arch: x86_64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 15436913 - timestamp: 1726879054912 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pandas-2.2.3-py312ha2895bd_2.conda - sha256: a34b10077de97eea72c81cb96e3ddc7d48320c0fc7d9b28ba8d9d2bead1d8297 - md5: 39a91ac336d350513de6aad56da5a920 - depends: - - libgcc >=13 - - libstdcxx >=13 - - numpy >=1.19,<3 - - numpy >=1.22.4 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python-dateutil >=2.8.1 - - python-tzdata >=2022a - - python_abi 3.12.* *_cp312 - - pytz >=2020.1,<2024.2 - constrains: - - fsspec >=2022.11.0 - - s3fs >=2022.11.0 - - fastparquet >=2022.12.0 - - pyreadstat >=1.2.0 - - qtpy >=2.3.0 - - scipy >=1.10.0 - - beautifulsoup4 >=4.11.2 - - gcsfs >=2022.11.0 - - numexpr >=2.8.4 - - sqlalchemy >=2.0.0 - - pyxlsb >=1.0.10 - - numba >=0.56.4 - - lxml >=4.9.2 - - matplotlib >=3.6.3 - - psycopg2 >=2.9.6 - - tzdata >=2022.7 - - bottleneck >=1.3.6 - - xarray >=2022.12.0 - - xlsxwriter >=3.0.5 - - zstandard >=0.19.0 - - blosc >=1.21.3 - - pytables >=3.8.0 - - openpyxl >=3.1.0 - - pyqt5 >=5.15.8 - - tabulate >=0.9.0 - arch: aarch64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 15162992 - timestamp: 1736811533875 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.3-py312hcd31e36_1.conda - sha256: ff0cb54b5d058c7987b4a0984066e893642d1865a7bb695294b6172e2fcdc457 - md5: c68bfa69e6086c381c74e16fd72613a8 - depends: - - __osx >=11.0 - - libcxx >=17 - - numpy >=1.19,<3 - - numpy >=1.22.4 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python-dateutil >=2.8.1 - - python-tzdata >=2022a - - python_abi 3.12.* *_cp312 - - pytz >=2020.1,<2024.2 - arch: arm64 - platform: osx - license: BSD-3-Clause - license_family: BSD - size: 14470437 - timestamp: 1726878887799 -- conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda - sha256: 9f64009cdf5b8e529995f18e03665b03f5d07c0b17445b8badef45bde76249ee - md5: 617f15191456cc6a13db418a275435e5 - depends: - - python >=3.9 - license: MPL-2.0 - license_family: MOZILLA - size: 41075 - timestamp: 1733233471940 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-11.1.0-py312h80c1187_0.conda - sha256: 5c347962202b55ae4d8a463e0555c5c6ca33396266a08284bf1384399894e541 - md5: d3894405f05b2c0f351d5de3ae26fa9c - depends: - - __glibc >=2.17,<3.0.a0 - - freetype >=2.12.1,<3.0a0 - - lcms2 >=2.16,<3.0a0 - - libgcc >=13 - - libjpeg-turbo >=3.0.0,<4.0a0 - - libtiff >=4.7.0,<4.8.0a0 - - libwebp-base >=1.5.0,<2.0a0 - - libxcb >=1.17.0,<2.0a0 - - libzlib >=1.3.1,<2.0a0 - - openjpeg >=2.5.3,<3.0a0 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - - tk >=8.6.13,<8.7.0a0 - arch: x86_64 - platform: linux - license: HPND - size: 42749785 - timestamp: 1735929845390 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pillow-11.1.0-py312h719f0cf_0.conda - sha256: 7559556ffc44bda777f85c2e5acd6b5756fa5822c0271b329b7b9a3c6bb20349 - md5: 77e0ec0a6fc847d317f204aa15b59f6b - depends: - - freetype >=2.12.1,<3.0a0 - - lcms2 >=2.16,<3.0a0 - - libgcc >=13 - - libjpeg-turbo >=3.0.0,<4.0a0 - - libtiff >=4.7.0,<4.8.0a0 - - libwebp-base >=1.5.0,<2.0a0 - - libxcb >=1.17.0,<2.0a0 - - libzlib >=1.3.1,<2.0a0 - - openjpeg >=2.5.3,<3.0a0 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - - tk >=8.6.13,<8.7.0a0 - arch: aarch64 - platform: linux - license: HPND - size: 41362848 - timestamp: 1735932311857 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-11.1.0-py312h50aef2c_0.conda - sha256: b29b7c915053e06a7a5b4118760202c572c9c35d23bd6ce8e73270b6a50e50ee - md5: 94d6ba8cd468668a9fb04193b0f4b36e - depends: - - __osx >=11.0 - - freetype >=2.12.1,<3.0a0 - - lcms2 >=2.16,<3.0a0 - - libjpeg-turbo >=3.0.0,<4.0a0 - - libtiff >=4.7.0,<4.8.0a0 - - libwebp-base >=1.5.0,<2.0a0 - - libxcb >=1.17.0,<2.0a0 - - libzlib >=1.3.1,<2.0a0 - - openjpeg >=2.5.3,<3.0a0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - - tk >=8.6.13,<8.7.0a0 - arch: arm64 - platform: osx - license: HPND - size: 42852329 - timestamp: 1735930118976 -- conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda - sha256: bb50f6499e8bc1d1a26f17716c97984671121608dc0c3ecd34858112bce59a27 - md5: 577852c7e53901ddccc7e6a9959ddebe - depends: - - python >=3.9 - license: MIT - license_family: MIT - size: 20448 - timestamp: 1733232756001 -- conda: https://conda.anaconda.org/conda-forge/linux-64/prometheus-cpp-1.3.0-ha5d0236_0.conda - sha256: 013669433eb447548f21c3c6b16b2ed64356f726b5f77c1b39d5ba17a8a4b8bc - md5: a83f6a2fdc079e643237887a37460668 - depends: - - __glibc >=2.17,<3.0.a0 - - libcurl >=8.10.1,<9.0a0 - - libgcc >=13 - - libstdcxx >=13 - - libzlib >=1.3.1,<2.0a0 - - zlib - arch: x86_64 - platform: linux - license: MIT - license_family: MIT - size: 199544 - timestamp: 1730769112346 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/prometheus-cpp-1.3.0-h7938499_0.conda - sha256: 9350d7bbc3982a732ff13a7fd17b585509e3b7d0191ac7b810cc3224868e3648 - md5: 10f4301290e51c49979ff98d1bdf2556 - depends: - - libcurl >=8.10.1,<9.0a0 - - libgcc >=13 - - libstdcxx >=13 - - libzlib >=1.3.1,<2.0a0 - - zlib - arch: aarch64 - platform: linux - license: MIT - license_family: MIT - size: 211335 - timestamp: 1730769181127 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/prometheus-cpp-1.3.0-h0967b3e_0.conda - sha256: 851a77ae1a8e90db9b9f3c4466abea7afb52713c3d98ceb0d37ba6ff27df2eff - md5: 7172339b49c94275ba42fec3eaeda34f - depends: - - __osx >=11.0 - - libcurl >=8.10.1,<9.0a0 - - libcxx >=18 - - libzlib >=1.3.1,<2.0a0 - - zlib - arch: arm64 - platform: osx - license: MIT - license_family: MIT - size: 173220 - timestamp: 1730769371051 -- conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda - sha256: bc8f00d5155deb7b47702cb8370f233935704100dbc23e30747c161d1b6cf3ab - md5: 3e01e386307acc60b2f89af0b2e161aa - depends: - - python >=3.9 - license: Apache-2.0 - license_family: Apache - size: 49002 - timestamp: 1733327434163 -- conda: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.1-py312h178313f_1.conda - sha256: 6d5ff6490c53e14591b70924711fe7bd70eb7fbeeeb1cbd9ed2f6d794ec8c4eb - md5: 349635694b4df27336bc15a49e9220e9 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 52947 - timestamp: 1737635699390 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.2.1-py312hcc812fe_1.conda - sha256: d759d8ab9c060b42cabf6312b9a04aa590daecabf1dd4e35731f4bc1b5c388bb - md5: 533b07e9fd835938f465225613825eee - depends: - - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 52776 - timestamp: 1737635802135 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.1-py312h998013c_1.conda - sha256: 96145760baad111d7ae4213ea8f8cc035cf33b001f5ff37d92268e4d28b0941d - md5: 83678928c58c9ae76778a435b6c7a94a - depends: - - __osx >=11.0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: APACHE - size: 50942 - timestamp: 1737635896600 -- conda: https://conda.anaconda.org/conda-forge/linux-64/protobuf-5.28.3-py312h2ec8cdc_0.conda - sha256: acb2e0ee948e3941f8ed191cb77f654e06538638aed8ccd71cbc78a15242ebbb - md5: 9d7e427d159c1b2d516cc047ff177c48 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libstdcxx >=13 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - constrains: - - libprotobuf 5.28.3 - arch: x86_64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 464794 - timestamp: 1731366525051 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/protobuf-5.28.3-py312h6f74592_0.conda - sha256: 9c575d5035c7ecb114ab9e17906c0a54087d9598dd6a2104c02fe33f0a29dd46 - md5: 06513608c94fb1c1b17136ace77063a9 - depends: - - libgcc >=13 - - libstdcxx >=13 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - constrains: - - libprotobuf 5.28.3 - arch: aarch64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 473242 - timestamp: 1731366577844 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/protobuf-5.28.3-py312hd8f9ff3_0.conda - sha256: 9d572a97419bdace14d7c7cc8cc8c4bf2dcb22b56965dac87a27fbdb5061b926 - md5: 5afbe52a59f04dd1fe566d0d17590d7e - depends: - - __osx >=11.0 - - libcxx >=18 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - constrains: - - libprotobuf 5.28.3 - arch: arm64 - platform: osx - license: BSD-3-Clause - license_family: BSD - size: 448803 - timestamp: 1731367010746 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda - sha256: 9c88f8c64590e9567c6c80823f0328e58d3b1efb0e1c539c0315ceca764e0973 - md5: b3c17d95b5a10c6e64a21fa17573e70e - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - arch: x86_64 - platform: linux - license: MIT - license_family: MIT - size: 8252 - timestamp: 1726802366959 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pthread-stubs-0.4-h86ecc28_1002.conda - sha256: 977dfb0cb3935d748521dd80262fe7169ab82920afd38ed14b7fee2ea5ec01ba - md5: bb5a90c93e3bac3d5690acf76b4a6386 - depends: - - libgcc >=13 - arch: aarch64 - platform: linux - license: MIT - license_family: MIT - size: 8342 - timestamp: 1726803319942 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pthread-stubs-0.4-hd74edd7_1002.conda - sha256: 8ed65e17fbb0ca944bfb8093b60086e3f9dd678c3448b5de212017394c247ee3 - md5: 415816daf82e0b23a736a069a75e9da7 - depends: - - __osx >=11.0 - arch: arm64 - platform: osx - license: MIT - license_family: MIT - size: 8381 - timestamp: 1726802424786 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-19.0.0-py312h7900ff3_0.conda - sha256: 7d98e626ec65b882341482ad15ecb7a670ee41dbaf375aa660ba8b7d0a940504 - md5: 14f86e63b5c214dd9fb34e5472d4bafc - depends: - - libarrow-acero 19.0.0.* - - libarrow-dataset 19.0.0.* - - libarrow-substrait 19.0.0.* - - libparquet 19.0.0.* - - pyarrow-core 19.0.0 *_0_* - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 25289 - timestamp: 1737128438818 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-19.0.0-py312h8025657_0.conda - sha256: 3a73d3d15031586214381edf5410a6920c1f75f52a8d8b994722b106d9a50150 - md5: a86fa414c44b7e3ee054cc385c79a822 - depends: - - libarrow-acero 19.0.0.* - - libarrow-dataset 19.0.0.* - - libarrow-substrait 19.0.0.* - - libparquet 19.0.0.* - - pyarrow-core 19.0.0 *_0_* - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 25496 - timestamp: 1737129041038 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-19.0.0-py312h1f38498_0.conda - sha256: 9d693901833c2ff4e5d67e1f2f6df50f699e1cec2f580c26d42299654830855a - md5: bd5e025292ff1127aa1534b59e55c4d0 - depends: - - libarrow-acero 19.0.0.* - - libarrow-dataset 19.0.0.* - - libarrow-substrait 19.0.0.* - - libparquet 19.0.0.* - - pyarrow-core 19.0.0 *_0_* - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: APACHE - size: 25428 - timestamp: 1737128284082 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-19.0.0-py312h01725c0_0_cpu.conda - sha256: 81178d0de0ac851a0a78e09c81ad92274cf770a38b28acdf53a0cfb2122d15aa - md5: 7ab1143b9ac1af5cc4a630706f643627 - depends: - - __glibc >=2.17,<3.0.a0 - - libarrow 19.0.0.* *cpu - - libgcc >=13 - - libstdcxx >=13 - - libzlib >=1.3.1,<2.0a0 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - constrains: - - apache-arrow-proc =*=cpu - - numpy >=1.21,<3 - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 5230953 - timestamp: 1737128097002 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-19.0.0-py312h66f7834_0_cpu.conda - sha256: 17ff419abfe9596f77857dfa635538200427d87283c28e64920d10d6533ec30e - md5: ce51dbcfeae8709f0b94c78eabe7cf5e - depends: - - libarrow 19.0.0.* *cpu - - libgcc >=13 - - libstdcxx >=13 - - libzlib >=1.3.1,<2.0a0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - constrains: - - numpy >=1.21,<3 - - apache-arrow-proc =*=cpu - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 5023430 - timestamp: 1737627066264 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-19.0.0-py312hc40f475_0_cpu.conda - sha256: 6303fe1c3e6d36273b72f0eeb3f19897d2376d57fe8c757f55dcbfbaa5cd6840 - md5: df502157843a7b1d90af04803767be15 - depends: - - __osx >=11.0 - - libarrow 19.0.0.* *cpu - - libcxx >=18 - - libzlib >=1.3.1,<2.0a0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - constrains: - - apache-arrow-proc =*=cpu - - numpy >=1.21,<3 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: APACHE - size: 4393075 - timestamp: 1737128225546 -- conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - sha256: 79db7928d13fab2d892592223d7570f5061c192f27b9febd1a418427b719acc6 - md5: 12c566707c80111f9799308d9e265aef - depends: - - python >=3.9 - - python - license: BSD-3-Clause - license_family: BSD - size: 110100 - timestamp: 1733195786147 -- conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.6-pyh3cfb1c2_0.conda - sha256: 9a78801a28959edeb945e8270a4e666577b52fac0cf4e35f88cf122f73d83e75 - md5: c69f87041cf24dfc8cb6bf64ca7133c7 - depends: - - annotated-types >=0.6.0 - - pydantic-core 2.27.2 - - python >=3.9 - - typing-extensions >=4.6.1 - - typing_extensions >=4.12.2 - license: MIT - license_family: MIT - size: 296841 - timestamp: 1737761472006 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.27.2-py312h12e396e_0.conda - sha256: 81602a4592ad2ac1a1cb57372fd25214e63b1c477d5818b0c21cde0f1f85c001 - md5: bae01b2563030c085f5158c518b84e86 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - - typing-extensions >=4.6.0,!=4.7.0 - constrains: - - __glibc >=2.17 - arch: x86_64 - platform: linux - license: MIT - license_family: MIT - size: 1641402 - timestamp: 1734571789895 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pydantic-core-2.27.2-py312h8cbf658_0.conda - sha256: 623e0f3846f15d035ce7ab7ae445fc8d9e547b6684ab55858b6f44510d24b097 - md5: 9677f6ab4bf27ba3c2aee70d08c7b27c - depends: - - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - - typing-extensions >=4.6.0,!=4.7.0 - constrains: - - __glibc >=2.17 - arch: aarch64 - platform: linux - license: MIT - license_family: MIT - size: 1505076 - timestamp: 1734571966615 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.27.2-py312hcd83bfe_0.conda - sha256: cfa7201f890d5d08ce29ff70e65a96787d5793a1718776733666b44bbd4a1205 - md5: dcb307e02f17d38c6e1cbfbf8c602852 - depends: - - __osx >=11.0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - - typing-extensions >=4.6.0,!=4.7.0 - constrains: - - __osx >=11.0 - arch: arm64 - platform: osx - license: MIT - license_family: MIT - size: 1593461 - timestamp: 1734571986644 -- conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.7.1-pyh3cfb1c2_0.conda - sha256: 082fb1ec29917d2c9ed6a862cb8eb9beb88c208ea62c9fef1aeb5f4f3e0e0b06 - md5: d71d76b62bed332b037d7adfc0f3989a - depends: - - pydantic >=2.7.0 - - python >=3.9 - - python-dotenv >=0.21.0 - license: MIT - license_family: MIT - size: 31822 - timestamp: 1735650532951 -- conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda - sha256: 28a3e3161390a9d23bc02b4419448f8d27679d9e2c250e29849e37749c8de86b - md5: 232fb4577b6687b2d503ef8e254270c9 - depends: - - python >=3.9 - license: BSD-2-Clause - license_family: BSD - size: 888600 - timestamp: 1736243563082 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pyinstrument-5.0.1-py312h66e93f0_0.conda - sha256: 3f1c0bc95f2c46dcd107f44cf742ee1fa40ba22e244f01083654743bbbcf28f3 - md5: 9f1d7b421e4c8fd00009490613db64d4 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - arch: x86_64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 182333 - timestamp: 1737774425235 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyinstrument-5.0.1-py312hb2c0f52_0.conda - sha256: 16af5db4359078bcb526291855bf1075ab035a96fe4e8d5cc4b0b5c8cba89b9a - md5: 90f5e9e04b1ecf25ad3f28b606f63742 - depends: - - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - arch: aarch64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 183988 - timestamp: 1737774588265 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyinstrument-5.0.1-py312hea69d52_0.conda - sha256: 5e7de2f908af22bbd8cf3562ce5ebf65ad6c0d8e40038f90b56f4db750639ce2 - md5: 07b0eb9b6bd91dfa87f95032825690dc - depends: - - __osx >=11.0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - arch: arm64 - platform: osx - license: BSD-3-Clause - license_family: BSD - size: 182524 - timestamp: 1737774624030 -- conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - sha256: ba3b032fa52709ce0d9fd388f63d330a026754587a2f461117cac9ab73d8d0d8 - md5: 461219d1a5bd61342293efa2c0c90eac - depends: - - __unix - - python >=3.9 - license: BSD-3-Clause - license_family: BSD - size: 21085 - timestamp: 1733217331982 -- conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.8-h9e4cc4f_1_cpython.conda - build_number: 1 - sha256: 3f0e0518c992d8ccfe62b189125721309836fe48a010dc424240583e157f9ff0 - md5: 7fd2fd79436d9b473812f14e86746844 + license: 0BSD + size: 98945 + timestamp: 1738525462560 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda + sha256: 26d77a3bb4dceeedc2a41bd688564fe71bf2d149fdcf117049970bc02ff1add6 + md5: 30fd6e37fe21f86f4bd26d6ee73eeec7 depends: - - __glibc >=2.17,<3.0.a0 - - bzip2 >=1.0.8,<2.0a0 - - ld_impl_linux-64 >=2.36.1 - - libexpat >=2.6.4,<3.0a0 - - libffi >=3.4,<4.0a0 - - libgcc >=13 - - liblzma >=5.6.3,<6.0a0 - - libnsl >=2.0.1,<2.1.0a0 - - libsqlite >=3.47.0,<4.0a0 - - libuuid >=2.38.1,<3.0a0 - - libxcrypt >=4.4.36 - - libzlib >=1.3.1,<2.0a0 - - ncurses >=6.5,<7.0a0 - - openssl >=3.4.0,<4.0a0 - - readline >=8.2,<9.0a0 - - tk >=8.6.13,<8.7.0a0 - - tzdata - constrains: - - python_abi 3.12.* *_cp312 + - libgcc-ng >=12 arch: x86_64 platform: linux - license: Python-2.0 - size: 31565686 - timestamp: 1733410597922 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.8-h1683364_1_cpython.conda - build_number: 1 - sha256: 85573582d5b0f79923fed0a8365d3d74d21eee9f0a5fa1b9345f191e006363ab - md5: 09ec612ea05370989eaa3d81abf0f369 + license: LGPL-2.1-only + license_family: GPL + size: 33408 + timestamp: 1697359010159 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda + sha256: fd18c2b75d7411096428d36a70b36b1a17e31f7b8956b6905d145792d49e97f8 + md5: c14f32510f694e3185704d89967ec422 depends: - - bzip2 >=1.0.8,<2.0a0 - - ld_impl_linux-aarch64 >=2.36.1 - - libexpat >=2.6.4,<3.0a0 - - libffi >=3.4,<4.0a0 - - libgcc >=13 - - liblzma >=5.6.3,<6.0a0 - - libnsl >=2.0.1,<2.1.0a0 - - libsqlite >=3.47.0,<4.0a0 - - libuuid >=2.38.1,<3.0a0 - - libxcrypt >=4.4.36 - - libzlib >=1.3.1,<2.0a0 - - ncurses >=6.5,<7.0a0 - - openssl >=3.4.0,<4.0a0 - - readline >=8.2,<9.0a0 - - tk >=8.6.13,<8.7.0a0 - - tzdata - constrains: - - python_abi 3.12.* *_cp312 + - libgcc-ng >=12 arch: aarch64 platform: linux - license: Python-2.0 - size: 13760816 - timestamp: 1733407890896 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.8-hc22306f_1_cpython.conda - build_number: 1 - sha256: 7586a711b1b08a9df8864e26efdc06980bdfb0e18d5ac4651d0fee30a8d3e3a0 - md5: 54ca5b5d92ef3a3ba61e195ee882a518 - depends: - - __osx >=11.0 - - bzip2 >=1.0.8,<2.0a0 - - libexpat >=2.6.4,<3.0a0 - - libffi >=3.4,<4.0a0 - - liblzma >=5.6.3,<6.0a0 - - libsqlite >=3.47.0,<4.0a0 - - libzlib >=1.3.1,<2.0a0 - - ncurses >=6.5,<7.0a0 - - openssl >=3.4.0,<4.0a0 - - readline >=8.2,<9.0a0 - - tk >=8.6.13,<8.7.0a0 - - tzdata - constrains: - - python_abi 3.12.* *_cp312 - arch: arm64 - platform: osx - license: Python-2.0 - size: 12998673 - timestamp: 1733408900971 -- conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - sha256: a50052536f1ef8516ed11a844f9413661829aa083304dc624c5925298d078d79 - md5: 5ba79d7c71f03c678c8ead841f347d6e - depends: - - python >=3.9 - - six >=1.5 - license: Apache-2.0 - license_family: APACHE - size: 222505 - timestamp: 1733215763718 -- conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda - sha256: 99713f6b534fef94995c6c16fd21d59f3548784e9111775d692bdc7c44678f02 - md5: e5c6ed218664802d305e79cc2d4491de - depends: - - python >=3.9 - license: BSD-3-Clause - license_family: BSD - size: 24215 - timestamp: 1733243277223 -- conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - sha256: 4790787fe1f4e8da616edca4acf6a4f8ed4e7c6967aa31b920208fc8f95efcca - md5: a61bf9ec79426938ff785eb69dbb1960 - depends: - - python >=3.6 - license: BSD-2-Clause - license_family: BSD - size: 13383 - timestamp: 1677079727691 -- conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.20-pyhff2d567_0.conda - sha256: 1b03678d145b1675b757cba165a0d9803885807792f7eb4495e48a38858c3cca - md5: a28c984e0429aff3ab7386f7de56de6f - depends: - - python >=3.9 - license: Apache-2.0 - license_family: Apache - size: 27913 - timestamp: 1734420869885 -- conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.1-pyhd8ed1ab_0.conda - sha256: 1597d6055d34e709ab8915091973552a0b8764c8032ede07c4e99670da029629 - md5: 392c91c42edd569a7ec99ed8648f597a - depends: - - python >=3.9 - license: Apache-2.0 - license_family: APACHE - size: 143794 - timestamp: 1737541204030 -- conda: https://conda.anaconda.org/conda-forge/linux-64/python-xxhash-3.5.0-py312h66e93f0_1.conda - sha256: 20851b1e59fee127d49e01fc73195a88ab0779f103b7d6ffc90d11142a83678f - md5: 39aed2afe4d0cf76ab3d6b09eecdbea7 + license: LGPL-2.1-only + license_family: GPL + size: 34501 + timestamp: 1697358973269 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.28-pthreads_h94d23a6_1.conda + sha256: 99ba271d8a80a1af2723f2e124ffd91d850074c0389c067e6d96d72a2dbfeabe + md5: 62857b389e42b36b686331bec0922050 depends: - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - - xxhash >=0.8.2,<0.8.3.0a0 - arch: x86_64 - platform: linux - license: BSD-2-Clause - license_family: BSD - size: 23162 - timestamp: 1725272139519 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-xxhash-3.5.0-py312h52516f5_1.conda - sha256: 0fa5ba80073a43391ee90303814adbc9fd826175de1fdac273ba0e5b711aa255 - md5: 591c4ae6d8338dfd07b951e00433a405 - depends: - - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - - xxhash >=0.8.2,<0.8.3.0a0 - arch: aarch64 - platform: linux - license: BSD-2-Clause - license_family: BSD - size: 23589 - timestamp: 1725273317965 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-xxhash-3.5.0-py312h024a12e_1.conda - sha256: 28204ef48f028a4d872e22040da0dad7ebd703549b010a1bb511b6dd94cf466d - md5: 266fe1ae54a7bb17990206664d0f0ae4 - depends: - - __osx >=11.0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - - xxhash >=0.8.2,<0.8.3.0a0 - arch: arm64 - platform: osx - license: BSD-2-Clause - license_family: BSD - size: 21765 - timestamp: 1725272382968 -- conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda - build_number: 5 - sha256: d10e93d759931ffb6372b45d65ff34d95c6000c61a07e298d162a3bc2accebb0 - md5: 0424ae29b104430108f5218a66db7260 + - libgcc >=14 + - libgfortran + - libgfortran5 >=14.2.0 constrains: - - python 3.12.* *_cpython + - openblas >=0.3.28,<0.3.29.0a0 arch: x86_64 platform: linux license: BSD-3-Clause license_family: BSD - size: 6238 - timestamp: 1723823388266 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.12-5_cp312.conda - build_number: 5 - sha256: 5ccdad9981753cc4a2d126e356673a21c0cd5b34e209cb8d476a3947d4ad9b39 - md5: 62b20f305498284a07dc6c45fd0e5c87 + size: 5578513 + timestamp: 1730772671118 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.28-pthreads_h9d3fd7e_1.conda + sha256: 30623a40764e935aa77e0d4db54c1a1589189a9bf3a03fdb445505c1e319b5a6 + md5: e8dde93dd199da3c1f2c1fcfd0042cd4 + depends: + - libgcc >=14 + - libgfortran + - libgfortran5 >=14.2.0 constrains: - - python 3.12.* *_cpython + - openblas >=0.3.28,<0.3.29.0a0 arch: aarch64 platform: linux license: BSD-3-Clause license_family: BSD - size: 6329 - timestamp: 1723823366253 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-5_cp312.conda - build_number: 5 - sha256: 49d624e4b809c799d2bf257b22c23cf3fc4460f5570d9a58e7ad86350aeaa1f4 - md5: b76f9b1c862128e56ac7aa8cd2333de9 + size: 4793435 + timestamp: 1730773029647 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.28-openmp_hf332438_1.conda + sha256: 62bb669c37a845129096f73d446cdb6bb170e4927f2fea2b661329680dbbc373 + md5: 40803a48d947c8639da6704e9a44d3ce + depends: + - __osx >=11.0 + - libgfortran 5.* + - libgfortran5 >=13.2.0 + - llvm-openmp >=18.1.8 constrains: - - python 3.12.* *_cpython + - openblas >=0.3.28,<0.3.29.0a0 arch: arm64 platform: osx license: BSD-3-Clause license_family: BSD - size: 6278 - timestamp: 1723823099686 -- conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda - sha256: 1a7d6b233f7e6e3bbcbad054c8fd51e690a67b129a899a056a5e45dd9f00cb41 - md5: 3eeeeb9e4827ace8c0c1419c85d590ad - depends: - - python >=3.7 - license: MIT - license_family: MIT - size: 188538 - timestamp: 1706886944988 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py312h178313f_2.conda - sha256: 159cba13a93b3fe084a1eb9bda0a07afc9148147647f0d437c3c3da60980503b - md5: cf2485f39740de96e2a7f2bb18ed2fee - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - - yaml >=0.2.5,<0.3.0a0 - arch: x86_64 - platform: linux - license: MIT - license_family: MIT - size: 206903 - timestamp: 1737454910324 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyyaml-6.0.2-py312hcc812fe_2.conda - sha256: dc78e41d51300722ba35ac4a10d37339ceffbe22d7501c71dfd3f633a4f8e79a - md5: 4de4a5ff81c941674e08595244e7cd61 - depends: - - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - - yaml >=0.2.5,<0.3.0a0 - arch: aarch64 - platform: linux - license: MIT - license_family: MIT - size: 199172 - timestamp: 1737454840766 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py312h998013c_2.conda - sha256: ad225ad24bfd60f7719709791345042c3cb32da1692e62bd463b084cf140e00d - md5: 68149ed4d4e9e1c42d2ba1f27f08ca96 - depends: - - __osx >=11.0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - - yaml >=0.2.5,<0.3.0a0 - arch: arm64 - platform: osx - license: MIT - license_family: MIT - size: 192148 - timestamp: 1737454886351 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.1-py312hbf22597_0.conda - sha256: 90ec0da0317d3d76990a40c61e1709ef859dd3d8c63838bad2814f46a63c8a2e - md5: 7cec8d0dac15a2d9fea8e49879aa779d + size: 4165774 + timestamp: 1730772154295 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda + sha256: 51125ebb8b7152e4a4e69fd2398489c4ec8473195c27cde3cbdf1cb6d18c5493 + md5: d8703f1ffe5a06356f06467f1d0b9464 depends: - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 - libgcc >=13 - - libsodium >=1.0.20,<1.0.21.0a0 - libstdcxx >=13 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - - zeromq >=4.3.5,<4.4.0a0 + - libzlib >=1.3.1,<2.0a0 arch: x86_64 platform: linux license: BSD-3-Clause license_family: BSD - size: 382698 - timestamp: 1738271121975 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyzmq-26.2.1-py312h2427ae1_0.conda - sha256: 9558f9330093e5c21b7c04e2e212e19b9b88ad9c808315f12c0765b244018a09 - md5: 0520da8de6870d8ff63e818e927d1524 + size: 2960815 + timestamp: 1735577210663 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.3-h44a3b7b_1.conda + sha256: ecb69f2b1668e784b41ba667493be846662d5ef702bef64fb2e013bb1364cdc4 + md5: 68f807f7cc13951652bbe048253fd405 depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 - libgcc >=13 - - libsodium >=1.0.20,<1.0.21.0a0 - libstdcxx >=13 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - - zeromq >=4.3.5,<4.4.0a0 + - libzlib >=1.3.1,<2.0a0 arch: aarch64 platform: linux license: BSD-3-Clause license_family: BSD - size: 375156 - timestamp: 1738273130727 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.1-py312hf4875e0_0.conda - sha256: 70d398b334668dc597d33e27847ede1b0829a639b9c91ee845355e52c86c2293 - md5: bfbefdb140b546a80827ff7c9d5ac7b8 + size: 2788074 + timestamp: 1735576315676 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.3-h3bd63a1_1.conda + sha256: f58a16b13ad53346903c833e266f83c3d770a43a432659b98710aed85ca885e7 + md5: bdbfea4cf45ae36652c6bbcc2e7ebe91 depends: - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 - libcxx >=18 - - libsodium >=1.0.20,<1.0.21.0a0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - - zeromq >=4.3.5,<4.4.0a0 + - libzlib >=1.3.1,<2.0a0 arch: arm64 platform: osx license: BSD-3-Clause license_family: BSD - size: 364649 - timestamp: 1738271263898 -- conda: https://conda.anaconda.org/conda-forge/linux-64/re2-2024.07.02-h9925aae_2.conda - sha256: d213c44958d49ce7e0d4d5b81afec23640cce5016685dbb2d23571a99caa4474 - md5: e84ddf12bde691e8ec894b00ea829ddf + size: 2271580 + timestamp: 1735576361997 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsentencepiece-0.2.0-h8e10757_10.conda + sha256: dc399e0f04a09f8c1807c3b36e578eb81f81891c0ddf21de9c1fb9f048ce4031 + md5: 4f43dbcfacd3cc9a183dd3a48b94d3c0 depends: - - libre2-11 2024.07.02 hbbce691_2 + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 arch: x86_64 platform: linux - license: BSD-3-Clause - license_family: BSD - size: 26786 - timestamp: 1735541074034 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/re2-2024.07.02-haa97905_2.conda - sha256: 040848655df9119bae5a549fb5c8956a5537120859416c1d9d0712b7bac9f12e - md5: 1bf0135339b4a7419a198a795d2d4be0 + license: Apache-2.0 + license_family: Apache + size: 823649 + timestamp: 1735627841126 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsentencepiece-0.2.0-h6164ad9_10.conda + sha256: 57074803772f65d4075b7d6dc17ff5aa40ec3a30109fa4225ca16911504c4a8b + md5: a7a192edc9cfba26a27df3283203e6a1 depends: - - libre2-11 2024.07.02 h18dbdb1_2 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 arch: aarch64 platform: linux - license: BSD-3-Clause - license_family: BSD - size: 26830 - timestamp: 1735540999398 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/re2-2024.07.02-h6589ca4_2.conda - sha256: 4d3799c05f8f662922a0acd129d119774760a3281b883603678e128d1cb307fb - md5: 7a8b4ad8c58a3408ca89d78788c78178 + license: Apache-2.0 + license_family: Apache + size: 800865 + timestamp: 1735627982895 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsentencepiece-0.2.0-he13a0af_10.conda + sha256: 3347a8840d085ce1661928e736229f068d56c84312fbed90886e059023d85611 + md5: 1f67e5e30edd56e0a0bf6df6bb711a9d depends: - - libre2-11 2024.07.02 h07bc746_2 + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 arch: arm64 platform: osx - license: BSD-3-Clause - license_family: BSD - size: 26861 - timestamp: 1735541088455 -- conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda - sha256: 5435cf39d039387fbdc977b0a762357ea909a7694d9528ab40f005e9208744d7 - md5: 47d31b792659ce70f470b5c82fdfb7a4 + license: Apache-2.0 + license_family: Apache + size: 754657 + timestamp: 1735628030895 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda + sha256: 0105bd108f19ea8e6a78d2d994a6d4a8db16d19a41212070d2d1d48a63c34161 + md5: a587892d3c13b6621a6091be690dbca2 depends: - libgcc-ng >=12 - - ncurses >=6.3,<7.0a0 arch: x86_64 platform: linux - license: GPL-3.0-only - license_family: GPL - size: 281456 - timestamp: 1679532220005 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8fc344f_1.conda - sha256: 4c99f7417419734e3797d45bc355e61c26520e111893b0d7087a01a7fbfbe3dd - md5: 105eb1e16bf83bfb2eb380a48032b655 + license: ISC + size: 205978 + timestamp: 1716828628198 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.20-h68df207_0.conda + sha256: 448df5ea3c5cf1af785aad46858d7a5be0522f4234a4dc9bb764f4d11ff3b981 + md5: 2e4a8f23bebdcb85ca8e5a0fbe75666a depends: - libgcc-ng >=12 - - ncurses >=6.3,<7.0a0 arch: aarch64 platform: linux - license: GPL-3.0-only - license_family: GPL - size: 294092 - timestamp: 1679532238805 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h92ec313_1.conda - sha256: a1dfa679ac3f6007362386576a704ad2d0d7a02e98f5d0b115f207a2da63e884 - md5: 8cbb776a2f641b943d413b3e19df71f4 + license: ISC + size: 177394 + timestamp: 1716828514515 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda + sha256: fade8223e1e1004367d7101dd17261003b60aa576df6d7802191f8972f7470b1 + md5: a7ce36e284c5faaf93c220dfc39e3abd depends: - - ncurses >=6.3,<7.0a0 + - __osx >=11.0 arch: arm64 platform: osx - license: GPL-3.0-only - license_family: GPL - size: 250351 - timestamp: 1679532511311 -- conda: https://conda.anaconda.org/conda-forge/linux-64/regex-2024.11.6-py312h66e93f0_0.conda - sha256: fcb5687d3ec5fff580b64b8fb649d9d65c999a91a5c3108a313ecdd2de99f06b - md5: 647770db979b43f9c9ca25dcfa7dc4e4 + license: ISC + size: 164972 + timestamp: 1716828607917 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.48.0-hee588c1_1.conda + sha256: 22853d289ef6ec8a5b20f1aa261895b06525439990d3b139f8bfd0b5c5e32a3a + md5: 3fa05c528d8a1e2a67bbf1e36f22d3bc depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 + - libzlib >=1.3.1,<2.0a0 arch: x86_64 platform: linux - license: Python-2.0 - license_family: PSF - size: 402821 - timestamp: 1730952378415 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/regex-2024.11.6-py312hb2c0f52_0.conda - sha256: ec2c416860de29224e447e2031f8686a05476759c17da1f32f61d4307e540ec8 - md5: fa8b589107567f532fa1380e66f91776 + license: Unlicense + size: 878223 + timestamp: 1737564987837 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.48.0-h5eb1b54_1.conda + sha256: 81dd9bf66c7f1d9064e007e2c787133100c406e7ca2de61dba9fb7b87372f255 + md5: 4f3a61fe206f20b27c385ee608bcdfda depends: - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 + - libzlib >=1.3.1,<2.0a0 arch: aarch64 platform: linux - license: Python-2.0 - license_family: PSF - size: 398947 - timestamp: 1730952477463 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/regex-2024.11.6-py312hea69d52_0.conda - sha256: dcdec32f2c7dd37986baa692bedf9db126ad34e92e5e9b64f707cba3d04d2525 - md5: e73cda1f18846b608284bd784f061eac + license: Unlicense + size: 1044879 + timestamp: 1737565049785 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.48.0-h3f77e49_1.conda + sha256: 17c06940cc2a13fd6a17effabd6881b1477db38b2cd3ee2571092d293d3fdd75 + md5: 4c55169502ecddf8077973a987d08f08 depends: - __osx >=11.0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 + - libzlib >=1.3.1,<2.0a0 arch: arm64 platform: osx - license: Python-2.0 - license_family: PSF - size: 366374 - timestamp: 1730952427552 -- conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda - sha256: d701ca1136197aa121bbbe0e8c18db6b5c94acbd041c2b43c70e5ae104e1d8ad - md5: a9b9368f3701a417eac9edbcae7cb737 - depends: - - certifi >=2017.4.17 - - charset-normalizer >=2,<4 - - idna >=2.5,<4 - - python >=3.9 - - urllib3 >=1.21.1,<3 - constrains: - - chardet >=3.0.2,<6 - license: Apache-2.0 - license_family: APACHE - size: 58723 - timestamp: 1733217126197 -- conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_1.conda - sha256: 06a760c5ae572e72e865d5a87e9fe3cc171e1a9c996e63daf3db52ff1a0b4457 - md5: 7aed65d4ff222bfb7335997aa40b7da5 - depends: - - markdown-it-py >=2.2.0 - - pygments >=2.13.0,<3.0.0 - - python >=3.9 - - typing_extensions >=4.0.0,<5.0.0 - license: MIT - license_family: MIT - size: 185646 - timestamp: 1733342347277 -- conda: https://conda.anaconda.org/conda-forge/noarch/rich-toolkit-0.11.3-pyh29332c3_0.conda - sha256: e558f8c254a9ff9164d069110da162fc79497d70c60f2c09a5d3d0d7101c5628 - md5: 4ba15ae9388b67d09782798347481f69 + license: Unlicense + size: 852831 + timestamp: 1737564996616 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-hc0a3c3a_1.conda + sha256: 4661af0eb9bdcbb5fb33e5d0023b001ad4be828fccdcc56500059d56f9869462 + md5: 234a5554c53625688d51062645337328 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 -- conda: https://conda.anaconda.org/conda-forge/linux-64/s2n-1.5.11-h072c03f_0.conda - sha256: cfdd98c8f9a1e5b6f9abce5dac6d590cc9fe541a08466c9e4a26f90e00b569e3 - md5: 5e8060d52f676a40edef0006a75c718f + - libgcc 14.2.0 h77fa898_1 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 3893695 + timestamp: 1729027746910 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_1.conda + sha256: 519556d2c93f1b487091ce046d62e762286177f4a670ec10e16005177d0bcab3 + md5: 37f489acd39e22b623d2d1e5ac6d195c depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - openssl >=3.4.0,<4.0a0 + - libgcc 14.2.0 he277a41_1 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 3816794 + timestamp: 1729089463404 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_1.conda + sha256: 25bb30b827d4f6d6f0522cc0579e431695503822f144043b93c50237017fffd8 + md5: 8371ac6457591af2cf6159439c1fd051 + depends: + - libstdcxx 14.2.0 hc0a3c3a_1 arch: x86_64 platform: linux - license: Apache-2.0 - license_family: Apache - size: 356213 - timestamp: 1737146304079 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/s2n-1.5.11-h3caee7a_0.conda - sha256: 5a7ae66f96be24c3b2007139b6c3701ab015b4b4eb4eccfdd07be97710243a47 - md5: 1517c0518f8a06a48a15f41d94252874 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 54105 + timestamp: 1729027780628 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_1.conda + sha256: 9f97461bd55a2745a7a0941f3502a047f15bfe7bb2952dc7fb204b3202f866fd + md5: 0e75771b8a03afae5a2c6ce71bc733f5 depends: - - libgcc >=13 - - openssl >=3.4.0,<4.0a0 + - libstdcxx 14.2.0 h3f4de04_1 arch: aarch64 platform: linux - license: Apache-2.0 - license_family: Apache - size: 352811 - timestamp: 1737146319512 -- conda: https://conda.anaconda.org/conda-forge/linux-64/safetensors-0.5.2-py312h12e396e_0.conda - sha256: 98b8dfa5eec083e0b3ace00906a7f7e748b1e2446dca17e87473f43278fcc036 - md5: 999ca9d87d2bb8b4c01e62c755b928cf + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 54133 + timestamp: 1729089498541 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda + sha256: 787eb542f055a2b3de553614b25f09eefb0a0931b0c87dbcce6efdfd92f04f18 + md5: 40b61aab5c7ba9ff276c41cfffe6b80b + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 33601 + timestamp: 1680112270483 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda + sha256: 616277b0c5f7616c2cdf36f6c316ea3f9aa5bb35f2d4476a349ab58b9b91675f + md5: 000e30b09db0b7c775b21695dff30969 + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 35720 + timestamp: 1680113474501 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda + sha256: 6ae68e0b86423ef188196fff6207ed0c8195dd84273cb5623b85aa08033a410c + md5: 5aa797f8787fe7a17d1b0821485b5adc + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: LGPL-2.1-or-later + size: 100393 + timestamp: 1702724383534 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda + sha256: 6b46c397644091b8a26a3048636d10b989b1bf266d4be5e9474bf763f828f41f + md5: b4df5d7d4b63579d081fd3a4cf99740e + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: LGPL-2.1-or-later + size: 114269 + timestamp: 1702724369203 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda + sha256: d4bfe88d7cb447768e31650f06257995601f89076080e76df55e3112d4e47dc4 + md5: edb0dca6bc32e4f4789199455a1dbeb8 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 constrains: - - __glibc >=2.17 + - zlib 1.3.1 *_2 arch: x86_64 platform: linux - license: Apache-2.0 - license_family: APACHE - size: 424409 - timestamp: 1736383159339 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/safetensors-0.5.2-py312h8cbf658_0.conda - sha256: 3e230060c1366cbaf03f4315b021dfe47f5147f3af88f17975d661c08fe15ad3 - md5: 2c77c961c4e813b1d05122ac4d803d80 + license: Zlib + license_family: Other + size: 60963 + timestamp: 1727963148474 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda + sha256: 5a2c1eeef69342e88a98d1d95bff1603727ab1ff4ee0e421522acd8813439b84 + md5: 08aad7cbe9f5a6b460d0976076b6ae64 depends: - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 constrains: - - __glibc >=2.17 + - zlib 1.3.1 *_2 arch: aarch64 platform: linux - license: Apache-2.0 - license_family: APACHE - size: 408166 - timestamp: 1736383184569 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/safetensors-0.5.2-py312hcd83bfe_0.conda - sha256: 0aeb3e654095ca0261d560d1fc05912d0e94d547a7dc435d7f4cedeba966d176 - md5: fc0383682805e293eba9b8afc9ad0931 + license: Zlib + license_family: Other + size: 66657 + timestamp: 1727963199518 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda + sha256: ce34669eadaba351cd54910743e6a2261b67009624dbc7daeeafdef93616711b + md5: 369964e85dc26bfe78f41399b366c435 depends: - __osx >=11.0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 constrains: + - zlib 1.3.1 *_2 + arch: arm64 + platform: osx + license: Zlib + license_family: Other + size: 46438 + timestamp: 1727963202283 +- conda: https://conda.anaconda.org/conda-forge/noarch/lit-19.1.7-pyhd8ed1ab_1.conda + sha256: 57b535a67f59c97302e2bbc60abcbc8d51ef0a4c7b1926049091d7da96da7b3a + md5: c5a4e2d9818fe6551dccd02243765527 + depends: + - python >=3.9 + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + size: 128565 + timestamp: 1737789576837 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda + sha256: b92a669f2059874ebdcb69041b6c243d68ffc3fb356ac1339cec44aeb27245d7 + md5: c4d54bfd3817313ce758aa76283b118d + depends: - __osx >=11.0 + constrains: + - openmp 19.1.7|19.1.7.* arch: arm64 platform: osx - license: Apache-2.0 + license: Apache-2.0 WITH LLVM-exception license_family: APACHE - size: 378060 - timestamp: 1736383410115 -- conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda - sha256: 0557c090913aa63cdbe821dbdfa038a321b488e22bc80196c4b3b1aace4914ef - md5: 7c3c2a0f3ebdea2bbc35538d162b43bf + size: 280830 + timestamp: 1736986295869 +- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020700-release.conda + noarch: python + sha256: 0c5086da2c8515aae71eb8b4c0b7805411c39d89a141fba0c48071d06352ae58 + md5: 8a119d75ab58c7869a319618c1bd0629 depends: - - python >=3.9 + - max-core ==25.1.0.dev2025020700 release + - max-python ==25.1.0.dev2025020700 release + - mojo-jupyter ==25.1.0.dev2025020700 release + - mblack ==25.1.0.dev2025020700 release + license: LicenseRef-Modular-Proprietary + size: 9901 + timestamp: 1738887556307 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025020700-release.conda + sha256: 0a2843fb9b523381166040e5f9196d555a8173d20e9facf63668ac4c3c3bd7e5 + md5: bcd3f009a29988347468e74c40230aa0 + depends: + - mblack ==25.1.0.dev2025020700 release + license: LicenseRef-Modular-Proprietary + size: 244772443 + timestamp: 1738887618224 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025020700-release.conda + sha256: e6a390b2417ee1da36047c75ce78d80cd076d03eae3ebf44db45cf6339f13310 + md5: 8b535a200a237518b5255359b884dd1c + depends: + - mblack ==25.1.0.dev2025020700 release + license: LicenseRef-Modular-Proprietary + size: 247279800 + timestamp: 1738887556307 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025020700-release.conda + sha256: f2fd1544fd907bcc8529dd32ec5424187892397745e4898368e956ac05c48e02 + md5: c0cbf1c622073adc4c1e002559ee4984 + depends: + - mblack ==25.1.0.dev2025020700 release + license: LicenseRef-Modular-Proprietary + size: 209654994 + timestamp: 1738888179079 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025020700-release.conda + noarch: python + sha256: 23e51aa18d098b77a33de9b223e858ceb24dca4883dec954036d1d3cb5b3c7f2 + md5: d7bfb71fa8c8936ac46cd65cdbaceed6 + depends: + - max-core ==25.1.0.dev2025020700 release + - click >=8.0.0 + - numpy >=1.18,<2.0 + - sentencepiece >=0.2.0 + - tqdm >=4.67.1 + constrains: + - aiohttp >=3.11.12 + - fastapi >=0.114.2 + - gguf >=0.14.0 + - hf-transfer >=0.1.9 + - httpx >=0.28.1 + - huggingface_hub >=0.24.0 + - nvitop >=1.4.1 + - opentelemetry-api >=1.29.0 + - opentelemetry-exporter-otlp-proto-http >=1.27.0 + - opentelemetry-exporter-prometheus >=0.48b0 + - opentelemetry-sdk >=1.29.0,<2.0 + - pillow >=10.3.0 + - prometheus_client >=0.21.0 + - prometheus-async >=22.2.0 + - psutil >=6.1.1 + - pydantic + - pydantic-settings >=2.7.1 + - pyinstrument >=5.0.1 + - python-json-logger >=2.0.7 + - requests >=2.32.3 + - rich >=13.9.4 + - safetensors >=0.5.2 + - scipy >=1.15.1 + - sentinel >=0.3.0 + - sse-starlette >=2.1.2 + - tokenizers >=0.19.0 + - pytorch >=2.2.2,<=2.5.1 + - transformers >=4.40.1 + - uvicorn >=0.34.0 + - uvloop >=0.21.0 + license: LicenseRef-Modular-Proprietary + size: 120644157 + timestamp: 1738887618224 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025020700-release.conda + noarch: python + sha256: 1113181f7ac5ab5b19dec273f34eea07d39d9ac3713d372cde746fe7804e2692 + md5: b5cdc8249909a14ad5cc69cb7b5c30e4 + depends: + - max-core ==25.1.0.dev2025020700 release + - click >=8.0.0 + - numpy >=1.18,<2.0 + - sentencepiece >=0.2.0 + - tqdm >=4.67.1 + constrains: + - aiohttp >=3.11.12 + - fastapi >=0.114.2 + - gguf >=0.14.0 + - hf-transfer >=0.1.9 + - httpx >=0.28.1 + - huggingface_hub >=0.24.0 + - nvitop >=1.4.1 + - opentelemetry-api >=1.29.0 + - opentelemetry-exporter-otlp-proto-http >=1.27.0 + - opentelemetry-exporter-prometheus >=0.48b0 + - opentelemetry-sdk >=1.29.0,<2.0 + - pillow >=10.3.0 + - prometheus_client >=0.21.0 + - prometheus-async >=22.2.0 + - psutil >=6.1.1 + - pydantic + - pydantic-settings >=2.7.1 + - pyinstrument >=5.0.1 + - python-json-logger >=2.0.7 + - requests >=2.32.3 + - rich >=13.9.4 + - safetensors >=0.5.2 + - scipy >=1.15.1 + - sentinel >=0.3.0 + - sse-starlette >=2.1.2 + - tokenizers >=0.19.0 + - pytorch >=2.2.2,<=2.5.1 + - transformers >=4.40.1 + - uvicorn >=0.34.0 + - uvloop >=0.21.0 + license: LicenseRef-Modular-Proprietary + size: 123020201 + timestamp: 1738887556307 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025020700-release.conda + noarch: python + sha256: 847e472b44904735bbc68e1fcec6a4fe53883ad6409af4f8155b2b40772c74cc + md5: 14bf0cbc7ef6cf6f3b728780a19b14ab + depends: + - max-core ==25.1.0.dev2025020700 release + - click >=8.0.0 + - numpy >=1.18,<2.0 + - sentencepiece >=0.2.0 + - tqdm >=4.67.1 + constrains: + - aiohttp >=3.11.12 + - fastapi >=0.114.2 + - gguf >=0.14.0 + - hf-transfer >=0.1.9 + - httpx >=0.28.1 + - huggingface_hub >=0.24.0 + - nvitop >=1.4.1 + - opentelemetry-api >=1.29.0 + - opentelemetry-exporter-otlp-proto-http >=1.27.0 + - opentelemetry-exporter-prometheus >=0.48b0 + - opentelemetry-sdk >=1.29.0,<2.0 + - pillow >=10.3.0 + - prometheus_client >=0.21.0 + - prometheus-async >=22.2.0 + - psutil >=6.1.1 + - pydantic + - pydantic-settings >=2.7.1 + - pyinstrument >=5.0.1 + - python-json-logger >=2.0.7 + - requests >=2.32.3 + - rich >=13.9.4 + - safetensors >=0.5.2 + - scipy >=1.15.1 + - sentinel >=0.3.0 + - sse-starlette >=2.1.2 + - tokenizers >=0.19.0 + - pytorch >=2.2.2,<=2.5.1 + - transformers >=4.40.1 + - uvicorn >=0.34.0 + - uvloop >=0.21.0 + license: LicenseRef-Modular-Proprietary + size: 108448310 + timestamp: 1738888179079 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020700-release.conda + noarch: python + sha256: 17daf1d55dd29b1bee00b6febfb9037b863e1e70e115606174c334b5c9159f94 + md5: 3443f44398d7184cb2f05944e90fccca + depends: + - python >=3.9,<3.13 + - click >=8.0.0 + - mypy_extensions >=0.4.3 + - packaging >=22.0 + - pathspec >=0.9.0 + - platformdirs >=2 + - typing_extensions >=v4.12.2 + - python license: MIT - license_family: MIT - size: 14462 - timestamp: 1733301007770 -- conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - sha256: 41db0180680cc67c3fa76544ffd48d6a5679d96f4b71d7498a759e94edc9a2db - md5: a451d576819089b0d672f18768be0f65 + size: 130848 + timestamp: 1738887556306 +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020700-release.conda + noarch: python + sha256: 951321ffc06290d15d11f519c32aae835d8194a692c017ae8175bb98879215c0 + md5: 4a2ebf4276afe6a0b569f4550b5ecedf + depends: + - max-core ==25.1.0.dev2025020700 release + - python >=3.9,<3.13 + - jupyter_client >=8.6.2,<8.7 + - python + license: LicenseRef-Modular-Proprietary + size: 22987 + timestamp: 1738887556307 +- conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda + sha256: 1895f47b7d68581a6facde5cb13ab8c2764c2e53a76bd746f8f98910dc4e08fe + md5: 29097e7ea634a45cc5386b95cac6568f depends: - python >=3.9 license: MIT license_family: MIT - size: 16385 - timestamp: 1733381032766 -- conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-h8bd8927_1.conda - sha256: ec91e86eeb2c6bbf09d51351b851e945185d70661d2ada67204c9a6419d282d3 - md5: 3b3e64af585eadfb52bb90b553db5edf + size: 10854 + timestamp: 1733230986902 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda + sha256: 3fde293232fa3fca98635e1167de6b7c7fda83caf24b9d6c91ec9eefb4f4d586 + md5: 47e340acb35de30501a76c7c799c41d7 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - - libstdcxx >=13 arch: x86_64 platform: linux - license: BSD-3-Clause - license_family: BSD - size: 42739 - timestamp: 1733501881851 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-hd4fb6f5_1.conda - sha256: c4a07ae5def8d55128f25a567a296ef9d7bf99a3bc79d46bd5160c076a5f50af - md5: 2fcc6cd1e5550deb509073fd2e6693e1 + license: X11 AND BSD-3-Clause + size: 891641 + timestamp: 1738195959188 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-ha32ae93_3.conda + sha256: 91cfb655a68b0353b2833521dc919188db3d8a7f4c64bea2c6a7557b24747468 + md5: 182afabe009dc78d8b73100255ee6868 depends: - libgcc >=13 - - libstdcxx >=13 arch: aarch64 platform: linux - license: BSD-3-Clause - license_family: BSD - size: 43032 - timestamp: 1733501964775 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-h98b9ce2_1.conda - sha256: 4242f95b215127a006eb664fe26ed5a82df87e90cbdbc7ce7ff4971f0720997f - md5: ded86dee325290da2967a3fea3800eb5 + license: X11 AND BSD-3-Clause + size: 926034 + timestamp: 1738196018799 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda + sha256: 2827ada40e8d9ca69a153a45f7fd14f32b2ead7045d3bbb5d10964898fe65733 + md5: 068d497125e4bf8a66bf707254fff5ae depends: - __osx >=11.0 - - libcxx >=18 arch: arm64 platform: osx - license: BSD-3-Clause - license_family: BSD - size: 35857 - timestamp: 1733502172664 -- conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - sha256: c2248418c310bdd1719b186796ae50a8a77ce555228b6acd32768e2543a15012 - md5: bf7a226e58dfb8346c70df36065d86c9 - depends: - - python >=3.9 - license: Apache-2.0 - license_family: Apache - size: 15019 - timestamp: 1733244175724 -- conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.2.1-pyhd8ed1ab_0.conda - sha256: 3c6a476e7afb702d841e23c61a0c4cc491929d2e39376d329e67e94c40a236cc - md5: c1ef6bc13dd2caa4b406fb3cb06c2791 - depends: - - anyio >=4.7.0 - - python >=3.9 - - starlette >=0.41.3 - license: BSD-3-Clause - license_family: BSD - size: 15324 - timestamp: 1735126414893 -- conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.45.3-pyha770c72_0.conda - sha256: be48c99e6fb8e12ebee09e6fbb4d78a170b614cdaa19ab791a8f5b6caf09919a - md5: 9b3a68bc7aed7949ef86f950993261f4 - depends: - - anyio >=3.6.2,<5 - - python >=3.9 - - typing_extensions >=3.10.0 - license: BSD-3-Clause - license_family: BSD - size: 57934 - timestamp: 1737824077668 -- conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda - sha256: e0569c9caa68bf476bead1bed3d79650bb080b532c64a4af7d8ca286c08dea4e - md5: d453b98d9c83e71da0741bb0ff4d76bc + license: X11 AND BSD-3-Clause + size: 797030 + timestamp: 1738196177597 +- conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda + sha256: fe3459c75cf84dcef6ef14efcc4adb0ade66038ddd27cadb894f34f4797687d8 + md5: d8285bea2a350f63fab23bf460221f3f depends: + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 - libgcc-ng >=12 - - libzlib >=1.2.13,<2.0.0a0 + - liblapack >=3.9.0,<4.0a0 + - libstdcxx-ng >=12 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - numpy-base <0a0 arch: x86_64 platform: linux - license: TCL + license: BSD-3-Clause license_family: BSD - size: 3318875 - timestamp: 1699202167581 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda - sha256: 7fa27cc512d3a783f38bd16bbbffc008807372499d5b65d089a8e43bde9db267 - md5: f75105e0585851f818e0009dd1dde4dc + size: 7484186 + timestamp: 1707225809722 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda + sha256: 23767677a7790bee5457d5e75ebd508b9a31c5354216f4310dd1acfca3f7a6f9 + md5: 9cebf5a06cb87d4569cd68df887af476 depends: + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 - libgcc-ng >=12 - - libzlib >=1.2.13,<2.0.0a0 + - liblapack >=3.9.0,<4.0a0 + - libstdcxx-ng >=12 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - numpy-base <0a0 arch: aarch64 platform: linux - license: TCL + license: BSD-3-Clause license_family: BSD - size: 3351802 - timestamp: 1695506242997 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda - sha256: 72457ad031b4c048e5891f3f6cb27a53cb479db68a52d965f796910e71a403a8 - md5: b50a57ba89c32b62428b71a875291c9b + size: 6614296 + timestamp: 1707225994762 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda + sha256: c8841d6d6f61fd70ca80682efbab6bdb8606dc77c68d8acabfbd7c222054f518 + md5: d83fc83d589e2625a3451c9a7e21047c depends: - - libzlib >=1.2.13,<2.0.0a0 + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - libcxx >=16 + - liblapack >=3.9.0,<4.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - numpy-base <0a0 arch: arm64 platform: osx - license: TCL + license: BSD-3-Clause license_family: BSD - size: 3145523 - timestamp: 1699202432999 -- conda: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.21.0-py312h8360d73_0.conda - sha256: 4f504a5e9d77c6d88a8f735c4319429d8bf40b742384f908a2efe0a09acc3cc5 - md5: f953aa733207f3d37acf4a3efbedba89 + size: 6073136 + timestamp: 1707226249608 +- conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.0-h7b32b05_1.conda + sha256: f62f6bca4a33ca5109b6d571b052a394d836956d21b25b7ffd03376abf7a481f + md5: 4ce6875f75469b2757a65e10a5d05e31 depends: - __glibc >=2.17,<3.0.a0 - - huggingface_hub >=0.16.4,<1.0 + - ca-certificates - libgcc >=13 - - libstdcxx >=13 - - openssl >=3.4.0,<4.0a0 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - constrains: - - __glibc >=2.17 arch: x86_64 platform: linux license: Apache-2.0 - license_family: APACHE - size: 2258007 - timestamp: 1732734202127 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.21.0-py312ha0d6ea1_0.conda - sha256: ef0f4d4e2c798b1821187ea0ba4c86484e48abaa0e9a19fe68030fa7ff5dde84 - md5: 077f48c9e0c08a30d842e15c51df4143 + license_family: Apache + size: 2937158 + timestamp: 1736086387286 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.0-hd08dc88_1.conda + sha256: 60d34454b861501d7355f25a7b39fdb5de8d56fca49b5bcbe8b8142b7d82dce4 + md5: e21c4767e783a58c373fdb99de6211bf depends: - - huggingface_hub >=0.16.4,<1.0 + - ca-certificates - libgcc >=13 - - libstdcxx >=13 - - openssl >=3.4.0,<4.0a0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - constrains: - - __glibc >=2.17 arch: aarch64 platform: linux license: Apache-2.0 - license_family: APACHE - size: 2331194 - timestamp: 1732734303196 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.21.0-py312hf3e4074_0.conda - sha256: 5d395333fcb22dc611140286c1f2ea8b3fa220a4931c583587cb612238091555 - md5: 4c732c74b485ef7ac8ec1c548dd45e8e + license_family: Apache + size: 3469279 + timestamp: 1736088141230 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.0-h81ee809_1.conda + sha256: 97772762abc70b3a537683ca9fc3ff3d6099eb64e4aba3b9c99e6fce48422d21 + md5: 22f971393637480bda8c679f374d8861 depends: - __osx >=11.0 - - huggingface_hub >=0.16.4,<1.0 - - libcxx >=18 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - constrains: - - __osx >=11.0 + - ca-certificates arch: arm64 platform: osx license: Apache-2.0 + license_family: Apache + size: 2936415 + timestamp: 1736086108693 +- conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + sha256: da157b19bcd398b9804c5c52fc000fcb8ab0525bdb9c70f95beaa0bb42f85af1 + md5: 3bfed7e6228ebf2f7b9eaa47f1b4e2aa + depends: + - python >=3.8 + license: Apache-2.0 license_family: APACHE - size: 1931389 - timestamp: 1732734727624 -- conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda - sha256: 062a3a3a37fa8615ce57929ba7e982c76f5a5810bcebd435950f6d6c4147c310 - md5: e417822cb989e80a0d2b1b576fdd1657 + size: 60164 + timestamp: 1733203368787 +- conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + sha256: 9f64009cdf5b8e529995f18e03665b03f5d07c0b17445b8badef45bde76249ee + md5: 617f15191456cc6a13db418a275435e5 + depends: + - python >=3.9 + license: MPL-2.0 + license_family: MOZILLA + size: 41075 + timestamp: 1733233471940 +- conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + sha256: bb50f6499e8bc1d1a26f17716c97984671121608dc0c3ecd34858112bce59a27 + md5: 577852c7e53901ddccc7e6a9959ddebe + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 20448 + timestamp: 1733232756001 +- conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.8-h9e4cc4f_1_cpython.conda + build_number: 1 + sha256: 3f0e0518c992d8ccfe62b189125721309836fe48a010dc424240583e157f9ff0 + md5: 7fd2fd79436d9b473812f14e86746844 depends: - __glibc >=2.17,<3.0.a0 + - bzip2 >=1.0.8,<2.0a0 + - ld_impl_linux-64 >=2.36.1 + - libexpat >=2.6.4,<3.0a0 + - libffi >=3.4,<4.0a0 - libgcc >=13 - - python >=3.12,<3.13.0a0 + - liblzma >=5.6.3,<6.0a0 + - libnsl >=2.0.1,<2.1.0a0 + - libsqlite >=3.47.0,<4.0a0 + - libuuid >=2.38.1,<3.0a0 + - libxcrypt >=4.4.36 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.4.0,<4.0a0 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + constrains: - python_abi 3.12.* *_cp312 arch: x86_64 platform: linux - license: Apache-2.0 - license_family: Apache - size: 840414 - timestamp: 1732616043734 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py312h52516f5_0.conda - sha256: 4c19a544354172b2273553267e734795a6da3c78a04c2d19f8e9e159ca3178bc - md5: e28996d9d2d44d777b7e6fb12f63715b + license: Python-2.0 + size: 31565686 + timestamp: 1733410597922 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.8-h1683364_1_cpython.conda + build_number: 1 + sha256: 85573582d5b0f79923fed0a8365d3d74d21eee9f0a5fa1b9345f191e006363ab + md5: 09ec612ea05370989eaa3d81abf0f369 depends: + - bzip2 >=1.0.8,<2.0a0 + - ld_impl_linux-aarch64 >=2.36.1 + - libexpat >=2.6.4,<3.0a0 + - libffi >=3.4,<4.0a0 - libgcc >=13 - - python >=3.12,<3.13.0a0 + - liblzma >=5.6.3,<6.0a0 + - libnsl >=2.0.1,<2.1.0a0 + - libsqlite >=3.47.0,<4.0a0 + - libuuid >=2.38.1,<3.0a0 + - libxcrypt >=4.4.36 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.4.0,<4.0a0 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + constrains: - python_abi 3.12.* *_cp312 arch: aarch64 platform: linux - license: Apache-2.0 - license_family: Apache - size: 841662 - timestamp: 1732616934923 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda - sha256: 964a2705a36c50040c967b18b45b9cc8de3c2aff4af546979a574e0b38e58e39 - md5: fb0605888a475d6a380ae1d1a819d976 + license: Python-2.0 + size: 13760816 + timestamp: 1733407890896 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.8-hc22306f_1_cpython.conda + build_number: 1 + sha256: 7586a711b1b08a9df8864e26efdc06980bdfb0e18d5ac4651d0fee30a8d3e3a0 + md5: 54ca5b5d92ef3a3ba61e195ee882a518 depends: - __osx >=11.0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython + - bzip2 >=1.0.8,<2.0a0 + - libexpat >=2.6.4,<3.0a0 + - libffi >=3.4,<4.0a0 + - liblzma >=5.6.3,<6.0a0 + - libsqlite >=3.47.0,<4.0a0 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.4.0,<4.0a0 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + constrains: - python_abi 3.12.* *_cp312 arch: arm64 platform: osx - license: Apache-2.0 - license_family: Apache - size: 842549 - timestamp: 1732616081362 -- conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda - sha256: 11e2c85468ae9902d24a27137b6b39b4a78099806e551d390e394a8c34b48e40 - md5: 9efbfdc37242619130ea42b1cc4ed861 - depends: - - colorama - - python >=3.9 - license: MPL-2.0 or MIT - size: 89498 - timestamp: 1735661472632 -- conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - sha256: f39a5620c6e8e9e98357507262a7869de2ae8cc07da8b7f84e517c9fd6c2b959 - md5: 019a7385be9af33791c989871317e1ed + license: Python-2.0 + size: 12998673 + timestamp: 1733408900971 +- conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + sha256: a50052536f1ef8516ed11a844f9413661829aa083304dc624c5925298d078d79 + md5: 5ba79d7c71f03c678c8ead841f347d6e depends: - python >=3.9 - license: BSD-3-Clause - license_family: BSD - size: 110051 - timestamp: 1733367480074 -- conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.48.2-pyhd8ed1ab_0.conda - sha256: 67b19c3d6befcc538df3e6d8dc7c4a2b6c7e35b7c1666da790cea4166f1b768a - md5: 717807c559e9a30fea4850ab8881adcb - depends: - - datasets !=2.5.0 - - filelock - - huggingface_hub >=0.23.0,<1.0 - - numpy >=1.17 - - packaging >=20.0 - - python >=3.9 - - pyyaml >=5.1 - - regex !=2019.12.17 - - requests - - safetensors >=0.4.1 - - tokenizers >=0.21,<0.22 - - tqdm >=4.27 + - six >=1.5 license: Apache-2.0 license_family: APACHE - size: 3416794 - timestamp: 1738278628376 -- conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda - sha256: ef695490e895c2ad552c77ec497b899b09fd4ad4ab07edcf5649f5994cf92a35 - md5: 170a0398946d8f5b454e592672b6fc20 - depends: - - python >=3.9 - - typer-slim-standard 0.15.1 hd8ed1ab_0 - license: MIT - license_family: MIT - size: 56175 - timestamp: 1733408582623 -- conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda - sha256: d4965516f35e0805199de6596c4ac76c4ad3d6b012be35e532102f9e53ecb860 - md5: 0218b16f5a1dd569e575a7a6415489db - depends: - - click >=8.0.0 - - python >=3.9 - - typing_extensions >=3.7.4.3 + size: 222505 + timestamp: 1733215763718 +- conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda + build_number: 5 + sha256: d10e93d759931ffb6372b45d65ff34d95c6000c61a07e298d162a3bc2accebb0 + md5: 0424ae29b104430108f5218a66db7260 constrains: - - rich >=10.11.0 - - typer >=0.15.1,<0.15.2.0a0 - - shellingham >=1.3.0 - license: MIT - license_family: MIT - size: 43592 - timestamp: 1733408569554 -- conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda - sha256: f31c56fe98315da8b9ce848256c17e0b9f87896b41a6ccf0c9cc74644dcef20f - md5: 4e603c43bfdfc7b533be087c3e070cc9 - depends: - - rich - - shellingham - - typer-slim 0.15.1 pyhd8ed1ab_0 - license: MIT - license_family: MIT - size: 49531 - timestamp: 1733408570063 -- conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda - noarch: python - sha256: c8e9c1c467b5f960b627d7adc1c65fece8e929a3de89967e91ef0f726422fd32 - md5: b6a408c64b78ec7b779a3e5c7a902433 - depends: - - typing_extensions 4.12.2 pyha770c72_1 - license: PSF-2.0 - license_family: PSF - size: 10075 - timestamp: 1733188758872 -- conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - sha256: 337be7af5af8b2817f115b3b68870208b30c31d3439bec07bfb2d8f4823e3568 - md5: d17f13df8b65464ca316cbc000a3cb64 - depends: - - python >=3.9 - license: PSF-2.0 - license_family: PSF - size: 39637 - timestamp: 1733188758212 -- conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda - sha256: c4b1ae8a2931fe9b274c44af29c5475a85b37693999f8c792dad0f8c6734b1de - md5: dbcace4706afdfb7eb891f7b37d07c04 - license: LicenseRef-Public-Domain - size: 122921 - timestamp: 1737119101255 -- conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda - sha256: 114919ffa80c328127dab9c8e7a38f9d563c617691fb81fccb11c1e86763727e - md5: 32674f8dbfb7b26410ed580dd3c10a29 - depends: - - brotli-python >=1.0.9 - - h2 >=4,<5 - - pysocks >=1.5.6,<2.0,!=1.5.7 - - python >=3.9 - - zstandard >=0.18.0 - license: MIT - license_family: MIT - size: 100102 - timestamp: 1734859520452 -- conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.34.0-pyh31011fe_0.conda - sha256: 55c160b0cf9274e2b98bc0f7fcce548bffa8d788bc86aa02801877457040f6fa - md5: 5d448feee86e4740498ec8f8eb40e052 - depends: - - __unix - - click >=7.0 - - h11 >=0.8 - - python >=3.9 - - typing_extensions >=4.0 + - python 3.12.* *_cpython + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD - size: 48643 - timestamp: 1734293057914 -- conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.34.0-h31011fe_0.conda - sha256: 87e1531e175e75122f9f37608eb953af4c977465ab0ae11283cc01fef954e4ec - md5: 32a94143a7f65d76d2d5da37dcb4ed79 - depends: - - __unix - - httptools >=0.6.3 - - python-dotenv >=0.13 - - pyyaml >=5.1 - - uvicorn 0.34.0 pyh31011fe_0 - - uvloop >=0.14.0,!=0.15.0,!=0.15.1 - - watchfiles >=0.13 - - websockets >=10.4 + size: 6238 + timestamp: 1723823388266 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.12-5_cp312.conda + build_number: 5 + sha256: 5ccdad9981753cc4a2d126e356673a21c0cd5b34e209cb8d476a3947d4ad9b39 + md5: 62b20f305498284a07dc6c45fd0e5c87 + constrains: + - python 3.12.* *_cpython + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 6329 + timestamp: 1723823366253 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-5_cp312.conda + build_number: 5 + sha256: 49d624e4b809c799d2bf257b22c23cf3fc4460f5570d9a58e7ad86350aeaa1f4 + md5: b76f9b1c862128e56ac7aa8cd2333de9 + constrains: + - python 3.12.* *_cpython + arch: arm64 + platform: osx license: BSD-3-Clause license_family: BSD - size: 7203 - timestamp: 1734293058849 -- conda: https://conda.anaconda.org/conda-forge/linux-64/uvloop-0.21.0-py312h66e93f0_1.conda - sha256: 9337a80165fcf70b06b9d6ba920dad702260ca966419ae77560a15540e41ab72 - md5: 998e481e17c1b6a74572e73b06f2df08 + size: 6278 + timestamp: 1723823099686 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.1-py312hbf22597_0.conda + sha256: 90ec0da0317d3d76990a40c61e1709ef859dd3d8c63838bad2814f46a63c8a2e + md5: 7cec8d0dac15a2d9fea8e49879aa779d depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - - libuv >=1.49.2,<2.0a0 + - libsodium >=1.0.20,<1.0.21.0a0 + - libstdcxx >=13 - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 + - zeromq >=4.3.5,<4.4.0a0 arch: x86_64 platform: linux - license: MIT OR Apache-2.0 - size: 701355 - timestamp: 1730214506716 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/uvloop-0.21.0-py312hb2c0f52_1.conda - sha256: 807eede6698bd00a1d739a3e19ee6ae6a03a66d2ddd2ef150f2dfd198c3b0292 - md5: d83e107ba16c77aba2feec47b7b666a4 + license: BSD-3-Clause + license_family: BSD + size: 382698 + timestamp: 1738271121975 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyzmq-26.2.1-py312h2427ae1_0.conda + sha256: 9558f9330093e5c21b7c04e2e212e19b9b88ad9c808315f12c0765b244018a09 + md5: 0520da8de6870d8ff63e818e927d1524 depends: - libgcc >=13 - - libuv >=1.49.2,<2.0a0 + - libsodium >=1.0.20,<1.0.21.0a0 + - libstdcxx >=13 - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 + - zeromq >=4.3.5,<4.4.0a0 arch: aarch64 platform: linux - license: MIT OR Apache-2.0 - size: 655266 - timestamp: 1730214606664 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/uvloop-0.21.0-py312h0bf5046_1.conda - sha256: b1efa77aa4871d7bb09c8dd297fa9bd9070ba7f0f95f2d12ae9cdd31ce8b6b22 - md5: 4f5110253ba80ebf27e55c4ab333880a + license: BSD-3-Clause + license_family: BSD + size: 375156 + timestamp: 1738273130727 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.1-py312hf4875e0_0.conda + sha256: 70d398b334668dc597d33e27847ede1b0829a639b9c91ee845355e52c86c2293 + md5: bfbefdb140b546a80827ff7c9d5ac7b8 depends: - __osx >=11.0 - - libuv >=1.49.2,<2.0a0 + - libcxx >=18 + - libsodium >=1.0.20,<1.0.21.0a0 - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 + - zeromq >=4.3.5,<4.4.0a0 arch: arm64 platform: osx - license: MIT OR Apache-2.0 - size: 544097 - timestamp: 1730214653726 -- conda: https://conda.anaconda.org/conda-forge/linux-64/watchfiles-1.0.4-py312h12e396e_0.conda - sha256: b728f525dcae2c10524f9942255346eba62aee9c820ff269d7dd4f7caffb7ffb - md5: df87129c4cb7afc4a3cbad71a1b9e223 + license: BSD-3-Clause + license_family: BSD + size: 364649 + timestamp: 1738271263898 +- conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda + sha256: 5435cf39d039387fbdc977b0a762357ea909a7694d9528ab40f005e9208744d7 + md5: 47d31b792659ce70f470b5c82fdfb7a4 depends: - - __glibc >=2.17,<3.0.a0 - - anyio >=3.0.0 - - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - constrains: - - __glibc >=2.17 + - libgcc-ng >=12 + - ncurses >=6.3,<7.0a0 arch: x86_64 platform: linux - license: MIT - license_family: MIT - size: 410192 - timestamp: 1736550568524 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/watchfiles-1.0.4-py312h8cbf658_0.conda - sha256: 45193910f6bafc287c784442d173745161b18f96223f0f990a9a744fda753787 - md5: ed958a27e610c31de625e167d4c11a04 + license: GPL-3.0-only + license_family: GPL + size: 281456 + timestamp: 1679532220005 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8fc344f_1.conda + sha256: 4c99f7417419734e3797d45bc355e61c26520e111893b0d7087a01a7fbfbe3dd + md5: 105eb1e16bf83bfb2eb380a48032b655 depends: - - anyio >=3.0.0 - - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - constrains: - - __glibc >=2.17 + - libgcc-ng >=12 + - ncurses >=6.3,<7.0a0 arch: aarch64 platform: linux - license: MIT - license_family: MIT - size: 403791 - timestamp: 1736550743174 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/watchfiles-1.0.4-py312hcd83bfe_0.conda - sha256: 84122e3712f2263e12c9d2be75d122eaf2d269801183df4b73aadcb670943b17 - md5: 946eb0208d09b811a671fad9b2831f4e - depends: - - __osx >=11.0 - - anyio >=3.0.0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - constrains: - - __osx >=11.0 + license: GPL-3.0-only + license_family: GPL + size: 294092 + timestamp: 1679532238805 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h92ec313_1.conda + sha256: a1dfa679ac3f6007362386576a704ad2d0d7a02e98f5d0b115f207a2da63e884 + md5: 8cbb776a2f641b943d413b3e19df71f4 + depends: + - ncurses >=6.3,<7.0a0 arch: arm64 platform: osx - license: MIT - license_family: MIT - size: 363822 - timestamp: 1736550859472 -- conda: https://conda.anaconda.org/conda-forge/linux-64/websockets-14.2-py312h66e93f0_0.conda - sha256: 52092f1f811fddcbb63e4e8e1c726f32a0a1ea14c36b70982fc2021a3c010e48 - md5: 279166352304d5d4b63429e9c86fa3dc + license: GPL-3.0-only + license_family: GPL + size: 250351 + timestamp: 1679532511311 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-0.2.0-hc8f76dd_10.conda + sha256: a1bde55ceb9dc5bd7879283d0f594a6ce65c07fda3de76230c65a4a5df47858a + md5: 480e915dfc6c592615ef6f217e615aa6 depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - python >=3.12,<3.13.0a0 + - libsentencepiece 0.2.0 h8e10757_10 - python_abi 3.12.* *_cp312 + - sentencepiece-python 0.2.0 py312hb6b8a2b_10 + - sentencepiece-spm 0.2.0 h8e10757_10 arch: x86_64 platform: linux - license: BSD-3-Clause - license_family: BSD - size: 242949 - timestamp: 1737358315063 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/websockets-14.2-py312hb2c0f52_0.conda - sha256: 5b8273df10b85a667b4fe71788a12c33a9626723650e28f582fd56c87bad0471 - md5: d7535d5d2f8d49d625071f305d6112a1 + license: Apache-2.0 + license_family: Apache + size: 19470 + timestamp: 1735628377167 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-0.2.0-h6c1b121_10.conda + sha256: 846d885a560fbb4375b645e7caf2f756ef88bbeb441b670375da0090aaa427fb + md5: 33a89eb1dedae8eb7222b0a89856f337 depends: - - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython + - libsentencepiece 0.2.0 h6164ad9_10 - python_abi 3.12.* *_cp312 + - sentencepiece-python 0.2.0 py312h197ff68_10 + - sentencepiece-spm 0.2.0 h6164ad9_10 arch: aarch64 platform: linux - license: BSD-3-Clause - license_family: BSD - size: 244675 - timestamp: 1737358397158 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/websockets-14.2-py312hea69d52_0.conda - sha256: e5ad8c983a1669d06a6648990c0491d5469143f02003c8fd2ae7d066d7d4b086 - md5: 8757561d3ea10ba178fb7fb888f33e3a + license: Apache-2.0 + license_family: Apache + size: 19686 + timestamp: 1735628718991 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-0.2.0-h22a84ea_10.conda + sha256: 526c934b897131bd274697649c3b1c492a7d66c03368885a954112468b3c1424 + md5: 346abe448f69949a65473b336856860a depends: - - __osx >=11.0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython + - libsentencepiece 0.2.0 he13a0af_10 - python_abi 3.12.* *_cp312 + - sentencepiece-python 0.2.0 py312h155166a_10 + - sentencepiece-spm 0.2.0 he13a0af_10 arch: arm64 platform: osx - license: BSD-3-Clause - license_family: BSD - size: 246269 - timestamp: 1737358485546 -- conda: https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.17.2-py312h66e93f0_0.conda - sha256: ed3a1700ecc5d38c7e7dc7d2802df1bc1da6ba3d6f6017448b8ded0affb4ae00 - md5: 669e63af87710f8d52fdec9d4d63b404 + license: Apache-2.0 + license_family: Apache + size: 19759 + timestamp: 1735628533490 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-python-0.2.0-py312hb6b8a2b_10.conda + sha256: 37df7fb659564587b950b39c936769d9b5095afb7bc223f42d6248a5540c6567 + md5: 7908b7b977e2e123a5f6a29906f2ce44 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 h8e10757_10 + - libstdcxx >=13 - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 arch: x86_64 platform: linux - license: BSD-2-Clause - license_family: BSD - size: 63590 - timestamp: 1736869574299 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/wrapt-1.17.2-py312hb2c0f52_0.conda - sha256: cc28914462a21b2f64d9b763a9733bfcbc811dd2975d0d2e6e429e35f5b6d59c - md5: 8a5c6e3f809bae085be369b62dc5d06a + license: Apache-2.0 + license_family: Apache + size: 2411182 + timestamp: 1735628106455 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-python-0.2.0-py312h197ff68_10.conda + sha256: a7c2c19cc397c7632e2630af49ddcff128f145c93ea493421e6f42bfa5e1d30b + md5: 5642e4545a3cf03e446fb3b3e9fd723b depends: - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 h6164ad9_10 + - libstdcxx >=13 - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 arch: aarch64 platform: linux - license: BSD-2-Clause - license_family: BSD - size: 63967 - timestamp: 1736869675870 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/wrapt-1.17.2-py312hea69d52_0.conda - sha256: 6a3e68b57de29802e8703d1791dcacb7613bfdc17bbb087c6b2ea2796e6893ef - md5: e49608c832fcf438f70cbcae09c3adc5 + license: Apache-2.0 + license_family: Apache + size: 2458076 + timestamp: 1735628298246 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-python-0.2.0-py312h155166a_10.conda + sha256: 2d59614aeafbf54cc718805798c11c2d0a3b4b8d947d1bd81c87c484b4883077 + md5: 6e11367ef670296fce01fc9860be944d depends: - __osx >=11.0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 he13a0af_10 - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 arch: arm64 platform: osx - license: BSD-2-Clause - license_family: BSD - size: 61198 - timestamp: 1736869673767 -- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-hb9d3cd8_0.conda - sha256: ed10c9283974d311855ae08a16dfd7e56241fac632aec3b92e3cfe73cff31038 - md5: f6ebe2cb3f82ba6c057dde5d9debe4f7 + license: Apache-2.0 + license_family: Apache + size: 2433303 + timestamp: 1735628083958 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-spm-0.2.0-h8e10757_10.conda + sha256: 6b55e1121545357d63c3aa0766931720e8aafc52d88641ba7631c8cbaa68c52f + md5: e977b7be5ac26c55825e121e00b90493 depends: - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 h8e10757_10 + - libstdcxx >=13 arch: x86_64 platform: linux - license: MIT - license_family: MIT - size: 14780 - timestamp: 1734229004433 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxau-1.0.12-h86ecc28_0.conda - sha256: 7829a0019b99ba462aece7592d2d7f42e12d12ccd3b9614e529de6ddba453685 - md5: d5397424399a66d33c80b1f2345a36a6 + license: Apache-2.0 + license_family: Apache + size: 89076 + timestamp: 1735628334078 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-spm-0.2.0-h6164ad9_10.conda + sha256: b98fc1028a8e8fbf309af383f9c837290a14e076e6c5533dc251694ea33ffc6e + md5: a4b75936c01dca3f089f02752b7ee325 depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 h6164ad9_10 + - libstdcxx >=13 arch: aarch64 platform: linux - license: MIT - license_family: MIT - size: 15873 - timestamp: 1734230458294 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxau-1.0.12-h5505292_0.conda - sha256: f33e6f013fc36ebc200f09ddead83468544cb5c353a3b50499b07b8c34e28a8d - md5: 50901e0764b7701d8ed7343496f4f301 + license: Apache-2.0 + license_family: Apache + size: 85983 + timestamp: 1735628693813 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-spm-0.2.0-he13a0af_10.conda + sha256: b760aeee02e2afbfcce3f559e8a227aa4c94139157b1702fdfb41a057dad0e52 + md5: 9b7300f23cd330da8664cd072c162e5f depends: - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 he13a0af_10 arch: arm64 platform: osx - license: MIT - license_family: MIT - size: 13593 - timestamp: 1734229104321 -- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb9d3cd8_0.conda - sha256: 6b250f3e59db07c2514057944a3ea2044d6a8cdde8a47b6497c254520fade1ee - md5: 8035c64cb77ed555e3f150b7b3972480 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - arch: x86_64 - platform: linux - license: MIT - license_family: MIT - size: 19901 - timestamp: 1727794976192 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxdmcp-1.1.5-h57736b2_0.conda - sha256: efcc150da5926cf244f757b8376d96a4db78bc15b8d90ca9f56ac6e75755971f - md5: 25a5a7b797fe6e084e04ffe2db02fc62 - depends: - - libgcc >=13 - arch: aarch64 - platform: linux - license: MIT - license_family: MIT - size: 20615 - timestamp: 1727796660574 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxdmcp-1.1.5-hd74edd7_0.conda - sha256: 9939a166d780700d81023546759102b33fdc2c5f11ef09f5f66c77210fd334c8 - md5: 77c447f48cab5d3a15ac224edb86a968 + license: Apache-2.0 + license_family: Apache + size: 83826 + timestamp: 1735628514667 +- conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + sha256: 41db0180680cc67c3fa76544ffd48d6a5679d96f4b71d7498a759e94edc9a2db + md5: a451d576819089b0d672f18768be0f65 depends: - - __osx >=11.0 - arch: arm64 - platform: osx + - python >=3.9 license: MIT license_family: MIT - size: 18487 - timestamp: 1727795205022 -- conda: https://conda.anaconda.org/conda-forge/linux-64/xxhash-0.8.2-hd590300_0.conda - sha256: 6fe74a8fd84ab0dc25e4dc3e0c22388dd8accb212897a208b14fe5d4fbb8fc2f - md5: f08fb5c89edfc4aadee1c81d4cfb1fa1 + size: 16385 + timestamp: 1733381032766 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda + sha256: e0569c9caa68bf476bead1bed3d79650bb080b532c64a4af7d8ca286c08dea4e + md5: d453b98d9c83e71da0741bb0ff4d76bc depends: - libgcc-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 arch: x86_64 platform: linux - license: BSD-2-Clause + license: TCL license_family: BSD - size: 97691 - timestamp: 1689951608120 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xxhash-0.8.2-h31becfc_0.conda - sha256: 4c526aed70b579d80e5c20d32130b6bc8bde59b3250d43c2b5269755f4da8a9b - md5: bb9faf6857108a9f62ebb4dab6ef05da + size: 3318875 + timestamp: 1699202167581 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda + sha256: 7fa27cc512d3a783f38bd16bbbffc008807372499d5b65d089a8e43bde9db267 + md5: f75105e0585851f818e0009dd1dde4dc depends: - libgcc-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 arch: aarch64 platform: linux - license: BSD-2-Clause - license_family: BSD - size: 102442 - timestamp: 1689951682147 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/xxhash-0.8.2-hb547adb_0.conda - sha256: a70f59f7221ee72c45b39a6b36a33eb9c717ba01921cce1a3c361a4676979a2e - md5: 144cd3b88706507f332f5eb5fb83a33b - arch: arm64 - platform: osx - license: BSD-2-Clause + license: TCL license_family: BSD - size: 97593 - timestamp: 1689951969732 -- conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 - sha256: a4e34c710eeb26945bdbdaba82d3d74f60a78f54a874ec10d373811a5d217535 - md5: 4cb3ad778ec2d5a7acbdf254eb1c42ae - depends: - - libgcc-ng >=9.4.0 - arch: x86_64 - platform: linux - license: MIT - license_family: MIT - size: 89141 - timestamp: 1641346969816 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yaml-0.2.5-hf897c2e_2.tar.bz2 - sha256: 8bc601d6dbe249eba44b3c456765265cd8f42ef1e778f8df9b0c9c88b8558d7e - md5: b853307650cb226731f653aa623936a4 + size: 3351802 + timestamp: 1695506242997 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda + sha256: 72457ad031b4c048e5891f3f6cb27a53cb479db68a52d965f796910e71a403a8 + md5: b50a57ba89c32b62428b71a875291c9b depends: - - libgcc-ng >=9.4.0 - arch: aarch64 - platform: linux - license: MIT - license_family: MIT - size: 92927 - timestamp: 1641347626613 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 - sha256: 93181a04ba8cfecfdfb162fc958436d868cc37db504c58078eab4c1a3e57fbb7 - md5: 4bb3f014845110883a3c5ee811fd84b4 + - libzlib >=1.2.13,<2.0.0a0 arch: arm64 platform: osx - license: MIT - license_family: MIT - size: 88016 - timestamp: 1641347076660 -- conda: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.18.3-py312h178313f_1.conda - sha256: 6b054c93dd19fd7544af51b41a8eacca2ab62271f6c0c5a2a0cffe80dc37a0ce - md5: 6822c49f294d4355f19d314b8b6063d8 + license: TCL + license_family: BSD + size: 3145523 + timestamp: 1699202432999 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda + sha256: 062a3a3a37fa8615ce57929ba7e982c76f5a5810bcebd435950f6d6c4147c310 + md5: e417822cb989e80a0d2b1b576fdd1657 depends: - __glibc >=2.17,<3.0.a0 - - idna >=2.0 - libgcc >=13 - - multidict >=4.0 - - propcache >=0.2.1 - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 arch: x86_64 platform: linux license: Apache-2.0 license_family: Apache - size: 152305 - timestamp: 1737575898300 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.18.3-py312hcc812fe_1.conda - sha256: bfa211c0dd5dbb308788f055277dc428b7923ceb2de6a22ea98bc17cf306f9f5 - md5: d14c78abdd6109e2b7162f53b6cc1e77 + size: 840414 + timestamp: 1732616043734 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py312h52516f5_0.conda + sha256: 4c19a544354172b2273553267e734795a6da3c78a04c2d19f8e9e159ca3178bc + md5: e28996d9d2d44d777b7e6fb12f63715b depends: - - idna >=2.0 - libgcc >=13 - - multidict >=4.0 - - propcache >=0.2.1 - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 arch: aarch64 platform: linux license: Apache-2.0 license_family: Apache - size: 149654 - timestamp: 1737576065314 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.18.3-py312h998013c_1.conda - sha256: 48821d23567ca0f853eee6f7812c74392867e123798b5b3c44f58758d8eb580e - md5: 092d3b40acc67c470f379049be343a7a + size: 841662 + timestamp: 1732616934923 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda + sha256: 964a2705a36c50040c967b18b45b9cc8de3c2aff4af546979a574e0b38e58e39 + md5: fb0605888a475d6a380ae1d1a819d976 depends: - __osx >=11.0 - - idna >=2.0 - - multidict >=4.0 - - propcache >=0.2.1 - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 @@ -7336,8 +2102,41 @@ packages: platform: osx license: Apache-2.0 license_family: Apache - size: 145543 - timestamp: 1737576074753 + size: 842549 + timestamp: 1732616081362 +- conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + sha256: 11e2c85468ae9902d24a27137b6b39b4a78099806e551d390e394a8c34b48e40 + md5: 9efbfdc37242619130ea42b1cc4ed861 + depends: + - colorama + - python >=3.9 + license: MPL-2.0 or MIT + size: 89498 + timestamp: 1735661472632 +- conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + sha256: f39a5620c6e8e9e98357507262a7869de2ae8cc07da8b7f84e517c9fd6c2b959 + md5: 019a7385be9af33791c989871317e1ed + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 110051 + timestamp: 1733367480074 +- conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + sha256: 337be7af5af8b2817f115b3b68870208b30c31d3439bec07bfb2d8f4823e3568 + md5: d17f13df8b65464ca316cbc000a3cb64 + depends: + - python >=3.9 + license: PSF-2.0 + license_family: PSF + size: 39637 + timestamp: 1733188758212 +- conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + sha256: c4b1ae8a2931fe9b274c44af29c5475a85b37693999f8c792dad0f8c6734b1de + md5: dbcace4706afdfb7eb891f7b37d07c04 + license: LicenseRef-Public-Domain + size: 122921 + timestamp: 1737119101255 - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda sha256: a4dc72c96848f764bb5a5176aa93dd1e9b9e52804137b99daeebba277b31ea10 md5: 3947a35e916fcc6b9825449affbf4214 @@ -7390,129 +2189,3 @@ packages: license_family: MIT size: 21809 timestamp: 1732827613585 -- conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.1-hb9d3cd8_2.conda - sha256: 5d7c0e5f0005f74112a34a7425179f4eb6e73c92f5d109e6af4ddeca407c92ab - md5: c9f075ab2f33b3bbee9e62d4ad0a6cd8 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libzlib 1.3.1 hb9d3cd8_2 - arch: x86_64 - platform: linux - license: Zlib - license_family: Other - size: 92286 - timestamp: 1727963153079 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zlib-1.3.1-h86ecc28_2.conda - sha256: b4f649aa3ecdae384d5dad7074e198bff120edd3dfb816588e31738fc6d627b1 - md5: bc230abb5d21b63ff4799b0e75204783 - depends: - - libgcc >=13 - - libzlib 1.3.1 h86ecc28_2 - arch: aarch64 - platform: linux - license: Zlib - license_family: Other - size: 95582 - timestamp: 1727963203597 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zlib-1.3.1-h8359307_2.conda - sha256: 58f8860756680a4831c1bf4f294e2354d187f2e999791d53b1941834c4b37430 - md5: e3170d898ca6cb48f1bb567afb92f775 - depends: - - __osx >=11.0 - - libzlib 1.3.1 h8359307_2 - arch: arm64 - platform: osx - license: Zlib - license_family: Other - size: 77606 - timestamp: 1727963209370 -- conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312hef9b889_1.conda - sha256: b97015e146437283f2213ff0e95abdc8e2480150634d81fbae6b96ee09f5e50b - md5: 8b7069e9792ee4e5b4919a7a306d2e67 - depends: - - __glibc >=2.17,<3.0.a0 - - cffi >=1.11 - - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - - zstd >=1.5.6,<1.5.7.0a0 - - zstd >=1.5.6,<1.6.0a0 - arch: x86_64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 419552 - timestamp: 1725305670210 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstandard-0.23.0-py312hb698573_1.conda - sha256: 2681c2a249752bdc7978e59ee2f34fcdfcbfda80029b84b8e5fec8dbc9e3af25 - md5: ffcb8e97e62af42075e0e5f46bb9856e - depends: - - cffi >=1.11 - - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - - zstd >=1.5.6,<1.5.7.0a0 - - zstd >=1.5.6,<1.6.0a0 - arch: aarch64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 392496 - timestamp: 1725305808244 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py312h15fbf35_1.conda - sha256: d00ca25c1e28fd31199b26a94f8c96574475704a825d244d7a6351ad3745eeeb - md5: a4cde595509a7ad9c13b1a3809bcfe51 - depends: - - __osx >=11.0 - - cffi >=1.11 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - - zstd >=1.5.6,<1.5.7.0a0 - - zstd >=1.5.6,<1.6.0a0 - arch: arm64 - platform: osx - license: BSD-3-Clause - license_family: BSD - size: 330788 - timestamp: 1725305806565 -- conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda - sha256: c558b9cc01d9c1444031bd1ce4b9cff86f9085765f17627a6cd85fc623c8a02b - md5: 4d056880988120e29d75bfff282e0f45 - depends: - - libgcc-ng >=12 - - libstdcxx-ng >=12 - - libzlib >=1.2.13,<2.0.0a0 - arch: x86_64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 554846 - timestamp: 1714722996770 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.6-h02f22dd_0.conda - sha256: 484f9d0722c77685ae379fbff3ccd662af9ead7e59eb39cd6d0c677cdf25ff6c - md5: be8d5f8cf21aed237b8b182ea86b3dd6 - depends: - - libgcc-ng >=12 - - libstdcxx-ng >=12 - - libzlib >=1.2.13,<2.0.0a0 - arch: aarch64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 539937 - timestamp: 1714723130243 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.6-hb46c0d2_0.conda - sha256: 2d4fd1ff7ee79cd954ca8e81abf11d9d49954dd1fef80f27289e2402ae9c2e09 - md5: d96942c06c3e84bfcc5efb038724a7fd - depends: - - __osx >=11.0 - - libzlib >=1.2.13,<2.0.0a0 - arch: arm64 - platform: osx - license: BSD-3-Clause - license_family: BSD - size: 405089 - timestamp: 1714723101397 From 2b61efead898c4ca289c759b65785626069da88d Mon Sep 17 00:00:00 2001 From: modularbot Date: Fri, 7 Feb 2025 07:46:51 +0000 Subject: [PATCH 359/509] Update lockfiles to point to latest nightly version: 25.1.0.dev2025020705 --- examples/life/magic.lock | 142 +++++++++++++++++----------------- examples/magic.lock | 142 +++++++++++++++++----------------- examples/operators/magic.lock | 142 +++++++++++++++++----------------- examples/testing/magic.lock | 142 +++++++++++++++++----------------- magic.lock | 142 +++++++++++++++++----------------- 5 files changed, 355 insertions(+), 355 deletions(-) diff --git a/examples/life/magic.lock b/examples/life/magic.lock index 243d509ba1..7b274bc51f 100644 --- a/examples/life/magic.lock +++ b/examples/life/magic.lock @@ -91,11 +91,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.10.0-h5888daf_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020700-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025020700-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025020700-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020700-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020700-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025020705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025020705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020705-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/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda @@ -229,11 +229,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.10.0-h5ad3122_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020700-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025020700-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025020700-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020700-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020700-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025020705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025020705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020705-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/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-ha32ae93_3.conda @@ -348,11 +348,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.5.0-h2471fea_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020700-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025020700-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025020700-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020700-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020700-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020705-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025020705-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025020705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020705-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/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda @@ -3129,48 +3129,48 @@ packages: license_family: BSD size: 184953 timestamp: 1733740984533 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020700-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020705-release.conda noarch: python - sha256: 0c5086da2c8515aae71eb8b4c0b7805411c39d89a141fba0c48071d06352ae58 - md5: 8a119d75ab58c7869a319618c1bd0629 + sha256: 71063b3725bb71dc536a00c01a29e4fbb35811948d9f9579c8dc8cf94476b95c + md5: 54bf7cc5ace04cf450d6410d758fd8d8 depends: - - max-core ==25.1.0.dev2025020700 release - - max-python ==25.1.0.dev2025020700 release - - mojo-jupyter ==25.1.0.dev2025020700 release - - mblack ==25.1.0.dev2025020700 release + - max-core ==25.1.0.dev2025020705 release + - max-python ==25.1.0.dev2025020705 release + - mojo-jupyter ==25.1.0.dev2025020705 release + - mblack ==25.1.0.dev2025020705 release license: LicenseRef-Modular-Proprietary - size: 9901 - timestamp: 1738887556307 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025020700-release.conda - sha256: 0a2843fb9b523381166040e5f9196d555a8173d20e9facf63668ac4c3c3bd7e5 - md5: bcd3f009a29988347468e74c40230aa0 + size: 9902 + timestamp: 1738905467253 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025020705-release.conda + sha256: 94a8de519b04ab4f7722c773b968d91afda047470a4a8d9ade85de13fba299ee + md5: 289388db7ca64402e82f6b6f1a2c69e4 depends: - - mblack ==25.1.0.dev2025020700 release + - mblack ==25.1.0.dev2025020705 release license: LicenseRef-Modular-Proprietary - size: 244772443 - timestamp: 1738887618224 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025020700-release.conda - sha256: e6a390b2417ee1da36047c75ce78d80cd076d03eae3ebf44db45cf6339f13310 - md5: 8b535a200a237518b5255359b884dd1c + size: 244773940 + timestamp: 1738905467253 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025020705-release.conda + sha256: d6a87e7c1299e0bcef1613b785c4de114b4544366fa704315d8abd5fd9b567e9 + md5: 84d677701f7ac3a3f5a2a36c19d4c094 depends: - - mblack ==25.1.0.dev2025020700 release + - mblack ==25.1.0.dev2025020705 release license: LicenseRef-Modular-Proprietary - size: 247279800 - timestamp: 1738887556307 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025020700-release.conda - sha256: f2fd1544fd907bcc8529dd32ec5424187892397745e4898368e956ac05c48e02 - md5: c0cbf1c622073adc4c1e002559ee4984 + size: 247279675 + timestamp: 1738905446637 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025020705-release.conda + sha256: 89894981c1770d3e17f2b7991454b8b1d76d96e6407ddbb75ed90758f114e276 + md5: 4d9f1eea88804f2679b00afb72982159 depends: - - mblack ==25.1.0.dev2025020700 release + - mblack ==25.1.0.dev2025020705 release license: LicenseRef-Modular-Proprietary - size: 209654994 - timestamp: 1738888179079 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025020700-release.conda + size: 209655000 + timestamp: 1738907401724 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025020705-release.conda noarch: python - sha256: 23e51aa18d098b77a33de9b223e858ceb24dca4883dec954036d1d3cb5b3c7f2 - md5: d7bfb71fa8c8936ac46cd65cdbaceed6 + sha256: 02bb2a3076b2cf331119bf7c4a8da243c1fe0e79c0bee222f02506bcd7e4adf8 + md5: ad49c003bbfc528d87b09ee1828aaa85 depends: - - max-core ==25.1.0.dev2025020700 release + - max-core ==25.1.0.dev2025020705 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -3207,14 +3207,14 @@ packages: - uvicorn >=0.34.0 - uvloop >=0.21.0 license: LicenseRef-Modular-Proprietary - size: 120644157 - timestamp: 1738887618224 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025020700-release.conda + size: 120645177 + timestamp: 1738905467253 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025020705-release.conda noarch: python - sha256: 1113181f7ac5ab5b19dec273f34eea07d39d9ac3713d372cde746fe7804e2692 - md5: b5cdc8249909a14ad5cc69cb7b5c30e4 + sha256: 0ee24f05b67ec21823feec29c88ce47868d68350f4d9b074f456434d95045446 + md5: 6383961cb1ebd85c04a69852743a2164 depends: - - max-core ==25.1.0.dev2025020700 release + - max-core ==25.1.0.dev2025020705 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -3251,14 +3251,14 @@ packages: - uvicorn >=0.34.0 - uvloop >=0.21.0 license: LicenseRef-Modular-Proprietary - size: 123020201 - timestamp: 1738887556307 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025020700-release.conda + size: 123021659 + timestamp: 1738905446637 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025020705-release.conda noarch: python - sha256: 847e472b44904735bbc68e1fcec6a4fe53883ad6409af4f8155b2b40772c74cc - md5: 14bf0cbc7ef6cf6f3b728780a19b14ab + sha256: 4265fa97227641d250f0fad72f2c2ee5af91e73b1e63b1d9e2d958f783020152 + md5: 6615b1e61aab3680992c2de39c6a77d3 depends: - - max-core ==25.1.0.dev2025020700 release + - max-core ==25.1.0.dev2025020705 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -3295,12 +3295,12 @@ packages: - uvicorn >=0.34.0 - uvloop >=0.21.0 license: LicenseRef-Modular-Proprietary - size: 108448310 - timestamp: 1738888179079 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020700-release.conda + size: 108448298 + timestamp: 1738907401724 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020705-release.conda noarch: python - sha256: 17daf1d55dd29b1bee00b6febfb9037b863e1e70e115606174c334b5c9159f94 - md5: 3443f44398d7184cb2f05944e90fccca + sha256: e8bc67615e4aec76b6c3e7ee4c065425e67b6c661a7ab9bd57616dedb1edb38e + md5: ff8e8d8536d0b59944bdfd18ba7f430b depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -3311,20 +3311,20 @@ packages: - typing_extensions >=v4.12.2 - python license: MIT - size: 130848 - timestamp: 1738887556306 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020700-release.conda + size: 130846 + timestamp: 1738905467253 +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020705-release.conda noarch: python - sha256: 951321ffc06290d15d11f519c32aae835d8194a692c017ae8175bb98879215c0 - md5: 4a2ebf4276afe6a0b569f4550b5ecedf + sha256: 7ec8cc093aacd2c2a29ed07f6c09f57b3a7b96440bf4267de2f8be59eae0ec2d + md5: 1bc6ab515b42167588830c884b0a4e7a depends: - - max-core ==25.1.0.dev2025020700 release + - max-core ==25.1.0.dev2025020705 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22987 - timestamp: 1738887556307 + size: 22985 + timestamp: 1738905467253 - conda: https://conda.anaconda.org/conda-forge/linux-64/mpg123-1.32.9-hc50e24c_0.conda sha256: 39c4700fb3fbe403a77d8cc27352fa72ba744db487559d5d44bf8411bb4ea200 md5: c7f302fd11eeb0987a6a5e1f3aed6a21 diff --git a/examples/magic.lock b/examples/magic.lock index 173b078307..8247a625c4 100644 --- a/examples/magic.lock +++ b/examples/magic.lock @@ -42,11 +42,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020700-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025020700-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025020700-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020700-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020700-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025020705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025020705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020705-release.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-h2d0b736_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py311h64a7726_0.conda @@ -107,11 +107,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020700-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025020700-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025020700-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020700-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020700-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025020705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025020705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020705-release.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-ha32ae93_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py311h69ead2a_0.conda @@ -163,11 +163,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.48.0-h3f77e49_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020700-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025020700-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025020700-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020700-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020700-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020705-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025020705-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025020705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020705-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py311h7125741_0.conda @@ -1295,48 +1295,48 @@ packages: license_family: APACHE size: 280830 timestamp: 1736986295869 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020700-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020705-release.conda noarch: python - sha256: 0c5086da2c8515aae71eb8b4c0b7805411c39d89a141fba0c48071d06352ae58 - md5: 8a119d75ab58c7869a319618c1bd0629 + sha256: 71063b3725bb71dc536a00c01a29e4fbb35811948d9f9579c8dc8cf94476b95c + md5: 54bf7cc5ace04cf450d6410d758fd8d8 depends: - - max-core ==25.1.0.dev2025020700 release - - max-python ==25.1.0.dev2025020700 release - - mojo-jupyter ==25.1.0.dev2025020700 release - - mblack ==25.1.0.dev2025020700 release + - max-core ==25.1.0.dev2025020705 release + - max-python ==25.1.0.dev2025020705 release + - mojo-jupyter ==25.1.0.dev2025020705 release + - mblack ==25.1.0.dev2025020705 release license: LicenseRef-Modular-Proprietary - size: 9901 - timestamp: 1738887556307 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025020700-release.conda - sha256: 0a2843fb9b523381166040e5f9196d555a8173d20e9facf63668ac4c3c3bd7e5 - md5: bcd3f009a29988347468e74c40230aa0 + size: 9902 + timestamp: 1738905467253 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025020705-release.conda + sha256: 94a8de519b04ab4f7722c773b968d91afda047470a4a8d9ade85de13fba299ee + md5: 289388db7ca64402e82f6b6f1a2c69e4 depends: - - mblack ==25.1.0.dev2025020700 release + - mblack ==25.1.0.dev2025020705 release license: LicenseRef-Modular-Proprietary - size: 244772443 - timestamp: 1738887618224 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025020700-release.conda - sha256: e6a390b2417ee1da36047c75ce78d80cd076d03eae3ebf44db45cf6339f13310 - md5: 8b535a200a237518b5255359b884dd1c + size: 244773940 + timestamp: 1738905467253 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025020705-release.conda + sha256: d6a87e7c1299e0bcef1613b785c4de114b4544366fa704315d8abd5fd9b567e9 + md5: 84d677701f7ac3a3f5a2a36c19d4c094 depends: - - mblack ==25.1.0.dev2025020700 release + - mblack ==25.1.0.dev2025020705 release license: LicenseRef-Modular-Proprietary - size: 247279800 - timestamp: 1738887556307 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025020700-release.conda - sha256: f2fd1544fd907bcc8529dd32ec5424187892397745e4898368e956ac05c48e02 - md5: c0cbf1c622073adc4c1e002559ee4984 + size: 247279675 + timestamp: 1738905446637 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025020705-release.conda + sha256: 89894981c1770d3e17f2b7991454b8b1d76d96e6407ddbb75ed90758f114e276 + md5: 4d9f1eea88804f2679b00afb72982159 depends: - - mblack ==25.1.0.dev2025020700 release + - mblack ==25.1.0.dev2025020705 release license: LicenseRef-Modular-Proprietary - size: 209654994 - timestamp: 1738888179079 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025020700-release.conda + size: 209655000 + timestamp: 1738907401724 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025020705-release.conda noarch: python - sha256: 23e51aa18d098b77a33de9b223e858ceb24dca4883dec954036d1d3cb5b3c7f2 - md5: d7bfb71fa8c8936ac46cd65cdbaceed6 + sha256: 02bb2a3076b2cf331119bf7c4a8da243c1fe0e79c0bee222f02506bcd7e4adf8 + md5: ad49c003bbfc528d87b09ee1828aaa85 depends: - - max-core ==25.1.0.dev2025020700 release + - max-core ==25.1.0.dev2025020705 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1373,14 +1373,14 @@ packages: - uvicorn >=0.34.0 - uvloop >=0.21.0 license: LicenseRef-Modular-Proprietary - size: 120644157 - timestamp: 1738887618224 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025020700-release.conda + size: 120645177 + timestamp: 1738905467253 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025020705-release.conda noarch: python - sha256: 1113181f7ac5ab5b19dec273f34eea07d39d9ac3713d372cde746fe7804e2692 - md5: b5cdc8249909a14ad5cc69cb7b5c30e4 + sha256: 0ee24f05b67ec21823feec29c88ce47868d68350f4d9b074f456434d95045446 + md5: 6383961cb1ebd85c04a69852743a2164 depends: - - max-core ==25.1.0.dev2025020700 release + - max-core ==25.1.0.dev2025020705 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1417,14 +1417,14 @@ packages: - uvicorn >=0.34.0 - uvloop >=0.21.0 license: LicenseRef-Modular-Proprietary - size: 123020201 - timestamp: 1738887556307 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025020700-release.conda + size: 123021659 + timestamp: 1738905446637 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025020705-release.conda noarch: python - sha256: 847e472b44904735bbc68e1fcec6a4fe53883ad6409af4f8155b2b40772c74cc - md5: 14bf0cbc7ef6cf6f3b728780a19b14ab + sha256: 4265fa97227641d250f0fad72f2c2ee5af91e73b1e63b1d9e2d958f783020152 + md5: 6615b1e61aab3680992c2de39c6a77d3 depends: - - max-core ==25.1.0.dev2025020700 release + - max-core ==25.1.0.dev2025020705 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1461,12 +1461,12 @@ packages: - uvicorn >=0.34.0 - uvloop >=0.21.0 license: LicenseRef-Modular-Proprietary - size: 108448310 - timestamp: 1738888179079 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020700-release.conda + size: 108448298 + timestamp: 1738907401724 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020705-release.conda noarch: python - sha256: 17daf1d55dd29b1bee00b6febfb9037b863e1e70e115606174c334b5c9159f94 - md5: 3443f44398d7184cb2f05944e90fccca + sha256: e8bc67615e4aec76b6c3e7ee4c065425e67b6c661a7ab9bd57616dedb1edb38e + md5: ff8e8d8536d0b59944bdfd18ba7f430b depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -1477,20 +1477,20 @@ packages: - typing_extensions >=v4.12.2 - python license: MIT - size: 130848 - timestamp: 1738887556306 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020700-release.conda + size: 130846 + timestamp: 1738905467253 +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020705-release.conda noarch: python - sha256: 951321ffc06290d15d11f519c32aae835d8194a692c017ae8175bb98879215c0 - md5: 4a2ebf4276afe6a0b569f4550b5ecedf + sha256: 7ec8cc093aacd2c2a29ed07f6c09f57b3a7b96440bf4267de2f8be59eae0ec2d + md5: 1bc6ab515b42167588830c884b0a4e7a depends: - - max-core ==25.1.0.dev2025020700 release + - max-core ==25.1.0.dev2025020705 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22987 - timestamp: 1738887556307 + size: 22985 + timestamp: 1738905467253 - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda sha256: 1895f47b7d68581a6facde5cb13ab8c2764c2e53a76bd746f8f98910dc4e08fe md5: 29097e7ea634a45cc5386b95cac6568f diff --git a/examples/operators/magic.lock b/examples/operators/magic.lock index e115e1b185..054332f7e3 100644 --- a/examples/operators/magic.lock +++ b/examples/operators/magic.lock @@ -42,11 +42,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020700-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025020700-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025020700-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020700-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020700-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025020705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025020705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020705-release.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-h2d0b736_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda @@ -107,11 +107,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020700-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025020700-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025020700-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020700-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020700-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025020705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025020705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020705-release.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-ha32ae93_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda @@ -163,11 +163,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.48.0-h3f77e49_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020700-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025020700-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025020700-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020700-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020700-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020705-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025020705-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025020705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020705-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda @@ -1295,48 +1295,48 @@ packages: license_family: APACHE size: 280830 timestamp: 1736986295869 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020700-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020705-release.conda noarch: python - sha256: 0c5086da2c8515aae71eb8b4c0b7805411c39d89a141fba0c48071d06352ae58 - md5: 8a119d75ab58c7869a319618c1bd0629 + sha256: 71063b3725bb71dc536a00c01a29e4fbb35811948d9f9579c8dc8cf94476b95c + md5: 54bf7cc5ace04cf450d6410d758fd8d8 depends: - - max-core ==25.1.0.dev2025020700 release - - max-python ==25.1.0.dev2025020700 release - - mojo-jupyter ==25.1.0.dev2025020700 release - - mblack ==25.1.0.dev2025020700 release + - max-core ==25.1.0.dev2025020705 release + - max-python ==25.1.0.dev2025020705 release + - mojo-jupyter ==25.1.0.dev2025020705 release + - mblack ==25.1.0.dev2025020705 release license: LicenseRef-Modular-Proprietary - size: 9901 - timestamp: 1738887556307 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025020700-release.conda - sha256: 0a2843fb9b523381166040e5f9196d555a8173d20e9facf63668ac4c3c3bd7e5 - md5: bcd3f009a29988347468e74c40230aa0 + size: 9902 + timestamp: 1738905467253 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025020705-release.conda + sha256: 94a8de519b04ab4f7722c773b968d91afda047470a4a8d9ade85de13fba299ee + md5: 289388db7ca64402e82f6b6f1a2c69e4 depends: - - mblack ==25.1.0.dev2025020700 release + - mblack ==25.1.0.dev2025020705 release license: LicenseRef-Modular-Proprietary - size: 244772443 - timestamp: 1738887618224 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025020700-release.conda - sha256: e6a390b2417ee1da36047c75ce78d80cd076d03eae3ebf44db45cf6339f13310 - md5: 8b535a200a237518b5255359b884dd1c + size: 244773940 + timestamp: 1738905467253 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025020705-release.conda + sha256: d6a87e7c1299e0bcef1613b785c4de114b4544366fa704315d8abd5fd9b567e9 + md5: 84d677701f7ac3a3f5a2a36c19d4c094 depends: - - mblack ==25.1.0.dev2025020700 release + - mblack ==25.1.0.dev2025020705 release license: LicenseRef-Modular-Proprietary - size: 247279800 - timestamp: 1738887556307 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025020700-release.conda - sha256: f2fd1544fd907bcc8529dd32ec5424187892397745e4898368e956ac05c48e02 - md5: c0cbf1c622073adc4c1e002559ee4984 + size: 247279675 + timestamp: 1738905446637 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025020705-release.conda + sha256: 89894981c1770d3e17f2b7991454b8b1d76d96e6407ddbb75ed90758f114e276 + md5: 4d9f1eea88804f2679b00afb72982159 depends: - - mblack ==25.1.0.dev2025020700 release + - mblack ==25.1.0.dev2025020705 release license: LicenseRef-Modular-Proprietary - size: 209654994 - timestamp: 1738888179079 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025020700-release.conda + size: 209655000 + timestamp: 1738907401724 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025020705-release.conda noarch: python - sha256: 23e51aa18d098b77a33de9b223e858ceb24dca4883dec954036d1d3cb5b3c7f2 - md5: d7bfb71fa8c8936ac46cd65cdbaceed6 + sha256: 02bb2a3076b2cf331119bf7c4a8da243c1fe0e79c0bee222f02506bcd7e4adf8 + md5: ad49c003bbfc528d87b09ee1828aaa85 depends: - - max-core ==25.1.0.dev2025020700 release + - max-core ==25.1.0.dev2025020705 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1373,14 +1373,14 @@ packages: - uvicorn >=0.34.0 - uvloop >=0.21.0 license: LicenseRef-Modular-Proprietary - size: 120644157 - timestamp: 1738887618224 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025020700-release.conda + size: 120645177 + timestamp: 1738905467253 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025020705-release.conda noarch: python - sha256: 1113181f7ac5ab5b19dec273f34eea07d39d9ac3713d372cde746fe7804e2692 - md5: b5cdc8249909a14ad5cc69cb7b5c30e4 + sha256: 0ee24f05b67ec21823feec29c88ce47868d68350f4d9b074f456434d95045446 + md5: 6383961cb1ebd85c04a69852743a2164 depends: - - max-core ==25.1.0.dev2025020700 release + - max-core ==25.1.0.dev2025020705 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1417,14 +1417,14 @@ packages: - uvicorn >=0.34.0 - uvloop >=0.21.0 license: LicenseRef-Modular-Proprietary - size: 123020201 - timestamp: 1738887556307 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025020700-release.conda + size: 123021659 + timestamp: 1738905446637 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025020705-release.conda noarch: python - sha256: 847e472b44904735bbc68e1fcec6a4fe53883ad6409af4f8155b2b40772c74cc - md5: 14bf0cbc7ef6cf6f3b728780a19b14ab + sha256: 4265fa97227641d250f0fad72f2c2ee5af91e73b1e63b1d9e2d958f783020152 + md5: 6615b1e61aab3680992c2de39c6a77d3 depends: - - max-core ==25.1.0.dev2025020700 release + - max-core ==25.1.0.dev2025020705 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1461,12 +1461,12 @@ packages: - uvicorn >=0.34.0 - uvloop >=0.21.0 license: LicenseRef-Modular-Proprietary - size: 108448310 - timestamp: 1738888179079 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020700-release.conda + size: 108448298 + timestamp: 1738907401724 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020705-release.conda noarch: python - sha256: 17daf1d55dd29b1bee00b6febfb9037b863e1e70e115606174c334b5c9159f94 - md5: 3443f44398d7184cb2f05944e90fccca + sha256: e8bc67615e4aec76b6c3e7ee4c065425e67b6c661a7ab9bd57616dedb1edb38e + md5: ff8e8d8536d0b59944bdfd18ba7f430b depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -1477,20 +1477,20 @@ packages: - typing_extensions >=v4.12.2 - python license: MIT - size: 130848 - timestamp: 1738887556306 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020700-release.conda + size: 130846 + timestamp: 1738905467253 +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020705-release.conda noarch: python - sha256: 951321ffc06290d15d11f519c32aae835d8194a692c017ae8175bb98879215c0 - md5: 4a2ebf4276afe6a0b569f4550b5ecedf + sha256: 7ec8cc093aacd2c2a29ed07f6c09f57b3a7b96440bf4267de2f8be59eae0ec2d + md5: 1bc6ab515b42167588830c884b0a4e7a depends: - - max-core ==25.1.0.dev2025020700 release + - max-core ==25.1.0.dev2025020705 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22987 - timestamp: 1738887556307 + size: 22985 + timestamp: 1738905467253 - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda sha256: 1895f47b7d68581a6facde5cb13ab8c2764c2e53a76bd746f8f98910dc4e08fe md5: 29097e7ea634a45cc5386b95cac6568f diff --git a/examples/testing/magic.lock b/examples/testing/magic.lock index e115e1b185..054332f7e3 100644 --- a/examples/testing/magic.lock +++ b/examples/testing/magic.lock @@ -42,11 +42,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020700-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025020700-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025020700-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020700-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020700-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025020705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025020705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020705-release.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-h2d0b736_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda @@ -107,11 +107,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020700-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025020700-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025020700-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020700-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020700-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025020705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025020705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020705-release.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-ha32ae93_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda @@ -163,11 +163,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.48.0-h3f77e49_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020700-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025020700-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025020700-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020700-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020700-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020705-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025020705-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025020705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020705-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda @@ -1295,48 +1295,48 @@ packages: license_family: APACHE size: 280830 timestamp: 1736986295869 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020700-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020705-release.conda noarch: python - sha256: 0c5086da2c8515aae71eb8b4c0b7805411c39d89a141fba0c48071d06352ae58 - md5: 8a119d75ab58c7869a319618c1bd0629 + sha256: 71063b3725bb71dc536a00c01a29e4fbb35811948d9f9579c8dc8cf94476b95c + md5: 54bf7cc5ace04cf450d6410d758fd8d8 depends: - - max-core ==25.1.0.dev2025020700 release - - max-python ==25.1.0.dev2025020700 release - - mojo-jupyter ==25.1.0.dev2025020700 release - - mblack ==25.1.0.dev2025020700 release + - max-core ==25.1.0.dev2025020705 release + - max-python ==25.1.0.dev2025020705 release + - mojo-jupyter ==25.1.0.dev2025020705 release + - mblack ==25.1.0.dev2025020705 release license: LicenseRef-Modular-Proprietary - size: 9901 - timestamp: 1738887556307 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025020700-release.conda - sha256: 0a2843fb9b523381166040e5f9196d555a8173d20e9facf63668ac4c3c3bd7e5 - md5: bcd3f009a29988347468e74c40230aa0 + size: 9902 + timestamp: 1738905467253 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025020705-release.conda + sha256: 94a8de519b04ab4f7722c773b968d91afda047470a4a8d9ade85de13fba299ee + md5: 289388db7ca64402e82f6b6f1a2c69e4 depends: - - mblack ==25.1.0.dev2025020700 release + - mblack ==25.1.0.dev2025020705 release license: LicenseRef-Modular-Proprietary - size: 244772443 - timestamp: 1738887618224 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025020700-release.conda - sha256: e6a390b2417ee1da36047c75ce78d80cd076d03eae3ebf44db45cf6339f13310 - md5: 8b535a200a237518b5255359b884dd1c + size: 244773940 + timestamp: 1738905467253 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025020705-release.conda + sha256: d6a87e7c1299e0bcef1613b785c4de114b4544366fa704315d8abd5fd9b567e9 + md5: 84d677701f7ac3a3f5a2a36c19d4c094 depends: - - mblack ==25.1.0.dev2025020700 release + - mblack ==25.1.0.dev2025020705 release license: LicenseRef-Modular-Proprietary - size: 247279800 - timestamp: 1738887556307 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025020700-release.conda - sha256: f2fd1544fd907bcc8529dd32ec5424187892397745e4898368e956ac05c48e02 - md5: c0cbf1c622073adc4c1e002559ee4984 + size: 247279675 + timestamp: 1738905446637 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025020705-release.conda + sha256: 89894981c1770d3e17f2b7991454b8b1d76d96e6407ddbb75ed90758f114e276 + md5: 4d9f1eea88804f2679b00afb72982159 depends: - - mblack ==25.1.0.dev2025020700 release + - mblack ==25.1.0.dev2025020705 release license: LicenseRef-Modular-Proprietary - size: 209654994 - timestamp: 1738888179079 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025020700-release.conda + size: 209655000 + timestamp: 1738907401724 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025020705-release.conda noarch: python - sha256: 23e51aa18d098b77a33de9b223e858ceb24dca4883dec954036d1d3cb5b3c7f2 - md5: d7bfb71fa8c8936ac46cd65cdbaceed6 + sha256: 02bb2a3076b2cf331119bf7c4a8da243c1fe0e79c0bee222f02506bcd7e4adf8 + md5: ad49c003bbfc528d87b09ee1828aaa85 depends: - - max-core ==25.1.0.dev2025020700 release + - max-core ==25.1.0.dev2025020705 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1373,14 +1373,14 @@ packages: - uvicorn >=0.34.0 - uvloop >=0.21.0 license: LicenseRef-Modular-Proprietary - size: 120644157 - timestamp: 1738887618224 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025020700-release.conda + size: 120645177 + timestamp: 1738905467253 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025020705-release.conda noarch: python - sha256: 1113181f7ac5ab5b19dec273f34eea07d39d9ac3713d372cde746fe7804e2692 - md5: b5cdc8249909a14ad5cc69cb7b5c30e4 + sha256: 0ee24f05b67ec21823feec29c88ce47868d68350f4d9b074f456434d95045446 + md5: 6383961cb1ebd85c04a69852743a2164 depends: - - max-core ==25.1.0.dev2025020700 release + - max-core ==25.1.0.dev2025020705 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1417,14 +1417,14 @@ packages: - uvicorn >=0.34.0 - uvloop >=0.21.0 license: LicenseRef-Modular-Proprietary - size: 123020201 - timestamp: 1738887556307 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025020700-release.conda + size: 123021659 + timestamp: 1738905446637 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025020705-release.conda noarch: python - sha256: 847e472b44904735bbc68e1fcec6a4fe53883ad6409af4f8155b2b40772c74cc - md5: 14bf0cbc7ef6cf6f3b728780a19b14ab + sha256: 4265fa97227641d250f0fad72f2c2ee5af91e73b1e63b1d9e2d958f783020152 + md5: 6615b1e61aab3680992c2de39c6a77d3 depends: - - max-core ==25.1.0.dev2025020700 release + - max-core ==25.1.0.dev2025020705 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1461,12 +1461,12 @@ packages: - uvicorn >=0.34.0 - uvloop >=0.21.0 license: LicenseRef-Modular-Proprietary - size: 108448310 - timestamp: 1738888179079 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020700-release.conda + size: 108448298 + timestamp: 1738907401724 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020705-release.conda noarch: python - sha256: 17daf1d55dd29b1bee00b6febfb9037b863e1e70e115606174c334b5c9159f94 - md5: 3443f44398d7184cb2f05944e90fccca + sha256: e8bc67615e4aec76b6c3e7ee4c065425e67b6c661a7ab9bd57616dedb1edb38e + md5: ff8e8d8536d0b59944bdfd18ba7f430b depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -1477,20 +1477,20 @@ packages: - typing_extensions >=v4.12.2 - python license: MIT - size: 130848 - timestamp: 1738887556306 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020700-release.conda + size: 130846 + timestamp: 1738905467253 +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020705-release.conda noarch: python - sha256: 951321ffc06290d15d11f519c32aae835d8194a692c017ae8175bb98879215c0 - md5: 4a2ebf4276afe6a0b569f4550b5ecedf + sha256: 7ec8cc093aacd2c2a29ed07f6c09f57b3a7b96440bf4267de2f8be59eae0ec2d + md5: 1bc6ab515b42167588830c884b0a4e7a depends: - - max-core ==25.1.0.dev2025020700 release + - max-core ==25.1.0.dev2025020705 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22987 - timestamp: 1738887556307 + size: 22985 + timestamp: 1738905467253 - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda sha256: 1895f47b7d68581a6facde5cb13ab8c2764c2e53a76bd746f8f98910dc4e08fe md5: 29097e7ea634a45cc5386b95cac6568f diff --git a/magic.lock b/magic.lock index 977ef8e028..422141aee6 100644 --- a/magic.lock +++ b/magic.lock @@ -43,11 +43,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/lit-19.1.7-pyhd8ed1ab_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020700-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025020700-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025020700-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020700-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020700-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025020705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025020705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020705-release.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-h2d0b736_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda @@ -109,11 +109,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/lit-19.1.7-pyhd8ed1ab_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020700-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025020700-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025020700-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020700-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020700-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025020705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025020705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020705-release.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-ha32ae93_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda @@ -166,11 +166,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/lit-19.1.7-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020700-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025020700-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025020700-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020700-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020700-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020705-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025020705-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025020705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020705-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda @@ -1307,48 +1307,48 @@ packages: license_family: APACHE size: 280830 timestamp: 1736986295869 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020700-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020705-release.conda noarch: python - sha256: 0c5086da2c8515aae71eb8b4c0b7805411c39d89a141fba0c48071d06352ae58 - md5: 8a119d75ab58c7869a319618c1bd0629 + sha256: 71063b3725bb71dc536a00c01a29e4fbb35811948d9f9579c8dc8cf94476b95c + md5: 54bf7cc5ace04cf450d6410d758fd8d8 depends: - - max-core ==25.1.0.dev2025020700 release - - max-python ==25.1.0.dev2025020700 release - - mojo-jupyter ==25.1.0.dev2025020700 release - - mblack ==25.1.0.dev2025020700 release + - max-core ==25.1.0.dev2025020705 release + - max-python ==25.1.0.dev2025020705 release + - mojo-jupyter ==25.1.0.dev2025020705 release + - mblack ==25.1.0.dev2025020705 release license: LicenseRef-Modular-Proprietary - size: 9901 - timestamp: 1738887556307 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025020700-release.conda - sha256: 0a2843fb9b523381166040e5f9196d555a8173d20e9facf63668ac4c3c3bd7e5 - md5: bcd3f009a29988347468e74c40230aa0 + size: 9902 + timestamp: 1738905467253 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025020705-release.conda + sha256: 94a8de519b04ab4f7722c773b968d91afda047470a4a8d9ade85de13fba299ee + md5: 289388db7ca64402e82f6b6f1a2c69e4 depends: - - mblack ==25.1.0.dev2025020700 release + - mblack ==25.1.0.dev2025020705 release license: LicenseRef-Modular-Proprietary - size: 244772443 - timestamp: 1738887618224 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025020700-release.conda - sha256: e6a390b2417ee1da36047c75ce78d80cd076d03eae3ebf44db45cf6339f13310 - md5: 8b535a200a237518b5255359b884dd1c + size: 244773940 + timestamp: 1738905467253 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025020705-release.conda + sha256: d6a87e7c1299e0bcef1613b785c4de114b4544366fa704315d8abd5fd9b567e9 + md5: 84d677701f7ac3a3f5a2a36c19d4c094 depends: - - mblack ==25.1.0.dev2025020700 release + - mblack ==25.1.0.dev2025020705 release license: LicenseRef-Modular-Proprietary - size: 247279800 - timestamp: 1738887556307 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025020700-release.conda - sha256: f2fd1544fd907bcc8529dd32ec5424187892397745e4898368e956ac05c48e02 - md5: c0cbf1c622073adc4c1e002559ee4984 + size: 247279675 + timestamp: 1738905446637 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025020705-release.conda + sha256: 89894981c1770d3e17f2b7991454b8b1d76d96e6407ddbb75ed90758f114e276 + md5: 4d9f1eea88804f2679b00afb72982159 depends: - - mblack ==25.1.0.dev2025020700 release + - mblack ==25.1.0.dev2025020705 release license: LicenseRef-Modular-Proprietary - size: 209654994 - timestamp: 1738888179079 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025020700-release.conda + size: 209655000 + timestamp: 1738907401724 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025020705-release.conda noarch: python - sha256: 23e51aa18d098b77a33de9b223e858ceb24dca4883dec954036d1d3cb5b3c7f2 - md5: d7bfb71fa8c8936ac46cd65cdbaceed6 + sha256: 02bb2a3076b2cf331119bf7c4a8da243c1fe0e79c0bee222f02506bcd7e4adf8 + md5: ad49c003bbfc528d87b09ee1828aaa85 depends: - - max-core ==25.1.0.dev2025020700 release + - max-core ==25.1.0.dev2025020705 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1385,14 +1385,14 @@ packages: - uvicorn >=0.34.0 - uvloop >=0.21.0 license: LicenseRef-Modular-Proprietary - size: 120644157 - timestamp: 1738887618224 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025020700-release.conda + size: 120645177 + timestamp: 1738905467253 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025020705-release.conda noarch: python - sha256: 1113181f7ac5ab5b19dec273f34eea07d39d9ac3713d372cde746fe7804e2692 - md5: b5cdc8249909a14ad5cc69cb7b5c30e4 + sha256: 0ee24f05b67ec21823feec29c88ce47868d68350f4d9b074f456434d95045446 + md5: 6383961cb1ebd85c04a69852743a2164 depends: - - max-core ==25.1.0.dev2025020700 release + - max-core ==25.1.0.dev2025020705 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1429,14 +1429,14 @@ packages: - uvicorn >=0.34.0 - uvloop >=0.21.0 license: LicenseRef-Modular-Proprietary - size: 123020201 - timestamp: 1738887556307 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025020700-release.conda + size: 123021659 + timestamp: 1738905446637 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025020705-release.conda noarch: python - sha256: 847e472b44904735bbc68e1fcec6a4fe53883ad6409af4f8155b2b40772c74cc - md5: 14bf0cbc7ef6cf6f3b728780a19b14ab + sha256: 4265fa97227641d250f0fad72f2c2ee5af91e73b1e63b1d9e2d958f783020152 + md5: 6615b1e61aab3680992c2de39c6a77d3 depends: - - max-core ==25.1.0.dev2025020700 release + - max-core ==25.1.0.dev2025020705 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1473,12 +1473,12 @@ packages: - uvicorn >=0.34.0 - uvloop >=0.21.0 license: LicenseRef-Modular-Proprietary - size: 108448310 - timestamp: 1738888179079 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020700-release.conda + size: 108448298 + timestamp: 1738907401724 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020705-release.conda noarch: python - sha256: 17daf1d55dd29b1bee00b6febfb9037b863e1e70e115606174c334b5c9159f94 - md5: 3443f44398d7184cb2f05944e90fccca + sha256: e8bc67615e4aec76b6c3e7ee4c065425e67b6c661a7ab9bd57616dedb1edb38e + md5: ff8e8d8536d0b59944bdfd18ba7f430b depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -1489,20 +1489,20 @@ packages: - typing_extensions >=v4.12.2 - python license: MIT - size: 130848 - timestamp: 1738887556306 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020700-release.conda + size: 130846 + timestamp: 1738905467253 +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020705-release.conda noarch: python - sha256: 951321ffc06290d15d11f519c32aae835d8194a692c017ae8175bb98879215c0 - md5: 4a2ebf4276afe6a0b569f4550b5ecedf + sha256: 7ec8cc093aacd2c2a29ed07f6c09f57b3a7b96440bf4267de2f8be59eae0ec2d + md5: 1bc6ab515b42167588830c884b0a4e7a depends: - - max-core ==25.1.0.dev2025020700 release + - max-core ==25.1.0.dev2025020705 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22987 - timestamp: 1738887556307 + size: 22985 + timestamp: 1738905467253 - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda sha256: 1895f47b7d68581a6facde5cb13ab8c2764c2e53a76bd746f8f98910dc4e08fe md5: 29097e7ea634a45cc5386b95cac6568f From 0e30c9844c8d11f7975e4e008eafa5bf828c8d6c Mon Sep 17 00:00:00 2001 From: Ken Jones <165197230+KenJones-Modular@users.noreply.github.com> Date: Fri, 7 Feb 2025 11:56:19 -0800 Subject: [PATCH 360/509] [docs] Initial rollover of Mojo changelog for 25.1 release MODULAR_ORIG_COMMIT_REV_ID: 1a2b1f277c38205caddb19e56de1da3f09d3a414 --- docs/changelog-released.md | 430 +++++++++++++++++++++++++++++++++++++ docs/changelog.md | 416 ----------------------------------- 2 files changed, 430 insertions(+), 416 deletions(-) diff --git a/docs/changelog-released.md b/docs/changelog-released.md index eb0dd26bc1..ef40be1565 100644 --- a/docs/changelog-released.md +++ b/docs/changelog-released.md @@ -11,6 +11,436 @@ To check your current version, run `mojo --version`. To update the version of Mojo for your project with the `magic` package manager, follow the instructions in [Update a package](/magic#update-a-package) to update the `max` package. +## v25.1 (2025-02-13) + +### ✨ Highlights + +### Language changes + +- Initializers are now treated as static methods that return an instance of + `Self`. This means the `out` argument of an initializer is now treated the + same as a any other function result or `out` argument. This is generally + invisible, except that patterns like `instance.__init__()` and + `x.__copyinit__(y)` no longer work. Simply replace them with `instance = T()` + and `x = y` respectively. + +- The legacy `borrowed`/`inout` keywords and `-> T as foo` syntax now generate + a warning. Please move to `read`/`mut`/`out` argument syntax instead. + +- The `@value` decorator now additionally derives an implementation of the + `ExplicitlyCopyable` trait. This will ease the transition to explicit + copyablility requirements by default in the Mojo collection types. + +- Indexing into a homogenous tuple now produces the consistent element type + without needing a rebind: + + ```mojo + var x = (1, 2, 3, 3, 4) + var y : Int = x[idx] # Just works! + ``` + +- You can now overload positional arguments with a keyword-only argument, and + keyword-only arguments with different names: + + ```mojo + struct OverloadedKwArgs: + var val: Int + + fn __init__(out self, single: Int): + self.val = single + + fn __init__(out self, *, double: Int): + self.val = double * 2 + + fn __init__(out self, *, triple: Int): + self.val = triple * 3 + + fn main(): + OverloadedKwArgs(1) # val=1 + OverloadedKwArgs(double=1) # val=2 + OverloadedKwArgs(triple=2) # val=6 + ``` + + This also works with indexing operations: + + ```mojo + struct OverloadedKwArgs: + var vals: List[Int] + + fn __init__(out self): + self.vals = List[Int](0, 1, 2) + + fn __getitem__(self, idx: Int) -> Int: + return self.vals[idx] + + fn __getitem__(self, *, idx2: Int) -> Int: + return self.vals[idx2 * 2] + + fn __setitem__(mut self, idx: Int, val: Int): + self.vals[idx] = val + + fn __setitem__(mut self, val: Int, *, idx2: Int): + self.vals[idx2 * 2] = val + + + fn main(): + var x = OverloadedKwArgs() + print(x[1]) # 1 + print(x[idx2=1]) # 2 + + x[1] = 42 + x[idx2=1] = 84 + + print(x[1]) # 42 + print(x[idx2=1]) # 84 + ``` + +### Standard library changes + +- `StringRef` has been removed in favor of `StringSlice`. + The two types are ABI compatible, and for the exact same + behavior one can use `StaticString`, which is an alias + to `StringSlice[StaticConstantOrigin]`. + +- Add a new `validate` parameter to the `b64decode()` function. + +- New `SIMD.from_bytes()` and `SIMD.as_bytes()` functions to convert a list of bytes + to a list of scalars and vice versa, accepting the endianess as an argument. Similar + to Python `int.from_bytes()` and `int.to_bytes()` functions. + +- Added more aliases in `sys.ffi` to round out the usual needs for FFI bindings. + +- The free floating functions for constructing different types have been + deprecated for actual constructors: + + ```plaintext + before after + ------------------ + int() Int() + str() String() + bool() Bool() + float() Float64() + ``` + + These functions were a workaround before Mojo had a way to distinguish between + implicit and explicit constructors. For this release you'll get a deprecation + warning, and in the next release they'll become compiler errors. You can + quickly update your code by doing a `Match Case` and `Match Whole Word` + search and replace for `int(` to `Int(` etc. + +- `UnsafePointer`'s `bitcast` method has now been split into `bitcast` + for changing the type, `origin_cast` for changing mutability, + `static_alignment_cast` for changing alignment, + and `address_space_cast` for changing the address space. + +- `UnsafePointer` is now parameterized on mutability. Previously, + `UnsafePointer` could only represent mutable pointers. + + The new `mut` parameter can be used to restrict an `UnsafePointer` to a + specific mutability: `UnsafePointer[T, mut=False]` represents a pointer to + an immutable `T` value. This is analogous to a `const *` pointer in C++. + + - `UnsafePointer.address_of()` will now infer the origin and mutability + of the resulting pointer from the argument. For example: + + ```mojo + var local = 10 + # Constructs a mutable pointer, because `local` is a mutable memory location + var ptr = UnsafePointer.address_of(local) + ``` + + To force the construction of an immutable pointer to an otherwise mutable + memory location, use a cast: + + ```mojo + var local = 10 + # Cast the mutable pointer to be immutable. + var ptr = UnsafePointer.address_of(local).origin_cast[mut=False]() + ``` + + - The `unsafe_ptr()` method on several standard library collection types have + been updated to use parametric mutability: they will return an `UnsafePointer` + whose mutability is inherited from the mutability of the `ref self` of the + receiver at the call site. For example, `ptr1` will be immutable, while + `ptr2` will be mutable: + + ```mojo + fn take_lists(read list1: List[Int], mut list2: List[Int]): + # Immutable pointer, since receiver is immutable `read` reference + var ptr1 = list1.unsafe_ptr() + + # Mutable pointer, since receiver is mutable `mut` reference + var ptr2 = list2.unsafe_ptr() + ``` + +- Added `Optional.copied()` for constructing an owned `Optional[T]` from an + `Optional[Pointer[T]]` by copying the pointee value. + +- Added `Dict.get_ptr()` which returns an `Optional[Pointer[V]]`. If the given + key is present in the dictionary, the optional will hold a pointer to the + value. Otherwise, an empty optional is returned. + +- Added new `List.extend()` overloads taking `SIMD` and `Span`. These enable + growing a `List[Scalar[..]]` by copying the elements of a `SIMD` vector or + `Span[Scalar[..]]`, simplifying the writing of some optimized SIMD-aware + functionality. + +- Added `Char`, for representing and storing single Unicode characters. + - `Char` implements `CollectionElement`, `EqualityComparable`, `Intable`, and + `Stringable`. + - Added `String` constructor from `Char` + - `Char` can be converted to `UInt32` via `Char.to_u32()`. + - `Char` provides methods for categorizing character types, including: + `Char.is_ascii()`, `Char.is_posix_space()`, `Char.is_python_space()`, + `Char.is_ascii_digit()`, `Char.is_ascii_upper()`, `Char.is_ascii_lower()`, + `Char.is_ascii_printable()`. + +- `chr(Int)` will now abort if given a codepoint value that is not a valid + `Char`. + +- Added `StringSlice.from_utf()` factor method, for validated construction of + a `StringSlice` from a buffer containing UTF-8 encoded data. This method will + raise if the buffer contents are not valid UTF-8. + +- Added `StringSlice.chars()` which returns an iterator over `Char`s. This is a + compliant UTF-8 decoder that returns each Unicode codepoint encoded in the + string. + +- Added `StringSlice.__getitem__(Slice)` which returns a substring. + Only step sizes of 1 are supported. + +- Several standard library functions have been changed to take `StringSlice` + instead of `String`. This generalizes them to be used for any appropriately + encoded string in memory, without requiring that the string be heap allocated. + + - `atol()` + - `atof()` + - `ord()` + - `ascii()` + - `b64encode()` + - Additionally, the `b64encode()` overload that previously took `List` has + been changed to + take a `Span`. + - `b64decode()` + - `b16encode()` + - `b16decode()` + +- Added new `String.chars()` and `String.char_slices()` iterator methods, and + deprecated the existing `String.__iter__()` method. + + Different use-cases may prefer iterating over the `Char`s encoded in a string, + or iterating over subslices containing single characters. Neither iteration + semantics is an obvious default, so the existing `__iter__()` method has been + deprecated in favor of writing explicit iteration methods for the time being. + + Code of the form: + + ```mojo + var s: String = ... + for c in s: + # ... + ``` + + can be migrated to using the `.char_slices()` method: + + ```mojo + var s: String = ... + for c in s.char_slices(): + # ... + ``` + +- The `String.__len__()` and `StringSlice.__len__()` methods now return the + length of the string in bytes. + + Previously, these methods were documented to note that they would eventually + return a length in Unicode codepoints. They have been changed to guarantee + a length in bytes, since the length in bytes is how they are most often used + today (for example, as bounds to low-level memory manipulation logic). + Additionally, length in codepoints is a more specialized notion of string + length that is rarely the correct metric. + + Users that know they need the length in codepoints can use the + `str.char_length()` method, or `len(str.chars())`. + +- Various functionality has moved from `String` and `StringRef` to the more + general `StringSlice` type. + + - `StringSlice` now implements `Representable`, and that implementation is now + used by `String.__repr__()` and `StringRef.__repr__()`. + +- `StringSlice` now implements `EqualityComparable`. + + Up until now, `StringSlice` has implemented a more general `__eq__` and + `__ne__` comparision with `StringSlice` types that had arbitrary other + origins. However, to satisfy `EqualityComparable`, `StringSlice` now also + has narrower comparison methods that support comparing only with + `StringSlice`'s with the exact same origin. + +- Added `StringSlice.char_length()` method, to pair with the existing + `StringSlice.byte_length()` method. + + In a future version of Mojo, `StringSlice.__len__()` may be changed to return + the length in bytes, matching the convention of string length methods in + languages like C++ and Rust. Callers that know they need the length in + Unicode codepoints should update to calling `StringSlice.char_length()` + instead. + +- Removed `@implicit` decorator from some standard library initializer methods + that perform allocation. This reduces places where Mojo code could implicitly + allocate where the user may not be aware. + + Remove `@implicit` from: + + - `String.__init__(out self, StringRef)` + - `String.__init__(out self, StringSlice)` + - `List.__init__(out self, owned *values: T)` + - `List.__init__(out self, span: Span[T])` + +- The `ExplicitlyCopyable` trait has changed to require a + `fn copy(self) -> Self` method. Previously, an initializer with the signature + `fn __init__(out self, *, other: Self)` had been required by + `ExplicitlyCopyable`. + + This improves the "greppability" and at-a-glance readability when a programmer + is looking for places in their code that may be performing copies + +- `bit_ceil` has been renamed to `next_power_of_two`, and `bit_floor` to + `prev_power_of_two`. This is to improve readability and clarity in their use. + +- The `Indexer` and `IntLike` traits which were previously both used for + indexing have been combined. This enables SIMD scalar integer types and UInt + to be used for indexing into all of the collection types, as well as + optimizing away normalization checks for UInt indexing. + +- The `ImplicitlyIntable` trait has been added, allowing types to be implicitly + converted to an `Int` by implementing the `__as_int__` method: + + ```mojo + @value + struct Foo(ImplicitlyIntable): + var i: Int + + fn __as_int__(self) -> Int: + return self.i + ``` + +- You can now cast SIMD types using constructors: + + ```mojo + var val = Int8(42) + var cast = Int32(val) + ``` + + It also works when passing a scalar type to larger vector size: + + ```mojo + var vector = SIMD[DType.int64, 4](cast) # [42, 42, 42, 42] + ``` + + For values other than scalars the size of the SIMD vector needs to be equal: + + ```mojo + var float_vector = SIMD[DType.float64, 4](vector) + ``` + + `SIMD.cast` still exists to infer the size of new vector: + + ```mojo + var inferred_size = float_vector.cast[DType.uint64]() # [42, 42, 42, 42] + ``` + +- You can now use `max()` and `min()` with variadic number of arguments. + +- A new `LinkedList` type has been added to the standard library. + +- The `String.write` static method has moved to a `String` constructor, and + is now buffered. Instead of doing: + + ```mojo + var msg = "my message " + String(x) + " " + String(y) + " " + String(z) + ``` + + Which reallocates the `String` you should do: + + ```mojo + var msg = String("my message", x, y, z, sep=" ") + ``` + + Which is cleaner, and buffers to the stack so the `String` is allocated only + once. + +- You can now pass any `Writer` to `write_buffered`: + + ```mojo + from utils.write import write_buffered + + var string = String("existing string") + write_buffered(string, 42, 42.4, True, sep=" ") + ``` + + This writes to a buffer on the stack before reallocating the `String`. + +- The `__disable_del x` operation has been tightened up to treat all fields of + 'x' as consumed by the point of the del, so it should be used after all the + subfields are transferred or otherwise consumed (e.g. at the end of the + function) not before uses of the fields. + +### Tooling changes + +- mblack (aka `mojo format`) no longer formats non-mojo files. This prevents + unexpected formatting of python files. + +- Full struct signature information is now exposed in the documentation + generator, and in the symbol outline and hover markdown via the Mojo Language + Server. + +- The `env_get_dtype` function has been added to the `sys` module. This allows + you to get the value of a `DType` from the param environment. + +### ❌ Removed + +- `StringRef` is being deprecated. Use `StringSlice` instead. + - Changed `sys.argv()` to return list of `StringSlice`. + - Added `Path` explicit constructor from `StringSlice`. + - removed `StringRef.startswith()` and `StringRef.endswith()` + - removed `StringRef.strip()` +- The `Tuple.get[i, T]()` method has been removed. Please use `tup[i]` or + `rebind[T](tup[i])` as needed instead. +- `StringableCollectionElement` is deprecated, use `WritableCollectionElement` + instead which still allows you to construct a `String`, but can avoid + intermediary allocations. +- The `Type{field1: 42, field2: 17}` syntax for direct initializing register + passable types has been removed. This was legacy syntax - to upgrade + your code, add the @value decorator to your struct to get a memberwise + initializer and use `Type(field1=42, field2 = 17)` instead. + +### 🛠️ Fixed + +- The Mojo Kernel for Jupyter Notebooks is working again on nightly releases. + +- The command `mojo debug --vscode` now sets the current working directory + properly. + +- [Issue #3796](https://github.com/modular/mojo/issues/3796) - Compiler crash + handling for-else statement. + +- [Issue #3540](https://github.com/modular/mojo/issues/3540) - Using named + output slot breaks trait conformance + +- [Issue #3617](https://github.com/modular/mojo/issues/3617) - Can't generate + the constructors for a type wrapping `!lit.ref` + +- The Mojo Language Server doesn't crash anymore on empty **init**.mojo files. + [Issue #3826](https://github.com/modular/mojo/issues/3826). + +- [Issue #3935](https://github.com/modular/mojo/issues/3935) - Confusing OOM + error when using Tuple.get incorrectly. + +- [Issue #3955](https://github.com/modular/mojo/issues/3955) - Unexpected + copy behaviour with `def` arguments in loops + +- [Issue #3960](https://github.com/modular/mojo/issues/3960) - Infinite for loop + ## v24.6 (2024-12-17) ### ✨ Highlights diff --git a/docs/changelog.md b/docs/changelog.md index 3711ca5f2f..9f6a1c4e3e 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -20,426 +20,10 @@ what we publish. ### Language changes -- Initializers are now treated as static methods that return an instance of - `Self`. This means the `out` argument of an initializer is now treated the - same as a any other function result or `out` argument. This is generally - invisible, except that patterns like `instance.__init__()` and - `x.__copyinit__(y)` no longer work. Simply replace them with `instance = T()` - and `x = y` respectively. - -- The legacy `borrowed`/`inout` keywords and `-> T as foo` syntax now generate - a warning. Please move to `read`/`mut`/`out` argument syntax instead. - -- The `@value` decorator now additionally derives an implementation of the - `ExplicitlyCopyable` trait. This will ease the transition to explicit - copyablility requirements by default in the Mojo collection types. - -- Indexing into a homogenous tuple now produces the consistent element type - without needing a rebind: - - ```mojo - var x = (1, 2, 3, 3, 4) - var y : Int = x[idx] # Just works! - ``` - -- You can now overload positional arguments with a keyword-only argument, and - keyword-only arguments with different names: - - ```mojo - struct OverloadedKwArgs: - var val: Int - - fn __init__(out self, single: Int): - self.val = single - - fn __init__(out self, *, double: Int): - self.val = double * 2 - - fn __init__(out self, *, triple: Int): - self.val = triple * 3 - - fn main(): - OverloadedKwArgs(1) # val=1 - OverloadedKwArgs(double=1) # val=2 - OverloadedKwArgs(triple=2) # val=6 - ``` - - This also works with indexing operations: - - ```mojo - struct OverloadedKwArgs: - var vals: List[Int] - - fn __init__(out self): - self.vals = List[Int](0, 1, 2) - - fn __getitem__(self, idx: Int) -> Int: - return self.vals[idx] - - fn __getitem__(self, *, idx2: Int) -> Int: - return self.vals[idx2 * 2] - - fn __setitem__(mut self, idx: Int, val: Int): - self.vals[idx] = val - - fn __setitem__(mut self, val: Int, *, idx2: Int): - self.vals[idx2 * 2] = val - - - fn main(): - var x = OverloadedKwArgs() - print(x[1]) # 1 - print(x[idx2=1]) # 2 - - x[1] = 42 - x[idx2=1] = 84 - - print(x[1]) # 42 - print(x[idx2=1]) # 84 - ``` - ### Standard library changes -- `StringRef` has been removed in favor of `StringSlice`. - The two types are ABI compatible, and for the exact same - behavior one can use `StaticString`, which is an alias - to `StringSlice[StaticConstantOrigin]`. - -- Add a new `validate` parameter to the `b64decode()` function. - -- New `SIMD.from_bytes()` and `SIMD.as_bytes()` functions to convert a list of bytes - to a list of scalars and vice versa, accepting the endianess as an argument. Similar - to Python `int.from_bytes()` and `int.to_bytes()` functions. - -- Added more aliases in `sys.ffi` to round out the usual needs for FFI bindings. - -- The free floating functions for constructing different types have been - deprecated for actual constructors: - - ```plaintext - before after - ------------------ - int() Int() - str() String() - bool() Bool() - float() Float64() - ``` - - These functions were a workaround before Mojo had a way to distinguish between - implicit and explicit constructors. For this release you'll get a deprecation - warning, and in the next release they'll become compiler errors. You can - quickly update your code by doing a `Match Case` and `Match Whole Word` - search and replace for `int(` to `Int(` etc. - -- `UnsafePointer`'s `bitcast` method has now been split into `bitcast` - for changing the type, `origin_cast` for changing mutability, - `static_alignment_cast` for changing alignment, - and `address_space_cast` for changing the address space. - -- `UnsafePointer` is now parameterized on mutability. Previously, - `UnsafePointer` could only represent mutable pointers. - - The new `mut` parameter can be used to restrict an `UnsafePointer` to a - specific mutability: `UnsafePointer[T, mut=False]` represents a pointer to - an immutable `T` value. This is analogous to a `const *` pointer in C++. - - - `UnsafePointer.address_of()` will now infer the origin and mutability - of the resulting pointer from the argument. For example: - - ```mojo - var local = 10 - # Constructs a mutable pointer, because `local` is a mutable memory location - var ptr = UnsafePointer.address_of(local) - ``` - - To force the construction of an immutable pointer to an otherwise mutable - memory location, use a cast: - - ```mojo - var local = 10 - # Cast the mutable pointer to be immutable. - var ptr = UnsafePointer.address_of(local).origin_cast[mut=False]() - ``` - - - The `unsafe_ptr()` method on several standard library collection types have - been updated to use parametric mutability: they will return an `UnsafePointer` - whose mutability is inherited from the mutability of the `ref self` of the - receiver at the call site. For example, `ptr1` will be immutable, while - `ptr2` will be mutable: - - ```mojo - fn take_lists(read list1: List[Int], mut list2: List[Int]): - # Immutable pointer, since receiver is immutable `read` reference - var ptr1 = list1.unsafe_ptr() - - # Mutable pointer, since receiver is mutable `mut` reference - var ptr2 = list2.unsafe_ptr() - ``` - -- Added `Optional.copied()` for constructing an owned `Optional[T]` from an - `Optional[Pointer[T]]` by copying the pointee value. - -- Added `Dict.get_ptr()` which returns an `Optional[Pointer[V]]`. If the given - key is present in the dictionary, the optional will hold a pointer to the - value. Otherwise, an empty optional is returned. - -- Added new `List.extend()` overloads taking `SIMD` and `Span`. These enable - growing a `List[Scalar[..]]` by copying the elements of a `SIMD` vector or - `Span[Scalar[..]]`, simplifying the writing of some optimized SIMD-aware - functionality. - -- Added `Char`, for representing and storing single Unicode characters. - - `Char` implements `CollectionElement`, `EqualityComparable`, `Intable`, and - `Stringable`. - - Added `String` constructor from `Char` - - `Char` can be converted to `UInt32` via `Char.to_u32()`. - - `Char` provides methods for categorizing character types, including: - `Char.is_ascii()`, `Char.is_posix_space()`, `Char.is_python_space()`, - `Char.is_ascii_digit()`, `Char.is_ascii_upper()`, `Char.is_ascii_lower()`, - `Char.is_ascii_printable()`. - -- `chr(Int)` will now abort if given a codepoint value that is not a valid - `Char`. - -- Added `StringSlice.from_utf()` factor method, for validated construction of - a `StringSlice` from a buffer containing UTF-8 encoded data. This method will - raise if the buffer contents are not valid UTF-8. - -- Added `StringSlice.chars()` which returns an iterator over `Char`s. This is a - compliant UTF-8 decoder that returns each Unicode codepoint encoded in the - string. - -- Added `StringSlice.__getitem__(Slice)` which returns a substring. - Only step sizes of 1 are supported. - -- Several standard library functions have been changed to take `StringSlice` - instead of `String`. This generalizes them to be used for any appropriately - encoded string in memory, without requiring that the string be heap allocated. - - - `atol()` - - `atof()` - - `ord()` - - `ascii()` - - `b64encode()` - - Additionally, the `b64encode()` overload that previously took `List` has - been changed to - take a `Span`. - - `b64decode()` - - `b16encode()` - - `b16decode()` - -- Added new `String.chars()` and `String.char_slices()` iterator methods, and - deprecated the existing `String.__iter__()` method. - - Different use-cases may prefer iterating over the `Char`s encoded in a string, - or iterating over subslices containing single characters. Neither iteration - semantics is an obvious default, so the existing `__iter__()` method has been - deprecated in favor of writing explicit iteration methods for the time being. - - Code of the form: - - ```mojo - var s: String = ... - for c in s: - # ... - ``` - - can be migrated to using the `.char_slices()` method: - - ```mojo - var s: String = ... - for c in s.char_slices(): - # ... - ``` - -- The `String.__len__()` and `StringSlice.__len__()` methods now return the - length of the string in bytes. - - Previously, these methods were documented to note that they would eventually - return a length in Unicode codepoints. They have been changed to guarantee - a length in bytes, since the length in bytes is how they are most often used - today (for example, as bounds to low-level memory manipulation logic). - Additionally, length in codepoints is a more specialized notion of string - length that is rarely the correct metric. - - Users that know they need the length in codepoints can use the - `str.char_length()` method, or `len(str.chars())`. - -- Various functionality has moved from `String` and `StringRef` to the more - general `StringSlice` type. - - - `StringSlice` now implements `Representable`, and that implementation is now - used by `String.__repr__()` and `StringRef.__repr__()`. - -- `StringSlice` now implements `EqualityComparable`. - - Up until now, `StringSlice` has implemented a more general `__eq__` and - `__ne__` comparision with `StringSlice` types that had arbitrary other - origins. However, to satisfy `EqualityComparable`, `StringSlice` now also - has narrower comparison methods that support comparing only with - `StringSlice`'s with the exact same origin. - -- Added `StringSlice.char_length()` method, to pair with the existing - `StringSlice.byte_length()` method. - - In a future version of Mojo, `StringSlice.__len__()` may be changed to return - the length in bytes, matching the convention of string length methods in - languages like C++ and Rust. Callers that know they need the length in - Unicode codepoints should update to calling `StringSlice.char_length()` - instead. - -- Removed `@implicit` decorator from some standard library initializer methods - that perform allocation. This reduces places where Mojo code could implicitly - allocate where the user may not be aware. - - Remove `@implicit` from: - - - `String.__init__(out self, StringRef)` - - `String.__init__(out self, StringSlice)` - - `List.__init__(out self, owned *values: T)` - - `List.__init__(out self, span: Span[T])` - -- The `ExplicitlyCopyable` trait has changed to require a - `fn copy(self) -> Self` method. Previously, an initializer with the signature - `fn __init__(out self, *, other: Self)` had been required by - `ExplicitlyCopyable`. - - This improves the "greppability" and at-a-glance readability when a programmer - is looking for places in their code that may be performing copies - -- `bit_ceil` has been renamed to `next_power_of_two`, and `bit_floor` to - `prev_power_of_two`. This is to improve readability and clarity in their use. - -- The `Indexer` and `IntLike` traits which were previously both used for - indexing have been combined. This enables SIMD scalar integer types and UInt - to be used for indexing into all of the collection types, as well as - optimizing away normalization checks for UInt indexing. - -- The `ImplicitlyIntable` trait has been added, allowing types to be implicitly - converted to an `Int` by implementing the `__as_int__` method: - - ```mojo - @value - struct Foo(ImplicitlyIntable): - var i: Int - - fn __as_int__(self) -> Int: - return self.i - ``` - -- You can now cast SIMD types using constructors: - - ```mojo - var val = Int8(42) - var cast = Int32(val) - ``` - - It also works when passing a scalar type to larger vector size: - - ```mojo - var vector = SIMD[DType.int64, 4](cast) # [42, 42, 42, 42] - ``` - - For values other than scalars the size of the SIMD vector needs to be equal: - - ```mojo - var float_vector = SIMD[DType.float64, 4](vector) - ``` - - `SIMD.cast` still exists to infer the size of new vector: - - ```mojo - var inferred_size = float_vector.cast[DType.uint64]() # [42, 42, 42, 42] - ``` - -- You can now use `max()` and `min()` with variadic number of arguments. - -- A new `LinkedList` type has been added to the standard library. - -- The `String.write` static method has moved to a `String` constructor, and - is now buffered. Instead of doing: - - ```mojo - var msg = "my message " + String(x) + " " + String(y) + " " + String(z) - ``` - - Which reallocates the `String` you should do: - - ```mojo - var msg = String("my message", x, y, z, sep=" ") - ``` - - Which is cleaner, and buffers to the stack so the `String` is allocated only - once. - -- You can now pass any `Writer` to `write_buffered`: - - ```mojo - from utils.write import write_buffered - - var string = String("existing string") - write_buffered(string, 42, 42.4, True, sep=" ") - ``` - - This writes to a buffer on the stack before reallocating the `String`. - -- The `__disable_del x` operation has been tightened up to treat all fields of - 'x' as consumed by the point of the del, so it should be used after all the - subfields are transferred or otherwise consumed (e.g. at the end of the - function) not before uses of the fields. - ### Tooling changes -- mblack (aka `mojo format`) no longer formats non-mojo files. This prevents - unexpected formatting of python files. - -- Full struct signature information is now exposed in the documentation - generator, and in the symbol outline and hover markdown via the Mojo Language - Server. - -- The `env_get_dtype` function has been added to the `sys` module. This allows - you to get the value of a `DType` from the param environment. - ### ❌ Removed -- `StringRef` is being deprecated. Use `StringSlice` instead. - - Changed `sys.argv()` to return list of `StringSlice`. - - Added `Path` explicit constructor from `StringSlice`. - - removed `StringRef.startswith()` and `StringRef.endswith()` - - removed `StringRef.strip()` -- The `Tuple.get[i, T]()` method has been removed. Please use `tup[i]` or - `rebind[T](tup[i])` as needed instead. -- `StringableCollectionElement` is deprecated, use `WritableCollectionElement` - instead which still allows you to construct a `String`, but can avoid - intermediary allocations. -- The `Type{field1: 42, field2: 17}` syntax for direct initializing register - passable types has been removed. This was legacy syntax - to upgrade - your code, add the @value decorator to your struct to get a memberwise - initializer and use `Type(field1=42, field2 = 17)` instead. - ### 🛠️ Fixed - -- The Mojo Kernel for Jupyter Notebooks is working again on nightly releases. - -- The command `mojo debug --vscode` now sets the current working directory - properly. - -- [Issue #3796](https://github.com/modular/mojo/issues/3796) - Compiler crash - handling for-else statement. - -- [Issue #3540](https://github.com/modular/mojo/issues/3540) - Using named - output slot breaks trait conformance - -- [Issue #3617](https://github.com/modular/mojo/issues/3617) - Can't generate - the constructors for a type wrapping `!lit.ref` - -- The Mojo Language Server doesn't crash anymore on empty **init**.mojo files. - [Issue #3826](https://github.com/modular/mojo/issues/3826). - -- [Issue #3935](https://github.com/modular/mojo/issues/3935) - Confusing OOM - error when using Tuple.get incorrectly. - -- [Issue #3955](https://github.com/modular/mojo/issues/3955) - Unexpected - copy behaviour with `def` arguments in loops - -- [Issue #3960](https://github.com/modular/mojo/issues/3960) - Infinite for loop From 6b58eb2ec4c491588fbd34c8e66963d277c43492 Mon Sep 17 00:00:00 2001 From: Keith Smiley Date: Fri, 7 Feb 2025 12:24:24 -0800 Subject: [PATCH 361/509] [lit] Use internal test format for mojo tests MODULAR_ORIG_COMMIT_REV_ID: 3238188fa6f7ca559dae9ed5f13e9f35567d4d99 --- stdlib/benchmarks/lit.cfg.py | 4 ++-- stdlib/test/lit.cfg.py | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/stdlib/benchmarks/lit.cfg.py b/stdlib/benchmarks/lit.cfg.py index a05376ec63..c3520d0d92 100644 --- a/stdlib/benchmarks/lit.cfg.py +++ b/stdlib/benchmarks/lit.cfg.py @@ -17,8 +17,6 @@ import lit.formats import lit.llvm -config.test_format = lit.formats.ShTest(True) - # name: The name of this test suite. config.name = "Mojo Standard Library Benchmarks" @@ -39,6 +37,8 @@ config.modular_obj_root, "open-source", "mojo", "stdlib", "benchmarks" ) else: + config.test_format = lit.formats.ShTest(True) + # test_source_root: The root path where tests are located. config.test_source_root = Path(__file__).parent.resolve() diff --git a/stdlib/test/lit.cfg.py b/stdlib/test/lit.cfg.py index a20ce09510..249fa758dd 100644 --- a/stdlib/test/lit.cfg.py +++ b/stdlib/test/lit.cfg.py @@ -20,8 +20,6 @@ # Configuration file for the 'lit' test runner. -config.test_format = lit.formats.ShTest(True) - # name: The name of this test suite. config.name = "Mojo Standard Library" @@ -53,6 +51,8 @@ def has_not(): ) # External, public Mojo testing configuration else: + config.test_format = lit.formats.ShTest(True) + # test_source_root: The root path where tests are located. config.test_source_root = Path(__file__).parent.resolve() From dff68683e6f6bc06f0a705357558075ae9c256c2 Mon Sep 17 00:00:00 2001 From: modularbot Date: Sat, 8 Feb 2025 07:58:18 +0000 Subject: [PATCH 362/509] Update lockfiles to point to latest nightly version: 25.1.0.dev2025020805 --- examples/life/magic.lock | 142 +++++++++++++++++----------------- examples/magic.lock | 142 +++++++++++++++++----------------- examples/operators/magic.lock | 142 +++++++++++++++++----------------- examples/testing/magic.lock | 142 +++++++++++++++++----------------- magic.lock | 142 +++++++++++++++++----------------- 5 files changed, 355 insertions(+), 355 deletions(-) diff --git a/examples/life/magic.lock b/examples/life/magic.lock index 7b274bc51f..11f73daab7 100644 --- a/examples/life/magic.lock +++ b/examples/life/magic.lock @@ -91,11 +91,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.10.0-h5888daf_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025020705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025020705-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020705-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025020805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025020805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020805-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/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda @@ -229,11 +229,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.10.0-h5ad3122_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025020705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025020705-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020705-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025020805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025020805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020805-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/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-ha32ae93_3.conda @@ -348,11 +348,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.5.0-h2471fea_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020705-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025020705-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025020705-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020705-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020805-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025020805-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025020805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020805-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/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda @@ -3129,48 +3129,48 @@ packages: license_family: BSD size: 184953 timestamp: 1733740984533 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020705-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020805-release.conda noarch: python - sha256: 71063b3725bb71dc536a00c01a29e4fbb35811948d9f9579c8dc8cf94476b95c - md5: 54bf7cc5ace04cf450d6410d758fd8d8 + sha256: 54b73005e4ac4053975e984eba3ab2c328c047f1aaf63217dac62be5a2a50087 + md5: fa2aa1710d82090e6d50d05907a703ea depends: - - max-core ==25.1.0.dev2025020705 release - - max-python ==25.1.0.dev2025020705 release - - mojo-jupyter ==25.1.0.dev2025020705 release - - mblack ==25.1.0.dev2025020705 release + - max-core ==25.1.0.dev2025020805 release + - max-python ==25.1.0.dev2025020805 release + - mojo-jupyter ==25.1.0.dev2025020805 release + - mblack ==25.1.0.dev2025020805 release license: LicenseRef-Modular-Proprietary - size: 9902 - timestamp: 1738905467253 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025020705-release.conda - sha256: 94a8de519b04ab4f7722c773b968d91afda047470a4a8d9ade85de13fba299ee - md5: 289388db7ca64402e82f6b6f1a2c69e4 + size: 9900 + timestamp: 1738991846700 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025020805-release.conda + sha256: d8d4cc499562b0d6c620f0019b5ed01235834af4e20349be726015d162ca21c1 + md5: da4c181f16eafb9d10c55137cc5466e6 depends: - - mblack ==25.1.0.dev2025020705 release + - mblack ==25.1.0.dev2025020805 release license: LicenseRef-Modular-Proprietary - size: 244773940 - timestamp: 1738905467253 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025020705-release.conda - sha256: d6a87e7c1299e0bcef1613b785c4de114b4544366fa704315d8abd5fd9b567e9 - md5: 84d677701f7ac3a3f5a2a36c19d4c094 + size: 244893250 + timestamp: 1738991846699 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025020805-release.conda + sha256: a336a9a8f01c93ca1ea041ceb153ef5b650d3a8e7ec8114103c9103479d76d4d + md5: c2e88cf91ed396b4162cc863b765a42a depends: - - mblack ==25.1.0.dev2025020705 release + - mblack ==25.1.0.dev2025020805 release license: LicenseRef-Modular-Proprietary - size: 247279675 - timestamp: 1738905446637 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025020705-release.conda - sha256: 89894981c1770d3e17f2b7991454b8b1d76d96e6407ddbb75ed90758f114e276 - md5: 4d9f1eea88804f2679b00afb72982159 + size: 247418130 + timestamp: 1738991808671 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025020805-release.conda + sha256: 091a2794945506a316c1ce75bd798bc1bf839328be59eb1c21c0b143c44f9c7a + md5: 7e09138f0f8a28dd30a01ebbe15f3078 depends: - - mblack ==25.1.0.dev2025020705 release + - mblack ==25.1.0.dev2025020805 release license: LicenseRef-Modular-Proprietary - size: 209655000 - timestamp: 1738907401724 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025020705-release.conda + size: 209778709 + timestamp: 1738994653883 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025020805-release.conda noarch: python - sha256: 02bb2a3076b2cf331119bf7c4a8da243c1fe0e79c0bee222f02506bcd7e4adf8 - md5: ad49c003bbfc528d87b09ee1828aaa85 + sha256: 80124268f375ed69f37bd91b8b061bd6c6153342c5b9053aca10eb3dcea7342a + md5: 0f14d712ff526fc8671e24b1497bd97f depends: - - max-core ==25.1.0.dev2025020705 release + - max-core ==25.1.0.dev2025020805 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -3207,14 +3207,14 @@ packages: - uvicorn >=0.34.0 - uvloop >=0.21.0 license: LicenseRef-Modular-Proprietary - size: 120645177 - timestamp: 1738905467253 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025020705-release.conda + size: 120574508 + timestamp: 1738991846700 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025020805-release.conda noarch: python - sha256: 0ee24f05b67ec21823feec29c88ce47868d68350f4d9b074f456434d95045446 - md5: 6383961cb1ebd85c04a69852743a2164 + sha256: cd1637ea887314bc64b827a565cf06495ed4c065a3647c35019b9f9e603e4c00 + md5: f9c32f6c769df5e4e3a551d52b1e5c87 depends: - - max-core ==25.1.0.dev2025020705 release + - max-core ==25.1.0.dev2025020805 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -3251,14 +3251,14 @@ packages: - uvicorn >=0.34.0 - uvloop >=0.21.0 license: LicenseRef-Modular-Proprietary - size: 123021659 - timestamp: 1738905446637 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025020705-release.conda + size: 123118238 + timestamp: 1738991808671 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025020805-release.conda noarch: python - sha256: 4265fa97227641d250f0fad72f2c2ee5af91e73b1e63b1d9e2d958f783020152 - md5: 6615b1e61aab3680992c2de39c6a77d3 + sha256: a8a45c2e7fde72557f537b759cea361416137c31f3123abc2199cd1162778bc5 + md5: 8d86afd47cf099690acd45ab4cb3e879 depends: - - max-core ==25.1.0.dev2025020705 release + - max-core ==25.1.0.dev2025020805 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -3295,12 +3295,12 @@ packages: - uvicorn >=0.34.0 - uvloop >=0.21.0 license: LicenseRef-Modular-Proprietary - size: 108448298 - timestamp: 1738907401724 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020705-release.conda + size: 108495948 + timestamp: 1738994653883 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020805-release.conda noarch: python - sha256: e8bc67615e4aec76b6c3e7ee4c065425e67b6c661a7ab9bd57616dedb1edb38e - md5: ff8e8d8536d0b59944bdfd18ba7f430b + sha256: 9e8dd6eb0497a0630a6cbc699ca67bec88c078e5b8e84a2b213e145018c1922e + md5: cd757be5471b8ecc3c5e43b44183ae4f depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -3311,20 +3311,20 @@ packages: - typing_extensions >=v4.12.2 - python license: MIT - size: 130846 - timestamp: 1738905467253 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020705-release.conda + size: 130855 + timestamp: 1738991846699 +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020805-release.conda noarch: python - sha256: 7ec8cc093aacd2c2a29ed07f6c09f57b3a7b96440bf4267de2f8be59eae0ec2d - md5: 1bc6ab515b42167588830c884b0a4e7a + sha256: 01ce310a8f05bc16028bd8749c7decd899b2b569992b3db5790bd3b8d5f9d9fb + md5: cb0e7f08489ecfc881ec3197c3d8de15 depends: - - max-core ==25.1.0.dev2025020705 release + - max-core ==25.1.0.dev2025020805 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22985 - timestamp: 1738905467253 + size: 22988 + timestamp: 1738991846699 - conda: https://conda.anaconda.org/conda-forge/linux-64/mpg123-1.32.9-hc50e24c_0.conda sha256: 39c4700fb3fbe403a77d8cc27352fa72ba744db487559d5d44bf8411bb4ea200 md5: c7f302fd11eeb0987a6a5e1f3aed6a21 diff --git a/examples/magic.lock b/examples/magic.lock index 8247a625c4..fde637a2d5 100644 --- a/examples/magic.lock +++ b/examples/magic.lock @@ -42,11 +42,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025020705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025020705-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020705-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025020805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025020805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020805-release.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-h2d0b736_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py311h64a7726_0.conda @@ -107,11 +107,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025020705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025020705-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020705-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025020805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025020805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020805-release.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-ha32ae93_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py311h69ead2a_0.conda @@ -163,11 +163,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.48.0-h3f77e49_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020705-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025020705-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025020705-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020705-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020805-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025020805-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025020805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020805-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py311h7125741_0.conda @@ -1295,48 +1295,48 @@ packages: license_family: APACHE size: 280830 timestamp: 1736986295869 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020705-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020805-release.conda noarch: python - sha256: 71063b3725bb71dc536a00c01a29e4fbb35811948d9f9579c8dc8cf94476b95c - md5: 54bf7cc5ace04cf450d6410d758fd8d8 + sha256: 54b73005e4ac4053975e984eba3ab2c328c047f1aaf63217dac62be5a2a50087 + md5: fa2aa1710d82090e6d50d05907a703ea depends: - - max-core ==25.1.0.dev2025020705 release - - max-python ==25.1.0.dev2025020705 release - - mojo-jupyter ==25.1.0.dev2025020705 release - - mblack ==25.1.0.dev2025020705 release + - max-core ==25.1.0.dev2025020805 release + - max-python ==25.1.0.dev2025020805 release + - mojo-jupyter ==25.1.0.dev2025020805 release + - mblack ==25.1.0.dev2025020805 release license: LicenseRef-Modular-Proprietary - size: 9902 - timestamp: 1738905467253 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025020705-release.conda - sha256: 94a8de519b04ab4f7722c773b968d91afda047470a4a8d9ade85de13fba299ee - md5: 289388db7ca64402e82f6b6f1a2c69e4 + size: 9900 + timestamp: 1738991846700 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025020805-release.conda + sha256: d8d4cc499562b0d6c620f0019b5ed01235834af4e20349be726015d162ca21c1 + md5: da4c181f16eafb9d10c55137cc5466e6 depends: - - mblack ==25.1.0.dev2025020705 release + - mblack ==25.1.0.dev2025020805 release license: LicenseRef-Modular-Proprietary - size: 244773940 - timestamp: 1738905467253 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025020705-release.conda - sha256: d6a87e7c1299e0bcef1613b785c4de114b4544366fa704315d8abd5fd9b567e9 - md5: 84d677701f7ac3a3f5a2a36c19d4c094 + size: 244893250 + timestamp: 1738991846699 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025020805-release.conda + sha256: a336a9a8f01c93ca1ea041ceb153ef5b650d3a8e7ec8114103c9103479d76d4d + md5: c2e88cf91ed396b4162cc863b765a42a depends: - - mblack ==25.1.0.dev2025020705 release + - mblack ==25.1.0.dev2025020805 release license: LicenseRef-Modular-Proprietary - size: 247279675 - timestamp: 1738905446637 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025020705-release.conda - sha256: 89894981c1770d3e17f2b7991454b8b1d76d96e6407ddbb75ed90758f114e276 - md5: 4d9f1eea88804f2679b00afb72982159 + size: 247418130 + timestamp: 1738991808671 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025020805-release.conda + sha256: 091a2794945506a316c1ce75bd798bc1bf839328be59eb1c21c0b143c44f9c7a + md5: 7e09138f0f8a28dd30a01ebbe15f3078 depends: - - mblack ==25.1.0.dev2025020705 release + - mblack ==25.1.0.dev2025020805 release license: LicenseRef-Modular-Proprietary - size: 209655000 - timestamp: 1738907401724 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025020705-release.conda + size: 209778709 + timestamp: 1738994653883 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025020805-release.conda noarch: python - sha256: 02bb2a3076b2cf331119bf7c4a8da243c1fe0e79c0bee222f02506bcd7e4adf8 - md5: ad49c003bbfc528d87b09ee1828aaa85 + sha256: 80124268f375ed69f37bd91b8b061bd6c6153342c5b9053aca10eb3dcea7342a + md5: 0f14d712ff526fc8671e24b1497bd97f depends: - - max-core ==25.1.0.dev2025020705 release + - max-core ==25.1.0.dev2025020805 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1373,14 +1373,14 @@ packages: - uvicorn >=0.34.0 - uvloop >=0.21.0 license: LicenseRef-Modular-Proprietary - size: 120645177 - timestamp: 1738905467253 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025020705-release.conda + size: 120574508 + timestamp: 1738991846700 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025020805-release.conda noarch: python - sha256: 0ee24f05b67ec21823feec29c88ce47868d68350f4d9b074f456434d95045446 - md5: 6383961cb1ebd85c04a69852743a2164 + sha256: cd1637ea887314bc64b827a565cf06495ed4c065a3647c35019b9f9e603e4c00 + md5: f9c32f6c769df5e4e3a551d52b1e5c87 depends: - - max-core ==25.1.0.dev2025020705 release + - max-core ==25.1.0.dev2025020805 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1417,14 +1417,14 @@ packages: - uvicorn >=0.34.0 - uvloop >=0.21.0 license: LicenseRef-Modular-Proprietary - size: 123021659 - timestamp: 1738905446637 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025020705-release.conda + size: 123118238 + timestamp: 1738991808671 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025020805-release.conda noarch: python - sha256: 4265fa97227641d250f0fad72f2c2ee5af91e73b1e63b1d9e2d958f783020152 - md5: 6615b1e61aab3680992c2de39c6a77d3 + sha256: a8a45c2e7fde72557f537b759cea361416137c31f3123abc2199cd1162778bc5 + md5: 8d86afd47cf099690acd45ab4cb3e879 depends: - - max-core ==25.1.0.dev2025020705 release + - max-core ==25.1.0.dev2025020805 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1461,12 +1461,12 @@ packages: - uvicorn >=0.34.0 - uvloop >=0.21.0 license: LicenseRef-Modular-Proprietary - size: 108448298 - timestamp: 1738907401724 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020705-release.conda + size: 108495948 + timestamp: 1738994653883 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020805-release.conda noarch: python - sha256: e8bc67615e4aec76b6c3e7ee4c065425e67b6c661a7ab9bd57616dedb1edb38e - md5: ff8e8d8536d0b59944bdfd18ba7f430b + sha256: 9e8dd6eb0497a0630a6cbc699ca67bec88c078e5b8e84a2b213e145018c1922e + md5: cd757be5471b8ecc3c5e43b44183ae4f depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -1477,20 +1477,20 @@ packages: - typing_extensions >=v4.12.2 - python license: MIT - size: 130846 - timestamp: 1738905467253 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020705-release.conda + size: 130855 + timestamp: 1738991846699 +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020805-release.conda noarch: python - sha256: 7ec8cc093aacd2c2a29ed07f6c09f57b3a7b96440bf4267de2f8be59eae0ec2d - md5: 1bc6ab515b42167588830c884b0a4e7a + sha256: 01ce310a8f05bc16028bd8749c7decd899b2b569992b3db5790bd3b8d5f9d9fb + md5: cb0e7f08489ecfc881ec3197c3d8de15 depends: - - max-core ==25.1.0.dev2025020705 release + - max-core ==25.1.0.dev2025020805 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22985 - timestamp: 1738905467253 + size: 22988 + timestamp: 1738991846699 - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda sha256: 1895f47b7d68581a6facde5cb13ab8c2764c2e53a76bd746f8f98910dc4e08fe md5: 29097e7ea634a45cc5386b95cac6568f diff --git a/examples/operators/magic.lock b/examples/operators/magic.lock index 054332f7e3..26b3c6b49d 100644 --- a/examples/operators/magic.lock +++ b/examples/operators/magic.lock @@ -42,11 +42,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025020705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025020705-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020705-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025020805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025020805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020805-release.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-h2d0b736_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda @@ -107,11 +107,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025020705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025020705-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020705-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025020805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025020805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020805-release.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-ha32ae93_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda @@ -163,11 +163,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.48.0-h3f77e49_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020705-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025020705-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025020705-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020705-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020805-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025020805-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025020805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020805-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda @@ -1295,48 +1295,48 @@ packages: license_family: APACHE size: 280830 timestamp: 1736986295869 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020705-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020805-release.conda noarch: python - sha256: 71063b3725bb71dc536a00c01a29e4fbb35811948d9f9579c8dc8cf94476b95c - md5: 54bf7cc5ace04cf450d6410d758fd8d8 + sha256: 54b73005e4ac4053975e984eba3ab2c328c047f1aaf63217dac62be5a2a50087 + md5: fa2aa1710d82090e6d50d05907a703ea depends: - - max-core ==25.1.0.dev2025020705 release - - max-python ==25.1.0.dev2025020705 release - - mojo-jupyter ==25.1.0.dev2025020705 release - - mblack ==25.1.0.dev2025020705 release + - max-core ==25.1.0.dev2025020805 release + - max-python ==25.1.0.dev2025020805 release + - mojo-jupyter ==25.1.0.dev2025020805 release + - mblack ==25.1.0.dev2025020805 release license: LicenseRef-Modular-Proprietary - size: 9902 - timestamp: 1738905467253 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025020705-release.conda - sha256: 94a8de519b04ab4f7722c773b968d91afda047470a4a8d9ade85de13fba299ee - md5: 289388db7ca64402e82f6b6f1a2c69e4 + size: 9900 + timestamp: 1738991846700 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025020805-release.conda + sha256: d8d4cc499562b0d6c620f0019b5ed01235834af4e20349be726015d162ca21c1 + md5: da4c181f16eafb9d10c55137cc5466e6 depends: - - mblack ==25.1.0.dev2025020705 release + - mblack ==25.1.0.dev2025020805 release license: LicenseRef-Modular-Proprietary - size: 244773940 - timestamp: 1738905467253 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025020705-release.conda - sha256: d6a87e7c1299e0bcef1613b785c4de114b4544366fa704315d8abd5fd9b567e9 - md5: 84d677701f7ac3a3f5a2a36c19d4c094 + size: 244893250 + timestamp: 1738991846699 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025020805-release.conda + sha256: a336a9a8f01c93ca1ea041ceb153ef5b650d3a8e7ec8114103c9103479d76d4d + md5: c2e88cf91ed396b4162cc863b765a42a depends: - - mblack ==25.1.0.dev2025020705 release + - mblack ==25.1.0.dev2025020805 release license: LicenseRef-Modular-Proprietary - size: 247279675 - timestamp: 1738905446637 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025020705-release.conda - sha256: 89894981c1770d3e17f2b7991454b8b1d76d96e6407ddbb75ed90758f114e276 - md5: 4d9f1eea88804f2679b00afb72982159 + size: 247418130 + timestamp: 1738991808671 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025020805-release.conda + sha256: 091a2794945506a316c1ce75bd798bc1bf839328be59eb1c21c0b143c44f9c7a + md5: 7e09138f0f8a28dd30a01ebbe15f3078 depends: - - mblack ==25.1.0.dev2025020705 release + - mblack ==25.1.0.dev2025020805 release license: LicenseRef-Modular-Proprietary - size: 209655000 - timestamp: 1738907401724 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025020705-release.conda + size: 209778709 + timestamp: 1738994653883 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025020805-release.conda noarch: python - sha256: 02bb2a3076b2cf331119bf7c4a8da243c1fe0e79c0bee222f02506bcd7e4adf8 - md5: ad49c003bbfc528d87b09ee1828aaa85 + sha256: 80124268f375ed69f37bd91b8b061bd6c6153342c5b9053aca10eb3dcea7342a + md5: 0f14d712ff526fc8671e24b1497bd97f depends: - - max-core ==25.1.0.dev2025020705 release + - max-core ==25.1.0.dev2025020805 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1373,14 +1373,14 @@ packages: - uvicorn >=0.34.0 - uvloop >=0.21.0 license: LicenseRef-Modular-Proprietary - size: 120645177 - timestamp: 1738905467253 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025020705-release.conda + size: 120574508 + timestamp: 1738991846700 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025020805-release.conda noarch: python - sha256: 0ee24f05b67ec21823feec29c88ce47868d68350f4d9b074f456434d95045446 - md5: 6383961cb1ebd85c04a69852743a2164 + sha256: cd1637ea887314bc64b827a565cf06495ed4c065a3647c35019b9f9e603e4c00 + md5: f9c32f6c769df5e4e3a551d52b1e5c87 depends: - - max-core ==25.1.0.dev2025020705 release + - max-core ==25.1.0.dev2025020805 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1417,14 +1417,14 @@ packages: - uvicorn >=0.34.0 - uvloop >=0.21.0 license: LicenseRef-Modular-Proprietary - size: 123021659 - timestamp: 1738905446637 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025020705-release.conda + size: 123118238 + timestamp: 1738991808671 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025020805-release.conda noarch: python - sha256: 4265fa97227641d250f0fad72f2c2ee5af91e73b1e63b1d9e2d958f783020152 - md5: 6615b1e61aab3680992c2de39c6a77d3 + sha256: a8a45c2e7fde72557f537b759cea361416137c31f3123abc2199cd1162778bc5 + md5: 8d86afd47cf099690acd45ab4cb3e879 depends: - - max-core ==25.1.0.dev2025020705 release + - max-core ==25.1.0.dev2025020805 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1461,12 +1461,12 @@ packages: - uvicorn >=0.34.0 - uvloop >=0.21.0 license: LicenseRef-Modular-Proprietary - size: 108448298 - timestamp: 1738907401724 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020705-release.conda + size: 108495948 + timestamp: 1738994653883 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020805-release.conda noarch: python - sha256: e8bc67615e4aec76b6c3e7ee4c065425e67b6c661a7ab9bd57616dedb1edb38e - md5: ff8e8d8536d0b59944bdfd18ba7f430b + sha256: 9e8dd6eb0497a0630a6cbc699ca67bec88c078e5b8e84a2b213e145018c1922e + md5: cd757be5471b8ecc3c5e43b44183ae4f depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -1477,20 +1477,20 @@ packages: - typing_extensions >=v4.12.2 - python license: MIT - size: 130846 - timestamp: 1738905467253 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020705-release.conda + size: 130855 + timestamp: 1738991846699 +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020805-release.conda noarch: python - sha256: 7ec8cc093aacd2c2a29ed07f6c09f57b3a7b96440bf4267de2f8be59eae0ec2d - md5: 1bc6ab515b42167588830c884b0a4e7a + sha256: 01ce310a8f05bc16028bd8749c7decd899b2b569992b3db5790bd3b8d5f9d9fb + md5: cb0e7f08489ecfc881ec3197c3d8de15 depends: - - max-core ==25.1.0.dev2025020705 release + - max-core ==25.1.0.dev2025020805 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22985 - timestamp: 1738905467253 + size: 22988 + timestamp: 1738991846699 - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda sha256: 1895f47b7d68581a6facde5cb13ab8c2764c2e53a76bd746f8f98910dc4e08fe md5: 29097e7ea634a45cc5386b95cac6568f diff --git a/examples/testing/magic.lock b/examples/testing/magic.lock index 054332f7e3..26b3c6b49d 100644 --- a/examples/testing/magic.lock +++ b/examples/testing/magic.lock @@ -42,11 +42,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025020705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025020705-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020705-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025020805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025020805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020805-release.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-h2d0b736_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda @@ -107,11 +107,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025020705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025020705-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020705-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025020805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025020805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020805-release.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-ha32ae93_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda @@ -163,11 +163,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.48.0-h3f77e49_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020705-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025020705-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025020705-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020705-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020805-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025020805-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025020805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020805-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda @@ -1295,48 +1295,48 @@ packages: license_family: APACHE size: 280830 timestamp: 1736986295869 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020705-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020805-release.conda noarch: python - sha256: 71063b3725bb71dc536a00c01a29e4fbb35811948d9f9579c8dc8cf94476b95c - md5: 54bf7cc5ace04cf450d6410d758fd8d8 + sha256: 54b73005e4ac4053975e984eba3ab2c328c047f1aaf63217dac62be5a2a50087 + md5: fa2aa1710d82090e6d50d05907a703ea depends: - - max-core ==25.1.0.dev2025020705 release - - max-python ==25.1.0.dev2025020705 release - - mojo-jupyter ==25.1.0.dev2025020705 release - - mblack ==25.1.0.dev2025020705 release + - max-core ==25.1.0.dev2025020805 release + - max-python ==25.1.0.dev2025020805 release + - mojo-jupyter ==25.1.0.dev2025020805 release + - mblack ==25.1.0.dev2025020805 release license: LicenseRef-Modular-Proprietary - size: 9902 - timestamp: 1738905467253 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025020705-release.conda - sha256: 94a8de519b04ab4f7722c773b968d91afda047470a4a8d9ade85de13fba299ee - md5: 289388db7ca64402e82f6b6f1a2c69e4 + size: 9900 + timestamp: 1738991846700 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025020805-release.conda + sha256: d8d4cc499562b0d6c620f0019b5ed01235834af4e20349be726015d162ca21c1 + md5: da4c181f16eafb9d10c55137cc5466e6 depends: - - mblack ==25.1.0.dev2025020705 release + - mblack ==25.1.0.dev2025020805 release license: LicenseRef-Modular-Proprietary - size: 244773940 - timestamp: 1738905467253 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025020705-release.conda - sha256: d6a87e7c1299e0bcef1613b785c4de114b4544366fa704315d8abd5fd9b567e9 - md5: 84d677701f7ac3a3f5a2a36c19d4c094 + size: 244893250 + timestamp: 1738991846699 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025020805-release.conda + sha256: a336a9a8f01c93ca1ea041ceb153ef5b650d3a8e7ec8114103c9103479d76d4d + md5: c2e88cf91ed396b4162cc863b765a42a depends: - - mblack ==25.1.0.dev2025020705 release + - mblack ==25.1.0.dev2025020805 release license: LicenseRef-Modular-Proprietary - size: 247279675 - timestamp: 1738905446637 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025020705-release.conda - sha256: 89894981c1770d3e17f2b7991454b8b1d76d96e6407ddbb75ed90758f114e276 - md5: 4d9f1eea88804f2679b00afb72982159 + size: 247418130 + timestamp: 1738991808671 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025020805-release.conda + sha256: 091a2794945506a316c1ce75bd798bc1bf839328be59eb1c21c0b143c44f9c7a + md5: 7e09138f0f8a28dd30a01ebbe15f3078 depends: - - mblack ==25.1.0.dev2025020705 release + - mblack ==25.1.0.dev2025020805 release license: LicenseRef-Modular-Proprietary - size: 209655000 - timestamp: 1738907401724 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025020705-release.conda + size: 209778709 + timestamp: 1738994653883 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025020805-release.conda noarch: python - sha256: 02bb2a3076b2cf331119bf7c4a8da243c1fe0e79c0bee222f02506bcd7e4adf8 - md5: ad49c003bbfc528d87b09ee1828aaa85 + sha256: 80124268f375ed69f37bd91b8b061bd6c6153342c5b9053aca10eb3dcea7342a + md5: 0f14d712ff526fc8671e24b1497bd97f depends: - - max-core ==25.1.0.dev2025020705 release + - max-core ==25.1.0.dev2025020805 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1373,14 +1373,14 @@ packages: - uvicorn >=0.34.0 - uvloop >=0.21.0 license: LicenseRef-Modular-Proprietary - size: 120645177 - timestamp: 1738905467253 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025020705-release.conda + size: 120574508 + timestamp: 1738991846700 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025020805-release.conda noarch: python - sha256: 0ee24f05b67ec21823feec29c88ce47868d68350f4d9b074f456434d95045446 - md5: 6383961cb1ebd85c04a69852743a2164 + sha256: cd1637ea887314bc64b827a565cf06495ed4c065a3647c35019b9f9e603e4c00 + md5: f9c32f6c769df5e4e3a551d52b1e5c87 depends: - - max-core ==25.1.0.dev2025020705 release + - max-core ==25.1.0.dev2025020805 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1417,14 +1417,14 @@ packages: - uvicorn >=0.34.0 - uvloop >=0.21.0 license: LicenseRef-Modular-Proprietary - size: 123021659 - timestamp: 1738905446637 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025020705-release.conda + size: 123118238 + timestamp: 1738991808671 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025020805-release.conda noarch: python - sha256: 4265fa97227641d250f0fad72f2c2ee5af91e73b1e63b1d9e2d958f783020152 - md5: 6615b1e61aab3680992c2de39c6a77d3 + sha256: a8a45c2e7fde72557f537b759cea361416137c31f3123abc2199cd1162778bc5 + md5: 8d86afd47cf099690acd45ab4cb3e879 depends: - - max-core ==25.1.0.dev2025020705 release + - max-core ==25.1.0.dev2025020805 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1461,12 +1461,12 @@ packages: - uvicorn >=0.34.0 - uvloop >=0.21.0 license: LicenseRef-Modular-Proprietary - size: 108448298 - timestamp: 1738907401724 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020705-release.conda + size: 108495948 + timestamp: 1738994653883 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020805-release.conda noarch: python - sha256: e8bc67615e4aec76b6c3e7ee4c065425e67b6c661a7ab9bd57616dedb1edb38e - md5: ff8e8d8536d0b59944bdfd18ba7f430b + sha256: 9e8dd6eb0497a0630a6cbc699ca67bec88c078e5b8e84a2b213e145018c1922e + md5: cd757be5471b8ecc3c5e43b44183ae4f depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -1477,20 +1477,20 @@ packages: - typing_extensions >=v4.12.2 - python license: MIT - size: 130846 - timestamp: 1738905467253 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020705-release.conda + size: 130855 + timestamp: 1738991846699 +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020805-release.conda noarch: python - sha256: 7ec8cc093aacd2c2a29ed07f6c09f57b3a7b96440bf4267de2f8be59eae0ec2d - md5: 1bc6ab515b42167588830c884b0a4e7a + sha256: 01ce310a8f05bc16028bd8749c7decd899b2b569992b3db5790bd3b8d5f9d9fb + md5: cb0e7f08489ecfc881ec3197c3d8de15 depends: - - max-core ==25.1.0.dev2025020705 release + - max-core ==25.1.0.dev2025020805 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22985 - timestamp: 1738905467253 + size: 22988 + timestamp: 1738991846699 - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda sha256: 1895f47b7d68581a6facde5cb13ab8c2764c2e53a76bd746f8f98910dc4e08fe md5: 29097e7ea634a45cc5386b95cac6568f diff --git a/magic.lock b/magic.lock index 422141aee6..ba7f8373e8 100644 --- a/magic.lock +++ b/magic.lock @@ -43,11 +43,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/lit-19.1.7-pyhd8ed1ab_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025020705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025020705-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020705-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025020805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025020805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020805-release.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-h2d0b736_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda @@ -109,11 +109,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/lit-19.1.7-pyhd8ed1ab_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025020705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025020705-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020705-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025020805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025020805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020805-release.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-ha32ae93_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda @@ -166,11 +166,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/lit-19.1.7-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020705-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025020705-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025020705-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020705-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020805-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025020805-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025020805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020805-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda @@ -1307,48 +1307,48 @@ packages: license_family: APACHE size: 280830 timestamp: 1736986295869 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020705-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020805-release.conda noarch: python - sha256: 71063b3725bb71dc536a00c01a29e4fbb35811948d9f9579c8dc8cf94476b95c - md5: 54bf7cc5ace04cf450d6410d758fd8d8 + sha256: 54b73005e4ac4053975e984eba3ab2c328c047f1aaf63217dac62be5a2a50087 + md5: fa2aa1710d82090e6d50d05907a703ea depends: - - max-core ==25.1.0.dev2025020705 release - - max-python ==25.1.0.dev2025020705 release - - mojo-jupyter ==25.1.0.dev2025020705 release - - mblack ==25.1.0.dev2025020705 release + - max-core ==25.1.0.dev2025020805 release + - max-python ==25.1.0.dev2025020805 release + - mojo-jupyter ==25.1.0.dev2025020805 release + - mblack ==25.1.0.dev2025020805 release license: LicenseRef-Modular-Proprietary - size: 9902 - timestamp: 1738905467253 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025020705-release.conda - sha256: 94a8de519b04ab4f7722c773b968d91afda047470a4a8d9ade85de13fba299ee - md5: 289388db7ca64402e82f6b6f1a2c69e4 + size: 9900 + timestamp: 1738991846700 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025020805-release.conda + sha256: d8d4cc499562b0d6c620f0019b5ed01235834af4e20349be726015d162ca21c1 + md5: da4c181f16eafb9d10c55137cc5466e6 depends: - - mblack ==25.1.0.dev2025020705 release + - mblack ==25.1.0.dev2025020805 release license: LicenseRef-Modular-Proprietary - size: 244773940 - timestamp: 1738905467253 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025020705-release.conda - sha256: d6a87e7c1299e0bcef1613b785c4de114b4544366fa704315d8abd5fd9b567e9 - md5: 84d677701f7ac3a3f5a2a36c19d4c094 + size: 244893250 + timestamp: 1738991846699 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025020805-release.conda + sha256: a336a9a8f01c93ca1ea041ceb153ef5b650d3a8e7ec8114103c9103479d76d4d + md5: c2e88cf91ed396b4162cc863b765a42a depends: - - mblack ==25.1.0.dev2025020705 release + - mblack ==25.1.0.dev2025020805 release license: LicenseRef-Modular-Proprietary - size: 247279675 - timestamp: 1738905446637 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025020705-release.conda - sha256: 89894981c1770d3e17f2b7991454b8b1d76d96e6407ddbb75ed90758f114e276 - md5: 4d9f1eea88804f2679b00afb72982159 + size: 247418130 + timestamp: 1738991808671 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025020805-release.conda + sha256: 091a2794945506a316c1ce75bd798bc1bf839328be59eb1c21c0b143c44f9c7a + md5: 7e09138f0f8a28dd30a01ebbe15f3078 depends: - - mblack ==25.1.0.dev2025020705 release + - mblack ==25.1.0.dev2025020805 release license: LicenseRef-Modular-Proprietary - size: 209655000 - timestamp: 1738907401724 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025020705-release.conda + size: 209778709 + timestamp: 1738994653883 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025020805-release.conda noarch: python - sha256: 02bb2a3076b2cf331119bf7c4a8da243c1fe0e79c0bee222f02506bcd7e4adf8 - md5: ad49c003bbfc528d87b09ee1828aaa85 + sha256: 80124268f375ed69f37bd91b8b061bd6c6153342c5b9053aca10eb3dcea7342a + md5: 0f14d712ff526fc8671e24b1497bd97f depends: - - max-core ==25.1.0.dev2025020705 release + - max-core ==25.1.0.dev2025020805 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1385,14 +1385,14 @@ packages: - uvicorn >=0.34.0 - uvloop >=0.21.0 license: LicenseRef-Modular-Proprietary - size: 120645177 - timestamp: 1738905467253 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025020705-release.conda + size: 120574508 + timestamp: 1738991846700 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025020805-release.conda noarch: python - sha256: 0ee24f05b67ec21823feec29c88ce47868d68350f4d9b074f456434d95045446 - md5: 6383961cb1ebd85c04a69852743a2164 + sha256: cd1637ea887314bc64b827a565cf06495ed4c065a3647c35019b9f9e603e4c00 + md5: f9c32f6c769df5e4e3a551d52b1e5c87 depends: - - max-core ==25.1.0.dev2025020705 release + - max-core ==25.1.0.dev2025020805 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1429,14 +1429,14 @@ packages: - uvicorn >=0.34.0 - uvloop >=0.21.0 license: LicenseRef-Modular-Proprietary - size: 123021659 - timestamp: 1738905446637 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025020705-release.conda + size: 123118238 + timestamp: 1738991808671 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025020805-release.conda noarch: python - sha256: 4265fa97227641d250f0fad72f2c2ee5af91e73b1e63b1d9e2d958f783020152 - md5: 6615b1e61aab3680992c2de39c6a77d3 + sha256: a8a45c2e7fde72557f537b759cea361416137c31f3123abc2199cd1162778bc5 + md5: 8d86afd47cf099690acd45ab4cb3e879 depends: - - max-core ==25.1.0.dev2025020705 release + - max-core ==25.1.0.dev2025020805 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1473,12 +1473,12 @@ packages: - uvicorn >=0.34.0 - uvloop >=0.21.0 license: LicenseRef-Modular-Proprietary - size: 108448298 - timestamp: 1738907401724 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020705-release.conda + size: 108495948 + timestamp: 1738994653883 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020805-release.conda noarch: python - sha256: e8bc67615e4aec76b6c3e7ee4c065425e67b6c661a7ab9bd57616dedb1edb38e - md5: ff8e8d8536d0b59944bdfd18ba7f430b + sha256: 9e8dd6eb0497a0630a6cbc699ca67bec88c078e5b8e84a2b213e145018c1922e + md5: cd757be5471b8ecc3c5e43b44183ae4f depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -1489,20 +1489,20 @@ packages: - typing_extensions >=v4.12.2 - python license: MIT - size: 130846 - timestamp: 1738905467253 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020705-release.conda + size: 130855 + timestamp: 1738991846699 +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020805-release.conda noarch: python - sha256: 7ec8cc093aacd2c2a29ed07f6c09f57b3a7b96440bf4267de2f8be59eae0ec2d - md5: 1bc6ab515b42167588830c884b0a4e7a + sha256: 01ce310a8f05bc16028bd8749c7decd899b2b569992b3db5790bd3b8d5f9d9fb + md5: cb0e7f08489ecfc881ec3197c3d8de15 depends: - - max-core ==25.1.0.dev2025020705 release + - max-core ==25.1.0.dev2025020805 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22985 - timestamp: 1738905467253 + size: 22988 + timestamp: 1738991846699 - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda sha256: 1895f47b7d68581a6facde5cb13ab8c2764c2e53a76bd746f8f98910dc4e08fe md5: 29097e7ea634a45cc5386b95cac6568f From faccbac08aa7ec1fcce2789547f7b45071a41551 Mon Sep 17 00:00:00 2001 From: abdul dakkak Date: Fri, 7 Feb 2025 21:24:20 -0800 Subject: [PATCH 363/509] [Kernels][GPU] Rename float8_e4m3 to float8_e4m3fn This is the more correct naming of the type. MODULAR_ORIG_COMMIT_REV_ID: 7bd91934af066ea2872ad988c5ecdbd6311dd4dc --- stdlib/src/builtin/_format_float.mojo | 6 +++--- stdlib/src/builtin/dtype.mojo | 18 +++++++++--------- stdlib/src/builtin/simd.mojo | 16 ++++++++-------- stdlib/src/utils/numerics.mojo | 18 +++++++++--------- 4 files changed, 29 insertions(+), 29 deletions(-) diff --git a/stdlib/src/builtin/_format_float.mojo b/stdlib/src/builtin/_format_float.mojo index 9f5fde5fe1..ebd403a45c 100644 --- a/stdlib/src/builtin/_format_float.mojo +++ b/stdlib/src/builtin/_format_float.mojo @@ -109,9 +109,9 @@ fn _write_float[W: Writer, type: DType, //](mut writer: W, value: Scalar[type]): return writer.write( float8_e5m2_to_str[Int(bitcast[DType.uint8](value))] ) - elif type is DType.float8_e4m3: + elif type is DType.float8_e4m3fn: return writer.write( - float8_e4m3_to_str[Int(bitcast[DType.uint8](value))] + float8_e4m3fn_to_str[Int(bitcast[DType.uint8](value))] ) elif type is DType.float8_e5m2fnuz: return writer.write( @@ -1687,7 +1687,7 @@ alias float8_e5m2_to_str = StaticTuple[StringLiteral, 256]( "nan", ) -alias float8_e4m3_to_str = StaticTuple[StringLiteral, 256]( +alias float8_e4m3fn_to_str = StaticTuple[StringLiteral, 256]( "0.0", "0.001953125", "0.00390625", diff --git a/stdlib/src/builtin/dtype.mojo b/stdlib/src/builtin/dtype.mojo index 0b38797ac8..3fbb244978 100644 --- a/stdlib/src/builtin/dtype.mojo +++ b/stdlib/src/builtin/dtype.mojo @@ -94,7 +94,7 @@ struct DType( - fn: finite (no inf or -inf encodings) - uz: unsigned zero (no -0 encoding) """ - alias float8_e4m3 = DType( + alias float8_e4m3fn = DType( __mlir_attr.`#kgen.dtype.constant : !kgen.dtype` ) """Represents a FP8E4M3 floating point format from the [OFP8 @@ -199,8 +199,8 @@ struct DType( return DType.float8_e5m2 elif str == "float8_e5m2fnuz": return DType.float8_e5m2fnuz - elif str == "float8_e4m3": - return DType.float8_e4m3 + elif str == "float8_e4m3fn": + return DType.float8_e4m3fn elif str == "float8_e4m3fnuz": return DType.float8_e4m3fnuz elif str == "bfloat16": @@ -264,8 +264,8 @@ struct DType( return writer.write("float8_e5m2") if self == DType.float8_e5m2fnuz: return writer.write("float8_e5m2fnuz") - if self == DType.float8_e4m3: - return writer.write("float8_e4m3") + if self == DType.float8_e4m3fn: + return writer.write("float8_e4m3fn") if self == DType.float8_e4m3fnuz: return writer.write("float8_e4m3fnuz") if self == DType.bfloat16: @@ -470,7 +470,7 @@ struct DType( @always_inline("nodebug") fn is_float8(self) -> Bool: """Returns True if the type is a 8bit-precision floating point type, - e.g. float8_e5m2, float8_e5m2fnuz, float8_e4m3 and float8_e4m3fnuz. + e.g. float8_e5m2, float8_e5m2fnuz, float8_e4m3fn and float8_e4m3fnuz. Returns: True if the type is a 8bit-precision float, false otherwise. @@ -478,7 +478,7 @@ struct DType( return self in ( DType.float8_e5m2, - DType.float8_e4m3, + DType.float8_e4m3fn, DType.float8_e5m2fnuz, DType.float8_e4m3fnuz, ) @@ -539,8 +539,8 @@ struct DType( return sizeof[DType.float8_e5m2]() if self == DType.float8_e5m2fnuz: return sizeof[DType.float8_e5m2fnuz]() - if self == DType.float8_e4m3: - return sizeof[DType.float8_e4m3]() + if self == DType.float8_e4m3fn: + return sizeof[DType.float8_e4m3fn]() if self == DType.float8_e4m3fnuz: return sizeof[DType.float8_e4m3fnuz]() if self == DType.bfloat16: diff --git a/stdlib/src/builtin/simd.mojo b/stdlib/src/builtin/simd.mojo index 5683dd0557..f757d53340 100644 --- a/stdlib/src/builtin/simd.mojo +++ b/stdlib/src/builtin/simd.mojo @@ -122,7 +122,7 @@ The 8 bits are encoded as `seeeeemm`: - fn: finite (no inf or -inf encodings) - uz: unsigned zero (no -0 encoding) """ -alias Float8_e4m3 = Scalar[DType.float8_e4m3] +alias Float8_e4m3 = Scalar[DType.float8_e4m3fn] """Represents a FP8E4M3 floating point format from the [OFP8 standard](https://www.opencompute.org/documents/ocp-8-bit-floating-point-specification-ofp8-revision-1-0-2023-12-01-pdf-1). @@ -556,7 +556,7 @@ struct SIMD[type: DType, size: Int]( # TODO (#36686): This introduces unneeded casts here to work around # parameter if issues. @parameter - if type is DType.float8_e4m3: + if type is DType.float8_e4m3fn: self = SIMD[type, size]( __mlir_op.`pop.simd.splat`[ _type = __mlir_type[ @@ -1830,7 +1830,7 @@ struct SIMD[type: DType, size: Int]( return self.cast[DType.float32]().cast[target]() @parameter - if target in (DType.float8_e4m3, DType.float8_e5m2): + if target in (DType.float8_e4m3fn, DType.float8_e5m2): # TODO(KERN-1488): use gpu (H100) instruction to convert from fp16 to fp8 return rebind[SIMD[target, size]]( _convert_f32_to_float8[size=size, target=target]( @@ -1841,7 +1841,7 @@ struct SIMD[type: DType, size: Int]( ) @parameter - if type in (DType.float8_e4m3, DType.float8_e5m2): + if type in (DType.float8_e4m3fn, DType.float8_e5m2): constrained[ target in (DType.float32, DType.float16, DType.bfloat16), ( @@ -3198,7 +3198,7 @@ fn _convert_float8_to_f32_scaler[ ](x: Scalar[type]) -> Scalar[DType.float32]: var kF32_NaN: UInt32 = 0x7FFFFFFF var FP8_NUM_BITS = 8 - var IS_E4M3 = type is DType.float8_e4m3 + var IS_E4M3 = type is DType.float8_e4m3fn var FP8_NUM_MANTISSA_BITS = FPUtils[type].mantissa_width() var FP8_NUM_EXPONENT_BITS = FPUtils[type].exponent_width() var FP32_NUM_BITS = 32 @@ -3283,7 +3283,7 @@ fn _convert_float8_to_f16[ ](val: SIMD[type, size],) -> SIMD[DType.float16, size]: @parameter if is_nvidia_gpu() and _is_sm_9x(): - alias asm_prefix = "cvt.rn.f16x2.e4m3x2" if type is DType.float8_e4m3 else "cvt.rn.f16x2.e5m2x2" + alias asm_prefix = "cvt.rn.f16x2.e4m3x2" if type is DType.float8_e4m3fn else "cvt.rn.f16x2.e5m2x2" var val_uint8 = bitcast[DType.uint8](val) @parameter @@ -3325,7 +3325,7 @@ fn _convert_f32_to_float8[ ](val: SIMD[type, size],) -> SIMD[target, size]: @parameter if is_nvidia_gpu() and _is_sm_9x(): - alias asm_prefix = "cvt.rn.satfinite.e4m3x2.f32" if target is DType.float8_e4m3 else "cvt.rn.satfinite.e5m2x2.f32" + alias asm_prefix = "cvt.rn.satfinite.e4m3x2.f32" if target is DType.float8_e4m3fn else "cvt.rn.satfinite.e5m2x2.f32" @parameter if size > 1: @@ -3374,7 +3374,7 @@ fn _convert_f32_to_float8_scaler[ ](x: Scalar[type]) -> Scalar[target]: # software implementation rounds toward nearest even - alias IS_E4M3 = target is DType.float8_e4m3 + alias IS_E4M3 = target is DType.float8_e4m3fn alias FP8_NUM_MANTISSA_BITS = FPUtils[target].mantissa_width() alias FP8_NUM_EXPONENT_BITS = FPUtils[target].exponent_width() alias FP32_NUM_BITS = bitwidthof[type]() diff --git a/stdlib/src/utils/numerics.mojo b/stdlib/src/utils/numerics.mojo index 4eddc38a80..83fce9c590 100644 --- a/stdlib/src/utils/numerics.mojo +++ b/stdlib/src/utils/numerics.mojo @@ -67,7 +67,7 @@ struct FPUtils[ """ @parameter - if type in (DType.float8_e4m3, DType.float8_e4m3fnuz): + if type in (DType.float8_e4m3fn, DType.float8_e4m3fnuz): return 3 elif type in (DType.float8_e5m2, DType.float8_e5m2fnuz): return 2 @@ -94,7 +94,7 @@ struct FPUtils[ """ @parameter - if type in (DType.float8_e4m3, DType.float8_e4m3fnuz): + if type in (DType.float8_e4m3fn, DType.float8_e4m3fnuz): return 8 elif type in (DType.float8_e5m2, DType.float8_e5m2fnuz, DType.float16): return 16 @@ -114,7 +114,7 @@ struct FPUtils[ """ @parameter - if type in (DType.float8_e4m3, DType.float8_e4m3fnuz): + if type in (DType.float8_e4m3fn, DType.float8_e4m3fnuz): return 4 elif type in (DType.float8_e5m2, DType.float8_e5m2fnuz, DType.float16): return 5 @@ -527,7 +527,7 @@ fn nan[type: DType]() -> Scalar[type]: ], ]() ) - elif type is DType.float8_e4m3: + elif type is DType.float8_e4m3fn: return rebind[__mlir_type[`!pop.scalar<`, type.value, `>`]]( __mlir_op.`kgen.param.constant`[ _type = __mlir_type[`!pop.scalar`], @@ -608,7 +608,7 @@ fn isnan[ alias int_dtype = _integral_type_of[type]() @parameter - if type is DType.float8_e4m3: + if type is DType.float8_e4m3fn: return (bitcast[int_dtype, simd_width](val) & 0x7F) == 0x7F elif type is DType.float8_e5m2: # For the float8_e5m2 type NaN is limited to 0x7F and 0xFF values. @@ -665,7 +665,7 @@ fn inf[type: DType]() -> Scalar[type]: ], ]() ) - elif type is DType.float8_e4m3: + elif type is DType.float8_e4m3fn: return rebind[__mlir_type[`!pop.scalar<`, type.value, `>`]]( __mlir_op.`kgen.param.constant`[ _type = __mlir_type[`!pop.scalar`], @@ -750,7 +750,7 @@ fn neg_inf[type: DType]() -> Scalar[type]: ], ]() ) - elif type is DType.float8_e4m3: + elif type is DType.float8_e4m3fn: return rebind[__mlir_type[`!pop.scalar<`, type.value, `>`]]( __mlir_op.`kgen.param.constant`[ _type = __mlir_type[`!pop.scalar`], @@ -837,7 +837,7 @@ fn max_finite[type: DType]() -> Scalar[type]: return 9223372036854775807 elif type is DType.uint64: return 18446744073709551615 - elif type is DType.float8_e4m3: + elif type is DType.float8_e4m3fn: return 448 elif type is DType.float8_e4m3fnuz: return 240 @@ -1044,7 +1044,7 @@ fn get_accum_type[type: DType]() -> DType: """ return DType.float32 if ( - type.is_half_float() or type in (DType.float8_e4m3, DType.float8_e5m2) + type.is_half_float() or type in (DType.float8_e4m3fn, DType.float8_e5m2) ) else type From 0bf2b595b6614addb66ea8946e118bc67a0bf611 Mon Sep 17 00:00:00 2001 From: abdul dakkak Date: Sat, 8 Feb 2025 09:11:30 -0800 Subject: [PATCH 364/509] [Stdlib] Correctly assign the float8_e4m3fn type MODULAR_ORIG_COMMIT_REV_ID: cfe823feeec2b42e79facc573da5c97eb42d83c5 --- stdlib/src/builtin/dtype.mojo | 2 +- stdlib/src/builtin/simd.mojo | 6 +++--- stdlib/src/prelude/__init__.mojo | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/stdlib/src/builtin/dtype.mojo b/stdlib/src/builtin/dtype.mojo index 3fbb244978..7068003d60 100644 --- a/stdlib/src/builtin/dtype.mojo +++ b/stdlib/src/builtin/dtype.mojo @@ -95,7 +95,7 @@ struct DType( - uz: unsigned zero (no -0 encoding) """ alias float8_e4m3fn = DType( - __mlir_attr.`#kgen.dtype.constant : !kgen.dtype` + __mlir_attr.`#kgen.dtype.constant : !kgen.dtype` ) """Represents a FP8E4M3 floating point format from the [OFP8 standard](https://www.opencompute.org/documents/ocp-8-bit-floating-point-specification-ofp8-revision-1-0-2023-12-01-pdf-1). diff --git a/stdlib/src/builtin/simd.mojo b/stdlib/src/builtin/simd.mojo index f757d53340..22bcdce8ab 100644 --- a/stdlib/src/builtin/simd.mojo +++ b/stdlib/src/builtin/simd.mojo @@ -122,7 +122,7 @@ The 8 bits are encoded as `seeeeemm`: - fn: finite (no inf or -inf encodings) - uz: unsigned zero (no -0 encoding) """ -alias Float8_e4m3 = Scalar[DType.float8_e4m3fn] +alias Float8_e4m3fn = Scalar[DType.float8_e4m3fn] """Represents a FP8E4M3 floating point format from the [OFP8 standard](https://www.opencompute.org/documents/ocp-8-bit-floating-point-specification-ofp8-revision-1-0-2023-12-01-pdf-1). @@ -565,10 +565,10 @@ struct SIMD[type: DType, size: Int]( ]( rebind[__mlir_type[`!pop.scalar<`, type.value, `>`]]( __mlir_op.`pop.cast_from_builtin`[ - _type = __mlir_type[`!pop.scalar`] + _type = __mlir_type[`!pop.scalar`] ]( __mlir_op.`kgen.float_literal.convert`[ - _type = __mlir_type.f8E4M3 + _type = __mlir_type.f8E4M3FN ](value.value) ) ) diff --git a/stdlib/src/prelude/__init__.mojo b/stdlib/src/prelude/__init__.mojo index 56dc6be9b4..a32183050e 100644 --- a/stdlib/src/prelude/__init__.mojo +++ b/stdlib/src/prelude/__init__.mojo @@ -90,7 +90,7 @@ from builtin.simd import ( Byte, Float8_e5m2, Float8_e5m2fnuz, - Float8_e4m3, + Float8_e4m3fn, Float8_e4m3fnuz, Float16, Float32, From b18c1ce7c916b6846bb6e57970156aff4b8ac8b0 Mon Sep 17 00:00:00 2001 From: modularbot Date: Sun, 9 Feb 2025 17:14:12 +0000 Subject: [PATCH 365/509] Update lockfiles to point to latest nightly version: 25.1.0.dev2025020905 --- examples/life/magic.lock | 483 +++++++++++++++++----------------- examples/magic.lock | 142 +++++----- examples/operators/magic.lock | 142 +++++----- examples/testing/magic.lock | 142 +++++----- magic.lock | 142 +++++----- 5 files changed, 521 insertions(+), 530 deletions(-) diff --git a/examples/life/magic.lock b/examples/life/magic.lock index 11f73daab7..8f99f91e95 100644 --- a/examples/life/magic.lock +++ b/examples/life/magic.lock @@ -28,8 +28,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2 - 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/gettext-0.22.5-he02047a_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/gettext-tools-0.22.5-he02047a_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gettext-0.23.1-h5888daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gettext-tools-0.23.1-h5888daf_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.13-h59595ed_1003.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-10.2.0-h4bba637_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda @@ -43,8 +43,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libasprintf-0.22.5-he8f35ee_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libasprintf-devel-0.22.5-he8f35ee_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libasprintf-0.23.1-h8e693c7_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libasprintf-devel-0.23.1-h8e693c7_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libavif16-1.1.1-h1909e37_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-28_h59b9bed_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libcap-2.71-h39aace5_0.conda @@ -58,8 +58,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h77fa898_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcrypt-lib-1.11.0-hb9d3cd8_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgettextpo-0.22.5-he02047a_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgettextpo-devel-0.22.5-he02047a_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgettextpo-0.23.1-h5888daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgettextpo-devel-0.23.1-h5888daf_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hd5240d6_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.82.2-h2ff4ddf_1.conda @@ -91,11 +91,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.10.0-h5888daf_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020805-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025020805-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025020805-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020805-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020905-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025020905-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025020905-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020905-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020905-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/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda @@ -166,8 +166,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2 - 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/gettext-0.22.5-h0a1ffab_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gettext-tools-0.22.5-h0a1ffab_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gettext-0.23.1-h5ad3122_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gettext-tools-0.23.1-h5ad3122_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/graphite2-1.3.13-h2f0025b_1003.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/harfbuzz-10.2.0-h785c1aa_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda @@ -181,8 +181,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.0.0-h4de3ea5_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h18dbdb1_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libasprintf-0.22.5-h87f4aca_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libasprintf-devel-0.22.5-h87f4aca_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libasprintf-0.23.1-h5e0f5ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libasprintf-devel-0.23.1-h5e0f5ae_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libavif16-1.1.1-h3b0c220_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-28_h1a9f1db_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcap-2.71-h51d75a7_0.conda @@ -196,8 +196,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-14.2.0-he277a41_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-14.2.0-he9431aa_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcrypt-lib-1.11.0-h86ecc28_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgettextpo-0.22.5-h0a1ffab_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgettextpo-devel-0.22.5-h0a1ffab_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgettextpo-0.23.1-h5ad3122_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgettextpo-devel-0.23.1-h5ad3122_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libglib-2.82.2-hc486b8e_1.conda @@ -229,11 +229,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.10.0-h5ad3122_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020805-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025020805-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025020805-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020805-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020905-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025020905-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025020905-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020905-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020905-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/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-ha32ae93_3.conda @@ -299,8 +299,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2 - 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/gettext-0.22.5-h8414b35_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gettext-tools-0.22.5-h8414b35_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gettext-0.23.1-h3dcc1bd_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gettext-tools-0.23.1-h493aca8_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/graphite2-1.3.13-hebf3989_1003.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/harfbuzz-10.2.0-ha0dd535_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda @@ -311,8 +311,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lame-3.100-h1a8c8d9_1003.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_h07bc746_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libasprintf-0.22.5-h8414b35_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libasprintf-devel-0.22.5-h8414b35_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libasprintf-0.23.1-h493aca8_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libasprintf-devel-0.23.1-h493aca8_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libavif16-1.1.1-h45b7238_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-28_h10e41b3_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-28_hb3479ef_openblas.conda @@ -322,14 +322,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.4-h286801f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libflac-1.4.3-hb765f3a_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgettextpo-0.22.5-h8414b35_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgettextpo-devel-0.22.5-h8414b35_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgettextpo-0.23.1-h493aca8_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgettextpo-devel-0.23.1-h493aca8_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libglib-2.82.2-hdff4504_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.17-h0d3ecfb_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libintl-0.22.5-h8414b35_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libintl-devel-0.22.5-h8414b35_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libintl-0.23.1-h493aca8_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libintl-devel-0.23.1-h493aca8_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.0.0-hb547adb_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-28_hc9a63f6_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.4-h39f12f2_0.conda @@ -348,11 +348,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.5.0-h2471fea_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020805-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025020805-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025020805-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020805-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020905-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025020905-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025020905-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020905-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020905-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/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda @@ -929,94 +929,91 @@ packages: license: GPL-2.0-only OR FTL size: 596430 timestamp: 1694616332835 -- conda: https://conda.anaconda.org/conda-forge/linux-64/gettext-0.22.5-he02047a_3.conda - sha256: c3d9a453f523acbf2b3e1c82a42edfc7c7111b4686a2180ab48cb9b51a274218 - md5: c7f243bbaea97cd6ea1edd693270100e +- conda: https://conda.anaconda.org/conda-forge/linux-64/gettext-0.23.1-h5888daf_0.conda + sha256: 9d93e75a63a8ca8f86d1be09f68f1211754e6f1e9ee4fa6d90b9d46ee0f1dabb + md5: 0754038c806eae440582da1c3af85577 depends: - __glibc >=2.17,<3.0.a0 - - gettext-tools 0.22.5 he02047a_3 - - libasprintf 0.22.5 he8f35ee_3 - - libasprintf-devel 0.22.5 he8f35ee_3 - - libgcc-ng >=12 - - libgettextpo 0.22.5 he02047a_3 - - libgettextpo-devel 0.22.5 he02047a_3 - - libstdcxx-ng >=12 + - gettext-tools 0.23.1 h5888daf_0 + - libasprintf 0.23.1 h8e693c7_0 + - libasprintf-devel 0.23.1 h8e693c7_0 + - libgcc >=13 + - libgettextpo 0.23.1 h5888daf_0 + - libgettextpo-devel 0.23.1 h5888daf_0 + - libstdcxx >=13 arch: x86_64 platform: linux license: LGPL-2.1-or-later AND GPL-3.0-or-later - size: 479452 - timestamp: 1723626088190 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gettext-0.22.5-h0a1ffab_3.conda - sha256: 25b0b40329537f374a7394474376b01fd226e31f3ff3aa9254e8d328b23c2145 - md5: be78ccdd273e43e27e66fc1629df6576 - depends: - - gettext-tools 0.22.5 h0a1ffab_3 - - libasprintf 0.22.5 h87f4aca_3 - - libasprintf-devel 0.22.5 h87f4aca_3 - - libgcc-ng >=12 - - libgettextpo 0.22.5 h0a1ffab_3 - - libgettextpo-devel 0.22.5 h0a1ffab_3 - - libstdcxx-ng >=12 + size: 484344 + timestamp: 1739038829530 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gettext-0.23.1-h5ad3122_0.conda + sha256: fae61ce07f930c00de83d7bc3b5bfc1d981d500517894434632c1565b9a6e579 + md5: 6a8190d3f7d7a171aeacf7d01bb9b14f + depends: + - gettext-tools 0.23.1 h5ad3122_0 + - libasprintf 0.23.1 h5e0f5ae_0 + - libasprintf-devel 0.23.1 h5e0f5ae_0 + - libgcc >=13 + - libgettextpo 0.23.1 h5ad3122_0 + - libgettextpo-devel 0.23.1 h5ad3122_0 + - libstdcxx >=13 arch: aarch64 platform: linux license: LGPL-2.1-or-later AND GPL-3.0-or-later - size: 481962 - timestamp: 1723626297896 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/gettext-0.22.5-h8414b35_3.conda - sha256: 634e11f6e6560568ede805f823a2be8634c6a0a2fa6743880ec403d925923138 - md5: 89b31a91b3ac2b7b3b0e5bc4eb99c39d + size: 479395 + timestamp: 1739038679347 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/gettext-0.23.1-h3dcc1bd_0.conda + sha256: 9311cd9e64f0ae3bccae58b5b68a4804abd8b3c49f4f327b9573b50b026b317e + md5: 123c4d62e1bcba6274511af8c7cf40d5 depends: - __osx >=11.0 - - gettext-tools 0.22.5 h8414b35_3 - - libasprintf 0.22.5 h8414b35_3 - - libasprintf-devel 0.22.5 h8414b35_3 - - libcxx >=16 - - libgettextpo 0.22.5 h8414b35_3 - - libgettextpo-devel 0.22.5 h8414b35_3 + - gettext-tools 0.23.1 h493aca8_0 + - libasprintf 0.23.1 h493aca8_0 + - libasprintf-devel 0.23.1 h493aca8_0 + - libcxx >=18 + - libgettextpo 0.23.1 h493aca8_0 + - libgettextpo-devel 0.23.1 h493aca8_0 - libiconv >=1.17,<2.0a0 - - libintl 0.22.5 h8414b35_3 - - libintl-devel 0.22.5 h8414b35_3 + - libintl 0.23.1 h493aca8_0 + - libintl-devel 0.23.1 h493aca8_0 arch: arm64 platform: osx license: LGPL-2.1-or-later AND GPL-3.0-or-later - size: 483255 - timestamp: 1723627203687 -- conda: https://conda.anaconda.org/conda-forge/linux-64/gettext-tools-0.22.5-he02047a_3.conda - sha256: 0fd003953ce1ce9f4569458aab9ffaa397e3be2bc069250e2f05fd93b0ad2976 - md5: fcd2016d1d299f654f81021e27496818 + size: 484476 + timestamp: 1739039461682 +- conda: https://conda.anaconda.org/conda-forge/linux-64/gettext-tools-0.23.1-h5888daf_0.conda + sha256: dd2b54a823ea994c2a7908fcce40e1e612ca00cb9944f2382624ff2d3aa8db03 + md5: 2f659535feef3cfb782f7053c8775a32 depends: - __glibc >=2.17,<3.0.a0 - - libgcc-ng >=12 + - libgcc >=13 arch: x86_64 platform: linux license: GPL-3.0-or-later - license_family: GPL - size: 2750908 - timestamp: 1723626056740 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gettext-tools-0.22.5-h0a1ffab_3.conda - sha256: 9846b9d2e3d081cc8cb9ac7800c7e02a7b63bceea8619e0c51cfa271f89afdb2 - md5: 5fc8dfe3163ead62e0af82d97ce6b486 + size: 2967824 + timestamp: 1739038787800 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gettext-tools-0.23.1-h5ad3122_0.conda + sha256: 01f55fbf243f471ef426751de914b62fa21418ca3d0aa7a6983f0f87f6ec84e4 + md5: ba6d592245d2c0eb497cd11f70b50df7 depends: - - libgcc-ng >=12 + - libgcc >=13 arch: aarch64 platform: linux license: GPL-3.0-or-later - license_family: GPL - size: 2954814 - timestamp: 1723626262722 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/gettext-tools-0.22.5-h8414b35_3.conda - sha256: 50b530cf2326938b80330f78cf4056492fa8c6a5c7e313d92069ebbbb2f4d264 - md5: 47071f4b2915032e1d47119f779f9d9c + size: 3232815 + timestamp: 1739038646552 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/gettext-tools-0.23.1-h493aca8_0.conda + sha256: c26b38bcff84b3af52f061f55de27a45fb2e9a0544c32b3cbddf8be97c80c296 + md5: 4086817e75778198f96c9b2ed4bc5a6e depends: - __osx >=11.0 - libiconv >=1.17,<2.0a0 - - libintl 0.22.5 h8414b35_3 + - libintl 0.23.1 h493aca8_0 arch: arm64 platform: osx license: GPL-3.0-or-later - license_family: GPL - size: 2467439 - timestamp: 1723627140130 + size: 2890553 + timestamp: 1739039406578 - conda: https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.13-h59595ed_1003.conda sha256: 0595b009f20f8f60f13a6398e7cdcbd2acea5f986633adcf85f5a2283c992add md5: f87c7b7c2cb45f323ffbce941c78ab7c @@ -1416,74 +1413,74 @@ packages: license_family: Apache size: 1178260 timestamp: 1736008642885 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libasprintf-0.22.5-he8f35ee_3.conda - sha256: 2da5c735811cbf38c7f7844ab457ff8b25046bbf5fe5ebd5dc1c2fafdf4fbe1c - md5: 4fab9799da9571266d05ca5503330655 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libasprintf-0.23.1-h8e693c7_0.conda + sha256: 13b863584fccbb9089de73a2442e540703ce4873e4719c9d98c98e4a8e12f9d1 + md5: 988f4937281a66ca19d1adb3b5e3f859 depends: - __glibc >=2.17,<3.0.a0 - - libgcc-ng >=12 - - libstdcxx-ng >=12 + - libgcc >=13 + - libstdcxx >=13 arch: x86_64 platform: linux license: LGPL-2.1-or-later - size: 42817 - timestamp: 1723626012203 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libasprintf-0.22.5-h87f4aca_3.conda - sha256: b438814a7190a541950da68d3cde8ecbcc55629ce677eb65afbb01cfa1e4e651 - md5: 332ce64c2dec75dc0849e7ffcdf7a3a4 + size: 43179 + timestamp: 1739038705987 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libasprintf-0.23.1-h5e0f5ae_0.conda + sha256: f80d436462d78c459758176d59b0231c3cce99502408c2e4af03bacee786fc94 + md5: b34cfd925b96e72b99286e0cff036e82 depends: - - libgcc-ng >=12 - - libstdcxx-ng >=12 + - libgcc >=13 + - libstdcxx >=13 arch: aarch64 platform: linux license: LGPL-2.1-or-later - size: 42627 - timestamp: 1723626204541 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libasprintf-0.22.5-h8414b35_3.conda - sha256: 819bf95543470658f48db53a267a3fabe1616797c4031cf88e63f451c5029e6f - md5: 472b673c083175195965a48f2f4808f8 + size: 43700 + timestamp: 1739038595159 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libasprintf-0.23.1-h493aca8_0.conda + sha256: 2b27d2ede7867fd362f94644aac1d7fb9af7f7fc3f122cb014647b47ffd402a4 + md5: baf9e4423f10a15ca7eab26480007639 depends: - __osx >=11.0 - - libcxx >=16 + - libcxx >=18 arch: arm64 platform: osx license: LGPL-2.1-or-later - size: 40657 - timestamp: 1723626937704 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libasprintf-devel-0.22.5-he8f35ee_3.conda - sha256: ccc7967e298ddf3124c8ad9741c7180dc6f778ae4135ec87978214f7b3c64dc2 - md5: 1091193789bb830127ed067a9e01ac57 + size: 41679 + timestamp: 1739039255705 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libasprintf-devel-0.23.1-h8e693c7_0.conda + sha256: b05a859fe5a2b43574f3a5d93552061232b92d17017b27ecab1eccca1dbb2fe4 + md5: 2827e722a963b779ce878ef9b5474534 depends: - __glibc >=2.17,<3.0.a0 - - libasprintf 0.22.5 he8f35ee_3 - - libgcc-ng >=12 + - libasprintf 0.23.1 h8e693c7_0 + - libgcc >=13 arch: x86_64 platform: linux license: LGPL-2.1-or-later - size: 34172 - timestamp: 1723626026096 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libasprintf-devel-0.22.5-h87f4aca_3.conda - sha256: c9eda86140a5a023b72a8997f82629f4b071df17d57d00ba75a66b65a0525a5e - md5: dbaa9d8c0030bda3e3d22d325ea48191 + size: 34282 + timestamp: 1739038733352 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libasprintf-devel-0.23.1-h5e0f5ae_0.conda + sha256: 35829ce5805229b83e9b660ec6579b04c5ec83ac82ef72d93b31ea47def1ac09 + md5: ec789924a13fcd14c53cbf90ea1b8551 depends: - - libasprintf 0.22.5 h87f4aca_3 - - libgcc-ng >=12 + - libasprintf 0.23.1 h5e0f5ae_0 + - libgcc >=13 arch: aarch64 platform: linux license: LGPL-2.1-or-later - size: 34359 - timestamp: 1723626223953 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libasprintf-devel-0.22.5-h8414b35_3.conda - sha256: ca7322f7c3f1a68cb36630eaa88a44c774261150d42d70a4be3d77bc9ed28d5d - md5: a03ca97f9fabf5626660697c2e0b8850 + size: 34348 + timestamp: 1739038610428 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libasprintf-devel-0.23.1-h493aca8_0.conda + sha256: 25999d3c78270440e7e9e06c2e6f4a2e1ac11d2df84ac7b24280c6f530eed06f + md5: 13d4d79418eb3137fc94fe61e9e572e7 depends: - __osx >=11.0 - - libasprintf 0.22.5 h8414b35_3 + - libasprintf 0.23.1 h493aca8_0 arch: arm64 platform: osx license: LGPL-2.1-or-later - size: 34648 - timestamp: 1723626983419 + size: 34641 + timestamp: 1739039285881 - conda: https://conda.anaconda.org/conda-forge/linux-64/libavif16-1.1.1-h1909e37_2.conda sha256: e06da844b007a64a9ac35d4e3dc4dbc66583f79b57d08166cf58f2f08723a6e8 md5: 21e468ed3786ebcb2124b123aa2484b7 @@ -1955,81 +1952,75 @@ packages: license: LGPL-2.1-or-later size: 635094 timestamp: 1732523317415 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgettextpo-0.22.5-he02047a_3.conda - sha256: 7f2d1f4d69973e2c3c3d2b6420d5eb989982baba97d63ab2d7a2b25a92d886b4 - md5: efab66b82ec976930b96d62a976de8e7 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgettextpo-0.23.1-h5888daf_0.conda + sha256: 190097140d9c16637aa516757d8087f17e8c22cc844c87288da64404b81ef43c + md5: a09ce5decdef385bcce78c32809fa794 depends: - __glibc >=2.17,<3.0.a0 - - libgcc-ng >=12 + - libgcc >=13 arch: x86_64 platform: linux license: GPL-3.0-or-later - license_family: GPL - size: 170646 - timestamp: 1723626019265 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgettextpo-0.22.5-h0a1ffab_3.conda - sha256: f816747b63432def4bfe2bfa517057149b2b94a48101fe13e7fcc2c223ec2042 - md5: 263a0b8af4b3fcdb35acc4038bb5bff5 + size: 166867 + timestamp: 1739038720211 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgettextpo-0.23.1-h5ad3122_0.conda + sha256: 5fe9ea0f19d4f89c5f5030a5aad853e05d1fe001ee003e102e4a2a01b0e157cc + md5: 04aa6b35d4581b59aafb2683345579d7 depends: - - libgcc-ng >=12 + - libgcc >=13 arch: aarch64 platform: linux license: GPL-3.0-or-later - license_family: GPL - size: 199824 - timestamp: 1723626215655 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgettextpo-0.22.5-h8414b35_3.conda - sha256: bc446fad58155e96a01b28e99254415c2151bdddf57f9a2c00c44e6f0298bb62 - md5: c8cd7295cfb7bda5cbabea4fef904349 + size: 207214 + timestamp: 1739038603075 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgettextpo-0.23.1-h493aca8_0.conda + sha256: 4dbd3f698d027330033f06778567eda5b985e2348ca92900083654a114ddd051 + md5: 18ad77def4cb7326692033eded9c815d depends: - __osx >=11.0 - libiconv >=1.17,<2.0a0 - - libintl 0.22.5 h8414b35_3 + - libintl 0.23.1 h493aca8_0 arch: arm64 platform: osx license: GPL-3.0-or-later - license_family: GPL - size: 159800 - timestamp: 1723627007035 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgettextpo-devel-0.22.5-he02047a_3.conda - sha256: 0a66cdd46d1cd5201061252535cd91905b3222328a9294c1a5bcd32e85531545 - md5: 9aba7960731e6b4547b3a52f812ed801 + size: 166929 + timestamp: 1739039303132 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgettextpo-devel-0.23.1-h5888daf_0.conda + sha256: 90f29ec7a7e2d758cb61459e643dcb54933dcf92194be6c29b0a1591fcbb163e + md5: 7a5d5c245a6807deab87558e9efd3ef0 depends: - __glibc >=2.17,<3.0.a0 - - libgcc-ng >=12 - - libgettextpo 0.22.5 he02047a_3 + - libgcc >=13 + - libgettextpo 0.23.1 h5888daf_0 arch: x86_64 platform: linux license: GPL-3.0-or-later - license_family: GPL - size: 36790 - timestamp: 1723626032786 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgettextpo-devel-0.22.5-h0a1ffab_3.conda - sha256: 677df7af241b36c6b06dff52528c2a8e4f42f8cf40d962e693caa707b563c86c - md5: 5c1498c4da030824d57072f05220aad8 + size: 36818 + timestamp: 1739038746565 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgettextpo-devel-0.23.1-h5ad3122_0.conda + sha256: e56df439c17f8a273ba7e9719def4ac3ff7aaadf37cad92179f4437d753e81a6 + md5: cb0245a67410b455cb8ee80f407f185f depends: - - libgcc-ng >=12 - - libgettextpo 0.22.5 h0a1ffab_3 + - libgcc >=13 + - libgettextpo 0.23.1 h5ad3122_0 arch: aarch64 platform: linux license: GPL-3.0-or-later - license_family: GPL - size: 36989 - timestamp: 1723626232155 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgettextpo-devel-0.22.5-h8414b35_3.conda - sha256: ea3ca757bf11ed25965b39466b50411c7c2a43f3b90ab4a36fc0ef43f7ab98ac - md5: 7074dc1c9aae1bb5d7bccb4ff03746ca + size: 37031 + timestamp: 1739038617604 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgettextpo-devel-0.23.1-h493aca8_0.conda + sha256: 6031e57ba3c03ca34422b847b98fb70e697a5c10556c8d7b30410a96754c25d8 + md5: e6f75805f4b533d449a5a6d60cbc9a71 depends: - __osx >=11.0 - - libgettextpo 0.22.5 h8414b35_3 + - libgettextpo 0.23.1 h493aca8_0 - libiconv >=1.17,<2.0a0 - - libintl 0.22.5 h8414b35_3 + - libintl 0.23.1 h493aca8_0 arch: arm64 platform: osx license: GPL-3.0-or-later - license_family: GPL - size: 37153 - timestamp: 1723627048279 + size: 37264 + timestamp: 1739039332924 - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_1.conda sha256: fc9e7f22a17faf74da904ebfc4d88699013d2992e55505e4aa0eb01770290977 md5: f1fd30127802683586f768875127a987 @@ -2229,29 +2220,29 @@ packages: license: LGPL-2.1-only size: 676469 timestamp: 1702682458114 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libintl-0.22.5-h8414b35_3.conda - sha256: 7c1d238d4333af385e594c89ebcb520caad7ed83a735c901099ec0970a87a891 - md5: 3b98ec32e91b3b59ad53dbb9c96dd334 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libintl-0.23.1-h493aca8_0.conda + sha256: 30d2a8a37070615a61777ce9317968b54c2197d04e9c6c2eea6cdb46e47f94dc + md5: 7b8faf3b5fc52744bda99c4cd1d6438d depends: - __osx >=11.0 - libiconv >=1.17,<2.0a0 arch: arm64 platform: osx license: LGPL-2.1-or-later - size: 81171 - timestamp: 1723626968270 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libintl-devel-0.22.5-h8414b35_3.conda - sha256: c9d1d4fdfb5775828e54bc9fb443b1a6de9319a04b81d1bac52c26114a763154 - md5: 271646de11b018c66e81eb4c4717b291 + size: 78921 + timestamp: 1739039271409 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libintl-devel-0.23.1-h493aca8_0.conda + sha256: 5db07fa57b8cb916784353aa035fbf32aa7ee2905e38a8e70b168160372833f0 + md5: f9c6d5edc5951ef4010be8cbde9f12d4 depends: - __osx >=11.0 - libiconv >=1.17,<2.0a0 - - libintl 0.22.5 h8414b35_3 + - libintl 0.23.1 h493aca8_0 arch: arm64 platform: osx license: LGPL-2.1-or-later - size: 38584 - timestamp: 1723627022409 + size: 39774 + timestamp: 1739039317742 - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda sha256: b954e09b7e49c2f2433d6f3bb73868eda5e378278b0f8c1dd10a7ef090e14f2f md5: ea25936bb4080d843790b586850f82b8 @@ -3129,48 +3120,48 @@ packages: license_family: BSD size: 184953 timestamp: 1733740984533 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020805-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020905-release.conda noarch: python - sha256: 54b73005e4ac4053975e984eba3ab2c328c047f1aaf63217dac62be5a2a50087 - md5: fa2aa1710d82090e6d50d05907a703ea + sha256: 509501828e0969b691b62a16423206d911c945ca2e7d248c807b4b4eed826273 + md5: a86793e927a5d4192709928f14faf9f7 depends: - - max-core ==25.1.0.dev2025020805 release - - max-python ==25.1.0.dev2025020805 release - - mojo-jupyter ==25.1.0.dev2025020805 release - - mblack ==25.1.0.dev2025020805 release + - max-core ==25.1.0.dev2025020905 release + - max-python ==25.1.0.dev2025020905 release + - mojo-jupyter ==25.1.0.dev2025020905 release + - mblack ==25.1.0.dev2025020905 release license: LicenseRef-Modular-Proprietary - size: 9900 - timestamp: 1738991846700 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025020805-release.conda - sha256: d8d4cc499562b0d6c620f0019b5ed01235834af4e20349be726015d162ca21c1 - md5: da4c181f16eafb9d10c55137cc5466e6 + size: 9901 + timestamp: 1739078252551 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025020905-release.conda + sha256: f7a22e8c46d81eff2571849cf5f72494517cb5fdb1ffe02792922c572aeda518 + md5: 445f34e151fb715177592a28dfa05f34 depends: - - mblack ==25.1.0.dev2025020805 release + - mblack ==25.1.0.dev2025020905 release license: LicenseRef-Modular-Proprietary - size: 244893250 - timestamp: 1738991846699 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025020805-release.conda - sha256: a336a9a8f01c93ca1ea041ceb153ef5b650d3a8e7ec8114103c9103479d76d4d - md5: c2e88cf91ed396b4162cc863b765a42a + size: 244895917 + timestamp: 1739078228489 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025020905-release.conda + sha256: b97a03ddeef8ec8954642ce883b43e56eccb8465e76a597f3d327f0d3e62e4b8 + md5: 243612053125ed836b15074b3b9eb481 depends: - - mblack ==25.1.0.dev2025020805 release + - mblack ==25.1.0.dev2025020905 release license: LicenseRef-Modular-Proprietary - size: 247418130 - timestamp: 1738991808671 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025020805-release.conda - sha256: 091a2794945506a316c1ce75bd798bc1bf839328be59eb1c21c0b143c44f9c7a - md5: 7e09138f0f8a28dd30a01ebbe15f3078 + size: 247419621 + timestamp: 1739078252551 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025020905-release.conda + sha256: e3eaa1fc48058dad6f8151a6ce80efdeca669637962d8eb323195b0fc15bed8e + md5: bfdd7025b3d5b1bc1bcf6e42dfce96e1 depends: - - mblack ==25.1.0.dev2025020805 release + - mblack ==25.1.0.dev2025020905 release license: LicenseRef-Modular-Proprietary - size: 209778709 - timestamp: 1738994653883 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025020805-release.conda + size: 209781068 + timestamp: 1739079962042 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025020905-release.conda noarch: python - sha256: 80124268f375ed69f37bd91b8b061bd6c6153342c5b9053aca10eb3dcea7342a - md5: 0f14d712ff526fc8671e24b1497bd97f + sha256: 9ead1d90304e138f97c420986114b472b265a8e0df4474109c48788969282d03 + md5: 488f00438e8895c704c7a8c7fe7ad228 depends: - - max-core ==25.1.0.dev2025020805 release + - max-core ==25.1.0.dev2025020905 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -3207,14 +3198,14 @@ packages: - uvicorn >=0.34.0 - uvloop >=0.21.0 license: LicenseRef-Modular-Proprietary - size: 120574508 - timestamp: 1738991846700 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025020805-release.conda + size: 120577986 + timestamp: 1739078228489 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025020905-release.conda noarch: python - sha256: cd1637ea887314bc64b827a565cf06495ed4c065a3647c35019b9f9e603e4c00 - md5: f9c32f6c769df5e4e3a551d52b1e5c87 + sha256: 578354d2025f632875a90840e2490ca3376126d4c77758eacbf8d3cf3663f4d9 + md5: 2c75feae1f60b985067d045fb5732632 depends: - - max-core ==25.1.0.dev2025020805 release + - max-core ==25.1.0.dev2025020905 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -3251,14 +3242,14 @@ packages: - uvicorn >=0.34.0 - uvloop >=0.21.0 license: LicenseRef-Modular-Proprietary - size: 123118238 - timestamp: 1738991808671 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025020805-release.conda + size: 123119734 + timestamp: 1739078252551 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025020905-release.conda noarch: python - sha256: a8a45c2e7fde72557f537b759cea361416137c31f3123abc2199cd1162778bc5 - md5: 8d86afd47cf099690acd45ab4cb3e879 + sha256: bfd9c2fd7d194136f12a0381bbf2d7c8ec844db2c80be1ffe95b13f4c7669303 + md5: 254377163ca61b9b0e29ac8ad5283e66 depends: - - max-core ==25.1.0.dev2025020805 release + - max-core ==25.1.0.dev2025020905 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -3295,12 +3286,12 @@ packages: - uvicorn >=0.34.0 - uvloop >=0.21.0 license: LicenseRef-Modular-Proprietary - size: 108495948 - timestamp: 1738994653883 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020805-release.conda + size: 108495033 + timestamp: 1739079962043 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020905-release.conda noarch: python - sha256: 9e8dd6eb0497a0630a6cbc699ca67bec88c078e5b8e84a2b213e145018c1922e - md5: cd757be5471b8ecc3c5e43b44183ae4f + sha256: ead4701a54ac6bda4b61d933dcec0f39f00eaadbd77b4dcfb9b83f2e57f81c09 + md5: 427eb4e2c7f49c515df79be78f0cae03 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -3311,20 +3302,20 @@ packages: - typing_extensions >=v4.12.2 - python license: MIT - size: 130855 - timestamp: 1738991846699 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020805-release.conda + size: 130851 + timestamp: 1739078252551 +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020905-release.conda noarch: python - sha256: 01ce310a8f05bc16028bd8749c7decd899b2b569992b3db5790bd3b8d5f9d9fb - md5: cb0e7f08489ecfc881ec3197c3d8de15 + sha256: 0b61361aa3078d4484c4e3b078e0ae6dc0c903c5aa62eab51d0f3c55d2fafb21 + md5: 4b7b1b66cb6a7b2e90c7d18b9c02ae5a depends: - - max-core ==25.1.0.dev2025020805 release + - max-core ==25.1.0.dev2025020905 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22988 - timestamp: 1738991846699 + size: 22980 + timestamp: 1739078252551 - conda: https://conda.anaconda.org/conda-forge/linux-64/mpg123-1.32.9-hc50e24c_0.conda sha256: 39c4700fb3fbe403a77d8cc27352fa72ba744db487559d5d44bf8411bb4ea200 md5: c7f302fd11eeb0987a6a5e1f3aed6a21 diff --git a/examples/magic.lock b/examples/magic.lock index fde637a2d5..013ce89a26 100644 --- a/examples/magic.lock +++ b/examples/magic.lock @@ -42,11 +42,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020805-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025020805-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025020805-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020805-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020905-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025020905-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025020905-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020905-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020905-release.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-h2d0b736_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py311h64a7726_0.conda @@ -107,11 +107,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020805-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025020805-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025020805-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020805-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020905-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025020905-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025020905-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020905-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020905-release.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-ha32ae93_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py311h69ead2a_0.conda @@ -163,11 +163,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.48.0-h3f77e49_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020805-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025020805-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025020805-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020805-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020905-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025020905-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025020905-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020905-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020905-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py311h7125741_0.conda @@ -1295,48 +1295,48 @@ packages: license_family: APACHE size: 280830 timestamp: 1736986295869 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020805-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020905-release.conda noarch: python - sha256: 54b73005e4ac4053975e984eba3ab2c328c047f1aaf63217dac62be5a2a50087 - md5: fa2aa1710d82090e6d50d05907a703ea + sha256: 509501828e0969b691b62a16423206d911c945ca2e7d248c807b4b4eed826273 + md5: a86793e927a5d4192709928f14faf9f7 depends: - - max-core ==25.1.0.dev2025020805 release - - max-python ==25.1.0.dev2025020805 release - - mojo-jupyter ==25.1.0.dev2025020805 release - - mblack ==25.1.0.dev2025020805 release + - max-core ==25.1.0.dev2025020905 release + - max-python ==25.1.0.dev2025020905 release + - mojo-jupyter ==25.1.0.dev2025020905 release + - mblack ==25.1.0.dev2025020905 release license: LicenseRef-Modular-Proprietary - size: 9900 - timestamp: 1738991846700 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025020805-release.conda - sha256: d8d4cc499562b0d6c620f0019b5ed01235834af4e20349be726015d162ca21c1 - md5: da4c181f16eafb9d10c55137cc5466e6 + size: 9901 + timestamp: 1739078252551 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025020905-release.conda + sha256: f7a22e8c46d81eff2571849cf5f72494517cb5fdb1ffe02792922c572aeda518 + md5: 445f34e151fb715177592a28dfa05f34 depends: - - mblack ==25.1.0.dev2025020805 release + - mblack ==25.1.0.dev2025020905 release license: LicenseRef-Modular-Proprietary - size: 244893250 - timestamp: 1738991846699 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025020805-release.conda - sha256: a336a9a8f01c93ca1ea041ceb153ef5b650d3a8e7ec8114103c9103479d76d4d - md5: c2e88cf91ed396b4162cc863b765a42a + size: 244895917 + timestamp: 1739078228489 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025020905-release.conda + sha256: b97a03ddeef8ec8954642ce883b43e56eccb8465e76a597f3d327f0d3e62e4b8 + md5: 243612053125ed836b15074b3b9eb481 depends: - - mblack ==25.1.0.dev2025020805 release + - mblack ==25.1.0.dev2025020905 release license: LicenseRef-Modular-Proprietary - size: 247418130 - timestamp: 1738991808671 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025020805-release.conda - sha256: 091a2794945506a316c1ce75bd798bc1bf839328be59eb1c21c0b143c44f9c7a - md5: 7e09138f0f8a28dd30a01ebbe15f3078 + size: 247419621 + timestamp: 1739078252551 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025020905-release.conda + sha256: e3eaa1fc48058dad6f8151a6ce80efdeca669637962d8eb323195b0fc15bed8e + md5: bfdd7025b3d5b1bc1bcf6e42dfce96e1 depends: - - mblack ==25.1.0.dev2025020805 release + - mblack ==25.1.0.dev2025020905 release license: LicenseRef-Modular-Proprietary - size: 209778709 - timestamp: 1738994653883 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025020805-release.conda + size: 209781068 + timestamp: 1739079962042 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025020905-release.conda noarch: python - sha256: 80124268f375ed69f37bd91b8b061bd6c6153342c5b9053aca10eb3dcea7342a - md5: 0f14d712ff526fc8671e24b1497bd97f + sha256: 9ead1d90304e138f97c420986114b472b265a8e0df4474109c48788969282d03 + md5: 488f00438e8895c704c7a8c7fe7ad228 depends: - - max-core ==25.1.0.dev2025020805 release + - max-core ==25.1.0.dev2025020905 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1373,14 +1373,14 @@ packages: - uvicorn >=0.34.0 - uvloop >=0.21.0 license: LicenseRef-Modular-Proprietary - size: 120574508 - timestamp: 1738991846700 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025020805-release.conda + size: 120577986 + timestamp: 1739078228489 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025020905-release.conda noarch: python - sha256: cd1637ea887314bc64b827a565cf06495ed4c065a3647c35019b9f9e603e4c00 - md5: f9c32f6c769df5e4e3a551d52b1e5c87 + sha256: 578354d2025f632875a90840e2490ca3376126d4c77758eacbf8d3cf3663f4d9 + md5: 2c75feae1f60b985067d045fb5732632 depends: - - max-core ==25.1.0.dev2025020805 release + - max-core ==25.1.0.dev2025020905 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1417,14 +1417,14 @@ packages: - uvicorn >=0.34.0 - uvloop >=0.21.0 license: LicenseRef-Modular-Proprietary - size: 123118238 - timestamp: 1738991808671 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025020805-release.conda + size: 123119734 + timestamp: 1739078252551 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025020905-release.conda noarch: python - sha256: a8a45c2e7fde72557f537b759cea361416137c31f3123abc2199cd1162778bc5 - md5: 8d86afd47cf099690acd45ab4cb3e879 + sha256: bfd9c2fd7d194136f12a0381bbf2d7c8ec844db2c80be1ffe95b13f4c7669303 + md5: 254377163ca61b9b0e29ac8ad5283e66 depends: - - max-core ==25.1.0.dev2025020805 release + - max-core ==25.1.0.dev2025020905 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1461,12 +1461,12 @@ packages: - uvicorn >=0.34.0 - uvloop >=0.21.0 license: LicenseRef-Modular-Proprietary - size: 108495948 - timestamp: 1738994653883 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020805-release.conda + size: 108495033 + timestamp: 1739079962043 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020905-release.conda noarch: python - sha256: 9e8dd6eb0497a0630a6cbc699ca67bec88c078e5b8e84a2b213e145018c1922e - md5: cd757be5471b8ecc3c5e43b44183ae4f + sha256: ead4701a54ac6bda4b61d933dcec0f39f00eaadbd77b4dcfb9b83f2e57f81c09 + md5: 427eb4e2c7f49c515df79be78f0cae03 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -1477,20 +1477,20 @@ packages: - typing_extensions >=v4.12.2 - python license: MIT - size: 130855 - timestamp: 1738991846699 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020805-release.conda + size: 130851 + timestamp: 1739078252551 +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020905-release.conda noarch: python - sha256: 01ce310a8f05bc16028bd8749c7decd899b2b569992b3db5790bd3b8d5f9d9fb - md5: cb0e7f08489ecfc881ec3197c3d8de15 + sha256: 0b61361aa3078d4484c4e3b078e0ae6dc0c903c5aa62eab51d0f3c55d2fafb21 + md5: 4b7b1b66cb6a7b2e90c7d18b9c02ae5a depends: - - max-core ==25.1.0.dev2025020805 release + - max-core ==25.1.0.dev2025020905 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22988 - timestamp: 1738991846699 + size: 22980 + timestamp: 1739078252551 - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda sha256: 1895f47b7d68581a6facde5cb13ab8c2764c2e53a76bd746f8f98910dc4e08fe md5: 29097e7ea634a45cc5386b95cac6568f diff --git a/examples/operators/magic.lock b/examples/operators/magic.lock index 26b3c6b49d..fc168e671a 100644 --- a/examples/operators/magic.lock +++ b/examples/operators/magic.lock @@ -42,11 +42,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020805-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025020805-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025020805-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020805-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020905-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025020905-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025020905-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020905-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020905-release.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-h2d0b736_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda @@ -107,11 +107,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020805-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025020805-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025020805-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020805-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020905-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025020905-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025020905-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020905-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020905-release.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-ha32ae93_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda @@ -163,11 +163,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.48.0-h3f77e49_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020805-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025020805-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025020805-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020805-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020905-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025020905-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025020905-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020905-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020905-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda @@ -1295,48 +1295,48 @@ packages: license_family: APACHE size: 280830 timestamp: 1736986295869 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020805-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020905-release.conda noarch: python - sha256: 54b73005e4ac4053975e984eba3ab2c328c047f1aaf63217dac62be5a2a50087 - md5: fa2aa1710d82090e6d50d05907a703ea + sha256: 509501828e0969b691b62a16423206d911c945ca2e7d248c807b4b4eed826273 + md5: a86793e927a5d4192709928f14faf9f7 depends: - - max-core ==25.1.0.dev2025020805 release - - max-python ==25.1.0.dev2025020805 release - - mojo-jupyter ==25.1.0.dev2025020805 release - - mblack ==25.1.0.dev2025020805 release + - max-core ==25.1.0.dev2025020905 release + - max-python ==25.1.0.dev2025020905 release + - mojo-jupyter ==25.1.0.dev2025020905 release + - mblack ==25.1.0.dev2025020905 release license: LicenseRef-Modular-Proprietary - size: 9900 - timestamp: 1738991846700 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025020805-release.conda - sha256: d8d4cc499562b0d6c620f0019b5ed01235834af4e20349be726015d162ca21c1 - md5: da4c181f16eafb9d10c55137cc5466e6 + size: 9901 + timestamp: 1739078252551 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025020905-release.conda + sha256: f7a22e8c46d81eff2571849cf5f72494517cb5fdb1ffe02792922c572aeda518 + md5: 445f34e151fb715177592a28dfa05f34 depends: - - mblack ==25.1.0.dev2025020805 release + - mblack ==25.1.0.dev2025020905 release license: LicenseRef-Modular-Proprietary - size: 244893250 - timestamp: 1738991846699 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025020805-release.conda - sha256: a336a9a8f01c93ca1ea041ceb153ef5b650d3a8e7ec8114103c9103479d76d4d - md5: c2e88cf91ed396b4162cc863b765a42a + size: 244895917 + timestamp: 1739078228489 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025020905-release.conda + sha256: b97a03ddeef8ec8954642ce883b43e56eccb8465e76a597f3d327f0d3e62e4b8 + md5: 243612053125ed836b15074b3b9eb481 depends: - - mblack ==25.1.0.dev2025020805 release + - mblack ==25.1.0.dev2025020905 release license: LicenseRef-Modular-Proprietary - size: 247418130 - timestamp: 1738991808671 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025020805-release.conda - sha256: 091a2794945506a316c1ce75bd798bc1bf839328be59eb1c21c0b143c44f9c7a - md5: 7e09138f0f8a28dd30a01ebbe15f3078 + size: 247419621 + timestamp: 1739078252551 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025020905-release.conda + sha256: e3eaa1fc48058dad6f8151a6ce80efdeca669637962d8eb323195b0fc15bed8e + md5: bfdd7025b3d5b1bc1bcf6e42dfce96e1 depends: - - mblack ==25.1.0.dev2025020805 release + - mblack ==25.1.0.dev2025020905 release license: LicenseRef-Modular-Proprietary - size: 209778709 - timestamp: 1738994653883 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025020805-release.conda + size: 209781068 + timestamp: 1739079962042 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025020905-release.conda noarch: python - sha256: 80124268f375ed69f37bd91b8b061bd6c6153342c5b9053aca10eb3dcea7342a - md5: 0f14d712ff526fc8671e24b1497bd97f + sha256: 9ead1d90304e138f97c420986114b472b265a8e0df4474109c48788969282d03 + md5: 488f00438e8895c704c7a8c7fe7ad228 depends: - - max-core ==25.1.0.dev2025020805 release + - max-core ==25.1.0.dev2025020905 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1373,14 +1373,14 @@ packages: - uvicorn >=0.34.0 - uvloop >=0.21.0 license: LicenseRef-Modular-Proprietary - size: 120574508 - timestamp: 1738991846700 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025020805-release.conda + size: 120577986 + timestamp: 1739078228489 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025020905-release.conda noarch: python - sha256: cd1637ea887314bc64b827a565cf06495ed4c065a3647c35019b9f9e603e4c00 - md5: f9c32f6c769df5e4e3a551d52b1e5c87 + sha256: 578354d2025f632875a90840e2490ca3376126d4c77758eacbf8d3cf3663f4d9 + md5: 2c75feae1f60b985067d045fb5732632 depends: - - max-core ==25.1.0.dev2025020805 release + - max-core ==25.1.0.dev2025020905 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1417,14 +1417,14 @@ packages: - uvicorn >=0.34.0 - uvloop >=0.21.0 license: LicenseRef-Modular-Proprietary - size: 123118238 - timestamp: 1738991808671 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025020805-release.conda + size: 123119734 + timestamp: 1739078252551 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025020905-release.conda noarch: python - sha256: a8a45c2e7fde72557f537b759cea361416137c31f3123abc2199cd1162778bc5 - md5: 8d86afd47cf099690acd45ab4cb3e879 + sha256: bfd9c2fd7d194136f12a0381bbf2d7c8ec844db2c80be1ffe95b13f4c7669303 + md5: 254377163ca61b9b0e29ac8ad5283e66 depends: - - max-core ==25.1.0.dev2025020805 release + - max-core ==25.1.0.dev2025020905 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1461,12 +1461,12 @@ packages: - uvicorn >=0.34.0 - uvloop >=0.21.0 license: LicenseRef-Modular-Proprietary - size: 108495948 - timestamp: 1738994653883 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020805-release.conda + size: 108495033 + timestamp: 1739079962043 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020905-release.conda noarch: python - sha256: 9e8dd6eb0497a0630a6cbc699ca67bec88c078e5b8e84a2b213e145018c1922e - md5: cd757be5471b8ecc3c5e43b44183ae4f + sha256: ead4701a54ac6bda4b61d933dcec0f39f00eaadbd77b4dcfb9b83f2e57f81c09 + md5: 427eb4e2c7f49c515df79be78f0cae03 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -1477,20 +1477,20 @@ packages: - typing_extensions >=v4.12.2 - python license: MIT - size: 130855 - timestamp: 1738991846699 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020805-release.conda + size: 130851 + timestamp: 1739078252551 +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020905-release.conda noarch: python - sha256: 01ce310a8f05bc16028bd8749c7decd899b2b569992b3db5790bd3b8d5f9d9fb - md5: cb0e7f08489ecfc881ec3197c3d8de15 + sha256: 0b61361aa3078d4484c4e3b078e0ae6dc0c903c5aa62eab51d0f3c55d2fafb21 + md5: 4b7b1b66cb6a7b2e90c7d18b9c02ae5a depends: - - max-core ==25.1.0.dev2025020805 release + - max-core ==25.1.0.dev2025020905 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22988 - timestamp: 1738991846699 + size: 22980 + timestamp: 1739078252551 - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda sha256: 1895f47b7d68581a6facde5cb13ab8c2764c2e53a76bd746f8f98910dc4e08fe md5: 29097e7ea634a45cc5386b95cac6568f diff --git a/examples/testing/magic.lock b/examples/testing/magic.lock index 26b3c6b49d..fc168e671a 100644 --- a/examples/testing/magic.lock +++ b/examples/testing/magic.lock @@ -42,11 +42,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020805-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025020805-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025020805-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020805-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020905-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025020905-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025020905-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020905-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020905-release.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-h2d0b736_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda @@ -107,11 +107,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020805-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025020805-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025020805-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020805-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020905-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025020905-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025020905-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020905-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020905-release.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-ha32ae93_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda @@ -163,11 +163,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.48.0-h3f77e49_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020805-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025020805-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025020805-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020805-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020905-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025020905-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025020905-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020905-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020905-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda @@ -1295,48 +1295,48 @@ packages: license_family: APACHE size: 280830 timestamp: 1736986295869 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020805-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020905-release.conda noarch: python - sha256: 54b73005e4ac4053975e984eba3ab2c328c047f1aaf63217dac62be5a2a50087 - md5: fa2aa1710d82090e6d50d05907a703ea + sha256: 509501828e0969b691b62a16423206d911c945ca2e7d248c807b4b4eed826273 + md5: a86793e927a5d4192709928f14faf9f7 depends: - - max-core ==25.1.0.dev2025020805 release - - max-python ==25.1.0.dev2025020805 release - - mojo-jupyter ==25.1.0.dev2025020805 release - - mblack ==25.1.0.dev2025020805 release + - max-core ==25.1.0.dev2025020905 release + - max-python ==25.1.0.dev2025020905 release + - mojo-jupyter ==25.1.0.dev2025020905 release + - mblack ==25.1.0.dev2025020905 release license: LicenseRef-Modular-Proprietary - size: 9900 - timestamp: 1738991846700 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025020805-release.conda - sha256: d8d4cc499562b0d6c620f0019b5ed01235834af4e20349be726015d162ca21c1 - md5: da4c181f16eafb9d10c55137cc5466e6 + size: 9901 + timestamp: 1739078252551 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025020905-release.conda + sha256: f7a22e8c46d81eff2571849cf5f72494517cb5fdb1ffe02792922c572aeda518 + md5: 445f34e151fb715177592a28dfa05f34 depends: - - mblack ==25.1.0.dev2025020805 release + - mblack ==25.1.0.dev2025020905 release license: LicenseRef-Modular-Proprietary - size: 244893250 - timestamp: 1738991846699 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025020805-release.conda - sha256: a336a9a8f01c93ca1ea041ceb153ef5b650d3a8e7ec8114103c9103479d76d4d - md5: c2e88cf91ed396b4162cc863b765a42a + size: 244895917 + timestamp: 1739078228489 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025020905-release.conda + sha256: b97a03ddeef8ec8954642ce883b43e56eccb8465e76a597f3d327f0d3e62e4b8 + md5: 243612053125ed836b15074b3b9eb481 depends: - - mblack ==25.1.0.dev2025020805 release + - mblack ==25.1.0.dev2025020905 release license: LicenseRef-Modular-Proprietary - size: 247418130 - timestamp: 1738991808671 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025020805-release.conda - sha256: 091a2794945506a316c1ce75bd798bc1bf839328be59eb1c21c0b143c44f9c7a - md5: 7e09138f0f8a28dd30a01ebbe15f3078 + size: 247419621 + timestamp: 1739078252551 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025020905-release.conda + sha256: e3eaa1fc48058dad6f8151a6ce80efdeca669637962d8eb323195b0fc15bed8e + md5: bfdd7025b3d5b1bc1bcf6e42dfce96e1 depends: - - mblack ==25.1.0.dev2025020805 release + - mblack ==25.1.0.dev2025020905 release license: LicenseRef-Modular-Proprietary - size: 209778709 - timestamp: 1738994653883 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025020805-release.conda + size: 209781068 + timestamp: 1739079962042 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025020905-release.conda noarch: python - sha256: 80124268f375ed69f37bd91b8b061bd6c6153342c5b9053aca10eb3dcea7342a - md5: 0f14d712ff526fc8671e24b1497bd97f + sha256: 9ead1d90304e138f97c420986114b472b265a8e0df4474109c48788969282d03 + md5: 488f00438e8895c704c7a8c7fe7ad228 depends: - - max-core ==25.1.0.dev2025020805 release + - max-core ==25.1.0.dev2025020905 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1373,14 +1373,14 @@ packages: - uvicorn >=0.34.0 - uvloop >=0.21.0 license: LicenseRef-Modular-Proprietary - size: 120574508 - timestamp: 1738991846700 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025020805-release.conda + size: 120577986 + timestamp: 1739078228489 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025020905-release.conda noarch: python - sha256: cd1637ea887314bc64b827a565cf06495ed4c065a3647c35019b9f9e603e4c00 - md5: f9c32f6c769df5e4e3a551d52b1e5c87 + sha256: 578354d2025f632875a90840e2490ca3376126d4c77758eacbf8d3cf3663f4d9 + md5: 2c75feae1f60b985067d045fb5732632 depends: - - max-core ==25.1.0.dev2025020805 release + - max-core ==25.1.0.dev2025020905 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1417,14 +1417,14 @@ packages: - uvicorn >=0.34.0 - uvloop >=0.21.0 license: LicenseRef-Modular-Proprietary - size: 123118238 - timestamp: 1738991808671 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025020805-release.conda + size: 123119734 + timestamp: 1739078252551 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025020905-release.conda noarch: python - sha256: a8a45c2e7fde72557f537b759cea361416137c31f3123abc2199cd1162778bc5 - md5: 8d86afd47cf099690acd45ab4cb3e879 + sha256: bfd9c2fd7d194136f12a0381bbf2d7c8ec844db2c80be1ffe95b13f4c7669303 + md5: 254377163ca61b9b0e29ac8ad5283e66 depends: - - max-core ==25.1.0.dev2025020805 release + - max-core ==25.1.0.dev2025020905 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1461,12 +1461,12 @@ packages: - uvicorn >=0.34.0 - uvloop >=0.21.0 license: LicenseRef-Modular-Proprietary - size: 108495948 - timestamp: 1738994653883 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020805-release.conda + size: 108495033 + timestamp: 1739079962043 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020905-release.conda noarch: python - sha256: 9e8dd6eb0497a0630a6cbc699ca67bec88c078e5b8e84a2b213e145018c1922e - md5: cd757be5471b8ecc3c5e43b44183ae4f + sha256: ead4701a54ac6bda4b61d933dcec0f39f00eaadbd77b4dcfb9b83f2e57f81c09 + md5: 427eb4e2c7f49c515df79be78f0cae03 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -1477,20 +1477,20 @@ packages: - typing_extensions >=v4.12.2 - python license: MIT - size: 130855 - timestamp: 1738991846699 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020805-release.conda + size: 130851 + timestamp: 1739078252551 +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020905-release.conda noarch: python - sha256: 01ce310a8f05bc16028bd8749c7decd899b2b569992b3db5790bd3b8d5f9d9fb - md5: cb0e7f08489ecfc881ec3197c3d8de15 + sha256: 0b61361aa3078d4484c4e3b078e0ae6dc0c903c5aa62eab51d0f3c55d2fafb21 + md5: 4b7b1b66cb6a7b2e90c7d18b9c02ae5a depends: - - max-core ==25.1.0.dev2025020805 release + - max-core ==25.1.0.dev2025020905 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22988 - timestamp: 1738991846699 + size: 22980 + timestamp: 1739078252551 - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda sha256: 1895f47b7d68581a6facde5cb13ab8c2764c2e53a76bd746f8f98910dc4e08fe md5: 29097e7ea634a45cc5386b95cac6568f diff --git a/magic.lock b/magic.lock index ba7f8373e8..b9d16fce15 100644 --- a/magic.lock +++ b/magic.lock @@ -43,11 +43,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/lit-19.1.7-pyhd8ed1ab_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020805-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025020805-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025020805-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020805-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020905-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025020905-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025020905-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020905-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020905-release.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-h2d0b736_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda @@ -109,11 +109,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/lit-19.1.7-pyhd8ed1ab_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020805-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025020805-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025020805-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020805-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020905-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025020905-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025020905-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020905-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020905-release.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-ha32ae93_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda @@ -166,11 +166,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/lit-19.1.7-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020805-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025020805-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025020805-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020805-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020905-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025020905-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025020905-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020905-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020905-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda @@ -1307,48 +1307,48 @@ packages: license_family: APACHE size: 280830 timestamp: 1736986295869 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020805-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020905-release.conda noarch: python - sha256: 54b73005e4ac4053975e984eba3ab2c328c047f1aaf63217dac62be5a2a50087 - md5: fa2aa1710d82090e6d50d05907a703ea + sha256: 509501828e0969b691b62a16423206d911c945ca2e7d248c807b4b4eed826273 + md5: a86793e927a5d4192709928f14faf9f7 depends: - - max-core ==25.1.0.dev2025020805 release - - max-python ==25.1.0.dev2025020805 release - - mojo-jupyter ==25.1.0.dev2025020805 release - - mblack ==25.1.0.dev2025020805 release + - max-core ==25.1.0.dev2025020905 release + - max-python ==25.1.0.dev2025020905 release + - mojo-jupyter ==25.1.0.dev2025020905 release + - mblack ==25.1.0.dev2025020905 release license: LicenseRef-Modular-Proprietary - size: 9900 - timestamp: 1738991846700 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025020805-release.conda - sha256: d8d4cc499562b0d6c620f0019b5ed01235834af4e20349be726015d162ca21c1 - md5: da4c181f16eafb9d10c55137cc5466e6 + size: 9901 + timestamp: 1739078252551 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025020905-release.conda + sha256: f7a22e8c46d81eff2571849cf5f72494517cb5fdb1ffe02792922c572aeda518 + md5: 445f34e151fb715177592a28dfa05f34 depends: - - mblack ==25.1.0.dev2025020805 release + - mblack ==25.1.0.dev2025020905 release license: LicenseRef-Modular-Proprietary - size: 244893250 - timestamp: 1738991846699 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025020805-release.conda - sha256: a336a9a8f01c93ca1ea041ceb153ef5b650d3a8e7ec8114103c9103479d76d4d - md5: c2e88cf91ed396b4162cc863b765a42a + size: 244895917 + timestamp: 1739078228489 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025020905-release.conda + sha256: b97a03ddeef8ec8954642ce883b43e56eccb8465e76a597f3d327f0d3e62e4b8 + md5: 243612053125ed836b15074b3b9eb481 depends: - - mblack ==25.1.0.dev2025020805 release + - mblack ==25.1.0.dev2025020905 release license: LicenseRef-Modular-Proprietary - size: 247418130 - timestamp: 1738991808671 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025020805-release.conda - sha256: 091a2794945506a316c1ce75bd798bc1bf839328be59eb1c21c0b143c44f9c7a - md5: 7e09138f0f8a28dd30a01ebbe15f3078 + size: 247419621 + timestamp: 1739078252551 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025020905-release.conda + sha256: e3eaa1fc48058dad6f8151a6ce80efdeca669637962d8eb323195b0fc15bed8e + md5: bfdd7025b3d5b1bc1bcf6e42dfce96e1 depends: - - mblack ==25.1.0.dev2025020805 release + - mblack ==25.1.0.dev2025020905 release license: LicenseRef-Modular-Proprietary - size: 209778709 - timestamp: 1738994653883 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025020805-release.conda + size: 209781068 + timestamp: 1739079962042 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025020905-release.conda noarch: python - sha256: 80124268f375ed69f37bd91b8b061bd6c6153342c5b9053aca10eb3dcea7342a - md5: 0f14d712ff526fc8671e24b1497bd97f + sha256: 9ead1d90304e138f97c420986114b472b265a8e0df4474109c48788969282d03 + md5: 488f00438e8895c704c7a8c7fe7ad228 depends: - - max-core ==25.1.0.dev2025020805 release + - max-core ==25.1.0.dev2025020905 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1385,14 +1385,14 @@ packages: - uvicorn >=0.34.0 - uvloop >=0.21.0 license: LicenseRef-Modular-Proprietary - size: 120574508 - timestamp: 1738991846700 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025020805-release.conda + size: 120577986 + timestamp: 1739078228489 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025020905-release.conda noarch: python - sha256: cd1637ea887314bc64b827a565cf06495ed4c065a3647c35019b9f9e603e4c00 - md5: f9c32f6c769df5e4e3a551d52b1e5c87 + sha256: 578354d2025f632875a90840e2490ca3376126d4c77758eacbf8d3cf3663f4d9 + md5: 2c75feae1f60b985067d045fb5732632 depends: - - max-core ==25.1.0.dev2025020805 release + - max-core ==25.1.0.dev2025020905 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1429,14 +1429,14 @@ packages: - uvicorn >=0.34.0 - uvloop >=0.21.0 license: LicenseRef-Modular-Proprietary - size: 123118238 - timestamp: 1738991808671 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025020805-release.conda + size: 123119734 + timestamp: 1739078252551 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025020905-release.conda noarch: python - sha256: a8a45c2e7fde72557f537b759cea361416137c31f3123abc2199cd1162778bc5 - md5: 8d86afd47cf099690acd45ab4cb3e879 + sha256: bfd9c2fd7d194136f12a0381bbf2d7c8ec844db2c80be1ffe95b13f4c7669303 + md5: 254377163ca61b9b0e29ac8ad5283e66 depends: - - max-core ==25.1.0.dev2025020805 release + - max-core ==25.1.0.dev2025020905 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1473,12 +1473,12 @@ packages: - uvicorn >=0.34.0 - uvloop >=0.21.0 license: LicenseRef-Modular-Proprietary - size: 108495948 - timestamp: 1738994653883 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020805-release.conda + size: 108495033 + timestamp: 1739079962043 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020905-release.conda noarch: python - sha256: 9e8dd6eb0497a0630a6cbc699ca67bec88c078e5b8e84a2b213e145018c1922e - md5: cd757be5471b8ecc3c5e43b44183ae4f + sha256: ead4701a54ac6bda4b61d933dcec0f39f00eaadbd77b4dcfb9b83f2e57f81c09 + md5: 427eb4e2c7f49c515df79be78f0cae03 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -1489,20 +1489,20 @@ packages: - typing_extensions >=v4.12.2 - python license: MIT - size: 130855 - timestamp: 1738991846699 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020805-release.conda + size: 130851 + timestamp: 1739078252551 +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020905-release.conda noarch: python - sha256: 01ce310a8f05bc16028bd8749c7decd899b2b569992b3db5790bd3b8d5f9d9fb - md5: cb0e7f08489ecfc881ec3197c3d8de15 + sha256: 0b61361aa3078d4484c4e3b078e0ae6dc0c903c5aa62eab51d0f3c55d2fafb21 + md5: 4b7b1b66cb6a7b2e90c7d18b9c02ae5a depends: - - max-core ==25.1.0.dev2025020805 release + - max-core ==25.1.0.dev2025020905 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22988 - timestamp: 1738991846699 + size: 22980 + timestamp: 1739078252551 - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda sha256: 1895f47b7d68581a6facde5cb13ab8c2764c2e53a76bd746f8f98910dc4e08fe md5: 29097e7ea634a45cc5386b95cac6568f From 2ba735840edf00c3f1d78f88aedd79091d21275e Mon Sep 17 00:00:00 2001 From: abdul dakkak Date: Sun, 9 Feb 2025 05:46:16 -0800 Subject: [PATCH 366/509] [All] Sort mojo imports, NFC MODULAR_ORIG_COMMIT_REV_ID: 9401dc4f31ee33d8a4947641492e373f3bcb7365 --- examples/testing/test/my_math/test_dec.mojo | 1 - examples/testing/test/my_math/test_inc.mojo | 1 - .../benchmarks/collections/bench_string.mojo | 3 +- stdlib/benchmarks/utils/bench_formatter.mojo | 3 +- stdlib/benchmarks/utils/bench_memmem.mojo | 3 +- stdlib/src/base64/base64.mojo | 2 +- stdlib/src/bit/__init__.mojo | 6 ++-- stdlib/src/builtin/_format_float.mojo | 2 +- stdlib/src/builtin/bool.mojo | 2 +- stdlib/src/builtin/char.mojo | 1 - stdlib/src/builtin/debug_assert.mojo | 6 ++-- stdlib/src/builtin/error.mojo | 2 +- stdlib/src/builtin/file.mojo | 2 +- stdlib/src/builtin/file_descriptor.mojo | 6 ++-- stdlib/src/builtin/io.mojo | 12 +++---- stdlib/src/builtin/reversed.mojo | 1 + stdlib/src/builtin/simd.mojo | 6 ++-- stdlib/src/builtin/sort.mojo | 2 +- stdlib/src/builtin/string_literal.mojo | 9 ++--- stdlib/src/collections/__init__.mojo | 2 +- stdlib/src/collections/linked_list.mojo | 3 +- stdlib/src/collections/list.mojo | 2 +- stdlib/src/collections/string/__init__.mojo | 11 ++---- stdlib/src/collections/string/_unicode.mojo | 4 +-- .../collections/string/_utf8_validation.mojo | 2 +- stdlib/src/collections/string/format.mojo | 2 ++ .../src/collections/string/inline_string.mojo | 5 +-- stdlib/src/collections/string/string.mojo | 34 ++++++++----------- .../src/collections/string/string_slice.mojo | 15 ++++---- stdlib/src/hashlib/hash.mojo | 2 +- stdlib/src/math/math.mojo | 2 +- stdlib/src/memory/pointer.mojo | 1 - stdlib/src/memory/span.mojo | 2 +- stdlib/src/memory/unsafe_pointer.mojo | 1 + stdlib/src/os/env.mojo | 3 +- stdlib/src/os/os.mojo | 1 - stdlib/src/os/path/path.mojo | 1 + stdlib/src/prelude/__init__.mojo | 27 ++++++--------- stdlib/src/pwd/_linux.mojo | 3 +- stdlib/src/pwd/_macos.mojo | 4 +-- stdlib/src/python/_cpython.mojo | 3 +- stdlib/src/python/python_object.mojo | 1 - stdlib/src/sys/__init__.mojo | 2 +- stdlib/src/sys/_amdgpu.mojo | 11 +++--- stdlib/src/sys/arg.mojo | 3 +- stdlib/src/sys/compile.mojo | 2 +- stdlib/src/sys/ffi.mojo | 3 +- stdlib/src/sys/intrinsics.mojo | 5 +-- stdlib/src/tempfile/tempfile.mojo | 1 + stdlib/src/testing/testing.mojo | 4 ++- stdlib/src/time/__init__.mojo | 8 +---- stdlib/src/time/time.mojo | 2 +- stdlib/src/utils/__init__.mojo | 5 +-- stdlib/src/utils/index.mojo | 2 +- stdlib/src/utils/write.mojo | 4 +-- stdlib/test/bit/test_bit.mojo | 9 ++--- stdlib/test/builtin/test_char.mojo | 2 +- stdlib/test/builtin/test_print.mojo | 3 +- stdlib/test/builtin/test_sort_issue_1018.mojo | 2 +- .../string/test_inlined_string.mojo | 5 ++- .../test/collections/string/test_string.mojo | 16 ++++----- .../collections/string/test_string_slice.mojo | 9 +++-- stdlib/test/collections/test_linked_list.mojo | 7 ++-- stdlib/test/collections/test_list.mojo | 6 ++-- stdlib/test/hashlib/test_ahash.mojo | 2 +- stdlib/test/hashlib/test_hasher.mojo | 3 +- stdlib/test/memory/test_span.mojo | 2 +- .../test_python_object_dunder_contains.mojo | 3 +- stdlib/test/sys/test_compile.mojo | 2 +- stdlib/test/sys/test_compile_debug.mojo | 2 +- stdlib/test/test_utils/__init__.mojo | 4 +-- stdlib/test/testing/test_assertion.mojo | 2 +- stdlib/test/time/test_time.mojo | 8 +---- stdlib/test/utils/test_static_tuple.mojo | 1 + stdlib/test/utils/test_write.mojo | 3 +- 75 files changed, 156 insertions(+), 188 deletions(-) diff --git a/examples/testing/test/my_math/test_dec.mojo b/examples/testing/test/my_math/test_dec.mojo index 7484124d6b..ac93e1097d 100644 --- a/examples/testing/test/my_math/test_dec.mojo +++ b/examples/testing/test/my_math/test_dec.mojo @@ -12,7 +12,6 @@ # ===----------------------------------------------------------------------=== # from my_math import dec - from testing import assert_equal, assert_raises diff --git a/examples/testing/test/my_math/test_inc.mojo b/examples/testing/test/my_math/test_inc.mojo index 8b18919c75..f45584bab7 100644 --- a/examples/testing/test/my_math/test_inc.mojo +++ b/examples/testing/test/my_math/test_inc.mojo @@ -12,7 +12,6 @@ # ===----------------------------------------------------------------------=== # from my_math import inc - from testing import assert_equal, assert_raises diff --git a/stdlib/benchmarks/collections/bench_string.mojo b/stdlib/benchmarks/collections/bench_string.mojo index 20ad75333c..8b3acdc9f0 100644 --- a/stdlib/benchmarks/collections/bench_string.mojo +++ b/stdlib/benchmarks/collections/bench_string.mojo @@ -16,14 +16,13 @@ from collections import Dict, Optional from collections.string import String +from collections.string._utf8_validation import _is_valid_utf8 from os import abort from pathlib import _dir_of_current_file from random import random_si64, seed from benchmark import Bench, BenchConfig, Bencher, BenchId, Unit, keep, run -from collections.string._utf8_validation import _is_valid_utf8 - # ===-----------------------------------------------------------------------===# # Benchmark Data diff --git a/stdlib/benchmarks/utils/bench_formatter.mojo b/stdlib/benchmarks/utils/bench_formatter.mojo index e84a58b562..eb9dea9e46 100644 --- a/stdlib/benchmarks/utils/bench_formatter.mojo +++ b/stdlib/benchmarks/utils/bench_formatter.mojo @@ -14,14 +14,13 @@ # NOTE: to test changes on the current branch using run-benchmarks.sh, remove # the -t flag. Remember to replace it again before pushing any code. +from collections.string.string_slice import _memchr, _memmem from sys import simdwidthof from benchmark import Bench, BenchConfig, Bencher, BenchId, Unit, keep, run from bit import count_trailing_zeros from builtin.dtype import _uint_type_of_width -from collections.string.string_slice import _memchr, _memmem - # ===-----------------------------------------------------------------------===# # Benchmark Data # ===-----------------------------------------------------------------------===# diff --git a/stdlib/benchmarks/utils/bench_memmem.mojo b/stdlib/benchmarks/utils/bench_memmem.mojo index 4167011cf4..e33d34f3e9 100644 --- a/stdlib/benchmarks/utils/bench_memmem.mojo +++ b/stdlib/benchmarks/utils/bench_memmem.mojo @@ -14,6 +14,7 @@ # NOTE: to test changes on the current branch using run-benchmarks.sh, remove # the -t flag. Remember to replace it again before pushing any code. +from collections.string.string_slice import _align_down, _memchr, _memmem from sys import simdwidthof from benchmark import Bench, BenchConfig, Bencher, BenchId, Unit, keep, run @@ -21,8 +22,6 @@ from bit import count_trailing_zeros from builtin.dtype import _uint_type_of_width from memory import UnsafePointer, bitcast, memcmp, pack_bits -from collections.string.string_slice import _align_down, _memchr, _memmem - # ===-----------------------------------------------------------------------===# # Benchmark Data # ===-----------------------------------------------------------------------===# diff --git a/stdlib/src/base64/base64.mojo b/stdlib/src/base64/base64.mojo index d0b11c46bd..117814cd09 100644 --- a/stdlib/src/base64/base64.mojo +++ b/stdlib/src/base64/base64.mojo @@ -21,10 +21,10 @@ from base64 import b64encode from collections import List from collections.string import StringSlice -from memory import Span from sys import simdwidthof import bit +from memory import Span from ._b64encode import b64encode_with_buffers as _b64encode_with_buffers diff --git a/stdlib/src/bit/__init__.mojo b/stdlib/src/bit/__init__.mojo index 71f5c067e8..8559bc94ef 100644 --- a/stdlib/src/bit/__init__.mojo +++ b/stdlib/src/bit/__init__.mojo @@ -13,17 +13,17 @@ """Implements the bit package.""" from .bit import ( - next_power_of_two, - prev_power_of_two, bit_not, bit_reverse, bit_width, byte_swap, count_leading_zeros, count_trailing_zeros, - log2_floor, is_power_of_two, + log2_floor, + next_power_of_two, pop_count, + prev_power_of_two, rotate_bits_left, rotate_bits_right, ) diff --git a/stdlib/src/builtin/_format_float.mojo b/stdlib/src/builtin/_format_float.mojo index ebd403a45c..5317abd65e 100644 --- a/stdlib/src/builtin/_format_float.mojo +++ b/stdlib/src/builtin/_format_float.mojo @@ -28,7 +28,7 @@ from math import log2 from sys.info import sizeof from builtin.io import _printf -from memory import bitcast, Span +from memory import Span, bitcast from utils import StaticTuple from utils.numerics import FPUtils, isinf, isnan diff --git a/stdlib/src/builtin/bool.mojo b/stdlib/src/builtin/bool.mojo index 42ce052e0e..5682f54fc1 100644 --- a/stdlib/src/builtin/bool.mojo +++ b/stdlib/src/builtin/bool.mojo @@ -16,10 +16,10 @@ These are Mojo built-ins, so you don't need to import them. """ from collections import List, Set +from hashlib._hasher import _Hasher from utils._select import _select_register_value from utils._visualizers import lldb_formatter_wrapping_type -from hashlib._hasher import _Hasher # ===----------------------------------------------------------------------=== # # Boolable diff --git a/stdlib/src/builtin/char.mojo b/stdlib/src/builtin/char.mojo index 20d4b1c665..620b45273f 100644 --- a/stdlib/src/builtin/char.mojo +++ b/stdlib/src/builtin/char.mojo @@ -16,7 +16,6 @@ from collections import Optional from collections.string import StringSlice from bit import count_leading_zeros - from memory import UnsafePointer diff --git a/stdlib/src/builtin/debug_assert.mojo b/stdlib/src/builtin/debug_assert.mojo index 767400f24f..544ccc88fa 100644 --- a/stdlib/src/builtin/debug_assert.mojo +++ b/stdlib/src/builtin/debug_assert.mojo @@ -17,14 +17,14 @@ These are Mojo built-ins, so you don't need to import them. from os import abort -from sys import is_gpu, is_nvidia_gpu, is_amd_gpu, llvm_intrinsic +from sys import is_amd_gpu, is_gpu, is_nvidia_gpu, llvm_intrinsic from sys._build import is_debug_build from sys.ffi import c_char, c_size_t, c_uint, external_call +from sys.intrinsics import block_idx, thread_idx from sys.param_env import env_get_string -from sys.intrinsics import thread_idx, block_idx from builtin._location import __call_location, _SourceLocation -from memory import UnsafePointer, Span +from memory import Span, UnsafePointer from utils.write import ( _TotalWritableBytes, diff --git a/stdlib/src/builtin/error.mojo b/stdlib/src/builtin/error.mojo index adb6fcecc8..ef8d667b66 100644 --- a/stdlib/src/builtin/error.mojo +++ b/stdlib/src/builtin/error.mojo @@ -15,12 +15,12 @@ These are Mojo built-ins, so you don't need to import them. """ +from collections.string import StringSlice from sys import alignof, sizeof from sys.ffi import c_char from memory import UnsafePointer, memcpy from memory.memory import _free -from collections.string import StringSlice from utils.write import write_buffered diff --git a/stdlib/src/builtin/file.mojo b/stdlib/src/builtin/file.mojo index b86a62a02e..9325034705 100644 --- a/stdlib/src/builtin/file.mojo +++ b/stdlib/src/builtin/file.mojo @@ -35,7 +35,7 @@ from os import PathLike, abort from sys import external_call, sizeof from sys.ffi import OpaquePointer -from memory import AddressSpace, UnsafePointer, Span +from memory import AddressSpace, Span, UnsafePointer from utils import StringSlice, write_buffered diff --git a/stdlib/src/builtin/file_descriptor.mojo b/stdlib/src/builtin/file_descriptor.mojo index 369704f53a..0fbdd3dc3c 100644 --- a/stdlib/src/builtin/file_descriptor.mojo +++ b/stdlib/src/builtin/file_descriptor.mojo @@ -23,12 +23,12 @@ f.close() ``` """ +from sys._amdgpu import printf_append_string_n, printf_begin from sys.ffi import external_call -from sys.info import is_nvidia_gpu, is_amd_gpu -from sys._amdgpu import printf_begin, printf_append_string_n +from sys.info import is_amd_gpu, is_nvidia_gpu from builtin.io import _printf -from memory import UnsafePointer, Span +from memory import Span, UnsafePointer @value diff --git a/stdlib/src/builtin/io.mojo b/stdlib/src/builtin/io.mojo index c2ff86a746..a7aa15ad2d 100644 --- a/stdlib/src/builtin/io.mojo +++ b/stdlib/src/builtin/io.mojo @@ -26,20 +26,16 @@ from sys import ( is_nvidia_gpu, stdout, ) +from sys._amdgpu import printf_append_args, printf_append_string_n, printf_begin from sys._libc import dup, fclose, fdopen, fflush -from sys.ffi import OpaquePointer, c_char, OpaquePointer -from sys._amdgpu import printf_begin, printf_append_args, printf_append_string_n +from sys.ffi import OpaquePointer, c_char from sys.intrinsics import _type_is_eq from builtin.dtype import _get_dtype_printf_format from builtin.file_descriptor import FileDescriptor -from memory import UnsafePointer, memcpy, bitcast +from memory import UnsafePointer, bitcast, memcpy -from utils import ( - StaticString, - write_args, - write_buffered, -) +from utils import StaticString, write_args, write_buffered # ===----------------------------------------------------------------------=== # # _file_handle diff --git a/stdlib/src/builtin/reversed.mojo b/stdlib/src/builtin/reversed.mojo index 686da90aaf..1b2acbae55 100644 --- a/stdlib/src/builtin/reversed.mojo +++ b/stdlib/src/builtin/reversed.mojo @@ -19,6 +19,7 @@ from collections import Deque, Dict from collections.deque import _DequeIter from collections.dict import _DictEntryIter, _DictKeyIter, _DictValueIter from collections.list import _ListIter + from memory.span import Span, _SpanIter from .range import _StridedRange diff --git a/stdlib/src/builtin/simd.mojo b/stdlib/src/builtin/simd.mojo index 22bcdce8ab..e4d6bc7b29 100644 --- a/stdlib/src/builtin/simd.mojo +++ b/stdlib/src/builtin/simd.mojo @@ -46,19 +46,19 @@ from sys import ( from sys._assembly import inlined_assembly from sys.info import _current_arch, _is_sm_9x -from bit import pop_count, byte_swap +from bit import byte_swap, pop_count from builtin._format_float import _write_float from builtin.dtype import _uint_type_of_width from builtin.format_int import _try_write_int from builtin.io import _snprintf from documentation import doc_private -from memory import UnsafePointer, bitcast, memcpy, Span +from memory import Span, UnsafePointer, bitcast, memcpy from utils import IndexList, StaticTuple from utils._visualizers import lldb_formatter_wrapping_type from utils.numerics import FPUtils -from utils.numerics import isnan as _isnan from utils.numerics import isinf as _isinf +from utils.numerics import isnan as _isnan from utils.numerics import max_finite as _max_finite from utils.numerics import max_or_inf as _max_or_inf from utils.numerics import min_finite as _min_finite diff --git a/stdlib/src/builtin/sort.mojo b/stdlib/src/builtin/sort.mojo index 9574568db1..6c44e3bb9f 100644 --- a/stdlib/src/builtin/sort.mojo +++ b/stdlib/src/builtin/sort.mojo @@ -20,7 +20,7 @@ from math import ceil from sys import bitwidthof from bit import count_leading_zeros -from memory import UnsafePointer, Span +from memory import Span, UnsafePointer # ===-----------------------------------------------------------------------===# # sort diff --git a/stdlib/src/builtin/string_literal.mojo b/stdlib/src/builtin/string_literal.mojo index 571236110b..122b79679b 100644 --- a/stdlib/src/builtin/string_literal.mojo +++ b/stdlib/src/builtin/string_literal.mojo @@ -18,18 +18,19 @@ These are Mojo built-ins, so you don't need to import them. from collections import List from collections.string.format import _CurlyEntryFormattable, _FormatCurlyEntry from collections.string.string_slice import ( - StringSlice, StaticString, + StringSlice, _StringSliceIter, _to_string_list, ) from hashlib._hasher import _HashableWithHasher, _Hasher -from memory import UnsafePointer, memcpy, Span from sys.ffi import c_char + +from memory import Span, UnsafePointer, memcpy + from utils import Writable, Writer -from utils.write import _WriteBufferStack from utils._visualizers import lldb_formatter_wrapping_type - +from utils.write import _WriteBufferStack # ===-----------------------------------------------------------------------===# # StringLiteral diff --git a/stdlib/src/collections/__init__.mojo b/stdlib/src/collections/__init__.mojo index cf70c2bf18..78e00fea3a 100644 --- a/stdlib/src/collections/__init__.mojo +++ b/stdlib/src/collections/__init__.mojo @@ -17,8 +17,8 @@ from .deque import Deque from .dict import Dict, KeyElement from .inline_array import InlineArray from .inline_list import InlineList +from .linked_list import LinkedList from .list import List from .optional import Optional, OptionalReg from .set import Set from .vector import InlinedFixedVector -from .linked_list import LinkedList diff --git a/stdlib/src/collections/linked_list.mojo b/stdlib/src/collections/linked_list.mojo index 19beb26112..ef34ce84b9 100644 --- a/stdlib/src/collections/linked_list.mojo +++ b/stdlib/src/collections/linked_list.mojo @@ -11,11 +11,12 @@ # limitations under the License. # ===----------------------------------------------------------------------=== # -from memory import UnsafePointer from collections import Optional from collections._index_normalization import normalize_index from os import abort +from memory import UnsafePointer + @value struct Node[ diff --git a/stdlib/src/collections/list.mojo b/stdlib/src/collections/list.mojo index 108a8afb41..ba6b8d9760 100644 --- a/stdlib/src/collections/list.mojo +++ b/stdlib/src/collections/list.mojo @@ -24,7 +24,7 @@ from os import abort from sys import sizeof from sys.intrinsics import _type_is_eq -from memory import Pointer, UnsafePointer, memcpy, Span +from memory import Pointer, Span, UnsafePointer, memcpy from .optional import Optional diff --git a/stdlib/src/collections/string/__init__.mojo b/stdlib/src/collections/string/__init__.mojo index 184b0656b1..53ae10eccc 100644 --- a/stdlib/src/collections/string/__init__.mojo +++ b/stdlib/src/collections/string/__init__.mojo @@ -12,12 +12,5 @@ # ===----------------------------------------------------------------------=== # """Implements the string package.""" -from .string import ( - String, - ascii, - atof, - atol, - chr, - ord, -) -from .string_slice import StringSlice, StaticString, CharsIter +from .string import String, ascii, atof, atol, chr, ord +from .string_slice import CharsIter, StaticString, StringSlice diff --git a/stdlib/src/collections/string/_unicode.mojo b/stdlib/src/collections/string/_unicode.mojo index d5ac9972c9..6908d5f283 100644 --- a/stdlib/src/collections/string/_unicode.mojo +++ b/stdlib/src/collections/string/_unicode.mojo @@ -11,10 +11,10 @@ # limitations under the License. # ===----------------------------------------------------------------------=== # -from memory import UnsafePointer, memcpy -from memory import Span from collections.string._unicode_lookups import * +from memory import Span, UnsafePointer, memcpy + fn _uppercase_mapping_index(rune: Char) -> Int: """Return index for upper case mapping or -1 if no mapping is given.""" diff --git a/stdlib/src/collections/string/_utf8_validation.mojo b/stdlib/src/collections/string/_utf8_validation.mojo index b0bf4f94f8..7cca68dc52 100644 --- a/stdlib/src/collections/string/_utf8_validation.mojo +++ b/stdlib/src/collections/string/_utf8_validation.mojo @@ -26,9 +26,9 @@ https://github.com/simdutf/SimdUnicode/blob/main/src/UTF8.cs """ from base64._b64encode import _sub_with_saturation -from memory import UnsafePointer, Span from sys.intrinsics import llvm_intrinsic +from memory import Span, UnsafePointer alias TOO_SHORT: UInt8 = 1 << 0 alias TOO_LONG: UInt8 = 1 << 1 diff --git a/stdlib/src/collections/string/format.mojo b/stdlib/src/collections/string/format.mojo index b77ea15260..d1e8d34411 100644 --- a/stdlib/src/collections/string/format.mojo +++ b/stdlib/src/collections/string/format.mojo @@ -13,7 +13,9 @@ """Implements Formatting utilities.""" from collections import Optional + from memory import UnsafePointer + from utils import Variant # TODO: _FormatCurlyEntry and _FormatSpec should be public in the future for diff --git a/stdlib/src/collections/string/inline_string.mojo b/stdlib/src/collections/string/inline_string.mojo index 7245653360..24bd23897d 100644 --- a/stdlib/src/collections/string/inline_string.mojo +++ b/stdlib/src/collections/string/inline_string.mojo @@ -17,11 +17,12 @@ from collections import InlineArray, Optional from collections.string import StringSlice -from memory import UnsafePointer, memcpy, Span from os import abort from sys import sizeof -from utils import Variant +from memory import Span, UnsafePointer, memcpy + +from utils import Variant # ===-----------------------------------------------------------------------===# # InlineString diff --git a/stdlib/src/collections/string/string.mojo b/stdlib/src/collections/string/string.mojo index 1b0fbe9a4e..916336ce80 100644 --- a/stdlib/src/collections/string/string.mojo +++ b/stdlib/src/collections/string/string.mojo @@ -13,26 +13,8 @@ """Implements basic object methods for working with strings.""" from collections import KeyElement, List, Optional -from collections.string import CharsIter from collections._index_normalization import normalize_index -from hashlib._hasher import _HashableWithHasher, _Hasher -from os import abort -from sys import bitwidthof, llvm_intrinsic -from sys.ffi import c_char -from sys.intrinsics import _type_is_eq -from utils.write import write_buffered, _TotalWritableBytes, _WriteBufferHeap - -from bit import count_leading_zeros -from memory import UnsafePointer, memcmp, memcpy, Span -from python import PythonObject - -from utils import ( - IndexList, - Variant, - Writable, - Writer, - write_args, -) +from collections.string import CharsIter from collections.string._unicode import ( is_lowercase, is_uppercase, @@ -41,12 +23,24 @@ from collections.string._unicode import ( ) from collections.string.format import _CurlyEntryFormattable, _FormatCurlyEntry from collections.string.string_slice import ( - StringSlice, StaticString, + StringSlice, _StringSliceIter, _to_string_list, _utf8_byte_type, ) +from hashlib._hasher import _HashableWithHasher, _Hasher +from os import abort +from sys import bitwidthof, llvm_intrinsic +from sys.ffi import c_char +from sys.intrinsics import _type_is_eq + +from bit import count_leading_zeros +from memory import Span, UnsafePointer, memcmp, memcpy +from python import PythonObject + +from utils import IndexList, Variant, Writable, Writer, write_args +from utils.write import _TotalWritableBytes, _WriteBufferHeap, write_buffered # ===----------------------------------------------------------------------=== # # ord diff --git a/stdlib/src/collections/string/string_slice.mojo b/stdlib/src/collections/string/string_slice.mojo index 820c262621..214620616b 100644 --- a/stdlib/src/collections/string/string_slice.mojo +++ b/stdlib/src/collections/string/string_slice.mojo @@ -21,17 +21,18 @@ from collections.string import StringSlice ``` """ -from bit import count_leading_zeros, count_trailing_zeros from collections import List, Optional -from collections.string.format import _CurlyEntryFormattable, _FormatCurlyEntry from collections.string._utf8_validation import _is_valid_utf8 -from memory import UnsafePointer, memcmp, memcpy, Span, pack_bits -from memory.memory import _memcmp_impl_unconstrained -from sys import bitwidthof, simdwidthof -from sys.intrinsics import unlikely, likely -from sys.ffi import c_char +from collections.string.format import _CurlyEntryFormattable, _FormatCurlyEntry from hashlib._hasher import _HashableWithHasher, _Hasher from os import PathLike +from sys import bitwidthof, simdwidthof +from sys.ffi import c_char +from sys.intrinsics import likely, unlikely + +from bit import count_leading_zeros, count_trailing_zeros +from memory import Span, UnsafePointer, memcmp, memcpy, pack_bits +from memory.memory import _memcmp_impl_unconstrained alias StaticString = StringSlice[StaticConstantOrigin] """An immutable static string slice.""" diff --git a/stdlib/src/hashlib/hash.mojo b/stdlib/src/hashlib/hash.mojo index d4741218b2..82b1638e32 100644 --- a/stdlib/src/hashlib/hash.mojo +++ b/stdlib/src/hashlib/hash.mojo @@ -27,7 +27,7 @@ There are a few main tools in this module: import random from collections import InlineArray -from sys import bitwidthof, sizeof, simdwidthof +from sys import bitwidthof, simdwidthof, sizeof from sys.ffi import _Global from builtin.dtype import _uint_type_of_width diff --git a/stdlib/src/math/math.mojo b/stdlib/src/math/math.mojo index d08a7be526..bdbd292d30 100644 --- a/stdlib/src/math/math.mojo +++ b/stdlib/src/math/math.mojo @@ -36,7 +36,7 @@ from sys.info import _current_arch from bit import count_trailing_zeros from builtin.dtype import _integral_type_of from builtin.simd import _modf, _simd_apply -from memory import UnsafePointer, Span +from memory import Span, UnsafePointer from utils.index import IndexList from utils.numerics import FPUtils, isnan, nan diff --git a/stdlib/src/memory/pointer.mojo b/stdlib/src/memory/pointer.mojo index ef132bc0c0..746564b490 100644 --- a/stdlib/src/memory/pointer.mojo +++ b/stdlib/src/memory/pointer.mojo @@ -21,7 +21,6 @@ from memory import Pointer from sys import is_nvidia_gpu - # ===-----------------------------------------------------------------------===# # AddressSpace # ===-----------------------------------------------------------------------===# diff --git a/stdlib/src/memory/span.mojo b/stdlib/src/memory/span.mojo index 58c769c698..756ece77b8 100644 --- a/stdlib/src/memory/span.mojo +++ b/stdlib/src/memory/span.mojo @@ -21,9 +21,9 @@ from memory import Span """ from collections import InlineArray +from sys.info import simdwidthof from memory import Pointer, UnsafePointer -from sys.info import simdwidthof trait AsBytes: diff --git a/stdlib/src/memory/unsafe_pointer.mojo b/stdlib/src/memory/unsafe_pointer.mojo index 11076f3168..47065c2d62 100644 --- a/stdlib/src/memory/unsafe_pointer.mojo +++ b/stdlib/src/memory/unsafe_pointer.mojo @@ -28,6 +28,7 @@ from sys.intrinsics import ( strided_load, strided_store, ) + from bit import is_power_of_two from memory.memory import _free, _malloc diff --git a/stdlib/src/os/env.mojo b/stdlib/src/os/env.mojo index 06c017fd2a..027bc44be8 100644 --- a/stdlib/src/os/env.mojo +++ b/stdlib/src/os/env.mojo @@ -19,11 +19,10 @@ from os import setenv ``` """ +from collections.string import StringSlice from sys import external_call, os_is_linux, os_is_macos, os_is_windows from sys.ffi import c_int -from collections.string import StringSlice - from memory import UnsafePointer diff --git a/stdlib/src/os/os.mojo b/stdlib/src/os/os.mojo index 791b186acd..4bb9d30583 100644 --- a/stdlib/src/os/os.mojo +++ b/stdlib/src/os/os.mojo @@ -26,7 +26,6 @@ from sys.ffi import OpaquePointer, c_char from memory import UnsafePointer - from .path import isdir, split from .pathlike import PathLike diff --git a/stdlib/src/os/path/path.mojo b/stdlib/src/os/path/path.mojo index 79f51707c9..bb9a14a9ca 100644 --- a/stdlib/src/os/path/path.mojo +++ b/stdlib/src/os/path/path.mojo @@ -25,6 +25,7 @@ from stat import S_ISDIR, S_ISLNK, S_ISREG from sys import has_neon, os_is_linux, os_is_macos, os_is_windows from memory import Span + from utils import StringSlice from .. import PathLike diff --git a/stdlib/src/prelude/__init__.mojo b/stdlib/src/prelude/__init__.mojo index a32183050e..e2c5807909 100644 --- a/stdlib/src/prelude/__init__.mojo +++ b/stdlib/src/prelude/__init__.mojo @@ -15,14 +15,7 @@ """ from collections import KeyElement, List -from collections.string import ( - String, - ascii, - atof, - atol, - chr, - ord, -) +from collections.string import String, ascii, atof, atol, chr, ord from hashlib.hash import Hashable, hash from builtin.anytype import AnyType, UnknownDestructibility @@ -35,14 +28,14 @@ from builtin.builtin_list import ( VariadicPack, ) from builtin.builtin_slice import Slice, slice +from builtin.char import Char from builtin.comparable import ( - LessThanComparable, + Comparable, GreaterThanComparable, - LessThanOrEqualComparable, GreaterThanOrEqualComparable, - Comparable, + LessThanComparable, + LessThanOrEqualComparable, ) -from builtin.char import Char from builtin.constrained import constrained from builtin.coroutine import AnyCoroutine, Coroutine, RaisingCoroutine from builtin.debug_assert import debug_assert @@ -56,10 +49,10 @@ from builtin.floatable import Floatable, FloatableRaising, float from builtin.format_int import bin, hex, oct from builtin.identifiable import Identifiable, StringableIdentifiable from builtin.int import ( + ImplicitlyIntable, Indexer, Int, Intable, - ImplicitlyIntable, IntableRaising, index, int, @@ -88,10 +81,10 @@ from builtin.simd import ( SIMD, BFloat16, Byte, - Float8_e5m2, - Float8_e5m2fnuz, Float8_e4m3fn, Float8_e4m3fnuz, + Float8_e5m2, + Float8_e5m2fnuz, Float16, Float32, Float64, @@ -134,11 +127,11 @@ from builtin.value import ( ExplicitlyCopyable, Movable, RepresentableCollectionElement, - WritableCollectionElement, StringableCollectionElement, + WritableCollectionElement, ) from documentation import doc_private from memory import AddressSpace, Pointer - from memory.span import AsBytes + from utils import Writable, Writer diff --git a/stdlib/src/pwd/_linux.mojo b/stdlib/src/pwd/_linux.mojo index 9fbb80fe54..271f52385d 100644 --- a/stdlib/src/pwd/_linux.mojo +++ b/stdlib/src/pwd/_linux.mojo @@ -10,10 +10,11 @@ # See the License for the specific language governing permissions and # limitations under the License. # ===----------------------------------------------------------------------=== # -from memory import UnsafePointer from collections.string import StringSlice from sys.ffi import c_char, external_call +from memory import UnsafePointer + from .pwd import Passwd alias uid_t = Int32 diff --git a/stdlib/src/pwd/_macos.mojo b/stdlib/src/pwd/_macos.mojo index fe6ea33593..ab97cafe1d 100644 --- a/stdlib/src/pwd/_macos.mojo +++ b/stdlib/src/pwd/_macos.mojo @@ -10,10 +10,10 @@ # See the License for the specific language governing permissions and # limitations under the License. # ===----------------------------------------------------------------------=== # -from memory import UnsafePointer +from collections.string import StringSlice from sys.ffi import c_char, external_call -from collections.string import StringSlice +from memory import UnsafePointer from .pwd import Passwd diff --git a/stdlib/src/python/_cpython.mojo b/stdlib/src/python/_cpython.mojo index 187354298a..c742d964d5 100644 --- a/stdlib/src/python/_cpython.mojo +++ b/stdlib/src/python/_cpython.mojo @@ -18,6 +18,7 @@ Documentation for these functions can be found online at: """ from collections import InlineArray, Optional +from collections.string import StringSlice from os import abort, getenv, setenv from os.path import dirname from pathlib import Path @@ -38,8 +39,6 @@ from memory import UnsafePointer from python._bindings import PyMojoObject, Pythonable, Typed_initproc from python.python import _get_global_python_itf -from collections.string import StringSlice - # ===-----------------------------------------------------------------------===# # Raw Bindings # ===-----------------------------------------------------------------------===# diff --git a/stdlib/src/python/python_object.mojo b/stdlib/src/python/python_object.mojo index 468ea13ebd..a051415af7 100644 --- a/stdlib/src/python/python_object.mojo +++ b/stdlib/src/python/python_object.mojo @@ -27,7 +27,6 @@ from sys.intrinsics import _type_is_eq from memory import UnsafePointer - from ._cpython import CPython, PyObjectPtr from .python import Python, _get_global_python_itf diff --git a/stdlib/src/sys/__init__.mojo b/stdlib/src/sys/__init__.mojo index 0f0e7e55ed..9971b3ccb2 100644 --- a/stdlib/src/sys/__init__.mojo +++ b/stdlib/src/sys/__init__.mojo @@ -72,9 +72,9 @@ from .intrinsics import ( ) from .param_env import ( env_get_bool, + env_get_dtype, env_get_int, env_get_string, - env_get_dtype, is_defined, ) from .terminate import exit diff --git a/stdlib/src/sys/_amdgpu.mojo b/stdlib/src/sys/_amdgpu.mojo index 9e16997830..eb0dddb24e 100644 --- a/stdlib/src/sys/_amdgpu.mojo +++ b/stdlib/src/sys/_amdgpu.mojo @@ -11,18 +11,19 @@ # limitations under the License. # ===----------------------------------------------------------------------=== # -from memory import UnsafePointer, Span -from memory.pointer import _GPUAddressSpace +from collections import InlineArray from os.atomic import Atomic, _compare_exchange_weak_integral_impl from sys.intrinsics import ( + ballot, + implicitarg_ptr, lane_id, readfirstlane, sendmsg, - implicitarg_ptr, - ballot, ) from time import sleep -from collections import InlineArray + +from memory import Span, UnsafePointer +from memory.pointer import _GPUAddressSpace # NOTE: MOST OF THE CODE HERE IS ADAPTED FROM # AMD'S `device-libs`. diff --git a/stdlib/src/sys/arg.mojo b/stdlib/src/sys/arg.mojo index 64257cce6c..2d75c444d6 100644 --- a/stdlib/src/sys/arg.mojo +++ b/stdlib/src/sys/arg.mojo @@ -30,12 +30,11 @@ def main(): ``` """ +from collections.string import StringSlice from sys import external_call from memory import UnsafePointer -from collections.string import StringSlice - # TODO: When we have global variables, this should be a global list. fn argv() -> VariadicList[StringSlice[StaticConstantOrigin]]: diff --git a/stdlib/src/sys/compile.mojo b/stdlib/src/sys/compile.mojo index a2a737b551..0ee8b4160b 100644 --- a/stdlib/src/sys/compile.mojo +++ b/stdlib/src/sys/compile.mojo @@ -12,7 +12,7 @@ # ===----------------------------------------------------------------------=== # """Implements functions that return compile-time information. """ -from .param_env import env_get_string, env_get_int +from .param_env import env_get_int, env_get_string # ===----------------------------------------------------------------------=== # # OptimizationLevel diff --git a/stdlib/src/sys/ffi.mojo b/stdlib/src/sys/ffi.mojo index 3ead55a560..03c7b05877 100644 --- a/stdlib/src/sys/ffi.mojo +++ b/stdlib/src/sys/ffi.mojo @@ -12,13 +12,12 @@ # ===----------------------------------------------------------------------=== # """Implements a foreign functions interface (FFI).""" +from collections.string import StringSlice from os import abort from sys._libc import dlclose, dlerror, dlopen, dlsym from memory import UnsafePointer -from collections.string import StringSlice - from .info import is_64bit, os_is_linux, os_is_macos, os_is_windows from .intrinsics import _mlirtype_is_eq diff --git a/stdlib/src/sys/intrinsics.mojo b/stdlib/src/sys/intrinsics.mojo index 6b7ca6dfaf..58c7069a2d 100644 --- a/stdlib/src/sys/intrinsics.mojo +++ b/stdlib/src/sys/intrinsics.mojo @@ -20,12 +20,13 @@ from sys import PrefetchLocality """ import math +from sys.info import _is_sm_9x from memory import AddressSpace, UnsafePointer from memory.pointer import _GPUAddressSpace -from sys.info import _is_sm_9x + from ._assembly import inlined_assembly -from .info import is_nvidia_gpu, is_amd_gpu, sizeof +from .info import is_amd_gpu, is_nvidia_gpu, sizeof # ===-----------------------------------------------------------------------===# # llvm_intrinsic diff --git a/stdlib/src/tempfile/tempfile.mojo b/stdlib/src/tempfile/tempfile.mojo index 92bbd07f39..7b7d83b488 100644 --- a/stdlib/src/tempfile/tempfile.mojo +++ b/stdlib/src/tempfile/tempfile.mojo @@ -26,6 +26,7 @@ from collections.string import StringSlice from pathlib import Path from memory import Span + from utils import write_buffered alias TMP_MAX = 10_000 diff --git a/stdlib/src/testing/testing.mojo b/stdlib/src/testing/testing.mojo index 974742e30f..355d54653b 100644 --- a/stdlib/src/testing/testing.mojo +++ b/stdlib/src/testing/testing.mojo @@ -32,8 +32,10 @@ def main(): """ from collections import Optional from math import isclose -from memory import memcmp + from builtin._location import __call_location, _SourceLocation +from memory import memcmp + from utils import StringSlice # ===----------------------------------------------------------------------=== # diff --git a/stdlib/src/time/__init__.mojo b/stdlib/src/time/__init__.mojo index 4a641f36db..23258e8895 100644 --- a/stdlib/src/time/__init__.mojo +++ b/stdlib/src/time/__init__.mojo @@ -12,10 +12,4 @@ # ===----------------------------------------------------------------------=== # """Implements the time package.""" -from .time import ( - monotonic, - perf_counter, - perf_counter_ns, - sleep, - time_function, -) +from .time import monotonic, perf_counter, perf_counter_ns, sleep, time_function diff --git a/stdlib/src/time/time.mojo b/stdlib/src/time/time.mojo index 25cd4eca67..416354e1c7 100644 --- a/stdlib/src/time/time.mojo +++ b/stdlib/src/time/time.mojo @@ -24,8 +24,8 @@ from os import abort from sys import ( external_call, is_amd_gpu, - is_nvidia_gpu, is_gpu, + is_nvidia_gpu, llvm_intrinsic, os_is_linux, os_is_windows, diff --git a/stdlib/src/utils/__init__.mojo b/stdlib/src/utils/__init__.mojo index 87133a3238..f9d329d902 100644 --- a/stdlib/src/utils/__init__.mojo +++ b/stdlib/src/utils/__init__.mojo @@ -12,11 +12,12 @@ # ===----------------------------------------------------------------------=== # """Implements the utils package.""" -from .index import Index, IndexList, product from collections.string.inline_string import InlineString +from collections.string.string_slice import StaticString, StringSlice + +from .index import Index, IndexList, product from .lock import BlockingScopedLock, BlockingSpinLock, SpinWaiter from .loop import unroll from .static_tuple import StaticTuple -from collections.string.string_slice import StaticString, StringSlice from .variant import Variant from .write import Writable, Writer, write_args, write_buffered diff --git a/stdlib/src/utils/index.mojo b/stdlib/src/utils/index.mojo index 0bfe17b8b5..47649ecd2a 100644 --- a/stdlib/src/utils/index.mojo +++ b/stdlib/src/utils/index.mojo @@ -21,6 +21,7 @@ from utils import IndexList """ from collections.string.string import _calc_initial_buffer_size +from hashlib._hasher import _Hasher from sys import bitwidthof from builtin.dtype import _int_type_of_width, _uint_type_of_width @@ -28,7 +29,6 @@ from builtin.io import _get_dtype_printf_format, _snprintf from . import unroll from .static_tuple import StaticTuple -from hashlib._hasher import _Hasher # ===-----------------------------------------------------------------------===# # Utilities diff --git a/stdlib/src/utils/write.mojo b/stdlib/src/utils/write.mojo index 0e522bf921..535b06f554 100644 --- a/stdlib/src/utils/write.mojo +++ b/stdlib/src/utils/write.mojo @@ -13,9 +13,9 @@ """Establishes the contract between `Writer` and `Writable` types.""" from collections import InlineArray -from sys.info import is_gpu, is_nvidia_gpu, is_amd_gpu +from sys.info import is_amd_gpu, is_gpu, is_nvidia_gpu -from memory import UnsafePointer, memcpy, Span +from memory import Span, UnsafePointer, memcpy from utils import StaticString diff --git a/stdlib/test/bit/test_bit.mojo b/stdlib/test/bit/test_bit.mojo index 10041b6ec2..3d434be535 100644 --- a/stdlib/test/bit/test_bit.mojo +++ b/stdlib/test/bit/test_bit.mojo @@ -12,9 +12,9 @@ # ===----------------------------------------------------------------------=== # # RUN: %bare-mojo %s +from math import floor, log2 + from bit import ( - next_power_of_two, - prev_power_of_two, bit_not, bit_reverse, bit_width, @@ -22,12 +22,13 @@ from bit import ( count_leading_zeros, count_trailing_zeros, is_power_of_two, + log2_floor, + next_power_of_two, pop_count, + prev_power_of_two, rotate_bits_left, rotate_bits_right, - log2_floor, ) -from math import log2, floor from testing import assert_equal diff --git a/stdlib/test/builtin/test_char.mojo b/stdlib/test/builtin/test_char.mojo index 2af35ad639..1d0f124d95 100644 --- a/stdlib/test/builtin/test_char.mojo +++ b/stdlib/test/builtin/test_char.mojo @@ -12,7 +12,7 @@ # ===----------------------------------------------------------------------=== # # RUN: %mojo %s -from testing import assert_true, assert_false, assert_equal, assert_not_equal +from testing import assert_equal, assert_false, assert_not_equal, assert_true def test_char_validity(): diff --git a/stdlib/test/builtin/test_print.mojo b/stdlib/test/builtin/test_print.mojo index 8dc2aad510..9b6ca1e3d3 100644 --- a/stdlib/test/builtin/test_print.mojo +++ b/stdlib/test/builtin/test_print.mojo @@ -14,9 +14,8 @@ import sys -from tempfile import NamedTemporaryFile - from collections.string import StaticString +from tempfile import NamedTemporaryFile from builtin._location import __call_location, _SourceLocation from testing import assert_equal diff --git a/stdlib/test/builtin/test_sort_issue_1018.mojo b/stdlib/test/builtin/test_sort_issue_1018.mojo index 7132374abe..9a0f3fc451 100644 --- a/stdlib/test/builtin/test_sort_issue_1018.mojo +++ b/stdlib/test/builtin/test_sort_issue_1018.mojo @@ -15,7 +15,7 @@ from random import rand -from memory import UnsafePointer, Span +from memory import Span, UnsafePointer fn sort_test[D: DType, name: StringLiteral](size: Int, max: Int) raises: diff --git a/stdlib/test/collections/string/test_inlined_string.mojo b/stdlib/test/collections/string/test_inlined_string.mojo index 554ac157ad..afc07e32b1 100644 --- a/stdlib/test/collections/string/test_inlined_string.mojo +++ b/stdlib/test/collections/string/test_inlined_string.mojo @@ -13,13 +13,12 @@ # REQUIRES: disabled # RUN: %mojo --debug-level full %s +from collections.string import InlineString +from collections.string.inline_string import _FixedString from os import abort from testing import assert_equal, assert_true -from collections.string import InlineString -from collections.string.inline_string import _FixedString - def main(): test_fixed_string() diff --git a/stdlib/test/collections/string/test_string.mojo b/stdlib/test/collections/string/test_string.mojo index 0d39db2fa5..c34f617060 100644 --- a/stdlib/test/collections/string/test_string.mojo +++ b/stdlib/test/collections/string/test_string.mojo @@ -12,21 +12,21 @@ # ===----------------------------------------------------------------------=== # # RUN: %mojo %s -from testing import ( - assert_equal, - assert_false, - assert_not_equal, - assert_raises, - assert_true, -) - from collections.string import StringSlice from collections.string.string import ( _calc_initial_buffer_size_int32, _calc_initial_buffer_size_int64, ) + from memory import UnsafePointer from python import Python +from testing import ( + assert_equal, + assert_false, + assert_not_equal, + assert_raises, + assert_true, +) @value diff --git a/stdlib/test/collections/string/test_string_slice.mojo b/stdlib/test/collections/string/test_string_slice.mojo index 1ac338e12d..807d4dff8b 100644 --- a/stdlib/test/collections/string/test_string_slice.mojo +++ b/stdlib/test/collections/string/test_string_slice.mojo @@ -12,16 +12,15 @@ # ===----------------------------------------------------------------------=== # # RUN: %mojo %s -from testing import assert_equal, assert_false, assert_true, assert_raises - +from collections.string._utf8_validation import _is_valid_utf8 from collections.string.string_slice import ( StringSlice, _count_utf8_continuation_bytes, ) -from collections.string._utf8_validation import _is_valid_utf8 -from memory import Span, UnsafePointer +from sys.info import alignof, sizeof -from sys.info import sizeof, alignof +from memory import Span, UnsafePointer +from testing import assert_equal, assert_false, assert_raises, assert_true fn test_string_slice_layout() raises: diff --git a/stdlib/test/collections/test_linked_list.mojo b/stdlib/test/collections/test_linked_list.mojo index 5641002066..6fd56ec4a6 100644 --- a/stdlib/test/collections/test_linked_list.mojo +++ b/stdlib/test/collections/test_linked_list.mojo @@ -13,14 +13,15 @@ # RUN: %mojo %s from collections import LinkedList, Optional -from testing import assert_equal, assert_raises, assert_true, assert_false + from test_utils import ( + CopyCountedStruct, CopyCounter, - MoveCounter, DtorCounter, + MoveCounter, g_dtor_count, - CopyCountedStruct, ) +from testing import assert_equal, assert_false, assert_raises, assert_true def test_construction(): diff --git a/stdlib/test/collections/test_list.mojo b/stdlib/test/collections/test_list.mojo index e7af56f5a8..f977b2b47c 100644 --- a/stdlib/test/collections/test_list.mojo +++ b/stdlib/test/collections/test_list.mojo @@ -15,13 +15,13 @@ from collections import List from sys.info import sizeof -from memory import UnsafePointer, Span +from memory import Span, UnsafePointer from test_utils import ( + CopyCountedStruct, CopyCounter, - MoveCounter, DtorCounter, + MoveCounter, g_dtor_count, - CopyCountedStruct, ) from testing import assert_equal, assert_false, assert_raises, assert_true diff --git a/stdlib/test/hashlib/test_ahash.mojo b/stdlib/test/hashlib/test_ahash.mojo index 7e644f2e5a..3b87281543 100644 --- a/stdlib/test/hashlib/test_ahash.mojo +++ b/stdlib/test/hashlib/test_ahash.mojo @@ -18,7 +18,7 @@ from hashlib.hash import hash as old_hash from bit import pop_count from builtin._location import __call_location -from memory import memset_zero, stack_allocation, Span +from memory import Span, memset_zero, stack_allocation from testing import assert_equal, assert_not_equal, assert_true # Source: https://www.101languages.net/arabic/most-common-arabic-words/ diff --git a/stdlib/test/hashlib/test_hasher.mojo b/stdlib/test/hashlib/test_hasher.mojo index 3f16ed259d..0baca6eac9 100644 --- a/stdlib/test/hashlib/test_hasher.mojo +++ b/stdlib/test/hashlib/test_hasher.mojo @@ -13,6 +13,7 @@ # RUN: %mojo %s +from collections.string import StringSlice from hashlib._ahash import AHasher from hashlib._hasher import _hash_with_hasher, _HashableWithHasher, _Hasher from pathlib import Path @@ -21,8 +22,6 @@ from memory import UnsafePointer from python import Python, PythonObject from testing import assert_equal, assert_true -from collections.string import StringSlice - struct DummyHasher(_Hasher): var _dummy_value: UInt64 diff --git a/stdlib/test/memory/test_span.mojo b/stdlib/test/memory/test_span.mojo index c6369315f1..629f8b9555 100644 --- a/stdlib/test/memory/test_span.mojo +++ b/stdlib/test/memory/test_span.mojo @@ -14,7 +14,7 @@ from collections import InlineArray, List -from memory import UnsafePointer, Span +from memory import Span, UnsafePointer from testing import assert_equal, assert_true diff --git a/stdlib/test/python/test_python_object_dunder_contains.mojo b/stdlib/test/python/test_python_object_dunder_contains.mojo index 7b7de0b089..6276868449 100644 --- a/stdlib/test/python/test_python_object_dunder_contains.mojo +++ b/stdlib/test/python/test_python_object_dunder_contains.mojo @@ -13,9 +13,10 @@ # XFAIL: asan && !system-darwin # RUN: %mojo %s +from collections import Dict + from python import Python, PythonObject from testing import assert_equal, assert_false, assert_raises, assert_true -from collections import Dict def test_contains_dunder(mut python: Python): diff --git a/stdlib/test/sys/test_compile.mojo b/stdlib/test/sys/test_compile.mojo index d18535ee72..5aac175c72 100644 --- a/stdlib/test/sys/test_compile.mojo +++ b/stdlib/test/sys/test_compile.mojo @@ -12,7 +12,7 @@ # ===----------------------------------------------------------------------=== # # RUN: %bare-mojo %s -from sys.compile import OptimizationLevel, DebugLevel +from sys.compile import DebugLevel, OptimizationLevel from testing import assert_equal diff --git a/stdlib/test/sys/test_compile_debug.mojo b/stdlib/test/sys/test_compile_debug.mojo index d6e2271e20..0748a6c6c2 100644 --- a/stdlib/test/sys/test_compile_debug.mojo +++ b/stdlib/test/sys/test_compile_debug.mojo @@ -12,7 +12,7 @@ # ===----------------------------------------------------------------------=== # # RUN: %bare-mojo -O0 %s -from sys.compile import OptimizationLevel, DebugLevel +from sys.compile import DebugLevel, OptimizationLevel from testing import assert_equal diff --git a/stdlib/test/test_utils/__init__.mojo b/stdlib/test/test_utils/__init__.mojo index d85307ba91..b7dd12e0db 100644 --- a/stdlib/test/test_utils/__init__.mojo +++ b/stdlib/test/test_utils/__init__.mojo @@ -13,14 +13,14 @@ from .test_utils import libm_call from .types import ( + CopyCountedStruct, CopyCounter, + DtorCounter, ExplicitCopyOnly, ImplicitCopyOnly, MoveCounter, MoveOnly, ObservableDel, ValueDestructorRecorder, - DtorCounter, g_dtor_count, - CopyCountedStruct, ) diff --git a/stdlib/test/testing/test_assertion.mojo b/stdlib/test/testing/test_assertion.mojo index eb7a0ab38b..68b3e17774 100644 --- a/stdlib/test/testing/test_assertion.mojo +++ b/stdlib/test/testing/test_assertion.mojo @@ -25,8 +25,8 @@ from testing import ( assert_true, ) -from utils.numerics import inf, nan from utils import StringSlice +from utils.numerics import inf, nan def test_assert_messages(): diff --git a/stdlib/test/time/test_time.mojo b/stdlib/test/time/test_time.mojo index 50101f5f45..d6294f515f 100644 --- a/stdlib/test/time/test_time.mojo +++ b/stdlib/test/time/test_time.mojo @@ -13,13 +13,7 @@ # RUN: %mojo %s from sys import os_is_windows -from time import ( - monotonic, - perf_counter, - perf_counter_ns, - sleep, - time_function, -) +from time import monotonic, perf_counter, perf_counter_ns, sleep, time_function from testing import assert_true diff --git a/stdlib/test/utils/test_static_tuple.mojo b/stdlib/test/utils/test_static_tuple.mojo index e25c6d7fc6..ff4177cba1 100644 --- a/stdlib/test/utils/test_static_tuple.mojo +++ b/stdlib/test/utils/test_static_tuple.mojo @@ -13,6 +13,7 @@ # RUN: %mojo %s from testing import assert_equal + from utils import StaticTuple diff --git a/stdlib/test/utils/test_write.mojo b/stdlib/test/utils/test_write.mojo index 3844793005..fbfa52916c 100644 --- a/stdlib/test/utils/test_write.mojo +++ b/stdlib/test/utils/test_write.mojo @@ -12,10 +12,11 @@ # ===----------------------------------------------------------------------=== # # RUN: %mojo -debug-level full %s +from collections.string.inline_string import _FixedString + from testing import assert_equal from utils import Writable, Writer -from collections.string.inline_string import _FixedString fn main() raises: From 35845e425f8aec060c567c44365f6dcabdc5bfdf Mon Sep 17 00:00:00 2001 From: modularbot Date: Mon, 10 Feb 2025 19:19:04 +0000 Subject: [PATCH 367/509] Update lockfiles to point to latest nightly version: 25.1.0.dev2025021016 --- examples/life/magic.lock | 151 ++++++++++++++++++---------------- examples/magic.lock | 142 ++++++++++++++++---------------- examples/operators/magic.lock | 142 ++++++++++++++++---------------- examples/testing/magic.lock | 142 ++++++++++++++++---------------- magic.lock | 142 ++++++++++++++++---------------- 5 files changed, 364 insertions(+), 355 deletions(-) diff --git a/examples/life/magic.lock b/examples/life/magic.lock index 8f99f91e95..9b89e8a04e 100644 --- a/examples/life/magic.lock +++ b/examples/life/magic.lock @@ -91,11 +91,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.10.0-h5888daf_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020905-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025020905-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025020905-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020905-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020905-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025021016-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025021016-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025021016-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025021016-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025021016-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/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda @@ -229,11 +229,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.10.0-h5ad3122_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020905-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025020905-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025020905-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020905-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020905-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025021016-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025021016-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025021016-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025021016-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025021016-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/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-ha32ae93_3.conda @@ -348,11 +348,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.5.0-h2471fea_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020905-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025020905-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025020905-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020905-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020905-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025021016-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025021016-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025021016-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025021016-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025021016-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/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda @@ -990,6 +990,7 @@ packages: arch: x86_64 platform: linux license: GPL-3.0-or-later + license_family: GPL size: 2967824 timestamp: 1739038787800 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gettext-tools-0.23.1-h5ad3122_0.conda @@ -1000,6 +1001,7 @@ packages: arch: aarch64 platform: linux license: GPL-3.0-or-later + license_family: GPL size: 3232815 timestamp: 1739038646552 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gettext-tools-0.23.1-h493aca8_0.conda @@ -1012,6 +1014,7 @@ packages: arch: arm64 platform: osx license: GPL-3.0-or-later + license_family: GPL size: 2890553 timestamp: 1739039406578 - conda: https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.13-h59595ed_1003.conda @@ -1961,6 +1964,7 @@ packages: arch: x86_64 platform: linux license: GPL-3.0-or-later + license_family: GPL size: 166867 timestamp: 1739038720211 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgettextpo-0.23.1-h5ad3122_0.conda @@ -1971,6 +1975,7 @@ packages: arch: aarch64 platform: linux license: GPL-3.0-or-later + license_family: GPL size: 207214 timestamp: 1739038603075 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgettextpo-0.23.1-h493aca8_0.conda @@ -1983,6 +1988,7 @@ packages: arch: arm64 platform: osx license: GPL-3.0-or-later + license_family: GPL size: 166929 timestamp: 1739039303132 - conda: https://conda.anaconda.org/conda-forge/linux-64/libgettextpo-devel-0.23.1-h5888daf_0.conda @@ -1995,6 +2001,7 @@ packages: arch: x86_64 platform: linux license: GPL-3.0-or-later + license_family: GPL size: 36818 timestamp: 1739038746565 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgettextpo-devel-0.23.1-h5ad3122_0.conda @@ -2006,6 +2013,7 @@ packages: arch: aarch64 platform: linux license: GPL-3.0-or-later + license_family: GPL size: 37031 timestamp: 1739038617604 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgettextpo-devel-0.23.1-h493aca8_0.conda @@ -2019,6 +2027,7 @@ packages: arch: arm64 platform: osx license: GPL-3.0-or-later + license_family: GPL size: 37264 timestamp: 1739039332924 - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_1.conda @@ -3120,48 +3129,48 @@ packages: license_family: BSD size: 184953 timestamp: 1733740984533 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020905-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025021016-release.conda noarch: python - sha256: 509501828e0969b691b62a16423206d911c945ca2e7d248c807b4b4eed826273 - md5: a86793e927a5d4192709928f14faf9f7 + sha256: 1bafad044ace46cf84dd7cd86ce4b0ca38b4b72a5548c9df17c19163399a904d + md5: 635b922efa5004e38021a7de5c5e8769 depends: - - max-core ==25.1.0.dev2025020905 release - - max-python ==25.1.0.dev2025020905 release - - mojo-jupyter ==25.1.0.dev2025020905 release - - mblack ==25.1.0.dev2025020905 release + - max-core ==25.1.0.dev2025021016 release + - max-python ==25.1.0.dev2025021016 release + - mojo-jupyter ==25.1.0.dev2025021016 release + - mblack ==25.1.0.dev2025021016 release license: LicenseRef-Modular-Proprietary - size: 9901 - timestamp: 1739078252551 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025020905-release.conda - sha256: f7a22e8c46d81eff2571849cf5f72494517cb5fdb1ffe02792922c572aeda518 - md5: 445f34e151fb715177592a28dfa05f34 + size: 9900 + timestamp: 1739206564266 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025021016-release.conda + sha256: 6dd0771b13ac0c55d592b5d65c84aa9be997c80efc540a502e0779b3793a97dd + md5: 71abdf5becb20aa23366fb64bae9ee65 depends: - - mblack ==25.1.0.dev2025020905 release + - mblack ==25.1.0.dev2025021016 release license: LicenseRef-Modular-Proprietary - size: 244895917 - timestamp: 1739078228489 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025020905-release.conda - sha256: b97a03ddeef8ec8954642ce883b43e56eccb8465e76a597f3d327f0d3e62e4b8 - md5: 243612053125ed836b15074b3b9eb481 + size: 244881014 + timestamp: 1739206564266 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025021016-release.conda + sha256: 361beb7f7f7c04d68a0778551376dec70321668714e4e57d9348460a5a0b5c10 + md5: c0c84aedeced8340c942f6da7df5006b depends: - - mblack ==25.1.0.dev2025020905 release + - mblack ==25.1.0.dev2025021016 release license: LicenseRef-Modular-Proprietary - size: 247419621 - timestamp: 1739078252551 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025020905-release.conda - sha256: e3eaa1fc48058dad6f8151a6ce80efdeca669637962d8eb323195b0fc15bed8e - md5: bfdd7025b3d5b1bc1bcf6e42dfce96e1 + size: 247414166 + timestamp: 1739206467888 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025021016-release.conda + sha256: 7c82cb027baaa0be91e605a7bd9e22111d8adf7d0dc60cde277cfbedbcaca3e9 + md5: ca6460081272ae9df94c052c3993691a depends: - - mblack ==25.1.0.dev2025020905 release + - mblack ==25.1.0.dev2025021016 release license: LicenseRef-Modular-Proprietary - size: 209781068 - timestamp: 1739079962042 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025020905-release.conda + size: 209778535 + timestamp: 1739208468121 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025021016-release.conda noarch: python - sha256: 9ead1d90304e138f97c420986114b472b265a8e0df4474109c48788969282d03 - md5: 488f00438e8895c704c7a8c7fe7ad228 + sha256: 60d215d6d0e0f79bacc28e01509a02f8a52e5386a5d5744dc8dd6e71dcb6d70e + md5: 3f84a7bfbcc1ab5f57fe9cd40f068196 depends: - - max-core ==25.1.0.dev2025020905 release + - max-core ==25.1.0.dev2025021016 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -3198,14 +3207,14 @@ packages: - uvicorn >=0.34.0 - uvloop >=0.21.0 license: LicenseRef-Modular-Proprietary - size: 120577986 - timestamp: 1739078228489 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025020905-release.conda + size: 120578044 + timestamp: 1739206564266 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025021016-release.conda noarch: python - sha256: 578354d2025f632875a90840e2490ca3376126d4c77758eacbf8d3cf3663f4d9 - md5: 2c75feae1f60b985067d045fb5732632 + sha256: d3e53f9a9b5aa6d6c3feb259cb93787f0420b36c9c29e55873d8d829f09af152 + md5: 14fbbcfea3c014e62b9acc5db1246c4e depends: - - max-core ==25.1.0.dev2025020905 release + - max-core ==25.1.0.dev2025021016 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -3242,14 +3251,14 @@ packages: - uvicorn >=0.34.0 - uvloop >=0.21.0 license: LicenseRef-Modular-Proprietary - size: 123119734 - timestamp: 1739078252551 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025020905-release.conda + size: 123118483 + timestamp: 1739206467888 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025021016-release.conda noarch: python - sha256: bfd9c2fd7d194136f12a0381bbf2d7c8ec844db2c80be1ffe95b13f4c7669303 - md5: 254377163ca61b9b0e29ac8ad5283e66 + sha256: fce74c9f7fcc3b088c0d20a5706086f7c02eccfbecabc0049d60e4426134c18a + md5: d247d163daeff6f161daebd90df6bc14 depends: - - max-core ==25.1.0.dev2025020905 release + - max-core ==25.1.0.dev2025021016 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -3286,12 +3295,12 @@ packages: - uvicorn >=0.34.0 - uvloop >=0.21.0 license: LicenseRef-Modular-Proprietary - size: 108495033 - timestamp: 1739079962043 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020905-release.conda + size: 108527262 + timestamp: 1739208468121 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025021016-release.conda noarch: python - sha256: ead4701a54ac6bda4b61d933dcec0f39f00eaadbd77b4dcfb9b83f2e57f81c09 - md5: 427eb4e2c7f49c515df79be78f0cae03 + sha256: 3e192549dac874ef586cf935a0792648f5592cfa3df00cc73e0e4e61c3567df9 + md5: dfa086b2922fa2452f9176d64ab0e0e6 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -3302,20 +3311,20 @@ packages: - typing_extensions >=v4.12.2 - python license: MIT - size: 130851 - timestamp: 1739078252551 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020905-release.conda + size: 130846 + timestamp: 1739206564266 +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025021016-release.conda noarch: python - sha256: 0b61361aa3078d4484c4e3b078e0ae6dc0c903c5aa62eab51d0f3c55d2fafb21 - md5: 4b7b1b66cb6a7b2e90c7d18b9c02ae5a + sha256: f3a9224cd636d83308401cd30f67980d5df33322a62176f6b96c8ef986e1a5bc + md5: 9f433f96ee6e4db74b4716363f71ea55 depends: - - max-core ==25.1.0.dev2025020905 release + - max-core ==25.1.0.dev2025021016 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22980 - timestamp: 1739078252551 + size: 22970 + timestamp: 1739206564266 - conda: https://conda.anaconda.org/conda-forge/linux-64/mpg123-1.32.9-hc50e24c_0.conda sha256: 39c4700fb3fbe403a77d8cc27352fa72ba744db487559d5d44bf8411bb4ea200 md5: c7f302fd11eeb0987a6a5e1f3aed6a21 diff --git a/examples/magic.lock b/examples/magic.lock index 013ce89a26..7297a50e8b 100644 --- a/examples/magic.lock +++ b/examples/magic.lock @@ -42,11 +42,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020905-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025020905-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025020905-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020905-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020905-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025021016-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025021016-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025021016-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025021016-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025021016-release.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-h2d0b736_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py311h64a7726_0.conda @@ -107,11 +107,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020905-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025020905-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025020905-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020905-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020905-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025021016-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025021016-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025021016-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025021016-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025021016-release.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-ha32ae93_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py311h69ead2a_0.conda @@ -163,11 +163,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.48.0-h3f77e49_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020905-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025020905-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025020905-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020905-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020905-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025021016-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025021016-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025021016-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025021016-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025021016-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py311h7125741_0.conda @@ -1295,48 +1295,48 @@ packages: license_family: APACHE size: 280830 timestamp: 1736986295869 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020905-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025021016-release.conda noarch: python - sha256: 509501828e0969b691b62a16423206d911c945ca2e7d248c807b4b4eed826273 - md5: a86793e927a5d4192709928f14faf9f7 + sha256: 1bafad044ace46cf84dd7cd86ce4b0ca38b4b72a5548c9df17c19163399a904d + md5: 635b922efa5004e38021a7de5c5e8769 depends: - - max-core ==25.1.0.dev2025020905 release - - max-python ==25.1.0.dev2025020905 release - - mojo-jupyter ==25.1.0.dev2025020905 release - - mblack ==25.1.0.dev2025020905 release + - max-core ==25.1.0.dev2025021016 release + - max-python ==25.1.0.dev2025021016 release + - mojo-jupyter ==25.1.0.dev2025021016 release + - mblack ==25.1.0.dev2025021016 release license: LicenseRef-Modular-Proprietary - size: 9901 - timestamp: 1739078252551 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025020905-release.conda - sha256: f7a22e8c46d81eff2571849cf5f72494517cb5fdb1ffe02792922c572aeda518 - md5: 445f34e151fb715177592a28dfa05f34 + size: 9900 + timestamp: 1739206564266 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025021016-release.conda + sha256: 6dd0771b13ac0c55d592b5d65c84aa9be997c80efc540a502e0779b3793a97dd + md5: 71abdf5becb20aa23366fb64bae9ee65 depends: - - mblack ==25.1.0.dev2025020905 release + - mblack ==25.1.0.dev2025021016 release license: LicenseRef-Modular-Proprietary - size: 244895917 - timestamp: 1739078228489 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025020905-release.conda - sha256: b97a03ddeef8ec8954642ce883b43e56eccb8465e76a597f3d327f0d3e62e4b8 - md5: 243612053125ed836b15074b3b9eb481 + size: 244881014 + timestamp: 1739206564266 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025021016-release.conda + sha256: 361beb7f7f7c04d68a0778551376dec70321668714e4e57d9348460a5a0b5c10 + md5: c0c84aedeced8340c942f6da7df5006b depends: - - mblack ==25.1.0.dev2025020905 release + - mblack ==25.1.0.dev2025021016 release license: LicenseRef-Modular-Proprietary - size: 247419621 - timestamp: 1739078252551 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025020905-release.conda - sha256: e3eaa1fc48058dad6f8151a6ce80efdeca669637962d8eb323195b0fc15bed8e - md5: bfdd7025b3d5b1bc1bcf6e42dfce96e1 + size: 247414166 + timestamp: 1739206467888 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025021016-release.conda + sha256: 7c82cb027baaa0be91e605a7bd9e22111d8adf7d0dc60cde277cfbedbcaca3e9 + md5: ca6460081272ae9df94c052c3993691a depends: - - mblack ==25.1.0.dev2025020905 release + - mblack ==25.1.0.dev2025021016 release license: LicenseRef-Modular-Proprietary - size: 209781068 - timestamp: 1739079962042 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025020905-release.conda + size: 209778535 + timestamp: 1739208468121 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025021016-release.conda noarch: python - sha256: 9ead1d90304e138f97c420986114b472b265a8e0df4474109c48788969282d03 - md5: 488f00438e8895c704c7a8c7fe7ad228 + sha256: 60d215d6d0e0f79bacc28e01509a02f8a52e5386a5d5744dc8dd6e71dcb6d70e + md5: 3f84a7bfbcc1ab5f57fe9cd40f068196 depends: - - max-core ==25.1.0.dev2025020905 release + - max-core ==25.1.0.dev2025021016 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1373,14 +1373,14 @@ packages: - uvicorn >=0.34.0 - uvloop >=0.21.0 license: LicenseRef-Modular-Proprietary - size: 120577986 - timestamp: 1739078228489 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025020905-release.conda + size: 120578044 + timestamp: 1739206564266 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025021016-release.conda noarch: python - sha256: 578354d2025f632875a90840e2490ca3376126d4c77758eacbf8d3cf3663f4d9 - md5: 2c75feae1f60b985067d045fb5732632 + sha256: d3e53f9a9b5aa6d6c3feb259cb93787f0420b36c9c29e55873d8d829f09af152 + md5: 14fbbcfea3c014e62b9acc5db1246c4e depends: - - max-core ==25.1.0.dev2025020905 release + - max-core ==25.1.0.dev2025021016 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1417,14 +1417,14 @@ packages: - uvicorn >=0.34.0 - uvloop >=0.21.0 license: LicenseRef-Modular-Proprietary - size: 123119734 - timestamp: 1739078252551 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025020905-release.conda + size: 123118483 + timestamp: 1739206467888 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025021016-release.conda noarch: python - sha256: bfd9c2fd7d194136f12a0381bbf2d7c8ec844db2c80be1ffe95b13f4c7669303 - md5: 254377163ca61b9b0e29ac8ad5283e66 + sha256: fce74c9f7fcc3b088c0d20a5706086f7c02eccfbecabc0049d60e4426134c18a + md5: d247d163daeff6f161daebd90df6bc14 depends: - - max-core ==25.1.0.dev2025020905 release + - max-core ==25.1.0.dev2025021016 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1461,12 +1461,12 @@ packages: - uvicorn >=0.34.0 - uvloop >=0.21.0 license: LicenseRef-Modular-Proprietary - size: 108495033 - timestamp: 1739079962043 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020905-release.conda + size: 108527262 + timestamp: 1739208468121 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025021016-release.conda noarch: python - sha256: ead4701a54ac6bda4b61d933dcec0f39f00eaadbd77b4dcfb9b83f2e57f81c09 - md5: 427eb4e2c7f49c515df79be78f0cae03 + sha256: 3e192549dac874ef586cf935a0792648f5592cfa3df00cc73e0e4e61c3567df9 + md5: dfa086b2922fa2452f9176d64ab0e0e6 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -1477,20 +1477,20 @@ packages: - typing_extensions >=v4.12.2 - python license: MIT - size: 130851 - timestamp: 1739078252551 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020905-release.conda + size: 130846 + timestamp: 1739206564266 +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025021016-release.conda noarch: python - sha256: 0b61361aa3078d4484c4e3b078e0ae6dc0c903c5aa62eab51d0f3c55d2fafb21 - md5: 4b7b1b66cb6a7b2e90c7d18b9c02ae5a + sha256: f3a9224cd636d83308401cd30f67980d5df33322a62176f6b96c8ef986e1a5bc + md5: 9f433f96ee6e4db74b4716363f71ea55 depends: - - max-core ==25.1.0.dev2025020905 release + - max-core ==25.1.0.dev2025021016 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22980 - timestamp: 1739078252551 + size: 22970 + timestamp: 1739206564266 - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda sha256: 1895f47b7d68581a6facde5cb13ab8c2764c2e53a76bd746f8f98910dc4e08fe md5: 29097e7ea634a45cc5386b95cac6568f diff --git a/examples/operators/magic.lock b/examples/operators/magic.lock index fc168e671a..b494df8b70 100644 --- a/examples/operators/magic.lock +++ b/examples/operators/magic.lock @@ -42,11 +42,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020905-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025020905-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025020905-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020905-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020905-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025021016-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025021016-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025021016-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025021016-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025021016-release.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-h2d0b736_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda @@ -107,11 +107,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020905-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025020905-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025020905-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020905-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020905-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025021016-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025021016-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025021016-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025021016-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025021016-release.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-ha32ae93_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda @@ -163,11 +163,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.48.0-h3f77e49_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020905-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025020905-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025020905-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020905-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020905-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025021016-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025021016-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025021016-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025021016-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025021016-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda @@ -1295,48 +1295,48 @@ packages: license_family: APACHE size: 280830 timestamp: 1736986295869 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020905-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025021016-release.conda noarch: python - sha256: 509501828e0969b691b62a16423206d911c945ca2e7d248c807b4b4eed826273 - md5: a86793e927a5d4192709928f14faf9f7 + sha256: 1bafad044ace46cf84dd7cd86ce4b0ca38b4b72a5548c9df17c19163399a904d + md5: 635b922efa5004e38021a7de5c5e8769 depends: - - max-core ==25.1.0.dev2025020905 release - - max-python ==25.1.0.dev2025020905 release - - mojo-jupyter ==25.1.0.dev2025020905 release - - mblack ==25.1.0.dev2025020905 release + - max-core ==25.1.0.dev2025021016 release + - max-python ==25.1.0.dev2025021016 release + - mojo-jupyter ==25.1.0.dev2025021016 release + - mblack ==25.1.0.dev2025021016 release license: LicenseRef-Modular-Proprietary - size: 9901 - timestamp: 1739078252551 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025020905-release.conda - sha256: f7a22e8c46d81eff2571849cf5f72494517cb5fdb1ffe02792922c572aeda518 - md5: 445f34e151fb715177592a28dfa05f34 + size: 9900 + timestamp: 1739206564266 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025021016-release.conda + sha256: 6dd0771b13ac0c55d592b5d65c84aa9be997c80efc540a502e0779b3793a97dd + md5: 71abdf5becb20aa23366fb64bae9ee65 depends: - - mblack ==25.1.0.dev2025020905 release + - mblack ==25.1.0.dev2025021016 release license: LicenseRef-Modular-Proprietary - size: 244895917 - timestamp: 1739078228489 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025020905-release.conda - sha256: b97a03ddeef8ec8954642ce883b43e56eccb8465e76a597f3d327f0d3e62e4b8 - md5: 243612053125ed836b15074b3b9eb481 + size: 244881014 + timestamp: 1739206564266 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025021016-release.conda + sha256: 361beb7f7f7c04d68a0778551376dec70321668714e4e57d9348460a5a0b5c10 + md5: c0c84aedeced8340c942f6da7df5006b depends: - - mblack ==25.1.0.dev2025020905 release + - mblack ==25.1.0.dev2025021016 release license: LicenseRef-Modular-Proprietary - size: 247419621 - timestamp: 1739078252551 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025020905-release.conda - sha256: e3eaa1fc48058dad6f8151a6ce80efdeca669637962d8eb323195b0fc15bed8e - md5: bfdd7025b3d5b1bc1bcf6e42dfce96e1 + size: 247414166 + timestamp: 1739206467888 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025021016-release.conda + sha256: 7c82cb027baaa0be91e605a7bd9e22111d8adf7d0dc60cde277cfbedbcaca3e9 + md5: ca6460081272ae9df94c052c3993691a depends: - - mblack ==25.1.0.dev2025020905 release + - mblack ==25.1.0.dev2025021016 release license: LicenseRef-Modular-Proprietary - size: 209781068 - timestamp: 1739079962042 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025020905-release.conda + size: 209778535 + timestamp: 1739208468121 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025021016-release.conda noarch: python - sha256: 9ead1d90304e138f97c420986114b472b265a8e0df4474109c48788969282d03 - md5: 488f00438e8895c704c7a8c7fe7ad228 + sha256: 60d215d6d0e0f79bacc28e01509a02f8a52e5386a5d5744dc8dd6e71dcb6d70e + md5: 3f84a7bfbcc1ab5f57fe9cd40f068196 depends: - - max-core ==25.1.0.dev2025020905 release + - max-core ==25.1.0.dev2025021016 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1373,14 +1373,14 @@ packages: - uvicorn >=0.34.0 - uvloop >=0.21.0 license: LicenseRef-Modular-Proprietary - size: 120577986 - timestamp: 1739078228489 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025020905-release.conda + size: 120578044 + timestamp: 1739206564266 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025021016-release.conda noarch: python - sha256: 578354d2025f632875a90840e2490ca3376126d4c77758eacbf8d3cf3663f4d9 - md5: 2c75feae1f60b985067d045fb5732632 + sha256: d3e53f9a9b5aa6d6c3feb259cb93787f0420b36c9c29e55873d8d829f09af152 + md5: 14fbbcfea3c014e62b9acc5db1246c4e depends: - - max-core ==25.1.0.dev2025020905 release + - max-core ==25.1.0.dev2025021016 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1417,14 +1417,14 @@ packages: - uvicorn >=0.34.0 - uvloop >=0.21.0 license: LicenseRef-Modular-Proprietary - size: 123119734 - timestamp: 1739078252551 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025020905-release.conda + size: 123118483 + timestamp: 1739206467888 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025021016-release.conda noarch: python - sha256: bfd9c2fd7d194136f12a0381bbf2d7c8ec844db2c80be1ffe95b13f4c7669303 - md5: 254377163ca61b9b0e29ac8ad5283e66 + sha256: fce74c9f7fcc3b088c0d20a5706086f7c02eccfbecabc0049d60e4426134c18a + md5: d247d163daeff6f161daebd90df6bc14 depends: - - max-core ==25.1.0.dev2025020905 release + - max-core ==25.1.0.dev2025021016 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1461,12 +1461,12 @@ packages: - uvicorn >=0.34.0 - uvloop >=0.21.0 license: LicenseRef-Modular-Proprietary - size: 108495033 - timestamp: 1739079962043 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020905-release.conda + size: 108527262 + timestamp: 1739208468121 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025021016-release.conda noarch: python - sha256: ead4701a54ac6bda4b61d933dcec0f39f00eaadbd77b4dcfb9b83f2e57f81c09 - md5: 427eb4e2c7f49c515df79be78f0cae03 + sha256: 3e192549dac874ef586cf935a0792648f5592cfa3df00cc73e0e4e61c3567df9 + md5: dfa086b2922fa2452f9176d64ab0e0e6 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -1477,20 +1477,20 @@ packages: - typing_extensions >=v4.12.2 - python license: MIT - size: 130851 - timestamp: 1739078252551 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020905-release.conda + size: 130846 + timestamp: 1739206564266 +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025021016-release.conda noarch: python - sha256: 0b61361aa3078d4484c4e3b078e0ae6dc0c903c5aa62eab51d0f3c55d2fafb21 - md5: 4b7b1b66cb6a7b2e90c7d18b9c02ae5a + sha256: f3a9224cd636d83308401cd30f67980d5df33322a62176f6b96c8ef986e1a5bc + md5: 9f433f96ee6e4db74b4716363f71ea55 depends: - - max-core ==25.1.0.dev2025020905 release + - max-core ==25.1.0.dev2025021016 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22980 - timestamp: 1739078252551 + size: 22970 + timestamp: 1739206564266 - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda sha256: 1895f47b7d68581a6facde5cb13ab8c2764c2e53a76bd746f8f98910dc4e08fe md5: 29097e7ea634a45cc5386b95cac6568f diff --git a/examples/testing/magic.lock b/examples/testing/magic.lock index fc168e671a..b494df8b70 100644 --- a/examples/testing/magic.lock +++ b/examples/testing/magic.lock @@ -42,11 +42,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020905-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025020905-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025020905-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020905-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020905-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025021016-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025021016-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025021016-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025021016-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025021016-release.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-h2d0b736_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda @@ -107,11 +107,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020905-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025020905-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025020905-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020905-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020905-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025021016-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025021016-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025021016-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025021016-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025021016-release.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-ha32ae93_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda @@ -163,11 +163,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.48.0-h3f77e49_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020905-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025020905-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025020905-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020905-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020905-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025021016-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025021016-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025021016-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025021016-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025021016-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda @@ -1295,48 +1295,48 @@ packages: license_family: APACHE size: 280830 timestamp: 1736986295869 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020905-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025021016-release.conda noarch: python - sha256: 509501828e0969b691b62a16423206d911c945ca2e7d248c807b4b4eed826273 - md5: a86793e927a5d4192709928f14faf9f7 + sha256: 1bafad044ace46cf84dd7cd86ce4b0ca38b4b72a5548c9df17c19163399a904d + md5: 635b922efa5004e38021a7de5c5e8769 depends: - - max-core ==25.1.0.dev2025020905 release - - max-python ==25.1.0.dev2025020905 release - - mojo-jupyter ==25.1.0.dev2025020905 release - - mblack ==25.1.0.dev2025020905 release + - max-core ==25.1.0.dev2025021016 release + - max-python ==25.1.0.dev2025021016 release + - mojo-jupyter ==25.1.0.dev2025021016 release + - mblack ==25.1.0.dev2025021016 release license: LicenseRef-Modular-Proprietary - size: 9901 - timestamp: 1739078252551 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025020905-release.conda - sha256: f7a22e8c46d81eff2571849cf5f72494517cb5fdb1ffe02792922c572aeda518 - md5: 445f34e151fb715177592a28dfa05f34 + size: 9900 + timestamp: 1739206564266 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025021016-release.conda + sha256: 6dd0771b13ac0c55d592b5d65c84aa9be997c80efc540a502e0779b3793a97dd + md5: 71abdf5becb20aa23366fb64bae9ee65 depends: - - mblack ==25.1.0.dev2025020905 release + - mblack ==25.1.0.dev2025021016 release license: LicenseRef-Modular-Proprietary - size: 244895917 - timestamp: 1739078228489 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025020905-release.conda - sha256: b97a03ddeef8ec8954642ce883b43e56eccb8465e76a597f3d327f0d3e62e4b8 - md5: 243612053125ed836b15074b3b9eb481 + size: 244881014 + timestamp: 1739206564266 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025021016-release.conda + sha256: 361beb7f7f7c04d68a0778551376dec70321668714e4e57d9348460a5a0b5c10 + md5: c0c84aedeced8340c942f6da7df5006b depends: - - mblack ==25.1.0.dev2025020905 release + - mblack ==25.1.0.dev2025021016 release license: LicenseRef-Modular-Proprietary - size: 247419621 - timestamp: 1739078252551 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025020905-release.conda - sha256: e3eaa1fc48058dad6f8151a6ce80efdeca669637962d8eb323195b0fc15bed8e - md5: bfdd7025b3d5b1bc1bcf6e42dfce96e1 + size: 247414166 + timestamp: 1739206467888 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025021016-release.conda + sha256: 7c82cb027baaa0be91e605a7bd9e22111d8adf7d0dc60cde277cfbedbcaca3e9 + md5: ca6460081272ae9df94c052c3993691a depends: - - mblack ==25.1.0.dev2025020905 release + - mblack ==25.1.0.dev2025021016 release license: LicenseRef-Modular-Proprietary - size: 209781068 - timestamp: 1739079962042 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025020905-release.conda + size: 209778535 + timestamp: 1739208468121 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025021016-release.conda noarch: python - sha256: 9ead1d90304e138f97c420986114b472b265a8e0df4474109c48788969282d03 - md5: 488f00438e8895c704c7a8c7fe7ad228 + sha256: 60d215d6d0e0f79bacc28e01509a02f8a52e5386a5d5744dc8dd6e71dcb6d70e + md5: 3f84a7bfbcc1ab5f57fe9cd40f068196 depends: - - max-core ==25.1.0.dev2025020905 release + - max-core ==25.1.0.dev2025021016 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1373,14 +1373,14 @@ packages: - uvicorn >=0.34.0 - uvloop >=0.21.0 license: LicenseRef-Modular-Proprietary - size: 120577986 - timestamp: 1739078228489 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025020905-release.conda + size: 120578044 + timestamp: 1739206564266 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025021016-release.conda noarch: python - sha256: 578354d2025f632875a90840e2490ca3376126d4c77758eacbf8d3cf3663f4d9 - md5: 2c75feae1f60b985067d045fb5732632 + sha256: d3e53f9a9b5aa6d6c3feb259cb93787f0420b36c9c29e55873d8d829f09af152 + md5: 14fbbcfea3c014e62b9acc5db1246c4e depends: - - max-core ==25.1.0.dev2025020905 release + - max-core ==25.1.0.dev2025021016 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1417,14 +1417,14 @@ packages: - uvicorn >=0.34.0 - uvloop >=0.21.0 license: LicenseRef-Modular-Proprietary - size: 123119734 - timestamp: 1739078252551 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025020905-release.conda + size: 123118483 + timestamp: 1739206467888 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025021016-release.conda noarch: python - sha256: bfd9c2fd7d194136f12a0381bbf2d7c8ec844db2c80be1ffe95b13f4c7669303 - md5: 254377163ca61b9b0e29ac8ad5283e66 + sha256: fce74c9f7fcc3b088c0d20a5706086f7c02eccfbecabc0049d60e4426134c18a + md5: d247d163daeff6f161daebd90df6bc14 depends: - - max-core ==25.1.0.dev2025020905 release + - max-core ==25.1.0.dev2025021016 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1461,12 +1461,12 @@ packages: - uvicorn >=0.34.0 - uvloop >=0.21.0 license: LicenseRef-Modular-Proprietary - size: 108495033 - timestamp: 1739079962043 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020905-release.conda + size: 108527262 + timestamp: 1739208468121 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025021016-release.conda noarch: python - sha256: ead4701a54ac6bda4b61d933dcec0f39f00eaadbd77b4dcfb9b83f2e57f81c09 - md5: 427eb4e2c7f49c515df79be78f0cae03 + sha256: 3e192549dac874ef586cf935a0792648f5592cfa3df00cc73e0e4e61c3567df9 + md5: dfa086b2922fa2452f9176d64ab0e0e6 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -1477,20 +1477,20 @@ packages: - typing_extensions >=v4.12.2 - python license: MIT - size: 130851 - timestamp: 1739078252551 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020905-release.conda + size: 130846 + timestamp: 1739206564266 +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025021016-release.conda noarch: python - sha256: 0b61361aa3078d4484c4e3b078e0ae6dc0c903c5aa62eab51d0f3c55d2fafb21 - md5: 4b7b1b66cb6a7b2e90c7d18b9c02ae5a + sha256: f3a9224cd636d83308401cd30f67980d5df33322a62176f6b96c8ef986e1a5bc + md5: 9f433f96ee6e4db74b4716363f71ea55 depends: - - max-core ==25.1.0.dev2025020905 release + - max-core ==25.1.0.dev2025021016 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22980 - timestamp: 1739078252551 + size: 22970 + timestamp: 1739206564266 - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda sha256: 1895f47b7d68581a6facde5cb13ab8c2764c2e53a76bd746f8f98910dc4e08fe md5: 29097e7ea634a45cc5386b95cac6568f diff --git a/magic.lock b/magic.lock index b9d16fce15..4be31c3dfe 100644 --- a/magic.lock +++ b/magic.lock @@ -43,11 +43,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/lit-19.1.7-pyhd8ed1ab_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020905-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025020905-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025020905-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020905-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020905-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025021016-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025021016-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025021016-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025021016-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025021016-release.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-h2d0b736_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda @@ -109,11 +109,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/lit-19.1.7-pyhd8ed1ab_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020905-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025020905-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025020905-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020905-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020905-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025021016-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025021016-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025021016-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025021016-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025021016-release.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-ha32ae93_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda @@ -166,11 +166,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/lit-19.1.7-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020905-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025020905-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025020905-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020905-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020905-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025021016-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025021016-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025021016-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025021016-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025021016-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda @@ -1307,48 +1307,48 @@ packages: license_family: APACHE size: 280830 timestamp: 1736986295869 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025020905-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025021016-release.conda noarch: python - sha256: 509501828e0969b691b62a16423206d911c945ca2e7d248c807b4b4eed826273 - md5: a86793e927a5d4192709928f14faf9f7 + sha256: 1bafad044ace46cf84dd7cd86ce4b0ca38b4b72a5548c9df17c19163399a904d + md5: 635b922efa5004e38021a7de5c5e8769 depends: - - max-core ==25.1.0.dev2025020905 release - - max-python ==25.1.0.dev2025020905 release - - mojo-jupyter ==25.1.0.dev2025020905 release - - mblack ==25.1.0.dev2025020905 release + - max-core ==25.1.0.dev2025021016 release + - max-python ==25.1.0.dev2025021016 release + - mojo-jupyter ==25.1.0.dev2025021016 release + - mblack ==25.1.0.dev2025021016 release license: LicenseRef-Modular-Proprietary - size: 9901 - timestamp: 1739078252551 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025020905-release.conda - sha256: f7a22e8c46d81eff2571849cf5f72494517cb5fdb1ffe02792922c572aeda518 - md5: 445f34e151fb715177592a28dfa05f34 + size: 9900 + timestamp: 1739206564266 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025021016-release.conda + sha256: 6dd0771b13ac0c55d592b5d65c84aa9be997c80efc540a502e0779b3793a97dd + md5: 71abdf5becb20aa23366fb64bae9ee65 depends: - - mblack ==25.1.0.dev2025020905 release + - mblack ==25.1.0.dev2025021016 release license: LicenseRef-Modular-Proprietary - size: 244895917 - timestamp: 1739078228489 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025020905-release.conda - sha256: b97a03ddeef8ec8954642ce883b43e56eccb8465e76a597f3d327f0d3e62e4b8 - md5: 243612053125ed836b15074b3b9eb481 + size: 244881014 + timestamp: 1739206564266 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025021016-release.conda + sha256: 361beb7f7f7c04d68a0778551376dec70321668714e4e57d9348460a5a0b5c10 + md5: c0c84aedeced8340c942f6da7df5006b depends: - - mblack ==25.1.0.dev2025020905 release + - mblack ==25.1.0.dev2025021016 release license: LicenseRef-Modular-Proprietary - size: 247419621 - timestamp: 1739078252551 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025020905-release.conda - sha256: e3eaa1fc48058dad6f8151a6ce80efdeca669637962d8eb323195b0fc15bed8e - md5: bfdd7025b3d5b1bc1bcf6e42dfce96e1 + size: 247414166 + timestamp: 1739206467888 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025021016-release.conda + sha256: 7c82cb027baaa0be91e605a7bd9e22111d8adf7d0dc60cde277cfbedbcaca3e9 + md5: ca6460081272ae9df94c052c3993691a depends: - - mblack ==25.1.0.dev2025020905 release + - mblack ==25.1.0.dev2025021016 release license: LicenseRef-Modular-Proprietary - size: 209781068 - timestamp: 1739079962042 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025020905-release.conda + size: 209778535 + timestamp: 1739208468121 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025021016-release.conda noarch: python - sha256: 9ead1d90304e138f97c420986114b472b265a8e0df4474109c48788969282d03 - md5: 488f00438e8895c704c7a8c7fe7ad228 + sha256: 60d215d6d0e0f79bacc28e01509a02f8a52e5386a5d5744dc8dd6e71dcb6d70e + md5: 3f84a7bfbcc1ab5f57fe9cd40f068196 depends: - - max-core ==25.1.0.dev2025020905 release + - max-core ==25.1.0.dev2025021016 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1385,14 +1385,14 @@ packages: - uvicorn >=0.34.0 - uvloop >=0.21.0 license: LicenseRef-Modular-Proprietary - size: 120577986 - timestamp: 1739078228489 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025020905-release.conda + size: 120578044 + timestamp: 1739206564266 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025021016-release.conda noarch: python - sha256: 578354d2025f632875a90840e2490ca3376126d4c77758eacbf8d3cf3663f4d9 - md5: 2c75feae1f60b985067d045fb5732632 + sha256: d3e53f9a9b5aa6d6c3feb259cb93787f0420b36c9c29e55873d8d829f09af152 + md5: 14fbbcfea3c014e62b9acc5db1246c4e depends: - - max-core ==25.1.0.dev2025020905 release + - max-core ==25.1.0.dev2025021016 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1429,14 +1429,14 @@ packages: - uvicorn >=0.34.0 - uvloop >=0.21.0 license: LicenseRef-Modular-Proprietary - size: 123119734 - timestamp: 1739078252551 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025020905-release.conda + size: 123118483 + timestamp: 1739206467888 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025021016-release.conda noarch: python - sha256: bfd9c2fd7d194136f12a0381bbf2d7c8ec844db2c80be1ffe95b13f4c7669303 - md5: 254377163ca61b9b0e29ac8ad5283e66 + sha256: fce74c9f7fcc3b088c0d20a5706086f7c02eccfbecabc0049d60e4426134c18a + md5: d247d163daeff6f161daebd90df6bc14 depends: - - max-core ==25.1.0.dev2025020905 release + - max-core ==25.1.0.dev2025021016 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1473,12 +1473,12 @@ packages: - uvicorn >=0.34.0 - uvloop >=0.21.0 license: LicenseRef-Modular-Proprietary - size: 108495033 - timestamp: 1739079962043 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025020905-release.conda + size: 108527262 + timestamp: 1739208468121 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025021016-release.conda noarch: python - sha256: ead4701a54ac6bda4b61d933dcec0f39f00eaadbd77b4dcfb9b83f2e57f81c09 - md5: 427eb4e2c7f49c515df79be78f0cae03 + sha256: 3e192549dac874ef586cf935a0792648f5592cfa3df00cc73e0e4e61c3567df9 + md5: dfa086b2922fa2452f9176d64ab0e0e6 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -1489,20 +1489,20 @@ packages: - typing_extensions >=v4.12.2 - python license: MIT - size: 130851 - timestamp: 1739078252551 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025020905-release.conda + size: 130846 + timestamp: 1739206564266 +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025021016-release.conda noarch: python - sha256: 0b61361aa3078d4484c4e3b078e0ae6dc0c903c5aa62eab51d0f3c55d2fafb21 - md5: 4b7b1b66cb6a7b2e90c7d18b9c02ae5a + sha256: f3a9224cd636d83308401cd30f67980d5df33322a62176f6b96c8ef986e1a5bc + md5: 9f433f96ee6e4db74b4716363f71ea55 depends: - - max-core ==25.1.0.dev2025020905 release + - max-core ==25.1.0.dev2025021016 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22980 - timestamp: 1739078252551 + size: 22970 + timestamp: 1739206564266 - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda sha256: 1895f47b7d68581a6facde5cb13ab8c2764c2e53a76bd746f8f98910dc4e08fe md5: 29097e7ea634a45cc5386b95cac6568f From 5c522f0505926f93d440de4acbe86923cd240199 Mon Sep 17 00:00:00 2001 From: Jack Clayton Date: Mon, 10 Feb 2025 12:41:48 -0500 Subject: [PATCH 368/509] [stdlib] Remove float8e4m3fn comment Comment is no longer applicable now that the type has been renamed to be more correct. MODULAR_ORIG_COMMIT_REV_ID: 7a1af7fd56d47c4726cc0be42610a1a88983e037 --- stdlib/src/builtin/dtype.mojo | 3 --- stdlib/src/builtin/simd.mojo | 3 --- 2 files changed, 6 deletions(-) diff --git a/stdlib/src/builtin/dtype.mojo b/stdlib/src/builtin/dtype.mojo index 7068003d60..bf9b218788 100644 --- a/stdlib/src/builtin/dtype.mojo +++ b/stdlib/src/builtin/dtype.mojo @@ -100,9 +100,6 @@ struct DType( """Represents a FP8E4M3 floating point format from the [OFP8 standard](https://www.opencompute.org/documents/ocp-8-bit-floating-point-specification-ofp8-revision-1-0-2023-12-01-pdf-1). - This type is named `float8_e4m3fn` (the "fn" stands for "finite") in some - frameworks, as it does not encode -inf or inf. - The 8 bits are encoded as `seeeemmm`: - (s)ign: 1 bit - (e)xponent: 4 bits diff --git a/stdlib/src/builtin/simd.mojo b/stdlib/src/builtin/simd.mojo index e4d6bc7b29..96e4a5732c 100644 --- a/stdlib/src/builtin/simd.mojo +++ b/stdlib/src/builtin/simd.mojo @@ -126,9 +126,6 @@ alias Float8_e4m3fn = Scalar[DType.float8_e4m3fn] """Represents a FP8E4M3 floating point format from the [OFP8 standard](https://www.opencompute.org/documents/ocp-8-bit-floating-point-specification-ofp8-revision-1-0-2023-12-01-pdf-1). -This type is named `float8_e4m3fn` (the "fn" stands for "finite") in some -frameworks, as it does not encode -inf or inf. - The 8 bits are encoded as `seeeemmm`: - (s)ign: 1 bit - (e)xponent: 4 bits From 8c0baf1ec8e5549dbf4fbc2598b1f51a71623912 Mon Sep 17 00:00:00 2001 From: abdul dakkak Date: Mon, 10 Feb 2025 14:28:10 -0800 Subject: [PATCH 369/509] [Stdlib] Add test_sizeof to test the sizeof operation MODULAR_ORIG_COMMIT_REV_ID: af11c9a3e1b1e0e33668701c58ff8a0838322a9c --- stdlib/test/sys/test_sizeof.mojo | 34 ++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 stdlib/test/sys/test_sizeof.mojo diff --git a/stdlib/test/sys/test_sizeof.mojo b/stdlib/test/sys/test_sizeof.mojo new file mode 100644 index 0000000000..66991c55bf --- /dev/null +++ b/stdlib/test/sys/test_sizeof.mojo @@ -0,0 +1,34 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # +# RUN: %mojo %s + +from sys import sizeof +from testing import assert_equal + + +def main(): + assert_equal(sizeof[DType.int8](), 1) + assert_equal(sizeof[DType.int16](), 2) + assert_equal(sizeof[DType.int32](), 4) + assert_equal(sizeof[DType.int64](), 8) + assert_equal(sizeof[DType.float32](), 4) + assert_equal(sizeof[DType.float64](), 8) + assert_equal(sizeof[DType.bool](), 1) + assert_equal(sizeof[DType.index](), 8) + assert_equal(sizeof[DType.float8_e4m3fn](), 1) + assert_equal(sizeof[DType.float8_e5m2fnuz](), 1) + assert_equal(sizeof[DType.float8_e4m3fnuz](), 1) + assert_equal(sizeof[DType.bfloat16](), 2) + assert_equal(sizeof[DType.float16](), 2) + assert_equal(sizeof[DType.tensor_float32](), 4) + assert_equal(sizeof[DType.invalid](), 0) From 3717033bf152534d480a05eed861fa67dfd35079 Mon Sep 17 00:00:00 2001 From: abdul dakkak Date: Tue, 11 Feb 2025 10:12:00 -0800 Subject: [PATCH 370/509] [Stdlib] Initial interval tree implementation MODULAR_ORIG_COMMIT_REV_ID: 762c84221484fb8285fcc7e5bca647724b459429 --- docs/changelog.md | 3 + stdlib/src/collections/interval.mojo | 1060 ++++++++++++++++++++ stdlib/test/collections/test_interval.mojo | 202 ++++ 3 files changed, 1265 insertions(+) create mode 100644 stdlib/src/collections/interval.mojo create mode 100644 stdlib/test/collections/test_interval.mojo diff --git a/docs/changelog.md b/docs/changelog.md index 9f6a1c4e3e..8eb7543890 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -22,6 +22,9 @@ what we publish. ### Standard library changes +- A new `IntervalTree` data structure has been added to the standard library. + This is a tree data structure that allows for efficient range queries. + ### Tooling changes ### ❌ Removed diff --git a/stdlib/src/collections/interval.mojo b/stdlib/src/collections/interval.mojo new file mode 100644 index 0000000000..060dae4ce2 --- /dev/null +++ b/stdlib/src/collections/interval.mojo @@ -0,0 +1,1060 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2024, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +""" +A self-balancing interval tree is a specialized binary search tree designed to +efficiently store and query intervals. + +It maintains intervals sorted by their low endpoints and augments each node with a +`max_high` attribute, representing the maximum high endpoint in its subtree. This +`max_high` value enables efficient overlap searching by pruning the search space. +Self-balancing mechanisms, such as Red-Black or AVL trees, ensure logarithmic time +complexity for operations. + +Key Features: + - Stores intervals (low, high). + - Nodes ordered by `low` endpoints. + - `max_high` attribute at each node for efficient overlap search. + - Self-balancing (e.g., using Red-Black tree logic) for O(log n) operations. + +Operations: + - Insertion: O(log n) - Adds a new interval, maintaining balance and updating + `max_high`. + - Overlap Search: O(log n) - Finds intervals overlapping a query interval using + `max_high` for pruning. + - Deletion: O(log n) - Removes an interval, maintaining balance and updating + `max_high`. + +Space Complexity: O(n), where n is the number of intervals. + +Use Cases: + - Calendar scheduling + - Computational geometry + - Genomics + - Database indexing + - Resource allocation + +In essence, this data structure provides a fast and efficient way to manage and +query interval data, particularly for finding overlaps. +""" + +from memory import UnsafePointer +from .deque import Deque +from builtin.math import _CopyableGreaterThanComparable +from collections import Optional + + +trait IntervalPayload(CollectionElement, Stringable, Comparable): + """The trait denotes a trait composition of the `CollectionElement`, + `Stringable`, and `Comparable` traits. + """ + + pass + + +trait IntervalElement( + CollectionElement, + Writable, + Intable, + Comparable, + _CopyableGreaterThanComparable, +): + """The trait denotes a trait composition of the `CollectionElement`, + `Writable`, `Intable`, and `Comparable` traits. Which is also subtractable. + """ + + fn __sub__(self, rhs: Self) -> Self: + """Subtracts rhs from self, must be implemented in concrete types. + + Args: + rhs: The value to subtract from self. + + Returns: + The result of subtracting rhs from self. + """ + ... + + +struct Interval[T: IntervalElement](CollectionElement): + """A half-open interval [start, end) that represents a range of values. + + The interval includes the start value but excludes the end value. + + Parameters: + T: The type of the interval bounds. + """ + + var start: T + """The inclusive start of the interval.""" + + var end: T + """The exclusive end of the interval.""" + + fn __init__(out self, start: T, end: T): + """Initialize an interval with start and end values. + + Args: + start: The starting value of the interval. + end: The ending value of the interval. Must be greater than or + equal to start. + """ + debug_assert( + start <= end, "invalid interval '(", start, ", ", end, ")'" + ) + self.start = start + self.end = end + + fn __init__(out self, interval: Tuple[T, T], /): + """Initialize an interval with a tuple of start and end values. + + Args: + interval: A tuple containing the start and end values. + """ + self.start = interval[0] + self.end = interval[1] + + fn __copyinit__(out self, existing: Self, /): + """Create a new instance of the interval by copying the values + from an existing one. + + Args: + existing: The interval to copy values from. + """ + self.start = existing.start + self.end = existing.end + + fn __moveinit__(out self, owned existing: Self, /): + """Create a new instance of the interval by moving the values + from an existing one. + + Args: + existing: The interval to move values from. + """ + self.start = existing.start^ + self.end = existing.end^ + + fn overlaps(self, other: Self) -> Bool: + """Returns whether this interval overlaps with another interval. + + Args: + other: The interval to check for overlap with. + + Returns: + True if the intervals overlap, False otherwise. + """ + return other.start < self.end and other.end > self.start + + fn union(self, other: Self) -> Self: + """Returns the union of this interval and another interval. + + Args: + other: The interval to union with. + + Returns: + The union of this interval and the other interval. + """ + debug_assert( + self.overlaps(other), + "intervals do not overlap when computing the union of '", + self, + "' and '", + other, + "'", + ) + var start = self.start if self.start < other.start else other.start + var end = self.end if self.end > other.end else other.end + return Self(start, end) + + fn intersection(self, other: Self) -> Self: + """Returns the intersection of this interval and another interval. + + Args: + other: The interval to intersect with. + + Returns: + The intersection of this interval and the other interval. + """ + debug_assert( + self.overlaps(other), + "intervals do not overlap when computing the intersection of '", + self, + "' and '", + other, + "'", + ) + var start = self.start if self.start > other.start else other.start + var end = self.end if self.end < other.end else other.end + return Self(start, end) + + fn __contains__(self, other: T) -> Bool: + """Returns whether a value is contained within this interval. + + Args: + other: The value to check. + + Returns: + True if the value is within the interval bounds, False otherwise. + """ + return self.start <= other < self.end + + fn __contains__(self, other: Self) -> Bool: + """Returns whether another interval is fully contained within this + interval. + + Args: + other: The interval to check. + + Returns: + True if the other interval is fully contained within this interval, + False otherwise. + """ + return self.start <= other.start and self.end >= other.end + + fn __eq__(self, other: Self) -> Bool: + """Returns whether this interval equals another interval. + + Args: + other: The interval to compare with. + + Returns: + True if both intervals have the same start and end values. + """ + return self.start == other.start and self.end == other.end + + fn __ne__(self, other: Self) -> Bool: + """Returns whether this interval is not equal to another interval. + + Args: + other: The interval to compare with. + + Returns: + True if the intervals are not equal, False if they are equal. + """ + return not (self == other) + + fn __le__(self, other: Self) -> Bool: + """Returns whether this interval is less than or equal to another + interval. + + Args: + other: The interval to compare with. + + Returns: + True if this interval's start is less than or equal to the other interval's start. + """ + return self.start <= other.start + + fn __ge__(self, other: Self) -> Bool: + """Returns whether this interval is greater than or equal to another + interval. + + Args: + other: The interval to compare with. + + Returns: + True if this interval's end is greater than or equal to the other interval's end. + """ + return self.end >= other.end + + fn __lt__(self, other: Self) -> Bool: + """Returns whether this interval is less than another interval. + + Args: + other: The interval to compare with. + + Returns: + True if this interval's start is less than the other interval's start. + """ + return self.start < other.start + + fn __gt__(self, other: Self) -> Bool: + """Returns whether this interval is greater than another interval. + + Args: + other: The interval to compare with. + + Returns: + True if this interval's end is greater than the other interval's end. + """ + return self.end > other.end + + fn __len__(self) -> Int: + """Returns the length of this interval. + + Returns: + The difference between end and start values as an integer. + """ + debug_assert(Bool(self), "interval is empty") + return Int(self.end - self.start) + + fn __bool__(self) -> Bool: + """Returns whether this interval is empty. + + Returns: + True if the interval is not empty (start < end), False otherwise. + """ + return self.start < self.end + + @no_inline + fn write_to[W: Writer](self, mut writer: W): + """Writes this interval to a writer in the format '(start, end)'. + + Parameters: + W: The writer type that implements the Writer trait. + + Args: + writer: The writer to write the interval to. + """ + writer.write("(", self.start, ", ", self.end, ")") + + fn __str__(self) -> String: + """Returns a string representation of this interval. + + Returns: + A string in the format '(start, end)' representing this interval. + """ + return String.write(self) + + fn __repr__(self) -> String: + """Returns a string representation of this interval suitable for + debugging. + + Returns: + A string in the format '(start, end)' representing this interval. + """ + return "Interval" + String.write(self) + "" + + +struct _IntervalNode[T: IntervalElement, U: IntervalPayload](CollectionElement): + """A node containing an interval and associated data. + + Parameters: + T: The type of the interval bounds, must support subtraction, integer + conversion, string conversion, comparison and collection operations. + U: The type of the associated data, must support string conversion + and collection operations. + """ + + var interval: Interval[T] + """The interval contained in this node.""" + + var data: U + """The data associated with this interval.""" + + var max_end: T + """The maximum end value of this node.""" + + var left: UnsafePointer[Self] + """The left child of this node.""" + + var right: UnsafePointer[Self] + """The right child of this node.""" + + var parent: UnsafePointer[Self] + """The parent of this node.""" + + var _is_red: Bool + """Red-black node color.""" + + fn __init__( + out self, + start: T, + end: T, + data: U, + *, + left: Optional[UnsafePointer[Self]] = None, + right: Optional[UnsafePointer[Self]] = None, + parent: Optional[UnsafePointer[Self]] = None, + is_red: Bool = True, + ): + """Creates a new interval node. + + Args: + start: The start value of the interval. + end: The end value of the interval. + data: The data to associate with this interval. + left: The left child of this node. + right: The right child of this node. + parent: The parent of this node. + is_red: Whether this node is red in the red-black tree. + """ + self = Self( + Interval(start, end), + data, + left=left, + right=right, + parent=parent, + is_red=is_red, + ) + + fn __init__( + out self, + interval: Interval[T], + data: U, + *, + left: Optional[UnsafePointer[Self]] = None, + right: Optional[UnsafePointer[Self]] = None, + parent: Optional[UnsafePointer[Self]] = None, + is_red: Bool = True, + ): + """Creates a new interval node. + + Args: + interval: The interval to associate with this node. + data: The data to associate with this interval. + left: The left child of this node. + right: The right child of this node. + parent: The parent of this node. + is_red: Whether this node is red in the red-black tree. + """ + self.interval = interval + self.max_end = interval.end + self.data = data + self.left = left.value() if left else __type_of(self.left)() + self.right = right.value() if right else __type_of(self.right)() + self.parent = parent.value() if parent else __type_of(self.parent)() + self._is_red = is_red + + fn __copyinit__(out self, existing: Self, /): + """Create a new instance of the interval node by copying the values + from an existing one. + + Args: + existing: The interval node to copy values from. + """ + self.interval = existing.interval + self.data = existing.data + self.max_end = existing.max_end + self.left = existing.left + self.right = existing.right + self.parent = existing.parent + self._is_red = existing._is_red + + fn __moveinit__(out self, owned existing: Self, /): + """Create a new instance of the interval node by moving the values + from an existing one. + + Args: + existing: The interval node to move values from. + """ + self.interval = existing.interval^ + self.data = existing.data^ + self.max_end = existing.max_end^ + self.left = existing.left + self.right = existing.right + self.parent = existing.parent + self._is_red = existing._is_red + + @no_inline + fn write_to[W: Writer](self, mut writer: W): + """Writes this interval node to a writer in the format + '(start, end): data'. + + Parameters: + W: The writer type that implements the Writer trait. + + Args: + writer: The writer to write the interval node to. + """ + writer.write(self.interval, "=", String(self.data)) + # writer.write(str(self.data)) + + fn __str__(self) -> String: + """Returns a string representation of this interval node. + + Returns: + A string in the format '(start, end): data' representing this + interval node. + """ + return String.write(self) + + fn __repr__(self) -> String: + """Returns a string representation of this interval node suitable for + debugging. + + Returns: + A string in the format '(start, end): data' representing this + interval node. + """ + return "IntervalNode(" + String.write(self) + ")" + + fn depth(self) -> Int: + """Returns the depth of this interval node. + + Returns: + The depth of this interval node. + """ + var left_depth = self.left[].depth() if self.left else 0 + var right_depth = self.right[].depth() if self.right else 0 + return 1 + max(left_depth, right_depth) + + fn __bool__(self) -> Bool: + """Returns whether this interval node is empty. + + Returns: + True if the interval node is empty, False otherwise. + """ + return Bool(self.interval) + + fn __eq__(self, other: Self) -> Bool: + """Returns whether this interval node is equal to another interval node. + + Args: + other: The interval node to compare with. + + Returns: + True if the interval nodes are equal, False otherwise. + """ + return self.interval == other.interval and self.data == other.data + + fn __lt__(self, other: Self) -> Bool: + return self.interval < other.interval + + fn __gt__(self, other: Self) -> Bool: + return self.interval > other.interval + + +struct IntervalTree[T: IntervalElement, U: IntervalPayload]: + """An interval tree data structure for efficient range queries. + + Parameters: + T: The type of the interval bounds, must support subtraction, integer + conversion, string conversion, comparison and collection operations. + U: The type of the associated data, must support string conversion + and collection operations. + """ + + var _root: UnsafePointer[_IntervalNode[T, U]] + """The root node of the interval tree.""" + + var _len: Int + """The number of elements in the interval tree.""" + + fn __init__(out self): + """Initializes an empty IntervalTree.""" + self._root = __type_of(self._root)() + self._len = 0 + + fn _left_rotate( + mut self, mut rotation_node: UnsafePointer[_IntervalNode[T, U]] + ): + """Performs a left rotation around node x in the red-black tree. + + This method performs a left rotation around the given node x, which is a + standard operation in red-black trees used to maintain balance. The rotation + preserves the binary search tree property while changing the structure. + + Before: After: + x y + / \\ / \\ + a y => x c + / \\ / \\ + b c a b + + Args: + rotation_node: A pointer to the node around which to perform the left rotation. + + Note: + The rotation assumes that x has a right child. The method will assert if + either the root or x's right child is not set. + """ + debug_assert(Bool(self._root), "node is not set") + var rotation_right_child = rotation_node[].right + debug_assert(Bool(rotation_right_child), "right child is not set") + rotation_node[].right = rotation_right_child[].left + + if rotation_right_child[].left: + rotation_right_child[].left[].parent = rotation_node + + rotation_right_child[].parent = rotation_node[].parent + + if not rotation_node[].parent: + self._root = rotation_right_child + elif rotation_node == rotation_node[].parent[].left: + rotation_node[].parent[].left = rotation_right_child + else: + rotation_node[].parent[].right = rotation_right_child + + rotation_right_child[].left = rotation_node + rotation_node[].parent = rotation_right_child + + rotation_node[].max_end = rotation_node[].interval.end + if rotation_node[].left: + rotation_node[].max_end = max( + rotation_node[].max_end, + rotation_node[].left[].max_end, + ) + if rotation_node[].right: + rotation_node[].max_end = max( + rotation_node[].max_end, + rotation_node[].right[].max_end, + ) + + rotation_right_child[].max_end = rotation_right_child[].interval.end + if rotation_right_child[].left: + rotation_right_child[].max_end = max( + rotation_right_child[].max_end, + rotation_right_child[].left[].max_end, + ) + if rotation_right_child[].right: + rotation_right_child[].max_end = max( + rotation_right_child[].max_end, + rotation_right_child[].right[].max_end, + ) + + fn _right_rotate( + mut self, mut rotation_node: UnsafePointer[_IntervalNode[T, U]] + ): + """Performs a right rotation around node y in the red-black tree. + + This method performs a right rotation around the given node y, which is a + standard operation in red-black trees used to maintain balance. The rotation + preserves the binary search tree property while changing the structure. + + Before: After: + y x + / \\ / \\ + x c => a y + / \\ / \\ + a b b c + + Args: + rotation_node: A pointer to the node around which to perform the right rotation. + + Note: + The rotation assumes that y has a left child. The method will assert if + either the root or y's left child is not set. + """ + debug_assert(Bool(self._root), "root node is not set") + var rotation_left_child = rotation_node[].left + debug_assert(Bool(rotation_left_child), "left child node is not set") + rotation_node[].left = rotation_left_child[].right + + if rotation_left_child[].right: + rotation_left_child[].right[].parent = rotation_node + + rotation_left_child[].parent = rotation_node[].parent + + if not rotation_node[].parent: + self._root = rotation_left_child + elif rotation_node == rotation_node[].parent[].right: + rotation_node[].parent[].right = rotation_left_child + else: + rotation_node[].parent[].left = rotation_left_child + + rotation_left_child[].right = rotation_node + rotation_node[].parent = rotation_left_child + + rotation_node[].max_end = rotation_node[].interval.end + if rotation_node[].left: + rotation_node[].max_end = max( + rotation_node[].max_end, rotation_node[].left[].max_end + ) + if rotation_node[].right: + rotation_node[].max_end = max( + rotation_node[].max_end, rotation_node[].right[].max_end + ) + + rotation_left_child[].max_end = rotation_left_child[].interval.end + if rotation_left_child[].left: + rotation_left_child[].max_end = max( + rotation_left_child[].max_end, + rotation_left_child[].left[].max_end, + ) + + fn insert(mut self, interval: Tuple[T, T], data: U): + """Insert a new interval into the tree using a tuple representation. + + Args: + interval: A tuple containing the start and end values of the interval. + data: The data value to associate with this interval. + """ + self.insert(Interval(interval[0], interval[1]), data) + + fn insert(mut self, interval: Interval[T], data: U): + """Insert a new interval into the tree. + + This method inserts a new interval and its associated data into the interval tree. + It maintains the binary search tree property based on interval start times and + updates the tree structure to preserve red-black tree properties. + + Args: + interval: The interval to insert into the tree. + data: The data value to associate with this interval. + """ + # Allocate memory for a new node and initialize it with the interval + # and data + var new_node = UnsafePointer[_IntervalNode[T, U]].alloc(1) + new_node.init_pointee_move(_IntervalNode(interval, data)) + self._len += 1 + + # If the tree is empty, set the root to the new node and color it black. + if not self._root: + self._root = new_node + self._root[]._is_red = False + return + + # Find the insertion point by traversing down the tree + # parent_node tracks the parent of the current node + var parent_node = __type_of(self._root)() + # current_node traverses down the tree until we find an empty spot + var current_node = self._root + while current_node: + parent_node = current_node + if new_node[] < current_node[]: + current_node = current_node[].left + else: + current_node = current_node[].right + parent_node[].max_end = max( + parent_node[].max_end, new_node[].interval.end + ) + + new_node[].parent = parent_node + if not parent_node: + self._root = new_node + elif new_node[] < parent_node[]: + parent_node[].left = new_node + else: + parent_node[].right = new_node + + self._insert_fixup(new_node) + + fn _insert_fixup( + mut self, mut current_node: UnsafePointer[_IntervalNode[T, U]] + ): + """Fixes up the red-black tree properties after an insertion. + + This method restores the red-black tree properties that may have been violated + during insertion of a new node. It performs rotations and color changes to + maintain the balance and color properties of the red-black tree. + + Args: + current_node: A pointer to the newly inserted node that may violate red-black + properties. + """ + + # While the parent of the current node is red, we need to fix violations + while current_node != self._root and current_node[].parent[]._is_red: + if current_node[].parent == current_node[].parent[].parent[].left: + # Get uncle node (parent's sibling) + var uncle_node = current_node[].parent[].parent[].right + if uncle_node and uncle_node[]._is_red: + # Case 1: Uncle is red - recolor parent, uncle and grandparent + current_node[].parent[]._is_red = False + uncle_node[]._is_red = False + current_node[].parent[].parent[]._is_red = True + current_node = current_node[].parent[].parent + else: + # Case 2: Uncle is black and node is a right child + if current_node == current_node[].parent[].right: + current_node = current_node[].parent + self._left_rotate(current_node) + # Case 3: Uncle is black and node is a left child + current_node[].parent[]._is_red = False + current_node[].parent[].parent[]._is_red = True + self._right_rotate(current_node[].parent[].parent) + else: + # Mirror case - parent is right child of grandparent + var uncle_node = current_node[].parent[].parent[].left + if uncle_node and uncle_node[]._is_red: + # Case 1: Uncle is red - recolor + current_node[].parent[]._is_red = False + uncle_node[]._is_red = False + current_node[].parent[].parent[]._is_red = True + current_node = current_node[].parent[].parent + else: + # Case 2: Uncle is black and node is a left child + if current_node == current_node[].parent[].left: + current_node = current_node[].parent + self._right_rotate(current_node) + + # Ensure root is black to maintain red-black tree properties + self._root[]._is_red = False + + fn __str__(self) -> String: + """Returns a string representation of the interval tree. + + Returns: + A string representation of the interval tree. + """ + return String.write(self) + + fn __repr__(self) -> String: + """Returns a string representation of the interval tree suitable for + debugging. + + Returns: + A string representation of the interval tree. + """ + return String.write(self) + + fn write_to[w: Writer](self, mut writer: w): + """Writes the interval tree to a writer. + + Parameters: + w: The writer type that implements the Writer trait. + + Args: + writer: The writer to write the interval tree to. + """ + self._draw(writer) + + @no_inline + fn _draw[w: Writer](self, mut writer: w): + """Draws the interval tree in a simple ASCII tree format. + + Creates a text representation of the tree using ASCII characters, with each node + indented according to its depth. Uses '├─' and '└─' characters to show the tree + structure. + + Parameters: + w: The writer type that implements the Writer trait. + + Args: + writer: The writer to output the tree visualization to. + """ + self._draw_helper(writer, self._root, "", True) + + @no_inline + fn _draw_helper[ + w: Writer + ]( + self, + mut writer: w, + node: UnsafePointer[_IntervalNode[T, U]], + indent: String, + is_last: Bool, + ): + """Helper function to recursively draw the interval tree. + + Recursively traverses the tree and draws each node with proper indentation + and branch characters to show the tree structure. + + Parameters: + w: The writer type that implements the Writer trait. + + Args: + writer: The writer to output the tree visualization to. + node: The current node being drawn. + indent: The current indentation string. + is_last: Whether this node is the last child of its parent. + """ + # Handle empty tree case + if not node: + return + + writer.write(indent) + var next_indent = indent + if is_last: + writer.write("├─") + next_indent += " " + else: + writer.write("└─") + next_indent += "| " + writer.write(node[], "\n") + # Recursively draw left and right subtrees + self._draw_helper(writer, node[].left, next_indent, False) + self._draw_helper(writer, node[].right, next_indent, True) + + @no_inline + fn _draw3[w: Writer](self, mut writer: w) raises: + """Draws the interval tree in a simple ASCII tree format. + + Creates a text representation of the tree using ASCII characters, with each node + indented according to its depth. Uses '├─' and '└─' characters to show the tree + structure. + + Parameters: + w: The writer type that implements the Writer trait. + + Args: + writer: The writer to output the tree visualization to. + """ + # Handle empty tree case + if not self._root: + return writer.write("Empty") + + var work_list = Deque[ + Tuple[UnsafePointer[_IntervalNode[T, U]], String, Bool] + ]() + work_list.append((self._root, String(""), True)) + + while work_list: + node, indent, is_last = work_list.pop() + if not node: + continue + writer.write(indent) + if is_last: + writer.write("├─ ") + indent += " " + else: + writer.write("└─ ") + indent += "| " + writer.write(node[], "\n") + work_list.append((node[].left, indent, False)) + work_list.append((node[].right, indent, True)) + + @no_inline + fn _draw2[w: Writer](self, mut writer: w) raises: + """Draws the interval tree in a visual ASCII art format. + + Creates a grid representation of the tree with nodes and connecting branches. + Each level of the tree is separated by 3 rows vertically. + Nodes are connected by '/' and '\' characters for left and right children. + + Parameters: + w: The writer type that implements the Writer trait. + + Args: + writer: The writer to output the tree visualization to. + """ + # Handle empty tree case + if not self._root: + return writer.write("Empty") + + # Calculate dimensions needed for the grid + var height = self._root[].depth() + var width = 2**height - 1 + + # Create 2D grid of spaces to hold the tree visualization + # Each row is a list of single character strings + var grid = List[List[String]]() + for _ in range(3 * height): + var row = List[String]() + for _ in range(4 * width): + row.append(" ") # Initialize with spaces + grid.append(row) + + var work_list = Deque[ + Tuple[UnsafePointer[_IntervalNode[T, U]], Int, Int, Int] + ]() + work_list.append((self._root, 0, 0, width)) + + while work_list: + # Recursively fills the grid with node values and connecting branches. + node, level, left, right = work_list.pop() + if not node: + continue + + # Calculate position for current node + var mid = (left + right) // 2 # Center point between boundaries + var pos_x = mid * 4 # Scale x position for readability + var pos_y = level * 3 # Scale y position for branch drawing + + # Draw the current node's value + var node_str = String(node[]) + var start_pos = max( + 0, pos_x - len(node_str) // 2 + ) # Center the node text + var i = 0 + for char in node_str.chars(): + grid[pos_y][start_pos + i] = String(char) + i += 1 + + # Add drawing left branch to the worklist. + if node[].left: + for y in range(1, 3): + grid[pos_y + y][pos_x - 2 * y + 1] = "/" # Draw left branch + work_list.append((node[].left, level + 1, left, mid)) + + # Add drawing right branch to the worklist. + if node[].right: + for y in range(1, 3): + grid[pos_y + y][pos_x + 2 * y] = "\\" # Draw right branch + work_list.append((node[].right, level + 1, mid, right)) + + # Output the completed grid row by row + for row in grid: + var row_str = String("".join(row[]).rstrip()) + if row_str: + writer.write(row_str, "\n") + + fn depth(self) -> Int: + """Returns the depth of the interval tree. + + Returns: + The depth of the interval tree. + """ + if not self._root: + return 0 + + return self._root[].depth() + + fn transplant( + mut self, + mut u: UnsafePointer[_IntervalNode[T, U]], + mut v: UnsafePointer[_IntervalNode[T, U]], + ): + """Transplants the subtree rooted at node u with the subtree rooted at node v. + + Args: + u: The node to transplant. + v: The node to transplant to. + """ + if not u[].parent: + self._root = v + elif u == u[].parent[].left: + u[].parent[].left = v + else: + u[].parent[].right = v + + if v: + v[].parent = u[].parent + + fn search(self, interval: Tuple[T, T]) raises -> List[U]: + """Searches for intervals overlapping with the given tuple. + + Args: + interval: The interval tuple (start, end). + + Returns: + A list of data associated with overlapping intervals. + """ + return self.search(Interval(interval[0], interval[1])) + + fn search(self, interval: Interval[T]) raises -> List[U]: + """Searches for intervals overlapping with the given interval. + + Args: + interval: The interval to search. + + Returns: + A list of data associated with overlapping intervals. + """ + return self._search_helper(self._root, interval) + + fn _search_helper( + self, node: UnsafePointer[_IntervalNode[T, U]], interval: Interval[T] + ) raises -> List[U]: + var result = List[U]() + var work_list = Deque[UnsafePointer[_IntervalNode[T, U]]]() + work_list.append(node) + + while work_list: + var current_node = work_list.pop() + if not current_node: + continue + if current_node[].interval.overlaps(interval): + result.append(current_node[].data) + if ( + current_node[].left + and current_node[].left[].interval.start <= interval.end + ): + work_list.append(current_node[].left) + if ( + current_node[].right + and current_node[].right[].max_end >= interval.start + ): + work_list.append(current_node[].right) + + return result diff --git a/stdlib/test/collections/test_interval.mojo b/stdlib/test/collections/test_interval.mojo new file mode 100644 index 0000000000..e5c710062d --- /dev/null +++ b/stdlib/test/collections/test_interval.mojo @@ -0,0 +1,202 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2024, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # +# RUN: %mojo %s + +from testing import assert_equal, assert_false, assert_true, assert_not_equal +from collections.interval import Interval, IntervalTree + + +def test_interval(): + # Create an interval from 1 to 10 (exclusive) + var interval = Interval(1, 10) + + # Test basic properties + assert_equal(interval.start, 1) + assert_equal(interval.end, 10) + assert_equal(len(interval), 9) + assert_equal(len(Interval(-10, -1)), 9) + + # Test string representations + assert_equal(String(interval), "(1, 10)") + assert_equal(repr(interval), "Interval(1, 10)") + + # Test equality comparisons + assert_equal(interval, Interval(1, 10)) + assert_not_equal(interval, Interval(1, 11)) + + # Test less than comparisons + assert_true( + interval < Interval(2, 11), msg=String(interval, " < Interval(2, 11)") + ) + assert_false( + interval < Interval(1, 11), msg=String(interval, " < Interval(1, 11)") + ) + + # Test greater than comparisons + assert_true( + interval > Interval(0, 9), msg=String(interval, " > Interval(0, 9)") + ) + assert_false( + interval > Interval(1, 11), msg=String(interval, " > Interval(1, 11)") + ) + + # Test less than or equal comparisons + assert_true( + interval <= Interval(1, 10), msg=String(interval, " <= Interval(1, 10)") + ) + assert_true( + interval <= Interval(1, 11), msg=String(interval, " <= Interval(1, 11)") + ) + assert_false( + interval <= Interval(0, 9), msg=String(interval, " <= Interval(0, 9)") + ) + + # Test greater than or equal comparisons + assert_true( + interval >= Interval(1, 10), msg=String(interval, " >= Interval(1, 10)") + ) + assert_true( + interval >= Interval(2, 9), msg=String(interval, " >= Interval(2, 9)") + ) + assert_false( + interval >= Interval(1, 11), msg=String(interval, " >= Interval(1, 11)") + ) + + # Test interval containment + assert_true( + interval in Interval(1, 11), msg=String(interval, " in Interval(1, 11)") + ) + assert_false( + interval in Interval(1, 9), msg=String(interval, " in Interval(1, 9)") + ) + assert_true( + interval in Interval(1, 10), msg=String(interval, " in Interval(1, 10)") + ) + assert_true( + interval in Interval(1, 11), msg=String(interval, " in Interval(1, 11)") + ) + assert_false( + interval in Interval(1, 9), msg=String(interval, " in Interval(1, 9)") + ) + + # Test point containment + assert_true(1 in interval, msg="1 in interval") + assert_false(0 in interval) + + # Test interval overlap + assert_true(interval.overlaps(Interval(1, 10))) + assert_true(interval.overlaps(Interval(1, 9))) + assert_false(interval.overlaps(Interval(-10, -1))) + + # Test interval union + assert_equal(interval.union(Interval(1, 10)), Interval(1, 10)) + assert_equal(interval.union(Interval(1, 9)), Interval(1, 10)) + + # Test interval intersection + assert_equal(interval.intersection(Interval(1, 10)), Interval(1, 10)) + assert_equal(interval.intersection(Interval(1, 9)), Interval(1, 9)) + assert_equal(interval.intersection(Interval(3, 5)), Interval(3, 5)) + + # Test empty interval checks + assert_true(Bool(interval)) + assert_false(Bool(Interval(0, 0))) + + +struct MyType: + var value: Float64 + + fn __init__(out self): + self.value = 0.0 + + fn __init__(out self, value: Float64, /): + self.value = value + + fn __copyinit__(out self, existing: Self, /): + self.value = existing.value + + fn __moveinit__(out self, owned existing: Self, /): + self.value = existing.value + + fn __gt__(self, other: Self) -> Bool: + return self.value > other.value + + fn __lt__(self, other: Self) -> Bool: + return self.value < other.value + + fn __ge__(self, other: Self) -> Bool: + return self.value >= other.value + + fn __le__(self, other: Self) -> Bool: + return self.value <= other.value + + fn __eq__(self, other: Self) -> Bool: + return self.value == other.value + + fn __ne__(self, other: Self) -> Bool: + return self.value != other.value + + fn __sub__(self, other: Self) -> Self: + return Self(self.value - other.value) + + fn __int__(self) -> Int: + return Int(self.value) + + fn __float__(self) -> Float64: + return self.value + + fn write_to[W: Writer](self, mut writer: W): + writer.write(self.value) + + fn __str__(self) -> String: + return String.write(self) + + +def test_interval_floating(): + # Create an interval with floating point values using MyType wrapper. + var interval = Interval(MyType(2.4), MyType(3.5)) + + # Verify the interval start and end values are correctly set. + assert_equal(rebind[Float64](interval.start.value), 2.4) + assert_equal(rebind[Float64](interval.end.value), 3.5) + + # Test union operation with overlapping interval. + var union = interval.union(Interval(MyType(3.0), MyType(4.5))) + + # Verify union produces expected interval bounds. + assert_equal(union, Interval(MyType(2.4), MyType(4.5))) + + # Verify length of union interval is correct. + assert_equal(len(union), 2) + + +def test_interval_tree(): + var tree = IntervalTree[Int, MyType]() + tree.insert((15, 20), MyType(33.0)) + tree.insert((10, 30), MyType(34.0)) + tree.insert((17, 19), MyType(35.0)) + tree.insert((5, 20), MyType(36.0)) + tree.insert((12, 15), MyType(37.0)) + tree.insert((30, 40), MyType(38.0)) + print(tree) + + var elems = tree.search((10, 15)) + assert_equal(len(elems), 3) + assert_equal(Float64(elems[0]), 34.0) + assert_equal(Float64(elems[1]), 37.0) + assert_equal(Float64(elems[2]), 36.0) + + +def main(): + test_interval() + test_interval_floating() + test_interval_tree() From c92c135deead5d20c65d70dcfd45aff1e677239b Mon Sep 17 00:00:00 2001 From: modularbot Date: Tue, 11 Feb 2025 20:55:01 +0000 Subject: [PATCH 371/509] Update lockfiles to point to latest nightly version: 25.1.0.dev2025021118 --- examples/life/magic.lock | 205 +++++++++++++++++----------------- examples/magic.lock | 205 +++++++++++++++++----------------- examples/operators/magic.lock | 205 +++++++++++++++++----------------- examples/testing/magic.lock | 205 +++++++++++++++++----------------- magic.lock | 205 +++++++++++++++++----------------- 5 files changed, 515 insertions(+), 510 deletions(-) diff --git a/examples/life/magic.lock b/examples/life/magic.lock index 9b89e8a04e..02edf09a75 100644 --- a/examples/life/magic.lock +++ b/examples/life/magic.lock @@ -53,7 +53,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.23-h4ddbbb0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.2-h7f98852_5.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libflac-1.4.3-h59595ed_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h77fa898_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_1.conda @@ -91,16 +91,16 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.10.0-h5888daf_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025021016-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025021016-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025021016-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025021016-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025021016-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025021118-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025021118-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025021118-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025021118-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025021118-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/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.0-h7b32b05_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.1-h7b32b05_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/opusfile-0.12-h3358134_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda @@ -191,7 +191,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libdeflate-1.23-h5e3c512_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20250104-pl5321h976ea20_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.6.4-h5ad3122_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.4.2-h3557bc0_5.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.4.6-he21f813_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libflac-1.4.3-h2f0025b_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-14.2.0-he277a41_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-14.2.0-he9431aa_1.conda @@ -229,16 +229,16 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.10.0-h5ad3122_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025021016-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025021016-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025021016-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025021016-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025021016-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025021118-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025021118-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025021118-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025021118-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025021118-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/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-ha32ae93_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.0-hd08dc88_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.1-hd08dc88_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/opusfile-0.12-hf55b2d5_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda @@ -348,16 +348,16 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.5.0-h2471fea_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025021016-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025021016-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025021016-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025021016-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025021016-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025021118-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025021118-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025021118-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025021118-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025021118-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/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.0-h81ee809_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.1-h81ee809_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/opusfile-0.12-h5643135_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda @@ -1806,28 +1806,29 @@ packages: license_family: MIT size: 64693 timestamp: 1730967175868 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.2-h7f98852_5.tar.bz2 - sha256: ab6e9856c21709b7b517e940ae7028ae0737546122f83c2aa5d692860c3b149e - md5: d645c6d2ac96843a2bfaccd2d62b3ac3 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_0.conda + sha256: 67a6c95e33ebc763c1adc3455b9a9ecde901850eb2fceb8e646cc05ef3a663da + md5: e3eb7806380bc8bcecba6d749ad5f026 depends: - - libgcc-ng >=9.4.0 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 arch: x86_64 platform: linux license: MIT license_family: MIT - size: 58292 - timestamp: 1636488182923 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.4.2-h3557bc0_5.tar.bz2 - sha256: 7e9258a102480757fe3faeb225a3ca04dffd10fecd2a958c65cdb4cdf75f2c3c - md5: dddd85f4d52121fab0a8b099c5e06501 + size: 53415 + timestamp: 1739260413716 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.4.6-he21f813_0.conda + sha256: 41568066beefe7b319ff27d85952242e5b77fb753d705b8716041959e17c35c2 + md5: 966084fccf3ad62a3160666cda869f28 depends: - - libgcc-ng >=9.4.0 + - libgcc >=13 arch: aarch64 platform: linux license: MIT license_family: MIT - size: 59450 - timestamp: 1636488255090 + size: 51513 + timestamp: 1739260449772 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 sha256: 41b3d13efb775e340e4dba549ab5c029611ea6918703096b2eaa9c015c0750ca md5: 086914b672be056eb70fd4285b6783b6 @@ -3129,48 +3130,48 @@ packages: license_family: BSD size: 184953 timestamp: 1733740984533 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025021016-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025021118-release.conda noarch: python - sha256: 1bafad044ace46cf84dd7cd86ce4b0ca38b4b72a5548c9df17c19163399a904d - md5: 635b922efa5004e38021a7de5c5e8769 + sha256: 85e3bdc3306510ae6f8deb58a51d33dde3e85082036fa91edf91186e9b3dd36e + md5: a5ffada3cdcd1cf7785e2bacfc5390d4 depends: - - max-core ==25.1.0.dev2025021016 release - - max-python ==25.1.0.dev2025021016 release - - mojo-jupyter ==25.1.0.dev2025021016 release - - mblack ==25.1.0.dev2025021016 release + - max-core ==25.1.0.dev2025021118 release + - max-python ==25.1.0.dev2025021118 release + - mojo-jupyter ==25.1.0.dev2025021118 release + - mblack ==25.1.0.dev2025021118 release license: LicenseRef-Modular-Proprietary - size: 9900 - timestamp: 1739206564266 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025021016-release.conda - sha256: 6dd0771b13ac0c55d592b5d65c84aa9be997c80efc540a502e0779b3793a97dd - md5: 71abdf5becb20aa23366fb64bae9ee65 + size: 9912 + timestamp: 1739298255901 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025021118-release.conda + sha256: ea82c7c5aa7a4837e10f5fa1b40e1da9e616c77f2315c7bdbafd60e6bee89bde + md5: 2b83645154de80f9d64535c734a0be02 depends: - - mblack ==25.1.0.dev2025021016 release + - mblack ==25.1.0.dev2025021118 release license: LicenseRef-Modular-Proprietary - size: 244881014 - timestamp: 1739206564266 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025021016-release.conda - sha256: 361beb7f7f7c04d68a0778551376dec70321668714e4e57d9348460a5a0b5c10 - md5: c0c84aedeced8340c942f6da7df5006b + size: 242194776 + timestamp: 1739298255901 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025021118-release.conda + sha256: 6dbab8729c984a15a4a15130ad4a1c051423bc74148ea4db331120cbfc1f9af7 + md5: aeac269256d2ec50b1e52043732b102f depends: - - mblack ==25.1.0.dev2025021016 release + - mblack ==25.1.0.dev2025021118 release license: LicenseRef-Modular-Proprietary - size: 247414166 - timestamp: 1739206467888 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025021016-release.conda - sha256: 7c82cb027baaa0be91e605a7bd9e22111d8adf7d0dc60cde277cfbedbcaca3e9 - md5: ca6460081272ae9df94c052c3993691a + size: 244606528 + timestamp: 1739298193777 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025021118-release.conda + sha256: f119ac0dc6a2e5ae14d50087894cf19e37ade7b8c28f6dee5ce18261b8aacc34 + md5: 75dfe6f208a936d48e9d3a837948df62 depends: - - mblack ==25.1.0.dev2025021016 release + - mblack ==25.1.0.dev2025021118 release license: LicenseRef-Modular-Proprietary - size: 209778535 - timestamp: 1739208468121 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025021016-release.conda + size: 210529516 + timestamp: 1739300177315 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025021118-release.conda noarch: python - sha256: 60d215d6d0e0f79bacc28e01509a02f8a52e5386a5d5744dc8dd6e71dcb6d70e - md5: 3f84a7bfbcc1ab5f57fe9cd40f068196 + sha256: afdd9caf45c721ecc52232d9326cc82e722c31fb258f447e3bd96401e54046ff + md5: 5e2dbc1041d7b0ee3875492d5a0d9cab depends: - - max-core ==25.1.0.dev2025021016 release + - max-core ==25.1.0.dev2025021118 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -3207,14 +3208,14 @@ packages: - uvicorn >=0.34.0 - uvloop >=0.21.0 license: LicenseRef-Modular-Proprietary - size: 120578044 - timestamp: 1739206564266 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025021016-release.conda + size: 119441344 + timestamp: 1739298255901 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025021118-release.conda noarch: python - sha256: d3e53f9a9b5aa6d6c3feb259cb93787f0420b36c9c29e55873d8d829f09af152 - md5: 14fbbcfea3c014e62b9acc5db1246c4e + sha256: 632498f5d94332d845cfc3ed77c70ead11d7f203fef33cd2e84834b881f2b53b + md5: 143ab47c111e8a4f2c5738a03c1120d8 depends: - - max-core ==25.1.0.dev2025021016 release + - max-core ==25.1.0.dev2025021118 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -3251,14 +3252,14 @@ packages: - uvicorn >=0.34.0 - uvloop >=0.21.0 license: LicenseRef-Modular-Proprietary - size: 123118483 - timestamp: 1739206467888 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025021016-release.conda + size: 121978761 + timestamp: 1739298193777 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025021118-release.conda noarch: python - sha256: fce74c9f7fcc3b088c0d20a5706086f7c02eccfbecabc0049d60e4426134c18a - md5: d247d163daeff6f161daebd90df6bc14 + sha256: f54496b7ae6b494e1e9dcfd9a3adf419663762338f10a3529ceebbc5b069f5d6 + md5: 4f05acf4b4d79b7edb65c22b22caa664 depends: - - max-core ==25.1.0.dev2025021016 release + - max-core ==25.1.0.dev2025021118 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -3295,12 +3296,12 @@ packages: - uvicorn >=0.34.0 - uvloop >=0.21.0 license: LicenseRef-Modular-Proprietary - size: 108527262 - timestamp: 1739208468121 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025021016-release.conda + size: 108967654 + timestamp: 1739300177315 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025021118-release.conda noarch: python - sha256: 3e192549dac874ef586cf935a0792648f5592cfa3df00cc73e0e4e61c3567df9 - md5: dfa086b2922fa2452f9176d64ab0e0e6 + sha256: cc2714fe627e8b699c845f0730de5105bb262492da9430492d3afe262dbdc33d + md5: d6baf0d04bb03db1ae19262a04322ed3 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -3312,19 +3313,19 @@ packages: - python license: MIT size: 130846 - timestamp: 1739206564266 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025021016-release.conda + timestamp: 1739298255901 +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025021118-release.conda noarch: python - sha256: f3a9224cd636d83308401cd30f67980d5df33322a62176f6b96c8ef986e1a5bc - md5: 9f433f96ee6e4db74b4716363f71ea55 + sha256: 58ee7f4e01a0a566f84f0e6c45ff7c6fd4c2768bdfe924c9dc4c779148074f31 + md5: 26f6c833bd6d7979dc5aad93536d3e11 depends: - - max-core ==25.1.0.dev2025021016 release + - max-core ==25.1.0.dev2025021118 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22970 - timestamp: 1739206564266 + size: 22989 + timestamp: 1739298255901 - conda: https://conda.anaconda.org/conda-forge/linux-64/mpg123-1.32.9-hc50e24c_0.conda sha256: 39c4700fb3fbe403a77d8cc27352fa72ba744db487559d5d44bf8411bb4ea200 md5: c7f302fd11eeb0987a6a5e1f3aed6a21 @@ -3460,9 +3461,9 @@ packages: license_family: BSD size: 6073136 timestamp: 1707226249608 -- conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.0-h7b32b05_1.conda - sha256: f62f6bca4a33ca5109b6d571b052a394d836956d21b25b7ffd03376abf7a481f - md5: 4ce6875f75469b2757a65e10a5d05e31 +- conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.1-h7b32b05_0.conda + sha256: cbf62df3c79a5c2d113247ddea5658e9ff3697b6e741c210656e239ecaf1768f + md5: 41adf927e746dc75ecf0ef841c454e48 depends: - __glibc >=2.17,<3.0.a0 - ca-certificates @@ -3471,11 +3472,11 @@ packages: platform: linux license: Apache-2.0 license_family: Apache - size: 2937158 - timestamp: 1736086387286 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.0-hd08dc88_1.conda - sha256: 60d34454b861501d7355f25a7b39fdb5de8d56fca49b5bcbe8b8142b7d82dce4 - md5: e21c4767e783a58c373fdb99de6211bf + size: 2939306 + timestamp: 1739301879343 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.1-hd08dc88_0.conda + sha256: d80b52b56b2206053968270069616868cbeb289ef855cf1584b1bb0fef61b37c + md5: 09036190605c57eaecf01218e0e9542d depends: - ca-certificates - libgcc >=13 @@ -3483,11 +3484,11 @@ packages: platform: linux license: Apache-2.0 license_family: Apache - size: 3469279 - timestamp: 1736088141230 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.0-h81ee809_1.conda - sha256: 97772762abc70b3a537683ca9fc3ff3d6099eb64e4aba3b9c99e6fce48422d21 - md5: 22f971393637480bda8c679f374d8861 + size: 3476570 + timestamp: 1739303256089 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.1-h81ee809_0.conda + sha256: 4f8e2389e1b711b44182a075516d02c80fa7a3a7e25a71ff1b5ace9eae57a17a + md5: 75f9f0c7b1740017e2db83a53ab9a28e depends: - __osx >=11.0 - ca-certificates @@ -3495,8 +3496,8 @@ packages: platform: osx license: Apache-2.0 license_family: Apache - size: 2936415 - timestamp: 1736086108693 + size: 2934522 + timestamp: 1739301896733 - conda: https://conda.anaconda.org/conda-forge/linux-64/opusfile-0.12-h3358134_2.conda sha256: f4df9df880e405e5c856383f869d5b9d434f78fb7c234c9e7b099ab604fb7fc3 md5: 5931bcae00b98f952696b6bcdd0be34b diff --git a/examples/magic.lock b/examples/magic.lock index 7297a50e8b..451d32ac4b 100644 --- a/examples/magic.lock +++ b/examples/magic.lock @@ -23,7 +23,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-28_he106b2a_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.2-h7f98852_5.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h77fa898_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_1.conda @@ -42,15 +42,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025021016-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025021016-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025021016-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025021016-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025021016-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025021118-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025021118-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025021118-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025021118-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025021118-release.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-h2d0b736_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py311h64a7726_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.0-h7b32b05_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.1-h7b32b05_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda @@ -88,7 +88,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-28_hab92f65_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20250104-pl5321h976ea20_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.6.4-h5ad3122_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.4.2-h3557bc0_5.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.4.6-he21f813_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-14.2.0-he277a41_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-14.2.0-he9431aa_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_1.conda @@ -107,15 +107,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025021016-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025021016-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025021016-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025021016-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025021016-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025021118-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025021118-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025021118-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025021118-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025021118-release.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-ha32ae93_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py311h69ead2a_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.0-hd08dc88_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.1-hd08dc88_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda @@ -163,15 +163,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.48.0-h3f77e49_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025021016-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025021016-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025021016-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025021016-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025021016-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025021118-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025021118-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025021118-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025021118-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025021118-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py311h7125741_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.0-h81ee809_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.1-h81ee809_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda @@ -674,28 +674,29 @@ packages: license_family: MIT size: 64693 timestamp: 1730967175868 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.2-h7f98852_5.tar.bz2 - sha256: ab6e9856c21709b7b517e940ae7028ae0737546122f83c2aa5d692860c3b149e - md5: d645c6d2ac96843a2bfaccd2d62b3ac3 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_0.conda + sha256: 67a6c95e33ebc763c1adc3455b9a9ecde901850eb2fceb8e646cc05ef3a663da + md5: e3eb7806380bc8bcecba6d749ad5f026 depends: - - libgcc-ng >=9.4.0 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 arch: x86_64 platform: linux license: MIT license_family: MIT - size: 58292 - timestamp: 1636488182923 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.4.2-h3557bc0_5.tar.bz2 - sha256: 7e9258a102480757fe3faeb225a3ca04dffd10fecd2a958c65cdb4cdf75f2c3c - md5: dddd85f4d52121fab0a8b099c5e06501 + size: 53415 + timestamp: 1739260413716 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.4.6-he21f813_0.conda + sha256: 41568066beefe7b319ff27d85952242e5b77fb753d705b8716041959e17c35c2 + md5: 966084fccf3ad62a3160666cda869f28 depends: - - libgcc-ng >=9.4.0 + - libgcc >=13 arch: aarch64 platform: linux license: MIT license_family: MIT - size: 59450 - timestamp: 1636488255090 + size: 51513 + timestamp: 1739260449772 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 sha256: 41b3d13efb775e340e4dba549ab5c029611ea6918703096b2eaa9c015c0750ca md5: 086914b672be056eb70fd4285b6783b6 @@ -1295,48 +1296,48 @@ packages: license_family: APACHE size: 280830 timestamp: 1736986295869 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025021016-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025021118-release.conda noarch: python - sha256: 1bafad044ace46cf84dd7cd86ce4b0ca38b4b72a5548c9df17c19163399a904d - md5: 635b922efa5004e38021a7de5c5e8769 + sha256: 85e3bdc3306510ae6f8deb58a51d33dde3e85082036fa91edf91186e9b3dd36e + md5: a5ffada3cdcd1cf7785e2bacfc5390d4 depends: - - max-core ==25.1.0.dev2025021016 release - - max-python ==25.1.0.dev2025021016 release - - mojo-jupyter ==25.1.0.dev2025021016 release - - mblack ==25.1.0.dev2025021016 release + - max-core ==25.1.0.dev2025021118 release + - max-python ==25.1.0.dev2025021118 release + - mojo-jupyter ==25.1.0.dev2025021118 release + - mblack ==25.1.0.dev2025021118 release license: LicenseRef-Modular-Proprietary - size: 9900 - timestamp: 1739206564266 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025021016-release.conda - sha256: 6dd0771b13ac0c55d592b5d65c84aa9be997c80efc540a502e0779b3793a97dd - md5: 71abdf5becb20aa23366fb64bae9ee65 + size: 9912 + timestamp: 1739298255901 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025021118-release.conda + sha256: ea82c7c5aa7a4837e10f5fa1b40e1da9e616c77f2315c7bdbafd60e6bee89bde + md5: 2b83645154de80f9d64535c734a0be02 depends: - - mblack ==25.1.0.dev2025021016 release + - mblack ==25.1.0.dev2025021118 release license: LicenseRef-Modular-Proprietary - size: 244881014 - timestamp: 1739206564266 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025021016-release.conda - sha256: 361beb7f7f7c04d68a0778551376dec70321668714e4e57d9348460a5a0b5c10 - md5: c0c84aedeced8340c942f6da7df5006b + size: 242194776 + timestamp: 1739298255901 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025021118-release.conda + sha256: 6dbab8729c984a15a4a15130ad4a1c051423bc74148ea4db331120cbfc1f9af7 + md5: aeac269256d2ec50b1e52043732b102f depends: - - mblack ==25.1.0.dev2025021016 release + - mblack ==25.1.0.dev2025021118 release license: LicenseRef-Modular-Proprietary - size: 247414166 - timestamp: 1739206467888 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025021016-release.conda - sha256: 7c82cb027baaa0be91e605a7bd9e22111d8adf7d0dc60cde277cfbedbcaca3e9 - md5: ca6460081272ae9df94c052c3993691a + size: 244606528 + timestamp: 1739298193777 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025021118-release.conda + sha256: f119ac0dc6a2e5ae14d50087894cf19e37ade7b8c28f6dee5ce18261b8aacc34 + md5: 75dfe6f208a936d48e9d3a837948df62 depends: - - mblack ==25.1.0.dev2025021016 release + - mblack ==25.1.0.dev2025021118 release license: LicenseRef-Modular-Proprietary - size: 209778535 - timestamp: 1739208468121 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025021016-release.conda + size: 210529516 + timestamp: 1739300177315 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025021118-release.conda noarch: python - sha256: 60d215d6d0e0f79bacc28e01509a02f8a52e5386a5d5744dc8dd6e71dcb6d70e - md5: 3f84a7bfbcc1ab5f57fe9cd40f068196 + sha256: afdd9caf45c721ecc52232d9326cc82e722c31fb258f447e3bd96401e54046ff + md5: 5e2dbc1041d7b0ee3875492d5a0d9cab depends: - - max-core ==25.1.0.dev2025021016 release + - max-core ==25.1.0.dev2025021118 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1373,14 +1374,14 @@ packages: - uvicorn >=0.34.0 - uvloop >=0.21.0 license: LicenseRef-Modular-Proprietary - size: 120578044 - timestamp: 1739206564266 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025021016-release.conda + size: 119441344 + timestamp: 1739298255901 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025021118-release.conda noarch: python - sha256: d3e53f9a9b5aa6d6c3feb259cb93787f0420b36c9c29e55873d8d829f09af152 - md5: 14fbbcfea3c014e62b9acc5db1246c4e + sha256: 632498f5d94332d845cfc3ed77c70ead11d7f203fef33cd2e84834b881f2b53b + md5: 143ab47c111e8a4f2c5738a03c1120d8 depends: - - max-core ==25.1.0.dev2025021016 release + - max-core ==25.1.0.dev2025021118 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1417,14 +1418,14 @@ packages: - uvicorn >=0.34.0 - uvloop >=0.21.0 license: LicenseRef-Modular-Proprietary - size: 123118483 - timestamp: 1739206467888 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025021016-release.conda + size: 121978761 + timestamp: 1739298193777 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025021118-release.conda noarch: python - sha256: fce74c9f7fcc3b088c0d20a5706086f7c02eccfbecabc0049d60e4426134c18a - md5: d247d163daeff6f161daebd90df6bc14 + sha256: f54496b7ae6b494e1e9dcfd9a3adf419663762338f10a3529ceebbc5b069f5d6 + md5: 4f05acf4b4d79b7edb65c22b22caa664 depends: - - max-core ==25.1.0.dev2025021016 release + - max-core ==25.1.0.dev2025021118 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1461,12 +1462,12 @@ packages: - uvicorn >=0.34.0 - uvloop >=0.21.0 license: LicenseRef-Modular-Proprietary - size: 108527262 - timestamp: 1739208468121 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025021016-release.conda + size: 108967654 + timestamp: 1739300177315 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025021118-release.conda noarch: python - sha256: 3e192549dac874ef586cf935a0792648f5592cfa3df00cc73e0e4e61c3567df9 - md5: dfa086b2922fa2452f9176d64ab0e0e6 + sha256: cc2714fe627e8b699c845f0730de5105bb262492da9430492d3afe262dbdc33d + md5: d6baf0d04bb03db1ae19262a04322ed3 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -1478,19 +1479,19 @@ packages: - python license: MIT size: 130846 - timestamp: 1739206564266 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025021016-release.conda + timestamp: 1739298255901 +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025021118-release.conda noarch: python - sha256: f3a9224cd636d83308401cd30f67980d5df33322a62176f6b96c8ef986e1a5bc - md5: 9f433f96ee6e4db74b4716363f71ea55 + sha256: 58ee7f4e01a0a566f84f0e6c45ff7c6fd4c2768bdfe924c9dc4c779148074f31 + md5: 26f6c833bd6d7979dc5aad93536d3e11 depends: - - max-core ==25.1.0.dev2025021016 release + - max-core ==25.1.0.dev2025021118 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22970 - timestamp: 1739206564266 + size: 22989 + timestamp: 1739298255901 - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda sha256: 1895f47b7d68581a6facde5cb13ab8c2764c2e53a76bd746f8f98910dc4e08fe md5: 29097e7ea634a45cc5386b95cac6568f @@ -1589,9 +1590,9 @@ packages: license_family: BSD size: 6652352 timestamp: 1707226297967 -- conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.0-h7b32b05_1.conda - sha256: f62f6bca4a33ca5109b6d571b052a394d836956d21b25b7ffd03376abf7a481f - md5: 4ce6875f75469b2757a65e10a5d05e31 +- conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.1-h7b32b05_0.conda + sha256: cbf62df3c79a5c2d113247ddea5658e9ff3697b6e741c210656e239ecaf1768f + md5: 41adf927e746dc75ecf0ef841c454e48 depends: - __glibc >=2.17,<3.0.a0 - ca-certificates @@ -1600,11 +1601,11 @@ packages: platform: linux license: Apache-2.0 license_family: Apache - size: 2937158 - timestamp: 1736086387286 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.0-hd08dc88_1.conda - sha256: 60d34454b861501d7355f25a7b39fdb5de8d56fca49b5bcbe8b8142b7d82dce4 - md5: e21c4767e783a58c373fdb99de6211bf + size: 2939306 + timestamp: 1739301879343 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.1-hd08dc88_0.conda + sha256: d80b52b56b2206053968270069616868cbeb289ef855cf1584b1bb0fef61b37c + md5: 09036190605c57eaecf01218e0e9542d depends: - ca-certificates - libgcc >=13 @@ -1612,11 +1613,11 @@ packages: platform: linux license: Apache-2.0 license_family: Apache - size: 3469279 - timestamp: 1736088141230 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.0-h81ee809_1.conda - sha256: 97772762abc70b3a537683ca9fc3ff3d6099eb64e4aba3b9c99e6fce48422d21 - md5: 22f971393637480bda8c679f374d8861 + size: 3476570 + timestamp: 1739303256089 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.1-h81ee809_0.conda + sha256: 4f8e2389e1b711b44182a075516d02c80fa7a3a7e25a71ff1b5ace9eae57a17a + md5: 75f9f0c7b1740017e2db83a53ab9a28e depends: - __osx >=11.0 - ca-certificates @@ -1624,8 +1625,8 @@ packages: platform: osx license: Apache-2.0 license_family: Apache - size: 2936415 - timestamp: 1736086108693 + size: 2934522 + timestamp: 1739301896733 - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda sha256: da157b19bcd398b9804c5c52fc000fcb8ab0525bdb9c70f95beaa0bb42f85af1 md5: 3bfed7e6228ebf2f7b9eaa47f1b4e2aa diff --git a/examples/operators/magic.lock b/examples/operators/magic.lock index b494df8b70..c2cedc2c49 100644 --- a/examples/operators/magic.lock +++ b/examples/operators/magic.lock @@ -23,7 +23,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-28_he106b2a_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.2-h7f98852_5.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h77fa898_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_1.conda @@ -42,15 +42,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025021016-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025021016-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025021016-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025021016-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025021016-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025021118-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025021118-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025021118-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025021118-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025021118-release.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-h2d0b736_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.0-h7b32b05_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.1-h7b32b05_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda @@ -88,7 +88,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-28_hab92f65_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20250104-pl5321h976ea20_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.6.4-h5ad3122_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.4.2-h3557bc0_5.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.4.6-he21f813_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-14.2.0-he277a41_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-14.2.0-he9431aa_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_1.conda @@ -107,15 +107,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025021016-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025021016-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025021016-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025021016-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025021016-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025021118-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025021118-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025021118-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025021118-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025021118-release.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-ha32ae93_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.0-hd08dc88_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.1-hd08dc88_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda @@ -163,15 +163,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.48.0-h3f77e49_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025021016-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025021016-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025021016-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025021016-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025021016-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025021118-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025021118-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025021118-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025021118-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025021118-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.0-h81ee809_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.1-h81ee809_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda @@ -674,28 +674,29 @@ packages: license_family: MIT size: 64693 timestamp: 1730967175868 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.2-h7f98852_5.tar.bz2 - sha256: ab6e9856c21709b7b517e940ae7028ae0737546122f83c2aa5d692860c3b149e - md5: d645c6d2ac96843a2bfaccd2d62b3ac3 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_0.conda + sha256: 67a6c95e33ebc763c1adc3455b9a9ecde901850eb2fceb8e646cc05ef3a663da + md5: e3eb7806380bc8bcecba6d749ad5f026 depends: - - libgcc-ng >=9.4.0 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 arch: x86_64 platform: linux license: MIT license_family: MIT - size: 58292 - timestamp: 1636488182923 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.4.2-h3557bc0_5.tar.bz2 - sha256: 7e9258a102480757fe3faeb225a3ca04dffd10fecd2a958c65cdb4cdf75f2c3c - md5: dddd85f4d52121fab0a8b099c5e06501 + size: 53415 + timestamp: 1739260413716 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.4.6-he21f813_0.conda + sha256: 41568066beefe7b319ff27d85952242e5b77fb753d705b8716041959e17c35c2 + md5: 966084fccf3ad62a3160666cda869f28 depends: - - libgcc-ng >=9.4.0 + - libgcc >=13 arch: aarch64 platform: linux license: MIT license_family: MIT - size: 59450 - timestamp: 1636488255090 + size: 51513 + timestamp: 1739260449772 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 sha256: 41b3d13efb775e340e4dba549ab5c029611ea6918703096b2eaa9c015c0750ca md5: 086914b672be056eb70fd4285b6783b6 @@ -1295,48 +1296,48 @@ packages: license_family: APACHE size: 280830 timestamp: 1736986295869 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025021016-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025021118-release.conda noarch: python - sha256: 1bafad044ace46cf84dd7cd86ce4b0ca38b4b72a5548c9df17c19163399a904d - md5: 635b922efa5004e38021a7de5c5e8769 + sha256: 85e3bdc3306510ae6f8deb58a51d33dde3e85082036fa91edf91186e9b3dd36e + md5: a5ffada3cdcd1cf7785e2bacfc5390d4 depends: - - max-core ==25.1.0.dev2025021016 release - - max-python ==25.1.0.dev2025021016 release - - mojo-jupyter ==25.1.0.dev2025021016 release - - mblack ==25.1.0.dev2025021016 release + - max-core ==25.1.0.dev2025021118 release + - max-python ==25.1.0.dev2025021118 release + - mojo-jupyter ==25.1.0.dev2025021118 release + - mblack ==25.1.0.dev2025021118 release license: LicenseRef-Modular-Proprietary - size: 9900 - timestamp: 1739206564266 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025021016-release.conda - sha256: 6dd0771b13ac0c55d592b5d65c84aa9be997c80efc540a502e0779b3793a97dd - md5: 71abdf5becb20aa23366fb64bae9ee65 + size: 9912 + timestamp: 1739298255901 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025021118-release.conda + sha256: ea82c7c5aa7a4837e10f5fa1b40e1da9e616c77f2315c7bdbafd60e6bee89bde + md5: 2b83645154de80f9d64535c734a0be02 depends: - - mblack ==25.1.0.dev2025021016 release + - mblack ==25.1.0.dev2025021118 release license: LicenseRef-Modular-Proprietary - size: 244881014 - timestamp: 1739206564266 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025021016-release.conda - sha256: 361beb7f7f7c04d68a0778551376dec70321668714e4e57d9348460a5a0b5c10 - md5: c0c84aedeced8340c942f6da7df5006b + size: 242194776 + timestamp: 1739298255901 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025021118-release.conda + sha256: 6dbab8729c984a15a4a15130ad4a1c051423bc74148ea4db331120cbfc1f9af7 + md5: aeac269256d2ec50b1e52043732b102f depends: - - mblack ==25.1.0.dev2025021016 release + - mblack ==25.1.0.dev2025021118 release license: LicenseRef-Modular-Proprietary - size: 247414166 - timestamp: 1739206467888 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025021016-release.conda - sha256: 7c82cb027baaa0be91e605a7bd9e22111d8adf7d0dc60cde277cfbedbcaca3e9 - md5: ca6460081272ae9df94c052c3993691a + size: 244606528 + timestamp: 1739298193777 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025021118-release.conda + sha256: f119ac0dc6a2e5ae14d50087894cf19e37ade7b8c28f6dee5ce18261b8aacc34 + md5: 75dfe6f208a936d48e9d3a837948df62 depends: - - mblack ==25.1.0.dev2025021016 release + - mblack ==25.1.0.dev2025021118 release license: LicenseRef-Modular-Proprietary - size: 209778535 - timestamp: 1739208468121 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025021016-release.conda + size: 210529516 + timestamp: 1739300177315 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025021118-release.conda noarch: python - sha256: 60d215d6d0e0f79bacc28e01509a02f8a52e5386a5d5744dc8dd6e71dcb6d70e - md5: 3f84a7bfbcc1ab5f57fe9cd40f068196 + sha256: afdd9caf45c721ecc52232d9326cc82e722c31fb258f447e3bd96401e54046ff + md5: 5e2dbc1041d7b0ee3875492d5a0d9cab depends: - - max-core ==25.1.0.dev2025021016 release + - max-core ==25.1.0.dev2025021118 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1373,14 +1374,14 @@ packages: - uvicorn >=0.34.0 - uvloop >=0.21.0 license: LicenseRef-Modular-Proprietary - size: 120578044 - timestamp: 1739206564266 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025021016-release.conda + size: 119441344 + timestamp: 1739298255901 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025021118-release.conda noarch: python - sha256: d3e53f9a9b5aa6d6c3feb259cb93787f0420b36c9c29e55873d8d829f09af152 - md5: 14fbbcfea3c014e62b9acc5db1246c4e + sha256: 632498f5d94332d845cfc3ed77c70ead11d7f203fef33cd2e84834b881f2b53b + md5: 143ab47c111e8a4f2c5738a03c1120d8 depends: - - max-core ==25.1.0.dev2025021016 release + - max-core ==25.1.0.dev2025021118 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1417,14 +1418,14 @@ packages: - uvicorn >=0.34.0 - uvloop >=0.21.0 license: LicenseRef-Modular-Proprietary - size: 123118483 - timestamp: 1739206467888 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025021016-release.conda + size: 121978761 + timestamp: 1739298193777 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025021118-release.conda noarch: python - sha256: fce74c9f7fcc3b088c0d20a5706086f7c02eccfbecabc0049d60e4426134c18a - md5: d247d163daeff6f161daebd90df6bc14 + sha256: f54496b7ae6b494e1e9dcfd9a3adf419663762338f10a3529ceebbc5b069f5d6 + md5: 4f05acf4b4d79b7edb65c22b22caa664 depends: - - max-core ==25.1.0.dev2025021016 release + - max-core ==25.1.0.dev2025021118 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1461,12 +1462,12 @@ packages: - uvicorn >=0.34.0 - uvloop >=0.21.0 license: LicenseRef-Modular-Proprietary - size: 108527262 - timestamp: 1739208468121 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025021016-release.conda + size: 108967654 + timestamp: 1739300177315 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025021118-release.conda noarch: python - sha256: 3e192549dac874ef586cf935a0792648f5592cfa3df00cc73e0e4e61c3567df9 - md5: dfa086b2922fa2452f9176d64ab0e0e6 + sha256: cc2714fe627e8b699c845f0730de5105bb262492da9430492d3afe262dbdc33d + md5: d6baf0d04bb03db1ae19262a04322ed3 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -1478,19 +1479,19 @@ packages: - python license: MIT size: 130846 - timestamp: 1739206564266 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025021016-release.conda + timestamp: 1739298255901 +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025021118-release.conda noarch: python - sha256: f3a9224cd636d83308401cd30f67980d5df33322a62176f6b96c8ef986e1a5bc - md5: 9f433f96ee6e4db74b4716363f71ea55 + sha256: 58ee7f4e01a0a566f84f0e6c45ff7c6fd4c2768bdfe924c9dc4c779148074f31 + md5: 26f6c833bd6d7979dc5aad93536d3e11 depends: - - max-core ==25.1.0.dev2025021016 release + - max-core ==25.1.0.dev2025021118 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22970 - timestamp: 1739206564266 + size: 22989 + timestamp: 1739298255901 - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda sha256: 1895f47b7d68581a6facde5cb13ab8c2764c2e53a76bd746f8f98910dc4e08fe md5: 29097e7ea634a45cc5386b95cac6568f @@ -1589,9 +1590,9 @@ packages: license_family: BSD size: 6073136 timestamp: 1707226249608 -- conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.0-h7b32b05_1.conda - sha256: f62f6bca4a33ca5109b6d571b052a394d836956d21b25b7ffd03376abf7a481f - md5: 4ce6875f75469b2757a65e10a5d05e31 +- conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.1-h7b32b05_0.conda + sha256: cbf62df3c79a5c2d113247ddea5658e9ff3697b6e741c210656e239ecaf1768f + md5: 41adf927e746dc75ecf0ef841c454e48 depends: - __glibc >=2.17,<3.0.a0 - ca-certificates @@ -1600,11 +1601,11 @@ packages: platform: linux license: Apache-2.0 license_family: Apache - size: 2937158 - timestamp: 1736086387286 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.0-hd08dc88_1.conda - sha256: 60d34454b861501d7355f25a7b39fdb5de8d56fca49b5bcbe8b8142b7d82dce4 - md5: e21c4767e783a58c373fdb99de6211bf + size: 2939306 + timestamp: 1739301879343 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.1-hd08dc88_0.conda + sha256: d80b52b56b2206053968270069616868cbeb289ef855cf1584b1bb0fef61b37c + md5: 09036190605c57eaecf01218e0e9542d depends: - ca-certificates - libgcc >=13 @@ -1612,11 +1613,11 @@ packages: platform: linux license: Apache-2.0 license_family: Apache - size: 3469279 - timestamp: 1736088141230 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.0-h81ee809_1.conda - sha256: 97772762abc70b3a537683ca9fc3ff3d6099eb64e4aba3b9c99e6fce48422d21 - md5: 22f971393637480bda8c679f374d8861 + size: 3476570 + timestamp: 1739303256089 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.1-h81ee809_0.conda + sha256: 4f8e2389e1b711b44182a075516d02c80fa7a3a7e25a71ff1b5ace9eae57a17a + md5: 75f9f0c7b1740017e2db83a53ab9a28e depends: - __osx >=11.0 - ca-certificates @@ -1624,8 +1625,8 @@ packages: platform: osx license: Apache-2.0 license_family: Apache - size: 2936415 - timestamp: 1736086108693 + size: 2934522 + timestamp: 1739301896733 - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda sha256: da157b19bcd398b9804c5c52fc000fcb8ab0525bdb9c70f95beaa0bb42f85af1 md5: 3bfed7e6228ebf2f7b9eaa47f1b4e2aa diff --git a/examples/testing/magic.lock b/examples/testing/magic.lock index b494df8b70..c2cedc2c49 100644 --- a/examples/testing/magic.lock +++ b/examples/testing/magic.lock @@ -23,7 +23,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-28_he106b2a_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.2-h7f98852_5.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h77fa898_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_1.conda @@ -42,15 +42,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025021016-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025021016-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025021016-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025021016-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025021016-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025021118-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025021118-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025021118-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025021118-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025021118-release.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-h2d0b736_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.0-h7b32b05_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.1-h7b32b05_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda @@ -88,7 +88,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-28_hab92f65_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20250104-pl5321h976ea20_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.6.4-h5ad3122_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.4.2-h3557bc0_5.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.4.6-he21f813_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-14.2.0-he277a41_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-14.2.0-he9431aa_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_1.conda @@ -107,15 +107,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025021016-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025021016-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025021016-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025021016-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025021016-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025021118-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025021118-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025021118-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025021118-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025021118-release.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-ha32ae93_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.0-hd08dc88_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.1-hd08dc88_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda @@ -163,15 +163,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.48.0-h3f77e49_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025021016-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025021016-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025021016-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025021016-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025021016-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025021118-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025021118-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025021118-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025021118-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025021118-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.0-h81ee809_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.1-h81ee809_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda @@ -674,28 +674,29 @@ packages: license_family: MIT size: 64693 timestamp: 1730967175868 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.2-h7f98852_5.tar.bz2 - sha256: ab6e9856c21709b7b517e940ae7028ae0737546122f83c2aa5d692860c3b149e - md5: d645c6d2ac96843a2bfaccd2d62b3ac3 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_0.conda + sha256: 67a6c95e33ebc763c1adc3455b9a9ecde901850eb2fceb8e646cc05ef3a663da + md5: e3eb7806380bc8bcecba6d749ad5f026 depends: - - libgcc-ng >=9.4.0 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 arch: x86_64 platform: linux license: MIT license_family: MIT - size: 58292 - timestamp: 1636488182923 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.4.2-h3557bc0_5.tar.bz2 - sha256: 7e9258a102480757fe3faeb225a3ca04dffd10fecd2a958c65cdb4cdf75f2c3c - md5: dddd85f4d52121fab0a8b099c5e06501 + size: 53415 + timestamp: 1739260413716 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.4.6-he21f813_0.conda + sha256: 41568066beefe7b319ff27d85952242e5b77fb753d705b8716041959e17c35c2 + md5: 966084fccf3ad62a3160666cda869f28 depends: - - libgcc-ng >=9.4.0 + - libgcc >=13 arch: aarch64 platform: linux license: MIT license_family: MIT - size: 59450 - timestamp: 1636488255090 + size: 51513 + timestamp: 1739260449772 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 sha256: 41b3d13efb775e340e4dba549ab5c029611ea6918703096b2eaa9c015c0750ca md5: 086914b672be056eb70fd4285b6783b6 @@ -1295,48 +1296,48 @@ packages: license_family: APACHE size: 280830 timestamp: 1736986295869 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025021016-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025021118-release.conda noarch: python - sha256: 1bafad044ace46cf84dd7cd86ce4b0ca38b4b72a5548c9df17c19163399a904d - md5: 635b922efa5004e38021a7de5c5e8769 + sha256: 85e3bdc3306510ae6f8deb58a51d33dde3e85082036fa91edf91186e9b3dd36e + md5: a5ffada3cdcd1cf7785e2bacfc5390d4 depends: - - max-core ==25.1.0.dev2025021016 release - - max-python ==25.1.0.dev2025021016 release - - mojo-jupyter ==25.1.0.dev2025021016 release - - mblack ==25.1.0.dev2025021016 release + - max-core ==25.1.0.dev2025021118 release + - max-python ==25.1.0.dev2025021118 release + - mojo-jupyter ==25.1.0.dev2025021118 release + - mblack ==25.1.0.dev2025021118 release license: LicenseRef-Modular-Proprietary - size: 9900 - timestamp: 1739206564266 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025021016-release.conda - sha256: 6dd0771b13ac0c55d592b5d65c84aa9be997c80efc540a502e0779b3793a97dd - md5: 71abdf5becb20aa23366fb64bae9ee65 + size: 9912 + timestamp: 1739298255901 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025021118-release.conda + sha256: ea82c7c5aa7a4837e10f5fa1b40e1da9e616c77f2315c7bdbafd60e6bee89bde + md5: 2b83645154de80f9d64535c734a0be02 depends: - - mblack ==25.1.0.dev2025021016 release + - mblack ==25.1.0.dev2025021118 release license: LicenseRef-Modular-Proprietary - size: 244881014 - timestamp: 1739206564266 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025021016-release.conda - sha256: 361beb7f7f7c04d68a0778551376dec70321668714e4e57d9348460a5a0b5c10 - md5: c0c84aedeced8340c942f6da7df5006b + size: 242194776 + timestamp: 1739298255901 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025021118-release.conda + sha256: 6dbab8729c984a15a4a15130ad4a1c051423bc74148ea4db331120cbfc1f9af7 + md5: aeac269256d2ec50b1e52043732b102f depends: - - mblack ==25.1.0.dev2025021016 release + - mblack ==25.1.0.dev2025021118 release license: LicenseRef-Modular-Proprietary - size: 247414166 - timestamp: 1739206467888 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025021016-release.conda - sha256: 7c82cb027baaa0be91e605a7bd9e22111d8adf7d0dc60cde277cfbedbcaca3e9 - md5: ca6460081272ae9df94c052c3993691a + size: 244606528 + timestamp: 1739298193777 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025021118-release.conda + sha256: f119ac0dc6a2e5ae14d50087894cf19e37ade7b8c28f6dee5ce18261b8aacc34 + md5: 75dfe6f208a936d48e9d3a837948df62 depends: - - mblack ==25.1.0.dev2025021016 release + - mblack ==25.1.0.dev2025021118 release license: LicenseRef-Modular-Proprietary - size: 209778535 - timestamp: 1739208468121 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025021016-release.conda + size: 210529516 + timestamp: 1739300177315 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025021118-release.conda noarch: python - sha256: 60d215d6d0e0f79bacc28e01509a02f8a52e5386a5d5744dc8dd6e71dcb6d70e - md5: 3f84a7bfbcc1ab5f57fe9cd40f068196 + sha256: afdd9caf45c721ecc52232d9326cc82e722c31fb258f447e3bd96401e54046ff + md5: 5e2dbc1041d7b0ee3875492d5a0d9cab depends: - - max-core ==25.1.0.dev2025021016 release + - max-core ==25.1.0.dev2025021118 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1373,14 +1374,14 @@ packages: - uvicorn >=0.34.0 - uvloop >=0.21.0 license: LicenseRef-Modular-Proprietary - size: 120578044 - timestamp: 1739206564266 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025021016-release.conda + size: 119441344 + timestamp: 1739298255901 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025021118-release.conda noarch: python - sha256: d3e53f9a9b5aa6d6c3feb259cb93787f0420b36c9c29e55873d8d829f09af152 - md5: 14fbbcfea3c014e62b9acc5db1246c4e + sha256: 632498f5d94332d845cfc3ed77c70ead11d7f203fef33cd2e84834b881f2b53b + md5: 143ab47c111e8a4f2c5738a03c1120d8 depends: - - max-core ==25.1.0.dev2025021016 release + - max-core ==25.1.0.dev2025021118 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1417,14 +1418,14 @@ packages: - uvicorn >=0.34.0 - uvloop >=0.21.0 license: LicenseRef-Modular-Proprietary - size: 123118483 - timestamp: 1739206467888 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025021016-release.conda + size: 121978761 + timestamp: 1739298193777 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025021118-release.conda noarch: python - sha256: fce74c9f7fcc3b088c0d20a5706086f7c02eccfbecabc0049d60e4426134c18a - md5: d247d163daeff6f161daebd90df6bc14 + sha256: f54496b7ae6b494e1e9dcfd9a3adf419663762338f10a3529ceebbc5b069f5d6 + md5: 4f05acf4b4d79b7edb65c22b22caa664 depends: - - max-core ==25.1.0.dev2025021016 release + - max-core ==25.1.0.dev2025021118 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1461,12 +1462,12 @@ packages: - uvicorn >=0.34.0 - uvloop >=0.21.0 license: LicenseRef-Modular-Proprietary - size: 108527262 - timestamp: 1739208468121 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025021016-release.conda + size: 108967654 + timestamp: 1739300177315 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025021118-release.conda noarch: python - sha256: 3e192549dac874ef586cf935a0792648f5592cfa3df00cc73e0e4e61c3567df9 - md5: dfa086b2922fa2452f9176d64ab0e0e6 + sha256: cc2714fe627e8b699c845f0730de5105bb262492da9430492d3afe262dbdc33d + md5: d6baf0d04bb03db1ae19262a04322ed3 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -1478,19 +1479,19 @@ packages: - python license: MIT size: 130846 - timestamp: 1739206564266 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025021016-release.conda + timestamp: 1739298255901 +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025021118-release.conda noarch: python - sha256: f3a9224cd636d83308401cd30f67980d5df33322a62176f6b96c8ef986e1a5bc - md5: 9f433f96ee6e4db74b4716363f71ea55 + sha256: 58ee7f4e01a0a566f84f0e6c45ff7c6fd4c2768bdfe924c9dc4c779148074f31 + md5: 26f6c833bd6d7979dc5aad93536d3e11 depends: - - max-core ==25.1.0.dev2025021016 release + - max-core ==25.1.0.dev2025021118 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22970 - timestamp: 1739206564266 + size: 22989 + timestamp: 1739298255901 - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda sha256: 1895f47b7d68581a6facde5cb13ab8c2764c2e53a76bd746f8f98910dc4e08fe md5: 29097e7ea634a45cc5386b95cac6568f @@ -1589,9 +1590,9 @@ packages: license_family: BSD size: 6073136 timestamp: 1707226249608 -- conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.0-h7b32b05_1.conda - sha256: f62f6bca4a33ca5109b6d571b052a394d836956d21b25b7ffd03376abf7a481f - md5: 4ce6875f75469b2757a65e10a5d05e31 +- conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.1-h7b32b05_0.conda + sha256: cbf62df3c79a5c2d113247ddea5658e9ff3697b6e741c210656e239ecaf1768f + md5: 41adf927e746dc75ecf0ef841c454e48 depends: - __glibc >=2.17,<3.0.a0 - ca-certificates @@ -1600,11 +1601,11 @@ packages: platform: linux license: Apache-2.0 license_family: Apache - size: 2937158 - timestamp: 1736086387286 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.0-hd08dc88_1.conda - sha256: 60d34454b861501d7355f25a7b39fdb5de8d56fca49b5bcbe8b8142b7d82dce4 - md5: e21c4767e783a58c373fdb99de6211bf + size: 2939306 + timestamp: 1739301879343 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.1-hd08dc88_0.conda + sha256: d80b52b56b2206053968270069616868cbeb289ef855cf1584b1bb0fef61b37c + md5: 09036190605c57eaecf01218e0e9542d depends: - ca-certificates - libgcc >=13 @@ -1612,11 +1613,11 @@ packages: platform: linux license: Apache-2.0 license_family: Apache - size: 3469279 - timestamp: 1736088141230 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.0-h81ee809_1.conda - sha256: 97772762abc70b3a537683ca9fc3ff3d6099eb64e4aba3b9c99e6fce48422d21 - md5: 22f971393637480bda8c679f374d8861 + size: 3476570 + timestamp: 1739303256089 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.1-h81ee809_0.conda + sha256: 4f8e2389e1b711b44182a075516d02c80fa7a3a7e25a71ff1b5ace9eae57a17a + md5: 75f9f0c7b1740017e2db83a53ab9a28e depends: - __osx >=11.0 - ca-certificates @@ -1624,8 +1625,8 @@ packages: platform: osx license: Apache-2.0 license_family: Apache - size: 2936415 - timestamp: 1736086108693 + size: 2934522 + timestamp: 1739301896733 - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda sha256: da157b19bcd398b9804c5c52fc000fcb8ab0525bdb9c70f95beaa0bb42f85af1 md5: 3bfed7e6228ebf2f7b9eaa47f1b4e2aa diff --git a/magic.lock b/magic.lock index 4be31c3dfe..c318a28114 100644 --- a/magic.lock +++ b/magic.lock @@ -23,7 +23,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-28_he106b2a_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.2-h7f98852_5.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h77fa898_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_1.conda @@ -43,15 +43,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/lit-19.1.7-pyhd8ed1ab_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025021016-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025021016-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025021016-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025021016-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025021016-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025021118-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025021118-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025021118-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025021118-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025021118-release.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-h2d0b736_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.0-h7b32b05_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.1-h7b32b05_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda @@ -89,7 +89,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-28_hab92f65_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20250104-pl5321h976ea20_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.6.4-h5ad3122_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.4.2-h3557bc0_5.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.4.6-he21f813_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-14.2.0-he277a41_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-14.2.0-he9431aa_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_1.conda @@ -109,15 +109,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/lit-19.1.7-pyhd8ed1ab_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025021016-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025021016-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025021016-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025021016-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025021016-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025021118-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025021118-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025021118-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025021118-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025021118-release.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-ha32ae93_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.0-hd08dc88_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.1-hd08dc88_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda @@ -166,15 +166,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/lit-19.1.7-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025021016-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025021016-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025021016-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025021016-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025021016-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025021118-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025021118-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025021118-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025021118-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025021118-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.0-h81ee809_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.1-h81ee809_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda @@ -677,28 +677,29 @@ packages: license_family: MIT size: 64693 timestamp: 1730967175868 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.2-h7f98852_5.tar.bz2 - sha256: ab6e9856c21709b7b517e940ae7028ae0737546122f83c2aa5d692860c3b149e - md5: d645c6d2ac96843a2bfaccd2d62b3ac3 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_0.conda + sha256: 67a6c95e33ebc763c1adc3455b9a9ecde901850eb2fceb8e646cc05ef3a663da + md5: e3eb7806380bc8bcecba6d749ad5f026 depends: - - libgcc-ng >=9.4.0 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 arch: x86_64 platform: linux license: MIT license_family: MIT - size: 58292 - timestamp: 1636488182923 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.4.2-h3557bc0_5.tar.bz2 - sha256: 7e9258a102480757fe3faeb225a3ca04dffd10fecd2a958c65cdb4cdf75f2c3c - md5: dddd85f4d52121fab0a8b099c5e06501 + size: 53415 + timestamp: 1739260413716 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.4.6-he21f813_0.conda + sha256: 41568066beefe7b319ff27d85952242e5b77fb753d705b8716041959e17c35c2 + md5: 966084fccf3ad62a3160666cda869f28 depends: - - libgcc-ng >=9.4.0 + - libgcc >=13 arch: aarch64 platform: linux license: MIT license_family: MIT - size: 59450 - timestamp: 1636488255090 + size: 51513 + timestamp: 1739260449772 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 sha256: 41b3d13efb775e340e4dba549ab5c029611ea6918703096b2eaa9c015c0750ca md5: 086914b672be056eb70fd4285b6783b6 @@ -1307,48 +1308,48 @@ packages: license_family: APACHE size: 280830 timestamp: 1736986295869 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025021016-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025021118-release.conda noarch: python - sha256: 1bafad044ace46cf84dd7cd86ce4b0ca38b4b72a5548c9df17c19163399a904d - md5: 635b922efa5004e38021a7de5c5e8769 + sha256: 85e3bdc3306510ae6f8deb58a51d33dde3e85082036fa91edf91186e9b3dd36e + md5: a5ffada3cdcd1cf7785e2bacfc5390d4 depends: - - max-core ==25.1.0.dev2025021016 release - - max-python ==25.1.0.dev2025021016 release - - mojo-jupyter ==25.1.0.dev2025021016 release - - mblack ==25.1.0.dev2025021016 release + - max-core ==25.1.0.dev2025021118 release + - max-python ==25.1.0.dev2025021118 release + - mojo-jupyter ==25.1.0.dev2025021118 release + - mblack ==25.1.0.dev2025021118 release license: LicenseRef-Modular-Proprietary - size: 9900 - timestamp: 1739206564266 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025021016-release.conda - sha256: 6dd0771b13ac0c55d592b5d65c84aa9be997c80efc540a502e0779b3793a97dd - md5: 71abdf5becb20aa23366fb64bae9ee65 + size: 9912 + timestamp: 1739298255901 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025021118-release.conda + sha256: ea82c7c5aa7a4837e10f5fa1b40e1da9e616c77f2315c7bdbafd60e6bee89bde + md5: 2b83645154de80f9d64535c734a0be02 depends: - - mblack ==25.1.0.dev2025021016 release + - mblack ==25.1.0.dev2025021118 release license: LicenseRef-Modular-Proprietary - size: 244881014 - timestamp: 1739206564266 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025021016-release.conda - sha256: 361beb7f7f7c04d68a0778551376dec70321668714e4e57d9348460a5a0b5c10 - md5: c0c84aedeced8340c942f6da7df5006b + size: 242194776 + timestamp: 1739298255901 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025021118-release.conda + sha256: 6dbab8729c984a15a4a15130ad4a1c051423bc74148ea4db331120cbfc1f9af7 + md5: aeac269256d2ec50b1e52043732b102f depends: - - mblack ==25.1.0.dev2025021016 release + - mblack ==25.1.0.dev2025021118 release license: LicenseRef-Modular-Proprietary - size: 247414166 - timestamp: 1739206467888 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025021016-release.conda - sha256: 7c82cb027baaa0be91e605a7bd9e22111d8adf7d0dc60cde277cfbedbcaca3e9 - md5: ca6460081272ae9df94c052c3993691a + size: 244606528 + timestamp: 1739298193777 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025021118-release.conda + sha256: f119ac0dc6a2e5ae14d50087894cf19e37ade7b8c28f6dee5ce18261b8aacc34 + md5: 75dfe6f208a936d48e9d3a837948df62 depends: - - mblack ==25.1.0.dev2025021016 release + - mblack ==25.1.0.dev2025021118 release license: LicenseRef-Modular-Proprietary - size: 209778535 - timestamp: 1739208468121 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025021016-release.conda + size: 210529516 + timestamp: 1739300177315 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025021118-release.conda noarch: python - sha256: 60d215d6d0e0f79bacc28e01509a02f8a52e5386a5d5744dc8dd6e71dcb6d70e - md5: 3f84a7bfbcc1ab5f57fe9cd40f068196 + sha256: afdd9caf45c721ecc52232d9326cc82e722c31fb258f447e3bd96401e54046ff + md5: 5e2dbc1041d7b0ee3875492d5a0d9cab depends: - - max-core ==25.1.0.dev2025021016 release + - max-core ==25.1.0.dev2025021118 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1385,14 +1386,14 @@ packages: - uvicorn >=0.34.0 - uvloop >=0.21.0 license: LicenseRef-Modular-Proprietary - size: 120578044 - timestamp: 1739206564266 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025021016-release.conda + size: 119441344 + timestamp: 1739298255901 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025021118-release.conda noarch: python - sha256: d3e53f9a9b5aa6d6c3feb259cb93787f0420b36c9c29e55873d8d829f09af152 - md5: 14fbbcfea3c014e62b9acc5db1246c4e + sha256: 632498f5d94332d845cfc3ed77c70ead11d7f203fef33cd2e84834b881f2b53b + md5: 143ab47c111e8a4f2c5738a03c1120d8 depends: - - max-core ==25.1.0.dev2025021016 release + - max-core ==25.1.0.dev2025021118 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1429,14 +1430,14 @@ packages: - uvicorn >=0.34.0 - uvloop >=0.21.0 license: LicenseRef-Modular-Proprietary - size: 123118483 - timestamp: 1739206467888 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025021016-release.conda + size: 121978761 + timestamp: 1739298193777 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025021118-release.conda noarch: python - sha256: fce74c9f7fcc3b088c0d20a5706086f7c02eccfbecabc0049d60e4426134c18a - md5: d247d163daeff6f161daebd90df6bc14 + sha256: f54496b7ae6b494e1e9dcfd9a3adf419663762338f10a3529ceebbc5b069f5d6 + md5: 4f05acf4b4d79b7edb65c22b22caa664 depends: - - max-core ==25.1.0.dev2025021016 release + - max-core ==25.1.0.dev2025021118 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1473,12 +1474,12 @@ packages: - uvicorn >=0.34.0 - uvloop >=0.21.0 license: LicenseRef-Modular-Proprietary - size: 108527262 - timestamp: 1739208468121 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025021016-release.conda + size: 108967654 + timestamp: 1739300177315 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025021118-release.conda noarch: python - sha256: 3e192549dac874ef586cf935a0792648f5592cfa3df00cc73e0e4e61c3567df9 - md5: dfa086b2922fa2452f9176d64ab0e0e6 + sha256: cc2714fe627e8b699c845f0730de5105bb262492da9430492d3afe262dbdc33d + md5: d6baf0d04bb03db1ae19262a04322ed3 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -1490,19 +1491,19 @@ packages: - python license: MIT size: 130846 - timestamp: 1739206564266 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025021016-release.conda + timestamp: 1739298255901 +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025021118-release.conda noarch: python - sha256: f3a9224cd636d83308401cd30f67980d5df33322a62176f6b96c8ef986e1a5bc - md5: 9f433f96ee6e4db74b4716363f71ea55 + sha256: 58ee7f4e01a0a566f84f0e6c45ff7c6fd4c2768bdfe924c9dc4c779148074f31 + md5: 26f6c833bd6d7979dc5aad93536d3e11 depends: - - max-core ==25.1.0.dev2025021016 release + - max-core ==25.1.0.dev2025021118 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22970 - timestamp: 1739206564266 + size: 22989 + timestamp: 1739298255901 - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda sha256: 1895f47b7d68581a6facde5cb13ab8c2764c2e53a76bd746f8f98910dc4e08fe md5: 29097e7ea634a45cc5386b95cac6568f @@ -1601,9 +1602,9 @@ packages: license_family: BSD size: 6073136 timestamp: 1707226249608 -- conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.0-h7b32b05_1.conda - sha256: f62f6bca4a33ca5109b6d571b052a394d836956d21b25b7ffd03376abf7a481f - md5: 4ce6875f75469b2757a65e10a5d05e31 +- conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.1-h7b32b05_0.conda + sha256: cbf62df3c79a5c2d113247ddea5658e9ff3697b6e741c210656e239ecaf1768f + md5: 41adf927e746dc75ecf0ef841c454e48 depends: - __glibc >=2.17,<3.0.a0 - ca-certificates @@ -1612,11 +1613,11 @@ packages: platform: linux license: Apache-2.0 license_family: Apache - size: 2937158 - timestamp: 1736086387286 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.0-hd08dc88_1.conda - sha256: 60d34454b861501d7355f25a7b39fdb5de8d56fca49b5bcbe8b8142b7d82dce4 - md5: e21c4767e783a58c373fdb99de6211bf + size: 2939306 + timestamp: 1739301879343 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.1-hd08dc88_0.conda + sha256: d80b52b56b2206053968270069616868cbeb289ef855cf1584b1bb0fef61b37c + md5: 09036190605c57eaecf01218e0e9542d depends: - ca-certificates - libgcc >=13 @@ -1624,11 +1625,11 @@ packages: platform: linux license: Apache-2.0 license_family: Apache - size: 3469279 - timestamp: 1736088141230 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.0-h81ee809_1.conda - sha256: 97772762abc70b3a537683ca9fc3ff3d6099eb64e4aba3b9c99e6fce48422d21 - md5: 22f971393637480bda8c679f374d8861 + size: 3476570 + timestamp: 1739303256089 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.1-h81ee809_0.conda + sha256: 4f8e2389e1b711b44182a075516d02c80fa7a3a7e25a71ff1b5ace9eae57a17a + md5: 75f9f0c7b1740017e2db83a53ab9a28e depends: - __osx >=11.0 - ca-certificates @@ -1636,8 +1637,8 @@ packages: platform: osx license: Apache-2.0 license_family: Apache - size: 2936415 - timestamp: 1736086108693 + size: 2934522 + timestamp: 1739301896733 - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda sha256: da157b19bcd398b9804c5c52fc000fcb8ab0525bdb9c70f95beaa0bb42f85af1 md5: 3bfed7e6228ebf2f7b9eaa47f1b4e2aa From b15f3741e505a51dcb3ff2574cf1ad05d665d19b Mon Sep 17 00:00:00 2001 From: Lukas Hermann <1734032+lsh@users.noreply.github.com> Date: Tue, 11 Feb 2025 11:39:28 -0800 Subject: [PATCH 372/509] [stdlib] Add ability to get a pointer to the Mojo I/O stream This will probably not be the way most users want to interact with the `stdout` stream, but in Mojo's current state it is useful to be able to interact with the `stdout` stream associated with the program directly. Eventually, we'll want a locked output handle that we pass around. MODULAR_ORIG_COMMIT_REV_ID: 28306a670b3df8df523f362c11b237d8fff0809f --- stdlib/src/builtin/io.mojo | 6 ++++++ stdlib/src/sys/_libc.mojo | 22 +++++++++++++++++++++- 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/stdlib/src/builtin/io.mojo b/stdlib/src/builtin/io.mojo index a7aa15ad2d..eb5bfd4a22 100644 --- a/stdlib/src/builtin/io.mojo +++ b/stdlib/src/builtin/io.mojo @@ -385,3 +385,9 @@ fn input(prompt: String = "") raises -> String: if prompt != "": print(prompt, end="") return _fdopen["r"](0).readline() + + +fn _get_stdout_stream() -> OpaquePointer: + return external_call[ + "KGEN_CompilerRT_IO_get_stdout_stream", OpaquePointer + ]() diff --git a/stdlib/src/sys/_libc.mojo b/stdlib/src/sys/_libc.mojo index e951d7beb5..1bfd904399 100644 --- a/stdlib/src/sys/_libc.mojo +++ b/stdlib/src/sys/_libc.mojo @@ -18,7 +18,7 @@ functionality in the rest of the Mojo standard library. """ from sys import os_is_windows -from sys.ffi import OpaquePointer, c_char, c_int +from sys.ffi import OpaquePointer, c_char, c_int, c_size_t from memory import UnsafePointer @@ -74,6 +74,26 @@ fn pclose(stream: FILE_ptr) -> c_int: return external_call["pclose", c_int](stream) +@always_inline +fn setvbuf( + stream: FILE_ptr, buffer: UnsafePointer[c_char], mode: c_int, size: c_size_t +) -> c_int: + return external_call["setvbuf", c_int](stream, buffer) + + +struct BufferMode: + """ + Modes for use in `setvbuf` to control buffer output. + """ + + alias buffered = 0 + """Equivalent to `_IOFBF`.""" + alias line_buffered = 1 + """Equivalent to `_IOLBF`.""" + alias unbuffered = 2 + """Equivalent to `_IONBF`.""" + + # ===-----------------------------------------------------------------------===# # unistd.h # ===-----------------------------------------------------------------------===# From 87accf381f958e14aef0091e9029c23d17827231 Mon Sep 17 00:00:00 2001 From: Connor Gray Date: Tue, 11 Feb 2025 13:52:43 -0600 Subject: [PATCH 373/509] [stdlib] feat: Move `split()` to `StringSlice` MODULAR_ORIG_COMMIT_REV_ID: ffd812de307fbb16a7e3c26a42789c6442c52ae7 --- stdlib/src/collections/string/string.mojo | 89 ++-------- .../src/collections/string/string_slice.mojo | 155 +++++++++++++++++- .../collections/string/test_string_slice.mojo | 152 +++++++++++++++++ 3 files changed, 322 insertions(+), 74 deletions(-) diff --git a/stdlib/src/collections/string/string.mojo b/stdlib/src/collections/string/string.mojo index 916336ce80..a5b83a4dd0 100644 --- a/stdlib/src/collections/string/string.mojo +++ b/stdlib/src/collections/string/string.mojo @@ -1441,6 +1441,7 @@ struct String( """ return self.as_string_slice().isspace() + # TODO(MSTDL-590): String.split() should return `StringSlice`s. fn split(self, sep: StringSlice, maxsplit: Int = -1) raises -> List[String]: """Split the string by a separator. @@ -1467,36 +1468,9 @@ struct String( ``` . """ - var output = List[String]() - - var str_byte_len = self.byte_length() - 1 - var lhs = 0 - var rhs = 0 - var items = 0 - var sep_len = sep.byte_length() - if sep_len == 0: - raise Error("Separator cannot be empty.") - if str_byte_len < 0: - output.append("") - - while lhs <= str_byte_len: - rhs = self.find(sep, lhs) - if rhs == -1: - output.append(self[lhs:]) - break - - if maxsplit > -1: - if items == maxsplit: - output.append(self[lhs:]) - break - items += 1 - - output.append(self[lhs:rhs]) - lhs = rhs + sep_len - - if self.endswith(sep) and (len(output) <= maxsplit or maxsplit == -1): - output.append("") - return output + return self.as_string_slice().split[sep.mut, sep.origin]( + sep, maxsplit=maxsplit + ) fn split(self, sep: NoneType = None, maxsplit: Int = -1) -> List[String]: """Split the string by every Whitespace separator. @@ -1526,49 +1500,18 @@ struct String( . """ - fn num_bytes(b: UInt8) -> Int: - var flipped = ~b - return Int(count_leading_zeros(flipped) + (flipped >> 7)) - - var output = List[String]() - var str_byte_len = self.byte_length() - 1 - var lhs = 0 - var rhs = 0 - var items = 0 - while lhs <= str_byte_len: - # Python adds all "whitespace chars" as one separator - # if no separator was specified - for s in self[lhs:].char_slices(): - if not s.isspace(): - break - lhs += s.byte_length() - # if it went until the end of the String, then - # it should be sliced up until the original - # start of the whitespace which was already appended - if lhs - 1 == str_byte_len: - break - elif lhs == str_byte_len: - # if the last char is not whitespace - output.append(self[str_byte_len]) - break - rhs = lhs + num_bytes(self.unsafe_ptr()[lhs]) - for s in self[ - lhs + num_bytes(self.unsafe_ptr()[lhs]) : - ].char_slices(): - if s.isspace(): - break - rhs += s.byte_length() - - if maxsplit > -1: - if items == maxsplit: - output.append(self[lhs:]) - break - items += 1 - - output.append(self[lhs:rhs]) - lhs = rhs - - return output + # TODO(MSTDL-590): Avoid the need to loop to convert `StringSlice` to + # `String` by making `String.split()` return `StringSlice`s. + var str_slices = self.as_string_slice()._split_whitespace( + maxsplit=maxsplit + ) + + var output = List[String](capacity=len(str_slices)) + + for str_slice in str_slices: + output.append(String(str_slice[])) + + return output^ fn splitlines(self, keepends: Bool = False) -> List[String]: """Split the string at line boundaries. This corresponds to Python's diff --git a/stdlib/src/collections/string/string_slice.mojo b/stdlib/src/collections/string/string_slice.mojo index 214620616b..e97d1e1e23 100644 --- a/stdlib/src/collections/string/string_slice.mojo +++ b/stdlib/src/collections/string/string_slice.mojo @@ -25,7 +25,7 @@ from collections import List, Optional from collections.string._utf8_validation import _is_valid_utf8 from collections.string.format import _CurlyEntryFormattable, _FormatCurlyEntry from hashlib._hasher import _HashableWithHasher, _Hasher -from os import PathLike +from os import PathLike, abort from sys import bitwidthof, simdwidthof from sys.ffi import c_char from sys.intrinsics import likely, unlikely @@ -768,6 +768,159 @@ struct StringSlice[mut: Bool, //, origin: Origin[mut]]( # Methods # ===------------------------------------------------------------------===# + fn split[ + sep_mut: Bool, + sep_origin: Origin[sep_mut], //, + ]( + self, + sep: StringSlice[sep_origin], + maxsplit: Int = -1, + ) raises -> List[ + String + ]: + """Split the string by a separator. + + Parameters: + sep_mut: Mutability of the `sep` string slice. + sep_origin: Origin of the `sep` string slice. + + Args: + sep: The string to split on. + maxsplit: The maximum amount of items to split from String. + Defaults to unlimited. + + Returns: + A List of Strings containing the input split by the separator. + + Raises: + If the separator is empty. + + Examples: + + ```mojo + # Splitting a space + _ = StringSlice("hello world").split(" ") # ["hello", "world"] + # Splitting adjacent separators + _ = StringSlice("hello,,world").split(",") # ["hello", "", "world"] + # Splitting with maxsplit + _ = StringSlice("1,2,3").split(",", 1) # ['1', '2,3'] + ``` + . + """ + var output = List[String]() + + var str_byte_len = self.byte_length() - 1 + var lhs = 0 + var rhs = 0 + var items = 0 + var sep_len = sep.byte_length() + if sep_len == 0: + raise Error("Separator cannot be empty.") + if str_byte_len < 0: + output.append(String("")) + + while lhs <= str_byte_len: + rhs = self.find(sep, lhs) + if rhs == -1: + output.append(String(self[lhs:])) + break + + if maxsplit > -1: + if items == maxsplit: + output.append(String(self[lhs:])) + break + items += 1 + + output.append(String(self[lhs:rhs])) + lhs = rhs + sep_len + + if self.endswith(sep) and (len(output) <= maxsplit or maxsplit == -1): + output.append(String("")) + + return output^ + + fn split( + self, sep: NoneType = None, maxsplit: Int = -1 + ) -> List[StringSlice[origin]]: + """Split the string by every Whitespace separator. + + Args: + sep: None. + maxsplit: The maximum amount of items to split from String. Defaults + to unlimited. + + Returns: + A List of Strings containing the input split by the separator. + + Examples: + + ```mojo + # Splitting an empty string or filled with whitespaces + _ = StringSlice(" ").split() # [] + _ = StringSlice("").split() # [] + + # Splitting a string with leading, trailing, and middle whitespaces + _ = StringSlice(" hello world ").split() # ["hello", "world"] + # Splitting adjacent universal newlines: + _ = StringSlice( + "hello \\t\\n\\v\\f\\r\\x1c\\x1d\\x1e\\x85\\u2028\\u2029world" + ).split() # ["hello", "world"] + ``` + . + """ + + return self._split_whitespace() + + fn _split_whitespace(self, maxsplit: Int = -1) -> List[StringSlice[origin]]: + fn num_bytes(b: UInt8) -> Int: + var flipped = ~b + return Int(count_leading_zeros(flipped) + (flipped >> 7)) + + var output = List[StringSlice[origin]]() + var str_byte_len = self.byte_length() - 1 + var lhs = 0 + var rhs = 0 + var items = 0 + while lhs <= str_byte_len: + try: + # Python adds all "whitespace chars" as one separator + # if no separator was specified + for s in self[lhs:].char_slices(): + if not s.isspace(): + break + lhs += s.byte_length() + # if it went until the end of the String, then + # it should be sliced up until the original + # start of the whitespace which was already appended + if lhs - 1 == str_byte_len: + break + elif lhs == str_byte_len: + # if the last char is not whitespace + output.append(self[str_byte_len:]) + break + rhs = lhs + num_bytes(self.unsafe_ptr()[lhs]) + for s in self[ + lhs + num_bytes(self.unsafe_ptr()[lhs]) : + ].char_slices(): + if s.isspace(): + break + rhs += s.byte_length() + + if maxsplit > -1: + if items == maxsplit: + output.append(self[lhs:]) + break + items += 1 + + output.append(self[lhs:rhs]) + lhs = rhs + except e: + return abort[List[StringSlice[origin]]]( + "unexpected exception during split()" + ) + + return output + @always_inline fn strip(self, chars: StringSlice) -> Self: """Return a copy of the string with leading and trailing characters diff --git a/stdlib/test/collections/string/test_string_slice.mojo b/stdlib/test/collections/string/test_string_slice.mojo index 807d4dff8b..bb7bc9d3ea 100644 --- a/stdlib/test/collections/string/test_string_slice.mojo +++ b/stdlib/test/collections/string/test_string_slice.mojo @@ -569,6 +569,157 @@ def test_count_utf8_continuation_bytes(): _test(3, List[UInt8](b2, c, b3, c, c)) +def test_split(): + # empty separators default to whitespace + var d0 = StringSlice("hello world").split() + assert_true(len(d0) == 2) + assert_true(d0[0] == "hello") + assert_true(d0[1] == "world") + var d = StringSlice("hello \t\n\n\v\fworld").split(sep="\n") + assert_true(len(d) == 3) + assert_true(d[0] == "hello \t" and d[1] == "" and d[2] == "\v\fworld") + + # Should add all whitespace-like chars as one + # test all unicode separators + # 0 is to build a String with null terminator + alias next_line = List[UInt8](0xC2, 0x85, 0) + """TODO: \\x85""" + alias unicode_line_sep = List[UInt8](0xE2, 0x80, 0xA8, 0) + """TODO: \\u2028""" + alias unicode_paragraph_sep = List[UInt8](0xE2, 0x80, 0xA9, 0) + """TODO: \\u2029""" + # TODO add line and paragraph separator as StringLiteral once unicode + # escape secuences are accepted + var univ_sep_var = ( + String( + " ", + "\t", + "\n", + "\r", + "\v", + "\f", + "\x1c", + "\x1d", + "\x1e", + String(buffer=next_line), + String(buffer=unicode_line_sep), + String(buffer=unicode_paragraph_sep), + ) + ) + var s = univ_sep_var + "hello" + univ_sep_var + "world" + univ_sep_var + var ds1 = StringSlice(s).split() + assert_true(len(ds1) == 2) + assert_true(ds1[0] == "hello" and ds1[1] == "world") + + # should split into empty strings between separators + d = StringSlice("1,,,3").split(",") + assert_true(len(d) == 4) + assert_true(d[0] == "1" and d[1] == "" and d[2] == "" and d[3] == "3") + d = StringSlice(",,,").split(",") + assert_true(len(d) == 4) + assert_true(d[0] == "" and d[1] == "" and d[2] == "" and d[3] == "") + d = StringSlice(" a b ").split(" ") + assert_true(len(d) == 4) + assert_true(d[0] == "" and d[1] == "a" and d[2] == "b" and d[3] == "") + d = StringSlice("abababaaba").split("aba") + assert_true(len(d) == 4) + assert_true(d[0] == "" and d[1] == "b" and d[2] == "" and d[3] == "") + + # should split into maxsplit + 1 items + d = StringSlice("1,2,3").split(",", 0) + assert_true(len(d) == 1) + assert_true(d[0] == "1,2,3") + d = StringSlice("1,2,3").split(",", 1) + assert_true(len(d) == 2) + assert_true(d[0] == "1" and d[1] == "2,3") + + assert_true(len(StringSlice("").split()) == 0) + assert_true(len(StringSlice(" ").split()) == 0) + assert_true(len(StringSlice("").split(" ")) == 1) + assert_true(len(StringSlice(" ").split(" ")) == 2) + assert_true(len(StringSlice(" ").split(" ")) == 3) + assert_true(len(StringSlice(" ").split(" ")) == 4) + + with assert_raises(): + _ = StringSlice("").split("") + + # Split in middle + var d1 = StringSlice("n") + var in1 = StringSlice("faang") + var res1 = in1.split(d1) + assert_equal(len(res1), 2) + assert_equal(res1[0], "faa") + assert_equal(res1[1], "g") + + # Matches should be properly split in multiple case + var d2 = StringSlice(" ") + var in2 = StringSlice("modcon is coming soon") + var res2 = in2.split(d2) + assert_equal(len(res2), 4) + assert_equal(res2[0], "modcon") + assert_equal(res2[1], "is") + assert_equal(res2[2], "coming") + assert_equal(res2[3], "soon") + + # No match from the delimiter + var d3 = StringSlice("x") + var in3 = StringSlice("hello world") + var res3 = in3.split(d3) + assert_equal(len(res3), 1) + assert_equal(res3[0], "hello world") + + # Multiple character delimiter + var d4 = StringSlice("ll") + var in4 = StringSlice("hello") + var res4 = in4.split(d4) + assert_equal(len(res4), 2) + assert_equal(res4[0], "he") + assert_equal(res4[1], "o") + + # related to #2879 + # TODO: replace string comparison when __eq__ is implemented for List + assert_equal( + StringSlice("abbaaaabbba").split("a").__str__(), + "['', 'bb', '', '', '', 'bbb', '']", + ) + assert_equal( + StringSlice("abbaaaabbba").split("a", 8).__str__(), + "['', 'bb', '', '', '', 'bbb', '']", + ) + assert_equal( + StringSlice("abbaaaabbba").split("a", 5).__str__(), + "['', 'bb', '', '', '', 'bbba']", + ) + assert_equal(StringSlice("aaa").split("a", 0).__str__(), "['aaa']") + assert_equal(StringSlice("a").split("a").__str__(), "['', '']") + assert_equal(StringSlice("1,2,3").split("3", 0).__str__(), "['1,2,3']") + assert_equal(StringSlice("1,2,3").split("3", 1).__str__(), "['1,2,', '']") + assert_equal( + StringSlice("1,2,3,3").split("3", 2).__str__(), "['1,2,', ',', '']" + ) + assert_equal( + StringSlice("1,2,3,3,3").split("3", 2).__str__(), "['1,2,', ',', ',3']" + ) + + var in5 = StringSlice("Hello 🔥!") + var res5 = in5.split() + assert_equal(len(res5), 2) + assert_equal(res5[0], "Hello") + assert_equal(res5[1], "🔥!") + + var in6 = StringSlice("Лорем ипсум долор сит амет") + var res6 = in6.split(" ") + assert_equal(len(res6), 5) + assert_equal(res6[0], "Лорем") + assert_equal(res6[1], "ипсум") + assert_equal(res6[2], "долор") + assert_equal(res6[3], "сит") + assert_equal(res6[4], "амет") + + with assert_raises(contains="Separator cannot be empty."): + _ = StringSlice("1, 2, 3").split("") + + def test_splitlines(): alias S = StringSlice[StaticConstantOrigin] alias L = List[StringSlice[StaticConstantOrigin]] @@ -900,6 +1051,7 @@ def main(): test_combination_10_good_10_bad_utf8_sequences() test_count_utf8_continuation_bytes() test_count() + test_split() test_splitlines() test_rstrip() test_lstrip() From 39aac58e467884d8e0d0270894f0b74ef63ba11e Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Tue, 11 Feb 2025 12:47:21 -0800 Subject: [PATCH 374/509] [mojo-lang] Begin the implementation of `@always_inline("nodebug")` This adds basic infrastructure and implementation support for this new form of `always_inlined` which allows us to inline limited functions into parameter expressions, allowing things like `Int` to be more transparent for dedependent type processing and removing hacks in the compiler. MODULAR_ORIG_COMMIT_REV_ID: d8f48e1f10fb0766178ccd7e1fd078eb35abfae2 --- stdlib/src/builtin/int.mojo | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/stdlib/src/builtin/int.mojo b/stdlib/src/builtin/int.mojo index 44aca38921..9ab1315e87 100644 --- a/stdlib/src/builtin/int.mojo +++ b/stdlib/src/builtin/int.mojo @@ -340,7 +340,7 @@ struct Int( # Life cycle methods # ===------------------------------------------------------------------=== # - @always_inline("nodebug") + @always_inline("builtin") fn __init__(out self): """Default constructor that produces zero.""" self.value = __mlir_op.`index.constant`[value = __mlir_attr.`0:index`]() @@ -354,7 +354,7 @@ struct Int( return self @doc_private - @always_inline("nodebug") + @always_inline("builtin") @implicit fn __init__(out self, value: __mlir_type.index): """Construct Int from the given index value. @@ -592,7 +592,7 @@ struct Int( """ return self ^ -1 - @always_inline("nodebug") + @always_inline("builtin") fn __add__(self, rhs: Int) -> Int: """Return `self + rhs`. From c2172977b994911800127826dd81e4dc0775fd57 Mon Sep 17 00:00:00 2001 From: Connor Gray Date: Tue, 11 Feb 2025 15:34:45 -0600 Subject: [PATCH 375/509] [stdlib] polish: Remove a few unnecessary `String` allocations MODULAR_ORIG_COMMIT_REV_ID: 50cc3cb86f4bf5a1050bbcfa34e86f80d89fe9b2 --- docs/changelog.md | 3 +++ stdlib/src/pathlib/path.mojo | 6 +++--- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/docs/changelog.md b/docs/changelog.md index 8eb7543890..7c9820567b 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -25,6 +25,9 @@ what we publish. - A new `IntervalTree` data structure has been added to the standard library. This is a tree data structure that allows for efficient range queries. +- `StringSlice` now provides `split()` methods for splitting on a separator + character or on whitespace. + ### Tooling changes ### ❌ Removed diff --git a/stdlib/src/pathlib/path.mojo b/stdlib/src/pathlib/path.mojo index 89dec5a50d..38f8683dc5 100644 --- a/stdlib/src/pathlib/path.mojo +++ b/stdlib/src/pathlib/path.mojo @@ -60,7 +60,7 @@ fn _dir_of_current_file() raises -> Path: @no_inline fn _dir_of_current_file_impl(file_name: StringLiteral) raises -> Path: var i = String(file_name).rfind(DIR_SEPARATOR) - return Path(String(file_name)[0:i]) + return Path(StringSlice(file_name)[0:i]) @value @@ -92,13 +92,13 @@ struct Path( self.path = String(path) @implicit - fn __init__(out self, path: String): + fn __init__(out self, owned path: String): """Initializes a path with the provided path. Args: path: The file system path. """ - self.path = path + self.path = path^ fn copy(self) -> Self: """Copy the object. From 8e5a9f7da066aa0f9c9ca13ad60f788f7fb5920b Mon Sep 17 00:00:00 2001 From: Connor Gray Date: Tue, 11 Feb 2025 16:16:19 -0600 Subject: [PATCH 376/509] [stdlib] feat: Move `String` casing and justification methods to `StringSlice` The implementation logic for the following `String` methods have been moved to corresponding new `StringSlice` methods. In two cases the new `StringSlice` method names differ to emphasize that they currently only work on ASCII characters. * lower() * upper() * isdigit() => is_ascii_digit() * isupper() * islower() * isprintable() => is_ascii_printable() * rjust() * ljust() * center() * _justify() MODULAR_ORIG_COMMIT_REV_ID: 98c6c167394c82dc13636f057fd5c9403717b733 --- docs/changelog.md | 16 ++- stdlib/src/collections/string/string.mojo | 56 ++------ .../src/collections/string/string_slice.mojo | 131 +++++++++++++++++- .../test/collections/string/test_string.mojo | 80 ----------- .../collections/string/test_string_slice.mojo | 82 ++++++++++- 5 files changed, 240 insertions(+), 125 deletions(-) diff --git a/docs/changelog.md b/docs/changelog.md index 7c9820567b..7210dc3bb2 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -25,8 +25,20 @@ what we publish. - A new `IntervalTree` data structure has been added to the standard library. This is a tree data structure that allows for efficient range queries. -- `StringSlice` now provides `split()` methods for splitting on a separator - character or on whitespace. +- `StringSlice` now supports several additional methods moved from `String`. + The existing `String` methods have been updated to instead call the + corresponding new `StringSlice` methods: + + - `split()` + - `lower()` + - `upper()` + - `is_ascii_digit()` + - `isupper()` + - `islower()` + - `is_ascii_printable()` + - `rjust()` + - `ljust()` + - `center()` ### Tooling changes diff --git a/stdlib/src/collections/string/string.mojo b/stdlib/src/collections/string/string.mojo index a5b83a4dd0..f8cda0973f 100644 --- a/stdlib/src/collections/string/string.mojo +++ b/stdlib/src/collections/string/string.mojo @@ -15,12 +15,6 @@ from collections import KeyElement, List, Optional from collections._index_normalization import normalize_index from collections.string import CharsIter -from collections.string._unicode import ( - is_lowercase, - is_uppercase, - to_lowercase, - to_uppercase, -) from collections.string.format import _CurlyEntryFormattable, _FormatCurlyEntry from collections.string.string_slice import ( StaticString, @@ -29,6 +23,12 @@ from collections.string.string_slice import ( _to_string_list, _utf8_byte_type, ) +from collections.string._unicode import ( + is_lowercase, + is_uppercase, + to_lowercase, + to_uppercase, +) from hashlib._hasher import _HashableWithHasher, _Hasher from os import abort from sys import bitwidthof, llvm_intrinsic @@ -1692,8 +1692,7 @@ struct String( A new string where cased letters have been converted to lowercase. """ - # TODO: the _unicode module does not support locale sensitive conversions yet. - return to_lowercase(self) + return self.as_string_slice().lower() fn upper(self) -> String: """Returns a copy of the string with all cased characters @@ -1703,8 +1702,7 @@ struct String( A new string where cased letters have been converted to uppercase. """ - # TODO: the _unicode module does not support locale sensitive conversions yet. - return to_uppercase(self) + return self.as_string_slice().upper() fn startswith( self, prefix: StringSlice, start: Int = 0, end: Int = -1 @@ -1850,12 +1848,7 @@ struct String( Returns: True if all characters are digits and it's not empty else False. """ - if not self: - return False - for char in self.chars(): - if not char.is_ascii_digit(): - return False - return True + return self.as_string_slice().is_ascii_digit() fn isupper(self) -> Bool: """Returns True if all cased characters in the string are uppercase and @@ -1865,7 +1858,7 @@ struct String( True if all cased characters in the string are uppercase and there is at least one cased character, False otherwise. """ - return len(self) > 0 and is_uppercase(self) + return self.as_string_slice().isupper() fn islower(self) -> Bool: """Returns True if all cased characters in the string are lowercase and @@ -1875,7 +1868,7 @@ struct String( True if all cased characters in the string are lowercase and there is at least one cased character, False otherwise. """ - return len(self) > 0 and is_lowercase(self) + return self.as_string_slice().islower() fn isprintable(self) -> Bool: """Returns True if all characters in the string are ASCII printable. @@ -1885,10 +1878,7 @@ struct String( Returns: True if all characters are printable else False. """ - for char in self.chars(): - if not char.is_ascii_printable(): - return False - return True + return self.as_string_slice().is_ascii_printable() fn rjust(self, width: Int, fillchar: StringLiteral = " ") -> String: """Returns the string right justified in a string of specified width. @@ -1900,7 +1890,7 @@ struct String( Returns: Returns right justified string, or self if width is not bigger than self length. """ - return self._justify(width - len(self), width, fillchar) + return self.as_string_slice().rjust(width, fillchar) fn ljust(self, width: Int, fillchar: StringLiteral = " ") -> String: """Returns the string left justified in a string of specified width. @@ -1912,7 +1902,7 @@ struct String( Returns: Returns left justified string, or self if width is not bigger than self length. """ - return self._justify(0, width, fillchar) + return self.as_string_slice().ljust(width, fillchar) fn center(self, width: Int, fillchar: StringLiteral = " ") -> String: """Returns the string center justified in a string of specified width. @@ -1924,23 +1914,7 @@ struct String( Returns: Returns center justified string, or self if width is not bigger than self length. """ - return self._justify(width - len(self) >> 1, width, fillchar) - - fn _justify( - self, start: Int, width: Int, fillchar: StringLiteral - ) -> String: - if len(self) >= width: - return self - debug_assert( - len(fillchar) == 1, "fill char needs to be a one byte literal" - ) - var fillbyte = fillchar.as_bytes()[0] - var buffer = Self._buffer_type(capacity=width + 1) - buffer.resize(width, fillbyte) - buffer.append(0) - memcpy(buffer.unsafe_ptr().offset(start), self.unsafe_ptr(), len(self)) - var result = String(buffer) - return result^ + return self.as_string_slice().center(width, fillchar) fn reserve(mut self, new_capacity: Int): """Reserves the requested capacity. diff --git a/stdlib/src/collections/string/string_slice.mojo b/stdlib/src/collections/string/string_slice.mojo index e97d1e1e23..7856e05c71 100644 --- a/stdlib/src/collections/string/string_slice.mojo +++ b/stdlib/src/collections/string/string_slice.mojo @@ -22,8 +22,14 @@ from collections.string import StringSlice """ from collections import List, Optional -from collections.string._utf8_validation import _is_valid_utf8 from collections.string.format import _CurlyEntryFormattable, _FormatCurlyEntry +from collections.string._utf8_validation import _is_valid_utf8 +from collections.string._unicode import ( + is_lowercase, + is_uppercase, + to_lowercase, + to_uppercase, +) from hashlib._hasher import _HashableWithHasher, _Hasher from os import PathLike, abort from sys import bitwidthof, simdwidthof @@ -1562,6 +1568,129 @@ struct StringSlice[mut: Bool, //, origin: Origin[mut]]( return res + fn is_ascii_digit(self) -> Bool: + """A string is a digit string if all characters in the string are digits + and there is at least one character in the string. + + Note that this currently only works with ASCII strings. + + Returns: + True if all characters are digits and it's not empty else False. + """ + if not self: + return False + for char in self.chars(): + if not char.is_ascii_digit(): + return False + return True + + fn isupper(self) -> Bool: + """Returns True if all cased characters in the string are uppercase and + there is at least one cased character. + + Returns: + True if all cased characters in the string are uppercase and there + is at least one cased character, False otherwise. + """ + return len(self) > 0 and is_uppercase(self) + + fn islower(self) -> Bool: + """Returns True if all cased characters in the string are lowercase and + there is at least one cased character. + + Returns: + True if all cased characters in the string are lowercase and there + is at least one cased character, False otherwise. + """ + return len(self) > 0 and is_lowercase(self) + + fn lower(self) -> String: + """Returns a copy of the string with all cased characters + converted to lowercase. + + Returns: + A new string where cased letters have been converted to lowercase. + """ + + # TODO: the _unicode module does not support locale sensitive conversions yet. + return to_lowercase(self) + + fn upper(self) -> String: + """Returns a copy of the string with all cased characters + converted to uppercase. + + Returns: + A new string where cased letters have been converted to uppercase. + """ + + # TODO: the _unicode module does not support locale sensitive conversions yet. + return to_uppercase(self) + + fn is_ascii_printable(self) -> Bool: + """Returns True if all characters in the string are ASCII printable. + + Note that this currently only works with ASCII strings. + + Returns: + True if all characters are printable else False. + """ + for char in self.chars(): + if not char.is_ascii_printable(): + return False + return True + + fn rjust(self, width: Int, fillchar: StringLiteral = " ") -> String: + """Returns the string right justified in a string of specified width. + + Args: + width: The width of the field containing the string. + fillchar: Specifies the padding character. + + Returns: + Returns right justified string, or self if width is not bigger than self length. + """ + return self._justify(width - len(self), width, fillchar) + + fn ljust(self, width: Int, fillchar: StringLiteral = " ") -> String: + """Returns the string left justified in a string of specified width. + + Args: + width: The width of the field containing the string. + fillchar: Specifies the padding character. + + Returns: + Returns left justified string, or self if width is not bigger than self length. + """ + return self._justify(0, width, fillchar) + + fn center(self, width: Int, fillchar: StringLiteral = " ") -> String: + """Returns the string center justified in a string of specified width. + + Args: + width: The width of the field containing the string. + fillchar: Specifies the padding character. + + Returns: + Returns center justified string, or self if width is not bigger than self length. + """ + return self._justify(width - len(self) >> 1, width, fillchar) + + fn _justify( + self, start: Int, width: Int, fillchar: StringLiteral + ) -> String: + if len(self) >= width: + return String(self) + debug_assert( + len(fillchar) == 1, "fill char needs to be a one byte literal" + ) + var fillbyte = fillchar.as_bytes()[0] + var buffer = List[Byte](capacity=width + 1) + buffer.resize(width, fillbyte) + buffer.append(0) + memcpy(buffer.unsafe_ptr().offset(start), self.unsafe_ptr(), len(self)) + var result = String(buffer=buffer) + return result^ + # ===-----------------------------------------------------------------------===# # Utils diff --git a/stdlib/test/collections/string/test_string.mojo b/stdlib/test/collections/string/test_string.mojo index c34f617060..f9098e435d 100644 --- a/stdlib/test/collections/string/test_string.mojo +++ b/stdlib/test/collections/string/test_string.mojo @@ -828,46 +828,6 @@ def test_splitlines(): ) -def test_isupper(): - assert_true(String("ASDG").isupper()) - assert_false(String("AsDG").isupper()) - assert_true(String("ABC123").isupper()) - assert_false(String("1!").isupper()) - assert_true(String("É").isupper()) - assert_false(String("é").isupper()) - - -def test_islower(): - assert_true(String("asdfg").islower()) - assert_false(String("asdFDg").islower()) - assert_true(String("abc123").islower()) - assert_false(String("1!").islower()) - assert_true(String("é").islower()) - assert_false(String("É").islower()) - - -def test_lower(): - assert_equal(String("HELLO").lower(), "hello") - assert_equal(String("hello").lower(), "hello") - assert_equal(String("FoOBaR").lower(), "foobar") - - assert_equal(String("MOJO🔥").lower(), "mojo🔥") - - assert_equal(String("É").lower(), "é") - assert_equal(String("é").lower(), "é") - - -def test_upper(): - assert_equal(String("hello").upper(), "HELLO") - assert_equal(String("HELLO").upper(), "HELLO") - assert_equal(String("FoOBaR").upper(), "FOOBAR") - - assert_equal(String("mojo🔥").upper(), "MOJO🔥") - - assert_equal(String("É").upper(), "É") - assert_equal(String("é").upper(), "É") - - def test_isspace(): assert_false(String("").isspace()) @@ -1433,37 +1393,6 @@ def test_format_conversion_flags(): _ = String("{!r:d}").format(1) -def test_isdigit(): - assert_false(String("").isdigit()) - assert_true(String("123").isdigit()) - assert_false(String("asdg").isdigit()) - assert_false(String("123asdg").isdigit()) - - -def test_isprintable(): - assert_true(String("aasdg").isprintable()) - assert_false(String("aa\nae").isprintable()) - assert_false(String("aa\tae").isprintable()) - - -def test_rjust(): - assert_equal(String("hello").rjust(4), "hello") - assert_equal(String("hello").rjust(8), " hello") - assert_equal(String("hello").rjust(8, "*"), "***hello") - - -def test_ljust(): - assert_equal(String("hello").ljust(4), "hello") - assert_equal(String("hello").ljust(8), "hello ") - assert_equal(String("hello").ljust(8, "*"), "hello***") - - -def test_center(): - assert_equal(String("hello").center(4), "hello") - assert_equal(String("hello").center(8), " hello ") - assert_equal(String("hello").center(8, "*"), "*hello**") - - def test_float_conversion(): # This is basically just a wrapper around atof which is # more throughouly tested above @@ -1527,10 +1456,6 @@ def main(): test_rfind() test_split() test_splitlines() - test_isupper() - test_islower() - test_lower() - test_upper() test_isspace() test_ascii_aliases() test_rstrip() @@ -1548,11 +1473,6 @@ def main(): test_string_char_slices_iter() test_format_args() test_format_conversion_flags() - test_isdigit() - test_isprintable() - test_rjust() - test_ljust() - test_center() test_float_conversion() test_slice_contains() test_variadic_ctors() diff --git a/stdlib/test/collections/string/test_string_slice.mojo b/stdlib/test/collections/string/test_string_slice.mojo index bb7bc9d3ea..fc6ea07273 100644 --- a/stdlib/test/collections/string/test_string_slice.mojo +++ b/stdlib/test/collections/string/test_string_slice.mojo @@ -920,6 +920,77 @@ def test_endswith(): assert_true(ab.endswith("ab")) +def test_isupper(): + assert_true(StringSlice("ASDG").isupper()) + assert_false(StringSlice("AsDG").isupper()) + assert_true(StringSlice("ABC123").isupper()) + assert_false(StringSlice("1!").isupper()) + assert_true(StringSlice("É").isupper()) + assert_false(StringSlice("é").isupper()) + + +def test_islower(): + assert_true(StringSlice("asdfg").islower()) + assert_false(StringSlice("asdFDg").islower()) + assert_true(StringSlice("abc123").islower()) + assert_false(StringSlice("1!").islower()) + assert_true(StringSlice("é").islower()) + assert_false(StringSlice("É").islower()) + + +def test_lower(): + assert_equal(StringSlice("HELLO").lower(), "hello") + assert_equal(StringSlice("hello").lower(), "hello") + assert_equal(StringSlice("FoOBaR").lower(), "foobar") + + assert_equal(StringSlice("MOJO🔥").lower(), "mojo🔥") + + assert_equal(StringSlice("É").lower(), "é") + assert_equal(StringSlice("é").lower(), "é") + + +def test_upper(): + assert_equal(StringSlice("hello").upper(), "HELLO") + assert_equal(StringSlice("HELLO").upper(), "HELLO") + assert_equal(StringSlice("FoOBaR").upper(), "FOOBAR") + + assert_equal(StringSlice("mojo🔥").upper(), "MOJO🔥") + + assert_equal(StringSlice("É").upper(), "É") + assert_equal(StringSlice("é").upper(), "É") + + +def test_is_ascii_digit(): + assert_false(StringSlice("").is_ascii_digit()) + assert_true(StringSlice("123").is_ascii_digit()) + assert_false(StringSlice("asdg").is_ascii_digit()) + assert_false(StringSlice("123asdg").is_ascii_digit()) + + +def test_is_ascii_printable(): + assert_true(StringSlice("aasdg").is_ascii_printable()) + assert_false(StringSlice("aa\nae").is_ascii_printable()) + assert_false(StringSlice("aa\tae").is_ascii_printable()) + + +def test_rjust(): + assert_equal(StringSlice("hello").rjust(4), "hello") + assert_equal(StringSlice("hello").rjust(8), " hello") + assert_equal(StringSlice("hello").rjust(8, "*"), "***hello") + + +def test_ljust(): + assert_equal(StringSlice("hello").ljust(4), "hello") + assert_equal(StringSlice("hello").ljust(8), "hello ") + assert_equal(StringSlice("hello").ljust(8, "*"), "hello***") + + +def test_center(): + assert_equal(StringSlice("hello").center(4), "hello") + assert_equal(StringSlice("hello").center(8), " hello ") + assert_equal(StringSlice("hello").center(8, "*"), "*hello**") + + def test_count(): var str = StringSlice("Hello world") @@ -1050,7 +1121,6 @@ def main(): test_combination_10_good_utf8_sequences() test_combination_10_good_10_bad_utf8_sequences() test_count_utf8_continuation_bytes() - test_count() test_split() test_splitlines() test_rstrip() @@ -1058,5 +1128,15 @@ def main(): test_strip() test_startswith() test_endswith() + test_isupper() + test_islower() + test_lower() + test_upper() + test_is_ascii_digit() + test_is_ascii_printable() + test_rjust() + test_ljust() + test_center() + test_count() test_chars_iter() test_string_slice_from_pointer() From 514bc6a81cb6cf40ba7eb07b735352981102443a Mon Sep 17 00:00:00 2001 From: abdul dakkak Date: Tue, 11 Feb 2025 14:55:18 -0800 Subject: [PATCH 377/509] [All] Update the copy right notice year MODULAR_ORIG_COMMIT_REV_ID: 8dfab0a86511edbd8686c852f0ccaddc13b69f15 --- stdlib/src/collections/interval.mojo | 2 +- stdlib/test/collections/test_interval.mojo | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/stdlib/src/collections/interval.mojo b/stdlib/src/collections/interval.mojo index 060dae4ce2..6938bbe911 100644 --- a/stdlib/src/collections/interval.mojo +++ b/stdlib/src/collections/interval.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt diff --git a/stdlib/test/collections/test_interval.mojo b/stdlib/test/collections/test_interval.mojo index e5c710062d..94acb768b1 100644 --- a/stdlib/test/collections/test_interval.mojo +++ b/stdlib/test/collections/test_interval.mojo @@ -1,5 +1,5 @@ # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt From c6b7ae1fef32be973625c1b502830b695ad4e19f Mon Sep 17 00:00:00 2001 From: modularbot Date: Wed, 12 Feb 2025 08:01:28 +0000 Subject: [PATCH 378/509] Update lockfiles to point to latest nightly version: 25.1.0.dev2025021205 --- examples/life/magic.lock | 145 +++++++++++++++++----------------- examples/magic.lock | 145 +++++++++++++++++----------------- examples/operators/magic.lock | 145 +++++++++++++++++----------------- examples/testing/magic.lock | 145 +++++++++++++++++----------------- magic.lock | 145 +++++++++++++++++----------------- 5 files changed, 370 insertions(+), 355 deletions(-) diff --git a/examples/life/magic.lock b/examples/life/magic.lock index 02edf09a75..67910e8562 100644 --- a/examples/life/magic.lock +++ b/examples/life/magic.lock @@ -91,11 +91,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.10.0-h5888daf_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025021118-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025021118-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025021118-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025021118-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025021118-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025021205-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025021205-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025021205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025021205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025021205-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/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda @@ -229,11 +229,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.10.0-h5ad3122_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025021118-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025021118-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025021118-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025021118-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025021118-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025021205-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025021205-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025021205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025021205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025021205-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/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-ha32ae93_3.conda @@ -348,11 +348,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.5.0-h2471fea_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025021118-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025021118-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025021118-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025021118-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025021118-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025021205-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025021205-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025021205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025021205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025021205-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/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda @@ -3130,48 +3130,48 @@ packages: license_family: BSD size: 184953 timestamp: 1733740984533 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025021118-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025021205-release.conda noarch: python - sha256: 85e3bdc3306510ae6f8deb58a51d33dde3e85082036fa91edf91186e9b3dd36e - md5: a5ffada3cdcd1cf7785e2bacfc5390d4 + sha256: 0f0d002c8cdab4a1372af2efec963962a64dea766feafc61e423f9473a69c6d9 + md5: 888189cdefda2c9f32a7689616efebb0 depends: - - max-core ==25.1.0.dev2025021118 release - - max-python ==25.1.0.dev2025021118 release - - mojo-jupyter ==25.1.0.dev2025021118 release - - mblack ==25.1.0.dev2025021118 release + - max-core ==25.1.0.dev2025021205 release + - max-python ==25.1.0.dev2025021205 release + - mojo-jupyter ==25.1.0.dev2025021205 release + - mblack ==25.1.0.dev2025021205 release license: LicenseRef-Modular-Proprietary - size: 9912 - timestamp: 1739298255901 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025021118-release.conda - sha256: ea82c7c5aa7a4837e10f5fa1b40e1da9e616c77f2315c7bdbafd60e6bee89bde - md5: 2b83645154de80f9d64535c734a0be02 + size: 9901 + timestamp: 1739337393161 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025021205-release.conda + sha256: b1ce1440be41e8c05b7074c036b4893e6d71260563e30db507806260aa5847f1 + md5: a7796d647f173885be3fc7b1e60b5c51 depends: - - mblack ==25.1.0.dev2025021118 release + - mblack ==25.1.0.dev2025021205 release license: LicenseRef-Modular-Proprietary - size: 242194776 - timestamp: 1739298255901 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025021118-release.conda - sha256: 6dbab8729c984a15a4a15130ad4a1c051423bc74148ea4db331120cbfc1f9af7 - md5: aeac269256d2ec50b1e52043732b102f + size: 242209420 + timestamp: 1739337393161 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025021205-release.conda + sha256: 6c79c2cb13ef5a5a5c965c93100f98dc5ebb77ae94aa099792df4bd31d0c5532 + md5: 2b02a732e3300cb50acc69e6d6c96718 depends: - - mblack ==25.1.0.dev2025021118 release + - mblack ==25.1.0.dev2025021205 release license: LicenseRef-Modular-Proprietary - size: 244606528 - timestamp: 1739298193777 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025021118-release.conda - sha256: f119ac0dc6a2e5ae14d50087894cf19e37ade7b8c28f6dee5ce18261b8aacc34 - md5: 75dfe6f208a936d48e9d3a837948df62 + size: 244584198 + timestamp: 1739337423031 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025021205-release.conda + sha256: bbf7524e593fb9a292c7d62a7500c37476fef2535f1287c7e80367dfaea52a67 + md5: e3f8d90a22e6f25bd8692604b68da59a depends: - - mblack ==25.1.0.dev2025021118 release + - mblack ==25.1.0.dev2025021205 release license: LicenseRef-Modular-Proprietary - size: 210529516 - timestamp: 1739300177315 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025021118-release.conda + size: 210628549 + timestamp: 1739340679038 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025021205-release.conda noarch: python - sha256: afdd9caf45c721ecc52232d9326cc82e722c31fb258f447e3bd96401e54046ff - md5: 5e2dbc1041d7b0ee3875492d5a0d9cab + sha256: a99550dd334581d902a29efdb7b06065ac37280e37da1bdb1ec855b898e49d9b + md5: dd2f074682bffd7d6ba8582b0fce4216 depends: - - max-core ==25.1.0.dev2025021118 release + - max-core ==25.1.0.dev2025021205 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -3207,15 +3207,16 @@ packages: - transformers >=4.40.1 - uvicorn >=0.34.0 - uvloop >=0.21.0 + - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 119441344 - timestamp: 1739298255901 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025021118-release.conda + size: 119465869 + timestamp: 1739337393161 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025021205-release.conda noarch: python - sha256: 632498f5d94332d845cfc3ed77c70ead11d7f203fef33cd2e84834b881f2b53b - md5: 143ab47c111e8a4f2c5738a03c1120d8 + sha256: cf9aad9f335d5d299c9f42a4fb018f68c4c33d597226f8d231760bf4323ab0b9 + md5: 8731c1dce1f66eba34cad6f88a0225b0 depends: - - max-core ==25.1.0.dev2025021118 release + - max-core ==25.1.0.dev2025021205 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -3251,15 +3252,16 @@ packages: - transformers >=4.40.1 - uvicorn >=0.34.0 - uvloop >=0.21.0 + - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 121978761 - timestamp: 1739298193777 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025021118-release.conda + size: 122015180 + timestamp: 1739337423032 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025021205-release.conda noarch: python - sha256: f54496b7ae6b494e1e9dcfd9a3adf419663762338f10a3529ceebbc5b069f5d6 - md5: 4f05acf4b4d79b7edb65c22b22caa664 + sha256: d4563422dc7bfa44455ca0a02811a796e988b69b38bb7e2bf45dbf04879fb5a2 + md5: 9b3a27350d0c511e97402e82851d3362 depends: - - max-core ==25.1.0.dev2025021118 release + - max-core ==25.1.0.dev2025021205 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -3295,13 +3297,14 @@ packages: - transformers >=4.40.1 - uvicorn >=0.34.0 - uvloop >=0.21.0 + - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 108967654 - timestamp: 1739300177315 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025021118-release.conda + size: 108963046 + timestamp: 1739340679038 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025021205-release.conda noarch: python - sha256: cc2714fe627e8b699c845f0730de5105bb262492da9430492d3afe262dbdc33d - md5: d6baf0d04bb03db1ae19262a04322ed3 + sha256: 5e061de1184ad0c56f7982439f364ade5d949e5058f651f5a16e80e4eb6b8baa + md5: 0d91022c7d5e360c63d2995a0de93fbf depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -3312,20 +3315,20 @@ packages: - typing_extensions >=v4.12.2 - python license: MIT - size: 130846 - timestamp: 1739298255901 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025021118-release.conda + size: 130849 + timestamp: 1739337393161 +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025021205-release.conda noarch: python - sha256: 58ee7f4e01a0a566f84f0e6c45ff7c6fd4c2768bdfe924c9dc4c779148074f31 - md5: 26f6c833bd6d7979dc5aad93536d3e11 + sha256: 19512946c05eba6b19b63370c5957c046a4829bc9a68c9b77857e638167efa17 + md5: fa9e0b88bbfe857210f734de295d0383 depends: - - max-core ==25.1.0.dev2025021118 release + - max-core ==25.1.0.dev2025021205 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22989 - timestamp: 1739298255901 + size: 22980 + timestamp: 1739337393161 - conda: https://conda.anaconda.org/conda-forge/linux-64/mpg123-1.32.9-hc50e24c_0.conda sha256: 39c4700fb3fbe403a77d8cc27352fa72ba744db487559d5d44bf8411bb4ea200 md5: c7f302fd11eeb0987a6a5e1f3aed6a21 diff --git a/examples/magic.lock b/examples/magic.lock index 451d32ac4b..05670013c1 100644 --- a/examples/magic.lock +++ b/examples/magic.lock @@ -42,11 +42,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025021118-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025021118-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025021118-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025021118-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025021118-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025021205-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025021205-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025021205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025021205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025021205-release.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-h2d0b736_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py311h64a7726_0.conda @@ -107,11 +107,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025021118-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025021118-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025021118-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025021118-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025021118-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025021205-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025021205-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025021205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025021205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025021205-release.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-ha32ae93_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py311h69ead2a_0.conda @@ -163,11 +163,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.48.0-h3f77e49_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025021118-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025021118-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025021118-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025021118-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025021118-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025021205-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025021205-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025021205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025021205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025021205-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py311h7125741_0.conda @@ -1296,48 +1296,48 @@ packages: license_family: APACHE size: 280830 timestamp: 1736986295869 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025021118-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025021205-release.conda noarch: python - sha256: 85e3bdc3306510ae6f8deb58a51d33dde3e85082036fa91edf91186e9b3dd36e - md5: a5ffada3cdcd1cf7785e2bacfc5390d4 + sha256: 0f0d002c8cdab4a1372af2efec963962a64dea766feafc61e423f9473a69c6d9 + md5: 888189cdefda2c9f32a7689616efebb0 depends: - - max-core ==25.1.0.dev2025021118 release - - max-python ==25.1.0.dev2025021118 release - - mojo-jupyter ==25.1.0.dev2025021118 release - - mblack ==25.1.0.dev2025021118 release + - max-core ==25.1.0.dev2025021205 release + - max-python ==25.1.0.dev2025021205 release + - mojo-jupyter ==25.1.0.dev2025021205 release + - mblack ==25.1.0.dev2025021205 release license: LicenseRef-Modular-Proprietary - size: 9912 - timestamp: 1739298255901 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025021118-release.conda - sha256: ea82c7c5aa7a4837e10f5fa1b40e1da9e616c77f2315c7bdbafd60e6bee89bde - md5: 2b83645154de80f9d64535c734a0be02 + size: 9901 + timestamp: 1739337393161 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025021205-release.conda + sha256: b1ce1440be41e8c05b7074c036b4893e6d71260563e30db507806260aa5847f1 + md5: a7796d647f173885be3fc7b1e60b5c51 depends: - - mblack ==25.1.0.dev2025021118 release + - mblack ==25.1.0.dev2025021205 release license: LicenseRef-Modular-Proprietary - size: 242194776 - timestamp: 1739298255901 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025021118-release.conda - sha256: 6dbab8729c984a15a4a15130ad4a1c051423bc74148ea4db331120cbfc1f9af7 - md5: aeac269256d2ec50b1e52043732b102f + size: 242209420 + timestamp: 1739337393161 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025021205-release.conda + sha256: 6c79c2cb13ef5a5a5c965c93100f98dc5ebb77ae94aa099792df4bd31d0c5532 + md5: 2b02a732e3300cb50acc69e6d6c96718 depends: - - mblack ==25.1.0.dev2025021118 release + - mblack ==25.1.0.dev2025021205 release license: LicenseRef-Modular-Proprietary - size: 244606528 - timestamp: 1739298193777 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025021118-release.conda - sha256: f119ac0dc6a2e5ae14d50087894cf19e37ade7b8c28f6dee5ce18261b8aacc34 - md5: 75dfe6f208a936d48e9d3a837948df62 + size: 244584198 + timestamp: 1739337423031 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025021205-release.conda + sha256: bbf7524e593fb9a292c7d62a7500c37476fef2535f1287c7e80367dfaea52a67 + md5: e3f8d90a22e6f25bd8692604b68da59a depends: - - mblack ==25.1.0.dev2025021118 release + - mblack ==25.1.0.dev2025021205 release license: LicenseRef-Modular-Proprietary - size: 210529516 - timestamp: 1739300177315 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025021118-release.conda + size: 210628549 + timestamp: 1739340679038 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025021205-release.conda noarch: python - sha256: afdd9caf45c721ecc52232d9326cc82e722c31fb258f447e3bd96401e54046ff - md5: 5e2dbc1041d7b0ee3875492d5a0d9cab + sha256: a99550dd334581d902a29efdb7b06065ac37280e37da1bdb1ec855b898e49d9b + md5: dd2f074682bffd7d6ba8582b0fce4216 depends: - - max-core ==25.1.0.dev2025021118 release + - max-core ==25.1.0.dev2025021205 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1373,15 +1373,16 @@ packages: - transformers >=4.40.1 - uvicorn >=0.34.0 - uvloop >=0.21.0 + - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 119441344 - timestamp: 1739298255901 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025021118-release.conda + size: 119465869 + timestamp: 1739337393161 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025021205-release.conda noarch: python - sha256: 632498f5d94332d845cfc3ed77c70ead11d7f203fef33cd2e84834b881f2b53b - md5: 143ab47c111e8a4f2c5738a03c1120d8 + sha256: cf9aad9f335d5d299c9f42a4fb018f68c4c33d597226f8d231760bf4323ab0b9 + md5: 8731c1dce1f66eba34cad6f88a0225b0 depends: - - max-core ==25.1.0.dev2025021118 release + - max-core ==25.1.0.dev2025021205 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1417,15 +1418,16 @@ packages: - transformers >=4.40.1 - uvicorn >=0.34.0 - uvloop >=0.21.0 + - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 121978761 - timestamp: 1739298193777 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025021118-release.conda + size: 122015180 + timestamp: 1739337423032 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025021205-release.conda noarch: python - sha256: f54496b7ae6b494e1e9dcfd9a3adf419663762338f10a3529ceebbc5b069f5d6 - md5: 4f05acf4b4d79b7edb65c22b22caa664 + sha256: d4563422dc7bfa44455ca0a02811a796e988b69b38bb7e2bf45dbf04879fb5a2 + md5: 9b3a27350d0c511e97402e82851d3362 depends: - - max-core ==25.1.0.dev2025021118 release + - max-core ==25.1.0.dev2025021205 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1461,13 +1463,14 @@ packages: - transformers >=4.40.1 - uvicorn >=0.34.0 - uvloop >=0.21.0 + - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 108967654 - timestamp: 1739300177315 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025021118-release.conda + size: 108963046 + timestamp: 1739340679038 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025021205-release.conda noarch: python - sha256: cc2714fe627e8b699c845f0730de5105bb262492da9430492d3afe262dbdc33d - md5: d6baf0d04bb03db1ae19262a04322ed3 + sha256: 5e061de1184ad0c56f7982439f364ade5d949e5058f651f5a16e80e4eb6b8baa + md5: 0d91022c7d5e360c63d2995a0de93fbf depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -1478,20 +1481,20 @@ packages: - typing_extensions >=v4.12.2 - python license: MIT - size: 130846 - timestamp: 1739298255901 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025021118-release.conda + size: 130849 + timestamp: 1739337393161 +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025021205-release.conda noarch: python - sha256: 58ee7f4e01a0a566f84f0e6c45ff7c6fd4c2768bdfe924c9dc4c779148074f31 - md5: 26f6c833bd6d7979dc5aad93536d3e11 + sha256: 19512946c05eba6b19b63370c5957c046a4829bc9a68c9b77857e638167efa17 + md5: fa9e0b88bbfe857210f734de295d0383 depends: - - max-core ==25.1.0.dev2025021118 release + - max-core ==25.1.0.dev2025021205 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22989 - timestamp: 1739298255901 + size: 22980 + timestamp: 1739337393161 - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda sha256: 1895f47b7d68581a6facde5cb13ab8c2764c2e53a76bd746f8f98910dc4e08fe md5: 29097e7ea634a45cc5386b95cac6568f diff --git a/examples/operators/magic.lock b/examples/operators/magic.lock index c2cedc2c49..950fce9d6b 100644 --- a/examples/operators/magic.lock +++ b/examples/operators/magic.lock @@ -42,11 +42,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025021118-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025021118-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025021118-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025021118-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025021118-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025021205-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025021205-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025021205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025021205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025021205-release.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-h2d0b736_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda @@ -107,11 +107,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025021118-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025021118-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025021118-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025021118-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025021118-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025021205-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025021205-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025021205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025021205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025021205-release.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-ha32ae93_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda @@ -163,11 +163,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.48.0-h3f77e49_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025021118-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025021118-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025021118-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025021118-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025021118-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025021205-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025021205-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025021205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025021205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025021205-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda @@ -1296,48 +1296,48 @@ packages: license_family: APACHE size: 280830 timestamp: 1736986295869 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025021118-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025021205-release.conda noarch: python - sha256: 85e3bdc3306510ae6f8deb58a51d33dde3e85082036fa91edf91186e9b3dd36e - md5: a5ffada3cdcd1cf7785e2bacfc5390d4 + sha256: 0f0d002c8cdab4a1372af2efec963962a64dea766feafc61e423f9473a69c6d9 + md5: 888189cdefda2c9f32a7689616efebb0 depends: - - max-core ==25.1.0.dev2025021118 release - - max-python ==25.1.0.dev2025021118 release - - mojo-jupyter ==25.1.0.dev2025021118 release - - mblack ==25.1.0.dev2025021118 release + - max-core ==25.1.0.dev2025021205 release + - max-python ==25.1.0.dev2025021205 release + - mojo-jupyter ==25.1.0.dev2025021205 release + - mblack ==25.1.0.dev2025021205 release license: LicenseRef-Modular-Proprietary - size: 9912 - timestamp: 1739298255901 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025021118-release.conda - sha256: ea82c7c5aa7a4837e10f5fa1b40e1da9e616c77f2315c7bdbafd60e6bee89bde - md5: 2b83645154de80f9d64535c734a0be02 + size: 9901 + timestamp: 1739337393161 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025021205-release.conda + sha256: b1ce1440be41e8c05b7074c036b4893e6d71260563e30db507806260aa5847f1 + md5: a7796d647f173885be3fc7b1e60b5c51 depends: - - mblack ==25.1.0.dev2025021118 release + - mblack ==25.1.0.dev2025021205 release license: LicenseRef-Modular-Proprietary - size: 242194776 - timestamp: 1739298255901 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025021118-release.conda - sha256: 6dbab8729c984a15a4a15130ad4a1c051423bc74148ea4db331120cbfc1f9af7 - md5: aeac269256d2ec50b1e52043732b102f + size: 242209420 + timestamp: 1739337393161 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025021205-release.conda + sha256: 6c79c2cb13ef5a5a5c965c93100f98dc5ebb77ae94aa099792df4bd31d0c5532 + md5: 2b02a732e3300cb50acc69e6d6c96718 depends: - - mblack ==25.1.0.dev2025021118 release + - mblack ==25.1.0.dev2025021205 release license: LicenseRef-Modular-Proprietary - size: 244606528 - timestamp: 1739298193777 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025021118-release.conda - sha256: f119ac0dc6a2e5ae14d50087894cf19e37ade7b8c28f6dee5ce18261b8aacc34 - md5: 75dfe6f208a936d48e9d3a837948df62 + size: 244584198 + timestamp: 1739337423031 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025021205-release.conda + sha256: bbf7524e593fb9a292c7d62a7500c37476fef2535f1287c7e80367dfaea52a67 + md5: e3f8d90a22e6f25bd8692604b68da59a depends: - - mblack ==25.1.0.dev2025021118 release + - mblack ==25.1.0.dev2025021205 release license: LicenseRef-Modular-Proprietary - size: 210529516 - timestamp: 1739300177315 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025021118-release.conda + size: 210628549 + timestamp: 1739340679038 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025021205-release.conda noarch: python - sha256: afdd9caf45c721ecc52232d9326cc82e722c31fb258f447e3bd96401e54046ff - md5: 5e2dbc1041d7b0ee3875492d5a0d9cab + sha256: a99550dd334581d902a29efdb7b06065ac37280e37da1bdb1ec855b898e49d9b + md5: dd2f074682bffd7d6ba8582b0fce4216 depends: - - max-core ==25.1.0.dev2025021118 release + - max-core ==25.1.0.dev2025021205 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1373,15 +1373,16 @@ packages: - transformers >=4.40.1 - uvicorn >=0.34.0 - uvloop >=0.21.0 + - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 119441344 - timestamp: 1739298255901 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025021118-release.conda + size: 119465869 + timestamp: 1739337393161 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025021205-release.conda noarch: python - sha256: 632498f5d94332d845cfc3ed77c70ead11d7f203fef33cd2e84834b881f2b53b - md5: 143ab47c111e8a4f2c5738a03c1120d8 + sha256: cf9aad9f335d5d299c9f42a4fb018f68c4c33d597226f8d231760bf4323ab0b9 + md5: 8731c1dce1f66eba34cad6f88a0225b0 depends: - - max-core ==25.1.0.dev2025021118 release + - max-core ==25.1.0.dev2025021205 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1417,15 +1418,16 @@ packages: - transformers >=4.40.1 - uvicorn >=0.34.0 - uvloop >=0.21.0 + - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 121978761 - timestamp: 1739298193777 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025021118-release.conda + size: 122015180 + timestamp: 1739337423032 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025021205-release.conda noarch: python - sha256: f54496b7ae6b494e1e9dcfd9a3adf419663762338f10a3529ceebbc5b069f5d6 - md5: 4f05acf4b4d79b7edb65c22b22caa664 + sha256: d4563422dc7bfa44455ca0a02811a796e988b69b38bb7e2bf45dbf04879fb5a2 + md5: 9b3a27350d0c511e97402e82851d3362 depends: - - max-core ==25.1.0.dev2025021118 release + - max-core ==25.1.0.dev2025021205 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1461,13 +1463,14 @@ packages: - transformers >=4.40.1 - uvicorn >=0.34.0 - uvloop >=0.21.0 + - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 108967654 - timestamp: 1739300177315 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025021118-release.conda + size: 108963046 + timestamp: 1739340679038 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025021205-release.conda noarch: python - sha256: cc2714fe627e8b699c845f0730de5105bb262492da9430492d3afe262dbdc33d - md5: d6baf0d04bb03db1ae19262a04322ed3 + sha256: 5e061de1184ad0c56f7982439f364ade5d949e5058f651f5a16e80e4eb6b8baa + md5: 0d91022c7d5e360c63d2995a0de93fbf depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -1478,20 +1481,20 @@ packages: - typing_extensions >=v4.12.2 - python license: MIT - size: 130846 - timestamp: 1739298255901 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025021118-release.conda + size: 130849 + timestamp: 1739337393161 +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025021205-release.conda noarch: python - sha256: 58ee7f4e01a0a566f84f0e6c45ff7c6fd4c2768bdfe924c9dc4c779148074f31 - md5: 26f6c833bd6d7979dc5aad93536d3e11 + sha256: 19512946c05eba6b19b63370c5957c046a4829bc9a68c9b77857e638167efa17 + md5: fa9e0b88bbfe857210f734de295d0383 depends: - - max-core ==25.1.0.dev2025021118 release + - max-core ==25.1.0.dev2025021205 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22989 - timestamp: 1739298255901 + size: 22980 + timestamp: 1739337393161 - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda sha256: 1895f47b7d68581a6facde5cb13ab8c2764c2e53a76bd746f8f98910dc4e08fe md5: 29097e7ea634a45cc5386b95cac6568f diff --git a/examples/testing/magic.lock b/examples/testing/magic.lock index c2cedc2c49..950fce9d6b 100644 --- a/examples/testing/magic.lock +++ b/examples/testing/magic.lock @@ -42,11 +42,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025021118-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025021118-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025021118-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025021118-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025021118-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025021205-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025021205-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025021205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025021205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025021205-release.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-h2d0b736_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda @@ -107,11 +107,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025021118-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025021118-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025021118-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025021118-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025021118-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025021205-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025021205-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025021205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025021205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025021205-release.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-ha32ae93_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda @@ -163,11 +163,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.48.0-h3f77e49_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025021118-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025021118-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025021118-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025021118-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025021118-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025021205-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025021205-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025021205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025021205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025021205-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda @@ -1296,48 +1296,48 @@ packages: license_family: APACHE size: 280830 timestamp: 1736986295869 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025021118-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025021205-release.conda noarch: python - sha256: 85e3bdc3306510ae6f8deb58a51d33dde3e85082036fa91edf91186e9b3dd36e - md5: a5ffada3cdcd1cf7785e2bacfc5390d4 + sha256: 0f0d002c8cdab4a1372af2efec963962a64dea766feafc61e423f9473a69c6d9 + md5: 888189cdefda2c9f32a7689616efebb0 depends: - - max-core ==25.1.0.dev2025021118 release - - max-python ==25.1.0.dev2025021118 release - - mojo-jupyter ==25.1.0.dev2025021118 release - - mblack ==25.1.0.dev2025021118 release + - max-core ==25.1.0.dev2025021205 release + - max-python ==25.1.0.dev2025021205 release + - mojo-jupyter ==25.1.0.dev2025021205 release + - mblack ==25.1.0.dev2025021205 release license: LicenseRef-Modular-Proprietary - size: 9912 - timestamp: 1739298255901 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025021118-release.conda - sha256: ea82c7c5aa7a4837e10f5fa1b40e1da9e616c77f2315c7bdbafd60e6bee89bde - md5: 2b83645154de80f9d64535c734a0be02 + size: 9901 + timestamp: 1739337393161 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025021205-release.conda + sha256: b1ce1440be41e8c05b7074c036b4893e6d71260563e30db507806260aa5847f1 + md5: a7796d647f173885be3fc7b1e60b5c51 depends: - - mblack ==25.1.0.dev2025021118 release + - mblack ==25.1.0.dev2025021205 release license: LicenseRef-Modular-Proprietary - size: 242194776 - timestamp: 1739298255901 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025021118-release.conda - sha256: 6dbab8729c984a15a4a15130ad4a1c051423bc74148ea4db331120cbfc1f9af7 - md5: aeac269256d2ec50b1e52043732b102f + size: 242209420 + timestamp: 1739337393161 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025021205-release.conda + sha256: 6c79c2cb13ef5a5a5c965c93100f98dc5ebb77ae94aa099792df4bd31d0c5532 + md5: 2b02a732e3300cb50acc69e6d6c96718 depends: - - mblack ==25.1.0.dev2025021118 release + - mblack ==25.1.0.dev2025021205 release license: LicenseRef-Modular-Proprietary - size: 244606528 - timestamp: 1739298193777 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025021118-release.conda - sha256: f119ac0dc6a2e5ae14d50087894cf19e37ade7b8c28f6dee5ce18261b8aacc34 - md5: 75dfe6f208a936d48e9d3a837948df62 + size: 244584198 + timestamp: 1739337423031 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025021205-release.conda + sha256: bbf7524e593fb9a292c7d62a7500c37476fef2535f1287c7e80367dfaea52a67 + md5: e3f8d90a22e6f25bd8692604b68da59a depends: - - mblack ==25.1.0.dev2025021118 release + - mblack ==25.1.0.dev2025021205 release license: LicenseRef-Modular-Proprietary - size: 210529516 - timestamp: 1739300177315 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025021118-release.conda + size: 210628549 + timestamp: 1739340679038 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025021205-release.conda noarch: python - sha256: afdd9caf45c721ecc52232d9326cc82e722c31fb258f447e3bd96401e54046ff - md5: 5e2dbc1041d7b0ee3875492d5a0d9cab + sha256: a99550dd334581d902a29efdb7b06065ac37280e37da1bdb1ec855b898e49d9b + md5: dd2f074682bffd7d6ba8582b0fce4216 depends: - - max-core ==25.1.0.dev2025021118 release + - max-core ==25.1.0.dev2025021205 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1373,15 +1373,16 @@ packages: - transformers >=4.40.1 - uvicorn >=0.34.0 - uvloop >=0.21.0 + - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 119441344 - timestamp: 1739298255901 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025021118-release.conda + size: 119465869 + timestamp: 1739337393161 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025021205-release.conda noarch: python - sha256: 632498f5d94332d845cfc3ed77c70ead11d7f203fef33cd2e84834b881f2b53b - md5: 143ab47c111e8a4f2c5738a03c1120d8 + sha256: cf9aad9f335d5d299c9f42a4fb018f68c4c33d597226f8d231760bf4323ab0b9 + md5: 8731c1dce1f66eba34cad6f88a0225b0 depends: - - max-core ==25.1.0.dev2025021118 release + - max-core ==25.1.0.dev2025021205 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1417,15 +1418,16 @@ packages: - transformers >=4.40.1 - uvicorn >=0.34.0 - uvloop >=0.21.0 + - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 121978761 - timestamp: 1739298193777 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025021118-release.conda + size: 122015180 + timestamp: 1739337423032 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025021205-release.conda noarch: python - sha256: f54496b7ae6b494e1e9dcfd9a3adf419663762338f10a3529ceebbc5b069f5d6 - md5: 4f05acf4b4d79b7edb65c22b22caa664 + sha256: d4563422dc7bfa44455ca0a02811a796e988b69b38bb7e2bf45dbf04879fb5a2 + md5: 9b3a27350d0c511e97402e82851d3362 depends: - - max-core ==25.1.0.dev2025021118 release + - max-core ==25.1.0.dev2025021205 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1461,13 +1463,14 @@ packages: - transformers >=4.40.1 - uvicorn >=0.34.0 - uvloop >=0.21.0 + - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 108967654 - timestamp: 1739300177315 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025021118-release.conda + size: 108963046 + timestamp: 1739340679038 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025021205-release.conda noarch: python - sha256: cc2714fe627e8b699c845f0730de5105bb262492da9430492d3afe262dbdc33d - md5: d6baf0d04bb03db1ae19262a04322ed3 + sha256: 5e061de1184ad0c56f7982439f364ade5d949e5058f651f5a16e80e4eb6b8baa + md5: 0d91022c7d5e360c63d2995a0de93fbf depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -1478,20 +1481,20 @@ packages: - typing_extensions >=v4.12.2 - python license: MIT - size: 130846 - timestamp: 1739298255901 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025021118-release.conda + size: 130849 + timestamp: 1739337393161 +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025021205-release.conda noarch: python - sha256: 58ee7f4e01a0a566f84f0e6c45ff7c6fd4c2768bdfe924c9dc4c779148074f31 - md5: 26f6c833bd6d7979dc5aad93536d3e11 + sha256: 19512946c05eba6b19b63370c5957c046a4829bc9a68c9b77857e638167efa17 + md5: fa9e0b88bbfe857210f734de295d0383 depends: - - max-core ==25.1.0.dev2025021118 release + - max-core ==25.1.0.dev2025021205 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22989 - timestamp: 1739298255901 + size: 22980 + timestamp: 1739337393161 - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda sha256: 1895f47b7d68581a6facde5cb13ab8c2764c2e53a76bd746f8f98910dc4e08fe md5: 29097e7ea634a45cc5386b95cac6568f diff --git a/magic.lock b/magic.lock index c318a28114..fd0ebd1120 100644 --- a/magic.lock +++ b/magic.lock @@ -43,11 +43,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/lit-19.1.7-pyhd8ed1ab_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025021118-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025021118-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025021118-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025021118-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025021118-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025021205-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025021205-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025021205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025021205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025021205-release.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-h2d0b736_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda @@ -109,11 +109,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/lit-19.1.7-pyhd8ed1ab_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025021118-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025021118-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025021118-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025021118-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025021118-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025021205-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025021205-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025021205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025021205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025021205-release.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-ha32ae93_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda @@ -166,11 +166,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/lit-19.1.7-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025021118-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025021118-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025021118-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025021118-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025021118-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025021205-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025021205-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025021205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025021205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025021205-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda @@ -1308,48 +1308,48 @@ packages: license_family: APACHE size: 280830 timestamp: 1736986295869 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025021118-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025021205-release.conda noarch: python - sha256: 85e3bdc3306510ae6f8deb58a51d33dde3e85082036fa91edf91186e9b3dd36e - md5: a5ffada3cdcd1cf7785e2bacfc5390d4 + sha256: 0f0d002c8cdab4a1372af2efec963962a64dea766feafc61e423f9473a69c6d9 + md5: 888189cdefda2c9f32a7689616efebb0 depends: - - max-core ==25.1.0.dev2025021118 release - - max-python ==25.1.0.dev2025021118 release - - mojo-jupyter ==25.1.0.dev2025021118 release - - mblack ==25.1.0.dev2025021118 release + - max-core ==25.1.0.dev2025021205 release + - max-python ==25.1.0.dev2025021205 release + - mojo-jupyter ==25.1.0.dev2025021205 release + - mblack ==25.1.0.dev2025021205 release license: LicenseRef-Modular-Proprietary - size: 9912 - timestamp: 1739298255901 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025021118-release.conda - sha256: ea82c7c5aa7a4837e10f5fa1b40e1da9e616c77f2315c7bdbafd60e6bee89bde - md5: 2b83645154de80f9d64535c734a0be02 + size: 9901 + timestamp: 1739337393161 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025021205-release.conda + sha256: b1ce1440be41e8c05b7074c036b4893e6d71260563e30db507806260aa5847f1 + md5: a7796d647f173885be3fc7b1e60b5c51 depends: - - mblack ==25.1.0.dev2025021118 release + - mblack ==25.1.0.dev2025021205 release license: LicenseRef-Modular-Proprietary - size: 242194776 - timestamp: 1739298255901 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025021118-release.conda - sha256: 6dbab8729c984a15a4a15130ad4a1c051423bc74148ea4db331120cbfc1f9af7 - md5: aeac269256d2ec50b1e52043732b102f + size: 242209420 + timestamp: 1739337393161 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025021205-release.conda + sha256: 6c79c2cb13ef5a5a5c965c93100f98dc5ebb77ae94aa099792df4bd31d0c5532 + md5: 2b02a732e3300cb50acc69e6d6c96718 depends: - - mblack ==25.1.0.dev2025021118 release + - mblack ==25.1.0.dev2025021205 release license: LicenseRef-Modular-Proprietary - size: 244606528 - timestamp: 1739298193777 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025021118-release.conda - sha256: f119ac0dc6a2e5ae14d50087894cf19e37ade7b8c28f6dee5ce18261b8aacc34 - md5: 75dfe6f208a936d48e9d3a837948df62 + size: 244584198 + timestamp: 1739337423031 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025021205-release.conda + sha256: bbf7524e593fb9a292c7d62a7500c37476fef2535f1287c7e80367dfaea52a67 + md5: e3f8d90a22e6f25bd8692604b68da59a depends: - - mblack ==25.1.0.dev2025021118 release + - mblack ==25.1.0.dev2025021205 release license: LicenseRef-Modular-Proprietary - size: 210529516 - timestamp: 1739300177315 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025021118-release.conda + size: 210628549 + timestamp: 1739340679038 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025021205-release.conda noarch: python - sha256: afdd9caf45c721ecc52232d9326cc82e722c31fb258f447e3bd96401e54046ff - md5: 5e2dbc1041d7b0ee3875492d5a0d9cab + sha256: a99550dd334581d902a29efdb7b06065ac37280e37da1bdb1ec855b898e49d9b + md5: dd2f074682bffd7d6ba8582b0fce4216 depends: - - max-core ==25.1.0.dev2025021118 release + - max-core ==25.1.0.dev2025021205 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1385,15 +1385,16 @@ packages: - transformers >=4.40.1 - uvicorn >=0.34.0 - uvloop >=0.21.0 + - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 119441344 - timestamp: 1739298255901 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025021118-release.conda + size: 119465869 + timestamp: 1739337393161 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025021205-release.conda noarch: python - sha256: 632498f5d94332d845cfc3ed77c70ead11d7f203fef33cd2e84834b881f2b53b - md5: 143ab47c111e8a4f2c5738a03c1120d8 + sha256: cf9aad9f335d5d299c9f42a4fb018f68c4c33d597226f8d231760bf4323ab0b9 + md5: 8731c1dce1f66eba34cad6f88a0225b0 depends: - - max-core ==25.1.0.dev2025021118 release + - max-core ==25.1.0.dev2025021205 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1429,15 +1430,16 @@ packages: - transformers >=4.40.1 - uvicorn >=0.34.0 - uvloop >=0.21.0 + - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 121978761 - timestamp: 1739298193777 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025021118-release.conda + size: 122015180 + timestamp: 1739337423032 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025021205-release.conda noarch: python - sha256: f54496b7ae6b494e1e9dcfd9a3adf419663762338f10a3529ceebbc5b069f5d6 - md5: 4f05acf4b4d79b7edb65c22b22caa664 + sha256: d4563422dc7bfa44455ca0a02811a796e988b69b38bb7e2bf45dbf04879fb5a2 + md5: 9b3a27350d0c511e97402e82851d3362 depends: - - max-core ==25.1.0.dev2025021118 release + - max-core ==25.1.0.dev2025021205 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1473,13 +1475,14 @@ packages: - transformers >=4.40.1 - uvicorn >=0.34.0 - uvloop >=0.21.0 + - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 108967654 - timestamp: 1739300177315 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025021118-release.conda + size: 108963046 + timestamp: 1739340679038 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025021205-release.conda noarch: python - sha256: cc2714fe627e8b699c845f0730de5105bb262492da9430492d3afe262dbdc33d - md5: d6baf0d04bb03db1ae19262a04322ed3 + sha256: 5e061de1184ad0c56f7982439f364ade5d949e5058f651f5a16e80e4eb6b8baa + md5: 0d91022c7d5e360c63d2995a0de93fbf depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -1490,20 +1493,20 @@ packages: - typing_extensions >=v4.12.2 - python license: MIT - size: 130846 - timestamp: 1739298255901 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025021118-release.conda + size: 130849 + timestamp: 1739337393161 +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025021205-release.conda noarch: python - sha256: 58ee7f4e01a0a566f84f0e6c45ff7c6fd4c2768bdfe924c9dc4c779148074f31 - md5: 26f6c833bd6d7979dc5aad93536d3e11 + sha256: 19512946c05eba6b19b63370c5957c046a4829bc9a68c9b77857e638167efa17 + md5: fa9e0b88bbfe857210f734de295d0383 depends: - - max-core ==25.1.0.dev2025021118 release + - max-core ==25.1.0.dev2025021205 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22989 - timestamp: 1739298255901 + size: 22980 + timestamp: 1739337393161 - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda sha256: 1895f47b7d68581a6facde5cb13ab8c2764c2e53a76bd746f8f98910dc4e08fe md5: 29097e7ea634a45cc5386b95cac6568f From 37924a1fcac6964f03ccb68f23bbd21180d5bd29 Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Tue, 11 Feb 2025 22:20:16 -0800 Subject: [PATCH 379/509] [mojo-stdlib] This updates Int and IntLiteral to use `@always_inline("builtin")` a bit more. MODULAR_ORIG_COMMIT_REV_ID: 501c096e2b0d40430cc2fd8bc67aa7ba81e86d2d --- stdlib/src/builtin/int.mojo | 7 ++----- stdlib/src/builtin/int_literal.mojo | 4 ++-- 2 files changed, 4 insertions(+), 7 deletions(-) diff --git a/stdlib/src/builtin/int.mojo b/stdlib/src/builtin/int.mojo index 9ab1315e87..3e9061b95d 100644 --- a/stdlib/src/builtin/int.mojo +++ b/stdlib/src/builtin/int.mojo @@ -578,10 +578,7 @@ struct Int( Returns: The -self value. """ - return __mlir_op.`index.mul`( - self.value, - __mlir_op.`index.constant`[value = __mlir_attr.`-1:index`](), - ) + return self * -1 @always_inline("nodebug") fn __invert__(self) -> Int: @@ -604,7 +601,7 @@ struct Int( """ return __mlir_op.`index.add`(self.value, rhs.value) - @always_inline("nodebug") + @always_inline("builtin") fn __sub__(self, rhs: Int) -> Int: """Return `self - rhs`. diff --git a/stdlib/src/builtin/int_literal.mojo b/stdlib/src/builtin/int_literal.mojo index 8c52880895..3f25c6fbdb 100644 --- a/stdlib/src/builtin/int_literal.mojo +++ b/stdlib/src/builtin/int_literal.mojo @@ -52,13 +52,13 @@ struct IntLiteral( # Life cycle methods # ===-------------------------------------------------------------------===# - @always_inline("nodebug") + @always_inline("builtin") fn __init__(out self): """Default constructor.""" self.value = __mlir_attr.`#kgen.int_literal<0> : !kgen.int_literal` @doc_private - @always_inline("nodebug") + @always_inline("builtin") @implicit fn __init__(out self, value: __mlir_type.`!kgen.int_literal`): """Construct IntLiteral from the given mlir !kgen.int_literal value. From 3c0fe4add6bfd4ee0c5d04524b8c61246cb8c5ee Mon Sep 17 00:00:00 2001 From: weiwei chen Date: Wed, 12 Feb 2025 16:44:57 -0500 Subject: [PATCH 380/509] [stdlib] Public title Add compiler warning on unrolling large loops in ChangeLog. MODULAR_ORIG_COMMIT_REV_ID: faa6bc02c0c1ca5c381bcfdce7517d6b011a743e --- docs/changelog.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/docs/changelog.md b/docs/changelog.md index 7210dc3bb2..7a0f644a1e 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -42,6 +42,13 @@ what we publish. ### Tooling changes +#### Mojo Compiler + +Mojo compiler now warns about parameter for with large loop unrolling factor +(>1024 by default) which can lead to long compilation time and large generated +code size. Set `--loop-unrolling-warn-threshold` to change default value to +a different threshold or to `0` to disable the warning. + ### ❌ Removed ### 🛠️ Fixed From 1644fb52cfcdaaf93258ea43675d002c17d2c68b Mon Sep 17 00:00:00 2001 From: abdul dakkak Date: Wed, 12 Feb 2025 15:29:20 -0800 Subject: [PATCH 381/509] [Stdlib] Use iota from the math package in memcmp, NFC MODULAR_ORIG_COMMIT_REV_ID: 3baae8ea5f50639efb14c9f250f70cb00ebd58b5 --- stdlib/src/memory/memory.mojo | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/stdlib/src/memory/memory.mojo b/stdlib/src/memory/memory.mojo index 39358ac24d..eada6c0467 100644 --- a/stdlib/src/memory/memory.mojo +++ b/stdlib/src/memory/memory.mojo @@ -31,6 +31,7 @@ from sys import ( simdwidthof, sizeof, ) +from math import iota from memory.pointer import AddressSpace, _GPUAddressSpace @@ -66,12 +67,6 @@ fn _memcmp_impl_unconstrained[ return 1 if s1i > s2i else -1 return 0 - var iota = llvm_intrinsic[ - "llvm.stepvector", - SIMD[DType.uint8, simd_width], - has_side_effect=False, - ]() - var last = count - simd_width for i in range(0, last, simd_width): @@ -81,7 +76,8 @@ fn _memcmp_impl_unconstrained[ if any(diff): var index = Int( diff.select( - iota, SIMD[DType.uint8, simd_width](255) + iota[DType.uint8, simd_width](), + SIMD[DType.uint8, simd_width](255), ).reduce_min() ) return -1 if s1i[index] < s2i[index] else 1 @@ -91,7 +87,10 @@ fn _memcmp_impl_unconstrained[ var diff = s1i != s2i if any(diff): var index = Int( - diff.select(iota, SIMD[DType.uint8, simd_width](255)).reduce_min() + diff.select( + iota[DType.uint8, simd_width](), + SIMD[DType.uint8, simd_width](255), + ).reduce_min() ) return -1 if s1i[index] < s2i[index] else 1 return 0 From 14e1a64a24589a45d634641615a2afefd26f8f2c Mon Sep 17 00:00:00 2001 From: Jack Clayton Date: Wed, 12 Feb 2025 19:46:27 -0500 Subject: [PATCH 382/509] [Kernels] Combine `compile_function` and `enqueue_function` This moves to taking a function directly e.g. `ctx.enqueue_function[func](...)` instead of compiling it first. The old `enqueue_function` is still there but with a deprecation warning to give Kernels team and external users a message showing how to update. Old: ```mojo var compiled_func = ctx.compile_function[func]() ctx.enqueue_function(compiled_func, ...) ``` New: ```mojo ctx.enqueue_function[func](...) ``` The old way of dumping PTX with `compile_function` is still there for users that want to dump PTX without enqueuing a function, but you can now also dump the PTX through the `enqueue_function` method. MODULAR_ORIG_COMMIT_REV_ID: 7779f389f214cb929d6d62f5328752cc33a5137c --- docs/changelog.md | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/docs/changelog.md b/docs/changelog.md index 7a0f644a1e..943f737e9b 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -40,6 +40,30 @@ what we publish. - `ljust()` - `center()` +### GPU changes + +- `ctx.enqueue_function(compiled_func, ...)` is deprecated: + +```mojo + from gpu import thread_idx + from gpu.host import DeviceContext + + fn func(): + print("Hello from GPU thread:", thread_idx.x) + + with DeviceContext() as ctx: + var compiled_func = ctx.compile_function[func]() + ctx.enqueue_function(compiled_func, grid_dim=1, block_dim=4) +``` + +You should now pass the function directly to +`DeviceContext.enqueue_function[func](...)`: + +```mojo + with DeviceContext() as ctx: + ctx.enqueue_function[func](grid_dim=1, block_dim=4) +``` + ### Tooling changes #### Mojo Compiler From dbe2746cfed68f01843291ade52944f6ba5ea74e Mon Sep 17 00:00:00 2001 From: Ken Jones <165197230+KenJones-Modular@users.noreply.github.com> Date: Wed, 12 Feb 2025 17:57:31 -0800 Subject: [PATCH 383/509] [docs] Edited Mojo changelog for 25.1 release MODULAR_ORIG_COMMIT_REV_ID: 96a65eb97077f810ba045dc6cf25d20dd707f4ac --- docs/changelog-released.md | 604 +++++++++++++++++++++++-------------- 1 file changed, 378 insertions(+), 226 deletions(-) diff --git a/docs/changelog-released.md b/docs/changelog-released.md index ef40be1565..13cca39ddf 100644 --- a/docs/changelog-released.md +++ b/docs/changelog-released.md @@ -15,21 +15,67 @@ in [Update a package](/magic#update-a-package) to update the `max` package. ### ✨ Highlights -### Language changes +- Mojo now supports low-level programming constructs for working with GPUs! The + new [`gpu` package](/mojo/stdlib/gpu/) provides APIs allowing you to manage + interaction between the CPU host and GPU device, manage memory between + devices, synchronize threads, and more. The new [`layout` + package](/mojo/stdlib/layout/) includes APIs for working with _layouts_, which + describe the organization of a tensor. See the [GPU + programming](#25-1-gpu-programming) section of the changelog for more + information. + +- The legacy `borrowed`/`inout` keywords and `-> T as foo` syntax are deprecated + and now generate a compiler warning. Please move to `read`/`mut`/`out` + argument syntax instead. See + [Argument conventions](/mojo/manual/values/ownership#argument-conventions) + in the Mojo Manual for more information. + +- The `bool()`, `float()`, `int()`, and `str()` functions are deprecated and + generate compiler warnings. Please use the `Bool()`, `Float64()`, `Int()`, and + `String()` constructors instead. See [Standard library + changes](#25-1-standard-library-changes) for more details. + +- The standard library has many changes related to strings. The new + [`Char`](/mojo/stdlib/builtin/char/Char/) struct represents a single Unicode + character, and includes several methods for categorizing character types. When + iterating over the characters of a `String` with a `for` loop, you now should + use the + [`String.chars()`](/mojo/stdlib/collections/string/string/String#chars) method + to provide an iterator of `Char` values or the + [`String.char_slices()`](/mojo/stdlib/collections/string/string/String#char_slices) + method to provide an iterator of [`StringSlice`](/mojo/stdlib/collections/string/string_slice/StringSlice/) + instances for each character. + `StringRef` has been removed in favor of + [`StringSlice`](/mojo/stdlib/collections/string/string_slice/StringSlice/). + And various functionality has moved from `String` and `StringLiteral` to the + more general `StringSlice` type. See [Standard library + changes](#25-1-standard-library-changes) for more details. + +- You can now use [`SIMD`](/mojo/stdlib/builtin/simd/SIMD) constructors to cast + existing `SIMD` values (including `Scalar` values) to a different type, though + you can still use the [`SIMD.cast()`](/mojo/stdlib/builtin/simd/SIMD#cast) + method to infer the size of the new vector. See [Standard library + changes](#25-1-standard-library-changes) for more details. + +### Language changes {#25-1-language-changes} + +- The legacy `borrowed`/`inout` keywords and `-> T as foo` syntax now generate + a warning. Please move to `read`/`mut`/`out` argument syntax instead. See + [Argument conventions](/mojo/manual/values/ownership#argument-conventions) + in the Mojo Manual for more information. - Initializers are now treated as static methods that return an instance of `Self`. This means the `out` argument of an initializer is now treated the - same as a any other function result or `out` argument. This is generally + same as any other function result or `out` argument. This is generally invisible, except that patterns like `instance.__init__()` and `x.__copyinit__(y)` no longer work. Simply replace them with `instance = T()` and `x = y` respectively. -- The legacy `borrowed`/`inout` keywords and `-> T as foo` syntax now generate - a warning. Please move to `read`/`mut`/`out` argument syntax instead. - -- The `@value` decorator now additionally derives an implementation of the - `ExplicitlyCopyable` trait. This will ease the transition to explicit - copyablility requirements by default in the Mojo collection types. +- The [`@value`](/mojo/manual/decorators/value) decorator now additionally + derives an implementation of the + [`ExplicitlyCopyable`](/mojo/stdlib/builtin/value/ExplicitlyCopyable/) trait. + This will ease the transition to explicit copyability requirements by default + in the Mojo collection types. - Indexing into a homogenous tuple now produces the consistent element type without needing a rebind: @@ -95,32 +141,60 @@ in [Update a package](/magic#update-a-package) to update the `max` package. print(x[idx2=1]) # 84 ``` -### Standard library changes +- The `__disable_del x` operation has been tightened up to treat all fields of + `x` as consumed by the point of the deletion, so it should be used after all + the subfields are transferred or otherwise consumed (for example, at the end + of the function), not before uses of the fields. + +### GPU programming {#25-1-gpu-programming} -- `StringRef` has been removed in favor of `StringSlice`. - The two types are ABI compatible, and for the exact same - behavior one can use `StaticString`, which is an alias - to `StringSlice[StaticConstantOrigin]`. +- The new [`gpu` package](/mojo/stdlib/gpu/) provides low-level programming + constructs for working with GPUs. The Mojo `gpu` APIs allow you to manually + manage interaction between the CPU host and GPU device, manage memory between + devices, synchronize threads, and more. Currently the best way to use these + APIs is from inside a [MAX custom operation](/max/custom-ops/). -- Add a new `validate` parameter to the `b64decode()` function. + The following code example shows a GPU kernel written in Mojo: + + ```mojo + from max.tensor import ManagedTensorSlice + from gpu import thread_idx, block_dim, block_idx -- New `SIMD.from_bytes()` and `SIMD.as_bytes()` functions to convert a list of bytes - to a list of scalars and vice versa, accepting the endianess as an argument. Similar - to Python `int.from_bytes()` and `int.to_bytes()` functions. + fn gpu_add_kernel(out: ManagedTensorSlice, x: ManagedTensorSlice[out.type, out.rank]): + tid_x = thread_idx.x + block_dim.x * block_idx.x + tid_y = thread_idx.y + block_dim.y * block_dim.y + if tid_x < x.dim_size(0) and tid_y < x.dim_size(1): + out[tid_x, tid_y] = x[tid_x, tid_y] + 1 + ``` + + The example above includes only the actual kernel code that’s run on the GPU, + not the code to define a custom operation or launch the kernel. For more + complete examples, see + [`vector_addition.mojo`](https://github.com/modular/max/blob/main/examples/custom_ops/kernels/vector_addition.mojo) + and + [`top_k.mojo`](https://github.com/modular/max/blob/main/examples/custom_ops/kernels/top_k.mojo). -- Added more aliases in `sys.ffi` to round out the usual needs for FFI bindings. +- The [`layout` package](/mojo/stdlib/layout/) includes APIs for working with + _layouts_, which describe the organization of a tensor (for example, row-major + or column-major layout), and the + [`LayoutTensor`](/mojo/stdlib/layout/layout_tensor/LayoutTensor) type, which + represents a tensor with a specified layout. The `layout` package can be used + to build efficient tensor operations that run on a GPU. -- The free floating functions for constructing different types have been + We’ll continue adding code examples and documentation for the `gpu` and + `layout` packages in future releases. + +### Standard library changes {#25-1-standard-library-changes} + +- The builtin functions for converting values to different types have been deprecated for actual constructors: - ```plaintext - before after - ------------------ - int() Int() - str() String() - bool() Bool() - float() Float64() - ``` + | **Before** | **After** | + | ---------- | ----------- | + | `bool()` | `Bool()` | + | `float()` | `Float64()` | + | `int()` | `Int()` | + | `str()` | `String()` | These functions were a workaround before Mojo had a way to distinguish between implicit and explicit constructors. For this release you'll get a deprecation @@ -128,203 +202,267 @@ in [Update a package](/magic#update-a-package) to update the `max` package. quickly update your code by doing a `Match Case` and `Match Whole Word` search and replace for `int(` to `Int(` etc. -- `UnsafePointer`'s `bitcast` method has now been split into `bitcast` - for changing the type, `origin_cast` for changing mutability, - `static_alignment_cast` for changing alignment, - and `address_space_cast` for changing the address space. +- [`String`](/mojo/stdlib/collections/string/String) and friends: + + - Added [`Char`](/mojo/stdlib/builtin/char/Char/) for representing and + storing single Unicode characters. + + - `Char` implements + [`CollectionElement`](/mojo/stdlib/builtin/value/CollectionElement/), + [`EqualityComparable`](/mojo/stdlib/builtin/equality_comparable/EqualityComparable/), + [`Intable`](/mojo/stdlib/builtin/int/Intable/), and + [`Stringable`](/mojo/stdlib/builtin/str/Stringable/). -- `UnsafePointer` is now parameterized on mutability. Previously, - `UnsafePointer` could only represent mutable pointers. + - `Char` provides methods for categorizing character types, including: + [`Char.is_ascii()`](/mojo/stdlib/builtin/char/Char/#is_ascii), + [`Char.is_ascii_digit()`](/mojo/stdlib/builtin/char/Char/#is_ascii_digit), + [`Char.is_ascii_upper()`](/mojo/stdlib/builtin/char/Char/#is_ascii_upper), + [`Char.is_ascii_lower()`](/mojo/stdlib/builtin/char/Char/#is_ascii_lower), + [`Char.is_ascii_printable()`](/mojo/stdlib/builtin/char/Char/#is_ascii_printable), + [`Char.is_posix_space()`](/mojo/stdlib/builtin/char/Char/#is_posix_space), + [`Char.is_python_space()`](/mojo/stdlib/builtin/char/Char/#is_python_space). + + - Added a `String()` constructor from `Char`. + + - `Char` can be converted to `UInt32` via + [`Char.to_u32()`](/mojo/stdlib/builtin/char/Char/#to_u32). + + - [`chr()`](/mojo/stdlib/collections/string/string/chr/) will now abort if + given a codepoint value that is not a valid `Char`. + + - `StringRef` has been removed in favor of + [`StringSlice`](/mojo/stdlib/collections/string/string_slice/StringSlice/). + The two types are ABI compatible, and for the exact same behavior one can + use `StaticString`, which is an alias to + `StringSlice[StaticConstantOrigin]`. + + - Various functionality has moved from `String` and `StringLiteral` to the + more general `StringSlice` type. + + - Added + [`StringSlice.from_utf8()`](/mojo/stdlib/collections/string/string_slice/StringSlice/#from_utf8) + factory method, for validated construction of a `StringSlice` from a buffer + containing UTF-8 encoded data. This method will raise if the buffer contents + are not valid UTF-8. - The new `mut` parameter can be used to restrict an `UnsafePointer` to a - specific mutability: `UnsafePointer[T, mut=False]` represents a pointer to - an immutable `T` value. This is analogous to a `const *` pointer in C++. + - Added + [`StringSlice.chars()`](/mojo/stdlib/collections/string/string_slice/StringSlice/#chars) + which returns an iterator over `Char`s. This is a compliant UTF-8 decoder + that returns each Unicode codepoint encoded in the string. - - `UnsafePointer.address_of()` will now infer the origin and mutability - of the resulting pointer from the argument. For example: + - Added + [`StringSlice.__getitem__(Slice)`](/mojo/stdlib/collections/string/string_slice/StringSlice/#__getitem__) + which returns a substring. Only step sizes of 1 are supported. + + - Several standard library functions have been changed to take `StringSlice` + instead of `String`. This generalizes them to be used for any appropriately + encoded string in memory, without requiring that the string be heap + allocated. This includes: + [`ascii()`](/mojo/stdlib/collections/string/string/ascii), + [`atol()`](/mojo/stdlib/collections/string/string/atol), + [`atof()`](/mojo/stdlib/collections/string/string/atof), + [`b16decode()`](/mojo/stdlib/base64/base64/b16decode), + [`b16encode()`](/mojo/stdlib/base64/base64/b16encode), + [`b64decode()`](/mojo/stdlib/base64/base64/b64decode), + [`b64encode()`](/mojo/stdlib/base64/base64/b64encode), and + [`ord()`](/mojo/stdlib/collections/string/string/ord). + + - Added new + [`String.chars()`](/mojo/stdlib/collections/string/string/String/#chars) and + [`String.char_slices()`](/mojo/stdlib/collections/string/string/String/#char_slices) + iterator methods, and deprecated the existing `String.__iter__()` method. + + Different use-cases may prefer iterating over the `Char`s encoded in a + string, or iterating over subslices containing single characters. Neither + iteration semantics is an obvious default, so the existing `__iter__()` + method has been deprecated in favor of writing explicit iteration methods + for the time being. + + Code of the form: ```mojo - var local = 10 - # Constructs a mutable pointer, because `local` is a mutable memory location - var ptr = UnsafePointer.address_of(local) + var s: String = ... + for c in s: + # ... ``` - To force the construction of an immutable pointer to an otherwise mutable - memory location, use a cast: + can be migrated to using the `.char_slices()` method: ```mojo - var local = 10 - # Cast the mutable pointer to be immutable. - var ptr = UnsafePointer.address_of(local).origin_cast[mut=False]() + var s: String = ... + for c in s.char_slices(): + # ... ``` - - The `unsafe_ptr()` method on several standard library collection types have - been updated to use parametric mutability: they will return an `UnsafePointer` - whose mutability is inherited from the mutability of the `ref self` of the - receiver at the call site. For example, `ptr1` will be immutable, while - `ptr2` will be mutable: + - Added + [`StringSlice.char_length()`](/mojo/stdlib/collections/string/string_slice/StringSlice/#char_length) + method, to pair with the existing + [`StringSlice.byte_length()`](/mojo/stdlib/collections/string/string_slice/StringSlice/#byte_length) + method. - ```mojo - fn take_lists(read list1: List[Int], mut list2: List[Int]): - # Immutable pointer, since receiver is immutable `read` reference - var ptr1 = list1.unsafe_ptr() + - The + [`String.__len__()`](/mojo/stdlib/collections/string/string/String/#__len__) + and + [`StringSlice.__len__()`](/mojo/stdlib/collections/string/string_slice/StringSlice/#__len__) + methods now return the length of the string in bytes. - # Mutable pointer, since receiver is mutable `mut` reference - var ptr2 = list2.unsafe_ptr() - ``` + Previously, these methods were documented to note that they would eventually + return a length in Unicode codepoints. They have been changed to guarantee + a length in bytes, since the length in bytes is how they are most often used + today (for example, as bounds to low-level memory manipulation logic). + Additionally, length in codepoints is a more specialized notion of string + length that is rarely the correct metric. -- Added `Optional.copied()` for constructing an owned `Optional[T]` from an - `Optional[Pointer[T]]` by copying the pointee value. + Users that know they need the length in codepoints can use the + `str.char_length()` method, or `len(str.chars())`. -- Added `Dict.get_ptr()` which returns an `Optional[Pointer[V]]`. If the given - key is present in the dictionary, the optional will hold a pointer to the - value. Otherwise, an empty optional is returned. + - `StringSlice` now implements + [`Representable`](/mojo/stdlib/builtin/repr/Representable/), and that + implementation is now used by `String.__repr__()` and + `StringLiteral.__repr__()`. -- Added new `List.extend()` overloads taking `SIMD` and `Span`. These enable - growing a `List[Scalar[..]]` by copying the elements of a `SIMD` vector or - `Span[Scalar[..]]`, simplifying the writing of some optimized SIMD-aware - functionality. + - `StringSlice` now implements + [`EqualityComparable`](/mojo/stdlib/builtin/equality_comparable/EqualityComparable/). -- Added `Char`, for representing and storing single Unicode characters. - - `Char` implements `CollectionElement`, `EqualityComparable`, `Intable`, and - `Stringable`. - - Added `String` constructor from `Char` - - `Char` can be converted to `UInt32` via `Char.to_u32()`. - - `Char` provides methods for categorizing character types, including: - `Char.is_ascii()`, `Char.is_posix_space()`, `Char.is_python_space()`, - `Char.is_ascii_digit()`, `Char.is_ascii_upper()`, `Char.is_ascii_lower()`, - `Char.is_ascii_printable()`. + Up until now, `StringSlice` has implemented a more general `__eq__()` and + `__ne__()` comparison with `StringSlice` types that had arbitrary other + origins. However, to satisfy `EqualityComparable`, `StringSlice` now also + has narrower comparison methods that support comparing only with another + `StringSlice` with the exact same origin. -- `chr(Int)` will now abort if given a codepoint value that is not a valid - `Char`. + - The `String.write()` static method has moved to a `String()` constructor, + and is now buffered. Instead of doing: -- Added `StringSlice.from_utf()` factor method, for validated construction of - a `StringSlice` from a buffer containing UTF-8 encoded data. This method will - raise if the buffer contents are not valid UTF-8. + ```mojo + var msg = "my message " + String(x) + " " + String(y) + " " + String(z) + ``` -- Added `StringSlice.chars()` which returns an iterator over `Char`s. This is a - compliant UTF-8 decoder that returns each Unicode codepoint encoded in the - string. + Which reallocates the `String` you should do: -- Added `StringSlice.__getitem__(Slice)` which returns a substring. - Only step sizes of 1 are supported. + ```mojo + var msg = String("my message", x, y, z, sep=" ") + ``` -- Several standard library functions have been changed to take `StringSlice` - instead of `String`. This generalizes them to be used for any appropriately - encoded string in memory, without requiring that the string be heap allocated. + Which is cleaner, and buffers to the stack so the `String` is allocated only + once. - - `atol()` - - `atof()` - - `ord()` - - `ascii()` - - `b64encode()` - - Additionally, the `b64encode()` overload that previously took `List` has - been changed to - take a `Span`. - - `b64decode()` - - `b16encode()` - - `b16decode()` + - You can now pass any [`Writer`](/mojo/stdlib/utils/write/Writer/) to + [`write_buffered()`](/mojo/stdlib/utils/write/write_buffered/): -- Added new `String.chars()` and `String.char_slices()` iterator methods, and - deprecated the existing `String.__iter__()` method. + ```mojo + from utils.write import write_buffered - Different use-cases may prefer iterating over the `Char`s encoded in a string, - or iterating over subslices containing single characters. Neither iteration - semantics is an obvious default, so the existing `__iter__()` method has been - deprecated in favor of writing explicit iteration methods for the time being. + var string = String("existing string") + write_buffered(string, 42, 42.4, True, sep=" ") + ``` - Code of the form: + This writes to a buffer on the stack before reallocating the `String`. - ```mojo - var s: String = ... - for c in s: - # ... - ``` +- Collections: - can be migrated to using the `.char_slices()` method: + - A new [`LinkedList`](/mojo/stdlib/collections/linked_list/LinkedList/) type + has been added to the standard library. - ```mojo - var s: String = ... - for c in s.char_slices(): - # ... - ``` + - Added [`Optional.copied()`](/mojo/stdlib/collections/optional/Optional#copied) + for constructing an owned `Optional[T]` from an `Optional[Pointer[T]]` by + copying the pointee value. -- The `String.__len__()` and `StringSlice.__len__()` methods now return the - length of the string in bytes. + - Added [`Dict.get_ptr()`](/mojo/stdlib/collections/dict/Dict#get_ptr) which + returns an `Optional[Pointer[V]]`. If the given key is present in the + dictionary, the optional will hold a pointer to the value. Otherwise, an + empty optional is returned. - Previously, these methods were documented to note that they would eventually - return a length in Unicode codepoints. They have been changed to guarantee - a length in bytes, since the length in bytes is how they are most often used - today (for example, as bounds to low-level memory manipulation logic). - Additionally, length in codepoints is a more specialized notion of string - length that is rarely the correct metric. + - Added new [`List.extend()`](/mojo/stdlib/collections/list/List#extend) + overloads taking [`SIMD`](/mojo/stdlib/builtin/simd/SIMD) and + [`Span`](/mojo/stdlib/memory/span/Span/). These enable growing a + `List[Scalar[..]]` by copying the elements of a `SIMD` vector or + `Span[Scalar[..]]`, simplifying the writing of some optimized SIMD-aware + functionality. - Users that know they need the length in codepoints can use the - `str.char_length()` method, or `len(str.chars())`. +- [`UnsafePointer`](/mojo/stdlib/memory/unsafe_pointer/UnsafePointer/) changes: -- Various functionality has moved from `String` and `StringRef` to the more - general `StringSlice` type. + - `UnsafePointer`'s `bitcast()` method has now been split into + [`bitcast()`](/mojo/stdlib/memory/unsafe_pointer/UnsafePointer#bitcast) for + changing the type, + [`origin_cast()`](/mojo/stdlib/memory/unsafe_pointer/UnsafePointer#origin_cast) + for changing mutability, + [`static_alignment_cast()`](/mojo/stdlib/memory/unsafe_pointer/UnsafePointer#static_alignment_cast) + for changing alignment, and + [`address_space_cast()`](/mojo/stdlib/memory/unsafe_pointer/UnsafePointer#address_space_cast) + for changing the address space. - - `StringSlice` now implements `Representable`, and that implementation is now - used by `String.__repr__()` and `StringRef.__repr__()`. + - `UnsafePointer` is now parameterized on mutability. Previously, + `UnsafePointer` could only represent mutable pointers. -- `StringSlice` now implements `EqualityComparable`. + The new `mut` parameter can be used to restrict an `UnsafePointer` to a + specific mutability: `UnsafePointer[T, mut=False]` represents a pointer to + an immutable `T` value. This is analogous to a `const *` pointer in C++. - Up until now, `StringSlice` has implemented a more general `__eq__` and - `__ne__` comparision with `StringSlice` types that had arbitrary other - origins. However, to satisfy `EqualityComparable`, `StringSlice` now also - has narrower comparison methods that support comparing only with - `StringSlice`'s with the exact same origin. + - [`UnsafePointer.address_of()`](/mojo/stdlib/memory/unsafe_pointer/UnsafePointer#address_of) + will now infer the origin and mutability of the resulting pointer from the + argument. For example: -- Added `StringSlice.char_length()` method, to pair with the existing - `StringSlice.byte_length()` method. + ```mojo + var local = 10 + # Constructs a mutable pointer, because `local` is a mutable memory location + var ptr = UnsafePointer.address_of(local) + ``` - In a future version of Mojo, `StringSlice.__len__()` may be changed to return - the length in bytes, matching the convention of string length methods in - languages like C++ and Rust. Callers that know they need the length in - Unicode codepoints should update to calling `StringSlice.char_length()` - instead. + To force the construction of an immutable pointer to an otherwise mutable + memory location, use a cast: -- Removed `@implicit` decorator from some standard library initializer methods - that perform allocation. This reduces places where Mojo code could implicitly - allocate where the user may not be aware. + ```mojo + var local = 10 + # Cast the mutable pointer to be immutable. + var ptr = UnsafePointer.address_of(local).origin_cast[mut=False]() + ``` - Remove `@implicit` from: + - The `unsafe_ptr()` method on several standard library collection types have + been updated to use parametric mutability: they will return an + `UnsafePointer` whose mutability is inherited from the mutability of the + `ref self` of the receiver at the call site. For example, `ptr1` will be + immutable, while `ptr2` will be mutable: - - `String.__init__(out self, StringRef)` - - `String.__init__(out self, StringSlice)` - - `List.__init__(out self, owned *values: T)` - - `List.__init__(out self, span: Span[T])` + ```mojo + fn take_lists(read list1: List[Int], mut list2: List[Int]): + # Immutable pointer, since receiver is immutable `read` reference + var ptr1 = list1.unsafe_ptr() -- The `ExplicitlyCopyable` trait has changed to require a - `fn copy(self) -> Self` method. Previously, an initializer with the signature - `fn __init__(out self, *, other: Self)` had been required by - `ExplicitlyCopyable`. + # Mutable pointer, since receiver is mutable `mut` reference + var ptr2 = list2.unsafe_ptr() + ``` - This improves the "greppability" and at-a-glance readability when a programmer - is looking for places in their code that may be performing copies +- New and updated traits: -- `bit_ceil` has been renamed to `next_power_of_two`, and `bit_floor` to - `prev_power_of_two`. This is to improve readability and clarity in their use. + - The [`ExplicitlyCopyable`](/mojo/stdlib/builtin/value/ExplicitlyCopyable/) + trait has changed to require a `fn copy(self) -> Self` method. Previously, + an initializer with the signature `fn __init__(out self, *, other: Self)` + had been required by `ExplicitlyCopyable`. -- The `Indexer` and `IntLike` traits which were previously both used for - indexing have been combined. This enables SIMD scalar integer types and UInt - to be used for indexing into all of the collection types, as well as - optimizing away normalization checks for UInt indexing. + This improves the "greppability" and at-a-glance readability when a + programmer is looking for places in their code that may be performing + copies. -- The `ImplicitlyIntable` trait has been added, allowing types to be implicitly - converted to an `Int` by implementing the `__as_int__` method: + - The `IntLike` trait has been removed and its functionality incorporated into + the [`Indexer`](/mojo/stdlib/builtin/int/Indexer/) trait. This enables + `SIMD` scalar integer types and `UInt` to be used for indexing into all of + the collection types, as well as optimizing away normalization checks for + `UInt` indexing. - ```mojo - @value - struct Foo(ImplicitlyIntable): - var i: Int + - The [`ImplicitlyIntable`](/mojo/stdlib/builtin/int/ImplicitlyIntable/) trait + has been added, allowing types to be implicitly converted to an `Int` by + implementing the `__as_int__()` method: - fn __as_int__(self) -> Int: - return self.i - ``` + ```mojo + @value + struct Foo(ImplicitlyIntable): + var i: Int -- You can now cast SIMD types using constructors: + fn __as_int__(self) -> Int: + return self.i + ``` + +- You can now cast `SIMD` types using constructors: ```mojo var val = Int8(42) @@ -337,82 +475,95 @@ in [Update a package](/magic#update-a-package) to update the `max` package. var vector = SIMD[DType.int64, 4](cast) # [42, 42, 42, 42] ``` - For values other than scalars the size of the SIMD vector needs to be equal: + For values other than scalars the size of the `SIMD` vector needs to be equal: ```mojo var float_vector = SIMD[DType.float64, 4](vector) ``` - `SIMD.cast` still exists to infer the size of new vector: + [`SIMD.cast()`](/mojo/stdlib/builtin/simd/SIMD#cast) still exists to infer the + size of new vector: ```mojo var inferred_size = float_vector.cast[DType.uint64]() # [42, 42, 42, 42] ``` -- You can now use `max()` and `min()` with variadic number of arguments. - -- A new `LinkedList` type has been added to the standard library. - -- The `String.write` static method has moved to a `String` constructor, and - is now buffered. Instead of doing: +- Added [`SIMD.from_bytes()`](/mojo/stdlib/builtin/simd/SIMD/#from_bytes) and + [`SIMD.as_bytes()`](/mojo/stdlib/builtin/simd/SIMD/#as_bytes) to convert a + list of bytes to a list of scalars and vice versa, accepting the endianess as + an argument. Similar to Python `int.from_bytes()` and `int.to_bytes()` + functions. - ```mojo - var msg = "my message " + String(x) + " " + String(y) + " " + String(z) - ``` +- You can now use [`max()`](/mojo/stdlib/builtin/math/max) and + [`min()`](/mojo/stdlib/builtin/math/min) with variadic number of arguments. - Which reallocates the `String` you should do: +- `bit_ceil()` has been renamed to + [`next_power_of_two()`](/mojo/stdlib/bit/bit/next_power_of_two), and + `bit_floor()` to + [`prev_power_of_two()`](/mojo/stdlib/bit/bit/prev_power_of_two). This is to + improve readability and clarity in their use. - ```mojo - var msg = String("my message", x, y, z, sep=" ") - ``` +- Added a new boolean `validate` parameter to + [`b64decode()`](/mojo/stdlib/base64/base64/b64decode). - Which is cleaner, and buffers to the stack so the `String` is allocated only - once. +- The [`b64encode()`](/mojo/stdlib/base64/base64/b64encode) overload that + previously took a `List` has been changed to take a + [`Span`](/mojo/stdlib/memory/span/Span/). -- You can now pass any `Writer` to `write_buffered`: +- Removed the `@implicit` decorator from some standard library initializer + methods that perform allocation. This reduces places where Mojo code could + implicitly allocate where the user may not be aware. - ```mojo - from utils.write import write_buffered + Removed `@implicit` from: - var string = String("existing string") - write_buffered(string, 42, 42.4, True, sep=" ") - ``` + - `String.__init__(out self, StringSlice)` + - `List.__init__(out self, owned *values: T)` + - `List.__init__(out self, span: Span[T])` - This writes to a buffer on the stack before reallocating the `String`. +- Added more aliases in [`sys.ffi`](/mojo/stdlib/sys/ffi/) to round out the + usual needs for FFI bindings. -- The `__disable_del x` operation has been tightened up to treat all fields of - 'x' as consumed by the point of the del, so it should be used after all the - subfields are transferred or otherwise consumed (e.g. at the end of the - function) not before uses of the fields. +### Tooling changes {#25-1-tooling-changes} -### Tooling changes - -- mblack (aka `mojo format`) no longer formats non-mojo files. This prevents - unexpected formatting of python files. +- `mblack` (aka [`mojo format`](/mojo/cli/format)) no longer formats non-Mojo + files. This prevents unexpected formatting of Python files. - Full struct signature information is now exposed in the documentation generator, and in the symbol outline and hover markdown via the Mojo Language Server. -- The `env_get_dtype` function has been added to the `sys` module. This allows - you to get the value of a `DType` from the param environment. +- The [`env_get_dtype()`](/mojo/stdlib/sys/param_env/env_get_dtype) function has + been added to the [`sys.param_env`](/mojo/stdlib/sys/param_env/) module. This + allows you to get the value of a `DType` from the param environment. ### ❌ Removed -- `StringRef` is being deprecated. Use `StringSlice` instead. - - Changed `sys.argv()` to return list of `StringSlice`. - - Added `Path` explicit constructor from `StringSlice`. - - removed `StringRef.startswith()` and `StringRef.endswith()` - - removed `StringRef.strip()` +- `StringRef` has been removed. Use + [`StringSlice`](/mojo/stdlib/collections/string/string_slice/StringSlice/) + instead. + + - Changed [`sys.argv()`](/mojo/stdlib/sys/arg/argv) to return list of + `StringSlice`. + + - Added explicit [`Path()`](/mojo/stdlib/pathlib/path/Path/#__init__) + constructor from `StringSlice`. + - The `Tuple.get[i, T]()` method has been removed. Please use `tup[i]` or `rebind[T](tup[i])` as needed instead. -- `StringableCollectionElement` is deprecated, use `WritableCollectionElement` - instead which still allows you to construct a `String`, but can avoid - intermediary allocations. + +- `StringableCollectionElement` is deprecated. Use + [`WritableCollectionElement`](/mojo/stdlib/builtin/value/WritableCollectionElement/) + instead, which still allows you to construct a `String`, but can avoid + intermediate allocations. + +- The `IntLike` trait has been removed and its functionality incorporated into + the [`Indexer`](/mojo/stdlib/builtin/int/Indexer/) trait. + - The `Type{field1: 42, field2: 17}` syntax for direct initializing register - passable types has been removed. This was legacy syntax - to upgrade - your code, add the @value decorator to your struct to get a memberwise - initializer and use `Type(field1=42, field2 = 17)` instead. + passable types has been removed. This was legacy syntax - to upgrade your + code, add the [`@value`](/mojo/manual/decorators/value) decorator to your + struct to get a memberwise initializer and use `Type(field1=42, field2 = 17)` + instead. ### 🛠️ Fixed @@ -422,7 +573,7 @@ in [Update a package](/magic#update-a-package) to update the `max` package. properly. - [Issue #3796](https://github.com/modular/mojo/issues/3796) - Compiler crash - handling for-else statement. + handling `for`-`else` statement. - [Issue #3540](https://github.com/modular/mojo/issues/3540) - Using named output slot breaks trait conformance @@ -430,16 +581,17 @@ in [Update a package](/magic#update-a-package) to update the `max` package. - [Issue #3617](https://github.com/modular/mojo/issues/3617) - Can't generate the constructors for a type wrapping `!lit.ref` -- The Mojo Language Server doesn't crash anymore on empty **init**.mojo files. +- The Mojo Language Server doesn't crash anymore on empty `__init__.mojo` files. [Issue #3826](https://github.com/modular/mojo/issues/3826). - [Issue #3935](https://github.com/modular/mojo/issues/3935) - Confusing OOM - error when using Tuple.get incorrectly. + error when using `Tuple.get()` incorrectly. - [Issue #3955](https://github.com/modular/mojo/issues/3955) - Unexpected - copy behaviour with `def` arguments in loops + copy behavior with `def` arguments in loops -- [Issue #3960](https://github.com/modular/mojo/issues/3960) - Infinite for loop +- [Issue #3960](https://github.com/modular/mojo/issues/3960) - Infinite `for` + loop ## v24.6 (2024-12-17) @@ -478,7 +630,7 @@ detailed information in the following sections: [`Deque`](/mojo/stdlib/collections/deque/Deque) (a double-ended queue) and [`OwnedPointer`](/mojo/stdlib/memory/owned_pointer/OwnedPointer) (safe, single-owner, non-nullable smart pointer). See - [Standard library changes](#standard-library-changes-24-6-standard-library-changes) + [Standard library changes](#24-6-standard-library-changes) for details. - The VS Code extension now supports setting data breakpoints and function From 4e67c852b6c82858a8d5baedc68db9eb5f05797b Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Wed, 12 Feb 2025 20:04:38 -0800 Subject: [PATCH 384/509] [mojo-stdlib] Move `Int.mul` to `always_inline("builtin")`. This continues incremental adoption. MODULAR_ORIG_COMMIT_REV_ID: 9c7a911e1c3702a5c90e72952fb246fcb1617e74 --- stdlib/src/builtin/int.mojo | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/stdlib/src/builtin/int.mojo b/stdlib/src/builtin/int.mojo index 3e9061b95d..e36484b31e 100644 --- a/stdlib/src/builtin/int.mojo +++ b/stdlib/src/builtin/int.mojo @@ -613,7 +613,7 @@ struct Int( """ return __mlir_op.`index.sub`(self.value, rhs.value) - @always_inline("nodebug") + @always_inline("builtin") fn __mul__(self, rhs: Int) -> Int: """Return `self * rhs`. @@ -907,7 +907,7 @@ struct Int( # Reversed operations # ===-------------------------------------------------------------------===# - @always_inline("nodebug") + @always_inline("builtin") fn __radd__(self, value: Int) -> Int: """Return `value + self`. @@ -931,7 +931,7 @@ struct Int( """ return value - self - @always_inline("nodebug") + @always_inline("builtin") fn __rmul__(self, value: Int) -> Int: """Return `value * self`. From 4c85c369c7834ea3519464b5e0cde8276155b4f7 Mon Sep 17 00:00:00 2001 From: modularbot Date: Thu, 13 Feb 2025 07:05:09 +0000 Subject: [PATCH 385/509] Update lockfiles to point to latest nightly version: 25.2.0.dev2025021305 --- examples/life/magic.lock | 284 ++++++++++---------- examples/magic.lock | 284 ++++++++++---------- examples/operators/magic.lock | 480 +++++++++++++++++++--------------- examples/testing/magic.lock | 480 +++++++++++++++++++--------------- magic.lock | 284 ++++++++++---------- 5 files changed, 965 insertions(+), 847 deletions(-) diff --git a/examples/life/magic.lock b/examples/life/magic.lock index 67910e8562..6ae25926c6 100644 --- a/examples/life/magic.lock +++ b/examples/life/magic.lock @@ -91,11 +91,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.10.0-h5888daf_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025021205-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025021205-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025021205-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025021205-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025021205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021305-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025021305-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025021305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021305-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/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda @@ -184,9 +184,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libasprintf-0.23.1-h5e0f5ae_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libasprintf-devel-0.23.1-h5e0f5ae_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libavif16-1.1.1-h3b0c220_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-28_h1a9f1db_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-29_h1a9f1db_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcap-2.71-h51d75a7_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-28_hab92f65_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-29_hab92f65_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libdb-6.2.32-h01db608_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libdeflate-1.23-h5e3c512_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20250104-pl5321h976ea20_0.conda @@ -205,7 +205,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgpg-error-1.51-h05609ea_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libiconv-1.17-h31becfc_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libjpeg-turbo-3.0.0-h31becfc_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-28_h411afd4_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-29_h411afd4_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.4-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libmad-0.15.1b-hb4cce97_1001.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda @@ -229,11 +229,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.10.0-h5ad3122_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025021205-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025021205-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025021205-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025021205-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025021205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021305-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025021305-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025021305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021305-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/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-ha32ae93_3.conda @@ -314,8 +314,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libasprintf-0.23.1-h493aca8_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libasprintf-devel-0.23.1-h493aca8_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libavif16-1.1.1-h45b7238_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-28_h10e41b3_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-28_hb3479ef_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-29_h10e41b3_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-29_hb3479ef_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.23-hec38601_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda @@ -331,7 +331,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libintl-0.23.1-h493aca8_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libintl-devel-0.23.1-h493aca8_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.0.0-hb547adb_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-28_hc9a63f6_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-29_hc9a63f6_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.4-h39f12f2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libmad-0.15.1b-h1a8c8d9_1001.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libogg-1.3.5-h99b78c6_0.conda @@ -348,11 +348,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.5.0-h2471fea_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025021205-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025021205-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025021205-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025021205-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025021205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021305-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025021305-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025021305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021305-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/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda @@ -1548,42 +1548,40 @@ packages: license_family: BSD size: 16621 timestamp: 1738114033763 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-28_h1a9f1db_openblas.conda - build_number: 28 - sha256: a50dc7ed1f49789aab4ffb560d9a46b5dc3f059a925282f699c1a96fa566a1a0 - md5: 88dfbb3875d62b431aa676b4a54734bf +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-29_h1a9f1db_openblas.conda + build_number: 29 + sha256: 973d85867efe198eeda6d01c73258b3ffd2d1bd227c18b663fe6a1fab292e0f5 + md5: e98e99f1ceb36f52504bb122435756c5 depends: - libopenblas >=0.3.28,<0.3.29.0a0 - libopenblas >=0.3.28,<1.0a0 constrains: - - liblapack =3.9.0=28*_openblas - - libcblas =3.9.0=28*_openblas - - blas =2.128=openblas - - liblapacke =3.9.0=28*_openblas + - blas =2.129=openblas + - libcblas =3.9.0=29*_openblas + - liblapacke =3.9.0=29*_openblas + - liblapack =3.9.0=29*_openblas arch: aarch64 platform: linux license: BSD-3-Clause - license_family: BSD - size: 16697 - timestamp: 1738114082682 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-28_h10e41b3_openblas.conda - build_number: 28 - sha256: 5bea855a1a7435ce2238535aa4b13db8af8ee301d99a42b083b63fa64c1ea144 - md5: 166166d84a0e9571dc50210baf993b46 + size: 16884 + timestamp: 1739426012764 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-29_h10e41b3_openblas.conda + build_number: 29 + sha256: a966b39403203dfe122e2eefe9f3a04b353dc7c2fa76703f0d78fddc4e849704 + md5: 6ebbed2244408eca4f7569b532f813bd depends: - libopenblas >=0.3.28,<0.3.29.0a0 - libopenblas >=0.3.28,<1.0a0 constrains: - - liblapack =3.9.0=28*_openblas - - liblapacke =3.9.0=28*_openblas - - blas =2.128=openblas - - libcblas =3.9.0=28*_openblas + - liblapacke =3.9.0=29*_openblas + - libcblas =3.9.0=29*_openblas + - blas =2.129=openblas + - liblapack =3.9.0=29*_openblas arch: arm64 platform: osx license: BSD-3-Clause - license_family: BSD - size: 16840 - timestamp: 1738114389937 + size: 17046 + timestamp: 1739426231872 - conda: https://conda.anaconda.org/conda-forge/linux-64/libcap-2.71-h39aace5_0.conda sha256: 2bbefac94f4ab8ff7c64dc843238b6c8edcc9ff1f2b5a0a48407a904dc7ccfb2 md5: dd19e4e3043f6948bd7454b946ee0983 @@ -1625,38 +1623,36 @@ packages: license_family: BSD size: 16539 timestamp: 1738114043618 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-28_hab92f65_openblas.conda - build_number: 28 - sha256: ed62f13a85726f568e17ad569b5cc01a49a6c7bd334802cf1c1b15e9d10e7e93 - md5: 8cff453f547365131be5647c7680ac6d +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-29_hab92f65_openblas.conda + build_number: 29 + sha256: a7ecf68634582e8291a3ce76836394a87c38e684255b2c1514dec0aeddcb2004 + md5: 8dd4788ae5e492c771c5b51661ac9102 depends: - - libblas 3.9.0 28_h1a9f1db_openblas + - libblas 3.9.0 29_h1a9f1db_openblas constrains: - - liblapack =3.9.0=28*_openblas - - blas =2.128=openblas - - liblapacke =3.9.0=28*_openblas + - blas =2.129=openblas + - liblapacke =3.9.0=29*_openblas + - liblapack =3.9.0=29*_openblas arch: aarch64 platform: linux license: BSD-3-Clause - license_family: BSD - size: 16655 - timestamp: 1738114088527 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-28_hb3479ef_openblas.conda - build_number: 28 - sha256: f08adea59381babb3568e6d23e52aff874cbc25f299821647ab1127d1e1332ca - md5: 30942dea911ce333765003a8adec4e8a - depends: - - libblas 3.9.0 28_h10e41b3_openblas + size: 16837 + timestamp: 1739426020271 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-29_hb3479ef_openblas.conda + build_number: 29 + sha256: 5fb812ca6b194a0d4ea6c780fba9afab87f7da7b8c4558cfe2954e27bb07a4a9 + md5: cc30b97c4a6bc1984781bf147daa015b + depends: + - libblas 3.9.0 29_h10e41b3_openblas constrains: - - blas =2.128=openblas - - liblapacke =3.9.0=28*_openblas - - liblapack =3.9.0=28*_openblas + - liblapack =3.9.0=29*_openblas + - blas =2.129=openblas + - liblapacke =3.9.0=29*_openblas arch: arm64 platform: osx license: BSD-3-Clause - license_family: BSD - size: 16788 - timestamp: 1738114399962 + size: 16983 + timestamp: 1739426238799 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda sha256: 776092346da87a2a23502e14d91eb0c32699c4a1522b7331537bd1c3751dcff5 md5: 5b3e1610ff8bd5443476b91d618f5b77 @@ -2303,38 +2299,36 @@ packages: license_family: BSD size: 16553 timestamp: 1738114053556 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-28_h411afd4_openblas.conda - build_number: 28 - sha256: 1290ce1071a586e22bdd7d8f4c48000cc0005f0a67660be150d1ea5c6092129f - md5: bc4c5ee31476521e202356b56bba6077 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-29_h411afd4_openblas.conda + build_number: 29 + sha256: d7aa87be996cc89516b2ae2430317fe7401c66eaf739bf13833b6cc137c2511a + md5: 131b70f675e6c9a808c5c601bfdb8300 depends: - - libblas 3.9.0 28_h1a9f1db_openblas + - libblas 3.9.0 29_h1a9f1db_openblas constrains: - - liblapacke =3.9.0=28*_openblas - - libcblas =3.9.0=28*_openblas - - blas =2.128=openblas + - blas =2.129=openblas + - libcblas =3.9.0=29*_openblas + - liblapacke =3.9.0=29*_openblas arch: aarch64 platform: linux license: BSD-3-Clause - license_family: BSD - size: 16637 - timestamp: 1738114094310 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-28_hc9a63f6_openblas.conda - build_number: 28 - sha256: 79c75a02bff20f8b001e6aecfee8d22a51552c3986e7037fca68e5ed071cc213 - md5: 45f26652530b558c21083ceb7adaf273 - depends: - - libblas 3.9.0 28_h10e41b3_openblas + size: 16836 + timestamp: 1739426027617 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-29_hc9a63f6_openblas.conda + build_number: 29 + sha256: de23734b43bd3d788d87db223605961129df3f464f0fafabfb3bd9265766472f + md5: 523116f84153f74aa9541278faff40d8 + depends: + - libblas 3.9.0 29_h10e41b3_openblas constrains: - - blas =2.128=openblas - - liblapacke =3.9.0=28*_openblas - - libcblas =3.9.0=28*_openblas + - libcblas =3.9.0=29*_openblas + - blas =2.129=openblas + - liblapacke =3.9.0=29*_openblas arch: arm64 platform: osx license: BSD-3-Clause - license_family: BSD - size: 16793 - timestamp: 1738114407021 + size: 16988 + timestamp: 1739426245773 - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda sha256: cad52e10319ca4585bc37f0bc7cce99ec7c15dc9168e42ccb96b741b0a27db3f md5: 42d5b6a0f30d3c10cd88cb8584fda1cb @@ -3130,48 +3124,48 @@ packages: license_family: BSD size: 184953 timestamp: 1733740984533 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025021205-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021305-release.conda noarch: python - sha256: 0f0d002c8cdab4a1372af2efec963962a64dea766feafc61e423f9473a69c6d9 - md5: 888189cdefda2c9f32a7689616efebb0 + sha256: dffbba1853528866c2da6490f72d4bfa8a9745d8e17b49e78f23c48cd93da33f + md5: 16bf91203625a15123fec56de824ef43 depends: - - max-core ==25.1.0.dev2025021205 release - - max-python ==25.1.0.dev2025021205 release - - mojo-jupyter ==25.1.0.dev2025021205 release - - mblack ==25.1.0.dev2025021205 release + - max-core ==25.2.0.dev2025021305 release + - max-python ==25.2.0.dev2025021305 release + - mojo-jupyter ==25.2.0.dev2025021305 release + - mblack ==25.2.0.dev2025021305 release license: LicenseRef-Modular-Proprietary - size: 9901 - timestamp: 1739337393161 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025021205-release.conda - sha256: b1ce1440be41e8c05b7074c036b4893e6d71260563e30db507806260aa5847f1 - md5: a7796d647f173885be3fc7b1e60b5c51 + size: 9904 + timestamp: 1739423790392 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025021305-release.conda + sha256: 4742604a258b6577a37c90448057c82c273165bd5454951fca34da3c9b1f2f11 + md5: b00e4bf8cb005535b57542211c611111 depends: - - mblack ==25.1.0.dev2025021205 release + - mblack ==25.2.0.dev2025021305 release license: LicenseRef-Modular-Proprietary - size: 242209420 - timestamp: 1739337393161 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025021205-release.conda - sha256: 6c79c2cb13ef5a5a5c965c93100f98dc5ebb77ae94aa099792df4bd31d0c5532 - md5: 2b02a732e3300cb50acc69e6d6c96718 + size: 241873167 + timestamp: 1739423820390 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025021305-release.conda + sha256: 7c3de8d0a1e58de20f754e28c1f1e5991d9aefd2f8254c39ba330d0d973d7da4 + md5: 6299597e8c37878d614a86969076b38e depends: - - mblack ==25.1.0.dev2025021205 release + - mblack ==25.2.0.dev2025021305 release license: LicenseRef-Modular-Proprietary - size: 244584198 - timestamp: 1739337423031 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025021205-release.conda - sha256: bbf7524e593fb9a292c7d62a7500c37476fef2535f1287c7e80367dfaea52a67 - md5: e3f8d90a22e6f25bd8692604b68da59a + size: 244728628 + timestamp: 1739423790392 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025021305-release.conda + sha256: b70444b426b3c2f57fe86750f10e66488d85901b209bd441f1c2bc477632b42c + md5: 65801c3dd993bb2571e4dedeeeac02fd depends: - - mblack ==25.1.0.dev2025021205 release + - mblack ==25.2.0.dev2025021305 release license: LicenseRef-Modular-Proprietary - size: 210628549 - timestamp: 1739340679038 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025021205-release.conda + size: 210546686 + timestamp: 1739425396471 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025021305-release.conda noarch: python - sha256: a99550dd334581d902a29efdb7b06065ac37280e37da1bdb1ec855b898e49d9b - md5: dd2f074682bffd7d6ba8582b0fce4216 + sha256: c3b86bb4bddcbbcc77a9610254afaf8d227e70642c1b08cb7de802c3cc5ad3c8 + md5: b1e07ee08343db2c8c1d516255c57fcf depends: - - max-core ==25.1.0.dev2025021205 release + - max-core ==25.2.0.dev2025021305 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -3209,14 +3203,14 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 119465869 - timestamp: 1739337393161 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025021205-release.conda + size: 119314941 + timestamp: 1739423820390 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025021305-release.conda noarch: python - sha256: cf9aad9f335d5d299c9f42a4fb018f68c4c33d597226f8d231760bf4323ab0b9 - md5: 8731c1dce1f66eba34cad6f88a0225b0 + sha256: d815f33b32f711f458bad38121565177442c179661867d78438fb17804aae90d + md5: 1558cef0a9e44c5acb7fbce7bf9c795c depends: - - max-core ==25.1.0.dev2025021205 release + - max-core ==25.2.0.dev2025021305 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -3254,14 +3248,14 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 122015180 - timestamp: 1739337423032 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025021205-release.conda + size: 121952822 + timestamp: 1739423790392 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025021305-release.conda noarch: python - sha256: d4563422dc7bfa44455ca0a02811a796e988b69b38bb7e2bf45dbf04879fb5a2 - md5: 9b3a27350d0c511e97402e82851d3362 + sha256: 08e38e400944c081c50ba56171996c30d62bd2d442ec609e7daf56267f00505b + md5: 1e44e9b925b424bf63a0f6f714b14a49 depends: - - max-core ==25.1.0.dev2025021205 release + - max-core ==25.2.0.dev2025021305 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -3299,12 +3293,12 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 108963046 - timestamp: 1739340679038 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025021205-release.conda + size: 108859238 + timestamp: 1739425396471 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021305-release.conda noarch: python - sha256: 5e061de1184ad0c56f7982439f364ade5d949e5058f651f5a16e80e4eb6b8baa - md5: 0d91022c7d5e360c63d2995a0de93fbf + sha256: 90fe9cd59bc694690f5a018f1b78a6c3dda2e42a57bd7570b5b7b336e5841ec3 + md5: 2039853d26c773ce8fecf08626ca7d05 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -3315,20 +3309,20 @@ packages: - typing_extensions >=v4.12.2 - python license: MIT - size: 130849 - timestamp: 1739337393161 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025021205-release.conda + size: 130858 + timestamp: 1739423790392 +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021305-release.conda noarch: python - sha256: 19512946c05eba6b19b63370c5957c046a4829bc9a68c9b77857e638167efa17 - md5: fa9e0b88bbfe857210f734de295d0383 + sha256: 577a281a7b22e97ddb4a9bf8db40293c627fb5e4a07505de67e8eadea5e64d52 + md5: f3e2af71e3f2641375d1814609a358c7 depends: - - max-core ==25.1.0.dev2025021205 release + - max-core ==25.2.0.dev2025021305 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22980 - timestamp: 1739337393161 + size: 22993 + timestamp: 1739423790392 - conda: https://conda.anaconda.org/conda-forge/linux-64/mpg123-1.32.9-hc50e24c_0.conda sha256: 39c4700fb3fbe403a77d8cc27352fa72ba744db487559d5d44bf8411bb4ea200 md5: c7f302fd11eeb0987a6a5e1f3aed6a21 diff --git a/examples/magic.lock b/examples/magic.lock index 05670013c1..4816a0d3d2 100644 --- a/examples/magic.lock +++ b/examples/magic.lock @@ -42,11 +42,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025021205-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025021205-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025021205-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025021205-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025021205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021305-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025021305-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025021305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021305-release.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-h2d0b736_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py311h64a7726_0.conda @@ -84,8 +84,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/krb5-1.21.3-h50a48e9_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h18dbdb1_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-28_h1a9f1db_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-28_hab92f65_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-29_h1a9f1db_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-29_hab92f65_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20250104-pl5321h976ea20_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.6.4-h5ad3122_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.4.6-he21f813_0.conda @@ -94,7 +94,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-28_h411afd4_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-29_h411afd4_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.4-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.28-pthreads_h9d3fd7e_1.conda @@ -107,11 +107,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025021205-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025021205-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025021205-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025021205-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025021205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021305-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025021305-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025021305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021305-release.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-ha32ae93_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py311h69ead2a_0.conda @@ -146,15 +146,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_h07bc746_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-28_h10e41b3_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-28_hb3479ef_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-29_h10e41b3_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-29_hb3479ef_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.4-h286801f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-28_hc9a63f6_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-29_hc9a63f6_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.4-h39f12f2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.28-openmp_hf332438_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.3-h3bd63a1_1.conda @@ -163,11 +163,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.48.0-h3f77e49_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025021205-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025021205-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025021205-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025021205-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025021205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021305-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025021305-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025021305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021305-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py311h7125741_0.conda @@ -499,42 +499,40 @@ packages: license_family: BSD size: 16621 timestamp: 1738114033763 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-28_h1a9f1db_openblas.conda - build_number: 28 - sha256: a50dc7ed1f49789aab4ffb560d9a46b5dc3f059a925282f699c1a96fa566a1a0 - md5: 88dfbb3875d62b431aa676b4a54734bf +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-29_h1a9f1db_openblas.conda + build_number: 29 + sha256: 973d85867efe198eeda6d01c73258b3ffd2d1bd227c18b663fe6a1fab292e0f5 + md5: e98e99f1ceb36f52504bb122435756c5 depends: - libopenblas >=0.3.28,<0.3.29.0a0 - libopenblas >=0.3.28,<1.0a0 constrains: - - liblapack =3.9.0=28*_openblas - - libcblas =3.9.0=28*_openblas - - blas =2.128=openblas - - liblapacke =3.9.0=28*_openblas + - blas =2.129=openblas + - libcblas =3.9.0=29*_openblas + - liblapacke =3.9.0=29*_openblas + - liblapack =3.9.0=29*_openblas arch: aarch64 platform: linux license: BSD-3-Clause - license_family: BSD - size: 16697 - timestamp: 1738114082682 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-28_h10e41b3_openblas.conda - build_number: 28 - sha256: 5bea855a1a7435ce2238535aa4b13db8af8ee301d99a42b083b63fa64c1ea144 - md5: 166166d84a0e9571dc50210baf993b46 + size: 16884 + timestamp: 1739426012764 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-29_h10e41b3_openblas.conda + build_number: 29 + sha256: a966b39403203dfe122e2eefe9f3a04b353dc7c2fa76703f0d78fddc4e849704 + md5: 6ebbed2244408eca4f7569b532f813bd depends: - libopenblas >=0.3.28,<0.3.29.0a0 - libopenblas >=0.3.28,<1.0a0 constrains: - - liblapack =3.9.0=28*_openblas - - liblapacke =3.9.0=28*_openblas - - blas =2.128=openblas - - libcblas =3.9.0=28*_openblas + - liblapacke =3.9.0=29*_openblas + - libcblas =3.9.0=29*_openblas + - blas =2.129=openblas + - liblapack =3.9.0=29*_openblas arch: arm64 platform: osx license: BSD-3-Clause - license_family: BSD - size: 16840 - timestamp: 1738114389937 + size: 17046 + timestamp: 1739426231872 - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-28_he106b2a_openblas.conda build_number: 28 sha256: de293e117db53e5d78b579136509c35a5e4ad11529c05f9af83cf89be4d30de1 @@ -551,38 +549,36 @@ packages: license_family: BSD size: 16539 timestamp: 1738114043618 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-28_hab92f65_openblas.conda - build_number: 28 - sha256: ed62f13a85726f568e17ad569b5cc01a49a6c7bd334802cf1c1b15e9d10e7e93 - md5: 8cff453f547365131be5647c7680ac6d +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-29_hab92f65_openblas.conda + build_number: 29 + sha256: a7ecf68634582e8291a3ce76836394a87c38e684255b2c1514dec0aeddcb2004 + md5: 8dd4788ae5e492c771c5b51661ac9102 depends: - - libblas 3.9.0 28_h1a9f1db_openblas + - libblas 3.9.0 29_h1a9f1db_openblas constrains: - - liblapack =3.9.0=28*_openblas - - blas =2.128=openblas - - liblapacke =3.9.0=28*_openblas + - blas =2.129=openblas + - liblapacke =3.9.0=29*_openblas + - liblapack =3.9.0=29*_openblas arch: aarch64 platform: linux license: BSD-3-Clause - license_family: BSD - size: 16655 - timestamp: 1738114088527 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-28_hb3479ef_openblas.conda - build_number: 28 - sha256: f08adea59381babb3568e6d23e52aff874cbc25f299821647ab1127d1e1332ca - md5: 30942dea911ce333765003a8adec4e8a - depends: - - libblas 3.9.0 28_h10e41b3_openblas + size: 16837 + timestamp: 1739426020271 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-29_hb3479ef_openblas.conda + build_number: 29 + sha256: 5fb812ca6b194a0d4ea6c780fba9afab87f7da7b8c4558cfe2954e27bb07a4a9 + md5: cc30b97c4a6bc1984781bf147daa015b + depends: + - libblas 3.9.0 29_h10e41b3_openblas constrains: - - blas =2.128=openblas - - liblapacke =3.9.0=28*_openblas - - liblapack =3.9.0=28*_openblas + - liblapack =3.9.0=29*_openblas + - blas =2.129=openblas + - liblapacke =3.9.0=29*_openblas arch: arm64 platform: osx license: BSD-3-Clause - license_family: BSD - size: 16788 - timestamp: 1738114399962 + size: 16983 + timestamp: 1739426238799 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda sha256: 776092346da87a2a23502e14d91eb0c32699c4a1522b7331537bd1c3751dcff5 md5: 5b3e1610ff8bd5443476b91d618f5b77 @@ -869,38 +865,36 @@ packages: license_family: BSD size: 16553 timestamp: 1738114053556 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-28_h411afd4_openblas.conda - build_number: 28 - sha256: 1290ce1071a586e22bdd7d8f4c48000cc0005f0a67660be150d1ea5c6092129f - md5: bc4c5ee31476521e202356b56bba6077 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-29_h411afd4_openblas.conda + build_number: 29 + sha256: d7aa87be996cc89516b2ae2430317fe7401c66eaf739bf13833b6cc137c2511a + md5: 131b70f675e6c9a808c5c601bfdb8300 depends: - - libblas 3.9.0 28_h1a9f1db_openblas + - libblas 3.9.0 29_h1a9f1db_openblas constrains: - - liblapacke =3.9.0=28*_openblas - - libcblas =3.9.0=28*_openblas - - blas =2.128=openblas + - blas =2.129=openblas + - libcblas =3.9.0=29*_openblas + - liblapacke =3.9.0=29*_openblas arch: aarch64 platform: linux license: BSD-3-Clause - license_family: BSD - size: 16637 - timestamp: 1738114094310 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-28_hc9a63f6_openblas.conda - build_number: 28 - sha256: 79c75a02bff20f8b001e6aecfee8d22a51552c3986e7037fca68e5ed071cc213 - md5: 45f26652530b558c21083ceb7adaf273 - depends: - - libblas 3.9.0 28_h10e41b3_openblas + size: 16836 + timestamp: 1739426027617 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-29_hc9a63f6_openblas.conda + build_number: 29 + sha256: de23734b43bd3d788d87db223605961129df3f464f0fafabfb3bd9265766472f + md5: 523116f84153f74aa9541278faff40d8 + depends: + - libblas 3.9.0 29_h10e41b3_openblas constrains: - - blas =2.128=openblas - - liblapacke =3.9.0=28*_openblas - - libcblas =3.9.0=28*_openblas + - libcblas =3.9.0=29*_openblas + - blas =2.129=openblas + - liblapacke =3.9.0=29*_openblas arch: arm64 platform: osx license: BSD-3-Clause - license_family: BSD - size: 16793 - timestamp: 1738114407021 + size: 16988 + timestamp: 1739426245773 - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda sha256: cad52e10319ca4585bc37f0bc7cce99ec7c15dc9168e42ccb96b741b0a27db3f md5: 42d5b6a0f30d3c10cd88cb8584fda1cb @@ -1296,48 +1290,48 @@ packages: license_family: APACHE size: 280830 timestamp: 1736986295869 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025021205-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021305-release.conda noarch: python - sha256: 0f0d002c8cdab4a1372af2efec963962a64dea766feafc61e423f9473a69c6d9 - md5: 888189cdefda2c9f32a7689616efebb0 + sha256: dffbba1853528866c2da6490f72d4bfa8a9745d8e17b49e78f23c48cd93da33f + md5: 16bf91203625a15123fec56de824ef43 depends: - - max-core ==25.1.0.dev2025021205 release - - max-python ==25.1.0.dev2025021205 release - - mojo-jupyter ==25.1.0.dev2025021205 release - - mblack ==25.1.0.dev2025021205 release + - max-core ==25.2.0.dev2025021305 release + - max-python ==25.2.0.dev2025021305 release + - mojo-jupyter ==25.2.0.dev2025021305 release + - mblack ==25.2.0.dev2025021305 release license: LicenseRef-Modular-Proprietary - size: 9901 - timestamp: 1739337393161 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025021205-release.conda - sha256: b1ce1440be41e8c05b7074c036b4893e6d71260563e30db507806260aa5847f1 - md5: a7796d647f173885be3fc7b1e60b5c51 + size: 9904 + timestamp: 1739423790392 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025021305-release.conda + sha256: 4742604a258b6577a37c90448057c82c273165bd5454951fca34da3c9b1f2f11 + md5: b00e4bf8cb005535b57542211c611111 depends: - - mblack ==25.1.0.dev2025021205 release + - mblack ==25.2.0.dev2025021305 release license: LicenseRef-Modular-Proprietary - size: 242209420 - timestamp: 1739337393161 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025021205-release.conda - sha256: 6c79c2cb13ef5a5a5c965c93100f98dc5ebb77ae94aa099792df4bd31d0c5532 - md5: 2b02a732e3300cb50acc69e6d6c96718 + size: 241873167 + timestamp: 1739423820390 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025021305-release.conda + sha256: 7c3de8d0a1e58de20f754e28c1f1e5991d9aefd2f8254c39ba330d0d973d7da4 + md5: 6299597e8c37878d614a86969076b38e depends: - - mblack ==25.1.0.dev2025021205 release + - mblack ==25.2.0.dev2025021305 release license: LicenseRef-Modular-Proprietary - size: 244584198 - timestamp: 1739337423031 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025021205-release.conda - sha256: bbf7524e593fb9a292c7d62a7500c37476fef2535f1287c7e80367dfaea52a67 - md5: e3f8d90a22e6f25bd8692604b68da59a + size: 244728628 + timestamp: 1739423790392 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025021305-release.conda + sha256: b70444b426b3c2f57fe86750f10e66488d85901b209bd441f1c2bc477632b42c + md5: 65801c3dd993bb2571e4dedeeeac02fd depends: - - mblack ==25.1.0.dev2025021205 release + - mblack ==25.2.0.dev2025021305 release license: LicenseRef-Modular-Proprietary - size: 210628549 - timestamp: 1739340679038 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025021205-release.conda + size: 210546686 + timestamp: 1739425396471 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025021305-release.conda noarch: python - sha256: a99550dd334581d902a29efdb7b06065ac37280e37da1bdb1ec855b898e49d9b - md5: dd2f074682bffd7d6ba8582b0fce4216 + sha256: c3b86bb4bddcbbcc77a9610254afaf8d227e70642c1b08cb7de802c3cc5ad3c8 + md5: b1e07ee08343db2c8c1d516255c57fcf depends: - - max-core ==25.1.0.dev2025021205 release + - max-core ==25.2.0.dev2025021305 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1375,14 +1369,14 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 119465869 - timestamp: 1739337393161 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025021205-release.conda + size: 119314941 + timestamp: 1739423820390 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025021305-release.conda noarch: python - sha256: cf9aad9f335d5d299c9f42a4fb018f68c4c33d597226f8d231760bf4323ab0b9 - md5: 8731c1dce1f66eba34cad6f88a0225b0 + sha256: d815f33b32f711f458bad38121565177442c179661867d78438fb17804aae90d + md5: 1558cef0a9e44c5acb7fbce7bf9c795c depends: - - max-core ==25.1.0.dev2025021205 release + - max-core ==25.2.0.dev2025021305 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1420,14 +1414,14 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 122015180 - timestamp: 1739337423032 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025021205-release.conda + size: 121952822 + timestamp: 1739423790392 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025021305-release.conda noarch: python - sha256: d4563422dc7bfa44455ca0a02811a796e988b69b38bb7e2bf45dbf04879fb5a2 - md5: 9b3a27350d0c511e97402e82851d3362 + sha256: 08e38e400944c081c50ba56171996c30d62bd2d442ec609e7daf56267f00505b + md5: 1e44e9b925b424bf63a0f6f714b14a49 depends: - - max-core ==25.1.0.dev2025021205 release + - max-core ==25.2.0.dev2025021305 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1465,12 +1459,12 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 108963046 - timestamp: 1739340679038 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025021205-release.conda + size: 108859238 + timestamp: 1739425396471 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021305-release.conda noarch: python - sha256: 5e061de1184ad0c56f7982439f364ade5d949e5058f651f5a16e80e4eb6b8baa - md5: 0d91022c7d5e360c63d2995a0de93fbf + sha256: 90fe9cd59bc694690f5a018f1b78a6c3dda2e42a57bd7570b5b7b336e5841ec3 + md5: 2039853d26c773ce8fecf08626ca7d05 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -1481,20 +1475,20 @@ packages: - typing_extensions >=v4.12.2 - python license: MIT - size: 130849 - timestamp: 1739337393161 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025021205-release.conda + size: 130858 + timestamp: 1739423790392 +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021305-release.conda noarch: python - sha256: 19512946c05eba6b19b63370c5957c046a4829bc9a68c9b77857e638167efa17 - md5: fa9e0b88bbfe857210f734de295d0383 + sha256: 577a281a7b22e97ddb4a9bf8db40293c627fb5e4a07505de67e8eadea5e64d52 + md5: f3e2af71e3f2641375d1814609a358c7 depends: - - max-core ==25.1.0.dev2025021205 release + - max-core ==25.2.0.dev2025021305 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22980 - timestamp: 1739337393161 + size: 22993 + timestamp: 1739423790392 - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda sha256: 1895f47b7d68581a6facde5cb13ab8c2764c2e53a76bd746f8f98910dc4e08fe md5: 29097e7ea634a45cc5386b95cac6568f diff --git a/examples/operators/magic.lock b/examples/operators/magic.lock index 950fce9d6b..9a62d8b96e 100644 --- a/examples/operators/magic.lock +++ b/examples/operators/magic.lock @@ -7,7 +7,7 @@ environments: packages: linux-64: - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_kmp_llvm.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2025.1.31-hbcca054_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda @@ -19,8 +19,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-28_h59b9bed_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-28_he106b2a_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-29_h59b9bed_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-29_he106b2a_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_0.conda @@ -28,8 +28,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hd5240d6_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h77fa898_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-28_h7ac8fdf_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libhwloc-2.11.2-default_h0d58e46_1001.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-hd590300_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-29_h7ac8fdf_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.28-pthreads_h94d23a6_1.conda @@ -41,12 +42,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.5-h0d44e9d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025021205-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025021205-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025021205-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025021205-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025021205-release.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/llvm-openmp-19.1.7-h024ca30_0.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021305-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025021305-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025021305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021305-release.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-2024.2.2-ha957f24_16.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021305-release.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-h2d0b736_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda @@ -63,6 +67,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-python-0.2.0-py312hb6b8a2b_10.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-spm-0.2.0-h8e10757_10.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tbb-2021.13.0-hceb3a55_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda @@ -84,8 +89,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/krb5-1.21.3-h50a48e9_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h18dbdb1_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-28_h1a9f1db_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-28_hab92f65_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-29_h1a9f1db_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-29_hab92f65_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20250104-pl5321h976ea20_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.6.4-h5ad3122_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.4.6-he21f813_0.conda @@ -94,7 +99,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-28_h411afd4_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-29_h411afd4_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.4-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.28-pthreads_h9d3fd7e_1.conda @@ -107,11 +112,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025021205-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025021205-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025021205-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025021205-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025021205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021305-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025021305-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025021305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021305-release.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-ha32ae93_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda @@ -146,15 +151,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_h07bc746_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-28_h10e41b3_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-28_hb3479ef_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-29_h10e41b3_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-29_hb3479ef_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.4-h286801f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-28_hc9a63f6_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-29_hc9a63f6_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.4-h39f12f2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.28-openmp_hf332438_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.3-h3bd63a1_1.conda @@ -163,11 +168,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.48.0-h3f77e49_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025021205-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025021205-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025021205-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025021205-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025021205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021305-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025021305-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025021305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021305-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda @@ -201,21 +206,19 @@ packages: license: None size: 2562 timestamp: 1578324546067 -- conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 - build_number: 16 - sha256: fbe2c5e56a653bebb982eda4876a9178aedfc2b545f25d0ce9c4c0b508253d22 - md5: 73aaf86a425cc6e73fcf236a5a46396d +- conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_kmp_llvm.tar.bz2 + build_number: 2 + sha256: 84a66275da3a66e3f3e70e9d8f10496d807d01a9e4ec16cd2274cc5e28c478fc + md5: 562b26ba2e19059551a811e72ab7f793 depends: - _libgcc_mutex 0.1 conda_forge - - libgomp >=7.5.0 - constrains: - - openmp_impl 9999 + - llvm-openmp >=9.0.1 arch: x86_64 platform: linux license: BSD-3-Clause license_family: BSD - size: 23621 - timestamp: 1650670423406 + size: 5744 + timestamp: 1650742457817 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2 build_number: 16 sha256: 3702bef2f0a4d38bd8288bbe54aace623602a1343c2cfbefd3fa188e015bebf0 @@ -481,108 +484,104 @@ packages: license_family: Apache size: 1178260 timestamp: 1736008642885 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-28_h59b9bed_openblas.conda - build_number: 28 - sha256: 93fbcf2800b859b7ca5add3ab5d3aa11c6a6ff4b942a1cea4bf644f78488edb8 - md5: 73e2a99fdeb8531d50168987378fda8a +- conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-29_h59b9bed_openblas.conda + build_number: 29 + sha256: 6b23d5bc011b6835e976dde103850c9b9f0b597d8aaecc78c31348de3dbb03e8 + md5: 9667465082f03fc0d6286840d0b28d93 depends: - libopenblas >=0.3.28,<0.3.29.0a0 - libopenblas >=0.3.28,<1.0a0 + - mkl >=2024.2.2,<2025.0a0 constrains: - - libcblas =3.9.0=28*_openblas - - blas =2.128=openblas - - liblapack =3.9.0=28*_openblas - - liblapacke =3.9.0=28*_openblas + - liblapacke =3.9.0=29*_openblas + - libcblas =3.9.0=29*_openblas + - liblapack =3.9.0=29*_openblas + - blas =2.129=openblas arch: x86_64 platform: linux license: BSD-3-Clause - license_family: BSD - size: 16621 - timestamp: 1738114033763 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-28_h1a9f1db_openblas.conda - build_number: 28 - sha256: a50dc7ed1f49789aab4ffb560d9a46b5dc3f059a925282f699c1a96fa566a1a0 - md5: 88dfbb3875d62b431aa676b4a54734bf + size: 16917 + timestamp: 1739425832677 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-29_h1a9f1db_openblas.conda + build_number: 29 + sha256: 973d85867efe198eeda6d01c73258b3ffd2d1bd227c18b663fe6a1fab292e0f5 + md5: e98e99f1ceb36f52504bb122435756c5 depends: - libopenblas >=0.3.28,<0.3.29.0a0 - libopenblas >=0.3.28,<1.0a0 constrains: - - liblapack =3.9.0=28*_openblas - - libcblas =3.9.0=28*_openblas - - blas =2.128=openblas - - liblapacke =3.9.0=28*_openblas + - blas =2.129=openblas + - libcblas =3.9.0=29*_openblas + - liblapacke =3.9.0=29*_openblas + - liblapack =3.9.0=29*_openblas arch: aarch64 platform: linux license: BSD-3-Clause - license_family: BSD - size: 16697 - timestamp: 1738114082682 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-28_h10e41b3_openblas.conda - build_number: 28 - sha256: 5bea855a1a7435ce2238535aa4b13db8af8ee301d99a42b083b63fa64c1ea144 - md5: 166166d84a0e9571dc50210baf993b46 + size: 16884 + timestamp: 1739426012764 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-29_h10e41b3_openblas.conda + build_number: 29 + sha256: a966b39403203dfe122e2eefe9f3a04b353dc7c2fa76703f0d78fddc4e849704 + md5: 6ebbed2244408eca4f7569b532f813bd depends: - libopenblas >=0.3.28,<0.3.29.0a0 - libopenblas >=0.3.28,<1.0a0 constrains: - - liblapack =3.9.0=28*_openblas - - liblapacke =3.9.0=28*_openblas - - blas =2.128=openblas - - libcblas =3.9.0=28*_openblas + - liblapacke =3.9.0=29*_openblas + - libcblas =3.9.0=29*_openblas + - blas =2.129=openblas + - liblapack =3.9.0=29*_openblas arch: arm64 platform: osx license: BSD-3-Clause - license_family: BSD - size: 16840 - timestamp: 1738114389937 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-28_he106b2a_openblas.conda - build_number: 28 - sha256: de293e117db53e5d78b579136509c35a5e4ad11529c05f9af83cf89be4d30de1 - md5: 4e20a1c00b4e8a984aac0f6cce59e3ac - depends: - - libblas 3.9.0 28_h59b9bed_openblas + size: 17046 + timestamp: 1739426231872 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-29_he106b2a_openblas.conda + build_number: 29 + sha256: a0591b9bee742858b44ceee4970d4c217eb50dca12f7af7dc543eeace91d0e0c + md5: 1909bbfb9aef80e329f5e9a784014e00 + depends: + - libblas 3.9.0 29_h59b9bed_openblas + - mkl >=2024.2.2,<2025.0a0 constrains: - - blas =2.128=openblas - - liblapack =3.9.0=28*_openblas - - liblapacke =3.9.0=28*_openblas + - liblapacke =3.9.0=29*_openblas + - liblapack =3.9.0=29*_openblas + - blas =2.129=openblas arch: x86_64 platform: linux license: BSD-3-Clause - license_family: BSD - size: 16539 - timestamp: 1738114043618 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-28_hab92f65_openblas.conda - build_number: 28 - sha256: ed62f13a85726f568e17ad569b5cc01a49a6c7bd334802cf1c1b15e9d10e7e93 - md5: 8cff453f547365131be5647c7680ac6d - depends: - - libblas 3.9.0 28_h1a9f1db_openblas + size: 16866 + timestamp: 1739425843922 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-29_hab92f65_openblas.conda + build_number: 29 + sha256: a7ecf68634582e8291a3ce76836394a87c38e684255b2c1514dec0aeddcb2004 + md5: 8dd4788ae5e492c771c5b51661ac9102 + depends: + - libblas 3.9.0 29_h1a9f1db_openblas constrains: - - liblapack =3.9.0=28*_openblas - - blas =2.128=openblas - - liblapacke =3.9.0=28*_openblas + - blas =2.129=openblas + - liblapacke =3.9.0=29*_openblas + - liblapack =3.9.0=29*_openblas arch: aarch64 platform: linux license: BSD-3-Clause - license_family: BSD - size: 16655 - timestamp: 1738114088527 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-28_hb3479ef_openblas.conda - build_number: 28 - sha256: f08adea59381babb3568e6d23e52aff874cbc25f299821647ab1127d1e1332ca - md5: 30942dea911ce333765003a8adec4e8a - depends: - - libblas 3.9.0 28_h10e41b3_openblas + size: 16837 + timestamp: 1739426020271 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-29_hb3479ef_openblas.conda + build_number: 29 + sha256: 5fb812ca6b194a0d4ea6c780fba9afab87f7da7b8c4558cfe2954e27bb07a4a9 + md5: cc30b97c4a6bc1984781bf147daa015b + depends: + - libblas 3.9.0 29_h10e41b3_openblas constrains: - - blas =2.128=openblas - - liblapacke =3.9.0=28*_openblas - - liblapack =3.9.0=28*_openblas + - liblapack =3.9.0=29*_openblas + - blas =2.129=openblas + - liblapacke =3.9.0=29*_openblas arch: arm64 platform: osx license: BSD-3-Clause - license_family: BSD - size: 16788 - timestamp: 1738114399962 + size: 16983 + timestamp: 1739426238799 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda sha256: 776092346da87a2a23502e14d91eb0c32699c4a1522b7331537bd1c3751dcff5 md5: 5b3e1610ff8bd5443476b91d618f5b77 @@ -833,17 +832,6 @@ packages: license_family: GPL size: 997381 timestamp: 1707330687590 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h77fa898_1.conda - sha256: 1911c29975ec99b6b906904040c855772ccb265a1c79d5d75c8ceec4ed89cd63 - md5: cc3573974587f12dda90d96e3e55a702 - depends: - - _libgcc_mutex 0.1 conda_forge - arch: x86_64 - platform: linux - license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - size: 460992 - timestamp: 1729027639220 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_1.conda sha256: 5aa53874a5e57a00f2e0c2e2910684eb674429cd5fcb803619b226a73e89aedf md5: 376f0e73abbda6d23c0cb749adc195ef @@ -853,54 +841,76 @@ packages: license_family: GPL size: 463521 timestamp: 1729089357313 -- conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-28_h7ac8fdf_openblas.conda - build_number: 28 - sha256: 9530e6840690b78360946390a1d29624734a6b624f02c26631fb451592cbb8ef - md5: 069f40bfbf1dc55c83ddb07fc6a6ef8d +- conda: https://conda.anaconda.org/conda-forge/linux-64/libhwloc-2.11.2-default_h0d58e46_1001.conda + sha256: d14c016482e1409ae1c50109a9ff933460a50940d2682e745ab1c172b5282a69 + md5: 804ca9e91bcaea0824a341d55b1684f2 depends: - - libblas 3.9.0 28_h59b9bed_openblas - constrains: - - libcblas =3.9.0=28*_openblas - - blas =2.128=openblas - - liblapacke =3.9.0=28*_openblas + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + - libxml2 >=2.13.4,<3.0a0 arch: x86_64 platform: linux license: BSD-3-Clause license_family: BSD - size: 16553 - timestamp: 1738114053556 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-28_h411afd4_openblas.conda - build_number: 28 - sha256: 1290ce1071a586e22bdd7d8f4c48000cc0005f0a67660be150d1ea5c6092129f - md5: bc4c5ee31476521e202356b56bba6077 - depends: - - libblas 3.9.0 28_h1a9f1db_openblas + size: 2423200 + timestamp: 1731374922090 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-hd590300_2.conda + sha256: 8ac2f6a9f186e76539439e50505d98581472fedb347a20e7d1f36429849f05c9 + md5: d66573916ffcf376178462f1b61c941e + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: LGPL-2.1-only + size: 705775 + timestamp: 1702682170569 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-29_h7ac8fdf_openblas.conda + build_number: 29 + sha256: 27f281ced109be37a3cd94dd5b84a15ecc885eac3d3f956b79216126606a1366 + md5: bd7d18666da757d56f5af2e0eb2af688 + depends: + - libblas 3.9.0 29_h59b9bed_openblas + - mkl >=2024.2.2,<2025.0a0 constrains: - - liblapacke =3.9.0=28*_openblas - - libcblas =3.9.0=28*_openblas - - blas =2.128=openblas + - liblapacke =3.9.0=29*_openblas + - libcblas =3.9.0=29*_openblas + - blas =2.129=openblas + arch: x86_64 + platform: linux + license: BSD-3-Clause + size: 16865 + timestamp: 1739425856613 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-29_h411afd4_openblas.conda + build_number: 29 + sha256: d7aa87be996cc89516b2ae2430317fe7401c66eaf739bf13833b6cc137c2511a + md5: 131b70f675e6c9a808c5c601bfdb8300 + depends: + - libblas 3.9.0 29_h1a9f1db_openblas + constrains: + - blas =2.129=openblas + - libcblas =3.9.0=29*_openblas + - liblapacke =3.9.0=29*_openblas arch: aarch64 platform: linux license: BSD-3-Clause - license_family: BSD - size: 16637 - timestamp: 1738114094310 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-28_hc9a63f6_openblas.conda - build_number: 28 - sha256: 79c75a02bff20f8b001e6aecfee8d22a51552c3986e7037fca68e5ed071cc213 - md5: 45f26652530b558c21083ceb7adaf273 - depends: - - libblas 3.9.0 28_h10e41b3_openblas + size: 16836 + timestamp: 1739426027617 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-29_hc9a63f6_openblas.conda + build_number: 29 + sha256: de23734b43bd3d788d87db223605961129df3f464f0fafabfb3bd9265766472f + md5: 523116f84153f74aa9541278faff40d8 + depends: + - libblas 3.9.0 29_h10e41b3_openblas constrains: - - blas =2.128=openblas - - liblapacke =3.9.0=28*_openblas - - libcblas =3.9.0=28*_openblas + - libcblas =3.9.0=29*_openblas + - blas =2.129=openblas + - liblapacke =3.9.0=29*_openblas arch: arm64 platform: osx license: BSD-3-Clause - license_family: BSD - size: 16793 - timestamp: 1738114407021 + size: 16988 + timestamp: 1739426245773 - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda sha256: cad52e10319ca4585bc37f0bc7cce99ec7c15dc9168e42ccb96b741b0a27db3f md5: 42d5b6a0f30d3c10cd88cb8584fda1cb @@ -1243,6 +1253,23 @@ packages: license: LGPL-2.1-or-later size: 114269 timestamp: 1702724369203 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.5-h0d44e9d_1.conda + sha256: 306e18aa647d8208ad2cd0e62d84933222b2fbe93d2d53cd5283d2256b1d54de + md5: f5b05674697ae7d2c5932766695945e1 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libiconv >=1.17,<2.0a0 + - liblzma >=5.6.3,<6.0a0 + - libzlib >=1.3.1,<2.0a0 + constrains: + - icu <0.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 689993 + timestamp: 1733443678322 - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda sha256: d4bfe88d7cb447768e31650f06257995601f89076080e76df55e3112d4e47dc4 md5: edb0dca6bc32e4f4789199455a1dbeb8 @@ -1283,6 +1310,19 @@ packages: license_family: Other size: 46438 timestamp: 1727963202283 +- conda: https://conda.anaconda.org/conda-forge/linux-64/llvm-openmp-19.1.7-h024ca30_0.conda + sha256: 5383e32604e03814b6011fa01a5332057934181a7ea0e90abba7890c17cabce6 + md5: 9915f85a72472011550550623cce2d53 + depends: + - __glibc >=2.17,<3.0.a0 + constrains: + - openmp 19.1.7|19.1.7.* + arch: x86_64 + platform: linux + license: Apache-2.0 WITH LLVM-exception + license_family: APACHE + size: 3190529 + timestamp: 1736986301022 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda sha256: b92a669f2059874ebdcb69041b6c243d68ffc3fb356ac1339cec44aeb27245d7 md5: c4d54bfd3817313ce758aa76283b118d @@ -1296,48 +1336,48 @@ packages: license_family: APACHE size: 280830 timestamp: 1736986295869 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025021205-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021305-release.conda noarch: python - sha256: 0f0d002c8cdab4a1372af2efec963962a64dea766feafc61e423f9473a69c6d9 - md5: 888189cdefda2c9f32a7689616efebb0 + sha256: dffbba1853528866c2da6490f72d4bfa8a9745d8e17b49e78f23c48cd93da33f + md5: 16bf91203625a15123fec56de824ef43 depends: - - max-core ==25.1.0.dev2025021205 release - - max-python ==25.1.0.dev2025021205 release - - mojo-jupyter ==25.1.0.dev2025021205 release - - mblack ==25.1.0.dev2025021205 release + - max-core ==25.2.0.dev2025021305 release + - max-python ==25.2.0.dev2025021305 release + - mojo-jupyter ==25.2.0.dev2025021305 release + - mblack ==25.2.0.dev2025021305 release license: LicenseRef-Modular-Proprietary - size: 9901 - timestamp: 1739337393161 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025021205-release.conda - sha256: b1ce1440be41e8c05b7074c036b4893e6d71260563e30db507806260aa5847f1 - md5: a7796d647f173885be3fc7b1e60b5c51 + size: 9904 + timestamp: 1739423790392 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025021305-release.conda + sha256: 4742604a258b6577a37c90448057c82c273165bd5454951fca34da3c9b1f2f11 + md5: b00e4bf8cb005535b57542211c611111 depends: - - mblack ==25.1.0.dev2025021205 release + - mblack ==25.2.0.dev2025021305 release license: LicenseRef-Modular-Proprietary - size: 242209420 - timestamp: 1739337393161 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025021205-release.conda - sha256: 6c79c2cb13ef5a5a5c965c93100f98dc5ebb77ae94aa099792df4bd31d0c5532 - md5: 2b02a732e3300cb50acc69e6d6c96718 + size: 241873167 + timestamp: 1739423820390 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025021305-release.conda + sha256: 7c3de8d0a1e58de20f754e28c1f1e5991d9aefd2f8254c39ba330d0d973d7da4 + md5: 6299597e8c37878d614a86969076b38e depends: - - mblack ==25.1.0.dev2025021205 release + - mblack ==25.2.0.dev2025021305 release license: LicenseRef-Modular-Proprietary - size: 244584198 - timestamp: 1739337423031 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025021205-release.conda - sha256: bbf7524e593fb9a292c7d62a7500c37476fef2535f1287c7e80367dfaea52a67 - md5: e3f8d90a22e6f25bd8692604b68da59a + size: 244728628 + timestamp: 1739423790392 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025021305-release.conda + sha256: b70444b426b3c2f57fe86750f10e66488d85901b209bd441f1c2bc477632b42c + md5: 65801c3dd993bb2571e4dedeeeac02fd depends: - - mblack ==25.1.0.dev2025021205 release + - mblack ==25.2.0.dev2025021305 release license: LicenseRef-Modular-Proprietary - size: 210628549 - timestamp: 1739340679038 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025021205-release.conda + size: 210546686 + timestamp: 1739425396471 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025021305-release.conda noarch: python - sha256: a99550dd334581d902a29efdb7b06065ac37280e37da1bdb1ec855b898e49d9b - md5: dd2f074682bffd7d6ba8582b0fce4216 + sha256: c3b86bb4bddcbbcc77a9610254afaf8d227e70642c1b08cb7de802c3cc5ad3c8 + md5: b1e07ee08343db2c8c1d516255c57fcf depends: - - max-core ==25.1.0.dev2025021205 release + - max-core ==25.2.0.dev2025021305 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1375,14 +1415,14 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 119465869 - timestamp: 1739337393161 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025021205-release.conda + size: 119314941 + timestamp: 1739423820390 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025021305-release.conda noarch: python - sha256: cf9aad9f335d5d299c9f42a4fb018f68c4c33d597226f8d231760bf4323ab0b9 - md5: 8731c1dce1f66eba34cad6f88a0225b0 + sha256: d815f33b32f711f458bad38121565177442c179661867d78438fb17804aae90d + md5: 1558cef0a9e44c5acb7fbce7bf9c795c depends: - - max-core ==25.1.0.dev2025021205 release + - max-core ==25.2.0.dev2025021305 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1420,14 +1460,14 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 122015180 - timestamp: 1739337423032 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025021205-release.conda + size: 121952822 + timestamp: 1739423790392 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025021305-release.conda noarch: python - sha256: d4563422dc7bfa44455ca0a02811a796e988b69b38bb7e2bf45dbf04879fb5a2 - md5: 9b3a27350d0c511e97402e82851d3362 + sha256: 08e38e400944c081c50ba56171996c30d62bd2d442ec609e7daf56267f00505b + md5: 1e44e9b925b424bf63a0f6f714b14a49 depends: - - max-core ==25.1.0.dev2025021205 release + - max-core ==25.2.0.dev2025021305 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1465,12 +1505,12 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 108963046 - timestamp: 1739340679038 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025021205-release.conda + size: 108859238 + timestamp: 1739425396471 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021305-release.conda noarch: python - sha256: 5e061de1184ad0c56f7982439f364ade5d949e5058f651f5a16e80e4eb6b8baa - md5: 0d91022c7d5e360c63d2995a0de93fbf + sha256: 90fe9cd59bc694690f5a018f1b78a6c3dda2e42a57bd7570b5b7b336e5841ec3 + md5: 2039853d26c773ce8fecf08626ca7d05 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -1481,20 +1521,34 @@ packages: - typing_extensions >=v4.12.2 - python license: MIT - size: 130849 - timestamp: 1739337393161 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025021205-release.conda + size: 130858 + timestamp: 1739423790392 +- conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-2024.2.2-ha957f24_16.conda + sha256: 77906b0acead8f86b489da46f53916e624897338770dbf70b04b8f673c9273c1 + md5: 1459379c79dda834673426504d52b319 + depends: + - _openmp_mutex * *_llvm + - _openmp_mutex >=4.5 + - llvm-openmp >=19.1.2 + - tbb 2021.* + arch: x86_64 + platform: linux + license: LicenseRef-IntelSimplifiedSoftwareOct2022 + license_family: Proprietary + size: 124718448 + timestamp: 1730231808335 +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021305-release.conda noarch: python - sha256: 19512946c05eba6b19b63370c5957c046a4829bc9a68c9b77857e638167efa17 - md5: fa9e0b88bbfe857210f734de295d0383 + sha256: 577a281a7b22e97ddb4a9bf8db40293c627fb5e4a07505de67e8eadea5e64d52 + md5: f3e2af71e3f2641375d1814609a358c7 depends: - - max-core ==25.1.0.dev2025021205 release + - max-core ==25.2.0.dev2025021305 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22980 - timestamp: 1739337393161 + size: 22993 + timestamp: 1739423790392 - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda sha256: 1895f47b7d68581a6facde5cb13ab8c2764c2e53a76bd746f8f98910dc4e08fe md5: 29097e7ea634a45cc5386b95cac6568f @@ -2020,6 +2074,20 @@ packages: license_family: MIT size: 16385 timestamp: 1733381032766 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tbb-2021.13.0-hceb3a55_1.conda + sha256: 65463732129899770d54b1fbf30e1bb82fdebda9d7553caf08d23db4590cd691 + md5: ba7726b8df7b9d34ea80e82b097a4893 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libhwloc >=2.11.2,<2.11.3.0a0 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 175954 + timestamp: 1732982638805 - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda sha256: e0569c9caa68bf476bead1bed3d79650bb080b532c64a4af7d8ca286c08dea4e md5: d453b98d9c83e71da0741bb0ff4d76bc diff --git a/examples/testing/magic.lock b/examples/testing/magic.lock index 950fce9d6b..9a62d8b96e 100644 --- a/examples/testing/magic.lock +++ b/examples/testing/magic.lock @@ -7,7 +7,7 @@ environments: packages: linux-64: - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_kmp_llvm.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2025.1.31-hbcca054_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda @@ -19,8 +19,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-28_h59b9bed_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-28_he106b2a_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-29_h59b9bed_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-29_he106b2a_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_0.conda @@ -28,8 +28,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hd5240d6_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h77fa898_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-28_h7ac8fdf_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libhwloc-2.11.2-default_h0d58e46_1001.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-hd590300_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-29_h7ac8fdf_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.28-pthreads_h94d23a6_1.conda @@ -41,12 +42,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.5-h0d44e9d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025021205-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025021205-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025021205-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025021205-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025021205-release.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/llvm-openmp-19.1.7-h024ca30_0.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021305-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025021305-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025021305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021305-release.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-2024.2.2-ha957f24_16.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021305-release.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-h2d0b736_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda @@ -63,6 +67,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-python-0.2.0-py312hb6b8a2b_10.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-spm-0.2.0-h8e10757_10.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tbb-2021.13.0-hceb3a55_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda @@ -84,8 +89,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/krb5-1.21.3-h50a48e9_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h18dbdb1_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-28_h1a9f1db_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-28_hab92f65_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-29_h1a9f1db_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-29_hab92f65_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20250104-pl5321h976ea20_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.6.4-h5ad3122_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.4.6-he21f813_0.conda @@ -94,7 +99,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-28_h411afd4_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-29_h411afd4_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.4-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.28-pthreads_h9d3fd7e_1.conda @@ -107,11 +112,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025021205-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025021205-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025021205-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025021205-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025021205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021305-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025021305-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025021305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021305-release.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-ha32ae93_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda @@ -146,15 +151,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_h07bc746_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-28_h10e41b3_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-28_hb3479ef_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-29_h10e41b3_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-29_hb3479ef_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.4-h286801f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-28_hc9a63f6_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-29_hc9a63f6_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.4-h39f12f2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.28-openmp_hf332438_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.3-h3bd63a1_1.conda @@ -163,11 +168,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.48.0-h3f77e49_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025021205-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025021205-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025021205-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025021205-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025021205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021305-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025021305-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025021305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021305-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda @@ -201,21 +206,19 @@ packages: license: None size: 2562 timestamp: 1578324546067 -- conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 - build_number: 16 - sha256: fbe2c5e56a653bebb982eda4876a9178aedfc2b545f25d0ce9c4c0b508253d22 - md5: 73aaf86a425cc6e73fcf236a5a46396d +- conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_kmp_llvm.tar.bz2 + build_number: 2 + sha256: 84a66275da3a66e3f3e70e9d8f10496d807d01a9e4ec16cd2274cc5e28c478fc + md5: 562b26ba2e19059551a811e72ab7f793 depends: - _libgcc_mutex 0.1 conda_forge - - libgomp >=7.5.0 - constrains: - - openmp_impl 9999 + - llvm-openmp >=9.0.1 arch: x86_64 platform: linux license: BSD-3-Clause license_family: BSD - size: 23621 - timestamp: 1650670423406 + size: 5744 + timestamp: 1650742457817 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2 build_number: 16 sha256: 3702bef2f0a4d38bd8288bbe54aace623602a1343c2cfbefd3fa188e015bebf0 @@ -481,108 +484,104 @@ packages: license_family: Apache size: 1178260 timestamp: 1736008642885 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-28_h59b9bed_openblas.conda - build_number: 28 - sha256: 93fbcf2800b859b7ca5add3ab5d3aa11c6a6ff4b942a1cea4bf644f78488edb8 - md5: 73e2a99fdeb8531d50168987378fda8a +- conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-29_h59b9bed_openblas.conda + build_number: 29 + sha256: 6b23d5bc011b6835e976dde103850c9b9f0b597d8aaecc78c31348de3dbb03e8 + md5: 9667465082f03fc0d6286840d0b28d93 depends: - libopenblas >=0.3.28,<0.3.29.0a0 - libopenblas >=0.3.28,<1.0a0 + - mkl >=2024.2.2,<2025.0a0 constrains: - - libcblas =3.9.0=28*_openblas - - blas =2.128=openblas - - liblapack =3.9.0=28*_openblas - - liblapacke =3.9.0=28*_openblas + - liblapacke =3.9.0=29*_openblas + - libcblas =3.9.0=29*_openblas + - liblapack =3.9.0=29*_openblas + - blas =2.129=openblas arch: x86_64 platform: linux license: BSD-3-Clause - license_family: BSD - size: 16621 - timestamp: 1738114033763 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-28_h1a9f1db_openblas.conda - build_number: 28 - sha256: a50dc7ed1f49789aab4ffb560d9a46b5dc3f059a925282f699c1a96fa566a1a0 - md5: 88dfbb3875d62b431aa676b4a54734bf + size: 16917 + timestamp: 1739425832677 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-29_h1a9f1db_openblas.conda + build_number: 29 + sha256: 973d85867efe198eeda6d01c73258b3ffd2d1bd227c18b663fe6a1fab292e0f5 + md5: e98e99f1ceb36f52504bb122435756c5 depends: - libopenblas >=0.3.28,<0.3.29.0a0 - libopenblas >=0.3.28,<1.0a0 constrains: - - liblapack =3.9.0=28*_openblas - - libcblas =3.9.0=28*_openblas - - blas =2.128=openblas - - liblapacke =3.9.0=28*_openblas + - blas =2.129=openblas + - libcblas =3.9.0=29*_openblas + - liblapacke =3.9.0=29*_openblas + - liblapack =3.9.0=29*_openblas arch: aarch64 platform: linux license: BSD-3-Clause - license_family: BSD - size: 16697 - timestamp: 1738114082682 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-28_h10e41b3_openblas.conda - build_number: 28 - sha256: 5bea855a1a7435ce2238535aa4b13db8af8ee301d99a42b083b63fa64c1ea144 - md5: 166166d84a0e9571dc50210baf993b46 + size: 16884 + timestamp: 1739426012764 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-29_h10e41b3_openblas.conda + build_number: 29 + sha256: a966b39403203dfe122e2eefe9f3a04b353dc7c2fa76703f0d78fddc4e849704 + md5: 6ebbed2244408eca4f7569b532f813bd depends: - libopenblas >=0.3.28,<0.3.29.0a0 - libopenblas >=0.3.28,<1.0a0 constrains: - - liblapack =3.9.0=28*_openblas - - liblapacke =3.9.0=28*_openblas - - blas =2.128=openblas - - libcblas =3.9.0=28*_openblas + - liblapacke =3.9.0=29*_openblas + - libcblas =3.9.0=29*_openblas + - blas =2.129=openblas + - liblapack =3.9.0=29*_openblas arch: arm64 platform: osx license: BSD-3-Clause - license_family: BSD - size: 16840 - timestamp: 1738114389937 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-28_he106b2a_openblas.conda - build_number: 28 - sha256: de293e117db53e5d78b579136509c35a5e4ad11529c05f9af83cf89be4d30de1 - md5: 4e20a1c00b4e8a984aac0f6cce59e3ac - depends: - - libblas 3.9.0 28_h59b9bed_openblas + size: 17046 + timestamp: 1739426231872 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-29_he106b2a_openblas.conda + build_number: 29 + sha256: a0591b9bee742858b44ceee4970d4c217eb50dca12f7af7dc543eeace91d0e0c + md5: 1909bbfb9aef80e329f5e9a784014e00 + depends: + - libblas 3.9.0 29_h59b9bed_openblas + - mkl >=2024.2.2,<2025.0a0 constrains: - - blas =2.128=openblas - - liblapack =3.9.0=28*_openblas - - liblapacke =3.9.0=28*_openblas + - liblapacke =3.9.0=29*_openblas + - liblapack =3.9.0=29*_openblas + - blas =2.129=openblas arch: x86_64 platform: linux license: BSD-3-Clause - license_family: BSD - size: 16539 - timestamp: 1738114043618 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-28_hab92f65_openblas.conda - build_number: 28 - sha256: ed62f13a85726f568e17ad569b5cc01a49a6c7bd334802cf1c1b15e9d10e7e93 - md5: 8cff453f547365131be5647c7680ac6d - depends: - - libblas 3.9.0 28_h1a9f1db_openblas + size: 16866 + timestamp: 1739425843922 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-29_hab92f65_openblas.conda + build_number: 29 + sha256: a7ecf68634582e8291a3ce76836394a87c38e684255b2c1514dec0aeddcb2004 + md5: 8dd4788ae5e492c771c5b51661ac9102 + depends: + - libblas 3.9.0 29_h1a9f1db_openblas constrains: - - liblapack =3.9.0=28*_openblas - - blas =2.128=openblas - - liblapacke =3.9.0=28*_openblas + - blas =2.129=openblas + - liblapacke =3.9.0=29*_openblas + - liblapack =3.9.0=29*_openblas arch: aarch64 platform: linux license: BSD-3-Clause - license_family: BSD - size: 16655 - timestamp: 1738114088527 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-28_hb3479ef_openblas.conda - build_number: 28 - sha256: f08adea59381babb3568e6d23e52aff874cbc25f299821647ab1127d1e1332ca - md5: 30942dea911ce333765003a8adec4e8a - depends: - - libblas 3.9.0 28_h10e41b3_openblas + size: 16837 + timestamp: 1739426020271 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-29_hb3479ef_openblas.conda + build_number: 29 + sha256: 5fb812ca6b194a0d4ea6c780fba9afab87f7da7b8c4558cfe2954e27bb07a4a9 + md5: cc30b97c4a6bc1984781bf147daa015b + depends: + - libblas 3.9.0 29_h10e41b3_openblas constrains: - - blas =2.128=openblas - - liblapacke =3.9.0=28*_openblas - - liblapack =3.9.0=28*_openblas + - liblapack =3.9.0=29*_openblas + - blas =2.129=openblas + - liblapacke =3.9.0=29*_openblas arch: arm64 platform: osx license: BSD-3-Clause - license_family: BSD - size: 16788 - timestamp: 1738114399962 + size: 16983 + timestamp: 1739426238799 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda sha256: 776092346da87a2a23502e14d91eb0c32699c4a1522b7331537bd1c3751dcff5 md5: 5b3e1610ff8bd5443476b91d618f5b77 @@ -833,17 +832,6 @@ packages: license_family: GPL size: 997381 timestamp: 1707330687590 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h77fa898_1.conda - sha256: 1911c29975ec99b6b906904040c855772ccb265a1c79d5d75c8ceec4ed89cd63 - md5: cc3573974587f12dda90d96e3e55a702 - depends: - - _libgcc_mutex 0.1 conda_forge - arch: x86_64 - platform: linux - license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - size: 460992 - timestamp: 1729027639220 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_1.conda sha256: 5aa53874a5e57a00f2e0c2e2910684eb674429cd5fcb803619b226a73e89aedf md5: 376f0e73abbda6d23c0cb749adc195ef @@ -853,54 +841,76 @@ packages: license_family: GPL size: 463521 timestamp: 1729089357313 -- conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-28_h7ac8fdf_openblas.conda - build_number: 28 - sha256: 9530e6840690b78360946390a1d29624734a6b624f02c26631fb451592cbb8ef - md5: 069f40bfbf1dc55c83ddb07fc6a6ef8d +- conda: https://conda.anaconda.org/conda-forge/linux-64/libhwloc-2.11.2-default_h0d58e46_1001.conda + sha256: d14c016482e1409ae1c50109a9ff933460a50940d2682e745ab1c172b5282a69 + md5: 804ca9e91bcaea0824a341d55b1684f2 depends: - - libblas 3.9.0 28_h59b9bed_openblas - constrains: - - libcblas =3.9.0=28*_openblas - - blas =2.128=openblas - - liblapacke =3.9.0=28*_openblas + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + - libxml2 >=2.13.4,<3.0a0 arch: x86_64 platform: linux license: BSD-3-Clause license_family: BSD - size: 16553 - timestamp: 1738114053556 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-28_h411afd4_openblas.conda - build_number: 28 - sha256: 1290ce1071a586e22bdd7d8f4c48000cc0005f0a67660be150d1ea5c6092129f - md5: bc4c5ee31476521e202356b56bba6077 - depends: - - libblas 3.9.0 28_h1a9f1db_openblas + size: 2423200 + timestamp: 1731374922090 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-hd590300_2.conda + sha256: 8ac2f6a9f186e76539439e50505d98581472fedb347a20e7d1f36429849f05c9 + md5: d66573916ffcf376178462f1b61c941e + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: LGPL-2.1-only + size: 705775 + timestamp: 1702682170569 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-29_h7ac8fdf_openblas.conda + build_number: 29 + sha256: 27f281ced109be37a3cd94dd5b84a15ecc885eac3d3f956b79216126606a1366 + md5: bd7d18666da757d56f5af2e0eb2af688 + depends: + - libblas 3.9.0 29_h59b9bed_openblas + - mkl >=2024.2.2,<2025.0a0 constrains: - - liblapacke =3.9.0=28*_openblas - - libcblas =3.9.0=28*_openblas - - blas =2.128=openblas + - liblapacke =3.9.0=29*_openblas + - libcblas =3.9.0=29*_openblas + - blas =2.129=openblas + arch: x86_64 + platform: linux + license: BSD-3-Clause + size: 16865 + timestamp: 1739425856613 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-29_h411afd4_openblas.conda + build_number: 29 + sha256: d7aa87be996cc89516b2ae2430317fe7401c66eaf739bf13833b6cc137c2511a + md5: 131b70f675e6c9a808c5c601bfdb8300 + depends: + - libblas 3.9.0 29_h1a9f1db_openblas + constrains: + - blas =2.129=openblas + - libcblas =3.9.0=29*_openblas + - liblapacke =3.9.0=29*_openblas arch: aarch64 platform: linux license: BSD-3-Clause - license_family: BSD - size: 16637 - timestamp: 1738114094310 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-28_hc9a63f6_openblas.conda - build_number: 28 - sha256: 79c75a02bff20f8b001e6aecfee8d22a51552c3986e7037fca68e5ed071cc213 - md5: 45f26652530b558c21083ceb7adaf273 - depends: - - libblas 3.9.0 28_h10e41b3_openblas + size: 16836 + timestamp: 1739426027617 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-29_hc9a63f6_openblas.conda + build_number: 29 + sha256: de23734b43bd3d788d87db223605961129df3f464f0fafabfb3bd9265766472f + md5: 523116f84153f74aa9541278faff40d8 + depends: + - libblas 3.9.0 29_h10e41b3_openblas constrains: - - blas =2.128=openblas - - liblapacke =3.9.0=28*_openblas - - libcblas =3.9.0=28*_openblas + - libcblas =3.9.0=29*_openblas + - blas =2.129=openblas + - liblapacke =3.9.0=29*_openblas arch: arm64 platform: osx license: BSD-3-Clause - license_family: BSD - size: 16793 - timestamp: 1738114407021 + size: 16988 + timestamp: 1739426245773 - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda sha256: cad52e10319ca4585bc37f0bc7cce99ec7c15dc9168e42ccb96b741b0a27db3f md5: 42d5b6a0f30d3c10cd88cb8584fda1cb @@ -1243,6 +1253,23 @@ packages: license: LGPL-2.1-or-later size: 114269 timestamp: 1702724369203 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.5-h0d44e9d_1.conda + sha256: 306e18aa647d8208ad2cd0e62d84933222b2fbe93d2d53cd5283d2256b1d54de + md5: f5b05674697ae7d2c5932766695945e1 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libiconv >=1.17,<2.0a0 + - liblzma >=5.6.3,<6.0a0 + - libzlib >=1.3.1,<2.0a0 + constrains: + - icu <0.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 689993 + timestamp: 1733443678322 - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda sha256: d4bfe88d7cb447768e31650f06257995601f89076080e76df55e3112d4e47dc4 md5: edb0dca6bc32e4f4789199455a1dbeb8 @@ -1283,6 +1310,19 @@ packages: license_family: Other size: 46438 timestamp: 1727963202283 +- conda: https://conda.anaconda.org/conda-forge/linux-64/llvm-openmp-19.1.7-h024ca30_0.conda + sha256: 5383e32604e03814b6011fa01a5332057934181a7ea0e90abba7890c17cabce6 + md5: 9915f85a72472011550550623cce2d53 + depends: + - __glibc >=2.17,<3.0.a0 + constrains: + - openmp 19.1.7|19.1.7.* + arch: x86_64 + platform: linux + license: Apache-2.0 WITH LLVM-exception + license_family: APACHE + size: 3190529 + timestamp: 1736986301022 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda sha256: b92a669f2059874ebdcb69041b6c243d68ffc3fb356ac1339cec44aeb27245d7 md5: c4d54bfd3817313ce758aa76283b118d @@ -1296,48 +1336,48 @@ packages: license_family: APACHE size: 280830 timestamp: 1736986295869 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025021205-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021305-release.conda noarch: python - sha256: 0f0d002c8cdab4a1372af2efec963962a64dea766feafc61e423f9473a69c6d9 - md5: 888189cdefda2c9f32a7689616efebb0 + sha256: dffbba1853528866c2da6490f72d4bfa8a9745d8e17b49e78f23c48cd93da33f + md5: 16bf91203625a15123fec56de824ef43 depends: - - max-core ==25.1.0.dev2025021205 release - - max-python ==25.1.0.dev2025021205 release - - mojo-jupyter ==25.1.0.dev2025021205 release - - mblack ==25.1.0.dev2025021205 release + - max-core ==25.2.0.dev2025021305 release + - max-python ==25.2.0.dev2025021305 release + - mojo-jupyter ==25.2.0.dev2025021305 release + - mblack ==25.2.0.dev2025021305 release license: LicenseRef-Modular-Proprietary - size: 9901 - timestamp: 1739337393161 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025021205-release.conda - sha256: b1ce1440be41e8c05b7074c036b4893e6d71260563e30db507806260aa5847f1 - md5: a7796d647f173885be3fc7b1e60b5c51 + size: 9904 + timestamp: 1739423790392 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025021305-release.conda + sha256: 4742604a258b6577a37c90448057c82c273165bd5454951fca34da3c9b1f2f11 + md5: b00e4bf8cb005535b57542211c611111 depends: - - mblack ==25.1.0.dev2025021205 release + - mblack ==25.2.0.dev2025021305 release license: LicenseRef-Modular-Proprietary - size: 242209420 - timestamp: 1739337393161 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025021205-release.conda - sha256: 6c79c2cb13ef5a5a5c965c93100f98dc5ebb77ae94aa099792df4bd31d0c5532 - md5: 2b02a732e3300cb50acc69e6d6c96718 + size: 241873167 + timestamp: 1739423820390 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025021305-release.conda + sha256: 7c3de8d0a1e58de20f754e28c1f1e5991d9aefd2f8254c39ba330d0d973d7da4 + md5: 6299597e8c37878d614a86969076b38e depends: - - mblack ==25.1.0.dev2025021205 release + - mblack ==25.2.0.dev2025021305 release license: LicenseRef-Modular-Proprietary - size: 244584198 - timestamp: 1739337423031 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025021205-release.conda - sha256: bbf7524e593fb9a292c7d62a7500c37476fef2535f1287c7e80367dfaea52a67 - md5: e3f8d90a22e6f25bd8692604b68da59a + size: 244728628 + timestamp: 1739423790392 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025021305-release.conda + sha256: b70444b426b3c2f57fe86750f10e66488d85901b209bd441f1c2bc477632b42c + md5: 65801c3dd993bb2571e4dedeeeac02fd depends: - - mblack ==25.1.0.dev2025021205 release + - mblack ==25.2.0.dev2025021305 release license: LicenseRef-Modular-Proprietary - size: 210628549 - timestamp: 1739340679038 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025021205-release.conda + size: 210546686 + timestamp: 1739425396471 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025021305-release.conda noarch: python - sha256: a99550dd334581d902a29efdb7b06065ac37280e37da1bdb1ec855b898e49d9b - md5: dd2f074682bffd7d6ba8582b0fce4216 + sha256: c3b86bb4bddcbbcc77a9610254afaf8d227e70642c1b08cb7de802c3cc5ad3c8 + md5: b1e07ee08343db2c8c1d516255c57fcf depends: - - max-core ==25.1.0.dev2025021205 release + - max-core ==25.2.0.dev2025021305 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1375,14 +1415,14 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 119465869 - timestamp: 1739337393161 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025021205-release.conda + size: 119314941 + timestamp: 1739423820390 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025021305-release.conda noarch: python - sha256: cf9aad9f335d5d299c9f42a4fb018f68c4c33d597226f8d231760bf4323ab0b9 - md5: 8731c1dce1f66eba34cad6f88a0225b0 + sha256: d815f33b32f711f458bad38121565177442c179661867d78438fb17804aae90d + md5: 1558cef0a9e44c5acb7fbce7bf9c795c depends: - - max-core ==25.1.0.dev2025021205 release + - max-core ==25.2.0.dev2025021305 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1420,14 +1460,14 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 122015180 - timestamp: 1739337423032 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025021205-release.conda + size: 121952822 + timestamp: 1739423790392 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025021305-release.conda noarch: python - sha256: d4563422dc7bfa44455ca0a02811a796e988b69b38bb7e2bf45dbf04879fb5a2 - md5: 9b3a27350d0c511e97402e82851d3362 + sha256: 08e38e400944c081c50ba56171996c30d62bd2d442ec609e7daf56267f00505b + md5: 1e44e9b925b424bf63a0f6f714b14a49 depends: - - max-core ==25.1.0.dev2025021205 release + - max-core ==25.2.0.dev2025021305 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1465,12 +1505,12 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 108963046 - timestamp: 1739340679038 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025021205-release.conda + size: 108859238 + timestamp: 1739425396471 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021305-release.conda noarch: python - sha256: 5e061de1184ad0c56f7982439f364ade5d949e5058f651f5a16e80e4eb6b8baa - md5: 0d91022c7d5e360c63d2995a0de93fbf + sha256: 90fe9cd59bc694690f5a018f1b78a6c3dda2e42a57bd7570b5b7b336e5841ec3 + md5: 2039853d26c773ce8fecf08626ca7d05 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -1481,20 +1521,34 @@ packages: - typing_extensions >=v4.12.2 - python license: MIT - size: 130849 - timestamp: 1739337393161 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025021205-release.conda + size: 130858 + timestamp: 1739423790392 +- conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-2024.2.2-ha957f24_16.conda + sha256: 77906b0acead8f86b489da46f53916e624897338770dbf70b04b8f673c9273c1 + md5: 1459379c79dda834673426504d52b319 + depends: + - _openmp_mutex * *_llvm + - _openmp_mutex >=4.5 + - llvm-openmp >=19.1.2 + - tbb 2021.* + arch: x86_64 + platform: linux + license: LicenseRef-IntelSimplifiedSoftwareOct2022 + license_family: Proprietary + size: 124718448 + timestamp: 1730231808335 +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021305-release.conda noarch: python - sha256: 19512946c05eba6b19b63370c5957c046a4829bc9a68c9b77857e638167efa17 - md5: fa9e0b88bbfe857210f734de295d0383 + sha256: 577a281a7b22e97ddb4a9bf8db40293c627fb5e4a07505de67e8eadea5e64d52 + md5: f3e2af71e3f2641375d1814609a358c7 depends: - - max-core ==25.1.0.dev2025021205 release + - max-core ==25.2.0.dev2025021305 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22980 - timestamp: 1739337393161 + size: 22993 + timestamp: 1739423790392 - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda sha256: 1895f47b7d68581a6facde5cb13ab8c2764c2e53a76bd746f8f98910dc4e08fe md5: 29097e7ea634a45cc5386b95cac6568f @@ -2020,6 +2074,20 @@ packages: license_family: MIT size: 16385 timestamp: 1733381032766 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tbb-2021.13.0-hceb3a55_1.conda + sha256: 65463732129899770d54b1fbf30e1bb82fdebda9d7553caf08d23db4590cd691 + md5: ba7726b8df7b9d34ea80e82b097a4893 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libhwloc >=2.11.2,<2.11.3.0a0 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 175954 + timestamp: 1732982638805 - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda sha256: e0569c9caa68bf476bead1bed3d79650bb080b532c64a4af7d8ca286c08dea4e md5: d453b98d9c83e71da0741bb0ff4d76bc diff --git a/magic.lock b/magic.lock index fd0ebd1120..b20e7f077d 100644 --- a/magic.lock +++ b/magic.lock @@ -43,11 +43,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/lit-19.1.7-pyhd8ed1ab_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025021205-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025021205-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025021205-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025021205-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025021205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021305-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025021305-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025021305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021305-release.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-h2d0b736_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda @@ -85,8 +85,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/krb5-1.21.3-h50a48e9_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h18dbdb1_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-28_h1a9f1db_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-28_hab92f65_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-29_h1a9f1db_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-29_hab92f65_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20250104-pl5321h976ea20_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.6.4-h5ad3122_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.4.6-he21f813_0.conda @@ -95,7 +95,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-28_h411afd4_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-29_h411afd4_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.4-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.28-pthreads_h9d3fd7e_1.conda @@ -109,11 +109,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/lit-19.1.7-pyhd8ed1ab_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025021205-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025021205-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025021205-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025021205-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025021205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021305-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025021305-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025021305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021305-release.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-ha32ae93_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda @@ -148,15 +148,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_h07bc746_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-28_h10e41b3_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-28_hb3479ef_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-29_h10e41b3_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-29_hb3479ef_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.4-h286801f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-28_hc9a63f6_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-29_hc9a63f6_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.4-h39f12f2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.28-openmp_hf332438_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.3-h3bd63a1_1.conda @@ -166,11 +166,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/lit-19.1.7-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025021205-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025021205-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025021205-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025021205-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025021205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021305-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025021305-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025021305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021305-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda @@ -502,42 +502,40 @@ packages: license_family: BSD size: 16621 timestamp: 1738114033763 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-28_h1a9f1db_openblas.conda - build_number: 28 - sha256: a50dc7ed1f49789aab4ffb560d9a46b5dc3f059a925282f699c1a96fa566a1a0 - md5: 88dfbb3875d62b431aa676b4a54734bf +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-29_h1a9f1db_openblas.conda + build_number: 29 + sha256: 973d85867efe198eeda6d01c73258b3ffd2d1bd227c18b663fe6a1fab292e0f5 + md5: e98e99f1ceb36f52504bb122435756c5 depends: - libopenblas >=0.3.28,<0.3.29.0a0 - libopenblas >=0.3.28,<1.0a0 constrains: - - liblapack =3.9.0=28*_openblas - - libcblas =3.9.0=28*_openblas - - blas =2.128=openblas - - liblapacke =3.9.0=28*_openblas + - blas =2.129=openblas + - libcblas =3.9.0=29*_openblas + - liblapacke =3.9.0=29*_openblas + - liblapack =3.9.0=29*_openblas arch: aarch64 platform: linux license: BSD-3-Clause - license_family: BSD - size: 16697 - timestamp: 1738114082682 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-28_h10e41b3_openblas.conda - build_number: 28 - sha256: 5bea855a1a7435ce2238535aa4b13db8af8ee301d99a42b083b63fa64c1ea144 - md5: 166166d84a0e9571dc50210baf993b46 + size: 16884 + timestamp: 1739426012764 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-29_h10e41b3_openblas.conda + build_number: 29 + sha256: a966b39403203dfe122e2eefe9f3a04b353dc7c2fa76703f0d78fddc4e849704 + md5: 6ebbed2244408eca4f7569b532f813bd depends: - libopenblas >=0.3.28,<0.3.29.0a0 - libopenblas >=0.3.28,<1.0a0 constrains: - - liblapack =3.9.0=28*_openblas - - liblapacke =3.9.0=28*_openblas - - blas =2.128=openblas - - libcblas =3.9.0=28*_openblas + - liblapacke =3.9.0=29*_openblas + - libcblas =3.9.0=29*_openblas + - blas =2.129=openblas + - liblapack =3.9.0=29*_openblas arch: arm64 platform: osx license: BSD-3-Clause - license_family: BSD - size: 16840 - timestamp: 1738114389937 + size: 17046 + timestamp: 1739426231872 - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-28_he106b2a_openblas.conda build_number: 28 sha256: de293e117db53e5d78b579136509c35a5e4ad11529c05f9af83cf89be4d30de1 @@ -554,38 +552,36 @@ packages: license_family: BSD size: 16539 timestamp: 1738114043618 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-28_hab92f65_openblas.conda - build_number: 28 - sha256: ed62f13a85726f568e17ad569b5cc01a49a6c7bd334802cf1c1b15e9d10e7e93 - md5: 8cff453f547365131be5647c7680ac6d +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-29_hab92f65_openblas.conda + build_number: 29 + sha256: a7ecf68634582e8291a3ce76836394a87c38e684255b2c1514dec0aeddcb2004 + md5: 8dd4788ae5e492c771c5b51661ac9102 depends: - - libblas 3.9.0 28_h1a9f1db_openblas + - libblas 3.9.0 29_h1a9f1db_openblas constrains: - - liblapack =3.9.0=28*_openblas - - blas =2.128=openblas - - liblapacke =3.9.0=28*_openblas + - blas =2.129=openblas + - liblapacke =3.9.0=29*_openblas + - liblapack =3.9.0=29*_openblas arch: aarch64 platform: linux license: BSD-3-Clause - license_family: BSD - size: 16655 - timestamp: 1738114088527 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-28_hb3479ef_openblas.conda - build_number: 28 - sha256: f08adea59381babb3568e6d23e52aff874cbc25f299821647ab1127d1e1332ca - md5: 30942dea911ce333765003a8adec4e8a - depends: - - libblas 3.9.0 28_h10e41b3_openblas + size: 16837 + timestamp: 1739426020271 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-29_hb3479ef_openblas.conda + build_number: 29 + sha256: 5fb812ca6b194a0d4ea6c780fba9afab87f7da7b8c4558cfe2954e27bb07a4a9 + md5: cc30b97c4a6bc1984781bf147daa015b + depends: + - libblas 3.9.0 29_h10e41b3_openblas constrains: - - blas =2.128=openblas - - liblapacke =3.9.0=28*_openblas - - liblapack =3.9.0=28*_openblas + - liblapack =3.9.0=29*_openblas + - blas =2.129=openblas + - liblapacke =3.9.0=29*_openblas arch: arm64 platform: osx license: BSD-3-Clause - license_family: BSD - size: 16788 - timestamp: 1738114399962 + size: 16983 + timestamp: 1739426238799 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda sha256: 776092346da87a2a23502e14d91eb0c32699c4a1522b7331537bd1c3751dcff5 md5: 5b3e1610ff8bd5443476b91d618f5b77 @@ -872,38 +868,36 @@ packages: license_family: BSD size: 16553 timestamp: 1738114053556 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-28_h411afd4_openblas.conda - build_number: 28 - sha256: 1290ce1071a586e22bdd7d8f4c48000cc0005f0a67660be150d1ea5c6092129f - md5: bc4c5ee31476521e202356b56bba6077 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-29_h411afd4_openblas.conda + build_number: 29 + sha256: d7aa87be996cc89516b2ae2430317fe7401c66eaf739bf13833b6cc137c2511a + md5: 131b70f675e6c9a808c5c601bfdb8300 depends: - - libblas 3.9.0 28_h1a9f1db_openblas + - libblas 3.9.0 29_h1a9f1db_openblas constrains: - - liblapacke =3.9.0=28*_openblas - - libcblas =3.9.0=28*_openblas - - blas =2.128=openblas + - blas =2.129=openblas + - libcblas =3.9.0=29*_openblas + - liblapacke =3.9.0=29*_openblas arch: aarch64 platform: linux license: BSD-3-Clause - license_family: BSD - size: 16637 - timestamp: 1738114094310 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-28_hc9a63f6_openblas.conda - build_number: 28 - sha256: 79c75a02bff20f8b001e6aecfee8d22a51552c3986e7037fca68e5ed071cc213 - md5: 45f26652530b558c21083ceb7adaf273 - depends: - - libblas 3.9.0 28_h10e41b3_openblas + size: 16836 + timestamp: 1739426027617 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-29_hc9a63f6_openblas.conda + build_number: 29 + sha256: de23734b43bd3d788d87db223605961129df3f464f0fafabfb3bd9265766472f + md5: 523116f84153f74aa9541278faff40d8 + depends: + - libblas 3.9.0 29_h10e41b3_openblas constrains: - - blas =2.128=openblas - - liblapacke =3.9.0=28*_openblas - - libcblas =3.9.0=28*_openblas + - libcblas =3.9.0=29*_openblas + - blas =2.129=openblas + - liblapacke =3.9.0=29*_openblas arch: arm64 platform: osx license: BSD-3-Clause - license_family: BSD - size: 16793 - timestamp: 1738114407021 + size: 16988 + timestamp: 1739426245773 - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda sha256: cad52e10319ca4585bc37f0bc7cce99ec7c15dc9168e42ccb96b741b0a27db3f md5: 42d5b6a0f30d3c10cd88cb8584fda1cb @@ -1308,48 +1302,48 @@ packages: license_family: APACHE size: 280830 timestamp: 1736986295869 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025021205-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021305-release.conda noarch: python - sha256: 0f0d002c8cdab4a1372af2efec963962a64dea766feafc61e423f9473a69c6d9 - md5: 888189cdefda2c9f32a7689616efebb0 + sha256: dffbba1853528866c2da6490f72d4bfa8a9745d8e17b49e78f23c48cd93da33f + md5: 16bf91203625a15123fec56de824ef43 depends: - - max-core ==25.1.0.dev2025021205 release - - max-python ==25.1.0.dev2025021205 release - - mojo-jupyter ==25.1.0.dev2025021205 release - - mblack ==25.1.0.dev2025021205 release + - max-core ==25.2.0.dev2025021305 release + - max-python ==25.2.0.dev2025021305 release + - mojo-jupyter ==25.2.0.dev2025021305 release + - mblack ==25.2.0.dev2025021305 release license: LicenseRef-Modular-Proprietary - size: 9901 - timestamp: 1739337393161 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025021205-release.conda - sha256: b1ce1440be41e8c05b7074c036b4893e6d71260563e30db507806260aa5847f1 - md5: a7796d647f173885be3fc7b1e60b5c51 + size: 9904 + timestamp: 1739423790392 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025021305-release.conda + sha256: 4742604a258b6577a37c90448057c82c273165bd5454951fca34da3c9b1f2f11 + md5: b00e4bf8cb005535b57542211c611111 depends: - - mblack ==25.1.0.dev2025021205 release + - mblack ==25.2.0.dev2025021305 release license: LicenseRef-Modular-Proprietary - size: 242209420 - timestamp: 1739337393161 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025021205-release.conda - sha256: 6c79c2cb13ef5a5a5c965c93100f98dc5ebb77ae94aa099792df4bd31d0c5532 - md5: 2b02a732e3300cb50acc69e6d6c96718 + size: 241873167 + timestamp: 1739423820390 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025021305-release.conda + sha256: 7c3de8d0a1e58de20f754e28c1f1e5991d9aefd2f8254c39ba330d0d973d7da4 + md5: 6299597e8c37878d614a86969076b38e depends: - - mblack ==25.1.0.dev2025021205 release + - mblack ==25.2.0.dev2025021305 release license: LicenseRef-Modular-Proprietary - size: 244584198 - timestamp: 1739337423031 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025021205-release.conda - sha256: bbf7524e593fb9a292c7d62a7500c37476fef2535f1287c7e80367dfaea52a67 - md5: e3f8d90a22e6f25bd8692604b68da59a + size: 244728628 + timestamp: 1739423790392 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025021305-release.conda + sha256: b70444b426b3c2f57fe86750f10e66488d85901b209bd441f1c2bc477632b42c + md5: 65801c3dd993bb2571e4dedeeeac02fd depends: - - mblack ==25.1.0.dev2025021205 release + - mblack ==25.2.0.dev2025021305 release license: LicenseRef-Modular-Proprietary - size: 210628549 - timestamp: 1739340679038 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025021205-release.conda + size: 210546686 + timestamp: 1739425396471 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025021305-release.conda noarch: python - sha256: a99550dd334581d902a29efdb7b06065ac37280e37da1bdb1ec855b898e49d9b - md5: dd2f074682bffd7d6ba8582b0fce4216 + sha256: c3b86bb4bddcbbcc77a9610254afaf8d227e70642c1b08cb7de802c3cc5ad3c8 + md5: b1e07ee08343db2c8c1d516255c57fcf depends: - - max-core ==25.1.0.dev2025021205 release + - max-core ==25.2.0.dev2025021305 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1387,14 +1381,14 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 119465869 - timestamp: 1739337393161 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025021205-release.conda + size: 119314941 + timestamp: 1739423820390 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025021305-release.conda noarch: python - sha256: cf9aad9f335d5d299c9f42a4fb018f68c4c33d597226f8d231760bf4323ab0b9 - md5: 8731c1dce1f66eba34cad6f88a0225b0 + sha256: d815f33b32f711f458bad38121565177442c179661867d78438fb17804aae90d + md5: 1558cef0a9e44c5acb7fbce7bf9c795c depends: - - max-core ==25.1.0.dev2025021205 release + - max-core ==25.2.0.dev2025021305 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1432,14 +1426,14 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 122015180 - timestamp: 1739337423032 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025021205-release.conda + size: 121952822 + timestamp: 1739423790392 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025021305-release.conda noarch: python - sha256: d4563422dc7bfa44455ca0a02811a796e988b69b38bb7e2bf45dbf04879fb5a2 - md5: 9b3a27350d0c511e97402e82851d3362 + sha256: 08e38e400944c081c50ba56171996c30d62bd2d442ec609e7daf56267f00505b + md5: 1e44e9b925b424bf63a0f6f714b14a49 depends: - - max-core ==25.1.0.dev2025021205 release + - max-core ==25.2.0.dev2025021305 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1477,12 +1471,12 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 108963046 - timestamp: 1739340679038 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025021205-release.conda + size: 108859238 + timestamp: 1739425396471 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021305-release.conda noarch: python - sha256: 5e061de1184ad0c56f7982439f364ade5d949e5058f651f5a16e80e4eb6b8baa - md5: 0d91022c7d5e360c63d2995a0de93fbf + sha256: 90fe9cd59bc694690f5a018f1b78a6c3dda2e42a57bd7570b5b7b336e5841ec3 + md5: 2039853d26c773ce8fecf08626ca7d05 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -1493,20 +1487,20 @@ packages: - typing_extensions >=v4.12.2 - python license: MIT - size: 130849 - timestamp: 1739337393161 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025021205-release.conda + size: 130858 + timestamp: 1739423790392 +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021305-release.conda noarch: python - sha256: 19512946c05eba6b19b63370c5957c046a4829bc9a68c9b77857e638167efa17 - md5: fa9e0b88bbfe857210f734de295d0383 + sha256: 577a281a7b22e97ddb4a9bf8db40293c627fb5e4a07505de67e8eadea5e64d52 + md5: f3e2af71e3f2641375d1814609a358c7 depends: - - max-core ==25.1.0.dev2025021205 release + - max-core ==25.2.0.dev2025021305 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22980 - timestamp: 1739337393161 + size: 22993 + timestamp: 1739423790392 - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda sha256: 1895f47b7d68581a6facde5cb13ab8c2764c2e53a76bd746f8f98910dc4e08fe md5: 29097e7ea634a45cc5386b95cac6568f From 3c949d8ba91cee142239aee380e13cb682a44a58 Mon Sep 17 00:00:00 2001 From: Manuel Saelices Date: Thu, 13 Feb 2025 06:42:04 -0800 Subject: [PATCH 386/509] [External] [stdlib] Fix references to the deprecated `StringableCollectionElement` (#54909) [External] [stdlib] Fix references to the deprecated `StringableCollectionElement` Replaced with `WritableCollectionElement` Co-authored-by: Manuel Saelices Closes modularml/mojo#3979 MODULAR_ORIG_COMMIT_REV_ID: c22896575dc81cd2ede7f7b084ef09c2c20424c9 --- .github/CODEOWNERS | 14 ---- .github/ISSUE_TEMPLATE/doc_issue.yaml | 37 ---------- .github/ISSUE_TEMPLATE/mojo_bug_report.yaml | 48 ------------- .../ISSUE_TEMPLATE/mojo_feature_request.yaml | 50 -------------- .github/PULL_REQUEST_TEMPLATE.md | 10 --- .github/workflows/check_pr_target.yml | 28 -------- .github/workflows/check_pr_title.yml | 53 --------------- .../standard_library_tests_and_examples.yml | 67 ------------------- .github/workflows/test_pre_commit.yml | 52 -------------- docs/manual/parameters/index.mdx | 14 ++-- docs/manual/traits.mdx | 4 +- 11 files changed, 9 insertions(+), 368 deletions(-) delete mode 100644 .github/CODEOWNERS delete mode 100644 .github/ISSUE_TEMPLATE/doc_issue.yaml delete mode 100644 .github/ISSUE_TEMPLATE/mojo_bug_report.yaml delete mode 100644 .github/ISSUE_TEMPLATE/mojo_feature_request.yaml delete mode 100644 .github/PULL_REQUEST_TEMPLATE.md delete mode 100644 .github/workflows/check_pr_target.yml delete mode 100644 .github/workflows/check_pr_title.yml delete mode 100644 .github/workflows/standard_library_tests_and_examples.yml delete mode 100644 .github/workflows/test_pre_commit.yml diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS deleted file mode 100644 index 72b59c99d7..0000000000 --- a/.github/CODEOWNERS +++ /dev/null @@ -1,14 +0,0 @@ -# Code owners for the Mojo repository - -# Standard Library Sources -/stdlib/ @modularml/mojo-standard-library - -# Documentation -/docs/ @modularml/mojo-docs - -/docs/changelog.md @modularml/mojo-standard-library - -/stdlib/docs/ @modularml/mojo-docs @modularml/mojo-standard-library - -# Examples -/examples/ @jackos diff --git a/.github/ISSUE_TEMPLATE/doc_issue.yaml b/.github/ISSUE_TEMPLATE/doc_issue.yaml deleted file mode 100644 index 14996bc7e1..0000000000 --- a/.github/ISSUE_TEMPLATE/doc_issue.yaml +++ /dev/null @@ -1,37 +0,0 @@ -name: Documentation issue -description: Report a problem with the Mojo docs -title: "[Docs]" -labels: - - documentation -body: - - type: markdown - attributes: - value: | - Thank you for helping us improve the Mojo docs! - - Please add a title above and fill in the following fields so we can understand the problem. - - - type: input - attributes: - label: Where is the problem? - description: Provide a link to the problematic page (with a heading anchor). - validations: - required: true - - - type: textarea - attributes: - label: What can we do better? - description: Describe the documentation problem and how you suggest we fix it. - validations: - required: true - - - type: textarea - attributes: - label: Anything else? - validations: - required: false - - - type: markdown - attributes: - value: | - Thank you! diff --git a/.github/ISSUE_TEMPLATE/mojo_bug_report.yaml b/.github/ISSUE_TEMPLATE/mojo_bug_report.yaml deleted file mode 100644 index 82d5a3763f..0000000000 --- a/.github/ISSUE_TEMPLATE/mojo_bug_report.yaml +++ /dev/null @@ -1,48 +0,0 @@ -name: Mojo bug report -description: Create a bug report to help us improve Mojo -title: "[BUG]" -labels: - - "bug,mojo" -body: - - type: markdown - attributes: - value: | - Thanks for taking the time to fill out a bug report! - - Please provide a descriptive title above and fill in the following fields. - - - type: textarea - id: Description - attributes: - label: Bug description - description: Describe the bug you encountered and what you expected to happen. - value: | - ### Actual behavior - - - ### Expected behavior - - validations: - required: true - - - type: textarea - id: Steps - attributes: - label: Steps to reproduce - description: Provide the specific steps to reproduce the issue. - value: | - - Provide a relevant code snippet or a link to the code that did not work as expected. - - If applicable, add screenshots to help explain the problem. - - If using the Playground, name the pre-existing notebook that failed and the steps that led to failure. - - Include anything else that might help us debug the issue. - validations: - required: true - - - type: textarea - id: Context - attributes: - label: System information - description: What version of Mojo are you using? - value: | - - Provide the system information by running `magic info`. - - Provide version information for MAX (includes Mojo) by pasting the output of `magic list max`. diff --git a/.github/ISSUE_TEMPLATE/mojo_feature_request.yaml b/.github/ISSUE_TEMPLATE/mojo_feature_request.yaml deleted file mode 100644 index fff1896844..0000000000 --- a/.github/ISSUE_TEMPLATE/mojo_feature_request.yaml +++ /dev/null @@ -1,50 +0,0 @@ -name: Mojo feature request -description: Suggest an enhancement for Mojo -title: "[Feature Request]" -labels: - - "enhancement,mojo" -body: - - type: markdown - attributes: - value: | - Thanks for taking the time to suggest a Mojo enhancement! - - Please enter a concise title above and fill out the following fields. - - - type: checkboxes - id: Roadmap - attributes: - label: Review Mojo's priorities - description: Please take a look at our roadmap before you file a new feature request. - options: - - label: I have read the [roadmap and priorities](https://docs.modular.com/mojo/roadmap.html#overall-priorities) and I believe this request falls within the priorities. - required: true - - - type: markdown - attributes: - value: | - If the request is out of the published roadmap and priorities, please start a [discussion](https://forum.modular.com/) in the Modular Forum to get feedback from the team. - - - type: textarea - id: Request - attributes: - label: What is your request? - description: Describe how you'd like us to improve Mojo. - validations: - required: true - - - type: textarea - id: Motivation - attributes: - label: What is your motivation for this change? - description: Describe the problem that your feature seeks to address (what is the value to the product/user?). - validations: - required: true - - - type: textarea - id: Description - attributes: - label: Any other details? - description: Perhaps some minimum functional attributes the implementation should include, or other context about your feature. - validations: - required: false diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 2cd5f0bf30..0000000000 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,10 +0,0 @@ - diff --git a/.github/workflows/check_pr_target.yml b/.github/workflows/check_pr_target.yml deleted file mode 100644 index 4e333baf2a..0000000000 --- a/.github/workflows/check_pr_target.yml +++ /dev/null @@ -1,28 +0,0 @@ -name: Check PR target branch - -on: - pull_request: - types: [opened, edited, synchronize, reopened, ready_for_review] - -permissions: - contents: read - pull-requests: read - -jobs: - check-pr-target: - name: Check PR target branch - - runs-on: ubuntu-latest - timeout-minutes: 10 - - defaults: - run: - shell: bash - - steps: - - name: Fail if not targeting main branch - if: ${{ github.base_ref != 'main' }} - run: | - echo "PRs must be targeted to merge to the main branch!" - echo "PR is currently targeting: \"${{ github.base_ref }}\"" - exit 1 diff --git a/.github/workflows/check_pr_title.yml b/.github/workflows/check_pr_title.yml deleted file mode 100644 index 9b2f320a15..0000000000 --- a/.github/workflows/check_pr_title.yml +++ /dev/null @@ -1,53 +0,0 @@ -name: Check PR title - -on: - pull_request: - # By default, a workflow only runs when a pull_request's activity type is opened, synchronize, or reopened. We - # explicitly override here so that PR titles are re-linted when the PR text content is edited. - # - # Possible values: https://help.github.com/en/actions/reference/events-that-trigger-workflows#pull-request-event-pull_request - types: [opened, edited, reopened, synchronize, ready_for_review] - -jobs: - check-pr-title: - name: Check PR title format - - permissions: - pull-requests: write - - runs-on: ubuntu-latest - timeout-minutes: 5 - - steps: - - uses: morrisoncole/pr-lint-action@51f3cfabaf5d46f94e54524214e45685f0401b2a - if: github.actor != 'dependabot[bot]' - with: - title-regex: "^(Revert \")?(\\[\\S.*\\]\\s?)+\\s+[a-zA-Z`].*" - repo-token: "${{ secrets.GITHUB_TOKEN }}" - on-failed-regex-fail-action: true - on-failed-regex-create-review: true - on-failed-regex-request-changes: true - on-failed-regex-comment: - "The PR title does not conform to the '[\\] Title' format. - Please update the PR title. - \n\n - Typical [\\] values include: - \n\n - * `[stdlib]` — indicates a change to the Mojo standard library code\n - * `[docs]` — indicates a change to the documentation - \n\n - It's okay to include multiple labels on a PR that - affect multiple areas of work. - \n\n - Thank you for contributing to Mojo!🔥 - \n\n - - You can also use a tool like www.regex101.com to see why your PR - title fails to conform. Use - ``` - %regex% - ``` - as the regex to test and ```${{ github.event.pull_request.title }}``` - as the test string." - on-succeeded-regex-dismiss-review-comment: - "All good now, thanks!🫸🫷" diff --git a/.github/workflows/standard_library_tests_and_examples.yml b/.github/workflows/standard_library_tests_and_examples.yml deleted file mode 100644 index 2f13005fb3..0000000000 --- a/.github/workflows/standard_library_tests_and_examples.yml +++ /dev/null @@ -1,67 +0,0 @@ -# ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. -# -# Licensed under the Apache License v2.0 with LLVM Exceptions: -# https://llvm.org/LICENSE.txt -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# ===----------------------------------------------------------------------=== # - -name: Test stdlib and examples -on: - pull_request: - types: [opened, synchronize, reopened, ready_for_review] - workflow_dispatch: - -permissions: - contents: read - pull-requests: read - -jobs: - test-examples: - name: with ${{ matrix.os }} and assertions=${{ matrix.mojo-enable-assertions }} - strategy: - fail-fast: false - matrix: - os: ["ubuntu-latest", "macos-14"] - mojo-enable-assertions: [0, 1] - - runs-on: ${{ matrix.os }} - timeout-minutes: 30 - - defaults: - run: - shell: bash - env: - DEBIAN_FRONTEND: noninteractive - - steps: - - name: Checkout repo - uses: actions/checkout@v4 - - - name: Download Magic CLI - run: | - curl -ssL https://magic.modular.com/cfba4c92-2390-4b86-93de-04b2f47114d5 | bash - # Add magic to PATH - echo "$HOME/.modular/bin" >> $GITHUB_PATH - - - name: Install build tools (Linux) - if: ${{ matrix.os == 'ubuntu-latest' }} - run: | - ./stdlib/scripts/install-build-tools-linux.sh - - - name: Install build tools (macOS) - if: ${{ matrix.os == 'macos-14' }} - run: | - ./stdlib/scripts/install-build-tools-macos.sh - - - name: Run standard library tests and examples - env: - MOJO_ENABLE_ASSERTIONS_IN_TESTS: ${{ matrix.mojo-enable-assertions }} - run: | - magic run --frozen tests - magic run --frozen examples diff --git a/.github/workflows/test_pre_commit.yml b/.github/workflows/test_pre_commit.yml deleted file mode 100644 index 99a2ddf73d..0000000000 --- a/.github/workflows/test_pre_commit.yml +++ /dev/null @@ -1,52 +0,0 @@ -# ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. -# -# Licensed under the Apache License v2.0 with LLVM Exceptions: -# https://llvm.org/LICENSE.txt -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# ===----------------------------------------------------------------------=== # - -name: Run pre-commit -on: - pull_request: - types: [opened, synchronize, reopened, ready_for_review] - workflow_dispatch: - -permissions: - contents: read - pull-requests: read - -jobs: - lint: - runs-on: "ubuntu-latest" - timeout-minutes: 30 - - defaults: - run: - shell: bash - env: - DEBIAN_FRONTEND: noninteractive - - steps: - - name: Checkout repo - uses: actions/checkout@v4 - - - name: Download Magic CLI - run: | - curl -ssL https://magic.modular.com/cfba4c92-2390-4b86-93de-04b2f47114d5 | bash - # Add magic to PATH - echo "$HOME/.modular/bin" >> $GITHUB_PATH - - - name: Install pre-commit - run: | - pip install pre-commit - pre-commit install - - - name: Run pre-commit - run: magic run pre-commit run --all-files - diff --git a/docs/manual/parameters/index.mdx b/docs/manual/parameters/index.mdx index 169ce7db48..22f588a94a 100644 --- a/docs/manual/parameters/index.mdx +++ b/docs/manual/parameters/index.mdx @@ -243,14 +243,14 @@ value that has a more specific bound on one or more of its parameters. For example, the following code defines a `Container` type that holds an instance of `CollectionElement`. It also defines a `__str__()` method that can only be called if the stored `ElementType` conforms to -`StringableCollectionElement`: +`WritableCollectionElement`: ```mojo @value struct Container[ElementType: CollectionElement]: var element: ElementType - def __str__[StrElementType: StringableCollectionElement, //]( + def __str__[StrElementType: WritableCollectionElement, //]( self: Container[StrElementType]) -> String: return String(self.element) @@ -270,15 +270,15 @@ Hello Note the signature of the `__str__()` method, which declares the `self` argument with a more specific type. Specifically, it declares that it takes a `Container` -with an `ElementType` that conforms to the `StringableCollectionElement` trait. +with an `ElementType` that conforms to the `WritableCollectionElement` trait. ```mojo -def __str__[StrElementType: StringableCollectionElement, //]( +def __str__[StrElementType: WritableCollectionElement, //]( self: Container[StrElementType]) -> String: ``` This trait must be a superset of `ElementType`'s original trait: for example, -`StringableCollectionElement` inherits from `CollectionElement`, so it includes +`WritableCollectionElement` inherits from `CollectionElement`, so it includes all of requirements of the original trait. Note that the `use_container()` function calls the `__str__()` method directly, @@ -520,7 +520,7 @@ For example, consider the following struct: ```mojo @value -struct One[Type: StringableCollectionElement]: +struct One[Type: WritableCollectionElement]: var value: Type fn __init__(out self, value: Type): @@ -538,7 +538,7 @@ You can also infer parameters from a parameterized type passed to a constructor or static method: ```mojo -struct Two[Type: StringableCollectionElement]: +struct Two[Type: WritableCollectionElement]: var val1: Type var val2: Type diff --git a/docs/manual/traits.mdx b/docs/manual/traits.mdx index a9be57cf71..4369bd23ca 100644 --- a/docs/manual/traits.mdx +++ b/docs/manual/traits.mdx @@ -304,7 +304,6 @@ own types. These standard library traits include: * [`ComparableCollectionElement`](/mojo/stdlib/builtin/value/ComparableCollectionElement) * [`Copyable`](/mojo/stdlib/builtin/value/Copyable) * [`Defaultable`](/mojo/stdlib/builtin/value/Defaultable) -* [`Writable`](/mojo/stdlib/utils/write/Writable) * [`Hashable`](/mojo/stdlib/builtin/hash/Hashable) * [`Indexer`](/mojo/stdlib/builtin/int/Indexer) * [`Intable`](/mojo/stdlib/builtin/int/Intable) @@ -318,10 +317,11 @@ own types. These standard library traits include: * [`RepresentableKeyElement`](/mojo/stdlib/collections/dict/RepresentableKeyElement) * [`Sized`](/mojo/stdlib/builtin/len/Sized) * [`Stringable`](/mojo/stdlib/builtin/str/Stringable) -* [`StringableCollectionElement`](/mojo/stdlib/builtin/value/StringableCollectionElement) * [`StringableRaising`](/mojo/stdlib/builtin/str/StringableRaising) * [`StringRepresentable`](/mojo/stdlib/collections/string/StringRepresentable) * [`Roundable`](/mojo/stdlib/builtin/math/Roundable) +* [`Writable`](/mojo/stdlib/utils/write/Writable) +* [`WritableCollectionElement`](/mojo/stdlib/builtin/value/WritableCollectionElement) * [`Writer`](/mojo/stdlib/utils/write/Writer) * [`Truncable`](/mojo/stdlib/builtin/_math/Truncable) From ddddf01fef638c22548f81168cd80698353389d0 Mon Sep 17 00:00:00 2001 From: bgreni <42788181+bgreni@users.noreply.github.com> Date: Thu, 13 Feb 2025 07:41:44 -0800 Subject: [PATCH 387/509] [External] [stdlib] Consistently use `Indexer` in `LinkedList` (#55875) [External] [stdlib] Consistently use `Indexer` in `LinkedList` Use `Indexer` in all appropriate locations in `LinkedList` for consistency. Co-authored-by: bgreni <42788181+bgreni@users.noreply.github.com> Closes modularml/mojo#3990 MODULAR_ORIG_COMMIT_REV_ID: 414230e1163eab1e961bece26ab395bef8b3904c --- stdlib/src/collections/linked_list.mojo | 28 ++++++++++++++++++------- 1 file changed, 21 insertions(+), 7 deletions(-) diff --git a/stdlib/src/collections/linked_list.mojo b/stdlib/src/collections/linked_list.mojo index ef34ce84b9..ce4ac74d1e 100644 --- a/stdlib/src/collections/linked_list.mojo +++ b/stdlib/src/collections/linked_list.mojo @@ -420,12 +420,15 @@ struct LinkedList[ curr = curr[].next return new^ - fn insert(mut self, owned idx: Int, owned elem: ElementType) raises: + fn insert[I: Indexer](mut self, idx: I, owned elem: ElementType) raises: """ Insert an element `elem` into the list at index `idx`. Time Complexity: O(1) + Parameters: + I: The type of index to use. + Raises: When given an out of bounds index. @@ -433,7 +436,7 @@ struct LinkedList[ idx: The index to insert `elem` at. `-len(self) <= idx <= len(self)`. elem: The item to insert into the list. """ - var i = max(0, index(idx) if idx >= 0 else index(idx) + len(self)) + var i = max(0, index(idx) if Int(idx) >= 0 else index(idx) + len(self)) if i == 0: var node = Self._NodePointer.alloc(1) @@ -478,7 +481,7 @@ struct LinkedList[ self._head = node self._size += 1 else: - raise String("Index {} out of bounds").format(idx) + raise String("Index {} out of bounds").format(i) fn extend(mut self, owned other: Self): """ @@ -610,7 +613,9 @@ struct LinkedList[ """ return not (self == other) - fn _get_node_ptr(ref self, index: Int) -> UnsafePointer[Node[ElementType]]: + fn _get_node_ptr[ + I: Indexer + ](ref self, index: I) -> UnsafePointer[Node[ElementType]]: """ Get a pointer to the node at the specified index. @@ -619,6 +624,9 @@ struct LinkedList[ Time Complexity: O(n) in len(self) + Parameters: + I: The type of index to use. + Args: index: The index of the node to get. @@ -626,7 +634,7 @@ struct LinkedList[ A pointer to the node at the specified index. """ var l = len(self) - var i = normalize_index[container_name="LinkedList"](index, self) + var i = normalize_index[container_name="LinkedList"](Int(index), self) debug_assert(0 <= i < l, "index out of bounds") var mid = l // 2 if i <= mid: @@ -640,12 +648,15 @@ struct LinkedList[ curr = curr[].prev return curr - fn __getitem__(ref self, index: Int) -> ref [self] ElementType: + fn __getitem__[I: Indexer](ref self, index: I) -> ref [self] ElementType: """ Get the element at the specified index. Time Complexity: O(n) in len(self) + Parameters: + I: The type of index to use. + Args: index: The index of the element to get. @@ -655,12 +666,15 @@ struct LinkedList[ debug_assert(len(self) > 0, "unable to get item from empty list") return self._get_node_ptr(index)[].value - fn __setitem__(mut self, index: Int, owned value: ElementType): + fn __setitem__[I: Indexer](mut self, index: I, owned value: ElementType): """ Set the element at the specified index. Time Complexity: O(n) in len(self) + Parameters: + I: The type of index to use. + Args: index: The index of the element to set. value: The new value to set. From f789084ea8e5e8f022b72d88bb0ade2b77cf6f74 Mon Sep 17 00:00:00 2001 From: modularbot <116839051+modularbot@users.noreply.github.com> Date: Thu, 13 Feb 2025 07:43:53 -0800 Subject: [PATCH 388/509] [External] [stdlib] Add UInt `__invert__` (#50655) [External] [stdlib] Add UInt `__invert__` Add UInt `__invert__` ORIGINAL_AUTHOR=martinvuyk <110240700+martinvuyk@users.noreply.github.com> PUBLIC_PR_LINK=modularml/mojo#3643 Co-authored-by: martinvuyk <110240700+martinvuyk@users.noreply.github.com> Co-authored-by: Jack Clayton Closes modularml/mojo#3643 MODULAR_ORIG_COMMIT_REV_ID: 40fa1a7c7183ebca9270964545bbe025fc097c10 --- stdlib/src/builtin/uint.mojo | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/stdlib/src/builtin/uint.mojo b/stdlib/src/builtin/uint.mojo index 8a5a02e822..c45ebb660c 100644 --- a/stdlib/src/builtin/uint.mojo +++ b/stdlib/src/builtin/uint.mojo @@ -394,6 +394,15 @@ struct UInt(Indexer, _HashableWithHasher): """ return __mlir_op.`index.or`(self.value, rhs.value) + @always_inline("nodebug") + fn __invert__(self) -> UInt: + """Return ~self. + + Returns: + The ~self value. + """ + return self ^ Self.MAX + @always_inline fn __ceildiv__(self, denominator: Self) -> Self: """Return the rounded-up result of dividing self by denominator. From c5c4767ab5ed6ed1af236b8315560f1265000927 Mon Sep 17 00:00:00 2001 From: Yinon Burgansky Date: Thu, 13 Feb 2025 08:34:09 -0800 Subject: [PATCH 389/509] [External] [stdlib] Optimize normalize_index for unsigned types (#55873) [External] [stdlib] Optimize normalize_index for unsigned types Use the `Indexer` trait in `normalize_index` to optimize for `UInt`, `UInt8`, `UInt16`, `UInt32`, and `UInt64` types. Co-authored-by: Yinon Burgansky Co-authored-by: Jack Clayton Closes modularml/mojo#3957 MODULAR_ORIG_COMMIT_REV_ID: 891390dbec00fe6323f11afc3231ec2356c1b02c --- .../src/collections/_index_normalization.mojo | 106 +++++++++++++----- stdlib/src/collections/inline_array.mojo | 25 +---- stdlib/src/collections/linked_list.mojo | 2 +- stdlib/src/collections/string/string.mojo | 2 +- .../collections/test_index_normalization.mojo | 100 ++++++++++++++--- 5 files changed, 170 insertions(+), 65 deletions(-) diff --git a/stdlib/src/collections/_index_normalization.mojo b/stdlib/src/collections/_index_normalization.mojo index 80da530acc..d58e5829d4 100644 --- a/stdlib/src/collections/_index_normalization.mojo +++ b/stdlib/src/collections/_index_normalization.mojo @@ -13,44 +13,100 @@ """The utilities provided in this module help normalize the access to data elements in arrays.""" +from sys.intrinsics import _type_is_eq +from sys import sizeof + + +@always_inline +fn normalize_index[ + I: Indexer, //, container_name: StringLiteral +](idx: I, length: UInt) -> UInt: + """Normalize the given index value to a valid index value for the given container length. + + If the provided value is negative, the `index + container_length` is returned. + + Parameters: + I: A type that can be used as an index. + container_name: The name of the container. Used for the error message. + + Args: + idx: The index value to normalize. + length: The container length to normalize the index for. + + Returns: + The normalized index value. + """ + + @parameter + if ( + _type_is_eq[I, UInt]() + or _type_is_eq[I, UInt8]() + or _type_is_eq[I, UInt16]() + or _type_is_eq[I, UInt32]() + or _type_is_eq[I, UInt64]() + ): + var i = UInt(index(idx)) + # TODO: Consider a way to construct the error message after the assert has failed + # something like "Indexing into an empty container" if length == 0 else "..." + debug_assert[assert_mode="safe", cpu_only=True]( + i < length, + container_name, + " index out of bounds: index (", + i, + ") valid range: -", # can't print -UInt.MAX + length, + " <= index < ", + length, + ) + return i + else: + var mlir_index = index(idx) + var i = UInt(mlir_index) + if Int(mlir_index) < 0: + i += length + # Checking the bounds after the normalization saves a comparison + # while allowing negative indexing into containers with length > Int.MAX. + # For a positive index this is trivially correct. + # For a negative index we can infer the full bounds check from + # the assert UInt(idx + length) < length, by considering 2 cases: + # when length > Int.MAX then: + # idx + length > idx + Int.MAX >= Int.MIN + Int.MAX = -1 + # therefore idx + length >= 0 + # when length <= Int.MAX then: + # UInt(idx + length) < length <= Int.MAX + # Which means UInt(idx + length) signed bit is off + # therefore idx + length >= 0 + # in either case we can infer 0 <= idx + length < length + debug_assert[assert_mode="safe", cpu_only=True]( + i < length, + container_name, + " index out of bounds: index (", + Int(mlir_index), + ") valid range: -", # can't print -UInt.MAX + length, + " <= index < ", + length, + ) + return i + @always_inline fn normalize_index[ - ContainerType: Sized, //, container_name: StringLiteral -](idx: Int, container: ContainerType) -> Int: + I: Indexer, //, container_name: StringLiteral +](idx: I, length: Int) -> Int: """Normalize the given index value to a valid index value for the given container length. If the provided value is negative, the `index + container_length` is returned. Parameters: - ContainerType: The type of the container. Must have a `__len__` method. + I: A type that can be used as an index. container_name: The name of the container. Used for the error message. Args: idx: The index value to normalize. - container: The container to normalize the index for. + length: The container length to normalize the index for. Returns: The normalized index value. """ - debug_assert[assert_mode="safe", cpu_only=True]( - len(container) > 0, - "indexing into a ", - container_name, - " that has 0 elements", - ) - debug_assert[assert_mode="safe", cpu_only=True]( - -len(container) <= idx < len(container), - container_name, - " has length: ", - len(container), - " index out of bounds: ", - idx, - " should be between ", - -len(container), - " and ", - len(container) - 1, - ) - if idx >= 0: - return idx - return idx + len(container) + return Int(normalize_index[container_name](idx, UInt(length))) diff --git a/stdlib/src/collections/inline_array.mojo b/stdlib/src/collections/inline_array.mojo index 7def2c4254..142545b5a6 100644 --- a/stdlib/src/collections/inline_array.mojo +++ b/stdlib/src/collections/inline_array.mojo @@ -233,15 +233,8 @@ struct InlineArray[ Returns: A reference to the item at the given index. """ - - @parameter - if _type_is_eq[I, UInt](): - return self.unsafe_get(idx) - else: - var normalized_index = normalize_index["InlineArray"]( - Int(idx), self - ) - return self.unsafe_get(normalized_index) + var normalized_index = normalize_index["InlineArray"](idx, len(self)) + return self.unsafe_get(normalized_index) @always_inline fn __getitem__[ @@ -257,18 +250,8 @@ struct InlineArray[ A reference to the item at the given index. """ constrained[-size <= Int(idx) < size, "Index must be within bounds."]() - - @parameter - if _type_is_eq[I, UInt](): - return self.unsafe_get(idx) - else: - var normalized_idx = Int(idx) - - @parameter - if Int(idx) < 0: - normalized_idx += size - - return self.unsafe_get(normalized_idx) + alias normalized_index = normalize_index["InlineArray"](idx, size) + return self.unsafe_get(normalized_index) # ===------------------------------------------------------------------=== # # Trait implementations diff --git a/stdlib/src/collections/linked_list.mojo b/stdlib/src/collections/linked_list.mojo index ce4ac74d1e..83bf614c47 100644 --- a/stdlib/src/collections/linked_list.mojo +++ b/stdlib/src/collections/linked_list.mojo @@ -634,7 +634,7 @@ struct LinkedList[ A pointer to the node at the specified index. """ var l = len(self) - var i = normalize_index[container_name="LinkedList"](Int(index), self) + var i = normalize_index["LinkedList"](index, l) debug_assert(0 <= i < l, "index out of bounds") var mid = l // 2 if i <= mid: diff --git a/stdlib/src/collections/string/string.mojo b/stdlib/src/collections/string/string.mojo index f8cda0973f..abf923b261 100644 --- a/stdlib/src/collections/string/string.mojo +++ b/stdlib/src/collections/string/string.mojo @@ -860,7 +860,7 @@ struct String( A new string containing the character at the specified position. """ # TODO(#933): implement this for unicode when we support llvm intrinsic evaluation at compile time - var normalized_idx = normalize_index["String"](index(idx), self) + var normalized_idx = normalize_index["String"](idx, len(self)) var buf = Self._buffer_type(capacity=1) buf.append(self._buffer[normalized_idx]) buf.append(0) diff --git a/stdlib/test/collections/test_index_normalization.mojo b/stdlib/test/collections/test_index_normalization.mojo index 0039180c55..0234b526e7 100644 --- a/stdlib/test/collections/test_index_normalization.mojo +++ b/stdlib/test/collections/test_index_normalization.mojo @@ -18,27 +18,93 @@ from testing import assert_equal def test_out_of_bounds_message(): - l = List[Int](1, 2) - # CHECK: index out of bounds: 2 - _ = normalize_index["List"](2, l) - # CHECK: index out of bounds: -3 - _ = normalize_index["List"](-3, l) + # CHECK: index out of bounds + _ = normalize_index[""](2, 2) + # CHECK: index out of bounds + _ = normalize_index[""](UInt(2), 2) + # CHECK: index out of bounds + _ = normalize_index[""](2, UInt(2)) + # CHECK: index out of bounds + _ = normalize_index[""](UInt(2), UInt(2)) + # CHECK: index out of bounds + _ = normalize_index[""](UInt8(2), 2) - l2 = List[Int]() - # CHECK: indexing into a List that has 0 elements - _ = normalize_index["List"](2, l2) + # CHECK: index out of bounds + _ = normalize_index[""](-3, 2) + # CHECK: index out of bounds + _ = normalize_index[""](-3, UInt(2)) + # CHECK: index out of bounds + _ = normalize_index[""](Int8(-3), 2) + + # CHECK: index out of bounds + _ = normalize_index[""](2, 0) + # CHECK: index out of bounds + _ = normalize_index[""](UInt(2), 0) + # CHECK: index out of bounds + _ = normalize_index[""](2, UInt(0)) + # CHECK: index out of bounds + _ = normalize_index[""](UInt(2), UInt(0)) + + # CHECK: index out of bounds + _ = normalize_index[""](Int.MIN, 10) + # CHECK: index out of bounds + _ = normalize_index[""](Int.MIN, UInt(10)) + # CHECK: index out of bounds + _ = normalize_index[""](Int.MAX, 10) + # CHECK: index out of bounds + _ = normalize_index[""](Int.MAX, UInt(10)) + # CHECK: index out of bounds + _ = normalize_index[""](Int.MIN, Int.MAX) + + # CHECK: index out of bounds + _ = normalize_index[""](UInt.MAX, 10) + # CHECK: index out of bounds + _ = normalize_index[""](UInt.MAX, UInt(10)) + # CHECK: index out of bounds + _ = normalize_index[""](UInt.MAX, UInt.MAX) + # CHECK: index out of bounds + _ = normalize_index[""](UInt.MAX, UInt.MAX - 10) def test_normalize_index(): - container = List[Int](1, 1, 1, 1) - assert_equal(normalize_index[""](-4, container), 0) - assert_equal(normalize_index[""](-3, container), 1) - assert_equal(normalize_index[""](-2, container), 2) - assert_equal(normalize_index[""](-1, container), 3) - assert_equal(normalize_index[""](0, container), 0) - assert_equal(normalize_index[""](1, container), 1) - assert_equal(normalize_index[""](2, container), 2) - assert_equal(normalize_index[""](3, container), 3) + assert_equal(normalize_index[""](-3, 3), 0) + assert_equal(normalize_index[""](-2, 3), 1) + assert_equal(normalize_index[""](-1, 3), 2) + assert_equal(normalize_index[""](0, 3), 0) + assert_equal(normalize_index[""](1, 3), 1) + assert_equal(normalize_index[""](2, 3), 2) + + assert_equal(normalize_index[""](-3, UInt(3)), 0) + assert_equal(normalize_index[""](-2, UInt(3)), 1) + assert_equal(normalize_index[""](-1, UInt(3)), 2) + assert_equal(normalize_index[""](0, UInt(3)), 0) + assert_equal(normalize_index[""](1, UInt(3)), 1) + assert_equal(normalize_index[""](2, UInt(3)), 2) + + assert_equal(normalize_index[""](UInt(0), UInt(3)), 0) + assert_equal(normalize_index[""](UInt(1), UInt(3)), 1) + assert_equal(normalize_index[""](UInt(2), UInt(3)), 2) + + assert_equal(normalize_index[""](Int8(-3), 3), 0) + assert_equal(normalize_index[""](Int8(-2), 3), 1) + assert_equal(normalize_index[""](Int8(-1), 3), 2) + assert_equal(normalize_index[""](Int8(0), 3), 0) + assert_equal(normalize_index[""](Int8(1), 3), 1) + assert_equal(normalize_index[""](Int8(2), 3), 2) + + assert_equal(normalize_index[""](UInt8(0), 3), 0) + assert_equal(normalize_index[""](UInt8(1), 3), 1) + assert_equal(normalize_index[""](UInt8(2), 3), 2) + + assert_equal(normalize_index[""](UInt(1), UInt.MAX), 1) + assert_equal(normalize_index[""](UInt.MAX - 5, UInt.MAX), UInt.MAX - 5) + + assert_equal(normalize_index[""](-1, Int.MAX), Int.MAX - 1) + assert_equal(normalize_index[""](-10, Int.MAX), Int.MAX - 10) + assert_equal(normalize_index[""](-1, UInt.MAX), UInt.MAX - 1) + assert_equal(normalize_index[""](-10, UInt.MAX), UInt.MAX - 10) + assert_equal(normalize_index[""](-1, UInt(Int.MAX) + 1), UInt(Int.MAX)) + assert_equal(normalize_index[""](Int.MIN, UInt(Int.MAX) + 1), 0) def main(): From fd3c61727868031cef27566d444eb499f33fbf18 Mon Sep 17 00:00:00 2001 From: Robert <121340777+rcghpge@users.noreply.github.com> Date: Thu, 13 Feb 2025 08:35:00 -0800 Subject: [PATCH 390/509] [External] [docs] Update faq.md (#55870) [External] [docs] Update faq.md Update mojo to Mojo in FAQ. Co-authored-by: Robert <121340777+rcghpge@users.noreply.github.com> Closes modularml/mojo#3982 MODULAR_ORIG_COMMIT_REV_ID: de613bd8a441f61d1e680d82bdf8aa5ee2ef3c49 --- docs/faq.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/faq.md b/docs/faq.md index e6f68d46e2..2061c83564 100644 --- a/docs/faq.md +++ b/docs/faq.md @@ -31,7 +31,7 @@ name for a language that brings magical powers to Python, including unlocking an innovative programming model for accelerators and other heterogeneous systems pervasive in AI today. -### Why does mojo have the 🔥 file extension? +### Why does Mojo have the 🔥 file extension? We paired Mojo with fire emoji 🔥 as a fun visual way to impart onto users that Mojo empowers them to get their Mojo on—to develop faster and more efficiently From 59357983053d1d9948610f1836415eb183cd700d Mon Sep 17 00:00:00 2001 From: Patrick Dougherty Date: Thu, 13 Feb 2025 11:59:48 -0600 Subject: [PATCH 391/509] [CI] Fix up teams for CODEOWNERS MODULAR_ORIG_COMMIT_REV_ID: 8bb34f18726e697c70546aefccab6c4f2ba8679d --- .github/CODEOWNERS | 14 ++++ .github/ISSUE_TEMPLATE/doc_issue.yaml | 50 ++++++++++++++ .github/ISSUE_TEMPLATE/mojo_bug_report.yaml | 61 +++++++++++++++++ .../ISSUE_TEMPLATE/mojo_feature_request.yaml | 63 +++++++++++++++++ .github/PULL_REQUEST_TEMPLATE.md | 10 +++ .github/workflows/check_pr_target.yml | 28 ++++++++ .github/workflows/check_pr_title.yml | 53 +++++++++++++++ .../standard_library_tests_and_examples.yml | 67 +++++++++++++++++++ .github/workflows/test_pre_commit.yml | 52 ++++++++++++++ 9 files changed, 398 insertions(+) create mode 100644 .github/CODEOWNERS create mode 100644 .github/ISSUE_TEMPLATE/doc_issue.yaml create mode 100644 .github/ISSUE_TEMPLATE/mojo_bug_report.yaml create mode 100644 .github/ISSUE_TEMPLATE/mojo_feature_request.yaml create mode 100644 .github/PULL_REQUEST_TEMPLATE.md create mode 100644 .github/workflows/check_pr_target.yml create mode 100644 .github/workflows/check_pr_title.yml create mode 100644 .github/workflows/standard_library_tests_and_examples.yml create mode 100644 .github/workflows/test_pre_commit.yml diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS new file mode 100644 index 0000000000..f091037d6b --- /dev/null +++ b/.github/CODEOWNERS @@ -0,0 +1,14 @@ +# Code owners for the Mojo repository + +# Standard Library Sources +/stdlib/ @modular/stdlib + +# Documentation +/docs/ @modular/mojo-docs + +/docs/changelog.md @modular/stdlib + +/stdlib/docs/ @modular/mojo-docs @modular/stdlib + +# Examples +/examples/ @jackos diff --git a/.github/ISSUE_TEMPLATE/doc_issue.yaml b/.github/ISSUE_TEMPLATE/doc_issue.yaml new file mode 100644 index 0000000000..daf162cefc --- /dev/null +++ b/.github/ISSUE_TEMPLATE/doc_issue.yaml @@ -0,0 +1,50 @@ +##===----------------------------------------------------------------------===## +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +##===----------------------------------------------------------------------===## + +name: Documentation issue +description: Report a problem with the Mojo docs +title: "[Docs]" +labels: + - documentation +body: + - type: markdown + attributes: + value: | + Thank you for helping us improve the Mojo docs! + + Please add a title above and fill in the following fields so we can understand the problem. + + - type: input + attributes: + label: Where is the problem? + description: Provide a link to the problematic page (with a heading anchor). + validations: + required: true + + - type: textarea + attributes: + label: What can we do better? + description: Describe the documentation problem and how you suggest we fix it. + validations: + required: true + + - type: textarea + attributes: + label: Anything else? + validations: + required: false + + - type: markdown + attributes: + value: | + Thank you! diff --git a/.github/ISSUE_TEMPLATE/mojo_bug_report.yaml b/.github/ISSUE_TEMPLATE/mojo_bug_report.yaml new file mode 100644 index 0000000000..57b19d978c --- /dev/null +++ b/.github/ISSUE_TEMPLATE/mojo_bug_report.yaml @@ -0,0 +1,61 @@ +##===----------------------------------------------------------------------===## +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +##===----------------------------------------------------------------------===## + +name: Mojo bug report +description: Create a bug report to help us improve Mojo +title: "[BUG]" +labels: + - "bug,mojo" +body: + - type: markdown + attributes: + value: | + Thanks for taking the time to fill out a bug report! + + Please provide a descriptive title above and fill in the following fields. + + - type: textarea + id: Description + attributes: + label: Bug description + description: Describe the bug you encountered and what you expected to happen. + value: | + ### Actual behavior + + + ### Expected behavior + + validations: + required: true + + - type: textarea + id: Steps + attributes: + label: Steps to reproduce + description: Provide the specific steps to reproduce the issue. + value: | + - Provide a relevant code snippet or a link to the code that did not work as expected. + - If applicable, add screenshots to help explain the problem. + - If using the Playground, name the pre-existing notebook that failed and the steps that led to failure. + - Include anything else that might help us debug the issue. + validations: + required: true + + - type: textarea + id: Context + attributes: + label: System information + description: What version of Mojo are you using? + value: | + - Provide the system information by running `magic info`. + - Provide version information for MAX (includes Mojo) by pasting the output of `magic list max`. diff --git a/.github/ISSUE_TEMPLATE/mojo_feature_request.yaml b/.github/ISSUE_TEMPLATE/mojo_feature_request.yaml new file mode 100644 index 0000000000..a5ddc32a58 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/mojo_feature_request.yaml @@ -0,0 +1,63 @@ +##===----------------------------------------------------------------------===## +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +##===----------------------------------------------------------------------===## + +name: Mojo feature request +description: Suggest an enhancement for Mojo +title: "[Feature Request]" +labels: + - "enhancement,mojo" +body: + - type: markdown + attributes: + value: | + Thanks for taking the time to suggest a Mojo enhancement! + + Please enter a concise title above and fill out the following fields. + + - type: checkboxes + id: Roadmap + attributes: + label: Review Mojo's priorities + description: Please take a look at our roadmap before you file a new feature request. + options: + - label: I have read the [roadmap and priorities](https://docs.modular.com/mojo/roadmap.html#overall-priorities) and I believe this request falls within the priorities. + required: true + + - type: markdown + attributes: + value: | + If the request is out of the published roadmap and priorities, please start a [discussion](https://forum.modular.com/) in the Modular Forum to get feedback from the team. + + - type: textarea + id: Request + attributes: + label: What is your request? + description: Describe how you'd like us to improve Mojo. + validations: + required: true + + - type: textarea + id: Motivation + attributes: + label: What is your motivation for this change? + description: Describe the problem that your feature seeks to address (what is the value to the product/user?). + validations: + required: true + + - type: textarea + id: Description + attributes: + label: Any other details? + description: Perhaps some minimum functional attributes the implementation should include, or other context about your feature. + validations: + required: false diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 0000000000..2cd5f0bf30 --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,10 @@ + diff --git a/.github/workflows/check_pr_target.yml b/.github/workflows/check_pr_target.yml new file mode 100644 index 0000000000..4e333baf2a --- /dev/null +++ b/.github/workflows/check_pr_target.yml @@ -0,0 +1,28 @@ +name: Check PR target branch + +on: + pull_request: + types: [opened, edited, synchronize, reopened, ready_for_review] + +permissions: + contents: read + pull-requests: read + +jobs: + check-pr-target: + name: Check PR target branch + + runs-on: ubuntu-latest + timeout-minutes: 10 + + defaults: + run: + shell: bash + + steps: + - name: Fail if not targeting main branch + if: ${{ github.base_ref != 'main' }} + run: | + echo "PRs must be targeted to merge to the main branch!" + echo "PR is currently targeting: \"${{ github.base_ref }}\"" + exit 1 diff --git a/.github/workflows/check_pr_title.yml b/.github/workflows/check_pr_title.yml new file mode 100644 index 0000000000..9b2f320a15 --- /dev/null +++ b/.github/workflows/check_pr_title.yml @@ -0,0 +1,53 @@ +name: Check PR title + +on: + pull_request: + # By default, a workflow only runs when a pull_request's activity type is opened, synchronize, or reopened. We + # explicitly override here so that PR titles are re-linted when the PR text content is edited. + # + # Possible values: https://help.github.com/en/actions/reference/events-that-trigger-workflows#pull-request-event-pull_request + types: [opened, edited, reopened, synchronize, ready_for_review] + +jobs: + check-pr-title: + name: Check PR title format + + permissions: + pull-requests: write + + runs-on: ubuntu-latest + timeout-minutes: 5 + + steps: + - uses: morrisoncole/pr-lint-action@51f3cfabaf5d46f94e54524214e45685f0401b2a + if: github.actor != 'dependabot[bot]' + with: + title-regex: "^(Revert \")?(\\[\\S.*\\]\\s?)+\\s+[a-zA-Z`].*" + repo-token: "${{ secrets.GITHUB_TOKEN }}" + on-failed-regex-fail-action: true + on-failed-regex-create-review: true + on-failed-regex-request-changes: true + on-failed-regex-comment: + "The PR title does not conform to the '[\\] Title' format. + Please update the PR title. + \n\n + Typical [\\] values include: + \n\n + * `[stdlib]` — indicates a change to the Mojo standard library code\n + * `[docs]` — indicates a change to the documentation + \n\n + It's okay to include multiple labels on a PR that + affect multiple areas of work. + \n\n + Thank you for contributing to Mojo!🔥 + \n\n + + You can also use a tool like www.regex101.com to see why your PR + title fails to conform. Use + ``` + %regex% + ``` + as the regex to test and ```${{ github.event.pull_request.title }}``` + as the test string." + on-succeeded-regex-dismiss-review-comment: + "All good now, thanks!🫸🫷" diff --git a/.github/workflows/standard_library_tests_and_examples.yml b/.github/workflows/standard_library_tests_and_examples.yml new file mode 100644 index 0000000000..2f13005fb3 --- /dev/null +++ b/.github/workflows/standard_library_tests_and_examples.yml @@ -0,0 +1,67 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2024, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +name: Test stdlib and examples +on: + pull_request: + types: [opened, synchronize, reopened, ready_for_review] + workflow_dispatch: + +permissions: + contents: read + pull-requests: read + +jobs: + test-examples: + name: with ${{ matrix.os }} and assertions=${{ matrix.mojo-enable-assertions }} + strategy: + fail-fast: false + matrix: + os: ["ubuntu-latest", "macos-14"] + mojo-enable-assertions: [0, 1] + + runs-on: ${{ matrix.os }} + timeout-minutes: 30 + + defaults: + run: + shell: bash + env: + DEBIAN_FRONTEND: noninteractive + + steps: + - name: Checkout repo + uses: actions/checkout@v4 + + - name: Download Magic CLI + run: | + curl -ssL https://magic.modular.com/cfba4c92-2390-4b86-93de-04b2f47114d5 | bash + # Add magic to PATH + echo "$HOME/.modular/bin" >> $GITHUB_PATH + + - name: Install build tools (Linux) + if: ${{ matrix.os == 'ubuntu-latest' }} + run: | + ./stdlib/scripts/install-build-tools-linux.sh + + - name: Install build tools (macOS) + if: ${{ matrix.os == 'macos-14' }} + run: | + ./stdlib/scripts/install-build-tools-macos.sh + + - name: Run standard library tests and examples + env: + MOJO_ENABLE_ASSERTIONS_IN_TESTS: ${{ matrix.mojo-enable-assertions }} + run: | + magic run --frozen tests + magic run --frozen examples diff --git a/.github/workflows/test_pre_commit.yml b/.github/workflows/test_pre_commit.yml new file mode 100644 index 0000000000..99a2ddf73d --- /dev/null +++ b/.github/workflows/test_pre_commit.yml @@ -0,0 +1,52 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2024, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +name: Run pre-commit +on: + pull_request: + types: [opened, synchronize, reopened, ready_for_review] + workflow_dispatch: + +permissions: + contents: read + pull-requests: read + +jobs: + lint: + runs-on: "ubuntu-latest" + timeout-minutes: 30 + + defaults: + run: + shell: bash + env: + DEBIAN_FRONTEND: noninteractive + + steps: + - name: Checkout repo + uses: actions/checkout@v4 + + - name: Download Magic CLI + run: | + curl -ssL https://magic.modular.com/cfba4c92-2390-4b86-93de-04b2f47114d5 | bash + # Add magic to PATH + echo "$HOME/.modular/bin" >> $GITHUB_PATH + + - name: Install pre-commit + run: | + pip install pre-commit + pre-commit install + + - name: Run pre-commit + run: magic run pre-commit run --all-files + From a9f34a7c410c074bd63823cfa04d827731ee4716 Mon Sep 17 00:00:00 2001 From: abdul dakkak Date: Thu, 13 Feb 2025 23:37:14 -0800 Subject: [PATCH 392/509] [Stdlib] Simplify the is_bool_like helper method, NFC MODULAR_ORIG_COMMIT_REV_ID: d7df9586940467bf58d2065678ca863776549e12 --- stdlib/src/sys/param_env.mojo | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/stdlib/src/sys/param_env.mojo b/stdlib/src/sys/param_env.mojo index c24a38d274..124e59d225 100644 --- a/stdlib/src/sys/param_env.mojo +++ b/stdlib/src/sys/param_env.mojo @@ -53,14 +53,14 @@ fn is_defined[name: StringLiteral]() -> Bool: return __mlir_attr[`#kgen.param.expr : i1`] -fn _is_bool_like(val: String) -> Bool: - return val.lower() in ( - String("true"), - String("1"), - String("on"), - String("false"), - String("0"), - String("off"), +fn _is_bool_like[val: StringLiteral]() -> Bool: + return StringLiteral.get[val.lower()]() in ( + "true", + "1", + "on", + "false", + "0", + "off", ) @@ -77,7 +77,7 @@ fn env_get_bool[name: StringLiteral]() -> Bool: alias val = StringLiteral.get[env_get_string[name]().lower()]() constrained[ - _is_bool_like(val), + _is_bool_like[val](), String( "the boolean environment value of `", name, From 60023851acb964ae1b0ec97378f7053086c32d80 Mon Sep 17 00:00:00 2001 From: Connor Gray Date: Fri, 14 Feb 2025 15:40:33 -0600 Subject: [PATCH 393/509] [stdlib] feat: Add `StringSlice.is_codepoint_boundary()` Also updated various `StringSlice` method docs that take start/end positions to make it clear those are expected to be offsets in bytes, not codepoints or graphemes. MODULAR_ORIG_COMMIT_REV_ID: 2a1be430f112c878dd507b9800cc5f4474ec140b --- docs/changelog.md | 3 + .../src/collections/string/string_slice.mojo | 138 ++++++++++++++++-- .../collections/string/test_string_slice.mojo | 23 +++ 3 files changed, 150 insertions(+), 14 deletions(-) diff --git a/docs/changelog.md b/docs/changelog.md index 943f737e9b..14ad9d23bf 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -40,6 +40,9 @@ what we publish. - `ljust()` - `center()` +- Added a `StringSlice.is_codepoint_boundary()` method for querying if a given + byte index is a boundary between encoded UTF-8 codepoints. + ### GPU changes - `ctx.enqueue_function(compiled_func, ...)` is deprecated: diff --git a/stdlib/src/collections/string/string_slice.mojo b/stdlib/src/collections/string/string_slice.mojo index 7856e05c71..32a95a3d55 100644 --- a/stdlib/src/collections/string/string_slice.mojo +++ b/stdlib/src/collections/string/string_slice.mojo @@ -1216,6 +1216,103 @@ struct StringSlice[mut: Bool, //, origin: Origin[mut]]( var continuation_count = _count_utf8_continuation_bytes(self) return self.byte_length() - continuation_count + fn is_codepoint_boundary(self, index: UInt) -> Bool: + """Returns True if `index` is the position of the first byte in a UTF-8 + codepoint sequence, or is at the end of the string. + + A byte position is considered a codepoint boundary if a valid subslice + of the string would end (noninclusive) at `index`. + + Positions `0` and `len(self)` are considered to be codepoint boundaries. + + Positions beyond the length of the string slice will return False. + + Args: + index: An index into the underlying byte representation of the + string. + + Returns: + A boolean indicating if `index` gives the position of the first + byte in a UTF-8 codepoint sequence, or is at the end of the string. + + # Examples + + Check if particular byte positions are codepoint boundaries: + + ```mojo + from collections.string import StringSlice + from testing import assert_equal, assert_true + var abc = StringSlice("abc") + assert_equal(len(abc), 3) + assert_true(abc.is_codepoint_boundary(0)) + assert_true(abc.is_codepoint_boundary(1)) + assert_true(abc.is_codepoint_boundary(2)) + assert_true(abc.is_codepoint_boundary(3)) + ``` + + Only the index of the first byte in a multi-byte codepoint sequence is + considered a codepoint boundary: + + ```mojo + var thumb = StringSlice("👍") + assert_equal(len(thumb), 4) + assert_true(thumb.is_codepoint_boundary(0)) + assert_false(thumb.is_codepoint_boundary(1)) + assert_false(thumb.is_codepoint_boundary(2)) + assert_false(thumb.is_codepoint_boundary(3)) + ``` + + Visualization showing which bytes are considered codepoint boundaries, + within a piece of text that includes codepoints whose UTF-8 + representation requires, respectively, 1, 2, 3, and 4-bytes. The + codepoint boundary byte indices are indicated by a vertical arrow (↑). + + For example, this diagram shows that a slice of bytes formed by the + half-open range starting at byte 3 and extending up to but not including + byte 6 (`[3, 6)`) is a valid UTF-8 sequence. + + ```text + ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ + ┃ a©➇𝄞 ┃ String + ┣━━┳━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━━━━━━┫ + ┃97┃ 169 ┃ 10119 ┃ 119070 ┃ Unicode Codepoints + ┣━━╋━━━┳━━━╋━━━┳━━━┳━━━╋━━━┳━━━┳━━━┳━━━┫ + ┃97┃194┃169┃226┃158┃135┃240┃157┃132┃158┃ UTF-8 Bytes + ┗━━┻━━━┻━━━┻━━━┻━━━┻━━━┻━━━┻━━━┻━━━┻━━━┛ + 0 1 2 3 4 5 6 7 8 9 10 + ↑ ↑ ↑ ↑ ↑ + ``` + + The following program verifies the above diagram: + + ```mojo + from collections.string import StringSlice + from testing import assert_true, assert_false + + var text = StringSlice("a©➇𝄞") + assert_true(text.is_codepoint_boundary(0)) + assert_true(text.is_codepoint_boundary(1)) + assert_false(text.is_codepoint_boundary(2)) + assert_true(text.is_codepoint_boundary(3)) + assert_false(text.is_codepoint_boundary(4)) + assert_false(text.is_codepoint_boundary(5)) + assert_true(text.is_codepoint_boundary(6)) + assert_false(text.is_codepoint_boundary(7)) + assert_false(text.is_codepoint_boundary(8)) + assert_false(text.is_codepoint_boundary(9)) + assert_true(text.is_codepoint_boundary(10)) + ``` + . + """ + # TODO: Example: Print the byte indices that are codepoints boundaries: + + if index >= len(self): + return index == len(self) + + var byte = self.as_bytes()[index] + # If this is not a continuation byte, then it must be a start byte. + return _utf8_byte_type(byte) != 1 + fn get_immutable( self, ) -> StringSlice[ImmutableOrigin.cast_from[origin].result]: @@ -1236,10 +1333,13 @@ struct StringSlice[mut: Bool, //, origin: Origin[mut]]( """Verify if the `StringSlice` starts with the specified prefix between start and end positions. + The `start` and `end` positions must be offsets given in bytes, and + must be codepoint boundaries. + Args: prefix: The prefix to check. - start: The start offset from which to check. - end: The end offset from which to check. + start: The start offset in bytes from which to check. + end: The end offset in bytes from which to check. Returns: True if the `self[start:end]` is prefixed by the input prefix. @@ -1257,10 +1357,13 @@ struct StringSlice[mut: Bool, //, origin: Origin[mut]]( """Verify if the `StringSlice` end with the specified suffix between start and end positions. + The `start` and `end` positions must be offsets given in bytes, and + must be codepoint boundaries. + Args: suffix: The suffix to check. - start: The start offset from which to check. - end: The end offset from which to check. + start: The start offset in bytes from which to check. + end: The end offset in bytes from which to check. Returns: True if the `self[start:end]` is suffixed by the input suffix. @@ -1276,11 +1379,12 @@ struct StringSlice[mut: Bool, //, origin: Origin[mut]]( fn _from_start(self, start: Int) -> Self: """Gets the `StringSlice` pointing to the substring after the specified - slice start position. If start is negative, it is interpreted as the - number of characters from the end of the string to start at. + slice start position in bytes. If start is negative, it is interpreted + as the number of characters from the end of the string to start at. Args: - start: Starting index of the slice. + start: Starting index of the slice in bytes. Must be a codepoint + boundary. Returns: A `StringSlice` borrowed from the current string containing the @@ -1310,6 +1414,8 @@ struct StringSlice[mut: Bool, //, origin: Origin[mut]]( "strref absolute start must be less than source String len", ) + # TODO(MSTDL-1161): Assert that `self.is_codepoint_boundary(abs_start)`. + # TODO: We assumes the StringSlice only has ASCII. # When we support utf-8 slicing, we should drop self._slice[abs_start:] # and use something smarter. @@ -1342,15 +1448,17 @@ struct StringSlice[mut: Bool, //, origin: Origin[mut]]( return _FormatCurlyEntry.format(self, args) fn find(ref self, substr: StringSlice, start: Int = 0) -> Int: - """Finds the offset of the first occurrence of `substr` starting at - `start`. If not found, returns `-1`. + """Finds the offset in bytes of the first occurrence of `substr` + starting at `start`. If not found, returns `-1`. Args: substr: The substring to find. - start: The offset from which to find. + start: The offset in bytes from which to find. Must be a codepoint + boundary. Returns: - The offset of `substr` relative to the beginning of the string. + The offset in bytes of `substr` relative to the beginning of the + string. """ if not substr: return 0 @@ -1375,15 +1483,17 @@ struct StringSlice[mut: Bool, //, origin: Origin[mut]]( return Int(loc) - Int(self.unsafe_ptr()) fn rfind(self, substr: StringSlice, start: Int = 0) -> Int: - """Finds the offset of the last occurrence of `substr` starting at + """Finds the offset in bytes of the last occurrence of `substr` starting at `start`. If not found, returns `-1`. Args: substr: The substring to find. - start: The offset from which to find. + start: The offset in bytes from which to find. Must be a valid + codepoint boundary. Returns: - The offset of `substr` relative to the beginning of the string. + The offset in bytes of `substr` relative to the beginning of the + string. """ if not substr: return len(self) diff --git a/stdlib/test/collections/string/test_string_slice.mojo b/stdlib/test/collections/string/test_string_slice.mojo index fc6ea07273..92851c8e34 100644 --- a/stdlib/test/collections/string/test_string_slice.mojo +++ b/stdlib/test/collections/string/test_string_slice.mojo @@ -434,6 +434,28 @@ def test_find(): ) +def test_is_codepoint_boundary(): + var abc = StringSlice("abc") + assert_equal(len(abc), 3) + assert_true(abc.is_codepoint_boundary(0)) + assert_true(abc.is_codepoint_boundary(1)) + assert_true(abc.is_codepoint_boundary(2)) + assert_true(abc.is_codepoint_boundary(3)) + + var thumb = StringSlice("👍") + assert_equal(len(thumb), 4) + assert_true(thumb.is_codepoint_boundary(0)) + assert_false(thumb.is_codepoint_boundary(1)) + assert_false(thumb.is_codepoint_boundary(2)) + assert_false(thumb.is_codepoint_boundary(3)) + + var empty = StringSlice("") + assert_equal(len(empty), 0) + assert_true(empty.is_codepoint_boundary(0)) + # Also tests that positions greater then the length don't raise/abort. + assert_false(empty.is_codepoint_boundary(1)) + + alias GOOD_SEQUENCES = List[String]( "a", "\xc3\xb1", @@ -1112,6 +1134,7 @@ def main(): test_slice_repr() test_utf8_validation() test_find() + test_is_codepoint_boundary() test_good_utf8_sequences() test_bad_utf8_sequences() test_stringslice_from_utf8() From 5b37652f90a40977d49a8c1b5d5fa02ff13b4271 Mon Sep 17 00:00:00 2001 From: Connor Gray Date: Fri, 14 Feb 2025 17:22:17 -0600 Subject: [PATCH 394/509] [stdlib] polish: Rename `Char` type to `Codepoint` and related methods * Rename Char to Codepoint - Rename `char.mojo` to `codepoint.mojo` and move to collections.string - Rename `test_char.mojo` to `test_codepoint.mojo` and moved directory * Rename CharsIter to CodepointsIter * Rename Codepoint.unsafe_decode_utf8_char => unsafe_decode_utf8_codepoint * Rename .chars() to .codepoints() * Rename .char_slices() to .codepoint_slices() MODULAR_ORIG_COMMIT_REV_ID: 8e487354991e7dfdba18715e61de62adf030bd72 --- docs/changelog.md | 9 ++ stdlib/src/collections/interval.mojo | 2 +- stdlib/src/collections/string/__init__.mojo | 3 +- stdlib/src/collections/string/_unicode.mojo | 54 ++++---- .../string/codepoint.mojo} | 104 ++++++++------ stdlib/src/collections/string/string.mojo | 63 ++++----- .../src/collections/string/string_slice.mojo | 108 ++++++++------- stdlib/src/prelude/__init__.mojo | 3 +- .../test/collections/string/test_string.mojo | 32 ++--- .../collections/string/test_string_slice.mojo | 36 ++--- .../test/collections/string/test_unicode.mojo | 26 ++-- .../test_codepoint.mojo} | 128 +++++++++--------- 12 files changed, 311 insertions(+), 257 deletions(-) rename stdlib/src/{builtin/char.mojo => collections/string/codepoint.mojo} (80%) rename stdlib/test/{builtin/test_char.mojo => collections/test_codepoint.mojo} (59%) diff --git a/docs/changelog.md b/docs/changelog.md index 14ad9d23bf..ac5c0d9063 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -25,6 +25,15 @@ what we publish. - A new `IntervalTree` data structure has been added to the standard library. This is a tree data structure that allows for efficient range queries. +- The `Char` type has been renamed to `Codepoint`, to better capture its + intended purpose of storing a single Unicode codepoint. Additionally, related + method and type names have been updated as well, including: + + - `StringSlice.chars()` to `.codepoints()` (ditto for `String`) + - `StringSlice.char_slices()` to `.codepoint_slices()` (ditto for `String`) + - `CharsIter` to `CodepointsIter` + - `unsafe_decode_utf8_char()` to `unsafe_decode_utf8_codepoint()` + - `StringSlice` now supports several additional methods moved from `String`. The existing `String` methods have been updated to instead call the corresponding new `StringSlice` methods: diff --git a/stdlib/src/collections/interval.mojo b/stdlib/src/collections/interval.mojo index 6938bbe911..9502d173d2 100644 --- a/stdlib/src/collections/interval.mojo +++ b/stdlib/src/collections/interval.mojo @@ -957,7 +957,7 @@ struct IntervalTree[T: IntervalElement, U: IntervalPayload]: 0, pos_x - len(node_str) // 2 ) # Center the node text var i = 0 - for char in node_str.chars(): + for char in node_str.codepoints(): grid[pos_y][start_pos + i] = String(char) i += 1 diff --git a/stdlib/src/collections/string/__init__.mojo b/stdlib/src/collections/string/__init__.mojo index 53ae10eccc..37d7dcb113 100644 --- a/stdlib/src/collections/string/__init__.mojo +++ b/stdlib/src/collections/string/__init__.mojo @@ -13,4 +13,5 @@ """Implements the string package.""" from .string import String, ascii, atof, atol, chr, ord -from .string_slice import CharsIter, StaticString, StringSlice +from .string_slice import CodepointsIter, StaticString, StringSlice +from .codepoint import Codepoint diff --git a/stdlib/src/collections/string/_unicode.mojo b/stdlib/src/collections/string/_unicode.mojo index 6908d5f283..4ec5cd280e 100644 --- a/stdlib/src/collections/string/_unicode.mojo +++ b/stdlib/src/collections/string/_unicode.mojo @@ -16,30 +16,30 @@ from collections.string._unicode_lookups import * from memory import Span, UnsafePointer, memcpy -fn _uppercase_mapping_index(rune: Char) -> Int: +fn _uppercase_mapping_index(rune: Codepoint) -> Int: """Return index for upper case mapping or -1 if no mapping is given.""" return _to_index[has_uppercase_mapping](rune) -fn _uppercase_mapping2_index(rune: Char) -> Int: +fn _uppercase_mapping2_index(rune: Codepoint) -> Int: """Return index for upper case mapping converting the rune to 2 runes, or -1 if no mapping is given. """ return _to_index[has_uppercase_mapping2](rune) -fn _uppercase_mapping3_index(rune: Char) -> Int: +fn _uppercase_mapping3_index(rune: Codepoint) -> Int: """Return index for upper case mapping converting the rune to 3 runes, or -1 if no mapping is given. """ return _to_index[has_uppercase_mapping3](rune) -fn _lowercase_mapping_index(rune: Char) -> Int: +fn _lowercase_mapping_index(rune: Codepoint) -> Int: """Return index for lower case mapping or -1 if no mapping is given.""" return _to_index[has_lowercase_mapping](rune) @always_inline -fn _to_index[lookup: List[UInt32, **_]](rune: Char) -> Int: +fn _to_index[lookup: List[UInt32, **_]](rune: Codepoint) -> Int: """Find index of rune in lookup with binary search. Returns -1 if not found.""" @@ -52,43 +52,43 @@ fn _to_index[lookup: List[UInt32, **_]](rune: Char) -> Int: # TODO: -# Refactor this to return a Span[Char, StaticConstantOrigin], so that the +# Refactor this to return a Span[Codepoint, StaticConstantOrigin], so that the # return `UInt` count and fixed-size `InlineArray` are not necessary. fn _get_uppercase_mapping( - char: Char, -) -> Optional[Tuple[UInt, InlineArray[Char, 3]]]: + char: Codepoint, +) -> Optional[Tuple[UInt, InlineArray[Codepoint, 3]]]: """Returns the 1, 2, or 3 character sequence that is the uppercase form of `char`. Returns None if `char` does not have an uppercase equivalent. """ - var array = InlineArray[Char, 3](fill=Char(0)) + var array = InlineArray[Codepoint, 3](fill=Codepoint(0)) var index1 = _uppercase_mapping_index(char) if index1 != -1: var rune = uppercase_mapping[index1] - array[0] = Char(unsafe_unchecked_codepoint=rune) + array[0] = Codepoint(unsafe_unchecked_codepoint=rune) return Tuple(UInt(1), array) var index2 = _uppercase_mapping2_index(char) if index2 != -1: var runes = uppercase_mapping2[index2] - array[0] = Char(unsafe_unchecked_codepoint=runes[0]) - array[1] = Char(unsafe_unchecked_codepoint=runes[1]) + array[0] = Codepoint(unsafe_unchecked_codepoint=runes[0]) + array[1] = Codepoint(unsafe_unchecked_codepoint=runes[1]) return Tuple(UInt(2), array) var index3 = _uppercase_mapping3_index(char) if index3 != -1: var runes = uppercase_mapping3[index3] - array[0] = Char(unsafe_unchecked_codepoint=runes[0]) - array[1] = Char(unsafe_unchecked_codepoint=runes[1]) - array[2] = Char(unsafe_unchecked_codepoint=runes[2]) + array[0] = Codepoint(unsafe_unchecked_codepoint=runes[0]) + array[1] = Codepoint(unsafe_unchecked_codepoint=runes[1]) + array[2] = Codepoint(unsafe_unchecked_codepoint=runes[2]) return Tuple(UInt(3), array) return None -fn _get_lowercase_mapping(char: Char) -> Optional[Char]: +fn _get_lowercase_mapping(char: Codepoint) -> Optional[Codepoint]: var index: Optional[UInt] = has_lowercase_mapping._binary_search_index( char.to_u32() ) @@ -98,9 +98,9 @@ fn _get_lowercase_mapping(char: Char) -> Optional[Char]: var codepoint = lowercase_mapping[index.unsafe_value()] # SAFETY: - # We know this is a valid `Char` because the mapping data tables + # We know this is a valid `Codepoint` because the mapping data tables # contain only valid codepoints. - return Char(unsafe_unchecked_codepoint=codepoint) + return Codepoint(unsafe_unchecked_codepoint=codepoint) else: return None @@ -117,7 +117,7 @@ fn is_uppercase(s: StringSlice) -> Bool: there is at least one cased character, False otherwise. """ var found = False - for char in s.chars(): + for char in s.codepoints(): var index = _lowercase_mapping_index(char) if index != -1: found = True @@ -146,7 +146,7 @@ fn is_lowercase(s: StringSlice) -> Bool: there is at least one cased character, False otherwise. """ var found = False - for char in s.chars(): + for char in s.codepoints(): var index = _uppercase_mapping_index(char) if index != -1: found = True @@ -178,7 +178,9 @@ fn to_lowercase(s: StringSlice) -> String: var output = List[Byte](capacity=_estimate_needed_size(s.byte_length())) var input_offset = 0 while input_offset < s.byte_length(): - var rune_and_size = Char.unsafe_decode_utf8_char(input + input_offset) + var rune_and_size = Codepoint.unsafe_decode_utf8_codepoint( + input + input_offset + ) var lowercase_char_opt = _get_lowercase_mapping(rune_and_size[0]) if lowercase_char_opt is None: memcpy( @@ -188,7 +190,7 @@ fn to_lowercase(s: StringSlice) -> String: ) output.size += rune_and_size[1] else: - var lower_char: Char = lowercase_char_opt.unsafe_value() + var lower_char: Codepoint = lowercase_char_opt.unsafe_value() output.size += lower_char.unsafe_write_utf8( output._unsafe_next_uninit_ptr() ) @@ -220,20 +222,22 @@ fn to_uppercase(s: StringSlice) -> String: var output = List[Byte](capacity=_estimate_needed_size(s.byte_length())) var input_offset = 0 while input_offset < s.byte_length(): - var rune_and_size = Char.unsafe_decode_utf8_char(input + input_offset) + var rune_and_size = Codepoint.unsafe_decode_utf8_codepoint( + input + input_offset + ) var uppercase_replacement_opt = _get_uppercase_mapping(rune_and_size[0]) if uppercase_replacement_opt: # A given character can be replaced with a sequence of characters - # up to 3 characters in length. A fixed size `Char` array is + # up to 3 characters in length. A fixed size `Codepoint` array is # returned, along with a `count` (1, 2, or 3) of how many # replacement characters are in the uppercase replacement sequence. count, uppercase_replacement_chars = ( uppercase_replacement_opt.unsafe_value() ) for char_idx in range(count): - var char: Char = uppercase_replacement_chars[char_idx] + var char: Codepoint = uppercase_replacement_chars[char_idx] output.size += char.unsafe_write_utf8( output._unsafe_next_uninit_ptr() ) diff --git a/stdlib/src/builtin/char.mojo b/stdlib/src/collections/string/codepoint.mojo similarity index 80% rename from stdlib/src/builtin/char.mojo rename to stdlib/src/collections/string/codepoint.mojo index 620b45273f..0452f15621 100644 --- a/stdlib/src/builtin/char.mojo +++ b/stdlib/src/collections/string/codepoint.mojo @@ -10,7 +10,8 @@ # See the License for the specific language governing permissions and # limitations under the License. # ===----------------------------------------------------------------------=== # -"""Implements the `Char` type for representing single characters.""" +"""Implements the `Codepoint` type for representing single Unicode scalar +values.""" from collections import Optional from collections.string import StringSlice @@ -35,18 +36,38 @@ fn _is_unicode_scalar_value(codepoint: UInt32) -> Bool: @value -struct Char(CollectionElement, EqualityComparable, Intable, Stringable): - """A single textual character. +struct Codepoint(CollectionElement, EqualityComparable, Intable, Stringable): + """A Unicode codepoint, typically a single user-recognizable character; + restricted to valid Unicode scalar values. - This type represents a single textual character. Specifically, this type - stores a single Unicode [*scalar value*][1], typically encoding a single - user-recognizable character. + This type is restricted to store a single Unicode [*scalar value*][1], + typically encoding a single user-recognizable character. All valid Unicode scalar values are in the range(s) 0 to 0xD7FF and 0xE000 to 0x10FFFF, inclusive. This type guarantees that the stored integer value falls in these ranges. [1]: https://www.unicode.org/glossary/#unicode_scalar_value + + # Codepoints vs Scalar Values + + Formally, Unicode defines a codespace of values in the range 0 to + 0x10FFFF inclusive, and a + [Unicode codepoint](https://www.unicode.org/glossary/#code_point) is any + integer falling within that range. However, due to historical reasons, + it became necessary to "carve out" a subset of the codespace, excluding + codepoints in the range 0xD7FF–0xE000. That subset of codepoints excluding + that range are known as [Unicode scalar values][1]. The codepoints in the + range 0xD7FF-0xE000 are known as "surrogate" codepoints. The surrogate + codepoints will never be assigned a semantic meaning, and can only + validly appear in UTF-16 encoded text. + + The difference between codepoints and scalar values is a technical + distiction related to the backwards-compatible workaround chosen to enable + UTF-16 to encode the full range of the Unicode codespace. For simplicities + sake, and to avoid a confusing clash with the Mojo `Scalar` type, this type + is pragmatically named `Codepoint`, even though it is restricted to valid + scalar values. """ var _scalar_value: UInt32 @@ -58,7 +79,7 @@ struct Char(CollectionElement, EqualityComparable, Intable, Stringable): @always_inline fn __init__(out self, *, unsafe_unchecked_codepoint: UInt32): - """Construct a `Char` from a code point value without checking that it + """Construct a `Codepoint` from a code point value without checking that it falls in the valid range. Safety: @@ -79,13 +100,13 @@ struct Char(CollectionElement, EqualityComparable, Intable, Stringable): @always_inline fn __init__(out self, codepoint: UInt8): - """Construct a `Char` from a single byte value. + """Construct a `Codepoint` from a single byte value. This constructor cannot fail because non-negative 8-bit integers are valid Unicode scalar values. Args: - codepoint: The 8-bit codepoint value to convert to a `Char`. + codepoint: The 8-bit codepoint value to convert to a `Codepoint`. """ self._scalar_value = UInt32(Int(codepoint)) @@ -95,44 +116,48 @@ struct Char(CollectionElement, EqualityComparable, Intable, Stringable): @staticmethod fn from_u32(codepoint: UInt32) -> Optional[Self]: - """Construct a `Char` from a code point value. Returns None if the + """Construct a `Codepoint` from a code point value. Returns None if the provided `codepoint` is not in the valid range. Args: codepoint: An integer representing a Unicode scalar value. Returns: - A `Char` if `codepoint` falls in the valid range for Unicode scalar - values, otherwise None. + A `Codepoint` if `codepoint` falls in the valid range for Unicode + scalar values, otherwise None. """ if _is_unicode_scalar_value(codepoint): - return Char(unsafe_unchecked_codepoint=codepoint) + return Codepoint(unsafe_unchecked_codepoint=codepoint) else: return None @staticmethod - fn ord(string: StringSlice) -> Char: - """Returns the `Char` that represents the given one-character string. + fn ord(string: StringSlice) -> Codepoint: + """Returns the `Codepoint` that represents the given single-character + string. - Given a string representing one character, return a `Char` - representing the codepoint of that character. For example, `Char.ord("a")` - returns the codepoint `97`. This is the inverse of the `chr()` function. + Given a string containing one character, return a `Codepoint` + representing the codepoint of that character. For example, + `Codepoint.ord("a")` returns the codepoint `97`. This is the inverse of + the `chr()` function. This function is similar to the `ord()` free function, except that it - returns a `Char` instead of an `Int`. + returns a `Codepoint` instead of an `Int`. Args: string: The input string, which must contain only a single character. Returns: - A `Char` representing the codepoint of the given character. + A `Codepoint` representing the codepoint of the given character. """ # SAFETY: # This is safe because `StringSlice` is guaranteed to point to valid # UTF-8. - char, num_bytes = Char.unsafe_decode_utf8_char(string.unsafe_ptr()) + char, num_bytes = Codepoint.unsafe_decode_utf8_codepoint( + string.unsafe_ptr() + ) debug_assert( string.byte_length() == Int(num_bytes), @@ -142,9 +167,11 @@ struct Char(CollectionElement, EqualityComparable, Intable, Stringable): return char @staticmethod - fn unsafe_decode_utf8_char(_ptr: UnsafePointer[Byte]) -> (Char, Int): - """Decodes a single `Char` and number of bytes read from a given UTF-8 - string pointer. + fn unsafe_decode_utf8_codepoint( + _ptr: UnsafePointer[Byte], + ) -> (Codepoint, Int): + """Decodes a single `Codepoint` and number of bytes read from a given + UTF-8 string pointer. Safety: `_ptr` MUST point to the first byte in a **known-valid** UTF-8 @@ -156,7 +183,8 @@ struct Char(CollectionElement, EqualityComparable, Intable, Stringable): encoded codepoint. Returns: - The decoded codepoint `Char`, as well as the number of bytes read. + The decoded codepoint `Codepoint`, as well as the number of bytes + read. """ # UTF-8 to Unicode conversion: (represented as UInt32 BE) @@ -168,7 +196,7 @@ struct Char(CollectionElement, EqualityComparable, Intable, Stringable): var b1 = ptr[] if (b1 >> 7) == 0: # This is 1 byte ASCII char - return Char(b1), 1 + return Codepoint(b1), 1 # TODO: Use _utf8_first_byte_sequence_length() here instead for # consistency. @@ -200,7 +228,7 @@ struct Char(CollectionElement, EqualityComparable, Intable, Stringable): # UTF-8 encoding algorithms that do not properly exclude surrogate # pair code points are actually relatively common (as I understand # it); the algorithm above does not check for that. - var char = Char(unsafe_unchecked_codepoint=result) + var char = Codepoint(unsafe_unchecked_codepoint=result) return char, Int(num_bytes) @@ -248,7 +276,7 @@ struct Char(CollectionElement, EqualityComparable, Intable, Stringable): @always_inline fn __str__(self) -> String: - """Formats this `Char` as a single-character string. + """Formats this `Codepoint` as a single-character string. Returns: A string containing this single character. @@ -266,13 +294,13 @@ struct Char(CollectionElement, EqualityComparable, Intable, Stringable): @always_inline fn is_ascii(self) -> Bool: - """Returns True if this `Char` is an ASCII character. + """Returns True if this `Codepoint` is an ASCII character. All ASCII characters are less than or equal to codepoint value 127, and take exactly 1 byte to encode in UTF-8. Returns: - A boolean indicating if this `Char` is an ASCII character. + A boolean indicating if this `Codepoint` is an ASCII character. """ return self._scalar_value <= 0b0111_1111 @@ -342,21 +370,21 @@ struct Char(CollectionElement, EqualityComparable, Intable, Stringable): from testing import assert_true, assert_false # ASCII space characters - assert_true(Char.ord(" ").is_python_space()) - assert_true(Char.ord("\t").is_python_space()) + assert_true(Codepoint.ord(" ").is_python_space()) + assert_true(Codepoint.ord("\t").is_python_space()) # Unicode paragraph separator: - assert_true(Char.from_u32(0x2029).value().is_python_space()) + assert_true(Codepoint.from_u32(0x2029).value().is_python_space()) # Letters are not space characters - assert_fales(Char.ord("a").is_python_space()) + assert_fales(Codepoint.ord("a").is_python_space()) ``` . """ - alias next_line = Char.from_u32(0x85).value() - alias unicode_line_sep = Char.from_u32(0x2028).value() - alias unicode_paragraph_sep = Char.from_u32(0x2029).value() + alias next_line = Codepoint.from_u32(0x85).value() + alias unicode_line_sep = Codepoint.from_u32(0x2028).value() + alias unicode_paragraph_sep = Codepoint.from_u32(0x2029).value() return self.is_posix_space() or self in ( next_line, @@ -365,7 +393,7 @@ struct Char(CollectionElement, EqualityComparable, Intable, Stringable): ) fn is_posix_space(self) -> Bool: - """Returns True if this `Char` is a **space** character according to the + """Returns True if this `Codepoint` is a **space** character according to the [POSIX locale][1]. The POSIX locale is also known as the C locale. diff --git a/stdlib/src/collections/string/string.mojo b/stdlib/src/collections/string/string.mojo index abf923b261..2ed0a1b676 100644 --- a/stdlib/src/collections/string/string.mojo +++ b/stdlib/src/collections/string/string.mojo @@ -14,7 +14,7 @@ from collections import KeyElement, List, Optional from collections._index_normalization import normalize_index -from collections.string import CharsIter +from collections.string import CodepointsIter from collections.string.format import _CurlyEntryFormattable, _FormatCurlyEntry from collections.string.string_slice import ( StaticString, @@ -48,19 +48,20 @@ from utils.write import _TotalWritableBytes, _WriteBufferHeap, write_buffered fn ord(s: StringSlice) -> Int: - """Returns an integer that represents the given one-character string. + """Returns an integer that represents the codepoint of a single-character + string. - Given a string representing one character, return an integer - representing the code point of that character. For example, `ord("a")` + Given a string containing a single character `Codepoint`, return an integer + representing the codepoint of that character. For example, `ord("a")` returns the integer `97`. This is the inverse of the `chr()` function. Args: - s: The input string, which must contain only a single character. + s: The input string, which must contain only a single- character. Returns: An integer representing the code point of the given character. """ - return Int(Char.ord(s)) + return Int(Codepoint.ord(s)) # ===----------------------------------------------------------------------=== # @@ -89,7 +90,7 @@ fn chr(c: Int) -> String: if c < 0b1000_0000: # 1 byte ASCII char return String(String._buffer_type(c, 0)) - var char_opt = Char.from_u32(c) + var char_opt = Codepoint.from_u32(c) if not char_opt: # TODO: Raise ValueError instead. return abort[String]( @@ -135,7 +136,7 @@ fn _repr_ascii(c: UInt8) -> String: if c == ord_back_slash: return r"\\" - elif Char(c).is_ascii_printable(): + elif Codepoint(c).is_ascii_printable(): return _chr_ascii(c) elif c == ord_tab: return r"\t" @@ -284,13 +285,13 @@ fn atol(str_slice: StringSlice, base: Int = 10) raises -> Int: elif ord_letter_min[1] <= ord_current <= ord_letter_max[1]: result += ord_current - ord_letter_min[1] + 10 found_valid_chars_after_start = True - elif Char(UInt8(ord_current)).is_posix_space(): + elif Codepoint(UInt8(ord_current)).is_posix_space(): has_space_after_number = True start = pos + 1 break else: raise Error(_str_to_base_error(base, str_slice)) - if pos + 1 < str_len and not Char(buff[pos + 1]).is_posix_space(): + if pos + 1 < str_len and not Codepoint(buff[pos + 1]).is_posix_space(): var nextresult = result * real_base if nextresult < result: raise Error( @@ -304,7 +305,7 @@ fn atol(str_slice: StringSlice, base: Int = 10) raises -> Int: if has_space_after_number: for pos in range(start, str_len): - if not Char(buff[pos]).is_posix_space(): + if not Codepoint(buff[pos]).is_posix_space(): raise Error(_str_to_base_error(base, str_slice)) if is_negative: result = -result @@ -326,7 +327,7 @@ fn _trim_and_handle_sign(str_slice: StringSlice, str_len: Int) -> (Int, Bool): """ var buff = str_slice.unsafe_ptr() var start: Int = 0 - while start < str_len and Char(buff[start]).is_posix_space(): + while start < str_len and Codepoint(buff[start]).is_posix_space(): start += 1 var p: Bool = buff[start] == ord("+") var n: Bool = buff[start] == ord("-") @@ -1057,14 +1058,14 @@ struct String( """ self._iadd[False](other.as_bytes()) - @deprecated("Use `str.chars()` or `str.char_slices()` instead.") + @deprecated("Use `str.codepoints()` or `str.codepoint_slices()` instead.") fn __iter__(self) -> _StringSliceIter[__origin_of(self)]: """Iterate over the string, returning immutable references. Returns: An iterator of references to the string elements. """ - return self.char_slices() + return self.codepoint_slices() fn __reversed__(self) -> _StringSliceIter[__origin_of(self), False]: """Iterate backwards over the string, returning immutable references. @@ -1097,7 +1098,7 @@ struct String( representation of the string. To get the number of Unicode codepoints in a string, use - `len(str.chars())`. + `len(str.codepoints())`. Returns: The string length in bytes. @@ -1112,7 +1113,7 @@ struct String( var s = String("ನಮಸ್ಕಾರ") assert_equal(len(s), 21) - assert_equal(len(s.chars()), 7) + assert_equal(len(s.codepoints()), 7) ``` Strings containing only ASCII characters have the same byte and @@ -1124,7 +1125,7 @@ struct String( var s = String("abc") assert_equal(len(s), 3) - assert_equal(len(s.chars()), 3) + assert_equal(len(s.codepoints()), 3) ``` . """ @@ -1227,11 +1228,11 @@ struct String( return string @always_inline - fn chars(self) -> CharsIter[__origin_of(self)]: - """Returns an iterator over the `Char`s encoded in this string slice. + fn codepoints(self) -> CodepointsIter[__origin_of(self)]: + """Returns an iterator over the `Codepoint`s encoded in this string slice. Returns: - An iterator type that returns successive `Char` values stored in + An iterator type that returns successive `Codepoint` values stored in this string slice. # Examples @@ -1242,14 +1243,14 @@ struct String( from testing import assert_equal var s = String("abc") - var iter = s.chars() - assert_equal(iter.__next__(), Char.ord("a")) - assert_equal(iter.__next__(), Char.ord("b")) - assert_equal(iter.__next__(), Char.ord("c")) + var iter = s.codepoints() + assert_equal(iter.__next__(), Codepoint.ord("a")) + assert_equal(iter.__next__(), Codepoint.ord("b")) + assert_equal(iter.__next__(), Codepoint.ord("c")) assert_equal(iter.__has_next__(), False) ``` - `chars()` iterates over Unicode codepoints, and supports multibyte + `codepoints()` iterates over Unicode codepoints, and supports multibyte codepoints: ```mojo @@ -1259,17 +1260,17 @@ struct String( var s = String("á") assert_equal(s.byte_length(), 3) - var iter = s.chars() - assert_equal(iter.__next__(), Char.ord("a")) + var iter = s.codepoints() + assert_equal(iter.__next__(), Codepoint.ord("a")) # U+0301 Combining Acute Accent assert_equal(iter.__next__().to_u32(), 0x0301) assert_equal(iter.__has_next__(), False) ``` . """ - return self.as_string_slice().chars() + return self.as_string_slice().codepoints() - fn char_slices(self) -> _StringSliceIter[__origin_of(self)]: + fn codepoint_slices(self) -> _StringSliceIter[__origin_of(self)]: """Returns an iterator over single-character slices of this string. Each returned slice points to a single Unicode codepoint encoded in the @@ -1286,7 +1287,7 @@ struct String( from testing import assert_equal, assert_true var s = String("abc") - var iter = s.char_slices() + var iter = s.codepoint_slices() assert_true(iter.__next__() == "a") assert_true(iter.__next__() == "b") assert_true(iter.__next__() == "c") @@ -1294,7 +1295,7 @@ struct String( ``` . """ - return self.as_string_slice().char_slices() + return self.as_string_slice().codepoint_slices() fn unsafe_ptr( ref self, diff --git a/stdlib/src/collections/string/string_slice.mojo b/stdlib/src/collections/string/string_slice.mojo index 32a95a3d55..9a60ea9af2 100644 --- a/stdlib/src/collections/string/string_slice.mojo +++ b/stdlib/src/collections/string/string_slice.mojo @@ -110,9 +110,9 @@ struct _StringSliceIter[ @value -struct CharsIter[mut: Bool, //, origin: Origin[mut]]: - """Iterator over the `Char`s in a string slice, constructed by - `StringSlice.chars()`. +struct CodepointsIter[mut: Bool, //, origin: Origin[mut]]: + """Iterator over the `Codepoint`s in a string slice, constructed by + `StringSlice.codepoints()`. Parameters: mut: Mutability of the underlying string data. @@ -128,8 +128,8 @@ struct CharsIter[mut: Bool, //, origin: Origin[mut]]: """ # Note: - # Marked private since `StringSlice.chars()` is the intended public way to - # construct this type. + # Marked private since `StringSlice.codepoints()` is the intended public + # way to construct this type. @doc_private fn __init__(out self, str_slice: StringSlice[origin]): self._slice = str_slice @@ -142,10 +142,10 @@ struct CharsIter[mut: Bool, //, origin: Origin[mut]]: fn __iter__(self) -> Self: return self - fn __next__(mut self) -> Char: - """Get the next character in the underlying string slice. + fn __next__(mut self) -> Codepoint: + """Get the next codepoint in the underlying string slice. - This returns the next `Char` encoded in the underlying string, and + This returns the next `Codepoint` encoded in the underlying string, and advances the iterator state. This function will abort if this iterator has been exhausted. @@ -167,7 +167,7 @@ struct CharsIter[mut: Bool, //, origin: Origin[mut]]: @always_inline fn __len__(self) -> Int: - """Returns the remaining length of this iterator in `Char`s. + """Returns the remaining length of this iterator in `Codepoint`s. The value returned from this method indicates the number of subsequent calls to `next()` that will return a value. @@ -181,8 +181,8 @@ struct CharsIter[mut: Bool, //, origin: Origin[mut]]: # Methods # ===-------------------------------------------------------------------===# - fn peek_next(self) -> Optional[Char]: - """Check what the next character in this iterator is, without advancing + fn peek_next(self) -> Optional[Codepoint]: + """Check what the next codepoint in this iterator is, without advancing the iterator state. Repeated calls to this method will return the same value. @@ -197,44 +197,46 @@ struct CharsIter[mut: Bool, //, origin: Origin[mut]]: return the same value: ```mojo - from collections.string import StringSlice + from collections.string import StringSlice, Codepoint from testing import assert_equal var input = StringSlice("123") - var iter = input.chars() + var iter = input.codepoints() - assert_equal(iter.peek_next().value(), Char.ord("1")) - assert_equal(iter.peek_next().value(), Char.ord("1")) - assert_equal(iter.peek_next().value(), Char.ord("1")) + assert_equal(iter.peek_next().value(), Codepoint.ord("1")) + assert_equal(iter.peek_next().value(), Codepoint.ord("1")) + assert_equal(iter.peek_next().value(), Codepoint.ord("1")) # A call to `next()` return the same value as `peek_next()` had, # but also advance the iterator. - assert_equal(iter.next().value(), Char.ord("1")) + assert_equal(iter.next().value(), Codepoint.ord("1")) # Later `peek_next()` calls will return the _new_ next character: - assert_equal(iter.peek_next().value(), Char.ord("2")) + assert_equal(iter.peek_next().value(), Codepoint.ord("2")) ``` . """ if len(self._slice) > 0: # SAFETY: Will not read out of bounds because `_slice` is guaranteed # to contain valid UTF-8. - char, _ = Char.unsafe_decode_utf8_char(self._slice.unsafe_ptr()) - return char + codepoint, _ = Codepoint.unsafe_decode_utf8_codepoint( + self._slice.unsafe_ptr() + ) + return codepoint else: return None - fn next(mut self) -> Optional[Char]: - """Get the next character in the underlying string slice, or None if + fn next(mut self) -> Optional[Codepoint]: + """Get the next codepoint in the underlying string slice, or None if the iterator is empty. - This returns the next `Char` encoded in the underlying string, and + This returns the next `Codepoint` encoded in the underlying string, and advances the iterator state. Returns: A character if the string is not empty, otherwise None. """ - var result: Optional[Char] = self.peek_next() + var result: Optional[Codepoint] = self.peek_next() if result: # SAFETY: We just checked that `result` holds a value @@ -453,7 +455,7 @@ struct StringSlice[mut: Bool, //, origin: Origin[mut]]( """ var result = String() var use_dquote = False - for s in self.char_slices(): + for s in self.codepoint_slices(): use_dquote = use_dquote or (s == "'") if s == "\\": @@ -465,7 +467,7 @@ struct StringSlice[mut: Bool, //, origin: Origin[mut]]( elif s == "\r": result += r"\r" else: - var codepoint = Char.ord(s) + var codepoint = Codepoint.ord(s) if codepoint.is_ascii_printable(): result += s elif codepoint.to_u32() < 0x10: @@ -488,7 +490,7 @@ struct StringSlice[mut: Bool, //, origin: Origin[mut]]( representation of the string. To get the number of Unicode codepoints in a string, use - `len(str.chars())`. + `len(str.codepoints())`. Returns: The string length in bytes. @@ -504,7 +506,7 @@ struct StringSlice[mut: Bool, //, origin: Origin[mut]]( var s = StringSlice("ನಮಸ್ಕಾರ") assert_equal(len(s), 21) - assert_equal(len(s.chars()), 7) + assert_equal(len(s.codepoints()), 7) ``` Strings containing only ASCII characters have the same byte and @@ -517,7 +519,7 @@ struct StringSlice[mut: Bool, //, origin: Origin[mut]]( var s = StringSlice("abc") assert_equal(len(s), 3) - assert_equal(len(s.chars()), 3) + assert_equal(len(s.codepoints()), 3) ``` . """ @@ -682,14 +684,14 @@ struct StringSlice[mut: Bool, //, origin: Origin[mut]]( self.unsafe_ptr(), rhs.unsafe_ptr(), min(len1, len2) ) - @deprecated("Use `str.chars()` or `str.char_slices()` instead.") + @deprecated("Use `str.codepoints()` or `str.codepoint_slices()` instead.") fn __iter__(self) -> _StringSliceIter[origin]: """Iterate over the string, returning immutable references. Returns: An iterator of references to the string elements. """ - return self.char_slices() + return self.codepoint_slices() fn __reversed__(self) -> _StringSliceIter[origin, False]: """Iterate backwards over the string, returning immutable references. @@ -891,7 +893,7 @@ struct StringSlice[mut: Bool, //, origin: Origin[mut]]( try: # Python adds all "whitespace chars" as one separator # if no separator was specified - for s in self[lhs:].char_slices(): + for s in self[lhs:].codepoint_slices(): if not s.isspace(): break lhs += s.byte_length() @@ -907,7 +909,7 @@ struct StringSlice[mut: Bool, //, origin: Origin[mut]]( rhs = lhs + num_bytes(self.unsafe_ptr()[lhs]) for s in self[ lhs + num_bytes(self.unsafe_ptr()[lhs]) : - ].char_slices(): + ].codepoint_slices(): if s.isspace(): break rhs += s.byte_length() @@ -1012,7 +1014,9 @@ struct StringSlice[mut: Bool, //, origin: Origin[mut]]( # if not s.isspace(): # break # r_idx -= 1 - while r_idx > 0 and Char(self.as_bytes()[r_idx - 1]).is_posix_space(): + while ( + r_idx > 0 and Codepoint(self.as_bytes()[r_idx - 1]).is_posix_space() + ): r_idx -= 1 return Self(unsafe_from_utf8=self.as_bytes()[:r_idx]) @@ -1064,17 +1068,17 @@ struct StringSlice[mut: Bool, //, origin: Origin[mut]]( # l_idx += 1 while ( l_idx < self.byte_length() - and Char(self.as_bytes()[l_idx]).is_posix_space() + and Codepoint(self.as_bytes()[l_idx]).is_posix_space() ): l_idx += 1 return Self(unsafe_from_utf8=self.as_bytes()[l_idx:]) @always_inline - fn chars(self) -> CharsIter[origin]: - """Returns an iterator over the `Char`s encoded in this string slice. + fn codepoints(self) -> CodepointsIter[origin]: + """Returns an iterator over the `Codepoint`s encoded in this string slice. Returns: - An iterator type that returns successive `Char` values stored in + An iterator type that returns successive `Codepoint` values stored in this string slice. # Examples @@ -1086,14 +1090,14 @@ struct StringSlice[mut: Bool, //, origin: Origin[mut]]( from testing import assert_equal var s = StringSlice("abc") - var iter = s.chars() - assert_equal(iter.__next__(), Char.ord("a")) - assert_equal(iter.__next__(), Char.ord("b")) - assert_equal(iter.__next__(), Char.ord("c")) + var iter = s.codepoints() + assert_equal(iter.__next__(), Codepoint.ord("a")) + assert_equal(iter.__next__(), Codepoint.ord("b")) + assert_equal(iter.__next__(), Codepoint.ord("c")) assert_equal(iter.__has_next__(), False) ``` - `chars()` iterates over Unicode codepoints, and supports multibyte + `codepoints()` iterates over Unicode codepoints, and supports multibyte codepoints: ```mojo @@ -1104,17 +1108,17 @@ struct StringSlice[mut: Bool, //, origin: Origin[mut]]( var s = StringSlice("á") assert_equal(s.byte_length(), 3) - var iter = s.chars() - assert_equal(iter.__next__(), Char.ord("a")) + var iter = s.codepoints() + assert_equal(iter.__next__(), Codepoint.ord("a")) # U+0301 Combining Acute Accent assert_equal(iter.__next__().to_u32(), 0x0301) assert_equal(iter.__has_next__(), False) ``` . """ - return CharsIter(self) + return CodepointsIter(self) - fn char_slices(self) -> _StringSliceIter[origin]: + fn codepoint_slices(self) -> _StringSliceIter[origin]: """Iterate over the string, returning immutable references. Returns: @@ -1157,7 +1161,7 @@ struct StringSlice[mut: Bool, //, origin: Origin[mut]]( fn char_length(self) -> UInt: """Returns the length in Unicode codepoints. - This returns the number of `Char` codepoint values encoded in the UTF-8 + This returns the number of `Codepoint` codepoint values encoded in the UTF-8 representation of this string. Note: To get the length in bytes, use `StringSlice.byte_length()`. @@ -1552,7 +1556,7 @@ struct StringSlice[mut: Bool, //, origin: Origin[mut]]( if self.byte_length() == 0: return False - for s in self.chars(): + for s in self.codepoints(): if not s.is_python_space(): return False @@ -1584,7 +1588,7 @@ struct StringSlice[mut: Bool, //, origin: Origin[mut]]( ) else: var offset = 0 - for s in self.char_slices(): + for s in self.codepoint_slices(): var b_len = s.byte_length() if not _is_newline_char(ptr, offset, ptr[offset], b_len): return False @@ -1689,7 +1693,7 @@ struct StringSlice[mut: Bool, //, origin: Origin[mut]]( """ if not self: return False - for char in self.chars(): + for char in self.codepoints(): if not char.is_ascii_digit(): return False return True @@ -1744,7 +1748,7 @@ struct StringSlice[mut: Bool, //, origin: Origin[mut]]( Returns: True if all characters are printable else False. """ - for char in self.chars(): + for char in self.codepoints(): if not char.is_ascii_printable(): return False return True diff --git a/stdlib/src/prelude/__init__.mojo b/stdlib/src/prelude/__init__.mojo index e2c5807909..c6c3da74d2 100644 --- a/stdlib/src/prelude/__init__.mojo +++ b/stdlib/src/prelude/__init__.mojo @@ -15,7 +15,7 @@ """ from collections import KeyElement, List -from collections.string import String, ascii, atof, atol, chr, ord +from collections.string import Codepoint, String, ascii, atof, atol, chr, ord from hashlib.hash import Hashable, hash from builtin.anytype import AnyType, UnknownDestructibility @@ -28,7 +28,6 @@ from builtin.builtin_list import ( VariadicPack, ) from builtin.builtin_slice import Slice, slice -from builtin.char import Char from builtin.comparable import ( Comparable, GreaterThanComparable, diff --git a/stdlib/test/collections/string/test_string.mojo b/stdlib/test/collections/string/test_string.mojo index f9098e435d..26d14bdeab 100644 --- a/stdlib/test/collections/string/test_string.mojo +++ b/stdlib/test/collections/string/test_string.mojo @@ -74,8 +74,8 @@ def test_constructors(): var s4 = String(capacity=1) assert_equal(s4._buffer.capacity, 1) - # Construction from Char - var s5 = String(Char(65)) + # Construction from Codepoint + var s5 = String(Codepoint(65)) assert_equal(s4._buffer.capacity, 1) assert_equal(s5, "A") @@ -93,13 +93,13 @@ def test_len(): var s0 = String("ನಮಸ್ಕಾರ") assert_equal(len(s0), 21) - assert_equal(len(s0.chars()), 7) + assert_equal(len(s0.codepoints()), 7) # For ASCII string, the byte and codepoint length are the same: var s1 = String("abc") assert_equal(len(s1), 3) - assert_equal(len(s1.chars()), 3) + assert_equal(len(s1.codepoints()), 3) def test_equality_operators(): @@ -1090,18 +1090,18 @@ def test_indexing(): assert_equal(a[2], "c") -def test_string_chars_iter(): +def test_string_codepoints_iter(): var s = String("abc") - var iter = s.chars() - assert_equal(iter.__next__(), Char.ord("a")) - assert_equal(iter.__next__(), Char.ord("b")) - assert_equal(iter.__next__(), Char.ord("c")) + var iter = s.codepoints() + assert_equal(iter.__next__(), Codepoint.ord("a")) + assert_equal(iter.__next__(), Codepoint.ord("b")) + assert_equal(iter.__next__(), Codepoint.ord("c")) assert_equal(iter.__has_next__(), False) def test_string_char_slices_iter(): var s0 = String("abc") - var s0_iter = s0.char_slices() + var s0_iter = s0.codepoint_slices() assert_true(s0_iter.__next__() == "a") assert_true(s0_iter.__next__() == "b") assert_true(s0_iter.__next__() == "c") @@ -1112,7 +1112,7 @@ def test_string_char_slices_iter(): # Borrow immutably fn conc(vs: String) -> String: var c = String("") - for v in vs.char_slices(): + for v in vs.codepoint_slices(): c += v return c @@ -1123,18 +1123,18 @@ def test_string_char_slices_iter(): concat += v assert_equal(321, atol(concat)) - for v in vs.char_slices(): + for v in vs.codepoint_slices(): v.unsafe_ptr().origin_cast[mut=True]()[] = ord("1") # Borrow immutably - for v in vs.char_slices(): + for v in vs.codepoint_slices(): concat += v assert_equal(321111, atol(concat)) var idx = -1 vs = String("mojo🔥") - var iterator = vs.char_slices() + var iterator = vs.codepoint_slices() assert_equal(5, len(iterator)) var item = iterator.__next__() assert_equal(String("m"), String(item)) @@ -1184,7 +1184,7 @@ def test_string_char_slices_iter(): var ptr = item.unsafe_ptr() var amnt_characters = 0 var byte_idx = 0 - for v in item.char_slices(): + for v in item.codepoint_slices(): var byte_len = v.byte_length() for i in range(byte_len): assert_equal(ptr[byte_idx + i], v.unsafe_ptr()[i]) @@ -1469,7 +1469,7 @@ def main(): test_intable() test_string_mul() test_indexing() - test_string_chars_iter() + test_string_codepoints_iter() test_string_char_slices_iter() test_format_args() test_format_conversion_flags() diff --git a/stdlib/test/collections/string/test_string_slice.mojo b/stdlib/test/collections/string/test_string_slice.mojo index 92851c8e34..a5cd1e2e44 100644 --- a/stdlib/test/collections/string/test_string_slice.mojo +++ b/stdlib/test/collections/string/test_string_slice.mojo @@ -218,12 +218,12 @@ fn test_slice_len() raises: # String length is in bytes, not codepoints. var s0 = String("ನಮಸ್ಕಾರ") assert_equal(len(s0), 21) - assert_equal(len(s0.chars()), 7) + assert_equal(len(s0.codepoints()), 7) # For ASCII string, the byte and codepoint length are the same: var s1 = String("abc") assert_equal(len(s1), 3) - assert_equal(len(s1.chars()), 3) + assert_equal(len(s1.codepoints()), 3) fn test_slice_char_length() raises: @@ -1029,12 +1029,14 @@ def test_count(): def test_chars_iter(): # Test `for` loop iteration support - for char in StringSlice("abc").chars(): - assert_true(char in (Char.ord("a"), Char.ord("b"), Char.ord("c"))) + for char in StringSlice("abc").codepoints(): + assert_true( + char in (Codepoint.ord("a"), Codepoint.ord("b"), Codepoint.ord("c")) + ) # Test empty string chars var s0 = StringSlice("") - var s0_iter = s0.chars() + var s0_iter = s0.codepoints() assert_false(s0_iter.__has_next__()) assert_true(s0_iter.peek_next() is None) @@ -1042,11 +1044,11 @@ def test_chars_iter(): # Test simple ASCII string chars var s1 = StringSlice("abc") - var s1_iter = s1.chars() + var s1_iter = s1.codepoints() - assert_equal(s1_iter.next().value(), Char.ord("a")) - assert_equal(s1_iter.next().value(), Char.ord("b")) - assert_equal(s1_iter.next().value(), Char.ord("c")) + assert_equal(s1_iter.next().value(), Codepoint.ord("a")) + assert_equal(s1_iter.next().value(), Codepoint.ord("b")) + assert_equal(s1_iter.next().value(), Codepoint.ord("c")) assert_true(s1_iter.next() is None) # Multibyte character decoding: A visual character composed of a combining @@ -1055,8 +1057,8 @@ def test_chars_iter(): assert_equal(s2.byte_length(), 3) assert_equal(s2.char_length(), 2) - var iter = s2.chars() - assert_equal(iter.__next__(), Char.ord("a")) + var iter = s2.codepoints() + assert_equal(iter.__next__(), Codepoint.ord("a")) # U+0301 Combining Acute Accent assert_equal(iter.__next__().to_u32(), 0x0301) assert_equal(iter.__has_next__(), False) @@ -1068,32 +1070,32 @@ def test_chars_iter(): var s3 = StringSlice("߷കൈ🔄!") assert_equal(s3.byte_length(), 13) assert_equal(s3.char_length(), 5) - var s3_iter = s3.chars() + var s3_iter = s3.codepoints() # Iterator __len__ returns length in codepoints, not bytes. assert_equal(s3_iter.__len__(), 5) assert_equal(s3_iter._slice.byte_length(), 13) assert_equal(s3_iter.__has_next__(), True) - assert_equal(s3_iter.__next__(), Char.ord("߷")) + assert_equal(s3_iter.__next__(), Codepoint.ord("߷")) assert_equal(s3_iter.__len__(), 4) assert_equal(s3_iter._slice.byte_length(), 11) - assert_equal(s3_iter.__next__(), Char.ord("ക")) + assert_equal(s3_iter.__next__(), Codepoint.ord("ക")) # Combining character, visually comes first, but codepoint-wise comes # after the character it combines with. assert_equal(s3_iter.__len__(), 3) assert_equal(s3_iter._slice.byte_length(), 8) - assert_equal(s3_iter.__next__(), Char.ord("ൈ")) + assert_equal(s3_iter.__next__(), Codepoint.ord("ൈ")) assert_equal(s3_iter.__len__(), 2) assert_equal(s3_iter._slice.byte_length(), 5) - assert_equal(s3_iter.__next__(), Char.ord("🔄")) + assert_equal(s3_iter.__next__(), Codepoint.ord("🔄")) assert_equal(s3_iter.__len__(), 1) assert_equal(s3_iter._slice.byte_length(), 1) assert_equal(s3_iter.__has_next__(), True) - assert_equal(s3_iter.__next__(), Char.ord("!")) + assert_equal(s3_iter.__next__(), Codepoint.ord("!")) assert_equal(s3_iter.__len__(), 0) assert_equal(s3_iter._slice.byte_length(), 0) diff --git a/stdlib/test/collections/string/test_unicode.mojo b/stdlib/test/collections/string/test_unicode.mojo index 7ec07dfbb8..67dd0ba806 100644 --- a/stdlib/test/collections/string/test_unicode.mojo +++ b/stdlib/test/collections/string/test_unicode.mojo @@ -20,27 +20,29 @@ from testing import assert_equal def test_uppercase_conversion(): # a -> A - count1, chars1 = _get_uppercase_mapping(Char(97)).value() + count1, chars1 = _get_uppercase_mapping(Codepoint(97)).value() assert_equal(count1, 1) - assert_equal(chars1[0], Char(65)) - assert_equal(chars1[1], Char(0)) - assert_equal(chars1[2], Char(0)) + assert_equal(chars1[0], Codepoint(65)) + assert_equal(chars1[1], Codepoint(0)) + assert_equal(chars1[2], Codepoint(0)) # ß -> SS - count2, chars2 = _get_uppercase_mapping(Char.from_u32(0xDF).value()).value() + count2, chars2 = _get_uppercase_mapping( + Codepoint.from_u32(0xDF).value() + ).value() assert_equal(count2, 2) - assert_equal(chars2[0], Char.from_u32(0x53).value()) - assert_equal(chars2[1], Char.from_u32(0x53).value()) - assert_equal(chars2[2], Char(0)) + assert_equal(chars2[0], Codepoint.from_u32(0x53).value()) + assert_equal(chars2[1], Codepoint.from_u32(0x53).value()) + assert_equal(chars2[2], Codepoint(0)) # ΐ -> Ϊ́ count3, chars3 = _get_uppercase_mapping( - Char.from_u32(0x390).value() + Codepoint.from_u32(0x390).value() ).value() assert_equal(count3, 3) - assert_equal(chars3[0], Char.from_u32(0x0399).value()) - assert_equal(chars3[1], Char.from_u32(0x0308).value()) - assert_equal(chars3[2], Char.from_u32(0x0301).value()) + assert_equal(chars3[0], Codepoint.from_u32(0x0399).value()) + assert_equal(chars3[1], Codepoint.from_u32(0x0308).value()) + assert_equal(chars3[2], Codepoint.from_u32(0x0301).value()) def main(): diff --git a/stdlib/test/builtin/test_char.mojo b/stdlib/test/collections/test_codepoint.mojo similarity index 59% rename from stdlib/test/builtin/test_char.mojo rename to stdlib/test/collections/test_codepoint.mojo index 1d0f124d95..2b366a2ca1 100644 --- a/stdlib/test/builtin/test_char.mojo +++ b/stdlib/test/collections/test_codepoint.mojo @@ -17,125 +17,127 @@ from testing import assert_equal, assert_false, assert_not_equal, assert_true def test_char_validity(): # Check that basic unchecked constructor behaves as expected. - var c1 = Char(unsafe_unchecked_codepoint=32) + var c1 = Codepoint(unsafe_unchecked_codepoint=32) assert_equal(c1._scalar_value, 32) - assert_true(Char.from_u32(0)) + assert_true(Codepoint.from_u32(0)) # For a visual intuition of what constitues a valid scalar value: # https://connorgray.com/ephemera/project-log#2025-01-09 # Last valid code point in the smaller scalar value range. - assert_true(Char.from_u32(0xD7FF)) + assert_true(Codepoint.from_u32(0xD7FF)) # First surrogate code point, not valid. - assert_false(Char.from_u32(0xD7FF + 1)) + assert_false(Codepoint.from_u32(0xD7FF + 1)) # Last surrogate code point, not valid - assert_false(Char.from_u32(0xDFFF)) + assert_false(Codepoint.from_u32(0xDFFF)) # First valid code point in the larger scalar value range. - assert_true(Char.from_u32(0xE000)) + assert_true(Codepoint.from_u32(0xE000)) # Beyond Unicode's committed range of code points. - assert_false(Char.from_u32(0x10FFFF + 1)) + assert_false(Codepoint.from_u32(0x10FFFF + 1)) def test_char_from_u8(): - var c1 = Char(UInt8(0)) + var c1 = Codepoint(UInt8(0)) assert_true(c1.is_ascii()) # All non-negative 8-bit integers are codepoints, but not all are ASCII. - var c2 = Char(UInt8(255)) + var c2 = Codepoint(UInt8(255)) assert_false(c2.is_ascii()) def test_char_comparison(): - assert_equal(Char(0), Char(0)) - assert_not_equal(Char(0), Char(1)) + assert_equal(Codepoint(0), Codepoint(0)) + assert_not_equal(Codepoint(0), Codepoint(1)) def test_char_formatting(): - assert_equal(String(Char(0)), "\0") - assert_equal(String(Char(32)), " ") - assert_equal(String(Char(97)), "a") - assert_equal(String(Char.from_u32(0x00BE).value()), "¾") - assert_equal(String(Char.from_u32(0x1F642).value()), "🙂") + assert_equal(String(Codepoint(0)), "\0") + assert_equal(String(Codepoint(32)), " ") + assert_equal(String(Codepoint(97)), "a") + assert_equal(String(Codepoint.from_u32(0x00BE).value()), "¾") + assert_equal(String(Codepoint.from_u32(0x1F642).value()), "🙂") def test_char_properties(): - assert_true(Char.from_u32(0).value().is_ascii()) + assert_true(Codepoint.from_u32(0).value().is_ascii()) # Last ASCII codepoint. - assert_true(Char.from_u32(0b0111_1111).value().is_ascii()) # ASCII 127 0x7F + assert_true( + Codepoint.from_u32(0b0111_1111).value().is_ascii() + ) # ASCII 127 0x7F # First non-ASCII codepoint. - assert_false(Char.from_u32(0b1000_0000).value().is_ascii()) - assert_false(Char.from_u32(0b1111_1111).value().is_ascii()) + assert_false(Codepoint.from_u32(0b1000_0000).value().is_ascii()) + assert_false(Codepoint.from_u32(0b1111_1111).value().is_ascii()) def test_char_is_posix_space(): # checking true cases - assert_true(Char.ord(" ").is_posix_space()) - assert_true(Char.ord("\n").is_posix_space()) - assert_true(Char.ord("\n").is_posix_space()) - assert_true(Char.ord("\t").is_posix_space()) - assert_true(Char.ord("\r").is_posix_space()) - assert_true(Char.ord("\v").is_posix_space()) - assert_true(Char.ord("\f").is_posix_space()) + assert_true(Codepoint.ord(" ").is_posix_space()) + assert_true(Codepoint.ord("\n").is_posix_space()) + assert_true(Codepoint.ord("\n").is_posix_space()) + assert_true(Codepoint.ord("\t").is_posix_space()) + assert_true(Codepoint.ord("\r").is_posix_space()) + assert_true(Codepoint.ord("\v").is_posix_space()) + assert_true(Codepoint.ord("\f").is_posix_space()) # Checking false cases - assert_false(Char.ord("a").is_posix_space()) - assert_false(Char.ord("a").is_posix_space()) - assert_false(Char.ord("u").is_posix_space()) - assert_false(Char.ord("s").is_posix_space()) - assert_false(Char.ord("t").is_posix_space()) - assert_false(Char.ord("i").is_posix_space()) - assert_false(Char.ord("n").is_posix_space()) - assert_false(Char.ord("z").is_posix_space()) - assert_false(Char.ord(".").is_posix_space()) + assert_false(Codepoint.ord("a").is_posix_space()) + assert_false(Codepoint.ord("a").is_posix_space()) + assert_false(Codepoint.ord("u").is_posix_space()) + assert_false(Codepoint.ord("s").is_posix_space()) + assert_false(Codepoint.ord("t").is_posix_space()) + assert_false(Codepoint.ord("i").is_posix_space()) + assert_false(Codepoint.ord("n").is_posix_space()) + assert_false(Codepoint.ord("z").is_posix_space()) + assert_false(Codepoint.ord(".").is_posix_space()) def test_char_is_lower(): - assert_true(Char.ord("a").is_ascii_lower()) - assert_true(Char.ord("b").is_ascii_lower()) - assert_true(Char.ord("y").is_ascii_lower()) - assert_true(Char.ord("z").is_ascii_lower()) + assert_true(Codepoint.ord("a").is_ascii_lower()) + assert_true(Codepoint.ord("b").is_ascii_lower()) + assert_true(Codepoint.ord("y").is_ascii_lower()) + assert_true(Codepoint.ord("z").is_ascii_lower()) - assert_false(Char.from_u32(ord("a") - 1).value().is_ascii_lower()) - assert_false(Char.from_u32(ord("z") + 1).value().is_ascii_lower()) + assert_false(Codepoint.from_u32(ord("a") - 1).value().is_ascii_lower()) + assert_false(Codepoint.from_u32(ord("z") + 1).value().is_ascii_lower()) - assert_false(Char.ord("!").is_ascii_lower()) - assert_false(Char.ord("0").is_ascii_lower()) + assert_false(Codepoint.ord("!").is_ascii_lower()) + assert_false(Codepoint.ord("0").is_ascii_lower()) def test_char_is_upper(): - assert_true(Char.ord("A").is_ascii_upper()) - assert_true(Char.ord("B").is_ascii_upper()) - assert_true(Char.ord("Y").is_ascii_upper()) - assert_true(Char.ord("Z").is_ascii_upper()) + assert_true(Codepoint.ord("A").is_ascii_upper()) + assert_true(Codepoint.ord("B").is_ascii_upper()) + assert_true(Codepoint.ord("Y").is_ascii_upper()) + assert_true(Codepoint.ord("Z").is_ascii_upper()) - assert_false(Char.from_u32(ord("A") - 1).value().is_ascii_upper()) - assert_false(Char.from_u32(ord("Z") + 1).value().is_ascii_upper()) + assert_false(Codepoint.from_u32(ord("A") - 1).value().is_ascii_upper()) + assert_false(Codepoint.from_u32(ord("Z") + 1).value().is_ascii_upper()) - assert_false(Char.ord("!").is_ascii_upper()) - assert_false(Char.ord("0").is_ascii_upper()) + assert_false(Codepoint.ord("!").is_ascii_upper()) + assert_false(Codepoint.ord("0").is_ascii_upper()) def test_char_is_digit(): - assert_true(Char.ord("1").is_ascii_digit()) - assert_false(Char.ord("g").is_ascii_digit()) + assert_true(Codepoint.ord("1").is_ascii_digit()) + assert_false(Codepoint.ord("g").is_ascii_digit()) # Devanagari Digit 6 — non-ASCII digits are not "ascii digit". - assert_false(Char.ord("६").is_ascii_digit()) + assert_false(Codepoint.ord("६").is_ascii_digit()) def test_char_is_printable(): - assert_true(Char.ord("a").is_ascii_printable()) - assert_false(Char.ord("\n").is_ascii_printable()) - assert_false(Char.ord("\t").is_ascii_printable()) + assert_true(Codepoint.ord("a").is_ascii_printable()) + assert_false(Codepoint.ord("\n").is_ascii_printable()) + assert_false(Codepoint.ord("\t").is_ascii_printable()) # Non-ASCII characters are not considered "ascii printable". - assert_false(Char.ord("स").is_ascii_printable()) + assert_false(Codepoint.ord("स").is_ascii_printable()) alias SIGNIFICANT_CODEPOINTS = List[Tuple[Int, List[Byte]]]( @@ -175,7 +177,7 @@ alias SIGNIFICANT_CODEPOINTS = List[Tuple[Int, List[Byte]]]( fn assert_utf8_bytes(codepoint: UInt32, owned expected: List[Byte]) raises: - var char_opt = Char.from_u32(codepoint) + var char_opt = Codepoint.from_u32(codepoint) var char = char_opt.value() # Allocate a length-4 buffer to write to. @@ -214,13 +216,15 @@ def test_char_utf8_byte_length(): var codepoint = entry[][0] var expected_utf8 = entry[][1] - var computed_len = Char.from_u32(codepoint).value().utf8_byte_length() + var computed_len = Codepoint.from_u32( + codepoint + ).value().utf8_byte_length() assert_equal(computed_len, len(expected_utf8)) def test_char_comptime(): - alias c1 = Char.from_u32(32).value() + alias c1 = Codepoint.from_u32(32).value() # Test that `utf8_byte_length()` works at compile time. alias c1_bytes = c1.utf8_byte_length() From 2896ed2d5bbd785f6daeb8612bc1a060d106e909 Mon Sep 17 00:00:00 2001 From: Connor Gray Date: Fri, 14 Feb 2025 19:55:02 -0600 Subject: [PATCH 395/509] [stdlib] feat: Rename `_StringSliceIter` to `CodepointSliceIter` and overhaul it This renames this type to match the other recent renames of string APIs in the standard library, and additionally refactors its implementation to be both simpler and more general. * Add `CodepointSliceIter.{peek_next(), next()}` methods * Add `CodepointSliceIter.{peek_back(), next_back()}` methods * Simplify `CodepointSliceIter` to store a `StringSlice`, instead of storing a pointer, a size, and an offset. MODULAR_ORIG_COMMIT_REV_ID: 1c237eab697182fc21a6b06e20d730346a74f1fc --- docs/changelog.md | 3 + stdlib/src/builtin/string_literal.mojo | 14 +- stdlib/src/collections/string/string.mojo | 12 +- .../src/collections/string/string_slice.mojo | 247 ++++++++++++++---- 4 files changed, 216 insertions(+), 60 deletions(-) diff --git a/docs/changelog.md b/docs/changelog.md index ac5c0d9063..18500c6c85 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -34,6 +34,9 @@ what we publish. - `CharsIter` to `CodepointsIter` - `unsafe_decode_utf8_char()` to `unsafe_decode_utf8_codepoint()` + - Make the iterator type returned by the string `codepoint_slices()` methods + public as `CodepointSliceIter`. + - `StringSlice` now supports several additional methods moved from `String`. The existing `String` methods have been updated to instead call the corresponding new `StringSlice` methods: diff --git a/stdlib/src/builtin/string_literal.mojo b/stdlib/src/builtin/string_literal.mojo index 122b79679b..ecbfae55a8 100644 --- a/stdlib/src/builtin/string_literal.mojo +++ b/stdlib/src/builtin/string_literal.mojo @@ -20,7 +20,7 @@ from collections.string.format import _CurlyEntryFormattable, _FormatCurlyEntry from collections.string.string_slice import ( StaticString, StringSlice, - _StringSliceIter, + CodepointSliceIter, _to_string_list, ) from hashlib._hasher import _HashableWithHasher, _Hasher @@ -488,24 +488,22 @@ struct StringLiteral( """ return self.__str__() - fn __iter__(ref self) -> _StringSliceIter[StaticConstantOrigin]: + fn __iter__(ref self) -> CodepointSliceIter[StaticConstantOrigin]: """Return an iterator over the string literal. Returns: An iterator over the string. """ - return _StringSliceIter[StaticConstantOrigin]( - ptr=self.unsafe_ptr(), length=self.byte_length() - ) + return CodepointSliceIter(self.as_string_slice()) - fn __reversed__(self) -> _StringSliceIter[StaticConstantOrigin, False]: + fn __reversed__(self) -> CodepointSliceIter[StaticConstantOrigin, False]: """Iterate backwards over the string, returning immutable references. Returns: A reversed iterator over the string. """ - return _StringSliceIter[StaticConstantOrigin, False]( - ptr=self.unsafe_ptr(), length=self.byte_length() + return CodepointSliceIter[StaticConstantOrigin, False]( + self.as_string_slice() ) fn __getitem__[IndexerType: Indexer](self, idx: IndexerType) -> String: diff --git a/stdlib/src/collections/string/string.mojo b/stdlib/src/collections/string/string.mojo index 2ed0a1b676..395dcdce10 100644 --- a/stdlib/src/collections/string/string.mojo +++ b/stdlib/src/collections/string/string.mojo @@ -19,7 +19,7 @@ from collections.string.format import _CurlyEntryFormattable, _FormatCurlyEntry from collections.string.string_slice import ( StaticString, StringSlice, - _StringSliceIter, + CodepointSliceIter, _to_string_list, _utf8_byte_type, ) @@ -1059,7 +1059,7 @@ struct String( self._iadd[False](other.as_bytes()) @deprecated("Use `str.codepoints()` or `str.codepoint_slices()` instead.") - fn __iter__(self) -> _StringSliceIter[__origin_of(self)]: + fn __iter__(self) -> CodepointSliceIter[__origin_of(self)]: """Iterate over the string, returning immutable references. Returns: @@ -1067,15 +1067,13 @@ struct String( """ return self.codepoint_slices() - fn __reversed__(self) -> _StringSliceIter[__origin_of(self), False]: + fn __reversed__(self) -> CodepointSliceIter[__origin_of(self), False]: """Iterate backwards over the string, returning immutable references. Returns: A reversed iterator of references to the string elements. """ - return _StringSliceIter[__origin_of(self), forward=False]( - ptr=self.unsafe_ptr(), length=self.byte_length() - ) + return CodepointSliceIter[__origin_of(self), forward=False](self) # ===------------------------------------------------------------------=== # # Trait implementations @@ -1270,7 +1268,7 @@ struct String( """ return self.as_string_slice().codepoints() - fn codepoint_slices(self) -> _StringSliceIter[__origin_of(self)]: + fn codepoint_slices(self) -> CodepointSliceIter[__origin_of(self)]: """Returns an iterator over single-character slices of this string. Each returned slice points to a single Unicode codepoint encoded in the diff --git a/stdlib/src/collections/string/string_slice.mojo b/stdlib/src/collections/string/string_slice.mojo index 9a60ea9af2..cd97b8ed95 100644 --- a/stdlib/src/collections/string/string_slice.mojo +++ b/stdlib/src/collections/string/string_slice.mojo @@ -45,68 +45,229 @@ alias StaticString = StringSlice[StaticConstantOrigin] @value -struct _StringSliceIter[ +struct CodepointSliceIter[ mut: Bool, //, origin: Origin[mut], forward: Bool = True, ]: - """Iterator for `StringSlice` over unicode characters. + """Iterator for `StringSlice` over substring slices containing a single + Unicode codepoint. Parameters: mut: Whether the slice is mutable. origin: The origin of the underlying string data. forward: The iteration direction. `False` is backwards. + + The `forward` parameter only controls the behavior of the `__next__()` + method used for normal iteration. Calls to `next()` will always take an + element from the front of the iterator, and calls to `next_back()` will + always take an element from the end. """ - var index: Int - var ptr: UnsafePointer[Byte] - var length: Int + var _slice: StringSlice[origin] - fn __init__(out self, *, ptr: UnsafePointer[Byte], length: UInt): - self.index = 0 if forward else length - self.ptr = ptr - self.length = length + # Note: + # Marked private since `StringSlice.codepoints()` is the intended public + # way to construct this type. + @doc_private + fn __init__(out self, str_slice: StringSlice[origin]): + self._slice = str_slice + # ===-------------------------------------------------------------------===# + # Trait implementations + # ===-------------------------------------------------------------------===# + + @doc_private fn __iter__(self) -> Self: return self fn __next__(mut self) -> StringSlice[origin]: + """Get the next codepoint in the underlying string slice. + + This returns the next single-codepoint substring slice encoded in the + underlying string, and advances the iterator state. + + If `forward` is set to `False`, this will return the next codepoint + from the end of the string. + + This function will abort if this iterator has been exhausted. + + Returns: + The next character in the string. + """ + @parameter if forward: - byte_len = _utf8_first_byte_sequence_length(self.ptr[self.index]) - i = self.index - self.index += byte_len - return StringSlice[origin](ptr=self.ptr + i, length=byte_len) + return self.next().value() else: - byte_len = 1 - while _utf8_byte_type(self.ptr[self.index - byte_len]) == 1: - byte_len += 1 - self.index -= byte_len - return StringSlice[origin]( - ptr=self.ptr + self.index, length=byte_len - ) + return self.next_back().value() @always_inline fn __has_next__(self) -> Bool: - @parameter - if forward: - return self.index < self.length - else: - return self.index > 0 + """Returns True if there are still elements in this iterator. + + Returns: + A boolean indicating if there are still elements in this iterator. + """ + # NOTE: + # This intentionally check if the length _in bytes_ is greater + # than zero, because checking the codepoint length requires a linear + # scan of the string, which is needlessly expensive for this purpose. + return len(self._slice) > 0 + @always_inline fn __len__(self) -> Int: - @parameter - if forward: - var remaining = self.length - self.index - var span = Span[Byte, ImmutableAnyOrigin]( - ptr=self.ptr + self.index, length=remaining - ) - return StringSlice(unsafe_from_utf8=span).char_length() + """Returns the remaining length of this iterator in `Codepoint`s. + + The value returned from this method indicates the number of subsequent + calls to `next()` that will return a value. + + Returns: + Number of codepoints remaining in this iterator. + """ + return self._slice.char_length() + + # ===-------------------------------------------------------------------===# + # Methods + # ===-------------------------------------------------------------------===# + + fn peek_next(self) -> Optional[StringSlice[origin]]: + """Check what the next single-codepoint slice in this iterator is, + without advancing the iterator state. + + Repeated calls to this method will return the same value. + + Returns: + The next codepoint slice in the underlying string, or None if the + string is empty. + + # Examples + + `peek_next()` does not advance the iterator, so repeated calls will + return the same value: + + ```mojo + from collections.string import StringSlice, Codepoint + from testing import assert_equal + + var input = StringSlice("123") + var iter = input.codepoint_slices() + + assert_equal(iter.peek_next().value(), "1") + assert_equal(iter.peek_next().value(), "1") + assert_equal(iter.peek_next().value(), "1") + + # A call to `next()` return the same value as `peek_next()` had, + # but also advance the iterator. + assert_equal(iter.next().value(), "1") + + # Later `peek_next()` calls will return the _new_ next character: + assert_equal(iter.peek_next().value(), "2") + ``` + . + """ + if len(self._slice) > 0: + # SAFETY: Will not read out of bounds because `_slice` is guaranteed + # to contain valid UTF-8. + var curr_ptr = self._slice.unsafe_ptr() + var byte_len = _utf8_first_byte_sequence_length(curr_ptr[]) + return StringSlice[origin](ptr=curr_ptr, length=byte_len) else: - var span = Span[Byte, ImmutableAnyOrigin]( - ptr=self.ptr, length=self.index - ) - return StringSlice(unsafe_from_utf8=span).char_length() + return None + + fn peek_back(mut self) -> Optional[StringSlice[origin]]: + """Check what the last single-codepoint slice in this iterator is, + without advancing the iterator state. + + Repeated calls to this method will return the same value. + + Returns: + The last codepoint slice in the underlying string, or None if the + string is empty. + + # Examples + + `peek_back()` does not advance the iterator, so repeated calls will + return the same value: + + ```mojo + from collections.string import StringSlice, Codepoint + from testing import assert_equal + + var input = StringSlice("123") + var iter = input.codepoint_slices() + + # Repeated calls to `peek_back()` return the same value. + assert_equal(iter.peek_back().value(), "3") + assert_equal(iter.peek_back().value(), "3") + assert_equal(iter.peek_back().value(), "3") + + # A call to `next_back()` return the same value as `peek_back()` had, + # but also advance the iterator. + assert_equal(iter.next_back().value(), "3") + + # Later `peek_back()` calls will return the _new_ next character: + assert_equal(iter.peek_back().value(), "2") + ``` + . + """ + if len(self._slice) > 0: + var byte_len = 1 + var back_ptr = self._slice.unsafe_ptr() + len(self._slice) - 1 + # SAFETY: + # Guaranteed not to go out of bounds because UTF-8 + # guarantees there is always a "start" byte eventually before any + # continuation bytes. + while _utf8_byte_type(back_ptr[]) == 1: + byte_len += 1 + back_ptr -= 1 + + return StringSlice[origin](ptr=back_ptr, length=byte_len) + else: + return None + + fn next(mut self) -> Optional[StringSlice[origin]]: + """Get the next codepoint slice in the underlying string slice, or None + if the iterator is empty. + + This returns the next single-codepoint substring encoded in the + underlying string, and advances the iterator state. + + Returns: + A character if the string is not empty, otherwise None. + """ + var result: Optional[StringSlice[origin]] = self.peek_next() + + if result: + # SAFETY: We just checked that `result` holds a value + var slice_len = len(result.unsafe_value()) + # Advance the pointer in _slice. + self._slice._slice._data += slice_len + # Decrement the byte-length of _slice. + self._slice._slice._len -= slice_len + + return result + + fn next_back(mut self) -> Optional[StringSlice[origin]]: + """Get the last single-codepoint slice in this iterator is, or None + if the iterator is empty. + + This returns the last codepoint slice in this iterator, and advances + the iterator state. + + Returns: + The last codepoint slice in the underlying string, or None if the + string is empty. + """ + var result: Optional[StringSlice[origin]] = self.peek_back() + + if result: + # SAFETY: We just checked that `result` holds a value + var slice_len = len(result.unsafe_value()) + # Decrement the byte-length of _slice. + self._slice._slice._len -= slice_len + + return result @value @@ -685,7 +846,7 @@ struct StringSlice[mut: Bool, //, origin: Origin[mut]]( ) @deprecated("Use `str.codepoints()` or `str.codepoint_slices()` instead.") - fn __iter__(self) -> _StringSliceIter[origin]: + fn __iter__(self) -> CodepointSliceIter[origin]: """Iterate over the string, returning immutable references. Returns: @@ -693,15 +854,13 @@ struct StringSlice[mut: Bool, //, origin: Origin[mut]]( """ return self.codepoint_slices() - fn __reversed__(self) -> _StringSliceIter[origin, False]: + fn __reversed__(self) -> CodepointSliceIter[origin, False]: """Iterate backwards over the string, returning immutable references. Returns: A reversed iterator of references to the string elements. """ - return _StringSliceIter[origin, forward=False]( - ptr=self.unsafe_ptr(), length=self.byte_length() - ) + return CodepointSliceIter[origin, forward=False](self) fn __getitem__[I: Indexer](self, idx: I) -> String: """Gets the character at the specified position. @@ -1118,15 +1277,13 @@ struct StringSlice[mut: Bool, //, origin: Origin[mut]]( """ return CodepointsIter(self) - fn codepoint_slices(self) -> _StringSliceIter[origin]: + fn codepoint_slices(self) -> CodepointSliceIter[origin]: """Iterate over the string, returning immutable references. Returns: An iterator of references to the string elements. """ - return _StringSliceIter[origin]( - ptr=self.unsafe_ptr(), length=self.byte_length() - ) + return CodepointSliceIter[origin](self) @always_inline fn as_bytes(self) -> Span[Byte, origin]: From ff81533046ec6fe9ed8a10f9273f9da3cd79092d Mon Sep 17 00:00:00 2001 From: modularbot Date: Sat, 15 Feb 2025 05:46:46 +0000 Subject: [PATCH 396/509] Update lockfiles to point to latest nightly version: 25.2.0.dev2025021503 --- examples/life/magic.lock | 339 ++++++++++++++++++++-------------- examples/magic.lock | 142 +++++++------- examples/operators/magic.lock | 199 ++++++++++---------- examples/testing/magic.lock | 199 ++++++++++---------- magic.lock | 199 ++++++++++---------- 5 files changed, 569 insertions(+), 509 deletions(-) diff --git a/examples/life/magic.lock b/examples/life/magic.lock index 6ae25926c6..11fb52f64d 100644 --- a/examples/life/magic.lock +++ b/examples/life/magic.lock @@ -62,7 +62,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libgettextpo-devel-0.23.1-h5888daf_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hd5240d6_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgl-1.7.0-ha4b6fd6_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.82.2-h2ff4ddf_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libglvnd-1.7.0-ha4b6fd6_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libglx-1.7.0-ha4b6fd6_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h77fa898_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgpg-error-1.51-hbd13f7d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-hd590300_2.conda @@ -82,7 +85,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.48.0-hee588c1_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-hc0a3c3a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libsystemd0-257.2-h3dc2cb9_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsystemd0-257.3-h3dc2cb9_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hd9ff511_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libvorbis-1.3.7-h9c3ff4c_0.tar.bz2 @@ -91,11 +94,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.10.0-h5888daf_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021305-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025021305-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025021305-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021305-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021503-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025021503-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025021503-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021503-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021503-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/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda @@ -112,13 +115,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pulseaudio-client-17.0-hb77b528_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pygame-2.6.1-py312h4fcb14b_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.8-h9e4cc4f_1_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.9-h9e4cc4f_0_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.1-py312hbf22597_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/rav1e-0.6.6-he8a937b_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/sdl2-2.30.10-h63c27ac_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sdl2-2.30.10-h63c27ac_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/sdl2_image-2.8.2-h06ee604_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/sdl2_mixer-2.6.3-h8830914_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/sdl2_ttf-2.24.0-h287479f_0.conda @@ -200,7 +203,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgettextpo-devel-0.23.1-h5ad3122_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgl-1.7.0-hd24410f_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libglib-2.82.2-hc486b8e_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libglvnd-1.7.0-hd24410f_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libglx-1.7.0-hd24410f_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgpg-error-1.51-h05609ea_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libiconv-1.17-h31becfc_2.conda @@ -220,7 +226,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.48.0-h5eb1b54_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsystemd0-257.2-h27834fc_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsystemd0-257.3-h27834fc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.0-h88f7998_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libvorbis-1.3.7-h01db608_0.tar.bz2 @@ -229,11 +235,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.10.0-h5ad3122_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021305-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025021305-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025021305-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021305-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021503-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025021503-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025021503-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021503-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021503-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/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-ha32ae93_3.conda @@ -250,13 +256,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pthread-stubs-0.4-h86ecc28_1002.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pulseaudio-client-17.0-h729494f_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pygame-2.6.1-py312hb2c8110_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.8-h1683364_1_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.9-h1683364_0_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.12-5_cp312.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyzmq-26.2.1-py312h2427ae1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/rav1e-0.6.6-h1d8f897_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8fc344f_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sdl2-2.30.10-h93e764a_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sdl2-2.30.10-h93e764a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sdl2_image-2.8.2-hd95cb85_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sdl2_mixer-2.6.3-h422cae6_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sdl2_ttf-2.24.0-hb1608df_0.conda @@ -348,11 +354,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.5.0-h2471fea_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021305-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025021305-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025021305-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021305-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021503-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025021503-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025021503-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021503-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021503-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/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda @@ -367,13 +373,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/portaudio-19.6.0-h13dd4ca_9.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/portmidi-2.0.4-h13dd4ca_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pygame-2.6.1-py312hb14fe3b_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.8-hc22306f_1_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.9-hc22306f_0_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-5_cp312.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.1-py312hf4875e0_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/rav1e-0.6.6-h69fbcac_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h92ec313_1.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-2.30.10-h994913f_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sdl2_image-2.8.2-h376e2e1_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sdl2_mixer-2.6.3-h4fe3bdc_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sdl2_ttf-2.24.0-h443c5de_0.conda @@ -2103,6 +2109,29 @@ packages: license_family: GPL size: 997381 timestamp: 1707330687590 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgl-1.7.0-ha4b6fd6_2.conda + sha256: dc2752241fa3d9e40ce552c1942d0a4b5eeb93740c9723873f6fcf8d39ef8d2d + md5: 928b8be80851f5d8ffb016f9c81dae7a + depends: + - __glibc >=2.17,<3.0.a0 + - libglvnd 1.7.0 ha4b6fd6_2 + - libglx 1.7.0 ha4b6fd6_2 + arch: x86_64 + platform: linux + license: LicenseRef-libglvnd + size: 134712 + timestamp: 1731330998354 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgl-1.7.0-hd24410f_2.conda + sha256: 3e954380f16255d1c8ae5da3bd3044d3576a0e1ac2e3c3ff2fe8f2f1ad2e467a + md5: 0d00176464ebb25af83d40736a2cd3bb + depends: + - libglvnd 1.7.0 hd24410f_2 + - libglx 1.7.0 hd24410f_2 + arch: aarch64 + platform: linux + license: LicenseRef-libglvnd + size: 145442 + timestamp: 1731331005019 - conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.82.2-h2ff4ddf_1.conda sha256: f0804a9e46ae7b32ca698d26c1c95aa82a91f71b6051883d4a46bea725be9ea4 md5: 37d1af619d999ee8f1f73cf5a06f4e2f @@ -2153,6 +2182,47 @@ packages: license: LGPL-2.1-or-later size: 3643364 timestamp: 1737037789629 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libglvnd-1.7.0-ha4b6fd6_2.conda + sha256: 1175f8a7a0c68b7f81962699751bb6574e6f07db4c9f72825f978e3016f46850 + md5: 434ca7e50e40f4918ab701e3facd59a0 + depends: + - __glibc >=2.17,<3.0.a0 + arch: x86_64 + platform: linux + license: LicenseRef-libglvnd + size: 132463 + timestamp: 1731330968309 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libglvnd-1.7.0-hd24410f_2.conda + sha256: 57ec3898a923d4bcc064669e90e8abfc4d1d945a13639470ba5f3748bd3090da + md5: 9e115653741810778c9a915a2f8439e7 + arch: aarch64 + platform: linux + license: LicenseRef-libglvnd + size: 152135 + timestamp: 1731330986070 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libglx-1.7.0-ha4b6fd6_2.conda + sha256: 2d35a679624a93ce5b3e9dd301fff92343db609b79f0363e6d0ceb3a6478bfa7 + md5: c8013e438185f33b13814c5c488acd5c + depends: + - __glibc >=2.17,<3.0.a0 + - libglvnd 1.7.0 ha4b6fd6_2 + - xorg-libx11 >=1.8.10,<2.0a0 + arch: x86_64 + platform: linux + license: LicenseRef-libglvnd + size: 75504 + timestamp: 1731330988898 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libglx-1.7.0-hd24410f_2.conda + sha256: 6591af640cb05a399fab47646025f8b1e1a06a0d4bbb4d2e320d6629b47a1c61 + md5: 1d4269e233636148696a67e2d30dad2a + depends: + - libglvnd 1.7.0 hd24410f_2 + - xorg-libx11 >=1.8.9,<2.0a0 + arch: aarch64 + platform: linux + license: LicenseRef-libglvnd + size: 77736 + timestamp: 1731330998960 - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h77fa898_1.conda sha256: 1911c29975ec99b6b906904040c855772ccb265a1c79d5d75c8ceec4ed89cd63 md5: cc3573974587f12dda90d96e3e55a702 @@ -2811,37 +2881,37 @@ packages: license_family: GPL size: 54133 timestamp: 1729089498541 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libsystemd0-257.2-h3dc2cb9_0.conda - sha256: 03f532cae9ca0417b29ead19490a9fa0fa5e6ad73f1bfc7ea0d4d3bd4c41156e - md5: 40c12fdd396297db83f789722027f5ed +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsystemd0-257.3-h3dc2cb9_0.conda + sha256: dd566e2ef4a83b27d2b26d988cbbed50456294892744639f30f19954d2ee3287 + md5: df057752e83bd254f6d65646eb67cd2e depends: - __glibc >=2.17,<3.0.a0 - libcap >=2.71,<2.72.0a0 - libgcc >=13 - libgcrypt-lib >=1.11.0,<2.0a0 - - liblzma >=5.6.3,<6.0a0 + - liblzma >=5.6.4,<6.0a0 - lz4-c >=1.10.0,<1.11.0a0 - zstd >=1.5.6,<1.6.0a0 arch: x86_64 platform: linux license: LGPL-2.1-or-later - size: 487652 - timestamp: 1736377129372 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsystemd0-257.2-h27834fc_0.conda - sha256: 7b95a42f507479c4e76855dbffe65a3b51fa5f1465649be00a1940dec6cdb9a8 - md5: 18fbe3093009820c6fb7d6f1c710fd66 + size: 487271 + timestamp: 1739569869860 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsystemd0-257.3-h27834fc_0.conda + sha256: 707567df4c23c3c62ba97845bc130378526b2ff7ed0800c899bff7a19cf67e1d + md5: c5887d8cb34661658118cc7951772335 depends: - libcap >=2.71,<2.72.0a0 - libgcc >=13 - libgcrypt-lib >=1.11.0,<2.0a0 - - liblzma >=5.6.3,<6.0a0 + - liblzma >=5.6.4,<6.0a0 - lz4-c >=1.10.0,<1.11.0a0 - zstd >=1.5.6,<1.6.0a0 arch: aarch64 platform: linux license: LGPL-2.1-or-later - size: 512091 - timestamp: 1736377189744 + size: 509851 + timestamp: 1739569947167 - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hd9ff511_3.conda sha256: b224e16b88d76ea95e4af56e2bc638c603bd26a770b98d117d04541d3aafa002 md5: 0ea6510969e1296cc19966fad481f6de @@ -3124,48 +3194,48 @@ packages: license_family: BSD size: 184953 timestamp: 1733740984533 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021305-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021503-release.conda noarch: python - sha256: dffbba1853528866c2da6490f72d4bfa8a9745d8e17b49e78f23c48cd93da33f - md5: 16bf91203625a15123fec56de824ef43 + sha256: 268d6578bc34eea95e64a182ca3c835098ddf2d8aa9591195ec399271b9250cb + md5: d0f4b0001906d103c2a94fb76d7106aa depends: - - max-core ==25.2.0.dev2025021305 release - - max-python ==25.2.0.dev2025021305 release - - mojo-jupyter ==25.2.0.dev2025021305 release - - mblack ==25.2.0.dev2025021305 release + - max-core ==25.2.0.dev2025021503 release + - max-python ==25.2.0.dev2025021503 release + - mojo-jupyter ==25.2.0.dev2025021503 release + - mblack ==25.2.0.dev2025021503 release license: LicenseRef-Modular-Proprietary - size: 9904 - timestamp: 1739423790392 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025021305-release.conda - sha256: 4742604a258b6577a37c90448057c82c273165bd5454951fca34da3c9b1f2f11 - md5: b00e4bf8cb005535b57542211c611111 + size: 9899 + timestamp: 1739590931720 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025021503-release.conda + sha256: c8354f8755b54aa888320e400c5d4ff1f52c6c9e01a40088e028c02122a306e7 + md5: 10cb0acdb7bcbbd1f161cbde8d9fe18e depends: - - mblack ==25.2.0.dev2025021305 release + - mblack ==25.2.0.dev2025021503 release license: LicenseRef-Modular-Proprietary - size: 241873167 - timestamp: 1739423820390 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025021305-release.conda - sha256: 7c3de8d0a1e58de20f754e28c1f1e5991d9aefd2f8254c39ba330d0d973d7da4 - md5: 6299597e8c37878d614a86969076b38e + size: 243500591 + timestamp: 1739590931720 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025021503-release.conda + sha256: 9284c7168b2491bff32fd1c5bc64a4a365a10e7ee847ed987c7e319daf73d3ef + md5: 42b007179ea7c12b3d6ed07ab41c5e05 depends: - - mblack ==25.2.0.dev2025021305 release + - mblack ==25.2.0.dev2025021503 release license: LicenseRef-Modular-Proprietary - size: 244728628 - timestamp: 1739423790392 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025021305-release.conda - sha256: b70444b426b3c2f57fe86750f10e66488d85901b209bd441f1c2bc477632b42c - md5: 65801c3dd993bb2571e4dedeeeac02fd + size: 246180456 + timestamp: 1739590886007 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025021503-release.conda + sha256: f59f7397a0bba89a24ac9663dcad7f8803aac869deae52397527727baa774136 + md5: 52ce95dc9fd4ae50890a66872f20a7e8 depends: - - mblack ==25.2.0.dev2025021305 release + - mblack ==25.2.0.dev2025021503 release license: LicenseRef-Modular-Proprietary - size: 210546686 - timestamp: 1739425396471 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025021305-release.conda + size: 211873084 + timestamp: 1739592937028 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025021503-release.conda noarch: python - sha256: c3b86bb4bddcbbcc77a9610254afaf8d227e70642c1b08cb7de802c3cc5ad3c8 - md5: b1e07ee08343db2c8c1d516255c57fcf + sha256: 3cdb4e0ef18a3c8e704f7c1b758f697dcf7ae276035f366a4e975f8325b60c6a + md5: 0c2f7e732724211d6345e59cfd6ac16d depends: - - max-core ==25.2.0.dev2025021305 release + - max-core ==25.2.0.dev2025021503 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -3203,14 +3273,14 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 119314941 - timestamp: 1739423820390 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025021305-release.conda + size: 120569073 + timestamp: 1739590931720 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025021503-release.conda noarch: python - sha256: d815f33b32f711f458bad38121565177442c179661867d78438fb17804aae90d - md5: 1558cef0a9e44c5acb7fbce7bf9c795c + sha256: 6b79b45a95cfa6f66b9030bc8aab70b674c050031ab396e726928f67453633e5 + md5: 33ad7e785ca2ab0805382b13fa60c26c depends: - - max-core ==25.2.0.dev2025021305 release + - max-core ==25.2.0.dev2025021503 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -3248,14 +3318,14 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 121952822 - timestamp: 1739423790392 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025021305-release.conda + size: 123318221 + timestamp: 1739590886007 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025021503-release.conda noarch: python - sha256: 08e38e400944c081c50ba56171996c30d62bd2d442ec609e7daf56267f00505b - md5: 1e44e9b925b424bf63a0f6f714b14a49 + sha256: b28432855d2dc85ae4c18be4c4f8f5a54668a6ba7fa6f9f6260d6e68badef8f0 + md5: ffb6bc1434b8a93bea73ce0c1d3b6870 depends: - - max-core ==25.2.0.dev2025021305 release + - max-core ==25.2.0.dev2025021503 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -3293,12 +3363,12 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 108859238 - timestamp: 1739425396471 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021305-release.conda + size: 109985956 + timestamp: 1739592937028 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021503-release.conda noarch: python - sha256: 90fe9cd59bc694690f5a018f1b78a6c3dda2e42a57bd7570b5b7b336e5841ec3 - md5: 2039853d26c773ce8fecf08626ca7d05 + sha256: 5af761f8b1876d6fda1fe3175a5cac1737d5ba63ecfffd581287b9f44f43c74c + md5: cebe4753e9d3e7732f0cd96a8a3c6190 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -3309,20 +3379,20 @@ packages: - typing_extensions >=v4.12.2 - python license: MIT - size: 130858 - timestamp: 1739423790392 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021305-release.conda + size: 130842 + timestamp: 1739590931720 +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021503-release.conda noarch: python - sha256: 577a281a7b22e97ddb4a9bf8db40293c627fb5e4a07505de67e8eadea5e64d52 - md5: f3e2af71e3f2641375d1814609a358c7 + sha256: 435130e6150af35400b0a562fb3f13509b60d94f706e51dba135f7751e1f2fb4 + md5: 6846f728066c6a27f1b330986b03f22c depends: - - max-core ==25.2.0.dev2025021305 release + - max-core ==25.2.0.dev2025021503 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22993 - timestamp: 1739423790392 + size: 22979 + timestamp: 1739590931720 - conda: https://conda.anaconda.org/conda-forge/linux-64/mpg123-1.32.9-hc50e24c_0.conda sha256: 39c4700fb3fbe403a77d8cc27352fa72ba744db487559d5d44bf8411bb4ea200 md5: c7f302fd11eeb0987a6a5e1f3aed6a21 @@ -3846,10 +3916,9 @@ packages: license: LGPL-2.1-only size: 2932509 timestamp: 1727636775263 -- conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.8-h9e4cc4f_1_cpython.conda - build_number: 1 - sha256: 3f0e0518c992d8ccfe62b189125721309836fe48a010dc424240583e157f9ff0 - md5: 7fd2fd79436d9b473812f14e86746844 +- conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.9-h9e4cc4f_0_cpython.conda + sha256: 64fed5178f1e9c8ac0f572ac0ce37955f5dee7b2bcac665202bc14f1f7dd618a + md5: 5665f0079432f8848079c811cdb537d5 depends: - __glibc >=2.17,<3.0.a0 - bzip2 >=1.0.8,<2.0a0 @@ -3857,14 +3926,14 @@ packages: - libexpat >=2.6.4,<3.0a0 - libffi >=3.4,<4.0a0 - libgcc >=13 - - liblzma >=5.6.3,<6.0a0 + - liblzma >=5.6.4,<6.0a0 - libnsl >=2.0.1,<2.1.0a0 - - libsqlite >=3.47.0,<4.0a0 + - libsqlite >=3.48.0,<4.0a0 - libuuid >=2.38.1,<3.0a0 - libxcrypt >=4.4.36 - libzlib >=1.3.1,<2.0a0 - ncurses >=6.5,<7.0a0 - - openssl >=3.4.0,<4.0a0 + - openssl >=3.4.1,<4.0a0 - readline >=8.2,<9.0a0 - tk >=8.6.13,<8.7.0a0 - tzdata @@ -3873,26 +3942,25 @@ packages: arch: x86_64 platform: linux license: Python-2.0 - size: 31565686 - timestamp: 1733410597922 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.8-h1683364_1_cpython.conda - build_number: 1 - sha256: 85573582d5b0f79923fed0a8365d3d74d21eee9f0a5fa1b9345f191e006363ab - md5: 09ec612ea05370989eaa3d81abf0f369 + size: 31581682 + timestamp: 1739521496324 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.9-h1683364_0_cpython.conda + sha256: 0366f38918bceda8ff5917d7bbe1cea2bc8b6c74e7245eb0e4b0d3c2d37f76cf + md5: 2e7ad70254455e0508adabff10218512 depends: - bzip2 >=1.0.8,<2.0a0 - ld_impl_linux-aarch64 >=2.36.1 - libexpat >=2.6.4,<3.0a0 - libffi >=3.4,<4.0a0 - libgcc >=13 - - liblzma >=5.6.3,<6.0a0 + - liblzma >=5.6.4,<6.0a0 - libnsl >=2.0.1,<2.1.0a0 - - libsqlite >=3.47.0,<4.0a0 + - libsqlite >=3.48.0,<4.0a0 - libuuid >=2.38.1,<3.0a0 - libxcrypt >=4.4.36 - libzlib >=1.3.1,<2.0a0 - ncurses >=6.5,<7.0a0 - - openssl >=3.4.0,<4.0a0 + - openssl >=3.4.1,<4.0a0 - readline >=8.2,<9.0a0 - tk >=8.6.13,<8.7.0a0 - tzdata @@ -3901,22 +3969,21 @@ packages: arch: aarch64 platform: linux license: Python-2.0 - size: 13760816 - timestamp: 1733407890896 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.8-hc22306f_1_cpython.conda - build_number: 1 - sha256: 7586a711b1b08a9df8864e26efdc06980bdfb0e18d5ac4651d0fee30a8d3e3a0 - md5: 54ca5b5d92ef3a3ba61e195ee882a518 + size: 13804161 + timestamp: 1739519531794 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.9-hc22306f_0_cpython.conda + sha256: cbf81a78d3ca6e663e827523e6ddbc28369cac488da047a28f83875eb52fe5f6 + md5: 1d105a6c46a753e3c0bab54a1ad24063 depends: - __osx >=11.0 - bzip2 >=1.0.8,<2.0a0 - libexpat >=2.6.4,<3.0a0 - libffi >=3.4,<4.0a0 - - liblzma >=5.6.3,<6.0a0 - - libsqlite >=3.47.0,<4.0a0 + - liblzma >=5.6.4,<6.0a0 + - libsqlite >=3.48.0,<4.0a0 - libzlib >=1.3.1,<2.0a0 - ncurses >=6.5,<7.0a0 - - openssl >=3.4.0,<4.0a0 + - openssl >=3.4.1,<4.0a0 - readline >=8.2,<9.0a0 - tk >=8.6.13,<8.7.0a0 - tzdata @@ -3925,8 +3992,8 @@ packages: arch: arm64 platform: osx license: Python-2.0 - size: 12998673 - timestamp: 1733408900971 + size: 12947786 + timestamp: 1739520092196 - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda sha256: a50052536f1ef8516ed11a844f9413661829aa083304dc624c5925298d078d79 md5: 5ba79d7c71f03c678c8ead841f347d6e @@ -4089,48 +4156,50 @@ packages: license_family: GPL size: 250351 timestamp: 1679532511311 -- conda: https://conda.anaconda.org/conda-forge/linux-64/sdl2-2.30.10-h63c27ac_0.conda - sha256: 639325326d51cd70f56a55ffd3c1fa778e61751f16d66d0baea155375f1a139c - md5: 5cecf6d327e4f8c5dfafc71b4a8556e7 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sdl2-2.30.10-h63c27ac_1.conda + sha256: 685a55d71f4dee5f9ff23dfc063b0499335f073319d1111a36c3a2a056c74d4d + md5: 712cefaf74637d701a460094303a2db2 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 + - libgl >=1.7.0,<2.0a0 - libstdcxx >=13 - pulseaudio-client >=17.0,<17.1.0a0 - - xorg-libx11 >=1.8.10,<2.0a0 + - xorg-libx11 >=1.8.11,<2.0a0 - xorg-libxext >=1.3.6,<2.0a0 - xorg-libxfixes >=6.0.1,<7.0a0 arch: x86_64 platform: linux license: Zlib - size: 1352990 - timestamp: 1733624788165 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sdl2-2.30.10-h93e764a_0.conda - sha256: 8f03f2abcb4227e95d19b28124e0a5428f634b084b92ab91f3af7c825b626403 - md5: bcbf24da778bbdd20b09cf6ed52cefc2 + size: 1366290 + timestamp: 1739558400430 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sdl2-2.30.10-h93e764a_1.conda + sha256: e0c8220d19f611d2c981c122437a809d76e7e9ec8c2ea76484c9cace28cb1e15 + md5: 907d430d01b1f2e3108d6ec9f0989b06 depends: - libgcc >=13 + - libgl >=1.7.0,<2.0a0 - libstdcxx >=13 - pulseaudio-client >=17.0,<17.1.0a0 - - xorg-libx11 >=1.8.10,<2.0a0 + - xorg-libx11 >=1.8.11,<2.0a0 - xorg-libxext >=1.3.6,<2.0a0 - xorg-libxfixes >=6.0.1,<7.0a0 arch: aarch64 platform: linux license: Zlib - size: 1277076 - timestamp: 1733624829558 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sdl2-2.30.10-h994913f_0.conda - sha256: 7ff3167b6482c5fe7389c6c1836343c280a0eeb160524888e661f0f991708bd8 - md5: 4001ae6f1b1886583e82ab0dac5b575b + size: 1274333 + timestamp: 1739558343779 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sdl2-2.30.10-h994913f_1.conda + sha256: 1d95013eb2d91ee5307878ea093b824156918c4e012143f1379426904bb14f75 + md5: 238ef478cc394a7aade3ba55b1ebb1c6 depends: - __osx >=11.0 - libcxx >=18 arch: arm64 platform: osx license: Zlib - size: 1251116 - timestamp: 1733624861414 + size: 1251550 + timestamp: 1739558434573 - conda: https://conda.anaconda.org/conda-forge/linux-64/sdl2_image-2.8.2-h06ee604_1.conda sha256: f18184e016e2e57306d1540dea584d38f4617d7ddb6aad4af6b5f21c52fa39ea md5: 65e113270b460dcdfc4dc0a80bb3d11c diff --git a/examples/magic.lock b/examples/magic.lock index 4816a0d3d2..95c46e2bf3 100644 --- a/examples/magic.lock +++ b/examples/magic.lock @@ -42,11 +42,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021305-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025021305-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025021305-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021305-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021503-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025021503-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025021503-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021503-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021503-release.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-h2d0b736_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py311h64a7726_0.conda @@ -107,11 +107,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021305-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025021305-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025021305-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021305-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021503-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025021503-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025021503-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021503-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021503-release.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-ha32ae93_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py311h69ead2a_0.conda @@ -163,11 +163,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.48.0-h3f77e49_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021305-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025021305-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025021305-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021305-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021503-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025021503-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025021503-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021503-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021503-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py311h7125741_0.conda @@ -1290,48 +1290,48 @@ packages: license_family: APACHE size: 280830 timestamp: 1736986295869 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021305-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021503-release.conda noarch: python - sha256: dffbba1853528866c2da6490f72d4bfa8a9745d8e17b49e78f23c48cd93da33f - md5: 16bf91203625a15123fec56de824ef43 + sha256: 268d6578bc34eea95e64a182ca3c835098ddf2d8aa9591195ec399271b9250cb + md5: d0f4b0001906d103c2a94fb76d7106aa depends: - - max-core ==25.2.0.dev2025021305 release - - max-python ==25.2.0.dev2025021305 release - - mojo-jupyter ==25.2.0.dev2025021305 release - - mblack ==25.2.0.dev2025021305 release + - max-core ==25.2.0.dev2025021503 release + - max-python ==25.2.0.dev2025021503 release + - mojo-jupyter ==25.2.0.dev2025021503 release + - mblack ==25.2.0.dev2025021503 release license: LicenseRef-Modular-Proprietary - size: 9904 - timestamp: 1739423790392 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025021305-release.conda - sha256: 4742604a258b6577a37c90448057c82c273165bd5454951fca34da3c9b1f2f11 - md5: b00e4bf8cb005535b57542211c611111 + size: 9899 + timestamp: 1739590931720 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025021503-release.conda + sha256: c8354f8755b54aa888320e400c5d4ff1f52c6c9e01a40088e028c02122a306e7 + md5: 10cb0acdb7bcbbd1f161cbde8d9fe18e depends: - - mblack ==25.2.0.dev2025021305 release + - mblack ==25.2.0.dev2025021503 release license: LicenseRef-Modular-Proprietary - size: 241873167 - timestamp: 1739423820390 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025021305-release.conda - sha256: 7c3de8d0a1e58de20f754e28c1f1e5991d9aefd2f8254c39ba330d0d973d7da4 - md5: 6299597e8c37878d614a86969076b38e + size: 243500591 + timestamp: 1739590931720 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025021503-release.conda + sha256: 9284c7168b2491bff32fd1c5bc64a4a365a10e7ee847ed987c7e319daf73d3ef + md5: 42b007179ea7c12b3d6ed07ab41c5e05 depends: - - mblack ==25.2.0.dev2025021305 release + - mblack ==25.2.0.dev2025021503 release license: LicenseRef-Modular-Proprietary - size: 244728628 - timestamp: 1739423790392 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025021305-release.conda - sha256: b70444b426b3c2f57fe86750f10e66488d85901b209bd441f1c2bc477632b42c - md5: 65801c3dd993bb2571e4dedeeeac02fd + size: 246180456 + timestamp: 1739590886007 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025021503-release.conda + sha256: f59f7397a0bba89a24ac9663dcad7f8803aac869deae52397527727baa774136 + md5: 52ce95dc9fd4ae50890a66872f20a7e8 depends: - - mblack ==25.2.0.dev2025021305 release + - mblack ==25.2.0.dev2025021503 release license: LicenseRef-Modular-Proprietary - size: 210546686 - timestamp: 1739425396471 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025021305-release.conda + size: 211873084 + timestamp: 1739592937028 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025021503-release.conda noarch: python - sha256: c3b86bb4bddcbbcc77a9610254afaf8d227e70642c1b08cb7de802c3cc5ad3c8 - md5: b1e07ee08343db2c8c1d516255c57fcf + sha256: 3cdb4e0ef18a3c8e704f7c1b758f697dcf7ae276035f366a4e975f8325b60c6a + md5: 0c2f7e732724211d6345e59cfd6ac16d depends: - - max-core ==25.2.0.dev2025021305 release + - max-core ==25.2.0.dev2025021503 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1369,14 +1369,14 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 119314941 - timestamp: 1739423820390 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025021305-release.conda + size: 120569073 + timestamp: 1739590931720 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025021503-release.conda noarch: python - sha256: d815f33b32f711f458bad38121565177442c179661867d78438fb17804aae90d - md5: 1558cef0a9e44c5acb7fbce7bf9c795c + sha256: 6b79b45a95cfa6f66b9030bc8aab70b674c050031ab396e726928f67453633e5 + md5: 33ad7e785ca2ab0805382b13fa60c26c depends: - - max-core ==25.2.0.dev2025021305 release + - max-core ==25.2.0.dev2025021503 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1414,14 +1414,14 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 121952822 - timestamp: 1739423790392 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025021305-release.conda + size: 123318221 + timestamp: 1739590886007 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025021503-release.conda noarch: python - sha256: 08e38e400944c081c50ba56171996c30d62bd2d442ec609e7daf56267f00505b - md5: 1e44e9b925b424bf63a0f6f714b14a49 + sha256: b28432855d2dc85ae4c18be4c4f8f5a54668a6ba7fa6f9f6260d6e68badef8f0 + md5: ffb6bc1434b8a93bea73ce0c1d3b6870 depends: - - max-core ==25.2.0.dev2025021305 release + - max-core ==25.2.0.dev2025021503 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1459,12 +1459,12 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 108859238 - timestamp: 1739425396471 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021305-release.conda + size: 109985956 + timestamp: 1739592937028 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021503-release.conda noarch: python - sha256: 90fe9cd59bc694690f5a018f1b78a6c3dda2e42a57bd7570b5b7b336e5841ec3 - md5: 2039853d26c773ce8fecf08626ca7d05 + sha256: 5af761f8b1876d6fda1fe3175a5cac1737d5ba63ecfffd581287b9f44f43c74c + md5: cebe4753e9d3e7732f0cd96a8a3c6190 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -1475,20 +1475,20 @@ packages: - typing_extensions >=v4.12.2 - python license: MIT - size: 130858 - timestamp: 1739423790392 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021305-release.conda + size: 130842 + timestamp: 1739590931720 +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021503-release.conda noarch: python - sha256: 577a281a7b22e97ddb4a9bf8db40293c627fb5e4a07505de67e8eadea5e64d52 - md5: f3e2af71e3f2641375d1814609a358c7 + sha256: 435130e6150af35400b0a562fb3f13509b60d94f706e51dba135f7751e1f2fb4 + md5: 6846f728066c6a27f1b330986b03f22c depends: - - max-core ==25.2.0.dev2025021305 release + - max-core ==25.2.0.dev2025021503 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22993 - timestamp: 1739423790392 + size: 22979 + timestamp: 1739590931720 - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda sha256: 1895f47b7d68581a6facde5cb13ab8c2764c2e53a76bd746f8f98910dc4e08fe md5: 29097e7ea634a45cc5386b95cac6568f diff --git a/examples/operators/magic.lock b/examples/operators/magic.lock index 9a62d8b96e..b9c6867b16 100644 --- a/examples/operators/magic.lock +++ b/examples/operators/magic.lock @@ -45,12 +45,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.5-h0d44e9d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/llvm-openmp-19.1.7-h024ca30_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021305-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025021305-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025021305-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021503-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025021503-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025021503-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021503-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-2024.2.2-ha957f24_16.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021503-release.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-h2d0b736_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda @@ -58,7 +58,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.8-h9e4cc4f_1_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.9-h9e4cc4f_0_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.1-py312hbf22597_0.conda @@ -112,11 +112,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021305-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025021305-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025021305-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021305-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021503-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025021503-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025021503-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021503-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021503-release.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-ha32ae93_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda @@ -124,7 +124,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.8-h1683364_1_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.9-h1683364_0_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.12-5_cp312.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyzmq-26.2.1-py312h2427ae1_0.conda @@ -168,11 +168,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.48.0-h3f77e49_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021305-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025021305-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025021305-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021305-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021503-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025021503-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025021503-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021503-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021503-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda @@ -180,7 +180,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.8-hc22306f_1_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.9-hc22306f_0_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-5_cp312.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.1-py312hf4875e0_0.conda @@ -1336,48 +1336,48 @@ packages: license_family: APACHE size: 280830 timestamp: 1736986295869 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021305-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021503-release.conda noarch: python - sha256: dffbba1853528866c2da6490f72d4bfa8a9745d8e17b49e78f23c48cd93da33f - md5: 16bf91203625a15123fec56de824ef43 + sha256: 268d6578bc34eea95e64a182ca3c835098ddf2d8aa9591195ec399271b9250cb + md5: d0f4b0001906d103c2a94fb76d7106aa depends: - - max-core ==25.2.0.dev2025021305 release - - max-python ==25.2.0.dev2025021305 release - - mojo-jupyter ==25.2.0.dev2025021305 release - - mblack ==25.2.0.dev2025021305 release + - max-core ==25.2.0.dev2025021503 release + - max-python ==25.2.0.dev2025021503 release + - mojo-jupyter ==25.2.0.dev2025021503 release + - mblack ==25.2.0.dev2025021503 release license: LicenseRef-Modular-Proprietary - size: 9904 - timestamp: 1739423790392 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025021305-release.conda - sha256: 4742604a258b6577a37c90448057c82c273165bd5454951fca34da3c9b1f2f11 - md5: b00e4bf8cb005535b57542211c611111 + size: 9899 + timestamp: 1739590931720 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025021503-release.conda + sha256: c8354f8755b54aa888320e400c5d4ff1f52c6c9e01a40088e028c02122a306e7 + md5: 10cb0acdb7bcbbd1f161cbde8d9fe18e depends: - - mblack ==25.2.0.dev2025021305 release + - mblack ==25.2.0.dev2025021503 release license: LicenseRef-Modular-Proprietary - size: 241873167 - timestamp: 1739423820390 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025021305-release.conda - sha256: 7c3de8d0a1e58de20f754e28c1f1e5991d9aefd2f8254c39ba330d0d973d7da4 - md5: 6299597e8c37878d614a86969076b38e + size: 243500591 + timestamp: 1739590931720 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025021503-release.conda + sha256: 9284c7168b2491bff32fd1c5bc64a4a365a10e7ee847ed987c7e319daf73d3ef + md5: 42b007179ea7c12b3d6ed07ab41c5e05 depends: - - mblack ==25.2.0.dev2025021305 release + - mblack ==25.2.0.dev2025021503 release license: LicenseRef-Modular-Proprietary - size: 244728628 - timestamp: 1739423790392 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025021305-release.conda - sha256: b70444b426b3c2f57fe86750f10e66488d85901b209bd441f1c2bc477632b42c - md5: 65801c3dd993bb2571e4dedeeeac02fd + size: 246180456 + timestamp: 1739590886007 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025021503-release.conda + sha256: f59f7397a0bba89a24ac9663dcad7f8803aac869deae52397527727baa774136 + md5: 52ce95dc9fd4ae50890a66872f20a7e8 depends: - - mblack ==25.2.0.dev2025021305 release + - mblack ==25.2.0.dev2025021503 release license: LicenseRef-Modular-Proprietary - size: 210546686 - timestamp: 1739425396471 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025021305-release.conda + size: 211873084 + timestamp: 1739592937028 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025021503-release.conda noarch: python - sha256: c3b86bb4bddcbbcc77a9610254afaf8d227e70642c1b08cb7de802c3cc5ad3c8 - md5: b1e07ee08343db2c8c1d516255c57fcf + sha256: 3cdb4e0ef18a3c8e704f7c1b758f697dcf7ae276035f366a4e975f8325b60c6a + md5: 0c2f7e732724211d6345e59cfd6ac16d depends: - - max-core ==25.2.0.dev2025021305 release + - max-core ==25.2.0.dev2025021503 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1415,14 +1415,14 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 119314941 - timestamp: 1739423820390 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025021305-release.conda + size: 120569073 + timestamp: 1739590931720 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025021503-release.conda noarch: python - sha256: d815f33b32f711f458bad38121565177442c179661867d78438fb17804aae90d - md5: 1558cef0a9e44c5acb7fbce7bf9c795c + sha256: 6b79b45a95cfa6f66b9030bc8aab70b674c050031ab396e726928f67453633e5 + md5: 33ad7e785ca2ab0805382b13fa60c26c depends: - - max-core ==25.2.0.dev2025021305 release + - max-core ==25.2.0.dev2025021503 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1460,14 +1460,14 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 121952822 - timestamp: 1739423790392 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025021305-release.conda + size: 123318221 + timestamp: 1739590886007 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025021503-release.conda noarch: python - sha256: 08e38e400944c081c50ba56171996c30d62bd2d442ec609e7daf56267f00505b - md5: 1e44e9b925b424bf63a0f6f714b14a49 + sha256: b28432855d2dc85ae4c18be4c4f8f5a54668a6ba7fa6f9f6260d6e68badef8f0 + md5: ffb6bc1434b8a93bea73ce0c1d3b6870 depends: - - max-core ==25.2.0.dev2025021305 release + - max-core ==25.2.0.dev2025021503 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1505,12 +1505,12 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 108859238 - timestamp: 1739425396471 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021305-release.conda + size: 109985956 + timestamp: 1739592937028 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021503-release.conda noarch: python - sha256: 90fe9cd59bc694690f5a018f1b78a6c3dda2e42a57bd7570b5b7b336e5841ec3 - md5: 2039853d26c773ce8fecf08626ca7d05 + sha256: 5af761f8b1876d6fda1fe3175a5cac1737d5ba63ecfffd581287b9f44f43c74c + md5: cebe4753e9d3e7732f0cd96a8a3c6190 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -1521,8 +1521,8 @@ packages: - typing_extensions >=v4.12.2 - python license: MIT - size: 130858 - timestamp: 1739423790392 + size: 130842 + timestamp: 1739590931720 - conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-2024.2.2-ha957f24_16.conda sha256: 77906b0acead8f86b489da46f53916e624897338770dbf70b04b8f673c9273c1 md5: 1459379c79dda834673426504d52b319 @@ -1537,18 +1537,18 @@ packages: license_family: Proprietary size: 124718448 timestamp: 1730231808335 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021305-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021503-release.conda noarch: python - sha256: 577a281a7b22e97ddb4a9bf8db40293c627fb5e4a07505de67e8eadea5e64d52 - md5: f3e2af71e3f2641375d1814609a358c7 + sha256: 435130e6150af35400b0a562fb3f13509b60d94f706e51dba135f7751e1f2fb4 + md5: 6846f728066c6a27f1b330986b03f22c depends: - - max-core ==25.2.0.dev2025021305 release + - max-core ==25.2.0.dev2025021503 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22993 - timestamp: 1739423790392 + size: 22979 + timestamp: 1739590931720 - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda sha256: 1895f47b7d68581a6facde5cb13ab8c2764c2e53a76bd746f8f98910dc4e08fe md5: 29097e7ea634a45cc5386b95cac6568f @@ -1711,10 +1711,9 @@ packages: license_family: MIT size: 20448 timestamp: 1733232756001 -- conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.8-h9e4cc4f_1_cpython.conda - build_number: 1 - sha256: 3f0e0518c992d8ccfe62b189125721309836fe48a010dc424240583e157f9ff0 - md5: 7fd2fd79436d9b473812f14e86746844 +- conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.9-h9e4cc4f_0_cpython.conda + sha256: 64fed5178f1e9c8ac0f572ac0ce37955f5dee7b2bcac665202bc14f1f7dd618a + md5: 5665f0079432f8848079c811cdb537d5 depends: - __glibc >=2.17,<3.0.a0 - bzip2 >=1.0.8,<2.0a0 @@ -1722,14 +1721,14 @@ packages: - libexpat >=2.6.4,<3.0a0 - libffi >=3.4,<4.0a0 - libgcc >=13 - - liblzma >=5.6.3,<6.0a0 + - liblzma >=5.6.4,<6.0a0 - libnsl >=2.0.1,<2.1.0a0 - - libsqlite >=3.47.0,<4.0a0 + - libsqlite >=3.48.0,<4.0a0 - libuuid >=2.38.1,<3.0a0 - libxcrypt >=4.4.36 - libzlib >=1.3.1,<2.0a0 - ncurses >=6.5,<7.0a0 - - openssl >=3.4.0,<4.0a0 + - openssl >=3.4.1,<4.0a0 - readline >=8.2,<9.0a0 - tk >=8.6.13,<8.7.0a0 - tzdata @@ -1738,26 +1737,25 @@ packages: arch: x86_64 platform: linux license: Python-2.0 - size: 31565686 - timestamp: 1733410597922 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.8-h1683364_1_cpython.conda - build_number: 1 - sha256: 85573582d5b0f79923fed0a8365d3d74d21eee9f0a5fa1b9345f191e006363ab - md5: 09ec612ea05370989eaa3d81abf0f369 + size: 31581682 + timestamp: 1739521496324 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.9-h1683364_0_cpython.conda + sha256: 0366f38918bceda8ff5917d7bbe1cea2bc8b6c74e7245eb0e4b0d3c2d37f76cf + md5: 2e7ad70254455e0508adabff10218512 depends: - bzip2 >=1.0.8,<2.0a0 - ld_impl_linux-aarch64 >=2.36.1 - libexpat >=2.6.4,<3.0a0 - libffi >=3.4,<4.0a0 - libgcc >=13 - - liblzma >=5.6.3,<6.0a0 + - liblzma >=5.6.4,<6.0a0 - libnsl >=2.0.1,<2.1.0a0 - - libsqlite >=3.47.0,<4.0a0 + - libsqlite >=3.48.0,<4.0a0 - libuuid >=2.38.1,<3.0a0 - libxcrypt >=4.4.36 - libzlib >=1.3.1,<2.0a0 - ncurses >=6.5,<7.0a0 - - openssl >=3.4.0,<4.0a0 + - openssl >=3.4.1,<4.0a0 - readline >=8.2,<9.0a0 - tk >=8.6.13,<8.7.0a0 - tzdata @@ -1766,22 +1764,21 @@ packages: arch: aarch64 platform: linux license: Python-2.0 - size: 13760816 - timestamp: 1733407890896 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.8-hc22306f_1_cpython.conda - build_number: 1 - sha256: 7586a711b1b08a9df8864e26efdc06980bdfb0e18d5ac4651d0fee30a8d3e3a0 - md5: 54ca5b5d92ef3a3ba61e195ee882a518 + size: 13804161 + timestamp: 1739519531794 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.9-hc22306f_0_cpython.conda + sha256: cbf81a78d3ca6e663e827523e6ddbc28369cac488da047a28f83875eb52fe5f6 + md5: 1d105a6c46a753e3c0bab54a1ad24063 depends: - __osx >=11.0 - bzip2 >=1.0.8,<2.0a0 - libexpat >=2.6.4,<3.0a0 - libffi >=3.4,<4.0a0 - - liblzma >=5.6.3,<6.0a0 - - libsqlite >=3.47.0,<4.0a0 + - liblzma >=5.6.4,<6.0a0 + - libsqlite >=3.48.0,<4.0a0 - libzlib >=1.3.1,<2.0a0 - ncurses >=6.5,<7.0a0 - - openssl >=3.4.0,<4.0a0 + - openssl >=3.4.1,<4.0a0 - readline >=8.2,<9.0a0 - tk >=8.6.13,<8.7.0a0 - tzdata @@ -1790,8 +1787,8 @@ packages: arch: arm64 platform: osx license: Python-2.0 - size: 12998673 - timestamp: 1733408900971 + size: 12947786 + timestamp: 1739520092196 - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda sha256: a50052536f1ef8516ed11a844f9413661829aa083304dc624c5925298d078d79 md5: 5ba79d7c71f03c678c8ead841f347d6e diff --git a/examples/testing/magic.lock b/examples/testing/magic.lock index 9a62d8b96e..b9c6867b16 100644 --- a/examples/testing/magic.lock +++ b/examples/testing/magic.lock @@ -45,12 +45,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.5-h0d44e9d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/llvm-openmp-19.1.7-h024ca30_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021305-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025021305-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025021305-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021503-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025021503-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025021503-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021503-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-2024.2.2-ha957f24_16.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021503-release.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-h2d0b736_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda @@ -58,7 +58,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.8-h9e4cc4f_1_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.9-h9e4cc4f_0_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.1-py312hbf22597_0.conda @@ -112,11 +112,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021305-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025021305-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025021305-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021305-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021503-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025021503-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025021503-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021503-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021503-release.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-ha32ae93_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda @@ -124,7 +124,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.8-h1683364_1_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.9-h1683364_0_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.12-5_cp312.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyzmq-26.2.1-py312h2427ae1_0.conda @@ -168,11 +168,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.48.0-h3f77e49_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021305-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025021305-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025021305-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021305-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021503-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025021503-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025021503-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021503-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021503-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda @@ -180,7 +180,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.8-hc22306f_1_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.9-hc22306f_0_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-5_cp312.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.1-py312hf4875e0_0.conda @@ -1336,48 +1336,48 @@ packages: license_family: APACHE size: 280830 timestamp: 1736986295869 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021305-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021503-release.conda noarch: python - sha256: dffbba1853528866c2da6490f72d4bfa8a9745d8e17b49e78f23c48cd93da33f - md5: 16bf91203625a15123fec56de824ef43 + sha256: 268d6578bc34eea95e64a182ca3c835098ddf2d8aa9591195ec399271b9250cb + md5: d0f4b0001906d103c2a94fb76d7106aa depends: - - max-core ==25.2.0.dev2025021305 release - - max-python ==25.2.0.dev2025021305 release - - mojo-jupyter ==25.2.0.dev2025021305 release - - mblack ==25.2.0.dev2025021305 release + - max-core ==25.2.0.dev2025021503 release + - max-python ==25.2.0.dev2025021503 release + - mojo-jupyter ==25.2.0.dev2025021503 release + - mblack ==25.2.0.dev2025021503 release license: LicenseRef-Modular-Proprietary - size: 9904 - timestamp: 1739423790392 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025021305-release.conda - sha256: 4742604a258b6577a37c90448057c82c273165bd5454951fca34da3c9b1f2f11 - md5: b00e4bf8cb005535b57542211c611111 + size: 9899 + timestamp: 1739590931720 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025021503-release.conda + sha256: c8354f8755b54aa888320e400c5d4ff1f52c6c9e01a40088e028c02122a306e7 + md5: 10cb0acdb7bcbbd1f161cbde8d9fe18e depends: - - mblack ==25.2.0.dev2025021305 release + - mblack ==25.2.0.dev2025021503 release license: LicenseRef-Modular-Proprietary - size: 241873167 - timestamp: 1739423820390 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025021305-release.conda - sha256: 7c3de8d0a1e58de20f754e28c1f1e5991d9aefd2f8254c39ba330d0d973d7da4 - md5: 6299597e8c37878d614a86969076b38e + size: 243500591 + timestamp: 1739590931720 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025021503-release.conda + sha256: 9284c7168b2491bff32fd1c5bc64a4a365a10e7ee847ed987c7e319daf73d3ef + md5: 42b007179ea7c12b3d6ed07ab41c5e05 depends: - - mblack ==25.2.0.dev2025021305 release + - mblack ==25.2.0.dev2025021503 release license: LicenseRef-Modular-Proprietary - size: 244728628 - timestamp: 1739423790392 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025021305-release.conda - sha256: b70444b426b3c2f57fe86750f10e66488d85901b209bd441f1c2bc477632b42c - md5: 65801c3dd993bb2571e4dedeeeac02fd + size: 246180456 + timestamp: 1739590886007 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025021503-release.conda + sha256: f59f7397a0bba89a24ac9663dcad7f8803aac869deae52397527727baa774136 + md5: 52ce95dc9fd4ae50890a66872f20a7e8 depends: - - mblack ==25.2.0.dev2025021305 release + - mblack ==25.2.0.dev2025021503 release license: LicenseRef-Modular-Proprietary - size: 210546686 - timestamp: 1739425396471 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025021305-release.conda + size: 211873084 + timestamp: 1739592937028 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025021503-release.conda noarch: python - sha256: c3b86bb4bddcbbcc77a9610254afaf8d227e70642c1b08cb7de802c3cc5ad3c8 - md5: b1e07ee08343db2c8c1d516255c57fcf + sha256: 3cdb4e0ef18a3c8e704f7c1b758f697dcf7ae276035f366a4e975f8325b60c6a + md5: 0c2f7e732724211d6345e59cfd6ac16d depends: - - max-core ==25.2.0.dev2025021305 release + - max-core ==25.2.0.dev2025021503 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1415,14 +1415,14 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 119314941 - timestamp: 1739423820390 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025021305-release.conda + size: 120569073 + timestamp: 1739590931720 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025021503-release.conda noarch: python - sha256: d815f33b32f711f458bad38121565177442c179661867d78438fb17804aae90d - md5: 1558cef0a9e44c5acb7fbce7bf9c795c + sha256: 6b79b45a95cfa6f66b9030bc8aab70b674c050031ab396e726928f67453633e5 + md5: 33ad7e785ca2ab0805382b13fa60c26c depends: - - max-core ==25.2.0.dev2025021305 release + - max-core ==25.2.0.dev2025021503 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1460,14 +1460,14 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 121952822 - timestamp: 1739423790392 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025021305-release.conda + size: 123318221 + timestamp: 1739590886007 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025021503-release.conda noarch: python - sha256: 08e38e400944c081c50ba56171996c30d62bd2d442ec609e7daf56267f00505b - md5: 1e44e9b925b424bf63a0f6f714b14a49 + sha256: b28432855d2dc85ae4c18be4c4f8f5a54668a6ba7fa6f9f6260d6e68badef8f0 + md5: ffb6bc1434b8a93bea73ce0c1d3b6870 depends: - - max-core ==25.2.0.dev2025021305 release + - max-core ==25.2.0.dev2025021503 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1505,12 +1505,12 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 108859238 - timestamp: 1739425396471 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021305-release.conda + size: 109985956 + timestamp: 1739592937028 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021503-release.conda noarch: python - sha256: 90fe9cd59bc694690f5a018f1b78a6c3dda2e42a57bd7570b5b7b336e5841ec3 - md5: 2039853d26c773ce8fecf08626ca7d05 + sha256: 5af761f8b1876d6fda1fe3175a5cac1737d5ba63ecfffd581287b9f44f43c74c + md5: cebe4753e9d3e7732f0cd96a8a3c6190 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -1521,8 +1521,8 @@ packages: - typing_extensions >=v4.12.2 - python license: MIT - size: 130858 - timestamp: 1739423790392 + size: 130842 + timestamp: 1739590931720 - conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-2024.2.2-ha957f24_16.conda sha256: 77906b0acead8f86b489da46f53916e624897338770dbf70b04b8f673c9273c1 md5: 1459379c79dda834673426504d52b319 @@ -1537,18 +1537,18 @@ packages: license_family: Proprietary size: 124718448 timestamp: 1730231808335 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021305-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021503-release.conda noarch: python - sha256: 577a281a7b22e97ddb4a9bf8db40293c627fb5e4a07505de67e8eadea5e64d52 - md5: f3e2af71e3f2641375d1814609a358c7 + sha256: 435130e6150af35400b0a562fb3f13509b60d94f706e51dba135f7751e1f2fb4 + md5: 6846f728066c6a27f1b330986b03f22c depends: - - max-core ==25.2.0.dev2025021305 release + - max-core ==25.2.0.dev2025021503 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22993 - timestamp: 1739423790392 + size: 22979 + timestamp: 1739590931720 - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda sha256: 1895f47b7d68581a6facde5cb13ab8c2764c2e53a76bd746f8f98910dc4e08fe md5: 29097e7ea634a45cc5386b95cac6568f @@ -1711,10 +1711,9 @@ packages: license_family: MIT size: 20448 timestamp: 1733232756001 -- conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.8-h9e4cc4f_1_cpython.conda - build_number: 1 - sha256: 3f0e0518c992d8ccfe62b189125721309836fe48a010dc424240583e157f9ff0 - md5: 7fd2fd79436d9b473812f14e86746844 +- conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.9-h9e4cc4f_0_cpython.conda + sha256: 64fed5178f1e9c8ac0f572ac0ce37955f5dee7b2bcac665202bc14f1f7dd618a + md5: 5665f0079432f8848079c811cdb537d5 depends: - __glibc >=2.17,<3.0.a0 - bzip2 >=1.0.8,<2.0a0 @@ -1722,14 +1721,14 @@ packages: - libexpat >=2.6.4,<3.0a0 - libffi >=3.4,<4.0a0 - libgcc >=13 - - liblzma >=5.6.3,<6.0a0 + - liblzma >=5.6.4,<6.0a0 - libnsl >=2.0.1,<2.1.0a0 - - libsqlite >=3.47.0,<4.0a0 + - libsqlite >=3.48.0,<4.0a0 - libuuid >=2.38.1,<3.0a0 - libxcrypt >=4.4.36 - libzlib >=1.3.1,<2.0a0 - ncurses >=6.5,<7.0a0 - - openssl >=3.4.0,<4.0a0 + - openssl >=3.4.1,<4.0a0 - readline >=8.2,<9.0a0 - tk >=8.6.13,<8.7.0a0 - tzdata @@ -1738,26 +1737,25 @@ packages: arch: x86_64 platform: linux license: Python-2.0 - size: 31565686 - timestamp: 1733410597922 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.8-h1683364_1_cpython.conda - build_number: 1 - sha256: 85573582d5b0f79923fed0a8365d3d74d21eee9f0a5fa1b9345f191e006363ab - md5: 09ec612ea05370989eaa3d81abf0f369 + size: 31581682 + timestamp: 1739521496324 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.9-h1683364_0_cpython.conda + sha256: 0366f38918bceda8ff5917d7bbe1cea2bc8b6c74e7245eb0e4b0d3c2d37f76cf + md5: 2e7ad70254455e0508adabff10218512 depends: - bzip2 >=1.0.8,<2.0a0 - ld_impl_linux-aarch64 >=2.36.1 - libexpat >=2.6.4,<3.0a0 - libffi >=3.4,<4.0a0 - libgcc >=13 - - liblzma >=5.6.3,<6.0a0 + - liblzma >=5.6.4,<6.0a0 - libnsl >=2.0.1,<2.1.0a0 - - libsqlite >=3.47.0,<4.0a0 + - libsqlite >=3.48.0,<4.0a0 - libuuid >=2.38.1,<3.0a0 - libxcrypt >=4.4.36 - libzlib >=1.3.1,<2.0a0 - ncurses >=6.5,<7.0a0 - - openssl >=3.4.0,<4.0a0 + - openssl >=3.4.1,<4.0a0 - readline >=8.2,<9.0a0 - tk >=8.6.13,<8.7.0a0 - tzdata @@ -1766,22 +1764,21 @@ packages: arch: aarch64 platform: linux license: Python-2.0 - size: 13760816 - timestamp: 1733407890896 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.8-hc22306f_1_cpython.conda - build_number: 1 - sha256: 7586a711b1b08a9df8864e26efdc06980bdfb0e18d5ac4651d0fee30a8d3e3a0 - md5: 54ca5b5d92ef3a3ba61e195ee882a518 + size: 13804161 + timestamp: 1739519531794 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.9-hc22306f_0_cpython.conda + sha256: cbf81a78d3ca6e663e827523e6ddbc28369cac488da047a28f83875eb52fe5f6 + md5: 1d105a6c46a753e3c0bab54a1ad24063 depends: - __osx >=11.0 - bzip2 >=1.0.8,<2.0a0 - libexpat >=2.6.4,<3.0a0 - libffi >=3.4,<4.0a0 - - liblzma >=5.6.3,<6.0a0 - - libsqlite >=3.47.0,<4.0a0 + - liblzma >=5.6.4,<6.0a0 + - libsqlite >=3.48.0,<4.0a0 - libzlib >=1.3.1,<2.0a0 - ncurses >=6.5,<7.0a0 - - openssl >=3.4.0,<4.0a0 + - openssl >=3.4.1,<4.0a0 - readline >=8.2,<9.0a0 - tk >=8.6.13,<8.7.0a0 - tzdata @@ -1790,8 +1787,8 @@ packages: arch: arm64 platform: osx license: Python-2.0 - size: 12998673 - timestamp: 1733408900971 + size: 12947786 + timestamp: 1739520092196 - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda sha256: a50052536f1ef8516ed11a844f9413661829aa083304dc624c5925298d078d79 md5: 5ba79d7c71f03c678c8ead841f347d6e diff --git a/magic.lock b/magic.lock index b20e7f077d..8ea316ecbb 100644 --- a/magic.lock +++ b/magic.lock @@ -43,11 +43,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/lit-19.1.7-pyhd8ed1ab_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021305-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025021305-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025021305-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021305-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021503-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025021503-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025021503-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021503-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021503-release.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-h2d0b736_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda @@ -55,7 +55,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.8-h9e4cc4f_1_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.9-h9e4cc4f_0_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.1-py312hbf22597_0.conda @@ -109,11 +109,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/lit-19.1.7-pyhd8ed1ab_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021305-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025021305-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025021305-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021305-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021503-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025021503-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025021503-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021503-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021503-release.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-ha32ae93_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda @@ -121,7 +121,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.8-h1683364_1_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.9-h1683364_0_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.12-5_cp312.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyzmq-26.2.1-py312h2427ae1_0.conda @@ -166,11 +166,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/lit-19.1.7-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021305-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025021305-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025021305-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021305-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021503-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025021503-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025021503-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021503-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021503-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda @@ -178,7 +178,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.8-hc22306f_1_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.9-hc22306f_0_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-5_cp312.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.1-py312hf4875e0_0.conda @@ -1302,48 +1302,48 @@ packages: license_family: APACHE size: 280830 timestamp: 1736986295869 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021305-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021503-release.conda noarch: python - sha256: dffbba1853528866c2da6490f72d4bfa8a9745d8e17b49e78f23c48cd93da33f - md5: 16bf91203625a15123fec56de824ef43 + sha256: 268d6578bc34eea95e64a182ca3c835098ddf2d8aa9591195ec399271b9250cb + md5: d0f4b0001906d103c2a94fb76d7106aa depends: - - max-core ==25.2.0.dev2025021305 release - - max-python ==25.2.0.dev2025021305 release - - mojo-jupyter ==25.2.0.dev2025021305 release - - mblack ==25.2.0.dev2025021305 release + - max-core ==25.2.0.dev2025021503 release + - max-python ==25.2.0.dev2025021503 release + - mojo-jupyter ==25.2.0.dev2025021503 release + - mblack ==25.2.0.dev2025021503 release license: LicenseRef-Modular-Proprietary - size: 9904 - timestamp: 1739423790392 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025021305-release.conda - sha256: 4742604a258b6577a37c90448057c82c273165bd5454951fca34da3c9b1f2f11 - md5: b00e4bf8cb005535b57542211c611111 + size: 9899 + timestamp: 1739590931720 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025021503-release.conda + sha256: c8354f8755b54aa888320e400c5d4ff1f52c6c9e01a40088e028c02122a306e7 + md5: 10cb0acdb7bcbbd1f161cbde8d9fe18e depends: - - mblack ==25.2.0.dev2025021305 release + - mblack ==25.2.0.dev2025021503 release license: LicenseRef-Modular-Proprietary - size: 241873167 - timestamp: 1739423820390 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025021305-release.conda - sha256: 7c3de8d0a1e58de20f754e28c1f1e5991d9aefd2f8254c39ba330d0d973d7da4 - md5: 6299597e8c37878d614a86969076b38e + size: 243500591 + timestamp: 1739590931720 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025021503-release.conda + sha256: 9284c7168b2491bff32fd1c5bc64a4a365a10e7ee847ed987c7e319daf73d3ef + md5: 42b007179ea7c12b3d6ed07ab41c5e05 depends: - - mblack ==25.2.0.dev2025021305 release + - mblack ==25.2.0.dev2025021503 release license: LicenseRef-Modular-Proprietary - size: 244728628 - timestamp: 1739423790392 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025021305-release.conda - sha256: b70444b426b3c2f57fe86750f10e66488d85901b209bd441f1c2bc477632b42c - md5: 65801c3dd993bb2571e4dedeeeac02fd + size: 246180456 + timestamp: 1739590886007 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025021503-release.conda + sha256: f59f7397a0bba89a24ac9663dcad7f8803aac869deae52397527727baa774136 + md5: 52ce95dc9fd4ae50890a66872f20a7e8 depends: - - mblack ==25.2.0.dev2025021305 release + - mblack ==25.2.0.dev2025021503 release license: LicenseRef-Modular-Proprietary - size: 210546686 - timestamp: 1739425396471 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025021305-release.conda + size: 211873084 + timestamp: 1739592937028 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025021503-release.conda noarch: python - sha256: c3b86bb4bddcbbcc77a9610254afaf8d227e70642c1b08cb7de802c3cc5ad3c8 - md5: b1e07ee08343db2c8c1d516255c57fcf + sha256: 3cdb4e0ef18a3c8e704f7c1b758f697dcf7ae276035f366a4e975f8325b60c6a + md5: 0c2f7e732724211d6345e59cfd6ac16d depends: - - max-core ==25.2.0.dev2025021305 release + - max-core ==25.2.0.dev2025021503 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1381,14 +1381,14 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 119314941 - timestamp: 1739423820390 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025021305-release.conda + size: 120569073 + timestamp: 1739590931720 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025021503-release.conda noarch: python - sha256: d815f33b32f711f458bad38121565177442c179661867d78438fb17804aae90d - md5: 1558cef0a9e44c5acb7fbce7bf9c795c + sha256: 6b79b45a95cfa6f66b9030bc8aab70b674c050031ab396e726928f67453633e5 + md5: 33ad7e785ca2ab0805382b13fa60c26c depends: - - max-core ==25.2.0.dev2025021305 release + - max-core ==25.2.0.dev2025021503 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1426,14 +1426,14 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 121952822 - timestamp: 1739423790392 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025021305-release.conda + size: 123318221 + timestamp: 1739590886007 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025021503-release.conda noarch: python - sha256: 08e38e400944c081c50ba56171996c30d62bd2d442ec609e7daf56267f00505b - md5: 1e44e9b925b424bf63a0f6f714b14a49 + sha256: b28432855d2dc85ae4c18be4c4f8f5a54668a6ba7fa6f9f6260d6e68badef8f0 + md5: ffb6bc1434b8a93bea73ce0c1d3b6870 depends: - - max-core ==25.2.0.dev2025021305 release + - max-core ==25.2.0.dev2025021503 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1471,12 +1471,12 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 108859238 - timestamp: 1739425396471 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021305-release.conda + size: 109985956 + timestamp: 1739592937028 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021503-release.conda noarch: python - sha256: 90fe9cd59bc694690f5a018f1b78a6c3dda2e42a57bd7570b5b7b336e5841ec3 - md5: 2039853d26c773ce8fecf08626ca7d05 + sha256: 5af761f8b1876d6fda1fe3175a5cac1737d5ba63ecfffd581287b9f44f43c74c + md5: cebe4753e9d3e7732f0cd96a8a3c6190 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -1487,20 +1487,20 @@ packages: - typing_extensions >=v4.12.2 - python license: MIT - size: 130858 - timestamp: 1739423790392 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021305-release.conda + size: 130842 + timestamp: 1739590931720 +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021503-release.conda noarch: python - sha256: 577a281a7b22e97ddb4a9bf8db40293c627fb5e4a07505de67e8eadea5e64d52 - md5: f3e2af71e3f2641375d1814609a358c7 + sha256: 435130e6150af35400b0a562fb3f13509b60d94f706e51dba135f7751e1f2fb4 + md5: 6846f728066c6a27f1b330986b03f22c depends: - - max-core ==25.2.0.dev2025021305 release + - max-core ==25.2.0.dev2025021503 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22993 - timestamp: 1739423790392 + size: 22979 + timestamp: 1739590931720 - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda sha256: 1895f47b7d68581a6facde5cb13ab8c2764c2e53a76bd746f8f98910dc4e08fe md5: 29097e7ea634a45cc5386b95cac6568f @@ -1663,10 +1663,9 @@ packages: license_family: MIT size: 20448 timestamp: 1733232756001 -- conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.8-h9e4cc4f_1_cpython.conda - build_number: 1 - sha256: 3f0e0518c992d8ccfe62b189125721309836fe48a010dc424240583e157f9ff0 - md5: 7fd2fd79436d9b473812f14e86746844 +- conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.9-h9e4cc4f_0_cpython.conda + sha256: 64fed5178f1e9c8ac0f572ac0ce37955f5dee7b2bcac665202bc14f1f7dd618a + md5: 5665f0079432f8848079c811cdb537d5 depends: - __glibc >=2.17,<3.0.a0 - bzip2 >=1.0.8,<2.0a0 @@ -1674,14 +1673,14 @@ packages: - libexpat >=2.6.4,<3.0a0 - libffi >=3.4,<4.0a0 - libgcc >=13 - - liblzma >=5.6.3,<6.0a0 + - liblzma >=5.6.4,<6.0a0 - libnsl >=2.0.1,<2.1.0a0 - - libsqlite >=3.47.0,<4.0a0 + - libsqlite >=3.48.0,<4.0a0 - libuuid >=2.38.1,<3.0a0 - libxcrypt >=4.4.36 - libzlib >=1.3.1,<2.0a0 - ncurses >=6.5,<7.0a0 - - openssl >=3.4.0,<4.0a0 + - openssl >=3.4.1,<4.0a0 - readline >=8.2,<9.0a0 - tk >=8.6.13,<8.7.0a0 - tzdata @@ -1690,26 +1689,25 @@ packages: arch: x86_64 platform: linux license: Python-2.0 - size: 31565686 - timestamp: 1733410597922 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.8-h1683364_1_cpython.conda - build_number: 1 - sha256: 85573582d5b0f79923fed0a8365d3d74d21eee9f0a5fa1b9345f191e006363ab - md5: 09ec612ea05370989eaa3d81abf0f369 + size: 31581682 + timestamp: 1739521496324 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.9-h1683364_0_cpython.conda + sha256: 0366f38918bceda8ff5917d7bbe1cea2bc8b6c74e7245eb0e4b0d3c2d37f76cf + md5: 2e7ad70254455e0508adabff10218512 depends: - bzip2 >=1.0.8,<2.0a0 - ld_impl_linux-aarch64 >=2.36.1 - libexpat >=2.6.4,<3.0a0 - libffi >=3.4,<4.0a0 - libgcc >=13 - - liblzma >=5.6.3,<6.0a0 + - liblzma >=5.6.4,<6.0a0 - libnsl >=2.0.1,<2.1.0a0 - - libsqlite >=3.47.0,<4.0a0 + - libsqlite >=3.48.0,<4.0a0 - libuuid >=2.38.1,<3.0a0 - libxcrypt >=4.4.36 - libzlib >=1.3.1,<2.0a0 - ncurses >=6.5,<7.0a0 - - openssl >=3.4.0,<4.0a0 + - openssl >=3.4.1,<4.0a0 - readline >=8.2,<9.0a0 - tk >=8.6.13,<8.7.0a0 - tzdata @@ -1718,22 +1716,21 @@ packages: arch: aarch64 platform: linux license: Python-2.0 - size: 13760816 - timestamp: 1733407890896 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.8-hc22306f_1_cpython.conda - build_number: 1 - sha256: 7586a711b1b08a9df8864e26efdc06980bdfb0e18d5ac4651d0fee30a8d3e3a0 - md5: 54ca5b5d92ef3a3ba61e195ee882a518 + size: 13804161 + timestamp: 1739519531794 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.9-hc22306f_0_cpython.conda + sha256: cbf81a78d3ca6e663e827523e6ddbc28369cac488da047a28f83875eb52fe5f6 + md5: 1d105a6c46a753e3c0bab54a1ad24063 depends: - __osx >=11.0 - bzip2 >=1.0.8,<2.0a0 - libexpat >=2.6.4,<3.0a0 - libffi >=3.4,<4.0a0 - - liblzma >=5.6.3,<6.0a0 - - libsqlite >=3.47.0,<4.0a0 + - liblzma >=5.6.4,<6.0a0 + - libsqlite >=3.48.0,<4.0a0 - libzlib >=1.3.1,<2.0a0 - ncurses >=6.5,<7.0a0 - - openssl >=3.4.0,<4.0a0 + - openssl >=3.4.1,<4.0a0 - readline >=8.2,<9.0a0 - tk >=8.6.13,<8.7.0a0 - tzdata @@ -1742,8 +1739,8 @@ packages: arch: arm64 platform: osx license: Python-2.0 - size: 12998673 - timestamp: 1733408900971 + size: 12947786 + timestamp: 1739520092196 - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda sha256: a50052536f1ef8516ed11a844f9413661829aa083304dc624c5925298d078d79 md5: 5ba79d7c71f03c678c8ead841f347d6e From fee4887b4aee9e5ad15593364cdbdc70353a8641 Mon Sep 17 00:00:00 2001 From: modularbot Date: Sat, 15 Feb 2025 06:58:10 +0000 Subject: [PATCH 397/509] Update lockfiles to point to latest nightly version: 25.2.0.dev2025021505 --- examples/life/magic.lock | 142 +++++++++++++++++----------------- examples/magic.lock | 142 +++++++++++++++++----------------- examples/operators/magic.lock | 142 +++++++++++++++++----------------- examples/testing/magic.lock | 142 +++++++++++++++++----------------- magic.lock | 142 +++++++++++++++++----------------- 5 files changed, 355 insertions(+), 355 deletions(-) diff --git a/examples/life/magic.lock b/examples/life/magic.lock index 11fb52f64d..894a2c732f 100644 --- a/examples/life/magic.lock +++ b/examples/life/magic.lock @@ -94,11 +94,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.10.0-h5888daf_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021503-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025021503-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025021503-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021503-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021503-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021505-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025021505-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025021505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021505-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/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda @@ -235,11 +235,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.10.0-h5ad3122_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021503-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025021503-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025021503-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021503-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021503-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021505-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025021505-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025021505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021505-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/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-ha32ae93_3.conda @@ -354,11 +354,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.5.0-h2471fea_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021503-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025021503-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025021503-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021503-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021503-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021505-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025021505-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025021505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021505-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/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda @@ -3194,48 +3194,48 @@ packages: license_family: BSD size: 184953 timestamp: 1733740984533 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021503-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021505-release.conda noarch: python - sha256: 268d6578bc34eea95e64a182ca3c835098ddf2d8aa9591195ec399271b9250cb - md5: d0f4b0001906d103c2a94fb76d7106aa + sha256: c2f8ebc34331c5ffa786e720213a53323b705ac43df1ac239b63303b9b9038e1 + md5: 7c219a8f7d72e788f72950fb67eec55d depends: - - max-core ==25.2.0.dev2025021503 release - - max-python ==25.2.0.dev2025021503 release - - mojo-jupyter ==25.2.0.dev2025021503 release - - mblack ==25.2.0.dev2025021503 release + - max-core ==25.2.0.dev2025021505 release + - max-python ==25.2.0.dev2025021505 release + - mojo-jupyter ==25.2.0.dev2025021505 release + - mblack ==25.2.0.dev2025021505 release license: LicenseRef-Modular-Proprietary - size: 9899 - timestamp: 1739590931720 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025021503-release.conda - sha256: c8354f8755b54aa888320e400c5d4ff1f52c6c9e01a40088e028c02122a306e7 - md5: 10cb0acdb7bcbbd1f161cbde8d9fe18e + size: 9911 + timestamp: 1739596607111 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025021505-release.conda + sha256: 7e9818bee84f228392f5582be6a71d8a0d2b74ae0a6966fad16756c108e805d5 + md5: 7c47e1568f8fdb47589c5f2f77e749d5 depends: - - mblack ==25.2.0.dev2025021503 release + - mblack ==25.2.0.dev2025021505 release license: LicenseRef-Modular-Proprietary - size: 243500591 - timestamp: 1739590931720 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025021503-release.conda - sha256: 9284c7168b2491bff32fd1c5bc64a4a365a10e7ee847ed987c7e319daf73d3ef - md5: 42b007179ea7c12b3d6ed07ab41c5e05 + size: 243502366 + timestamp: 1739596607111 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025021505-release.conda + sha256: 2519eb845d8b43d5b989b235993187515916c8c661a1f693bf05a6e1f8a8d8c4 + md5: 235427d2f04f300bfb8d65de459c6828 depends: - - mblack ==25.2.0.dev2025021503 release + - mblack ==25.2.0.dev2025021505 release license: LicenseRef-Modular-Proprietary - size: 246180456 - timestamp: 1739590886007 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025021503-release.conda - sha256: f59f7397a0bba89a24ac9663dcad7f8803aac869deae52397527727baa774136 - md5: 52ce95dc9fd4ae50890a66872f20a7e8 + size: 246177895 + timestamp: 1739596609585 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025021505-release.conda + sha256: 08807af59d1f62c0131042299639fba44f5c46cbafa439e738836599e958788c + md5: 1cc7d1d678aad0079de6dd599698b3e8 depends: - - mblack ==25.2.0.dev2025021503 release + - mblack ==25.2.0.dev2025021505 release license: LicenseRef-Modular-Proprietary - size: 211873084 - timestamp: 1739592937028 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025021503-release.conda + size: 211873798 + timestamp: 1739598748080 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025021505-release.conda noarch: python - sha256: 3cdb4e0ef18a3c8e704f7c1b758f697dcf7ae276035f366a4e975f8325b60c6a - md5: 0c2f7e732724211d6345e59cfd6ac16d + sha256: da5451a793d8f7bf0e49e4fa5cdb8b961fa7861936f5ceab76b73635a1be18e0 + md5: 867649f230d5651e3358e4cf3839461e depends: - - max-core ==25.2.0.dev2025021503 release + - max-core ==25.2.0.dev2025021505 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -3273,14 +3273,14 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 120569073 - timestamp: 1739590931720 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025021503-release.conda + size: 120572622 + timestamp: 1739596607111 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025021505-release.conda noarch: python - sha256: 6b79b45a95cfa6f66b9030bc8aab70b674c050031ab396e726928f67453633e5 - md5: 33ad7e785ca2ab0805382b13fa60c26c + sha256: 5e8148b3cf1499fdade4d3230e96da25d4d4c2d2ed3fcb333b9dec83e1d6960c + md5: 7e11eddecf6b2cb6d349333d2cbacc7e depends: - - max-core ==25.2.0.dev2025021503 release + - max-core ==25.2.0.dev2025021505 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -3318,14 +3318,14 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 123318221 - timestamp: 1739590886007 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025021503-release.conda + size: 123316509 + timestamp: 1739596609585 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025021505-release.conda noarch: python - sha256: b28432855d2dc85ae4c18be4c4f8f5a54668a6ba7fa6f9f6260d6e68badef8f0 - md5: ffb6bc1434b8a93bea73ce0c1d3b6870 + sha256: a0c5ab16fad0bdc62e273eb9fc0fef8b8f766f3e958b646ed03a46ea686c616b + md5: ca8950d7b84e3c33233c2476a03eb764 depends: - - max-core ==25.2.0.dev2025021503 release + - max-core ==25.2.0.dev2025021505 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -3363,12 +3363,12 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 109985956 - timestamp: 1739592937028 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021503-release.conda + size: 109988693 + timestamp: 1739598748080 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021505-release.conda noarch: python - sha256: 5af761f8b1876d6fda1fe3175a5cac1737d5ba63ecfffd581287b9f44f43c74c - md5: cebe4753e9d3e7732f0cd96a8a3c6190 + sha256: ccf0d2a2f64b87ea29820ea9ee273812423d7b37a1037228d1f6f2004ca2113a + md5: ca94b2ef2abbb38599f8fd97ee9a622e depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -3379,20 +3379,20 @@ packages: - typing_extensions >=v4.12.2 - python license: MIT - size: 130842 - timestamp: 1739590931720 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021503-release.conda + size: 130850 + timestamp: 1739596607110 +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021505-release.conda noarch: python - sha256: 435130e6150af35400b0a562fb3f13509b60d94f706e51dba135f7751e1f2fb4 - md5: 6846f728066c6a27f1b330986b03f22c + sha256: 5becaf0cee459afff75d739bdc2ea4a95f96dce278f5fe09fb26dc4b35534f25 + md5: 392f051b929c168014025bb2dfc89fcc depends: - - max-core ==25.2.0.dev2025021503 release + - max-core ==25.2.0.dev2025021505 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22979 - timestamp: 1739590931720 + size: 22980 + timestamp: 1739596607111 - conda: https://conda.anaconda.org/conda-forge/linux-64/mpg123-1.32.9-hc50e24c_0.conda sha256: 39c4700fb3fbe403a77d8cc27352fa72ba744db487559d5d44bf8411bb4ea200 md5: c7f302fd11eeb0987a6a5e1f3aed6a21 diff --git a/examples/magic.lock b/examples/magic.lock index 95c46e2bf3..49a8dd50dd 100644 --- a/examples/magic.lock +++ b/examples/magic.lock @@ -42,11 +42,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021503-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025021503-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025021503-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021503-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021503-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021505-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025021505-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025021505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021505-release.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-h2d0b736_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py311h64a7726_0.conda @@ -107,11 +107,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021503-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025021503-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025021503-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021503-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021503-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021505-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025021505-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025021505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021505-release.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-ha32ae93_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py311h69ead2a_0.conda @@ -163,11 +163,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.48.0-h3f77e49_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021503-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025021503-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025021503-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021503-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021503-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021505-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025021505-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025021505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021505-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py311h7125741_0.conda @@ -1290,48 +1290,48 @@ packages: license_family: APACHE size: 280830 timestamp: 1736986295869 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021503-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021505-release.conda noarch: python - sha256: 268d6578bc34eea95e64a182ca3c835098ddf2d8aa9591195ec399271b9250cb - md5: d0f4b0001906d103c2a94fb76d7106aa + sha256: c2f8ebc34331c5ffa786e720213a53323b705ac43df1ac239b63303b9b9038e1 + md5: 7c219a8f7d72e788f72950fb67eec55d depends: - - max-core ==25.2.0.dev2025021503 release - - max-python ==25.2.0.dev2025021503 release - - mojo-jupyter ==25.2.0.dev2025021503 release - - mblack ==25.2.0.dev2025021503 release + - max-core ==25.2.0.dev2025021505 release + - max-python ==25.2.0.dev2025021505 release + - mojo-jupyter ==25.2.0.dev2025021505 release + - mblack ==25.2.0.dev2025021505 release license: LicenseRef-Modular-Proprietary - size: 9899 - timestamp: 1739590931720 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025021503-release.conda - sha256: c8354f8755b54aa888320e400c5d4ff1f52c6c9e01a40088e028c02122a306e7 - md5: 10cb0acdb7bcbbd1f161cbde8d9fe18e + size: 9911 + timestamp: 1739596607111 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025021505-release.conda + sha256: 7e9818bee84f228392f5582be6a71d8a0d2b74ae0a6966fad16756c108e805d5 + md5: 7c47e1568f8fdb47589c5f2f77e749d5 depends: - - mblack ==25.2.0.dev2025021503 release + - mblack ==25.2.0.dev2025021505 release license: LicenseRef-Modular-Proprietary - size: 243500591 - timestamp: 1739590931720 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025021503-release.conda - sha256: 9284c7168b2491bff32fd1c5bc64a4a365a10e7ee847ed987c7e319daf73d3ef - md5: 42b007179ea7c12b3d6ed07ab41c5e05 + size: 243502366 + timestamp: 1739596607111 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025021505-release.conda + sha256: 2519eb845d8b43d5b989b235993187515916c8c661a1f693bf05a6e1f8a8d8c4 + md5: 235427d2f04f300bfb8d65de459c6828 depends: - - mblack ==25.2.0.dev2025021503 release + - mblack ==25.2.0.dev2025021505 release license: LicenseRef-Modular-Proprietary - size: 246180456 - timestamp: 1739590886007 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025021503-release.conda - sha256: f59f7397a0bba89a24ac9663dcad7f8803aac869deae52397527727baa774136 - md5: 52ce95dc9fd4ae50890a66872f20a7e8 + size: 246177895 + timestamp: 1739596609585 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025021505-release.conda + sha256: 08807af59d1f62c0131042299639fba44f5c46cbafa439e738836599e958788c + md5: 1cc7d1d678aad0079de6dd599698b3e8 depends: - - mblack ==25.2.0.dev2025021503 release + - mblack ==25.2.0.dev2025021505 release license: LicenseRef-Modular-Proprietary - size: 211873084 - timestamp: 1739592937028 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025021503-release.conda + size: 211873798 + timestamp: 1739598748080 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025021505-release.conda noarch: python - sha256: 3cdb4e0ef18a3c8e704f7c1b758f697dcf7ae276035f366a4e975f8325b60c6a - md5: 0c2f7e732724211d6345e59cfd6ac16d + sha256: da5451a793d8f7bf0e49e4fa5cdb8b961fa7861936f5ceab76b73635a1be18e0 + md5: 867649f230d5651e3358e4cf3839461e depends: - - max-core ==25.2.0.dev2025021503 release + - max-core ==25.2.0.dev2025021505 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1369,14 +1369,14 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 120569073 - timestamp: 1739590931720 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025021503-release.conda + size: 120572622 + timestamp: 1739596607111 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025021505-release.conda noarch: python - sha256: 6b79b45a95cfa6f66b9030bc8aab70b674c050031ab396e726928f67453633e5 - md5: 33ad7e785ca2ab0805382b13fa60c26c + sha256: 5e8148b3cf1499fdade4d3230e96da25d4d4c2d2ed3fcb333b9dec83e1d6960c + md5: 7e11eddecf6b2cb6d349333d2cbacc7e depends: - - max-core ==25.2.0.dev2025021503 release + - max-core ==25.2.0.dev2025021505 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1414,14 +1414,14 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 123318221 - timestamp: 1739590886007 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025021503-release.conda + size: 123316509 + timestamp: 1739596609585 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025021505-release.conda noarch: python - sha256: b28432855d2dc85ae4c18be4c4f8f5a54668a6ba7fa6f9f6260d6e68badef8f0 - md5: ffb6bc1434b8a93bea73ce0c1d3b6870 + sha256: a0c5ab16fad0bdc62e273eb9fc0fef8b8f766f3e958b646ed03a46ea686c616b + md5: ca8950d7b84e3c33233c2476a03eb764 depends: - - max-core ==25.2.0.dev2025021503 release + - max-core ==25.2.0.dev2025021505 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1459,12 +1459,12 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 109985956 - timestamp: 1739592937028 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021503-release.conda + size: 109988693 + timestamp: 1739598748080 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021505-release.conda noarch: python - sha256: 5af761f8b1876d6fda1fe3175a5cac1737d5ba63ecfffd581287b9f44f43c74c - md5: cebe4753e9d3e7732f0cd96a8a3c6190 + sha256: ccf0d2a2f64b87ea29820ea9ee273812423d7b37a1037228d1f6f2004ca2113a + md5: ca94b2ef2abbb38599f8fd97ee9a622e depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -1475,20 +1475,20 @@ packages: - typing_extensions >=v4.12.2 - python license: MIT - size: 130842 - timestamp: 1739590931720 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021503-release.conda + size: 130850 + timestamp: 1739596607110 +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021505-release.conda noarch: python - sha256: 435130e6150af35400b0a562fb3f13509b60d94f706e51dba135f7751e1f2fb4 - md5: 6846f728066c6a27f1b330986b03f22c + sha256: 5becaf0cee459afff75d739bdc2ea4a95f96dce278f5fe09fb26dc4b35534f25 + md5: 392f051b929c168014025bb2dfc89fcc depends: - - max-core ==25.2.0.dev2025021503 release + - max-core ==25.2.0.dev2025021505 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22979 - timestamp: 1739590931720 + size: 22980 + timestamp: 1739596607111 - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda sha256: 1895f47b7d68581a6facde5cb13ab8c2764c2e53a76bd746f8f98910dc4e08fe md5: 29097e7ea634a45cc5386b95cac6568f diff --git a/examples/operators/magic.lock b/examples/operators/magic.lock index b9c6867b16..49b189f984 100644 --- a/examples/operators/magic.lock +++ b/examples/operators/magic.lock @@ -45,12 +45,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.5-h0d44e9d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/llvm-openmp-19.1.7-h024ca30_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021503-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025021503-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025021503-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021503-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021505-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025021505-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025021505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021505-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-2024.2.2-ha957f24_16.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021503-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021505-release.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-h2d0b736_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda @@ -112,11 +112,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021503-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025021503-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025021503-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021503-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021503-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021505-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025021505-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025021505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021505-release.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-ha32ae93_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda @@ -168,11 +168,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.48.0-h3f77e49_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021503-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025021503-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025021503-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021503-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021503-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021505-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025021505-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025021505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021505-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda @@ -1336,48 +1336,48 @@ packages: license_family: APACHE size: 280830 timestamp: 1736986295869 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021503-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021505-release.conda noarch: python - sha256: 268d6578bc34eea95e64a182ca3c835098ddf2d8aa9591195ec399271b9250cb - md5: d0f4b0001906d103c2a94fb76d7106aa + sha256: c2f8ebc34331c5ffa786e720213a53323b705ac43df1ac239b63303b9b9038e1 + md5: 7c219a8f7d72e788f72950fb67eec55d depends: - - max-core ==25.2.0.dev2025021503 release - - max-python ==25.2.0.dev2025021503 release - - mojo-jupyter ==25.2.0.dev2025021503 release - - mblack ==25.2.0.dev2025021503 release + - max-core ==25.2.0.dev2025021505 release + - max-python ==25.2.0.dev2025021505 release + - mojo-jupyter ==25.2.0.dev2025021505 release + - mblack ==25.2.0.dev2025021505 release license: LicenseRef-Modular-Proprietary - size: 9899 - timestamp: 1739590931720 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025021503-release.conda - sha256: c8354f8755b54aa888320e400c5d4ff1f52c6c9e01a40088e028c02122a306e7 - md5: 10cb0acdb7bcbbd1f161cbde8d9fe18e + size: 9911 + timestamp: 1739596607111 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025021505-release.conda + sha256: 7e9818bee84f228392f5582be6a71d8a0d2b74ae0a6966fad16756c108e805d5 + md5: 7c47e1568f8fdb47589c5f2f77e749d5 depends: - - mblack ==25.2.0.dev2025021503 release + - mblack ==25.2.0.dev2025021505 release license: LicenseRef-Modular-Proprietary - size: 243500591 - timestamp: 1739590931720 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025021503-release.conda - sha256: 9284c7168b2491bff32fd1c5bc64a4a365a10e7ee847ed987c7e319daf73d3ef - md5: 42b007179ea7c12b3d6ed07ab41c5e05 + size: 243502366 + timestamp: 1739596607111 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025021505-release.conda + sha256: 2519eb845d8b43d5b989b235993187515916c8c661a1f693bf05a6e1f8a8d8c4 + md5: 235427d2f04f300bfb8d65de459c6828 depends: - - mblack ==25.2.0.dev2025021503 release + - mblack ==25.2.0.dev2025021505 release license: LicenseRef-Modular-Proprietary - size: 246180456 - timestamp: 1739590886007 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025021503-release.conda - sha256: f59f7397a0bba89a24ac9663dcad7f8803aac869deae52397527727baa774136 - md5: 52ce95dc9fd4ae50890a66872f20a7e8 + size: 246177895 + timestamp: 1739596609585 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025021505-release.conda + sha256: 08807af59d1f62c0131042299639fba44f5c46cbafa439e738836599e958788c + md5: 1cc7d1d678aad0079de6dd599698b3e8 depends: - - mblack ==25.2.0.dev2025021503 release + - mblack ==25.2.0.dev2025021505 release license: LicenseRef-Modular-Proprietary - size: 211873084 - timestamp: 1739592937028 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025021503-release.conda + size: 211873798 + timestamp: 1739598748080 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025021505-release.conda noarch: python - sha256: 3cdb4e0ef18a3c8e704f7c1b758f697dcf7ae276035f366a4e975f8325b60c6a - md5: 0c2f7e732724211d6345e59cfd6ac16d + sha256: da5451a793d8f7bf0e49e4fa5cdb8b961fa7861936f5ceab76b73635a1be18e0 + md5: 867649f230d5651e3358e4cf3839461e depends: - - max-core ==25.2.0.dev2025021503 release + - max-core ==25.2.0.dev2025021505 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1415,14 +1415,14 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 120569073 - timestamp: 1739590931720 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025021503-release.conda + size: 120572622 + timestamp: 1739596607111 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025021505-release.conda noarch: python - sha256: 6b79b45a95cfa6f66b9030bc8aab70b674c050031ab396e726928f67453633e5 - md5: 33ad7e785ca2ab0805382b13fa60c26c + sha256: 5e8148b3cf1499fdade4d3230e96da25d4d4c2d2ed3fcb333b9dec83e1d6960c + md5: 7e11eddecf6b2cb6d349333d2cbacc7e depends: - - max-core ==25.2.0.dev2025021503 release + - max-core ==25.2.0.dev2025021505 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1460,14 +1460,14 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 123318221 - timestamp: 1739590886007 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025021503-release.conda + size: 123316509 + timestamp: 1739596609585 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025021505-release.conda noarch: python - sha256: b28432855d2dc85ae4c18be4c4f8f5a54668a6ba7fa6f9f6260d6e68badef8f0 - md5: ffb6bc1434b8a93bea73ce0c1d3b6870 + sha256: a0c5ab16fad0bdc62e273eb9fc0fef8b8f766f3e958b646ed03a46ea686c616b + md5: ca8950d7b84e3c33233c2476a03eb764 depends: - - max-core ==25.2.0.dev2025021503 release + - max-core ==25.2.0.dev2025021505 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1505,12 +1505,12 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 109985956 - timestamp: 1739592937028 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021503-release.conda + size: 109988693 + timestamp: 1739598748080 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021505-release.conda noarch: python - sha256: 5af761f8b1876d6fda1fe3175a5cac1737d5ba63ecfffd581287b9f44f43c74c - md5: cebe4753e9d3e7732f0cd96a8a3c6190 + sha256: ccf0d2a2f64b87ea29820ea9ee273812423d7b37a1037228d1f6f2004ca2113a + md5: ca94b2ef2abbb38599f8fd97ee9a622e depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -1521,8 +1521,8 @@ packages: - typing_extensions >=v4.12.2 - python license: MIT - size: 130842 - timestamp: 1739590931720 + size: 130850 + timestamp: 1739596607110 - conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-2024.2.2-ha957f24_16.conda sha256: 77906b0acead8f86b489da46f53916e624897338770dbf70b04b8f673c9273c1 md5: 1459379c79dda834673426504d52b319 @@ -1537,18 +1537,18 @@ packages: license_family: Proprietary size: 124718448 timestamp: 1730231808335 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021503-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021505-release.conda noarch: python - sha256: 435130e6150af35400b0a562fb3f13509b60d94f706e51dba135f7751e1f2fb4 - md5: 6846f728066c6a27f1b330986b03f22c + sha256: 5becaf0cee459afff75d739bdc2ea4a95f96dce278f5fe09fb26dc4b35534f25 + md5: 392f051b929c168014025bb2dfc89fcc depends: - - max-core ==25.2.0.dev2025021503 release + - max-core ==25.2.0.dev2025021505 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22979 - timestamp: 1739590931720 + size: 22980 + timestamp: 1739596607111 - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda sha256: 1895f47b7d68581a6facde5cb13ab8c2764c2e53a76bd746f8f98910dc4e08fe md5: 29097e7ea634a45cc5386b95cac6568f diff --git a/examples/testing/magic.lock b/examples/testing/magic.lock index b9c6867b16..49b189f984 100644 --- a/examples/testing/magic.lock +++ b/examples/testing/magic.lock @@ -45,12 +45,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.5-h0d44e9d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/llvm-openmp-19.1.7-h024ca30_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021503-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025021503-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025021503-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021503-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021505-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025021505-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025021505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021505-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-2024.2.2-ha957f24_16.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021503-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021505-release.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-h2d0b736_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda @@ -112,11 +112,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021503-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025021503-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025021503-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021503-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021503-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021505-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025021505-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025021505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021505-release.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-ha32ae93_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda @@ -168,11 +168,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.48.0-h3f77e49_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021503-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025021503-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025021503-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021503-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021503-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021505-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025021505-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025021505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021505-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda @@ -1336,48 +1336,48 @@ packages: license_family: APACHE size: 280830 timestamp: 1736986295869 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021503-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021505-release.conda noarch: python - sha256: 268d6578bc34eea95e64a182ca3c835098ddf2d8aa9591195ec399271b9250cb - md5: d0f4b0001906d103c2a94fb76d7106aa + sha256: c2f8ebc34331c5ffa786e720213a53323b705ac43df1ac239b63303b9b9038e1 + md5: 7c219a8f7d72e788f72950fb67eec55d depends: - - max-core ==25.2.0.dev2025021503 release - - max-python ==25.2.0.dev2025021503 release - - mojo-jupyter ==25.2.0.dev2025021503 release - - mblack ==25.2.0.dev2025021503 release + - max-core ==25.2.0.dev2025021505 release + - max-python ==25.2.0.dev2025021505 release + - mojo-jupyter ==25.2.0.dev2025021505 release + - mblack ==25.2.0.dev2025021505 release license: LicenseRef-Modular-Proprietary - size: 9899 - timestamp: 1739590931720 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025021503-release.conda - sha256: c8354f8755b54aa888320e400c5d4ff1f52c6c9e01a40088e028c02122a306e7 - md5: 10cb0acdb7bcbbd1f161cbde8d9fe18e + size: 9911 + timestamp: 1739596607111 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025021505-release.conda + sha256: 7e9818bee84f228392f5582be6a71d8a0d2b74ae0a6966fad16756c108e805d5 + md5: 7c47e1568f8fdb47589c5f2f77e749d5 depends: - - mblack ==25.2.0.dev2025021503 release + - mblack ==25.2.0.dev2025021505 release license: LicenseRef-Modular-Proprietary - size: 243500591 - timestamp: 1739590931720 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025021503-release.conda - sha256: 9284c7168b2491bff32fd1c5bc64a4a365a10e7ee847ed987c7e319daf73d3ef - md5: 42b007179ea7c12b3d6ed07ab41c5e05 + size: 243502366 + timestamp: 1739596607111 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025021505-release.conda + sha256: 2519eb845d8b43d5b989b235993187515916c8c661a1f693bf05a6e1f8a8d8c4 + md5: 235427d2f04f300bfb8d65de459c6828 depends: - - mblack ==25.2.0.dev2025021503 release + - mblack ==25.2.0.dev2025021505 release license: LicenseRef-Modular-Proprietary - size: 246180456 - timestamp: 1739590886007 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025021503-release.conda - sha256: f59f7397a0bba89a24ac9663dcad7f8803aac869deae52397527727baa774136 - md5: 52ce95dc9fd4ae50890a66872f20a7e8 + size: 246177895 + timestamp: 1739596609585 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025021505-release.conda + sha256: 08807af59d1f62c0131042299639fba44f5c46cbafa439e738836599e958788c + md5: 1cc7d1d678aad0079de6dd599698b3e8 depends: - - mblack ==25.2.0.dev2025021503 release + - mblack ==25.2.0.dev2025021505 release license: LicenseRef-Modular-Proprietary - size: 211873084 - timestamp: 1739592937028 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025021503-release.conda + size: 211873798 + timestamp: 1739598748080 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025021505-release.conda noarch: python - sha256: 3cdb4e0ef18a3c8e704f7c1b758f697dcf7ae276035f366a4e975f8325b60c6a - md5: 0c2f7e732724211d6345e59cfd6ac16d + sha256: da5451a793d8f7bf0e49e4fa5cdb8b961fa7861936f5ceab76b73635a1be18e0 + md5: 867649f230d5651e3358e4cf3839461e depends: - - max-core ==25.2.0.dev2025021503 release + - max-core ==25.2.0.dev2025021505 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1415,14 +1415,14 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 120569073 - timestamp: 1739590931720 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025021503-release.conda + size: 120572622 + timestamp: 1739596607111 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025021505-release.conda noarch: python - sha256: 6b79b45a95cfa6f66b9030bc8aab70b674c050031ab396e726928f67453633e5 - md5: 33ad7e785ca2ab0805382b13fa60c26c + sha256: 5e8148b3cf1499fdade4d3230e96da25d4d4c2d2ed3fcb333b9dec83e1d6960c + md5: 7e11eddecf6b2cb6d349333d2cbacc7e depends: - - max-core ==25.2.0.dev2025021503 release + - max-core ==25.2.0.dev2025021505 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1460,14 +1460,14 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 123318221 - timestamp: 1739590886007 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025021503-release.conda + size: 123316509 + timestamp: 1739596609585 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025021505-release.conda noarch: python - sha256: b28432855d2dc85ae4c18be4c4f8f5a54668a6ba7fa6f9f6260d6e68badef8f0 - md5: ffb6bc1434b8a93bea73ce0c1d3b6870 + sha256: a0c5ab16fad0bdc62e273eb9fc0fef8b8f766f3e958b646ed03a46ea686c616b + md5: ca8950d7b84e3c33233c2476a03eb764 depends: - - max-core ==25.2.0.dev2025021503 release + - max-core ==25.2.0.dev2025021505 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1505,12 +1505,12 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 109985956 - timestamp: 1739592937028 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021503-release.conda + size: 109988693 + timestamp: 1739598748080 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021505-release.conda noarch: python - sha256: 5af761f8b1876d6fda1fe3175a5cac1737d5ba63ecfffd581287b9f44f43c74c - md5: cebe4753e9d3e7732f0cd96a8a3c6190 + sha256: ccf0d2a2f64b87ea29820ea9ee273812423d7b37a1037228d1f6f2004ca2113a + md5: ca94b2ef2abbb38599f8fd97ee9a622e depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -1521,8 +1521,8 @@ packages: - typing_extensions >=v4.12.2 - python license: MIT - size: 130842 - timestamp: 1739590931720 + size: 130850 + timestamp: 1739596607110 - conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-2024.2.2-ha957f24_16.conda sha256: 77906b0acead8f86b489da46f53916e624897338770dbf70b04b8f673c9273c1 md5: 1459379c79dda834673426504d52b319 @@ -1537,18 +1537,18 @@ packages: license_family: Proprietary size: 124718448 timestamp: 1730231808335 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021503-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021505-release.conda noarch: python - sha256: 435130e6150af35400b0a562fb3f13509b60d94f706e51dba135f7751e1f2fb4 - md5: 6846f728066c6a27f1b330986b03f22c + sha256: 5becaf0cee459afff75d739bdc2ea4a95f96dce278f5fe09fb26dc4b35534f25 + md5: 392f051b929c168014025bb2dfc89fcc depends: - - max-core ==25.2.0.dev2025021503 release + - max-core ==25.2.0.dev2025021505 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22979 - timestamp: 1739590931720 + size: 22980 + timestamp: 1739596607111 - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda sha256: 1895f47b7d68581a6facde5cb13ab8c2764c2e53a76bd746f8f98910dc4e08fe md5: 29097e7ea634a45cc5386b95cac6568f diff --git a/magic.lock b/magic.lock index 8ea316ecbb..71bfd12e98 100644 --- a/magic.lock +++ b/magic.lock @@ -43,11 +43,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/lit-19.1.7-pyhd8ed1ab_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021503-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025021503-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025021503-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021503-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021503-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021505-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025021505-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025021505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021505-release.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-h2d0b736_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda @@ -109,11 +109,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/lit-19.1.7-pyhd8ed1ab_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021503-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025021503-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025021503-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021503-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021503-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021505-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025021505-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025021505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021505-release.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-ha32ae93_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda @@ -166,11 +166,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/lit-19.1.7-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021503-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025021503-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025021503-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021503-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021503-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021505-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025021505-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025021505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021505-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda @@ -1302,48 +1302,48 @@ packages: license_family: APACHE size: 280830 timestamp: 1736986295869 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021503-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021505-release.conda noarch: python - sha256: 268d6578bc34eea95e64a182ca3c835098ddf2d8aa9591195ec399271b9250cb - md5: d0f4b0001906d103c2a94fb76d7106aa + sha256: c2f8ebc34331c5ffa786e720213a53323b705ac43df1ac239b63303b9b9038e1 + md5: 7c219a8f7d72e788f72950fb67eec55d depends: - - max-core ==25.2.0.dev2025021503 release - - max-python ==25.2.0.dev2025021503 release - - mojo-jupyter ==25.2.0.dev2025021503 release - - mblack ==25.2.0.dev2025021503 release + - max-core ==25.2.0.dev2025021505 release + - max-python ==25.2.0.dev2025021505 release + - mojo-jupyter ==25.2.0.dev2025021505 release + - mblack ==25.2.0.dev2025021505 release license: LicenseRef-Modular-Proprietary - size: 9899 - timestamp: 1739590931720 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025021503-release.conda - sha256: c8354f8755b54aa888320e400c5d4ff1f52c6c9e01a40088e028c02122a306e7 - md5: 10cb0acdb7bcbbd1f161cbde8d9fe18e + size: 9911 + timestamp: 1739596607111 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025021505-release.conda + sha256: 7e9818bee84f228392f5582be6a71d8a0d2b74ae0a6966fad16756c108e805d5 + md5: 7c47e1568f8fdb47589c5f2f77e749d5 depends: - - mblack ==25.2.0.dev2025021503 release + - mblack ==25.2.0.dev2025021505 release license: LicenseRef-Modular-Proprietary - size: 243500591 - timestamp: 1739590931720 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025021503-release.conda - sha256: 9284c7168b2491bff32fd1c5bc64a4a365a10e7ee847ed987c7e319daf73d3ef - md5: 42b007179ea7c12b3d6ed07ab41c5e05 + size: 243502366 + timestamp: 1739596607111 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025021505-release.conda + sha256: 2519eb845d8b43d5b989b235993187515916c8c661a1f693bf05a6e1f8a8d8c4 + md5: 235427d2f04f300bfb8d65de459c6828 depends: - - mblack ==25.2.0.dev2025021503 release + - mblack ==25.2.0.dev2025021505 release license: LicenseRef-Modular-Proprietary - size: 246180456 - timestamp: 1739590886007 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025021503-release.conda - sha256: f59f7397a0bba89a24ac9663dcad7f8803aac869deae52397527727baa774136 - md5: 52ce95dc9fd4ae50890a66872f20a7e8 + size: 246177895 + timestamp: 1739596609585 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025021505-release.conda + sha256: 08807af59d1f62c0131042299639fba44f5c46cbafa439e738836599e958788c + md5: 1cc7d1d678aad0079de6dd599698b3e8 depends: - - mblack ==25.2.0.dev2025021503 release + - mblack ==25.2.0.dev2025021505 release license: LicenseRef-Modular-Proprietary - size: 211873084 - timestamp: 1739592937028 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025021503-release.conda + size: 211873798 + timestamp: 1739598748080 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025021505-release.conda noarch: python - sha256: 3cdb4e0ef18a3c8e704f7c1b758f697dcf7ae276035f366a4e975f8325b60c6a - md5: 0c2f7e732724211d6345e59cfd6ac16d + sha256: da5451a793d8f7bf0e49e4fa5cdb8b961fa7861936f5ceab76b73635a1be18e0 + md5: 867649f230d5651e3358e4cf3839461e depends: - - max-core ==25.2.0.dev2025021503 release + - max-core ==25.2.0.dev2025021505 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1381,14 +1381,14 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 120569073 - timestamp: 1739590931720 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025021503-release.conda + size: 120572622 + timestamp: 1739596607111 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025021505-release.conda noarch: python - sha256: 6b79b45a95cfa6f66b9030bc8aab70b674c050031ab396e726928f67453633e5 - md5: 33ad7e785ca2ab0805382b13fa60c26c + sha256: 5e8148b3cf1499fdade4d3230e96da25d4d4c2d2ed3fcb333b9dec83e1d6960c + md5: 7e11eddecf6b2cb6d349333d2cbacc7e depends: - - max-core ==25.2.0.dev2025021503 release + - max-core ==25.2.0.dev2025021505 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1426,14 +1426,14 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 123318221 - timestamp: 1739590886007 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025021503-release.conda + size: 123316509 + timestamp: 1739596609585 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025021505-release.conda noarch: python - sha256: b28432855d2dc85ae4c18be4c4f8f5a54668a6ba7fa6f9f6260d6e68badef8f0 - md5: ffb6bc1434b8a93bea73ce0c1d3b6870 + sha256: a0c5ab16fad0bdc62e273eb9fc0fef8b8f766f3e958b646ed03a46ea686c616b + md5: ca8950d7b84e3c33233c2476a03eb764 depends: - - max-core ==25.2.0.dev2025021503 release + - max-core ==25.2.0.dev2025021505 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1471,12 +1471,12 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 109985956 - timestamp: 1739592937028 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021503-release.conda + size: 109988693 + timestamp: 1739598748080 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021505-release.conda noarch: python - sha256: 5af761f8b1876d6fda1fe3175a5cac1737d5ba63ecfffd581287b9f44f43c74c - md5: cebe4753e9d3e7732f0cd96a8a3c6190 + sha256: ccf0d2a2f64b87ea29820ea9ee273812423d7b37a1037228d1f6f2004ca2113a + md5: ca94b2ef2abbb38599f8fd97ee9a622e depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -1487,20 +1487,20 @@ packages: - typing_extensions >=v4.12.2 - python license: MIT - size: 130842 - timestamp: 1739590931720 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021503-release.conda + size: 130850 + timestamp: 1739596607110 +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021505-release.conda noarch: python - sha256: 435130e6150af35400b0a562fb3f13509b60d94f706e51dba135f7751e1f2fb4 - md5: 6846f728066c6a27f1b330986b03f22c + sha256: 5becaf0cee459afff75d739bdc2ea4a95f96dce278f5fe09fb26dc4b35534f25 + md5: 392f051b929c168014025bb2dfc89fcc depends: - - max-core ==25.2.0.dev2025021503 release + - max-core ==25.2.0.dev2025021505 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22979 - timestamp: 1739590931720 + size: 22980 + timestamp: 1739596607111 - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda sha256: 1895f47b7d68581a6facde5cb13ab8c2764c2e53a76bd746f8f98910dc4e08fe md5: 29097e7ea634a45cc5386b95cac6568f From 3c78c296b497705db9fc765c6cd1ecddc91efdda Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Sat, 15 Feb 2025 10:30:50 -0800 Subject: [PATCH 398/509] [mojo-stdlib] Expand `@always_inline("builtin")` coverage to a few more things. This expands compiler and stdlib support to cover a few more important cases. MODULAR_ORIG_COMMIT_REV_ID: 436c3e08bfd30ebbcba3bdd90e62853265b3d253 --- stdlib/src/builtin/bool.mojo | 4 ++-- stdlib/src/builtin/none.mojo | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/stdlib/src/builtin/bool.mojo b/stdlib/src/builtin/bool.mojo index 5682f54fc1..1fc5852fcc 100644 --- a/stdlib/src/builtin/bool.mojo +++ b/stdlib/src/builtin/bool.mojo @@ -116,7 +116,7 @@ struct Bool( var value: __mlir_type.i1 """The underlying storage of the boolean value.""" - @always_inline("nodebug") + @always_inline("builtin") fn __init__(out self): """Construct a default, `False` Bool.""" self = False @@ -131,7 +131,7 @@ struct Bool( return self @doc_private - @always_inline("nodebug") + @always_inline("builtin") @implicit fn __init__(out self, value: __mlir_type.i1): """Construct a Bool value given a __mlir_type.i1 value. diff --git a/stdlib/src/builtin/none.mojo b/stdlib/src/builtin/none.mojo index 324a4fd425..2fbe5daab5 100644 --- a/stdlib/src/builtin/none.mojo +++ b/stdlib/src/builtin/none.mojo @@ -32,12 +32,12 @@ struct NoneType( var _value: Self._mlir_type - @always_inline + @always_inline("builtin") fn __init__(out self): """Construct an instance of the `None` type.""" self._value = None - @always_inline + @always_inline("builtin") @implicit fn __init__(out self, value: Self._mlir_type): """Construct an instance of the `None` type. From cf4bde8c80485b9f1ea13a447bed8cf9d792315b Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Sat, 15 Feb 2025 11:55:53 -0800 Subject: [PATCH 399/509] [mojo-stdlib] Enhance `@always_inline("builtin")` to support parameters, adopt more This teaches the compiler to support parameterized functions correctly, allowing us to adopt it into `OptionalReg` and `Origin`. MODULAR_ORIG_COMMIT_REV_ID: ed76e2294a3614add45ceb0f41b7797337685533 --- stdlib/src/builtin/type_aliases.mojo | 2 +- stdlib/src/collections/optional.mojo | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/stdlib/src/builtin/type_aliases.mojo b/stdlib/src/builtin/type_aliases.mojo index 758b459304..b24a8a06ce 100644 --- a/stdlib/src/builtin/type_aliases.mojo +++ b/stdlib/src/builtin/type_aliases.mojo @@ -96,7 +96,7 @@ struct Origin[is_mutable: Bool]: # `__origin_of(..)` can implicilty convert to `Origin` in use cases like: # Span[Byte, __origin_of(self)] @implicit - @always_inline("nodebug") + @always_inline("builtin") fn __init__(out self, mlir_origin: Self._mlir_type): """Initialize an Origin from a raw MLIR `!lit.origin` value. diff --git a/stdlib/src/collections/optional.mojo b/stdlib/src/collections/optional.mojo index 48e35c788b..3b457a94dd 100644 --- a/stdlib/src/collections/optional.mojo +++ b/stdlib/src/collections/optional.mojo @@ -455,10 +455,12 @@ struct OptionalReg[T: AnyTrivialRegType](Boolable): # Life cycle methods # ===-------------------------------------------------------------------===# + @always_inline("builtin") fn __init__(out self): """Create an optional with a value of None.""" self = Self(None) + @always_inline("builtin") @implicit fn __init__(out self, value: T): """Create an optional with a value. @@ -474,6 +476,7 @@ struct OptionalReg[T: AnyTrivialRegType](Boolable): # This initializer should not be necessary, we should need # only the initilaizer from a `NoneType`. @doc_private + @always_inline("builtin") @implicit fn __init__(out self, value: NoneType._mlir_type): """Construct an empty Optional. @@ -483,6 +486,7 @@ struct OptionalReg[T: AnyTrivialRegType](Boolable): """ self = Self(value=NoneType(value)) + @always_inline("builtin") @implicit fn __init__(out self, value: NoneType): """Create an optional without a value from a None literal. From 3f1cc201aede1940d5af55a2e0ff83197c4233b6 Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Sat, 15 Feb 2025 15:10:25 -0800 Subject: [PATCH 400/509] [mojo-lang] Upgrade `Int` more, remove `tryOriginInitFold` hack. This adopts `always_inline("builtin")` in a few more `Int` methods, and removes the special parser hack for `Origin.__init__` now that it is handled by a more general framework. MODULAR_ORIG_COMMIT_REV_ID: d5c9c184b3ae6fe50b7763cf3d030eebdb1d5fb4 --- stdlib/src/builtin/int.mojo | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/stdlib/src/builtin/int.mojo b/stdlib/src/builtin/int.mojo index e36484b31e..340455024e 100644 --- a/stdlib/src/builtin/int.mojo +++ b/stdlib/src/builtin/int.mojo @@ -387,7 +387,7 @@ struct Int( """ self = value.__int__() - @always_inline("nodebug") + @always_inline("builtin") @implicit fn __init__(out self, value: UInt): """Construct Int from the given UInt value. @@ -476,7 +476,7 @@ struct Int( # Operator dunders # ===------------------------------------------------------------------=== # - @always_inline("nodebug") + @always_inline("builtin") fn __lt__(self, rhs: Int) -> Bool: """Compare this Int to the RHS using LT comparison. @@ -490,7 +490,7 @@ struct Int( pred = __mlir_attr.`#index` ](self.value, rhs.value) - @always_inline("nodebug") + @always_inline("builtin") fn __le__(self, rhs: Int) -> Bool: """Compare this Int to the RHS using LE comparison. @@ -505,7 +505,7 @@ struct Int( pred = __mlir_attr.`#index` ](self.value, rhs.value) - @always_inline("nodebug") + @always_inline("builtin") fn __eq__(self, rhs: Int) -> Bool: """Compare this Int to the RHS using EQ comparison. @@ -519,7 +519,7 @@ struct Int( pred = __mlir_attr.`#index` ](self.value, rhs.value) - @always_inline("nodebug") + @always_inline("builtin") fn __ne__(self, rhs: Int) -> Bool: """Compare this Int to the RHS using NE comparison. @@ -533,7 +533,7 @@ struct Int( pred = __mlir_attr.`#index` ](self.value, rhs.value) - @always_inline("nodebug") + @always_inline("builtin") fn __gt__(self, rhs: Int) -> Bool: """Compare this Int to the RHS using GT comparison. @@ -547,7 +547,7 @@ struct Int( pred = __mlir_attr.`#index` ](self.value, rhs.value) - @always_inline("nodebug") + @always_inline("builtin") fn __ge__(self, rhs: Int) -> Bool: """Compare this Int to the RHS using GE comparison. @@ -571,7 +571,7 @@ struct Int( """ return self - @always_inline("nodebug") + @always_inline("builtin") fn __neg__(self) -> Int: """Return -self. From eeacc41d6a2ff8406a0737934d72cf829e263413 Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Sat, 15 Feb 2025 15:31:25 -0800 Subject: [PATCH 401/509] [mojo-lang] Remove `refineResultValue`, a major use of the interpreter in the parser Now that we have `@always_inline("builtin")`, we can remove these old hacks that was intended to support dependent types better. This will probably help compile time and simplifies things because we're not calling into the comptime interpreter in the parser in this place anymore. This also updates `Bool` so we constant fold Bool in cond expressions, which is needed for this. MODULAR_ORIG_COMMIT_REV_ID: fad37c77c069106834608a0e7e07b0cbbfdcc452 --- stdlib/src/builtin/bool.mojo | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/stdlib/src/builtin/bool.mojo b/stdlib/src/builtin/bool.mojo index 1fc5852fcc..59800330b6 100644 --- a/stdlib/src/builtin/bool.mojo +++ b/stdlib/src/builtin/bool.mojo @@ -198,7 +198,7 @@ struct Bool( """ self = value.__bool__() - @always_inline("nodebug") + @always_inline("builtin") fn __bool__(self) -> Bool: """Convert to Bool. @@ -207,7 +207,7 @@ struct Bool( """ return self - @always_inline("nodebug") + @always_inline("builtin") fn __as_bool__(self) -> Bool: """Convert to Bool. @@ -216,7 +216,7 @@ struct Bool( """ return self.__bool__() - @always_inline("nodebug") + @always_inline("builtin") fn __mlir_i1__(self) -> __mlir_type.i1: """Convert this Bool to __mlir_type.i1. From e488049b5cd5c6132daea94770fa8c3288eced35 Mon Sep 17 00:00:00 2001 From: modularbot Date: Sun, 16 Feb 2025 07:02:06 +0000 Subject: [PATCH 402/509] Update lockfiles to point to latest nightly version: 25.2.0.dev2025021605 --- examples/life/magic.lock | 148 +++++++++++++++++---------------- examples/magic.lock | 148 +++++++++++++++++---------------- examples/operators/magic.lock | 151 ++++++++++++++++++---------------- examples/testing/magic.lock | 151 ++++++++++++++++++---------------- magic.lock | 148 +++++++++++++++++---------------- 5 files changed, 391 insertions(+), 355 deletions(-) diff --git a/examples/life/magic.lock b/examples/life/magic.lock index 894a2c732f..38912d83ae 100644 --- a/examples/life/magic.lock +++ b/examples/life/magic.lock @@ -94,11 +94,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.10.0-h5888daf_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021505-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025021505-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025021505-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021505-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021605-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025021605-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025021605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021605-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/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda @@ -235,11 +235,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.10.0-h5ad3122_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021505-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025021505-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025021505-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021505-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021605-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025021605-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025021605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021605-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/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-ha32ae93_3.conda @@ -354,11 +354,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.5.0-h2471fea_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021505-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025021505-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025021505-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021505-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021605-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025021605-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025021605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021605-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/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda @@ -1569,6 +1569,7 @@ packages: arch: aarch64 platform: linux license: BSD-3-Clause + license_family: BSD size: 16884 timestamp: 1739426012764 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-29_h10e41b3_openblas.conda @@ -1586,6 +1587,7 @@ packages: arch: arm64 platform: osx license: BSD-3-Clause + license_family: BSD size: 17046 timestamp: 1739426231872 - conda: https://conda.anaconda.org/conda-forge/linux-64/libcap-2.71-h39aace5_0.conda @@ -1642,6 +1644,7 @@ packages: arch: aarch64 platform: linux license: BSD-3-Clause + license_family: BSD size: 16837 timestamp: 1739426020271 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-29_hb3479ef_openblas.conda @@ -1657,6 +1660,7 @@ packages: arch: arm64 platform: osx license: BSD-3-Clause + license_family: BSD size: 16983 timestamp: 1739426238799 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda @@ -2382,6 +2386,7 @@ packages: arch: aarch64 platform: linux license: BSD-3-Clause + license_family: BSD size: 16836 timestamp: 1739426027617 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-29_hc9a63f6_openblas.conda @@ -2397,6 +2402,7 @@ packages: arch: arm64 platform: osx license: BSD-3-Clause + license_family: BSD size: 16988 timestamp: 1739426245773 - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda @@ -3194,48 +3200,48 @@ packages: license_family: BSD size: 184953 timestamp: 1733740984533 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021505-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021605-release.conda noarch: python - sha256: c2f8ebc34331c5ffa786e720213a53323b705ac43df1ac239b63303b9b9038e1 - md5: 7c219a8f7d72e788f72950fb67eec55d + sha256: 8d17a03f813e447f27d96e652049521361f51252851c7b0b090a1ae5f1ad702e + md5: 29dc13c8596d4d976ea38e97cc485aaa depends: - - max-core ==25.2.0.dev2025021505 release - - max-python ==25.2.0.dev2025021505 release - - mojo-jupyter ==25.2.0.dev2025021505 release - - mblack ==25.2.0.dev2025021505 release + - max-core ==25.2.0.dev2025021605 release + - max-python ==25.2.0.dev2025021605 release + - mojo-jupyter ==25.2.0.dev2025021605 release + - mblack ==25.2.0.dev2025021605 release license: LicenseRef-Modular-Proprietary - size: 9911 - timestamp: 1739596607111 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025021505-release.conda - sha256: 7e9818bee84f228392f5582be6a71d8a0d2b74ae0a6966fad16756c108e805d5 - md5: 7c47e1568f8fdb47589c5f2f77e749d5 + size: 9902 + timestamp: 1739683043473 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025021605-release.conda + sha256: 6b546b5d53a8e0aa72ccce2bb75a530dad7e5ca5b6813b9e68371b1c3a136411 + md5: 6cf287624d18387d1a58b1845259e536 depends: - - mblack ==25.2.0.dev2025021505 release + - mblack ==25.2.0.dev2025021605 release license: LicenseRef-Modular-Proprietary - size: 243502366 - timestamp: 1739596607111 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025021505-release.conda - sha256: 2519eb845d8b43d5b989b235993187515916c8c661a1f693bf05a6e1f8a8d8c4 - md5: 235427d2f04f300bfb8d65de459c6828 + size: 243509224 + timestamp: 1739683043473 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025021605-release.conda + sha256: 57bb110eee9302d9650ba71c83a7e65944811358183041c71128c031d6af17e8 + md5: b37ce2fdf9411473e542c4aef22b08b0 depends: - - mblack ==25.2.0.dev2025021505 release + - mblack ==25.2.0.dev2025021605 release license: LicenseRef-Modular-Proprietary - size: 246177895 - timestamp: 1739596609585 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025021505-release.conda - sha256: 08807af59d1f62c0131042299639fba44f5c46cbafa439e738836599e958788c - md5: 1cc7d1d678aad0079de6dd599698b3e8 + size: 246219820 + timestamp: 1739682972823 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025021605-release.conda + sha256: 5d9e5a5f4d195f8d13531c682eece0f7c4554eca968ae717fd38b051e42ca76b + md5: 2940690b37e100dbd416713e70d36b51 depends: - - mblack ==25.2.0.dev2025021505 release + - mblack ==25.2.0.dev2025021605 release license: LicenseRef-Modular-Proprietary - size: 211873798 - timestamp: 1739598748080 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025021505-release.conda + size: 211901175 + timestamp: 1739684321195 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025021605-release.conda noarch: python - sha256: da5451a793d8f7bf0e49e4fa5cdb8b961fa7861936f5ceab76b73635a1be18e0 - md5: 867649f230d5651e3358e4cf3839461e + sha256: bb8a384f20cf6d0d9ab93c2e523a2d2250c3757ae3794ec83e9ee4fbb783e4e4 + md5: 82b39a005860f9015b618176c8f59b3f depends: - - max-core ==25.2.0.dev2025021505 release + - max-core ==25.2.0.dev2025021605 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -3273,14 +3279,14 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 120572622 - timestamp: 1739596607111 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025021505-release.conda + size: 120548836 + timestamp: 1739683043473 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025021605-release.conda noarch: python - sha256: 5e8148b3cf1499fdade4d3230e96da25d4d4c2d2ed3fcb333b9dec83e1d6960c - md5: 7e11eddecf6b2cb6d349333d2cbacc7e + sha256: 88ef2f35b6e268dcfd1eb266d133c3418a225c145e980d2cad70957e144c3f82 + md5: 18662036dae8461d666b56497fa00e02 depends: - - max-core ==25.2.0.dev2025021505 release + - max-core ==25.2.0.dev2025021605 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -3318,14 +3324,14 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 123316509 - timestamp: 1739596609585 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025021505-release.conda + size: 123282288 + timestamp: 1739682972823 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025021605-release.conda noarch: python - sha256: a0c5ab16fad0bdc62e273eb9fc0fef8b8f766f3e958b646ed03a46ea686c616b - md5: ca8950d7b84e3c33233c2476a03eb764 + sha256: e658c2faa000d560facb99de203e057915eca643cd06d0712e7bbacf2572c1f0 + md5: d8dc7097ab701ea252026d8252950b5a depends: - - max-core ==25.2.0.dev2025021505 release + - max-core ==25.2.0.dev2025021605 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -3363,12 +3369,12 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 109988693 - timestamp: 1739598748080 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021505-release.conda + size: 109939744 + timestamp: 1739684321195 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021605-release.conda noarch: python - sha256: ccf0d2a2f64b87ea29820ea9ee273812423d7b37a1037228d1f6f2004ca2113a - md5: ca94b2ef2abbb38599f8fd97ee9a622e + sha256: bd1475d1165ab9effc0aee394668f128fe967bcf1f13e2f9769e9bb6c19ec4dc + md5: 6a58064d374fd7fda171ea3c9fe6a706 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -3379,20 +3385,20 @@ packages: - typing_extensions >=v4.12.2 - python license: MIT - size: 130850 - timestamp: 1739596607110 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021505-release.conda + size: 130851 + timestamp: 1739683043473 +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021605-release.conda noarch: python - sha256: 5becaf0cee459afff75d739bdc2ea4a95f96dce278f5fe09fb26dc4b35534f25 - md5: 392f051b929c168014025bb2dfc89fcc + sha256: 436a149c479fe5d1e935f13497e48c04f7df11c6c84c1c803af433c239285ed8 + md5: a8c4c9538b073aec60407f390562f174 depends: - - max-core ==25.2.0.dev2025021505 release + - max-core ==25.2.0.dev2025021605 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22980 - timestamp: 1739596607111 + size: 22987 + timestamp: 1739683043473 - conda: https://conda.anaconda.org/conda-forge/linux-64/mpg123-1.32.9-hc50e24c_0.conda sha256: 39c4700fb3fbe403a77d8cc27352fa72ba744db487559d5d44bf8411bb4ea200 md5: c7f302fd11eeb0987a6a5e1f3aed6a21 diff --git a/examples/magic.lock b/examples/magic.lock index 49a8dd50dd..8f2fb0cb08 100644 --- a/examples/magic.lock +++ b/examples/magic.lock @@ -42,11 +42,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021505-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025021505-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025021505-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021505-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021605-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025021605-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025021605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021605-release.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-h2d0b736_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py311h64a7726_0.conda @@ -107,11 +107,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021505-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025021505-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025021505-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021505-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021605-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025021605-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025021605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021605-release.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-ha32ae93_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py311h69ead2a_0.conda @@ -163,11 +163,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.48.0-h3f77e49_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021505-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025021505-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025021505-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021505-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021605-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025021605-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025021605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021605-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py311h7125741_0.conda @@ -514,6 +514,7 @@ packages: arch: aarch64 platform: linux license: BSD-3-Clause + license_family: BSD size: 16884 timestamp: 1739426012764 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-29_h10e41b3_openblas.conda @@ -531,6 +532,7 @@ packages: arch: arm64 platform: osx license: BSD-3-Clause + license_family: BSD size: 17046 timestamp: 1739426231872 - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-28_he106b2a_openblas.conda @@ -562,6 +564,7 @@ packages: arch: aarch64 platform: linux license: BSD-3-Clause + license_family: BSD size: 16837 timestamp: 1739426020271 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-29_hb3479ef_openblas.conda @@ -577,6 +580,7 @@ packages: arch: arm64 platform: osx license: BSD-3-Clause + license_family: BSD size: 16983 timestamp: 1739426238799 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda @@ -878,6 +882,7 @@ packages: arch: aarch64 platform: linux license: BSD-3-Clause + license_family: BSD size: 16836 timestamp: 1739426027617 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-29_hc9a63f6_openblas.conda @@ -893,6 +898,7 @@ packages: arch: arm64 platform: osx license: BSD-3-Clause + license_family: BSD size: 16988 timestamp: 1739426245773 - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda @@ -1290,48 +1296,48 @@ packages: license_family: APACHE size: 280830 timestamp: 1736986295869 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021505-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021605-release.conda noarch: python - sha256: c2f8ebc34331c5ffa786e720213a53323b705ac43df1ac239b63303b9b9038e1 - md5: 7c219a8f7d72e788f72950fb67eec55d + sha256: 8d17a03f813e447f27d96e652049521361f51252851c7b0b090a1ae5f1ad702e + md5: 29dc13c8596d4d976ea38e97cc485aaa depends: - - max-core ==25.2.0.dev2025021505 release - - max-python ==25.2.0.dev2025021505 release - - mojo-jupyter ==25.2.0.dev2025021505 release - - mblack ==25.2.0.dev2025021505 release + - max-core ==25.2.0.dev2025021605 release + - max-python ==25.2.0.dev2025021605 release + - mojo-jupyter ==25.2.0.dev2025021605 release + - mblack ==25.2.0.dev2025021605 release license: LicenseRef-Modular-Proprietary - size: 9911 - timestamp: 1739596607111 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025021505-release.conda - sha256: 7e9818bee84f228392f5582be6a71d8a0d2b74ae0a6966fad16756c108e805d5 - md5: 7c47e1568f8fdb47589c5f2f77e749d5 + size: 9902 + timestamp: 1739683043473 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025021605-release.conda + sha256: 6b546b5d53a8e0aa72ccce2bb75a530dad7e5ca5b6813b9e68371b1c3a136411 + md5: 6cf287624d18387d1a58b1845259e536 depends: - - mblack ==25.2.0.dev2025021505 release + - mblack ==25.2.0.dev2025021605 release license: LicenseRef-Modular-Proprietary - size: 243502366 - timestamp: 1739596607111 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025021505-release.conda - sha256: 2519eb845d8b43d5b989b235993187515916c8c661a1f693bf05a6e1f8a8d8c4 - md5: 235427d2f04f300bfb8d65de459c6828 + size: 243509224 + timestamp: 1739683043473 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025021605-release.conda + sha256: 57bb110eee9302d9650ba71c83a7e65944811358183041c71128c031d6af17e8 + md5: b37ce2fdf9411473e542c4aef22b08b0 depends: - - mblack ==25.2.0.dev2025021505 release + - mblack ==25.2.0.dev2025021605 release license: LicenseRef-Modular-Proprietary - size: 246177895 - timestamp: 1739596609585 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025021505-release.conda - sha256: 08807af59d1f62c0131042299639fba44f5c46cbafa439e738836599e958788c - md5: 1cc7d1d678aad0079de6dd599698b3e8 + size: 246219820 + timestamp: 1739682972823 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025021605-release.conda + sha256: 5d9e5a5f4d195f8d13531c682eece0f7c4554eca968ae717fd38b051e42ca76b + md5: 2940690b37e100dbd416713e70d36b51 depends: - - mblack ==25.2.0.dev2025021505 release + - mblack ==25.2.0.dev2025021605 release license: LicenseRef-Modular-Proprietary - size: 211873798 - timestamp: 1739598748080 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025021505-release.conda + size: 211901175 + timestamp: 1739684321195 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025021605-release.conda noarch: python - sha256: da5451a793d8f7bf0e49e4fa5cdb8b961fa7861936f5ceab76b73635a1be18e0 - md5: 867649f230d5651e3358e4cf3839461e + sha256: bb8a384f20cf6d0d9ab93c2e523a2d2250c3757ae3794ec83e9ee4fbb783e4e4 + md5: 82b39a005860f9015b618176c8f59b3f depends: - - max-core ==25.2.0.dev2025021505 release + - max-core ==25.2.0.dev2025021605 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1369,14 +1375,14 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 120572622 - timestamp: 1739596607111 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025021505-release.conda + size: 120548836 + timestamp: 1739683043473 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025021605-release.conda noarch: python - sha256: 5e8148b3cf1499fdade4d3230e96da25d4d4c2d2ed3fcb333b9dec83e1d6960c - md5: 7e11eddecf6b2cb6d349333d2cbacc7e + sha256: 88ef2f35b6e268dcfd1eb266d133c3418a225c145e980d2cad70957e144c3f82 + md5: 18662036dae8461d666b56497fa00e02 depends: - - max-core ==25.2.0.dev2025021505 release + - max-core ==25.2.0.dev2025021605 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1414,14 +1420,14 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 123316509 - timestamp: 1739596609585 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025021505-release.conda + size: 123282288 + timestamp: 1739682972823 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025021605-release.conda noarch: python - sha256: a0c5ab16fad0bdc62e273eb9fc0fef8b8f766f3e958b646ed03a46ea686c616b - md5: ca8950d7b84e3c33233c2476a03eb764 + sha256: e658c2faa000d560facb99de203e057915eca643cd06d0712e7bbacf2572c1f0 + md5: d8dc7097ab701ea252026d8252950b5a depends: - - max-core ==25.2.0.dev2025021505 release + - max-core ==25.2.0.dev2025021605 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1459,12 +1465,12 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 109988693 - timestamp: 1739598748080 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021505-release.conda + size: 109939744 + timestamp: 1739684321195 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021605-release.conda noarch: python - sha256: ccf0d2a2f64b87ea29820ea9ee273812423d7b37a1037228d1f6f2004ca2113a - md5: ca94b2ef2abbb38599f8fd97ee9a622e + sha256: bd1475d1165ab9effc0aee394668f128fe967bcf1f13e2f9769e9bb6c19ec4dc + md5: 6a58064d374fd7fda171ea3c9fe6a706 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -1475,20 +1481,20 @@ packages: - typing_extensions >=v4.12.2 - python license: MIT - size: 130850 - timestamp: 1739596607110 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021505-release.conda + size: 130851 + timestamp: 1739683043473 +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021605-release.conda noarch: python - sha256: 5becaf0cee459afff75d739bdc2ea4a95f96dce278f5fe09fb26dc4b35534f25 - md5: 392f051b929c168014025bb2dfc89fcc + sha256: 436a149c479fe5d1e935f13497e48c04f7df11c6c84c1c803af433c239285ed8 + md5: a8c4c9538b073aec60407f390562f174 depends: - - max-core ==25.2.0.dev2025021505 release + - max-core ==25.2.0.dev2025021605 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22980 - timestamp: 1739596607111 + size: 22987 + timestamp: 1739683043473 - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda sha256: 1895f47b7d68581a6facde5cb13ab8c2764c2e53a76bd746f8f98910dc4e08fe md5: 29097e7ea634a45cc5386b95cac6568f diff --git a/examples/operators/magic.lock b/examples/operators/magic.lock index 49b189f984..8296be6643 100644 --- a/examples/operators/magic.lock +++ b/examples/operators/magic.lock @@ -45,12 +45,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.5-h0d44e9d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/llvm-openmp-19.1.7-h024ca30_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021505-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025021505-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025021505-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021605-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025021605-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025021605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021605-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-2024.2.2-ha957f24_16.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021605-release.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-h2d0b736_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda @@ -112,11 +112,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021505-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025021505-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025021505-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021505-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021605-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025021605-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025021605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021605-release.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-ha32ae93_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda @@ -168,11 +168,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.48.0-h3f77e49_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021505-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025021505-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025021505-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021505-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021605-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025021605-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025021605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021605-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda @@ -500,6 +500,7 @@ packages: arch: x86_64 platform: linux license: BSD-3-Clause + license_family: BSD size: 16917 timestamp: 1739425832677 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-29_h1a9f1db_openblas.conda @@ -517,6 +518,7 @@ packages: arch: aarch64 platform: linux license: BSD-3-Clause + license_family: BSD size: 16884 timestamp: 1739426012764 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-29_h10e41b3_openblas.conda @@ -534,6 +536,7 @@ packages: arch: arm64 platform: osx license: BSD-3-Clause + license_family: BSD size: 17046 timestamp: 1739426231872 - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-29_he106b2a_openblas.conda @@ -550,6 +553,7 @@ packages: arch: x86_64 platform: linux license: BSD-3-Clause + license_family: BSD size: 16866 timestamp: 1739425843922 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-29_hab92f65_openblas.conda @@ -565,6 +569,7 @@ packages: arch: aarch64 platform: linux license: BSD-3-Clause + license_family: BSD size: 16837 timestamp: 1739426020271 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-29_hb3479ef_openblas.conda @@ -580,6 +585,7 @@ packages: arch: arm64 platform: osx license: BSD-3-Clause + license_family: BSD size: 16983 timestamp: 1739426238799 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda @@ -879,6 +885,7 @@ packages: arch: x86_64 platform: linux license: BSD-3-Clause + license_family: BSD size: 16865 timestamp: 1739425856613 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-29_h411afd4_openblas.conda @@ -894,6 +901,7 @@ packages: arch: aarch64 platform: linux license: BSD-3-Clause + license_family: BSD size: 16836 timestamp: 1739426027617 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-29_hc9a63f6_openblas.conda @@ -909,6 +917,7 @@ packages: arch: arm64 platform: osx license: BSD-3-Clause + license_family: BSD size: 16988 timestamp: 1739426245773 - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda @@ -1336,48 +1345,48 @@ packages: license_family: APACHE size: 280830 timestamp: 1736986295869 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021505-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021605-release.conda noarch: python - sha256: c2f8ebc34331c5ffa786e720213a53323b705ac43df1ac239b63303b9b9038e1 - md5: 7c219a8f7d72e788f72950fb67eec55d + sha256: 8d17a03f813e447f27d96e652049521361f51252851c7b0b090a1ae5f1ad702e + md5: 29dc13c8596d4d976ea38e97cc485aaa depends: - - max-core ==25.2.0.dev2025021505 release - - max-python ==25.2.0.dev2025021505 release - - mojo-jupyter ==25.2.0.dev2025021505 release - - mblack ==25.2.0.dev2025021505 release + - max-core ==25.2.0.dev2025021605 release + - max-python ==25.2.0.dev2025021605 release + - mojo-jupyter ==25.2.0.dev2025021605 release + - mblack ==25.2.0.dev2025021605 release license: LicenseRef-Modular-Proprietary - size: 9911 - timestamp: 1739596607111 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025021505-release.conda - sha256: 7e9818bee84f228392f5582be6a71d8a0d2b74ae0a6966fad16756c108e805d5 - md5: 7c47e1568f8fdb47589c5f2f77e749d5 + size: 9902 + timestamp: 1739683043473 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025021605-release.conda + sha256: 6b546b5d53a8e0aa72ccce2bb75a530dad7e5ca5b6813b9e68371b1c3a136411 + md5: 6cf287624d18387d1a58b1845259e536 depends: - - mblack ==25.2.0.dev2025021505 release + - mblack ==25.2.0.dev2025021605 release license: LicenseRef-Modular-Proprietary - size: 243502366 - timestamp: 1739596607111 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025021505-release.conda - sha256: 2519eb845d8b43d5b989b235993187515916c8c661a1f693bf05a6e1f8a8d8c4 - md5: 235427d2f04f300bfb8d65de459c6828 + size: 243509224 + timestamp: 1739683043473 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025021605-release.conda + sha256: 57bb110eee9302d9650ba71c83a7e65944811358183041c71128c031d6af17e8 + md5: b37ce2fdf9411473e542c4aef22b08b0 depends: - - mblack ==25.2.0.dev2025021505 release + - mblack ==25.2.0.dev2025021605 release license: LicenseRef-Modular-Proprietary - size: 246177895 - timestamp: 1739596609585 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025021505-release.conda - sha256: 08807af59d1f62c0131042299639fba44f5c46cbafa439e738836599e958788c - md5: 1cc7d1d678aad0079de6dd599698b3e8 + size: 246219820 + timestamp: 1739682972823 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025021605-release.conda + sha256: 5d9e5a5f4d195f8d13531c682eece0f7c4554eca968ae717fd38b051e42ca76b + md5: 2940690b37e100dbd416713e70d36b51 depends: - - mblack ==25.2.0.dev2025021505 release + - mblack ==25.2.0.dev2025021605 release license: LicenseRef-Modular-Proprietary - size: 211873798 - timestamp: 1739598748080 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025021505-release.conda + size: 211901175 + timestamp: 1739684321195 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025021605-release.conda noarch: python - sha256: da5451a793d8f7bf0e49e4fa5cdb8b961fa7861936f5ceab76b73635a1be18e0 - md5: 867649f230d5651e3358e4cf3839461e + sha256: bb8a384f20cf6d0d9ab93c2e523a2d2250c3757ae3794ec83e9ee4fbb783e4e4 + md5: 82b39a005860f9015b618176c8f59b3f depends: - - max-core ==25.2.0.dev2025021505 release + - max-core ==25.2.0.dev2025021605 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1415,14 +1424,14 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 120572622 - timestamp: 1739596607111 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025021505-release.conda + size: 120548836 + timestamp: 1739683043473 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025021605-release.conda noarch: python - sha256: 5e8148b3cf1499fdade4d3230e96da25d4d4c2d2ed3fcb333b9dec83e1d6960c - md5: 7e11eddecf6b2cb6d349333d2cbacc7e + sha256: 88ef2f35b6e268dcfd1eb266d133c3418a225c145e980d2cad70957e144c3f82 + md5: 18662036dae8461d666b56497fa00e02 depends: - - max-core ==25.2.0.dev2025021505 release + - max-core ==25.2.0.dev2025021605 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1460,14 +1469,14 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 123316509 - timestamp: 1739596609585 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025021505-release.conda + size: 123282288 + timestamp: 1739682972823 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025021605-release.conda noarch: python - sha256: a0c5ab16fad0bdc62e273eb9fc0fef8b8f766f3e958b646ed03a46ea686c616b - md5: ca8950d7b84e3c33233c2476a03eb764 + sha256: e658c2faa000d560facb99de203e057915eca643cd06d0712e7bbacf2572c1f0 + md5: d8dc7097ab701ea252026d8252950b5a depends: - - max-core ==25.2.0.dev2025021505 release + - max-core ==25.2.0.dev2025021605 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1505,12 +1514,12 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 109988693 - timestamp: 1739598748080 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021505-release.conda + size: 109939744 + timestamp: 1739684321195 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021605-release.conda noarch: python - sha256: ccf0d2a2f64b87ea29820ea9ee273812423d7b37a1037228d1f6f2004ca2113a - md5: ca94b2ef2abbb38599f8fd97ee9a622e + sha256: bd1475d1165ab9effc0aee394668f128fe967bcf1f13e2f9769e9bb6c19ec4dc + md5: 6a58064d374fd7fda171ea3c9fe6a706 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -1521,8 +1530,8 @@ packages: - typing_extensions >=v4.12.2 - python license: MIT - size: 130850 - timestamp: 1739596607110 + size: 130851 + timestamp: 1739683043473 - conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-2024.2.2-ha957f24_16.conda sha256: 77906b0acead8f86b489da46f53916e624897338770dbf70b04b8f673c9273c1 md5: 1459379c79dda834673426504d52b319 @@ -1537,18 +1546,18 @@ packages: license_family: Proprietary size: 124718448 timestamp: 1730231808335 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021505-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021605-release.conda noarch: python - sha256: 5becaf0cee459afff75d739bdc2ea4a95f96dce278f5fe09fb26dc4b35534f25 - md5: 392f051b929c168014025bb2dfc89fcc + sha256: 436a149c479fe5d1e935f13497e48c04f7df11c6c84c1c803af433c239285ed8 + md5: a8c4c9538b073aec60407f390562f174 depends: - - max-core ==25.2.0.dev2025021505 release + - max-core ==25.2.0.dev2025021605 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22980 - timestamp: 1739596607111 + size: 22987 + timestamp: 1739683043473 - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda sha256: 1895f47b7d68581a6facde5cb13ab8c2764c2e53a76bd746f8f98910dc4e08fe md5: 29097e7ea634a45cc5386b95cac6568f diff --git a/examples/testing/magic.lock b/examples/testing/magic.lock index 49b189f984..8296be6643 100644 --- a/examples/testing/magic.lock +++ b/examples/testing/magic.lock @@ -45,12 +45,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.5-h0d44e9d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/llvm-openmp-19.1.7-h024ca30_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021505-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025021505-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025021505-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021605-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025021605-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025021605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021605-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-2024.2.2-ha957f24_16.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021605-release.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-h2d0b736_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda @@ -112,11 +112,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021505-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025021505-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025021505-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021505-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021605-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025021605-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025021605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021605-release.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-ha32ae93_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda @@ -168,11 +168,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.48.0-h3f77e49_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021505-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025021505-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025021505-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021505-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021605-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025021605-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025021605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021605-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda @@ -500,6 +500,7 @@ packages: arch: x86_64 platform: linux license: BSD-3-Clause + license_family: BSD size: 16917 timestamp: 1739425832677 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-29_h1a9f1db_openblas.conda @@ -517,6 +518,7 @@ packages: arch: aarch64 platform: linux license: BSD-3-Clause + license_family: BSD size: 16884 timestamp: 1739426012764 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-29_h10e41b3_openblas.conda @@ -534,6 +536,7 @@ packages: arch: arm64 platform: osx license: BSD-3-Clause + license_family: BSD size: 17046 timestamp: 1739426231872 - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-29_he106b2a_openblas.conda @@ -550,6 +553,7 @@ packages: arch: x86_64 platform: linux license: BSD-3-Clause + license_family: BSD size: 16866 timestamp: 1739425843922 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-29_hab92f65_openblas.conda @@ -565,6 +569,7 @@ packages: arch: aarch64 platform: linux license: BSD-3-Clause + license_family: BSD size: 16837 timestamp: 1739426020271 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-29_hb3479ef_openblas.conda @@ -580,6 +585,7 @@ packages: arch: arm64 platform: osx license: BSD-3-Clause + license_family: BSD size: 16983 timestamp: 1739426238799 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda @@ -879,6 +885,7 @@ packages: arch: x86_64 platform: linux license: BSD-3-Clause + license_family: BSD size: 16865 timestamp: 1739425856613 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-29_h411afd4_openblas.conda @@ -894,6 +901,7 @@ packages: arch: aarch64 platform: linux license: BSD-3-Clause + license_family: BSD size: 16836 timestamp: 1739426027617 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-29_hc9a63f6_openblas.conda @@ -909,6 +917,7 @@ packages: arch: arm64 platform: osx license: BSD-3-Clause + license_family: BSD size: 16988 timestamp: 1739426245773 - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda @@ -1336,48 +1345,48 @@ packages: license_family: APACHE size: 280830 timestamp: 1736986295869 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021505-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021605-release.conda noarch: python - sha256: c2f8ebc34331c5ffa786e720213a53323b705ac43df1ac239b63303b9b9038e1 - md5: 7c219a8f7d72e788f72950fb67eec55d + sha256: 8d17a03f813e447f27d96e652049521361f51252851c7b0b090a1ae5f1ad702e + md5: 29dc13c8596d4d976ea38e97cc485aaa depends: - - max-core ==25.2.0.dev2025021505 release - - max-python ==25.2.0.dev2025021505 release - - mojo-jupyter ==25.2.0.dev2025021505 release - - mblack ==25.2.0.dev2025021505 release + - max-core ==25.2.0.dev2025021605 release + - max-python ==25.2.0.dev2025021605 release + - mojo-jupyter ==25.2.0.dev2025021605 release + - mblack ==25.2.0.dev2025021605 release license: LicenseRef-Modular-Proprietary - size: 9911 - timestamp: 1739596607111 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025021505-release.conda - sha256: 7e9818bee84f228392f5582be6a71d8a0d2b74ae0a6966fad16756c108e805d5 - md5: 7c47e1568f8fdb47589c5f2f77e749d5 + size: 9902 + timestamp: 1739683043473 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025021605-release.conda + sha256: 6b546b5d53a8e0aa72ccce2bb75a530dad7e5ca5b6813b9e68371b1c3a136411 + md5: 6cf287624d18387d1a58b1845259e536 depends: - - mblack ==25.2.0.dev2025021505 release + - mblack ==25.2.0.dev2025021605 release license: LicenseRef-Modular-Proprietary - size: 243502366 - timestamp: 1739596607111 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025021505-release.conda - sha256: 2519eb845d8b43d5b989b235993187515916c8c661a1f693bf05a6e1f8a8d8c4 - md5: 235427d2f04f300bfb8d65de459c6828 + size: 243509224 + timestamp: 1739683043473 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025021605-release.conda + sha256: 57bb110eee9302d9650ba71c83a7e65944811358183041c71128c031d6af17e8 + md5: b37ce2fdf9411473e542c4aef22b08b0 depends: - - mblack ==25.2.0.dev2025021505 release + - mblack ==25.2.0.dev2025021605 release license: LicenseRef-Modular-Proprietary - size: 246177895 - timestamp: 1739596609585 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025021505-release.conda - sha256: 08807af59d1f62c0131042299639fba44f5c46cbafa439e738836599e958788c - md5: 1cc7d1d678aad0079de6dd599698b3e8 + size: 246219820 + timestamp: 1739682972823 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025021605-release.conda + sha256: 5d9e5a5f4d195f8d13531c682eece0f7c4554eca968ae717fd38b051e42ca76b + md5: 2940690b37e100dbd416713e70d36b51 depends: - - mblack ==25.2.0.dev2025021505 release + - mblack ==25.2.0.dev2025021605 release license: LicenseRef-Modular-Proprietary - size: 211873798 - timestamp: 1739598748080 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025021505-release.conda + size: 211901175 + timestamp: 1739684321195 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025021605-release.conda noarch: python - sha256: da5451a793d8f7bf0e49e4fa5cdb8b961fa7861936f5ceab76b73635a1be18e0 - md5: 867649f230d5651e3358e4cf3839461e + sha256: bb8a384f20cf6d0d9ab93c2e523a2d2250c3757ae3794ec83e9ee4fbb783e4e4 + md5: 82b39a005860f9015b618176c8f59b3f depends: - - max-core ==25.2.0.dev2025021505 release + - max-core ==25.2.0.dev2025021605 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1415,14 +1424,14 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 120572622 - timestamp: 1739596607111 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025021505-release.conda + size: 120548836 + timestamp: 1739683043473 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025021605-release.conda noarch: python - sha256: 5e8148b3cf1499fdade4d3230e96da25d4d4c2d2ed3fcb333b9dec83e1d6960c - md5: 7e11eddecf6b2cb6d349333d2cbacc7e + sha256: 88ef2f35b6e268dcfd1eb266d133c3418a225c145e980d2cad70957e144c3f82 + md5: 18662036dae8461d666b56497fa00e02 depends: - - max-core ==25.2.0.dev2025021505 release + - max-core ==25.2.0.dev2025021605 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1460,14 +1469,14 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 123316509 - timestamp: 1739596609585 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025021505-release.conda + size: 123282288 + timestamp: 1739682972823 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025021605-release.conda noarch: python - sha256: a0c5ab16fad0bdc62e273eb9fc0fef8b8f766f3e958b646ed03a46ea686c616b - md5: ca8950d7b84e3c33233c2476a03eb764 + sha256: e658c2faa000d560facb99de203e057915eca643cd06d0712e7bbacf2572c1f0 + md5: d8dc7097ab701ea252026d8252950b5a depends: - - max-core ==25.2.0.dev2025021505 release + - max-core ==25.2.0.dev2025021605 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1505,12 +1514,12 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 109988693 - timestamp: 1739598748080 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021505-release.conda + size: 109939744 + timestamp: 1739684321195 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021605-release.conda noarch: python - sha256: ccf0d2a2f64b87ea29820ea9ee273812423d7b37a1037228d1f6f2004ca2113a - md5: ca94b2ef2abbb38599f8fd97ee9a622e + sha256: bd1475d1165ab9effc0aee394668f128fe967bcf1f13e2f9769e9bb6c19ec4dc + md5: 6a58064d374fd7fda171ea3c9fe6a706 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -1521,8 +1530,8 @@ packages: - typing_extensions >=v4.12.2 - python license: MIT - size: 130850 - timestamp: 1739596607110 + size: 130851 + timestamp: 1739683043473 - conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-2024.2.2-ha957f24_16.conda sha256: 77906b0acead8f86b489da46f53916e624897338770dbf70b04b8f673c9273c1 md5: 1459379c79dda834673426504d52b319 @@ -1537,18 +1546,18 @@ packages: license_family: Proprietary size: 124718448 timestamp: 1730231808335 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021505-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021605-release.conda noarch: python - sha256: 5becaf0cee459afff75d739bdc2ea4a95f96dce278f5fe09fb26dc4b35534f25 - md5: 392f051b929c168014025bb2dfc89fcc + sha256: 436a149c479fe5d1e935f13497e48c04f7df11c6c84c1c803af433c239285ed8 + md5: a8c4c9538b073aec60407f390562f174 depends: - - max-core ==25.2.0.dev2025021505 release + - max-core ==25.2.0.dev2025021605 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22980 - timestamp: 1739596607111 + size: 22987 + timestamp: 1739683043473 - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda sha256: 1895f47b7d68581a6facde5cb13ab8c2764c2e53a76bd746f8f98910dc4e08fe md5: 29097e7ea634a45cc5386b95cac6568f diff --git a/magic.lock b/magic.lock index 71bfd12e98..912da88e98 100644 --- a/magic.lock +++ b/magic.lock @@ -43,11 +43,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/lit-19.1.7-pyhd8ed1ab_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021505-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025021505-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025021505-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021505-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021605-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025021605-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025021605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021605-release.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-h2d0b736_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda @@ -109,11 +109,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/lit-19.1.7-pyhd8ed1ab_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021505-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025021505-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025021505-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021505-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021605-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025021605-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025021605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021605-release.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-ha32ae93_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda @@ -166,11 +166,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/lit-19.1.7-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021505-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025021505-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025021505-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021505-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021605-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025021605-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025021605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021605-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda @@ -517,6 +517,7 @@ packages: arch: aarch64 platform: linux license: BSD-3-Clause + license_family: BSD size: 16884 timestamp: 1739426012764 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-29_h10e41b3_openblas.conda @@ -534,6 +535,7 @@ packages: arch: arm64 platform: osx license: BSD-3-Clause + license_family: BSD size: 17046 timestamp: 1739426231872 - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-28_he106b2a_openblas.conda @@ -565,6 +567,7 @@ packages: arch: aarch64 platform: linux license: BSD-3-Clause + license_family: BSD size: 16837 timestamp: 1739426020271 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-29_hb3479ef_openblas.conda @@ -580,6 +583,7 @@ packages: arch: arm64 platform: osx license: BSD-3-Clause + license_family: BSD size: 16983 timestamp: 1739426238799 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda @@ -881,6 +885,7 @@ packages: arch: aarch64 platform: linux license: BSD-3-Clause + license_family: BSD size: 16836 timestamp: 1739426027617 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-29_hc9a63f6_openblas.conda @@ -896,6 +901,7 @@ packages: arch: arm64 platform: osx license: BSD-3-Clause + license_family: BSD size: 16988 timestamp: 1739426245773 - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda @@ -1302,48 +1308,48 @@ packages: license_family: APACHE size: 280830 timestamp: 1736986295869 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021505-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021605-release.conda noarch: python - sha256: c2f8ebc34331c5ffa786e720213a53323b705ac43df1ac239b63303b9b9038e1 - md5: 7c219a8f7d72e788f72950fb67eec55d + sha256: 8d17a03f813e447f27d96e652049521361f51252851c7b0b090a1ae5f1ad702e + md5: 29dc13c8596d4d976ea38e97cc485aaa depends: - - max-core ==25.2.0.dev2025021505 release - - max-python ==25.2.0.dev2025021505 release - - mojo-jupyter ==25.2.0.dev2025021505 release - - mblack ==25.2.0.dev2025021505 release + - max-core ==25.2.0.dev2025021605 release + - max-python ==25.2.0.dev2025021605 release + - mojo-jupyter ==25.2.0.dev2025021605 release + - mblack ==25.2.0.dev2025021605 release license: LicenseRef-Modular-Proprietary - size: 9911 - timestamp: 1739596607111 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025021505-release.conda - sha256: 7e9818bee84f228392f5582be6a71d8a0d2b74ae0a6966fad16756c108e805d5 - md5: 7c47e1568f8fdb47589c5f2f77e749d5 + size: 9902 + timestamp: 1739683043473 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025021605-release.conda + sha256: 6b546b5d53a8e0aa72ccce2bb75a530dad7e5ca5b6813b9e68371b1c3a136411 + md5: 6cf287624d18387d1a58b1845259e536 depends: - - mblack ==25.2.0.dev2025021505 release + - mblack ==25.2.0.dev2025021605 release license: LicenseRef-Modular-Proprietary - size: 243502366 - timestamp: 1739596607111 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025021505-release.conda - sha256: 2519eb845d8b43d5b989b235993187515916c8c661a1f693bf05a6e1f8a8d8c4 - md5: 235427d2f04f300bfb8d65de459c6828 + size: 243509224 + timestamp: 1739683043473 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025021605-release.conda + sha256: 57bb110eee9302d9650ba71c83a7e65944811358183041c71128c031d6af17e8 + md5: b37ce2fdf9411473e542c4aef22b08b0 depends: - - mblack ==25.2.0.dev2025021505 release + - mblack ==25.2.0.dev2025021605 release license: LicenseRef-Modular-Proprietary - size: 246177895 - timestamp: 1739596609585 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025021505-release.conda - sha256: 08807af59d1f62c0131042299639fba44f5c46cbafa439e738836599e958788c - md5: 1cc7d1d678aad0079de6dd599698b3e8 + size: 246219820 + timestamp: 1739682972823 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025021605-release.conda + sha256: 5d9e5a5f4d195f8d13531c682eece0f7c4554eca968ae717fd38b051e42ca76b + md5: 2940690b37e100dbd416713e70d36b51 depends: - - mblack ==25.2.0.dev2025021505 release + - mblack ==25.2.0.dev2025021605 release license: LicenseRef-Modular-Proprietary - size: 211873798 - timestamp: 1739598748080 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025021505-release.conda + size: 211901175 + timestamp: 1739684321195 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025021605-release.conda noarch: python - sha256: da5451a793d8f7bf0e49e4fa5cdb8b961fa7861936f5ceab76b73635a1be18e0 - md5: 867649f230d5651e3358e4cf3839461e + sha256: bb8a384f20cf6d0d9ab93c2e523a2d2250c3757ae3794ec83e9ee4fbb783e4e4 + md5: 82b39a005860f9015b618176c8f59b3f depends: - - max-core ==25.2.0.dev2025021505 release + - max-core ==25.2.0.dev2025021605 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1381,14 +1387,14 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 120572622 - timestamp: 1739596607111 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025021505-release.conda + size: 120548836 + timestamp: 1739683043473 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025021605-release.conda noarch: python - sha256: 5e8148b3cf1499fdade4d3230e96da25d4d4c2d2ed3fcb333b9dec83e1d6960c - md5: 7e11eddecf6b2cb6d349333d2cbacc7e + sha256: 88ef2f35b6e268dcfd1eb266d133c3418a225c145e980d2cad70957e144c3f82 + md5: 18662036dae8461d666b56497fa00e02 depends: - - max-core ==25.2.0.dev2025021505 release + - max-core ==25.2.0.dev2025021605 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1426,14 +1432,14 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 123316509 - timestamp: 1739596609585 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025021505-release.conda + size: 123282288 + timestamp: 1739682972823 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025021605-release.conda noarch: python - sha256: a0c5ab16fad0bdc62e273eb9fc0fef8b8f766f3e958b646ed03a46ea686c616b - md5: ca8950d7b84e3c33233c2476a03eb764 + sha256: e658c2faa000d560facb99de203e057915eca643cd06d0712e7bbacf2572c1f0 + md5: d8dc7097ab701ea252026d8252950b5a depends: - - max-core ==25.2.0.dev2025021505 release + - max-core ==25.2.0.dev2025021605 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1471,12 +1477,12 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 109988693 - timestamp: 1739598748080 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021505-release.conda + size: 109939744 + timestamp: 1739684321195 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021605-release.conda noarch: python - sha256: ccf0d2a2f64b87ea29820ea9ee273812423d7b37a1037228d1f6f2004ca2113a - md5: ca94b2ef2abbb38599f8fd97ee9a622e + sha256: bd1475d1165ab9effc0aee394668f128fe967bcf1f13e2f9769e9bb6c19ec4dc + md5: 6a58064d374fd7fda171ea3c9fe6a706 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -1487,20 +1493,20 @@ packages: - typing_extensions >=v4.12.2 - python license: MIT - size: 130850 - timestamp: 1739596607110 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021505-release.conda + size: 130851 + timestamp: 1739683043473 +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021605-release.conda noarch: python - sha256: 5becaf0cee459afff75d739bdc2ea4a95f96dce278f5fe09fb26dc4b35534f25 - md5: 392f051b929c168014025bb2dfc89fcc + sha256: 436a149c479fe5d1e935f13497e48c04f7df11c6c84c1c803af433c239285ed8 + md5: a8c4c9538b073aec60407f390562f174 depends: - - max-core ==25.2.0.dev2025021505 release + - max-core ==25.2.0.dev2025021605 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22980 - timestamp: 1739596607111 + size: 22987 + timestamp: 1739683043473 - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda sha256: 1895f47b7d68581a6facde5cb13ab8c2764c2e53a76bd746f8f98910dc4e08fe md5: 29097e7ea634a45cc5386b95cac6568f From 010aa1d84543b87e76e97b3fa9ccd3bd98b866ea Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Sun, 16 Feb 2025 11:06:59 -0800 Subject: [PATCH 403/509] [mojo-lang] Fix implementation of IntLiteral -> Int. This changes the implementation of `kgen.int_literal.convert` to be attribute based instead of MLIR operation based. The operation based representation is completely broken, because the `!kgen.int.literal` type cannot be executed at runtime (ie cannot be lowered to LLVM) - it should only exist in the parameter domain. This patch improves the situation somewhat by introducing an attribute form (`IntLiteralConvertAttr`) of this. This builds on the new elaborator infra I added for error messages, which makes integer overflow errors a bit less terrible. This also allows it to work with `@always_inline("builtin")`. The IntLiteral representation should be moved wholesale to attributes and the corresponding operations removed, I filed MOCO-1628 to track this. MODULAR_ORIG_COMMIT_REV_ID: b1d3d50de6a9a9719d839646439062c0dec1902f --- stdlib/src/builtin/int.mojo | 2 +- stdlib/src/builtin/int_literal.mojo | 6 +++--- stdlib/src/builtin/uint.mojo | 10 +++++----- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/stdlib/src/builtin/int.mojo b/stdlib/src/builtin/int.mojo index 340455024e..b69330dedb 100644 --- a/stdlib/src/builtin/int.mojo +++ b/stdlib/src/builtin/int.mojo @@ -377,7 +377,7 @@ struct Int( value ) - @always_inline("nodebug") + @always_inline("builtin") @implicit fn __init__(out self, value: IntLiteral): """Construct Int from the given IntLiteral value. diff --git a/stdlib/src/builtin/int_literal.mojo b/stdlib/src/builtin/int_literal.mojo index 3f25c6fbdb..701cbca08d 100644 --- a/stdlib/src/builtin/int_literal.mojo +++ b/stdlib/src/builtin/int_literal.mojo @@ -592,7 +592,7 @@ struct IntLiteral( """ return self.__bool__() - @always_inline("nodebug") + @always_inline("builtin") fn __int__(self) -> Int: """Convert from IntLiteral to Int. @@ -610,7 +610,7 @@ struct IntLiteral( """ return self.__int__() - @always_inline("nodebug") + @always_inline("builtin") fn __uint__(self) -> UInt: """Convert from IntLiteral to UInt. @@ -729,7 +729,7 @@ struct IntLiteral( """ return __mlir_op.`kgen.int_literal.bit_width`(self.value) - @always_inline("nodebug") + @always_inline("builtin") fn __index__(self) -> __mlir_type.index: """Convert from IntLiteral to index. diff --git a/stdlib/src/builtin/uint.mojo b/stdlib/src/builtin/uint.mojo index c45ebb660c..d7937b8420 100644 --- a/stdlib/src/builtin/uint.mojo +++ b/stdlib/src/builtin/uint.mojo @@ -55,13 +55,13 @@ struct UInt(Indexer, _HashableWithHasher): which have signed and unsigned variants. """ - @always_inline("nodebug") + @always_inline("builtin") fn __init__(out self): """Default constructor that produces zero.""" self.value = __mlir_op.`index.constant`[value = __mlir_attr.`0:index`]() @doc_private - @always_inline("nodebug") + @always_inline("builtin") @implicit fn __init__(out self, value: __mlir_type.index): """Construct UInt from the given index value. @@ -84,7 +84,7 @@ struct UInt(Indexer, _HashableWithHasher): value ) - @always_inline("nodebug") + @always_inline("builtin") @implicit fn __init__(out self, value: Int): """Construct UInt from the given index value. @@ -94,7 +94,7 @@ struct UInt(Indexer, _HashableWithHasher): """ self.value = value.value - @always_inline("nodebug") + @always_inline("builtin") @implicit fn __init__(out self, value: IntLiteral): """Construct UInt from the given IntLiteral value. @@ -104,7 +104,7 @@ struct UInt(Indexer, _HashableWithHasher): """ self = value.__uint__() - @always_inline("nodebug") + @always_inline("builtin") fn __index__(self) -> __mlir_type.index: """Convert to index. From 8022690a13cbc899c98a8e81e1ae7535870c99e1 Mon Sep 17 00:00:00 2001 From: modularbot Date: Mon, 17 Feb 2025 07:00:05 +0000 Subject: [PATCH 404/509] Update lockfiles to point to latest nightly version: 25.2.0.dev2025021705 --- examples/life/magic.lock | 142 +++++++++++++++++----------------- examples/magic.lock | 142 +++++++++++++++++----------------- examples/operators/magic.lock | 142 +++++++++++++++++----------------- examples/testing/magic.lock | 142 +++++++++++++++++----------------- magic.lock | 142 +++++++++++++++++----------------- 5 files changed, 355 insertions(+), 355 deletions(-) diff --git a/examples/life/magic.lock b/examples/life/magic.lock index 38912d83ae..607b2b8054 100644 --- a/examples/life/magic.lock +++ b/examples/life/magic.lock @@ -94,11 +94,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.10.0-h5888daf_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021605-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025021605-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025021605-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021605-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025021705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025021705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021705-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/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda @@ -235,11 +235,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.10.0-h5ad3122_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021605-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025021605-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025021605-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021605-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025021705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025021705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021705-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/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-ha32ae93_3.conda @@ -354,11 +354,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.5.0-h2471fea_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021605-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025021605-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025021605-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021605-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021705-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025021705-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025021705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021705-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/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda @@ -3200,48 +3200,48 @@ packages: license_family: BSD size: 184953 timestamp: 1733740984533 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021605-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021705-release.conda noarch: python - sha256: 8d17a03f813e447f27d96e652049521361f51252851c7b0b090a1ae5f1ad702e - md5: 29dc13c8596d4d976ea38e97cc485aaa + sha256: f357a97439076d8b14482639424613726c391ec4483d6be9129060d3e4760f21 + md5: 28ccc6bbdfa41f375ee72fe1c1c10b2e depends: - - max-core ==25.2.0.dev2025021605 release - - max-python ==25.2.0.dev2025021605 release - - mojo-jupyter ==25.2.0.dev2025021605 release - - mblack ==25.2.0.dev2025021605 release + - max-core ==25.2.0.dev2025021705 release + - max-python ==25.2.0.dev2025021705 release + - mojo-jupyter ==25.2.0.dev2025021705 release + - mblack ==25.2.0.dev2025021705 release license: LicenseRef-Modular-Proprietary - size: 9902 - timestamp: 1739683043473 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025021605-release.conda - sha256: 6b546b5d53a8e0aa72ccce2bb75a530dad7e5ca5b6813b9e68371b1c3a136411 - md5: 6cf287624d18387d1a58b1845259e536 + size: 9900 + timestamp: 1739769476049 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025021705-release.conda + sha256: cb9400c54b963f03d04d6c843881380bd3112c30a8fbe9e48db931620bd1ebb8 + md5: 381af09e94b55adb4b8409e9607f03df depends: - - mblack ==25.2.0.dev2025021605 release + - mblack ==25.2.0.dev2025021705 release license: LicenseRef-Modular-Proprietary - size: 243509224 - timestamp: 1739683043473 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025021605-release.conda - sha256: 57bb110eee9302d9650ba71c83a7e65944811358183041c71128c031d6af17e8 - md5: b37ce2fdf9411473e542c4aef22b08b0 + size: 243571245 + timestamp: 1739769478481 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025021705-release.conda + sha256: f7dd60e39525b12a5f74d890a41aa8d3343d3cce4cea55eadf2f6cc3c3d11aa1 + md5: 257b6f0919811bb28c1ba9da36b42943 depends: - - mblack ==25.2.0.dev2025021605 release + - mblack ==25.2.0.dev2025021705 release license: LicenseRef-Modular-Proprietary - size: 246219820 - timestamp: 1739682972823 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025021605-release.conda - sha256: 5d9e5a5f4d195f8d13531c682eece0f7c4554eca968ae717fd38b051e42ca76b - md5: 2940690b37e100dbd416713e70d36b51 + size: 246181682 + timestamp: 1739769476049 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025021705-release.conda + sha256: 1a5234bedb53af4c11a05e86a972d252365eb0fb4e9eadb07601a97c13a3e580 + md5: 8a274c64491be70ab860f2749cdbded8 depends: - - mblack ==25.2.0.dev2025021605 release + - mblack ==25.2.0.dev2025021705 release license: LicenseRef-Modular-Proprietary - size: 211901175 - timestamp: 1739684321195 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025021605-release.conda + size: 211871421 + timestamp: 1739770743850 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025021705-release.conda noarch: python - sha256: bb8a384f20cf6d0d9ab93c2e523a2d2250c3757ae3794ec83e9ee4fbb783e4e4 - md5: 82b39a005860f9015b618176c8f59b3f + sha256: 5500aa0ced5c8d2b313782ac67518891c5fbaa99e4ed84aaa20f1bcd181364be + md5: 21ad39ec09ec7dd9be8dd6b104a65b6c depends: - - max-core ==25.2.0.dev2025021605 release + - max-core ==25.2.0.dev2025021705 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -3279,14 +3279,14 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 120548836 - timestamp: 1739683043473 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025021605-release.conda + size: 120661171 + timestamp: 1739769478481 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025021705-release.conda noarch: python - sha256: 88ef2f35b6e268dcfd1eb266d133c3418a225c145e980d2cad70957e144c3f82 - md5: 18662036dae8461d666b56497fa00e02 + sha256: 08e02fd88975d86206410e2573a460158f71eafa431df1631359e004ce005163 + md5: c3b325b2c14c3ae2c82d37894daef2f4 depends: - - max-core ==25.2.0.dev2025021605 release + - max-core ==25.2.0.dev2025021705 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -3324,14 +3324,14 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 123282288 - timestamp: 1739682972823 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025021605-release.conda + size: 123214020 + timestamp: 1739769476049 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025021705-release.conda noarch: python - sha256: e658c2faa000d560facb99de203e057915eca643cd06d0712e7bbacf2572c1f0 - md5: d8dc7097ab701ea252026d8252950b5a + sha256: 686735af9671c174ad98929602236992efdcbe682961ba5637f7babaa7779414 + md5: 3163d7c7ac36d35f3a1722ca6f24c802 depends: - - max-core ==25.2.0.dev2025021605 release + - max-core ==25.2.0.dev2025021705 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -3369,12 +3369,12 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 109939744 - timestamp: 1739684321195 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021605-release.conda + size: 110070584 + timestamp: 1739770743850 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021705-release.conda noarch: python - sha256: bd1475d1165ab9effc0aee394668f128fe967bcf1f13e2f9769e9bb6c19ec4dc - md5: 6a58064d374fd7fda171ea3c9fe6a706 + sha256: 13a8735d351148c95ff8030ea49010bc4cda358a5faf241689db15197bdaf7fb + md5: f595aa1a6832846493d7c9cb48bd0f5d depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -3385,20 +3385,20 @@ packages: - typing_extensions >=v4.12.2 - python license: MIT - size: 130851 - timestamp: 1739683043473 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021605-release.conda + size: 130855 + timestamp: 1739769476049 +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021705-release.conda noarch: python - sha256: 436a149c479fe5d1e935f13497e48c04f7df11c6c84c1c803af433c239285ed8 - md5: a8c4c9538b073aec60407f390562f174 + sha256: ff89ce5074726958ff4cefe09966470947ab40ebc5e4bbe4f8e3fe8c4d5d7263 + md5: c7ae6ef843f549adb530cff568cef5bc depends: - - max-core ==25.2.0.dev2025021605 release + - max-core ==25.2.0.dev2025021705 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22987 - timestamp: 1739683043473 + size: 22994 + timestamp: 1739769476049 - conda: https://conda.anaconda.org/conda-forge/linux-64/mpg123-1.32.9-hc50e24c_0.conda sha256: 39c4700fb3fbe403a77d8cc27352fa72ba744db487559d5d44bf8411bb4ea200 md5: c7f302fd11eeb0987a6a5e1f3aed6a21 diff --git a/examples/magic.lock b/examples/magic.lock index 8f2fb0cb08..394f550e23 100644 --- a/examples/magic.lock +++ b/examples/magic.lock @@ -42,11 +42,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021605-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025021605-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025021605-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021605-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025021705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025021705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021705-release.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-h2d0b736_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py311h64a7726_0.conda @@ -107,11 +107,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021605-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025021605-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025021605-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021605-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025021705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025021705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021705-release.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-ha32ae93_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py311h69ead2a_0.conda @@ -163,11 +163,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.48.0-h3f77e49_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021605-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025021605-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025021605-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021605-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021705-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025021705-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025021705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021705-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py311h7125741_0.conda @@ -1296,48 +1296,48 @@ packages: license_family: APACHE size: 280830 timestamp: 1736986295869 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021605-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021705-release.conda noarch: python - sha256: 8d17a03f813e447f27d96e652049521361f51252851c7b0b090a1ae5f1ad702e - md5: 29dc13c8596d4d976ea38e97cc485aaa + sha256: f357a97439076d8b14482639424613726c391ec4483d6be9129060d3e4760f21 + md5: 28ccc6bbdfa41f375ee72fe1c1c10b2e depends: - - max-core ==25.2.0.dev2025021605 release - - max-python ==25.2.0.dev2025021605 release - - mojo-jupyter ==25.2.0.dev2025021605 release - - mblack ==25.2.0.dev2025021605 release + - max-core ==25.2.0.dev2025021705 release + - max-python ==25.2.0.dev2025021705 release + - mojo-jupyter ==25.2.0.dev2025021705 release + - mblack ==25.2.0.dev2025021705 release license: LicenseRef-Modular-Proprietary - size: 9902 - timestamp: 1739683043473 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025021605-release.conda - sha256: 6b546b5d53a8e0aa72ccce2bb75a530dad7e5ca5b6813b9e68371b1c3a136411 - md5: 6cf287624d18387d1a58b1845259e536 + size: 9900 + timestamp: 1739769476049 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025021705-release.conda + sha256: cb9400c54b963f03d04d6c843881380bd3112c30a8fbe9e48db931620bd1ebb8 + md5: 381af09e94b55adb4b8409e9607f03df depends: - - mblack ==25.2.0.dev2025021605 release + - mblack ==25.2.0.dev2025021705 release license: LicenseRef-Modular-Proprietary - size: 243509224 - timestamp: 1739683043473 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025021605-release.conda - sha256: 57bb110eee9302d9650ba71c83a7e65944811358183041c71128c031d6af17e8 - md5: b37ce2fdf9411473e542c4aef22b08b0 + size: 243571245 + timestamp: 1739769478481 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025021705-release.conda + sha256: f7dd60e39525b12a5f74d890a41aa8d3343d3cce4cea55eadf2f6cc3c3d11aa1 + md5: 257b6f0919811bb28c1ba9da36b42943 depends: - - mblack ==25.2.0.dev2025021605 release + - mblack ==25.2.0.dev2025021705 release license: LicenseRef-Modular-Proprietary - size: 246219820 - timestamp: 1739682972823 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025021605-release.conda - sha256: 5d9e5a5f4d195f8d13531c682eece0f7c4554eca968ae717fd38b051e42ca76b - md5: 2940690b37e100dbd416713e70d36b51 + size: 246181682 + timestamp: 1739769476049 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025021705-release.conda + sha256: 1a5234bedb53af4c11a05e86a972d252365eb0fb4e9eadb07601a97c13a3e580 + md5: 8a274c64491be70ab860f2749cdbded8 depends: - - mblack ==25.2.0.dev2025021605 release + - mblack ==25.2.0.dev2025021705 release license: LicenseRef-Modular-Proprietary - size: 211901175 - timestamp: 1739684321195 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025021605-release.conda + size: 211871421 + timestamp: 1739770743850 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025021705-release.conda noarch: python - sha256: bb8a384f20cf6d0d9ab93c2e523a2d2250c3757ae3794ec83e9ee4fbb783e4e4 - md5: 82b39a005860f9015b618176c8f59b3f + sha256: 5500aa0ced5c8d2b313782ac67518891c5fbaa99e4ed84aaa20f1bcd181364be + md5: 21ad39ec09ec7dd9be8dd6b104a65b6c depends: - - max-core ==25.2.0.dev2025021605 release + - max-core ==25.2.0.dev2025021705 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1375,14 +1375,14 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 120548836 - timestamp: 1739683043473 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025021605-release.conda + size: 120661171 + timestamp: 1739769478481 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025021705-release.conda noarch: python - sha256: 88ef2f35b6e268dcfd1eb266d133c3418a225c145e980d2cad70957e144c3f82 - md5: 18662036dae8461d666b56497fa00e02 + sha256: 08e02fd88975d86206410e2573a460158f71eafa431df1631359e004ce005163 + md5: c3b325b2c14c3ae2c82d37894daef2f4 depends: - - max-core ==25.2.0.dev2025021605 release + - max-core ==25.2.0.dev2025021705 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1420,14 +1420,14 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 123282288 - timestamp: 1739682972823 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025021605-release.conda + size: 123214020 + timestamp: 1739769476049 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025021705-release.conda noarch: python - sha256: e658c2faa000d560facb99de203e057915eca643cd06d0712e7bbacf2572c1f0 - md5: d8dc7097ab701ea252026d8252950b5a + sha256: 686735af9671c174ad98929602236992efdcbe682961ba5637f7babaa7779414 + md5: 3163d7c7ac36d35f3a1722ca6f24c802 depends: - - max-core ==25.2.0.dev2025021605 release + - max-core ==25.2.0.dev2025021705 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1465,12 +1465,12 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 109939744 - timestamp: 1739684321195 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021605-release.conda + size: 110070584 + timestamp: 1739770743850 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021705-release.conda noarch: python - sha256: bd1475d1165ab9effc0aee394668f128fe967bcf1f13e2f9769e9bb6c19ec4dc - md5: 6a58064d374fd7fda171ea3c9fe6a706 + sha256: 13a8735d351148c95ff8030ea49010bc4cda358a5faf241689db15197bdaf7fb + md5: f595aa1a6832846493d7c9cb48bd0f5d depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -1481,20 +1481,20 @@ packages: - typing_extensions >=v4.12.2 - python license: MIT - size: 130851 - timestamp: 1739683043473 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021605-release.conda + size: 130855 + timestamp: 1739769476049 +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021705-release.conda noarch: python - sha256: 436a149c479fe5d1e935f13497e48c04f7df11c6c84c1c803af433c239285ed8 - md5: a8c4c9538b073aec60407f390562f174 + sha256: ff89ce5074726958ff4cefe09966470947ab40ebc5e4bbe4f8e3fe8c4d5d7263 + md5: c7ae6ef843f549adb530cff568cef5bc depends: - - max-core ==25.2.0.dev2025021605 release + - max-core ==25.2.0.dev2025021705 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22987 - timestamp: 1739683043473 + size: 22994 + timestamp: 1739769476049 - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda sha256: 1895f47b7d68581a6facde5cb13ab8c2764c2e53a76bd746f8f98910dc4e08fe md5: 29097e7ea634a45cc5386b95cac6568f diff --git a/examples/operators/magic.lock b/examples/operators/magic.lock index 8296be6643..b1f0849038 100644 --- a/examples/operators/magic.lock +++ b/examples/operators/magic.lock @@ -45,12 +45,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.5-h0d44e9d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/llvm-openmp-19.1.7-h024ca30_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021605-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025021605-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025021605-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025021705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025021705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021705-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-2024.2.2-ha957f24_16.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021705-release.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-h2d0b736_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda @@ -112,11 +112,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021605-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025021605-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025021605-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021605-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025021705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025021705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021705-release.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-ha32ae93_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda @@ -168,11 +168,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.48.0-h3f77e49_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021605-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025021605-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025021605-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021605-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021705-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025021705-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025021705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021705-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda @@ -1345,48 +1345,48 @@ packages: license_family: APACHE size: 280830 timestamp: 1736986295869 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021605-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021705-release.conda noarch: python - sha256: 8d17a03f813e447f27d96e652049521361f51252851c7b0b090a1ae5f1ad702e - md5: 29dc13c8596d4d976ea38e97cc485aaa + sha256: f357a97439076d8b14482639424613726c391ec4483d6be9129060d3e4760f21 + md5: 28ccc6bbdfa41f375ee72fe1c1c10b2e depends: - - max-core ==25.2.0.dev2025021605 release - - max-python ==25.2.0.dev2025021605 release - - mojo-jupyter ==25.2.0.dev2025021605 release - - mblack ==25.2.0.dev2025021605 release + - max-core ==25.2.0.dev2025021705 release + - max-python ==25.2.0.dev2025021705 release + - mojo-jupyter ==25.2.0.dev2025021705 release + - mblack ==25.2.0.dev2025021705 release license: LicenseRef-Modular-Proprietary - size: 9902 - timestamp: 1739683043473 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025021605-release.conda - sha256: 6b546b5d53a8e0aa72ccce2bb75a530dad7e5ca5b6813b9e68371b1c3a136411 - md5: 6cf287624d18387d1a58b1845259e536 + size: 9900 + timestamp: 1739769476049 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025021705-release.conda + sha256: cb9400c54b963f03d04d6c843881380bd3112c30a8fbe9e48db931620bd1ebb8 + md5: 381af09e94b55adb4b8409e9607f03df depends: - - mblack ==25.2.0.dev2025021605 release + - mblack ==25.2.0.dev2025021705 release license: LicenseRef-Modular-Proprietary - size: 243509224 - timestamp: 1739683043473 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025021605-release.conda - sha256: 57bb110eee9302d9650ba71c83a7e65944811358183041c71128c031d6af17e8 - md5: b37ce2fdf9411473e542c4aef22b08b0 + size: 243571245 + timestamp: 1739769478481 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025021705-release.conda + sha256: f7dd60e39525b12a5f74d890a41aa8d3343d3cce4cea55eadf2f6cc3c3d11aa1 + md5: 257b6f0919811bb28c1ba9da36b42943 depends: - - mblack ==25.2.0.dev2025021605 release + - mblack ==25.2.0.dev2025021705 release license: LicenseRef-Modular-Proprietary - size: 246219820 - timestamp: 1739682972823 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025021605-release.conda - sha256: 5d9e5a5f4d195f8d13531c682eece0f7c4554eca968ae717fd38b051e42ca76b - md5: 2940690b37e100dbd416713e70d36b51 + size: 246181682 + timestamp: 1739769476049 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025021705-release.conda + sha256: 1a5234bedb53af4c11a05e86a972d252365eb0fb4e9eadb07601a97c13a3e580 + md5: 8a274c64491be70ab860f2749cdbded8 depends: - - mblack ==25.2.0.dev2025021605 release + - mblack ==25.2.0.dev2025021705 release license: LicenseRef-Modular-Proprietary - size: 211901175 - timestamp: 1739684321195 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025021605-release.conda + size: 211871421 + timestamp: 1739770743850 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025021705-release.conda noarch: python - sha256: bb8a384f20cf6d0d9ab93c2e523a2d2250c3757ae3794ec83e9ee4fbb783e4e4 - md5: 82b39a005860f9015b618176c8f59b3f + sha256: 5500aa0ced5c8d2b313782ac67518891c5fbaa99e4ed84aaa20f1bcd181364be + md5: 21ad39ec09ec7dd9be8dd6b104a65b6c depends: - - max-core ==25.2.0.dev2025021605 release + - max-core ==25.2.0.dev2025021705 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1424,14 +1424,14 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 120548836 - timestamp: 1739683043473 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025021605-release.conda + size: 120661171 + timestamp: 1739769478481 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025021705-release.conda noarch: python - sha256: 88ef2f35b6e268dcfd1eb266d133c3418a225c145e980d2cad70957e144c3f82 - md5: 18662036dae8461d666b56497fa00e02 + sha256: 08e02fd88975d86206410e2573a460158f71eafa431df1631359e004ce005163 + md5: c3b325b2c14c3ae2c82d37894daef2f4 depends: - - max-core ==25.2.0.dev2025021605 release + - max-core ==25.2.0.dev2025021705 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1469,14 +1469,14 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 123282288 - timestamp: 1739682972823 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025021605-release.conda + size: 123214020 + timestamp: 1739769476049 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025021705-release.conda noarch: python - sha256: e658c2faa000d560facb99de203e057915eca643cd06d0712e7bbacf2572c1f0 - md5: d8dc7097ab701ea252026d8252950b5a + sha256: 686735af9671c174ad98929602236992efdcbe682961ba5637f7babaa7779414 + md5: 3163d7c7ac36d35f3a1722ca6f24c802 depends: - - max-core ==25.2.0.dev2025021605 release + - max-core ==25.2.0.dev2025021705 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1514,12 +1514,12 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 109939744 - timestamp: 1739684321195 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021605-release.conda + size: 110070584 + timestamp: 1739770743850 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021705-release.conda noarch: python - sha256: bd1475d1165ab9effc0aee394668f128fe967bcf1f13e2f9769e9bb6c19ec4dc - md5: 6a58064d374fd7fda171ea3c9fe6a706 + sha256: 13a8735d351148c95ff8030ea49010bc4cda358a5faf241689db15197bdaf7fb + md5: f595aa1a6832846493d7c9cb48bd0f5d depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -1530,8 +1530,8 @@ packages: - typing_extensions >=v4.12.2 - python license: MIT - size: 130851 - timestamp: 1739683043473 + size: 130855 + timestamp: 1739769476049 - conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-2024.2.2-ha957f24_16.conda sha256: 77906b0acead8f86b489da46f53916e624897338770dbf70b04b8f673c9273c1 md5: 1459379c79dda834673426504d52b319 @@ -1546,18 +1546,18 @@ packages: license_family: Proprietary size: 124718448 timestamp: 1730231808335 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021605-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021705-release.conda noarch: python - sha256: 436a149c479fe5d1e935f13497e48c04f7df11c6c84c1c803af433c239285ed8 - md5: a8c4c9538b073aec60407f390562f174 + sha256: ff89ce5074726958ff4cefe09966470947ab40ebc5e4bbe4f8e3fe8c4d5d7263 + md5: c7ae6ef843f549adb530cff568cef5bc depends: - - max-core ==25.2.0.dev2025021605 release + - max-core ==25.2.0.dev2025021705 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22987 - timestamp: 1739683043473 + size: 22994 + timestamp: 1739769476049 - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda sha256: 1895f47b7d68581a6facde5cb13ab8c2764c2e53a76bd746f8f98910dc4e08fe md5: 29097e7ea634a45cc5386b95cac6568f diff --git a/examples/testing/magic.lock b/examples/testing/magic.lock index 8296be6643..b1f0849038 100644 --- a/examples/testing/magic.lock +++ b/examples/testing/magic.lock @@ -45,12 +45,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.5-h0d44e9d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/llvm-openmp-19.1.7-h024ca30_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021605-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025021605-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025021605-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025021705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025021705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021705-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-2024.2.2-ha957f24_16.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021705-release.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-h2d0b736_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda @@ -112,11 +112,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021605-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025021605-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025021605-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021605-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025021705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025021705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021705-release.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-ha32ae93_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda @@ -168,11 +168,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.48.0-h3f77e49_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021605-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025021605-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025021605-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021605-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021705-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025021705-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025021705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021705-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda @@ -1345,48 +1345,48 @@ packages: license_family: APACHE size: 280830 timestamp: 1736986295869 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021605-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021705-release.conda noarch: python - sha256: 8d17a03f813e447f27d96e652049521361f51252851c7b0b090a1ae5f1ad702e - md5: 29dc13c8596d4d976ea38e97cc485aaa + sha256: f357a97439076d8b14482639424613726c391ec4483d6be9129060d3e4760f21 + md5: 28ccc6bbdfa41f375ee72fe1c1c10b2e depends: - - max-core ==25.2.0.dev2025021605 release - - max-python ==25.2.0.dev2025021605 release - - mojo-jupyter ==25.2.0.dev2025021605 release - - mblack ==25.2.0.dev2025021605 release + - max-core ==25.2.0.dev2025021705 release + - max-python ==25.2.0.dev2025021705 release + - mojo-jupyter ==25.2.0.dev2025021705 release + - mblack ==25.2.0.dev2025021705 release license: LicenseRef-Modular-Proprietary - size: 9902 - timestamp: 1739683043473 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025021605-release.conda - sha256: 6b546b5d53a8e0aa72ccce2bb75a530dad7e5ca5b6813b9e68371b1c3a136411 - md5: 6cf287624d18387d1a58b1845259e536 + size: 9900 + timestamp: 1739769476049 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025021705-release.conda + sha256: cb9400c54b963f03d04d6c843881380bd3112c30a8fbe9e48db931620bd1ebb8 + md5: 381af09e94b55adb4b8409e9607f03df depends: - - mblack ==25.2.0.dev2025021605 release + - mblack ==25.2.0.dev2025021705 release license: LicenseRef-Modular-Proprietary - size: 243509224 - timestamp: 1739683043473 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025021605-release.conda - sha256: 57bb110eee9302d9650ba71c83a7e65944811358183041c71128c031d6af17e8 - md5: b37ce2fdf9411473e542c4aef22b08b0 + size: 243571245 + timestamp: 1739769478481 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025021705-release.conda + sha256: f7dd60e39525b12a5f74d890a41aa8d3343d3cce4cea55eadf2f6cc3c3d11aa1 + md5: 257b6f0919811bb28c1ba9da36b42943 depends: - - mblack ==25.2.0.dev2025021605 release + - mblack ==25.2.0.dev2025021705 release license: LicenseRef-Modular-Proprietary - size: 246219820 - timestamp: 1739682972823 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025021605-release.conda - sha256: 5d9e5a5f4d195f8d13531c682eece0f7c4554eca968ae717fd38b051e42ca76b - md5: 2940690b37e100dbd416713e70d36b51 + size: 246181682 + timestamp: 1739769476049 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025021705-release.conda + sha256: 1a5234bedb53af4c11a05e86a972d252365eb0fb4e9eadb07601a97c13a3e580 + md5: 8a274c64491be70ab860f2749cdbded8 depends: - - mblack ==25.2.0.dev2025021605 release + - mblack ==25.2.0.dev2025021705 release license: LicenseRef-Modular-Proprietary - size: 211901175 - timestamp: 1739684321195 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025021605-release.conda + size: 211871421 + timestamp: 1739770743850 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025021705-release.conda noarch: python - sha256: bb8a384f20cf6d0d9ab93c2e523a2d2250c3757ae3794ec83e9ee4fbb783e4e4 - md5: 82b39a005860f9015b618176c8f59b3f + sha256: 5500aa0ced5c8d2b313782ac67518891c5fbaa99e4ed84aaa20f1bcd181364be + md5: 21ad39ec09ec7dd9be8dd6b104a65b6c depends: - - max-core ==25.2.0.dev2025021605 release + - max-core ==25.2.0.dev2025021705 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1424,14 +1424,14 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 120548836 - timestamp: 1739683043473 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025021605-release.conda + size: 120661171 + timestamp: 1739769478481 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025021705-release.conda noarch: python - sha256: 88ef2f35b6e268dcfd1eb266d133c3418a225c145e980d2cad70957e144c3f82 - md5: 18662036dae8461d666b56497fa00e02 + sha256: 08e02fd88975d86206410e2573a460158f71eafa431df1631359e004ce005163 + md5: c3b325b2c14c3ae2c82d37894daef2f4 depends: - - max-core ==25.2.0.dev2025021605 release + - max-core ==25.2.0.dev2025021705 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1469,14 +1469,14 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 123282288 - timestamp: 1739682972823 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025021605-release.conda + size: 123214020 + timestamp: 1739769476049 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025021705-release.conda noarch: python - sha256: e658c2faa000d560facb99de203e057915eca643cd06d0712e7bbacf2572c1f0 - md5: d8dc7097ab701ea252026d8252950b5a + sha256: 686735af9671c174ad98929602236992efdcbe682961ba5637f7babaa7779414 + md5: 3163d7c7ac36d35f3a1722ca6f24c802 depends: - - max-core ==25.2.0.dev2025021605 release + - max-core ==25.2.0.dev2025021705 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1514,12 +1514,12 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 109939744 - timestamp: 1739684321195 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021605-release.conda + size: 110070584 + timestamp: 1739770743850 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021705-release.conda noarch: python - sha256: bd1475d1165ab9effc0aee394668f128fe967bcf1f13e2f9769e9bb6c19ec4dc - md5: 6a58064d374fd7fda171ea3c9fe6a706 + sha256: 13a8735d351148c95ff8030ea49010bc4cda358a5faf241689db15197bdaf7fb + md5: f595aa1a6832846493d7c9cb48bd0f5d depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -1530,8 +1530,8 @@ packages: - typing_extensions >=v4.12.2 - python license: MIT - size: 130851 - timestamp: 1739683043473 + size: 130855 + timestamp: 1739769476049 - conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-2024.2.2-ha957f24_16.conda sha256: 77906b0acead8f86b489da46f53916e624897338770dbf70b04b8f673c9273c1 md5: 1459379c79dda834673426504d52b319 @@ -1546,18 +1546,18 @@ packages: license_family: Proprietary size: 124718448 timestamp: 1730231808335 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021605-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021705-release.conda noarch: python - sha256: 436a149c479fe5d1e935f13497e48c04f7df11c6c84c1c803af433c239285ed8 - md5: a8c4c9538b073aec60407f390562f174 + sha256: ff89ce5074726958ff4cefe09966470947ab40ebc5e4bbe4f8e3fe8c4d5d7263 + md5: c7ae6ef843f549adb530cff568cef5bc depends: - - max-core ==25.2.0.dev2025021605 release + - max-core ==25.2.0.dev2025021705 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22987 - timestamp: 1739683043473 + size: 22994 + timestamp: 1739769476049 - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda sha256: 1895f47b7d68581a6facde5cb13ab8c2764c2e53a76bd746f8f98910dc4e08fe md5: 29097e7ea634a45cc5386b95cac6568f diff --git a/magic.lock b/magic.lock index 912da88e98..78e75d5ea6 100644 --- a/magic.lock +++ b/magic.lock @@ -43,11 +43,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/lit-19.1.7-pyhd8ed1ab_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021605-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025021605-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025021605-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021605-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025021705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025021705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021705-release.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-h2d0b736_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda @@ -109,11 +109,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/lit-19.1.7-pyhd8ed1ab_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021605-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025021605-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025021605-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021605-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025021705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025021705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021705-release.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-ha32ae93_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda @@ -166,11 +166,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/lit-19.1.7-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021605-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025021605-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025021605-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021605-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021605-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021705-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025021705-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025021705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021705-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda @@ -1308,48 +1308,48 @@ packages: license_family: APACHE size: 280830 timestamp: 1736986295869 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021605-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021705-release.conda noarch: python - sha256: 8d17a03f813e447f27d96e652049521361f51252851c7b0b090a1ae5f1ad702e - md5: 29dc13c8596d4d976ea38e97cc485aaa + sha256: f357a97439076d8b14482639424613726c391ec4483d6be9129060d3e4760f21 + md5: 28ccc6bbdfa41f375ee72fe1c1c10b2e depends: - - max-core ==25.2.0.dev2025021605 release - - max-python ==25.2.0.dev2025021605 release - - mojo-jupyter ==25.2.0.dev2025021605 release - - mblack ==25.2.0.dev2025021605 release + - max-core ==25.2.0.dev2025021705 release + - max-python ==25.2.0.dev2025021705 release + - mojo-jupyter ==25.2.0.dev2025021705 release + - mblack ==25.2.0.dev2025021705 release license: LicenseRef-Modular-Proprietary - size: 9902 - timestamp: 1739683043473 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025021605-release.conda - sha256: 6b546b5d53a8e0aa72ccce2bb75a530dad7e5ca5b6813b9e68371b1c3a136411 - md5: 6cf287624d18387d1a58b1845259e536 + size: 9900 + timestamp: 1739769476049 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025021705-release.conda + sha256: cb9400c54b963f03d04d6c843881380bd3112c30a8fbe9e48db931620bd1ebb8 + md5: 381af09e94b55adb4b8409e9607f03df depends: - - mblack ==25.2.0.dev2025021605 release + - mblack ==25.2.0.dev2025021705 release license: LicenseRef-Modular-Proprietary - size: 243509224 - timestamp: 1739683043473 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025021605-release.conda - sha256: 57bb110eee9302d9650ba71c83a7e65944811358183041c71128c031d6af17e8 - md5: b37ce2fdf9411473e542c4aef22b08b0 + size: 243571245 + timestamp: 1739769478481 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025021705-release.conda + sha256: f7dd60e39525b12a5f74d890a41aa8d3343d3cce4cea55eadf2f6cc3c3d11aa1 + md5: 257b6f0919811bb28c1ba9da36b42943 depends: - - mblack ==25.2.0.dev2025021605 release + - mblack ==25.2.0.dev2025021705 release license: LicenseRef-Modular-Proprietary - size: 246219820 - timestamp: 1739682972823 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025021605-release.conda - sha256: 5d9e5a5f4d195f8d13531c682eece0f7c4554eca968ae717fd38b051e42ca76b - md5: 2940690b37e100dbd416713e70d36b51 + size: 246181682 + timestamp: 1739769476049 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025021705-release.conda + sha256: 1a5234bedb53af4c11a05e86a972d252365eb0fb4e9eadb07601a97c13a3e580 + md5: 8a274c64491be70ab860f2749cdbded8 depends: - - mblack ==25.2.0.dev2025021605 release + - mblack ==25.2.0.dev2025021705 release license: LicenseRef-Modular-Proprietary - size: 211901175 - timestamp: 1739684321195 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025021605-release.conda + size: 211871421 + timestamp: 1739770743850 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025021705-release.conda noarch: python - sha256: bb8a384f20cf6d0d9ab93c2e523a2d2250c3757ae3794ec83e9ee4fbb783e4e4 - md5: 82b39a005860f9015b618176c8f59b3f + sha256: 5500aa0ced5c8d2b313782ac67518891c5fbaa99e4ed84aaa20f1bcd181364be + md5: 21ad39ec09ec7dd9be8dd6b104a65b6c depends: - - max-core ==25.2.0.dev2025021605 release + - max-core ==25.2.0.dev2025021705 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1387,14 +1387,14 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 120548836 - timestamp: 1739683043473 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025021605-release.conda + size: 120661171 + timestamp: 1739769478481 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025021705-release.conda noarch: python - sha256: 88ef2f35b6e268dcfd1eb266d133c3418a225c145e980d2cad70957e144c3f82 - md5: 18662036dae8461d666b56497fa00e02 + sha256: 08e02fd88975d86206410e2573a460158f71eafa431df1631359e004ce005163 + md5: c3b325b2c14c3ae2c82d37894daef2f4 depends: - - max-core ==25.2.0.dev2025021605 release + - max-core ==25.2.0.dev2025021705 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1432,14 +1432,14 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 123282288 - timestamp: 1739682972823 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025021605-release.conda + size: 123214020 + timestamp: 1739769476049 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025021705-release.conda noarch: python - sha256: e658c2faa000d560facb99de203e057915eca643cd06d0712e7bbacf2572c1f0 - md5: d8dc7097ab701ea252026d8252950b5a + sha256: 686735af9671c174ad98929602236992efdcbe682961ba5637f7babaa7779414 + md5: 3163d7c7ac36d35f3a1722ca6f24c802 depends: - - max-core ==25.2.0.dev2025021605 release + - max-core ==25.2.0.dev2025021705 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1477,12 +1477,12 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 109939744 - timestamp: 1739684321195 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021605-release.conda + size: 110070584 + timestamp: 1739770743850 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021705-release.conda noarch: python - sha256: bd1475d1165ab9effc0aee394668f128fe967bcf1f13e2f9769e9bb6c19ec4dc - md5: 6a58064d374fd7fda171ea3c9fe6a706 + sha256: 13a8735d351148c95ff8030ea49010bc4cda358a5faf241689db15197bdaf7fb + md5: f595aa1a6832846493d7c9cb48bd0f5d depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -1493,20 +1493,20 @@ packages: - typing_extensions >=v4.12.2 - python license: MIT - size: 130851 - timestamp: 1739683043473 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021605-release.conda + size: 130855 + timestamp: 1739769476049 +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021705-release.conda noarch: python - sha256: 436a149c479fe5d1e935f13497e48c04f7df11c6c84c1c803af433c239285ed8 - md5: a8c4c9538b073aec60407f390562f174 + sha256: ff89ce5074726958ff4cefe09966470947ab40ebc5e4bbe4f8e3fe8c4d5d7263 + md5: c7ae6ef843f549adb530cff568cef5bc depends: - - max-core ==25.2.0.dev2025021605 release + - max-core ==25.2.0.dev2025021705 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22987 - timestamp: 1739683043473 + size: 22994 + timestamp: 1739769476049 - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda sha256: 1895f47b7d68581a6facde5cb13ab8c2764c2e53a76bd746f8f98910dc4e08fe md5: 29097e7ea634a45cc5386b95cac6568f From 72ccf3bf7f20bbafe5840e7a7a93a43f1bed15e7 Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Mon, 17 Feb 2025 18:33:46 -0800 Subject: [PATCH 405/509] [mojo-lang] Improve error messages for constant lowering failures a lot. MLIR aggressively loses location information for constants :-( due to stuff in FoldUtils. It would be really great to fix this (and this is my personal fault from like 6 years ago, sigh) but we can still do better at finding location information when needed. While here, fix the lowering logic to not puke out generic nonsense about lowering failures. Before: ``` $ mojo open-source/mojo/stdlib/test/builtin/test_uint_error.mojo :0: error: integer value -1 is negative, but is being converted to an unsigned type :0: error: failed to legalize operation 'kgen.param.constant' that was explicitly marked illegal :0: note: see current operation: %18 = "kgen.param.constant"() {value = #kgen.int_literal_convert<:!kgen.int_literal -1, true> : index} : () -> index mojo: error: failed to lower module to LLVM IR for archive compilation, run LowerToLLVMPipeline failed ``` After: ``` $ mojo open-source/mojo/stdlib/test/builtin/test_uint_error.mojo open-source/mojo/stdlib/test/builtin/test_uint_error.mojo:23:15: error: integer value -1 is negative, but is being converted to an unsigned type print(UInt(-1)) ^ mojo: error: failed to lower module to LLVM IR for archive compilation, run LowerToLLVMPipeline failed ``` I'm not sure what causes that last error but it should also be fixed at some point. MODULAR_ORIG_COMMIT_REV_ID: 9d65c268c03f4df6eb6617eefd7ea30deed3a7ed --- stdlib/test/builtin/test_uint_error.mojo | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/stdlib/test/builtin/test_uint_error.mojo b/stdlib/test/builtin/test_uint_error.mojo index 74d20652b8..4fce79162e 100644 --- a/stdlib/test/builtin/test_uint_error.mojo +++ b/stdlib/test/builtin/test_uint_error.mojo @@ -19,7 +19,7 @@ fn main(): - # CHECK: integer value -1 is negative, but is being converted to an unsigned type + # CHECK: test_uint_error.mojo:23:15: error: integer value -1 is negative, but is being converted to an unsigned type print(UInt(-1)) # CHECK-NOT: is never reached print("is never reached") From c020f10fa964febd80b85b969bb0acb237e198a0 Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Mon, 17 Feb 2025 19:12:24 -0800 Subject: [PATCH 406/509] [mojo-lang] Send more stuff down the @always_inline("builtin") path This reduces the load on the `inlineFunctionCallIntoPValueIfPossible` function, which is using the interpreter at parser time which is cursed. This doesn't completely eliminate it though. This also adopts this form of inlining on more literal stuff. MODULAR_ORIG_COMMIT_REV_ID: 334a50f69ed2b278f748b4edee6eff1501b1a824 --- stdlib/src/builtin/float_literal.mojo | 2 +- stdlib/src/builtin/string_literal.mojo | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/stdlib/src/builtin/float_literal.mojo b/stdlib/src/builtin/float_literal.mojo index 0c7c2f3040..97cf9265bb 100644 --- a/stdlib/src/builtin/float_literal.mojo +++ b/stdlib/src/builtin/float_literal.mojo @@ -48,7 +48,7 @@ struct FloatLiteral( # Constructors # ===------------------------------------------------------------------===# - @always_inline("nodebug") + @always_inline("builtin") @implicit fn __init__(out self, value: Self.fp_type): """Create a FloatLiteral value from a kgen.float_literal value. diff --git a/stdlib/src/builtin/string_literal.mojo b/stdlib/src/builtin/string_literal.mojo index ecbfae55a8..15c9d40764 100644 --- a/stdlib/src/builtin/string_literal.mojo +++ b/stdlib/src/builtin/string_literal.mojo @@ -70,7 +70,7 @@ struct StringLiteral( # Life cycle methods # ===-------------------------------------------------------------------===# - @always_inline("nodebug") + @always_inline("builtin") @implicit fn __init__(out self, value: Self.type): """Create a string literal from a builtin string type. From ff2422fd26eb6248b6aaeebb32d92cde883c861f Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Mon, 17 Feb 2025 19:24:36 -0800 Subject: [PATCH 407/509] [mojo-lang] Remove IntLiteralBitWidthOp and related stuff. This removes this op which was added speculatively and not used at all, excise it to simplify things. MODULAR_ORIG_COMMIT_REV_ID: f94ebc2c22bc42c5ffd05cbfe2dc8e75e3b01d8c --- stdlib/src/builtin/int_literal.mojo | 9 --------- stdlib/test/builtin/test_int_literal.mojo | 8 -------- 2 files changed, 17 deletions(-) diff --git a/stdlib/src/builtin/int_literal.mojo b/stdlib/src/builtin/int_literal.mojo index 701cbca08d..2eb6d35da3 100644 --- a/stdlib/src/builtin/int_literal.mojo +++ b/stdlib/src/builtin/int_literal.mojo @@ -720,15 +720,6 @@ struct IntLiteral( # Methods # ===-------------------------------------------------------------------===# - @always_inline("nodebug") - fn _bit_width(self) -> IntLiteral: - """Get the (signed) bit width of the IntLiteral. - - Returns: - The bit width. - """ - return __mlir_op.`kgen.int_literal.bit_width`(self.value) - @always_inline("builtin") fn __index__(self) -> __mlir_type.index: """Convert from IntLiteral to index. diff --git a/stdlib/test/builtin/test_int_literal.mojo b/stdlib/test/builtin/test_int_literal.mojo index f39dd53625..cca82fd158 100644 --- a/stdlib/test/builtin/test_int_literal.mojo +++ b/stdlib/test/builtin/test_int_literal.mojo @@ -78,13 +78,6 @@ def test_mod(): assert_equal(IntLiteral.__mod__(-3, 2), 1) -def test_bit_width(): - assert_equal((0)._bit_width(), 1) - assert_equal((-1)._bit_width(), 1) - assert_equal((255)._bit_width(), 9) - assert_equal((-256)._bit_width(), 9) - - def test_abs(): assert_equal(IntLiteral.__abs__(-5), 5) assert_equal(IntLiteral.__abs__(2), 2) @@ -165,7 +158,6 @@ def main(): test_floordiv() test_mod() test_divmod() - test_bit_width() test_abs() test_indexer() test_bool() From 939375e1396d2b93a5cea735ea6cd99f34978381 Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Mon, 17 Feb 2025 20:36:24 -0800 Subject: [PATCH 408/509] [mojo-lang] Move integer literal binops into the parameter domain. This is needed to get things like "1+4" and "-4" to fold with the builtin parameter inliner, which is important for general code. MODULAR_ORIG_COMMIT_REV_ID: 552e6da424c6972cf8084a663dbc7b850ab1ef12 --- stdlib/src/builtin/int_literal.mojo | 138 +++------------------------- 1 file changed, 13 insertions(+), 125 deletions(-) diff --git a/stdlib/src/builtin/int_literal.mojo b/stdlib/src/builtin/int_literal.mojo index 2eb6d35da3..5710187b3f 100644 --- a/stdlib/src/builtin/int_literal.mojo +++ b/stdlib/src/builtin/int_literal.mojo @@ -158,7 +158,7 @@ struct IntLiteral( pred = __mlir_attr.`#kgen` ](self.value, rhs.value) - @always_inline("nodebug") + @always_inline("builtin") fn __pos__(self) -> Self: """Return +self. @@ -167,7 +167,7 @@ struct IntLiteral( """ return self - @always_inline("nodebug") + @always_inline("builtin") fn __neg__(self) -> Self: """Return -self. @@ -190,7 +190,7 @@ struct IntLiteral( var remainder: Self = self - (quotient * rhs) return quotient, remainder - @always_inline("nodebug") + @always_inline("builtin") fn __invert__(self) -> Self: """Return ~self. @@ -199,7 +199,7 @@ struct IntLiteral( """ return self ^ (Self() - Self._one) - @always_inline("nodebug") + @always_inline("builtin") fn __add__(self, rhs: Self) -> Self: """Return `self + rhs`. @@ -215,7 +215,7 @@ struct IntLiteral( ](self.value, rhs.value) ) - @always_inline("nodebug") + @always_inline("builtin") fn __sub__(self, rhs: Self) -> Self: """Return `self - rhs`. @@ -231,7 +231,7 @@ struct IntLiteral( ](self.value, rhs.value) ) - @always_inline("nodebug") + @always_inline("builtin") fn __mul__(self, rhs: Self) -> Self: """Return `self * rhs`. @@ -325,7 +325,7 @@ struct IntLiteral( ](self.value, rhs.value) ) - @always_inline("nodebug") + @always_inline("builtin") fn __and__(self, rhs: Self) -> Self: """Return `self & rhs`. @@ -341,7 +341,7 @@ struct IntLiteral( ](self.value, rhs.value) ) - @always_inline("nodebug") + @always_inline("builtin") fn __xor__(self, rhs: Self) -> Self: """Return `self ^ rhs`. @@ -357,7 +357,7 @@ struct IntLiteral( ](self.value, rhs.value) ) - @always_inline("nodebug") + @always_inline("builtin") fn __or__(self, rhs: Self) -> Self: """Return `self | rhs`. @@ -458,118 +458,6 @@ struct IntLiteral( """ self = self | rhs - # ===-------------------------------------------------------------------===# - # Reversed operations - # ===-------------------------------------------------------------------===# - - @always_inline("nodebug") - fn __radd__(self, value: Self) -> Self: - """Return `value + self`. - - Args: - value: The other value. - - Returns: - `value + self`. - """ - return self + value - - @always_inline("nodebug") - fn __rsub__(self, value: Self) -> Self: - """Return `value - self`. - - Args: - value: The other value. - - Returns: - `value - self`. - """ - return value - self - - @always_inline("nodebug") - fn __rmul__(self, value: Self) -> Self: - """Return `value * self`. - - Args: - value: The other value. - - Returns: - `value * self`. - """ - return self * value - - @always_inline("nodebug") - fn __rfloordiv__(self, value: Self) -> Self: - """Return `value // self`. - - Args: - value: The other value. - - Returns: - `value // self`. - """ - return value // self - - @always_inline("nodebug") - fn __rlshift__(self, value: Self) -> Self: - """Return `value << self`. - - Args: - value: The other value. - - Returns: - `value << self`. - """ - return value << self - - @always_inline("nodebug") - fn __rrshift__(self, value: Self) -> Self: - """Return `value >> self`. - - Args: - value: The other value. - - Returns: - `value >> self`. - """ - return value >> self - - @always_inline("nodebug") - fn __rand__(self, value: Self) -> Self: - """Return `value & self`. - - Args: - value: The other value. - - Returns: - `value & self`. - """ - return value & self - - @always_inline("nodebug") - fn __ror__(self, value: Self) -> Self: - """Return `value | self`. - - Args: - value: The other value. - - Returns: - `value | self`. - """ - return value | self - - @always_inline("nodebug") - fn __rxor__(self, value: Self) -> Self: - """Return `value ^ self`. - - Args: - value: The other value. - - Returns: - `value ^ self`. - """ - return value ^ self - # ===-------------------------------------------------------------------===# # Trait implementations # ===-------------------------------------------------------------------===# @@ -601,7 +489,7 @@ struct IntLiteral( """ return self.__index__() - @always_inline("nodebug") + @always_inline("builtin") fn __as_int__(self) -> Int: """Implicitly convert to an Int. @@ -641,7 +529,7 @@ struct IntLiteral( """ return self - @always_inline("nodebug") + @always_inline("builtin") fn __floor__(self) -> Self: """Return the floor of the IntLiteral value, which is itself. @@ -650,7 +538,7 @@ struct IntLiteral( """ return self - @always_inline("nodebug") + @always_inline("builtin") fn __round__(self) -> Self: """Return the rounded value of the IntLiteral value, which is itself. @@ -659,7 +547,7 @@ struct IntLiteral( """ return self - @always_inline("nodebug") + @always_inline("builtin") fn __trunc__(self) -> Self: """Return the truncated of the IntLiteral value, which is itself. From 72ed1ac86be8adce9066ad78151bd81d40280455 Mon Sep 17 00:00:00 2001 From: modularbot Date: Tue, 18 Feb 2025 17:01:33 +0000 Subject: [PATCH 409/509] Update lockfiles to point to latest nightly version: 25.2.0.dev2025021805 --- examples/life/magic.lock | 867 ++++++++++++++++++++++++++-------- examples/magic.lock | 319 ++++++------- examples/operators/magic.lock | 425 ++++++++--------- examples/testing/magic.lock | 425 ++++++++--------- magic.lock | 319 ++++++------- 5 files changed, 1411 insertions(+), 944 deletions(-) diff --git a/examples/life/magic.lock b/examples/life/magic.lock index 607b2b8054..3a041cc133 100644 --- a/examples/life/magic.lock +++ b/examples/life/magic.lock @@ -51,7 +51,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-28_he106b2a_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libdb-6.2.32-h9c3ff4c_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.23-h4ddbbb0_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libdrm-2.4.124-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libegl-1.7.0-ha4b6fd6_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libflac-1.4.3-h59595ed_0.conda @@ -68,7 +70,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libglx-1.7.0-ha4b6fd6_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h77fa898_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgpg-error-1.51-hbd13f7d_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-hd590300_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h4ce23a2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-28_h7ac8fdf_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda @@ -77,6 +79,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libogg-1.3.5-h4ab18f5_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.28-pthreads_h94d23a6_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopus-1.3.1-h7f98852_1.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libpciaccess-0.18-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.46-h943b412_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsentencepiece-0.2.0-h8e10757_10.conda @@ -87,18 +90,24 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsystemd0-257.3-h3dc2cb9_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hd9ff511_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libudev1-257.3-h9a4d06a_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libunwind-1.6.2-h9c3ff4c_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/liburing-2.9-h84d6215_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libusb-1.0.27-h520f47e_100.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libvorbis-1.3.7-h9c3ff4c_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.5.0-h851e524_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxkbcommon-1.8.0-hc4a0caf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.5-h8d12d68_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.10.0-h5888daf_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025021705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025021705-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021705-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025021805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025021805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021805-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/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda @@ -121,10 +130,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.1-py312hbf22597_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/rav1e-0.6.6-he8a937b_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/sdl2-2.30.10-h63c27ac_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sdl2-2.32.50-h9b8e6db_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/sdl2_image-2.8.2-h06ee604_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/sdl2_mixer-2.6.3-h8830914_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/sdl2_ttf-2.24.0-h287479f_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sdl3-3.2.4-h3083f51_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-0.2.0-hc8f76dd_10.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-python-0.2.0-py312hb6b8a2b_10.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-spm-0.2.0-h8e10757_10.conda @@ -136,14 +146,18 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/wayland-1.23.1-h3e06ad9_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xkeyboard-config-2.43-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libice-1.1.2-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libsm-1.2.5-he73a12e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libx11-1.8.11-h4f16b4b_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxcursor-1.2.3-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxext-1.3.6-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxfixes-6.0.1-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrender-0.9.12-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxscrnsaver-1.2.4-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda @@ -187,12 +201,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libasprintf-0.23.1-h5e0f5ae_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libasprintf-devel-0.23.1-h5e0f5ae_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libavif16-1.1.1-h3b0c220_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-29_h1a9f1db_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-30_h1a9f1db_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcap-2.71-h51d75a7_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-29_hab92f65_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-30_hab92f65_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libdb-6.2.32-h01db608_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libdeflate-1.23-h5e3c512_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libdrm-2.4.124-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20250104-pl5321h976ea20_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libegl-1.7.0-hd24410f_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.6.4-h5ad3122_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.4.6-he21f813_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libflac-1.4.3-h2f0025b_0.conda @@ -209,15 +225,16 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libglx-1.7.0-hd24410f_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgpg-error-1.51-h05609ea_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libiconv-1.17-h31becfc_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libiconv-1.18-hc99b53d_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libjpeg-turbo-3.0.0-h31becfc_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-29_h411afd4_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-30_h411afd4_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.4-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libmad-0.15.1b-hb4cce97_1001.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libogg-1.3.5-h0b9eccb_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.28-pthreads_h9d3fd7e_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.29-pthreads_h9d3fd7e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopus-1.3.1-hf897c2e_1.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpciaccess-0.18-h31becfc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.46-hec79eb8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.3-h44a3b7b_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsentencepiece-0.2.0-h6164ad9_10.conda @@ -228,18 +245,24 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsystemd0-257.3-h27834fc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.0-h88f7998_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libudev1-257.3-h1187dce_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libunwind-1.6.2-h01db608_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liburing-2.9-h17cf362_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libusb-1.0.27-hfa5f0b2_100.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libvorbis-1.3.7-h01db608_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libwebp-base-1.5.0-h0886dbf_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcb-1.17.0-h262b8f6_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxkbcommon-1.8.0-h2ef6bd0_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.5-h2e0c361_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.10.0-h5ad3122_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025021705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025021705-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021705-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025021805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025021805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021805-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/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-ha32ae93_3.conda @@ -262,10 +285,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyzmq-26.2.1-py312h2427ae1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/rav1e-0.6.6-h1d8f897_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8fc344f_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sdl2-2.30.10-h93e764a_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sdl2-2.32.50-h7851d19_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sdl2_image-2.8.2-hd95cb85_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sdl2_mixer-2.6.3-h422cae6_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sdl2_ttf-2.24.0-hb1608df_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sdl3-3.2.4-h9cc03ad_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-0.2.0-h6c1b121_10.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-python-0.2.0-py312h197ff68_10.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-spm-0.2.0-h6164ad9_10.conda @@ -277,10 +301,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/wayland-1.23.1-h698ed42_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xkeyboard-config-2.43-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libice-1.1.2-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libsm-1.2.5-h0808dbd_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libx11-1.8.11-hca56bd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxau-1.0.12-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxcursor-1.2.3-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxdmcp-1.1.5-h57736b2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxext-1.3.6-h57736b2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxfixes-6.0.1-h57736b2_0.conda @@ -296,6 +323,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/dav1d-1.2.1-hb547adb_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/dbus-1.13.6-h3818c69_3.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/expat-2.6.4-h286801f_0.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 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 @@ -320,8 +349,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libasprintf-0.23.1-h493aca8_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libasprintf-devel-0.23.1-h493aca8_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libavif16-1.1.1-h45b7238_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-29_h10e41b3_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-29_hb3479ef_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-30_h10e41b3_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-30_hb3479ef_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.23-hec38601_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda @@ -333,15 +362,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libglib-2.82.2-hdff4504_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.17-h0d3ecfb_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.18-hfe07756_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libintl-0.23.1-h493aca8_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libintl-devel-0.23.1-h493aca8_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.0.0-hb547adb_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-29_hc9a63f6_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-30_hc9a63f6_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.4-h39f12f2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libmad-0.15.1b-h1a8c8d9_1001.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libogg-1.3.5-h99b78c6_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.28-openmp_hf332438_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.29-openmp_hf332438_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopus-1.3.1-h27ca646_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.46-h3783ad8_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.3-h3bd63a1_1.conda @@ -350,15 +379,16 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.48.0-h3f77e49_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-h551f018_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libusb-1.0.27-h93a5062_100.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libvorbis-1.3.7-h9f76cd9_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.5.0-h2471fea_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021705-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025021705-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025021705-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021705-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021805-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025021805-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025021805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021805-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/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda @@ -379,10 +409,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.1-py312hf4875e0_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/rav1e-0.6.6-h69fbcac_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h92ec313_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sdl2-2.30.10-h994913f_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sdl2-2.32.50-h994913f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sdl2_image-2.8.2-h376e2e1_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sdl2_mixer-2.6.3-h4fe3bdc_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sdl2_ttf-2.24.0-h443c5de_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sdl3-3.2.4-he842692_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-0.2.0-h22a84ea_10.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-python-0.2.0-py312h155166a_10.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-spm-0.2.0-he13a0af_10.conda @@ -723,6 +754,18 @@ packages: license_family: GPL size: 672759 timestamp: 1640113663539 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/dbus-1.13.6-h3818c69_3.tar.bz2 + sha256: fb21c1e677b43f5de8462f15bfbd0dce271cfe60cf1e6df50bc057b11feb52e1 + md5: 23730a06679644276233a5894eb2ef00 + depends: + - expat >=2.4.2,<3.0a0 + - libglib >=2.70.2,<3.0a0 + arch: arm64 + platform: osx + license: GPL-2.0-or-later + license_family: GPL + size: 574595 + timestamp: 1640112246560 - conda: https://conda.anaconda.org/conda-forge/linux-64/expat-2.6.4-h5888daf_0.conda sha256: 1848c7db9e264e3b8036ee133d570dd880422983cd20dd9585a505289606d276 md5: 1d6afef758879ef5ee78127eb4cd2c4a @@ -748,6 +791,18 @@ packages: license_family: MIT size: 130354 timestamp: 1730967212801 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/expat-2.6.4-h286801f_0.conda + sha256: e621a088b762a8aa99bd8f3ef10e2efe923713bc476babb90e7919f6c13a358b + md5: a37ffeecc1b8a62205bdd8319652758b + depends: + - __osx >=11.0 + - libexpat 2.6.4 h286801f_0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 124765 + timestamp: 1730967188116 - conda: https://conda.anaconda.org/conda-forge/linux-64/fluidsynth-2.3.7-hd992666_0.conda sha256: 0bf26d25ae79e6f5f01a49a00e9ba3b60b10dd4c12ec43bdba51055c26bc9dd6 md5: dd6c7b8a1b217ef7522ca987c465651d @@ -1548,48 +1603,49 @@ packages: - blas =2.128=openblas - liblapack =3.9.0=28*_openblas - liblapacke =3.9.0=28*_openblas + - mkl <2025 arch: x86_64 platform: linux license: BSD-3-Clause license_family: BSD size: 16621 timestamp: 1738114033763 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-29_h1a9f1db_openblas.conda - build_number: 29 - sha256: 973d85867efe198eeda6d01c73258b3ffd2d1bd227c18b663fe6a1fab292e0f5 - md5: e98e99f1ceb36f52504bb122435756c5 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-30_h1a9f1db_openblas.conda + build_number: 30 + sha256: 50fc3d327a95a604120715e14447b497bf52b7b13de556f068610c6f34f95da2 + md5: f62b3030cc0c37b06cd6b7e771d99be9 depends: - - libopenblas >=0.3.28,<0.3.29.0a0 - - libopenblas >=0.3.28,<1.0a0 + - libopenblas >=0.3.29,<0.3.30.0a0 + - libopenblas >=0.3.29,<1.0a0 constrains: - - blas =2.129=openblas - - libcblas =3.9.0=29*_openblas - - liblapacke =3.9.0=29*_openblas - - liblapack =3.9.0=29*_openblas + - libcblas =3.9.0=30*_openblas + - blas =2.130=openblas + - liblapacke =3.9.0=30*_openblas + - liblapack =3.9.0=30*_openblas arch: aarch64 platform: linux license: BSD-3-Clause license_family: BSD - size: 16884 - timestamp: 1739426012764 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-29_h10e41b3_openblas.conda - build_number: 29 - sha256: a966b39403203dfe122e2eefe9f3a04b353dc7c2fa76703f0d78fddc4e849704 - md5: 6ebbed2244408eca4f7569b532f813bd - depends: - - libopenblas >=0.3.28,<0.3.29.0a0 - - libopenblas >=0.3.28,<1.0a0 + size: 16841 + timestamp: 1739836305440 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-30_h10e41b3_openblas.conda + build_number: 30 + sha256: efdb82267966dff85123334ed0f7f4773ab4b093187c5495f2f92f892e2542d4 + md5: 1317dcfcde16781b5d446bfb4c81b848 + depends: + - libopenblas >=0.3.29,<0.3.30.0a0 + - libopenblas >=0.3.29,<1.0a0 constrains: - - liblapacke =3.9.0=29*_openblas - - libcblas =3.9.0=29*_openblas - - blas =2.129=openblas - - liblapack =3.9.0=29*_openblas + - libcblas =3.9.0=30*_openblas + - liblapack =3.9.0=30*_openblas + - blas =2.130=openblas + - liblapacke =3.9.0=30*_openblas arch: arm64 platform: osx license: BSD-3-Clause license_family: BSD - size: 17046 - timestamp: 1739426231872 + size: 17013 + timestamp: 1739836593880 - conda: https://conda.anaconda.org/conda-forge/linux-64/libcap-2.71-h39aace5_0.conda sha256: 2bbefac94f4ab8ff7c64dc843238b6c8edcc9ff1f2b5a0a48407a904dc7ccfb2 md5: dd19e4e3043f6948bd7454b946ee0983 @@ -1625,44 +1681,45 @@ packages: - blas =2.128=openblas - liblapack =3.9.0=28*_openblas - liblapacke =3.9.0=28*_openblas + - mkl <2025 arch: x86_64 platform: linux license: BSD-3-Clause license_family: BSD size: 16539 timestamp: 1738114043618 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-29_hab92f65_openblas.conda - build_number: 29 - sha256: a7ecf68634582e8291a3ce76836394a87c38e684255b2c1514dec0aeddcb2004 - md5: 8dd4788ae5e492c771c5b51661ac9102 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-30_hab92f65_openblas.conda + build_number: 30 + sha256: 878bf1d1b75c9db13cd16486d880228c163b0fe36911f8bcece79a4fd2583b44 + md5: b3b76e1a06d0f89ca5c24935b0541510 depends: - - libblas 3.9.0 29_h1a9f1db_openblas + - libblas 3.9.0 30_h1a9f1db_openblas constrains: - - blas =2.129=openblas - - liblapacke =3.9.0=29*_openblas - - liblapack =3.9.0=29*_openblas + - blas =2.130=openblas + - liblapacke =3.9.0=30*_openblas + - liblapack =3.9.0=30*_openblas arch: aarch64 platform: linux license: BSD-3-Clause license_family: BSD - size: 16837 - timestamp: 1739426020271 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-29_hb3479ef_openblas.conda - build_number: 29 - sha256: 5fb812ca6b194a0d4ea6c780fba9afab87f7da7b8c4558cfe2954e27bb07a4a9 - md5: cc30b97c4a6bc1984781bf147daa015b - depends: - - libblas 3.9.0 29_h10e41b3_openblas + size: 16777 + timestamp: 1739836311343 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-30_hb3479ef_openblas.conda + build_number: 30 + sha256: 6d5935d1df2558d84367f183050e7291ec18cdf44d55093ce5a5ca6228d7ff1b + md5: 7b50ccb7f672a8a793c64f7bfce84472 + depends: + - libblas 3.9.0 30_h10e41b3_openblas constrains: - - liblapack =3.9.0=29*_openblas - - blas =2.129=openblas - - liblapacke =3.9.0=29*_openblas + - liblapack =3.9.0=30*_openblas + - blas =2.130=openblas + - liblapacke =3.9.0=30*_openblas arch: arm64 platform: osx license: BSD-3-Clause license_family: BSD - size: 16983 - timestamp: 1739426238799 + size: 16922 + timestamp: 1739836601500 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda sha256: 776092346da87a2a23502e14d91eb0c32699c4a1522b7331537bd1c3751dcff5 md5: 5b3e1610ff8bd5443476b91d618f5b77 @@ -1732,6 +1789,31 @@ packages: license_family: MIT size: 54132 timestamp: 1734373971372 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libdrm-2.4.124-hb9d3cd8_0.conda + sha256: f0d5ffbdf3903a7840184d14c14154b503e1a96767c328f61d99ad24b6963e52 + md5: 8bc89311041d7fcb510238cf0848ccae + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libpciaccess >=0.18,<0.19.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 242533 + timestamp: 1733424409299 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libdrm-2.4.124-h86ecc28_0.conda + sha256: a0a89edcd142942ec5730f2b7d3b3f3e702b9be2d4c675fea3a8b62d40e6adc3 + md5: a8058bcb6b4fa195aaa20452437c7727 + depends: + - libgcc >=13 + - libpciaccess >=0.18,<0.19.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 246299 + timestamp: 1733424417343 - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda sha256: d789471216e7aba3c184cd054ed61ce3f6dac6f87a50ec69291b9297f8c18724 md5: c277e0a4d549b03ac1e9d6cbbe3d017b @@ -1772,6 +1854,27 @@ packages: license_family: BSD size: 107691 timestamp: 1738479560845 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libegl-1.7.0-ha4b6fd6_2.conda + sha256: 7fd5408d359d05a969133e47af580183fbf38e2235b562193d427bb9dad79723 + md5: c151d5eb730e9b7480e6d48c0fc44048 + depends: + - __glibc >=2.17,<3.0.a0 + - libglvnd 1.7.0 ha4b6fd6_2 + arch: x86_64 + platform: linux + license: LicenseRef-libglvnd + size: 44840 + timestamp: 1731330973553 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libegl-1.7.0-hd24410f_2.conda + sha256: 8962abf38a58c235611ce356b9899f6caeb0352a8bce631b0bcc59352fda455e + md5: cf105bce884e4ef8c8ccdca9fe6695e7 + depends: + - libglvnd 1.7.0 hd24410f_2 + arch: aarch64 + platform: linux + license: LicenseRef-libglvnd + size: 53551 + timestamp: 1731330990477 - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda sha256: 56541b98447b58e52d824bd59d6382d609e11de1f8adf20b23143e353d2b8d26 md5: db833e03127376d461e1e13e76f09b6c @@ -2272,34 +2375,37 @@ packages: license_family: GPL size: 277785 timestamp: 1731920977846 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-hd590300_2.conda - sha256: 8ac2f6a9f186e76539439e50505d98581472fedb347a20e7d1f36429849f05c9 - md5: d66573916ffcf376178462f1b61c941e +- conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h4ce23a2_0.conda + sha256: 659a83c0c184a30336ca512d670a7db56bfb5e289caa9ee641e6f78fd2326463 + md5: 0743bcd51fc4e6e0367e0aaf41e9bebc depends: - - libgcc-ng >=12 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 arch: x86_64 platform: linux license: LGPL-2.1-only - size: 705775 - timestamp: 1702682170569 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libiconv-1.17-h31becfc_2.conda - sha256: a30e09d089cb75a0d5b8e5c354694c1317da98261185ed65aa3793e741060614 - md5: 9a8eb13f14de7d761555a98712e6df65 + size: 713745 + timestamp: 1739866934640 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libiconv-1.18-hc99b53d_0.conda + sha256: c1d8421dbdf98d1ff4631130278ac95c9fe204630ca536c8eefd2be3912c89c0 + md5: 2d681a513e1720d149061745e6574120 depends: - - libgcc-ng >=12 + - libgcc >=13 arch: aarch64 platform: linux license: LGPL-2.1-only - size: 705787 - timestamp: 1702684557134 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.17-h0d3ecfb_2.conda - sha256: bc7de5097b97bcafcf7deaaed505f7ce02f648aac8eccc0d5a47cc599a1d0304 - md5: 69bda57310071cf6d2b86caf11573d2d + size: 713799 + timestamp: 1739869335682 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.18-hfe07756_0.conda + sha256: a7e7b90bcf2680e447aa9a17ccbebb07089d4b63d5ab53eb1cd8ddeafb4701c3 + md5: b0e471d5d174dbbb37ff4d91647de3c0 + depends: + - __osx >=11.0 arch: arm64 platform: osx license: LGPL-2.1-only - size: 676469 - timestamp: 1702682458114 + size: 679461 + timestamp: 1739867323460 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libintl-0.23.1-h493aca8_0.conda sha256: 30d2a8a37070615a61777ce9317968b54c2197d04e9c6c2eea6cdb46e47f94dc md5: 7b8faf3b5fc52744bda99c4cd1d6438d @@ -2367,44 +2473,45 @@ packages: - libcblas =3.9.0=28*_openblas - blas =2.128=openblas - liblapacke =3.9.0=28*_openblas + - mkl <2025 arch: x86_64 platform: linux license: BSD-3-Clause license_family: BSD size: 16553 timestamp: 1738114053556 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-29_h411afd4_openblas.conda - build_number: 29 - sha256: d7aa87be996cc89516b2ae2430317fe7401c66eaf739bf13833b6cc137c2511a - md5: 131b70f675e6c9a808c5c601bfdb8300 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-30_h411afd4_openblas.conda + build_number: 30 + sha256: 05720b9d62260048fa64d2ca1ee0ba0eef3496eb9b337cd277dbdbffcd976fe0 + md5: 3d5dfd69d16af6a64483a9eb17610923 depends: - - libblas 3.9.0 29_h1a9f1db_openblas + - libblas 3.9.0 30_h1a9f1db_openblas constrains: - - blas =2.129=openblas - - libcblas =3.9.0=29*_openblas - - liblapacke =3.9.0=29*_openblas + - libcblas =3.9.0=30*_openblas + - blas =2.130=openblas + - liblapacke =3.9.0=30*_openblas arch: aarch64 platform: linux license: BSD-3-Clause license_family: BSD - size: 16836 - timestamp: 1739426027617 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-29_hc9a63f6_openblas.conda - build_number: 29 - sha256: de23734b43bd3d788d87db223605961129df3f464f0fafabfb3bd9265766472f - md5: 523116f84153f74aa9541278faff40d8 - depends: - - libblas 3.9.0 29_h10e41b3_openblas + size: 16796 + timestamp: 1739836317218 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-30_hc9a63f6_openblas.conda + build_number: 30 + sha256: ad78d4fafde96659b429174fef4a0edf4c937876260c13c5f301d14779b3e36c + md5: af38e475d8538c65cb8ce0f1bfe2e573 + depends: + - libblas 3.9.0 30_h10e41b3_openblas constrains: - - libcblas =3.9.0=29*_openblas - - blas =2.129=openblas - - liblapacke =3.9.0=29*_openblas + - libcblas =3.9.0=30*_openblas + - blas =2.130=openblas + - liblapacke =3.9.0=30*_openblas arch: arm64 platform: osx license: BSD-3-Clause license_family: BSD - size: 16988 - timestamp: 1739426245773 + size: 16939 + timestamp: 1739836608362 - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda sha256: cad52e10319ca4585bc37f0bc7cce99ec7c15dc9168e42ccb96b741b0a27db3f md5: 42d5b6a0f30d3c10cd88cb8584fda1cb @@ -2538,37 +2645,37 @@ packages: license_family: BSD size: 5578513 timestamp: 1730772671118 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.28-pthreads_h9d3fd7e_1.conda - sha256: 30623a40764e935aa77e0d4db54c1a1589189a9bf3a03fdb445505c1e319b5a6 - md5: e8dde93dd199da3c1f2c1fcfd0042cd4 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.29-pthreads_h9d3fd7e_0.conda + sha256: 3a2ccf4c9098cd18a636e9b7fff947fdeb4962bcfb75c9d6fd80b8c50caf6a3c + md5: a99e2bfcb1ad6362544c71281eb617e9 depends: - libgcc >=14 - libgfortran - libgfortran5 >=14.2.0 constrains: - - openblas >=0.3.28,<0.3.29.0a0 + - openblas >=0.3.29,<0.3.30.0a0 arch: aarch64 platform: linux license: BSD-3-Clause license_family: BSD - size: 4793435 - timestamp: 1730773029647 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.28-openmp_hf332438_1.conda - sha256: 62bb669c37a845129096f73d446cdb6bb170e4927f2fea2b661329680dbbc373 - md5: 40803a48d947c8639da6704e9a44d3ce + size: 4801657 + timestamp: 1739825308974 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.29-openmp_hf332438_0.conda + sha256: 8989d9e01ec8c9b2d48dbb5efbe70b356fcd15990fb53b64fcb84798982c0343 + md5: 0cd1148c68f09027ee0b0f0179f77c30 depends: - __osx >=11.0 - libgfortran 5.* - libgfortran5 >=13.2.0 - llvm-openmp >=18.1.8 constrains: - - openblas >=0.3.28,<0.3.29.0a0 + - openblas >=0.3.29,<0.3.30.0a0 arch: arm64 platform: osx license: BSD-3-Clause license_family: BSD - size: 4165774 - timestamp: 1730772154295 + size: 4168442 + timestamp: 1739825514918 - conda: https://conda.anaconda.org/conda-forge/linux-64/libopus-1.3.1-h7f98852_1.tar.bz2 sha256: 0e1c2740ebd1c93226dc5387461bbcf8142c518f2092f3ea7551f77755decc8f md5: 15345e56d527b330e1cacbdf58676e8f @@ -2600,6 +2707,28 @@ packages: license_family: BSD size: 252854 timestamp: 1606823635137 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libpciaccess-0.18-hd590300_0.conda + sha256: c0a30ac74eba66ea76a4f0a39acc7833f5ed783a632ca3bb6665b2d81aabd2fb + md5: 48f4330bfcd959c3cfb704d424903c82 + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 28361 + timestamp: 1707101388552 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpciaccess-0.18-h31becfc_0.conda + sha256: 0c6806dcd53da457c472cf22ad7793aef074cb198a10677a91b02c7dceeee770 + md5: 6d48179630f00e8c9ad9e30879ce1e54 + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 29211 + timestamp: 1707101477910 - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.46-h943b412_0.conda sha256: a46436dadd12d58155280d68876dba2d8a3badbc8074956d14fe6530c7c7eda6 md5: adcf7bacff219488e29cfa95a2abd8f7 @@ -2973,6 +3102,109 @@ packages: license: HPND size: 370600 timestamp: 1734398863052 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libudev1-257.3-h9a4d06a_0.conda + sha256: 35bdafc4b02f61a327f82bb11263c31466367e50b4e5efab3d413509315cb0a7 + md5: e7817c912b25f7599a50eba270e1a463 + depends: + - __glibc >=2.17,<3.0.a0 + - libcap >=2.71,<2.72.0a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: LGPL-2.1-or-later + size: 142897 + timestamp: 1739569881116 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libudev1-257.3-h1187dce_0.conda + sha256: 996a477ced74941583c88417b5a341ce036b58662981d3792799d4d9ec93071e + md5: 7bcdab7b8ee62692770d292969d6cef2 + depends: + - libcap >=2.71,<2.72.0a0 + - libgcc >=13 + arch: aarch64 + platform: linux + license: LGPL-2.1-or-later + size: 154046 + timestamp: 1739569955486 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libunwind-1.6.2-h9c3ff4c_0.tar.bz2 + sha256: f2ac872920833960e514ce9efd8f7c08ce66dd870738d73839d1bce1ac497de6 + md5: a730b2badd586580c5752cc73842e068 + depends: + - libgcc-ng >=9.4.0 + - libstdcxx-ng >=9.4.0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 75491 + timestamp: 1638450786937 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libunwind-1.6.2-h01db608_0.tar.bz2 + sha256: 7862d36ffc9f6b2ed3381ce77c78b9e5691d7353a19dd2050630868e192adf6f + md5: 93b7bbf9099cfe09e67c0abe34bb7885 + depends: + - libgcc-ng >=9.4.0 + - libstdcxx-ng >=9.4.0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 90479 + timestamp: 1638452154070 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liburing-2.9-h84d6215_0.conda + sha256: bfa34a5a929d792dfcfbbe2d9ee21bd870d73d646512e21c871dab0b80194468 + md5: ecd409e7bfcf4ee73f74d7a2cc91a4c3 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 121336 + timestamp: 1738604403935 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liburing-2.9-h17cf362_0.conda + sha256: 2922ab8ac4cdd966c1b13dad6ccc4c07c7db2054400843ee443ffd5e7b3f292e + md5: 8eef9430276ab3dbe6ad5b8f23ff5e26 + depends: + - libgcc >=13 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 123614 + timestamp: 1738605619021 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libusb-1.0.27-h520f47e_100.conda + sha256: c641cdf5c398441df9863291c20574c37b1e4a6113b18a41c6a43ccc1df1b92c + md5: 82e46dc001ab1ef291554ead981b0cde + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc-ng >=12 + - libudev1 >=255 + arch: x86_64 + platform: linux + license: LGPL-2.1-or-later + size: 86196 + timestamp: 1706828413450 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libusb-1.0.27-hfa5f0b2_100.conda + sha256: c3ad82698430b627de6773fa82120cf659405a957c975639f41b3922d4219d9e + md5: ff95dc61e4f11520aa3158979c776c78 + depends: + - libgcc-ng >=12 + - libudev1 >=255 + arch: aarch64 + platform: linux + license: LGPL-2.1-or-later + size: 89408 + timestamp: 1706828386412 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libusb-1.0.27-h93a5062_100.conda + sha256: 37c377ee456eb77a4f4b15e289ef6c2d213786d2f4c11c7320fd2f654e7642d6 + md5: 711b8190e3e1e30a6598f5f76e0f8a20 + arch: arm64 + platform: osx + license: LGPL-2.1-or-later + size: 80917 + timestamp: 1706828785473 - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda sha256: 787eb542f055a2b3de553614b25f09eefb0a0931b0c87dbcce6efdfd92f04f18 md5: 40b61aab5c7ba9ff276c41cfffe6b80b @@ -3122,6 +3354,70 @@ packages: license: LGPL-2.1-or-later size: 114269 timestamp: 1702724369203 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libxkbcommon-1.8.0-hc4a0caf_0.conda + sha256: 583203155abcfb03938d8473afbf129156b5b30301a0f796c8ecca8c5b7b2ed2 + md5: f1656760dbf05f47f962bfdc59fc3416 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + - libxcb >=1.17.0,<2.0a0 + - libxml2 >=2.13.5,<3.0a0 + - xkeyboard-config + - xorg-libxau >=1.0.12,<2.0a0 + arch: x86_64 + platform: linux + license: MIT/X11 Derivative + license_family: MIT + size: 642349 + timestamp: 1738735301999 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxkbcommon-1.8.0-h2ef6bd0_0.conda + sha256: d43a637fd237e77b9e72fe0723a06aa998779cf3f88bbe8260c31a9098340374 + md5: 90d998781d2895f73671bba13339d109 + depends: + - libgcc >=13 + - libstdcxx >=13 + - libxcb >=1.17.0,<2.0a0 + - libxml2 >=2.13.5,<3.0a0 + - xkeyboard-config + - xorg-libxau >=1.0.12,<2.0a0 + arch: aarch64 + platform: linux + license: MIT/X11 Derivative + license_family: MIT + size: 652340 + timestamp: 1738735348944 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.5-h8d12d68_1.conda + sha256: c3b05bdc40d27a9249f0bb60f3f71718f94104b8bcd200163a6c9d4ade7aa052 + md5: 1a21e49e190d1ffe58531a81b6e400e1 + depends: + - __glibc >=2.17,<3.0.a0 + - icu >=75.1,<76.0a0 + - libgcc >=13 + - libiconv >=1.17,<2.0a0 + - liblzma >=5.6.3,<6.0a0 + - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 690589 + timestamp: 1733443667823 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.5-h2e0c361_1.conda + sha256: dc0e86d35a836af6e99d18f50c6551fc64c53ed3a3da5a9fea90e78763cf14b4 + md5: 63410f85031930cde371dfe0ee89109a + depends: + - icu >=75.1,<76.0a0 + - libgcc >=13 + - libiconv >=1.17,<2.0a0 + - liblzma >=5.6.3,<6.0a0 + - libzlib >=1.3.1,<2.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 732155 + timestamp: 1733443825814 - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda sha256: d4bfe88d7cb447768e31650f06257995601f89076080e76df55e3112d4e47dc4 md5: edb0dca6bc32e4f4789199455a1dbeb8 @@ -3200,48 +3496,48 @@ packages: license_family: BSD size: 184953 timestamp: 1733740984533 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021705-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021805-release.conda noarch: python - sha256: f357a97439076d8b14482639424613726c391ec4483d6be9129060d3e4760f21 - md5: 28ccc6bbdfa41f375ee72fe1c1c10b2e + sha256: 5abd2869c2a3e71f474e4fada2e32dbf664d886d0d5ab540872936dec3e30260 + md5: a36709ec752c9286fc680af014bc4208 depends: - - max-core ==25.2.0.dev2025021705 release - - max-python ==25.2.0.dev2025021705 release - - mojo-jupyter ==25.2.0.dev2025021705 release - - mblack ==25.2.0.dev2025021705 release + - max-core ==25.2.0.dev2025021805 release + - max-python ==25.2.0.dev2025021805 release + - mojo-jupyter ==25.2.0.dev2025021805 release + - mblack ==25.2.0.dev2025021805 release license: LicenseRef-Modular-Proprietary - size: 9900 - timestamp: 1739769476049 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025021705-release.conda - sha256: cb9400c54b963f03d04d6c843881380bd3112c30a8fbe9e48db931620bd1ebb8 - md5: 381af09e94b55adb4b8409e9607f03df + size: 9903 + timestamp: 1739855815922 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025021805-release.conda + sha256: 340e8cb57a7bb09161be9967d243686d2bde6d33c3a459434b64850f655a6ebf + md5: 16c9ab16f86ea77c968f2ec9d8490b45 depends: - - mblack ==25.2.0.dev2025021705 release + - mblack ==25.2.0.dev2025021805 release license: LicenseRef-Modular-Proprietary - size: 243571245 - timestamp: 1739769478481 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025021705-release.conda - sha256: f7dd60e39525b12a5f74d890a41aa8d3343d3cce4cea55eadf2f6cc3c3d11aa1 - md5: 257b6f0919811bb28c1ba9da36b42943 + size: 243537705 + timestamp: 1739855815922 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025021805-release.conda + sha256: 208db98626d7b13d83370cb148ed4c3b298ccb4be47735cb5c637482dc757e2d + md5: ffef7cb1076e8fff0bbf234ab579e490 depends: - - mblack ==25.2.0.dev2025021705 release + - mblack ==25.2.0.dev2025021805 release license: LicenseRef-Modular-Proprietary - size: 246181682 - timestamp: 1739769476049 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025021705-release.conda - sha256: 1a5234bedb53af4c11a05e86a972d252365eb0fb4e9eadb07601a97c13a3e580 - md5: 8a274c64491be70ab860f2749cdbded8 + size: 246180299 + timestamp: 1739855933149 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025021805-release.conda + sha256: 358feba2a0de87990d5195f15b9f7c72d54735c651d2387dc9b19d9f18a5a808 + md5: 03c4c62591cfdceeedb187c81aa39e85 depends: - - mblack ==25.2.0.dev2025021705 release + - mblack ==25.2.0.dev2025021805 release license: LicenseRef-Modular-Proprietary - size: 211871421 - timestamp: 1739770743850 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025021705-release.conda + size: 211888906 + timestamp: 1739857002577 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025021805-release.conda noarch: python - sha256: 5500aa0ced5c8d2b313782ac67518891c5fbaa99e4ed84aaa20f1bcd181364be - md5: 21ad39ec09ec7dd9be8dd6b104a65b6c + sha256: 628691ed2774526488211fd2e8dc1d7defc06e4ec2f01bddf1225e5f9a2c55c7 + md5: bad8379abe776c441bf27819069be200 depends: - - max-core ==25.2.0.dev2025021705 release + - max-core ==25.2.0.dev2025021805 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -3279,14 +3575,14 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 120661171 - timestamp: 1739769478481 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025021705-release.conda + size: 120604349 + timestamp: 1739855815922 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025021805-release.conda noarch: python - sha256: 08e02fd88975d86206410e2573a460158f71eafa431df1631359e004ce005163 - md5: c3b325b2c14c3ae2c82d37894daef2f4 + sha256: 929e59132a7c6525d8fcdd6de038a662d8676feba0ced0dd5fc587c54d0340b0 + md5: 7c27fe619fe036d42d317cc56c6e52de depends: - - max-core ==25.2.0.dev2025021705 release + - max-core ==25.2.0.dev2025021805 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -3324,14 +3620,14 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 123214020 - timestamp: 1739769476049 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025021705-release.conda + size: 123218799 + timestamp: 1739855933149 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025021805-release.conda noarch: python - sha256: 686735af9671c174ad98929602236992efdcbe682961ba5637f7babaa7779414 - md5: 3163d7c7ac36d35f3a1722ca6f24c802 + sha256: 3cfb0055a5644ad9c53dec2d072d7aab4200bec29e321ff1bf0e2304148559a4 + md5: 6649b504b69613c9d0d0563f5dda8cac depends: - - max-core ==25.2.0.dev2025021705 release + - max-core ==25.2.0.dev2025021805 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -3369,12 +3665,12 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 110070584 - timestamp: 1739770743850 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021705-release.conda + size: 110049004 + timestamp: 1739857002577 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021805-release.conda noarch: python - sha256: 13a8735d351148c95ff8030ea49010bc4cda358a5faf241689db15197bdaf7fb - md5: f595aa1a6832846493d7c9cb48bd0f5d + sha256: c2ce9921584024a755f45d2a7ba764a4e527a7bfc3aa7798e056e9fea35a4eb1 + md5: c90d37ff9d68f874286acdb235b62cfa depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -3385,20 +3681,20 @@ packages: - typing_extensions >=v4.12.2 - python license: MIT - size: 130855 - timestamp: 1739769476049 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021705-release.conda + size: 130850 + timestamp: 1739855815922 +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021805-release.conda noarch: python - sha256: ff89ce5074726958ff4cefe09966470947ab40ebc5e4bbe4f8e3fe8c4d5d7263 - md5: c7ae6ef843f549adb530cff568cef5bc + sha256: 5ff1420517896833664e430108a243134424ff45c78e00fc760d77525a91a750 + md5: e3f2fef53386541378382e32801068d7 depends: - - max-core ==25.2.0.dev2025021705 release + - max-core ==25.2.0.dev2025021805 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22994 - timestamp: 1739769476049 + size: 22982 + timestamp: 1739855815922 - conda: https://conda.anaconda.org/conda-forge/linux-64/mpg123-1.32.9-hc50e24c_0.conda sha256: 39c4700fb3fbe403a77d8cc27352fa72ba744db487559d5d44bf8411bb4ea200 md5: c7f302fd11eeb0987a6a5e1f3aed6a21 @@ -4162,50 +4458,47 @@ packages: license_family: GPL size: 250351 timestamp: 1679532511311 -- conda: https://conda.anaconda.org/conda-forge/linux-64/sdl2-2.30.10-h63c27ac_1.conda - sha256: 685a55d71f4dee5f9ff23dfc063b0499335f073319d1111a36c3a2a056c74d4d - md5: 712cefaf74637d701a460094303a2db2 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sdl2-2.32.50-h9b8e6db_0.conda + sha256: a8c224fcd6ae01242f93d6e42995ce8377864e659dd385993d5506a3ac175c65 + md5: 33c7b594dcdcef25a54704714dde417b depends: - __glibc >=2.17,<3.0.a0 + - libegl >=1.7.0,<2.0a0 - libgcc >=13 - libgl >=1.7.0,<2.0a0 - libstdcxx >=13 - - pulseaudio-client >=17.0,<17.1.0a0 - - xorg-libx11 >=1.8.11,<2.0a0 - - xorg-libxext >=1.3.6,<2.0a0 - - xorg-libxfixes >=6.0.1,<7.0a0 + - sdl3 >=3.2.4,<4.0a0 arch: x86_64 platform: linux license: Zlib - size: 1366290 - timestamp: 1739558400430 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sdl2-2.30.10-h93e764a_1.conda - sha256: e0c8220d19f611d2c981c122437a809d76e7e9ec8c2ea76484c9cace28cb1e15 - md5: 907d430d01b1f2e3108d6ec9f0989b06 + size: 513000 + timestamp: 1739829147175 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sdl2-2.32.50-h7851d19_0.conda + sha256: 79c3a8a7fd50dd083acac15c5f2a7db9ce72701bdea8752fdb5b864fa26fcdcc + md5: 6977e2039ea2a1fb1c467e0149ebd2f8 depends: + - libegl >=1.7.0,<2.0a0 - libgcc >=13 - libgl >=1.7.0,<2.0a0 - libstdcxx >=13 - - pulseaudio-client >=17.0,<17.1.0a0 - - xorg-libx11 >=1.8.11,<2.0a0 - - xorg-libxext >=1.3.6,<2.0a0 - - xorg-libxfixes >=6.0.1,<7.0a0 + - sdl3 >=3.2.4,<4.0a0 arch: aarch64 platform: linux license: Zlib - size: 1274333 - timestamp: 1739558343779 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sdl2-2.30.10-h994913f_1.conda - sha256: 1d95013eb2d91ee5307878ea093b824156918c4e012143f1379426904bb14f75 - md5: 238ef478cc394a7aade3ba55b1ebb1c6 + size: 520749 + timestamp: 1739829170243 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sdl2-2.32.50-h994913f_0.conda + sha256: b9c23e4c06ca96fc4c7ba015bbb017ae8e876adf4fcf5dd14345315e05ba1117 + md5: 70a757d49be7d41e5aabef2857e44585 depends: - __osx >=11.0 - libcxx >=18 + - sdl3 >=3.2.4,<4.0a0 arch: arm64 platform: osx license: Zlib - size: 1251550 - timestamp: 1739558434573 + size: 490725 + timestamp: 1739829495058 - conda: https://conda.anaconda.org/conda-forge/linux-64/sdl2_image-2.8.2-h06ee604_1.conda sha256: f18184e016e2e57306d1540dea584d38f4617d7ddb6aad4af6b5f21c52fa39ea md5: 65e113270b460dcdfc4dc0a80bb3d11c @@ -4358,6 +4651,75 @@ packages: license: Zlib size: 45429 timestamp: 1736118165229 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sdl3-3.2.4-h3083f51_0.conda + sha256: d19f33b8c73cf461698b3f6d81aa354aed68d50f8d64f72c0cccc507d183803c + md5: c0d92f268209e0a0fd27954a5667c11d + depends: + - __glibc >=2.17,<3.0.a0 + - dbus >=1.13.6,<2.0a0 + - jack >=1.9.22,<1.10.0a0 + - libdrm >=2.4.124,<2.5.0a0 + - libegl >=1.7.0,<2.0a0 + - libgcc >=13 + - libgl >=1.7.0,<2.0a0 + - libstdcxx >=13 + - libudev1 >=256.7 + - libunwind >=1.6.2,<1.7.0a0 + - liburing >=2.9,<2.10.0a0 + - libusb >=1.0.27,<2.0a0 + - libxkbcommon >=1.8.0,<2.0a0 + - pulseaudio-client >=17.0,<17.1.0a0 + - wayland >=1.23.1,<2.0a0 + - xorg-libx11 >=1.8.11,<2.0a0 + - xorg-libxcursor >=1.2.3,<2.0a0 + - xorg-libxext >=1.3.6,<2.0a0 + - xorg-libxfixes >=6.0.1,<7.0a0 + - xorg-libxscrnsaver >=1.2.4,<2.0a0 + arch: x86_64 + platform: linux + license: Zlib + size: 1728090 + timestamp: 1739801388543 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sdl3-3.2.4-h9cc03ad_0.conda + sha256: af6e96ddbf53a52f06714b715851f4cc0a684e26011da93974525535cc3a1da7 + md5: ecc9ec84f3a1d4d903a12d8b5c68e077 + depends: + - dbus >=1.13.6,<2.0a0 + - jack >=1.9.22,<1.10.0a0 + - libdrm >=2.4.124,<2.5.0a0 + - libegl >=1.7.0,<2.0a0 + - libgcc >=13 + - libgl >=1.7.0,<2.0a0 + - libstdcxx >=13 + - libudev1 >=256.7 + - libunwind >=1.6.2,<1.7.0a0 + - liburing >=2.9,<2.10.0a0 + - libusb >=1.0.27,<2.0a0 + - libxkbcommon >=1.8.0,<2.0a0 + - pulseaudio-client >=17.0,<17.1.0a0 + - wayland >=1.23.1,<2.0a0 + - xorg-libx11 >=1.8.11,<2.0a0 + - xorg-libxcursor >=1.2.3,<2.0a0 + - xorg-libxext >=1.3.6,<2.0a0 + - xorg-libxfixes >=6.0.1,<7.0a0 + arch: aarch64 + platform: linux + license: Zlib + size: 1655503 + timestamp: 1739553425173 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sdl3-3.2.4-he842692_0.conda + sha256: a9ab414a0432f256e4643f87aa97eaef31778990e7004d4e6dcf5a7a59c2047a + md5: 09a67fad3bcd67851f14082d80fe9b51 + depends: + - __osx >=11.0 + - dbus >=1.13.6,<2.0a0 + - libcxx >=18 + - libusb >=1.0.27,<2.0a0 + arch: arm64 + platform: osx + license: Zlib + size: 1258052 + timestamp: 1739553733611 - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-0.2.0-hc8f76dd_10.conda sha256: a1bde55ceb9dc5bd7879283d0f594a6ce65c07fda3de76230c65a4a5df47858a md5: 480e915dfc6c592615ef6f217e615aa6 @@ -4655,6 +5017,60 @@ packages: license: LicenseRef-Public-Domain size: 122921 timestamp: 1737119101255 +- conda: https://conda.anaconda.org/conda-forge/linux-64/wayland-1.23.1-h3e06ad9_0.conda + sha256: 0884b2023a32d2620192cf2e2fc6784b8d1e31cf9f137e49e00802d4daf7d1c1 + md5: 0a732427643ae5e0486a727927791da1 + depends: + - __glibc >=2.17,<3.0.a0 + - libexpat >=2.6.2,<3.0a0 + - libffi >=3.4,<4.0a0 + - libgcc-ng >=13 + - libstdcxx-ng >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 321561 + timestamp: 1724530461598 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/wayland-1.23.1-h698ed42_0.conda + sha256: 71c591803459e1f68f9ad206a4f2fa3971147502bad8791e94fd18d8362f8ce6 + md5: 2661f9252065051914f1cdf5835e7430 + depends: + - libexpat >=2.6.2,<3.0a0 + - libffi >=3.4,<4.0a0 + - libgcc-ng >=13 + - libstdcxx-ng >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 324815 + timestamp: 1724530528414 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xkeyboard-config-2.43-hb9d3cd8_0.conda + sha256: 0d89b5873515a1f05d311f37ea4e087bbccc0418afa38f2f6189e97280db3179 + md5: f725c7425d6d7c15e31f3b99a88ea02f + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - xorg-libx11 >=1.8.10,<2.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 389475 + timestamp: 1727840188958 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xkeyboard-config-2.43-h86ecc28_0.conda + sha256: b3f09cc99b6b7707aa8812bbc7556fd431999ad3a48292e4ff82335b5fda976c + md5: a809b8e3776fbc05696c82f8cf6f5a92 + depends: + - libgcc >=13 + - xorg-libx11 >=1.8.9,<2.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 391011 + timestamp: 1727840308426 - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libice-1.1.2-hb9d3cd8_0.conda sha256: c12396aabb21244c212e488bbdc4abcdef0b7404b15761d9329f5a4a39113c4b md5: fb901ff28063514abb6046c9ec2c4a45 @@ -4753,6 +5169,35 @@ packages: license_family: MIT size: 15873 timestamp: 1734230458294 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxcursor-1.2.3-hb9d3cd8_0.conda + sha256: 832f538ade441b1eee863c8c91af9e69b356cd3e9e1350fff4fe36cc573fc91a + md5: 2ccd714aa2242315acaf0a67faea780b + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - xorg-libx11 >=1.8.10,<2.0a0 + - xorg-libxfixes >=6.0.1,<7.0a0 + - xorg-libxrender >=0.9.11,<0.10.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 32533 + timestamp: 1730908305254 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxcursor-1.2.3-h86ecc28_0.conda + sha256: c5d3692520762322a9598e7448492309f5ee9d8f3aff72d787cf06e77c42507f + md5: f2054759c2203d12d0007005e1f1296d + depends: + - libgcc >=13 + - xorg-libx11 >=1.8.9,<2.0a0 + - xorg-libxfixes >=6.0.1,<7.0a0 + - xorg-libxrender >=0.9.11,<0.10.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 34596 + timestamp: 1730908388714 - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb9d3cd8_0.conda sha256: 6b250f3e59db07c2514057944a3ea2044d6a8cdde8a47b6497c254520fade1ee md5: 8035c64cb77ed555e3f150b7b3972480 @@ -4851,6 +5296,20 @@ packages: license_family: MIT size: 33649 timestamp: 1734229123157 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxscrnsaver-1.2.4-hb9d3cd8_0.conda + sha256: 58e8fc1687534124832d22e102f098b5401173212ac69eb9fd96b16a3e2c8cb2 + md5: 303f7a0e9e0cd7d250bb6b952cecda90 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - xorg-libx11 >=1.8.10,<2.0a0 + - xorg-libxext >=1.3.6,<2.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 14412 + timestamp: 1727899730073 - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda sha256: a4dc72c96848f764bb5a5176aa93dd1e9b9e52804137b99daeebba277b31ea10 md5: 3947a35e916fcc6b9825449affbf4214 diff --git a/examples/magic.lock b/examples/magic.lock index 394f550e23..dc72b3ce46 100644 --- a/examples/magic.lock +++ b/examples/magic.lock @@ -42,11 +42,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025021705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025021705-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021705-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025021805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025021805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021805-release.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-h2d0b736_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py311h64a7726_0.conda @@ -84,8 +84,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/krb5-1.21.3-h50a48e9_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h18dbdb1_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-29_h1a9f1db_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-29_hab92f65_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-30_h1a9f1db_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-30_hab92f65_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20250104-pl5321h976ea20_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.6.4-h5ad3122_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.4.6-he21f813_0.conda @@ -94,10 +94,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-29_h411afd4_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-30_h411afd4_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.4-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.28-pthreads_h9d3fd7e_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.29-pthreads_h9d3fd7e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.3-h44a3b7b_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsentencepiece-0.2.0-h6164ad9_10.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.20-h68df207_0.conda @@ -107,11 +107,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025021705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025021705-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021705-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025021805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025021805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021805-release.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-ha32ae93_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py311h69ead2a_0.conda @@ -146,28 +146,28 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_h07bc746_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-29_h10e41b3_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-29_hb3479ef_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-30_h10e41b3_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-30_hb3479ef_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.4-h286801f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-29_hc9a63f6_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-30_hc9a63f6_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.4-h39f12f2_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.28-openmp_hf332438_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.29-openmp_hf332438_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.3-h3bd63a1_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsentencepiece-0.2.0-he13a0af_10.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.48.0-h3f77e49_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021705-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025021705-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025021705-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021705-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021805-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025021805-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025021805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021805-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py311h7125741_0.conda @@ -493,48 +493,49 @@ packages: - blas =2.128=openblas - liblapack =3.9.0=28*_openblas - liblapacke =3.9.0=28*_openblas + - mkl <2025 arch: x86_64 platform: linux license: BSD-3-Clause license_family: BSD size: 16621 timestamp: 1738114033763 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-29_h1a9f1db_openblas.conda - build_number: 29 - sha256: 973d85867efe198eeda6d01c73258b3ffd2d1bd227c18b663fe6a1fab292e0f5 - md5: e98e99f1ceb36f52504bb122435756c5 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-30_h1a9f1db_openblas.conda + build_number: 30 + sha256: 50fc3d327a95a604120715e14447b497bf52b7b13de556f068610c6f34f95da2 + md5: f62b3030cc0c37b06cd6b7e771d99be9 depends: - - libopenblas >=0.3.28,<0.3.29.0a0 - - libopenblas >=0.3.28,<1.0a0 + - libopenblas >=0.3.29,<0.3.30.0a0 + - libopenblas >=0.3.29,<1.0a0 constrains: - - blas =2.129=openblas - - libcblas =3.9.0=29*_openblas - - liblapacke =3.9.0=29*_openblas - - liblapack =3.9.0=29*_openblas + - libcblas =3.9.0=30*_openblas + - blas =2.130=openblas + - liblapacke =3.9.0=30*_openblas + - liblapack =3.9.0=30*_openblas arch: aarch64 platform: linux license: BSD-3-Clause license_family: BSD - size: 16884 - timestamp: 1739426012764 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-29_h10e41b3_openblas.conda - build_number: 29 - sha256: a966b39403203dfe122e2eefe9f3a04b353dc7c2fa76703f0d78fddc4e849704 - md5: 6ebbed2244408eca4f7569b532f813bd - depends: - - libopenblas >=0.3.28,<0.3.29.0a0 - - libopenblas >=0.3.28,<1.0a0 + size: 16841 + timestamp: 1739836305440 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-30_h10e41b3_openblas.conda + build_number: 30 + sha256: efdb82267966dff85123334ed0f7f4773ab4b093187c5495f2f92f892e2542d4 + md5: 1317dcfcde16781b5d446bfb4c81b848 + depends: + - libopenblas >=0.3.29,<0.3.30.0a0 + - libopenblas >=0.3.29,<1.0a0 constrains: - - liblapacke =3.9.0=29*_openblas - - libcblas =3.9.0=29*_openblas - - blas =2.129=openblas - - liblapack =3.9.0=29*_openblas + - libcblas =3.9.0=30*_openblas + - liblapack =3.9.0=30*_openblas + - blas =2.130=openblas + - liblapacke =3.9.0=30*_openblas arch: arm64 platform: osx license: BSD-3-Clause license_family: BSD - size: 17046 - timestamp: 1739426231872 + size: 17013 + timestamp: 1739836593880 - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-28_he106b2a_openblas.conda build_number: 28 sha256: de293e117db53e5d78b579136509c35a5e4ad11529c05f9af83cf89be4d30de1 @@ -545,44 +546,45 @@ packages: - blas =2.128=openblas - liblapack =3.9.0=28*_openblas - liblapacke =3.9.0=28*_openblas + - mkl <2025 arch: x86_64 platform: linux license: BSD-3-Clause license_family: BSD size: 16539 timestamp: 1738114043618 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-29_hab92f65_openblas.conda - build_number: 29 - sha256: a7ecf68634582e8291a3ce76836394a87c38e684255b2c1514dec0aeddcb2004 - md5: 8dd4788ae5e492c771c5b51661ac9102 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-30_hab92f65_openblas.conda + build_number: 30 + sha256: 878bf1d1b75c9db13cd16486d880228c163b0fe36911f8bcece79a4fd2583b44 + md5: b3b76e1a06d0f89ca5c24935b0541510 depends: - - libblas 3.9.0 29_h1a9f1db_openblas + - libblas 3.9.0 30_h1a9f1db_openblas constrains: - - blas =2.129=openblas - - liblapacke =3.9.0=29*_openblas - - liblapack =3.9.0=29*_openblas + - blas =2.130=openblas + - liblapacke =3.9.0=30*_openblas + - liblapack =3.9.0=30*_openblas arch: aarch64 platform: linux license: BSD-3-Clause license_family: BSD - size: 16837 - timestamp: 1739426020271 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-29_hb3479ef_openblas.conda - build_number: 29 - sha256: 5fb812ca6b194a0d4ea6c780fba9afab87f7da7b8c4558cfe2954e27bb07a4a9 - md5: cc30b97c4a6bc1984781bf147daa015b - depends: - - libblas 3.9.0 29_h10e41b3_openblas + size: 16777 + timestamp: 1739836311343 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-30_hb3479ef_openblas.conda + build_number: 30 + sha256: 6d5935d1df2558d84367f183050e7291ec18cdf44d55093ce5a5ca6228d7ff1b + md5: 7b50ccb7f672a8a793c64f7bfce84472 + depends: + - libblas 3.9.0 30_h10e41b3_openblas constrains: - - liblapack =3.9.0=29*_openblas - - blas =2.129=openblas - - liblapacke =3.9.0=29*_openblas + - liblapack =3.9.0=30*_openblas + - blas =2.130=openblas + - liblapacke =3.9.0=30*_openblas arch: arm64 platform: osx license: BSD-3-Clause license_family: BSD - size: 16983 - timestamp: 1739426238799 + size: 16922 + timestamp: 1739836601500 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda sha256: 776092346da87a2a23502e14d91eb0c32699c4a1522b7331537bd1c3751dcff5 md5: 5b3e1610ff8bd5443476b91d618f5b77 @@ -863,44 +865,45 @@ packages: - libcblas =3.9.0=28*_openblas - blas =2.128=openblas - liblapacke =3.9.0=28*_openblas + - mkl <2025 arch: x86_64 platform: linux license: BSD-3-Clause license_family: BSD size: 16553 timestamp: 1738114053556 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-29_h411afd4_openblas.conda - build_number: 29 - sha256: d7aa87be996cc89516b2ae2430317fe7401c66eaf739bf13833b6cc137c2511a - md5: 131b70f675e6c9a808c5c601bfdb8300 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-30_h411afd4_openblas.conda + build_number: 30 + sha256: 05720b9d62260048fa64d2ca1ee0ba0eef3496eb9b337cd277dbdbffcd976fe0 + md5: 3d5dfd69d16af6a64483a9eb17610923 depends: - - libblas 3.9.0 29_h1a9f1db_openblas + - libblas 3.9.0 30_h1a9f1db_openblas constrains: - - blas =2.129=openblas - - libcblas =3.9.0=29*_openblas - - liblapacke =3.9.0=29*_openblas + - libcblas =3.9.0=30*_openblas + - blas =2.130=openblas + - liblapacke =3.9.0=30*_openblas arch: aarch64 platform: linux license: BSD-3-Clause license_family: BSD - size: 16836 - timestamp: 1739426027617 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-29_hc9a63f6_openblas.conda - build_number: 29 - sha256: de23734b43bd3d788d87db223605961129df3f464f0fafabfb3bd9265766472f - md5: 523116f84153f74aa9541278faff40d8 - depends: - - libblas 3.9.0 29_h10e41b3_openblas + size: 16796 + timestamp: 1739836317218 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-30_hc9a63f6_openblas.conda + build_number: 30 + sha256: ad78d4fafde96659b429174fef4a0edf4c937876260c13c5f301d14779b3e36c + md5: af38e475d8538c65cb8ce0f1bfe2e573 + depends: + - libblas 3.9.0 30_h10e41b3_openblas constrains: - - libcblas =3.9.0=29*_openblas - - blas =2.129=openblas - - liblapacke =3.9.0=29*_openblas + - libcblas =3.9.0=30*_openblas + - blas =2.130=openblas + - liblapacke =3.9.0=30*_openblas arch: arm64 platform: osx license: BSD-3-Clause license_family: BSD - size: 16988 - timestamp: 1739426245773 + size: 16939 + timestamp: 1739836608362 - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda sha256: cad52e10319ca4585bc37f0bc7cce99ec7c15dc9168e42ccb96b741b0a27db3f md5: 42d5b6a0f30d3c10cd88cb8584fda1cb @@ -970,37 +973,37 @@ packages: license_family: BSD size: 5578513 timestamp: 1730772671118 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.28-pthreads_h9d3fd7e_1.conda - sha256: 30623a40764e935aa77e0d4db54c1a1589189a9bf3a03fdb445505c1e319b5a6 - md5: e8dde93dd199da3c1f2c1fcfd0042cd4 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.29-pthreads_h9d3fd7e_0.conda + sha256: 3a2ccf4c9098cd18a636e9b7fff947fdeb4962bcfb75c9d6fd80b8c50caf6a3c + md5: a99e2bfcb1ad6362544c71281eb617e9 depends: - libgcc >=14 - libgfortran - libgfortran5 >=14.2.0 constrains: - - openblas >=0.3.28,<0.3.29.0a0 + - openblas >=0.3.29,<0.3.30.0a0 arch: aarch64 platform: linux license: BSD-3-Clause license_family: BSD - size: 4793435 - timestamp: 1730773029647 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.28-openmp_hf332438_1.conda - sha256: 62bb669c37a845129096f73d446cdb6bb170e4927f2fea2b661329680dbbc373 - md5: 40803a48d947c8639da6704e9a44d3ce + size: 4801657 + timestamp: 1739825308974 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.29-openmp_hf332438_0.conda + sha256: 8989d9e01ec8c9b2d48dbb5efbe70b356fcd15990fb53b64fcb84798982c0343 + md5: 0cd1148c68f09027ee0b0f0179f77c30 depends: - __osx >=11.0 - libgfortran 5.* - libgfortran5 >=13.2.0 - llvm-openmp >=18.1.8 constrains: - - openblas >=0.3.28,<0.3.29.0a0 + - openblas >=0.3.29,<0.3.30.0a0 arch: arm64 platform: osx license: BSD-3-Clause license_family: BSD - size: 4165774 - timestamp: 1730772154295 + size: 4168442 + timestamp: 1739825514918 - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda sha256: 51125ebb8b7152e4a4e69fd2398489c4ec8473195c27cde3cbdf1cb6d18c5493 md5: d8703f1ffe5a06356f06467f1d0b9464 @@ -1296,48 +1299,48 @@ packages: license_family: APACHE size: 280830 timestamp: 1736986295869 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021705-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021805-release.conda noarch: python - sha256: f357a97439076d8b14482639424613726c391ec4483d6be9129060d3e4760f21 - md5: 28ccc6bbdfa41f375ee72fe1c1c10b2e + sha256: 5abd2869c2a3e71f474e4fada2e32dbf664d886d0d5ab540872936dec3e30260 + md5: a36709ec752c9286fc680af014bc4208 depends: - - max-core ==25.2.0.dev2025021705 release - - max-python ==25.2.0.dev2025021705 release - - mojo-jupyter ==25.2.0.dev2025021705 release - - mblack ==25.2.0.dev2025021705 release + - max-core ==25.2.0.dev2025021805 release + - max-python ==25.2.0.dev2025021805 release + - mojo-jupyter ==25.2.0.dev2025021805 release + - mblack ==25.2.0.dev2025021805 release license: LicenseRef-Modular-Proprietary - size: 9900 - timestamp: 1739769476049 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025021705-release.conda - sha256: cb9400c54b963f03d04d6c843881380bd3112c30a8fbe9e48db931620bd1ebb8 - md5: 381af09e94b55adb4b8409e9607f03df + size: 9903 + timestamp: 1739855815922 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025021805-release.conda + sha256: 340e8cb57a7bb09161be9967d243686d2bde6d33c3a459434b64850f655a6ebf + md5: 16c9ab16f86ea77c968f2ec9d8490b45 depends: - - mblack ==25.2.0.dev2025021705 release + - mblack ==25.2.0.dev2025021805 release license: LicenseRef-Modular-Proprietary - size: 243571245 - timestamp: 1739769478481 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025021705-release.conda - sha256: f7dd60e39525b12a5f74d890a41aa8d3343d3cce4cea55eadf2f6cc3c3d11aa1 - md5: 257b6f0919811bb28c1ba9da36b42943 + size: 243537705 + timestamp: 1739855815922 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025021805-release.conda + sha256: 208db98626d7b13d83370cb148ed4c3b298ccb4be47735cb5c637482dc757e2d + md5: ffef7cb1076e8fff0bbf234ab579e490 depends: - - mblack ==25.2.0.dev2025021705 release + - mblack ==25.2.0.dev2025021805 release license: LicenseRef-Modular-Proprietary - size: 246181682 - timestamp: 1739769476049 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025021705-release.conda - sha256: 1a5234bedb53af4c11a05e86a972d252365eb0fb4e9eadb07601a97c13a3e580 - md5: 8a274c64491be70ab860f2749cdbded8 + size: 246180299 + timestamp: 1739855933149 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025021805-release.conda + sha256: 358feba2a0de87990d5195f15b9f7c72d54735c651d2387dc9b19d9f18a5a808 + md5: 03c4c62591cfdceeedb187c81aa39e85 depends: - - mblack ==25.2.0.dev2025021705 release + - mblack ==25.2.0.dev2025021805 release license: LicenseRef-Modular-Proprietary - size: 211871421 - timestamp: 1739770743850 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025021705-release.conda + size: 211888906 + timestamp: 1739857002577 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025021805-release.conda noarch: python - sha256: 5500aa0ced5c8d2b313782ac67518891c5fbaa99e4ed84aaa20f1bcd181364be - md5: 21ad39ec09ec7dd9be8dd6b104a65b6c + sha256: 628691ed2774526488211fd2e8dc1d7defc06e4ec2f01bddf1225e5f9a2c55c7 + md5: bad8379abe776c441bf27819069be200 depends: - - max-core ==25.2.0.dev2025021705 release + - max-core ==25.2.0.dev2025021805 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1375,14 +1378,14 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 120661171 - timestamp: 1739769478481 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025021705-release.conda + size: 120604349 + timestamp: 1739855815922 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025021805-release.conda noarch: python - sha256: 08e02fd88975d86206410e2573a460158f71eafa431df1631359e004ce005163 - md5: c3b325b2c14c3ae2c82d37894daef2f4 + sha256: 929e59132a7c6525d8fcdd6de038a662d8676feba0ced0dd5fc587c54d0340b0 + md5: 7c27fe619fe036d42d317cc56c6e52de depends: - - max-core ==25.2.0.dev2025021705 release + - max-core ==25.2.0.dev2025021805 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1420,14 +1423,14 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 123214020 - timestamp: 1739769476049 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025021705-release.conda + size: 123218799 + timestamp: 1739855933149 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025021805-release.conda noarch: python - sha256: 686735af9671c174ad98929602236992efdcbe682961ba5637f7babaa7779414 - md5: 3163d7c7ac36d35f3a1722ca6f24c802 + sha256: 3cfb0055a5644ad9c53dec2d072d7aab4200bec29e321ff1bf0e2304148559a4 + md5: 6649b504b69613c9d0d0563f5dda8cac depends: - - max-core ==25.2.0.dev2025021705 release + - max-core ==25.2.0.dev2025021805 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1465,12 +1468,12 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 110070584 - timestamp: 1739770743850 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021705-release.conda + size: 110049004 + timestamp: 1739857002577 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021805-release.conda noarch: python - sha256: 13a8735d351148c95ff8030ea49010bc4cda358a5faf241689db15197bdaf7fb - md5: f595aa1a6832846493d7c9cb48bd0f5d + sha256: c2ce9921584024a755f45d2a7ba764a4e527a7bfc3aa7798e056e9fea35a4eb1 + md5: c90d37ff9d68f874286acdb235b62cfa depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -1481,20 +1484,20 @@ packages: - typing_extensions >=v4.12.2 - python license: MIT - size: 130855 - timestamp: 1739769476049 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021705-release.conda + size: 130850 + timestamp: 1739855815922 +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021805-release.conda noarch: python - sha256: ff89ce5074726958ff4cefe09966470947ab40ebc5e4bbe4f8e3fe8c4d5d7263 - md5: c7ae6ef843f549adb530cff568cef5bc + sha256: 5ff1420517896833664e430108a243134424ff45c78e00fc760d77525a91a750 + md5: e3f2fef53386541378382e32801068d7 depends: - - max-core ==25.2.0.dev2025021705 release + - max-core ==25.2.0.dev2025021805 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22994 - timestamp: 1739769476049 + size: 22982 + timestamp: 1739855815922 - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda sha256: 1895f47b7d68581a6facde5cb13ab8c2764c2e53a76bd746f8f98910dc4e08fe md5: 29097e7ea634a45cc5386b95cac6568f diff --git a/examples/operators/magic.lock b/examples/operators/magic.lock index b1f0849038..339491c229 100644 --- a/examples/operators/magic.lock +++ b/examples/operators/magic.lock @@ -19,8 +19,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-29_h59b9bed_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-29_he106b2a_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-30_h59b9bed_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-30_he106b2a_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_0.conda @@ -29,11 +29,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hd5240d6_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libhwloc-2.11.2-default_h0d58e46_1001.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-hd590300_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-29_h7ac8fdf_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h4ce23a2_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-30_h7ac8fdf_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.28-pthreads_h94d23a6_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.29-pthreads_h94d23a6_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsentencepiece-0.2.0-h8e10757_10.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda @@ -45,12 +45,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.5-h0d44e9d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/llvm-openmp-19.1.7-h024ca30_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025021705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025021705-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025021805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025021805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021805-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-2024.2.2-ha957f24_16.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021805-release.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-h2d0b736_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda @@ -89,8 +89,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/krb5-1.21.3-h50a48e9_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h18dbdb1_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-29_h1a9f1db_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-29_hab92f65_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-30_h1a9f1db_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-30_hab92f65_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20250104-pl5321h976ea20_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.6.4-h5ad3122_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.4.6-he21f813_0.conda @@ -99,10 +99,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-29_h411afd4_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-30_h411afd4_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.4-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.28-pthreads_h9d3fd7e_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.29-pthreads_h9d3fd7e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.3-h44a3b7b_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsentencepiece-0.2.0-h6164ad9_10.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.20-h68df207_0.conda @@ -112,11 +112,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025021705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025021705-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021705-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025021805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025021805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021805-release.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-ha32ae93_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda @@ -151,28 +151,28 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_h07bc746_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-29_h10e41b3_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-29_hb3479ef_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-30_h10e41b3_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-30_hb3479ef_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.4-h286801f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-29_hc9a63f6_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-30_hc9a63f6_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.4-h39f12f2_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.28-openmp_hf332438_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.29-openmp_hf332438_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.3-h3bd63a1_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsentencepiece-0.2.0-he13a0af_10.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.48.0-h3f77e49_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021705-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025021705-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025021705-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021705-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021805-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025021805-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025021805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021805-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda @@ -484,110 +484,110 @@ packages: license_family: Apache size: 1178260 timestamp: 1736008642885 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-29_h59b9bed_openblas.conda - build_number: 29 - sha256: 6b23d5bc011b6835e976dde103850c9b9f0b597d8aaecc78c31348de3dbb03e8 - md5: 9667465082f03fc0d6286840d0b28d93 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-30_h59b9bed_openblas.conda + build_number: 30 + sha256: 46b831c6adac121494a9557a964fcb1e3b31bd59e5bedcd1d9f8787e94498bf6 + md5: 0ea863eeebb367d82716fc8f83d11eb5 depends: - - libopenblas >=0.3.28,<0.3.29.0a0 - - libopenblas >=0.3.28,<1.0a0 + - libopenblas >=0.3.29,<0.3.30.0a0 + - libopenblas >=0.3.29,<1.0a0 - mkl >=2024.2.2,<2025.0a0 constrains: - - liblapacke =3.9.0=29*_openblas - - libcblas =3.9.0=29*_openblas - - liblapack =3.9.0=29*_openblas - - blas =2.129=openblas + - libcblas =3.9.0=30*_openblas + - liblapack =3.9.0=30*_openblas + - liblapacke =3.9.0=30*_openblas + - blas =2.130=openblas arch: x86_64 platform: linux license: BSD-3-Clause license_family: BSD - size: 16917 - timestamp: 1739425832677 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-29_h1a9f1db_openblas.conda - build_number: 29 - sha256: 973d85867efe198eeda6d01c73258b3ffd2d1bd227c18b663fe6a1fab292e0f5 - md5: e98e99f1ceb36f52504bb122435756c5 - depends: - - libopenblas >=0.3.28,<0.3.29.0a0 - - libopenblas >=0.3.28,<1.0a0 + size: 16932 + timestamp: 1739836222334 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-30_h1a9f1db_openblas.conda + build_number: 30 + sha256: 50fc3d327a95a604120715e14447b497bf52b7b13de556f068610c6f34f95da2 + md5: f62b3030cc0c37b06cd6b7e771d99be9 + depends: + - libopenblas >=0.3.29,<0.3.30.0a0 + - libopenblas >=0.3.29,<1.0a0 constrains: - - blas =2.129=openblas - - libcblas =3.9.0=29*_openblas - - liblapacke =3.9.0=29*_openblas - - liblapack =3.9.0=29*_openblas + - libcblas =3.9.0=30*_openblas + - blas =2.130=openblas + - liblapacke =3.9.0=30*_openblas + - liblapack =3.9.0=30*_openblas arch: aarch64 platform: linux license: BSD-3-Clause license_family: BSD - size: 16884 - timestamp: 1739426012764 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-29_h10e41b3_openblas.conda - build_number: 29 - sha256: a966b39403203dfe122e2eefe9f3a04b353dc7c2fa76703f0d78fddc4e849704 - md5: 6ebbed2244408eca4f7569b532f813bd - depends: - - libopenblas >=0.3.28,<0.3.29.0a0 - - libopenblas >=0.3.28,<1.0a0 + size: 16841 + timestamp: 1739836305440 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-30_h10e41b3_openblas.conda + build_number: 30 + sha256: efdb82267966dff85123334ed0f7f4773ab4b093187c5495f2f92f892e2542d4 + md5: 1317dcfcde16781b5d446bfb4c81b848 + depends: + - libopenblas >=0.3.29,<0.3.30.0a0 + - libopenblas >=0.3.29,<1.0a0 constrains: - - liblapacke =3.9.0=29*_openblas - - libcblas =3.9.0=29*_openblas - - blas =2.129=openblas - - liblapack =3.9.0=29*_openblas + - libcblas =3.9.0=30*_openblas + - liblapack =3.9.0=30*_openblas + - blas =2.130=openblas + - liblapacke =3.9.0=30*_openblas arch: arm64 platform: osx license: BSD-3-Clause license_family: BSD - size: 17046 - timestamp: 1739426231872 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-29_he106b2a_openblas.conda - build_number: 29 - sha256: a0591b9bee742858b44ceee4970d4c217eb50dca12f7af7dc543eeace91d0e0c - md5: 1909bbfb9aef80e329f5e9a784014e00 - depends: - - libblas 3.9.0 29_h59b9bed_openblas + size: 17013 + timestamp: 1739836593880 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-30_he106b2a_openblas.conda + build_number: 30 + sha256: 3db0177e5650fbaad94f026796c5c9762268c5f22d65dda1b3c9b8c50379254c + md5: d57f230608417264fb1daaddc5f05cca + depends: + - libblas 3.9.0 30_h59b9bed_openblas - mkl >=2024.2.2,<2025.0a0 constrains: - - liblapacke =3.9.0=29*_openblas - - liblapack =3.9.0=29*_openblas - - blas =2.129=openblas + - liblapack =3.9.0=30*_openblas + - liblapacke =3.9.0=30*_openblas + - blas =2.130=openblas arch: x86_64 platform: linux license: BSD-3-Clause license_family: BSD - size: 16866 - timestamp: 1739425843922 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-29_hab92f65_openblas.conda - build_number: 29 - sha256: a7ecf68634582e8291a3ce76836394a87c38e684255b2c1514dec0aeddcb2004 - md5: 8dd4788ae5e492c771c5b51661ac9102 - depends: - - libblas 3.9.0 29_h1a9f1db_openblas + size: 16886 + timestamp: 1739836232507 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-30_hab92f65_openblas.conda + build_number: 30 + sha256: 878bf1d1b75c9db13cd16486d880228c163b0fe36911f8bcece79a4fd2583b44 + md5: b3b76e1a06d0f89ca5c24935b0541510 + depends: + - libblas 3.9.0 30_h1a9f1db_openblas constrains: - - blas =2.129=openblas - - liblapacke =3.9.0=29*_openblas - - liblapack =3.9.0=29*_openblas + - blas =2.130=openblas + - liblapacke =3.9.0=30*_openblas + - liblapack =3.9.0=30*_openblas arch: aarch64 platform: linux license: BSD-3-Clause license_family: BSD - size: 16837 - timestamp: 1739426020271 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-29_hb3479ef_openblas.conda - build_number: 29 - sha256: 5fb812ca6b194a0d4ea6c780fba9afab87f7da7b8c4558cfe2954e27bb07a4a9 - md5: cc30b97c4a6bc1984781bf147daa015b - depends: - - libblas 3.9.0 29_h10e41b3_openblas + size: 16777 + timestamp: 1739836311343 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-30_hb3479ef_openblas.conda + build_number: 30 + sha256: 6d5935d1df2558d84367f183050e7291ec18cdf44d55093ce5a5ca6228d7ff1b + md5: 7b50ccb7f672a8a793c64f7bfce84472 + depends: + - libblas 3.9.0 30_h10e41b3_openblas constrains: - - liblapack =3.9.0=29*_openblas - - blas =2.129=openblas - - liblapacke =3.9.0=29*_openblas + - liblapack =3.9.0=30*_openblas + - blas =2.130=openblas + - liblapacke =3.9.0=30*_openblas arch: arm64 platform: osx license: BSD-3-Clause license_family: BSD - size: 16983 - timestamp: 1739426238799 + size: 16922 + timestamp: 1739836601500 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda sha256: 776092346da87a2a23502e14d91eb0c32699c4a1522b7331537bd1c3751dcff5 md5: 5b3e1610ff8bd5443476b91d618f5b77 @@ -861,65 +861,66 @@ packages: license_family: BSD size: 2423200 timestamp: 1731374922090 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-hd590300_2.conda - sha256: 8ac2f6a9f186e76539439e50505d98581472fedb347a20e7d1f36429849f05c9 - md5: d66573916ffcf376178462f1b61c941e +- conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h4ce23a2_0.conda + sha256: 659a83c0c184a30336ca512d670a7db56bfb5e289caa9ee641e6f78fd2326463 + md5: 0743bcd51fc4e6e0367e0aaf41e9bebc depends: - - libgcc-ng >=12 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 arch: x86_64 platform: linux license: LGPL-2.1-only - size: 705775 - timestamp: 1702682170569 -- conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-29_h7ac8fdf_openblas.conda - build_number: 29 - sha256: 27f281ced109be37a3cd94dd5b84a15ecc885eac3d3f956b79216126606a1366 - md5: bd7d18666da757d56f5af2e0eb2af688 - depends: - - libblas 3.9.0 29_h59b9bed_openblas + size: 713745 + timestamp: 1739866934640 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-30_h7ac8fdf_openblas.conda + build_number: 30 + sha256: 94bbd63969d46e7e0a0c5b37061fc882402fdb6004f021c82fa082f66f8049d5 + md5: cf25476fc9c6aab3c59a70e4080962d5 + depends: + - libblas 3.9.0 30_h59b9bed_openblas - mkl >=2024.2.2,<2025.0a0 constrains: - - liblapacke =3.9.0=29*_openblas - - libcblas =3.9.0=29*_openblas - - blas =2.129=openblas + - libcblas =3.9.0=30*_openblas + - blas =2.130=openblas + - liblapacke =3.9.0=30*_openblas arch: x86_64 platform: linux license: BSD-3-Clause license_family: BSD - size: 16865 - timestamp: 1739425856613 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-29_h411afd4_openblas.conda - build_number: 29 - sha256: d7aa87be996cc89516b2ae2430317fe7401c66eaf739bf13833b6cc137c2511a - md5: 131b70f675e6c9a808c5c601bfdb8300 - depends: - - libblas 3.9.0 29_h1a9f1db_openblas + size: 16889 + timestamp: 1739836243035 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-30_h411afd4_openblas.conda + build_number: 30 + sha256: 05720b9d62260048fa64d2ca1ee0ba0eef3496eb9b337cd277dbdbffcd976fe0 + md5: 3d5dfd69d16af6a64483a9eb17610923 + depends: + - libblas 3.9.0 30_h1a9f1db_openblas constrains: - - blas =2.129=openblas - - libcblas =3.9.0=29*_openblas - - liblapacke =3.9.0=29*_openblas + - libcblas =3.9.0=30*_openblas + - blas =2.130=openblas + - liblapacke =3.9.0=30*_openblas arch: aarch64 platform: linux license: BSD-3-Clause license_family: BSD - size: 16836 - timestamp: 1739426027617 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-29_hc9a63f6_openblas.conda - build_number: 29 - sha256: de23734b43bd3d788d87db223605961129df3f464f0fafabfb3bd9265766472f - md5: 523116f84153f74aa9541278faff40d8 - depends: - - libblas 3.9.0 29_h10e41b3_openblas + size: 16796 + timestamp: 1739836317218 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-30_hc9a63f6_openblas.conda + build_number: 30 + sha256: ad78d4fafde96659b429174fef4a0edf4c937876260c13c5f301d14779b3e36c + md5: af38e475d8538c65cb8ce0f1bfe2e573 + depends: + - libblas 3.9.0 30_h10e41b3_openblas constrains: - - libcblas =3.9.0=29*_openblas - - blas =2.129=openblas - - liblapacke =3.9.0=29*_openblas + - libcblas =3.9.0=30*_openblas + - blas =2.130=openblas + - liblapacke =3.9.0=30*_openblas arch: arm64 platform: osx license: BSD-3-Clause license_family: BSD - size: 16988 - timestamp: 1739426245773 + size: 16939 + timestamp: 1739836608362 - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda sha256: cad52e10319ca4585bc37f0bc7cce99ec7c15dc9168e42ccb96b741b0a27db3f md5: 42d5b6a0f30d3c10cd88cb8584fda1cb @@ -973,53 +974,53 @@ packages: license_family: GPL size: 34501 timestamp: 1697358973269 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.28-pthreads_h94d23a6_1.conda - sha256: 99ba271d8a80a1af2723f2e124ffd91d850074c0389c067e6d96d72a2dbfeabe - md5: 62857b389e42b36b686331bec0922050 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.29-pthreads_h94d23a6_0.conda + sha256: cc5389ea254f111ef17a53df75e8e5209ef2ea6117e3f8aced88b5a8e51f11c4 + md5: 0a4d0252248ef9a0f88f2ba8b8a08e12 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=14 - libgfortran - libgfortran5 >=14.2.0 constrains: - - openblas >=0.3.28,<0.3.29.0a0 + - openblas >=0.3.29,<0.3.30.0a0 arch: x86_64 platform: linux license: BSD-3-Clause license_family: BSD - size: 5578513 - timestamp: 1730772671118 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.28-pthreads_h9d3fd7e_1.conda - sha256: 30623a40764e935aa77e0d4db54c1a1589189a9bf3a03fdb445505c1e319b5a6 - md5: e8dde93dd199da3c1f2c1fcfd0042cd4 + size: 5919288 + timestamp: 1739825731827 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.29-pthreads_h9d3fd7e_0.conda + sha256: 3a2ccf4c9098cd18a636e9b7fff947fdeb4962bcfb75c9d6fd80b8c50caf6a3c + md5: a99e2bfcb1ad6362544c71281eb617e9 depends: - libgcc >=14 - libgfortran - libgfortran5 >=14.2.0 constrains: - - openblas >=0.3.28,<0.3.29.0a0 + - openblas >=0.3.29,<0.3.30.0a0 arch: aarch64 platform: linux license: BSD-3-Clause license_family: BSD - size: 4793435 - timestamp: 1730773029647 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.28-openmp_hf332438_1.conda - sha256: 62bb669c37a845129096f73d446cdb6bb170e4927f2fea2b661329680dbbc373 - md5: 40803a48d947c8639da6704e9a44d3ce + size: 4801657 + timestamp: 1739825308974 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.29-openmp_hf332438_0.conda + sha256: 8989d9e01ec8c9b2d48dbb5efbe70b356fcd15990fb53b64fcb84798982c0343 + md5: 0cd1148c68f09027ee0b0f0179f77c30 depends: - __osx >=11.0 - libgfortran 5.* - libgfortran5 >=13.2.0 - llvm-openmp >=18.1.8 constrains: - - openblas >=0.3.28,<0.3.29.0a0 + - openblas >=0.3.29,<0.3.30.0a0 arch: arm64 platform: osx license: BSD-3-Clause license_family: BSD - size: 4165774 - timestamp: 1730772154295 + size: 4168442 + timestamp: 1739825514918 - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda sha256: 51125ebb8b7152e4a4e69fd2398489c4ec8473195c27cde3cbdf1cb6d18c5493 md5: d8703f1ffe5a06356f06467f1d0b9464 @@ -1345,48 +1346,48 @@ packages: license_family: APACHE size: 280830 timestamp: 1736986295869 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021705-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021805-release.conda noarch: python - sha256: f357a97439076d8b14482639424613726c391ec4483d6be9129060d3e4760f21 - md5: 28ccc6bbdfa41f375ee72fe1c1c10b2e + sha256: 5abd2869c2a3e71f474e4fada2e32dbf664d886d0d5ab540872936dec3e30260 + md5: a36709ec752c9286fc680af014bc4208 depends: - - max-core ==25.2.0.dev2025021705 release - - max-python ==25.2.0.dev2025021705 release - - mojo-jupyter ==25.2.0.dev2025021705 release - - mblack ==25.2.0.dev2025021705 release + - max-core ==25.2.0.dev2025021805 release + - max-python ==25.2.0.dev2025021805 release + - mojo-jupyter ==25.2.0.dev2025021805 release + - mblack ==25.2.0.dev2025021805 release license: LicenseRef-Modular-Proprietary - size: 9900 - timestamp: 1739769476049 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025021705-release.conda - sha256: cb9400c54b963f03d04d6c843881380bd3112c30a8fbe9e48db931620bd1ebb8 - md5: 381af09e94b55adb4b8409e9607f03df + size: 9903 + timestamp: 1739855815922 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025021805-release.conda + sha256: 340e8cb57a7bb09161be9967d243686d2bde6d33c3a459434b64850f655a6ebf + md5: 16c9ab16f86ea77c968f2ec9d8490b45 depends: - - mblack ==25.2.0.dev2025021705 release + - mblack ==25.2.0.dev2025021805 release license: LicenseRef-Modular-Proprietary - size: 243571245 - timestamp: 1739769478481 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025021705-release.conda - sha256: f7dd60e39525b12a5f74d890a41aa8d3343d3cce4cea55eadf2f6cc3c3d11aa1 - md5: 257b6f0919811bb28c1ba9da36b42943 + size: 243537705 + timestamp: 1739855815922 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025021805-release.conda + sha256: 208db98626d7b13d83370cb148ed4c3b298ccb4be47735cb5c637482dc757e2d + md5: ffef7cb1076e8fff0bbf234ab579e490 depends: - - mblack ==25.2.0.dev2025021705 release + - mblack ==25.2.0.dev2025021805 release license: LicenseRef-Modular-Proprietary - size: 246181682 - timestamp: 1739769476049 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025021705-release.conda - sha256: 1a5234bedb53af4c11a05e86a972d252365eb0fb4e9eadb07601a97c13a3e580 - md5: 8a274c64491be70ab860f2749cdbded8 + size: 246180299 + timestamp: 1739855933149 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025021805-release.conda + sha256: 358feba2a0de87990d5195f15b9f7c72d54735c651d2387dc9b19d9f18a5a808 + md5: 03c4c62591cfdceeedb187c81aa39e85 depends: - - mblack ==25.2.0.dev2025021705 release + - mblack ==25.2.0.dev2025021805 release license: LicenseRef-Modular-Proprietary - size: 211871421 - timestamp: 1739770743850 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025021705-release.conda + size: 211888906 + timestamp: 1739857002577 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025021805-release.conda noarch: python - sha256: 5500aa0ced5c8d2b313782ac67518891c5fbaa99e4ed84aaa20f1bcd181364be - md5: 21ad39ec09ec7dd9be8dd6b104a65b6c + sha256: 628691ed2774526488211fd2e8dc1d7defc06e4ec2f01bddf1225e5f9a2c55c7 + md5: bad8379abe776c441bf27819069be200 depends: - - max-core ==25.2.0.dev2025021705 release + - max-core ==25.2.0.dev2025021805 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1424,14 +1425,14 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 120661171 - timestamp: 1739769478481 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025021705-release.conda + size: 120604349 + timestamp: 1739855815922 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025021805-release.conda noarch: python - sha256: 08e02fd88975d86206410e2573a460158f71eafa431df1631359e004ce005163 - md5: c3b325b2c14c3ae2c82d37894daef2f4 + sha256: 929e59132a7c6525d8fcdd6de038a662d8676feba0ced0dd5fc587c54d0340b0 + md5: 7c27fe619fe036d42d317cc56c6e52de depends: - - max-core ==25.2.0.dev2025021705 release + - max-core ==25.2.0.dev2025021805 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1469,14 +1470,14 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 123214020 - timestamp: 1739769476049 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025021705-release.conda + size: 123218799 + timestamp: 1739855933149 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025021805-release.conda noarch: python - sha256: 686735af9671c174ad98929602236992efdcbe682961ba5637f7babaa7779414 - md5: 3163d7c7ac36d35f3a1722ca6f24c802 + sha256: 3cfb0055a5644ad9c53dec2d072d7aab4200bec29e321ff1bf0e2304148559a4 + md5: 6649b504b69613c9d0d0563f5dda8cac depends: - - max-core ==25.2.0.dev2025021705 release + - max-core ==25.2.0.dev2025021805 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1514,12 +1515,12 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 110070584 - timestamp: 1739770743850 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021705-release.conda + size: 110049004 + timestamp: 1739857002577 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021805-release.conda noarch: python - sha256: 13a8735d351148c95ff8030ea49010bc4cda358a5faf241689db15197bdaf7fb - md5: f595aa1a6832846493d7c9cb48bd0f5d + sha256: c2ce9921584024a755f45d2a7ba764a4e527a7bfc3aa7798e056e9fea35a4eb1 + md5: c90d37ff9d68f874286acdb235b62cfa depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -1530,8 +1531,8 @@ packages: - typing_extensions >=v4.12.2 - python license: MIT - size: 130855 - timestamp: 1739769476049 + size: 130850 + timestamp: 1739855815922 - conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-2024.2.2-ha957f24_16.conda sha256: 77906b0acead8f86b489da46f53916e624897338770dbf70b04b8f673c9273c1 md5: 1459379c79dda834673426504d52b319 @@ -1546,18 +1547,18 @@ packages: license_family: Proprietary size: 124718448 timestamp: 1730231808335 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021705-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021805-release.conda noarch: python - sha256: ff89ce5074726958ff4cefe09966470947ab40ebc5e4bbe4f8e3fe8c4d5d7263 - md5: c7ae6ef843f549adb530cff568cef5bc + sha256: 5ff1420517896833664e430108a243134424ff45c78e00fc760d77525a91a750 + md5: e3f2fef53386541378382e32801068d7 depends: - - max-core ==25.2.0.dev2025021705 release + - max-core ==25.2.0.dev2025021805 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22994 - timestamp: 1739769476049 + size: 22982 + timestamp: 1739855815922 - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda sha256: 1895f47b7d68581a6facde5cb13ab8c2764c2e53a76bd746f8f98910dc4e08fe md5: 29097e7ea634a45cc5386b95cac6568f diff --git a/examples/testing/magic.lock b/examples/testing/magic.lock index b1f0849038..339491c229 100644 --- a/examples/testing/magic.lock +++ b/examples/testing/magic.lock @@ -19,8 +19,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-29_h59b9bed_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-29_he106b2a_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-30_h59b9bed_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-30_he106b2a_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_0.conda @@ -29,11 +29,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hd5240d6_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libhwloc-2.11.2-default_h0d58e46_1001.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-hd590300_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-29_h7ac8fdf_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h4ce23a2_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-30_h7ac8fdf_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.28-pthreads_h94d23a6_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.29-pthreads_h94d23a6_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsentencepiece-0.2.0-h8e10757_10.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda @@ -45,12 +45,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.5-h0d44e9d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/llvm-openmp-19.1.7-h024ca30_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025021705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025021705-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025021805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025021805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021805-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-2024.2.2-ha957f24_16.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021805-release.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-h2d0b736_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda @@ -89,8 +89,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/krb5-1.21.3-h50a48e9_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h18dbdb1_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-29_h1a9f1db_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-29_hab92f65_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-30_h1a9f1db_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-30_hab92f65_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20250104-pl5321h976ea20_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.6.4-h5ad3122_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.4.6-he21f813_0.conda @@ -99,10 +99,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-29_h411afd4_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-30_h411afd4_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.4-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.28-pthreads_h9d3fd7e_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.29-pthreads_h9d3fd7e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.3-h44a3b7b_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsentencepiece-0.2.0-h6164ad9_10.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.20-h68df207_0.conda @@ -112,11 +112,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025021705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025021705-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021705-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025021805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025021805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021805-release.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-ha32ae93_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda @@ -151,28 +151,28 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_h07bc746_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-29_h10e41b3_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-29_hb3479ef_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-30_h10e41b3_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-30_hb3479ef_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.4-h286801f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-29_hc9a63f6_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-30_hc9a63f6_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.4-h39f12f2_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.28-openmp_hf332438_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.29-openmp_hf332438_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.3-h3bd63a1_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsentencepiece-0.2.0-he13a0af_10.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.48.0-h3f77e49_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021705-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025021705-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025021705-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021705-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021805-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025021805-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025021805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021805-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda @@ -484,110 +484,110 @@ packages: license_family: Apache size: 1178260 timestamp: 1736008642885 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-29_h59b9bed_openblas.conda - build_number: 29 - sha256: 6b23d5bc011b6835e976dde103850c9b9f0b597d8aaecc78c31348de3dbb03e8 - md5: 9667465082f03fc0d6286840d0b28d93 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-30_h59b9bed_openblas.conda + build_number: 30 + sha256: 46b831c6adac121494a9557a964fcb1e3b31bd59e5bedcd1d9f8787e94498bf6 + md5: 0ea863eeebb367d82716fc8f83d11eb5 depends: - - libopenblas >=0.3.28,<0.3.29.0a0 - - libopenblas >=0.3.28,<1.0a0 + - libopenblas >=0.3.29,<0.3.30.0a0 + - libopenblas >=0.3.29,<1.0a0 - mkl >=2024.2.2,<2025.0a0 constrains: - - liblapacke =3.9.0=29*_openblas - - libcblas =3.9.0=29*_openblas - - liblapack =3.9.0=29*_openblas - - blas =2.129=openblas + - libcblas =3.9.0=30*_openblas + - liblapack =3.9.0=30*_openblas + - liblapacke =3.9.0=30*_openblas + - blas =2.130=openblas arch: x86_64 platform: linux license: BSD-3-Clause license_family: BSD - size: 16917 - timestamp: 1739425832677 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-29_h1a9f1db_openblas.conda - build_number: 29 - sha256: 973d85867efe198eeda6d01c73258b3ffd2d1bd227c18b663fe6a1fab292e0f5 - md5: e98e99f1ceb36f52504bb122435756c5 - depends: - - libopenblas >=0.3.28,<0.3.29.0a0 - - libopenblas >=0.3.28,<1.0a0 + size: 16932 + timestamp: 1739836222334 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-30_h1a9f1db_openblas.conda + build_number: 30 + sha256: 50fc3d327a95a604120715e14447b497bf52b7b13de556f068610c6f34f95da2 + md5: f62b3030cc0c37b06cd6b7e771d99be9 + depends: + - libopenblas >=0.3.29,<0.3.30.0a0 + - libopenblas >=0.3.29,<1.0a0 constrains: - - blas =2.129=openblas - - libcblas =3.9.0=29*_openblas - - liblapacke =3.9.0=29*_openblas - - liblapack =3.9.0=29*_openblas + - libcblas =3.9.0=30*_openblas + - blas =2.130=openblas + - liblapacke =3.9.0=30*_openblas + - liblapack =3.9.0=30*_openblas arch: aarch64 platform: linux license: BSD-3-Clause license_family: BSD - size: 16884 - timestamp: 1739426012764 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-29_h10e41b3_openblas.conda - build_number: 29 - sha256: a966b39403203dfe122e2eefe9f3a04b353dc7c2fa76703f0d78fddc4e849704 - md5: 6ebbed2244408eca4f7569b532f813bd - depends: - - libopenblas >=0.3.28,<0.3.29.0a0 - - libopenblas >=0.3.28,<1.0a0 + size: 16841 + timestamp: 1739836305440 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-30_h10e41b3_openblas.conda + build_number: 30 + sha256: efdb82267966dff85123334ed0f7f4773ab4b093187c5495f2f92f892e2542d4 + md5: 1317dcfcde16781b5d446bfb4c81b848 + depends: + - libopenblas >=0.3.29,<0.3.30.0a0 + - libopenblas >=0.3.29,<1.0a0 constrains: - - liblapacke =3.9.0=29*_openblas - - libcblas =3.9.0=29*_openblas - - blas =2.129=openblas - - liblapack =3.9.0=29*_openblas + - libcblas =3.9.0=30*_openblas + - liblapack =3.9.0=30*_openblas + - blas =2.130=openblas + - liblapacke =3.9.0=30*_openblas arch: arm64 platform: osx license: BSD-3-Clause license_family: BSD - size: 17046 - timestamp: 1739426231872 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-29_he106b2a_openblas.conda - build_number: 29 - sha256: a0591b9bee742858b44ceee4970d4c217eb50dca12f7af7dc543eeace91d0e0c - md5: 1909bbfb9aef80e329f5e9a784014e00 - depends: - - libblas 3.9.0 29_h59b9bed_openblas + size: 17013 + timestamp: 1739836593880 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-30_he106b2a_openblas.conda + build_number: 30 + sha256: 3db0177e5650fbaad94f026796c5c9762268c5f22d65dda1b3c9b8c50379254c + md5: d57f230608417264fb1daaddc5f05cca + depends: + - libblas 3.9.0 30_h59b9bed_openblas - mkl >=2024.2.2,<2025.0a0 constrains: - - liblapacke =3.9.0=29*_openblas - - liblapack =3.9.0=29*_openblas - - blas =2.129=openblas + - liblapack =3.9.0=30*_openblas + - liblapacke =3.9.0=30*_openblas + - blas =2.130=openblas arch: x86_64 platform: linux license: BSD-3-Clause license_family: BSD - size: 16866 - timestamp: 1739425843922 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-29_hab92f65_openblas.conda - build_number: 29 - sha256: a7ecf68634582e8291a3ce76836394a87c38e684255b2c1514dec0aeddcb2004 - md5: 8dd4788ae5e492c771c5b51661ac9102 - depends: - - libblas 3.9.0 29_h1a9f1db_openblas + size: 16886 + timestamp: 1739836232507 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-30_hab92f65_openblas.conda + build_number: 30 + sha256: 878bf1d1b75c9db13cd16486d880228c163b0fe36911f8bcece79a4fd2583b44 + md5: b3b76e1a06d0f89ca5c24935b0541510 + depends: + - libblas 3.9.0 30_h1a9f1db_openblas constrains: - - blas =2.129=openblas - - liblapacke =3.9.0=29*_openblas - - liblapack =3.9.0=29*_openblas + - blas =2.130=openblas + - liblapacke =3.9.0=30*_openblas + - liblapack =3.9.0=30*_openblas arch: aarch64 platform: linux license: BSD-3-Clause license_family: BSD - size: 16837 - timestamp: 1739426020271 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-29_hb3479ef_openblas.conda - build_number: 29 - sha256: 5fb812ca6b194a0d4ea6c780fba9afab87f7da7b8c4558cfe2954e27bb07a4a9 - md5: cc30b97c4a6bc1984781bf147daa015b - depends: - - libblas 3.9.0 29_h10e41b3_openblas + size: 16777 + timestamp: 1739836311343 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-30_hb3479ef_openblas.conda + build_number: 30 + sha256: 6d5935d1df2558d84367f183050e7291ec18cdf44d55093ce5a5ca6228d7ff1b + md5: 7b50ccb7f672a8a793c64f7bfce84472 + depends: + - libblas 3.9.0 30_h10e41b3_openblas constrains: - - liblapack =3.9.0=29*_openblas - - blas =2.129=openblas - - liblapacke =3.9.0=29*_openblas + - liblapack =3.9.0=30*_openblas + - blas =2.130=openblas + - liblapacke =3.9.0=30*_openblas arch: arm64 platform: osx license: BSD-3-Clause license_family: BSD - size: 16983 - timestamp: 1739426238799 + size: 16922 + timestamp: 1739836601500 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda sha256: 776092346da87a2a23502e14d91eb0c32699c4a1522b7331537bd1c3751dcff5 md5: 5b3e1610ff8bd5443476b91d618f5b77 @@ -861,65 +861,66 @@ packages: license_family: BSD size: 2423200 timestamp: 1731374922090 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-hd590300_2.conda - sha256: 8ac2f6a9f186e76539439e50505d98581472fedb347a20e7d1f36429849f05c9 - md5: d66573916ffcf376178462f1b61c941e +- conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h4ce23a2_0.conda + sha256: 659a83c0c184a30336ca512d670a7db56bfb5e289caa9ee641e6f78fd2326463 + md5: 0743bcd51fc4e6e0367e0aaf41e9bebc depends: - - libgcc-ng >=12 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 arch: x86_64 platform: linux license: LGPL-2.1-only - size: 705775 - timestamp: 1702682170569 -- conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-29_h7ac8fdf_openblas.conda - build_number: 29 - sha256: 27f281ced109be37a3cd94dd5b84a15ecc885eac3d3f956b79216126606a1366 - md5: bd7d18666da757d56f5af2e0eb2af688 - depends: - - libblas 3.9.0 29_h59b9bed_openblas + size: 713745 + timestamp: 1739866934640 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-30_h7ac8fdf_openblas.conda + build_number: 30 + sha256: 94bbd63969d46e7e0a0c5b37061fc882402fdb6004f021c82fa082f66f8049d5 + md5: cf25476fc9c6aab3c59a70e4080962d5 + depends: + - libblas 3.9.0 30_h59b9bed_openblas - mkl >=2024.2.2,<2025.0a0 constrains: - - liblapacke =3.9.0=29*_openblas - - libcblas =3.9.0=29*_openblas - - blas =2.129=openblas + - libcblas =3.9.0=30*_openblas + - blas =2.130=openblas + - liblapacke =3.9.0=30*_openblas arch: x86_64 platform: linux license: BSD-3-Clause license_family: BSD - size: 16865 - timestamp: 1739425856613 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-29_h411afd4_openblas.conda - build_number: 29 - sha256: d7aa87be996cc89516b2ae2430317fe7401c66eaf739bf13833b6cc137c2511a - md5: 131b70f675e6c9a808c5c601bfdb8300 - depends: - - libblas 3.9.0 29_h1a9f1db_openblas + size: 16889 + timestamp: 1739836243035 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-30_h411afd4_openblas.conda + build_number: 30 + sha256: 05720b9d62260048fa64d2ca1ee0ba0eef3496eb9b337cd277dbdbffcd976fe0 + md5: 3d5dfd69d16af6a64483a9eb17610923 + depends: + - libblas 3.9.0 30_h1a9f1db_openblas constrains: - - blas =2.129=openblas - - libcblas =3.9.0=29*_openblas - - liblapacke =3.9.0=29*_openblas + - libcblas =3.9.0=30*_openblas + - blas =2.130=openblas + - liblapacke =3.9.0=30*_openblas arch: aarch64 platform: linux license: BSD-3-Clause license_family: BSD - size: 16836 - timestamp: 1739426027617 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-29_hc9a63f6_openblas.conda - build_number: 29 - sha256: de23734b43bd3d788d87db223605961129df3f464f0fafabfb3bd9265766472f - md5: 523116f84153f74aa9541278faff40d8 - depends: - - libblas 3.9.0 29_h10e41b3_openblas + size: 16796 + timestamp: 1739836317218 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-30_hc9a63f6_openblas.conda + build_number: 30 + sha256: ad78d4fafde96659b429174fef4a0edf4c937876260c13c5f301d14779b3e36c + md5: af38e475d8538c65cb8ce0f1bfe2e573 + depends: + - libblas 3.9.0 30_h10e41b3_openblas constrains: - - libcblas =3.9.0=29*_openblas - - blas =2.129=openblas - - liblapacke =3.9.0=29*_openblas + - libcblas =3.9.0=30*_openblas + - blas =2.130=openblas + - liblapacke =3.9.0=30*_openblas arch: arm64 platform: osx license: BSD-3-Clause license_family: BSD - size: 16988 - timestamp: 1739426245773 + size: 16939 + timestamp: 1739836608362 - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda sha256: cad52e10319ca4585bc37f0bc7cce99ec7c15dc9168e42ccb96b741b0a27db3f md5: 42d5b6a0f30d3c10cd88cb8584fda1cb @@ -973,53 +974,53 @@ packages: license_family: GPL size: 34501 timestamp: 1697358973269 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.28-pthreads_h94d23a6_1.conda - sha256: 99ba271d8a80a1af2723f2e124ffd91d850074c0389c067e6d96d72a2dbfeabe - md5: 62857b389e42b36b686331bec0922050 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.29-pthreads_h94d23a6_0.conda + sha256: cc5389ea254f111ef17a53df75e8e5209ef2ea6117e3f8aced88b5a8e51f11c4 + md5: 0a4d0252248ef9a0f88f2ba8b8a08e12 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=14 - libgfortran - libgfortran5 >=14.2.0 constrains: - - openblas >=0.3.28,<0.3.29.0a0 + - openblas >=0.3.29,<0.3.30.0a0 arch: x86_64 platform: linux license: BSD-3-Clause license_family: BSD - size: 5578513 - timestamp: 1730772671118 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.28-pthreads_h9d3fd7e_1.conda - sha256: 30623a40764e935aa77e0d4db54c1a1589189a9bf3a03fdb445505c1e319b5a6 - md5: e8dde93dd199da3c1f2c1fcfd0042cd4 + size: 5919288 + timestamp: 1739825731827 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.29-pthreads_h9d3fd7e_0.conda + sha256: 3a2ccf4c9098cd18a636e9b7fff947fdeb4962bcfb75c9d6fd80b8c50caf6a3c + md5: a99e2bfcb1ad6362544c71281eb617e9 depends: - libgcc >=14 - libgfortran - libgfortran5 >=14.2.0 constrains: - - openblas >=0.3.28,<0.3.29.0a0 + - openblas >=0.3.29,<0.3.30.0a0 arch: aarch64 platform: linux license: BSD-3-Clause license_family: BSD - size: 4793435 - timestamp: 1730773029647 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.28-openmp_hf332438_1.conda - sha256: 62bb669c37a845129096f73d446cdb6bb170e4927f2fea2b661329680dbbc373 - md5: 40803a48d947c8639da6704e9a44d3ce + size: 4801657 + timestamp: 1739825308974 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.29-openmp_hf332438_0.conda + sha256: 8989d9e01ec8c9b2d48dbb5efbe70b356fcd15990fb53b64fcb84798982c0343 + md5: 0cd1148c68f09027ee0b0f0179f77c30 depends: - __osx >=11.0 - libgfortran 5.* - libgfortran5 >=13.2.0 - llvm-openmp >=18.1.8 constrains: - - openblas >=0.3.28,<0.3.29.0a0 + - openblas >=0.3.29,<0.3.30.0a0 arch: arm64 platform: osx license: BSD-3-Clause license_family: BSD - size: 4165774 - timestamp: 1730772154295 + size: 4168442 + timestamp: 1739825514918 - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda sha256: 51125ebb8b7152e4a4e69fd2398489c4ec8473195c27cde3cbdf1cb6d18c5493 md5: d8703f1ffe5a06356f06467f1d0b9464 @@ -1345,48 +1346,48 @@ packages: license_family: APACHE size: 280830 timestamp: 1736986295869 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021705-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021805-release.conda noarch: python - sha256: f357a97439076d8b14482639424613726c391ec4483d6be9129060d3e4760f21 - md5: 28ccc6bbdfa41f375ee72fe1c1c10b2e + sha256: 5abd2869c2a3e71f474e4fada2e32dbf664d886d0d5ab540872936dec3e30260 + md5: a36709ec752c9286fc680af014bc4208 depends: - - max-core ==25.2.0.dev2025021705 release - - max-python ==25.2.0.dev2025021705 release - - mojo-jupyter ==25.2.0.dev2025021705 release - - mblack ==25.2.0.dev2025021705 release + - max-core ==25.2.0.dev2025021805 release + - max-python ==25.2.0.dev2025021805 release + - mojo-jupyter ==25.2.0.dev2025021805 release + - mblack ==25.2.0.dev2025021805 release license: LicenseRef-Modular-Proprietary - size: 9900 - timestamp: 1739769476049 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025021705-release.conda - sha256: cb9400c54b963f03d04d6c843881380bd3112c30a8fbe9e48db931620bd1ebb8 - md5: 381af09e94b55adb4b8409e9607f03df + size: 9903 + timestamp: 1739855815922 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025021805-release.conda + sha256: 340e8cb57a7bb09161be9967d243686d2bde6d33c3a459434b64850f655a6ebf + md5: 16c9ab16f86ea77c968f2ec9d8490b45 depends: - - mblack ==25.2.0.dev2025021705 release + - mblack ==25.2.0.dev2025021805 release license: LicenseRef-Modular-Proprietary - size: 243571245 - timestamp: 1739769478481 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025021705-release.conda - sha256: f7dd60e39525b12a5f74d890a41aa8d3343d3cce4cea55eadf2f6cc3c3d11aa1 - md5: 257b6f0919811bb28c1ba9da36b42943 + size: 243537705 + timestamp: 1739855815922 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025021805-release.conda + sha256: 208db98626d7b13d83370cb148ed4c3b298ccb4be47735cb5c637482dc757e2d + md5: ffef7cb1076e8fff0bbf234ab579e490 depends: - - mblack ==25.2.0.dev2025021705 release + - mblack ==25.2.0.dev2025021805 release license: LicenseRef-Modular-Proprietary - size: 246181682 - timestamp: 1739769476049 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025021705-release.conda - sha256: 1a5234bedb53af4c11a05e86a972d252365eb0fb4e9eadb07601a97c13a3e580 - md5: 8a274c64491be70ab860f2749cdbded8 + size: 246180299 + timestamp: 1739855933149 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025021805-release.conda + sha256: 358feba2a0de87990d5195f15b9f7c72d54735c651d2387dc9b19d9f18a5a808 + md5: 03c4c62591cfdceeedb187c81aa39e85 depends: - - mblack ==25.2.0.dev2025021705 release + - mblack ==25.2.0.dev2025021805 release license: LicenseRef-Modular-Proprietary - size: 211871421 - timestamp: 1739770743850 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025021705-release.conda + size: 211888906 + timestamp: 1739857002577 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025021805-release.conda noarch: python - sha256: 5500aa0ced5c8d2b313782ac67518891c5fbaa99e4ed84aaa20f1bcd181364be - md5: 21ad39ec09ec7dd9be8dd6b104a65b6c + sha256: 628691ed2774526488211fd2e8dc1d7defc06e4ec2f01bddf1225e5f9a2c55c7 + md5: bad8379abe776c441bf27819069be200 depends: - - max-core ==25.2.0.dev2025021705 release + - max-core ==25.2.0.dev2025021805 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1424,14 +1425,14 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 120661171 - timestamp: 1739769478481 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025021705-release.conda + size: 120604349 + timestamp: 1739855815922 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025021805-release.conda noarch: python - sha256: 08e02fd88975d86206410e2573a460158f71eafa431df1631359e004ce005163 - md5: c3b325b2c14c3ae2c82d37894daef2f4 + sha256: 929e59132a7c6525d8fcdd6de038a662d8676feba0ced0dd5fc587c54d0340b0 + md5: 7c27fe619fe036d42d317cc56c6e52de depends: - - max-core ==25.2.0.dev2025021705 release + - max-core ==25.2.0.dev2025021805 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1469,14 +1470,14 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 123214020 - timestamp: 1739769476049 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025021705-release.conda + size: 123218799 + timestamp: 1739855933149 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025021805-release.conda noarch: python - sha256: 686735af9671c174ad98929602236992efdcbe682961ba5637f7babaa7779414 - md5: 3163d7c7ac36d35f3a1722ca6f24c802 + sha256: 3cfb0055a5644ad9c53dec2d072d7aab4200bec29e321ff1bf0e2304148559a4 + md5: 6649b504b69613c9d0d0563f5dda8cac depends: - - max-core ==25.2.0.dev2025021705 release + - max-core ==25.2.0.dev2025021805 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1514,12 +1515,12 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 110070584 - timestamp: 1739770743850 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021705-release.conda + size: 110049004 + timestamp: 1739857002577 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021805-release.conda noarch: python - sha256: 13a8735d351148c95ff8030ea49010bc4cda358a5faf241689db15197bdaf7fb - md5: f595aa1a6832846493d7c9cb48bd0f5d + sha256: c2ce9921584024a755f45d2a7ba764a4e527a7bfc3aa7798e056e9fea35a4eb1 + md5: c90d37ff9d68f874286acdb235b62cfa depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -1530,8 +1531,8 @@ packages: - typing_extensions >=v4.12.2 - python license: MIT - size: 130855 - timestamp: 1739769476049 + size: 130850 + timestamp: 1739855815922 - conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-2024.2.2-ha957f24_16.conda sha256: 77906b0acead8f86b489da46f53916e624897338770dbf70b04b8f673c9273c1 md5: 1459379c79dda834673426504d52b319 @@ -1546,18 +1547,18 @@ packages: license_family: Proprietary size: 124718448 timestamp: 1730231808335 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021705-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021805-release.conda noarch: python - sha256: ff89ce5074726958ff4cefe09966470947ab40ebc5e4bbe4f8e3fe8c4d5d7263 - md5: c7ae6ef843f549adb530cff568cef5bc + sha256: 5ff1420517896833664e430108a243134424ff45c78e00fc760d77525a91a750 + md5: e3f2fef53386541378382e32801068d7 depends: - - max-core ==25.2.0.dev2025021705 release + - max-core ==25.2.0.dev2025021805 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22994 - timestamp: 1739769476049 + size: 22982 + timestamp: 1739855815922 - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda sha256: 1895f47b7d68581a6facde5cb13ab8c2764c2e53a76bd746f8f98910dc4e08fe md5: 29097e7ea634a45cc5386b95cac6568f diff --git a/magic.lock b/magic.lock index 78e75d5ea6..ea302510e7 100644 --- a/magic.lock +++ b/magic.lock @@ -43,11 +43,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/lit-19.1.7-pyhd8ed1ab_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025021705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025021705-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021705-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025021805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025021805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021805-release.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-h2d0b736_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda @@ -85,8 +85,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/krb5-1.21.3-h50a48e9_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h18dbdb1_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-29_h1a9f1db_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-29_hab92f65_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-30_h1a9f1db_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-30_hab92f65_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20250104-pl5321h976ea20_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.6.4-h5ad3122_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.4.6-he21f813_0.conda @@ -95,10 +95,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-29_h411afd4_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-30_h411afd4_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.4-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.28-pthreads_h9d3fd7e_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.29-pthreads_h9d3fd7e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.3-h44a3b7b_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsentencepiece-0.2.0-h6164ad9_10.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.20-h68df207_0.conda @@ -109,11 +109,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/lit-19.1.7-pyhd8ed1ab_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025021705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025021705-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021705-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025021805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025021805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021805-release.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-ha32ae93_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda @@ -148,17 +148,17 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_h07bc746_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-29_h10e41b3_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-29_hb3479ef_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-30_h10e41b3_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-30_hb3479ef_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.4-h286801f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-29_hc9a63f6_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-30_hc9a63f6_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.4-h39f12f2_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.28-openmp_hf332438_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.29-openmp_hf332438_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.3-h3bd63a1_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsentencepiece-0.2.0-he13a0af_10.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda @@ -166,11 +166,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/lit-19.1.7-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021705-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025021705-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025021705-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021705-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021805-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025021805-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025021805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021805-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda @@ -496,48 +496,49 @@ packages: - blas =2.128=openblas - liblapack =3.9.0=28*_openblas - liblapacke =3.9.0=28*_openblas + - mkl <2025 arch: x86_64 platform: linux license: BSD-3-Clause license_family: BSD size: 16621 timestamp: 1738114033763 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-29_h1a9f1db_openblas.conda - build_number: 29 - sha256: 973d85867efe198eeda6d01c73258b3ffd2d1bd227c18b663fe6a1fab292e0f5 - md5: e98e99f1ceb36f52504bb122435756c5 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-30_h1a9f1db_openblas.conda + build_number: 30 + sha256: 50fc3d327a95a604120715e14447b497bf52b7b13de556f068610c6f34f95da2 + md5: f62b3030cc0c37b06cd6b7e771d99be9 depends: - - libopenblas >=0.3.28,<0.3.29.0a0 - - libopenblas >=0.3.28,<1.0a0 + - libopenblas >=0.3.29,<0.3.30.0a0 + - libopenblas >=0.3.29,<1.0a0 constrains: - - blas =2.129=openblas - - libcblas =3.9.0=29*_openblas - - liblapacke =3.9.0=29*_openblas - - liblapack =3.9.0=29*_openblas + - libcblas =3.9.0=30*_openblas + - blas =2.130=openblas + - liblapacke =3.9.0=30*_openblas + - liblapack =3.9.0=30*_openblas arch: aarch64 platform: linux license: BSD-3-Clause license_family: BSD - size: 16884 - timestamp: 1739426012764 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-29_h10e41b3_openblas.conda - build_number: 29 - sha256: a966b39403203dfe122e2eefe9f3a04b353dc7c2fa76703f0d78fddc4e849704 - md5: 6ebbed2244408eca4f7569b532f813bd - depends: - - libopenblas >=0.3.28,<0.3.29.0a0 - - libopenblas >=0.3.28,<1.0a0 + size: 16841 + timestamp: 1739836305440 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-30_h10e41b3_openblas.conda + build_number: 30 + sha256: efdb82267966dff85123334ed0f7f4773ab4b093187c5495f2f92f892e2542d4 + md5: 1317dcfcde16781b5d446bfb4c81b848 + depends: + - libopenblas >=0.3.29,<0.3.30.0a0 + - libopenblas >=0.3.29,<1.0a0 constrains: - - liblapacke =3.9.0=29*_openblas - - libcblas =3.9.0=29*_openblas - - blas =2.129=openblas - - liblapack =3.9.0=29*_openblas + - libcblas =3.9.0=30*_openblas + - liblapack =3.9.0=30*_openblas + - blas =2.130=openblas + - liblapacke =3.9.0=30*_openblas arch: arm64 platform: osx license: BSD-3-Clause license_family: BSD - size: 17046 - timestamp: 1739426231872 + size: 17013 + timestamp: 1739836593880 - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-28_he106b2a_openblas.conda build_number: 28 sha256: de293e117db53e5d78b579136509c35a5e4ad11529c05f9af83cf89be4d30de1 @@ -548,44 +549,45 @@ packages: - blas =2.128=openblas - liblapack =3.9.0=28*_openblas - liblapacke =3.9.0=28*_openblas + - mkl <2025 arch: x86_64 platform: linux license: BSD-3-Clause license_family: BSD size: 16539 timestamp: 1738114043618 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-29_hab92f65_openblas.conda - build_number: 29 - sha256: a7ecf68634582e8291a3ce76836394a87c38e684255b2c1514dec0aeddcb2004 - md5: 8dd4788ae5e492c771c5b51661ac9102 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-30_hab92f65_openblas.conda + build_number: 30 + sha256: 878bf1d1b75c9db13cd16486d880228c163b0fe36911f8bcece79a4fd2583b44 + md5: b3b76e1a06d0f89ca5c24935b0541510 depends: - - libblas 3.9.0 29_h1a9f1db_openblas + - libblas 3.9.0 30_h1a9f1db_openblas constrains: - - blas =2.129=openblas - - liblapacke =3.9.0=29*_openblas - - liblapack =3.9.0=29*_openblas + - blas =2.130=openblas + - liblapacke =3.9.0=30*_openblas + - liblapack =3.9.0=30*_openblas arch: aarch64 platform: linux license: BSD-3-Clause license_family: BSD - size: 16837 - timestamp: 1739426020271 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-29_hb3479ef_openblas.conda - build_number: 29 - sha256: 5fb812ca6b194a0d4ea6c780fba9afab87f7da7b8c4558cfe2954e27bb07a4a9 - md5: cc30b97c4a6bc1984781bf147daa015b - depends: - - libblas 3.9.0 29_h10e41b3_openblas + size: 16777 + timestamp: 1739836311343 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-30_hb3479ef_openblas.conda + build_number: 30 + sha256: 6d5935d1df2558d84367f183050e7291ec18cdf44d55093ce5a5ca6228d7ff1b + md5: 7b50ccb7f672a8a793c64f7bfce84472 + depends: + - libblas 3.9.0 30_h10e41b3_openblas constrains: - - liblapack =3.9.0=29*_openblas - - blas =2.129=openblas - - liblapacke =3.9.0=29*_openblas + - liblapack =3.9.0=30*_openblas + - blas =2.130=openblas + - liblapacke =3.9.0=30*_openblas arch: arm64 platform: osx license: BSD-3-Clause license_family: BSD - size: 16983 - timestamp: 1739426238799 + size: 16922 + timestamp: 1739836601500 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda sha256: 776092346da87a2a23502e14d91eb0c32699c4a1522b7331537bd1c3751dcff5 md5: 5b3e1610ff8bd5443476b91d618f5b77 @@ -866,44 +868,45 @@ packages: - libcblas =3.9.0=28*_openblas - blas =2.128=openblas - liblapacke =3.9.0=28*_openblas + - mkl <2025 arch: x86_64 platform: linux license: BSD-3-Clause license_family: BSD size: 16553 timestamp: 1738114053556 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-29_h411afd4_openblas.conda - build_number: 29 - sha256: d7aa87be996cc89516b2ae2430317fe7401c66eaf739bf13833b6cc137c2511a - md5: 131b70f675e6c9a808c5c601bfdb8300 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-30_h411afd4_openblas.conda + build_number: 30 + sha256: 05720b9d62260048fa64d2ca1ee0ba0eef3496eb9b337cd277dbdbffcd976fe0 + md5: 3d5dfd69d16af6a64483a9eb17610923 depends: - - libblas 3.9.0 29_h1a9f1db_openblas + - libblas 3.9.0 30_h1a9f1db_openblas constrains: - - blas =2.129=openblas - - libcblas =3.9.0=29*_openblas - - liblapacke =3.9.0=29*_openblas + - libcblas =3.9.0=30*_openblas + - blas =2.130=openblas + - liblapacke =3.9.0=30*_openblas arch: aarch64 platform: linux license: BSD-3-Clause license_family: BSD - size: 16836 - timestamp: 1739426027617 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-29_hc9a63f6_openblas.conda - build_number: 29 - sha256: de23734b43bd3d788d87db223605961129df3f464f0fafabfb3bd9265766472f - md5: 523116f84153f74aa9541278faff40d8 - depends: - - libblas 3.9.0 29_h10e41b3_openblas + size: 16796 + timestamp: 1739836317218 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-30_hc9a63f6_openblas.conda + build_number: 30 + sha256: ad78d4fafde96659b429174fef4a0edf4c937876260c13c5f301d14779b3e36c + md5: af38e475d8538c65cb8ce0f1bfe2e573 + depends: + - libblas 3.9.0 30_h10e41b3_openblas constrains: - - libcblas =3.9.0=29*_openblas - - blas =2.129=openblas - - liblapacke =3.9.0=29*_openblas + - libcblas =3.9.0=30*_openblas + - blas =2.130=openblas + - liblapacke =3.9.0=30*_openblas arch: arm64 platform: osx license: BSD-3-Clause license_family: BSD - size: 16988 - timestamp: 1739426245773 + size: 16939 + timestamp: 1739836608362 - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda sha256: cad52e10319ca4585bc37f0bc7cce99ec7c15dc9168e42ccb96b741b0a27db3f md5: 42d5b6a0f30d3c10cd88cb8584fda1cb @@ -973,37 +976,37 @@ packages: license_family: BSD size: 5578513 timestamp: 1730772671118 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.28-pthreads_h9d3fd7e_1.conda - sha256: 30623a40764e935aa77e0d4db54c1a1589189a9bf3a03fdb445505c1e319b5a6 - md5: e8dde93dd199da3c1f2c1fcfd0042cd4 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.29-pthreads_h9d3fd7e_0.conda + sha256: 3a2ccf4c9098cd18a636e9b7fff947fdeb4962bcfb75c9d6fd80b8c50caf6a3c + md5: a99e2bfcb1ad6362544c71281eb617e9 depends: - libgcc >=14 - libgfortran - libgfortran5 >=14.2.0 constrains: - - openblas >=0.3.28,<0.3.29.0a0 + - openblas >=0.3.29,<0.3.30.0a0 arch: aarch64 platform: linux license: BSD-3-Clause license_family: BSD - size: 4793435 - timestamp: 1730773029647 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.28-openmp_hf332438_1.conda - sha256: 62bb669c37a845129096f73d446cdb6bb170e4927f2fea2b661329680dbbc373 - md5: 40803a48d947c8639da6704e9a44d3ce + size: 4801657 + timestamp: 1739825308974 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.29-openmp_hf332438_0.conda + sha256: 8989d9e01ec8c9b2d48dbb5efbe70b356fcd15990fb53b64fcb84798982c0343 + md5: 0cd1148c68f09027ee0b0f0179f77c30 depends: - __osx >=11.0 - libgfortran 5.* - libgfortran5 >=13.2.0 - llvm-openmp >=18.1.8 constrains: - - openblas >=0.3.28,<0.3.29.0a0 + - openblas >=0.3.29,<0.3.30.0a0 arch: arm64 platform: osx license: BSD-3-Clause license_family: BSD - size: 4165774 - timestamp: 1730772154295 + size: 4168442 + timestamp: 1739825514918 - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda sha256: 51125ebb8b7152e4a4e69fd2398489c4ec8473195c27cde3cbdf1cb6d18c5493 md5: d8703f1ffe5a06356f06467f1d0b9464 @@ -1308,48 +1311,48 @@ packages: license_family: APACHE size: 280830 timestamp: 1736986295869 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021705-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021805-release.conda noarch: python - sha256: f357a97439076d8b14482639424613726c391ec4483d6be9129060d3e4760f21 - md5: 28ccc6bbdfa41f375ee72fe1c1c10b2e + sha256: 5abd2869c2a3e71f474e4fada2e32dbf664d886d0d5ab540872936dec3e30260 + md5: a36709ec752c9286fc680af014bc4208 depends: - - max-core ==25.2.0.dev2025021705 release - - max-python ==25.2.0.dev2025021705 release - - mojo-jupyter ==25.2.0.dev2025021705 release - - mblack ==25.2.0.dev2025021705 release + - max-core ==25.2.0.dev2025021805 release + - max-python ==25.2.0.dev2025021805 release + - mojo-jupyter ==25.2.0.dev2025021805 release + - mblack ==25.2.0.dev2025021805 release license: LicenseRef-Modular-Proprietary - size: 9900 - timestamp: 1739769476049 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025021705-release.conda - sha256: cb9400c54b963f03d04d6c843881380bd3112c30a8fbe9e48db931620bd1ebb8 - md5: 381af09e94b55adb4b8409e9607f03df + size: 9903 + timestamp: 1739855815922 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025021805-release.conda + sha256: 340e8cb57a7bb09161be9967d243686d2bde6d33c3a459434b64850f655a6ebf + md5: 16c9ab16f86ea77c968f2ec9d8490b45 depends: - - mblack ==25.2.0.dev2025021705 release + - mblack ==25.2.0.dev2025021805 release license: LicenseRef-Modular-Proprietary - size: 243571245 - timestamp: 1739769478481 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025021705-release.conda - sha256: f7dd60e39525b12a5f74d890a41aa8d3343d3cce4cea55eadf2f6cc3c3d11aa1 - md5: 257b6f0919811bb28c1ba9da36b42943 + size: 243537705 + timestamp: 1739855815922 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025021805-release.conda + sha256: 208db98626d7b13d83370cb148ed4c3b298ccb4be47735cb5c637482dc757e2d + md5: ffef7cb1076e8fff0bbf234ab579e490 depends: - - mblack ==25.2.0.dev2025021705 release + - mblack ==25.2.0.dev2025021805 release license: LicenseRef-Modular-Proprietary - size: 246181682 - timestamp: 1739769476049 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025021705-release.conda - sha256: 1a5234bedb53af4c11a05e86a972d252365eb0fb4e9eadb07601a97c13a3e580 - md5: 8a274c64491be70ab860f2749cdbded8 + size: 246180299 + timestamp: 1739855933149 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025021805-release.conda + sha256: 358feba2a0de87990d5195f15b9f7c72d54735c651d2387dc9b19d9f18a5a808 + md5: 03c4c62591cfdceeedb187c81aa39e85 depends: - - mblack ==25.2.0.dev2025021705 release + - mblack ==25.2.0.dev2025021805 release license: LicenseRef-Modular-Proprietary - size: 211871421 - timestamp: 1739770743850 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025021705-release.conda + size: 211888906 + timestamp: 1739857002577 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025021805-release.conda noarch: python - sha256: 5500aa0ced5c8d2b313782ac67518891c5fbaa99e4ed84aaa20f1bcd181364be - md5: 21ad39ec09ec7dd9be8dd6b104a65b6c + sha256: 628691ed2774526488211fd2e8dc1d7defc06e4ec2f01bddf1225e5f9a2c55c7 + md5: bad8379abe776c441bf27819069be200 depends: - - max-core ==25.2.0.dev2025021705 release + - max-core ==25.2.0.dev2025021805 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1387,14 +1390,14 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 120661171 - timestamp: 1739769478481 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025021705-release.conda + size: 120604349 + timestamp: 1739855815922 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025021805-release.conda noarch: python - sha256: 08e02fd88975d86206410e2573a460158f71eafa431df1631359e004ce005163 - md5: c3b325b2c14c3ae2c82d37894daef2f4 + sha256: 929e59132a7c6525d8fcdd6de038a662d8676feba0ced0dd5fc587c54d0340b0 + md5: 7c27fe619fe036d42d317cc56c6e52de depends: - - max-core ==25.2.0.dev2025021705 release + - max-core ==25.2.0.dev2025021805 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1432,14 +1435,14 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 123214020 - timestamp: 1739769476049 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025021705-release.conda + size: 123218799 + timestamp: 1739855933149 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025021805-release.conda noarch: python - sha256: 686735af9671c174ad98929602236992efdcbe682961ba5637f7babaa7779414 - md5: 3163d7c7ac36d35f3a1722ca6f24c802 + sha256: 3cfb0055a5644ad9c53dec2d072d7aab4200bec29e321ff1bf0e2304148559a4 + md5: 6649b504b69613c9d0d0563f5dda8cac depends: - - max-core ==25.2.0.dev2025021705 release + - max-core ==25.2.0.dev2025021805 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1477,12 +1480,12 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 110070584 - timestamp: 1739770743850 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021705-release.conda + size: 110049004 + timestamp: 1739857002577 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021805-release.conda noarch: python - sha256: 13a8735d351148c95ff8030ea49010bc4cda358a5faf241689db15197bdaf7fb - md5: f595aa1a6832846493d7c9cb48bd0f5d + sha256: c2ce9921584024a755f45d2a7ba764a4e527a7bfc3aa7798e056e9fea35a4eb1 + md5: c90d37ff9d68f874286acdb235b62cfa depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -1493,20 +1496,20 @@ packages: - typing_extensions >=v4.12.2 - python license: MIT - size: 130855 - timestamp: 1739769476049 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021705-release.conda + size: 130850 + timestamp: 1739855815922 +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021805-release.conda noarch: python - sha256: ff89ce5074726958ff4cefe09966470947ab40ebc5e4bbe4f8e3fe8c4d5d7263 - md5: c7ae6ef843f549adb530cff568cef5bc + sha256: 5ff1420517896833664e430108a243134424ff45c78e00fc760d77525a91a750 + md5: e3f2fef53386541378382e32801068d7 depends: - - max-core ==25.2.0.dev2025021705 release + - max-core ==25.2.0.dev2025021805 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22994 - timestamp: 1739769476049 + size: 22982 + timestamp: 1739855815922 - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda sha256: 1895f47b7d68581a6facde5cb13ab8c2764c2e53a76bd746f8f98910dc4e08fe md5: 29097e7ea634a45cc5386b95cac6568f From 9dd6fcf00e7a6e878c85b877837629e9d7fca05d Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Mon, 17 Feb 2025 21:30:01 -0800 Subject: [PATCH 410/509] [mojo-lang] Move IntLiteral compares to attributes. This allows folding comparisons of integer literals, which is required to get things like `if 1:` to be seen as a literal true value (because this turns into a call to `IntLiteral.__bool__`. MODULAR_ORIG_COMMIT_REV_ID: 1fcc54ef77d01e55f5684dbc3361b4a560167fcc --- stdlib/src/builtin/dtype.mojo | 2 +- stdlib/src/builtin/int_literal.mojo | 18 +++++++++--------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/stdlib/src/builtin/dtype.mojo b/stdlib/src/builtin/dtype.mojo index bf9b218788..7b790253c3 100644 --- a/stdlib/src/builtin/dtype.mojo +++ b/stdlib/src/builtin/dtype.mojo @@ -153,7 +153,7 @@ struct DType( """ return self - @always_inline + @always_inline("builtin") @implicit fn __init__(out self, value: Self.type): """Construct a DType from MLIR dtype. diff --git a/stdlib/src/builtin/int_literal.mojo b/stdlib/src/builtin/int_literal.mojo index 5710187b3f..ed302b4b3e 100644 --- a/stdlib/src/builtin/int_literal.mojo +++ b/stdlib/src/builtin/int_literal.mojo @@ -72,7 +72,7 @@ struct IntLiteral( # Operator dunders # ===-------------------------------------------------------------------===# - @always_inline("nodebug") + @always_inline("builtin") fn __lt__(self, rhs: Self) -> Bool: """Compare this IntLiteral to the RHS using LT comparison. @@ -86,7 +86,7 @@ struct IntLiteral( pred = __mlir_attr.`#kgen` ](self.value, rhs.value) - @always_inline("nodebug") + @always_inline("builtin") fn __le__(self, rhs: Self) -> Bool: """Compare this IntLiteral to the RHS using LE comparison. @@ -101,7 +101,7 @@ struct IntLiteral( pred = __mlir_attr.`#kgen` ](self.value, rhs.value) - @always_inline("nodebug") + @always_inline("builtin") fn __eq__(self, rhs: Self) -> Bool: """Compare this IntLiteral to the RHS using EQ comparison. @@ -115,7 +115,7 @@ struct IntLiteral( pred = __mlir_attr.`#kgen` ](self.value, rhs.value) - @always_inline("nodebug") + @always_inline("builtin") fn __ne__(self, rhs: Self) -> Bool: """Compare this IntLiteral to the RHS using NE comparison. @@ -129,7 +129,7 @@ struct IntLiteral( pred = __mlir_attr.`#kgen` ](self.value, rhs.value) - @always_inline("nodebug") + @always_inline("builtin") fn __gt__(self, rhs: Self) -> Bool: """Compare this IntLiteral to the RHS using GT comparison. @@ -143,7 +143,7 @@ struct IntLiteral( pred = __mlir_attr.`#kgen` ](self.value, rhs.value) - @always_inline("nodebug") + @always_inline("builtin") fn __ge__(self, rhs: Self) -> Bool: """Compare this IntLiteral to the RHS using GE comparison. @@ -462,7 +462,7 @@ struct IntLiteral( # Trait implementations # ===-------------------------------------------------------------------===# - @always_inline("nodebug") + @always_inline("builtin") fn __bool__(self) -> Bool: """Convert this IntLiteral to Bool. @@ -471,7 +471,7 @@ struct IntLiteral( """ return self != Self() - @always_inline("nodebug") + @always_inline("builtin") fn __as_bool__(self) -> Bool: """Convert this IntLiteral to Bool. @@ -520,7 +520,7 @@ struct IntLiteral( return self return -self - @always_inline("nodebug") + @always_inline("builtin") fn __ceil__(self) -> Self: """Return the ceiling of the IntLiteral value, which is itself. From ac955ac82a3c57378144b30345cfce564dfc9ea1 Mon Sep 17 00:00:00 2001 From: Alex Trotta <44127594+Ahajha@users.noreply.github.com> Date: Tue, 18 Feb 2025 15:09:18 -0500 Subject: [PATCH 411/509] [docs] Fix indentation error and typo in mojo basics page MODULAR_ORIG_COMMIT_REV_ID: 933e81709435a64292204b79fea535eec9f13a2f --- docs/manual/basics.mdx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/manual/basics.mdx b/docs/manual/basics.mdx index 853ad16ad6..b62e7cbf8d 100644 --- a/docs/manual/basics.mdx +++ b/docs/manual/basics.mdx @@ -255,7 +255,7 @@ struct MyPair: self.first = first self.second = second - fn __copyinit__(out self, existing other): + fn __copyinit__(out self, existing other): self.first = existing.first self.second = existing.second @@ -317,7 +317,7 @@ trait SomeTrait: The three dots following the method signature are Mojo syntax indicating that the method is not implemented. -Here's a trait that conforms to `SomeTrait`: +Here's a struct that conforms to `SomeTrait`: ```mojo @value From 26f31756dfd6a767c8963fc261ed374c2b1a6244 Mon Sep 17 00:00:00 2001 From: Lukas Hermann <1734032+lsh@users.noreply.github.com> Date: Tue, 18 Feb 2025 13:04:30 -0800 Subject: [PATCH 412/509] [stdlib] Add address_space and alignment to Span Since we'll want `Span` to be usable across address spaces and be able to represent all kinds of pointers, it makes sense to be parametric over the possible underlying pointer types. MODULAR_ORIG_COMMIT_REV_ID: 0c9c4b51dfa454e2a3b1189f86ebea3fc55a5c22 --- stdlib/src/memory/span.mojo | 106 +++++++++++++++++++++++++++++------- 1 file changed, 86 insertions(+), 20 deletions(-) diff --git a/stdlib/src/memory/span.mojo b/stdlib/src/memory/span.mojo index 756ece77b8..290c720f61 100644 --- a/stdlib/src/memory/span.mojo +++ b/stdlib/src/memory/span.mojo @@ -24,6 +24,7 @@ from collections import InlineArray from sys.info import simdwidthof from memory import Pointer, UnsafePointer +from memory.unsafe_pointer import _default_alignment trait AsBytes: @@ -50,6 +51,8 @@ struct _SpanIter[ T: CollectionElement, origin: Origin[mut], forward: Bool = True, + address_space: AddressSpace = AddressSpace.GENERIC, + alignment: Int = _default_alignment[T](), ]: """Iterator for Span. @@ -58,17 +61,22 @@ struct _SpanIter[ T: The type of the elements in the span. origin: The origin of the `Span`. forward: The iteration direction. False is backwards. + address_space: The address space associated with the underlying allocated memory. + alignment: The minimum alignment of the underlying pointer known statically. + """ var index: Int - var src: Span[T, origin] + var src: Span[T, origin, address_space=address_space, alignment=alignment] @always_inline fn __iter__(self) -> Self: return self @always_inline - fn __next__(mut self, out p: Pointer[T, origin]): + fn __next__( + mut self, out p: Pointer[T, origin, address_space=address_space] + ): @parameter if forward: p = Pointer.address_of(self.src[self.index]) @@ -96,6 +104,9 @@ struct Span[ mut: Bool, //, T: CollectionElement, origin: Origin[mut], + *, + address_space: AddressSpace = AddressSpace.GENERIC, + alignment: Int = _default_alignment[T](), ](CollectionElementNew): """A non-owning view of contiguous data. @@ -103,10 +114,18 @@ struct Span[ mut: Whether the span is mutable. T: The type of the elements in the span. origin: The origin of the Span. + address_space: The address space associated with the allocated memory. + alignment: The minimum alignment of the underlying pointer known statically. """ # Field - var _data: UnsafePointer[T, mut=mut, origin=origin] + var _data: UnsafePointer[ + T, + mut=mut, + origin=origin, + address_space=address_space, + alignment=alignment, + ] var _len: Int # ===------------------------------------------------------------------===# @@ -114,7 +133,12 @@ struct Span[ # ===------------------------------------------------------------------===# @always_inline - fn __init__(out self, *, ptr: UnsafePointer[T], length: UInt): + fn __init__( + out self, + *, + ptr: UnsafePointer[T, address_space=address_space, alignment=alignment], + length: UInt, + ): """Unsafe construction from a pointer and length. Args: @@ -135,14 +159,14 @@ struct Span[ @always_inline @implicit - fn __init__(out self, ref [origin]list: List[T, *_]): + fn __init__(out self, ref [origin, address_space]list: List[T, *_]): """Construct a `Span` from a `List`. Args: list: The list to which the span refers. """ - self._data = list.data - self._len = len(list) + self._data = list.data.address_space_cast[address_space]() + self._len = list.size @always_inline @implicit @@ -158,7 +182,11 @@ struct Span[ array: The array to which the span refers. """ - self._data = UnsafePointer.address_of(array).bitcast[T]() + self._data = ( + UnsafePointer.address_of(array) + .bitcast[T]() + .address_space_cast[address_space]() + ) self._len = size # ===------------------------------------------------------------------===# @@ -166,7 +194,7 @@ struct Span[ # ===------------------------------------------------------------------===# @always_inline - fn __getitem__[I: Indexer](self, idx: I) -> ref [origin] T: + fn __getitem__[I: Indexer](self, idx: I) -> ref [origin, address_space] T: """Get a reference to an element in the span. Args: @@ -218,22 +246,42 @@ struct Span[ return res @always_inline - fn __iter__(self) -> _SpanIter[T, origin]: + fn __iter__( + self, + ) -> _SpanIter[ + T, + origin, + address_space=address_space, + alignment=alignment, + ]: """Get an iterator over the elements of the `Span`. Returns: An iterator over the elements of the `Span`. """ - return _SpanIter(0, self) + return _SpanIter[ + address_space=address_space, + alignment=alignment, + ](0, self) @always_inline - fn __reversed__(self) -> _SpanIter[T, origin, forward=False]: + fn __reversed__( + self, + ) -> _SpanIter[ + T, + origin, + forward=False, + address_space=address_space, + alignment=alignment, + ]: """Iterate backwards over the `Span`. Returns: A reversed iterator of the `Span` elements. """ - return _SpanIter[forward=False](len(self), self) + return _SpanIter[ + forward=False, address_space=address_space, alignment=alignment + ](len(self), self) # ===------------------------------------------------------------------===# # Trait implementations @@ -288,7 +336,15 @@ struct Span[ # Methods # ===------------------------------------------------------------------===# - fn unsafe_ptr(self) -> UnsafePointer[T, mut=mut, origin=origin]: + fn unsafe_ptr( + self, + ) -> UnsafePointer[ + T, + mut=mut, + origin=origin, + address_space=address_space, + alignment=alignment, + ]: """Retrieves a pointer to the underlying memory. Returns: @@ -296,7 +352,7 @@ struct Span[ """ return self._data - fn as_ref(self) -> Pointer[T, origin]: + fn as_ref(self) -> Pointer[T, origin, address_space=address_space]: """ Gets a `Pointer` to the first element of this span. @@ -304,7 +360,9 @@ struct Span[ A `Pointer` pointing at the first element of this span. """ - return Pointer[T, origin].address_of(self._data[0]) + return Pointer[T, origin, address_space=address_space].address_of( + self._data[0] + ) @always_inline fn copy_from[ @@ -397,13 +455,21 @@ struct Span[ fn get_immutable( self, - ) -> Span[T, ImmutableOrigin.cast_from[origin].result]: + ) -> Span[ + T, + ImmutableOrigin.cast_from[origin].result, + address_space=address_space, + alignment=alignment, + ]: """ Return an immutable version of this span. Returns: A span covering the same elements, but without mutability. """ - return Span[T, ImmutableOrigin.cast_from[origin].result]( - ptr=self._data, length=self._len - ) + return Span[ + T, + ImmutableOrigin.cast_from[origin].result, + address_space=address_space, + alignment=alignment, + ](ptr=self._data, length=self._len) From c3c0b9f8387ae701aaa3d1cb74647faa05bc9646 Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Tue, 18 Feb 2025 13:35:22 -0800 Subject: [PATCH 413/509] [mojo-stdlib] Remove permature literal generalization This removes some premature generalizations added to int and float literals. These are not general value types usable in a dynamic context, so they don't need to support inplace operations. Further, there is no need for them to support the rounding trait - they can just promote to a concrete type if someone wanted to round a literal directly for some reason. Remove this complexity to simplify things. Unfortunately, this exposes that SIMD doesn't implement 'round' correctly at all. There are several problems there, but we don't want to cover for them by having literals appear to work when runtime numbers don't :-) MODULAR_ORIG_COMMIT_REV_ID: ed404c82b260922cb4d0b52e2f88b62c20396065 --- stdlib/src/builtin/float_literal.mojo | 119 +------------------ stdlib/src/builtin/int_literal.mojo | 121 -------------------- stdlib/src/builtin/math.mojo | 30 ----- stdlib/test/builtin/test_float_literal.mojo | 50 -------- stdlib/test/builtin/test_int_literal.mojo | 11 -- stdlib/test/builtin/test_math.mojo | 18 +-- 6 files changed, 12 insertions(+), 337 deletions(-) diff --git a/stdlib/src/builtin/float_literal.mojo b/stdlib/src/builtin/float_literal.mojo index 97cf9265bb..f663d9c317 100644 --- a/stdlib/src/builtin/float_literal.mojo +++ b/stdlib/src/builtin/float_literal.mojo @@ -33,7 +33,6 @@ struct FloatLiteral( Floorable, ImplicitlyBoolable, Intable, - Roundable, Stringable, Truncable, Floatable, @@ -261,82 +260,6 @@ struct FloatLiteral( return self return Self(self.__int_literal__()) - fn __round__(self) -> Self: - """Return the rounded value of the FloatLiteral. - - Returns: - The rounded value. - """ - # Handle special values first. - if not self._is_normal(): - return self - - alias one = __mlir_attr.`#kgen.int_literal<1> : !kgen.int_literal` - alias neg_one = __mlir_attr.`#kgen.int_literal<-1> : !kgen.int_literal` - var truncated: IntLiteral = self.__int_literal__() - var abs_diff = abs(self - truncated) - var plus_one = one if self > 0 else neg_one - if abs_diff == 0.5: - # Round to the nearest even number. - if truncated % 2 == 0: - return Self(truncated) - else: - return Self(truncated + plus_one) - elif abs_diff > 0.5: - return Self(truncated + plus_one) - else: - return Self(truncated) - - @always_inline("nodebug") - fn __round__(self, ndigits: Int) -> Self: - """Return the rounded value of the FloatLiteral. - - Args: - ndigits: The number of digits to round to. Defaults to 0. - - Returns: - The rounded value. - """ - # Handle special values first. - if not self._is_normal(): - return self - - alias one = __mlir_attr.`#kgen.int_literal<1> : !kgen.int_literal` - alias neg_one = __mlir_attr.`#kgen.int_literal<-1> : !kgen.int_literal` - alias ten = __mlir_attr.`#kgen.int_literal<10> : !kgen.int_literal` - var multiplier = one - var target: Self = self - # TODO: Use IntLiteral.__pow__() when it's implemented. - for _ in range(abs(ndigits)): - multiplier = __mlir_op.`kgen.int_literal.binop`[ - oper = __mlir_attr.`#kgen` - ](multiplier, ten) - if ndigits > 0: - target *= Self(multiplier) - elif ndigits < 0: - target /= Self(multiplier) - else: - return self.__round__() - var truncated: IntLiteral = target.__int_literal__() - var result: Self - var abs_diff = abs(target - truncated) - var plus_one = one if self > 0 else neg_one - if abs_diff == 0.5: - # Round to the nearest even number. - if truncated % 2 == 0: - result = Self(truncated) - else: - result = Self(truncated + plus_one) - elif abs_diff <= 0.5: - result = Self(truncated) - else: - result = Self(truncated + plus_one) - if ndigits >= 0: - result /= Self(multiplier) - elif ndigits < 0: - result *= Self(multiplier) - return result - # ===------------------------------------------------------------------===# # Arithmetic Operators # ===------------------------------------------------------------------===# @@ -462,47 +385,7 @@ struct FloatLiteral( # TODO - maybe __pow__? # ===------------------------------------------------------------------===# - # In-place Arithmetic Operators - # ===------------------------------------------------------------------===# - - @always_inline("nodebug") - fn __iadd__(mut self, rhs: FloatLiteral): - """In-place addition operator. - - Args: - rhs: The value to add. - """ - self = self + rhs - - @always_inline("nodebug") - fn __isub__(mut self, rhs: FloatLiteral): - """In-place subtraction operator. - - Args: - rhs: The value to subtract. - """ - self = self - rhs - - @always_inline("nodebug") - fn __imul__(mut self, rhs: FloatLiteral): - """In-place multiplication operator. - - Args: - rhs: The value to multiply. - """ - self = self * rhs - - @always_inline("nodebug") - fn __itruediv__(mut self, rhs: FloatLiteral): - """In-place division. - - Args: - rhs: The value to divide. - """ - self = self / rhs - - # ===------------------------------------------------------------------===# - # Reversed Operators + # Reversed Operators, allowing things like "1 / 2.0" to work # ===------------------------------------------------------------------===# @always_inline("nodebug") diff --git a/stdlib/src/builtin/int_literal.mojo b/stdlib/src/builtin/int_literal.mojo index ed302b4b3e..69511746d4 100644 --- a/stdlib/src/builtin/int_literal.mojo +++ b/stdlib/src/builtin/int_literal.mojo @@ -27,7 +27,6 @@ struct IntLiteral( ImplicitlyBoolable, ImplicitlyIntable, Indexer, - Roundable, Stringable, Truncable, ): @@ -373,91 +372,6 @@ struct IntLiteral( ](self.value, rhs.value) ) - # ===-------------------------------------------------------------------===# - # In place operations. - # ===-------------------------------------------------------------------===# - - @always_inline("nodebug") - fn __iadd__(mut self, rhs: Self): - """Compute `self + rhs` and save the result in self. - - Args: - rhs: The RHS value. - """ - self = self + rhs - - @always_inline("nodebug") - fn __isub__(mut self, rhs: Self): - """Compute `self - rhs` and save the result in self. - - Args: - rhs: The RHS value. - """ - self = self - rhs - - @always_inline("nodebug") - fn __imul__(mut self, rhs: Self): - """Compute self*rhs and save the result in self. - - Args: - rhs: The RHS value. - """ - self = self * rhs - - @always_inline("nodebug") - fn __ifloordiv__(mut self, rhs: Self): - """Compute self//rhs and save the result in self. - - Args: - rhs: The RHS value. - """ - self = self // rhs - - @always_inline("nodebug") - fn __ilshift__(mut self, rhs: Self): - """Compute `self << rhs` and save the result in self. - - Args: - rhs: The RHS value. - """ - self = self << rhs - - @always_inline("nodebug") - fn __irshift__(mut self, rhs: Self): - """Compute `self >> rhs` and save the result in self. - - Args: - rhs: The RHS value. - """ - self = self >> rhs - - @always_inline("nodebug") - fn __iand__(mut self, rhs: Self): - """Compute `self & rhs` and save the result in self. - - Args: - rhs: The RHS value. - """ - self = self & rhs - - @always_inline("nodebug") - fn __ixor__(mut self, rhs: Self): - """Compute `self ^ rhs` and save the result in self. - - Args: - rhs: The RHS value. - """ - self = self ^ rhs - - @always_inline("nodebug") - fn __ior__(mut self, rhs: Self): - """Compute self|rhs and save the result in self. - - Args: - rhs: The RHS value. - """ - self = self | rhs - # ===-------------------------------------------------------------------===# # Trait implementations # ===-------------------------------------------------------------------===# @@ -538,15 +452,6 @@ struct IntLiteral( """ return self - @always_inline("builtin") - fn __round__(self) -> Self: - """Return the rounded value of the IntLiteral value, which is itself. - - Returns: - The IntLiteral value itself. - """ - return self - @always_inline("builtin") fn __trunc__(self) -> Self: """Return the truncated of the IntLiteral value, which is itself. @@ -556,32 +461,6 @@ struct IntLiteral( """ return self - @always_inline("nodebug") - fn __round__(self, ndigits: Int) -> Self: - """Return the rounded value of the IntLiteral value, which is itself. - - Args: - ndigits: The number of digits to round to. - - Returns: - The IntLiteral value itself if ndigits >= 0 else the rounded value. - """ - if ndigits >= 0: - return self - alias one = __mlir_attr.`#kgen.int_literal<1> : !kgen.int_literal` - alias ten = __mlir_attr.`#kgen.int_literal<10> : !kgen.int_literal` - var multiplier = one - # TODO: Use IntLiteral.__pow__() when it's implemented. - for _ in range(-ndigits): - multiplier = __mlir_op.`kgen.int_literal.binop`[ - oper = __mlir_attr.`#kgen` - ](multiplier, ten) - alias Pair = Tuple[Self, Self] - var mod: IntLiteral = self % Self(multiplier) - if mod * 2 >= multiplier: - mod -= multiplier - return self - mod - @no_inline fn __str__(self) -> String: """Convert from IntLiteral to String. diff --git a/stdlib/src/builtin/math.mojo b/stdlib/src/builtin/math.mojo index 897500bb67..7f0c693b67 100644 --- a/stdlib/src/builtin/math.mojo +++ b/stdlib/src/builtin/math.mojo @@ -464,20 +464,6 @@ fn round[T: Roundable, //](number: T) -> T: return number.__round__() -# TODO: remove this when conformance issue for FloatLiteral is fixed. -@always_inline -fn round(number: FloatLiteral) -> FloatLiteral: - """Get the rounded value of the given FloatLiteral. - - Args: - number: The FloatLiteral to get the rounded value of. - - Returns: - The rounded value of the object. - """ - return number.__round__() - - @always_inline fn round[T: Roundable, //](number: T, ndigits: Int) -> T: """Get the value of this object, rounded to a specified number of @@ -494,19 +480,3 @@ fn round[T: Roundable, //](number: T, ndigits: Int) -> T: The rounded value of the object. """ return number.__round__(ndigits) - - -# TODO: remove this when conformance issue for FloatLiteral is fixed. -@always_inline -fn round(number: FloatLiteral, ndigits: Int) -> FloatLiteral: - """Get the value of this FloatLiteral, rounded to a specified number of - digits after the decimal point. - - Args: - number: The FloatLiteral to get the rounded value of. - ndigits: The number of digits to round to. - - Returns: - The rounded value of the object. Positive ndigits to the right of the decimal, negative ndigits to the left. - """ - return number.__round__(ndigits) diff --git a/stdlib/test/builtin/test_float_literal.mojo b/stdlib/test/builtin/test_float_literal.mojo index c6c790a4d7..817eb639c1 100644 --- a/stdlib/test/builtin/test_float_literal.mojo +++ b/stdlib/test/builtin/test_float_literal.mojo @@ -68,54 +68,6 @@ def test_trunc(): assert_equal(FloatLiteral.__trunc__(neg_inf), neg_inf) -def test_round(): - assert_equal(FloatLiteral.__round__(1.5), 2.0) - assert_equal(FloatLiteral.__round__(1.6), 2.0) - assert_equal(FloatLiteral.__round__(-1.5), -2.0) - assert_equal(FloatLiteral.__round__(-3.6), -4.0) - assert_equal(FloatLiteral.__round__(3.0), 3.0) - assert_equal(FloatLiteral.__round__(0.0), 0.0) - - assert_true(FloatLiteral.__round__(nan).is_nan()) - assert_true(FloatLiteral.__round__(neg_zero).is_neg_zero()) - assert_equal(FloatLiteral.__round__(inf), inf) - assert_equal(FloatLiteral.__round__(neg_inf), neg_inf) - - assert_equal(FloatLiteral.__round__(1.6, 0), 2.0) - - assert_equal(FloatLiteral.__round__(1.5, 1), 1.5) - assert_equal(FloatLiteral.__round__(1.123, 1), 1.1) - assert_equal(FloatLiteral.__round__(1.198, 2), 1.2) - assert_equal(FloatLiteral.__round__(1.123, 2), 1.12) - assert_equal(FloatLiteral.__round__(-1.5, 1), -1.5) - assert_equal(FloatLiteral.__round__(-1.123, 1), -1.1) - assert_equal(FloatLiteral.__round__(-1.198, 2), -1.2) - assert_equal(FloatLiteral.__round__(-1.123, 2), -1.12) - - # Test rounding to nearest even number - assert_equal(FloatLiteral.__round__(1.5, 0), 2.0) - assert_equal(FloatLiteral.__round__(2.5, 0), 2.0) - assert_equal(FloatLiteral.__round__(-2.5, 0), -2.0) - assert_equal(FloatLiteral.__round__(-1.5, 0), -2.0) - - # Negative ndigits - assert_equal(FloatLiteral.__round__(123.456, -1), 120.0) - assert_equal(FloatLiteral.__round__(123.456, -2), 100.0) - assert_equal(FloatLiteral.__round__(123.456, -3), 0.0) - - -fn round10(x: FloatLiteral) -> FloatLiteral: - return round(x * 10.0) / 10.0 - - -def test_round10(): - assert_equal(round10(FloatLiteral.__mod__(4.4, 0.5)), 0.4) - assert_equal(round10(FloatLiteral.__mod__(-4.4, 0.5)), 0.1) - assert_equal(round10(FloatLiteral.__mod__(4.4, -0.5)), -0.1) - assert_equal(round10(FloatLiteral.__mod__(-4.4, -0.5)), -0.4) - assert_equal(round10(FloatLiteral.__mod__(3.1, 1.0)), 0.1) - - def test_division(): assert_equal(FloatLiteral.__truediv__(4.4, 0.5), 8.8) @@ -295,8 +247,6 @@ def main(): test_ceil() test_floor() test_trunc() - test_round() - test_round10() test_division() test_mod() test_div_mod() diff --git a/stdlib/test/builtin/test_int_literal.mojo b/stdlib/test/builtin/test_int_literal.mojo index cca82fd158..72776b4e9a 100644 --- a/stdlib/test/builtin/test_int_literal.mojo +++ b/stdlib/test/builtin/test_int_literal.mojo @@ -43,16 +43,6 @@ def test_floor(): assert_equal(IntLiteral.__floor__(-5), -5) -def test_round(): - assert_equal(IntLiteral.__round__(5), 5) - assert_equal(IntLiteral.__round__(0), 0) - assert_equal(IntLiteral.__round__(-5), -5) - assert_equal(IntLiteral.__round__(5, 1), 5) - assert_equal(IntLiteral.__round__(0, 1), 0) - assert_equal(IntLiteral.__round__(-5, 1), -5) - assert_equal(IntLiteral.__round__(100, -2), 100) - - def test_trunc(): assert_equal(IntLiteral.__trunc__(5), 5) assert_equal(IntLiteral.__trunc__(0), 0) @@ -153,7 +143,6 @@ def main(): test_sub() test_ceil() test_floor() - test_round() test_trunc() test_floordiv() test_mod() diff --git a/stdlib/test/builtin/test_math.mojo b/stdlib/test/builtin/test_math.mojo index cce327f532..def9bed172 100644 --- a/stdlib/test/builtin/test_math.mojo +++ b/stdlib/test/builtin/test_math.mojo @@ -96,19 +96,23 @@ def test_round(): assert_equal(2, round(1.5)) assert_equal(2, round(2.0)) assert_equal(1, round(1.4, 0)) - assert_equal(2, round(2.5)) - assert_equal(1.5, round(1.5, 1)) - assert_equal(1.61, round(1.613, 2)) + assert_equal(3, round(2.5)) + + # FIXME(MSTDL-1188): SIMD.__round__ completely ignores # digits. + # FIXME: Should be: assert_equal(1.5, round(1.5, 1)) + assert_equal(2, round(1.5, 1)) + # FIXME: Should be: assert_equal(1.61, round(1.613, 2)) + assert_equal(2, round(1.613, 2)) var lhs = SIMD[DType.float32, 4](1.1, 1.5, 1.9, 2.0) var expected = SIMD[DType.float32, 4](1.0, 2.0, 2.0, 2.0) assert_equal(expected, round(lhs)) # Ensure that round works on float literal - alias r1: FloatLiteral = round(2.3) - assert_equal(r1, 2.0) - alias r2: FloatLiteral = round(2.3324, 2) - assert_equal(r2, 2.33) + # alias r1 = round(2.3) + # assert_equal(r1, 2.0) + # alias r2 = round(2.3324, 2) + # assert_equal(r2, 2.33) def test_pow(): From f5fa84eb1c433eb837acdbb1fee933b7e964d44f Mon Sep 17 00:00:00 2001 From: Owen Hilyard Date: Wed, 19 Feb 2025 11:48:43 -0600 Subject: [PATCH 414/509] [External] [stdlib docs] Information on Dependent types (#56183) [External] [stdlib] [docs] Information on Dependent types Chris gave some information I thought should be documented for stdlib developers. * `always_inline("builtin")` vs `always_inline("nodebug")` * Some information on MLIR interpreter limitations. Co-authored-by: Owen Hilyard Closes modularml/mojo#3999 MODULAR_ORIG_COMMIT_REV_ID: 56ba55fc34fa395201d9bd576569e26614230569 --- stdlib/docs/internal/compiler.md | 21 +++++++++++++++++ stdlib/docs/internal/mlir.md | 40 ++++++++++++++++++++++++++++++++ 2 files changed, 61 insertions(+) create mode 100644 stdlib/docs/internal/compiler.md diff --git a/stdlib/docs/internal/compiler.md b/stdlib/docs/internal/compiler.md new file mode 100644 index 0000000000..643c1d93ce --- /dev/null +++ b/stdlib/docs/internal/compiler.md @@ -0,0 +1,21 @@ +## WARNING + +Everything in this file is subject to revision on any bugfix or security +update. We (the stdlib team and contributors), reserve the right to remove, +change the API contracts of, rename, or cause to instantly crash the program, +any operation described in here. These are **PRIVATE** APIs and implementation +details for the Mojo stdlib and for MAX to use. **WE WILL CHANGE IT WHENEVER +WE FIND IT CONVENIENT TO DO SO WITHOUT WARNING OR NOTICE**. + +## Compiler Docs + +### MLIR Interpreter + +The MLIR Interpreter is the mechanism by which Mojo evaluates code at compile time. + +#### Current Limitations + +From: [Chris on Discord](https://discord.com/channels/1087530497313357884/1339917438372020264) + +- No access to target information (much of `sys.info` doesn't work) +- Runs before elaboration, meaning some information is not available. diff --git a/stdlib/docs/internal/mlir.md b/stdlib/docs/internal/mlir.md index ca0c174c4b..0fb9cd22db 100644 --- a/stdlib/docs/internal/mlir.md +++ b/stdlib/docs/internal/mlir.md @@ -8,3 +8,43 @@ details for the Mojo stdlib and for MAX to use. **WE WILL CHANGE IT WHENEVER WE FIND IT CONVENIENT TO DO SO WITHOUT WARNING OR NOTICE**. ## MLIR Documentation + +### `always_inline("builtin")` vs `always_inline("nodebug")` + +From: [Chris on Discord](https://discord.com/channels/1087530497313357884/1339917438372020264) + +`always_inline("builtin")` is the same as `always_inline("nodebug")` but affects +how tagged methods are handled when they are called in parameter expressions. +For example, consider: `fn thing[a: Int, b: Int](x: T[a], y: T[b]) -> T[a+b]: +...` This is a dependent type, and the return type is represented internally to +the compiler in a completely symbolic way as `T[Int.add(a, b)]`. This is the +core of how Mojo supports arbitrary comptime evaluation of things. That said, +when you get to the caller site, you often know what a and b are; `value = +thing(someT3, someT17)`, and in this case, "it is obvious" that value should +have type `T[20]` (assuming the first arg had value=3 and second value=17). A +naive handling of this would actually end up with it having type `T[Int.add(3, +17)]` which is lexically non-equal to `T[20]` and so would require rebinds for +obvious cases, which massively undermines dependent type support. + +To address this, early on, an engineer added a horrible hack to rewrite the +comptime interpreter a bunch to see if it could go fold and simplify +expressions. This solves this case, e.g. var value : `T[20] = thing(someT3, +someT17)` works... but it is really inexpensive in compile time and introduces a +significant layering problem: the comptime interpreter isn't supposed to run on +the intermediate IR the parser is producing - that IR doesn't have destructors +inserted, isn't fully checked for semantic validity, and has other problems. +This really only affects low level types like `Int` and `Origin` and stuff like +that. + +The new solution for this is to introduce a new form of `always_inline`, which +is the same as `always_inline("nodebug")`, but is different when parsed into a +parameter expression. Instead of turning `T[a+b]` into `T[Int.add(a, b)]` (where +`Int.add` does extracts from the struct, then an `index.add` mlir operation, +then calls the `Int` initializer to reform an `Int`) we actually do a very +limited form of symbolic inlining and turn this into something like +`T[Int{index.add(a.value, b.value)}]`. When used in a caller context with +specific constants, this magically all "just works" through constant folding, +and doesn't involve the interpreter at all. This decorator is very limited in +terms of the IR forms it can handle, so it isn't a generally useful thing, but +is important for this narrow case and (more importantly) enables simplifying the +compiler and making it more reliable. From 82ebdf645e4f341cf97ac427decba8abc83d1417 Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Wed, 19 Feb 2025 11:29:49 -0800 Subject: [PATCH 415/509] [mojo-lang] Significantly expand comptime folding of LLVM stuff. This implements support for comptime eval of llvm intrinsics that involve SIMD and floating point. This is a big expansion of what we can do, enabling (for example) support for llvm.round and other intrinsics that take and/or return floating point values. MODULAR_ORIG_COMMIT_REV_ID: 6da8862c619b9dd19b000acb2dc554df4ad5f96a --- docs/changelog.md | 4 ++++ stdlib/src/bit/bit.mojo | 10 ++++++---- stdlib/test/builtin/test_math.mojo | 8 ++++---- 3 files changed, 14 insertions(+), 8 deletions(-) diff --git a/docs/changelog.md b/docs/changelog.md index 18500c6c85..2df2b93fe0 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -20,6 +20,10 @@ what we publish. ### Language changes +- The Mojo comptime interpreter can now handle many more LLVM intrinsics, + including ones that return floating point values. This allows functions + like `round` to be constant folded when used in a comptime context. + ### Standard library changes - A new `IntervalTree` data structure has been added to the standard library. diff --git a/stdlib/src/bit/bit.mojo b/stdlib/src/bit/bit.mojo index d29d46459d..5b8832a85e 100644 --- a/stdlib/src/bit/bit.mojo +++ b/stdlib/src/bit/bit.mojo @@ -81,7 +81,9 @@ fn count_trailing_zeros(val: Int) -> Int: Returns: The number of trailing zeros of the input. """ - return llvm_intrinsic["llvm.cttz", Int, has_side_effect=False](val, False) + return llvm_intrinsic[ + "llvm.cttz", __mlir_type.index, has_side_effect=False + ](val.value, False.value) @always_inline("nodebug") @@ -105,9 +107,9 @@ fn count_trailing_zeros[ trailing zeros at position `i` of the input value. """ constrained[type.is_integral(), "must be integral"]() - return llvm_intrinsic["llvm.cttz", __type_of(val), has_side_effect=False]( - val, False - ) + return llvm_intrinsic[ + "llvm.cttz", __type_of(val.value), has_side_effect=False + ](val.value, False.value) # ===-----------------------------------------------------------------------===# diff --git a/stdlib/test/builtin/test_math.mojo b/stdlib/test/builtin/test_math.mojo index def9bed172..f23658f2e3 100644 --- a/stdlib/test/builtin/test_math.mojo +++ b/stdlib/test/builtin/test_math.mojo @@ -109,10 +109,10 @@ def test_round(): assert_equal(expected, round(lhs)) # Ensure that round works on float literal - # alias r1 = round(2.3) - # assert_equal(r1, 2.0) - # alias r2 = round(2.3324, 2) - # assert_equal(r2, 2.33) + alias r1 = round(2.3) + assert_equal(r1, 2.0) + alias r2 = round(2.3324, 2) + assert_equal(r2, 2) # FIXME: ignoring # digits def test_pow(): From 7db6f33e68a2a16136ea0a75796f6aa8573f2047 Mon Sep 17 00:00:00 2001 From: Connor Gray Date: Wed, 19 Feb 2025 13:53:11 -0600 Subject: [PATCH 416/509] [stdlib] cleanup: Consolidate lifecycle test structs + rename for consistency MODULAR_ORIG_COMMIT_REV_ID: c7ebd24964da56be6036ab4413295d1d11a7e200 --- .../test/collections/test_inline_array.mojo | 14 ++- stdlib/test/collections/test_inline_list.mojo | 8 +- stdlib/test/collections/test_linked_list.mojo | 6 +- stdlib/test/collections/test_list.mojo | 10 +- .../test/memory/test_maybe_uninitialized.mojo | 31 +++---- stdlib/test/memory/test_unsafepointer.mojo | 26 +----- stdlib/test/test_utils/__init__.mojo | 7 +- stdlib/test/test_utils/types.mojo | 91 ++++++++++++++++++- stdlib/test/utils/test_tuple.mojo | 1 - stdlib/test/utils/test_variant.mojo | 45 +++------ 10 files changed, 133 insertions(+), 106 deletions(-) diff --git a/stdlib/test/collections/test_inline_array.mojo b/stdlib/test/collections/test_inline_array.mojo index 652af472ff..a46aae3325 100644 --- a/stdlib/test/collections/test_inline_array.mojo +++ b/stdlib/test/collections/test_inline_array.mojo @@ -16,7 +16,7 @@ from collections import InlineArray from memory import UnsafePointer from memory.maybe_uninitialized import UnsafeMaybeUninitialized -from test_utils import ValueDestructorRecorder +from test_utils import DelRecorder from testing import assert_equal, assert_false, assert_true @@ -198,13 +198,11 @@ def test_inline_array_runs_destructors(): destructor_counter ) alias capacity = 32 - var inline_list = InlineArray[ - ValueDestructorRecorder, 4, run_destructors=True - ]( - ValueDestructorRecorder(0, pointer_to_destructor_counter), - ValueDestructorRecorder(10, pointer_to_destructor_counter), - ValueDestructorRecorder(20, pointer_to_destructor_counter), - ValueDestructorRecorder(30, pointer_to_destructor_counter), + var inline_list = InlineArray[DelRecorder, 4, run_destructors=True]( + DelRecorder(0, pointer_to_destructor_counter), + DelRecorder(10, pointer_to_destructor_counter), + DelRecorder(20, pointer_to_destructor_counter), + DelRecorder(30, pointer_to_destructor_counter), ) _ = inline_list # This is the last use of the inline list, so it should be destroyed here, diff --git a/stdlib/test/collections/test_inline_list.mojo b/stdlib/test/collections/test_inline_list.mojo index b457e6f5d7..d0a7aae728 100644 --- a/stdlib/test/collections/test_inline_list.mojo +++ b/stdlib/test/collections/test_inline_list.mojo @@ -15,7 +15,7 @@ from collections import InlineList, Set from memory import UnsafePointer -from test_utils import MoveCounter, ValueDestructorRecorder +from test_utils import MoveCounter, DelRecorder from testing import assert_equal, assert_false, assert_raises, assert_true @@ -63,13 +63,11 @@ def test_destructor(): """Ensure we delete the right number of elements.""" var destructor_counter = List[Int]() alias capacity = 32 - var inline_list = InlineList[ValueDestructorRecorder, capacity=capacity]() + var inline_list = InlineList[DelRecorder, capacity=capacity]() for index in range(capacity): inline_list.append( - ValueDestructorRecorder( - index, UnsafePointer.address_of(destructor_counter) - ) + DelRecorder(index, UnsafePointer.address_of(destructor_counter)) ) # Private api use here: diff --git a/stdlib/test/collections/test_linked_list.mojo b/stdlib/test/collections/test_linked_list.mojo index 6fd56ec4a6..5569fda682 100644 --- a/stdlib/test/collections/test_linked_list.mojo +++ b/stdlib/test/collections/test_linked_list.mojo @@ -17,7 +17,7 @@ from collections import LinkedList, Optional from test_utils import ( CopyCountedStruct, CopyCounter, - DtorCounter, + DelCounter, MoveCounter, g_dtor_count, ) @@ -526,10 +526,10 @@ def inner_test_list_dtor(): # explicitly reset global counter g_dtor_count = 0 - var l = LinkedList[DtorCounter]() + var l = LinkedList[DelCounter]() assert_equal(g_dtor_count, 0) - l.append(DtorCounter()) + l.append(DelCounter()) assert_equal(g_dtor_count, 0) l^.__del__() diff --git a/stdlib/test/collections/test_list.mojo b/stdlib/test/collections/test_list.mojo index f977b2b47c..623ea34fa4 100644 --- a/stdlib/test/collections/test_list.mojo +++ b/stdlib/test/collections/test_list.mojo @@ -19,7 +19,7 @@ from memory import Span, UnsafePointer from test_utils import ( CopyCountedStruct, CopyCounter, - DtorCounter, + DelCounter, MoveCounter, g_dtor_count, ) @@ -869,10 +869,10 @@ def inner_test_list_dtor(): # explicitly reset global counter g_dtor_count = 0 - var l = List[DtorCounter]() + var l = List[DelCounter]() assert_equal(g_dtor_count, 0) - l.append(DtorCounter()) + l.append(DelCounter()) assert_equal(g_dtor_count, 0) l^.__del__() @@ -892,8 +892,8 @@ def test_destructor_trivial_elements(): # explicitly reset global counter g_dtor_count = 0 - var l = List[DtorCounter, hint_trivial_type=True]() - l.append(DtorCounter()) + var l = List[DelCounter, hint_trivial_type=True]() + l.append(DelCounter()) l^.__del__() diff --git a/stdlib/test/memory/test_maybe_uninitialized.mojo b/stdlib/test/memory/test_maybe_uninitialized.mojo index 68c629019e..caafd30d41 100644 --- a/stdlib/test/memory/test_maybe_uninitialized.mojo +++ b/stdlib/test/memory/test_maybe_uninitialized.mojo @@ -16,7 +16,12 @@ from os import abort from memory import UnsafePointer from memory.maybe_uninitialized import UnsafeMaybeUninitialized -from test_utils import CopyCounter, MoveCounter, ValueDestructorRecorder +from test_utils import ( + CopyCounter, + MoveCounter, + DelRecorder, + AbortOnDel, +) from testing import assert_equal @@ -24,12 +29,8 @@ def test_maybe_uninitialized(): # Every time an Int is destroyed, it's going to be recorded here. var destructor_counter = List[Int]() - var a = UnsafeMaybeUninitialized[ValueDestructorRecorder]() - a.write( - ValueDestructorRecorder( - 42, UnsafePointer.address_of(destructor_counter) - ) - ) + var a = UnsafeMaybeUninitialized[DelRecorder]() + a.write(DelRecorder(42, UnsafePointer.address_of(destructor_counter))) assert_equal(a.assume_initialized().value, 42) assert_equal(len(destructor_counter), 0) @@ -47,22 +48,12 @@ def test_maybe_uninitialized(): assert_equal(len(destructor_counter), 1) -@value -struct ImpossibleToDestroy: - var value: Int - - fn __del__(owned self): - abort("We should never call the destructor of ImpossibleToDestroy") - - def test_write_does_not_trigger_destructor(): - var a = UnsafeMaybeUninitialized[ImpossibleToDestroy]() - a.write(ImpossibleToDestroy(42)) + var a = UnsafeMaybeUninitialized[AbortOnDel]() + a.write(AbortOnDel(42)) # Using the initializer should not trigger the destructor too. - var b = UnsafeMaybeUninitialized[ImpossibleToDestroy]( - ImpossibleToDestroy(42) - ) + var b = UnsafeMaybeUninitialized[AbortOnDel](AbortOnDel(42)) # The destructor of a and b have already run at this point, and it shouldn't have # caused a crash since we assume uninitialized memory. diff --git a/stdlib/test/memory/test_unsafepointer.mojo b/stdlib/test/memory/test_unsafepointer.mojo index 927285ecdf..a07e7f0749 100644 --- a/stdlib/test/memory/test_unsafepointer.mojo +++ b/stdlib/test/memory/test_unsafepointer.mojo @@ -13,36 +13,16 @@ # RUN: %mojo %s from memory import AddressSpace, UnsafePointer -from test_utils import ExplicitCopyOnly, MoveCounter +from test_utils import ExplicitCopyOnly, MoveCounter, ObservableMoveOnly from testing import assert_equal, assert_false, assert_not_equal, assert_true -struct MoveOnlyType(Movable): - # It's a weak reference, we don't want to delete the actions - # after the struct is deleted, otherwise we can't observe the __del__. - var actions: UnsafePointer[List[String]] - var value: Int - - fn __init__(out self, value: Int, actions: UnsafePointer[List[String]]): - self.actions = actions - self.value = value - self.actions[0].append("__init__") - - fn __moveinit__(out self, owned existing: Self): - self.actions = existing.actions - self.value = existing.value - self.actions[0].append("__moveinit__") - - fn __del__(owned self): - self.actions[0].append("__del__") - - def test_unsafepointer_of_move_only_type(): var actions_ptr = UnsafePointer[List[String]].alloc(1) actions_ptr.init_pointee_move(List[String]()) - var ptr = UnsafePointer[MoveOnlyType].alloc(1) - ptr.init_pointee_move(MoveOnlyType(42, actions_ptr)) + var ptr = UnsafePointer[ObservableMoveOnly].alloc(1) + ptr.init_pointee_move(ObservableMoveOnly(42, actions_ptr)) assert_equal(len(actions_ptr[0]), 2) assert_equal(actions_ptr[0][0], "__init__") assert_equal(actions_ptr[0][1], "__moveinit__", msg="emplace_value") diff --git a/stdlib/test/test_utils/__init__.mojo b/stdlib/test/test_utils/__init__.mojo index b7dd12e0db..7e86152741 100644 --- a/stdlib/test/test_utils/__init__.mojo +++ b/stdlib/test/test_utils/__init__.mojo @@ -15,12 +15,15 @@ from .test_utils import libm_call from .types import ( CopyCountedStruct, CopyCounter, - DtorCounter, + DelCounter, + MoveCopyCounter, ExplicitCopyOnly, ImplicitCopyOnly, MoveCounter, MoveOnly, + ObservableMoveOnly, ObservableDel, - ValueDestructorRecorder, + DelRecorder, + AbortOnDel, g_dtor_count, ) diff --git a/stdlib/test/test_utils/types.mojo b/stdlib/test/test_utils/types.mojo index e729601231..09c6751802 100644 --- a/stdlib/test/test_utils/types.mojo +++ b/stdlib/test/test_utils/types.mojo @@ -10,8 +10,26 @@ # See the License for the specific language governing permissions and # limitations under the License. # ===----------------------------------------------------------------------=== # +"""Types for testing object lifecycle events. + +* `MoveCounter` +* `CopyCounter` +* `MoveCopyCounter` +* `DelCounter` +* `CopyCountedStruct` +* `MoveOnly` +* `ExplicitCopyOnly` +* `ImplicitCopyOnly` +* `ObservableMoveOnly` +* `ObservableDel` +* `DelRecorder` +* `AbortOnDel` +""" + from memory import UnsafePointer +from os import abort + # ===----------------------------------------------------------------------=== # # MoveOnly # ===----------------------------------------------------------------------=== # @@ -45,6 +63,31 @@ struct MoveOnly[T: Movable](Movable): self.data = other.data^ +# ===----------------------------------------------------------------------=== # +# ObservableMoveOnly +# ===----------------------------------------------------------------------=== # + + +struct ObservableMoveOnly(Movable): + # It's a weak reference, we don't want to delete the actions + # after the struct is deleted, otherwise we can't observe the __del__. + var actions: UnsafePointer[List[String]] + var value: Int + + fn __init__(out self, value: Int, actions: UnsafePointer[List[String]]): + self.actions = actions + self.value = value + self.actions[0].append("__init__") + + fn __moveinit__(out self, owned existing: Self): + self.actions = existing.actions + self.value = existing.value + self.actions[0].append("__moveinit__") + + fn __del__(owned self): + self.actions[0].append("__del__") + + # ===----------------------------------------------------------------------=== # # ExplicitCopyOnly # ===----------------------------------------------------------------------=== # @@ -162,12 +205,37 @@ struct MoveCounter[T: CollectionElementNew]( # ===----------------------------------------------------------------------=== # -# ValueDestructorRecorder +# MoveCopyCounter +# ===----------------------------------------------------------------------=== # + + +struct MoveCopyCounter(CollectionElement): + var copied: Int + var moved: Int + + fn __init__(out self): + self.copied = 0 + self.moved = 0 + + fn __copyinit__(out self, other: Self): + self.copied = other.copied + 1 + self.moved = other.moved + + fn copy(self) -> Self: + return self + + fn __moveinit__(out self, owned other: Self): + self.copied = other.copied + self.moved = other.moved + 1 + + +# ===----------------------------------------------------------------------=== # +# DelRecorder # ===----------------------------------------------------------------------=== # @value -struct ValueDestructorRecorder(ExplicitlyCopyable): +struct DelRecorder(ExplicitlyCopyable): var value: Int var destructor_counter: UnsafePointer[List[Int]] @@ -199,13 +267,13 @@ struct ObservableDel(CollectionElement): # ===----------------------------------------------------------------------=== # -# DtorCounter +# DelCounter # ===----------------------------------------------------------------------=== # var g_dtor_count: Int = 0 -struct DtorCounter(CollectionElement, Writable): +struct DelCounter(CollectionElement, Writable): # NOTE: payload is required because LinkedList does not support zero sized structs. var payload: Int @@ -226,11 +294,24 @@ struct DtorCounter(CollectionElement, Writable): g_dtor_count += 1 fn write_to[W: Writer](self, mut writer: W): - writer.write("DtorCounter(") + writer.write("DelCounter(") writer.write(String(g_dtor_count)) writer.write(")") +# ===----------------------------------------------------------------------=== # +# AbortOnDel +# ===----------------------------------------------------------------------=== # + + +@value +struct AbortOnDel: + var value: Int + + fn __del__(owned self): + abort("We should never call the destructor of AbortOnDel") + + # ===----------------------------------------------------------------------=== # # CopyCountedStruct # ===----------------------------------------------------------------------=== # diff --git a/stdlib/test/utils/test_tuple.mojo b/stdlib/test/utils/test_tuple.mojo index 94df5f6648..39b95a8fd1 100644 --- a/stdlib/test/utils/test_tuple.mojo +++ b/stdlib/test/utils/test_tuple.mojo @@ -13,7 +13,6 @@ # RUN: %mojo %s from memory import UnsafePointer -from test_utils import ValueDestructorRecorder from testing import assert_equal, assert_false, assert_true from utils import IndexList, StaticTuple diff --git a/stdlib/test/utils/test_variant.mojo b/stdlib/test/utils/test_variant.mojo index f0f32a47f6..fb9b2f977e 100644 --- a/stdlib/test/utils/test_variant.mojo +++ b/stdlib/test/utils/test_variant.mojo @@ -15,35 +15,12 @@ from sys.ffi import _Global from memory import UnsafePointer -from test_utils import ObservableDel +from test_utils import ObservableDel, MoveCopyCounter from testing import assert_equal, assert_false, assert_true from utils import Variant -struct TestCounter(CollectionElement): - var copied: Int - var moved: Int - - fn __init__(out self): - self.copied = 0 - self.moved = 0 - - fn __init__(out self, *, other: Self): - self = other - - fn __copyinit__(out self, other: Self): - self.copied = other.copied + 1 - self.moved = other.moved - - fn copy(self) -> Self: - return self - - fn __moveinit__(out self, owned other: Self): - self.copied = other.copied - self.moved = other.moved + 1 - - alias TEST_VARIANT_POISON = _Global[ "TEST_VARIANT_POISON", Bool, _initialize_poison ] @@ -82,7 +59,7 @@ struct Poison(CollectionElement): _poison_ptr().init_pointee_move(True) -alias TestVariant = Variant[TestCounter, Poison] +alias TestVariant = Variant[MoveCopyCounter, Poison] def test_basic(): @@ -110,35 +87,35 @@ def test_basic(): def test_copy(): - var v1 = TestVariant(TestCounter()) + var v1 = TestVariant(MoveCopyCounter()) var v2 = v1 # didn't call copyinit - assert_equal(v1[TestCounter].copied, 0) - assert_equal(v2[TestCounter].copied, 1) + assert_equal(v1[MoveCopyCounter].copied, 0) + assert_equal(v2[MoveCopyCounter].copied, 1) # test that we didn't call the other copyinit too! assert_no_poison() def test_explicit_copy(): - var v1 = TestVariant(TestCounter()) + var v1 = TestVariant(MoveCopyCounter()) # Perform explicit copy var v2 = v1.copy() # Test copy counts - assert_equal(v1[TestCounter].copied, 0) - assert_equal(v2[TestCounter].copied, 1) + assert_equal(v1[MoveCopyCounter].copied, 0) + assert_equal(v2[MoveCopyCounter].copied, 1) # test that we didn't call the other copyinit too! assert_no_poison() def test_move(): - var v1 = TestVariant(TestCounter()) + var v1 = TestVariant(MoveCopyCounter()) var v2 = v1 # didn't call moveinit - assert_equal(v1[TestCounter].moved, 1) - assert_equal(v2[TestCounter].moved, 2) + assert_equal(v1[MoveCopyCounter].moved, 1) + assert_equal(v2[MoveCopyCounter].moved, 2) # test that we didn't call the other moveinit too! assert_no_poison() From b952d07d105f6af2d9c100005a259afb90e2572f Mon Sep 17 00:00:00 2001 From: bgreni <42788181+bgreni@users.noreply.github.com> Date: Wed, 19 Feb 2025 15:13:42 -0600 Subject: [PATCH 417/509] [External] [stdlib] Add iterator for LinkedList (#56182) [External] [stdlib] Add iterator for LinkedList As title, add an iterator for `LinkedList` for both forward and reverse iteration. Co-authored-by: bgreni <42788181+bgreni@users.noreply.github.com> Closes modularml/mojo#4005 MODULAR_ORIG_COMMIT_REV_ID: 1b1c0542fe566cb275ec0069fd32d12e98071028 --- docs/changelog.md | 10 +++ stdlib/src/collections/linked_list.mojo | 72 +++++++++++++++++++ stdlib/test/collections/test_linked_list.mojo | 34 +++++++++ 3 files changed, 116 insertions(+) diff --git a/docs/changelog.md b/docs/changelog.md index 2df2b93fe0..b4e1bd381b 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -59,6 +59,16 @@ what we publish. - Added a `StringSlice.is_codepoint_boundary()` method for querying if a given byte index is a boundary between encoded UTF-8 codepoints. +- Added an iterator to `LinkedList` ([PR #4005](https://github.com/modular/mojo/pull/4005)) + - `LinkedList.__iter__()` to create a forward iterator. + - `LinkedList.__reversed__()` for a backward iterator. + + ```mojo + var ll = LinkedList[Int](1, 2, 3) + for element in ll: + print(element[]) + ``` + ### GPU changes - `ctx.enqueue_function(compiled_func, ...)` is deprecated: diff --git a/stdlib/src/collections/linked_list.mojo b/stdlib/src/collections/linked_list.mojo index 83bf614c47..55c49adc18 100644 --- a/stdlib/src/collections/linked_list.mojo +++ b/stdlib/src/collections/linked_list.mojo @@ -86,6 +86,50 @@ struct Node[ writer.write(self.value) +@value +struct _LinkedListIter[ + mut: Bool, //, + ElementType: CollectionElement, + origin: Origin[mut], + forward: Bool = True, +]: + var src: Pointer[LinkedList[ElementType], origin] + var curr: UnsafePointer[Node[ElementType]] + + # Used to calculate remaining length of iterator in + # _LinkedListIter.__len__() + var seen: Int + + fn __init__(out self, src: Pointer[LinkedList[ElementType], origin]): + self.src = src + + @parameter + if forward: + self.curr = self.src[]._head + else: + self.curr = self.src[]._tail + self.seen = 0 + + fn __iter__(self) -> Self: + return self + + fn __next__(mut self, out p: Pointer[ElementType, origin]): + p = Pointer[ElementType, origin].address_of(self.curr[].value) + + @parameter + if forward: + self.curr = self.curr[].next + else: + self.curr = self.curr[].prev + self.seen += 1 + + fn __has_next__(self) -> Bool: + return Bool(self.curr) + + fn __len__(self) -> Int: + return len(self.src[]) - self.seen + + struct LinkedList[ ElementType: CollectionElement, ]: @@ -692,6 +736,34 @@ struct LinkedList[ """ return self._size + fn __iter__(self) -> _LinkedListIter[ElementType, __origin_of(self)]: + """Iterate over elements of the list, returning immutable references. + + Time Complexity: + O(1) for iterator construction. + O(n) in len(self) for a complete iteration of the list. + + Returns: + An iterator of immutable references to the list elements. + """ + return _LinkedListIter(Pointer.address_of(self)) + + fn __reversed__( + self, + ) -> _LinkedListIter[ElementType, __origin_of(self), forward=False]: + """Iterate backwards over the list, returning immutable references. + + Time Complexity: + O(1) for iterator construction. + O(n) in len(self) for a complete iteration of the list. + + Returns: + A reversed iterator of immutable references to the list elements. + """ + return _LinkedListIter[ElementType, __origin_of(self), forward=False]( + Pointer.address_of(self) + ) + fn __bool__(self) -> Bool: """Check if the list is non-empty. diff --git a/stdlib/test/collections/test_linked_list.mojo b/stdlib/test/collections/test_linked_list.mojo index 5569fda682..266d2ade6c 100644 --- a/stdlib/test/collections/test_linked_list.mojo +++ b/stdlib/test/collections/test_linked_list.mojo @@ -544,6 +544,39 @@ def test_list_dtor(): assert_equal(g_dtor_count, 1) +def test_iter(): + var l = LinkedList[Int](1, 2, 3) + var iter = l.__iter__() + assert_true(iter.__has_next__(), "Expected iter to have next") + assert_equal(len(iter), 3) + assert_equal(iter.__next__()[], 1) + assert_equal(iter.__next__()[], 2) + assert_equal(len(iter), 1) + assert_equal(iter.__next__()[], 3) + assert_equal(len(iter), 0) + assert_false(iter.__has_next__(), "Expected iter to not have next") + + var riter = l.__reversed__() + assert_true(riter.__has_next__(), "Expected iter to have next") + assert_equal(len(riter), 3) + assert_equal(riter.__next__()[], 3) + assert_equal(riter.__next__()[], 2) + assert_equal(len(riter), 1) + assert_equal(riter.__next__()[], 1) + assert_equal(len(riter), 0) + assert_false(riter.__has_next__(), "Expected iter to not have next") + + var i = 0 + for el in l: + assert_equal(el[], l[i]) + i += 1 + + i = 2 + for el in l.__reversed__(): + assert_equal(el[], l[i]) + i -= 1 + + def main(): test_construction() test_append() @@ -574,3 +607,4 @@ def main(): test_list_dtor() test_list_insert() test_list_eq_ne() + test_iter() From 9589f320bd37352ca994cac4064650ce4478271e Mon Sep 17 00:00:00 2001 From: Joe Loser Date: Wed, 19 Feb 2025 17:14:11 -0500 Subject: [PATCH 418/509] [docs] Update stdlib FAQ for `List` auto-deref A common question we get is around the idea of why don't we auto-dereference in `List` and friends. This helps shed some light into the current state of why we manually force programmers to dereference things and what a path forward may look like language wise. While in the neighborhood, update the roadmap to remove some (now outdated) info about legacy `AnyTrivialRegType`. In the near future, we should overhaul the roadmap and project plans to update on what we're doing. MODULAR_ORIG_COMMIT_REV_ID: 13b594a0f679f6d723aad464eaf7dc7d2269ded5 --- stdlib/docs/faq.md | 54 ++++++++++++++++++++++++++++++++++++++---- stdlib/docs/roadmap.md | 4 ---- 2 files changed, 50 insertions(+), 8 deletions(-) diff --git a/stdlib/docs/faq.md b/stdlib/docs/faq.md index b70afe5aaf..0bf05de44d 100644 --- a/stdlib/docs/faq.md +++ b/stdlib/docs/faq.md @@ -26,10 +26,10 @@ your issues resolved. This is largely a historical thing as the library only worked on `AnyTrivialRegType` when it was first written. As we introduced the notion of memory-only types and -traits, `AnyType` was born. Over time, we expect to rewrite nearly -the entire library to have everything work on `AnyType` and be generalized to -not just work on `AnyTrivialRegType`. Several things need to happen in tandem with -the compiler team to make this possible. +traits, `AnyType` was born. At this point, most of the standard library operates +on `AnyType` or some other trait-bound type. A few low-level things will always +need to operate at the `AnyTrivialRegType` type level, such as when interacting +with MLIR attributes. ### 2. Are the MLIR dialects private? @@ -68,3 +68,49 @@ set of primitives available to them. Over time, we hope to move most of the closed-source modules into the open-source repo. + +### 5. Why do `List` and friends require dereferencing for iterators? + +Consider some Mojo code like: + +```mojo +fn use(element: Element): # takes a borrow + +fn test(elements: List[Element]): + for e in elements: + use(e[]) # Passes the referenced value by-borrow without a copy +``` + +The equivalent C++ would look something like: + +```c++ +void use(const Element &elt) {...} +void test(const list &list) { + for (Element *e : list) { + use(*e); + } +} +``` + +which requires the explicit element dereference, but maintains the pointerness +property. When we switch the `__next__` method in the `List` iterator type to +return a `ref`, then we would be getting a copy into the `e` var like this: + +```mojo +for (Element e : list) use(e) +``` + +In Mojo, `var x = list.iter.__next__()` makes a copy into x. It does not bind +`x` as a reference to the result. This what may be referred in other contexts +as "implicit deref". + +The planned approach to handle this in Mojo is with pattern matching and +allow binding references in patterns. Note that pattern matching is something +we need anyways for other things such as supporting `for i, j in thing`. + +This would allow for things like + +```mojo +for (ref e) in list: + self.append(e) # note no-dereference needed to pattern ref binding above +``` diff --git a/stdlib/docs/roadmap.md b/stdlib/docs/roadmap.md index d94535089f..b0061b2c53 100644 --- a/stdlib/docs/roadmap.md +++ b/stdlib/docs/roadmap.md @@ -20,10 +20,6 @@ mission](https://docs.modular.com/mojo/why-mojo). ### Core library improvements -- Remove `AnyTrivialRegType` in the standard library in favor of `AnyType`. - -- Unify `Pointer` and `AnyPointer`. - - Apply `Reference` types and lifetimes throughout APIs and types. - Design API conventions and expected behavior for core collection types such From e69f7709c82a728864238cb5db7f79d60e6797dd Mon Sep 17 00:00:00 2001 From: abdul dakkak Date: Wed, 19 Feb 2025 14:29:38 -0800 Subject: [PATCH 419/509] [Mojo] Replace the ,] pattern with ], NFC MODULAR_ORIG_COMMIT_REV_ID: 76f827e81e74971b4fcba1ccbb5f8a3dabde4900 --- stdlib/src/builtin/builtin_list.mojo | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/stdlib/src/builtin/builtin_list.mojo b/stdlib/src/builtin/builtin_list.mojo index 3d7c69ab89..3bf7bc8a89 100644 --- a/stdlib/src/builtin/builtin_list.mojo +++ b/stdlib/src/builtin/builtin_list.mojo @@ -440,7 +440,7 @@ struct VariadicListMem[ fn __iter__( self, - ) -> _VariadicListMemIter[element_type, origin, __origin_of(self),]: + ) -> _VariadicListMemIter[element_type, origin, __origin_of(self)]: """Iterate over the list. Returns: From 4aa6d1255837a58c126dadcf553f03384764dd24 Mon Sep 17 00:00:00 2001 From: abdul dakkak Date: Wed, 19 Feb 2025 20:41:00 -0800 Subject: [PATCH 420/509] [Kernels][GPU] Rename gpu.shuffle to gpu.warp to clarify intent (#56248) This renames the shuffle file along with the warp functions. This would allow us to write `warp.reduce` instead of `warp_reduce` which makes the code a bit more elegant. This also removes the auto import of the warp functions into the gpu package. MODULAR_ORIG_COMMIT_REV_ID: 7f296bed56af5864c0d5e02fb07d67aae7e2491b --- docs/changelog.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/docs/changelog.md b/docs/changelog.md index b4e1bd381b..7844616f21 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -93,6 +93,16 @@ You should now pass the function directly to ctx.enqueue_function[func](grid_dim=1, block_dim=4) ``` +- The `shuffle` module has been rename to `warp` to better + reflect its purpose. To uses now you will have to do + + ```mojo + import gpu.warp as warp + + var val0 = warp.shuffle_down(x, offset) + var val1 = warp.broadcast(x) + ``` + ### Tooling changes #### Mojo Compiler From 9a738f7841dc84cc0374e1737c96f523f1fd4a32 Mon Sep 17 00:00:00 2001 From: modularbot Date: Thu, 20 Feb 2025 07:05:44 +0000 Subject: [PATCH 421/509] Update lockfiles to point to latest nightly version: 25.2.0.dev2025022005 --- examples/life/magic.lock | 281 +++++++++++++++++----------------- examples/magic.lock | 178 ++++++++++----------- examples/operators/magic.lock | 211 +++++++++++++------------ examples/testing/magic.lock | 211 +++++++++++++------------ magic.lock | 178 ++++++++++----------- 5 files changed, 542 insertions(+), 517 deletions(-) diff --git a/examples/life/magic.lock b/examples/life/magic.lock index 3a041cc133..57dbd69583 100644 --- a/examples/life/magic.lock +++ b/examples/life/magic.lock @@ -80,12 +80,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.28-pthreads_h94d23a6_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopus-1.3.1-h7f98852_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libpciaccess-0.18-hd590300_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.46-h943b412_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.47-h943b412_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsentencepiece-0.2.0-h8e10757_10.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsndfile-1.2.2-hc60ed4a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.48.0-hee588c1_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.49.1-hee588c1_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-hc0a3c3a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsystemd0-257.3-h3dc2cb9_0.conda @@ -100,14 +100,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxkbcommon-1.8.0-hc4a0caf_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.5-h8d12d68_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.6-h8d12d68_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.10.0-h5888daf_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021805-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025021805-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025021805-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021805-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022005-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022005-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022005-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022005-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022005-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/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda @@ -160,7 +160,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxscrnsaver-1.2.4-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb8e6e7a_0.conda linux-aarch64: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/alsa-lib-1.2.13-h86ecc28_0.conda @@ -235,12 +235,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.29-pthreads_h9d3fd7e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopus-1.3.1-hf897c2e_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpciaccess-0.18-h31becfc_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.46-hec79eb8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.47-hec79eb8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.3-h44a3b7b_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsentencepiece-0.2.0-h6164ad9_10.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsndfile-1.2.2-h79657aa_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.20-h68df207_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.48.0-h5eb1b54_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.49.1-h5eb1b54_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsystemd0-257.3-h27834fc_0.conda @@ -255,14 +255,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcb-1.17.0-h262b8f6_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxkbcommon-1.8.0-h2ef6bd0_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.5-h2e0c361_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.6-h2e0c361_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.10.0-h5ad3122_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021805-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025021805-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025021805-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021805-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022005-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022005-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022005-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022005-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022005-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/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-ha32ae93_3.conda @@ -372,23 +372,23 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libogg-1.3.5-h99b78c6_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.29-openmp_hf332438_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopus-1.3.1-h27ca646_1.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.46-h3783ad8_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.47-h3783ad8_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.3-h3bd63a1_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsentencepiece-0.2.0-he13a0af_10.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsndfile-1.2.2-h9739721_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.48.0-h3f77e49_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.1-h3f77e49_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-h551f018_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libusb-1.0.27-h93a5062_100.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libvorbis-1.3.7-h9f76cd9_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.5.0-h2471fea_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021805-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025021805-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025021805-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021805-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022005-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022005-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022005-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022005-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022005-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/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda @@ -427,7 +427,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.6-hb46c0d2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.7-h6491c7d_0.conda packages: - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 sha256: fe51de6107f9edc7aa4f786a70f4a883943bc9d39b3bb7307c04c41410990726 @@ -2729,9 +2729,9 @@ packages: license_family: MIT size: 29211 timestamp: 1707101477910 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.46-h943b412_0.conda - sha256: a46436dadd12d58155280d68876dba2d8a3badbc8074956d14fe6530c7c7eda6 - md5: adcf7bacff219488e29cfa95a2abd8f7 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.47-h943b412_0.conda + sha256: 23367d71da58c9a61c8cbd963fcffb92768d4ae5ffbef9a47cdf1f54f98c5c36 + md5: 55199e2ae2c3651f6f9b2a447b47bdc9 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -2739,30 +2739,30 @@ packages: arch: x86_64 platform: linux license: zlib-acknowledgement - size: 292273 - timestamp: 1737791061653 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.46-hec79eb8_0.conda - sha256: be4eefe8415c9b37d158eaa9522ce4c399a572339ac2bcc4d26d6433e0ed767d - md5: f9f793497c0973d5416421aa2f96cda4 + size: 288701 + timestamp: 1739952993639 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.47-hec79eb8_0.conda + sha256: 3861a65106a5f876eff3fc19042c3edb528216114b9f8e64b37aebf003deda11 + md5: c4b1ba0d7cef5002759d2f156722feee depends: - libgcc >=13 - libzlib >=1.3.1,<2.0a0 arch: aarch64 platform: linux license: zlib-acknowledgement - size: 304364 - timestamp: 1737795802176 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.46-h3783ad8_0.conda - sha256: db78a711561bb6df274ef421472d948dfd1093404db3915e891ae6d7fd37fadc - md5: 15d480fb9dad036eaa4de0b51eab3ccc + size: 291536 + timestamp: 1739957375872 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.47-h3783ad8_0.conda + sha256: dc93cc30f59b28e7812c6f14d2c2e590b509c38092cce7ababe6b23541b7ed8f + md5: 3550e05e3af94a3fa9cef2694417ccdf depends: - __osx >=11.0 - libzlib >=1.3.1,<2.0a0 arch: arm64 platform: osx license: zlib-acknowledgement - size: 266516 - timestamp: 1737791023678 + size: 259332 + timestamp: 1739953032676 - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda sha256: 51125ebb8b7152e4a4e69fd2398489c4ec8473195c27cde3cbdf1cb6d18c5493 md5: d8703f1ffe5a06356f06467f1d0b9464 @@ -2938,9 +2938,9 @@ packages: license: ISC size: 164972 timestamp: 1716828607917 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.48.0-hee588c1_1.conda - sha256: 22853d289ef6ec8a5b20f1aa261895b06525439990d3b139f8bfd0b5c5e32a3a - md5: 3fa05c528d8a1e2a67bbf1e36f22d3bc +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.49.1-hee588c1_1.conda + sha256: 7a09eef804ef7cf4d88215c2297eabb72af8ad0bd5b012060111c289f14bbe7d + md5: 73cea06049cc4174578b432320a003b8 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -2948,30 +2948,30 @@ packages: arch: x86_64 platform: linux license: Unlicense - size: 878223 - timestamp: 1737564987837 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.48.0-h5eb1b54_1.conda - sha256: 81dd9bf66c7f1d9064e007e2c787133100c406e7ca2de61dba9fb7b87372f255 - md5: 4f3a61fe206f20b27c385ee608bcdfda + size: 915956 + timestamp: 1739953155793 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.49.1-h5eb1b54_1.conda + sha256: 920fb3b7d3b873babf79a3e392cc82d43b8bd02a573ccaff34219efb5cf7b51e + md5: 150d64241fa27d9d35a7f421ca968a6c depends: - libgcc >=13 - libzlib >=1.3.1,<2.0a0 arch: aarch64 platform: linux license: Unlicense - size: 1044879 - timestamp: 1737565049785 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.48.0-h3f77e49_1.conda - sha256: 17c06940cc2a13fd6a17effabd6881b1477db38b2cd3ee2571092d293d3fdd75 - md5: 4c55169502ecddf8077973a987d08f08 + size: 915118 + timestamp: 1739953101699 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.1-h3f77e49_1.conda + sha256: 266639fb10ca92287961574b0b4d6031fa40dd9d723d64a0fcb08513a24dab03 + md5: c83357a21092bd952933c36c5cb4f4d6 depends: - __osx >=11.0 - libzlib >=1.3.1,<2.0a0 arch: arm64 platform: osx license: Unlicense - size: 852831 - timestamp: 1737564996616 + size: 898767 + timestamp: 1739953312379 - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-hc0a3c3a_1.conda sha256: 4661af0eb9bdcbb5fb33e5d0023b001ad4be828fccdcc56500059d56f9869462 md5: 234a5554c53625688d51062645337328 @@ -3387,37 +3387,37 @@ packages: license_family: MIT size: 652340 timestamp: 1738735348944 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.5-h8d12d68_1.conda - sha256: c3b05bdc40d27a9249f0bb60f3f71718f94104b8bcd200163a6c9d4ade7aa052 - md5: 1a21e49e190d1ffe58531a81b6e400e1 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.6-h8d12d68_0.conda + sha256: db8af71ea9c0ae95b7cb4a0f59319522ed2243942437a1200ceb391493018d85 + md5: 328382c0e0ca648e5c189d5ec336c604 depends: - __glibc >=2.17,<3.0.a0 - icu >=75.1,<76.0a0 - libgcc >=13 - - libiconv >=1.17,<2.0a0 - - liblzma >=5.6.3,<6.0a0 + - libiconv >=1.18,<2.0a0 + - liblzma >=5.6.4,<6.0a0 - libzlib >=1.3.1,<2.0a0 arch: x86_64 platform: linux license: MIT license_family: MIT - size: 690589 - timestamp: 1733443667823 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.5-h2e0c361_1.conda - sha256: dc0e86d35a836af6e99d18f50c6551fc64c53ed3a3da5a9fea90e78763cf14b4 - md5: 63410f85031930cde371dfe0ee89109a + size: 690296 + timestamp: 1739952967309 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.6-h2e0c361_0.conda + sha256: bb075df08b04b1b47e75a250f2ebbb2401c3367057d64b8d44ef1ef3f44480e1 + md5: a159a92f890f862408c951c08f13415f depends: - icu >=75.1,<76.0a0 - libgcc >=13 - - libiconv >=1.17,<2.0a0 - - liblzma >=5.6.3,<6.0a0 + - libiconv >=1.18,<2.0a0 + - liblzma >=5.6.4,<6.0a0 - libzlib >=1.3.1,<2.0a0 arch: aarch64 platform: linux license: MIT license_family: MIT - size: 732155 - timestamp: 1733443825814 + size: 733707 + timestamp: 1739953178456 - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda sha256: d4bfe88d7cb447768e31650f06257995601f89076080e76df55e3112d4e47dc4 md5: edb0dca6bc32e4f4789199455a1dbeb8 @@ -3496,48 +3496,48 @@ packages: license_family: BSD size: 184953 timestamp: 1733740984533 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021805-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022005-release.conda noarch: python - sha256: 5abd2869c2a3e71f474e4fada2e32dbf664d886d0d5ab540872936dec3e30260 - md5: a36709ec752c9286fc680af014bc4208 + sha256: 73a728cc599d38eb95ae3d924bfcce33b9572728a42a065152d6aa5c9fc4825a + md5: dcea265b305fe4b5a751e23531e55fc6 depends: - - max-core ==25.2.0.dev2025021805 release - - max-python ==25.2.0.dev2025021805 release - - mojo-jupyter ==25.2.0.dev2025021805 release - - mblack ==25.2.0.dev2025021805 release + - max-core ==25.2.0.dev2025022005 release + - max-python ==25.2.0.dev2025022005 release + - mojo-jupyter ==25.2.0.dev2025022005 release + - mblack ==25.2.0.dev2025022005 release license: LicenseRef-Modular-Proprietary - size: 9903 - timestamp: 1739855815922 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025021805-release.conda - sha256: 340e8cb57a7bb09161be9967d243686d2bde6d33c3a459434b64850f655a6ebf - md5: 16c9ab16f86ea77c968f2ec9d8490b45 + size: 9911 + timestamp: 1740028585109 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022005-release.conda + sha256: 6d5a1dee924f2b90fee1da4fad534afce20cc5c10c8c2514215b882e6d9e3711 + md5: bab16e83b4190bf2743900ff977b23f3 depends: - - mblack ==25.2.0.dev2025021805 release + - mblack ==25.2.0.dev2025022005 release license: LicenseRef-Modular-Proprietary - size: 243537705 - timestamp: 1739855815922 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025021805-release.conda - sha256: 208db98626d7b13d83370cb148ed4c3b298ccb4be47735cb5c637482dc757e2d - md5: ffef7cb1076e8fff0bbf234ab579e490 + size: 243845116 + timestamp: 1740028633977 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022005-release.conda + sha256: 3651136079667dc3aabb624a5dd219f74212794e31488ed52453edb4eff8dda6 + md5: b2e5292f9128e4d3dd21b5efe9c62ec3 depends: - - mblack ==25.2.0.dev2025021805 release + - mblack ==25.2.0.dev2025022005 release license: LicenseRef-Modular-Proprietary - size: 246180299 - timestamp: 1739855933149 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025021805-release.conda - sha256: 358feba2a0de87990d5195f15b9f7c72d54735c651d2387dc9b19d9f18a5a808 - md5: 03c4c62591cfdceeedb187c81aa39e85 + size: 246414229 + timestamp: 1740028585109 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022005-release.conda + sha256: 2b4284fa358ecea61058a847a7f4ee5922840ea8cb0e7b23289e8e9737d84693 + md5: 4f78943e45265a6e74e0bc7c63d63d8e depends: - - mblack ==25.2.0.dev2025021805 release + - mblack ==25.2.0.dev2025022005 release license: LicenseRef-Modular-Proprietary - size: 211888906 - timestamp: 1739857002577 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025021805-release.conda + size: 212210721 + timestamp: 1740029626428 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022005-release.conda noarch: python - sha256: 628691ed2774526488211fd2e8dc1d7defc06e4ec2f01bddf1225e5f9a2c55c7 - md5: bad8379abe776c441bf27819069be200 + sha256: 3b0c24834d3acbc000e1a10142a2a1ffd20459c7872dc4511d7366e847c46100 + md5: fa6af33b4f5899b97d6d1dc189085efe depends: - - max-core ==25.2.0.dev2025021805 release + - max-core ==25.2.0.dev2025022005 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -3575,14 +3575,14 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 120604349 - timestamp: 1739855815922 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025021805-release.conda + size: 120696393 + timestamp: 1740028633977 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022005-release.conda noarch: python - sha256: 929e59132a7c6525d8fcdd6de038a662d8676feba0ced0dd5fc587c54d0340b0 - md5: 7c27fe619fe036d42d317cc56c6e52de + sha256: f471037607a1ecd2f099d9f38d8bbe9bfb4b59973f5e21ecd8ba1df1dd753e18 + md5: 95bdf6cd858922b8827313101608306a depends: - - max-core ==25.2.0.dev2025021805 release + - max-core ==25.2.0.dev2025022005 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -3620,14 +3620,14 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 123218799 - timestamp: 1739855933149 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025021805-release.conda + size: 123242379 + timestamp: 1740028585109 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022005-release.conda noarch: python - sha256: 3cfb0055a5644ad9c53dec2d072d7aab4200bec29e321ff1bf0e2304148559a4 - md5: 6649b504b69613c9d0d0563f5dda8cac + sha256: 30d7b5434f9137fe5b234c2667999e7e2be763d01c0e7481892eafe34948775b + md5: 94e16d2fde39ce744582d233defc5bf0 depends: - - max-core ==25.2.0.dev2025021805 release + - max-core ==25.2.0.dev2025022005 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -3665,12 +3665,12 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 110049004 - timestamp: 1739857002577 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021805-release.conda + size: 110077418 + timestamp: 1740029626428 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022005-release.conda noarch: python - sha256: c2ce9921584024a755f45d2a7ba764a4e527a7bfc3aa7798e056e9fea35a4eb1 - md5: c90d37ff9d68f874286acdb235b62cfa + sha256: 9379e4793be7c455a88485d715e86e86166e81ac1cb616d889abdc1730c80d75 + md5: 088702bd2b036e232b196fe8de9718cb depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -3681,20 +3681,20 @@ packages: - typing_extensions >=v4.12.2 - python license: MIT - size: 130850 - timestamp: 1739855815922 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021805-release.conda + size: 130861 + timestamp: 1740028585109 +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022005-release.conda noarch: python - sha256: 5ff1420517896833664e430108a243134424ff45c78e00fc760d77525a91a750 - md5: e3f2fef53386541378382e32801068d7 + sha256: f6399ee0d27607ad82e7c947b8973fd19e412ca3dab78dc94c42b9039dcb9056 + md5: fc308a44c2304836e4b1d59928455a14 depends: - - max-core ==25.2.0.dev2025021805 release + - max-core ==25.2.0.dev2025022005 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22982 - timestamp: 1739855815922 + size: 22990 + timestamp: 1740028585109 - conda: https://conda.anaconda.org/conda-forge/linux-64/mpg123-1.32.9-hc50e24c_0.conda sha256: 39c4700fb3fbe403a77d8cc27352fa72ba744db487559d5d44bf8411bb4ea200 md5: c7f302fd11eeb0987a6a5e1f3aed6a21 @@ -5362,19 +5362,19 @@ packages: license_family: MIT size: 21809 timestamp: 1732827613585 -- conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda - sha256: c558b9cc01d9c1444031bd1ce4b9cff86f9085765f17627a6cd85fc623c8a02b - md5: 4d056880988120e29d75bfff282e0f45 +- conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb8e6e7a_0.conda + sha256: b8f7b4c7264e84fcedce3929239f5c55e86ae90948c9fdee666f93a70ca58e66 + md5: 3fe5420e4da42d8110c28f21de6cc127 depends: - - libgcc-ng >=12 - - libstdcxx-ng >=12 - - libzlib >=1.2.13,<2.0.0a0 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 arch: x86_64 platform: linux license: BSD-3-Clause - license_family: BSD - size: 554846 - timestamp: 1714722996770 + size: 564076 + timestamp: 1740024448267 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.6-h02f22dd_0.conda sha256: 484f9d0722c77685ae379fbff3ccd662af9ead7e59eb39cd6d0c677cdf25ff6c md5: be8d5f8cf21aed237b8b182ea86b3dd6 @@ -5388,15 +5388,14 @@ packages: license_family: BSD size: 539937 timestamp: 1714723130243 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.6-hb46c0d2_0.conda - sha256: 2d4fd1ff7ee79cd954ca8e81abf11d9d49954dd1fef80f27289e2402ae9c2e09 - md5: d96942c06c3e84bfcc5efb038724a7fd +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.7-h6491c7d_0.conda + sha256: ee7bbee860b437a214fbdfb4fdf9e48982dc984ad3b0bf2d6480d94c0a8fc8c4 + md5: 0924e073d067a32ace893528773ffded depends: - __osx >=11.0 - - libzlib >=1.2.13,<2.0.0a0 + - libzlib >=1.3.1,<2.0a0 arch: arm64 platform: osx license: BSD-3-Clause - license_family: BSD - size: 405089 - timestamp: 1714723101397 + size: 398443 + timestamp: 1740024500479 diff --git a/examples/magic.lock b/examples/magic.lock index dc72b3ce46..4a1ec4e720 100644 --- a/examples/magic.lock +++ b/examples/magic.lock @@ -36,17 +36,17 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsentencepiece-0.2.0-h8e10757_10.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.48.0-hee588c1_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.49.1-hee588c1_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-hc0a3c3a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021805-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025021805-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025021805-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021805-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022005-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022005-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022005-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022005-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022005-release.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-h2d0b736_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py311h64a7726_0.conda @@ -101,17 +101,17 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.3-h44a3b7b_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsentencepiece-0.2.0-h6164ad9_10.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.20-h68df207_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.48.0-h5eb1b54_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.49.1-h5eb1b54_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021805-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025021805-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025021805-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021805-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022005-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022005-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022005-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022005-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022005-release.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-ha32ae93_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py311h69ead2a_0.conda @@ -160,14 +160,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.3-h3bd63a1_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsentencepiece-0.2.0-he13a0af_10.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.48.0-h3f77e49_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.1-h3f77e49_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021805-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025021805-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025021805-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021805-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022005-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022005-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022005-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022005-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022005-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py311h7125741_0.conda @@ -1126,9 +1126,9 @@ packages: license: ISC size: 164972 timestamp: 1716828607917 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.48.0-hee588c1_1.conda - sha256: 22853d289ef6ec8a5b20f1aa261895b06525439990d3b139f8bfd0b5c5e32a3a - md5: 3fa05c528d8a1e2a67bbf1e36f22d3bc +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.49.1-hee588c1_1.conda + sha256: 7a09eef804ef7cf4d88215c2297eabb72af8ad0bd5b012060111c289f14bbe7d + md5: 73cea06049cc4174578b432320a003b8 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -1136,30 +1136,30 @@ packages: arch: x86_64 platform: linux license: Unlicense - size: 878223 - timestamp: 1737564987837 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.48.0-h5eb1b54_1.conda - sha256: 81dd9bf66c7f1d9064e007e2c787133100c406e7ca2de61dba9fb7b87372f255 - md5: 4f3a61fe206f20b27c385ee608bcdfda + size: 915956 + timestamp: 1739953155793 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.49.1-h5eb1b54_1.conda + sha256: 920fb3b7d3b873babf79a3e392cc82d43b8bd02a573ccaff34219efb5cf7b51e + md5: 150d64241fa27d9d35a7f421ca968a6c depends: - libgcc >=13 - libzlib >=1.3.1,<2.0a0 arch: aarch64 platform: linux license: Unlicense - size: 1044879 - timestamp: 1737565049785 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.48.0-h3f77e49_1.conda - sha256: 17c06940cc2a13fd6a17effabd6881b1477db38b2cd3ee2571092d293d3fdd75 - md5: 4c55169502ecddf8077973a987d08f08 + size: 915118 + timestamp: 1739953101699 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.1-h3f77e49_1.conda + sha256: 266639fb10ca92287961574b0b4d6031fa40dd9d723d64a0fcb08513a24dab03 + md5: c83357a21092bd952933c36c5cb4f4d6 depends: - __osx >=11.0 - libzlib >=1.3.1,<2.0a0 arch: arm64 platform: osx license: Unlicense - size: 852831 - timestamp: 1737564996616 + size: 898767 + timestamp: 1739953312379 - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-hc0a3c3a_1.conda sha256: 4661af0eb9bdcbb5fb33e5d0023b001ad4be828fccdcc56500059d56f9869462 md5: 234a5554c53625688d51062645337328 @@ -1299,48 +1299,48 @@ packages: license_family: APACHE size: 280830 timestamp: 1736986295869 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021805-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022005-release.conda noarch: python - sha256: 5abd2869c2a3e71f474e4fada2e32dbf664d886d0d5ab540872936dec3e30260 - md5: a36709ec752c9286fc680af014bc4208 + sha256: 73a728cc599d38eb95ae3d924bfcce33b9572728a42a065152d6aa5c9fc4825a + md5: dcea265b305fe4b5a751e23531e55fc6 depends: - - max-core ==25.2.0.dev2025021805 release - - max-python ==25.2.0.dev2025021805 release - - mojo-jupyter ==25.2.0.dev2025021805 release - - mblack ==25.2.0.dev2025021805 release + - max-core ==25.2.0.dev2025022005 release + - max-python ==25.2.0.dev2025022005 release + - mojo-jupyter ==25.2.0.dev2025022005 release + - mblack ==25.2.0.dev2025022005 release license: LicenseRef-Modular-Proprietary - size: 9903 - timestamp: 1739855815922 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025021805-release.conda - sha256: 340e8cb57a7bb09161be9967d243686d2bde6d33c3a459434b64850f655a6ebf - md5: 16c9ab16f86ea77c968f2ec9d8490b45 + size: 9911 + timestamp: 1740028585109 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022005-release.conda + sha256: 6d5a1dee924f2b90fee1da4fad534afce20cc5c10c8c2514215b882e6d9e3711 + md5: bab16e83b4190bf2743900ff977b23f3 depends: - - mblack ==25.2.0.dev2025021805 release + - mblack ==25.2.0.dev2025022005 release license: LicenseRef-Modular-Proprietary - size: 243537705 - timestamp: 1739855815922 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025021805-release.conda - sha256: 208db98626d7b13d83370cb148ed4c3b298ccb4be47735cb5c637482dc757e2d - md5: ffef7cb1076e8fff0bbf234ab579e490 + size: 243845116 + timestamp: 1740028633977 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022005-release.conda + sha256: 3651136079667dc3aabb624a5dd219f74212794e31488ed52453edb4eff8dda6 + md5: b2e5292f9128e4d3dd21b5efe9c62ec3 depends: - - mblack ==25.2.0.dev2025021805 release + - mblack ==25.2.0.dev2025022005 release license: LicenseRef-Modular-Proprietary - size: 246180299 - timestamp: 1739855933149 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025021805-release.conda - sha256: 358feba2a0de87990d5195f15b9f7c72d54735c651d2387dc9b19d9f18a5a808 - md5: 03c4c62591cfdceeedb187c81aa39e85 + size: 246414229 + timestamp: 1740028585109 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022005-release.conda + sha256: 2b4284fa358ecea61058a847a7f4ee5922840ea8cb0e7b23289e8e9737d84693 + md5: 4f78943e45265a6e74e0bc7c63d63d8e depends: - - mblack ==25.2.0.dev2025021805 release + - mblack ==25.2.0.dev2025022005 release license: LicenseRef-Modular-Proprietary - size: 211888906 - timestamp: 1739857002577 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025021805-release.conda + size: 212210721 + timestamp: 1740029626428 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022005-release.conda noarch: python - sha256: 628691ed2774526488211fd2e8dc1d7defc06e4ec2f01bddf1225e5f9a2c55c7 - md5: bad8379abe776c441bf27819069be200 + sha256: 3b0c24834d3acbc000e1a10142a2a1ffd20459c7872dc4511d7366e847c46100 + md5: fa6af33b4f5899b97d6d1dc189085efe depends: - - max-core ==25.2.0.dev2025021805 release + - max-core ==25.2.0.dev2025022005 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1378,14 +1378,14 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 120604349 - timestamp: 1739855815922 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025021805-release.conda + size: 120696393 + timestamp: 1740028633977 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022005-release.conda noarch: python - sha256: 929e59132a7c6525d8fcdd6de038a662d8676feba0ced0dd5fc587c54d0340b0 - md5: 7c27fe619fe036d42d317cc56c6e52de + sha256: f471037607a1ecd2f099d9f38d8bbe9bfb4b59973f5e21ecd8ba1df1dd753e18 + md5: 95bdf6cd858922b8827313101608306a depends: - - max-core ==25.2.0.dev2025021805 release + - max-core ==25.2.0.dev2025022005 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1423,14 +1423,14 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 123218799 - timestamp: 1739855933149 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025021805-release.conda + size: 123242379 + timestamp: 1740028585109 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022005-release.conda noarch: python - sha256: 3cfb0055a5644ad9c53dec2d072d7aab4200bec29e321ff1bf0e2304148559a4 - md5: 6649b504b69613c9d0d0563f5dda8cac + sha256: 30d7b5434f9137fe5b234c2667999e7e2be763d01c0e7481892eafe34948775b + md5: 94e16d2fde39ce744582d233defc5bf0 depends: - - max-core ==25.2.0.dev2025021805 release + - max-core ==25.2.0.dev2025022005 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1468,12 +1468,12 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 110049004 - timestamp: 1739857002577 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021805-release.conda + size: 110077418 + timestamp: 1740029626428 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022005-release.conda noarch: python - sha256: c2ce9921584024a755f45d2a7ba764a4e527a7bfc3aa7798e056e9fea35a4eb1 - md5: c90d37ff9d68f874286acdb235b62cfa + sha256: 9379e4793be7c455a88485d715e86e86166e81ac1cb616d889abdc1730c80d75 + md5: 088702bd2b036e232b196fe8de9718cb depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -1484,20 +1484,20 @@ packages: - typing_extensions >=v4.12.2 - python license: MIT - size: 130850 - timestamp: 1739855815922 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021805-release.conda + size: 130861 + timestamp: 1740028585109 +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022005-release.conda noarch: python - sha256: 5ff1420517896833664e430108a243134424ff45c78e00fc760d77525a91a750 - md5: e3f2fef53386541378382e32801068d7 + sha256: f6399ee0d27607ad82e7c947b8973fd19e412ca3dab78dc94c42b9039dcb9056 + md5: fc308a44c2304836e4b1d59928455a14 depends: - - max-core ==25.2.0.dev2025021805 release + - max-core ==25.2.0.dev2025022005 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22982 - timestamp: 1739855815922 + size: 22990 + timestamp: 1740028585109 - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda sha256: 1895f47b7d68581a6facde5cb13ab8c2764c2e53a76bd746f8f98910dc4e08fe md5: 29097e7ea634a45cc5386b95cac6568f diff --git a/examples/operators/magic.lock b/examples/operators/magic.lock index 339491c229..b9b1c1bda9 100644 --- a/examples/operators/magic.lock +++ b/examples/operators/magic.lock @@ -12,6 +12,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2025.1.31-hbcca054_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda @@ -37,20 +38,20 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsentencepiece-0.2.0-h8e10757_10.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.48.0-hee588c1_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.49.1-hee588c1_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-hc0a3c3a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.5-h0d44e9d_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.6-h8d12d68_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/llvm-openmp-19.1.7-h024ca30_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021805-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025021805-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025021805-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022005-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022005-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022005-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022005-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-2024.2.2-ha957f24_16.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022005-release.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-h2d0b736_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda @@ -106,17 +107,17 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.3-h44a3b7b_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsentencepiece-0.2.0-h6164ad9_10.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.20-h68df207_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.48.0-h5eb1b54_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.49.1-h5eb1b54_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021805-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025021805-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025021805-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021805-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022005-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022005-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022005-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022005-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022005-release.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-ha32ae93_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda @@ -165,14 +166,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.3-h3bd63a1_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsentencepiece-0.2.0-he13a0af_10.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.48.0-h3f77e49_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.1-h3f77e49_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021805-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025021805-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025021805-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021805-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022005-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022005-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022005-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022005-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022005-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda @@ -310,6 +311,19 @@ packages: license_family: BSD size: 27011 timestamp: 1733218222191 +- conda: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda + sha256: 71e750d509f5fa3421087ba88ef9a7b9be11c53174af3aa4d06aff4c18b38e8e + md5: 8b189310083baabfb622af68fd9d3ae3 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 12129203 + timestamp: 1720853576813 - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda sha256: 598951ebdb23e25e4cec4bbff0ae369cec65ead80b50bc08b441d8e54de5cf03 md5: f4b39bf00c69f56ac01e020ebfac066c @@ -1143,9 +1157,9 @@ packages: license: ISC size: 164972 timestamp: 1716828607917 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.48.0-hee588c1_1.conda - sha256: 22853d289ef6ec8a5b20f1aa261895b06525439990d3b139f8bfd0b5c5e32a3a - md5: 3fa05c528d8a1e2a67bbf1e36f22d3bc +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.49.1-hee588c1_1.conda + sha256: 7a09eef804ef7cf4d88215c2297eabb72af8ad0bd5b012060111c289f14bbe7d + md5: 73cea06049cc4174578b432320a003b8 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -1153,30 +1167,30 @@ packages: arch: x86_64 platform: linux license: Unlicense - size: 878223 - timestamp: 1737564987837 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.48.0-h5eb1b54_1.conda - sha256: 81dd9bf66c7f1d9064e007e2c787133100c406e7ca2de61dba9fb7b87372f255 - md5: 4f3a61fe206f20b27c385ee608bcdfda + size: 915956 + timestamp: 1739953155793 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.49.1-h5eb1b54_1.conda + sha256: 920fb3b7d3b873babf79a3e392cc82d43b8bd02a573ccaff34219efb5cf7b51e + md5: 150d64241fa27d9d35a7f421ca968a6c depends: - libgcc >=13 - libzlib >=1.3.1,<2.0a0 arch: aarch64 platform: linux license: Unlicense - size: 1044879 - timestamp: 1737565049785 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.48.0-h3f77e49_1.conda - sha256: 17c06940cc2a13fd6a17effabd6881b1477db38b2cd3ee2571092d293d3fdd75 - md5: 4c55169502ecddf8077973a987d08f08 + size: 915118 + timestamp: 1739953101699 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.1-h3f77e49_1.conda + sha256: 266639fb10ca92287961574b0b4d6031fa40dd9d723d64a0fcb08513a24dab03 + md5: c83357a21092bd952933c36c5cb4f4d6 depends: - __osx >=11.0 - libzlib >=1.3.1,<2.0a0 arch: arm64 platform: osx license: Unlicense - size: 852831 - timestamp: 1737564996616 + size: 898767 + timestamp: 1739953312379 - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-hc0a3c3a_1.conda sha256: 4661af0eb9bdcbb5fb33e5d0023b001ad4be828fccdcc56500059d56f9869462 md5: 234a5554c53625688d51062645337328 @@ -1263,23 +1277,22 @@ packages: license: LGPL-2.1-or-later size: 114269 timestamp: 1702724369203 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.5-h0d44e9d_1.conda - sha256: 306e18aa647d8208ad2cd0e62d84933222b2fbe93d2d53cd5283d2256b1d54de - md5: f5b05674697ae7d2c5932766695945e1 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.6-h8d12d68_0.conda + sha256: db8af71ea9c0ae95b7cb4a0f59319522ed2243942437a1200ceb391493018d85 + md5: 328382c0e0ca648e5c189d5ec336c604 depends: - __glibc >=2.17,<3.0.a0 + - icu >=75.1,<76.0a0 - libgcc >=13 - - libiconv >=1.17,<2.0a0 - - liblzma >=5.6.3,<6.0a0 + - libiconv >=1.18,<2.0a0 + - liblzma >=5.6.4,<6.0a0 - libzlib >=1.3.1,<2.0a0 - constrains: - - icu <0.0a0 arch: x86_64 platform: linux license: MIT license_family: MIT - size: 689993 - timestamp: 1733443678322 + size: 690296 + timestamp: 1739952967309 - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda sha256: d4bfe88d7cb447768e31650f06257995601f89076080e76df55e3112d4e47dc4 md5: edb0dca6bc32e4f4789199455a1dbeb8 @@ -1346,48 +1359,48 @@ packages: license_family: APACHE size: 280830 timestamp: 1736986295869 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021805-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022005-release.conda noarch: python - sha256: 5abd2869c2a3e71f474e4fada2e32dbf664d886d0d5ab540872936dec3e30260 - md5: a36709ec752c9286fc680af014bc4208 + sha256: 73a728cc599d38eb95ae3d924bfcce33b9572728a42a065152d6aa5c9fc4825a + md5: dcea265b305fe4b5a751e23531e55fc6 depends: - - max-core ==25.2.0.dev2025021805 release - - max-python ==25.2.0.dev2025021805 release - - mojo-jupyter ==25.2.0.dev2025021805 release - - mblack ==25.2.0.dev2025021805 release + - max-core ==25.2.0.dev2025022005 release + - max-python ==25.2.0.dev2025022005 release + - mojo-jupyter ==25.2.0.dev2025022005 release + - mblack ==25.2.0.dev2025022005 release license: LicenseRef-Modular-Proprietary - size: 9903 - timestamp: 1739855815922 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025021805-release.conda - sha256: 340e8cb57a7bb09161be9967d243686d2bde6d33c3a459434b64850f655a6ebf - md5: 16c9ab16f86ea77c968f2ec9d8490b45 + size: 9911 + timestamp: 1740028585109 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022005-release.conda + sha256: 6d5a1dee924f2b90fee1da4fad534afce20cc5c10c8c2514215b882e6d9e3711 + md5: bab16e83b4190bf2743900ff977b23f3 depends: - - mblack ==25.2.0.dev2025021805 release + - mblack ==25.2.0.dev2025022005 release license: LicenseRef-Modular-Proprietary - size: 243537705 - timestamp: 1739855815922 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025021805-release.conda - sha256: 208db98626d7b13d83370cb148ed4c3b298ccb4be47735cb5c637482dc757e2d - md5: ffef7cb1076e8fff0bbf234ab579e490 + size: 243845116 + timestamp: 1740028633977 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022005-release.conda + sha256: 3651136079667dc3aabb624a5dd219f74212794e31488ed52453edb4eff8dda6 + md5: b2e5292f9128e4d3dd21b5efe9c62ec3 depends: - - mblack ==25.2.0.dev2025021805 release + - mblack ==25.2.0.dev2025022005 release license: LicenseRef-Modular-Proprietary - size: 246180299 - timestamp: 1739855933149 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025021805-release.conda - sha256: 358feba2a0de87990d5195f15b9f7c72d54735c651d2387dc9b19d9f18a5a808 - md5: 03c4c62591cfdceeedb187c81aa39e85 + size: 246414229 + timestamp: 1740028585109 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022005-release.conda + sha256: 2b4284fa358ecea61058a847a7f4ee5922840ea8cb0e7b23289e8e9737d84693 + md5: 4f78943e45265a6e74e0bc7c63d63d8e depends: - - mblack ==25.2.0.dev2025021805 release + - mblack ==25.2.0.dev2025022005 release license: LicenseRef-Modular-Proprietary - size: 211888906 - timestamp: 1739857002577 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025021805-release.conda + size: 212210721 + timestamp: 1740029626428 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022005-release.conda noarch: python - sha256: 628691ed2774526488211fd2e8dc1d7defc06e4ec2f01bddf1225e5f9a2c55c7 - md5: bad8379abe776c441bf27819069be200 + sha256: 3b0c24834d3acbc000e1a10142a2a1ffd20459c7872dc4511d7366e847c46100 + md5: fa6af33b4f5899b97d6d1dc189085efe depends: - - max-core ==25.2.0.dev2025021805 release + - max-core ==25.2.0.dev2025022005 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1425,14 +1438,14 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 120604349 - timestamp: 1739855815922 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025021805-release.conda + size: 120696393 + timestamp: 1740028633977 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022005-release.conda noarch: python - sha256: 929e59132a7c6525d8fcdd6de038a662d8676feba0ced0dd5fc587c54d0340b0 - md5: 7c27fe619fe036d42d317cc56c6e52de + sha256: f471037607a1ecd2f099d9f38d8bbe9bfb4b59973f5e21ecd8ba1df1dd753e18 + md5: 95bdf6cd858922b8827313101608306a depends: - - max-core ==25.2.0.dev2025021805 release + - max-core ==25.2.0.dev2025022005 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1470,14 +1483,14 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 123218799 - timestamp: 1739855933149 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025021805-release.conda + size: 123242379 + timestamp: 1740028585109 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022005-release.conda noarch: python - sha256: 3cfb0055a5644ad9c53dec2d072d7aab4200bec29e321ff1bf0e2304148559a4 - md5: 6649b504b69613c9d0d0563f5dda8cac + sha256: 30d7b5434f9137fe5b234c2667999e7e2be763d01c0e7481892eafe34948775b + md5: 94e16d2fde39ce744582d233defc5bf0 depends: - - max-core ==25.2.0.dev2025021805 release + - max-core ==25.2.0.dev2025022005 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1515,12 +1528,12 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 110049004 - timestamp: 1739857002577 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021805-release.conda + size: 110077418 + timestamp: 1740029626428 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022005-release.conda noarch: python - sha256: c2ce9921584024a755f45d2a7ba764a4e527a7bfc3aa7798e056e9fea35a4eb1 - md5: c90d37ff9d68f874286acdb235b62cfa + sha256: 9379e4793be7c455a88485d715e86e86166e81ac1cb616d889abdc1730c80d75 + md5: 088702bd2b036e232b196fe8de9718cb depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -1531,8 +1544,8 @@ packages: - typing_extensions >=v4.12.2 - python license: MIT - size: 130850 - timestamp: 1739855815922 + size: 130861 + timestamp: 1740028585109 - conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-2024.2.2-ha957f24_16.conda sha256: 77906b0acead8f86b489da46f53916e624897338770dbf70b04b8f673c9273c1 md5: 1459379c79dda834673426504d52b319 @@ -1547,18 +1560,18 @@ packages: license_family: Proprietary size: 124718448 timestamp: 1730231808335 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021805-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022005-release.conda noarch: python - sha256: 5ff1420517896833664e430108a243134424ff45c78e00fc760d77525a91a750 - md5: e3f2fef53386541378382e32801068d7 + sha256: f6399ee0d27607ad82e7c947b8973fd19e412ca3dab78dc94c42b9039dcb9056 + md5: fc308a44c2304836e4b1d59928455a14 depends: - - max-core ==25.2.0.dev2025021805 release + - max-core ==25.2.0.dev2025022005 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22982 - timestamp: 1739855815922 + size: 22990 + timestamp: 1740028585109 - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda sha256: 1895f47b7d68581a6facde5cb13ab8c2764c2e53a76bd746f8f98910dc4e08fe md5: 29097e7ea634a45cc5386b95cac6568f diff --git a/examples/testing/magic.lock b/examples/testing/magic.lock index 339491c229..b9b1c1bda9 100644 --- a/examples/testing/magic.lock +++ b/examples/testing/magic.lock @@ -12,6 +12,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2025.1.31-hbcca054_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda @@ -37,20 +38,20 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsentencepiece-0.2.0-h8e10757_10.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.48.0-hee588c1_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.49.1-hee588c1_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-hc0a3c3a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.5-h0d44e9d_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.6-h8d12d68_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/llvm-openmp-19.1.7-h024ca30_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021805-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025021805-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025021805-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022005-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022005-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022005-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022005-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-2024.2.2-ha957f24_16.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022005-release.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-h2d0b736_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda @@ -106,17 +107,17 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.3-h44a3b7b_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsentencepiece-0.2.0-h6164ad9_10.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.20-h68df207_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.48.0-h5eb1b54_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.49.1-h5eb1b54_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021805-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025021805-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025021805-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021805-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022005-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022005-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022005-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022005-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022005-release.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-ha32ae93_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda @@ -165,14 +166,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.3-h3bd63a1_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsentencepiece-0.2.0-he13a0af_10.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.48.0-h3f77e49_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.1-h3f77e49_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021805-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025021805-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025021805-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021805-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022005-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022005-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022005-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022005-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022005-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda @@ -310,6 +311,19 @@ packages: license_family: BSD size: 27011 timestamp: 1733218222191 +- conda: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda + sha256: 71e750d509f5fa3421087ba88ef9a7b9be11c53174af3aa4d06aff4c18b38e8e + md5: 8b189310083baabfb622af68fd9d3ae3 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 12129203 + timestamp: 1720853576813 - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda sha256: 598951ebdb23e25e4cec4bbff0ae369cec65ead80b50bc08b441d8e54de5cf03 md5: f4b39bf00c69f56ac01e020ebfac066c @@ -1143,9 +1157,9 @@ packages: license: ISC size: 164972 timestamp: 1716828607917 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.48.0-hee588c1_1.conda - sha256: 22853d289ef6ec8a5b20f1aa261895b06525439990d3b139f8bfd0b5c5e32a3a - md5: 3fa05c528d8a1e2a67bbf1e36f22d3bc +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.49.1-hee588c1_1.conda + sha256: 7a09eef804ef7cf4d88215c2297eabb72af8ad0bd5b012060111c289f14bbe7d + md5: 73cea06049cc4174578b432320a003b8 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -1153,30 +1167,30 @@ packages: arch: x86_64 platform: linux license: Unlicense - size: 878223 - timestamp: 1737564987837 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.48.0-h5eb1b54_1.conda - sha256: 81dd9bf66c7f1d9064e007e2c787133100c406e7ca2de61dba9fb7b87372f255 - md5: 4f3a61fe206f20b27c385ee608bcdfda + size: 915956 + timestamp: 1739953155793 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.49.1-h5eb1b54_1.conda + sha256: 920fb3b7d3b873babf79a3e392cc82d43b8bd02a573ccaff34219efb5cf7b51e + md5: 150d64241fa27d9d35a7f421ca968a6c depends: - libgcc >=13 - libzlib >=1.3.1,<2.0a0 arch: aarch64 platform: linux license: Unlicense - size: 1044879 - timestamp: 1737565049785 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.48.0-h3f77e49_1.conda - sha256: 17c06940cc2a13fd6a17effabd6881b1477db38b2cd3ee2571092d293d3fdd75 - md5: 4c55169502ecddf8077973a987d08f08 + size: 915118 + timestamp: 1739953101699 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.1-h3f77e49_1.conda + sha256: 266639fb10ca92287961574b0b4d6031fa40dd9d723d64a0fcb08513a24dab03 + md5: c83357a21092bd952933c36c5cb4f4d6 depends: - __osx >=11.0 - libzlib >=1.3.1,<2.0a0 arch: arm64 platform: osx license: Unlicense - size: 852831 - timestamp: 1737564996616 + size: 898767 + timestamp: 1739953312379 - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-hc0a3c3a_1.conda sha256: 4661af0eb9bdcbb5fb33e5d0023b001ad4be828fccdcc56500059d56f9869462 md5: 234a5554c53625688d51062645337328 @@ -1263,23 +1277,22 @@ packages: license: LGPL-2.1-or-later size: 114269 timestamp: 1702724369203 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.5-h0d44e9d_1.conda - sha256: 306e18aa647d8208ad2cd0e62d84933222b2fbe93d2d53cd5283d2256b1d54de - md5: f5b05674697ae7d2c5932766695945e1 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.6-h8d12d68_0.conda + sha256: db8af71ea9c0ae95b7cb4a0f59319522ed2243942437a1200ceb391493018d85 + md5: 328382c0e0ca648e5c189d5ec336c604 depends: - __glibc >=2.17,<3.0.a0 + - icu >=75.1,<76.0a0 - libgcc >=13 - - libiconv >=1.17,<2.0a0 - - liblzma >=5.6.3,<6.0a0 + - libiconv >=1.18,<2.0a0 + - liblzma >=5.6.4,<6.0a0 - libzlib >=1.3.1,<2.0a0 - constrains: - - icu <0.0a0 arch: x86_64 platform: linux license: MIT license_family: MIT - size: 689993 - timestamp: 1733443678322 + size: 690296 + timestamp: 1739952967309 - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda sha256: d4bfe88d7cb447768e31650f06257995601f89076080e76df55e3112d4e47dc4 md5: edb0dca6bc32e4f4789199455a1dbeb8 @@ -1346,48 +1359,48 @@ packages: license_family: APACHE size: 280830 timestamp: 1736986295869 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021805-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022005-release.conda noarch: python - sha256: 5abd2869c2a3e71f474e4fada2e32dbf664d886d0d5ab540872936dec3e30260 - md5: a36709ec752c9286fc680af014bc4208 + sha256: 73a728cc599d38eb95ae3d924bfcce33b9572728a42a065152d6aa5c9fc4825a + md5: dcea265b305fe4b5a751e23531e55fc6 depends: - - max-core ==25.2.0.dev2025021805 release - - max-python ==25.2.0.dev2025021805 release - - mojo-jupyter ==25.2.0.dev2025021805 release - - mblack ==25.2.0.dev2025021805 release + - max-core ==25.2.0.dev2025022005 release + - max-python ==25.2.0.dev2025022005 release + - mojo-jupyter ==25.2.0.dev2025022005 release + - mblack ==25.2.0.dev2025022005 release license: LicenseRef-Modular-Proprietary - size: 9903 - timestamp: 1739855815922 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025021805-release.conda - sha256: 340e8cb57a7bb09161be9967d243686d2bde6d33c3a459434b64850f655a6ebf - md5: 16c9ab16f86ea77c968f2ec9d8490b45 + size: 9911 + timestamp: 1740028585109 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022005-release.conda + sha256: 6d5a1dee924f2b90fee1da4fad534afce20cc5c10c8c2514215b882e6d9e3711 + md5: bab16e83b4190bf2743900ff977b23f3 depends: - - mblack ==25.2.0.dev2025021805 release + - mblack ==25.2.0.dev2025022005 release license: LicenseRef-Modular-Proprietary - size: 243537705 - timestamp: 1739855815922 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025021805-release.conda - sha256: 208db98626d7b13d83370cb148ed4c3b298ccb4be47735cb5c637482dc757e2d - md5: ffef7cb1076e8fff0bbf234ab579e490 + size: 243845116 + timestamp: 1740028633977 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022005-release.conda + sha256: 3651136079667dc3aabb624a5dd219f74212794e31488ed52453edb4eff8dda6 + md5: b2e5292f9128e4d3dd21b5efe9c62ec3 depends: - - mblack ==25.2.0.dev2025021805 release + - mblack ==25.2.0.dev2025022005 release license: LicenseRef-Modular-Proprietary - size: 246180299 - timestamp: 1739855933149 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025021805-release.conda - sha256: 358feba2a0de87990d5195f15b9f7c72d54735c651d2387dc9b19d9f18a5a808 - md5: 03c4c62591cfdceeedb187c81aa39e85 + size: 246414229 + timestamp: 1740028585109 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022005-release.conda + sha256: 2b4284fa358ecea61058a847a7f4ee5922840ea8cb0e7b23289e8e9737d84693 + md5: 4f78943e45265a6e74e0bc7c63d63d8e depends: - - mblack ==25.2.0.dev2025021805 release + - mblack ==25.2.0.dev2025022005 release license: LicenseRef-Modular-Proprietary - size: 211888906 - timestamp: 1739857002577 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025021805-release.conda + size: 212210721 + timestamp: 1740029626428 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022005-release.conda noarch: python - sha256: 628691ed2774526488211fd2e8dc1d7defc06e4ec2f01bddf1225e5f9a2c55c7 - md5: bad8379abe776c441bf27819069be200 + sha256: 3b0c24834d3acbc000e1a10142a2a1ffd20459c7872dc4511d7366e847c46100 + md5: fa6af33b4f5899b97d6d1dc189085efe depends: - - max-core ==25.2.0.dev2025021805 release + - max-core ==25.2.0.dev2025022005 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1425,14 +1438,14 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 120604349 - timestamp: 1739855815922 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025021805-release.conda + size: 120696393 + timestamp: 1740028633977 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022005-release.conda noarch: python - sha256: 929e59132a7c6525d8fcdd6de038a662d8676feba0ced0dd5fc587c54d0340b0 - md5: 7c27fe619fe036d42d317cc56c6e52de + sha256: f471037607a1ecd2f099d9f38d8bbe9bfb4b59973f5e21ecd8ba1df1dd753e18 + md5: 95bdf6cd858922b8827313101608306a depends: - - max-core ==25.2.0.dev2025021805 release + - max-core ==25.2.0.dev2025022005 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1470,14 +1483,14 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 123218799 - timestamp: 1739855933149 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025021805-release.conda + size: 123242379 + timestamp: 1740028585109 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022005-release.conda noarch: python - sha256: 3cfb0055a5644ad9c53dec2d072d7aab4200bec29e321ff1bf0e2304148559a4 - md5: 6649b504b69613c9d0d0563f5dda8cac + sha256: 30d7b5434f9137fe5b234c2667999e7e2be763d01c0e7481892eafe34948775b + md5: 94e16d2fde39ce744582d233defc5bf0 depends: - - max-core ==25.2.0.dev2025021805 release + - max-core ==25.2.0.dev2025022005 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1515,12 +1528,12 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 110049004 - timestamp: 1739857002577 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021805-release.conda + size: 110077418 + timestamp: 1740029626428 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022005-release.conda noarch: python - sha256: c2ce9921584024a755f45d2a7ba764a4e527a7bfc3aa7798e056e9fea35a4eb1 - md5: c90d37ff9d68f874286acdb235b62cfa + sha256: 9379e4793be7c455a88485d715e86e86166e81ac1cb616d889abdc1730c80d75 + md5: 088702bd2b036e232b196fe8de9718cb depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -1531,8 +1544,8 @@ packages: - typing_extensions >=v4.12.2 - python license: MIT - size: 130850 - timestamp: 1739855815922 + size: 130861 + timestamp: 1740028585109 - conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-2024.2.2-ha957f24_16.conda sha256: 77906b0acead8f86b489da46f53916e624897338770dbf70b04b8f673c9273c1 md5: 1459379c79dda834673426504d52b319 @@ -1547,18 +1560,18 @@ packages: license_family: Proprietary size: 124718448 timestamp: 1730231808335 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021805-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022005-release.conda noarch: python - sha256: 5ff1420517896833664e430108a243134424ff45c78e00fc760d77525a91a750 - md5: e3f2fef53386541378382e32801068d7 + sha256: f6399ee0d27607ad82e7c947b8973fd19e412ca3dab78dc94c42b9039dcb9056 + md5: fc308a44c2304836e4b1d59928455a14 depends: - - max-core ==25.2.0.dev2025021805 release + - max-core ==25.2.0.dev2025022005 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22982 - timestamp: 1739855815922 + size: 22990 + timestamp: 1740028585109 - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda sha256: 1895f47b7d68581a6facde5cb13ab8c2764c2e53a76bd746f8f98910dc4e08fe md5: 29097e7ea634a45cc5386b95cac6568f diff --git a/magic.lock b/magic.lock index ea302510e7..cf9d9102b6 100644 --- a/magic.lock +++ b/magic.lock @@ -36,18 +36,18 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsentencepiece-0.2.0-h8e10757_10.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.48.0-hee588c1_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.49.1-hee588c1_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-hc0a3c3a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/lit-19.1.7-pyhd8ed1ab_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021805-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025021805-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025021805-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021805-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022005-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022005-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022005-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022005-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022005-release.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-h2d0b736_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda @@ -102,18 +102,18 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.3-h44a3b7b_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsentencepiece-0.2.0-h6164ad9_10.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.20-h68df207_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.48.0-h5eb1b54_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.49.1-h5eb1b54_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/lit-19.1.7-pyhd8ed1ab_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021805-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025021805-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025021805-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021805-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022005-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022005-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022005-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022005-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022005-release.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-ha32ae93_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda @@ -162,15 +162,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.3-h3bd63a1_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsentencepiece-0.2.0-he13a0af_10.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.48.0-h3f77e49_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.1-h3f77e49_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/lit-19.1.7-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021805-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025021805-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025021805-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021805-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022005-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022005-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022005-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022005-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022005-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda @@ -1129,9 +1129,9 @@ packages: license: ISC size: 164972 timestamp: 1716828607917 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.48.0-hee588c1_1.conda - sha256: 22853d289ef6ec8a5b20f1aa261895b06525439990d3b139f8bfd0b5c5e32a3a - md5: 3fa05c528d8a1e2a67bbf1e36f22d3bc +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.49.1-hee588c1_1.conda + sha256: 7a09eef804ef7cf4d88215c2297eabb72af8ad0bd5b012060111c289f14bbe7d + md5: 73cea06049cc4174578b432320a003b8 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -1139,30 +1139,30 @@ packages: arch: x86_64 platform: linux license: Unlicense - size: 878223 - timestamp: 1737564987837 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.48.0-h5eb1b54_1.conda - sha256: 81dd9bf66c7f1d9064e007e2c787133100c406e7ca2de61dba9fb7b87372f255 - md5: 4f3a61fe206f20b27c385ee608bcdfda + size: 915956 + timestamp: 1739953155793 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.49.1-h5eb1b54_1.conda + sha256: 920fb3b7d3b873babf79a3e392cc82d43b8bd02a573ccaff34219efb5cf7b51e + md5: 150d64241fa27d9d35a7f421ca968a6c depends: - libgcc >=13 - libzlib >=1.3.1,<2.0a0 arch: aarch64 platform: linux license: Unlicense - size: 1044879 - timestamp: 1737565049785 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.48.0-h3f77e49_1.conda - sha256: 17c06940cc2a13fd6a17effabd6881b1477db38b2cd3ee2571092d293d3fdd75 - md5: 4c55169502ecddf8077973a987d08f08 + size: 915118 + timestamp: 1739953101699 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.1-h3f77e49_1.conda + sha256: 266639fb10ca92287961574b0b4d6031fa40dd9d723d64a0fcb08513a24dab03 + md5: c83357a21092bd952933c36c5cb4f4d6 depends: - __osx >=11.0 - libzlib >=1.3.1,<2.0a0 arch: arm64 platform: osx license: Unlicense - size: 852831 - timestamp: 1737564996616 + size: 898767 + timestamp: 1739953312379 - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-hc0a3c3a_1.conda sha256: 4661af0eb9bdcbb5fb33e5d0023b001ad4be828fccdcc56500059d56f9869462 md5: 234a5554c53625688d51062645337328 @@ -1311,48 +1311,48 @@ packages: license_family: APACHE size: 280830 timestamp: 1736986295869 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025021805-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022005-release.conda noarch: python - sha256: 5abd2869c2a3e71f474e4fada2e32dbf664d886d0d5ab540872936dec3e30260 - md5: a36709ec752c9286fc680af014bc4208 + sha256: 73a728cc599d38eb95ae3d924bfcce33b9572728a42a065152d6aa5c9fc4825a + md5: dcea265b305fe4b5a751e23531e55fc6 depends: - - max-core ==25.2.0.dev2025021805 release - - max-python ==25.2.0.dev2025021805 release - - mojo-jupyter ==25.2.0.dev2025021805 release - - mblack ==25.2.0.dev2025021805 release + - max-core ==25.2.0.dev2025022005 release + - max-python ==25.2.0.dev2025022005 release + - mojo-jupyter ==25.2.0.dev2025022005 release + - mblack ==25.2.0.dev2025022005 release license: LicenseRef-Modular-Proprietary - size: 9903 - timestamp: 1739855815922 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025021805-release.conda - sha256: 340e8cb57a7bb09161be9967d243686d2bde6d33c3a459434b64850f655a6ebf - md5: 16c9ab16f86ea77c968f2ec9d8490b45 + size: 9911 + timestamp: 1740028585109 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022005-release.conda + sha256: 6d5a1dee924f2b90fee1da4fad534afce20cc5c10c8c2514215b882e6d9e3711 + md5: bab16e83b4190bf2743900ff977b23f3 depends: - - mblack ==25.2.0.dev2025021805 release + - mblack ==25.2.0.dev2025022005 release license: LicenseRef-Modular-Proprietary - size: 243537705 - timestamp: 1739855815922 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025021805-release.conda - sha256: 208db98626d7b13d83370cb148ed4c3b298ccb4be47735cb5c637482dc757e2d - md5: ffef7cb1076e8fff0bbf234ab579e490 + size: 243845116 + timestamp: 1740028633977 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022005-release.conda + sha256: 3651136079667dc3aabb624a5dd219f74212794e31488ed52453edb4eff8dda6 + md5: b2e5292f9128e4d3dd21b5efe9c62ec3 depends: - - mblack ==25.2.0.dev2025021805 release + - mblack ==25.2.0.dev2025022005 release license: LicenseRef-Modular-Proprietary - size: 246180299 - timestamp: 1739855933149 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025021805-release.conda - sha256: 358feba2a0de87990d5195f15b9f7c72d54735c651d2387dc9b19d9f18a5a808 - md5: 03c4c62591cfdceeedb187c81aa39e85 + size: 246414229 + timestamp: 1740028585109 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022005-release.conda + sha256: 2b4284fa358ecea61058a847a7f4ee5922840ea8cb0e7b23289e8e9737d84693 + md5: 4f78943e45265a6e74e0bc7c63d63d8e depends: - - mblack ==25.2.0.dev2025021805 release + - mblack ==25.2.0.dev2025022005 release license: LicenseRef-Modular-Proprietary - size: 211888906 - timestamp: 1739857002577 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025021805-release.conda + size: 212210721 + timestamp: 1740029626428 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022005-release.conda noarch: python - sha256: 628691ed2774526488211fd2e8dc1d7defc06e4ec2f01bddf1225e5f9a2c55c7 - md5: bad8379abe776c441bf27819069be200 + sha256: 3b0c24834d3acbc000e1a10142a2a1ffd20459c7872dc4511d7366e847c46100 + md5: fa6af33b4f5899b97d6d1dc189085efe depends: - - max-core ==25.2.0.dev2025021805 release + - max-core ==25.2.0.dev2025022005 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1390,14 +1390,14 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 120604349 - timestamp: 1739855815922 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025021805-release.conda + size: 120696393 + timestamp: 1740028633977 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022005-release.conda noarch: python - sha256: 929e59132a7c6525d8fcdd6de038a662d8676feba0ced0dd5fc587c54d0340b0 - md5: 7c27fe619fe036d42d317cc56c6e52de + sha256: f471037607a1ecd2f099d9f38d8bbe9bfb4b59973f5e21ecd8ba1df1dd753e18 + md5: 95bdf6cd858922b8827313101608306a depends: - - max-core ==25.2.0.dev2025021805 release + - max-core ==25.2.0.dev2025022005 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1435,14 +1435,14 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 123218799 - timestamp: 1739855933149 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025021805-release.conda + size: 123242379 + timestamp: 1740028585109 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022005-release.conda noarch: python - sha256: 3cfb0055a5644ad9c53dec2d072d7aab4200bec29e321ff1bf0e2304148559a4 - md5: 6649b504b69613c9d0d0563f5dda8cac + sha256: 30d7b5434f9137fe5b234c2667999e7e2be763d01c0e7481892eafe34948775b + md5: 94e16d2fde39ce744582d233defc5bf0 depends: - - max-core ==25.2.0.dev2025021805 release + - max-core ==25.2.0.dev2025022005 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1480,12 +1480,12 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 110049004 - timestamp: 1739857002577 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025021805-release.conda + size: 110077418 + timestamp: 1740029626428 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022005-release.conda noarch: python - sha256: c2ce9921584024a755f45d2a7ba764a4e527a7bfc3aa7798e056e9fea35a4eb1 - md5: c90d37ff9d68f874286acdb235b62cfa + sha256: 9379e4793be7c455a88485d715e86e86166e81ac1cb616d889abdc1730c80d75 + md5: 088702bd2b036e232b196fe8de9718cb depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -1496,20 +1496,20 @@ packages: - typing_extensions >=v4.12.2 - python license: MIT - size: 130850 - timestamp: 1739855815922 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025021805-release.conda + size: 130861 + timestamp: 1740028585109 +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022005-release.conda noarch: python - sha256: 5ff1420517896833664e430108a243134424ff45c78e00fc760d77525a91a750 - md5: e3f2fef53386541378382e32801068d7 + sha256: f6399ee0d27607ad82e7c947b8973fd19e412ca3dab78dc94c42b9039dcb9056 + md5: fc308a44c2304836e4b1d59928455a14 depends: - - max-core ==25.2.0.dev2025021805 release + - max-core ==25.2.0.dev2025022005 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22982 - timestamp: 1739855815922 + size: 22990 + timestamp: 1740028585109 - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda sha256: 1895f47b7d68581a6facde5cb13ab8c2764c2e53a76bd746f8f98910dc4e08fe md5: 29097e7ea634a45cc5386b95cac6568f From b17d979b39a767279255c032b525b07c29886755 Mon Sep 17 00:00:00 2001 From: abdul dakkak Date: Wed, 19 Feb 2025 21:41:06 -0800 Subject: [PATCH 422/509] [Stdlib] Fix SIMD.round function which was not performing banker rounding This fixes the SIMD.round function to follow the Python 3 semantics. Python 3 rounding is different from Python 2 (see https://stackoverflow.com/questions/10825926/python-3-x-rounding-behavior). MODULAR_ORIG_COMMIT_REV_ID: 413b47f5c539542853bc0e361f4ed5b5595d11f0 --- docs/changelog.md | 6 ++++++ stdlib/src/builtin/simd.mojo | 18 +++++++++++++++--- stdlib/test/builtin/test_math.mojo | 12 +++++------- stdlib/test/builtin/test_simd.mojo | 14 +++----------- 4 files changed, 29 insertions(+), 21 deletions(-) diff --git a/docs/changelog.md b/docs/changelog.md index 7844616f21..28a9d22cec 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -69,6 +69,12 @@ what we publish. print(element[]) ``` +- The `round` function is now fixed to perform "round half to even" (also known + as "bankers' rounding") instead of "round half away from zero". + +- The `SIMD.roundeven()` method has been removed from the standard library. + This functionality is now handled by the `round()` function. + ### GPU changes - `ctx.enqueue_function(compiled_func, ...)` is deprecated: diff --git a/stdlib/src/builtin/simd.mojo b/stdlib/src/builtin/simd.mojo index 96e4a5732c..6fda0a23a8 100644 --- a/stdlib/src/builtin/simd.mojo +++ b/stdlib/src/builtin/simd.mojo @@ -1712,7 +1712,14 @@ struct SIMD[type: DType, size: Int]( Returns: The elementwise rounded value of this SIMD vector. """ - return llvm_intrinsic["llvm.round", Self, has_side_effect=False](self) + + @parameter + if type.is_integral() or type is DType.bool: + return self + + return llvm_intrinsic["llvm.roundeven", Self, has_side_effect=False]( + self + ) @always_inline("nodebug") fn __round__(self, ndigits: Int) -> Self: @@ -1726,8 +1733,13 @@ struct SIMD[type: DType, size: Int]( Returns: The elementwise rounded value of this SIMD vector. """ - # TODO: see how can we implement this. - return llvm_intrinsic["llvm.round", Self, has_side_effect=False](self) + + @parameter + if type.is_integral() or type is DType.bool: + return self + + var exp = SIMD[type, size](10) ** ndigits + return (self * exp).__round__() / exp fn __hash__(self) -> UInt: """Hash the value using builtin hash. diff --git a/stdlib/test/builtin/test_math.mojo b/stdlib/test/builtin/test_math.mojo index f23658f2e3..0667b86cc5 100644 --- a/stdlib/test/builtin/test_math.mojo +++ b/stdlib/test/builtin/test_math.mojo @@ -96,13 +96,11 @@ def test_round(): assert_equal(2, round(1.5)) assert_equal(2, round(2.0)) assert_equal(1, round(1.4, 0)) - assert_equal(3, round(2.5)) + assert_equal(2, round(2.5)) + assert_equal(-2, round(-2.5)) - # FIXME(MSTDL-1188): SIMD.__round__ completely ignores # digits. - # FIXME: Should be: assert_equal(1.5, round(1.5, 1)) - assert_equal(2, round(1.5, 1)) - # FIXME: Should be: assert_equal(1.61, round(1.613, 2)) - assert_equal(2, round(1.613, 2)) + assert_equal(1.5, round(1.5, 1)) + assert_equal(1.61, round(1.613, 2)) var lhs = SIMD[DType.float32, 4](1.1, 1.5, 1.9, 2.0) var expected = SIMD[DType.float32, 4](1.0, 2.0, 2.0, 2.0) @@ -112,7 +110,7 @@ def test_round(): alias r1 = round(2.3) assert_equal(r1, 2.0) alias r2 = round(2.3324, 2) - assert_equal(r2, 2) # FIXME: ignoring # digits + assert_equal(r2, 2.33) def test_pow(): diff --git a/stdlib/test/builtin/test_simd.mojo b/stdlib/test/builtin/test_simd.mojo index b89a35e70e..184627c5b7 100644 --- a/stdlib/test/builtin/test_simd.mojo +++ b/stdlib/test/builtin/test_simd.mojo @@ -552,19 +552,12 @@ def test_trunc(): def test_round(): - assert_equal(Float32.__round__(Float32(2.5)), 3.0) + assert_equal(Float32.__round__(Float32(2.5)), 2.0) + assert_equal(Float32.__round__(Float32(3.5)), 4.0) assert_equal(Float32.__round__(Float32(-3.5)), -4.0) alias F = SIMD[DType.float32, 4] - assert_equal(F.__round__(F(1.5, 2.5, -2.5, -3.5)), F(2.0, 3.0, -3.0, -4.0)) - - -def test_roundeven(): - assert_equal(Float32(2.5).roundeven(), 2.0) - assert_equal(Float32(-3.5).roundeven(), -4.0) - - alias F = SIMD[DType.float32, 4] - assert_equal(F(1.5, 2.5, -2.5, -3.5).roundeven(), F(2.0, 2.0, -2.0, -4.0)) + assert_equal(F.__round__(F(1.5, 2.5, -2.5, -3.5)), F(2.0, 2.0, -2.0, -4.0)) def test_div(): @@ -1953,7 +1946,6 @@ def main(): test_rmod() test_rotate() test_round() - test_roundeven() test_rsub() test_shift() test_shuffle() From 528c27bf8043ae42ffc99955970cbc580594027a Mon Sep 17 00:00:00 2001 From: Anand Pratap Singh <628125+anandpratap@users.noreply.github.com> Date: Thu, 20 Feb 2025 16:19:00 -0500 Subject: [PATCH 423/509] [stdlib] Fix grid dimensions grid_dim.{x,y,z} for AMD Grid dimensions are 32 bits but were were assuming they are 16 bits when reading from the implicit arg pointer. MODULAR_ORIG_COMMIT_REV_ID: ef1ffb715a5979aebee758dc398ecd53ff159745 --- stdlib/src/sys/intrinsics.mojo | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/stdlib/src/sys/intrinsics.mojo b/stdlib/src/sys/intrinsics.mojo index 58c7069a2d..3aa5fabfef 100644 --- a/stdlib/src/sys/intrinsics.mojo +++ b/stdlib/src/sys/intrinsics.mojo @@ -1086,10 +1086,10 @@ alias block_idx = _BlockIdx() @always_inline -fn _get_gcn_idx[offset: Int]() -> UInt: +fn _get_gcn_idx[offset: Int, dtype: DType = DType.int16]() -> UInt: var ptr = llvm_intrinsic[ "llvm.amdgcn.implicitarg.ptr", - UnsafePointer[Int16, address_space=4], + UnsafePointer[Scalar[dtype], address_space=4], has_side_effect=False, ]() return UInt(Int(ptr.load[alignment=4](offset))) @@ -1191,7 +1191,7 @@ struct _GridDim: constrained[dim == "z"]() return 2 - return _get_gcn_idx[_get_offset()]() + return _get_gcn_idx[_get_offset(), DType.int32]() alias grid_dim = _GridDim() From 8d1763a2819d044b3ed7c31372171e1d2fe63fff Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Thu, 20 Feb 2025 17:35:50 -0800 Subject: [PATCH 424/509] [mojo-lang] Add `@always_inline("builtin")` support for a few more ops. This rounds out the core index dialect ops that are needed for Int. MODULAR_ORIG_COMMIT_REV_ID: f7e6dcd4f80dff2206a45440650fb5889c2f6d3d --- stdlib/src/builtin/int.mojo | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/stdlib/src/builtin/int.mojo b/stdlib/src/builtin/int.mojo index b69330dedb..8da7f01d26 100644 --- a/stdlib/src/builtin/int.mojo +++ b/stdlib/src/builtin/int.mojo @@ -562,7 +562,7 @@ struct Int( pred = __mlir_attr.`#index` ](self.value, rhs.value) - @always_inline("nodebug") + @always_inline("builtin") fn __pos__(self) -> Int: """Return +self. @@ -580,7 +580,7 @@ struct Int( """ return self * -1 - @always_inline("nodebug") + @always_inline("builtin") fn __invert__(self) -> Int: """Return ~self. @@ -754,7 +754,7 @@ struct Int( return 0 return __mlir_op.`index.shrs`(self.value, rhs.value) - @always_inline("nodebug") + @always_inline("builtin") fn __and__(self, rhs: Int) -> Int: """Return `self & rhs`. @@ -766,7 +766,7 @@ struct Int( """ return __mlir_op.`index.and`(self.value, rhs.value) - @always_inline("nodebug") + @always_inline("builtin") fn __xor__(self, rhs: Int) -> Int: """Return `self ^ rhs`. @@ -778,7 +778,7 @@ struct Int( """ return __mlir_op.`index.xor`(self.value, rhs.value) - @always_inline("nodebug") + @always_inline("builtin") fn __or__(self, rhs: Int) -> Int: """Return `self | rhs`. From 20a2fd27afa440da491986367df55d74012f2b3e Mon Sep 17 00:00:00 2001 From: abdul dakkak Date: Thu, 20 Feb 2025 18:27:37 -0800 Subject: [PATCH 425/509] [Stdlib] Add MIN/MAX values for Bool The min/max values are False/True respectively. MODULAR_ORIG_COMMIT_REV_ID: 157e075b608436e9b6b20195362dcbab4d4b2b4b --- stdlib/src/builtin/bool.mojo | 6 ++++++ stdlib/test/builtin/test_bool.mojo | 6 ++++++ 2 files changed, 12 insertions(+) diff --git a/stdlib/src/builtin/bool.mojo b/stdlib/src/builtin/bool.mojo index 59800330b6..e9169b7863 100644 --- a/stdlib/src/builtin/bool.mojo +++ b/stdlib/src/builtin/bool.mojo @@ -113,6 +113,12 @@ struct Bool( ): """The primitive Bool scalar value used in Mojo.""" + alias MIN = Bool(False) + """The minimum value of a Bool.""" + + alias MAX = Bool(True) + """The maximum value of a Bool.""" + var value: __mlir_type.i1 """The underlying storage of the boolean value.""" diff --git a/stdlib/test/builtin/test_bool.mojo b/stdlib/test/builtin/test_bool.mojo index e7378e0e67..40879e077e 100644 --- a/stdlib/test/builtin/test_bool.mojo +++ b/stdlib/test/builtin/test_bool.mojo @@ -19,6 +19,11 @@ def test_default(): assert_equal(Bool(), False) +def test_min_max(): + assert_equal(Bool.MIN, False) + assert_equal(Bool.MAX, True) + + def test_bool_cast_to_int(): assert_equal(False.__int__(), 0) assert_equal(True.__int__(), 1) @@ -156,6 +161,7 @@ def test_float_conversion(): def main(): test_default() + test_min_max() test_bool_cast_to_int() test_bool_none() test_convert_from_implicitly_boolable() From 654a4f709a995868099a469061314b0271226d37 Mon Sep 17 00:00:00 2001 From: modularbot Date: Fri, 21 Feb 2025 07:09:07 +0000 Subject: [PATCH 426/509] Update lockfiles to point to latest nightly version: 25.2.0.dev2025022105 --- examples/life/magic.lock | 405 +++++++++++++------------- examples/magic.lock | 407 +++++++++++++------------- examples/operators/magic.lock | 523 ++++++++++++++-------------------- examples/testing/magic.lock | 523 ++++++++++++++-------------------- magic.lock | 407 +++++++++++++------------- 5 files changed, 1017 insertions(+), 1248 deletions(-) diff --git a/examples/life/magic.lock b/examples/life/magic.lock index 57dbd69583..c2d9f706cf 100644 --- a/examples/life/magic.lock +++ b/examples/life/magic.lock @@ -40,15 +40,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lame-3.100-h166bdaf_1003.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libasprintf-0.23.1-h8e693c7_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libasprintf-devel-0.23.1-h8e693c7_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libavif16-1.1.1-h1909e37_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-28_h59b9bed_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-31_h59b9bed_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libcap-2.71-h39aace5_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-28_he106b2a_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-31_he106b2a_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libdb-6.2.32-h9c3ff4c_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.23-h4ddbbb0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libdrm-2.4.124-hb9d3cd8_0.conda @@ -72,12 +72,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libgpg-error-1.51-hbd13f7d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h4ce23a2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-28_h7ac8fdf_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-31_h7ac8fdf_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libmad-0.15.1b-h0b41bf4_1001.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libogg-1.3.5-h4ab18f5_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.28-pthreads_h94d23a6_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.29-pthreads_h94d23a6_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopus-1.3.1-h7f98852_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libpciaccess-0.18-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.47-h943b412_0.conda @@ -103,11 +103,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.6-h8d12d68_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.10.0-h5888daf_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022005-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022005-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022005-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022005-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022005-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022105-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022105-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022105-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/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda @@ -195,15 +195,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/keyutils-1.6.1-h4e544f5_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/krb5-1.21.3-h50a48e9_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lame-3.100-h4e544f5_1003.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.0.0-h4de3ea5_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h18dbdb1_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libasprintf-0.23.1-h5e0f5ae_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libasprintf-devel-0.23.1-h5e0f5ae_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libavif16-1.1.1-h3b0c220_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-30_h1a9f1db_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-31_h1a9f1db_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcap-2.71-h51d75a7_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-30_hab92f65_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-31_hab92f65_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libdb-6.2.32-h01db608_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libdeflate-1.23-h5e3c512_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libdrm-2.4.124-h86ecc28_0.conda @@ -227,7 +227,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgpg-error-1.51-h05609ea_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libiconv-1.18-hc99b53d_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libjpeg-turbo-3.0.0-h31becfc_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-30_h411afd4_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-31_h411afd4_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.4-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libmad-0.15.1b-hb4cce97_1001.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda @@ -258,11 +258,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.6-h2e0c361_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.10.0-h5ad3122_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022005-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022005-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022005-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022005-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022005-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022105-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022105-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022105-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/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-ha32ae93_3.conda @@ -349,8 +349,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libasprintf-0.23.1-h493aca8_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libasprintf-devel-0.23.1-h493aca8_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libavif16-1.1.1-h45b7238_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-30_h10e41b3_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-30_hb3479ef_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-31_h10e41b3_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-31_hb3479ef_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.23-hec38601_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda @@ -366,7 +366,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libintl-0.23.1-h493aca8_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libintl-devel-0.23.1-h493aca8_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.0.0-hb547adb_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-30_hc9a63f6_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-31_hc9a63f6_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.4-h39f12f2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libmad-0.15.1b-h1a8c8d9_1001.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libogg-1.3.5-h99b78c6_0.conda @@ -384,11 +384,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.5.0-h2471fea_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022005-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022005-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022005-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022005-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022005-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022105-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022105-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022105-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/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda @@ -1372,9 +1372,9 @@ packages: license_family: LGPL size: 528805 timestamp: 1664996399305 -- conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_2.conda - sha256: 7c91cea91b13f4314d125d1bedb9d03a29ebbd5080ccdea70260363424646dbe - md5: 048b02e3962f066da18efe3a21b77672 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_3.conda + sha256: f754b85b9c4528e09749fea56466e3a4f38439dd70b34f0f9bebff9b31055cf1 + md5: 5d5839b8df5d356d701bdd3450af6955 depends: - __glibc >=2.17,<3.0.a0 constrains: @@ -1382,20 +1382,18 @@ packages: arch: x86_64 platform: linux license: GPL-3.0-only - license_family: GPL - size: 669211 - timestamp: 1729655358674 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_2.conda - sha256: 80ec7e8f006196808fac5bd4b3773a652847f97bbf08044cd87731424ac64f8b - md5: fcbde5ea19d55468953bf588770c0501 + size: 671098 + timestamp: 1740102063271 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_3.conda + sha256: af2c66237bc0c2bfc0f34cb5e15687d8959e7c1cfab4c6d1840b8ba585dc5a83 + md5: f68c5f63e086066266e3033cc3946f27 constrains: - binutils_impl_linux-aarch64 2.43 arch: aarch64 platform: linux license: GPL-3.0-only - license_family: GPL - size: 698245 - timestamp: 1729655345825 + size: 699220 + timestamp: 1740102274585 - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 sha256: cb55f36dcd898203927133280ae1dc643368af041a48bcf7c026acb7c47b0c12 md5: 76bbff344f0134279f225174e9064c8f @@ -1591,61 +1589,60 @@ packages: license_family: BSD size: 96781 timestamp: 1730268761553 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-28_h59b9bed_openblas.conda - build_number: 28 - sha256: 93fbcf2800b859b7ca5add3ab5d3aa11c6a6ff4b942a1cea4bf644f78488edb8 - md5: 73e2a99fdeb8531d50168987378fda8a +- conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-31_h59b9bed_openblas.conda + build_number: 31 + sha256: 9839fc4ac0cbb0aa3b9eea520adfb57311838959222654804e58f6f2d1771db5 + md5: 728dbebd0f7a20337218beacffd37916 depends: - - libopenblas >=0.3.28,<0.3.29.0a0 - - libopenblas >=0.3.28,<1.0a0 + - libopenblas >=0.3.29,<0.3.30.0a0 + - libopenblas >=0.3.29,<1.0a0 constrains: - - libcblas =3.9.0=28*_openblas - - blas =2.128=openblas - - liblapack =3.9.0=28*_openblas - - liblapacke =3.9.0=28*_openblas + - liblapacke =3.9.0=31*_openblas + - liblapack =3.9.0=31*_openblas + - blas =2.131=openblas - mkl <2025 + - libcblas =3.9.0=31*_openblas arch: x86_64 platform: linux license: BSD-3-Clause - license_family: BSD - size: 16621 - timestamp: 1738114033763 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-30_h1a9f1db_openblas.conda - build_number: 30 - sha256: 50fc3d327a95a604120715e14447b497bf52b7b13de556f068610c6f34f95da2 - md5: f62b3030cc0c37b06cd6b7e771d99be9 + size: 16859 + timestamp: 1740087969120 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-31_h1a9f1db_openblas.conda + build_number: 31 + sha256: 67c9c81dd0444ecc712124034d9f74186ca82fd770b3df46b1a68564461c6a1a + md5: 48bd5bf15ccf3e409840be9caafc0ad5 depends: - libopenblas >=0.3.29,<0.3.30.0a0 - libopenblas >=0.3.29,<1.0a0 constrains: - - libcblas =3.9.0=30*_openblas - - blas =2.130=openblas - - liblapacke =3.9.0=30*_openblas - - liblapack =3.9.0=30*_openblas + - liblapack =3.9.0=31*_openblas + - blas =2.131=openblas + - libcblas =3.9.0=31*_openblas + - mkl <2025 + - liblapacke =3.9.0=31*_openblas arch: aarch64 platform: linux license: BSD-3-Clause - license_family: BSD - size: 16841 - timestamp: 1739836305440 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-30_h10e41b3_openblas.conda - build_number: 30 - sha256: efdb82267966dff85123334ed0f7f4773ab4b093187c5495f2f92f892e2542d4 - md5: 1317dcfcde16781b5d446bfb4c81b848 + size: 16915 + timestamp: 1740087911042 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-31_h10e41b3_openblas.conda + build_number: 31 + sha256: 369586e7688b59b4f92c709b99d847d66d4d095425db327dd32ee5e6ab74697f + md5: 39b053da5e7035c6592102280aa7612a depends: - libopenblas >=0.3.29,<0.3.30.0a0 - libopenblas >=0.3.29,<1.0a0 constrains: - - libcblas =3.9.0=30*_openblas - - liblapack =3.9.0=30*_openblas - - blas =2.130=openblas - - liblapacke =3.9.0=30*_openblas + - liblapacke =3.9.0=31*_openblas + - libcblas =3.9.0=31*_openblas + - blas =2.131=openblas + - mkl <2025 + - liblapack =3.9.0=31*_openblas arch: arm64 platform: osx license: BSD-3-Clause - license_family: BSD - size: 17013 - timestamp: 1739836593880 + size: 17123 + timestamp: 1740088119350 - conda: https://conda.anaconda.org/conda-forge/linux-64/libcap-2.71-h39aace5_0.conda sha256: 2bbefac94f4ab8ff7c64dc843238b6c8edcc9ff1f2b5a0a48407a904dc7ccfb2 md5: dd19e4e3043f6948bd7454b946ee0983 @@ -1671,55 +1668,51 @@ packages: license_family: BSD size: 106877 timestamp: 1729940936697 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-28_he106b2a_openblas.conda - build_number: 28 - sha256: de293e117db53e5d78b579136509c35a5e4ad11529c05f9af83cf89be4d30de1 - md5: 4e20a1c00b4e8a984aac0f6cce59e3ac +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-31_he106b2a_openblas.conda + build_number: 31 + sha256: ede8545011f5b208b151fe3e883eb4e31d495ab925ab7b9ce394edca846e0c0d + md5: abb32c727da370c481a1c206f5159ce9 depends: - - libblas 3.9.0 28_h59b9bed_openblas + - libblas 3.9.0 31_h59b9bed_openblas constrains: - - blas =2.128=openblas - - liblapack =3.9.0=28*_openblas - - liblapacke =3.9.0=28*_openblas - - mkl <2025 + - liblapacke =3.9.0=31*_openblas + - liblapack =3.9.0=31*_openblas + - blas =2.131=openblas arch: x86_64 platform: linux license: BSD-3-Clause - license_family: BSD - size: 16539 - timestamp: 1738114043618 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-30_hab92f65_openblas.conda - build_number: 30 - sha256: 878bf1d1b75c9db13cd16486d880228c163b0fe36911f8bcece79a4fd2583b44 - md5: b3b76e1a06d0f89ca5c24935b0541510 - depends: - - libblas 3.9.0 30_h1a9f1db_openblas + size: 16796 + timestamp: 1740087984429 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-31_hab92f65_openblas.conda + build_number: 31 + sha256: f0457a1d2982f0a28bfbadaa02621677c324e88f7c8198c24fb3e3214c468dba + md5: 6b81dbae56a519f1ec2f25e0ee2f4334 + depends: + - libblas 3.9.0 31_h1a9f1db_openblas constrains: - - blas =2.130=openblas - - liblapacke =3.9.0=30*_openblas - - liblapack =3.9.0=30*_openblas + - liblapack =3.9.0=31*_openblas + - blas =2.131=openblas + - liblapacke =3.9.0=31*_openblas arch: aarch64 platform: linux license: BSD-3-Clause - license_family: BSD - size: 16777 - timestamp: 1739836311343 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-30_hb3479ef_openblas.conda - build_number: 30 - sha256: 6d5935d1df2558d84367f183050e7291ec18cdf44d55093ce5a5ca6228d7ff1b - md5: 7b50ccb7f672a8a793c64f7bfce84472 - depends: - - libblas 3.9.0 30_h10e41b3_openblas + size: 16824 + timestamp: 1740087917500 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-31_hb3479ef_openblas.conda + build_number: 31 + sha256: f237486cc9118d09d0f3ff8820280de34365f98ee7b7dc5ab923b04c7cbf25a5 + md5: 7353c2bf0e90834cb70545671996d871 + depends: + - libblas 3.9.0 31_h10e41b3_openblas constrains: - - liblapack =3.9.0=30*_openblas - - blas =2.130=openblas - - liblapacke =3.9.0=30*_openblas + - liblapacke =3.9.0=31*_openblas + - blas =2.131=openblas + - liblapack =3.9.0=31*_openblas arch: arm64 platform: osx license: BSD-3-Clause - license_family: BSD - size: 16922 - timestamp: 1739836601500 + size: 17032 + timestamp: 1740088127097 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda sha256: 776092346da87a2a23502e14d91eb0c32699c4a1522b7331537bd1c3751dcff5 md5: 5b3e1610ff8bd5443476b91d618f5b77 @@ -2463,55 +2456,51 @@ packages: license: IJG AND BSD-3-Clause AND Zlib size: 547541 timestamp: 1694475104253 -- conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-28_h7ac8fdf_openblas.conda - build_number: 28 - sha256: 9530e6840690b78360946390a1d29624734a6b624f02c26631fb451592cbb8ef - md5: 069f40bfbf1dc55c83ddb07fc6a6ef8d +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-31_h7ac8fdf_openblas.conda + build_number: 31 + sha256: f583661921456e798aba10972a8abbd9d33571c655c1f66eff450edc9cbefcf3 + md5: 452b98eafe050ecff932f0ec832dd03f depends: - - libblas 3.9.0 28_h59b9bed_openblas + - libblas 3.9.0 31_h59b9bed_openblas constrains: - - libcblas =3.9.0=28*_openblas - - blas =2.128=openblas - - liblapacke =3.9.0=28*_openblas - - mkl <2025 + - libcblas =3.9.0=31*_openblas + - liblapacke =3.9.0=31*_openblas + - blas =2.131=openblas arch: x86_64 platform: linux license: BSD-3-Clause - license_family: BSD - size: 16553 - timestamp: 1738114053556 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-30_h411afd4_openblas.conda - build_number: 30 - sha256: 05720b9d62260048fa64d2ca1ee0ba0eef3496eb9b337cd277dbdbffcd976fe0 - md5: 3d5dfd69d16af6a64483a9eb17610923 - depends: - - libblas 3.9.0 30_h1a9f1db_openblas + size: 16790 + timestamp: 1740087997375 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-31_h411afd4_openblas.conda + build_number: 31 + sha256: 27613828ff6fb258b2e58802617df549f00089660ea8ab6c55c68f042c570162 + md5: 41dbff5eb805a75c120a7b7a1c744dc2 + depends: + - libblas 3.9.0 31_h1a9f1db_openblas constrains: - - libcblas =3.9.0=30*_openblas - - blas =2.130=openblas - - liblapacke =3.9.0=30*_openblas + - blas =2.131=openblas + - libcblas =3.9.0=31*_openblas + - liblapacke =3.9.0=31*_openblas arch: aarch64 platform: linux license: BSD-3-Clause - license_family: BSD - size: 16796 - timestamp: 1739836317218 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-30_hc9a63f6_openblas.conda - build_number: 30 - sha256: ad78d4fafde96659b429174fef4a0edf4c937876260c13c5f301d14779b3e36c - md5: af38e475d8538c65cb8ce0f1bfe2e573 - depends: - - libblas 3.9.0 30_h10e41b3_openblas + size: 16845 + timestamp: 1740087923843 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-31_hc9a63f6_openblas.conda + build_number: 31 + sha256: fe55b9aaf82c6c0192c3d1fcc9b8e884f97492dda9a8de5dae29334b3135fab5 + md5: ff57a55a2cbce171ef5707fb463caf19 + depends: + - libblas 3.9.0 31_h10e41b3_openblas constrains: - - libcblas =3.9.0=30*_openblas - - blas =2.130=openblas - - liblapacke =3.9.0=30*_openblas + - liblapacke =3.9.0=31*_openblas + - libcblas =3.9.0=31*_openblas + - blas =2.131=openblas arch: arm64 platform: osx license: BSD-3-Clause - license_family: BSD - size: 16939 - timestamp: 1739836608362 + size: 17033 + timestamp: 1740088134988 - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda sha256: cad52e10319ca4585bc37f0bc7cce99ec7c15dc9168e42ccb96b741b0a27db3f md5: 42d5b6a0f30d3c10cd88cb8584fda1cb @@ -2629,22 +2618,22 @@ packages: license_family: BSD size: 205451 timestamp: 1719301708541 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.28-pthreads_h94d23a6_1.conda - sha256: 99ba271d8a80a1af2723f2e124ffd91d850074c0389c067e6d96d72a2dbfeabe - md5: 62857b389e42b36b686331bec0922050 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.29-pthreads_h94d23a6_0.conda + sha256: cc5389ea254f111ef17a53df75e8e5209ef2ea6117e3f8aced88b5a8e51f11c4 + md5: 0a4d0252248ef9a0f88f2ba8b8a08e12 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=14 - libgfortran - libgfortran5 >=14.2.0 constrains: - - openblas >=0.3.28,<0.3.29.0a0 + - openblas >=0.3.29,<0.3.30.0a0 arch: x86_64 platform: linux license: BSD-3-Clause license_family: BSD - size: 5578513 - timestamp: 1730772671118 + size: 5919288 + timestamp: 1739825731827 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.29-pthreads_h9d3fd7e_0.conda sha256: 3a2ccf4c9098cd18a636e9b7fff947fdeb4962bcfb75c9d6fd80b8c50caf6a3c md5: a99e2bfcb1ad6362544c71281eb617e9 @@ -3496,48 +3485,48 @@ packages: license_family: BSD size: 184953 timestamp: 1733740984533 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022005-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022105-release.conda noarch: python - sha256: 73a728cc599d38eb95ae3d924bfcce33b9572728a42a065152d6aa5c9fc4825a - md5: dcea265b305fe4b5a751e23531e55fc6 + sha256: 732a14d313918fa64ccfb5680edc7017095a1f68925102c580ef9d57b0096480 + md5: d75813fec3d9345db2bdf8b21226b54a depends: - - max-core ==25.2.0.dev2025022005 release - - max-python ==25.2.0.dev2025022005 release - - mojo-jupyter ==25.2.0.dev2025022005 release - - mblack ==25.2.0.dev2025022005 release + - max-core ==25.2.0.dev2025022105 release + - max-python ==25.2.0.dev2025022105 release + - mojo-jupyter ==25.2.0.dev2025022105 release + - mblack ==25.2.0.dev2025022105 release license: LicenseRef-Modular-Proprietary - size: 9911 - timestamp: 1740028585109 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022005-release.conda - sha256: 6d5a1dee924f2b90fee1da4fad534afce20cc5c10c8c2514215b882e6d9e3711 - md5: bab16e83b4190bf2743900ff977b23f3 + size: 9907 + timestamp: 1740115026277 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022105-release.conda + sha256: 21e95724d239c8769b45d03b80fccf10bcfd602539152e6f0242849b201bcd24 + md5: 54c8f6dde5dea407ed799d6c18e659b6 depends: - - mblack ==25.2.0.dev2025022005 release + - mblack ==25.2.0.dev2025022105 release license: LicenseRef-Modular-Proprietary - size: 243845116 - timestamp: 1740028633977 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022005-release.conda - sha256: 3651136079667dc3aabb624a5dd219f74212794e31488ed52453edb4eff8dda6 - md5: b2e5292f9128e4d3dd21b5efe9c62ec3 + size: 243982029 + timestamp: 1740115026277 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022105-release.conda + sha256: b06919e10b7ab17923ba13c90fa2c899fd414f9cc956b87655558908559839fc + md5: 7a1136495c9d286c8d300a147668bbd4 depends: - - mblack ==25.2.0.dev2025022005 release + - mblack ==25.2.0.dev2025022105 release license: LicenseRef-Modular-Proprietary - size: 246414229 - timestamp: 1740028585109 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022005-release.conda - sha256: 2b4284fa358ecea61058a847a7f4ee5922840ea8cb0e7b23289e8e9737d84693 - md5: 4f78943e45265a6e74e0bc7c63d63d8e + size: 246599121 + timestamp: 1740114929824 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022105-release.conda + sha256: ebe3a6728324923680a48c5d5a3fb1b20ab7ed6fd2adebaf78e0fc647f1f61b1 + md5: 41bfea6a454a7c7800c32b61c56bdba0 depends: - - mblack ==25.2.0.dev2025022005 release + - mblack ==25.2.0.dev2025022105 release license: LicenseRef-Modular-Proprietary - size: 212210721 - timestamp: 1740029626428 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022005-release.conda + size: 212292795 + timestamp: 1740116288307 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022105-release.conda noarch: python - sha256: 3b0c24834d3acbc000e1a10142a2a1ffd20459c7872dc4511d7366e847c46100 - md5: fa6af33b4f5899b97d6d1dc189085efe + sha256: a92c6ccda2193487bd493a76c63d97092cbf475eb1843febe459d7944c8fae8b + md5: 7c25b17e0461e19aa722475898f6aa8f depends: - - max-core ==25.2.0.dev2025022005 release + - max-core ==25.2.0.dev2025022105 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -3575,14 +3564,14 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 120696393 - timestamp: 1740028633977 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022005-release.conda + size: 120766503 + timestamp: 1740115026277 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022105-release.conda noarch: python - sha256: f471037607a1ecd2f099d9f38d8bbe9bfb4b59973f5e21ecd8ba1df1dd753e18 - md5: 95bdf6cd858922b8827313101608306a + sha256: c06a253400b9de225606b3cbd61e1d2e6da42f53e1890a9cb61157156bf98f66 + md5: 90f39327488343967a427d5a39e13ac4 depends: - - max-core ==25.2.0.dev2025022005 release + - max-core ==25.2.0.dev2025022105 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -3620,14 +3609,14 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 123242379 - timestamp: 1740028585109 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022005-release.conda + size: 123342667 + timestamp: 1740114929824 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022105-release.conda noarch: python - sha256: 30d7b5434f9137fe5b234c2667999e7e2be763d01c0e7481892eafe34948775b - md5: 94e16d2fde39ce744582d233defc5bf0 + sha256: 379984702419a2ca81444be4309766ebd9ac67da5d0744e6da9e70a6aa16921f + md5: b6bcc43da1e896e88d379dfae0021dd4 depends: - - max-core ==25.2.0.dev2025022005 release + - max-core ==25.2.0.dev2025022105 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -3665,12 +3654,12 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 110077418 - timestamp: 1740029626428 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022005-release.conda + size: 110165681 + timestamp: 1740116288307 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022105-release.conda noarch: python - sha256: 9379e4793be7c455a88485d715e86e86166e81ac1cb616d889abdc1730c80d75 - md5: 088702bd2b036e232b196fe8de9718cb + sha256: 8e8f49bd832591239f7913882326bdf4e49b62dad55630cd973e59a273d530dd + md5: cbe46561f716976d2a8a5222b0dfd975 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -3681,20 +3670,20 @@ packages: - typing_extensions >=v4.12.2 - python license: MIT - size: 130861 - timestamp: 1740028585109 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022005-release.conda + size: 130843 + timestamp: 1740115026277 +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022105-release.conda noarch: python - sha256: f6399ee0d27607ad82e7c947b8973fd19e412ca3dab78dc94c42b9039dcb9056 - md5: fc308a44c2304836e4b1d59928455a14 + sha256: 62205186302b4460ee7f8c6e466da82d69b2a06c71958d47cbbe548cdcd3fde4 + md5: 10aa481c50998711d470cac4990d6ed5 depends: - - max-core ==25.2.0.dev2025022005 release + - max-core ==25.2.0.dev2025022105 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22990 - timestamp: 1740028585109 + size: 22980 + timestamp: 1740115026277 - conda: https://conda.anaconda.org/conda-forge/linux-64/mpg123-1.32.9-hc50e24c_0.conda sha256: 39c4700fb3fbe403a77d8cc27352fa72ba744db487559d5d44bf8411bb4ea200 md5: c7f302fd11eeb0987a6a5e1f3aed6a21 diff --git a/examples/magic.lock b/examples/magic.lock index 4a1ec4e720..586ef5ed58 100644 --- a/examples/magic.lock +++ b/examples/magic.lock @@ -17,10 +17,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-28_h59b9bed_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-28_he106b2a_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-31_h59b9bed_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-31_he106b2a_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_0.conda @@ -29,10 +29,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hd5240d6_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h77fa898_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-28_h7ac8fdf_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-31_h7ac8fdf_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.28-pthreads_h94d23a6_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.29-pthreads_h94d23a6_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsentencepiece-0.2.0-h8e10757_10.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda @@ -42,11 +42,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022005-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022005-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022005-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022005-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022005-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022105-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022105-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022105-release.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-h2d0b736_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py311h64a7726_0.conda @@ -82,10 +82,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/keyutils-1.6.1-h4e544f5_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/krb5-1.21.3-h50a48e9_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h18dbdb1_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-30_h1a9f1db_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-30_hab92f65_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-31_h1a9f1db_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-31_hab92f65_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20250104-pl5321h976ea20_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.6.4-h5ad3122_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.4.6-he21f813_0.conda @@ -94,7 +94,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-30_h411afd4_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-31_h411afd4_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.4-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.29-pthreads_h9d3fd7e_0.conda @@ -107,11 +107,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022005-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022005-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022005-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022005-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022005-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022105-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022105-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022105-release.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-ha32ae93_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py311h69ead2a_0.conda @@ -146,15 +146,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_h07bc746_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-30_h10e41b3_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-30_hb3479ef_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-31_h10e41b3_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-31_hb3479ef_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.4-h286801f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-30_hc9a63f6_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-31_hc9a63f6_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.4-h39f12f2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.29-openmp_hf332438_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.3-h3bd63a1_1.conda @@ -163,11 +163,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.1-h3f77e49_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022005-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022005-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022005-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022005-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022005-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022105-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022105-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022105-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py311h7125741_0.conda @@ -411,9 +411,9 @@ packages: license_family: MIT size: 1155530 timestamp: 1719463474401 -- conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_2.conda - sha256: 7c91cea91b13f4314d125d1bedb9d03a29ebbd5080ccdea70260363424646dbe - md5: 048b02e3962f066da18efe3a21b77672 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_3.conda + sha256: f754b85b9c4528e09749fea56466e3a4f38439dd70b34f0f9bebff9b31055cf1 + md5: 5d5839b8df5d356d701bdd3450af6955 depends: - __glibc >=2.17,<3.0.a0 constrains: @@ -421,20 +421,18 @@ packages: arch: x86_64 platform: linux license: GPL-3.0-only - license_family: GPL - size: 669211 - timestamp: 1729655358674 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_2.conda - sha256: 80ec7e8f006196808fac5bd4b3773a652847f97bbf08044cd87731424ac64f8b - md5: fcbde5ea19d55468953bf588770c0501 + size: 671098 + timestamp: 1740102063271 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_3.conda + sha256: af2c66237bc0c2bfc0f34cb5e15687d8959e7c1cfab4c6d1840b8ba585dc5a83 + md5: f68c5f63e086066266e3033cc3946f27 constrains: - binutils_impl_linux-aarch64 2.43 arch: aarch64 platform: linux license: GPL-3.0-only - license_family: GPL - size: 698245 - timestamp: 1729655345825 + size: 699220 + timestamp: 1740102274585 - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda sha256: 143a586aa67d50622ef703de57b9d43f44945836d6568e0e7aa174bd8c45e0d4 md5: 488f260ccda0afaf08acb286db439c2f @@ -481,110 +479,105 @@ packages: license_family: Apache size: 1178260 timestamp: 1736008642885 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-28_h59b9bed_openblas.conda - build_number: 28 - sha256: 93fbcf2800b859b7ca5add3ab5d3aa11c6a6ff4b942a1cea4bf644f78488edb8 - md5: 73e2a99fdeb8531d50168987378fda8a +- conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-31_h59b9bed_openblas.conda + build_number: 31 + sha256: 9839fc4ac0cbb0aa3b9eea520adfb57311838959222654804e58f6f2d1771db5 + md5: 728dbebd0f7a20337218beacffd37916 depends: - - libopenblas >=0.3.28,<0.3.29.0a0 - - libopenblas >=0.3.28,<1.0a0 + - libopenblas >=0.3.29,<0.3.30.0a0 + - libopenblas >=0.3.29,<1.0a0 constrains: - - libcblas =3.9.0=28*_openblas - - blas =2.128=openblas - - liblapack =3.9.0=28*_openblas - - liblapacke =3.9.0=28*_openblas + - liblapacke =3.9.0=31*_openblas + - liblapack =3.9.0=31*_openblas + - blas =2.131=openblas - mkl <2025 + - libcblas =3.9.0=31*_openblas arch: x86_64 platform: linux license: BSD-3-Clause - license_family: BSD - size: 16621 - timestamp: 1738114033763 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-30_h1a9f1db_openblas.conda - build_number: 30 - sha256: 50fc3d327a95a604120715e14447b497bf52b7b13de556f068610c6f34f95da2 - md5: f62b3030cc0c37b06cd6b7e771d99be9 + size: 16859 + timestamp: 1740087969120 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-31_h1a9f1db_openblas.conda + build_number: 31 + sha256: 67c9c81dd0444ecc712124034d9f74186ca82fd770b3df46b1a68564461c6a1a + md5: 48bd5bf15ccf3e409840be9caafc0ad5 depends: - libopenblas >=0.3.29,<0.3.30.0a0 - libopenblas >=0.3.29,<1.0a0 constrains: - - libcblas =3.9.0=30*_openblas - - blas =2.130=openblas - - liblapacke =3.9.0=30*_openblas - - liblapack =3.9.0=30*_openblas + - liblapack =3.9.0=31*_openblas + - blas =2.131=openblas + - libcblas =3.9.0=31*_openblas + - mkl <2025 + - liblapacke =3.9.0=31*_openblas arch: aarch64 platform: linux license: BSD-3-Clause - license_family: BSD - size: 16841 - timestamp: 1739836305440 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-30_h10e41b3_openblas.conda - build_number: 30 - sha256: efdb82267966dff85123334ed0f7f4773ab4b093187c5495f2f92f892e2542d4 - md5: 1317dcfcde16781b5d446bfb4c81b848 + size: 16915 + timestamp: 1740087911042 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-31_h10e41b3_openblas.conda + build_number: 31 + sha256: 369586e7688b59b4f92c709b99d847d66d4d095425db327dd32ee5e6ab74697f + md5: 39b053da5e7035c6592102280aa7612a depends: - libopenblas >=0.3.29,<0.3.30.0a0 - libopenblas >=0.3.29,<1.0a0 constrains: - - libcblas =3.9.0=30*_openblas - - liblapack =3.9.0=30*_openblas - - blas =2.130=openblas - - liblapacke =3.9.0=30*_openblas + - liblapacke =3.9.0=31*_openblas + - libcblas =3.9.0=31*_openblas + - blas =2.131=openblas + - mkl <2025 + - liblapack =3.9.0=31*_openblas arch: arm64 platform: osx license: BSD-3-Clause - license_family: BSD - size: 17013 - timestamp: 1739836593880 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-28_he106b2a_openblas.conda - build_number: 28 - sha256: de293e117db53e5d78b579136509c35a5e4ad11529c05f9af83cf89be4d30de1 - md5: 4e20a1c00b4e8a984aac0f6cce59e3ac - depends: - - libblas 3.9.0 28_h59b9bed_openblas + size: 17123 + timestamp: 1740088119350 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-31_he106b2a_openblas.conda + build_number: 31 + sha256: ede8545011f5b208b151fe3e883eb4e31d495ab925ab7b9ce394edca846e0c0d + md5: abb32c727da370c481a1c206f5159ce9 + depends: + - libblas 3.9.0 31_h59b9bed_openblas constrains: - - blas =2.128=openblas - - liblapack =3.9.0=28*_openblas - - liblapacke =3.9.0=28*_openblas - - mkl <2025 + - liblapacke =3.9.0=31*_openblas + - liblapack =3.9.0=31*_openblas + - blas =2.131=openblas arch: x86_64 platform: linux license: BSD-3-Clause - license_family: BSD - size: 16539 - timestamp: 1738114043618 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-30_hab92f65_openblas.conda - build_number: 30 - sha256: 878bf1d1b75c9db13cd16486d880228c163b0fe36911f8bcece79a4fd2583b44 - md5: b3b76e1a06d0f89ca5c24935b0541510 - depends: - - libblas 3.9.0 30_h1a9f1db_openblas + size: 16796 + timestamp: 1740087984429 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-31_hab92f65_openblas.conda + build_number: 31 + sha256: f0457a1d2982f0a28bfbadaa02621677c324e88f7c8198c24fb3e3214c468dba + md5: 6b81dbae56a519f1ec2f25e0ee2f4334 + depends: + - libblas 3.9.0 31_h1a9f1db_openblas constrains: - - blas =2.130=openblas - - liblapacke =3.9.0=30*_openblas - - liblapack =3.9.0=30*_openblas + - liblapack =3.9.0=31*_openblas + - blas =2.131=openblas + - liblapacke =3.9.0=31*_openblas arch: aarch64 platform: linux license: BSD-3-Clause - license_family: BSD - size: 16777 - timestamp: 1739836311343 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-30_hb3479ef_openblas.conda - build_number: 30 - sha256: 6d5935d1df2558d84367f183050e7291ec18cdf44d55093ce5a5ca6228d7ff1b - md5: 7b50ccb7f672a8a793c64f7bfce84472 - depends: - - libblas 3.9.0 30_h10e41b3_openblas + size: 16824 + timestamp: 1740087917500 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-31_hb3479ef_openblas.conda + build_number: 31 + sha256: f237486cc9118d09d0f3ff8820280de34365f98ee7b7dc5ab923b04c7cbf25a5 + md5: 7353c2bf0e90834cb70545671996d871 + depends: + - libblas 3.9.0 31_h10e41b3_openblas constrains: - - liblapack =3.9.0=30*_openblas - - blas =2.130=openblas - - liblapacke =3.9.0=30*_openblas + - liblapacke =3.9.0=31*_openblas + - blas =2.131=openblas + - liblapack =3.9.0=31*_openblas arch: arm64 platform: osx license: BSD-3-Clause - license_family: BSD - size: 16922 - timestamp: 1739836601500 + size: 17032 + timestamp: 1740088127097 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda sha256: 776092346da87a2a23502e14d91eb0c32699c4a1522b7331537bd1c3751dcff5 md5: 5b3e1610ff8bd5443476b91d618f5b77 @@ -855,55 +848,51 @@ packages: license_family: GPL size: 463521 timestamp: 1729089357313 -- conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-28_h7ac8fdf_openblas.conda - build_number: 28 - sha256: 9530e6840690b78360946390a1d29624734a6b624f02c26631fb451592cbb8ef - md5: 069f40bfbf1dc55c83ddb07fc6a6ef8d +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-31_h7ac8fdf_openblas.conda + build_number: 31 + sha256: f583661921456e798aba10972a8abbd9d33571c655c1f66eff450edc9cbefcf3 + md5: 452b98eafe050ecff932f0ec832dd03f depends: - - libblas 3.9.0 28_h59b9bed_openblas + - libblas 3.9.0 31_h59b9bed_openblas constrains: - - libcblas =3.9.0=28*_openblas - - blas =2.128=openblas - - liblapacke =3.9.0=28*_openblas - - mkl <2025 + - libcblas =3.9.0=31*_openblas + - liblapacke =3.9.0=31*_openblas + - blas =2.131=openblas arch: x86_64 platform: linux license: BSD-3-Clause - license_family: BSD - size: 16553 - timestamp: 1738114053556 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-30_h411afd4_openblas.conda - build_number: 30 - sha256: 05720b9d62260048fa64d2ca1ee0ba0eef3496eb9b337cd277dbdbffcd976fe0 - md5: 3d5dfd69d16af6a64483a9eb17610923 - depends: - - libblas 3.9.0 30_h1a9f1db_openblas + size: 16790 + timestamp: 1740087997375 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-31_h411afd4_openblas.conda + build_number: 31 + sha256: 27613828ff6fb258b2e58802617df549f00089660ea8ab6c55c68f042c570162 + md5: 41dbff5eb805a75c120a7b7a1c744dc2 + depends: + - libblas 3.9.0 31_h1a9f1db_openblas constrains: - - libcblas =3.9.0=30*_openblas - - blas =2.130=openblas - - liblapacke =3.9.0=30*_openblas + - blas =2.131=openblas + - libcblas =3.9.0=31*_openblas + - liblapacke =3.9.0=31*_openblas arch: aarch64 platform: linux license: BSD-3-Clause - license_family: BSD - size: 16796 - timestamp: 1739836317218 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-30_hc9a63f6_openblas.conda - build_number: 30 - sha256: ad78d4fafde96659b429174fef4a0edf4c937876260c13c5f301d14779b3e36c - md5: af38e475d8538c65cb8ce0f1bfe2e573 - depends: - - libblas 3.9.0 30_h10e41b3_openblas + size: 16845 + timestamp: 1740087923843 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-31_hc9a63f6_openblas.conda + build_number: 31 + sha256: fe55b9aaf82c6c0192c3d1fcc9b8e884f97492dda9a8de5dae29334b3135fab5 + md5: ff57a55a2cbce171ef5707fb463caf19 + depends: + - libblas 3.9.0 31_h10e41b3_openblas constrains: - - libcblas =3.9.0=30*_openblas - - blas =2.130=openblas - - liblapacke =3.9.0=30*_openblas + - liblapacke =3.9.0=31*_openblas + - libcblas =3.9.0=31*_openblas + - blas =2.131=openblas arch: arm64 platform: osx license: BSD-3-Clause - license_family: BSD - size: 16939 - timestamp: 1739836608362 + size: 17033 + timestamp: 1740088134988 - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda sha256: cad52e10319ca4585bc37f0bc7cce99ec7c15dc9168e42ccb96b741b0a27db3f md5: 42d5b6a0f30d3c10cd88cb8584fda1cb @@ -957,22 +946,22 @@ packages: license_family: GPL size: 34501 timestamp: 1697358973269 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.28-pthreads_h94d23a6_1.conda - sha256: 99ba271d8a80a1af2723f2e124ffd91d850074c0389c067e6d96d72a2dbfeabe - md5: 62857b389e42b36b686331bec0922050 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.29-pthreads_h94d23a6_0.conda + sha256: cc5389ea254f111ef17a53df75e8e5209ef2ea6117e3f8aced88b5a8e51f11c4 + md5: 0a4d0252248ef9a0f88f2ba8b8a08e12 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=14 - libgfortran - libgfortran5 >=14.2.0 constrains: - - openblas >=0.3.28,<0.3.29.0a0 + - openblas >=0.3.29,<0.3.30.0a0 arch: x86_64 platform: linux license: BSD-3-Clause license_family: BSD - size: 5578513 - timestamp: 1730772671118 + size: 5919288 + timestamp: 1739825731827 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.29-pthreads_h9d3fd7e_0.conda sha256: 3a2ccf4c9098cd18a636e9b7fff947fdeb4962bcfb75c9d6fd80b8c50caf6a3c md5: a99e2bfcb1ad6362544c71281eb617e9 @@ -1299,48 +1288,48 @@ packages: license_family: APACHE size: 280830 timestamp: 1736986295869 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022005-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022105-release.conda noarch: python - sha256: 73a728cc599d38eb95ae3d924bfcce33b9572728a42a065152d6aa5c9fc4825a - md5: dcea265b305fe4b5a751e23531e55fc6 + sha256: 732a14d313918fa64ccfb5680edc7017095a1f68925102c580ef9d57b0096480 + md5: d75813fec3d9345db2bdf8b21226b54a depends: - - max-core ==25.2.0.dev2025022005 release - - max-python ==25.2.0.dev2025022005 release - - mojo-jupyter ==25.2.0.dev2025022005 release - - mblack ==25.2.0.dev2025022005 release + - max-core ==25.2.0.dev2025022105 release + - max-python ==25.2.0.dev2025022105 release + - mojo-jupyter ==25.2.0.dev2025022105 release + - mblack ==25.2.0.dev2025022105 release license: LicenseRef-Modular-Proprietary - size: 9911 - timestamp: 1740028585109 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022005-release.conda - sha256: 6d5a1dee924f2b90fee1da4fad534afce20cc5c10c8c2514215b882e6d9e3711 - md5: bab16e83b4190bf2743900ff977b23f3 + size: 9907 + timestamp: 1740115026277 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022105-release.conda + sha256: 21e95724d239c8769b45d03b80fccf10bcfd602539152e6f0242849b201bcd24 + md5: 54c8f6dde5dea407ed799d6c18e659b6 depends: - - mblack ==25.2.0.dev2025022005 release + - mblack ==25.2.0.dev2025022105 release license: LicenseRef-Modular-Proprietary - size: 243845116 - timestamp: 1740028633977 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022005-release.conda - sha256: 3651136079667dc3aabb624a5dd219f74212794e31488ed52453edb4eff8dda6 - md5: b2e5292f9128e4d3dd21b5efe9c62ec3 + size: 243982029 + timestamp: 1740115026277 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022105-release.conda + sha256: b06919e10b7ab17923ba13c90fa2c899fd414f9cc956b87655558908559839fc + md5: 7a1136495c9d286c8d300a147668bbd4 depends: - - mblack ==25.2.0.dev2025022005 release + - mblack ==25.2.0.dev2025022105 release license: LicenseRef-Modular-Proprietary - size: 246414229 - timestamp: 1740028585109 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022005-release.conda - sha256: 2b4284fa358ecea61058a847a7f4ee5922840ea8cb0e7b23289e8e9737d84693 - md5: 4f78943e45265a6e74e0bc7c63d63d8e + size: 246599121 + timestamp: 1740114929824 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022105-release.conda + sha256: ebe3a6728324923680a48c5d5a3fb1b20ab7ed6fd2adebaf78e0fc647f1f61b1 + md5: 41bfea6a454a7c7800c32b61c56bdba0 depends: - - mblack ==25.2.0.dev2025022005 release + - mblack ==25.2.0.dev2025022105 release license: LicenseRef-Modular-Proprietary - size: 212210721 - timestamp: 1740029626428 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022005-release.conda + size: 212292795 + timestamp: 1740116288307 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022105-release.conda noarch: python - sha256: 3b0c24834d3acbc000e1a10142a2a1ffd20459c7872dc4511d7366e847c46100 - md5: fa6af33b4f5899b97d6d1dc189085efe + sha256: a92c6ccda2193487bd493a76c63d97092cbf475eb1843febe459d7944c8fae8b + md5: 7c25b17e0461e19aa722475898f6aa8f depends: - - max-core ==25.2.0.dev2025022005 release + - max-core ==25.2.0.dev2025022105 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1378,14 +1367,14 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 120696393 - timestamp: 1740028633977 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022005-release.conda + size: 120766503 + timestamp: 1740115026277 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022105-release.conda noarch: python - sha256: f471037607a1ecd2f099d9f38d8bbe9bfb4b59973f5e21ecd8ba1df1dd753e18 - md5: 95bdf6cd858922b8827313101608306a + sha256: c06a253400b9de225606b3cbd61e1d2e6da42f53e1890a9cb61157156bf98f66 + md5: 90f39327488343967a427d5a39e13ac4 depends: - - max-core ==25.2.0.dev2025022005 release + - max-core ==25.2.0.dev2025022105 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1423,14 +1412,14 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 123242379 - timestamp: 1740028585109 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022005-release.conda + size: 123342667 + timestamp: 1740114929824 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022105-release.conda noarch: python - sha256: 30d7b5434f9137fe5b234c2667999e7e2be763d01c0e7481892eafe34948775b - md5: 94e16d2fde39ce744582d233defc5bf0 + sha256: 379984702419a2ca81444be4309766ebd9ac67da5d0744e6da9e70a6aa16921f + md5: b6bcc43da1e896e88d379dfae0021dd4 depends: - - max-core ==25.2.0.dev2025022005 release + - max-core ==25.2.0.dev2025022105 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1468,12 +1457,12 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 110077418 - timestamp: 1740029626428 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022005-release.conda + size: 110165681 + timestamp: 1740116288307 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022105-release.conda noarch: python - sha256: 9379e4793be7c455a88485d715e86e86166e81ac1cb616d889abdc1730c80d75 - md5: 088702bd2b036e232b196fe8de9718cb + sha256: 8e8f49bd832591239f7913882326bdf4e49b62dad55630cd973e59a273d530dd + md5: cbe46561f716976d2a8a5222b0dfd975 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -1484,20 +1473,20 @@ packages: - typing_extensions >=v4.12.2 - python license: MIT - size: 130861 - timestamp: 1740028585109 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022005-release.conda + size: 130843 + timestamp: 1740115026277 +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022105-release.conda noarch: python - sha256: f6399ee0d27607ad82e7c947b8973fd19e412ca3dab78dc94c42b9039dcb9056 - md5: fc308a44c2304836e4b1d59928455a14 + sha256: 62205186302b4460ee7f8c6e466da82d69b2a06c71958d47cbbe548cdcd3fde4 + md5: 10aa481c50998711d470cac4990d6ed5 depends: - - max-core ==25.2.0.dev2025022005 release + - max-core ==25.2.0.dev2025022105 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22990 - timestamp: 1740028585109 + size: 22980 + timestamp: 1740115026277 - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda sha256: 1895f47b7d68581a6facde5cb13ab8c2764c2e53a76bd746f8f98910dc4e08fe md5: 29097e7ea634a45cc5386b95cac6568f diff --git a/examples/operators/magic.lock b/examples/operators/magic.lock index b9b1c1bda9..5d3944411f 100644 --- a/examples/operators/magic.lock +++ b/examples/operators/magic.lock @@ -7,21 +7,20 @@ environments: packages: linux-64: - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_kmp_llvm.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2025.1.31-hbcca054_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-30_h59b9bed_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-30_he106b2a_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-31_h59b9bed_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-31_he106b2a_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_0.conda @@ -29,9 +28,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hd5240d6_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libhwloc-2.11.2-default_h0d58e46_1001.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h4ce23a2_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-30_h7ac8fdf_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h77fa898_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-31_h7ac8fdf_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.29-pthreads_h94d23a6_0.conda @@ -43,15 +41,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.6-h8d12d68_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/llvm-openmp-19.1.7-h024ca30_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022005-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022005-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022005-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022005-release.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-2024.2.2-ha957f24_16.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022005-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022105-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022105-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022105-release.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-h2d0b736_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda @@ -68,7 +63,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-python-0.2.0-py312hb6b8a2b_10.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-spm-0.2.0-h8e10757_10.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/tbb-2021.13.0-hceb3a55_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda @@ -88,10 +82,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/keyutils-1.6.1-h4e544f5_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/krb5-1.21.3-h50a48e9_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h18dbdb1_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-30_h1a9f1db_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-30_hab92f65_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-31_h1a9f1db_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-31_hab92f65_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20250104-pl5321h976ea20_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.6.4-h5ad3122_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.4.6-he21f813_0.conda @@ -100,7 +94,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-30_h411afd4_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-31_h411afd4_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.4-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.29-pthreads_h9d3fd7e_0.conda @@ -113,11 +107,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022005-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022005-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022005-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022005-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022005-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022105-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022105-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022105-release.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-ha32ae93_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda @@ -152,15 +146,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_h07bc746_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-30_h10e41b3_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-30_hb3479ef_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-31_h10e41b3_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-31_hb3479ef_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.4-h286801f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-30_hc9a63f6_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-31_hc9a63f6_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.4-h39f12f2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.29-openmp_hf332438_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.3-h3bd63a1_1.conda @@ -169,11 +163,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.1-h3f77e49_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022005-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022005-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022005-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022005-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022005-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022105-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022105-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022105-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda @@ -207,19 +201,21 @@ packages: license: None size: 2562 timestamp: 1578324546067 -- conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_kmp_llvm.tar.bz2 - build_number: 2 - sha256: 84a66275da3a66e3f3e70e9d8f10496d807d01a9e4ec16cd2274cc5e28c478fc - md5: 562b26ba2e19059551a811e72ab7f793 +- conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 + build_number: 16 + sha256: fbe2c5e56a653bebb982eda4876a9178aedfc2b545f25d0ce9c4c0b508253d22 + md5: 73aaf86a425cc6e73fcf236a5a46396d depends: - _libgcc_mutex 0.1 conda_forge - - llvm-openmp >=9.0.1 + - libgomp >=7.5.0 + constrains: + - openmp_impl 9999 arch: x86_64 platform: linux license: BSD-3-Clause license_family: BSD - size: 5744 - timestamp: 1650742457817 + size: 23621 + timestamp: 1650670423406 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2 build_number: 16 sha256: 3702bef2f0a4d38bd8288bbe54aace623602a1343c2cfbefd3fa188e015bebf0 @@ -311,19 +307,6 @@ packages: license_family: BSD size: 27011 timestamp: 1733218222191 -- conda: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda - sha256: 71e750d509f5fa3421087ba88ef9a7b9be11c53174af3aa4d06aff4c18b38e8e - md5: 8b189310083baabfb622af68fd9d3ae3 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc-ng >=12 - - libstdcxx-ng >=12 - arch: x86_64 - platform: linux - license: MIT - license_family: MIT - size: 12129203 - timestamp: 1720853576813 - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda sha256: 598951ebdb23e25e4cec4bbff0ae369cec65ead80b50bc08b441d8e54de5cf03 md5: f4b39bf00c69f56ac01e020ebfac066c @@ -428,9 +411,9 @@ packages: license_family: MIT size: 1155530 timestamp: 1719463474401 -- conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_2.conda - sha256: 7c91cea91b13f4314d125d1bedb9d03a29ebbd5080ccdea70260363424646dbe - md5: 048b02e3962f066da18efe3a21b77672 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_3.conda + sha256: f754b85b9c4528e09749fea56466e3a4f38439dd70b34f0f9bebff9b31055cf1 + md5: 5d5839b8df5d356d701bdd3450af6955 depends: - __glibc >=2.17,<3.0.a0 constrains: @@ -438,20 +421,18 @@ packages: arch: x86_64 platform: linux license: GPL-3.0-only - license_family: GPL - size: 669211 - timestamp: 1729655358674 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_2.conda - sha256: 80ec7e8f006196808fac5bd4b3773a652847f97bbf08044cd87731424ac64f8b - md5: fcbde5ea19d55468953bf588770c0501 + size: 671098 + timestamp: 1740102063271 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_3.conda + sha256: af2c66237bc0c2bfc0f34cb5e15687d8959e7c1cfab4c6d1840b8ba585dc5a83 + md5: f68c5f63e086066266e3033cc3946f27 constrains: - binutils_impl_linux-aarch64 2.43 arch: aarch64 platform: linux license: GPL-3.0-only - license_family: GPL - size: 698245 - timestamp: 1729655345825 + size: 699220 + timestamp: 1740102274585 - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda sha256: 143a586aa67d50622ef703de57b9d43f44945836d6568e0e7aa174bd8c45e0d4 md5: 488f260ccda0afaf08acb286db439c2f @@ -498,110 +479,105 @@ packages: license_family: Apache size: 1178260 timestamp: 1736008642885 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-30_h59b9bed_openblas.conda - build_number: 30 - sha256: 46b831c6adac121494a9557a964fcb1e3b31bd59e5bedcd1d9f8787e94498bf6 - md5: 0ea863eeebb367d82716fc8f83d11eb5 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-31_h59b9bed_openblas.conda + build_number: 31 + sha256: 9839fc4ac0cbb0aa3b9eea520adfb57311838959222654804e58f6f2d1771db5 + md5: 728dbebd0f7a20337218beacffd37916 depends: - libopenblas >=0.3.29,<0.3.30.0a0 - libopenblas >=0.3.29,<1.0a0 - - mkl >=2024.2.2,<2025.0a0 constrains: - - libcblas =3.9.0=30*_openblas - - liblapack =3.9.0=30*_openblas - - liblapacke =3.9.0=30*_openblas - - blas =2.130=openblas + - liblapacke =3.9.0=31*_openblas + - liblapack =3.9.0=31*_openblas + - blas =2.131=openblas + - mkl <2025 + - libcblas =3.9.0=31*_openblas arch: x86_64 platform: linux license: BSD-3-Clause - license_family: BSD - size: 16932 - timestamp: 1739836222334 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-30_h1a9f1db_openblas.conda - build_number: 30 - sha256: 50fc3d327a95a604120715e14447b497bf52b7b13de556f068610c6f34f95da2 - md5: f62b3030cc0c37b06cd6b7e771d99be9 + size: 16859 + timestamp: 1740087969120 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-31_h1a9f1db_openblas.conda + build_number: 31 + sha256: 67c9c81dd0444ecc712124034d9f74186ca82fd770b3df46b1a68564461c6a1a + md5: 48bd5bf15ccf3e409840be9caafc0ad5 depends: - libopenblas >=0.3.29,<0.3.30.0a0 - libopenblas >=0.3.29,<1.0a0 constrains: - - libcblas =3.9.0=30*_openblas - - blas =2.130=openblas - - liblapacke =3.9.0=30*_openblas - - liblapack =3.9.0=30*_openblas + - liblapack =3.9.0=31*_openblas + - blas =2.131=openblas + - libcblas =3.9.0=31*_openblas + - mkl <2025 + - liblapacke =3.9.0=31*_openblas arch: aarch64 platform: linux license: BSD-3-Clause - license_family: BSD - size: 16841 - timestamp: 1739836305440 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-30_h10e41b3_openblas.conda - build_number: 30 - sha256: efdb82267966dff85123334ed0f7f4773ab4b093187c5495f2f92f892e2542d4 - md5: 1317dcfcde16781b5d446bfb4c81b848 + size: 16915 + timestamp: 1740087911042 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-31_h10e41b3_openblas.conda + build_number: 31 + sha256: 369586e7688b59b4f92c709b99d847d66d4d095425db327dd32ee5e6ab74697f + md5: 39b053da5e7035c6592102280aa7612a depends: - libopenblas >=0.3.29,<0.3.30.0a0 - libopenblas >=0.3.29,<1.0a0 constrains: - - libcblas =3.9.0=30*_openblas - - liblapack =3.9.0=30*_openblas - - blas =2.130=openblas - - liblapacke =3.9.0=30*_openblas + - liblapacke =3.9.0=31*_openblas + - libcblas =3.9.0=31*_openblas + - blas =2.131=openblas + - mkl <2025 + - liblapack =3.9.0=31*_openblas arch: arm64 platform: osx license: BSD-3-Clause - license_family: BSD - size: 17013 - timestamp: 1739836593880 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-30_he106b2a_openblas.conda - build_number: 30 - sha256: 3db0177e5650fbaad94f026796c5c9762268c5f22d65dda1b3c9b8c50379254c - md5: d57f230608417264fb1daaddc5f05cca - depends: - - libblas 3.9.0 30_h59b9bed_openblas - - mkl >=2024.2.2,<2025.0a0 + size: 17123 + timestamp: 1740088119350 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-31_he106b2a_openblas.conda + build_number: 31 + sha256: ede8545011f5b208b151fe3e883eb4e31d495ab925ab7b9ce394edca846e0c0d + md5: abb32c727da370c481a1c206f5159ce9 + depends: + - libblas 3.9.0 31_h59b9bed_openblas constrains: - - liblapack =3.9.0=30*_openblas - - liblapacke =3.9.0=30*_openblas - - blas =2.130=openblas + - liblapacke =3.9.0=31*_openblas + - liblapack =3.9.0=31*_openblas + - blas =2.131=openblas arch: x86_64 platform: linux license: BSD-3-Clause - license_family: BSD - size: 16886 - timestamp: 1739836232507 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-30_hab92f65_openblas.conda - build_number: 30 - sha256: 878bf1d1b75c9db13cd16486d880228c163b0fe36911f8bcece79a4fd2583b44 - md5: b3b76e1a06d0f89ca5c24935b0541510 - depends: - - libblas 3.9.0 30_h1a9f1db_openblas + size: 16796 + timestamp: 1740087984429 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-31_hab92f65_openblas.conda + build_number: 31 + sha256: f0457a1d2982f0a28bfbadaa02621677c324e88f7c8198c24fb3e3214c468dba + md5: 6b81dbae56a519f1ec2f25e0ee2f4334 + depends: + - libblas 3.9.0 31_h1a9f1db_openblas constrains: - - blas =2.130=openblas - - liblapacke =3.9.0=30*_openblas - - liblapack =3.9.0=30*_openblas + - liblapack =3.9.0=31*_openblas + - blas =2.131=openblas + - liblapacke =3.9.0=31*_openblas arch: aarch64 platform: linux license: BSD-3-Clause - license_family: BSD - size: 16777 - timestamp: 1739836311343 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-30_hb3479ef_openblas.conda - build_number: 30 - sha256: 6d5935d1df2558d84367f183050e7291ec18cdf44d55093ce5a5ca6228d7ff1b - md5: 7b50ccb7f672a8a793c64f7bfce84472 - depends: - - libblas 3.9.0 30_h10e41b3_openblas + size: 16824 + timestamp: 1740087917500 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-31_hb3479ef_openblas.conda + build_number: 31 + sha256: f237486cc9118d09d0f3ff8820280de34365f98ee7b7dc5ab923b04c7cbf25a5 + md5: 7353c2bf0e90834cb70545671996d871 + depends: + - libblas 3.9.0 31_h10e41b3_openblas constrains: - - liblapack =3.9.0=30*_openblas - - blas =2.130=openblas - - liblapacke =3.9.0=30*_openblas + - liblapacke =3.9.0=31*_openblas + - blas =2.131=openblas + - liblapack =3.9.0=31*_openblas arch: arm64 platform: osx license: BSD-3-Clause - license_family: BSD - size: 16922 - timestamp: 1739836601500 + size: 17032 + timestamp: 1740088127097 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda sha256: 776092346da87a2a23502e14d91eb0c32699c4a1522b7331537bd1c3751dcff5 md5: 5b3e1610ff8bd5443476b91d618f5b77 @@ -852,6 +828,17 @@ packages: license_family: GPL size: 997381 timestamp: 1707330687590 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h77fa898_1.conda + sha256: 1911c29975ec99b6b906904040c855772ccb265a1c79d5d75c8ceec4ed89cd63 + md5: cc3573974587f12dda90d96e3e55a702 + depends: + - _libgcc_mutex 0.1 conda_forge + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 460992 + timestamp: 1729027639220 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_1.conda sha256: 5aa53874a5e57a00f2e0c2e2910684eb674429cd5fcb803619b226a73e89aedf md5: 376f0e73abbda6d23c0cb749adc195ef @@ -861,80 +848,51 @@ packages: license_family: GPL size: 463521 timestamp: 1729089357313 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libhwloc-2.11.2-default_h0d58e46_1001.conda - sha256: d14c016482e1409ae1c50109a9ff933460a50940d2682e745ab1c172b5282a69 - md5: 804ca9e91bcaea0824a341d55b1684f2 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-31_h7ac8fdf_openblas.conda + build_number: 31 + sha256: f583661921456e798aba10972a8abbd9d33571c655c1f66eff450edc9cbefcf3 + md5: 452b98eafe050ecff932f0ec832dd03f depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libstdcxx >=13 - - libxml2 >=2.13.4,<3.0a0 - arch: x86_64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 2423200 - timestamp: 1731374922090 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h4ce23a2_0.conda - sha256: 659a83c0c184a30336ca512d670a7db56bfb5e289caa9ee641e6f78fd2326463 - md5: 0743bcd51fc4e6e0367e0aaf41e9bebc - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - arch: x86_64 - platform: linux - license: LGPL-2.1-only - size: 713745 - timestamp: 1739866934640 -- conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-30_h7ac8fdf_openblas.conda - build_number: 30 - sha256: 94bbd63969d46e7e0a0c5b37061fc882402fdb6004f021c82fa082f66f8049d5 - md5: cf25476fc9c6aab3c59a70e4080962d5 - depends: - - libblas 3.9.0 30_h59b9bed_openblas - - mkl >=2024.2.2,<2025.0a0 + - libblas 3.9.0 31_h59b9bed_openblas constrains: - - libcblas =3.9.0=30*_openblas - - blas =2.130=openblas - - liblapacke =3.9.0=30*_openblas + - libcblas =3.9.0=31*_openblas + - liblapacke =3.9.0=31*_openblas + - blas =2.131=openblas arch: x86_64 platform: linux license: BSD-3-Clause - license_family: BSD - size: 16889 - timestamp: 1739836243035 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-30_h411afd4_openblas.conda - build_number: 30 - sha256: 05720b9d62260048fa64d2ca1ee0ba0eef3496eb9b337cd277dbdbffcd976fe0 - md5: 3d5dfd69d16af6a64483a9eb17610923 - depends: - - libblas 3.9.0 30_h1a9f1db_openblas + size: 16790 + timestamp: 1740087997375 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-31_h411afd4_openblas.conda + build_number: 31 + sha256: 27613828ff6fb258b2e58802617df549f00089660ea8ab6c55c68f042c570162 + md5: 41dbff5eb805a75c120a7b7a1c744dc2 + depends: + - libblas 3.9.0 31_h1a9f1db_openblas constrains: - - libcblas =3.9.0=30*_openblas - - blas =2.130=openblas - - liblapacke =3.9.0=30*_openblas + - blas =2.131=openblas + - libcblas =3.9.0=31*_openblas + - liblapacke =3.9.0=31*_openblas arch: aarch64 platform: linux license: BSD-3-Clause - license_family: BSD - size: 16796 - timestamp: 1739836317218 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-30_hc9a63f6_openblas.conda - build_number: 30 - sha256: ad78d4fafde96659b429174fef4a0edf4c937876260c13c5f301d14779b3e36c - md5: af38e475d8538c65cb8ce0f1bfe2e573 - depends: - - libblas 3.9.0 30_h10e41b3_openblas + size: 16845 + timestamp: 1740087923843 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-31_hc9a63f6_openblas.conda + build_number: 31 + sha256: fe55b9aaf82c6c0192c3d1fcc9b8e884f97492dda9a8de5dae29334b3135fab5 + md5: ff57a55a2cbce171ef5707fb463caf19 + depends: + - libblas 3.9.0 31_h10e41b3_openblas constrains: - - libcblas =3.9.0=30*_openblas - - blas =2.130=openblas - - liblapacke =3.9.0=30*_openblas + - liblapacke =3.9.0=31*_openblas + - libcblas =3.9.0=31*_openblas + - blas =2.131=openblas arch: arm64 platform: osx license: BSD-3-Clause - license_family: BSD - size: 16939 - timestamp: 1739836608362 + size: 17033 + timestamp: 1740088134988 - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda sha256: cad52e10319ca4585bc37f0bc7cce99ec7c15dc9168e42ccb96b741b0a27db3f md5: 42d5b6a0f30d3c10cd88cb8584fda1cb @@ -1277,22 +1235,6 @@ packages: license: LGPL-2.1-or-later size: 114269 timestamp: 1702724369203 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.6-h8d12d68_0.conda - sha256: db8af71ea9c0ae95b7cb4a0f59319522ed2243942437a1200ceb391493018d85 - md5: 328382c0e0ca648e5c189d5ec336c604 - depends: - - __glibc >=2.17,<3.0.a0 - - icu >=75.1,<76.0a0 - - libgcc >=13 - - libiconv >=1.18,<2.0a0 - - liblzma >=5.6.4,<6.0a0 - - libzlib >=1.3.1,<2.0a0 - arch: x86_64 - platform: linux - license: MIT - license_family: MIT - size: 690296 - timestamp: 1739952967309 - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda sha256: d4bfe88d7cb447768e31650f06257995601f89076080e76df55e3112d4e47dc4 md5: edb0dca6bc32e4f4789199455a1dbeb8 @@ -1333,19 +1275,6 @@ packages: license_family: Other size: 46438 timestamp: 1727963202283 -- conda: https://conda.anaconda.org/conda-forge/linux-64/llvm-openmp-19.1.7-h024ca30_0.conda - sha256: 5383e32604e03814b6011fa01a5332057934181a7ea0e90abba7890c17cabce6 - md5: 9915f85a72472011550550623cce2d53 - depends: - - __glibc >=2.17,<3.0.a0 - constrains: - - openmp 19.1.7|19.1.7.* - arch: x86_64 - platform: linux - license: Apache-2.0 WITH LLVM-exception - license_family: APACHE - size: 3190529 - timestamp: 1736986301022 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda sha256: b92a669f2059874ebdcb69041b6c243d68ffc3fb356ac1339cec44aeb27245d7 md5: c4d54bfd3817313ce758aa76283b118d @@ -1359,48 +1288,48 @@ packages: license_family: APACHE size: 280830 timestamp: 1736986295869 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022005-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022105-release.conda noarch: python - sha256: 73a728cc599d38eb95ae3d924bfcce33b9572728a42a065152d6aa5c9fc4825a - md5: dcea265b305fe4b5a751e23531e55fc6 + sha256: 732a14d313918fa64ccfb5680edc7017095a1f68925102c580ef9d57b0096480 + md5: d75813fec3d9345db2bdf8b21226b54a depends: - - max-core ==25.2.0.dev2025022005 release - - max-python ==25.2.0.dev2025022005 release - - mojo-jupyter ==25.2.0.dev2025022005 release - - mblack ==25.2.0.dev2025022005 release + - max-core ==25.2.0.dev2025022105 release + - max-python ==25.2.0.dev2025022105 release + - mojo-jupyter ==25.2.0.dev2025022105 release + - mblack ==25.2.0.dev2025022105 release license: LicenseRef-Modular-Proprietary - size: 9911 - timestamp: 1740028585109 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022005-release.conda - sha256: 6d5a1dee924f2b90fee1da4fad534afce20cc5c10c8c2514215b882e6d9e3711 - md5: bab16e83b4190bf2743900ff977b23f3 + size: 9907 + timestamp: 1740115026277 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022105-release.conda + sha256: 21e95724d239c8769b45d03b80fccf10bcfd602539152e6f0242849b201bcd24 + md5: 54c8f6dde5dea407ed799d6c18e659b6 depends: - - mblack ==25.2.0.dev2025022005 release + - mblack ==25.2.0.dev2025022105 release license: LicenseRef-Modular-Proprietary - size: 243845116 - timestamp: 1740028633977 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022005-release.conda - sha256: 3651136079667dc3aabb624a5dd219f74212794e31488ed52453edb4eff8dda6 - md5: b2e5292f9128e4d3dd21b5efe9c62ec3 + size: 243982029 + timestamp: 1740115026277 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022105-release.conda + sha256: b06919e10b7ab17923ba13c90fa2c899fd414f9cc956b87655558908559839fc + md5: 7a1136495c9d286c8d300a147668bbd4 depends: - - mblack ==25.2.0.dev2025022005 release + - mblack ==25.2.0.dev2025022105 release license: LicenseRef-Modular-Proprietary - size: 246414229 - timestamp: 1740028585109 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022005-release.conda - sha256: 2b4284fa358ecea61058a847a7f4ee5922840ea8cb0e7b23289e8e9737d84693 - md5: 4f78943e45265a6e74e0bc7c63d63d8e + size: 246599121 + timestamp: 1740114929824 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022105-release.conda + sha256: ebe3a6728324923680a48c5d5a3fb1b20ab7ed6fd2adebaf78e0fc647f1f61b1 + md5: 41bfea6a454a7c7800c32b61c56bdba0 depends: - - mblack ==25.2.0.dev2025022005 release + - mblack ==25.2.0.dev2025022105 release license: LicenseRef-Modular-Proprietary - size: 212210721 - timestamp: 1740029626428 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022005-release.conda + size: 212292795 + timestamp: 1740116288307 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022105-release.conda noarch: python - sha256: 3b0c24834d3acbc000e1a10142a2a1ffd20459c7872dc4511d7366e847c46100 - md5: fa6af33b4f5899b97d6d1dc189085efe + sha256: a92c6ccda2193487bd493a76c63d97092cbf475eb1843febe459d7944c8fae8b + md5: 7c25b17e0461e19aa722475898f6aa8f depends: - - max-core ==25.2.0.dev2025022005 release + - max-core ==25.2.0.dev2025022105 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1438,14 +1367,14 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 120696393 - timestamp: 1740028633977 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022005-release.conda + size: 120766503 + timestamp: 1740115026277 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022105-release.conda noarch: python - sha256: f471037607a1ecd2f099d9f38d8bbe9bfb4b59973f5e21ecd8ba1df1dd753e18 - md5: 95bdf6cd858922b8827313101608306a + sha256: c06a253400b9de225606b3cbd61e1d2e6da42f53e1890a9cb61157156bf98f66 + md5: 90f39327488343967a427d5a39e13ac4 depends: - - max-core ==25.2.0.dev2025022005 release + - max-core ==25.2.0.dev2025022105 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1483,14 +1412,14 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 123242379 - timestamp: 1740028585109 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022005-release.conda + size: 123342667 + timestamp: 1740114929824 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022105-release.conda noarch: python - sha256: 30d7b5434f9137fe5b234c2667999e7e2be763d01c0e7481892eafe34948775b - md5: 94e16d2fde39ce744582d233defc5bf0 + sha256: 379984702419a2ca81444be4309766ebd9ac67da5d0744e6da9e70a6aa16921f + md5: b6bcc43da1e896e88d379dfae0021dd4 depends: - - max-core ==25.2.0.dev2025022005 release + - max-core ==25.2.0.dev2025022105 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1528,12 +1457,12 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 110077418 - timestamp: 1740029626428 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022005-release.conda + size: 110165681 + timestamp: 1740116288307 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022105-release.conda noarch: python - sha256: 9379e4793be7c455a88485d715e86e86166e81ac1cb616d889abdc1730c80d75 - md5: 088702bd2b036e232b196fe8de9718cb + sha256: 8e8f49bd832591239f7913882326bdf4e49b62dad55630cd973e59a273d530dd + md5: cbe46561f716976d2a8a5222b0dfd975 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -1544,34 +1473,20 @@ packages: - typing_extensions >=v4.12.2 - python license: MIT - size: 130861 - timestamp: 1740028585109 -- conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-2024.2.2-ha957f24_16.conda - sha256: 77906b0acead8f86b489da46f53916e624897338770dbf70b04b8f673c9273c1 - md5: 1459379c79dda834673426504d52b319 - depends: - - _openmp_mutex * *_llvm - - _openmp_mutex >=4.5 - - llvm-openmp >=19.1.2 - - tbb 2021.* - arch: x86_64 - platform: linux - license: LicenseRef-IntelSimplifiedSoftwareOct2022 - license_family: Proprietary - size: 124718448 - timestamp: 1730231808335 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022005-release.conda + size: 130843 + timestamp: 1740115026277 +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022105-release.conda noarch: python - sha256: f6399ee0d27607ad82e7c947b8973fd19e412ca3dab78dc94c42b9039dcb9056 - md5: fc308a44c2304836e4b1d59928455a14 + sha256: 62205186302b4460ee7f8c6e466da82d69b2a06c71958d47cbbe548cdcd3fde4 + md5: 10aa481c50998711d470cac4990d6ed5 depends: - - max-core ==25.2.0.dev2025022005 release + - max-core ==25.2.0.dev2025022105 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22990 - timestamp: 1740028585109 + size: 22980 + timestamp: 1740115026277 - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda sha256: 1895f47b7d68581a6facde5cb13ab8c2764c2e53a76bd746f8f98910dc4e08fe md5: 29097e7ea634a45cc5386b95cac6568f @@ -2094,20 +2009,6 @@ packages: license_family: MIT size: 16385 timestamp: 1733381032766 -- conda: https://conda.anaconda.org/conda-forge/linux-64/tbb-2021.13.0-hceb3a55_1.conda - sha256: 65463732129899770d54b1fbf30e1bb82fdebda9d7553caf08d23db4590cd691 - md5: ba7726b8df7b9d34ea80e82b097a4893 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libhwloc >=2.11.2,<2.11.3.0a0 - - libstdcxx >=13 - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 175954 - timestamp: 1732982638805 - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda sha256: e0569c9caa68bf476bead1bed3d79650bb080b532c64a4af7d8ca286c08dea4e md5: d453b98d9c83e71da0741bb0ff4d76bc diff --git a/examples/testing/magic.lock b/examples/testing/magic.lock index b9b1c1bda9..5d3944411f 100644 --- a/examples/testing/magic.lock +++ b/examples/testing/magic.lock @@ -7,21 +7,20 @@ environments: packages: linux-64: - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_kmp_llvm.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2025.1.31-hbcca054_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-30_h59b9bed_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-30_he106b2a_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-31_h59b9bed_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-31_he106b2a_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_0.conda @@ -29,9 +28,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hd5240d6_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libhwloc-2.11.2-default_h0d58e46_1001.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h4ce23a2_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-30_h7ac8fdf_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h77fa898_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-31_h7ac8fdf_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.29-pthreads_h94d23a6_0.conda @@ -43,15 +41,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.6-h8d12d68_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/llvm-openmp-19.1.7-h024ca30_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022005-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022005-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022005-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022005-release.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-2024.2.2-ha957f24_16.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022005-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022105-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022105-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022105-release.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-h2d0b736_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda @@ -68,7 +63,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-python-0.2.0-py312hb6b8a2b_10.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-spm-0.2.0-h8e10757_10.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/tbb-2021.13.0-hceb3a55_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda @@ -88,10 +82,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/keyutils-1.6.1-h4e544f5_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/krb5-1.21.3-h50a48e9_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h18dbdb1_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-30_h1a9f1db_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-30_hab92f65_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-31_h1a9f1db_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-31_hab92f65_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20250104-pl5321h976ea20_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.6.4-h5ad3122_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.4.6-he21f813_0.conda @@ -100,7 +94,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-30_h411afd4_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-31_h411afd4_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.4-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.29-pthreads_h9d3fd7e_0.conda @@ -113,11 +107,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022005-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022005-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022005-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022005-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022005-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022105-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022105-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022105-release.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-ha32ae93_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda @@ -152,15 +146,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_h07bc746_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-30_h10e41b3_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-30_hb3479ef_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-31_h10e41b3_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-31_hb3479ef_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.4-h286801f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-30_hc9a63f6_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-31_hc9a63f6_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.4-h39f12f2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.29-openmp_hf332438_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.3-h3bd63a1_1.conda @@ -169,11 +163,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.1-h3f77e49_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022005-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022005-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022005-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022005-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022005-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022105-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022105-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022105-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda @@ -207,19 +201,21 @@ packages: license: None size: 2562 timestamp: 1578324546067 -- conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_kmp_llvm.tar.bz2 - build_number: 2 - sha256: 84a66275da3a66e3f3e70e9d8f10496d807d01a9e4ec16cd2274cc5e28c478fc - md5: 562b26ba2e19059551a811e72ab7f793 +- conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 + build_number: 16 + sha256: fbe2c5e56a653bebb982eda4876a9178aedfc2b545f25d0ce9c4c0b508253d22 + md5: 73aaf86a425cc6e73fcf236a5a46396d depends: - _libgcc_mutex 0.1 conda_forge - - llvm-openmp >=9.0.1 + - libgomp >=7.5.0 + constrains: + - openmp_impl 9999 arch: x86_64 platform: linux license: BSD-3-Clause license_family: BSD - size: 5744 - timestamp: 1650742457817 + size: 23621 + timestamp: 1650670423406 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2 build_number: 16 sha256: 3702bef2f0a4d38bd8288bbe54aace623602a1343c2cfbefd3fa188e015bebf0 @@ -311,19 +307,6 @@ packages: license_family: BSD size: 27011 timestamp: 1733218222191 -- conda: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda - sha256: 71e750d509f5fa3421087ba88ef9a7b9be11c53174af3aa4d06aff4c18b38e8e - md5: 8b189310083baabfb622af68fd9d3ae3 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc-ng >=12 - - libstdcxx-ng >=12 - arch: x86_64 - platform: linux - license: MIT - license_family: MIT - size: 12129203 - timestamp: 1720853576813 - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda sha256: 598951ebdb23e25e4cec4bbff0ae369cec65ead80b50bc08b441d8e54de5cf03 md5: f4b39bf00c69f56ac01e020ebfac066c @@ -428,9 +411,9 @@ packages: license_family: MIT size: 1155530 timestamp: 1719463474401 -- conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_2.conda - sha256: 7c91cea91b13f4314d125d1bedb9d03a29ebbd5080ccdea70260363424646dbe - md5: 048b02e3962f066da18efe3a21b77672 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_3.conda + sha256: f754b85b9c4528e09749fea56466e3a4f38439dd70b34f0f9bebff9b31055cf1 + md5: 5d5839b8df5d356d701bdd3450af6955 depends: - __glibc >=2.17,<3.0.a0 constrains: @@ -438,20 +421,18 @@ packages: arch: x86_64 platform: linux license: GPL-3.0-only - license_family: GPL - size: 669211 - timestamp: 1729655358674 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_2.conda - sha256: 80ec7e8f006196808fac5bd4b3773a652847f97bbf08044cd87731424ac64f8b - md5: fcbde5ea19d55468953bf588770c0501 + size: 671098 + timestamp: 1740102063271 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_3.conda + sha256: af2c66237bc0c2bfc0f34cb5e15687d8959e7c1cfab4c6d1840b8ba585dc5a83 + md5: f68c5f63e086066266e3033cc3946f27 constrains: - binutils_impl_linux-aarch64 2.43 arch: aarch64 platform: linux license: GPL-3.0-only - license_family: GPL - size: 698245 - timestamp: 1729655345825 + size: 699220 + timestamp: 1740102274585 - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda sha256: 143a586aa67d50622ef703de57b9d43f44945836d6568e0e7aa174bd8c45e0d4 md5: 488f260ccda0afaf08acb286db439c2f @@ -498,110 +479,105 @@ packages: license_family: Apache size: 1178260 timestamp: 1736008642885 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-30_h59b9bed_openblas.conda - build_number: 30 - sha256: 46b831c6adac121494a9557a964fcb1e3b31bd59e5bedcd1d9f8787e94498bf6 - md5: 0ea863eeebb367d82716fc8f83d11eb5 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-31_h59b9bed_openblas.conda + build_number: 31 + sha256: 9839fc4ac0cbb0aa3b9eea520adfb57311838959222654804e58f6f2d1771db5 + md5: 728dbebd0f7a20337218beacffd37916 depends: - libopenblas >=0.3.29,<0.3.30.0a0 - libopenblas >=0.3.29,<1.0a0 - - mkl >=2024.2.2,<2025.0a0 constrains: - - libcblas =3.9.0=30*_openblas - - liblapack =3.9.0=30*_openblas - - liblapacke =3.9.0=30*_openblas - - blas =2.130=openblas + - liblapacke =3.9.0=31*_openblas + - liblapack =3.9.0=31*_openblas + - blas =2.131=openblas + - mkl <2025 + - libcblas =3.9.0=31*_openblas arch: x86_64 platform: linux license: BSD-3-Clause - license_family: BSD - size: 16932 - timestamp: 1739836222334 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-30_h1a9f1db_openblas.conda - build_number: 30 - sha256: 50fc3d327a95a604120715e14447b497bf52b7b13de556f068610c6f34f95da2 - md5: f62b3030cc0c37b06cd6b7e771d99be9 + size: 16859 + timestamp: 1740087969120 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-31_h1a9f1db_openblas.conda + build_number: 31 + sha256: 67c9c81dd0444ecc712124034d9f74186ca82fd770b3df46b1a68564461c6a1a + md5: 48bd5bf15ccf3e409840be9caafc0ad5 depends: - libopenblas >=0.3.29,<0.3.30.0a0 - libopenblas >=0.3.29,<1.0a0 constrains: - - libcblas =3.9.0=30*_openblas - - blas =2.130=openblas - - liblapacke =3.9.0=30*_openblas - - liblapack =3.9.0=30*_openblas + - liblapack =3.9.0=31*_openblas + - blas =2.131=openblas + - libcblas =3.9.0=31*_openblas + - mkl <2025 + - liblapacke =3.9.0=31*_openblas arch: aarch64 platform: linux license: BSD-3-Clause - license_family: BSD - size: 16841 - timestamp: 1739836305440 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-30_h10e41b3_openblas.conda - build_number: 30 - sha256: efdb82267966dff85123334ed0f7f4773ab4b093187c5495f2f92f892e2542d4 - md5: 1317dcfcde16781b5d446bfb4c81b848 + size: 16915 + timestamp: 1740087911042 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-31_h10e41b3_openblas.conda + build_number: 31 + sha256: 369586e7688b59b4f92c709b99d847d66d4d095425db327dd32ee5e6ab74697f + md5: 39b053da5e7035c6592102280aa7612a depends: - libopenblas >=0.3.29,<0.3.30.0a0 - libopenblas >=0.3.29,<1.0a0 constrains: - - libcblas =3.9.0=30*_openblas - - liblapack =3.9.0=30*_openblas - - blas =2.130=openblas - - liblapacke =3.9.0=30*_openblas + - liblapacke =3.9.0=31*_openblas + - libcblas =3.9.0=31*_openblas + - blas =2.131=openblas + - mkl <2025 + - liblapack =3.9.0=31*_openblas arch: arm64 platform: osx license: BSD-3-Clause - license_family: BSD - size: 17013 - timestamp: 1739836593880 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-30_he106b2a_openblas.conda - build_number: 30 - sha256: 3db0177e5650fbaad94f026796c5c9762268c5f22d65dda1b3c9b8c50379254c - md5: d57f230608417264fb1daaddc5f05cca - depends: - - libblas 3.9.0 30_h59b9bed_openblas - - mkl >=2024.2.2,<2025.0a0 + size: 17123 + timestamp: 1740088119350 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-31_he106b2a_openblas.conda + build_number: 31 + sha256: ede8545011f5b208b151fe3e883eb4e31d495ab925ab7b9ce394edca846e0c0d + md5: abb32c727da370c481a1c206f5159ce9 + depends: + - libblas 3.9.0 31_h59b9bed_openblas constrains: - - liblapack =3.9.0=30*_openblas - - liblapacke =3.9.0=30*_openblas - - blas =2.130=openblas + - liblapacke =3.9.0=31*_openblas + - liblapack =3.9.0=31*_openblas + - blas =2.131=openblas arch: x86_64 platform: linux license: BSD-3-Clause - license_family: BSD - size: 16886 - timestamp: 1739836232507 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-30_hab92f65_openblas.conda - build_number: 30 - sha256: 878bf1d1b75c9db13cd16486d880228c163b0fe36911f8bcece79a4fd2583b44 - md5: b3b76e1a06d0f89ca5c24935b0541510 - depends: - - libblas 3.9.0 30_h1a9f1db_openblas + size: 16796 + timestamp: 1740087984429 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-31_hab92f65_openblas.conda + build_number: 31 + sha256: f0457a1d2982f0a28bfbadaa02621677c324e88f7c8198c24fb3e3214c468dba + md5: 6b81dbae56a519f1ec2f25e0ee2f4334 + depends: + - libblas 3.9.0 31_h1a9f1db_openblas constrains: - - blas =2.130=openblas - - liblapacke =3.9.0=30*_openblas - - liblapack =3.9.0=30*_openblas + - liblapack =3.9.0=31*_openblas + - blas =2.131=openblas + - liblapacke =3.9.0=31*_openblas arch: aarch64 platform: linux license: BSD-3-Clause - license_family: BSD - size: 16777 - timestamp: 1739836311343 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-30_hb3479ef_openblas.conda - build_number: 30 - sha256: 6d5935d1df2558d84367f183050e7291ec18cdf44d55093ce5a5ca6228d7ff1b - md5: 7b50ccb7f672a8a793c64f7bfce84472 - depends: - - libblas 3.9.0 30_h10e41b3_openblas + size: 16824 + timestamp: 1740087917500 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-31_hb3479ef_openblas.conda + build_number: 31 + sha256: f237486cc9118d09d0f3ff8820280de34365f98ee7b7dc5ab923b04c7cbf25a5 + md5: 7353c2bf0e90834cb70545671996d871 + depends: + - libblas 3.9.0 31_h10e41b3_openblas constrains: - - liblapack =3.9.0=30*_openblas - - blas =2.130=openblas - - liblapacke =3.9.0=30*_openblas + - liblapacke =3.9.0=31*_openblas + - blas =2.131=openblas + - liblapack =3.9.0=31*_openblas arch: arm64 platform: osx license: BSD-3-Clause - license_family: BSD - size: 16922 - timestamp: 1739836601500 + size: 17032 + timestamp: 1740088127097 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda sha256: 776092346da87a2a23502e14d91eb0c32699c4a1522b7331537bd1c3751dcff5 md5: 5b3e1610ff8bd5443476b91d618f5b77 @@ -852,6 +828,17 @@ packages: license_family: GPL size: 997381 timestamp: 1707330687590 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h77fa898_1.conda + sha256: 1911c29975ec99b6b906904040c855772ccb265a1c79d5d75c8ceec4ed89cd63 + md5: cc3573974587f12dda90d96e3e55a702 + depends: + - _libgcc_mutex 0.1 conda_forge + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 460992 + timestamp: 1729027639220 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_1.conda sha256: 5aa53874a5e57a00f2e0c2e2910684eb674429cd5fcb803619b226a73e89aedf md5: 376f0e73abbda6d23c0cb749adc195ef @@ -861,80 +848,51 @@ packages: license_family: GPL size: 463521 timestamp: 1729089357313 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libhwloc-2.11.2-default_h0d58e46_1001.conda - sha256: d14c016482e1409ae1c50109a9ff933460a50940d2682e745ab1c172b5282a69 - md5: 804ca9e91bcaea0824a341d55b1684f2 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-31_h7ac8fdf_openblas.conda + build_number: 31 + sha256: f583661921456e798aba10972a8abbd9d33571c655c1f66eff450edc9cbefcf3 + md5: 452b98eafe050ecff932f0ec832dd03f depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libstdcxx >=13 - - libxml2 >=2.13.4,<3.0a0 - arch: x86_64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 2423200 - timestamp: 1731374922090 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h4ce23a2_0.conda - sha256: 659a83c0c184a30336ca512d670a7db56bfb5e289caa9ee641e6f78fd2326463 - md5: 0743bcd51fc4e6e0367e0aaf41e9bebc - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - arch: x86_64 - platform: linux - license: LGPL-2.1-only - size: 713745 - timestamp: 1739866934640 -- conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-30_h7ac8fdf_openblas.conda - build_number: 30 - sha256: 94bbd63969d46e7e0a0c5b37061fc882402fdb6004f021c82fa082f66f8049d5 - md5: cf25476fc9c6aab3c59a70e4080962d5 - depends: - - libblas 3.9.0 30_h59b9bed_openblas - - mkl >=2024.2.2,<2025.0a0 + - libblas 3.9.0 31_h59b9bed_openblas constrains: - - libcblas =3.9.0=30*_openblas - - blas =2.130=openblas - - liblapacke =3.9.0=30*_openblas + - libcblas =3.9.0=31*_openblas + - liblapacke =3.9.0=31*_openblas + - blas =2.131=openblas arch: x86_64 platform: linux license: BSD-3-Clause - license_family: BSD - size: 16889 - timestamp: 1739836243035 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-30_h411afd4_openblas.conda - build_number: 30 - sha256: 05720b9d62260048fa64d2ca1ee0ba0eef3496eb9b337cd277dbdbffcd976fe0 - md5: 3d5dfd69d16af6a64483a9eb17610923 - depends: - - libblas 3.9.0 30_h1a9f1db_openblas + size: 16790 + timestamp: 1740087997375 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-31_h411afd4_openblas.conda + build_number: 31 + sha256: 27613828ff6fb258b2e58802617df549f00089660ea8ab6c55c68f042c570162 + md5: 41dbff5eb805a75c120a7b7a1c744dc2 + depends: + - libblas 3.9.0 31_h1a9f1db_openblas constrains: - - libcblas =3.9.0=30*_openblas - - blas =2.130=openblas - - liblapacke =3.9.0=30*_openblas + - blas =2.131=openblas + - libcblas =3.9.0=31*_openblas + - liblapacke =3.9.0=31*_openblas arch: aarch64 platform: linux license: BSD-3-Clause - license_family: BSD - size: 16796 - timestamp: 1739836317218 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-30_hc9a63f6_openblas.conda - build_number: 30 - sha256: ad78d4fafde96659b429174fef4a0edf4c937876260c13c5f301d14779b3e36c - md5: af38e475d8538c65cb8ce0f1bfe2e573 - depends: - - libblas 3.9.0 30_h10e41b3_openblas + size: 16845 + timestamp: 1740087923843 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-31_hc9a63f6_openblas.conda + build_number: 31 + sha256: fe55b9aaf82c6c0192c3d1fcc9b8e884f97492dda9a8de5dae29334b3135fab5 + md5: ff57a55a2cbce171ef5707fb463caf19 + depends: + - libblas 3.9.0 31_h10e41b3_openblas constrains: - - libcblas =3.9.0=30*_openblas - - blas =2.130=openblas - - liblapacke =3.9.0=30*_openblas + - liblapacke =3.9.0=31*_openblas + - libcblas =3.9.0=31*_openblas + - blas =2.131=openblas arch: arm64 platform: osx license: BSD-3-Clause - license_family: BSD - size: 16939 - timestamp: 1739836608362 + size: 17033 + timestamp: 1740088134988 - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda sha256: cad52e10319ca4585bc37f0bc7cce99ec7c15dc9168e42ccb96b741b0a27db3f md5: 42d5b6a0f30d3c10cd88cb8584fda1cb @@ -1277,22 +1235,6 @@ packages: license: LGPL-2.1-or-later size: 114269 timestamp: 1702724369203 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.6-h8d12d68_0.conda - sha256: db8af71ea9c0ae95b7cb4a0f59319522ed2243942437a1200ceb391493018d85 - md5: 328382c0e0ca648e5c189d5ec336c604 - depends: - - __glibc >=2.17,<3.0.a0 - - icu >=75.1,<76.0a0 - - libgcc >=13 - - libiconv >=1.18,<2.0a0 - - liblzma >=5.6.4,<6.0a0 - - libzlib >=1.3.1,<2.0a0 - arch: x86_64 - platform: linux - license: MIT - license_family: MIT - size: 690296 - timestamp: 1739952967309 - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda sha256: d4bfe88d7cb447768e31650f06257995601f89076080e76df55e3112d4e47dc4 md5: edb0dca6bc32e4f4789199455a1dbeb8 @@ -1333,19 +1275,6 @@ packages: license_family: Other size: 46438 timestamp: 1727963202283 -- conda: https://conda.anaconda.org/conda-forge/linux-64/llvm-openmp-19.1.7-h024ca30_0.conda - sha256: 5383e32604e03814b6011fa01a5332057934181a7ea0e90abba7890c17cabce6 - md5: 9915f85a72472011550550623cce2d53 - depends: - - __glibc >=2.17,<3.0.a0 - constrains: - - openmp 19.1.7|19.1.7.* - arch: x86_64 - platform: linux - license: Apache-2.0 WITH LLVM-exception - license_family: APACHE - size: 3190529 - timestamp: 1736986301022 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda sha256: b92a669f2059874ebdcb69041b6c243d68ffc3fb356ac1339cec44aeb27245d7 md5: c4d54bfd3817313ce758aa76283b118d @@ -1359,48 +1288,48 @@ packages: license_family: APACHE size: 280830 timestamp: 1736986295869 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022005-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022105-release.conda noarch: python - sha256: 73a728cc599d38eb95ae3d924bfcce33b9572728a42a065152d6aa5c9fc4825a - md5: dcea265b305fe4b5a751e23531e55fc6 + sha256: 732a14d313918fa64ccfb5680edc7017095a1f68925102c580ef9d57b0096480 + md5: d75813fec3d9345db2bdf8b21226b54a depends: - - max-core ==25.2.0.dev2025022005 release - - max-python ==25.2.0.dev2025022005 release - - mojo-jupyter ==25.2.0.dev2025022005 release - - mblack ==25.2.0.dev2025022005 release + - max-core ==25.2.0.dev2025022105 release + - max-python ==25.2.0.dev2025022105 release + - mojo-jupyter ==25.2.0.dev2025022105 release + - mblack ==25.2.0.dev2025022105 release license: LicenseRef-Modular-Proprietary - size: 9911 - timestamp: 1740028585109 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022005-release.conda - sha256: 6d5a1dee924f2b90fee1da4fad534afce20cc5c10c8c2514215b882e6d9e3711 - md5: bab16e83b4190bf2743900ff977b23f3 + size: 9907 + timestamp: 1740115026277 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022105-release.conda + sha256: 21e95724d239c8769b45d03b80fccf10bcfd602539152e6f0242849b201bcd24 + md5: 54c8f6dde5dea407ed799d6c18e659b6 depends: - - mblack ==25.2.0.dev2025022005 release + - mblack ==25.2.0.dev2025022105 release license: LicenseRef-Modular-Proprietary - size: 243845116 - timestamp: 1740028633977 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022005-release.conda - sha256: 3651136079667dc3aabb624a5dd219f74212794e31488ed52453edb4eff8dda6 - md5: b2e5292f9128e4d3dd21b5efe9c62ec3 + size: 243982029 + timestamp: 1740115026277 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022105-release.conda + sha256: b06919e10b7ab17923ba13c90fa2c899fd414f9cc956b87655558908559839fc + md5: 7a1136495c9d286c8d300a147668bbd4 depends: - - mblack ==25.2.0.dev2025022005 release + - mblack ==25.2.0.dev2025022105 release license: LicenseRef-Modular-Proprietary - size: 246414229 - timestamp: 1740028585109 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022005-release.conda - sha256: 2b4284fa358ecea61058a847a7f4ee5922840ea8cb0e7b23289e8e9737d84693 - md5: 4f78943e45265a6e74e0bc7c63d63d8e + size: 246599121 + timestamp: 1740114929824 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022105-release.conda + sha256: ebe3a6728324923680a48c5d5a3fb1b20ab7ed6fd2adebaf78e0fc647f1f61b1 + md5: 41bfea6a454a7c7800c32b61c56bdba0 depends: - - mblack ==25.2.0.dev2025022005 release + - mblack ==25.2.0.dev2025022105 release license: LicenseRef-Modular-Proprietary - size: 212210721 - timestamp: 1740029626428 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022005-release.conda + size: 212292795 + timestamp: 1740116288307 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022105-release.conda noarch: python - sha256: 3b0c24834d3acbc000e1a10142a2a1ffd20459c7872dc4511d7366e847c46100 - md5: fa6af33b4f5899b97d6d1dc189085efe + sha256: a92c6ccda2193487bd493a76c63d97092cbf475eb1843febe459d7944c8fae8b + md5: 7c25b17e0461e19aa722475898f6aa8f depends: - - max-core ==25.2.0.dev2025022005 release + - max-core ==25.2.0.dev2025022105 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1438,14 +1367,14 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 120696393 - timestamp: 1740028633977 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022005-release.conda + size: 120766503 + timestamp: 1740115026277 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022105-release.conda noarch: python - sha256: f471037607a1ecd2f099d9f38d8bbe9bfb4b59973f5e21ecd8ba1df1dd753e18 - md5: 95bdf6cd858922b8827313101608306a + sha256: c06a253400b9de225606b3cbd61e1d2e6da42f53e1890a9cb61157156bf98f66 + md5: 90f39327488343967a427d5a39e13ac4 depends: - - max-core ==25.2.0.dev2025022005 release + - max-core ==25.2.0.dev2025022105 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1483,14 +1412,14 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 123242379 - timestamp: 1740028585109 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022005-release.conda + size: 123342667 + timestamp: 1740114929824 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022105-release.conda noarch: python - sha256: 30d7b5434f9137fe5b234c2667999e7e2be763d01c0e7481892eafe34948775b - md5: 94e16d2fde39ce744582d233defc5bf0 + sha256: 379984702419a2ca81444be4309766ebd9ac67da5d0744e6da9e70a6aa16921f + md5: b6bcc43da1e896e88d379dfae0021dd4 depends: - - max-core ==25.2.0.dev2025022005 release + - max-core ==25.2.0.dev2025022105 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1528,12 +1457,12 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 110077418 - timestamp: 1740029626428 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022005-release.conda + size: 110165681 + timestamp: 1740116288307 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022105-release.conda noarch: python - sha256: 9379e4793be7c455a88485d715e86e86166e81ac1cb616d889abdc1730c80d75 - md5: 088702bd2b036e232b196fe8de9718cb + sha256: 8e8f49bd832591239f7913882326bdf4e49b62dad55630cd973e59a273d530dd + md5: cbe46561f716976d2a8a5222b0dfd975 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -1544,34 +1473,20 @@ packages: - typing_extensions >=v4.12.2 - python license: MIT - size: 130861 - timestamp: 1740028585109 -- conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-2024.2.2-ha957f24_16.conda - sha256: 77906b0acead8f86b489da46f53916e624897338770dbf70b04b8f673c9273c1 - md5: 1459379c79dda834673426504d52b319 - depends: - - _openmp_mutex * *_llvm - - _openmp_mutex >=4.5 - - llvm-openmp >=19.1.2 - - tbb 2021.* - arch: x86_64 - platform: linux - license: LicenseRef-IntelSimplifiedSoftwareOct2022 - license_family: Proprietary - size: 124718448 - timestamp: 1730231808335 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022005-release.conda + size: 130843 + timestamp: 1740115026277 +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022105-release.conda noarch: python - sha256: f6399ee0d27607ad82e7c947b8973fd19e412ca3dab78dc94c42b9039dcb9056 - md5: fc308a44c2304836e4b1d59928455a14 + sha256: 62205186302b4460ee7f8c6e466da82d69b2a06c71958d47cbbe548cdcd3fde4 + md5: 10aa481c50998711d470cac4990d6ed5 depends: - - max-core ==25.2.0.dev2025022005 release + - max-core ==25.2.0.dev2025022105 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22990 - timestamp: 1740028585109 + size: 22980 + timestamp: 1740115026277 - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda sha256: 1895f47b7d68581a6facde5cb13ab8c2764c2e53a76bd746f8f98910dc4e08fe md5: 29097e7ea634a45cc5386b95cac6568f @@ -2094,20 +2009,6 @@ packages: license_family: MIT size: 16385 timestamp: 1733381032766 -- conda: https://conda.anaconda.org/conda-forge/linux-64/tbb-2021.13.0-hceb3a55_1.conda - sha256: 65463732129899770d54b1fbf30e1bb82fdebda9d7553caf08d23db4590cd691 - md5: ba7726b8df7b9d34ea80e82b097a4893 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libhwloc >=2.11.2,<2.11.3.0a0 - - libstdcxx >=13 - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 175954 - timestamp: 1732982638805 - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda sha256: e0569c9caa68bf476bead1bed3d79650bb080b532c64a4af7d8ca286c08dea4e md5: d453b98d9c83e71da0741bb0ff4d76bc diff --git a/magic.lock b/magic.lock index cf9d9102b6..2303a5de76 100644 --- a/magic.lock +++ b/magic.lock @@ -17,10 +17,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-28_h59b9bed_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-28_he106b2a_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-31_h59b9bed_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-31_he106b2a_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_0.conda @@ -29,10 +29,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hd5240d6_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h77fa898_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-28_h7ac8fdf_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-31_h7ac8fdf_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.28-pthreads_h94d23a6_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.29-pthreads_h94d23a6_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsentencepiece-0.2.0-h8e10757_10.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda @@ -43,11 +43,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/lit-19.1.7-pyhd8ed1ab_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022005-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022005-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022005-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022005-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022005-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022105-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022105-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022105-release.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-h2d0b736_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda @@ -83,10 +83,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/keyutils-1.6.1-h4e544f5_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/krb5-1.21.3-h50a48e9_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h18dbdb1_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-30_h1a9f1db_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-30_hab92f65_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-31_h1a9f1db_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-31_hab92f65_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20250104-pl5321h976ea20_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.6.4-h5ad3122_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.4.6-he21f813_0.conda @@ -95,7 +95,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-30_h411afd4_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-31_h411afd4_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.4-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.29-pthreads_h9d3fd7e_0.conda @@ -109,11 +109,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/lit-19.1.7-pyhd8ed1ab_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022005-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022005-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022005-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022005-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022005-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022105-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022105-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022105-release.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-ha32ae93_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda @@ -148,15 +148,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_h07bc746_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-30_h10e41b3_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-30_hb3479ef_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-31_h10e41b3_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-31_hb3479ef_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.4-h286801f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-30_hc9a63f6_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-31_hc9a63f6_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.4-h39f12f2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.29-openmp_hf332438_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.3-h3bd63a1_1.conda @@ -166,11 +166,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/lit-19.1.7-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022005-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022005-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022005-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022005-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022005-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022105-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022105-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022105-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda @@ -414,9 +414,9 @@ packages: license_family: MIT size: 1155530 timestamp: 1719463474401 -- conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_2.conda - sha256: 7c91cea91b13f4314d125d1bedb9d03a29ebbd5080ccdea70260363424646dbe - md5: 048b02e3962f066da18efe3a21b77672 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_3.conda + sha256: f754b85b9c4528e09749fea56466e3a4f38439dd70b34f0f9bebff9b31055cf1 + md5: 5d5839b8df5d356d701bdd3450af6955 depends: - __glibc >=2.17,<3.0.a0 constrains: @@ -424,20 +424,18 @@ packages: arch: x86_64 platform: linux license: GPL-3.0-only - license_family: GPL - size: 669211 - timestamp: 1729655358674 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_2.conda - sha256: 80ec7e8f006196808fac5bd4b3773a652847f97bbf08044cd87731424ac64f8b - md5: fcbde5ea19d55468953bf588770c0501 + size: 671098 + timestamp: 1740102063271 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_3.conda + sha256: af2c66237bc0c2bfc0f34cb5e15687d8959e7c1cfab4c6d1840b8ba585dc5a83 + md5: f68c5f63e086066266e3033cc3946f27 constrains: - binutils_impl_linux-aarch64 2.43 arch: aarch64 platform: linux license: GPL-3.0-only - license_family: GPL - size: 698245 - timestamp: 1729655345825 + size: 699220 + timestamp: 1740102274585 - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda sha256: 143a586aa67d50622ef703de57b9d43f44945836d6568e0e7aa174bd8c45e0d4 md5: 488f260ccda0afaf08acb286db439c2f @@ -484,110 +482,105 @@ packages: license_family: Apache size: 1178260 timestamp: 1736008642885 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-28_h59b9bed_openblas.conda - build_number: 28 - sha256: 93fbcf2800b859b7ca5add3ab5d3aa11c6a6ff4b942a1cea4bf644f78488edb8 - md5: 73e2a99fdeb8531d50168987378fda8a +- conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-31_h59b9bed_openblas.conda + build_number: 31 + sha256: 9839fc4ac0cbb0aa3b9eea520adfb57311838959222654804e58f6f2d1771db5 + md5: 728dbebd0f7a20337218beacffd37916 depends: - - libopenblas >=0.3.28,<0.3.29.0a0 - - libopenblas >=0.3.28,<1.0a0 + - libopenblas >=0.3.29,<0.3.30.0a0 + - libopenblas >=0.3.29,<1.0a0 constrains: - - libcblas =3.9.0=28*_openblas - - blas =2.128=openblas - - liblapack =3.9.0=28*_openblas - - liblapacke =3.9.0=28*_openblas + - liblapacke =3.9.0=31*_openblas + - liblapack =3.9.0=31*_openblas + - blas =2.131=openblas - mkl <2025 + - libcblas =3.9.0=31*_openblas arch: x86_64 platform: linux license: BSD-3-Clause - license_family: BSD - size: 16621 - timestamp: 1738114033763 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-30_h1a9f1db_openblas.conda - build_number: 30 - sha256: 50fc3d327a95a604120715e14447b497bf52b7b13de556f068610c6f34f95da2 - md5: f62b3030cc0c37b06cd6b7e771d99be9 + size: 16859 + timestamp: 1740087969120 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-31_h1a9f1db_openblas.conda + build_number: 31 + sha256: 67c9c81dd0444ecc712124034d9f74186ca82fd770b3df46b1a68564461c6a1a + md5: 48bd5bf15ccf3e409840be9caafc0ad5 depends: - libopenblas >=0.3.29,<0.3.30.0a0 - libopenblas >=0.3.29,<1.0a0 constrains: - - libcblas =3.9.0=30*_openblas - - blas =2.130=openblas - - liblapacke =3.9.0=30*_openblas - - liblapack =3.9.0=30*_openblas + - liblapack =3.9.0=31*_openblas + - blas =2.131=openblas + - libcblas =3.9.0=31*_openblas + - mkl <2025 + - liblapacke =3.9.0=31*_openblas arch: aarch64 platform: linux license: BSD-3-Clause - license_family: BSD - size: 16841 - timestamp: 1739836305440 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-30_h10e41b3_openblas.conda - build_number: 30 - sha256: efdb82267966dff85123334ed0f7f4773ab4b093187c5495f2f92f892e2542d4 - md5: 1317dcfcde16781b5d446bfb4c81b848 + size: 16915 + timestamp: 1740087911042 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-31_h10e41b3_openblas.conda + build_number: 31 + sha256: 369586e7688b59b4f92c709b99d847d66d4d095425db327dd32ee5e6ab74697f + md5: 39b053da5e7035c6592102280aa7612a depends: - libopenblas >=0.3.29,<0.3.30.0a0 - libopenblas >=0.3.29,<1.0a0 constrains: - - libcblas =3.9.0=30*_openblas - - liblapack =3.9.0=30*_openblas - - blas =2.130=openblas - - liblapacke =3.9.0=30*_openblas + - liblapacke =3.9.0=31*_openblas + - libcblas =3.9.0=31*_openblas + - blas =2.131=openblas + - mkl <2025 + - liblapack =3.9.0=31*_openblas arch: arm64 platform: osx license: BSD-3-Clause - license_family: BSD - size: 17013 - timestamp: 1739836593880 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-28_he106b2a_openblas.conda - build_number: 28 - sha256: de293e117db53e5d78b579136509c35a5e4ad11529c05f9af83cf89be4d30de1 - md5: 4e20a1c00b4e8a984aac0f6cce59e3ac - depends: - - libblas 3.9.0 28_h59b9bed_openblas + size: 17123 + timestamp: 1740088119350 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-31_he106b2a_openblas.conda + build_number: 31 + sha256: ede8545011f5b208b151fe3e883eb4e31d495ab925ab7b9ce394edca846e0c0d + md5: abb32c727da370c481a1c206f5159ce9 + depends: + - libblas 3.9.0 31_h59b9bed_openblas constrains: - - blas =2.128=openblas - - liblapack =3.9.0=28*_openblas - - liblapacke =3.9.0=28*_openblas - - mkl <2025 + - liblapacke =3.9.0=31*_openblas + - liblapack =3.9.0=31*_openblas + - blas =2.131=openblas arch: x86_64 platform: linux license: BSD-3-Clause - license_family: BSD - size: 16539 - timestamp: 1738114043618 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-30_hab92f65_openblas.conda - build_number: 30 - sha256: 878bf1d1b75c9db13cd16486d880228c163b0fe36911f8bcece79a4fd2583b44 - md5: b3b76e1a06d0f89ca5c24935b0541510 - depends: - - libblas 3.9.0 30_h1a9f1db_openblas + size: 16796 + timestamp: 1740087984429 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-31_hab92f65_openblas.conda + build_number: 31 + sha256: f0457a1d2982f0a28bfbadaa02621677c324e88f7c8198c24fb3e3214c468dba + md5: 6b81dbae56a519f1ec2f25e0ee2f4334 + depends: + - libblas 3.9.0 31_h1a9f1db_openblas constrains: - - blas =2.130=openblas - - liblapacke =3.9.0=30*_openblas - - liblapack =3.9.0=30*_openblas + - liblapack =3.9.0=31*_openblas + - blas =2.131=openblas + - liblapacke =3.9.0=31*_openblas arch: aarch64 platform: linux license: BSD-3-Clause - license_family: BSD - size: 16777 - timestamp: 1739836311343 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-30_hb3479ef_openblas.conda - build_number: 30 - sha256: 6d5935d1df2558d84367f183050e7291ec18cdf44d55093ce5a5ca6228d7ff1b - md5: 7b50ccb7f672a8a793c64f7bfce84472 - depends: - - libblas 3.9.0 30_h10e41b3_openblas + size: 16824 + timestamp: 1740087917500 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-31_hb3479ef_openblas.conda + build_number: 31 + sha256: f237486cc9118d09d0f3ff8820280de34365f98ee7b7dc5ab923b04c7cbf25a5 + md5: 7353c2bf0e90834cb70545671996d871 + depends: + - libblas 3.9.0 31_h10e41b3_openblas constrains: - - liblapack =3.9.0=30*_openblas - - blas =2.130=openblas - - liblapacke =3.9.0=30*_openblas + - liblapacke =3.9.0=31*_openblas + - blas =2.131=openblas + - liblapack =3.9.0=31*_openblas arch: arm64 platform: osx license: BSD-3-Clause - license_family: BSD - size: 16922 - timestamp: 1739836601500 + size: 17032 + timestamp: 1740088127097 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda sha256: 776092346da87a2a23502e14d91eb0c32699c4a1522b7331537bd1c3751dcff5 md5: 5b3e1610ff8bd5443476b91d618f5b77 @@ -858,55 +851,51 @@ packages: license_family: GPL size: 463521 timestamp: 1729089357313 -- conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-28_h7ac8fdf_openblas.conda - build_number: 28 - sha256: 9530e6840690b78360946390a1d29624734a6b624f02c26631fb451592cbb8ef - md5: 069f40bfbf1dc55c83ddb07fc6a6ef8d +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-31_h7ac8fdf_openblas.conda + build_number: 31 + sha256: f583661921456e798aba10972a8abbd9d33571c655c1f66eff450edc9cbefcf3 + md5: 452b98eafe050ecff932f0ec832dd03f depends: - - libblas 3.9.0 28_h59b9bed_openblas + - libblas 3.9.0 31_h59b9bed_openblas constrains: - - libcblas =3.9.0=28*_openblas - - blas =2.128=openblas - - liblapacke =3.9.0=28*_openblas - - mkl <2025 + - libcblas =3.9.0=31*_openblas + - liblapacke =3.9.0=31*_openblas + - blas =2.131=openblas arch: x86_64 platform: linux license: BSD-3-Clause - license_family: BSD - size: 16553 - timestamp: 1738114053556 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-30_h411afd4_openblas.conda - build_number: 30 - sha256: 05720b9d62260048fa64d2ca1ee0ba0eef3496eb9b337cd277dbdbffcd976fe0 - md5: 3d5dfd69d16af6a64483a9eb17610923 - depends: - - libblas 3.9.0 30_h1a9f1db_openblas + size: 16790 + timestamp: 1740087997375 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-31_h411afd4_openblas.conda + build_number: 31 + sha256: 27613828ff6fb258b2e58802617df549f00089660ea8ab6c55c68f042c570162 + md5: 41dbff5eb805a75c120a7b7a1c744dc2 + depends: + - libblas 3.9.0 31_h1a9f1db_openblas constrains: - - libcblas =3.9.0=30*_openblas - - blas =2.130=openblas - - liblapacke =3.9.0=30*_openblas + - blas =2.131=openblas + - libcblas =3.9.0=31*_openblas + - liblapacke =3.9.0=31*_openblas arch: aarch64 platform: linux license: BSD-3-Clause - license_family: BSD - size: 16796 - timestamp: 1739836317218 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-30_hc9a63f6_openblas.conda - build_number: 30 - sha256: ad78d4fafde96659b429174fef4a0edf4c937876260c13c5f301d14779b3e36c - md5: af38e475d8538c65cb8ce0f1bfe2e573 - depends: - - libblas 3.9.0 30_h10e41b3_openblas + size: 16845 + timestamp: 1740087923843 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-31_hc9a63f6_openblas.conda + build_number: 31 + sha256: fe55b9aaf82c6c0192c3d1fcc9b8e884f97492dda9a8de5dae29334b3135fab5 + md5: ff57a55a2cbce171ef5707fb463caf19 + depends: + - libblas 3.9.0 31_h10e41b3_openblas constrains: - - libcblas =3.9.0=30*_openblas - - blas =2.130=openblas - - liblapacke =3.9.0=30*_openblas + - liblapacke =3.9.0=31*_openblas + - libcblas =3.9.0=31*_openblas + - blas =2.131=openblas arch: arm64 platform: osx license: BSD-3-Clause - license_family: BSD - size: 16939 - timestamp: 1739836608362 + size: 17033 + timestamp: 1740088134988 - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda sha256: cad52e10319ca4585bc37f0bc7cce99ec7c15dc9168e42ccb96b741b0a27db3f md5: 42d5b6a0f30d3c10cd88cb8584fda1cb @@ -960,22 +949,22 @@ packages: license_family: GPL size: 34501 timestamp: 1697358973269 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.28-pthreads_h94d23a6_1.conda - sha256: 99ba271d8a80a1af2723f2e124ffd91d850074c0389c067e6d96d72a2dbfeabe - md5: 62857b389e42b36b686331bec0922050 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.29-pthreads_h94d23a6_0.conda + sha256: cc5389ea254f111ef17a53df75e8e5209ef2ea6117e3f8aced88b5a8e51f11c4 + md5: 0a4d0252248ef9a0f88f2ba8b8a08e12 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=14 - libgfortran - libgfortran5 >=14.2.0 constrains: - - openblas >=0.3.28,<0.3.29.0a0 + - openblas >=0.3.29,<0.3.30.0a0 arch: x86_64 platform: linux license: BSD-3-Clause license_family: BSD - size: 5578513 - timestamp: 1730772671118 + size: 5919288 + timestamp: 1739825731827 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.29-pthreads_h9d3fd7e_0.conda sha256: 3a2ccf4c9098cd18a636e9b7fff947fdeb4962bcfb75c9d6fd80b8c50caf6a3c md5: a99e2bfcb1ad6362544c71281eb617e9 @@ -1311,48 +1300,48 @@ packages: license_family: APACHE size: 280830 timestamp: 1736986295869 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022005-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022105-release.conda noarch: python - sha256: 73a728cc599d38eb95ae3d924bfcce33b9572728a42a065152d6aa5c9fc4825a - md5: dcea265b305fe4b5a751e23531e55fc6 + sha256: 732a14d313918fa64ccfb5680edc7017095a1f68925102c580ef9d57b0096480 + md5: d75813fec3d9345db2bdf8b21226b54a depends: - - max-core ==25.2.0.dev2025022005 release - - max-python ==25.2.0.dev2025022005 release - - mojo-jupyter ==25.2.0.dev2025022005 release - - mblack ==25.2.0.dev2025022005 release + - max-core ==25.2.0.dev2025022105 release + - max-python ==25.2.0.dev2025022105 release + - mojo-jupyter ==25.2.0.dev2025022105 release + - mblack ==25.2.0.dev2025022105 release license: LicenseRef-Modular-Proprietary - size: 9911 - timestamp: 1740028585109 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022005-release.conda - sha256: 6d5a1dee924f2b90fee1da4fad534afce20cc5c10c8c2514215b882e6d9e3711 - md5: bab16e83b4190bf2743900ff977b23f3 + size: 9907 + timestamp: 1740115026277 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022105-release.conda + sha256: 21e95724d239c8769b45d03b80fccf10bcfd602539152e6f0242849b201bcd24 + md5: 54c8f6dde5dea407ed799d6c18e659b6 depends: - - mblack ==25.2.0.dev2025022005 release + - mblack ==25.2.0.dev2025022105 release license: LicenseRef-Modular-Proprietary - size: 243845116 - timestamp: 1740028633977 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022005-release.conda - sha256: 3651136079667dc3aabb624a5dd219f74212794e31488ed52453edb4eff8dda6 - md5: b2e5292f9128e4d3dd21b5efe9c62ec3 + size: 243982029 + timestamp: 1740115026277 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022105-release.conda + sha256: b06919e10b7ab17923ba13c90fa2c899fd414f9cc956b87655558908559839fc + md5: 7a1136495c9d286c8d300a147668bbd4 depends: - - mblack ==25.2.0.dev2025022005 release + - mblack ==25.2.0.dev2025022105 release license: LicenseRef-Modular-Proprietary - size: 246414229 - timestamp: 1740028585109 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022005-release.conda - sha256: 2b4284fa358ecea61058a847a7f4ee5922840ea8cb0e7b23289e8e9737d84693 - md5: 4f78943e45265a6e74e0bc7c63d63d8e + size: 246599121 + timestamp: 1740114929824 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022105-release.conda + sha256: ebe3a6728324923680a48c5d5a3fb1b20ab7ed6fd2adebaf78e0fc647f1f61b1 + md5: 41bfea6a454a7c7800c32b61c56bdba0 depends: - - mblack ==25.2.0.dev2025022005 release + - mblack ==25.2.0.dev2025022105 release license: LicenseRef-Modular-Proprietary - size: 212210721 - timestamp: 1740029626428 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022005-release.conda + size: 212292795 + timestamp: 1740116288307 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022105-release.conda noarch: python - sha256: 3b0c24834d3acbc000e1a10142a2a1ffd20459c7872dc4511d7366e847c46100 - md5: fa6af33b4f5899b97d6d1dc189085efe + sha256: a92c6ccda2193487bd493a76c63d97092cbf475eb1843febe459d7944c8fae8b + md5: 7c25b17e0461e19aa722475898f6aa8f depends: - - max-core ==25.2.0.dev2025022005 release + - max-core ==25.2.0.dev2025022105 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1390,14 +1379,14 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 120696393 - timestamp: 1740028633977 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022005-release.conda + size: 120766503 + timestamp: 1740115026277 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022105-release.conda noarch: python - sha256: f471037607a1ecd2f099d9f38d8bbe9bfb4b59973f5e21ecd8ba1df1dd753e18 - md5: 95bdf6cd858922b8827313101608306a + sha256: c06a253400b9de225606b3cbd61e1d2e6da42f53e1890a9cb61157156bf98f66 + md5: 90f39327488343967a427d5a39e13ac4 depends: - - max-core ==25.2.0.dev2025022005 release + - max-core ==25.2.0.dev2025022105 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1435,14 +1424,14 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 123242379 - timestamp: 1740028585109 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022005-release.conda + size: 123342667 + timestamp: 1740114929824 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022105-release.conda noarch: python - sha256: 30d7b5434f9137fe5b234c2667999e7e2be763d01c0e7481892eafe34948775b - md5: 94e16d2fde39ce744582d233defc5bf0 + sha256: 379984702419a2ca81444be4309766ebd9ac67da5d0744e6da9e70a6aa16921f + md5: b6bcc43da1e896e88d379dfae0021dd4 depends: - - max-core ==25.2.0.dev2025022005 release + - max-core ==25.2.0.dev2025022105 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1480,12 +1469,12 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 110077418 - timestamp: 1740029626428 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022005-release.conda + size: 110165681 + timestamp: 1740116288307 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022105-release.conda noarch: python - sha256: 9379e4793be7c455a88485d715e86e86166e81ac1cb616d889abdc1730c80d75 - md5: 088702bd2b036e232b196fe8de9718cb + sha256: 8e8f49bd832591239f7913882326bdf4e49b62dad55630cd973e59a273d530dd + md5: cbe46561f716976d2a8a5222b0dfd975 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -1496,20 +1485,20 @@ packages: - typing_extensions >=v4.12.2 - python license: MIT - size: 130861 - timestamp: 1740028585109 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022005-release.conda + size: 130843 + timestamp: 1740115026277 +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022105-release.conda noarch: python - sha256: f6399ee0d27607ad82e7c947b8973fd19e412ca3dab78dc94c42b9039dcb9056 - md5: fc308a44c2304836e4b1d59928455a14 + sha256: 62205186302b4460ee7f8c6e466da82d69b2a06c71958d47cbbe548cdcd3fde4 + md5: 10aa481c50998711d470cac4990d6ed5 depends: - - max-core ==25.2.0.dev2025022005 release + - max-core ==25.2.0.dev2025022105 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22990 - timestamp: 1740028585109 + size: 22980 + timestamp: 1740115026277 - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda sha256: 1895f47b7d68581a6facde5cb13ab8c2764c2e53a76bd746f8f98910dc4e08fe md5: 29097e7ea634a45cc5386b95cac6568f From 8d0c98019bb89460fa09f17ef6882974fc31188a Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Thu, 20 Feb 2025 21:37:07 -0800 Subject: [PATCH 427/509] [mojo-lang] Add `@always_inline("builtin")` support for ternary This adds support for simple ternary expressions, allowing us to handle integer shifts. MODULAR_ORIG_COMMIT_REV_ID: 99dfbd21f2334d2d56149f6c9ef450e2ddf64216 --- stdlib/src/builtin/int.mojo | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/stdlib/src/builtin/int.mojo b/stdlib/src/builtin/int.mojo index 8da7f01d26..38f3ce7bcd 100644 --- a/stdlib/src/builtin/int.mojo +++ b/stdlib/src/builtin/int.mojo @@ -724,7 +724,7 @@ struct Int( n >>= 1 return res - @always_inline("nodebug") + @always_inline("builtin") fn __lshift__(self, rhs: Int) -> Int: """Return `self << rhs`. @@ -734,12 +734,11 @@ struct Int( Returns: `self << rhs`. """ - if rhs < 0: - # this should raise an exception. - return 0 - return __mlir_op.`index.shl`(self.value, rhs.value) + return 0 if rhs < 0 else Int( + __mlir_op.`index.shl`(self.value, rhs.value) + ) - @always_inline("nodebug") + @always_inline("builtin") fn __rshift__(self, rhs: Int) -> Int: """Return `self >> rhs`. @@ -749,10 +748,9 @@ struct Int( Returns: `self >> rhs`. """ - if rhs < 0: - # this should raise an exception. - return 0 - return __mlir_op.`index.shrs`(self.value, rhs.value) + return 0 if rhs < 0 else Int( + __mlir_op.`index.shrs`(self.value, rhs.value) + ) @always_inline("builtin") fn __and__(self, rhs: Int) -> Int: From 5ee1e2e7acd34eb2c421def0eafaa45d63d009f7 Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Thu, 20 Feb 2025 22:33:27 -0800 Subject: [PATCH 428/509] [mojo-lang] Move FloatLiteralBinOp to attribute form, NFC. This moves float literals closer to the preferred form, enabling eventual removal of the ops. MODULAR_ORIG_COMMIT_REV_ID: 71846155d7260d57ff1481558c9b4c6da4c84865 --- stdlib/src/builtin/float_literal.mojo | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/stdlib/src/builtin/float_literal.mojo b/stdlib/src/builtin/float_literal.mojo index f663d9c317..1ba348987c 100644 --- a/stdlib/src/builtin/float_literal.mojo +++ b/stdlib/src/builtin/float_literal.mojo @@ -264,7 +264,7 @@ struct FloatLiteral( # Arithmetic Operators # ===------------------------------------------------------------------===# - @always_inline("nodebug") + @always_inline("builtin") fn __add__(self, rhs: FloatLiteral) -> FloatLiteral: """Add two FloatLiterals. @@ -278,7 +278,7 @@ struct FloatLiteral( oper = __mlir_attr.`#kgen` ](self.value, rhs.value) - @always_inline("nodebug") + @always_inline("builtin") fn __sub__(self, rhs: FloatLiteral) -> FloatLiteral: """Subtract two FloatLiterals. @@ -292,7 +292,7 @@ struct FloatLiteral( oper = __mlir_attr.`#kgen` ](self.value, rhs.value) - @always_inline("nodebug") + @always_inline("builtin") fn __mul__(self, rhs: FloatLiteral) -> FloatLiteral: """Multiply two FloatLiterals. @@ -306,7 +306,7 @@ struct FloatLiteral( oper = __mlir_attr.`#kgen` ](self.value, rhs.value) - @always_inline("nodebug") + @always_inline("builtin") fn __truediv__(self, rhs: FloatLiteral) -> FloatLiteral: """Divide two FloatLiterals. @@ -370,7 +370,7 @@ struct FloatLiteral( """ return rhs // self - @always_inline + @always_inline("nodebug") fn __ceildiv__(self, denominator: Self) -> Self: """Return the rounded-up result of dividing self by denominator. @@ -388,7 +388,7 @@ struct FloatLiteral( # Reversed Operators, allowing things like "1 / 2.0" to work # ===------------------------------------------------------------------===# - @always_inline("nodebug") + @always_inline("builtin") fn __radd__(self, rhs: FloatLiteral) -> FloatLiteral: """Reversed addition operator. @@ -400,7 +400,7 @@ struct FloatLiteral( """ return rhs + self - @always_inline("nodebug") + @always_inline("builtin") fn __rsub__(self, rhs: FloatLiteral) -> FloatLiteral: """Reversed subtraction operator. @@ -424,7 +424,7 @@ struct FloatLiteral( """ return rhs * self - @always_inline("nodebug") + @always_inline("builtin") fn __rtruediv__(self, rhs: FloatLiteral) -> FloatLiteral: """Reversed division. From 812b67e7cb688d44f374574f037e5de4fb54d95e Mon Sep 17 00:00:00 2001 From: Jack Clayton Date: Fri, 21 Feb 2025 12:52:24 -0500 Subject: [PATCH 429/509] [Kernels] Remove deprecation from `DeviceContext.enqueue_function` When enqueuing a function directly without compiling it first, it consistently incurs 50-500 nanoseconds of overhead per enqueue when reusing the exact same function and parameters. So this PR removes the deprecation warning for when this is the case, and fixes the few places in the codebase that were reusing the same function and parameters. ```text --------------------------------------------------- | name | met (ms) | iters | --------------------------------------------------- | enqueue_directly | 0.01784268040765961 | 65643 | | compile_first | 0.017613748867035928 | 67522 | --------------------------------------------------- ``` (0.01784268040765961 - 0.017613748867035928) * 1e6 = 229 nanoseconds MODULAR_ORIG_COMMIT_REV_ID: 19359a4ff873ae33875bd5084dcc8efc9e3951ea --- docs/changelog.md | 28 ++++++++++++++++++++++------ 1 file changed, 22 insertions(+), 6 deletions(-) diff --git a/docs/changelog.md b/docs/changelog.md index 28a9d22cec..6c340e9329 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -77,7 +77,7 @@ what we publish. ### GPU changes -- `ctx.enqueue_function(compiled_func, ...)` is deprecated: +- You can now skip compiling a GPU kernel first and then enqueueing it: ```mojo from gpu import thread_idx @@ -91,17 +91,33 @@ what we publish. ctx.enqueue_function(compiled_func, grid_dim=1, block_dim=4) ``` -You should now pass the function directly to -`DeviceContext.enqueue_function[func](...)`: +- You can now skip compiling a GPU kernel first before enqueueing it, and pass +a function directly to `ctx.enqueue_function[func](...)`: ```mojo - with DeviceContext() as ctx: - ctx.enqueue_function[func](grid_dim=1, block_dim=4) +from gpu.host import DeviceContext + +fn func(): + print("Hello from GPU") + +with DeviceContext() as ctx: + ctx.enqueue_function[func](grid_dim=1, block_dim=1) +``` + +However, if you're reusing the same function and parameters multiple times, this +incurs some overhead of around 50-500 nanoseconds per enqueue. So you can still +compile the function first and pass it to ctx.enqueue_function in this scenario: + +```mojo +var compiled_func = ctx.compile_function[func]() +# Multiple kernel launches with the same function/parameters +ctx.enqueue_function(compiled_func, grid_dim=1, block_dim=1) +ctx.enqueue_function(compiled_func, grid_dim=1, block_dim=1) ``` - The `shuffle` module has been rename to `warp` to better reflect its purpose. To uses now you will have to do - + ```mojo import gpu.warp as warp From 986fd9b67ae21cb0d50587ace0ff78c06581a56a Mon Sep 17 00:00:00 2001 From: Lukas Hermann <1734032+lsh@users.noreply.github.com> Date: Fri, 21 Feb 2025 10:35:26 -0800 Subject: [PATCH 430/509] [stdlib] Replace some uses of Buffer with NDBuffer Right now `Buffer` is a worse version of `NDBuffer` and `Span`. We should phase it out and remove `Buffer` entirely. This is the first step in that direction. MODULAR_ORIG_COMMIT_REV_ID: 1bfdbc26279b5215ce2526ca9d759eaf7a6fcce5 --- examples/reduce.mojo | 20 +++++++++++-------- .../algorithm/bench_elementwise.mojo | 4 ++-- 2 files changed, 14 insertions(+), 10 deletions(-) diff --git a/examples/reduce.mojo b/examples/reduce.mojo index 9babfd91a0..f4c6784333 100644 --- a/examples/reduce.mojo +++ b/examples/reduce.mojo @@ -20,7 +20,7 @@ from random import rand from algorithm import sum from benchmark import Unit, benchmark, keep -from buffer import Buffer +from buffer import NDBuffer from memory import UnsafePointer from python import Python @@ -35,10 +35,12 @@ alias scalar = Scalar[type] # Use the https://en.wikipedia.org/wiki/Kahan_summation_algorithm # Simple summation of the array elements -fn naive_reduce_sum[size: Int](buffer: Buffer[type, size]) raises -> scalar: +fn naive_reduce_sum[ + size: Int +](buffer: NDBuffer[type, 1, size]) raises -> scalar: var my_sum: scalar = 0 var c: scalar = 0 - for i in range(buffer.size): + for i in range(buffer.size()): var y = buffer[i] - c var t = my_sum + y c = (t - my_sum) - y @@ -46,7 +48,9 @@ fn naive_reduce_sum[size: Int](buffer: Buffer[type, size]) raises -> scalar: return my_sum -fn stdlib_reduce_sum[size: Int](array: Buffer[type, size]) raises -> scalar: +fn stdlib_reduce_sum[ + size: Int +](array: NDBuffer[type, 1, size]) raises -> scalar: var my_sum = sum(array) return my_sum @@ -61,10 +65,10 @@ def pretty_print(name: String, elements: Int, time: Float64): fn bench[ - func: fn[size: Int] (buffer: Buffer[type, size]) raises -> scalar, + func: fn[size: Int] (buffer: NDBuffer[type, 1, size]) raises -> scalar, size: Int, name: String, -](buffer: Buffer[type, size]) raises: +](buffer: NDBuffer[type, 1, size]) raises: @parameter fn runner() raises: var result = func[size](buffer) @@ -86,8 +90,8 @@ fn main() raises: rand(ptr_small, size_small) rand(ptr_large, size_large) - var buffer_small = Buffer[type, size_small](ptr_small) - var buffer_large = Buffer[type, size_large](ptr_large) + var buffer_small = NDBuffer[type, 1, size_small](ptr_small) + var buffer_large = NDBuffer[type, 1, size_large](ptr_large) bench[naive_reduce_sum, size_small, "naive"](buffer_small) bench[naive_reduce_sum, size_large, "naive"](buffer_large) diff --git a/stdlib/benchmarks/algorithm/bench_elementwise.mojo b/stdlib/benchmarks/algorithm/bench_elementwise.mojo index fefe656cf6..21d4cc80e2 100644 --- a/stdlib/benchmarks/algorithm/bench_elementwise.mojo +++ b/stdlib/benchmarks/algorithm/bench_elementwise.mojo @@ -18,7 +18,7 @@ from sys import simdwidthof from algorithm import elementwise from benchmark import Bench, BenchConfig, Bencher, BenchId -from buffer import Buffer +from buffer import NDBuffer from utils.index import Index, IndexList @@ -28,7 +28,7 @@ from utils.index import Index, IndexList # ===-----------------------------------------------------------------------===# @parameter fn bench_elementwise[n: Int](mut b: Bencher) raises: - var vector = Buffer[DType.index, n].stack_allocation() + var vector = NDBuffer[DType.index, 1, n].stack_allocation() for i in range(len(vector)): vector[i] = -1 From 4d1b8836d02b7a2e259f8827ac6c4abd6b176245 Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Fri, 21 Feb 2025 11:21:12 -0800 Subject: [PATCH 431/509] [mojo-lang] Move Float Literal <-> Int Literal conversion to comptime. This moves the intrinsic to the right comptime representation, continuing a progressive migration of infra. MODULAR_ORIG_COMMIT_REV_ID: e9d0280235dcdd351851cdd59c92ced0e28ff7f9 --- stdlib/src/builtin/float_literal.mojo | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/stdlib/src/builtin/float_literal.mojo b/stdlib/src/builtin/float_literal.mojo index 1ba348987c..ab835fde86 100644 --- a/stdlib/src/builtin/float_literal.mojo +++ b/stdlib/src/builtin/float_literal.mojo @@ -65,7 +65,7 @@ struct FloatLiteral( Args: value: The IntLiteral value. """ - self.value = __mlir_op.`kgen.int_literal.to_float_literal`(value.value) + self.value = __mlir_op.`kgen.int_to_float_literal`(value.value) alias nan = Self(__mlir_attr.`#kgen.float_literal`) alias infinity = Self(__mlir_attr.`#kgen.float_literal`) @@ -134,9 +134,7 @@ struct FloatLiteral( Returns: The value as an integer. """ - return IntLiteral( - __mlir_op.`kgen.float_literal.to_int_literal`(self.value) - ) + return IntLiteral(__mlir_op.`kgen.float_to_int_literal`(self.value)) @always_inline("nodebug") fn __int__(self) -> Int: From b2b1b6019ea490014b94fb0078d058d0285ba0b1 Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Fri, 21 Feb 2025 11:38:19 -0800 Subject: [PATCH 432/509] [mojo-stdlib] Push more `@always_inline("builtin")` into stdlib. This pretty much rounds out integer literals (covering shifts in particular) as well as address spaces. The shift/div change is safe because the implementation of literals handle the zero internally now. MODULAR_ORIG_COMMIT_REV_ID: 5b0730543a9f96e5336c2490bc4839e1e0c8bf66 --- stdlib/src/builtin/int_literal.mojo | 24 ++++++++--------------- stdlib/src/memory/pointer.mojo | 18 ++++++++--------- stdlib/test/builtin/test_int_literal.mojo | 8 ++++++++ 3 files changed, 25 insertions(+), 25 deletions(-) diff --git a/stdlib/src/builtin/int_literal.mojo b/stdlib/src/builtin/int_literal.mojo index 69511746d4..f470076122 100644 --- a/stdlib/src/builtin/int_literal.mojo +++ b/stdlib/src/builtin/int_literal.mojo @@ -248,7 +248,7 @@ struct IntLiteral( # TODO: implement __pow__ - @always_inline("nodebug") + @always_inline("builtin") fn __floordiv__(self, rhs: Self) -> Self: """Return `self // rhs`. @@ -258,16 +258,14 @@ struct IntLiteral( Returns: `self // rhs` value. """ - if rhs == Self(): - # this should raise an exception. - return Self() + # This handles the case where rhs is 0. return Self( __mlir_op.`kgen.int_literal.binop`[ oper = __mlir_attr.`#kgen` ](self.value, rhs.value) ) - @always_inline("nodebug") + @always_inline("builtin") fn __mod__(self, rhs: Self) -> Self: """Return the remainder of self divided by rhs. @@ -277,16 +275,14 @@ struct IntLiteral( Returns: The remainder of dividing self by rhs. """ - if rhs == Self(): - # this should raise an exception. - return Self() + # This handles the case where rhs is 0. return Self( __mlir_op.`kgen.int_literal.binop`[ oper = __mlir_attr.`#kgen` ](self.value, rhs.value) ) - @always_inline("nodebug") + @always_inline("builtin") fn __lshift__(self, rhs: Self) -> Self: """Return `self << rhs`. @@ -296,16 +292,14 @@ struct IntLiteral( Returns: `self << rhs`. """ - if rhs < Self(): - # this should raise an exception. - return Self() + # This handles the case where rhs is 0. return Self( __mlir_op.`kgen.int_literal.binop`[ oper = __mlir_attr.`#kgen` ](self.value, rhs.value) ) - @always_inline("nodebug") + @always_inline("builtin") fn __rshift__(self, rhs: Self) -> Self: """Return `self >> rhs`. @@ -315,9 +309,7 @@ struct IntLiteral( Returns: `self >> rhs`. """ - if rhs < Self(): - # this should raise an exception. - return Self() + # This handles the case where rhs is 0. return Self( __mlir_op.`kgen.int_literal.binop`[ oper = __mlir_attr.`#kgen` diff --git a/stdlib/src/memory/pointer.mojo b/stdlib/src/memory/pointer.mojo index 746564b490..db5c6af19c 100644 --- a/stdlib/src/memory/pointer.mojo +++ b/stdlib/src/memory/pointer.mojo @@ -44,12 +44,12 @@ struct _GPUAddressSpace(EqualityComparable): alias LOCAL = AddressSpace(5) """Local address space.""" - @always_inline("nodebug") + @always_inline("builtin") @implicit fn __init__(out self, value: Int): self._value = value - @always_inline("nodebug") + @always_inline("builtin") fn value(self) -> Int: """The integral value of the address space. @@ -58,7 +58,7 @@ struct _GPUAddressSpace(EqualityComparable): """ return self._value - @always_inline("nodebug") + @always_inline("builtin") fn __int__(self) -> Int: """The integral value of the address space. @@ -168,7 +168,7 @@ struct AddressSpace(EqualityComparable, Stringable, Writable): alias GENERIC = AddressSpace(0) """Generic address space.""" - @always_inline("nodebug") + @always_inline("builtin") @implicit fn __init__(out self, value: Int): """Initializes the address space from the underlying integral value. @@ -178,7 +178,7 @@ struct AddressSpace(EqualityComparable, Stringable, Writable): """ self._value = value - @always_inline("nodebug") + @always_inline("builtin") @implicit fn __init__(out self, value: _GPUAddressSpace): """Initializes the address space from the underlying integral value. @@ -186,9 +186,9 @@ struct AddressSpace(EqualityComparable, Stringable, Writable): Args: value: The address space value. """ - self._value = Int(value) + self._value = value._value - @always_inline("nodebug") + @always_inline("builtin") fn value(self) -> Int: """The integral value of the address space. @@ -197,7 +197,7 @@ struct AddressSpace(EqualityComparable, Stringable, Writable): """ return self._value - @always_inline("nodebug") + @always_inline("builtin") fn __int__(self) -> Int: """The integral value of the address space. @@ -206,7 +206,7 @@ struct AddressSpace(EqualityComparable, Stringable, Writable): """ return self._value - @always_inline("nodebug") + @always_inline("builtin") fn __index__(self) -> __mlir_type.index: """Convert to index. diff --git a/stdlib/test/builtin/test_int_literal.mojo b/stdlib/test/builtin/test_int_literal.mojo index 72776b4e9a..b9ccfc27fd 100644 --- a/stdlib/test/builtin/test_int_literal.mojo +++ b/stdlib/test/builtin/test_int_literal.mojo @@ -138,6 +138,13 @@ def test_comparison(): assert_false((5).__ge__(10)) +def test_shift(): + assert_equal(IntLiteral.__lshift__(1, -42), 0) # Dubious. + assert_equal(IntLiteral.__lshift__(1, 0), 1) + assert_equal(IntLiteral.__lshift__(1, 1), 2) + assert_equal(IntLiteral.__lshift__(1, 6), 64) + + def main(): test_add() test_sub() @@ -151,3 +158,4 @@ def main(): test_indexer() test_bool() test_comparison() + test_shift() From a620eb9973e71c9ccbf216aa2b9e10960fc5ec71 Mon Sep 17 00:00:00 2001 From: Lukas Hermann <1734032+lsh@users.noreply.github.com> Date: Fri, 21 Feb 2025 11:38:53 -0800 Subject: [PATCH 433/509] [stdlib] Remove `Buffer` struct in favor of `NDBuffer` (#56408) MODULAR_ORIG_COMMIT_REV_ID: 1fc5e59b55c287100bd0d88b363363fa635dc7e3 --- docs/changelog.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/changelog.md b/docs/changelog.md index 6c340e9329..5acd9146f7 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -26,6 +26,8 @@ what we publish. ### Standard library changes +- The `Buffer` struct has been removed in favor of `Span` and `NDBuffer`. + - A new `IntervalTree` data structure has been added to the standard library. This is a tree data structure that allows for efficient range queries. From b3e8f78d1187f401c72b93e801bfee0076c0dcbb Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Fri, 21 Feb 2025 12:49:38 -0800 Subject: [PATCH 434/509] [mojo-lang] Move FloatLiteralIsa+FloatLiteralConvert to attr form. This continues the migration to a comptime native representation. MODULAR_ORIG_COMMIT_REV_ID: 2a81e4114fe8387af59c5bd717f1d9c430d874a1 --- stdlib/src/builtin/float_literal.mojo | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/stdlib/src/builtin/float_literal.mojo b/stdlib/src/builtin/float_literal.mojo index ab835fde86..464cb51290 100644 --- a/stdlib/src/builtin/float_literal.mojo +++ b/stdlib/src/builtin/float_literal.mojo @@ -57,7 +57,7 @@ struct FloatLiteral( """ self.value = value - @always_inline("nodebug") + @always_inline("builtin") @implicit fn __init__(out self, value: IntLiteral): """Convert an IntLiteral to a FloatLiteral value. @@ -72,7 +72,7 @@ struct FloatLiteral( alias negative_infinity = Self(__mlir_attr.`#kgen.float_literal`) alias negative_zero = Self(__mlir_attr.`#kgen.float_literal`) - @always_inline("nodebug") + @always_inline("builtin") fn is_nan(self) -> Bool: """Return whether the FloatLiteral is nan. @@ -85,7 +85,7 @@ struct FloatLiteral( special = __mlir_attr.`#kgen` ](self.value) - @always_inline("nodebug") + @always_inline("builtin") fn is_neg_zero(self) -> Bool: """Return whether the FloatLiteral is negative zero. @@ -99,7 +99,7 @@ struct FloatLiteral( special = __mlir_attr.`#kgen` ](self.value) - @always_inline("nodebug") + @always_inline("builtin") fn _is_normal(self) -> Bool: """Return whether the FloatLiteral is a normal (i.e. not special) value. @@ -123,7 +123,7 @@ struct FloatLiteral( """ return String(Float64(self)) - @always_inline("nodebug") + @always_inline("builtin") fn __int_literal__(self) -> IntLiteral: """Casts the floating point value to an IntLiteral. If there is a fractional component, then the value is truncated towards zero. @@ -136,7 +136,7 @@ struct FloatLiteral( """ return IntLiteral(__mlir_op.`kgen.float_to_int_literal`(self.value)) - @always_inline("nodebug") + @always_inline("builtin") fn __int__(self) -> Int: """Converts the FloatLiteral value to an Int. If there is a fractional component, then the value is truncated towards zero. @@ -179,7 +179,7 @@ struct FloatLiteral( """ return self.__bool__() - @always_inline("nodebug") + @always_inline("builtin") fn __neg__(self) -> FloatLiteral: """Return the negation of the FloatLiteral value. @@ -410,7 +410,7 @@ struct FloatLiteral( """ return rhs - self - @always_inline("nodebug") + @always_inline("builtin") fn __rmul__(self, rhs: FloatLiteral) -> FloatLiteral: """Reversed multiplication operator. From 22929a9161b01239bb5518eb1d087b05b6307247 Mon Sep 17 00:00:00 2001 From: Joe Loser Date: Fri, 21 Feb 2025 16:59:11 -0500 Subject: [PATCH 435/509] [stdlib] Remove copy in `Optional.or_else()` `Optional.or_else()` returns an owned value, so take `self` by ownership to avoid a copy. MODULAR_ORIG_COMMIT_REV_ID: 2a07322fc6fd0be8f12e2d69ccb3043df44fd7c4 --- stdlib/src/collections/optional.mojo | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/stdlib/src/collections/optional.mojo b/stdlib/src/collections/optional.mojo index 3b457a94dd..96bf918da4 100644 --- a/stdlib/src/collections/optional.mojo +++ b/stdlib/src/collections/optional.mojo @@ -553,7 +553,7 @@ struct OptionalReg[T: AnyTrivialRegType](Boolable): """ return __mlir_op.`kgen.variant.get`[index = Int(0).value](self._value) - fn or_else(self, default: T) -> T: + fn or_else(owned self, owned default: T) -> T: """Return the underlying value contained in the Optional or a default value if the Optional's underlying value is not present. From c18bc7e030024b1834b5ef92020a748b310f9dda Mon Sep 17 00:00:00 2001 From: Connor Gray Date: Fri, 21 Feb 2025 16:46:14 -0600 Subject: [PATCH 436/509] [stdlib] fix: Use empty origin for `UnsafePointer.alloc()` result Fixes MSTDL-1175 MODULAR_ORIG_COMMIT_REV_ID: c4a36038fc155d97a284fd0741a710361f7f3973 --- docs/changelog.md | 5 ++ stdlib/src/builtin/type_aliases.mojo | 4 ++ stdlib/src/collections/interval.mojo | 8 ++-- stdlib/src/memory/unsafe_pointer.mojo | 7 ++- stdlib/test/memory/test_unsafepointer.mojo | 54 +++++++++++++++++++++- stdlib/test/test_utils/types.mojo | 6 ++- 6 files changed, 77 insertions(+), 7 deletions(-) diff --git a/docs/changelog.md b/docs/changelog.md index 5acd9146f7..c0b2a81b87 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -77,6 +77,11 @@ what we publish. - The `SIMD.roundeven()` method has been removed from the standard library. This functionality is now handled by the `round()` function. +- The `UnsafePointer.alloc()` method has changed to produce pointers with an + empty `Origin` parameter, instead of with `MutableAnyOrigin`. This mitigates + an issue with the any origin parameter extending the lifetime of unrelated + local variables for this common method. + ### GPU changes - You can now skip compiling a GPU kernel first and then enqueueing it: diff --git a/stdlib/src/builtin/type_aliases.mojo b/stdlib/src/builtin/type_aliases.mojo index b24a8a06ce..237441afb5 100644 --- a/stdlib/src/builtin/type_aliases.mojo +++ b/stdlib/src/builtin/type_aliases.mojo @@ -81,6 +81,10 @@ struct Origin[is_mutable: Bool]: ``` """ + alias empty = Self.cast_from[__origin_of()].result + """An empty `__origin_of()` of the given mutability. The empty origin + is guaranteed not to alias any existing origins.""" + # ===-------------------------------------------------------------------===# # Fields # ===-------------------------------------------------------------------===# diff --git a/stdlib/src/collections/interval.mojo b/stdlib/src/collections/interval.mojo index 9502d173d2..84ae4d119a 100644 --- a/stdlib/src/collections/interval.mojo +++ b/stdlib/src/collections/interval.mojo @@ -546,7 +546,7 @@ struct IntervalTree[T: IntervalElement, U: IntervalPayload]: self._len = 0 fn _left_rotate( - mut self, mut rotation_node: UnsafePointer[_IntervalNode[T, U]] + mut self, rotation_node: UnsafePointer[_IntervalNode[T, U]] ): """Performs a left rotation around node x in the red-black tree. @@ -613,7 +613,7 @@ struct IntervalTree[T: IntervalElement, U: IntervalPayload]: ) fn _right_rotate( - mut self, mut rotation_node: UnsafePointer[_IntervalNode[T, U]] + mut self, rotation_node: UnsafePointer[_IntervalNode[T, U]] ): """Performs a right rotation around node y in the red-black tree. @@ -730,8 +730,10 @@ struct IntervalTree[T: IntervalElement, U: IntervalPayload]: self._insert_fixup(new_node) fn _insert_fixup( - mut self, mut current_node: UnsafePointer[_IntervalNode[T, U]] + mut self, current_node0: UnsafePointer[_IntervalNode[T, U]] ): + var current_node = current_node0 + """Fixes up the red-black tree properties after an insertion. This method restores the red-black tree properties that may have been violated diff --git a/stdlib/src/memory/unsafe_pointer.mojo b/stdlib/src/memory/unsafe_pointer.mojo index 47065c2d62..4ed238c03f 100644 --- a/stdlib/src/memory/unsafe_pointer.mojo +++ b/stdlib/src/memory/unsafe_pointer.mojo @@ -184,7 +184,12 @@ struct UnsafePointer[ fn alloc( count: Int, ) -> UnsafePointer[ - type, address_space = AddressSpace.GENERIC, alignment=alignment + type, + address_space = AddressSpace.GENERIC, + alignment=alignment, + # This is a newly allocated pointer, so should not alias anything + # already existing. + origin = MutableOrigin.empty, ]: """Allocate an array with specified or default alignment. diff --git a/stdlib/test/memory/test_unsafepointer.mojo b/stdlib/test/memory/test_unsafepointer.mojo index a07e7f0749..4877b9a5b3 100644 --- a/stdlib/test/memory/test_unsafepointer.mojo +++ b/stdlib/test/memory/test_unsafepointer.mojo @@ -13,7 +13,12 @@ # RUN: %mojo %s from memory import AddressSpace, UnsafePointer -from test_utils import ExplicitCopyOnly, MoveCounter, ObservableMoveOnly +from test_utils import ( + ExplicitCopyOnly, + MoveCounter, + ObservableMoveOnly, + ObservableDel, +) from testing import assert_equal, assert_false, assert_not_equal, assert_true @@ -187,6 +192,51 @@ def test_unsafepointer_aligned_alloc(): assert_equal(ptr_uint64_3 % alignment_3, 0) +# Test that `UnsafePointer.alloc()` no longer artifically extends the lifetime +# of every local variable in methods where its used. +def test_unsafepointer_alloc_origin(): + # ----------------------------------------- + # Test with MutableAnyOrigin alloc() origin + # ----------------------------------------- + + var did_del_1 = False + + # Allocate pointer with MutableAnyOrgin. + var ptr_1 = UnsafePointer[Int].alloc(1).origin_cast[ + origin=MutableAnyOrigin + ]() + + var obj_1 = ObservableDel(UnsafePointer.address_of(did_del_1)) + + # Object has not been deleted, because MutableAnyOrigin is keeping it alive. + assert_false(did_del_1) + + ptr_1.free() + + # Now that `ptr` is out of scope, `obj_1` was destroyed as well. + assert_true(did_del_1) + + # ---------------------------------------- + # Test with default (empty) alloc() origin + # ---------------------------------------- + + var did_del_2 = False + + # Allocate pointer with empty origin. + var ptr_2 = UnsafePointer[Int].alloc(1) + + # Note: Set ObservableDel origin explicitly since it otherwise contains a + # MutableAnyOrigin pointer that interferes with this test. + var obj_2 = ObservableDel[__origin_of(did_del_2)]( + UnsafePointer.address_of(did_del_2) + ) + + # `obj_2` is ASAP destroyed, since `ptr_2` origin does not keep it alive. + assert_true(did_del_2) + + ptr_2.free() + + # NOTE: Tests fails due to a `UnsafePointer` size # and alignment constraint failing to be satisfied. # @@ -323,6 +373,8 @@ def main(): test_comparisons() test_unsafepointer_address_space() + test_unsafepointer_aligned_alloc() + test_unsafepointer_alloc_origin() test_indexing() test_indexing_simd() test_bool() diff --git a/stdlib/test/test_utils/types.mojo b/stdlib/test/test_utils/types.mojo index 09c6751802..f871258661 100644 --- a/stdlib/test/test_utils/types.mojo +++ b/stdlib/test/test_utils/types.mojo @@ -256,8 +256,10 @@ struct DelRecorder(ExplicitlyCopyable): @value -struct ObservableDel(CollectionElement): - var target: UnsafePointer[Bool] +struct ObservableDel[origin: MutableOrigin = MutableAnyOrigin]( + CollectionElement +): + var target: UnsafePointer[Bool, origin=origin] fn __init__(out self, *, other: Self): self = other From c53dc5a03f0db780c4fb591b74f80eb2b2fdb25b Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Fri, 21 Feb 2025 15:09:38 -0800 Subject: [PATCH 437/509] [mojo-lang] Move FloatLiteralComp over to attribute form. This moves the last (!?) instruction over to an attribute form, completelying the infra that allows us to get off of the literals-as-values-that-crash-the-compiler design. This doesn't make the move itself though. It does fix a weird extra `ceildiv` overload working on IntLiteral though. MODULAR_ORIG_COMMIT_REV_ID: 3e16ebd0e606e1692052439b0fefaf988bf41c86 --- stdlib/src/builtin/float_literal.mojo | 12 ++++++------ stdlib/src/builtin/int_literal.mojo | 2 +- stdlib/src/math/math.mojo | 6 +++--- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/stdlib/src/builtin/float_literal.mojo b/stdlib/src/builtin/float_literal.mojo index 464cb51290..ebaa5142a8 100644 --- a/stdlib/src/builtin/float_literal.mojo +++ b/stdlib/src/builtin/float_literal.mojo @@ -438,7 +438,7 @@ struct FloatLiteral( # Comparison Operators # ===------------------------------------------------------------------===# - @always_inline("nodebug") + @always_inline("builtin") fn __eq__(self, rhs: FloatLiteral) -> Bool: """Compare for equality. @@ -452,7 +452,7 @@ struct FloatLiteral( pred = __mlir_attr.`#kgen` ](self.value, rhs.value) - @always_inline("nodebug") + @always_inline("builtin") fn __ne__(self, rhs: FloatLiteral) -> Bool: """Compare for inequality. @@ -466,7 +466,7 @@ struct FloatLiteral( pred = __mlir_attr.`#kgen` ](self.value, rhs.value) - @always_inline("nodebug") + @always_inline("builtin") fn __lt__(self, rhs: FloatLiteral) -> Bool: """Less than comparison. @@ -480,7 +480,7 @@ struct FloatLiteral( pred = __mlir_attr.`#kgen` ](self.value, rhs.value) - @always_inline("nodebug") + @always_inline("builtin") fn __le__(self, rhs: FloatLiteral) -> Bool: """Less than or equal to comparison. @@ -494,7 +494,7 @@ struct FloatLiteral( pred = __mlir_attr.`#kgen` ](self.value, rhs.value) - @always_inline("nodebug") + @always_inline("builtin") fn __gt__(self, rhs: FloatLiteral) -> Bool: """Greater than comparison. @@ -508,7 +508,7 @@ struct FloatLiteral( pred = __mlir_attr.`#kgen` ](self.value, rhs.value) - @always_inline("nodebug") + @always_inline("builtin") fn __ge__(self, rhs: FloatLiteral) -> Bool: """Greater than or equal to comparison. diff --git a/stdlib/src/builtin/int_literal.mojo b/stdlib/src/builtin/int_literal.mojo index f470076122..4fb3bc010a 100644 --- a/stdlib/src/builtin/int_literal.mojo +++ b/stdlib/src/builtin/int_literal.mojo @@ -462,7 +462,7 @@ struct IntLiteral( """ return String(Int(self)) - @always_inline + @always_inline("builtin") fn __ceildiv__(self, denominator: Self) -> Self: """Return the rounded-up result of dividing self by denominator. diff --git a/stdlib/src/math/math.mojo b/stdlib/src/math/math.mojo index bdbd292d30..14d3f91e25 100644 --- a/stdlib/src/math/math.mojo +++ b/stdlib/src/math/math.mojo @@ -127,9 +127,9 @@ fn ceildiv[T: CeilDivableRaising, //](numerator: T, denominator: T) raises -> T: return numerator.__ceildiv__(denominator) -# NOTE: this overload is needed because of overload precedence; without it the -# Int overload would be preferred, and ceildiv wouldn't work on IntLiteral. -@always_inline +# NOTE: this overload is needed because IntLiteral promotes to a runtime type +# before overload resolution. +@always_inline("builtin") fn ceildiv(numerator: IntLiteral, denominator: IntLiteral) -> IntLiteral: """Return the rounded-up result of dividing numerator by denominator. From 871045ce8abb071c0d8ee5f28ac6c6feaf7d033e Mon Sep 17 00:00:00 2001 From: martinvuyk <110240700+martinvuyk@users.noreply.github.com> Date: Fri, 21 Feb 2025 19:00:19 -0600 Subject: [PATCH 438/509] [External] [stdlib] [NFC] Rename `List.bytecount()` to `byte_length()` (#54664) [External] [stdlib] [NFC] Rename `List.bytecount()` to `byte_length()` Rename `List.bytecount()` to `byte_length()` to keep consistency with all Stringlike types. Co-authored-by: martinvuyk <110240700+martinvuyk@users.noreply.github.com> Co-authored-by: Joe Loser Closes modularml/mojo#3897 MODULAR_ORIG_COMMIT_REV_ID: bcb5da166f0490eaea10f88a45cf9023e8bb8f63 --- docs/changelog.md | 3 +++ stdlib/src/collections/list.mojo | 6 +++--- stdlib/test/collections/test_list.mojo | 2 +- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/docs/changelog.md b/docs/changelog.md index c0b2a81b87..14364179fe 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -132,6 +132,9 @@ ctx.enqueue_function(compiled_func, grid_dim=1, block_dim=1) var val1 = warp.broadcast(x) ``` +- `List.bytecount()` has been renamed to `List.byte_length()` for consistency + with the String-like APIs. + ### Tooling changes #### Mojo Compiler diff --git a/stdlib/src/collections/list.mojo b/stdlib/src/collections/list.mojo index ba6b8d9760..21416c95dd 100644 --- a/stdlib/src/collections/list.mojo +++ b/stdlib/src/collections/list.mojo @@ -467,11 +467,11 @@ struct List[T: CollectionElement, hint_trivial_type: Bool = False]( # Methods # ===-------------------------------------------------------------------===# - fn bytecount(self) -> Int: - """Gets the bytecount of the List. + fn byte_length(self) -> Int: + """Gets the byte length of the List (`len(self) * sizeof[T]()`). Returns: - The bytecount of the List. + The byte length of the List (`len(self) * sizeof[T]()`). """ return len(self) * sizeof[T]() diff --git a/stdlib/test/collections/test_list.mojo b/stdlib/test/collections/test_list.mojo index 623ea34fa4..b7c3cecf7a 100644 --- a/stdlib/test/collections/test_list.mojo +++ b/stdlib/test/collections/test_list.mojo @@ -45,7 +45,7 @@ def test_list(): list.append(i) assert_equal(5, len(list)) - assert_equal(5 * sizeof[Int](), list.bytecount()) + assert_equal(5 * sizeof[Int](), list.byte_length()) assert_equal(0, list[0]) assert_equal(1, list[1]) assert_equal(2, list[2]) From 4a83bf01c3853cbedecaa2e5d90ffbd3acd1f247 Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Fri, 21 Feb 2025 19:36:35 -0800 Subject: [PATCH 439/509] [mojo-stdlib] Move code off using `Int/FloatLiteral` directly This moves some code off using `Int`/`FloatLiteral` directly when they actually want runtime types like `Int` or `Float32`. MODULAR_ORIG_COMMIT_REV_ID: 4c85e57a00afc441516814e7b3fdf28a70c74686 --- stdlib/src/builtin/float_literal.mojo | 15 +-- stdlib/src/builtin/int_literal.mojo | 14 --- stdlib/src/builtin/simd.mojo | 2 +- stdlib/src/builtin/string_literal.mojo | 25 ----- stdlib/src/sys/info.mojo | 106 +++++++++++--------- stdlib/src/utils/numerics.mojo | 8 +- stdlib/test/builtin/test_float_literal.mojo | 27 ----- stdlib/test/builtin/test_int_literal.mojo | 21 ---- 8 files changed, 64 insertions(+), 154 deletions(-) diff --git a/stdlib/src/builtin/float_literal.mojo b/stdlib/src/builtin/float_literal.mojo index ebaa5142a8..f94ecf8e7f 100644 --- a/stdlib/src/builtin/float_literal.mojo +++ b/stdlib/src/builtin/float_literal.mojo @@ -341,21 +341,8 @@ struct FloatLiteral( Returns: The remainder of dividing self by rhs. """ - return self.__divmod__(rhs)[1] - - @always_inline("nodebug") - fn __divmod__(self, rhs: Self) -> Tuple[Self, Self]: - """Return a tuple with the quotient and the remainder of self divided by rhs. - - Args: - rhs: The value to divide on. - - Returns: - A tuple with the dividend and the remainder. - """ var quotient: Self = self.__floordiv__(rhs) - var remainder: Self = self - (quotient * rhs) - return quotient, remainder + return self - (quotient * rhs) fn __rfloordiv__(self, rhs: Self) -> Self: """Returns rhs divided by self, rounded down to the nearest integer. diff --git a/stdlib/src/builtin/int_literal.mojo b/stdlib/src/builtin/int_literal.mojo index 4fb3bc010a..34be2d64d3 100644 --- a/stdlib/src/builtin/int_literal.mojo +++ b/stdlib/src/builtin/int_literal.mojo @@ -175,20 +175,6 @@ struct IntLiteral( """ return Self() - self - @always_inline("nodebug") - fn __divmod__(self, rhs: Self) -> Tuple[Self, Self]: - """Return the quotient and remainder of the division of self by rhs. - - Args: - rhs: The value to divide on. - - Returns: - The quotient and remainder of the division. - """ - var quotient: Self = self.__floordiv__(rhs) - var remainder: Self = self - (quotient * rhs) - return quotient, remainder - @always_inline("builtin") fn __invert__(self) -> Self: """Return ~self. diff --git a/stdlib/src/builtin/simd.mojo b/stdlib/src/builtin/simd.mojo index 6fda0a23a8..018d8f5f25 100644 --- a/stdlib/src/builtin/simd.mojo +++ b/stdlib/src/builtin/simd.mojo @@ -3394,7 +3394,7 @@ fn _convert_f32_to_float8_scaler[ alias FP8_EXPONENT_BIAS = FPUtils[target].exponent_bias() alias FP32_EXPONENT_BIAS = FPUtils[type].exponent_bias() alias FP32_NUM_MANTISSA_BITS = FPUtils[type].mantissa_width() - alias FP8_MAX_FLT: UInt8 = 0x7E if IS_E4M3 else 0x7B + alias FP8_MAX_FLT = UInt8(0x7E) if IS_E4M3 else UInt8(0x7B) # Extract the bits in the FP32 type var sign: UInt8 = 0x80 if FPUtils[type].get_sign(x) else 0x00 diff --git a/stdlib/src/builtin/string_literal.mojo b/stdlib/src/builtin/string_literal.mojo index 15c9d40764..aabd2b7678 100644 --- a/stdlib/src/builtin/string_literal.mojo +++ b/stdlib/src/builtin/string_literal.mojo @@ -189,31 +189,6 @@ struct StringLiteral( """ self = self + rhs - @always_inline("nodebug") - fn __mul__(self, n: IntLiteral) -> StringLiteral: - """Concatenates the string literal `n` times. Can only be evaluated at - compile time using the `alias` keyword, which will write the result into - The binary. - - Args: - n : The number of times to concatenate the string literal. - - Returns: - The string concatenated `n` times. - - Examples: - - ```mojo - alias concat = "mojo" * 3 - print(concat) # mojomojomojo - ``` - . - """ - var concat = "" - for _ in range(n): - concat += self - return concat - fn __mul__(self, n: Int) -> String: """Concatenates the string `n` times. diff --git a/stdlib/src/sys/info.mojo b/stdlib/src/sys/info.mojo index 460f5754b2..b44eec3099 100644 --- a/stdlib/src/sys/info.mojo +++ b/stdlib/src/sys/info.mojo @@ -561,7 +561,7 @@ fn is_64bit[target: __mlir_type.`!kgen.target` = _current_target()]() -> Bool: @always_inline("nodebug") fn simdbitwidth[ target: __mlir_type.`!kgen.target` = _current_target() -]() -> IntLiteral: +]() -> Int: """Returns the vector size (in bits) of the specified target. Parameters: @@ -570,18 +570,20 @@ fn simdbitwidth[ Returns: The vector size (in bits) of the specified target. """ - return __mlir_attr[ - `#kgen.param.expr : !kgen.int_literal`, - ] + return Int( + __mlir_attr[ + `#kgen.param.expr : !kgen.int_literal`, + ] + ) @always_inline("nodebug") fn simdbytewidth[ target: __mlir_type.`!kgen.target` = _current_target() -]() -> IntLiteral: +]() -> Int: """Returns the vector size (in bytes) of the specified target. Parameters: @@ -597,7 +599,7 @@ fn simdbytewidth[ @always_inline("nodebug") fn sizeof[ type: AnyType, target: __mlir_type.`!kgen.target` = _current_target() -]() -> IntLiteral: +]() -> Int: """Returns the size of (in bytes) of the type. Parameters: @@ -630,19 +632,21 @@ fn sizeof[ AnyType, `> : !kgen.type`, ] - return __mlir_attr[ - `#kgen.param.expr : !kgen.type,`, - target, - `> : !kgen.int_literal`, - ] + return Int( + __mlir_attr[ + `#kgen.param.expr : !kgen.type,`, + target, + `> : !kgen.int_literal`, + ] + ) @always_inline("nodebug") fn sizeof[ type: DType, target: __mlir_type.`!kgen.target` = _current_target() -]() -> IntLiteral: +]() -> Int: """Returns the size of (in bytes) of the dtype. Parameters: @@ -652,21 +656,23 @@ fn sizeof[ Returns: The size of the dtype in bytes. """ - return __mlir_attr[ - `#kgen.param.expr`, - `> : !kgen.type,`, - target, - `> : !kgen.int_literal`, - ] + return Int( + __mlir_attr[ + `#kgen.param.expr`, + `> : !kgen.type,`, + target, + `> : !kgen.int_literal`, + ] + ) @always_inline("nodebug") fn alignof[ type: AnyType, target: __mlir_type.`!kgen.target` = _current_target() -]() -> IntLiteral: +]() -> Int: """Returns the align of (in bytes) of the type. Parameters: @@ -683,19 +689,21 @@ fn alignof[ AnyType, `> : !kgen.type`, ] - return __mlir_attr[ - `#kgen.param.expr : !kgen.type,`, - target, - `> : !kgen.int_literal`, - ] + return Int( + __mlir_attr[ + `#kgen.param.expr : !kgen.type,`, + target, + `> : !kgen.int_literal`, + ] + ) @always_inline("nodebug") fn alignof[ type: DType, target: __mlir_type.`!kgen.target` = _current_target() -]() -> IntLiteral: +]() -> Int: """Returns the align of (in bytes) of the dtype. Parameters: @@ -705,22 +713,24 @@ fn alignof[ Returns: The alignment of the dtype in bytes. """ - return __mlir_attr[ - `#kgen.param.expr`, - `> : !kgen.type,`, - target, - `> : !kgen.int_literal`, - ] + return Int( + __mlir_attr[ + `#kgen.param.expr`, + `> : !kgen.type,`, + target, + `> : !kgen.int_literal`, + ] + ) @always_inline("nodebug") fn bitwidthof[ type: AnyTrivialRegType, target: __mlir_type.`!kgen.target` = _current_target(), -]() -> IntLiteral: +]() -> Int: """Returns the size of (in bits) of the type. Parameters: @@ -737,7 +747,7 @@ fn bitwidthof[ @always_inline("nodebug") fn bitwidthof[ type: DType, target: __mlir_type.`!kgen.target` = _current_target() -]() -> IntLiteral: +]() -> Int: """Returns the size of (in bits) of the dtype. Parameters: @@ -756,7 +766,7 @@ fn bitwidthof[ fn simdwidthof[ type: AnyTrivialRegType, target: __mlir_type.`!kgen.target` = _current_target(), -]() -> IntLiteral: +]() -> Int: """Returns the vector size of the type on the host system. Parameters: @@ -772,7 +782,7 @@ fn simdwidthof[ @always_inline("nodebug") fn simdwidthof[ type: DType, target: __mlir_type.`!kgen.target` = _current_target() -]() -> IntLiteral: +]() -> Int: """Returns the vector size of the type on the host system. Parameters: diff --git a/stdlib/src/utils/numerics.mojo b/stdlib/src/utils/numerics.mojo index 83fce9c590..5490eaea86 100644 --- a/stdlib/src/utils/numerics.mojo +++ b/stdlib/src/utils/numerics.mojo @@ -59,7 +59,7 @@ struct FPUtils[ @staticmethod @always_inline("nodebug") - fn mantissa_width() -> IntLiteral: + fn mantissa_width() -> Int: """Returns the mantissa width of a floating point type. Returns: @@ -83,7 +83,7 @@ struct FPUtils[ @staticmethod @always_inline("nodebug") - fn max_exponent() -> IntLiteral: + fn max_exponent() -> Int: """Returns the max exponent of a floating point type without accounting for inf representations. This is not the maximum representable exponent, which is generally equal to @@ -106,7 +106,7 @@ struct FPUtils[ @staticmethod @always_inline("nodebug") - fn exponent_width() -> IntLiteral: + fn exponent_width() -> Int: """Returns the exponent width of a floating point type. Returns: @@ -136,7 +136,7 @@ struct FPUtils[ @staticmethod @always_inline - fn exponent_bias() -> IntLiteral: + fn exponent_bias() -> Int: """Returns the exponent bias of a floating point type. Returns: diff --git a/stdlib/test/builtin/test_float_literal.mojo b/stdlib/test/builtin/test_float_literal.mojo index 817eb639c1..c90950a1df 100644 --- a/stdlib/test/builtin/test_float_literal.mojo +++ b/stdlib/test/builtin/test_float_literal.mojo @@ -83,32 +83,6 @@ def test_mod(): assert_equal(FloatLiteral.__mod__(6, 2.5), 1.0) -def test_div_mod(): - alias t0 = FloatLiteral.__divmod__(4.5, 2.0) - alias q0 = t0[0] - alias r0 = t0[1] - assert_equal(q0, 2.0) - assert_equal(r0, 0.5) - - alias t1 = FloatLiteral.__divmod__(-4.5, 2.0) - alias q1 = t1[0] - alias r1 = t1[1] - assert_equal(q1, -3.0) - assert_equal(r1, 1.5) - - alias t2 = FloatLiteral.__divmod__(4.5, -2.0) - alias q2 = t2[0] - alias r2 = t2[1] - assert_equal(q2, -3.0) - assert_equal(r2, -1.5) - - alias t3 = FloatLiteral.__divmod__(6.0, 2.5) - alias q3 = t3[0] - alias r3 = t3[1] - assert_equal(q3, 2.0) - assert_equal(r3, 1.0) - - def test_int_conversion(): assert_equal(Int(-4.0), -4) assert_equal(Int(-4.5), -4) @@ -249,7 +223,6 @@ def main(): test_trunc() test_division() test_mod() - test_div_mod() test_int_conversion() test_bool() test_is_special_value() diff --git a/stdlib/test/builtin/test_int_literal.mojo b/stdlib/test/builtin/test_int_literal.mojo index b9ccfc27fd..87ee610509 100644 --- a/stdlib/test/builtin/test_int_literal.mojo +++ b/stdlib/test/builtin/test_int_literal.mojo @@ -79,26 +79,6 @@ def test_indexer(): assert_true(88 == index(88)) -def test_divmod(): - alias t0 = IntLiteral.__divmod__(2, 2) - alias q0 = t0[0] - alias r0 = t0[1] - assert_equal(q0, 1) - assert_equal(r0, 0) - - alias t1 = IntLiteral.__divmod__(2, 3) - alias q1 = t1[0] - alias r1 = t1[1] - assert_equal(q1, 0) - assert_equal(r1, 2) - - alias t2 = IntLiteral.__divmod__(99, -2) - alias q2 = t2[0] - alias r2 = t2[1] - assert_equal(q2, -50) - assert_equal(r2, -1) - - def test_bool(): assert_true(IntLiteral.__bool__(5)) assert_false(IntLiteral.__bool__(0)) @@ -153,7 +133,6 @@ def main(): test_trunc() test_floordiv() test_mod() - test_divmod() test_abs() test_indexer() test_bool() From 2c1780e245ecbd4b2544d64a27822e46c4ae5bfa Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Fri, 21 Feb 2025 20:49:33 -0800 Subject: [PATCH 440/509] [mojo-lang] Move sizeof/alignof to return index instead of intliteral. These don't return literals, they return values. Using index as a result is more correct and a more tight bound on how they're used. MODULAR_ORIG_COMMIT_REV_ID: 1b4227f33980b5f98d56a6c349828a621221b693 --- stdlib/src/sys/info.mojo | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/stdlib/src/sys/info.mojo b/stdlib/src/sys/info.mojo index b44eec3099..79d13b199e 100644 --- a/stdlib/src/sys/info.mojo +++ b/stdlib/src/sys/info.mojo @@ -575,7 +575,7 @@ fn simdbitwidth[ `#kgen.param.expr : !kgen.int_literal`, + `> : index`, ] ) @@ -638,7 +638,7 @@ fn sizeof[ mlir_type, `> : !kgen.type,`, target, - `> : !kgen.int_literal`, + `> : index`, ] ) @@ -664,7 +664,7 @@ fn sizeof[ `>`, `> : !kgen.type,`, target, - `> : !kgen.int_literal`, + `> : index`, ] ) @@ -695,7 +695,7 @@ fn alignof[ +mlir_type, `> : !kgen.type,`, target, - `> : !kgen.int_literal`, + `> : index`, ] ) @@ -721,7 +721,7 @@ fn alignof[ `>`, `> : !kgen.type,`, target, - `> : !kgen.int_literal`, + `> : index`, ] ) From 0094d1c437b3216add081d9666c3fea427f0fe71 Mon Sep 17 00:00:00 2001 From: modularbot Date: Sat, 22 Feb 2025 07:12:25 +0000 Subject: [PATCH 441/509] Update lockfiles to point to latest nightly version: 25.2.0.dev2025022205 --- examples/life/magic.lock | 241 +++++++++++++++++----------------- examples/magic.lock | 166 +++++++++++------------ examples/operators/magic.lock | 166 +++++++++++------------ examples/testing/magic.lock | 166 +++++++++++------------ magic.lock | 166 +++++++++++------------ 5 files changed, 451 insertions(+), 454 deletions(-) diff --git a/examples/life/magic.lock b/examples/life/magic.lock index c2d9f706cf..37cc954e6c 100644 --- a/examples/life/magic.lock +++ b/examples/life/magic.lock @@ -31,7 +31,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/gettext-0.23.1-h5888daf_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gettext-tools-0.23.1-h5888daf_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.13-h59595ed_1003.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-10.2.0-h4bba637_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-10.3.0-h76408a6_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/jack-1.9.22-h7c63dc7_2.conda @@ -40,7 +40,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lame-3.100-h166bdaf_1003.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libasprintf-0.23.1-h8e693c7_0.conda @@ -70,7 +70,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libglx-1.7.0-ha4b6fd6_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h77fa898_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgpg-error-1.51-hbd13f7d_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h4ce23a2_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h4ce23a2_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-31_h7ac8fdf_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda @@ -103,11 +103,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.6-h8d12d68_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.10.0-h5888daf_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022105-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022105-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022105-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022105-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022205-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022205-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022205-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/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda @@ -186,7 +186,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gettext-0.23.1-h5ad3122_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gettext-tools-0.23.1-h5ad3122_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/graphite2-1.3.13-h2f0025b_1003.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/harfbuzz-10.2.0-h785c1aa_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/harfbuzz-10.3.0-hb5e3f52_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/jack-1.9.22-h5c6c0ed_2.conda @@ -195,7 +195,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/keyutils-1.6.1-h4e544f5_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/krb5-1.21.3-h50a48e9_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lame-3.100-h4e544f5_1003.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.0.0-h4de3ea5_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h18dbdb1_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libasprintf-0.23.1-h5e0f5ae_0.conda @@ -225,7 +225,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libglx-1.7.0-hd24410f_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgpg-error-1.51-h05609ea_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libiconv-1.18-hc99b53d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libiconv-1.18-hc99b53d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libjpeg-turbo-3.0.0-h31becfc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-31_h411afd4_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.4-h86ecc28_0.conda @@ -258,11 +258,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.6-h2e0c361_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.10.0-h5ad3122_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022105-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022105-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022105-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022105-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022205-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022205-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022205-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/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-ha32ae93_3.conda @@ -337,7 +337,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gettext-0.23.1-h3dcc1bd_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gettext-tools-0.23.1-h493aca8_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/graphite2-1.3.13-hebf3989_1003.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/harfbuzz-10.2.0-ha0dd535_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/harfbuzz-10.3.0-hb72c1af_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda @@ -362,7 +362,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libglib-2.82.2-hdff4504_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.18-hfe07756_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.18-hfe07756_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libintl-0.23.1-h493aca8_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libintl-devel-0.23.1-h493aca8_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.0.0-hb547adb_1.conda @@ -384,11 +384,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.5.0-h2471fea_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022105-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022105-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022105-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022105-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022205-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022205-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022205-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/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda @@ -1113,9 +1113,9 @@ packages: license_family: LGPL size: 79774 timestamp: 1711634444608 -- conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-10.2.0-h4bba637_0.conda - sha256: 94426eca8c60b43f57beb3338d3298dda09452c7a42314bbbb4ebfa552542a84 - md5: 9e38e86167e8b1ea0094747d12944ce4 +- conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-10.3.0-h76408a6_0.conda + sha256: fbccddfbbfaf139102e5513a2a053010338809348ade18bbf16cb6b92a53d294 + md5: 0a06f278e5d9242057673b1358a75e8f depends: - __glibc >=2.17,<3.0.a0 - cairo >=1.18.2,<2.0a0 @@ -1130,12 +1130,11 @@ packages: arch: x86_64 platform: linux license: MIT - license_family: MIT - size: 1646987 - timestamp: 1736702906600 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/harfbuzz-10.2.0-h785c1aa_0.conda - sha256: fc89d8ef86311ca8d187b69cc4c5da3c140c38e638011951e951330830bebb99 - md5: d7acbb0500e1d73a29546bc476a4db0c + size: 1671633 + timestamp: 1740154398990 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/harfbuzz-10.3.0-hb5e3f52_0.conda + sha256: 687fbb17d8303b956ff917247e41ad8c864ed029b2349c0409cc905e11d9257d + md5: 4575cba227f2e4b5d0f23c9adc390f83 depends: - cairo >=1.18.2,<2.0a0 - freetype >=2.12.1,<3.0a0 @@ -1149,12 +1148,11 @@ packages: arch: aarch64 platform: linux license: MIT - license_family: MIT - size: 1699707 - timestamp: 1736705741483 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/harfbuzz-10.2.0-ha0dd535_0.conda - sha256: e9d148870adbe8efd9913fb036461d337609359b5d4474d0963d8ebe6b9789b2 - md5: 30377b8ff7d4e8a2c08be6957999c100 + size: 1727792 + timestamp: 1740157913844 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/harfbuzz-10.3.0-hb72c1af_0.conda + sha256: eb9cc0c8e61a9ce1236fdfa5d426ae31ffd9fd1d6b154e2e7318694eaed6c24e + md5: d77e5f42ec2a35950710f57868885683 depends: - __osx >=11.0 - cairo >=1.18.2,<2.0a0 @@ -1168,9 +1166,8 @@ packages: arch: arm64 platform: osx license: MIT - license_family: MIT - size: 1473375 - timestamp: 1736703265901 + size: 1378165 + timestamp: 1740155007314 - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda sha256: 71e750d509f5fa3421087ba88ef9a7b9be11c53174af3aa4d06aff4c18b38e8e md5: 8b189310083baabfb622af68fd9d3ae3 @@ -1372,9 +1369,9 @@ packages: license_family: LGPL size: 528805 timestamp: 1664996399305 -- conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_3.conda - sha256: f754b85b9c4528e09749fea56466e3a4f38439dd70b34f0f9bebff9b31055cf1 - md5: 5d5839b8df5d356d701bdd3450af6955 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_4.conda + sha256: db73f38155d901a610b2320525b9dd3b31e4949215c870685fd92ea61b5ce472 + md5: 01f8d123c96816249efd255a31ad7712 depends: - __glibc >=2.17,<3.0.a0 constrains: @@ -1382,18 +1379,18 @@ packages: arch: x86_64 platform: linux license: GPL-3.0-only - size: 671098 - timestamp: 1740102063271 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_3.conda - sha256: af2c66237bc0c2bfc0f34cb5e15687d8959e7c1cfab4c6d1840b8ba585dc5a83 - md5: f68c5f63e086066266e3033cc3946f27 + size: 671240 + timestamp: 1740155456116 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_4.conda + sha256: 016832a70b0aa97e1c4e47e23c00b0c34def679de25146736df353199f684f0d + md5: 80c9ad5e05e91bb6c0967af3880c9742 constrains: - binutils_impl_linux-aarch64 2.43 arch: aarch64 platform: linux license: GPL-3.0-only - size: 699220 - timestamp: 1740102274585 + size: 699058 + timestamp: 1740155620594 - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 sha256: cb55f36dcd898203927133280ae1dc643368af041a48bcf7c026acb7c47b0c12 md5: 76bbff344f0134279f225174e9064c8f @@ -2368,37 +2365,37 @@ packages: license_family: GPL size: 277785 timestamp: 1731920977846 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h4ce23a2_0.conda - sha256: 659a83c0c184a30336ca512d670a7db56bfb5e289caa9ee641e6f78fd2326463 - md5: 0743bcd51fc4e6e0367e0aaf41e9bebc +- conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h4ce23a2_1.conda + sha256: 18a4afe14f731bfb9cf388659994263904d20111e42f841e9eea1bb6f91f4ab4 + md5: e796ff8ddc598affdf7c173d6145f087 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 arch: x86_64 platform: linux license: LGPL-2.1-only - size: 713745 - timestamp: 1739866934640 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libiconv-1.18-hc99b53d_0.conda - sha256: c1d8421dbdf98d1ff4631130278ac95c9fe204630ca536c8eefd2be3912c89c0 - md5: 2d681a513e1720d149061745e6574120 + size: 713084 + timestamp: 1740128065462 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libiconv-1.18-hc99b53d_1.conda + sha256: 3db14977036fe1f511a6dbecacbeff3fdb58482c5c0cf87a2ea3232f5a540836 + md5: 81541d85a45fbf4d0a29346176f1f21c depends: - libgcc >=13 arch: aarch64 platform: linux license: LGPL-2.1-only - size: 713799 - timestamp: 1739869335682 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.18-hfe07756_0.conda - sha256: a7e7b90bcf2680e447aa9a17ccbebb07089d4b63d5ab53eb1cd8ddeafb4701c3 - md5: b0e471d5d174dbbb37ff4d91647de3c0 + size: 718600 + timestamp: 1740130562607 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.18-hfe07756_1.conda + sha256: d30780d24bf3a30b4f116fca74dedb4199b34d500fe6c52cced5f8cc1e926f03 + md5: 450e6bdc0c7d986acf7b8443dce87111 depends: - __osx >=11.0 arch: arm64 platform: osx license: LGPL-2.1-only - size: 679461 - timestamp: 1739867323460 + size: 681804 + timestamp: 1740128227484 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libintl-0.23.1-h493aca8_0.conda sha256: 30d2a8a37070615a61777ce9317968b54c2197d04e9c6c2eea6cdb46e47f94dc md5: 7b8faf3b5fc52744bda99c4cd1d6438d @@ -3485,48 +3482,48 @@ packages: license_family: BSD size: 184953 timestamp: 1733740984533 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022105-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022205-release.conda noarch: python - sha256: 732a14d313918fa64ccfb5680edc7017095a1f68925102c580ef9d57b0096480 - md5: d75813fec3d9345db2bdf8b21226b54a + sha256: a4b60cd65edc61629b10617ad28376f6fafec207e9df35dccd97081d47bd7287 + md5: 89ff35bb811c04bb8d4f69a3e176b445 depends: - - max-core ==25.2.0.dev2025022105 release - - max-python ==25.2.0.dev2025022105 release - - mojo-jupyter ==25.2.0.dev2025022105 release - - mblack ==25.2.0.dev2025022105 release + - max-core ==25.2.0.dev2025022205 release + - max-python ==25.2.0.dev2025022205 release + - mojo-jupyter ==25.2.0.dev2025022205 release + - mblack ==25.2.0.dev2025022205 release license: LicenseRef-Modular-Proprietary - size: 9907 - timestamp: 1740115026277 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022105-release.conda - sha256: 21e95724d239c8769b45d03b80fccf10bcfd602539152e6f0242849b201bcd24 - md5: 54c8f6dde5dea407ed799d6c18e659b6 + size: 9889 + timestamp: 1740201380167 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022205-release.conda + sha256: 14616fa561632a7858f1b43fee2830a08bd6adcbb9876714c24b72687f316495 + md5: d5bad6719888ce70742d2b7c45a87b36 depends: - - mblack ==25.2.0.dev2025022105 release + - mblack ==25.2.0.dev2025022205 release license: LicenseRef-Modular-Proprietary - size: 243982029 - timestamp: 1740115026277 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022105-release.conda - sha256: b06919e10b7ab17923ba13c90fa2c899fd414f9cc956b87655558908559839fc - md5: 7a1136495c9d286c8d300a147668bbd4 + size: 243956720 + timestamp: 1740201380048 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022205-release.conda + sha256: 5086b2bd4348d9453a926eba0a2c903fb7e90377bf83c532f17c7bf00234f060 + md5: 9cad83acf5ab35e1410d5c37d480d7b0 depends: - - mblack ==25.2.0.dev2025022105 release + - mblack ==25.2.0.dev2025022205 release license: LicenseRef-Modular-Proprietary - size: 246599121 - timestamp: 1740114929824 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022105-release.conda - sha256: ebe3a6728324923680a48c5d5a3fb1b20ab7ed6fd2adebaf78e0fc647f1f61b1 - md5: 41bfea6a454a7c7800c32b61c56bdba0 + size: 246750593 + timestamp: 1740201380167 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022205-release.conda + sha256: d3efc1acdcc133d3d8d8c9da8f3a8eb8a4d667992b32f5fa605fdfcc460d304d + md5: 94e7b104cf83e183e4c30a9881b910a7 depends: - - mblack ==25.2.0.dev2025022105 release + - mblack ==25.2.0.dev2025022205 release license: LicenseRef-Modular-Proprietary - size: 212292795 - timestamp: 1740116288307 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022105-release.conda + size: 212393465 + timestamp: 1740202848149 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022205-release.conda noarch: python - sha256: a92c6ccda2193487bd493a76c63d97092cbf475eb1843febe459d7944c8fae8b - md5: 7c25b17e0461e19aa722475898f6aa8f + sha256: 73d71fade273fd0c50d230d2055d9f848f48cbccb5e129d47cc66eb370303121 + md5: b9ff7e746c60964a770a4a949df6edf9 depends: - - max-core ==25.2.0.dev2025022105 release + - max-core ==25.2.0.dev2025022205 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -3564,14 +3561,14 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 120766503 - timestamp: 1740115026277 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022105-release.conda + size: 120694172 + timestamp: 1740201380048 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022205-release.conda noarch: python - sha256: c06a253400b9de225606b3cbd61e1d2e6da42f53e1890a9cb61157156bf98f66 - md5: 90f39327488343967a427d5a39e13ac4 + sha256: f0fb6d2d56ecf06adbd0c66ea5ef79b8aba3c7f2dfb50b1acde92a39cf83c743 + md5: 5b4662a666c9a91e34c375cdeb328a0e depends: - - max-core ==25.2.0.dev2025022105 release + - max-core ==25.2.0.dev2025022205 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -3609,14 +3606,14 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 123342667 - timestamp: 1740114929824 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022105-release.conda + size: 123479562 + timestamp: 1740201380167 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022205-release.conda noarch: python - sha256: 379984702419a2ca81444be4309766ebd9ac67da5d0744e6da9e70a6aa16921f - md5: b6bcc43da1e896e88d379dfae0021dd4 + sha256: d9229f708c042db724a0cc56b30d2b81d7a1ac86e3f28e541a9a05da0ea4a3e8 + md5: d2519e42d7c3a5aa6d2b5f597ba34c0c depends: - - max-core ==25.2.0.dev2025022105 release + - max-core ==25.2.0.dev2025022205 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -3654,12 +3651,12 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 110165681 - timestamp: 1740116288307 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022105-release.conda + size: 110154228 + timestamp: 1740202848149 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022205-release.conda noarch: python - sha256: 8e8f49bd832591239f7913882326bdf4e49b62dad55630cd973e59a273d530dd - md5: cbe46561f716976d2a8a5222b0dfd975 + sha256: da6599faebf67d43c63618d55a0ebcfcba058ca80aaee80eccccf0c874ffaf14 + md5: 74aa857f5a6f1d4e004ef2d39b416f43 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -3670,20 +3667,20 @@ packages: - typing_extensions >=v4.12.2 - python license: MIT - size: 130843 - timestamp: 1740115026277 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022105-release.conda + size: 130846 + timestamp: 1740201380167 +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022205-release.conda noarch: python - sha256: 62205186302b4460ee7f8c6e466da82d69b2a06c71958d47cbbe548cdcd3fde4 - md5: 10aa481c50998711d470cac4990d6ed5 + sha256: 9444c0b8c574e6efdee03d24fdd4340518313a796caf08f536a5798b9c7a6123 + md5: 7be2f23091dd2443ba395018d3005fcb depends: - - max-core ==25.2.0.dev2025022105 release + - max-core ==25.2.0.dev2025022205 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22980 - timestamp: 1740115026277 + size: 22983 + timestamp: 1740201380167 - conda: https://conda.anaconda.org/conda-forge/linux-64/mpg123-1.32.9-hc50e24c_0.conda sha256: 39c4700fb3fbe403a77d8cc27352fa72ba744db487559d5d44bf8411bb4ea200 md5: c7f302fd11eeb0987a6a5e1f3aed6a21 diff --git a/examples/magic.lock b/examples/magic.lock index 586ef5ed58..907c3c3e89 100644 --- a/examples/magic.lock +++ b/examples/magic.lock @@ -17,7 +17,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-31_h59b9bed_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-31_he106b2a_openblas.conda @@ -42,11 +42,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022105-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022105-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022105-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022105-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022205-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022205-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022205-release.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-h2d0b736_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py311h64a7726_0.conda @@ -82,7 +82,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/keyutils-1.6.1-h4e544f5_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/krb5-1.21.3-h50a48e9_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h18dbdb1_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-31_h1a9f1db_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-31_hab92f65_openblas.conda @@ -107,11 +107,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022105-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022105-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022105-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022105-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022205-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022205-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022205-release.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-ha32ae93_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py311h69ead2a_0.conda @@ -163,11 +163,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.1-h3f77e49_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022105-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022105-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022105-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022105-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022205-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022205-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022205-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py311h7125741_0.conda @@ -411,9 +411,9 @@ packages: license_family: MIT size: 1155530 timestamp: 1719463474401 -- conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_3.conda - sha256: f754b85b9c4528e09749fea56466e3a4f38439dd70b34f0f9bebff9b31055cf1 - md5: 5d5839b8df5d356d701bdd3450af6955 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_4.conda + sha256: db73f38155d901a610b2320525b9dd3b31e4949215c870685fd92ea61b5ce472 + md5: 01f8d123c96816249efd255a31ad7712 depends: - __glibc >=2.17,<3.0.a0 constrains: @@ -421,18 +421,18 @@ packages: arch: x86_64 platform: linux license: GPL-3.0-only - size: 671098 - timestamp: 1740102063271 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_3.conda - sha256: af2c66237bc0c2bfc0f34cb5e15687d8959e7c1cfab4c6d1840b8ba585dc5a83 - md5: f68c5f63e086066266e3033cc3946f27 + size: 671240 + timestamp: 1740155456116 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_4.conda + sha256: 016832a70b0aa97e1c4e47e23c00b0c34def679de25146736df353199f684f0d + md5: 80c9ad5e05e91bb6c0967af3880c9742 constrains: - binutils_impl_linux-aarch64 2.43 arch: aarch64 platform: linux license: GPL-3.0-only - size: 699220 - timestamp: 1740102274585 + size: 699058 + timestamp: 1740155620594 - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda sha256: 143a586aa67d50622ef703de57b9d43f44945836d6568e0e7aa174bd8c45e0d4 md5: 488f260ccda0afaf08acb286db439c2f @@ -1288,48 +1288,48 @@ packages: license_family: APACHE size: 280830 timestamp: 1736986295869 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022105-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022205-release.conda noarch: python - sha256: 732a14d313918fa64ccfb5680edc7017095a1f68925102c580ef9d57b0096480 - md5: d75813fec3d9345db2bdf8b21226b54a + sha256: a4b60cd65edc61629b10617ad28376f6fafec207e9df35dccd97081d47bd7287 + md5: 89ff35bb811c04bb8d4f69a3e176b445 depends: - - max-core ==25.2.0.dev2025022105 release - - max-python ==25.2.0.dev2025022105 release - - mojo-jupyter ==25.2.0.dev2025022105 release - - mblack ==25.2.0.dev2025022105 release + - max-core ==25.2.0.dev2025022205 release + - max-python ==25.2.0.dev2025022205 release + - mojo-jupyter ==25.2.0.dev2025022205 release + - mblack ==25.2.0.dev2025022205 release license: LicenseRef-Modular-Proprietary - size: 9907 - timestamp: 1740115026277 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022105-release.conda - sha256: 21e95724d239c8769b45d03b80fccf10bcfd602539152e6f0242849b201bcd24 - md5: 54c8f6dde5dea407ed799d6c18e659b6 + size: 9889 + timestamp: 1740201380167 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022205-release.conda + sha256: 14616fa561632a7858f1b43fee2830a08bd6adcbb9876714c24b72687f316495 + md5: d5bad6719888ce70742d2b7c45a87b36 depends: - - mblack ==25.2.0.dev2025022105 release + - mblack ==25.2.0.dev2025022205 release license: LicenseRef-Modular-Proprietary - size: 243982029 - timestamp: 1740115026277 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022105-release.conda - sha256: b06919e10b7ab17923ba13c90fa2c899fd414f9cc956b87655558908559839fc - md5: 7a1136495c9d286c8d300a147668bbd4 + size: 243956720 + timestamp: 1740201380048 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022205-release.conda + sha256: 5086b2bd4348d9453a926eba0a2c903fb7e90377bf83c532f17c7bf00234f060 + md5: 9cad83acf5ab35e1410d5c37d480d7b0 depends: - - mblack ==25.2.0.dev2025022105 release + - mblack ==25.2.0.dev2025022205 release license: LicenseRef-Modular-Proprietary - size: 246599121 - timestamp: 1740114929824 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022105-release.conda - sha256: ebe3a6728324923680a48c5d5a3fb1b20ab7ed6fd2adebaf78e0fc647f1f61b1 - md5: 41bfea6a454a7c7800c32b61c56bdba0 + size: 246750593 + timestamp: 1740201380167 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022205-release.conda + sha256: d3efc1acdcc133d3d8d8c9da8f3a8eb8a4d667992b32f5fa605fdfcc460d304d + md5: 94e7b104cf83e183e4c30a9881b910a7 depends: - - mblack ==25.2.0.dev2025022105 release + - mblack ==25.2.0.dev2025022205 release license: LicenseRef-Modular-Proprietary - size: 212292795 - timestamp: 1740116288307 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022105-release.conda + size: 212393465 + timestamp: 1740202848149 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022205-release.conda noarch: python - sha256: a92c6ccda2193487bd493a76c63d97092cbf475eb1843febe459d7944c8fae8b - md5: 7c25b17e0461e19aa722475898f6aa8f + sha256: 73d71fade273fd0c50d230d2055d9f848f48cbccb5e129d47cc66eb370303121 + md5: b9ff7e746c60964a770a4a949df6edf9 depends: - - max-core ==25.2.0.dev2025022105 release + - max-core ==25.2.0.dev2025022205 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1367,14 +1367,14 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 120766503 - timestamp: 1740115026277 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022105-release.conda + size: 120694172 + timestamp: 1740201380048 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022205-release.conda noarch: python - sha256: c06a253400b9de225606b3cbd61e1d2e6da42f53e1890a9cb61157156bf98f66 - md5: 90f39327488343967a427d5a39e13ac4 + sha256: f0fb6d2d56ecf06adbd0c66ea5ef79b8aba3c7f2dfb50b1acde92a39cf83c743 + md5: 5b4662a666c9a91e34c375cdeb328a0e depends: - - max-core ==25.2.0.dev2025022105 release + - max-core ==25.2.0.dev2025022205 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1412,14 +1412,14 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 123342667 - timestamp: 1740114929824 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022105-release.conda + size: 123479562 + timestamp: 1740201380167 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022205-release.conda noarch: python - sha256: 379984702419a2ca81444be4309766ebd9ac67da5d0744e6da9e70a6aa16921f - md5: b6bcc43da1e896e88d379dfae0021dd4 + sha256: d9229f708c042db724a0cc56b30d2b81d7a1ac86e3f28e541a9a05da0ea4a3e8 + md5: d2519e42d7c3a5aa6d2b5f597ba34c0c depends: - - max-core ==25.2.0.dev2025022105 release + - max-core ==25.2.0.dev2025022205 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1457,12 +1457,12 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 110165681 - timestamp: 1740116288307 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022105-release.conda + size: 110154228 + timestamp: 1740202848149 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022205-release.conda noarch: python - sha256: 8e8f49bd832591239f7913882326bdf4e49b62dad55630cd973e59a273d530dd - md5: cbe46561f716976d2a8a5222b0dfd975 + sha256: da6599faebf67d43c63618d55a0ebcfcba058ca80aaee80eccccf0c874ffaf14 + md5: 74aa857f5a6f1d4e004ef2d39b416f43 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -1473,20 +1473,20 @@ packages: - typing_extensions >=v4.12.2 - python license: MIT - size: 130843 - timestamp: 1740115026277 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022105-release.conda + size: 130846 + timestamp: 1740201380167 +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022205-release.conda noarch: python - sha256: 62205186302b4460ee7f8c6e466da82d69b2a06c71958d47cbbe548cdcd3fde4 - md5: 10aa481c50998711d470cac4990d6ed5 + sha256: 9444c0b8c574e6efdee03d24fdd4340518313a796caf08f536a5798b9c7a6123 + md5: 7be2f23091dd2443ba395018d3005fcb depends: - - max-core ==25.2.0.dev2025022105 release + - max-core ==25.2.0.dev2025022205 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22980 - timestamp: 1740115026277 + size: 22983 + timestamp: 1740201380167 - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda sha256: 1895f47b7d68581a6facde5cb13ab8c2764c2e53a76bd746f8f98910dc4e08fe md5: 29097e7ea634a45cc5386b95cac6568f diff --git a/examples/operators/magic.lock b/examples/operators/magic.lock index 5d3944411f..2e46e07f29 100644 --- a/examples/operators/magic.lock +++ b/examples/operators/magic.lock @@ -17,7 +17,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-31_h59b9bed_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-31_he106b2a_openblas.conda @@ -42,11 +42,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022105-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022105-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022105-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022105-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022205-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022205-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022205-release.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-h2d0b736_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda @@ -82,7 +82,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/keyutils-1.6.1-h4e544f5_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/krb5-1.21.3-h50a48e9_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h18dbdb1_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-31_h1a9f1db_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-31_hab92f65_openblas.conda @@ -107,11 +107,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022105-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022105-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022105-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022105-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022205-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022205-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022205-release.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-ha32ae93_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda @@ -163,11 +163,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.1-h3f77e49_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022105-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022105-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022105-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022105-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022205-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022205-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022205-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda @@ -411,9 +411,9 @@ packages: license_family: MIT size: 1155530 timestamp: 1719463474401 -- conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_3.conda - sha256: f754b85b9c4528e09749fea56466e3a4f38439dd70b34f0f9bebff9b31055cf1 - md5: 5d5839b8df5d356d701bdd3450af6955 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_4.conda + sha256: db73f38155d901a610b2320525b9dd3b31e4949215c870685fd92ea61b5ce472 + md5: 01f8d123c96816249efd255a31ad7712 depends: - __glibc >=2.17,<3.0.a0 constrains: @@ -421,18 +421,18 @@ packages: arch: x86_64 platform: linux license: GPL-3.0-only - size: 671098 - timestamp: 1740102063271 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_3.conda - sha256: af2c66237bc0c2bfc0f34cb5e15687d8959e7c1cfab4c6d1840b8ba585dc5a83 - md5: f68c5f63e086066266e3033cc3946f27 + size: 671240 + timestamp: 1740155456116 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_4.conda + sha256: 016832a70b0aa97e1c4e47e23c00b0c34def679de25146736df353199f684f0d + md5: 80c9ad5e05e91bb6c0967af3880c9742 constrains: - binutils_impl_linux-aarch64 2.43 arch: aarch64 platform: linux license: GPL-3.0-only - size: 699220 - timestamp: 1740102274585 + size: 699058 + timestamp: 1740155620594 - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda sha256: 143a586aa67d50622ef703de57b9d43f44945836d6568e0e7aa174bd8c45e0d4 md5: 488f260ccda0afaf08acb286db439c2f @@ -1288,48 +1288,48 @@ packages: license_family: APACHE size: 280830 timestamp: 1736986295869 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022105-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022205-release.conda noarch: python - sha256: 732a14d313918fa64ccfb5680edc7017095a1f68925102c580ef9d57b0096480 - md5: d75813fec3d9345db2bdf8b21226b54a + sha256: a4b60cd65edc61629b10617ad28376f6fafec207e9df35dccd97081d47bd7287 + md5: 89ff35bb811c04bb8d4f69a3e176b445 depends: - - max-core ==25.2.0.dev2025022105 release - - max-python ==25.2.0.dev2025022105 release - - mojo-jupyter ==25.2.0.dev2025022105 release - - mblack ==25.2.0.dev2025022105 release + - max-core ==25.2.0.dev2025022205 release + - max-python ==25.2.0.dev2025022205 release + - mojo-jupyter ==25.2.0.dev2025022205 release + - mblack ==25.2.0.dev2025022205 release license: LicenseRef-Modular-Proprietary - size: 9907 - timestamp: 1740115026277 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022105-release.conda - sha256: 21e95724d239c8769b45d03b80fccf10bcfd602539152e6f0242849b201bcd24 - md5: 54c8f6dde5dea407ed799d6c18e659b6 + size: 9889 + timestamp: 1740201380167 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022205-release.conda + sha256: 14616fa561632a7858f1b43fee2830a08bd6adcbb9876714c24b72687f316495 + md5: d5bad6719888ce70742d2b7c45a87b36 depends: - - mblack ==25.2.0.dev2025022105 release + - mblack ==25.2.0.dev2025022205 release license: LicenseRef-Modular-Proprietary - size: 243982029 - timestamp: 1740115026277 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022105-release.conda - sha256: b06919e10b7ab17923ba13c90fa2c899fd414f9cc956b87655558908559839fc - md5: 7a1136495c9d286c8d300a147668bbd4 + size: 243956720 + timestamp: 1740201380048 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022205-release.conda + sha256: 5086b2bd4348d9453a926eba0a2c903fb7e90377bf83c532f17c7bf00234f060 + md5: 9cad83acf5ab35e1410d5c37d480d7b0 depends: - - mblack ==25.2.0.dev2025022105 release + - mblack ==25.2.0.dev2025022205 release license: LicenseRef-Modular-Proprietary - size: 246599121 - timestamp: 1740114929824 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022105-release.conda - sha256: ebe3a6728324923680a48c5d5a3fb1b20ab7ed6fd2adebaf78e0fc647f1f61b1 - md5: 41bfea6a454a7c7800c32b61c56bdba0 + size: 246750593 + timestamp: 1740201380167 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022205-release.conda + sha256: d3efc1acdcc133d3d8d8c9da8f3a8eb8a4d667992b32f5fa605fdfcc460d304d + md5: 94e7b104cf83e183e4c30a9881b910a7 depends: - - mblack ==25.2.0.dev2025022105 release + - mblack ==25.2.0.dev2025022205 release license: LicenseRef-Modular-Proprietary - size: 212292795 - timestamp: 1740116288307 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022105-release.conda + size: 212393465 + timestamp: 1740202848149 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022205-release.conda noarch: python - sha256: a92c6ccda2193487bd493a76c63d97092cbf475eb1843febe459d7944c8fae8b - md5: 7c25b17e0461e19aa722475898f6aa8f + sha256: 73d71fade273fd0c50d230d2055d9f848f48cbccb5e129d47cc66eb370303121 + md5: b9ff7e746c60964a770a4a949df6edf9 depends: - - max-core ==25.2.0.dev2025022105 release + - max-core ==25.2.0.dev2025022205 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1367,14 +1367,14 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 120766503 - timestamp: 1740115026277 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022105-release.conda + size: 120694172 + timestamp: 1740201380048 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022205-release.conda noarch: python - sha256: c06a253400b9de225606b3cbd61e1d2e6da42f53e1890a9cb61157156bf98f66 - md5: 90f39327488343967a427d5a39e13ac4 + sha256: f0fb6d2d56ecf06adbd0c66ea5ef79b8aba3c7f2dfb50b1acde92a39cf83c743 + md5: 5b4662a666c9a91e34c375cdeb328a0e depends: - - max-core ==25.2.0.dev2025022105 release + - max-core ==25.2.0.dev2025022205 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1412,14 +1412,14 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 123342667 - timestamp: 1740114929824 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022105-release.conda + size: 123479562 + timestamp: 1740201380167 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022205-release.conda noarch: python - sha256: 379984702419a2ca81444be4309766ebd9ac67da5d0744e6da9e70a6aa16921f - md5: b6bcc43da1e896e88d379dfae0021dd4 + sha256: d9229f708c042db724a0cc56b30d2b81d7a1ac86e3f28e541a9a05da0ea4a3e8 + md5: d2519e42d7c3a5aa6d2b5f597ba34c0c depends: - - max-core ==25.2.0.dev2025022105 release + - max-core ==25.2.0.dev2025022205 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1457,12 +1457,12 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 110165681 - timestamp: 1740116288307 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022105-release.conda + size: 110154228 + timestamp: 1740202848149 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022205-release.conda noarch: python - sha256: 8e8f49bd832591239f7913882326bdf4e49b62dad55630cd973e59a273d530dd - md5: cbe46561f716976d2a8a5222b0dfd975 + sha256: da6599faebf67d43c63618d55a0ebcfcba058ca80aaee80eccccf0c874ffaf14 + md5: 74aa857f5a6f1d4e004ef2d39b416f43 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -1473,20 +1473,20 @@ packages: - typing_extensions >=v4.12.2 - python license: MIT - size: 130843 - timestamp: 1740115026277 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022105-release.conda + size: 130846 + timestamp: 1740201380167 +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022205-release.conda noarch: python - sha256: 62205186302b4460ee7f8c6e466da82d69b2a06c71958d47cbbe548cdcd3fde4 - md5: 10aa481c50998711d470cac4990d6ed5 + sha256: 9444c0b8c574e6efdee03d24fdd4340518313a796caf08f536a5798b9c7a6123 + md5: 7be2f23091dd2443ba395018d3005fcb depends: - - max-core ==25.2.0.dev2025022105 release + - max-core ==25.2.0.dev2025022205 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22980 - timestamp: 1740115026277 + size: 22983 + timestamp: 1740201380167 - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda sha256: 1895f47b7d68581a6facde5cb13ab8c2764c2e53a76bd746f8f98910dc4e08fe md5: 29097e7ea634a45cc5386b95cac6568f diff --git a/examples/testing/magic.lock b/examples/testing/magic.lock index 5d3944411f..2e46e07f29 100644 --- a/examples/testing/magic.lock +++ b/examples/testing/magic.lock @@ -17,7 +17,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-31_h59b9bed_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-31_he106b2a_openblas.conda @@ -42,11 +42,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022105-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022105-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022105-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022105-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022205-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022205-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022205-release.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-h2d0b736_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda @@ -82,7 +82,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/keyutils-1.6.1-h4e544f5_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/krb5-1.21.3-h50a48e9_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h18dbdb1_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-31_h1a9f1db_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-31_hab92f65_openblas.conda @@ -107,11 +107,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022105-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022105-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022105-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022105-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022205-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022205-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022205-release.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-ha32ae93_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda @@ -163,11 +163,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.1-h3f77e49_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022105-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022105-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022105-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022105-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022205-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022205-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022205-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda @@ -411,9 +411,9 @@ packages: license_family: MIT size: 1155530 timestamp: 1719463474401 -- conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_3.conda - sha256: f754b85b9c4528e09749fea56466e3a4f38439dd70b34f0f9bebff9b31055cf1 - md5: 5d5839b8df5d356d701bdd3450af6955 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_4.conda + sha256: db73f38155d901a610b2320525b9dd3b31e4949215c870685fd92ea61b5ce472 + md5: 01f8d123c96816249efd255a31ad7712 depends: - __glibc >=2.17,<3.0.a0 constrains: @@ -421,18 +421,18 @@ packages: arch: x86_64 platform: linux license: GPL-3.0-only - size: 671098 - timestamp: 1740102063271 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_3.conda - sha256: af2c66237bc0c2bfc0f34cb5e15687d8959e7c1cfab4c6d1840b8ba585dc5a83 - md5: f68c5f63e086066266e3033cc3946f27 + size: 671240 + timestamp: 1740155456116 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_4.conda + sha256: 016832a70b0aa97e1c4e47e23c00b0c34def679de25146736df353199f684f0d + md5: 80c9ad5e05e91bb6c0967af3880c9742 constrains: - binutils_impl_linux-aarch64 2.43 arch: aarch64 platform: linux license: GPL-3.0-only - size: 699220 - timestamp: 1740102274585 + size: 699058 + timestamp: 1740155620594 - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda sha256: 143a586aa67d50622ef703de57b9d43f44945836d6568e0e7aa174bd8c45e0d4 md5: 488f260ccda0afaf08acb286db439c2f @@ -1288,48 +1288,48 @@ packages: license_family: APACHE size: 280830 timestamp: 1736986295869 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022105-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022205-release.conda noarch: python - sha256: 732a14d313918fa64ccfb5680edc7017095a1f68925102c580ef9d57b0096480 - md5: d75813fec3d9345db2bdf8b21226b54a + sha256: a4b60cd65edc61629b10617ad28376f6fafec207e9df35dccd97081d47bd7287 + md5: 89ff35bb811c04bb8d4f69a3e176b445 depends: - - max-core ==25.2.0.dev2025022105 release - - max-python ==25.2.0.dev2025022105 release - - mojo-jupyter ==25.2.0.dev2025022105 release - - mblack ==25.2.0.dev2025022105 release + - max-core ==25.2.0.dev2025022205 release + - max-python ==25.2.0.dev2025022205 release + - mojo-jupyter ==25.2.0.dev2025022205 release + - mblack ==25.2.0.dev2025022205 release license: LicenseRef-Modular-Proprietary - size: 9907 - timestamp: 1740115026277 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022105-release.conda - sha256: 21e95724d239c8769b45d03b80fccf10bcfd602539152e6f0242849b201bcd24 - md5: 54c8f6dde5dea407ed799d6c18e659b6 + size: 9889 + timestamp: 1740201380167 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022205-release.conda + sha256: 14616fa561632a7858f1b43fee2830a08bd6adcbb9876714c24b72687f316495 + md5: d5bad6719888ce70742d2b7c45a87b36 depends: - - mblack ==25.2.0.dev2025022105 release + - mblack ==25.2.0.dev2025022205 release license: LicenseRef-Modular-Proprietary - size: 243982029 - timestamp: 1740115026277 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022105-release.conda - sha256: b06919e10b7ab17923ba13c90fa2c899fd414f9cc956b87655558908559839fc - md5: 7a1136495c9d286c8d300a147668bbd4 + size: 243956720 + timestamp: 1740201380048 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022205-release.conda + sha256: 5086b2bd4348d9453a926eba0a2c903fb7e90377bf83c532f17c7bf00234f060 + md5: 9cad83acf5ab35e1410d5c37d480d7b0 depends: - - mblack ==25.2.0.dev2025022105 release + - mblack ==25.2.0.dev2025022205 release license: LicenseRef-Modular-Proprietary - size: 246599121 - timestamp: 1740114929824 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022105-release.conda - sha256: ebe3a6728324923680a48c5d5a3fb1b20ab7ed6fd2adebaf78e0fc647f1f61b1 - md5: 41bfea6a454a7c7800c32b61c56bdba0 + size: 246750593 + timestamp: 1740201380167 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022205-release.conda + sha256: d3efc1acdcc133d3d8d8c9da8f3a8eb8a4d667992b32f5fa605fdfcc460d304d + md5: 94e7b104cf83e183e4c30a9881b910a7 depends: - - mblack ==25.2.0.dev2025022105 release + - mblack ==25.2.0.dev2025022205 release license: LicenseRef-Modular-Proprietary - size: 212292795 - timestamp: 1740116288307 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022105-release.conda + size: 212393465 + timestamp: 1740202848149 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022205-release.conda noarch: python - sha256: a92c6ccda2193487bd493a76c63d97092cbf475eb1843febe459d7944c8fae8b - md5: 7c25b17e0461e19aa722475898f6aa8f + sha256: 73d71fade273fd0c50d230d2055d9f848f48cbccb5e129d47cc66eb370303121 + md5: b9ff7e746c60964a770a4a949df6edf9 depends: - - max-core ==25.2.0.dev2025022105 release + - max-core ==25.2.0.dev2025022205 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1367,14 +1367,14 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 120766503 - timestamp: 1740115026277 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022105-release.conda + size: 120694172 + timestamp: 1740201380048 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022205-release.conda noarch: python - sha256: c06a253400b9de225606b3cbd61e1d2e6da42f53e1890a9cb61157156bf98f66 - md5: 90f39327488343967a427d5a39e13ac4 + sha256: f0fb6d2d56ecf06adbd0c66ea5ef79b8aba3c7f2dfb50b1acde92a39cf83c743 + md5: 5b4662a666c9a91e34c375cdeb328a0e depends: - - max-core ==25.2.0.dev2025022105 release + - max-core ==25.2.0.dev2025022205 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1412,14 +1412,14 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 123342667 - timestamp: 1740114929824 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022105-release.conda + size: 123479562 + timestamp: 1740201380167 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022205-release.conda noarch: python - sha256: 379984702419a2ca81444be4309766ebd9ac67da5d0744e6da9e70a6aa16921f - md5: b6bcc43da1e896e88d379dfae0021dd4 + sha256: d9229f708c042db724a0cc56b30d2b81d7a1ac86e3f28e541a9a05da0ea4a3e8 + md5: d2519e42d7c3a5aa6d2b5f597ba34c0c depends: - - max-core ==25.2.0.dev2025022105 release + - max-core ==25.2.0.dev2025022205 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1457,12 +1457,12 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 110165681 - timestamp: 1740116288307 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022105-release.conda + size: 110154228 + timestamp: 1740202848149 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022205-release.conda noarch: python - sha256: 8e8f49bd832591239f7913882326bdf4e49b62dad55630cd973e59a273d530dd - md5: cbe46561f716976d2a8a5222b0dfd975 + sha256: da6599faebf67d43c63618d55a0ebcfcba058ca80aaee80eccccf0c874ffaf14 + md5: 74aa857f5a6f1d4e004ef2d39b416f43 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -1473,20 +1473,20 @@ packages: - typing_extensions >=v4.12.2 - python license: MIT - size: 130843 - timestamp: 1740115026277 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022105-release.conda + size: 130846 + timestamp: 1740201380167 +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022205-release.conda noarch: python - sha256: 62205186302b4460ee7f8c6e466da82d69b2a06c71958d47cbbe548cdcd3fde4 - md5: 10aa481c50998711d470cac4990d6ed5 + sha256: 9444c0b8c574e6efdee03d24fdd4340518313a796caf08f536a5798b9c7a6123 + md5: 7be2f23091dd2443ba395018d3005fcb depends: - - max-core ==25.2.0.dev2025022105 release + - max-core ==25.2.0.dev2025022205 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22980 - timestamp: 1740115026277 + size: 22983 + timestamp: 1740201380167 - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda sha256: 1895f47b7d68581a6facde5cb13ab8c2764c2e53a76bd746f8f98910dc4e08fe md5: 29097e7ea634a45cc5386b95cac6568f diff --git a/magic.lock b/magic.lock index 2303a5de76..408e479333 100644 --- a/magic.lock +++ b/magic.lock @@ -17,7 +17,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-31_h59b9bed_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-31_he106b2a_openblas.conda @@ -43,11 +43,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/lit-19.1.7-pyhd8ed1ab_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022105-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022105-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022105-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022105-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022205-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022205-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022205-release.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-h2d0b736_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda @@ -83,7 +83,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/keyutils-1.6.1-h4e544f5_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/krb5-1.21.3-h50a48e9_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h18dbdb1_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-31_h1a9f1db_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-31_hab92f65_openblas.conda @@ -109,11 +109,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/lit-19.1.7-pyhd8ed1ab_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022105-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022105-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022105-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022105-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022205-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022205-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022205-release.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-ha32ae93_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda @@ -166,11 +166,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/lit-19.1.7-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022105-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022105-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022105-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022105-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022205-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022205-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022205-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda @@ -414,9 +414,9 @@ packages: license_family: MIT size: 1155530 timestamp: 1719463474401 -- conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_3.conda - sha256: f754b85b9c4528e09749fea56466e3a4f38439dd70b34f0f9bebff9b31055cf1 - md5: 5d5839b8df5d356d701bdd3450af6955 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_4.conda + sha256: db73f38155d901a610b2320525b9dd3b31e4949215c870685fd92ea61b5ce472 + md5: 01f8d123c96816249efd255a31ad7712 depends: - __glibc >=2.17,<3.0.a0 constrains: @@ -424,18 +424,18 @@ packages: arch: x86_64 platform: linux license: GPL-3.0-only - size: 671098 - timestamp: 1740102063271 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_3.conda - sha256: af2c66237bc0c2bfc0f34cb5e15687d8959e7c1cfab4c6d1840b8ba585dc5a83 - md5: f68c5f63e086066266e3033cc3946f27 + size: 671240 + timestamp: 1740155456116 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_4.conda + sha256: 016832a70b0aa97e1c4e47e23c00b0c34def679de25146736df353199f684f0d + md5: 80c9ad5e05e91bb6c0967af3880c9742 constrains: - binutils_impl_linux-aarch64 2.43 arch: aarch64 platform: linux license: GPL-3.0-only - size: 699220 - timestamp: 1740102274585 + size: 699058 + timestamp: 1740155620594 - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda sha256: 143a586aa67d50622ef703de57b9d43f44945836d6568e0e7aa174bd8c45e0d4 md5: 488f260ccda0afaf08acb286db439c2f @@ -1300,48 +1300,48 @@ packages: license_family: APACHE size: 280830 timestamp: 1736986295869 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022105-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022205-release.conda noarch: python - sha256: 732a14d313918fa64ccfb5680edc7017095a1f68925102c580ef9d57b0096480 - md5: d75813fec3d9345db2bdf8b21226b54a + sha256: a4b60cd65edc61629b10617ad28376f6fafec207e9df35dccd97081d47bd7287 + md5: 89ff35bb811c04bb8d4f69a3e176b445 depends: - - max-core ==25.2.0.dev2025022105 release - - max-python ==25.2.0.dev2025022105 release - - mojo-jupyter ==25.2.0.dev2025022105 release - - mblack ==25.2.0.dev2025022105 release + - max-core ==25.2.0.dev2025022205 release + - max-python ==25.2.0.dev2025022205 release + - mojo-jupyter ==25.2.0.dev2025022205 release + - mblack ==25.2.0.dev2025022205 release license: LicenseRef-Modular-Proprietary - size: 9907 - timestamp: 1740115026277 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022105-release.conda - sha256: 21e95724d239c8769b45d03b80fccf10bcfd602539152e6f0242849b201bcd24 - md5: 54c8f6dde5dea407ed799d6c18e659b6 + size: 9889 + timestamp: 1740201380167 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022205-release.conda + sha256: 14616fa561632a7858f1b43fee2830a08bd6adcbb9876714c24b72687f316495 + md5: d5bad6719888ce70742d2b7c45a87b36 depends: - - mblack ==25.2.0.dev2025022105 release + - mblack ==25.2.0.dev2025022205 release license: LicenseRef-Modular-Proprietary - size: 243982029 - timestamp: 1740115026277 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022105-release.conda - sha256: b06919e10b7ab17923ba13c90fa2c899fd414f9cc956b87655558908559839fc - md5: 7a1136495c9d286c8d300a147668bbd4 + size: 243956720 + timestamp: 1740201380048 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022205-release.conda + sha256: 5086b2bd4348d9453a926eba0a2c903fb7e90377bf83c532f17c7bf00234f060 + md5: 9cad83acf5ab35e1410d5c37d480d7b0 depends: - - mblack ==25.2.0.dev2025022105 release + - mblack ==25.2.0.dev2025022205 release license: LicenseRef-Modular-Proprietary - size: 246599121 - timestamp: 1740114929824 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022105-release.conda - sha256: ebe3a6728324923680a48c5d5a3fb1b20ab7ed6fd2adebaf78e0fc647f1f61b1 - md5: 41bfea6a454a7c7800c32b61c56bdba0 + size: 246750593 + timestamp: 1740201380167 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022205-release.conda + sha256: d3efc1acdcc133d3d8d8c9da8f3a8eb8a4d667992b32f5fa605fdfcc460d304d + md5: 94e7b104cf83e183e4c30a9881b910a7 depends: - - mblack ==25.2.0.dev2025022105 release + - mblack ==25.2.0.dev2025022205 release license: LicenseRef-Modular-Proprietary - size: 212292795 - timestamp: 1740116288307 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022105-release.conda + size: 212393465 + timestamp: 1740202848149 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022205-release.conda noarch: python - sha256: a92c6ccda2193487bd493a76c63d97092cbf475eb1843febe459d7944c8fae8b - md5: 7c25b17e0461e19aa722475898f6aa8f + sha256: 73d71fade273fd0c50d230d2055d9f848f48cbccb5e129d47cc66eb370303121 + md5: b9ff7e746c60964a770a4a949df6edf9 depends: - - max-core ==25.2.0.dev2025022105 release + - max-core ==25.2.0.dev2025022205 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1379,14 +1379,14 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 120766503 - timestamp: 1740115026277 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022105-release.conda + size: 120694172 + timestamp: 1740201380048 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022205-release.conda noarch: python - sha256: c06a253400b9de225606b3cbd61e1d2e6da42f53e1890a9cb61157156bf98f66 - md5: 90f39327488343967a427d5a39e13ac4 + sha256: f0fb6d2d56ecf06adbd0c66ea5ef79b8aba3c7f2dfb50b1acde92a39cf83c743 + md5: 5b4662a666c9a91e34c375cdeb328a0e depends: - - max-core ==25.2.0.dev2025022105 release + - max-core ==25.2.0.dev2025022205 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1424,14 +1424,14 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 123342667 - timestamp: 1740114929824 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022105-release.conda + size: 123479562 + timestamp: 1740201380167 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022205-release.conda noarch: python - sha256: 379984702419a2ca81444be4309766ebd9ac67da5d0744e6da9e70a6aa16921f - md5: b6bcc43da1e896e88d379dfae0021dd4 + sha256: d9229f708c042db724a0cc56b30d2b81d7a1ac86e3f28e541a9a05da0ea4a3e8 + md5: d2519e42d7c3a5aa6d2b5f597ba34c0c depends: - - max-core ==25.2.0.dev2025022105 release + - max-core ==25.2.0.dev2025022205 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1469,12 +1469,12 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 110165681 - timestamp: 1740116288307 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022105-release.conda + size: 110154228 + timestamp: 1740202848149 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022205-release.conda noarch: python - sha256: 8e8f49bd832591239f7913882326bdf4e49b62dad55630cd973e59a273d530dd - md5: cbe46561f716976d2a8a5222b0dfd975 + sha256: da6599faebf67d43c63618d55a0ebcfcba058ca80aaee80eccccf0c874ffaf14 + md5: 74aa857f5a6f1d4e004ef2d39b416f43 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -1485,20 +1485,20 @@ packages: - typing_extensions >=v4.12.2 - python license: MIT - size: 130843 - timestamp: 1740115026277 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022105-release.conda + size: 130846 + timestamp: 1740201380167 +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022205-release.conda noarch: python - sha256: 62205186302b4460ee7f8c6e466da82d69b2a06c71958d47cbbe548cdcd3fde4 - md5: 10aa481c50998711d470cac4990d6ed5 + sha256: 9444c0b8c574e6efdee03d24fdd4340518313a796caf08f536a5798b9c7a6123 + md5: 7be2f23091dd2443ba395018d3005fcb depends: - - max-core ==25.2.0.dev2025022105 release + - max-core ==25.2.0.dev2025022205 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22980 - timestamp: 1740115026277 + size: 22983 + timestamp: 1740201380167 - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda sha256: 1895f47b7d68581a6facde5cb13ab8c2764c2e53a76bd746f8f98910dc4e08fe md5: 29097e7ea634a45cc5386b95cac6568f From 910e5700b2296b20139c0ba862f4e60b08bad6eb Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Fri, 21 Feb 2025 21:13:35 -0800 Subject: [PATCH 442/509] [mojo-stdlib] Remove abs/ceil/trunc from FloatLiteral, abs from IntLiteral. This removes support for the `__abs__` (and ceil and trunc) methods from float literals, and abs from `IntLiteral`. We don't have anything that particularly needs the absolute value of a literal to stay in the infinite precision domain - we can just promote to Int/Float64. If we need this in the future, we can add this back, but until then it is nice to not have the complexity. MODULAR_ORIG_COMMIT_REV_ID: afc67b82811002583d170a1e0507faf220193e81 --- stdlib/src/builtin/float_literal.mojo | 56 ------------------- stdlib/src/builtin/int_literal.mojo | 12 ----- stdlib/src/builtin/math.mojo | 30 ----------- stdlib/test/builtin/test_float_literal.mojo | 59 +++------------------ stdlib/test/builtin/test_int_literal.mojo | 6 +-- 5 files changed, 9 insertions(+), 154 deletions(-) diff --git a/stdlib/src/builtin/float_literal.mojo b/stdlib/src/builtin/float_literal.mojo index f94ecf8e7f..777baa62a0 100644 --- a/stdlib/src/builtin/float_literal.mojo +++ b/stdlib/src/builtin/float_literal.mojo @@ -15,8 +15,6 @@ These are Mojo built-ins, so you don't need to import them. """ -from math import Ceilable, CeilDivable, Floorable, Truncable - # ===-----------------------------------------------------------------------===# # FloatLiteral # ===-----------------------------------------------------------------------===# @@ -26,15 +24,10 @@ from math import Ceilable, CeilDivable, Floorable, Truncable @nonmaterializable(Float64) @register_passable("trivial") struct FloatLiteral( - Absable, - Ceilable, - CeilDivable, Comparable, - Floorable, ImplicitlyBoolable, Intable, Stringable, - Truncable, Floatable, ): """Mojo floating point literal type.""" @@ -188,17 +181,6 @@ struct FloatLiteral( """ return self * Self(-1) - @always_inline("nodebug") - fn __abs__(self) -> Self: - """Return the absolute value of the FloatLiteral. - - Returns: - The absolute value. - """ - if self > 0: - return self - return -self - @always_inline("nodebug") fn __floor__(self) -> Self: """Return the floor value of the FloatLiteral. @@ -220,44 +202,6 @@ struct FloatLiteral( return truncated return truncated - 1 - @always_inline("nodebug") - fn __ceil__(self) -> Self: - """Return the ceiling value of the FloatLiteral. - - Returns: - The ceiling value. - """ - - # Handle special values first. - if not self._is_normal(): - return self - - # __int_literal__ rounds towards zero, so it's correct for integers and - # negative values. - var truncated: IntLiteral = self.__int_literal__() - - # Ensure this equality doesn't hit any implicit conversions. - if self <= 0 or self.__eq__(Self(truncated)): - return truncated - return truncated + 1 - - @always_inline("nodebug") - fn __trunc__(self) -> Self: - """Truncates the floating point literal. If there is a fractional - component, then the value is truncated towards zero. - - For example, `(4.5).__trunc__()` returns `4.0`, and `(-3.7).__trunc__()` - returns `-3.0`. - - Returns: - The truncated FloatLiteral value. - """ - - # Handle special values first. - if not self._is_normal(): - return self - return Self(self.__int_literal__()) - # ===------------------------------------------------------------------===# # Arithmetic Operators # ===------------------------------------------------------------------===# diff --git a/stdlib/src/builtin/int_literal.mojo b/stdlib/src/builtin/int_literal.mojo index 34be2d64d3..c5084fcf39 100644 --- a/stdlib/src/builtin/int_literal.mojo +++ b/stdlib/src/builtin/int_literal.mojo @@ -19,7 +19,6 @@ from math import Ceilable, CeilDivable, Floorable, Truncable @nonmaterializable(Int) @register_passable("trivial") struct IntLiteral( - Absable, Ceilable, CeilDivable, Comparable, @@ -401,17 +400,6 @@ struct IntLiteral( _type = __mlir_type.index, treatIndexAsUnsigned = __mlir_attr.unit ](self.value) - @always_inline("nodebug") - fn __abs__(self) -> Self: - """Return the absolute value of the IntLiteral value. - - Returns: - The absolute value. - """ - if self >= 0: - return self - return -self - @always_inline("builtin") fn __ceil__(self) -> Self: """Return the ceiling of the IntLiteral value, which is itself. diff --git a/stdlib/src/builtin/math.mojo b/stdlib/src/builtin/math.mojo index 7f0c693b67..c787dd8387 100644 --- a/stdlib/src/builtin/math.mojo +++ b/stdlib/src/builtin/math.mojo @@ -68,36 +68,6 @@ fn abs[T: Absable](value: T) -> T: return value.__abs__() -# TODO: https://github.com/modularml/modular/issues/38694 -# TODO: Remove this -@always_inline -fn abs(value: IntLiteral) -> IntLiteral: - """Get the absolute value of the given IntLiteral. - - Args: - value: The IntLiteral to get the absolute value of. - - Returns: - The absolute value of the IntLiteral. - """ - return value.__abs__() - - -# TODO: https://github.com/modularml/modular/issues/38694 -# TODO: Remove this -@always_inline -fn abs(value: FloatLiteral) -> FloatLiteral: - """Get the absolute value of the given FloatLiteral. - - Args: - value: The FloatLiteral to get the absolute value of. - - Returns: - The absolute value of the FloatLiteral. - """ - return value.__abs__() - - # ===----------------------------------------------------------------------=== # # divmod # ===----------------------------------------------------------------------=== # diff --git a/stdlib/test/builtin/test_float_literal.mojo b/stdlib/test/builtin/test_float_literal.mojo index c90950a1df..915c1f850e 100644 --- a/stdlib/test/builtin/test_float_literal.mojo +++ b/stdlib/test/builtin/test_float_literal.mojo @@ -26,48 +26,6 @@ alias inf = FloatLiteral.infinity alias neg_inf = FloatLiteral.negative_infinity -def test_ceil(): - assert_equal(FloatLiteral.__ceil__(1.5), 2.0) - assert_equal(FloatLiteral.__ceil__(1.4), 2.0) - assert_equal(FloatLiteral.__ceil__(-1.5), -1.0) - assert_equal(FloatLiteral.__ceil__(-3.6), -3.0) - assert_equal(FloatLiteral.__ceil__(3.0), 3.0) - assert_equal(FloatLiteral.__ceil__(0.0), 0.0) - - assert_true(FloatLiteral.__ceil__(nan).is_nan()) - assert_true(FloatLiteral.__ceil__(neg_zero).is_neg_zero()) - assert_equal(FloatLiteral.__ceil__(inf), inf) - assert_equal(FloatLiteral.__ceil__(neg_inf), neg_inf) - - -def test_floor(): - assert_equal(FloatLiteral.__floor__(1.5), 1.0) - assert_equal(FloatLiteral.__floor__(1.6), 1.0) - assert_equal(FloatLiteral.__floor__(-1.5), -2.0) - assert_equal(FloatLiteral.__floor__(-3.4), -4.0) - assert_equal(FloatLiteral.__floor__(3.0), 3.0) - assert_equal(FloatLiteral.__floor__(0.0), 0.0) - - assert_true(FloatLiteral.__floor__(nan).is_nan()) - assert_true(FloatLiteral.__floor__(neg_zero).is_neg_zero()) - assert_equal(FloatLiteral.__floor__(inf), inf) - assert_equal(FloatLiteral.__floor__(neg_inf), neg_inf) - - -def test_trunc(): - assert_equal(FloatLiteral.__trunc__(1.5), 1.0) - assert_equal(FloatLiteral.__trunc__(1.6), 1.0) - assert_equal(FloatLiteral.__trunc__(-1.5), -1.0) - assert_equal(FloatLiteral.__trunc__(-3.6), -3.0) - assert_equal(FloatLiteral.__trunc__(3.0), 3.0) - assert_equal(FloatLiteral.__trunc__(0.0), 0.0) - - assert_true(FloatLiteral.__trunc__(nan).is_nan()) - assert_true(FloatLiteral.__trunc__(neg_zero).is_neg_zero()) - assert_equal(FloatLiteral.__trunc__(inf), inf) - assert_equal(FloatLiteral.__trunc__(neg_inf), neg_inf) - - def test_division(): assert_equal(FloatLiteral.__truediv__(4.4, 0.5), 8.8) @@ -107,15 +65,13 @@ def test_is_special_value(): def test_abs(): - assert_equal((-4.4).__abs__(), 4.4) - assert_equal((4.4).__abs__(), 4.4) - assert_equal((0.0).__abs__(), 0.0) + assert_equal(abs(-4.4), 4.4) + assert_equal(abs(4.4), 4.4) + assert_equal(abs(0.0), 0.0) - assert_true(FloatLiteral.__abs__(nan).is_nan()) - assert_false(FloatLiteral.__abs__(neg_zero).is_neg_zero()) - assert_equal(FloatLiteral.__abs__(neg_zero), 0.0) - assert_equal(FloatLiteral.__abs__(inf), inf) - assert_equal(FloatLiteral.__abs__(neg_inf), inf) + assert_equal(abs(neg_zero), 0.0) + assert_equal(abs(inf), inf) + assert_equal(abs(neg_inf), inf) def test_comparison(): @@ -218,9 +174,6 @@ def test_float_conversion(): def main(): - test_ceil() - test_floor() - test_trunc() test_division() test_mod() test_int_conversion() diff --git a/stdlib/test/builtin/test_int_literal.mojo b/stdlib/test/builtin/test_int_literal.mojo index 87ee610509..ce9c5be4a5 100644 --- a/stdlib/test/builtin/test_int_literal.mojo +++ b/stdlib/test/builtin/test_int_literal.mojo @@ -69,9 +69,9 @@ def test_mod(): def test_abs(): - assert_equal(IntLiteral.__abs__(-5), 5) - assert_equal(IntLiteral.__abs__(2), 2) - assert_equal(IntLiteral.__abs__(0), 0) + assert_equal(abs(-5), 5) + assert_equal(abs(2), 2) + assert_equal(abs(0), 0) def test_indexer(): From 1956d15191e70842d4c08cf941e4c8965e027717 Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Fri, 21 Feb 2025 21:14:29 -0800 Subject: [PATCH 443/509] [mojo-lang] Give float literal floordiv first class support. FloatLiteral.floordiv is the foundation of mod and other algorithms, and needs a consistent branch free result type. Add an enum for it. MODULAR_ORIG_COMMIT_REV_ID: dea591320b3f37bdae99f2f28e74f697c056a0c1 --- stdlib/src/builtin/float_literal.mojo | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/stdlib/src/builtin/float_literal.mojo b/stdlib/src/builtin/float_literal.mojo index 777baa62a0..4639906a50 100644 --- a/stdlib/src/builtin/float_literal.mojo +++ b/stdlib/src/builtin/float_literal.mojo @@ -273,7 +273,10 @@ struct FloatLiteral( Returns: `floor(self / rhs)` value. """ - return self.__truediv__(rhs).__floor__() + # TODO - Python raises an error on divide by 0.0 or -0.0 + return __mlir_op.`kgen.float_literal.binop`[ + oper = __mlir_attr.`#kgen` + ](self.value, rhs.value) @always_inline("nodebug") fn __mod__(self, rhs: Self) -> Self: From b0e93c34ec949f27e4d19affd9575ad8dc489f3a Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Fri, 21 Feb 2025 21:40:02 -0800 Subject: [PATCH 444/509] [mojo-stdlib] Update various floatliteral methods to be builtin With floordiv now natively supported, we can add support for the immediately derived operations. MODULAR_ORIG_COMMIT_REV_ID: 006e0647c19d0c325312e0539ba6b6c7c2d6d887 --- stdlib/src/builtin/float_literal.mojo | 31 +++++---------------------- 1 file changed, 5 insertions(+), 26 deletions(-) diff --git a/stdlib/src/builtin/float_literal.mojo b/stdlib/src/builtin/float_literal.mojo index 4639906a50..569e204cb6 100644 --- a/stdlib/src/builtin/float_literal.mojo +++ b/stdlib/src/builtin/float_literal.mojo @@ -181,27 +181,6 @@ struct FloatLiteral( """ return self * Self(-1) - @always_inline("nodebug") - fn __floor__(self) -> Self: - """Return the floor value of the FloatLiteral. - - Returns: - The floor value. - """ - - # Handle special values first. - if not self._is_normal(): - return self - - # __int_literal__ rounds towards zero, so it's correct for integers and - # positive values. - var truncated: IntLiteral = self.__int_literal__() - - # Ensure this equality doesn't hit any implicit conversions. - if self >= 0 or self.__eq__(Self(truncated)): - return truncated - return truncated - 1 - # ===------------------------------------------------------------------===# # Arithmetic Operators # ===------------------------------------------------------------------===# @@ -263,7 +242,7 @@ struct FloatLiteral( oper = __mlir_attr.`#kgen` ](self.value, rhs.value) - @always_inline("nodebug") + @always_inline("builtin") fn __floordiv__(self, rhs: Self) -> Self: """Returns self divided by rhs, rounded down to the nearest integer. @@ -278,7 +257,7 @@ struct FloatLiteral( oper = __mlir_attr.`#kgen` ](self.value, rhs.value) - @always_inline("nodebug") + @always_inline("builtin") fn __mod__(self, rhs: Self) -> Self: """Return the remainder of self divided by rhs. @@ -288,9 +267,9 @@ struct FloatLiteral( Returns: The remainder of dividing self by rhs. """ - var quotient: Self = self.__floordiv__(rhs) - return self - (quotient * rhs) + return self - (self.__floordiv__(rhs) * rhs) + @always_inline("builtin") fn __rfloordiv__(self, rhs: Self) -> Self: """Returns rhs divided by self, rounded down to the nearest integer. @@ -302,7 +281,7 @@ struct FloatLiteral( """ return rhs // self - @always_inline("nodebug") + @always_inline("builtin") fn __ceildiv__(self, denominator: Self) -> Self: """Return the rounded-up result of dividing self by denominator. From 727b16a5b51a821700e067c8cd8628714ac9885b Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Sat, 22 Feb 2025 14:11:31 -0800 Subject: [PATCH 445/509] [mojo-stdlib] Change `#kgen.param.expr : index`, + `> : index`, ] ) From 248de11a021f24ceb9037634b0601deb39cfc142 Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Sat, 22 Feb 2025 15:36:35 -0800 Subject: [PATCH 446/509] [mojo-lang] Completely remove `ParserParamEvaluator`. This severs all use of the comptime interpreter by the parser. Such use was never correct - we'd be interpreting IR before lowering and type checking were complete. Such a change was an early hack added to improve dependent type support, but was fragile, weird, and could impact compile time in some cases. Now that the `@always_inline("builtin")` model is settled, we can move past the pile of hacks. Removal of the interpreter from the parser is the last step in this process - now the interpreter is only used during the elaboration phase later. This patch adds the design doc that spawned this work now that it is complete. MODULAR_ORIG_COMMIT_REV_ID: 163e33c560c2ab22ab21c0949dd77f47b5365e1a --- proposals/always_inline_builtin.md | 157 +++++++++++++++++++++++++++++ 1 file changed, 157 insertions(+) create mode 100644 proposals/always_inline_builtin.md diff --git a/proposals/always_inline_builtin.md b/proposals/always_inline_builtin.md new file mode 100644 index 0000000000..769b27a1e8 --- /dev/null +++ b/proposals/always_inline_builtin.md @@ -0,0 +1,157 @@ +# @always_inline("builtin") + +Author: Chris Lattner +Date: Jan 31, 2025 +Status: Implemented, complete + +## Background and Motivation + +As Mojo has evolved, we’ve continued to push for a design where builtin +primitives are represented with user-defined types, instead of raw MLIR types +directly. This started back in the day by wrapping `__mlirtype.i1` with `Bool` +and `__mlirtype.index` with `Int` and more recently by wrapping +`__mlirtype.origin<..>` with `Origin`. This approach has a number of +advantages: + +1. This allows us to use methods on the library defined types to define + operators that apply to it, e.g. `__and__` for `Bool` and `Int`. +2. This is much easier to write and works with name lookup properly. +3. This moves MLIR types into being “implementation details of the standard + library” rather than user-exposed types. + +Overall, this has been a great result, part of the “Mojo is syntax sugar for +MLIR”. + +However, recent engineering discussions have shown a weakness with this +approach, Stephen recently pointed out: + +> One high level Q, I think a lot of the parameter pain is derived from +> primitive structures like Int and Bool being custom types. It means they +> become function calls in the IR and its a struggle to simplify. It seems +> like maybe we should revisit these being in the library and just have a +> small set of compiler builtin types for things like Bool. + +It would be very sad to have another parallel universe for “compiler builtin” +types that are neither Int nor the existing MLIR types! That said, he’s got a +really great point, and we’re accumulating a small collection of hacks to work +around the problems. + +There are several challenges that occur when these types are used in symbolic +parameter expressions. What is an example? Consider the result type of: + +```mojo +fn widen[dt: DType, n: Int](a: SIMD[dt, n], b: SIMD[dt, n]) -> SIMD[dt, n+n]: +``` + +The result type ends up being represented as `SIMD[dt, Int.__add__(n, n)]`. +This expression cannot be folded or parameter inlined at parse time (because `n` +is not a simple constant), so we end up representing the call to `Int.__add__` +symbolicly through elaboration time. + +This is nice and flexible and general, a core part of the full-general comptime +model that Mojo provides, but it poises a number of problems for the core types +like `Int` and `Bool` and `Origin` that Stephen is pointing out. A few example +problems: + +1. ✅ This causes significant IR bloat that annoys compiler developers because a + call to `Int.__add__` is far more verbose than a `POC::Add` with its sugared + form. +2. ✅ Underlying dialects like KGEN have symbolic optimizations for core types. + In this example, it would canonicalization “n+n” to “2*n” and these canonical + forms are important to reduce rebinds. +3. ✅ We have complicated and fragile logic to work around this in the case when + the the operands are “simple constants” (see + `inlineFunctionCallIntoPValueIfPossible` and transitive code it calls, + *shudder*) which has lots of problems, e.g. it completely fails on + parametric function calls. +4. ✅ Because that doesn’t work on parametric function calls, we get further + hacks like `tryOriginInitFold` which special cases `Origin.__init__` because + Origin is a parametric struct, and we need low-level canonical `!lit.origin` + values for internal reasons. +5. ✅ We have other hacks like `refineResultValue` . This was added long ago + when we were first bringing up dependent types and it shouldn’t be needed. + It serves to handle things like the example below. We want `x` to have type + `SIMD[dt2, 8]` instead of `SIMD[dt, Int.add(4, 4)]`. The formal type + maintains the apply expression, so it goes through and does a rebind to get + it out of the way, reflecting the additional information we have in the call + site. If we modeled this correctly, this would all happen automatically and + no rebind would be needed: + + ```mojo + fn example[dt2: DType](a: SIMD[dt2, 4]): + var x = widen(a, a) + ``` + +6. ✅ Generally anything that uses the comptime interpreter at parse time is + wrong because the IR hasn't been lowered through CF lowering and + CheckLifetimes. We need to get off of this for dependent type support. + +To summarize, Mojo has worked this way for a very long time, but there are too +many design smells adding up to there being a problem. I would love to resolve +this once and for all and I think one simple solution will resolve all this +mess. + +## Proposal: `@always_inline("builtin")` + +The proposed solution to this is to introduce another level to `@always_inline` +that is “like `"nodebug"` but harder”. The observation is that these types +really are special, the methods that apply to them are trivial and generally +known to the compiler, and the operations within these methods have well-known +magic representations (e.g. `POC::Add` attribute instead of `index.add` +operation). We don’t want to special case the methods themselves into the +compiler, but we do necessarily have a tight coupling and want type checking. + +This new level of `always_inline` would have the same behavior as `"nodebug"` +(e.g. get the same LLVM represention, still disable debug info generation etc) +but add two more behaviors. + +### Function definition body-resolution checking + +The magic behavior we’re looking for has specific limited use-cases and can only +handle specific limited forms. After the function body has been parsed, we need +to validate that it doesn’t use anything that `@always_inline("builtin")` can’t +handle - this checks that there is no control flow, no function calls to +functions that are not themselves `@always_inline("builtin")`, no use of +unsupported MLIR operations, etc. The forms we will be able to accept are +very limited, but that seems like it should be ok given that these methods are +all just wrappers around singular MLIR operations anyway. + +### Change CallEmission to do the inlining + +These change should be very simple and localized - if `emitCallInParamContext` +returns an apply parameter expression, check to see if the callee is an +`@always_inline("builtin")` function. If so, unconditionally inline the body +into the parameter representation (doing the remapping of operations like +`index.add` to `POC::Add` and form `StructAttr` and `StructExtractAttr` instead +of `StructExtractOp` which will all fold and cancel out). + +That’s it. + +## Thoughts and Implications + +This is something that has been haunting me for quite some time. I think that +this relatively simple extension will subsume and allow us to remove a bunch of +fragile complexity I mentioned before. I believe it should be straight-forward +to support parametric functions, because we’re already in the parameter domain +and we can specifically “just not support” hard cases if they came up. + +## Alternative Considered: Try inlining *all* “nodebug” param calls + +Weiwei points out that we could avoid adding the syntax for this: we could just +make the call emission logic notice that the call is to a “nodebug” function, +and scan it to see if it can be “parameter inlined” using the rules above. +These are the pros and cons I see of this approach: + +- Pro: No new syntax, nothing to explain or document. +- Con: It would be less predictable, you wouldn’t get a compile time error in a + case that you (i.e. a graph compiler engineer) wants inlined but isn’t getting + inlined. +- Con: Compile time would be much worse for every non-inlinable parameter call + (most of comptime). + +The compile time cost is induced because the parser would have to “body resolve” +the callee, which forces parsing the callee, type checking and IR generating it. +The vastly most common case will be that something cannot be inlined. The +benefit of the new syntax is we get a decoupling between these two things: we +just need to signature resolve to know the callee is “parameter”, and only then +do we body resolve it to do the inlining. From 41e363e152f7273e9996bfe9c27c18d4f449cdc6 Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Sat, 22 Feb 2025 17:00:37 -0800 Subject: [PATCH 447/509] [mojo-docs] Add removal of the parser's interpreter to the changelog. With the new `@always_inline("builtin")` model converged, we can now remove the parser-time interpreter, which was very problematic. While this won't directly affect Mojo users, this is a notable architectural change improvement. MODULAR_ORIG_COMMIT_REV_ID: 1e012d3acea2bcba4d33be88192d25591828aa50 --- docs/changelog.md | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/docs/changelog.md b/docs/changelog.md index 14364179fe..91dce436f6 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -21,8 +21,8 @@ what we publish. ### Language changes - The Mojo comptime interpreter can now handle many more LLVM intrinsics, - including ones that return floating point values. This allows functions - like `round` to be constant folded when used in a comptime context. + including ones that return floating point values. This allows functions + like `round` to be constant folded when used in a comptime context. ### Standard library changes @@ -139,10 +139,20 @@ ctx.enqueue_function(compiled_func, grid_dim=1, block_dim=1) #### Mojo Compiler -Mojo compiler now warns about parameter for with large loop unrolling factor -(>1024 by default) which can lead to long compilation time and large generated -code size. Set `--loop-unrolling-warn-threshold` to change default value to -a different threshold or to `0` to disable the warning. +- Mojo compiler now warns about parameter for with large loop unrolling factor + (>1024 by default) which can lead to long compilation time and large generated + code size. Set `--loop-unrolling-warn-threshold` to change default value to + a different threshold or to `0` to disable the warning. + +- The Mojo compiler now only has one comptime interpreter. It had two + previously: one to handle a few cases that were important for dependent types + (but which also had many limitations) in the parser, and the primary one that + ran at "instantiation" time which is fully general. This was confusing and + caused a wide range of bugs. We've now removed the special case parse-time + interpreter, replacing it with a more general solution for dependent types. + This change should be invisible to most users, but should resolve a number of + long-standing bugs and significantly simplifies the compiler implementation, + allowing us to move faster. ### ❌ Removed From 369aa88490d48c8fc96e5fa910bc49c171fcb2a5 Mon Sep 17 00:00:00 2001 From: modularbot Date: Sun, 23 Feb 2025 07:51:46 +0000 Subject: [PATCH 448/509] Update lockfiles to point to latest nightly version: 25.2.0.dev2025022305 --- examples/life/magic.lock | 401 ++++++++++++++++++---------------- examples/magic.lock | 355 +++++++++++++++--------------- examples/operators/magic.lock | 355 +++++++++++++++--------------- examples/testing/magic.lock | 355 +++++++++++++++--------------- magic.lock | 355 +++++++++++++++--------------- 5 files changed, 944 insertions(+), 877 deletions(-) diff --git a/examples/life/magic.lock b/examples/life/magic.lock index 37cc954e6c..880b74c623 100644 --- a/examples/life/magic.lock +++ b/examples/life/magic.lock @@ -57,18 +57,18 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libflac-1.4.3-h59595ed_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h77fa898_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h767d61c_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcrypt-lib-1.11.0-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgettextpo-0.23.1-h5888daf_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgettextpo-devel-0.23.1-h5888daf_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hd5240d6_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hf1ad2bd_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgl-1.7.0-ha4b6fd6_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.82.2-h2ff4ddf_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libglvnd-1.7.0-ha4b6fd6_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libglx-1.7.0-ha4b6fd6_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h77fa898_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h767d61c_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgpg-error-1.51-hbd13f7d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h4ce23a2_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda @@ -86,8 +86,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libsndfile-1.2.2-hc60ed4a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.49.1-hee588c1_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-hc0a3c3a_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-h8f9b012_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsystemd0-257.3-h3dc2cb9_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hd9ff511_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libudev1-257.3-h9a4d06a_0.conda @@ -103,11 +103,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.6-h8d12d68_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.10.0-h5888daf_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022205-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022205-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022205-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022205-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022305-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022305-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022305-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/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda @@ -160,7 +160,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxscrnsaver-1.2.4-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb8e6e7a_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb8e6e7a_1.conda linux-aarch64: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/alsa-lib-1.2.13-h86ecc28_0.conda @@ -212,18 +212,18 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.6.4-h5ad3122_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.4.6-he21f813_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libflac-1.4.3-h2f0025b_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-14.2.0-he277a41_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-14.2.0-he9431aa_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-14.2.0-he277a41_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-14.2.0-he9431aa_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcrypt-lib-1.11.0-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgettextpo-0.23.1-h5ad3122_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgettextpo-devel-0.23.1-h5ad3122_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgl-1.7.0-hd24410f_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libglib-2.82.2-hc486b8e_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libglvnd-1.7.0-hd24410f_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libglx-1.7.0-hd24410f_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgpg-error-1.51-h05609ea_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libiconv-1.18-hc99b53d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libjpeg-turbo-3.0.0-h31becfc_1.conda @@ -241,8 +241,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsndfile-1.2.2-h79657aa_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.20-h68df207_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.49.1-h5eb1b54_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsystemd0-257.3-h27834fc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.0-h88f7998_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libudev1-257.3-h1187dce_0.conda @@ -258,11 +258,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.6-h2e0c361_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.10.0-h5ad3122_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022205-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022205-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022205-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022205-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022305-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022305-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022305-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/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-ha32ae93_3.conda @@ -314,7 +314,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxrender-0.9.12-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zeromq-4.3.5-h5efb499_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.6-h02f22dd_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.7-hbcf94c1_1.conda osx-arm64: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aom-3.9.1-h7bae524_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda @@ -384,11 +384,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.5.0-h2471fea_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022205-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022205-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022205-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022205-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022305-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022305-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022305-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/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda @@ -427,7 +427,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.7-h6491c7d_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.7-h6491c7d_1.conda packages: - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 sha256: fe51de6107f9edc7aa4f786a70f4a883943bc9d39b3bb7307c04c41410990726 @@ -1130,6 +1130,7 @@ packages: arch: x86_64 platform: linux license: MIT + license_family: MIT size: 1671633 timestamp: 1740154398990 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/harfbuzz-10.3.0-hb5e3f52_0.conda @@ -1148,6 +1149,7 @@ packages: arch: aarch64 platform: linux license: MIT + license_family: MIT size: 1727792 timestamp: 1740157913844 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/harfbuzz-10.3.0-hb72c1af_0.conda @@ -1166,6 +1168,7 @@ packages: arch: arm64 platform: osx license: MIT + license_family: MIT size: 1378165 timestamp: 1740155007314 - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda @@ -1379,6 +1382,7 @@ packages: arch: x86_64 platform: linux license: GPL-3.0-only + license_family: GPL size: 671240 timestamp: 1740155456116 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_4.conda @@ -1389,6 +1393,7 @@ packages: arch: aarch64 platform: linux license: GPL-3.0-only + license_family: GPL size: 699058 timestamp: 1740155620594 - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 @@ -1602,6 +1607,7 @@ packages: arch: x86_64 platform: linux license: BSD-3-Clause + license_family: BSD size: 16859 timestamp: 1740087969120 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-31_h1a9f1db_openblas.conda @@ -1620,6 +1626,7 @@ packages: arch: aarch64 platform: linux license: BSD-3-Clause + license_family: BSD size: 16915 timestamp: 1740087911042 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-31_h10e41b3_openblas.conda @@ -1638,6 +1645,7 @@ packages: arch: arm64 platform: osx license: BSD-3-Clause + license_family: BSD size: 17123 timestamp: 1740088119350 - conda: https://conda.anaconda.org/conda-forge/linux-64/libcap-2.71-h39aace5_0.conda @@ -1678,6 +1686,7 @@ packages: arch: x86_64 platform: linux license: BSD-3-Clause + license_family: BSD size: 16796 timestamp: 1740087984429 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-31_hab92f65_openblas.conda @@ -1693,6 +1702,7 @@ packages: arch: aarch64 platform: linux license: BSD-3-Clause + license_family: BSD size: 16824 timestamp: 1740087917500 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-31_hb3479ef_openblas.conda @@ -1708,6 +1718,7 @@ packages: arch: arm64 platform: osx license: BSD-3-Clause + license_family: BSD size: 17032 timestamp: 1740088127097 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda @@ -1981,57 +1992,57 @@ packages: license_family: BSD size: 314408 timestamp: 1687766236790 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h77fa898_1.conda - sha256: 53eb8a79365e58849e7b1a068d31f4f9e718dc938d6f2c03e960345739a03569 - md5: 3cb76c3f10d3bc7f1105b2fc9db984df +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h767d61c_2.conda + sha256: 3a572d031cb86deb541d15c1875aaa097baefc0c580b54dc61f5edab99215792 + md5: ef504d1acbd74b7cc6849ef8af47dd03 depends: - - _libgcc_mutex 0.1 conda_forge + - __glibc >=2.17,<3.0.a0 - _openmp_mutex >=4.5 constrains: - - libgomp 14.2.0 h77fa898_1 - - libgcc-ng ==14.2.0=*_1 + - libgomp 14.2.0 h767d61c_2 + - libgcc-ng ==14.2.0=*_2 arch: x86_64 platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 848745 - timestamp: 1729027721139 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-14.2.0-he277a41_1.conda - sha256: 5d56757ccad208c79214395b00d006d8d18929a4ba49c47bd9460789a7620943 - md5: 511b511c5445e324066c3377481bcab8 + size: 847885 + timestamp: 1740240653082 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-14.2.0-he277a41_2.conda + sha256: a57f7f9ba2a12f56eafdcd25b6d75f7be10b8fc1a802a58b76a77ca8c66f4503 + md5: 6b4268a60b10f29257b51b9b67ff8d76 depends: - _openmp_mutex >=4.5 constrains: - - libgcc-ng ==14.2.0=*_1 - - libgomp 14.2.0 he277a41_1 + - libgcc-ng ==14.2.0=*_2 + - libgomp 14.2.0 he277a41_2 arch: aarch64 platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 535243 - timestamp: 1729089435134 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_1.conda - sha256: 3a76969c80e9af8b6e7a55090088bc41da4cffcde9e2c71b17f44d37b7cb87f7 - md5: e39480b9ca41323497b05492a63bc35b + size: 535507 + timestamp: 1740241069780 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_2.conda + sha256: fb7558c328b38b2f9d2e412c48da7890e7721ba018d733ebdfea57280df01904 + md5: a2222a6ada71fb478682efe483ce0f92 depends: - - libgcc 14.2.0 h77fa898_1 + - libgcc 14.2.0 h767d61c_2 arch: x86_64 platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 54142 - timestamp: 1729027726517 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-14.2.0-he9431aa_1.conda - sha256: 9b5cf168a6c7361cae869cb74b716766ee7c6d6b3f6172b32ba9bf91135efdc4 - md5: 0694c249c61469f2c0f7e2990782af21 + size: 53758 + timestamp: 1740240660904 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-14.2.0-he9431aa_2.conda + sha256: 9647f75cddc18b07eebe6e1f21500eed50a6af2c43c84e831b4c7a597e10d226 + md5: 692c2bb75f32cfafb6799cf6d1c5d0e0 depends: - - libgcc 14.2.0 he277a41_1 + - libgcc 14.2.0 he277a41_2 arch: aarch64 platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 54104 - timestamp: 1729089444587 + size: 53622 + timestamp: 1740241074834 - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcrypt-lib-1.11.0-hb9d3cd8_2.conda sha256: ffc3602f9298da248786f46b00d0594d26a18feeb1b07ce88f3d7d61075e39e6 md5: e55712ff40a054134d51b89afca57dbc @@ -2130,32 +2141,32 @@ packages: license_family: GPL size: 37264 timestamp: 1739039332924 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_1.conda - sha256: fc9e7f22a17faf74da904ebfc4d88699013d2992e55505e4aa0eb01770290977 - md5: f1fd30127802683586f768875127a987 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_2.conda + sha256: e05263e8960da03c341650f2a3ffa4ccae4e111cb198e8933a2908125459e5a6 + md5: fb54c4ea68b460c278d26eea89cfbcc3 depends: - - libgfortran5 14.2.0 hd5240d6_1 + - libgfortran5 14.2.0 hf1ad2bd_2 constrains: - - libgfortran-ng ==14.2.0=*_1 + - libgfortran-ng ==14.2.0=*_2 arch: x86_64 platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 53997 - timestamp: 1729027752995 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_1.conda - sha256: cb66e411fa32a5c6040f4e5e2a63c00897aae4c3133a9c004c2e929ccf19575b - md5: 0294b92d2f47a240bebb1e3336b495f1 + size: 53733 + timestamp: 1740240690977 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_2.conda + sha256: 996d3c0505301901a7ab23b5e7daad21635d1c065240bb0f4faf7e4f75d7f49d + md5: d8b9d9dc0c8cd97d375b48e55947ba70 depends: - - libgfortran5 14.2.0 hb6113d0_1 + - libgfortran5 14.2.0 hb6113d0_2 constrains: - - libgfortran-ng ==14.2.0=*_1 + - libgfortran-ng ==14.2.0=*_2 arch: aarch64 platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 54105 - timestamp: 1729089471124 + size: 53611 + timestamp: 1740241100147 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda sha256: 44e541b4821c96b28b27fef5630883a60ce4fee91fd9c79f25a199f8f73f337b md5: 4a55d9e169114b2b90d3ec4604cd7bbf @@ -2167,10 +2178,11 @@ packages: license_family: GPL size: 110233 timestamp: 1707330749033 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hd5240d6_1.conda - sha256: d149a37ca73611e425041f33b9d8dbed6e52ec506fe8cc1fc0ee054bddeb6d5d - md5: 9822b874ea29af082e5d36098d25427d +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hf1ad2bd_2.conda + sha256: c17b7cf3073a1f4e1f34d50872934fa326346e104d3c445abc1e62481ad6085c + md5: 556a4fdfac7287d349b8f09aba899693 depends: + - __glibc >=2.17,<3.0.a0 - libgcc >=14.2.0 constrains: - libgfortran 14.2.0 @@ -2178,11 +2190,11 @@ packages: platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 1462645 - timestamp: 1729027735353 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_1.conda - sha256: a87ff46d19916403cbf68cf1d785bf56b4d1ab7b2552468d2ea775d70782493f - md5: fc068e11b10e18f184e027782baa12b6 + size: 1461978 + timestamp: 1740240671964 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_2.conda + sha256: 7b9e1d3666a00e5a52e5d43c003bd1c73ab472804be513c070aaedca9c4c2a9a + md5: cd754566661513808ef2408c4ab99a2f depends: - libgcc >=14.2.0 constrains: @@ -2191,8 +2203,8 @@ packages: platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 1102158 - timestamp: 1729089452640 + size: 1100765 + timestamp: 1740241083241 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda sha256: bafc679eedb468a86aa4636061c55966186399ee0a04b605920d208d97ac579a md5: 66ac81d54e95c534ae488726c1f698ea @@ -2320,26 +2332,26 @@ packages: license: LicenseRef-libglvnd size: 77736 timestamp: 1731330998960 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h77fa898_1.conda - sha256: 1911c29975ec99b6b906904040c855772ccb265a1c79d5d75c8ceec4ed89cd63 - md5: cc3573974587f12dda90d96e3e55a702 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h767d61c_2.conda + sha256: 1a3130e0b9267e781b89399580f3163632d59fe5b0142900d63052ab1a53490e + md5: 06d02030237f4d5b3d9a7e7d348fe3c6 depends: - - _libgcc_mutex 0.1 conda_forge + - __glibc >=2.17,<3.0.a0 arch: x86_64 platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 460992 - timestamp: 1729027639220 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_1.conda - sha256: 5aa53874a5e57a00f2e0c2e2910684eb674429cd5fcb803619b226a73e89aedf - md5: 376f0e73abbda6d23c0cb749adc195ef + size: 459862 + timestamp: 1740240588123 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_2.conda + sha256: 4e303711fb7413bf98995beac58e731073099d7a669a3b81e49330ca8da05174 + md5: b11c09d9463daf4cae492d29806b1889 arch: aarch64 platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 463521 - timestamp: 1729089357313 + size: 462783 + timestamp: 1740241005079 - conda: https://conda.anaconda.org/conda-forge/linux-64/libgpg-error-1.51-hbd13f7d_1.conda sha256: 9e0c09c1faf2151ade3ccb64e52d3c1f2dde85c00e37c6a3e6a8bced2aba68be md5: 168cc19c031482f83b23c4eebbb94e26 @@ -2466,6 +2478,7 @@ packages: arch: x86_64 platform: linux license: BSD-3-Clause + license_family: BSD size: 16790 timestamp: 1740087997375 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-31_h411afd4_openblas.conda @@ -2481,6 +2494,7 @@ packages: arch: aarch64 platform: linux license: BSD-3-Clause + license_family: BSD size: 16845 timestamp: 1740087923843 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-31_hc9a63f6_openblas.conda @@ -2496,6 +2510,7 @@ packages: arch: arm64 platform: osx license: BSD-3-Clause + license_family: BSD size: 17033 timestamp: 1740088134988 - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda @@ -2958,50 +2973,51 @@ packages: license: Unlicense size: 898767 timestamp: 1739953312379 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-hc0a3c3a_1.conda - sha256: 4661af0eb9bdcbb5fb33e5d0023b001ad4be828fccdcc56500059d56f9869462 - md5: 234a5554c53625688d51062645337328 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-h8f9b012_2.conda + sha256: 8f5bd92e4a24e1d35ba015c5252e8f818898478cb3bc50bd8b12ab54707dc4da + md5: a78c856b6dc6bf4ea8daeb9beaaa3fb0 depends: - - libgcc 14.2.0 h77fa898_1 + - __glibc >=2.17,<3.0.a0 + - libgcc 14.2.0 h767d61c_2 arch: x86_64 platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 3893695 - timestamp: 1729027746910 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_1.conda - sha256: 519556d2c93f1b487091ce046d62e762286177f4a670ec10e16005177d0bcab3 - md5: 37f489acd39e22b623d2d1e5ac6d195c + size: 3884556 + timestamp: 1740240685253 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_2.conda + sha256: c30a74bc996013907f6d9f344da007c26d98ef9a0831151cd50aece3125c45d5 + md5: eadee2cda99697e29411c1013c187b92 depends: - - libgcc 14.2.0 he277a41_1 + - libgcc 14.2.0 he277a41_2 arch: aarch64 platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 3816794 - timestamp: 1729089463404 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_1.conda - sha256: 25bb30b827d4f6d6f0522cc0579e431695503822f144043b93c50237017fffd8 - md5: 8371ac6457591af2cf6159439c1fd051 + size: 3810779 + timestamp: 1740241094774 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_2.conda + sha256: e86f38b007cf97cc2c67cd519f2de12a313c4ee3f5ef11652ad08932a5e34189 + md5: c75da67f045c2627f59e6fcb5f4e3a9b depends: - - libstdcxx 14.2.0 hc0a3c3a_1 + - libstdcxx 14.2.0 h8f9b012_2 arch: x86_64 platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 54105 - timestamp: 1729027780628 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_1.conda - sha256: 9f97461bd55a2745a7a0941f3502a047f15bfe7bb2952dc7fb204b3202f866fd - md5: 0e75771b8a03afae5a2c6ce71bc733f5 + size: 53830 + timestamp: 1740240722530 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_2.conda + sha256: 0107886ead6f255956d8e520f8dff260f9ab3d0d51512f18c52710c406e4b2df + md5: c934c1fddad582fcc385b608eb06a70c depends: - - libstdcxx 14.2.0 h3f4de04_1 + - libstdcxx 14.2.0 h3f4de04_2 arch: aarch64 platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 54133 - timestamp: 1729089498541 + size: 53715 + timestamp: 1740241126343 - conda: https://conda.anaconda.org/conda-forge/linux-64/libsystemd0-257.3-h3dc2cb9_0.conda sha256: dd566e2ef4a83b27d2b26d988cbbed50456294892744639f30f19954d2ee3287 md5: df057752e83bd254f6d65646eb67cd2e @@ -3482,48 +3498,48 @@ packages: license_family: BSD size: 184953 timestamp: 1733740984533 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022205-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022305-release.conda noarch: python - sha256: a4b60cd65edc61629b10617ad28376f6fafec207e9df35dccd97081d47bd7287 - md5: 89ff35bb811c04bb8d4f69a3e176b445 + sha256: ae0d6d0179f5bad00fe10eb7edf77bac0dfe49908af67274d9373a53bf930575 + md5: 5789c7009871406d9fbfa5f3477459c6 depends: - - max-core ==25.2.0.dev2025022205 release - - max-python ==25.2.0.dev2025022205 release - - mojo-jupyter ==25.2.0.dev2025022205 release - - mblack ==25.2.0.dev2025022205 release + - max-core ==25.2.0.dev2025022305 release + - max-python ==25.2.0.dev2025022305 release + - mojo-jupyter ==25.2.0.dev2025022305 release + - mblack ==25.2.0.dev2025022305 release license: LicenseRef-Modular-Proprietary - size: 9889 - timestamp: 1740201380167 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022205-release.conda - sha256: 14616fa561632a7858f1b43fee2830a08bd6adcbb9876714c24b72687f316495 - md5: d5bad6719888ce70742d2b7c45a87b36 + size: 9896 + timestamp: 1740287828839 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022305-release.conda + sha256: 6b43069454540bbce505aa7d4e9babf2bebf96e740f0e4ade7ff2b4b3f6566dd + md5: 94d10eb5a70ea5f697816b31974f478c depends: - - mblack ==25.2.0.dev2025022205 release + - mblack ==25.2.0.dev2025022305 release license: LicenseRef-Modular-Proprietary - size: 243956720 - timestamp: 1740201380048 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022205-release.conda - sha256: 5086b2bd4348d9453a926eba0a2c903fb7e90377bf83c532f17c7bf00234f060 - md5: 9cad83acf5ab35e1410d5c37d480d7b0 + size: 243927259 + timestamp: 1740287885402 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022305-release.conda + sha256: c02f604c539e951abedf9d1dc7afd835d8ac63b5c60b7a5ae61c3a0480dce859 + md5: 7ce47e432a9a3251f0c1b9b66b077d32 depends: - - mblack ==25.2.0.dev2025022205 release + - mblack ==25.2.0.dev2025022305 release license: LicenseRef-Modular-Proprietary - size: 246750593 - timestamp: 1740201380167 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022205-release.conda - sha256: d3efc1acdcc133d3d8d8c9da8f3a8eb8a4d667992b32f5fa605fdfcc460d304d - md5: 94e7b104cf83e183e4c30a9881b910a7 + size: 246655331 + timestamp: 1740287828839 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022305-release.conda + sha256: be68f633c0631c269bd6f2e52e04267c468ca6bf08652f48b6a2db914ea44de2 + md5: 2b6052c5ac4f553fe4ed0e96250c847a depends: - - mblack ==25.2.0.dev2025022205 release + - mblack ==25.2.0.dev2025022305 release license: LicenseRef-Modular-Proprietary - size: 212393465 - timestamp: 1740202848149 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022205-release.conda + size: 212352955 + timestamp: 1740288883625 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022305-release.conda noarch: python - sha256: 73d71fade273fd0c50d230d2055d9f848f48cbccb5e129d47cc66eb370303121 - md5: b9ff7e746c60964a770a4a949df6edf9 + sha256: dbaa4eea8e85ab7a3d203de9a75a5d6293fa085702d82fca23ac076f2d1c6d22 + md5: a56cd315a64001d1a99c31d6e46f80ad depends: - - max-core ==25.2.0.dev2025022205 release + - max-core ==25.2.0.dev2025022305 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -3561,14 +3577,14 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 120694172 - timestamp: 1740201380048 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022205-release.conda + size: 120689981 + timestamp: 1740287885402 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022305-release.conda noarch: python - sha256: f0fb6d2d56ecf06adbd0c66ea5ef79b8aba3c7f2dfb50b1acde92a39cf83c743 - md5: 5b4662a666c9a91e34c375cdeb328a0e + sha256: a139b3cded9cded160982295ec2cb74dd9ed925bdc95322c926ac1d59612a7c7 + md5: 86ce9b2811fd598ad33cf596c06897a0 depends: - - max-core ==25.2.0.dev2025022205 release + - max-core ==25.2.0.dev2025022305 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -3606,14 +3622,14 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 123479562 - timestamp: 1740201380167 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022205-release.conda + size: 123462201 + timestamp: 1740287828839 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022305-release.conda noarch: python - sha256: d9229f708c042db724a0cc56b30d2b81d7a1ac86e3f28e541a9a05da0ea4a3e8 - md5: d2519e42d7c3a5aa6d2b5f597ba34c0c + sha256: aabc0951963258fc934d80749d20adb426476358bee150d7325543293107c730 + md5: b35a18f33826101e82eb91c1452db621 depends: - - max-core ==25.2.0.dev2025022205 release + - max-core ==25.2.0.dev2025022305 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -3651,12 +3667,12 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 110154228 - timestamp: 1740202848149 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022205-release.conda + size: 110152903 + timestamp: 1740288883625 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022305-release.conda noarch: python - sha256: da6599faebf67d43c63618d55a0ebcfcba058ca80aaee80eccccf0c874ffaf14 - md5: 74aa857f5a6f1d4e004ef2d39b416f43 + sha256: 3af367ba319ca50244ac0717cdd56cde03fa20a9eab00431649fd71387abd573 + md5: 3fa8f1081981365c27ee4ae28a5aa2b7 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -3667,20 +3683,20 @@ packages: - typing_extensions >=v4.12.2 - python license: MIT - size: 130846 - timestamp: 1740201380167 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022205-release.conda + size: 130852 + timestamp: 1740287828839 +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022305-release.conda noarch: python - sha256: 9444c0b8c574e6efdee03d24fdd4340518313a796caf08f536a5798b9c7a6123 - md5: 7be2f23091dd2443ba395018d3005fcb + sha256: 6c73f5999862871787f7cc2f3dce40af3ee9fc70ad522a7416817a5b63106a19 + md5: 72ab111decd606a4f4deff785b539632 depends: - - max-core ==25.2.0.dev2025022205 release + - max-core ==25.2.0.dev2025022305 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22983 - timestamp: 1740201380167 + size: 22991 + timestamp: 1740287828839 - conda: https://conda.anaconda.org/conda-forge/linux-64/mpg123-1.32.9-hc50e24c_0.conda sha256: 39c4700fb3fbe403a77d8cc27352fa72ba744db487559d5d44bf8411bb4ea200 md5: c7f302fd11eeb0987a6a5e1f3aed6a21 @@ -5348,9 +5364,9 @@ packages: license_family: MIT size: 21809 timestamp: 1732827613585 -- conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb8e6e7a_0.conda - sha256: b8f7b4c7264e84fcedce3929239f5c55e86ae90948c9fdee666f93a70ca58e66 - md5: 3fe5420e4da42d8110c28f21de6cc127 +- conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb8e6e7a_1.conda + sha256: 532d3623961e34c53aba98db2ad0a33b7a52ff90d6960e505fb2d2efc06bb7da + md5: 02e4e2fa41a6528afba2e54cbc4280ff depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -5359,29 +5375,28 @@ packages: arch: x86_64 platform: linux license: BSD-3-Clause - size: 564076 - timestamp: 1740024448267 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.6-h02f22dd_0.conda - sha256: 484f9d0722c77685ae379fbff3ccd662af9ead7e59eb39cd6d0c677cdf25ff6c - md5: be8d5f8cf21aed237b8b182ea86b3dd6 + size: 567419 + timestamp: 1740255350233 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.7-hbcf94c1_1.conda + sha256: a8e9a9e19ec3778594d9746e308cdba096f3019c0c0a62f552d0d299b35c343f + md5: d98196f3502425e14f82bdfc8eb4ae27 depends: - - libgcc-ng >=12 - - libstdcxx-ng >=12 - - libzlib >=1.2.13,<2.0.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 arch: aarch64 platform: linux license: BSD-3-Clause - license_family: BSD - size: 539937 - timestamp: 1714723130243 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.7-h6491c7d_0.conda - sha256: ee7bbee860b437a214fbdfb4fdf9e48982dc984ad3b0bf2d6480d94c0a8fc8c4 - md5: 0924e073d067a32ace893528773ffded + size: 550364 + timestamp: 1740255370714 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.7-h6491c7d_1.conda + sha256: f49bbeeb3a8ead81920e6c695fff1260cbd221e2cfcdf9fb34207260fbd60816 + md5: 66e5c4b02aa97230459efdd4f64c8ce6 depends: - __osx >=11.0 - libzlib >=1.3.1,<2.0a0 arch: arm64 platform: osx license: BSD-3-Clause - size: 398443 - timestamp: 1740024500479 + size: 399981 + timestamp: 1740255382232 diff --git a/examples/magic.lock b/examples/magic.lock index 907c3c3e89..a866e96ae0 100644 --- a/examples/magic.lock +++ b/examples/magic.lock @@ -24,11 +24,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h77fa898_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hd5240d6_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h77fa898_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h767d61c_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hf1ad2bd_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h767d61c_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-31_h7ac8fdf_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda @@ -37,16 +37,16 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libsentencepiece-0.2.0-h8e10757_10.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.49.1-hee588c1_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-hc0a3c3a_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-h8f9b012_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022205-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022205-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022205-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022205-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022305-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022305-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022305-release.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-h2d0b736_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py311h64a7726_0.conda @@ -89,11 +89,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20250104-pl5321h976ea20_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.6.4-h5ad3122_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.4.6-he21f813_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-14.2.0-he277a41_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-14.2.0-he9431aa_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-14.2.0-he277a41_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-14.2.0-he9431aa_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-31_h411afd4_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.4-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda @@ -102,16 +102,16 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsentencepiece-0.2.0-h6164ad9_10.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.20-h68df207_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.49.1-h5eb1b54_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022205-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022205-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022205-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022205-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022305-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022305-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022305-release.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-ha32ae93_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py311h69ead2a_0.conda @@ -163,11 +163,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.1-h3f77e49_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022205-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022205-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022205-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022205-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022305-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022305-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022305-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py311h7125741_0.conda @@ -421,6 +421,7 @@ packages: arch: x86_64 platform: linux license: GPL-3.0-only + license_family: GPL size: 671240 timestamp: 1740155456116 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_4.conda @@ -431,6 +432,7 @@ packages: arch: aarch64 platform: linux license: GPL-3.0-only + license_family: GPL size: 699058 timestamp: 1740155620594 - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda @@ -495,6 +497,7 @@ packages: arch: x86_64 platform: linux license: BSD-3-Clause + license_family: BSD size: 16859 timestamp: 1740087969120 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-31_h1a9f1db_openblas.conda @@ -513,6 +516,7 @@ packages: arch: aarch64 platform: linux license: BSD-3-Clause + license_family: BSD size: 16915 timestamp: 1740087911042 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-31_h10e41b3_openblas.conda @@ -531,6 +535,7 @@ packages: arch: arm64 platform: osx license: BSD-3-Clause + license_family: BSD size: 17123 timestamp: 1740088119350 - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-31_he106b2a_openblas.conda @@ -546,6 +551,7 @@ packages: arch: x86_64 platform: linux license: BSD-3-Clause + license_family: BSD size: 16796 timestamp: 1740087984429 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-31_hab92f65_openblas.conda @@ -561,6 +567,7 @@ packages: arch: aarch64 platform: linux license: BSD-3-Clause + license_family: BSD size: 16824 timestamp: 1740087917500 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-31_hb3479ef_openblas.conda @@ -576,6 +583,7 @@ packages: arch: arm64 platform: osx license: BSD-3-Clause + license_family: BSD size: 17032 timestamp: 1740088127097 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda @@ -701,83 +709,83 @@ packages: license_family: MIT size: 39020 timestamp: 1636488587153 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h77fa898_1.conda - sha256: 53eb8a79365e58849e7b1a068d31f4f9e718dc938d6f2c03e960345739a03569 - md5: 3cb76c3f10d3bc7f1105b2fc9db984df +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h767d61c_2.conda + sha256: 3a572d031cb86deb541d15c1875aaa097baefc0c580b54dc61f5edab99215792 + md5: ef504d1acbd74b7cc6849ef8af47dd03 depends: - - _libgcc_mutex 0.1 conda_forge + - __glibc >=2.17,<3.0.a0 - _openmp_mutex >=4.5 constrains: - - libgomp 14.2.0 h77fa898_1 - - libgcc-ng ==14.2.0=*_1 + - libgomp 14.2.0 h767d61c_2 + - libgcc-ng ==14.2.0=*_2 arch: x86_64 platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 848745 - timestamp: 1729027721139 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-14.2.0-he277a41_1.conda - sha256: 5d56757ccad208c79214395b00d006d8d18929a4ba49c47bd9460789a7620943 - md5: 511b511c5445e324066c3377481bcab8 + size: 847885 + timestamp: 1740240653082 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-14.2.0-he277a41_2.conda + sha256: a57f7f9ba2a12f56eafdcd25b6d75f7be10b8fc1a802a58b76a77ca8c66f4503 + md5: 6b4268a60b10f29257b51b9b67ff8d76 depends: - _openmp_mutex >=4.5 constrains: - - libgcc-ng ==14.2.0=*_1 - - libgomp 14.2.0 he277a41_1 + - libgcc-ng ==14.2.0=*_2 + - libgomp 14.2.0 he277a41_2 arch: aarch64 platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 535243 - timestamp: 1729089435134 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_1.conda - sha256: 3a76969c80e9af8b6e7a55090088bc41da4cffcde9e2c71b17f44d37b7cb87f7 - md5: e39480b9ca41323497b05492a63bc35b + size: 535507 + timestamp: 1740241069780 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_2.conda + sha256: fb7558c328b38b2f9d2e412c48da7890e7721ba018d733ebdfea57280df01904 + md5: a2222a6ada71fb478682efe483ce0f92 depends: - - libgcc 14.2.0 h77fa898_1 + - libgcc 14.2.0 h767d61c_2 arch: x86_64 platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 54142 - timestamp: 1729027726517 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-14.2.0-he9431aa_1.conda - sha256: 9b5cf168a6c7361cae869cb74b716766ee7c6d6b3f6172b32ba9bf91135efdc4 - md5: 0694c249c61469f2c0f7e2990782af21 + size: 53758 + timestamp: 1740240660904 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-14.2.0-he9431aa_2.conda + sha256: 9647f75cddc18b07eebe6e1f21500eed50a6af2c43c84e831b4c7a597e10d226 + md5: 692c2bb75f32cfafb6799cf6d1c5d0e0 depends: - - libgcc 14.2.0 he277a41_1 + - libgcc 14.2.0 he277a41_2 arch: aarch64 platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 54104 - timestamp: 1729089444587 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_1.conda - sha256: fc9e7f22a17faf74da904ebfc4d88699013d2992e55505e4aa0eb01770290977 - md5: f1fd30127802683586f768875127a987 + size: 53622 + timestamp: 1740241074834 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_2.conda + sha256: e05263e8960da03c341650f2a3ffa4ccae4e111cb198e8933a2908125459e5a6 + md5: fb54c4ea68b460c278d26eea89cfbcc3 depends: - - libgfortran5 14.2.0 hd5240d6_1 + - libgfortran5 14.2.0 hf1ad2bd_2 constrains: - - libgfortran-ng ==14.2.0=*_1 + - libgfortran-ng ==14.2.0=*_2 arch: x86_64 platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 53997 - timestamp: 1729027752995 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_1.conda - sha256: cb66e411fa32a5c6040f4e5e2a63c00897aae4c3133a9c004c2e929ccf19575b - md5: 0294b92d2f47a240bebb1e3336b495f1 + size: 53733 + timestamp: 1740240690977 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_2.conda + sha256: 996d3c0505301901a7ab23b5e7daad21635d1c065240bb0f4faf7e4f75d7f49d + md5: d8b9d9dc0c8cd97d375b48e55947ba70 depends: - - libgfortran5 14.2.0 hb6113d0_1 + - libgfortran5 14.2.0 hb6113d0_2 constrains: - - libgfortran-ng ==14.2.0=*_1 + - libgfortran-ng ==14.2.0=*_2 arch: aarch64 platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 54105 - timestamp: 1729089471124 + size: 53611 + timestamp: 1740241100147 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda sha256: 44e541b4821c96b28b27fef5630883a60ce4fee91fd9c79f25a199f8f73f337b md5: 4a55d9e169114b2b90d3ec4604cd7bbf @@ -789,10 +797,11 @@ packages: license_family: GPL size: 110233 timestamp: 1707330749033 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hd5240d6_1.conda - sha256: d149a37ca73611e425041f33b9d8dbed6e52ec506fe8cc1fc0ee054bddeb6d5d - md5: 9822b874ea29af082e5d36098d25427d +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hf1ad2bd_2.conda + sha256: c17b7cf3073a1f4e1f34d50872934fa326346e104d3c445abc1e62481ad6085c + md5: 556a4fdfac7287d349b8f09aba899693 depends: + - __glibc >=2.17,<3.0.a0 - libgcc >=14.2.0 constrains: - libgfortran 14.2.0 @@ -800,11 +809,11 @@ packages: platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 1462645 - timestamp: 1729027735353 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_1.conda - sha256: a87ff46d19916403cbf68cf1d785bf56b4d1ab7b2552468d2ea775d70782493f - md5: fc068e11b10e18f184e027782baa12b6 + size: 1461978 + timestamp: 1740240671964 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_2.conda + sha256: 7b9e1d3666a00e5a52e5d43c003bd1c73ab472804be513c070aaedca9c4c2a9a + md5: cd754566661513808ef2408c4ab99a2f depends: - libgcc >=14.2.0 constrains: @@ -813,8 +822,8 @@ packages: platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 1102158 - timestamp: 1729089452640 + size: 1100765 + timestamp: 1740241083241 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda sha256: bafc679eedb468a86aa4636061c55966186399ee0a04b605920d208d97ac579a md5: 66ac81d54e95c534ae488726c1f698ea @@ -828,26 +837,26 @@ packages: license_family: GPL size: 997381 timestamp: 1707330687590 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h77fa898_1.conda - sha256: 1911c29975ec99b6b906904040c855772ccb265a1c79d5d75c8ceec4ed89cd63 - md5: cc3573974587f12dda90d96e3e55a702 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h767d61c_2.conda + sha256: 1a3130e0b9267e781b89399580f3163632d59fe5b0142900d63052ab1a53490e + md5: 06d02030237f4d5b3d9a7e7d348fe3c6 depends: - - _libgcc_mutex 0.1 conda_forge + - __glibc >=2.17,<3.0.a0 arch: x86_64 platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 460992 - timestamp: 1729027639220 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_1.conda - sha256: 5aa53874a5e57a00f2e0c2e2910684eb674429cd5fcb803619b226a73e89aedf - md5: 376f0e73abbda6d23c0cb749adc195ef + size: 459862 + timestamp: 1740240588123 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_2.conda + sha256: 4e303711fb7413bf98995beac58e731073099d7a669a3b81e49330ca8da05174 + md5: b11c09d9463daf4cae492d29806b1889 arch: aarch64 platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 463521 - timestamp: 1729089357313 + size: 462783 + timestamp: 1740241005079 - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-31_h7ac8fdf_openblas.conda build_number: 31 sha256: f583661921456e798aba10972a8abbd9d33571c655c1f66eff450edc9cbefcf3 @@ -861,6 +870,7 @@ packages: arch: x86_64 platform: linux license: BSD-3-Clause + license_family: BSD size: 16790 timestamp: 1740087997375 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-31_h411afd4_openblas.conda @@ -876,6 +886,7 @@ packages: arch: aarch64 platform: linux license: BSD-3-Clause + license_family: BSD size: 16845 timestamp: 1740087923843 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-31_hc9a63f6_openblas.conda @@ -891,6 +902,7 @@ packages: arch: arm64 platform: osx license: BSD-3-Clause + license_family: BSD size: 17033 timestamp: 1740088134988 - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda @@ -1149,50 +1161,51 @@ packages: license: Unlicense size: 898767 timestamp: 1739953312379 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-hc0a3c3a_1.conda - sha256: 4661af0eb9bdcbb5fb33e5d0023b001ad4be828fccdcc56500059d56f9869462 - md5: 234a5554c53625688d51062645337328 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-h8f9b012_2.conda + sha256: 8f5bd92e4a24e1d35ba015c5252e8f818898478cb3bc50bd8b12ab54707dc4da + md5: a78c856b6dc6bf4ea8daeb9beaaa3fb0 depends: - - libgcc 14.2.0 h77fa898_1 + - __glibc >=2.17,<3.0.a0 + - libgcc 14.2.0 h767d61c_2 arch: x86_64 platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 3893695 - timestamp: 1729027746910 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_1.conda - sha256: 519556d2c93f1b487091ce046d62e762286177f4a670ec10e16005177d0bcab3 - md5: 37f489acd39e22b623d2d1e5ac6d195c + size: 3884556 + timestamp: 1740240685253 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_2.conda + sha256: c30a74bc996013907f6d9f344da007c26d98ef9a0831151cd50aece3125c45d5 + md5: eadee2cda99697e29411c1013c187b92 depends: - - libgcc 14.2.0 he277a41_1 + - libgcc 14.2.0 he277a41_2 arch: aarch64 platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 3816794 - timestamp: 1729089463404 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_1.conda - sha256: 25bb30b827d4f6d6f0522cc0579e431695503822f144043b93c50237017fffd8 - md5: 8371ac6457591af2cf6159439c1fd051 + size: 3810779 + timestamp: 1740241094774 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_2.conda + sha256: e86f38b007cf97cc2c67cd519f2de12a313c4ee3f5ef11652ad08932a5e34189 + md5: c75da67f045c2627f59e6fcb5f4e3a9b depends: - - libstdcxx 14.2.0 hc0a3c3a_1 + - libstdcxx 14.2.0 h8f9b012_2 arch: x86_64 platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 54105 - timestamp: 1729027780628 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_1.conda - sha256: 9f97461bd55a2745a7a0941f3502a047f15bfe7bb2952dc7fb204b3202f866fd - md5: 0e75771b8a03afae5a2c6ce71bc733f5 + size: 53830 + timestamp: 1740240722530 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_2.conda + sha256: 0107886ead6f255956d8e520f8dff260f9ab3d0d51512f18c52710c406e4b2df + md5: c934c1fddad582fcc385b608eb06a70c depends: - - libstdcxx 14.2.0 h3f4de04_1 + - libstdcxx 14.2.0 h3f4de04_2 arch: aarch64 platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 54133 - timestamp: 1729089498541 + size: 53715 + timestamp: 1740241126343 - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda sha256: 787eb542f055a2b3de553614b25f09eefb0a0931b0c87dbcce6efdfd92f04f18 md5: 40b61aab5c7ba9ff276c41cfffe6b80b @@ -1288,48 +1301,48 @@ packages: license_family: APACHE size: 280830 timestamp: 1736986295869 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022205-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022305-release.conda noarch: python - sha256: a4b60cd65edc61629b10617ad28376f6fafec207e9df35dccd97081d47bd7287 - md5: 89ff35bb811c04bb8d4f69a3e176b445 + sha256: ae0d6d0179f5bad00fe10eb7edf77bac0dfe49908af67274d9373a53bf930575 + md5: 5789c7009871406d9fbfa5f3477459c6 depends: - - max-core ==25.2.0.dev2025022205 release - - max-python ==25.2.0.dev2025022205 release - - mojo-jupyter ==25.2.0.dev2025022205 release - - mblack ==25.2.0.dev2025022205 release + - max-core ==25.2.0.dev2025022305 release + - max-python ==25.2.0.dev2025022305 release + - mojo-jupyter ==25.2.0.dev2025022305 release + - mblack ==25.2.0.dev2025022305 release license: LicenseRef-Modular-Proprietary - size: 9889 - timestamp: 1740201380167 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022205-release.conda - sha256: 14616fa561632a7858f1b43fee2830a08bd6adcbb9876714c24b72687f316495 - md5: d5bad6719888ce70742d2b7c45a87b36 + size: 9896 + timestamp: 1740287828839 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022305-release.conda + sha256: 6b43069454540bbce505aa7d4e9babf2bebf96e740f0e4ade7ff2b4b3f6566dd + md5: 94d10eb5a70ea5f697816b31974f478c depends: - - mblack ==25.2.0.dev2025022205 release + - mblack ==25.2.0.dev2025022305 release license: LicenseRef-Modular-Proprietary - size: 243956720 - timestamp: 1740201380048 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022205-release.conda - sha256: 5086b2bd4348d9453a926eba0a2c903fb7e90377bf83c532f17c7bf00234f060 - md5: 9cad83acf5ab35e1410d5c37d480d7b0 + size: 243927259 + timestamp: 1740287885402 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022305-release.conda + sha256: c02f604c539e951abedf9d1dc7afd835d8ac63b5c60b7a5ae61c3a0480dce859 + md5: 7ce47e432a9a3251f0c1b9b66b077d32 depends: - - mblack ==25.2.0.dev2025022205 release + - mblack ==25.2.0.dev2025022305 release license: LicenseRef-Modular-Proprietary - size: 246750593 - timestamp: 1740201380167 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022205-release.conda - sha256: d3efc1acdcc133d3d8d8c9da8f3a8eb8a4d667992b32f5fa605fdfcc460d304d - md5: 94e7b104cf83e183e4c30a9881b910a7 + size: 246655331 + timestamp: 1740287828839 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022305-release.conda + sha256: be68f633c0631c269bd6f2e52e04267c468ca6bf08652f48b6a2db914ea44de2 + md5: 2b6052c5ac4f553fe4ed0e96250c847a depends: - - mblack ==25.2.0.dev2025022205 release + - mblack ==25.2.0.dev2025022305 release license: LicenseRef-Modular-Proprietary - size: 212393465 - timestamp: 1740202848149 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022205-release.conda + size: 212352955 + timestamp: 1740288883625 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022305-release.conda noarch: python - sha256: 73d71fade273fd0c50d230d2055d9f848f48cbccb5e129d47cc66eb370303121 - md5: b9ff7e746c60964a770a4a949df6edf9 + sha256: dbaa4eea8e85ab7a3d203de9a75a5d6293fa085702d82fca23ac076f2d1c6d22 + md5: a56cd315a64001d1a99c31d6e46f80ad depends: - - max-core ==25.2.0.dev2025022205 release + - max-core ==25.2.0.dev2025022305 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1367,14 +1380,14 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 120694172 - timestamp: 1740201380048 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022205-release.conda + size: 120689981 + timestamp: 1740287885402 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022305-release.conda noarch: python - sha256: f0fb6d2d56ecf06adbd0c66ea5ef79b8aba3c7f2dfb50b1acde92a39cf83c743 - md5: 5b4662a666c9a91e34c375cdeb328a0e + sha256: a139b3cded9cded160982295ec2cb74dd9ed925bdc95322c926ac1d59612a7c7 + md5: 86ce9b2811fd598ad33cf596c06897a0 depends: - - max-core ==25.2.0.dev2025022205 release + - max-core ==25.2.0.dev2025022305 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1412,14 +1425,14 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 123479562 - timestamp: 1740201380167 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022205-release.conda + size: 123462201 + timestamp: 1740287828839 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022305-release.conda noarch: python - sha256: d9229f708c042db724a0cc56b30d2b81d7a1ac86e3f28e541a9a05da0ea4a3e8 - md5: d2519e42d7c3a5aa6d2b5f597ba34c0c + sha256: aabc0951963258fc934d80749d20adb426476358bee150d7325543293107c730 + md5: b35a18f33826101e82eb91c1452db621 depends: - - max-core ==25.2.0.dev2025022205 release + - max-core ==25.2.0.dev2025022305 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1457,12 +1470,12 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 110154228 - timestamp: 1740202848149 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022205-release.conda + size: 110152903 + timestamp: 1740288883625 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022305-release.conda noarch: python - sha256: da6599faebf67d43c63618d55a0ebcfcba058ca80aaee80eccccf0c874ffaf14 - md5: 74aa857f5a6f1d4e004ef2d39b416f43 + sha256: 3af367ba319ca50244ac0717cdd56cde03fa20a9eab00431649fd71387abd573 + md5: 3fa8f1081981365c27ee4ae28a5aa2b7 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -1473,20 +1486,20 @@ packages: - typing_extensions >=v4.12.2 - python license: MIT - size: 130846 - timestamp: 1740201380167 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022205-release.conda + size: 130852 + timestamp: 1740287828839 +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022305-release.conda noarch: python - sha256: 9444c0b8c574e6efdee03d24fdd4340518313a796caf08f536a5798b9c7a6123 - md5: 7be2f23091dd2443ba395018d3005fcb + sha256: 6c73f5999862871787f7cc2f3dce40af3ee9fc70ad522a7416817a5b63106a19 + md5: 72ab111decd606a4f4deff785b539632 depends: - - max-core ==25.2.0.dev2025022205 release + - max-core ==25.2.0.dev2025022305 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22983 - timestamp: 1740201380167 + size: 22991 + timestamp: 1740287828839 - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda sha256: 1895f47b7d68581a6facde5cb13ab8c2764c2e53a76bd746f8f98910dc4e08fe md5: 29097e7ea634a45cc5386b95cac6568f diff --git a/examples/operators/magic.lock b/examples/operators/magic.lock index 2e46e07f29..b5308738e0 100644 --- a/examples/operators/magic.lock +++ b/examples/operators/magic.lock @@ -24,11 +24,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h77fa898_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hd5240d6_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h77fa898_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h767d61c_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hf1ad2bd_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h767d61c_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-31_h7ac8fdf_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda @@ -37,16 +37,16 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libsentencepiece-0.2.0-h8e10757_10.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.49.1-hee588c1_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-hc0a3c3a_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-h8f9b012_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022205-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022205-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022205-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022205-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022305-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022305-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022305-release.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-h2d0b736_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda @@ -89,11 +89,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20250104-pl5321h976ea20_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.6.4-h5ad3122_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.4.6-he21f813_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-14.2.0-he277a41_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-14.2.0-he9431aa_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-14.2.0-he277a41_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-14.2.0-he9431aa_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-31_h411afd4_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.4-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda @@ -102,16 +102,16 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsentencepiece-0.2.0-h6164ad9_10.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.20-h68df207_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.49.1-h5eb1b54_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022205-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022205-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022205-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022205-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022305-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022305-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022305-release.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-ha32ae93_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda @@ -163,11 +163,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.1-h3f77e49_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022205-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022205-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022205-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022205-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022305-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022305-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022305-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda @@ -421,6 +421,7 @@ packages: arch: x86_64 platform: linux license: GPL-3.0-only + license_family: GPL size: 671240 timestamp: 1740155456116 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_4.conda @@ -431,6 +432,7 @@ packages: arch: aarch64 platform: linux license: GPL-3.0-only + license_family: GPL size: 699058 timestamp: 1740155620594 - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda @@ -495,6 +497,7 @@ packages: arch: x86_64 platform: linux license: BSD-3-Clause + license_family: BSD size: 16859 timestamp: 1740087969120 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-31_h1a9f1db_openblas.conda @@ -513,6 +516,7 @@ packages: arch: aarch64 platform: linux license: BSD-3-Clause + license_family: BSD size: 16915 timestamp: 1740087911042 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-31_h10e41b3_openblas.conda @@ -531,6 +535,7 @@ packages: arch: arm64 platform: osx license: BSD-3-Clause + license_family: BSD size: 17123 timestamp: 1740088119350 - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-31_he106b2a_openblas.conda @@ -546,6 +551,7 @@ packages: arch: x86_64 platform: linux license: BSD-3-Clause + license_family: BSD size: 16796 timestamp: 1740087984429 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-31_hab92f65_openblas.conda @@ -561,6 +567,7 @@ packages: arch: aarch64 platform: linux license: BSD-3-Clause + license_family: BSD size: 16824 timestamp: 1740087917500 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-31_hb3479ef_openblas.conda @@ -576,6 +583,7 @@ packages: arch: arm64 platform: osx license: BSD-3-Clause + license_family: BSD size: 17032 timestamp: 1740088127097 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda @@ -701,83 +709,83 @@ packages: license_family: MIT size: 39020 timestamp: 1636488587153 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h77fa898_1.conda - sha256: 53eb8a79365e58849e7b1a068d31f4f9e718dc938d6f2c03e960345739a03569 - md5: 3cb76c3f10d3bc7f1105b2fc9db984df +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h767d61c_2.conda + sha256: 3a572d031cb86deb541d15c1875aaa097baefc0c580b54dc61f5edab99215792 + md5: ef504d1acbd74b7cc6849ef8af47dd03 depends: - - _libgcc_mutex 0.1 conda_forge + - __glibc >=2.17,<3.0.a0 - _openmp_mutex >=4.5 constrains: - - libgomp 14.2.0 h77fa898_1 - - libgcc-ng ==14.2.0=*_1 + - libgomp 14.2.0 h767d61c_2 + - libgcc-ng ==14.2.0=*_2 arch: x86_64 platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 848745 - timestamp: 1729027721139 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-14.2.0-he277a41_1.conda - sha256: 5d56757ccad208c79214395b00d006d8d18929a4ba49c47bd9460789a7620943 - md5: 511b511c5445e324066c3377481bcab8 + size: 847885 + timestamp: 1740240653082 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-14.2.0-he277a41_2.conda + sha256: a57f7f9ba2a12f56eafdcd25b6d75f7be10b8fc1a802a58b76a77ca8c66f4503 + md5: 6b4268a60b10f29257b51b9b67ff8d76 depends: - _openmp_mutex >=4.5 constrains: - - libgcc-ng ==14.2.0=*_1 - - libgomp 14.2.0 he277a41_1 + - libgcc-ng ==14.2.0=*_2 + - libgomp 14.2.0 he277a41_2 arch: aarch64 platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 535243 - timestamp: 1729089435134 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_1.conda - sha256: 3a76969c80e9af8b6e7a55090088bc41da4cffcde9e2c71b17f44d37b7cb87f7 - md5: e39480b9ca41323497b05492a63bc35b + size: 535507 + timestamp: 1740241069780 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_2.conda + sha256: fb7558c328b38b2f9d2e412c48da7890e7721ba018d733ebdfea57280df01904 + md5: a2222a6ada71fb478682efe483ce0f92 depends: - - libgcc 14.2.0 h77fa898_1 + - libgcc 14.2.0 h767d61c_2 arch: x86_64 platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 54142 - timestamp: 1729027726517 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-14.2.0-he9431aa_1.conda - sha256: 9b5cf168a6c7361cae869cb74b716766ee7c6d6b3f6172b32ba9bf91135efdc4 - md5: 0694c249c61469f2c0f7e2990782af21 + size: 53758 + timestamp: 1740240660904 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-14.2.0-he9431aa_2.conda + sha256: 9647f75cddc18b07eebe6e1f21500eed50a6af2c43c84e831b4c7a597e10d226 + md5: 692c2bb75f32cfafb6799cf6d1c5d0e0 depends: - - libgcc 14.2.0 he277a41_1 + - libgcc 14.2.0 he277a41_2 arch: aarch64 platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 54104 - timestamp: 1729089444587 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_1.conda - sha256: fc9e7f22a17faf74da904ebfc4d88699013d2992e55505e4aa0eb01770290977 - md5: f1fd30127802683586f768875127a987 + size: 53622 + timestamp: 1740241074834 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_2.conda + sha256: e05263e8960da03c341650f2a3ffa4ccae4e111cb198e8933a2908125459e5a6 + md5: fb54c4ea68b460c278d26eea89cfbcc3 depends: - - libgfortran5 14.2.0 hd5240d6_1 + - libgfortran5 14.2.0 hf1ad2bd_2 constrains: - - libgfortran-ng ==14.2.0=*_1 + - libgfortran-ng ==14.2.0=*_2 arch: x86_64 platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 53997 - timestamp: 1729027752995 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_1.conda - sha256: cb66e411fa32a5c6040f4e5e2a63c00897aae4c3133a9c004c2e929ccf19575b - md5: 0294b92d2f47a240bebb1e3336b495f1 + size: 53733 + timestamp: 1740240690977 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_2.conda + sha256: 996d3c0505301901a7ab23b5e7daad21635d1c065240bb0f4faf7e4f75d7f49d + md5: d8b9d9dc0c8cd97d375b48e55947ba70 depends: - - libgfortran5 14.2.0 hb6113d0_1 + - libgfortran5 14.2.0 hb6113d0_2 constrains: - - libgfortran-ng ==14.2.0=*_1 + - libgfortran-ng ==14.2.0=*_2 arch: aarch64 platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 54105 - timestamp: 1729089471124 + size: 53611 + timestamp: 1740241100147 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda sha256: 44e541b4821c96b28b27fef5630883a60ce4fee91fd9c79f25a199f8f73f337b md5: 4a55d9e169114b2b90d3ec4604cd7bbf @@ -789,10 +797,11 @@ packages: license_family: GPL size: 110233 timestamp: 1707330749033 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hd5240d6_1.conda - sha256: d149a37ca73611e425041f33b9d8dbed6e52ec506fe8cc1fc0ee054bddeb6d5d - md5: 9822b874ea29af082e5d36098d25427d +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hf1ad2bd_2.conda + sha256: c17b7cf3073a1f4e1f34d50872934fa326346e104d3c445abc1e62481ad6085c + md5: 556a4fdfac7287d349b8f09aba899693 depends: + - __glibc >=2.17,<3.0.a0 - libgcc >=14.2.0 constrains: - libgfortran 14.2.0 @@ -800,11 +809,11 @@ packages: platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 1462645 - timestamp: 1729027735353 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_1.conda - sha256: a87ff46d19916403cbf68cf1d785bf56b4d1ab7b2552468d2ea775d70782493f - md5: fc068e11b10e18f184e027782baa12b6 + size: 1461978 + timestamp: 1740240671964 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_2.conda + sha256: 7b9e1d3666a00e5a52e5d43c003bd1c73ab472804be513c070aaedca9c4c2a9a + md5: cd754566661513808ef2408c4ab99a2f depends: - libgcc >=14.2.0 constrains: @@ -813,8 +822,8 @@ packages: platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 1102158 - timestamp: 1729089452640 + size: 1100765 + timestamp: 1740241083241 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda sha256: bafc679eedb468a86aa4636061c55966186399ee0a04b605920d208d97ac579a md5: 66ac81d54e95c534ae488726c1f698ea @@ -828,26 +837,26 @@ packages: license_family: GPL size: 997381 timestamp: 1707330687590 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h77fa898_1.conda - sha256: 1911c29975ec99b6b906904040c855772ccb265a1c79d5d75c8ceec4ed89cd63 - md5: cc3573974587f12dda90d96e3e55a702 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h767d61c_2.conda + sha256: 1a3130e0b9267e781b89399580f3163632d59fe5b0142900d63052ab1a53490e + md5: 06d02030237f4d5b3d9a7e7d348fe3c6 depends: - - _libgcc_mutex 0.1 conda_forge + - __glibc >=2.17,<3.0.a0 arch: x86_64 platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 460992 - timestamp: 1729027639220 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_1.conda - sha256: 5aa53874a5e57a00f2e0c2e2910684eb674429cd5fcb803619b226a73e89aedf - md5: 376f0e73abbda6d23c0cb749adc195ef + size: 459862 + timestamp: 1740240588123 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_2.conda + sha256: 4e303711fb7413bf98995beac58e731073099d7a669a3b81e49330ca8da05174 + md5: b11c09d9463daf4cae492d29806b1889 arch: aarch64 platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 463521 - timestamp: 1729089357313 + size: 462783 + timestamp: 1740241005079 - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-31_h7ac8fdf_openblas.conda build_number: 31 sha256: f583661921456e798aba10972a8abbd9d33571c655c1f66eff450edc9cbefcf3 @@ -861,6 +870,7 @@ packages: arch: x86_64 platform: linux license: BSD-3-Clause + license_family: BSD size: 16790 timestamp: 1740087997375 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-31_h411afd4_openblas.conda @@ -876,6 +886,7 @@ packages: arch: aarch64 platform: linux license: BSD-3-Clause + license_family: BSD size: 16845 timestamp: 1740087923843 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-31_hc9a63f6_openblas.conda @@ -891,6 +902,7 @@ packages: arch: arm64 platform: osx license: BSD-3-Clause + license_family: BSD size: 17033 timestamp: 1740088134988 - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda @@ -1149,50 +1161,51 @@ packages: license: Unlicense size: 898767 timestamp: 1739953312379 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-hc0a3c3a_1.conda - sha256: 4661af0eb9bdcbb5fb33e5d0023b001ad4be828fccdcc56500059d56f9869462 - md5: 234a5554c53625688d51062645337328 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-h8f9b012_2.conda + sha256: 8f5bd92e4a24e1d35ba015c5252e8f818898478cb3bc50bd8b12ab54707dc4da + md5: a78c856b6dc6bf4ea8daeb9beaaa3fb0 depends: - - libgcc 14.2.0 h77fa898_1 + - __glibc >=2.17,<3.0.a0 + - libgcc 14.2.0 h767d61c_2 arch: x86_64 platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 3893695 - timestamp: 1729027746910 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_1.conda - sha256: 519556d2c93f1b487091ce046d62e762286177f4a670ec10e16005177d0bcab3 - md5: 37f489acd39e22b623d2d1e5ac6d195c + size: 3884556 + timestamp: 1740240685253 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_2.conda + sha256: c30a74bc996013907f6d9f344da007c26d98ef9a0831151cd50aece3125c45d5 + md5: eadee2cda99697e29411c1013c187b92 depends: - - libgcc 14.2.0 he277a41_1 + - libgcc 14.2.0 he277a41_2 arch: aarch64 platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 3816794 - timestamp: 1729089463404 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_1.conda - sha256: 25bb30b827d4f6d6f0522cc0579e431695503822f144043b93c50237017fffd8 - md5: 8371ac6457591af2cf6159439c1fd051 + size: 3810779 + timestamp: 1740241094774 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_2.conda + sha256: e86f38b007cf97cc2c67cd519f2de12a313c4ee3f5ef11652ad08932a5e34189 + md5: c75da67f045c2627f59e6fcb5f4e3a9b depends: - - libstdcxx 14.2.0 hc0a3c3a_1 + - libstdcxx 14.2.0 h8f9b012_2 arch: x86_64 platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 54105 - timestamp: 1729027780628 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_1.conda - sha256: 9f97461bd55a2745a7a0941f3502a047f15bfe7bb2952dc7fb204b3202f866fd - md5: 0e75771b8a03afae5a2c6ce71bc733f5 + size: 53830 + timestamp: 1740240722530 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_2.conda + sha256: 0107886ead6f255956d8e520f8dff260f9ab3d0d51512f18c52710c406e4b2df + md5: c934c1fddad582fcc385b608eb06a70c depends: - - libstdcxx 14.2.0 h3f4de04_1 + - libstdcxx 14.2.0 h3f4de04_2 arch: aarch64 platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 54133 - timestamp: 1729089498541 + size: 53715 + timestamp: 1740241126343 - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda sha256: 787eb542f055a2b3de553614b25f09eefb0a0931b0c87dbcce6efdfd92f04f18 md5: 40b61aab5c7ba9ff276c41cfffe6b80b @@ -1288,48 +1301,48 @@ packages: license_family: APACHE size: 280830 timestamp: 1736986295869 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022205-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022305-release.conda noarch: python - sha256: a4b60cd65edc61629b10617ad28376f6fafec207e9df35dccd97081d47bd7287 - md5: 89ff35bb811c04bb8d4f69a3e176b445 + sha256: ae0d6d0179f5bad00fe10eb7edf77bac0dfe49908af67274d9373a53bf930575 + md5: 5789c7009871406d9fbfa5f3477459c6 depends: - - max-core ==25.2.0.dev2025022205 release - - max-python ==25.2.0.dev2025022205 release - - mojo-jupyter ==25.2.0.dev2025022205 release - - mblack ==25.2.0.dev2025022205 release + - max-core ==25.2.0.dev2025022305 release + - max-python ==25.2.0.dev2025022305 release + - mojo-jupyter ==25.2.0.dev2025022305 release + - mblack ==25.2.0.dev2025022305 release license: LicenseRef-Modular-Proprietary - size: 9889 - timestamp: 1740201380167 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022205-release.conda - sha256: 14616fa561632a7858f1b43fee2830a08bd6adcbb9876714c24b72687f316495 - md5: d5bad6719888ce70742d2b7c45a87b36 + size: 9896 + timestamp: 1740287828839 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022305-release.conda + sha256: 6b43069454540bbce505aa7d4e9babf2bebf96e740f0e4ade7ff2b4b3f6566dd + md5: 94d10eb5a70ea5f697816b31974f478c depends: - - mblack ==25.2.0.dev2025022205 release + - mblack ==25.2.0.dev2025022305 release license: LicenseRef-Modular-Proprietary - size: 243956720 - timestamp: 1740201380048 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022205-release.conda - sha256: 5086b2bd4348d9453a926eba0a2c903fb7e90377bf83c532f17c7bf00234f060 - md5: 9cad83acf5ab35e1410d5c37d480d7b0 + size: 243927259 + timestamp: 1740287885402 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022305-release.conda + sha256: c02f604c539e951abedf9d1dc7afd835d8ac63b5c60b7a5ae61c3a0480dce859 + md5: 7ce47e432a9a3251f0c1b9b66b077d32 depends: - - mblack ==25.2.0.dev2025022205 release + - mblack ==25.2.0.dev2025022305 release license: LicenseRef-Modular-Proprietary - size: 246750593 - timestamp: 1740201380167 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022205-release.conda - sha256: d3efc1acdcc133d3d8d8c9da8f3a8eb8a4d667992b32f5fa605fdfcc460d304d - md5: 94e7b104cf83e183e4c30a9881b910a7 + size: 246655331 + timestamp: 1740287828839 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022305-release.conda + sha256: be68f633c0631c269bd6f2e52e04267c468ca6bf08652f48b6a2db914ea44de2 + md5: 2b6052c5ac4f553fe4ed0e96250c847a depends: - - mblack ==25.2.0.dev2025022205 release + - mblack ==25.2.0.dev2025022305 release license: LicenseRef-Modular-Proprietary - size: 212393465 - timestamp: 1740202848149 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022205-release.conda + size: 212352955 + timestamp: 1740288883625 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022305-release.conda noarch: python - sha256: 73d71fade273fd0c50d230d2055d9f848f48cbccb5e129d47cc66eb370303121 - md5: b9ff7e746c60964a770a4a949df6edf9 + sha256: dbaa4eea8e85ab7a3d203de9a75a5d6293fa085702d82fca23ac076f2d1c6d22 + md5: a56cd315a64001d1a99c31d6e46f80ad depends: - - max-core ==25.2.0.dev2025022205 release + - max-core ==25.2.0.dev2025022305 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1367,14 +1380,14 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 120694172 - timestamp: 1740201380048 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022205-release.conda + size: 120689981 + timestamp: 1740287885402 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022305-release.conda noarch: python - sha256: f0fb6d2d56ecf06adbd0c66ea5ef79b8aba3c7f2dfb50b1acde92a39cf83c743 - md5: 5b4662a666c9a91e34c375cdeb328a0e + sha256: a139b3cded9cded160982295ec2cb74dd9ed925bdc95322c926ac1d59612a7c7 + md5: 86ce9b2811fd598ad33cf596c06897a0 depends: - - max-core ==25.2.0.dev2025022205 release + - max-core ==25.2.0.dev2025022305 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1412,14 +1425,14 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 123479562 - timestamp: 1740201380167 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022205-release.conda + size: 123462201 + timestamp: 1740287828839 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022305-release.conda noarch: python - sha256: d9229f708c042db724a0cc56b30d2b81d7a1ac86e3f28e541a9a05da0ea4a3e8 - md5: d2519e42d7c3a5aa6d2b5f597ba34c0c + sha256: aabc0951963258fc934d80749d20adb426476358bee150d7325543293107c730 + md5: b35a18f33826101e82eb91c1452db621 depends: - - max-core ==25.2.0.dev2025022205 release + - max-core ==25.2.0.dev2025022305 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1457,12 +1470,12 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 110154228 - timestamp: 1740202848149 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022205-release.conda + size: 110152903 + timestamp: 1740288883625 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022305-release.conda noarch: python - sha256: da6599faebf67d43c63618d55a0ebcfcba058ca80aaee80eccccf0c874ffaf14 - md5: 74aa857f5a6f1d4e004ef2d39b416f43 + sha256: 3af367ba319ca50244ac0717cdd56cde03fa20a9eab00431649fd71387abd573 + md5: 3fa8f1081981365c27ee4ae28a5aa2b7 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -1473,20 +1486,20 @@ packages: - typing_extensions >=v4.12.2 - python license: MIT - size: 130846 - timestamp: 1740201380167 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022205-release.conda + size: 130852 + timestamp: 1740287828839 +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022305-release.conda noarch: python - sha256: 9444c0b8c574e6efdee03d24fdd4340518313a796caf08f536a5798b9c7a6123 - md5: 7be2f23091dd2443ba395018d3005fcb + sha256: 6c73f5999862871787f7cc2f3dce40af3ee9fc70ad522a7416817a5b63106a19 + md5: 72ab111decd606a4f4deff785b539632 depends: - - max-core ==25.2.0.dev2025022205 release + - max-core ==25.2.0.dev2025022305 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22983 - timestamp: 1740201380167 + size: 22991 + timestamp: 1740287828839 - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda sha256: 1895f47b7d68581a6facde5cb13ab8c2764c2e53a76bd746f8f98910dc4e08fe md5: 29097e7ea634a45cc5386b95cac6568f diff --git a/examples/testing/magic.lock b/examples/testing/magic.lock index 2e46e07f29..b5308738e0 100644 --- a/examples/testing/magic.lock +++ b/examples/testing/magic.lock @@ -24,11 +24,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h77fa898_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hd5240d6_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h77fa898_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h767d61c_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hf1ad2bd_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h767d61c_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-31_h7ac8fdf_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda @@ -37,16 +37,16 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libsentencepiece-0.2.0-h8e10757_10.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.49.1-hee588c1_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-hc0a3c3a_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-h8f9b012_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022205-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022205-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022205-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022205-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022305-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022305-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022305-release.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-h2d0b736_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda @@ -89,11 +89,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20250104-pl5321h976ea20_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.6.4-h5ad3122_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.4.6-he21f813_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-14.2.0-he277a41_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-14.2.0-he9431aa_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-14.2.0-he277a41_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-14.2.0-he9431aa_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-31_h411afd4_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.4-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda @@ -102,16 +102,16 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsentencepiece-0.2.0-h6164ad9_10.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.20-h68df207_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.49.1-h5eb1b54_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022205-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022205-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022205-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022205-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022305-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022305-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022305-release.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-ha32ae93_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda @@ -163,11 +163,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.1-h3f77e49_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022205-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022205-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022205-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022205-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022305-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022305-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022305-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda @@ -421,6 +421,7 @@ packages: arch: x86_64 platform: linux license: GPL-3.0-only + license_family: GPL size: 671240 timestamp: 1740155456116 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_4.conda @@ -431,6 +432,7 @@ packages: arch: aarch64 platform: linux license: GPL-3.0-only + license_family: GPL size: 699058 timestamp: 1740155620594 - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda @@ -495,6 +497,7 @@ packages: arch: x86_64 platform: linux license: BSD-3-Clause + license_family: BSD size: 16859 timestamp: 1740087969120 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-31_h1a9f1db_openblas.conda @@ -513,6 +516,7 @@ packages: arch: aarch64 platform: linux license: BSD-3-Clause + license_family: BSD size: 16915 timestamp: 1740087911042 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-31_h10e41b3_openblas.conda @@ -531,6 +535,7 @@ packages: arch: arm64 platform: osx license: BSD-3-Clause + license_family: BSD size: 17123 timestamp: 1740088119350 - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-31_he106b2a_openblas.conda @@ -546,6 +551,7 @@ packages: arch: x86_64 platform: linux license: BSD-3-Clause + license_family: BSD size: 16796 timestamp: 1740087984429 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-31_hab92f65_openblas.conda @@ -561,6 +567,7 @@ packages: arch: aarch64 platform: linux license: BSD-3-Clause + license_family: BSD size: 16824 timestamp: 1740087917500 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-31_hb3479ef_openblas.conda @@ -576,6 +583,7 @@ packages: arch: arm64 platform: osx license: BSD-3-Clause + license_family: BSD size: 17032 timestamp: 1740088127097 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda @@ -701,83 +709,83 @@ packages: license_family: MIT size: 39020 timestamp: 1636488587153 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h77fa898_1.conda - sha256: 53eb8a79365e58849e7b1a068d31f4f9e718dc938d6f2c03e960345739a03569 - md5: 3cb76c3f10d3bc7f1105b2fc9db984df +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h767d61c_2.conda + sha256: 3a572d031cb86deb541d15c1875aaa097baefc0c580b54dc61f5edab99215792 + md5: ef504d1acbd74b7cc6849ef8af47dd03 depends: - - _libgcc_mutex 0.1 conda_forge + - __glibc >=2.17,<3.0.a0 - _openmp_mutex >=4.5 constrains: - - libgomp 14.2.0 h77fa898_1 - - libgcc-ng ==14.2.0=*_1 + - libgomp 14.2.0 h767d61c_2 + - libgcc-ng ==14.2.0=*_2 arch: x86_64 platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 848745 - timestamp: 1729027721139 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-14.2.0-he277a41_1.conda - sha256: 5d56757ccad208c79214395b00d006d8d18929a4ba49c47bd9460789a7620943 - md5: 511b511c5445e324066c3377481bcab8 + size: 847885 + timestamp: 1740240653082 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-14.2.0-he277a41_2.conda + sha256: a57f7f9ba2a12f56eafdcd25b6d75f7be10b8fc1a802a58b76a77ca8c66f4503 + md5: 6b4268a60b10f29257b51b9b67ff8d76 depends: - _openmp_mutex >=4.5 constrains: - - libgcc-ng ==14.2.0=*_1 - - libgomp 14.2.0 he277a41_1 + - libgcc-ng ==14.2.0=*_2 + - libgomp 14.2.0 he277a41_2 arch: aarch64 platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 535243 - timestamp: 1729089435134 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_1.conda - sha256: 3a76969c80e9af8b6e7a55090088bc41da4cffcde9e2c71b17f44d37b7cb87f7 - md5: e39480b9ca41323497b05492a63bc35b + size: 535507 + timestamp: 1740241069780 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_2.conda + sha256: fb7558c328b38b2f9d2e412c48da7890e7721ba018d733ebdfea57280df01904 + md5: a2222a6ada71fb478682efe483ce0f92 depends: - - libgcc 14.2.0 h77fa898_1 + - libgcc 14.2.0 h767d61c_2 arch: x86_64 platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 54142 - timestamp: 1729027726517 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-14.2.0-he9431aa_1.conda - sha256: 9b5cf168a6c7361cae869cb74b716766ee7c6d6b3f6172b32ba9bf91135efdc4 - md5: 0694c249c61469f2c0f7e2990782af21 + size: 53758 + timestamp: 1740240660904 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-14.2.0-he9431aa_2.conda + sha256: 9647f75cddc18b07eebe6e1f21500eed50a6af2c43c84e831b4c7a597e10d226 + md5: 692c2bb75f32cfafb6799cf6d1c5d0e0 depends: - - libgcc 14.2.0 he277a41_1 + - libgcc 14.2.0 he277a41_2 arch: aarch64 platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 54104 - timestamp: 1729089444587 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_1.conda - sha256: fc9e7f22a17faf74da904ebfc4d88699013d2992e55505e4aa0eb01770290977 - md5: f1fd30127802683586f768875127a987 + size: 53622 + timestamp: 1740241074834 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_2.conda + sha256: e05263e8960da03c341650f2a3ffa4ccae4e111cb198e8933a2908125459e5a6 + md5: fb54c4ea68b460c278d26eea89cfbcc3 depends: - - libgfortran5 14.2.0 hd5240d6_1 + - libgfortran5 14.2.0 hf1ad2bd_2 constrains: - - libgfortran-ng ==14.2.0=*_1 + - libgfortran-ng ==14.2.0=*_2 arch: x86_64 platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 53997 - timestamp: 1729027752995 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_1.conda - sha256: cb66e411fa32a5c6040f4e5e2a63c00897aae4c3133a9c004c2e929ccf19575b - md5: 0294b92d2f47a240bebb1e3336b495f1 + size: 53733 + timestamp: 1740240690977 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_2.conda + sha256: 996d3c0505301901a7ab23b5e7daad21635d1c065240bb0f4faf7e4f75d7f49d + md5: d8b9d9dc0c8cd97d375b48e55947ba70 depends: - - libgfortran5 14.2.0 hb6113d0_1 + - libgfortran5 14.2.0 hb6113d0_2 constrains: - - libgfortran-ng ==14.2.0=*_1 + - libgfortran-ng ==14.2.0=*_2 arch: aarch64 platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 54105 - timestamp: 1729089471124 + size: 53611 + timestamp: 1740241100147 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda sha256: 44e541b4821c96b28b27fef5630883a60ce4fee91fd9c79f25a199f8f73f337b md5: 4a55d9e169114b2b90d3ec4604cd7bbf @@ -789,10 +797,11 @@ packages: license_family: GPL size: 110233 timestamp: 1707330749033 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hd5240d6_1.conda - sha256: d149a37ca73611e425041f33b9d8dbed6e52ec506fe8cc1fc0ee054bddeb6d5d - md5: 9822b874ea29af082e5d36098d25427d +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hf1ad2bd_2.conda + sha256: c17b7cf3073a1f4e1f34d50872934fa326346e104d3c445abc1e62481ad6085c + md5: 556a4fdfac7287d349b8f09aba899693 depends: + - __glibc >=2.17,<3.0.a0 - libgcc >=14.2.0 constrains: - libgfortran 14.2.0 @@ -800,11 +809,11 @@ packages: platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 1462645 - timestamp: 1729027735353 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_1.conda - sha256: a87ff46d19916403cbf68cf1d785bf56b4d1ab7b2552468d2ea775d70782493f - md5: fc068e11b10e18f184e027782baa12b6 + size: 1461978 + timestamp: 1740240671964 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_2.conda + sha256: 7b9e1d3666a00e5a52e5d43c003bd1c73ab472804be513c070aaedca9c4c2a9a + md5: cd754566661513808ef2408c4ab99a2f depends: - libgcc >=14.2.0 constrains: @@ -813,8 +822,8 @@ packages: platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 1102158 - timestamp: 1729089452640 + size: 1100765 + timestamp: 1740241083241 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda sha256: bafc679eedb468a86aa4636061c55966186399ee0a04b605920d208d97ac579a md5: 66ac81d54e95c534ae488726c1f698ea @@ -828,26 +837,26 @@ packages: license_family: GPL size: 997381 timestamp: 1707330687590 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h77fa898_1.conda - sha256: 1911c29975ec99b6b906904040c855772ccb265a1c79d5d75c8ceec4ed89cd63 - md5: cc3573974587f12dda90d96e3e55a702 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h767d61c_2.conda + sha256: 1a3130e0b9267e781b89399580f3163632d59fe5b0142900d63052ab1a53490e + md5: 06d02030237f4d5b3d9a7e7d348fe3c6 depends: - - _libgcc_mutex 0.1 conda_forge + - __glibc >=2.17,<3.0.a0 arch: x86_64 platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 460992 - timestamp: 1729027639220 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_1.conda - sha256: 5aa53874a5e57a00f2e0c2e2910684eb674429cd5fcb803619b226a73e89aedf - md5: 376f0e73abbda6d23c0cb749adc195ef + size: 459862 + timestamp: 1740240588123 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_2.conda + sha256: 4e303711fb7413bf98995beac58e731073099d7a669a3b81e49330ca8da05174 + md5: b11c09d9463daf4cae492d29806b1889 arch: aarch64 platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 463521 - timestamp: 1729089357313 + size: 462783 + timestamp: 1740241005079 - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-31_h7ac8fdf_openblas.conda build_number: 31 sha256: f583661921456e798aba10972a8abbd9d33571c655c1f66eff450edc9cbefcf3 @@ -861,6 +870,7 @@ packages: arch: x86_64 platform: linux license: BSD-3-Clause + license_family: BSD size: 16790 timestamp: 1740087997375 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-31_h411afd4_openblas.conda @@ -876,6 +886,7 @@ packages: arch: aarch64 platform: linux license: BSD-3-Clause + license_family: BSD size: 16845 timestamp: 1740087923843 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-31_hc9a63f6_openblas.conda @@ -891,6 +902,7 @@ packages: arch: arm64 platform: osx license: BSD-3-Clause + license_family: BSD size: 17033 timestamp: 1740088134988 - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda @@ -1149,50 +1161,51 @@ packages: license: Unlicense size: 898767 timestamp: 1739953312379 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-hc0a3c3a_1.conda - sha256: 4661af0eb9bdcbb5fb33e5d0023b001ad4be828fccdcc56500059d56f9869462 - md5: 234a5554c53625688d51062645337328 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-h8f9b012_2.conda + sha256: 8f5bd92e4a24e1d35ba015c5252e8f818898478cb3bc50bd8b12ab54707dc4da + md5: a78c856b6dc6bf4ea8daeb9beaaa3fb0 depends: - - libgcc 14.2.0 h77fa898_1 + - __glibc >=2.17,<3.0.a0 + - libgcc 14.2.0 h767d61c_2 arch: x86_64 platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 3893695 - timestamp: 1729027746910 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_1.conda - sha256: 519556d2c93f1b487091ce046d62e762286177f4a670ec10e16005177d0bcab3 - md5: 37f489acd39e22b623d2d1e5ac6d195c + size: 3884556 + timestamp: 1740240685253 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_2.conda + sha256: c30a74bc996013907f6d9f344da007c26d98ef9a0831151cd50aece3125c45d5 + md5: eadee2cda99697e29411c1013c187b92 depends: - - libgcc 14.2.0 he277a41_1 + - libgcc 14.2.0 he277a41_2 arch: aarch64 platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 3816794 - timestamp: 1729089463404 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_1.conda - sha256: 25bb30b827d4f6d6f0522cc0579e431695503822f144043b93c50237017fffd8 - md5: 8371ac6457591af2cf6159439c1fd051 + size: 3810779 + timestamp: 1740241094774 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_2.conda + sha256: e86f38b007cf97cc2c67cd519f2de12a313c4ee3f5ef11652ad08932a5e34189 + md5: c75da67f045c2627f59e6fcb5f4e3a9b depends: - - libstdcxx 14.2.0 hc0a3c3a_1 + - libstdcxx 14.2.0 h8f9b012_2 arch: x86_64 platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 54105 - timestamp: 1729027780628 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_1.conda - sha256: 9f97461bd55a2745a7a0941f3502a047f15bfe7bb2952dc7fb204b3202f866fd - md5: 0e75771b8a03afae5a2c6ce71bc733f5 + size: 53830 + timestamp: 1740240722530 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_2.conda + sha256: 0107886ead6f255956d8e520f8dff260f9ab3d0d51512f18c52710c406e4b2df + md5: c934c1fddad582fcc385b608eb06a70c depends: - - libstdcxx 14.2.0 h3f4de04_1 + - libstdcxx 14.2.0 h3f4de04_2 arch: aarch64 platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 54133 - timestamp: 1729089498541 + size: 53715 + timestamp: 1740241126343 - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda sha256: 787eb542f055a2b3de553614b25f09eefb0a0931b0c87dbcce6efdfd92f04f18 md5: 40b61aab5c7ba9ff276c41cfffe6b80b @@ -1288,48 +1301,48 @@ packages: license_family: APACHE size: 280830 timestamp: 1736986295869 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022205-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022305-release.conda noarch: python - sha256: a4b60cd65edc61629b10617ad28376f6fafec207e9df35dccd97081d47bd7287 - md5: 89ff35bb811c04bb8d4f69a3e176b445 + sha256: ae0d6d0179f5bad00fe10eb7edf77bac0dfe49908af67274d9373a53bf930575 + md5: 5789c7009871406d9fbfa5f3477459c6 depends: - - max-core ==25.2.0.dev2025022205 release - - max-python ==25.2.0.dev2025022205 release - - mojo-jupyter ==25.2.0.dev2025022205 release - - mblack ==25.2.0.dev2025022205 release + - max-core ==25.2.0.dev2025022305 release + - max-python ==25.2.0.dev2025022305 release + - mojo-jupyter ==25.2.0.dev2025022305 release + - mblack ==25.2.0.dev2025022305 release license: LicenseRef-Modular-Proprietary - size: 9889 - timestamp: 1740201380167 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022205-release.conda - sha256: 14616fa561632a7858f1b43fee2830a08bd6adcbb9876714c24b72687f316495 - md5: d5bad6719888ce70742d2b7c45a87b36 + size: 9896 + timestamp: 1740287828839 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022305-release.conda + sha256: 6b43069454540bbce505aa7d4e9babf2bebf96e740f0e4ade7ff2b4b3f6566dd + md5: 94d10eb5a70ea5f697816b31974f478c depends: - - mblack ==25.2.0.dev2025022205 release + - mblack ==25.2.0.dev2025022305 release license: LicenseRef-Modular-Proprietary - size: 243956720 - timestamp: 1740201380048 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022205-release.conda - sha256: 5086b2bd4348d9453a926eba0a2c903fb7e90377bf83c532f17c7bf00234f060 - md5: 9cad83acf5ab35e1410d5c37d480d7b0 + size: 243927259 + timestamp: 1740287885402 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022305-release.conda + sha256: c02f604c539e951abedf9d1dc7afd835d8ac63b5c60b7a5ae61c3a0480dce859 + md5: 7ce47e432a9a3251f0c1b9b66b077d32 depends: - - mblack ==25.2.0.dev2025022205 release + - mblack ==25.2.0.dev2025022305 release license: LicenseRef-Modular-Proprietary - size: 246750593 - timestamp: 1740201380167 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022205-release.conda - sha256: d3efc1acdcc133d3d8d8c9da8f3a8eb8a4d667992b32f5fa605fdfcc460d304d - md5: 94e7b104cf83e183e4c30a9881b910a7 + size: 246655331 + timestamp: 1740287828839 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022305-release.conda + sha256: be68f633c0631c269bd6f2e52e04267c468ca6bf08652f48b6a2db914ea44de2 + md5: 2b6052c5ac4f553fe4ed0e96250c847a depends: - - mblack ==25.2.0.dev2025022205 release + - mblack ==25.2.0.dev2025022305 release license: LicenseRef-Modular-Proprietary - size: 212393465 - timestamp: 1740202848149 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022205-release.conda + size: 212352955 + timestamp: 1740288883625 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022305-release.conda noarch: python - sha256: 73d71fade273fd0c50d230d2055d9f848f48cbccb5e129d47cc66eb370303121 - md5: b9ff7e746c60964a770a4a949df6edf9 + sha256: dbaa4eea8e85ab7a3d203de9a75a5d6293fa085702d82fca23ac076f2d1c6d22 + md5: a56cd315a64001d1a99c31d6e46f80ad depends: - - max-core ==25.2.0.dev2025022205 release + - max-core ==25.2.0.dev2025022305 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1367,14 +1380,14 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 120694172 - timestamp: 1740201380048 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022205-release.conda + size: 120689981 + timestamp: 1740287885402 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022305-release.conda noarch: python - sha256: f0fb6d2d56ecf06adbd0c66ea5ef79b8aba3c7f2dfb50b1acde92a39cf83c743 - md5: 5b4662a666c9a91e34c375cdeb328a0e + sha256: a139b3cded9cded160982295ec2cb74dd9ed925bdc95322c926ac1d59612a7c7 + md5: 86ce9b2811fd598ad33cf596c06897a0 depends: - - max-core ==25.2.0.dev2025022205 release + - max-core ==25.2.0.dev2025022305 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1412,14 +1425,14 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 123479562 - timestamp: 1740201380167 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022205-release.conda + size: 123462201 + timestamp: 1740287828839 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022305-release.conda noarch: python - sha256: d9229f708c042db724a0cc56b30d2b81d7a1ac86e3f28e541a9a05da0ea4a3e8 - md5: d2519e42d7c3a5aa6d2b5f597ba34c0c + sha256: aabc0951963258fc934d80749d20adb426476358bee150d7325543293107c730 + md5: b35a18f33826101e82eb91c1452db621 depends: - - max-core ==25.2.0.dev2025022205 release + - max-core ==25.2.0.dev2025022305 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1457,12 +1470,12 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 110154228 - timestamp: 1740202848149 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022205-release.conda + size: 110152903 + timestamp: 1740288883625 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022305-release.conda noarch: python - sha256: da6599faebf67d43c63618d55a0ebcfcba058ca80aaee80eccccf0c874ffaf14 - md5: 74aa857f5a6f1d4e004ef2d39b416f43 + sha256: 3af367ba319ca50244ac0717cdd56cde03fa20a9eab00431649fd71387abd573 + md5: 3fa8f1081981365c27ee4ae28a5aa2b7 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -1473,20 +1486,20 @@ packages: - typing_extensions >=v4.12.2 - python license: MIT - size: 130846 - timestamp: 1740201380167 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022205-release.conda + size: 130852 + timestamp: 1740287828839 +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022305-release.conda noarch: python - sha256: 9444c0b8c574e6efdee03d24fdd4340518313a796caf08f536a5798b9c7a6123 - md5: 7be2f23091dd2443ba395018d3005fcb + sha256: 6c73f5999862871787f7cc2f3dce40af3ee9fc70ad522a7416817a5b63106a19 + md5: 72ab111decd606a4f4deff785b539632 depends: - - max-core ==25.2.0.dev2025022205 release + - max-core ==25.2.0.dev2025022305 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22983 - timestamp: 1740201380167 + size: 22991 + timestamp: 1740287828839 - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda sha256: 1895f47b7d68581a6facde5cb13ab8c2764c2e53a76bd746f8f98910dc4e08fe md5: 29097e7ea634a45cc5386b95cac6568f diff --git a/magic.lock b/magic.lock index 408e479333..3dd18eef08 100644 --- a/magic.lock +++ b/magic.lock @@ -24,11 +24,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h77fa898_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hd5240d6_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h77fa898_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h767d61c_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hf1ad2bd_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h767d61c_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-31_h7ac8fdf_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda @@ -37,17 +37,17 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libsentencepiece-0.2.0-h8e10757_10.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.49.1-hee588c1_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-hc0a3c3a_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-h8f9b012_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/lit-19.1.7-pyhd8ed1ab_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022205-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022205-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022205-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022205-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022305-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022305-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022305-release.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-h2d0b736_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda @@ -90,11 +90,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20250104-pl5321h976ea20_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.6.4-h5ad3122_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.4.6-he21f813_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-14.2.0-he277a41_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-14.2.0-he9431aa_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-14.2.0-he277a41_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-14.2.0-he9431aa_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-31_h411afd4_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.4-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda @@ -103,17 +103,17 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsentencepiece-0.2.0-h6164ad9_10.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.20-h68df207_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.49.1-h5eb1b54_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/lit-19.1.7-pyhd8ed1ab_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022205-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022205-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022205-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022205-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022305-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022305-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022305-release.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-ha32ae93_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda @@ -166,11 +166,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/lit-19.1.7-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022205-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022205-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022205-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022205-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022305-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022305-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022305-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda @@ -424,6 +424,7 @@ packages: arch: x86_64 platform: linux license: GPL-3.0-only + license_family: GPL size: 671240 timestamp: 1740155456116 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_4.conda @@ -434,6 +435,7 @@ packages: arch: aarch64 platform: linux license: GPL-3.0-only + license_family: GPL size: 699058 timestamp: 1740155620594 - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda @@ -498,6 +500,7 @@ packages: arch: x86_64 platform: linux license: BSD-3-Clause + license_family: BSD size: 16859 timestamp: 1740087969120 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-31_h1a9f1db_openblas.conda @@ -516,6 +519,7 @@ packages: arch: aarch64 platform: linux license: BSD-3-Clause + license_family: BSD size: 16915 timestamp: 1740087911042 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-31_h10e41b3_openblas.conda @@ -534,6 +538,7 @@ packages: arch: arm64 platform: osx license: BSD-3-Clause + license_family: BSD size: 17123 timestamp: 1740088119350 - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-31_he106b2a_openblas.conda @@ -549,6 +554,7 @@ packages: arch: x86_64 platform: linux license: BSD-3-Clause + license_family: BSD size: 16796 timestamp: 1740087984429 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-31_hab92f65_openblas.conda @@ -564,6 +570,7 @@ packages: arch: aarch64 platform: linux license: BSD-3-Clause + license_family: BSD size: 16824 timestamp: 1740087917500 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-31_hb3479ef_openblas.conda @@ -579,6 +586,7 @@ packages: arch: arm64 platform: osx license: BSD-3-Clause + license_family: BSD size: 17032 timestamp: 1740088127097 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda @@ -704,83 +712,83 @@ packages: license_family: MIT size: 39020 timestamp: 1636488587153 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h77fa898_1.conda - sha256: 53eb8a79365e58849e7b1a068d31f4f9e718dc938d6f2c03e960345739a03569 - md5: 3cb76c3f10d3bc7f1105b2fc9db984df +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h767d61c_2.conda + sha256: 3a572d031cb86deb541d15c1875aaa097baefc0c580b54dc61f5edab99215792 + md5: ef504d1acbd74b7cc6849ef8af47dd03 depends: - - _libgcc_mutex 0.1 conda_forge + - __glibc >=2.17,<3.0.a0 - _openmp_mutex >=4.5 constrains: - - libgomp 14.2.0 h77fa898_1 - - libgcc-ng ==14.2.0=*_1 + - libgomp 14.2.0 h767d61c_2 + - libgcc-ng ==14.2.0=*_2 arch: x86_64 platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 848745 - timestamp: 1729027721139 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-14.2.0-he277a41_1.conda - sha256: 5d56757ccad208c79214395b00d006d8d18929a4ba49c47bd9460789a7620943 - md5: 511b511c5445e324066c3377481bcab8 + size: 847885 + timestamp: 1740240653082 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-14.2.0-he277a41_2.conda + sha256: a57f7f9ba2a12f56eafdcd25b6d75f7be10b8fc1a802a58b76a77ca8c66f4503 + md5: 6b4268a60b10f29257b51b9b67ff8d76 depends: - _openmp_mutex >=4.5 constrains: - - libgcc-ng ==14.2.0=*_1 - - libgomp 14.2.0 he277a41_1 + - libgcc-ng ==14.2.0=*_2 + - libgomp 14.2.0 he277a41_2 arch: aarch64 platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 535243 - timestamp: 1729089435134 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_1.conda - sha256: 3a76969c80e9af8b6e7a55090088bc41da4cffcde9e2c71b17f44d37b7cb87f7 - md5: e39480b9ca41323497b05492a63bc35b + size: 535507 + timestamp: 1740241069780 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_2.conda + sha256: fb7558c328b38b2f9d2e412c48da7890e7721ba018d733ebdfea57280df01904 + md5: a2222a6ada71fb478682efe483ce0f92 depends: - - libgcc 14.2.0 h77fa898_1 + - libgcc 14.2.0 h767d61c_2 arch: x86_64 platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 54142 - timestamp: 1729027726517 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-14.2.0-he9431aa_1.conda - sha256: 9b5cf168a6c7361cae869cb74b716766ee7c6d6b3f6172b32ba9bf91135efdc4 - md5: 0694c249c61469f2c0f7e2990782af21 + size: 53758 + timestamp: 1740240660904 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-14.2.0-he9431aa_2.conda + sha256: 9647f75cddc18b07eebe6e1f21500eed50a6af2c43c84e831b4c7a597e10d226 + md5: 692c2bb75f32cfafb6799cf6d1c5d0e0 depends: - - libgcc 14.2.0 he277a41_1 + - libgcc 14.2.0 he277a41_2 arch: aarch64 platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 54104 - timestamp: 1729089444587 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_1.conda - sha256: fc9e7f22a17faf74da904ebfc4d88699013d2992e55505e4aa0eb01770290977 - md5: f1fd30127802683586f768875127a987 + size: 53622 + timestamp: 1740241074834 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_2.conda + sha256: e05263e8960da03c341650f2a3ffa4ccae4e111cb198e8933a2908125459e5a6 + md5: fb54c4ea68b460c278d26eea89cfbcc3 depends: - - libgfortran5 14.2.0 hd5240d6_1 + - libgfortran5 14.2.0 hf1ad2bd_2 constrains: - - libgfortran-ng ==14.2.0=*_1 + - libgfortran-ng ==14.2.0=*_2 arch: x86_64 platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 53997 - timestamp: 1729027752995 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_1.conda - sha256: cb66e411fa32a5c6040f4e5e2a63c00897aae4c3133a9c004c2e929ccf19575b - md5: 0294b92d2f47a240bebb1e3336b495f1 + size: 53733 + timestamp: 1740240690977 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_2.conda + sha256: 996d3c0505301901a7ab23b5e7daad21635d1c065240bb0f4faf7e4f75d7f49d + md5: d8b9d9dc0c8cd97d375b48e55947ba70 depends: - - libgfortran5 14.2.0 hb6113d0_1 + - libgfortran5 14.2.0 hb6113d0_2 constrains: - - libgfortran-ng ==14.2.0=*_1 + - libgfortran-ng ==14.2.0=*_2 arch: aarch64 platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 54105 - timestamp: 1729089471124 + size: 53611 + timestamp: 1740241100147 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda sha256: 44e541b4821c96b28b27fef5630883a60ce4fee91fd9c79f25a199f8f73f337b md5: 4a55d9e169114b2b90d3ec4604cd7bbf @@ -792,10 +800,11 @@ packages: license_family: GPL size: 110233 timestamp: 1707330749033 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hd5240d6_1.conda - sha256: d149a37ca73611e425041f33b9d8dbed6e52ec506fe8cc1fc0ee054bddeb6d5d - md5: 9822b874ea29af082e5d36098d25427d +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hf1ad2bd_2.conda + sha256: c17b7cf3073a1f4e1f34d50872934fa326346e104d3c445abc1e62481ad6085c + md5: 556a4fdfac7287d349b8f09aba899693 depends: + - __glibc >=2.17,<3.0.a0 - libgcc >=14.2.0 constrains: - libgfortran 14.2.0 @@ -803,11 +812,11 @@ packages: platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 1462645 - timestamp: 1729027735353 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_1.conda - sha256: a87ff46d19916403cbf68cf1d785bf56b4d1ab7b2552468d2ea775d70782493f - md5: fc068e11b10e18f184e027782baa12b6 + size: 1461978 + timestamp: 1740240671964 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_2.conda + sha256: 7b9e1d3666a00e5a52e5d43c003bd1c73ab472804be513c070aaedca9c4c2a9a + md5: cd754566661513808ef2408c4ab99a2f depends: - libgcc >=14.2.0 constrains: @@ -816,8 +825,8 @@ packages: platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 1102158 - timestamp: 1729089452640 + size: 1100765 + timestamp: 1740241083241 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda sha256: bafc679eedb468a86aa4636061c55966186399ee0a04b605920d208d97ac579a md5: 66ac81d54e95c534ae488726c1f698ea @@ -831,26 +840,26 @@ packages: license_family: GPL size: 997381 timestamp: 1707330687590 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h77fa898_1.conda - sha256: 1911c29975ec99b6b906904040c855772ccb265a1c79d5d75c8ceec4ed89cd63 - md5: cc3573974587f12dda90d96e3e55a702 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h767d61c_2.conda + sha256: 1a3130e0b9267e781b89399580f3163632d59fe5b0142900d63052ab1a53490e + md5: 06d02030237f4d5b3d9a7e7d348fe3c6 depends: - - _libgcc_mutex 0.1 conda_forge + - __glibc >=2.17,<3.0.a0 arch: x86_64 platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 460992 - timestamp: 1729027639220 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_1.conda - sha256: 5aa53874a5e57a00f2e0c2e2910684eb674429cd5fcb803619b226a73e89aedf - md5: 376f0e73abbda6d23c0cb749adc195ef + size: 459862 + timestamp: 1740240588123 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_2.conda + sha256: 4e303711fb7413bf98995beac58e731073099d7a669a3b81e49330ca8da05174 + md5: b11c09d9463daf4cae492d29806b1889 arch: aarch64 platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 463521 - timestamp: 1729089357313 + size: 462783 + timestamp: 1740241005079 - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-31_h7ac8fdf_openblas.conda build_number: 31 sha256: f583661921456e798aba10972a8abbd9d33571c655c1f66eff450edc9cbefcf3 @@ -864,6 +873,7 @@ packages: arch: x86_64 platform: linux license: BSD-3-Clause + license_family: BSD size: 16790 timestamp: 1740087997375 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-31_h411afd4_openblas.conda @@ -879,6 +889,7 @@ packages: arch: aarch64 platform: linux license: BSD-3-Clause + license_family: BSD size: 16845 timestamp: 1740087923843 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-31_hc9a63f6_openblas.conda @@ -894,6 +905,7 @@ packages: arch: arm64 platform: osx license: BSD-3-Clause + license_family: BSD size: 17033 timestamp: 1740088134988 - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda @@ -1152,50 +1164,51 @@ packages: license: Unlicense size: 898767 timestamp: 1739953312379 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-hc0a3c3a_1.conda - sha256: 4661af0eb9bdcbb5fb33e5d0023b001ad4be828fccdcc56500059d56f9869462 - md5: 234a5554c53625688d51062645337328 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-h8f9b012_2.conda + sha256: 8f5bd92e4a24e1d35ba015c5252e8f818898478cb3bc50bd8b12ab54707dc4da + md5: a78c856b6dc6bf4ea8daeb9beaaa3fb0 depends: - - libgcc 14.2.0 h77fa898_1 + - __glibc >=2.17,<3.0.a0 + - libgcc 14.2.0 h767d61c_2 arch: x86_64 platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 3893695 - timestamp: 1729027746910 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_1.conda - sha256: 519556d2c93f1b487091ce046d62e762286177f4a670ec10e16005177d0bcab3 - md5: 37f489acd39e22b623d2d1e5ac6d195c + size: 3884556 + timestamp: 1740240685253 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_2.conda + sha256: c30a74bc996013907f6d9f344da007c26d98ef9a0831151cd50aece3125c45d5 + md5: eadee2cda99697e29411c1013c187b92 depends: - - libgcc 14.2.0 he277a41_1 + - libgcc 14.2.0 he277a41_2 arch: aarch64 platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 3816794 - timestamp: 1729089463404 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_1.conda - sha256: 25bb30b827d4f6d6f0522cc0579e431695503822f144043b93c50237017fffd8 - md5: 8371ac6457591af2cf6159439c1fd051 + size: 3810779 + timestamp: 1740241094774 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_2.conda + sha256: e86f38b007cf97cc2c67cd519f2de12a313c4ee3f5ef11652ad08932a5e34189 + md5: c75da67f045c2627f59e6fcb5f4e3a9b depends: - - libstdcxx 14.2.0 hc0a3c3a_1 + - libstdcxx 14.2.0 h8f9b012_2 arch: x86_64 platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 54105 - timestamp: 1729027780628 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_1.conda - sha256: 9f97461bd55a2745a7a0941f3502a047f15bfe7bb2952dc7fb204b3202f866fd - md5: 0e75771b8a03afae5a2c6ce71bc733f5 + size: 53830 + timestamp: 1740240722530 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_2.conda + sha256: 0107886ead6f255956d8e520f8dff260f9ab3d0d51512f18c52710c406e4b2df + md5: c934c1fddad582fcc385b608eb06a70c depends: - - libstdcxx 14.2.0 h3f4de04_1 + - libstdcxx 14.2.0 h3f4de04_2 arch: aarch64 platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 54133 - timestamp: 1729089498541 + size: 53715 + timestamp: 1740241126343 - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda sha256: 787eb542f055a2b3de553614b25f09eefb0a0931b0c87dbcce6efdfd92f04f18 md5: 40b61aab5c7ba9ff276c41cfffe6b80b @@ -1300,48 +1313,48 @@ packages: license_family: APACHE size: 280830 timestamp: 1736986295869 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022205-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022305-release.conda noarch: python - sha256: a4b60cd65edc61629b10617ad28376f6fafec207e9df35dccd97081d47bd7287 - md5: 89ff35bb811c04bb8d4f69a3e176b445 + sha256: ae0d6d0179f5bad00fe10eb7edf77bac0dfe49908af67274d9373a53bf930575 + md5: 5789c7009871406d9fbfa5f3477459c6 depends: - - max-core ==25.2.0.dev2025022205 release - - max-python ==25.2.0.dev2025022205 release - - mojo-jupyter ==25.2.0.dev2025022205 release - - mblack ==25.2.0.dev2025022205 release + - max-core ==25.2.0.dev2025022305 release + - max-python ==25.2.0.dev2025022305 release + - mojo-jupyter ==25.2.0.dev2025022305 release + - mblack ==25.2.0.dev2025022305 release license: LicenseRef-Modular-Proprietary - size: 9889 - timestamp: 1740201380167 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022205-release.conda - sha256: 14616fa561632a7858f1b43fee2830a08bd6adcbb9876714c24b72687f316495 - md5: d5bad6719888ce70742d2b7c45a87b36 + size: 9896 + timestamp: 1740287828839 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022305-release.conda + sha256: 6b43069454540bbce505aa7d4e9babf2bebf96e740f0e4ade7ff2b4b3f6566dd + md5: 94d10eb5a70ea5f697816b31974f478c depends: - - mblack ==25.2.0.dev2025022205 release + - mblack ==25.2.0.dev2025022305 release license: LicenseRef-Modular-Proprietary - size: 243956720 - timestamp: 1740201380048 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022205-release.conda - sha256: 5086b2bd4348d9453a926eba0a2c903fb7e90377bf83c532f17c7bf00234f060 - md5: 9cad83acf5ab35e1410d5c37d480d7b0 + size: 243927259 + timestamp: 1740287885402 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022305-release.conda + sha256: c02f604c539e951abedf9d1dc7afd835d8ac63b5c60b7a5ae61c3a0480dce859 + md5: 7ce47e432a9a3251f0c1b9b66b077d32 depends: - - mblack ==25.2.0.dev2025022205 release + - mblack ==25.2.0.dev2025022305 release license: LicenseRef-Modular-Proprietary - size: 246750593 - timestamp: 1740201380167 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022205-release.conda - sha256: d3efc1acdcc133d3d8d8c9da8f3a8eb8a4d667992b32f5fa605fdfcc460d304d - md5: 94e7b104cf83e183e4c30a9881b910a7 + size: 246655331 + timestamp: 1740287828839 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022305-release.conda + sha256: be68f633c0631c269bd6f2e52e04267c468ca6bf08652f48b6a2db914ea44de2 + md5: 2b6052c5ac4f553fe4ed0e96250c847a depends: - - mblack ==25.2.0.dev2025022205 release + - mblack ==25.2.0.dev2025022305 release license: LicenseRef-Modular-Proprietary - size: 212393465 - timestamp: 1740202848149 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022205-release.conda + size: 212352955 + timestamp: 1740288883625 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022305-release.conda noarch: python - sha256: 73d71fade273fd0c50d230d2055d9f848f48cbccb5e129d47cc66eb370303121 - md5: b9ff7e746c60964a770a4a949df6edf9 + sha256: dbaa4eea8e85ab7a3d203de9a75a5d6293fa085702d82fca23ac076f2d1c6d22 + md5: a56cd315a64001d1a99c31d6e46f80ad depends: - - max-core ==25.2.0.dev2025022205 release + - max-core ==25.2.0.dev2025022305 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1379,14 +1392,14 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 120694172 - timestamp: 1740201380048 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022205-release.conda + size: 120689981 + timestamp: 1740287885402 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022305-release.conda noarch: python - sha256: f0fb6d2d56ecf06adbd0c66ea5ef79b8aba3c7f2dfb50b1acde92a39cf83c743 - md5: 5b4662a666c9a91e34c375cdeb328a0e + sha256: a139b3cded9cded160982295ec2cb74dd9ed925bdc95322c926ac1d59612a7c7 + md5: 86ce9b2811fd598ad33cf596c06897a0 depends: - - max-core ==25.2.0.dev2025022205 release + - max-core ==25.2.0.dev2025022305 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1424,14 +1437,14 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 123479562 - timestamp: 1740201380167 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022205-release.conda + size: 123462201 + timestamp: 1740287828839 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022305-release.conda noarch: python - sha256: d9229f708c042db724a0cc56b30d2b81d7a1ac86e3f28e541a9a05da0ea4a3e8 - md5: d2519e42d7c3a5aa6d2b5f597ba34c0c + sha256: aabc0951963258fc934d80749d20adb426476358bee150d7325543293107c730 + md5: b35a18f33826101e82eb91c1452db621 depends: - - max-core ==25.2.0.dev2025022205 release + - max-core ==25.2.0.dev2025022305 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1469,12 +1482,12 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 110154228 - timestamp: 1740202848149 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022205-release.conda + size: 110152903 + timestamp: 1740288883625 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022305-release.conda noarch: python - sha256: da6599faebf67d43c63618d55a0ebcfcba058ca80aaee80eccccf0c874ffaf14 - md5: 74aa857f5a6f1d4e004ef2d39b416f43 + sha256: 3af367ba319ca50244ac0717cdd56cde03fa20a9eab00431649fd71387abd573 + md5: 3fa8f1081981365c27ee4ae28a5aa2b7 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -1485,20 +1498,20 @@ packages: - typing_extensions >=v4.12.2 - python license: MIT - size: 130846 - timestamp: 1740201380167 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022205-release.conda + size: 130852 + timestamp: 1740287828839 +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022305-release.conda noarch: python - sha256: 9444c0b8c574e6efdee03d24fdd4340518313a796caf08f536a5798b9c7a6123 - md5: 7be2f23091dd2443ba395018d3005fcb + sha256: 6c73f5999862871787f7cc2f3dce40af3ee9fc70ad522a7416817a5b63106a19 + md5: 72ab111decd606a4f4deff785b539632 depends: - - max-core ==25.2.0.dev2025022205 release + - max-core ==25.2.0.dev2025022305 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22983 - timestamp: 1740201380167 + size: 22991 + timestamp: 1740287828839 - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda sha256: 1895f47b7d68581a6facde5cb13ab8c2764c2e53a76bd746f8f98910dc4e08fe md5: 29097e7ea634a45cc5386b95cac6568f From 636a3d149055234e007f15f1d72e6551fd59033c Mon Sep 17 00:00:00 2001 From: abdul dakkak Date: Sun, 23 Feb 2025 18:16:32 -0800 Subject: [PATCH 449/509] [Kernels] Remove the get_tensorspec from ManagedTensorSlice Getting a TensorSpec from a ManagedTensorSpec is a dangerous operation that provides little value. Since TensorSpec could heap allocate, it could behaves in a way that is not what any user intends it to be. This also has the advantage of breaking the dep between ManagedTensorSlice and the Tensor type (which means we can move the type to the max package in a future PR). MODULAR_ORIG_COMMIT_REV_ID: 0287b01590e51f645e63cef377f321db44727668 --- stdlib/src/utils/index.mojo | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/stdlib/src/utils/index.mojo b/stdlib/src/utils/index.mojo index 47649ecd2a..67b13ce702 100644 --- a/stdlib/src/utils/index.mojo +++ b/stdlib/src/utils/index.mojo @@ -1086,7 +1086,7 @@ fn Index[ @always_inline -fn product[size: Int](tuple: IndexList[size, **_], end_idx: Int) -> Int: +fn product[size: Int](tuple: IndexList[size, **_], end_idx: Int = size) -> Int: """Computes a product of values in the tuple up to the given index. Parameters: From 5a8f456d5f8fb01860d2f11e1b519bbe199d8de9 Mon Sep 17 00:00:00 2001 From: abdul dakkak Date: Sun, 23 Feb 2025 18:30:36 -0800 Subject: [PATCH 450/509] [Kernels] Reconcile the two get_accum_types that we had This reconciles the two variable of get_accum_types that we had. MODULAR_ORIG_COMMIT_REV_ID: 4128792e4ee1f7af63da18cb3d711ae6d32164d8 --- stdlib/src/utils/numerics.mojo | 32 +++++++++++++++++++++++++++----- 1 file changed, 27 insertions(+), 5 deletions(-) diff --git a/stdlib/src/utils/numerics.mojo b/stdlib/src/utils/numerics.mojo index 5490eaea86..ef00fbbc79 100644 --- a/stdlib/src/utils/numerics.mojo +++ b/stdlib/src/utils/numerics.mojo @@ -1028,24 +1028,46 @@ fn isfinite[ @always_inline -fn get_accum_type[type: DType]() -> DType: +fn get_accum_type[ + type: DType, *, preferred_accum_type: DType = DType.float32 +]() -> DType: """Returns the recommended type for accumulation operations. - Half precision types can introduce numerical error if they are used + Half precision and float8 types can introduce numerical error if they are used in reduction/accumulation operations. This method returns a higher precision type to use for accumulation if a half precision types is provided, otherwise it returns the original type. + The rules are as follows: + - If the type is a float8 type, return a float16 type. + - If the type is a bfloat16 precision type, return a float32 type. + - If the type is a float16 precision type, return a float32 type if the + preferred_accum_type is float32, otherwise return a float16 type. + - Otherwise, return the original type. + Parameters: type: The type of some accumulation operation. + preferred_accum_type: The preferred type for accumulation. Returns: DType.float32 if type is a half-precision float, type otherwise. """ - return DType.float32 if ( - type.is_half_float() or type in (DType.float8_e4m3fn, DType.float8_e5m2) - ) else type + @parameter + if type.is_float8(): + return DType.float16 + elif type is DType.bfloat16: + return DType.float32 + elif type is DType.float16: + # fp16 accumulation can be done in fp16 or fp32. Use fp16 by default for better + # performance and use fp32 only when it's specified via preferred type. + @parameter + if preferred_accum_type is DType.float32: + return preferred_accum_type + else: + return DType.float16 + else: + return type # ===----------------------------------------------------------------------=== # From 6345f18e0b0944d0ba5b6a9954a4dafb4101d2fe Mon Sep 17 00:00:00 2001 From: modularbot Date: Mon, 24 Feb 2025 07:40:28 +0000 Subject: [PATCH 451/509] Update lockfiles to point to latest nightly version: 25.2.0.dev2025022405 --- examples/life/magic.lock | 194 +++++++++++++++++----------------- examples/magic.lock | 191 ++++++++++++++++----------------- examples/operators/magic.lock | 191 ++++++++++++++++----------------- examples/testing/magic.lock | 191 ++++++++++++++++----------------- magic.lock | 191 ++++++++++++++++----------------- 5 files changed, 473 insertions(+), 485 deletions(-) diff --git a/examples/life/magic.lock b/examples/life/magic.lock index 880b74c623..847eb71184 100644 --- a/examples/life/magic.lock +++ b/examples/life/magic.lock @@ -103,11 +103,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.6-h8d12d68_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.10.0-h5888daf_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022305-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022305-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022305-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022305-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022405-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022405-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022405-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022405-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022405-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/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda @@ -129,7 +129,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.1-py312hbf22597_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/rav1e-0.6.6-he8a937b_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/sdl2-2.32.50-h9b8e6db_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/sdl2_image-2.8.2-h06ee604_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/sdl2_mixer-2.6.3-h8830914_1.conda @@ -258,11 +258,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.6-h2e0c361_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.10.0-h5ad3122_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022305-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022305-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022305-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022305-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022405-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022405-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022405-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022405-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022405-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/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-ha32ae93_3.conda @@ -284,7 +284,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.12-5_cp312.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyzmq-26.2.1-py312h2427ae1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/rav1e-0.6.6-h1d8f897_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8fc344f_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8382b9d_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sdl2-2.32.50-h7851d19_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sdl2_image-2.8.2-hd95cb85_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sdl2_mixer-2.6.3-h422cae6_1.conda @@ -384,11 +384,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.5.0-h2471fea_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022305-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022305-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022305-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022305-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022405-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022405-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022405-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022405-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022405-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/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda @@ -408,7 +408,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-5_cp312.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.1-py312hf4875e0_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/rav1e-0.6.6-h69fbcac_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h92ec313_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sdl2-2.32.50-h994913f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sdl2_image-2.8.2-h376e2e1_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sdl2_mixer-2.6.3-h4fe3bdc_1.conda @@ -3498,48 +3498,48 @@ packages: license_family: BSD size: 184953 timestamp: 1733740984533 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022305-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022405-release.conda noarch: python - sha256: ae0d6d0179f5bad00fe10eb7edf77bac0dfe49908af67274d9373a53bf930575 - md5: 5789c7009871406d9fbfa5f3477459c6 + sha256: a128828563f8128aeddcf2a3b8b229917ff0986de7231f652b2f0066a8cfeab6 + md5: c012465ba92d1c62bae90cf8fb92cbc4 depends: - - max-core ==25.2.0.dev2025022305 release - - max-python ==25.2.0.dev2025022305 release - - mojo-jupyter ==25.2.0.dev2025022305 release - - mblack ==25.2.0.dev2025022305 release + - max-core ==25.2.0.dev2025022405 release + - max-python ==25.2.0.dev2025022405 release + - mojo-jupyter ==25.2.0.dev2025022405 release + - mblack ==25.2.0.dev2025022405 release license: LicenseRef-Modular-Proprietary - size: 9896 - timestamp: 1740287828839 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022305-release.conda - sha256: 6b43069454540bbce505aa7d4e9babf2bebf96e740f0e4ade7ff2b4b3f6566dd - md5: 94d10eb5a70ea5f697816b31974f478c + size: 9901 + timestamp: 1740374150250 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022405-release.conda + sha256: 4550f601e214abb591f8bd915ee1a1ba4ee212eb12272bc12261dfb2e58e4540 + md5: 42905e60460b0fdb3da5eb3230b80441 depends: - - mblack ==25.2.0.dev2025022305 release + - mblack ==25.2.0.dev2025022405 release license: LicenseRef-Modular-Proprietary - size: 243927259 - timestamp: 1740287885402 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022305-release.conda - sha256: c02f604c539e951abedf9d1dc7afd835d8ac63b5c60b7a5ae61c3a0480dce859 - md5: 7ce47e432a9a3251f0c1b9b66b077d32 + size: 243853116 + timestamp: 1740374225756 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022405-release.conda + sha256: b8db8f65548d16233315abbf47e3189fc678d209bb92a3386864b639c9fe4ee3 + md5: c9710a57101a49fe9fc381b37f2fac1d depends: - - mblack ==25.2.0.dev2025022305 release + - mblack ==25.2.0.dev2025022405 release license: LicenseRef-Modular-Proprietary - size: 246655331 - timestamp: 1740287828839 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022305-release.conda - sha256: be68f633c0631c269bd6f2e52e04267c468ca6bf08652f48b6a2db914ea44de2 - md5: 2b6052c5ac4f553fe4ed0e96250c847a + size: 246555186 + timestamp: 1740374150249 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022405-release.conda + sha256: a2af65d4b6412896cd4684424a2002455f9ae32c96638caed09d1752fce83f41 + md5: 6aff7b2bcdc6777c56698ec267cc5de8 depends: - - mblack ==25.2.0.dev2025022305 release + - mblack ==25.2.0.dev2025022405 release license: LicenseRef-Modular-Proprietary - size: 212352955 - timestamp: 1740288883625 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022305-release.conda + size: 212297233 + timestamp: 1740375201832 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022405-release.conda noarch: python - sha256: dbaa4eea8e85ab7a3d203de9a75a5d6293fa085702d82fca23ac076f2d1c6d22 - md5: a56cd315a64001d1a99c31d6e46f80ad + sha256: 924f15e953e2d050d2a4baa8b40b83385a9d0d9452b8d3071f9220ad77f108ed + md5: fad312f931cf1eeb89fbfc6022512883 depends: - - max-core ==25.2.0.dev2025022305 release + - max-core ==25.2.0.dev2025022405 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -3577,14 +3577,14 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 120689981 - timestamp: 1740287885402 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022305-release.conda + size: 120685856 + timestamp: 1740374225756 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022405-release.conda noarch: python - sha256: a139b3cded9cded160982295ec2cb74dd9ed925bdc95322c926ac1d59612a7c7 - md5: 86ce9b2811fd598ad33cf596c06897a0 + sha256: db2f136c098a775f8f11a4ab8b2a6159ddb8093d4f1f9a9b4534c5eaea5408ac + md5: 3fc1f7c0ed635f25c01713db5481cb78 depends: - - max-core ==25.2.0.dev2025022305 release + - max-core ==25.2.0.dev2025022405 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -3622,14 +3622,14 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 123462201 - timestamp: 1740287828839 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022305-release.conda + size: 123454603 + timestamp: 1740374150250 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022405-release.conda noarch: python - sha256: aabc0951963258fc934d80749d20adb426476358bee150d7325543293107c730 - md5: b35a18f33826101e82eb91c1452db621 + sha256: 2e25b0874f42e448beb065f01b977142ff729938570b9f9d7974595f1ebd0076 + md5: f867571007458f5e0b95731995bb7f17 depends: - - max-core ==25.2.0.dev2025022305 release + - max-core ==25.2.0.dev2025022405 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -3667,12 +3667,12 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 110152903 - timestamp: 1740288883625 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022305-release.conda + size: 110137192 + timestamp: 1740375201832 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022405-release.conda noarch: python - sha256: 3af367ba319ca50244ac0717cdd56cde03fa20a9eab00431649fd71387abd573 - md5: 3fa8f1081981365c27ee4ae28a5aa2b7 + sha256: e435c909399e7413f6941e960143858acee4cf0d05dd6c02bf159e08cbde38a4 + md5: bc63e516c54cba1a99f76efd394e626e depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -3683,20 +3683,20 @@ packages: - typing_extensions >=v4.12.2 - python license: MIT - size: 130852 - timestamp: 1740287828839 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022305-release.conda + size: 130846 + timestamp: 1740374225756 +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022405-release.conda noarch: python - sha256: 6c73f5999862871787f7cc2f3dce40af3ee9fc70ad522a7416817a5b63106a19 - md5: 72ab111decd606a4f4deff785b539632 + sha256: 5ba32fa10c188a376a3b1673d59626d357231028c2ba71a4b06688998f01a5bb + md5: 6432cbc5b412f8351358b06534a68122 depends: - - max-core ==25.2.0.dev2025022305 release + - max-core ==25.2.0.dev2025022405 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22991 - timestamp: 1740287828839 + size: 22984 + timestamp: 1740374225756 - conda: https://conda.anaconda.org/conda-forge/linux-64/mpg123-1.32.9-hc50e24c_0.conda sha256: 39c4700fb3fbe403a77d8cc27352fa72ba744db487559d5d44bf8411bb4ea200 md5: c7f302fd11eeb0987a6a5e1f3aed6a21 @@ -4425,41 +4425,38 @@ packages: license_family: BSD size: 1526706 timestamp: 1694329743011 -- conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda - sha256: 5435cf39d039387fbdc977b0a762357ea909a7694d9528ab40f005e9208744d7 - md5: 47d31b792659ce70f470b5c82fdfb7a4 +- conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda + sha256: 2d6d0c026902561ed77cd646b5021aef2d4db22e57a5b0178dfc669231e06d2c + md5: 283b96675859b20a825f8fa30f311446 depends: - - libgcc-ng >=12 - - ncurses >=6.3,<7.0a0 + - libgcc >=13 + - ncurses >=6.5,<7.0a0 arch: x86_64 platform: linux license: GPL-3.0-only - license_family: GPL - size: 281456 - timestamp: 1679532220005 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8fc344f_1.conda - sha256: 4c99f7417419734e3797d45bc355e61c26520e111893b0d7087a01a7fbfbe3dd - md5: 105eb1e16bf83bfb2eb380a48032b655 + size: 282480 + timestamp: 1740379431762 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8382b9d_2.conda + sha256: 54bed3a3041befaa9f5acde4a37b1a02f44705b7796689574bcf9d7beaad2959 + md5: c0f08fc2737967edde1a272d4bf41ed9 depends: - - libgcc-ng >=12 - - ncurses >=6.3,<7.0a0 + - libgcc >=13 + - ncurses >=6.5,<7.0a0 arch: aarch64 platform: linux license: GPL-3.0-only - license_family: GPL - size: 294092 - timestamp: 1679532238805 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h92ec313_1.conda - sha256: a1dfa679ac3f6007362386576a704ad2d0d7a02e98f5d0b115f207a2da63e884 - md5: 8cbb776a2f641b943d413b3e19df71f4 + size: 291806 + timestamp: 1740380591358 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda + sha256: 7db04684d3904f6151eff8673270922d31da1eea7fa73254d01c437f49702e34 + md5: 63ef3f6e6d6d5c589e64f11263dc5676 depends: - - ncurses >=6.3,<7.0a0 + - ncurses >=6.5,<7.0a0 arch: arm64 platform: osx license: GPL-3.0-only - license_family: GPL - size: 250351 - timestamp: 1679532511311 + size: 252359 + timestamp: 1740379663071 - conda: https://conda.anaconda.org/conda-forge/linux-64/sdl2-2.32.50-h9b8e6db_0.conda sha256: a8c224fcd6ae01242f93d6e42995ce8377864e659dd385993d5506a3ac175c65 md5: 33c7b594dcdcef25a54704714dde417b @@ -5375,6 +5372,7 @@ packages: arch: x86_64 platform: linux license: BSD-3-Clause + license_family: BSD size: 567419 timestamp: 1740255350233 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.7-hbcf94c1_1.conda @@ -5387,6 +5385,7 @@ packages: arch: aarch64 platform: linux license: BSD-3-Clause + license_family: BSD size: 550364 timestamp: 1740255370714 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.7-h6491c7d_1.conda @@ -5398,5 +5397,6 @@ packages: arch: arm64 platform: osx license: BSD-3-Clause + license_family: BSD size: 399981 timestamp: 1740255382232 diff --git a/examples/magic.lock b/examples/magic.lock index a866e96ae0..66ae53094e 100644 --- a/examples/magic.lock +++ b/examples/magic.lock @@ -42,11 +42,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022305-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022305-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022305-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022305-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022405-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022405-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022405-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022405-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022405-release.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-h2d0b736_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py311h64a7726_0.conda @@ -58,7 +58,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.11-5_cp311.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.1-py311h7deb3e3_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-0.2.0-h074ec65_10.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-python-0.2.0-py311hf886319_10.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-spm-0.2.0-h8e10757_10.conda @@ -107,11 +107,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022305-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022305-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022305-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022305-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022405-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022405-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022405-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022405-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022405-release.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-ha32ae93_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py311h69ead2a_0.conda @@ -123,7 +123,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.11-5_cp311.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyzmq-26.2.1-py311h826da9f_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8fc344f_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8382b9d_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-0.2.0-h7028846_10.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-python-0.2.0-py311h5c441b1_10.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-spm-0.2.0-h6164ad9_10.conda @@ -163,11 +163,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.1-h3f77e49_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022305-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022305-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022305-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022305-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022405-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022405-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022405-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022405-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022405-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py311h7125741_0.conda @@ -179,7 +179,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.11-5_cp311.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.1-py311h01f2145_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h92ec313_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-0.2.0-hf736513_10.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-python-0.2.0-py311hb1a73f2_10.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-spm-0.2.0-he13a0af_10.conda @@ -1301,48 +1301,48 @@ packages: license_family: APACHE size: 280830 timestamp: 1736986295869 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022305-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022405-release.conda noarch: python - sha256: ae0d6d0179f5bad00fe10eb7edf77bac0dfe49908af67274d9373a53bf930575 - md5: 5789c7009871406d9fbfa5f3477459c6 + sha256: a128828563f8128aeddcf2a3b8b229917ff0986de7231f652b2f0066a8cfeab6 + md5: c012465ba92d1c62bae90cf8fb92cbc4 depends: - - max-core ==25.2.0.dev2025022305 release - - max-python ==25.2.0.dev2025022305 release - - mojo-jupyter ==25.2.0.dev2025022305 release - - mblack ==25.2.0.dev2025022305 release + - max-core ==25.2.0.dev2025022405 release + - max-python ==25.2.0.dev2025022405 release + - mojo-jupyter ==25.2.0.dev2025022405 release + - mblack ==25.2.0.dev2025022405 release license: LicenseRef-Modular-Proprietary - size: 9896 - timestamp: 1740287828839 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022305-release.conda - sha256: 6b43069454540bbce505aa7d4e9babf2bebf96e740f0e4ade7ff2b4b3f6566dd - md5: 94d10eb5a70ea5f697816b31974f478c + size: 9901 + timestamp: 1740374150250 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022405-release.conda + sha256: 4550f601e214abb591f8bd915ee1a1ba4ee212eb12272bc12261dfb2e58e4540 + md5: 42905e60460b0fdb3da5eb3230b80441 depends: - - mblack ==25.2.0.dev2025022305 release + - mblack ==25.2.0.dev2025022405 release license: LicenseRef-Modular-Proprietary - size: 243927259 - timestamp: 1740287885402 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022305-release.conda - sha256: c02f604c539e951abedf9d1dc7afd835d8ac63b5c60b7a5ae61c3a0480dce859 - md5: 7ce47e432a9a3251f0c1b9b66b077d32 + size: 243853116 + timestamp: 1740374225756 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022405-release.conda + sha256: b8db8f65548d16233315abbf47e3189fc678d209bb92a3386864b639c9fe4ee3 + md5: c9710a57101a49fe9fc381b37f2fac1d depends: - - mblack ==25.2.0.dev2025022305 release + - mblack ==25.2.0.dev2025022405 release license: LicenseRef-Modular-Proprietary - size: 246655331 - timestamp: 1740287828839 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022305-release.conda - sha256: be68f633c0631c269bd6f2e52e04267c468ca6bf08652f48b6a2db914ea44de2 - md5: 2b6052c5ac4f553fe4ed0e96250c847a + size: 246555186 + timestamp: 1740374150249 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022405-release.conda + sha256: a2af65d4b6412896cd4684424a2002455f9ae32c96638caed09d1752fce83f41 + md5: 6aff7b2bcdc6777c56698ec267cc5de8 depends: - - mblack ==25.2.0.dev2025022305 release + - mblack ==25.2.0.dev2025022405 release license: LicenseRef-Modular-Proprietary - size: 212352955 - timestamp: 1740288883625 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022305-release.conda + size: 212297233 + timestamp: 1740375201832 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022405-release.conda noarch: python - sha256: dbaa4eea8e85ab7a3d203de9a75a5d6293fa085702d82fca23ac076f2d1c6d22 - md5: a56cd315a64001d1a99c31d6e46f80ad + sha256: 924f15e953e2d050d2a4baa8b40b83385a9d0d9452b8d3071f9220ad77f108ed + md5: fad312f931cf1eeb89fbfc6022512883 depends: - - max-core ==25.2.0.dev2025022305 release + - max-core ==25.2.0.dev2025022405 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1380,14 +1380,14 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 120689981 - timestamp: 1740287885402 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022305-release.conda + size: 120685856 + timestamp: 1740374225756 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022405-release.conda noarch: python - sha256: a139b3cded9cded160982295ec2cb74dd9ed925bdc95322c926ac1d59612a7c7 - md5: 86ce9b2811fd598ad33cf596c06897a0 + sha256: db2f136c098a775f8f11a4ab8b2a6159ddb8093d4f1f9a9b4534c5eaea5408ac + md5: 3fc1f7c0ed635f25c01713db5481cb78 depends: - - max-core ==25.2.0.dev2025022305 release + - max-core ==25.2.0.dev2025022405 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1425,14 +1425,14 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 123462201 - timestamp: 1740287828839 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022305-release.conda + size: 123454603 + timestamp: 1740374150250 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022405-release.conda noarch: python - sha256: aabc0951963258fc934d80749d20adb426476358bee150d7325543293107c730 - md5: b35a18f33826101e82eb91c1452db621 + sha256: 2e25b0874f42e448beb065f01b977142ff729938570b9f9d7974595f1ebd0076 + md5: f867571007458f5e0b95731995bb7f17 depends: - - max-core ==25.2.0.dev2025022305 release + - max-core ==25.2.0.dev2025022405 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1470,12 +1470,12 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 110152903 - timestamp: 1740288883625 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022305-release.conda + size: 110137192 + timestamp: 1740375201832 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022405-release.conda noarch: python - sha256: 3af367ba319ca50244ac0717cdd56cde03fa20a9eab00431649fd71387abd573 - md5: 3fa8f1081981365c27ee4ae28a5aa2b7 + sha256: e435c909399e7413f6941e960143858acee4cf0d05dd6c02bf159e08cbde38a4 + md5: bc63e516c54cba1a99f76efd394e626e depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -1486,20 +1486,20 @@ packages: - typing_extensions >=v4.12.2 - python license: MIT - size: 130852 - timestamp: 1740287828839 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022305-release.conda + size: 130846 + timestamp: 1740374225756 +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022405-release.conda noarch: python - sha256: 6c73f5999862871787f7cc2f3dce40af3ee9fc70ad522a7416817a5b63106a19 - md5: 72ab111decd606a4f4deff785b539632 + sha256: 5ba32fa10c188a376a3b1673d59626d357231028c2ba71a4b06688998f01a5bb + md5: 6432cbc5b412f8351358b06534a68122 depends: - - max-core ==25.2.0.dev2025022305 release + - max-core ==25.2.0.dev2025022405 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22991 - timestamp: 1740287828839 + size: 22984 + timestamp: 1740374225756 - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda sha256: 1895f47b7d68581a6facde5cb13ab8c2764c2e53a76bd746f8f98910dc4e08fe md5: 29097e7ea634a45cc5386b95cac6568f @@ -1839,41 +1839,38 @@ packages: license_family: BSD size: 370170 timestamp: 1738271259321 -- conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda - sha256: 5435cf39d039387fbdc977b0a762357ea909a7694d9528ab40f005e9208744d7 - md5: 47d31b792659ce70f470b5c82fdfb7a4 +- conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda + sha256: 2d6d0c026902561ed77cd646b5021aef2d4db22e57a5b0178dfc669231e06d2c + md5: 283b96675859b20a825f8fa30f311446 depends: - - libgcc-ng >=12 - - ncurses >=6.3,<7.0a0 + - libgcc >=13 + - ncurses >=6.5,<7.0a0 arch: x86_64 platform: linux license: GPL-3.0-only - license_family: GPL - size: 281456 - timestamp: 1679532220005 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8fc344f_1.conda - sha256: 4c99f7417419734e3797d45bc355e61c26520e111893b0d7087a01a7fbfbe3dd - md5: 105eb1e16bf83bfb2eb380a48032b655 + size: 282480 + timestamp: 1740379431762 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8382b9d_2.conda + sha256: 54bed3a3041befaa9f5acde4a37b1a02f44705b7796689574bcf9d7beaad2959 + md5: c0f08fc2737967edde1a272d4bf41ed9 depends: - - libgcc-ng >=12 - - ncurses >=6.3,<7.0a0 + - libgcc >=13 + - ncurses >=6.5,<7.0a0 arch: aarch64 platform: linux license: GPL-3.0-only - license_family: GPL - size: 294092 - timestamp: 1679532238805 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h92ec313_1.conda - sha256: a1dfa679ac3f6007362386576a704ad2d0d7a02e98f5d0b115f207a2da63e884 - md5: 8cbb776a2f641b943d413b3e19df71f4 + size: 291806 + timestamp: 1740380591358 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda + sha256: 7db04684d3904f6151eff8673270922d31da1eea7fa73254d01c437f49702e34 + md5: 63ef3f6e6d6d5c589e64f11263dc5676 depends: - - ncurses >=6.3,<7.0a0 + - ncurses >=6.5,<7.0a0 arch: arm64 platform: osx license: GPL-3.0-only - license_family: GPL - size: 250351 - timestamp: 1679532511311 + size: 252359 + timestamp: 1740379663071 - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-0.2.0-h074ec65_10.conda sha256: 1c7b8a24296bf1309f866d363a1152a796d495f97a87d0c6f35b845e6c153250 md5: 4b2fa94e6d42231ffee6707dfe578915 diff --git a/examples/operators/magic.lock b/examples/operators/magic.lock index b5308738e0..1885b4409e 100644 --- a/examples/operators/magic.lock +++ b/examples/operators/magic.lock @@ -42,11 +42,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022305-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022305-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022305-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022305-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022405-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022405-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022405-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022405-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022405-release.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-h2d0b736_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda @@ -58,7 +58,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.1-py312hbf22597_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-0.2.0-hc8f76dd_10.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-python-0.2.0-py312hb6b8a2b_10.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-spm-0.2.0-h8e10757_10.conda @@ -107,11 +107,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022305-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022305-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022305-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022305-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022405-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022405-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022405-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022405-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022405-release.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-ha32ae93_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda @@ -123,7 +123,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.12-5_cp312.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyzmq-26.2.1-py312h2427ae1_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8fc344f_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8382b9d_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-0.2.0-h6c1b121_10.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-python-0.2.0-py312h197ff68_10.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-spm-0.2.0-h6164ad9_10.conda @@ -163,11 +163,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.1-h3f77e49_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022305-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022305-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022305-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022305-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022405-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022405-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022405-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022405-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022405-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda @@ -179,7 +179,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-5_cp312.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.1-py312hf4875e0_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h92ec313_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-0.2.0-h22a84ea_10.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-python-0.2.0-py312h155166a_10.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-spm-0.2.0-he13a0af_10.conda @@ -1301,48 +1301,48 @@ packages: license_family: APACHE size: 280830 timestamp: 1736986295869 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022305-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022405-release.conda noarch: python - sha256: ae0d6d0179f5bad00fe10eb7edf77bac0dfe49908af67274d9373a53bf930575 - md5: 5789c7009871406d9fbfa5f3477459c6 + sha256: a128828563f8128aeddcf2a3b8b229917ff0986de7231f652b2f0066a8cfeab6 + md5: c012465ba92d1c62bae90cf8fb92cbc4 depends: - - max-core ==25.2.0.dev2025022305 release - - max-python ==25.2.0.dev2025022305 release - - mojo-jupyter ==25.2.0.dev2025022305 release - - mblack ==25.2.0.dev2025022305 release + - max-core ==25.2.0.dev2025022405 release + - max-python ==25.2.0.dev2025022405 release + - mojo-jupyter ==25.2.0.dev2025022405 release + - mblack ==25.2.0.dev2025022405 release license: LicenseRef-Modular-Proprietary - size: 9896 - timestamp: 1740287828839 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022305-release.conda - sha256: 6b43069454540bbce505aa7d4e9babf2bebf96e740f0e4ade7ff2b4b3f6566dd - md5: 94d10eb5a70ea5f697816b31974f478c + size: 9901 + timestamp: 1740374150250 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022405-release.conda + sha256: 4550f601e214abb591f8bd915ee1a1ba4ee212eb12272bc12261dfb2e58e4540 + md5: 42905e60460b0fdb3da5eb3230b80441 depends: - - mblack ==25.2.0.dev2025022305 release + - mblack ==25.2.0.dev2025022405 release license: LicenseRef-Modular-Proprietary - size: 243927259 - timestamp: 1740287885402 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022305-release.conda - sha256: c02f604c539e951abedf9d1dc7afd835d8ac63b5c60b7a5ae61c3a0480dce859 - md5: 7ce47e432a9a3251f0c1b9b66b077d32 + size: 243853116 + timestamp: 1740374225756 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022405-release.conda + sha256: b8db8f65548d16233315abbf47e3189fc678d209bb92a3386864b639c9fe4ee3 + md5: c9710a57101a49fe9fc381b37f2fac1d depends: - - mblack ==25.2.0.dev2025022305 release + - mblack ==25.2.0.dev2025022405 release license: LicenseRef-Modular-Proprietary - size: 246655331 - timestamp: 1740287828839 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022305-release.conda - sha256: be68f633c0631c269bd6f2e52e04267c468ca6bf08652f48b6a2db914ea44de2 - md5: 2b6052c5ac4f553fe4ed0e96250c847a + size: 246555186 + timestamp: 1740374150249 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022405-release.conda + sha256: a2af65d4b6412896cd4684424a2002455f9ae32c96638caed09d1752fce83f41 + md5: 6aff7b2bcdc6777c56698ec267cc5de8 depends: - - mblack ==25.2.0.dev2025022305 release + - mblack ==25.2.0.dev2025022405 release license: LicenseRef-Modular-Proprietary - size: 212352955 - timestamp: 1740288883625 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022305-release.conda + size: 212297233 + timestamp: 1740375201832 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022405-release.conda noarch: python - sha256: dbaa4eea8e85ab7a3d203de9a75a5d6293fa085702d82fca23ac076f2d1c6d22 - md5: a56cd315a64001d1a99c31d6e46f80ad + sha256: 924f15e953e2d050d2a4baa8b40b83385a9d0d9452b8d3071f9220ad77f108ed + md5: fad312f931cf1eeb89fbfc6022512883 depends: - - max-core ==25.2.0.dev2025022305 release + - max-core ==25.2.0.dev2025022405 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1380,14 +1380,14 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 120689981 - timestamp: 1740287885402 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022305-release.conda + size: 120685856 + timestamp: 1740374225756 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022405-release.conda noarch: python - sha256: a139b3cded9cded160982295ec2cb74dd9ed925bdc95322c926ac1d59612a7c7 - md5: 86ce9b2811fd598ad33cf596c06897a0 + sha256: db2f136c098a775f8f11a4ab8b2a6159ddb8093d4f1f9a9b4534c5eaea5408ac + md5: 3fc1f7c0ed635f25c01713db5481cb78 depends: - - max-core ==25.2.0.dev2025022305 release + - max-core ==25.2.0.dev2025022405 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1425,14 +1425,14 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 123462201 - timestamp: 1740287828839 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022305-release.conda + size: 123454603 + timestamp: 1740374150250 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022405-release.conda noarch: python - sha256: aabc0951963258fc934d80749d20adb426476358bee150d7325543293107c730 - md5: b35a18f33826101e82eb91c1452db621 + sha256: 2e25b0874f42e448beb065f01b977142ff729938570b9f9d7974595f1ebd0076 + md5: f867571007458f5e0b95731995bb7f17 depends: - - max-core ==25.2.0.dev2025022305 release + - max-core ==25.2.0.dev2025022405 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1470,12 +1470,12 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 110152903 - timestamp: 1740288883625 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022305-release.conda + size: 110137192 + timestamp: 1740375201832 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022405-release.conda noarch: python - sha256: 3af367ba319ca50244ac0717cdd56cde03fa20a9eab00431649fd71387abd573 - md5: 3fa8f1081981365c27ee4ae28a5aa2b7 + sha256: e435c909399e7413f6941e960143858acee4cf0d05dd6c02bf159e08cbde38a4 + md5: bc63e516c54cba1a99f76efd394e626e depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -1486,20 +1486,20 @@ packages: - typing_extensions >=v4.12.2 - python license: MIT - size: 130852 - timestamp: 1740287828839 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022305-release.conda + size: 130846 + timestamp: 1740374225756 +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022405-release.conda noarch: python - sha256: 6c73f5999862871787f7cc2f3dce40af3ee9fc70ad522a7416817a5b63106a19 - md5: 72ab111decd606a4f4deff785b539632 + sha256: 5ba32fa10c188a376a3b1673d59626d357231028c2ba71a4b06688998f01a5bb + md5: 6432cbc5b412f8351358b06534a68122 depends: - - max-core ==25.2.0.dev2025022305 release + - max-core ==25.2.0.dev2025022405 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22991 - timestamp: 1740287828839 + size: 22984 + timestamp: 1740374225756 - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda sha256: 1895f47b7d68581a6facde5cb13ab8c2764c2e53a76bd746f8f98910dc4e08fe md5: 29097e7ea634a45cc5386b95cac6568f @@ -1836,41 +1836,38 @@ packages: license_family: BSD size: 364649 timestamp: 1738271263898 -- conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda - sha256: 5435cf39d039387fbdc977b0a762357ea909a7694d9528ab40f005e9208744d7 - md5: 47d31b792659ce70f470b5c82fdfb7a4 +- conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda + sha256: 2d6d0c026902561ed77cd646b5021aef2d4db22e57a5b0178dfc669231e06d2c + md5: 283b96675859b20a825f8fa30f311446 depends: - - libgcc-ng >=12 - - ncurses >=6.3,<7.0a0 + - libgcc >=13 + - ncurses >=6.5,<7.0a0 arch: x86_64 platform: linux license: GPL-3.0-only - license_family: GPL - size: 281456 - timestamp: 1679532220005 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8fc344f_1.conda - sha256: 4c99f7417419734e3797d45bc355e61c26520e111893b0d7087a01a7fbfbe3dd - md5: 105eb1e16bf83bfb2eb380a48032b655 + size: 282480 + timestamp: 1740379431762 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8382b9d_2.conda + sha256: 54bed3a3041befaa9f5acde4a37b1a02f44705b7796689574bcf9d7beaad2959 + md5: c0f08fc2737967edde1a272d4bf41ed9 depends: - - libgcc-ng >=12 - - ncurses >=6.3,<7.0a0 + - libgcc >=13 + - ncurses >=6.5,<7.0a0 arch: aarch64 platform: linux license: GPL-3.0-only - license_family: GPL - size: 294092 - timestamp: 1679532238805 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h92ec313_1.conda - sha256: a1dfa679ac3f6007362386576a704ad2d0d7a02e98f5d0b115f207a2da63e884 - md5: 8cbb776a2f641b943d413b3e19df71f4 + size: 291806 + timestamp: 1740380591358 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda + sha256: 7db04684d3904f6151eff8673270922d31da1eea7fa73254d01c437f49702e34 + md5: 63ef3f6e6d6d5c589e64f11263dc5676 depends: - - ncurses >=6.3,<7.0a0 + - ncurses >=6.5,<7.0a0 arch: arm64 platform: osx license: GPL-3.0-only - license_family: GPL - size: 250351 - timestamp: 1679532511311 + size: 252359 + timestamp: 1740379663071 - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-0.2.0-hc8f76dd_10.conda sha256: a1bde55ceb9dc5bd7879283d0f594a6ce65c07fda3de76230c65a4a5df47858a md5: 480e915dfc6c592615ef6f217e615aa6 diff --git a/examples/testing/magic.lock b/examples/testing/magic.lock index b5308738e0..1885b4409e 100644 --- a/examples/testing/magic.lock +++ b/examples/testing/magic.lock @@ -42,11 +42,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022305-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022305-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022305-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022305-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022405-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022405-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022405-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022405-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022405-release.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-h2d0b736_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda @@ -58,7 +58,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.1-py312hbf22597_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-0.2.0-hc8f76dd_10.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-python-0.2.0-py312hb6b8a2b_10.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-spm-0.2.0-h8e10757_10.conda @@ -107,11 +107,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022305-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022305-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022305-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022305-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022405-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022405-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022405-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022405-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022405-release.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-ha32ae93_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda @@ -123,7 +123,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.12-5_cp312.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyzmq-26.2.1-py312h2427ae1_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8fc344f_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8382b9d_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-0.2.0-h6c1b121_10.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-python-0.2.0-py312h197ff68_10.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-spm-0.2.0-h6164ad9_10.conda @@ -163,11 +163,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.1-h3f77e49_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022305-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022305-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022305-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022305-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022405-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022405-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022405-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022405-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022405-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda @@ -179,7 +179,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-5_cp312.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.1-py312hf4875e0_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h92ec313_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-0.2.0-h22a84ea_10.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-python-0.2.0-py312h155166a_10.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-spm-0.2.0-he13a0af_10.conda @@ -1301,48 +1301,48 @@ packages: license_family: APACHE size: 280830 timestamp: 1736986295869 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022305-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022405-release.conda noarch: python - sha256: ae0d6d0179f5bad00fe10eb7edf77bac0dfe49908af67274d9373a53bf930575 - md5: 5789c7009871406d9fbfa5f3477459c6 + sha256: a128828563f8128aeddcf2a3b8b229917ff0986de7231f652b2f0066a8cfeab6 + md5: c012465ba92d1c62bae90cf8fb92cbc4 depends: - - max-core ==25.2.0.dev2025022305 release - - max-python ==25.2.0.dev2025022305 release - - mojo-jupyter ==25.2.0.dev2025022305 release - - mblack ==25.2.0.dev2025022305 release + - max-core ==25.2.0.dev2025022405 release + - max-python ==25.2.0.dev2025022405 release + - mojo-jupyter ==25.2.0.dev2025022405 release + - mblack ==25.2.0.dev2025022405 release license: LicenseRef-Modular-Proprietary - size: 9896 - timestamp: 1740287828839 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022305-release.conda - sha256: 6b43069454540bbce505aa7d4e9babf2bebf96e740f0e4ade7ff2b4b3f6566dd - md5: 94d10eb5a70ea5f697816b31974f478c + size: 9901 + timestamp: 1740374150250 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022405-release.conda + sha256: 4550f601e214abb591f8bd915ee1a1ba4ee212eb12272bc12261dfb2e58e4540 + md5: 42905e60460b0fdb3da5eb3230b80441 depends: - - mblack ==25.2.0.dev2025022305 release + - mblack ==25.2.0.dev2025022405 release license: LicenseRef-Modular-Proprietary - size: 243927259 - timestamp: 1740287885402 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022305-release.conda - sha256: c02f604c539e951abedf9d1dc7afd835d8ac63b5c60b7a5ae61c3a0480dce859 - md5: 7ce47e432a9a3251f0c1b9b66b077d32 + size: 243853116 + timestamp: 1740374225756 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022405-release.conda + sha256: b8db8f65548d16233315abbf47e3189fc678d209bb92a3386864b639c9fe4ee3 + md5: c9710a57101a49fe9fc381b37f2fac1d depends: - - mblack ==25.2.0.dev2025022305 release + - mblack ==25.2.0.dev2025022405 release license: LicenseRef-Modular-Proprietary - size: 246655331 - timestamp: 1740287828839 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022305-release.conda - sha256: be68f633c0631c269bd6f2e52e04267c468ca6bf08652f48b6a2db914ea44de2 - md5: 2b6052c5ac4f553fe4ed0e96250c847a + size: 246555186 + timestamp: 1740374150249 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022405-release.conda + sha256: a2af65d4b6412896cd4684424a2002455f9ae32c96638caed09d1752fce83f41 + md5: 6aff7b2bcdc6777c56698ec267cc5de8 depends: - - mblack ==25.2.0.dev2025022305 release + - mblack ==25.2.0.dev2025022405 release license: LicenseRef-Modular-Proprietary - size: 212352955 - timestamp: 1740288883625 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022305-release.conda + size: 212297233 + timestamp: 1740375201832 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022405-release.conda noarch: python - sha256: dbaa4eea8e85ab7a3d203de9a75a5d6293fa085702d82fca23ac076f2d1c6d22 - md5: a56cd315a64001d1a99c31d6e46f80ad + sha256: 924f15e953e2d050d2a4baa8b40b83385a9d0d9452b8d3071f9220ad77f108ed + md5: fad312f931cf1eeb89fbfc6022512883 depends: - - max-core ==25.2.0.dev2025022305 release + - max-core ==25.2.0.dev2025022405 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1380,14 +1380,14 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 120689981 - timestamp: 1740287885402 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022305-release.conda + size: 120685856 + timestamp: 1740374225756 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022405-release.conda noarch: python - sha256: a139b3cded9cded160982295ec2cb74dd9ed925bdc95322c926ac1d59612a7c7 - md5: 86ce9b2811fd598ad33cf596c06897a0 + sha256: db2f136c098a775f8f11a4ab8b2a6159ddb8093d4f1f9a9b4534c5eaea5408ac + md5: 3fc1f7c0ed635f25c01713db5481cb78 depends: - - max-core ==25.2.0.dev2025022305 release + - max-core ==25.2.0.dev2025022405 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1425,14 +1425,14 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 123462201 - timestamp: 1740287828839 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022305-release.conda + size: 123454603 + timestamp: 1740374150250 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022405-release.conda noarch: python - sha256: aabc0951963258fc934d80749d20adb426476358bee150d7325543293107c730 - md5: b35a18f33826101e82eb91c1452db621 + sha256: 2e25b0874f42e448beb065f01b977142ff729938570b9f9d7974595f1ebd0076 + md5: f867571007458f5e0b95731995bb7f17 depends: - - max-core ==25.2.0.dev2025022305 release + - max-core ==25.2.0.dev2025022405 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1470,12 +1470,12 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 110152903 - timestamp: 1740288883625 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022305-release.conda + size: 110137192 + timestamp: 1740375201832 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022405-release.conda noarch: python - sha256: 3af367ba319ca50244ac0717cdd56cde03fa20a9eab00431649fd71387abd573 - md5: 3fa8f1081981365c27ee4ae28a5aa2b7 + sha256: e435c909399e7413f6941e960143858acee4cf0d05dd6c02bf159e08cbde38a4 + md5: bc63e516c54cba1a99f76efd394e626e depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -1486,20 +1486,20 @@ packages: - typing_extensions >=v4.12.2 - python license: MIT - size: 130852 - timestamp: 1740287828839 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022305-release.conda + size: 130846 + timestamp: 1740374225756 +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022405-release.conda noarch: python - sha256: 6c73f5999862871787f7cc2f3dce40af3ee9fc70ad522a7416817a5b63106a19 - md5: 72ab111decd606a4f4deff785b539632 + sha256: 5ba32fa10c188a376a3b1673d59626d357231028c2ba71a4b06688998f01a5bb + md5: 6432cbc5b412f8351358b06534a68122 depends: - - max-core ==25.2.0.dev2025022305 release + - max-core ==25.2.0.dev2025022405 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22991 - timestamp: 1740287828839 + size: 22984 + timestamp: 1740374225756 - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda sha256: 1895f47b7d68581a6facde5cb13ab8c2764c2e53a76bd746f8f98910dc4e08fe md5: 29097e7ea634a45cc5386b95cac6568f @@ -1836,41 +1836,38 @@ packages: license_family: BSD size: 364649 timestamp: 1738271263898 -- conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda - sha256: 5435cf39d039387fbdc977b0a762357ea909a7694d9528ab40f005e9208744d7 - md5: 47d31b792659ce70f470b5c82fdfb7a4 +- conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda + sha256: 2d6d0c026902561ed77cd646b5021aef2d4db22e57a5b0178dfc669231e06d2c + md5: 283b96675859b20a825f8fa30f311446 depends: - - libgcc-ng >=12 - - ncurses >=6.3,<7.0a0 + - libgcc >=13 + - ncurses >=6.5,<7.0a0 arch: x86_64 platform: linux license: GPL-3.0-only - license_family: GPL - size: 281456 - timestamp: 1679532220005 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8fc344f_1.conda - sha256: 4c99f7417419734e3797d45bc355e61c26520e111893b0d7087a01a7fbfbe3dd - md5: 105eb1e16bf83bfb2eb380a48032b655 + size: 282480 + timestamp: 1740379431762 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8382b9d_2.conda + sha256: 54bed3a3041befaa9f5acde4a37b1a02f44705b7796689574bcf9d7beaad2959 + md5: c0f08fc2737967edde1a272d4bf41ed9 depends: - - libgcc-ng >=12 - - ncurses >=6.3,<7.0a0 + - libgcc >=13 + - ncurses >=6.5,<7.0a0 arch: aarch64 platform: linux license: GPL-3.0-only - license_family: GPL - size: 294092 - timestamp: 1679532238805 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h92ec313_1.conda - sha256: a1dfa679ac3f6007362386576a704ad2d0d7a02e98f5d0b115f207a2da63e884 - md5: 8cbb776a2f641b943d413b3e19df71f4 + size: 291806 + timestamp: 1740380591358 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda + sha256: 7db04684d3904f6151eff8673270922d31da1eea7fa73254d01c437f49702e34 + md5: 63ef3f6e6d6d5c589e64f11263dc5676 depends: - - ncurses >=6.3,<7.0a0 + - ncurses >=6.5,<7.0a0 arch: arm64 platform: osx license: GPL-3.0-only - license_family: GPL - size: 250351 - timestamp: 1679532511311 + size: 252359 + timestamp: 1740379663071 - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-0.2.0-hc8f76dd_10.conda sha256: a1bde55ceb9dc5bd7879283d0f594a6ce65c07fda3de76230c65a4a5df47858a md5: 480e915dfc6c592615ef6f217e615aa6 diff --git a/magic.lock b/magic.lock index 3dd18eef08..9b89cf0403 100644 --- a/magic.lock +++ b/magic.lock @@ -43,11 +43,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/lit-19.1.7-pyhd8ed1ab_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022305-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022305-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022305-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022305-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022405-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022405-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022405-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022405-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022405-release.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-h2d0b736_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda @@ -59,7 +59,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.1-py312hbf22597_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-0.2.0-hc8f76dd_10.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-python-0.2.0-py312hb6b8a2b_10.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-spm-0.2.0-h8e10757_10.conda @@ -109,11 +109,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/lit-19.1.7-pyhd8ed1ab_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022305-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022305-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022305-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022305-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022405-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022405-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022405-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022405-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022405-release.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-ha32ae93_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda @@ -125,7 +125,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.12-5_cp312.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyzmq-26.2.1-py312h2427ae1_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8fc344f_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8382b9d_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-0.2.0-h6c1b121_10.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-python-0.2.0-py312h197ff68_10.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-spm-0.2.0-h6164ad9_10.conda @@ -166,11 +166,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/lit-19.1.7-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022305-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022305-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022305-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022305-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022305-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022405-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022405-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022405-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022405-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022405-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda @@ -182,7 +182,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-5_cp312.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.1-py312hf4875e0_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h92ec313_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-0.2.0-h22a84ea_10.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-python-0.2.0-py312h155166a_10.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-spm-0.2.0-he13a0af_10.conda @@ -1313,48 +1313,48 @@ packages: license_family: APACHE size: 280830 timestamp: 1736986295869 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022305-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022405-release.conda noarch: python - sha256: ae0d6d0179f5bad00fe10eb7edf77bac0dfe49908af67274d9373a53bf930575 - md5: 5789c7009871406d9fbfa5f3477459c6 + sha256: a128828563f8128aeddcf2a3b8b229917ff0986de7231f652b2f0066a8cfeab6 + md5: c012465ba92d1c62bae90cf8fb92cbc4 depends: - - max-core ==25.2.0.dev2025022305 release - - max-python ==25.2.0.dev2025022305 release - - mojo-jupyter ==25.2.0.dev2025022305 release - - mblack ==25.2.0.dev2025022305 release + - max-core ==25.2.0.dev2025022405 release + - max-python ==25.2.0.dev2025022405 release + - mojo-jupyter ==25.2.0.dev2025022405 release + - mblack ==25.2.0.dev2025022405 release license: LicenseRef-Modular-Proprietary - size: 9896 - timestamp: 1740287828839 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022305-release.conda - sha256: 6b43069454540bbce505aa7d4e9babf2bebf96e740f0e4ade7ff2b4b3f6566dd - md5: 94d10eb5a70ea5f697816b31974f478c + size: 9901 + timestamp: 1740374150250 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022405-release.conda + sha256: 4550f601e214abb591f8bd915ee1a1ba4ee212eb12272bc12261dfb2e58e4540 + md5: 42905e60460b0fdb3da5eb3230b80441 depends: - - mblack ==25.2.0.dev2025022305 release + - mblack ==25.2.0.dev2025022405 release license: LicenseRef-Modular-Proprietary - size: 243927259 - timestamp: 1740287885402 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022305-release.conda - sha256: c02f604c539e951abedf9d1dc7afd835d8ac63b5c60b7a5ae61c3a0480dce859 - md5: 7ce47e432a9a3251f0c1b9b66b077d32 + size: 243853116 + timestamp: 1740374225756 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022405-release.conda + sha256: b8db8f65548d16233315abbf47e3189fc678d209bb92a3386864b639c9fe4ee3 + md5: c9710a57101a49fe9fc381b37f2fac1d depends: - - mblack ==25.2.0.dev2025022305 release + - mblack ==25.2.0.dev2025022405 release license: LicenseRef-Modular-Proprietary - size: 246655331 - timestamp: 1740287828839 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022305-release.conda - sha256: be68f633c0631c269bd6f2e52e04267c468ca6bf08652f48b6a2db914ea44de2 - md5: 2b6052c5ac4f553fe4ed0e96250c847a + size: 246555186 + timestamp: 1740374150249 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022405-release.conda + sha256: a2af65d4b6412896cd4684424a2002455f9ae32c96638caed09d1752fce83f41 + md5: 6aff7b2bcdc6777c56698ec267cc5de8 depends: - - mblack ==25.2.0.dev2025022305 release + - mblack ==25.2.0.dev2025022405 release license: LicenseRef-Modular-Proprietary - size: 212352955 - timestamp: 1740288883625 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022305-release.conda + size: 212297233 + timestamp: 1740375201832 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022405-release.conda noarch: python - sha256: dbaa4eea8e85ab7a3d203de9a75a5d6293fa085702d82fca23ac076f2d1c6d22 - md5: a56cd315a64001d1a99c31d6e46f80ad + sha256: 924f15e953e2d050d2a4baa8b40b83385a9d0d9452b8d3071f9220ad77f108ed + md5: fad312f931cf1eeb89fbfc6022512883 depends: - - max-core ==25.2.0.dev2025022305 release + - max-core ==25.2.0.dev2025022405 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1392,14 +1392,14 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 120689981 - timestamp: 1740287885402 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022305-release.conda + size: 120685856 + timestamp: 1740374225756 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022405-release.conda noarch: python - sha256: a139b3cded9cded160982295ec2cb74dd9ed925bdc95322c926ac1d59612a7c7 - md5: 86ce9b2811fd598ad33cf596c06897a0 + sha256: db2f136c098a775f8f11a4ab8b2a6159ddb8093d4f1f9a9b4534c5eaea5408ac + md5: 3fc1f7c0ed635f25c01713db5481cb78 depends: - - max-core ==25.2.0.dev2025022305 release + - max-core ==25.2.0.dev2025022405 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1437,14 +1437,14 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 123462201 - timestamp: 1740287828839 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022305-release.conda + size: 123454603 + timestamp: 1740374150250 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022405-release.conda noarch: python - sha256: aabc0951963258fc934d80749d20adb426476358bee150d7325543293107c730 - md5: b35a18f33826101e82eb91c1452db621 + sha256: 2e25b0874f42e448beb065f01b977142ff729938570b9f9d7974595f1ebd0076 + md5: f867571007458f5e0b95731995bb7f17 depends: - - max-core ==25.2.0.dev2025022305 release + - max-core ==25.2.0.dev2025022405 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1482,12 +1482,12 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 110152903 - timestamp: 1740288883625 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022305-release.conda + size: 110137192 + timestamp: 1740375201832 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022405-release.conda noarch: python - sha256: 3af367ba319ca50244ac0717cdd56cde03fa20a9eab00431649fd71387abd573 - md5: 3fa8f1081981365c27ee4ae28a5aa2b7 + sha256: e435c909399e7413f6941e960143858acee4cf0d05dd6c02bf159e08cbde38a4 + md5: bc63e516c54cba1a99f76efd394e626e depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -1498,20 +1498,20 @@ packages: - typing_extensions >=v4.12.2 - python license: MIT - size: 130852 - timestamp: 1740287828839 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022305-release.conda + size: 130846 + timestamp: 1740374225756 +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022405-release.conda noarch: python - sha256: 6c73f5999862871787f7cc2f3dce40af3ee9fc70ad522a7416817a5b63106a19 - md5: 72ab111decd606a4f4deff785b539632 + sha256: 5ba32fa10c188a376a3b1673d59626d357231028c2ba71a4b06688998f01a5bb + md5: 6432cbc5b412f8351358b06534a68122 depends: - - max-core ==25.2.0.dev2025022305 release + - max-core ==25.2.0.dev2025022405 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22991 - timestamp: 1740287828839 + size: 22984 + timestamp: 1740374225756 - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda sha256: 1895f47b7d68581a6facde5cb13ab8c2764c2e53a76bd746f8f98910dc4e08fe md5: 29097e7ea634a45cc5386b95cac6568f @@ -1848,41 +1848,38 @@ packages: license_family: BSD size: 364649 timestamp: 1738271263898 -- conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda - sha256: 5435cf39d039387fbdc977b0a762357ea909a7694d9528ab40f005e9208744d7 - md5: 47d31b792659ce70f470b5c82fdfb7a4 +- conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda + sha256: 2d6d0c026902561ed77cd646b5021aef2d4db22e57a5b0178dfc669231e06d2c + md5: 283b96675859b20a825f8fa30f311446 depends: - - libgcc-ng >=12 - - ncurses >=6.3,<7.0a0 + - libgcc >=13 + - ncurses >=6.5,<7.0a0 arch: x86_64 platform: linux license: GPL-3.0-only - license_family: GPL - size: 281456 - timestamp: 1679532220005 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8fc344f_1.conda - sha256: 4c99f7417419734e3797d45bc355e61c26520e111893b0d7087a01a7fbfbe3dd - md5: 105eb1e16bf83bfb2eb380a48032b655 + size: 282480 + timestamp: 1740379431762 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8382b9d_2.conda + sha256: 54bed3a3041befaa9f5acde4a37b1a02f44705b7796689574bcf9d7beaad2959 + md5: c0f08fc2737967edde1a272d4bf41ed9 depends: - - libgcc-ng >=12 - - ncurses >=6.3,<7.0a0 + - libgcc >=13 + - ncurses >=6.5,<7.0a0 arch: aarch64 platform: linux license: GPL-3.0-only - license_family: GPL - size: 294092 - timestamp: 1679532238805 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h92ec313_1.conda - sha256: a1dfa679ac3f6007362386576a704ad2d0d7a02e98f5d0b115f207a2da63e884 - md5: 8cbb776a2f641b943d413b3e19df71f4 + size: 291806 + timestamp: 1740380591358 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda + sha256: 7db04684d3904f6151eff8673270922d31da1eea7fa73254d01c437f49702e34 + md5: 63ef3f6e6d6d5c589e64f11263dc5676 depends: - - ncurses >=6.3,<7.0a0 + - ncurses >=6.5,<7.0a0 arch: arm64 platform: osx license: GPL-3.0-only - license_family: GPL - size: 250351 - timestamp: 1679532511311 + size: 252359 + timestamp: 1740379663071 - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-0.2.0-hc8f76dd_10.conda sha256: a1bde55ceb9dc5bd7879283d0f594a6ce65c07fda3de76230c65a4a5df47858a md5: 480e915dfc6c592615ef6f217e615aa6 From 824a3cb65fc880da5fba2bb49af69cc9340bb1da Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Sun, 23 Feb 2025 22:50:30 -0800 Subject: [PATCH 452/509] [mojo-stdlib] Rewrite `IntLiteral` and `FloatLiteral` to use dependent types. This patch rewrites the `IntLiteral` and `FloatLiteral` types to define away bugs due to their long-standing but incorrect design. The problem is that the "value" that these types represent are infinite precision literals that are only representable at compile time, not materializable at runtime. The previous design held this as runtime state, which led to bugs in the corner cases, e.g. this would crash the compiler because they can't be codegen'd: ```mojo @export fn test(a: IntLiteral) -> IntLiteral: return a+1 ``` We can correct this by building on the recent improvement to dependent type support (eg parameter inference bugfixes), the movement of all the related intrinsics to an attribute form, and the `always_inline(builtin)` feature being settled, we can correct this by moving these to being parameters on the literal types instead of runtime values. In short: ```mojo # old design struct IntLiteral: var state : __mlir_type.`!kgen.int_literal` # new design struct IntLiteral[value: __mlir_type.`!kgen.int_literal`]: # .. no state ``` One unfortunate casualty in this is that the special numbers cannot be accessed as aliases on the type because we don't know the parameters. As such, this temporarily renames `FloatLiteral.infinity` to `FloatLiteral_infinity`. If this is a hardship, we can look at improving the compiler to move them back. This also paves the way to remove all the old "kgen.*literal.*` ops, but that will be a later patch. MODULAR_ORIG_COMMIT_REV_ID: 237015b553a0fae70aaf294e4f467b9c1312911e --- docs/changelog.md | 6 + stdlib/src/builtin/float_literal.mojo | 237 +++++++++---- stdlib/src/builtin/int_literal.mojo | 335 +++++++++++------- stdlib/src/collections/string/string.mojo | 4 +- stdlib/src/math/math.mojo | 8 +- stdlib/src/prelude/__init__.mojo | 8 +- stdlib/test/builtin/test_float_literal.mojo | 8 +- stdlib/test/builtin/test_simd.mojo | 8 +- .../test/collections/string/test_string.mojo | 8 +- 9 files changed, 415 insertions(+), 207 deletions(-) diff --git a/docs/changelog.md b/docs/changelog.md index 91dce436f6..20576ca849 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -26,6 +26,12 @@ what we publish. ### Standard library changes +- The design of the `IntLiteral` and `FloatLiteral` types has been changed to + maintain their compile-time-only value as a parameter instead of a stored + field. This correctly models that infinite precision literals are not + representable at runtime, and eliminates a number of bugs hit in corner cases. + This is made possible by enhanced dependent type support in the compiler. + - The `Buffer` struct has been removed in favor of `Span` and `NDBuffer`. - A new `IntervalTree` data structure has been added to the standard library. diff --git a/stdlib/src/builtin/float_literal.mojo b/stdlib/src/builtin/float_literal.mojo index 569e204cb6..c70380d145 100644 --- a/stdlib/src/builtin/float_literal.mojo +++ b/stdlib/src/builtin/float_literal.mojo @@ -19,51 +19,61 @@ These are Mojo built-ins, so you don't need to import them. # FloatLiteral # ===-----------------------------------------------------------------------===# +# FIXME: These really should get a better name. +alias FloatLiteral_nan = FloatLiteral[__mlir_attr.`#kgen.float_literal`]() +alias FloatLiteral_infinity = FloatLiteral[ + __mlir_attr.`#kgen.float_literal` +]() +alias FloatLiteral_negative_infinity = FloatLiteral[ + __mlir_attr.`#kgen.float_literal` +]() +alias FloatLiteral_negative_zero = FloatLiteral[ + __mlir_attr.`#kgen.float_literal` +]() + @value @nonmaterializable(Float64) @register_passable("trivial") -struct FloatLiteral( - Comparable, +struct FloatLiteral[value: __mlir_type.`!kgen.float_literal`]( ImplicitlyBoolable, Intable, Stringable, Floatable, ): - """Mojo floating point literal type.""" + """Mojo floating point literal type. - alias fp_type = __mlir_type.`!kgen.float_literal` - var value: Self.fp_type - """The underlying storage for the floating point value.""" + Parameters: + value: The underlying infinite precision floating point value. + """ # ===------------------------------------------------------------------===# # Constructors # ===------------------------------------------------------------------===# @always_inline("builtin") - @implicit - fn __init__(out self, value: Self.fp_type): - """Create a FloatLiteral value from a kgen.float_literal value. - - Args: - value: The float value. - """ - self.value = value + fn __init__(out self): + """Create a FloatLiteral for any parameter value.""" + pass @always_inline("builtin") @implicit - fn __init__(out self, value: IntLiteral): + fn __init__( + value: IntLiteral[_], + out result: FloatLiteral[ + __mlir_attr[ + `#kgen> : !kgen.float_literal`, + ] + ], + ): """Convert an IntLiteral to a FloatLiteral value. Args: value: The IntLiteral value. """ - self.value = __mlir_op.`kgen.int_to_float_literal`(value.value) - - alias nan = Self(__mlir_attr.`#kgen.float_literal`) - alias infinity = Self(__mlir_attr.`#kgen.float_literal`) - alias negative_infinity = Self(__mlir_attr.`#kgen.float_literal`) - alias negative_zero = Self(__mlir_attr.`#kgen.float_literal`) + out = __type_of(result)() @always_inline("builtin") fn is_nan(self) -> Bool: @@ -82,7 +92,7 @@ struct FloatLiteral( fn is_neg_zero(self) -> Bool: """Return whether the FloatLiteral is negative zero. - Since `FloatLiteral.negative_zero == 0.0` is True, this provides a way + Since `FloatLiteral_negative_zero == 0.0` is True, this provides a way to check if the FloatLiteral is negative zero. Returns: @@ -117,7 +127,16 @@ struct FloatLiteral( return String(Float64(self)) @always_inline("builtin") - fn __int_literal__(self) -> IntLiteral: + fn __int_literal__( + self, + out result: IntLiteral[ + __mlir_attr[ + `#kgen> : !kgen.int_literal`, + ] + ], + ): """Casts the floating point value to an IntLiteral. If there is a fractional component, then the value is truncated towards zero. @@ -127,7 +146,7 @@ struct FloatLiteral( Returns: The value as an integer. """ - return IntLiteral(__mlir_op.`kgen.float_to_int_literal`(self.value)) + return __type_of(result)() @always_inline("builtin") fn __int__(self) -> Int: @@ -173,20 +192,32 @@ struct FloatLiteral( return self.__bool__() @always_inline("builtin") - fn __neg__(self) -> FloatLiteral: + fn __neg__(self, out result: __type_of(self * -1)): """Return the negation of the FloatLiteral value. Returns: The negated FloatLiteral value. """ - return self * Self(-1) + result = __type_of(result)() # ===------------------------------------------------------------------===# # Arithmetic Operators # ===------------------------------------------------------------------===# @always_inline("builtin") - fn __add__(self, rhs: FloatLiteral) -> FloatLiteral: + fn __add__( + self, + rhs: FloatLiteral, + out result: FloatLiteral[ + __mlir_attr[ + `#kgen> : !kgen.float_literal`, + ] + ], + ): """Add two FloatLiterals. Args: @@ -195,12 +226,22 @@ struct FloatLiteral( Returns: The sum of the two values. """ - return __mlir_op.`kgen.float_literal.binop`[ - oper = __mlir_attr.`#kgen` - ](self.value, rhs.value) + result = __type_of(result)() @always_inline("builtin") - fn __sub__(self, rhs: FloatLiteral) -> FloatLiteral: + fn __sub__( + self, + rhs: FloatLiteral, + out result: FloatLiteral[ + __mlir_attr[ + `#kgen> : !kgen.float_literal`, + ] + ], + ): """Subtract two FloatLiterals. Args: @@ -209,12 +250,22 @@ struct FloatLiteral( Returns: The difference of the two values. """ - return __mlir_op.`kgen.float_literal.binop`[ - oper = __mlir_attr.`#kgen` - ](self.value, rhs.value) + result = __type_of(result)() @always_inline("builtin") - fn __mul__(self, rhs: FloatLiteral) -> FloatLiteral: + fn __mul__( + self, + rhs: FloatLiteral, + out result: FloatLiteral[ + __mlir_attr[ + `#kgen> : !kgen.float_literal`, + ] + ], + ): """Multiply two FloatLiterals. Args: @@ -223,12 +274,22 @@ struct FloatLiteral( Returns: The product of the two values. """ - return __mlir_op.`kgen.float_literal.binop`[ - oper = __mlir_attr.`#kgen` - ](self.value, rhs.value) + result = __type_of(result)() @always_inline("builtin") - fn __truediv__(self, rhs: FloatLiteral) -> FloatLiteral: + fn __truediv__( + self, + rhs: FloatLiteral, + out result: FloatLiteral[ + __mlir_attr[ + `#kgen> : !kgen.float_literal`, + ] + ], + ): """Divide two FloatLiterals. Args: @@ -238,12 +299,22 @@ struct FloatLiteral( The quotient of the two values. """ # TODO - Python raises an error on divide by 0.0 or -0.0 - return __mlir_op.`kgen.float_literal.binop`[ - oper = __mlir_attr.`#kgen` - ](self.value, rhs.value) + result = __type_of(result)() @always_inline("builtin") - fn __floordiv__(self, rhs: Self) -> Self: + fn __floordiv__( + self, + rhs: FloatLiteral, + out result: FloatLiteral[ + __mlir_attr[ + `#kgen> : !kgen.float_literal`, + ] + ], + ): """Returns self divided by rhs, rounded down to the nearest integer. Args: @@ -253,12 +324,14 @@ struct FloatLiteral( `floor(self / rhs)` value. """ # TODO - Python raises an error on divide by 0.0 or -0.0 - return __mlir_op.`kgen.float_literal.binop`[ - oper = __mlir_attr.`#kgen` - ](self.value, rhs.value) + result = __type_of(result)() @always_inline("builtin") - fn __mod__(self, rhs: Self) -> Self: + fn __mod__( + self, + rhs: FloatLiteral, + out result: __type_of(self - (self.__floordiv__(rhs) * rhs)), + ): """Return the remainder of self divided by rhs. Args: @@ -267,22 +340,14 @@ struct FloatLiteral( Returns: The remainder of dividing self by rhs. """ - return self - (self.__floordiv__(rhs) * rhs) + result = __type_of(result)() @always_inline("builtin") - fn __rfloordiv__(self, rhs: Self) -> Self: - """Returns rhs divided by self, rounded down to the nearest integer. - - Args: - rhs: The value to be divided by self. - - Returns: - `floor(rhs / self)` value. - """ - return rhs // self - - @always_inline("builtin") - fn __ceildiv__(self, denominator: Self) -> Self: + fn __ceildiv__( + self, + denominator: FloatLiteral, + out result: __type_of(-(self // -denominator)), + ): """Return the rounded-up result of dividing self by denominator. Args: @@ -291,7 +356,7 @@ struct FloatLiteral( Returns: The ceiling of dividing numerator by denominator. """ - return -(self // -denominator) + result = __type_of(result)() # TODO - maybe __pow__? @@ -300,7 +365,7 @@ struct FloatLiteral( # ===------------------------------------------------------------------===# @always_inline("builtin") - fn __radd__(self, rhs: FloatLiteral) -> FloatLiteral: + fn __radd__(self, rhs: FloatLiteral, out result: __type_of(rhs + self)): """Reversed addition operator. Args: @@ -309,10 +374,10 @@ struct FloatLiteral( Returns: The sum of this and the given value. """ - return rhs + self + result = __type_of(result)() @always_inline("builtin") - fn __rsub__(self, rhs: FloatLiteral) -> FloatLiteral: + fn __rsub__(self, rhs: FloatLiteral, out result: __type_of(rhs - self)): """Reversed subtraction operator. Args: @@ -321,10 +386,10 @@ struct FloatLiteral( Returns: The result of subtracting this from the given value. """ - return rhs - self + result = __type_of(result)() @always_inline("builtin") - fn __rmul__(self, rhs: FloatLiteral) -> FloatLiteral: + fn __rmul__(self, rhs: FloatLiteral, out result: __type_of(rhs * self)): """Reversed multiplication operator. Args: @@ -333,10 +398,42 @@ struct FloatLiteral( Returns: The product of the given number and this. """ - return rhs * self + result = __type_of(result)() + + @always_inline("builtin") + fn __rmod__( + self, + rhs: FloatLiteral, + out result: __type_of(rhs.__mod__(self)), + ): + """Return the remainder of rhs divided by self. + + Args: + rhs: The value to divide on. + + Returns: + The remainder of dividing rhs by self. + """ + result = __type_of(result)() + + @always_inline("builtin") + fn __rfloordiv__( + self, + rhs: FloatLiteral, + out result: __type_of(rhs // self), + ): + """Returns rhs divided by self, rounded down to the nearest integer. + + Args: + rhs: The value to be divided by self. + + Returns: + `floor(rhs / self)` value. + """ + result = __type_of(result)() @always_inline("builtin") - fn __rtruediv__(self, rhs: FloatLiteral) -> FloatLiteral: + fn __rtruediv__(self, rhs: FloatLiteral, out result: __type_of(rhs / self)): """Reversed division. Args: @@ -345,7 +442,7 @@ struct FloatLiteral( Returns: The result of dividing the given value by this. """ - return rhs / self + result = __type_of(result)() # ===------------------------------------------------------------------===# # Comparison Operators diff --git a/stdlib/src/builtin/int_literal.mojo b/stdlib/src/builtin/int_literal.mojo index c5084fcf39..be65cb1099 100644 --- a/stdlib/src/builtin/int_literal.mojo +++ b/stdlib/src/builtin/int_literal.mojo @@ -12,16 +12,14 @@ # ===----------------------------------------------------------------------=== # """Implements the IntLiteral class.""" -from math import Ceilable, CeilDivable, Floorable, Truncable +from math import Ceilable, Floorable, Truncable @value @nonmaterializable(Int) @register_passable("trivial") -struct IntLiteral( +struct IntLiteral[value: __mlir_type.`!kgen.int_literal`]( Ceilable, - CeilDivable, - Comparable, Floorable, ImplicitlyBoolable, ImplicitlyIntable, @@ -30,21 +28,25 @@ struct IntLiteral( Truncable, ): """This type represents a static integer literal value with - infinite precision. They can't be materialized at runtime and - must be lowered to other integer types (like Int), but allow for - compile-time operations that would overflow on Int and other fixed + infinite precision. This type is a compile-time construct which stores its + value as a parameter. It is typically materialized into other types (like + `Int`) for use at runtime. This compile-time representation allows for + arbitrary precision constants that would overflow on Int and other fixed precision integer types. + + Parameters: + value: The underlying integer value. """ # Fields alias _mlir_type = __mlir_type.`!kgen.int_literal` - var value: Self._mlir_type - """The underlying storage for the integer value.""" - - alias _one = IntLiteral( + alias _zero = IntLiteral[ + __mlir_attr.`#kgen.int_literal<0> : !kgen.int_literal` + ]() + alias _one = IntLiteral[ __mlir_attr.`#kgen.int_literal<1> : !kgen.int_literal` - ) + ]() # ===-------------------------------------------------------------------===# # Life cycle methods @@ -52,26 +54,15 @@ struct IntLiteral( @always_inline("builtin") fn __init__(out self): - """Default constructor.""" - self.value = __mlir_attr.`#kgen.int_literal<0> : !kgen.int_literal` - - @doc_private - @always_inline("builtin") - @implicit - fn __init__(out self, value: __mlir_type.`!kgen.int_literal`): - """Construct IntLiteral from the given mlir !kgen.int_literal value. - - Args: - value: The init value. - """ - self.value = value + """Constructor for any value.""" + pass # ===-------------------------------------------------------------------===# # Operator dunders # ===-------------------------------------------------------------------===# @always_inline("builtin") - fn __lt__(self, rhs: Self) -> Bool: + fn __lt__(self, rhs: IntLiteral[_]) -> Bool: """Compare this IntLiteral to the RHS using LT comparison. Args: @@ -80,12 +71,16 @@ struct IntLiteral( Returns: True if this IntLiteral is less-than the RHS IntLiteral and False otherwise. """ - return __mlir_op.`kgen.int_literal.cmp`[ - pred = __mlir_attr.`#kgen` - ](self.value, rhs.value) + return __mlir_attr[ + `#kgen> : !kgen.int_literal`, + ] @always_inline("builtin") - fn __le__(self, rhs: Self) -> Bool: + fn __le__(self, rhs: IntLiteral[_]) -> Bool: """Compare this IntLiteral to the RHS using LE comparison. Args: @@ -95,12 +90,16 @@ struct IntLiteral( True if this IntLiteral is less-or-equal than the RHS IntLiteral and False otherwise. """ - return __mlir_op.`kgen.int_literal.cmp`[ - pred = __mlir_attr.`#kgen` - ](self.value, rhs.value) + return __mlir_attr[ + `#kgen> : !kgen.int_literal`, + ] @always_inline("builtin") - fn __eq__(self, rhs: Self) -> Bool: + fn __eq__(self, rhs: IntLiteral[_]) -> Bool: """Compare this IntLiteral to the RHS using EQ comparison. Args: @@ -109,12 +108,16 @@ struct IntLiteral( Returns: True if this IntLiteral is equal to the RHS IntLiteral and False otherwise. """ - return __mlir_op.`kgen.int_literal.cmp`[ - pred = __mlir_attr.`#kgen` - ](self.value, rhs.value) + return __mlir_attr[ + `#kgen> : !kgen.int_literal`, + ] @always_inline("builtin") - fn __ne__(self, rhs: Self) -> Bool: + fn __ne__(self, rhs: IntLiteral[_]) -> Bool: """Compare this IntLiteral to the RHS using NE comparison. Args: @@ -123,12 +126,16 @@ struct IntLiteral( Returns: True if this IntLiteral is non-equal to the RHS IntLiteral and False otherwise. """ - return __mlir_op.`kgen.int_literal.cmp`[ - pred = __mlir_attr.`#kgen` - ](self.value, rhs.value) + return __mlir_attr[ + `#kgen> : !kgen.int_literal`, + ] @always_inline("builtin") - fn __gt__(self, rhs: Self) -> Bool: + fn __gt__(self, rhs: IntLiteral[_]) -> Bool: """Compare this IntLiteral to the RHS using GT comparison. Args: @@ -137,12 +144,16 @@ struct IntLiteral( Returns: True if this IntLiteral is greater-than the RHS IntLiteral and False otherwise. """ - return __mlir_op.`kgen.int_literal.cmp`[ - pred = __mlir_attr.`#kgen` - ](self.value, rhs.value) + return __mlir_attr[ + `#kgen> : !kgen.int_literal`, + ] @always_inline("builtin") - fn __ge__(self, rhs: Self) -> Bool: + fn __ge__(self, rhs: IntLiteral[_]) -> Bool: """Compare this IntLiteral to the RHS using GE comparison. Args: @@ -152,9 +163,13 @@ struct IntLiteral( True if this IntLiteral is greater-or-equal than the RHS IntLiteral and False otherwise. """ - return __mlir_op.`kgen.int_literal.cmp`[ - pred = __mlir_attr.`#kgen` - ](self.value, rhs.value) + return __mlir_attr[ + `#kgen> : !kgen.int_literal`, + ] @always_inline("builtin") fn __pos__(self) -> Self: @@ -166,25 +181,37 @@ struct IntLiteral( return self @always_inline("builtin") - fn __neg__(self) -> Self: + fn __neg__(self) -> __type_of(Self._zero - self): """Return -self. Returns: The -self value. """ - return Self() - self + return Self._zero - self @always_inline("builtin") - fn __invert__(self) -> Self: + fn __invert__(self, out result: __type_of(self ^ (Self._zero - Self._one))): """Return ~self. Returns: The ~self value. """ - return self ^ (Self() - Self._one) + result = __type_of(result)() @always_inline("builtin") - fn __add__(self, rhs: Self) -> Self: + fn __add__( + self, + rhs: IntLiteral[_], + out result: IntLiteral[ + __mlir_attr[ + `#kgen> : !kgen.int_literal`, + ] + ], + ): """Return `self + rhs`. Args: @@ -193,14 +220,22 @@ struct IntLiteral( Returns: `self + rhs` value. """ - return Self( - __mlir_op.`kgen.int_literal.binop`[ - oper = __mlir_attr.`#kgen` - ](self.value, rhs.value) - ) + result = __type_of(result)() @always_inline("builtin") - fn __sub__(self, rhs: Self) -> Self: + fn __sub__( + self, + rhs: IntLiteral[_], + out result: IntLiteral[ + __mlir_attr[ + `#kgen> : !kgen.int_literal`, + ] + ], + ): """Return `self - rhs`. Args: @@ -209,14 +244,22 @@ struct IntLiteral( Returns: `self - rhs` value. """ - return Self( - __mlir_op.`kgen.int_literal.binop`[ - oper = __mlir_attr.`#kgen` - ](self.value, rhs.value) - ) + result = __type_of(result)() @always_inline("builtin") - fn __mul__(self, rhs: Self) -> Self: + fn __mul__( + self, + rhs: IntLiteral[_], + out result: IntLiteral[ + __mlir_attr[ + `#kgen> : !kgen.int_literal`, + ] + ], + ): """Return `self * rhs`. Args: @@ -225,16 +268,24 @@ struct IntLiteral( Returns: `self * rhs` value. """ - return Self( - __mlir_op.`kgen.int_literal.binop`[ - oper = __mlir_attr.`#kgen` - ](self.value, rhs.value) - ) + result = __type_of(result)() # TODO: implement __pow__ @always_inline("builtin") - fn __floordiv__(self, rhs: Self) -> Self: + fn __floordiv__( + self, + rhs: IntLiteral[_], + out result: IntLiteral[ + __mlir_attr[ + `#kgen> : !kgen.int_literal`, + ] + ], + ): """Return `self // rhs`. Args: @@ -243,15 +294,22 @@ struct IntLiteral( Returns: `self // rhs` value. """ - # This handles the case where rhs is 0. - return Self( - __mlir_op.`kgen.int_literal.binop`[ - oper = __mlir_attr.`#kgen` - ](self.value, rhs.value) - ) + result = __type_of(result)() @always_inline("builtin") - fn __mod__(self, rhs: Self) -> Self: + fn __mod__( + self, + rhs: IntLiteral[_], + out result: IntLiteral[ + __mlir_attr[ + `#kgen> : !kgen.int_literal`, + ] + ], + ): """Return the remainder of self divided by rhs. Args: @@ -260,15 +318,22 @@ struct IntLiteral( Returns: The remainder of dividing self by rhs. """ - # This handles the case where rhs is 0. - return Self( - __mlir_op.`kgen.int_literal.binop`[ - oper = __mlir_attr.`#kgen` - ](self.value, rhs.value) - ) + result = __type_of(result)() @always_inline("builtin") - fn __lshift__(self, rhs: Self) -> Self: + fn __lshift__( + self, + rhs: IntLiteral[_], + out result: IntLiteral[ + __mlir_attr[ + `#kgen> : !kgen.int_literal`, + ] + ], + ): """Return `self << rhs`. Args: @@ -277,15 +342,22 @@ struct IntLiteral( Returns: `self << rhs`. """ - # This handles the case where rhs is 0. - return Self( - __mlir_op.`kgen.int_literal.binop`[ - oper = __mlir_attr.`#kgen` - ](self.value, rhs.value) - ) + result = __type_of(result)() @always_inline("builtin") - fn __rshift__(self, rhs: Self) -> Self: + fn __rshift__( + self, + rhs: IntLiteral[_], + out result: IntLiteral[ + __mlir_attr[ + `#kgen> : !kgen.int_literal`, + ] + ], + ): """Return `self >> rhs`. Args: @@ -294,15 +366,22 @@ struct IntLiteral( Returns: `self >> rhs`. """ - # This handles the case where rhs is 0. - return Self( - __mlir_op.`kgen.int_literal.binop`[ - oper = __mlir_attr.`#kgen` - ](self.value, rhs.value) - ) + result = __type_of(result)() @always_inline("builtin") - fn __and__(self, rhs: Self) -> Self: + fn __and__( + self, + rhs: IntLiteral[_], + out result: IntLiteral[ + __mlir_attr[ + `#kgen> : !kgen.int_literal`, + ] + ], + ): """Return `self & rhs`. Args: @@ -311,14 +390,22 @@ struct IntLiteral( Returns: `self & rhs`. """ - return Self( - __mlir_op.`kgen.int_literal.binop`[ - oper = __mlir_attr.`#kgen` - ](self.value, rhs.value) - ) + result = __type_of(result)() @always_inline("builtin") - fn __xor__(self, rhs: Self) -> Self: + fn __xor__( + self, + rhs: IntLiteral[_], + out result: IntLiteral[ + __mlir_attr[ + `#kgen> : !kgen.int_literal`, + ] + ], + ): """Return `self ^ rhs`. Args: @@ -327,14 +414,22 @@ struct IntLiteral( Returns: `self ^ rhs`. """ - return Self( - __mlir_op.`kgen.int_literal.binop`[ - oper = __mlir_attr.`#kgen` - ](self.value, rhs.value) - ) + result = __type_of(result)() @always_inline("builtin") - fn __or__(self, rhs: Self) -> Self: + fn __or__( + self, + rhs: IntLiteral[_], + out result: IntLiteral[ + __mlir_attr[ + `#kgen> : !kgen.int_literal`, + ] + ], + ): """Return `self | rhs`. Args: @@ -343,11 +438,7 @@ struct IntLiteral( Returns: `self | rhs`. """ - return Self( - __mlir_op.`kgen.int_literal.binop`[ - oper = __mlir_attr.`#kgen` - ](self.value, rhs.value) - ) + result = __type_of(result)() # ===-------------------------------------------------------------------===# # Trait implementations @@ -360,7 +451,7 @@ struct IntLiteral( Returns: False Bool value if the value is equal to 0 and True otherwise. """ - return self != Self() + return self != Self._zero @always_inline("builtin") fn __as_bool__(self) -> Bool: @@ -437,7 +528,11 @@ struct IntLiteral( return String(Int(self)) @always_inline("builtin") - fn __ceildiv__(self, denominator: Self) -> Self: + fn __ceildiv__( + self, + denominator: IntLiteral, + out result: __type_of(-(self // -denominator)), + ): """Return the rounded-up result of dividing self by denominator. @@ -447,7 +542,7 @@ struct IntLiteral( Returns: The ceiling of dividing numerator by denominator. """ - return -(self // -denominator) + result = __type_of(result)() # ===-------------------------------------------------------------------===# # Methods diff --git a/stdlib/src/collections/string/string.mojo b/stdlib/src/collections/string/string.mojo index 395dcdce10..8cde264ed5 100644 --- a/stdlib/src/collections/string/string.mojo +++ b/stdlib/src/collections/string/string.mojo @@ -461,9 +461,9 @@ fn atof(str_slice: StringSlice) raises -> Float64: sign = -1 if (str_len - start) >= 3: if StringSlice[buff.origin](ptr=buff + start, length=3) == "nan": - return FloatLiteral.nan + return FloatLiteral_nan if StringSlice[buff.origin](ptr=buff + start, length=3) == "inf": - return FloatLiteral.infinity * sign + return FloatLiteral_infinity * sign # read before dot for pos in range(start, str_len): if ord_0 <= buff[pos] <= ord_9: diff --git a/stdlib/src/math/math.mojo b/stdlib/src/math/math.mojo index 14d3f91e25..331b4f6397 100644 --- a/stdlib/src/math/math.mojo +++ b/stdlib/src/math/math.mojo @@ -130,7 +130,11 @@ fn ceildiv[T: CeilDivableRaising, //](numerator: T, denominator: T) raises -> T: # NOTE: this overload is needed because IntLiteral promotes to a runtime type # before overload resolution. @always_inline("builtin") -fn ceildiv(numerator: IntLiteral, denominator: IntLiteral) -> IntLiteral: +fn ceildiv( + numerator: IntLiteral, + denominator: IntLiteral, + out result: __type_of(numerator.__ceildiv__(denominator)), +): """Return the rounded-up result of dividing numerator by denominator. Args: @@ -140,7 +144,7 @@ fn ceildiv(numerator: IntLiteral, denominator: IntLiteral) -> IntLiteral: Returns: The ceiling of dividing numerator by denominator. """ - return numerator.__ceildiv__(denominator) + result = __type_of(result)() # ===----------------------------------------------------------------------=== # diff --git a/stdlib/src/prelude/__init__.mojo b/stdlib/src/prelude/__init__.mojo index c6c3da74d2..c0e1d65148 100644 --- a/stdlib/src/prelude/__init__.mojo +++ b/stdlib/src/prelude/__init__.mojo @@ -43,7 +43,13 @@ from builtin.equality_comparable import EqualityComparable from builtin.error import Error from builtin.file import FileHandle, open from builtin.file_descriptor import FileDescriptor -from builtin.float_literal import FloatLiteral +from builtin.float_literal import ( + FloatLiteral, + FloatLiteral_nan, + FloatLiteral_infinity, + FloatLiteral_negative_infinity, + FloatLiteral_negative_zero, +) from builtin.floatable import Floatable, FloatableRaising, float from builtin.format_int import bin, hex, oct from builtin.identifiable import Identifiable, StringableIdentifiable diff --git a/stdlib/test/builtin/test_float_literal.mojo b/stdlib/test/builtin/test_float_literal.mojo index 915c1f850e..8bc54a61a4 100644 --- a/stdlib/test/builtin/test_float_literal.mojo +++ b/stdlib/test/builtin/test_float_literal.mojo @@ -20,10 +20,10 @@ from testing import ( assert_true, ) -alias nan = FloatLiteral.nan -alias neg_zero = FloatLiteral.negative_zero -alias inf = FloatLiteral.infinity -alias neg_inf = FloatLiteral.negative_infinity +alias nan = FloatLiteral_nan +alias neg_zero = FloatLiteral_negative_zero +alias inf = FloatLiteral_infinity +alias neg_inf = FloatLiteral_negative_infinity def test_division(): diff --git a/stdlib/test/builtin/test_simd.mojo b/stdlib/test/builtin/test_simd.mojo index 184627c5b7..b4f5d45eda 100644 --- a/stdlib/test/builtin/test_simd.mojo +++ b/stdlib/test/builtin/test_simd.mojo @@ -1414,10 +1414,10 @@ def test_reduce_bit_count(): def test_pow(): - alias nan = FloatLiteral.nan - alias neg_zero = FloatLiteral.negative_zero - alias inf = FloatLiteral.infinity - alias neg_inf = FloatLiteral.negative_infinity + alias nan = FloatLiteral_nan + alias neg_zero = FloatLiteral_negative_zero + alias inf = FloatLiteral_infinity + alias neg_inf = FloatLiteral_negative_infinity # Float32 tests alias F32x4 = SIMD[DType.float32, 4] diff --git a/stdlib/test/collections/string/test_string.mojo b/stdlib/test/collections/string/test_string.mojo index 26d14bdeab..84efce56cf 100644 --- a/stdlib/test/collections/string/test_string.mojo +++ b/stdlib/test/collections/string/test_string.mojo @@ -472,10 +472,10 @@ def test_atof(): assert_equal(0.78, atof(" .78 ")) assert_equal(121234.0, atof(" 121234. ")) assert_equal(985031234.0, atof(" 985031234.F ")) - assert_equal(FloatLiteral.negative_zero, atof("-0")) - assert_equal(FloatLiteral.nan, atof(" nan")) - assert_equal(FloatLiteral.infinity, atof(" inf ")) - assert_equal(FloatLiteral.negative_infinity, atof("-inf ")) + assert_equal(FloatLiteral_negative_zero, atof("-0")) + assert_equal(FloatLiteral_nan, atof(" nan")) + assert_equal(FloatLiteral_infinity, atof(" inf ")) + assert_equal(FloatLiteral_negative_infinity, atof("-inf ")) # Negative cases with assert_raises(contains="String is not convertible to float: ''"): From 52b0028a507f5f9f0778982e46d8090658ecbbf7 Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Mon, 24 Feb 2025 08:40:02 -0800 Subject: [PATCH 453/509] [mojo-lang] Expand support for llvm intrinsics at comptime This enables us to call things like isnan that returns a vector of bools. MODULAR_ORIG_COMMIT_REV_ID: 849747e0b50ceb913527d4cf36188e3845601cb8 --- stdlib/test/builtin/test_math.mojo | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/stdlib/test/builtin/test_math.mojo b/stdlib/test/builtin/test_math.mojo index 0667b86cc5..1a3a497fea 100644 --- a/stdlib/test/builtin/test_math.mojo +++ b/stdlib/test/builtin/test_math.mojo @@ -13,6 +13,7 @@ # RUN: %mojo %s from testing import assert_equal +from utils.numerics import isnan def test_abs(): @@ -122,6 +123,15 @@ def test_pow(): assert_equal(pow(I(0, 1, 2, 3), Int(2)), I(0, 1, 4, 9)) +def test_isnan(): + # Check that we can run llvm intrinsics returning bool at comptime. + alias x1 = isnan(SIMD[DType.float32, 4](SIMD[DType.float64, 4](1.0))) + assert_equal(x1, False) + + alias x2 = isnan(SIMD[DType.float32, 4](FloatLiteral_nan)) + assert_equal(x2, True) + + def main(): test_abs() test_divmod() @@ -129,3 +139,4 @@ def main(): test_min() test_round() test_pow() + test_isnan() From 8808bd2d7387c67505c321773f20507b8924399b Mon Sep 17 00:00:00 2001 From: lydiandy Date: Mon, 24 Feb 2025 12:54:29 -0600 Subject: [PATCH 454/509] [External] [docs] Fix some errors in doc (#56549) [External] [docs] Fix some errors in doc Fix a few errors in the doc manual. Co-authored-by: lydiandy Closes modularml/mojo#4012 MODULAR_ORIG_COMMIT_REV_ID: b546bbba3b5e5c964d133d2e38f2250bf9993476 --- docs/manual/basics.mdx | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/docs/manual/basics.mdx b/docs/manual/basics.mdx index b62e7cbf8d..4020b3eb96 100644 --- a/docs/manual/basics.mdx +++ b/docs/manual/basics.mdx @@ -255,7 +255,7 @@ struct MyPair: self.first = first self.second = second - fn __copyinit__(out self, existing other): + fn __copyinit__(out self, existing: Self): self.first = existing.first self.second = existing.second @@ -393,7 +393,7 @@ This function has one parameter of type `Int` and one argument of type argument: ```mojo -defining call_repeat(): +def call_repeat(): repeat[3]("Hello") # Prints "Hello" 3 times ``` @@ -416,8 +416,7 @@ For more detail on parameters, see the section on ## Python integration -Mojo supports the ability to import -Python modules as-is, so you can leverage existing Python code right away. +Mojo supports the ability to import Python modules as-is, so you can leverage existing Python code right away. For example, here's how you can import and use NumPy: @@ -444,8 +443,7 @@ Hopefully this page has given you enough information to start experimenting with Mojo, but this is only touching the surface of what's available in Mojo. If you're in the mood to read more, continue through each page of this -Mojo Manual—the next page from -here is [Functions](/mojo/manual/functions). +Mojo Manual—the next page from here is [Functions](/mojo/manual/functions). Otherwise, here are some other resources to check out: From 49d98e6d375c0a8c04c2bc394250e8bedf861f2b Mon Sep 17 00:00:00 2001 From: Rasool Sharifi Date: Mon, 24 Feb 2025 14:06:11 -0500 Subject: [PATCH 455/509] [stdlib] Fix the broken test for FP8 ldmatrix instruction fp8 accumulation can be done in fp16 or fp32. For now we use fp32 for better accuracy MODULAR_ORIG_COMMIT_REV_ID: 61f6e0371415a51031e0d2e621995d3ea3d3479d --- stdlib/src/utils/numerics.mojo | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/stdlib/src/utils/numerics.mojo b/stdlib/src/utils/numerics.mojo index ef00fbbc79..b79d12eb11 100644 --- a/stdlib/src/utils/numerics.mojo +++ b/stdlib/src/utils/numerics.mojo @@ -1055,7 +1055,10 @@ fn get_accum_type[ @parameter if type.is_float8(): - return DType.float16 + if preferred_accum_type is DType.float32: + return preferred_accum_type + else: + return DType.float16 elif type is DType.bfloat16: return DType.float32 elif type is DType.float16: From fc837b87cb5c1d0d3a33959606b9b6ff60f2559a Mon Sep 17 00:00:00 2001 From: Connor Gray Date: Mon, 24 Feb 2025 15:13:42 -0600 Subject: [PATCH 456/509] [stdlib] feat: Enforce codepoint boundary checks in `StringSlice.__getitem__(Slice)` MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This eliminates an easy and surprising way that invalid UTF-8 sequences could be stored in a `StringSlice`. Prior to this, it was possible to trivially generate `StringSlice` values that did not contain valid UTF-8, by first constructing a valid `StringSlice` containing any multi-byte codepoint sequences, and then slicing part way through that sequence: ```mojo var str = StringSlice("👍") # Valid assert_equal(len(str), 4) # 4 bytes assert_equal(len(str.chars()), 1) # 1 codepoint var uh_oh = str[1:3] # INVALID UTF-8 ``` You would start with the string: ┏━━━━━━━━━━━━━━━┓ ┃ 👍 ┃ String ┣━━━━━━━━━━━━━━━┫ ┃ 👍 ┃ Codepoint Characters ┣━━━━━━━━━━━━━━━┫ ┃ 128077 ┃ Codepoints ┣━━━┳━━━┳━━━┳━━━┫ ┃240┃159┃145┃141┃ Bytes ┗━━━┻━━━┻━━━┻━━━┛ 0 1 2 3 and end up with the (invalid) string data: ┏━━━━━━━┓ ┃ ??? ┃ String ┣━━━━━━━┫ ┃ ??? ┃ Codepoint Characters ┣━━━━━━━┫ ┃ ??? ┃ Codepoints ┣━━━┳━━━┫ ┃159┃145┃ Bytes ┗━━━┻━━━┛ 0 1 which does not encode any valid UTF-8 codepoints, due to the nature of UTF-8 meaning that byte value 159 (0b10011111) does not start a UTF-8 codepoint sequence. Having an invalid StringSlice could lead to undefined behavior and out of bounds reads in code that assumes that StringSlice MUST contain valid UTF-8 and uses more efficient decoding logic that omits checks for malformed UTF-8. MODULAR_ORIG_COMMIT_REV_ID: d5377c851b7a366e4178687def10ddbefe2fcdbf --- docs/changelog.md | 44 +++++++ .../src/collections/string/string_slice.mojo | 18 +++ .../collections/string/test_string_slice.mojo | 114 +++++++++++++++++- 3 files changed, 171 insertions(+), 5 deletions(-) diff --git a/docs/changelog.md b/docs/changelog.md index 20576ca849..3d93f43861 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -67,6 +67,50 @@ what we publish. - Added a `StringSlice.is_codepoint_boundary()` method for querying if a given byte index is a boundary between encoded UTF-8 codepoints. +- `StringSlice.__getitem__(Slice)` will now raise an error if the provided slice + start and end positions do not fall on a valid codepoint boundary. This + prevents construction of malformed `StringSlice` values, which could lead to + memory unsafety or undefined behavior. For example, given a string containing + multi-byte encoded data, like: + + ```mojo + var str_slice = "Hi👋!" + ``` + + and whose in-memory and decoded data looks like: + + ```text + ┏━━━━━━━━━━━━━━━━━━━━━━━━━┓ + ┃ Hi👋! ┃ String + ┣━━┳━━━┳━━━━━━━━━━━━━━━┳━━┫ + ┃H ┃ i ┃ 👋 ┃! ┃ Codepoint Characters + ┣━━╋━━━╋━━━━━━━━━━━━━━━╋━━┫ + ┃72┃105┃ 128075 ┃33┃ Codepoints + ┣━━╋━━━╋━━━┳━━━┳━━━┳━━━╋━━┫ + ┃72┃105┃240┃159┃145┃139┃33┃ Bytes + ┗━━┻━━━┻━━━┻━━━┻━━━┻━━━┻━━┛ + 0 1 2 3 4 5 6 + ``` + + attempting to slice bytes `[3-5)` with `str_slice[3:5]` would previously + erroenously produce a malformed `StringSlice` as output that did not correctly + decode to anything: + + ```text + ┏━━━━━━━┓ + ┃ ??? ┃ + ┣━━━━━━━┫ + ┃ ??? ┃ + ┣━━━━━━━┫ + ┃ ??? ┃ + ┣━━━┳━━━┫ + ┃159┃145┃ + ┗━━━┻━━━┛ + ``` + + The same statement will now raise an error informing the user their indices + are invalid. + - Added an iterator to `LinkedList` ([PR #4005](https://github.com/modular/mojo/pull/4005)) - `LinkedList.__iter__()` to create a forward iterator. - `LinkedList.__reversed__()` for a backward iterator. diff --git a/stdlib/src/collections/string/string_slice.mojo b/stdlib/src/collections/string/string_slice.mojo index cd97b8ed95..60721c8e6e 100644 --- a/stdlib/src/collections/string/string_slice.mojo +++ b/stdlib/src/collections/string/string_slice.mojo @@ -743,6 +743,10 @@ struct StringSlice[mut: Bool, //, origin: Origin[mut]]( Returns: A new StringSlice containing the substring at the specified positions. + + Raises: This function will raise if the specified slice start or end + position are outside the bounds of the string, or if they do not + both fall on codepoint boundaries. """ var step: Int var start: Int @@ -752,6 +756,20 @@ struct StringSlice[mut: Bool, //, origin: Origin[mut]]( if step != 1: raise Error("Slice must be within bounds and step must be 1") + if not self.is_codepoint_boundary(start): + var msg = String.format( + "String `Slice` start byte {} must fall on codepoint boundary.", + start, + ) + raise Error(msg^) + + if not self.is_codepoint_boundary(end): + var msg = String.format( + "String `Slice` end byte {} must fall on codepoint boundary.", + end, + ) + raise Error(msg^) + return Self(unsafe_from_utf8=self._slice[span]) # ===------------------------------------------------------------------===# diff --git a/stdlib/test/collections/string/test_string_slice.mojo b/stdlib/test/collections/string/test_string_slice.mojo index a5cd1e2e44..97a4df03bd 100644 --- a/stdlib/test/collections/string/test_string_slice.mojo +++ b/stdlib/test/collections/string/test_string_slice.mojo @@ -22,6 +22,37 @@ from sys.info import alignof, sizeof from memory import Span, UnsafePointer from testing import assert_equal, assert_false, assert_raises, assert_true +# ===----------------------------------------------------------------------=== # +# Reusable testing data +# ===----------------------------------------------------------------------=== # + +alias EVERY_CODEPOINT_LENGTH_STR = StringSlice("߷കൈ🔄!") +"""A string that contains at least one of 1-, 2-, 3-, and 4-byte UTF-8 +sequences. + +Visualized as: + +```text +┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ +┃ ߷കൈ🔄! ┃ +┣━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━━━━━━┳━━┫ +┃ ߷ ┃ ക ┃ ൈ ┃ 🔄 ┃! ┃ +┣━━━━━━━╋━━━━━━━━━━━╋━━━━━━━━━━━╋━━━━━━━━━━━━━━━╋━━┫ +┃ 2039 ┃ 3349 ┃ 3400 ┃ 128260 ┃33┃ +┣━━━┳━━━╋━━━┳━━━┳━━━╋━━━┳━━━┳━━━╋━━━┳━━━┳━━━┳━━━╋━━┫ +┃223┃183┃224┃180┃149┃224┃181┃136┃240┃159┃148┃132┃33┃ +┗━━━┻━━━┻━━━┻━━━┻━━━┻━━━┻━━━┻━━━┻━━━┻━━━┻━━━┻━━━┻━━┛ + 0 1 2 3 4 5 6 7 8 9 10 11 12 +``` + +For further visualization and analysis involving this sequence, see: +. +""" + +# ===----------------------------------------------------------------------=== # +# Tests +# ===----------------------------------------------------------------------=== # + fn test_string_slice_layout() raises: # Test that the layout of `StringSlice` is the same as `llvm::StringRef`. @@ -115,7 +146,7 @@ fn test_string_byte_span() raises: assert_equal(Int(sub5.unsafe_ptr()) - Int(sub4.unsafe_ptr()), 2) # ---------------------------------- - # Test invalid slicing + # Test out of range slicing # ---------------------------------- # TODO: Improve error reporting for invalid slice bounds. @@ -138,6 +169,81 @@ fn test_string_byte_span() raises: # String("Slice start is out of bounds"), # ) + # -------------------------------------------------------- + # Test that malformed partial slicing of codepoints raises + # -------------------------------------------------------- + + # These test what happens if you try to subslice a string in a way that + # would leave the byte contents of the string containing partial encoded + # codepoint sequences, invalid UTF-8. Consider a string with the following + # content, containing both 1-byte and a 4-byte UTF-8 sequence: + # + # ┏━━━━━━━━━━━━━━━━━━━━━━━━━┓ + # ┃ Hi👋! ┃ String + # ┣━━┳━━━┳━━━━━━━━━━━━━━━┳━━┫ + # ┃H ┃ i ┃ 👋 ┃! ┃ Codepoint Characters + # ┣━━╋━━━╋━━━━━━━━━━━━━━━╋━━┫ + # ┃72┃105┃ 128075 ┃33┃ Codepoints + # ┣━━╋━━━╋━━━┳━━━┳━━━┳━━━╋━━┫ + # ┃72┃105┃240┃159┃145┃139┃33┃ Bytes + # ┗━━┻━━━┻━━━┻━━━┻━━━┻━━━┻━━┛ + # 0 1 2 3 4 5 6 + var unicode_str1 = StringSlice("Hi👋!") + + # Test slicing 0:{0–7} + assert_equal(unicode_str1[0:0], "") + assert_equal(unicode_str1[0:1], "H") + assert_equal(unicode_str1[0:2], "Hi") + with assert_raises( + contains="String `Slice` end byte 3 must fall on codepoint boundary." + ): + _ = unicode_str1[0:3] + with assert_raises( + contains="String `Slice` end byte 4 must fall on codepoint boundary." + ): + _ = unicode_str1[0:4] + with assert_raises( + contains="String `Slice` end byte 5 must fall on codepoint boundary." + ): + _ = unicode_str1[0:5] + assert_equal(unicode_str1[0:6], "Hi👋") + assert_equal(unicode_str1[0:7], "Hi👋!") + + # ------------------------------------------------------------------- + # Test that slicing through combining codepoint graphemes is allowed + # ------------------------------------------------------------------- + + # The "ö" is a user-perceived character (grapheme) that is composed of two + # codepoints. This test tests that we can use string slicing to divide that + # grapheme into constituent codepoints. + # + # ┏━━━━━━━━━━━━━━━┓ + # ┃ yö ┃ String + # ┣━━━┳━━━┳━━━━━━━┫ + # ┃ y ┃ o ┃ ̈ ┃ Codepoint Characters + # ┣━━━╋━━━╋━━━━━━━┫ + # ┃121┃111┃ 776 ┃ Codepoints + # ┣━━━╋━━━╋━━━┳━━━┫ + # ┃121┃111┃204┃136┃ Bytes + # ┗━━━┻━━━┻━━━┻━━━┛ + # 0 1 2 3 + var unicode_str2 = StringSlice("yö") + + assert_equal(unicode_str2[0:1], "y") + assert_equal(unicode_str2[0:2], "yo") + with assert_raises( + contains="String `Slice` end byte 3 must fall on codepoint boundary." + ): + _ = unicode_str2[0:3] + assert_equal(unicode_str2[0:4], unicode_str2) + with assert_raises( + contains="String `Slice` end byte 3 must fall on codepoint boundary." + ): + _ = unicode_str2[2:3] + # NOTE: This renders weirdly, but is a single-codepoint string containing + # . + assert_equal(unicode_str2[2:4], "̈") + fn test_heap_string_from_string_slice() raises: alias string_lit: StringLiteral = "Hello" @@ -236,7 +342,7 @@ fn test_slice_char_length() raises: assert_equal(s1.char_length(), 3) # This string contains 1-, 2-, 3-, and 4-byte codepoint sequences. - var s2 = StringSlice("߷കൈ🔄!") + var s2 = EVERY_CODEPOINT_LENGTH_STR assert_equal(s2.byte_length(), 13) assert_equal(s2.char_length(), 5) @@ -1065,9 +1171,7 @@ def test_chars_iter(): # A piece of text containing, 1-byte, 2-byte, 3-byte, and 4-byte codepoint # sequences. - # For a visualization of this sequence, see: - # https://connorgray.com/ephemera/project-log#2025-01-13 - var s3 = StringSlice("߷കൈ🔄!") + var s3 = EVERY_CODEPOINT_LENGTH_STR assert_equal(s3.byte_length(), 13) assert_equal(s3.char_length(), 5) var s3_iter = s3.codepoints() From 3fee528a0138de9fc77ea7e6260da9bf79f0d992 Mon Sep 17 00:00:00 2001 From: modularbot Date: Tue, 25 Feb 2025 07:00:46 +0000 Subject: [PATCH 457/509] Update lockfiles to point to latest nightly version: 25.2.0.dev2025022505 --- examples/life/magic.lock | 225 +++++++++++++++++----------------- examples/magic.lock | 145 +++++++++++----------- examples/operators/magic.lock | 145 +++++++++++----------- examples/testing/magic.lock | 145 +++++++++++----------- magic.lock | 145 +++++++++++----------- 5 files changed, 410 insertions(+), 395 deletions(-) diff --git a/examples/life/magic.lock b/examples/life/magic.lock index 847eb71184..0aaa0e3585 100644 --- a/examples/life/magic.lock +++ b/examples/life/magic.lock @@ -45,7 +45,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libasprintf-0.23.1-h8e693c7_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libasprintf-devel-0.23.1-h8e693c7_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libavif16-1.1.1-h1909e37_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libavif16-1.1.1-hf3231e4_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-31_h59b9bed_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libcap-2.71-h39aace5_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-31_he106b2a_openblas.conda @@ -103,11 +103,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.6-h8d12d68_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.10.0-h5888daf_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022405-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022405-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022405-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022405-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022405-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022505-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022505-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022505-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/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda @@ -139,7 +139,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-python-0.2.0-py312hb6b8a2b_10.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-spm-0.2.0-h8e10757_10.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/svt-av1-2.3.0-h5888daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/svt-av1-3.0.0-h5888daf_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda @@ -200,7 +200,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h18dbdb1_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libasprintf-0.23.1-h5e0f5ae_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libasprintf-devel-0.23.1-h5e0f5ae_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libavif16-1.1.1-h3b0c220_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libavif16-1.1.1-h0430067_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-31_h1a9f1db_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcap-2.71-h51d75a7_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-31_hab92f65_openblas.conda @@ -258,11 +258,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.6-h2e0c361_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.10.0-h5ad3122_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022405-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022405-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022405-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022405-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022405-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022505-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022505-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022505-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/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-ha32ae93_3.conda @@ -294,7 +294,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-python-0.2.0-py312h197ff68_10.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-spm-0.2.0-h6164ad9_10.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/svt-av1-2.3.0-h5ad3122_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/svt-av1-3.0.0-h5ad3122_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py312h52516f5_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda @@ -348,7 +348,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_h07bc746_4.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libasprintf-0.23.1-h493aca8_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libasprintf-devel-0.23.1-h493aca8_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libavif16-1.1.1-h45b7238_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libavif16-1.1.1-hf9d1e0e_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-31_h10e41b3_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-31_hb3479ef_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda @@ -384,11 +384,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.5.0-h2471fea_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022405-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022405-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022405-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022405-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022405-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022505-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022505-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022505-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/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda @@ -418,7 +418,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-python-0.2.0-py312h155166a_10.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-spm-0.2.0-he13a0af_10.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/svt-av1-2.3.0-hf24288c_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/svt-av1-3.0.0-h8ab69cd_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda @@ -1545,52 +1545,52 @@ packages: license: LGPL-2.1-or-later size: 34641 timestamp: 1739039285881 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libavif16-1.1.1-h1909e37_2.conda - sha256: e06da844b007a64a9ac35d4e3dc4dbc66583f79b57d08166cf58f2f08723a6e8 - md5: 21e468ed3786ebcb2124b123aa2484b7 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libavif16-1.1.1-hf3231e4_3.conda + sha256: fdc5519fd91ebfe713561792365a1e86e0e9a1579b32f7df5d4136e97e01e30f + md5: 57983929fd533126e9bd71754f0d25f5 depends: - __glibc >=2.17,<3.0.a0 - aom >=3.9.1,<3.10.0a0 - dav1d >=1.2.1,<1.2.2.0a0 - libgcc >=13 - rav1e >=0.6.6,<1.0a0 - - svt-av1 >=2.3.0,<2.3.1.0a0 + - svt-av1 >=3.0.0,<3.0.1.0a0 arch: x86_64 platform: linux license: BSD-2-Clause license_family: BSD - size: 116202 - timestamp: 1730268687453 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libavif16-1.1.1-h3b0c220_2.conda - sha256: 8284693096532fb5d1af7fd5c170a4d4f0a54593ba29c881667327b61a7cd7bb - md5: 58ec6027e7b6ea460a4a7ed7112842d8 + size: 117659 + timestamp: 1740443336123 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libavif16-1.1.1-h0430067_3.conda + sha256: f414adc92127560abe135d7ae56d15d734732186fd0ceea408ab7be6415abb6d + md5: f7ecf6b6fbea3f1f6f4efe97b7e4ce4e depends: - aom >=3.9.1,<3.10.0a0 - dav1d >=1.2.1,<1.2.2.0a0 - libgcc >=13 - rav1e >=0.6.6,<1.0a0 - - svt-av1 >=2.3.0,<2.3.1.0a0 + - svt-av1 >=3.0.0,<3.0.1.0a0 arch: aarch64 platform: linux license: BSD-2-Clause license_family: BSD - size: 116097 - timestamp: 1730268695528 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libavif16-1.1.1-h45b7238_2.conda - sha256: c671365e8c822d29b53f20c4573fdbc70f18b50ff9a4b5b2b6b3c8f7ad2ac2a9 - md5: 7571064a60bc193ff5c25f36ed23394a + size: 117519 + timestamp: 1740443361559 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libavif16-1.1.1-hf9d1e0e_3.conda + sha256: 35f411fb4a9c7dfcf47affed864066ccdaa45969d05403f80134a41cdf7159b6 + md5: 8d1a6e4e698ca66e953622764733803a depends: - __osx >=11.0 - aom >=3.9.1,<3.10.0a0 - dav1d >=1.2.1,<1.2.2.0a0 - rav1e >=0.6.6,<1.0a0 - - svt-av1 >=2.3.0,<2.3.1.0a0 + - svt-av1 >=3.0.0,<3.0.1.0a0 arch: arm64 platform: osx license: BSD-2-Clause license_family: BSD - size: 96781 - timestamp: 1730268761553 + size: 98685 + timestamp: 1740443620556 - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-31_h59b9bed_openblas.conda build_number: 31 sha256: 9839fc4ac0cbb0aa3b9eea520adfb57311838959222654804e58f6f2d1771db5 @@ -3498,48 +3498,48 @@ packages: license_family: BSD size: 184953 timestamp: 1733740984533 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022405-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022505-release.conda noarch: python - sha256: a128828563f8128aeddcf2a3b8b229917ff0986de7231f652b2f0066a8cfeab6 - md5: c012465ba92d1c62bae90cf8fb92cbc4 + sha256: f866fdb1ee94edcc101592da0bbf891e7e00c07e29425ae3ad3f73cfbb19f2ae + md5: d19d3ce3db04f2a2528c5452eb6f7a0e depends: - - max-core ==25.2.0.dev2025022405 release - - max-python ==25.2.0.dev2025022405 release - - mojo-jupyter ==25.2.0.dev2025022405 release - - mblack ==25.2.0.dev2025022405 release + - max-core ==25.2.0.dev2025022505 release + - max-python ==25.2.0.dev2025022505 release + - mojo-jupyter ==25.2.0.dev2025022505 release + - mblack ==25.2.0.dev2025022505 release license: LicenseRef-Modular-Proprietary - size: 9901 - timestamp: 1740374150250 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022405-release.conda - sha256: 4550f601e214abb591f8bd915ee1a1ba4ee212eb12272bc12261dfb2e58e4540 - md5: 42905e60460b0fdb3da5eb3230b80441 + size: 9915 + timestamp: 1740460553946 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022505-release.conda + sha256: ab00fce2436f6a1c3b5e5fd3b75898c63b1912637caddff2d7fda9ee610e34bd + md5: 5975b686575ba73ae374140c6ccac077 depends: - - mblack ==25.2.0.dev2025022405 release + - mblack ==25.2.0.dev2025022505 release license: LicenseRef-Modular-Proprietary - size: 243853116 - timestamp: 1740374225756 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022405-release.conda - sha256: b8db8f65548d16233315abbf47e3189fc678d209bb92a3386864b639c9fe4ee3 - md5: c9710a57101a49fe9fc381b37f2fac1d + size: 243957009 + timestamp: 1740460553945 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022505-release.conda + sha256: cbe5677a2201d37a3436b29e8491f6a59ecec475fccb401b3fa5f0ff86476092 + md5: bbcd512adee45bf05195d486cd950f01 depends: - - mblack ==25.2.0.dev2025022405 release + - mblack ==25.2.0.dev2025022505 release license: LicenseRef-Modular-Proprietary - size: 246555186 - timestamp: 1740374150249 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022405-release.conda - sha256: a2af65d4b6412896cd4684424a2002455f9ae32c96638caed09d1752fce83f41 - md5: 6aff7b2bcdc6777c56698ec267cc5de8 + size: 246552488 + timestamp: 1740460534030 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022505-release.conda + sha256: 0472c6ce14ea2cbae97d5687106b927a6861c03bc7d99464f1b05e4fed56c128 + md5: b91b88a3c529382318e43790f93b67d6 depends: - - mblack ==25.2.0.dev2025022405 release + - mblack ==25.2.0.dev2025022505 release license: LicenseRef-Modular-Proprietary - size: 212297233 - timestamp: 1740375201832 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022405-release.conda + size: 212086616 + timestamp: 1740461647314 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022505-release.conda noarch: python - sha256: 924f15e953e2d050d2a4baa8b40b83385a9d0d9452b8d3071f9220ad77f108ed - md5: fad312f931cf1eeb89fbfc6022512883 + sha256: 510cae5d966a3539c4ab959e9d6cc053fa5c9aa690a0c633abf2d611d867bb9f + md5: cfadc13c0b8012df6aedf5f0bf38e895 depends: - - max-core ==25.2.0.dev2025022405 release + - max-core ==25.2.0.dev2025022505 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -3577,14 +3577,14 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 120685856 - timestamp: 1740374225756 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022405-release.conda + size: 120088340 + timestamp: 1740460553946 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022505-release.conda noarch: python - sha256: db2f136c098a775f8f11a4ab8b2a6159ddb8093d4f1f9a9b4534c5eaea5408ac - md5: 3fc1f7c0ed635f25c01713db5481cb78 + sha256: c8b5da7eadac0fd07499a229ed0d61e2ad1dc0dd8223d0626096f2df3720ce30 + md5: 28fc06f7bf34d1bf018c42be174db363 depends: - - max-core ==25.2.0.dev2025022405 release + - max-core ==25.2.0.dev2025022505 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -3622,14 +3622,14 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 123454603 - timestamp: 1740374150250 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022405-release.conda + size: 122656023 + timestamp: 1740460534030 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022505-release.conda noarch: python - sha256: 2e25b0874f42e448beb065f01b977142ff729938570b9f9d7974595f1ebd0076 - md5: f867571007458f5e0b95731995bb7f17 + sha256: 0facbf91492933f8398d47c970b1f85da216a4b4e3993a413139d4f55542e7ae + md5: 213ca4e733b24bdcb068dd91dc61ac01 depends: - - max-core ==25.2.0.dev2025022405 release + - max-core ==25.2.0.dev2025022505 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -3667,12 +3667,12 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 110137192 - timestamp: 1740375201832 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022405-release.conda + size: 109495643 + timestamp: 1740461647314 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022505-release.conda noarch: python - sha256: e435c909399e7413f6941e960143858acee4cf0d05dd6c02bf159e08cbde38a4 - md5: bc63e516c54cba1a99f76efd394e626e + sha256: 3b8aa31188a70fc4d4658c51644c5e3b2680759cfda7ebbe8c67259525e9a2a2 + md5: fc70e9e0ac92a2deaacd2c39dc6a0f46 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -3683,20 +3683,20 @@ packages: - typing_extensions >=v4.12.2 - python license: MIT - size: 130846 - timestamp: 1740374225756 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022405-release.conda + size: 130852 + timestamp: 1740460553945 +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022505-release.conda noarch: python - sha256: 5ba32fa10c188a376a3b1673d59626d357231028c2ba71a4b06688998f01a5bb - md5: 6432cbc5b412f8351358b06534a68122 + sha256: 098da4969faff354c251849fc353acfab1b535db5fb19282a0102b23964c1d15 + md5: a717b09355552fc825384d43f885d90a depends: - - max-core ==25.2.0.dev2025022405 release + - max-core ==25.2.0.dev2025022505 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22984 - timestamp: 1740374225756 + size: 22987 + timestamp: 1740460553945 - conda: https://conda.anaconda.org/conda-forge/linux-64/mpg123-1.32.9-hc50e24c_0.conda sha256: 39c4700fb3fbe403a77d8cc27352fa72ba744db487559d5d44bf8411bb4ea200 md5: c7f302fd11eeb0987a6a5e1f3aed6a21 @@ -4434,6 +4434,7 @@ packages: arch: x86_64 platform: linux license: GPL-3.0-only + license_family: GPL size: 282480 timestamp: 1740379431762 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8382b9d_2.conda @@ -4445,6 +4446,7 @@ packages: arch: aarch64 platform: linux license: GPL-3.0-only + license_family: GPL size: 291806 timestamp: 1740380591358 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda @@ -4455,6 +4457,7 @@ packages: arch: arm64 platform: osx license: GPL-3.0-only + license_family: GPL size: 252359 timestamp: 1740379663071 - conda: https://conda.anaconda.org/conda-forge/linux-64/sdl2-2.32.50-h9b8e6db_0.conda @@ -4870,9 +4873,9 @@ packages: license_family: MIT size: 16385 timestamp: 1733381032766 -- conda: https://conda.anaconda.org/conda-forge/linux-64/svt-av1-2.3.0-h5888daf_0.conda - sha256: df30a9be29f1a8b5a2e314dd5b16ccfbcbd1cc6a4f659340e8bc2bd4de37bc6f - md5: 355898d24394b2af353eb96358db9fdd +- conda: https://conda.anaconda.org/conda-forge/linux-64/svt-av1-3.0.0-h5888daf_0.conda + sha256: 01ae1e86f79e05b9e687ef3b963e7f4f8a7554ac9f5af4dc1e3dc11ed79548b2 + md5: d86fc7eb811593abc06b328d3d72c001 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -4881,11 +4884,11 @@ packages: platform: linux license: BSD-2-Clause license_family: BSD - size: 2746291 - timestamp: 1730246036363 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/svt-av1-2.3.0-h5ad3122_0.conda - sha256: 2fad2496a21d198ea72f5dabfdace2fae0ced5cc3ea243922cb372fcf4c18222 - md5: efb60b536bbf64772929b57f6b30298b + size: 2746763 + timestamp: 1740096577511 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/svt-av1-3.0.0-h5ad3122_0.conda + sha256: dd730fe6914a748f2466ac077f3b5b219fec4e49b9e05454af856e42ffe46c58 + md5: 65e68986e59b0e1272af76e6356828a9 depends: - libgcc >=13 - libstdcxx >=13 @@ -4893,20 +4896,20 @@ packages: platform: linux license: BSD-2-Clause license_family: BSD - size: 1796731 - timestamp: 1730246027014 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/svt-av1-2.3.0-hf24288c_0.conda - sha256: ab876ed8bdd20e22a868dcb8d03e9ce9bbba7762d7e652d49bfff6af768a5b8f - md5: 114c33e9eec335a379c9ee6c498bb807 + size: 1920727 + timestamp: 1740099395955 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/svt-av1-3.0.0-h8ab69cd_0.conda + sha256: 94802f002ec504c4a8a8dc5bb59d992a53eaa41379d7258a409939f9bb84547d + md5: 419e4ba326a85ce687a6b038e442c744 depends: - __osx >=11.0 - - libcxx >=17 + - libcxx >=18 arch: arm64 platform: osx license: BSD-2-Clause license_family: BSD - size: 1387330 - timestamp: 1730246134730 + size: 1447364 + timestamp: 1740096672763 - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda sha256: e0569c9caa68bf476bead1bed3d79650bb080b532c64a4af7d8ca286c08dea4e md5: d453b98d9c83e71da0741bb0ff4d76bc diff --git a/examples/magic.lock b/examples/magic.lock index 66ae53094e..cf66ed54b7 100644 --- a/examples/magic.lock +++ b/examples/magic.lock @@ -42,11 +42,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022405-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022405-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022405-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022405-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022405-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022505-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022505-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022505-release.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-h2d0b736_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py311h64a7726_0.conda @@ -107,11 +107,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022405-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022405-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022405-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022405-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022405-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022505-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022505-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022505-release.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-ha32ae93_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py311h69ead2a_0.conda @@ -163,11 +163,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.1-h3f77e49_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022405-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022405-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022405-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022405-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022405-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022505-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022505-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022505-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py311h7125741_0.conda @@ -1301,48 +1301,48 @@ packages: license_family: APACHE size: 280830 timestamp: 1736986295869 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022405-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022505-release.conda noarch: python - sha256: a128828563f8128aeddcf2a3b8b229917ff0986de7231f652b2f0066a8cfeab6 - md5: c012465ba92d1c62bae90cf8fb92cbc4 + sha256: f866fdb1ee94edcc101592da0bbf891e7e00c07e29425ae3ad3f73cfbb19f2ae + md5: d19d3ce3db04f2a2528c5452eb6f7a0e depends: - - max-core ==25.2.0.dev2025022405 release - - max-python ==25.2.0.dev2025022405 release - - mojo-jupyter ==25.2.0.dev2025022405 release - - mblack ==25.2.0.dev2025022405 release + - max-core ==25.2.0.dev2025022505 release + - max-python ==25.2.0.dev2025022505 release + - mojo-jupyter ==25.2.0.dev2025022505 release + - mblack ==25.2.0.dev2025022505 release license: LicenseRef-Modular-Proprietary - size: 9901 - timestamp: 1740374150250 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022405-release.conda - sha256: 4550f601e214abb591f8bd915ee1a1ba4ee212eb12272bc12261dfb2e58e4540 - md5: 42905e60460b0fdb3da5eb3230b80441 + size: 9915 + timestamp: 1740460553946 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022505-release.conda + sha256: ab00fce2436f6a1c3b5e5fd3b75898c63b1912637caddff2d7fda9ee610e34bd + md5: 5975b686575ba73ae374140c6ccac077 depends: - - mblack ==25.2.0.dev2025022405 release + - mblack ==25.2.0.dev2025022505 release license: LicenseRef-Modular-Proprietary - size: 243853116 - timestamp: 1740374225756 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022405-release.conda - sha256: b8db8f65548d16233315abbf47e3189fc678d209bb92a3386864b639c9fe4ee3 - md5: c9710a57101a49fe9fc381b37f2fac1d + size: 243957009 + timestamp: 1740460553945 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022505-release.conda + sha256: cbe5677a2201d37a3436b29e8491f6a59ecec475fccb401b3fa5f0ff86476092 + md5: bbcd512adee45bf05195d486cd950f01 depends: - - mblack ==25.2.0.dev2025022405 release + - mblack ==25.2.0.dev2025022505 release license: LicenseRef-Modular-Proprietary - size: 246555186 - timestamp: 1740374150249 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022405-release.conda - sha256: a2af65d4b6412896cd4684424a2002455f9ae32c96638caed09d1752fce83f41 - md5: 6aff7b2bcdc6777c56698ec267cc5de8 + size: 246552488 + timestamp: 1740460534030 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022505-release.conda + sha256: 0472c6ce14ea2cbae97d5687106b927a6861c03bc7d99464f1b05e4fed56c128 + md5: b91b88a3c529382318e43790f93b67d6 depends: - - mblack ==25.2.0.dev2025022405 release + - mblack ==25.2.0.dev2025022505 release license: LicenseRef-Modular-Proprietary - size: 212297233 - timestamp: 1740375201832 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022405-release.conda + size: 212086616 + timestamp: 1740461647314 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022505-release.conda noarch: python - sha256: 924f15e953e2d050d2a4baa8b40b83385a9d0d9452b8d3071f9220ad77f108ed - md5: fad312f931cf1eeb89fbfc6022512883 + sha256: 510cae5d966a3539c4ab959e9d6cc053fa5c9aa690a0c633abf2d611d867bb9f + md5: cfadc13c0b8012df6aedf5f0bf38e895 depends: - - max-core ==25.2.0.dev2025022405 release + - max-core ==25.2.0.dev2025022505 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1380,14 +1380,14 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 120685856 - timestamp: 1740374225756 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022405-release.conda + size: 120088340 + timestamp: 1740460553946 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022505-release.conda noarch: python - sha256: db2f136c098a775f8f11a4ab8b2a6159ddb8093d4f1f9a9b4534c5eaea5408ac - md5: 3fc1f7c0ed635f25c01713db5481cb78 + sha256: c8b5da7eadac0fd07499a229ed0d61e2ad1dc0dd8223d0626096f2df3720ce30 + md5: 28fc06f7bf34d1bf018c42be174db363 depends: - - max-core ==25.2.0.dev2025022405 release + - max-core ==25.2.0.dev2025022505 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1425,14 +1425,14 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 123454603 - timestamp: 1740374150250 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022405-release.conda + size: 122656023 + timestamp: 1740460534030 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022505-release.conda noarch: python - sha256: 2e25b0874f42e448beb065f01b977142ff729938570b9f9d7974595f1ebd0076 - md5: f867571007458f5e0b95731995bb7f17 + sha256: 0facbf91492933f8398d47c970b1f85da216a4b4e3993a413139d4f55542e7ae + md5: 213ca4e733b24bdcb068dd91dc61ac01 depends: - - max-core ==25.2.0.dev2025022405 release + - max-core ==25.2.0.dev2025022505 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1470,12 +1470,12 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 110137192 - timestamp: 1740375201832 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022405-release.conda + size: 109495643 + timestamp: 1740461647314 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022505-release.conda noarch: python - sha256: e435c909399e7413f6941e960143858acee4cf0d05dd6c02bf159e08cbde38a4 - md5: bc63e516c54cba1a99f76efd394e626e + sha256: 3b8aa31188a70fc4d4658c51644c5e3b2680759cfda7ebbe8c67259525e9a2a2 + md5: fc70e9e0ac92a2deaacd2c39dc6a0f46 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -1486,20 +1486,20 @@ packages: - typing_extensions >=v4.12.2 - python license: MIT - size: 130846 - timestamp: 1740374225756 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022405-release.conda + size: 130852 + timestamp: 1740460553945 +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022505-release.conda noarch: python - sha256: 5ba32fa10c188a376a3b1673d59626d357231028c2ba71a4b06688998f01a5bb - md5: 6432cbc5b412f8351358b06534a68122 + sha256: 098da4969faff354c251849fc353acfab1b535db5fb19282a0102b23964c1d15 + md5: a717b09355552fc825384d43f885d90a depends: - - max-core ==25.2.0.dev2025022405 release + - max-core ==25.2.0.dev2025022505 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22984 - timestamp: 1740374225756 + size: 22987 + timestamp: 1740460553945 - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda sha256: 1895f47b7d68581a6facde5cb13ab8c2764c2e53a76bd746f8f98910dc4e08fe md5: 29097e7ea634a45cc5386b95cac6568f @@ -1848,6 +1848,7 @@ packages: arch: x86_64 platform: linux license: GPL-3.0-only + license_family: GPL size: 282480 timestamp: 1740379431762 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8382b9d_2.conda @@ -1859,6 +1860,7 @@ packages: arch: aarch64 platform: linux license: GPL-3.0-only + license_family: GPL size: 291806 timestamp: 1740380591358 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda @@ -1869,6 +1871,7 @@ packages: arch: arm64 platform: osx license: GPL-3.0-only + license_family: GPL size: 252359 timestamp: 1740379663071 - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-0.2.0-h074ec65_10.conda diff --git a/examples/operators/magic.lock b/examples/operators/magic.lock index 1885b4409e..c7da09c0ff 100644 --- a/examples/operators/magic.lock +++ b/examples/operators/magic.lock @@ -42,11 +42,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022405-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022405-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022405-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022405-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022405-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022505-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022505-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022505-release.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-h2d0b736_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda @@ -107,11 +107,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022405-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022405-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022405-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022405-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022405-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022505-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022505-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022505-release.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-ha32ae93_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda @@ -163,11 +163,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.1-h3f77e49_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022405-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022405-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022405-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022405-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022405-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022505-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022505-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022505-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda @@ -1301,48 +1301,48 @@ packages: license_family: APACHE size: 280830 timestamp: 1736986295869 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022405-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022505-release.conda noarch: python - sha256: a128828563f8128aeddcf2a3b8b229917ff0986de7231f652b2f0066a8cfeab6 - md5: c012465ba92d1c62bae90cf8fb92cbc4 + sha256: f866fdb1ee94edcc101592da0bbf891e7e00c07e29425ae3ad3f73cfbb19f2ae + md5: d19d3ce3db04f2a2528c5452eb6f7a0e depends: - - max-core ==25.2.0.dev2025022405 release - - max-python ==25.2.0.dev2025022405 release - - mojo-jupyter ==25.2.0.dev2025022405 release - - mblack ==25.2.0.dev2025022405 release + - max-core ==25.2.0.dev2025022505 release + - max-python ==25.2.0.dev2025022505 release + - mojo-jupyter ==25.2.0.dev2025022505 release + - mblack ==25.2.0.dev2025022505 release license: LicenseRef-Modular-Proprietary - size: 9901 - timestamp: 1740374150250 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022405-release.conda - sha256: 4550f601e214abb591f8bd915ee1a1ba4ee212eb12272bc12261dfb2e58e4540 - md5: 42905e60460b0fdb3da5eb3230b80441 + size: 9915 + timestamp: 1740460553946 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022505-release.conda + sha256: ab00fce2436f6a1c3b5e5fd3b75898c63b1912637caddff2d7fda9ee610e34bd + md5: 5975b686575ba73ae374140c6ccac077 depends: - - mblack ==25.2.0.dev2025022405 release + - mblack ==25.2.0.dev2025022505 release license: LicenseRef-Modular-Proprietary - size: 243853116 - timestamp: 1740374225756 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022405-release.conda - sha256: b8db8f65548d16233315abbf47e3189fc678d209bb92a3386864b639c9fe4ee3 - md5: c9710a57101a49fe9fc381b37f2fac1d + size: 243957009 + timestamp: 1740460553945 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022505-release.conda + sha256: cbe5677a2201d37a3436b29e8491f6a59ecec475fccb401b3fa5f0ff86476092 + md5: bbcd512adee45bf05195d486cd950f01 depends: - - mblack ==25.2.0.dev2025022405 release + - mblack ==25.2.0.dev2025022505 release license: LicenseRef-Modular-Proprietary - size: 246555186 - timestamp: 1740374150249 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022405-release.conda - sha256: a2af65d4b6412896cd4684424a2002455f9ae32c96638caed09d1752fce83f41 - md5: 6aff7b2bcdc6777c56698ec267cc5de8 + size: 246552488 + timestamp: 1740460534030 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022505-release.conda + sha256: 0472c6ce14ea2cbae97d5687106b927a6861c03bc7d99464f1b05e4fed56c128 + md5: b91b88a3c529382318e43790f93b67d6 depends: - - mblack ==25.2.0.dev2025022405 release + - mblack ==25.2.0.dev2025022505 release license: LicenseRef-Modular-Proprietary - size: 212297233 - timestamp: 1740375201832 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022405-release.conda + size: 212086616 + timestamp: 1740461647314 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022505-release.conda noarch: python - sha256: 924f15e953e2d050d2a4baa8b40b83385a9d0d9452b8d3071f9220ad77f108ed - md5: fad312f931cf1eeb89fbfc6022512883 + sha256: 510cae5d966a3539c4ab959e9d6cc053fa5c9aa690a0c633abf2d611d867bb9f + md5: cfadc13c0b8012df6aedf5f0bf38e895 depends: - - max-core ==25.2.0.dev2025022405 release + - max-core ==25.2.0.dev2025022505 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1380,14 +1380,14 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 120685856 - timestamp: 1740374225756 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022405-release.conda + size: 120088340 + timestamp: 1740460553946 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022505-release.conda noarch: python - sha256: db2f136c098a775f8f11a4ab8b2a6159ddb8093d4f1f9a9b4534c5eaea5408ac - md5: 3fc1f7c0ed635f25c01713db5481cb78 + sha256: c8b5da7eadac0fd07499a229ed0d61e2ad1dc0dd8223d0626096f2df3720ce30 + md5: 28fc06f7bf34d1bf018c42be174db363 depends: - - max-core ==25.2.0.dev2025022405 release + - max-core ==25.2.0.dev2025022505 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1425,14 +1425,14 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 123454603 - timestamp: 1740374150250 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022405-release.conda + size: 122656023 + timestamp: 1740460534030 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022505-release.conda noarch: python - sha256: 2e25b0874f42e448beb065f01b977142ff729938570b9f9d7974595f1ebd0076 - md5: f867571007458f5e0b95731995bb7f17 + sha256: 0facbf91492933f8398d47c970b1f85da216a4b4e3993a413139d4f55542e7ae + md5: 213ca4e733b24bdcb068dd91dc61ac01 depends: - - max-core ==25.2.0.dev2025022405 release + - max-core ==25.2.0.dev2025022505 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1470,12 +1470,12 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 110137192 - timestamp: 1740375201832 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022405-release.conda + size: 109495643 + timestamp: 1740461647314 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022505-release.conda noarch: python - sha256: e435c909399e7413f6941e960143858acee4cf0d05dd6c02bf159e08cbde38a4 - md5: bc63e516c54cba1a99f76efd394e626e + sha256: 3b8aa31188a70fc4d4658c51644c5e3b2680759cfda7ebbe8c67259525e9a2a2 + md5: fc70e9e0ac92a2deaacd2c39dc6a0f46 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -1486,20 +1486,20 @@ packages: - typing_extensions >=v4.12.2 - python license: MIT - size: 130846 - timestamp: 1740374225756 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022405-release.conda + size: 130852 + timestamp: 1740460553945 +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022505-release.conda noarch: python - sha256: 5ba32fa10c188a376a3b1673d59626d357231028c2ba71a4b06688998f01a5bb - md5: 6432cbc5b412f8351358b06534a68122 + sha256: 098da4969faff354c251849fc353acfab1b535db5fb19282a0102b23964c1d15 + md5: a717b09355552fc825384d43f885d90a depends: - - max-core ==25.2.0.dev2025022405 release + - max-core ==25.2.0.dev2025022505 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22984 - timestamp: 1740374225756 + size: 22987 + timestamp: 1740460553945 - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda sha256: 1895f47b7d68581a6facde5cb13ab8c2764c2e53a76bd746f8f98910dc4e08fe md5: 29097e7ea634a45cc5386b95cac6568f @@ -1845,6 +1845,7 @@ packages: arch: x86_64 platform: linux license: GPL-3.0-only + license_family: GPL size: 282480 timestamp: 1740379431762 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8382b9d_2.conda @@ -1856,6 +1857,7 @@ packages: arch: aarch64 platform: linux license: GPL-3.0-only + license_family: GPL size: 291806 timestamp: 1740380591358 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda @@ -1866,6 +1868,7 @@ packages: arch: arm64 platform: osx license: GPL-3.0-only + license_family: GPL size: 252359 timestamp: 1740379663071 - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-0.2.0-hc8f76dd_10.conda diff --git a/examples/testing/magic.lock b/examples/testing/magic.lock index 1885b4409e..c7da09c0ff 100644 --- a/examples/testing/magic.lock +++ b/examples/testing/magic.lock @@ -42,11 +42,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022405-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022405-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022405-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022405-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022405-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022505-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022505-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022505-release.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-h2d0b736_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda @@ -107,11 +107,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022405-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022405-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022405-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022405-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022405-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022505-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022505-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022505-release.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-ha32ae93_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda @@ -163,11 +163,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.1-h3f77e49_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022405-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022405-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022405-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022405-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022405-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022505-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022505-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022505-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda @@ -1301,48 +1301,48 @@ packages: license_family: APACHE size: 280830 timestamp: 1736986295869 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022405-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022505-release.conda noarch: python - sha256: a128828563f8128aeddcf2a3b8b229917ff0986de7231f652b2f0066a8cfeab6 - md5: c012465ba92d1c62bae90cf8fb92cbc4 + sha256: f866fdb1ee94edcc101592da0bbf891e7e00c07e29425ae3ad3f73cfbb19f2ae + md5: d19d3ce3db04f2a2528c5452eb6f7a0e depends: - - max-core ==25.2.0.dev2025022405 release - - max-python ==25.2.0.dev2025022405 release - - mojo-jupyter ==25.2.0.dev2025022405 release - - mblack ==25.2.0.dev2025022405 release + - max-core ==25.2.0.dev2025022505 release + - max-python ==25.2.0.dev2025022505 release + - mojo-jupyter ==25.2.0.dev2025022505 release + - mblack ==25.2.0.dev2025022505 release license: LicenseRef-Modular-Proprietary - size: 9901 - timestamp: 1740374150250 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022405-release.conda - sha256: 4550f601e214abb591f8bd915ee1a1ba4ee212eb12272bc12261dfb2e58e4540 - md5: 42905e60460b0fdb3da5eb3230b80441 + size: 9915 + timestamp: 1740460553946 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022505-release.conda + sha256: ab00fce2436f6a1c3b5e5fd3b75898c63b1912637caddff2d7fda9ee610e34bd + md5: 5975b686575ba73ae374140c6ccac077 depends: - - mblack ==25.2.0.dev2025022405 release + - mblack ==25.2.0.dev2025022505 release license: LicenseRef-Modular-Proprietary - size: 243853116 - timestamp: 1740374225756 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022405-release.conda - sha256: b8db8f65548d16233315abbf47e3189fc678d209bb92a3386864b639c9fe4ee3 - md5: c9710a57101a49fe9fc381b37f2fac1d + size: 243957009 + timestamp: 1740460553945 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022505-release.conda + sha256: cbe5677a2201d37a3436b29e8491f6a59ecec475fccb401b3fa5f0ff86476092 + md5: bbcd512adee45bf05195d486cd950f01 depends: - - mblack ==25.2.0.dev2025022405 release + - mblack ==25.2.0.dev2025022505 release license: LicenseRef-Modular-Proprietary - size: 246555186 - timestamp: 1740374150249 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022405-release.conda - sha256: a2af65d4b6412896cd4684424a2002455f9ae32c96638caed09d1752fce83f41 - md5: 6aff7b2bcdc6777c56698ec267cc5de8 + size: 246552488 + timestamp: 1740460534030 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022505-release.conda + sha256: 0472c6ce14ea2cbae97d5687106b927a6861c03bc7d99464f1b05e4fed56c128 + md5: b91b88a3c529382318e43790f93b67d6 depends: - - mblack ==25.2.0.dev2025022405 release + - mblack ==25.2.0.dev2025022505 release license: LicenseRef-Modular-Proprietary - size: 212297233 - timestamp: 1740375201832 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022405-release.conda + size: 212086616 + timestamp: 1740461647314 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022505-release.conda noarch: python - sha256: 924f15e953e2d050d2a4baa8b40b83385a9d0d9452b8d3071f9220ad77f108ed - md5: fad312f931cf1eeb89fbfc6022512883 + sha256: 510cae5d966a3539c4ab959e9d6cc053fa5c9aa690a0c633abf2d611d867bb9f + md5: cfadc13c0b8012df6aedf5f0bf38e895 depends: - - max-core ==25.2.0.dev2025022405 release + - max-core ==25.2.0.dev2025022505 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1380,14 +1380,14 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 120685856 - timestamp: 1740374225756 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022405-release.conda + size: 120088340 + timestamp: 1740460553946 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022505-release.conda noarch: python - sha256: db2f136c098a775f8f11a4ab8b2a6159ddb8093d4f1f9a9b4534c5eaea5408ac - md5: 3fc1f7c0ed635f25c01713db5481cb78 + sha256: c8b5da7eadac0fd07499a229ed0d61e2ad1dc0dd8223d0626096f2df3720ce30 + md5: 28fc06f7bf34d1bf018c42be174db363 depends: - - max-core ==25.2.0.dev2025022405 release + - max-core ==25.2.0.dev2025022505 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1425,14 +1425,14 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 123454603 - timestamp: 1740374150250 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022405-release.conda + size: 122656023 + timestamp: 1740460534030 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022505-release.conda noarch: python - sha256: 2e25b0874f42e448beb065f01b977142ff729938570b9f9d7974595f1ebd0076 - md5: f867571007458f5e0b95731995bb7f17 + sha256: 0facbf91492933f8398d47c970b1f85da216a4b4e3993a413139d4f55542e7ae + md5: 213ca4e733b24bdcb068dd91dc61ac01 depends: - - max-core ==25.2.0.dev2025022405 release + - max-core ==25.2.0.dev2025022505 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1470,12 +1470,12 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 110137192 - timestamp: 1740375201832 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022405-release.conda + size: 109495643 + timestamp: 1740461647314 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022505-release.conda noarch: python - sha256: e435c909399e7413f6941e960143858acee4cf0d05dd6c02bf159e08cbde38a4 - md5: bc63e516c54cba1a99f76efd394e626e + sha256: 3b8aa31188a70fc4d4658c51644c5e3b2680759cfda7ebbe8c67259525e9a2a2 + md5: fc70e9e0ac92a2deaacd2c39dc6a0f46 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -1486,20 +1486,20 @@ packages: - typing_extensions >=v4.12.2 - python license: MIT - size: 130846 - timestamp: 1740374225756 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022405-release.conda + size: 130852 + timestamp: 1740460553945 +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022505-release.conda noarch: python - sha256: 5ba32fa10c188a376a3b1673d59626d357231028c2ba71a4b06688998f01a5bb - md5: 6432cbc5b412f8351358b06534a68122 + sha256: 098da4969faff354c251849fc353acfab1b535db5fb19282a0102b23964c1d15 + md5: a717b09355552fc825384d43f885d90a depends: - - max-core ==25.2.0.dev2025022405 release + - max-core ==25.2.0.dev2025022505 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22984 - timestamp: 1740374225756 + size: 22987 + timestamp: 1740460553945 - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda sha256: 1895f47b7d68581a6facde5cb13ab8c2764c2e53a76bd746f8f98910dc4e08fe md5: 29097e7ea634a45cc5386b95cac6568f @@ -1845,6 +1845,7 @@ packages: arch: x86_64 platform: linux license: GPL-3.0-only + license_family: GPL size: 282480 timestamp: 1740379431762 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8382b9d_2.conda @@ -1856,6 +1857,7 @@ packages: arch: aarch64 platform: linux license: GPL-3.0-only + license_family: GPL size: 291806 timestamp: 1740380591358 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda @@ -1866,6 +1868,7 @@ packages: arch: arm64 platform: osx license: GPL-3.0-only + license_family: GPL size: 252359 timestamp: 1740379663071 - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-0.2.0-hc8f76dd_10.conda diff --git a/magic.lock b/magic.lock index 9b89cf0403..3887488bd6 100644 --- a/magic.lock +++ b/magic.lock @@ -43,11 +43,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/lit-19.1.7-pyhd8ed1ab_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022405-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022405-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022405-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022405-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022405-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022505-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022505-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022505-release.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-h2d0b736_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda @@ -109,11 +109,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/lit-19.1.7-pyhd8ed1ab_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022405-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022405-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022405-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022405-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022405-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022505-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022505-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022505-release.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-ha32ae93_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda @@ -166,11 +166,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/lit-19.1.7-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022405-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022405-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022405-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022405-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022405-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022505-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022505-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022505-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda @@ -1313,48 +1313,48 @@ packages: license_family: APACHE size: 280830 timestamp: 1736986295869 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022405-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022505-release.conda noarch: python - sha256: a128828563f8128aeddcf2a3b8b229917ff0986de7231f652b2f0066a8cfeab6 - md5: c012465ba92d1c62bae90cf8fb92cbc4 + sha256: f866fdb1ee94edcc101592da0bbf891e7e00c07e29425ae3ad3f73cfbb19f2ae + md5: d19d3ce3db04f2a2528c5452eb6f7a0e depends: - - max-core ==25.2.0.dev2025022405 release - - max-python ==25.2.0.dev2025022405 release - - mojo-jupyter ==25.2.0.dev2025022405 release - - mblack ==25.2.0.dev2025022405 release + - max-core ==25.2.0.dev2025022505 release + - max-python ==25.2.0.dev2025022505 release + - mojo-jupyter ==25.2.0.dev2025022505 release + - mblack ==25.2.0.dev2025022505 release license: LicenseRef-Modular-Proprietary - size: 9901 - timestamp: 1740374150250 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022405-release.conda - sha256: 4550f601e214abb591f8bd915ee1a1ba4ee212eb12272bc12261dfb2e58e4540 - md5: 42905e60460b0fdb3da5eb3230b80441 + size: 9915 + timestamp: 1740460553946 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022505-release.conda + sha256: ab00fce2436f6a1c3b5e5fd3b75898c63b1912637caddff2d7fda9ee610e34bd + md5: 5975b686575ba73ae374140c6ccac077 depends: - - mblack ==25.2.0.dev2025022405 release + - mblack ==25.2.0.dev2025022505 release license: LicenseRef-Modular-Proprietary - size: 243853116 - timestamp: 1740374225756 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022405-release.conda - sha256: b8db8f65548d16233315abbf47e3189fc678d209bb92a3386864b639c9fe4ee3 - md5: c9710a57101a49fe9fc381b37f2fac1d + size: 243957009 + timestamp: 1740460553945 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022505-release.conda + sha256: cbe5677a2201d37a3436b29e8491f6a59ecec475fccb401b3fa5f0ff86476092 + md5: bbcd512adee45bf05195d486cd950f01 depends: - - mblack ==25.2.0.dev2025022405 release + - mblack ==25.2.0.dev2025022505 release license: LicenseRef-Modular-Proprietary - size: 246555186 - timestamp: 1740374150249 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022405-release.conda - sha256: a2af65d4b6412896cd4684424a2002455f9ae32c96638caed09d1752fce83f41 - md5: 6aff7b2bcdc6777c56698ec267cc5de8 + size: 246552488 + timestamp: 1740460534030 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022505-release.conda + sha256: 0472c6ce14ea2cbae97d5687106b927a6861c03bc7d99464f1b05e4fed56c128 + md5: b91b88a3c529382318e43790f93b67d6 depends: - - mblack ==25.2.0.dev2025022405 release + - mblack ==25.2.0.dev2025022505 release license: LicenseRef-Modular-Proprietary - size: 212297233 - timestamp: 1740375201832 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022405-release.conda + size: 212086616 + timestamp: 1740461647314 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022505-release.conda noarch: python - sha256: 924f15e953e2d050d2a4baa8b40b83385a9d0d9452b8d3071f9220ad77f108ed - md5: fad312f931cf1eeb89fbfc6022512883 + sha256: 510cae5d966a3539c4ab959e9d6cc053fa5c9aa690a0c633abf2d611d867bb9f + md5: cfadc13c0b8012df6aedf5f0bf38e895 depends: - - max-core ==25.2.0.dev2025022405 release + - max-core ==25.2.0.dev2025022505 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1392,14 +1392,14 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 120685856 - timestamp: 1740374225756 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022405-release.conda + size: 120088340 + timestamp: 1740460553946 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022505-release.conda noarch: python - sha256: db2f136c098a775f8f11a4ab8b2a6159ddb8093d4f1f9a9b4534c5eaea5408ac - md5: 3fc1f7c0ed635f25c01713db5481cb78 + sha256: c8b5da7eadac0fd07499a229ed0d61e2ad1dc0dd8223d0626096f2df3720ce30 + md5: 28fc06f7bf34d1bf018c42be174db363 depends: - - max-core ==25.2.0.dev2025022405 release + - max-core ==25.2.0.dev2025022505 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1437,14 +1437,14 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 123454603 - timestamp: 1740374150250 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022405-release.conda + size: 122656023 + timestamp: 1740460534030 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022505-release.conda noarch: python - sha256: 2e25b0874f42e448beb065f01b977142ff729938570b9f9d7974595f1ebd0076 - md5: f867571007458f5e0b95731995bb7f17 + sha256: 0facbf91492933f8398d47c970b1f85da216a4b4e3993a413139d4f55542e7ae + md5: 213ca4e733b24bdcb068dd91dc61ac01 depends: - - max-core ==25.2.0.dev2025022405 release + - max-core ==25.2.0.dev2025022505 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1482,12 +1482,12 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 110137192 - timestamp: 1740375201832 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022405-release.conda + size: 109495643 + timestamp: 1740461647314 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022505-release.conda noarch: python - sha256: e435c909399e7413f6941e960143858acee4cf0d05dd6c02bf159e08cbde38a4 - md5: bc63e516c54cba1a99f76efd394e626e + sha256: 3b8aa31188a70fc4d4658c51644c5e3b2680759cfda7ebbe8c67259525e9a2a2 + md5: fc70e9e0ac92a2deaacd2c39dc6a0f46 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -1498,20 +1498,20 @@ packages: - typing_extensions >=v4.12.2 - python license: MIT - size: 130846 - timestamp: 1740374225756 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022405-release.conda + size: 130852 + timestamp: 1740460553945 +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022505-release.conda noarch: python - sha256: 5ba32fa10c188a376a3b1673d59626d357231028c2ba71a4b06688998f01a5bb - md5: 6432cbc5b412f8351358b06534a68122 + sha256: 098da4969faff354c251849fc353acfab1b535db5fb19282a0102b23964c1d15 + md5: a717b09355552fc825384d43f885d90a depends: - - max-core ==25.2.0.dev2025022405 release + - max-core ==25.2.0.dev2025022505 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22984 - timestamp: 1740374225756 + size: 22987 + timestamp: 1740460553945 - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda sha256: 1895f47b7d68581a6facde5cb13ab8c2764c2e53a76bd746f8f98910dc4e08fe md5: 29097e7ea634a45cc5386b95cac6568f @@ -1857,6 +1857,7 @@ packages: arch: x86_64 platform: linux license: GPL-3.0-only + license_family: GPL size: 282480 timestamp: 1740379431762 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8382b9d_2.conda @@ -1868,6 +1869,7 @@ packages: arch: aarch64 platform: linux license: GPL-3.0-only + license_family: GPL size: 291806 timestamp: 1740380591358 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda @@ -1878,6 +1880,7 @@ packages: arch: arm64 platform: osx license: GPL-3.0-only + license_family: GPL size: 252359 timestamp: 1740379663071 - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-0.2.0-hc8f76dd_10.conda From 236661b3b6414c07cc23972f74561f2449869372 Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Mon, 24 Feb 2025 22:10:24 -0800 Subject: [PATCH 458/509] [mojo-stdlib] Revert: Rewrite IntLiteral and FloatLiteral to use dependent types. This reverts modularml/modular#56515. The patch needs a broader design doc to explore the topic, which I'll put together and discuss before discussing landing it. MODULAR_ORIG_COMMIT_REV_ID: 721594c6408fbc2ee9feb38f8b1ed96a44c04c23 --- docs/changelog.md | 6 - stdlib/src/builtin/float_literal.mojo | 237 ++++--------- stdlib/src/builtin/int_literal.mojo | 335 +++++++----------- stdlib/src/collections/string/string.mojo | 4 +- stdlib/src/math/math.mojo | 8 +- stdlib/src/prelude/__init__.mojo | 8 +- stdlib/test/builtin/test_float_literal.mojo | 8 +- stdlib/test/builtin/test_math.mojo | 2 +- stdlib/test/builtin/test_simd.mojo | 8 +- .../test/collections/string/test_string.mojo | 8 +- 10 files changed, 208 insertions(+), 416 deletions(-) diff --git a/docs/changelog.md b/docs/changelog.md index 3d93f43861..a055d0c791 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -26,12 +26,6 @@ what we publish. ### Standard library changes -- The design of the `IntLiteral` and `FloatLiteral` types has been changed to - maintain their compile-time-only value as a parameter instead of a stored - field. This correctly models that infinite precision literals are not - representable at runtime, and eliminates a number of bugs hit in corner cases. - This is made possible by enhanced dependent type support in the compiler. - - The `Buffer` struct has been removed in favor of `Span` and `NDBuffer`. - A new `IntervalTree` data structure has been added to the standard library. diff --git a/stdlib/src/builtin/float_literal.mojo b/stdlib/src/builtin/float_literal.mojo index c70380d145..569e204cb6 100644 --- a/stdlib/src/builtin/float_literal.mojo +++ b/stdlib/src/builtin/float_literal.mojo @@ -19,61 +19,51 @@ These are Mojo built-ins, so you don't need to import them. # FloatLiteral # ===-----------------------------------------------------------------------===# -# FIXME: These really should get a better name. -alias FloatLiteral_nan = FloatLiteral[__mlir_attr.`#kgen.float_literal`]() -alias FloatLiteral_infinity = FloatLiteral[ - __mlir_attr.`#kgen.float_literal` -]() -alias FloatLiteral_negative_infinity = FloatLiteral[ - __mlir_attr.`#kgen.float_literal` -]() -alias FloatLiteral_negative_zero = FloatLiteral[ - __mlir_attr.`#kgen.float_literal` -]() - @value @nonmaterializable(Float64) @register_passable("trivial") -struct FloatLiteral[value: __mlir_type.`!kgen.float_literal`]( +struct FloatLiteral( + Comparable, ImplicitlyBoolable, Intable, Stringable, Floatable, ): - """Mojo floating point literal type. + """Mojo floating point literal type.""" - Parameters: - value: The underlying infinite precision floating point value. - """ + alias fp_type = __mlir_type.`!kgen.float_literal` + var value: Self.fp_type + """The underlying storage for the floating point value.""" # ===------------------------------------------------------------------===# # Constructors # ===------------------------------------------------------------------===# @always_inline("builtin") - fn __init__(out self): - """Create a FloatLiteral for any parameter value.""" - pass + @implicit + fn __init__(out self, value: Self.fp_type): + """Create a FloatLiteral value from a kgen.float_literal value. + + Args: + value: The float value. + """ + self.value = value @always_inline("builtin") @implicit - fn __init__( - value: IntLiteral[_], - out result: FloatLiteral[ - __mlir_attr[ - `#kgen> : !kgen.float_literal`, - ] - ], - ): + fn __init__(out self, value: IntLiteral): """Convert an IntLiteral to a FloatLiteral value. Args: value: The IntLiteral value. """ - out = __type_of(result)() + self.value = __mlir_op.`kgen.int_to_float_literal`(value.value) + + alias nan = Self(__mlir_attr.`#kgen.float_literal`) + alias infinity = Self(__mlir_attr.`#kgen.float_literal`) + alias negative_infinity = Self(__mlir_attr.`#kgen.float_literal`) + alias negative_zero = Self(__mlir_attr.`#kgen.float_literal`) @always_inline("builtin") fn is_nan(self) -> Bool: @@ -92,7 +82,7 @@ struct FloatLiteral[value: __mlir_type.`!kgen.float_literal`]( fn is_neg_zero(self) -> Bool: """Return whether the FloatLiteral is negative zero. - Since `FloatLiteral_negative_zero == 0.0` is True, this provides a way + Since `FloatLiteral.negative_zero == 0.0` is True, this provides a way to check if the FloatLiteral is negative zero. Returns: @@ -127,16 +117,7 @@ struct FloatLiteral[value: __mlir_type.`!kgen.float_literal`]( return String(Float64(self)) @always_inline("builtin") - fn __int_literal__( - self, - out result: IntLiteral[ - __mlir_attr[ - `#kgen> : !kgen.int_literal`, - ] - ], - ): + fn __int_literal__(self) -> IntLiteral: """Casts the floating point value to an IntLiteral. If there is a fractional component, then the value is truncated towards zero. @@ -146,7 +127,7 @@ struct FloatLiteral[value: __mlir_type.`!kgen.float_literal`]( Returns: The value as an integer. """ - return __type_of(result)() + return IntLiteral(__mlir_op.`kgen.float_to_int_literal`(self.value)) @always_inline("builtin") fn __int__(self) -> Int: @@ -192,32 +173,20 @@ struct FloatLiteral[value: __mlir_type.`!kgen.float_literal`]( return self.__bool__() @always_inline("builtin") - fn __neg__(self, out result: __type_of(self * -1)): + fn __neg__(self) -> FloatLiteral: """Return the negation of the FloatLiteral value. Returns: The negated FloatLiteral value. """ - result = __type_of(result)() + return self * Self(-1) # ===------------------------------------------------------------------===# # Arithmetic Operators # ===------------------------------------------------------------------===# @always_inline("builtin") - fn __add__( - self, - rhs: FloatLiteral, - out result: FloatLiteral[ - __mlir_attr[ - `#kgen> : !kgen.float_literal`, - ] - ], - ): + fn __add__(self, rhs: FloatLiteral) -> FloatLiteral: """Add two FloatLiterals. Args: @@ -226,22 +195,12 @@ struct FloatLiteral[value: __mlir_type.`!kgen.float_literal`]( Returns: The sum of the two values. """ - result = __type_of(result)() + return __mlir_op.`kgen.float_literal.binop`[ + oper = __mlir_attr.`#kgen` + ](self.value, rhs.value) @always_inline("builtin") - fn __sub__( - self, - rhs: FloatLiteral, - out result: FloatLiteral[ - __mlir_attr[ - `#kgen> : !kgen.float_literal`, - ] - ], - ): + fn __sub__(self, rhs: FloatLiteral) -> FloatLiteral: """Subtract two FloatLiterals. Args: @@ -250,22 +209,12 @@ struct FloatLiteral[value: __mlir_type.`!kgen.float_literal`]( Returns: The difference of the two values. """ - result = __type_of(result)() + return __mlir_op.`kgen.float_literal.binop`[ + oper = __mlir_attr.`#kgen` + ](self.value, rhs.value) @always_inline("builtin") - fn __mul__( - self, - rhs: FloatLiteral, - out result: FloatLiteral[ - __mlir_attr[ - `#kgen> : !kgen.float_literal`, - ] - ], - ): + fn __mul__(self, rhs: FloatLiteral) -> FloatLiteral: """Multiply two FloatLiterals. Args: @@ -274,22 +223,12 @@ struct FloatLiteral[value: __mlir_type.`!kgen.float_literal`]( Returns: The product of the two values. """ - result = __type_of(result)() + return __mlir_op.`kgen.float_literal.binop`[ + oper = __mlir_attr.`#kgen` + ](self.value, rhs.value) @always_inline("builtin") - fn __truediv__( - self, - rhs: FloatLiteral, - out result: FloatLiteral[ - __mlir_attr[ - `#kgen> : !kgen.float_literal`, - ] - ], - ): + fn __truediv__(self, rhs: FloatLiteral) -> FloatLiteral: """Divide two FloatLiterals. Args: @@ -299,22 +238,12 @@ struct FloatLiteral[value: __mlir_type.`!kgen.float_literal`]( The quotient of the two values. """ # TODO - Python raises an error on divide by 0.0 or -0.0 - result = __type_of(result)() + return __mlir_op.`kgen.float_literal.binop`[ + oper = __mlir_attr.`#kgen` + ](self.value, rhs.value) @always_inline("builtin") - fn __floordiv__( - self, - rhs: FloatLiteral, - out result: FloatLiteral[ - __mlir_attr[ - `#kgen> : !kgen.float_literal`, - ] - ], - ): + fn __floordiv__(self, rhs: Self) -> Self: """Returns self divided by rhs, rounded down to the nearest integer. Args: @@ -324,14 +253,12 @@ struct FloatLiteral[value: __mlir_type.`!kgen.float_literal`]( `floor(self / rhs)` value. """ # TODO - Python raises an error on divide by 0.0 or -0.0 - result = __type_of(result)() + return __mlir_op.`kgen.float_literal.binop`[ + oper = __mlir_attr.`#kgen` + ](self.value, rhs.value) @always_inline("builtin") - fn __mod__( - self, - rhs: FloatLiteral, - out result: __type_of(self - (self.__floordiv__(rhs) * rhs)), - ): + fn __mod__(self, rhs: Self) -> Self: """Return the remainder of self divided by rhs. Args: @@ -340,14 +267,22 @@ struct FloatLiteral[value: __mlir_type.`!kgen.float_literal`]( Returns: The remainder of dividing self by rhs. """ - result = __type_of(result)() + return self - (self.__floordiv__(rhs) * rhs) @always_inline("builtin") - fn __ceildiv__( - self, - denominator: FloatLiteral, - out result: __type_of(-(self // -denominator)), - ): + fn __rfloordiv__(self, rhs: Self) -> Self: + """Returns rhs divided by self, rounded down to the nearest integer. + + Args: + rhs: The value to be divided by self. + + Returns: + `floor(rhs / self)` value. + """ + return rhs // self + + @always_inline("builtin") + fn __ceildiv__(self, denominator: Self) -> Self: """Return the rounded-up result of dividing self by denominator. Args: @@ -356,7 +291,7 @@ struct FloatLiteral[value: __mlir_type.`!kgen.float_literal`]( Returns: The ceiling of dividing numerator by denominator. """ - result = __type_of(result)() + return -(self // -denominator) # TODO - maybe __pow__? @@ -365,7 +300,7 @@ struct FloatLiteral[value: __mlir_type.`!kgen.float_literal`]( # ===------------------------------------------------------------------===# @always_inline("builtin") - fn __radd__(self, rhs: FloatLiteral, out result: __type_of(rhs + self)): + fn __radd__(self, rhs: FloatLiteral) -> FloatLiteral: """Reversed addition operator. Args: @@ -374,10 +309,10 @@ struct FloatLiteral[value: __mlir_type.`!kgen.float_literal`]( Returns: The sum of this and the given value. """ - result = __type_of(result)() + return rhs + self @always_inline("builtin") - fn __rsub__(self, rhs: FloatLiteral, out result: __type_of(rhs - self)): + fn __rsub__(self, rhs: FloatLiteral) -> FloatLiteral: """Reversed subtraction operator. Args: @@ -386,10 +321,10 @@ struct FloatLiteral[value: __mlir_type.`!kgen.float_literal`]( Returns: The result of subtracting this from the given value. """ - result = __type_of(result)() + return rhs - self @always_inline("builtin") - fn __rmul__(self, rhs: FloatLiteral, out result: __type_of(rhs * self)): + fn __rmul__(self, rhs: FloatLiteral) -> FloatLiteral: """Reversed multiplication operator. Args: @@ -398,42 +333,10 @@ struct FloatLiteral[value: __mlir_type.`!kgen.float_literal`]( Returns: The product of the given number and this. """ - result = __type_of(result)() - - @always_inline("builtin") - fn __rmod__( - self, - rhs: FloatLiteral, - out result: __type_of(rhs.__mod__(self)), - ): - """Return the remainder of rhs divided by self. - - Args: - rhs: The value to divide on. - - Returns: - The remainder of dividing rhs by self. - """ - result = __type_of(result)() - - @always_inline("builtin") - fn __rfloordiv__( - self, - rhs: FloatLiteral, - out result: __type_of(rhs // self), - ): - """Returns rhs divided by self, rounded down to the nearest integer. - - Args: - rhs: The value to be divided by self. - - Returns: - `floor(rhs / self)` value. - """ - result = __type_of(result)() + return rhs * self @always_inline("builtin") - fn __rtruediv__(self, rhs: FloatLiteral, out result: __type_of(rhs / self)): + fn __rtruediv__(self, rhs: FloatLiteral) -> FloatLiteral: """Reversed division. Args: @@ -442,7 +345,7 @@ struct FloatLiteral[value: __mlir_type.`!kgen.float_literal`]( Returns: The result of dividing the given value by this. """ - result = __type_of(result)() + return rhs / self # ===------------------------------------------------------------------===# # Comparison Operators diff --git a/stdlib/src/builtin/int_literal.mojo b/stdlib/src/builtin/int_literal.mojo index be65cb1099..c5084fcf39 100644 --- a/stdlib/src/builtin/int_literal.mojo +++ b/stdlib/src/builtin/int_literal.mojo @@ -12,14 +12,16 @@ # ===----------------------------------------------------------------------=== # """Implements the IntLiteral class.""" -from math import Ceilable, Floorable, Truncable +from math import Ceilable, CeilDivable, Floorable, Truncable @value @nonmaterializable(Int) @register_passable("trivial") -struct IntLiteral[value: __mlir_type.`!kgen.int_literal`]( +struct IntLiteral( Ceilable, + CeilDivable, + Comparable, Floorable, ImplicitlyBoolable, ImplicitlyIntable, @@ -28,25 +30,21 @@ struct IntLiteral[value: __mlir_type.`!kgen.int_literal`]( Truncable, ): """This type represents a static integer literal value with - infinite precision. This type is a compile-time construct which stores its - value as a parameter. It is typically materialized into other types (like - `Int`) for use at runtime. This compile-time representation allows for - arbitrary precision constants that would overflow on Int and other fixed + infinite precision. They can't be materialized at runtime and + must be lowered to other integer types (like Int), but allow for + compile-time operations that would overflow on Int and other fixed precision integer types. - - Parameters: - value: The underlying integer value. """ # Fields alias _mlir_type = __mlir_type.`!kgen.int_literal` - alias _zero = IntLiteral[ - __mlir_attr.`#kgen.int_literal<0> : !kgen.int_literal` - ]() - alias _one = IntLiteral[ + var value: Self._mlir_type + """The underlying storage for the integer value.""" + + alias _one = IntLiteral( __mlir_attr.`#kgen.int_literal<1> : !kgen.int_literal` - ]() + ) # ===-------------------------------------------------------------------===# # Life cycle methods @@ -54,15 +52,26 @@ struct IntLiteral[value: __mlir_type.`!kgen.int_literal`]( @always_inline("builtin") fn __init__(out self): - """Constructor for any value.""" - pass + """Default constructor.""" + self.value = __mlir_attr.`#kgen.int_literal<0> : !kgen.int_literal` + + @doc_private + @always_inline("builtin") + @implicit + fn __init__(out self, value: __mlir_type.`!kgen.int_literal`): + """Construct IntLiteral from the given mlir !kgen.int_literal value. + + Args: + value: The init value. + """ + self.value = value # ===-------------------------------------------------------------------===# # Operator dunders # ===-------------------------------------------------------------------===# @always_inline("builtin") - fn __lt__(self, rhs: IntLiteral[_]) -> Bool: + fn __lt__(self, rhs: Self) -> Bool: """Compare this IntLiteral to the RHS using LT comparison. Args: @@ -71,16 +80,12 @@ struct IntLiteral[value: __mlir_type.`!kgen.int_literal`]( Returns: True if this IntLiteral is less-than the RHS IntLiteral and False otherwise. """ - return __mlir_attr[ - `#kgen> : !kgen.int_literal`, - ] + return __mlir_op.`kgen.int_literal.cmp`[ + pred = __mlir_attr.`#kgen` + ](self.value, rhs.value) @always_inline("builtin") - fn __le__(self, rhs: IntLiteral[_]) -> Bool: + fn __le__(self, rhs: Self) -> Bool: """Compare this IntLiteral to the RHS using LE comparison. Args: @@ -90,16 +95,12 @@ struct IntLiteral[value: __mlir_type.`!kgen.int_literal`]( True if this IntLiteral is less-or-equal than the RHS IntLiteral and False otherwise. """ - return __mlir_attr[ - `#kgen> : !kgen.int_literal`, - ] + return __mlir_op.`kgen.int_literal.cmp`[ + pred = __mlir_attr.`#kgen` + ](self.value, rhs.value) @always_inline("builtin") - fn __eq__(self, rhs: IntLiteral[_]) -> Bool: + fn __eq__(self, rhs: Self) -> Bool: """Compare this IntLiteral to the RHS using EQ comparison. Args: @@ -108,16 +109,12 @@ struct IntLiteral[value: __mlir_type.`!kgen.int_literal`]( Returns: True if this IntLiteral is equal to the RHS IntLiteral and False otherwise. """ - return __mlir_attr[ - `#kgen> : !kgen.int_literal`, - ] + return __mlir_op.`kgen.int_literal.cmp`[ + pred = __mlir_attr.`#kgen` + ](self.value, rhs.value) @always_inline("builtin") - fn __ne__(self, rhs: IntLiteral[_]) -> Bool: + fn __ne__(self, rhs: Self) -> Bool: """Compare this IntLiteral to the RHS using NE comparison. Args: @@ -126,16 +123,12 @@ struct IntLiteral[value: __mlir_type.`!kgen.int_literal`]( Returns: True if this IntLiteral is non-equal to the RHS IntLiteral and False otherwise. """ - return __mlir_attr[ - `#kgen> : !kgen.int_literal`, - ] + return __mlir_op.`kgen.int_literal.cmp`[ + pred = __mlir_attr.`#kgen` + ](self.value, rhs.value) @always_inline("builtin") - fn __gt__(self, rhs: IntLiteral[_]) -> Bool: + fn __gt__(self, rhs: Self) -> Bool: """Compare this IntLiteral to the RHS using GT comparison. Args: @@ -144,16 +137,12 @@ struct IntLiteral[value: __mlir_type.`!kgen.int_literal`]( Returns: True if this IntLiteral is greater-than the RHS IntLiteral and False otherwise. """ - return __mlir_attr[ - `#kgen> : !kgen.int_literal`, - ] + return __mlir_op.`kgen.int_literal.cmp`[ + pred = __mlir_attr.`#kgen` + ](self.value, rhs.value) @always_inline("builtin") - fn __ge__(self, rhs: IntLiteral[_]) -> Bool: + fn __ge__(self, rhs: Self) -> Bool: """Compare this IntLiteral to the RHS using GE comparison. Args: @@ -163,13 +152,9 @@ struct IntLiteral[value: __mlir_type.`!kgen.int_literal`]( True if this IntLiteral is greater-or-equal than the RHS IntLiteral and False otherwise. """ - return __mlir_attr[ - `#kgen> : !kgen.int_literal`, - ] + return __mlir_op.`kgen.int_literal.cmp`[ + pred = __mlir_attr.`#kgen` + ](self.value, rhs.value) @always_inline("builtin") fn __pos__(self) -> Self: @@ -181,37 +166,25 @@ struct IntLiteral[value: __mlir_type.`!kgen.int_literal`]( return self @always_inline("builtin") - fn __neg__(self) -> __type_of(Self._zero - self): + fn __neg__(self) -> Self: """Return -self. Returns: The -self value. """ - return Self._zero - self + return Self() - self @always_inline("builtin") - fn __invert__(self, out result: __type_of(self ^ (Self._zero - Self._one))): + fn __invert__(self) -> Self: """Return ~self. Returns: The ~self value. """ - result = __type_of(result)() + return self ^ (Self() - Self._one) @always_inline("builtin") - fn __add__( - self, - rhs: IntLiteral[_], - out result: IntLiteral[ - __mlir_attr[ - `#kgen> : !kgen.int_literal`, - ] - ], - ): + fn __add__(self, rhs: Self) -> Self: """Return `self + rhs`. Args: @@ -220,22 +193,14 @@ struct IntLiteral[value: __mlir_type.`!kgen.int_literal`]( Returns: `self + rhs` value. """ - result = __type_of(result)() + return Self( + __mlir_op.`kgen.int_literal.binop`[ + oper = __mlir_attr.`#kgen` + ](self.value, rhs.value) + ) @always_inline("builtin") - fn __sub__( - self, - rhs: IntLiteral[_], - out result: IntLiteral[ - __mlir_attr[ - `#kgen> : !kgen.int_literal`, - ] - ], - ): + fn __sub__(self, rhs: Self) -> Self: """Return `self - rhs`. Args: @@ -244,22 +209,14 @@ struct IntLiteral[value: __mlir_type.`!kgen.int_literal`]( Returns: `self - rhs` value. """ - result = __type_of(result)() + return Self( + __mlir_op.`kgen.int_literal.binop`[ + oper = __mlir_attr.`#kgen` + ](self.value, rhs.value) + ) @always_inline("builtin") - fn __mul__( - self, - rhs: IntLiteral[_], - out result: IntLiteral[ - __mlir_attr[ - `#kgen> : !kgen.int_literal`, - ] - ], - ): + fn __mul__(self, rhs: Self) -> Self: """Return `self * rhs`. Args: @@ -268,24 +225,16 @@ struct IntLiteral[value: __mlir_type.`!kgen.int_literal`]( Returns: `self * rhs` value. """ - result = __type_of(result)() + return Self( + __mlir_op.`kgen.int_literal.binop`[ + oper = __mlir_attr.`#kgen` + ](self.value, rhs.value) + ) # TODO: implement __pow__ @always_inline("builtin") - fn __floordiv__( - self, - rhs: IntLiteral[_], - out result: IntLiteral[ - __mlir_attr[ - `#kgen> : !kgen.int_literal`, - ] - ], - ): + fn __floordiv__(self, rhs: Self) -> Self: """Return `self // rhs`. Args: @@ -294,22 +243,15 @@ struct IntLiteral[value: __mlir_type.`!kgen.int_literal`]( Returns: `self // rhs` value. """ - result = __type_of(result)() + # This handles the case where rhs is 0. + return Self( + __mlir_op.`kgen.int_literal.binop`[ + oper = __mlir_attr.`#kgen` + ](self.value, rhs.value) + ) @always_inline("builtin") - fn __mod__( - self, - rhs: IntLiteral[_], - out result: IntLiteral[ - __mlir_attr[ - `#kgen> : !kgen.int_literal`, - ] - ], - ): + fn __mod__(self, rhs: Self) -> Self: """Return the remainder of self divided by rhs. Args: @@ -318,22 +260,15 @@ struct IntLiteral[value: __mlir_type.`!kgen.int_literal`]( Returns: The remainder of dividing self by rhs. """ - result = __type_of(result)() + # This handles the case where rhs is 0. + return Self( + __mlir_op.`kgen.int_literal.binop`[ + oper = __mlir_attr.`#kgen` + ](self.value, rhs.value) + ) @always_inline("builtin") - fn __lshift__( - self, - rhs: IntLiteral[_], - out result: IntLiteral[ - __mlir_attr[ - `#kgen> : !kgen.int_literal`, - ] - ], - ): + fn __lshift__(self, rhs: Self) -> Self: """Return `self << rhs`. Args: @@ -342,22 +277,15 @@ struct IntLiteral[value: __mlir_type.`!kgen.int_literal`]( Returns: `self << rhs`. """ - result = __type_of(result)() + # This handles the case where rhs is 0. + return Self( + __mlir_op.`kgen.int_literal.binop`[ + oper = __mlir_attr.`#kgen` + ](self.value, rhs.value) + ) @always_inline("builtin") - fn __rshift__( - self, - rhs: IntLiteral[_], - out result: IntLiteral[ - __mlir_attr[ - `#kgen> : !kgen.int_literal`, - ] - ], - ): + fn __rshift__(self, rhs: Self) -> Self: """Return `self >> rhs`. Args: @@ -366,22 +294,15 @@ struct IntLiteral[value: __mlir_type.`!kgen.int_literal`]( Returns: `self >> rhs`. """ - result = __type_of(result)() + # This handles the case where rhs is 0. + return Self( + __mlir_op.`kgen.int_literal.binop`[ + oper = __mlir_attr.`#kgen` + ](self.value, rhs.value) + ) @always_inline("builtin") - fn __and__( - self, - rhs: IntLiteral[_], - out result: IntLiteral[ - __mlir_attr[ - `#kgen> : !kgen.int_literal`, - ] - ], - ): + fn __and__(self, rhs: Self) -> Self: """Return `self & rhs`. Args: @@ -390,22 +311,14 @@ struct IntLiteral[value: __mlir_type.`!kgen.int_literal`]( Returns: `self & rhs`. """ - result = __type_of(result)() + return Self( + __mlir_op.`kgen.int_literal.binop`[ + oper = __mlir_attr.`#kgen` + ](self.value, rhs.value) + ) @always_inline("builtin") - fn __xor__( - self, - rhs: IntLiteral[_], - out result: IntLiteral[ - __mlir_attr[ - `#kgen> : !kgen.int_literal`, - ] - ], - ): + fn __xor__(self, rhs: Self) -> Self: """Return `self ^ rhs`. Args: @@ -414,22 +327,14 @@ struct IntLiteral[value: __mlir_type.`!kgen.int_literal`]( Returns: `self ^ rhs`. """ - result = __type_of(result)() + return Self( + __mlir_op.`kgen.int_literal.binop`[ + oper = __mlir_attr.`#kgen` + ](self.value, rhs.value) + ) @always_inline("builtin") - fn __or__( - self, - rhs: IntLiteral[_], - out result: IntLiteral[ - __mlir_attr[ - `#kgen> : !kgen.int_literal`, - ] - ], - ): + fn __or__(self, rhs: Self) -> Self: """Return `self | rhs`. Args: @@ -438,7 +343,11 @@ struct IntLiteral[value: __mlir_type.`!kgen.int_literal`]( Returns: `self | rhs`. """ - result = __type_of(result)() + return Self( + __mlir_op.`kgen.int_literal.binop`[ + oper = __mlir_attr.`#kgen` + ](self.value, rhs.value) + ) # ===-------------------------------------------------------------------===# # Trait implementations @@ -451,7 +360,7 @@ struct IntLiteral[value: __mlir_type.`!kgen.int_literal`]( Returns: False Bool value if the value is equal to 0 and True otherwise. """ - return self != Self._zero + return self != Self() @always_inline("builtin") fn __as_bool__(self) -> Bool: @@ -528,11 +437,7 @@ struct IntLiteral[value: __mlir_type.`!kgen.int_literal`]( return String(Int(self)) @always_inline("builtin") - fn __ceildiv__( - self, - denominator: IntLiteral, - out result: __type_of(-(self // -denominator)), - ): + fn __ceildiv__(self, denominator: Self) -> Self: """Return the rounded-up result of dividing self by denominator. @@ -542,7 +447,7 @@ struct IntLiteral[value: __mlir_type.`!kgen.int_literal`]( Returns: The ceiling of dividing numerator by denominator. """ - result = __type_of(result)() + return -(self // -denominator) # ===-------------------------------------------------------------------===# # Methods diff --git a/stdlib/src/collections/string/string.mojo b/stdlib/src/collections/string/string.mojo index 8cde264ed5..395dcdce10 100644 --- a/stdlib/src/collections/string/string.mojo +++ b/stdlib/src/collections/string/string.mojo @@ -461,9 +461,9 @@ fn atof(str_slice: StringSlice) raises -> Float64: sign = -1 if (str_len - start) >= 3: if StringSlice[buff.origin](ptr=buff + start, length=3) == "nan": - return FloatLiteral_nan + return FloatLiteral.nan if StringSlice[buff.origin](ptr=buff + start, length=3) == "inf": - return FloatLiteral_infinity * sign + return FloatLiteral.infinity * sign # read before dot for pos in range(start, str_len): if ord_0 <= buff[pos] <= ord_9: diff --git a/stdlib/src/math/math.mojo b/stdlib/src/math/math.mojo index 331b4f6397..14d3f91e25 100644 --- a/stdlib/src/math/math.mojo +++ b/stdlib/src/math/math.mojo @@ -130,11 +130,7 @@ fn ceildiv[T: CeilDivableRaising, //](numerator: T, denominator: T) raises -> T: # NOTE: this overload is needed because IntLiteral promotes to a runtime type # before overload resolution. @always_inline("builtin") -fn ceildiv( - numerator: IntLiteral, - denominator: IntLiteral, - out result: __type_of(numerator.__ceildiv__(denominator)), -): +fn ceildiv(numerator: IntLiteral, denominator: IntLiteral) -> IntLiteral: """Return the rounded-up result of dividing numerator by denominator. Args: @@ -144,7 +140,7 @@ fn ceildiv( Returns: The ceiling of dividing numerator by denominator. """ - result = __type_of(result)() + return numerator.__ceildiv__(denominator) # ===----------------------------------------------------------------------=== # diff --git a/stdlib/src/prelude/__init__.mojo b/stdlib/src/prelude/__init__.mojo index c0e1d65148..c6c3da74d2 100644 --- a/stdlib/src/prelude/__init__.mojo +++ b/stdlib/src/prelude/__init__.mojo @@ -43,13 +43,7 @@ from builtin.equality_comparable import EqualityComparable from builtin.error import Error from builtin.file import FileHandle, open from builtin.file_descriptor import FileDescriptor -from builtin.float_literal import ( - FloatLiteral, - FloatLiteral_nan, - FloatLiteral_infinity, - FloatLiteral_negative_infinity, - FloatLiteral_negative_zero, -) +from builtin.float_literal import FloatLiteral from builtin.floatable import Floatable, FloatableRaising, float from builtin.format_int import bin, hex, oct from builtin.identifiable import Identifiable, StringableIdentifiable diff --git a/stdlib/test/builtin/test_float_literal.mojo b/stdlib/test/builtin/test_float_literal.mojo index 8bc54a61a4..915c1f850e 100644 --- a/stdlib/test/builtin/test_float_literal.mojo +++ b/stdlib/test/builtin/test_float_literal.mojo @@ -20,10 +20,10 @@ from testing import ( assert_true, ) -alias nan = FloatLiteral_nan -alias neg_zero = FloatLiteral_negative_zero -alias inf = FloatLiteral_infinity -alias neg_inf = FloatLiteral_negative_infinity +alias nan = FloatLiteral.nan +alias neg_zero = FloatLiteral.negative_zero +alias inf = FloatLiteral.infinity +alias neg_inf = FloatLiteral.negative_infinity def test_division(): diff --git a/stdlib/test/builtin/test_math.mojo b/stdlib/test/builtin/test_math.mojo index 1a3a497fea..28e29f2ddf 100644 --- a/stdlib/test/builtin/test_math.mojo +++ b/stdlib/test/builtin/test_math.mojo @@ -128,7 +128,7 @@ def test_isnan(): alias x1 = isnan(SIMD[DType.float32, 4](SIMD[DType.float64, 4](1.0))) assert_equal(x1, False) - alias x2 = isnan(SIMD[DType.float32, 4](FloatLiteral_nan)) + alias x2 = isnan(SIMD[DType.float32, 4](FloatLiteral.nan)) assert_equal(x2, True) diff --git a/stdlib/test/builtin/test_simd.mojo b/stdlib/test/builtin/test_simd.mojo index b4f5d45eda..184627c5b7 100644 --- a/stdlib/test/builtin/test_simd.mojo +++ b/stdlib/test/builtin/test_simd.mojo @@ -1414,10 +1414,10 @@ def test_reduce_bit_count(): def test_pow(): - alias nan = FloatLiteral_nan - alias neg_zero = FloatLiteral_negative_zero - alias inf = FloatLiteral_infinity - alias neg_inf = FloatLiteral_negative_infinity + alias nan = FloatLiteral.nan + alias neg_zero = FloatLiteral.negative_zero + alias inf = FloatLiteral.infinity + alias neg_inf = FloatLiteral.negative_infinity # Float32 tests alias F32x4 = SIMD[DType.float32, 4] diff --git a/stdlib/test/collections/string/test_string.mojo b/stdlib/test/collections/string/test_string.mojo index 84efce56cf..26d14bdeab 100644 --- a/stdlib/test/collections/string/test_string.mojo +++ b/stdlib/test/collections/string/test_string.mojo @@ -472,10 +472,10 @@ def test_atof(): assert_equal(0.78, atof(" .78 ")) assert_equal(121234.0, atof(" 121234. ")) assert_equal(985031234.0, atof(" 985031234.F ")) - assert_equal(FloatLiteral_negative_zero, atof("-0")) - assert_equal(FloatLiteral_nan, atof(" nan")) - assert_equal(FloatLiteral_infinity, atof(" inf ")) - assert_equal(FloatLiteral_negative_infinity, atof("-inf ")) + assert_equal(FloatLiteral.negative_zero, atof("-0")) + assert_equal(FloatLiteral.nan, atof(" nan")) + assert_equal(FloatLiteral.infinity, atof(" inf ")) + assert_equal(FloatLiteral.negative_infinity, atof("-inf ")) # Negative cases with assert_raises(contains="String is not convertible to float: ''"): From 3af56e08fb28722dbb40a5ec9ae7431e6c7c74dd Mon Sep 17 00:00:00 2001 From: Jiexiang Liu <80805665+jiex-liu@users.noreply.github.com> Date: Tue, 25 Feb 2025 00:08:35 -0800 Subject: [PATCH 459/509] [stdlib] Add cluster cta id This PR adds cluster cta id to our gpu modules. MODULAR_ORIG_COMMIT_REV_ID: 2cbcc65b57e5328d95be749bfe1ec77d9c4c628c --- stdlib/src/sys/intrinsics.mojo | 42 ++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/stdlib/src/sys/intrinsics.mojo b/stdlib/src/sys/intrinsics.mojo index 3aa5fabfef..25df3bc3e8 100644 --- a/stdlib/src/sys/intrinsics.mojo +++ b/stdlib/src/sys/intrinsics.mojo @@ -1307,3 +1307,45 @@ struct _ClusterIdx: alias cluster_idx = _ClusterIdx() + + +# ===-----------------------------------------------------------------------===# +# block_id_in_cluster +# ===-----------------------------------------------------------------------===# + + +@register_passable("trivial") +struct _Cluster_BlockIdx: + """_Cluster_BlockIdx provides static methods for getting the x/y/z coordinates of + a threadblock within a cluster.""" + + @always_inline("nodebug") + fn __init__(out self): + return + + @always_inline("nodebug") + @staticmethod + fn _get_intrinsic_name[dim: StringLiteral]() -> StringLiteral: + return "llvm.nvvm.read.ptx.sreg.cluster.ctaid." + dim + + @always_inline("nodebug") + fn __getattr__[dim: StringLiteral](self) -> UInt: + """Gets the `x`, `y`, or `z` coordinates of a threadblock within a cluster. + + Returns: + The `x`, `y`, or `z` coordinates of a threadblock within a cluster. + """ + constrained[ + is_nvidia_gpu() and _is_sm_9x(), + "cluster_id is only supported on NVIDIA SM90+ GPUs", + ]() + constrained[ + dim in ("x", "y", "z"), "the accessor must be either x, y, or z" + ]() + alias intrinsic_name = Self._get_intrinsic_name[dim]() + return UInt( + Int(llvm_intrinsic[intrinsic_name, UInt32, has_side_effect=False]()) + ) + + +alias block_id_in_cluster = _Cluster_BlockIdx() From ca954f6ee48bfd1b9f24209eba0c2ff74cf2b2e8 Mon Sep 17 00:00:00 2001 From: Jack Clayton Date: Tue, 25 Feb 2025 12:41:21 -0500 Subject: [PATCH 460/509] [Kernels] Combine `DeviceContext` copy methods to a single overload This improves GPU dev ergonomics by combining: - enqueue_copy_to_device - enqueue_copy_from_device - enqueue_copy_device_to_device Into an overloaded `enqueue_copy` method and: - copy_to_device_sync - copy_from_device_sync - copy_device_to_device_sync Into an an overloaded `copy` method. This makes it so users don't have to figure out which method to call based on if they're passing a pointer or `DeviceContext` in different argument positions. MODULAR_ORIG_COMMIT_REV_ID: 05083f50577b1b67b8ad1c098176b8c37e5aefae --- docs/changelog.md | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/docs/changelog.md b/docs/changelog.md index a055d0c791..c223bb1bd0 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -166,6 +166,21 @@ ctx.enqueue_function(compiled_func, grid_dim=1, block_dim=1) ctx.enqueue_function(compiled_func, grid_dim=1, block_dim=1) ``` +- The methods on `DeviceContext`: + + - enqueue_copy_to_device + - enqueue_copy_from_device + - enqueue_copy_device_to_device + + Have been combined to single overloaded `enqueue_copy` method, and: + + - copy_to_device_sync + - copy_from_device_sync + - copy_device_to_device_sync + + Have been combined into an overloaded `copy` method, so you don't have + to figure out which method to call based on the arguments you're passing. + - The `shuffle` module has been rename to `warp` to better reflect its purpose. To uses now you will have to do From 2d53f464f92831242acd3e54910a8aa921dd9192 Mon Sep 17 00:00:00 2001 From: modularbot Date: Tue, 25 Feb 2025 21:09:58 +0000 Subject: [PATCH 461/509] Update lockfiles to point to latest nightly version: 25.2.0.dev2025022519 --- examples/life/magic.lock | 178 +++++++++++++++++----------------- examples/magic.lock | 142 +++++++++++++-------------- examples/operators/magic.lock | 142 +++++++++++++-------------- examples/testing/magic.lock | 142 +++++++++++++-------------- magic.lock | 142 +++++++++++++-------------- 5 files changed, 373 insertions(+), 373 deletions(-) diff --git a/examples/life/magic.lock b/examples/life/magic.lock index 0aaa0e3585..e2d2049339 100644 --- a/examples/life/magic.lock +++ b/examples/life/magic.lock @@ -103,11 +103,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.6-h8d12d68_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.10.0-h5888daf_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022505-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022505-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022505-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022505-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022519-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022519-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022519-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022519-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022519-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/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda @@ -130,7 +130,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.1-py312hbf22597_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/rav1e-0.6.6-he8a937b_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/sdl2-2.32.50-h9b8e6db_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sdl2-2.32.50-h9b8e6db_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/sdl2_image-2.8.2-h06ee604_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/sdl2_mixer-2.6.3-h8830914_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/sdl2_ttf-2.24.0-h287479f_0.conda @@ -258,11 +258,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.6-h2e0c361_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.10.0-h5ad3122_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022505-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022505-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022505-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022505-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022519-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022519-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022519-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022519-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022519-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/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-ha32ae93_3.conda @@ -285,7 +285,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyzmq-26.2.1-py312h2427ae1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/rav1e-0.6.6-h1d8f897_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8382b9d_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sdl2-2.32.50-h7851d19_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sdl2-2.32.50-h7851d19_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sdl2_image-2.8.2-hd95cb85_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sdl2_mixer-2.6.3-h422cae6_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sdl2_ttf-2.24.0-hb1608df_0.conda @@ -384,11 +384,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.5.0-h2471fea_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022505-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022505-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022505-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022505-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022519-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022519-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022519-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022519-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022519-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/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda @@ -409,7 +409,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.1-py312hf4875e0_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/rav1e-0.6.6-h69fbcac_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sdl2-2.32.50-h994913f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sdl2-2.32.50-h994913f_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sdl2_image-2.8.2-h376e2e1_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sdl2_mixer-2.6.3-h4fe3bdc_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sdl2_ttf-2.24.0-h443c5de_0.conda @@ -3498,48 +3498,48 @@ packages: license_family: BSD size: 184953 timestamp: 1733740984533 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022505-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022519-release.conda noarch: python - sha256: f866fdb1ee94edcc101592da0bbf891e7e00c07e29425ae3ad3f73cfbb19f2ae - md5: d19d3ce3db04f2a2528c5452eb6f7a0e + sha256: 7d9ce0d2a37effd00030103bfa92559a16416ab18915a91f39b06c375e0bc214 + md5: f3e2750206c3dd56cad5dd7f8e35fb78 depends: - - max-core ==25.2.0.dev2025022505 release - - max-python ==25.2.0.dev2025022505 release - - mojo-jupyter ==25.2.0.dev2025022505 release - - mblack ==25.2.0.dev2025022505 release + - max-core ==25.2.0.dev2025022519 release + - max-python ==25.2.0.dev2025022519 release + - mojo-jupyter ==25.2.0.dev2025022519 release + - mblack ==25.2.0.dev2025022519 release license: LicenseRef-Modular-Proprietary - size: 9915 - timestamp: 1740460553946 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022505-release.conda - sha256: ab00fce2436f6a1c3b5e5fd3b75898c63b1912637caddff2d7fda9ee610e34bd - md5: 5975b686575ba73ae374140c6ccac077 + size: 9907 + timestamp: 1740511118927 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022519-release.conda + sha256: dad982fd77340886af9fe056597901a1bda3bb8dff52550a8062a0e00e20d290 + md5: 19a4a10120b8eff1a41c88b0db40ecbf depends: - - mblack ==25.2.0.dev2025022505 release + - mblack ==25.2.0.dev2025022519 release license: LicenseRef-Modular-Proprietary - size: 243957009 - timestamp: 1740460553945 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022505-release.conda - sha256: cbe5677a2201d37a3436b29e8491f6a59ecec475fccb401b3fa5f0ff86476092 - md5: bbcd512adee45bf05195d486cd950f01 + size: 243375986 + timestamp: 1740511118927 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022519-release.conda + sha256: 7bc2109b151a67013a42ef1147ff337a1cd16d8b437365751dc0b0042f9e2266 + md5: b861f4c8402c7ad5e540d0619725be1e depends: - - mblack ==25.2.0.dev2025022505 release + - mblack ==25.2.0.dev2025022519 release license: LicenseRef-Modular-Proprietary - size: 246552488 - timestamp: 1740460534030 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022505-release.conda - sha256: 0472c6ce14ea2cbae97d5687106b927a6861c03bc7d99464f1b05e4fed56c128 - md5: b91b88a3c529382318e43790f93b67d6 + size: 245908466 + timestamp: 1740511116226 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022519-release.conda + sha256: cde645f856d467a064c6656d0871988b0154288bc708aa52411d167dcfb87ade + md5: b8f0079777c56690823621776b602012 depends: - - mblack ==25.2.0.dev2025022505 release + - mblack ==25.2.0.dev2025022519 release license: LicenseRef-Modular-Proprietary - size: 212086616 - timestamp: 1740461647314 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022505-release.conda + size: 211532835 + timestamp: 1740512176128 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022519-release.conda noarch: python - sha256: 510cae5d966a3539c4ab959e9d6cc053fa5c9aa690a0c633abf2d611d867bb9f - md5: cfadc13c0b8012df6aedf5f0bf38e895 + sha256: 4a4224af9e49aea43c33e2e1cdc920c70d87ca7b3c3c4849894eb21fdf5906d5 + md5: 7eda673a2b7f381b8f5b85483ce9ec8b depends: - - max-core ==25.2.0.dev2025022505 release + - max-core ==25.2.0.dev2025022519 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -3577,14 +3577,14 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 120088340 - timestamp: 1740460553946 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022505-release.conda + size: 120092694 + timestamp: 1740511118927 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022519-release.conda noarch: python - sha256: c8b5da7eadac0fd07499a229ed0d61e2ad1dc0dd8223d0626096f2df3720ce30 - md5: 28fc06f7bf34d1bf018c42be174db363 + sha256: b808be6fdcd44235f3fa242d50c04fc93fa22bc411c46ccec34ecd1ca0acb286 + md5: ef2e998689015e9e6af78fa8cf06aa33 depends: - - max-core ==25.2.0.dev2025022505 release + - max-core ==25.2.0.dev2025022519 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -3622,14 +3622,14 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 122656023 - timestamp: 1740460534030 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022505-release.conda + size: 122665387 + timestamp: 1740511116226 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022519-release.conda noarch: python - sha256: 0facbf91492933f8398d47c970b1f85da216a4b4e3993a413139d4f55542e7ae - md5: 213ca4e733b24bdcb068dd91dc61ac01 + sha256: f7314e74d3afeb9d871ac97ed2f87eb6872b92153c4ecedffdef4cd9acf3e749 + md5: 48866c4ee9c834d20ce488fd16276d41 depends: - - max-core ==25.2.0.dev2025022505 release + - max-core ==25.2.0.dev2025022519 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -3667,12 +3667,12 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 109495643 - timestamp: 1740461647314 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022505-release.conda + size: 109490486 + timestamp: 1740512176129 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022519-release.conda noarch: python - sha256: 3b8aa31188a70fc4d4658c51644c5e3b2680759cfda7ebbe8c67259525e9a2a2 - md5: fc70e9e0ac92a2deaacd2c39dc6a0f46 + sha256: 0a20dced5e26aa1864ee12959235ab6bc0f9a9d23063de9e30578d29d8ec65c3 + md5: 144453ca89177b474084a3586fd9324c depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -3683,20 +3683,20 @@ packages: - typing_extensions >=v4.12.2 - python license: MIT - size: 130852 - timestamp: 1740460553945 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022505-release.conda + size: 130856 + timestamp: 1740511118927 +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022519-release.conda noarch: python - sha256: 098da4969faff354c251849fc353acfab1b535db5fb19282a0102b23964c1d15 - md5: a717b09355552fc825384d43f885d90a + sha256: 986511d2660bdea74fa8640017c36aa3c4cb567abc8d544377babe87e50f6e79 + md5: e5eff931fb439696eb4a40ba14a31192 depends: - - max-core ==25.2.0.dev2025022505 release + - max-core ==25.2.0.dev2025022519 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22987 - timestamp: 1740460553945 + size: 22992 + timestamp: 1740511118927 - conda: https://conda.anaconda.org/conda-forge/linux-64/mpg123-1.32.9-hc50e24c_0.conda sha256: 39c4700fb3fbe403a77d8cc27352fa72ba744db487559d5d44bf8411bb4ea200 md5: c7f302fd11eeb0987a6a5e1f3aed6a21 @@ -4460,9 +4460,9 @@ packages: license_family: GPL size: 252359 timestamp: 1740379663071 -- conda: https://conda.anaconda.org/conda-forge/linux-64/sdl2-2.32.50-h9b8e6db_0.conda - sha256: a8c224fcd6ae01242f93d6e42995ce8377864e659dd385993d5506a3ac175c65 - md5: 33c7b594dcdcef25a54704714dde417b +- conda: https://conda.anaconda.org/conda-forge/linux-64/sdl2-2.32.50-h9b8e6db_1.conda + sha256: c253ddeafdc46bb53cdac722d1305a94bbbd9905e6a112e295ce7bb9e7a2f7e7 + md5: 0d27110a2f613abc268e31b3c1d5fb4f depends: - __glibc >=2.17,<3.0.a0 - libegl >=1.7.0,<2.0a0 @@ -4473,11 +4473,11 @@ packages: arch: x86_64 platform: linux license: Zlib - size: 513000 - timestamp: 1739829147175 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sdl2-2.32.50-h7851d19_0.conda - sha256: 79c3a8a7fd50dd083acac15c5f2a7db9ce72701bdea8752fdb5b864fa26fcdcc - md5: 6977e2039ea2a1fb1c467e0149ebd2f8 + size: 513266 + timestamp: 1740516135153 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sdl2-2.32.50-h7851d19_1.conda + sha256: d2c1d0baf85f3484fa8630f3067f7411c8abcb8fee0ad67342d82e706c59230e + md5: 83f2b36f187b0269471774983ecfa39f depends: - libegl >=1.7.0,<2.0a0 - libgcc >=13 @@ -4487,11 +4487,11 @@ packages: arch: aarch64 platform: linux license: Zlib - size: 520749 - timestamp: 1739829170243 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sdl2-2.32.50-h994913f_0.conda - sha256: b9c23e4c06ca96fc4c7ba015bbb017ae8e876adf4fcf5dd14345315e05ba1117 - md5: 70a757d49be7d41e5aabef2857e44585 + size: 523908 + timestamp: 1740516151246 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sdl2-2.32.50-h994913f_1.conda + sha256: 0a6ad048f2f311bebc05fc7a31d26373b693949ad0887edf48909b0acb849b5e + md5: ff589d08171ffeb5867e9c6a68ec913d depends: - __osx >=11.0 - libcxx >=18 @@ -4499,8 +4499,8 @@ packages: arch: arm64 platform: osx license: Zlib - size: 490725 - timestamp: 1739829495058 + size: 493998 + timestamp: 1740516182244 - conda: https://conda.anaconda.org/conda-forge/linux-64/sdl2_image-2.8.2-h06ee604_1.conda sha256: f18184e016e2e57306d1540dea584d38f4617d7ddb6aad4af6b5f21c52fa39ea md5: 65e113270b460dcdfc4dc0a80bb3d11c diff --git a/examples/magic.lock b/examples/magic.lock index cf66ed54b7..4aebd6f3e5 100644 --- a/examples/magic.lock +++ b/examples/magic.lock @@ -42,11 +42,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022505-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022505-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022505-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022505-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022519-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022519-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022519-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022519-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022519-release.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-h2d0b736_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py311h64a7726_0.conda @@ -107,11 +107,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022505-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022505-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022505-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022505-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022519-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022519-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022519-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022519-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022519-release.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-ha32ae93_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py311h69ead2a_0.conda @@ -163,11 +163,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.1-h3f77e49_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022505-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022505-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022505-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022505-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022519-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022519-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022519-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022519-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022519-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py311h7125741_0.conda @@ -1301,48 +1301,48 @@ packages: license_family: APACHE size: 280830 timestamp: 1736986295869 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022505-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022519-release.conda noarch: python - sha256: f866fdb1ee94edcc101592da0bbf891e7e00c07e29425ae3ad3f73cfbb19f2ae - md5: d19d3ce3db04f2a2528c5452eb6f7a0e + sha256: 7d9ce0d2a37effd00030103bfa92559a16416ab18915a91f39b06c375e0bc214 + md5: f3e2750206c3dd56cad5dd7f8e35fb78 depends: - - max-core ==25.2.0.dev2025022505 release - - max-python ==25.2.0.dev2025022505 release - - mojo-jupyter ==25.2.0.dev2025022505 release - - mblack ==25.2.0.dev2025022505 release + - max-core ==25.2.0.dev2025022519 release + - max-python ==25.2.0.dev2025022519 release + - mojo-jupyter ==25.2.0.dev2025022519 release + - mblack ==25.2.0.dev2025022519 release license: LicenseRef-Modular-Proprietary - size: 9915 - timestamp: 1740460553946 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022505-release.conda - sha256: ab00fce2436f6a1c3b5e5fd3b75898c63b1912637caddff2d7fda9ee610e34bd - md5: 5975b686575ba73ae374140c6ccac077 + size: 9907 + timestamp: 1740511118927 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022519-release.conda + sha256: dad982fd77340886af9fe056597901a1bda3bb8dff52550a8062a0e00e20d290 + md5: 19a4a10120b8eff1a41c88b0db40ecbf depends: - - mblack ==25.2.0.dev2025022505 release + - mblack ==25.2.0.dev2025022519 release license: LicenseRef-Modular-Proprietary - size: 243957009 - timestamp: 1740460553945 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022505-release.conda - sha256: cbe5677a2201d37a3436b29e8491f6a59ecec475fccb401b3fa5f0ff86476092 - md5: bbcd512adee45bf05195d486cd950f01 + size: 243375986 + timestamp: 1740511118927 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022519-release.conda + sha256: 7bc2109b151a67013a42ef1147ff337a1cd16d8b437365751dc0b0042f9e2266 + md5: b861f4c8402c7ad5e540d0619725be1e depends: - - mblack ==25.2.0.dev2025022505 release + - mblack ==25.2.0.dev2025022519 release license: LicenseRef-Modular-Proprietary - size: 246552488 - timestamp: 1740460534030 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022505-release.conda - sha256: 0472c6ce14ea2cbae97d5687106b927a6861c03bc7d99464f1b05e4fed56c128 - md5: b91b88a3c529382318e43790f93b67d6 + size: 245908466 + timestamp: 1740511116226 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022519-release.conda + sha256: cde645f856d467a064c6656d0871988b0154288bc708aa52411d167dcfb87ade + md5: b8f0079777c56690823621776b602012 depends: - - mblack ==25.2.0.dev2025022505 release + - mblack ==25.2.0.dev2025022519 release license: LicenseRef-Modular-Proprietary - size: 212086616 - timestamp: 1740461647314 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022505-release.conda + size: 211532835 + timestamp: 1740512176128 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022519-release.conda noarch: python - sha256: 510cae5d966a3539c4ab959e9d6cc053fa5c9aa690a0c633abf2d611d867bb9f - md5: cfadc13c0b8012df6aedf5f0bf38e895 + sha256: 4a4224af9e49aea43c33e2e1cdc920c70d87ca7b3c3c4849894eb21fdf5906d5 + md5: 7eda673a2b7f381b8f5b85483ce9ec8b depends: - - max-core ==25.2.0.dev2025022505 release + - max-core ==25.2.0.dev2025022519 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1380,14 +1380,14 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 120088340 - timestamp: 1740460553946 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022505-release.conda + size: 120092694 + timestamp: 1740511118927 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022519-release.conda noarch: python - sha256: c8b5da7eadac0fd07499a229ed0d61e2ad1dc0dd8223d0626096f2df3720ce30 - md5: 28fc06f7bf34d1bf018c42be174db363 + sha256: b808be6fdcd44235f3fa242d50c04fc93fa22bc411c46ccec34ecd1ca0acb286 + md5: ef2e998689015e9e6af78fa8cf06aa33 depends: - - max-core ==25.2.0.dev2025022505 release + - max-core ==25.2.0.dev2025022519 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1425,14 +1425,14 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 122656023 - timestamp: 1740460534030 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022505-release.conda + size: 122665387 + timestamp: 1740511116226 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022519-release.conda noarch: python - sha256: 0facbf91492933f8398d47c970b1f85da216a4b4e3993a413139d4f55542e7ae - md5: 213ca4e733b24bdcb068dd91dc61ac01 + sha256: f7314e74d3afeb9d871ac97ed2f87eb6872b92153c4ecedffdef4cd9acf3e749 + md5: 48866c4ee9c834d20ce488fd16276d41 depends: - - max-core ==25.2.0.dev2025022505 release + - max-core ==25.2.0.dev2025022519 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1470,12 +1470,12 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 109495643 - timestamp: 1740461647314 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022505-release.conda + size: 109490486 + timestamp: 1740512176129 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022519-release.conda noarch: python - sha256: 3b8aa31188a70fc4d4658c51644c5e3b2680759cfda7ebbe8c67259525e9a2a2 - md5: fc70e9e0ac92a2deaacd2c39dc6a0f46 + sha256: 0a20dced5e26aa1864ee12959235ab6bc0f9a9d23063de9e30578d29d8ec65c3 + md5: 144453ca89177b474084a3586fd9324c depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -1486,20 +1486,20 @@ packages: - typing_extensions >=v4.12.2 - python license: MIT - size: 130852 - timestamp: 1740460553945 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022505-release.conda + size: 130856 + timestamp: 1740511118927 +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022519-release.conda noarch: python - sha256: 098da4969faff354c251849fc353acfab1b535db5fb19282a0102b23964c1d15 - md5: a717b09355552fc825384d43f885d90a + sha256: 986511d2660bdea74fa8640017c36aa3c4cb567abc8d544377babe87e50f6e79 + md5: e5eff931fb439696eb4a40ba14a31192 depends: - - max-core ==25.2.0.dev2025022505 release + - max-core ==25.2.0.dev2025022519 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22987 - timestamp: 1740460553945 + size: 22992 + timestamp: 1740511118927 - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda sha256: 1895f47b7d68581a6facde5cb13ab8c2764c2e53a76bd746f8f98910dc4e08fe md5: 29097e7ea634a45cc5386b95cac6568f diff --git a/examples/operators/magic.lock b/examples/operators/magic.lock index c7da09c0ff..988c160ea6 100644 --- a/examples/operators/magic.lock +++ b/examples/operators/magic.lock @@ -42,11 +42,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022505-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022505-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022505-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022505-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022519-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022519-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022519-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022519-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022519-release.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-h2d0b736_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda @@ -107,11 +107,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022505-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022505-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022505-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022505-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022519-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022519-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022519-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022519-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022519-release.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-ha32ae93_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda @@ -163,11 +163,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.1-h3f77e49_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022505-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022505-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022505-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022505-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022519-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022519-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022519-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022519-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022519-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda @@ -1301,48 +1301,48 @@ packages: license_family: APACHE size: 280830 timestamp: 1736986295869 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022505-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022519-release.conda noarch: python - sha256: f866fdb1ee94edcc101592da0bbf891e7e00c07e29425ae3ad3f73cfbb19f2ae - md5: d19d3ce3db04f2a2528c5452eb6f7a0e + sha256: 7d9ce0d2a37effd00030103bfa92559a16416ab18915a91f39b06c375e0bc214 + md5: f3e2750206c3dd56cad5dd7f8e35fb78 depends: - - max-core ==25.2.0.dev2025022505 release - - max-python ==25.2.0.dev2025022505 release - - mojo-jupyter ==25.2.0.dev2025022505 release - - mblack ==25.2.0.dev2025022505 release + - max-core ==25.2.0.dev2025022519 release + - max-python ==25.2.0.dev2025022519 release + - mojo-jupyter ==25.2.0.dev2025022519 release + - mblack ==25.2.0.dev2025022519 release license: LicenseRef-Modular-Proprietary - size: 9915 - timestamp: 1740460553946 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022505-release.conda - sha256: ab00fce2436f6a1c3b5e5fd3b75898c63b1912637caddff2d7fda9ee610e34bd - md5: 5975b686575ba73ae374140c6ccac077 + size: 9907 + timestamp: 1740511118927 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022519-release.conda + sha256: dad982fd77340886af9fe056597901a1bda3bb8dff52550a8062a0e00e20d290 + md5: 19a4a10120b8eff1a41c88b0db40ecbf depends: - - mblack ==25.2.0.dev2025022505 release + - mblack ==25.2.0.dev2025022519 release license: LicenseRef-Modular-Proprietary - size: 243957009 - timestamp: 1740460553945 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022505-release.conda - sha256: cbe5677a2201d37a3436b29e8491f6a59ecec475fccb401b3fa5f0ff86476092 - md5: bbcd512adee45bf05195d486cd950f01 + size: 243375986 + timestamp: 1740511118927 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022519-release.conda + sha256: 7bc2109b151a67013a42ef1147ff337a1cd16d8b437365751dc0b0042f9e2266 + md5: b861f4c8402c7ad5e540d0619725be1e depends: - - mblack ==25.2.0.dev2025022505 release + - mblack ==25.2.0.dev2025022519 release license: LicenseRef-Modular-Proprietary - size: 246552488 - timestamp: 1740460534030 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022505-release.conda - sha256: 0472c6ce14ea2cbae97d5687106b927a6861c03bc7d99464f1b05e4fed56c128 - md5: b91b88a3c529382318e43790f93b67d6 + size: 245908466 + timestamp: 1740511116226 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022519-release.conda + sha256: cde645f856d467a064c6656d0871988b0154288bc708aa52411d167dcfb87ade + md5: b8f0079777c56690823621776b602012 depends: - - mblack ==25.2.0.dev2025022505 release + - mblack ==25.2.0.dev2025022519 release license: LicenseRef-Modular-Proprietary - size: 212086616 - timestamp: 1740461647314 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022505-release.conda + size: 211532835 + timestamp: 1740512176128 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022519-release.conda noarch: python - sha256: 510cae5d966a3539c4ab959e9d6cc053fa5c9aa690a0c633abf2d611d867bb9f - md5: cfadc13c0b8012df6aedf5f0bf38e895 + sha256: 4a4224af9e49aea43c33e2e1cdc920c70d87ca7b3c3c4849894eb21fdf5906d5 + md5: 7eda673a2b7f381b8f5b85483ce9ec8b depends: - - max-core ==25.2.0.dev2025022505 release + - max-core ==25.2.0.dev2025022519 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1380,14 +1380,14 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 120088340 - timestamp: 1740460553946 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022505-release.conda + size: 120092694 + timestamp: 1740511118927 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022519-release.conda noarch: python - sha256: c8b5da7eadac0fd07499a229ed0d61e2ad1dc0dd8223d0626096f2df3720ce30 - md5: 28fc06f7bf34d1bf018c42be174db363 + sha256: b808be6fdcd44235f3fa242d50c04fc93fa22bc411c46ccec34ecd1ca0acb286 + md5: ef2e998689015e9e6af78fa8cf06aa33 depends: - - max-core ==25.2.0.dev2025022505 release + - max-core ==25.2.0.dev2025022519 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1425,14 +1425,14 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 122656023 - timestamp: 1740460534030 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022505-release.conda + size: 122665387 + timestamp: 1740511116226 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022519-release.conda noarch: python - sha256: 0facbf91492933f8398d47c970b1f85da216a4b4e3993a413139d4f55542e7ae - md5: 213ca4e733b24bdcb068dd91dc61ac01 + sha256: f7314e74d3afeb9d871ac97ed2f87eb6872b92153c4ecedffdef4cd9acf3e749 + md5: 48866c4ee9c834d20ce488fd16276d41 depends: - - max-core ==25.2.0.dev2025022505 release + - max-core ==25.2.0.dev2025022519 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1470,12 +1470,12 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 109495643 - timestamp: 1740461647314 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022505-release.conda + size: 109490486 + timestamp: 1740512176129 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022519-release.conda noarch: python - sha256: 3b8aa31188a70fc4d4658c51644c5e3b2680759cfda7ebbe8c67259525e9a2a2 - md5: fc70e9e0ac92a2deaacd2c39dc6a0f46 + sha256: 0a20dced5e26aa1864ee12959235ab6bc0f9a9d23063de9e30578d29d8ec65c3 + md5: 144453ca89177b474084a3586fd9324c depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -1486,20 +1486,20 @@ packages: - typing_extensions >=v4.12.2 - python license: MIT - size: 130852 - timestamp: 1740460553945 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022505-release.conda + size: 130856 + timestamp: 1740511118927 +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022519-release.conda noarch: python - sha256: 098da4969faff354c251849fc353acfab1b535db5fb19282a0102b23964c1d15 - md5: a717b09355552fc825384d43f885d90a + sha256: 986511d2660bdea74fa8640017c36aa3c4cb567abc8d544377babe87e50f6e79 + md5: e5eff931fb439696eb4a40ba14a31192 depends: - - max-core ==25.2.0.dev2025022505 release + - max-core ==25.2.0.dev2025022519 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22987 - timestamp: 1740460553945 + size: 22992 + timestamp: 1740511118927 - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda sha256: 1895f47b7d68581a6facde5cb13ab8c2764c2e53a76bd746f8f98910dc4e08fe md5: 29097e7ea634a45cc5386b95cac6568f diff --git a/examples/testing/magic.lock b/examples/testing/magic.lock index c7da09c0ff..988c160ea6 100644 --- a/examples/testing/magic.lock +++ b/examples/testing/magic.lock @@ -42,11 +42,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022505-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022505-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022505-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022505-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022519-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022519-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022519-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022519-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022519-release.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-h2d0b736_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda @@ -107,11 +107,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022505-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022505-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022505-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022505-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022519-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022519-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022519-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022519-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022519-release.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-ha32ae93_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda @@ -163,11 +163,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.1-h3f77e49_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022505-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022505-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022505-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022505-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022519-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022519-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022519-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022519-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022519-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda @@ -1301,48 +1301,48 @@ packages: license_family: APACHE size: 280830 timestamp: 1736986295869 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022505-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022519-release.conda noarch: python - sha256: f866fdb1ee94edcc101592da0bbf891e7e00c07e29425ae3ad3f73cfbb19f2ae - md5: d19d3ce3db04f2a2528c5452eb6f7a0e + sha256: 7d9ce0d2a37effd00030103bfa92559a16416ab18915a91f39b06c375e0bc214 + md5: f3e2750206c3dd56cad5dd7f8e35fb78 depends: - - max-core ==25.2.0.dev2025022505 release - - max-python ==25.2.0.dev2025022505 release - - mojo-jupyter ==25.2.0.dev2025022505 release - - mblack ==25.2.0.dev2025022505 release + - max-core ==25.2.0.dev2025022519 release + - max-python ==25.2.0.dev2025022519 release + - mojo-jupyter ==25.2.0.dev2025022519 release + - mblack ==25.2.0.dev2025022519 release license: LicenseRef-Modular-Proprietary - size: 9915 - timestamp: 1740460553946 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022505-release.conda - sha256: ab00fce2436f6a1c3b5e5fd3b75898c63b1912637caddff2d7fda9ee610e34bd - md5: 5975b686575ba73ae374140c6ccac077 + size: 9907 + timestamp: 1740511118927 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022519-release.conda + sha256: dad982fd77340886af9fe056597901a1bda3bb8dff52550a8062a0e00e20d290 + md5: 19a4a10120b8eff1a41c88b0db40ecbf depends: - - mblack ==25.2.0.dev2025022505 release + - mblack ==25.2.0.dev2025022519 release license: LicenseRef-Modular-Proprietary - size: 243957009 - timestamp: 1740460553945 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022505-release.conda - sha256: cbe5677a2201d37a3436b29e8491f6a59ecec475fccb401b3fa5f0ff86476092 - md5: bbcd512adee45bf05195d486cd950f01 + size: 243375986 + timestamp: 1740511118927 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022519-release.conda + sha256: 7bc2109b151a67013a42ef1147ff337a1cd16d8b437365751dc0b0042f9e2266 + md5: b861f4c8402c7ad5e540d0619725be1e depends: - - mblack ==25.2.0.dev2025022505 release + - mblack ==25.2.0.dev2025022519 release license: LicenseRef-Modular-Proprietary - size: 246552488 - timestamp: 1740460534030 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022505-release.conda - sha256: 0472c6ce14ea2cbae97d5687106b927a6861c03bc7d99464f1b05e4fed56c128 - md5: b91b88a3c529382318e43790f93b67d6 + size: 245908466 + timestamp: 1740511116226 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022519-release.conda + sha256: cde645f856d467a064c6656d0871988b0154288bc708aa52411d167dcfb87ade + md5: b8f0079777c56690823621776b602012 depends: - - mblack ==25.2.0.dev2025022505 release + - mblack ==25.2.0.dev2025022519 release license: LicenseRef-Modular-Proprietary - size: 212086616 - timestamp: 1740461647314 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022505-release.conda + size: 211532835 + timestamp: 1740512176128 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022519-release.conda noarch: python - sha256: 510cae5d966a3539c4ab959e9d6cc053fa5c9aa690a0c633abf2d611d867bb9f - md5: cfadc13c0b8012df6aedf5f0bf38e895 + sha256: 4a4224af9e49aea43c33e2e1cdc920c70d87ca7b3c3c4849894eb21fdf5906d5 + md5: 7eda673a2b7f381b8f5b85483ce9ec8b depends: - - max-core ==25.2.0.dev2025022505 release + - max-core ==25.2.0.dev2025022519 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1380,14 +1380,14 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 120088340 - timestamp: 1740460553946 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022505-release.conda + size: 120092694 + timestamp: 1740511118927 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022519-release.conda noarch: python - sha256: c8b5da7eadac0fd07499a229ed0d61e2ad1dc0dd8223d0626096f2df3720ce30 - md5: 28fc06f7bf34d1bf018c42be174db363 + sha256: b808be6fdcd44235f3fa242d50c04fc93fa22bc411c46ccec34ecd1ca0acb286 + md5: ef2e998689015e9e6af78fa8cf06aa33 depends: - - max-core ==25.2.0.dev2025022505 release + - max-core ==25.2.0.dev2025022519 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1425,14 +1425,14 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 122656023 - timestamp: 1740460534030 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022505-release.conda + size: 122665387 + timestamp: 1740511116226 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022519-release.conda noarch: python - sha256: 0facbf91492933f8398d47c970b1f85da216a4b4e3993a413139d4f55542e7ae - md5: 213ca4e733b24bdcb068dd91dc61ac01 + sha256: f7314e74d3afeb9d871ac97ed2f87eb6872b92153c4ecedffdef4cd9acf3e749 + md5: 48866c4ee9c834d20ce488fd16276d41 depends: - - max-core ==25.2.0.dev2025022505 release + - max-core ==25.2.0.dev2025022519 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1470,12 +1470,12 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 109495643 - timestamp: 1740461647314 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022505-release.conda + size: 109490486 + timestamp: 1740512176129 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022519-release.conda noarch: python - sha256: 3b8aa31188a70fc4d4658c51644c5e3b2680759cfda7ebbe8c67259525e9a2a2 - md5: fc70e9e0ac92a2deaacd2c39dc6a0f46 + sha256: 0a20dced5e26aa1864ee12959235ab6bc0f9a9d23063de9e30578d29d8ec65c3 + md5: 144453ca89177b474084a3586fd9324c depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -1486,20 +1486,20 @@ packages: - typing_extensions >=v4.12.2 - python license: MIT - size: 130852 - timestamp: 1740460553945 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022505-release.conda + size: 130856 + timestamp: 1740511118927 +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022519-release.conda noarch: python - sha256: 098da4969faff354c251849fc353acfab1b535db5fb19282a0102b23964c1d15 - md5: a717b09355552fc825384d43f885d90a + sha256: 986511d2660bdea74fa8640017c36aa3c4cb567abc8d544377babe87e50f6e79 + md5: e5eff931fb439696eb4a40ba14a31192 depends: - - max-core ==25.2.0.dev2025022505 release + - max-core ==25.2.0.dev2025022519 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22987 - timestamp: 1740460553945 + size: 22992 + timestamp: 1740511118927 - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda sha256: 1895f47b7d68581a6facde5cb13ab8c2764c2e53a76bd746f8f98910dc4e08fe md5: 29097e7ea634a45cc5386b95cac6568f diff --git a/magic.lock b/magic.lock index 3887488bd6..143b0390a3 100644 --- a/magic.lock +++ b/magic.lock @@ -43,11 +43,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/lit-19.1.7-pyhd8ed1ab_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022505-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022505-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022505-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022505-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022519-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022519-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022519-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022519-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022519-release.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-h2d0b736_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda @@ -109,11 +109,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/lit-19.1.7-pyhd8ed1ab_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022505-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022505-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022505-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022505-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022519-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022519-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022519-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022519-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022519-release.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-ha32ae93_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda @@ -166,11 +166,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/lit-19.1.7-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022505-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022505-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022505-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022505-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022519-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022519-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022519-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022519-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022519-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda @@ -1313,48 +1313,48 @@ packages: license_family: APACHE size: 280830 timestamp: 1736986295869 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022505-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022519-release.conda noarch: python - sha256: f866fdb1ee94edcc101592da0bbf891e7e00c07e29425ae3ad3f73cfbb19f2ae - md5: d19d3ce3db04f2a2528c5452eb6f7a0e + sha256: 7d9ce0d2a37effd00030103bfa92559a16416ab18915a91f39b06c375e0bc214 + md5: f3e2750206c3dd56cad5dd7f8e35fb78 depends: - - max-core ==25.2.0.dev2025022505 release - - max-python ==25.2.0.dev2025022505 release - - mojo-jupyter ==25.2.0.dev2025022505 release - - mblack ==25.2.0.dev2025022505 release + - max-core ==25.2.0.dev2025022519 release + - max-python ==25.2.0.dev2025022519 release + - mojo-jupyter ==25.2.0.dev2025022519 release + - mblack ==25.2.0.dev2025022519 release license: LicenseRef-Modular-Proprietary - size: 9915 - timestamp: 1740460553946 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022505-release.conda - sha256: ab00fce2436f6a1c3b5e5fd3b75898c63b1912637caddff2d7fda9ee610e34bd - md5: 5975b686575ba73ae374140c6ccac077 + size: 9907 + timestamp: 1740511118927 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022519-release.conda + sha256: dad982fd77340886af9fe056597901a1bda3bb8dff52550a8062a0e00e20d290 + md5: 19a4a10120b8eff1a41c88b0db40ecbf depends: - - mblack ==25.2.0.dev2025022505 release + - mblack ==25.2.0.dev2025022519 release license: LicenseRef-Modular-Proprietary - size: 243957009 - timestamp: 1740460553945 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022505-release.conda - sha256: cbe5677a2201d37a3436b29e8491f6a59ecec475fccb401b3fa5f0ff86476092 - md5: bbcd512adee45bf05195d486cd950f01 + size: 243375986 + timestamp: 1740511118927 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022519-release.conda + sha256: 7bc2109b151a67013a42ef1147ff337a1cd16d8b437365751dc0b0042f9e2266 + md5: b861f4c8402c7ad5e540d0619725be1e depends: - - mblack ==25.2.0.dev2025022505 release + - mblack ==25.2.0.dev2025022519 release license: LicenseRef-Modular-Proprietary - size: 246552488 - timestamp: 1740460534030 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022505-release.conda - sha256: 0472c6ce14ea2cbae97d5687106b927a6861c03bc7d99464f1b05e4fed56c128 - md5: b91b88a3c529382318e43790f93b67d6 + size: 245908466 + timestamp: 1740511116226 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022519-release.conda + sha256: cde645f856d467a064c6656d0871988b0154288bc708aa52411d167dcfb87ade + md5: b8f0079777c56690823621776b602012 depends: - - mblack ==25.2.0.dev2025022505 release + - mblack ==25.2.0.dev2025022519 release license: LicenseRef-Modular-Proprietary - size: 212086616 - timestamp: 1740461647314 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022505-release.conda + size: 211532835 + timestamp: 1740512176128 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022519-release.conda noarch: python - sha256: 510cae5d966a3539c4ab959e9d6cc053fa5c9aa690a0c633abf2d611d867bb9f - md5: cfadc13c0b8012df6aedf5f0bf38e895 + sha256: 4a4224af9e49aea43c33e2e1cdc920c70d87ca7b3c3c4849894eb21fdf5906d5 + md5: 7eda673a2b7f381b8f5b85483ce9ec8b depends: - - max-core ==25.2.0.dev2025022505 release + - max-core ==25.2.0.dev2025022519 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1392,14 +1392,14 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 120088340 - timestamp: 1740460553946 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022505-release.conda + size: 120092694 + timestamp: 1740511118927 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022519-release.conda noarch: python - sha256: c8b5da7eadac0fd07499a229ed0d61e2ad1dc0dd8223d0626096f2df3720ce30 - md5: 28fc06f7bf34d1bf018c42be174db363 + sha256: b808be6fdcd44235f3fa242d50c04fc93fa22bc411c46ccec34ecd1ca0acb286 + md5: ef2e998689015e9e6af78fa8cf06aa33 depends: - - max-core ==25.2.0.dev2025022505 release + - max-core ==25.2.0.dev2025022519 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1437,14 +1437,14 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 122656023 - timestamp: 1740460534030 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022505-release.conda + size: 122665387 + timestamp: 1740511116226 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022519-release.conda noarch: python - sha256: 0facbf91492933f8398d47c970b1f85da216a4b4e3993a413139d4f55542e7ae - md5: 213ca4e733b24bdcb068dd91dc61ac01 + sha256: f7314e74d3afeb9d871ac97ed2f87eb6872b92153c4ecedffdef4cd9acf3e749 + md5: 48866c4ee9c834d20ce488fd16276d41 depends: - - max-core ==25.2.0.dev2025022505 release + - max-core ==25.2.0.dev2025022519 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1482,12 +1482,12 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 109495643 - timestamp: 1740461647314 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022505-release.conda + size: 109490486 + timestamp: 1740512176129 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022519-release.conda noarch: python - sha256: 3b8aa31188a70fc4d4658c51644c5e3b2680759cfda7ebbe8c67259525e9a2a2 - md5: fc70e9e0ac92a2deaacd2c39dc6a0f46 + sha256: 0a20dced5e26aa1864ee12959235ab6bc0f9a9d23063de9e30578d29d8ec65c3 + md5: 144453ca89177b474084a3586fd9324c depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -1498,20 +1498,20 @@ packages: - typing_extensions >=v4.12.2 - python license: MIT - size: 130852 - timestamp: 1740460553945 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022505-release.conda + size: 130856 + timestamp: 1740511118927 +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022519-release.conda noarch: python - sha256: 098da4969faff354c251849fc353acfab1b535db5fb19282a0102b23964c1d15 - md5: a717b09355552fc825384d43f885d90a + sha256: 986511d2660bdea74fa8640017c36aa3c4cb567abc8d544377babe87e50f6e79 + md5: e5eff931fb439696eb4a40ba14a31192 depends: - - max-core ==25.2.0.dev2025022505 release + - max-core ==25.2.0.dev2025022519 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22987 - timestamp: 1740460553945 + size: 22992 + timestamp: 1740511118927 - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda sha256: 1895f47b7d68581a6facde5cb13ab8c2764c2e53a76bd746f8f98910dc4e08fe md5: 29097e7ea634a45cc5386b95cac6568f From bdaca0f2ebd9e7c9f881ef8b62ebab95af8af76b Mon Sep 17 00:00:00 2001 From: modularbot <116839051+modularbot@users.noreply.github.com> Date: Wed, 26 Feb 2025 11:17:15 -0600 Subject: [PATCH 462/509] [External] [stdlib] Micro-optimize utf8 helper functions (#56579) [External] [stdlib] Micro-optimize utf8 helper functions Micro-optimize utf8 helper functions ORIGINAL_AUTHOR=martinvuyk <110240700+martinvuyk@users.noreply.github.com> PUBLIC_PR_LINK=modularml/mojo#3896 Co-authored-by: martinvuyk <110240700+martinvuyk@users.noreply.github.com> Closes modularml/mojo#3896 MODULAR_ORIG_COMMIT_REV_ID: d24cb7cdf532b3f6a10f9ee19c95b66f22efc967 --- stdlib/src/collections/string/codepoint.mojo | 61 +++++++++++-------- stdlib/src/collections/string/string.mojo | 3 +- .../src/collections/string/string_slice.mojo | 17 ++++-- .../test/collections/string/test_string.mojo | 1 + 4 files changed, 51 insertions(+), 31 deletions(-) diff --git a/stdlib/src/collections/string/codepoint.mojo b/stdlib/src/collections/string/codepoint.mojo index 0452f15621..934d74ce49 100644 --- a/stdlib/src/collections/string/codepoint.mojo +++ b/stdlib/src/collections/string/codepoint.mojo @@ -18,6 +18,7 @@ from collections.string import StringSlice from bit import count_leading_zeros from memory import UnsafePointer +from sys.intrinsics import likely @always_inline @@ -450,13 +451,13 @@ struct Codepoint(CollectionElement, EqualityComparable, Intable, Stringable): return self._scalar_value @always_inline - fn unsafe_write_utf8(self, ptr: UnsafePointer[Byte]) -> UInt: + fn unsafe_write_utf8[ + optimize_ascii: Bool = True + ](self, ptr: UnsafePointer[Byte]) -> UInt: """Shift unicode to utf8 representation. - Safety: - `ptr` MUST point to at least `self.utf8_byte_length()` allocated - bytes or else an out-of-bounds write will occur, which is undefined - behavior. + Parameters: + optimize_ascii: Optimize for languages with mostly ASCII characters. Args: ptr: Pointer value to write the encoded UTF-8 bytes. Must validly @@ -466,6 +467,11 @@ struct Codepoint(CollectionElement, EqualityComparable, Intable, Stringable): Returns: Returns the number of bytes written. + Safety: + `ptr` MUST point to at least `self.utf8_byte_length()` allocated + bytes or else an out-of-bounds write will occur, which is undefined + behavior. + ### Unicode (represented as UInt32 BE) to UTF-8 conversion: - 1: 00000000 00000000 00000000 0aaaaaaa -> 0aaaaaaa - a @@ -483,18 +489,30 @@ struct Codepoint(CollectionElement, EqualityComparable, Intable, Stringable): var num_bytes = self.utf8_byte_length() - if num_bytes == 1: - ptr[0] = UInt8(c) - return 1 - - var shift = 6 * (num_bytes - 1) - var mask = UInt8(0xFF) >> UInt8(num_bytes + 1) - var num_bytes_marker = UInt8(0xFF) << (8 - num_bytes) - ptr[0] = ((c >> shift) & mask) | num_bytes_marker - for i in range(1, num_bytes): - shift -= 6 - ptr[i] = ((c >> shift) & 0b0011_1111) | 0b1000_0000 - + @parameter + if optimize_ascii: + # FIXME(#933): can't run LLVM intrinsic at compile time + # if likely(num_bytes == 1): + if num_bytes == 1: + ptr[0] = UInt8(c) + return 1 + var shift = 6 * (num_bytes - 1) + var mask = UInt8(0xFF) >> (num_bytes + 1) + var num_bytes_marker = UInt8(0xFF) << (8 - num_bytes) + ptr[0] = ((c >> shift) & mask) | num_bytes_marker + for i in range(1, num_bytes): + shift -= 6 + ptr[i] = ((c >> shift) & 0b0011_1111) | 0b1000_0000 + else: + var shift = 6 * (num_bytes - 1) + var mask = UInt8(0xFF) >> (num_bytes + Int(num_bytes > 1)) + var num_bytes_marker = UInt8(0xFF) << (8 - num_bytes) + ptr[0] = ((c >> shift) & mask) | ( + num_bytes_marker & -Int(num_bytes != 1) + ) + for i in range(1, num_bytes): + shift -= 6 + ptr[i] = ((c >> shift) & 0b0011_1111) | 0b1000_0000 return num_bytes @always_inline @@ -509,16 +527,11 @@ struct Codepoint(CollectionElement, EqualityComparable, Intable, Stringable): # Minimum codepoint values (respectively) that can fit in a 1, 2, 3, # and 4 byte encoded UTF-8 sequence. - alias sizes = SIMD[DType.int32, 4]( - 0, - 2**7, - 2**11, - 2**16, - ) + alias sizes = SIMD[DType.uint32, 4](0, 2**7, 2**11, 2**16) # Count how many of the minimums this codepoint exceeds, which is equal # to the number of bytes needed to encode it. - var lt = (sizes <= Int(self)).cast[DType.uint8]() + var lt = (sizes <= self.to_u32()).cast[DType.uint8]() # TODO(MOCO-1537): Support `reduce_add()` at compile time. # var count = Int(lt.reduce_add()) diff --git a/stdlib/src/collections/string/string.mojo b/stdlib/src/collections/string/string.mojo index 395dcdce10..304d33b6cc 100644 --- a/stdlib/src/collections/string/string.mojo +++ b/stdlib/src/collections/string/string.mojo @@ -81,8 +81,7 @@ fn chr(c: Int) -> String: Examples: ```mojo - print(chr(97)) # "a" - print(chr(8364)) # "€" + print(chr(97), chr(8364)) # "a €" ``` . """ diff --git a/stdlib/src/collections/string/string_slice.mojo b/stdlib/src/collections/string/string_slice.mojo index 60721c8e6e..e1c6bf41ca 100644 --- a/stdlib/src/collections/string/string_slice.mojo +++ b/stdlib/src/collections/string/string_slice.mojo @@ -2196,6 +2196,13 @@ fn _memmem[ return UnsafePointer[Scalar[type]]() +@always_inline +fn _is_utf8_continuation_byte[ + w: Int +](vec: SIMD[DType.uint8, w]) -> SIMD[DType.bool, w]: + return vec.cast[DType.int8]() < -(0b1000_0000 >> 1) + + fn _count_utf8_continuation_bytes(str_slice: StringSlice) -> Int: alias sizes = (256, 128, 64, 32, 16, 8) var ptr = str_slice.unsafe_ptr() @@ -2212,12 +2219,12 @@ fn _count_utf8_continuation_bytes(str_slice: StringSlice) -> Int: var rest = num_bytes - processed for _ in range(rest // s): var vec = (ptr + processed).load[width=s]() - var comp = (vec & 0b1100_0000) == 0b1000_0000 + var comp = _is_utf8_continuation_byte(vec) amnt += Int(comp.cast[DType.uint8]().reduce_add()) processed += s for i in range(num_bytes - processed): - amnt += Int((ptr[processed + i] & 0b1100_0000) == 0b1000_0000) + amnt += Int(_is_utf8_continuation_byte(ptr[processed + i])) return amnt @@ -2228,10 +2235,10 @@ fn _utf8_first_byte_sequence_length(b: Byte) -> Int: this does not work correctly if given a continuation byte.""" debug_assert( - (b & 0b1100_0000) != 0b1000_0000, + not _is_utf8_continuation_byte(b), "Function does not work correctly if given a continuation byte.", ) - return Int(count_leading_zeros(~b)) + Int(b < 0b1000_0000) + return Int(count_leading_zeros(~b) | (b < 0b1000_0000).cast[DType.uint8]()) fn _utf8_byte_type(b: SIMD[DType.uint8, _], /) -> __type_of(b): @@ -2248,7 +2255,7 @@ fn _utf8_byte_type(b: SIMD[DType.uint8, _], /) -> __type_of(b): - 3 -> start of 3 byte long sequence. - 4 -> start of 4 byte long sequence. """ - return count_leading_zeros(~(b & UInt8(0b1111_0000))) + return count_leading_zeros(~b) @always_inline diff --git a/stdlib/test/collections/string/test_string.mojo b/stdlib/test/collections/string/test_string.mojo index 26d14bdeab..42e6adf1cc 100644 --- a/stdlib/test/collections/string/test_string.mojo +++ b/stdlib/test/collections/string/test_string.mojo @@ -263,6 +263,7 @@ def test_ord(): def test_chr(): + assert_equal("\0", chr(0)) assert_equal("A", chr(65)) assert_equal("a", chr(97)) assert_equal("!", chr(33)) From 415610ee4efdf8f715fc329503eef59f98fa1736 Mon Sep 17 00:00:00 2001 From: Lukas Hermann <1734032+lsh@users.noreply.github.com> Date: Wed, 26 Feb 2025 09:50:34 -0800 Subject: [PATCH 463/509] [stdlib] Add origin to `InlineArray.unsafe_ptr` (#56708) MODULAR_ORIG_COMMIT_REV_ID: f06d968ae3bc6a23c7ce9553444573538fda2d82 --- stdlib/src/collections/inline_array.mojo | 8 +++++++- stdlib/test/collections/test_inline_array.mojo | 12 ++++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/stdlib/src/collections/inline_array.mojo b/stdlib/src/collections/inline_array.mojo index 142545b5a6..3cb3161e53 100644 --- a/stdlib/src/collections/inline_array.mojo +++ b/stdlib/src/collections/inline_array.mojo @@ -304,7 +304,13 @@ struct InlineArray[ return UnsafePointer(ptr)[] @always_inline - fn unsafe_ptr(self) -> UnsafePointer[Self.ElementType]: + fn unsafe_ptr( + ref self, + ) -> UnsafePointer[ + Self.ElementType, + mut = Origin(__origin_of(self)).is_mutable, + origin = __origin_of(self), + ]: """Get an `UnsafePointer` to the underlying array. That pointer is unsafe but can be used to read or write to the array. diff --git a/stdlib/test/collections/test_inline_array.mojo b/stdlib/test/collections/test_inline_array.mojo index a46aae3325..d3a3f7a99d 100644 --- a/stdlib/test/collections/test_inline_array.mojo +++ b/stdlib/test/collections/test_inline_array.mojo @@ -214,6 +214,17 @@ def test_inline_array_runs_destructors(): assert_equal(destructor_counter[3], 30) +fn test_unsafe_ptr() raises: + alias N = 10 + var arr = InlineArray[Int, 10](fill=0) + for i in range(N): + arr[i] = i + + var ptr = arr.unsafe_ptr() + for i in range(N): + assert_equal(arr[i], ptr[i]) + + def main(): test_array_unsafe_get() test_array_int() @@ -222,3 +233,4 @@ def main(): test_array_unsafe_assume_initialized_constructor_string() test_array_contains() test_inline_array_runs_destructors() + test_unsafe_ptr() From 248b7fa3c850ac75a6bd205674d09abdd63d485d Mon Sep 17 00:00:00 2001 From: modularbot Date: Wed, 26 Feb 2025 20:41:36 +0000 Subject: [PATCH 464/509] Update lockfiles to point to latest nightly version: 25.2.0.dev2025022618 --- examples/life/magic.lock | 142 +++++++++++++++++----------------- examples/magic.lock | 142 +++++++++++++++++----------------- examples/operators/magic.lock | 142 +++++++++++++++++----------------- examples/testing/magic.lock | 142 +++++++++++++++++----------------- magic.lock | 142 +++++++++++++++++----------------- 5 files changed, 355 insertions(+), 355 deletions(-) diff --git a/examples/life/magic.lock b/examples/life/magic.lock index e2d2049339..82ebae50a4 100644 --- a/examples/life/magic.lock +++ b/examples/life/magic.lock @@ -103,11 +103,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.6-h8d12d68_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.10.0-h5888daf_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022519-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022519-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022519-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022519-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022519-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022618-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022618-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022618-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022618-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022618-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/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda @@ -258,11 +258,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.6-h2e0c361_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.10.0-h5ad3122_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022519-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022519-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022519-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022519-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022519-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022618-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022618-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022618-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022618-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022618-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/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-ha32ae93_3.conda @@ -384,11 +384,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.5.0-h2471fea_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022519-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022519-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022519-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022519-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022519-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022618-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022618-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022618-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022618-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022618-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/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda @@ -3498,48 +3498,48 @@ packages: license_family: BSD size: 184953 timestamp: 1733740984533 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022519-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022618-release.conda noarch: python - sha256: 7d9ce0d2a37effd00030103bfa92559a16416ab18915a91f39b06c375e0bc214 - md5: f3e2750206c3dd56cad5dd7f8e35fb78 + sha256: 9599e221c27af8899881eb571ec3043f8b6813f9c5938e65943b983f802054bb + md5: cd1814a782d4a03ca4a64a1cd788609a depends: - - max-core ==25.2.0.dev2025022519 release - - max-python ==25.2.0.dev2025022519 release - - mojo-jupyter ==25.2.0.dev2025022519 release - - mblack ==25.2.0.dev2025022519 release + - max-core ==25.2.0.dev2025022618 release + - max-python ==25.2.0.dev2025022618 release + - mojo-jupyter ==25.2.0.dev2025022618 release + - mblack ==25.2.0.dev2025022618 release license: LicenseRef-Modular-Proprietary - size: 9907 - timestamp: 1740511118927 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022519-release.conda - sha256: dad982fd77340886af9fe056597901a1bda3bb8dff52550a8062a0e00e20d290 - md5: 19a4a10120b8eff1a41c88b0db40ecbf + size: 9906 + timestamp: 1740596478019 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022618-release.conda + sha256: 1ca66cbfaaec44d3c224fe3eabda33fab5c5102dbd222ac101fab612ab959028 + md5: 1f5bc5fd3f7405031e95e4969cbc1b43 depends: - - mblack ==25.2.0.dev2025022519 release + - mblack ==25.2.0.dev2025022618 release license: LicenseRef-Modular-Proprietary - size: 243375986 - timestamp: 1740511118927 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022519-release.conda - sha256: 7bc2109b151a67013a42ef1147ff337a1cd16d8b437365751dc0b0042f9e2266 - md5: b861f4c8402c7ad5e540d0619725be1e + size: 243393888 + timestamp: 1740596262894 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022618-release.conda + sha256: 6c9b74bc0972f0f515bf2dc2abd1f7acf9c77122caf06c72f21ff568b91f357b + md5: 64d7dbf1d05bf7e952f3841cac0920c4 depends: - - mblack ==25.2.0.dev2025022519 release + - mblack ==25.2.0.dev2025022618 release license: LicenseRef-Modular-Proprietary - size: 245908466 - timestamp: 1740511116226 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022519-release.conda - sha256: cde645f856d467a064c6656d0871988b0154288bc708aa52411d167dcfb87ade - md5: b8f0079777c56690823621776b602012 + size: 245985149 + timestamp: 1740596478019 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022618-release.conda + sha256: 279ac08de644ac2fef9393e66440740b7cc76f14a7d325b5156cac174e6c238f + md5: cfd8ab87ccc30f48c39825539eccd04b depends: - - mblack ==25.2.0.dev2025022519 release + - mblack ==25.2.0.dev2025022618 release license: LicenseRef-Modular-Proprietary - size: 211532835 - timestamp: 1740512176128 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022519-release.conda + size: 211567067 + timestamp: 1740597258914 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022618-release.conda noarch: python - sha256: 4a4224af9e49aea43c33e2e1cdc920c70d87ca7b3c3c4849894eb21fdf5906d5 - md5: 7eda673a2b7f381b8f5b85483ce9ec8b + sha256: f13e908580445f9f02151ebc952758e92287a5774b65efb695820653337be3c5 + md5: 8328ab556068866946546bb2d26816e9 depends: - - max-core ==25.2.0.dev2025022519 release + - max-core ==25.2.0.dev2025022618 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -3577,14 +3577,14 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 120092694 - timestamp: 1740511118927 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022519-release.conda + size: 120351193 + timestamp: 1740596262894 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022618-release.conda noarch: python - sha256: b808be6fdcd44235f3fa242d50c04fc93fa22bc411c46ccec34ecd1ca0acb286 - md5: ef2e998689015e9e6af78fa8cf06aa33 + sha256: 515db1f7c8287f452cb0da29bfccb43cde4ebd0faee593e27b6be14b7d495faf + md5: dc6bdeff0967c5a0c47baf6dd27483a6 depends: - - max-core ==25.2.0.dev2025022519 release + - max-core ==25.2.0.dev2025022618 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -3622,14 +3622,14 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 122665387 - timestamp: 1740511116226 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022519-release.conda + size: 122872196 + timestamp: 1740596478019 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022618-release.conda noarch: python - sha256: f7314e74d3afeb9d871ac97ed2f87eb6872b92153c4ecedffdef4cd9acf3e749 - md5: 48866c4ee9c834d20ce488fd16276d41 + sha256: a08fd92e04d61bddaad3d9a323a03c9705763b36babf38915875572593fa1d71 + md5: 555970eeb88448f26d31e5d6b99c9800 depends: - - max-core ==25.2.0.dev2025022519 release + - max-core ==25.2.0.dev2025022618 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -3667,12 +3667,12 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 109490486 - timestamp: 1740512176129 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022519-release.conda + size: 109621119 + timestamp: 1740597258914 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022618-release.conda noarch: python - sha256: 0a20dced5e26aa1864ee12959235ab6bc0f9a9d23063de9e30578d29d8ec65c3 - md5: 144453ca89177b474084a3586fd9324c + sha256: e6030605141540eb398e8445b266cff5b714a2c41e27007dbac4d901481ab482 + md5: b0b2c7b234272d99f1c05b35615f104e depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -3683,20 +3683,20 @@ packages: - typing_extensions >=v4.12.2 - python license: MIT - size: 130856 - timestamp: 1740511118927 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022519-release.conda + size: 130866 + timestamp: 1740596478019 +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022618-release.conda noarch: python - sha256: 986511d2660bdea74fa8640017c36aa3c4cb567abc8d544377babe87e50f6e79 - md5: e5eff931fb439696eb4a40ba14a31192 + sha256: 01b4e6f40757bddd76685fd2c9f4abe20d89334ffbc09ffe83bb553179fe0498 + md5: 2dbd38df35c2becade229a64ca015e7c depends: - - max-core ==25.2.0.dev2025022519 release + - max-core ==25.2.0.dev2025022618 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22992 - timestamp: 1740511118927 + size: 22994 + timestamp: 1740596478019 - conda: https://conda.anaconda.org/conda-forge/linux-64/mpg123-1.32.9-hc50e24c_0.conda sha256: 39c4700fb3fbe403a77d8cc27352fa72ba744db487559d5d44bf8411bb4ea200 md5: c7f302fd11eeb0987a6a5e1f3aed6a21 diff --git a/examples/magic.lock b/examples/magic.lock index 4aebd6f3e5..1cffa16323 100644 --- a/examples/magic.lock +++ b/examples/magic.lock @@ -42,11 +42,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022519-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022519-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022519-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022519-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022519-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022618-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022618-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022618-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022618-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022618-release.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-h2d0b736_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py311h64a7726_0.conda @@ -107,11 +107,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022519-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022519-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022519-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022519-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022519-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022618-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022618-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022618-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022618-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022618-release.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-ha32ae93_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py311h69ead2a_0.conda @@ -163,11 +163,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.1-h3f77e49_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022519-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022519-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022519-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022519-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022519-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022618-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022618-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022618-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022618-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022618-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py311h7125741_0.conda @@ -1301,48 +1301,48 @@ packages: license_family: APACHE size: 280830 timestamp: 1736986295869 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022519-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022618-release.conda noarch: python - sha256: 7d9ce0d2a37effd00030103bfa92559a16416ab18915a91f39b06c375e0bc214 - md5: f3e2750206c3dd56cad5dd7f8e35fb78 + sha256: 9599e221c27af8899881eb571ec3043f8b6813f9c5938e65943b983f802054bb + md5: cd1814a782d4a03ca4a64a1cd788609a depends: - - max-core ==25.2.0.dev2025022519 release - - max-python ==25.2.0.dev2025022519 release - - mojo-jupyter ==25.2.0.dev2025022519 release - - mblack ==25.2.0.dev2025022519 release + - max-core ==25.2.0.dev2025022618 release + - max-python ==25.2.0.dev2025022618 release + - mojo-jupyter ==25.2.0.dev2025022618 release + - mblack ==25.2.0.dev2025022618 release license: LicenseRef-Modular-Proprietary - size: 9907 - timestamp: 1740511118927 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022519-release.conda - sha256: dad982fd77340886af9fe056597901a1bda3bb8dff52550a8062a0e00e20d290 - md5: 19a4a10120b8eff1a41c88b0db40ecbf + size: 9906 + timestamp: 1740596478019 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022618-release.conda + sha256: 1ca66cbfaaec44d3c224fe3eabda33fab5c5102dbd222ac101fab612ab959028 + md5: 1f5bc5fd3f7405031e95e4969cbc1b43 depends: - - mblack ==25.2.0.dev2025022519 release + - mblack ==25.2.0.dev2025022618 release license: LicenseRef-Modular-Proprietary - size: 243375986 - timestamp: 1740511118927 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022519-release.conda - sha256: 7bc2109b151a67013a42ef1147ff337a1cd16d8b437365751dc0b0042f9e2266 - md5: b861f4c8402c7ad5e540d0619725be1e + size: 243393888 + timestamp: 1740596262894 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022618-release.conda + sha256: 6c9b74bc0972f0f515bf2dc2abd1f7acf9c77122caf06c72f21ff568b91f357b + md5: 64d7dbf1d05bf7e952f3841cac0920c4 depends: - - mblack ==25.2.0.dev2025022519 release + - mblack ==25.2.0.dev2025022618 release license: LicenseRef-Modular-Proprietary - size: 245908466 - timestamp: 1740511116226 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022519-release.conda - sha256: cde645f856d467a064c6656d0871988b0154288bc708aa52411d167dcfb87ade - md5: b8f0079777c56690823621776b602012 + size: 245985149 + timestamp: 1740596478019 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022618-release.conda + sha256: 279ac08de644ac2fef9393e66440740b7cc76f14a7d325b5156cac174e6c238f + md5: cfd8ab87ccc30f48c39825539eccd04b depends: - - mblack ==25.2.0.dev2025022519 release + - mblack ==25.2.0.dev2025022618 release license: LicenseRef-Modular-Proprietary - size: 211532835 - timestamp: 1740512176128 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022519-release.conda + size: 211567067 + timestamp: 1740597258914 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022618-release.conda noarch: python - sha256: 4a4224af9e49aea43c33e2e1cdc920c70d87ca7b3c3c4849894eb21fdf5906d5 - md5: 7eda673a2b7f381b8f5b85483ce9ec8b + sha256: f13e908580445f9f02151ebc952758e92287a5774b65efb695820653337be3c5 + md5: 8328ab556068866946546bb2d26816e9 depends: - - max-core ==25.2.0.dev2025022519 release + - max-core ==25.2.0.dev2025022618 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1380,14 +1380,14 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 120092694 - timestamp: 1740511118927 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022519-release.conda + size: 120351193 + timestamp: 1740596262894 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022618-release.conda noarch: python - sha256: b808be6fdcd44235f3fa242d50c04fc93fa22bc411c46ccec34ecd1ca0acb286 - md5: ef2e998689015e9e6af78fa8cf06aa33 + sha256: 515db1f7c8287f452cb0da29bfccb43cde4ebd0faee593e27b6be14b7d495faf + md5: dc6bdeff0967c5a0c47baf6dd27483a6 depends: - - max-core ==25.2.0.dev2025022519 release + - max-core ==25.2.0.dev2025022618 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1425,14 +1425,14 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 122665387 - timestamp: 1740511116226 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022519-release.conda + size: 122872196 + timestamp: 1740596478019 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022618-release.conda noarch: python - sha256: f7314e74d3afeb9d871ac97ed2f87eb6872b92153c4ecedffdef4cd9acf3e749 - md5: 48866c4ee9c834d20ce488fd16276d41 + sha256: a08fd92e04d61bddaad3d9a323a03c9705763b36babf38915875572593fa1d71 + md5: 555970eeb88448f26d31e5d6b99c9800 depends: - - max-core ==25.2.0.dev2025022519 release + - max-core ==25.2.0.dev2025022618 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1470,12 +1470,12 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 109490486 - timestamp: 1740512176129 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022519-release.conda + size: 109621119 + timestamp: 1740597258914 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022618-release.conda noarch: python - sha256: 0a20dced5e26aa1864ee12959235ab6bc0f9a9d23063de9e30578d29d8ec65c3 - md5: 144453ca89177b474084a3586fd9324c + sha256: e6030605141540eb398e8445b266cff5b714a2c41e27007dbac4d901481ab482 + md5: b0b2c7b234272d99f1c05b35615f104e depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -1486,20 +1486,20 @@ packages: - typing_extensions >=v4.12.2 - python license: MIT - size: 130856 - timestamp: 1740511118927 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022519-release.conda + size: 130866 + timestamp: 1740596478019 +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022618-release.conda noarch: python - sha256: 986511d2660bdea74fa8640017c36aa3c4cb567abc8d544377babe87e50f6e79 - md5: e5eff931fb439696eb4a40ba14a31192 + sha256: 01b4e6f40757bddd76685fd2c9f4abe20d89334ffbc09ffe83bb553179fe0498 + md5: 2dbd38df35c2becade229a64ca015e7c depends: - - max-core ==25.2.0.dev2025022519 release + - max-core ==25.2.0.dev2025022618 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22992 - timestamp: 1740511118927 + size: 22994 + timestamp: 1740596478019 - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda sha256: 1895f47b7d68581a6facde5cb13ab8c2764c2e53a76bd746f8f98910dc4e08fe md5: 29097e7ea634a45cc5386b95cac6568f diff --git a/examples/operators/magic.lock b/examples/operators/magic.lock index 988c160ea6..eed74e7632 100644 --- a/examples/operators/magic.lock +++ b/examples/operators/magic.lock @@ -42,11 +42,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022519-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022519-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022519-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022519-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022519-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022618-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022618-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022618-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022618-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022618-release.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-h2d0b736_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda @@ -107,11 +107,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022519-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022519-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022519-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022519-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022519-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022618-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022618-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022618-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022618-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022618-release.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-ha32ae93_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda @@ -163,11 +163,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.1-h3f77e49_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022519-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022519-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022519-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022519-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022519-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022618-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022618-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022618-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022618-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022618-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda @@ -1301,48 +1301,48 @@ packages: license_family: APACHE size: 280830 timestamp: 1736986295869 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022519-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022618-release.conda noarch: python - sha256: 7d9ce0d2a37effd00030103bfa92559a16416ab18915a91f39b06c375e0bc214 - md5: f3e2750206c3dd56cad5dd7f8e35fb78 + sha256: 9599e221c27af8899881eb571ec3043f8b6813f9c5938e65943b983f802054bb + md5: cd1814a782d4a03ca4a64a1cd788609a depends: - - max-core ==25.2.0.dev2025022519 release - - max-python ==25.2.0.dev2025022519 release - - mojo-jupyter ==25.2.0.dev2025022519 release - - mblack ==25.2.0.dev2025022519 release + - max-core ==25.2.0.dev2025022618 release + - max-python ==25.2.0.dev2025022618 release + - mojo-jupyter ==25.2.0.dev2025022618 release + - mblack ==25.2.0.dev2025022618 release license: LicenseRef-Modular-Proprietary - size: 9907 - timestamp: 1740511118927 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022519-release.conda - sha256: dad982fd77340886af9fe056597901a1bda3bb8dff52550a8062a0e00e20d290 - md5: 19a4a10120b8eff1a41c88b0db40ecbf + size: 9906 + timestamp: 1740596478019 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022618-release.conda + sha256: 1ca66cbfaaec44d3c224fe3eabda33fab5c5102dbd222ac101fab612ab959028 + md5: 1f5bc5fd3f7405031e95e4969cbc1b43 depends: - - mblack ==25.2.0.dev2025022519 release + - mblack ==25.2.0.dev2025022618 release license: LicenseRef-Modular-Proprietary - size: 243375986 - timestamp: 1740511118927 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022519-release.conda - sha256: 7bc2109b151a67013a42ef1147ff337a1cd16d8b437365751dc0b0042f9e2266 - md5: b861f4c8402c7ad5e540d0619725be1e + size: 243393888 + timestamp: 1740596262894 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022618-release.conda + sha256: 6c9b74bc0972f0f515bf2dc2abd1f7acf9c77122caf06c72f21ff568b91f357b + md5: 64d7dbf1d05bf7e952f3841cac0920c4 depends: - - mblack ==25.2.0.dev2025022519 release + - mblack ==25.2.0.dev2025022618 release license: LicenseRef-Modular-Proprietary - size: 245908466 - timestamp: 1740511116226 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022519-release.conda - sha256: cde645f856d467a064c6656d0871988b0154288bc708aa52411d167dcfb87ade - md5: b8f0079777c56690823621776b602012 + size: 245985149 + timestamp: 1740596478019 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022618-release.conda + sha256: 279ac08de644ac2fef9393e66440740b7cc76f14a7d325b5156cac174e6c238f + md5: cfd8ab87ccc30f48c39825539eccd04b depends: - - mblack ==25.2.0.dev2025022519 release + - mblack ==25.2.0.dev2025022618 release license: LicenseRef-Modular-Proprietary - size: 211532835 - timestamp: 1740512176128 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022519-release.conda + size: 211567067 + timestamp: 1740597258914 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022618-release.conda noarch: python - sha256: 4a4224af9e49aea43c33e2e1cdc920c70d87ca7b3c3c4849894eb21fdf5906d5 - md5: 7eda673a2b7f381b8f5b85483ce9ec8b + sha256: f13e908580445f9f02151ebc952758e92287a5774b65efb695820653337be3c5 + md5: 8328ab556068866946546bb2d26816e9 depends: - - max-core ==25.2.0.dev2025022519 release + - max-core ==25.2.0.dev2025022618 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1380,14 +1380,14 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 120092694 - timestamp: 1740511118927 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022519-release.conda + size: 120351193 + timestamp: 1740596262894 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022618-release.conda noarch: python - sha256: b808be6fdcd44235f3fa242d50c04fc93fa22bc411c46ccec34ecd1ca0acb286 - md5: ef2e998689015e9e6af78fa8cf06aa33 + sha256: 515db1f7c8287f452cb0da29bfccb43cde4ebd0faee593e27b6be14b7d495faf + md5: dc6bdeff0967c5a0c47baf6dd27483a6 depends: - - max-core ==25.2.0.dev2025022519 release + - max-core ==25.2.0.dev2025022618 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1425,14 +1425,14 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 122665387 - timestamp: 1740511116226 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022519-release.conda + size: 122872196 + timestamp: 1740596478019 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022618-release.conda noarch: python - sha256: f7314e74d3afeb9d871ac97ed2f87eb6872b92153c4ecedffdef4cd9acf3e749 - md5: 48866c4ee9c834d20ce488fd16276d41 + sha256: a08fd92e04d61bddaad3d9a323a03c9705763b36babf38915875572593fa1d71 + md5: 555970eeb88448f26d31e5d6b99c9800 depends: - - max-core ==25.2.0.dev2025022519 release + - max-core ==25.2.0.dev2025022618 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1470,12 +1470,12 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 109490486 - timestamp: 1740512176129 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022519-release.conda + size: 109621119 + timestamp: 1740597258914 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022618-release.conda noarch: python - sha256: 0a20dced5e26aa1864ee12959235ab6bc0f9a9d23063de9e30578d29d8ec65c3 - md5: 144453ca89177b474084a3586fd9324c + sha256: e6030605141540eb398e8445b266cff5b714a2c41e27007dbac4d901481ab482 + md5: b0b2c7b234272d99f1c05b35615f104e depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -1486,20 +1486,20 @@ packages: - typing_extensions >=v4.12.2 - python license: MIT - size: 130856 - timestamp: 1740511118927 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022519-release.conda + size: 130866 + timestamp: 1740596478019 +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022618-release.conda noarch: python - sha256: 986511d2660bdea74fa8640017c36aa3c4cb567abc8d544377babe87e50f6e79 - md5: e5eff931fb439696eb4a40ba14a31192 + sha256: 01b4e6f40757bddd76685fd2c9f4abe20d89334ffbc09ffe83bb553179fe0498 + md5: 2dbd38df35c2becade229a64ca015e7c depends: - - max-core ==25.2.0.dev2025022519 release + - max-core ==25.2.0.dev2025022618 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22992 - timestamp: 1740511118927 + size: 22994 + timestamp: 1740596478019 - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda sha256: 1895f47b7d68581a6facde5cb13ab8c2764c2e53a76bd746f8f98910dc4e08fe md5: 29097e7ea634a45cc5386b95cac6568f diff --git a/examples/testing/magic.lock b/examples/testing/magic.lock index 988c160ea6..eed74e7632 100644 --- a/examples/testing/magic.lock +++ b/examples/testing/magic.lock @@ -42,11 +42,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022519-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022519-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022519-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022519-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022519-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022618-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022618-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022618-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022618-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022618-release.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-h2d0b736_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda @@ -107,11 +107,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022519-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022519-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022519-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022519-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022519-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022618-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022618-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022618-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022618-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022618-release.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-ha32ae93_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda @@ -163,11 +163,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.1-h3f77e49_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022519-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022519-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022519-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022519-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022519-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022618-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022618-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022618-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022618-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022618-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda @@ -1301,48 +1301,48 @@ packages: license_family: APACHE size: 280830 timestamp: 1736986295869 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022519-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022618-release.conda noarch: python - sha256: 7d9ce0d2a37effd00030103bfa92559a16416ab18915a91f39b06c375e0bc214 - md5: f3e2750206c3dd56cad5dd7f8e35fb78 + sha256: 9599e221c27af8899881eb571ec3043f8b6813f9c5938e65943b983f802054bb + md5: cd1814a782d4a03ca4a64a1cd788609a depends: - - max-core ==25.2.0.dev2025022519 release - - max-python ==25.2.0.dev2025022519 release - - mojo-jupyter ==25.2.0.dev2025022519 release - - mblack ==25.2.0.dev2025022519 release + - max-core ==25.2.0.dev2025022618 release + - max-python ==25.2.0.dev2025022618 release + - mojo-jupyter ==25.2.0.dev2025022618 release + - mblack ==25.2.0.dev2025022618 release license: LicenseRef-Modular-Proprietary - size: 9907 - timestamp: 1740511118927 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022519-release.conda - sha256: dad982fd77340886af9fe056597901a1bda3bb8dff52550a8062a0e00e20d290 - md5: 19a4a10120b8eff1a41c88b0db40ecbf + size: 9906 + timestamp: 1740596478019 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022618-release.conda + sha256: 1ca66cbfaaec44d3c224fe3eabda33fab5c5102dbd222ac101fab612ab959028 + md5: 1f5bc5fd3f7405031e95e4969cbc1b43 depends: - - mblack ==25.2.0.dev2025022519 release + - mblack ==25.2.0.dev2025022618 release license: LicenseRef-Modular-Proprietary - size: 243375986 - timestamp: 1740511118927 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022519-release.conda - sha256: 7bc2109b151a67013a42ef1147ff337a1cd16d8b437365751dc0b0042f9e2266 - md5: b861f4c8402c7ad5e540d0619725be1e + size: 243393888 + timestamp: 1740596262894 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022618-release.conda + sha256: 6c9b74bc0972f0f515bf2dc2abd1f7acf9c77122caf06c72f21ff568b91f357b + md5: 64d7dbf1d05bf7e952f3841cac0920c4 depends: - - mblack ==25.2.0.dev2025022519 release + - mblack ==25.2.0.dev2025022618 release license: LicenseRef-Modular-Proprietary - size: 245908466 - timestamp: 1740511116226 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022519-release.conda - sha256: cde645f856d467a064c6656d0871988b0154288bc708aa52411d167dcfb87ade - md5: b8f0079777c56690823621776b602012 + size: 245985149 + timestamp: 1740596478019 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022618-release.conda + sha256: 279ac08de644ac2fef9393e66440740b7cc76f14a7d325b5156cac174e6c238f + md5: cfd8ab87ccc30f48c39825539eccd04b depends: - - mblack ==25.2.0.dev2025022519 release + - mblack ==25.2.0.dev2025022618 release license: LicenseRef-Modular-Proprietary - size: 211532835 - timestamp: 1740512176128 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022519-release.conda + size: 211567067 + timestamp: 1740597258914 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022618-release.conda noarch: python - sha256: 4a4224af9e49aea43c33e2e1cdc920c70d87ca7b3c3c4849894eb21fdf5906d5 - md5: 7eda673a2b7f381b8f5b85483ce9ec8b + sha256: f13e908580445f9f02151ebc952758e92287a5774b65efb695820653337be3c5 + md5: 8328ab556068866946546bb2d26816e9 depends: - - max-core ==25.2.0.dev2025022519 release + - max-core ==25.2.0.dev2025022618 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1380,14 +1380,14 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 120092694 - timestamp: 1740511118927 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022519-release.conda + size: 120351193 + timestamp: 1740596262894 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022618-release.conda noarch: python - sha256: b808be6fdcd44235f3fa242d50c04fc93fa22bc411c46ccec34ecd1ca0acb286 - md5: ef2e998689015e9e6af78fa8cf06aa33 + sha256: 515db1f7c8287f452cb0da29bfccb43cde4ebd0faee593e27b6be14b7d495faf + md5: dc6bdeff0967c5a0c47baf6dd27483a6 depends: - - max-core ==25.2.0.dev2025022519 release + - max-core ==25.2.0.dev2025022618 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1425,14 +1425,14 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 122665387 - timestamp: 1740511116226 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022519-release.conda + size: 122872196 + timestamp: 1740596478019 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022618-release.conda noarch: python - sha256: f7314e74d3afeb9d871ac97ed2f87eb6872b92153c4ecedffdef4cd9acf3e749 - md5: 48866c4ee9c834d20ce488fd16276d41 + sha256: a08fd92e04d61bddaad3d9a323a03c9705763b36babf38915875572593fa1d71 + md5: 555970eeb88448f26d31e5d6b99c9800 depends: - - max-core ==25.2.0.dev2025022519 release + - max-core ==25.2.0.dev2025022618 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1470,12 +1470,12 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 109490486 - timestamp: 1740512176129 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022519-release.conda + size: 109621119 + timestamp: 1740597258914 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022618-release.conda noarch: python - sha256: 0a20dced5e26aa1864ee12959235ab6bc0f9a9d23063de9e30578d29d8ec65c3 - md5: 144453ca89177b474084a3586fd9324c + sha256: e6030605141540eb398e8445b266cff5b714a2c41e27007dbac4d901481ab482 + md5: b0b2c7b234272d99f1c05b35615f104e depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -1486,20 +1486,20 @@ packages: - typing_extensions >=v4.12.2 - python license: MIT - size: 130856 - timestamp: 1740511118927 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022519-release.conda + size: 130866 + timestamp: 1740596478019 +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022618-release.conda noarch: python - sha256: 986511d2660bdea74fa8640017c36aa3c4cb567abc8d544377babe87e50f6e79 - md5: e5eff931fb439696eb4a40ba14a31192 + sha256: 01b4e6f40757bddd76685fd2c9f4abe20d89334ffbc09ffe83bb553179fe0498 + md5: 2dbd38df35c2becade229a64ca015e7c depends: - - max-core ==25.2.0.dev2025022519 release + - max-core ==25.2.0.dev2025022618 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22992 - timestamp: 1740511118927 + size: 22994 + timestamp: 1740596478019 - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda sha256: 1895f47b7d68581a6facde5cb13ab8c2764c2e53a76bd746f8f98910dc4e08fe md5: 29097e7ea634a45cc5386b95cac6568f diff --git a/magic.lock b/magic.lock index 143b0390a3..badcd54dd8 100644 --- a/magic.lock +++ b/magic.lock @@ -43,11 +43,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/lit-19.1.7-pyhd8ed1ab_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022519-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022519-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022519-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022519-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022519-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022618-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022618-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022618-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022618-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022618-release.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-h2d0b736_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda @@ -109,11 +109,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/lit-19.1.7-pyhd8ed1ab_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022519-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022519-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022519-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022519-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022519-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022618-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022618-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022618-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022618-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022618-release.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-ha32ae93_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda @@ -166,11 +166,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/lit-19.1.7-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022519-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022519-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022519-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022519-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022519-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022618-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022618-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022618-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022618-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022618-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda @@ -1313,48 +1313,48 @@ packages: license_family: APACHE size: 280830 timestamp: 1736986295869 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022519-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022618-release.conda noarch: python - sha256: 7d9ce0d2a37effd00030103bfa92559a16416ab18915a91f39b06c375e0bc214 - md5: f3e2750206c3dd56cad5dd7f8e35fb78 + sha256: 9599e221c27af8899881eb571ec3043f8b6813f9c5938e65943b983f802054bb + md5: cd1814a782d4a03ca4a64a1cd788609a depends: - - max-core ==25.2.0.dev2025022519 release - - max-python ==25.2.0.dev2025022519 release - - mojo-jupyter ==25.2.0.dev2025022519 release - - mblack ==25.2.0.dev2025022519 release + - max-core ==25.2.0.dev2025022618 release + - max-python ==25.2.0.dev2025022618 release + - mojo-jupyter ==25.2.0.dev2025022618 release + - mblack ==25.2.0.dev2025022618 release license: LicenseRef-Modular-Proprietary - size: 9907 - timestamp: 1740511118927 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022519-release.conda - sha256: dad982fd77340886af9fe056597901a1bda3bb8dff52550a8062a0e00e20d290 - md5: 19a4a10120b8eff1a41c88b0db40ecbf + size: 9906 + timestamp: 1740596478019 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022618-release.conda + sha256: 1ca66cbfaaec44d3c224fe3eabda33fab5c5102dbd222ac101fab612ab959028 + md5: 1f5bc5fd3f7405031e95e4969cbc1b43 depends: - - mblack ==25.2.0.dev2025022519 release + - mblack ==25.2.0.dev2025022618 release license: LicenseRef-Modular-Proprietary - size: 243375986 - timestamp: 1740511118927 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022519-release.conda - sha256: 7bc2109b151a67013a42ef1147ff337a1cd16d8b437365751dc0b0042f9e2266 - md5: b861f4c8402c7ad5e540d0619725be1e + size: 243393888 + timestamp: 1740596262894 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022618-release.conda + sha256: 6c9b74bc0972f0f515bf2dc2abd1f7acf9c77122caf06c72f21ff568b91f357b + md5: 64d7dbf1d05bf7e952f3841cac0920c4 depends: - - mblack ==25.2.0.dev2025022519 release + - mblack ==25.2.0.dev2025022618 release license: LicenseRef-Modular-Proprietary - size: 245908466 - timestamp: 1740511116226 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022519-release.conda - sha256: cde645f856d467a064c6656d0871988b0154288bc708aa52411d167dcfb87ade - md5: b8f0079777c56690823621776b602012 + size: 245985149 + timestamp: 1740596478019 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022618-release.conda + sha256: 279ac08de644ac2fef9393e66440740b7cc76f14a7d325b5156cac174e6c238f + md5: cfd8ab87ccc30f48c39825539eccd04b depends: - - mblack ==25.2.0.dev2025022519 release + - mblack ==25.2.0.dev2025022618 release license: LicenseRef-Modular-Proprietary - size: 211532835 - timestamp: 1740512176128 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022519-release.conda + size: 211567067 + timestamp: 1740597258914 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022618-release.conda noarch: python - sha256: 4a4224af9e49aea43c33e2e1cdc920c70d87ca7b3c3c4849894eb21fdf5906d5 - md5: 7eda673a2b7f381b8f5b85483ce9ec8b + sha256: f13e908580445f9f02151ebc952758e92287a5774b65efb695820653337be3c5 + md5: 8328ab556068866946546bb2d26816e9 depends: - - max-core ==25.2.0.dev2025022519 release + - max-core ==25.2.0.dev2025022618 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1392,14 +1392,14 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 120092694 - timestamp: 1740511118927 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022519-release.conda + size: 120351193 + timestamp: 1740596262894 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022618-release.conda noarch: python - sha256: b808be6fdcd44235f3fa242d50c04fc93fa22bc411c46ccec34ecd1ca0acb286 - md5: ef2e998689015e9e6af78fa8cf06aa33 + sha256: 515db1f7c8287f452cb0da29bfccb43cde4ebd0faee593e27b6be14b7d495faf + md5: dc6bdeff0967c5a0c47baf6dd27483a6 depends: - - max-core ==25.2.0.dev2025022519 release + - max-core ==25.2.0.dev2025022618 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1437,14 +1437,14 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 122665387 - timestamp: 1740511116226 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022519-release.conda + size: 122872196 + timestamp: 1740596478019 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022618-release.conda noarch: python - sha256: f7314e74d3afeb9d871ac97ed2f87eb6872b92153c4ecedffdef4cd9acf3e749 - md5: 48866c4ee9c834d20ce488fd16276d41 + sha256: a08fd92e04d61bddaad3d9a323a03c9705763b36babf38915875572593fa1d71 + md5: 555970eeb88448f26d31e5d6b99c9800 depends: - - max-core ==25.2.0.dev2025022519 release + - max-core ==25.2.0.dev2025022618 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1482,12 +1482,12 @@ packages: - uvloop >=0.21.0 - xgrammar >=0.1.11 license: LicenseRef-Modular-Proprietary - size: 109490486 - timestamp: 1740512176129 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022519-release.conda + size: 109621119 + timestamp: 1740597258914 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022618-release.conda noarch: python - sha256: 0a20dced5e26aa1864ee12959235ab6bc0f9a9d23063de9e30578d29d8ec65c3 - md5: 144453ca89177b474084a3586fd9324c + sha256: e6030605141540eb398e8445b266cff5b714a2c41e27007dbac4d901481ab482 + md5: b0b2c7b234272d99f1c05b35615f104e depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -1498,20 +1498,20 @@ packages: - typing_extensions >=v4.12.2 - python license: MIT - size: 130856 - timestamp: 1740511118927 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022519-release.conda + size: 130866 + timestamp: 1740596478019 +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022618-release.conda noarch: python - sha256: 986511d2660bdea74fa8640017c36aa3c4cb567abc8d544377babe87e50f6e79 - md5: e5eff931fb439696eb4a40ba14a31192 + sha256: 01b4e6f40757bddd76685fd2c9f4abe20d89334ffbc09ffe83bb553179fe0498 + md5: 2dbd38df35c2becade229a64ca015e7c depends: - - max-core ==25.2.0.dev2025022519 release + - max-core ==25.2.0.dev2025022618 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22992 - timestamp: 1740511118927 + size: 22994 + timestamp: 1740596478019 - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda sha256: 1895f47b7d68581a6facde5cb13ab8c2764c2e53a76bd746f8f98910dc4e08fe md5: 29097e7ea634a45cc5386b95cac6568f From 1912ff77bbad0fe45dec0fcdddf6b323da620ad2 Mon Sep 17 00:00:00 2001 From: modularbot Date: Thu, 27 Feb 2025 15:28:05 +0000 Subject: [PATCH 465/509] Update lockfiles to point to latest nightly version: 25.2.0.dev2025022713 --- examples/life/magic.lock | 154 +++++++++++++++++----------------- examples/magic.lock | 154 +++++++++++++++++----------------- examples/operators/magic.lock | 154 +++++++++++++++++----------------- examples/testing/magic.lock | 154 +++++++++++++++++----------------- magic.lock | 154 +++++++++++++++++----------------- 5 files changed, 385 insertions(+), 385 deletions(-) diff --git a/examples/life/magic.lock b/examples/life/magic.lock index 82ebae50a4..cf2dfb127d 100644 --- a/examples/life/magic.lock +++ b/examples/life/magic.lock @@ -103,11 +103,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.6-h8d12d68_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.10.0-h5888daf_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022618-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022618-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022618-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022618-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022618-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022713-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022713-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022713-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022713-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022713-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/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda @@ -258,11 +258,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.6-h2e0c361_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.10.0-h5ad3122_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022618-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022618-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022618-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022618-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022618-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022713-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022713-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022713-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022713-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022713-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/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-ha32ae93_3.conda @@ -384,11 +384,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.5.0-h2471fea_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022618-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022618-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022618-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022618-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022618-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022713-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022713-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022713-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022713-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022713-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/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda @@ -3498,48 +3498,48 @@ packages: license_family: BSD size: 184953 timestamp: 1733740984533 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022618-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022713-release.conda noarch: python - sha256: 9599e221c27af8899881eb571ec3043f8b6813f9c5938e65943b983f802054bb - md5: cd1814a782d4a03ca4a64a1cd788609a + sha256: d2b6c247e736b34c8a6cf0452846a2162b9aa6a3c3fd5d029f2b2e0a7be571d3 + md5: 4db470c401468b43b673548c91a5e94e depends: - - max-core ==25.2.0.dev2025022618 release - - max-python ==25.2.0.dev2025022618 release - - mojo-jupyter ==25.2.0.dev2025022618 release - - mblack ==25.2.0.dev2025022618 release + - max-core ==25.2.0.dev2025022713 release + - max-python ==25.2.0.dev2025022713 release + - mojo-jupyter ==25.2.0.dev2025022713 release + - mblack ==25.2.0.dev2025022713 release license: LicenseRef-Modular-Proprietary - size: 9906 - timestamp: 1740596478019 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022618-release.conda - sha256: 1ca66cbfaaec44d3c224fe3eabda33fab5c5102dbd222ac101fab612ab959028 - md5: 1f5bc5fd3f7405031e95e4969cbc1b43 + size: 9908 + timestamp: 1740664199928 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022713-release.conda + sha256: 3c0bf4c8f2a6b5400bcbd64032d2c59b9dfcc5ad50432a8a9e1e3d024d3400f5 + md5: 9751487ef2e786e9dcaff28f0628ba03 depends: - - mblack ==25.2.0.dev2025022618 release + - mblack ==25.2.0.dev2025022713 release license: LicenseRef-Modular-Proprietary - size: 243393888 - timestamp: 1740596262894 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022618-release.conda - sha256: 6c9b74bc0972f0f515bf2dc2abd1f7acf9c77122caf06c72f21ff568b91f357b - md5: 64d7dbf1d05bf7e952f3841cac0920c4 + size: 249813859 + timestamp: 1740664231187 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022713-release.conda + sha256: bea03a1b06c8554504542794822a345735e7847a914af4e9766cb275ab5b3238 + md5: 04b52dac259a6268bc51a78da0aa9f1d depends: - - mblack ==25.2.0.dev2025022618 release + - mblack ==25.2.0.dev2025022713 release license: LicenseRef-Modular-Proprietary - size: 245985149 - timestamp: 1740596478019 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022618-release.conda - sha256: 279ac08de644ac2fef9393e66440740b7cc76f14a7d325b5156cac174e6c238f - md5: cfd8ab87ccc30f48c39825539eccd04b + size: 252115018 + timestamp: 1740664199928 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022713-release.conda + sha256: eb28bb19ea43f9a63b8f8ca88751c932263ab2134fd651b5e82cd729101b18cb + md5: 9f3a63249667b9e29ba93d7c21e1d679 depends: - - mblack ==25.2.0.dev2025022618 release + - mblack ==25.2.0.dev2025022713 release license: LicenseRef-Modular-Proprietary - size: 211567067 - timestamp: 1740597258914 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022618-release.conda + size: 217216039 + timestamp: 1740665267852 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022713-release.conda noarch: python - sha256: f13e908580445f9f02151ebc952758e92287a5774b65efb695820653337be3c5 - md5: 8328ab556068866946546bb2d26816e9 + sha256: b555a98a5162485a66cb852674d19b8c65e139ff70ec92451f2130dea741263a + md5: cdaed74f4e9fefcc0bc928598740815c depends: - - max-core ==25.2.0.dev2025022618 release + - max-core ==25.2.0.dev2025022713 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -3554,7 +3554,7 @@ packages: - nvitop >=1.4.1 - opentelemetry-api >=1.29.0 - opentelemetry-exporter-otlp-proto-http >=1.27.0 - - opentelemetry-exporter-prometheus >=0.48b0 + - opentelemetry-exporter-prometheus <1.0.0 - opentelemetry-sdk >=1.29.0,<2.0 - pillow >=10.3.0 - prometheus_client >=0.21.0 @@ -3575,16 +3575,16 @@ packages: - transformers >=4.40.1 - uvicorn >=0.34.0 - uvloop >=0.21.0 - - xgrammar >=0.1.11 + - xgrammar ==0.1.11 license: LicenseRef-Modular-Proprietary - size: 120351193 - timestamp: 1740596262894 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022618-release.conda + size: 123534013 + timestamp: 1740664231187 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022713-release.conda noarch: python - sha256: 515db1f7c8287f452cb0da29bfccb43cde4ebd0faee593e27b6be14b7d495faf - md5: dc6bdeff0967c5a0c47baf6dd27483a6 + sha256: 71aeaf13405bb7ba613f5336c5e03fbbd158adbfc1a5ddab1bf0b7f248535f15 + md5: 903350b3c6380505cb1cc59556cdcf68 depends: - - max-core ==25.2.0.dev2025022618 release + - max-core ==25.2.0.dev2025022713 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -3599,7 +3599,7 @@ packages: - nvitop >=1.4.1 - opentelemetry-api >=1.29.0 - opentelemetry-exporter-otlp-proto-http >=1.27.0 - - opentelemetry-exporter-prometheus >=0.48b0 + - opentelemetry-exporter-prometheus <1.0.0 - opentelemetry-sdk >=1.29.0,<2.0 - pillow >=10.3.0 - prometheus_client >=0.21.0 @@ -3620,16 +3620,16 @@ packages: - transformers >=4.40.1 - uvicorn >=0.34.0 - uvloop >=0.21.0 - - xgrammar >=0.1.11 + - xgrammar ==0.1.11 license: LicenseRef-Modular-Proprietary - size: 122872196 - timestamp: 1740596478019 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022618-release.conda + size: 125927777 + timestamp: 1740664199928 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022713-release.conda noarch: python - sha256: a08fd92e04d61bddaad3d9a323a03c9705763b36babf38915875572593fa1d71 - md5: 555970eeb88448f26d31e5d6b99c9800 + sha256: 829c387dda5a2a52baca2299c67ba511f2039beeec4c2f6e3b16990077cbd0b9 + md5: 4f10a16f087934ec4fd2e87b8326c4d5 depends: - - max-core ==25.2.0.dev2025022618 release + - max-core ==25.2.0.dev2025022713 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -3644,7 +3644,7 @@ packages: - nvitop >=1.4.1 - opentelemetry-api >=1.29.0 - opentelemetry-exporter-otlp-proto-http >=1.27.0 - - opentelemetry-exporter-prometheus >=0.48b0 + - opentelemetry-exporter-prometheus <1.0.0 - opentelemetry-sdk >=1.29.0,<2.0 - pillow >=10.3.0 - prometheus_client >=0.21.0 @@ -3665,14 +3665,14 @@ packages: - transformers >=4.40.1 - uvicorn >=0.34.0 - uvloop >=0.21.0 - - xgrammar >=0.1.11 + - xgrammar ==0.1.11 license: LicenseRef-Modular-Proprietary - size: 109621119 - timestamp: 1740597258914 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022618-release.conda + size: 112550091 + timestamp: 1740665267852 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022713-release.conda noarch: python - sha256: e6030605141540eb398e8445b266cff5b714a2c41e27007dbac4d901481ab482 - md5: b0b2c7b234272d99f1c05b35615f104e + sha256: baac376bd7df6e8c4776fc934dd3c7d2566a31908e514ea02180ba638430b379 + md5: 5906489ff8ca5341b676d9001a246ace depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -3683,20 +3683,20 @@ packages: - typing_extensions >=v4.12.2 - python license: MIT - size: 130866 - timestamp: 1740596478019 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022618-release.conda + size: 130846 + timestamp: 1740664199927 +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022713-release.conda noarch: python - sha256: 01b4e6f40757bddd76685fd2c9f4abe20d89334ffbc09ffe83bb553179fe0498 - md5: 2dbd38df35c2becade229a64ca015e7c + sha256: ff78ef2596148c1ae0819f53e4ae3266e0003a836bdacba9efee6d4335eef386 + md5: 95972dc5cb3b79fcb9c4d47591cd4c7e depends: - - max-core ==25.2.0.dev2025022618 release + - max-core ==25.2.0.dev2025022713 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22994 - timestamp: 1740596478019 + size: 22991 + timestamp: 1740664199928 - conda: https://conda.anaconda.org/conda-forge/linux-64/mpg123-1.32.9-hc50e24c_0.conda sha256: 39c4700fb3fbe403a77d8cc27352fa72ba744db487559d5d44bf8411bb4ea200 md5: c7f302fd11eeb0987a6a5e1f3aed6a21 diff --git a/examples/magic.lock b/examples/magic.lock index 1cffa16323..c75aae8f6b 100644 --- a/examples/magic.lock +++ b/examples/magic.lock @@ -42,11 +42,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022618-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022618-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022618-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022618-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022618-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022713-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022713-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022713-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022713-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022713-release.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-h2d0b736_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py311h64a7726_0.conda @@ -107,11 +107,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022618-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022618-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022618-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022618-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022618-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022713-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022713-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022713-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022713-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022713-release.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-ha32ae93_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py311h69ead2a_0.conda @@ -163,11 +163,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.1-h3f77e49_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022618-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022618-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022618-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022618-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022618-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022713-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022713-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022713-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022713-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022713-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py311h7125741_0.conda @@ -1301,48 +1301,48 @@ packages: license_family: APACHE size: 280830 timestamp: 1736986295869 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022618-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022713-release.conda noarch: python - sha256: 9599e221c27af8899881eb571ec3043f8b6813f9c5938e65943b983f802054bb - md5: cd1814a782d4a03ca4a64a1cd788609a + sha256: d2b6c247e736b34c8a6cf0452846a2162b9aa6a3c3fd5d029f2b2e0a7be571d3 + md5: 4db470c401468b43b673548c91a5e94e depends: - - max-core ==25.2.0.dev2025022618 release - - max-python ==25.2.0.dev2025022618 release - - mojo-jupyter ==25.2.0.dev2025022618 release - - mblack ==25.2.0.dev2025022618 release + - max-core ==25.2.0.dev2025022713 release + - max-python ==25.2.0.dev2025022713 release + - mojo-jupyter ==25.2.0.dev2025022713 release + - mblack ==25.2.0.dev2025022713 release license: LicenseRef-Modular-Proprietary - size: 9906 - timestamp: 1740596478019 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022618-release.conda - sha256: 1ca66cbfaaec44d3c224fe3eabda33fab5c5102dbd222ac101fab612ab959028 - md5: 1f5bc5fd3f7405031e95e4969cbc1b43 + size: 9908 + timestamp: 1740664199928 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022713-release.conda + sha256: 3c0bf4c8f2a6b5400bcbd64032d2c59b9dfcc5ad50432a8a9e1e3d024d3400f5 + md5: 9751487ef2e786e9dcaff28f0628ba03 depends: - - mblack ==25.2.0.dev2025022618 release + - mblack ==25.2.0.dev2025022713 release license: LicenseRef-Modular-Proprietary - size: 243393888 - timestamp: 1740596262894 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022618-release.conda - sha256: 6c9b74bc0972f0f515bf2dc2abd1f7acf9c77122caf06c72f21ff568b91f357b - md5: 64d7dbf1d05bf7e952f3841cac0920c4 + size: 249813859 + timestamp: 1740664231187 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022713-release.conda + sha256: bea03a1b06c8554504542794822a345735e7847a914af4e9766cb275ab5b3238 + md5: 04b52dac259a6268bc51a78da0aa9f1d depends: - - mblack ==25.2.0.dev2025022618 release + - mblack ==25.2.0.dev2025022713 release license: LicenseRef-Modular-Proprietary - size: 245985149 - timestamp: 1740596478019 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022618-release.conda - sha256: 279ac08de644ac2fef9393e66440740b7cc76f14a7d325b5156cac174e6c238f - md5: cfd8ab87ccc30f48c39825539eccd04b + size: 252115018 + timestamp: 1740664199928 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022713-release.conda + sha256: eb28bb19ea43f9a63b8f8ca88751c932263ab2134fd651b5e82cd729101b18cb + md5: 9f3a63249667b9e29ba93d7c21e1d679 depends: - - mblack ==25.2.0.dev2025022618 release + - mblack ==25.2.0.dev2025022713 release license: LicenseRef-Modular-Proprietary - size: 211567067 - timestamp: 1740597258914 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022618-release.conda + size: 217216039 + timestamp: 1740665267852 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022713-release.conda noarch: python - sha256: f13e908580445f9f02151ebc952758e92287a5774b65efb695820653337be3c5 - md5: 8328ab556068866946546bb2d26816e9 + sha256: b555a98a5162485a66cb852674d19b8c65e139ff70ec92451f2130dea741263a + md5: cdaed74f4e9fefcc0bc928598740815c depends: - - max-core ==25.2.0.dev2025022618 release + - max-core ==25.2.0.dev2025022713 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1357,7 +1357,7 @@ packages: - nvitop >=1.4.1 - opentelemetry-api >=1.29.0 - opentelemetry-exporter-otlp-proto-http >=1.27.0 - - opentelemetry-exporter-prometheus >=0.48b0 + - opentelemetry-exporter-prometheus <1.0.0 - opentelemetry-sdk >=1.29.0,<2.0 - pillow >=10.3.0 - prometheus_client >=0.21.0 @@ -1378,16 +1378,16 @@ packages: - transformers >=4.40.1 - uvicorn >=0.34.0 - uvloop >=0.21.0 - - xgrammar >=0.1.11 + - xgrammar ==0.1.11 license: LicenseRef-Modular-Proprietary - size: 120351193 - timestamp: 1740596262894 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022618-release.conda + size: 123534013 + timestamp: 1740664231187 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022713-release.conda noarch: python - sha256: 515db1f7c8287f452cb0da29bfccb43cde4ebd0faee593e27b6be14b7d495faf - md5: dc6bdeff0967c5a0c47baf6dd27483a6 + sha256: 71aeaf13405bb7ba613f5336c5e03fbbd158adbfc1a5ddab1bf0b7f248535f15 + md5: 903350b3c6380505cb1cc59556cdcf68 depends: - - max-core ==25.2.0.dev2025022618 release + - max-core ==25.2.0.dev2025022713 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1402,7 +1402,7 @@ packages: - nvitop >=1.4.1 - opentelemetry-api >=1.29.0 - opentelemetry-exporter-otlp-proto-http >=1.27.0 - - opentelemetry-exporter-prometheus >=0.48b0 + - opentelemetry-exporter-prometheus <1.0.0 - opentelemetry-sdk >=1.29.0,<2.0 - pillow >=10.3.0 - prometheus_client >=0.21.0 @@ -1423,16 +1423,16 @@ packages: - transformers >=4.40.1 - uvicorn >=0.34.0 - uvloop >=0.21.0 - - xgrammar >=0.1.11 + - xgrammar ==0.1.11 license: LicenseRef-Modular-Proprietary - size: 122872196 - timestamp: 1740596478019 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022618-release.conda + size: 125927777 + timestamp: 1740664199928 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022713-release.conda noarch: python - sha256: a08fd92e04d61bddaad3d9a323a03c9705763b36babf38915875572593fa1d71 - md5: 555970eeb88448f26d31e5d6b99c9800 + sha256: 829c387dda5a2a52baca2299c67ba511f2039beeec4c2f6e3b16990077cbd0b9 + md5: 4f10a16f087934ec4fd2e87b8326c4d5 depends: - - max-core ==25.2.0.dev2025022618 release + - max-core ==25.2.0.dev2025022713 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1447,7 +1447,7 @@ packages: - nvitop >=1.4.1 - opentelemetry-api >=1.29.0 - opentelemetry-exporter-otlp-proto-http >=1.27.0 - - opentelemetry-exporter-prometheus >=0.48b0 + - opentelemetry-exporter-prometheus <1.0.0 - opentelemetry-sdk >=1.29.0,<2.0 - pillow >=10.3.0 - prometheus_client >=0.21.0 @@ -1468,14 +1468,14 @@ packages: - transformers >=4.40.1 - uvicorn >=0.34.0 - uvloop >=0.21.0 - - xgrammar >=0.1.11 + - xgrammar ==0.1.11 license: LicenseRef-Modular-Proprietary - size: 109621119 - timestamp: 1740597258914 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022618-release.conda + size: 112550091 + timestamp: 1740665267852 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022713-release.conda noarch: python - sha256: e6030605141540eb398e8445b266cff5b714a2c41e27007dbac4d901481ab482 - md5: b0b2c7b234272d99f1c05b35615f104e + sha256: baac376bd7df6e8c4776fc934dd3c7d2566a31908e514ea02180ba638430b379 + md5: 5906489ff8ca5341b676d9001a246ace depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -1486,20 +1486,20 @@ packages: - typing_extensions >=v4.12.2 - python license: MIT - size: 130866 - timestamp: 1740596478019 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022618-release.conda + size: 130846 + timestamp: 1740664199927 +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022713-release.conda noarch: python - sha256: 01b4e6f40757bddd76685fd2c9f4abe20d89334ffbc09ffe83bb553179fe0498 - md5: 2dbd38df35c2becade229a64ca015e7c + sha256: ff78ef2596148c1ae0819f53e4ae3266e0003a836bdacba9efee6d4335eef386 + md5: 95972dc5cb3b79fcb9c4d47591cd4c7e depends: - - max-core ==25.2.0.dev2025022618 release + - max-core ==25.2.0.dev2025022713 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22994 - timestamp: 1740596478019 + size: 22991 + timestamp: 1740664199928 - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda sha256: 1895f47b7d68581a6facde5cb13ab8c2764c2e53a76bd746f8f98910dc4e08fe md5: 29097e7ea634a45cc5386b95cac6568f diff --git a/examples/operators/magic.lock b/examples/operators/magic.lock index eed74e7632..5a090396b9 100644 --- a/examples/operators/magic.lock +++ b/examples/operators/magic.lock @@ -42,11 +42,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022618-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022618-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022618-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022618-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022618-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022713-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022713-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022713-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022713-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022713-release.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-h2d0b736_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda @@ -107,11 +107,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022618-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022618-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022618-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022618-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022618-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022713-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022713-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022713-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022713-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022713-release.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-ha32ae93_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda @@ -163,11 +163,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.1-h3f77e49_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022618-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022618-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022618-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022618-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022618-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022713-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022713-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022713-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022713-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022713-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda @@ -1301,48 +1301,48 @@ packages: license_family: APACHE size: 280830 timestamp: 1736986295869 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022618-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022713-release.conda noarch: python - sha256: 9599e221c27af8899881eb571ec3043f8b6813f9c5938e65943b983f802054bb - md5: cd1814a782d4a03ca4a64a1cd788609a + sha256: d2b6c247e736b34c8a6cf0452846a2162b9aa6a3c3fd5d029f2b2e0a7be571d3 + md5: 4db470c401468b43b673548c91a5e94e depends: - - max-core ==25.2.0.dev2025022618 release - - max-python ==25.2.0.dev2025022618 release - - mojo-jupyter ==25.2.0.dev2025022618 release - - mblack ==25.2.0.dev2025022618 release + - max-core ==25.2.0.dev2025022713 release + - max-python ==25.2.0.dev2025022713 release + - mojo-jupyter ==25.2.0.dev2025022713 release + - mblack ==25.2.0.dev2025022713 release license: LicenseRef-Modular-Proprietary - size: 9906 - timestamp: 1740596478019 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022618-release.conda - sha256: 1ca66cbfaaec44d3c224fe3eabda33fab5c5102dbd222ac101fab612ab959028 - md5: 1f5bc5fd3f7405031e95e4969cbc1b43 + size: 9908 + timestamp: 1740664199928 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022713-release.conda + sha256: 3c0bf4c8f2a6b5400bcbd64032d2c59b9dfcc5ad50432a8a9e1e3d024d3400f5 + md5: 9751487ef2e786e9dcaff28f0628ba03 depends: - - mblack ==25.2.0.dev2025022618 release + - mblack ==25.2.0.dev2025022713 release license: LicenseRef-Modular-Proprietary - size: 243393888 - timestamp: 1740596262894 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022618-release.conda - sha256: 6c9b74bc0972f0f515bf2dc2abd1f7acf9c77122caf06c72f21ff568b91f357b - md5: 64d7dbf1d05bf7e952f3841cac0920c4 + size: 249813859 + timestamp: 1740664231187 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022713-release.conda + sha256: bea03a1b06c8554504542794822a345735e7847a914af4e9766cb275ab5b3238 + md5: 04b52dac259a6268bc51a78da0aa9f1d depends: - - mblack ==25.2.0.dev2025022618 release + - mblack ==25.2.0.dev2025022713 release license: LicenseRef-Modular-Proprietary - size: 245985149 - timestamp: 1740596478019 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022618-release.conda - sha256: 279ac08de644ac2fef9393e66440740b7cc76f14a7d325b5156cac174e6c238f - md5: cfd8ab87ccc30f48c39825539eccd04b + size: 252115018 + timestamp: 1740664199928 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022713-release.conda + sha256: eb28bb19ea43f9a63b8f8ca88751c932263ab2134fd651b5e82cd729101b18cb + md5: 9f3a63249667b9e29ba93d7c21e1d679 depends: - - mblack ==25.2.0.dev2025022618 release + - mblack ==25.2.0.dev2025022713 release license: LicenseRef-Modular-Proprietary - size: 211567067 - timestamp: 1740597258914 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022618-release.conda + size: 217216039 + timestamp: 1740665267852 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022713-release.conda noarch: python - sha256: f13e908580445f9f02151ebc952758e92287a5774b65efb695820653337be3c5 - md5: 8328ab556068866946546bb2d26816e9 + sha256: b555a98a5162485a66cb852674d19b8c65e139ff70ec92451f2130dea741263a + md5: cdaed74f4e9fefcc0bc928598740815c depends: - - max-core ==25.2.0.dev2025022618 release + - max-core ==25.2.0.dev2025022713 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1357,7 +1357,7 @@ packages: - nvitop >=1.4.1 - opentelemetry-api >=1.29.0 - opentelemetry-exporter-otlp-proto-http >=1.27.0 - - opentelemetry-exporter-prometheus >=0.48b0 + - opentelemetry-exporter-prometheus <1.0.0 - opentelemetry-sdk >=1.29.0,<2.0 - pillow >=10.3.0 - prometheus_client >=0.21.0 @@ -1378,16 +1378,16 @@ packages: - transformers >=4.40.1 - uvicorn >=0.34.0 - uvloop >=0.21.0 - - xgrammar >=0.1.11 + - xgrammar ==0.1.11 license: LicenseRef-Modular-Proprietary - size: 120351193 - timestamp: 1740596262894 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022618-release.conda + size: 123534013 + timestamp: 1740664231187 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022713-release.conda noarch: python - sha256: 515db1f7c8287f452cb0da29bfccb43cde4ebd0faee593e27b6be14b7d495faf - md5: dc6bdeff0967c5a0c47baf6dd27483a6 + sha256: 71aeaf13405bb7ba613f5336c5e03fbbd158adbfc1a5ddab1bf0b7f248535f15 + md5: 903350b3c6380505cb1cc59556cdcf68 depends: - - max-core ==25.2.0.dev2025022618 release + - max-core ==25.2.0.dev2025022713 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1402,7 +1402,7 @@ packages: - nvitop >=1.4.1 - opentelemetry-api >=1.29.0 - opentelemetry-exporter-otlp-proto-http >=1.27.0 - - opentelemetry-exporter-prometheus >=0.48b0 + - opentelemetry-exporter-prometheus <1.0.0 - opentelemetry-sdk >=1.29.0,<2.0 - pillow >=10.3.0 - prometheus_client >=0.21.0 @@ -1423,16 +1423,16 @@ packages: - transformers >=4.40.1 - uvicorn >=0.34.0 - uvloop >=0.21.0 - - xgrammar >=0.1.11 + - xgrammar ==0.1.11 license: LicenseRef-Modular-Proprietary - size: 122872196 - timestamp: 1740596478019 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022618-release.conda + size: 125927777 + timestamp: 1740664199928 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022713-release.conda noarch: python - sha256: a08fd92e04d61bddaad3d9a323a03c9705763b36babf38915875572593fa1d71 - md5: 555970eeb88448f26d31e5d6b99c9800 + sha256: 829c387dda5a2a52baca2299c67ba511f2039beeec4c2f6e3b16990077cbd0b9 + md5: 4f10a16f087934ec4fd2e87b8326c4d5 depends: - - max-core ==25.2.0.dev2025022618 release + - max-core ==25.2.0.dev2025022713 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1447,7 +1447,7 @@ packages: - nvitop >=1.4.1 - opentelemetry-api >=1.29.0 - opentelemetry-exporter-otlp-proto-http >=1.27.0 - - opentelemetry-exporter-prometheus >=0.48b0 + - opentelemetry-exporter-prometheus <1.0.0 - opentelemetry-sdk >=1.29.0,<2.0 - pillow >=10.3.0 - prometheus_client >=0.21.0 @@ -1468,14 +1468,14 @@ packages: - transformers >=4.40.1 - uvicorn >=0.34.0 - uvloop >=0.21.0 - - xgrammar >=0.1.11 + - xgrammar ==0.1.11 license: LicenseRef-Modular-Proprietary - size: 109621119 - timestamp: 1740597258914 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022618-release.conda + size: 112550091 + timestamp: 1740665267852 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022713-release.conda noarch: python - sha256: e6030605141540eb398e8445b266cff5b714a2c41e27007dbac4d901481ab482 - md5: b0b2c7b234272d99f1c05b35615f104e + sha256: baac376bd7df6e8c4776fc934dd3c7d2566a31908e514ea02180ba638430b379 + md5: 5906489ff8ca5341b676d9001a246ace depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -1486,20 +1486,20 @@ packages: - typing_extensions >=v4.12.2 - python license: MIT - size: 130866 - timestamp: 1740596478019 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022618-release.conda + size: 130846 + timestamp: 1740664199927 +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022713-release.conda noarch: python - sha256: 01b4e6f40757bddd76685fd2c9f4abe20d89334ffbc09ffe83bb553179fe0498 - md5: 2dbd38df35c2becade229a64ca015e7c + sha256: ff78ef2596148c1ae0819f53e4ae3266e0003a836bdacba9efee6d4335eef386 + md5: 95972dc5cb3b79fcb9c4d47591cd4c7e depends: - - max-core ==25.2.0.dev2025022618 release + - max-core ==25.2.0.dev2025022713 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22994 - timestamp: 1740596478019 + size: 22991 + timestamp: 1740664199928 - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda sha256: 1895f47b7d68581a6facde5cb13ab8c2764c2e53a76bd746f8f98910dc4e08fe md5: 29097e7ea634a45cc5386b95cac6568f diff --git a/examples/testing/magic.lock b/examples/testing/magic.lock index eed74e7632..5a090396b9 100644 --- a/examples/testing/magic.lock +++ b/examples/testing/magic.lock @@ -42,11 +42,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022618-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022618-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022618-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022618-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022618-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022713-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022713-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022713-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022713-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022713-release.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-h2d0b736_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda @@ -107,11 +107,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022618-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022618-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022618-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022618-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022618-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022713-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022713-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022713-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022713-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022713-release.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-ha32ae93_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda @@ -163,11 +163,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.1-h3f77e49_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022618-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022618-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022618-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022618-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022618-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022713-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022713-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022713-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022713-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022713-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda @@ -1301,48 +1301,48 @@ packages: license_family: APACHE size: 280830 timestamp: 1736986295869 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022618-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022713-release.conda noarch: python - sha256: 9599e221c27af8899881eb571ec3043f8b6813f9c5938e65943b983f802054bb - md5: cd1814a782d4a03ca4a64a1cd788609a + sha256: d2b6c247e736b34c8a6cf0452846a2162b9aa6a3c3fd5d029f2b2e0a7be571d3 + md5: 4db470c401468b43b673548c91a5e94e depends: - - max-core ==25.2.0.dev2025022618 release - - max-python ==25.2.0.dev2025022618 release - - mojo-jupyter ==25.2.0.dev2025022618 release - - mblack ==25.2.0.dev2025022618 release + - max-core ==25.2.0.dev2025022713 release + - max-python ==25.2.0.dev2025022713 release + - mojo-jupyter ==25.2.0.dev2025022713 release + - mblack ==25.2.0.dev2025022713 release license: LicenseRef-Modular-Proprietary - size: 9906 - timestamp: 1740596478019 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022618-release.conda - sha256: 1ca66cbfaaec44d3c224fe3eabda33fab5c5102dbd222ac101fab612ab959028 - md5: 1f5bc5fd3f7405031e95e4969cbc1b43 + size: 9908 + timestamp: 1740664199928 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022713-release.conda + sha256: 3c0bf4c8f2a6b5400bcbd64032d2c59b9dfcc5ad50432a8a9e1e3d024d3400f5 + md5: 9751487ef2e786e9dcaff28f0628ba03 depends: - - mblack ==25.2.0.dev2025022618 release + - mblack ==25.2.0.dev2025022713 release license: LicenseRef-Modular-Proprietary - size: 243393888 - timestamp: 1740596262894 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022618-release.conda - sha256: 6c9b74bc0972f0f515bf2dc2abd1f7acf9c77122caf06c72f21ff568b91f357b - md5: 64d7dbf1d05bf7e952f3841cac0920c4 + size: 249813859 + timestamp: 1740664231187 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022713-release.conda + sha256: bea03a1b06c8554504542794822a345735e7847a914af4e9766cb275ab5b3238 + md5: 04b52dac259a6268bc51a78da0aa9f1d depends: - - mblack ==25.2.0.dev2025022618 release + - mblack ==25.2.0.dev2025022713 release license: LicenseRef-Modular-Proprietary - size: 245985149 - timestamp: 1740596478019 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022618-release.conda - sha256: 279ac08de644ac2fef9393e66440740b7cc76f14a7d325b5156cac174e6c238f - md5: cfd8ab87ccc30f48c39825539eccd04b + size: 252115018 + timestamp: 1740664199928 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022713-release.conda + sha256: eb28bb19ea43f9a63b8f8ca88751c932263ab2134fd651b5e82cd729101b18cb + md5: 9f3a63249667b9e29ba93d7c21e1d679 depends: - - mblack ==25.2.0.dev2025022618 release + - mblack ==25.2.0.dev2025022713 release license: LicenseRef-Modular-Proprietary - size: 211567067 - timestamp: 1740597258914 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022618-release.conda + size: 217216039 + timestamp: 1740665267852 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022713-release.conda noarch: python - sha256: f13e908580445f9f02151ebc952758e92287a5774b65efb695820653337be3c5 - md5: 8328ab556068866946546bb2d26816e9 + sha256: b555a98a5162485a66cb852674d19b8c65e139ff70ec92451f2130dea741263a + md5: cdaed74f4e9fefcc0bc928598740815c depends: - - max-core ==25.2.0.dev2025022618 release + - max-core ==25.2.0.dev2025022713 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1357,7 +1357,7 @@ packages: - nvitop >=1.4.1 - opentelemetry-api >=1.29.0 - opentelemetry-exporter-otlp-proto-http >=1.27.0 - - opentelemetry-exporter-prometheus >=0.48b0 + - opentelemetry-exporter-prometheus <1.0.0 - opentelemetry-sdk >=1.29.0,<2.0 - pillow >=10.3.0 - prometheus_client >=0.21.0 @@ -1378,16 +1378,16 @@ packages: - transformers >=4.40.1 - uvicorn >=0.34.0 - uvloop >=0.21.0 - - xgrammar >=0.1.11 + - xgrammar ==0.1.11 license: LicenseRef-Modular-Proprietary - size: 120351193 - timestamp: 1740596262894 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022618-release.conda + size: 123534013 + timestamp: 1740664231187 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022713-release.conda noarch: python - sha256: 515db1f7c8287f452cb0da29bfccb43cde4ebd0faee593e27b6be14b7d495faf - md5: dc6bdeff0967c5a0c47baf6dd27483a6 + sha256: 71aeaf13405bb7ba613f5336c5e03fbbd158adbfc1a5ddab1bf0b7f248535f15 + md5: 903350b3c6380505cb1cc59556cdcf68 depends: - - max-core ==25.2.0.dev2025022618 release + - max-core ==25.2.0.dev2025022713 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1402,7 +1402,7 @@ packages: - nvitop >=1.4.1 - opentelemetry-api >=1.29.0 - opentelemetry-exporter-otlp-proto-http >=1.27.0 - - opentelemetry-exporter-prometheus >=0.48b0 + - opentelemetry-exporter-prometheus <1.0.0 - opentelemetry-sdk >=1.29.0,<2.0 - pillow >=10.3.0 - prometheus_client >=0.21.0 @@ -1423,16 +1423,16 @@ packages: - transformers >=4.40.1 - uvicorn >=0.34.0 - uvloop >=0.21.0 - - xgrammar >=0.1.11 + - xgrammar ==0.1.11 license: LicenseRef-Modular-Proprietary - size: 122872196 - timestamp: 1740596478019 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022618-release.conda + size: 125927777 + timestamp: 1740664199928 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022713-release.conda noarch: python - sha256: a08fd92e04d61bddaad3d9a323a03c9705763b36babf38915875572593fa1d71 - md5: 555970eeb88448f26d31e5d6b99c9800 + sha256: 829c387dda5a2a52baca2299c67ba511f2039beeec4c2f6e3b16990077cbd0b9 + md5: 4f10a16f087934ec4fd2e87b8326c4d5 depends: - - max-core ==25.2.0.dev2025022618 release + - max-core ==25.2.0.dev2025022713 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1447,7 +1447,7 @@ packages: - nvitop >=1.4.1 - opentelemetry-api >=1.29.0 - opentelemetry-exporter-otlp-proto-http >=1.27.0 - - opentelemetry-exporter-prometheus >=0.48b0 + - opentelemetry-exporter-prometheus <1.0.0 - opentelemetry-sdk >=1.29.0,<2.0 - pillow >=10.3.0 - prometheus_client >=0.21.0 @@ -1468,14 +1468,14 @@ packages: - transformers >=4.40.1 - uvicorn >=0.34.0 - uvloop >=0.21.0 - - xgrammar >=0.1.11 + - xgrammar ==0.1.11 license: LicenseRef-Modular-Proprietary - size: 109621119 - timestamp: 1740597258914 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022618-release.conda + size: 112550091 + timestamp: 1740665267852 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022713-release.conda noarch: python - sha256: e6030605141540eb398e8445b266cff5b714a2c41e27007dbac4d901481ab482 - md5: b0b2c7b234272d99f1c05b35615f104e + sha256: baac376bd7df6e8c4776fc934dd3c7d2566a31908e514ea02180ba638430b379 + md5: 5906489ff8ca5341b676d9001a246ace depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -1486,20 +1486,20 @@ packages: - typing_extensions >=v4.12.2 - python license: MIT - size: 130866 - timestamp: 1740596478019 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022618-release.conda + size: 130846 + timestamp: 1740664199927 +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022713-release.conda noarch: python - sha256: 01b4e6f40757bddd76685fd2c9f4abe20d89334ffbc09ffe83bb553179fe0498 - md5: 2dbd38df35c2becade229a64ca015e7c + sha256: ff78ef2596148c1ae0819f53e4ae3266e0003a836bdacba9efee6d4335eef386 + md5: 95972dc5cb3b79fcb9c4d47591cd4c7e depends: - - max-core ==25.2.0.dev2025022618 release + - max-core ==25.2.0.dev2025022713 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22994 - timestamp: 1740596478019 + size: 22991 + timestamp: 1740664199928 - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda sha256: 1895f47b7d68581a6facde5cb13ab8c2764c2e53a76bd746f8f98910dc4e08fe md5: 29097e7ea634a45cc5386b95cac6568f diff --git a/magic.lock b/magic.lock index badcd54dd8..ebf11b183f 100644 --- a/magic.lock +++ b/magic.lock @@ -43,11 +43,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/lit-19.1.7-pyhd8ed1ab_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022618-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022618-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022618-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022618-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022618-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022713-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022713-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022713-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022713-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022713-release.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-h2d0b736_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda @@ -109,11 +109,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/lit-19.1.7-pyhd8ed1ab_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022618-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022618-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022618-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022618-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022618-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022713-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022713-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022713-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022713-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022713-release.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-ha32ae93_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda @@ -166,11 +166,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/lit-19.1.7-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022618-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022618-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022618-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022618-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022618-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022713-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022713-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022713-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022713-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022713-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda @@ -1313,48 +1313,48 @@ packages: license_family: APACHE size: 280830 timestamp: 1736986295869 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022618-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022713-release.conda noarch: python - sha256: 9599e221c27af8899881eb571ec3043f8b6813f9c5938e65943b983f802054bb - md5: cd1814a782d4a03ca4a64a1cd788609a + sha256: d2b6c247e736b34c8a6cf0452846a2162b9aa6a3c3fd5d029f2b2e0a7be571d3 + md5: 4db470c401468b43b673548c91a5e94e depends: - - max-core ==25.2.0.dev2025022618 release - - max-python ==25.2.0.dev2025022618 release - - mojo-jupyter ==25.2.0.dev2025022618 release - - mblack ==25.2.0.dev2025022618 release + - max-core ==25.2.0.dev2025022713 release + - max-python ==25.2.0.dev2025022713 release + - mojo-jupyter ==25.2.0.dev2025022713 release + - mblack ==25.2.0.dev2025022713 release license: LicenseRef-Modular-Proprietary - size: 9906 - timestamp: 1740596478019 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022618-release.conda - sha256: 1ca66cbfaaec44d3c224fe3eabda33fab5c5102dbd222ac101fab612ab959028 - md5: 1f5bc5fd3f7405031e95e4969cbc1b43 + size: 9908 + timestamp: 1740664199928 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022713-release.conda + sha256: 3c0bf4c8f2a6b5400bcbd64032d2c59b9dfcc5ad50432a8a9e1e3d024d3400f5 + md5: 9751487ef2e786e9dcaff28f0628ba03 depends: - - mblack ==25.2.0.dev2025022618 release + - mblack ==25.2.0.dev2025022713 release license: LicenseRef-Modular-Proprietary - size: 243393888 - timestamp: 1740596262894 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022618-release.conda - sha256: 6c9b74bc0972f0f515bf2dc2abd1f7acf9c77122caf06c72f21ff568b91f357b - md5: 64d7dbf1d05bf7e952f3841cac0920c4 + size: 249813859 + timestamp: 1740664231187 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022713-release.conda + sha256: bea03a1b06c8554504542794822a345735e7847a914af4e9766cb275ab5b3238 + md5: 04b52dac259a6268bc51a78da0aa9f1d depends: - - mblack ==25.2.0.dev2025022618 release + - mblack ==25.2.0.dev2025022713 release license: LicenseRef-Modular-Proprietary - size: 245985149 - timestamp: 1740596478019 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022618-release.conda - sha256: 279ac08de644ac2fef9393e66440740b7cc76f14a7d325b5156cac174e6c238f - md5: cfd8ab87ccc30f48c39825539eccd04b + size: 252115018 + timestamp: 1740664199928 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022713-release.conda + sha256: eb28bb19ea43f9a63b8f8ca88751c932263ab2134fd651b5e82cd729101b18cb + md5: 9f3a63249667b9e29ba93d7c21e1d679 depends: - - mblack ==25.2.0.dev2025022618 release + - mblack ==25.2.0.dev2025022713 release license: LicenseRef-Modular-Proprietary - size: 211567067 - timestamp: 1740597258914 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022618-release.conda + size: 217216039 + timestamp: 1740665267852 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022713-release.conda noarch: python - sha256: f13e908580445f9f02151ebc952758e92287a5774b65efb695820653337be3c5 - md5: 8328ab556068866946546bb2d26816e9 + sha256: b555a98a5162485a66cb852674d19b8c65e139ff70ec92451f2130dea741263a + md5: cdaed74f4e9fefcc0bc928598740815c depends: - - max-core ==25.2.0.dev2025022618 release + - max-core ==25.2.0.dev2025022713 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1369,7 +1369,7 @@ packages: - nvitop >=1.4.1 - opentelemetry-api >=1.29.0 - opentelemetry-exporter-otlp-proto-http >=1.27.0 - - opentelemetry-exporter-prometheus >=0.48b0 + - opentelemetry-exporter-prometheus <1.0.0 - opentelemetry-sdk >=1.29.0,<2.0 - pillow >=10.3.0 - prometheus_client >=0.21.0 @@ -1390,16 +1390,16 @@ packages: - transformers >=4.40.1 - uvicorn >=0.34.0 - uvloop >=0.21.0 - - xgrammar >=0.1.11 + - xgrammar ==0.1.11 license: LicenseRef-Modular-Proprietary - size: 120351193 - timestamp: 1740596262894 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022618-release.conda + size: 123534013 + timestamp: 1740664231187 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022713-release.conda noarch: python - sha256: 515db1f7c8287f452cb0da29bfccb43cde4ebd0faee593e27b6be14b7d495faf - md5: dc6bdeff0967c5a0c47baf6dd27483a6 + sha256: 71aeaf13405bb7ba613f5336c5e03fbbd158adbfc1a5ddab1bf0b7f248535f15 + md5: 903350b3c6380505cb1cc59556cdcf68 depends: - - max-core ==25.2.0.dev2025022618 release + - max-core ==25.2.0.dev2025022713 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1414,7 +1414,7 @@ packages: - nvitop >=1.4.1 - opentelemetry-api >=1.29.0 - opentelemetry-exporter-otlp-proto-http >=1.27.0 - - opentelemetry-exporter-prometheus >=0.48b0 + - opentelemetry-exporter-prometheus <1.0.0 - opentelemetry-sdk >=1.29.0,<2.0 - pillow >=10.3.0 - prometheus_client >=0.21.0 @@ -1435,16 +1435,16 @@ packages: - transformers >=4.40.1 - uvicorn >=0.34.0 - uvloop >=0.21.0 - - xgrammar >=0.1.11 + - xgrammar ==0.1.11 license: LicenseRef-Modular-Proprietary - size: 122872196 - timestamp: 1740596478019 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022618-release.conda + size: 125927777 + timestamp: 1740664199928 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022713-release.conda noarch: python - sha256: a08fd92e04d61bddaad3d9a323a03c9705763b36babf38915875572593fa1d71 - md5: 555970eeb88448f26d31e5d6b99c9800 + sha256: 829c387dda5a2a52baca2299c67ba511f2039beeec4c2f6e3b16990077cbd0b9 + md5: 4f10a16f087934ec4fd2e87b8326c4d5 depends: - - max-core ==25.2.0.dev2025022618 release + - max-core ==25.2.0.dev2025022713 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1459,7 +1459,7 @@ packages: - nvitop >=1.4.1 - opentelemetry-api >=1.29.0 - opentelemetry-exporter-otlp-proto-http >=1.27.0 - - opentelemetry-exporter-prometheus >=0.48b0 + - opentelemetry-exporter-prometheus <1.0.0 - opentelemetry-sdk >=1.29.0,<2.0 - pillow >=10.3.0 - prometheus_client >=0.21.0 @@ -1480,14 +1480,14 @@ packages: - transformers >=4.40.1 - uvicorn >=0.34.0 - uvloop >=0.21.0 - - xgrammar >=0.1.11 + - xgrammar ==0.1.11 license: LicenseRef-Modular-Proprietary - size: 109621119 - timestamp: 1740597258914 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022618-release.conda + size: 112550091 + timestamp: 1740665267852 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022713-release.conda noarch: python - sha256: e6030605141540eb398e8445b266cff5b714a2c41e27007dbac4d901481ab482 - md5: b0b2c7b234272d99f1c05b35615f104e + sha256: baac376bd7df6e8c4776fc934dd3c7d2566a31908e514ea02180ba638430b379 + md5: 5906489ff8ca5341b676d9001a246ace depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -1498,20 +1498,20 @@ packages: - typing_extensions >=v4.12.2 - python license: MIT - size: 130866 - timestamp: 1740596478019 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022618-release.conda + size: 130846 + timestamp: 1740664199927 +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022713-release.conda noarch: python - sha256: 01b4e6f40757bddd76685fd2c9f4abe20d89334ffbc09ffe83bb553179fe0498 - md5: 2dbd38df35c2becade229a64ca015e7c + sha256: ff78ef2596148c1ae0819f53e4ae3266e0003a836bdacba9efee6d4335eef386 + md5: 95972dc5cb3b79fcb9c4d47591cd4c7e depends: - - max-core ==25.2.0.dev2025022618 release + - max-core ==25.2.0.dev2025022713 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22994 - timestamp: 1740596478019 + size: 22991 + timestamp: 1740664199928 - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda sha256: 1895f47b7d68581a6facde5cb13ab8c2764c2e53a76bd746f8f98910dc4e08fe md5: 29097e7ea634a45cc5386b95cac6568f From a5d58164929af9924031318244579b02c8deccb6 Mon Sep 17 00:00:00 2001 From: akirchhoff-modular Date: Wed, 26 Feb 2025 09:55:53 -0800 Subject: [PATCH 466/509] [Pipelines] Compile multi-model pipelines' models in parallel I observe that pipelines with multiple models (currently mostly vision models) spend a lot of their compilation time pinned to a single core. This is not an efficient use of time. We have two pieces of work, so at least have each one pinned to one core. This slows down each compile from about 70 seconds to 90 seconds, but because those 90 seconds are overlapped, this still saves about 50 seconds overall. MODULAR_ORIG_COMMIT_REV_ID: 9b7b1e12e297132f15c560e9510af673b322f18c --- .clang-format | 2 + .clang-tidy | 57 + .gitattributes | 4 + .github/ISSUE_TEMPLATE/CODEOWNERS | 5 + .github/ISSUE_TEMPLATE/doc_issue.yaml | 5 +- .github/ISSUE_TEMPLATE/max_bug_report.yaml | 55 + .../ISSUE_TEMPLATE/max_builds_bug_report.yaml | 53 + .../ISSUE_TEMPLATE/max_feature_request.yaml | 49 + .gitignore | 149 +- .pre-commit-config.yaml | 26 - CODE_OF_CONDUCT.md | 12 +- LICENSE | 2 +- README.md | 150 +- .../testing => benchmark}/.gitattributes | 0 benchmark/.gitignore | 7 + benchmark/README.md | 163 ++ benchmark/benchmark_serving.py | 1240 ++++++++++ benchmark/pyproject.toml | 32 + benchmark/requirements.txt | 8 + examples/README.md | 65 +- examples/console.py | 179 ++ examples/custom_ops/.gitignore | 1 + examples/custom_ops/README.md | 55 + examples/custom_ops/addition.py | 79 + examples/custom_ops/fused_attention.py | 72 + examples/custom_ops/histogram.py | 77 + examples/custom_ops/kernels/__init__.mojo | 17 + examples/custom_ops/kernels/add_custom.mojo | 82 + .../custom_ops/kernels/fused_attention.mojo | 360 +++ examples/custom_ops/kernels/histogram.mojo | 83 + examples/custom_ops/kernels/mandelbrot.mojo | 92 + .../kernels/matrix_multiplication.mojo | 1007 ++++++++ examples/custom_ops/kernels/top_k.mojo | 229 ++ .../custom_ops/kernels/vector_addition.mojo | 101 + examples/custom_ops/mandelbrot.py | 99 + examples/custom_ops/matrix_multiplication.py | 169 ++ examples/custom_ops/mojoproject.toml | 22 + examples/custom_ops/parametric_addition.py | 82 + examples/custom_ops/top_k.py | 214 ++ examples/custom_ops/vector_addition.py | 92 + examples/gpu_functions/README.md | 50 + examples/gpu_functions/grayscale.mojo | 124 + examples/gpu_functions/mandelbrot.mojo | 129 + examples/gpu_functions/mojoproject.toml | 17 + .../naive_matrix_multiplication.mojo | 110 + examples/gpu_functions/vector_addition.mojo | 93 + examples/graph-api/README.md | 36 + examples/graph-api/basics/README.md | 26 + .../graph-api/basics/basic.\360\237\224\245" | 52 + examples/graph-api/environment.yml | 9 + examples/graph-api/pixi.toml | 15 + examples/graph-api/requirements.txt | 1 + examples/gui/.gitattributes | 2 + examples/gui/.gitignore | 1 + examples/gui/.streamlit/config.toml | 9 + examples/gui/README.md | 13 + examples/gui/home.py | 32 + examples/gui/mojoproject.toml | 39 + examples/gui/pages/bert.py | 151 ++ examples/gui/pages/llama3_1.py | 206 ++ examples/gui/pages/stable-diffusion.py | 136 + examples/gui/pages/yolo.py | 178 ++ examples/gui/ragdata/mojo_functions.txt | 28 + examples/gui/shared.py | 282 +++ examples/inference/README.md | 18 + .../inference/bert-c-torchscript/.gitignore | 7 + .../bert-c-torchscript/CMakeLists.txt | 22 + .../inference/bert-c-torchscript/README.md | 69 + .../bert-c-torchscript/environment.yml | 8 + examples/inference/bert-c-torchscript/main.c | 222 ++ .../inference/bert-c-torchscript/pixi.toml | 25 + .../bert-c-torchscript/post-process.py | 29 + .../bert-c-torchscript/pre-process.py | 63 + examples/inference/bert-c-torchscript/run.sh | 50 + .../inference/bert-mojo-torchscript/README.md | 30 + .../bert-mojo-torchscript/environment.yml | 9 + .../inference/bert-mojo-torchscript/pixi.toml | 24 + .../inference/bert-mojo-torchscript/run.sh | 28 + .../simple_inference.\360\237\224\245" | 127 + .../bert-python-torchscript/.gitignore | 1 + .../bert-python-torchscript/README.md | 47 + .../bert-python-torchscript/environment.yml | 8 + .../bert-python-torchscript/pixi.toml | 24 + .../inference/bert-python-torchscript/run.sh | 28 + .../simple-inference.py | 105 + .../common/bert-torchscript/download-model.py | 91 + .../resnet50-python-torchscript/.gitignore | 1 + .../resnet50-python-torchscript/README.md | 50 + .../download-model.py | 66 + .../environment.yml | 9 + .../input/leatherback_turtle.jpg | Bin 0 -> 364047 bytes .../resnet50-python-torchscript/pixi.toml | 26 + .../resnet50-python-torchscript/run.sh | 28 + .../simple-inference.py | 98 + .../stable-diffusion-mojo-onnx/.gitignore | 1 + .../stable-diffusion-mojo-onnx/README.md | 51 + .../environment.yml | 8 + .../stable-diffusion-mojo-onnx/pixi.toml | 26 + .../python_utils.\360\237\224\245" | 91 + .../stable-diffusion-mojo-onnx/run.sh | 26 + .../scheduler.\360\237\224\245" | 155 ++ .../text_to_image.\360\237\224\245" | 223 ++ .../stable-diffusion-python-onnx/.gitignore | 1 + .../stable-diffusion-python-onnx/README.md | 51 + .../environment.yml | 8 + .../stable-diffusion-python-onnx/pixi.toml | 29 + .../stable-diffusion-python-onnx/run.sh | 27 + .../text_to_image.py | 178 ++ .../inference/yolo-python-onnx/.gitignore | 1 + examples/inference/yolo-python-onnx/README.md | 81 + .../inference/yolo-python-onnx/constants.py | 95 + .../yolo-python-onnx/download-model.py | 51 + .../yolo-python-onnx/environment.yml | 8 + examples/inference/yolo-python-onnx/input.mp4 | Bin 0 -> 1164686 bytes examples/inference/yolo-python-onnx/pixi.toml | 12 + .../yolo-python-onnx/requirements.txt | 8 + examples/inference/yolo-python-onnx/run.sh | 32 + .../inference/yolo-python-onnx/segment.py | 382 +++ examples/lit.cfg.py | 71 - examples/models/README.md | 4 + examples/{ => mojo}/.gitignore | 0 examples/mojo/README.md | 48 + examples/{ => mojo}/check_mod.py | 0 examples/{ => mojo}/deviceinfo.mojo | 0 .../mojo/hello.\360\237\224\245" | 0 examples/{ => mojo}/hello_interop.mojo | 0 examples/{ => mojo}/life/README.md | 0 examples/{ => mojo}/life/benchmark.mojo | 0 examples/{ => mojo}/life/gridv1.mojo | 0 examples/{ => mojo}/life/gridv2.mojo | 0 examples/{ => mojo}/life/lifev1.mojo | 0 examples/{ => mojo}/life/lifev2.mojo | 0 examples/{ => mojo}/life/mojoproject.toml | 0 .../{ => mojo}/life/test/test_gridv1.mojo | 0 .../{ => mojo}/life/test/test_gridv2.mojo | 0 examples/{ => mojo}/mandelbrot.mojo | 0 examples/{ => mojo}/matmul.mojo | 0 examples/{ => mojo}/mojoproject.toml | 0 examples/{ => mojo}/nbody.mojo | 0 examples/{ => mojo}/operators/README.md | 0 examples/{ => mojo}/operators/main.mojo | 0 .../{ => mojo}/operators/mojoproject.toml | 0 examples/{ => mojo}/operators/my_complex.mojo | 0 .../{ => mojo}/operators/test_my_complex.mojo | 0 examples/{ => mojo}/pymatmul.py | 0 examples/{ => mojo}/reduce.mojo | 0 examples/{ => mojo}/simple_interop.py | 0 examples/mojo/testing/.gitattributes | 2 + examples/{ => mojo}/testing/.gitignore | 0 examples/{ => mojo}/testing/README.md | 0 examples/{ => mojo}/testing/mojoproject.toml | 0 examples/{ => mojo}/testing/src/example.mojo | 0 .../testing/src/my_math/__init__.mojo | 0 .../{ => mojo}/testing/src/my_math/utils.mojo | 0 .../testing/test/my_math/test_dec.mojo | 0 .../testing/test/my_math/test_inc.mojo | 0 examples/notebooks/.gitignore | 3 + examples/notebooks/README.md | 68 + examples/notebooks/gemma2b-python-onnx.ipynb | 425 ++++ .../notebooks/mistral7b-python-onnx.ipynb | 404 +++ examples/notebooks/pixi.toml | 13 + .../notebooks/roberta-python-pytorch.ipynb | 389 +++ examples/offline-inference/README.md | 10 + examples/offline-inference/basic.py | 52 + examples/offline-inference/pixi.toml | 14 + magic.lock | 2197 ----------------- {.github => mojo/.github}/CODEOWNERS | 0 mojo/.github/ISSUE_TEMPLATE/doc_issue.yaml | 50 + .../ISSUE_TEMPLATE/mojo_bug_report.yaml | 0 .../ISSUE_TEMPLATE/mojo_feature_request.yaml | 0 .../.github}/PULL_REQUEST_TEMPLATE.md | 0 .../.github}/workflows/check_pr_target.yml | 0 .../.github}/workflows/check_pr_title.yml | 0 .../standard_library_tests_and_examples.yml | 0 .../.github}/workflows/test_pre_commit.yml | 0 mojo/CODE_OF_CONDUCT.md | 71 + CONTRIBUTING.md => mojo/CONTRIBUTING.md | 0 mojo/LICENSE | 235 ++ mojo/README.md | 113 + {docs => mojo/docs}/README.md | 0 {docs => mojo/docs}/changelog-released.md | 0 {docs => mojo/docs}/changelog.md | 0 {docs => mojo/docs}/faq.md | 0 .../docs}/images/dynamic-vector-capacity.png | Bin {docs => mojo/docs}/images/let-to-var.png | Bin {docs => mojo/docs}/images/vectorize-fix.png | Bin {docs => mojo/docs}/lib.mdx | 0 {docs => mojo/docs}/manual/basics.mdx | 0 {docs => mojo/docs}/manual/control-flow.mdx | 0 .../docs}/manual/decorators/always-inline.md | 0 .../docs}/manual/decorators/copy-capture.md | 0 .../docs}/manual/decorators/implicit.md | 0 .../docs}/manual/decorators/index.mdx | 0 .../manual/decorators/nonmaterializable.md | 0 .../docs}/manual/decorators/parameter.md | 0 .../manual/decorators/register-passable.md | 0 .../docs}/manual/decorators/staticmethod.md | 0 .../docs}/manual/decorators/value.md | 0 {docs => mojo/docs}/manual/errors.mdx | 0 {docs => mojo/docs}/manual/functions.mdx | 0 {docs => mojo/docs}/manual/get-started.mdx | 0 .../manual/images/game-of-life-screen.png | Bin .../docs}/manual/images/mojo-vscode.png | Bin .../images/owned-pointer-diagram-dark.png | Bin .../manual/images/owned-pointer-diagram.png | Bin .../manual/images/pointer-diagram-dark.png | Bin .../docs}/manual/images/pointer-diagram.png | Bin .../manual/images/pointer-lifecycle-dark.png | Bin .../docs}/manual/images/pointer-lifecycle.png | Bin .../manual/images/pointer-offset-dark.png | Bin .../docs}/manual/images/pointer-offset.png | Bin .../images/strided-load-storage-dark.png | Bin .../manual/images/strided-load-storage.png | Bin {docs => mojo/docs}/manual/index.md | 0 .../docs}/manual/lifecycle/death.mdx | 0 .../docs}/manual/lifecycle/index.mdx | 0 {docs => mojo/docs}/manual/lifecycle/life.mdx | 0 {docs => mojo/docs}/manual/operators.mdx | 0 {docs => mojo/docs}/manual/packages.md | 0 .../docs}/manual/parameters/index.mdx | 0 {docs => mojo/docs}/manual/pointers/index.mdx | 0 .../docs}/manual/pointers/unsafe-pointers.mdx | 0 {docs => mojo/docs}/manual/python/index.mdx | 0 {docs => mojo/docs}/manual/python/types.mdx | 0 {docs => mojo/docs}/manual/structs.mdx | 0 {docs => mojo/docs}/manual/traits.mdx | 0 {docs => mojo/docs}/manual/types.mdx | 0 {docs => mojo/docs}/manual/values/index.mdx | 0 .../docs}/manual/values/lifetimes.mdx | 0 .../docs}/manual/values/ownership.mdx | 0 .../docs}/manual/values/value-semantics.mdx | 0 {docs => mojo/docs}/manual/variables.mdx | 0 {docs => mojo/docs}/roadmap.md | 0 {docs => mojo/docs}/tools/debugging.mdx | 0 .../docs}/tools/images/break-on-raise.png | Bin .../tools/images/breakpoint-hit-count.png | Bin .../docs}/tools/images/debug-toolbar.png | Bin .../images/debugger-call-stack-nested1.png | Bin .../docs}/tools/images/debugger-variables.png | Bin .../images/launch-configuration-menu.png | Bin .../quick-run-or-debug-button-debug.png | Bin .../images/quick-run-or-debug-button.png | Bin .../tools/images/quick-run-or-debug-menu.png | Bin .../docs}/tools/images/run-and-debug-icon.png | Bin .../docs}/tools/images/run-and-debug-view.png | Bin .../docs}/tools/images/run-start-view.png | Bin {docs => mojo/docs}/tools/testing.mdx | 0 {docs => mojo/docs}/why-mojo.md | 0 pixi.toml => mojo/pixi.toml | 0 {proposals => mojo/proposals}/README.md | 0 .../proposals}/always_inline_builtin.md | 0 .../proposals}/byte-as-uint8.md | 0 .../proposals}/improved-hash-module.md | 0 .../proposals}/inferred-parameters.md | 0 .../proposals}/lifetimes-and-provenance.md | 0 .../proposals}/lifetimes-keyword-renaming.md | 0 .../proposals}/mojo-and-dynamism.md | 0 .../proposals}/opt-in-implicit-conversion.md | 0 .../project-manifest-and-build-tool.md | 0 .../proposals}/ref-convention.md | 0 .../proposals}/remove-let-decls.md | 0 .../proposals}/stdlib-insider-docs.md | 0 .../proposals}/value-ownership.md | 0 {stdlib => mojo/stdlib}/README.md | 0 {stdlib => mojo/stdlib}/benchmarks/README.md | 0 .../algorithm/bench_elementwise.mojo | 0 .../stdlib}/benchmarks/builtin/bench_int.mojo | 0 .../benchmarks/builtin/bench_sort.mojo | 0 .../benchmarks/collections/bench_dict.mojo | 0 .../benchmarks/collections/bench_string.mojo | 0 .../benchmarks/collections/data/README.md | 0 .../collections/data/UN_charter_AR.html | 0 .../collections/data/UN_charter_AR.txt | 0 .../collections/data/UN_charter_EN.html | 0 .../collections/data/UN_charter_EN.txt | 0 .../collections/data/UN_charter_ES.html | 0 .../collections/data/UN_charter_ES.txt | 0 .../collections/data/UN_charter_RU.html | 0 .../collections/data/UN_charter_RU.txt | 0 .../collections/data/UN_charter_zh-CN.html | 0 .../collections/data/UN_charter_zh-CN.txt | 0 .../benchmarks/hashlib/bench_hash.mojo | 0 {stdlib => mojo/stdlib}/benchmarks/lit.cfg.py | 0 .../stdlib}/benchmarks/math/bench_math.mojo | 0 .../benchmarks/utils/bench_formatter.mojo | 0 .../benchmarks/utils/bench_memmem.mojo | 0 {stdlib => mojo/stdlib}/docs/development.md | 0 .../stdlib}/docs/docstring-style-guide.md | 0 {stdlib => mojo/stdlib}/docs/faq.md | 0 .../stdlib}/docs/governance-structure.md | 0 .../stdlib}/docs/images/create-fork.png | Bin .../docs/images/doc-lint-quick-fix.png | Bin .../stdlib}/docs/images/nightly-extension.png | Bin .../stdlib}/docs/internal/README.md | 0 .../stdlib}/docs/internal/compiler.md | 0 {stdlib => mojo/stdlib}/docs/internal/mlir.md | 0 .../stdlib}/docs/internal/runtime.md | 0 {stdlib => mojo/stdlib}/docs/roadmap.md | 0 {stdlib => mojo/stdlib}/docs/style-guide.md | 0 {stdlib => mojo/stdlib}/docs/vision.md | 0 .../stdlib}/scripts/.markdownlint.yaml | 0 .../stdlib}/scripts/build-stdlib.sh | 0 .../stdlib}/scripts/check-docstrings.py | 0 .../stdlib}/scripts/check_licenses.mojo | 0 .../scripts/install-build-tools-linux.sh | 0 .../scripts/install-build-tools-macos.sh | 0 .../stdlib}/scripts/markdownlint.sh | 0 .../stdlib}/scripts/run-benchmarks.sh | 0 {stdlib => mojo/stdlib}/scripts/run-tests.sh | 0 {stdlib => mojo/stdlib}/src/__init__.mojo | 0 .../stdlib}/src/base64/__init__.mojo | 0 .../stdlib}/src/base64/_b64encode.mojo | 0 .../stdlib}/src/base64/base64.mojo | 0 {stdlib => mojo/stdlib}/src/bit/__init__.mojo | 0 {stdlib => mojo/stdlib}/src/bit/bit.mojo | 0 .../stdlib}/src/builtin/__init__.mojo | 0 .../stdlib}/src/builtin/_closure.mojo | 0 .../stdlib}/src/builtin/_format_float.mojo | 0 .../stdlib}/src/builtin/_location.mojo | 0 .../stdlib}/src/builtin/_pybind.mojo | 0 .../stdlib}/src/builtin/_startup.mojo | 0 .../stdlib}/src/builtin/_stubs.mojo | 0 .../stdlib}/src/builtin/anytype.mojo | 0 {stdlib => mojo/stdlib}/src/builtin/bool.mojo | 0 .../stdlib}/src/builtin/breakpoint.mojo | 0 .../stdlib}/src/builtin/builtin_list.mojo | 0 .../stdlib}/src/builtin/builtin_slice.mojo | 0 .../stdlib}/src/builtin/comparable.mojo | 0 .../stdlib}/src/builtin/constrained.mojo | 0 .../stdlib}/src/builtin/coroutine.mojo | 0 .../stdlib}/src/builtin/debug_assert.mojo | 0 .../stdlib}/src/builtin/dtype.mojo | 0 .../src/builtin/equality_comparable.mojo | 0 .../stdlib}/src/builtin/error.mojo | 0 {stdlib => mojo/stdlib}/src/builtin/file.mojo | 0 .../stdlib}/src/builtin/file_descriptor.mojo | 0 .../stdlib}/src/builtin/float_literal.mojo | 0 .../stdlib}/src/builtin/floatable.mojo | 0 .../stdlib}/src/builtin/format_int.mojo | 0 .../stdlib}/src/builtin/identifiable.mojo | 0 {stdlib => mojo/stdlib}/src/builtin/int.mojo | 0 .../stdlib}/src/builtin/int_literal.mojo | 0 {stdlib => mojo/stdlib}/src/builtin/io.mojo | 0 {stdlib => mojo/stdlib}/src/builtin/len.mojo | 0 {stdlib => mojo/stdlib}/src/builtin/math.mojo | 0 {stdlib => mojo/stdlib}/src/builtin/none.mojo | 0 .../stdlib}/src/builtin/object.mojo | 0 .../stdlib}/src/builtin/range.mojo | 0 .../stdlib}/src/builtin/rebind.mojo | 0 {stdlib => mojo/stdlib}/src/builtin/repr.mojo | 0 .../stdlib}/src/builtin/reversed.mojo | 0 {stdlib => mojo/stdlib}/src/builtin/simd.mojo | 0 {stdlib => mojo/stdlib}/src/builtin/sort.mojo | 0 {stdlib => mojo/stdlib}/src/builtin/str.mojo | 0 .../stdlib}/src/builtin/string_literal.mojo | 0 {stdlib => mojo/stdlib}/src/builtin/swap.mojo | 0 .../stdlib}/src/builtin/tuple.mojo | 0 .../stdlib}/src/builtin/type_aliases.mojo | 0 {stdlib => mojo/stdlib}/src/builtin/uint.mojo | 0 .../stdlib}/src/builtin/value.mojo | 0 .../stdlib}/src/collections/__init__.mojo | 0 .../src/collections/_index_normalization.mojo | 0 .../stdlib}/src/collections/counter.mojo | 0 .../stdlib}/src/collections/deque.mojo | 0 .../stdlib}/src/collections/dict.mojo | 0 .../stdlib}/src/collections/inline_array.mojo | 0 .../stdlib}/src/collections/inline_list.mojo | 0 .../stdlib}/src/collections/interval.mojo | 0 .../stdlib}/src/collections/linked_list.mojo | 0 .../stdlib}/src/collections/list.mojo | 0 .../stdlib}/src/collections/optional.mojo | 0 .../stdlib}/src/collections/set.mojo | 0 .../src/collections/string/__init__.mojo | 0 .../src/collections/string/_unicode.mojo | 0 .../collections/string/_unicode_lookups.mojo | 0 .../collections/string/_utf8_validation.mojo | 0 .../src/collections/string/codepoint.mojo | 0 .../src/collections/string/format.mojo | 0 .../src/collections/string/inline_string.mojo | 0 .../src/collections/string/string.mojo | 0 .../src/collections/string/string_slice.mojo | 0 .../stdlib}/src/collections/vector.mojo | 0 .../stdlib}/src/documentation/__init__.mojo | 0 .../src/documentation/documentation.mojo | 0 .../stdlib}/src/hashlib/__init__.mojo | 0 .../stdlib}/src/hashlib/_ahash.mojo | 0 .../stdlib}/src/hashlib/_hasher.mojo | 0 {stdlib => mojo/stdlib}/src/hashlib/hash.mojo | 0 .../stdlib}/src/math/__init__.mojo | 0 .../stdlib}/src/math/constants.mojo | 0 {stdlib => mojo/stdlib}/src/math/math.mojo | 0 .../stdlib}/src/math/polynomial.mojo | 0 .../stdlib}/src/memory/__init__.mojo | 0 {stdlib => mojo/stdlib}/src/memory/arc.mojo | 0 .../src/memory/maybe_uninitialized.mojo | 0 .../stdlib}/src/memory/memory.mojo | 0 .../stdlib}/src/memory/owned_pointer.mojo | 0 .../stdlib}/src/memory/pointer.mojo | 0 {stdlib => mojo/stdlib}/src/memory/span.mojo | 0 .../stdlib}/src/memory/unsafe.mojo | 0 .../stdlib}/src/memory/unsafe_pointer.mojo | 0 {stdlib => mojo/stdlib}/src/os/__init__.mojo | 0 .../stdlib}/src/os/_linux_aarch64.mojo | 0 .../stdlib}/src/os/_linux_x86.mojo | 0 {stdlib => mojo/stdlib}/src/os/_macos.mojo | 0 {stdlib => mojo/stdlib}/src/os/_windows.mojo | 0 {stdlib => mojo/stdlib}/src/os/atomic.mojo | 0 {stdlib => mojo/stdlib}/src/os/env.mojo | 0 {stdlib => mojo/stdlib}/src/os/fstat.mojo | 0 {stdlib => mojo/stdlib}/src/os/os.mojo | 0 .../stdlib}/src/os/path/__init__.mojo | 0 {stdlib => mojo/stdlib}/src/os/path/path.mojo | 0 {stdlib => mojo/stdlib}/src/os/pathlike.mojo | 0 .../stdlib}/src/pathlib/__init__.mojo | 0 {stdlib => mojo/stdlib}/src/pathlib/path.mojo | 0 .../stdlib}/src/prelude/__init__.mojo | 0 {stdlib => mojo/stdlib}/src/pwd/__init__.mojo | 0 {stdlib => mojo/stdlib}/src/pwd/_linux.mojo | 0 {stdlib => mojo/stdlib}/src/pwd/_macos.mojo | 0 {stdlib => mojo/stdlib}/src/pwd/pwd.mojo | 0 .../stdlib}/src/python/__init__.mojo | 0 .../stdlib}/src/python/_bindings.mojo | 0 .../stdlib}/src/python/_cpython.mojo | 0 .../stdlib}/src/python/python.mojo | 0 .../stdlib}/src/python/python_object.mojo | 0 .../stdlib}/src/random/__init__.mojo | 0 .../stdlib}/src/random/random.mojo | 0 .../stdlib}/src/stat/__init__.mojo | 0 {stdlib => mojo/stdlib}/src/stat/stat.mojo | 0 {stdlib => mojo/stdlib}/src/sys/__init__.mojo | 0 {stdlib => mojo/stdlib}/src/sys/_amdgpu.mojo | 0 .../stdlib}/src/sys/_assembly.mojo | 0 {stdlib => mojo/stdlib}/src/sys/_build.mojo | 0 {stdlib => mojo/stdlib}/src/sys/_io.mojo | 0 {stdlib => mojo/stdlib}/src/sys/_libc.mojo | 0 {stdlib => mojo/stdlib}/src/sys/arg.mojo | 0 {stdlib => mojo/stdlib}/src/sys/compile.mojo | 0 {stdlib => mojo/stdlib}/src/sys/debug.mojo | 0 {stdlib => mojo/stdlib}/src/sys/ffi.mojo | 0 {stdlib => mojo/stdlib}/src/sys/info.mojo | 0 .../stdlib}/src/sys/intrinsics.mojo | 0 .../stdlib}/src/sys/param_env.mojo | 0 .../stdlib}/src/sys/terminate.mojo | 0 .../stdlib}/src/tempfile/__init__.mojo | 0 .../stdlib}/src/tempfile/tempfile.mojo | 0 .../stdlib}/src/testing/__init__.mojo | 0 .../stdlib}/src/testing/testing.mojo | 0 .../stdlib}/src/time/__init__.mojo | 0 {stdlib => mojo/stdlib}/src/time/time.mojo | 0 .../stdlib}/src/utils/__init__.mojo | 0 .../stdlib}/src/utils/_select.mojo | 0 .../stdlib}/src/utils/_serialize.mojo | 0 .../stdlib}/src/utils/_visualizers.mojo | 0 {stdlib => mojo/stdlib}/src/utils/index.mojo | 0 {stdlib => mojo/stdlib}/src/utils/lock.mojo | 0 {stdlib => mojo/stdlib}/src/utils/loop.mojo | 0 .../stdlib}/src/utils/numerics.mojo | 0 .../stdlib}/src/utils/static_tuple.mojo | 0 .../stdlib}/src/utils/variant.mojo | 0 {stdlib => mojo/stdlib}/src/utils/write.mojo | 0 .../stdlib}/test/base64/test_base64.mojo | 0 .../stdlib}/test/bit/test_bit.mojo | 0 .../stdlib}/test/builtin/test_any_all.mojo | 0 .../stdlib}/test/builtin/test_bfloat16.mojo | 0 .../stdlib}/test/builtin/test_bool.mojo | 0 .../test/builtin/test_debug_assert.mojo | 0 .../test_debug_assert_default_error.mojo | 0 .../builtin/test_debug_assert_mode_all.mojo | 0 .../test_debug_assert_mode_all_error.mojo | 0 .../builtin/test_debug_assert_mode_none.mojo | 0 .../builtin/test_debug_assert_warning.mojo | 0 .../builtin/test_deprecation_warnings.mojo | 0 .../stdlib}/test/builtin/test_dtype.mojo | 0 .../stdlib}/test/builtin/test_error.mojo | 0 .../stdlib}/test/builtin/test_file.mojo | 0 .../test/builtin/test_file_dummy_input.txt | 0 .../test/builtin/test_float_literal.mojo | 0 .../test/builtin/test_format_float.mojo | 0 .../stdlib}/test/builtin/test_format_int.mojo | 0 .../stdlib}/test/builtin/test_int.mojo | 0 .../test/builtin/test_int_literal.mojo | 0 .../stdlib}/test/builtin/test_issue_1004.mojo | 0 .../stdlib}/test/builtin/test_issue_1505.mojo | 0 .../stdlib}/test/builtin/test_issue_3908.mojo | 0 .../test/builtin/test_list_literal.mojo | 0 .../stdlib}/test/builtin/test_location.mojo | 0 .../stdlib}/test/builtin/test_math.mojo | 0 .../stdlib}/test/builtin/test_none.mojo | 0 .../stdlib}/test/builtin/test_object.mojo | 0 .../stdlib}/test/builtin/test_print.mojo | 0 .../test/builtin/test_print_long_string.mojo | 0 .../test/builtin/test_print_stderr.mojo | 0 .../stdlib}/test/builtin/test_range.mojo | 0 .../builtin/test_range_out_of_bounds.mojo | 0 .../test_range_uint_reverse_range_bad.mojo | 0 .../stdlib}/test/builtin/test_rebind.mojo | 0 .../stdlib}/test/builtin/test_repr.mojo | 0 .../stdlib}/test/builtin/test_reversed.mojo | 0 .../stdlib}/test/builtin/test_simd.mojo | 0 .../stdlib}/test/builtin/test_slice.mojo | 0 .../stdlib}/test/builtin/test_sort.mojo | 0 .../test/builtin/test_sort_issue_1018.mojo | 0 .../stdlib}/test/builtin/test_stdin.mojo | 0 .../stdlib}/test/builtin/test_str.mojo | 0 .../test/builtin/test_string_literal.mojo | 0 .../stdlib}/test/builtin/test_swap.mojo | 0 .../stdlib}/test/builtin/test_tuple.mojo | 0 .../stdlib}/test/builtin/test_uint.mojo | 0 .../stdlib}/test/builtin/test_uint_error.mojo | 0 .../string/test_inlined_string.mojo | 0 .../test/collections/string/test_string.mojo | 0 .../collections/string/test_string_slice.mojo | 0 .../test/collections/string/test_unicode.mojo | 0 .../test/collections/test_codepoint.mojo | 0 .../test/collections/test_counter.mojo | 0 .../stdlib}/test/collections/test_deque.mojo | 0 .../stdlib}/test/collections/test_dict.mojo | 0 .../collections/test_index_normalization.mojo | 0 .../test/collections/test_inline_array.mojo | 0 .../test/collections/test_inline_list.mojo | 0 .../test/collections/test_interval.mojo | 0 .../test/collections/test_linked_list.mojo | 0 .../stdlib}/test/collections/test_list.mojo | 0 .../test_list_getitem_invalid_index.mojo | 0 .../test/collections/test_optional.mojo | 0 .../stdlib}/test/collections/test_set.mojo | 0 .../stdlib}/test/collections/test_vector.mojo | 0 .../stdlib}/test/hashlib/test_ahash.mojo | 0 .../stdlib}/test/hashlib/test_hash.mojo | 0 .../stdlib}/test/hashlib/test_hasher.mojo | 0 {stdlib => mojo/stdlib}/test/lit.cfg.py | 0 .../stdlib}/test/memory/test_arc.mojo | 0 .../stdlib}/test/memory/test_bitcast.mojo | 0 .../test/memory/test_maybe_uninitialized.mojo | 0 .../stdlib}/test/memory/test_memory.mojo | 0 .../test/memory/test_owned_pointer.mojo | 0 .../stdlib}/test/memory/test_reference.mojo | 0 .../stdlib}/test/memory/test_span.mojo | 0 .../test/memory/test_unsafepointer.mojo | 0 .../stdlib}/test/os/path/test_basename.mojo | 0 .../stdlib}/test/os/path/test_dirname.mojo | 0 .../stdlib}/test/os/path/test_exists.mojo | 0 .../stdlib}/test/os/path/test_expanduser.mojo | 0 .../stdlib}/test/os/path/test_expandvars.mojo | 0 .../stdlib}/test/os/path/test_getsize.mojo | 0 .../stdlib}/test/os/path/test_isdir.mojo | 0 .../stdlib}/test/os/path/test_isfile.mojo | 0 .../stdlib}/test/os/path/test_islink.mojo | 0 .../stdlib}/test/os/path/test_join.mojo | 0 .../stdlib}/test/os/path/test_split.mojo | 0 .../stdlib}/test/os/path/test_splitroot.mojo | 0 .../stdlib}/test/os/test_atomic.mojo | 0 {stdlib => mojo/stdlib}/test/os/test_env.mojo | 0 .../stdlib}/test/os/test_listdir.mojo | 0 .../stdlib}/test/os/test_mkdir_and_rmdir.mojo | 0 .../stdlib}/test/os/test_no_trap.mojo | 0 .../stdlib}/test/os/test_remove.mojo | 0 .../stdlib}/test/os/test_stat.mojo | 0 .../stdlib}/test/os/test_trap.mojo | 0 .../stdlib}/test/os/test_trap_stringable.mojo | 0 .../stdlib}/test/pathlib/test_pathlib.mojo | 0 .../stdlib}/test/pwd/test_pwd.mojo | 0 .../stdlib}/test/python/custom_indexable.py | 0 ..._for_test_python_object_dunder_contains.py | 0 .../stdlib}/test/python/my_module.py | 0 .../stdlib}/test/python/test_ownership.mojo | 0 .../test/python/test_python_cpython.mojo | 0 .../python/test_python_error_handling.mojo | 0 .../stdlib}/test/python/test_python_info.mojo | 0 .../test/python/test_python_interop.mojo | 0 .../python/test_python_module_create.mojo | 0 .../test/python/test_python_object.mojo | 0 .../test_python_object_dunder_contains.mojo | 0 .../python/test_python_object_len_raises.mojo | 0 .../test/python/test_python_to_mojo.mojo | 0 .../stdlib}/test/random/test_random.mojo | 0 .../stdlib}/test/sys/test_aarch64_target.mojo | 0 .../test/sys/test_build_info_debug.mojo | 0 .../stdlib}/test/sys/test_c_types.mojo | 0 .../stdlib}/test/sys/test_compile.mojo | 0 .../stdlib}/test/sys/test_compile_debug.mojo | 0 .../stdlib}/test/sys/test_dlhandle.mojo | 0 .../stdlib}/test/sys/test_exit_0.mojo | 0 .../stdlib}/test/sys/test_exit_1.mojo | 0 .../stdlib}/test/sys/test_intrinsics.mojo | 0 .../test/sys/test_invalid_paramenv.mojo | 0 .../stdlib}/test/sys/test_linux_target.mojo | 0 .../stdlib}/test/sys/test_macos_target.mojo | 0 .../stdlib}/test/sys/test_paramenv.mojo | 0 .../stdlib}/test/sys/test_sizeof.mojo | 0 .../stdlib}/test/sys/test_targetinfo.mojo | 0 .../stdlib}/test/sys/test_windows_target.mojo | 0 .../stdlib}/test/tempfile/test_tempfile.mojo | 0 .../stdlib}/test/test_utils/__init__.mojo | 0 .../stdlib}/test/test_utils/test_utils.mojo | 0 .../stdlib}/test/test_utils/types.mojo | 0 .../test/testing/test_assert_raises.mojo | 0 .../stdlib}/test/testing/test_assertion.mojo | 0 .../stdlib}/test/time/test_time.mojo | 0 .../stdlib}/test/utils/issue_13632.mojo | 0 .../stdlib}/test/utils/test_index.mojo | 0 .../stdlib}/test/utils/test_numerics.mojo | 0 .../stdlib}/test/utils/test_select.mojo | 0 .../stdlib}/test/utils/test_static_tuple.mojo | 0 .../stdlib}/test/utils/test_tuple.mojo | 0 .../stdlib}/test/utils/test_unroll.mojo | 0 .../stdlib}/test/utils/test_variant.mojo | 0 .../stdlib}/test/utils/test_write.mojo | 0 .../test/utils/test_write_to_stdout.mojo | 0 pyproject.toml | 14 + src/max/Dockerfile.cpu | 46 + src/max/Dockerfile.cuda-simple | 50 + src/max/Dockerfile.cuda-small | 63 + src/max/README.md | 41 + src/max/entrypoints/cli/__init__.py | 51 + src/max/entrypoints/cli/config.py | 202 ++ src/max/entrypoints/cli/device_options.py | 90 + src/max/entrypoints/cli/encode.py | 97 + src/max/entrypoints/cli/entrypoint.py | 34 + src/max/entrypoints/cli/generate.py | 156 ++ src/max/entrypoints/cli/list.py | 64 + src/max/entrypoints/cli/metrics.py | 225 ++ src/max/entrypoints/cli/serve.py | 115 + src/max/entrypoints/llm.py | 185 ++ src/max/entrypoints/pipelines.py | 274 ++ src/max/pipelines/README.md | 119 + src/max/pipelines/__init__.py | 98 + src/max/pipelines/architectures/__init__.py | 49 + .../deepseekV2/layers/__init__.py | 14 + .../deepseekV2/layers/moe_gate.py | 82 + .../architectures/exaone/__init__.py | 16 + .../pipelines/architectures/exaone/arch.py | 59 + .../architectures/exaone/weight_adapters.py | 56 + .../architectures/granite/__init__.py | 16 + .../pipelines/architectures/granite/arch.py | 55 + .../pipelines/architectures/granite/model.py | 38 + .../pipelines/architectures/llama3/README.md | 134 + .../architectures/llama3/__init__.py | 16 + .../pipelines/architectures/llama3/arch.py | 66 + .../pipelines/architectures/llama3/config.py | 54 + .../pipelines/architectures/llama3/gguf.py | 468 ++++ .../pipelines/architectures/llama3/llama3.py | 198 ++ .../pipelines/architectures/llama3/model.py | 817 ++++++ .../architectures/llama3/naive_llama3.py | 317 +++ .../architectures/llama3/weight_adapters.py | 289 +++ .../architectures/llama_vision/README.md | 138 ++ .../architectures/llama_vision/__init__.py | 16 + .../architectures/llama_vision/arch.py | 36 + .../architectures/llama_vision/attention.py | 107 + .../llama_vision/cross_attention_decoder.py | 173 ++ .../architectures/llama_vision/encoder.py | 105 + .../llama_vision/language_model.py | 468 ++++ .../llama_vision/llama_vision.py | 1184 +++++++++ .../architectures/llama_vision/mlp.py | 36 + .../llama_vision/positional_embedding.py | 131 + .../llama_vision/vision_model.py | 741 ++++++ .../pipelines/architectures/mistral/README.md | 129 + .../architectures/mistral/__init__.py | 19 + .../pipelines/architectures/mistral/arch.py | 36 + .../pipelines/architectures/mistral/graph.py | 253 ++ .../pipelines/architectures/mistral/model.py | 254 ++ .../pipelines/architectures/mpnet/__init__.py | 16 + src/max/pipelines/architectures/mpnet/arch.py | 38 + .../pipelines/architectures/mpnet/graph.py | 493 ++++ .../pipelines/architectures/mpnet/model.py | 200 ++ .../pipelines/architectures/olmo/__init__.py | 16 + src/max/pipelines/architectures/olmo/arch.py | 52 + src/max/pipelines/architectures/olmo/model.py | 32 + .../pipelines/architectures/phi3/__init__.py | 16 + src/max/pipelines/architectures/phi3/arch.py | 52 + src/max/pipelines/architectures/phi3/model.py | 33 + .../pipelines/architectures/pixtral/README.md | 134 + .../architectures/pixtral/__init__.py | 16 + .../pipelines/architectures/pixtral/arch.py | 39 + .../architectures/pixtral/llava/__init__.py | 14 + .../architectures/pixtral/llava/llava.py | 178 ++ .../pixtral/llava/llava_decoder.py | 128 + .../pixtral/llava/llava_projector.py | 34 + .../architectures/pixtral/model/graph.py | 311 +++ .../pixtral/model/mistral_graph.py | 236 ++ .../architectures/pixtral/pixtral.py | 362 +++ .../pixtral/vision_encoder/__init__.py | 14 + .../pixtral/vision_encoder/attention.py | 139 ++ .../pixtral/vision_encoder/attention_utils.py | 125 + .../pixtral/vision_encoder/graph.py | 218 ++ .../vision_encoder/rotary_embedding_2d.py | 200 ++ .../pixtral/vision_encoder/transformer.py | 113 + .../pixtral/vision_encoder/vision_encoder.py | 93 + .../pipelines/architectures/qwen2/README.md | 120 + .../pipelines/architectures/qwen2/__init__.py | 16 + src/max/pipelines/architectures/qwen2/arch.py | 47 + .../pipelines/architectures/qwen2/graph.py | 309 +++ .../pipelines/architectures/qwen2/model.py | 498 ++++ .../pipelines/architectures/replit/README.md | 119 + .../architectures/replit/__init__.py | 16 + .../pipelines/architectures/replit/arch.py | 39 + .../pipelines/architectures/replit/graph.py | 204 ++ .../pipelines/architectures/replit/model.py | 316 +++ .../architectures/whisper/encoder.py | 187 ++ .../pipelines/architectures/whisper/graph.py | 294 +++ .../pipelines/architectures/whisper/model.py | 81 + src/max/pipelines/config.py | 1093 ++++++++ src/max/pipelines/context.py | 294 +++ src/max/pipelines/dataprocessing/__init__.py | 30 + .../dataprocessing/causal_attention_mask.py | 67 + .../causal_attention_mask_with_alibi.py | 68 + .../pipelines/dataprocessing/collate_batch.py | 120 + .../dataprocessing/max_tokens_to_generate.py | 24 + src/max/pipelines/embeddings_pipeline.py | 86 + src/max/pipelines/hf_pipeline.py | 384 +++ src/max/pipelines/hf_utils.py | 56 + src/max/pipelines/interfaces/__init__.py | 42 + .../interfaces/embeddings_generation.py | 39 + .../max/pipelines/interfaces/tasks.py | 16 +- .../pipelines/interfaces/text_generation.py | 277 +++ src/max/pipelines/kv_cache/__init__.py | 183 ++ src/max/pipelines/kv_cache/_utils.py | 33 + src/max/pipelines/kv_cache/cache_params.py | 84 + .../kv_cache/continuous_batching_cache.py | 405 +++ src/max/pipelines/kv_cache/hf.py | 149 ++ src/max/pipelines/kv_cache/manager.py | 542 ++++ src/max/pipelines/kv_cache/naive_cache.py | 216 ++ src/max/pipelines/kv_cache/paged_cache.py | 746 ++++++ .../kv_cache/paged_cache_metadata.py | 171 ++ src/max/pipelines/kv_cache/prefix_cache.py | 369 +++ src/max/pipelines/kv_cache/radix_trie.py | 479 ++++ src/max/pipelines/kv_cache/simple_trie.py | 152 ++ src/max/pipelines/nn/__init__.py | 88 + src/max/pipelines/nn/_identity.py | 71 + src/max/pipelines/nn/attention/__init__.py | 44 + src/max/pipelines/nn/attention/attention.py | 157 ++ .../nn/attention/attention_with_rope.py | 626 +++++ .../nn/attention/attention_without_mask.py | 74 + src/max/pipelines/nn/attention/clamp.py | 22 + src/max/pipelines/nn/attention/interfaces.py | 288 +++ .../nn/attention/naive_attention_with_rope.py | 223 ++ src/max/pipelines/nn/comm/__init__.py | 18 + src/max/pipelines/nn/comm/allreduce.py | 51 + .../pipelines/nn/compute_log_probabilities.py | 101 + src/max/pipelines/nn/conv.py | 177 ++ src/max/pipelines/nn/embedding.py | 255 ++ src/max/pipelines/nn/hooks/__init__.py | 20 + src/max/pipelines/nn/hooks/base_print_hook.py | 159 ++ src/max/pipelines/nn/hooks/identity.py | 71 + src/max/pipelines/nn/hooks/print_hook.py | 91 + .../pipelines/nn/hooks/torch_print_hook.py | 69 + src/max/pipelines/nn/kernels.py | 910 +++++++ src/max/pipelines/nn/layer/__init__.py | 30 + src/max/pipelines/nn/layer/layer.py | 423 ++++ src/max/pipelines/nn/layer/layer_list.py | 77 + src/max/pipelines/nn/linear.py | 555 +++++ src/max/pipelines/nn/norm/__init__.py | 23 + src/max/pipelines/nn/norm/layer_norm.py | 75 + src/max/pipelines/nn/norm/rms_norm.py | 64 + src/max/pipelines/nn/rotary_embedding.py | 156 ++ src/max/pipelines/nn/sequential.py | 20 + src/max/pipelines/nn/transformer/__init__.py | 29 + .../nn/transformer/distributed_transformer.py | 149 ++ .../nn/transformer/naive_transformer.py | 139 ++ .../pipelines/nn/transformer/transformer.py | 162 ++ src/max/pipelines/pipeline.py | 739 ++++++ src/max/pipelines/registry.py | 1045 ++++++++ src/max/pipelines/requirements.txt | 38 + src/max/pipelines/response.py | 102 + src/max/pipelines/sampling.py | 95 + src/max/pipelines/tokenizer.py | 518 ++++ src/max/pixi.toml | 17 + tutorials/README.md | 4 + tutorials/deploy-aws-kubernetes/README.md | 6 + tutorials/deploy-aws-kubernetes/client.py | 63 + .../deploy-cloudformation-sagemaker/README.md | 7 + .../deploy-cloudformation-sagemaker/client.py | 116 + tutorials/hello-magic/.gitattributes | 2 + tutorials/hello-magic/.gitignore | 5 + tutorials/hello-magic/hello.mojo | 16 + tutorials/hello-magic/local/.gitattributes | 2 + tutorials/hello-magic/local/.gitignore | 5 + tutorials/hello-magic/local/__init__.mojo | 14 + tutorials/hello-magic/local/mojoproject.toml | 13 + tutorials/hello-magic/local/zero.mojo | 23 + tutorials/hello-magic/main.py | 47 + tutorials/hello-magic/mojoproject.toml | 30 + tutorials/helm/max-openai-api/.helmignore | 19 + tutorials/helm/max-openai-api/Chart.yaml | 28 + tutorials/helm/max-openai-api/README.md | 193 ++ .../helm/max-openai-api/README.md.gotmpl | 112 + .../helm/max-openai-api/templates/NOTES.txt | 22 + .../max-openai-api/templates/_helpers.tpl | 43 + .../max-openai-api/templates/deployment.yaml | 181 ++ .../helm/max-openai-api/templates/hpa.yaml | 47 + .../max-openai-api/templates/ingress.yaml | 57 + .../max-openai-api/templates/secret-env.yaml | 29 + .../max-openai-api/templates/service.yaml | 34 + .../templates/serviceaccount.yaml | 28 + tutorials/helm/max-openai-api/values.yaml | 239 ++ tutorials/max-graph-api/.gitattributes | 2 + tutorials/max-graph-api/.gitignore | 7 + tutorials/max-graph-api/README.md | 7 + tutorials/max-graph-api/add.mojo | 44 + tutorials/max-graph-api/add.png | Bin 0 -> 16220 bytes tutorials/max-graph-api/matmul.mojo | 50 + tutorials/max-graph-api/matmul.png | Bin 0 -> 15427 bytes tutorials/max-graph-api/mnist.mojo | 158 ++ tutorials/max-graph-api/mnist.png | Bin 0 -> 71811 bytes tutorials/max-graph-api/mnist.py | 123 + tutorials/max-graph-api/mojoproject.toml | 19 + tutorials/max-graph-python/.mypy.ini | 2 + tutorials/max-graph-python/README.md | 60 + tutorials/max-graph-python/pyproject.toml | 33 + .../max-graph-python/src/max_ops/__init__.py | 12 + .../max-graph-python/src/max_ops/addition.py | 51 + tutorials/max-graph-python/tests/__init__.py | 12 + .../aws/max-serve-aws.yaml | 250 ++ .../max-serve-cloud-configs/aws/notify.sh | 106 + .../azure/max-serve-azure.json | 252 ++ .../max-serve-cloud-configs/azure/notify.sh | 113 + .../gcp/max-serve-gcp.jinja | 120 + .../max-serve-cloud-configs/gcp/notify.sh | 103 + .../.gitattributes | 2 + .../run-embeddings-with-max-serve/.gitignore | 6 + .../run-embeddings-with-max-serve/README.md | 16 + .../pyproject.toml | 25 + .../src/embeddings/__init__.py | 12 + .../src/embeddings/kb_system.py | 196 ++ tutorials/run-onnx-with-python/.gitignore | 2 + tutorials/run-onnx-with-python/README.md | 21 + .../run-onnx-with-python/download-model.py | 47 + tutorials/run-onnx-with-python/pyproject.toml | 36 + tutorials/run-onnx-with-python/run.py | 50 + .../src/onnx_tutorial/__init__.py | 12 + .../run-torchscript-with-python/.gitignore | 2 + .../run-torchscript-with-python/README.md | 22 + .../download-model.py | 43 + .../pyproject.toml | 31 + tutorials/run-torchscript-with-python/run.py | 76 + .../src/torchscript_tutorial/__init__.py | 12 + 836 files changed, 43185 insertions(+), 2435 deletions(-) create mode 100644 .clang-format create mode 100644 .clang-tidy create mode 100644 .gitattributes create mode 100644 .github/ISSUE_TEMPLATE/CODEOWNERS create mode 100644 .github/ISSUE_TEMPLATE/max_bug_report.yaml create mode 100644 .github/ISSUE_TEMPLATE/max_builds_bug_report.yaml create mode 100644 .github/ISSUE_TEMPLATE/max_feature_request.yaml delete mode 100644 .pre-commit-config.yaml rename {examples/testing => benchmark}/.gitattributes (100%) create mode 100644 benchmark/.gitignore create mode 100644 benchmark/README.md create mode 100644 benchmark/benchmark_serving.py create mode 100644 benchmark/pyproject.toml create mode 100644 benchmark/requirements.txt create mode 100644 examples/console.py create mode 100644 examples/custom_ops/.gitignore create mode 100644 examples/custom_ops/README.md create mode 100644 examples/custom_ops/addition.py create mode 100644 examples/custom_ops/fused_attention.py create mode 100644 examples/custom_ops/histogram.py create mode 100644 examples/custom_ops/kernels/__init__.mojo create mode 100644 examples/custom_ops/kernels/add_custom.mojo create mode 100644 examples/custom_ops/kernels/fused_attention.mojo create mode 100644 examples/custom_ops/kernels/histogram.mojo create mode 100644 examples/custom_ops/kernels/mandelbrot.mojo create mode 100644 examples/custom_ops/kernels/matrix_multiplication.mojo create mode 100644 examples/custom_ops/kernels/top_k.mojo create mode 100644 examples/custom_ops/kernels/vector_addition.mojo create mode 100644 examples/custom_ops/mandelbrot.py create mode 100644 examples/custom_ops/matrix_multiplication.py create mode 100644 examples/custom_ops/mojoproject.toml create mode 100644 examples/custom_ops/parametric_addition.py create mode 100644 examples/custom_ops/top_k.py create mode 100644 examples/custom_ops/vector_addition.py create mode 100755 examples/gpu_functions/README.md create mode 100755 examples/gpu_functions/grayscale.mojo create mode 100755 examples/gpu_functions/mandelbrot.mojo create mode 100755 examples/gpu_functions/mojoproject.toml create mode 100755 examples/gpu_functions/naive_matrix_multiplication.mojo create mode 100755 examples/gpu_functions/vector_addition.mojo create mode 100644 examples/graph-api/README.md create mode 100644 examples/graph-api/basics/README.md create mode 100644 "examples/graph-api/basics/basic.\360\237\224\245" create mode 100644 examples/graph-api/environment.yml create mode 100644 examples/graph-api/pixi.toml create mode 100644 examples/graph-api/requirements.txt create mode 100644 examples/gui/.gitattributes create mode 100644 examples/gui/.gitignore create mode 100644 examples/gui/.streamlit/config.toml create mode 100644 examples/gui/README.md create mode 100755 examples/gui/home.py create mode 100644 examples/gui/mojoproject.toml create mode 100644 examples/gui/pages/bert.py create mode 100644 examples/gui/pages/llama3_1.py create mode 100644 examples/gui/pages/stable-diffusion.py create mode 100644 examples/gui/pages/yolo.py create mode 100644 examples/gui/ragdata/mojo_functions.txt create mode 100644 examples/gui/shared.py create mode 100644 examples/inference/README.md create mode 100644 examples/inference/bert-c-torchscript/.gitignore create mode 100644 examples/inference/bert-c-torchscript/CMakeLists.txt create mode 100644 examples/inference/bert-c-torchscript/README.md create mode 100644 examples/inference/bert-c-torchscript/environment.yml create mode 100644 examples/inference/bert-c-torchscript/main.c create mode 100644 examples/inference/bert-c-torchscript/pixi.toml create mode 100644 examples/inference/bert-c-torchscript/post-process.py create mode 100644 examples/inference/bert-c-torchscript/pre-process.py create mode 100755 examples/inference/bert-c-torchscript/run.sh create mode 100644 examples/inference/bert-mojo-torchscript/README.md create mode 100644 examples/inference/bert-mojo-torchscript/environment.yml create mode 100644 examples/inference/bert-mojo-torchscript/pixi.toml create mode 100755 examples/inference/bert-mojo-torchscript/run.sh create mode 100755 "examples/inference/bert-mojo-torchscript/simple_inference.\360\237\224\245" create mode 100644 examples/inference/bert-python-torchscript/.gitignore create mode 100644 examples/inference/bert-python-torchscript/README.md create mode 100644 examples/inference/bert-python-torchscript/environment.yml create mode 100644 examples/inference/bert-python-torchscript/pixi.toml create mode 100755 examples/inference/bert-python-torchscript/run.sh create mode 100644 examples/inference/bert-python-torchscript/simple-inference.py create mode 100644 examples/inference/common/bert-torchscript/download-model.py create mode 100644 examples/inference/resnet50-python-torchscript/.gitignore create mode 100644 examples/inference/resnet50-python-torchscript/README.md create mode 100644 examples/inference/resnet50-python-torchscript/download-model.py create mode 100644 examples/inference/resnet50-python-torchscript/environment.yml create mode 100644 examples/inference/resnet50-python-torchscript/input/leatherback_turtle.jpg create mode 100644 examples/inference/resnet50-python-torchscript/pixi.toml create mode 100755 examples/inference/resnet50-python-torchscript/run.sh create mode 100644 examples/inference/resnet50-python-torchscript/simple-inference.py create mode 100644 examples/inference/stable-diffusion-mojo-onnx/.gitignore create mode 100644 examples/inference/stable-diffusion-mojo-onnx/README.md create mode 100644 examples/inference/stable-diffusion-mojo-onnx/environment.yml create mode 100644 examples/inference/stable-diffusion-mojo-onnx/pixi.toml create mode 100644 "examples/inference/stable-diffusion-mojo-onnx/python_utils.\360\237\224\245" create mode 100755 examples/inference/stable-diffusion-mojo-onnx/run.sh create mode 100644 "examples/inference/stable-diffusion-mojo-onnx/scheduler.\360\237\224\245" create mode 100755 "examples/inference/stable-diffusion-mojo-onnx/text_to_image.\360\237\224\245" create mode 100644 examples/inference/stable-diffusion-python-onnx/.gitignore create mode 100644 examples/inference/stable-diffusion-python-onnx/README.md create mode 100644 examples/inference/stable-diffusion-python-onnx/environment.yml create mode 100644 examples/inference/stable-diffusion-python-onnx/pixi.toml create mode 100755 examples/inference/stable-diffusion-python-onnx/run.sh create mode 100755 examples/inference/stable-diffusion-python-onnx/text_to_image.py create mode 100644 examples/inference/yolo-python-onnx/.gitignore create mode 100644 examples/inference/yolo-python-onnx/README.md create mode 100644 examples/inference/yolo-python-onnx/constants.py create mode 100644 examples/inference/yolo-python-onnx/download-model.py create mode 100644 examples/inference/yolo-python-onnx/environment.yml create mode 100644 examples/inference/yolo-python-onnx/input.mp4 create mode 100644 examples/inference/yolo-python-onnx/pixi.toml create mode 100644 examples/inference/yolo-python-onnx/requirements.txt create mode 100755 examples/inference/yolo-python-onnx/run.sh create mode 100755 examples/inference/yolo-python-onnx/segment.py delete mode 100644 examples/lit.cfg.py create mode 100644 examples/models/README.md rename examples/{ => mojo}/.gitignore (100%) create mode 100644 examples/mojo/README.md rename examples/{ => mojo}/check_mod.py (100%) rename examples/{ => mojo}/deviceinfo.mojo (100%) rename "examples/hello.\360\237\224\245" => "examples/mojo/hello.\360\237\224\245" (100%) rename examples/{ => mojo}/hello_interop.mojo (100%) rename examples/{ => mojo}/life/README.md (100%) rename examples/{ => mojo}/life/benchmark.mojo (100%) rename examples/{ => mojo}/life/gridv1.mojo (100%) rename examples/{ => mojo}/life/gridv2.mojo (100%) rename examples/{ => mojo}/life/lifev1.mojo (100%) rename examples/{ => mojo}/life/lifev2.mojo (100%) rename examples/{ => mojo}/life/mojoproject.toml (100%) rename examples/{ => mojo}/life/test/test_gridv1.mojo (100%) rename examples/{ => mojo}/life/test/test_gridv2.mojo (100%) rename examples/{ => mojo}/mandelbrot.mojo (100%) rename examples/{ => mojo}/matmul.mojo (100%) rename examples/{ => mojo}/mojoproject.toml (100%) rename examples/{ => mojo}/nbody.mojo (100%) rename examples/{ => mojo}/operators/README.md (100%) rename examples/{ => mojo}/operators/main.mojo (100%) rename examples/{ => mojo}/operators/mojoproject.toml (100%) rename examples/{ => mojo}/operators/my_complex.mojo (100%) rename examples/{ => mojo}/operators/test_my_complex.mojo (100%) rename examples/{ => mojo}/pymatmul.py (100%) rename examples/{ => mojo}/reduce.mojo (100%) rename examples/{ => mojo}/simple_interop.py (100%) create mode 100644 examples/mojo/testing/.gitattributes rename examples/{ => mojo}/testing/.gitignore (100%) rename examples/{ => mojo}/testing/README.md (100%) rename examples/{ => mojo}/testing/mojoproject.toml (100%) rename examples/{ => mojo}/testing/src/example.mojo (100%) rename examples/{ => mojo}/testing/src/my_math/__init__.mojo (100%) rename examples/{ => mojo}/testing/src/my_math/utils.mojo (100%) rename examples/{ => mojo}/testing/test/my_math/test_dec.mojo (100%) rename examples/{ => mojo}/testing/test/my_math/test_inc.mojo (100%) create mode 100644 examples/notebooks/.gitignore create mode 100644 examples/notebooks/README.md create mode 100644 examples/notebooks/gemma2b-python-onnx.ipynb create mode 100644 examples/notebooks/mistral7b-python-onnx.ipynb create mode 100644 examples/notebooks/pixi.toml create mode 100644 examples/notebooks/roberta-python-pytorch.ipynb create mode 100644 examples/offline-inference/README.md create mode 100644 examples/offline-inference/basic.py create mode 100644 examples/offline-inference/pixi.toml delete mode 100644 magic.lock rename {.github => mojo/.github}/CODEOWNERS (100%) create mode 100644 mojo/.github/ISSUE_TEMPLATE/doc_issue.yaml rename {.github => mojo/.github}/ISSUE_TEMPLATE/mojo_bug_report.yaml (100%) rename {.github => mojo/.github}/ISSUE_TEMPLATE/mojo_feature_request.yaml (100%) rename {.github => mojo/.github}/PULL_REQUEST_TEMPLATE.md (100%) rename {.github => mojo/.github}/workflows/check_pr_target.yml (100%) rename {.github => mojo/.github}/workflows/check_pr_title.yml (100%) rename {.github => mojo/.github}/workflows/standard_library_tests_and_examples.yml (100%) rename {.github => mojo/.github}/workflows/test_pre_commit.yml (100%) create mode 100644 mojo/CODE_OF_CONDUCT.md rename CONTRIBUTING.md => mojo/CONTRIBUTING.md (100%) create mode 100644 mojo/LICENSE create mode 100644 mojo/README.md rename {docs => mojo/docs}/README.md (100%) rename {docs => mojo/docs}/changelog-released.md (100%) rename {docs => mojo/docs}/changelog.md (100%) rename {docs => mojo/docs}/faq.md (100%) rename {docs => mojo/docs}/images/dynamic-vector-capacity.png (100%) rename {docs => mojo/docs}/images/let-to-var.png (100%) rename {docs => mojo/docs}/images/vectorize-fix.png (100%) rename {docs => mojo/docs}/lib.mdx (100%) rename {docs => mojo/docs}/manual/basics.mdx (100%) rename {docs => mojo/docs}/manual/control-flow.mdx (100%) rename {docs => mojo/docs}/manual/decorators/always-inline.md (100%) rename {docs => mojo/docs}/manual/decorators/copy-capture.md (100%) rename {docs => mojo/docs}/manual/decorators/implicit.md (100%) rename {docs => mojo/docs}/manual/decorators/index.mdx (100%) rename {docs => mojo/docs}/manual/decorators/nonmaterializable.md (100%) rename {docs => mojo/docs}/manual/decorators/parameter.md (100%) rename {docs => mojo/docs}/manual/decorators/register-passable.md (100%) rename {docs => mojo/docs}/manual/decorators/staticmethod.md (100%) rename {docs => mojo/docs}/manual/decorators/value.md (100%) rename {docs => mojo/docs}/manual/errors.mdx (100%) rename {docs => mojo/docs}/manual/functions.mdx (100%) rename {docs => mojo/docs}/manual/get-started.mdx (100%) rename {docs => mojo/docs}/manual/images/game-of-life-screen.png (100%) rename {docs => mojo/docs}/manual/images/mojo-vscode.png (100%) rename {docs => mojo/docs}/manual/images/owned-pointer-diagram-dark.png (100%) rename {docs => mojo/docs}/manual/images/owned-pointer-diagram.png (100%) rename {docs => mojo/docs}/manual/images/pointer-diagram-dark.png (100%) rename {docs => mojo/docs}/manual/images/pointer-diagram.png (100%) rename {docs => mojo/docs}/manual/images/pointer-lifecycle-dark.png (100%) rename {docs => mojo/docs}/manual/images/pointer-lifecycle.png (100%) rename {docs => mojo/docs}/manual/images/pointer-offset-dark.png (100%) rename {docs => mojo/docs}/manual/images/pointer-offset.png (100%) rename {docs => mojo/docs}/manual/images/strided-load-storage-dark.png (100%) rename {docs => mojo/docs}/manual/images/strided-load-storage.png (100%) rename {docs => mojo/docs}/manual/index.md (100%) rename {docs => mojo/docs}/manual/lifecycle/death.mdx (100%) rename {docs => mojo/docs}/manual/lifecycle/index.mdx (100%) rename {docs => mojo/docs}/manual/lifecycle/life.mdx (100%) rename {docs => mojo/docs}/manual/operators.mdx (100%) rename {docs => mojo/docs}/manual/packages.md (100%) rename {docs => mojo/docs}/manual/parameters/index.mdx (100%) rename {docs => mojo/docs}/manual/pointers/index.mdx (100%) rename {docs => mojo/docs}/manual/pointers/unsafe-pointers.mdx (100%) rename {docs => mojo/docs}/manual/python/index.mdx (100%) rename {docs => mojo/docs}/manual/python/types.mdx (100%) rename {docs => mojo/docs}/manual/structs.mdx (100%) rename {docs => mojo/docs}/manual/traits.mdx (100%) rename {docs => mojo/docs}/manual/types.mdx (100%) rename {docs => mojo/docs}/manual/values/index.mdx (100%) rename {docs => mojo/docs}/manual/values/lifetimes.mdx (100%) rename {docs => mojo/docs}/manual/values/ownership.mdx (100%) rename {docs => mojo/docs}/manual/values/value-semantics.mdx (100%) rename {docs => mojo/docs}/manual/variables.mdx (100%) rename {docs => mojo/docs}/roadmap.md (100%) rename {docs => mojo/docs}/tools/debugging.mdx (100%) rename {docs => mojo/docs}/tools/images/break-on-raise.png (100%) rename {docs => mojo/docs}/tools/images/breakpoint-hit-count.png (100%) rename {docs => mojo/docs}/tools/images/debug-toolbar.png (100%) rename {docs => mojo/docs}/tools/images/debugger-call-stack-nested1.png (100%) rename {docs => mojo/docs}/tools/images/debugger-variables.png (100%) rename {docs => mojo/docs}/tools/images/launch-configuration-menu.png (100%) rename {docs => mojo/docs}/tools/images/quick-run-or-debug-button-debug.png (100%) rename {docs => mojo/docs}/tools/images/quick-run-or-debug-button.png (100%) rename {docs => mojo/docs}/tools/images/quick-run-or-debug-menu.png (100%) rename {docs => mojo/docs}/tools/images/run-and-debug-icon.png (100%) rename {docs => mojo/docs}/tools/images/run-and-debug-view.png (100%) rename {docs => mojo/docs}/tools/images/run-start-view.png (100%) rename {docs => mojo/docs}/tools/testing.mdx (100%) rename {docs => mojo/docs}/why-mojo.md (100%) rename pixi.toml => mojo/pixi.toml (100%) rename {proposals => mojo/proposals}/README.md (100%) rename {proposals => mojo/proposals}/always_inline_builtin.md (100%) rename {proposals => mojo/proposals}/byte-as-uint8.md (100%) rename {proposals => mojo/proposals}/improved-hash-module.md (100%) rename {proposals => mojo/proposals}/inferred-parameters.md (100%) rename {proposals => mojo/proposals}/lifetimes-and-provenance.md (100%) rename {proposals => mojo/proposals}/lifetimes-keyword-renaming.md (100%) rename {proposals => mojo/proposals}/mojo-and-dynamism.md (100%) rename {proposals => mojo/proposals}/opt-in-implicit-conversion.md (100%) rename {proposals => mojo/proposals}/project-manifest-and-build-tool.md (100%) rename {proposals => mojo/proposals}/ref-convention.md (100%) rename {proposals => mojo/proposals}/remove-let-decls.md (100%) rename {proposals => mojo/proposals}/stdlib-insider-docs.md (100%) rename {proposals => mojo/proposals}/value-ownership.md (100%) rename {stdlib => mojo/stdlib}/README.md (100%) rename {stdlib => mojo/stdlib}/benchmarks/README.md (100%) rename {stdlib => mojo/stdlib}/benchmarks/algorithm/bench_elementwise.mojo (100%) rename {stdlib => mojo/stdlib}/benchmarks/builtin/bench_int.mojo (100%) rename {stdlib => mojo/stdlib}/benchmarks/builtin/bench_sort.mojo (100%) rename {stdlib => mojo/stdlib}/benchmarks/collections/bench_dict.mojo (100%) rename {stdlib => mojo/stdlib}/benchmarks/collections/bench_string.mojo (100%) rename {stdlib => mojo/stdlib}/benchmarks/collections/data/README.md (100%) rename {stdlib => mojo/stdlib}/benchmarks/collections/data/UN_charter_AR.html (100%) rename {stdlib => mojo/stdlib}/benchmarks/collections/data/UN_charter_AR.txt (100%) rename {stdlib => mojo/stdlib}/benchmarks/collections/data/UN_charter_EN.html (100%) rename {stdlib => mojo/stdlib}/benchmarks/collections/data/UN_charter_EN.txt (100%) rename {stdlib => mojo/stdlib}/benchmarks/collections/data/UN_charter_ES.html (100%) rename {stdlib => mojo/stdlib}/benchmarks/collections/data/UN_charter_ES.txt (100%) rename {stdlib => mojo/stdlib}/benchmarks/collections/data/UN_charter_RU.html (100%) rename {stdlib => mojo/stdlib}/benchmarks/collections/data/UN_charter_RU.txt (100%) rename {stdlib => mojo/stdlib}/benchmarks/collections/data/UN_charter_zh-CN.html (100%) rename {stdlib => mojo/stdlib}/benchmarks/collections/data/UN_charter_zh-CN.txt (100%) rename {stdlib => mojo/stdlib}/benchmarks/hashlib/bench_hash.mojo (100%) rename {stdlib => mojo/stdlib}/benchmarks/lit.cfg.py (100%) rename {stdlib => mojo/stdlib}/benchmarks/math/bench_math.mojo (100%) rename {stdlib => mojo/stdlib}/benchmarks/utils/bench_formatter.mojo (100%) rename {stdlib => mojo/stdlib}/benchmarks/utils/bench_memmem.mojo (100%) rename {stdlib => mojo/stdlib}/docs/development.md (100%) rename {stdlib => mojo/stdlib}/docs/docstring-style-guide.md (100%) rename {stdlib => mojo/stdlib}/docs/faq.md (100%) rename {stdlib => mojo/stdlib}/docs/governance-structure.md (100%) rename {stdlib => mojo/stdlib}/docs/images/create-fork.png (100%) rename {stdlib => mojo/stdlib}/docs/images/doc-lint-quick-fix.png (100%) rename {stdlib => mojo/stdlib}/docs/images/nightly-extension.png (100%) rename {stdlib => mojo/stdlib}/docs/internal/README.md (100%) rename {stdlib => mojo/stdlib}/docs/internal/compiler.md (100%) rename {stdlib => mojo/stdlib}/docs/internal/mlir.md (100%) rename {stdlib => mojo/stdlib}/docs/internal/runtime.md (100%) rename {stdlib => mojo/stdlib}/docs/roadmap.md (100%) rename {stdlib => mojo/stdlib}/docs/style-guide.md (100%) rename {stdlib => mojo/stdlib}/docs/vision.md (100%) rename {stdlib => mojo/stdlib}/scripts/.markdownlint.yaml (100%) rename {stdlib => mojo/stdlib}/scripts/build-stdlib.sh (100%) rename {stdlib => mojo/stdlib}/scripts/check-docstrings.py (100%) rename {stdlib => mojo/stdlib}/scripts/check_licenses.mojo (100%) rename {stdlib => mojo/stdlib}/scripts/install-build-tools-linux.sh (100%) rename {stdlib => mojo/stdlib}/scripts/install-build-tools-macos.sh (100%) rename {stdlib => mojo/stdlib}/scripts/markdownlint.sh (100%) rename {stdlib => mojo/stdlib}/scripts/run-benchmarks.sh (100%) rename {stdlib => mojo/stdlib}/scripts/run-tests.sh (100%) rename {stdlib => mojo/stdlib}/src/__init__.mojo (100%) rename {stdlib => mojo/stdlib}/src/base64/__init__.mojo (100%) rename {stdlib => mojo/stdlib}/src/base64/_b64encode.mojo (100%) rename {stdlib => mojo/stdlib}/src/base64/base64.mojo (100%) rename {stdlib => mojo/stdlib}/src/bit/__init__.mojo (100%) rename {stdlib => mojo/stdlib}/src/bit/bit.mojo (100%) rename {stdlib => mojo/stdlib}/src/builtin/__init__.mojo (100%) rename {stdlib => mojo/stdlib}/src/builtin/_closure.mojo (100%) rename {stdlib => mojo/stdlib}/src/builtin/_format_float.mojo (100%) rename {stdlib => mojo/stdlib}/src/builtin/_location.mojo (100%) rename {stdlib => mojo/stdlib}/src/builtin/_pybind.mojo (100%) rename {stdlib => mojo/stdlib}/src/builtin/_startup.mojo (100%) rename {stdlib => mojo/stdlib}/src/builtin/_stubs.mojo (100%) rename {stdlib => mojo/stdlib}/src/builtin/anytype.mojo (100%) rename {stdlib => mojo/stdlib}/src/builtin/bool.mojo (100%) rename {stdlib => mojo/stdlib}/src/builtin/breakpoint.mojo (100%) rename {stdlib => mojo/stdlib}/src/builtin/builtin_list.mojo (100%) rename {stdlib => mojo/stdlib}/src/builtin/builtin_slice.mojo (100%) rename {stdlib => mojo/stdlib}/src/builtin/comparable.mojo (100%) rename {stdlib => mojo/stdlib}/src/builtin/constrained.mojo (100%) rename {stdlib => mojo/stdlib}/src/builtin/coroutine.mojo (100%) rename {stdlib => mojo/stdlib}/src/builtin/debug_assert.mojo (100%) rename {stdlib => mojo/stdlib}/src/builtin/dtype.mojo (100%) rename {stdlib => mojo/stdlib}/src/builtin/equality_comparable.mojo (100%) rename {stdlib => mojo/stdlib}/src/builtin/error.mojo (100%) rename {stdlib => mojo/stdlib}/src/builtin/file.mojo (100%) rename {stdlib => mojo/stdlib}/src/builtin/file_descriptor.mojo (100%) rename {stdlib => mojo/stdlib}/src/builtin/float_literal.mojo (100%) rename {stdlib => mojo/stdlib}/src/builtin/floatable.mojo (100%) rename {stdlib => mojo/stdlib}/src/builtin/format_int.mojo (100%) rename {stdlib => mojo/stdlib}/src/builtin/identifiable.mojo (100%) rename {stdlib => mojo/stdlib}/src/builtin/int.mojo (100%) rename {stdlib => mojo/stdlib}/src/builtin/int_literal.mojo (100%) rename {stdlib => mojo/stdlib}/src/builtin/io.mojo (100%) rename {stdlib => mojo/stdlib}/src/builtin/len.mojo (100%) rename {stdlib => mojo/stdlib}/src/builtin/math.mojo (100%) rename {stdlib => mojo/stdlib}/src/builtin/none.mojo (100%) rename {stdlib => mojo/stdlib}/src/builtin/object.mojo (100%) rename {stdlib => mojo/stdlib}/src/builtin/range.mojo (100%) rename {stdlib => mojo/stdlib}/src/builtin/rebind.mojo (100%) rename {stdlib => mojo/stdlib}/src/builtin/repr.mojo (100%) rename {stdlib => mojo/stdlib}/src/builtin/reversed.mojo (100%) rename {stdlib => mojo/stdlib}/src/builtin/simd.mojo (100%) rename {stdlib => mojo/stdlib}/src/builtin/sort.mojo (100%) rename {stdlib => mojo/stdlib}/src/builtin/str.mojo (100%) rename {stdlib => mojo/stdlib}/src/builtin/string_literal.mojo (100%) rename {stdlib => mojo/stdlib}/src/builtin/swap.mojo (100%) rename {stdlib => mojo/stdlib}/src/builtin/tuple.mojo (100%) rename {stdlib => mojo/stdlib}/src/builtin/type_aliases.mojo (100%) rename {stdlib => mojo/stdlib}/src/builtin/uint.mojo (100%) rename {stdlib => mojo/stdlib}/src/builtin/value.mojo (100%) rename {stdlib => mojo/stdlib}/src/collections/__init__.mojo (100%) rename {stdlib => mojo/stdlib}/src/collections/_index_normalization.mojo (100%) rename {stdlib => mojo/stdlib}/src/collections/counter.mojo (100%) rename {stdlib => mojo/stdlib}/src/collections/deque.mojo (100%) rename {stdlib => mojo/stdlib}/src/collections/dict.mojo (100%) rename {stdlib => mojo/stdlib}/src/collections/inline_array.mojo (100%) rename {stdlib => mojo/stdlib}/src/collections/inline_list.mojo (100%) rename {stdlib => mojo/stdlib}/src/collections/interval.mojo (100%) rename {stdlib => mojo/stdlib}/src/collections/linked_list.mojo (100%) rename {stdlib => mojo/stdlib}/src/collections/list.mojo (100%) rename {stdlib => mojo/stdlib}/src/collections/optional.mojo (100%) rename {stdlib => mojo/stdlib}/src/collections/set.mojo (100%) rename {stdlib => mojo/stdlib}/src/collections/string/__init__.mojo (100%) rename {stdlib => mojo/stdlib}/src/collections/string/_unicode.mojo (100%) rename {stdlib => mojo/stdlib}/src/collections/string/_unicode_lookups.mojo (100%) rename {stdlib => mojo/stdlib}/src/collections/string/_utf8_validation.mojo (100%) rename {stdlib => mojo/stdlib}/src/collections/string/codepoint.mojo (100%) rename {stdlib => mojo/stdlib}/src/collections/string/format.mojo (100%) rename {stdlib => mojo/stdlib}/src/collections/string/inline_string.mojo (100%) rename {stdlib => mojo/stdlib}/src/collections/string/string.mojo (100%) rename {stdlib => mojo/stdlib}/src/collections/string/string_slice.mojo (100%) rename {stdlib => mojo/stdlib}/src/collections/vector.mojo (100%) rename {stdlib => mojo/stdlib}/src/documentation/__init__.mojo (100%) rename {stdlib => mojo/stdlib}/src/documentation/documentation.mojo (100%) rename {stdlib => mojo/stdlib}/src/hashlib/__init__.mojo (100%) rename {stdlib => mojo/stdlib}/src/hashlib/_ahash.mojo (100%) rename {stdlib => mojo/stdlib}/src/hashlib/_hasher.mojo (100%) rename {stdlib => mojo/stdlib}/src/hashlib/hash.mojo (100%) rename {stdlib => mojo/stdlib}/src/math/__init__.mojo (100%) rename {stdlib => mojo/stdlib}/src/math/constants.mojo (100%) rename {stdlib => mojo/stdlib}/src/math/math.mojo (100%) rename {stdlib => mojo/stdlib}/src/math/polynomial.mojo (100%) rename {stdlib => mojo/stdlib}/src/memory/__init__.mojo (100%) rename {stdlib => mojo/stdlib}/src/memory/arc.mojo (100%) rename {stdlib => mojo/stdlib}/src/memory/maybe_uninitialized.mojo (100%) rename {stdlib => mojo/stdlib}/src/memory/memory.mojo (100%) rename {stdlib => mojo/stdlib}/src/memory/owned_pointer.mojo (100%) rename {stdlib => mojo/stdlib}/src/memory/pointer.mojo (100%) rename {stdlib => mojo/stdlib}/src/memory/span.mojo (100%) rename {stdlib => mojo/stdlib}/src/memory/unsafe.mojo (100%) rename {stdlib => mojo/stdlib}/src/memory/unsafe_pointer.mojo (100%) rename {stdlib => mojo/stdlib}/src/os/__init__.mojo (100%) rename {stdlib => mojo/stdlib}/src/os/_linux_aarch64.mojo (100%) rename {stdlib => mojo/stdlib}/src/os/_linux_x86.mojo (100%) rename {stdlib => mojo/stdlib}/src/os/_macos.mojo (100%) rename {stdlib => mojo/stdlib}/src/os/_windows.mojo (100%) rename {stdlib => mojo/stdlib}/src/os/atomic.mojo (100%) rename {stdlib => mojo/stdlib}/src/os/env.mojo (100%) rename {stdlib => mojo/stdlib}/src/os/fstat.mojo (100%) rename {stdlib => mojo/stdlib}/src/os/os.mojo (100%) rename {stdlib => mojo/stdlib}/src/os/path/__init__.mojo (100%) rename {stdlib => mojo/stdlib}/src/os/path/path.mojo (100%) rename {stdlib => mojo/stdlib}/src/os/pathlike.mojo (100%) rename {stdlib => mojo/stdlib}/src/pathlib/__init__.mojo (100%) rename {stdlib => mojo/stdlib}/src/pathlib/path.mojo (100%) rename {stdlib => mojo/stdlib}/src/prelude/__init__.mojo (100%) rename {stdlib => mojo/stdlib}/src/pwd/__init__.mojo (100%) rename {stdlib => mojo/stdlib}/src/pwd/_linux.mojo (100%) rename {stdlib => mojo/stdlib}/src/pwd/_macos.mojo (100%) rename {stdlib => mojo/stdlib}/src/pwd/pwd.mojo (100%) rename {stdlib => mojo/stdlib}/src/python/__init__.mojo (100%) rename {stdlib => mojo/stdlib}/src/python/_bindings.mojo (100%) rename {stdlib => mojo/stdlib}/src/python/_cpython.mojo (100%) rename {stdlib => mojo/stdlib}/src/python/python.mojo (100%) rename {stdlib => mojo/stdlib}/src/python/python_object.mojo (100%) rename {stdlib => mojo/stdlib}/src/random/__init__.mojo (100%) rename {stdlib => mojo/stdlib}/src/random/random.mojo (100%) rename {stdlib => mojo/stdlib}/src/stat/__init__.mojo (100%) rename {stdlib => mojo/stdlib}/src/stat/stat.mojo (100%) rename {stdlib => mojo/stdlib}/src/sys/__init__.mojo (100%) rename {stdlib => mojo/stdlib}/src/sys/_amdgpu.mojo (100%) rename {stdlib => mojo/stdlib}/src/sys/_assembly.mojo (100%) rename {stdlib => mojo/stdlib}/src/sys/_build.mojo (100%) rename {stdlib => mojo/stdlib}/src/sys/_io.mojo (100%) rename {stdlib => mojo/stdlib}/src/sys/_libc.mojo (100%) rename {stdlib => mojo/stdlib}/src/sys/arg.mojo (100%) rename {stdlib => mojo/stdlib}/src/sys/compile.mojo (100%) rename {stdlib => mojo/stdlib}/src/sys/debug.mojo (100%) rename {stdlib => mojo/stdlib}/src/sys/ffi.mojo (100%) rename {stdlib => mojo/stdlib}/src/sys/info.mojo (100%) rename {stdlib => mojo/stdlib}/src/sys/intrinsics.mojo (100%) rename {stdlib => mojo/stdlib}/src/sys/param_env.mojo (100%) rename {stdlib => mojo/stdlib}/src/sys/terminate.mojo (100%) rename {stdlib => mojo/stdlib}/src/tempfile/__init__.mojo (100%) rename {stdlib => mojo/stdlib}/src/tempfile/tempfile.mojo (100%) rename {stdlib => mojo/stdlib}/src/testing/__init__.mojo (100%) rename {stdlib => mojo/stdlib}/src/testing/testing.mojo (100%) rename {stdlib => mojo/stdlib}/src/time/__init__.mojo (100%) rename {stdlib => mojo/stdlib}/src/time/time.mojo (100%) rename {stdlib => mojo/stdlib}/src/utils/__init__.mojo (100%) rename {stdlib => mojo/stdlib}/src/utils/_select.mojo (100%) rename {stdlib => mojo/stdlib}/src/utils/_serialize.mojo (100%) rename {stdlib => mojo/stdlib}/src/utils/_visualizers.mojo (100%) rename {stdlib => mojo/stdlib}/src/utils/index.mojo (100%) rename {stdlib => mojo/stdlib}/src/utils/lock.mojo (100%) rename {stdlib => mojo/stdlib}/src/utils/loop.mojo (100%) rename {stdlib => mojo/stdlib}/src/utils/numerics.mojo (100%) rename {stdlib => mojo/stdlib}/src/utils/static_tuple.mojo (100%) rename {stdlib => mojo/stdlib}/src/utils/variant.mojo (100%) rename {stdlib => mojo/stdlib}/src/utils/write.mojo (100%) rename {stdlib => mojo/stdlib}/test/base64/test_base64.mojo (100%) rename {stdlib => mojo/stdlib}/test/bit/test_bit.mojo (100%) rename {stdlib => mojo/stdlib}/test/builtin/test_any_all.mojo (100%) rename {stdlib => mojo/stdlib}/test/builtin/test_bfloat16.mojo (100%) rename {stdlib => mojo/stdlib}/test/builtin/test_bool.mojo (100%) rename {stdlib => mojo/stdlib}/test/builtin/test_debug_assert.mojo (100%) rename {stdlib => mojo/stdlib}/test/builtin/test_debug_assert_default_error.mojo (100%) rename {stdlib => mojo/stdlib}/test/builtin/test_debug_assert_mode_all.mojo (100%) rename {stdlib => mojo/stdlib}/test/builtin/test_debug_assert_mode_all_error.mojo (100%) rename {stdlib => mojo/stdlib}/test/builtin/test_debug_assert_mode_none.mojo (100%) rename {stdlib => mojo/stdlib}/test/builtin/test_debug_assert_warning.mojo (100%) rename {stdlib => mojo/stdlib}/test/builtin/test_deprecation_warnings.mojo (100%) rename {stdlib => mojo/stdlib}/test/builtin/test_dtype.mojo (100%) rename {stdlib => mojo/stdlib}/test/builtin/test_error.mojo (100%) rename {stdlib => mojo/stdlib}/test/builtin/test_file.mojo (100%) rename {stdlib => mojo/stdlib}/test/builtin/test_file_dummy_input.txt (100%) rename {stdlib => mojo/stdlib}/test/builtin/test_float_literal.mojo (100%) rename {stdlib => mojo/stdlib}/test/builtin/test_format_float.mojo (100%) rename {stdlib => mojo/stdlib}/test/builtin/test_format_int.mojo (100%) rename {stdlib => mojo/stdlib}/test/builtin/test_int.mojo (100%) rename {stdlib => mojo/stdlib}/test/builtin/test_int_literal.mojo (100%) rename {stdlib => mojo/stdlib}/test/builtin/test_issue_1004.mojo (100%) rename {stdlib => mojo/stdlib}/test/builtin/test_issue_1505.mojo (100%) rename {stdlib => mojo/stdlib}/test/builtin/test_issue_3908.mojo (100%) rename {stdlib => mojo/stdlib}/test/builtin/test_list_literal.mojo (100%) rename {stdlib => mojo/stdlib}/test/builtin/test_location.mojo (100%) rename {stdlib => mojo/stdlib}/test/builtin/test_math.mojo (100%) rename {stdlib => mojo/stdlib}/test/builtin/test_none.mojo (100%) rename {stdlib => mojo/stdlib}/test/builtin/test_object.mojo (100%) rename {stdlib => mojo/stdlib}/test/builtin/test_print.mojo (100%) rename {stdlib => mojo/stdlib}/test/builtin/test_print_long_string.mojo (100%) rename {stdlib => mojo/stdlib}/test/builtin/test_print_stderr.mojo (100%) rename {stdlib => mojo/stdlib}/test/builtin/test_range.mojo (100%) rename {stdlib => mojo/stdlib}/test/builtin/test_range_out_of_bounds.mojo (100%) rename {stdlib => mojo/stdlib}/test/builtin/test_range_uint_reverse_range_bad.mojo (100%) rename {stdlib => mojo/stdlib}/test/builtin/test_rebind.mojo (100%) rename {stdlib => mojo/stdlib}/test/builtin/test_repr.mojo (100%) rename {stdlib => mojo/stdlib}/test/builtin/test_reversed.mojo (100%) rename {stdlib => mojo/stdlib}/test/builtin/test_simd.mojo (100%) rename {stdlib => mojo/stdlib}/test/builtin/test_slice.mojo (100%) rename {stdlib => mojo/stdlib}/test/builtin/test_sort.mojo (100%) rename {stdlib => mojo/stdlib}/test/builtin/test_sort_issue_1018.mojo (100%) rename {stdlib => mojo/stdlib}/test/builtin/test_stdin.mojo (100%) rename {stdlib => mojo/stdlib}/test/builtin/test_str.mojo (100%) rename {stdlib => mojo/stdlib}/test/builtin/test_string_literal.mojo (100%) rename {stdlib => mojo/stdlib}/test/builtin/test_swap.mojo (100%) rename {stdlib => mojo/stdlib}/test/builtin/test_tuple.mojo (100%) rename {stdlib => mojo/stdlib}/test/builtin/test_uint.mojo (100%) rename {stdlib => mojo/stdlib}/test/builtin/test_uint_error.mojo (100%) rename {stdlib => mojo/stdlib}/test/collections/string/test_inlined_string.mojo (100%) rename {stdlib => mojo/stdlib}/test/collections/string/test_string.mojo (100%) rename {stdlib => mojo/stdlib}/test/collections/string/test_string_slice.mojo (100%) rename {stdlib => mojo/stdlib}/test/collections/string/test_unicode.mojo (100%) rename {stdlib => mojo/stdlib}/test/collections/test_codepoint.mojo (100%) rename {stdlib => mojo/stdlib}/test/collections/test_counter.mojo (100%) rename {stdlib => mojo/stdlib}/test/collections/test_deque.mojo (100%) rename {stdlib => mojo/stdlib}/test/collections/test_dict.mojo (100%) rename {stdlib => mojo/stdlib}/test/collections/test_index_normalization.mojo (100%) rename {stdlib => mojo/stdlib}/test/collections/test_inline_array.mojo (100%) rename {stdlib => mojo/stdlib}/test/collections/test_inline_list.mojo (100%) rename {stdlib => mojo/stdlib}/test/collections/test_interval.mojo (100%) rename {stdlib => mojo/stdlib}/test/collections/test_linked_list.mojo (100%) rename {stdlib => mojo/stdlib}/test/collections/test_list.mojo (100%) rename {stdlib => mojo/stdlib}/test/collections/test_list_getitem_invalid_index.mojo (100%) rename {stdlib => mojo/stdlib}/test/collections/test_optional.mojo (100%) rename {stdlib => mojo/stdlib}/test/collections/test_set.mojo (100%) rename {stdlib => mojo/stdlib}/test/collections/test_vector.mojo (100%) rename {stdlib => mojo/stdlib}/test/hashlib/test_ahash.mojo (100%) rename {stdlib => mojo/stdlib}/test/hashlib/test_hash.mojo (100%) rename {stdlib => mojo/stdlib}/test/hashlib/test_hasher.mojo (100%) rename {stdlib => mojo/stdlib}/test/lit.cfg.py (100%) rename {stdlib => mojo/stdlib}/test/memory/test_arc.mojo (100%) rename {stdlib => mojo/stdlib}/test/memory/test_bitcast.mojo (100%) rename {stdlib => mojo/stdlib}/test/memory/test_maybe_uninitialized.mojo (100%) rename {stdlib => mojo/stdlib}/test/memory/test_memory.mojo (100%) rename {stdlib => mojo/stdlib}/test/memory/test_owned_pointer.mojo (100%) rename {stdlib => mojo/stdlib}/test/memory/test_reference.mojo (100%) rename {stdlib => mojo/stdlib}/test/memory/test_span.mojo (100%) rename {stdlib => mojo/stdlib}/test/memory/test_unsafepointer.mojo (100%) rename {stdlib => mojo/stdlib}/test/os/path/test_basename.mojo (100%) rename {stdlib => mojo/stdlib}/test/os/path/test_dirname.mojo (100%) rename {stdlib => mojo/stdlib}/test/os/path/test_exists.mojo (100%) rename {stdlib => mojo/stdlib}/test/os/path/test_expanduser.mojo (100%) rename {stdlib => mojo/stdlib}/test/os/path/test_expandvars.mojo (100%) rename {stdlib => mojo/stdlib}/test/os/path/test_getsize.mojo (100%) rename {stdlib => mojo/stdlib}/test/os/path/test_isdir.mojo (100%) rename {stdlib => mojo/stdlib}/test/os/path/test_isfile.mojo (100%) rename {stdlib => mojo/stdlib}/test/os/path/test_islink.mojo (100%) rename {stdlib => mojo/stdlib}/test/os/path/test_join.mojo (100%) rename {stdlib => mojo/stdlib}/test/os/path/test_split.mojo (100%) rename {stdlib => mojo/stdlib}/test/os/path/test_splitroot.mojo (100%) rename {stdlib => mojo/stdlib}/test/os/test_atomic.mojo (100%) rename {stdlib => mojo/stdlib}/test/os/test_env.mojo (100%) rename {stdlib => mojo/stdlib}/test/os/test_listdir.mojo (100%) rename {stdlib => mojo/stdlib}/test/os/test_mkdir_and_rmdir.mojo (100%) rename {stdlib => mojo/stdlib}/test/os/test_no_trap.mojo (100%) rename {stdlib => mojo/stdlib}/test/os/test_remove.mojo (100%) rename {stdlib => mojo/stdlib}/test/os/test_stat.mojo (100%) rename {stdlib => mojo/stdlib}/test/os/test_trap.mojo (100%) rename {stdlib => mojo/stdlib}/test/os/test_trap_stringable.mojo (100%) rename {stdlib => mojo/stdlib}/test/pathlib/test_pathlib.mojo (100%) rename {stdlib => mojo/stdlib}/test/pwd/test_pwd.mojo (100%) rename {stdlib => mojo/stdlib}/test/python/custom_indexable.py (100%) rename {stdlib => mojo/stdlib}/test/python/module_for_test_python_object_dunder_contains.py (100%) rename {stdlib => mojo/stdlib}/test/python/my_module.py (100%) rename {stdlib => mojo/stdlib}/test/python/test_ownership.mojo (100%) rename {stdlib => mojo/stdlib}/test/python/test_python_cpython.mojo (100%) rename {stdlib => mojo/stdlib}/test/python/test_python_error_handling.mojo (100%) rename {stdlib => mojo/stdlib}/test/python/test_python_info.mojo (100%) rename {stdlib => mojo/stdlib}/test/python/test_python_interop.mojo (100%) rename {stdlib => mojo/stdlib}/test/python/test_python_module_create.mojo (100%) rename {stdlib => mojo/stdlib}/test/python/test_python_object.mojo (100%) rename {stdlib => mojo/stdlib}/test/python/test_python_object_dunder_contains.mojo (100%) rename {stdlib => mojo/stdlib}/test/python/test_python_object_len_raises.mojo (100%) rename {stdlib => mojo/stdlib}/test/python/test_python_to_mojo.mojo (100%) rename {stdlib => mojo/stdlib}/test/random/test_random.mojo (100%) rename {stdlib => mojo/stdlib}/test/sys/test_aarch64_target.mojo (100%) rename {stdlib => mojo/stdlib}/test/sys/test_build_info_debug.mojo (100%) rename {stdlib => mojo/stdlib}/test/sys/test_c_types.mojo (100%) rename {stdlib => mojo/stdlib}/test/sys/test_compile.mojo (100%) rename {stdlib => mojo/stdlib}/test/sys/test_compile_debug.mojo (100%) rename {stdlib => mojo/stdlib}/test/sys/test_dlhandle.mojo (100%) rename {stdlib => mojo/stdlib}/test/sys/test_exit_0.mojo (100%) rename {stdlib => mojo/stdlib}/test/sys/test_exit_1.mojo (100%) rename {stdlib => mojo/stdlib}/test/sys/test_intrinsics.mojo (100%) rename {stdlib => mojo/stdlib}/test/sys/test_invalid_paramenv.mojo (100%) rename {stdlib => mojo/stdlib}/test/sys/test_linux_target.mojo (100%) rename {stdlib => mojo/stdlib}/test/sys/test_macos_target.mojo (100%) rename {stdlib => mojo/stdlib}/test/sys/test_paramenv.mojo (100%) rename {stdlib => mojo/stdlib}/test/sys/test_sizeof.mojo (100%) rename {stdlib => mojo/stdlib}/test/sys/test_targetinfo.mojo (100%) rename {stdlib => mojo/stdlib}/test/sys/test_windows_target.mojo (100%) rename {stdlib => mojo/stdlib}/test/tempfile/test_tempfile.mojo (100%) rename {stdlib => mojo/stdlib}/test/test_utils/__init__.mojo (100%) rename {stdlib => mojo/stdlib}/test/test_utils/test_utils.mojo (100%) rename {stdlib => mojo/stdlib}/test/test_utils/types.mojo (100%) rename {stdlib => mojo/stdlib}/test/testing/test_assert_raises.mojo (100%) rename {stdlib => mojo/stdlib}/test/testing/test_assertion.mojo (100%) rename {stdlib => mojo/stdlib}/test/time/test_time.mojo (100%) rename {stdlib => mojo/stdlib}/test/utils/issue_13632.mojo (100%) rename {stdlib => mojo/stdlib}/test/utils/test_index.mojo (100%) rename {stdlib => mojo/stdlib}/test/utils/test_numerics.mojo (100%) rename {stdlib => mojo/stdlib}/test/utils/test_select.mojo (100%) rename {stdlib => mojo/stdlib}/test/utils/test_static_tuple.mojo (100%) rename {stdlib => mojo/stdlib}/test/utils/test_tuple.mojo (100%) rename {stdlib => mojo/stdlib}/test/utils/test_unroll.mojo (100%) rename {stdlib => mojo/stdlib}/test/utils/test_variant.mojo (100%) rename {stdlib => mojo/stdlib}/test/utils/test_write.mojo (100%) rename {stdlib => mojo/stdlib}/test/utils/test_write_to_stdout.mojo (100%) create mode 100644 pyproject.toml create mode 100644 src/max/Dockerfile.cpu create mode 100644 src/max/Dockerfile.cuda-simple create mode 100644 src/max/Dockerfile.cuda-small create mode 100644 src/max/README.md create mode 100644 src/max/entrypoints/cli/__init__.py create mode 100644 src/max/entrypoints/cli/config.py create mode 100644 src/max/entrypoints/cli/device_options.py create mode 100644 src/max/entrypoints/cli/encode.py create mode 100644 src/max/entrypoints/cli/entrypoint.py create mode 100644 src/max/entrypoints/cli/generate.py create mode 100644 src/max/entrypoints/cli/list.py create mode 100644 src/max/entrypoints/cli/metrics.py create mode 100644 src/max/entrypoints/cli/serve.py create mode 100644 src/max/entrypoints/llm.py create mode 100644 src/max/entrypoints/pipelines.py create mode 100644 src/max/pipelines/README.md create mode 100644 src/max/pipelines/__init__.py create mode 100644 src/max/pipelines/architectures/__init__.py create mode 100644 src/max/pipelines/architectures/deepseekV2/layers/__init__.py create mode 100644 src/max/pipelines/architectures/deepseekV2/layers/moe_gate.py create mode 100644 src/max/pipelines/architectures/exaone/__init__.py create mode 100644 src/max/pipelines/architectures/exaone/arch.py create mode 100644 src/max/pipelines/architectures/exaone/weight_adapters.py create mode 100644 src/max/pipelines/architectures/granite/__init__.py create mode 100644 src/max/pipelines/architectures/granite/arch.py create mode 100644 src/max/pipelines/architectures/granite/model.py create mode 100644 src/max/pipelines/architectures/llama3/README.md create mode 100644 src/max/pipelines/architectures/llama3/__init__.py create mode 100644 src/max/pipelines/architectures/llama3/arch.py create mode 100644 src/max/pipelines/architectures/llama3/config.py create mode 100644 src/max/pipelines/architectures/llama3/gguf.py create mode 100644 src/max/pipelines/architectures/llama3/llama3.py create mode 100644 src/max/pipelines/architectures/llama3/model.py create mode 100644 src/max/pipelines/architectures/llama3/naive_llama3.py create mode 100644 src/max/pipelines/architectures/llama3/weight_adapters.py create mode 100644 src/max/pipelines/architectures/llama_vision/README.md create mode 100644 src/max/pipelines/architectures/llama_vision/__init__.py create mode 100644 src/max/pipelines/architectures/llama_vision/arch.py create mode 100644 src/max/pipelines/architectures/llama_vision/attention.py create mode 100644 src/max/pipelines/architectures/llama_vision/cross_attention_decoder.py create mode 100644 src/max/pipelines/architectures/llama_vision/encoder.py create mode 100644 src/max/pipelines/architectures/llama_vision/language_model.py create mode 100644 src/max/pipelines/architectures/llama_vision/llama_vision.py create mode 100644 src/max/pipelines/architectures/llama_vision/mlp.py create mode 100644 src/max/pipelines/architectures/llama_vision/positional_embedding.py create mode 100644 src/max/pipelines/architectures/llama_vision/vision_model.py create mode 100644 src/max/pipelines/architectures/mistral/README.md create mode 100644 src/max/pipelines/architectures/mistral/__init__.py create mode 100644 src/max/pipelines/architectures/mistral/arch.py create mode 100644 src/max/pipelines/architectures/mistral/graph.py create mode 100644 src/max/pipelines/architectures/mistral/model.py create mode 100644 src/max/pipelines/architectures/mpnet/__init__.py create mode 100644 src/max/pipelines/architectures/mpnet/arch.py create mode 100644 src/max/pipelines/architectures/mpnet/graph.py create mode 100644 src/max/pipelines/architectures/mpnet/model.py create mode 100644 src/max/pipelines/architectures/olmo/__init__.py create mode 100644 src/max/pipelines/architectures/olmo/arch.py create mode 100644 src/max/pipelines/architectures/olmo/model.py create mode 100644 src/max/pipelines/architectures/phi3/__init__.py create mode 100644 src/max/pipelines/architectures/phi3/arch.py create mode 100644 src/max/pipelines/architectures/phi3/model.py create mode 100644 src/max/pipelines/architectures/pixtral/README.md create mode 100644 src/max/pipelines/architectures/pixtral/__init__.py create mode 100644 src/max/pipelines/architectures/pixtral/arch.py create mode 100644 src/max/pipelines/architectures/pixtral/llava/__init__.py create mode 100644 src/max/pipelines/architectures/pixtral/llava/llava.py create mode 100644 src/max/pipelines/architectures/pixtral/llava/llava_decoder.py create mode 100644 src/max/pipelines/architectures/pixtral/llava/llava_projector.py create mode 100644 src/max/pipelines/architectures/pixtral/model/graph.py create mode 100644 src/max/pipelines/architectures/pixtral/model/mistral_graph.py create mode 100644 src/max/pipelines/architectures/pixtral/pixtral.py create mode 100644 src/max/pipelines/architectures/pixtral/vision_encoder/__init__.py create mode 100644 src/max/pipelines/architectures/pixtral/vision_encoder/attention.py create mode 100644 src/max/pipelines/architectures/pixtral/vision_encoder/attention_utils.py create mode 100644 src/max/pipelines/architectures/pixtral/vision_encoder/graph.py create mode 100644 src/max/pipelines/architectures/pixtral/vision_encoder/rotary_embedding_2d.py create mode 100644 src/max/pipelines/architectures/pixtral/vision_encoder/transformer.py create mode 100644 src/max/pipelines/architectures/pixtral/vision_encoder/vision_encoder.py create mode 100644 src/max/pipelines/architectures/qwen2/README.md create mode 100644 src/max/pipelines/architectures/qwen2/__init__.py create mode 100644 src/max/pipelines/architectures/qwen2/arch.py create mode 100644 src/max/pipelines/architectures/qwen2/graph.py create mode 100644 src/max/pipelines/architectures/qwen2/model.py create mode 100644 src/max/pipelines/architectures/replit/README.md create mode 100644 src/max/pipelines/architectures/replit/__init__.py create mode 100644 src/max/pipelines/architectures/replit/arch.py create mode 100644 src/max/pipelines/architectures/replit/graph.py create mode 100644 src/max/pipelines/architectures/replit/model.py create mode 100644 src/max/pipelines/architectures/whisper/encoder.py create mode 100644 src/max/pipelines/architectures/whisper/graph.py create mode 100644 src/max/pipelines/architectures/whisper/model.py create mode 100644 src/max/pipelines/config.py create mode 100644 src/max/pipelines/context.py create mode 100644 src/max/pipelines/dataprocessing/__init__.py create mode 100644 src/max/pipelines/dataprocessing/causal_attention_mask.py create mode 100644 src/max/pipelines/dataprocessing/causal_attention_mask_with_alibi.py create mode 100644 src/max/pipelines/dataprocessing/collate_batch.py create mode 100644 src/max/pipelines/dataprocessing/max_tokens_to_generate.py create mode 100644 src/max/pipelines/embeddings_pipeline.py create mode 100644 src/max/pipelines/hf_pipeline.py create mode 100644 src/max/pipelines/hf_utils.py create mode 100644 src/max/pipelines/interfaces/__init__.py create mode 100644 src/max/pipelines/interfaces/embeddings_generation.py rename examples/run-examples.sh => src/max/pipelines/interfaces/tasks.py (62%) mode change 100755 => 100644 create mode 100644 src/max/pipelines/interfaces/text_generation.py create mode 100644 src/max/pipelines/kv_cache/__init__.py create mode 100644 src/max/pipelines/kv_cache/_utils.py create mode 100644 src/max/pipelines/kv_cache/cache_params.py create mode 100644 src/max/pipelines/kv_cache/continuous_batching_cache.py create mode 100644 src/max/pipelines/kv_cache/hf.py create mode 100644 src/max/pipelines/kv_cache/manager.py create mode 100644 src/max/pipelines/kv_cache/naive_cache.py create mode 100644 src/max/pipelines/kv_cache/paged_cache.py create mode 100644 src/max/pipelines/kv_cache/paged_cache_metadata.py create mode 100644 src/max/pipelines/kv_cache/prefix_cache.py create mode 100644 src/max/pipelines/kv_cache/radix_trie.py create mode 100644 src/max/pipelines/kv_cache/simple_trie.py create mode 100644 src/max/pipelines/nn/__init__.py create mode 100644 src/max/pipelines/nn/_identity.py create mode 100644 src/max/pipelines/nn/attention/__init__.py create mode 100644 src/max/pipelines/nn/attention/attention.py create mode 100644 src/max/pipelines/nn/attention/attention_with_rope.py create mode 100644 src/max/pipelines/nn/attention/attention_without_mask.py create mode 100644 src/max/pipelines/nn/attention/clamp.py create mode 100644 src/max/pipelines/nn/attention/interfaces.py create mode 100644 src/max/pipelines/nn/attention/naive_attention_with_rope.py create mode 100644 src/max/pipelines/nn/comm/__init__.py create mode 100644 src/max/pipelines/nn/comm/allreduce.py create mode 100644 src/max/pipelines/nn/compute_log_probabilities.py create mode 100644 src/max/pipelines/nn/conv.py create mode 100644 src/max/pipelines/nn/embedding.py create mode 100644 src/max/pipelines/nn/hooks/__init__.py create mode 100644 src/max/pipelines/nn/hooks/base_print_hook.py create mode 100644 src/max/pipelines/nn/hooks/identity.py create mode 100644 src/max/pipelines/nn/hooks/print_hook.py create mode 100644 src/max/pipelines/nn/hooks/torch_print_hook.py create mode 100644 src/max/pipelines/nn/kernels.py create mode 100644 src/max/pipelines/nn/layer/__init__.py create mode 100644 src/max/pipelines/nn/layer/layer.py create mode 100644 src/max/pipelines/nn/layer/layer_list.py create mode 100644 src/max/pipelines/nn/linear.py create mode 100644 src/max/pipelines/nn/norm/__init__.py create mode 100644 src/max/pipelines/nn/norm/layer_norm.py create mode 100644 src/max/pipelines/nn/norm/rms_norm.py create mode 100644 src/max/pipelines/nn/rotary_embedding.py create mode 100644 src/max/pipelines/nn/sequential.py create mode 100644 src/max/pipelines/nn/transformer/__init__.py create mode 100644 src/max/pipelines/nn/transformer/distributed_transformer.py create mode 100644 src/max/pipelines/nn/transformer/naive_transformer.py create mode 100644 src/max/pipelines/nn/transformer/transformer.py create mode 100644 src/max/pipelines/pipeline.py create mode 100644 src/max/pipelines/registry.py create mode 100644 src/max/pipelines/requirements.txt create mode 100644 src/max/pipelines/response.py create mode 100644 src/max/pipelines/sampling.py create mode 100644 src/max/pipelines/tokenizer.py create mode 100644 src/max/pixi.toml create mode 100644 tutorials/README.md create mode 100644 tutorials/deploy-aws-kubernetes/README.md create mode 100644 tutorials/deploy-aws-kubernetes/client.py create mode 100644 tutorials/deploy-cloudformation-sagemaker/README.md create mode 100644 tutorials/deploy-cloudformation-sagemaker/client.py create mode 100644 tutorials/hello-magic/.gitattributes create mode 100644 tutorials/hello-magic/.gitignore create mode 100644 tutorials/hello-magic/hello.mojo create mode 100644 tutorials/hello-magic/local/.gitattributes create mode 100644 tutorials/hello-magic/local/.gitignore create mode 100644 tutorials/hello-magic/local/__init__.mojo create mode 100644 tutorials/hello-magic/local/mojoproject.toml create mode 100644 tutorials/hello-magic/local/zero.mojo create mode 100644 tutorials/hello-magic/main.py create mode 100644 tutorials/hello-magic/mojoproject.toml create mode 100644 tutorials/helm/max-openai-api/.helmignore create mode 100644 tutorials/helm/max-openai-api/Chart.yaml create mode 100644 tutorials/helm/max-openai-api/README.md create mode 100644 tutorials/helm/max-openai-api/README.md.gotmpl create mode 100644 tutorials/helm/max-openai-api/templates/NOTES.txt create mode 100644 tutorials/helm/max-openai-api/templates/_helpers.tpl create mode 100644 tutorials/helm/max-openai-api/templates/deployment.yaml create mode 100644 tutorials/helm/max-openai-api/templates/hpa.yaml create mode 100644 tutorials/helm/max-openai-api/templates/ingress.yaml create mode 100644 tutorials/helm/max-openai-api/templates/secret-env.yaml create mode 100644 tutorials/helm/max-openai-api/templates/service.yaml create mode 100644 tutorials/helm/max-openai-api/templates/serviceaccount.yaml create mode 100644 tutorials/helm/max-openai-api/values.yaml create mode 100644 tutorials/max-graph-api/.gitattributes create mode 100644 tutorials/max-graph-api/.gitignore create mode 100644 tutorials/max-graph-api/README.md create mode 100644 tutorials/max-graph-api/add.mojo create mode 100644 tutorials/max-graph-api/add.png create mode 100644 tutorials/max-graph-api/matmul.mojo create mode 100644 tutorials/max-graph-api/matmul.png create mode 100644 tutorials/max-graph-api/mnist.mojo create mode 100644 tutorials/max-graph-api/mnist.png create mode 100644 tutorials/max-graph-api/mnist.py create mode 100644 tutorials/max-graph-api/mojoproject.toml create mode 100644 tutorials/max-graph-python/.mypy.ini create mode 100644 tutorials/max-graph-python/README.md create mode 100644 tutorials/max-graph-python/pyproject.toml create mode 100644 tutorials/max-graph-python/src/max_ops/__init__.py create mode 100644 tutorials/max-graph-python/src/max_ops/addition.py create mode 100644 tutorials/max-graph-python/tests/__init__.py create mode 100644 tutorials/max-serve-cloud-configs/aws/max-serve-aws.yaml create mode 100644 tutorials/max-serve-cloud-configs/aws/notify.sh create mode 100644 tutorials/max-serve-cloud-configs/azure/max-serve-azure.json create mode 100644 tutorials/max-serve-cloud-configs/azure/notify.sh create mode 100644 tutorials/max-serve-cloud-configs/gcp/max-serve-gcp.jinja create mode 100644 tutorials/max-serve-cloud-configs/gcp/notify.sh create mode 100644 tutorials/run-embeddings-with-max-serve/.gitattributes create mode 100644 tutorials/run-embeddings-with-max-serve/.gitignore create mode 100644 tutorials/run-embeddings-with-max-serve/README.md create mode 100644 tutorials/run-embeddings-with-max-serve/pyproject.toml create mode 100644 tutorials/run-embeddings-with-max-serve/src/embeddings/__init__.py create mode 100644 tutorials/run-embeddings-with-max-serve/src/embeddings/kb_system.py create mode 100644 tutorials/run-onnx-with-python/.gitignore create mode 100644 tutorials/run-onnx-with-python/README.md create mode 100644 tutorials/run-onnx-with-python/download-model.py create mode 100644 tutorials/run-onnx-with-python/pyproject.toml create mode 100644 tutorials/run-onnx-with-python/run.py create mode 100644 tutorials/run-onnx-with-python/src/onnx_tutorial/__init__.py create mode 100644 tutorials/run-torchscript-with-python/.gitignore create mode 100644 tutorials/run-torchscript-with-python/README.md create mode 100644 tutorials/run-torchscript-with-python/download-model.py create mode 100644 tutorials/run-torchscript-with-python/pyproject.toml create mode 100644 tutorials/run-torchscript-with-python/run.py create mode 100644 tutorials/run-torchscript-with-python/src/torchscript_tutorial/__init__.py diff --git a/.clang-format b/.clang-format new file mode 100644 index 0000000000..a74fda4b67 --- /dev/null +++ b/.clang-format @@ -0,0 +1,2 @@ +BasedOnStyle: LLVM +AlwaysBreakTemplateDeclarations: Yes diff --git a/.clang-tidy b/.clang-tidy new file mode 100644 index 0000000000..e78abd3994 --- /dev/null +++ b/.clang-tidy @@ -0,0 +1,57 @@ +InheritParentConfig: true +Checks: > + bugprone-argument-comment, + bugprone-assert-side-effect, + bugprone-branch-clone, + bugprone-copy-constructor-init, + bugprone-dangling-handle, + bugprone-dynamic-static-initializers, + bugprone-macro-parentheses, + bugprone-macro-repeated-side-effects, + bugprone-misplaced-widening-cast, + bugprone-move-forwarding-reference, + bugprone-multiple-statement-macro, + bugprone-suspicious-semicolon, + bugprone-swapped-arguments, + bugprone-terminating-continue, + bugprone-unused-raii, + bugprone-unused-return-value, + misc-redundant-expression, + misc-static-assert, + misc-unused-using-decls, + modernize-use-bool-literals, + modernize-loop-convert, + modernize-make-unique, + modernize-raw-string-literal, + modernize-use-equals-default, + modernize-use-default-member-init, + modernize-use-emplace, + modernize-use-nullptr, + modernize-use-override, + modernize-use-using, + performance-for-range-copy, + performance-implicit-conversion-in-loop, + performance-inefficient-algorithm, + performance-inefficient-vector-operation, + performance-move-const-arg, + performance-no-automatic-move, + performance-trivially-destructible, + performance-unnecessary-copy-initialization, + performance-unnecessary-value-param, + readability-avoid-const-params-in-decls, + readability-const-return-type, + readability-container-size-empty, + readability-inconsistent-declaration-parameter-name, + readability-misleading-indentation, + readability-redundant-control-flow, + readability-redundant-smartptr-get, + readability-simplify-subscript-expr, + readability-use-anyofallof + +CheckOptions: + - key: readability-identifier-naming.MemberCase + value: camelBack + - key: readability-identifier-naming.ParameterCase + value: camelBack + - key: readability-identifier-naming.VariableCase + value: camelBack diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000000..e7cbefb6bf --- /dev/null +++ b/.gitattributes @@ -0,0 +1,4 @@ +# Add an override so that .🔥 files are highlighted as Mojo files within github +# since the linguist system does not work with the .🔥 extention. +# See https://github.com/github/linguist/blob/master/docs/overrides.md +*.🔥 linguist-language=Mojo diff --git a/.github/ISSUE_TEMPLATE/CODEOWNERS b/.github/ISSUE_TEMPLATE/CODEOWNERS new file mode 100644 index 0000000000..303c1ec52f --- /dev/null +++ b/.github/ISSUE_TEMPLATE/CODEOWNERS @@ -0,0 +1,5 @@ +# Codeowners for MAX repo. +# Every line is a file pattern that is followed by one or more code owners. +# Order is important; the last matching pattern takes the most precedence. + +* @modularml/max-code-reviewers diff --git a/.github/ISSUE_TEMPLATE/doc_issue.yaml b/.github/ISSUE_TEMPLATE/doc_issue.yaml index daf162cefc..a7781e61a8 100644 --- a/.github/ISSUE_TEMPLATE/doc_issue.yaml +++ b/.github/ISSUE_TEMPLATE/doc_issue.yaml @@ -12,7 +12,7 @@ ##===----------------------------------------------------------------------===## name: Documentation issue -description: Report a problem with the Mojo docs +description: Report a problem with the MAX docs title: "[Docs]" labels: - documentation @@ -20,11 +20,12 @@ body: - type: markdown attributes: value: | - Thank you for helping us improve the Mojo docs! + Thank you for helping us improve the MAX docs! Please add a title above and fill in the following fields so we can understand the problem. - type: input + id: url attributes: label: Where is the problem? description: Provide a link to the problematic page (with a heading anchor). diff --git a/.github/ISSUE_TEMPLATE/max_bug_report.yaml b/.github/ISSUE_TEMPLATE/max_bug_report.yaml new file mode 100644 index 0000000000..573a7069e2 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/max_bug_report.yaml @@ -0,0 +1,55 @@ +##===----------------------------------------------------------------------===## +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +##===----------------------------------------------------------------------===## + +name: MAX bug report +description: Create a bug report to help us improve MAX +title: "[BUG]: " +labels: + - bug +body: + - type: markdown + attributes: + value: | + Thanks for taking the time to fill out a bug report! + + Please provide a descriptive title above and fill in the following fields. + + - type: textarea + id: Description + attributes: + label: Bug description + description: Describe the bug you encountered and what you expected to happen. + validations: + required: true + + - type: textarea + id: Steps + attributes: + label: Steps to reproduce + description: Provide the specific steps to reproduce the issue. + value: | + - Include relevant code snippet or link to code that did not work as expected. + - If applicable, add screenshots to help explain the problem. + - Include anything else that might help us debug the issue. + validations: + required: true + + - type: textarea + id: Context + attributes: + label: System information + description: What version of MAX are you using? + value: | + - Provide the system information by running `magic info`. + - Provide version information for MAX (includes Mojo) by pasting the output of `magic list max`. + render: shell diff --git a/.github/ISSUE_TEMPLATE/max_builds_bug_report.yaml b/.github/ISSUE_TEMPLATE/max_builds_bug_report.yaml new file mode 100644 index 0000000000..0c43f15bac --- /dev/null +++ b/.github/ISSUE_TEMPLATE/max_builds_bug_report.yaml @@ -0,0 +1,53 @@ +##===----------------------------------------------------------------------===## +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +##===----------------------------------------------------------------------===## + +name: MAX Builds model bug report +description: Report a bug with a model +title: "[BUG]: " +labels: + - bug +body: + - type: markdown + attributes: + value: | + Thanks for taking the time to fill out a bug report! + + Please provide a descriptive title above and fill in the following fields. + + - type: input + id: model-variant + attributes: + label: On which model did the bug occur? + description: Provide the model (and variant). + validations: + required: true + + - type: textarea + id: Description + attributes: + label: Bug description + description: Describe the bug you encountered and what you expected to happen. + validations: + required: true + + - type: textarea + id: Steps + attributes: + label: Steps to reproduce + description: Provide the specific steps to reproduce the issue. + value: | + - Include relevant code snippet or link to code that did not work as expected. + - If applicable, add screenshots to help explain the problem. + - Include anything else that might help us debug the issue. + validations: + required: true diff --git a/.github/ISSUE_TEMPLATE/max_feature_request.yaml b/.github/ISSUE_TEMPLATE/max_feature_request.yaml new file mode 100644 index 0000000000..57e6716fb8 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/max_feature_request.yaml @@ -0,0 +1,49 @@ +##===----------------------------------------------------------------------===## +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +##===----------------------------------------------------------------------===## + +name: MAX feature request +description: Suggest an enhancement for MAX +title: "[Feature Request]" +labels: + - enhancement +body: + - type: markdown + attributes: + value: | + Thanks for taking the time to suggest a MAX enhancement! + + Please enter a concise title above and fill out the following fields. + + - type: textarea + id: Request + attributes: + label: What is your request? + description: Describe how you'd like us to improve MAX. + validations: + required: true + + - type: textarea + id: Motivation + attributes: + label: What is your motivation for this change? + description: Describe the problem that your feature seeks to address (what is the value to the product/user?). + validations: + required: true + + - type: textarea + id: Description + attributes: + label: Any other details? + description: Perhaps some minimum functional attributes the implementation should include, or other context about your feature. + validations: + required: false diff --git a/.gitignore b/.gitignore index 81e5af8ff5..339f9c6cdc 100644 --- a/.gitignore +++ b/.gitignore @@ -1,13 +1,104 @@ -# Build directory -/build - -# Reference: https://github.com/github/gitignore/blob/main/Python.gitignore - # Byte-compiled / optimized / DLL files __pycache__/ *.py[cod] *$py.class +# C extensions +*.so + +# Distribution / packaging +.Python +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +wheels/ +share/python-wheels/ +*.egg-info/ +.installed.cfg +*.egg +MANIFEST + +# PyInstaller +# Usually these files are written by a python script from a template +# before PyInstaller builds the exe, so as to inject date/other infos into it. +*.manifest +*.spec + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + +# Unit test / coverage reports +htmlcov/ +.tox/ +.nox/ +.coverage +.coverage.* +.cache +nosetests.xml +coverage.xml +*.cover +*.py,cover +.hypothesis/ +.pytest_cache/ +cover/ + +# Translations +*.mo +*.pot + +# Sphinx documentation +docs/_build/ + +# PyBuilder +.pybuilder/ +target/ + +# Jupyter Notebook +.ipynb_checkpoints + +# IPython +profile_default/ +ipython_config.py + +# pyenv +# For a library or package, you might want to ignore these files since the code is +# intended to run in multiple environments; otherwise, check them in: +# .python-version + +# pipenv +# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. +# However, in case of collaboration, if having platform-specific dependencies or dependencies +# having no cross-platform support, pipenv may install dependencies that don't work, or not +# install all needed dependencies. +#Pipfile.lock + +# poetry +# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control. +# This is especially recommended for binary packages to ensure reproducibility, and is more +# commonly ignored for libraries. +# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control +#poetry.lock + +# pdm +# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control. +#pdm.lock +# pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it +# in version control. +# https://pdm.fming.dev/#use-with-ide +.pdm.toml + +# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm +__pypackages__/ + # Environments .env .venv @@ -16,7 +107,51 @@ venv/ ENV/ env.bak/ venv.bak/ -.magic/ -# MacOS + +# Spyder project settings +.spyderproject +.spyproject + +# Rope project settings +.ropeproject + +# mkdocs documentation +/site + +# mypy +.mypy_cache/ +.dmypy.json +dmypy.json + +# numpy +*.npy + +# Pyre type checker +.pyre/ + +# pytype static type analyzer +.pytype/ + +# Cython debug symbols +cython_debug/ + +# PyCharm +# JetBrains specific template is maintained in a separate JetBrains.gitignore that can +# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore +# and can be added to the global gitignore or merged into this file. For a more nuclear +# option (not recommended) you can uncomment the following to ignore the entire idea folder. +#.idea/ + +# MacOS stuff .DS_Store + +# VS Code +.vscode + +# Downloaded example models +examples/models/* +!examples/models/README.md + +# Magic cache +.magic diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml deleted file mode 100644 index 9ca3f26be6..0000000000 --- a/.pre-commit-config.yaml +++ /dev/null @@ -1,26 +0,0 @@ -repos: - - repo: local - hooks: - - id: mojo-format - name: mojo-format - entry: mojo format - language: system - files: '\.(mojo|🔥|py)$' - stages: [commit] - - id: check-docstrings - name: check-docstrings - entry: python3 ./stdlib/scripts/check-docstrings.py - language: system - pass_filenames: false - stages: [commit] - - id: check-license - name: check-license - entry: mojo stdlib/scripts/check_licenses.mojo - language: system - files: '\.(mojo|🔥|py)$' - stages: [commit] - - repo: https://github.com/igorshubovych/markdownlint-cli - rev: v0.40.0 - hooks: - - id: markdownlint - args: ['--config', 'stdlib/scripts/.markdownlint.yaml', '--fix'] diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md index f4f5ad5a25..d6204fb411 100644 --- a/CODE_OF_CONDUCT.md +++ b/CODE_OF_CONDUCT.md @@ -1,4 +1,4 @@ -# Code of conduct +# Code of Conduct In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to make participation in our project and @@ -7,7 +7,7 @@ body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation. -## Our standards +## Our Standards All community forums and spaces are meant for professional interactions that are friendly, inclusive, helpful, and collaborative. Examples of behavior that @@ -32,7 +32,7 @@ participants include: - Conduct which could reasonably be considered inappropriate for the forum in which it occurs. -## Our responsibilities +## Our Responsibilities Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in @@ -47,14 +47,14 @@ threatening, offensive, or harmful. ## Scope This Code of Conduct applies to all project content and public spaces on the -Mojo GitHub repo, the rest of Modular’s GitHub organization, and all other -official Mojo community spaces and communication mediums, whether offline or +MAX GitHub repo, the rest of Modular’s GitHub organization, and all other +official MAX community spaces and communication mediums, whether offline or online. ## Enforcement Instances of abusive, harassment, or otherwise unacceptable behavior should be -reported to the project team at . All complaints will +reported to the project team at . All complaints will be reviewed and investigated and will result in a response that is deemed necessary and appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further diff --git a/LICENSE b/LICENSE index c1af4075d5..d972b8e80e 100644 --- a/LICENSE +++ b/LICENSE @@ -1,5 +1,5 @@ ============================================================================================== -The Mojo repository is licensed under the Apache License v2.0 with LLVM Exceptions: +The MAX repository is licensed under the Apache License v2.0 with LLVM Exceptions: ============================================================================================== Apache License diff --git a/README.md b/README.md index 2a4878c789..92d8013410 100644 --- a/README.md +++ b/README.md @@ -1,113 +1,107 @@ -

- +![Modular Logo](https://modular-assets.s3.amazonaws.com/images/modular_github_logo_bg.png) - [Website][Mojo] | [Getting Started] | [API Documentation] | [Contributing] | [Changelog] -
+# Welcome to MAX -[Mojo]: https://www.modular.com/mojo/ -[Getting Started]: https://docs.modular.com/mojo/manual/get-started/ -[API Documentation]: https://docs.modular.com/mojo/lib -[Contributing]: ./CONTRIBUTING.md -[Changelog]: ./docs/changelog.md +The Modular Accelerated Xecution ([MAX](https://www.modular.com/max)) platform +is an integrated suite of AI libraries, tools, and technologies that unifies +commonly fragmented AI deployment workflows. MAX accelerates time to market +for the latest innovations by giving AI developers a single toolchain that +unlocks full programmability, unparalleled performance, and seamless hardware portability. -# Welcome to Mojo 🔥 +![Modular Architecture Diagram](https://modular-assets.s3.amazonaws.com/images/modular_architecture_diagram_bg.png) -Mojo is a new programming language that bridges the gap between research -and production by combining Python syntax and ecosystem with systems -programming and metaprogramming features. Mojo is still young, but it is -designed to write blazing-fast code for CPUs, GPUs, and more as part of -the [MAX Platform](https://www.modular.com/max). +[See here to get started with MAX](https://docs.modular.com/max/get-started) +and when you want to report issues or request features, +[please create a GitHub issue here](https://github.com/modular/max/issues/new/choose). -This repo includes source code for: +The [Discord](https://discord.gg/modular) community is the best place to share +your experiences and chat with the team and other community members. -- Mojo examples -- Mojo documentation hosted at [modular.com](https://docs.modular.com/mojo/) -- The [Mojo standard library](https://docs.modular.com/mojo/lib) +In the [examples directory](https://github.com/modular/max/tree/main/examples), +you will find code examples and Jupyter notebooks that show how to run inference +with MAX. -This repo has two primary branches: +## Getting Started -- The [`stable`](https://github.com/modular/mojo/tree/stable) branch, which -is in sync with the last stable released version of Mojo. Use the examples -here if you’re using a [release build of Mojo](#latest-released). +MAX is available in both stable and nightly builds. To install either version, +follow the guide to [create a project with +Magic](https://docs.modular.com/max/create-project). -- The [`main`](https://github.com/modular/mojo/tree/main) branch, which -is in sync with the Mojo nightly build and subject to breakage. Use this branch -for [contributions](./CONTRIBUTING.md), or if you're using the latest -[nightly build of Mojo](#latest-nightly). +Then clone this repository: -To learn more about Mojo, see the -[Mojo Manual](https://docs.modular.com/mojo/manual/). +```bash +git clone https://github.com/modular/max.git +``` -## Installing Mojo +If you installed the stable build (v24.6), be sure you switch to the `stable` branch, +because the `main` branch is for nightly releases and might not be compatible +with stable builds: -### Latest Released +```bash +git checkout stable +``` -To install the last released build of Mojo, follow the guide to -[Get started with Mojo](https://docs.modular.com/mojo/manual/get-started). +## Running -### Latest Nightly +### MAX Pipelines -The nightly Mojo builds are subject to breakage and provide an inside -view of how the development of Mojo is progressing. Use at your own risk -and be patient! +To show off the full power of MAX, a +[series of end-to-end pipelines for common AI workloads](./src/max/pipelines/) +(and more) are ready to run. As one example, this includes everything needed to +self-host +[the Llama 3.1 text-generation model](./src/max/pipelines/architectures/llama3/). +All code is provided so that these pipelines can be customized, built upon, or +learned from. -To get nightly builds, see the same instructions to [Get started with -Mojo](https://docs.modular.com/mojo/manual/get-started), but when you create -your project, instead use the following `magic init` command to set the -conda package channel to `max-nightly`: +### Examples -```bash -magic init hello-world-nightly --format mojoproject \ - -c conda-forge -c https://conda.modular.com/max-nightly -``` +In addition to the end-to-end pipelines, there are many [examples](./examples/) +that exercise various aspects of MAX. You can follow the instructions in the +README for each example or notebook you want to run. -Or, if you're [using conda](https://docs.modular.com/magic/conda), add the -`https://conda.modular.com/max-nightly/` channel to your `environment.yaml` -file. For example: +### Notebooks -```yaml -[project] -name = "Mojo nightly example" -channels = ["conda-forge", "https://conda.modular.com/max-nightly/"] -platforms = ["osx-arm64", "linux-aarch64", "linux-64"] +Check out the [notebooks examples](./examples/notebooks/) for using MAX Engine +🏎️ for models such as -[dependencies] -max = "*" -``` +- [Mistral-7B](./examples/notebooks/mistral7b-python-onnx.ipynb) +- [Roberta-pytorch](./examples/notebooks/roberta-python-pytorch.ipynb) -When you clone this repo, you'll be on the `main` branch by default, -which includes code matching the latest nightly build: +### Tutorials -```bash -git clone https://github.com/modular/mojo.git -``` +The [tutorials](./tutorials/) directory contains the "finished" code for +tutorials you can read at +[docs.modular.com/max/tutorials](https://docs.modular.com/max/tutorials). + +### Docker Container + +The MAX container is our official Docker container for convenient MAX deployment. +It includes the latest MAX version with GPU support, several AI libraries, and +integrates with orchestration tools like Kubernetes. -If you want to instead see the source from the most recent stable -release, then you can switch to the `stable` branch. +The MAX container image is available in the +[Modular Docker Hub repository](https://hub.docker.com/r/modular/max-openai-api/). ## Contributing -When you want to report issues or request features, [please create a GitHub -issue here](https://github.com/modular/mojo/issues). -See [here](./CONTRIBUTING.md) for guidelines on filing good bugs. +Thanks for your interest in contributing to this repository! +We are not accepting pull requests yet. -We welcome contributions to this repo on the -[`main`](https://github.com/modular/mojo/tree/main) -branch. If you’d like to contribute to Mojo, please first read our [Contributor -Guide](https://github.com/modular/mojo/blob/main/CONTRIBUTING.md). +However, we welcome your bug reports. If you have a bug, please file an issue +[here](https://github.com/modular/max/issues/new/choose). -For more general questions or to chat with other Mojo developers, check out our -[Discord](https://discord.gg/modular). +If you need support, the [Discord](https://discord.gg/modular) +community is the best place to share your experiences and chat with +the team and other community members. ## License -This repository and its contributions are licensed under the Apache License v2.0 -with LLVM Exceptions (see the LLVM [License](https://llvm.org/LICENSE.txt)). +This repository and its contributions are licensed under the Apache License +v2.0 with LLVM Exceptions (see the LLVM [License](https://llvm.org/LICENSE.txt)). MAX and Mojo usage and distribution are licensed under the [MAX & Mojo Community License](https://www.modular.com/legal/max-mojo-license). -## Thanks to our contributors +### Third Party Licenses - - - +You are entirely responsible for checking and validating the licenses of +third parties (i.e. Huggingface) for related software and libraries that are downloaded. diff --git a/examples/testing/.gitattributes b/benchmark/.gitattributes similarity index 100% rename from examples/testing/.gitattributes rename to benchmark/.gitattributes diff --git a/benchmark/.gitignore b/benchmark/.gitignore new file mode 100644 index 0000000000..5ecf358c31 --- /dev/null +++ b/benchmark/.gitignore @@ -0,0 +1,7 @@ +# pixi environments +.pixi +*.egg-info +# magic environments +.magic +*.json +*.lock diff --git a/benchmark/README.md b/benchmark/README.md new file mode 100644 index 0000000000..b4b56ac55e --- /dev/null +++ b/benchmark/README.md @@ -0,0 +1,163 @@ +# Benchmark MAX Serve + +This directory contains tools to benchmark +[MAX Serve](https://docs.modular.com/max/serve/) performance. You can also use +these scripts to compare different LLM serving backends such as +[vLLM](https://github.com/vllm-project/vllm) and +[TensorRT-LLM](https://github.com/NVIDIA/TensorRT-LLM) against MAX. The +benchmarking tools measure throughput, latency, and resource utilization +metrics. + +Key features: + +- Tests any OpenAI-compatible HTTP endpoint +- Supports both chat and completion APIs +- Measures detailed latency metrics +- Works with hosted services + +> The `benchmark_serving.py` script is adapted from +> [vLLM](https://github.com/vllm-project/vllm/blob/main/benchmarks), +> licensed under Apache 2.0. We forked this script to ensure consistency with +> vLLM's measurement methodology and extended it with features we found helpful, +> such as client-side GPU metric collection via `nvitop`. + +## Table of contents + +- [Get started](#get-started) +- [Basic usage](#basic-usage) +- [Reference](#reference) +- [Troubleshooting](#troubleshooting) + +## Get started + +If this is your first time benchmarking a MAX Serve endpoint, +we recommend that you follow our [tutorial to benchmark MAX Serve on +a GPU](https://docs.modular.com/max/tutorials/benchmark-max-serve/). + +## Basic usage + +You can benchmark any HTTP endpoint that implements +OpenAI-compatible APIs as follows. + +First enter the local virtual environment: + +```cd +git clone -b stable https://github.com/modular/max.git + +cd max/benchmark + +magic shell +``` + +Then run the benchmark script while specifying your active +MAX Serve endpoint, model, and corresponding dataset to +use for benchmarking (for more detail, see our [benchmarking +tutorial](https://docs.modular.com/max/tutorials/benchmark-max-serve)): + +```bash +python benchmark_serving.py \ + --base-url https://company_url.xyz \ + --endpoint /v1/completions \ + --backend modular \ + --model meta-llama/Meta-Llama-3.1-8B-Instruct \ + --dataset-path ShareGPT_V3_unfiltered_cleaned_split.json \ + --num-prompts 500 +``` + +To exit the virtual environment shell simply run `exit`. + +### Output + +Results are saved in JSON format under the `results/` directory with the +following naming convention: + +```bash +{backend}-{request_rate}qps-{model_name}-{timestamp}.json +``` + +The output should look similar to the following: + +```bash +============ Serving Benchmark Result ============ +Successful requests: 500 +Failed requests: 0 +Benchmark duration (s): 46.27 +Total input tokens: 100895 +Total generated tokens: 106511 +Request throughput (req/s): 10.81 +Input token throughput (tok/s): 2180.51 +Output token throughput (tok/s): 2301.89 +---------------Time to First Token---------------- +Mean TTFT (ms): 15539.31 +Median TTFT (ms): 15068.37 +P99 TTFT (ms): 33034.17 +-----Time per Output Token (excl. 1st token)------ +Mean TPOT (ms): 34.23 +Median TPOT (ms): 28.47 +P99 TPOT (ms): 138.55 +---------------Inter-token Latency---------------- +Mean ITL (ms): 26.76 +Median ITL (ms): 5.42 +P99 ITL (ms): 228.45 +-------------------Token Stats-------------------- +Max input tokens: 933 +Max output tokens: 806 +Max total tokens: 1570 +--------------------GPU Stats--------------------- +GPU Utilization (%): 94.74 +Peak GPU Memory Used (MiB): 37228.12 +GPU Memory Available (MiB): 3216.25 +================================================== +``` + +### Key metrics explained + +- **Request throughput**: Number of complete requests processed per second +- **Input token throughput**: Number of input tokens processed per second +- **Output token throughput**: Number of tokens generated per second +- **TTFT**: Time to first token (TTFT), the time from request start to first +token generation +- **TPOT**: Time per output token (TPOT), the average time taken to generate +each output token +- **ITL**: Inter-token latency (ITL), the average time between consecutive token +or token-chunk generations +- **GPU utilization**: Percentage of time during which at least one GPU kernel +is being executed +- **Peak GPU memory used**: Peak memory usage during benchmark run + +## Reference + +### Command line arguments for `benchmark_serving.py` + +- Backend configuration: + - `--backend`: Choose from `modular` (MAX Serve), `vllm` (vLLM), or`trt-llm` + (TensorRT-LLM) + - `--model`: Hugging Face model ID or local path +- Load generation: + - `--num-prompts`: Number of prompts to process (default: `500`) + - `--request-rate`: Request rate in requests/second (default: `inf`) + - `--seed`: The random seed used to sample the dataset (default: `0`) +- Serving options + - `--base-url`: Base URL of the API service + - `--endpoint`: Specific API endpoint (`/v1/completions` or + `/v1/chat/completions`) + - `--tokenizer`: Hugging Face tokenizer to use (can be different from model) + - `--dataset-name`: (default:`sharegpt`) Real-world conversation data in the + form of variable length prompts and responses. ShareGPT is automatically + downloaded if not already present. +- Additional options + - `--collect-gpu-stats`: Report GPU utilization and memory consumption. + Only works when running `benchmark_serving.py` on the same instance as + the server, and only on NVIDIA GPUs. + +## Troubleshooting + +### Memory issues + +- Reduce batch size +- Check GPU memory availability: `nvidia-smi` + +### Permission issues + +- Verify `HF_TOKEN` is set correctly +- Ensure model access on Hugging Face diff --git a/benchmark/benchmark_serving.py b/benchmark/benchmark_serving.py new file mode 100644 index 0000000000..7d760c7d38 --- /dev/null +++ b/benchmark/benchmark_serving.py @@ -0,0 +1,1240 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + + +"""Benchmark online serving throughput.""" + +import argparse +import asyncio +import json +import logging +import os +import random +import resource +import sys +import time +import traceback +import warnings +from argparse import ArgumentParser as FlexibleArgumentParser +from dataclasses import dataclass, field +from datetime import datetime +from typing import Any, AsyncGenerator, Dict, List, Optional, Tuple, Union + +import aiohttp +import numpy as np +from tqdm.asyncio import tqdm +from transformers import ( + AutoTokenizer, + PreTrainedTokenizer, + PreTrainedTokenizerBase, + PreTrainedTokenizerFast, +) + +# 10 minute timeout per request session +AIOHTTP_TIMEOUT = aiohttp.ClientTimeout(total=10 * 60) + +logger = logging.getLogger("benchmark_serving") + + +@dataclass +class RequestFuncInput: + prompt: str + api_url: str + prompt_len: int + output_len: int + model: str + + +@dataclass +class RequestFuncOutput: + generated_text: str = "" + success: bool = False + latency: float = 0.0 + ttft: float = 0.0 # Time to first token + itl: List[float] = field( + default_factory=list + ) # List of inter-token latencies + prompt_len: int = 0 + error: str = "" + + +def compute_output_len( + tokenizer: PreTrainedTokenizerBase, output: RequestFuncOutput +) -> int: + return len( + tokenizer( + output.generated_text, + add_special_tokens=False, + ).input_ids + ) + + +async def async_request_trt_llm( + request_func_input: RequestFuncInput, + pbar: Optional[tqdm] = None, +) -> RequestFuncOutput: + api_url = request_func_input.api_url + assert api_url.endswith("generate_stream") + + async with aiohttp.ClientSession(timeout=AIOHTTP_TIMEOUT) as session: + payload = { + "accumulate_tokens": True, + "text_input": request_func_input.prompt, + "temperature": 0.0, + "top_p": 1.0, + "max_tokens": request_func_input.output_len, + "stream": True, + } + output = RequestFuncOutput() + output.prompt_len = request_func_input.prompt_len + + ttft = 0.0 + st = time.perf_counter() + most_recent_timestamp = st + try: + async with session.post(url=api_url, json=payload) as response: + if response.status == 200: + async for chunk_bytes in response.content: + chunk_bytes = chunk_bytes.strip() + if not chunk_bytes: + continue + + chunk = remove_prefix( + chunk_bytes.decode("utf-8"), "data:" + ) + + data = json.loads(chunk) + output.generated_text += data["text_output"] + timestamp = time.perf_counter() + # First token + if ttft == 0.0: + ttft = time.perf_counter() - st + output.ttft = ttft + + # Decoding phase + else: + output.itl.append(timestamp - most_recent_timestamp) + + most_recent_timestamp = timestamp + + output.latency = most_recent_timestamp - st + output.success = True + + else: + output.error = response.reason or "" + output.success = False + except Exception: + output.success = False + exc_info = sys.exc_info() + output.error = "".join(traceback.format_exception(*exc_info)) + + if pbar: + pbar.update(1) + return output + + +async def async_request_openai_completions( + request_func_input: RequestFuncInput, + pbar: Optional[tqdm] = None, +) -> RequestFuncOutput: + api_url = request_func_input.api_url + assert api_url.endswith(("completions", "profile")), ( + "OpenAI Completions API URL must end with 'completions' or 'profile'." + ) + + async with aiohttp.ClientSession(timeout=AIOHTTP_TIMEOUT) as session: + payload = { + "model": request_func_input.model, + "prompt": request_func_input.prompt, + "temperature": 0.0, + "best_of": 1, + "max_tokens": request_func_input.output_len, + "stream": True, + "ignore_eos": True, + } + + headers = { + "Authorization": f"Bearer {os.environ.get('OPENAI_API_KEY')}" + } + + output = RequestFuncOutput() + output.prompt_len = request_func_input.prompt_len + + generated_text = "" + ttft = 0.0 + st = time.perf_counter() + most_recent_timestamp = st + try: + async with session.post( + url=api_url, json=payload, headers=headers + ) as response: + if response.status == 200: + async for chunk_bytes in response.content: + chunk_bytes = chunk_bytes.strip() + if not chunk_bytes: + continue + + chunk = remove_prefix( + chunk_bytes.decode("utf-8"), "data: " + ) + latency = time.perf_counter() - st + if chunk == "[DONE]": + pass + else: + data = json.loads(chunk) + + # NOTE: Some completion API might have a last + # usage summary response without a token so we + # want to check a token was generated + if data["choices"][0]["text"]: + timestamp = time.perf_counter() + # First token + if ttft == 0.0: + ttft = time.perf_counter() - st + output.ttft = ttft + + # Decoding phase + else: + output.itl.append( + timestamp - most_recent_timestamp + ) + + most_recent_timestamp = timestamp + generated_text += data["choices"][0]["text"] + output.generated_text = generated_text + output.success = True + output.latency = latency + else: + output.error = response.reason or "" + output.success = False + except Exception: + output.success = False + exc_info = sys.exc_info() + output.error = "".join(traceback.format_exception(*exc_info)) + if pbar: + pbar.update(1) + return output + + +async def async_request_openai_chat_completions( + request_func_input: RequestFuncInput, + pbar: Optional[tqdm] = None, +) -> RequestFuncOutput: + api_url = request_func_input.api_url + assert api_url.endswith("chat/completions"), ( + "OpenAI Chat Completions API URL must end with 'chat/completions'." + ) + + async with aiohttp.ClientSession(timeout=AIOHTTP_TIMEOUT) as session: + payload = { + "model": request_func_input.model, + "messages": [ + { + "role": "user", + "content": request_func_input.prompt, + }, + ], + "temperature": 0.0, + "max_tokens": request_func_input.output_len, + "stream": True, + } + headers = { + "Content-Type": "application/json", + "Authorization": f"Bearer {os.environ.get('OPENAI_API_KEY')}", + } + + output = RequestFuncOutput() + output.prompt_len = request_func_input.prompt_len + + generated_text = "" + ttft = 0.0 + st = time.perf_counter() + most_recent_timestamp = st + try: + async with session.post( + url=api_url, json=payload, headers=headers + ) as response: + if response.status == 200: + async for chunk_bytes in response.content: + chunk_bytes = chunk_bytes.strip() + if not chunk_bytes: + continue + + chunk = remove_prefix( + chunk_bytes.decode("utf-8"), "data: " + ) + latency = time.perf_counter() - st + if chunk == "[DONE]": + pass + else: + timestamp = time.perf_counter() + data = json.loads(chunk) + + delta = data["choices"][0]["delta"] + if delta.get("content", None): + # First token + if ttft == 0.0: + ttft = time.perf_counter() - st + output.ttft = ttft + + # Decoding phase + else: + output.itl.append( + timestamp - most_recent_timestamp + ) + + generated_text += delta["content"] + + most_recent_timestamp = timestamp + + output.generated_text = generated_text + output.success = True + output.latency = latency + else: + output.error = response.reason or "" + output.success = False + except Exception: + output.success = False + exc_info = sys.exc_info() + output.error = "".join(traceback.format_exception(*exc_info)) + + if pbar: + pbar.update(1) + return output + + +# Since vllm must support Python 3.8, we can't use str.removeprefix(prefix) +# introduced in Python 3.9 +def remove_prefix(text: str, prefix: str) -> str: + if text.startswith(prefix): + return text[len(prefix) :] + return text + + +def get_tokenizer( + pretrained_model_name_or_path: str, trust_remote_code: bool +) -> Union[PreTrainedTokenizer, PreTrainedTokenizerFast]: + return AutoTokenizer.from_pretrained( + pretrained_model_name_or_path, trust_remote_code=trust_remote_code + ) + + +ASYNC_REQUEST_FUNCS = { + "vllm": async_request_openai_completions, + "trt-llm": async_request_trt_llm, + "modular": async_request_openai_completions, + "modular-chat": async_request_openai_chat_completions, +} + + +# from https://github.com/sgl-project/sglang/blob/v0.4.0/python/sglang/bench_serving.py#L1283 +def set_ulimit(target_soft_limit=65535): + resource_type = resource.RLIMIT_NOFILE + current_soft, current_hard = resource.getrlimit(resource_type) + + if current_soft < target_soft_limit: + try: + resource.setrlimit(resource_type, (target_soft_limit, current_hard)) + except ValueError as e: + print(f"Fail to set RLIMIT_NOFILE: {e}") + + +@dataclass +class BenchmarkMetrics: + completed: int + failures: int + total_input: int + total_output: int + request_throughput: float + input_throughput: float + output_throughput: float + mean_ttft_ms: float + median_ttft_ms: float + std_ttft_ms: float + p99_ttft_ms: float + mean_tpot_ms: float + median_tpot_ms: float + std_tpot_ms: float + p99_tpot_ms: float + mean_itl_ms: float + median_itl_ms: float + std_itl_ms: float + p99_itl_ms: float + max_input: int + max_output: int + max_total: int + peak_gpu_memory_mib: float # 'benchmark/gpu:0/memory_used (MiB)/max' + available_gpu_memory_mib: float # 'benchmark/gpu:0/memory_free (MiB)/min' + gpu_utilization: float # 'benchmark/gpu:0/gpu_utilization (%)/mean' + + +def sample_sharegpt_requests( + dataset_path: str, + num_requests: int, + tokenizer: PreTrainedTokenizerBase, + fixed_output_len: Optional[int] = None, +) -> List[Tuple[str, int, int]]: + if fixed_output_len is not None and fixed_output_len < 4: + raise ValueError("output_len too small") + # Load the dataset. + with open(dataset_path) as f: + dataset = json.load(f) + # Filter out the conversations with less than 2 turns. + dataset = [data for data in dataset if len(data["conversations"]) >= 2] + # Only keep the first two turns of each conversation. + dataset = [ + (data["conversations"][0]["value"], data["conversations"][1]["value"]) + for data in dataset + ] + + # Shuffle the dataset. + random.shuffle(dataset) + + # Filter out sequences that are too long or too short + filtered_dataset: List[Tuple[str, int, int]] = [] + for i in range(len(dataset)): + if len(filtered_dataset) == num_requests: + break + + # Tokenize the prompts and completions. + prompt = dataset[i][0] + prompt_token_ids = tokenizer(prompt).input_ids + completion = dataset[i][1] + completion_token_ids = tokenizer(completion).input_ids + prompt_len = len(prompt_token_ids) + output_len = ( + len(completion_token_ids) + if fixed_output_len is None + else fixed_output_len + ) + if prompt_len < 4 or output_len < 4: + # Prune too short sequences. + continue + if prompt_len > 1024 or prompt_len + output_len > 2048: + # Prune too long sequences. + continue + filtered_dataset.append((prompt, prompt_len, output_len)) + + return filtered_dataset + + +def sample_sonnet_requests( + dataset_path: str, + num_requests: int, + input_len: int, + output_len: int, + prefix_len: int, + tokenizer: PreTrainedTokenizerBase, +) -> List[Tuple[str, str, int, int]]: + assert input_len > prefix_len, ( + "'args.sonnet-input-len' must be greater than 'args.prefix-input-len'." + ) + + # Load the dataset. + with open(dataset_path) as f: + poem_lines = f.readlines() + + # Tokenize the poem lines. + poem_token_ids = tokenizer(poem_lines).input_ids + average_poem_len = sum( + len(token_ids) for token_ids in poem_token_ids + ) / len(poem_token_ids) + + # Base prefix for all requests. + base_prompt = "Pick as many lines as you can from these poem lines:\n" + base_message = [ + { + "role": "user", + "content": base_prompt, + } + ] + base_prompt_formatted = tokenizer.apply_chat_template( + base_message, add_generation_prompt=True, tokenize=False + ) + base_prompt_offset = len(tokenizer(base_prompt_formatted).input_ids) + + assert input_len > base_prompt_offset, ( + f"Please set 'args.sonnet-input-len' higher than {base_prompt_offset}." + ) + num_input_lines = round((input_len - base_prompt_offset) / average_poem_len) + + # First approximately `prefix_len` number of tokens in the + # prompt are fixed poem lines. + assert prefix_len > base_prompt_offset, ( + f"Please set 'args.sonnet-prefix-len' higher than {base_prompt_offset}." + ) + + num_prefix_lines = round( + (prefix_len - base_prompt_offset) / average_poem_len + ) + prefix_lines = poem_lines[:num_prefix_lines] + + # Sample the rest of lines per request. + sampled_requests: List[Tuple[str, str, int, int]] = [] + for _ in range(num_requests): + sampled_lines = "".join( + prefix_lines + + random.sample(poem_lines, num_input_lines - num_prefix_lines) + ) + + prompt = f"{base_prompt}{sampled_lines}" + message = [ + { + "role": "user", + "content": prompt, + }, + ] + prompt_formatted = tokenizer.apply_chat_template( + message, add_generation_prompt=True, tokenize=False + ) + prompt_len = len(tokenizer(prompt_formatted).input_ids) + sampled_requests.append( + (prompt, prompt_formatted, prompt_len, output_len) + ) + + return sampled_requests + + +def sample_random_requests( + input_len: int, + output_len: int, + num_prompts: int, + range_ratio: float, + tokenizer: PreTrainedTokenizerBase, +) -> List[Tuple[str, int, int]]: + input_lens = np.random.randint( + int(input_len * range_ratio), + input_len + 1, + size=num_prompts, + ) + output_lens = np.random.randint( + int(output_len * range_ratio), + output_len + 1, + size=num_prompts, + ) + offsets = np.random.randint(0, tokenizer.vocab_size, size=num_prompts) + input_requests = [] + for i in range(num_prompts): + prompt = tokenizer.decode( + [ + (offsets[i] + i + j) % tokenizer.vocab_size + for j in range(input_lens[i]) + ] + ) + input_requests.append((prompt, int(input_lens[i]), int(output_lens[i]))) + + return input_requests + + +async def get_request( + input_requests: List[Tuple[str, int, int]], + request_rate: float, +) -> AsyncGenerator[Tuple[str, int, int], None]: + for request in input_requests: + yield request + + if request_rate == float("inf"): + # If the request rate is infinity, then we don't need to wait. + continue + + # Sample the request interval from the exponential distribution. + interval = np.random.exponential(1.0 / request_rate) + # The next request will be sent after the interval. + await asyncio.sleep(interval) + + +def calculate_metrics( + input_requests: List[Tuple[str, int, int]], + outputs: List[RequestFuncOutput], + dur_s: float, + tokenizer: PreTrainedTokenizerBase, + gpu_metrics: Dict[str, Any], +) -> Tuple[BenchmarkMetrics, List[int]]: + actual_output_lens: List[int] = [] + total_input = 0 + completed = 0 + max_input = 0 + max_output = 0 + max_total = 0 + failures = 0 + failed_responses = [] + itls: List[float] = [] + tpots: List[float] = [] + ttfts: List[float] = [] + for i in range(len(outputs)): + if outputs[i].success: + # We use the tokenizer to count the number of output tokens for all + # serving backends instead of looking at len(outputs[i].itl) since + # multiple output tokens may be bundled together + # Note : this may inflate the output token count slightly + output_len = compute_output_len(tokenizer, outputs[i]) + actual_output_lens.append(output_len) + total_input += input_requests[i][1] + if output_len > 1: + tpots.append( + (outputs[i].latency - outputs[i].ttft) / (output_len - 1) + ) + itls += outputs[i].itl + ttfts.append(outputs[i].ttft) + completed += 1 + max_input = max(max_input, input_requests[i][1]) + max_output = max(max_output, output_len) + max_total = max(max_total, input_requests[i][1] + output_len) + else: + actual_output_lens.append(0) + failures = failures + 1 + failed_responses.append(outputs[i]) + + if failures != 0: + warnings.warn( + ( + "Some requests failed. The responses returned are displayed " + "below. Please check server logs for more information." + ), + stacklevel=2, + ) + for f in failed_responses: + logger.error(f"Failed :: {f}") + + if completed == 0: + warnings.warn( + ( + "All requests failed. This is likely due to a misconfiguration " + "on the benchmark arguments." + ), + stacklevel=2, + ) + metrics = BenchmarkMetrics( + completed=completed, + failures=failures, + total_input=total_input, + total_output=sum(actual_output_lens), + request_throughput=completed / dur_s, + input_throughput=total_input / dur_s, + output_throughput=sum(actual_output_lens) / dur_s, + mean_ttft_ms=float(np.mean(ttfts or 0)) + * 1000, # ttfts is empty if streaming is not supported by backend + median_ttft_ms=float(np.median(ttfts or 0)) * 1000, + std_ttft_ms=float(np.std(ttfts or 0)) * 1000, + p99_ttft_ms=float(np.percentile(ttfts or 0, 99)) * 1000, + mean_tpot_ms=float(np.mean(tpots or 0)) * 1000, + median_tpot_ms=float(np.median(tpots or 0)) * 1000, + std_tpot_ms=float(np.std(tpots or 0)) * 1000, + p99_tpot_ms=float(np.percentile(tpots or 0, 99)) * 1000, + mean_itl_ms=float(np.mean(itls or 0)) * 1000, + median_itl_ms=float(np.median(itls or 0)) * 1000, + std_itl_ms=float(np.std(itls or 0)) * 1000, + p99_itl_ms=float(np.percentile(itls or 0, 99)) * 1000, + max_input=max_input, + max_output=max_output, + max_total=max_total, + peak_gpu_memory_mib=float( + gpu_metrics.get("benchmark/gpu:0/memory_used (MiB)/max") or 0 + ), + available_gpu_memory_mib=float( + gpu_metrics.get("benchmark/gpu:0/memory_free (MiB)/min") or 0 + ), + gpu_utilization=float( + gpu_metrics.get("benchmark/gpu:0/gpu_utilization (%)/mean") or 0 + ), + ) + + return metrics, actual_output_lens + + +async def benchmark( + backend: str, + api_url: str, + base_url: str, + model_id: str, + tokenizer: PreTrainedTokenizerBase, + input_requests: List[Tuple[str, int, int]], + request_rate: float, + disable_tqdm: bool, + do_test_prompt: bool, + collect_gpu_stats: bool, + print_inputs_and_outputs: bool, +): + if backend in ASYNC_REQUEST_FUNCS: + request_func = ASYNC_REQUEST_FUNCS[backend] + else: + raise ValueError(f"Unknown backend: {backend}") + + if do_test_prompt: + logger.info("Starting initial single prompt test run...") + test_prompt, test_prompt_len, test_output_len = input_requests[0] + test_input = RequestFuncInput( + model=model_id, + prompt=test_prompt, + api_url=api_url, + prompt_len=test_prompt_len, + output_len=test_output_len, + ) + test_output = await request_func( + request_func_input=test_input, + ) + if not test_output.success: + raise ValueError( + "Initial test run failed - Please make sure benchmark" + " arguments are correctly specified. Error:" + f" {test_output.error}" + ) + else: + logger.info( + "Initial test run completed. Starting main benchmark run..." + ) + + logger.info(f"Traffic request rate: {request_rate}") + + pbar = None if disable_tqdm else tqdm(total=len(input_requests)) + if collect_gpu_stats: + from nvitop import ResourceMetricCollector + + collector = ResourceMetricCollector() + collector.start("benchmark") + + benchmark_start_time = time.perf_counter_ns() + tasks: List[asyncio.Task] = [] + async for request in get_request(input_requests, request_rate): + prompt, prompt_len, output_len = request + request_func_input = RequestFuncInput( + model=model_id, + prompt=prompt, + api_url=api_url, + prompt_len=prompt_len, + output_len=output_len, + ) + tasks.append( + asyncio.create_task( + request_func( + request_func_input=request_func_input, + pbar=pbar, + ) + ) + ) + outputs: List[RequestFuncOutput] = await asyncio.gather(*tasks) + + if pbar is not None: + pbar.close() + + benchmark_duration = (time.perf_counter_ns() - benchmark_start_time) / 1e9 + + if print_inputs_and_outputs: + print("Generated output text:") + for req_id, output in enumerate(outputs): + output_len = compute_output_len(tokenizer, output) + print( + { + "req_id": req_id, + "output_len": output_len, + "output": output.generated_text, + } + ) + + if collect_gpu_stats: + gpu_metrics = collector.collect() + collector.stop() + else: + gpu_metrics = {} + + metrics, actual_output_lens = calculate_metrics( + input_requests=input_requests, + outputs=outputs, + dur_s=benchmark_duration, + tokenizer=tokenizer, + gpu_metrics=gpu_metrics, + ) + + print("{s:{c}^{n}}".format(s=" Serving Benchmark Result ", n=50, c="=")) + print("{:<40} {:<10}".format("Successful requests:", metrics.completed)) + print("{:<40} {:<10}".format("Failed requests:", metrics.failures)) + print( + "{:<40} {:<10.2f}".format("Benchmark duration (s):", benchmark_duration) + ) + print("{:<40} {:<10}".format("Total input tokens:", metrics.total_input)) + print( + "{:<40} {:<10}".format("Total generated tokens:", metrics.total_output) + ) + print( + "{:<40} {:<10.2f}".format( + "Request throughput (req/s):", metrics.request_throughput + ) + ) + print( + "{:<40} {:<10.2f}".format( + "Input token throughput (tok/s):", metrics.input_throughput + ) + ) + print( + "{:<40} {:<10.2f}".format( + "Output token throughput (tok/s):", metrics.output_throughput + ) + ) + print("{s:{c}^{n}}".format(s="Time to First Token", n=50, c="-")) + print("{:<40} {:<10.2f}".format("Mean TTFT (ms):", metrics.mean_ttft_ms)) + print( + "{:<40} {:<10.2f}".format("Median TTFT (ms):", metrics.median_ttft_ms) + ) + print("{:<40} {:<10.2f}".format("P99 TTFT (ms):", metrics.p99_ttft_ms)) + print( + "{s:{c}^{n}}".format( + s="Time per Output Token (excl. 1st token)", n=50, c="-" + ) + ) + print("{:<40} {:<10.2f}".format("Mean TPOT (ms):", metrics.mean_tpot_ms)) + print( + "{:<40} {:<10.2f}".format("Median TPOT (ms):", metrics.median_tpot_ms) + ) + print("{:<40} {:<10.2f}".format("P99 TPOT (ms):", metrics.p99_tpot_ms)) + print("{s:{c}^{n}}".format(s="Inter-token Latency", n=50, c="-")) + print("{:<40} {:<10.2f}".format("Mean ITL (ms):", metrics.mean_itl_ms)) + print("{:<40} {:<10.2f}".format("Median ITL (ms):", metrics.median_itl_ms)) + print("{:<40} {:<10.2f}".format("P99 ITL (ms):", metrics.p99_itl_ms)) + print("{s:{c}^{n}}".format(s="Token Stats", n=50, c="-")) + print("{:<40} {:<10}".format("Max input tokens:", metrics.max_input)) + print("{:<40} {:<10}".format("Max output tokens:", metrics.max_output)) + print("{:<40} {:<10}".format("Max total tokens:", metrics.max_total)) + if collect_gpu_stats: + print("{s:{c}^{n}}".format(s="GPU Stats", n=50, c="-")) + print( + "{:<40} {:<10.2f}".format( + "GPU Utilization (%):", metrics.gpu_utilization + ) + ) + print( + "{:<40} {:<10.2f}".format( + "Peak GPU Memory Used (MiB):", metrics.peak_gpu_memory_mib + ) + ) + print( + "{:<40} {:<10.2f}".format( + "GPU Memory Available (MiB):", metrics.available_gpu_memory_mib + ) + ) + + print("=" * 50) + + result = { + "duration": benchmark_duration, + "completed": metrics.completed, + "total_input_tokens": metrics.total_input, + "total_output_tokens": metrics.total_output, + "request_throughput": metrics.request_throughput, + "input_throughput": metrics.input_throughput, + "output_throughput": metrics.output_throughput, + "mean_ttft_ms": metrics.mean_ttft_ms, + "median_ttft_ms": metrics.median_ttft_ms, + "std_ttft_ms": metrics.std_ttft_ms, + "p99_ttft_ms": metrics.p99_ttft_ms, + "mean_tpot_ms": metrics.mean_tpot_ms, + "median_tpot_ms": metrics.median_tpot_ms, + "std_tpot_ms": metrics.std_tpot_ms, + "p99_tpot_ms": metrics.p99_tpot_ms, + "mean_itl_ms": metrics.mean_itl_ms, + "median_itl_ms": metrics.median_itl_ms, + "std_itl_ms": metrics.std_itl_ms, + "p99_itl_ms": metrics.p99_itl_ms, + "input_lens": [output.prompt_len for output in outputs], + "output_lens": actual_output_lens, + "ttfts": [output.ttft for output in outputs], + "itls": [output.itl for output in outputs], + "generated_texts": [output.generated_text for output in outputs], + "errors": [output.error for output in outputs], + "peak_gpu_memory_mib": metrics.peak_gpu_memory_mib, + "available_gpu_memory_mib": metrics.available_gpu_memory_mib, + "gpu_utilization": metrics.gpu_utilization, + } + return result + + +def main(args: argparse.Namespace): + logging.basicConfig( + format="%(asctime)s.%(msecs)03d %(levelname)s: %(name)s: %(message)s", + datefmt="%H:%M:%S", + level=logging.INFO, + ) + + logger.info(args) + random.seed(args.seed) + np.random.seed(args.seed) + # benchmarks can create a large number of concurrent in-flight requests + # so bump the file limit to make room for them + set_ulimit() + + backend = args.backend + model_id = args.model + tokenizer_id = args.tokenizer if args.tokenizer is not None else args.model + + if args.base_url is not None: + api_url = f"{args.base_url}{args.endpoint}" + base_url = f"{args.base_url}" + else: + api_url = f"http://{args.host}:{args.port}{args.endpoint}" + base_url = f"http://{args.host}:{args.port}" + + logger.info(f"getting tokenizer. api url: {api_url}, base_url: {base_url}") + tokenizer = get_tokenizer( + tokenizer_id, trust_remote_code=args.trust_remote_code + ) + + logger.info("sampling requests") + if args.dataset is not None: + warnings.warn( + ( + "The '--dataset' argument will be deprecated in the next " + "release. Please use '--dataset-name' and " + "'--dataset-path' in the future runs." + ), + stacklevel=2, + ) + input_requests = sample_sharegpt_requests( + dataset_path=args.dataset, + num_requests=args.num_prompts, + tokenizer=tokenizer, + fixed_output_len=args.sharegpt_output_len, + ) + + elif args.dataset_name == "sharegpt": + input_requests = sample_sharegpt_requests( + dataset_path=args.dataset_path, + num_requests=args.num_prompts, + tokenizer=tokenizer, + fixed_output_len=args.sharegpt_output_len, + ) + + elif args.dataset_name == "sonnet": + # Sample sonnet requests with common parameters + sonnet_requests = sample_sonnet_requests( + dataset_path=args.dataset_path, + num_requests=args.num_prompts, + input_len=args.sonnet_input_len, + output_len=args.sonnet_output_len, + prefix_len=args.sonnet_prefix_len, + tokenizer=tokenizer, + ) + + # Do not format the prompt, pass to message directly + if args.backend == "openai-chat": + # For chat API, use raw prompt without formatting + input_requests = [ + (prompt, prompt_len, output_len) + for prompt, _, prompt_len, output_len in sonnet_requests + ] + else: + # For non-chat API, ensure model has chat template and use formatted prompt + assert tokenizer.chat_template or tokenizer.default_chat_template, ( + "Tokenizer/model must have chat template for sonnet dataset." + ) + input_requests = [ + (prompt_formatted, prompt_len, output_len) + for _, prompt_formatted, prompt_len, output_len in sonnet_requests + ] + + elif args.dataset_name == "random": + input_requests = sample_random_requests( + input_len=args.random_input_len, + output_len=args.random_output_len, + num_prompts=args.num_prompts, + range_ratio=args.random_range_ratio, + tokenizer=tokenizer, + ) + + else: + raise ValueError(f"Unknown dataset: {args.dataset_name}") + + if args.print_inputs_and_outputs: + print("Input prompts:") + for req_id, (prompt_formatted, prompt_len, output_len) in enumerate( + input_requests + ): + print( + { + "req_id": req_id, + "output_len": output_len, + "prompt_len": prompt_len, + "prompt": prompt_formatted, + } + ) + + logger.info("starting benchmark run") + benchmark_result = asyncio.run( + benchmark( + backend=backend, + api_url=api_url, + base_url=base_url, + model_id=model_id, + tokenizer=tokenizer, + input_requests=input_requests, + request_rate=args.request_rate, + disable_tqdm=args.disable_tqdm, + do_test_prompt=not args.skip_test_prompt, + collect_gpu_stats=args.collect_gpu_stats, + print_inputs_and_outputs=args.print_inputs_and_outputs, + ) + ) + + # Benchmark run failed if any failed requests + if args.num_prompts != benchmark_result["completed"]: + logger.info("finished benchmark run: Failed.") + sys.exit(1) + + # Save config and results to json + if args.save_result: + logger.info("saving results") + result_json: Dict[str, Any] = {} + + # Setup + current_dt = datetime.now().strftime("%Y-%m-%d %H:%M:%S") + result_json["date"] = current_dt + result_json["backend"] = backend + result_json["model_id"] = model_id + result_json["tokenizer_id"] = tokenizer_id + result_json["num_prompts"] = args.num_prompts + result_json["server_args"] = args.server_args + result_json["dataset_name"] = args.dataset_name + + # Metadata + if args.metadata: + for item in args.metadata: + if "=" in item: + kvstring = item.split("=") + result_json[kvstring[0].strip()] = kvstring[1].strip() + else: + raise ValueError( + "Invalid metadata format. Please use KEY=VALUE format." + ) + + # Traffic + result_json["request_rate"] = ( + args.request_rate if args.request_rate < float("inf") else "inf" + ) + + # Merge with benchmark result + result_json = {**result_json, **benchmark_result} + + # Save to file + base_model_id = model_id.split("/")[-1] + file_name = f"{backend}-{args.request_rate}qps-{base_model_id}-{current_dt}.json" # noqa + if args.result_filename: + file_name = args.result_filename + if args.result_dir: + file_name = os.path.join(args.result_dir, file_name) + with open(file_name, "w") as outfile: + json.dump(result_json, outfile) + + logger.info("finished benchmark run: Success.") + + +if __name__ == "__main__": + parser = FlexibleArgumentParser( + description="Benchmark the online serving throughput." + ) + parser.add_argument( + "--backend", + type=str, + default="modular", + choices=list(ASYNC_REQUEST_FUNCS.keys()), + ) + parser.add_argument( + "--base-url", + type=str, + default=None, + help="Server or API base url if not using http host and port.", + ) + parser.add_argument("--host", type=str, default="localhost") + parser.add_argument("--port", type=int, default=8000) + parser.add_argument( + "--endpoint", + type=str, + default="/v1/completions", + help="API endpoint.", + ) + parser.add_argument( + "--dataset", + type=str, + default=None, + help=( + "Path to the ShareGPT dataset, will be deprecated in the " + "next release." + ), + ) + parser.add_argument( + "--dataset-name", + type=str, + default="sharegpt", + choices=["sharegpt", "sonnet", "random"], + help="Name of the dataset to benchmark on.", + ) + parser.add_argument( + "--dataset-path", type=str, default=None, help="Path to the dataset." + ) + parser.add_argument( + "--model", + type=str, + required=True, + help="Name of the model.", + ) + parser.add_argument( + "--tokenizer", + type=str, + help=( # noqa: E501 + "Name or path of the tokenizer, if not using the default tokenizer." + ), + ) + parser.add_argument( + "--num-prompts", + type=int, + default=1000, + help="Number of prompts to process.", + ) + parser.add_argument( + "--sharegpt-output-len", + type=int, + default=None, + help=( + "Output length for each request. Overrides the output length " + "from the ShareGPT dataset." + ), + ) + parser.add_argument( + "--sonnet-input-len", + type=int, + default=550, + help=( + "Number of input tokens per request, used only for sonnet dataset." + ), + ) + parser.add_argument( + "--sonnet-output-len", + type=int, + default=150, + help=( + "Number of output tokens per request, used only for sonnet dataset." + ), + ) + parser.add_argument( + "--sonnet-prefix-len", + type=int, + default=200, + help=( + "Number of prefix tokens per request, used only for sonnet dataset." + ), + ) + parser.add_argument( + "--random-input-len", + type=int, + default=1024, + help=( + "Number of input tokens per request, used only for random sampling." + ), + ) + parser.add_argument( + "--random-output-len", + type=int, + default=128, + help=( + "Number of output tokens per request, used only for random" + " sampling." + ), + ) + parser.add_argument( + "--random-range-ratio", + type=float, + default=1.0, + help=( + "Range of sampled ratio of input/output length, " + "used only for random sampling." + ), + ) + parser.add_argument( + "--request-rate", + type=float, + default=float("inf"), + help=( + "Number of requests per second. If this is inf, " + "then all the requests are sent at time 0. " + "Otherwise, we use Poisson process to synthesize " + "the request arrival times." + ), + ) + parser.add_argument("--seed", type=int, default=0) + parser.add_argument( + "--trust-remote-code", + action="store_true", + help="Trust remote code from huggingface", + ) + parser.add_argument( + "--disable-tqdm", + action="store_true", + help="Specify to disable tqdm progress bar.", + ) + parser.add_argument( + "--skip-test-prompt", + action="store_true", + help="Skip the test prompt. Useful when doing external profiling.", + ) + parser.add_argument( + "--collect-gpu-stats", + action="store_true", + help="Collect GPU stats with NVML (NVIDIA only).", + ) + parser.add_argument( + "--save-result", + action="store_true", + help="Specify to save benchmark results to a json file", + ) + parser.add_argument( + "--metadata", + metavar="KEY=VALUE", + nargs="*", + help=( + "Key-value pairs (e.g, --metadata version=0.3.3 tp=1) " + "for metadata of this run to be saved in the result JSON file " + "for record keeping purposes." + ), + ) + parser.add_argument( + "--result-dir", + type=str, + default=None, + help=( + "Specify directory to save benchmark json results." + "If not specified, results are saved in the current directory." + ), + ) + parser.add_argument( + "--result-filename", + type=str, + default=None, + help=( + "Specify the filename to save benchmark json results." + "If not specified, results will be saved in " + "{backend}-{args.request_rate}qps-{base_model_id}-{current_dt}.json" + " format." + ), + ) + parser.add_argument( + "--print-inputs-and-outputs", + action="store_true", + help="Print all input and outputs to console.", + ) + + parser.add_argument( + "--server-args", + type=str, + default="", + help="Server args", + ) + + args = parser.parse_args() + main(args) diff --git a/benchmark/pyproject.toml b/benchmark/pyproject.toml new file mode 100644 index 0000000000..af102c505f --- /dev/null +++ b/benchmark/pyproject.toml @@ -0,0 +1,32 @@ +[project] +authors = [{ name = "Modular", email = "hello@modular.com" }] +dependencies = [ + "aiohttp>=3.11.10,<4", + "huggingface-hub>=0.26.5,<0.27", + "hf-transfer>=0.1.8,<0.2", + "numpy>=2.2.0,<3", + "tqdm>=4.67.1,<5", + "transformers>=4.47.0,<5", + "nvitop>=1.3.2,<2", + "jinja2>=3.1.4,<4", +] +description = "MAX Serve benchmarking tools" +name = "benchmarking" +requires-python = ">=3.9,<3.13" +version = "0.1.0" + +[build-system] +build-backend = "hatchling.build" +requires = ["hatchling"] + +[tool.hatch.build.targets.wheel] +packages = ["."] + +[tool.pixi.project] +channels = ["conda-forge", "https://conda.modular.com/max"] +platforms = ["osx-arm64", "linux-64", "linux-aarch64"] + +[tool.pixi.pypi-dependencies] +benchmarking = { path = ".", editable = true } + +[tool.pixi.tasks] diff --git a/benchmark/requirements.txt b/benchmark/requirements.txt new file mode 100644 index 0000000000..8f2b35964d --- /dev/null +++ b/benchmark/requirements.txt @@ -0,0 +1,8 @@ +aiohttp +huggingface_hub[hf_transfer] +huggingface_hub +numpy +tqdm +transformers +nvitop +Jinja2 diff --git a/examples/README.md b/examples/README.md index 6c651cd92d..0722ca6ec4 100644 --- a/examples/README.md +++ b/examples/README.md @@ -1,48 +1,39 @@ -# Mojo code examples +# MAX examples -A collection of sample programs written in the -[Mojo](https://docs.modular.com/mojo/manual/) programming language. +These examples demonstrate the power and flexibility of +[MAX](https://docs.modular.com/max/). They include: -## Getting Started +## [Custom GPU and CPU operations in Mojo](custom_ops/) -The easiest way to get started with Mojo is to install the Magic package and -virtual environment manager. By following the instructions in [Get started with -Magic](https://docs.modular.com/magic/), you can quickly install Magic and use -it to create a virtual environment for Mojo programming. Alternatively, you can -follow the instructions for how to [Add MAX/Mojo to a conda -project](https://docs.modular.com/magic/conda). +The [MAX Graph API](https://docs.modular.com/max/graph/) provides a powerful +framework for staging computational graphs to be run on GPUs, CPUs, and more. +Each operation in one of these graphs is defined in +[Mojo](https://docs.modular.com/mojo/), an easy-to-use language for writing +high-performance code. -After you have set up a Mojo programming environment, you can then use `git` to -clone this repository of Mojo samples using the command below: +The examples here illustrate how to construct custom graph operations in Mojo +that run on GPUs and CPUs, as well as how to build computational graphs that +contain and run them on different hardware architectures. -```bash -git clone https://github.com/modular/mojo.git -``` +## [Compiling and running Mojo functions on a GPU](gpu_functions/) -## Running +In addition to placing custom Mojo functions within a computational graph, the +MAX Driver API can handle direct compilation of GPU functions written in Mojo +and can dispatch them onto the GPU. This is a programming model that may be +familiar to those who have worked with CUDA or similar GPGPU frameworks. -If you're using [`magic`](https://docs.modular.com/magic), navigate into -the `examples` directory and use `magic run` to invoke `mojo` and run the basic -example programs. For example: +These examples show how to compile and run Mojo functions, from simple to +complex, on an available GPU. Note that +[a MAX-compatible GPU](https://docs.modular.com/max/faq/#gpu-requirements) will +be necessary to build and run these. -```bash -magic run mojo matmul.mojo -``` +## [PyTorch and ONNX inference on MAX](inference/) -You'll also find several complete Mojo projects as subdirectories of the -`examples` directory. +MAX has the power to accelerate existing PyTorch and ONNX models directly, and +provides Python, Mojo, and C APIs for this. These examples showcase common +models from these frameworks and how to run them even faster via MAX. -## License +## [Jupyter notebooks](notebooks/) -The Mojo examples in this repository are licensed under the Apache License v2.0 -with LLVM Exceptions (see the LLVM [License](https://llvm.org/LICENSE.txt)). - -## Contributing - -As a contributor, your efforts and expertise are invaluable in driving the -evolution of the Mojo programming language. The [Mojo contributor -guide](../CONTRIBUTING.md) provides all the information necessary to make -meaningful contributions—from understanding the submission process to -adhering to best practices: - -- [Mojo contributor guide](../CONTRIBUTING.md) +Jupyter notebooks that showcase PyTorch and ONNX models being accelerated +through MAX. diff --git a/examples/console.py b/examples/console.py new file mode 100644 index 0000000000..be8b77485a --- /dev/null +++ b/examples/console.py @@ -0,0 +1,179 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +import os +import subprocess +from enum import Enum +from pathlib import Path +from typing import List, Optional, Tuple + +try: + from rich.console import Console + from rich.prompt import Confirm + from rich.table import Table + +except ImportError: + print("rich not found. Installing rich...") + subprocess.run(["python3", "-m", "pip", "install", "rich"]) + from rich.console import Console + from rich.prompt import Confirm + from rich.table import Table + +ROOT = Path(os.path.dirname(__file__)) +RETRIES = 10 +EXCEEDED_RETRY_ERROR = ( + "Exceeded the number of retries. Please re-run the console again and follow" + " the prompt." +) + + +def list_repositories() -> List[Tuple[str, str]]: + repos = [] + for top_repo in os.listdir(ROOT): + # Skip notebook folder and files + if "notebook" in top_repo or not os.path.isdir(top_repo): + continue + + repo = os.path.join(ROOT, top_repo) + for r in os.listdir(repo): + full_path = os.path.join(repo, r) + if os.path.isdir(full_path) and os.path.exists( + os.path.join(full_path, "run.sh") + ): + repos.append((os.path.join(top_repo, r), full_path)) + + repos = sorted(repos, key=lambda x: x[0]) + return repos + + +class InputState(Enum): + PROMPT_INPUT = 0 + VALIDATE_INPUT = 1 + CHECK_RANGE = 2 + + +def prompt_validation( + console: Console, retries: int, repos: List[Tuple[str, str]] +) -> Optional[Tuple[str, str]]: + state = InputState.PROMPT_INPUT + selected_index = None + n_repos = len(repos) + while retries > 0: + if state == InputState.PROMPT_INPUT: + selected_index = console.input( + "Enter the index of an example to run: " + ) + state = InputState.VALIDATE_INPUT + elif state == InputState.VALIDATE_INPUT: + if not selected_index.strip(): + selected_index = console.input( + f"Please enter an index between {0}-{n_repos - 1}: " + ) + retries -= 1 + if retries <= 0: + console.print(EXCEEDED_RETRY_ERROR, style="red") + return None + else: + continue + + try: + selected_index = int(selected_index) + state = InputState.CHECK_RANGE + except ValueError: + selected_index = console.input( + f"The index must be an integer between {0}-{n_repos - 1}: " + ) + retries -= 1 + if retries <= 0: + console.print(EXCEEDED_RETRY_ERROR, style="red") + return None + else: + state = InputState.VALIDATE_INPUT + continue + + elif state == InputState.CHECK_RANGE: + if 0 <= selected_index < n_repos: + return repos[selected_index] + else: + selected_index = console.input( + f"Please enter an index between {0}-{n_repos - 1}: " + ) + retries -= 1 + if retries <= 0: + console.print(EXCEEDED_RETRY_ERROR, style="red") + return None + else: + state = InputState.VALIDATE_INPUT + continue + + console.print(EXCEEDED_RETRY_ERROR) + return None + + +def select_repository( + console: Console, + repos: List[Tuple[str, str]], +) -> Optional[Tuple[str, str]]: + table = Table(title="Select the Example to Run", highlight=True) + table.add_column("Index", style="cyan", justify="center") + table.add_column( + "MAX Engine 🏎️ Examples 🔥", style="magenta", justify="left" + ) + for index, (name, _) in enumerate(repos): + table.add_row(str(index), name) + + console.print(table) + selected_repo = prompt_validation(console, RETRIES, repos) + if selected_repo is None: + return + + return selected_repo + + +def run_repository(repo_name: str) -> None: + repo_path = os.path.join(ROOT, repo_name) + run_script_path = (Path(repo_path) / "run.sh").resolve() + subprocess.run(["magic", "run", "bash", run_script_path], cwd=repo_path) + return + + +def main(): + repos = list_repositories() + console = Console() + if not repos: + console.print("No repositories found. Exiting!", style="red") + return + + exit_ = False + while not exit_: + console.print("\n") + selected = select_repository(console, repos) + if selected is None: + return + + _, selected_repo = selected + console.print(f"Running {selected_repo} ...") + run_repository(selected_repo) + another = Confirm.ask("Would you like to run another example?") + if not another: + exit_ = True + console.print( + "Thanks for trying the examples! Bye 👋", style="green" + ) + break + else: + console.print("Here is the example table again \n", style="green") + + +if __name__ == "__main__": + main() diff --git a/examples/custom_ops/.gitignore b/examples/custom_ops/.gitignore new file mode 100644 index 0000000000..aff686d201 --- /dev/null +++ b/examples/custom_ops/.gitignore @@ -0,0 +1 @@ +kernels.mojopkg diff --git a/examples/custom_ops/README.md b/examples/custom_ops/README.md new file mode 100644 index 0000000000..31825508ca --- /dev/null +++ b/examples/custom_ops/README.md @@ -0,0 +1,55 @@ +# Writing custom CPU or GPU graph operations using Mojo + +> [!NOTE] +> This is a preview of an interface for writing custom operations in Mojo, +> and may be subject to change before the next stable release. + +Graphs in MAX can be extended to use custom operations written in Mojo. The +following examples are shown here: + +- **addition**: Adding 1 to every element of an input tensor. +- **mandelbrot**: Calculating the Mandelbrot set. +- **vector_addition**: Performing vector addition using a manual GPU function. +- **top_k**: A top-K token sampler, a complex operation that shows a real-world + use case for a custom operation used today within a large language model + processing pipeline. +- **matrix_multiplication**: Various matrix multiplication algorithms, using a + memory layout abstraction. +- **fused_attention**: A fused attention operation, which leverages many of the + available MAX GPU programming features to show how to address an important + use case in AI models. + +Custom kernels have been written in Mojo to carry out these calculations. For +each example, a simple graph containing a single operation is constructed +in Python. This graph is compiled and dispatched onto a supported GPU if one is +available, or the CPU if not. Input tensors, if there are any, are moved from +the host to the device on which the graph is running. The graph then runs and +the results are copied back to the host for display. + +One thing to note is that this same Mojo code runs on CPU as well as GPU. In +the construction of the graph, it runs on a supported accelerator if one is +available or falls back to the CPU if not. No code changes for either path. +The `vector_addition` example shows how this works under the hood for common +MAX abstractions, where compile-time specialization lets MAX choose the optimal +code path for a given hardware architecture. + +The `kernels/` directory contains the custom kernel implementations, and the +graph construction occurs in the Python files in the base directory. These +examples are designed to stand on their own, so that they can be used as +templates for experimentation. + +A single Magic command runs each of the examples: + +```sh +magic run addition +magic run mandelbrot +magic run vector_addition +magic run top_k +magic run matrix_multiplication +magic run fused_attention +``` + +The execution has two phases: first a `kernels.mojopkg` is compiled from the +custom Mojo kernel, and then the graph is constructed and run in Python. The +inference session is pointed to the `kernels.mojopkg` in order to load the +custom operations. diff --git a/examples/custom_ops/addition.py b/examples/custom_ops/addition.py new file mode 100644 index 0000000000..aa1301f812 --- /dev/null +++ b/examples/custom_ops/addition.py @@ -0,0 +1,79 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +import os +from pathlib import Path + +import numpy as np +from max.driver import CPU, Accelerator, Tensor, accelerator_count +from max.dtype import DType +from max.engine import InferenceSession +from max.graph import Graph, TensorType, ops + +if __name__ == "__main__": + # This is necessary only in specific build environments. + if directory := os.getenv("BUILD_WORKSPACE_DIRECTORY"): + os.chdir(directory) + + path = Path(__file__).parent / "kernels.mojopkg" + + rows = 5 + columns = 10 + dtype = DType.float32 + + # Configure our simple one-operation graph. + graph = Graph( + "addition", + # The custom Mojo operation is referenced by its string name, and we + # need to provide inputs as a list as well as expected output types. + forward=lambda x: ops.custom( + name="add_one_custom", + values=[x], + out_types=[TensorType(dtype=x.dtype, shape=x.tensor.shape)], + )[0].tensor, + input_types=[ + TensorType(dtype, shape=[rows, columns]), + ], + ) + + # Place the graph on a GPU, if available. Fall back to CPU if not. + device = CPU() if accelerator_count() == 0 else Accelerator() + + # Set up an inference session for running the graph. + session = InferenceSession( + devices=[device], + custom_extensions=path, + ) + + # Compile the graph. + model = session.load(graph) + + # Fill an input matrix with random values. + x_values = np.random.uniform(size=(rows, columns)).astype(np.float32) + + # Create a driver tensor from this, and move it to the accelerator. + x = Tensor.from_numpy(x_values).to(device) + + # Perform the calculation on the target device. + result = model.execute(x)[0] + + # Copy values back to the CPU to be read. + assert isinstance(result, Tensor) + result = result.to(CPU()) + + print("Graph result:") + print(result.to_numpy()) + print() + + print("Expected result:") + print(x_values + 1) diff --git a/examples/custom_ops/fused_attention.py b/examples/custom_ops/fused_attention.py new file mode 100644 index 0000000000..03d1367148 --- /dev/null +++ b/examples/custom_ops/fused_attention.py @@ -0,0 +1,72 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +import os +from pathlib import Path + +import numpy as np +from max.driver import CPU, Accelerator, Tensor, accelerator_count +from max.dtype import DType +from max.engine.api import InferenceSession +from max.graph import Graph, TensorType, ops + + +def main(): + # This is necessary only for Modular internal CI. + if directory := os.getenv("BUILD_WORKSPACE_DIRECTORY"): + os.chdir(directory) + + path = Path(__file__).parent / "kernels.mojopkg" + + dtype = DType.float32 + N = 8 + D = 8 + BD = 4 + BN = 4 + with Graph( + "fused_attention", + input_types=[ + TensorType(dtype, shape=[N, D]), + TensorType(dtype, shape=[N, D]), + TensorType(dtype, shape=[N, D]), + ], + ) as graph: + q, k, v, *_ = graph.inputs + results = ops.custom( + name="fused_attention_custom", + parameters={"N": N, "D": D, "BD": BD, "BN": BN}, + values=[q, k, v], + out_types=[TensorType(dtype, shape=[N, D])], + ) + graph.output(*results) + + # Place the graph on a GPU, if available. Fall back to CPU if not. + device = CPU() if accelerator_count() == 0 else Accelerator() + + # Set up an inference session for running the graph. + session = InferenceSession(devices=[device], custom_extensions=path) + + # Compile the graph. + model = session.load(graph) + + np.random.seed(123) + Q = Tensor.from_numpy(np.random.randn(N, D).astype("f")).to(device) + K = Tensor.from_numpy(np.random.randn(N, D).astype("f")).to(device) + V = Tensor.from_numpy(np.random.randn(N, D).astype("f")).to(device) + + output = model.execute(Q, K, V) + print(output) + + +if __name__ == "__main__": + main() diff --git a/examples/custom_ops/histogram.py b/examples/custom_ops/histogram.py new file mode 100644 index 0000000000..4ebcbe2bfe --- /dev/null +++ b/examples/custom_ops/histogram.py @@ -0,0 +1,77 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +import os +from pathlib import Path + +import numpy as np +from max.driver import CPU, Accelerator, Tensor, accelerator_count +from max.dtype import DType +from max.engine import InferenceSession +from max.graph import Graph, TensorType, ops + +if __name__ == "__main__": + # This is necessary only in specific build environments. + if directory := os.getenv("BUILD_WORKSPACE_DIRECTORY"): + os.chdir(directory) + + path = Path(__file__).parent / "kernels.mojopkg" + + n = 2**20 + + # Configure our simple one-operation graph. + graph = Graph( + "histogram", + # The custom Mojo operation is referenced by its string name, and we + # need to provide inputs as a list as well as expected output types. + forward=lambda x: ops.custom( + name="histogram", + values=[x], + out_types=[TensorType(dtype=DType.int64, shape=[256])], + )[0].tensor, + input_types=[ + TensorType(DType.uint8, shape=[n]), + ], + ) + + # Place the graph on a GPU, if available. Fall back to CPU if not. + device = CPU() if accelerator_count() == 0 else Accelerator() + + # Set up an inference session for running the graph. + session = InferenceSession(devices=[device], custom_extensions=path) + + # Compile the graph. + model = session.load(graph) + + # Fill an input with random values. + x_values = np.random.randint(0, 256, size=n, dtype=np.uint8) + + # Create a driver tensor from this, and move it to the accelerator. + x = Tensor.from_numpy(x_values).to(device) + + # Perform the calculation on the target device. + model_result = model.execute(x)[0] + + # Copy values back to the CPU to be read. + assert isinstance(model_result, Tensor) + + print("Graph result:") + result = model_result.to_numpy() + print(result) + print() + + print("Expected result:") + expected = np.histogram(x_values, bins=256, range=(0, 256))[0] + print(expected) + + assert all(result == expected), "Result does not match expected" diff --git a/examples/custom_ops/kernels/__init__.mojo b/examples/custom_ops/kernels/__init__.mojo new file mode 100644 index 0000000000..23a1a193df --- /dev/null +++ b/examples/custom_ops/kernels/__init__.mojo @@ -0,0 +1,17 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from .add_custom import * +from .mandelbrot import * +from .top_k import * +from .vector_addition import * diff --git a/examples/custom_ops/kernels/add_custom.mojo b/examples/custom_ops/kernels/add_custom.mojo new file mode 100644 index 0000000000..411ea7061e --- /dev/null +++ b/examples/custom_ops/kernels/add_custom.mojo @@ -0,0 +1,82 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +import compiler +from max.tensor import ManagedTensorSlice, foreach +from runtime.asyncrt import DeviceContextPtr + +from utils.index import IndexList + + +@compiler.register("add_constant_custom", num_dps_outputs=1) +struct AddConstantCustom[value: Int]: + @staticmethod + fn execute[ + # e.g. "CUDA" or "CPU" + target: StringLiteral, + ]( + # as num_dps_outputs=1, the first argument is the "output" + out: ManagedTensorSlice, + # starting here are the list of inputs + x: ManagedTensorSlice[type = out.type, rank = out.rank], + # the context is needed for some GPU calls + ctx: DeviceContextPtr, + ): + @parameter + @always_inline + fn add_constant[ + width: Int + ](idx: IndexList[x.rank]) -> SIMD[x.type, width]: + return x.load[width](idx) + value + + foreach[add_constant, target=target](out, ctx) + + # You only need to implement this if you do not manually annotate + # output shapes in the graph. + @staticmethod + fn shape( + x: ManagedTensorSlice, + ) raises -> IndexList[x.rank]: + raise "NotImplemented" + + +@compiler.register("add_one_custom", num_dps_outputs=1) +struct AddOneCustom: + @staticmethod + fn execute[ + # The kind of device this will be run on: "cpu" or "gpu" + target: StringLiteral, + ]( + # as num_dps_outputs=1, the first argument is the "output" + out: ManagedTensorSlice, + # starting here are the list of inputs + x: ManagedTensorSlice[type = out.type, rank = out.rank], + # the context is needed for some GPU calls + ctx: DeviceContextPtr, + ): + @parameter + @always_inline + fn elementwise_add_one[ + width: Int + ](idx: IndexList[x.rank]) -> SIMD[x.type, width]: + return x.load[width](idx) + 1 + + foreach[elementwise_add_one, target=target](out, ctx) + + # You only need to implement this if you do not manually annotate + # output shapes in the graph. + @staticmethod + fn shape( + x: ManagedTensorSlice, + ) raises -> IndexList[x.rank]: + raise "NotImplemented" diff --git a/examples/custom_ops/kernels/fused_attention.mojo b/examples/custom_ops/kernels/fused_attention.mojo new file mode 100644 index 0000000000..28a53120b4 --- /dev/null +++ b/examples/custom_ops/kernels/fused_attention.mojo @@ -0,0 +1,360 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +""" +The code below computes the attention score for a tile of size BN x BD. +It follows the exact arithmetic as described in the FlashAttention-2 paper +(https://arxiv.org/pdf/2307.08691). The variable names in this program +reflect the variable names in the algorithms from the paper. + +Here, the following tensors are Q for the query, +K for the key, V for the value, and O for the output. + + Q K V + +----D----+ +----D----+ +--+--BD--+---+ + | | |.........| | |......| | + | | |.........| | |......| | + +---------+ |.........| | |......| | + |.........| |.........| | |......| | + BN........| N.........| N |......| | + |.........| |.........| | |......| | + +---------+ |.........| | |......| | + | | |.........| | |......| | + | | |.........| | |......| | + | | |.........| | |......| | + +---------+ +---------+ +--+------+---+ + +The main trick is in the softmax computation. +As the paper says, S and P are intermediate values. + +Let S = Q * K^T ∈ R^{N, D} + P = Softmax(S) ∈ R^{N, D} +The attention score is O = P * V ∈ R^{N, D}. + +One way to think about this is to consider what happens if we +split the dimensions N in K, and Q into two tiles: K_1 and K_2, V_1 and V_2. +Then we can incrementally compute the output as follows: + S_1 = Q * K_1, S_2 = Q * K_2 + O_i = O_{i-1} * renormalization_factor + softmax(S_i) * V_i + +This allows for the incremental computation of softmax(S_i) * V_i, +leading to the final output. +""" + + +from algorithm import parallelize_over_rows +from compiler import register +from utils.index import IndexList +from layout import Layout, LayoutTensor, RuntimeLayout, RuntimeTuple +from layout.tensor_core import TensorCore +from layout.math import exp, sum, max +from gpu.host import DeviceContext +from gpu.id import block_idx, thread_idx +from gpu.sync import barrier +from gpu.memory import AddressSpace +from utils import Index + +from tensor import ManagedTensorSlice + + +@register("fused_attention_custom", num_dps_outputs=1) +struct FusedAttention: + """Registers the `fused_attention_custom` op, allowing python to use it from the `max` + package. + """ + + @staticmethod + fn execute[ + dtype: DType, + rank: Int, + //, # Forces the previous two params to be inferred from the args + N: Int, # Input length + D: Int, # Head dimension + BN: Int, # Dimension of blocks to split Q into + BD: Int, # Dimension of blocks to split K, V into + target: StringLiteral, # "cpu" or "gpu" + ]( + output: ManagedTensorSlice[type=dtype, rank=rank], + key: ManagedTensorSlice[type=dtype, rank=rank], + query: ManagedTensorSlice[type=dtype, rank=rank], + value: ManagedTensorSlice[type=dtype, rank=rank], + ctx: DeviceContextPtr, + ) raises: + constrained[rank == 2, "rank must be 2"]() + + # Key tensor + K = key.to_layout_tensor() + # Query tensor + Q = query.to_layout_tensor() + # Value tensor + V = value.to_layout_tensor() + # Attention output tensor + O = output.to_layout_tensor() + + @parameter + if target == "cpu": + print("Running on CPU") + fused_attention_cpu[BN, BD](K, Q, V, O) + else: + dev_ctx = ctx.get_device_context() + print("Running on GPU") + fused_attention_gpu[BN, BD](dev_ctx, K, Q, V, O) + + +@always_inline +fn matmul_b_transpose( + lhs: LayoutTensor, + rhs: LayoutTensor, + out res: LayoutTensor[ + lhs.dtype, Layout.row_major(lhs.shape[0](), rhs.shape[0]()) + ], +): + res = __type_of(res).stack_allocation() + + @parameter + for m in range(lhs.shape[0]()): + + @parameter + for n in range(rhs.shape[0]()): + res[m, n] = 0.0 + + @parameter + for k in range(lhs.shape[1]()): + res[m, n] += rebind[res.element_type]( + lhs[m, k].cast[res.dtype]() + ) * rebind[res.element_type](rhs[n, k].cast[res.dtype]()) + + +""" +The bulk of the code below implements what the papers calls +an "online softmax", which is local to each block. +The algorithm is described as: + +$$$ +m_1 = rowmax(S_1) +l_1 = rowsum(e^(S_1-m_1)) +P_1 = diag(l_1)^-1 * e^(S_1-m_1) +O_1 = P_1*V_1 = diag(l_1)^-1 * e^(S_1-m_1) * V_1 +m_2 = max(m_1, rowmax(S_2)) = m +l_2 = e^(m_1-m_2) * l_1 _ rowsum(e^(S_2-m_2)) + = rowsum(e^(S_1-m)) + rowsum(e^(S_2-m)) = ls +P_2 = diag(l_2)^-1 * e^(S_2-m_2) +O_2 = diag(l_1/l_2)^-1 * O_1 + (P_2 * V_2) + = diag(l_2)^-1 * e^(S_2-m) * V +$$$ +""" + + +@always_inline +fn fused_attention_cpu[ + BN: Int, BD: Int +](Q: LayoutTensor, K: LayoutTensor, V: LayoutTensor, mut O: LayoutTensor): + alias N = K.shape[0]() + alias D = K.shape[1]() + + @parameter + for tile_n in range(N // BN): + Q_tile = Q.tile[BN, D](tile_n, 0) + + @parameter + for tile_d in range(D // BD): + m_1 = ( + LayoutTensor[Q_tile.dtype, Layout(BN, 1)] + .stack_allocation() + .fill(Scalar[Q_tile.dtype].MIN) + ) + + l_1 = ( + LayoutTensor[Q_tile.dtype, Layout(BN, 1)] + .stack_allocation() + .fill(0) + ) + + O_i = ( + LayoutTensor[Q_tile.dtype, Layout.row_major(BN, BD)] + .stack_allocation() + .fill(0) + ) + + @parameter + for tile_n_idx in range(N // BN): + K_tile = K.tile[BN, D](tile_n_idx, 0) + V_tile = V.tile[BN, BD](tile_n_idx, tile_d) + + S = matmul_b_transpose(Q_tile, K_tile) + m_2 = max(m_1, rebind[__type_of(m_1)](max[axis=1](S))) + l_2 = exp(m_1 - m_2) * l_1 + sum[axis=1](exp(S - m_2)) + + P = exp(S - m_2) / l_2 + O_i = O_i * (l_1 / l_2) * exp(m_1 - m_2) + matmul["cpu"]( + P, V_tile + ) + m_1 = m_2 + l_1 = rebind[__type_of(l_1)](l_2) + + O.tile[BN, BD](tile_n, tile_d).copy_from(O_i) + + +@always_inline +fn matmul[ + target: StringLiteral, + transpose_b: Bool = False, +]( + lhs: LayoutTensor, + rhs: LayoutTensor, + out res: LayoutTensor[ + lhs.dtype, + Layout.row_major(lhs.shape[0](), rhs.shape[0]()), + address_space = lhs.address_space, + element_layout = lhs.element_layout, + layout_bitwidth = lhs.layout_bitwidth, + ], +): + res = __type_of(res).stack_allocation() + + @parameter + if target == "cpu": + + @parameter + for m in range(lhs.shape[0]()): + + @parameter + for n in range(rhs.shape[1]()): + res[m, n] = 0.0 + + @parameter + for k in range(lhs.shape[1]()): + res[m, n] += rebind[res.element_type]( + lhs[m, k].cast[res.dtype]() + ) * rebind[res.element_type](rhs[k, n].cast[res.dtype]()) + else: + alias M = res.shape[0]() + alias N = res.shape[1]() + alias K = lhs.shape[1]() + + out_sram = LayoutTensor[ + res.dtype, + Layout.row_major(M, N), + address_space = AddressSpace.SHARED, + ].stack_allocation() + + alias BK = 8 + + constrained[K % 8 == 0, "K needs to be a multiple of 8"]() + + mma_b_t = TensorCore[ + lhs.dtype, res.dtype, Index(M, N, BK), transpose_b + ]() + + c_reg = mma_b_t.c_reg_tile_type.stack_allocation().fill(0) + + @parameter + for k_i in range(K // BK): + a_reg = mma_b_t.load_a(lhs.tile[M, BK](0, k_i)) + + b_reg = mma_b_t.load_b(rhs.tile[BK, N](k_i, 0)) + + @parameter + if transpose_b: + b_reg = rebind[__type_of(b_reg)]( + mma_b_t.load_b(rhs.tile[N, BK](0, k_i)) + ) + + d_reg = mma_b_t.mma_op(a_reg, b_reg, c_reg) + c_reg.copy_from(d_reg) + mma_b_t.store_d(out_sram, c_reg) + + barrier() + res.copy_from(out_sram) + + +fn fused_attention_kenel[ + q_dtype: DType, + q_layout: Layout, + k_dtype: DType, + k_layout: Layout, + v_dtype: DType, + v_layout: Layout, + o_dtype: DType, + o_layout: Layout, + BN: Int, + BD: Int, +]( + Q: LayoutTensor[q_dtype, q_layout], + K: LayoutTensor[k_dtype, k_layout], + V: LayoutTensor[v_dtype, v_layout], + O: LayoutTensor[o_dtype, o_layout], +): + alias N = Q.shape[0]() + alias D = Q.shape[1]() + + Q_tile = Q.tile[BN, D](block_idx.y, 0) + + m_1 = ( + LayoutTensor[q_dtype, Layout(BN, 1)] + .stack_allocation() + .fill(Scalar[q_dtype].MIN) + ) + l_1 = LayoutTensor[q_dtype, Layout(BN, 1)].stack_allocation().fill(0) + O_i = ( + LayoutTensor[q_dtype, Layout.row_major(BN, BD)] + .stack_allocation() + .fill(0) + ) + + alias BN_1 = 8 + + @parameter + for tile_n_idx in range(N // BN_1): + K_tile = K.tile[BN_1, D](tile_n_idx, 0) + V_tile = V.tile[BN_1, BD](tile_n_idx, block_idx.x) + S = matmul["gpu", transpose_b=True](Q_tile, K_tile) + m_2 = max(m_1, rebind[__type_of(m_1)](max[axis=1](S))) + l_2 = exp(m_1 - m_2) * l_1 + sum[axis=1](exp(S - m_2)) + P = exp(S - m_2) / l_2 + O_i = O_i * (l_1 / l_2) * exp(m_1 - m_2) + matmul["gpu"](P, V_tile) + m_1 = m_2 + l_1 = rebind[__type_of(l_1)](l_2) + O.tile[BN, BD](block_idx.y, block_idx.x).copy_from(O_i) + + +def fused_attention_gpu[ + BN: Int, + BD: Int, +]( + ctx: DeviceContext, + Q: LayoutTensor, + K: LayoutTensor, + V: LayoutTensor, + mut O: LayoutTensor, +): + alias kernel_func = fused_attention_kenel[ + Q.dtype, + Q.layout, + K.dtype, + K.layout, + V.dtype, + V.layout, + O.dtype, + O.layout, + BN, + BD, + ] + ctx.enqueue_function[kernel_func]( + Q, + K, + V, + O, + grid_dim=(Q.shape[1]() // BD, Q.shape[0]() // BN), + block_dim=(32), + ) diff --git a/examples/custom_ops/kernels/histogram.mojo b/examples/custom_ops/kernels/histogram.mojo new file mode 100644 index 0000000000..01e2237ed1 --- /dev/null +++ b/examples/custom_ops/kernels/histogram.mojo @@ -0,0 +1,83 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from math import ceildiv + +from gpu import block_dim, block_idx, thread_idx, global_idx +from gpu.host import DeviceContext +from runtime.asyncrt import DeviceContextPtr +from tensor import ManagedTensorSlice +from algorithm import vectorize, sync_parallelize +from algorithm.functional import _get_num_workers +from memory import memset +from sys import simdwidthof, sizeof +from os import Atomic + +from utils.index import IndexList +from gpu.host.info import Info, is_cpu, is_gpu + +from memory import UnsafePointer + +alias bin_width = Int(UInt8.MAX) + + +fn _histogram_cpu(out: ManagedTensorSlice, input: ManagedTensorSlice): + for i in range(input.dim_size(0)): + out[Int(input[i])] += 1 + + +fn _histogram_gpu( + output: ManagedTensorSlice, + input: ManagedTensorSlice, + ctx_ptr: DeviceContextPtr, +) raises: + alias block_dim = 1024 + + fn kernel( + output: UnsafePointer[Int64], input: UnsafePointer[UInt8], n: Int + ): + var tid = global_idx.x + + if tid >= n: + return + + _ = Atomic._fetch_add(output + Int(input[tid]), 1) + + var n = input.dim_size(0) + + var grid_dim = ceildiv(n, block_dim) + + var ctx = ctx_ptr.get_device_context() + + ctx.enqueue_function[kernel]( + output.unsafe_ptr(), + input.unsafe_ptr(), + n, + block_dim=block_dim, + grid_dim=grid_dim, + ) + + +@compiler.register("histogram", num_dps_outputs=1) +struct Histogram: + @staticmethod + fn execute[ + target: StringLiteral + ]( + out: ManagedTensorSlice[type = DType.int64, rank=1], + input: ManagedTensorSlice[type = DType.uint8, rank=1], + ctx: DeviceContextPtr, + ) raises: + _histogram_cpu(out, input) if is_cpu[target]() else _histogram_gpu( + out, input, ctx + ) diff --git a/examples/custom_ops/kernels/mandelbrot.mojo b/examples/custom_ops/kernels/mandelbrot.mojo new file mode 100644 index 0000000000..bf190e21c8 --- /dev/null +++ b/examples/custom_ops/kernels/mandelbrot.mojo @@ -0,0 +1,92 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from math import iota + +import compiler +from complex import ComplexSIMD +from max.tensor import ManagedTensorSlice, foreach +from runtime.asyncrt import DeviceContextPtr + +from utils.index import IndexList + + +@always_inline +fn mandelbrot_inner_simd[ + float_type: DType, int_type: DType, simd_width: Int +]( + c: ComplexSIMD[float_type, simd_width], max_iterations: SIMD[int_type, 1] +) -> SIMD[int_type, simd_width]: + """A vectorized implementation of the inner Mandelbrot computation.""" + var z = ComplexSIMD[float_type, simd_width](0, 0) + var iters = SIMD[int_type, simd_width](0) + + var in_set_mask: SIMD[DType.bool, simd_width] = True + for _ in range(max_iterations): + if not any(in_set_mask): + break + in_set_mask = z.squared_norm() <= 4 + iters = in_set_mask.select(iters + 1, iters) + z = z.squared_add(c) + + return iters + + +alias float_dtype = DType.float32 + + +@compiler.register("mandelbrot", num_dps_outputs=1) +struct Mandelbrot: + @staticmethod + fn execute[ + # The kind of device this will be run on: "cpu" or "gpu" + target: StringLiteral, + ]( + # as num_dps_outputs=1, the first argument is the "output" + out: ManagedTensorSlice, + # starting here are the list of inputs + min_x: Float32, + min_y: Float32, + scale_x: Float32, + scale_y: Float32, + max_iterations: Int32, + # the context is needed for some GPU calls + ctx: DeviceContextPtr, + ): + @parameter + @always_inline + fn elementwise_mandelbrot[ + width: Int + ](idx: IndexList[out.rank]) -> SIMD[out.type, width]: + var row = idx[0] + var col = idx[1] + var cx = min_x.cast[float_dtype]() + ( + col + iota[float_dtype, width]() + ) * scale_x.cast[float_dtype]() + var cy = min_y.cast[float_dtype]() + row * SIMD[float_dtype, width]( + scale_y.cast[float_dtype]() + ) + var c = ComplexSIMD[float_dtype, width](cx, cy) + return mandelbrot_inner_simd[cx.type, out.type, width]( + c, max_iterations.cast[out.type]() + ) + + foreach[elementwise_mandelbrot, target=target](out, ctx) + + # You only need to implement this if you do not manually annotate + # output shapes in the graph. + @staticmethod + fn shape( + x: ManagedTensorSlice, + ) raises -> IndexList[x.rank]: + raise "NotImplemented" diff --git a/examples/custom_ops/kernels/matrix_multiplication.mojo b/examples/custom_ops/kernels/matrix_multiplication.mojo new file mode 100644 index 0000000000..afc810b25a --- /dev/null +++ b/examples/custom_ops/kernels/matrix_multiplication.mojo @@ -0,0 +1,1007 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from gpu import WARP_SIZE, block_dim, block_idx, thread_idx +from gpu.host import DeviceBuffer, DeviceContext +from gpu.memory import async_copy_wait_all +from layout.layout_tensor import ( + Layout, + LayoutTensor, + copy_dram_to_sram, + copy_dram_to_sram_async, +) +from layout.math import outer_product_acc +from layout.tensor_builder import LayoutTensorBuild as tb +from layout.tensor_core import TensorCore +from math import ceildiv +from memory import UnsafePointer +from runtime.asyncrt import DeviceContextPtr +from sys.info import simdwidthof +from tensor import ManagedTensorSlice, foreach +from utils.index import Index + +# ===-----------------------------------------------------------------------===# +# Naive matrix multiplication (CPU) +# ===-----------------------------------------------------------------------===# + + +fn naive_matrix_multiplication_cpu( + out: ManagedTensorSlice, + a: ManagedTensorSlice[type = out.type, rank = out.rank], + b: ManagedTensorSlice[type = out.type, rank = out.rank], +): + """A naive matrix multiplication used as a fallback on CPU hardware.""" + var M = a.shape()[0] + var N = b.shape()[1] + var K = b.shape()[0] + + for row in range(M): + for col in range(N): + for k in range(K): + out[row, col] = out[row, col] + a[row, k] * b[k, col] + + +# ===-----------------------------------------------------------------------===# +# Naive matrix multiplication (GPU) +# ===-----------------------------------------------------------------------===# + + +fn naive_matrix_multiplication[ + dtype: DType, + a_layout: Layout, + b_layout: Layout, + c_layout: Layout, + BM: Int, + BN: Int, +]( + a: LayoutTensor[dtype, a_layout], + b: LayoutTensor[dtype, b_layout], + c: LayoutTensor[dtype, c_layout], +): + """ + Tiled GEMM kernel that performs matrix multiplication C = A * B. + + Parameters: + dtype: The data type of the input and output tensors. + a_layout: The layout of the input tensor A. + b_layout: The layout of the input tensor B. + c_layout: The layout of the output tensor C. + BM: The block size in the M dimension. + BN: The block size in the N dimension. + + Args: + a: The input tensor A. + b: The input tensor B. + c: The output tensor C. + + This kernel uses a simple nested loop structure to compute the matrix + multiplication. Each thread computes a single element of the output matrix + C by accumulating the dot product of the corresponding row of A and column + of B. + + The kernel assumes that the input matrices A and B are compatible for + matrix multiplication, i.e., the number of columns in A equals the number + of rows in B. + """ + # Calculate the column and row indices for each thread. + var col = thread_idx.y + var row = thread_idx.x + var bidx = block_idx.x + var bidy = block_idx.y + + # Get the tile of the output matrix C that this thread is + # responsible for computing. + var dst = c.tile[BM, BN](bidy, bidx) + + # Initialize a register to accumulate the result for this thread. + var dst_reg: c.element_type = 0 + + # Iterate over the K dimension to compute the dot product. + for k in range(b.dim(0)): + # Get the corresponding tiles from matrices A and B. + var a_tile = a.tile[BM, 1](bidy, k) + var b_tile = b.tile[1, BN](k, bidx) + + # Multiply the elements and accumulate the result. + dst_reg += a_tile[row, 0] * b_tile[0, col] + + # Write the final accumulated result to the output matrix. + dst[row, col] += dst_reg + + +# ===-----------------------------------------------------------------------===# +# Matrix multiplication with tiling +# ===-----------------------------------------------------------------------===# + + +fn coalescing_matrix_multiplication[ + dtype: DType, + a_layout: Layout, + b_layout: Layout, + c_layout: Layout, + BM: Int, + BN: Int, +]( + a: LayoutTensor[dtype, a_layout], + b: LayoutTensor[dtype, b_layout], + c: LayoutTensor[dtype, c_layout], +): + """ + GEMM kernel that performs matrix multiplication C = A * B with + memory coalescing optimizations. + + Parameters: + dtype: The data type of the input and output tensors. + a_layout: The layout of the input tensor A. + b_layout: The layout of the input tensor B. + c_layout: The layout of the output tensor C. + BM: The block size in the M dimension. + BN: The block size in the N dimension. + + Args: + a: The input tensor A. + b: The input tensor B. + c: The output tensor C. + + This kernel optimizes memory access patterns by ensuring that + threads within a warp access contiguous memory locations. It + tiles the input matrices A and B and computes the matrix + multiplication using register tiling. + + Each thread computes a single element of the output matrix C by + accumulating the partial results in a register. The final result + is then stored back to the output matrix. + """ + + var col = thread_idx.x + var row = thread_idx.y + var bidx = block_idx.x + var bidy = block_idx.y + + # Get the tile of the output matrix C + var dst = c.tile[BM, BN](bidy, bidx) + + # Initialize the register to accumulate the result + var dst_reg: c.element_type = 0 + + # Iterate over the K dimension + for k in range(b.dim(0)): + # Get the tiles of input matrices A and B + var a_tile = a.tile[BM, 1](bidy, k) + var b_tile = b.tile[1, BN](k, bidx) + + # Compute the partial result and accumulate it in the register + dst_reg += a_tile[row, 0] * b_tile[0, col] + + # Store the final result back to the output matrix + dst[row, col] += dst_reg + + +# ===-----------------------------------------------------------------------===# +# Matrix multiplication with shared memory tiling +# ===-----------------------------------------------------------------------===# + + +fn tiled_matrix_multiplication[ + dtype: DType, + a_layout: Layout, + b_layout: Layout, + c_layout: Layout, + BM: Int, + BN: Int, + BK: Int, + NUM_THREADS: Int, +]( + a: LayoutTensor[dtype, a_layout], + b: LayoutTensor[dtype, b_layout], + c: LayoutTensor[dtype, c_layout], +): + """ + Tiled GEMM kernel that performs matrix multiplication C = A * B using + shared memory to improve performance. + + Parameters: + dtype: The data type of the input and output tensors. + a_layout: The layout of the input tensor A. + b_layout: The layout of the input tensor B. + c_layout: The layout of the output tensor C. + BM: The block size in the M dimension. + BN: The block size in the N dimension. + BK: The block size in the K dimension. + NUM_THREADS: The total number of threads per block. + + Args: + a: The input tensor A. + b: The input tensor B. + c: The output tensor C. + + This kernel uses a tiling strategy to compute the matrix multiplication. + Each thread block computes a BM x BN tile of the output matrix C. The + input matrices A and B are loaded into shared memory in tiles of size + BM x BK and BK x BN, respectively. + + The kernel assumes that the input matrices A and B are compatible for + matrix multiplication, i.e., the number of columns in A equals the + number of rows in B. + """ + # Calculate the column and row indices for each thread + var col = thread_idx.x % BN + var row = thread_idx.x // BN + + # Get the tile of the output matrix C that this thread block is responsible for + var dst = c.tile[BM, BN](block_idx.y, block_idx.x) + + # Allocate shared memory for tiles of input matrices A and B + var a_smem = tb[dtype]().row_major[BM, BK]().shared().alloc() + var b_smem = tb[dtype]().row_major[BK, BN]().shared().alloc() + + # Initialize the register to accumulate the result + var dst_reg: c.element_type = 0 + + # Iterate over tiles of input matrices A and B + for block in range(b.dim(0) // BK): + # Define the layout for loading tiles of A and B into shared memory + alias load_a_layout = Layout.row_major(NUM_THREADS // BK, BK) + alias load_b_layout = Layout.row_major(BK, NUM_THREADS // BK) + + # Get the tiles of A and B for the current iteration + var a_tile = a.tile[BM, BK](block_idx.y, block) + var b_tile = b.tile[BK, BN](block, block_idx.x) + + # Asynchronously copy tiles of A and B from global memory to shared memory + copy_dram_to_sram_async[thread_layout=load_a_layout](a_smem, a_tile) + copy_dram_to_sram_async[thread_layout=load_b_layout](b_smem, b_tile) + + # Wait for all asynchronous copies to complete + async_copy_wait_all() + + # Synchronize threads to ensure shared memory is populated + barrier() + + # Perform matrix multiplication on the tiles in shared memory + @parameter + for k in range(BK): + dst_reg += a_smem[row, k] * b_smem[k, col] + + # Synchronize threads before loading the next tiles + barrier() + + # Write the result to the output matrix + dst[row, col] += dst_reg + + +# ===-----------------------------------------------------------------------===# +# Matrix multiplication with shared memory tiling and register tiling +# ===-----------------------------------------------------------------------===# + + +fn tiled_register_matrix_multiplication[ + dtype: DType, + a_layout: Layout, + b_layout: Layout, + c_layout: Layout, + BM: Int, + BN: Int, + BK: Int, + TM: Int, + NUM_THREADS: Int, +]( + a: LayoutTensor[dtype, a_layout], + b: LayoutTensor[dtype, b_layout], + c: LayoutTensor[dtype, c_layout], +): + """ + Tiled GEMM kernel that performs matrix multiplication C = A * B using + shared memory. + + Parameters: + dtype: The data type of the input and output tensors. + a_layout: The layout of the input tensor A. + b_layout: The layout of the input tensor B. + c_layout: The layout of the output tensor C. + BM: The block size in the M dimension. + BN: The block size in the N dimension. + BK: The block size in the K dimension. + TM: The tile size in the M dimension. + NUM_THREADS: The number of threads per block. + + Args: + a: The input tensor A. + b: The input tensor B. + c: The output tensor C. + + This kernel uses a tiled approach to compute the matrix multiplication. It + loads tiles of matrices A and B into shared memory, and then each thread + computes a partial result using the tiles in shared memory. The partial + results are accumulated in registers and finally stored back to the output + matrix C. + + The kernel assumes that the input matrices A and B are compatible for + matrix multiplication, i.e., the number of columns in A equals the number + of rows in B. + """ + # Calculate the column and row indices for each thread. + var col = thread_idx.x % BN + var row = thread_idx.x // BN + var bidx = block_idx.x + var bidy = block_idx.y + + # Get the tile of the output matrix C that this thread is + # responsible for computing. + var dst = c.tile[BM, BN](bidy, bidx).tile[TM, 1](row, col) + + # Allocate shared memory for tiles of A and B. + var a_smem = tb[dtype]().row_major[BM, BK]().shared().alloc() + var b_smem = tb[dtype]().row_major[BK, BN]().shared().alloc() + + # Allocate a register tile to store the partial results. + var dst_reg = tb[dtype]().layout[TM]().local().alloc() + dst_reg.copy_from(dst) + + # Iterate over the tiles of A and B in the K dimension. + for block in range(b.dim(0) // BK): + # Define the layout for loading tiles of A and B into shared + # memory. + alias load_a_layout = Layout.row_major(NUM_THREADS // BK, BK) + alias load_b_layout = Layout.row_major(BK, NUM_THREADS // BK) + + # Get the tiles of A and B for the current block. + var a_tile = a.tile[BM, BK](block_idx.y, block) + var b_tile = b.tile[BK, BN](block, block_idx.x) + + # Load the tiles of A and B into shared memory asynchronously. + copy_dram_to_sram_async[thread_layout=load_a_layout](a_smem, a_tile) + copy_dram_to_sram_async[thread_layout=load_b_layout](b_smem, b_tile) + + # Wait for all asynchronous copies to complete. + async_copy_wait_all() + barrier() + + # Iterate over the elements in the K dimension within the tiles. + @parameter + for k in range(BK): + # Get the corresponding tiles from shared memory. + var a_tile = a_smem.tile[TM, 1](row, k) + var b_tile = b_smem.tile[1, BN](k, 0) + var b_val = b_tile[0, col] + + # Multiply the elements and accumulate the partial results. + @parameter + for t in range(TM): + dst_reg[t] += a_tile[t, 0] * b_val + + # Synchronize all threads before loading the next tiles. + barrier() + + # Write the final accumulated results to the output matrix. + dst.copy_from(dst_reg) + + +# ===-----------------------------------------------------------------------===# +# Matrix multiplication with block tiling +# ===-----------------------------------------------------------------------===# + + +fn block_tiled_matrix_multiplication[ + dtype: DType, + a_layout: Layout, + b_layout: Layout, + c_layout: Layout, + BM: Int, + BN: Int, + BK: Int, + TM: Int, + TN: Int, + NUM_THREADS: Int, +]( + a: LayoutTensor[dtype, a_layout], + b: LayoutTensor[dtype, b_layout], + c: LayoutTensor[dtype, c_layout], +): + """ + Tiled GEMM kernel that performs matrix multiplication C = A * B. + + Parameters: + dtype: The data type of the input and output tensors. + a_layout: The layout of the input tensor A. + b_layout: The layout of the input tensor B. + c_layout: The layout of the output tensor C. + BM: The block size in the M dimension. + BN: The block size in the N dimension. + BK: The block size in the K dimension. + TM: The tile size in the M dimension. + TN: The tile size in the N dimension. + NUM_THREADS: The total number of threads per block. + + Args: + a: The input tensor A. + b: The input tensor B. + c: The output tensor C. + + This kernel uses a 2D block tiling strategy to compute the matrix + multiplication. Each thread block computes a BM x BN tile of the output + matrix C. Within each thread block, threads are further divided into + TM x TN tiles to enable thread-level parallelism. + + The kernel loads tiles of A and B into shared memory to reduce global + memory accesses. It then performs the matrix multiplication using + register-level tiling and accumulates the results in registers. + + The kernel assumes that the input matrices A and B are compatible for + matrix multiplication, i.e., the number of columns in A equals the number + of rows in B. + """ + var partition_col = thread_idx.x % (BN // TN) + var partition_row = thread_idx.x // (BN // TN) + var bidx = block_idx.x + var bidy = block_idx.y + + var dst = c.tile[BM, BN](bidy, bidx).tile[TM, TN]( + partition_row, partition_col + ) + + var a_smem = tb[dtype]().row_major[BM, BK]().shared().alloc() + var b_smem = tb[dtype]().row_major[BK, BN]().shared().alloc() + + var dst_reg = tb[dtype]().row_major[TM, TN]().local().alloc() + dst_reg.copy_from(dst) + var a_reg = tb[dtype]().layout[TM]().local().alloc() + var b_reg = tb[dtype]().layout[TN]().local().alloc() + + var ntiles = b.dim(0) // BK + + for block in range(ntiles): + alias load_a_layout = Layout.row_major(NUM_THREADS // BK, BK) + alias load_b_layout = Layout.row_major(BK, NUM_THREADS // BK) + var a_tile = a.tile[BM, BK](block_idx.y, block) + var b_tile = b.tile[BK, BN](block, block_idx.x) + copy_dram_to_sram_async[thread_layout=load_a_layout](a_smem, a_tile) + copy_dram_to_sram_async[thread_layout=load_b_layout](b_smem, b_tile) + + async_copy_wait_all() + barrier() + + @parameter + for k in range(BK): + var a_tile = a_smem.tile[TM, 1](partition_row, k) + var b_tile = b_smem.tile[1, TN](k, partition_col) + a_reg.copy_from(a_tile) + b_reg.copy_from(b_tile) + outer_product_acc(dst_reg, a_reg, b_reg) + barrier() + + dst.copy_from(dst_reg) + + +# ===-----------------------------------------------------------------------===# +# Matrix multiplication with vectorized memory access +# ===-----------------------------------------------------------------------===# + + +fn block_tiled_vectorized_matrix_multiplication[ + dtype: DType, + a_layout: Layout, + b_layout: Layout, + c_layout: Layout, + BM: Int, + BN: Int, + BK: Int, + TM: Int, + TN: Int, + NUM_THREADS: Int, +]( + a: LayoutTensor[dtype, a_layout], + b: LayoutTensor[dtype, b_layout], + c: LayoutTensor[dtype, c_layout], +): + """ + Tiled GEMM kernel that performs matrix multiplication C = A * B with + vectorized memory access. + + Parameters: + dtype: The data type of the input and output tensors. + a_layout: The layout of the input tensor A. + b_layout: The layout of the input tensor B. + c_layout: The layout of the output tensor C. + BM: The block size in the M dimension. + BN: The block size in the N dimension. + BK: The block size in the K dimension. + TM: The tile size in the M dimension. + TN: The tile size in the N dimension. + NUM_THREADS: The total number of threads per block. + + Args: + a: The input tensor A. + b: The input tensor B. + c: The output tensor C. + + This kernel uses a 2D block tiling strategy to compute the matrix + multiplication. Each thread block computes a BM x BN tile of the output + matrix C. Within each thread block, threads are further divided into TM x + TN tiles to enable thread-level parallelism. + + The kernel loads tiles of A and B into shared memory using vectorized + memory access to improve memory bandwidth utilization. It then performs the + matrix multiplication using register-level tiling and accumulates the + results in registers. + + The kernel assumes that the input matrices A and B are compatible for + matrix multiplication, i.e., the number of columns in A equals the number + of rows in B. + """ + + alias simd_width = simdwidthof[dtype]() + var partition_col = thread_idx.x % (BN // TN) + var partition_row = thread_idx.x // (BN // TN) + var bidx = block_idx.x + var bidy = block_idx.y + + # Get the tile of the output matrix C that this thread is responsible + # for computing. + var dst = c.tile[BM, BN](bidy, bidx).tile[TM, TN]( + partition_row, partition_col + ) + var dst_vec = dst.vectorize[1, simd_width]() + + # Allocate shared memory for tiles of A and B. + # Use column-major layout for A to get the transpose. + var a_smem = tb[dtype]().col_major[BM, BK]().shared().alloc() + var b_smem = tb[dtype]().row_major[BK, BN]().shared().alloc() + + # Allocate register tiles to store the partial results and operands. + var dst_reg = tb[dtype]().row_major[TM, TN]().local().alloc() + var dst_reg_vec = dst_reg.vectorize[1, simd_width]() + dst_reg_vec.copy_from(dst_vec) + + var a_reg = tb[dtype]().layout[TM]().local().alloc() + var b_reg = tb[dtype]().layout[TN]().local().alloc() + + var ntiles = b.dim(0) // BK + + # Iterate over the tiles of A and B in the K dimension. + for block in range(ntiles): + alias load_a_layout = Layout.row_major(NUM_THREADS // BK, BK) + alias load_b_layout = Layout.row_major(BK, NUM_THREADS // BK) + var a_tile = a.tile[BM, BK](block_idx.y, block) + var b_tile = b.tile[BK, BN](block, block_idx.x) + + # Load the tiles of A and B into shared memory using vectorized + # memory access. + copy_dram_to_sram_async[thread_layout=load_a_layout]( + a_smem.vectorize[simd_width, 1](), a_tile.vectorize[simd_width, 1]() + ) + copy_dram_to_sram_async[thread_layout=load_b_layout]( + b_smem.vectorize[1, simd_width](), b_tile.vectorize[1, simd_width]() + ) + + async_copy_wait_all() + barrier() + + # Iterate over the elements in the K dimension within the tiles. + @parameter + for k in range(BK): + # Load the corresponding tiles from shared memory into registers. + var a_tile = a_smem.tile[TM, 1](partition_row, k) + var b_tile = b_smem.tile[1, TN](k, partition_col) + a_reg.copy_from(a_tile) + b_reg.copy_from(b_tile) + + # Perform outer product and accumulate the partial results. + outer_product_acc(dst_reg, a_reg, b_reg) + + barrier() + + # Write the final accumulated results to the output matrix. + dst_vec.copy_from(dst_reg_vec) + + +# ===-----------------------------------------------------------------------===# +# Matrix multiplication using Tensor Cores +# ===-----------------------------------------------------------------------===# + + +fn tensor_core_matrix_multiplication[ + dtype: DType, + layout_a: Layout, + layout_b: Layout, + layout_c: Layout, + BM: Int, + BN: Int, + BK: Int, + WM: Int, + WN: Int, + MMA_M: Int, + MMA_N: Int, + MMA_K: Int, +]( + A: LayoutTensor[dtype, layout_a], + B: LayoutTensor[dtype, layout_b], + C: LayoutTensor[dtype, layout_c], +): + """ + Tiled GEMM kernel that performs matrix multiplication C = A * B using + tensor cores. + + Parameters: + dtype: The data type of the input and output tensors. + layout_a: The layout of the input tensor A. + layout_b: The layout of the input tensor B. + layout_c: The layout of the output tensor C. + BM: The block size in the M dimension. + BN: The block size in the N dimension. + BK: The block size in the K dimension. + WM: The warp tile size in the M dimension. + WN: The warp tile size in the N dimension. + MMA_M: Tensor core instruction shape in M dimension. + MMA_N: Tensor core instruction shape in N dimension. + MMA_K: Tensor core instruction shape in K dimension. + + Args: + A: The input tensor A. + B: The input tensor B. + C: The output tensor C. + + This kernel uses a tiled approach with tensor cores to compute the matrix + multiplication. It loads tiles of matrices A and B into shared memory, and + then each warp computes a partial result using tensor cores. The partial + results are accumulated in registers and finally stored back to the output + matrix C. + + The kernel assumes that the input matrices A and B are compatible for + matrix multiplication, i.e., the number of columns in A equals the number + of rows in B. + """ + alias M = C.shape[0]() # Number of rows in matrix C + alias N = C.shape[1]() # Number of columns in matrix C + alias K = A.shape[1]() # Number of columns in matrix A + + var warp_id = thread_idx.x // WARP_SIZE # Warp ID within the block + + # Calculate warp tile coordinates within the block + warp_y = warp_id // (BN // WN) + warp_x = warp_id % (BN // WN) + + # Get the warp tile of the output matrix C + C_warp_tile = C.tile[BM, BN](block_idx.y, block_idx.x).tile[WM, WN]( + warp_y, warp_x + ) + + # Ensure warp tile dimensions are multiples of instruction shape + constrained[ + WM % MMA_M == 0 and WN % MMA_N == 0 and K % MMA_K == 0, + "Warp tile should be an integer multiple of instruction shape", + ]() + + # Create tensor core operation object + mma_op = TensorCore[A.dtype, C.dtype, Index(MMA_M, MMA_N, MMA_K)]() + + # Allocate shared memory for tiles of A and B + A_sram_tile = tb[A.dtype]().row_major[BM, BK]().shared().alloc() + B_sram_tile = tb[B.dtype]().row_major[BK, BN]().shared().alloc() + + # Allocate register tile for accumulating partial results + c_reg = ( + tb[C.dtype]() + .row_major[WM // MMA_M, (WN * 4) // MMA_N]() + .local() + .alloc() + .fill(0) + ) + + # Iterate over tiles of A and B in the K dimension + for k_i in range(K // BK): + barrier() # Synchronize before loading new tiles + + # Get the tiles of A and B for the current iteration + A_dram_tile = A.tile[BM, BK](block_idx.y, k_i) + B_dram_tile = B.tile[BK, BN](k_i, block_idx.x) + + # Load tiles of A and B into shared memory asynchronously + copy_dram_to_sram_async[thread_layout = Layout.row_major(4, 8)]( + A_sram_tile.vectorize[1, 4](), A_dram_tile.vectorize[1, 4]() + ) + copy_dram_to_sram_async[thread_layout = Layout.row_major(4, 8)]( + B_sram_tile.vectorize[1, 4](), B_dram_tile.vectorize[1, 4]() + ) + + async_copy_wait_all() # Wait for async copies to complete + barrier() # Synchronize after loading tiles + + # Get the warp tiles of A and B from shared memory + A_warp_tile = A_sram_tile.tile[WM, BK](warp_y, 0) + B_warp_tile = B_sram_tile.tile[BK, WN](0, warp_x) + + # Iterate over the elements in the K dimension within the tiles + @parameter + for mma_k in range(BK // MMA_K): + + @parameter + for mma_m in range(WM // MMA_M): + + @parameter + for mma_n in range(WN // MMA_N): + # Get the register tile for the current MMA operation + c_reg_m_n = c_reg.tile[1, 4](mma_m, mma_n) + + # Get the MMA tiles of A and B + A_mma_tile = A_warp_tile.tile[MMA_M, MMA_K](mma_m, mma_k) + B_mma_tile = B_warp_tile.tile[MMA_K, MMA_N](mma_k, mma_n) + + # Load fragments of A and B into registers + a_reg = mma_op.load_a(A_mma_tile) + b_reg = mma_op.load_b(B_mma_tile) + + # Perform MMA operation and accumulate the result + var d_reg_m_n = mma_op.mma_op( + a_reg, + b_reg, + c_reg_m_n, + ) + + # Store the accumulated result back to the register tile + c_reg_m_n.copy_from(d_reg_m_n) + + # Write the final accumulated results to the output matrix + @parameter + for mma_m in range(WM // MMA_M): + + @parameter + for mma_n in range(WN // MMA_N): + var C_mma_tile = C_warp_tile.tile[MMA_M, MMA_N](mma_m, mma_n) + var c_reg_m_n = c_reg.tile[1, 4](mma_m, mma_n) + mma_op.store_d(C_mma_tile, c_reg_m_n) + + +# ===-----------------------------------------------------------------------===# +# The matrix multiplication graph operation +# ===-----------------------------------------------------------------------===# + + +@compiler.register("matrix_multiplication", num_dps_outputs=1) +struct MatrixMultiplication[algorithm: StringLiteral]: + """ + The central custom operation that dispatches to multiple different + matrix multiplication implementations, depending on target hardware and + selected algorithm. + """ + + @staticmethod + fn execute[ + # The kind of device this will be run on: "cpu" or "gpu" + target: StringLiteral, + ]( + # as num_dps_outputs=1, the first argument is the "output" + out: ManagedTensorSlice[rank=2], + # starting here are the list of inputs + a: ManagedTensorSlice[type = out.type, rank = out.rank], + b: ManagedTensorSlice[type = out.type, rank = out.rank], + # the context is needed for some GPU calls + ctx: DeviceContextPtr, + ) raises: + # At graph compilation time, we will know what device we are compiling + # this operation for, so we can specialize it for the target hardware. + @parameter + if target == "gpu": + a_layout = a.to_layout_tensor() + b_layout = b.to_layout_tensor() + out_layout = out.to_layout_tensor() + + M = a_layout.shape[0]() + N = b_layout.shape[1]() + + gpu_ctx = ctx.get_device_context() + + # Zero out the memory in the outbound tensor. + gpu_ctx.memset( + DeviceBuffer[out.type]( + gpu_ctx, + rebind[UnsafePointer[Scalar[out.type]]](out_layout.ptr), + M * N, + owning=False, + ), + 0, + ) + + # We support several compile-time variants for the matrix + # multiplication calculation: + # - "naive": A naive matrix multiplication using LayoutTensors. + # - "coalescing": Matrix multiplication with memory coalescing + # optimizations. + # - "tiled": Matrix multiplication using a tiling strategy. + # - "tiled_register": Matrix multiplication using shared memory + # and register tiling . + # - "block_tiled": Matrix multiplication using a 2D block tiling + # strategy. + # - "block_tiled_vectorized": Matrix multiplication using a + # further-optimized 2D block tiling strategy. + # - "tensor_core": Matrix multiplication using Tensor Cores. + # In each case, the specific matrix multiplication function is + # compiled and enqueued to run on the GPU. + @parameter + if algorithm == "naive": + alias BM = 32 + alias BN = 32 + gpu_ctx.enqueue_function[ + naive_matrix_multiplication[ + out.type, + a_layout.layout, + b_layout.layout, + out_layout.layout, + BM, + BN, + ] + ]( + a_layout, + b_layout, + out_layout, + grid_dim=(ceildiv(N, BN), ceildiv(M, BM)), + block_dim=(BN, BM), + ) + elif algorithm == "coalescing": + alias BM = 32 + alias BN = 32 + gpu_ctx.enqueue_function[ + coalescing_matrix_multiplication[ + out.type, + a_layout.layout, + b_layout.layout, + out_layout.layout, + BM, + BN, + ] + ]( + a_layout, + b_layout, + out_layout, + grid_dim=(ceildiv(N, BN), ceildiv(M, BM)), + block_dim=(BN, BM), + ) + elif algorithm == "tiled": + alias BM = 32 + alias BN = 32 + alias BK = 32 + alias NUM_THREADS = BM * BN + gpu_ctx.enqueue_function[ + tiled_matrix_multiplication[ + out.type, + a_layout.layout, + b_layout.layout, + out_layout.layout, + BM, + BN, + BK, + NUM_THREADS, + ] + ]( + a_layout, + b_layout, + out_layout, + grid_dim=(ceildiv(N, BN), ceildiv(M, BM)), + block_dim=(BM * BN), + ) + elif algorithm == "tiled_register": + alias BM = 64 + alias BN = 64 + alias BK = 8 + alias TM = 8 + alias NUM_THREADS = (BM * BN) // TM + gpu_ctx.enqueue_function[ + tiled_register_matrix_multiplication[ + out.type, + a_layout.layout, + b_layout.layout, + out_layout.layout, + BM, + BN, + BK, + TM, + NUM_THREADS, + ] + ]( + a_layout, + b_layout, + out_layout, + grid_dim=(ceildiv(N, BN), ceildiv(M, BM)), + block_dim=(NUM_THREADS), + ) + elif algorithm == "block_tiled": + alias BM = 128 + alias BN = 128 + alias BK = 8 + alias TM = 8 + alias TN = 8 + alias NUM_THREADS = (BM * BN) // (TM * TN) + gpu_ctx.enqueue_function[ + block_tiled_matrix_multiplication[ + out.type, + a_layout.layout, + b_layout.layout, + out_layout.layout, + BM, + BN, + BK, + TM, + TN, + NUM_THREADS, + ] + ]( + a_layout, + b_layout, + out_layout, + grid_dim=(ceildiv(N, BN), ceildiv(M, BM)), + block_dim=(NUM_THREADS), + ) + elif algorithm == "block_tiled_vectorized": + alias BM = 128 + alias BN = 128 + alias BK = 8 + alias TM = 8 + alias TN = 8 + alias NUM_THREADS = (BM * BN) // (TM * TN) + gpu_ctx.enqueue_function[ + block_tiled_matrix_multiplication[ + out.type, + a_layout.layout, + b_layout.layout, + out_layout.layout, + BM, + BN, + BK, + TM, + TN, + NUM_THREADS, + ] + ]( + a_layout, + b_layout, + out_layout, + grid_dim=(ceildiv(N, BN), ceildiv(M, BM)), + block_dim=(NUM_THREADS), + ) + elif algorithm == "tensor_core": + alias BM = 64 + alias BN = 64 + alias BK = 32 + alias WM = 32 + alias WN = 32 + alias MMA_M = 16 + alias MMA_N = 8 + alias MMA_K = 8 + alias NUM_WARPS = (BM // WM) * (BN // WN) + gpu_ctx.enqueue_function[ + tensor_core_matrix_multiplication[ + out.type, + a_layout.layout, + b_layout.layout, + out_layout.layout, + BM, + BN, + BK, + WM, + WN, + MMA_M, + MMA_N, + MMA_K, + ] + ]( + a_layout, + b_layout, + out_layout, + grid_dim=(ceildiv(N, BN), ceildiv(M, BM)), + block_dim=(NUM_WARPS * WARP_SIZE), + ) + else: + raise Error("No known matmul algorithm:", algorithm) + + else: + naive_matrix_multiplication_cpu(out, a, b) diff --git a/examples/custom_ops/kernels/top_k.mojo b/examples/custom_ops/kernels/top_k.mojo new file mode 100644 index 0000000000..7a03e23d18 --- /dev/null +++ b/examples/custom_ops/kernels/top_k.mojo @@ -0,0 +1,229 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from math import iota +from sys import alignof, sizeof, num_physical_cores + +from algorithm import parallelize_over_rows +from bit import log2_floor +from compiler import register +from gpu import WARP_SIZE, barrier +import gpu.warp as warp +from gpu.memory import AddressSpace, external_memory +from max.tensor import ManagedTensorSlice +from memory import Span +from benchmark import Bench, Bencher, BenchId, BenchMetric, ThroughputMeasure + +from utils.index import IndexList +from utils.numerics import min_or_neg_inf + + +@value +@register_passable("trivial") +struct TopKElement[T: DType]: + """Stores the value with it's index.""" + + var idx: Int32 + var val: Scalar[T] + + fn __gt__(self, rhs: Self) -> Bool: + return self.val > rhs.val + + +@register("top_k_custom", num_dps_outputs=2) +struct TopK: + """Registers the `top_k_custom` op, allowing python to use it from the `max` + package. This is a simplified version without bottom_k and sorting options, + or fused sampling. The purpose is to demonstrate concisely how you can + implement your own custom ops in Mojo that can be called from Python. MAX + has the "mo.top_k" op which is feature complete. + """ + + @staticmethod + fn execute[ + type: DType, + rank: Int, + //, # Forces the previous two params to be inferred from the args + K: Int, + target: StringLiteral, + ]( + out_vals: ManagedTensorSlice[type=type, rank=rank], + out_idxs: ManagedTensorSlice[type = DType.int32, rank=rank], + in_vals: ManagedTensorSlice[type=type, rank=rank], + ctx: DeviceContextPtr, + ) raises: + constrained[rank == 2, "rank must be 2"]() + var shape = in_vals.shape() + var batch_size = shape[0] + + var dev_ctx = ctx.get_device_context() + print("Executing on device:", dev_ctx.name()) + + @parameter + fn top_k_gpu[ + K: Int, + ]( + out_vals: __type_of(out_vals), + out_idxs: __type_of(out_idxs), + in_vals: __type_of(in_vals), + ): + var bid = block_idx.x + var tid = thread_idx.x + + # Get a pointer to shared memory for the indices and values + var top_k_sram = external_memory[ + TopKElement[type], + address_space = AddressSpace.SHARED, + alignment = alignof[TopKElement[type]](), + ]() + + # Threads put their corresponding index and value into shared memory + top_k_sram[tid] = TopKElement(tid, in_vals[bid, tid]) + # Finish packing the values across threads in this block + barrier() + + @parameter + for i in range(K): + var reduced = top_k_sram[tid] + alias limit = log2_floor(WARP_SIZE) + + # TODO(KERN-1544): `gpu.shuffle.warp_max` support index/value + @parameter + for j in reversed(range(limit)): + alias offset = 1 << j + # Parallel reduction using warp shuffle. Each thread gets a + # value from a thread 'offset' positions higher, keeping the + # larger value. + var shuffled = TopKElement( + warp.shuffle_down(reduced.idx, offset), + warp.shuffle_down(reduced.val, offset), + ) + reduced = max(reduced, shuffled) + + # Wait for all threads to finish reducing their values + barrier() + + # Thread 0 now has the reduced max value for this index + if tid == 0: + # Store the reduced top_k index and value in global memory + out_vals[bid, i] = reduced.val + out_idxs[bid, i] = reduced.idx + + # Remove found maximum from consideration in the next iter + var index = reduced.idx % block_dim.x + top_k_sram[index].val = min_or_neg_inf[type]() + + @parameter + fn top_k_cpu(start_idx: Int, end_idx: Int): + for row_idx in range(start_idx, end_idx): + var offset = (row_idx * K) + iota(out_idxs.unsafe_ptr() + offset, K) + + @parameter + fn val_greater_than(lhs: Int32, rhs: Int32) -> Bool: + return ( + in_vals[row_idx, Int(lhs)] > in_vals[row_idx, Int(rhs)] + ) + + sort[val_greater_than](Span(out_idxs.unsafe_ptr() + offset, K)) + + for i in range(K): + var sorted_idx = Int(out_idxs[row_idx, i]) + out_vals[row_idx, i] = in_vals[row_idx, sorted_idx] + + if batch_size <= 10: + + @parameter + if target == "gpu": + # This is a simplified version that only works for K being under + # the warp size. The MAX "mo.top_k" op supports any K and does + # another reduction after each warp has reduced its values. + if K >= WARP_SIZE: + raise Error( + "[top_k_custom] K=", + K, + " but must be less than the WARP_SIZE=", + WARP_SIZE, + ) + + if K < WARP_SIZE: + dev_ctx.enqueue_function[top_k_gpu[K]]( + out_vals, + out_idxs, + in_vals, + grid_dim=batch_size, # One block per batch + block_dim=K, # One thread per K + shared_mem_bytes=K * sizeof[TopKElement[type]](), + ) + else: + # Set grain size to 1 to put each batch in a separate task + parallelize_over_rows[top_k_cpu](shape, 1, grain_size=1) + + # Everything below is for benchmarking when running a stress test + else: + var bench = Bench() + + @parameter + @always_inline + fn bench_gpu(mut b: Bencher, shape: IndexList[rank]) raises: + @parameter + @always_inline + fn kernel_launch(dev_ctx: DeviceContext) raises: + dev_ctx.enqueue_function[top_k_gpu[K]]( + out_vals, + out_idxs, + in_vals, + grid_dim=batch_size, # One block per batch + block_dim=K, # One thread per K + shared_mem_bytes=K * sizeof[TopKElement[type]](), + ) + + b.iter_custom[kernel_launch](ctx.get_device_context()) + + @parameter + @always_inline + fn bench_cpu(mut b: Bencher) raises: + var grain = 1 + # Split job up evenly across physical cores on large batch + if batch_size > 1000: + grain = batch_size // num_physical_cores() + + @parameter + fn run_bench(): + parallelize_over_rows[top_k_cpu](shape, 1, grain_size=grain) + + b.iter[run_bench]() + + var els = ThroughputMeasure( + BenchMetric.elements, shape.flattened_length() + ) + var flops = ThroughputMeasure( + BenchMetric.flops, shape.flattened_length() * log2_floor(K) + ) + + # Only benchmark GPU if it's available + @parameter + if target == "gpu": + bench.bench_with_input[IndexList[rank], bench_gpu]( + BenchId("top_k_custom", "gpu"), shape, els, flops + ) + + # TODO: Always benchmark CPU to compare with GPU + else: + bench.bench_function[bench_cpu]( + BenchId("top_k_custom", "cpu"), els, flops + ) + + bench.config.verbose_metric_names = False + bench.config.verbose_timing = True + print(bench) diff --git a/examples/custom_ops/kernels/vector_addition.mojo b/examples/custom_ops/kernels/vector_addition.mojo new file mode 100644 index 0000000000..9b7f3e7d6b --- /dev/null +++ b/examples/custom_ops/kernels/vector_addition.mojo @@ -0,0 +1,101 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from math import ceildiv + +from gpu import block_dim, block_idx, thread_idx +from gpu.host import DeviceContext +from runtime.asyncrt import DeviceContextPtr +from tensor import ManagedTensorSlice, foreach + +from utils.index import IndexList + + +fn _vector_addition_cpu( + out: ManagedTensorSlice, + lhs: ManagedTensorSlice[type = out.type, rank = out.rank], + rhs: ManagedTensorSlice[type = out.type, rank = out.rank], + ctx: DeviceContextPtr, +): + # Warning: This is an extremely inefficient implementation! It's merely an + # instructional example of how a dedicated CPU-only path can be specified + # for basic vector addition. + var vector_length = out.dim_size(0) + for i in range(vector_length): + var idx = IndexList[out.rank](i) + var result = lhs.load[1](idx) + rhs.load[1](idx) + out.store[1](idx, result) + + +fn _vector_addition_gpu( + out: ManagedTensorSlice, + lhs: ManagedTensorSlice[type = out.type, rank = out.rank], + rhs: ManagedTensorSlice[type = out.type, rank = out.rank], + ctx: DeviceContextPtr, +) raises: + # Note: The following has not been tuned for any GPU hardware, and is an + # instructional example for how a simple GPU function can be constructed + # and dispatched. + alias BLOCK_SIZE = 16 + var gpu_ctx = ctx.get_device_context() + var vector_length = out.dim_size(0) + + # The function that will be launched and distributed across GPU threads. + @parameter + fn vector_addition_gpu_kernel(length: Int): + var tid = block_dim.x * block_idx.x + thread_idx.x + if tid < length: + var idx = IndexList[out.rank](tid) + var result = lhs.load[1](idx) + rhs.load[1](idx) + out.store[1](idx, result) + + # The vector is divided up into blocks, making sure there's an extra + # full block for any remainder. + var num_blocks = ceildiv(vector_length, BLOCK_SIZE) + + # The GPU function is compiled and enqueued to run on the GPU across the + # 1-D vector, split into blocks of `BLOCK_SIZE` width. + gpu_ctx.enqueue_function[vector_addition_gpu_kernel]( + vector_length, grid_dim=num_blocks, block_dim=BLOCK_SIZE + ) + + +@compiler.register("vector_addition", num_dps_outputs=1) +struct VectorAddition: + @staticmethod + fn execute[ + # The kind of device this will be run on: "cpu" or "gpu" + target: StringLiteral, + ]( + # as num_dps_outputs=1, the first argument is the "output" + out: ManagedTensorSlice[rank=1], + # starting here are the list of inputs + lhs: ManagedTensorSlice[type = out.type, rank = out.rank], + rhs: ManagedTensorSlice[type = out.type, rank = out.rank], + # the context is needed for some GPU calls + ctx: DeviceContextPtr, + ) raises: + # For a simple elementwise operation like this, the `foreach` function + # does much more rigorous hardware-specific tuning. We recommend using + # that abstraction, with this example serving purely as an illustration + # of how lower-level functions can be used to program GPUs via Mojo. + + # At graph compilation time, we will know what device we are compiling + # this operation for, so we can specialize it for the target hardware. + @parameter + if target == "cpu": + _vector_addition_cpu(out, lhs, rhs, ctx) + elif target == "gpu": + _vector_addition_gpu(out, lhs, rhs, ctx) + else: + raise Error("No known target:", target) diff --git a/examples/custom_ops/mandelbrot.py b/examples/custom_ops/mandelbrot.py new file mode 100644 index 0000000000..b1d4855171 --- /dev/null +++ b/examples/custom_ops/mandelbrot.py @@ -0,0 +1,99 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +import os +from pathlib import Path + +from max.driver import CPU, Accelerator, Tensor, accelerator_count +from max.dtype import DType +from max.engine import InferenceSession +from max.graph import Graph, TensorType, ops + + +def create_mandelbrot_graph( + width: int, + height: int, + min_x: float, + min_y: float, + scale_x: float, + scale_y: float, + max_iterations: int, +) -> Graph: + """Configure a graph to run a Mandelbrot kernel.""" + output_dtype = DType.int32 + with Graph( + "mandelbrot", + ) as graph: + # The custom Mojo operation is referenced by its string name, and we + # need to provide inputs as a list as well as expected output types. + result = ops.custom( + name="mandelbrot", + values=[ + ops.constant(min_x, dtype=DType.float32), + ops.constant(min_y, dtype=DType.float32), + ops.constant(scale_x, dtype=DType.float32), + ops.constant(scale_y, dtype=DType.float32), + ops.constant(max_iterations, dtype=DType.int32), + ], + out_types=[TensorType(dtype=output_dtype, shape=[height, width])], + )[0].tensor + + # Return the result of the custom operation as the output of the graph. + graph.output(result) + return graph + + +if __name__ == "__main__": + # This is necessary only in specific build environments. + if directory := os.getenv("BUILD_WORKSPACE_DIRECTORY"): + os.chdir(directory) + + path = Path(__file__).parent / "kernels.mojopkg" + + # Establish Mandelbrot set ranges. + WIDTH = 15 + HEIGHT = 15 + MAX_ITERATIONS = 100 + MIN_X = -1.5 + MAX_X = 0.7 + MIN_Y = -1.12 + MAX_Y = 1.12 + + # Configure our simple graph. + scale_x = (MAX_X - MIN_X) / WIDTH + scale_y = (MAX_Y - MIN_Y) / HEIGHT + graph = create_mandelbrot_graph( + WIDTH, HEIGHT, MIN_X, MIN_Y, scale_x, scale_y, MAX_ITERATIONS + ) + + # Place the graph on a GPU, if available. Fall back to CPU if not. + device = CPU() if accelerator_count() == 0 else Accelerator() + + # Set up an inference session that runs the graph on a GPU, if available. + session = InferenceSession( + devices=[device], + custom_extensions=path, + ) + # Compile the graph. + model = session.load(graph) + + # Perform the calculation on the target device. + result = model.execute()[0] + + # Copy values back to the CPU to be read. + assert isinstance(result, Tensor) + result = result.to(CPU()) + + print("Iterations to escape:") + print(result.to_numpy()) + print() diff --git a/examples/custom_ops/matrix_multiplication.py b/examples/custom_ops/matrix_multiplication.py new file mode 100644 index 0000000000..70335e7b4d --- /dev/null +++ b/examples/custom_ops/matrix_multiplication.py @@ -0,0 +1,169 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +import os +from pathlib import Path + +import numpy as np +from max.driver import CPU, Accelerator, Device, Tensor, accelerator_count +from max.dtype import DType +from max.engine import InferenceSession +from max.graph import Graph, TensorType, ops +from numpy.typing import NDArray + + +def matrix_multiplication( + a: NDArray[np.float32], + b: NDArray[np.float32], + algorithm: str, + session: InferenceSession, + device: Device, +) -> Tensor: + dtype = DType.float32 + + # Create driver tensors from the input arrays, and move them to the + # accelerator. + a_tensor = Tensor.from_numpy(a).to(device) + b_tensor = Tensor.from_numpy(b).to(device) + + # Configure our simple one-operation graph. + with Graph( + "matrix_multiplication_graph", + input_types=[ + TensorType(dtype, shape=a_tensor.shape), + TensorType(dtype, shape=b_tensor.shape), + ], + ) as graph: + # Take in the two inputs to the graph. + a_value, b_value = graph.inputs + # The matrix multiplication custom operation takes in two matrices and + # produces a result, with the specific algorithm that is used chosen + # via compile-time parameterization. + output = ops.custom( + name="matrix_multiplication", + values=[a_value, b_value], + out_types=[ + TensorType( + dtype=a_value.tensor.dtype, + shape=[a_value.tensor.shape[0], b_value.tensor.shape[1]], + ) + ], + parameters={"algorithm": algorithm}, + )[0].tensor + graph.output(output) + + # Compile the graph. + print("Compiling...") + model = session.load(graph) + + # Perform the calculation on the target device. + print("Executing...") + result = model.execute(a_tensor, b_tensor)[0] + + # Copy values back to the CPU to be read. + assert isinstance(result, Tensor) + return result.to(CPU()) + + +if __name__ == "__main__": + # This is necessary only in specific build environments. + if directory := os.getenv("BUILD_WORKSPACE_DIRECTORY"): + os.chdir(directory) + + path = Path(__file__).parent / "kernels.mojopkg" + + M = 256 + K = 256 + N = 256 + + # Place the graph on a GPU, if available. Fall back to CPU if not. + device = CPU() if accelerator_count() == 0 else Accelerator() + + # Set up an inference session for running the graph. + session = InferenceSession( + devices=[device], + custom_extensions=path, + ) + + # Fill the input matrices with random values. + a = np.random.uniform(size=(M, K)).astype(np.float32) + b = np.random.uniform(size=(K, N)).astype(np.float32) + + # First, perform the matrix multiplication in NumPy. + print("A:") + print(a) + print() + + print("B:") + print(b) + print() + + print("Expected result:") + print(a @ b) + print() + + if accelerator_count() > 0: + # Then, test the various versions of matrix multiplication operations. + naive_result = matrix_multiplication(a, b, "naive", session, device) + print("Naive matrix multiplication:") + print(naive_result.to_numpy()) + print() + + coalescing_result = matrix_multiplication( + a, b, "coalescing", session, device + ) + print("Coalescing matrix multiplication:") + print(coalescing_result.to_numpy()) + print() + + tiled_result = matrix_multiplication(a, b, "tiled", session, device) + print("Tiled matrix multiplication:") + print(tiled_result.to_numpy()) + print() + + tiled_register_result = matrix_multiplication( + a, b, "tiled_register", session, device + ) + print("Shared memory and register tiling matrix multiplication:") + print(tiled_register_result.to_numpy()) + print() + + block_tiled_result = matrix_multiplication( + a, b, "block_tiled", session, device + ) + print("2D block tiled matrix multiplication:") + print(block_tiled_result.to_numpy()) + print() + + block_tiled_vectorized_result = matrix_multiplication( + a, b, "block_tiled_vectorized", session, device + ) + print("2D block tiled matrix multiplication (vectorized):") + print(block_tiled_vectorized_result.to_numpy()) + print() + + tensor_core_result = matrix_multiplication( + a, b, "tensor_core", session, device + ) + print("Matrix multiplication using Tensor Cores:") + print(tensor_core_result.to_numpy()) + print() + else: + print( + "No MAX-compatible accelerator detected, only running a naive matrix multiplication:" + ) + + naive_result = matrix_multiplication(a, b, "naive", session, device) + print("Naive matrix multiplication:") + print(naive_result.to_numpy()) + print() diff --git a/examples/custom_ops/mojoproject.toml b/examples/custom_ops/mojoproject.toml new file mode 100644 index 0000000000..d110891084 --- /dev/null +++ b/examples/custom_ops/mojoproject.toml @@ -0,0 +1,22 @@ +[project] +authors = ["Modular "] +channels = ["conda-forge", "https://conda.modular.com/max-nightly/"] +description = "An example of extending a graph with a custom Mojo operation" +name = "Custom Operations" +platforms = ["osx-arm64", "linux-aarch64", "linux-64"] +version = "0.1.0" + +[tasks] +package = "mojo package kernels/ -o kernels.mojopkg" +addition = { cmd = "python addition.py", depends-on = ["package"] } +mandelbrot = { cmd = "python mandelbrot.py", depends-on = ["package"] } +vector_addition = { cmd = "python vector_addition.py", depends-on = ["package"] } +top_k = { cmd = "python top_k.py", depends-on = ["package"] } +fused_attention = { cmd = "python fused_attention.py", depends-on = ["package"] } +matrix_multiplication = { cmd = "python matrix_multiplication.py", depends-on = ["package"] } +histogram = { cmd = "python histogram.py", depends-on = ["package"] } +test = { depends-on = ["addition", "mandelbrot", "vector_addition", "top_k", "fused_attention", "matrix_multiplication"] } + +[dependencies] +python = ">=3.9,<3.13" +max = ">=24.6.0.dev2024090821" diff --git a/examples/custom_ops/parametric_addition.py b/examples/custom_ops/parametric_addition.py new file mode 100644 index 0000000000..e4f0d1d5a7 --- /dev/null +++ b/examples/custom_ops/parametric_addition.py @@ -0,0 +1,82 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +import os +from pathlib import Path + +import numpy as np +from max.driver import CPU, Accelerator, Tensor, accelerator_count +from max.dtype import DType +from max.engine import InferenceSession +from max.graph import Graph, TensorType, ops + +if __name__ == "__main__": + # This is necessary only in specific build environments. + if directory := os.getenv("BUILD_WORKSPACE_DIRECTORY"): + os.chdir(directory) + + path = Path(__file__).parent / "kernels.mojopkg" + + rows = 5 + columns = 10 + dtype = DType.float32 + + # Configure our simple one-operation graph. + graph = Graph( + "addition", + # The custom Mojo operation is referenced by its string name, and we + # need to provide inputs as a list as well as expected output types. + # Since the custom operation is parametric, we need to provide the + # parameters as a dictionary. + forward=lambda x: ops.custom( + name="add_constant_custom", + values=[x], + out_types=[TensorType(dtype=x.dtype, shape=x.tensor.shape)], + parameters={"value": 5}, + )[0].tensor, + input_types=[ + TensorType(dtype, shape=[rows, columns]), + ], + ) + + # Place the graph on a GPU, if available. Fall back to CPU if not. + device = CPU() if accelerator_count() == 0 else Accelerator() + + # Set up an inference session for running the graph. + session = InferenceSession( + devices=[device], + custom_extensions=path, + ) + + # Compile the graph. + model = session.load(graph) + + # Fill an input matrix with random values. + x_values = np.random.uniform(size=(rows, columns)).astype(np.float32) + + # Create a driver tensor from this, and move it to the accelerator. + x = Tensor.from_numpy(x_values).to(device) + + # Perform the calculation on the target device. + result = model.execute(x)[0] + + # Copy values back to the CPU to be read. + assert isinstance(result, Tensor) + result = result.to(CPU()) + + print("Graph result:") + print(result.to_numpy()) + print() + + print("Expected result:") + print(x_values + 5) diff --git a/examples/custom_ops/top_k.py b/examples/custom_ops/top_k.py new file mode 100644 index 0000000000..887fd444c0 --- /dev/null +++ b/examples/custom_ops/top_k.py @@ -0,0 +1,214 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # +import argparse +import os +from collections import defaultdict +from pathlib import Path +from typing import DefaultDict + +import numpy as np +from max.driver import CPU, Accelerator, Tensor, accelerator_count +from max.dtype import DType +from max.engine.api import InferenceSession +from max.graph import Graph, TensorType, ops +from numpy.typing import NDArray + +INPUT_TEXT = """ +The quick rabbit runs past the brown fox +The quick rabbit jumps over the brown dog +The quick dog chases past the lazy fox +The quick dog runs through the tall trees +The quick brown fox jumps over the lazy dog +The brown dog sleeps under the shady tree +The brown rabbit hops under the tall tree +The brown fox runs through the forest trees +The brown fox watches the sleeping rabbit +The lazy fox watches over the sleeping dog +The lazy dog watches the quick rabbit +The shady tree shelters the brown rabbit +The shady fox sleeps under the old tree +The sleeping fox rests beside the shady tree +The lazy rabbit rests beside the brown fox +""" + + +class NextWordFrequency: + def __init__(self, text): + # nested `DefaultDict` to create the keys when first indexed + # Structure looks like: {"word": {"next_word": count}} + self.word_frequencies: DefaultDict[str, DefaultDict[str, int]] = ( + defaultdict(lambda: defaultdict(int)) + ) + + # Track the largest amount of next words to pad the tensor + self.max_next_words = 0 + + # Build word frequencies + words = text.lower().split() + for i in range(len(words) - 1): + current_word = words[i] + next_word = words[i + 1] + self.word_frequencies[current_word][next_word] += 1 + self.max_next_words = max( + self.max_next_words, len(self.word_frequencies[current_word]) + ) + + def next_word_probabilities(self, words) -> NDArray[np.float32]: + if not words: + return np.empty(0, dtype=np.float32) + + # List to store the probability distributions for each word + prob_distributions = [] + + for word in words: + if word not in self.word_frequencies: + raise ValueError( + f"Error: cannot predict word after '{word}', not found in input text" + ) + + for word in words: + frequencies = self.word_frequencies[word] + freq_list = np.array(list(frequencies.values()), dtype=np.float32) + + # Avoid division by zero + total = freq_list.sum() + if total > 0: + freq_list /= total + + # Pad to largest length of next words + padded_dist = np.pad( + freq_list, + (0, self.max_next_words - len(freq_list)), + mode="constant", + constant_values=0, + ) + prob_distributions.append(padded_dist) + + return np.stack(prob_distributions, axis=0) + + def __getitem__(self, idx): + return self.word_frequencies[idx] + + +# Example usage +def main(): + parser = argparse.ArgumentParser( + description="Top-K sampling with custom ops" + ) + parser.add_argument( + "--stress-test", + type=int, + default=0, + help=( + "Number of times to repeat input for stress testing. " + "On NVIDIA A100, 250_000_000 takes less than 0.5ms and uses over 75%% of its memory." + ), + ) + parser.add_argument( + "--cpu", + action="store_true", + help="Run on CPU even if there is a GPU available.", + ) + args = parser.parse_args() + + # This is necessary only for Modular internal CI. + if directory := os.getenv("BUILD_WORKSPACE_DIRECTORY"): + os.chdir(directory) + + # Get the path to our compiled custom ops + path = Path(__file__).parent / "kernels.mojopkg" + + # Initialize the next word frequency for each unique word + frequencies = NextWordFrequency(INPUT_TEXT) + word_predictions = ["the", "quick", "brown"] + + # Get probabilities of next word for each word in the `word_predictions` list + probabilities = frequencies.next_word_probabilities(word_predictions) + + # If stress testing, repeat the input the specified number of times + if args.stress_test > 0: + probabilities = np.repeat(probabilities, args.stress_test, axis=0) + + batch_size = len(probabilities) + K = frequencies.max_next_words + + # Configure our simple one-operation graph. + with Graph( + "top_k_sampler", + # The dtype and shape of the probabilities being passed in + input_types=[TensorType(DType.float32, shape=[batch_size, K])], + ) as graph: + # Take the probabilities as a single input to the graph. + probs, *_ = graph.inputs + + results = ops.custom( + # This is the custom op name defined in `kernels/top_k.mojo`. + name="top_k_custom", + # Passes `K` as a compile-time Mojo `Int`. + parameters={"K": K}, + # Passes the probabilities as a single input to the graph. + values=[probs], + out_types=[ + # The output values dtype and shape + TensorType(probs.tensor.dtype, probs.tensor.shape), + # The output indices dtype and shape + TensorType(DType.int32, probs.tensor.shape), + ], + ) + graph.output(*results) + + # Place the graph on a GPU, if available. Fall back to CPU if not. + device = CPU() if args.cpu or accelerator_count() == 0 else Accelerator() + + # Set up an inference session for running the graph. + session = InferenceSession(devices=[device], custom_extensions=path) + + # Compile the graph. + model = session.load(graph) + + # Create a driver tensor from the next word probabilities + input_tensor = Tensor.from_numpy(probabilities).to(device) + + print(f"Sampling top k: {K} for batch size: {batch_size}") + + values, indices = model.execute(input_tensor) + + if args.stress_test > 0: + return + + # Copy values and indices back to the CPU to be read. + assert isinstance(values, Tensor) + values = values.to(CPU()) + np_values = values.to_numpy() + + assert isinstance(indices, Tensor) + indices = indices.to(CPU()) + np_indices = indices.to_numpy() + + for i in range(batch_size): + print(f"\nPredicted word after `{word_predictions[i]}`") + print("-------------------------------") + print("| word | confidence |") + print("-------------------------------") + keys = list(frequencies.word_frequencies[word_predictions[i]].keys()) + + for j in range(len(np_indices[i])): + # If it's a padded index/value, break out of the loop + if j > len(keys) - 1: + break + print(f"| {keys[np_indices[i][j]]:<13}| {np_values[i][j]:<13.8}|") + print("-------------------------------") + + +if __name__ == "__main__": + main() diff --git a/examples/custom_ops/vector_addition.py b/examples/custom_ops/vector_addition.py new file mode 100644 index 0000000000..9ed124f6a8 --- /dev/null +++ b/examples/custom_ops/vector_addition.py @@ -0,0 +1,92 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +import os +from pathlib import Path + +import numpy as np +from max.driver import CPU, Accelerator, Tensor, accelerator_count +from max.dtype import DType +from max.engine import InferenceSession +from max.graph import Graph, TensorType, ops + +if __name__ == "__main__": + # This is necessary only in specific build environments. + if directory := os.getenv("BUILD_WORKSPACE_DIRECTORY"): + os.chdir(directory) + + path = Path(__file__).parent / "kernels.mojopkg" + + vector_width = 10 + dtype = DType.float32 + + # Configure our simple one-operation graph. + with Graph( + "vector_addition", + input_types=[ + TensorType(dtype, shape=[vector_width]), + TensorType(dtype, shape=[vector_width]), + ], + ) as graph: + # Take in the two inputs to the graph. + lhs, rhs = graph.inputs + output = ops.custom( + name="vector_addition", + values=[lhs, rhs], + out_types=[ + TensorType(dtype=lhs.tensor.dtype, shape=lhs.tensor.shape) + ], + )[0].tensor + graph.output(output) + + # Place the graph on a GPU, if available. Fall back to CPU if not. + device = CPU() if accelerator_count() == 0 else Accelerator() + + # Set up an inference session for running the graph. + session = InferenceSession( + devices=[device], + custom_extensions=path, + ) + + # Compile the graph. + model = session.load(graph) + + # Fill input matrices with random values. + lhs_values = np.random.uniform(size=(vector_width)).astype(np.float32) + rhs_values = np.random.uniform(size=(vector_width)).astype(np.float32) + + # Create driver tensors from this, and move them to the accelerator. + lhs_tensor = Tensor.from_numpy(lhs_values).to(device) + rhs_tensor = Tensor.from_numpy(rhs_values).to(device) + + # Perform the calculation on the target device. + result = model.execute(lhs_tensor, rhs_tensor)[0] + + # Copy values back to the CPU to be read. + assert isinstance(result, Tensor) + result = result.to(CPU()) + + print("Left-hand-side values:") + print(lhs_values) + print() + + print("Right-hand-side values:") + print(rhs_values) + print() + + print("Graph result:") + print(result.to_numpy()) + print() + + print("Expected result:") + print(lhs_values + rhs_values) diff --git a/examples/gpu_functions/README.md b/examples/gpu_functions/README.md new file mode 100755 index 0000000000..3e09a9c092 --- /dev/null +++ b/examples/gpu_functions/README.md @@ -0,0 +1,50 @@ +# Compiling and running Mojo functions on a GPU + +> [!NOTE] +> This is a preview of an interface for programming GPUs using Mojo, +> and may be subject to change before the next stable release. + +Mojo functions can be compiled and dispatched on a GPU, and these examples +show a few different ways of doing so. They also demonstrate how to allocate +and move tensors between CPU and GPU via the MAX Driver API. These examples are +complementary with +[those that show how to program custom graph operations](../custom_ops/) to +run on the CPU or GPU in Mojo. + +> [!NOTE] +> The Mojo interfaces to the MAX Driver API are under development, are +> not fully documented, and may change before the next stable release. + +A [MAX-compatible GPU](https://docs.modular.com/max/faq/#gpu-requirements) is +necessary to run these examples. + +The four examples of GPU functions defined in Mojo consist of: + +- **vector_addition.mojo**: A common "hello world" example for GPU programming, + this adds two vectors together in the same way as seen in Chapter 2 of + ["Programming Massively Parallel Processors"](https://www.sciencedirect.com/book/9780323912310/programming-massively-parallel-processors). +- **grayscale.mojo**: The parallelized conversion of an RGB image to grayscale, + as seen in Chapter 3 of "Programming Massively Parallel Processors". +- **naive_matrix_multiplication.mojo**: An implementation of naive matrix + multiplication, again inspired by Chapter 3 of "Programming Massively + Parallel Processors". +- **mandelbrot.mojo**: A parallel calculation of the number of iterations to + escape in the Mandelbrot set. An example of the same computation performed as + a custom graph operation can be found [here](../custom_ops/). + +A single Magic command runs each of the examples: + +```sh +magic run vector_addition +magic run grayscale +magic run naive_matrix_multiplication +magic run mandelbrot +``` + +For larger computations, we recommend staging them as part of a +[MAX Graph](https://docs.modular.com/max/tutorials/get-started-with-max-graph-in-python). +The graph compiler within MAX performs intelligent operator fusion, +orchestrates efficient runtime execution, and more. The same Mojo code running +on a GPU in one of these examples can be easily translated to +[a custom operation](https://docs.modular.com/max/tutorials/build-custom-ops) +and placed inside a node in a MAX Graph. diff --git a/examples/gpu_functions/grayscale.mojo b/examples/gpu_functions/grayscale.mojo new file mode 100755 index 0000000000..f0bcc52566 --- /dev/null +++ b/examples/gpu_functions/grayscale.mojo @@ -0,0 +1,124 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + + +from gpu.host import Dim +from gpu.id import block_dim, block_idx, thread_idx +from math import ceildiv +from max.driver import ( + Device, + DynamicTensor, + Tensor, + accelerator_device, + cpu_device, +) +from max.driver.accelerator import compile + +alias channel_dtype = DType.uint8 +alias internal_float_dtype = DType.float32 +alias tensor_rank = 3 +alias TensorType = DynamicTensor[type=channel_dtype, rank=tensor_rank].Type + + +def print_image[h: Int, w: Int](t: Tensor[channel_dtype, 3]): + """A helper function to print out the grayscale channel intensities.""" + out = t.unsafe_slice() + for row in range(h): + for col in range(w): + var v = out[row, col, 0] + if v < 100: + print(" ", end="") + if v < 10: + print(" ", end="") + print(v, " ", end="") + print("") + + +fn color_to_grayscale_conversion( + width: Int, + height: Int, + image: TensorType, + out: TensorType, +): + """Converting each RGB pixel to grayscale, parallelized across the output tensor on the GPU. + """ + row = block_dim.y * block_idx.y + thread_idx.y + col = block_dim.x * block_idx.x + thread_idx.x + + if col < width and row < height: + red = image[row, col, 0].cast[internal_float_dtype]() + green = image[row, col, 1].cast[internal_float_dtype]() + blue = image[row, col, 2].cast[internal_float_dtype]() + gray = 0.21 * red + 0.71 * green + 0.07 * blue + + out[row, col, 0] = gray.cast[channel_dtype]() + + +def main(): + # Attempt to connect to a compatible GPU. If one is not found, this will + # error out and exit. + gpu_device = accelerator_device() + host_device = cpu_device() + + alias IMAGE_WIDTH = 5 + alias IMAGE_HEIGHT = 10 + alias NUM_CHANNELS = 3 + + # Allocate the input image tensor on the host. + rgb_tensor = Tensor[channel_dtype, tensor_rank]( + (IMAGE_HEIGHT, IMAGE_WIDTH, NUM_CHANNELS), host_device + ) + + # Fill the image with initial colors. + for row in range(IMAGE_HEIGHT): + for col in range(IMAGE_WIDTH): + rgb_tensor[row, col, 0] = row + col + rgb_tensor[row, col, 1] = row + col + 20 + rgb_tensor[row, col, 2] = row + col + 40 + + # Move the image tensor to the accelerator. + rgb_tensor = rgb_tensor.move_to(gpu_device) + + # Allocate a tensor on the accelerator to host the grayscale image. + gray_tensor = Tensor[channel_dtype, tensor_rank]( + (IMAGE_HEIGHT, IMAGE_WIDTH, 1), gpu_device + ) + + # Compile the function to run across a grid on the GPU. + gpu_function = compile[color_to_grayscale_conversion](gpu_device) + + # The grid is divided up into blocks, making sure there's an extra + # full block for any remainder. This hasn't been tuned for any specific + # GPU. + alias BLOCK_SIZE = 16 + num_col_blocks = ceildiv(IMAGE_WIDTH, BLOCK_SIZE) + num_row_blocks = ceildiv(IMAGE_HEIGHT, BLOCK_SIZE) + + # Launch the compiled function on the GPU. The target device is specified + # first, followed by all function arguments. The last two named parameters + # are the dimensions of the grid in blocks, and the block dimensions. + gpu_function( + gpu_device, + IMAGE_WIDTH, + IMAGE_HEIGHT, + rgb_tensor.unsafe_slice(), + gray_tensor.unsafe_slice(), + grid_dim=Dim(num_col_blocks, num_row_blocks), + block_dim=Dim(BLOCK_SIZE, BLOCK_SIZE), + ) + + # Move the output tensor back onto the CPU so that we can read the results. + gray_tensor = gray_tensor.move_to(host_device) + + print("Resulting grayscale image:") + print_image[IMAGE_HEIGHT, IMAGE_WIDTH](gray_tensor) diff --git a/examples/gpu_functions/mandelbrot.mojo b/examples/gpu_functions/mandelbrot.mojo new file mode 100755 index 0000000000..4356e624b1 --- /dev/null +++ b/examples/gpu_functions/mandelbrot.mojo @@ -0,0 +1,129 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from collections.string import StringSlice +from complex import ComplexSIMD +from gpu.host import Dim +from gpu.id import thread_idx, block_dim, block_idx +from math import ceildiv +from max.driver import DynamicTensor, Tensor, accelerator_device, cpu_device +from max.driver.accelerator import compile + +alias float_dtype = DType.float32 +alias int_dtype = DType.int32 +alias TensorType = DynamicTensor[type=int_dtype, rank=2].Type + + +def draw_mandelbrot[h: Int, w: Int](t: Tensor[int_dtype, 2], max: Int): + """A helper function to visualize the Mandelbrot set in ASCII art.""" + alias sr = StringSlice("....,c8M@jawrpogOQEPGJ") + out = t.unsafe_slice() + for row in range(h): + for col in range(w): + var v = out[row, col] + if v < max: + var idx = Int(v % len(sr)) + var p = sr[idx] + print(p, end="") + else: + print(" ", end="") + print("") + + +fn mandelbrot( + min_x: Scalar[float_dtype], + min_y: Scalar[float_dtype], + scale_x: Scalar[float_dtype], + scale_y: Scalar[float_dtype], + max_iterations: Scalar[int_dtype], + out: TensorType, +): + """The per-element calculation of iterations to escape in the Mandelbrot set. + """ + # Obtain the position in the grid from the X, Y thread locations. + var row = block_dim.y * block_idx.y + thread_idx.y + var col = block_dim.x * block_idx.x + thread_idx.x + + # Calculate the complex C corresponding to that grid location. + var cx = min_x + col * scale_x + var cy = min_y + row * scale_y + var c = ComplexSIMD[float_dtype, 1](cx, cy) + + # Perform the Mandelbrot iteration loop calculation. + var z = ComplexSIMD[float_dtype, 1](0, 0) + var iters = Scalar[int_dtype](0) + + var in_set_mask: Scalar[DType.bool] = True + for _ in range(max_iterations): + if not any(in_set_mask): + break + in_set_mask = z.squared_norm() <= 4 + iters = in_set_mask.select(iters + 1, iters) + z = z.squared_add(c) + + # Write out the resulting iterations to escape. + out[row, col] = iters + + +def main(): + # Attempt to connect to a compatible GPU. If one is not found, this will + # error out and exit. + gpu_device = accelerator_device() + host_device = cpu_device() + + # Compile the function to run across a grid on the GPU. + gpu_function = compile[mandelbrot](gpu_device) + + # Set the resolution of the Mandelbrot set grid that will be calculated. + alias GRID_WIDTH = 60 + alias GRID_HEIGHT = 25 + + # The grid is divided up into blocks, making sure there's an extra + # full block for any remainder. This hasn't been tuned for any specific + # GPU. + alias BLOCK_SIZE = 16 + num_col_blocks = ceildiv(GRID_WIDTH, BLOCK_SIZE) + num_row_blocks = ceildiv(GRID_HEIGHT, BLOCK_SIZE) + + # Set the parameters for the area of the Mandelbrot set we'll be examining. + alias MIN_X: Scalar[float_dtype] = -2.0 + alias MAX_X: Scalar[float_dtype] = 0.7 + alias MIN_Y: Scalar[float_dtype] = -1.12 + alias MAX_Y: Scalar[float_dtype] = 1.12 + alias SCALE_X = (MAX_X - MIN_X) / GRID_WIDTH + alias SCALE_Y = (MAX_Y - MIN_Y) / GRID_HEIGHT + alias MAX_ITERATIONS = 100 + + # Allocate a tensor on the target device to hold the resulting set. + out_tensor = Tensor[int_dtype, 2]((GRID_HEIGHT, GRID_WIDTH), gpu_device) + + # Launch the compiled function on the GPU. The target device is specified + # first, followed by all function arguments. The last two named parameters + # are the dimensions of the grid in blocks, and the block dimensions. + gpu_function( + gpu_device, + MIN_X, + MIN_Y, + SCALE_X, + SCALE_Y, + MAX_ITERATIONS, + out_tensor.unsafe_slice(), + grid_dim=Dim(num_col_blocks, num_row_blocks), + block_dim=Dim(BLOCK_SIZE, BLOCK_SIZE), + ) + + # Move the output tensor back onto the CPU so that we can read the results. + out_tensor = out_tensor.move_to(host_device) + + # Draw the final Mandelbrot set. + draw_mandelbrot[GRID_HEIGHT, GRID_WIDTH](out_tensor, max=MAX_ITERATIONS) diff --git a/examples/gpu_functions/mojoproject.toml b/examples/gpu_functions/mojoproject.toml new file mode 100755 index 0000000000..242792e7fb --- /dev/null +++ b/examples/gpu_functions/mojoproject.toml @@ -0,0 +1,17 @@ +[project] +authors = ["Modular "] +channels = ["conda-forge", "https://conda.modular.com/max-nightly/"] +description = "Examples of using Mojo to write GPU functions" +name = "Mojo GPU Functions" +platforms = ["osx-arm64", "linux-aarch64", "linux-64"] +version = "0.1.0" + +[tasks] +vector_addition = "mojo run vector_addition.mojo" +grayscale = "mojo run grayscale.mojo" +naive_matrix_multiplication = "mojo run naive_matrix_multiplication.mojo" +mandelbrot = "mojo run mandelbrot.mojo" +test = { depends-on = ["vector_addition", "grayscale", "naive_matrix_multiplication", "mandelbrot"] } + +[dependencies] +max = ">=24.6.0.dev2024090821" diff --git a/examples/gpu_functions/naive_matrix_multiplication.mojo b/examples/gpu_functions/naive_matrix_multiplication.mojo new file mode 100755 index 0000000000..515f87e2b5 --- /dev/null +++ b/examples/gpu_functions/naive_matrix_multiplication.mojo @@ -0,0 +1,110 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + + +from gpu.host import Dim +from gpu.id import block_dim, block_idx, thread_idx +from math import ceildiv +from max.driver import ( + Device, + DynamicTensor, + Tensor, + accelerator_device, + cpu_device, +) +from max.driver.accelerator import compile + +alias float_dtype = DType.float32 +alias tensor_rank = 2 +alias TensorType = DynamicTensor[type=float_dtype, rank=tensor_rank].Type + + +fn naive_matrix_multiplication( + i: Int, + j: Int, + k: Int, + m: TensorType, + n: TensorType, + p: TensorType, +): + """Naive matrix multiplication of M_ij x N_jk = P_ik.""" + row = block_dim.y * block_idx.y + thread_idx.y + col = block_dim.x * block_idx.x + thread_idx.x + + if row < i and col < k: + for j_index in range(j): + p[row, col] = p[row, col] + m[row, j_index] * n[j_index, col] + + +def main(): + # Attempt to connect to a compatible GPU. If one is not found, this will + # error out and exit. + gpu_device = accelerator_device() + host_device = cpu_device() + + alias I = 5 + alias J = 4 + alias K = 6 + + # Allocate the two input matrices on the host. + m_tensor = Tensor[float_dtype, tensor_rank]((I, J), host_device) + n_tensor = Tensor[float_dtype, tensor_rank]((J, K), host_device) + + # Fill them with initial values. + for m_row in range(I): + for m_col in range(J): + m_tensor[m_row, m_col] = m_row - m_col + + for n_row in range(J): + for n_col in range(K): + n_tensor[n_row, n_col] = n_row + n_col + + print("M matrix:", m_tensor) + print("N matrix:", n_tensor) + + # Move the input matrices to the accelerator. + m_tensor = m_tensor.move_to(gpu_device) + n_tensor = n_tensor.move_to(gpu_device) + + # Allocate a tensor on the accelerator to host the calculation results. + p_tensor = Tensor[float_dtype, tensor_rank]((I, K), gpu_device) + + # Compile the function to run across a grid on the GPU. + gpu_function = compile[naive_matrix_multiplication](gpu_device) + + # The grid is divided up into blocks, making sure there's an extra + # full block for any remainder. This hasn't been tuned for any specific + # GPU. + alias BLOCK_SIZE = 16 + num_col_blocks = ceildiv(I, BLOCK_SIZE) + num_row_blocks = ceildiv(J, BLOCK_SIZE) + + # Launch the compiled function on the GPU. The target device is specified + # first, followed by all function arguments. The last two named parameters + # are the dimensions of the grid in blocks, and the block dimensions. + gpu_function( + gpu_device, + I, + J, + K, + m_tensor.unsafe_slice(), + n_tensor.unsafe_slice(), + p_tensor.unsafe_slice(), + grid_dim=Dim(num_col_blocks, num_row_blocks), + block_dim=Dim(BLOCK_SIZE, BLOCK_SIZE), + ) + + # Move the output tensor back onto the CPU so that we can read the results. + p_tensor = p_tensor.move_to(host_device) + + print("Resulting matrix:", p_tensor) diff --git a/examples/gpu_functions/vector_addition.mojo b/examples/gpu_functions/vector_addition.mojo new file mode 100755 index 0000000000..dd4aaa4361 --- /dev/null +++ b/examples/gpu_functions/vector_addition.mojo @@ -0,0 +1,93 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from gpu.host import Dim +from gpu.id import block_dim, block_idx, thread_idx +from math import ceildiv +from max.driver import ( + Device, + DynamicTensor, + Tensor, + accelerator_device, + cpu_device, +) +from max.driver.accelerator import compile + +alias float_dtype = DType.float32 +alias tensor_rank = 1 +alias TensorType = DynamicTensor[type=float_dtype, rank=tensor_rank].Type + + +fn vector_addition( + length: Int, + lhs: TensorType, + rhs: TensorType, + out: TensorType, +): + """The calculation to perform across the vector on the GPU.""" + tid = block_dim.x * block_idx.x + thread_idx.x + if tid < length: + var result = lhs[tid] + rhs[tid] + out[tid] = result + + +def main(): + # Attempt to connect to a compatible GPU. If one is not found, this will + # error out and exit. + gpu_device = accelerator_device() + host_device = cpu_device() + + alias VECTOR_WIDTH = 10 + + # Allocate the two input tensors on the host. + lhs_tensor = Tensor[float_dtype, 1]((VECTOR_WIDTH), host_device) + rhs_tensor = Tensor[float_dtype, 1]((VECTOR_WIDTH), host_device) + + # Fill them with initial values. + for i in range(VECTOR_WIDTH): + lhs_tensor[i] = 1.25 + rhs_tensor[i] = 2.5 + + # Move the input tensors to the accelerator. + lhs_tensor = lhs_tensor.move_to(gpu_device) + rhs_tensor = rhs_tensor.move_to(gpu_device) + + # Allocate a tensor on the accelerator to host the calculation results. + out_tensor = Tensor[float_dtype, tensor_rank]((VECTOR_WIDTH), gpu_device) + + # Compile the function to run across a grid on the GPU. + gpu_function = compile[vector_addition](gpu_device) + + # The grid is divided up into blocks, making sure there's an extra + # full block for any remainder. This hasn't been tuned for any specific + # GPU. + alias BLOCK_SIZE = 16 + var num_blocks = ceildiv(VECTOR_WIDTH, BLOCK_SIZE) + + # Launch the compiled function on the GPU. The target device is specified + # first, followed by all function arguments. The last two named parameters + # are the dimensions of the grid in blocks, and the block dimensions. + gpu_function( + gpu_device, + VECTOR_WIDTH, + lhs_tensor.unsafe_slice(), + rhs_tensor.unsafe_slice(), + out_tensor.unsafe_slice(), + grid_dim=Dim(num_blocks), + block_dim=Dim(BLOCK_SIZE), + ) + + # Move the output tensor back onto the CPU so that we can read the results. + out_tensor = out_tensor.move_to(host_device) + + print("Resulting vector:", out_tensor) diff --git a/examples/graph-api/README.md b/examples/graph-api/README.md new file mode 100644 index 0000000000..faf99255c3 --- /dev/null +++ b/examples/graph-api/README.md @@ -0,0 +1,36 @@ +# MAX Graph API examples + +These examples demonstrate the flexibility of the +[MAX Graph API](https://docs.modular.com/max/graph/), a +[Mojo](https://docs.modular.com/mojo/) interface to the advanced graph compiler +within MAX. + +## Magic instructions + +If you have [`magic`](https://docs.modular.com/magic), you can run any of the +following commands: + +```sh +magic run basic +``` + +## Conda instructions + +```sh +# Create a Conda environment if you don't have one +conda create -n max-repo +# Update the environment with the environment.yml file +conda env update -n max-repo -f environment.yml --prune +# Run the example +conda activate max-repo + +mojo basics/basic.🔥 + +conda deactivate +``` + +## [Graph API introduction](basics/) + +A basic Mojo Graph API example that provides an introduction to how to +stage and run a computational graph on MAX, following the +[getting started guide](https://docs.modular.com/max/tutorials/get-started-with-max-graph). diff --git a/examples/graph-api/basics/README.md b/examples/graph-api/basics/README.md new file mode 100644 index 0000000000..c37b59b418 --- /dev/null +++ b/examples/graph-api/basics/README.md @@ -0,0 +1,26 @@ +# Basic example for MAX Graph API 🔥 + +This is a very simple example of how to build a model with the MAX Graph API +and execute it with MAX Engine. + +For a walkthrough of this code, see the quickstart guide to [build a graph with +MAX Graph](https://docs.modular.com/max/tutorials/get-started-with-max-graph-in-python/). + +## Usage + +First, [install Magic](https://docs.modular.com/magic/). + +Then run `basic.🔥` from a command line: + +```shell +magic run mojo basic.🔥 +``` + +You should see the following output: + +```shell +Input: input0 +Output: output0 +Tensor([[1.0], +[1.0]], dtype=float32, shape=2x1) +``` diff --git "a/examples/graph-api/basics/basic.\360\237\224\245" "b/examples/graph-api/basics/basic.\360\237\224\245" new file mode 100644 index 0000000000..070a159653 --- /dev/null +++ "b/examples/graph-api/basics/basic.\360\237\224\245" @@ -0,0 +1,52 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from max.engine import InferenceSession +from max.graph import Graph, TensorType, ops +from max.tensor import Tensor, TensorShape + + +# This example highlights the very basic API structure around building a MAX +# Graph model and executing it through the MAX engine APIS. +# Simply run this mojo file to create, load, and execute this simple model. +def main(): + graph = Graph(TensorType(DType.float32, 2, 6)) + + # Create a constant for usage in the matmul op below: + matmul_constant_value = Tensor[DType.float32](TensorShape(6, 1), 0.15) + matmul_constant = graph.constant(matmul_constant_value) + + # Start adding a sequence of operator calls to build the graph. + # We can use the subscript notation to get the graph's first input tensor: + matmul = graph[0] @ matmul_constant + relu = ops.relu(matmul) + softmax = ops.softmax(relu) + graph.output(softmax) + + # Load the graph: + session = InferenceSession() + model = session.load(graph) + + # Print the input/output names: + in_names = model.get_model_input_names() + for name in in_names: + print("Input:", name[]) + out_names = model.get_model_output_names() + for name in out_names: + print("Output:", name[]) + + # Execute the model: + input = Tensor[DType.float32](TensorShape(2, 6), 0.5) + results = model.execute("input0", input^) + output = results.get[DType.float32]("output0") + print(output) diff --git a/examples/graph-api/environment.yml b/examples/graph-api/environment.yml new file mode 100644 index 0000000000..1395c6958d --- /dev/null +++ b/examples/graph-api/environment.yml @@ -0,0 +1,9 @@ +name: max-repo +channels: + - pytorch + - https://conda.modular.com/max/ + - conda-forge + - defaults +dependencies: + - python>=3.11,<3.12 + - max>=24.4.0dev6 diff --git a/examples/graph-api/pixi.toml b/examples/graph-api/pixi.toml new file mode 100644 index 0000000000..0070a3f9de --- /dev/null +++ b/examples/graph-api/pixi.toml @@ -0,0 +1,15 @@ +[project] +name = "Mojo Graph API Examples" +version = "1.0.0" +description = "MAX Examples" +authors = ["Modular "] +channels = ["conda-forge", "https://conda.modular.com/max-nightly/"] +platforms = ["osx-arm64", "linux-aarch64", "linux-64"] + +[tasks] +basic = "mojo basics/basic.🔥" +test = { depends-on = ["basic"] } + +[dependencies] +python = ">=3.9,<3.13" +max = "*" diff --git a/examples/graph-api/requirements.txt b/examples/graph-api/requirements.txt new file mode 100644 index 0000000000..53f6a450c2 --- /dev/null +++ b/examples/graph-api/requirements.txt @@ -0,0 +1 @@ +huggingface_hub >=0.24.6,<0.25 diff --git a/examples/gui/.gitattributes b/examples/gui/.gitattributes new file mode 100644 index 0000000000..07fe41c52c --- /dev/null +++ b/examples/gui/.gitattributes @@ -0,0 +1,2 @@ +# GitHub syntax highlighting +pixi.lock linguist-language=YAML linguist-generated=true diff --git a/examples/gui/.gitignore b/examples/gui/.gitignore new file mode 100644 index 0000000000..a6184bd794 --- /dev/null +++ b/examples/gui/.gitignore @@ -0,0 +1 @@ +app.log diff --git a/examples/gui/.streamlit/config.toml b/examples/gui/.streamlit/config.toml new file mode 100644 index 0000000000..c6c5316861 --- /dev/null +++ b/examples/gui/.streamlit/config.toml @@ -0,0 +1,9 @@ +[client] +showSidebarNavigation = false + +[server] +runOnSave = true + +[theme] +base = "dark" +primaryColor = "#8799ff" diff --git a/examples/gui/README.md b/examples/gui/README.md new file mode 100644 index 0000000000..ddfb444417 --- /dev/null +++ b/examples/gui/README.md @@ -0,0 +1,13 @@ +# MAX Examples GUI + +Example project showing how to create a GUI that calls MAX using the Python +[streamlit](https://streamlit.io/) library. + +## Quick Start + +Install Magic and run the GUI: + +```bash +curl -fsSL https://developer.modular.com/magic | bash +magic run gui +``` diff --git a/examples/gui/home.py b/examples/gui/home.py new file mode 100755 index 0000000000..0b12b27b2d --- /dev/null +++ b/examples/gui/home.py @@ -0,0 +1,32 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +import streamlit as st +from shared import menu + +st.set_page_config("MAX", "⚡️") +menu() + +"""# MAX ⚡️ Examples + +Welcome to MAX! Select an example to get started: +""" + +if st.button("🦙 Llama3.1"): + st.switch_page("pages/llama3_1.py") +elif st.button("👓 BERT"): + st.switch_page("pages/bert.py") +elif st.button("🎨 Stable Diffusion 1.5"): + st.switch_page("pages/stable-diffusion.py") +elif st.button("🔍 YOLO"): + st.switch_page("pages/yolo.py") diff --git a/examples/gui/mojoproject.toml b/examples/gui/mojoproject.toml new file mode 100644 index 0000000000..272a71e3db --- /dev/null +++ b/examples/gui/mojoproject.toml @@ -0,0 +1,39 @@ +[project] +name = "gui" +version = "1.0.0" +channels = ["conda-forge", "https://conda.modular.com/max-nightly/"] +platforms = ["osx-arm64", "linux-aarch64", "linux-64"] + +[dependencies] +max = "*" +numpy = "1.25.2" +pillow = "<=10.4.0" +protobuf = "<=4.25.3" +tokenizers = "<0.21" +transformers = "<4.47" + +[pypi-dependencies] +pipelines = { path = "../../src/max", editable = true} +accelerate = "<=0.34.2" +diffusers = "<=0.30.3" +gguf = "<=0.10.0" +onnxruntime = "<=1.18.1" +onnxslim = "<=0.1.34" +opencv-python = "<=4.10.0.84" +sentencepiece = "<=0.2.0" +streamlit = "<=1.38.0" +torch = "<=2.5.1" +ultralytics = "<=8.2.103" + +# RAG specific packages +chromadb = "<=0.4.17" +docx2txt = "<=0.8" +EbookLib = "<=0.18" +fastembed = "<=0.3.6" +ftfy = "<=6.2.3" +html2text = "<=2024.2.26" +llama-index = "<=0.11.14" +nbconvert = "<=7.16.4" + +[tasks] +gui = "streamlit run home.py" diff --git a/examples/gui/pages/bert.py b/examples/gui/pages/bert.py new file mode 100644 index 0000000000..b5088e18da --- /dev/null +++ b/examples/gui/pages/bert.py @@ -0,0 +1,151 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + + +import os +import time + +import pandas as pd +import streamlit as st +import torch +from max import engine +from max.dtype import DType +from shared import menu, modular_cache_dir +from transformers import BertForMaskedLM, BertTokenizer + +st.set_page_config("Bert", page_icon="👓") +menu() + +""" +# 👓 Bert + +A basic implementation of Bert using MAX. Type a text string, using `[MASK]` to indicate where you want the model to predict a word. +""" + +HF_MODEL_NAME = "bert-base-uncased" + + +# If batch, seq_len, or mlm options change, recompile the torchscript. +@st.cache_data +def compile_torchscript(batch: int, seq_len: int): + model = BertForMaskedLM.from_pretrained(HF_MODEL_NAME) + input_dict = { + "input_ids": torch.zeros((batch, seq_len), dtype=torch.int64), + "attention_mask": torch.zeros((batch, seq_len), dtype=torch.int64), + "token_type_ids": torch.zeros((batch, seq_len), dtype=torch.int64), + } + model.eval() + model.config.return_dict = False + with torch.no_grad(): + traced_model = torch.jit.trace( + model, example_kwarg_inputs=dict(input_dict), strict=False + ) + torch.jit.save(traced_model, model_path) + + +@st.cache_resource(show_spinner="Starting MAX Bert Inference Session") +def max_bert_session(model_path: str, batch: int, seq_len: int): + # Wait short time for spinner to start correctly + time.sleep(1) + session = engine.InferenceSession() + inputs = [ + torch.zeros((batch, seq_len), dtype=torch.int64), + torch.zeros((batch, seq_len), dtype=torch.int64), + torch.zeros((batch, seq_len), dtype=torch.int64), + ] + input_spec_list = [ + engine.TorchInputSpec(shape=tensor.size(), dtype=DType.int64) + for tensor in inputs + ] + return session.load(model_path, input_specs=input_spec_list) + + +@st.cache_data() +def get_tokenizer(): + return BertTokenizer.from_pretrained(HF_MODEL_NAME) + + +def softmax(logits): + exp_logits = torch.exp(logits - torch.max(logits)) + return exp_logits / exp_logits.sum(dim=-1, keepdim=True) + + +model_state = st.empty() + +show_predictions = st.sidebar.checkbox("Show top 5 predictions", True) +model_path = st.sidebar.text_input( + "Model Path", + os.path.join(modular_cache_dir(), "bert-mlm.torchscript"), +) +batch = st.sidebar.number_input("Batch Size", 1, 64) +seq_len = st.sidebar.slider("Sequence Length", 128, 1024) +input_text = st.text_input("Text Input", "Don't [MASK] about it") + +compile_torchscript(batch, seq_len) + +if st.button("Predict Word"): + masks = input_text.split("[MASK]") + if len(masks) > 2: + st.error("Cannot have more than a single [MASK] in the input text") + exit(1) + if len(masks) < 2: + st.error("Require at least one [MASK] in the input text") + exit(1) + + model = max_bert_session(model_path, batch, seq_len) + + tokenizer = get_tokenizer() + inputs = tokenizer( + input_text, + return_tensors="pt", + padding="max_length", + truncation=True, + max_length=seq_len, + ) + + masked_index = (inputs["input_ids"] == tokenizer.mask_token_id).nonzero( + as_tuple=True + )[1] + + outputs = model.execute_legacy(**inputs)["result0"] + + logits = torch.from_numpy(outputs[0, masked_index, :]) + + predicted_token_id = logits.argmax(dim=-1) + predicted_tokens = tokenizer.decode( + [predicted_token_id], + skip_special_tokens=True, + clean_up_tokenization_spaces=True, + ) + + st.text_area( + "Filled Mask", input_text.replace("[MASK]", predicted_tokens, 40) + ) + + if show_predictions: + # Get top N predictions for the [MASK] token + top_n = 5 + mask_logits = logits.squeeze(0) # Remove batch dimension + top_n_probs, top_n_indices = torch.topk(softmax(mask_logits), top_n) + + top_n_tokens = tokenizer.convert_ids_to_tokens(top_n_indices.tolist()) + top_n_probs_percent = [prob * 100 for prob in top_n_probs.tolist()] + + # Create a dictionary for the bar chart data + data = {"Token": top_n_tokens, "Probability (%)": top_n_probs_percent} + + # Create a DataFrame for the table + top_n_df = pd.DataFrame(data) + + st.write("Top N predictions for [MASK]:") + st.bar_chart(top_n_df.set_index("Token")) # Display bar chart! diff --git a/examples/gui/pages/llama3_1.py b/examples/gui/pages/llama3_1.py new file mode 100644 index 0000000000..b467bc7792 --- /dev/null +++ b/examples/gui/pages/llama3_1.py @@ -0,0 +1,206 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # +import asyncio +import os +import time +from pathlib import Path + +import streamlit as st +import torch +from max.driver import CPU, Accelerator +from max.pipelines import ( + PIPELINE_REGISTRY, + PipelineConfig, + SupportedEncoding, +) +from max.pipelines.architectures.llama3.config import get_llama_huggingface_file +from shared import ( + RAG_PROMPT, + RAG_SYSTEM_PROMPT, + hf_streamlit_download, + load_embed_docs, + menu, + stream_output, +) + +st.set_page_config(page_title="Llama3.1", page_icon="🦙") + +""" +# Llama3.1 🦙 + +Compile and cache Llama3.1 built with MAX graphs so you can continuously +chat with it. + +Tick `Activate RAG` on the sidebar to augment your prompts with +text from documents in the `examples/gui/ragdata` folder in format: `.txt` +`.pdf` `.csv` `.docx` `.epub` `.ipynb` `.md` `.html`. +""" + +menu() + + +@st.cache_resource(show_spinner=False) +def start_llama3( + weight_path: str, + quantization: SupportedEncoding, + max_length: int, + max_new_tokens: int, + use_gpu: bool, +) -> Llama3: + config = PipelineConfig( + architecture="LlamaForCausalLM", + device=Accelerator() if use_gpu else CPU(), + weight_path=[Path(weight_path)], + quantization_encoding=quantization, + max_length=max_length, + max_new_tokens=max_new_tokens, + model_path="modularai/Llama-3.1-8B-Instruct-GGUF", + ) + _, pipeline = PIPELINE_REGISTRY.retrieve_factory(config) + return pipeline + + +def messages_to_llama3_prompt(messages: list[dict[str, str]]) -> str: + prompt_string = "<|begin_of_text|>" + for message in messages: + prompt_string += ( + f"<|start_header_id|>{message['role']}<|end_header_id|>\n\n" + ) + prompt_string += f"{message['content']}<|eot_id|>\n" + prompt_string += "<|start_header_id|>assistant<|end_header_id|>" + return prompt_string + + +if torch.cuda.is_available(): + use_gpu = st.sidebar.checkbox( + f"Use GPU: {torch.cuda.get_device_name(0)}", value=True + ) +else: + use_gpu = st.sidebar.checkbox( + "Use GPU (Accelerator not available)", value=False, disabled=True + ) + +if use_gpu: + encoding = st.sidebar.selectbox("Encoding", [SupportedEncoding.bfloat16]) +else: + encoding = st.sidebar.selectbox( + "Encoding", + [ + SupportedEncoding.q4_k, + SupportedEncoding.q4_0, + SupportedEncoding.q6_k, + ], + ) + +max_length = st.sidebar.number_input( + "Max input and output tokens", 0, 128_000, 12_000 +) +max_new_tokens = st.sidebar.number_input("Max output tokens", 0, 24_000, 6000) + +hf_file = get_llama_huggingface_file("3.1", encoding) +weights = hf_streamlit_download(hf_file.repo_id, hf_file.filename) + +button_state = st.empty() +model_state = st.empty() +if button_state.button("Start Llama3", key=0): + model_state.info("Starting Llama3...", icon="️⚙️") + st.session_state["model"] = start_llama3( + weights, + encoding, + max_length, + max_new_tokens, + use_gpu, + ) + model_state.success("Llama3 is ready!", icon="✅") + +rag = st.sidebar.checkbox("Activate RAG", value=False) + +if rag: + system_prompt = st.sidebar.text_area( + "System Prompt", + value=RAG_SYSTEM_PROMPT, + ) + n_result = st.sidebar.slider( + "Number of Top Embedding Search Results", 1, 7, 5 + ) + rag_directory = st.sidebar.text_input( + "RAG Directory", + value=Path(__file__).parent.parent / "ragdata", + ) + filenames = [ + f + for f in os.listdir(rag_directory) + if os.path.isfile(os.path.join(rag_directory, f)) + ] + # Re-cache reading the documents again if there's a change + collection, embedding_model = load_embed_docs(filenames) + st.success("RAG data is indexed", icon="✅") +else: + system_prompt = st.sidebar.text_area( + "System Prompt", + value="You are a helpful coding assistant named MAX Llama3.", + ) + +# Initialize chat history +if "messages" not in st.session_state: + st.session_state.messages = [] + +# Display chat messages from history on app rerun +for message in st.session_state.messages: + with st.chat_message(message["role"], avatar=message["avatar"]): + st.markdown(message["content"]) + + +disable_chat = True if "model" not in st.session_state else False + +if prompt := st.chat_input("Send a message to llama3", disabled=disable_chat): + messages = [{"role": "system", "content": system_prompt}] + messages += [ + {"role": m["role"], "content": m["content"]} + for m in st.session_state.messages + ] + if rag: + query_embedding = list(embedding_model.embed(prompt))[0].tolist() + ret = collection.query(query_embedding, n_results=n_result) + data = [] + if ret["documents"] is not None and ret["metadatas"] is not None: + for i, (doc, metadata) in enumerate( + zip(ret["documents"], ret["metadatas"]) + ): + data.append(("\n\n".join(doc), metadata[0]["file_name"])) + messages.append( + { + "role": "user", + "content": RAG_PROMPT.format(query=prompt, data=data), + } + ) + else: + messages.append({"role": "user", "content": prompt}) + + with st.chat_message("user", avatar="💬"): + st.markdown(prompt) + + prompt_string = messages_to_llama3_prompt(messages) + + # Sleep short time so prior messages refresh and don't go dark + time.sleep(0.1) + + with st.chat_message("assistant", avatar="🦙"): + response = asyncio.run( + stream_output(st.session_state["model"], prompt_string) + ) + + st.session_state.messages += [ + {"role": "user", "avatar": "💬", "content": prompt}, + {"role": "assistant", "avatar": "🦙", "content": response}, + ] diff --git a/examples/gui/pages/stable-diffusion.py b/examples/gui/pages/stable-diffusion.py new file mode 100644 index 0000000000..efb787cf5a --- /dev/null +++ b/examples/gui/pages/stable-diffusion.py @@ -0,0 +1,136 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +import time +from pathlib import Path + +import numpy as np +import streamlit as st +from diffusers.schedulers.scheduling_pndm import PNDMScheduler +from max.engine import InferenceSession +from PIL import Image +from shared import hf_streamlit_download, menu +from transformers.models.clip.tokenization_clip import CLIPTokenizer + +st.set_page_config("Stable Diffusion 1.5", page_icon="🎨") + +menu() + +"""# 🎨 Stable Diffusion 1.5""" + + +@st.cache_data +def load_tokenizer(path): + return CLIPTokenizer.from_pretrained(path) + + +num_steps = st.sidebar.number_input("Number of steps", 1, 100, 15) +seed = st.sidebar.number_input("Seed", 0, 255) +guidance_scale_factor = st.sidebar.number_input( + "Guidance Scale Factor", 0.0, 10.0, 7.5 +) +latent_scale_factor = st.sidebar.number_input( + "Latent Scale Factor", 0.0, 1.0, 0.18215 +) +output_height = st.sidebar.number_input("Output Height", 0, 2048, 512) +output_width = st.sidebar.number_input("Output Width", 0, 2048, 512) +latent_width = output_width // 8 +latent_height = output_height // 8 +latent_channels = 4 + +model_dir = Path(hf_streamlit_download("modularai/stable-diffusion-1.5-onnx")) + +text_encoder_path = model_dir / "text_encoder" / "model.onnx" +img_decoder_path = model_dir / "vae_decoder" / "model.onnx" +img_diffuser_path = model_dir / "unet" / "model.onnx" +scheduler_path = model_dir / "scheduler" / "scheduler_config.json" +tokenizer_path = model_dir / "tokenizer" + +prompt = st.text_input("Prompt", "A puppy playing the drums") +negative_prompt = st.text_input("Negative Prompt", "No overlapping geometry") + +if seed > 0: + np.random.seed(seed) + +if st.button("Generate Image"): + with st.spinner("Compiling models, faster after first run..."): + # Need a small delay so the spinner starts correctly + time.sleep(1) + session = InferenceSession() + txt_encoder = session.load(text_encoder_path) + img_decoder = session.load(img_decoder_path) + img_diffuser = session.load(img_diffuser_path) + + with st.spinner("Processing Input"): + tokenizer = load_tokenizer(tokenizer_path) + prompt_p = tokenizer( + prompt, padding="max_length", max_length=tokenizer.model_max_length + ) + prompt_n = tokenizer( + negative_prompt, + padding="max_length", + max_length=tokenizer.model_max_length, + ) + input_ids = np.stack((prompt_p.input_ids, prompt_n.input_ids)).astype( + np.int32 + ) + encoder_hidden_states = txt_encoder.execute_legacy(input_ids=input_ids)[ + "last_hidden_state" + ] + + with st.spinner("Initializing Latent"): + scheduler = PNDMScheduler.from_pretrained(scheduler_path) + + # Note: For onnx, shapes are given in NCHW format. + latent = np.random.normal( + size=(1, latent_channels, latent_height, latent_width) + ) + latent = latent * scheduler.init_noise_sigma + latent = latent.astype(np.float32) + + # Loop through diffusion model. + scheduler.set_timesteps(num_steps) + progress_bar = st.progress(0.0, "Step 1/25") + for i, t in enumerate(scheduler.timesteps): + progress_bar.progress(i / num_steps, f"Step {i}/{num_steps}") + if i == num_steps: + progress_bar.progress(1.0, "Complete!") + + # Duplicate input and scale based on scheduler. + sample = np.vstack((latent, latent)) + sample = scheduler.scale_model_input(sample, timestep=t) + + # Execute the diffusion model with bs=2. Both batches have same primary input and + # timestep, but the encoder_hidden_states (primary prompt vs negative) differs. + noise_pred = img_diffuser.execute_legacy( + sample=sample, + encoder_hidden_states=encoder_hidden_states, + timestep=np.array([t], dtype=np.int64), + )["out_sample"] + + # Merge conditioned & unconditioned outputs. + noise_pred_text, noise_pred_uncond = np.split(noise_pred, 2) + noise_pred = noise_pred_uncond + guidance_scale_factor * ( + noise_pred_text - noise_pred_uncond + ) + + # Merge latent with previous iteration. + latent = scheduler.step(noise_pred, t, latent).prev_sample + + # Decode finalized latent. + with st.spinner("Decoding Image"): + latent = latent * (1 / latent_scale_factor) + decoded = img_decoder.execute_legacy(latent_sample=latent)["sample"] + image = np.clip(decoded / 2 + 0.5, 0, 1).squeeze() + image = (image.transpose(1, 2, 0) * 255).astype(np.uint8) + st.image(Image.fromarray(image, "RGB")) diff --git a/examples/gui/pages/yolo.py b/examples/gui/pages/yolo.py new file mode 100644 index 0000000000..11e2a2dde4 --- /dev/null +++ b/examples/gui/pages/yolo.py @@ -0,0 +1,178 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +import os +import time +from pathlib import Path + +import cv2 +import numpy as np +import streamlit as st +import torch +from max import engine +from shared import menu, modular_cache_dir +from ultralytics import YOLO +from ultralytics.engine.results import Results +from ultralytics.models.yolo.segment.predict import ops + +st.set_page_config("YOLO", page_icon="🔍") +menu() + +""" +# 🔍 YOLO Segmentation + +Segment objects using your webcam. This downloads and converts YOLOv8n to +ONNX, then compiles it with MAX for faster inference! +""" + +# First do a quick check to see if a webcam is available +capture = cv2.VideoCapture(cv2.CAP_ANY) +if capture.isOpened(): + capture.release() +else: + st.error("This example is only available on a local machine with a webcam") + exit() + + +@st.cache_data(show_spinner="Downloading YOLO and exporting to ONNX") +def download_and_export_yolo(model_path, height, width): + model = YOLO(model_path) + model.export(format="onnx", imgsz=(height, width), simplify=True) + return model.names + + +@st.cache_resource(show_spinner="Starting MAX Inference Session") +def max_yolo_session(onnx_path): + # Have to sleep for a short time for the spinner to start correctly + time.sleep(1) + session = engine.InferenceSession() + return session.load(onnx_path) + + +def resize_and_pad(image, shape): + # Grab shape sizes. + (h, w, _) = image.shape + (target_h, target_w) = shape + + # Resize to fully fit within `shape`. + min_ratio = min(target_h / h, target_w / w) + unpadded_h = int(round(min_ratio * h)) + unpadded_w = int(round(min_ratio * w)) + image = cv2.resize( + image, (unpadded_w, unpadded_h), interpolation=cv2.INTER_LINEAR + ) + + # Pad to be the same size as `shape`. + delta_h = (target_h - unpadded_h) / 2 + delta_w = (target_w - unpadded_w) / 2 + top, bottom = int(round(delta_h - 0.1)), int(round(delta_h + 0.1)) + left, right = int(round(delta_w - 0.1)), int(round(delta_w + 0.1)) + return cv2.copyMakeBorder( + image, + top, + bottom, + left, + right, + cv2.BORDER_CONSTANT, + value=(114, 114, 114), + ) + + +def postprocess(out0, out1, input, frame, class_names): + out0 = torch.from_numpy(out0) + out1 = torch.from_numpy(out1) + + pred = ops.non_max_suppression( + out0, + conf_thres=0.25, + iou_thres=0.70, + agnostic=False, + max_det=10, + nc=len(class_names), + classes=None, + )[0] + + if not len(pred): + result = Results( + orig_img=frame, + path="", + names=class_names, + boxes=pred[:, :6], + ) + else: + masks = ops.process_mask( + out1[0], + pred[:, 6:], + pred[:, :4], + input.shape[2:], + upsample=True, + ) # HWC + pred[:, :4] = ops.scale_boxes(input.shape[2:], pred[:, :4], frame.shape) + result = Results( + orig_img=frame, + path="", + names=class_names, + boxes=pred[:, :6], + masks=masks, + ) + return result + + +model_path = st.sidebar.text_input( + "Model Path", + os.path.join(modular_cache_dir(), "yolov8n-seg.pt"), +) +onnx_path = Path(os.path.dirname(model_path)) / "yolov8n-seg.onnx" +width = st.sidebar.number_input("Image Width", 64, 2048, 640) +height = st.sidebar.number_input("Image Height", 64, 2048, 480) + +class_names = download_and_export_yolo(model_path, height, width) +yolo = max_yolo_session(onnx_path) + +previous_elapsed_ms = [] + +frame_window = st.image([]) +camera = cv2.VideoCapture(0) + +button_placeholder = st.empty() +if button_placeholder.button("Start Webcam"): + button_placeholder.empty() + while True: + _, img = camera.read() + img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) + img = resize_and_pad(img, (height, width)) + # Preprocess inputs. + input = ( + img[np.newaxis, :, :, ::-1].transpose(0, 3, 1, 2).astype(np.float32) + / 255 + ).copy() + start = time.time() + outputs = list(yolo.execute_legacy(images=input).values()) + elapsed_ms = (time.time() - start) * 1000 + result = postprocess(outputs[0], outputs[1], input, img, class_names) + img = result.plot() + # Calculated average fps and update window title. + # global previous_elapsed_ms + previous_elapsed_ms.append(elapsed_ms) + previous_elapsed_ms = previous_elapsed_ms[-100:] + fps = 1000.0 / np.average(previous_elapsed_ms) + img = cv2.putText( + img, + f"FPS: {int(fps)}", + org=(50, 50), + fontFace=cv2.FONT_HERSHEY_COMPLEX, + fontScale=1, + color=(255, 0, 0), + thickness=2, + ) + frame_window.image(img) diff --git a/examples/gui/ragdata/mojo_functions.txt b/examples/gui/ragdata/mojo_functions.txt new file mode 100644 index 0000000000..f053dcb669 --- /dev/null +++ b/examples/gui/ragdata/mojo_functions.txt @@ -0,0 +1,28 @@ +# Mojo Functions + +Mojo functions can be declared with either fn or def. + +The fn declaration enforces type-checking and memory-safe behaviors (Rust style), while def allows no type declarations and dynamic behaviors (Python style). + +For example, this def function doesn't require declaration of argument types or the return type: + +```mojo +def greet(name): + return "Hello, " + name + "!" +``` + +While the same thing as an fn function requires that you specify the argument type and the return type like this: + +```mojo +fn greet2(name: String) -> String: + return "Hello, " + name + "!" +``` + +Both functions have the same result, but the fn function provides compile-time checks to ensure the function receives and returns the correct types. Whereas, the def function might fail at runtime if it receives the wrong type. + +Currently, Mojo doesn't support top-level code in a .mojo (or .🔥) file, so every program must include a function named main() as the entry point. You can declare it with either def or fn: + +```mojo +def main(): + print("Hello, world!") +``` diff --git a/examples/gui/shared.py b/examples/gui/shared.py new file mode 100644 index 0000000000..0f3bca2c3e --- /dev/null +++ b/examples/gui/shared.py @@ -0,0 +1,282 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +import os +import threading +import time +from functools import wraps +from pathlib import Path +from typing import List + +import chromadb +import streamlit as st +from chromadb.config import Settings +from fastembed import TextEmbedding +from gguf import Union +from huggingface_hub import hf_hub_download, snapshot_download +from llama_index.core import SimpleDirectoryReader +from max.pipelines import TokenGenerator +from streamlit.runtime.scriptrunner import ( + add_script_run_ctx, + get_script_run_ctx, +) +from tqdm.auto import tqdm + +RAG_SYSTEM_PROMPT = """You are a helpful document search assistant. +Your task is to find an answer to user's query about their given documentation. +DO NOT HALLUCINATE.""" + +RAG_PROMPT = """Answer the users query: {query} using the provided context: {data}. +If you don't have an answer say 'I don't know!' +Make sure to include the filename of any document you use to answer the query. + +## GO""" + + +def menu(): + st.sidebar.page_link("home.py", label="️Home", icon="⚡️") + st.sidebar.page_link("pages/llama3_1.py", label="Llama3.1", icon="🦙") + st.sidebar.page_link("pages/bert.py", label="Bert", icon="👓") + st.sidebar.page_link("pages/yolo.py", label="YOLO", icon="🔍") + st.sidebar.page_link( + "pages/stable-diffusion.py", label="Stable Diffusion 1.5", icon="🎨" + ) + + +def modular_cache_dir() -> str: + cache_folder = os.getenv("XDG_CACHE_PATH", str(Path.home() / ".cache")) + modular_dir = os.path.join(cache_folder, "modular") + os.makedirs(modular_dir, exist_ok=True) + return modular_dir + + +def format_time(seconds): + """Return a pretty format based on how much time is left.""" + hours, remainder = divmod(seconds, 3600) + minutes, seconds = divmod(remainder, 60) + if hours > 0: + return f"{int(hours)}h {int(minutes)}m {int(seconds)}s" + elif minutes > 0: + return f"{int(minutes)}m {int(seconds)}s" + else: + return f"{int(seconds)}s" + + +tqdm_patched = False + + +def hf_streamlit_download(repo_id: str, filename: str = "") -> str: + """Patch tqdm to update st.progress bars, uses `hf_hub_download` if + a `repo_id` and `filename` is provided, otherwise uses `snapshot_download`. + """ + global tqdm_patched + if not tqdm_patched: + tqdm_patched = True + patch_tqdm() + + if filename: + return hf_hub_download(repo_id, filename) + + return snapshot_download(repo_id) + + +# TODO: raise patch to `huggingface_hub` to see if they'd be interested in this +# as a class that inherits from tqdm, which can be installed with +# huggingface_hub[streamlit] +def patch_tqdm(): + """Monkey patches tqdm to update st.progress bars. `hf_hub_download` and + `snapshot_download` use tqdm, so this is a way to hook into the progress + of each file download and display it on the GUI. We need to pass the + script context so other threads can communicate with the main thread, + when interacting with streamlit elements.""" + progress_bars = {} + ctx = get_script_run_ctx() + + def patch_update(original): + @wraps(original) + def wrapper(self, n=1): + # Return early if tqdm instance is describing how many files + # will be downloaded. + if self.desc.startswith("Fetching"): + return + + if self.n is not None and self.total is not None: + # Convert everything to MB + downloaded = self.n / 1024 / 1024 + total = self.total / 1024 / 1024 + speed = ( + self.format_dict["rate"] / 1024 / 1024 + if self.format_dict["rate"] + else 0.0 + ) + if speed != 0: + time_left = format_time((total - downloaded) / speed) + else: + time_left = "N/A" + # Only create/update progress bar if the download is in progress to skip small files + if time_left != "N/A": + add_script_run_ctx(threading.currentThread(), ctx) + if self.pos not in progress_bars: + progress_bars[self.pos] = st.empty() + progress_bar = progress_bars[self.pos] + status = ( + f"{self.desc}: {int(downloaded)}/{int(total)} MB Speed:" + f" {speed:.2f} MB/s Remaining: {time_left}" + ) + progress_bar.progress(downloaded / total, status) + return original(self, n) + + return wrapper + + def patch_del(original): + @wraps(original) + def wrapper(self, *args, **kwargs): + if self.pos in progress_bars: + progress_bars[self.pos].empty() + del progress_bars[self.pos] + + return original(self, *args, **kwargs) + + return wrapper + + tqdm.update = patch_update(tqdm.update) + tqdm.__del__ = patch_del(tqdm.__del__) + + +@st.cache_resource(show_spinner=False) +def load_embed_docs(docs_filenames: List[str]): + """Loads documents from `./ragdir` and embeds them to chromadb + using a text embedding model. + """ + with st.spinner("Loading RAG data..."): + docs = SimpleDirectoryReader("./ragdata").load_data() + client = chromadb.Client(Settings(anonymized_telemetry=False)) + collection = client.get_or_create_collection( + "max-rag-example", metadata={"hnsw:space": "cosine"} + ) + embedding_model = TextEmbedding() + + for i, doc in enumerate(docs): + embedding = list(embedding_model.embed(doc.text))[0].tolist() + collection.upsert( + documents=doc.text, + embeddings=embedding, + ids=[str(i)], + metadatas=[doc.metadata], + ) + + return collection, embedding_model + + +# Generate metrics for streamlit +class TextGenerationMetrics: + """Metrics capturing and reporting for a text generation pipeline.""" + + prompt_size: int + output_size: int + startup_time: Union[float, str] + time_to_first_token: Union[float, str] + prompt_eval_throughput: Union[float, str] + eval_throughput: Union[float, str] + + _start_time: float + _signposts: dict[str, float] + + def __init__(self): + self.signposts = {} + self.prompt_size = 0 + self.output_size = 0 + self.start_time = time.time() + + def signpost(self, name: str): + """Measure the current time and tag it with a name for later reporting.""" + self.signposts[name] = time.time() + + def new_token(self): + """Report that a new token has been generated.""" + self.output_size += 1 + + def calculate_results(self): + end_generation = time.time() + begin_generation = self.signposts.get("begin_generation") + if begin_generation: + self.startup_time = ( + self.signposts["begin_generation"] - self.start_time + ) * 1000.0 + else: + self.startup_time = "n/a" + + first_token = self.signposts.get("first_token") + if first_token and begin_generation: + self.time_to_first_token = ( + self.signposts["first_token"] + - self.signposts["begin_generation"] + ) * 1000.0 + else: + self.time_to_first_token = "n/a" + + st.sidebar.metric( + "Input/Output Tokens", + value=f"{self.prompt_size}/{self.output_size}", + ) + st.sidebar.metric( + "Time to first token", value=f"{self.time_to_first_token:.2f} ms" + ) + + if first_token and begin_generation: + generation_time = end_generation - self.signposts["first_token"] + assert isinstance(self.time_to_first_token, float) + self.prompt_eval_throughput = self.prompt_size / ( + self.time_to_first_token / 1000.0 + ) + self.eval_throughput = (self.output_size - 1) / generation_time + st.sidebar.metric( + "Prompt eval throughput (context-encoding):", + value=f"{self.prompt_eval_throughput:.2f} tokens/s", + ) + st.sidebar.metric( + "Eval throughput (token-generation):", + value=f"{self.eval_throughput:.2f} tokens/s", + ) + + +async def stream_output(model: TokenGenerator, prompt: str) -> str: + metrics = TextGenerationMetrics() + context = model.new_context(prompt) + prompt_size = context.current_length + + response_display = st.empty() + response_str = "" + + if metrics: + metrics.prompt_size = prompt_size + metrics.signpost("begin_generation") + + is_first_token = True + request_id = str(id(prompt)) + while True: + response = model.next_token({request_id: context}, num_steps=1)[0] + if request_id not in response: + break + response_str += response[request_id] + response_display.markdown(response_str) + if metrics: + if is_first_token: + is_first_token = False + metrics.signpost("first_token") + metrics.new_token() + if metrics: + metrics.signpost("end_generation") + + metrics.calculate_results() + return response_str diff --git a/examples/inference/README.md b/examples/inference/README.md new file mode 100644 index 0000000000..7903926872 --- /dev/null +++ b/examples/inference/README.md @@ -0,0 +1,18 @@ +# PyTorch and ONNX inference in MAX + +MAX can accelerate the inference of existing PyTorch or ONNX models. These +examples show several common PyTorch or ONNX models running in MAX through the +Mojo, Python, and C APIs: + +## PyTorch (via TorchScript) + +- BERT, [with the Mojo API](./bert-mojo-torchscript/), +[with the Python API](./bert-python-torchscript/), +and [with the C API](./bert-c-torchscript/) +- [ResNet50 with the Python API](./resnet50-python-torchscript/) + +## ONNX + +- Stable Diffusion, [with the Mojo API](./stable-diffusion-mojo-onnx/) and +[with the Python API](./stable-diffusion-python-onnx/) +- [YOLOv8 with the Python API](./yolo-python-onnx/) diff --git a/examples/inference/bert-c-torchscript/.gitignore b/examples/inference/bert-c-torchscript/.gitignore new file mode 100644 index 0000000000..2f2295c1a6 --- /dev/null +++ b/examples/inference/bert-c-torchscript/.gitignore @@ -0,0 +1,7 @@ +# Binaries generated +inputs +outputs.bin + +# Don't check in / version control the downloaded model +*.pt +*.torchscript diff --git a/examples/inference/bert-c-torchscript/CMakeLists.txt b/examples/inference/bert-c-torchscript/CMakeLists.txt new file mode 100644 index 0000000000..650f7040be --- /dev/null +++ b/examples/inference/bert-c-torchscript/CMakeLists.txt @@ -0,0 +1,22 @@ +##===----------------------------------------------------------------------===## +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +##===----------------------------------------------------------------------===## + +cmake_minimum_required(VERSION 3.24) + +project(max-examples LANGUAGES C) + +list(APPEND CMAKE_MODULE_PATH "$ENV{MAX_PKG_DIR}/lib/cmake") +include(AddMaxEngine) + +add_executable(bert main.c) +target_link_libraries(bert PUBLIC max-engine) diff --git a/examples/inference/bert-c-torchscript/README.md b/examples/inference/bert-c-torchscript/README.md new file mode 100644 index 0000000000..f7d6f9d490 --- /dev/null +++ b/examples/inference/bert-c-torchscript/README.md @@ -0,0 +1,69 @@ +# TorchScript BERT inference with C + +This directory includes scripts used to run simple BERT inference via the MAX +Engine C API to predict the sentiment of the given text. + +## Quickstart + +For this example, you need a cmake installed on your system and a C compiler. + +### Magic instructions + +If you have [`magic`](https://docs.modular.com/magic), you can run the +following command: + +```sh +magic run bash run.sh +``` + +### Conda instructions + +Create a Conda environment, activate that environment, and install the +requirements: + +```sh +# Create a Conda environment if you don't have one +conda create -n max-repo +# Update the environment with the environment.yml file +conda env update -n max-repo -f environment.yml --prune +# Run the example +conda run -n max-repo --live-stream bash run.sh +``` + +## Scripts included + +- `pre-process.py`: Prepares an example input and saves the pre-processed input +to a local directory, for use use in the `main.c` program. Example: + + ```sh + python3 pre-process.py --text "Paris is the [MASK] of France." + ``` + +- `post-process.py`: Loads the generated output, post-processes it, and outputs +the prediction. Example: + + ```sh + python3 post-process.py + ``` + +## Building the example + +This example uses CMake. To build the executable, please use the following +commands: + +```sh +export MAX_PKG_DIR=`modular config max.path` +cmake -B build -S . +cmake --build build +``` + +The executable is called `bert` and will be present in the build directory. + +## Usage + +```sh +python3 ../common/bert-torchscript/download-model.py +python3 pre-process.py --text "Your text" +./build/bert ../../models/bert.torchscript +python3 post-process.py +``` diff --git a/examples/inference/bert-c-torchscript/environment.yml b/examples/inference/bert-c-torchscript/environment.yml new file mode 100644 index 0000000000..13c6313bfc --- /dev/null +++ b/examples/inference/bert-c-torchscript/environment.yml @@ -0,0 +1,8 @@ +name: max-repo +channels: + - https://conda.modular.com/max-nightly/ + - conda-forge +dependencies: + - python>=3.9,<3.13 + - max + - pip>=24.0,<25 diff --git a/examples/inference/bert-c-torchscript/main.c b/examples/inference/bert-c-torchscript/main.c new file mode 100644 index 0000000000..5c277174bc --- /dev/null +++ b/examples/inference/bert-c-torchscript/main.c @@ -0,0 +1,222 @@ +/******************************************************************************* + * Copyright (c) 2025, Modular Inc. All rights reserved. + * + * Licensed under the Apache License v2.0 with LLVM Exceptions: + * https://llvm.org/LICENSE.txt + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *******************************************************************************/ + +#include "max/c/common.h" +#include "max/c/context.h" +#include "max/c/model.h" +#include "max/c/pytorch/config.h" +#include "max/c/tensor.h" +#include "max/c/value.h" + +#include +#include +#include + +void logHelper(const char *level, const char *message, const char delimiter) { + printf("%s: %s%c", level, message, delimiter); +} +void logDebug(const char *message) { logHelper("DEBUG", message, ' '); } +void logInfo(const char *message) { logHelper("INFO", message, '\n'); } +void logError(const char *message) { logHelper("ERROR", message, '\n'); } + +#define CHECK(x) \ + if (M_isError(x)) { \ + logError(M_getError(x)); \ + return EXIT_FAILURE; \ + } + +// Read file at the given path. On failure abort. +char *readFileOrExit(const char *filepath) { + FILE *file; + file = fopen(filepath, "rb"); + if (!file) { + printf("failed to open %s. Aborting.\n", filepath); + abort(); + } + fseek(file, 0, SEEK_END); + long fileSize = ftell(file); + rewind(file); + + char *buffer = (char *)malloc(fileSize * sizeof(char)); + size_t count = fread(buffer, fileSize, 1, file); + if (count != 1) { + printf("failed to read %s. Aborting.\n", filepath); + abort(); + } + fclose(file); + return buffer; +} + +int main(int argc, char **argv) { + if (argc != 2) { + printf("Usage: bert "); + return EXIT_FAILURE; + } + + M_Status *status = M_newStatus(); + + M_RuntimeConfig *runtimeConfig = M_newRuntimeConfig(); + M_RuntimeContext *context = M_newRuntimeContext(runtimeConfig, status); + CHECK(status); + + logInfo("Compiling Model"); + M_CompileConfig *compileConfig = M_newCompileConfig(); + const char *modelPath = argv[1]; + M_setModelPath(compileConfig, /*path=*/modelPath); + + logInfo("Setting InputSpecs for compilation"); + int64_t *inputIdsShape = + (int64_t *)readFileOrExit("inputs/input_ids_shape.bin"); + M_TorchInputSpec *inputIdsInputSpec = + M_newTorchInputSpec(inputIdsShape, /*dimNames=*/NULL, /*rankSize=*/2, + /*type=*/M_INT32, /*device=*/"", status); + CHECK(status); + + int64_t *attentionMaskShape = + (int64_t *)readFileOrExit("inputs/attention_mask_shape.bin"); + M_TorchInputSpec *attentionMaskInputSpec = + M_newTorchInputSpec(attentionMaskShape, /*dimNames=*/NULL, /*rankSize=*/2, + /*type=*/M_INT32, /*device=*/"", status); + CHECK(status); + + int64_t *tokenTypeIdsShape = + (int64_t *)readFileOrExit("inputs/token_type_ids_shape.bin"); + M_TorchInputSpec *tokenTypeIdsInputSpec = + M_newTorchInputSpec(tokenTypeIdsShape, /*dimNames=*/NULL, /*rankSize=*/2, + /*type=*/M_INT32, /*device=*/"", status); + CHECK(status); + + M_TorchInputSpec *inputSpecs[3] = {inputIdsInputSpec, attentionMaskInputSpec, + tokenTypeIdsInputSpec}; + M_setTorchInputSpecs(compileConfig, inputSpecs, 3); + + M_AsyncCompiledModel *compiledModel = + M_compileModel(context, &compileConfig, status); + CHECK(status); + + logInfo("Initializing Model"); + M_AsyncModel *model = + M_initModel(context, compiledModel, /*weightsRegistry=*/NULL, status); + CHECK(status); + + logInfo("Waiting for model compilation to finish"); + M_waitForModel(model, status); + CHECK(status); + + logInfo("Inspecting model metadata"); + size_t numInputs = M_getNumModelInputs(compiledModel, status); + CHECK(status); + printf("Num inputs: %ld\n", numInputs); + + M_TensorNameArray *tensorNames = M_getInputNames(compiledModel, status); + CHECK(status); + logDebug("Model input names:"); + for (size_t i = 0; i < numInputs; i++) { + const char *tensorName = M_getTensorNameAt(tensorNames, i); + printf("%s ", tensorName); + } + printf("\n"); + + logInfo("Preparing inputs..."); + M_AsyncTensorMap *inputToModel = M_newAsyncTensorMap(context); + + M_TensorSpec *inputIdsSpec = + M_newTensorSpec(inputIdsShape, /*rankSize=*/2, /*dtype=*/M_INT32, + /*tensorName=*/"input_ids"); + int32_t *inputIdsTensor = (int32_t *)readFileOrExit("inputs/input_ids.bin"); + M_borrowTensorInto(inputToModel, inputIdsTensor, inputIdsSpec, status); + CHECK(status); + + M_TensorSpec *attentionMaskSpec = + M_newTensorSpec(attentionMaskShape, /*rankSize=*/2, /*dtype=*/M_INT32, + /*tensorName=*/"attention_mask"); + int32_t *attentionMaskTensor = + (int32_t *)readFileOrExit("inputs/attention_mask.bin"); + M_borrowTensorInto(inputToModel, attentionMaskTensor, attentionMaskSpec, + status); + CHECK(status); + + M_TensorSpec *tokenTypeIdsSpec = + M_newTensorSpec(tokenTypeIdsShape, /*rankSize=*/2, /*dtype=*/M_INT32, + /*tensorName=*/"token_type_ids"); + int32_t *tokenTypeIdsTensor = + (int32_t *)readFileOrExit("inputs/token_type_ids.bin"); + M_borrowTensorInto(inputToModel, tokenTypeIdsTensor, tokenTypeIdsSpec, + status); + CHECK(status); + + logInfo("Running Inference..."); + M_AsyncTensorMap *outputs = + M_executeModelSync(context, model, inputToModel, status); + CHECK(status); + + M_AsyncValue *resultValue = + M_getValueByNameFrom(outputs, /*tensorName=*/"result0", status); + CHECK(status); + + logInfo("Extracting output values"); + // Convert the value we found to a tensor and save it to disk. + M_AsyncTensor *result = M_getTensorFromValue(resultValue); + size_t numElements = M_getTensorNumElements(result); + printf("Tensor size: %ld\n", numElements); + M_Dtype dtype = M_getTensorType(result); + const char *outputFilePath = "outputs.bin"; + FILE *file = fopen(outputFilePath, "wb"); + if (!file) { + printf("failed to open %s. Aborting.\n", outputFilePath); + return EXIT_FAILURE; + } + fwrite(M_getTensorData(result), M_sizeOf(dtype), numElements, file); + fclose(file); + + // free memory buffers + free(tokenTypeIdsTensor); + free(attentionMaskTensor); + free(inputIdsTensor); + + free(tokenTypeIdsShape); + free(attentionMaskShape); + free(inputIdsShape); + + // free resources + M_freeTensor(result); + + M_freeValue(resultValue); + + M_freeAsyncTensorMap(outputs); + + M_freeTensorSpec(tokenTypeIdsSpec); + M_freeTensorSpec(attentionMaskSpec); + M_freeTensorSpec(inputIdsSpec); + + M_freeAsyncTensorMap(inputToModel); + + M_freeTensorNameArray(tensorNames); + + M_freeModel(model); + + M_freeCompileConfig(compileConfig); + M_freeCompiledModel(compiledModel); + + M_freeTorchInputSpec(tokenTypeIdsInputSpec); + M_freeTorchInputSpec(attentionMaskInputSpec); + M_freeTorchInputSpec(inputIdsInputSpec); + + M_freeCompileConfig(compileConfig); + M_freeRuntimeContext(context); + + M_freeStatus(status); + + logInfo("Inference successfully completed"); + return EXIT_SUCCESS; +} diff --git a/examples/inference/bert-c-torchscript/pixi.toml b/examples/inference/bert-c-torchscript/pixi.toml new file mode 100644 index 0000000000..eae282bdfe --- /dev/null +++ b/examples/inference/bert-c-torchscript/pixi.toml @@ -0,0 +1,25 @@ +[project] +name = "BERT C Torchscript" +version = "1.0.0" +description = "MAX Examples" +authors = ["Modular "] +channels = ["conda-forge", "https://conda.modular.com/max-nightly/", "pytorch"] +platforms = ["osx-arm64", "linux-aarch64", "linux-64"] + +[dependencies] +python = ">=3.9,<3.13" +max = "*" +transformers = ">=4.44.0" +numpy = "<2.0" +cmake = ">=3.24" + +# For performance, prefer pytorch over anything else. +# The linux ARM package doesn't exist there, so prefer PyPi instead. +[target.linux-64.dependencies] +pytorch = {version = "==2.5.1", channel = "pytorch"} +[target.osx-arm64.dependencies] +pytorch = {version = "==2.5.1", channel = "pytorch"} +[target.linux-aarch64.pypi-dependencies] +torch = "==2.5.1" +[pypi-options] +extra-index-urls = ["https://download.pytorch.org/whl/cpu"] diff --git a/examples/inference/bert-c-torchscript/post-process.py b/examples/inference/bert-c-torchscript/post-process.py new file mode 100644 index 0000000000..b5f683dd70 --- /dev/null +++ b/examples/inference/bert-c-torchscript/post-process.py @@ -0,0 +1,29 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +import numpy as np +import torch + + +def post_process(): + logits = torch.from_numpy(np.fromfile("outputs.bin", dtype=np.float32)) + predictions = torch.argmax(logits, dim=-1) + + predicted_label = predictions.item() + sentiment_labels = {0: "Negative", 1: "Positive"} + print(f"Predicted sentiment: {sentiment_labels[predicted_label]}") + + +if __name__ == "__main__": + torch.set_default_device("cpu") + post_process() diff --git a/examples/inference/bert-c-torchscript/pre-process.py b/examples/inference/bert-c-torchscript/pre-process.py new file mode 100644 index 0000000000..bc1d55b322 --- /dev/null +++ b/examples/inference/bert-c-torchscript/pre-process.py @@ -0,0 +1,63 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +#!/usr/bin/env python3 + +from argparse import ArgumentParser +from pathlib import Path + +import numpy as np +from transformers import BertTokenizer + +HF_MODEL_NAME = "bert-base-uncased" + + +def main(): + parser = ArgumentParser(description="Preprocessing for BERT inputs") + parser.add_argument( + "--text", + type=str, + metavar="", + required=True, + help="Statement to classify.", + ) + + args = parser.parse_args() + + print("Generating input tensors...") + print(f'Input sentence: "{args.text}".') + + tokenizer = BertTokenizer.from_pretrained(HF_MODEL_NAME) + encoded_inputs = tokenizer(args.text, return_tensors="pt") + + print("Saving inputs to disk...") + input_dir = Path("inputs") + input_dir.mkdir(exist_ok=True) + + created_files = [] + for name, value in encoded_inputs.items(): + value = value.numpy().astype(np.int32) + filename = input_dir / name + filename = filename.with_suffix(".bin") + filename.unlink(missing_ok=True) + value.tofile(filename) + + shape = np.array(value.shape).astype(np.int64) + shape_file = input_dir / f"{name}_shape.bin" + shape.tofile(shape_file) + created_files += [str(filename), str(shape_file)] + print("Inputs saved.") + + +if __name__ == "__main__": + main() diff --git a/examples/inference/bert-c-torchscript/run.sh b/examples/inference/bert-c-torchscript/run.sh new file mode 100755 index 0000000000..046b914abb --- /dev/null +++ b/examples/inference/bert-c-torchscript/run.sh @@ -0,0 +1,50 @@ +#!/bin/bash +##===----------------------------------------------------------------------===## +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +##===----------------------------------------------------------------------===## + +set -e + +CURRENT_DIR=$(dirname "$0") +# Make sure we're running from inside the directory containing this file. +cd "$CURRENT_DIR" + +# remove the build artifacts +rm -rf build + +if [[ -n "$CONDA_PREFIX" ]]; then + # Required for the CMake build + MAX_PKG_DIR="${MAX_PKG_DIR:-$CONDA_PREFIX}" +else + echo "This script should be run with Conda. Try \`magic run run.sh\`." && false +fi + +export MAX_PKG_DIR + +MODEL_PATH="$CURRENT_DIR/../../models/bert.torchscript" + +# Example input for the model +INPUT_EXAMPLE="My dog is cute." + +# Download model from HuggingFace +python3 "$CURRENT_DIR/../common/bert-torchscript/download-model.py" -o "$MODEL_PATH" +python3 "$CURRENT_DIR/pre-process.py" --text "$INPUT_EXAMPLE" + +# Build the example +cmake -B build -S "$CURRENT_DIR" +cmake --build build + +# Run example +./build/bert "$MODEL_PATH" + +# Post process +python3 "$CURRENT_DIR/post-process.py" diff --git a/examples/inference/bert-mojo-torchscript/README.md b/examples/inference/bert-mojo-torchscript/README.md new file mode 100644 index 0000000000..436c1fdcf2 --- /dev/null +++ b/examples/inference/bert-mojo-torchscript/README.md @@ -0,0 +1,30 @@ +# TorchScript BERT inference with Mojo + +This directory includes scripts used to run simple BERT inference via the [MAX +Engine Mojo API](https://docs.modular.com/max/api/mojo/engine/) to +predict the masked words in a sentence. + +## Quickstart + +### Magic instructions + +If you have [`magic`](https://docs.modular.com/magic), you can run the +following command: + +```sh +magic run bash run.sh +``` + +### Conda instructions + +Create a Conda environment, activate that environment, and install the +requirements: + +```sh +# Create a Conda environment if you don't have one +conda create -n max-repo +# Update the environment with the environment.yml file +conda env update -n max-repo -f environment.yml --prune +# Run the example +conda run -n max-repo --live-stream bash run.sh +``` diff --git a/examples/inference/bert-mojo-torchscript/environment.yml b/examples/inference/bert-mojo-torchscript/environment.yml new file mode 100644 index 0000000000..b600eef8fc --- /dev/null +++ b/examples/inference/bert-mojo-torchscript/environment.yml @@ -0,0 +1,9 @@ +name: max-repo +channels: + - https://conda.modular.com/max-nightly/ + - conda-forge + - defaults +dependencies: + - python>=3.9,<3.13 + - max + - pip>=24.0,<25 diff --git a/examples/inference/bert-mojo-torchscript/pixi.toml b/examples/inference/bert-mojo-torchscript/pixi.toml new file mode 100644 index 0000000000..a5c8b581f9 --- /dev/null +++ b/examples/inference/bert-mojo-torchscript/pixi.toml @@ -0,0 +1,24 @@ +[project] +name = "BERT Mojo Torchscript" +version = "1.0.0" +description = "MAX Examples" +authors = ["Modular "] +channels = ["conda-forge", "https://conda.modular.com/max-nightly/", "pytorch"] +platforms = ["osx-arm64", "linux-aarch64", "linux-64"] + +[dependencies] +python = ">=3.9,<3.13" +max = "*" +transformers = ">=4.44.0" +numpy = "<2.0" + +# For performance, prefer pytorch over anything else. +# The linux ARM package doesn't exist there, so prefer PyPi instead. +[target.linux-64.dependencies] +pytorch = {version = "==2.5.1", channel = "pytorch"} +[target.osx-arm64.dependencies] +pytorch = {version = "==2.5.1", channel = "pytorch"} +[target.linux-aarch64.pypi-dependencies] +torch = "==2.5.1" +[pypi-options] +extra-index-urls = ["https://download.pytorch.org/whl/cpu"] diff --git a/examples/inference/bert-mojo-torchscript/run.sh b/examples/inference/bert-mojo-torchscript/run.sh new file mode 100755 index 0000000000..0aa4710039 --- /dev/null +++ b/examples/inference/bert-mojo-torchscript/run.sh @@ -0,0 +1,28 @@ +#!/bin/bash +##===----------------------------------------------------------------------===## +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +##===----------------------------------------------------------------------===## + +set -e + +# Example input for the model +INPUT_EXAMPLE="Paris is the [MASK] of France." + +MODEL_PATH="../../models/bert-mlm.torchscript" + +# Make sure we're running from inside the directory containing this file. +cd "$(dirname "$0")" + +# Download model from HuggingFace +python3 ../common/bert-torchscript/download-model.py -o "$MODEL_PATH" --mlm + +mojo simple_inference.🔥 "$INPUT_EXAMPLE" diff --git "a/examples/inference/bert-mojo-torchscript/simple_inference.\360\237\224\245" "b/examples/inference/bert-mojo-torchscript/simple_inference.\360\237\224\245" new file mode 100755 index 0000000000..9e9e486c18 --- /dev/null +++ "b/examples/inference/bert-mojo-torchscript/simple_inference.\360\237\224\245" @@ -0,0 +1,127 @@ +#!/usr/bin/env mojo +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from max.engine import InputSpec, InferenceSession, Model +from pathlib import Path +from python import Python, PythonObject +from max.tensor import Tensor, TensorSpec +import sys + + +def execute(model: Model, text: String, transformers: PythonObject) -> String: + # The model was compiled with a maximum seqlen, so read that out from the model output metadata + output_spec = model.get_model_output_metadata()[0] + max_seqlen = output_spec[1].value() + + tokenizer = transformers.AutoTokenizer.from_pretrained("bert-base-uncased") + + inputs = tokenizer( + text=text, + add_special_tokens=True, + padding="max_length", + truncation=True, + max_length=max_seqlen, + return_tensors="np", + ) + + input_ids = inputs["input_ids"] + token_type_ids = inputs["token_type_ids"] + attention_mask = inputs["attention_mask"] + + outputs = model.execute( + "input_ids", + input_ids, + "token_type_ids", + token_type_ids, + "attention_mask", + attention_mask, + ) + + logits = outputs.get[DType.float32]("result0") + + mask_idx = -1 + for i in range(len(input_ids[0])): + if input_ids[0][i] == tokenizer.mask_token_id: + mask_idx = i + + predicted_token_id = argmax(logits)[mask_idx] + return String( + tokenizer.decode( + predicted_token_id, + skip_special_tokens=True, + clean_up_tokenization_spaces=True, + ) + ) + + +def argmax(t: Tensor) -> List[Int]: + var res = List[Int](capacity=t.dim(1)) + for i in range(t.dim(1)): + var max_val = Scalar[t.type].MIN + var max_idx = 0 + for j in range(t.dim(2)): + if t[0, i, j] > max_val: + max_val = t[0, i, j] + max_idx = j + res.append(max_idx) + return res + + +def load_model(session: InferenceSession) -> Model: + batch = 1 + seqlen = 128 + + input_ids_spec = TensorSpec(DType.int64, batch, seqlen) + token_type_ids_spec = TensorSpec(DType.int64, batch, seqlen) + attention_mask_spec = TensorSpec(DType.int64, batch, seqlen) + input_specs = List[InputSpec]() + + input_specs.append(input_ids_spec) + input_specs.append(attention_mask_spec) + input_specs.append(token_type_ids_spec) + + model = session.load( + Path("../../models/bert-mlm.torchscript"), input_specs=input_specs + ) + + return model + + +def read_input() -> String: + USAGE = ( + 'Usage: ./run.mojo \n\t e.g., ./run.mojo "Paris is the [MASK] of' + ' France"' + ) + + argv = sys.argv() + if len(argv) != 2: + raise Error("\nPlease enter a prompt." + "\n" + USAGE) + + return String(sys.argv()[1]) + + +def main(): + # Import HF Transformers dependency (for the tokenizer) + transformers = Python.import_module("transformers") + + # Read user prompt, create an InferenceSession, and load the model + text = read_input() + session = InferenceSession() + model = load_model(session) + + # Run inference + decoded_result = execute(model, text, transformers) + + print("input text: ", text) + print("filled mask: ", text.replace("[MASK]", decoded_result)) diff --git a/examples/inference/bert-python-torchscript/.gitignore b/examples/inference/bert-python-torchscript/.gitignore new file mode 100644 index 0000000000..2c785ab505 --- /dev/null +++ b/examples/inference/bert-python-torchscript/.gitignore @@ -0,0 +1 @@ +model-repository/ diff --git a/examples/inference/bert-python-torchscript/README.md b/examples/inference/bert-python-torchscript/README.md new file mode 100644 index 0000000000..325e2a64d7 --- /dev/null +++ b/examples/inference/bert-python-torchscript/README.md @@ -0,0 +1,47 @@ +# TorchScript BERT inference with Python + +This directory includes scripts used to run simple BERT inference via the MAX +Engine Python API to predict the masked words in a sentence. + +## Quickstart + +### Magic instructions + +If you have [`magic`](https://docs.modular.com/magic), you can run the +following command: + +```sh +# Run the MAX Engine example +magic run bash run.sh +# Run the MAX Serving example +magic run bash deploy.sh +``` + +### Conda instructions + +Create a Conda environment, activate that environment, and install the +requirements: + +```sh +# Create a Conda environment if you don't have one +conda create -n max-repo +# Update the environment with the environment.yml file +conda env update -n max-repo -f environment.yml --prune +# Run the example +conda run -n max-repo --live-stream bash run.sh +# Run the MAX Serving example +conda run -n max-repo --live-stream bash deploy.sh +``` + +## Scripts included + +- `simple-inference.py`: Predicts the masked words in the input text using the +MAX Engine Python API. The script prepares an example input, executes the +model, and generates the filled mask. + + You can use the `--text` CLI flag to specify an input sentence. + For example: + + ```sh + python3 simple-inference.py --text "Paris is the [MASK] of France." + ``` diff --git a/examples/inference/bert-python-torchscript/environment.yml b/examples/inference/bert-python-torchscript/environment.yml new file mode 100644 index 0000000000..13c6313bfc --- /dev/null +++ b/examples/inference/bert-python-torchscript/environment.yml @@ -0,0 +1,8 @@ +name: max-repo +channels: + - https://conda.modular.com/max-nightly/ + - conda-forge +dependencies: + - python>=3.9,<3.13 + - max + - pip>=24.0,<25 diff --git a/examples/inference/bert-python-torchscript/pixi.toml b/examples/inference/bert-python-torchscript/pixi.toml new file mode 100644 index 0000000000..49912bf471 --- /dev/null +++ b/examples/inference/bert-python-torchscript/pixi.toml @@ -0,0 +1,24 @@ +[project] +name = "BERT Python Torchscript" +version = "1.0.0" +description = "MAX Examples" +authors = ["Modular "] +channels = ["conda-forge", "https://conda.modular.com/max-nightly/", "pytorch"] +platforms = ["osx-arm64", "linux-aarch64", "linux-64"] + +[dependencies] +python = ">=3.9,<3.13" +max = "*" +numpy = "<2.0" +transformers = ">=4.44.0" + +# For performance, prefer pytorch over anything else. +# The linux ARM package doesn't exist there, so prefer PyPi instead. +[target.linux-64.dependencies] +pytorch = {version = "==2.5.1", channel = "pytorch"} +[target.osx-arm64.dependencies] +pytorch = {version = "==2.5.1", channel = "pytorch"} +[target.linux-aarch64.pypi-dependencies] +torch = "==2.5.1" +[pypi-options] +extra-index-urls = ["https://download.pytorch.org/whl/cpu"] diff --git a/examples/inference/bert-python-torchscript/run.sh b/examples/inference/bert-python-torchscript/run.sh new file mode 100755 index 0000000000..6e175dddc0 --- /dev/null +++ b/examples/inference/bert-python-torchscript/run.sh @@ -0,0 +1,28 @@ +#!/bin/bash +##===----------------------------------------------------------------------===## +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +##===----------------------------------------------------------------------===## + +set -ex + +# Example input for the model +INPUT_EXAMPLE="Paris is the [MASK] of France." + +MODEL_PATH="../../models/bert-mlm.torchscript" + +# Make sure we're running from inside the directory containing this file. +cd "$(dirname "$0")" + +# Download model from HuggingFace +python3 ../common/bert-torchscript/download-model.py -o "$MODEL_PATH" --mlm + +python3 simple-inference.py --text "$INPUT_EXAMPLE" --model-path "$MODEL_PATH" diff --git a/examples/inference/bert-python-torchscript/simple-inference.py b/examples/inference/bert-python-torchscript/simple-inference.py new file mode 100644 index 0000000000..6f69632558 --- /dev/null +++ b/examples/inference/bert-python-torchscript/simple-inference.py @@ -0,0 +1,105 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +# suppress extraneous logging +import os +import platform +import signal +from argparse import ArgumentParser + +import torch +from max import engine +from max.dtype import DType +from transformers import BertTokenizer + +os.environ["TRANSFORMERS_VERBOSITY"] = "critical" +os.environ["TOKENIZERS_PARALLELISM"] = "false" + +BATCH = 1 +SEQLEN = 128 +DEFAULT_MODEL_PATH = "../../models/bert-mlm.torchscript" +DESCRIPTION = "BERT model" +HF_MODEL_NAME = "bert-base-uncased" + + +def execute(model_path, text, input_dict): + session = engine.InferenceSession() + input_spec_list = [ + engine.TorchInputSpec(shape=tensor.size(), dtype=DType.int64) + for tensor in input_dict.values() + ] + model = session.load(model_path, input_specs=input_spec_list) + tokenizer = BertTokenizer.from_pretrained(HF_MODEL_NAME) + print("Processing input...") + inputs = tokenizer( + text, + return_tensors="pt", + padding="max_length", + truncation=True, + max_length=SEQLEN, + ) + print("Input processed.\n") + masked_index = (inputs["input_ids"] == tokenizer.mask_token_id).nonzero( + as_tuple=True + )[1] + outputs = model.execute_legacy(**inputs)["result0"] + logits = torch.from_numpy(outputs[0, masked_index, :]) + predicted_token_id = logits.argmax(dim=-1) + predicted_tokens = tokenizer.decode( + [predicted_token_id], + skip_special_tokens=True, + clean_up_tokenization_spaces=True, + ) + return predicted_tokens + + +def main(): + # Parse args + parser = ArgumentParser(description=DESCRIPTION) + parser.add_argument( + "--text", + type=str, + metavar="", + required=True, + help="Masked language model.", + ) + parser.add_argument( + "--model-path", + type=str, + default=DEFAULT_MODEL_PATH, + help="Directory for the downloaded model.", + ) + args = parser.parse_args() + + # Improves model compilation speed dramatically on intel CPUs + if "Intel" in platform.processor(): + os.environ["OMP_NUM_THREADS"] = "1" + os.environ["MKL_NUM_THREADS"] = "1" + + signal.signal(signal.SIGINT, signal.SIG_DFL) + + torch.set_default_device("cpu") + input_dict = { + "input_ids": torch.zeros((BATCH, SEQLEN), dtype=torch.int64), + "attention_mask": torch.zeros((BATCH, SEQLEN), dtype=torch.int64), + "token_type_ids": torch.zeros((BATCH, SEQLEN), dtype=torch.int64), + } + + outputs = execute(args.model_path, args.text, input_dict) + # Get the predictions for the masked token + print(f"input text: {args.text}") + print(f"filled mask: {args.text.replace('[MASK]', outputs)}") + + +if __name__ == "__main__": + main() diff --git a/examples/inference/common/bert-torchscript/download-model.py b/examples/inference/common/bert-torchscript/download-model.py new file mode 100644 index 0000000000..d72f9f7350 --- /dev/null +++ b/examples/inference/common/bert-torchscript/download-model.py @@ -0,0 +1,91 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +import os + +# suppress extraneous logging +os.environ["TRANSFORMERS_VERBOSITY"] = "critical" +os.environ["TOKENIZERS_PARALLELISM"] = "false" + +from argparse import ArgumentParser +from pathlib import Path + +import torch +from transformers import ( + AutoModelForSequenceClassification, + BertForMaskedLM, + logging, +) + +HF_MODEL_NAME = "bert-base-uncased" +DEFAULT_MODEL_PATH = "../../models/bert-mlm.torchscript" + + +def main(): + parser = ArgumentParser(description="Download model for inference.") + parser.add_argument( + "--mlm", + action="store_true", + help="Whether to use the Bert's Masked Language Model variant", + ) + parser.add_argument( + "--output-path", + "-o", + type=str, + help="Location to save the model", + default=DEFAULT_MODEL_PATH, + ) + + args = parser.parse_args() + + torch.set_default_device("cpu") + + model_path = Path(args.output_path) + + print("Downloading model...") + logging.set_verbosity_error() # Disable warning suggesting to train the model + if args.mlm: + model = BertForMaskedLM.from_pretrained(HF_MODEL_NAME) + else: + model = AutoModelForSequenceClassification.from_pretrained( + HF_MODEL_NAME + ) + + model.eval() + # We set return_dict to False to return Tensors directly + model.config.return_dict = False + + print("Saving model in TorchScript format...") + model_path = Path(args.output_path) + if model_path.exists(): + print(f"'{args.output_path}' already exists.\n") + else: + print("Converting the model to TorchScript format...") + batch = 1 + seqlen = 128 + inputs = { + "input_ids": torch.zeros((batch, seqlen), dtype=torch.int64), + "attention_mask": torch.zeros((batch, seqlen), dtype=torch.int64), + "token_type_ids": torch.zeros((batch, seqlen), dtype=torch.int64), + } + with torch.no_grad(): + traced_model = torch.jit.trace( + model, example_kwarg_inputs=dict(inputs), strict=False + ) + + torch.jit.save(traced_model, model_path) + print("Model saved.") + + +if __name__ == "__main__": + main() diff --git a/examples/inference/resnet50-python-torchscript/.gitignore b/examples/inference/resnet50-python-torchscript/.gitignore new file mode 100644 index 0000000000..2c785ab505 --- /dev/null +++ b/examples/inference/resnet50-python-torchscript/.gitignore @@ -0,0 +1 @@ +model-repository/ diff --git a/examples/inference/resnet50-python-torchscript/README.md b/examples/inference/resnet50-python-torchscript/README.md new file mode 100644 index 0000000000..c72dcc3561 --- /dev/null +++ b/examples/inference/resnet50-python-torchscript/README.md @@ -0,0 +1,50 @@ +# TorchScript ResNet-50 inference with Python + +This directory includes scripts used to run simple ResNet-50 inference via the +MAX Engine Python API to classify an input image. In this case, we use an image +of a leatherback turtle as an example. + +## Quickstart + +### Magic instructions + +If you have [`magic`](https://docs.modular.com/magic), you can run the +following command: + +```sh +magic run bash run.sh +``` + +### Conda instructions + +Create a Conda environment, activate that environment, and install the +requirements: + +```sh +# Create a Conda environment if you don't have one +conda create -n max-repo +# Update the environment with the environment.yml file +conda env update -n max-repo -f environment.yml --prune +# Run the example +conda run -n max-repo --live-stream bash run.sh +``` + +## Scripts included + +- `download-model.py`: Downloads the model from HuggingFace, converts it to +TorchScript, and saves it to an output directory of your choosing, or defaults +to `../../models/resnet50.torchscript`. + + For more information about the model, please refer to the + [model card](https://huggingface.co/microsoft/resnet-50). + +- `simple-inference.py`: Classifies example input image using MAX Engine. +The script prepares an example input, executes the model, and generates the +resultant classification output. + + You can use the `--input` CLI flag to specify an input example. + For example: + + ```sh + python3 simple-inference.py --input= + ``` diff --git a/examples/inference/resnet50-python-torchscript/download-model.py b/examples/inference/resnet50-python-torchscript/download-model.py new file mode 100644 index 0000000000..b93669138a --- /dev/null +++ b/examples/inference/resnet50-python-torchscript/download-model.py @@ -0,0 +1,66 @@ +#!/usr/bin/env python3 +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +import os +from argparse import ArgumentParser + +# suppress extraneous logging +os.environ["TRANSFORMERS_VERBOSITY"] = "critical" + +from pathlib import Path + +import torch +from transformers import ResNetForImageClassification + +DEFAULT_MODEL_PATH = "../../models/resnet50.torchscript" +DESCRIPTION = "Download a ResNet-50 model." +HF_MODEL_NAME = "microsoft/resnet-50" + + +def main(): + # Parse args + parser = ArgumentParser(description=DESCRIPTION) + parser.add_argument( + "-o", + "--output-path", + type=str, + default=DEFAULT_MODEL_PATH, + help="Location to save the model.", + ) + args = parser.parse_args() + + torch.set_default_device("cpu") + + print("Downloading model...") + model = ResNetForImageClassification.from_pretrained(HF_MODEL_NAME) + model.eval() + # We set return_dict to False to return Tensors directly + model.config.return_dict = False + + print("Saving model in TorchScript format...") + model_path = Path(args.output_path) + if model_path.exists(): + print(f"'{args.output_path}' already exists.\n") + else: + print("Converting the model to TorchScript format...") + input_batch = torch.zeros((1, 3, 224, 224), dtype=torch.float32) + with torch.no_grad(): + traced_model = torch.jit.trace(model, input_batch) + + torch.jit.save(traced_model, model_path) + print(f"Model saved to {args.output_path}.\n") + + +if __name__ == "__main__": + main() diff --git a/examples/inference/resnet50-python-torchscript/environment.yml b/examples/inference/resnet50-python-torchscript/environment.yml new file mode 100644 index 0000000000..b600eef8fc --- /dev/null +++ b/examples/inference/resnet50-python-torchscript/environment.yml @@ -0,0 +1,9 @@ +name: max-repo +channels: + - https://conda.modular.com/max-nightly/ + - conda-forge + - defaults +dependencies: + - python>=3.9,<3.13 + - max + - pip>=24.0,<25 diff --git a/examples/inference/resnet50-python-torchscript/input/leatherback_turtle.jpg b/examples/inference/resnet50-python-torchscript/input/leatherback_turtle.jpg new file mode 100644 index 0000000000000000000000000000000000000000..82a4a5e6a118a981ee3b884654677e5b97f13dad GIT binary patch literal 364047 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 z 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%0D)CK$d#&7Ue%mT-`w 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

ViUyk40qeiN# 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

Z#mVW^8P7j@c7cq6D_GN~ts$ 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

5fCu~i!?2FF6)N7nE{xt_@4 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

M@PcPNo|`fuBz@vrpi zV%o@27b#D;ZrQH&vrytCmQ zH-ri5tbQBRQV81t{{Yd~p1a7&BfPdQR;+21j=ZuXv{R~v+cQqk1aG7R%C@j zo-%VjNgD8@$Di%gDJ{@=@lnP0>4+})^YYEj~6s;C)~$jk~pE_ba;`-hB^TJ>>jv+sTE+j6~?PH zb3~G~&>H+nP{o@=e>?f>tnN0hT03;|6&{u*ENS806c3TFcaI%KX6&qJ8{C+zyJ1K8Yq%lpT99WJ zd-r_?zb&e2p^Q+6-vUn+*auoV`RYV(+IA!EzU1xsvA1cd{{WqQen-?;tw4i9R8y$t z0klwg_}JO#j!sY0JCqnoZk@p^%otEJme>68f`F z10iVJ#A8HkpCtTs2Rkhqbn@Ap`$t*(dZmdjUz)?PhB7~Q&$+^@06dR@)rz$nvd;p| zC3`lciS10Wph#NOawn&{j@XTYzS60k|2PgHQ!Q~X&919k^4y3=0vNL zNMn$TqU@TxdL@ZtO7XHX%PfHJWt|R@eCd8VH+CBk=h)`4)vQlpgJbegtGd^X6uX?IV#g-RjJ2C20kfFi!^K^$5Vl1feI

syMt$qh`CLRUj%Y@O(I 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 ZrZnsNzia#bCFT3SopqXR3i~H#|JhfAzlHz+ literal 0 HcmV?d00001 diff --git a/examples/inference/resnet50-python-torchscript/pixi.toml b/examples/inference/resnet50-python-torchscript/pixi.toml new file mode 100644 index 0000000000..8d3f09c09c --- /dev/null +++ b/examples/inference/resnet50-python-torchscript/pixi.toml @@ -0,0 +1,26 @@ +[project] +name = "Resnet50 Python Torchscript" +version = "1.0.0" +description = "MAX Examples" +authors = ["Modular "] +channels = ["conda-forge", "https://conda.modular.com/max-nightly/", "pytorch"] +platforms = ["osx-arm64", "linux-aarch64", "linux-64"] + +[dependencies] +python = ">=3.9,<3.13" +max = "*" +networkx = "==3.1" +transformers = ">=4.44.0" +pillow = ">=10.3.0" +numpy = "<2.0" + +# For performance, prefer pytorch over anything else. +# The linux ARM package doesn't exist there, so prefer PyPi instead. +[target.linux-64.dependencies] +pytorch = {version = "==2.5.1", channel = "pytorch"} +[target.osx-arm64.dependencies] +pytorch = {version = "==2.5.1", channel = "pytorch"} +[target.linux-aarch64.pypi-dependencies] +torch = "==2.5.1" +[pypi-options] +extra-index-urls = ["https://download.pytorch.org/whl/cpu"] diff --git a/examples/inference/resnet50-python-torchscript/run.sh b/examples/inference/resnet50-python-torchscript/run.sh new file mode 100755 index 0000000000..c31d2eeb60 --- /dev/null +++ b/examples/inference/resnet50-python-torchscript/run.sh @@ -0,0 +1,28 @@ +#!/bin/bash +##===----------------------------------------------------------------------===## +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +##===----------------------------------------------------------------------===## + +set -ex + +# Example input for the model +INPUT_EXAMPLE="input/leatherback_turtle.jpg" + +MODEL_PATH="../../models/resnet50.torchscript" + +# Make sure we're running from inside the directory containing this file. +cd "$(dirname "$0")" + +# Download model from HuggingFace +python3 download-model.py -o "$MODEL_PATH" + +python3 simple-inference.py --input "$INPUT_EXAMPLE" --model-path "$MODEL_PATH" diff --git a/examples/inference/resnet50-python-torchscript/simple-inference.py b/examples/inference/resnet50-python-torchscript/simple-inference.py new file mode 100644 index 0000000000..572ad10bf5 --- /dev/null +++ b/examples/inference/resnet50-python-torchscript/simple-inference.py @@ -0,0 +1,98 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +# suppress extraneous logging +import os +import platform +import signal +from argparse import ArgumentParser + +import numpy as np +from max import engine +from max.dtype import DType +from PIL import Image +from transformers import AutoImageProcessor, AutoModelForImageClassification + +os.environ["TRANSFORMERS_VERBOSITY"] = "critical" +os.environ["TOKENIZERS_PARALLELISM"] = "false" + +DEFAULT_MODEL_PATH = "../../models/resnet50.torchscript" +DESCRIPTION = "Classify an input image." +HF_MODEL_NAME = "microsoft/resnet-50" + + +def execute(model_path, inputs): + session = engine.InferenceSession() + input_spec_list = [ + engine.TorchInputSpec(shape=(1, 3, 224, 224), dtype=DType.float32) + ] + + print("Loading and compiling model...") + model = session.load(model_path, input_specs=input_spec_list) + print("Model compiled.\n") + + print("Executing model...") + outputs = model.execute_legacy(pixel_values=inputs["pixel_values"]) + print("Model executed.\n") + return outputs + + +def main(): + # Parse args + parser = ArgumentParser(description=DESCRIPTION) + parser.add_argument( + "--input", + type=str, + metavar="", + required=True, + help="Path to input image.", + ) + parser.add_argument( + "--model-path", + type=str, + default=DEFAULT_MODEL_PATH, + help="Location of the downloaded model.", + ) + args = parser.parse_args() + + # Improves model compilation speed dramatically on intel CPUs + if "Intel" in platform.processor(): + os.environ["OMP_NUM_THREADS"] = "1" + os.environ["MKL_NUM_THREADS"] = "1" + + signal.signal(signal.SIGINT, signal.SIG_DFL) + + # Preprocess input image + print("Processing input...") + image = Image.open(args.input) + processor = AutoImageProcessor.from_pretrained(HF_MODEL_NAME) + inputs = processor(images=image, return_tensors="np") + print("Input processed.\n") + + # Classify input image + outputs = execute(args.model_path, inputs) + + # Extract class predictions from output + print("Extracting class from outputs...") + predicted_label = np.argmax(outputs["result0"], axis=-1)[0] + model = AutoModelForImageClassification.from_pretrained(HF_MODEL_NAME) + predicted_class = model.config.id2label[predicted_label] + + print( + "\nThe input image is likely one of the following classes:" + f" \n{predicted_class}" + ) + + +if __name__ == "__main__": + main() diff --git a/examples/inference/stable-diffusion-mojo-onnx/.gitignore b/examples/inference/stable-diffusion-mojo-onnx/.gitignore new file mode 100644 index 0000000000..593cb73472 --- /dev/null +++ b/examples/inference/stable-diffusion-mojo-onnx/.gitignore @@ -0,0 +1 @@ +output.png diff --git a/examples/inference/stable-diffusion-mojo-onnx/README.md b/examples/inference/stable-diffusion-mojo-onnx/README.md new file mode 100644 index 0000000000..e8eee6302f --- /dev/null +++ b/examples/inference/stable-diffusion-mojo-onnx/README.md @@ -0,0 +1,51 @@ +# Stable Diffusion inference with Mojo + +This directory illustrates how to run Stable Diffusion through MAX Engine. +Specifically, this example extracts StableDiffusion-1.5 from Hugging Face and executes +it via the MAX Engine Mojo API. + +## Quickstart + +### Magic instructions + +If you have [`magic`](https://docs.modular.com/magic), you can run the +following command: + +```sh +magic run bash run.sh +``` + +### Conda instructions + +Create a Conda environment, activate that environment, and install the +requirements: + +```sh +# Create a Conda environment if you don't have one +conda create -n max-repo +# Update the environment with the environment.yml file +conda env update -n max-repo -f environment.yml --prune +# Run the example +conda run -n max-repo --live-stream bash run.sh +``` + +## Custom Images + +Getting started with your own creative prompts is as simple as: + +```sh +./text_to_image.🔥 --prompt "my image description" -o my-image.png +``` + +But of course, there are some additional settings that can be tweaked for more +fine-grained control over image output. See `./text_to_image.🔥 --help` for +details. + +## Files + +- `download-model.py`: Downloads [runwayml/stable-diffusion-v1-5 +](https://huggingface.co/runwayml/stable-diffusion-v1-5) +and exports it as ONNX. + +- `text_to_image.🔥`: Example program that runs full stable-diffusion pipeline +through MAX Engine in order to generate images from the given prompt. diff --git a/examples/inference/stable-diffusion-mojo-onnx/environment.yml b/examples/inference/stable-diffusion-mojo-onnx/environment.yml new file mode 100644 index 0000000000..13c6313bfc --- /dev/null +++ b/examples/inference/stable-diffusion-mojo-onnx/environment.yml @@ -0,0 +1,8 @@ +name: max-repo +channels: + - https://conda.modular.com/max-nightly/ + - conda-forge +dependencies: + - python>=3.9,<3.13 + - max + - pip>=24.0,<25 diff --git a/examples/inference/stable-diffusion-mojo-onnx/pixi.toml b/examples/inference/stable-diffusion-mojo-onnx/pixi.toml new file mode 100644 index 0000000000..9af82f125a --- /dev/null +++ b/examples/inference/stable-diffusion-mojo-onnx/pixi.toml @@ -0,0 +1,26 @@ +[project] +name = "Stable Diffusion Mojo Onnx" +version = "1.0.0" +description = "MAX Examples" +authors = ["Modular "] +channels = ["conda-forge", "https://conda.modular.com/max-nightly/", "pytorch"] +platforms = ["osx-arm64", "linux-aarch64", "linux-64"] + +[dependencies] +python = ">=3.9,<3.13" +max = "*" +transformers = ">=4.44.0" +huggingface_hub = ">=0.24.6,<0.25" +pillow = "==10.3.0" +numpy = "<2.0" + +# For performance, prefer pytorch over anything else. +# The linux ARM package doesn't exist there, so prefer PyPi instead. +[target.linux-64.dependencies] +pytorch = {version = "==2.5.1", channel = "pytorch"} +[target.osx-arm64.dependencies] +pytorch = {version = "==2.5.1", channel = "pytorch"} +[target.linux-aarch64.pypi-dependencies] +torch = "==2.5.1" +[pypi-options] +extra-index-urls = ["https://download.pytorch.org/whl/cpu"] diff --git "a/examples/inference/stable-diffusion-mojo-onnx/python_utils.\360\237\224\245" "b/examples/inference/stable-diffusion-mojo-onnx/python_utils.\360\237\224\245" new file mode 100644 index 0000000000..9303072f1a --- /dev/null +++ "b/examples/inference/stable-diffusion-mojo-onnx/python_utils.\360\237\224\245" @@ -0,0 +1,91 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from python import Python, PythonObject +from memory import memcpy, UnsafePointer +from collections import List + +from max.tensor import Tensor, TensorShape + + +@always_inline +fn numpy_data_pointer[ + type: DType +](numpy_array: PythonObject) raises -> UnsafePointer[Scalar[type]]: + return numpy_array.__array_interface__["data"][0].unsafe_get_as_pointer[ + type + ]() + + +@always_inline +fn memcpy_to_numpy[ + type: DType +](array: PythonObject, tensor: Tensor[type]) raises: + var dst = numpy_data_pointer[type](array) + var src = tensor._ptr + var length = tensor.num_elements() + memcpy(dst.address, src.address, length) + + +@always_inline +fn memcpy_from_numpy[ + type: DType +](array: PythonObject, tensor: Tensor[type]) raises: + var src = numpy_data_pointer[type](array) + var dst = tensor._ptr + var length = tensor.num_elements() + memcpy(dst.address, src.address, length) + + +@always_inline +fn shape_to_python_list(shape: TensorShape) raises -> PythonObject: + var python_list = Python.evaluate("list()") + for i in range(shape.rank()): + _ = python_list.append(shape[i]) + return python_list^ + + +@always_inline +fn get_np_dtype[type: DType](np: PythonObject) raises -> PythonObject: + @parameter + if type is DType.float32: + return np.float32 + elif type is DType.int32: + return np.int32 + elif type is DType.int64: + return np.int64 + elif type is DType.uint8: + return np.uint8 + + raise "Unknown datatype" + + +@always_inline +fn tensor_to_numpy[ + type: DType +](tensor: Tensor[type], np: PythonObject) raises -> PythonObject: + var shape = shape_to_python_list(tensor.shape()) + var tensor_as_numpy = np.zeros(shape, get_np_dtype[type](np)) + memcpy_to_numpy(tensor_as_numpy, tensor) + return tensor_as_numpy^ + + +@always_inline +fn numpy_to_tensor[type: DType](array: PythonObject) raises -> Tensor[type]: + var shape = List[Int]() + var array_shape = array.shape + for dim in array_shape: + shape.append(dim) + var out = Tensor[type](shape) + memcpy_from_numpy(array, out) + return out^ diff --git a/examples/inference/stable-diffusion-mojo-onnx/run.sh b/examples/inference/stable-diffusion-mojo-onnx/run.sh new file mode 100755 index 0000000000..9a89ecfb28 --- /dev/null +++ b/examples/inference/stable-diffusion-mojo-onnx/run.sh @@ -0,0 +1,26 @@ +#!/bin/bash +##===----------------------------------------------------------------------===## +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +##===----------------------------------------------------------------------===## + +# If anything goes wrong, stop running the script. +set -e + +NPROMPT="bad anatomy, looking away, looking sideways, crooked stick" +NPROMPT="$NPROMPT, stick not going through jaw, orange tongue" +PPROMPT="Cute puppy chewing on a stick" + +# Make sure we're running from inside the directory containing this file. +cd "$(dirname "$0")" + +# Execute model +mojo text_to_image.🔥 --seed 7 --num-steps 20 --prompt "$PPROMPT" --negative-prompt "$NPROMPT" diff --git "a/examples/inference/stable-diffusion-mojo-onnx/scheduler.\360\237\224\245" "b/examples/inference/stable-diffusion-mojo-onnx/scheduler.\360\237\224\245" new file mode 100644 index 0000000000..36678ef9d1 --- /dev/null +++ "b/examples/inference/stable-diffusion-mojo-onnx/scheduler.\360\237\224\245" @@ -0,0 +1,155 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # +# +# This code is directly ported from the hugging face diffusers library. +# +# Copyright 2024 Zhejiang University Team and The HuggingFace Team. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # +"""A simple helper implementation of a pndm schedular for stable diffusion """ + +from max.tensor import Tensor + +alias FloatTensor = Tensor[DType.float32] + + +struct Scheduler: + alias training_steps = 1000 + alias init_noise_sigma = 1.0 + alias beta_start = 0.00085 + alias beta_end = 0.012 + + var counter: Int + var step_ratio: Int + var timesteps: List[Int] + var alphas_cumprod: List[Float32] + var previous_outputs: List[FloatTensor] + + def __init__(out self, inference_steps: Int): + self.counter = 0 + self.previous_outputs = List[FloatTensor]() + self.alphas_cumprod = List[Float32]() + + # Generate timesteps. + self.step_ratio = Self.training_steps // inference_steps + self.timesteps = List[Int]() + for i in range(1, Self.training_steps, self.step_ratio): + self.timesteps.append(i) + + self.timesteps.reverse() + + # Duplicate the second timestep because this scheduler skips the prk steps. + if len(self.timesteps) >= 2: + self.timesteps.insert(1, self.timesteps[1]) + + # Generate alpha cumulative product. + var start = Self.beta_start**0.5 + var end = Self.beta_end**0.5 + var step = (end - start) / Self.training_steps + var cumprod = 1.0 + for i in range(Self.training_steps): + var beta = start + (end - start) * (i / Self.training_steps) + var alpha = 1.0 - (beta**2) + cumprod *= alpha + self.alphas_cumprod.append(cumprod.cast[DType.float32]()) + + def step( + mut self, + model_output: FloatTensor, + timestep: Int, + sample: FloatTensor, + ) -> FloatTensor: + var previous_timestep = timestep - self.step_ratio + + if self.counter == 1: + # Special case: the second timestep is repeated. + previous_timestep = timestep + timestep = timestep + self.step_ratio + else: + # TODO: clear out old tensors. + # For some reason, doing this leads to a crash. + # self.previous_outputs = self.previous_outputs[-3:] + self.previous_outputs.append(FloatTensor(model_output)) + + averaged_output = FloatTensor(model_output) + if len(self.previous_outputs) == 1 and self.counter == 0: + # First input, there is no data to average. + pass + elif len(self.previous_outputs) == 1 and self.counter == 1: + averaged_output = ( + averaged_output + self.previous_outputs[-1] + ) / 2.0 + elif len(self.previous_outputs) == 2: + averaged_output = ( + 3 * self.previous_outputs[-1] - self.previous_outputs[-2] + ) / 2.0 + elif len(self.previous_outputs) == 3: + averaged_output = ( + 23 * self.previous_outputs[-1] + - 16 * self.previous_outputs[-2] + + 5 * self.previous_outputs[-3] + ) / 12.0 + else: + averaged_output = (1.0 / 24.0) * ( + 55 * self.previous_outputs[-1] + - 59 * self.previous_outputs[-2] + + 37 * self.previous_outputs[-3] + - 9 * self.previous_outputs[-4] + ) + + previous_sample = self._get_previous_sample( + sample, timestep, previous_timestep, averaged_output + ) + self.counter += 1 + + return previous_sample + + def _get_previous_sample( + mut self, + sample: FloatTensor, + timestep: Int, + previous_timestep: Int, + model_output: FloatTensor, + ) -> FloatTensor: + alpha_prod_t = self.alphas_cumprod[timestep] + alpha_prod_t_previous = ( + self.alphas_cumprod[previous_timestep] if previous_timestep + >= 0 else self.alphas_cumprod[0] + ) + beta_prod_t = 1 - alpha_prod_t + beta_prod_t_previous = 1 - alpha_prod_t_previous + + sample_coeff = (alpha_prod_t_previous / alpha_prod_t) ** (0.5) + + model_output_denom_coeff = alpha_prod_t * beta_prod_t_previous ** ( + 0.5 + ) + (alpha_prod_t * beta_prod_t * alpha_prod_t_previous) ** (0.5) + + previous_sample = ( + sample_coeff * sample + - (alpha_prod_t_previous - alpha_prod_t) + * model_output + / model_output_denom_coeff + ) + return previous_sample diff --git "a/examples/inference/stable-diffusion-mojo-onnx/text_to_image.\360\237\224\245" "b/examples/inference/stable-diffusion-mojo-onnx/text_to_image.\360\237\224\245" new file mode 100755 index 0000000000..8f78f144dc --- /dev/null +++ "b/examples/inference/stable-diffusion-mojo-onnx/text_to_image.\360\237\224\245" @@ -0,0 +1,223 @@ +#!/usr/bin/env mojo +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +import sys +import random +import os +from pathlib import Path + +from collections import List +from memory import memcpy +from python import Python +from random import seed + +from max.engine import InferenceSession +from max.tensor import Tensor, TensorShape, TensorSpec + +# Local Mojo imports +import python_utils +from scheduler import Scheduler + + +var GUIDANCE_SCALE_FACTOR = Float32(7.5) +var LATENT_SCALE_FACTOR = Float32(0.18215) +var OUTPUT_HEIGHT = 512 +var OUTPUT_WIDTH = 512 +var LATENT_WIDTH = OUTPUT_WIDTH // 8 +var LATENT_HEIGHT = OUTPUT_HEIGHT // 8 +var LATENT_CHANNELS = 4 + + +def vstack[dtype: DType](a: Tensor[dtype], b: Tensor[dtype]) -> Tensor[dtype]: + """Concatenate tensors a & b along the outermost dimension.""" + # Generate return shape. + out_shape = List[Int]() + out_shape.append(a.shape()[0] + b.shape()[0]) + for i in range(1, a.shape().rank()): + out_shape.append(a.shape()[i]) + + # Allocate return tensor. + out = Tensor[dtype](TensorShape(out_shape)) + + # Fill data. + memcpy(out.unsafe_ptr().address, a.unsafe_ptr().address, a.num_elements()) + memcpy( + (out.unsafe_ptr() + a.num_elements()).address, + b.unsafe_ptr().address, + b.num_elements(), + ) + return out + + +def split[dtype: DType](x: Tensor[dtype], i: Int) -> Tensor[dtype]: + """Return the ith slice of the outermost dim; i.e., x[idx, :, :, ..., :].""" + # Generate return shape + shape = List[Int]() + shape.append(1) + for i in range(1, x.shape().rank()): + shape.append(x.shape()[i]) + # Allocate return tensor + ret = Tensor[dtype](TensorShape(shape)) + # Fill data + memcpy( + ret.unsafe_ptr().address, + (x.unsafe_ptr() + (x.num_elements() // 2) * i).address, + x.num_elements() // 2, + ) + return ret + + +def main(): + # Parse args. + USAGE = ( + "Usage: ./text_to_image.🔥 --prompt [--negative-prompt ]" + " [--num-steps ] [--seed ] [-o ]" + ) + + argv = sys.argv() + if len(argv) % 2 == 0: + print(USAGE) + raise Error("All options require an argument") + + # Set default values + seed() + prompt = String("") + negative_prompt = String("") + num_steps = 25 + hf = Python.import_module("huggingface_hub") + model_dir = Path( + String(hf.snapshot_download("modularai/stable-diffusion-1.5-onnx")) + ) + output = String("output.png") + + for i in range(1, len(argv), 2): + if argv[i] == "--prompt": + prompt = String(argv[i + 1]) + elif argv[i] == "--negative-prompt": + negative_prompt = String(argv[i + 1]) + elif argv[i] == "--num-steps": + num_steps = atol(argv[i + 1]) + elif argv[i] == "--seed": + seed(atol(argv[i + 1])) + elif argv[i] == "-o" or argv[i] == "--output": + output = String(argv[i + 1]) + else: + print(USAGE) + raise Error(String("Unknown option: ") + argv[i]) + + # Only required arg is --prompt + if prompt == "": + print(USAGE) + raise Error("--prompt option is required") + + # Import python modules. + np = Python.import_module("numpy") + Image = Python.import_module("PIL.Image") + transformers = Python.import_module("transformers") + + # Compile & load models - this may take a few minutes. + print("Loading and compiling models...") + session = InferenceSession() + txt_encoder = session.load(model_dir / "text_encoder" / "model.onnx") + img_decoder = session.load(model_dir / "vae_decoder" / "model.onnx") + img_diffuser = session.load(model_dir / "unet" / "model.onnx") + print("Models compiled.\n") + + # Tokenize inputs and run through text encoder. + print("Processing input...") + tokenizer = transformers.CLIPTokenizer.from_pretrained( + os.path.join(model_dir.path, "tokenizer") + ) + max_length = Int(tokenizer.model_max_length) + prompt_p = tokenizer(prompt, padding="max_length", max_length=max_length) + prompt_n = tokenizer( + negative_prompt, padding="max_length", max_length=max_length + ) + + prompt_p_tensor = python_utils.numpy_to_tensor[DType.int32]( + np.array(prompt_p["input_ids"], dtype=np.int32) + ) + prompt_n_tensor = python_utils.numpy_to_tensor[DType.int32]( + np.array(prompt_n["input_ids"], dtype=np.int32) + ) + + input_ids = vstack[DType.int32]( + prompt_p_tensor.reshape(TensorShape(1, max_length)), + prompt_n_tensor.reshape(TensorShape(1, max_length)), + ) + + encoder_output = txt_encoder.execute("input_ids", input_ids) + encoder_hidden_states = encoder_output.get[DType.float32]( + "last_hidden_state" + ) + print("Input processed.\n") + + # Initialize latent. + print("Initializing latent...") + + schedule = Scheduler(num_steps) + + # Note: For onnx, shapes are given in NCHW format. + latent = ( + Tensor[DType.float32].randn( + TensorShape(1, LATENT_CHANNELS, LATENT_HEIGHT, LATENT_WIDTH) + ) + * Scheduler.init_noise_sigma + ) + + # Loop through diffusion model. + for i in range(len(schedule.timesteps)): + print("\rGenerating image:", i, "/", num_steps, end="") + + # Duplicate latent to create full sample. + sample = vstack(latent, latent) + + # Execute the diffusion model with bs=2. Both batches have same primary input and + # timestep, but the encoder_hidden_states (primary prompt vs negative) differs. + timestep_tensor = Tensor[DType.int64](TensorSpec(DType.int64, 1)) + timestep_tensor[0] = Int(schedule.timesteps[i]) + + diffuser_output = img_diffuser.execute( + "sample", + sample, + "encoder_hidden_states", + encoder_hidden_states, + "timestep", + timestep_tensor, + ) + + noise_pred = diffuser_output.get[DType.float32]("out_sample") + + # Merge conditioned & unconditioned outputs. + noise_pred_text = split[DType.float32](noise_pred, 0) + noise_pred_uncond = split[DType.float32](noise_pred, 1) + noise_pred = noise_pred_uncond + GUIDANCE_SCALE_FACTOR * ( + noise_pred_text - noise_pred_uncond + ) + + # Merge latent with previous iteration. + latent = schedule.step(noise_pred, schedule.timesteps[i], latent) + + # Decode finalized latent. + print("\n\nDecoding image...") + latent = latent * (1 / LATENT_SCALE_FACTOR) + + decoder_output = img_decoder.execute("latent_sample", latent) + decoded = decoder_output.get[DType.float32]("sample") + + image = ((decoded / 2.0 + 0.5).clip(0, 1) * 255.0).astype[DType.uint8]() + np_pixels = python_utils.tensor_to_numpy[DType.uint8](image, np) + np_pixels = np_pixels.squeeze().transpose(1, 2, 0) + Image.fromarray(np_pixels, "RGB").save(output) + print("Image saved to " + output + ".") diff --git a/examples/inference/stable-diffusion-python-onnx/.gitignore b/examples/inference/stable-diffusion-python-onnx/.gitignore new file mode 100644 index 0000000000..593cb73472 --- /dev/null +++ b/examples/inference/stable-diffusion-python-onnx/.gitignore @@ -0,0 +1 @@ +output.png diff --git a/examples/inference/stable-diffusion-python-onnx/README.md b/examples/inference/stable-diffusion-python-onnx/README.md new file mode 100644 index 0000000000..a96732bcde --- /dev/null +++ b/examples/inference/stable-diffusion-python-onnx/README.md @@ -0,0 +1,51 @@ +# Stable Diffusion inference with Python + +This directory illustrates how to run Stable Diffusion through MAX Engine. +Specifically, this example extracts StableDiffusion-1.5 from Hugging Face and executes +it via the MAX Engine Python API. + +## Quickstart + +### Magic instructions + +If you have [`magic`](https://docs.modular.com/magic), you can run the +following command: + +```sh +magic run bash run.sh +``` + +### Conda instructions + +Create a Conda environment, activate that environment, and install the +requirements: + +```sh +# Create a Conda environment if you don't have one +conda create -n max-repo +# Update the environment with the environment.yml file +conda env update -n max-repo -f environment.yml --prune +# Run the example +conda run -n max-repo --live-stream bash run.sh +``` + +## Custom Images + +Getting started with your own creative prompts is as simple as: + +```sh +./text_to_image.py --prompt "my image description" -o my-image.png +``` + +But of course, there are some additional settings that can be tweaked for more +fine-grained control over image output. See `./text_to_image.py --help` for +details. + +## Files + +- `download-model.py`: Downloads [runwayml/stable-diffusion-v1-5 +](https://huggingface.co/runwayml/stable-diffusion-v1-5) +and exports it as ONNX. + +- `text_to_image.py`: Example program that runs full stable-diffusion pipeline +through MAX Engine in order to generate images from the given prompt. diff --git a/examples/inference/stable-diffusion-python-onnx/environment.yml b/examples/inference/stable-diffusion-python-onnx/environment.yml new file mode 100644 index 0000000000..13c6313bfc --- /dev/null +++ b/examples/inference/stable-diffusion-python-onnx/environment.yml @@ -0,0 +1,8 @@ +name: max-repo +channels: + - https://conda.modular.com/max-nightly/ + - conda-forge +dependencies: + - python>=3.9,<3.13 + - max + - pip>=24.0,<25 diff --git a/examples/inference/stable-diffusion-python-onnx/pixi.toml b/examples/inference/stable-diffusion-python-onnx/pixi.toml new file mode 100644 index 0000000000..b6f5be2a07 --- /dev/null +++ b/examples/inference/stable-diffusion-python-onnx/pixi.toml @@ -0,0 +1,29 @@ +[project] +name = "Stable Diffusion Python Onnx" +version = "1.0.0" +description = "MAX Examples" +authors = ["Modular "] +channels = ["conda-forge", "https://conda.modular.com/max-nightly/", "pytorch"] +platforms = ["osx-arm64", "linux-aarch64", "linux-64"] + +[dependencies] +python = ">=3.9,<3.13" +max = "*" +transformers = ">=4.44.0" +huggingface_hub = ">=0.24.6,<0.25" +pillow = "==10.3.0" +numpy = "<2.0" + +# For performance, prefer pytorch over anything else. +# The linux ARM package doesn't exist there, so prefer PyPi instead. +[target.linux-64.dependencies] +pytorch = {version = "==2.5.1", channel = "pytorch"} +diffusers = "==0.27.2" +[target.osx-arm64.dependencies] +pytorch = {version = "==2.5.1", channel = "pytorch"} +diffusers = "==0.27.2" +[target.linux-aarch64.pypi-dependencies] +torch = "==2.5.1" +diffusers = "==0.27.2" +[pypi-options] +extra-index-urls = ["https://download.pytorch.org/whl/cpu"] diff --git a/examples/inference/stable-diffusion-python-onnx/run.sh b/examples/inference/stable-diffusion-python-onnx/run.sh new file mode 100755 index 0000000000..87a0e0566f --- /dev/null +++ b/examples/inference/stable-diffusion-python-onnx/run.sh @@ -0,0 +1,27 @@ +#!/bin/bash +##===----------------------------------------------------------------------===## +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +##===----------------------------------------------------------------------===## + +# If anything goes wrong, stop running the script. +set -e + +MODEL_DIR="../../models/stable-diffusion-onnx" +NPROMPT="bad anatomy, looking away, looking sideways, crooked stick" +NPROMPT="$NPROMPT, stick not going through jaw, orange tongue" +PPROMPT="Cute puppy chewing on a stick" + +# Make sure we're running from inside the directory containing this file. +cd "$(dirname "$0")" + +# Execute model +python3 text_to_image.py --seed 7 --num-steps 20 --prompt "$PPROMPT" --negative-prompt "$NPROMPT" diff --git a/examples/inference/stable-diffusion-python-onnx/text_to_image.py b/examples/inference/stable-diffusion-python-onnx/text_to_image.py new file mode 100755 index 0000000000..b3cfbfb5ef --- /dev/null +++ b/examples/inference/stable-diffusion-python-onnx/text_to_image.py @@ -0,0 +1,178 @@ +#!/usr/bin/env python3 +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +import signal +import sys +from argparse import ArgumentParser +from pathlib import Path + +import numpy as np +from diffusers import PNDMScheduler +from huggingface_hub import snapshot_download +from max.engine import InferenceSession +from PIL import Image +from transformers import CLIPTokenizer + +DESCRIPTION = "Generate an image based on the given prompt." +GUIDANCE_SCALE_FACTOR = 7.5 +LATENT_SCALE_FACTOR = 0.18215 +OUTPUT_HEIGHT = 512 +OUTPUT_WIDTH = 512 +LATENT_WIDTH = OUTPUT_WIDTH // 8 +LATENT_HEIGHT = OUTPUT_HEIGHT // 8 +LATENT_CHANNELS = 4 + + +def run_stable_diffusion( + args, txt_encoder, img_decoder, img_diffuser, tokenizer, scheduler +): + # Tokenize inputs and run through text encoder. + print("Processing input...") + prompt_p = tokenizer( + args.prompt, padding="max_length", max_length=tokenizer.model_max_length + ) + prompt_n = tokenizer( + args.negative_prompt, + padding="max_length", + max_length=tokenizer.model_max_length, + ) + + input_ids = np.stack((prompt_p.input_ids, prompt_n.input_ids)).astype( + np.int32 + ) + encoder_hidden_states = txt_encoder.execute_legacy(input_ids=input_ids)[ + "last_hidden_state" + ] + print("Input processed.\n") + + # Initialize latent and scheduler. + print("Initializing latent...") + + # Note: For onnx, shapes are given in NCHW format. + latent = np.random.normal( + size=(1, LATENT_CHANNELS, LATENT_HEIGHT, LATENT_WIDTH) + ) + latent = latent * scheduler.init_noise_sigma + latent = latent.astype(np.float32) + + # Loop through diffusion model. + scheduler.set_timesteps(args.num_steps) + for i, t in enumerate(scheduler.timesteps): + print(f"\rGenerating image: {i}/{args.num_steps}", end="") + + # Duplicate input and scale based on scheduler. + sample = np.vstack((latent, latent)) + sample = scheduler.scale_model_input(sample, timestep=t) + + # Execute the diffusion model with bs=2. Both batches have same primary input and + # timestep, but the encoder_hidden_states (primary prompt vs negative) differs. + noise_pred = img_diffuser.execute_legacy( + sample=sample, + encoder_hidden_states=encoder_hidden_states, + timestep=np.array([t], dtype=np.int64), + )["out_sample"] + + # Merge conditioned & unconditioned outputs. + noise_pred_text, noise_pred_uncond = np.split(noise_pred, 2) + noise_pred = noise_pred_uncond + GUIDANCE_SCALE_FACTOR * ( + noise_pred_text - noise_pred_uncond + ) + + # Merge latent with previous iteration. + latent = scheduler.step(noise_pred, t, latent).prev_sample + + # Decode finalized latent. + print("\n\nDecoding image...") + latent = latent * (1 / LATENT_SCALE_FACTOR) + decoded = img_decoder.execute_legacy(latent_sample=latent)["sample"] + image = np.clip(decoded / 2 + 0.5, 0, 1).squeeze() + image = (image.transpose(1, 2, 0) * 255).astype(np.uint8) + Image.fromarray(image, "RGB").save(args.output) + print(f"Image saved to {args.output}.") + return + + +def parse(args): + # Parse args. + parser = ArgumentParser(description=DESCRIPTION) + parser.add_argument( + "--prompt", + type=str, + metavar="", + required=True, + help="Description of desired image.", + ) + parser.add_argument( + "--negative-prompt", + type=str, + metavar="", + default="", + help="Objects or styles to avoid in generated image.", + ) + parser.add_argument( + "--num-steps", + type=int, + metavar="", + default=25, + help="# of diffusion steps; trades-off speed vs quality", + ) + parser.add_argument( + "--seed", + type=int, + metavar="", + default=None, + help="Seed for psuedo-random number generation.", + ) + parser.add_argument( + "--output", + "-o", + type=str, + metavar="", + default="output.png", + help="Output filename.", + ) + parsed_args = parser.parse_args(args) + + signal.signal(signal.SIGINT, signal.SIG_DFL) + + # Set seed if requested. + if parsed_args.seed: + np.random.seed(parsed_args.seed) + + return parsed_args + + +def main(): + args = parse(sys.argv[1:]) + + # Compile & load models - this may take a few minutes. + session = InferenceSession() + model_dir = Path(snapshot_download("modularai/stable-diffusion-1.5-onnx")) + print("Loading and compiling models...") + txt_encoder = session.load(model_dir / "text_encoder" / "model.onnx") + img_decoder = session.load(model_dir / "vae_decoder" / "model.onnx") + img_diffuser = session.load(model_dir / "unet" / "model.onnx") + print("Models compiled.\n") + + # Instantiate tokenizer and scheduler. + tokenizer = CLIPTokenizer.from_pretrained(model_dir / "tokenizer") + scheduler = PNDMScheduler.from_pretrained(model_dir / "scheduler") + + run_stable_diffusion( + args, txt_encoder, img_decoder, img_diffuser, tokenizer, scheduler + ) + + +if __name__ == "__main__": + main() diff --git a/examples/inference/yolo-python-onnx/.gitignore b/examples/inference/yolo-python-onnx/.gitignore new file mode 100644 index 0000000000..b24b699c42 --- /dev/null +++ b/examples/inference/yolo-python-onnx/.gitignore @@ -0,0 +1 @@ +output.mp4 diff --git a/examples/inference/yolo-python-onnx/README.md b/examples/inference/yolo-python-onnx/README.md new file mode 100644 index 0000000000..2b8a14d180 --- /dev/null +++ b/examples/inference/yolo-python-onnx/README.md @@ -0,0 +1,81 @@ +# YOLOv8 Segmentation with Python + +This directory illustrates how to run YOLOv8 Segmentation through the MAX Engine. +Specifically, this example uses Ultralytics YOLO with opencv to segment images +from the webcam. + +## Quickstart + +This example will change depending on if you have a webcam or not. +If you have a webcam, the example will capture the webcam +and display a window running live segmentation. + +If you do not have a webcam, the example will segment +[a downloaded video file](https://drive.google.com/file/d/1H9abV76VohmT-J2RmDrbDhF-FCHt1Sbh/view?usp=sharing) +and generate `output.mp4`. + +### Magic instructions + +If you have [`magic`](https://docs.modular.com/magic), you can run the +following command: + +```sh +magic run bash run.sh +``` + +### Conda instructions + +Create a Conda environment, activate that environment, and install the +requirements: + +```sh +# Create a Conda environment if you don't have one +conda create -n max-repo +# Update the environment with the environment.yml file +conda env update -n max-repo -f environment.yml --prune +# Run the example +conda run -n max-repo --live-stream bash run.sh +``` + +## Note: GUI Dependencies + +The webcam version of this example depends on `opencv-python` +and its ability to render GUIs. +The dependencies for this are not always installed on linux. + +Downloading these dependencies is distro dependent. +On Ubuntu, it should be: + +```bash +apt install -y libgl1 +``` + +## Performance Comparison + +To get an idea of the performance difference between the ONNX Runtime and MAX Engine, +you can run the webcam script with/without the `--onnx` flag. + +The model execution time is printed as part of the window title. +Note, it can take a bit for the execution time to stabilize. + +MAX Engine: + +```sh +./segment.py webcam +``` + +ONNX Runtime: + +```sh +./segment.py webcam --onnx +``` + +## Files + +- `download-model.py`: Downloads YOLOv8n-seg from +[ultralytics](https://github.com/ultralytics/ultralytics) +and exports it as ONNX. + +- `segment.py`: Example program that runs the full YOLO segmentation pipeline +through the MAX Engine on images from the webcam or video files. +Use `--help` to see the various commands. diff --git a/examples/inference/yolo-python-onnx/constants.py b/examples/inference/yolo-python-onnx/constants.py new file mode 100644 index 0000000000..476fd8cd41 --- /dev/null +++ b/examples/inference/yolo-python-onnx/constants.py @@ -0,0 +1,95 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +CLASS_NAMES = [ + "person", + "bicycle", + "car", + "motorcycle", + "airplane", + "bus", + "train", + "truck", + "boat", + "traffic light", + "fire hydrant", + "stop sign", + "parking meter", + "bench", + "bird", + "cat", + "dog", + "horse", + "sheep", + "cow", + "elephant", + "bear", + "zebra", + "giraffe", + "backpack", + "umbrella", + "handbag", + "tie", + "suitcase", + "frisbee", + "skis", + "snowboard", + "sports ball", + "kite", + "baseball bat", + "baseball glove", + "skateboard", + "surfboard", + "tennis racket", + "bottle", + "wine glass", + "cup", + "fork", + "knife", + "spoon", + "bowl", + "banana", + "apple", + "sandwich", + "orange", + "broccoli", + "carrot", + "hot dog", + "pizza", + "donut", + "cake", + "chair", + "couch", + "potted plant", + "bed", + "dining table", + "toilet", + "tv", + "laptop", + "mouse", + "remote", + "keyboard", + "cell phone", + "microwave", + "oven", + "toaster", + "sink", + "refrigerator", + "book", + "clock", + "vase", + "scissors", + "teddy bear", + "hair drier", + "toothbrush", +] diff --git a/examples/inference/yolo-python-onnx/download-model.py b/examples/inference/yolo-python-onnx/download-model.py new file mode 100644 index 0000000000..daf067c1d9 --- /dev/null +++ b/examples/inference/yolo-python-onnx/download-model.py @@ -0,0 +1,51 @@ +#!/usr/bin/env python3 +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +import os +import signal +from argparse import ArgumentParser + +from ultralytics import YOLO + +DEFAULT_MODEL_DIR = "../../models/yolo" +DESCRIPTION = "Download a Yolo segmentation model." + + +def main(): + # Parse args + parser = ArgumentParser(description=DESCRIPTION) + parser.add_argument( + "-o", + "--output-dir", + type=str, + default=DEFAULT_MODEL_DIR, + help="Output directory for the downloaded model.", + ) + args = parser.parse_args() + + signal.signal(signal.SIGINT, signal.SIG_DFL) + + # Download and export model from huggingface. + if os.path.exists(args.output_dir): + print(f"Skipping {args.output_dir} (already exists)") + return + + print("Downloading Model and Exporting...\n") + model = YOLO(f"{args.output_dir}/yolov8n-seg.pt") + model.export(format="onnx", imgsz=(480, 640), simplify=True) + print(f"Model exported to {args.output_dir}/.\n") + + +if __name__ == "__main__": + main() diff --git a/examples/inference/yolo-python-onnx/environment.yml b/examples/inference/yolo-python-onnx/environment.yml new file mode 100644 index 0000000000..13c6313bfc --- /dev/null +++ b/examples/inference/yolo-python-onnx/environment.yml @@ -0,0 +1,8 @@ +name: max-repo +channels: + - https://conda.modular.com/max-nightly/ + - conda-forge +dependencies: + - python>=3.9,<3.13 + - max + - pip>=24.0,<25 diff --git a/examples/inference/yolo-python-onnx/input.mp4 b/examples/inference/yolo-python-onnx/input.mp4 new file mode 100644 index 0000000000000000000000000000000000000000..6300d2e3cfaedf1d24efae7e597a74e9b1387179 GIT binary patch literal 1164686 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%0A!mU2$Y-|kx;0DV(HIQsHYl452@9+Tj^X8? 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

P-+y7`O!GC~XlgCC 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 h0md3X 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 VK`FU~H%pFw{ls&5 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 z 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�ab0C2|)*I0}sa`Go`LR-rnpl4t0-2uF*) zD?vbk$TuMD59bEA zViW`gDdvJL#j&0ANhxtQ!D8#4->Ye-bm$8RHTn5r!UdjY28&a}QM=viuLhDd^0WVs zNnPyMTf>;lnc8Q&y1UNKQZ6T5DwWF{l)Ui9tvHri;Z>HIV4$5~q~vC8rm{R7Yy=r3 z?S>z}Sc_KR0h`Ocpjl{!q+BGh5)Pjt8#IJ_VOLoNp>3H2Pr1XB6jEROVtNmJu~R1& z0o1WI9ZRll?>#PZthPC7NuUyqn{bD}e z2hi>pycGqS*&R3#dLc3h`=H_=CUzwGp zzWF$3D5y?K0SJEfhdU@MR%#)1gDu+Nu}S+h&mst!A>!9}h;%qLN?~$B|7-dc-9WVQ zcB}eH54gP^f9eH9^e92f64u1Jb2?l5j(n4=xMiy6PHJs8q|O56ZyiGb&~dCx=Jeg! zgxjbPipN;4S9&{Ghw%`BXIW|#d~QN#YFJ$|Bo|r#G z)}*s|C=x!1@$)zo;Qez~3($!8>Mo3My24cq1?+&;9{FM!5O!V z=h_UgH3!KHurVYV$1+4wb1ocRBIK~!EN?M#obGW%v zM}}6}TIY6BsmXRo-BU)3hJ=QkknIna1xx7D;OnVJXLW76dMN)_9l`fTTDL2zMS4W} zT7Npb$A6D6P|XIw3K0q`Q+PrWeR9jMjiP$!iNooDr*(HOZ|l{^r9?TF!W-qAv7ZB#rZPb%LD8 zDrxg8xZC?wQm3l01t93dU)^+Rxy?3%OxZY~IuZXy7Kmn0Rt!S85Ttq$m-gTk^a ztZ0jSwc*>1|5+gw!Ro%)8xE|5JzN^;Vp=+$sui}cy? z^zB%^@+XeKC#T&NN^h}9*@jlv_ZMnH!JyqDPW*2|kApSj(i*ZJ)q@nQV3(RF0 zt;l9=^DJVKzj_W8C;)8b;S!PlK)ni-K&LF_UjWFTX7&#$sVc-?SnVV&Nb0zVhe}KC zmT6usv!T9!wb_pbGik@|-fYcSWk5mjKN$qKlw1|&n)#83ocG~JJ^7)hOr~|s@WH!R zJL8H4*X8GqxzV7ZmAfmV_3Srke2VvO|EIhUY#rx7ul#iN0wV2`KNg$QWVuyGv+zYd=JTS{OIGUBc36DKDy0(HjW-^ev6c>^+C*#lh4dKAG(9d1 zP;aZf6G{gAwR}8-QO?~wt1ABVh9z*zJM3e73LT(c?V411+@&zRx$m+e%kbyVklb;S z&-7plJ@@jnbAlW{G$Zg4@Vnfo@CUKx6Y=5-sU$9L#3`;Bi*fK9lKyRZg>04&^^Vxt zGnp@X(~^@M5yHJ%uC9x359m0S`Fg2gIX94%>2S@p`l8Va>fztjfx*ipL-;F^w6zz- z5$p(3mx&-z@_jQLf*&&I<}0|Njb~0Q@O(rujfXgFid$?NC~^oR9oPc9*^hW24vc1- zCsQ7QE59ZEifBe^qzx4u&7ypMQ*}7i1gv>B_aMJi|BuT7p?=dyaV?vXvx7{r#=hzm zkR6?{Z9N_n7gP^@rD}Anb3yEvhk+_UpDM*9{4@*0G_n<4I4Bn3_17Ak#NSibm3ShD zwPv??$ml+aCeC6Y5>DB$03_yvB0fjZEV!1B0=ZFyr77=8V-o0sT~BxkSn)B=#x2`- z_~LE*H;u6xSj^g40S11&S^~PQ^>CJd(Q(EX!=U1!Px=7NR{+=`6}1(o@7J++4WgcA zyl-PMCCDZr`?8sJZ4&?&2Ua~5j>nh&T#z(Tvenp1BK;>0pk+r40leO;;n^k6DL&v? zmicn*kQcH?Ags7dYE#cf%xw0Hz60U#V@xP~ncXuNjX_ zVxob5K@%;1T;9H)9XK$~y#mQ?xq$GUk(2_w*(Tr+mnLT9O%;C;IuThybzP`am9P@5 zUkeGvJb%g?*JQ2aYst-NSO@NO8z~dmkdN6@IkQj~8Dgb|i*BzDvKd)Y53O;9?YOe` zMepO~hh%?G1M}r`UBVyg4ET{pWxk6)HCgVp>0~6< zWMooPJ<5?n$@_h_Y9rlU(17QC#e=Pl!cy^J!Yl~?@#*WBucJoHzS-Rl2N5VXtLUcs zB&CY{@>4)8n%h`gkol0xVzbXIsgOFs9pUTny!Sz4WqNGx<1b)CJ_L({h+5j2N&z&6 zvqvw)CL4<<6Se4CWP9xQ9rfsw#ZelbnWn5fXG0)ij(Zpd^2vgj8Azhbe(3ZGOiQPq zF~-teEI}&cRQ*IwEBG|pItqvy3YH$SV^=UhL9|#Y8g@mPH>uy7J|Mx5wdM%`h^7EY zW$y;##3NT`nqNxGH}2mdudz}@D=AfjMrM2q)eSeiUU-t{14>46JPO3xJ^${Zf9gzg z&tK5fgZ!mf7y+5A*(5p*u z9;UuN*c=aR-= z&mE(vhi-s%LTI2JDO5U!Y?J9`gowz|7=j{aYI|@*ogjx_%t^IAp8y@{MPpE5RjZL9^;;MQB{g(*s8G< zHslh-Td@Zb`O&tij&Sa}+HY8r6^f26`C3*JM6*vTKD;(){oIeIbbsK_Lg{kH39^u& zKb7=`U~qhT)s}y$RQfj-^|9&!_c za*qc{s$!?97n0{#jh}aZWMpilU4DYidA}og+Qmwv}=42%bO@mG^+lGw@Anm zo)WN(?6V6d@~eo=fud=dLu;$-Jn3YqO_>_#O+v_LJR_0xy<| zyY4({RUr&~Vpdx8_IzAiIJ|S}hP-!eL9x`=s6pOI{5D)Gn4xCyH8Y z`uWYJhejD~fO?~wk?Hf0_SY|m1;6tRnf-cXGXq@=ltJ^)HJV{5zDbM2aIfUFd3UDW zH_okvniv!;rSI|H@>x&hw3Mee<(i--m)9Fs&mm%+$J z1;)rYi#VeFa61mpuK}qXy5Ye}w))FV+&JbTNFW_R;fOm^KW#S7GP?&m{hrvLnQ{)O zHiXw7TJm$mg?p5iN?FPq)yDu@o!oI?`U{y^M+FElPq1fU$QXzo%J6FWz6zSakx4*- z7lzGjWbOcu~v1(iRA>O$Z9t!c<7s<>0rp)!`{`xZOyMzuZG2`7pt|?!@H9rVC z5}0S^*@?3q8P(?y zngPPov~x%hc$IIJz%pO-iqti~y^rfeA`MRsCpUucIQELRMZNSkFoAc$^HS?rL%_-l zK$Q@1SY)c+VwSOo4y{c4H5>&wH* zXrG&7Vbj2++@Z6&+@@OUPsvy2y!rWXg_MaywIuj_yV;vUDe$ZBZ2kD}-U7HXco&(+ zAE&!^M)TU*LxXphLxNdx@*Y-~rRTBB=W!S71i7^kmUh7P^za~aXM4WT_`by?^m{S& zTkOF3T1$&5Xe7gc@t?z!GJxyFb!a_=Gt60k3rvBY3_0?=fGF7-SoTz044pCL;_e)B z;Ye(V)y){H%o;7hY*N!;k?qR;mC#ebu`)BB+T`~2byf=Id>kpNFz@ytm>$mmm%uRu zF~Pq_^&O0B(o{Zm<*l}RHkOAvtCpg6p&*`0Q4*|{S%-^b)DO78OjkMBzap3hn$&B8 zz?uN`{lL)tY36;mjL9yEBFqoOx->;xNI13ri9^~|53|ZK1$x~Q9ehQe8+uhR7SY|>#w+UkSO__6M6AWKVo`(z1Q0H zaM4HjEBjLDa&tcI300Wu<=eC*(3)=k%AT=#v@KXKrP z5IQdF!VdmeNk%TlBrD*bl6iHkaNp$2Yh0>O>A{pn(h9L;rg{A!E0W7MIF+`{nW7y0 zskf6N_O)LBKR5c4@`~Dav|{imV>PQ_BZ)CFAwt3n`+RLbC{O|ZgP$xYw_LUYtKI%?Wt_d#B!fh~e$81K>++ny z2J?)JItE#O&k>HGd%+Esp1KvT0(AyJ)!odtW)$%r2q?g&dvIO0^uyjQB_tm=hT$HN zIDo_Mlez+6ve_UfQ=H_EtAUnIPoehx>b)Ut@u1^C+h5N4?zoIf`l1Nn?nX|uXtv6+ zi1koJP9g044)?TrP5JgX^`oxvtrtls2_MBn;#d+ZYdjUFHD_@uWs<~_7K`pf+gvn! zmV43ZW0e;ozwNvaH4R+*-bwqJ^!;*13@pAgtnNI9a@-kxkQy+T@AQ6D+>?-Z9&JF> zGoytOtX`z+taARJ;zrqSBqqlj5_62eyby+Vn0RYvSr>mYa4wIS7yjqJ>-T^kC@JTq z`J>2DODrajoUG|Bu6Lm~33vU&ne}@h=#<~IL zA>7eE7jzDTmE&WJ`!6Nub9CZpUiZhOV6>ifpzyGqnm&l35t1h24{pS+8FoSUAa=3( zA-QQB>Mcm48(2auzM>%4qyAcHtuNMoPE~F#3}S%xOAYVNDx+ekDe#7Y|cJcV=h&2?Wy&u zjtR#I=t7RFlH-o89zkeKs8<23Ney!C7|@1UNYYs6_+3Z{?e#GQ+=ajs!IyT3x|Kes zD7zO3Am$sTNnW;3-T}d8T>i2mut$_Q8__?%Sc5AQI?b|XEhJ^dwT~b~&0py3nQ+x} zDZ#6F>}UEaFfbyeWBH&yxqM1>>sSr%`we*DS5m|ZqzZw_(<1lPgIJW``*l1J@W6SC zsU)%-2|d9{B|KI6#MF{6|IkpmsvEtDd%Q&H{(_*SI{UjVeW^kRH=llqjWcLiht;-p zHgZ^I{|1bp=Z733snpC|-5S%BhH+|Kvg4|-qvjgsi+j{@O72m1-Ik?^cQi(u(iA+V zh|#;J{OjA-pX(e6hNZ8~@N#x9^ZisC!*_yhmhePQPs+*x%boZ8<}f@FeQKegzKkd^ z;KBgJELCGu%LLDXT<1MU=I-V*EIoixbdYORRzWIuz8|}kghz1ejb_b=)GKO7727BG zol7)S&O%BxP%DT!4epixx+;(kc{$7aA0aaE!l;9Uc`z00MxaQ+J>OMjCq(?%^Zxq~`G6 zD8*9K)bE;w5WL$$Fj`s4nra$6C=2>A++179<{(k2@*ruQuhuLlE?BtIuqA6Ra_;r0Z zB-GqoTJ2QEJ;UZJ%Na7qZRI=$c^PqPdIUVLaLxoRXSjnkanmjf$5aeWyl&OreSg>J zQo&LJ+mfQ59@QA(ex0)g9_&GA3(dWlvta>@9vsvi=ne*=-fREi>X=*q z4PVxDtzswF{fb6yu2)DSG3!x*HX{JWp~Ia4Y)X>!F_RaPrHX(uQZoVfXa8=9B@M>R zm!c#b`J?Z4Bts|dJPy_lN>sWFXeRECXyJmZa6JMQ!2kdXazUH#4M76h+S=OMlPQ1z z0HJuV&FJ22b77&X)6Q#}IG{2tTQmy!l)1sFF`gnEw~U-&A{uT8ujJ?$jLJ?NR%j1* zAv+zb67vxu`1c-;cAH~g`1Qh>X3&-Z3*I{+y7~$JTPC&uU9OkPF`_f~(SKfxBWwhG zci<}@>F@$yC`!}yFAFq{+w%{8C&NJ3-=%t*y)|VPW}83I>K{5}j&94>I-HG)EoaU!&+O=A1Tbg4w9#P?SkN6#l8J06M-sg(#&m zEcdw0jek8LaYG z69XhTlHuq)ftZ;(#A}R-))Os}6(g}EbwzEWzOJ!sw7@X>>{mTHgV!ho9NjKtkTjTA z)zK@s(RA~x02wWv__>*~OUACy;o}v{f{VUUfl8o3IXL?y4*5-me}!S$YunQ0~Y@{p$tyyecrW+z-z@>&z|B?2txE({gq_jhDhW4q7??WA-6(C z@5EMD<1*|;*lr0z2snQ9^z?De96=)|>4vHmR`umyr7py-9{;i;zP@|LUJ5Cwco{(-RAkZ%+XZ#0TgU(*}V0e*~8T7U)yK+{RT3LMCH)B7?<7gqph##Kqdci)ppwLV?N z;iGI|2wo`jtnG_Wup&>kVqDa*OD0Th$iB7Y0P9f!SVWtj>;{0@Bi^QSSbw#g{~k-y z{sIG+Jl1<1;(@dU_D^e}XeZ-d4kSI8;woxb(zHHocCmPbUitt@Ec4IfC-WDj@J>qN zS-6tJNpIZ5&Pfhi@q(|g^T%}9?B>0t)rg@#Dj5)5tl2!?2 z{!AuQ6u%jgche`{uu}UA%@+g4IbCn*{zR77=Bc1emtfc*xlNp%ZFP!foM`xU#G`cKP3oOPZq;38S5o5FKyEb z%LOdXX-lb(k6clfx{wQ{zcwU+AkLWu=BoL%PxA&bdnjJl8w)H=+kkZ6QqWN*#$-)A zL$r|b27G3PYCqxlU?=~vIG0s7n1r`Vsa!K(96MAio1%Sco*u+=W#SQo^EViGEwiC$ zIZ#KPVFFijzAvW#5uM`DBUIg=*%v=k+_id!f|QZxHO|R?lpY0i_)t^67(2F{tS-VG zEdkO-HT}#$9Z^JH#KbxFiom#8G<9ggVDewhgmhmR=igGsPsnzXKfG+8rhHkI`-U9c)KAu7R$ z+%VtE?a({HNyy%4iTN_#il>WV2=(1_E%*C?5RH7MdN4(WJ|%^?*i<#;XakVjWR^v2 za@8|eFYFDoJn7l1S*X(x3b*<8QptEI#_gv5u))nEc1l3{g}l|Z<3Xp@XIH?vv7IOT zH!zF{)F!(KgmJ~e8%E9~k0CFXjA>J`L~5IbHzw7GIYiz_8Be1*+BI*CkTUmPg`a&N z2K_Jrf!yX?hntOx-Y`y@odY{fx?g7@5}=q3En!x0Xos-h@2gvrgQkY2nO>Yr`DhqkC(-$c6y|Z4ZgcVI$+CG9wu` zmq;iS(FL$QXX>r4b>oNOK`fi#aec2Rr4PF*^3Z(;!|1ZJIklb0@;9yWxtD0X<7=gk zQp6Rr?%czCoLPAC8HyqJ+Ej}0PyX9-<_1_rtkX>ZvWzKF4O(y{Ja=z(FjU!kDIKw; zp2861=wcN&DB1^L?&`KFpg@uco8)=D5WR07-iU zR|V<*4?R2*tKItCi!Cz65rJ?quG?Rv?(8l${_kvf&n0M8_7wAm1ceROtzqI@+j}|1 zHpF7={&Qxzo`~0vcR&(+3OqtY*kvAmfNzC3^qfvHGW+1A?P|`qUtsROP#o6HpV_O$ zc7uerQ2zgY!UK;v3qMqEBcj|BOIh9Hspkx5?rOcAxNI4OgGME71cJU78597X>f_&d z$57S*bP*`FPei5ebLg-bnC_~d?@na{Y!ihaC!}?gPiASFUN*&QZ6OSRPFKpkT;$;1 zGds%OfDea~jmF=dtW=C1(r2&1E^0Nl3T&O_y`H-U{OKfBj+hq-WNV`vYNm^-&ggau zR1h0Kjm2xJD#izH^5}_OpnQH&_!U`m@cU*k6#7^PE4EfgD-}I=NG$*r9-2if`^bO= zuuv*F4VavT7iv&~$5;LsftY{P*DlL2{}2AGsOGG1D-%Wq;Y)*bXxd2%05ib6X zG(ICGricW4`k>RVG`iA3mlc;{Jh^y$<2{}d{6HJ~y2_{$5OKWlfd$NUMw0%5X}yv7 zPgW(Cr`*SLdo_-r000B|0iXWZxe0%Ri5l*UiF5<|U6B+U_U<6==#2WZ_(mwm9_gMA zQ_)knJ?gBtzE8e?KTEc#h#8)QIMZ@<88OrMU3e*;8=$AMz!Zpa$*`6)}GR(ydhf z6s~1-c2)fV2jJ96!8GX^;Q|uc6)>PRmV$H0)?48BpYG|RHx^`|n1)0TUnkvRZB1iW z0Ox39M~6PCb2l?gZ`AIy5r%;ElFPmUvf%>-zVb(K%L#G>RyLPG&9a>xr6x2;EYYMB z%@VHC1SuqIg{ky54V$dEwF_uQ4DwQ_jnRvL=S3EqB|wSLZe~h`o5(F_?b78|*cu8< z=VFYW9|)e=DPo8FdAr&nsCE9okKQb~IZ?_IB>$)tojty6T%v~>pudhJ`Rhiz(b%sw ze~P#2Rej%hsS8XvaY=f`jw?HFXVA<1?Er$hu~#+JHdGZQ5jHHP=WM$%0z47zM)~3S z5C-g?(O8f491T)JkaAB2c&3Bz?Bah`N)k4Hc9W!*FLJt2s&jhfZ*EQ3S!gIP+Nb;< z4FT*ykFJeWOOtP{mQ|c|uW9l4ljWq(QVPKQnhldwp>+<`>uwx#UgG8T7BX_SBcOp4 z!k6*laVommkvqVP#a4sd5eSbEf>C&T_s-gbPD}GrL?zERxod>H_LRmY=HUU~1J1U9=zAKTtQy#O^agc6?>*HVMBPZS(;7xoO z{HI0a+Z;SHYmab0?YCvb$KYg@IQyXHYbBQ4PYO7YOxY@+myuUyp!n6_T>t(Y*ypy;yYE;OdwE=5g z@$NB_^mLy1S6hh#9Lg)JB^R$6D}ex4Kr-hxk(aPaWVd z8zcBhfWqFif1u%i-R)!U^JQ)a{h{K>mnR=8BxtO-OAwm3%QyEbhGr1k=PkR#a`-p7hb#Aiw zojN1Wh(=#gpM+-_)$2QW7fEus+TRqYgKQ*>Of%iz_d^0=1?iDWPxcB(Kvp3VFv*bM zd0_Y{R!m1~<*Ms$EW@tw&e%dvVbPOw&4ADQq*aGx@wDgy;jl#25hT>xtWWmEcP?4S zF6~6@Xz}Pf5Zh{-_%*0i{3lZ=*B*0+t?MW5V(vErZA9NIt-awlYT z!th7q%XHTZITc_i-yWt8qs=u^xT_UlULtf>o(2T#VCbZeYa?G2ZuOW%63`{r6RBW| zD-fm9FLH&{GMtE;ki=kssBO(al#L#Rh3@Rki@adzJ*q6>Ez1a$17H$iiPN<|aoeL5 z|M8qD-inpnBN-HzNkc*& zNLmN7(aDG?AM%AEFN3k2c}a;}hJ#H=u-qBlQQ{$(Sc>gQ8c)j0p5LU}CA|5SRR;%X zkbH z-=;srSY@#}5WCM#4g;PNH*{PPk)qcoF1|Jx`F$3ChNYRo*4DSP@7Z=;8kgw^oB;2R z##y6U*nRXwPDxhWcY8_Ztq)d1h2ddv(0xGHXFD^Gmw%H3W=`wWT`+lAc%LlB_|gxW z$4YYo`z!Ej%#_{ya{t=QNHVE)C}Ye!&eb)dN=1a{vz6E2tiA*Z4h%G|k)63Q#r%iK zKPq^m9{~d7Ox$LI8wX)|aVeSeU2^*bXunufP!JZWj21m+;5s`*HNt%be5bsoDPnd( zTB~Wk(|uR&at9Y#l zcWk|Wk&T5!WCZ>(n88w0oF1t>;TBC+ge?bq^s^=>&M=|&dCXW=4h)CJ-dQp<5Fl0U z#XEyO$S5hI-`v8rsq~O3NMt$vy4tpZw@&82xLUNrnmsh&%ZS~yo#nYZM)XW^>^2Vv zDzS}B_-5C>tTK6KUzR;+TneW6CKZsG&XotNr=iqe2{EaZo<1^E~}dh5nxoXwJMCV!SpHxJGYy{6l)P6xzCFjAUddPa!gWE6^Dfk~wo2_v!07 zBUpW7tp<8DD zb3$VErV$i;s9()0|D@sO7&m5B!I~ ztnJ;QBJAm|Qmq9`CM1r+V~bR->ZZnJ)bo_TsM7~H)SkbE^&$T;)E=uoFeP=JYp7J>o%DkDbt;Ev(AdW|cwNa5yiAujh;eo|tjHIdtyrev!bw29&l3IDMB`4sxD1y^+DWRYmZks@2|B-Oc&Ac-Umdp%ErCNDfX%D zH|m0d{5oS*auV}pT(I#Yn~0A$bFxioUyQC6&cb@r{7Wt=mB1j1oqpsMcDYA-xR;i~ zES7R9UoH@X)Y#}H+&YK%L#5!F=0xOiZr2QwFm)0R?Nku-S7>0OFkuWCmD4mr-4O5t z3N&{QAp}o8X^6bZ3!_0wCj{VRZ+Iz@Rg1IZ+18H4RD{ig;?8nEXDU?D%g2qtAajrp zfrtC%efI-=mH>|HI(?L1c^fTAh5o=86(ptIxK00lDmHmefUL*YgVR*~WkGK@MFVR= zX)mQ?$2k0gB?#C4VlI`A=f}Fq!m-KzyGOsIFlcwL;AN^8B0k&UxSjt1JIq95s zMlH}cp(0E(D;=Bo1yvhq6cP+VsF-D(QwwU=If`UWn4)|FgzXXg!`R%L!zg-<6+Px6 zUzu(+fI)m99e<&_YjjpkH0|?vq;uEm=gr?^@0^S92=$MR!0;bK6Xv}j<@%h03pQY} zI@U$b??|i_2L5Rk_(RP*ITj4xZmojkMfudEc{+3kISZfV@hRzG zLO4UK`}xq{UeHE)QVtHskJqnPPeY=H7M`qTLJ#h|n)n)9PjAg*tH#_``>sDZ z^91SoliT2a1n5k3WJNd>|LrN^10IPs6*IF}eFdK^c`Fc7vhjgTXXrN#2IEz8@p#F$ z`Wt!1X)}rW>HhU8;y~vU+1T3?_U`=)QBgIJVG2t09G9JfO77s`j6{t(Yx(NhrG6A) zLBiLj0&6F~nL_bxh zweFwlEzl3hSNS{=F&dtTNfmUcgt9gxjey+|F=ClB&Os*EMmgtcsi5D@)>kc>mNq1H zZx*NOp4OK9h{oIVFl8fQuPIp?pZRk0rP%afz5yH-6R)~RJXsP;0gZ02+N%W{c-o0K z_-MySYBV(j@u^+z3BUY_S*U)fC&D8HCe{$xM})##omA8KUR@nR90ZqVJV9Tu((CGa zOjr4*_3Sll*-Uj>${g+Zy>74EaCeoAvHFLCeCP zSAXV-1FMLvy%j_lL-uA(V!Dl|57=>q6(*@%Ip!gT5NJ#m;~^wYKM&o*dTinDMGWKS z$9FOGSH}=fFM-NW^XUbQ{(MgdKbU$%ee+U|J75zS@#1!`M}MLt`t;B9x3#zhrNbM$ zcd21sq>vE+NP0`y`$fSo#$04yPt=q=R}IcE>1U$~_Yf&KRh0vqnB#P3lfGL1m}eVx zzsjs%Fxc46%eqh^Ew`9*djwkogP-kcOa(U{q-`P2a^py*!d^c`H?RUM0CiSlxU3Fg zZe6*KnLV$uYW3m$%g0sDA@OLfNA(6oV!VbN;}U8s*(cb?4Bsh<~Mk zg`u3q>2_d{G>?~##p8|IT)EGEKzN0fZl5UQhShoV$w_k;t`09wjO)zm{mJp}&%jkI zY)^9XTHU=u-c#mLx<}81ywOd0ME4FU!pxd_X-eA~5~CfMaz0uJg`Q+$g$}_ZqUC$P z@gl@?uba5kViwc2Q+Q;GMbT*7Mdu>QV?k>3lLDKW8}M5I$6h^0b)?gAdXKg7{6QxG z#x*~vv6*bn|EIUIwEH!)N=$G0=)yW^6{t}Pw)U}+1Ui+{N=PSP1vp$Px1YBL?cO*MK-{A}GSjtGaRG5~#m&UIxvlz{iEIgAzsG zoIU4&1Bvduf%#)Z15NR1<13`&HDiQeO?qzMw0Km>01;0zL>%#-35R{7eE>Ts26(@)B zoB5CfW*son6OvftO)g8w=a#|3$C>t8Mzun-A*1IxTceLeToVrj_xP-T zX#%S<3)Oj0cu`3d5bRXib&cFOET5#2yK_Z8ayBWI9xRF#p1Mqp2ANpg!pP|E&uJ%H z8g*yB&QCupXgvK)lsDwBY9UL5>(}IFfwm0yWVKmThlu^@H)}ZXASUx>OrLc08V-*L z$w^W>(8^}6`vW!IY@smG4-I;$vz{T!yme@myH}i55PmB?Ox}RlR9kXrcrV^f4cp)r z`5Z)`Dc^w)N%i&=S>WXEnJ@LGX&b6E0vPjDJ&7rN^HimaH_3sPY_th(ugRlR9u6ch}{`--*(m#a})jn=qGG5dhoqPrtRgebb?{zHx2h@(!-C&Q$V>hBr+-rnNZ%x9H=XWC(ibc%@|v29GxIy~7~tN55s}Yfp9?I03E$k638PF`1^HUXl z40tVb!zs)jN1?^YPI~86I~MKw4_W2#O_@hd%Xa*kFg%cQAxnhG)n($QY^2Ma40_#sq8>6N{YEwMh0LNN?9nb}!`K&*(TmA_}jXG%9)YZeLeS6eFhAGhSX z)7n&ype0FA?E9^ke!a2Wv+1Q@Zff>`$8q>hguf!yRLsc@bt|VnJ@>?#_EWf;;jKJj3sApDnRsJ)n{EayC#@73qK;;9P~I#34F7oraq@0 zv-B7*0-E66N%J-h0dryf{+2~fBP|wJ8koa%#!=#Tzb{w;muTbb3<%yHv-yC+>;aKu z{P2WgX+p%NTsHdYt?%&g%vi2T5BY-*^*&3AZ&llG46m>EQni~e;K4Y|keNQl=%JGJ zBbsu_#@yn_r0PN^^%a*0qgS73eL8O$XqJuBIVsr20kuSZ%bBG+>)7*y|7(yTD^oBe zECRJ{n084iQU~O1j(%yaq{qyh{QNudOnL0d%#`fUXO-1 z`_Sxr=qu0w00Zg)o*!7GLSK@iW;t9n$Qz&cyZv~F+y9cjicQ_XpTZp1jj0TTzBRy< zpVwWL_mxz3{8%xMBcAWQ*qjh0xyrsZa*oUc~i~>$}7i|8QPLg{w65)bxzP! zh~cwmN}E*Na4_)T*6#2!Eb3K6zJqMeHe+~Fq+tO%EuinAV0V3$SzrA|l=x|j^A6EP zr1}?5$1+IwTkVfya?PG1Wnq6mzb3kjSRn9k;3AP zp8lUr)3DJ$nYup-*LIC0h<9NJ+YH8?rqH-Bs7Epd(!rv}E-^E~CM$Kv8|b_|%;dP? zT|>p622$BGt7;L^R&8<)F88ot92scmp=usSX@uXmIjgZNT2!fR8BFe7)o5t30YzN$ z51v>RIip1+pTc?{!`DH_QA8(=^?Uy0%i45JsKLgiT;wc&E8?YXw;Bd3)m5pTFMakr zM4JWu;EUP9ut|-pBJF>Sd$N%}iE-a4Qq9sBDEPamad$virw}nq(Gag;1wSQ=ofir% zTl%^Y6;nqhCpZpQgCe6iGXzmibZj^12%DA^!?QDONkg#J>)=#}2FnB;fP+=*!Fc?* zd}3Lnb8>lC)J@<;f)qOmRsp^$XJ^O}wbT$gWk17u-#8|ShFxdd4f%^vu_i`~ zI$GR9k}_TtoG}d0Na8KR+<9Av0oxkD3@&WhRl2nNDhQVb7QFOU=aiD55 zY0W~salGOLIPx_3`M#d~(d5_T0t6!^FgX9`hkM-5(Wk!IST#jI88%w%c~wTou?PK) zgf=DrAPGvKi1d!!#i1g=nETu9{FM@-mRVOdltFc*1eGT(gEKtVx={*XG5a-3d5etdtPsxJhXY0o6>#rMgLeJE%$ zUH$`$Jf8xW&vP_yc`l{Qd$87HwkyKn&=r_CXQ~gsywUa##c@+`S327>3PGoO#xNSB zvAd(z+;sPMdFc;a{H3vyq6>U!r*p#}QH;&ajj2PWnwFkNJPQy)??`XJD10{xUjBwV9`oTBy%ss2MIoQKN#T2EXRDnban$t1(ZJ98({ z{nmE30g89Y5w8*Z{1eg@d4;LMj^j}d*9UkB52=+XY`9%Cxgr^o4O=xXPJUxmud}8S z*<=jf)LuK|Y_7+K`(!fde_7dnxj;Lm?hZWoEXkHQO$@*40m?xPx92iyPwmmn0|>9A zZ>Fb`sXBZrox@TCvEzyBgAk}`2|z!;+j*EPWZ-^s(?85w$6f1^K-O=aXd-Z!{0p4! zE!BJiASc7Y?mfUn2)-!KM`}`Yt6l$H$7Ol9K9!*(nQO~<^rF6Y>qPMDS0ngo)f9~2 z-YD1UexH;~Uqk$sc_1;yg*PMv6o9V2tN)~O z-%#dm{*yh>b4aJGv!Q_>S~&Ln%ko5d>U$;K{$LR?igViL`gCg9E&n-?JO6ogI7z&S z*Q{6ezn2Bep&U@59k1PwKH@cXuzgRD>+CYbO|HV zdP*K`MRg~sUi$wYA8(7SLhZAPZQ_ryL+-qduDo|4Ub9i=-wxlwsLqy4j0c-P_tWUWw%J2h)2ogw zNEess^CE#GM0f_8?*$*SUtks|&1AZ5!(+74n2<7s%}zBiswZ-;b*b?AsL#*LpQ)$pTN<|mF!S`a1roC9C(yYKk|PP(WQ8m5>Eq{0X`3WAhZA-qRaTj|YQ< z2CI$)>}UbcoAr`67T^gy>xL694Cn$b9+l; zRo=OBX^^;jT|DQ;<_U`Os(^C|4O`ylPNAq&H_l?o@35%_FUEeKk(JYGE(#D8n%@m- zj;U)X?h?tjF1t&SbX<24YwXGg#uwZMkiBbwCg-stW;ni>t}N%u#O>qX-VAmrCT9H9 z&DUT8Oy{yBeuEapiy^5SFQ%Oxu@8NZmI#(3)uf1mR(dZE6!48*cP0Af#>l3AAomHl z^q?3SPr9ws(CAWE3|jOfYbw?Muq4C4jXy_S8#_d=7<<6lzx9@`4YG zEGgNG3qR07+DBiTvMno$KQF(_UTxQf^lOf*L)>AkT{eakL|Of?uIt5^r#O|7LPgPq zk_m06jgjz!D3#qIAVM8B%Wal8nS{v%OR6ACP*TzhiZ=c;eOkMCbJ^0!tJN=a%>M98 zd(y2G6~?|WXlT`~V6)8#u4f+4dxAK^w^MI{u1CPc!spL+V$H9Flg!C(Js1VPK)C^0 z5QL`X*Yzo`C5BC%39swF-Y!B}&GUp$(bhjIJGRdjlh@rVE1!Bq0AyDoS}t9ZoP)st z?K+4$GQ8V)0UM%TzT_%8GwHsm&G;`BZ2ATyrry4v({xNh5YhQjjbuC1V5kzt_n22{ z{rVGCCcE;0`eOUpb-CyMrl$$_aJQi zra3ELN?sX&?2BjyQ&v%;IX?y92`GlEd1o;m?|ISWJeSESgS+rAE3S4w*?@y;a-^^l zK{Y_dHtStIOHEG+PNTN{5ggEkpyt@Vk%b4$M)-|U4f`>H6=!+*VA|r)hl;Dz3cGW9 z$^jb3K31bMCY%~1d0KOJc=g_oVwi0V89`!k>dJ3JYs>MuiFOyk&0UKMkM~h?LVdA; zkZU8Jb2tHL zY)374)#I7y%7eKbXiKDBU%^<${tIQW9lCI?S2IQ6%9Kz>)c0sL7V7Hz zK{m1l@ikgQ zLG-Rwx_^_vX@*wrSmvx-oUAazSQfwDyo(0Q6o}#002@9oF$9iU*Ph93sd@%x8V8 zC$boh+Ow1dZSVyw8{G@z8 zN=fMe1U~_R5!6ur;R(4`#-Z-2+{eDW z*^+*tU>;;>V%GK|h}owVbpBwHBHw!z@7w9AeoOUQ>%ADeO)u5A!SXcbedYzO#l8z$ zWoOcDk;y9f9Ns)XlUX>4ubiPZh%>{$0*0ajnbM#Y==9VrvAfBeUn^w#2pTS#C2L%h z7E=0L1hBEzF}SkqDDezol|&x_dsDmn)DjOjpCPP0(S}N;Ihv~(6bRQHGLJ!2UItX^ zM`&XeJ7J&aYTp=ECKjeG?m_LQiD3;`$#Od=M)Iu!28k`K_tNgJC{lX}YN-Gq^mf8B zRM0s&yFhr2;`@@2aui;=_SXK_Hi9ZPMT*%3!ll<$q~FIUMyUnO(D*C5)QTE+QvE}#p|xju)F*5G$oM4yn$+1vlQ_#A$%eCjH+p4Ba( z7EpKC8CyxBluN}&B(;%aKds4*E`0Z~=Po3fOe&;6rymg?-2*cD`Q2zQE!6mCJ2%rhlEhzk^gHmt$*m^I@L`K4E& z2RHqMX+^d|?k5qR+kW1V>d5wP>n_U3vC`a;aJwWx^Nx{Df!6sGAwHNd-U|MwxEdORGE%@VQ-w`j#PLhthB^VZ_DD*VEOFJVrnmqCQXZjo+C#Ed`z3<*A4D zB!`qCSk9(HGrCZA*fhyz{9pvuW=IZ|G+^%xc5XX`i^O0TFSIzi1Iz$nDbO2MT_|;j z4}VkAoQi6zI(^^aP8Rd8UdB}HnlVbCiQb|;h)F2B-X?>RmBMo@DE?Yu^lv)Z9+NVh$ISSq?ONQvk^eHENQ$AiN$Qw6 zGzVrz56s~4{wn;v;Wvd&SG~w7Keti#k^r{S89*7?qR(KXI^cxvc|aeX>Rx#2u9g&A zTJOWcnfn-6fq^S*up<}$CTQri>_(B53T#z2`&5xwqFSh!qu;|Ez7KCf%-mG!z`f?M z9JcRj7@uB5)Aj;AAO!!=vLw|de2sKn9x}m9yjO3buG13I{>>ao$i7cGfV5Z?7Ybh$ z!x)afB!MnM8Jog^2ruia%a3rZQ;~w*L?ORh5f?z6#2&msJ`ALE zGx~1r%+sa3Kb)10C5x=!R6+8nW1;t@!-c}U;@TimYAe3 zOpTWvd#wYVd@$0EF;#Oi&;M8atWd3Ne1?k;m^z-J1&FVsz3fWDbyY@qYT=BgJw_4_ zm&Smc)mD6tOvUy;^-u-NosiXg5v|n!gMIMRqqX)LhbE-n`=imBIL*e%`d>C;(LcP}oZ-_ipg z`={&@+W4=bG8Q}!c4H9m{@80;Nx0(gt1^qzIN6jSzD0+T?3!W|(cx)pg%@si;*g63 zc-A@z#9541A3rqT#=g^!b1>&qA7;X+(}fpE3_pD>^;s7$aJy9pNeNhz%cEE?0CUdY zSm*NlB*7!~MT+yWJRU9P<+pwPC+oAJ47Xtts)f=W2!I$WfsjY3Gb~M5chj=Eqs)B( zuO-fdO{QPffEh~2XbF{5XVnE8{^ZGfGG4Ijyu!PH(cS*0<#m@)Axn@R|_8LU<)dDZ~H8NDYSh54D^>t%8Ec+hr4mIAnVn^oxSJilye=VMFI(7}Xx~&Xj4CPmJ&QEHN zK>v9W7ec{|3d=IJ)f|2JJ=G{znw(9~!{f1DUFyp(HeyCSv>%#-E>?Vjbdp|r(5eP8 z59;O(5xzw;MQ!PxG~iIXw3SdDNiC=l*E80xR%0~!oU2?-i7tkRTN>g0_qL?|A;p%Csp?w~-u;z@+1lYaYQfs}~%v1-TVmALj28V-0 z68rBK=d$pZWIpr2I|-1NM?Z_VNkv>X(GVpItD{*x8$CS*vgD#&q&}xlPKj<1t9-Rr z9*z5ws!zfMV^ZYlHpok@*?(9S+FeSKY*|QJF~sl&_fb_eWkB~?=y+iGxBjB=JT0A< zs!$$w@BX{lhd;DjV!w|0H_WK&(91JUJ!x{T)9PS7y)1%G;(o<}g|cXvzh3#6euN{& z9MG1UueSDoH|C@qjbi_xs;3NH8`d)oHdFIwwj~h<{ahS{<2uWsk0W{d9+CeiK~I|n zM_&p+s2KzN_|;~Kd)&~k88JC)bPt7`sAMd`wY zQeJyeEj%>KS_to~Z~rbvc90AK3;rLD^gXqckmnWb%JMSL(FEXv0@x8e8km&p!)Q(A6m% zfL-5f1?Wx3Ckj-Wwy<=urV5M+oI|=E=wOxS-oE8H{{PRD6Tv$&xFFY=#6f6{0Rf^% z=1WZ9RkYYPIG~3+gt?F*!ghQ#uKt8_)MmAo)LV%_I=ui0*lDXQL{kE-YBgDQ88jCc z>MGC?zdvqH(UzKXSk>&lY0G>OLtzYh&~25F-F{J`^Ce@Fq8_Y}7Q@{iP08g77{@6F|2uIr`)+!XukX#MK15Ef^aY>q=0}nDKw5J zZ9;UQ?DgBHk~DxznR@%)@}e_)OfkI>E(1LY^2cBZ!{<9_rOuf1dWSSySNB|z) zsR285!^N*o{3@?o?g(BzH6$S)=P!>Ux??Mbiozt z;Tb>x00YMXo-o+C34eH!;Cw66M3t!6B3rj}HFKB3kPHc+6D8evKRdFKsCuI4Nr6uCxq~-J8 z)=P$p`=w}}evD-kF-wQVz>lJ3!`a8IRyX`pW5%>|V+(1`jug@t-xEsW*q;MNy&i7}e*``+!5hwYh#QDH z(hmLza(SVO%LT6iio4ua7rWBAp)kLfxs{Dhsk%)%;apN5-> z+<`X@IRCk>vkb?0Jp=tf>^SgI$-SWmVWGI1BPG9D6u}$x7`kl7c>riTigqr5Kl#N` zH3Eb16EywgOL>sSq3+qP^V;%ptbrzC6g;;x4C4#mszh#^P0kK3mtEx=16EWJM31w; zGTMI3Ls3P@t4ifRTC;@Pf%hm6^lR`EbhpjaxYGB(6xs|L(%&he%kjQJPzbi$hWh1a6`uS%l0H6S*YxcgQiD1kex&~$7x z_w0pjC@Z`=rhn>MU^ZG}_w&YIkuk;>6E>h0{W*2e;H2e4GR`|@#> z+DWi#CwyzRs5-HOnJO5gE{nw%urx`~%33fAg2az`o%TBXWHnNCUCpa6;Mt|-DP??a zSg9QYpU*K>B7MHd2pHb+{IA|Kt;d`NGy1S(>-rg_W2sd?!D012u=nlX(* z0@~Frt*w(OfB*oYxUT}e^HJBt0%pAU!a>Hkr^Sja#!bj`r{7~>6w7U(C^uv)N{+SV zk*)3%Vm?Z3>dRmg06NGK=GXU9`odtgtcWqCpRHtFS#dseO!Hg#gubh#J@F+KUi)SJ z(;b8Wcd&lk$BU)1_dRz64B4*-r=bTMt|o0%efM(a0xwiBIuAi+Ad-> zkSKcqh{^nU-?lQEYKwn;y18Ql7%s>jM%}XBh$kMy=`9f*#r%f zT*3=wZ?QATFD%#Im0JIf4P$wq{l=tl#c4Q@5$cbHSr&jQLvY}p1uw_e8_PeQ&l1R@ zVp)R);x_X|O60{TfIGX^g0Oo%ltSXKQ}$$GRPr}1F|TgWq%r=kEyVI z4qVLIjD}wMLIKW<*z$31zn zdi3VtrkR5G^qdWy&7Gy2-*D+$pCY*34K>PP@Ra!7V1!Y<+3j!Br9??$NE$yuCg!CV z4u*qsV3|c?2?9En&L{LjGm7n~StIQJzIZPRzTph$N3&%-3`W$?`CEK_x~O(aL+BbQ z;oSSWec)3EH4mcpnedRF+1*S87N(9=aq{ZxJ)&w2?G>{jGs*|G(G&91E7uT~|D-($ zk>ppj|LNzfZC7v*7A*u9n07&}N$SI{TfAYW5&bqmxqJJ{n^8>Kvza**%GsU-4dw&3 zs8`l#w;hk!Hx)P~bia_+$@viRRf$`T`xS;g^1(s1&+d%m$g z<;-;GQdiM}10`^3jR;*wTJSboBGe@h&$5j1KfHuHE{%6>`3h7+r@P7|U-8BdcQY<< zN0O>NGQ{!I$q&?rcD(=9aPIpr`R2_X)&&w6g@m2w7a0yyM~Maj1@n1Ft77+Zn%HTw zOslRW9%b<>wGGE3ubPo2feIw)Tv)1t_J;x4vH(+b`=p`fsdq=QR6Mb5Zvdy?78vptfz~ zCx<@zwig0Li`jN~EnavZ4@Dk`+oyUaR2SvwiHT@;?t@1adtWccbH~K8Asc$GHB+E! zNz(rcY$Zr@Lo<6T(7kN}kE%|CKzs+_v$TZnVh)UbM#{oM@b?{79DZSiP5h4}1F-MC zcEtvT{@GEt6BJj$dHs8_JX^hK8Nh)7wVSN0UsNirsBh9CiUtEc8ZyZ~E#+bP(n}B< z-t;n6ac@c1Q`JKq~f6aRQlAX#fZak(mW8$3`MmRsBd=4_=Ma@m(S9%63*jk# zQ+f{B(`;#VnT`d$KDq|eIvVYeeGz)`b6&1u`j!fiT&tMGjnn|?=EV%TR~q>(s48Ys zvm=Ug$#&Snb0lk;|Kaqg5MWgOR3>a^pk37U(?bF0(Ob4WguL-ICdpsa5BC;#oOJ9P zz5^V!HfxDiuDw8&@V*4nU{Zh4XBA34%z#t^?9hIr7*@6TU1P(kRO){ebfyK%I47Kx z>3%2i%`FG1wixd9 zxdjl++OFnBhQ_;NYs zbeYO!|J2RuXJ_X?yNin%09YOTPK#>T;|L%JdfEXVjx1^hTOZWeTqKqlV-yO90_&d> zJ$|s+x_bSr)EhwWkDg;DaV zWr?XGfNZLv0@EXA7NCOUt3p5!s&ofxn-Ux$OMu`aN7SbUV{>gWrz%EcWu#hlqRV%P z-wI9m*0_1B$?7A^qPq#pFYz1(GUO5z z)-(MUo)W3%aaQ#P(C_<6;-~U zm}I%qaojMM zRi)#WnXxqQJDx=wg~vFnw!64rhxowxLNeg;nG-PXo8PGWakNu`IsSO>xos5){Q&?tgy~Hct>6pDG`}~d0h;-0>T)L$^dP~N{fW=OTW$9h{r{B6==((p9o=NK+XpshN@ek>IK;u-#WkwmRMC^Mk%iB! zw67U}`67w32RRp0IeX3u9Ybcv{O5VQ#y;1DTuq<%3oUOpnXb@Y)vCt^T|l{3!68Zw~ zjJ-%Tx;TcFkS@fNNE=bfEuzA8@GL)E6X7}quO=GwN!R;kicvqLI;G{$>x5y?vMfG<7cxLR zi#nGM>6r|mnfW9F)3Kt^kwMj|A8$_^7AuEHqyO*r~& zzYB-=Z$GuBi-q!-d*U%GyWAEjy3kRG$pN)|*NeS-9xdKSYPT?*IcgFr-*A~V`y`|< z=O-BF@?knVsJ!9=i++Qz!H)|zYBQu81yf|gb$HSCn;h-FPmjzu{ogioOqx3#4IVIPM!`bEVOO*qQ+vedsY zsV1<*VHu#*7&fl2lUT%CaYfsT`VzMtB+A3^=Q%7r!PxK07x*sp)y2|4+yhPNr9z8l zn1F@LTY)P`lEQyn4-a(^&YqqC7R3NW8i*(ZMuoUeKsZ8#eMOH7A7?lvtDas!6O3iW zLta_)U^7l(yYKELU8-sxvH@R3vS;-0$l{!VZQR7{t+X3`9ec0#@)B`#M?1p3Y`CAD zcmB8NC~)M8+`y6{Z=wK@cT{2R=fM09*@6$CuoS>c2fR=T826#IceZ^N!Aq3Qd!gbR ze(R`gClPj?ZT#NFDbxiCAl=K74>!>KlEEn z4~yc-HJZ1g(`41^O{958{}4kMb4OO%zbSPoFfNFaX@UQl6v}+#?1e~fJI;I@G+<2{ z)X&*^Ns*^uQ-rXJdq}&DniVf|tkdzG7zL%+2se5dA0Ef+^TswW=1!eW6fArk-?oWt zE^MwpI+R;Kj;DYBBsC0)5SfC2-Y8CY6L-B@_m2Z8uvBRQ2nG=u7??$`x#5{o+Lom( z_4CWX2;XytGiDH|`nH0${v{qn5lpRyI49O+79}t0cp1FN;2Sr#c4lkHe%czQRX?u3a zXoh>O%_dkUhui7y<|A z5rQ{!EyOLIX4#U%Xa`U*;GJ1D+KXf54ZGC=0VHR_*Ks|`$YiXg(HErCG=UUAV$RB_ zy{p=DLU?8fE`7@nhMpE;Q4+wtQqikS;J90E+rfz~mlNs7mNJTAcP-Z!t>SK=Q~cm` z=+tEQ@|`rv?H+slD+3$1tgW6jmcmpexW*UK&SY(Ajt0^8-$eoNd~m#x`wx(7WOw*^ zd#7Pl_V&X-=bJM{vNhla@&bHF4w||RRGi)+PKlWit=jUg6h*ITicoB50yV1zV$PEI z_%v#JJx-elEt$R4;=$oun_;D~d3{k?|NM?}AxI%9{QeZa-neM6M7^o?Or@6w^Ux^b zE3WC}>u1D=`_Ev_jB*Z_o%@1or_x4*YQ=UL)N+61{%-V*+C+yPDGbjL^IFW;VK9@s zlFQEk01YxhnnDi*6t=ZXYidlU00095h2am-!NE5rBr(sCbf-2{m#28>y#|-CtyAGp zlWceySkj8z@vOukQuMgQA`47{`8Z#Y8$q9Y95LUi>^5ua+*wn*b5}ki$@3|zG!E_6 zL7=XzDFcwKAuzJr@0!+$4T0H>EjImq;(57~y$gOD>S#`LwhUI#rFX;JY@#!;WtnCF+wh(XDM;rO@!LQ!MrF)>OZj% zumyV`#=%vpj`X~m;bU+|481_pMev^3@Uon$#?sN_+U`KG#Rh85_+&0Iv{UfuEuFmI)gP6h5MR&37e=9*jtx(A)k0UU(ap^ch+8`3?T2j&Qo3UpxM*Cq z>%jblA?Ik|jjOiR$+{L0{8tn3zgN`z2dZ{s+PJ(lgPm@$x zoy7ma@j&7j8XO4E2p3#XrL{I9cuZyeWb1~z+owHlZE4iCF=LJKyX{6Y zu##!qu6N68hf*4z3eHRr~N@hUeN7W!cN%)F-$v`@(YxksP3O_)*by@( z%%v*uGe}6=&wI%%yblNgp6VWMQa`gBpM5idJ4a)&o(D>C=B z5hdO<#3CRU;--yhvF`p2tI~ug5c=L-7}A z%u>RANUeDrX6?)3h|on9gd7F`!3^TT@CrqcCC|4{&LBDjc6S7v6uWLJ=?aTwoWqo% zZCxUK^6a#drDos{KnXFw#6&25`n7tP!Jn0N2V5{gO6-j<{+#MLPVYYr9Z=GFgQu4_ zNn+o@wg93I;%C;5o|@PoevMpxss$0^GXU%BvAT9m^5M$nfI6nN)Rj+9L&bJHmEUO7 z2^Ms~J`s&3aX|HM(Qlu~- zKl2I&)U_87dq5#NO`er>4nE|4BpDR97Vb4o&aPIRNx%Hx{tHxqMkt^`2!QGX)j2;B zBZuA=BE>HL05&_V8TuflpU-ZEX)lmfPakP?=!+^L%mTKY5e*C=6VXF`u^BRfAo(_h zTVIg?5%tJjhZLJMHY1W*E+`1G)1@foQseVf)qrUZrBPmiF~?^Gt)75j<5?s!Xh2H2 z+It4bSL0$fzg109Xd!RRni--y;g}xMex0OjsBRM-uy;el|6$8v;DMRP`$ z!htg)3%$e`;zey79LrCZ_f$IF&Z&LMR(#}BwMJnxrM zo%emqT5OY<=_}NHQ61cAA$+D$JM*l$Ce=F$ zjuTP9`Y_8Cj3+>1vICY(y_QH3l(>Tz^by;QbCQI-8X6uF43l4V;hYohS1E5o6cF|{hThfm5sTM7nEk}I zM^3*LvWTUI8fYvoh4qZJWC98+v$*fN;l(gWzu)HK7y(B5b6&+ZPsMmbbw($m^`Ej| zILF;JBypte#2UJhgQ7&s8(I^J-0|OqEWju|HtY3;V~m{U5sLrzm`*h1!(gRmQzW7r zNO?#5lER@}V{OFiyDha1LBVreHk6v88C8LPz|#LUTMHj9olExwT|)l-cuJ;PeqMw2 zYb~H!@qw0a#L{sa$s&}eEVN`mIiA>BAbSa8^>Gj8T&Fg;hN-d%K(W&iqrcy$cN5zA z@x?1v%_IQgMa9c-DKdis*&t=z>;6j%180`d>3-&;*i9>2pd;F)!F-%P59%CkGr11H zJBEeDkYO_@<1F3rq9CC@{WIVzf1!++39L|6lkn}ku|6*+zC2deBo|A;nnFzA#}%Hw zFVafXD0Q@kXTAw9E87U?%U%KjY@zSDwC-aZEwiDe8@|xzAa07#`BmAZDO2dpZ?pE> zg2_AP6dob=6y=E}9L$gLNKNadih0=Hoh$M8gNFKgIksUhlXWJs0uco?MvYN*Y>^60 zVTe;eFvH(+wzdb^-HBW~HG4I%y8>;<^a6#C zvsI@vQ!O#%;MSgcWzx!GsT+Fj%WwYuh^<8m)jmE<5;~TPr8svr4F7=k zX`>tgl=cmLJ+L) zsE1Ucim0~k)-ToHDuRnV^$GiG))rw7Nf$3rR+WRqOy68j_bdLZZ9T*&?!>^dXW;e09YHQn$DT??~*{HJ!t<~m!P!h|06k!873MPtmX4U2c9i5#+Y7w zKg$lu$)ee!Kp=^jiI`tZ!*|AX3A61tke9fUQ8E-ClxylUvLQGv$py3G)WxSy_9%2X4I5~46w#fS$O zoh{51?0|Gp0M#`3L`emueRe_HnpFp;TPG#( zv_~_+{7sn~MpcO;ZxBt9KCE;~m;j%-WFXN5U@~{>Z>R(vD~|{>4OjN)7DjW=3GODd z=C}#VhoKo`>FFTRZj9|LrZ(u>IlavRndnfpG;>z4!ai)DnmvnR+1V|XNUPI}H~cm_ z=pa~|mOEtm#lxYNHh+w&Eg2L|dVBYF6#gGVb>1g|~OLjSfgms>Yv<-y}f( z%{M};Pvd61QnIEa*%X0APU_q^)U)Cbl5W6 z;hRnKjmnW7hVRyxE0C}NG@a|q2HTQKwTBbVI=u)%>(2vO$DY(lLL&lTns8hOIj5Kz zm|H+zW%0!z)1xR|y*=>CG2DfLBna0piaV0YlBD^LgLrW!-c^VPtl>Pn+RX4Nn-GU; ziK)qGmHPSnb{uj;$$WjB$;wk0hYBywwDG1cQ6&T`=K#{=o4|ow;Ps2l6j(H1yAzS^ zVT$uuv#80{!gq5Z*Id~^qIOw%Vu|6W$e4-rg8)n zELq7~3&zXuj&-fe15<&`b*uQv50U^^>IF%dNWkz0Ch@zLjBQB5vTXa&?cxV#h@9y_n|6>KU(PrYNDicuTrzP!3>r zS;_{{05M@t#iF4fs&eTWwZ0^D&f1X3>vDD`F1&ui#moK+(Y|XJL2oZISx>O`xHJO< z?koJ@%DINB@cwO53_GyfIWw3AhSwGSTTX9Al`pkuWJTBa$L$M0R0J@&sOqlsjro66 z4v;rXqhBnUQBYH}GAPuYlib+|V{qtm7|!<5O}K1L{bXIFiB!_3?ul#_f56@W?H+lk z_altZ=b74ypOSnjs~Z#iccPezBqAN^x?p*5UA+4w+O=@~(x7=taR>bM;ZMCLZs=4! zU^H8B#|}1M&SG)WOd=Zd&g72*OT=PqCi>r3Y5l_2u&E57bEsmAt?OXoE#;(`O{Qz! zd;jirPG@xefdKpJ{kRLwd^Vl?WvN<9H)%4AcG#F^4mVY|8cLcN`=vHt!9{R4$>|iw zJ&0kK1md^%Yjy7&1a2O~X<}?U8dcvhX5*CL=3F~{-oQ#4rQMC7Rd+SVlT4%zRTD`i zi-Gx^@IDv-#`ul&y8m&X{Mdnj1SC)cNHOeb=bxUEJ$dtOaqw%*Z{j9cYG z%m4Hri@=oC39ZW?I8+yUe_Rk6`($&lyqU^lKBzgL7MO~Lx3_3(OJUNXD(m?^HgG@1 zD1gA;M1Q^&VCkr@A8N4httpbAy94qLd6@n;dRi@=!Y*W;&7e*5R&e~Gy;#(4qQ%5P zalXDo!_6)Q8@EDjdn?F`^;pezqYF|mghfg#DdlzlRC}k@wWzlT#nZhF`I2#JrW3MT ztzyV^-EtRZ1v?QXkS zIMo4+NM<^VQa5cNtryE(Cl-9c6ebUK83Rv1;J-g3lNjZ$qQd0CSfp$r4B^x)w1AXi z{~DMVXx|F1urvLyF7(tp-4+I@8ty0?AGME4W1ZVun)G)p{?-YXcUNZ<;RVnND zw%Qe+7oyGn76Y|8QH%OHo(hI0d(g_+7%-Td6zzw^vG;$IE%{-pzv9DsDG#F@tmBGim{4 z#NEbw&dIN0l7@w7fmY7sV&5Qz*n6D&$}te&k$UOBb3F=y2RGsV-e5%EQfriU``FIl(yh@I*ewNrHg?r@*zw{JjAncHQjA zRxv(irY|2032Gd~#l{VxMc#nrtW&&HUdZ-b-A*5wv^-=#V2DqQtf3>L!EVK*&mVm9 zt<0=U;n^_)0A&(&ymu7KSa0r++|Pc7wt8ACLqA9vMsX=&FS(iKaH88V=b2AxcW>C+ z{c{1d#;pk=>dhcEP_<}*Ai`cn#nSpTed0V&D-RYkUmJ6O;>DWaK&m2tG8gcDcqN|P zItiR%p6UrUfadF)sngwIfDpf_fWQFwnJH6of7AKLKVBEsZ1acLX)zNm>BFZe4Hh5! zM+nOtyx9ZyAZT&}3%B1u^-!70!dSoq;L&pJ&UC^Y)~04_)va$XRwt;~?Ln+Z zq@ih#Bz-ahpc%720f`hfDKJ0T!@%nrQX)nZsq6#`V{C&B4>Ln@(;+FWn_SSgP)s)^GmUC`vU&44J_le_x`524l*siI#r|SwnaT{)y>gdmsUcUHYXmf$pCeJ zfvUOD8?>09b#NKjy8ZdPFSS}KA9(rh5*+ppD|!B(nG5E@<4DXyR|S$J2Q5c zO2_2E%Y|WnBft?0Lg+`&TjJ0>f5lZG=LwY-ZcvAJdDfDf*vIZvk!8yF=_n9zZ zlY91*r>!}ARl>Kj`*rOb^9tYboB)5Y5kMk0aXnQ_IZX_U2&H2d$)Ek%{Dk^2sxi;- z7BcpmD1$YO>3pQ1p|Q89vDI&@d3eL(BZ_(JOhwG1w2nTwsXtj6FF>;z$fAv^>g}`^ zp4utV(s<+w@hl^2>Jf;iewTU=rbalSpPnvf&ZMf@0TK|>+(^2Nep%iA^ddR4mpzLR zAR)SIE8z>J9X4{7BduDO-(&;Eu2zPKA{OvK75C4h@=7LFMddydO*=+;rj;zpuk z@Xx_ZA67R?=aG!k>lp6oWK-O-l2kNUDvK62kAQ6N+ zV-dGqiYcdi7&#B_%J%1~EfSNKhPdweMAYrw=>t6BA#pCOLj4ty=IVQfC0l2w-Z=I- z>{)f{>NfWiRI6u$#Mc0|lUX)DDM7J>@4tx8*O@O$1fPY!%nOP%IP>k;m`#+no`{?q zcqJ77HYne9My#oD*We;E%swuy!zRWZ{9ghXo1(^w#9O{O+7?w5_xpZdB?z~esD1;v zE*_er8*vqH;l3TLDZ>Om7TBisxWgy5>?%s$v^-8Xh>1T@58wmkX$!6j0*>t8T8v2= zgWj9Sk5Qv#XE?JbM}?kp^yG%QUX#k&k#)qjKp&{>6HB2gVXA1x(7PmgF48Hc-aq>A7`W=)+^SFVwEV=@*ezsin6M;xv8>`2Z&drN+qmRzgZWqC@!+`&? zPX9x;gD{;~orvv>%x(Okw!_EGlfTY8*S1(PJ#8(i3(yjTtpvA*QP2>g%0(a$Hm!Bq z!fu5_Z$e~CYNMrk3Y{q3Voc={NI!4dd-mmlQg~gvW6x;dQvWJ^s=oe?axtR=4rSwU z?m>9ShB_z5H6%(v^qGzP>&=kIBycQlnqa!{lR1kN++()@kLulacuB+>3LGzOCwaUH zyKHzOlQROihjw5_ee>7+cvg^!VkRMhV51OqNSvAvoxt*g1fnDSSkcM#1F_F9jz)Ek za+l!@YGQBgoEf@b(&^9imSIKM)HsNI_(Qkzm07UO;8q8IT+<1IH-SQ-Ltf1wHCWjh zeULQDb7Dnkb9?RBKaVg`(Jlt>@?0VPN*Rnpxu&7>-I$^^t$=l!Qlr;Q-?7VmMP>rC zw_4#!UBEcU5JKtzdV;Rr;QG^OD$w)BoN33ox^KR?LpM ztr;nUMn+vBUnX=~UOiQHY6Rp`pdV;D3A!2BPtz>~o|0H9_oI}aAbX{O@zXLja^MvH`pgtp-J*;lu**7u2B}sw(F_(57r1Ff zjJ&TNOyB4T0o@C$s|V1aM;(M1R|2z-5$&r-Z9gcjh*>qhf&asGQrVL6$~oCrl%Sq7 zFW7ahKK67}A#lH~AN`63ZO2vKr5#ICQl?J|gEL+UvNx|${ zybN_*OC@O{!%bw&-qU{R|67tzqR7_9-AZw(ERCL~sFhY}=P5!>Y=9&{|FNC2@+$gv z?L9KDl;>n0PADJyN<4=8OmBWIW_7!U9QX6iw`tUdlneWXY4R)>JxA1c(U|JbM3otr z%rq-35;?o3^~onRZGI3iu{h3$n{c=N-RlXjj^4r-?zW7MTe->=wAhvSKuT5 zD;w~!ZToBW-G%_U?2vNcI^z_YxP7{nJpB|Ewbty{Sni|dvgOdXfZ=<lP zSC7Kc>xk7jF0tK7 zM>z_N^!hyl$3D#IH47cuS zDL3?POd|nJDl1y)-LP`=RMO$b!;!utFq4w!2BsX}z8d^=Byo*H7d4R=Oh(5~?@@dC zXayKx34mUa4+!2i`D%=g>|4Ehy8Z@ z>Y%o|zdFm-C~R@_)rU?CS4q;1b`j9%BW7GnykKVE4Nf_!No1&r*+g7eHH5gVBHTxe zdmO$HTb02(3)y|%i*21H-gQ#02jkx3c0?cmZQO@xP%II&tq*L{1 zBd_JihXt?rQXFGT3;|lZrd8k<8fwWVLuIQW0Mn|K&oGW9_P0QZM?@$0<9uQ2c@#ud zn~V$5iI!%&j{q2)+G!(79P%zwpu-l}QTOba$?exKVKYK{nj_2>0 z0wy+xMjfq0l2L&g`04tF%IkT!7-XgJT)4l-rthK(YHGhd0s@5Wy2uB-sOrbLlZG6- zgaMc?ESeMuNOk^Kkq!1q_A+#?lgL0FGg;eE3aRe{D&I5mH`5R#QrL-4q5-6opfJ?v zsQ6pd^DDO2q{a`7hDWy~wLs?u8$i!?ZOhG)-x|@xu;tq9`)C2QSqia_Y%BX1K?S*0 z%e)HNrZG%JfWT3rL(l6*2)gj6_9V9XyFXo&vP5uf4ug$>9L9u7_COeV&jZpiUjh+k z)Y{;E(FGPM(^WP2Poy(suKPhwv>ko!R90X=nyf2Y@y}J_BaIGX$FPvZOjX37WO?8; z;=~wB(M+uymsQ$?Zy*n}g$5vlFLWptOy+n%0&|afSZTzZ49`QAMq?m8SwebZXjC(B zg3Cy~`YnYBxRVD9I+~G~Sr@nr z1xJyqqc0D=$bL%mQGaBz>AmMB2ea$^@UJr`oG#G$mb9k+tq3AZZ}Rsv9}F_zQs__C z%YwHUz5AuNlo0m2XIX}9n31pR_S^N*#XnuKB6$PSD$w2 zXKRba*`ke+1JUGP)p-^@+*OZLRk-Psn^}cs+$$QhpMnyXYP0-vF#&=D%iHnI1VZzM zSi-dC>Dg>JT{2>z%|i?SQHxb(pq3TxDo0ps%Q{cWuC>aq`OR1=8881`4qd*`W@-_S z4$hz?M)7~0OZ5=Yh;y+-fr)K2~Mnu%U6 zT>XTiWt+i8=_KDTWeAp==>{rRTH#FZ1 zBR3aeA`tW~^Kj3svdzluIE`zpzaSdSb!nf8Y|$!OgyaT|FZjtZAwd z9`Vk{hoDPS{sGzG%wqPjcLXUOt}YUdT%cBRZ|^PwB?6$^K2})FU5_Ti4WTS;lkuLf z3Y#dGg~PaUPb3dRykO{<<1j50E0-17UR%fV>=9`s-k#=&{tW zSO@s;`d|&9i^;eB23VYtFyvR_?;#_-{&rUZBL0bm&^&>j~dSS_tWN!k9T?Za_*I=krV z7rHn-N8VTGz41h>;l+g&@)aONLZl2g;OOdSpOGW8ZlnZ<i6*XIHw-cq(K=^ESd*H`^>~7{UbLe^gp(~+M4LMko0CH~uf zzG!y+@B6j%`tA7Gw!+!s=ftpKy}xztbYwieVoN82rxtTwy&xzD{c7iF#Lbsv$iGws zlT@m1(kf%?D&90CRC47anUfWy#J-2B?1;UZNE&IvkYG8~uH8+6a!2Ppp^X^8R5xZ@ zyy8pw4(Tv%dU-PT7#=mc;?2`8UW|%Y`L~qD4FbI+#gdF#(CZ~%mlTVnysqMh=8%}! zb4SZ)N4Xz0MuUruQ;>ahm8$&T3hSwkKe9Cy*yDzr0LU*RW;v-BcgJEaKkh$8|AnlX zk^#9x3Mlqwd+BuE;;&yva^kF678X{UE#=63|2wB0(u7vHkI6_? z-5(w=^|SAhdP|OxyrvfBg~#}QpMTW54GqwWNYoxIo@Qp{=u1M?X;3oro*?n3W)|NN zaq>NC{2DtLG+BQWpM_H>v3?(hDoX1!}L8 z7_Ysc8HJSFtM1+3$SX|%ie>IDvtEN3p%%2@5J-pWq&JQ8OlBJ;loLn3 z?}z}U53Rhw%a9hu(EEZ1nmyq4km0$E(%+D~wa1EJuLzpqC<5{a_s-(c7S2cmQ4$1u z3`uewXpf#$%nCwCGFX-<>a}%#Bh6$$Atr2L8|vh8k&4yxbeNX2{>V;P-2%N3?wEtX zXHy54Jy`Eab;<`Bn&6t)pM~Tx=QCXu1QJdx%v~% zgb8$SD1qVGvW+@TYKar0%;=aYoP8vXS)P}W@bVc&I=;s8!w7_+PpDUDTf^G`Mu+t3 zbZtpdY&gREK;%DEqHXp^eVhl;&~(}YEf;K=5ZRbd2<3>s9F4%qfI1^Bnc zEUM#zHWgjf+-0>uv$rm`gO35FtMv@@znF-IlcDlruQ3}zo++FS6%2m4a|Qg>1LnW3 zJMB?!rPo1ULj93c17YEVEq4@ZB9S!#lL+QM_Nvw8G3PyA{W-TvQ>{qLp3upP!A+^ zQ%-WSKh>%`>V`uN;6*7{xBt%U=Q%&3h2;$$$`jUoytJ2FB z6ACCS4DTwgq2SYhd*(ZkXu?dzylzl3B)&M`0@5BZy1{64E)7g;xXl-KdJ{U}^0k8{ zog<7nIp4&*R}Z2?Cwa2XZV&Nn7DY+PlQEij)>We+(=RbB(ijexQ>S$!JDJBckc-2@@iS_e7ka@)!u-OQ^E>gkK*a{-);o$d zzp*31!iz-;*RQn=snMa0YRX4C=S$5Zh~`k86HqFa=#Zd5GlXOy+}-aGQ<+;&*Iq^; z%j+NIfjhH5YcL4O$fq%*NZ0^B)Yby|zVj3x=@hki#QzJIn5t;|IEaLpZo>i0^s0fJ z(q54*N+a@D%#OC3TkYHx;1_P;|L3~AT>J;RlVlo11{737>ViuIVY2>&$4~Rmltsq0 z0aHoCLP%7|vE?w_Q(E27#T5=-U?Z;{ZIbK*#|)#G#%u37+6qbU5&GFj%oW|X^oYlq zuNampmV7zoHX3j_JxJ6Lo}BimUC7qXDQt2`4nQTw!(f66Z=5|ced%RY;T2C*`0ocm$m&{RDgeRAN}reI+qt&fPz}IVi#Zpx7c0%u z9mMV~cY<+vj9-pDJo$HZWJ67(D{3YAAL}*K?lJ1dC1=LrOVXvm`5`0i5@mAr(EEXk zB>d^0sqFd2DR!k*IgZx^H?WTe_bl7}4W7F~#3%=Z!V=S z!A=JJK1y)`0kO1!7D&H{F*`U{D3Xs&y4bKBAH~{@)BM1C>|~#$7294#yf#bJ7)wId zYa9lqKbut0rb2QX7cCo5)aMf895y>0%8FU1!C%KzHeoeO?U|m}Uu6Xk`NI#(EtL=i5{8$hJ?#muA(O{xS&U*Hm^%i z>vr#LDEhynWS1T_GU41XJly{P9y#?Dd=ldc0`0#P6ME<@TeZ4;Z66xOwtgSzQngpC zAe05}qhqro+U5Y<$gGgGI0n&y?k@)B#cZJ(zk?kvIEoG|uLUbHsQ)ZqhbM32(s-&r zaTp~_V*-*|x9YfbV@519I}C+6e5P2UMZ}wcz^@gQ7K#lst*9&V_wVjLoye@XuK|)u z7XieP8sL3z`*}NElqd&+-66%Kc-s#9?(IH79T5K5z14!KW{M49<_id|_m}7^s#!5v zx^lWD_ht)IuDS9*MMPld^@A{33_MRGEkN-KIPNXbe(Z~JOR6cD-v-=v43jfsUF0kc zmNzyj&=5UM^etLzUvUiSB6s|s8|4uhrYVI} zL6!iP+=M8)Ya{HdZiFEK00#2`o^n{EM1SqIXfzTbj?#?P*@WAJy}fw_%5+|6GlP~S zrug+V3ZDT21k^lK0+3+%$T>k4YuV8ZsRzuz#pT4=%{X{h7xfJWjQFT$4JX9~%sua0 zN7gq&Z)=h+s9kS%Zm9b4Rue7A6$($OX;VChtj@X(g_r+0kO+iM^NP!8FkrkkFzFP( zSL2Oi-k9PQS>-c49KtFRQmg+row4<>nd#L6BU15&^YC?-FC} z=$rsSK)$~_xR_I_gY`h(vQ**nOr5u-xggS`DhFFSM7kETM6!iLfP>!IQ@%Q2%KlQk zZX+S#n)Sz<{Q$x)@136@0?A(UgnNtp{1dYJ8%uwr%YZ^gb!>dz6>G<8d<+|!5)bm< z$}Oj<9S!Orcf;Juj)9UUQ6Ln7DBd35kRKhw|NOLTVAf6!N)GHZ;`*tn(4Yhwi$ zUS{QDS^P{=w~5Qb_m$qRLA)IzZvMzGttzFgKEPGJ1?GFgpmu;HrO@;vI>T ztURX}BO46*+SR-!9PaHaGL3$XX1Av~t@_txDFr&cLRaRq=uW~1y$0<9i>aeRtZ{`QuA@_h6;^VLO z7~ivr#S?=uu;U-!jF%81`?o~r@4g%Cu}D^tNiggzE$|Iqf74uGag%AO1bPyQSX%9* zFOJF3pR?3qJ393w48qNCRWWnQV)LzgCoAe%WsQ9%ppxVuiG_ISK4hWRzRx5jQ6+^J z=S-lds-&VhD>5&|&_Rl;ZAl;zkoz;|dzS4IzHP1F)T8X}mzYMcPw)~kq08sHUjan< zvA4lBoc|SaXdLP5Lc3g$prRb3BV_;`sE~AVVHFJ&)pu4J;)4Ia{nd^`T#$?Yk2e3m zs5*L8uXKZsrj+S%3m%2VeNNy_tjp`dHfAu)wJA2`em0}5Z0dq*7*6$N__y4gZ{L1G zV8>NZA{A(gk?^>kq;cQQIEk7EQ0J!ZU7A!^mYP#o1L2ERF`z@4p7V^;BFW{MPr;it z+o3Vo%}H;UAqjkt?sq4+qBB_zM#HPJ9;z}|2}AgGVM?rpvD=%3r+n(w)mV#u_MRuy zM@uY61jsMaEK2@X_fibk+dR{m*`h(-!y{wtHCQb$f3PQtmuH5Ca7Vg<=EgyeGkdfb z%b}9L&cEIiGD4Zru3srgm26rbXX^I*;*(#t7LP4(DrXX^+s`_Yj~7~8&S5KJ2bSq+ zv3t<$oqq3Ev-XRi>zbQDuu88(YQ!Va3>LRXoOlo!5t6tv<}rk8I2G56}jxYfP#bJS46SIgf2 zQRx?vg3#6Nmc=hfTOJCJA%Sl-URiMz^=q}G4H>U9g#Cuf%Sn*PdS8N8L{ydHCcN~@ zHFY!gIKhLffYcIg0d1dzTv1;;z>uv_ZokfLTewko5%yka%6w6E9#{9BBr@7VP-Ha4 z_(LFVxwfDY*lmzMB&`wc)>Q0%r<5vLg+iVHh{h+Y)50X){1w4`Pl>=Ws4CNE!8VBu z$=MN~OD@|D&XOPkY2Ja8&JjUEDHXH~;vyaXABo;FC-#i$obpab(@TA;T7{139doe) z2RdZ7&Pf>UQ0$UG-+Q6CNlNhnzjX}z{QC4%(S_)eG7593l%$Pw;i0mE?~j=J!LwrTXC$? zMQL(}<58ifOoK;3N9x`W)SUf;t-FZ0X~kYN`V9N1Uj#A$00@o&o^sf^H|}w4MXFnv z<;lQ)II08YxG%KEK7OEACFPDZ=Bv^cO z62^3g`8*7Zb~1g6aaq0c4A3oJD$q;Wb~;;b+Gl*X%KyNALt9~5099qY^YX_`NHV}+ z^b>Jwvf_AA@{O9opN_=>BBG z6)Yp}r7yHgDCfNe4epB}F*^KjzDBuQot8QNzceYDwp{-O z3SSg3mo%)!*+GoM?|Q-X9H*id-g z;BITXyEyaQ>*-el*pp@nd$3tay;Mfg4(^gR#wsN0jhdumrVM#@FJbxX^) zv&4!J66~%2Bzo0&m}e|P6-1`pt5ze14Q=}27xPInj4|qY4+_6i7ghmPF6gHaZPMl2 z3%hsx+NJzJFnHL+%8rtuasF*M8$_exrCBXT zA>MPFYg~0uld3AlxCk?Qw%%q}#mlJo2ybowSYg1t>98cN``0k<-+qL4a2bGfj5UT~ za>4p1WwFbwVJ_7+bxKs5F6x`v1Xr2Xy+d7Vn)Fx4x-^)*|S!9v9Xcu~`AG3NA-3Bgz2M2_U?F9e~W4!kD zw*j*#$=i;I&MYt;FK?FUHSxqRDkQa<^yUf%SO`PVNhNHnJlA(LuA{rkx}i*wm{D2z ztj^T{{GT_h&`nufmqN~n)!(>WNEV8SJH9|G0&{gLc%$eGs39y+RIfU8M0ge0eNoqv z7T*cu{QWqRsj)xH@B09Its;iM{wSI`AJi&YDSI(wOjnC1?CrZ)ouTwx8{`2P6J5$e z+c0lhx4uHyEM>rVZx#L?-M zC-}~>aa0u9#!7UK7Z+;Z}|wv{1B;nt0rRUgg;EQ?NP_ui2_z*IdZN?Gfg$* z{2k(DnF558$vY{m1$(s+MyQFsuuL80&0mdgA=!=;R;&EbzjS?>+0OcK@I?d6?BAJ0)rUU5!| z&*4Xm_C^5CKB~BQd)p+DN#TD4B5Nu6NoNAqP`!byPH)t9GCrty-WH<`1%(Tj*ah86 zE~1ncIFzLbYf!ME37^-Y?y7^%-#-vfwWcR~n6-noBQow*s znU?aPMFutwak$D)t))y*8xvFA)jbQjg_+;w{+WoIsont6!H|92IYU+8eb1i7psygg zx$8}(#O%b&({Uz;Pi>W1w^yBP-dfFX5@PLMe*OPcmF9eoq}|1v-X|6(G0)5f()Utn zn5usUWd0&3Q}g zO#?_oXQ0kLYMQa^5w(*v*g2`OoK0Ise?w9(K{ObqCukbTYD(MBWd%^zR?leAl}Nqn zRUH_lxT9B z?64VoakqOjB3TkV%kj4pz-=&3an++JKa5px3?)9G8&CXsq(!PiB`mv?>&vxOo$fis zf%f6irG$3mrY|PT(pCEwz(wpH!!`FR!;Fsigsv!cdIM#tXx?Q|5&-#b1ONaLVL_U6 z%|Qa!OKViNOr`(;0|5#DY^JIQGwA)hiLd!Q57v=XR=i1%P1%14l`HO7xKb4x>h8T1 z1w{ZJw+&hPb}BG%;o{6$*9J$$EU{aKxw_%Y&9 z9Uvda0RR7Xx2je9_i7V=KGiV2w=^mpszkmso_|3!Q4Y+#plV{Zz-;pD4q*J^D7RoD zT|q{@1eO8~Az*kD;a2irBVe1{7%Sz;AcJMK?+c;6^>YMm=ES$>?T*`9ap$Q_&fA(I zmCrTzdvn99G|XxWFrt_8icv`1nm5eO+D~mH>o!XjWpVPF;ad&8`wC85*h@Z0UdiDR z3H?><=pAz~0j$9oO^J2 zao`ca+!Gdx{grkA{ufa@ zww=O1e9L;q$S;Ot#R!H*raP|wnv`r{U9PUa~= zkG6~h2D!%rZV}o}>hUycNGh_rabz`K!sPDHKxxeGD?(Lo{6Zr?*Mcu{N%T>KmyT=J zZ`k=9>k`2lNzUqS$GM3~t;DeNk(O@yKoaBZK{T)=C(4cij49$W%R3~_M!S_n4^-vQdE;!ESGdiNW?iJ0)IcM=w1Wt;r z+YlXr`tGy#pFK}8aiZrQj30VedxGUcsoY`w4!@|lbatm!Kjk075NEh%OLH>ysRufR zo&4Q)p~2y}L#jdi30^7Q$PND}--`mta2(b9K(#zzYYZn^`D+mW%#?BH;#;>irNDI(%QyJ>a;K5lF-IIRq~}E5(2uc6mJ8YQFWZb#+ig_| z)%#6+GVB8G`T84MaG!>Q=2>E*t7LwHVjO3uLy?c>3@;$$+LMQv@ngGa3oRkaE7^MSAF z_Ls4H&yL~#76E_?-99p1`f~tabI|sB34%^e0#I`nyo0gQv~N54Z87!9y}+L2{WIH5 z*y_fdOU+5yjPT$Y7i+k)gJ0}aBtStqq`SQCval=IrW73#6<$TQS5YKr{5xtXR3@N* zSv1V3LNK1`Gjx?&kONSZkHLC-QweoH&hM{TX2V0_wm(;Qw&!w`BMS{M63h%*_(_U& z6~WRPS`qncB+HYm4}(i3*~^$tA$=87HkuIS#WNj_c6rNT;%&*q6f zG&$~kbQtR~h4Gb9TYOHrKiSWN;KM!8yQySjt#MW){^F>GQXMFUkbriZ-dWwR*0F8j zMu5iW*6Pk0{Hd6i6^&3C6KXFQUE(*EN7vDPN52k6+YVgLu7k89u=T_hs5D+SCv+Np zOZi>x%Dn24aelDxo1r$p75Py`l$#;GQv^4xM~Nq?*CmaMrQ5uPd`_%t#s;@ohXjot z7@n9yd?Q5t;RrN!OM zI$*RHb_$pXd(|+!2@0(wnXe3hTVkeWTvB$d-~(hR%``L`pTsZsl{uC< z5==HTC48_4%enS^vOR(pp=@UgqXi`}@$BXAY=lBr(>+Nv3r}mKP$Z5@Ug7rR`v`ixhO~XW zfJ3ws;d;|EoCO|h!k?UUh>Y4do8AO!UqpeoW8}c8b_qXe1qv&1IECprO;jbFigD-0 z9(Onj9D7e{1>!3J` zGp{XJ$Nn$9)T;%=NDnKqF9Rbtl)$7`@Il(dg;BVH-+a?FfCjnSof^D$o?2h%fb*b= z3XF|AM7>bIK3H=jT+ZGdU>wtR*XQZ(7`;RXhd~F9fVd1psY=lN@Kr6^*u{L#h?d{aQm1f+LVNox_ zVMme{UY+#x47Nbcl{m}0)Mgz!{4-Es;H;Euiv7mB#L>PPVr!RUtlrDlO=SS82`G<@ zL0s*h^l)-;q(9!+6H}gEyL*Cc42EeD-7DQ6NSY}0TDvvMtl%(3CT`^<2KwfwS;n$* z5L?s-BkA-0R25NBsNm}288WkQQUPt0?FC1cX*}Fv37e=r`I6wD$ zJH+1IOdz41+ieYDe9U?jVDVUiU5p&<`0zI>H?_I&&=Y>AD;B+V7ZttE81Jd+EEKAC z)~o`3UPO-8K>;`I@Ib?10yizETzo74?bKBNJ*vO|cz2D6t~mprs422I)IJFdoB(A@ zbHETk<$c#0^3=%3gm&3QG4nkzBp?@90FJ*Vba(e)GqYxv2qO~p+L_-NFwgYHQ&^36$QNsG`~4M_Qn;kQF6=-*4qVxcVlUj zb}Ng zYyAU<%;vK&&&zt}xW6g2*@c*Z{CUJ`5%EJ|@$;x%o_q(K5g3Ia@ znI%}8_TgNdnsYar-SLB!z8qMORoBLT)lF^(ssYzh+ff)+hw+pGg=6}z`BL9@i+8de{xhSUTus}( zW>{`aOlmg}HEjpFmWAA^*CVqEI_d;DiQ#Grxs*of#gSj2ZZZA5G?U(ewj7qCV^JKMj3(6R2 zSgAbh{bnV^z)+q|CZS=ttkyD}@wweh7-S)^D4QE(sHAWYNujiLY%(CEjBmk3t+lfJ zvy%Cox*}zmhsvlzBN%yCk45+CLP4z^#qlktCtriY?iZgcUO$14@|h*n=w z0F!F(Fipfdz9RaO&)CJ;OoUqCeNdFY3mU$#rD`N*9&A+IJ5aNsL5)SA6oaVV{!WT&*&hMeHs48&Wo<_BxxLw8b5DQJw{AWmD$ZD{9i zERd|oXS}fT0qQJ8%8d`QRVv~054zkHd&hCxmw099p=llV<~O4LRwh2&qqgXLMEvnu zSglgV&6a~MV;pMhjA}%y7f{kFH(+6g=JEp2f4bFV5lO&UbkLz^iq1F?+PFW)oa&(2 zmceL{Qb@_nNRfGYx)C_2QYWc)ptwBXWd{HN3w%MIgILK!ki2L9PZSqDDoULGH<1K_ z&rpTgB<;e_;&R}6!#yiytsAADur^m`M!7l-{=DS$Z+v{#wuZBgoE1%a>OO?l3I@L5Ig80sW``REAHtvVW{!37g14x6^H{B8&HS zS961&4*L&6R&7Z8LA}UM>&MrM3R^C=;Oshb84;>oFDtI)7cWlDL5>1?RA4-@9RBtj z8>jHG-|hSo;+Y>^E*A%1!S|Bdp;Brdu|c?Wqb$cd<~psv<#jzlH*b;i*XwLGKDE~4 z?G3Vw8QjrT!s=^6t2G-uC9Mm#$f5+Y&}Q`$UxN|Z8`5bNJPK~>;1uWH+`^AH4ZtZ| zP)LJhHZ;%RIX+WhUlUj7MJ#+$z3o58N*#1e=;R2Ejs*}Cy+1qJC?IOFFjl9Fmb4Kpb3j$rI0cHq7%6;dX=s{h`_YvCeb!KUk1pAKZ>+*(beNo<>|#+U|iPVPbP~#z)`k;`QJIU>s^F z2qyd>G5{xAL?)6%V0}D6f{dw`LjySyvlY|?7?HIZu;#8%-LPX%$XLz37M~r<;6yLq zl5aBDhwszhYG=l5{Y$B^8IpMk{{00DNZvodjiF7+YswEYZJxPn7||G4Jy&6u3;E(! z)(q2vP2gO~tx2@_WPL11ZxE3_h7O8Mb>OBEJpELByiaZqQ@Fc5UGZQ&vfCZd@*=nT z&%jxn(pw)C($vKm;DnjgW8}6Kr-E>trA52m|AQL)AWD+y7b z-deaDKj2fPxx0chkRSQiig431$Jjc`k z%kUFljqBFNd3SQecVmgrmJk)6)q>fwk)eemvsie)Dj2r+Rv3>^@z{e9#6Ax$gk^tr z?Sw3O2+zfrHdVdp+=;3r{#iw@6O4u*RnY)V9ygxj%`kd&fQkT6g0xh$CC!fS!btl$`jZyl< zJv7mL-rAW??i-MNJI)tPQY~1;wX6o>Wx2ibU@gN*kd-&aaKRT_UU6~-ungD#C|kTK zte1^_P=mhC7n&}V>*$YR1va01hv^ucSEJN{Y?sYHq6t?gC zDl89%nU*$7x#&+qS~0Q%hqj?@!3LU()?Vf#V)+HxF#gwVYn?@@)e|uh8C?N>4SN3F zG26;G+ZTK`=$=~#svZ^0?k!xI=p%F(fnoH%c0MR5A*!X?OXt03J1cTID~S9bv5!jU z67?JQM8}k%j@&3}08lbotx~U%dG%dw=9Z*V{#%NhS!K5%G4?e3j`4@b!)m&g4lu(vCj@f7i_ zd+chRguLhfV>m9cR%yq{t%t%eO(4F@${k86S5yf9P;jW;Qj< zq5O-0O5FEg0AsVljdzbs%4l=h?DgbF&gkXP!(Tp3L0-1B#~V0iu!5ElHAMkHWiOu? zllpzh^5LqND=$g%*}JC1R^;{5zqG11icP|=7L+pN|n%PawDGA1VH{@VK4HHn7CQA!kpy!EBk+-NQh z9Coa+HdIClgsvRo)pZ=1E&<#7^>8=1)*uN@v;h#MP?p7PU4n-2$>lpzYU|I{?%P zsS!+dU4&NRGD>WKU~9YPbnM$A{@Y^V#=+juH9kPNJfe&e)ggG||D+iZVtbHci=5U8 zSw!gkVL5C4f+>|-0ftpe)gO<49h1YSm)Slj!-AN`U2yh)ms{mulY*d^uJo9O&pwuh z@JnVn@XM;!KgL!at@})8s6$<_;{{+8pa7*#-vH0nDmsxFR0@R9j4tYk1FnfOCzH+V zi#9P*QZ8q?zm4!)BP&LR=^}t~NQNuWLq%BCl-#_y){mC1fCvmMMpwf&Is&x}O;Y8( zr!BVd`65O(>`kF{b(jTtgH!e?VVu2eJ|^81=fj7F0@To|N4 zm!eX01;xy?J6{{7q?9kwu7M-V0+cVJ!Rp=`wU_*GgtElJk9pu2$LCk&D?LI*7l}w9 zw@qN4e3*{qhL*730S0C}i_3U{%HXZU?as|MfXDo$H6BHS@K2v zqtAKxGC=?U2=)Poi2Y%*zggV-^)gjdb-|764X zQVwapll8pO38lzoB?V86JO*Wc3J3{_?m$?{;~W`g&nEJ3d>Tl?x&V3h+jUntgTbb* zj%1M+%>GN|Ii4QJ8u*%^+;38lfYrKJ+IcN3KaiQhWdJNtC=7YDuY?y|Z9i0NMlP-_ zrTrP}Gx3EBMd>yiDv+ps-uL5)_7rF6?Oel$4IF?zWv884KQ7UJee7*X0P-5xx{gQtj% zF0y8ciNHP>1GHTgKVFM16_s-2%$1H-4Vf|llHqx&N$z#Hj2if3(idM8-c2i|R*Pvr zh(G=vI)UL)Ns0agPnY{L4kPW_)11HKqsqzrYkRe{o<~X^^f4qW$z!NB^bZ`vB;-w%8(>GKK3?@+e`3IBR1AQURQ?j6+03m*8?;){ zP8P0-F){(DP2ANbnLVy~dy0&ITpsvef5dQR6_uf<5yp$EnTjqKFr9WW*?an0nZV?+ zsj)4FE1g%t1sTrb=s~`Yp$k(CwmvO?zfoC#D)OBx#DMt$E@0MdVW3ZvnOTw+}D?hB6P z7d{Xw?+|^e!-X{0lQo4#edjq}t?I{arb)$e&E`QR9&gv<#<~7q7;BE%1p&yx2xYR2ojS}ZzM#k|N19x1Z$z0U z%O}U>#2#K&_><_D$7z2(5$NuHDq@4NvgSwAE}_#25i9(u7b}_9Yie&T8ONymu3T-s zH#`p6;RCX_=OE2ib^ilaq&xu3?! z-^aycz}37%4XZ@g)bcwTjf3O>{9yfsqQA*+GmX*Q5_9P`A(Wi7a_}CO0-OrfSpKAg) z!~h$c*x=+!=YMcT> zF05hs@SbzjBIShkFozVv`f z4>T!s&+dCv!NB%xHWpKKxg?(4KKUjj_kp~(-c|Nr%m}qxhUAzO@Ak$DS zeh^58*Oejd|$NMUf&q#>Q@tO6bpUNO$HR>X#inz;9M&HS%@zWC$YZEUBi@} zZc1h8H%t%VzQGHANH5B)iMkvCvoaU4Z|?a7@_dt(r;{SOM~|%|tf}o)4`UVXnUf4w z0zpf0lJ&>Ei5H)7NzfFs4+lytJz=84G~12kY=qpC8T)A15SyO(@TQ{j3TgaL#*5l7 z@yRj>Wm<6s3;AlRaPc?$8ol|KKyUyl=Gj+#71k-9iBxD#acp*elfMC@)5sW3x3R`w z!nxk>aK?5EfJ9sr(E2ahVyZUd!AD}tV?cJ9u^Z79!p+;J98?ioR{j>wzplND>dUIi z?Zj?mdYa^lVpgfndd`=e-guj1%8oCaOLwy_a89d$_S*+wq6=2$9G7D2VJt&5j@>5Bv z{$xjQm(n1nVs8dl#|l5UH96}-GWcSsFqVPcBhoC%Ek>31dmBLHAtZR`*n>6oWa=$c z4OG?aE$*LXC2JM5iz-Levt3@Jyjqusii7_v(|haCX(Jf91%&3??7Q;0j367_U)r<_ z$LbIOkM0a(bLVL3r~Sw(sKtek!}|Sm9Da0qt3FfNC zWwG^Y)C^8Rn)%8yoW+I-?wX!@K_&B0%tbD^HEhrg)ps0%o5#FM5QezRSE?`d(m6e1 zL+ZG~|Bjg_0w-b0Ie1UUN%JV9w1MST=qH5qyQv^*4){7+Fj=t=WF2_bRhwOKVh2rT_o~0TKV?E5TvrJI#dVII3da zf@2GG*TS&9)xsiVT0}&5caS8IjqfYn$f3+fnN|GA#M9W4>w`K+dA8}o3%s~U1L|lI5hd|4SYZDw0i{CG*2XkF3t+V&KK0_8QM?$j zgiCl*)DNLmo^lByRxHQL5|8Z&KyAj$NM;MijDXvm4uiTXW*5rti4dnjCJB2oQ0Dih zl3yR=$5DdsP^NQEQ?o&NnI`I;&=>%>+IOrDhHX9Ch#A9`WN{g$D*)N)%k8t7K!n}3 zq;4TLXNV3%SoVq-YxssAI|@QRGEprIHlm7w&(}3Qv=}{We#@`=029BL zEV(L;UNMp9^ij;g&+eGjDCs7{MVKT*)#QpAU>{&5WH!m9@%J1ALlBsI;f6R-L6%^= zNI_zWCN~_EQR{6VB82uSI|>9!%@7MQ@^O;^A#0m%Al0#4`+dQ6r_t7{D)74tr_~c% zztRmvN+W9jxD1D7=c%{#ak?zTb9emFBE>mVvI38vwW;m3#Lzjz_u>3z$E28GFc7$X zQjwySw;6_$sl7%7j5P^k-s8=-G241+#`Mkmo?awb5>dKsrQHEJyQ0*W^8nFqGhPy& zwGhrqqZF5vxjztjvM^Zf1(qZI3&3VYUIp+j(whFcI zbJCat3|F#Kv$t(}*c1$^#7{}74teg?c0U%`xsxg}wKJh!(SKlY(eBokf$-31zeQl# z>nAL=a4}o!1C8KPvrbAyDP~RmRyXa%`)f)F2^>;e)=*Vl@OfCL$of=D=0k2BHlG%X zpD^D;5-SRfXWL%d^fZX$AX6+5j;Dn?+!t31ay+Q}Z2|mxQj)jQ{x0sp(bXsE|EX|C zgV1_lfZr-6NGWSP!@?cl>=_L5UYt!`9rMeES5|l)hJlzb0SQ zBs&pCF=E6Bh;=-ZOje$J=Q1u{AF~o@^N~cdCANH`*Tn8{com{ki|VJBe%1>;7xx7T z48ge*>Xu_C8}IFw3B;FGbAK=yM}Pptrh{waIrF6zh<&Tt6K4~y=j6~FI(kX_h*70; zLEHYUye1lRleR6HT1cl{4AwCxWLFGu6}vLmz~~o4(y2xl}%O;HGpDikzU0+}Pnr5E00>x6!sJBw{2 zD#tN*6OFVjXLz-_qZw5#MYgHD$vt_%SFO{d8#`&$TODQOXd!;r@Ss{-&PRPw%ghzj zuVy9yI>do}ip&=h0 zM4C(m#=lV?d8#Qcs21n~xIwALB1{vdx0=J2G*cE1?02EXMh?YvNE2{_@Z5ck{vu|8MW-j6B?UoHF_; z3?n1=w9x|tNvjonlmsrjbd%JWwHNT?4pc$?<~boEAG_t*&A}STlSo+rdV-*IRZIn4 zgYu_gl!AimLw2?Uo_lYBV)!b?)_%(TDjmpDJ~#t3m6#QY_t3LuW_@qlqV{^=@)yRu z?I+6OQ1P*~4%Ye6(?9J0ktH9;8PqsiC@>fF0ecT}U69!Hn+Q4~+FLGKy0V{)(*-U;2I10>ep>!Bhi zX5Ia1hrK;wwAI&&R?WE*fi^HL%Oj~amrg5@m!wLtl?p1((7wj;i?h6&Zv3DRX_Ld~ z?&IFZsWJ%y2v^P}N7@P(dRK^c(pN0%o-wnLnS#agw!p-CCSoiv{^fGsTgG(xV-_rQ zHEgZF2~;Uvjf<48VrtUV&&+5hEnk%glrl39m&S;jg?dX|IWtGk-Yw&oFtPhlnGxjy zq?oF%==Q0)ieP%U+0i+|G|oVxwuQfT`92UHE_`Q~t4wT+psOjH+gDbx7{PFK>6C>7 z=}Kpp)PSS0>2&7q`zrAvaWhAVm?@+qIN#9LaK2mPjeVHKHNn~5{|(Fz*-LE{4CvF>9|X(AsyiV#7-m{APJ*E_q(o7(ki%9f+X$LL3iX?AGP zDS3ovYtfFJ79}`&Gy$T&+D&JhaGNPD@_bsdr%f8A&L3RYWf=5$vLzn%8U}qLUv->g zbC=2zb>e(US^1dp6j7nbwx;RHL2zti)vcDpwcU*`t{+} zZm2x*PY@Bk@4~^2IY}4n`+rVZiRu0*oDv-B z3UZ~7X+Mr?lK6r&nNh-wMJnQmkBU!!>>Fjj=j<@nBHW;xRwx@5NSz!I(0Rkq>CNK$ zcCm>N8tb-B7;$0VY!SY6AZjpjGH9;(5smTW>n-L{YKeY8G^pmlrqapDw`}ApgjhC{ zz!K!H4l?e;@^M54TOrfeyMdZoJ>!o1R5a>iC7|jb1I#G=X}Ga;?g9aPy{Vpe=3Q!` zJnEqD3?K#r_1MwPYVd%W&cwsGyWToVFxh_RpX@F|Tq&JBT6eB>5!YQ4s_Jny&-4Lh zJ9$_@hLZz6GD(^&PcgiZXXCMczGhr3Wz0bvr)5ABcj^P{sC?Ts?nGX4(i%MQlpvVq zsaFW6iQel0C8wRpp$iL1lD9w3l-`nP3_)kmc0}<i)RXqUzi6|c8VHkvLCZ#nXDwT zVlbOM9j#c__hja59Jf8P&Y8JgN=+NBIL$-bEQ|jztC(vDWx@ICw7(E}(sdNw0}(N3 zwzcEicR%6dxXHE87-l|PKQ!5&Sr`p6tJtiv*Qav-EIXECmv}v*T5LebmG%PmXsg>_ z>qtj=&%K_u^XS38l5B9E5SI^W@WYnO;qv?=+xa2?nNkTlE4;ug52c>ft3D0{F9p0= z>n*xm)ySB2663(AL0)51*UQYBCE~^Y?}AwO<(P)?Z-|Gw^ahuPlbQ%LFKGeD4yEn~z(SKj{l+SK!qe!I3^*Jjx#u3<``T#cL+nI17A1RbkWz|HLJv z3M%tqjO5kiKhsHoo2K#a7mNwcH-@rHl7UlQQ@>$;PA+O-`n1ag2XHh_}_OIcpAgPt^$6r?xGLb@Q^;ubRqnrhEWP*Ds zlgwYL!w}-TdCTDFU*B5)p-`;xvRki;%A{rsvD6q*C}XfrfZGo5qY*8L(x<{PWB8xr zq-gwadmY{Gq~&K`+&gxE{0pCEA}G$kURn+f;_doSgHVYiHh{XU6t1{WyBt1DSsW_n zzYa8I)H6d(TW_qOU?C_Ar+*(F%Ioe6#NVjKn$y(!t&QUd4j;@6PlY{T&t-~C%QEL$ z!^r-BE1ubww#HvNsnlf!t7jNfQidwJF2Q+2zbVutQ9xI7>b)9#7gKgD@_AyD?d2C1 z*I%6lkQ%Le{ysqf9dzAGmb0%N8Ly~d$ZW4|t5P72oHG!t5k; z>aa1*i8C~Set!T)ZSQv%_ znLF>X9H znkyv4-#^pmR4|HZ#G= zj#DEUgsop`I5I!UHDlRyj#mIN7O(eb>u&3TuN6x!XaUxKhp{ub3(&%WuCJ$s{G$Zz zJ?-p_&8Krdr{jDaF0W5esTnrJt_X>Z(OTwQ{Cm!UIf3j(P*y|g3q}JCS@oVbfTsGY z+K|)7;bwx&?7|WvY|NfF`z!BE&5W|Y0Xvt&{(quO14zKQ9i+T6p@gz<#g+uYdleBP zj#?%tz^e$9Fkx>Wv;)xy`3{?H_v!1?%GTcDoUUjq<6}d$FVlZA z{g9yrc22If+TnWFr1r?-=_p_X=*R6$Jvhj_=ya(1+635D8f7=_{(<9$VAKJAib(Az zKvJxcg3p zXH^M^aTbZ|?OIQ-7)#ou;wfCeCFvxoTyMR~ zQ(i@9yx49$>dQvG*$iyro=pEgU)K&nX_0%d)b^@=rgH+qt9jHm-#xXe6JN*iFLgZQ zR?zoSSY_o}C3!V-1mhPZ@$OnvC=tr6xsJw3fF@7S(RcTGBk{-KP8|Tc+GNipq-_>b{94TQ`0L1`|Z5>OR|&jIH_K<07{Ewc&Zq!U}A>{KST%m zrtN~{coj1reY($yvR4$hKqn@R>(lDnXb4^j@fY$G4e~ER8h7!5K{b55!N~_#5z;Svh$y&m7RAxcDJuTmK*OqL z{CI+0#OA-WXU+|BG}|U?nzfU#KCij2D3UQ3L(1{*L?&g8MB*f1+~; z)GSwtw(T7}bpclXUa7OllZzK597Nrm|FFSh&6eMg$^3LZ_7I7RXb0^QC319k_lmDH zW$GsvwCaktU)mUpmCe23hg(bVu*{m6JP4616ExL(7mdWAn)dX9Yxf3;?}WI#17LHU znA6!h{2n8x=37r)$@tU=y8=YQeOQ!+wNt>JABAD=1sYH|I*hkuR*>dBWfx*d3?6pL z0c3j3LS*4(*NrPssOj*%7H(%6`gpS65UeOJIwFujkWYdwas%0_uqA%G>~sU&M)0k@ z8mV_u@*~19B5O=I=Pn1wv`A4Tat81DudKU(@(?6E+8s)DjZv7;+6{PX`A1?MVGrrI zAviIo2p~>PO2KeBlK$GwmN?&qRgkJ2%UsE-lcfjy8UD(3&1hWGbGux+3i#gBc}s#9Wv)g*Mg|I6%oT8la;R&(4-h*jfkV80awB*j55C5!3VM9?_%d_mKb17_~Nb% zUKfd8_F<+K)u94%tnL&Y(2P;B9upkg0lKuH|0MK@$MdoYHza*7Y?vDVgdKEH;;irS zJEhO6tp5$XlalwPUz9>e=&&qbKHO`J>CZLZWW7 zhZp`Paiwz~B}yCtPLzK^&TX6`wp7}hRQzescJPdXxRJ$u{)pL$*H}B{q~!}|SS^$o zbq+{OgXl;Y&g;4TA(nm7l>(c1ZYtNR3-oK(RsW3NvSrll5UoprlEo`0nWZxX$9Nl9 z>>Ry?{%MV{ftmOQdl(=FyQpusm%`Yi6A+pg>WFw8Id^6N01UrDo}^gGLy*iR|M3dI z7oVDF_t4@0R*3y!s9)||Aev!hT|1cwxI65&80vA=R|g_Rw%oXk4f5ebg&924FadG3!5Wgr+(@7B2y#Frc=pc@XOU9GUGD5ONN*0toRDD z;jiK&!5q5~z3Uh|=d`sy=rmn?E0U>qG_iXw9s`hAvKDR zmt&Z_#%tQqGn+onxJj{|5Mbr_Q)Dqjh<*LGM}F8M0`Fa<7m z8ZHYPr@k5tN@d|%WRpUkP(eQ{8OXCe2_^tS=B_PK?p`%-##LC?<1#24H;;JQnTKR% zrvYtqZn@yE&Ax8Qiabe!q$Q~oi)qYc-a9OGcv$aU@v8J2(jl`knK9!*dH-v2J}?+O zed z*yD6N$V=UW0{;FOPA90|J;wSQL9mao@T@?&RO&+|!)MK^Tr29)?os}DM(ilBGVt^YaS+1jNeG2gWv zgO4cJBtn`e4k>UO&qy3V7hAbNDpH zmF3;G#y9AqI!3jy3|GSVVA=^RK0$Ot6ODeyRjJa z(n>W&EfVYFwZMbV8wsa{76})$*^bT=H}`FE7+APX8Us6i6~X#ah*|**D8G@tOe46k zu?eBQAdqF>rQ*DyZtx{`#U+63B!c#cC!+tpoLK&miMhD9wwh8VnrpIqW@kj;(y*xS z;OP_)i4Pp#aKBG6?ELI*d6xIXC+dlF%Jx!}>tRxb)VLS$8uX6Gxrw6-hOEK1n@ zA~mlm^6fHtJ?MD`_)T>E*agZ#y$BkYZELglG^i&f>^0i(LRmY13X^<;f6vC+TZ)%% zmJyk94qoVqlFMXr6;uIXUd|=7m9zd%J0^`9UrX(|eO1y&IaW8_D%KY?4=hywU05`U z%84Q}wKGbqAE!M@zr4X@BDfacLfdd~F=`y-o=PEux9{Hs!s5gq7BegWoTuqST@^U=Kb?jbM) zC@j5`JJQ^BZ~P!3`vFVSQEY2JDH-6*U@dNK=4boM7+hJO^a{n#E;=)jz(G5VwW(q7 z@+B0M5qc)VE#pp5Vl6{=B>sa)vrawU5)=v3c?!V?E({NjG8OhqKOCllCs+wD5YPe| zKl;UJex5FOhrGuZW8)1)-o&K{%8&dd-R?B3S7z7;ev7x`#X^2Wb|mXfU$rkTh%di| zzawrc{lqb9ujUnQhD`=|F`-~PuUCdn9MBRTR~ed2lycDzN1*xTm?knq(CN^=@$<8_ z2Q|na#f#f=Z3f@rU5Ddr${d4NCW9ba2_r15gF&4pXH{TStA1O5$)7e6x#(Snr2ox}QUNkH~>^8HnXeSi>!Lyd|F%N@jw*_BS= zHzO)${Q7ZB1#r}9D1#AV>`ID&SKV8t1Z_#*ttUTQ36My9pi^X+!gqnv62szyDoCdQ z!MWLY?C>;An?ZyB!?Mn#njP?}p1WAM`S_>%G~p{?2~rM20Bq?D_jtOuYqFs}V+aPMY} zA>T+$0iRcF42Fob$69C&szTZBk@39%tQl4stI&g&n=90<3Hjc9Pz_rZ(%3z^G)13@ z)F!Qm0Mv>+570eEgms4u^Wp-$TVxahtGdFsrH;=OSnaWQf=4|fz}RV!mV@S%tUU>@ zXrGJum*$N4S(MNu|8I7o2;$cOeq~ksRypi;uq{#be!|Wq0FgC;DhJ~!$VTnG+eGFV zFEhgcW)>6Z3uNW3M2OJE?W~ml&TZJv>AW(|o<3g5>55bg2!%KL(MWObnv&l2?xzF} zvNAmkTxkR;N^+Xh)|QXq!@8$QlfW@YJ{)VgwUp9Pq~WywN7ois-hfym{xFF4Q^CR+ z5WP^H57U1>iR)$Sj+}(am=#Nxn!?k|+F{FSTy;;tART(@@BgW(7RpPwL9(qQFzhCF^cl_q==+VlQ~Wwy(X;w zVDdfbloq6W9zse_MPfTvjK6Pf^W@p>ODx|F3(3bHWi`7!?Bo~r zS8aLmcltESv`8?6r50&ioe5HFiU!Wgc(nbyXUP9~iHQ$xa{Twf_n!oo z7)(+m{3knE54x#RHVy49WO@V3iS4sF2;KK2X4F8z=Z$+rEgaq|0`7Z?*x6?8+0R7) z&>3xVXRZP{=)$|68Q?@1mJXZ)_zot8v{wu+dVjCWPccrL#U_?W4 zNf_5RHlLvn$jGpcdvNXwP-<%eLa|u$wHI)uOeowM@gIm>5IcbN#Ig&(y(`WG(g70e z#=r>_*$yA+et=SP$qhT06#C3W<{Vz}(Z;uvOxE5_1V%j#>-{tPIX1%b`Y)Kkq2 z0TBQ26)4rVJ!&=Q2wWs|dag>%Tnf+wVJf2J++0Z8IiMkk5`DDgg=y#~p1s`8?R7jx zkg0~(Q;~JoO4aM(DLY&qN*JRD@P#5(bYt6~)!-MzF)^kLp8eA}Ki>}5%kCTlrM=C+ zX14!q-=~A{&*K({^@>v12Ds7ibd#yf>DSxvPD#_H-i()8gxOPV=9LMC!>+E{(mApC zC!O3$;fhgMwSbhr4xCS{Sudaf?`0GhEm(&QiqL(fjuXf3j%ex|lMVur_>+u-D5w_o zGHk1>%=gn@Pt&!;&D$^#3gZ-E%C4HG0i?0F0-Bx(EDrb|MBl88NdcXQ2-b#F2a-zB z;2ZQzN{?kM&t=di`iSs(p^q&9e5Z;v4;uFDGC(8XU;|?9e{=U=t8npAWu>uPXWv0T z)qPl(#`0(@cPwn`a>|m|FIxN-$7MX~)W17d_<9KcU(-=^(bv1{tbjQfgL>P$bG5)j z_@Chp$)yb*3TVySK`};bYvMv}xfNxzX2N;Y=qgA@N^YbOw*xq`2Tqs~GZw(3_yr2h z*4-R6`HQAI^YjhC^@6()oc)4wWsK&rJuxtW@Gy3tv{ln31QEZVN40KqAd(E^E@UIA z#KVr`7z~`nwY1}bpVRLCd4D&3yUJ1{V2p9AN{4+gwyMoR0M;dYFS9G zJ0Bbh^Azz3O6BeHInZiL8+T@+fQ#C3)f5|+)Bqr6hCU(mcAGJv38Qbk=|CI>H7#aT zouz!_*`Wr+y=nul4Q{_~tD;*8ziJ*Scx^m#)%2UgCFB2^i$FU-oYetLt&fhPY-~wJ zMVuBfDk~C%QDmJ5>Jy8Tu2e5YX!w<9pYFf1w*50nmi>4L(*`hB8dc;_I3%@^`@g~B zBvZ@@3niOPhz0E?cJDK`pUOr(_K9>@bs*o>pb7dx?W6WN zsC|54)#xAstLvPOfgUul>s&b_fvNMDVM~1?scokQ@Z?Dh(kgTLK^LQ~)LYkm1%U_& zwq^tSZoe)2VBIT$n*|R-Z&#pv>SS=^Ao_a~IFz||wb1p#ZmiCx)lel(dX2tATtK4U zduwi>J)%@lW;Gd*?D-j)#|S+d_Saq($D0JmWAKXNv70H%2m!BHQr;HoD4@h(O?)cb zAXg4Hzyv@>d6l>l1byUE)vit9Vj4|?Um?8WWD`?DqlLSMcOCHKF=Ww|mygfi*$w^f zTNj@nXV!#;a|@Dhlw<6GSV61AWUBwyBOcb`kXr&?TM_Zw6~ZuseeYyVo4d6MWV2Gk zj>c2GJO)1Dvfr$0Q7+S+6R5sO zB0oHTx5tkEo?<9`N*-dVCaC-QeNT~{?(p^AMwj^M+=if#&3(*~!Y^4;N*pK*KAo}G z=Jf05dakb)=-=DAL#GI zh(BfaHvvyyFCddiQI5x}JzoFTc7BYUCr(1GQ!=FDkkac5@Bg!-6-HDPhP1MZ#tHD5 zd2*OSwn5gXB({!;p4%Rmk)4%fl@2V}>h5w>AplPBKP4;2fK9v^_U;!hU%MTF{p2P9 z1{?PrIX>SWi&V`j@m-)Zr}P-@v#fhAd%@~Lp$*akFObl@lh~;RBe(UUrI|NpuOl`r zQbhcP%*x1(O+wkGnwywr2Q;tXPQhYnuS=?e@s?#1=&=A&o4{JBC<8rkZ>wAbWE+U| zNReOSc>nB&^b;!b(7W9L>5z6ZckBB zxL9u5c&6%}*n7A2f<9~a{#GKhNTLdTeS2?DMtNM&HPyRGENb?*k$m3MUMCXzHpuu=))^KJIHHhn2)ORmzEeHR zS^Akw*EvB?IA4~VifO*_+hA}CQDZTQ1TS{j3V#E&AlW7*1b}y#=G`NiF{Jy9ha3B_+l7I8DTVT z$JITB%Z~CEkUJ^a)yi$bF+Ti&@RG35;;Y1nOQWMmKQi5fQ8~7k7qikK(A{;x1rA|5%Q07=;Eo8}y7#jIPw z+I<}dU&f!_yd-5}QJOf3@i6jlbwivAT!b}(QS)8-2aYE~JoWYrkH|g$qPkuyoev#X zHvW{)7r&B)tDm=fNscP{suPU6F9|%QZGo8@LaAEt2igxaWPAYtYlbp1`Tvho-Zm~k zk#!+zb7uY%J+8?EKbtN2_tM3i!}~gwCy*A$3V?ZwSt1AvK!2e-PON$d1?27m`h)=H zI&g*Q4dGUPIf3YIJHu}yMSfv2QT%^BM#Tur8oEg6`qlVPmubtn5{bW#Cec58gtfV} z{wAdTYoRU0!#JM%uUQoZa74Tb`uc^Rk@*u~Hn`&*IrX$jW+&Lm{7i-Xri|HwYm|A! zK1xLa@3(im@^nCIU97R_gV$4L&+z#W2%u_wylQRGcWHzW%W_>Lz>xpH?4z!b>mbMR zY^oqpx|-^IN{03=$V&0(h2ur*pGDE->_&H}jdy8GhUQsTl`X z-ulGnGq$6l#mDHV1N(r&J?~U+DR(N$htZR1O7wdYSQ{g~;A2u+$6cWTfTYl+_S)L~ z{+j~ry;yv#oZSlTSF~M;aeZUjJA|~C#qb33(0a;cdL`kL$U6h_W{~z%Q`mgBNGKt0 z)J6T%P&W9H#~_1RiV;|sK`7_dq1y0%8(1~s;ODstxurziDAqz?+`0iQ43ntT zp-4wkg?M05?{)nR)}l<}i-4K5V|A=dxl%{1{uDo z5*$WDI|X8L(ZSqIOCIjVy?2`Z#|+e)T3s%;Cq7vCHok7TD~$zRfa{Ub2&+4wzJqhkMR5Ey5x5!SU80y-1C%M4sA zXTMw;iPc9)@!&_0QfA|GFJ{9~s``<=ImlPeq^ZFIK61cWXWs7K3Sj2wnL*$b5;XTb zV&&mmjR1WA2sa3um%9XWsFpj&K#aOEiY3Z{UD^b|{BbeF*Hp0OaN!exP<=onV0X2c zCui#-hvXXre~HU0bNIDRao4E=Kz@a&D^q+Sj7X(ynG0FUmLT208gvFfxLv!|S@RqDZzHs5R&);JK*G^L#vA--~hC z_{N&}qOjUnMDAl;4`rEW+b_|uHYv3a4zb62jyNOM#l6kA_3VZ=E+gLTy3O_LU14N^ zo(s9TVMPFZeO!#<% zX1gF_2DfqsIBi#Ztv)61ajYF8cscP2%~pIfel&g9@a-Hn__9o6>}PiMpVcW=tLU}% zQ=L)qo%f=S%Wj#^rrd zHn+#K9GHN- zS504J`*|uZGb@BsqMJopDt=6a8mKZoW|#cL;DdOh0#A^Z^6$NME3Wp!?|dTv3gM0T zoq1AqKZT)B8XW*ZbK#NaG6VsRc`7!MdI)U&mPBCEN)(}Oc+dNMR)TTl9Afr7u<4J= zzm@Qx7WCbrlP3?E@f=r|bCjG;FWDZXtnph$dHmTfFuWSkL=9X(hU%l5WKP1lvRN+m zDB^E$1BLVxBFI`y%k0^qLQlL=G9QO8rtySe+9mDYlG0wojn`Ud*2Mxl zFIIh}ww{4#>Yl+qDMh#8T51Q`W^;# zkBFb3H%Qb$pG@_pBwqz8Se%FTb)1-#V6%VN247m|c_1sh7mS}-j^4a0XyG!| z54c@QK!y@yuLOYN$7_opUL`YP-Y89h<891*CT{;_+IsfE$|_etbUlWTB8~y_-ReP+ zhN&k3$T9^z$erUfhGt^IiL`*xYu-gn z^Ur3p(+gx34l@t=rHPDrEdXY^@Z-7}0w-i3#*Z=?)VnLd<%|Qa% z+Sf~JOr`(;0|62Ls(mBrXx=cb3DL-aE!(Ja8f3ADR0|hd-fd5E%PD)p|yE$?6V z101}uwx=HKe?H>g2NmWC<P8%PL6|L%jGD1~~j zaj}=(drt8eDob$76X36-CG!7=MfNBwJ_f+Qw3Ho`wLzB{>m_2z@rjjq2t^2;Mxj1$ zzE(WxPWUW@cjS9z3J-teVX=^#a<)|NkI0Gub(cGJny}J0-OHZ#=HJJhSJW1j2;x;8 z0m6T&NPC^3Mp?(n!X5|G$v|jrijEeuF1p>9xT&>6C$zj@tMeuN;T@;FYZ%h>umNBk ztaYNO5%JY`-K?G~*-n_0EA6>M1M~wpeKlqryu_q+iL z`(--gX9V(RSe@aW&|)QK(Nk&b(4y;g(`Lm?971&i+vwThiIy=l5@1X0*vpsTdD|o2 zb^kWF<2PCY${||8AD8oVy(FRnHOt4^90i&;CVkY`lfy+j4p{0!Ygy|h)>+1>t#cTPJjm>cNVl*;dVmhMpY)YfTwG?1YlRD zjOsxwta0va^5o+lV`-z18Iv5vfNnBWe39@78wvcT$bl zEmcK!^W3{pEg%r_u$$uQhk6^uQ$WiG`PDMqGk@3xmlu>2MyhHC%o9=kNfkRw3Q~AD z_ePzGaFi8~vj-}Ch`c-s`fQhu zb4vq&Fh3_RMVw8M6pl{+Voq|ypS-XgurgHf1m9d}GkcC6mKuP^Hk6) zAw-Ee3xBu;gYcE=HBSczglHDAI{{TCIhtF3Fu3cS4>`30=%VKMSN^>_msbw2A{$8m zlvlVWqCySM$AF4%;KDK;XeRR)zrr0gH9d#q<@E$77{3e91cEu{onEwPl>k&d=i%$A z^&F(j_ZCUTb-jzU+SI6tkr#JEq@%FJT>yg*Q`E?(gVNF=RpUXtMITSAk;U%k3-cg* zyRFTsL)>nsjf?$JURiGw*w<@8iP(69GYtsHX?Z@9>CYq{t+7tN&I8`CLsi>gxlJJh z?);wc*Cl=6eg##05^ub9KYX!=lgEJg?S+~~B{X@YgZ|PXR!6Zhoe3>kg_$K1eSd#@ zsd|Dh0N{(3pwWlSR{H)JGYf9v|04a^CF{MO_7dl#k$5m>FNx*~nA6{P@Z(8fXDB?R zi$cl;szspg-S-1ffrk|5wLIK;_K8|iAGawdFJdE!#a;vjK8(kCr@0C$VvJWKhnj6R z1xaDR!O{cHFOGV`7anf4;;-X4M?X5ngDm+%0=liW76Nx0Y?F+%;8Q^aG(F;*zY zti#DVzzrdPs5>L@;{GBy6e~fvWsHcWH_<7ZSOrlEFnfEA4wGni1*h(_#P-HF3^w{JDgH3&s&j-q9lA9N>+2cxI&QffW;3LU2ppq z$gXo~+uY@7tE^J>JCrW}kFrl=2gl~y16xVcO^2b0p^Ajh%^?-&4YrsQ3}=Jb7^}`N zlvzCl#LqscY_aRyM9S2&B@KfZ%C|2h(tgRbmZdAjQ9pLvV&TW-?OIc#B zQ(u!dz%+3eISqraQPal!0247=5=dHZa7GYx)%-pS-D4u<18?GBTB4))v84h+{$)qt zbn!+!Mc-$Ak(~%2g_kU|hrPgFYJRLxIA8^Hz+C>+3^DxBI4nztMB4XD0s3XRQW*>g zOCNN4jd<>UOfN;-B^{j-MILUQQa0h`EkM>>vtI$?i$CSJa;L$9TKcyfszxosFmtfg*qN78O_lVXu! z#}ErtLy|Ge4mDWh2M;A#Qlj6*)cR<(^vU_h5T_rTLC<&(7*Y<>7XZcw@^(2#y_q&Pvd(#? zZdZ(f9l6yGGHFVWW=!@>IkCB?rRhfU^Nu%6bnJg_~PP8q>fv$MVh;t_%knG z!<;5Z{5AEiVfrx?j|1#u`_ArBLm}?GF7MsQUEe&!vi-!x`FCH8112)3^A^aDEZmD} z%)>D2fg&5o_EIMd-EX7fj?gu$VDEx1d=WDjFr~7Y2R*SU)}QFh56z{fjSz^HNMifg zu7=>bR@fmVTC?rX=Ww|?ayn+2=~h@$qFG$%Nt23?(EGSU>tLk5F}lx2=#!|1lk@bB zmg_qNVVAjZ6a)l8Z3na_5v7EVo+P`8FmMCBc;m&NugiZT&f}2`g{US6i3)gk8w@Mq zGaK8Pis)$eCTDQYDCN2aVqCa9-JD|OOfgxY8}xo{n%iTXv!d&bf1ci>L@nLOaTd;t z&1%~u)Tst|vt=@BgU-3Bdeu!3*zv&`hWYMx8e2-v+%qY$h-UX|{Es%36aPYmHoh-^ zvGj?oZ9Z$2A}yqvZ#8lHvB;(Z$mhsE>pNkqZv=Oi_X2l_XD)R%K-c<0EUOI_X)K{e zp5)R;we=lM-gn@Cj6g_Y)t2&prV3}lCK_Yg#26Lc<3;IuaJe_|)Iu(CL-@MO<*ZY} zi&2cI-HTaA5# zF-Aw%_+f*0aspxXz`~#c(uRFwHjzm#cZY z#Rxkup%r|dB@>{Ji@I#scbyJzviEdu`%I?UE-*uuWU$^~qvZ0ff)iDW@wTl5ZH6qm z3hbRP@R<%dEqr+zl~~HAAB(N&)l+ZcS5_&Ps)tZTmuvP|TLbmk-*wwX>+Hf7XGNla zPDkawK9)W;*3L)$$RM-By{#dz{Cpb~^^2Zyih$>zVC5wd#OyVQAA79P?kqX%Jv0M? zVF^TnhFmU*>|IV&CKABCNsefjZz*Jh31QK=rj)aDSX zZk5^WCftt(D9f&$(ib)bF;C zd!x|hfx)hCq?K1PXD&R%l}A7hKH8!G>X9lu`_jkk+%q%??U`l0CZ0e{{=54Kcm6mR z1ZG@C+j}7@3?Aa$Bt@HVc$K~}|7Ij}JwK21UR@7bqiW+l`i5E!b=}$C27@3hsQPAr z_GXGa@05qcW{ZuqB{=fL1DH$7)TRR?4R$N_Z>gugzBW7Mk`eKK3czWr9(@mmWNvTj zR3dm^7}0A!{0z8ZD#g@i&YldhV|wuf&nzK7OXMvF4DH@fdmpgK@l|wWR%L=`aEmQ* zAqLF)Pb+wHE6CSM?9brHr+7~%ItjIQ9opG|yZvj;Z}n?q9>m~L=xl%Q(WtG1eOxaO zH6kl|-a6I{++}yAJuROFz?nU3=f(*VwuPjOV20~0;O!oDui2A9F5KXxZFPf0fd)# zh=7Gij?3Ktuc$8QywX^u>mkr`%qkr8W({+h`$#uReNdP5X%9ASM@P&Hl5V3}MibdbsF}toGTVe$xVu&WuA5jQ(&F!F>l|*YLlolOFTsL^d71m%Jag_NYM_yafRr0f1#3-iDcEEqernv{@nRTMbNVI zqi|1RVI%;D?G?}|8V>2Jar}>#T3p0EC>%A7s95pV6gytd4#zhk}QO|)qae-Z=s+!^`aB1ABY@SJ6bF)Qkc zk~oE5`~(v*2$M`6r5z-oWX#dce>|$bN>~Fpd|>o(wu>JD3K-+vH5k!lS+BufyCUd9 z^8osto-xwbdz|;S*5F#j46fWtbCLGfGC+FQM9xMf1N@_#R|KA8zm7_mx73$;j~!)J(6(!c?$K>C;ISZq}q;<Q^R-!I01y9^&+-TK++AqFBbj;_E%E1~) zbEEZgo;essK!FH$%VG6@Na`$~ayWqXGr`b-tt>qaTXbQ?M)j2{jQ4GR(l?3|+dw~W zinV4OTQjB|Jsv{|atybgzerEWZ6y}?Ak7>SxMaC;7uaFW)|CtbJ+Dl9ZCo+RLDDIJ z%G#UQix1;7d@J)az0<~5=>?WkTn7yVpUbEKbXQjEbX%ij7WA;b&E`|#Jxfv8mXa{q z#r-`UegfT(e0u)=4kF9-;f2o4L%2sJi()5V3z2|MFZx*gsAYI>$vE3t6JqLQ1}In0 zV30KbbY``m#oP zgG7SW)SuG(mEiT?+&4th5&)j!@dbO2vehd9-qpoGZ|jz=ygJ;flcS5w5Ndye-}Eot zYUtESg#upkUp!QoUczCe(00CQ-HpBO!>za7iDXk* zq1m-=b#tfQKfiY=%3LPAJ;s)QWW6Yy{5(X;u@aeH6JwArjpMbfvIhhxB-RauPqp9k zKY^OEW|m5V0xE4w#efSR5hq`k_Xr=nYTAs=uSf?WD1yW{0?0A*qN_>}h-MFtz8^%v z1GYE@nHjRMLb$0)0jw>z+>bn=6)Bm}BUN!V<{vE$-0z-4m(j%tsOMcMZQxw@XtJG;RE2SzI zqEg<{lANO$jcPFR21+c0_8Zx!pl!OXt0sG)%)Zi#VMBlHeqc(+plO?Bhe|^fY0S}Ssez-QaS{OE^^#vy69{&knv7pG3 zZzh|fCE)X5g!ogZ6eybdlW3}Lr0WKJ>UO62NK;i32pM?o=B?xIYUY_v*xq?DgB2J| zYHSThk5l+lA6)3@%@u3In2Z99;weEbHI`OJKzrxb2sq?OzdHA({M*~cXUw#Bc%*^TeH8^D~3b!{L8hbLix~=Mo&Wr zNxqd}tRS>Q&f|IW9f*~wfjhEYLV$n(+NdC@NjDc8Hn`VxD~(&h*`DOvgf>;!?dnfiN-4)ile@nyJ zeDwJbGMcT|Y;us;71t<`HI*gBwX;_IR@J(Hkt&`Nbb;&FC78IdEhiJSCW$eR<7>YX z>t$9poh7iwD^C=_I3%K99u6?!Z!DNZGVSs-vU!aU^O_X8@t+vJ-O3koaB7OR;234& zDy`Fg&{vvkE#m-h_SseJ5c@Od6Z)yl`v;T)kqdh+mCRA9eOpuk!*O*4OSkEAe^x386-pUE_iq!}l>3~Ne&uK+w-)y~Te-L?Y3`nkR zwNmZ?01bCRp2b+nLlE2{|L2ymrL(~T=zdtvUe#xPnb_7Mu?}#qnwegOJif1ALr!AQ z%F5=*O)_<8wM%Z?si9>@Ws0-y2OT6~zp}IJD4Mu%7FY-?En~K!mZL-DUh|^daO6<1 z{0>Zo21n_?2SUz@)OovRJ5;dZP1Yy*f4h1W(6hoJ>_ZMbwGmJ=VIdRNZ)U^57v4gw zJX$K|2z0U?L}m*~NJzCl`IYe5MuMuaym(6k5J|<#FV@;920fy6ui*{uw*_~3FPkZO z9Ojq+a2uN5>#LPNDUv^>rTqKz?JE7mR#4xS5D%78$-lt@6OHmKh$3&Jm5%2$@T26M zI5U_@$;#@_DDxDB|Bm%n`*-|Z{b&eJfF4|iOY}}Z>0U4IGpG8Lw%U2|p2@Uf^b)Ok z5A}k}Ds?RE_|w-I&E#T4`6hmb=fLHUg+uWLjaOIXd`Q_GmRKeynX4dB9Ys;oYuNTl- z2U%h#doK=FpJ2S5#SK`d!ha`nfe$@oIzzRh3BC5b?lk0H%)63BfGEJArE_>Y56WbR zSuS5J5ZM|o2Qly1qKpJhm1u)D_T*2Rhl-cMWqS8n(0Z01lg^9El2-I^4ZkYsHG-a2 zg!PuQI~{@QD!wUtrBSAdnS)-kqsd#;LNvOP<}?ZhYM}_3c8KJBmo1{FuEvFLCCFb2 z7(OOE1MmR_5}*zMov0c|1VJKcrCqWSj-C^ zg{$uuT9%c$$Z2EWqN~w^b2Qb9HE;qn&_7hhVs2xCK1RT>;BF^;G%19ZJPk z+Lzo(f=A;}{iHaWPwDS%1Dtw-`M4na86Rq#4^z`JUf%&~=o09d-aS?om;?@v&zfshi9 z|L3R@FI>=u74&;9tgNYDq-7@@bX`~`jzOK$dWzA%NaIRLP4G3?PVR(hZnR8ahO|q| zLwVI^NC0QYm1xTPCcrbVIV6@mKvcgAQD%Y1(wqi;g%cAscL*%thIYC{?sY)}*$f+mFM zC3f*8iw+T2*?wG_0S_UV3VPcLVaAsCXJb7l?9&WJMIaofCR*&EL!bCLq#4g@-bEGG zM(+3-WlcPARcK$vfY3U{(Vw(YUY0Tfdk>l7sXy&_zmB`;a%yUc2b%I6-HSUg4aWG? zT!~IV6T34@j2eATQPdX7hc#X27?ovZ9LMPq*!q_6MskxhH|JB|j49TgrE;?lGf{)! zWjs;CX&}aO@Y?6lMFIoUx@U!WIm!-U-7dhE7y#A6i1;)l z&<42Syhj20O`rlkS-+BhCH>E{b7_5FFAHyui@|2?T>|^xqDyA?A#M4{8titw?E6cO zqW70^)IaIq)u0UHOe^*~lKHkr%baEX!hUzwfUF)x)wVhb-B%PoxT=zshSq42DX%{s zBxhtFLV6XA%AMJ(+c!hqw>zzwJA*3})m=v$60gf*h}E^1NwmVAAL$B)LlvL7rS(7C zMqOD(A*I#9ACt0NRpb>@httt5`H8~si7L1uO7Iq*`FeBU@x0I$}SrKa$92Qer~ zq>idrcmVP}nwAa3UN!|CrX8r!o*PXqJ!dgkzd_UCDvjacqoq2*%jhusqiCmutAS(d zMdOr~=t!Tj{|_sYEfcJ1R|`3b~B+d}~0*uWvPrQLM_n1wzYN(& z@?gS_jgp`A%HmA;y@XIuf>Hb)2@~J;5)IvKsO2aOB564k6 z%hkm`W-bi0jY_Ivzcm}X_AK7aOte-0D@a$&15&7V)01|S^|&EIgs*lw2{VVJ23pe# za)Q?VT#`od*<>5*SFi=p?=AF{XR{XFv8I+FXg2QJ!uB?0n9VP#_tWl&r_!SuPqqP1{Z$O>! zJEw#RUId)E29`iBCvp;8gQKjT6c|?pcc+nFsqqq0E}uLh&gVpfWEI~GyakmboRdUS z4GshwOii+rH=PAs)UY>VQv*axV+JXR+5cx_p|*5GF7v;J06`JAMU>Bd4H*939p|wz zviRRq-Dgnf$=T_$AM@g+z@t`BHMpAKr=`Am2F+%mb9}X@Au)G5;6S<~%K(7a8gn(6ycHP*mH_Q6Gd+=cO|Q&0=T z7lorMSqgW(5Qb`v%Cmb9w{ESTGx-~M^*)KtV>wCSwEsJ~vZwY*2_>3kyf>JDKUl1l-S1#czi@11a!L(mY zgf>%C?sAe+35N5Wkzw<`E7eHM{I2eb^AjtX{<8T8iWOvQS*klc1};T}LyrNT0iOId zxQiqC6H|uXU#+AtHS?z`3R46>zmJp%v@&#i2_8DVm>D{HM1ZZsT@_U#QL7RMPv~qN zGNt)PQ8`VzSB{-NNK?)hlDbPG6dS^Vr$25FF7^vo%L?EvO7r**f#pI`LilVGM> zWc}TTLj#(}|J9lP%8HF%pVB}PKR;`b97&RkvhSO_hH0y_B!XDSPk+#YRw*~`r*oFr2yYl|Q4dj2h=4N|)ujB8y z=R`Nam5#iKtr=1xz|r1ZE{$DNfaWSWSQfz{dh+9<;i`tVKNn6{>u@C6jqzgMpdCA%Xsa{6|Q%e|QG)>*wB|A9&(MI@WfZ{QHK5h8%q{ zs%wHyp^L;v(Xc3kT5{UW%ii|PC8M^T1d2U;^a!Tsvl|qPD@JBd4!WS_kQt7D7PvcN zHSsMV5-o)XMAA8lD00S0lM;}0N$VmUrHaA};j?uuODlU#!j`?OYbg5?xey={Ik%bP zY_dfNdy*$1Rf0=#=&W~McwfYkmiSHuB_w70oij{tccKHmu0w9UBY_IQluv((>@)-d z)j=rIIf&~bcCVkt?o5<-8gNqnZ&`aXNV%y)u{U>_X-K;M)x2{_;Nc+JVG1DN zXN@;sq|8w0uU<&)WlivPZrX+8?=53x-_~pSU&6b|)9pWMDR6bO-$_VHHiq9VATSVL z(?8ufbHi0g9w6iu3AcR#Zs*@0Re86@ySYI2FP8cmWnIP~z2ckXy9OJuS)y(rgcqCe zA>_pQe=T(Iy9QSu7dC=oF_>;BoeV^m^N^r~gYUY_qq<1z#^Wf^E2ECNUXxsdjz00E z5-vIIEcYJhLa;@Jd*GY3CDA!c7qh~MGjq-mMWR^yfZ-n*T;72yzNk=i21iEbq-zWt zJ(_;EaVe!^z={n+L=%1;WAY7fcja+Qitt1vvvhk$Rb~QFZ+tub15r)1uq9VJ3IBy% zHi;7f_bGu)3HmIlV44@Sw`}Uu*z!S% zI5MqsDB=`DjdF-*2fFb+%c>-pezzn{wf&F*nTTaUS)JQ2Gwc<}?r)G859jaXY2CO) z26n)#ZeEsZ0hc(M*r_5Q*OEWt;9T7Nn@M?6V2gH>nq+`izQmd6YGF!fDA>?#YJ{)dNvkvxVyUW4t1cXHy7<0q>EY(N(c{Y?7wG#$N6@D zm>Gr&2HcVXFmJ_zH1Urd$~F?KpNC~0KOA);5k0o0GSjI38*3dzk|ADzLpC@Fo2p20 z{WN<_pOWyMYb9h!>!6Mj5TwUbyoDAef+kKO+;}4tb?l==#yV(}sz1I+QN#45@0C-9 zsL5X#{{hr_7`-wb$xrhbAc#5SOyNgJu4qpG^`5t3B%^7J(FJu^mJ`QY^)wSTO1yzv zPSOQBA5$-MVF1skEqtLE9W)`f+UqZXHxgOmiuIjbywEJYCiJXBXn$VkD$(MAw|#9% z#L0!LC$D6PYGt^1Q<{Ppy=aico9FG-ocUq5__9z^t{~!tPbTu`chj3~!GDg9lto#{ z7~d?b8NbHuB+ zQFmn2N{t>-TAl}Z(Q``fi%)9It0zE5X~QMA$}>14s}aRqx{vIhwl2zk)H7No;A03K z+--IY&kLA2Ee}2I?#sn7dKVeHhMVkG%x9Rg(!x58qyA^wv-suD034{ z;afyERLlTP7hL~53l9s{T>B6Fga{kXgO)1@U(nA}>$|K~!lR>}09`#nMQw&PGN!%H zVrhe(d`+Ywq<0XMCD!LjA3GM`dt1-M7(k9a9VInhgFaaq8?~M#Tx=nKz-Qes00hcQ zpuoduvY(@m%s71@$Xg3a(Ug^rL6RgJihiNcVa@<|4(2G$jPy;s&~!>^<6v*dZ>d$- zVl!=~rFns6oG-yB0a6PUsCIy4AMCd6G;%0KJ(nzv-CG`JVmLc`m{w9^P?#wyF&_e1 z{H2z>I+0`zN}E0zm+&YC*R4sfTKAOTq-mHbtF4Z(cZKtZBYS1S!5Hh!}+F^-bkB_?a;CA#eiT!{{}7Q`)CY zRv9RpYnLnN=lf(=zVD1sd9xo@5fS-840edNG5p8IQ@<e%s;B}hYkEJ;^1nxN5gGC4c zRE|?XEZyZ#KLz~-i$Z0|HKp#(c$YeJSMDm;*db42P|2>ET3m&y#78?VX1xK%*d~f^ zpJ`;63=Gf(nM>#kj?B2Pv`7pSTtOKk}a_y4h6O&R`tQ zO9V5kt`fZm&7!p{;NmQ9Z%#2}r#W%YEx|zJ0)qZjHKAxiQ4XAyldtd`4@`rx14X3D zqz;?~jZv@w00^=Hp4FJS34fjZpa!3NGXkl_1(9?l~?543a$?p4szPw7_~KUP&>mF06j&xkW}iJ+Fv6ud*3Aq{hb zXWwUBiFzb^w8IF&#>WQI6i)Hk{ph!uxMafK2QJN!H?9 z7}r^Mz?e+g0Gn`1|6C!V8);P+nX90A_WrlSdU^CFzIfcf;AdW4$jBVoJwSe~%y;rF z*h5=DmH_$3wQpt0?C`K^n%Skq2v8>93@=Cqa8rnc>vmN#KPY4qa*WgB%^U3YZ~rTu zB8N@Im`DR|&K*^49j~AUWc4rA`qtmmBJy>1#PzvCIoEJ$a#s!M^yT)dPfL990AWq< z$&!Dvfp-X8I0)V38|EBBnHeV0U-M-~`d`>{kP!{t^~CmnSLLF$(~?Ct{Sho8J-U!> z(!YchNl){Wv+QO+&}=OR1}7)$MR_QPb$~q^)5apQ5AjO)J(6KOMjIErVV?Fkthl&e z9X=^}vnCDlNj7<8vBFxOjWi2ygCXcmCbY!?&jyZW40nsZ_13BQWeVk@OVg@Gra zo?OC}^A}|Ee_L&qRM5YUM%vif#@$xpCEM57wAUX;A>Eu{5WoL(WR^;p(vOh<*qm?- zh+ek0@^e|rj1HF%I~a4s?%0wv=Sgtsvai;oq7Ps-Ttm$eifzK%}q*ugU2T zWyMm93;qP;HGD>$h9>eHYKn(hU!po}i_CbAL_hx$ELO$Ml^g-Tz|41PreZBx<~3Cj z)D>RLffoIc?th5kWryfn@8&#nYRt5Se0`dO4sMtrJHD46In2up7de_8!}BkG5d2~hdxbs$GR@O{hS?Ij<&wBT~U$Ya!0C* zvGn@N_@JD_TtzwpNtzvUP#wu z9XD80?cu}S3L{B-VT=f-IVG;vOXjs<&#Qp%5fozombeL9cJD_Lp~1t9No#q}$X}i((j?4`0Vq$@DuVeVx^cviV)1 znOEA)LUVFI{;-N<;wPj$h}XeP;U*Km;Ja(J>`XqlN`uT2Yn;6j3U(c_1No;Ub)B9E zlAA0dv|O+N0fl^_VjwfWvj=~D4`IBqi|gM8#!l%ErO*fH>+bgzZ5JfLM?lZC6>YB zeTO*rw=DV!bw{4&$iszX3l51|v{XJy@KVg|A(WJ7>w!l=0F~rF!9tf4tZ@38D8!+* zv#-3`|Ll&w|4n!lA((H9b?dRT#f>*-t)5fQnqBWkrL*Ry9MLmT^s0VfM&K&?p+| zCB*ZdCqa>A=fbI#m~)%SLr(&h6MEqt%u}ZPSQ#A#t}~Sr97fKcd+r|q&FBH)?ucLO zqp<>aws6`V&ha8?pb$ona}e!fQs@8aj{hw~GNIC!Sz6Ssvdq?K5iCa~d2gPHCUpH# zD1->CTPYaVnh3oe;ajGd6za2SsEuP=&9++=@L#BTP*k+>$F(zJ6q;Ed`VKz40IR$F zv>?(L%>K#Lp?m`DSvA1^l4W+#@%pe2x4>t*ZV<0s%2B^;kz6>S*`_fi>Eqth-1e+l zs7LLayN{ecdT9Qol)dsGeEk$HvQWU&pZkUI9=fF8^vx9S3k@^p+E2!9P6RkX{mjRt#{77Vbnje)id2< zhGQA|KbVQaI1e@?vDS0H0FQo5fJ%UAPePhQ(yNd$j}A=5HO6C>VG6^#6*4%*g=#+ z=YSP{#ILjjnh161?jBJ)t1(l!#udXJ{e4Tx3R1M=$-ZF&Nmg-mk#v5q29Gn6&#MF8 z;%&T7>`p1**cHUU0vk$YiemiIGa3R+l9mwlu)9KN&`K@M>h8}}Mnc?*p)%!W7ZbAL zJjuoEo3m&YE2r468NdkIDFRp7RlL2&geT~cZ4(fOG1XEC5a(h9t8q+42twY@MdBM? z1_&c(KASimj4^-^q4U^|wx`l4$s?&P(S3^oFpRtVwYEV8Dpb(~KZAl)H)x9%_IZG7~)l*DZvLucCN&Cp^ku0w+yX z(xU{sqLuu@c|#E!Hb@e4Z~}Tl41!QLoW_Hz!TEQ;GiEQHNyB*pJ$Xw{1@F7Ywt0kt z%{u*E!$0gZGEQD!dmcQ<@!}*-2JV-(=^vz-7R`e3zN>kSbw)95@S4$eax_Pz56)gT z+asf|qXrvA9l+9Bw%@Z13pO>w0VtecCu<`taA+$=pKR`54Ai;wjL-|)g^Gc1b69rW z!OQ@%msk@%prS%H!D$14{NNK-tWV>$0}R1gt>Qjmx#3u^e$e5ts!4`>$KF@Dx_WHz z-&H*2n~hBbm5xZHW;t9ssR%No)UQ;Q>pufI}OXB<3e@s%k5B$M!yjU_{K&}Sik zKZVecu_&Q+3#H$Fg;oTX4c)~S)lR=^n0V$&c&sya`*{eq5+o(75%=v2_#&F?hvJQI z4B0<^cj_uOVnuj&0Y758VaJ6_PVPl7B=Dj00h z=u@KmhC^9ks`C`UZDtNIle@L;o{^RIwCbp&5z;7-cGtgB6rb#9N2D+tORb2l(u&%m zr#GdMyK}(}V8?=iSbt-V(KjjwQ4>etcmFZe?wQbRHq$?f*#C;1vt)5bxI1t0hk?94 z??$d0RzxqqlzMF9?x_&>v4cBOD3pe$JelN%bh$JhB&_5tY1f;oCy_;>y$tkQW2Kw4 zbuqi=^Y%$bk0|<|&wVL!V7# zDFr7Hp7Pt)V?*sA)!{FWR?B{I8w2o<97injIUtpX^TUBczmuXjofHPRR@@iX(ofUx z1=-pMUExYqm94vOcSeLK7{@GoNyHHA$QR#oBNKRSE+NB}tZI0ZT^Hd>LO6AwWCbAE z7*~c4Ac>%=m8pjolmEj0@7E&koR;Au8mYTwPoD&V$je#eZBMJ3sfMX-W-+G%B{LAC zBz9!~yb7_R_fkbx_S7?*ZV+in!qOYJ+XndR)u+4}Mu1~H(JL<5)8_dKl5IQcI4st% z6K3#Ud;Y4EMwHc06 z6G($V3C{tAdzJyq&x_#~$zC466%cHF*S|woOd(b)PGz|wY5gIrysIBDw0&?A!Z-mj zGEz+{J}l=P8bDmPw1j;O4Q6wZMBJ(b92SDnV-2s2av{PLl8P5T;Ic#K|GrPQ*UQi# z6G~j?FrpfnfVKFk2zDm86mf>2Z$dN&2LEql5~WtDGA9Md`3IwMKeF|ybWbthj_i$M zXv`m%;nd0Pb%mX7D%zu_tH}3eNGDQI)poESAvJ0NV|Td=Vel zvsJo7QJV!nAH;W3rh=`JRQgKR9|#6#Dz~@YUr4I2d)@v@ksemoOOSdaq>LPUn=x0C z`9{j$YFn?*9z%IwACN_imFqh%=7B${oAGuB2+X{-oh`*uXaq9J*V2kL@vKKR0Vj)a zhh9k!-6!QSk_Z5EjpRIjEACiD4TG*P{H?92z;!XF3H#l+ZN^|V>e@Txwi*EHI_J0= z{Ss|Z-&kUQ2cg3%pDp!CMY*i3OZ3FykWS}ZBD#7I6>9Xo!{2bL3O89iy4%WwKXNi+ zqpliI?Q4{rVndla%t$&;%-yUs>k>`~t6za~%8UrWIL-f%h^C-SDn1O8A;CDG_S&lX zQ4t}q6geGS?5}(~`D>O|LG+MV;ZkSax)(FYo@9whDYjy}KmXq;p%jTzrJLii({lQ|NBnOX3ADu1)LEQ@Uxka5lHAHk{b)S zFR7QJ z9wh5u&?KwL$`o@=I%$qFFthezB~CZPJS?uGHTHaI6}+dwz|wD4;zFyff(>T(<*?|edQl*8FK#+=TI2mGrIR$cyH5u@fCzoEbv+lhdV*7)t2@E77|O3tS^|BT9i zqoh`=-LK>bki-jqGbFq@pLzv3@euN&iX3Rxkf=UA{ zHtYIA?9Oa)%$GTAD8b{uYI20?hjm;i0=Xu06?X-j%G|5xI!Fz)ww0_neQfZOfq#7L zIX>6hwy@B~)+cF`6EaBEVX>7k8MC!e+^yz^H)nJPyUc|o^f!jB#Bq-?2(QdGPDx4l5*+8&TYD^>EgF^^4g0%b7+uzEb;O=I z#?I$W{(&J0@x=mhz^~6M ze{;4(dCRUzHXt|3B#mlOfU`;1Ds63kz(;{B%IOp+g=quJ3^{MYiqu`k#;A*q&c%0M z&gre2>N>k$${f)C4;L6Lx(o|a{Pk*HaF-up)I;3sit8t=%!L_WTacEYR=)je6R)3_ z>0_AR&j=QFXhk2?PvvH%zttTo>K1Eh2Skb3^itpXNd_ce866s*?#x}o-ZU0u0IytG z)ati!rp5sO0UbfCBJN?%;%k zW5P8sWghoC=J%Cu;@JuE7f-7A`dlo{!17P~o@jE~idH@29<|SZdVjA_Z(d9ILwuM# z!|x`koo%9@n0=y#f80p|MvkUn;PKjG4`qCm`rM%fV(QR7X%dIUMLChSF~;prZ+IOKTQs9e5Qtp zJ&V(fCzU&%<=Ob1wJ46>zaiSOVZt?>Mv^A{blljRXR&k8|F?q|7&fj{?G$q3tbz@8 zwz?GtgL5UU|Ka>5g@5-G79&$a_mWqji(QXXVMQXzj5<||HOI;1sE$xk3_E)oEUBLB zaYRsODSRvTk<8<9I|616t@06f?N_sgL_TTklQ9k8m)kzBnsPGvA?L(FMJSyT)mvBP z+qf-J-W7-kV4y#k#1SZ86@&cs|2esggCHo}L@{qb3ifl3)sX%GnTm#Gx}GfxR?r(- z=xt)H8D5C5*OYUkUZ50dWdU9bThxXiZRUx*2OY@4>|?*siE1_#3ED@1&t7RBL-@#t z?%|l(6>ccS=BGyA7S4Pp*A8Z4aoNjhbLQJM2P1?Y8@eU!-v=&Rxu^roa%gO6ZR+|t zc)OQxNG~r(uP`2vNl4R@&xPGGw;SqQpAU;VvvF(BceZ@n(oCN)6^a_ZP8}7g1*<&B zN_^{pbGRn?v2=*`I8~KA(_+I2kq&SHfW(y6UVU$vgw$9(aM!j*_sXX5tqmBs+N!(; z{3jfUBeOZgZza!cs=vkVSqx7@XUA}}ET5`lGW0iHvU`49RA&yzk148%6$i7B&A+&w zYRnw5Q^{UwcPs7);#4phxcdt_Lshph64$Pefl#uChWNN^WQ4tF)bSAJD_w@Fo_3^> zvK%ryZlxVtfjJ9NMQv$G1wdJBtV^k~?V`HpK*4QGrWVnPMUO}I-1b{NyM130jYxs_ zt{!lAy3pu!nks$%(30D-_K+TzV)buYaY)~42vY=UOyrlPpOG+jjaiv^T)Yzk_*R0) z9h_1`b}`UU06fNlYeGKXOH}Inz(?doDb|ldWZ!u7U-4i9?#Axu+7FKga*`NRqBICq z+G)4E@;NX)OqAKJDcop|U^&|p+<$lUz#&>g$M-E{@NmCDE|)s%#Ree5dKl|K)0P)| zDQ#4@u5(9g)Jt~qsC+1E;z-1FSa+Rn<+}rhD_9d-1Et1j{d99uR1%0%y*LsywKAC=+jQ1GHOYBgFLJ4Wos$}Ar(ZfWaqx-zG|50hl zFhWN@Q{JSHu^}8MbXu{DgVp85PQQ+%5sz&p_jKa6(PsSf*wD93B~=9u>1IgfAHN`W z;fAbaiBXG4E(Q2-UymQi)IG#G-1Zq^ypOw@vc(J6@6* z$9;-kR<;%YXpbYo46nm6Cn~zN$xK-QT;Ys0m?pp&4DLut>K2t0F{b(rB+5uSqxta7CgK{+ zfQ|Io3s3w(LyL;7_{-x1+yFFHR`vt|KNNPZYyF+Wa~fZsb5!b^O8Tv@RRsN3r$%ZF z!#>YG7I9Z?Ma9962Q>YqB=i6mp$GnNDcqn}2?*yYIMlk&9kZuOnW2!Mr1`kj=YKo(M@;P2Jt(Bel4Orcj~ojoGmxF1IZHJj14uYC)ev_@jjAZgP{Hea2hTo= zhP0O9G#+TguWGHSI~&%52lDWaA;D{@jSL#0u9b}GaZ(LIyUTOfBe%gy^?yh)#tSa(Y2ck+~fnN3Z4 zme$4rU`Bf4NyF#YHlvIcUwpz^&9t`EdB7o1l~@G9Jonyy_Ld)#e$Em=ntX?6?a@9{3vY-BX*Jpg|X{ktvPDsL&h=>N^lJ)ys@(-&8t!A<~M)89)0wb-J zg_u@zh=pTjzo7*w%)tUZnHkMLnlT0{;FSQn{zMMdIs57*8mE5}4jD&I=GSohxSeNi zicNtS2u|Rq*as7T=NJqWGjLdT+EwPj+bLchh=n%MGh zhkk>Phc>21j>;Of0%MMLjiTNw4uY^uwMy zqV#=@)#)Pg;8@^5$whDw*<6g(#})`zeifUb%jL!*AYlQXvx}gn9nIm);bAx8@mafJ zn(VWFn9e>qREF4yL7*=dEWjU31muU)dxxa3FmlCqNH~bqMyT#QW9y~hwBx%S_y6u@ z2XFQdn zU~#-THM=Q-X$Ve+CB}}x55sU|zaMJ@i}-(v*-_Rw5wR`_rMu~$tD}Zq9?Rwxr=&tK z*W*ZKZ!B;}-SEhHT^VvKxH=KA;i9sCgz54|+-~mSqj!>hx-b0sJr+EHU*NocVvbQN9TlXi9(O7gnz2x z>uvQ#>zOCy1Xk@vuckM-X&US=>;NQNTR6cfM_>?367^Q`5nv1jB~&O=qA`~Vb+|et zLC%wSzZ}ytPopAT^X0i1kCyX=GbKl9XQwz5TmQ4mrIS`?)~0<1A<#5Y3oOTucSn*PrGkvY5 znz$I09qGgwi(0)daKx#jhzEX+H#cQ3AR0jyKi3>iK%^x;IZMY~h%=5J;0h{HShyLB zD@kuiFVzF6gJ^Ti(X9c?^J1Og8rTQ>jh-^q^vn{rGZQ(7nSMOs z2XLR|a!$9RL8f2LJE(sx5!twoLgU1vxpfwhfsI256hwgHdeoHaG^P+JgEQuM4PWF; zIsDb@<~7Yz(U)@nkCl;lAqtmS*DPHP+A|ATAW3(TQqWMUqQS88UGP^3 zA9th$Nxr7Lr2(~|gLW+Z#eNx%my1vWN1iJWut9RqSwK*GJ#kGcL;EcZ*>MzS>+-Z; zHgB0sf#xs_1k?sWQ*8g4BgR`4C-#V#m%E7`rG&DFXT7f&@=P8nnAr?hKuP)$@Bh%QKbvb9uJ&;j#l@6z9r!`gn7p?k zHvLthtS00{aY#-i048^q*U8{|Hd6| z#R`uJb#n)Yu&NaUR;Mz5N9bF-4N1nL;c}Y=AAr(my1-85yq=QJOTJh8*UL(Wmsr?t zGoX?&KndFpr*n6#s_FH-D#Df`(3Y4urLt+knhXYX4GHivI}OileTR?HfQ8||?bJo-Is+>p44?u35|hEH>%0xgj+qd;FoQO&R!Rc8i5sRYkV z)cmC{A+A}Mkc(rLlVLxtTG{<YKrJx?=QAb{NNg}XGQm^vfz5Y6Pfvo->sl2lf+|N_j$Fh;Ll?LFa8&_vg|M& zFg#7TgwEq{qcue=K^t!dY*sFQNhg^{qHC>yxCF4Q~Zp z{KrUp{(XxAlVV)rqBy7QsQW+e6}?bE}uBI z1l@Bvnu`V7Yn{aP+oCS zHa7Px8T?t1I~!V()AMaCI@`hLYtRCN^k)e7r9dB=&n9U=0^v>N6J!=+8`Tm&?~EJY z_(cy$HW8Nb0r5|a>(-#xaHK|BDS8FkwHZDffLG)K=PE3ANj=E?>snOSX8WO|s(aA3 z$x1=sQNAMIa%`a(I}p3seS4=8S=r{&b<~U)XhYH6tE2b5ngYB}WCt55S>c+PWqJSn9b{#MYuJXOkcGaCK;r4i5Ppi>4IO>m#ChF_K6$)AaHA-Z0;v3<&e97R z!%EL6no&K@BN<1HL0Dp?UCVw1U`q+tJY!pdVCJyAaX&I;N9w`OCf zKDMkx0e24|o8@K9V6}pR)Geb1=ki0bMhWaw`lZB>9`B>ly)J5iRqukRy@8GGU5**x z^BsTG>RWH8elbqQOp4P?o6K@=yTWoi$8j4{7%RP$Ma`pZ&ogdJu?!n%;%^1+cYeQJ z3j>Q)h>#(ADft%!wR>MuBm5>;Tl4YJU0Dhzj2mIt8Yw(eC$p# z844niwk>-+)8ie7dKNL~#WxO`%r@Ra*^L*h4`ec|%hP7ANPU-7E?_z3eLTz4ojDCl zbBNs|QBfpwWIr#eq(DUtDyQi-2f4%72PWUviD8rhkc9O(*@BPx)*-`O?l*Mn-~OvQ z_*T>|tkiP4X_Kj+ujQ4Qqt!H;y7#gL+?H1HUAzafMKBsxmtlpTK4YK5XmiSPimw48EScS`>ET#Soa#V^yRs<9 z0`9Jkc?Ph>i>#vQbki`r^AW?RX57wsWh^kZ(}PM-*YgwE#<}pY-BO+fx4z3&^jR2< zgld-X6hmQ&Id8rA%g+cf5-U#Y0Mp(e9G80U79s0mk?a;&cUtar_**AN2O@wFRiRBj zbMeHPC~&LEkf_9%ls^}O_oMk3K4nFBalKuDS0hIQvB2>7v#kl*{dfe_8M?PUNJ&so zCNZ{*4$GOtZU6RCh*HD}dMMUGSej4$C(pKh<~oA*5n;R|nQH$&uM(yUEalW`#p}os z*R8WUiN>S}-ybx)LFW7C=+G?cJ^JA`^h*=#Jq-kzf=s4F-+v-z7%FdBGwz<*jVU0{ zT_2)(&`!0(RVPu{?xH&DY{>`jXP1LN0`M`_l&n^aZ>nIV9(#^XrzfHnv`kG@>$JWa zLfwDp*FF~Z(#;i-dmm1&oF3C{;V-^o8Pq9<)UP;%W8YMB?EFnfowPyB>NzgwU5ZIb zI|hMEfOIX(Rmqggz%PE4)!(@gzC{r=Lq4hXJ`q4p^NIeiyoXIlr)uN_n|zuApR}cD z%f8VbSn05dUM_XqE77;Iu_$>gl2&R9fW=mML)m6dxJ}hCwET5Zz(ee8hPY@;WEuXE z5uIP?8TIp48dVIO4`7GyXhXnAF{51Q0ug>4&W)@)oYAzUJ;_^Jf3i1%N#4z86$_x~7Pg>}N?sK0ZA_yL*NT-peeF01x`9d|;rn9qPG?xZv8PNQn z&2>a0gTIj5;pp7|a0L#_k?+DA_7p64@IX0y@(ID`26oO-G@ykBnS%5~hG_%bfW2sg z$CM_&qZak=zE!qiL|_pEBpl729dbGvLVL-EuS%L* z+h>bGU}4RpmrmMeSq=i~l`8dRivF&6xHs*2FCE6je^WA?55h451FzeZl<5vq$V&iT z70E~N@IG#dY5Z>6ztNR%iP4Ay4vuM-uUX%kEG8QsE_m~37eLgicrr;3V!RGXJW{5& z?Jxi$;fZ7L{&gNxLdZ+295a^g56%sbP9azTC)$yV=zh zgF4B_u&U}Ub`A-dryn}U*E$>U%drh~23%yN+;#Z>m3+#|5$4vYIH2xG6BiHF9`?=Q z6}&D6kq+6RH91jZ7WRx~yYTlh>Um*rp+G!4?os%2tG{^GGs|?poeBbxaTJitI|kEM z5tVZkwb_slAl6`TEOu{md1HG6m@DTb9zRWsA#&1Yr#fGY4|?^pga8ZtG!z7j zv?-Nh{SXTY@Fabp)sjK307#{u5V6|yGL`!&+{dmMWKjSeYv8ORa3P%Udk4Ad@!iW< zD9c3-&Wni!=SBHjazbrf0ypL0F)$0VV#^E358T- zv8hW_3i{A3IG1lvzT1ek)po=DML;{a48jGc1tBnKZ*~6LKC1IK3lqq?IZuPWcm)Yt zpv;%IV=n+tK(N16^_YI`-VduZ$RE;2zeB2qwkX4`NoBbx2R65!hlPHQo*Bm_oF4)t zDwN9mZDglhO{%XU*rYZ*)qupd#;5z|j zGvol8vFUTY8G{Hi{D!1)*~}2x=oPuusVZ1)kVpsJ`v z4s(2{&rS|}eU=qY3%Y_$K9B$a2w4H1_86o>U$7&?`QwJi)qu(o6w-I-E_(Hzf$EU+ z_cwxS`6zs6f_D`;-v_h?cB$WBwmNc)HF0KAkv?a?)Zy8-$g}O?aXFuoCNE$cByQY30g2&mY~*#AfNO>2wGlFM+4wv?>an~= z#UG>Zda~g~t}M@DjSOOLD&yL7al!9@?e)BaH&{Sg^E3*)&V2&BQ3uyjwfHUgc_P6+ zCCNp2@dWKU4?oYz<*T3k2tbe~T8FCvVJ7^0SEE*5@FU-RxFU61#K}*2e>l z%9icMWM-&@;1x^f&Tv+Ne%vryIQM!n&`zVI3OwZKm6-%zDIkW}D@H1oI8G+$?UwoL=fj9y~n!=g)?5H-QYRMqk* zQ*CVBhOA<=WyPmcD?l3Xtg)1OAHAd!&tgj3Of2-bTs^t)$kz9wiQBn-N@)>FfxTW= z;G3nL(TRI9&FcOGMPd`^RD!TUxrUV%y_D-RGH|G-uHoj)Yq54#SGfRIquE0JXQ-AF zv~2&;nRj%G$kyj$46-T;Od`-y46GY_t`AsX9|UE}S>9O0-+>t!0KcdH*xd8_ZA%`g zj-_(gsdg4Po1-V@0GDKODSl|x*6r5>nJi*PB=7*Y&T_uU!$zO9E%%k5u&LiUTtq2=v>f2j5}_p&k3 zB`!PxmCBvd?=$Ndpi&2J@+D-~pli^LVSp9V2E_y199`3B7_E80KIOrwGDp3p4Y-Ik zl8}}Vub2X1Dl|*r_N3&^;HK$GbJ!n2r@T-$DhnVVCsM^%hXcZEAeu zvKbz)KQ5L?&G!`9is|j?c$CoP1-ws}8%)W(5>AXLo5q5o0@;1qE}E*vX~nw93bbH7 z5-{_+v(J!Io^vrbyYxHg2Sn4L6sgR+=v%B!Ir@uuI<3?Qd{h6_ zQ3`oy8ITIRu^V`7jKVK(N^48kCG5D0mB0$hqS$OJ5YXuohZ*OXW-t3ndEF%z?Zaw^ zj6{+)msP833-%LZuSI#A#jH)O_0tmKeP;&9V$g&q^>MWn^+4~!Ia`)R`dXNT*olPpDs#UHVSB9O>j~l0LQi4MMp#sAay~s z_lQzTk)T`|C7vstZo{6Sx`GBBduw5H&19 zkyNCRVhc_OWJZJk=bv`U^*3Hb8PyK~&!Vo}l;eU8I7Q?m12ZKbrVqa8|82)X6pWan ztTtK->>w2Jf5;&He5LUN0W2rGsBQg3jS#!r2ZGN5h*tdFK8~^s2EK`l`c8VcYGPNZ z;fFAWiIl7$1=yvg@a>+a_mh)AA`NQcz;P4n%LL#61`^b%ipSuY#c>dQ_m zWLrbfUV&@s^Z?nlL^~&p98-b-b4qC6=#n`UdDd==xf<(g9LR(poTfQecpr^DGahzu zU(pc^^#e~imo&LsZv+6S^d)zQ>bD|>*eiO2(BBtiox?l?^iH(hMa*zhLpxx9H%FA^ zP#7h`ARsMJGoi+4buwk74`XB%Y>r{!04!u8H6cxIY`h+RyuK{a>i2)|4|lMyr=+rB zFvI6@y)iw~42dnjKMp`K!0?GTj3SjUa0?SvHq zXHl{q5VHJu63!lIN_`m}g(SON;H*-w(CLmS?;!SMP6cZF*G*QJ&DPj{9=tlgW2fXo zn9xIauF-Gyz1k_{)B2DQ1-`c3#)0Ec$4<=!yHhIr`*2nG$j`>~nt;e^CS#dOP*NFhxSb?&9NwG=*+WWSL7P1C)awRz|rfldyo(lOHl#w}KEL^YUU z>gthBg(BAHt`-tO7W6H`C{TB@<6F3)Y&p_((JegYnR{qq5SJN2zGDsfgtT9iXpb4Q z52?#qwOY2XP?cz?I$@$Nl8PHlJ*HDFRLviy0p_~ z$>nSy2_-Na1vYm@FqU{?9*r>kKpr6a(y@jxQg%q$s5qMjEve?Ni|`)#;Qzp2r##x* z7{m>iTs&5FJ?inmq{f-?49dxrU6aNHW`x>3BUo}?f~vfKNI+Pdo-5=tEG{UjL_phO z591YF+6BqzlL^#jE!f;uer`$GxAx+b_npxG9%M-_w==?u`-y3aV0eM!izdo#jo8_N z8CvA*0^j4j_80E4tj$zL8Oq3x_A=e1L#dK^pN^wc3J(h?F;*bdIht{58G%%U-XX^@ zNVl!@beDR-iFt^ZPQ;Bo1uO<>A0wU2x=RyrplJlVgYsf|?n238@p9kb)4=-zC4!Sk z;TZ^vA}1Z!k2Ef4P}d5*Uzbhb_2j~z@$e1VFzpB%Xb9W@u^pRJ3dm_?n8fg;1|g7j zn^t%+04*^dI>~@NBJHGRd1WO`p#QNdBp+O|lzRD=N%3*?=+3M+D!{xEG*SBE&7-La z7?b#W&NM*YL4~HD-usE88YG{D(3TrB>pW?SH7ynVYF<+uRo91Van{!(!~))SZ%<7k zTx-&vLCcex;2AE&V#jwXcRhY7(S%LKEmaj8KQWTtv*(p`*Z1^EWa9+>hh<{2 zf2s>O<4=W0#Ta#8i^H>QS<2~!yk%XfFs{cv^)#)+YCvHl8a-~HTG_2n)OxnAqSp{U ztRH3Wq<&rN`~WGJw%xfQl!^sJ9@MO$yYlt7r1a%H7lX?3%x}7S+8{)z2W0muyRz*u^rV7eC4yCYy?zk3V; zY6?8vCcxmM4uosQbN2h7Z=%(!1RHs*yN`XNDbX>ovFN`AoD>t+yY#ENfP?9f27NAH z`RpKLJVN)tQeLBm@=n(k{7WB?mfk@NRHZ_x7@@kJXDjHRm|qa;nhe-%vpiulc&LXo zE^dK_`75S|n0qgt0KPDHDeIRY(4Sl5Pw2mgvQI;QdX68|!w8>d2C)A%?u$5=t<4t( zc`;l2Sujbw5iZBi48^1`3$F&S=ByvWLpu1knMXD0cq8$J^0pS^X0M2k#!jm?ZLr&} zSJQuJX|)z|*KTeX`DH1hvP0z_;+`=G2AEWYuRlKEnyhTUV9AL%kAj!kg=^fJb{PJ? z4Q6UE^CcF%Pa0bw9$*}2=5)*1mx5-5Jv^@9u)`@9@vetjd1b^$$RCrZYB5a(QXbHzG=Hom^#H*<0 zRXIyV3f`2h3{7uIhZZO_SgP~|r*u6E{tdn=+iAbgPtNQqc&@cKA)1MPc8>W zn^C`qO5lW6r-9=^M=v$x!zOz;dg026MU@-n%bT`X4H`neCgTE_hozdK$;o~Gpf!fH zfgpM%W}JN_nijvi{B_eOzUt3IfrNz{GCySADPDP6&xPP`>Ub(t0S0dZ13wHL%ZasH z7tF18W_=L|F)NJ(Tjz13Z-AFncyc!%1!mPdbN&wy5cF)FiX zGwE2#mH#SC)_6-cb?3oP%fH!Xc2Pjx3@8kcNgvYxx19rctl->`fvjq0h12c#`IC@a zEN&U-mr?^2PKp^;eznxSV1}mr1C%tF(8B4PAol2*k^mGMXriZfR52bjW$6t<@X zWnl_f(FQyt7FvKV2Tb<*& zR&gj>Xk^M>zrNN{@a4O$vL^Z!MWo#_678*d*#5~&=}CX}d&NIKK-C=Cp889v;Ke&W zmlU%HE2J+f0YBQ<60?=@gyW^pA`)Fc=0l|c#B0iEgW8oP%0CgqC+6uC<{yARQZ{Y0 zm%u4l5oCq7TgN}I6EQRpJQnBeUrx>jmp9g|2fS3iSchSVA7{5nSB@cu>)0L^D4IPU zrYmi^z$lra78WVV)PHk;T>D(+NyM)NU*4d}7<*2oC*IVAER@Rl+NN*z)$So09xPK*7+uJM=TnVRrPrkp#q zMVLob2nJ3FIa~Cr!k%xXiZWQ`by?nV1Ly9BU4@UFUD6>0z@9O!LU|^IVsJj(f%w2c z-<1TvFsfTUJvx=7FKp<~hE^1tJM2?S$RIy{(<8Di!5mN{l7s z&=)220pbpbFTQ4p_KELK2_D_8X?EDLw2*8oa3+a4|AMdCNbR2@iUgF6(zTQx z&WY(x=%gtks4NYiqn7iEbx$vPuu$TYE^Bsv{MCj!aQ%UJXwXA`N@iA{)!=ynRE{=y z>ROZ_7Dfo1_|MJ|vc=yymFt_q3{fMER)iPQ#846jZJ#03*^wE*9!1_rg;<|N1R8!r zZp;Y=MCwb{-@9OkIcQ7#*l4YTTC-6F6^)B!gizQ5#UD=JhF>n(vWB6g%@Bo zk}o}x@B6QIDvz2m>cD{=hkUBLAjZMf8el^t3Zc-EQPfkDNsyMDvQp`tAZfx>Z#csE z3xAy;U5xaDdLYDry`A(tT$U2&&}-VV-KOGTn>Jx6LI$&am$VnRqC-fH?>Nf*y?6G_ ze3!SbSRkFgN)UebttiQF&X>;FNn5DvVn&+4+|u!R3~HKuBx|Og`HuKFFpTkb`t&69 z-PXsF-#vEb0mw>0+=uJA-r>LIgr8FR_EF9(?AmMe7B8|YHdYC9Q|-z%69?cHaATe1 z8=;OJE@0AWuHU$NnXd}+4v5%|TT<^5c2d=ZE1C`iLe`E5WfwI63%8N8sL3S426h0q z%Q(5WZs-CcHP^u~eg}r9jVuU22s7YSseVO}Dfy@9{4Qt{j?@4;Fuu>G-P@zP5-YYe zQ=2cr;E%l-hL=1=kpU;@eu2tWPjW*|_8AlriN#gpAoizB*r40acRH50zVXyzdz3K{ zD*3Vb%6=eEd$4mWK%Dw`rk)BH6Iz3*a z8V$~~!MK>o3(4nvcD^Zd)F^P4rj`pAt89q2%!buCkgg^eFJhF+v7|X5Souq!<(@%7>lL%51ma4pGEEj7|DD5%&on@%_2oYXcZQI7aTbXw#>P!An8%b zvftG(Oz)n6s>*pq+V?G>@s8)r({kAwoG)LE8+Szc8TuQ^_F84nL(W!8r(r}i4`nib zBR~{(_4gZXv!gYoJ*8ate_P4v7 zgtvCb6ZrUNyc5Z|F`dB-8Ob(XKKjKXc^4Rtu>LhS4L*4h*bXFdn4~hVfGO+iwI~*bI7`7ItCmMR^kHxoV%#SDiaS3D8ysVy84iq{ z>^>bMwWnJ+5h-OT$;tSby{&#b-KZBt#zpjYepGW!ZN`>@y*PHEOrPVfI_?Gu(U)IU%4pV+x_m+K^F;!O-J{!7fkuem^Dl8d`}*q-m!cmp^PsjUY&FBmDzJ< z1Q{qR=}ZCSYmMQd-iHk*HN#Lb6+wT{`^DVc?bB23kn#ql@dQ2+(zhs&dOzc$kX-t@ z63Jf3IT7$I`-$<3fREBh~{Ckda-_mP}`QOr=RH?4nxMHJ(8E>)BZE9(VN^y zO0pl51;|F57SXz#>>(B+AHrB=j|C2T=XLRTrs<*fiBQP-R*JfTNP;wY8=0=sZE0cI ztgj!|??WBjHBnf^*I|u+A~Wm7;bb!|Ubu?I>O#h|hJ0(vHT#qd7n*}IF++<$I2hWZ za);H}y_6c33u}JS14@%7wc3R(c7Bkg7x#8j_lKpa#ajDFuUE(Clp<+nRmy*#y;_{8 z?wu*~E>EoRVFVFal}hFYR#Fep&ArgIm;G*Z2=GL1u*}17$)-}a*%lE>6GUI!CQ(IS zSQOBh05uMb1nH0xh-@GH6*#>S3G4MtX?O5VK9qa!S?_9@g>CuQylA-F4q=|(kL>{8ymFQA``CMh0#rp?$%5w3 zW5@LU@V>$4_)jzz&1Dj$QtR2@m(J)|b-5)l7Xh@6t2Fr6(s`oEdu!~Fk@-Qg+yclo zdK|g_RrSR`Gj3UWP=vbd{YUUEVNydWO;t?U4hmD3NENI#iMoW4AvFXk*kQFLD^S8u zahp%15l%nWm+SIj1mO?8Z>3I}s>ST`j8o)b|`d4&Wga3_v89p1n^boa({Xmt%8un3J zqs8^RNgSS!NVZ{?TNUd|mCL{nROil>a?7GdJ-S@`8|7x-8vsb%4k5pTSVV-pFiTBv zD}reV;;0}F{bx}4`X88zV~y^nfh$4TARtGPXzbI7GY(0gM>EjQ>S|1om5suUG%ay3 z5oQnjMl1Hvs{9i_1n2Z-Zx5R;@bm3e_H#A8Hd~i-4BRdBGESwx@@wMnClr?=!U4)` zVM}<|IW)B96-tQHOszJl&P@s4z3t7W&Aj`e^zBkagEV$qLUOgZ@ZD(in9Q#w$zclAY1e|+YBae1t3v# zIO~n6&!*6OCWfg2_ZBTZEvDDb!o~s0Eg&;5&>-_imVNc*eG9-WhjE2j<6zr(GEy_A z;oZz9&#gbNQk8WY`A(@f{d2V`U+13m3Gd^%xp8~TTed{joFJq2J$2h_5~aef;c0+arS7C=cBpGgH-3|~sGA)FRYi&sPVz25@>gsZ@7 zxHE5jVm7O%xzt^oVDou`So|+UE6HRNfr`=|{8a3fXiJVG^KGN`PJYOZ^cFvMWX~5K z6uXq_F3`oUan{zo>_ZxU@Z9g?BGaEh$gCWgjvehG#^MET8x$^Bi--R5O31pXWv0fHzv7?Ifyx=rcGXvgkj-Yg z^`rDcDSde67BEJJm5D8_G8@{-MlJIq#O5*uBwWNw;!d z%3WcP9)nZ03QUuc)crYy{o6~V%*5)EFZw7R@w>C4mPAQi8BFhDm#7@421Std|L>8{ zrdNjdq{;)VB-f%0Uo$phes3u}z zv|M^de&r-;ke1>(7`*!xX_s9k*nZN4?4q;uXeZxZEyX;aDJnD>B_hMM`%5(C{J96B zM=IU)Q|{?|3wZ_-5q73}wNSfwQaAQHU(CK1WCO=ZMpS%N4}7^NtTMm@L*q*!ri@V( zDdM_IW5x25q)h>Bl#A|I8^y=`MQ|=y*f`}~+-5Rb9jGm%El;|w4aono6ezKtvqgd+ zgx)`cIvubRqS+W!N;FtYBO=XIN|O#8d@`g!+vQa?~dv9=pT*$N$L*!Co9|9T2 zatUnvvlZyt%%ruHhz0smn(#44;iNK96B5#rtmB*CijbeZj2MF3p>CtjSNz-W25<1Q z`;Koq_53KzUwSGQBhI6az1nHw;ucmF60<+qJFe6T`hx){Ua`Af-L+ejdRc~wg(u(! zb+#DqUf^8tr2aqV7f7YuXezSWcAEGl$kIsuqa)dKL2rCGKBZ-vr!NL;Pu65wWD2ywZfu7A*t9usvF)dY@P9JVcIE>cW`F zd>TZOnsKS6+uh3g{uV21xcOe9u}`7LY?y^qLFKggStkm;Xf^->k%Rky9Q%B1$NGQL zm~BzD?9J}JJrulS*7SN>z&_vL#|!aXWd}gUdBIehPkOIGCg4qyt|3$N1}9y`ryOW$ zJbOh9vV~z(Ol3bW$~RDAdw`?=rOoP!z%O=Aa=r;Cg>eG?z!!X`6lGlXy*&(;*x%mO z;Jsp$!WV6mJUh&a_Omyete~&!Re0qzLew%er%eg4EVSG(OEGZXY8j3CQJ_R?ohL-()g!__@j!dq0Pif{QGP+yM;tSK=U z7uNmFA+Z%x{XTn-8DS{zWJHSS2@)1f&G0*K6co^sZCm0@Hk5?L(09%`KmHG1DfkED zUsMpE(j;fT?0xwF00&h8p9dJZ34g|37d$IvQN>|c9I<@O%clFh?A7n_&c*|SaVfCm z?Z}=#o{?1tLJKVvg!6E)f06RkkSn^#*iix7uuW2aJ=fvd2GAsE-YK>_iBDTR+qXda zSZot&61A6`GM4=ZWT#w0j2jtIO=#rD+*4#7k*TM@_Tq(EX^9y6^J$bH^3o+vy-Y>Q zb*cLh#Lo01X4lj?nnws7__|`5vx{Dwu-VFe<+%AraLZKbJ{BHeqBGoj~^p_wzodAKH%Xe9X1eG#t+1srPp7Dx-6-8StBe z=)2-{Rhd^eS-!AB?bQHzChLk(om6i)^7oLwEydgy0Ud^X0`n*bk)~(DMRF>4hDKty zjqzv)Eqy&^q~1!B@K$GM@4I`umD_pN5p(}y`wo2xEem%hw?It;UrxF0oskAO(LbPO(3rR5>A>^HzxDeCm`3q-ouUq^ z5IjcX`>-bI>^PY|B-Zwj0Y@v-=u8R&L^dfyY$gZFDZ}KX9uzun1d&I$Oz_I4TKY1M70Gu1XX`~yJ(2V(a<;qj?k-D ztzsb37L)v!h_Gq_3t3lbiW1caQPP(QoIURQZ44&-w1KOE>7%Fal65ND)#6ZdTf&iW<6{_z;i*avr z_e+LVQ#FfvV_@cMi3U`|e$q{Ri-+BRq}AUM94R;5O$CQN8x60O8dz>1kZXpD?*6vh z<`CUADH5!hW08$XHgQKa1rfXoNaVA3V9G@MmM3RmN+0G$NnI9vh&u;D5<|p;E-zO-p{_R@J~UqqB%t#E{9wZ(2@K1re~7vDIQOU=Ug^m1lK;H#U9atr`K z-r-2T5?v5o9YlQ6=$$P(akK_dA1ueg+4hK{b=6RtU1-wa;JR?QS^jXXv8eX2-P@|Q zIyyEfVH`TBLNje|QX&#E0MLQk{ zzcrA6u(zJXpe}5Hg*d6NqOwnp)?t;gQQ>=FQ|R2^-8dUSg%2NKfQvQR;`G<+@3fzu zn&m~lv>9DGM+`z@|J$F;r>68&eHMCcZYNZX*uhn2yj_CgE5<4YE2%EMO+Fv045qUu z6uYJkJ(|^TdD%{BJ^drvHD#I^j2Te2AQ2NJO&cBi_;xw!yO`t9JrYti)gK6TUJC)G zhya64db$}^JL+IrVMv$AxDIwXWk3@GdGhOsy|?~KahDKTRfz@BK6%DOB|pAM_1ve4 zM1ayj3OK07vK3KdEy7s73j3ZduCl$>MNIkcmm~rO`2q+m$m6%L>h#{JxaMpaiGuXX ziHRj%W_oNE^-P6OER3fm0a!t6o0fFE3a;T7YG>sJ4OJwN`qcf~M3PyvEj#6AJ0}>Q z@Kcs*aMmk0yXU_bw3xlOm`~`N&IiQ;5B8!k+~@{gglKgsen+qU^o)2FEmB zkwi5fc$W2==GXTvgtCmdB*K~3dZ`tE^3OQ~bZ#{QCBVv(@@_U%=W?6gBGHLHk6#~H z_DOOD_sRLImJ-z-wE41TOek;oT_y(wGZQt_z!S(mx$6F=2x7X-8(FD6Ta|Q1BV?pH zUx}HYl(>r}Y7Z(;%i!*rhI&9oQ`53V9+Q3?gsg)zYY*9D2l9jHP8-G6lnQ{@WHgqL z){Y_00uCd)uMyEbYX>kR@H4H6SHCaQeeCx_g$K-m)EW~shlr?{0Te@vKVV_fZuzfIp`)7qXxPOS#Hf^V=*9YV50L8Nyw2H z>U@p@Ur#k>(=LNY&GcYP&V%pc-|dFx?JbpDb-i6bI2`zquMlJvUy4m+Wj;wN82+&4 zl%r(WVbXI*8nMptpF7rfTsFGEXvjSr8}FP|Fo{nOVL5Ux)AtLi4X(Qi&cFURwdf?< zFF97z>d9H57(mhtr*f%>2kQD*`P+S!-H=P)niiJrmnc))^8?j>Br`ZpD#%f9h9D^4 z6JIIkg}tt98`Wl|K1`%*FYT&S8S@@71!J?qeI+V>9bj_M z5C%0}8*IghnDXYMwX}m)9YE>al**a>Rf4MfarzS=ONYtcZUiHs3($gS=1|*?Z&-zn zQ4JXN!YS&6$&Ja<{tkLwu5H@n_t93ZG3eEpX*G-*!VA}s670PE6E z^jq6w=5Ea=P%El|&18+>Rthc)A3~P->D%v`TH!?KK%PhzNp#w8{$^e4f}D+6GyPh` zMPqSXP()b6S#r-}m#w0tt+h%01sCc)0iUC;I#QBnmwEymbvdtAr7jelX*%T~_OqVO zg|7g-OCjQjQ0kgoXTB-yW-GC-P;}B4v=5TgWe-O4F%?adEB05`ht@U8?$Zb5<`-9Fxx&B#cLVF#b;%R!hUTBd(V^yg?EvsItM=Bf zY29|$sXaYO6PxmMIN`*ShqJ5Ftv$lE)cfgEOW+%rj~0fxg(4y3D)Wrpd8x_Fin`}UbtBLlRW0?@Ai78JmWU9Afs`r8 zpB_3C{5rNoB$kVLF=a8xh4(L4yZd;GW9eRg7&4kSI;=oVWwcq9F<+baHJ|rwCl>bo zki^bCS31bjSo_aqftD*k!hU0d!7?5le( zuLZ=`^UQ;LOo2Z{72(3Z0flV*v`Cyy(bkZ7DS}zyFNvR8FLneP>tc&@74#x{z6nu@ zw}s!Mpp5!8-+ENt`Sb--B`gD!WxT1+O&n$B6QS2hnq9%8&t$D(Qflut;M9I(5zjT< zB1CVIVjFhr+=FQjMyylXm^3Bx<|ZYY!GcxppjZPH5rq# zcd>;kBU*2}Svwobeql#wW_qnI>t%g${TX_t%+kqy4xLeVD<7+2r$kD6PtmMThz$id z*tLm0eIBC;aWiHl0BH6%W1yAM<8`O-{a2_O&BqyZ)NlZ2%H&Qci7jF7@Hm*<{asRw zYRQppd0~HWN|YP?X%c?G2frx~K|ALl|5>3SGZBNVQ9I2tWQy5idTI1+OHxHngR;9b zkFwkF+eZ!;NXG^ojVG{cWtI6;G5TyKl?1z4lUSTT%_oQv|`}6DkonM$Z#@2piq?2i`Y> zJgvUI=9aI?4tH(ORnrTZOz|c7rGe_RsCb>5(T)BLOOd{hR7nDysPB>OG_A%YOJ9(a z3QZ>_$1&U*V9D^PJtvRGaA?R}xvvVIawx1MVv^lDD<7T@mww&l-p#iSFyt>Vt(B$mt_ zO$uMVMHnSXY%B`Obs*MbSX z!UHYzQHjGb?bEZG$y?ThC&sbKOm2*?YE2@S7O;Pz0>H-4G&^MA=s8=7yJ8}~D#{nN zDO39G#usnQb=C*9yKoL9#R)WjYvdCs*>k1(4a$3MPH@b+G@Y0BUebf}zPB8oo;2)3 zJ|}7V@EoEs5_kRr9k~68Wt8EKA=K7;NNlT)Lv!F0AVF;olvqan9s*lRmx$VFm6aNM zfz3To@6;1CLO!QE=i`-XBT3E@Z$9L0qvFD=ZX-tlW_-2~Nk*@i)sw$&Uw9lc@O;!C zHul68D>5t6cAg9UsMCu5aA{O-f!PSB)Y5lV_DJ3L>q(d0=t#6cG1@k;Dap3L@oxPG z>=&^X#z>4zoJhUrA-O)zhm(loDhseg%WohbvUwRIW5CdqCDhxyxho#{UXwf?rlSVAXZTDn*DUihF>Cz?P_YsP92}-39aS#iAtw zC+`YnmjW2&6nO{o8L`ew$)b1!mFttn;(GATUdhzK8u_-Sl766DA@vfS!a(DLLt&$W_&xA>urX)-gtN$-;)g3gTeo)W5h|-n^JCY{7^~ke zoAL3uOO~_fa=A6lEPF|B;vR^_9@o?vvI6hU>)_(n@Yd@KSnM!=Xbn+)T0n0pVOV$< zj`-=(>u+L(0SvSvHV$dMginDh&$)L`>;*HBMv_iz50SaVGfEB}tR}0>=qO$~HK2}m z&7#IUdGXO>FdICUw{wZ{U>D<;!?dnLeOjHwIIc6DjBhKNuZ~Kdr@oi)v(%3Tg*$F>p}43%xn= z@N^1-V(bMva-2!>N6dy2$Tlc;GJ~_LGY^`6QCN-|ov~Za!Eb3Q3{832J-XC-Y0Y-mdcKZj7>AB;F&Ln+Lv%W>tT1Wv%X0!CFB?a2A1!&fhj;|v zPsTdC3?-#Wvdi!}2NY1-HJyxsqhHY@>L{@x4^}Cz2r_T%c;R9@3a@JL2qr217*axI zPJFv>2RrlB>gaqGjoLo*)ONoRqDHBRR@Dm?_Q+d#9K1q(VoW`F)oqgV%2t^q7<2UB zWTd#(n(kTO9Mwk3BrEH#4~gI2KKy$UPA+Svs3@%bCu0S`S@z2hwBAaOM^>x~~g(QuVEH*;7(1?G*i z@c_9Y8#2LP2^)EJF+v7ZX2<)U^`jK^ zk182u-bhMwE_D`6t2_gzmFgGuSKgjgLGZyCCLpT)ItwTcH&qU6NE<6qFxd7`C2sVFS$LDrC`d z2{-Y9q~ud<%P`4SoR7EITAh-L45gQ?WwtMq6_EF|_(>Dme=v5mQH#)|~+hkk(PP-u=L z_lxpQ16m?l_Ou}|C1m5Xv`w0k1?9)}pDj{S`3j0@wBTL`Qf0+v`x$mS)16l2v{=U9 z0DC1P0$kOEsL5YR2SLc{!tWnSdo_jk*kkF;f^wJb1=!GUqA|W)JJAl}CdyP*BHaenX4{fB5SG%xS=E%r^L(%39N!L%C6r+L%5oJ|8$|Ye-Emz974ImZ zX9|D|_z_mccIa-FRWG1`nUy&ZUp%r~>rH{|i5nE_&#B_=-(H@oVx)<1uBz;jpL|dy zeju}Wr|6A3Hmu*;R64Mw0?MDV`sr22+;u@fL$12ig5g&@i_k!Yndvl2f0guWtYNF- zawt^LKpKHM{Q^19jKzc)R9uwj;a7-r54* zIVonTSO8rBG-)NTLYnQg7&3PihLT!fJp@^clZug~}yVb3B2XsPGR#cdV)#|en{ zdgRe4@)HGb{KOR(9F{R3_PghHo1kI)dBC0q+durQfo(lLpu#$(2CrA+kA?Lxys}2Q zO`~P9o}5j7w6s${7GSAZ2~q{~9jFB6XgUWztXLM{VZ*l_u%j|~Yhi#y0tT$VPP*q4 zAPAo4mE@KB4XmzAkF7G@G8JNiw>Ech6zkMg)ErCMx7`o7>*p9sUmms)IYdelUQW3y z+_vMpe-{9;u4KY@YCL-g-G-$W5yrNg5k+{3{3Rv&=b5XF#jT?9vCOX1W6smj;+C|B zrK}MS;Ss?QVTFPlY3a9(R-`nu03Z}ujJ>W|km%#V;erVF-uNaujP;SG_Cip}fnNL4 zzUFv4pYCD1dwBajpZf<1)=d)CNCYrlZJr9&de2D|Ume|^)ZA4ep&Qu2mP`!@PC}q- zY@xQ-J9hg!t?rtAC#5vhjkaG?r&Qykj3e!UMv}ycW2OyNsbP7NncicB*ReZ|`?p@t z{@{`U7SH!HHwtfYZ_(QM$B4?~2}`@B%(haRJbJpRt#H*QJ(KD*o_46=PyO(o^~pDQ zE<=Q0`~FnS*W*a;kWEGjbK32#6I3J0@G?yADvKSNrL@z28kjlZnA+qObLI@QqQVrb zpGgQS;gZ^}39JH@{VHXV`}U;RmYLXjdEXyTH>CM5eT?=(FJ)>_F$wpPjBpa)N^iuH z(yk8!_itbhUqS=*)0K{7llpFQ51rJeY!xYo<`g4ShY2JzAcmjXK2&Z5$`ij{!VgD# zQqz4B4<(y(X!sBA{Q!EirqYPWsSh#Z&YO*@SR7W>eB4qt$g)GX!enr88A1@pJGlpv zpTA#&y%r40O=UPzt+TyVHRDW_<)eT%9P14+7B*$Fm0}mazzPX+qWh7W*2DCy+beT% zjx#mo!trwcI+#cc4zu@JgnJJEJ1_e~G@Kb7s$lTedo!hhACj^ZS~_@$yuh)_k9#Cv z*8EbJ0&`1Fje4`IrAU?lhVtsV9|xk-(N}BA91~><<%8|k0*D!D>mY~3UJCH_z zG@P{Sq5bj4nLq#l31&f`7nsRIP`n}kxZylvN}lGk{MvbOvAd!Ci~|&>+{WWBr6hzS ze+ffd;b!)HC4BZ)n}4Oov7kiwRzG=(_rUX}_hmwn$ZSncVnpd6aXh&sgXVFmt~pA; z+bB5ch9nwTl_BUkcgXeem5F(aBrlTgkjJ4YrXjWiWXWg1dk|wv2x1Etf>qEV$FzC= z)m9y;g_lSKSkqFtuOUeUH!6ftg;hUH&(ReN7Lb<4cxfh)N7{^e)GBUX?hECd(-`os zKRK2EDeG`qR|Eerp~ZU~IGcXsjyr%$9}kJ6wn`3f%-JdS+7>71D8C4qa#aXvz0zHQ z*4@?7%HLMDJ*}7t?a=hz!&$5<&bG~f4h7$kwU>jf>K0*O4--fMGvQX!sGA=EkvcNp zJ$9>*r)Fi9_k62}`12pb5jaQXx#hn|JczaT_M9LC zfycX#W`pD;>dPH|bI*=Ssp^8hkX1}8?0_A4h9chUSzy%w#XE|d^KY8p%S?+EqHz87 zay_k!Nw#Xo8HwR!IMR#dzD(fO^H&)T3b?U&%|Jnr$ry&VU$u(TqSoEiPDe?x+^bgVX@iN9G$B3E}6#r6$;M zaQ6^;;y&ioH+J2k>u?Bwx}3wp87JIo%xF4u=DJS;z31WJh$B9!P3EC1C#l-7eglQL z%A~&>QmJAW(n|bnl}!}9Y#=mYxb7Rp>%4Ay`KKOM$B=OB)6m?E;5%P@779y%a zLO#o~7{eV3v#a@KNy`YfAxC6U$dJOO?DZt@kf?k^aOO8_F(EJ6A0~shL~&#R4=iyJ zI*pm=!&s`YK)UNSYu1RU~{{*lgwibG}AcTO%2`l|n&qm)f*NNmJ1d8;Op zKMfa;yoh%_0FZ?ZN`~g|zlWgem4A!XsJ1}&2ApTp_kwJz}wRH_M5G^FlQ%2+0IQMq7-;a`iv&89ci&H(&_l?h{W;V&8`1y}p@LHdv zw}gr~>MT5K)@cd z+sNNKc;pXM>7cY#PjUj{-B;<#Kx+@POWO}jn$i}fS|wfM3KeP{#Ba|9IY^*g<@V|X z^4euLsQW=hF1!7d$^^f{d+|iq*QlP=9^ys+8fd&hmoVM*Y{91*aUKd9KihL0BPCKB z4B&7*iH5eF8jZ%AZFmDy)Wv}nEMzmV3~|{E>Ynf< zFYUusGDIk-Ox>js&SOeMks^?#<@wG+FPJ$8X}gaxc`}gKZyc7^C(ul(Zs+(rLw=v` zy(DfIf_GDEnk$xLSJ))$g!5CxUVM*SYQFWy(MIWq!Isrx5|!|LImp;uO$YhOHeKA> z%f&RRwv-Bo79+3PRdUn+^pb@JMmf2D33)!wWpK*7yemoQpA$BWwEf+ie`OQaR8f4Qi4jIx`POad?uVlV^Cj#o>*0e*wOMPLRN0 zx7KQfVFoV$OYu{{`E<&w59g~5rM*L4Ev$h+Nc?yNue*S%I%0*b|$M|+>~ z1SfQZ?SOT|e@~KGTu(%a*$c(n8i<)8z)WKvePu}}>^@{zqPpaOkW1wzU&zLVrYsPg zNvqmkPpL_wS{Hu!6k7k!_B7^O4~G8}Q^2N7l4fVteD<^{ zeQ$CnsdQopzMMyvv2+S3Z&d-|m&%eo^2OXrE@Aw?Z zebQn=?dQd6<)rCF_wR5V?qxtVG4kZh^e&m5pOz0f@uyb5(N@j4s$FtML%X<#hO#j1 zo8s0jgs6R%!r?HeGa5S;?iZ|5gSCoGnw&r2oI?=|R+g%DyHE+Sf($Z(lH{35qa`0P zzhAz)C{D2JYuot3@EzNXp>0RhaY(+DMi$pK1}PhFz_X%|Gs&SVhALzJwI?u5cQ+W( zlNRbH8=KdcC-Ml%;vT(d&czM-`&*X#hK`fHDhqZjF?v1df!dLtW+v#JNF+%%Oe&9? z{~ko^3Mkm-As~dpliy1=jfreBt$lr5CEP$f6aY+zn9`*gc~$o6xe0$}`$u|v^43B-AD+5pOoXd{R4fm2$=_)eeH&nZJ5 z_G_B-wN#V)B$9n~WU3oNzZ5LA3O2~-yDO>ygo4J!wj2tDV2)qvRiX}l>Dj*5CRf12 zTDit7#aA{4u_hjBhI}C2oav){3`xi?-F%&7rd-vFmE;z~Zxj1L=fI6ZW3#~U)#fV z`CH$A_S{zhJooVFZnP{k5LX4RYY7F~i&Ob2o62OOn;g$>=)%ap=I~$5t>S~BHsIRP z&aik#F*Fg9rRjX3E#o=%j>b#eSVb$nC8=tjj0!2S;vs8mVFuC46X59=In0_dpHOxw z@!<Lq@M1vGGT;saQ@=)fbmAQUBOE$WAsYzoBpk0pAC`ZN!_z7$*a|kYwIoE;~Z#YYGeQN;M!~YCx`7uv)QZtd} z*a5;6aS_&6Ppa#%;?Ej-us#y{UHC?`3_=Dl5zQGFlEUk6{jH#kN?T2i!Z!9J0u_c0 z2$|gWUgO@1ox7$7F3S}-{X6&|OeH@TY)PAc&I^gp=UIpc3=|FdCmYBchYsB}SafJ7 zW3$Hc@B2cpS~*`?LYjbW3NW$IrZ9+l@AXyLs|x6iA8%V?Kdpa8mH-gyb*4{1=vg2_ zadV!Zt-S#PFVvcEt?L;_IJ7CAB>#OIK={T5`r}Gbp|#{Z;l*$Qqzf>op|FhMS+D*t z!AACxpt0xwGy9k{w#vwcL=AG!@Arb=@v^krDQ}97KJfPq0mEI5K;0kX5*=)~;jS#R z;AE-1N=zC7!fBCGHO3^p=Kz^*gGuzQdv!Uou)@dOy<9eu6#ibwU|9gWDKdvtdec=4 zgfpBKrRQd#RSV2G&@5)6#G+C^EK;FF%AK;{T^5)T*kUxmKVDXU|4vrmsazk-odKcB zx)q0Gb1~hFZe^cGH#vTVBBfS4`y$B`L!WPvXV}b6mj65cK;mvXH$FASqSagn`D{|U z3>mc%X&zWL`gV=_)M$UKV~p16PvhSwt4zyQ)-Zwt-ot>1D`_U1AZN|#TNcJd2tmS? z$miG8<9k@|kbh828V#QZYqJGu>sjQ{M0MaJZjo`DtSFIKitXYu7wEF_@VkKkvL9L~ z!c4e+`@Vy`vs%hqu$52nuPL=kgGXSYGqW!M!dHrHVD zU45bJcN_a+x02EpRB@=dSZx}6e-u35`>A z=%q5L^*La@fNgDhk8dlpESOIt*k~HzvIfp_Mu#-QV&e2KCEO@~S|&eq<$J&cA%U3_ zMWvWUEF5~2B7VG8es5EaWWAy zRM1SO1TCuaBDy3~xFp79WC~uZ*iLReE*vx*Mt)?I6u`Xh2hMExItD0gvJj!TJv!Gz zDi9GLPQ?S{eh(-YXfR@lwDFaL2%2+5h-$vNJ_{d?fdt1A1Fz4z`K4N_<*Bs4aLbN) z=Z#Or}f zo6Up2e_37eku!pJU9D>tPHL|w4SLoq$;IDu{B_2qliR11MCMlISHSajt=CRt0fg$a zK7fq-9rKg|>XjqW zN<Bet+dh$ zR!eSKm`xvEKni4`)4>Y)N=X0!6Zb)zD2+h^)h(^9t&=H$005!5k9hy}TJ`!Zz>)Ea z7mMsOSS4D45kJ6wflSQT;ZFcNJ)i_N!_cSKtND0Fdg5NnSp1F{eekyGbHGF@WZ+NW z5>!=VKrEl4UiLG&{@H^swo;;6+S#R@e67U5;3z7%$Z&vx+FPEQ>S!!mOe_`<$*As985jhg*nj!g_^el@rYPQ}25zS4vz?ok` zgPjFI=Lf{1)#Ifv@5;{{hnCSFF$u5>S;#e6+EL(_7%m+;L((Y|+jiTLE=O?&t%lIc z=wR$9e>K1Ts)6@8iD4w2vH>2>n;I|NhK;hL)L38FhTTy-KpsTrvGCdhNa-;J!^0Fe zU7eL&lc>~uUAgp({ituwt1PFAJR?4PZpMf~nI23Ys0a7}+Pp4Sl(8h#)ewtAg6XEt zeTq|I@hIQ`JtgTKP&#qe=Dv#qVg=!+CjWn#Rf7l8vwwvGkX~hEwR-^Zu-7-12ioXy zYgA|`u1DuMz(&)w8`zM5QIk}rlyaW+H%}DtZK*H!CMR*2R#v`WDM{@t69iosE}Lx4-GZLNAvBJQZlqZ@((wlJH9Zhp4>j;!EC)ckOl`#l=qfs)#4t0dj7KW#ieQp zJ}ZZK!mzz!sNR`;*=WDDH?}lzjz@%@X2N*FG*tv(Fzkzz?KZ&v)f#ObSjSO#7KZN8 zOrpBKmo_;@s+1BoH0pq_*MfFfpgX#PW7{g6Gkzkt01Xsh>t+JEd`2O#gq^Th@W}AV z&0D`<2E`r~md-0EteV>G9Wip@>YEy$S##y~|9ZODnBvnFlS&)2{zSuXTL+o8l3m_m*U{GOiL zcav0B%r`c_?{tKdP(ny-;YKu`*z7y3S2Sa0MIq^tf~Ig z>kW4%)xSb!*X+Fwa^}1{9@WJqZ#U=XvIsR2Lq0eCpXmY*XS`rkYKULgUKUqKS??CE zAP(2IO9ltzUCM&xPXuM-3^Rh%{41}D-t>~jllrSz;evV@6Fe^5rkEh5MVl64AoA80ivQvI|p6_m~v|y^`0wR1Lf6QC6wW* zH6#wxUc4(x{}MgE=dkEH?idWw)zh`Qpr73wC&MWS;#KpNn8czaS61zFMFzyK;W%+$iZZgURViL~24e#OYQ^6?~K*MP*Xoj7Kfv9L2q5nw~u)&^))$R74qi zfB*MMC$H}Yz(-AZnDX+h*n{)pkT;XS1`CkAW=DII*r}Rpj+HKt8Z_s&_k5l*Z7n>n z+J=BjuPiMreYh|<11TpI2%2SjK+x_52eVN?`)ho$QPovtWmRi#UEvDj`yFGnUkBt} z81ypLXC2XvrX4{Xa;eMRqy3Uy18Pi*Pzj&5Ga=l{#KNE$l_z;yoEHTpg1a8UV9j+$ zcfhIY0+HxryUA)Fi37-gN(F@55jQLJ$rOLo)A*bteF9ud#9yURvy*HP4^+z5OFirQ z8YuxgF&z>+nhCBX3az%b$h`}||JcFjnn1Dm*Xa{tnkkm;M<@w=dVj4A{F_yVb7Q_Uz# zQT2mLKiP6Fj6u_x>>34&>1T6*Q>7%oF-nhrzTbk~Z8X`(PUufFM_h@uM$`7xz@pDg`1$0^ImH9`TI8}eWr z%(ANRTzAqV-z#yGy4C%naVlUB%7&!f3#cy!@j!@#U!{-J7y+W#E{iFQF)eqFDZ^^y z+U&SmKcpByHY*%bk%cLR5cTC2{C`yR*qZ}=ON1DyR;+3$8#!p}X{X06E7zl}!`q^^okO)h+`EdWXHLMKt z$wqm;X!c+X2nyM~oLH=)X}P0a5E7-)RY-u_vBv|V-Go0`A0i8#cWnj*F@+;*(4n8=ZXGx1AKg$rnBTaomdHg+LrUqTl&C45ZNrhHTwM1 z4I6pO^p%zxz9j2B#7*>eo(NEmr2kb^{1iP)+K z1!`C(+9mb{POiW{FSkT>D5$hgzDFwA49gMGEad-<;-r-91qMT^Xc7KCQ!c#6-wq5? zLm#R5VJ{N8EkPp`{F$AYo%$S6`uM!LlnePSzlP*mwxx_wJXZ}1qQjY99+O*9LKZ&O z%cAQ&zB>{EB%pcJ-S?6TL~5^b9>IY0+%vSu);j{O)Ta6n&OYm(Al5us_e{c9mM)he z409f=xS-;!S-G5hIevOX@dRSXnq?H{mJNwN+~DMK`+rdT`$#?rf_$M%q-clc+&bmW zF_3k@Lt^G~LFwUR`%4^M-e`>SG^a=bvOA{{c1VXk|4yP5O1yXH{mIC;u z(Futn$3zClzNMboDfqvE7Q~>}XOeN>EGHJZ5$SwH%oO({Ey^@NwqiSvO4^4OJC=-H z1sasL91!M3#rVOQHt8h_8bCVJiR8NzdGM*TNv*_&@&k_<*d=cK)#JAE>gIB%5x;pN~UA}PoK%y z8=B5wKvuON-+x;igL=Gs9Eg`ZsFNpGDd`0(K4jBO{G)@HF|Km2RVfz?zj>pHAx}nK8wH4~T>guqC%!W7t0Q)}do}0DBa#nI z-wGDDr)}4Mmv3_^$y=P8CJcWL(GEm~Xs8@#_lXeMK5>bdNwQktjA<2%d5%eV)y^IqQJvz4`@VBL2r>=<)jx( zZ7LiN{;~Q#^4Yn}SeJUxpuR<95{9qjlHxeLSOs&+lr1Vr9ftflcIbbjB5G)P`m3d(@d88H2*wir#@BNfs39tlbzWuEPoABYP(j(R7 zRSg6eg9?r$;z8AZUrSXk{;OV8$~ZK6Fofi%u;kXoFlt?dw9M%s&O6EBZpA_?iw`GwVE z9>q^pLFHpTwt?sG7SbQ|+Fcvt*CH+*ZYd%iy@XvmD1>f6{2volv(f;nDJgPm$rm!bD#5-2aDAT|$I^TUX>}?&JpMh5vi>AAUl< zx`dl7sC7cNn$%(ErGa4gb&TBoxy|uI5!5y+2j9c9l&fXvaP}sQvl6I8nHBkxmX=$_ zLk1SdLi=QwUzo=ph!Os_kOf5^=qDim@M?d^n&5FW!d2){urQHlL8398wM@I~O$)Hz z-wXnMbwsIv;svc5nq;3I{cBhZnz);Kj(PFrUrGcd>G=DwYY!)UWniAV<0l7%M-sVl zBfGUj*#kpO8(&a_fLJX^$TeAN2n<&q7lxJ%pl5)-&^)A+{^M%DEiD!`&|P5W zJ~*yHc$Dw46sDI_PkN0#aTsP&a)T;Q>_`yhTOJH-a62rq3;ni!$fcq)wBLGNQ5y?T zSaO{}e&}IRngFGImL=^GIRW9lL_?rMd)oPoNkbck-NNXjC+L9+AR8FI!$o!4EoOl& z9ssF}<)6uKS$~&+jOY};-xA-a#9W2X;LDufKW76J3R_@Kddfs)nHSUGR#&7cOMe<%_KYKCzY^@Wja6h)gpAYeV- zN~nRz2P=fw8b?DVz&W*7Iq*$xHe3Cu*fUvt65DTOYVE*6kCrmULsx|V;oFkdwdWT+ zq5_0~0>?ZvxbIKJdG!z?*++z^mjG-KII(zNA*T^YS;3fXb`fo(8@N>P1j8%q;qhR~ zm%>PojbWo@S^*^!-6GQcJ1|0Yxjg|D_+$e?5F)f4w#=Bu+c=wh>P^}@4$klk2#!*X zJH;lAV90V^hEes&K4W()eNr)tWep47%RFlOz{)X*=$Qp0)g0Ut@JLm45#hk#6LRf^ zIoJZ~fkfb_O*CQb;B`r#vzrR7bx=NUon26ez5V$4y9S4)eK<%6_Iik}6|CxsQ2bH{ zg~aD8|L#|_tdd{=vDjJL2V=60O7@Iz4f+1r#|-2j0$A}dwx|;63jy7n&2uvZ`>-=> ziF~$wy1UkVykNnB=1%iiW`*{HIa3|{=?C#Mg@H5a+P2(l3G(oiFVWyhFRUc zNe;v8j7?Z68Ihtv03x9wm&~{JyTmOg18rAZx>KVGSP;J_aOuR8pcR1elX+Y5j9P=| zR*gAULh6oH6skWc)xplm_(z01)zZLqF?*D!f-3Yc2EAtisv?Eb)Jgg@JOG%HVjQw4NX5hb?<;*o=lsuXA=2w)0nGtID6vjQBjDV1pE) zqdWx{B9D-rnQJnEC>l;X`GQF=BqW-v*8_5a^#`10L94P?IWaSX*o>ROA6?3>d{TgT z_&D#9>S`F=g-hAlsp%QL0wnQu=PF{oW^?(#GN??z6eub5lmGw*_W_?cSh)#*Rx^-F zt|uT3X~GlW20-84_#ac6I5d$I^6G|06J7*Z64?xXU=Uib2$aao05n#Vvp*`3n}v~eP#ENl5({?H zyF_)bG-sLbfs5x08L6hL4!-Cjll;j=cKBE~MlhxPY}|DN9#X0~l~KPF{fBrcev3LI;2?(ord| zC7gAb&wI~_pH}7`yC}MVcR1V_#pXO6)SOv?NqoLXLj%u8A+#kb`^QJl8X}2p{POTe zl6NW<20qHjRgRyYT+9^IkCrINTq)pGfj<(=B;OhgupwOB*=h_i)Z-_R(nDGX;_laR zF1HRvQQo;0#8P>`<;A{L_^m|>9Dgol#^JiCIn^>GwjY&EBL%+@S*_154yDh!e@Zv; z^2fkk?h)Hu`0<`w-ZI>g4koQgq9?zv6WZ+GE!r2-jMN3`%%T(`Ti|)Qxo9F6VT7&19&Yt zaQDw|E~@Uj%B6S8Vh;OmwxkWOc@Ov1xL7pWh^KCO{~`-gj)qWmUY?BWjzcS;5*sY^ zy@`z8>p^$#L6|OlT8B4wRNs$1S3lLnAQzUqFqGtrY^Gs^5-eKfB%=Il18^`lmUAyr zX{BpL`nlVt??D%D z8E0Gu*n+%jm+!=&p)(hq9=>#f3>U1xm4urz^E+C+`m6BX4ZXZ!&`Z2Mv;%$Rs#5FU0mvnBs zTi3m-Aq0{rCX!(KK7SnWWt8}`Rgpn_jUpm|9?cy|(*UV-)o>k;=sgX|vD`56ApgS1 zvQVcLd7?ODE1U=_g9%jp(yx6yxOj70GMVFD0M7NFR{QMHJn!q1dH0UD!QRH*@7wLc z64JN}-ZMv)3JgPu4T6dtiL#Kb6j@Lwf3x8R0-#YZN`UR>y^epieCgx9`O~Lq(2{e{|F+^6nZjc{3btLB$Tda$u5#AW3*G;j%AE^rgJ!|LtwR=&`^? zrA7W5L_eY6KLZT|6;v9!#R!S`Wjv8|ep zH8Jv!eS^8S-Ai3ZqhOIpGljOmsV`GtE2572I})^vILlzR6VmGucBTM@q+P;E0l2P4|2r?SKI(+i^E4h=M?n;qCre9O! zpxw3-^8Plktd5ZRQgTjp4Qoo!uquJU+uMzF*uJDkJ=|h6NI;Zoce*T`>V`1QfMPYinvurT_o~0XM9%D{iM;a7lUmtF+W}gzJVxmdx(iz-rcr zc&^KjrPtLsbjEpW_NCY?SIK2@Jdfo^F{(y*b7mRxPc!|?@W&yQL}^8BryfK&JyTl( zf4v5#KD&sbbyA0xwtfOzJ{dQWfL0b9D|e0Tspg}JI!8AWD!|p)U#B}Ma#D>&D!j0K zz{|b>(^IpW%3|z3xHF$X#&s(Sy+}Wg2!wEEWU&+Dz6wv8;}l{*dt)FUhfc*4M>^F8; zDXd1ZBCK3(UfwOkR0s>hj zQg_ zqzSq!0b>PT!0p7d5ZV~2x}mvPuSyyB>-`wi!!p@SvGP@Zxk5Dt<|`RB?*;MU7CVjH zLI9ax17qoIR}|0bGXbh=I6w*z##z-$gMDi_{))kzcZ8HhJ^Owzu#Ko#Pr)neDaKIK z8>E;nAR6TStn7fB^Y8B(6YT92BLiAbZhryjrSQj8t_8VsCM3Adb&E)P^4ESkVNuj& zYP?=+cS087H$7-0qb7anRMeP#TiGF}5&i{Rth>`ExRr1zI=uq`$+0}l1WP>x*f{b= z^1WB^b5Lb zKk0x+Z-g2@D|!a+A;Wzy=(%@irg*owA=E6>JmR%Y#FZ?XSA1u(Mx&p%6xO0rui&+k zPN=DXF5k^aaDhwfnt+N7zeJJy1-8t7b;cH#lcr&Lb3jpkSMwEjJ(ffXYMCk*%b>N- zK~uLwW{@N|w5NRT`9TuJ`&#Ev%E5Clh0}yQEe#8FCGsZR_&qj`cPIZbPe)N8Un0!#zra6@xFj)T$q+aQBFsrj;6ph!q_YvtG=6*QS-i{ zu#%cbZkAPK8M=V)_iwa|Nob_#r-wDNq*~6t+-KZmwwr|B1zg-XdGUO~e}-zk3WG@S z(TT`Z;rW#l`h`xjpaqWh_i%n@Z&+KaWz;nduLB|oj(lYrpI*3@7GT09(sB~Mvd2QC z4G)AYZt({oaJQ0mT~N-icU14v0wL#H;(5U3==~pmhth0(j@Ga2q0Ta#7kQzbx!g{S zeI9eEeO#?l*}S``|5xt3)G>a)SQ)_6tsIQm1GtJull1lZcr z-m4lc-hI|!1SsEK)`F_M`Q-6X>}qHI51OC5=m|bGebJn!-5zrexFgNIUk~!WVf^Dk z214l>sn60L_Ejv8`EQAtPaC5S|5ng_)QA| z-!f92SFctP^A4+|g(k&&^!?%lk2lxXxRGEI^EF|$WEJd=P1WnM43DcfL<1c1^k-h* zA?)R(6-vgW2slSW|J3*hv8~$D?xy;(Mo%`)czYIu;5R!#C?8sZvgniZB$%oXn0ej_OyFH@ARjfz zCJ3-PxSx{<%is{GrZU@)xolvigLYdSaw%kwErMem+MO2Q;xY93WR+TbI^}D?5OMs? zLDwqv>@QY!Q~tz$)?OvJsA=qZlxA^!pU?-K=~i}z8{q%vFH2zu!5iZj9R;>y%LdyyZs(R0o6^2Iba3K}{mi&uq6KI)==tyx!A2J~Kkb+c)6_4a_S+uN~h%nlJ`#{^(9^bc87Z4aB$n!)> zP#cGVlXOT$Z|X|?s!fbGMLR0UF_irO=AghkzMd1~@LFQm-S<-m&5T;r>*(a)XXe#Z z=`1MTc-b)UGQ9JpMRGD%4T*h7!SRo$;KatTQ@w#19$Fk$C_}uBf`uC28pr%H^>bCQ z6#W92JiCSF#p{1v?uit^PoW8uq zn=$rYA8{5U<>9m^+82@g#N&SKiB>Q@cEVlOfeu$fC4WqkMdhGu_ zJx#>c=^fYonbvs=eb4@=ZDeC=yn?E-RyCoxLOjG^Z%sD6-P#_vqicywo%9+Ve94wM zWdxqJOpybEyJ2l_63vL!tQF8QRZCMEP^#cyT6zC8yh|kR_o_J zMrp&rKloIaOU<2mL1?~!%gK(C-;&5&Kk*ID$KnR}MJr#tlmokx4)=BXLy>58&xgio z(B5_-um2Efcyv~(0d}tl#&G(U3lVHyUYFdCgyrhJ7{e=1JdM|CzQYkX8LSDG@bA6R zrCm0)*m;@#Q&PIY1Yrp-q8PnXBid@P>2oxiGm_L95fl9t@AG!;s#_oznhRu%Zg~KwJ;-W;(=PVnaCpo$TS{bx~6@<17359 z6=@v$TT47XVjey}pe6bxCw=j2O&aAKg-7gmgeVjb({RmN4a`0613$3@st#=_Up&&} zGmTr=@nwt}Uagq!2edZxT_8g)g@@ z((P-3Z?{2k5|GAuAO9nSrapm$6-#;VKoxu$V;MVyyJOt~M8U*%B@dmIv|Dgb0l8O( zPrO_>>08T*_|6SbZ;ei2UVu^}-d#snwxz@GaOH$|rxRM=^TB55?L-jmT^PTU~_;Fqige5TQ`Y(7_hEv!~;G`($_&>oUaI@^Qq${4sL_ z6QCy((HeHKpwO<3w|YMdxXC8O1@0uY!IUhPc8}3?;5Ea&KEn>1Vm>X*8OgX0OOSi6 zh`OU5_9?M?C1#j=o+e;o2xfF$>$foI5!n)`j#v72(auCNzx0*Z9I~^_PaYJcm&agz z`^WmAG&dUuT!&VEJOCn@u1g9eMIrLu(Jq4w7aQ-kJ^-ZQ;Mv>5SBi2%cZP&AIcNB;;(bmYSJ_bALsTmugE&nIT$%s8wbg0}y zlb4si*U^jf`zRqBlLdj}m1nyL=TI^1n9LL32XLPoa}XM5a_itQM@~oFT_9VlDgcpa zW6SV!%mXR>pQO%NZp9ScO;~=tw%Md#-5S;Eo+$6U#j~f(qbloG z5WQ@^f*jac%(J8Coopl(ekLpH@hkegc);E*EU0C&1id4oPA49Pf^3w0TQFW<)p7(d zvKoxByl+$I#DGCkcm8};ya4i_m(sb*kqB-7Yq8QwDe#8@9-hHBt|JUbr)x%$I2cXomWL ztl-f`>@lY?!oP;s3BH5#m#ao9AQ5)@o~eMQhGUAs&BMjRS}P9y+jQh_6&- zen_n*sl5Ci#Ucc$6@VNY^(OGW+_I0xv$R7~lpaDbL+o)#y;4hZ&6EHD!`Zz^<1P zF;3?;mctv>qo(#43P_GBpB_);_9Fb#+z;jO!;aYhW$NSVqdu*F78Xm^MSMr>?$s(g z=rsurC9&_=+;a);bt@nC`=?p1Q&x6f#M8Z;oZ??bzb8(eaI&&!yeofdquUwcxOY5u zs_fCXopchQ(Bg2^7;;-m`e$h~3!Xcd#AKfb8GuPaHDbQw*F zpJ{Wy6y2vM{1yR_PD!Gv`;BB|B?jG;LaOf7B#E;qylgmdB$-aYtU1+sR%Sqp4aE|~ zf3ER5eBr5|5FoEkOr_OaM}DPnQd4&A4Dt{0=^#cPp<#dXhiMe8DvOXa>+>RH?{Xe! z@7OBsIgn8T^cgL;iX!{55Ja#B-aR=pI1Cv4jK=N73mOVav#0CQ0>$~K)sNdR_0jY(61Q4t{pY#S5GR>Lof5o-%xaJFVX^G*3*8fg+*lY-Or*@7+n+8Ck06ez8tvgWafI_XxHju^;RVA>+$2!fP+RASX)O`PdtOcT@OzJ{RyB6_BIkWp?W zv96G%u`8(@d7Mhk2d*3a^F(hmW0eijxDr>)%@({HE@{Cwp=6G?RX?S$z>Jj{<7`RY zliSYZ#%$<{CVP?$5u&KP!x)ZQ+D8ufQC$OVkNc%r2+K_a#z{r`fC_R7S^5U53hrmc z1##}BpKOD4)rF2U$m3L#s1sZV`NQEAa`_2V)i%uP3M;)W1BUR$B6qd4_jne*1f~1~ zqVOmB+EsN32q)VGlJF)e9Buiu`Q4c=z&vlRjO56HsPkY*Kyg#QA)Ab`dP?Z_9R;r5 zsh{w5AJ=gLwo#PfdN@n}PQx%A%~}lbMI|=^ZlPUzw3_YC3BZ|l%FO*UGAbA>tDA&a zPqdy@Y#E{=GSS4O5a>97^Xe=AZH8YNhLWLjHzu%Z=_f&tErFwv)eFef%Z(>{kY53Z zxx;_kLVy4Vi}<89^PtC|LA_kNAXE1m03Mw6jgFJduMie`IGVas<)pAQPHZ6G zj|s=u&zTk;9H4Tc}7 z?e47U74G%HGkWP=C6-AAT(XA%8+8X0v+E*!dN;jti7QpHk6>G40p|i^N}yzx&oi4P z(|x29tN_M?`vk0|RYdoV;3~2Mh+2cX?|7dtF3kt&-P_)Vz97pbzHwbDXL;(N_C-IY zGzih~?yMV$=29EIDA$MjX8N6@+&c9Q7X;#96&bzrS!M;&6v3_TN;i~04&;w`j#k|T z6Iefs-#X5&T5P7_wD+Y{qGIZHrZhUf2LT6#H>co{Laz_i=zosH5FUg=k@z3dtRVQG zB!v8GS4S5zkedOhask0YThrO3umfPn zyzf`Dy?o5i!`k)*9&6ATus`Cf?D?C9s;3K9NL`1v{^&4%eUvcJ3Kbt&=%^5HXa)FW zLhz~KtVly;nFwgLcPv$Oi9we3G3iijG}Xy+@(^=AHaLO+aNdy%s2kP{54|7L)x%nI z=ehiZJ4l(FB<*!N1e=g*eI#*v7h!kVd^jB?6lJ{vkqS4$Xvey-aM4U%OLYGNf+3gh zM@gIgWV<)U#S5qLj_4Fn`meSpNic-vm)A}f`;Y-*V_}CSR11)iNsQ?Xj*@lR56`$_ zos%`vLZXT>A6L8Tm6j?L)nSM^HrUM8x^a}aAV#XDdXb^v7w@>WCN#iSsK4+*ASfK0 zO(JqxlX?aR(cmO+h+ObC1hi}d>~eUBq~doUKIpc0J%t)bm|me z;P|44A9Cm!e?+ie`T(7nPV9@-A!y)Uz*jL^V&?F8uB%r>_g;T_tKwfV=GVgPPB9OY zs&a9mkS|OrRGOlnF$UkaK8f2>J*xVr5sKBk$0q0U@$b|8I(B8QB!RiUhfiuX8eVeIYC15(O5dcjlQ(8eL3#+z_u z$B(WGT=3Ee$fpEosrBllBSDd6AZ zVvdMMdWh`y0pDupDIC}08(C@UIk1ueqp;B&YoVQVDiio;i-AH0m@YLJ4zPyM43{eX zr~}IjoI~15V=-W(`IqpjNFlhU;CaQd^E7?=9v*ug_0xI_{a<+9pfqk0kBd*Wj*M-( z6Hl8$VwT`JEFr~Q0lJy32L5bNv0riO9IVgpG#kP?>C`}K8H#Sa8DMe2fr-u}93B3V zf=lLhssN%--wT$zD7@{g=374UE2EbmrZL;=WAREa8Z5`YBX7_TiVP7F{6T)4CcF(= zUlVIDNdi!B^&FH|p2kah;A95HT^asm;oP%V4q{eQWcJxaQ4-n)bbO%^d<@roRM8lUgc@g%iVk;m4hgIf5U~=u; z9gvR0Pn6{g-i#z_7b)L%`twjVBZC83{A1}z=pwC(3mDvhT~(wfbF(3>n-Ld%tjkOS zXNks~Y+f56156P26oNXn@Z7)y84AYS4sv5eJz8(;^h*u*Ds?%q{#eU1nshl-Z_=u_k35mkoijA!kTcF>O{c7GmYvRyej zsBLq=I&*%W!j(`@xO61{X^iUV99)>du}H9guPDoy(PH9s=1IoBJRp>04*7>0#l)+5 zNdgY$Q4MOvPVf}WJBmc3Bi@GE5454lpd>5sIrDn0Vv{EEGC3PKe}kbh@5el&78~PL zP2Ocri*14qj#)e}I9UBub9;hw;CBSR{u^laEz1_Ww-8~jm& zNB$*qeXpkSe~85fvBlHv0$fI0k;Avp<`-7fhK|d0;ZM_OC5I(}*&g>(;}3`Cm^waQ zDjsZhEZrZl+>|sYwxYKCY7Iv-1MBC~K3$|y9GY}SdKiQnD;G+ce0*&~&<_

vaxuJVJ*3DGEm11`JaxQgkVIZh@PYes-^AAe$wvI zkq}VwGq>yjFB{Fo!+kO)2b_QaLeGGKhxesRCID$h120SDtATr6D|QdhP`)96G^yMu zUu?v(L?NDrT_pa0L)0hKlh}2n0|}Tgj6i7wr%Q+k%5z?+samaXzJ+BlSj_`J9kQov z_$S!EB|jgP+r}5ZJ!NdtGjRq1uM~BIdw7}2)C>mOs0mkmI94e;dnnHNQR&!2vzB0g zs5(*^MFy`=q}!7~k!WmFXS?6Vv6sPsMK&7M=xkE=eOD1}v`mkkf$-8LAB}JVR&JU$ zNP-587fh&h_jaIk6yQ>0nH8N5@*gGbD1fv_1_f%IlCM{A$hv~w*b?-1c5yws@Yurk zHjyF!K5(i8_B2#=xfk6YUEWBphry$p_bW$&;eWG6LzP_BL*i>5%+%+$xxvsuPbr6> zUFt*a$ZJE?9r3#S6~jQ`4e@H-5U!G?pp}~Xg>yKBmLbPQj+6s=5v^M%=E0~T~M(ph)w)uKyI>Nu;imX~1y7KdYqN(Mat zt|OUro~zGPxNznKBY7*q6*a}%$W=#comNMR+{b6V@^~C|R?%yC^C-*#wdDj%=-97c zVr~)oMVPz880W0)^h8%RgQM!fb423GM%n}U5hmY?7a)`H(VxD%MC2sQvzv;k(za@i zUNhkxeUuRy!2nlA0j-}K0T|s(*(HyQq&(nngeqG3&1_+06A1GrPdX!m+L)jON=F|BB zVL^F{x~gbF4dRGYA0Op|077C@^ER9C6tw?JWcIuTl9AUdPttg4BI$~2Q^3{{l3Y!X zBKupcI@Ntss)Y>R!NxMgHfTGPNfsVti%c^)oZu!)I8c0`{JjO=)CsVQyyFb^@^@$`$h>{ z$PKvOm2QK!V+~~fM0fWaN`2mOd+>xKFyW9C=nSB*Rb;6qbmtSREbzcE5>|zcZa!!% z6@f9SXLMQi#=tyY%hBbJfSpYnh~nu;v|gjVMt5%n*7lB$M4~e200(&!Wsn`6a{rOO zSPUwClQU9lh8uscPM3$*NCTn=G4l|=z*kdJs8?SB+>7SjeEeB^5+=_0)b8E!!PZgL za|ciQjQxrU!J!j{-!<~GTZ^Rk5|DTnO?k7c_8E@~Apigc;sKvn*rY;V)Fw*aDihgL zU1PJ%QyNgok2{?j77zS{rLOuc%~_*v>X|O_{*TaNZH9P4~DX`n>vb)D`!wizfzbn?UG zH{^_Md3)p5{`QZ0+4)KjqRS-$oH1k}xLq(6HwYs$_^!(}vGKJ2GtdBYpUBfhgCQv* zpRpi7EGBdX-+D928n$b)kTXFM8nNer9Z&@%C(TS%x}=R9qX!O9zi{MiI6+{tqb!J~ zctrH&nK1zRtY^HfB?b}_q+--RbqJ=?&rWx;wtyyHV1tg6V4&%p68klm0O zh}3)sOJT!)HAM!~J$o^h++wNU5q%k^lm6JvtoZ1Npy}UgBf*ZwjY;FQd&L^O0~Fxr zj-eAp(D(Ad-4%157P@T*`5v80im7J{C3v)}IsWUr9yS@iiDbb^)5aZ3!H1NNSO>`} z)8VP#PH>|8GnNB$bgK(pYt%I~!NCHGC@N!FUOwdf#{=2Et?@3T6$gS9K`C_!U20WF zjXS0d!>FJKPb-kzSpz26OZpfnH_Zh&fT++&V6Up8Gh3r-Q0K(;EJ96KrouJq&=0mn z)<0eeZNXQrF$#4$tcW||fc!4aKIFP}k2#}pFFfTo_=)XX`{U=N`@{J}>iPH%Yg8}S zi|b!h^{n0xDQKUwny|{uIzc18zAs>uHI)5KGA<;(+A9(g(1;Hx%yDqq+c4RIle1|6 z)%Q`yvmvBYBv%p8>&>mov3u#Mwdm2Ofu*ab6dr&sS(~08x$8dL!F*wUz9aYw=OEs1 zEmYNzhT*69@Y(wFr#D_#%E)j6r}ec?pOHI7pt`L>i1*%yVfV1LG$zF!yqY--PM@rJ ze?W-jNQuT%19Oc8anA!~D8thHc_ENxY;*%5HQ0CxnbyL`MHh2A8~|PalBdjMcaa4? zwU>N#>8Ey&Lix+){t(Wb0r6X2I-yyi$~)}mhL3Om;x4h4Z2;)wAYusn)C1EJ28osg zGVu=VbM7-z&_>DX1{PX@U@M%MI|%T$8m4Re6u0bhZ}HUj z?L3*axQMi)dg)w)mhl@;fG@nOsjbns-;W9xUqC*~4k;fOJJwMxV7`s~IC;w#3XLVH zm(zjwY;BOEbKKRpQ+q;1Saneij1Sd5SarEw==7lTZ!ky+MT&G;@?}2I7WXR^H9G~C z8F?Xn9IUP{T@w4sv-yh?W6ui_aqBEcJOg#}pD)z|AvV?k!JV`7!iW*U=t#SRZSe(1~o8^s$P~pbytcy^@UODEwu`oitXg$C9MQjaa<_9hjInj9znxw##@>23IWU zMls_(VwELyMeRqnPnXqD3WkJ%yM;!{iKdrAD>H*`(F+i7_v_X)Uo+(*`ly;FYr*3- z!8ywWUQnRAKIavO&dc~=x%DQUeBZ%4-#f>oC97R89X1cHfv%A~b*W{bh*eK^3D+2@ zlvlg?z|w}gt7ZiKQUL=rGP>-N_KhB={!f*oyhjN@x3ytA#dFDjJL`S$ywB-(vRlVlgYK0A zGO9>BC1Hnd=3-Un%`SNg% z777Mm)6t&BGY|K`lG?K4;gXyvOXF#7C07I*NYNuZgi6;%fo*5RJCTS7kt@3H^iGC( zdj~scIdP`NzDL%QtA#R{%HzL-8q{@NaP=^vu?St#Fn#9UKA2Sh2rAA5AZ5ycEDd&8 zW4~4&NL?HsAD>GJQ2B(J53Y~BDYAV<@nuUbx^C0I&=`#2t`sOXjkkps|7tJv-(S*UTbh?1Y_*( zxquNy2|bv+oG5KoQ)j|lsqT%b+_S5x9Ok3?5p8XE@lk^_Bh7`JUKuwDPrY5{P|#6Y z$4S30CU3N=oOvDl9pWP4c=>^SP?s@%=w;=t{KIpHvJmd3TVvE9X>{rV zGzIMcNp2Kih3}gW>Hf8GC4Qy3uNMAWU4Uyd4vn`&ItXk_#U;IvO`f~gP<|lc%30r! z7m_zc7LE{kaogTT?wz+w^-uz=)1bWp@z~c6uNd9HHV%06cV=rwC2}8)`y#ecX;vvx zqSaQJTr_Bx!QQ`5xO$@UC)l&`#$~ZO%b=UifCdFC*CA!Na|jfQBE}=3xCs~u0URSs zJ^>G?3GoK?=!!a*0vVk37LyL+OHi-cy(7yus4y$_k-E$r{m}w>No2V7P-#$mk4~Li z*(B~N#4l2>?dz=m&T=h=LQ@ z*Nh#s$S##Q>#-CL74M%}K(hK;5ssyLjuPM?LNmrtf+~mqHrxBF*8GuBiM{a@(XSFU zkT~pwZjPYQ4Gf+6L?~7j4h*b~L{+Gu!eiSBIBjZmGm1MEC!4qO;V))DG91D-SC$iP z3GL_!p%Dut(@o!m+$yZmo8f_@`>qwQA4mV#YH&&k0}N@SO}W(Z6zyj2gJB~tVpg(d z^@r#bn`FDUmdY9d#0QK9zqqUTR-A>9lfsPZr3AsFk3&%rmhPSW<$hG{bwzg<4^1&t z%mm53K;fVQNBaH-RDB>huRA>*VIcpG?h_vr+XDOP93@nES12{ht^o!EEb?}}&WXTH zcgD>6g*xA!cu)RIK;G|y{|B2WKzH?~bur+O6V1IFdx;6n+Cz9N1<`w?MkmwJDGb7| z)^E}tgH9lh5!+Y-5JKQ~S-jZ8ic9oD+&Re?7_Zy4Wf_FgaXK3LGs@{X1^aCJj>*QA zFV_za79Z~hR)(KMS76LFYK`Z%K-7-1xr$=~Eg(l8s{W=OR?CN&7UAI?dNO1F0?hdO zJ?QsK$AF7bQ+bEAvr5sm z=@fLvEVX)EGqO?5i4^$c>`{Z){;$CR02EF^n_5jl0@W>2+S-#TfB*nZ|MfC7x)tMp zr}@u?{SB38QEc2GWIOTygVFbX;eZ^1a`@}Iaxr$)C1@f9Vpi>EBmwTpgI;oeh zreAD4nQmnSp+=&ikI!DT>$y>&J*IzU11SFnj&9oZytK!JiH~kV4<8-ogXc6qXzp^a z*5kQm4{vN5J%;;BV}@Z7rbFoIFh|A%C?bBPip2u%^{FI06I%rUQbtt1q4lTH!MWRV#)w5_~M8wA-8cr&lYD4*|v0H#ByxcQ> zMy#kSdtgDt=S-_hyrUdl?ub*z{_jJ>yWt&>>sj!$A$*=6>=R(MP1Wy*gq0gh!Va33unOPn zgUE)uc6c{Fq*il(=T%$KN`XrCnpyI~72>TjmdWH&W>wbMm=FPNBQhdxM_qRdV1kdV zvq0LTZ3eR=`YF>`*-^WWvfmG#i2x9^pkrJu(p^&VGf4aUaN`sNBv6hjILEI1JcW)h zpa{=@wvqBXjk5!#3<$_3dOaBfR!N@iQo}_aOa{1cE) zVWu59C7xMwOL}o5)bO$nMRpzv@04%Zw>~ThDd&G$;5wT7&(~d zUWar%uq%)#8C&&sd=z_u8&1=;c46sYB4}e~!URvhFgMu0dr|AHNf{94eK;$Idgj@U zCoJ4lu?nu)uONYOcqTDTcLPRvO9hf|eH8$-VIgv)gO7U*&d@I2Pk*(UMGsaH(A5yR ziPQBO(&e?31}#i%+P__OGDseN(WI7en_+YiC@%+r6j`g{Y5R;$YV zGhQ;#`P1M2ZnUQU=@U!At=kz1>fKj8;oidk%mae!Nf|HEzn|?Qqd|E9l_JOLcV2%e zkbnu)Lkx;_{Jk$QcH&E0%pcwNg%_NqEd{+de}#QnmA^N+5GWGkKR7iW8@l({1VAYo zTLk^;V&`;_f&MWd8+Z)E9zsSo=vddw^gH;S;{(7k5`GAD)fpCV%_r2;4WrvxSFfn| zUiw>_vdggn4xORD{wvrG6wG-r<8KAVoSYsT>t8Kg$fF7zm{o%dfI1Uv3AA!PLT>297DkBJI!b;9*cq_HX9wx#hx86;}2br zj?KL5*F)sXU2^EfM+j7jEh$R3TxVxT;kgw?%B15lyf))CY=yP?nRQPhe*$@HyG~cVf62L0#UkPIpNk&Z4a4$eX$-oEgOo1Vii>RvD*a0&UJHVU?1_o zZ>(lfk#}fFl1H$}l$Ga3Cu(vK`Q^ilL>*ps7yHMJt)|UfS3vjO%3CK)YGl1BqEIbw zf&R{-3Ty;b<+xK|KLlZ|8%^l~|4)DK_y_4?E@#;mL{Yr!>;dmnk3tfrfO~Y0WvfcM zy%U*>U(1xY+HS1ANN@W;BBlTeoc33@@oTZ4_I&+U@P!a)8Ii~EUTqMfkhNJ7T6Tc0 z*57r(}S^2j;HqD=z)56xIUOArxOZ?LjSPpR&=CA$>*|h_eqk{RaXsen_RaruFS@jbwjG ziAEms6aULfv~ouP+w${w(MQd}1h&`ACQ=+crjU+_XUO;bFSj;md#tg@ zPCYDF1&coeO)RGuXhP|y$XqlvC z9;)YYLQs7~iA7C0KX3Hr<qHSqm=?<2;nVY2lin14SX{{2V<6Yxm#f|neeiJ z^dlLrA%P>Bhu>tUfICteSxp{pD?smkBO43%_(fU_QbTj1li=2(ZWT0PB0Y|l_W zX%&KDMSOYLjDJRnV7jZffa&bHrcxSl!82Daa$xD zJ@?$A+Bt>FQ`IZSJ4OD&lg@qZaah3CLds=N?#f4YTop7H1NOkm6=2 zZL?MVM|)=%N^Yr1^KNq#2d5z_VO$RWcz93+?b)a#$Usmo1UCf?mWn`i(L#)(!Pcam z;*Z5+-(cwmI5T~-N`=IF%h1J%F60@Nx1}`$dU@Ykk>~<8${@+m={=lJRGf3Wg0?JN zSl)R_hLMu>c5}|9N(`p}v>qV@6_Ue(qN2uo6`TTkb4ChIz`qqTeGZ^K%~>l|oIADx zQTVyULtvw!1>|wOpfo-~?JACtI(?$@#T_a?btu|E_#0TSIF~G@1Gn84&-Eon$ZRFE zjZYAkiLZ;W0wX_g$HB^6QUJckoz0I?yjrZOcJHFhSt}B&J5WcherK~)9zHK}AYKhF zN0`CKp?Nmzw#G#75TkK{uuS&Ke~OYa7qlJ|h$v@DpbgfQjpwy^ifq5sW2iaL8QtL_ z!D5W%JB@X-!-qS`G>dJVUM6UFR(pqgPu;={4>%X=2ZbEU<&xO5K`-sPEcz!>*25!D zyEE=E(p`og33A>O88A~)qKSx~qXO54a;&T=7$Li7iw+tQ%B+&L zJ&$qs5krLKy%d|-fccm)l)?jqiqR1n5(*6c0;~xPU(E7d4}hr-wMz0l*rjpC0dfyv zhGKmTF@Q6LivSqIuU+;65^?BIY0yFJ*$G4X8|GqOaX?O0_ACm@nMvoTa@gx38MRwS zGv5jndDZ(u$Vww21gz-m2Ix*u2}BubN8rP9*&a1-Zrah6tu%hv0ft91eb?fT1l`=6 z$5P*@;(!zM<0Fb-fbFxCXj%<@@~Xlsn9RD znH>n`-PVpsl76@nin^=GTe-f6vrsnQhg5sx_xTkwf;Bs+4qV{$V`n!h6%qyG zEYxZxmRs*JxU|@J0h&)?goI=kx8A-y{>)^-`Tu2V-d@KCGutd=q}LNZ49O&@|SN{>)~Bwg4U$nCW8oXjUi&rPzhb z5)n4+>!DRNaqS|J!WVCJYwSdqhJJwqkYy9jr`N3r<{I1uUoS}5?IL}FXn6&Wf~7@x zQV=iigc6xi!W@ePHczVSZy~=S5F{1|WPK{sagR^b<-`9qChb7 zCV~$N3X~60j0k%?6{TI1$B`p5$F*#5wu&z(QA4pjf$ilTGb7InZP>SZJT;I1&4W&! zOm4dW6Af+8k_JTzj=9i+*n-AMi1Ywf{B}wrFtXn?&ABf*-REXxtwzPnTLZA(q)kNN za>B=^|Bx`+@)9*dSFAHZLNqG2g<}3_TDQtMKea9C4oJ^{Ys-gHNt|E z0&)a41L{Ua>gdMBq#t7_dcm44g&*hY=N(x0Wj zrnfA&bCEh4|0yB3?DYfgCfnP$2|LHDr|b(Co7J4NX=K3)g`$P0rr`89wW96byE zNDFVguAli2RWi-WvwAK}y&J-djU7QNKYrk?+wdF-+}XN}u(jG?*!2Q(hLP1EA^xex zi;5N6aiw&kc~gi(L^_b)joLoNR<8rUp8D)rckw7Ma7Hms4W7pau=KAW6$%IMdzdwr z#_+{>C_CzAi9tb#e3E_n*d<@LlNIFmP8*@wa{^F&Kr;yTd5w9f^iCAYj#v&3yysp* z#ombE$-mm2EN?_+HgKLoHVsj!^A@Iipm1f2-E%$A*p_@0DX140-1l)ax#57%!( z7g=Nz*=d}Q#8+~>o!~jOH5BfWEZ=|{OWMM7Gq|`w01-4pEHOd%O6#hzOowKl3dk)1 zl5AF^@?}|AHdytEz(+=%eQ?X5*@j=pUEe632z5c+`a(DJIz z!TpYMJvmz)BJN^&Rghj)NMU1QO?HW0|3L6TD-Tp%0fOg=Tw%uCKOt6}02q7|ETXMD zlVh!eE?d9fl4yMe-3k~pz<@;yI$`!Y4FCc&uYk(<$KJHBX?wu91ia4*hE*L&JRD*$>9^K}#O<_lB8?RAS)2Jy=Fwyi^ z5Q=szcvE6k)@8|>arMBq*Mfz5I_ZB0-QPB-pfeOzT{GKfFN#!}yfj$$92xiyXCZz@ zOUp{dJJ8EHlKJlqv=Nf8d!vGdw6UOj>zzXH(tbEk=hXeCh8D}52B0pn!Xycn;Hj43 zyz^|&7h47XcEzqb1!xDAL*ZUZCrI=py99R-wKDU_j_P`@xVPzPFFnfcOFlHc7}<2v z&_Z3e-XWvD2$<<>w)gxHm7n6i1u7#$Km1iUDz=UH2zbixis0P?VCy!it;OiyPTV55 z!fdfR{Bv$<@eldXW4k~976cg#20dKpr@msCh85gdq~R>;VvH2EJjtjsZpax6L+t%# z!G@xzS#dBpaR^p{)$1XwnolY&6ckY7p2?(}Zt@U5KZ+)pg4VxS%>4GKDst4;flq|f zsR!kPi2hF~cvPxK^F&S4nmp~_lN?&Xj8CGv@O^Qm&19HuWTUr{%VEVzVW)53Kb}p1?CmJXr4g_6=mZ6AFnq96mkqnCT8gd3A$aPl9A=1=#G9+3>CQpI?)_$~wfm`at( zN}wLe{~3zbB2gH%T3$}99HrvCoA zLG;cfNU(^r134?BRX{oO_(Ag^u@?WWfdBvr8bP0F*vUf>+$I0 z@Xi8Xh#D$f;~4Pom4Uc1j5>NQSNHB%OUy`|%nmsZ!eRe;8=9z{thn!MRGsWa`Kf?$ zEANr*nkAE015>!|%amPvhWE{R#6Ryk!R8$!rinjGR4HoXS9;xUAv~R_F@I$MY7e?* zepr6<2PWB)X>J_HmnM4fO1a$u)-%rC_h`=QhiC?1K60`>(Sb# zfX4pjIl!+Jgxs91Ll32?~~!~sl(u6vGAC@%qk88aaE z*gCk5Pmt9@wH#WqmIBx7rcU7TLRD1bQNvvtuR`CscW;*P11_V&9?p>XIx~H^dXyi9 z6U%%e!f94KkzO+NZmL{ExX)N`88^eP$He$UmO9NXrf4PU*{&?h_hj~dAWWp=g=GA7 z$=|QJ74YqHLHcr+5W7Xn+`p7HeJeT7v^3{Kp>^@7)Z!&0F(Y3Se;J)*%PyB2d#T@0 zAZz+i?CBrdX&$L{^yhxCneqadx6ZuDhiaM-9wB3H$!u@RS0Wg1DFP3_r^uxT3-}ck zaYL>Ph_bh_RkS*YiT*%>C!sf(y*|wIRz`Z;8R^iNvtBN(7*Q>^Cs>pOWW6@sn_L66 zEr?kf_(^FV!M|M{0jBgDD4t<^6wo(tZ$XZ_Aw4B*OUtX8EV0aA99wa}=K|G`=R@v{ zqYj?_AQflXv3t_p5cG=7lP|$G$kafXrW>ThL!+s(S~(ZRy+(llA`T9Pk%_Pr>k)moi;DVZd7CUn{aZ7}!Sf&VHCik)2&rgUZW-SXAS0szf_AKoS| zbe(Pz`(7 zRtYDw~ zh3!JFOZqAsvXcwRu(-rXgKu2rsL7g3o6Lrslx=F^a-rhTH{MZ21ItTAVqBe9RsGcC zIOB{vn;4xaI-&St=GsWwZ{rFz-{xqk&BJ6uA_09mex5P>XJq?db06ZqDn3z7ZcM#= z4D~|>)VahZx#Xv0Zp<1?5RwoAGrO`_=h|@MVB>L3?$_)F%!W-afn5S9Q;{vzP04sn zd*S`2-HF5W1By?^nN6LuWZ`K+(xAK6WnwU6-0i2$ztQbJ8(oa`r{WfWSk&9PvDW2J60&tqTW=dDU4s-?+!c>Vuwyw*BDx%~@SYW6RWGasT#N@+h$_sa0-6df1~(Ia}92JA^0>eQy@l zM&U$d2rsuTJ80pkn?lTi`U=`$QcfAZLvRs+NM^AE+buO@P*vP<3hKkNJ~Nopk&u~cZ4UFb#;NgpI)8~Vkr)GnwSjac1RM`^ zW}U=;hB!YET3~*2Xn2N(tcYb;3*(*04F||O;Kl$y@!?m~kN}=X3q~aPM{OTvPjKN- z;zX`dQEEUCBg*2y7vn^tj0Y+Ur9oxAAx1&mEkN?syFhwq3=Uu6<4jL`{?mv|Jwd}` z>lggRGN2V8q;PeIR4?V?04e0V4}jTEHC0*^IvpmOO;QnH_4$Vm`JTIt z;>l^cnb2t=-}kFIa3_>;A+8`-32lASZQqhZ#)>K=J1c|5ctVhO8(nPtmjdMdOk%GN zcBtA4AYf32dAO^rFyozY`=;fzD%PU_)LRQAzD+<4c@FvPp4#Q)l-yL+e!n_PQUT_o zf_0Qb)Ir~+vYaXSO$RY2g23FN*XJjWq?z~E>cB26wNGZ+{I`_#E+lc_xYFNpo5(=- zEqWiNzW_ADP)Qvw*LS!5hbLFHjc&p~_#67r03Q~1r-^ZTSq-P1(~4oHF3=ysa#OB_ zu?GG>%!DKsW}Im9$Ytvv7~~94=cRAuHKILheYyQ^d5-9KY1H-5@Z@bYAZGO$EoIB*ZxtI%7Ax4z zLya)$pWGxoqp#qnL-j+>ZF?!JvRK_}Y-`6nfxERgF0^2sIIeb7mRreSHcT;cPqKCZ zo-}?@AHWyn%nG=v?ql0K{aPAMRVF%PSrC$ncfNespwS(&PT+INJdw1B5J+saU0Qf~ zl9!4N8~rtT9(^r+{dQL?$TFUb%rhJ+8N6%jE<|_ejV{0D5gq#|C03e}hC6)n-Q79g zkZ-HgxH5h!F!j7&_@kt9r_s&fZW3Ib<)h@UvM-C#YmUpBfDjN-hLT&S7-u za>NyC3=X<=g)*&_sY~g%gjcE&y(#UrPs=(&dcx7GHiOQwBe#C%|1&!v{+%#pLTRo@ zKih{H2xK@@U;oA)RlBqXZ z=Y%lb8NzuLHKu)pau6JqtK&V-hEPVL+u>Z$-RI@}mxZ@)fVPz^y_aH{_Ri2|b;Ptn zjmda{wv!#vx?ZS1;ugEySJGwx00y`LpL!U%34cFq;C!ifgtE4Gh2ZtUxuvMMI)&-% zrup|RLp+ALa@8N~xWl*rE<&B1-c~%wlo2LH>x=RlQbDmjW~S0MKy_s7+2r5I|$O*oet?U z_;5b`kCBqLpo_9ko^EIN7Dmf!&yCGIc0Tj{LLq_#tKf2qmMVV7tnw}2I$Mz=gL(e`KG=*cn? zbaMNx2i512_w$1tb8sv!6a(@VKzt`njM4lY2Vu0AQ0bU#?_AENjGd)IW3mnjRPZ(y zl%lQkBBZVS{NjDgm9!T$i7dhN{Uzb3c%SQs{$Sj_gcH%8!%?^!C-S=_t()Sfm-5S} zo{@TahB7M_%5w+Ls3FP92OiHZAmYk=j|$4^B~b>9`C_He@#V&KVI&f0G<0ni=E`8|tG7;{5eA#iJ|d9t0=c3)%W9%J zZa&Der@`xV1T{B!Ur2iN*@fw(T)aQY)!P{?V{E~EF>^n>&@1D|(>u`Gx2X-cK=0Ba zis`im5D4^zxqCtvovTO5DJ@XXPxE}d@~@iSlTw(=teSiReusT9u^5Q%X*L3BzI%(# zEvX;*+_D3HPC*cV_5>6w9Np!h0!4=H;b}Vh4;_DbccW=7ceo0#%EKoS^8*3nH&agz$6qW_78gk-1pKXl&Fj%Ovj$Oi+{t{&xb^}r#fEuvH`xKN| z^piB%82N^EJl1|avqZjba`$LxC3Xr=Rmhp=mLtFa#=XLVWz^ktqV=KNdo(>$*8s!pTJb>MUNK6MeU!-hF|J}A#L#IFI}GxfS)sjPM$qXCFY2tza9roz6=B9eF{`)8 zB34xV06JXKRHEOOi^KJf5Laj&mOSp1)9T+J2_xdOr&&jRHbKmfSk0-D>m#{F?w%M2 zuR~@wXq0?&=Y{E47^w?LD0FSl+KlCnR>Vb=O#oNufwGtbu>m>t`G)aV#c$aJ4+JB3 zl_TBs)dVcc6evAFOtIn*R3hL_ZM?jK%|=&LMd$27ixr4iP#1-EP_VCJarIQ)pB@!& z>p}`?A^G(v2{+|NosHPQA|YM8JFW;kTNE04b9{hgWFMJYgSUXWbycoU8)kfjJ>pzV_Q=u*cX!_Xi^8P z_%8PXJi?D4{0SH@Kb`-F>&Pa8$^^Wx=!DLEm5+#oQ@_7}LXE<_WPpAYkpsa{JK$8Z z1!V|iPbLSy>B>&u7(dd!ONZdc1?2ckfhE6SLVNSNfB-IAUMIp{3@A&sw%uJqYU5Hw zH^U^W{1=w{6|wn92npJsRAn$^@hpdaZB#F632RUxV&EjuQ=xyv8`02M$%n|n<`0@~FrQreR#fB*nQf1u53 z&C1=E-p*WOuYyM*ElywM1|CV;EQnMPMTl}UW~YZ>>A0o|s}(R(1k151eB>Vl>$b%c zOGASrJ;KO-7)1%5QmW~0FEfw~XCZ@LNk?Fjcf&v5NNUJ#l- zECqSoiR=t-N`n2|a_c+W@kulb7bfE!#7^=M!(`2>-*X3uI#F`*=b(6ONPM$R5$J^V z8bYO3>ZAJOpZ(or3Cn8Q6J+T%4QV@2?!ubaY;Tn1FkP0Vw)8Bq3J7GM5p?r65?auT z+O)8}SEeWkmwe4l`*delK?pFBkcQS;llmzi+YSz0-E8d*jxPR znm&NMu8ob&AJ{7t0BM5p8JT5CCY2M}o$N4qK}(j`&a!6k zhydX{vGZ~1I%Y$_7Y9!OI-_)G$p7ef+?KCF4IDFjTYjMkwIK)d^?Q-vj^P2%M$V8K zXkEf(cxXtpaXZVh=ztHV66fWRFBVt8%R5Zk$i#0ngd?`y#N7P_F*66;As8|pU=GBe zH10Y!S5_PV=Gilny!W=_q;|bn)G|Kp+V~~{Bxtu~+p)^ee1WgYII!I^K{0v8{gJf& zgfCoOr*5KZwM!o?o$T*dY+W>6w+YWUG)hRVu*?*;@ilovH0s_ws5@anj`2KJG&B0I zhVyqIOp^Pl(=>{lI;vJLaIi_&hn_E@sJJSTs%l)gUL_DRdj@p6i4Ix|CnRTcn+XM% zqUE9O_8XqiC`S*A1a)VzTH1>7((U~bOx~u9`o>9>jN@kE7PtBldc`k|#=M-FDQDmo z+RtT;Nr{B`Y@+-cmg?W5a!dyPEG3o&Tc0h^0rmbP`5tg#%xJlwa-iGTXWTa;K zXTokk)#X-|^d4b;g_l+FcW&YgkaWkLDEp)#t$D}Dy%>Mxr)DblJpG&1bPQ2v9+N=& zK2D=8m&FLqM|9(4MCk{uG%@cti7GW_6HURJzq72M{`FT62CIM4bpbyDaO@g08n*SF zJL3n`Y@RA^(nFj~ikN;}TJUpz1=HQ3Y90JjWu6QXkZJGLs3zHJJNF^Vc}4Ln?*)N7 z#5!AXBUSXAlwW*BOa-2lHY_YUu23u3~FG?Dnv^;J_HbZU{0j%)V_)Ot{lMjPy5XK z-$hIV!68N5_icgxB+N^{h%e^Wzle#E7tlV@e18OQA?lSa(D`Z1Xt`3bIvNfFzHyLTm00tC^97k)H7_0sa{4oi&8bXJBK#M{~d!gzx{pnV+Al71xLIXYBy4 zHi5JlHXSS3voG8s&qg5h@V^O=a#HAUt3nE(p1KtOVfc@-ETBFh7N7Gp0MDVH;L1cG z7q<}NNk*4HS(&IC`p_Ig)MF3RXS$wnC@pdNZmKn(p7EsQJ@xbGAs1@#a=XKKaKo{0O`$wI1na^)uom(pQbrMH)>&@DpzB2v6&zQN_t->7~C zrw=eclA>Anu|SFi6NY8fAcr;*)n%c?1}5Z&Vd;WPvU;8%pzX-KJK%r56{_h~n2XGO z>7Ms28Yso5Eq+>kE-FMkwdt|#>u42!@zTZ0Y;G=OG5oi%k-vyCj5QC6|Tw3za+k^|%2k0CpMYiX2^M zz^Eru&0jk6ri-@p*D{f%m*Mwn64}fFJ(Fs22ghW6>!_@iiiKz80=n_*bB6jc!x;uZ z-Uy#qL5 z$bUFY{~mfNwL+m&!>^Jj{H-F?Z}0drOZPi0ZU>RmLfvJPQOO!T^ND{)`{XKo+oh)Y zM5fU@XNahZ%a!sxw!sW{N(SnqsVczA*|D0GirhIMyXYO;jm1d#uFQR0DV|Eb+bgS3 zYy-pr0(mdtVDy8UB$#{l&_u`cV*wk*8W+|Z%7lJ%unvz(riQ=xbx^D<-xl&zyy8De8Xl_Ydrg@tBPgkiB-qa;bqiz@|%U-+YC3 zQka)7(v?=I#rA#4H<@4uebUCrCVD#=2Z*jZNC-W!)p zbCD>hjDn_}hEHA-wE=D?sARh~Q9Dsci--snwD&R5?F~1WjrJTyW$u{!Ox4$ys8T}t$-~OB zva3jAJh8q^5j#+2-6q=7*hz7KZ={lki-sZxo0h4zWJhdFL;&oi%A7+Q?W7G=R^IeB zZ^>{uM&iWpa4NHyYuIrD-(&k?-C(461I=eZ`R>P_xV_Vm1PaS!hrv?Lg%3JeJHKGZ z?Ulye^+g$VZ?UnsSr04N1}dZW zs!7N@hxj-7RDb-hHC@n`EG6D__X89sx_E+P8M6?+qz1S`eE26LGPw-Z)YpfTPQi*d zci%9GHg(;&W1|zdI!uB|Of_hr^NH_&T2Ho_9IA}u`2&rocxq=)1zr)jLa!ejJnRNNgzSNTNIVcM10 zU1#<2$>vb%>*pxt7P11ri%&x>&vnldsV|upNDM$j+pcSYKIQl}PYz*c`NCtwdeh?X zc{S1d`q;ZqgH>w-9Ums~Y19uP<%{}yi#qS40dWn;jc)qijp;QUZ=_q4xMyd|A};C= zpryZ}M55!F-#%)KDGnLafg5w*2x1tL<~fpp81ESptB9 zT|nZ709rI;E{?ao0;?qP%upVfqS^Nnk57~4S}%mEbRWk$1geagA#6cBdsk!t#kaT} zF2X<5N^fXuX&oN2dDYit#ln7ANkkwiu8+#nRYl;-^)4x>O1QAD%uS=WF)>7p#o{yK z`tuBGuhWTCB;Gj_VZf~4ss(l^?W!e)FJupZk3s-LOtIV0-uNU0Mm`sBQlQat%(S=&buV;M(&2j=Mn#HtCqD9 zua}@wE_m;e)tkg$M-{bvo{B4b)lew-0rsX!d26uBsrXP2|4BeaDf9K{H(hIrcKD5d zU-V6C=Ux~q_vZ~(eH^#qd3{x%2(RURE`OWCNnjo^;Ufb{e(=_*7Pjhp?!ZU;_PYxL ze1DvI9O(^0MpS}7!gkT!lSVpng>f`H0)zz>yJ=Xf{Xl3Mb+27H9n(TKQzvnR1sy&v z5SAm?MQauWyhk${UB4j#Tf%eZrRKe0t3F>im)fDSP7DJ!S%8Mvyr20xdrPj(rG3l9 z3nuzEAHhTDLgvl6e!gd|OC(wmLF&l9L;5-=Ddc7WaRohs6l$)WVa|{3mmx05`%z^0nFx_rm?c5aIsPf!ZS4;IfyiB2p9k0X6UFMJQ?#VW} zr2!3o=|*3=*%UK`s>ygeCIF|#+&rI}v%sLX)6SCt`FSth2ko=@hKCf?`J?!tspv{t z#>x|)|0_93PJ4FFa+RLwr&Cz5Go%bN_Cs5>@){k4@!YN-u>x7X}39eTRXisd>H zs{+Y6x>NUGptl-N$^O^Vu1(m599YR>06v<}#TQBNNA@UP7=L%IcM%2x4ws7zX1A0n zO^El>wblj>UQQihC!Vy^92GA>N0q>fdd$bOM2hG@Oa|dfhx|$deuW&pj66ITm{q31 zw;`itJa_wam6@geyjk5{I$Ro9v&2~;`}VChR2w55LrGZe=fVT;Y_Q{_7H2B(lR?Di zi@Pt4@k1)p14!g(Wu;*wso$ZnnH0qyJ3Mih3~bvLA0w zpRIcZPQ0D30gR-GEiH<2g5bIm(rCylS96l0UPFYDpj1)7TK)$0I<;1=AG&jh4@ufE5_6WRDX zfg=k~E$UC?s%TyVtUTYxoih`!pq#6g@w~ge)NgGtLK33o#$r*Q*)zRK6 zSBKqvq4e?IF`OGYa-ddJSnJ)UL+Wfb&mU!A^&ms?V_cJ1Rz;uj=q^314PmMae&D=& z8aEMQV7XNmqoDSdL8?~lA>n!Uu7E-g*P||obI*5MIrZ3baYXjT1Zn*s=@H)jM>;`J zG{1as2;s2n8sn;=Z0<)gpJz&gHGjOm6by13`2_s%%7cLUxF5tH*pTA#As19#bZn*9 z97G|8Q?e9wk?Pa3+Kil8j*yV8tyQZ}t(njbz&Bt#P)fy&D9I386{Ra{aw-_io@O}j z{`mWlqE~ke0@s$sNjVqBBQaOn5%41d{h_!U>4rSwH}mJb0MPjPq^8)>|B|04SGS1g zccRxo2a7zB;@T&soji-h-jxlF1SFTjVKGOZtH6oZD+I}^;{!#6h+h~`avM==a&Znh zIPA0Q(T)PJ3R`}+kjGw37D3k_YsOxwZrA_-wCopPO4{wIA~??9n^I1mBor-*l!>V^ zf*`}xZ}DbX0XArYJyvt->VF+l$L_jscuiQC`a>AsjHE3rpc~~rWAd>R;4D67CoMQKNdj2r+(UEw?|dn?F$&95HoubexL(8&*eN2l)Fd3LcO=F(S!X z6cI{dQNY{+0W8ytYY24Cw)Blxg}U_nWt6iwljRS>T_^#t>c{<>_uII6*SK1Q=8h}@ zP2r?DK&TpYg;h_S_MZ&z3{^9<^ zE3Pr(fQjF>}#imF^dHPUqw?&1sh~F2sf6h6F746N_t4e30%) zujzoxfAz%!b8iO3f%`jUokOpH-6Fe~%M(|wfhvaFESN3c`=VBSl~*tSW%iizwJl#w zV=xr3u>kb$z@==$X$+8r*?~LCc^=<;&5<^Uu*hsaVG%=AM^)jRK0dXo;Fyw5P`KP+ z2m}@QI4|yJx)jp{!ix2r&9WH9=#Y>z@bHZrY~H&ro_()1BK+hTR`N4Qxf>0p40d46 zYV(&LCI{LSLu7gqjs8iO%2?pb1ksCX6W_;=*(^Sq0X`u*w%p+I+{XM!1!ASn+?dwx z$dCX4jvL8#JWZRcC>PST000TqL7$4)$wLs_cif4XC6!sC4C|YossM)Oz{EeDw<`}* zuta3U$2+i-D)Zh9pye)~c!B<7U%t5V$!>JlmV10N!|RW?fRIHPPO{p2>K`+j**9T5 zFDTg2ra{*jpNK0e7jzg0yt{Ie?^u|L(R+87*f%L$LC_3lRUUy$$4X%y^m?u018|m* zJ4LU29S{%mpw!r;SzwDxKV_*!hd7O#OpH7~)vR|AW}UTCX0OGc`Bkb*e8u@?IvAbt z=>MhO3HiMwbZAlX{as-CGFDOjmh<^@cB$573O6HK_=kTl1Pk;Fws0f^HFb*#ipR{f zh!RiTA>ShFWHm(@Zt<3hb^v^3K8mN@s+xc_AUPXxDw3S2&}7pTpRh_FlbVi-Q3nC^ z_PjB6;_&moL+sQ`eienG>t<&MvfNQtx&H@0KadtWj@+9S{{Le<M_XRw^WMl$959`aMbW+K=CX4rq$RKf< zR3E@(PdCo$e~X;DkjLGr#U~D#w8nl@ zMt#*_4|!HJ2=KusOD`}@y}%CE<4Zb{ERm7RL2r?gHpm4&|9J4!?t_jMvYHq7GH&$5 zC;MmkYmG(iMJWNq3)VFw9vP_5>>pUYLUnvswY>KJZv^Q?e&fY1wY#y8*vsw0JF-aa z;4|IM*H)^S{W;_tkGFpnb$mOW8dnDMs>mB9Hy;m^8`lVLfU6n^Ha~OB#=ajUOaZyT zC+bSHC(?x&LEir{fr(RIE<$fgI#><=)PPgeErvKapE1_{G%IlrDHK$H#|K7Yf}tZ- zrZ!H@B`In`^N_%})a@Xd@5&-b+Q*Ztg^Zc1gK|#xa2_Q)mmK1IR&1?cZi9P0NYW!n zi+moysYapxWTps!8|Xb(twhX

IJ+YdD#U&CY#fkQCAAt~L1GFg%!{=;b>#=wft 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 z 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%0A7C1sXW2I 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 z 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

  • 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 @r~;SUkfLeULu{~ecIbR? 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 z zVO1jkf;a5Zp;f;z=1d#rsgtMN+*a22)GQQ`ybj6%{Ej7F3mu^d>-yI4xfYDI%jT7{ zQsH)n&>$qvX~5uTt2mQj^D?^_eW+kYQr%dH?&BcwL@frz;n#0^nJ#z4y~kvgHoMMW z=08A(+~&9C*X+hbDYNhDSY|2>RH=wkOw1_~qE}F4jcDMHMZqa=^Ya4sawa2yU1-g5 zNr!E5^_*M6(GmG$9IrRWvUv3r;;gAW6U7()^ur${Teoj{pEdo#hz-{_lfug35cLH) zIT5LXV|}qsO09-LM5rIpvc_hA^G0;v8?Dqjdc$K*CC_I^)qgT6;PHZUd7<@R4-W9G zYFXM2TH#o;NX0g^;C&Co6Oh3UEL{{Lgw@XA|%}i$mHdcMb1R=C&17OG;08Pk{L{(vlt63=pdKZvKSlCGX0Zs^~Y@ zC%S6FetAftwyiW;eMa{U#2G~{FKGvHzKI;5YY<4nyaTFS-H<@p`4)k6BzPT-kXvFf zppO0=TAO5MuUV&zjQ`Vf>EgrzD1&76tcHg#x>8DG6pz<2-AKkxBtybo8hwjx5=dyW z;2gn4gJs#klNY%F01a+Ip7PkqLlE30|M<+xZL(-q_X15Elzq&PGhe+$i|DI?Y$u6@ zU^uAR1Mw!S&+fohVgTO_mBZbxu+_DtR+UBN?F`}eA+^z^AR5!eDQtjrt#0_{;pVsf zSUVei#@E zm)E2zewGdn1M+}=HFC(G8~IuNPr>t7?_iDU}FkmLbKymT9 z+hf@ohJu0i1q+MYZ|bs2hX+-~S@x@HGP(UDPrb^lni}?@C|Xq6*pB|HDM>UW|I-Cd2lkrB znzz@7V#&?~wiT4QbFw7`t6x2p&P0?fRI3ekpdodVwy#$w>C4E5XH!wI7GmH13OVKYzzu(CJt2>3g z57v_dUj;80UtVVEW9+WY;Q-zDMZG&x76E+P&PUQ58z~B__96N zuG9|daeg|8&`2&-GOo)*n=H6I+g$G_8gC_>>Jx`2$<<9ma5!&38QIg71u){0DcyqV z70JHCjVdP$O!UPNVgGdulE0Kh$aQ9(oh=J^2=o@KGYD9_>@f`1tZ|1dam}~8Mnq!~ ziE;oO5G|#rW4@a@5B}RY&%uin7u-@Y90Wuwep+5mGPhPejE;p%Yzmvzv-fGUPr=2f zY0h6LXB<>*T!P18aoC-CYBm|uiqJeSv1$xW0N9@`vStga_wZC*H>f=qMal|fti5ot z(W||3e!%exBzLZ~N`oovi>b`&i~Bj3(e17`Sim0y5^`E~Ro z)zXjmntH8M);ge;w(!t^jI%68;{XHNxL}J1dr;_A)g= z66!{>TJsWqH`vuC*E!ZEE*#U6KImEJf~IU;*W3RoR@dw4z5jML0(lNBq1*%_bL_=v z-ir69@&9rKIum4GW4Wy%AR_nw{pBy^OhCSeN_QS=Jrv}Nu2*-;QM-W{7?VsK%XqWs z?PSOtxU;6`Au@D%DQL_I0{s+=^DQxZufY>8s_#@dQKsVA6zUDTRge_kB(v+yGP+qU zFM`*uO()?(+09jZZw(X%Birxy0(&L~QDk`U->o0Y`Rh@{ima^z1FlbP>- z`dcL@iTPOc@(W55no)baX?cnkqB3xZWqDhHVUTi{e*9<_OD3AdQ~rT5NRdCdjD%4R zv|LzENHI#1EDE1}*yps7MtwTr;t@}_sys8|zznG0Z-Ow^)Z4Q#C33{=LAP}D7VT6A zraDe)`OyOxpc?6#@bGDtdx2N)<2D1PzC^e?znGTtkaBi}=cYn08>+OmMu>2zK#bo= z&*>ez|1AF5IN{4_&$@)?nX6_4WdHGTffLc-V{aIqA@{Zuwct`U3qUS_;h#~v!BXl$ zQ}fF0INOT2A?f(~k-uZOM(+v%C=c2I3)k)cOu0&5gx0b_a9ij&^9s+2vj<%INn4TM zskAn4rplG5Fh=Fur4+nh$$@b46%D{I#U30;rx2p|wYV^*sEH=M`|A2mIF7)~o67f< z-W0IqmaOuQmpLT9wFiaGPRTVfU7LN>_VaRcH?P#W8A?w_^{Z}%7zmd@XIHQ$Q`B0=a=y|!=#$Qc9mmE^EU8yqoYUM> zr3hGJE>h1vJ|EB;3!O}doyL7Y<-hNO99AwyX>2;h!<8Y&jtrPi)QO9rQa=~G7uO_a z9YZD9HyXAkCQ}BYPE^V?luo4J4~;x0+M9d7Q(Xd&4ab7EMvA-JlJ%?6I~5b<6RQ#$ zXcGBBq=%H}g_A->d3ahELSo~k0X7vJqSIy($wx(OWlI~tcS+hM;^O=2~HOaAy$Qs-e@N^?~VirmfWDN?J|Pmkqzbpi{H4G>Mk6 zZ!cK6hQBAa^tS0njL0?>Dg95pC5!u|>64~YrVX*cBN~RdeKg5e?w#74ciX6vHF=vR zcf!X2EYgBYf|fjiPTu?sW-!rdPgtd5S??kMReH;1YsSt-2+Q_ho>lssFF#0^BZ<_d z=>jd~3f$PwM)x+ED47^!K^p~v-6QReixoW0F&{w!?+JqFStEfN=j0jijRhla#Ny6Wg~w)- z=nE;HijOuy;fL3@=>>Y5@J=l~KNLhx(+-jVqD-GIHljc3~%A@i@X<<+QG*~kg)h*&~D>uqJulxRDAv-#s1>7NZ1hJY_)&AQoR zU=3^#=z*D-zOHVrj5|6zq2_G`*J|iD3@?YB-6gH@B@49J67gN7O+XpnKsL!Iesj`eG9D^T(+>>sx3pV%I>DukqE4_5z-u&>+ z4>5j@dG1^plTH{zUMRa&w$rfwN$^VOixx$DgxkK{uWkve$WK=T9`frmE03xO&?klZ z{ZfKLylL&; zdU~@|$Kykp07yt_>8MZ2K$bRjm4?4|Lt`uVj2%V;dRb`>NnziQ#1`X{t_V-^ohJde9^x)%vbd z)G4^t4=wrYmI4nW!>$TMyMWD4(7$j6%~((#JaYL-UwM(iSsu8#q^9RO^rHj5+TmB` zeCuPQQT|gX-si(Q%io3|-w8|Hms0AJ3((z8sE=yH5OR8|?%!gi%`%YO^6$*y2aHPW zS&qLaYg^Qz8*#Dj)c za2BPGOelDI3iIXa?lm9SRO1?p(<1%BEi_hM=_SXJeDv7n878l8bIHok#042+w{Pdh zn--!iBbKzK0{z}onk4!PgLxJ+ORt5MuyV3ZsWCTNfEDQ1Rx)Q@PWD2UJVh1c+_ml+6SdKthYtUU$Cc*jnoG)u#d zr@uI&2FRtc5<0C1^noME7agQW&IRRb_;{G9hT$$KyD}!eOP)&&U?r|p5yElPw zC2(hcCH!{(qwq17sQ$N*FAPjRSC@i zR6wi0^i=&T*a&QSRC&$tT26!4q-{d`A{PJv3>g8R0~ompfBqX(pPybI*s}h~;2V3* z*8~G}s2m|6#j6y~b#FusN=n2pr@P%#H5G#W)$0|?xOL@LY7mSCO(ZfFs za3i^Av8*I-Xn&GV*Z#9J48qKA!AQ-KR=a;V_`jt7#7i*QWRL>{1b~euG8GpbyM~gi znUQ9bk+d+;4>~Rsr_~F64#oXy7x!&(Sg_UoX7@~top?mETX*XR3xRs&zQIWHnGmcL z4^oV9=t^u(ot(-{(byeYD%oNtU12nE4<$SY^vTPJU>VV)nLR1~_|3^Z*Seai8`q1` zbkJmUJDDN_Oon2d2UeMWR%cj-gfDhTQgQ0iqK3{^(nU#%$(;2>_p?tuXDzI19%Cw& z69S3nw+X*1vX}UcA>>{3h@*^EJVL-gF9TX)iGkeKeMY{Qk|AK95whnM4^}l4J{%=iw!Wc>AyxA}oF7}7be2LCr#u#=9g>*F-*HDKl^GGQrjXUX4baRxSEQ}PW!q9n@8J9#*9!x-l zoCvw1vkg~ z3z)k5;@C;HIYZuns*FEj)~LoFQuQo)Zmh4_0n79zz8(xQ49T4a$P<46_}nFTD;+T) zqRdezAhh7|C{}P*{k8-b%Y=JA=y^>^pLlSFR;zi=z&P9V_9?gE(LQg8FW|n}zL??{VfI z5k=&sru1Z1v(iMg^^&ox*;;maM9HaMTKeT)<2}e@4rx)vEHlp%`)T}b14q5K%;Wd5 zj-@r)|D^2;-}zMTV?WfOR0oX#Oh7bO6C*83%U=ZK^nW*}Kz3Ovp}DORZEv^YPrZ>) zQcqd7b7;$i6)7^`WU(6fdWdLiYi**-1tKJ9(xY@;A5aMyUqCNlMakbjbRq_9(M^Jf zE~iHGe!KqJkiPdm3?LuVe&(jPoi#*zL(v+w?ZW1CCTXp8n_+Ozsg<$HE}9EVMz_CA z@Rp;soO=~_NdG3&4_nzjusCbTfG|{4k_H6`72|gpu8T*kNzqb<6Jr8ZH8dG1Fx|}L zXLswaV8lQ8LiAQJ_xHZLR&nFo7`kF|Bzj#Qi5x9I{?7>J;#QLL4RC^d+PXLMBLJ%E z*T_n#g&-h%Rz6FJjVA6fjo5zM->BBK)I@lL+iTxJx_-JY5w~cUG(T>(k zjt@9H0^&fbB{#{&^g2U4&xmCR$|r#&Onyo(KnlC&BEun=fB3fnyU(2xl6`2gG*LCREp(wSPl8LlmyRt)ZJE@Yg&z3+r3534BU-1PjYf_!MJ6#(u5P>znxo;S%Fz)LBy8?75P zZ#v#van~HCfbxSMSaU~TnMV3j@%!SsWl47mCFYqVwmT3s!7beTD#vov3P=bSZndT< zak)!haX`S$;^8O*e{6s@GaMbFkxfV3h7kj5x8fPS3C@l^byH9ZPc5U!U|vAa??c7Lr>dpfS}zgbO!03)cUkz-#E9kF#Ewf{Y;TbyA-mLJU6_<8 zI3SwHGt&-y>|DlL@a=pN7kvmHrHcp(y?{*8{~bQ-y(}DAp4oD+Wn3KVcxZl_WOOU3{c9OwWEQLuZRbWE{pJ#a|O4pPb z^oPrM1YJJFG3PYil#MSS_M1ve{8jE|7D*!jA~V{u{1ep0fK&^@@~bo`P3>@<^324( zg~mv*Nu9Atx$ECciqGKSZeP+>4tQ!K(06n1=~%c6tF_qt*N@cZOi414Jyh0Jn^^uO zrY7g*WO$jCQ*#Y1f8`MatB?kL?r6FAId}wtiqZyxh!5=aw+xAu;kY%LJMdFj)d;*W zVqP^YVG_&BFEtkPv=*NY60l7|EMyJ+q2|xT3qif}uZm84i18*u+c|`ky@s@DdU{u= zeA%GEeNpeTf7AniB<}r-$wGds1p$1mSYZ!z2IQ9dpmasG>m-t7MVH9k~%KWBPq5{-LpY#atnPlu79a+mqU14y?(~67eB5il%*hN|snHlUW0IQc2wM$xfXh1GeA_f`1wo*q{&j zR3N~%A5RdMJQE%|tnB`d!ag5WM60+k+$^NO_u6P0^pb&y3 zctj=yv$UOEWeu2a7wx3EYZ+cWk7?X7Hm!pWI3PkqqVOHw6B)FaFh3$Tm7MKQ8UQjx7BoTj?IBi+b*(kYL2Dq_#Or`)E zLO?^P-TKDQi*1DR>HObt`hWidNLIpfTqkf51<_^?{6wP*?tD&4*?j0av&Qu}ob7?> zu_iCN1&0|p|DFU|F)o7>K@9Sq>KhxvYzS`gfS)HDjE9LV7Gcz&$Xv5fneqVJ@xWQ? zm4PocJN>g^wMVH@D_%D=yk$W)J3CmTRx&Az5~<2rJ-*|6UsL!n^Ea}Hm2l6bUn|6Q zGP-pei3NMwNQ@UVKi}5{9eVqV^^Y%r=vk$_ynRRt@JHw?(KIz=<^m9vuF`#A;9*Q^ zTNDv!;iB(yqHYzvhQx zr~4TUjwrGoo$_6sI>+!krIQaQ*5F$-a|Q>7T(>I2MkN{2JDF{OVKYzSZuk+P!9$|_ zIFlZ&)j`2e4~?ctms1Vz%NY>!8GDHps#w8R*0yU{JdgZP_d#*qNKFt*2FXAI6Xn*E zSzKV%dt>wDjl7ODuW*;7Qzx1{$0v{(*?m}>Sd?bl@2^NW$Wh5@sMk1&99iniK+z{& z)4%XKJ!HWE02_-zn*>ck0@~M0YidlU00094FT#O~tvgVnSbiX+^Dh7a9 z@&2>VG)|k3$;jYr6;l7*ITw>Qu!Jl85*geD7^n&(+vwUBE~uvS`S#dFeozGLhWuG< zS0?wZ{=0=7v4PRwhu_x;*@}hftH_7m1_9GSdNI~qEg4^_eN4~^4h-kQWDJ|VyU~q& z2KfbdG7*0aI_VM#(u%bQl9PTC!v?<%Yk?$oYX2fbBOStsdH)>5jvSnhaqC^lu(Fc_Ghc9x07 zY_DS8Kz;aw4mHsu`&0#YxiEfk?f;Q?r0e*<()k~dNbE50w)8`hbExx9aG^1QN$I#4 z)x|hDXNNPxMW}pwShfE2snJN{J!+RmUiIQWxM=6^+OHpfo`%B@NUsO37omKK9-r|j zLQA_SFvqUZ-~P%`7FydQQ89sVgdOXtrnp!4_{}nb&WngXJz+7^#yJ4I#J%f7f~<;} zTuptw2yOzMK;{CtnmkO6f2;a{ftJ{4B2EPRXyrzz312w8;{V}J^3S3$^een1Fp4Ro zf3J#iRlz&pHDjn1;d7vJKunLQ5+Y7d8*o!;`UyiE-UCS?~7;M}PB_`*aE8n7nm#onow&&SSb>SG0+} zq7OcdGIuFO`fJ4{F@JME|O&(5%}k|MmnjR)Y%k61QWFl zn_3tHbT$0-4Z}!a(0OxETcKd63O~YKWh&2{n?}G3j|rJgTgc-S#5ZzcebLaEKeLJ; zH*M$ahdYoTUf+1kzt9=zG$|58xQ>olF;FHm?;`!3o*Ifx4e28&L;IxxvwdVf_2eNNL?hy1?I=f7Yi)Ti-Ms@BnJJkBa) zq4gXq$ey>Dh|ywgzFawR_s@tuOSEqL5v3S_L1!k|t!}hiR}nw<#~b7c^&sFmj>_ay zPLf9*g>SagLLdX(sc^|xlH)nG3UoD1sVB4j*sYYbfK2y|M4s7@FxJ|K>b}I3$G8zX z-K)#5K-@pmGVIM0&~XRmj#V4yg>~_Ru7Ik#Ji4S44Phusr>eUDAJ2GtB9H=)==}Q~ z0`-puC(ZxgJ~Qq5e4%N3($%XN(mJAk>rQw1xo~=Fwwc;tVZW=z!r7OA2{1J`fDA3{ z*mgWTj0!}0Xo=oYXUf+DAbJma`dyJ6Mq&@xkrDC;uEseIqj<=c5)T@OOIG&S*G`a}bqirgZy!kdnH` z%vo*qq)KPDwDps@;nT@Hz)@C`!bYGuAO7Vhge(L zlq;5Px%i@J5i95D+GC^X+k!wZ0H2eo*3&!yVj4i({p`!n)P$aWU$w=@_ z)kKM$y2%U}<=%_};-VtLC;of0c#TGIcJWJ*0;kAzX0G!o$4EUSf#!9ZSeu~$XPX;E z=Lhzy3m&-%gl8Uwe6G$M|)r6CjP`U9`D4HkOz z5?M1fhD(g*6$siuuE9YP+FHXsXSjyDh+kVM$U={0k1Y7V* zu-EFALrqt)V^G#x}2N3KEM+@`huo$$m*Uva1YA;vz^rG0YTFlJ1t<$e8T&8T?W-|N{&xRHTr{<-;$moAOPH&a z0NlVtq#8|cO3uo03^U8iD4kBPX5H*0Y*;Vn@gW!SfW8;KIN|XN%fGF3%+l8A@}Pa0 zOr)XNda(|X%V21lt|jGZ&6r69lF`gz63EYF-ZK6)KqFBIJfkzVogh@k-nCrc!N!R( zkh(tq9D&vZ?-6oRns=>1PTf_-H>sJpd>_)f_K9_UO}Q^eB6zX@z6-Uy&W~PuFU{~V zS^kjGnVm4V0Nhi=juS;TK!9w+O3#1iF(ueS7q;4bh-^>F= zTnJHU6gAMh5;oyCJ0Uiqcdm@l%RrfqNt@iHv_?!_okofM0e|EmicQZ^>Mn^h0CGuQ zI2#IRCvi*r$DYmh@POq8I651_8r20=)J%e3Q8jfX2yzk@5CcsH$^jWi>B)3(?0&)hj3(5+tK>owaaPS_%QBppo-J-7&)IkMA@#CJ&cw`c^ZJoD`fj}3n(K&XB6iZ^F;uQ zP+1nt+uonyyoS4e;7iXp4D3Sq5YF&f4}Z*$gduyU+`5OSD?OtD(|er7Q*jBiNRv`q zZpX;?aD|vT>fh`05o*0N+cXxQ_rx0M-W0WOMSJGphZKW5iN|9Okp4+})_}AW0`P9`QgakB4+xXb0WDtQ0v>|Oi zIwCSxAKd$R9<%#;g+8nMM-Os66w_6xT>71}WI{)`OE4-TR)^=4J?UwgvLNkpD&~3f zhRe22V+bU~a-k5$A0Rcz|6>};kVh96Q9y?^yq$;RO39A@0nmsU((vCVBv?eGOa5VS zeaEo6wGt-(*_US+?El^P0kYg}G=E~WHp|5ph?+Fxw(TQ!6Aqca5l+@6sjGt+g}W*nhXK)!`0B) z5s7r^St{_V(J&M^9Easjfr=QxQf2F=qtiyN3tQ~|>wT2SiOS}aHt%Xb&9uY zyKvQfRkBh|IzrrT;#$_73|v$fRO_j?@`%b9yC7g_mm1nt8}`jd$JwY#-X1 zM`(Z}6v%_ha#1Rp7=8pdY_JTGq$beY@M#%kfDMyC%zX7meeKq#Hu=_-x(KY^Uv%NA zWQQK8Le3|}yTGGy*4k-b{PYR}f$LDJF~&yeb8w|Mh|gf{ztXc z*!QTl9czFFrg+xX7txMc39&Dg@{D%*84ZipY5WhA+3&_uP{mny&*h>X8D&x((42Z_68|9p8DdA{2SP z+4x%GR7v}rG5lnvVxMj;?W@|5t=nJ8ODS8p8Q=+>T1=2%u7t2<8ggvA@>8eOx!Ba^ z7?pYHAuQG0bI*5FWE zkw3TL{S}ENmvE_~Z8zxTRgv-2bRQO-Fn{)w4WS>c0*-;4nNrcPm#AFDhUK*lxFAy6 zkiWIa0CFAr?1=}1AZ*4-V21^?9}BA4ms--K|EqraDmt{*l3125-)|0tA~5H{`|GvZ zEw>K!hAWm>R^j~;$7nSdB!r?_e0OU#dXoc9F`H| zY&GCm#;$JLlv#!{AOU4BWTyU-S6cTD8y#ryBz9#O&NOGdap&+cF1ehk<{Y2Ou3bem z+z)zl9&L80xxz_BO^AS_ukEEflzUV6JdoASzQ3I?|Id1belHtOE0V}GK$5>o0aeEY zXZ@If9cTw@I66WGxpJMJ;7bN37J1952V9jRkYSPD}Ifm4QjK66J z69ufRtj3}W8$Le-kilNvMz`NXcY{5)PVdfJP?PEFgNZ0BHU`FzH0?;PYXY0H?jp{e zAG3a3OWJi%>_@pOCxh>6f@uBQ67AXFE10n76_QT|_OdUEyg4X{t+$zdIeC+CRh=w@ z+Abv;z3l~;O3Y$x3Ip=Yj)p3s2f5lAf_e(6V5u z)Vb;pq0l2{OuY5WRHztdP34aED(YGBj9zX<%5DRuT0z6g`VYyYK6xgMEK@s$H(@8) zl|zAgwpT66Ps=yWFbJmQUWr--I%i~1xDp}^oOGbd{bza*o^%f7@rPWubi?$0#NvN9 zJ~T)$LPj^K39WT;i#;HW>EkfyRbP;h`zX!fU*I?ot`lM`nMRb-4w?0J1+Zr5a6H-C zlLM;e`FWo`BC%osQ+#-TH;X;-p+lj9R5{HwShWi})iYY5k#sDB%e?J@yhpHCsaO4L ze_GZ%l-fyJ=a~pc!On($F&giWmvW6hTY3RvDs4u{BnBHz(;u`$e+JhysoM0kD_6T{ z`obeU*$qDgU~)TIeh4s!F63&Na z7QY3oS(;5PhO6p_1Gf1R=*$^XttT?yIJ&=vC;h~Rj#)d@Ox_L(VJSpr{6p-6vmrfr zZJ2sWxxI}9@DcFiHyThdk{@fehyNdOAUFL3R?^6IZ$YFGM(_+K{NqW^Z|#v9h?i|> zAlmi{eb6Lm7^|&qEmL!c$GblJ%eeVD60|Mn2N|EJ(3%xR#8X`XEO~Kvy2^Qzz*>A> zapfN4ttmc5g?EgP3;`#gC``z<=qX>GX!uR+Qt**=Kq3xG1vGnJx!ZOCY)AdrZ+5nt z7r+CN7!!0DicsZh_NJSM3>{8hQ|+?%Xu|Kxi6J{x)1<@asK}lO#S*~~gV^&JwM;%OLxGtz zR`QUf)OB$d+_}s-eM)RA$F)OB6Ohk#kga^ykAlO0`)Y{5OKzkP$CF#Zsqa9;y+XSy zU)oWBbOWj+0GsbPJO6saCJwQqRdPyfgKD$WW~2;Y^Cz7_c-G5xvJjTtUR*m?q$L_7 zq-OJ$%ZYBwzkyh;#FNDGK^c(;zB&dRpRm{ll6Mx?am#P`db4UF;5doZJ4D~yn3__# zIp&OV$>C11LL~dxaZPrd^nQF{VTr>Rx6cXe^(MK_;4WCLEfMSk^>B(MD=2*r7s1;y zPv)FR*fjXp<~RXD`4^73JOJvgYZt<#{z2;EIK%QveLsP(%(t9#e4{2;eVXo}L^YgW zcPmcO`_(Za2$rqd(xaCipj+^6e5vqiViNS$Wprf;M$v9@w1b6>Xe+P*iri@EP zR!W>_aA=|0y9%c>`?MUhJ?vMbG=uDO8oMe8*<_XCi;8Zs^>94F)N5hUag`M$EluK5 zd9-B6J1E3Cxm#&Jy=4^Gg|sy7 zkbKr;xxw?TGt%ClXI7~?iw-m-Vh@FhzC`#clDHlM+Lyv!ypJH$oM$v9LP=Y4f87&96MJ1%c?+S5`jQbH0nOLtW2r3V+> zt;sdyBP7;M(miO8OB*34+F`or2f8;C!0=ebvK_3HJYZ^U7Cc5$5(*|yb25Pk;R4<$ zX~5ovuJ3dNL2ODTV0uKPSfAf{b0Ug?o^r?h|F9hk^YOE9=keIpVPe&{ejS;qjpWyj z0KziEezQ58DN|3$OC`E^r6{95k#=y71Vw#B7b*Pn$O#$CkKXt*)FI%#{VVs!aU+E8 zAJ*Z1-#sU@lT=o>&Ei(>_9Jd_>;sI)SOk1-YGVtbZ!~|k9Jl)T_louArh;UA(br@%x}il|8veP>4I@EDUvz!^1zF4CsCmRdWn_`4c1 z(TDP<$Y|U{c@OGKGf#fKF=YD>-5x%2=w=*hXy#T!LBFFfmEC%_4|R%5_V-+X z{_-aONpH(I{92Dc6|5ly_Iq3Mff>{A&(P>kI83ztjdpQZ^ChbNnU$_Is(a6N8&Yn& zqvu*u-{28*1r%^4%4)7#6(85Hlf@*}rnV_CXKS+|tjLqL51;Mc^&|zDe%krRB;?dPjT;`x_EQ~PFsPbV*!M0!&%-p2c{heoIUhQH zoRtOTeiXC6F!F`o&?~T;MI<8%U^|C4<;kJTwfN+rP5=@a`FbYAn!1Be0-=Q)9zm6W zer)%iVqIBhC+1RgVI&jdn2#fxbF{!9E#62!1 zV6F4vC{6n4pAKom&y+8Db-`>HPFZ;8X~LyJifUlRmciJE%%?@2W*{5VT4hX@ErNJAyAaEOoMY>tf)dpXCuK(%{+&bKC2~LW zY^S)x+f7<gFmqLKcp0E-4)JZ7GcLb2E3il5f1-rwjPwWcNw(l6ZUYd9GErGuns76iS zl`vzsYPuQ{vLau3h-ta=hASgjHdp-0Jn_d+pflTfh)-a_Znch=T{nsf*AuSn++T>#$79_If94x= z%S+Be7xVgc$7z~Q+5($+|5WEeunS<6dB<{o!Ov%8h&NQ!2h64+frB6Yjh)0QL_Ows z=cF5$i$=k_S+xw{Du?ibhyUu6Mom?ou;47Mbu1-2H4@IVf_^SAm2%)%RLI|(A!3jt zVF5`9?o#Im6MoA(J$r*3CIy_13akhS-)P26>IkM2`H~m6u^v7(OsyK zI^NEizK)!=)FHyUGO(`3%O}|a5?ZwSeL2m|_Npv}%6lZVg$(9ATCYHV25cf;J0PYj zzJj#~@yVq6jp)9N}lB3tUZq_Mvj>uZ$)-E5L+hykL_--y&V@YFoUY8Jaw zXfjj~Bs|qw8@4}T8aV60?fm<*B$~rBkRRwKon^$t`?Zk={c~x?;QPAj-&uk*f2pRD zK@BpeimaYy)aD}%^m=CI2yaZ>N~jk_P~bpy^&B48AEQfkYlwm+np5h5(&`({=pJ+z zlP|dFPd>k{gfV)k7!bQ|6tnPMw1eU_+d#yfR^6;OviXR$#5Z5F2Qb1I2!j~E)Y!$_ z2dHryT{&jKQu-cj%EO5bb8PHJ7Qs5o&MO;--7%?`b%b6urY5=6a3#y&0y*;=c*1() z7ac|L6|MQNGirx&{H$qNNUV9W6HrkyoZ|9?Qo>cp>g;P>srx^u{E#vJfuQh;)8Jbt zY^?JWs2B?f>y=RsEv9tAWLni}^NS$Pg&GA3$0u6OS;ZjRWDm_~+_ON*Stb}?Kd?^p zLhS@4@l{$tgY)AK3=_Az&B_5eS`_d9sR9CeME==j-}xr@>_ln{gJFfX00+n0{0)&u z(d%>VRh#mYj*PL{o-@7R+EJuVSYRB#Cz<*(eNWBY`3z_(@d2be-q-M17`)3yA0=)v z`614suXL7f^hr_%$1m25L7YH@!UuJ)szn>tgJlQtwN)*RLczB7ov^g{DQHwgFJk=a zKQsat1;g*^aStCIz$AJyOFsDcS6yd2bA*_EU=}6#40MI&3TY~#eN2TM@{`%bHfY`3 zs6QI3J&Orpt}b?YsP6)i8{+4_)UXDEO078Bv{(9_`!o?aKqeiO8^V%{LFrQbt&^l^ zx24Y1uHN=HriTOzxFdMKm1%L*R?I1(R|ZchBdUjpz_=GsOxxv#<2Ib-I$~_F<|JB9 zbAl{=-`#xhv>eH==IeE#NAMJkpQHbx!iDbG+~OCC0dHp9%GHb@vzWBM>B`2?3l8AB zQ>$*8Mhb`j_DorL8>if?VS3Z1qwRKN-^a9mS=xts|Fn=CEE8;dq%NHED#FKm|1Rhc zy!dp6Hu!V?0tP|4-$PJ*$$s|zxV^beG6SOy3RH)p2X1B<(J5{3w5VcJ8@mXFsV3~v z21e2|R+wn8MId2y^gl;|vcwjF95^#;=Hid)MrS-6G|H+MGdiDkpzpTArLy#p+%<1f zxjHc_8K{$7KRg}aD$dA4dmu0^=&JQx zwFD{cUFO11R<&5~cBw)!$?tJ|FGi{xDKk!5h)^1b{Uek-V(IT78Qx&WwO&^On+&j= zDIj(YvcH8;Z(6zeq!@ARPdyOOllV!DQqS}P<3<6vmU*0KTQ+Cy^U0(%68LosNw{>M zatsF6O3LkFijhT0bJ+Af_HeNpb;1vBEZ=o5N5@f;gB(Tq=`)#Dro<*+s9s`UU>bcY znm)Ka9*VE?3UJx`^ZDl@LK!GMGM%Sfo+2*I50@K+=h>e!F6bJ)tKBY$2;w~Yu-;JXAAo1QUev-ao>uKe3$tx3o-)x zfu29;PQT9ol3%w^XW~C1DFOILxiI*O9R1-3E-SpHnK&Oubw6RwkrJ`BM$Z+DQpbYk zOJN<)DEQs8GACW)p2Zh<{6f5;tkl^%*qf4TY`gX!`ojwXpDKUaKa}zDo^m1iX=O8r zbY?lL$3TDM-(CBb4%G<%^&eBg>hemh6K>A@4z0l>PtHsUvF>z@20kKu&&zzrK&=gM z87&XMk8S6-eNF^VzSk*+xu#w;&w@c77dv3+>U40YnK*I7PC+2bq9m$sMq{L877sUf zJ=*P{5L|$#7pQqO3BUe%*MwE34U2#=gg**B7gV*wCkdZb+Q2>2j#5UtW&p#pT2y8H zvB9U?JgXp9L6Vd^sBfJ2hKd#1M4w@2Jw?;wP^e@Y=D7~Um}lafQ<3%o%*pYB&H#Cq zQKXxmBC4M=*QISF4oo>s`~ROg4Vo4ONCH)1hsvC4RVdit0(J@OnqUi=#!R_eT-gDz z^@Pf9T58$`nOXF`pw~!F$HtrB$Zt~8Mn)sr@aAkOmOyEl)Ngl-!(-yB!Y{mo52#mj zi%zAbKGQ(*>rgfUZ&Xg%Abc&l;=}pO1j1cyQ^IPHCSVDtZ^dfmFnaNnOECGI zThVwKc9>Osw(PCJX=c9ot0ay_973#`1sXB@`N#k{b$j|~61u*J(Q zh)wQ#1o7F?_m=jow*qC|Gz4LihCMv60>+AAJ(k{lMv$s4{p*XDs!*VCdhKIlHm^!= zPJ+p0YXV!m0f%ID#cz{`rzQ$Ggjp{YXQDDMP{Hq8*HyB|NG{Dsl`sD(gF<>XY55Y}Lq3@^osh?h=;wBBJ) ze@DR*F+wnan7M{fT&EqzibqIP;g6C)nh58dyaTT`Hl0%m%h$Qv-}KBXk`%XR%AJ(- zX2^%bWAFP0YE`8%Z=OFyXGsi=n^~Q97s;zKU*JV}f6Pi6jzxV{-%f2VDOus{66og} zNXGDOGeVmH7Op@K$pZ8x!l^4pcE$ES(#N=Pf8&eYhsCPj;oVH^I6Ra$1bu_~W5MjS6Od!?*19jh{C7x{;te(43WY zDK;F+1RR?huI{h*IFoNZ??3reDwTpg1GF_2z=J-UrtZY8P z*kt3c9k2ULei*jW8B=F7yk1ViiF(F(VtDsq=YbLMEG9BAwJM2I4 zK+b+JquJmpzCE-fkz|yt6c#Uv(0Ws&F){1fGOqHhNw@>mI7p#9cEO-7DBA0E+#ES9 zC^g`s3VO+gbVQ}06Kl55_;@Vfxyto4K$*cm$}hL*^rt{Ag;Xv~F+DcIE(NC4rKo5b zu_1>K?yh?=OEl`dz{%!{U`^`_q2p^GU3|~I4i_)slEzr?(h@XFj!Ls0p>OkQ-;6^4 zQ9=bkBSlKxegdhhe~&NTa%4{?sF$4}7}_iDT0_Pb9*CRRUr;OG0p#h4E6Z))qO5_9sD^GkB6CIwxbn2BdX}R)O@NWz$&=Gn zdi?i&@`kx)1V1P>9U479c!{;_D-6I3t5I@1E-P=y20B(|jKL-&{g8QmO=GL92do3| z(UFx`FvwZcboU2YJ6lV?D=FE+{X7=IK}&Eu7nYZ9413xC@iXRpxiTS+s<(o-PZb&> ze7R;OPL112fX{v?s<8ilH~>$ys0@vWdv|n2RIt8m39p2%XJ%yT5EDq)w;`9O6e>L=8%vrfcDym;D~>EDP)s>g`wf$YQn0G9|3 zM929m1s-PrpImZZI=8PFS#HyKpzp|&$<8<<4*7i4Pi#*-)a+`XqixptA!k|d+qtQz z_R`t73`cqNRCUjH$+gGp^@2i09;5pjX6yh$o%doVpJ9~3kGGnM%lX2t(2ML{{nrSK z*q0+RY><%{GW>K_2b=|zxsq3~edlKMw{Y0_zYwJ}o?m+puX*MoWCRJ-S|I}d0N(GQ zAq_pbbfUsjY$}sMXF@lB;t1>gl_8UZi4q8` z5k`TU-US2%j4z7VQ6l<<5iQC96e#j>B`NTZpEJ!M*COJbmi~DJ2es*5hGbTSZRge6 zwuelp6uHo?_o_l;Svbl2&-i~69~1Y*o(PZle7`yqm;vGVoF<q3(jMt zW{=trwfqAstJK{~TpUZk5a7e-2F1Q^#3C#4eF^@(y5qfPVr#s%V8$j>68TneP%7>t zNcMi2ib(X(WO(rzwiB41*Qd{IQl(1_{@KTE3>|s&Uia*#gpYd}mmq%fg*aR5!w=!d z;h%d=+imkbnT)fKMDtVYzM=>P+@*`2W^UR%#+*KD=q5R7sBUlGd2))&towjm6St$% z8+ZV?&x(z|CgEE&nMtRXU&-BQrrVxUk8D%@DFeBoeGIT};@v zXaRryhSzf_TihKJ?=EZroDHc7Wj7He**Y>*@Gsrm46manQ$VRkMD^J-Ao+=h9>)MS zn!}vNte@-?dY(Z^5Z3Kpn*8Z(USk_(%;XW?aUk~SQQq5U#Kj#rIFa2CbCq+{QACYF zE4JCuJ@OdquwQ_MY#d_eElxAQ1erqZPfD99zCA_?pERTJkfi|;eEnoxE24nO_;679 znSDpYh?C}7?Yn#d*oH=iF23@UH>AouQp?7Ad4gd>>}~Xjo6`8rBm8Gv3A3KBY2a0) z^-Ue8w^%3}56PAn*EklbGcQLE-3}8D>g)$1friGh#7|UFt2?zzP7k#eDtRgwCBiaU zmWnbxcYxfQnA2+-pOm~Lp>7!5{6qaTP>$C3$boXmk1BS*ZYH|9HF3P3K;Rp|UG=$A zs$ZQ~!3mWiUu&K7awM$cxt&@6E3{wqtK2&I@b{Js?kfY_56n#x)x+OpuKLUg*j%@` z_Y|6D5$fsT5uT)`k=i7j%mFYE0C;K6(8T$(sx z1XE?a(FFXv5Va0@A&X!pGi(7=rTTU8#Gt5>?Oma<8Gy}2^=P`FwrTe5l+y`4YR|fg zgD1`6XFdTiUKD^x-oW3;UXbTw(iO4+q|zJaBy{DkQ-X-o%aglGA4Sw1*m#UO`{%2h zchcmN-aLJi!udQvas=z_Mqhs(vjcSowMMpy=O1*jyb?M#Z=~uEcp*(ymKODM%n`L@ z?l`DndK`h&EW|SstO#^$TUyi2#59l&wP!&Q=R#{BdPrggzPTsOP&x z=W46wMR~n^3X_bP)T9`t%ekCHSTB%P+Q{(hfH{g_K?b5R>^1V2? z&yq6ozw*4f^)d|!*uW&aYPZx*LdSB~%`1%l)@7#(Ck1s}Fb|$Wi|r2xK8xFWAU%$m zANnjrf*3rWdX2#@XcuPk=667vVN&4>F6H+)P#18aIPCani*VP0E{wptm?iwxIi4jD zUd207JH;pA+RKuHt+>f_s%6AEBq*1vdpwF~jaTlS7N~ zV|AXk2%S$4cMW#uJS}#n9y;TVl*&|dC>ie+R}y~MyW+VteG@$t;9FCMyn)vBKmas^M1NNrVXQ=XxeA6cp7=@d4r ztxujq&YT$G74qBn;87Y%m++*eHQx{hkJypqTrPnQ(C0ocujkV}OlRH>^DkMAAF3%s z0WJdDkZM~^lVMn!-;p|Wan5pbA}#19ZuO#_QTs0)YxI_}ePr7HMNauKDwij%y%iTJ zk}j(8qDQ;^FS*^SiUL-B#zVGlF7JO%Ow_{@KE$op7R zE`#*)ieKW&ZEg)(KAd}3*rJRPEy#!QqTB@zv&KlbpAZkaiv+`g|8}FS>xSdJuftIb zGxh~5%AV`)*t0*~GwGIzTSGuhB*K*HZtTYr(yk){+7Rtn9%6VomPdD$KMl_OfNzwl)v1t9C>KHAI_`776~qXv7ROyDeVM zWGv|8re7KO79)f`b+Q$lo*Bctar7533{<~2yl)n71@CE)(j;4GCdu9M&r^Bi`1nY; z>Id=Lih$83D^Nxc6r$jeV$@cneO#yod)0G?k)WFP7~4UYw*lXs`%<3naa81z$UC)x zxd5^te~SK%v9nF5?}rFkEO~HGRJv6HO6Saoi;W!Fhnz_T=|ZWy8Q5kW`@n zb`{u*Sx_RXsUU@uVy@`4+5y5NVY49Ucjljqas?{H&^?5kyr*}5XsuaO1hd*m^KqXx zQA_>+5&$^_G2~-+%43|H8<{>qAfQ8<1Km>Z6r2ZNEz-MgVPrjqBF-Ai>i8c+zzmY{ z%p&zO_#3UVG#?;J1eMi3I92T5Nz@FiA5!^6s*9+v^|}7Z-`$F_!*<`u3lk(j*-7n5 zlxFX!+b>P~{cnbq7UnsOjqTD7Ju8zcpHd6v8bu_h7hg5{OHy+Sx4vlquF1^#j#X$_ zyib;x4|&GW-aacvYNj*|_RLL1vB<0k6z8*!SFB9yG3X{g`~0S5I4&$x9U)*SS16vP#JJX zANQ2YL-Z?9d%-j2Wrp5(=Bjy{b?v`5^+pNLfjF6$)cP^)p$qY_rq9p=uO>B|E^8i_ zO_F&4_q3E?3|-d%+;RznwWnvOgwysg=`-&I7v#4EYfo8|K-w9GF7TInKj8^SDpWzE zqi6V+wvJ|uZdFqc{FDgR*z}s%hd-RX(K6%NJ^f36_{ld`)R&LROVdc?jO=JhPXw?{ zD%STAe=lRsdsqwGDD1|~R1PCdo?bSd_4{k_0->ij6j+VMwjV@N)zb4W9zFdA7#Qw& zCZ_*J!=N+^!J8$PN&o_Fptt|6>z;%}m@VNPuGmchK3~Nk^V0B4QU8%*7y|)VDdkR3 z4=D%Ly?9o#pecaJ>T9}gf-D7tK#{w9l^r`cgFI|CZFkv7=@v1V<>RuEj8C`o>f`?1 zLN+^u(~eqxiQ5?u8tN!Qpa-lC(ktHf7tFWU=W~lLG%Ou zLoQh@Glc({n;L5&o<+Rcxt4uKJSBfbK+P44UPu%=t+7Jnh^C@lL6--YlywOE zQP9a_EP0L+EduRCdS7X*>E^B})Z<*?BUE@MiXa_xDJezexHI5e08T)$zsl;4lnTVd zGQJac;)cHv(?9-Lw81*4Febt>YqjsdXy-i1;g#>j{(Lj2Wc~e~ZuNtK#&m`2Bit&N zj;3be@fzdkp$mmTZkSs;rbocny3*ymg;`5j-e8}XCJY8u|N1YuC`$y!bp{PiD!xA= ziG8s44~xKm9@daD_Go35oy3=1XlU9xH4b}kx5@O(;RnW$^TZQTD-MTjpmk~jTT+tE zkLz50DPjg}VFqS>^p{k)pYRaS;zO`zkCk0w6dquyqeG{>$g%zdwZAGIRC|p?o$sMP z=U9F!%4SxK>my{5A;R}Bmz8?9qy*KK45~I99`INOTFy^v*NR%p$UIi7bzaGZju+`H zV*7H=>#D(9L(~L*=I{!`x`JK=*GpN%(dRdZkHOtL4Ttq2UrH*9)@~O9j%ER3WJxuCM&H&L?`#pf}t;64O99q?7!nVB3bmmn=uNF={pcz9`ue*w_k+$FK21yeo!H2XP zxWN5^>x=WPmF>O}l<>Sj*cZEzrSW7Ij-!7tlYp%IeuLs}2wq&hVrb)P6#^B7M;13TJpF` zj8WWeMP-aEnH*{WPv$ReI>j=&F5LfW&>dWwV{XXY&{?q`~-+6H7)2 z;3mqx*ty$-Dkq}1L8|}&3Zns^BpA67|Ldk9t|&ux@dX-kKIGt^bGY5q{BkZvTq1l} z0_V4Nu~^@n+t!eTh9nmb@|NS!7G_e+mH|kci|Z1=?u<9!>R+m|N!97@I8;b>Sa{=a zBkYc)zCMuX)!HpZ;}?0a6*#B5$(LbT zSMISunc=bnO)li+0M~GkXzAZWzJh5ZX*ciudfa;UdJ(%2M;Ea{h^Rt0Lqy^=_xAw7 z<+9}O*;xR`QuxEx_eB8Idv2!Vst8f6u|^)AKu{n#)R(nlq)f5*gV(mNr$}URL#|MF zO0zvS!3+XsGvdRay|6FiPIEK(-J(Q+o>ZmhmXV%>5Rp`%XaEMX^+QIIKvaRNRI^kp z!4yn_vmJo@Foh%BlMc*5e(4BU{3R7_qrQ23PnY?Rlc(lV1hv&ua8MS)fx@)l)>AIJ zfnWPB|2_@C{Qt%cp@0=nMoQR7t0CHCBMQx~k7BzQ`R?o4kf3OK39P^R&oL?g%Y%%G z?$izb5q=*C$lc%M7?3MPuQ~*AMtFal-Y0_PN526|#H96tuEyE4Y|;rMUqKIwn_tcrMmShe7PM)`n)H=lW! zN;Sus3u`tQ7hCN#f|WgnA7w>s^LHvZXrZB~R%cx;)_ZVYzX6Thjv5JkjV!dngukQI@FM+NB4Hf^dkJ{yUywg5FnFL9RJ6TSkx49=Y4TgBFrT}<)}AU`3Rk0#v%UQ3If<8#a5#HVq)>_PL2r6Cj_d~`KJCc}#t&&QBYD6g+?z5c-MsTx zV+cB7>aVn~W{^QG@k*~1-}F_-?CJ^B6WFl)e48Q>p%PXV7XBwcrV+6LLi$XhWOxC~ z!7gYzQ|&bE;8|BJawe(@Q)#a_7)W%1JV>4GJ>^wGO&DKu`yavUlvf)+okqeWiUHfaP(~vq}j+K$( zi74c?Fb`Llj86i5T~y@QcyS95vv!oA)_1kC^AUEPx;h|o*a1bCrVkMrBYHv3w(0yM zM`~py{kl$l3C2Li_~tIXhJ4lXLs@9+t}WWU(BwgNyPh@{7gCsC72^H>W)YY?%fJHL zw#yCCWfz=V21^E4-P}120-3`jU%htRvOD8ASp=!oS!?&Noh_r{nz`hg3ylPpN1DEf z3N@l@Sf}P(%t{ixkVy(wNU^LBPz)RRKvC2oM(+IY%8Q9hi5S!mg#)|+wls|9HK?nh z2@<|6I46x|@vTz#SKCd~k3_FqNQllk|E$V;*HTSYhF(LXAI}IFe%!{NgKg}?l%mFw z5<(Af7*Q$wppe%ayTGCXPt_*ugubsPdL3 zvr9rHRDt|ok$=NVxZxARyFxYeMcdG@c7?_WU zZZL?zP&4R@^b`;00<%XQ_IPR18t92r!rIq+533gv+ugM2!uldN_q-MSEAY_KO>MpS zeE!{ar=j?Bpg&lQ9=YRi864_P*COT&{8m%GwE#KJJfXyrhnpt7)it#i)e*bOO^li;L5SumyOEVKfB>hHI0QM|Xp59xZ!`Z`Y= z%r)3jbM&JxMO#Y5`yFCJ1O-uN8 zXX{N(b$Zd4bsnFB;4-NHW!DM}TWX0Nh{LmElsD&F61d5C%yQO zPV-DaJ6ZwMzEm5qej%-i%cLpbK4hWzpAeO*ov>o}1GNX_&%K|18Z0a{0Cye;lD0;x ztZvxn0nyS}b(j84yZ^)asH(xT6lzAYQjYTK2N3)kqsQ(QuIF~9XcL}}koOJ09ocxs z;b%~bk(Kw6=8fYW6QEMwQSUHkwt_jxn#cObd@Oq=3X88TV|i;pTI5k-rxjC6CYsd! zSOFYg-$1>|_BR4`GS)XB&@WT`F30|YoM9L^jP+c_cRUs6Kj8zYueYt=ZW+~aI$Y)}{G`vhY5WZMv`4(K>Q)ko<4UZS z=-}s~Jq>mfgwcy|@P^(#Kz1|Rk_bng!(&}j%(2j0@;KPM;1Qgh1gFuxV6rt$M9aUO z^XYDq?mFjo$)TzR3$|>$D|(|`o_Y1*V)?AIf|2J!>EPYP2s{3=r9v{tDPwT0(PiKo zMAv8n@lWb@cf`z#d3M}mp*9s`tbrD=68Z9!zP684P1?QT$!I1b`1_YoW+f9iTa6ej zcbmIxks!USWk)xcdyVPme_vvwnNDqQkgFLxDJ4;|bzDbe502eLl4ekoL;y^Nmj9-M zo$`mAz?)L5!;yRch9${?FP$XQYZ&D&Xj@5^{P{TO1*=D^WpK|kZ=!<}MVlRUgFD!< zwK}N3dT-qeoevm!I|qaZK7AV_AkY@};jsT1g^|vo6kGWRDaREZOBblJY2Eb+XRc5T zqlfQiE$=ICf1vpgDlqE2MxVTtszCM;L)zP|d{-VWJVtch(o)tXyTl*K$Uk2h+iLHf z3D>1!bS9mDe?ER^tLjF!M+jxKi`#rBY5?<)zP?A858}MeP2{y-JzmnMBjAdJZk3AG zEIL9x-|0_w^h{3$rh+Li%oG)O(9v>~*WNp!YB-h?%jq3{D_iV30fwlxPNihPHHGxI zmR1|#tmhZ{sq9%UC^b>Z5eU8?OipZ5-T$#SP8~3MiQeNBp1|;w_=l#Z3?Vl4e^5~D zX@Tw_z5LO-^|1eqYMne(V632q6wqKfRe)x=qa>hB;;UM$T%`hmiw79IssH`sau7qu*5IQAG+rbW`nXSrpQO{+BX5 zogN~SxRV)R!dL_Y>EwAoexOPZEL`9!!ZQ>0rd&8>8nwMg=lWY`@eW-Lm_L!C--PS* zfdJP%m=VAr@4A30H_=6EI>h`I7?+m)*{Ce)Eb#2GkT{e>L~hX#{uw0Wjh7f+)&(?a znTkS7;yZiHHZr3*w?6N~!Q4H{p9y1k{b4j+ze3~mn9zHN{8uALyNE{~x~*}J7k4{t zjy@ek@5~crgrut3SOu3Aif#4Y)cZf>usiE| z1d1b9v|FS@@A-}(RUl&f$sf023W8udA{X+7sl!2Nd-1Q5g_DlIsTQdq6rs4cS#si# zar<5Rim`1hzgAI_5?p>h!cq2Ojdu zb-9u{SCZsOwUL%nLDh!&BvmN`2zxJff`AFO1gBFeZ zS-(X@IwaOD^@JKmB-Dw_KghL*J`RD4$_XNW8V{!rR{JWEB~p#(BIC$BnAXBySh0e<5)aJ$U7h!BPE} z{0v!S7%b!a%*OZuya7C#pS{ch{B8_7S_&E}e7s7E|_!7S=g5<0o>&516c;(mn7%#jzo=znl-E zd%Mq5=@#9AbYpxHgrLsap+`!X?e7~%Ww9gR{!Y@y$r{#r(1N;m3WY3V0SSVE)!&Fx zUEpEg<6hEq81(dHa>9^zzFO$Vvq>6mj#7Sz9M)9;@wN%I{>KO|BsBk);osY(tkhX8 z6fSL35uvo2jdjKRDv+Yi$t|u-#E8_1-3-$77B=A1b+$qnGNIu)#%1GIRnUH2D4QQ8 zSQXS|CMaiJ36i#l&uX3oy{w(c%1$F9F~lRk`&|@7UVkKHS4*xGmbOE$6SMd$w;p-j zzeAzITn94p^?kiOD{-A7L9JPKlPY!y{}i+Y&z$>tW&+b7jPzc=YXiPt)Y}R7tzc5+^ZD4KXTmZeBXTk^9`~$sQ_6sE=O{;WsFsiMPYV*eSY8x8^KAkpny&Z4# zAUmvoBNO5S;NBdX_l;YN&P6_m4DEBmA{W>>RJ_mFdKIH&p~`rT6qk=onhbb+H#3~1|3@Ncv0XC z#v2`f+&XWRNas%S2Pa)f)s1uJk)XvldP18k$LWyHGXOSo*x(ajnvGg%lGRh~ z^9vSHJmjFdc1_r-%i3yNvN`@*aFh#u)r}q**!h)6_%;LTf0Dk>kjMGIA<*e*UMU`D z@$$hUx<9Mi2)g*wZU2!adNvDG0E-jfMFJD~Y`U%nnOT8EDwLb@f*L0lwTDc<=N8#% z_6VEn2`wS89sS$T4$xPH)V_cdY~q*HD?PL5N&*>COS9^ordmfxPhT1efDNW@Sg#OO zTU=6#O8d!B!( z-d?KlzT=8)14$e?Qktenu1p?X zoZ-eU9y>_8#kw|}g2_*9r$SS1L<*66%WA2pvMk{N`x+Sy9+Qmjzqs(#H>@30a9^hd zGdETr9+~StZ`}?FXRy0f!!t?)F{~j;DrUy_dwLd|1}$DIQm%8Yu$>*0PazzgUyFAd z>nwRqL=C;aK9BHEmhIu(w9|o_kLfi#XwL3ef>AqW>Zo!ZFlf3iciL?iYCPHxZ-A{-KKlT*(Wm#FHxV(-u(>EJeDrtsMFE z5Fr%xQXQ^kL@MkLUlhr?L2RdC9rTrG7Qc2m$s#WW-yEv046*{f-|zx9 zSxjyO02TTVBP2f$9tqc^lK8vOsC~%aM6aNz;2{VY2IY8DjyW=+Z{i*DA}WP{$T4jS z{rr{d|KVOL3HauP=9ST(ASW}!=gIC!g=uX&`S3@7Ip=Ayi_bXLu3dMmgwdo*JcpHp zj=X9#02P7ARb2caZ9 z;i(;BYj!2-)nHCy%u;5YO+TlSN2ASo+?F2Hs=Oa>dRM+D-0&om!vj85YRj%|gKhk` zD9(E(yV=DF@|tI7rHW6$7CFa*xJN(qU4>M@9RPaf7U3oQi*?*s=hG1A5Ny%hG?oqn zC<#sT7d_>Q?9Kz0KydioiK&X1M@|2e67uX%wk`e8h9DsJC?3eHJg?VTYzwjJBywzf z?lA`@wgIwYu)oRYbGiQ&(FoVBmu* z;RD>g5iH~EJz(X>t0#;D!L~=G^Ugd%_esoCAvyghGkxY=;lKD%MCoZI&sa{g9|?SE zMoEQ=0yUMt;R3L4%o^b=sW^rI0X^)^c)B!^zb) z%}d>42{fv=*7!iEXZw-vD{Yc7wUKSo$pq!c+KrVt23Dmbkv-aKMxC zbp0dK?gipq>JoAF_KdMut1v9h}kcTc*S{eWkIY&B7r@>=?J&v!=Bmd}4OPv($)`l68t ze74e$Ft(PO*c*UeW&YH61$!-CA z)|$S{69j$W!5Jyq7<&@Q2uztq4V|Jm2&b$nwQ#%QKZ@dviPlkA*0d-R7BHfaZKRwW z662<{HrY%@b?MFfi>M&C*t0S$l7jTx<$3l(8g(@sL4+w(-C(uB{QOcXl_D7xanvFX zSq5RpVJb#b7PFwa`Rtx0kBwiynhO9T(w7t!J^EJTMU4pJ92rLiTK+6CTz(Yi>S!;_ zU^pIH$z_1BZJFhWtU{fDr^3l&Bgg?O}RvEKM9U2kofGTn{d64Q5_5|A^J ziTf$=t#jSE?$ZNXO~Ldu1W`3Tmho=HEn)~>&mcu@#b!ITE|wVqku4A)XK;2ReKpoa z6{=JqdLSbQ=*=$YtF$K&mL4uvMMXwc)P2X??cV-D%0>9>YifVOws?3K*W~2Ar71$E zWYg)eV7lAzj+%d%SX2Xh@`@fIkL)96y;FJm)mF1XPkKV*rOY@9Nw_eDInS5*nX+_9 z4ulPK=t$D`)D2q^&*HFIM++a=hp!5;s;c~#>Nk94+YPTNR3g{6*_@SB)jf1$ zpHsv~^VUMX*!&xfVXkZPi#9r2WNXcuiFjUCg+^DnXaU9rgsWR3zYPFR?gYnS2wJBB z<^zcSN_&bvc^Z!}WE_l_VKzZHq@<(v{Zz}qJ3{x_E$7PNo?goXu+mo(Ql*F)0=Hw< z@O^zW2rYiU)d*49L9hbx#fm}T-q(jpR2Pq*Nh1>dLr@bCQEMwI zP*2}ftGfaEXFNP^3jI+nEAXYV*CSNBhMlU5lU&y>38*icCSL)YlR5|bbTnG$DUw8} z?ELK`RCSHj6Cpz_a0NSe+)oUqf~dB%CS42woF2Qj^h$8b&%|M_E}~}6b15x+FP7u> zF?3WuadDG`F^V41@zV0aAKQE%P%1Y}$fRdzW}utiT_JlbunSa1h8T(s&Ma=A8bIO@ zhR_(Z{ZWmSl-F@(nVr|Gkv#)Emh>8{#y&)3$Ux*lN_;Kzd(t$*o{2u~k2|Bu&;sbB zDkGK=t|2)!37fT~9z~|pO6kgfw*g2Q+>yj`y*edv>^&*cLz-1f$Deb}w6*T0y2SH% z`J~z292jv0OD4&G# zI~#lId5dk$K`8#ndh8Xe1V$U0&z4Rw6GWi%!DvyFQfd>3iPRC=XB3>P_9m^xs;Uy$ zK(i*Sqz!Z=-8m^#654OF`@o=OQek4OtFURnf8Mvo&uhCw@OJ=54!JpY?+SEGzM?pF z2*{3m>o)6h^~;dKAwlXXd+G8$O!YNXpF~Swrbm~>b8kMFs#%1S8*=`%yIXZRb61Y{ z+6ppQhcX<0q?75dw(gvn1UPl=-!*WVf)}6qJ_6hg`PhuwTUSS5DT%87YIuJMD8GuY zu#(2VMS;0CR~A-YjVfKYqfUVt(DcQQll{_Rcj=8i7u$92gUey^X{R12u_F*!cA zC%?M`FatD{OytB>Q$Zdw++@XQU>Eys0BqN^pqx@MP zpTJ_3W-a0WvG_+5CYJO26U(Y@cbR#Hw~-HAlytH6S)iojxhD0;lq|8WiBEEa%|VDr zKXyQkDFH=Ta-nwnFV8tq7?=c3>``i1i2*wmRmjg4L|RIm z3-WrzXt$i|6vuqhO&~}7@RW~!YML;wu5aV~AZ;Z`(|cfq1uEw5U!|jpm_P1;ZsC4) zpqmH*TmC<4UK-?D*!XF$ zkx<7+03=-SmZt@!(>c>ai}P23p=XAkQ8QdghgQ6M>uA9GN?0KX?RRvAUo*={c;_AXe$2Z7c0Qm}+SN-G6K`3Wj!47ioHZ6jc7)>E5D zzO)kk@AH)(lheFS%k^4MI?n$VgkWK8tKtLpNe^#+kU+d`3x8@vAG7)2`CbzI;>Y2- zy)iwcdc;U_am%n-dF<^61ms~dTxm#V%F_*(g`%zzy9eV>zdEW|m#gK63nUI7 zx~AmfMpNa+#8q^(8YkgMYXi(}05k6{`tU!Qj%Zr!bU>CFq7QVzm%l&4w6k0a6?-?( zhW>%-ey|l}29(CVB{Q=fK!QHyu2lFk1_XNiKq%YznJ8F_iPh@6QB!}b$zt}glit*9 zY+OpRrc6=TqPh~voAq8}ttg)UsuQaBvRgF01NPe9(`h5`sjK%*y?j^E#MxgpEp{AWj*7@vK*+dW9XnvK6f$0lqLUL1= zmeL=~SlP*giEN>dw~AR4OvD3f@l0M1x6%-+DU-=^%LJEuaL862fwG_gc_app4m==3 zgq`tT$vXhj*wBILNr9D%ShkU3o1sXFj}5seeNqG^2|o;6gn{Dy3u zv&H*r$~J?5+5;jh;$F@@>~z?-z|fO4Qf2rjvFduisDcYOzt8oR-gfFaLMUjt+a2n@ zu9R{VP({CMMz>IW#sM6B6PKQzb=+OcriRr_=3vo-kyPl)d7De>7fgV|_y=n6HCRd{_V{3Tv9sAjIRkU;?hsgK@{q08fa( z2ACKJ#V+ZSFb@sB8B2{TduxmWbVXaBY1gg_9}ypCI$8!<$e^Dx3G2rPU=!WTkdBrS z)z{K+P@1vV56HM_6FzDHzY8fy1q`}{yt~{4t{lxw1=@(%{;Xu78V15H{Z!Q@2y?m| z=JC4~Dwl_GofPRA8wB+!W?Op4fN4M5m4ULo?AB`byAeijC+uSEfj2rGgF!<8g@&}j zZQyVT$ySW{G91(X|4OVCuJ|Y16m-7k7>50o#n=UylwM9mZLFOPyJS*$ua4wJ_zAG4UlS@C&0pU^6}669*bY zoqt*+52Qz^myw(Q(yj>oMoQbX^-x#+AgPzxNVR%vzbozpuJQ!>VZ(Nn!Y>ipPEjGo`B(@kU1teLXM_ z!KFii!~*#oH))0D(QHO4e_Va`U@CMaRLwv<@~(Mc000p-L7z0($wLs_zwfV8itOR} zuIJT93(BORn0UJ1g=8D^bw7vfMV^r{VMypa zlD8I+b1@e@@!Z5&NMNp$L?Sm@ZF*NfT0YA7q8a1JgeaG<+Zw#`|hlO%H z#GI$E>=TaM6ZMq(mMGfBt6BESVz0eZLdd`O#HhY9s!{rvjPVkqPzKqC!Um2epaW2B zJB2HUS2_(jZ|4Hs+T^7d?uMGbyFrmkOK8}1*CbYCh{S6F%R4-#V`)( zQUNTgb9xdX0~+J(>PVv&2MuNs{sSWDGJEq`MGa&ZPz2y)rxd;Jca3>T1xM%VeD-03 zQ`kDp42H=F;$^?U)pdj-&!zeyiN?6Ic0%G&UghoEQeHr4#b?ykazwZuiTguEsgT;~ z8rg9W5(PEgivYscLl77wF3_xMRpA=VNo>m^Vs2_^%gcfV%BVy&nW=66B-8@>msN}_ zdJ#n)_##vlE{OL^-4Ufb6bbiTQFQ0YfeEQ?EaK|#Un1;b>BP;A#mwdpyd^I1{a1sY z%x1BrSDYT4sthA*LTk$>BkBp1;IJVzk+xBx{OZ!ws4_Y75ms%_<%Im8bf;zP&81k$ zgqi-$_LW4cmQeOAxDq>rYa4 z*RQX`w!Wn=hLnx&m@4n-R241fNouj&MYkK-(ODNRO-{mJxkz#&)uyg`q0nI)3s%PX z>p+TY_Pp7Jel;ZQ5FcXXb$cRL;N{o!dPO(MUXh4NX~B>~@WVRF6n0m?qU`#1GLubl za23MY;H17rmTPXzs}x;ZbY8Bl9q+{KmTsBg)j-=E9A`0dxoIQ&$eo1kOQA$a?N4al zMY`kxI>r%uF%o}u(Pg=mgw^g-<(Dt4dB65}t_PL$y9V!8_tHIRfOmalE9VhY(d_-v z;*?*u6}(Ey(n6=7TbIcGn4avurL6p&2^UJ2g7v|KOpy&jHioeFXr z5g{&TsPFAW;ddzq7-vV*u<#YJi0aL<>ievQ6KzfCz4>3n`sL0##jKTCNi6kNZ((h_ zuOgnw-vB&0QpINZPdF1NkQ&>a0j^FI1yflPPGb1q0{S4}bFL`f4%g7lA*s>ytFj;BnGGf8p+t!NVg^twJ>AB)A?Z zVF(%rzC0D53e-EPjHnpI_fQiMmw~1h0*-52JgXAfv(n@_c-RcHOlgytv4@8j{V zNyS{Wt0^pd##S5uG*7@F5lz{c@b$DAEAhDMiQ+4$9sxV2Y(Jk_$_ouLCYDl=PWC%VioPOWSh<36%#7FnpJMF%O~RB@Cjv zJ|>JPC*ral>du&zDn(4uivY=ZP*zJ(Rr;N$6B&gfIhkOnDU?A?7*?v0jYpzM_&iuS zz{1Ecs1xy|zlRy%O15zeXIge5{1ATc%KiKEWr1G}6Q=*zVEnC?ThR{tE1*TTNCzUF zbUUD{f^n#X6?du(4wIWa5`h4`BmzKO3Gryn<=jwo0>!iy{VkcuFY}L1XT4n!!~S?e zCvPa*F7{ej!x0kN^tvkZ%f+0O?gf9;|Cm*j6EJovd zR!fA8wSsQ@?zI;J0mM3Ootv%!2%-~k4kwUD+%O&L;-3N`pwdHZ5)7d(V<2+3wwP&I zEfWy9P*kv3*=_FF+vUBdbc@$+>*p&yliW5+BJZC$_?{e%=le1+8pj;t4z1HpIC>0; zq^Z!H+-H-IjGfzNJ;fQoaUELzPy&?g z&b?<@)SVQ?Y?(w@WvUGT?$v(xipT&EN;pMfs5m4%RijVN>}|rP1b3n+b<*5#$6uyG zX;w7sni__n7kv8??(dHbxS1RIC*ZAe7hV}8?v9}QvA`~%PXk4r&I?#I%eQ*nq4Rc4 zJ2(J&s6l5)KZ0gDHA{uOm9PgX;isKtZb&=LNNUnLUxHSQa365R{aLTkuOSNcAw6=H z9LU8rUbY=Z%A$>~I7T}HySWPVezX{vY62eQ=xq1!O|Cem2Yg?>?9`fIieMNsUg5DS zhOMx5g-ROuP-JC;7U@sc6(M*uNmAC0wZMGpBzh-+Z zKeD7Mi->U3I_QRp##X;JTH))$zrMwv*8?s9=+;Q`5I=Sx2Pf}GU|FYKw9mqdR@&%^ z)JR3opB7M`3y6PC!*h}}FhDZlfYYW}Z7Bee8}AU1#QgW`K^FwCS0&K|UA-Z1b8mWX zUyE_$JTSG2dW*CcY|LM*P-vS%?adz&Pzjqa5{tlVu^MD6xi9@sq!G1n$K59km{VWm zS@)zglDxHBda(qcnjFAXpJb3$_2GCQeP7=4W*5kBv2Nf;P?Mxck`#F&i3=nXjFkDm z&*D%2aq=Me2p_Ml>E(H5EL2pJY<@?<3C%)gS!5!tu_j^}PyA)DQMcO9bMxn3txzak zt}TUO7^RMPE+=3^y_fyYqF4IGil%=LPRR~b44;p-Rm{hb zPFjyQvoxn@+6x(Lx8Q+Ox)=rnx@WtH*CA4iOTHpg!48PC7?#ko;5&(?bJO|Lg4!1?b)?>Ay`ccztLipJ|(v7LOx z(nCZLr%?lO1Jic1oUu`$08)3R=>jsZ$Ek4^6%TL)*B?si{#Nob#Gx&PK5;@+H{z1> zEQ~o%hYr`@m!ivvYHA{h?EvSwHl!kh)~Fr7`V_jsfH*5Oa8{k%al6hZ`rGU!mE$qO zr`AGKN)@k$d$zXBwcqI@yx2YET{x|yq~U5|s-_i!rIi)1?is$ZbL0(gWFBd}Rr@=h z5}4j|oBowQ%l-D1g*GZf8GLfzxE2UO@O^3bNxRFv8G;D!key)%Gkj%PzJk_d!OS@S znI2jfyX#v~D%iLVH5-z+)zCVJ^|)7Zg7SsNiijU88%ovL)`gp6g7RL1S$RJ2b|FM!_IKGXDaLDbXFfR zZ$eY3A)eyxd*toJe%}-)rBm1tTFo`tUVg?bgZ_g0iX<)6H!nz-Crza)+Ql3Az@l03|0`-wcNQyPD$_ z!1~pW8a8c4*4^wYcCwuPtEZMxy=YOuh*IW9fWTt>7n?|UTt~-jFNR3Nb_R7Q{Qt~J zn@6%h5Fl%)*TS&t_GA`|i<_Sehf-%X* zS1mP^^gYWXJQAbbR-AuaS$Iq?Ic&X)Lo6yiwLyI@W>XI zp8pJHXKK0>))Xav*`vx@wGhxlg?|iS?DITm8_>wng-6sb{~7nLL3=RmBv-}e8PQV> z2~MHUtl0-~3K}+`WZ;m1AZ7nVuArD4$RF3l!*{K~xCMYK!WQ$T34F-1MJC`_lEq;Q zhqo=g9DnOhvHu_)V+>&R7y1^%N*hZAKkBvHXg!0UwvREDz|{IRh6aHS5|ouQaD^&I z#|l}it0)dI@h`tdHRl3nH?8L_-)Dm1x0(tlMl;06PLMM&2uMIzBh;*+&Vaa7YN%WD z`ZFp&S+(|*>pI*psjy=)#OAdk^MLiCVNL%MDe6zwT+jA~2A|r5_#fF)CRx_SozcyP zf#_bYxZwN_8P0i%3w+!uQ6PWPdwF>f$6^z(;6ib~G8f@ZlQ49nysE36{i!CjslqPE zc?(b#b6Qs=^yUAnq5)P=RbZFKok+(R-)0meAh(Xmh5RMOP^FdXw`#FZS3u;y%e*o? z`4j#9^qp+jGPupHEhEPPB1#wl0poA@8&4WUrAg5|X$c_qdG&*X_#{yo>b6N6&om-! z8{q!2D0MPX^rk)+090{BL+>CH<4IU>@CRP}FMG_7InrApgCaK;)MMl8QoX?75(i3z zJ6Zo$Ba-~$4gA3e(>Mxd@UmQe577Vs3iSb>M3|&S|F=x_TjSIOQLR9&qY()*mMVZv zAbOwo!UwDwEXNln3G{2Ipc&;19+bh~UG6L1^*Tt-PMmgDv{7`BL+{Ca)~u%En3oC! zK}z@@b7H*&u`rZT%tV3(~nOL3uSOmt3&l!08ZnOirOX29jlb?H}A z<3H}pOcEh{ROOZ(H*I12`@T?F%F0upA?X_xNpxUr3?|VLazGsHTVQ3Rl&@m!pN!nY z0OLrb1unt&G}B021~isfP9(p#(Xn%8Jix*O)bb~;xc~_jPO*=C1<9TRwI^^2DzR~R zs6{$mfSvB+0I?AoABsMC6V55ROBA!T^;^>xF=)PBL8t_;FFpE*x&g;KkVb$RbSCQH zdL;HpN(`hIsLu1kSoZhk6LR9OrC>}Tb+QY;ZNjrKikXyUa}{kQ&tN0$%QQX>b|OR`S!6I%wpzz(R99S1slwtglqD?Bsv+u8N>j zky{dP+clG>knmv|Y+4wwndtwjkB*K&#%4y^>io+0L*w>MUh_bC7psL&_XD-Zc%$@0 zW>8trpFO|wgBtGD*tQKz5?xSiVAY*!mz@b*ssv7~QtHM(*U1{d17WzkVYmYVbVHbU z8#-VIPIU%)Eu%kbDU9h@mAOF$-_*?q!In6qWZx%<2evzVy7eJ=Q6CVcLK!EGr`yCn z`)=^b$o#;};sfV(Du%j1wm5td3408JMpDGesEOVRkdQp2z@=KjF^(V%_%;=Pk`o~I zw7`sYmdAraNWe%wmUwUC@+BXOyGzfz5Pomr#-Ra@+#mY|gi<^Ai76Nd>C%^_tsWFV z6lB$95Ap>TKW&1Dn=JP7%*`zpRWh;wJ3z$0lCr%yZ5r|`hj z-H_jDL`V}nKJCM_gq8WyiunP@5GjO<6b#F!Pyl?>Dx6D-4fq|FfSQpWR6*HJ*0txs zyA}nhiXtwdkfOL(M|h;iBZEv`MNJ(Y?cEq>lsR?Z1?fBe%H)|t6HuOuY8)?xye!22Tqr)kaR#l*XIhsjY> zxW=@P|Doti=eb2l3H`oF^g{8sa~oY#PD559p4Rh8rnG8jHg5iGA#hIJewme52%LY* z-mZETK-^rX%fW~cfIr-QvAdMTDboR(u89!|WQ34#XDmMl_>kC#uVla8y!i1)v$Te% zyF#F|+X=8^Iu-4u-L(6ocu^r1wuuxAJgi@I?Hx1&&wZT+u3y=eUq65(EEvB5nac%)6(JZeXG8ZNmcyu?|_z0 zEs&58hIU>z!+cEdHqyIH;o0E(fItz|R6hRYHDm4(*Adp9DEX7}Bm-`DE70ZQRJb^* zEW@eb&|jlC^}sAq(ThI097{u(N%5(lS7v&%34z^txa26lL#Pm4uE94HErW8CFmMX< zg<9Xzr=tejMx)=&<}dvc?SkA#W_lkQM;;509P1)^Q1>4j2(%~~lrSk`5M{HMgPoE} zGoE0owbYkv)!q_RKQHTn;1p7MT;E3M9RfGY=bo3IeU1K%rbrm>XLpjYIHL?%R_u-P zXM5Mt_u5YU9S>4QpCXq=#aLU6>~KKq8|CjHufNZ^ESF$#^oOHMEul%LmuFSFNt5&H z0od9Bd^%@@UuW@;;^5I%k)j7$QyLQ-MK9P{6@3)Y?VUDB1wU0I4HinNDcMUCzSQ-t zDx!L!#EookVQE@FtV10#r=A4nL#c6ygk6#7968rCTpu!)EX@~g)f(l+49_#LiJ zi6szuvh0Lu0#)=XmbH4M+atJsm`4JD#07{x$P(V1a5F7Po~QC9srgQPtcWNf)Xpd2 z-Mei~m$q8b_OnolAM^~b)9;x`xQl#8ty+@*FwH~|uqeiE!p7T$*kDj@#o-v@{vxW~ zxu4?f4W$yAwMQ*|H*&(>-9lZ_J#fX1sG`KGjAw!9qJzguAd3JcK+Qy%Z=D68d468<&s0X$u>1mb1HnYX8u7~>mPPVL1g_pSm1~qL(7QK)s zyc2pOeHpiQuIkkba~pvlE5a8#REDCYtGBzI#)T^EURl3G6tqD?9ZzI9lgYe_f9dd?)PG zlsVr=YL~-9JWIF*UV00dmf>hX}$2NMIKlv7sWo?Uc%(~$q57b~l+OLIR= zX|hY)3xPFOA+h_ot8)Ys0g#+x@c5bmdG1BN&2Z~a-}UBHi}YHBIpoYN$wy<#iL(}F zrr8@}H2Bx^RCtov=Q`KTw$uz8NDQ?F4DIxl!`d6gEO*&>tMiqjp0)CQ>OBGowo)?8uVz1D+7xZOgJq zObmD;VKk795!}Prqv#EX5YSrW#B~Vg$6O=Sm}p{*x~9(Udwg46F{z1wm@JkUymmk& zrx)&0eUN;1?=jfwqhnGAKLcC>Bjz3PxR3;m`xlREpmcsDk*aTdNPHOSX_W3wg}@+r z5Jd{{K~`rqptYpHL(b|=f@%mJgT&jFv_hS#jSa@lQdf5Kx8heuAbR;l1&0GgdaWpD zbdWnVoiv6QE*}7cx+60VcY~1jDk6o4H#2A8Oo;J(cbmRZBl(=cHor74s*#u_$i^9% z+D(OX9oYC$UXCy0`Ltr@CsnO#W`Ls->2SuH-EYiNCHL$lClmfkSMFsjp3>aLJ@&*k z7u#vtI89R?c@Z2|)iF1>`o1GwF|Zv2NuvgIUF$U zLMTRaXYHOq0YLdX7&?R=3ekzq8Y}pznvwI?4dF>)(f;grh+o?$W z2ZiDcsiogn`#Tm>_mUlQF%o#13?RPb)li|0QP@D&*}_n2Bik&0a{Ge!931k!`PAYx zPkRv>@vJ?jfWlhS0N!mgpVE^$;)f44wrj7xvsDgmV{OV+@JZesv77Qt@Qv_*f3O-* z&gM=6WzcIwpCtJ2fOqGvm$_SqIPWuLK~`JvABs;2o}ii9p2-?b6@v^$`f+s446Py> zPNN}#&Lalt)nS~%IB7mi0OX(&&t`EbB3qb{?%M$pyYbm-3|Hq#)@*>))j&qLh5jz^ z0*Ni)1{;}hvi#ZF+38>r|2O1(<2(-qqU7rcn@g{kkdxX#2I~zy@q^ufxOvPgPc)tK z_wOUF_Tw}9VqI;7c7M=gd*u-!qLaU_D>k3^wz-4vDh4E&)V&wFi zZd~4rioP1wGyH6@X4VDTPOxv&P9@zRna3CnH0q=4?hWb@R17Nd?=S^7=9WoZw zqrBR4615sK{QuaMZ)7Wk*^h+PzHJA{KVn-79ozugn$V1-fMhatQ;w5Pk`+%Av>WOo zEHlOnF~l6jiF*b4usOxZ)l-^QRn>aU9hy-eb9vx;VgcbeE?;bG3K#>KQ0s2s;C&Wb z#6^||ci8xcUD?3?r#yO=dD0x`@s&U4Q*XNex0(rVXXHbVLQc355zV8aT^F1w7e%$z>s zY5g|INgC35W8dAVvG#{<(K@uWWZ_XG)j<4alA8us<(RJMr{O=t0-n;(P(#Q6fIdpI zXmQ2jc3*!mD{64T3NBe{6m@ES1@tT{ej@`@7ug zLFRmCr;e2b^~OTyZE^b{3UjghvHOyRCQ$um)zir`>*HT%BoqkzFACD)jOt7IthW(6 z_%1?6HAvTq7j&r?7YS1-lk1@?`a=#u^Uy9NIezs?+RX{1;9iCaBiiQOc)x(}tTJAw zW>;R>1+$FqrHhH9`URI|5958Zf_yhRIVqLVgD89hR7M)1fY4M0`M|ywI}=fGUE1s_ zd%CPfET9(f0I7rn3$Qx?P^c%91SN)I4!MoB?G)fnJB&`$lPEgJXU8mk3z%fYp}YWo zAn|ZO1DevL0Rxuv;`;B-;izwVByZXw*TZOFE*~xuwacu`IxwaM28r4sP+Cof9P^+J z#fDf2sos%F6+5~Nf$NfZB|OZkLAjxWDkIQ3nVQqgtifsCokk8I8=J&UN>VFK4pT4< zgr5xhJPmSNE`f+hg|PYf90RQ&AyhV~u${pXbTF5`0k88%b=v^p4O?E6-%tMu_&N87 z4ip(wfRrmy#J5PU4U~q^+?rq^W1$N4++>USPj3Z`Oha&oai*e4LL*1xsD`2`A_Lh??Ik%$ zA@ANgIS)f1W`{h$4KUh03!{;YI*~V>VPKmjlj#)(UHulxo;a>dm3J8&Y7Q&85B0{V z=QgPEe~ObU0^1WIq*yfcM<~kt(LqGCQj-4x$)+We!`U* zddYzcDE*(Rctk$cy+Ob#_3{KGfw4z$OPXk$)2}nM87hnBF$=~5bx8tD$nd!6b;t1v zW{E!}fPHi0(-WC;e69q7TOoU|WGvWj!Syx|5>-sj`_Z(R)xB(?WK~SCkp+UJ{2w}F zO;Ex;tAdOXpsjpK*W(!kMsiX46Rw5ab7%mL9OalwDnMVnUo)K$=KU*;)2)P}h&P;Q zl2Hf+4!N7=X+UwCfOFw;>>J!G`wJ91Q$Qt&ceL27qt0Df@E>}4qRzm1{WH*Dm$s|^ z(nH9Z6=yJO41L5*ZNK}`TA)+Z+o+#z=Zm^lt(FFlu{*V%4)>{!seA&8L|azS0~Th` z#~+Ck%4xE7Kf{dL@Em;)Cf>K?UN#8j=K9)PggoWEtF{AQw+ImgEkf0V;abA$k zYh_c7sW5i^Ql%*vO0Ru!Lo^B=1OXh@!`UYi3BO*xMy*#kt4R?tD;v zxJef#)Z5a$yw@-c`Bz>V=E${YXGL3Hx=npacoYKCwKc8zdTv=b*$CN>V0f@*Y=3H-l((NPT^_1TMrSILr*WqwZ|&vokAy$1a{D2j z7jg+6ok3ZuutItw!{&v^boSX0wOdGP#yPKy;8CrNC2YH2kMuSKIe`EG9e_cbMomEi z+S=OJN=&8z00RO4!#g$#pWfb&7QI3gko3^uIlBv|63s?#yvsH{h zR8XvJc+dl%+dmGlZ*V_G7r|JwkUd{oHmhFL$Xy0_Pa8@b&f+pZ_e%1Y#@FYuKDUaG zeX{0MXp~X8-QHOJ-CN~vZ6PLj9eZLAYkT^dBc0~L<8njaTth$L6o6#-f9K2p8e?jA zY2ug}!}bu0Fz~e~h3O=$36_>@SXU)?JkHM-I}NcI$Ia~!5LSH#G&RVX1bk99mQq>% zrxOi%x%REDGAaJ1Xvn<*_d`&hL#7`K>x5gEf{pZRl3%)vD=_J*N7}x;3y#hrL?Y>= zzD-$S8tGS8tBzSIa;v=+1p||GyKr5H&pN{3NKEiRO(y!d=jIrEoS!tckLP+XM2!CZfhkZmJMcFGy3m(ISFeV_|0UJ< z=-UPFL14k+v9qIH%`NU8;J@$V8=pavwylNx(V2AEa^a~v)go#&sDzaE@{Rrz94zGE zuG1I?IT;f*UjBVwj7r$5Gu{SI_C#Zv_BnN=>+C);t^<-?sn_oW@nBtq@?1cD{eWCSxehNnlTZ6k zdP==>*#G8`v8M9sy`AHX;X(nh@2HribZp@FjaY%m!@R%&zz|LzxH=E4pwlrJYU#W1 zK~P?dm^Ab@$aH4zKgg7Y(jhf-3-EQnd$%v)e*FPanYtK?Xc>F>A0G+?ErzJ3DE~B_ z0@F)}2j&u$e$f@{Yl%@!Tv?@vhfFDqf0g$8UOlD%K7A~ zCG3<*M&FC)XtcWJLCHX)XQP$ErcN#`5j&i*$BzZ3vv&(*mSxi3MfBW#-Wz$ofsHF0 z^DA(=$j4$=^n8JnPZ;)o$)(=IR^{2a7>3*nsy)7DZn3PRDH591)?q|E6ls+X0I7Us{e+_ax_BnAClF$Zs7XGCW=YGi{+Y=h$Rr0HqH zbWF)yMOQC07H>k`4mJ_X`M-0xNS2-68C0O(yC4-FZT(!5nbkyEJ>%>g{3Lr)-wFz^ z-hZ%c%SK=Fkg4=c)hi*2oLgt7OBtz{Y$~=g$^z8WQ_6vA%&r6fSP)WuEo9S5eo7xM zH?)^eLsX*%k?4%b>6#d%0MXHa~}77%yr~z1wiH#>uoNa4|P6kkpCZ`qj{k z)xBl7lt*?soTmHOK)R^z!|%Q}udfQpRTJ!M17Tn{F;~s|e~c?OIO7gc9Kdhf5VQzu z`wPHJJ{w@d2<(KZ(*&ZL$oH@1tVAsVbqx#liMX%6|9cZRtOrmEt`>Sky&a9KB8bSB zMyI^P+ZVPmtFi9F)ApznQAk;7@rgKcEIvz!ha;Ut>%Y?U@#TKc><;l->Z4GZM#VdQ z_Y~YOY0oL=jk^*C+CBV2H`V_9OCs~@s75UEJ_r~zjRXt5MdoQD?ebF>4^ z5;caPw9XDULaV12RSmfJRUl=eWd{A7jQhyA>o#B#cpVuzCvAFhr%@(Vi8tS^rxS^q zB>UGvh!+mia4V@Z#OETNpFvt^M4=R^_9ZRKTTwkB*|9Y{U9iYzJT)-N__XVovE#)x zXG%n-Z4d*liagQ~u$#Rz@!Jf&GxDWYO{LOUrClGd#^bG60EmpMIQUqq6s%M*eD+^E zR@;xPw^VYHPaW5E%lZENTAM;2-+{`13T$RrECMY9>p>a}vTu4VAi+*wqFJBC17Y2VwOYsF$Jw z!VVDGXJdPIb1&HmkpU2+g_KPhiRvVJ7UIH6{S5Y)#V^$OG&0fZlSyWSMi#ll;3O`V zFA54C80idd_%~5~DJykl=J%^aKh#B)^^LrdKHKTqLo)Y*Cjm^`3N%SSq@vp__k0Le zhuyrOOt3yzsY6+(m=$KDU)ipMUOBs%9F&t`Gi^c4 zVHtWeU+INSbFAk$9(O-XB0V_|6$N>H>Qc^5K;Cj$(1?XdTlgNgta|YGrGx4Iu>0se zd56zoXGon1{6YJTR5$ZmkT6ctw^8af2NwzbsfYLSaEBLq$t`i%zqlb!ZPel`o*CqG z%xv!d?X_3bLL5kiYn6r%c2Vn#G6@|>jU`{%O~ea#N=)Hq6x3qW&EMW?iN`#r43BmM z5l?9V5Btjr=9*qoH_!z!&f~K2pOK*et3jPVs*xN0&(ZHg#TU>>5_MiZ)m{?F9?bP%92xg#Mehm0oKS+hT`p<-`v}H^;XoJ`$#5qu1r|aJ+ zP*cH{9`gRCFU@Rr{99iwNSTu#MTa3>GmxaMAOD!HhLiDu^`k*QJ+IEWDp~$!OA|hU518V7-sDD>SrwwcX^{*dd&RkK1O>t-fS^=0&mtbf(q+jzkgE6sYJmCU z1H!yklPp#ueWCm;KSQTOWp$Q~1Lg;n>Ve1qE_$|wfy z+8ukXd)v-q4srZ^&E0RtuLfJIq_CGBwY|N(D*l@v-TAM!ZGVvo;ueh{0bYG< zc6ScF5ex(8L+LzGm2+DWND>hGn);Ha3F+8$tZV&5vebl@7*cF(!c^5q4m3N?>o>D% z405K{%xf`S^MnsU4s|BNk*F?wXv5^JGlMO#ZdN*dFgK!t2E z)+Vq)$k%YBQ=RDQ48jMTX|UEfm75;tgd@NGZvVkALB(;plJ{^mOMHTq+dtN7FnEPE zxAonz%i&~+=Wg%1=KaVLZsGA1OCfP6~?rTbaJAp_SjDp^V;|a z{+b;&m-SJVWQstsZXCpnd%uy<>h0)qXD}U&N%=_}$=%Z52%V$aH~Y1_sD8L_uaZt2 zb+QW{0SPwnBeaKq&NII3{Y>;jjm)R^)Bd1;5S40T$7)Oe2hLE*XYMjUf6&i8my zQ8z+O^m?M40`=YcD#)zBN`mYG^XF}Bln3&;cd2zlFk-I^B!_YY7 zDgoGL*O+Xj-O5a+<7671kfD_G2Bw%=aIN)z+G3e@?<~%`c$xJDD^i?q?zMC7+!Z(0HZFmGIT z=dKVG)7k8PvK+yhn$5vUy6V48#<{iN>o$dFKzIOAUt1|u;~dvf@&cF1|3b9!B3?v$hX=x9~~#3 zM7ESH#sRA7`*@b+P`REM{&_!3EGeH2kSw=L>< zS#yZV~6znaXD^9Nl@?k$|I_lzqE2q?k<3^*=RQZP3v9qF;X8@}_?k!QJi zl&HLzCx8cOoHtR{lu{qdfVG1fimE*6tob|W$6M|ESJnafk={k+xmEvF##-e_1C7v3 z&cJx+`b^t(J{}oG^mey{^#tpsB(0X6!mIR1PH2K_kaE--2jS`OA#nnRwAFpX%`lcS zjZbp6tHU}&%jip|c%*?3e1n~s*1*`Evy zICj*s6-Rtt263AgAhUg9%cs|&Vt#8cyY7Z!C2e+j!6uw|b$i$3m&v4BzajLYj0!GPC`7a33oJG#^ve@|? zCCjZAEc@_53yK%NtWXr(f@J%IMjEVV9$Fy<_n#QU$k)@ZQpygrpB~54ZQYyb!thf? zz)l1q#`~;$_y7(6rB7GNeMZ^yP9PcbtT^`ncfp=|FZMW0jwV&Pu3?8|!d~AVUDF`PzvpFS zYH$I;g-N>`#M<+r%S2Xhsq0?mulZBsa24+`P(#O!6}uJRy+_$YUn5yf|^pZmaaRQ>$d5D29AF?+>E&)ldyAa zYjmP6b17B<>wli}l9I2R{y`0&wlQI+D7KKFrrYmsLxPXVdSq&<$&(%sgIOeuW;!14{0(y1qD0$Y`+X!?JxE=M zGD-sdhte$%FjZF9BUnM!$0xDKCGwe^8Rf4#JPmWa6cE5Xo=KfP?lEP-Nrj4mtki9c z^f`KG3W(#B+B6{J;LAF}rj1Mx0`{3Y7?kWnAMDJN9TjVlXsZa*#|WFb=_TJ4^1XD5 zZ=XUeE(yU@UehFwq`OL}hoRZ=%Gf(mNCUGdznb+hUw|yzT3#jTBz>%}FWtTdrG%-b zfuaBn2dw#O^wam95r^s=?fF0Ly1qXdwOBlF2_sV-epLwEr$MGut3@YimaZ?1#l2F} zJ$KKC2Gv-fi&r`jxWT7E4o{Pb1K?ICdb#gbZfJ-^gTTeD-;YF@YElO}P!@__1(A#I zRo{8MvT20D$PP4iawvJa{ranw3AxK_ofY_iCKf32DCF?C@L=-9#6FW7ivWJp)hTkE zW;R9IWEam2g0h@V8ZU<(`hhBe%pH7V2bhBl?C3yjD)LWQ^E!2`YA}*#<-{nEti$;! zvf!T@+!5ZuG+bIYi25vQklF&q9;|`+JK!VDC%tCwaRY{TVGkr{@1q`GA5W&#RD{xX%Bxt@&k*Jcd4>6%YOnLW@Zz_ze+br=!wfv7Yy^5Nt6FAwi^ zhXP=P!jKJO-Q_P`+-|1N_8w`JYj9zP+yLD`YMsk+jd+%Eno+8uXVs%~m+uRtnhCG(VWeKtdfoEKQvcnA( zrKODbMk>Q?qp>PjAnM>+(Kc^Xdbu;5uw)9W^5Nvlm;&s7hrh)$;94Lw3Vev6rtz;E z3En`&p}}3YUgHgU#;4`EZvD^BJ^-(_)*2|OBPEbERn~1751P{)zDk3_#5Knlv+8IFb9NI zaPw?t97M@Pd3C~t;QB*63& znTTLu{nKm|+DEBoaWod?$x45NrnjH8l2ns1v6>L$T9yKO?36j6+(W4}wiCqHfmtiy z#3vp^&}g;Es;9?5KrA=EvjI{QUJ6VW?E?&JBj{#gmOVL(e|M`c&U%_9`5MQxR?qc1 zPr^2gEeV)FIT8gW-n)z;>?uk;6?ogoxPc;eG~n?;$|_DS#r+;1*bE8j|K?eFes2qi zNOzm97^)Wwzg8P;Q^WJ#J0seWO@@!rSH+0p=)YMb+O0y;vEeL6*EHd)l`VkAJc zY6T0s)#i8J2)I|?ry@cEruFI1h3K?48m@3+N*e1mAJ8pQ#(A$8S)SeMP`n(BhVV~{FJf@BG_`E~v`t`ADVl4!}@xyrzZbm)6>CEeBpT=clD<_MU zDMeV~k5!b-^yTSOYB?rtv;&IsSEiVU_>hrWnl~5@3#$z~u>oj1oA;fOB;?5b{om0H zDU#ffU3+wvqm_<=bNPslF<;6Y3icyKL?sR%7;g!%z=47#?Nr*xhYuChbZ4)84^TAS zaAh07>y1RNKJa~%pFYGH12Xx72utK1+;VwSms#HRxe(#M@4Dl%Y5|>Xtfq^0YsCDk z7*I!E0o*+|thyEW?s81Uf&(T8X&OH%RkpDlX>)H*AJ38Dm4<|XUR5G;1LV8Jit@t6 z{Sd&RAsC6;L?>5nxZmMKe+5ZHcB+g@$F$Xp!QEvElEf7Ts)tsnpzr4gdGfZ!dWDSVCY(t5Qo z4aqd&i~~tb1n4%w2D$grFLeo~uWJKj#Mu09h{*-^Z~l=^0{idAXUa3rFNhNf$K}VZ zcjD}i zQcm7m0BOfv6`f5^cJ#L?i3IPvoId5X-S?-z94AUUQ*1=AEFahcM^!p>*M^^E2xub8 zuK~d(@UW7;fqWD?>H4huVNM#T;E@QYFhAK99*d$cAp>u;Mwj;TPF(eN;Nla#|AmFt-_TitFn>^8 zPX05Nw3mN%v-!CO7m5<}idRjG_%W7+5=c>Pgjh}yw#nW6k-18ZVphl-Uts@o&KKtL z#{m>kuDIO6aKw`0m`o0vO5c;}018iQY(uZ_1xoT2J0WFiQxC28Ud4@DvL!;Al_-W; zQ*4>XaX32bYzW;jNbZwnn~g`m=o&}I|GRwgazp!Ynxooi1^Suw}F zWB;Q*DWz_@{(rx|FIv}!#s*um6HSbG_Wtgh$J>_WVwDBH&6fo4yr+)RoKZx5ZqVydrmmp^gUaTXcIFeri#i$ez3m}goy1CXunPYuwVIrLoWwsHkxUJE+3k#biKH+m!}x>L%N~%9eREC}z|vBFPQa(TUB3 z#s66~xnH3u@^9=bE*`0+J*fBNE7>B|c}lChTj< zI5&+e@sIVB#*9NJX@if1-Y07L0RdST|3vaEoS^5Ee!LRR0MHvF9f|axt#Kv4=Wk;` zLo%hlM4tY5-y=#h2(^?;36q#0G+PhpR5{iX-XhO8l+ZbWQ3K3MnIwr_eiFz&Ks2Zl z65UlVd8+NoH!a{3*N~ODqP>rlUYvfQxW0bewB3!tM^?dfQ}3S>Dy8U19MVV)BvlB{ zuA&tLcNVk1Ir>x*5C~@^4Q1$&RgWEDMXXFAtGdbU0LcEj)7Pv)xwi6RMm_JD4*K7-_C6Q+pBfmCzNc z^`G?UpQ27 z45L3qxxF`1HaJU0o+!cZ@6eQ`_@wSdg{^O zK}F$tBd_ye1(0|OQWQ2F2d;x=EQ`=e`#dd^77S1^A={jXgyd-0ZHuq zl`-X>`kV>hPmegF!B|^VYX`lL-_8$Ty33&Ov~wtRKCifFQZ+05EYd|zR5?55Hrww1 z0Q4Ytww<*L1Yd@ot=!A0iv&Rq6eUlsi8uI3FcbN!Bx-m0pKFvju%kREW~O=m?;BvX zR}JNdp;z^^yi!&65h=L8TT(YHoyy2(;u;6r)NCK5i8Hz031y!MHr=dlG3 zAd}9>p(PD*UH_juPy2*H^9tMTao!H>Ypk|n;>mqfh_gH^j`U5rUcKd1`>j8W`N?xy zOnJN9Q#x0>)ZdSB*8euzjn^$2V~YaM%~c_h?vq^CZq^ns^+G{6F}N)*NA*lO10nx5 z4+i?v;Eim=bCgy%n%m+*XKQn7Ux#&!t=Gc`(sSck)I0tw(OfZe^NqZZh_3UnGxw}@ zw^dVXi(@`AIU`FC9XKNnFt=m{Art3D%QCU{;~_;5YKiHXuBO{klK9RF!v+ufM*^ZLA=v3cp*2>GY*!g>dY z?>5K+zKKcf%;NQ(PFgi?#(8O^j(f#?Ine??3!c9x*vNc~(V$8RKEmvr-EQ^-tF z?~zpelh~u`#$ilwA9E@+j>XKvs2=$bBuZ84-}Hlk3mv%VS@5Qr1xjZ+6Um!f!`BBMxyX3uA&`qh3qV623l#=#SuJ6_!G9*TSCIf=BVz~qQcSIXDgIQeZ&mo#C?(g`4%KxB zAz$#K@YdL%k?T$;0mFvAy|!V{fR>$yK$kFBs_fJ28VD52Gx!UIV!P?`m-s;;Rnych zH#ST~KIvD|T$At>)h(J{d2DFagX9|Q(M$xiRka{K;NN_?GBeWsAFw%G(`*37Y#&;~ zip>b{CPpLw=juK-y^O?_WB&%EbYxzpNzBD^3Z7KwL$Yu=6Dm}qJP^60?67j=Fag>U z`19Hur6d&;_8-aU1Ip>6ijS#sp(#~elzCl#WEA}>| z56UtSC`v)zJSmgvt}S8O#v4?m$PLpR{LuW3UB{w0Vq8o|J1L@t<$#u$CQEk02vA}0 zn!m`pkfOK1I?=(}k3!IA9A5#Z<+hy%NGT5u;PuW>GQ#1@+3I`N`N_r(oV&5ozZije zWGihC*!QDO0 zrXj>~@zh`T+)g%>im9q#P$l7&VacNik4fi+BPotNslWh8e^vN5DBe}YwFhcINLfRc zxIgp)<0z>bq;LOuv4Q8uzsn>St*a0l3v{KgKIOglOhe{lYA1Tm!fs9zb=UA(e}&;6 zas7uvEvVJSNvSuV#A&fxTk)9#nmkx<4sH#Ge$WmQWgdZ;HxWKHHT_l5VAIADL5lA= zjy8`$c8<=8Se<7N7mSbY{jet!0$q^<_TRQbQ+nN?x^;DYQOPzt4#9}Cd^7hic=pk)Mtvw-)>MCSoJ*Mmvj=FXWNVX=|DF0gbNj@BTR3UbxMTwbMD5;|`g^oz(>GnBoPoyn&KLDfCo=_bHy7w~ywxK52Yf zgcf8Ah}rkrK#>j-E)i*ar1AKRkRT5Y1bj{#8BuF8yU`=aDmyD0ulvipd(@|-VJ0gqzPlP0duL+kM_1tDq|(aMr{Oi-&%-`{_}%fyX}Vl=!@sTl zVsmBqMeqBAvFdv>0eE|OaI#w-@&=&`9cg(SuGsqG=gkz}%Ku&Rm1uRNL0sOW!Yip4 z%K3o;LFaZ6wwbeFC=4yeI(^_oeH&fHdGRP!836jA`v&vil#QMsByM3SKF@c(8_>3p z)ZZ4Ro8|UiGu73VhDn>{R~NI59VXoupMiy28Necd8jEh6;UgP}+f((_i&dgZFZtm! zy>39}96v~0719ZD#muTiueZDt!M=j3aA1F9+wK38N zm9jEUu9huKq`23nzG*4RjV-?0!vp^gloGP}n+5DLqow?ZzP>xvRX4`Ei&2p=q)rf{ zMzk5?B3SsDn)Ua3oYkv2%NFuFP39kVnK0amTeyhD0tJ=&gA8+fXy_m_=BWXB6t6dhpba?>{=6R7}X6vZmlU-OPbcyi659rGs?KN;u_BXa8e zVF}eA_wDCp3-iMUG*9h;r&(9a7#RfXlXzK^zD^H#)dKO~IS0WQza^nHv@9N3wWC^y z^P_7VDMydhuJeUJNI?CDna>GXW#AL)tXJeMKur8#adM;wTfNwb+%lzUT8V5$ECWg8>IS~aU&7>Ck|a zj5{C9&vI>>tb%=$mN5b7+r$e{iOl>z|Gg!oj zBbtG;%{59X)l!Q|4cee7l9p9t**OvnCN%aFYF=d} zB~%wb+Ps44vKyefCI=kPj3Kl&-GF9xc5KI=uOijyxqcqpwj}NFb#elBi_^@oCo?xx zAS5Z5&TLqboG|9l-S!Z)k78@v=bkAGt3d?}nqxwN0VR!9u4AS2KH`v0v2t@Yy_kR% z6&-cgk*^TS(2R+763^QU?(Xi_?a9q`r#v30sKfvxIvTt;mM_GJw#K0!3r$r+|31d> zcwqKk~_1wznI&p4X&L^e}1diqJailZ)S1Y^wZFpIJ{dQcxe722QSiw6P zLE#N6TM7iPZaUQIYMZ<+pe_8kK!!!@QLmf%+huemmOa7Sl5m)o>dGJ_c7l9HoIt%| zuwk9%)<13W8`FrdCJ<~gV&iMI@@jNwQ+!X;__rHtRoKVS5?QLmoi;pe<(83@G0s@!+qEurZ7fGj zMWQ8Xmk~rB(a9q8mZqC5mi$sEc@BBhyzUeCPC{0iUhJ-ctm%F@{&8j)d7w83{7J$D zMLg6IC%gF&wwj|I0W)09l9ef?qOnxN+M9Us!BuK4Ymd7i^!}GN>7-ZefD6o{49dRX znG1&$OGJVH5Cu z%_z!xUvx$BVl!iYKYz}1#pTjyN*`(;8Jl_4KAsx?#0XjIr26|)(-x!eit#LS)Aa_= z0q>?(whK403x4WGC=uDuO4)GpL46pC8K=hikjTq{hG`}#9Au|`zJDj zg@!*hPaYE3&6Mi|kf|U!PLlYp`F>Tabs7{q54LxZOJALA1m~RHe3QAJX_`17?C=BS zj=j`fRFO=2!GFWFa2kK4RlsgmG~zw48<*yML)7Btw=DWM>Edpu_U)1)*cNSl-={QV zz5q*Fih*&neJ12sl(lnDK2YvVMb>G9v4`B)&)Mr4ZDv*d%P2*y2IF=ef{{uRm{Tlp z2#qy6%0U`{WaJ~j<@_grPFQxPBXE6@r-+6f|GDs_1ywp{sn0Y6N26t(PMmULD{7lm z_xAdNHgJ>^4L=CETwGLVsHA64V4G!PKnzs_I7aXC=2@~u9OIW&3}nmV?{d0w>6&j6 zRPf=CUeCZ4l;kS7?`ZnZ#{kmdG$P^)V-rroCBBBv1c@F&Pa{$`^vnC+Q)PvnEdPih zdrS~m?)i_u^ItroftDK#`V`|TFL^f5R%tcluz_?g>M3ni(_ z4A@HUhG65|pu2qe;-v3~m^C(V9>Cdv7uD90DdB+QA{OK(v@;8IHIQNOgiB%q_3g+& z)o_0t2xxGl${nka+0(pTSG7s}CWfOZb*Z)m)YZ4mChRAdnc1%@xYil{BHcxk80f9~ zV$z&ES}Y?S;>JK}p1lk#3!-xm)rJvNJ8BK7)hc%!mq$}1iW-tKL4&8lg+X=Es~U!f zp`g#yy_2?Q-qPR&1L1GMGHlNz znK!ej0C&w)c=F5ta4X^XVVZ;11@2(flm#+cucgQpZ74gvhe{1PWUj*lwuRdM1ET$u zR7RE24y+sE=9pJ5Z5+Sm3Iciv{Am%B_y2nhckVLRi(@er--`utU1eB6D#`1wH8xM( zY|W4nLa^k<)ys`7Mi+yU=N!$KvWJ+gzM$w0FTBF{t# zegOuejbqhSY#rucQZT;NSn5@QA)fZX*+`5}+FIdJI$nCH?JrBtsSEy&MCAa&&6DJD zxj)8>br9=EMX3*-lC{!7UIu0aVFuHg_KgI)8?V`7zYyoxEt-nKsP1_vKiSL;P2|DE zWNV*toWOu}IkFDGSdklLABl`m<6ZOASIP3OE-qDF_+me*x}k7U*6vIb*<3X8{n~MK zqh~ERtilsYGQ+O@D96b<6^P}GwQ(Bmd7q>Hz1vsiw3<*+gDdiA=!ni|y|)KBr%ab1 zQ&J54oI5$p4l+?Jkf!Ke39VX~;q|+rs&__Iq`+1U{1ofvFrgt*YS4X&oIfDX3KF@f6ts za)iqoT$GnwDV(|H5rEs@%zEehzsPy9nuj_i8rXOBU|IrtUV#u=S%IS5Zl_S`AyTz< zwfoLQru+Hn000PG0iR|Vxe@>NW0V?~Mox}=?rm17!l_dg%$alXVQtsX^}J{rKw2eY z_)ei#u{XdxcZng^EDqjJDYhC#lP&0OUBP+Ia62MIQ^1x)cXCg~!6P;dXaJ-oiFiD+ zEIC;Jfgk&SL)KE#^c{RlR9!(~b{8_fjAgLMS&5kLl@M^yB~S0YLYRO5I#2)#>Ey31 zlLOYmfRk2ToEAarF_NIlXt~z5@SM=Ubyvp`1vn{Al>i+D%Yzf|(U-I~TRQS*Q*qD7 z4*tJs6Q@^2jbW_WIFS+)ZghhGlSrauhn_Dr|?(S|UGZyDbL!9qcRCOu z7o$+Kv&g-f(Z=F3W?ZJ!HjI&o+?|9IGHhy{W2(G}$Tk!62d~lYIY524?f>dZv6oX? zKi#rjEkq3P@*H}FK^OEbAKD1HZ?v-wC$+!^aWFyQ{3*8okY>ETvV}dZ6^(g!>C3^Ac=7C9^+L1Q5i{|HaI==OFxo3#U=s|dxUJAWH4sO`}`tHu?1)kKwtVL2T4U$fvf-7Kftou((fWea*12)muBO4p z#kZcAQ{qKuj5QoMa)J6{`tz-!+T*`t*Lsi`=eXyMKp_Z=iDfRK#VTgg-ukv40d8m^ z)iC{!_Pwrw+HaxM6?TZy$B6ha5#uLBtfCDrIPG_PmgwWvue{(po>7}OWN~Sos7Hje z8)1f5_|$FO9fC}|);i+s;Xa|=SY^9w4+g-*5M?gZS;hY^zWD3~H!%q~E!8)Mr#^6F zI2M{5^|HsXLtNAG?(eLvm~VoBG|p$jPAg-Dlom5S9L&O|AN)lYCGHGOW@l1Ps9cpaTf6Ii&Y3AXCjAT z7$~zw>f0tlm=~p>0O-G-oD%xeTBxnzcXSR=@03ebZ54e$al+8|xJt{7FO#tm+{NCNZNq&zZ_`5#Fi&LtOL8Jjl?dz65npp{|4_}yY0$d6q( zw~rWEI#H?P{}l6NYzeC#6-LotqnfkS8#kMIS(p6TSyTbn@IODM@nTGEf~~0O?7m!W zpI zQR-=~6y6#p?<{8h&_5N z%0sY#4u&tO{-q~zl%l~0J1IRHu(mJru)n%-w_dHvqB@k)bDh|3MrkyEAHG{ZEFMW7 zj@L)Y`OzP#Nj{6$4)YQP@GKU(7@!Q!O3Idnm!4hd3VErIXZm|FgO3_Y1iYoY3*EyA z%|F$YlK_GHI&G*FPJq7x3%$@_4emztpi>Ko;?NFyc97taqFspf#12~UpQZwV(g6|yU zZBZ6gi^N%dglQZKtUcL%RVP*)pHDdlxNQ&ZyAi`|tkpOfB{9f-6vZ74>NiCh{EP1j74 zrfZ}N(v?mZOmC3=ixPQ{yxNtd$>HCza4OhRE?7}*FLQMofSzQ= zmf=Yo=K-{30_tV^)?_94F;^d~Z=D#x-f+f(p4LNErs|em)*SD#BnM2!KXOQbxMXIK z{$2fZhu@<~(^shQ4|Bv*1;++uG$Lev9s!`Kv|KcI&2yfUV?P@hGGY+(67$a0FFzW; zRsEv=GQ(v^&2=#t0$wMpC)+Ikr2n90RtCNsD1@M3v80tPK~UrKw;cMaSgo#RBd0&_Y1 zOP0PuO8IPp#l=1~??af`T{|KyVP^+nIyH@`<^a}7b!mSCMTA4$jZ~tbQskw(4Ht=` zPhoo+UrJvoZol>Si9!#V;4#nb6dF6llgFY0ftAhPt;gctaioYCF~0ZhwjHW)Vz}l3 z?wL4S8F(HbWE#UyAbhhbwc8G>nP$O$7G-BLqDNku+yD+5231xH_7$eM5{iORvks#o5tTyHYYF1E~-mF?OqbgBFJ z@6ir+6FssSLm{i_zMuhVUGQdM=sK%5kxp9wlU#M{hGgP0l(N*f79hk8D};L$NG73H zZkrvnoaSkJ|F!Ngin>{T3!RCIAoU?&dagm!f@dRxX313^)zA%drAZ%nbivS_#-JF* z?W^c?G9Ps<8!3Roz6UmV-KG7lhuN9M4J0T8YuW&N)-TjqYa$4U=p3m(2A0;b@W5H8 zNZ-%bNWUp+sG@;cLIfXYvhC zI;B%Iz*(VL3lwiIV%cv|XOfbkY5_$3+!RgbkIv6iSP;OzlM|0O90$>oL&wsdlxwXr zmXGXR;$uKzSjt<-a&<@Zf8XK7;cPV1GT6`mnRyz0R}?8v#LM8x%i2+OmQ zr{SP4+NcVTLIOnzw??n70OC8^yXK5OHqG^*#f?W;iMc?->kP%A9&7HiB1r5*kQf40 z$lJ8)^0+Nf2Cl(Wx%&{r)%i|Pj!>M7Q+lK>4i-?%7+(R0_~(koOq_GAmT2f{WCB5B zAFZR^%!DX89leDfgo>os$afd5dH_IW+e3fhsJaMgu#g)WkiqvFD943X#O`q8KL`k! z_#BrWQ5D7vMG{BGO5MIF?sh@4M{%FimUXn4val9U1a(`>bB8928CqUqiU!R>WS$7jOzJ-!Qk3`LIeDe0l`OB4bWDGdQOSpm{sI;2bZSpnu%f!FsN>C%Cb__LCN09b^r_{Phuz?E+4Hpp8S-EE3j13vdQ^h9EmO zcY|EurCwUM2=d0>VG;BMpag^4kx_O@OrSCQ;)+ezZYE?F`9Fzo0Mcm?dKpTS!78$S zKLda!sO_%d3G)+Uqja`c;4y6q+)|M3^d?Y5>!cR{0Bt4<`$wxi^MF$Q+kQ3>pza56 zFhcvU&d%yib}_%NX+t};N5oD=ZJ@r0P44X(7E5`ni9?|X6%-=Vl`*2nmCG-l&y;hZ zPBa51hSC`{NY@9$dwlc}vA&hRjA9C7hFyVm5VrW4L$(}7ctbP=KJY~cA_^Df)0(=v)Q|J{^UUq*>+=MwmP8c9qUxyCcc5A@W1d{)J;mW+- zz{xsL(QkZZEOZWD#|*g}39|U*$`1rEfWe^+X6t>R@{_W$$B`2fKJ);nawyG{xO&&Z z;Ynx{@WBSR_A@R#Ar!xx6x8^qP=ZLAAMQ5Dt0nvkbhw6J#qXNqp@i$kp^Fdcb=_)iwkSjbZX|^DPBVvRum1Lc~EIM$}?5okKcm=|wBATU;q_0v4~2r(Dc5shGW)B#J! zeE#>3n!h;|)TG!Qh}dnX>wu;*HWlN(dpgbu2dtgN??;;3KSO(hfVrqWx}EH*Xs(x; z0Ek!7b=@5H?W6`$bM0l*=k@Q7rp~}a%TQ^i`zB;^4W~rg@F1pd#h2=Twg-hHkJ4$_1kp?M*4(O`4J^TFP!7u*-?Fj4p!V>K;3bG;voh z`oeBs%&V|khAz7FXjW&V>XR*R*m^Fhox6%PB?i`DeyO@U)-EIpuXE%Zq29RWIlb4m z6e8w5iE~>3g2o% z$7Cum;MnkpGg=m@fLI4dcv>N7I^r0NP-C{RL``E>5@8K@KnnD87YbTTCBb1tPNGT2 zui-87y^6<#U<;7=MOF@lZ)qGXnrrLsb9Aqlj{A-+9sjzUQ>l8lNN5g5tDfjpℑ> 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 literal 0 HcmV?d00001 diff --git a/examples/inference/yolo-python-onnx/pixi.toml b/examples/inference/yolo-python-onnx/pixi.toml new file mode 100644 index 0000000000..1e29df1564 --- /dev/null +++ b/examples/inference/yolo-python-onnx/pixi.toml @@ -0,0 +1,12 @@ +[project] +name = "YOLO Python Onnx" +version = "1.0.0" +description = "MAX Examples" +authors = ["Modular "] +channels = ["conda-forge", "https://conda.modular.com/max-nightly/"] +platforms = ["osx-arm64", "linux-aarch64", "linux-64"] + +[dependencies] +python =">=3.9,<3.13" +max = "*" +pip = ">=24.0,<25" diff --git a/examples/inference/yolo-python-onnx/requirements.txt b/examples/inference/yolo-python-onnx/requirements.txt new file mode 100644 index 0000000000..f1a8034a23 --- /dev/null +++ b/examples/inference/yolo-python-onnx/requirements.txt @@ -0,0 +1,8 @@ +--extra-index-url https://download.pytorch.org/whl/cpu + +networkx==3.1 +torch==2.5.1 +onnxruntime==1.17.3 +opencv-python==4.9.0.80 +ultralytics==8.2.5 +numpy<2.0 diff --git a/examples/inference/yolo-python-onnx/run.sh b/examples/inference/yolo-python-onnx/run.sh new file mode 100755 index 0000000000..42b9126556 --- /dev/null +++ b/examples/inference/yolo-python-onnx/run.sh @@ -0,0 +1,32 @@ +#!/bin/bash +##===----------------------------------------------------------------------===## +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +##===----------------------------------------------------------------------===## + +# If anything goes wrong, stop running the script. +set -e + +MODEL_DIR="../../models/yolo" + +# Make sure we're running from inside the directory containing this file. +cd "$(dirname "$0")" + +# If CONDA_PREFIX is set, install requirements +if [[ -n "$CONDA_PREFIX" ]]; then + python3 -m pip install -r requirements.txt +fi + +# Download model +python3 download-model.py -o "$MODEL_DIR" + +# Execute model +python3 segment.py diff --git a/examples/inference/yolo-python-onnx/segment.py b/examples/inference/yolo-python-onnx/segment.py new file mode 100755 index 0000000000..b64cedd533 --- /dev/null +++ b/examples/inference/yolo-python-onnx/segment.py @@ -0,0 +1,382 @@ +#!/usr/bin/env python3 +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # +import os +import platform +import shutil +import signal +import subprocess +import time +from argparse import ArgumentParser + +import cv2 +import numpy as np +import onnxruntime +import torch +from constants import CLASS_NAMES +from max.engine import InferenceSession +from ultralytics.engine.results import Results +from ultralytics.models.yolo.segment.predict import ops + +DESCRIPTION = "Segment images from a webcam or video file using YOLO." +DEFAULT_MODEL_DIR = "../../models/yolo" +DEFAULT_INPUT_FILE = "input.mp4" +DEFAULT_OUTPUT_FILE = "output.mp4" +WINDOW_NAME = "YOLOv8 Segmentation" + + +def resize_and_pad(image, shape): + # Grab shape sizes. + (h, w, _) = image.shape + (target_h, target_w) = shape + + # Resize to fully fit within `shape`. + min_ratio = min(target_h / h, target_w / w) + unpadded_h = int(round(min_ratio * h)) + unpadded_w = int(round(min_ratio * w)) + image = cv2.resize( + image, (unpadded_w, unpadded_h), interpolation=cv2.INTER_LINEAR + ) + + # Pad to be the same size as `shape`. + delta_h = (target_h - unpadded_h) / 2 + delta_w = (target_w - unpadded_w) / 2 + top, bottom = int(round(delta_h - 0.1)), int(round(delta_h + 0.1)) + left, right = int(round(delta_w - 0.1)), int(round(delta_w + 0.1)) + return cv2.copyMakeBorder( + image, + top, + bottom, + left, + right, + cv2.BORDER_CONSTANT, + value=(114, 114, 114), + ) + + +def postprocess(out0, out1, input, frame): + out0 = torch.from_numpy(out0) + out1 = torch.from_numpy(out1) + + pred = ops.non_max_suppression( + out0, + conf_thres=0.25, + iou_thres=0.70, + agnostic=False, + max_det=10, + nc=len(CLASS_NAMES), + classes=None, + )[0] + + if not len(pred): + result = Results( + orig_img=frame, + path="", + names=CLASS_NAMES, + boxes=pred[:, :6], + ) + else: + masks = ops.process_mask( + out1[0], + pred[:, 6:], + pred[:, :4], + input.shape[2:], + upsample=True, + ) # HWC + pred[:, :4] = ops.scale_boxes(input.shape[2:], pred[:, :4], frame.shape) + result = Results( + orig_img=frame, + path="", + names=CLASS_NAMES, + boxes=pred[:, :6], + masks=masks, + ) + return result + + +def camera_functional(): + cap = cv2.VideoCapture(0) + if cap is None: + return False + if not cap.isOpened(): + cap.release() + return False + + can_read_frame, _ = cap.read() + cap.release() + return can_read_frame + + +def process_webcam(args): + # Compile & load models - this may take a few minutes. + print("Loading and compiling model...") + if args.onnx: + engine_name = "ONNX Runtime" + yolo = onnxruntime.InferenceSession( + f"{args.model_dir}/yolov8n-seg.onnx" + ) + else: + engine_name = "MAX Engine" + session = InferenceSession() + yolo = session.load(f"{args.model_dir}/yolov8n-seg.onnx") + print("Model compiled.\n") + + # Setup camera. + print("Grabbing camera input...") + print("Press escape or q to quit") + cap = cv2.VideoCapture(0) + + if cap is None or not cap.isOpened(): + print("Failed to open stream from webcam.") + print( + "If you don't have a webcam, try running with the `video`" + " subcommand instead." + ) + if cap is not None: + cap.release() + exit(1) + + previous_elapsed_ms = [] + + # Loop camera frames running yolo. + while cap.isOpened(): + # Load frame from camera. + success, frame = cap.read() + + if not success: + print("Can't load frame. Camera stream ended?") + break + + # Resize to 640x480 + frame = resize_and_pad(frame, (480, 640)) + + # Preprocess inputs. + input = ( + frame[np.newaxis, :, :, ::-1] + .transpose(0, 3, 1, 2) + .astype(np.float32) + / 255 + ).copy() + + # Run prediction. + start = time.time() + if args.onnx: + outputs = yolo.run(None, {"images": input}) + else: + outputs = list(yolo.execute(images=input).values()) + elapsed_ms = (time.time() - start) * 1000 + + # Postprocess outputs. + result = postprocess(outputs[0], outputs[1], input, frame) + + # Annotate and display frame. + annotated_frame = result.plot() + try: + cv2.imshow(WINDOW_NAME, annotated_frame) + except: + print("Failed to open window to display the annotated frame.") + print( + "If you don't have a gui, try running with the `video`" + " subcommand instead." + ) + break + + # Calculated average fps and update window title. + previous_elapsed_ms.append(elapsed_ms) + previous_elapsed_ms = previous_elapsed_ms[-100:] + average_elapsed_ms = np.average(previous_elapsed_ms) + cv2.setWindowTitle( + WINDOW_NAME, + ( + f"{engine_name}: YOLOv8 Segmentation (Average Model Time:" + f" {average_elapsed_ms:0.1f}ms)" + ), + ) + + # Exit on escape or q. + ESC = 27 + key = cv2.waitKey(1) & 0xFF + if key in [ord("q"), ESC]: + break + + # Clean up resources. + cap.release() + cv2.destroyAllWindows() + + +def process_video(args): + if not os.path.exists(args.input): + print(f"Input file not found: {args.input}") + print("You can use your own video file with the --input flag") + exit(1) + + # Compile & load models - this may take a few minutes. + print("Loading and compiling model...") + session = InferenceSession() + yolo = session.load(f"{args.model_dir}/yolov8n-seg.onnx") + print("Model compiled.\n") + + # Setup video capture. + print("Processing input video...") + cap = cv2.VideoCapture(args.input) + + fourcc = cv2.VideoWriter_fourcc(*"mp4v") + fps = cap.get(cv2.CAP_PROP_FPS) + out = cv2.VideoWriter(args.output, fourcc, fps, (640, 480)) + + # Loop camera frames running yolo. + while cap.isOpened(): + # Load frame from camera. + success, frame = cap.read() + + if not success: + # Out of frames. Everything is done. + break + + # Resize to 640x480 + frame = resize_and_pad(frame, (480, 640)) + + # Preprocess inputs. + input = ( + frame[np.newaxis, :, :, ::-1] + .transpose(0, 3, 1, 2) + .astype(np.float32) + / 255 + ).copy() + + # Run prediction. + outputs = list(yolo.execute(images=input).values()) + + # Postprocess outputs. + result = postprocess(outputs[0], outputs[1], input, frame) + + # Annotate and output frame. + annotated_frame = result.plot() + out.write(annotated_frame) + + # Clean up resources. + cap.release() + out.release() + + # Full path so users can find video easily + output_name = f"{os.getcwd()}/{args.output}" + + # Workaround for linux python-opencv/ffmpeg not being able to encode h264 + if shutil.which("ffmpeg"): + print("Changing video encoding for wider video player support.") + result = subprocess.run( + [ + "ffmpeg", + "-y", + "-loglevel", + "error", + "-i", + output_name, + "-vcodec", + "libx264", + "encoded.mp4", + ] + ) + + # If succesfully encoded write over original file + if result.returncode == 0: + subprocess.run(["mv", "encoded.mp4", output_name]) + else: + print("\nFailed to encode video, but video may still be playable.") + + # Open the video if running in vscode and `code` is on path + if "TERM_PROGRAM" in os.environ and os.environ["TERM_PROGRAM"] == "vscode": + if shutil.which("code"): + result = subprocess.run(["code", output_name]) + + print("Video saved to:", output_name) + + +def main(): + # Parse args. + parser = ArgumentParser(description=DESCRIPTION) + subparsers = parser.add_subparsers(title="Commands", dest="command") + webcam_parser = subparsers.add_parser( + "webcam", help="Segment images from the webcam and display them" + ) + webcam_parser.add_argument( + "--model-dir", + type=str, + default=DEFAULT_MODEL_DIR, + help="Directory for the downloaded model", + ) + webcam_parser.add_argument( + "--onnx", + "--onnx-runtime", + action="store_true", + default=False, + help=( + "Run video segmentation with the ONNX Runtime to compare" + " performance" + ), + ) + video_parser = subparsers.add_parser("video", help="Segment a video file") + video_parser.add_argument( + "--model-dir", + type=str, + default=DEFAULT_MODEL_DIR, + help="Directory for the downloaded model", + ) + video_parser.add_argument( + "--input", + "-i", + type=str, + default=DEFAULT_INPUT_FILE, + help="Input video file to segment", + ) + video_parser.add_argument( + "--output", + "-o", + type=str, + default=DEFAULT_OUTPUT_FILE, + help="Output video file to write to", + ) + args = parser.parse_args() + + # Improves model compilation speed dramatically on intel CPUs + if "Intel" in platform.processor(): + os.environ["OMP_NUM_THREADS"] = "1" + os.environ["MKL_NUM_THREADS"] = "1" + + signal.signal(signal.SIGINT, signal.SIG_DFL) + + if args.command == "webcam": + process_webcam(args) + elif args.command == "video": + process_video(args) + else: + # No command was given. First attempt to run webcam with default value. + # If there is no webcam, run video segmentation with default values. + args.model_dir = DEFAULT_MODEL_DIR + args.input = DEFAULT_INPUT_FILE + args.output = DEFAULT_OUTPUT_FILE + args.onnx = False + + # Check if a webcam is available. + if camera_functional(): + print("Webcam is available.") + print("Running live segmentation.\n") + process_webcam(args) + else: + print("Webcam was not available.") + print("Falling back to video file segmentation.\n") + process_video(args) + + +if __name__ == "__main__": + main() diff --git a/examples/lit.cfg.py b/examples/lit.cfg.py deleted file mode 100644 index 1c3516870d..0000000000 --- a/examples/lit.cfg.py +++ /dev/null @@ -1,71 +0,0 @@ -# ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. -# -# Licensed under the Apache License v2.0 with LLVM Exceptions: -# https://llvm.org/LICENSE.txt -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# ===----------------------------------------------------------------------=== # - -import os -from pathlib import Path - -import lit.formats -import lit.llvm - -config.test_format = lit.formats.ShTest(True) - -# name: The name of this test suite. -config.name = "Mojo Public Examples" - -# suffixes: A list of file extensions to treat as test files. -# TODO: Enable notebooks -config.suffixes = [".mojo", ".🔥"] - -config.excludes = [ - # No RUN: directive, just bare examples - "hello_interop.mojo", - "matmul.mojo", -] + [path.name for path in os.scandir("examples") if path.is_dir()] - -# Have the examples run in the build directory. -# The `run-examples.sh` script creates the build directory. -build_root = Path.cwd().parent / "build" - -# Execute the examples inside this part of the build -# directory to avoid polluting the source tree. -config.test_exec_root = build_root / "examples" - -# test_source_root: The root path where tests are located. -config.test_source_root = Path(__file__).parent.resolve() - -# Substitute %mojo for just `mojo` itself. -config.substitutions.insert(0, ("%mojo", "mojo")) - -pre_built_packages_path = os.environ.get( - "MODULAR_MOJO_NIGHTLY_IMPORT_PATH", - Path(os.environ["MODULAR_HOME"]) - / "pkg" - / "packages.modular.com_nightly_mojo" - / "lib" - / "mojo", -) - -os.environ[ - "MODULAR_MOJO_NIGHTLY_IMPORT_PATH" -] = f"{build_root},{pre_built_packages_path}" - -# Pass through several environment variables -# to the underlying subprocesses that run the tests. -lit.llvm.initialize(lit_config, config) -lit.llvm.llvm_config.with_system_environment( - [ - "MODULAR_HOME", - "MODULAR_MOJO_NIGHTLY_IMPORT_PATH", - "PATH", - ] -) diff --git a/examples/models/README.md b/examples/models/README.md new file mode 100644 index 0000000000..8784898ce8 --- /dev/null +++ b/examples/models/README.md @@ -0,0 +1,4 @@ +# Downloaded Example Models + +This is where we store downloaded models used across different examples in this +repository. diff --git a/examples/.gitignore b/examples/mojo/.gitignore similarity index 100% rename from examples/.gitignore rename to examples/mojo/.gitignore diff --git a/examples/mojo/README.md b/examples/mojo/README.md new file mode 100644 index 0000000000..6c651cd92d --- /dev/null +++ b/examples/mojo/README.md @@ -0,0 +1,48 @@ +# Mojo code examples + +A collection of sample programs written in the +[Mojo](https://docs.modular.com/mojo/manual/) programming language. + +## Getting Started + +The easiest way to get started with Mojo is to install the Magic package and +virtual environment manager. By following the instructions in [Get started with +Magic](https://docs.modular.com/magic/), you can quickly install Magic and use +it to create a virtual environment for Mojo programming. Alternatively, you can +follow the instructions for how to [Add MAX/Mojo to a conda +project](https://docs.modular.com/magic/conda). + +After you have set up a Mojo programming environment, you can then use `git` to +clone this repository of Mojo samples using the command below: + +```bash +git clone https://github.com/modular/mojo.git +``` + +## Running + +If you're using [`magic`](https://docs.modular.com/magic), navigate into +the `examples` directory and use `magic run` to invoke `mojo` and run the basic +example programs. For example: + +```bash +magic run mojo matmul.mojo +``` + +You'll also find several complete Mojo projects as subdirectories of the +`examples` directory. + +## License + +The Mojo examples in this repository are licensed under the Apache License v2.0 +with LLVM Exceptions (see the LLVM [License](https://llvm.org/LICENSE.txt)). + +## Contributing + +As a contributor, your efforts and expertise are invaluable in driving the +evolution of the Mojo programming language. The [Mojo contributor +guide](../CONTRIBUTING.md) provides all the information necessary to make +meaningful contributions—from understanding the submission process to +adhering to best practices: + +- [Mojo contributor guide](../CONTRIBUTING.md) diff --git a/examples/check_mod.py b/examples/mojo/check_mod.py similarity index 100% rename from examples/check_mod.py rename to examples/mojo/check_mod.py diff --git a/examples/deviceinfo.mojo b/examples/mojo/deviceinfo.mojo similarity index 100% rename from examples/deviceinfo.mojo rename to examples/mojo/deviceinfo.mojo diff --git "a/examples/hello.\360\237\224\245" "b/examples/mojo/hello.\360\237\224\245" similarity index 100% rename from "examples/hello.\360\237\224\245" rename to "examples/mojo/hello.\360\237\224\245" diff --git a/examples/hello_interop.mojo b/examples/mojo/hello_interop.mojo similarity index 100% rename from examples/hello_interop.mojo rename to examples/mojo/hello_interop.mojo diff --git a/examples/life/README.md b/examples/mojo/life/README.md similarity index 100% rename from examples/life/README.md rename to examples/mojo/life/README.md diff --git a/examples/life/benchmark.mojo b/examples/mojo/life/benchmark.mojo similarity index 100% rename from examples/life/benchmark.mojo rename to examples/mojo/life/benchmark.mojo diff --git a/examples/life/gridv1.mojo b/examples/mojo/life/gridv1.mojo similarity index 100% rename from examples/life/gridv1.mojo rename to examples/mojo/life/gridv1.mojo diff --git a/examples/life/gridv2.mojo b/examples/mojo/life/gridv2.mojo similarity index 100% rename from examples/life/gridv2.mojo rename to examples/mojo/life/gridv2.mojo diff --git a/examples/life/lifev1.mojo b/examples/mojo/life/lifev1.mojo similarity index 100% rename from examples/life/lifev1.mojo rename to examples/mojo/life/lifev1.mojo diff --git a/examples/life/lifev2.mojo b/examples/mojo/life/lifev2.mojo similarity index 100% rename from examples/life/lifev2.mojo rename to examples/mojo/life/lifev2.mojo diff --git a/examples/life/mojoproject.toml b/examples/mojo/life/mojoproject.toml similarity index 100% rename from examples/life/mojoproject.toml rename to examples/mojo/life/mojoproject.toml diff --git a/examples/life/test/test_gridv1.mojo b/examples/mojo/life/test/test_gridv1.mojo similarity index 100% rename from examples/life/test/test_gridv1.mojo rename to examples/mojo/life/test/test_gridv1.mojo diff --git a/examples/life/test/test_gridv2.mojo b/examples/mojo/life/test/test_gridv2.mojo similarity index 100% rename from examples/life/test/test_gridv2.mojo rename to examples/mojo/life/test/test_gridv2.mojo diff --git a/examples/mandelbrot.mojo b/examples/mojo/mandelbrot.mojo similarity index 100% rename from examples/mandelbrot.mojo rename to examples/mojo/mandelbrot.mojo diff --git a/examples/matmul.mojo b/examples/mojo/matmul.mojo similarity index 100% rename from examples/matmul.mojo rename to examples/mojo/matmul.mojo diff --git a/examples/mojoproject.toml b/examples/mojo/mojoproject.toml similarity index 100% rename from examples/mojoproject.toml rename to examples/mojo/mojoproject.toml diff --git a/examples/nbody.mojo b/examples/mojo/nbody.mojo similarity index 100% rename from examples/nbody.mojo rename to examples/mojo/nbody.mojo diff --git a/examples/operators/README.md b/examples/mojo/operators/README.md similarity index 100% rename from examples/operators/README.md rename to examples/mojo/operators/README.md diff --git a/examples/operators/main.mojo b/examples/mojo/operators/main.mojo similarity index 100% rename from examples/operators/main.mojo rename to examples/mojo/operators/main.mojo diff --git a/examples/operators/mojoproject.toml b/examples/mojo/operators/mojoproject.toml similarity index 100% rename from examples/operators/mojoproject.toml rename to examples/mojo/operators/mojoproject.toml diff --git a/examples/operators/my_complex.mojo b/examples/mojo/operators/my_complex.mojo similarity index 100% rename from examples/operators/my_complex.mojo rename to examples/mojo/operators/my_complex.mojo diff --git a/examples/operators/test_my_complex.mojo b/examples/mojo/operators/test_my_complex.mojo similarity index 100% rename from examples/operators/test_my_complex.mojo rename to examples/mojo/operators/test_my_complex.mojo diff --git a/examples/pymatmul.py b/examples/mojo/pymatmul.py similarity index 100% rename from examples/pymatmul.py rename to examples/mojo/pymatmul.py diff --git a/examples/reduce.mojo b/examples/mojo/reduce.mojo similarity index 100% rename from examples/reduce.mojo rename to examples/mojo/reduce.mojo diff --git a/examples/simple_interop.py b/examples/mojo/simple_interop.py similarity index 100% rename from examples/simple_interop.py rename to examples/mojo/simple_interop.py diff --git a/examples/mojo/testing/.gitattributes b/examples/mojo/testing/.gitattributes new file mode 100644 index 0000000000..8f61a8e774 --- /dev/null +++ b/examples/mojo/testing/.gitattributes @@ -0,0 +1,2 @@ +# SCM syntax highlighting +pixi.lock linguist-language=YAML linguist-generated=true diff --git a/examples/testing/.gitignore b/examples/mojo/testing/.gitignore similarity index 100% rename from examples/testing/.gitignore rename to examples/mojo/testing/.gitignore diff --git a/examples/testing/README.md b/examples/mojo/testing/README.md similarity index 100% rename from examples/testing/README.md rename to examples/mojo/testing/README.md diff --git a/examples/testing/mojoproject.toml b/examples/mojo/testing/mojoproject.toml similarity index 100% rename from examples/testing/mojoproject.toml rename to examples/mojo/testing/mojoproject.toml diff --git a/examples/testing/src/example.mojo b/examples/mojo/testing/src/example.mojo similarity index 100% rename from examples/testing/src/example.mojo rename to examples/mojo/testing/src/example.mojo diff --git a/examples/testing/src/my_math/__init__.mojo b/examples/mojo/testing/src/my_math/__init__.mojo similarity index 100% rename from examples/testing/src/my_math/__init__.mojo rename to examples/mojo/testing/src/my_math/__init__.mojo diff --git a/examples/testing/src/my_math/utils.mojo b/examples/mojo/testing/src/my_math/utils.mojo similarity index 100% rename from examples/testing/src/my_math/utils.mojo rename to examples/mojo/testing/src/my_math/utils.mojo diff --git a/examples/testing/test/my_math/test_dec.mojo b/examples/mojo/testing/test/my_math/test_dec.mojo similarity index 100% rename from examples/testing/test/my_math/test_dec.mojo rename to examples/mojo/testing/test/my_math/test_dec.mojo diff --git a/examples/testing/test/my_math/test_inc.mojo b/examples/mojo/testing/test/my_math/test_inc.mojo similarity index 100% rename from examples/testing/test/my_math/test_inc.mojo rename to examples/mojo/testing/test/my_math/test_inc.mojo diff --git a/examples/notebooks/.gitignore b/examples/notebooks/.gitignore new file mode 100644 index 0000000000..eb804ba88a --- /dev/null +++ b/examples/notebooks/.gitignore @@ -0,0 +1,3 @@ +roberta/ +roberta.torchscript +onnx diff --git a/examples/notebooks/README.md b/examples/notebooks/README.md new file mode 100644 index 0000000000..b2c895bb95 --- /dev/null +++ b/examples/notebooks/README.md @@ -0,0 +1,68 @@ +# MAX Jupyter notebooks + +This page explains how to get started with MAX example notebooks, and this +repo directory contains notebooks that demonstrate some of MAX features. + +If you're not familiar with Jupyter notebooks, they're files that allow you to +create documents with live code, equations, visualizations, and explanatory +text. They're basically documents with executable code blocks, making them +great for sharing code experiments and programming tutorials. + +## Get started in VS Code + +Visual Studio Code is a great environment for programming with Jupyter notebooks. +Especially if you're developing with MAX on a remote system, using VS +Code is ideal because it allows you to edit and interact with notebooks on the +remote machine where you've installed MAX. + +All you need is MAX (via Magic) and the Jupyter VS Code extension: + +1. [Install Magic](https://docs.modular.com/magic). + +2. Install [Visual Studio Code](https://code.visualstudio.com/) and the + [Jupyter extension](https://marketplace.visualstudio.com/items?itemName=ms-toolsai.jupyter). + +3. Open any `.ipynb` file in this repo and start running the code. + +## Get started with JupyterLab + +You can also run MAX notebooks in a local instance of JupyterLab. The following +is just a quick setup guide for Linux users, but it might not work with your +system (these instructions don't support remote access to the JupyterLab). For +more details about using JupyterLab, see the complete [JupyterLab installation +guide](https://jupyterlab.readthedocs.io/en/latest/getting_started/installation.html). + +### 1. Launch JupyterLab + +You can use either Magic or conda. + +#### Using Magic + +If you have [`magic`](https://docs.modular.com/magic) you can run the following +command to launch JupyterLab from this directory: + +```sh +magic run jupyter lab +``` + +After a moment, it will open a browser window with JupterLab running. + +#### Using conda + +Create a Conda environment, activate that enviroment, and install JupyterLab. + +``` sh +# Create a Conda environment if you don't have one +conda create -n max-repo +# Activate the environment +conda env update -n max-repo -f environment.yml --prune +# run JupyterLab +conda run -n max-repo jupyter lab +``` + +After a moment, it will open a browser window with JupterLab running. + +### 2. Run the .ipynb notebooks + +The left nav bar should show all the notebooks in this directory. +Open any `.ipynb` file and start running the code. diff --git a/examples/notebooks/gemma2b-python-onnx.ipynb b/examples/notebooks/gemma2b-python-onnx.ipynb new file mode 100644 index 0000000000..16423dcad6 --- /dev/null +++ b/examples/notebooks/gemma2b-python-onnx.ipynb @@ -0,0 +1,425 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Using Gemma-2B with MAX Engine 🏎️ on CPU\n", + "\n", + "**In this notebook we will walk through an example of using [Gemma-2B](https://huggingface.co/google/gemma-2b) model with MAX Engine 🏎️ on CPU and float32. Check out the [roadmap](https://docs.modular.com/max/roadmap) for quantization and the GPU support.**\n", + "\n", + "The Gemma-2B Large Language Model (LLM) is a pretrained generative text model with 2 billion parameters. Generative text models generate the next token iteratively given a sequence of past tokens representing the input prompt plus already generated response tokens.\n", + "\n", + "Thus the underlying transformer model is invoked in each iteration of this loop until we reach the stopping condition (either the maximum number of generated tokens or a token designated as the end).\n", + "\n", + "\n", + "### Requirements\n", + "\n", + "1. Please make sure you have installed `max` as described in our [getting started](https://docs.modular.com/max/get-started/) guide\n", + "2. Valid [huggingface access token](https://huggingface.co/docs/hub/security-tokens)\n", + "3. Gemma-2b is a gated model. Make sure you have accepted the [terms of use](https://huggingface.co/google/gemma-2b) to be able to continue\n", + "4. **The model size is 13G**. Please make sure you have enough disk space to download the model and for the converted ONNX counterpart as we will use them later in this tutorial.\n", + "5. The runtime memory requirement is around **24G** at minimum (skipping the optional part 👇) and **50G** to run all the cells\n", + "\n", + "With all that, we install the required packages as follows" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "!python3 -m pip install -q torch --index-url https://download.pytorch.org/whl/cpu\n", + "!python3 -m pip install -q transformers onnx huggingface_hub" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Huggingface hub login" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import getpass\n", + "from huggingface_hub import login\n", + "\n", + "access_token = getpass.getpass('Enter your Hugging Face Access Token')\n", + "login(token=access_token)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Vanilla transformers\n", + "\n", + "Let's first see how the model generates a response using the vanilla `transformers`" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%time\n", + "\n", + "import torch\n", + "from transformers import AutoTokenizer, AutoModelForCausalLM\n", + "\n", + "PROMPT = \"Why did the chicken cross the road?\"\n", + "hf_path = \"google/gemma-2b\"\n", + "hfmodel = AutoModelForCausalLM.from_pretrained(hf_path)\n", + "hftokenizer = AutoTokenizer.from_pretrained(hf_path)\n", + "hftokenizer.pad_token = hftokenizer.eos_token\n", + "\n", + "# Tokenize the text prompt\n", + "input_ids = hftokenizer(PROMPT, return_tensors=\"pt\", max_length=128, truncation=True)\n", + "\n", + "# Run generation\n", + "out_ids = hfmodel.generate(**input_ids, max_new_tokens=15, do_sample=False)\n", + "\n", + "# De-tokenize the generated response\n", + "response = hftokenizer.batch_decode(out_ids, skip_special_tokens=True)[0][len(PROMPT):]\n", + "print(\"Response:\", response)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Next token generation\n", + "\n", + "Now that we see that the model works, let's try to decompose its `hfmodel.generate` method because we will encounter it later. We should be able to get the same output as before, but by only using `forward` method of the model.\n", + "\n", + "The code below is a simplified version of the actual loop you can find in the transformer's source code. It starts by initializing the current sequense to the given prompt and then generates 10 subsequent tokens - these tokens constitute the response of the model." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from time import time\n", + "from transformers.generation.logits_process import LogitsProcessorList\n", + "\n", + "logits_processor = LogitsProcessorList()\n", + "\n", + "time_start = time()\n", + "current_seq = input_ids.input_ids\n", + "N_TOKENS = 10\n", + "for idx in range(N_TOKENS):\n", + " # Run model's `forward` on the current sequence.\n", + " # 'logits' output would let us determine the next token for this sequence\n", + " outputs = hfmodel(current_seq, return_dict=True).logits\n", + "\n", + " # Get the newly generated next token\n", + " next_token_logits = outputs[:, -1, :]\n", + " next_tokens_scores = logits_processor(current_seq, next_token_logits)\n", + " next_tokens = torch.argmax(next_tokens_scores, dim=-1)\n", + "\n", + " print(hftokenizer.decode(next_tokens), end=' ', flush=True)\n", + "\n", + " # Append the new token to our sequence\n", + " current_seq = torch.cat([current_seq, next_tokens[:, None]], dim=-1)\n", + "\n", + "time_finish = time()\n", + "print(f\"Prompt: {PROMPT}\")\n", + "print(\"Response:\", hftokenizer.batch_decode(current_seq, skip_special_tokens=True)[0][len(PROMPT):])\n", + "print(f\"Tokens per second: {N_TOKENS / (time_finish - time_start):.2f}\\n\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Convert to ONNX with optimum\n", + "\n", + "Great! We were able to see the same response now with using only `forward` method of our model. We're now ready to use MAX Engine 🏎️ inference.\n", + "To do that, we start by getting an ONNX version of the model. The easiest way to do it is to use HuggingFace `optimum` tool which you can install as follows.\n", + "At the moment of writing this notebook, optimum gemma support is unreleased and but is included in the upstream [here](https://github.com/huggingface/optimum/pull/1714)\n", + "which we can get as follows" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "!python3 -m pip install -q git+https://github.com/huggingface/optimum.git@e0cbf7dea2531603ecd0f36dfce0657baa4310ec" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Then the conversion to ONNX. This part can take a while. Also please make sure you've enough disk space." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "!optimum-cli export onnx --model \"google/gemma-2b\" \"./onnx/gemma-2b-onnx\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Optional: Examine the ONNX model\n", + "\n", + "**Caveat: 📢 if you want to run this 👇 part you will need around 50G of memory to be able to continue finishing the notebook. Otherwise, check out the included results below.**" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%time\n", + "import onnx\n", + "\n", + "onnxmodel = onnx.load(\"./onnx/gemma-2b-onnx/model.onnx\")\n", + "\n", + "def print_dims(tensor):\n", + " dims = []\n", + " for dim in tensor.type.tensor_type.shape.dim:\n", + " if dim.HasField(\"dim_value\"):\n", + " dims.append(String(dim.dim_value))\n", + " elif dim.HasField(\"dim_param\"):\n", + " dims.append(String(dim.dim_param))\n", + " print(onnx.TensorProto.DataType.Name(tensor.type.tensor_type.elem_type), end=\" \")\n", + " print(\"[\", \", \".join(dims), \"]\")\n", + "\n", + "print(\"=== Inputs ===\")\n", + "for input_tensor in onnxmodel.graph.input:\n", + " print(input_tensor.name, end=\": \")\n", + " print_dims(input_tensor)\n", + "\n", + "print(\"\\n=== Outputs ===\")\n", + "for output_tensor in onnxmodel.graph.output:\n", + " print(output_tensor.name, end=\": \")\n", + " print_dims(output_tensor)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "```\n", + "=== Inputs ===\n", + "input_ids: INT64 [ batch_size, sequence_length ]\n", + "attention_mask: INT64 [ batch_size, past_sequence_length + 1 ]\n", + "position_ids: INT64 [ batch_size, sequence_length ]\n", + "past_key_values.0.key: FLOAT [ batch_size, 1, past_sequence_length, 256 ]\n", + "past_key_values.0.value: FLOAT [ batch_size, 1, past_sequence_length, 256 ]\n", + "past_key_values.1.key: FLOAT [ batch_size, 1, past_sequence_length, 256 ]\n", + "past_key_values.1.value: FLOAT [ batch_size, 1, past_sequence_length, 256 ]\n", + "past_key_values.2.key: FLOAT [ batch_size, 1, past_sequence_length, 256 ]\n", + "past_key_values.2.value: FLOAT [ batch_size, 1, past_sequence_length, 256 ]\n", + "past_key_values.3.key: FLOAT [ batch_size, 1, past_sequence_length, 256 ]\n", + "past_key_values.3.value: FLOAT [ batch_size, 1, past_sequence_length, 256 ]\n", + "past_key_values.4.key: FLOAT [ batch_size, 1, past_sequence_length, 256 ]\n", + "past_key_values.4.value: FLOAT [ batch_size, 1, past_sequence_length, 256 ]\n", + "past_key_values.5.key: FLOAT [ batch_size, 1, past_sequence_length, 256 ]\n", + "past_key_values.5.value: FLOAT [ batch_size, 1, past_sequence_length, 256 ]\n", + "\n", + "...\n", + "\n", + "=== Outputs ===\n", + "logits: FLOAT [ batch_size, sequence_length, 256000 ]\n", + "present.0.key: FLOAT [ batch_size, 1, past_sequence_length + 1, 256 ]\n", + "present.0.value: FLOAT [ batch_size, 1, past_sequence_length + 1, 256 ]\n", + "present.1.key: FLOAT [ batch_size, 1, past_sequence_length + 1, 256 ]\n", + "present.1.value: FLOAT [ batch_size, 1, past_sequence_length + 1, 256 ]\n", + "present.2.key: FLOAT [ batch_size, 1, past_sequence_length + 1, 256 ]\n", + "present.2.value: FLOAT [ batch_size, 1, past_sequence_length + 1, 256 ]\n", + "present.3.key: FLOAT [ batch_size, 1, past_sequence_length + 1, 256 ]\n", + "present.3.value: FLOAT [ batch_size, 1, past_sequence_length + 1, 256 ]\n", + "present.4.key: FLOAT [ batch_size, 1, past_sequence_length + 1, 256 ]\n", + "present.4.value: FLOAT [ batch_size, 1, past_sequence_length + 1, 256 ]\n", + "present.5.key: FLOAT [ batch_size, 1, past_sequence_length + 1, 256 ]\n", + "present.5.value: FLOAT [ batch_size, 1, past_sequence_length + 1, 256 ]\n", + "\n", + "...\n", + "```" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "It might be quite surprising to see so many inputs and outputs in the model!\n", + "\n", + "\n", + "In short, we have the following inputs:\n", + "* input_ids\n", + "* position_ids\n", + "* attention_mask\n", + "* past_key_values\n", + "\n", + "And the outputs will be:\n", + "* logits\n", + "* present_key_value\n", + "\n", + "**Note** that since ONNX doesn't support dictionaries as a input/output type, the `key_value` is expanded into 18 pairs of individual tensors (18 is the number of attention layers). The number of KV heads is 1 and the size of each key/value vector is 256.\n", + "\n", + "```\n", + "past_key_values.0.key: FLOAT [ batch_size, 1, past_sequence_length, 256 ]\n", + "```\n", + "\n", + "\n", + "\n", + "In order to use this model we will need to slightly modify our glue code to correctly weave all these values from each iteration to the next.\n", + "Specifically, we will need to pass the `key_values` from previous iteration to the current (for the first iteration they are initializes as empty tensors).\n", + "We will also need to correctly fill in `position_ids` and `attention_mask` tensors and update them on each iteration. We will not get into all the details of how exactly all these tensors affect the model behavior and should be used - this is an extremely interesting topic, but it lays beyond the scope of this walkthrough." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## MAX Engine 🏎️\n", + "\n", + "With that we're finally ready to use the MAX Engine 🏎️ for inference.\n", + "\n", + "The code modifications follows our previous approach and is quite minimal. All we need to do is to load the ONNX model (whch can take a while) into an `InferenceSession` object and instead of using the `hfmodel` we will need to use `maxmodel.execute`, and pack the input values into a dictionary." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%time\n", + "\n", + "from max import engine\n", + "# Create an InferenceSession and load the ONNX model\n", + "session = engine.InferenceSession()\n", + "maxmodel = session.load(\"./onnx/gemma-2b-onnx/model.onnx\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can also quickly inspect the input and output metadata that match the ONNX version above" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "for tensor in maxmodel.input_metadata:\n", + " print(f'name: {tensor.name}, shape: {tensor.shape}, dtype: {tensor.dtype}')\n", + "\n", + "for tensor in maxmodel.output_metadata:\n", + " print(f'name: {tensor.name}, shape: {tensor.shape}, dtype: {tensor.dtype}')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here is the how to get the response from our `maxmodel`. The token per second can be up to **2X** faster comparing to the PyTorch version. Note that this tutorial doesn't provide an accurate benchmark. For more, please check out our [performance dashboard](https://performance.modular.com/)." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "inputs = {}\n", + "N_BATCH = 1\n", + "N_LAYERS = 18\n", + "N_HEADS = 1\n", + "KV_LEN = 256\n", + "# Initialize the additional layer to 0 for the first iteration:\n", + "for i in range(N_LAYERS):\n", + " inputs[f\"past_key_values.{i}.key\"] = torch.zeros([N_BATCH, N_HEADS, 0, KV_LEN], dtype=torch.float).numpy()\n", + " inputs[f\"past_key_values.{i}.value\"] = torch.zeros([N_BATCH, N_HEADS, 0, KV_LEN], dtype=torch.float).numpy()\n", + "\n", + "current_seq = input_ids.input_ids\n", + "\n", + "time_start = time()\n", + "for idx in range(N_TOKENS):\n", + " # Prepare inputs dictionary\n", + " inputs[\"input_ids\"] = current_seq.numpy()\n", + " inputs[\"position_ids\"] = torch.arange(inputs[\"input_ids\"].shape[1], dtype=torch.long).unsqueeze(0).numpy()\n", + " inputs[\"attention_mask\"] = torch.ones([1, inputs[\"past_key_values.0.key\"].shape[2] + inputs[\"input_ids\"].shape[1]], dtype=torch.int64).numpy()\n", + "\n", + " # Run the model with MAX engine\n", + " max_outputs = maxmodel.execute(**inputs)\n", + " outputs = torch.from_numpy(max_outputs[\"logits\"])\n", + "\n", + " # Get the newly generated next token\n", + " next_token_logits = outputs[:, -1, :]\n", + " next_tokens_scores = logits_processor(current_seq, next_token_logits)\n", + " next_tokens = torch.argmax(next_tokens_scores, dim=-1)\n", + "\n", + " print(hftokenizer.decode(next_tokens), end=' ', flush=True)\n", + "\n", + " # Append the new token to our sequence\n", + " current_seq = torch.cat([current_seq, next_tokens[:, None]], dim=-1)\n", + "\n", + " # Update the KV cache for the next iteration\n", + " for i in range(N_LAYERS):\n", + " inputs[f\"past_key_values.{i}.key\"] = max_outputs[f\"present.{i}.key\"]\n", + " inputs[f\"past_key_values.{i}.value\"] = max_outputs[f\"present.{i}.value\"]\n", + "\n", + "time_finish = time()\n", + "\n", + "print(f\"Prompt: {PROMPT}\")\n", + "print(\"Response:\", hftokenizer.batch_decode(current_seq.numpy(), skip_special_tokens=True)[0][len(PROMPT):])\n", + "print(f\"Tokens per second: {idx/(time_finish-time_start):.2f}\\n\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "That is it! 🎉\n", + "\n", + "Serving an LLM has historically been not an easy task, but hopefully this example lifts the curtain on how this can be done. MAX Engine 🏎️ doesn't (yet) make this process easier, however, if you've already gone this path with ONNX or TorchScript, switching to MAX should be trivial and bring easy performance wins." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.12" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/examples/notebooks/mistral7b-python-onnx.ipynb b/examples/notebooks/mistral7b-python-onnx.ipynb new file mode 100644 index 0000000000..400a4dae53 --- /dev/null +++ b/examples/notebooks/mistral7b-python-onnx.ipynb @@ -0,0 +1,404 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Using Mistral-7B with MAX Engine 🏎️ on CPU\n", + "\n", + "**In this notebook we will walk through an example of using [Mistral-7B](https://huggingface.co/mistralai/Mistral-7B-v0.1) model with MAX Engine 🏎️ on CPU and float32. Check out the [roadmap](https://docs.modular.com/max/roadmap) for quantization and the GPU support.**\n", + "\n", + "The Mistral-7B-v0.1 Large Language Model (LLM) is a pretrained generative text model with 7 billion parameters. Generative text models generate the next token iteratively given a sequence of past tokens representing the input prompt plus already generated response tokens.\n", + "\n", + "Thus the underlying transformer model is invoked in each iteration of this loop until we reach the stopping condition (either the maximum number of generated tokens or a token designated as the end).\n", + "\n", + "**Caveats:**\n", + "\n", + "* **The model size is 28G**. Please make sure you have enough disk space to download the model and for the converted ONNX counterpart as we will use them later in this tutorial.\n", + "* **The runtime memory requirement is around 65G** to be able finish the notebook and run all the cells.\n", + "\n", + "First, make sure you have installed `max` as described in the [getting started](https://docs.modular.com/max/get-started/) as well as `PyTorch` and `transformers` packages" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "!python3 -m pip install -q torch --index-url https://download.pytorch.org/whl/cpu\n", + "!python3 -m pip install -q transformers onnx" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Vanilla transformers\n", + "\n", + "Let's first see how the model generates a response using the vanilla `transformers`" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%time\n", + "\n", + "import torch\n", + "from transformers import AutoTokenizer, AutoModelForCausalLM\n", + "\n", + "PROMPT = \"Why did the chicken cross the road?\"\n", + "\n", + "hf_path = \"mistralai/Mistral-7B-v0.1\"\n", + "hfmodel = AutoModelForCausalLM.from_pretrained(hf_path)\n", + "hftokenizer = AutoTokenizer.from_pretrained(hf_path)\n", + "hftokenizer.pad_token = hftokenizer.eos_token\n", + "\n", + "# Tokenize the text prompt\n", + "input_ids = hftokenizer(PROMPT, return_tensors=\"pt\", max_length=128, truncation=True).input_ids\n", + "\n", + "# Run generation\n", + "out_ids = hfmodel.generate(input_ids=input_ids, max_new_tokens=15, do_sample=False)\n", + "\n", + "# De-tokenize the generated response\n", + "response = hftokenizer.batch_decode(out_ids.numpy(), skip_special_tokens=True)[0][len(PROMPT):]\n", + "print(\"Response:\", response)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Next token generation\n", + "\n", + "Now that we see that the model works, let's try to decompose its `hfmodel.generate` method because we will encounter it later. We should be able to get the same output as before, but by only using `forward` method of the model.\n", + "\n", + "The code below is a simplified version of the actual loop you can find in the transformer's source code. It starts by initializing the current sequense to the given prompt and then generates 10 subsequent tokens - these tokens constitute the response of the model." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from time import time\n", + "from transformers.generation.logits_process import LogitsProcessorList\n", + "\n", + "logits_processor = LogitsProcessorList()\n", + "\n", + "time_start = time()\n", + "current_seq = input_ids\n", + "N_TOKENS = 10\n", + "for idx in range(N_TOKENS):\n", + " # Run model's `forward` on the current sequence.\n", + " # 'logits' output would let us determine the next token for this sequence\n", + " outputs = hfmodel(current_seq, return_dict=True).logits\n", + "\n", + " # Get the newly generated next token\n", + " next_token_logits = outputs[:, -1, :]\n", + " next_tokens_scores = logits_processor(current_seq, next_token_logits)\n", + " next_tokens = torch.argmax(next_tokens_scores, dim=-1)\n", + "\n", + " print(hftokenizer.decode(next_tokens), end=' ', flush=True)\n", + "\n", + " # Append the new token to our sequence\n", + " current_seq = torch.cat([current_seq, next_tokens[:, None]], dim=-1)\n", + "\n", + "time_finish = time()\n", + "print(f\"Prompt: {PROMPT}\")\n", + "print(\"Response:\", hftokenizer.batch_decode(current_seq.numpy(), skip_special_tokens=True)[0][len(PROMPT):])\n", + "print(f\"Tokens per second: {N_TOKENS / (time_finish - time_start):.2f}\\n\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Convert to ONNX with optimum\n", + "\n", + "Great! We were able to see the same response now with using only `forward` method of our model. We're now ready to use MAX Engine 🏎️ inference.\n", + "To do that, we start by getting an ONNX version of the model. The easiest way to do it is to use HuggingFace `optimum` tool which you can install as follows" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "!python3 -m pip install -q optimum" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Then the conversion to ONNX. This part can take a while. Also please make sure you've enough disk space." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "!optimum-cli export onnx --model \"mistralai/Mistral-7B-v0.1\" \"./onnx/mistral-7b-onnx\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Optional: Examine the ONNX model\n", + "\n", + "**Caveat: 📢 if you want to run this 👇 part you will need around 95G of memory to be able to continue finishing the notebook. Otherwise, check out the included results below.**" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%time\n", + "import onnx\n", + "\n", + "# It will take a while to load in ONNX as well as occupying 28G more memory!\n", + "onnxmodel = onnx.load(\"./onnx/mistral-7b-onnx/model.onnx\")\n", + "\n", + "def print_dims(tensor):\n", + " dims = []\n", + " for dim in tensor.type.tensor_type.shape.dim:\n", + " if dim.HasField(\"dim_value\"):\n", + " dims.append(String(dim.dim_value))\n", + " elif dim.HasField(\"dim_param\"):\n", + " dims.append(String(dim.dim_param))\n", + " print(onnx.TensorProto.DataType.Name(tensor.type.tensor_type.elem_type), end=\" \")\n", + " print(\"[\", \", \".join(dims), \"]\")\n", + "\n", + "print(\"=== Inputs ===\")\n", + "for input_tensor in onnxmodel.graph.input:\n", + " print(input_tensor.name, end=\": \")\n", + " print_dims(input_tensor)\n", + "\n", + "print(\"\\n=== Outputs ===\")\n", + "for output_tensor in onnxmodel.graph.output:\n", + " print(output_tensor.name, end=\": \")\n", + " print_dims(output_tensor)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "```\n", + "=== Inputs ===\n", + "input_ids: INT64 [ batch_size, sequence_length ]\n", + "attention_mask: INT64 [ batch_size, past_sequence_length + 1 ]\n", + "position_ids: INT64 [ batch_size, sequence_length ]\n", + "past_key_values.0.key: FLOAT [ batch_size, 8, past_sequence_length, 128 ]\n", + "past_key_values.0.value: FLOAT [ batch_size, 8, past_sequence_length, 128 ]\n", + "past_key_values.1.key: FLOAT [ batch_size, 8, past_sequence_length, 128 ]\n", + "past_key_values.1.value: FLOAT [ batch_size, 8, past_sequence_length, 128 ]\n", + "past_key_values.2.key: FLOAT [ batch_size, 8, past_sequence_length, 128 ]\n", + "past_key_values.2.value: FLOAT [ batch_size, 8, past_sequence_length, 128 ]\n", + "past_key_values.3.key: FLOAT [ batch_size, 8, past_sequence_length, 128 ]\n", + "past_key_values.3.value: FLOAT [ batch_size, 8, past_sequence_length, 128 ]\n", + "past_key_values.4.key: FLOAT [ batch_size, 8, past_sequence_length, 128 ]\n", + "past_key_values.4.value: FLOAT [ batch_size, 8, past_sequence_length, 128 ]\n", + "past_key_values.5.key: FLOAT [ batch_size, 8, past_sequence_length, 128 ]\n", + "past_key_values.5.value: FLOAT [ batch_size, 8, past_sequence_length, 128 ]\n", + "\n", + "...\n", + "\n", + "=== Outputs ===\n", + "logits: FLOAT [ batch_size, sequence_length, 32000 ]\n", + "present.0.key: FLOAT [ batch_size, 8, past_sequence_length + 1, 128 ]\n", + "present.0.value: FLOAT [ batch_size, 8, past_sequence_length + 1, 128 ]\n", + "present.1.key: FLOAT [ batch_size, 8, past_sequence_length + 1, 128 ]\n", + "present.1.value: FLOAT [ batch_size, 8, past_sequence_length + 1, 128 ]\n", + "present.2.key: FLOAT [ batch_size, 8, past_sequence_length + 1, 128 ]\n", + "present.2.value: FLOAT [ batch_size, 8, past_sequence_length + 1, 128 ]\n", + "present.3.key: FLOAT [ batch_size, 8, past_sequence_length + 1, 128 ]\n", + "present.3.value: FLOAT [ batch_size, 8, past_sequence_length + 1, 128 ]\n", + "present.4.key: FLOAT [ batch_size, 8, past_sequence_length + 1, 128 ]\n", + "present.4.value: FLOAT [ batch_size, 8, past_sequence_length + 1, 128 ]\n", + "present.5.key: FLOAT [ batch_size, 8, past_sequence_length + 1, 128 ]\n", + "present.5.value: FLOAT [ batch_size, 8, past_sequence_length + 1, 128 ]\n", + "\n", + "...\n", + "```" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "It might be quite surprising to see so many inputs and outputs in the model!\n", + "\n", + "To decode what they all mean and how they should be used we will need to look into the [documentation of the MistralModel](https://huggingface.co/docs/transformers/v4.38.2/en/model_doc/mistral#transformers.MistralModel).\n", + "\n", + "In short, we have the following inputs:\n", + "* input_ids\n", + "* position_ids\n", + "* attention_mask\n", + "* past_key_values\n", + "\n", + "And the outputs will be:\n", + "* logits\n", + "* present_key_value\n", + "\n", + "The `past_key_values.n.key` and `past_key_values.n.value` represents cached states from previous tokens in the sequence to avoid redundant recalculations, thus speeding up the generation process.\n", + "\n", + "**Note** that since ONNX doesn't support dictionaries as a input/output type, the `key_value` is expanded into 32 pairs of individual tensors (32 is the number of attention layers). The number of KV heads is 8 which are part of its [Grouped Query Attention (GQA)](https://arxiv.org/abs/2305.13245) mechanism. The GQA mechanism allows the model to achieve faster inference times by optimizing the attention mechanism.\n", + "\n", + "```\n", + "past_key_values.0.key: FLOAT [ batch_size, 8, past_sequence_length, 128 ]\n", + "```\n", + "\n", + "Moreover, the size of each key/value vector is 128.\n", + "\n", + "In order to use this model we will need to slightly modify our glue code to correctly weave all these values from each iteration to the next.\n", + "Specifically, we will need to pass the `key_values` from previous iteration to the current (for the first iteration they are initializes as empty tensors).\n", + "We will also need to correctly fill in `position_ids` and `attention_mask` tensors and update them on each iteration. We will not get into all the details of how exactly all these tensors affect the model behavior and should be used - this is an extremely interesting topic, but it is beyond the scope of this walkthrough." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## MAX Engine 🏎️\n", + "\n", + "With that we're finally ready to use the MAX Engine 🏎️ for inference.\n", + "\n", + "The code modifications follows our previous approach and is quite minimal. All we need to do is to load the ONNX model (whch can take a while) into an `InferenceSession` object and instead of using the `hfmodel` we will need to use `maxmodel.execute`, and pack the input values into a dictionary." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%time\n", + "\n", + "from max import engine\n", + "# Create an InferenceSession and load the ONNX model\n", + "session = engine.InferenceSession()\n", + "maxmodel = session.load(\"./onnx/mistral-7b-onnx/model.onnx\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can also quickly inspect the input and output metadata that match the ONNX version above" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "for tensor in maxmodel.input_metadata:\n", + " print(f'name: {tensor.name}, shape: {tensor.shape}, dtype: {tensor.dtype}')\n", + "\n", + "for tensor in maxmodel.output_metadata:\n", + " print(f'name: {tensor.name}, shape: {tensor.shape}, dtype: {tensor.dtype}')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here is the how to get the response from our `maxmodel`. The token per second can be up to **2X** faster comparing to the PyTorch version. Note that this tutorial doesn't provide an accurate benchmark. For more, please check out our [performance dashboard](https://performance.modular.com/)." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "inputs = {}\n", + "N_BATCH = 1\n", + "N_LAYERS = 32\n", + "N_HEADS = 8\n", + "KV_LEN = 128\n", + "# Initialize the additional layer to 0 for the first iteration:\n", + "for i in range(N_LAYERS):\n", + " inputs[f\"past_key_values.{i}.key\"] = torch.zeros([N_BATCH, N_HEADS, 0, KV_LEN], dtype=torch.float).numpy()\n", + " inputs[f\"past_key_values.{i}.value\"] = torch.zeros([N_BATCH, N_HEADS, 0, KV_LEN], dtype=torch.float).numpy()\n", + "\n", + "current_seq = input_ids\n", + "\n", + "time_start = time()\n", + "for idx in range(N_TOKENS):\n", + " # Prepare inputs dictionary\n", + " inputs[\"input_ids\"] = current_seq.numpy()\n", + " inputs[\"position_ids\"] = torch.arange(inputs[\"input_ids\"].shape[1], dtype=torch.long).unsqueeze(0).numpy()\n", + " inputs[\"attention_mask\"] = torch.ones([1, inputs[\"past_key_values.0.key\"].shape[2] + inputs[\"input_ids\"].shape[1]], dtype=torch.int64).numpy()\n", + "\n", + " # Run the model with MAX engine\n", + " max_outputs = maxmodel.execute(**inputs)\n", + " outputs = torch.from_numpy(max_outputs[\"logits\"])\n", + "\n", + " # Get the newly generated next token\n", + " next_token_logits = outputs[:, -1, :]\n", + " next_tokens_scores = logits_processor(current_seq, next_token_logits)\n", + " next_tokens = torch.argmax(next_tokens_scores, dim=-1)\n", + "\n", + " print(hftokenizer.decode(next_tokens), end=' ', flush=True)\n", + "\n", + " # Append the new token to our sequence\n", + " current_seq = torch.cat([current_seq, next_tokens[:, None]], dim=-1)\n", + "\n", + " # Update the KV cache for the next iteration\n", + " for i in range(N_LAYERS):\n", + " inputs[f\"past_key_values.{i}.key\"] = max_outputs[f\"present.{i}.key\"]\n", + " inputs[f\"past_key_values.{i}.value\"] = max_outputs[f\"present.{i}.value\"]\n", + "\n", + "time_finish = time()\n", + "\n", + "print(f\"Prompt: {PROMPT}\")\n", + "print(\"Response:\", hftokenizer.batch_decode(current_seq.numpy(), skip_special_tokens=True)[0][len(PROMPT):])\n", + "print(f\"Tokens per second: {idx/(time_finish-time_start):.2f}\\n\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "That is it! 🎉\n", + "\n", + "Serving an LLM has historically been not an easy task, but hopefully this example lifts the curtain on how this can be done. MAX Engine 🏎️ doesn't (yet) make this process easier, however, if you've already gone this path with ONNX or TorchScript, switching to MAX should be trivial and bring easy performance wins." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "venv", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.13" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/examples/notebooks/pixi.toml b/examples/notebooks/pixi.toml new file mode 100644 index 0000000000..a6ad3f7694 --- /dev/null +++ b/examples/notebooks/pixi.toml @@ -0,0 +1,13 @@ +[project] +name = "MAX notebooks" +version = "1.0.0" +description = "Environment for running JupyterLab" +authors = ["Modular "] +channels = ["conda-forge", "https://conda.modular.com/max-nightly/"] +platforms = ["osx-arm64", "linux-aarch64", "linux-64"] + +[dependencies] +python = ">=3.9,<3.13" +max = "*" +pip = ">=24.0,<25" +jupyterlab = ">=4.2.5,<5" diff --git a/examples/notebooks/roberta-python-pytorch.ipynb b/examples/notebooks/roberta-python-pytorch.ipynb new file mode 100644 index 0000000000..683efa156e --- /dev/null +++ b/examples/notebooks/roberta-python-pytorch.ipynb @@ -0,0 +1,389 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "*Copyright 2025 Modular, Inc: Licensed under the Apache License v2.0 with LLVM Exceptions.*" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# MAX Engine and PyTorch model example" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The [Python API for MAX Engine](https://docs.modular.com/engine/reference/python/engine) enables you\n", + "to upgrade your runtime performance for PyTorch, TensorFlow, and ONNX models,\n", + "on a wide range of hardware, with just three lines of code (not counting the\n", + "import):\n", + "\n", + "```python\n", + "from max import engine\n", + "\n", + "# Load your model:\n", + "session = engine.InferenceSession()\n", + "model = session.load(model_path)\n", + "\n", + "# Prepare the inputs, then run an inference:\n", + "outputs = model.execute(**inputs)\n", + "\n", + "# Process the output here.\n", + "```\n", + "\n", + "That's all you need! Everything else is the usual code to prepare your\n", + "inputs and process the outputs.\n", + "\n", + "But, it's always nice to see a fully working example. So the\n", + "rest of this page shows how to run an inference using a version of\n", + "[RoBERTa from Cardiff\n", + "NLP](https://huggingface.co/cardiffnlp/twitter-roberta-base-emotion-multilabel-latest),\n", + "which is a language model trained on tweets to perform sentiment analysis.\n", + "\n", + "This example uses is a PyTorch model (which must be converted to TorchScript\n", + "format), and it's just as easy to load a model from ONNX or TensorFlow (in\n", + "SavedModel format)." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Install the MAX Engine Python package" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Naturally, you first need to install the `max` Python package.\n", + "This package is not hosted in a package repository (PyPI), and can only be\n", + "installed with the `modular` CLI tool.\n", + "\n", + "For instructions, see\n", + "[Get started with MAX Engine](https://docs.modular.com/max/get-started)." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Install the MAX Engine Python package\n", + "!python3 -m pip install -q --find-links \"$(modular config max.path)/wheels\" max-engine\n", + "# Install other packages\n", + "!python3 -m pip install -q transformers\n", + "!python3 -m pip install -q torch --index-url https://download.pytorch.org/whl/cpu" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Import Python modules" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To start coding, we need some libraries that help us get the model and process\n", + "the input/output data.\n", + "\n", + "NOTE: Make sure you have these packages installed:\n", + "\n", + "```sh\n", + "python3 -m pip install torch transformers\n", + "```" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# suppress extraneous logging\n", + "import os\n", + "os.environ[\"TRANSFORMERS_VERBOSITY\"] = \"critical\"\n", + "os.environ[\"TOKENIZERS_PARALLELISM\"] = \"false\"" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from pathlib import Path\n", + "\n", + "import torch\n", + "from transformers import AutoTokenizer, AutoModelForSequenceClassification\n", + "\n", + "from max import engine\n", + "from max.dtype import DType" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Download the model" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now we download the [RoBERTa model](https://huggingface.co/cardiffnlp/twitter-roberta-base-emotion-multilabel-latest)\n", + "from HuggingFace and save it in the PyTorch TorchScript format." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "HF_MODEL_NAME = \"cardiffnlp/twitter-roberta-base-emotion-multilabel-latest\"\n", + "hf_model = AutoModelForSequenceClassification.from_pretrained(HF_MODEL_NAME)\n", + "hf_model.config.return_dict = False\n", + "\n", + "# Converting model to TorchScript\n", + "model_path = Path(\"roberta.torchscript\")\n", + "batch = 1\n", + "seqlen = 128\n", + "inputs = {\n", + " \"input_ids\": torch.zeros((batch, seqlen), dtype=torch.int64),\n", + " \"attention_mask\": torch.zeros((batch, seqlen), dtype=torch.int64),\n", + "}\n", + "with torch.no_grad():\n", + " traced_model = torch.jit.trace(\n", + " hf_model, example_kwarg_inputs=inputs, strict=False\n", + " )\n", + "\n", + "torch.jit.save(traced_model, model_path)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Load and compile the model" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Then, we load and compile the model in MAX Engine using an\n", + "[`InferenceSession`](https://docs.modular.com/engine/reference/python/engine.html#max.engine.InferenceSession).\n", + "\n", + "When loading a TorchScript model, you need to specify the shape and data type\n", + "for all input tensors. This is required because TorchScript models do not\n", + "include input spec annotations (unlike TensorFlow and ONNX models), which MAX\n", + "Engine needs to compile the model.\n", + "\n", + "To define the input specs, you need to create a list of\n", + "[`TorchInputSpec`](https://docs.modular.com/engine/reference/python/engine#max.engine.TorchInputSpec)\n", + "objects (one item for each input), and pass the list to\n", + "[`InferenceSession.load`](https://docs.modular.com/engine/reference/python/engine.html#max.engine.InferenceSession.load).\n", + "For example, here's how to declare the input specs for the RoBERTa TorchScript\n", + "model:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# We use the same `inputs` that we used above to trace the model\n", + "input_spec_list = [\n", + " engine.TorchInputSpec(shape=tensor.size(), dtype=DType.int64)\n", + " for tensor in inputs.values()\n", + "]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now we can load the model: (If you're loading a TensorFlow SavedModel or ONNX\n", + "model, then you don't need the `input_specs` argument.)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "session = engine.InferenceSession()\n", + "model = session.load(model_path, input_specs=input_spec_list)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "That's two lines down, just one to go.\n", + "\n", + "NOTE: The first time you load a model, it might take a few minutes to compile it,\n", + "but this up-front cost will pay dividends in latency savings provided by\n", + "our next-generation graph compiler." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Prepare the input" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This part is your usual pre-processing. \n", + "For the RoBERTa model, we need to process the text input into a sequence of tokens, so we'll do that with [`transformers.AutoTokenizer`](https://huggingface.co/docs/transformers/main/en/model_doc/auto#transformers.AutoTokenizer).\n", + "\n", + "First, let's take a look at the model's inputs:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "for tensor in model.input_metadata:\n", + " print(f'name: {tensor.name}, shape: {tensor.shape}, dtype: {tensor.dtype}')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This tells us the model needs 2 inputs. (If your model shows a dimension size\n", + "is `None`, that means it's dynamic.)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "INPUT=\"There are many exciting developments in the field of AI Infrastructure!\"\n", + "\n", + "tokenizer = AutoTokenizer.from_pretrained(HF_MODEL_NAME)\n", + "inputs = tokenizer(INPUT, return_tensors=\"pt\", padding='max_length', truncation=True, max_length=seqlen)\n", + "print(inputs)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Run an inference" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now for that third line of code, we pass the inputs to\n", + "[`execute()`](https://docs.modular.com/engine/reference/python/engine#max.engine.Model.execute). This\n", + "function requires all inputs as keyword arguments, so we'll\n", + "unpack the `inputs` dictionary as we pass it through:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "outputs = model.execute(**inputs)\n", + "print(outputs)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "That's it!\n", + "\n", + "The output from [`execute()`](https://docs.modular.com/engine/reference/python/engine.html#max.engine.Model.execute) is a dictionary of output tensors, each in an `ndarray`. Let's now figure out what they say." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Process the outputs" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Again, we'll use some help from the [transformers library](https://huggingface.co/docs/transformers/main/en/model_doc/roberta#transformers.TFRobertaForSequenceClassification) to convert the output ids to labels:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Extract class prediction from output\n", + "predicted_class_id = outputs[\"result0\"].argmax(axis=-1)[0]\n", + "classification = hf_model.config.id2label[predicted_class_id]\n", + "\n", + "print(f\"The sentiment is: {classification}\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Ta-da! 🎉\n", + "\n", + "If you're running this notebook yourself, beware that this notebook does not\n", + "illustrate MAX Engine's runtime performance. For actual benchmark results,\n", + "check out our [performance dashboard](https://performance.modular.com).\n", + "\n", + "For more details about the inferencing API, see the [Python API reference](https://docs.modular.com/max/api/python/engine)." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.12" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/examples/offline-inference/README.md b/examples/offline-inference/README.md new file mode 100644 index 0000000000..5362bdbbb8 --- /dev/null +++ b/examples/offline-inference/README.md @@ -0,0 +1,10 @@ +# Using MAX pipelines to run LLMs offline + +Examples of using the MAX stack to directly query LLMs from python +without spinning up a webserver. + +A single Magic command runs the example: + +```sh +magic run basic +``` diff --git a/examples/offline-inference/basic.py b/examples/offline-inference/basic.py new file mode 100644 index 0000000000..028cbf6820 --- /dev/null +++ b/examples/offline-inference/basic.py @@ -0,0 +1,52 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from __future__ import annotations + +import os + +from max.entrypoints import LLM +from max.pipelines import PipelineConfig +from max.pipelines.architectures import register_all_models +from max.serve.config import Settings + + +def main(): + register_all_models() + + model_path = "modularai/Llama-3.1-8B-Instruct-GGUF" + print(f"Loading model: {model_path}") + pipeline_config = PipelineConfig(model_path) + settings = Settings() + llm = LLM(settings, pipeline_config) + + prompts = [ + "In the beginning, there was", + "I believe the meaning of life is", + "The fastest way to learn python is", + ] + + print("Generating responses...") + responses = llm.generate(prompts, max_new_tokens=50) + + for i, (prompt, response) in enumerate(zip(prompts, responses)): + print(f"========== Response {i} ==========") + print(prompt + response) + print() + + +if __name__ == "__main__": + if directory := os.getenv("BUILD_WORKSPACE_DIRECTORY"): + os.chdir(directory) + + main() diff --git a/examples/offline-inference/pixi.toml b/examples/offline-inference/pixi.toml new file mode 100644 index 0000000000..3115b4596d --- /dev/null +++ b/examples/offline-inference/pixi.toml @@ -0,0 +1,14 @@ +[project] +authors = ["Modular "] +channels = ["conda-forge", "https://conda.modular.com/max-nightly/"] +description = "Examples exercising the max stack offline and in python" +name = "Python Offline Inference Examples" +platforms = ["osx-arm64", "linux-aarch64", "linux-64"] +version = "0.1.0" + +[tasks] +basic = "python basic.py" + +[dependencies] +python = ">=3.9,<3.13" +max-pipelines = "*" diff --git a/magic.lock b/magic.lock deleted file mode 100644 index ebf11b183f..0000000000 --- a/magic.lock +++ /dev/null @@ -1,2197 +0,0 @@ -version: 6 -environments: - default: - channels: - - url: https://conda.anaconda.org/conda-forge/ - - url: https://conda.modular.com/max-nightly/ - packages: - linux-64: - - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2025.1.31-hbcca054_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-31_h59b9bed_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-31_he106b2a_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h767d61c_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hf1ad2bd_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h767d61c_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-31_h7ac8fdf_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.29-pthreads_h94d23a6_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libsentencepiece-0.2.0-h8e10757_10.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.49.1-hee588c1_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-h8f9b012_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/lit-19.1.7-pyhd8ed1ab_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022713-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022713-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022713-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022713-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022713-release.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-h2d0b736_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.1-h7b32b05_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.9-h9e4cc4f_0_cpython.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.1-py312hbf22597_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-0.2.0-hc8f76dd_10.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-python-0.2.0-py312hb6b8a2b_10.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-spm-0.2.0-h8e10757_10.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - linux-aarch64: - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h68df207_7.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2025.1.31-hcefe29a_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/keyutils-1.6.1-h4e544f5_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/krb5-1.21.3-h50a48e9_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h18dbdb1_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-31_h1a9f1db_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-31_hab92f65_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20250104-pl5321h976ea20_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.6.4-h5ad3122_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.4.6-he21f813_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-14.2.0-he277a41_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-14.2.0-he9431aa_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-31_h411afd4_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.4-h86ecc28_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.29-pthreads_h9d3fd7e_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.3-h44a3b7b_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsentencepiece-0.2.0-h6164ad9_10.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.20-h68df207_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.49.1-h5eb1b54_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/lit-19.1.7-pyhd8ed1ab_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022713-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022713-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022713-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022713-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022713-release.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-ha32ae93_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.1-hd08dc88_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.9-h1683364_0_cpython.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.12-5_cp312.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyzmq-26.2.1-py312h2427ae1_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8382b9d_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-0.2.0-h6c1b121_10.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-python-0.2.0-py312h197ff68_10.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-spm-0.2.0-h6164ad9_10.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py312h52516f5_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zeromq-4.3.5-h5efb499_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - osx-arm64: - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2025.1.31-hf0a4a13_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_h07bc746_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-31_h10e41b3_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-31_hb3479ef_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.4-h286801f_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-31_hc9a63f6_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.4-h39f12f2_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.29-openmp_hf332438_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.3-h3bd63a1_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsentencepiece-0.2.0-he13a0af_10.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.1-h3f77e49_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/lit-19.1.7-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022713-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022713-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022713-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022713-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022713-release.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.1-h81ee809_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.9-hc22306f_0_cpython.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-5_cp312.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.1-py312hf4875e0_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-0.2.0-h22a84ea_10.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-python-0.2.0-py312h155166a_10.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-spm-0.2.0-he13a0af_10.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda -packages: -- conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 - sha256: fe51de6107f9edc7aa4f786a70f4a883943bc9d39b3bb7307c04c41410990726 - md5: d7c89558ba9fa0495403155b64376d81 - arch: x86_64 - platform: linux - license: None - size: 2562 - timestamp: 1578324546067 -- conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 - build_number: 16 - sha256: fbe2c5e56a653bebb982eda4876a9178aedfc2b545f25d0ce9c4c0b508253d22 - md5: 73aaf86a425cc6e73fcf236a5a46396d - depends: - - _libgcc_mutex 0.1 conda_forge - - libgomp >=7.5.0 - constrains: - - openmp_impl 9999 - arch: x86_64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 23621 - timestamp: 1650670423406 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2 - build_number: 16 - sha256: 3702bef2f0a4d38bd8288bbe54aace623602a1343c2cfbefd3fa188e015bebf0 - md5: 6168d71addc746e8f2b8d57dfd2edcea - depends: - - libgomp >=7.5.0 - constrains: - - openmp_impl 9999 - arch: aarch64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 23712 - timestamp: 1650670790230 -- conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda - sha256: 5ced96500d945fb286c9c838e54fa759aa04a7129c59800f0846b4335cee770d - md5: 62ee74e96c5ebb0af99386de58cf9553 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc-ng >=12 - arch: x86_64 - platform: linux - license: bzip2-1.0.6 - license_family: BSD - size: 252783 - timestamp: 1720974456583 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h68df207_7.conda - sha256: 2258b0b33e1cb3a9852d47557984abb6e7ea58e3d7f92706ec1f8e879290c4cb - md5: 56398c28220513b9ea13d7b450acfb20 - depends: - - libgcc-ng >=12 - arch: aarch64 - platform: linux - license: bzip2-1.0.6 - license_family: BSD - size: 189884 - timestamp: 1720974504976 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda - sha256: adfa71f158cbd872a36394c56c3568e6034aa55c623634b37a4836bd036e6b91 - md5: fc6948412dbbbe9a4c9ddbbcfe0a79ab - depends: - - __osx >=11.0 - arch: arm64 - platform: osx - license: bzip2-1.0.6 - license_family: BSD - size: 122909 - timestamp: 1720974522888 -- conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2025.1.31-hbcca054_0.conda - sha256: bf832198976d559ab44d6cdb315642655547e26d826e34da67cbee6624cda189 - md5: 19f3a56f68d2fd06c516076bff482c52 - arch: x86_64 - platform: linux - license: ISC - size: 158144 - timestamp: 1738298224464 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2025.1.31-hcefe29a_0.conda - sha256: 66c6408ee461593cfdb2d78d82e6ed74d04a04ccb51df3ef8a5f35148c9c6eec - md5: 462cb166cd2e26a396f856510a3aff67 - arch: aarch64 - platform: linux - license: ISC - size: 158290 - timestamp: 1738299057652 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2025.1.31-hf0a4a13_0.conda - sha256: 7e12816618173fe70f5c638b72adf4bfd4ddabf27794369bb17871c5bb75b9f9 - md5: 3569d6a9141adc64d2fe4797f3289e06 - arch: arm64 - platform: osx - license: ISC - size: 158425 - timestamp: 1738298167688 -- conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda - sha256: c920d23cd1fcf565031c679adb62d848af60d6fbb0edc2d50ba475cea4f0d8ab - md5: f22f4d4970e09d68a10b922cbb0408d3 - depends: - - __unix - - python >=3.9 - license: BSD-3-Clause - license_family: BSD - size: 84705 - timestamp: 1734858922844 -- conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - sha256: ab29d57dc70786c1269633ba3dff20288b81664d3ff8d21af995742e2bb03287 - md5: 962b9857ee8e7018c22f2776ffa0b2d7 - depends: - - python >=3.9 - license: BSD-3-Clause - license_family: BSD - size: 27011 - timestamp: 1733218222191 -- conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda - sha256: 598951ebdb23e25e4cec4bbff0ae369cec65ead80b50bc08b441d8e54de5cf03 - md5: f4b39bf00c69f56ac01e020ebfac066c - depends: - - python >=3.9 - - zipp >=0.5 - license: Apache-2.0 - license_family: APACHE - size: 29141 - timestamp: 1737420302391 -- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - sha256: 19d8bd5bb2fde910ec59e081eeb59529491995ce0d653a5209366611023a0b3a - md5: 4ebae00eae9705b0c3d6d1018a81d047 - depends: - - importlib-metadata >=4.8.3 - - jupyter_core >=4.12,!=5.0.* - - python >=3.9 - - python-dateutil >=2.8.2 - - pyzmq >=23.0 - - tornado >=6.2 - - traitlets >=5.3 - license: BSD-3-Clause - license_family: BSD - size: 106342 - timestamp: 1733441040958 -- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - sha256: 732b1e8536bc22a5a174baa79842d79db2f4956d90293dd82dc1b3f6099bcccd - md5: 0a2980dada0dd7fd0998f0342308b1b1 - depends: - - __unix - - platformdirs >=2.5 - - python >=3.8 - - traitlets >=5.3 - license: BSD-3-Clause - license_family: BSD - size: 57671 - timestamp: 1727163547058 -- conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 - sha256: 150c05a6e538610ca7c43beb3a40d65c90537497a4f6a5f4d15ec0451b6f5ebb - md5: 30186d27e2c9fa62b45fb1476b7200e3 - depends: - - libgcc-ng >=10.3.0 - arch: x86_64 - platform: linux - license: LGPL-2.1-or-later - size: 117831 - timestamp: 1646151697040 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/keyutils-1.6.1-h4e544f5_0.tar.bz2 - sha256: 6d4233d97a9b38acbb26e1268bcf8c10a8e79c2aed7e5a385ec3769967e3e65b - md5: 1f24853e59c68892452ef94ddd8afd4b - depends: - - libgcc-ng >=10.3.0 - arch: aarch64 - platform: linux - license: LGPL-2.1-or-later - size: 112327 - timestamp: 1646166857935 -- conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda - sha256: 99df692f7a8a5c27cd14b5fb1374ee55e756631b9c3d659ed3ee60830249b238 - md5: 3f43953b7d3fb3aaa1d0d0723d91e368 - depends: - - keyutils >=1.6.1,<2.0a0 - - libedit >=3.1.20191231,<3.2.0a0 - - libedit >=3.1.20191231,<4.0a0 - - libgcc-ng >=12 - - libstdcxx-ng >=12 - - openssl >=3.3.1,<4.0a0 - arch: x86_64 - platform: linux - license: MIT - license_family: MIT - size: 1370023 - timestamp: 1719463201255 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/krb5-1.21.3-h50a48e9_0.conda - sha256: 0ec272afcf7ea7fbf007e07a3b4678384b7da4047348107b2ae02630a570a815 - md5: 29c10432a2ca1472b53f299ffb2ffa37 - depends: - - keyutils >=1.6.1,<2.0a0 - - libedit >=3.1.20191231,<3.2.0a0 - - libedit >=3.1.20191231,<4.0a0 - - libgcc-ng >=12 - - libstdcxx-ng >=12 - - openssl >=3.3.1,<4.0a0 - arch: aarch64 - platform: linux - license: MIT - license_family: MIT - size: 1474620 - timestamp: 1719463205834 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda - sha256: 4442f957c3c77d69d9da3521268cad5d54c9033f1a73f99cde0a3658937b159b - md5: c6dc8a0fdec13a0565936655c33069a1 - depends: - - __osx >=11.0 - - libcxx >=16 - - libedit >=3.1.20191231,<3.2.0a0 - - libedit >=3.1.20191231,<4.0a0 - - openssl >=3.3.1,<4.0a0 - arch: arm64 - platform: osx - license: MIT - license_family: MIT - size: 1155530 - timestamp: 1719463474401 -- conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_4.conda - sha256: db73f38155d901a610b2320525b9dd3b31e4949215c870685fd92ea61b5ce472 - md5: 01f8d123c96816249efd255a31ad7712 - depends: - - __glibc >=2.17,<3.0.a0 - constrains: - - binutils_impl_linux-64 2.43 - arch: x86_64 - platform: linux - license: GPL-3.0-only - license_family: GPL - size: 671240 - timestamp: 1740155456116 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_4.conda - sha256: 016832a70b0aa97e1c4e47e23c00b0c34def679de25146736df353199f684f0d - md5: 80c9ad5e05e91bb6c0967af3880c9742 - constrains: - - binutils_impl_linux-aarch64 2.43 - arch: aarch64 - platform: linux - license: GPL-3.0-only - license_family: GPL - size: 699058 - timestamp: 1740155620594 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda - sha256: 143a586aa67d50622ef703de57b9d43f44945836d6568e0e7aa174bd8c45e0d4 - md5: 488f260ccda0afaf08acb286db439c2f - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libstdcxx >=13 - constrains: - - libabseil-static =20240722.0=cxx17* - - abseil-cpp =20240722.0 - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 1311599 - timestamp: 1736008414161 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h18dbdb1_4.conda - sha256: bb6c5fb3b8de5f90735c5252b57efb3c268ee222c755569dac18065f05147670 - md5: 633b9fe454ffea2aaf29e191d946a83b - depends: - - libgcc >=13 - - libstdcxx >=13 - constrains: - - abseil-cpp =20240722.0 - - libabseil-static =20240722.0=cxx17* - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 1334844 - timestamp: 1736008472455 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_h07bc746_4.conda - sha256: 05fa5e5e908962b9c5aba95f962e2ca81d9599c4715aebe5e4ddb72b309d1770 - md5: c2d95bd7aa8d564a9bd7eca5e571a5b3 - depends: - - __osx >=11.0 - - libcxx >=18 - constrains: - - libabseil-static =20240722.0=cxx17* - - abseil-cpp =20240722.0 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: Apache - size: 1178260 - timestamp: 1736008642885 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-31_h59b9bed_openblas.conda - build_number: 31 - sha256: 9839fc4ac0cbb0aa3b9eea520adfb57311838959222654804e58f6f2d1771db5 - md5: 728dbebd0f7a20337218beacffd37916 - depends: - - libopenblas >=0.3.29,<0.3.30.0a0 - - libopenblas >=0.3.29,<1.0a0 - constrains: - - liblapacke =3.9.0=31*_openblas - - liblapack =3.9.0=31*_openblas - - blas =2.131=openblas - - mkl <2025 - - libcblas =3.9.0=31*_openblas - arch: x86_64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 16859 - timestamp: 1740087969120 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-31_h1a9f1db_openblas.conda - build_number: 31 - sha256: 67c9c81dd0444ecc712124034d9f74186ca82fd770b3df46b1a68564461c6a1a - md5: 48bd5bf15ccf3e409840be9caafc0ad5 - depends: - - libopenblas >=0.3.29,<0.3.30.0a0 - - libopenblas >=0.3.29,<1.0a0 - constrains: - - liblapack =3.9.0=31*_openblas - - blas =2.131=openblas - - libcblas =3.9.0=31*_openblas - - mkl <2025 - - liblapacke =3.9.0=31*_openblas - arch: aarch64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 16915 - timestamp: 1740087911042 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-31_h10e41b3_openblas.conda - build_number: 31 - sha256: 369586e7688b59b4f92c709b99d847d66d4d095425db327dd32ee5e6ab74697f - md5: 39b053da5e7035c6592102280aa7612a - depends: - - libopenblas >=0.3.29,<0.3.30.0a0 - - libopenblas >=0.3.29,<1.0a0 - constrains: - - liblapacke =3.9.0=31*_openblas - - libcblas =3.9.0=31*_openblas - - blas =2.131=openblas - - mkl <2025 - - liblapack =3.9.0=31*_openblas - arch: arm64 - platform: osx - license: BSD-3-Clause - license_family: BSD - size: 17123 - timestamp: 1740088119350 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-31_he106b2a_openblas.conda - build_number: 31 - sha256: ede8545011f5b208b151fe3e883eb4e31d495ab925ab7b9ce394edca846e0c0d - md5: abb32c727da370c481a1c206f5159ce9 - depends: - - libblas 3.9.0 31_h59b9bed_openblas - constrains: - - liblapacke =3.9.0=31*_openblas - - liblapack =3.9.0=31*_openblas - - blas =2.131=openblas - arch: x86_64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 16796 - timestamp: 1740087984429 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-31_hab92f65_openblas.conda - build_number: 31 - sha256: f0457a1d2982f0a28bfbadaa02621677c324e88f7c8198c24fb3e3214c468dba - md5: 6b81dbae56a519f1ec2f25e0ee2f4334 - depends: - - libblas 3.9.0 31_h1a9f1db_openblas - constrains: - - liblapack =3.9.0=31*_openblas - - blas =2.131=openblas - - liblapacke =3.9.0=31*_openblas - arch: aarch64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 16824 - timestamp: 1740087917500 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-31_hb3479ef_openblas.conda - build_number: 31 - sha256: f237486cc9118d09d0f3ff8820280de34365f98ee7b7dc5ab923b04c7cbf25a5 - md5: 7353c2bf0e90834cb70545671996d871 - depends: - - libblas 3.9.0 31_h10e41b3_openblas - constrains: - - liblapacke =3.9.0=31*_openblas - - blas =2.131=openblas - - liblapack =3.9.0=31*_openblas - arch: arm64 - platform: osx - license: BSD-3-Clause - license_family: BSD - size: 17032 - timestamp: 1740088127097 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda - sha256: 776092346da87a2a23502e14d91eb0c32699c4a1522b7331537bd1c3751dcff5 - md5: 5b3e1610ff8bd5443476b91d618f5b77 - depends: - - __osx >=11.0 - arch: arm64 - platform: osx - license: Apache-2.0 WITH LLVM-exception - license_family: Apache - size: 523505 - timestamp: 1736877862502 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda - sha256: d789471216e7aba3c184cd054ed61ce3f6dac6f87a50ec69291b9297f8c18724 - md5: c277e0a4d549b03ac1e9d6cbbe3d017b - depends: - - ncurses - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - ncurses >=6.5,<7.0a0 - arch: x86_64 - platform: linux - license: BSD-2-Clause - license_family: BSD - size: 134676 - timestamp: 1738479519902 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20250104-pl5321h976ea20_0.conda - sha256: c0b27546aa3a23d47919226b3a1635fccdb4f24b94e72e206a751b33f46fd8d6 - md5: fb640d776fc92b682a14e001980825b1 - depends: - - ncurses - - libgcc >=13 - - ncurses >=6.5,<7.0a0 - arch: aarch64 - platform: linux - license: BSD-2-Clause - license_family: BSD - size: 148125 - timestamp: 1738479808948 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda - sha256: 66aa216a403de0bb0c1340a88d1a06adaff66bae2cfd196731aa24db9859d631 - md5: 44083d2d2c2025afca315c7a172eab2b - depends: - - ncurses - - __osx >=11.0 - - ncurses >=6.5,<7.0a0 - arch: arm64 - platform: osx - license: BSD-2-Clause - license_family: BSD - size: 107691 - timestamp: 1738479560845 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda - sha256: 56541b98447b58e52d824bd59d6382d609e11de1f8adf20b23143e353d2b8d26 - md5: db833e03127376d461e1e13e76f09b6c - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - constrains: - - expat 2.6.4.* - arch: x86_64 - platform: linux - license: MIT - license_family: MIT - size: 73304 - timestamp: 1730967041968 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.6.4-h5ad3122_0.conda - sha256: f42e758009ba9db90d1fe7992bc3e60d0c52f71fb20923375d2c44ae69a5a2b3 - md5: f1b3fab36861b3ce945a13f0dfdfc688 - depends: - - libgcc >=13 - constrains: - - expat 2.6.4.* - arch: aarch64 - platform: linux - license: MIT - license_family: MIT - size: 72345 - timestamp: 1730967203789 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.4-h286801f_0.conda - sha256: e42ab5ace927ee7c84e3f0f7d813671e1cf3529f5f06ee5899606630498c2745 - md5: 38d2656dd914feb0cab8c629370768bf - depends: - - __osx >=11.0 - constrains: - - expat 2.6.4.* - arch: arm64 - platform: osx - license: MIT - license_family: MIT - size: 64693 - timestamp: 1730967175868 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_0.conda - sha256: 67a6c95e33ebc763c1adc3455b9a9ecde901850eb2fceb8e646cc05ef3a663da - md5: e3eb7806380bc8bcecba6d749ad5f026 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - arch: x86_64 - platform: linux - license: MIT - license_family: MIT - size: 53415 - timestamp: 1739260413716 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.4.6-he21f813_0.conda - sha256: 41568066beefe7b319ff27d85952242e5b77fb753d705b8716041959e17c35c2 - md5: 966084fccf3ad62a3160666cda869f28 - depends: - - libgcc >=13 - arch: aarch64 - platform: linux - license: MIT - license_family: MIT - size: 51513 - timestamp: 1739260449772 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 - sha256: 41b3d13efb775e340e4dba549ab5c029611ea6918703096b2eaa9c015c0750ca - md5: 086914b672be056eb70fd4285b6783b6 - arch: arm64 - platform: osx - license: MIT - license_family: MIT - size: 39020 - timestamp: 1636488587153 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h767d61c_2.conda - sha256: 3a572d031cb86deb541d15c1875aaa097baefc0c580b54dc61f5edab99215792 - md5: ef504d1acbd74b7cc6849ef8af47dd03 - depends: - - __glibc >=2.17,<3.0.a0 - - _openmp_mutex >=4.5 - constrains: - - libgomp 14.2.0 h767d61c_2 - - libgcc-ng ==14.2.0=*_2 - arch: x86_64 - platform: linux - license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - size: 847885 - timestamp: 1740240653082 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-14.2.0-he277a41_2.conda - sha256: a57f7f9ba2a12f56eafdcd25b6d75f7be10b8fc1a802a58b76a77ca8c66f4503 - md5: 6b4268a60b10f29257b51b9b67ff8d76 - depends: - - _openmp_mutex >=4.5 - constrains: - - libgcc-ng ==14.2.0=*_2 - - libgomp 14.2.0 he277a41_2 - arch: aarch64 - platform: linux - license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - size: 535507 - timestamp: 1740241069780 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_2.conda - sha256: fb7558c328b38b2f9d2e412c48da7890e7721ba018d733ebdfea57280df01904 - md5: a2222a6ada71fb478682efe483ce0f92 - depends: - - libgcc 14.2.0 h767d61c_2 - arch: x86_64 - platform: linux - license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - size: 53758 - timestamp: 1740240660904 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-14.2.0-he9431aa_2.conda - sha256: 9647f75cddc18b07eebe6e1f21500eed50a6af2c43c84e831b4c7a597e10d226 - md5: 692c2bb75f32cfafb6799cf6d1c5d0e0 - depends: - - libgcc 14.2.0 he277a41_2 - arch: aarch64 - platform: linux - license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - size: 53622 - timestamp: 1740241074834 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_2.conda - sha256: e05263e8960da03c341650f2a3ffa4ccae4e111cb198e8933a2908125459e5a6 - md5: fb54c4ea68b460c278d26eea89cfbcc3 - depends: - - libgfortran5 14.2.0 hf1ad2bd_2 - constrains: - - libgfortran-ng ==14.2.0=*_2 - arch: x86_64 - platform: linux - license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - size: 53733 - timestamp: 1740240690977 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_2.conda - sha256: 996d3c0505301901a7ab23b5e7daad21635d1c065240bb0f4faf7e4f75d7f49d - md5: d8b9d9dc0c8cd97d375b48e55947ba70 - depends: - - libgfortran5 14.2.0 hb6113d0_2 - constrains: - - libgfortran-ng ==14.2.0=*_2 - arch: aarch64 - platform: linux - license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - size: 53611 - timestamp: 1740241100147 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda - sha256: 44e541b4821c96b28b27fef5630883a60ce4fee91fd9c79f25a199f8f73f337b - md5: 4a55d9e169114b2b90d3ec4604cd7bbf - depends: - - libgfortran5 13.2.0 hf226fd6_3 - arch: arm64 - platform: osx - license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - size: 110233 - timestamp: 1707330749033 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hf1ad2bd_2.conda - sha256: c17b7cf3073a1f4e1f34d50872934fa326346e104d3c445abc1e62481ad6085c - md5: 556a4fdfac7287d349b8f09aba899693 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14.2.0 - constrains: - - libgfortran 14.2.0 - arch: x86_64 - platform: linux - license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - size: 1461978 - timestamp: 1740240671964 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_2.conda - sha256: 7b9e1d3666a00e5a52e5d43c003bd1c73ab472804be513c070aaedca9c4c2a9a - md5: cd754566661513808ef2408c4ab99a2f - depends: - - libgcc >=14.2.0 - constrains: - - libgfortran 14.2.0 - arch: aarch64 - platform: linux - license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - size: 1100765 - timestamp: 1740241083241 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda - sha256: bafc679eedb468a86aa4636061c55966186399ee0a04b605920d208d97ac579a - md5: 66ac81d54e95c534ae488726c1f698ea - depends: - - llvm-openmp >=8.0.0 - constrains: - - libgfortran 5.0.0 13_2_0_*_3 - arch: arm64 - platform: osx - license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - size: 997381 - timestamp: 1707330687590 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h767d61c_2.conda - sha256: 1a3130e0b9267e781b89399580f3163632d59fe5b0142900d63052ab1a53490e - md5: 06d02030237f4d5b3d9a7e7d348fe3c6 - depends: - - __glibc >=2.17,<3.0.a0 - arch: x86_64 - platform: linux - license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - size: 459862 - timestamp: 1740240588123 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_2.conda - sha256: 4e303711fb7413bf98995beac58e731073099d7a669a3b81e49330ca8da05174 - md5: b11c09d9463daf4cae492d29806b1889 - arch: aarch64 - platform: linux - license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - size: 462783 - timestamp: 1740241005079 -- conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-31_h7ac8fdf_openblas.conda - build_number: 31 - sha256: f583661921456e798aba10972a8abbd9d33571c655c1f66eff450edc9cbefcf3 - md5: 452b98eafe050ecff932f0ec832dd03f - depends: - - libblas 3.9.0 31_h59b9bed_openblas - constrains: - - libcblas =3.9.0=31*_openblas - - liblapacke =3.9.0=31*_openblas - - blas =2.131=openblas - arch: x86_64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 16790 - timestamp: 1740087997375 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-31_h411afd4_openblas.conda - build_number: 31 - sha256: 27613828ff6fb258b2e58802617df549f00089660ea8ab6c55c68f042c570162 - md5: 41dbff5eb805a75c120a7b7a1c744dc2 - depends: - - libblas 3.9.0 31_h1a9f1db_openblas - constrains: - - blas =2.131=openblas - - libcblas =3.9.0=31*_openblas - - liblapacke =3.9.0=31*_openblas - arch: aarch64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 16845 - timestamp: 1740087923843 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-31_hc9a63f6_openblas.conda - build_number: 31 - sha256: fe55b9aaf82c6c0192c3d1fcc9b8e884f97492dda9a8de5dae29334b3135fab5 - md5: ff57a55a2cbce171ef5707fb463caf19 - depends: - - libblas 3.9.0 31_h10e41b3_openblas - constrains: - - liblapacke =3.9.0=31*_openblas - - libcblas =3.9.0=31*_openblas - - blas =2.131=openblas - arch: arm64 - platform: osx - license: BSD-3-Clause - license_family: BSD - size: 17033 - timestamp: 1740088134988 -- conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda - sha256: cad52e10319ca4585bc37f0bc7cce99ec7c15dc9168e42ccb96b741b0a27db3f - md5: 42d5b6a0f30d3c10cd88cb8584fda1cb - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - arch: x86_64 - platform: linux - license: 0BSD - size: 111357 - timestamp: 1738525339684 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.4-h86ecc28_0.conda - sha256: 96413664f0fade54a4931940d18749cfc8e6308349dbb0cb83adb2394ca1f730 - md5: b88244e0a115cc34f7fbca9b11248e76 - depends: - - libgcc >=13 - arch: aarch64 - platform: linux - license: 0BSD - size: 124197 - timestamp: 1738528201520 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.4-h39f12f2_0.conda - sha256: 560c59d3834cc652a84fb45531bd335ad06e271b34ebc216e380a89798fe8e2c - md5: e3fd1f8320a100f2b210e690a57cd615 - depends: - - __osx >=11.0 - arch: arm64 - platform: osx - license: 0BSD - size: 98945 - timestamp: 1738525462560 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda - sha256: 26d77a3bb4dceeedc2a41bd688564fe71bf2d149fdcf117049970bc02ff1add6 - md5: 30fd6e37fe21f86f4bd26d6ee73eeec7 - depends: - - libgcc-ng >=12 - arch: x86_64 - platform: linux - license: LGPL-2.1-only - license_family: GPL - size: 33408 - timestamp: 1697359010159 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda - sha256: fd18c2b75d7411096428d36a70b36b1a17e31f7b8956b6905d145792d49e97f8 - md5: c14f32510f694e3185704d89967ec422 - depends: - - libgcc-ng >=12 - arch: aarch64 - platform: linux - license: LGPL-2.1-only - license_family: GPL - size: 34501 - timestamp: 1697358973269 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.29-pthreads_h94d23a6_0.conda - sha256: cc5389ea254f111ef17a53df75e8e5209ef2ea6117e3f8aced88b5a8e51f11c4 - md5: 0a4d0252248ef9a0f88f2ba8b8a08e12 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - - libgfortran - - libgfortran5 >=14.2.0 - constrains: - - openblas >=0.3.29,<0.3.30.0a0 - arch: x86_64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 5919288 - timestamp: 1739825731827 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.29-pthreads_h9d3fd7e_0.conda - sha256: 3a2ccf4c9098cd18a636e9b7fff947fdeb4962bcfb75c9d6fd80b8c50caf6a3c - md5: a99e2bfcb1ad6362544c71281eb617e9 - depends: - - libgcc >=14 - - libgfortran - - libgfortran5 >=14.2.0 - constrains: - - openblas >=0.3.29,<0.3.30.0a0 - arch: aarch64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 4801657 - timestamp: 1739825308974 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.29-openmp_hf332438_0.conda - sha256: 8989d9e01ec8c9b2d48dbb5efbe70b356fcd15990fb53b64fcb84798982c0343 - md5: 0cd1148c68f09027ee0b0f0179f77c30 - depends: - - __osx >=11.0 - - libgfortran 5.* - - libgfortran5 >=13.2.0 - - llvm-openmp >=18.1.8 - constrains: - - openblas >=0.3.29,<0.3.30.0a0 - arch: arm64 - platform: osx - license: BSD-3-Clause - license_family: BSD - size: 4168442 - timestamp: 1739825514918 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda - sha256: 51125ebb8b7152e4a4e69fd2398489c4ec8473195c27cde3cbdf1cb6d18c5493 - md5: d8703f1ffe5a06356f06467f1d0b9464 - depends: - - __glibc >=2.17,<3.0.a0 - - libabseil * cxx17* - - libabseil >=20240722.0,<20240723.0a0 - - libgcc >=13 - - libstdcxx >=13 - - libzlib >=1.3.1,<2.0a0 - arch: x86_64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 2960815 - timestamp: 1735577210663 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.3-h44a3b7b_1.conda - sha256: ecb69f2b1668e784b41ba667493be846662d5ef702bef64fb2e013bb1364cdc4 - md5: 68f807f7cc13951652bbe048253fd405 - depends: - - libabseil * cxx17* - - libabseil >=20240722.0,<20240723.0a0 - - libgcc >=13 - - libstdcxx >=13 - - libzlib >=1.3.1,<2.0a0 - arch: aarch64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 2788074 - timestamp: 1735576315676 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.3-h3bd63a1_1.conda - sha256: f58a16b13ad53346903c833e266f83c3d770a43a432659b98710aed85ca885e7 - md5: bdbfea4cf45ae36652c6bbcc2e7ebe91 - depends: - - __osx >=11.0 - - libabseil * cxx17* - - libabseil >=20240722.0,<20240723.0a0 - - libcxx >=18 - - libzlib >=1.3.1,<2.0a0 - arch: arm64 - platform: osx - license: BSD-3-Clause - license_family: BSD - size: 2271580 - timestamp: 1735576361997 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libsentencepiece-0.2.0-h8e10757_10.conda - sha256: dc399e0f04a09f8c1807c3b36e578eb81f81891c0ddf21de9c1fb9f048ce4031 - md5: 4f43dbcfacd3cc9a183dd3a48b94d3c0 - depends: - - __glibc >=2.17,<3.0.a0 - - libabseil * cxx17* - - libabseil >=20240722.0,<20240723.0a0 - - libgcc >=13 - - libprotobuf >=5.28.3,<5.28.4.0a0 - - libstdcxx >=13 - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 823649 - timestamp: 1735627841126 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsentencepiece-0.2.0-h6164ad9_10.conda - sha256: 57074803772f65d4075b7d6dc17ff5aa40ec3a30109fa4225ca16911504c4a8b - md5: a7a192edc9cfba26a27df3283203e6a1 - depends: - - libabseil * cxx17* - - libabseil >=20240722.0,<20240723.0a0 - - libgcc >=13 - - libprotobuf >=5.28.3,<5.28.4.0a0 - - libstdcxx >=13 - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 800865 - timestamp: 1735627982895 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsentencepiece-0.2.0-he13a0af_10.conda - sha256: 3347a8840d085ce1661928e736229f068d56c84312fbed90886e059023d85611 - md5: 1f67e5e30edd56e0a0bf6df6bb711a9d - depends: - - __osx >=11.0 - - libabseil * cxx17* - - libabseil >=20240722.0,<20240723.0a0 - - libcxx >=18 - - libprotobuf >=5.28.3,<5.28.4.0a0 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: Apache - size: 754657 - timestamp: 1735628030895 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda - sha256: 0105bd108f19ea8e6a78d2d994a6d4a8db16d19a41212070d2d1d48a63c34161 - md5: a587892d3c13b6621a6091be690dbca2 - depends: - - libgcc-ng >=12 - arch: x86_64 - platform: linux - license: ISC - size: 205978 - timestamp: 1716828628198 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.20-h68df207_0.conda - sha256: 448df5ea3c5cf1af785aad46858d7a5be0522f4234a4dc9bb764f4d11ff3b981 - md5: 2e4a8f23bebdcb85ca8e5a0fbe75666a - depends: - - libgcc-ng >=12 - arch: aarch64 - platform: linux - license: ISC - size: 177394 - timestamp: 1716828514515 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda - sha256: fade8223e1e1004367d7101dd17261003b60aa576df6d7802191f8972f7470b1 - md5: a7ce36e284c5faaf93c220dfc39e3abd - depends: - - __osx >=11.0 - arch: arm64 - platform: osx - license: ISC - size: 164972 - timestamp: 1716828607917 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.49.1-hee588c1_1.conda - sha256: 7a09eef804ef7cf4d88215c2297eabb72af8ad0bd5b012060111c289f14bbe7d - md5: 73cea06049cc4174578b432320a003b8 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libzlib >=1.3.1,<2.0a0 - arch: x86_64 - platform: linux - license: Unlicense - size: 915956 - timestamp: 1739953155793 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.49.1-h5eb1b54_1.conda - sha256: 920fb3b7d3b873babf79a3e392cc82d43b8bd02a573ccaff34219efb5cf7b51e - md5: 150d64241fa27d9d35a7f421ca968a6c - depends: - - libgcc >=13 - - libzlib >=1.3.1,<2.0a0 - arch: aarch64 - platform: linux - license: Unlicense - size: 915118 - timestamp: 1739953101699 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.1-h3f77e49_1.conda - sha256: 266639fb10ca92287961574b0b4d6031fa40dd9d723d64a0fcb08513a24dab03 - md5: c83357a21092bd952933c36c5cb4f4d6 - depends: - - __osx >=11.0 - - libzlib >=1.3.1,<2.0a0 - arch: arm64 - platform: osx - license: Unlicense - size: 898767 - timestamp: 1739953312379 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-h8f9b012_2.conda - sha256: 8f5bd92e4a24e1d35ba015c5252e8f818898478cb3bc50bd8b12ab54707dc4da - md5: a78c856b6dc6bf4ea8daeb9beaaa3fb0 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc 14.2.0 h767d61c_2 - arch: x86_64 - platform: linux - license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - size: 3884556 - timestamp: 1740240685253 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_2.conda - sha256: c30a74bc996013907f6d9f344da007c26d98ef9a0831151cd50aece3125c45d5 - md5: eadee2cda99697e29411c1013c187b92 - depends: - - libgcc 14.2.0 he277a41_2 - arch: aarch64 - platform: linux - license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - size: 3810779 - timestamp: 1740241094774 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_2.conda - sha256: e86f38b007cf97cc2c67cd519f2de12a313c4ee3f5ef11652ad08932a5e34189 - md5: c75da67f045c2627f59e6fcb5f4e3a9b - depends: - - libstdcxx 14.2.0 h8f9b012_2 - arch: x86_64 - platform: linux - license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - size: 53830 - timestamp: 1740240722530 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_2.conda - sha256: 0107886ead6f255956d8e520f8dff260f9ab3d0d51512f18c52710c406e4b2df - md5: c934c1fddad582fcc385b608eb06a70c - depends: - - libstdcxx 14.2.0 h3f4de04_2 - arch: aarch64 - platform: linux - license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - size: 53715 - timestamp: 1740241126343 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - sha256: 787eb542f055a2b3de553614b25f09eefb0a0931b0c87dbcce6efdfd92f04f18 - md5: 40b61aab5c7ba9ff276c41cfffe6b80b - depends: - - libgcc-ng >=12 - arch: x86_64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 33601 - timestamp: 1680112270483 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda - sha256: 616277b0c5f7616c2cdf36f6c316ea3f9aa5bb35f2d4476a349ab58b9b91675f - md5: 000e30b09db0b7c775b21695dff30969 - depends: - - libgcc-ng >=12 - arch: aarch64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 35720 - timestamp: 1680113474501 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - sha256: 6ae68e0b86423ef188196fff6207ed0c8195dd84273cb5623b85aa08033a410c - md5: 5aa797f8787fe7a17d1b0821485b5adc - depends: - - libgcc-ng >=12 - arch: x86_64 - platform: linux - license: LGPL-2.1-or-later - size: 100393 - timestamp: 1702724383534 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda - sha256: 6b46c397644091b8a26a3048636d10b989b1bf266d4be5e9474bf763f828f41f - md5: b4df5d7d4b63579d081fd3a4cf99740e - depends: - - libgcc-ng >=12 - arch: aarch64 - platform: linux - license: LGPL-2.1-or-later - size: 114269 - timestamp: 1702724369203 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - sha256: d4bfe88d7cb447768e31650f06257995601f89076080e76df55e3112d4e47dc4 - md5: edb0dca6bc32e4f4789199455a1dbeb8 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - constrains: - - zlib 1.3.1 *_2 - arch: x86_64 - platform: linux - license: Zlib - license_family: Other - size: 60963 - timestamp: 1727963148474 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - sha256: 5a2c1eeef69342e88a98d1d95bff1603727ab1ff4ee0e421522acd8813439b84 - md5: 08aad7cbe9f5a6b460d0976076b6ae64 - depends: - - libgcc >=13 - constrains: - - zlib 1.3.1 *_2 - arch: aarch64 - platform: linux - license: Zlib - license_family: Other - size: 66657 - timestamp: 1727963199518 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - sha256: ce34669eadaba351cd54910743e6a2261b67009624dbc7daeeafdef93616711b - md5: 369964e85dc26bfe78f41399b366c435 - depends: - - __osx >=11.0 - constrains: - - zlib 1.3.1 *_2 - arch: arm64 - platform: osx - license: Zlib - license_family: Other - size: 46438 - timestamp: 1727963202283 -- conda: https://conda.anaconda.org/conda-forge/noarch/lit-19.1.7-pyhd8ed1ab_1.conda - sha256: 57b535a67f59c97302e2bbc60abcbc8d51ef0a4c7b1926049091d7da96da7b3a - md5: c5a4e2d9818fe6551dccd02243765527 - depends: - - python >=3.9 - license: Apache-2.0 WITH LLVM-exception - license_family: Apache - size: 128565 - timestamp: 1737789576837 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda - sha256: b92a669f2059874ebdcb69041b6c243d68ffc3fb356ac1339cec44aeb27245d7 - md5: c4d54bfd3817313ce758aa76283b118d - depends: - - __osx >=11.0 - constrains: - - openmp 19.1.7|19.1.7.* - arch: arm64 - platform: osx - license: Apache-2.0 WITH LLVM-exception - license_family: APACHE - size: 280830 - timestamp: 1736986295869 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022713-release.conda - noarch: python - sha256: d2b6c247e736b34c8a6cf0452846a2162b9aa6a3c3fd5d029f2b2e0a7be571d3 - md5: 4db470c401468b43b673548c91a5e94e - depends: - - max-core ==25.2.0.dev2025022713 release - - max-python ==25.2.0.dev2025022713 release - - mojo-jupyter ==25.2.0.dev2025022713 release - - mblack ==25.2.0.dev2025022713 release - license: LicenseRef-Modular-Proprietary - size: 9908 - timestamp: 1740664199928 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022713-release.conda - sha256: 3c0bf4c8f2a6b5400bcbd64032d2c59b9dfcc5ad50432a8a9e1e3d024d3400f5 - md5: 9751487ef2e786e9dcaff28f0628ba03 - depends: - - mblack ==25.2.0.dev2025022713 release - license: LicenseRef-Modular-Proprietary - size: 249813859 - timestamp: 1740664231187 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022713-release.conda - sha256: bea03a1b06c8554504542794822a345735e7847a914af4e9766cb275ab5b3238 - md5: 04b52dac259a6268bc51a78da0aa9f1d - depends: - - mblack ==25.2.0.dev2025022713 release - license: LicenseRef-Modular-Proprietary - size: 252115018 - timestamp: 1740664199928 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022713-release.conda - sha256: eb28bb19ea43f9a63b8f8ca88751c932263ab2134fd651b5e82cd729101b18cb - md5: 9f3a63249667b9e29ba93d7c21e1d679 - depends: - - mblack ==25.2.0.dev2025022713 release - license: LicenseRef-Modular-Proprietary - size: 217216039 - timestamp: 1740665267852 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022713-release.conda - noarch: python - sha256: b555a98a5162485a66cb852674d19b8c65e139ff70ec92451f2130dea741263a - md5: cdaed74f4e9fefcc0bc928598740815c - depends: - - max-core ==25.2.0.dev2025022713 release - - click >=8.0.0 - - numpy >=1.18,<2.0 - - sentencepiece >=0.2.0 - - tqdm >=4.67.1 - constrains: - - aiohttp >=3.11.12 - - fastapi >=0.114.2 - - gguf >=0.14.0 - - hf-transfer >=0.1.9 - - httpx >=0.28.1 - - huggingface_hub >=0.24.0 - - nvitop >=1.4.1 - - opentelemetry-api >=1.29.0 - - opentelemetry-exporter-otlp-proto-http >=1.27.0 - - opentelemetry-exporter-prometheus <1.0.0 - - opentelemetry-sdk >=1.29.0,<2.0 - - pillow >=10.3.0 - - prometheus_client >=0.21.0 - - prometheus-async >=22.2.0 - - psutil >=6.1.1 - - pydantic - - pydantic-settings >=2.7.1 - - pyinstrument >=5.0.1 - - python-json-logger >=2.0.7 - - requests >=2.32.3 - - rich >=13.9.4 - - safetensors >=0.5.2 - - scipy >=1.15.1 - - sentinel >=0.3.0 - - sse-starlette >=2.1.2 - - tokenizers >=0.19.0 - - pytorch >=2.2.2,<=2.5.1 - - transformers >=4.40.1 - - uvicorn >=0.34.0 - - uvloop >=0.21.0 - - xgrammar ==0.1.11 - license: LicenseRef-Modular-Proprietary - size: 123534013 - timestamp: 1740664231187 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022713-release.conda - noarch: python - sha256: 71aeaf13405bb7ba613f5336c5e03fbbd158adbfc1a5ddab1bf0b7f248535f15 - md5: 903350b3c6380505cb1cc59556cdcf68 - depends: - - max-core ==25.2.0.dev2025022713 release - - click >=8.0.0 - - numpy >=1.18,<2.0 - - sentencepiece >=0.2.0 - - tqdm >=4.67.1 - constrains: - - aiohttp >=3.11.12 - - fastapi >=0.114.2 - - gguf >=0.14.0 - - hf-transfer >=0.1.9 - - httpx >=0.28.1 - - huggingface_hub >=0.24.0 - - nvitop >=1.4.1 - - opentelemetry-api >=1.29.0 - - opentelemetry-exporter-otlp-proto-http >=1.27.0 - - opentelemetry-exporter-prometheus <1.0.0 - - opentelemetry-sdk >=1.29.0,<2.0 - - pillow >=10.3.0 - - prometheus_client >=0.21.0 - - prometheus-async >=22.2.0 - - psutil >=6.1.1 - - pydantic - - pydantic-settings >=2.7.1 - - pyinstrument >=5.0.1 - - python-json-logger >=2.0.7 - - requests >=2.32.3 - - rich >=13.9.4 - - safetensors >=0.5.2 - - scipy >=1.15.1 - - sentinel >=0.3.0 - - sse-starlette >=2.1.2 - - tokenizers >=0.19.0 - - pytorch >=2.2.2,<=2.5.1 - - transformers >=4.40.1 - - uvicorn >=0.34.0 - - uvloop >=0.21.0 - - xgrammar ==0.1.11 - license: LicenseRef-Modular-Proprietary - size: 125927777 - timestamp: 1740664199928 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022713-release.conda - noarch: python - sha256: 829c387dda5a2a52baca2299c67ba511f2039beeec4c2f6e3b16990077cbd0b9 - md5: 4f10a16f087934ec4fd2e87b8326c4d5 - depends: - - max-core ==25.2.0.dev2025022713 release - - click >=8.0.0 - - numpy >=1.18,<2.0 - - sentencepiece >=0.2.0 - - tqdm >=4.67.1 - constrains: - - aiohttp >=3.11.12 - - fastapi >=0.114.2 - - gguf >=0.14.0 - - hf-transfer >=0.1.9 - - httpx >=0.28.1 - - huggingface_hub >=0.24.0 - - nvitop >=1.4.1 - - opentelemetry-api >=1.29.0 - - opentelemetry-exporter-otlp-proto-http >=1.27.0 - - opentelemetry-exporter-prometheus <1.0.0 - - opentelemetry-sdk >=1.29.0,<2.0 - - pillow >=10.3.0 - - prometheus_client >=0.21.0 - - prometheus-async >=22.2.0 - - psutil >=6.1.1 - - pydantic - - pydantic-settings >=2.7.1 - - pyinstrument >=5.0.1 - - python-json-logger >=2.0.7 - - requests >=2.32.3 - - rich >=13.9.4 - - safetensors >=0.5.2 - - scipy >=1.15.1 - - sentinel >=0.3.0 - - sse-starlette >=2.1.2 - - tokenizers >=0.19.0 - - pytorch >=2.2.2,<=2.5.1 - - transformers >=4.40.1 - - uvicorn >=0.34.0 - - uvloop >=0.21.0 - - xgrammar ==0.1.11 - license: LicenseRef-Modular-Proprietary - size: 112550091 - timestamp: 1740665267852 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022713-release.conda - noarch: python - sha256: baac376bd7df6e8c4776fc934dd3c7d2566a31908e514ea02180ba638430b379 - md5: 5906489ff8ca5341b676d9001a246ace - depends: - - python >=3.9,<3.13 - - click >=8.0.0 - - mypy_extensions >=0.4.3 - - packaging >=22.0 - - pathspec >=0.9.0 - - platformdirs >=2 - - typing_extensions >=v4.12.2 - - python - license: MIT - size: 130846 - timestamp: 1740664199927 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022713-release.conda - noarch: python - sha256: ff78ef2596148c1ae0819f53e4ae3266e0003a836bdacba9efee6d4335eef386 - md5: 95972dc5cb3b79fcb9c4d47591cd4c7e - depends: - - max-core ==25.2.0.dev2025022713 release - - python >=3.9,<3.13 - - jupyter_client >=8.6.2,<8.7 - - python - license: LicenseRef-Modular-Proprietary - size: 22991 - timestamp: 1740664199928 -- conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - sha256: 1895f47b7d68581a6facde5cb13ab8c2764c2e53a76bd746f8f98910dc4e08fe - md5: 29097e7ea634a45cc5386b95cac6568f - depends: - - python >=3.9 - license: MIT - license_family: MIT - size: 10854 - timestamp: 1733230986902 -- conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda - sha256: 3fde293232fa3fca98635e1167de6b7c7fda83caf24b9d6c91ec9eefb4f4d586 - md5: 47e340acb35de30501a76c7c799c41d7 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - arch: x86_64 - platform: linux - license: X11 AND BSD-3-Clause - size: 891641 - timestamp: 1738195959188 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-ha32ae93_3.conda - sha256: 91cfb655a68b0353b2833521dc919188db3d8a7f4c64bea2c6a7557b24747468 - md5: 182afabe009dc78d8b73100255ee6868 - depends: - - libgcc >=13 - arch: aarch64 - platform: linux - license: X11 AND BSD-3-Clause - size: 926034 - timestamp: 1738196018799 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda - sha256: 2827ada40e8d9ca69a153a45f7fd14f32b2ead7045d3bbb5d10964898fe65733 - md5: 068d497125e4bf8a66bf707254fff5ae - depends: - - __osx >=11.0 - arch: arm64 - platform: osx - license: X11 AND BSD-3-Clause - size: 797030 - timestamp: 1738196177597 -- conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda - sha256: fe3459c75cf84dcef6ef14efcc4adb0ade66038ddd27cadb894f34f4797687d8 - md5: d8285bea2a350f63fab23bf460221f3f - depends: - - libblas >=3.9.0,<4.0a0 - - libcblas >=3.9.0,<4.0a0 - - libgcc-ng >=12 - - liblapack >=3.9.0,<4.0a0 - - libstdcxx-ng >=12 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - constrains: - - numpy-base <0a0 - arch: x86_64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 7484186 - timestamp: 1707225809722 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda - sha256: 23767677a7790bee5457d5e75ebd508b9a31c5354216f4310dd1acfca3f7a6f9 - md5: 9cebf5a06cb87d4569cd68df887af476 - depends: - - libblas >=3.9.0,<4.0a0 - - libcblas >=3.9.0,<4.0a0 - - libgcc-ng >=12 - - liblapack >=3.9.0,<4.0a0 - - libstdcxx-ng >=12 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - constrains: - - numpy-base <0a0 - arch: aarch64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 6614296 - timestamp: 1707225994762 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda - sha256: c8841d6d6f61fd70ca80682efbab6bdb8606dc77c68d8acabfbd7c222054f518 - md5: d83fc83d589e2625a3451c9a7e21047c - depends: - - libblas >=3.9.0,<4.0a0 - - libcblas >=3.9.0,<4.0a0 - - libcxx >=16 - - liblapack >=3.9.0,<4.0a0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - constrains: - - numpy-base <0a0 - arch: arm64 - platform: osx - license: BSD-3-Clause - license_family: BSD - size: 6073136 - timestamp: 1707226249608 -- conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.1-h7b32b05_0.conda - sha256: cbf62df3c79a5c2d113247ddea5658e9ff3697b6e741c210656e239ecaf1768f - md5: 41adf927e746dc75ecf0ef841c454e48 - depends: - - __glibc >=2.17,<3.0.a0 - - ca-certificates - - libgcc >=13 - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 2939306 - timestamp: 1739301879343 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.1-hd08dc88_0.conda - sha256: d80b52b56b2206053968270069616868cbeb289ef855cf1584b1bb0fef61b37c - md5: 09036190605c57eaecf01218e0e9542d - depends: - - ca-certificates - - libgcc >=13 - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 3476570 - timestamp: 1739303256089 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.1-h81ee809_0.conda - sha256: 4f8e2389e1b711b44182a075516d02c80fa7a3a7e25a71ff1b5ace9eae57a17a - md5: 75f9f0c7b1740017e2db83a53ab9a28e - depends: - - __osx >=11.0 - - ca-certificates - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: Apache - size: 2934522 - timestamp: 1739301896733 -- conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - sha256: da157b19bcd398b9804c5c52fc000fcb8ab0525bdb9c70f95beaa0bb42f85af1 - md5: 3bfed7e6228ebf2f7b9eaa47f1b4e2aa - depends: - - python >=3.8 - license: Apache-2.0 - license_family: APACHE - size: 60164 - timestamp: 1733203368787 -- conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda - sha256: 9f64009cdf5b8e529995f18e03665b03f5d07c0b17445b8badef45bde76249ee - md5: 617f15191456cc6a13db418a275435e5 - depends: - - python >=3.9 - license: MPL-2.0 - license_family: MOZILLA - size: 41075 - timestamp: 1733233471940 -- conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda - sha256: bb50f6499e8bc1d1a26f17716c97984671121608dc0c3ecd34858112bce59a27 - md5: 577852c7e53901ddccc7e6a9959ddebe - depends: - - python >=3.9 - license: MIT - license_family: MIT - size: 20448 - timestamp: 1733232756001 -- conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.9-h9e4cc4f_0_cpython.conda - sha256: 64fed5178f1e9c8ac0f572ac0ce37955f5dee7b2bcac665202bc14f1f7dd618a - md5: 5665f0079432f8848079c811cdb537d5 - depends: - - __glibc >=2.17,<3.0.a0 - - bzip2 >=1.0.8,<2.0a0 - - ld_impl_linux-64 >=2.36.1 - - libexpat >=2.6.4,<3.0a0 - - libffi >=3.4,<4.0a0 - - libgcc >=13 - - liblzma >=5.6.4,<6.0a0 - - libnsl >=2.0.1,<2.1.0a0 - - libsqlite >=3.48.0,<4.0a0 - - libuuid >=2.38.1,<3.0a0 - - libxcrypt >=4.4.36 - - libzlib >=1.3.1,<2.0a0 - - ncurses >=6.5,<7.0a0 - - openssl >=3.4.1,<4.0a0 - - readline >=8.2,<9.0a0 - - tk >=8.6.13,<8.7.0a0 - - tzdata - constrains: - - python_abi 3.12.* *_cp312 - arch: x86_64 - platform: linux - license: Python-2.0 - size: 31581682 - timestamp: 1739521496324 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.9-h1683364_0_cpython.conda - sha256: 0366f38918bceda8ff5917d7bbe1cea2bc8b6c74e7245eb0e4b0d3c2d37f76cf - md5: 2e7ad70254455e0508adabff10218512 - depends: - - bzip2 >=1.0.8,<2.0a0 - - ld_impl_linux-aarch64 >=2.36.1 - - libexpat >=2.6.4,<3.0a0 - - libffi >=3.4,<4.0a0 - - libgcc >=13 - - liblzma >=5.6.4,<6.0a0 - - libnsl >=2.0.1,<2.1.0a0 - - libsqlite >=3.48.0,<4.0a0 - - libuuid >=2.38.1,<3.0a0 - - libxcrypt >=4.4.36 - - libzlib >=1.3.1,<2.0a0 - - ncurses >=6.5,<7.0a0 - - openssl >=3.4.1,<4.0a0 - - readline >=8.2,<9.0a0 - - tk >=8.6.13,<8.7.0a0 - - tzdata - constrains: - - python_abi 3.12.* *_cp312 - arch: aarch64 - platform: linux - license: Python-2.0 - size: 13804161 - timestamp: 1739519531794 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.9-hc22306f_0_cpython.conda - sha256: cbf81a78d3ca6e663e827523e6ddbc28369cac488da047a28f83875eb52fe5f6 - md5: 1d105a6c46a753e3c0bab54a1ad24063 - depends: - - __osx >=11.0 - - bzip2 >=1.0.8,<2.0a0 - - libexpat >=2.6.4,<3.0a0 - - libffi >=3.4,<4.0a0 - - liblzma >=5.6.4,<6.0a0 - - libsqlite >=3.48.0,<4.0a0 - - libzlib >=1.3.1,<2.0a0 - - ncurses >=6.5,<7.0a0 - - openssl >=3.4.1,<4.0a0 - - readline >=8.2,<9.0a0 - - tk >=8.6.13,<8.7.0a0 - - tzdata - constrains: - - python_abi 3.12.* *_cp312 - arch: arm64 - platform: osx - license: Python-2.0 - size: 12947786 - timestamp: 1739520092196 -- conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - sha256: a50052536f1ef8516ed11a844f9413661829aa083304dc624c5925298d078d79 - md5: 5ba79d7c71f03c678c8ead841f347d6e - depends: - - python >=3.9 - - six >=1.5 - license: Apache-2.0 - license_family: APACHE - size: 222505 - timestamp: 1733215763718 -- conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda - build_number: 5 - sha256: d10e93d759931ffb6372b45d65ff34d95c6000c61a07e298d162a3bc2accebb0 - md5: 0424ae29b104430108f5218a66db7260 - constrains: - - python 3.12.* *_cpython - arch: x86_64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 6238 - timestamp: 1723823388266 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.12-5_cp312.conda - build_number: 5 - sha256: 5ccdad9981753cc4a2d126e356673a21c0cd5b34e209cb8d476a3947d4ad9b39 - md5: 62b20f305498284a07dc6c45fd0e5c87 - constrains: - - python 3.12.* *_cpython - arch: aarch64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 6329 - timestamp: 1723823366253 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-5_cp312.conda - build_number: 5 - sha256: 49d624e4b809c799d2bf257b22c23cf3fc4460f5570d9a58e7ad86350aeaa1f4 - md5: b76f9b1c862128e56ac7aa8cd2333de9 - constrains: - - python 3.12.* *_cpython - arch: arm64 - platform: osx - license: BSD-3-Clause - license_family: BSD - size: 6278 - timestamp: 1723823099686 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.1-py312hbf22597_0.conda - sha256: 90ec0da0317d3d76990a40c61e1709ef859dd3d8c63838bad2814f46a63c8a2e - md5: 7cec8d0dac15a2d9fea8e49879aa779d - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libsodium >=1.0.20,<1.0.21.0a0 - - libstdcxx >=13 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - - zeromq >=4.3.5,<4.4.0a0 - arch: x86_64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 382698 - timestamp: 1738271121975 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyzmq-26.2.1-py312h2427ae1_0.conda - sha256: 9558f9330093e5c21b7c04e2e212e19b9b88ad9c808315f12c0765b244018a09 - md5: 0520da8de6870d8ff63e818e927d1524 - depends: - - libgcc >=13 - - libsodium >=1.0.20,<1.0.21.0a0 - - libstdcxx >=13 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - - zeromq >=4.3.5,<4.4.0a0 - arch: aarch64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 375156 - timestamp: 1738273130727 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.1-py312hf4875e0_0.conda - sha256: 70d398b334668dc597d33e27847ede1b0829a639b9c91ee845355e52c86c2293 - md5: bfbefdb140b546a80827ff7c9d5ac7b8 - depends: - - __osx >=11.0 - - libcxx >=18 - - libsodium >=1.0.20,<1.0.21.0a0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - - zeromq >=4.3.5,<4.4.0a0 - arch: arm64 - platform: osx - license: BSD-3-Clause - license_family: BSD - size: 364649 - timestamp: 1738271263898 -- conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda - sha256: 2d6d0c026902561ed77cd646b5021aef2d4db22e57a5b0178dfc669231e06d2c - md5: 283b96675859b20a825f8fa30f311446 - depends: - - libgcc >=13 - - ncurses >=6.5,<7.0a0 - arch: x86_64 - platform: linux - license: GPL-3.0-only - license_family: GPL - size: 282480 - timestamp: 1740379431762 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8382b9d_2.conda - sha256: 54bed3a3041befaa9f5acde4a37b1a02f44705b7796689574bcf9d7beaad2959 - md5: c0f08fc2737967edde1a272d4bf41ed9 - depends: - - libgcc >=13 - - ncurses >=6.5,<7.0a0 - arch: aarch64 - platform: linux - license: GPL-3.0-only - license_family: GPL - size: 291806 - timestamp: 1740380591358 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda - sha256: 7db04684d3904f6151eff8673270922d31da1eea7fa73254d01c437f49702e34 - md5: 63ef3f6e6d6d5c589e64f11263dc5676 - depends: - - ncurses >=6.5,<7.0a0 - arch: arm64 - platform: osx - license: GPL-3.0-only - license_family: GPL - size: 252359 - timestamp: 1740379663071 -- conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-0.2.0-hc8f76dd_10.conda - sha256: a1bde55ceb9dc5bd7879283d0f594a6ce65c07fda3de76230c65a4a5df47858a - md5: 480e915dfc6c592615ef6f217e615aa6 - depends: - - libsentencepiece 0.2.0 h8e10757_10 - - python_abi 3.12.* *_cp312 - - sentencepiece-python 0.2.0 py312hb6b8a2b_10 - - sentencepiece-spm 0.2.0 h8e10757_10 - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 19470 - timestamp: 1735628377167 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-0.2.0-h6c1b121_10.conda - sha256: 846d885a560fbb4375b645e7caf2f756ef88bbeb441b670375da0090aaa427fb - md5: 33a89eb1dedae8eb7222b0a89856f337 - depends: - - libsentencepiece 0.2.0 h6164ad9_10 - - python_abi 3.12.* *_cp312 - - sentencepiece-python 0.2.0 py312h197ff68_10 - - sentencepiece-spm 0.2.0 h6164ad9_10 - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 19686 - timestamp: 1735628718991 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-0.2.0-h22a84ea_10.conda - sha256: 526c934b897131bd274697649c3b1c492a7d66c03368885a954112468b3c1424 - md5: 346abe448f69949a65473b336856860a - depends: - - libsentencepiece 0.2.0 he13a0af_10 - - python_abi 3.12.* *_cp312 - - sentencepiece-python 0.2.0 py312h155166a_10 - - sentencepiece-spm 0.2.0 he13a0af_10 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: Apache - size: 19759 - timestamp: 1735628533490 -- conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-python-0.2.0-py312hb6b8a2b_10.conda - sha256: 37df7fb659564587b950b39c936769d9b5095afb7bc223f42d6248a5540c6567 - md5: 7908b7b977e2e123a5f6a29906f2ce44 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libprotobuf >=5.28.3,<5.28.4.0a0 - - libsentencepiece 0.2.0 h8e10757_10 - - libstdcxx >=13 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 2411182 - timestamp: 1735628106455 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-python-0.2.0-py312h197ff68_10.conda - sha256: a7c2c19cc397c7632e2630af49ddcff128f145c93ea493421e6f42bfa5e1d30b - md5: 5642e4545a3cf03e446fb3b3e9fd723b - depends: - - libgcc >=13 - - libprotobuf >=5.28.3,<5.28.4.0a0 - - libsentencepiece 0.2.0 h6164ad9_10 - - libstdcxx >=13 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 2458076 - timestamp: 1735628298246 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-python-0.2.0-py312h155166a_10.conda - sha256: 2d59614aeafbf54cc718805798c11c2d0a3b4b8d947d1bd81c87c484b4883077 - md5: 6e11367ef670296fce01fc9860be944d - depends: - - __osx >=11.0 - - libcxx >=18 - - libprotobuf >=5.28.3,<5.28.4.0a0 - - libsentencepiece 0.2.0 he13a0af_10 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: Apache - size: 2433303 - timestamp: 1735628083958 -- conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-spm-0.2.0-h8e10757_10.conda - sha256: 6b55e1121545357d63c3aa0766931720e8aafc52d88641ba7631c8cbaa68c52f - md5: e977b7be5ac26c55825e121e00b90493 - depends: - - __glibc >=2.17,<3.0.a0 - - libabseil * cxx17* - - libabseil >=20240722.0,<20240723.0a0 - - libgcc >=13 - - libprotobuf >=5.28.3,<5.28.4.0a0 - - libsentencepiece 0.2.0 h8e10757_10 - - libstdcxx >=13 - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 89076 - timestamp: 1735628334078 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-spm-0.2.0-h6164ad9_10.conda - sha256: b98fc1028a8e8fbf309af383f9c837290a14e076e6c5533dc251694ea33ffc6e - md5: a4b75936c01dca3f089f02752b7ee325 - depends: - - libabseil * cxx17* - - libabseil >=20240722.0,<20240723.0a0 - - libgcc >=13 - - libprotobuf >=5.28.3,<5.28.4.0a0 - - libsentencepiece 0.2.0 h6164ad9_10 - - libstdcxx >=13 - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 85983 - timestamp: 1735628693813 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-spm-0.2.0-he13a0af_10.conda - sha256: b760aeee02e2afbfcce3f559e8a227aa4c94139157b1702fdfb41a057dad0e52 - md5: 9b7300f23cd330da8664cd072c162e5f - depends: - - __osx >=11.0 - - libabseil * cxx17* - - libabseil >=20240722.0,<20240723.0a0 - - libcxx >=18 - - libprotobuf >=5.28.3,<5.28.4.0a0 - - libsentencepiece 0.2.0 he13a0af_10 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: Apache - size: 83826 - timestamp: 1735628514667 -- conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - sha256: 41db0180680cc67c3fa76544ffd48d6a5679d96f4b71d7498a759e94edc9a2db - md5: a451d576819089b0d672f18768be0f65 - depends: - - python >=3.9 - license: MIT - license_family: MIT - size: 16385 - timestamp: 1733381032766 -- conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda - sha256: e0569c9caa68bf476bead1bed3d79650bb080b532c64a4af7d8ca286c08dea4e - md5: d453b98d9c83e71da0741bb0ff4d76bc - depends: - - libgcc-ng >=12 - - libzlib >=1.2.13,<2.0.0a0 - arch: x86_64 - platform: linux - license: TCL - license_family: BSD - size: 3318875 - timestamp: 1699202167581 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda - sha256: 7fa27cc512d3a783f38bd16bbbffc008807372499d5b65d089a8e43bde9db267 - md5: f75105e0585851f818e0009dd1dde4dc - depends: - - libgcc-ng >=12 - - libzlib >=1.2.13,<2.0.0a0 - arch: aarch64 - platform: linux - license: TCL - license_family: BSD - size: 3351802 - timestamp: 1695506242997 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda - sha256: 72457ad031b4c048e5891f3f6cb27a53cb479db68a52d965f796910e71a403a8 - md5: b50a57ba89c32b62428b71a875291c9b - depends: - - libzlib >=1.2.13,<2.0.0a0 - arch: arm64 - platform: osx - license: TCL - license_family: BSD - size: 3145523 - timestamp: 1699202432999 -- conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda - sha256: 062a3a3a37fa8615ce57929ba7e982c76f5a5810bcebd435950f6d6c4147c310 - md5: e417822cb989e80a0d2b1b576fdd1657 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 840414 - timestamp: 1732616043734 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py312h52516f5_0.conda - sha256: 4c19a544354172b2273553267e734795a6da3c78a04c2d19f8e9e159ca3178bc - md5: e28996d9d2d44d777b7e6fb12f63715b - depends: - - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 841662 - timestamp: 1732616934923 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda - sha256: 964a2705a36c50040c967b18b45b9cc8de3c2aff4af546979a574e0b38e58e39 - md5: fb0605888a475d6a380ae1d1a819d976 - depends: - - __osx >=11.0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: Apache - size: 842549 - timestamp: 1732616081362 -- conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda - sha256: 11e2c85468ae9902d24a27137b6b39b4a78099806e551d390e394a8c34b48e40 - md5: 9efbfdc37242619130ea42b1cc4ed861 - depends: - - colorama - - python >=3.9 - license: MPL-2.0 or MIT - size: 89498 - timestamp: 1735661472632 -- conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - sha256: f39a5620c6e8e9e98357507262a7869de2ae8cc07da8b7f84e517c9fd6c2b959 - md5: 019a7385be9af33791c989871317e1ed - depends: - - python >=3.9 - license: BSD-3-Clause - license_family: BSD - size: 110051 - timestamp: 1733367480074 -- conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - sha256: 337be7af5af8b2817f115b3b68870208b30c31d3439bec07bfb2d8f4823e3568 - md5: d17f13df8b65464ca316cbc000a3cb64 - depends: - - python >=3.9 - license: PSF-2.0 - license_family: PSF - size: 39637 - timestamp: 1733188758212 -- conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda - sha256: c4b1ae8a2931fe9b274c44af29c5475a85b37693999f8c792dad0f8c6734b1de - md5: dbcace4706afdfb7eb891f7b37d07c04 - license: LicenseRef-Public-Domain - size: 122921 - timestamp: 1737119101255 -- conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda - sha256: a4dc72c96848f764bb5a5176aa93dd1e9b9e52804137b99daeebba277b31ea10 - md5: 3947a35e916fcc6b9825449affbf4214 - depends: - - __glibc >=2.17,<3.0.a0 - - krb5 >=1.21.3,<1.22.0a0 - - libgcc >=13 - - libsodium >=1.0.20,<1.0.21.0a0 - - libstdcxx >=13 - arch: x86_64 - platform: linux - license: MPL-2.0 - license_family: MOZILLA - size: 335400 - timestamp: 1731585026517 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zeromq-4.3.5-h5efb499_7.conda - sha256: a6003096dc0570a86492040ba32b04ce7662b159600be2252b7a0dfb9414e21c - md5: f2f3282559a4b87b7256ecafb4610107 - depends: - - krb5 >=1.21.3,<1.22.0a0 - - libgcc >=13 - - libsodium >=1.0.20,<1.0.21.0a0 - - libstdcxx >=13 - arch: aarch64 - platform: linux - license: MPL-2.0 - license_family: MOZILLA - size: 371419 - timestamp: 1731589490850 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda - sha256: 9e585569fe2e7d3bea71972cd4b9f06b1a7ab8fa7c5139f92a31cbceecf25a8a - md5: f7e6b65943cb73bce0143737fded08f1 - depends: - - __osx >=11.0 - - krb5 >=1.21.3,<1.22.0a0 - - libcxx >=18 - - libsodium >=1.0.20,<1.0.21.0a0 - arch: arm64 - platform: osx - license: MPL-2.0 - license_family: MOZILLA - size: 281565 - timestamp: 1731585108039 -- conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - sha256: 567c04f124525c97a096b65769834b7acb047db24b15a56888a322bf3966c3e1 - md5: 0c3cc595284c5e8f0f9900a9b228a332 - depends: - - python >=3.9 - license: MIT - license_family: MIT - size: 21809 - timestamp: 1732827613585 diff --git a/.github/CODEOWNERS b/mojo/.github/CODEOWNERS similarity index 100% rename from .github/CODEOWNERS rename to mojo/.github/CODEOWNERS diff --git a/mojo/.github/ISSUE_TEMPLATE/doc_issue.yaml b/mojo/.github/ISSUE_TEMPLATE/doc_issue.yaml new file mode 100644 index 0000000000..daf162cefc --- /dev/null +++ b/mojo/.github/ISSUE_TEMPLATE/doc_issue.yaml @@ -0,0 +1,50 @@ +##===----------------------------------------------------------------------===## +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +##===----------------------------------------------------------------------===## + +name: Documentation issue +description: Report a problem with the Mojo docs +title: "[Docs]" +labels: + - documentation +body: + - type: markdown + attributes: + value: | + Thank you for helping us improve the Mojo docs! + + Please add a title above and fill in the following fields so we can understand the problem. + + - type: input + attributes: + label: Where is the problem? + description: Provide a link to the problematic page (with a heading anchor). + validations: + required: true + + - type: textarea + attributes: + label: What can we do better? + description: Describe the documentation problem and how you suggest we fix it. + validations: + required: true + + - type: textarea + attributes: + label: Anything else? + validations: + required: false + + - type: markdown + attributes: + value: | + Thank you! diff --git a/.github/ISSUE_TEMPLATE/mojo_bug_report.yaml b/mojo/.github/ISSUE_TEMPLATE/mojo_bug_report.yaml similarity index 100% rename from .github/ISSUE_TEMPLATE/mojo_bug_report.yaml rename to mojo/.github/ISSUE_TEMPLATE/mojo_bug_report.yaml diff --git a/.github/ISSUE_TEMPLATE/mojo_feature_request.yaml b/mojo/.github/ISSUE_TEMPLATE/mojo_feature_request.yaml similarity index 100% rename from .github/ISSUE_TEMPLATE/mojo_feature_request.yaml rename to mojo/.github/ISSUE_TEMPLATE/mojo_feature_request.yaml diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/mojo/.github/PULL_REQUEST_TEMPLATE.md similarity index 100% rename from .github/PULL_REQUEST_TEMPLATE.md rename to mojo/.github/PULL_REQUEST_TEMPLATE.md diff --git a/.github/workflows/check_pr_target.yml b/mojo/.github/workflows/check_pr_target.yml similarity index 100% rename from .github/workflows/check_pr_target.yml rename to mojo/.github/workflows/check_pr_target.yml diff --git a/.github/workflows/check_pr_title.yml b/mojo/.github/workflows/check_pr_title.yml similarity index 100% rename from .github/workflows/check_pr_title.yml rename to mojo/.github/workflows/check_pr_title.yml diff --git a/.github/workflows/standard_library_tests_and_examples.yml b/mojo/.github/workflows/standard_library_tests_and_examples.yml similarity index 100% rename from .github/workflows/standard_library_tests_and_examples.yml rename to mojo/.github/workflows/standard_library_tests_and_examples.yml diff --git a/.github/workflows/test_pre_commit.yml b/mojo/.github/workflows/test_pre_commit.yml similarity index 100% rename from .github/workflows/test_pre_commit.yml rename to mojo/.github/workflows/test_pre_commit.yml diff --git a/mojo/CODE_OF_CONDUCT.md b/mojo/CODE_OF_CONDUCT.md new file mode 100644 index 0000000000..f4f5ad5a25 --- /dev/null +++ b/mojo/CODE_OF_CONDUCT.md @@ -0,0 +1,71 @@ +# Code of conduct + +In the interest of fostering an open and welcoming environment, we as +contributors and maintainers pledge to make participation in our project and +our community a harassment-free experience for everyone, regardless of age, +body size, disability, ethnicity, gender identity and expression, level of +experience, nationality, personal appearance, race, religion, or sexual +identity and orientation. + +## Our standards + +All community forums and spaces are meant for professional interactions that +are friendly, inclusive, helpful, and collaborative. Examples of behavior that +contributes to creating a positive environment include: + +- Using welcoming and inclusive language. +- Being respectful of differing viewpoints and experiences. +- Gracefully accepting constructive criticism. +- Focusing on what is best for the community. +- Showing empathy towards other community members. + +Any behavior that could reasonably be considered inappropriate in a +professional setting is unacceptable. Examples of unacceptable behavior by +participants include: + +- The use of sexualized language or imagery and unwelcome sexual attention or + advances. +- Trolling, insulting/derogatory comments, and personal or political attacks. +- Public or private harassment. +- Publishing others' private information, such as a physical or electronic + address, without explicit permission. +- Conduct which could reasonably be considered inappropriate for the forum in + which it occurs. + +## Our responsibilities + +Project maintainers are responsible for clarifying the standards of acceptable +behavior and are expected to take appropriate and fair corrective action in +response to any instances of unacceptable behavior. + +Project maintainers have the right and responsibility to remove, edit, or +reject comments, commits, code, wiki edits, issues, and other contributions +that are not aligned to this Code of Conduct, or to ban temporarily or +permanently any contributor for other behaviors that they deem inappropriate, +threatening, offensive, or harmful. + +## Scope + +This Code of Conduct applies to all project content and public spaces on the +Mojo GitHub repo, the rest of Modular’s GitHub organization, and all other +official Mojo community spaces and communication mediums, whether offline or +online. + +## Enforcement + +Instances of abusive, harassment, or otherwise unacceptable behavior should be +reported to the project team at . All complaints will +be reviewed and investigated and will result in a response that is deemed +necessary and appropriate to the circumstances. The project team is obligated +to maintain confidentiality with regard to the reporter of an incident. Further +details of specific enforcement policies may be posted separately. + +Project maintainers who do not follow or enforce the Code of Conduct in good +faith may face temporary or permanent repercussions as determined by other +members of the project's leadership. + +## Attribution + +This Code of Conduct is adapted from the Contributor Covenant, version 1.4, +available at , and includes some +aspects of the Geek Feminism Code of Conduct and the Drupal Code of Conduct. diff --git a/CONTRIBUTING.md b/mojo/CONTRIBUTING.md similarity index 100% rename from CONTRIBUTING.md rename to mojo/CONTRIBUTING.md diff --git a/mojo/LICENSE b/mojo/LICENSE new file mode 100644 index 0000000000..c1af4075d5 --- /dev/null +++ b/mojo/LICENSE @@ -0,0 +1,235 @@ +============================================================================================== +The Mojo repository is licensed under the Apache License v2.0 with LLVM Exceptions: +============================================================================================== + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +---- LLVM Exceptions to the Apache 2.0 License ---- + +As an exception, if, as a result of your compiling your source code, portions +of this Software are embedded into an Object form of such source code, you +may redistribute such embedded portions in such Object form without complying +with the conditions of Sections 4(a), 4(b) and 4(d) of the License. + +In addition, if you combine or link compiled forms of this Software with +software that is licensed under the GPLv2 ("Combined Software") and if a +court of competent jurisdiction determines that the patent provision (Section +3), the indemnity provision (Section 9) or other Section of the License +conflicts with the conditions of the GPLv2, you may retroactively and +prospectively choose to deem waived or otherwise exclude such Section(s) of +the License, but only in their entirety and only with respect to the Combined +Software. + +============================================================================== +Software from third parties included in the LLVM Project: +============================================================================== + +The LLVM Project contains third party software which is under different license +terms. All such code will be identified clearly using at least one of two +mechanisms: + +1) It will be in a separate directory tree with its own `LICENSE.txt` or + `LICENSE` file at the top containing the specific license and restrictions + which apply to that software, or +2) It will contain specific license and restriction terms at the top of every + file. diff --git a/mojo/README.md b/mojo/README.md new file mode 100644 index 0000000000..2a4878c789 --- /dev/null +++ b/mojo/README.md @@ -0,0 +1,113 @@ +
    + + + [Website][Mojo] | [Getting Started] | [API Documentation] | [Contributing] | [Changelog] +
    + +[Mojo]: https://www.modular.com/mojo/ +[Getting Started]: https://docs.modular.com/mojo/manual/get-started/ +[API Documentation]: https://docs.modular.com/mojo/lib +[Contributing]: ./CONTRIBUTING.md +[Changelog]: ./docs/changelog.md + +# Welcome to Mojo 🔥 + +Mojo is a new programming language that bridges the gap between research +and production by combining Python syntax and ecosystem with systems +programming and metaprogramming features. Mojo is still young, but it is +designed to write blazing-fast code for CPUs, GPUs, and more as part of +the [MAX Platform](https://www.modular.com/max). + +This repo includes source code for: + +- Mojo examples +- Mojo documentation hosted at [modular.com](https://docs.modular.com/mojo/) +- The [Mojo standard library](https://docs.modular.com/mojo/lib) + +This repo has two primary branches: + +- The [`stable`](https://github.com/modular/mojo/tree/stable) branch, which +is in sync with the last stable released version of Mojo. Use the examples +here if you’re using a [release build of Mojo](#latest-released). + +- The [`main`](https://github.com/modular/mojo/tree/main) branch, which +is in sync with the Mojo nightly build and subject to breakage. Use this branch +for [contributions](./CONTRIBUTING.md), or if you're using the latest +[nightly build of Mojo](#latest-nightly). + +To learn more about Mojo, see the +[Mojo Manual](https://docs.modular.com/mojo/manual/). + +## Installing Mojo + +### Latest Released + +To install the last released build of Mojo, follow the guide to +[Get started with Mojo](https://docs.modular.com/mojo/manual/get-started). + +### Latest Nightly + +The nightly Mojo builds are subject to breakage and provide an inside +view of how the development of Mojo is progressing. Use at your own risk +and be patient! + +To get nightly builds, see the same instructions to [Get started with +Mojo](https://docs.modular.com/mojo/manual/get-started), but when you create +your project, instead use the following `magic init` command to set the +conda package channel to `max-nightly`: + +```bash +magic init hello-world-nightly --format mojoproject \ + -c conda-forge -c https://conda.modular.com/max-nightly +``` + +Or, if you're [using conda](https://docs.modular.com/magic/conda), add the +`https://conda.modular.com/max-nightly/` channel to your `environment.yaml` +file. For example: + +```yaml +[project] +name = "Mojo nightly example" +channels = ["conda-forge", "https://conda.modular.com/max-nightly/"] +platforms = ["osx-arm64", "linux-aarch64", "linux-64"] + +[dependencies] +max = "*" +``` + +When you clone this repo, you'll be on the `main` branch by default, +which includes code matching the latest nightly build: + +```bash +git clone https://github.com/modular/mojo.git +``` + +If you want to instead see the source from the most recent stable +release, then you can switch to the `stable` branch. + +## Contributing + +When you want to report issues or request features, [please create a GitHub +issue here](https://github.com/modular/mojo/issues). +See [here](./CONTRIBUTING.md) for guidelines on filing good bugs. + +We welcome contributions to this repo on the +[`main`](https://github.com/modular/mojo/tree/main) +branch. If you’d like to contribute to Mojo, please first read our [Contributor +Guide](https://github.com/modular/mojo/blob/main/CONTRIBUTING.md). + +For more general questions or to chat with other Mojo developers, check out our +[Discord](https://discord.gg/modular). + +## License + +This repository and its contributions are licensed under the Apache License v2.0 +with LLVM Exceptions (see the LLVM [License](https://llvm.org/LICENSE.txt)). +MAX and Mojo usage and distribution are licensed under the +[MAX & Mojo Community License](https://www.modular.com/legal/max-mojo-license). + +## Thanks to our contributors + +
    + + diff --git a/docs/README.md b/mojo/docs/README.md similarity index 100% rename from docs/README.md rename to mojo/docs/README.md diff --git a/docs/changelog-released.md b/mojo/docs/changelog-released.md similarity index 100% rename from docs/changelog-released.md rename to mojo/docs/changelog-released.md diff --git a/docs/changelog.md b/mojo/docs/changelog.md similarity index 100% rename from docs/changelog.md rename to mojo/docs/changelog.md diff --git a/docs/faq.md b/mojo/docs/faq.md similarity index 100% rename from docs/faq.md rename to mojo/docs/faq.md diff --git a/docs/images/dynamic-vector-capacity.png b/mojo/docs/images/dynamic-vector-capacity.png similarity index 100% rename from docs/images/dynamic-vector-capacity.png rename to mojo/docs/images/dynamic-vector-capacity.png diff --git a/docs/images/let-to-var.png b/mojo/docs/images/let-to-var.png similarity index 100% rename from docs/images/let-to-var.png rename to mojo/docs/images/let-to-var.png diff --git a/docs/images/vectorize-fix.png b/mojo/docs/images/vectorize-fix.png similarity index 100% rename from docs/images/vectorize-fix.png rename to mojo/docs/images/vectorize-fix.png diff --git a/docs/lib.mdx b/mojo/docs/lib.mdx similarity index 100% rename from docs/lib.mdx rename to mojo/docs/lib.mdx diff --git a/docs/manual/basics.mdx b/mojo/docs/manual/basics.mdx similarity index 100% rename from docs/manual/basics.mdx rename to mojo/docs/manual/basics.mdx diff --git a/docs/manual/control-flow.mdx b/mojo/docs/manual/control-flow.mdx similarity index 100% rename from docs/manual/control-flow.mdx rename to mojo/docs/manual/control-flow.mdx diff --git a/docs/manual/decorators/always-inline.md b/mojo/docs/manual/decorators/always-inline.md similarity index 100% rename from docs/manual/decorators/always-inline.md rename to mojo/docs/manual/decorators/always-inline.md diff --git a/docs/manual/decorators/copy-capture.md b/mojo/docs/manual/decorators/copy-capture.md similarity index 100% rename from docs/manual/decorators/copy-capture.md rename to mojo/docs/manual/decorators/copy-capture.md diff --git a/docs/manual/decorators/implicit.md b/mojo/docs/manual/decorators/implicit.md similarity index 100% rename from docs/manual/decorators/implicit.md rename to mojo/docs/manual/decorators/implicit.md diff --git a/docs/manual/decorators/index.mdx b/mojo/docs/manual/decorators/index.mdx similarity index 100% rename from docs/manual/decorators/index.mdx rename to mojo/docs/manual/decorators/index.mdx diff --git a/docs/manual/decorators/nonmaterializable.md b/mojo/docs/manual/decorators/nonmaterializable.md similarity index 100% rename from docs/manual/decorators/nonmaterializable.md rename to mojo/docs/manual/decorators/nonmaterializable.md diff --git a/docs/manual/decorators/parameter.md b/mojo/docs/manual/decorators/parameter.md similarity index 100% rename from docs/manual/decorators/parameter.md rename to mojo/docs/manual/decorators/parameter.md diff --git a/docs/manual/decorators/register-passable.md b/mojo/docs/manual/decorators/register-passable.md similarity index 100% rename from docs/manual/decorators/register-passable.md rename to mojo/docs/manual/decorators/register-passable.md diff --git a/docs/manual/decorators/staticmethod.md b/mojo/docs/manual/decorators/staticmethod.md similarity index 100% rename from docs/manual/decorators/staticmethod.md rename to mojo/docs/manual/decorators/staticmethod.md diff --git a/docs/manual/decorators/value.md b/mojo/docs/manual/decorators/value.md similarity index 100% rename from docs/manual/decorators/value.md rename to mojo/docs/manual/decorators/value.md diff --git a/docs/manual/errors.mdx b/mojo/docs/manual/errors.mdx similarity index 100% rename from docs/manual/errors.mdx rename to mojo/docs/manual/errors.mdx diff --git a/docs/manual/functions.mdx b/mojo/docs/manual/functions.mdx similarity index 100% rename from docs/manual/functions.mdx rename to mojo/docs/manual/functions.mdx diff --git a/docs/manual/get-started.mdx b/mojo/docs/manual/get-started.mdx similarity index 100% rename from docs/manual/get-started.mdx rename to mojo/docs/manual/get-started.mdx diff --git a/docs/manual/images/game-of-life-screen.png b/mojo/docs/manual/images/game-of-life-screen.png similarity index 100% rename from docs/manual/images/game-of-life-screen.png rename to mojo/docs/manual/images/game-of-life-screen.png diff --git a/docs/manual/images/mojo-vscode.png b/mojo/docs/manual/images/mojo-vscode.png similarity index 100% rename from docs/manual/images/mojo-vscode.png rename to mojo/docs/manual/images/mojo-vscode.png diff --git a/docs/manual/images/owned-pointer-diagram-dark.png b/mojo/docs/manual/images/owned-pointer-diagram-dark.png similarity index 100% rename from docs/manual/images/owned-pointer-diagram-dark.png rename to mojo/docs/manual/images/owned-pointer-diagram-dark.png diff --git a/docs/manual/images/owned-pointer-diagram.png b/mojo/docs/manual/images/owned-pointer-diagram.png similarity index 100% rename from docs/manual/images/owned-pointer-diagram.png rename to mojo/docs/manual/images/owned-pointer-diagram.png diff --git a/docs/manual/images/pointer-diagram-dark.png b/mojo/docs/manual/images/pointer-diagram-dark.png similarity index 100% rename from docs/manual/images/pointer-diagram-dark.png rename to mojo/docs/manual/images/pointer-diagram-dark.png diff --git a/docs/manual/images/pointer-diagram.png b/mojo/docs/manual/images/pointer-diagram.png similarity index 100% rename from docs/manual/images/pointer-diagram.png rename to mojo/docs/manual/images/pointer-diagram.png diff --git a/docs/manual/images/pointer-lifecycle-dark.png b/mojo/docs/manual/images/pointer-lifecycle-dark.png similarity index 100% rename from docs/manual/images/pointer-lifecycle-dark.png rename to mojo/docs/manual/images/pointer-lifecycle-dark.png diff --git a/docs/manual/images/pointer-lifecycle.png b/mojo/docs/manual/images/pointer-lifecycle.png similarity index 100% rename from docs/manual/images/pointer-lifecycle.png rename to mojo/docs/manual/images/pointer-lifecycle.png diff --git a/docs/manual/images/pointer-offset-dark.png b/mojo/docs/manual/images/pointer-offset-dark.png similarity index 100% rename from docs/manual/images/pointer-offset-dark.png rename to mojo/docs/manual/images/pointer-offset-dark.png diff --git a/docs/manual/images/pointer-offset.png b/mojo/docs/manual/images/pointer-offset.png similarity index 100% rename from docs/manual/images/pointer-offset.png rename to mojo/docs/manual/images/pointer-offset.png diff --git a/docs/manual/images/strided-load-storage-dark.png b/mojo/docs/manual/images/strided-load-storage-dark.png similarity index 100% rename from docs/manual/images/strided-load-storage-dark.png rename to mojo/docs/manual/images/strided-load-storage-dark.png diff --git a/docs/manual/images/strided-load-storage.png b/mojo/docs/manual/images/strided-load-storage.png similarity index 100% rename from docs/manual/images/strided-load-storage.png rename to mojo/docs/manual/images/strided-load-storage.png diff --git a/docs/manual/index.md b/mojo/docs/manual/index.md similarity index 100% rename from docs/manual/index.md rename to mojo/docs/manual/index.md diff --git a/docs/manual/lifecycle/death.mdx b/mojo/docs/manual/lifecycle/death.mdx similarity index 100% rename from docs/manual/lifecycle/death.mdx rename to mojo/docs/manual/lifecycle/death.mdx diff --git a/docs/manual/lifecycle/index.mdx b/mojo/docs/manual/lifecycle/index.mdx similarity index 100% rename from docs/manual/lifecycle/index.mdx rename to mojo/docs/manual/lifecycle/index.mdx diff --git a/docs/manual/lifecycle/life.mdx b/mojo/docs/manual/lifecycle/life.mdx similarity index 100% rename from docs/manual/lifecycle/life.mdx rename to mojo/docs/manual/lifecycle/life.mdx diff --git a/docs/manual/operators.mdx b/mojo/docs/manual/operators.mdx similarity index 100% rename from docs/manual/operators.mdx rename to mojo/docs/manual/operators.mdx diff --git a/docs/manual/packages.md b/mojo/docs/manual/packages.md similarity index 100% rename from docs/manual/packages.md rename to mojo/docs/manual/packages.md diff --git a/docs/manual/parameters/index.mdx b/mojo/docs/manual/parameters/index.mdx similarity index 100% rename from docs/manual/parameters/index.mdx rename to mojo/docs/manual/parameters/index.mdx diff --git a/docs/manual/pointers/index.mdx b/mojo/docs/manual/pointers/index.mdx similarity index 100% rename from docs/manual/pointers/index.mdx rename to mojo/docs/manual/pointers/index.mdx diff --git a/docs/manual/pointers/unsafe-pointers.mdx b/mojo/docs/manual/pointers/unsafe-pointers.mdx similarity index 100% rename from docs/manual/pointers/unsafe-pointers.mdx rename to mojo/docs/manual/pointers/unsafe-pointers.mdx diff --git a/docs/manual/python/index.mdx b/mojo/docs/manual/python/index.mdx similarity index 100% rename from docs/manual/python/index.mdx rename to mojo/docs/manual/python/index.mdx diff --git a/docs/manual/python/types.mdx b/mojo/docs/manual/python/types.mdx similarity index 100% rename from docs/manual/python/types.mdx rename to mojo/docs/manual/python/types.mdx diff --git a/docs/manual/structs.mdx b/mojo/docs/manual/structs.mdx similarity index 100% rename from docs/manual/structs.mdx rename to mojo/docs/manual/structs.mdx diff --git a/docs/manual/traits.mdx b/mojo/docs/manual/traits.mdx similarity index 100% rename from docs/manual/traits.mdx rename to mojo/docs/manual/traits.mdx diff --git a/docs/manual/types.mdx b/mojo/docs/manual/types.mdx similarity index 100% rename from docs/manual/types.mdx rename to mojo/docs/manual/types.mdx diff --git a/docs/manual/values/index.mdx b/mojo/docs/manual/values/index.mdx similarity index 100% rename from docs/manual/values/index.mdx rename to mojo/docs/manual/values/index.mdx diff --git a/docs/manual/values/lifetimes.mdx b/mojo/docs/manual/values/lifetimes.mdx similarity index 100% rename from docs/manual/values/lifetimes.mdx rename to mojo/docs/manual/values/lifetimes.mdx diff --git a/docs/manual/values/ownership.mdx b/mojo/docs/manual/values/ownership.mdx similarity index 100% rename from docs/manual/values/ownership.mdx rename to mojo/docs/manual/values/ownership.mdx diff --git a/docs/manual/values/value-semantics.mdx b/mojo/docs/manual/values/value-semantics.mdx similarity index 100% rename from docs/manual/values/value-semantics.mdx rename to mojo/docs/manual/values/value-semantics.mdx diff --git a/docs/manual/variables.mdx b/mojo/docs/manual/variables.mdx similarity index 100% rename from docs/manual/variables.mdx rename to mojo/docs/manual/variables.mdx diff --git a/docs/roadmap.md b/mojo/docs/roadmap.md similarity index 100% rename from docs/roadmap.md rename to mojo/docs/roadmap.md diff --git a/docs/tools/debugging.mdx b/mojo/docs/tools/debugging.mdx similarity index 100% rename from docs/tools/debugging.mdx rename to mojo/docs/tools/debugging.mdx diff --git a/docs/tools/images/break-on-raise.png b/mojo/docs/tools/images/break-on-raise.png similarity index 100% rename from docs/tools/images/break-on-raise.png rename to mojo/docs/tools/images/break-on-raise.png diff --git a/docs/tools/images/breakpoint-hit-count.png b/mojo/docs/tools/images/breakpoint-hit-count.png similarity index 100% rename from docs/tools/images/breakpoint-hit-count.png rename to mojo/docs/tools/images/breakpoint-hit-count.png diff --git a/docs/tools/images/debug-toolbar.png b/mojo/docs/tools/images/debug-toolbar.png similarity index 100% rename from docs/tools/images/debug-toolbar.png rename to mojo/docs/tools/images/debug-toolbar.png diff --git a/docs/tools/images/debugger-call-stack-nested1.png b/mojo/docs/tools/images/debugger-call-stack-nested1.png similarity index 100% rename from docs/tools/images/debugger-call-stack-nested1.png rename to mojo/docs/tools/images/debugger-call-stack-nested1.png diff --git a/docs/tools/images/debugger-variables.png b/mojo/docs/tools/images/debugger-variables.png similarity index 100% rename from docs/tools/images/debugger-variables.png rename to mojo/docs/tools/images/debugger-variables.png diff --git a/docs/tools/images/launch-configuration-menu.png b/mojo/docs/tools/images/launch-configuration-menu.png similarity index 100% rename from docs/tools/images/launch-configuration-menu.png rename to mojo/docs/tools/images/launch-configuration-menu.png diff --git a/docs/tools/images/quick-run-or-debug-button-debug.png b/mojo/docs/tools/images/quick-run-or-debug-button-debug.png similarity index 100% rename from docs/tools/images/quick-run-or-debug-button-debug.png rename to mojo/docs/tools/images/quick-run-or-debug-button-debug.png diff --git a/docs/tools/images/quick-run-or-debug-button.png b/mojo/docs/tools/images/quick-run-or-debug-button.png similarity index 100% rename from docs/tools/images/quick-run-or-debug-button.png rename to mojo/docs/tools/images/quick-run-or-debug-button.png diff --git a/docs/tools/images/quick-run-or-debug-menu.png b/mojo/docs/tools/images/quick-run-or-debug-menu.png similarity index 100% rename from docs/tools/images/quick-run-or-debug-menu.png rename to mojo/docs/tools/images/quick-run-or-debug-menu.png diff --git a/docs/tools/images/run-and-debug-icon.png b/mojo/docs/tools/images/run-and-debug-icon.png similarity index 100% rename from docs/tools/images/run-and-debug-icon.png rename to mojo/docs/tools/images/run-and-debug-icon.png diff --git a/docs/tools/images/run-and-debug-view.png b/mojo/docs/tools/images/run-and-debug-view.png similarity index 100% rename from docs/tools/images/run-and-debug-view.png rename to mojo/docs/tools/images/run-and-debug-view.png diff --git a/docs/tools/images/run-start-view.png b/mojo/docs/tools/images/run-start-view.png similarity index 100% rename from docs/tools/images/run-start-view.png rename to mojo/docs/tools/images/run-start-view.png diff --git a/docs/tools/testing.mdx b/mojo/docs/tools/testing.mdx similarity index 100% rename from docs/tools/testing.mdx rename to mojo/docs/tools/testing.mdx diff --git a/docs/why-mojo.md b/mojo/docs/why-mojo.md similarity index 100% rename from docs/why-mojo.md rename to mojo/docs/why-mojo.md diff --git a/pixi.toml b/mojo/pixi.toml similarity index 100% rename from pixi.toml rename to mojo/pixi.toml diff --git a/proposals/README.md b/mojo/proposals/README.md similarity index 100% rename from proposals/README.md rename to mojo/proposals/README.md diff --git a/proposals/always_inline_builtin.md b/mojo/proposals/always_inline_builtin.md similarity index 100% rename from proposals/always_inline_builtin.md rename to mojo/proposals/always_inline_builtin.md diff --git a/proposals/byte-as-uint8.md b/mojo/proposals/byte-as-uint8.md similarity index 100% rename from proposals/byte-as-uint8.md rename to mojo/proposals/byte-as-uint8.md diff --git a/proposals/improved-hash-module.md b/mojo/proposals/improved-hash-module.md similarity index 100% rename from proposals/improved-hash-module.md rename to mojo/proposals/improved-hash-module.md diff --git a/proposals/inferred-parameters.md b/mojo/proposals/inferred-parameters.md similarity index 100% rename from proposals/inferred-parameters.md rename to mojo/proposals/inferred-parameters.md diff --git a/proposals/lifetimes-and-provenance.md b/mojo/proposals/lifetimes-and-provenance.md similarity index 100% rename from proposals/lifetimes-and-provenance.md rename to mojo/proposals/lifetimes-and-provenance.md diff --git a/proposals/lifetimes-keyword-renaming.md b/mojo/proposals/lifetimes-keyword-renaming.md similarity index 100% rename from proposals/lifetimes-keyword-renaming.md rename to mojo/proposals/lifetimes-keyword-renaming.md diff --git a/proposals/mojo-and-dynamism.md b/mojo/proposals/mojo-and-dynamism.md similarity index 100% rename from proposals/mojo-and-dynamism.md rename to mojo/proposals/mojo-and-dynamism.md diff --git a/proposals/opt-in-implicit-conversion.md b/mojo/proposals/opt-in-implicit-conversion.md similarity index 100% rename from proposals/opt-in-implicit-conversion.md rename to mojo/proposals/opt-in-implicit-conversion.md diff --git a/proposals/project-manifest-and-build-tool.md b/mojo/proposals/project-manifest-and-build-tool.md similarity index 100% rename from proposals/project-manifest-and-build-tool.md rename to mojo/proposals/project-manifest-and-build-tool.md diff --git a/proposals/ref-convention.md b/mojo/proposals/ref-convention.md similarity index 100% rename from proposals/ref-convention.md rename to mojo/proposals/ref-convention.md diff --git a/proposals/remove-let-decls.md b/mojo/proposals/remove-let-decls.md similarity index 100% rename from proposals/remove-let-decls.md rename to mojo/proposals/remove-let-decls.md diff --git a/proposals/stdlib-insider-docs.md b/mojo/proposals/stdlib-insider-docs.md similarity index 100% rename from proposals/stdlib-insider-docs.md rename to mojo/proposals/stdlib-insider-docs.md diff --git a/proposals/value-ownership.md b/mojo/proposals/value-ownership.md similarity index 100% rename from proposals/value-ownership.md rename to mojo/proposals/value-ownership.md diff --git a/stdlib/README.md b/mojo/stdlib/README.md similarity index 100% rename from stdlib/README.md rename to mojo/stdlib/README.md diff --git a/stdlib/benchmarks/README.md b/mojo/stdlib/benchmarks/README.md similarity index 100% rename from stdlib/benchmarks/README.md rename to mojo/stdlib/benchmarks/README.md diff --git a/stdlib/benchmarks/algorithm/bench_elementwise.mojo b/mojo/stdlib/benchmarks/algorithm/bench_elementwise.mojo similarity index 100% rename from stdlib/benchmarks/algorithm/bench_elementwise.mojo rename to mojo/stdlib/benchmarks/algorithm/bench_elementwise.mojo diff --git a/stdlib/benchmarks/builtin/bench_int.mojo b/mojo/stdlib/benchmarks/builtin/bench_int.mojo similarity index 100% rename from stdlib/benchmarks/builtin/bench_int.mojo rename to mojo/stdlib/benchmarks/builtin/bench_int.mojo diff --git a/stdlib/benchmarks/builtin/bench_sort.mojo b/mojo/stdlib/benchmarks/builtin/bench_sort.mojo similarity index 100% rename from stdlib/benchmarks/builtin/bench_sort.mojo rename to mojo/stdlib/benchmarks/builtin/bench_sort.mojo diff --git a/stdlib/benchmarks/collections/bench_dict.mojo b/mojo/stdlib/benchmarks/collections/bench_dict.mojo similarity index 100% rename from stdlib/benchmarks/collections/bench_dict.mojo rename to mojo/stdlib/benchmarks/collections/bench_dict.mojo diff --git a/stdlib/benchmarks/collections/bench_string.mojo b/mojo/stdlib/benchmarks/collections/bench_string.mojo similarity index 100% rename from stdlib/benchmarks/collections/bench_string.mojo rename to mojo/stdlib/benchmarks/collections/bench_string.mojo diff --git a/stdlib/benchmarks/collections/data/README.md b/mojo/stdlib/benchmarks/collections/data/README.md similarity index 100% rename from stdlib/benchmarks/collections/data/README.md rename to mojo/stdlib/benchmarks/collections/data/README.md diff --git a/stdlib/benchmarks/collections/data/UN_charter_AR.html b/mojo/stdlib/benchmarks/collections/data/UN_charter_AR.html similarity index 100% rename from stdlib/benchmarks/collections/data/UN_charter_AR.html rename to mojo/stdlib/benchmarks/collections/data/UN_charter_AR.html diff --git a/stdlib/benchmarks/collections/data/UN_charter_AR.txt b/mojo/stdlib/benchmarks/collections/data/UN_charter_AR.txt similarity index 100% rename from stdlib/benchmarks/collections/data/UN_charter_AR.txt rename to mojo/stdlib/benchmarks/collections/data/UN_charter_AR.txt diff --git a/stdlib/benchmarks/collections/data/UN_charter_EN.html b/mojo/stdlib/benchmarks/collections/data/UN_charter_EN.html similarity index 100% rename from stdlib/benchmarks/collections/data/UN_charter_EN.html rename to mojo/stdlib/benchmarks/collections/data/UN_charter_EN.html diff --git a/stdlib/benchmarks/collections/data/UN_charter_EN.txt b/mojo/stdlib/benchmarks/collections/data/UN_charter_EN.txt similarity index 100% rename from stdlib/benchmarks/collections/data/UN_charter_EN.txt rename to mojo/stdlib/benchmarks/collections/data/UN_charter_EN.txt diff --git a/stdlib/benchmarks/collections/data/UN_charter_ES.html b/mojo/stdlib/benchmarks/collections/data/UN_charter_ES.html similarity index 100% rename from stdlib/benchmarks/collections/data/UN_charter_ES.html rename to mojo/stdlib/benchmarks/collections/data/UN_charter_ES.html diff --git a/stdlib/benchmarks/collections/data/UN_charter_ES.txt b/mojo/stdlib/benchmarks/collections/data/UN_charter_ES.txt similarity index 100% rename from stdlib/benchmarks/collections/data/UN_charter_ES.txt rename to mojo/stdlib/benchmarks/collections/data/UN_charter_ES.txt diff --git a/stdlib/benchmarks/collections/data/UN_charter_RU.html b/mojo/stdlib/benchmarks/collections/data/UN_charter_RU.html similarity index 100% rename from stdlib/benchmarks/collections/data/UN_charter_RU.html rename to mojo/stdlib/benchmarks/collections/data/UN_charter_RU.html diff --git a/stdlib/benchmarks/collections/data/UN_charter_RU.txt b/mojo/stdlib/benchmarks/collections/data/UN_charter_RU.txt similarity index 100% rename from stdlib/benchmarks/collections/data/UN_charter_RU.txt rename to mojo/stdlib/benchmarks/collections/data/UN_charter_RU.txt diff --git a/stdlib/benchmarks/collections/data/UN_charter_zh-CN.html b/mojo/stdlib/benchmarks/collections/data/UN_charter_zh-CN.html similarity index 100% rename from stdlib/benchmarks/collections/data/UN_charter_zh-CN.html rename to mojo/stdlib/benchmarks/collections/data/UN_charter_zh-CN.html diff --git a/stdlib/benchmarks/collections/data/UN_charter_zh-CN.txt b/mojo/stdlib/benchmarks/collections/data/UN_charter_zh-CN.txt similarity index 100% rename from stdlib/benchmarks/collections/data/UN_charter_zh-CN.txt rename to mojo/stdlib/benchmarks/collections/data/UN_charter_zh-CN.txt diff --git a/stdlib/benchmarks/hashlib/bench_hash.mojo b/mojo/stdlib/benchmarks/hashlib/bench_hash.mojo similarity index 100% rename from stdlib/benchmarks/hashlib/bench_hash.mojo rename to mojo/stdlib/benchmarks/hashlib/bench_hash.mojo diff --git a/stdlib/benchmarks/lit.cfg.py b/mojo/stdlib/benchmarks/lit.cfg.py similarity index 100% rename from stdlib/benchmarks/lit.cfg.py rename to mojo/stdlib/benchmarks/lit.cfg.py diff --git a/stdlib/benchmarks/math/bench_math.mojo b/mojo/stdlib/benchmarks/math/bench_math.mojo similarity index 100% rename from stdlib/benchmarks/math/bench_math.mojo rename to mojo/stdlib/benchmarks/math/bench_math.mojo diff --git a/stdlib/benchmarks/utils/bench_formatter.mojo b/mojo/stdlib/benchmarks/utils/bench_formatter.mojo similarity index 100% rename from stdlib/benchmarks/utils/bench_formatter.mojo rename to mojo/stdlib/benchmarks/utils/bench_formatter.mojo diff --git a/stdlib/benchmarks/utils/bench_memmem.mojo b/mojo/stdlib/benchmarks/utils/bench_memmem.mojo similarity index 100% rename from stdlib/benchmarks/utils/bench_memmem.mojo rename to mojo/stdlib/benchmarks/utils/bench_memmem.mojo diff --git a/stdlib/docs/development.md b/mojo/stdlib/docs/development.md similarity index 100% rename from stdlib/docs/development.md rename to mojo/stdlib/docs/development.md diff --git a/stdlib/docs/docstring-style-guide.md b/mojo/stdlib/docs/docstring-style-guide.md similarity index 100% rename from stdlib/docs/docstring-style-guide.md rename to mojo/stdlib/docs/docstring-style-guide.md diff --git a/stdlib/docs/faq.md b/mojo/stdlib/docs/faq.md similarity index 100% rename from stdlib/docs/faq.md rename to mojo/stdlib/docs/faq.md diff --git a/stdlib/docs/governance-structure.md b/mojo/stdlib/docs/governance-structure.md similarity index 100% rename from stdlib/docs/governance-structure.md rename to mojo/stdlib/docs/governance-structure.md diff --git a/stdlib/docs/images/create-fork.png b/mojo/stdlib/docs/images/create-fork.png similarity index 100% rename from stdlib/docs/images/create-fork.png rename to mojo/stdlib/docs/images/create-fork.png diff --git a/stdlib/docs/images/doc-lint-quick-fix.png b/mojo/stdlib/docs/images/doc-lint-quick-fix.png similarity index 100% rename from stdlib/docs/images/doc-lint-quick-fix.png rename to mojo/stdlib/docs/images/doc-lint-quick-fix.png diff --git a/stdlib/docs/images/nightly-extension.png b/mojo/stdlib/docs/images/nightly-extension.png similarity index 100% rename from stdlib/docs/images/nightly-extension.png rename to mojo/stdlib/docs/images/nightly-extension.png diff --git a/stdlib/docs/internal/README.md b/mojo/stdlib/docs/internal/README.md similarity index 100% rename from stdlib/docs/internal/README.md rename to mojo/stdlib/docs/internal/README.md diff --git a/stdlib/docs/internal/compiler.md b/mojo/stdlib/docs/internal/compiler.md similarity index 100% rename from stdlib/docs/internal/compiler.md rename to mojo/stdlib/docs/internal/compiler.md diff --git a/stdlib/docs/internal/mlir.md b/mojo/stdlib/docs/internal/mlir.md similarity index 100% rename from stdlib/docs/internal/mlir.md rename to mojo/stdlib/docs/internal/mlir.md diff --git a/stdlib/docs/internal/runtime.md b/mojo/stdlib/docs/internal/runtime.md similarity index 100% rename from stdlib/docs/internal/runtime.md rename to mojo/stdlib/docs/internal/runtime.md diff --git a/stdlib/docs/roadmap.md b/mojo/stdlib/docs/roadmap.md similarity index 100% rename from stdlib/docs/roadmap.md rename to mojo/stdlib/docs/roadmap.md diff --git a/stdlib/docs/style-guide.md b/mojo/stdlib/docs/style-guide.md similarity index 100% rename from stdlib/docs/style-guide.md rename to mojo/stdlib/docs/style-guide.md diff --git a/stdlib/docs/vision.md b/mojo/stdlib/docs/vision.md similarity index 100% rename from stdlib/docs/vision.md rename to mojo/stdlib/docs/vision.md diff --git a/stdlib/scripts/.markdownlint.yaml b/mojo/stdlib/scripts/.markdownlint.yaml similarity index 100% rename from stdlib/scripts/.markdownlint.yaml rename to mojo/stdlib/scripts/.markdownlint.yaml diff --git a/stdlib/scripts/build-stdlib.sh b/mojo/stdlib/scripts/build-stdlib.sh similarity index 100% rename from stdlib/scripts/build-stdlib.sh rename to mojo/stdlib/scripts/build-stdlib.sh diff --git a/stdlib/scripts/check-docstrings.py b/mojo/stdlib/scripts/check-docstrings.py similarity index 100% rename from stdlib/scripts/check-docstrings.py rename to mojo/stdlib/scripts/check-docstrings.py diff --git a/stdlib/scripts/check_licenses.mojo b/mojo/stdlib/scripts/check_licenses.mojo similarity index 100% rename from stdlib/scripts/check_licenses.mojo rename to mojo/stdlib/scripts/check_licenses.mojo diff --git a/stdlib/scripts/install-build-tools-linux.sh b/mojo/stdlib/scripts/install-build-tools-linux.sh similarity index 100% rename from stdlib/scripts/install-build-tools-linux.sh rename to mojo/stdlib/scripts/install-build-tools-linux.sh diff --git a/stdlib/scripts/install-build-tools-macos.sh b/mojo/stdlib/scripts/install-build-tools-macos.sh similarity index 100% rename from stdlib/scripts/install-build-tools-macos.sh rename to mojo/stdlib/scripts/install-build-tools-macos.sh diff --git a/stdlib/scripts/markdownlint.sh b/mojo/stdlib/scripts/markdownlint.sh similarity index 100% rename from stdlib/scripts/markdownlint.sh rename to mojo/stdlib/scripts/markdownlint.sh diff --git a/stdlib/scripts/run-benchmarks.sh b/mojo/stdlib/scripts/run-benchmarks.sh similarity index 100% rename from stdlib/scripts/run-benchmarks.sh rename to mojo/stdlib/scripts/run-benchmarks.sh diff --git a/stdlib/scripts/run-tests.sh b/mojo/stdlib/scripts/run-tests.sh similarity index 100% rename from stdlib/scripts/run-tests.sh rename to mojo/stdlib/scripts/run-tests.sh diff --git a/stdlib/src/__init__.mojo b/mojo/stdlib/src/__init__.mojo similarity index 100% rename from stdlib/src/__init__.mojo rename to mojo/stdlib/src/__init__.mojo diff --git a/stdlib/src/base64/__init__.mojo b/mojo/stdlib/src/base64/__init__.mojo similarity index 100% rename from stdlib/src/base64/__init__.mojo rename to mojo/stdlib/src/base64/__init__.mojo diff --git a/stdlib/src/base64/_b64encode.mojo b/mojo/stdlib/src/base64/_b64encode.mojo similarity index 100% rename from stdlib/src/base64/_b64encode.mojo rename to mojo/stdlib/src/base64/_b64encode.mojo diff --git a/stdlib/src/base64/base64.mojo b/mojo/stdlib/src/base64/base64.mojo similarity index 100% rename from stdlib/src/base64/base64.mojo rename to mojo/stdlib/src/base64/base64.mojo diff --git a/stdlib/src/bit/__init__.mojo b/mojo/stdlib/src/bit/__init__.mojo similarity index 100% rename from stdlib/src/bit/__init__.mojo rename to mojo/stdlib/src/bit/__init__.mojo diff --git a/stdlib/src/bit/bit.mojo b/mojo/stdlib/src/bit/bit.mojo similarity index 100% rename from stdlib/src/bit/bit.mojo rename to mojo/stdlib/src/bit/bit.mojo diff --git a/stdlib/src/builtin/__init__.mojo b/mojo/stdlib/src/builtin/__init__.mojo similarity index 100% rename from stdlib/src/builtin/__init__.mojo rename to mojo/stdlib/src/builtin/__init__.mojo diff --git a/stdlib/src/builtin/_closure.mojo b/mojo/stdlib/src/builtin/_closure.mojo similarity index 100% rename from stdlib/src/builtin/_closure.mojo rename to mojo/stdlib/src/builtin/_closure.mojo diff --git a/stdlib/src/builtin/_format_float.mojo b/mojo/stdlib/src/builtin/_format_float.mojo similarity index 100% rename from stdlib/src/builtin/_format_float.mojo rename to mojo/stdlib/src/builtin/_format_float.mojo diff --git a/stdlib/src/builtin/_location.mojo b/mojo/stdlib/src/builtin/_location.mojo similarity index 100% rename from stdlib/src/builtin/_location.mojo rename to mojo/stdlib/src/builtin/_location.mojo diff --git a/stdlib/src/builtin/_pybind.mojo b/mojo/stdlib/src/builtin/_pybind.mojo similarity index 100% rename from stdlib/src/builtin/_pybind.mojo rename to mojo/stdlib/src/builtin/_pybind.mojo diff --git a/stdlib/src/builtin/_startup.mojo b/mojo/stdlib/src/builtin/_startup.mojo similarity index 100% rename from stdlib/src/builtin/_startup.mojo rename to mojo/stdlib/src/builtin/_startup.mojo diff --git a/stdlib/src/builtin/_stubs.mojo b/mojo/stdlib/src/builtin/_stubs.mojo similarity index 100% rename from stdlib/src/builtin/_stubs.mojo rename to mojo/stdlib/src/builtin/_stubs.mojo diff --git a/stdlib/src/builtin/anytype.mojo b/mojo/stdlib/src/builtin/anytype.mojo similarity index 100% rename from stdlib/src/builtin/anytype.mojo rename to mojo/stdlib/src/builtin/anytype.mojo diff --git a/stdlib/src/builtin/bool.mojo b/mojo/stdlib/src/builtin/bool.mojo similarity index 100% rename from stdlib/src/builtin/bool.mojo rename to mojo/stdlib/src/builtin/bool.mojo diff --git a/stdlib/src/builtin/breakpoint.mojo b/mojo/stdlib/src/builtin/breakpoint.mojo similarity index 100% rename from stdlib/src/builtin/breakpoint.mojo rename to mojo/stdlib/src/builtin/breakpoint.mojo diff --git a/stdlib/src/builtin/builtin_list.mojo b/mojo/stdlib/src/builtin/builtin_list.mojo similarity index 100% rename from stdlib/src/builtin/builtin_list.mojo rename to mojo/stdlib/src/builtin/builtin_list.mojo diff --git a/stdlib/src/builtin/builtin_slice.mojo b/mojo/stdlib/src/builtin/builtin_slice.mojo similarity index 100% rename from stdlib/src/builtin/builtin_slice.mojo rename to mojo/stdlib/src/builtin/builtin_slice.mojo diff --git a/stdlib/src/builtin/comparable.mojo b/mojo/stdlib/src/builtin/comparable.mojo similarity index 100% rename from stdlib/src/builtin/comparable.mojo rename to mojo/stdlib/src/builtin/comparable.mojo diff --git a/stdlib/src/builtin/constrained.mojo b/mojo/stdlib/src/builtin/constrained.mojo similarity index 100% rename from stdlib/src/builtin/constrained.mojo rename to mojo/stdlib/src/builtin/constrained.mojo diff --git a/stdlib/src/builtin/coroutine.mojo b/mojo/stdlib/src/builtin/coroutine.mojo similarity index 100% rename from stdlib/src/builtin/coroutine.mojo rename to mojo/stdlib/src/builtin/coroutine.mojo diff --git a/stdlib/src/builtin/debug_assert.mojo b/mojo/stdlib/src/builtin/debug_assert.mojo similarity index 100% rename from stdlib/src/builtin/debug_assert.mojo rename to mojo/stdlib/src/builtin/debug_assert.mojo diff --git a/stdlib/src/builtin/dtype.mojo b/mojo/stdlib/src/builtin/dtype.mojo similarity index 100% rename from stdlib/src/builtin/dtype.mojo rename to mojo/stdlib/src/builtin/dtype.mojo diff --git a/stdlib/src/builtin/equality_comparable.mojo b/mojo/stdlib/src/builtin/equality_comparable.mojo similarity index 100% rename from stdlib/src/builtin/equality_comparable.mojo rename to mojo/stdlib/src/builtin/equality_comparable.mojo diff --git a/stdlib/src/builtin/error.mojo b/mojo/stdlib/src/builtin/error.mojo similarity index 100% rename from stdlib/src/builtin/error.mojo rename to mojo/stdlib/src/builtin/error.mojo diff --git a/stdlib/src/builtin/file.mojo b/mojo/stdlib/src/builtin/file.mojo similarity index 100% rename from stdlib/src/builtin/file.mojo rename to mojo/stdlib/src/builtin/file.mojo diff --git a/stdlib/src/builtin/file_descriptor.mojo b/mojo/stdlib/src/builtin/file_descriptor.mojo similarity index 100% rename from stdlib/src/builtin/file_descriptor.mojo rename to mojo/stdlib/src/builtin/file_descriptor.mojo diff --git a/stdlib/src/builtin/float_literal.mojo b/mojo/stdlib/src/builtin/float_literal.mojo similarity index 100% rename from stdlib/src/builtin/float_literal.mojo rename to mojo/stdlib/src/builtin/float_literal.mojo diff --git a/stdlib/src/builtin/floatable.mojo b/mojo/stdlib/src/builtin/floatable.mojo similarity index 100% rename from stdlib/src/builtin/floatable.mojo rename to mojo/stdlib/src/builtin/floatable.mojo diff --git a/stdlib/src/builtin/format_int.mojo b/mojo/stdlib/src/builtin/format_int.mojo similarity index 100% rename from stdlib/src/builtin/format_int.mojo rename to mojo/stdlib/src/builtin/format_int.mojo diff --git a/stdlib/src/builtin/identifiable.mojo b/mojo/stdlib/src/builtin/identifiable.mojo similarity index 100% rename from stdlib/src/builtin/identifiable.mojo rename to mojo/stdlib/src/builtin/identifiable.mojo diff --git a/stdlib/src/builtin/int.mojo b/mojo/stdlib/src/builtin/int.mojo similarity index 100% rename from stdlib/src/builtin/int.mojo rename to mojo/stdlib/src/builtin/int.mojo diff --git a/stdlib/src/builtin/int_literal.mojo b/mojo/stdlib/src/builtin/int_literal.mojo similarity index 100% rename from stdlib/src/builtin/int_literal.mojo rename to mojo/stdlib/src/builtin/int_literal.mojo diff --git a/stdlib/src/builtin/io.mojo b/mojo/stdlib/src/builtin/io.mojo similarity index 100% rename from stdlib/src/builtin/io.mojo rename to mojo/stdlib/src/builtin/io.mojo diff --git a/stdlib/src/builtin/len.mojo b/mojo/stdlib/src/builtin/len.mojo similarity index 100% rename from stdlib/src/builtin/len.mojo rename to mojo/stdlib/src/builtin/len.mojo diff --git a/stdlib/src/builtin/math.mojo b/mojo/stdlib/src/builtin/math.mojo similarity index 100% rename from stdlib/src/builtin/math.mojo rename to mojo/stdlib/src/builtin/math.mojo diff --git a/stdlib/src/builtin/none.mojo b/mojo/stdlib/src/builtin/none.mojo similarity index 100% rename from stdlib/src/builtin/none.mojo rename to mojo/stdlib/src/builtin/none.mojo diff --git a/stdlib/src/builtin/object.mojo b/mojo/stdlib/src/builtin/object.mojo similarity index 100% rename from stdlib/src/builtin/object.mojo rename to mojo/stdlib/src/builtin/object.mojo diff --git a/stdlib/src/builtin/range.mojo b/mojo/stdlib/src/builtin/range.mojo similarity index 100% rename from stdlib/src/builtin/range.mojo rename to mojo/stdlib/src/builtin/range.mojo diff --git a/stdlib/src/builtin/rebind.mojo b/mojo/stdlib/src/builtin/rebind.mojo similarity index 100% rename from stdlib/src/builtin/rebind.mojo rename to mojo/stdlib/src/builtin/rebind.mojo diff --git a/stdlib/src/builtin/repr.mojo b/mojo/stdlib/src/builtin/repr.mojo similarity index 100% rename from stdlib/src/builtin/repr.mojo rename to mojo/stdlib/src/builtin/repr.mojo diff --git a/stdlib/src/builtin/reversed.mojo b/mojo/stdlib/src/builtin/reversed.mojo similarity index 100% rename from stdlib/src/builtin/reversed.mojo rename to mojo/stdlib/src/builtin/reversed.mojo diff --git a/stdlib/src/builtin/simd.mojo b/mojo/stdlib/src/builtin/simd.mojo similarity index 100% rename from stdlib/src/builtin/simd.mojo rename to mojo/stdlib/src/builtin/simd.mojo diff --git a/stdlib/src/builtin/sort.mojo b/mojo/stdlib/src/builtin/sort.mojo similarity index 100% rename from stdlib/src/builtin/sort.mojo rename to mojo/stdlib/src/builtin/sort.mojo diff --git a/stdlib/src/builtin/str.mojo b/mojo/stdlib/src/builtin/str.mojo similarity index 100% rename from stdlib/src/builtin/str.mojo rename to mojo/stdlib/src/builtin/str.mojo diff --git a/stdlib/src/builtin/string_literal.mojo b/mojo/stdlib/src/builtin/string_literal.mojo similarity index 100% rename from stdlib/src/builtin/string_literal.mojo rename to mojo/stdlib/src/builtin/string_literal.mojo diff --git a/stdlib/src/builtin/swap.mojo b/mojo/stdlib/src/builtin/swap.mojo similarity index 100% rename from stdlib/src/builtin/swap.mojo rename to mojo/stdlib/src/builtin/swap.mojo diff --git a/stdlib/src/builtin/tuple.mojo b/mojo/stdlib/src/builtin/tuple.mojo similarity index 100% rename from stdlib/src/builtin/tuple.mojo rename to mojo/stdlib/src/builtin/tuple.mojo diff --git a/stdlib/src/builtin/type_aliases.mojo b/mojo/stdlib/src/builtin/type_aliases.mojo similarity index 100% rename from stdlib/src/builtin/type_aliases.mojo rename to mojo/stdlib/src/builtin/type_aliases.mojo diff --git a/stdlib/src/builtin/uint.mojo b/mojo/stdlib/src/builtin/uint.mojo similarity index 100% rename from stdlib/src/builtin/uint.mojo rename to mojo/stdlib/src/builtin/uint.mojo diff --git a/stdlib/src/builtin/value.mojo b/mojo/stdlib/src/builtin/value.mojo similarity index 100% rename from stdlib/src/builtin/value.mojo rename to mojo/stdlib/src/builtin/value.mojo diff --git a/stdlib/src/collections/__init__.mojo b/mojo/stdlib/src/collections/__init__.mojo similarity index 100% rename from stdlib/src/collections/__init__.mojo rename to mojo/stdlib/src/collections/__init__.mojo diff --git a/stdlib/src/collections/_index_normalization.mojo b/mojo/stdlib/src/collections/_index_normalization.mojo similarity index 100% rename from stdlib/src/collections/_index_normalization.mojo rename to mojo/stdlib/src/collections/_index_normalization.mojo diff --git a/stdlib/src/collections/counter.mojo b/mojo/stdlib/src/collections/counter.mojo similarity index 100% rename from stdlib/src/collections/counter.mojo rename to mojo/stdlib/src/collections/counter.mojo diff --git a/stdlib/src/collections/deque.mojo b/mojo/stdlib/src/collections/deque.mojo similarity index 100% rename from stdlib/src/collections/deque.mojo rename to mojo/stdlib/src/collections/deque.mojo diff --git a/stdlib/src/collections/dict.mojo b/mojo/stdlib/src/collections/dict.mojo similarity index 100% rename from stdlib/src/collections/dict.mojo rename to mojo/stdlib/src/collections/dict.mojo diff --git a/stdlib/src/collections/inline_array.mojo b/mojo/stdlib/src/collections/inline_array.mojo similarity index 100% rename from stdlib/src/collections/inline_array.mojo rename to mojo/stdlib/src/collections/inline_array.mojo diff --git a/stdlib/src/collections/inline_list.mojo b/mojo/stdlib/src/collections/inline_list.mojo similarity index 100% rename from stdlib/src/collections/inline_list.mojo rename to mojo/stdlib/src/collections/inline_list.mojo diff --git a/stdlib/src/collections/interval.mojo b/mojo/stdlib/src/collections/interval.mojo similarity index 100% rename from stdlib/src/collections/interval.mojo rename to mojo/stdlib/src/collections/interval.mojo diff --git a/stdlib/src/collections/linked_list.mojo b/mojo/stdlib/src/collections/linked_list.mojo similarity index 100% rename from stdlib/src/collections/linked_list.mojo rename to mojo/stdlib/src/collections/linked_list.mojo diff --git a/stdlib/src/collections/list.mojo b/mojo/stdlib/src/collections/list.mojo similarity index 100% rename from stdlib/src/collections/list.mojo rename to mojo/stdlib/src/collections/list.mojo diff --git a/stdlib/src/collections/optional.mojo b/mojo/stdlib/src/collections/optional.mojo similarity index 100% rename from stdlib/src/collections/optional.mojo rename to mojo/stdlib/src/collections/optional.mojo diff --git a/stdlib/src/collections/set.mojo b/mojo/stdlib/src/collections/set.mojo similarity index 100% rename from stdlib/src/collections/set.mojo rename to mojo/stdlib/src/collections/set.mojo diff --git a/stdlib/src/collections/string/__init__.mojo b/mojo/stdlib/src/collections/string/__init__.mojo similarity index 100% rename from stdlib/src/collections/string/__init__.mojo rename to mojo/stdlib/src/collections/string/__init__.mojo diff --git a/stdlib/src/collections/string/_unicode.mojo b/mojo/stdlib/src/collections/string/_unicode.mojo similarity index 100% rename from stdlib/src/collections/string/_unicode.mojo rename to mojo/stdlib/src/collections/string/_unicode.mojo diff --git a/stdlib/src/collections/string/_unicode_lookups.mojo b/mojo/stdlib/src/collections/string/_unicode_lookups.mojo similarity index 100% rename from stdlib/src/collections/string/_unicode_lookups.mojo rename to mojo/stdlib/src/collections/string/_unicode_lookups.mojo diff --git a/stdlib/src/collections/string/_utf8_validation.mojo b/mojo/stdlib/src/collections/string/_utf8_validation.mojo similarity index 100% rename from stdlib/src/collections/string/_utf8_validation.mojo rename to mojo/stdlib/src/collections/string/_utf8_validation.mojo diff --git a/stdlib/src/collections/string/codepoint.mojo b/mojo/stdlib/src/collections/string/codepoint.mojo similarity index 100% rename from stdlib/src/collections/string/codepoint.mojo rename to mojo/stdlib/src/collections/string/codepoint.mojo diff --git a/stdlib/src/collections/string/format.mojo b/mojo/stdlib/src/collections/string/format.mojo similarity index 100% rename from stdlib/src/collections/string/format.mojo rename to mojo/stdlib/src/collections/string/format.mojo diff --git a/stdlib/src/collections/string/inline_string.mojo b/mojo/stdlib/src/collections/string/inline_string.mojo similarity index 100% rename from stdlib/src/collections/string/inline_string.mojo rename to mojo/stdlib/src/collections/string/inline_string.mojo diff --git a/stdlib/src/collections/string/string.mojo b/mojo/stdlib/src/collections/string/string.mojo similarity index 100% rename from stdlib/src/collections/string/string.mojo rename to mojo/stdlib/src/collections/string/string.mojo diff --git a/stdlib/src/collections/string/string_slice.mojo b/mojo/stdlib/src/collections/string/string_slice.mojo similarity index 100% rename from stdlib/src/collections/string/string_slice.mojo rename to mojo/stdlib/src/collections/string/string_slice.mojo diff --git a/stdlib/src/collections/vector.mojo b/mojo/stdlib/src/collections/vector.mojo similarity index 100% rename from stdlib/src/collections/vector.mojo rename to mojo/stdlib/src/collections/vector.mojo diff --git a/stdlib/src/documentation/__init__.mojo b/mojo/stdlib/src/documentation/__init__.mojo similarity index 100% rename from stdlib/src/documentation/__init__.mojo rename to mojo/stdlib/src/documentation/__init__.mojo diff --git a/stdlib/src/documentation/documentation.mojo b/mojo/stdlib/src/documentation/documentation.mojo similarity index 100% rename from stdlib/src/documentation/documentation.mojo rename to mojo/stdlib/src/documentation/documentation.mojo diff --git a/stdlib/src/hashlib/__init__.mojo b/mojo/stdlib/src/hashlib/__init__.mojo similarity index 100% rename from stdlib/src/hashlib/__init__.mojo rename to mojo/stdlib/src/hashlib/__init__.mojo diff --git a/stdlib/src/hashlib/_ahash.mojo b/mojo/stdlib/src/hashlib/_ahash.mojo similarity index 100% rename from stdlib/src/hashlib/_ahash.mojo rename to mojo/stdlib/src/hashlib/_ahash.mojo diff --git a/stdlib/src/hashlib/_hasher.mojo b/mojo/stdlib/src/hashlib/_hasher.mojo similarity index 100% rename from stdlib/src/hashlib/_hasher.mojo rename to mojo/stdlib/src/hashlib/_hasher.mojo diff --git a/stdlib/src/hashlib/hash.mojo b/mojo/stdlib/src/hashlib/hash.mojo similarity index 100% rename from stdlib/src/hashlib/hash.mojo rename to mojo/stdlib/src/hashlib/hash.mojo diff --git a/stdlib/src/math/__init__.mojo b/mojo/stdlib/src/math/__init__.mojo similarity index 100% rename from stdlib/src/math/__init__.mojo rename to mojo/stdlib/src/math/__init__.mojo diff --git a/stdlib/src/math/constants.mojo b/mojo/stdlib/src/math/constants.mojo similarity index 100% rename from stdlib/src/math/constants.mojo rename to mojo/stdlib/src/math/constants.mojo diff --git a/stdlib/src/math/math.mojo b/mojo/stdlib/src/math/math.mojo similarity index 100% rename from stdlib/src/math/math.mojo rename to mojo/stdlib/src/math/math.mojo diff --git a/stdlib/src/math/polynomial.mojo b/mojo/stdlib/src/math/polynomial.mojo similarity index 100% rename from stdlib/src/math/polynomial.mojo rename to mojo/stdlib/src/math/polynomial.mojo diff --git a/stdlib/src/memory/__init__.mojo b/mojo/stdlib/src/memory/__init__.mojo similarity index 100% rename from stdlib/src/memory/__init__.mojo rename to mojo/stdlib/src/memory/__init__.mojo diff --git a/stdlib/src/memory/arc.mojo b/mojo/stdlib/src/memory/arc.mojo similarity index 100% rename from stdlib/src/memory/arc.mojo rename to mojo/stdlib/src/memory/arc.mojo diff --git a/stdlib/src/memory/maybe_uninitialized.mojo b/mojo/stdlib/src/memory/maybe_uninitialized.mojo similarity index 100% rename from stdlib/src/memory/maybe_uninitialized.mojo rename to mojo/stdlib/src/memory/maybe_uninitialized.mojo diff --git a/stdlib/src/memory/memory.mojo b/mojo/stdlib/src/memory/memory.mojo similarity index 100% rename from stdlib/src/memory/memory.mojo rename to mojo/stdlib/src/memory/memory.mojo diff --git a/stdlib/src/memory/owned_pointer.mojo b/mojo/stdlib/src/memory/owned_pointer.mojo similarity index 100% rename from stdlib/src/memory/owned_pointer.mojo rename to mojo/stdlib/src/memory/owned_pointer.mojo diff --git a/stdlib/src/memory/pointer.mojo b/mojo/stdlib/src/memory/pointer.mojo similarity index 100% rename from stdlib/src/memory/pointer.mojo rename to mojo/stdlib/src/memory/pointer.mojo diff --git a/stdlib/src/memory/span.mojo b/mojo/stdlib/src/memory/span.mojo similarity index 100% rename from stdlib/src/memory/span.mojo rename to mojo/stdlib/src/memory/span.mojo diff --git a/stdlib/src/memory/unsafe.mojo b/mojo/stdlib/src/memory/unsafe.mojo similarity index 100% rename from stdlib/src/memory/unsafe.mojo rename to mojo/stdlib/src/memory/unsafe.mojo diff --git a/stdlib/src/memory/unsafe_pointer.mojo b/mojo/stdlib/src/memory/unsafe_pointer.mojo similarity index 100% rename from stdlib/src/memory/unsafe_pointer.mojo rename to mojo/stdlib/src/memory/unsafe_pointer.mojo diff --git a/stdlib/src/os/__init__.mojo b/mojo/stdlib/src/os/__init__.mojo similarity index 100% rename from stdlib/src/os/__init__.mojo rename to mojo/stdlib/src/os/__init__.mojo diff --git a/stdlib/src/os/_linux_aarch64.mojo b/mojo/stdlib/src/os/_linux_aarch64.mojo similarity index 100% rename from stdlib/src/os/_linux_aarch64.mojo rename to mojo/stdlib/src/os/_linux_aarch64.mojo diff --git a/stdlib/src/os/_linux_x86.mojo b/mojo/stdlib/src/os/_linux_x86.mojo similarity index 100% rename from stdlib/src/os/_linux_x86.mojo rename to mojo/stdlib/src/os/_linux_x86.mojo diff --git a/stdlib/src/os/_macos.mojo b/mojo/stdlib/src/os/_macos.mojo similarity index 100% rename from stdlib/src/os/_macos.mojo rename to mojo/stdlib/src/os/_macos.mojo diff --git a/stdlib/src/os/_windows.mojo b/mojo/stdlib/src/os/_windows.mojo similarity index 100% rename from stdlib/src/os/_windows.mojo rename to mojo/stdlib/src/os/_windows.mojo diff --git a/stdlib/src/os/atomic.mojo b/mojo/stdlib/src/os/atomic.mojo similarity index 100% rename from stdlib/src/os/atomic.mojo rename to mojo/stdlib/src/os/atomic.mojo diff --git a/stdlib/src/os/env.mojo b/mojo/stdlib/src/os/env.mojo similarity index 100% rename from stdlib/src/os/env.mojo rename to mojo/stdlib/src/os/env.mojo diff --git a/stdlib/src/os/fstat.mojo b/mojo/stdlib/src/os/fstat.mojo similarity index 100% rename from stdlib/src/os/fstat.mojo rename to mojo/stdlib/src/os/fstat.mojo diff --git a/stdlib/src/os/os.mojo b/mojo/stdlib/src/os/os.mojo similarity index 100% rename from stdlib/src/os/os.mojo rename to mojo/stdlib/src/os/os.mojo diff --git a/stdlib/src/os/path/__init__.mojo b/mojo/stdlib/src/os/path/__init__.mojo similarity index 100% rename from stdlib/src/os/path/__init__.mojo rename to mojo/stdlib/src/os/path/__init__.mojo diff --git a/stdlib/src/os/path/path.mojo b/mojo/stdlib/src/os/path/path.mojo similarity index 100% rename from stdlib/src/os/path/path.mojo rename to mojo/stdlib/src/os/path/path.mojo diff --git a/stdlib/src/os/pathlike.mojo b/mojo/stdlib/src/os/pathlike.mojo similarity index 100% rename from stdlib/src/os/pathlike.mojo rename to mojo/stdlib/src/os/pathlike.mojo diff --git a/stdlib/src/pathlib/__init__.mojo b/mojo/stdlib/src/pathlib/__init__.mojo similarity index 100% rename from stdlib/src/pathlib/__init__.mojo rename to mojo/stdlib/src/pathlib/__init__.mojo diff --git a/stdlib/src/pathlib/path.mojo b/mojo/stdlib/src/pathlib/path.mojo similarity index 100% rename from stdlib/src/pathlib/path.mojo rename to mojo/stdlib/src/pathlib/path.mojo diff --git a/stdlib/src/prelude/__init__.mojo b/mojo/stdlib/src/prelude/__init__.mojo similarity index 100% rename from stdlib/src/prelude/__init__.mojo rename to mojo/stdlib/src/prelude/__init__.mojo diff --git a/stdlib/src/pwd/__init__.mojo b/mojo/stdlib/src/pwd/__init__.mojo similarity index 100% rename from stdlib/src/pwd/__init__.mojo rename to mojo/stdlib/src/pwd/__init__.mojo diff --git a/stdlib/src/pwd/_linux.mojo b/mojo/stdlib/src/pwd/_linux.mojo similarity index 100% rename from stdlib/src/pwd/_linux.mojo rename to mojo/stdlib/src/pwd/_linux.mojo diff --git a/stdlib/src/pwd/_macos.mojo b/mojo/stdlib/src/pwd/_macos.mojo similarity index 100% rename from stdlib/src/pwd/_macos.mojo rename to mojo/stdlib/src/pwd/_macos.mojo diff --git a/stdlib/src/pwd/pwd.mojo b/mojo/stdlib/src/pwd/pwd.mojo similarity index 100% rename from stdlib/src/pwd/pwd.mojo rename to mojo/stdlib/src/pwd/pwd.mojo diff --git a/stdlib/src/python/__init__.mojo b/mojo/stdlib/src/python/__init__.mojo similarity index 100% rename from stdlib/src/python/__init__.mojo rename to mojo/stdlib/src/python/__init__.mojo diff --git a/stdlib/src/python/_bindings.mojo b/mojo/stdlib/src/python/_bindings.mojo similarity index 100% rename from stdlib/src/python/_bindings.mojo rename to mojo/stdlib/src/python/_bindings.mojo diff --git a/stdlib/src/python/_cpython.mojo b/mojo/stdlib/src/python/_cpython.mojo similarity index 100% rename from stdlib/src/python/_cpython.mojo rename to mojo/stdlib/src/python/_cpython.mojo diff --git a/stdlib/src/python/python.mojo b/mojo/stdlib/src/python/python.mojo similarity index 100% rename from stdlib/src/python/python.mojo rename to mojo/stdlib/src/python/python.mojo diff --git a/stdlib/src/python/python_object.mojo b/mojo/stdlib/src/python/python_object.mojo similarity index 100% rename from stdlib/src/python/python_object.mojo rename to mojo/stdlib/src/python/python_object.mojo diff --git a/stdlib/src/random/__init__.mojo b/mojo/stdlib/src/random/__init__.mojo similarity index 100% rename from stdlib/src/random/__init__.mojo rename to mojo/stdlib/src/random/__init__.mojo diff --git a/stdlib/src/random/random.mojo b/mojo/stdlib/src/random/random.mojo similarity index 100% rename from stdlib/src/random/random.mojo rename to mojo/stdlib/src/random/random.mojo diff --git a/stdlib/src/stat/__init__.mojo b/mojo/stdlib/src/stat/__init__.mojo similarity index 100% rename from stdlib/src/stat/__init__.mojo rename to mojo/stdlib/src/stat/__init__.mojo diff --git a/stdlib/src/stat/stat.mojo b/mojo/stdlib/src/stat/stat.mojo similarity index 100% rename from stdlib/src/stat/stat.mojo rename to mojo/stdlib/src/stat/stat.mojo diff --git a/stdlib/src/sys/__init__.mojo b/mojo/stdlib/src/sys/__init__.mojo similarity index 100% rename from stdlib/src/sys/__init__.mojo rename to mojo/stdlib/src/sys/__init__.mojo diff --git a/stdlib/src/sys/_amdgpu.mojo b/mojo/stdlib/src/sys/_amdgpu.mojo similarity index 100% rename from stdlib/src/sys/_amdgpu.mojo rename to mojo/stdlib/src/sys/_amdgpu.mojo diff --git a/stdlib/src/sys/_assembly.mojo b/mojo/stdlib/src/sys/_assembly.mojo similarity index 100% rename from stdlib/src/sys/_assembly.mojo rename to mojo/stdlib/src/sys/_assembly.mojo diff --git a/stdlib/src/sys/_build.mojo b/mojo/stdlib/src/sys/_build.mojo similarity index 100% rename from stdlib/src/sys/_build.mojo rename to mojo/stdlib/src/sys/_build.mojo diff --git a/stdlib/src/sys/_io.mojo b/mojo/stdlib/src/sys/_io.mojo similarity index 100% rename from stdlib/src/sys/_io.mojo rename to mojo/stdlib/src/sys/_io.mojo diff --git a/stdlib/src/sys/_libc.mojo b/mojo/stdlib/src/sys/_libc.mojo similarity index 100% rename from stdlib/src/sys/_libc.mojo rename to mojo/stdlib/src/sys/_libc.mojo diff --git a/stdlib/src/sys/arg.mojo b/mojo/stdlib/src/sys/arg.mojo similarity index 100% rename from stdlib/src/sys/arg.mojo rename to mojo/stdlib/src/sys/arg.mojo diff --git a/stdlib/src/sys/compile.mojo b/mojo/stdlib/src/sys/compile.mojo similarity index 100% rename from stdlib/src/sys/compile.mojo rename to mojo/stdlib/src/sys/compile.mojo diff --git a/stdlib/src/sys/debug.mojo b/mojo/stdlib/src/sys/debug.mojo similarity index 100% rename from stdlib/src/sys/debug.mojo rename to mojo/stdlib/src/sys/debug.mojo diff --git a/stdlib/src/sys/ffi.mojo b/mojo/stdlib/src/sys/ffi.mojo similarity index 100% rename from stdlib/src/sys/ffi.mojo rename to mojo/stdlib/src/sys/ffi.mojo diff --git a/stdlib/src/sys/info.mojo b/mojo/stdlib/src/sys/info.mojo similarity index 100% rename from stdlib/src/sys/info.mojo rename to mojo/stdlib/src/sys/info.mojo diff --git a/stdlib/src/sys/intrinsics.mojo b/mojo/stdlib/src/sys/intrinsics.mojo similarity index 100% rename from stdlib/src/sys/intrinsics.mojo rename to mojo/stdlib/src/sys/intrinsics.mojo diff --git a/stdlib/src/sys/param_env.mojo b/mojo/stdlib/src/sys/param_env.mojo similarity index 100% rename from stdlib/src/sys/param_env.mojo rename to mojo/stdlib/src/sys/param_env.mojo diff --git a/stdlib/src/sys/terminate.mojo b/mojo/stdlib/src/sys/terminate.mojo similarity index 100% rename from stdlib/src/sys/terminate.mojo rename to mojo/stdlib/src/sys/terminate.mojo diff --git a/stdlib/src/tempfile/__init__.mojo b/mojo/stdlib/src/tempfile/__init__.mojo similarity index 100% rename from stdlib/src/tempfile/__init__.mojo rename to mojo/stdlib/src/tempfile/__init__.mojo diff --git a/stdlib/src/tempfile/tempfile.mojo b/mojo/stdlib/src/tempfile/tempfile.mojo similarity index 100% rename from stdlib/src/tempfile/tempfile.mojo rename to mojo/stdlib/src/tempfile/tempfile.mojo diff --git a/stdlib/src/testing/__init__.mojo b/mojo/stdlib/src/testing/__init__.mojo similarity index 100% rename from stdlib/src/testing/__init__.mojo rename to mojo/stdlib/src/testing/__init__.mojo diff --git a/stdlib/src/testing/testing.mojo b/mojo/stdlib/src/testing/testing.mojo similarity index 100% rename from stdlib/src/testing/testing.mojo rename to mojo/stdlib/src/testing/testing.mojo diff --git a/stdlib/src/time/__init__.mojo b/mojo/stdlib/src/time/__init__.mojo similarity index 100% rename from stdlib/src/time/__init__.mojo rename to mojo/stdlib/src/time/__init__.mojo diff --git a/stdlib/src/time/time.mojo b/mojo/stdlib/src/time/time.mojo similarity index 100% rename from stdlib/src/time/time.mojo rename to mojo/stdlib/src/time/time.mojo diff --git a/stdlib/src/utils/__init__.mojo b/mojo/stdlib/src/utils/__init__.mojo similarity index 100% rename from stdlib/src/utils/__init__.mojo rename to mojo/stdlib/src/utils/__init__.mojo diff --git a/stdlib/src/utils/_select.mojo b/mojo/stdlib/src/utils/_select.mojo similarity index 100% rename from stdlib/src/utils/_select.mojo rename to mojo/stdlib/src/utils/_select.mojo diff --git a/stdlib/src/utils/_serialize.mojo b/mojo/stdlib/src/utils/_serialize.mojo similarity index 100% rename from stdlib/src/utils/_serialize.mojo rename to mojo/stdlib/src/utils/_serialize.mojo diff --git a/stdlib/src/utils/_visualizers.mojo b/mojo/stdlib/src/utils/_visualizers.mojo similarity index 100% rename from stdlib/src/utils/_visualizers.mojo rename to mojo/stdlib/src/utils/_visualizers.mojo diff --git a/stdlib/src/utils/index.mojo b/mojo/stdlib/src/utils/index.mojo similarity index 100% rename from stdlib/src/utils/index.mojo rename to mojo/stdlib/src/utils/index.mojo diff --git a/stdlib/src/utils/lock.mojo b/mojo/stdlib/src/utils/lock.mojo similarity index 100% rename from stdlib/src/utils/lock.mojo rename to mojo/stdlib/src/utils/lock.mojo diff --git a/stdlib/src/utils/loop.mojo b/mojo/stdlib/src/utils/loop.mojo similarity index 100% rename from stdlib/src/utils/loop.mojo rename to mojo/stdlib/src/utils/loop.mojo diff --git a/stdlib/src/utils/numerics.mojo b/mojo/stdlib/src/utils/numerics.mojo similarity index 100% rename from stdlib/src/utils/numerics.mojo rename to mojo/stdlib/src/utils/numerics.mojo diff --git a/stdlib/src/utils/static_tuple.mojo b/mojo/stdlib/src/utils/static_tuple.mojo similarity index 100% rename from stdlib/src/utils/static_tuple.mojo rename to mojo/stdlib/src/utils/static_tuple.mojo diff --git a/stdlib/src/utils/variant.mojo b/mojo/stdlib/src/utils/variant.mojo similarity index 100% rename from stdlib/src/utils/variant.mojo rename to mojo/stdlib/src/utils/variant.mojo diff --git a/stdlib/src/utils/write.mojo b/mojo/stdlib/src/utils/write.mojo similarity index 100% rename from stdlib/src/utils/write.mojo rename to mojo/stdlib/src/utils/write.mojo diff --git a/stdlib/test/base64/test_base64.mojo b/mojo/stdlib/test/base64/test_base64.mojo similarity index 100% rename from stdlib/test/base64/test_base64.mojo rename to mojo/stdlib/test/base64/test_base64.mojo diff --git a/stdlib/test/bit/test_bit.mojo b/mojo/stdlib/test/bit/test_bit.mojo similarity index 100% rename from stdlib/test/bit/test_bit.mojo rename to mojo/stdlib/test/bit/test_bit.mojo diff --git a/stdlib/test/builtin/test_any_all.mojo b/mojo/stdlib/test/builtin/test_any_all.mojo similarity index 100% rename from stdlib/test/builtin/test_any_all.mojo rename to mojo/stdlib/test/builtin/test_any_all.mojo diff --git a/stdlib/test/builtin/test_bfloat16.mojo b/mojo/stdlib/test/builtin/test_bfloat16.mojo similarity index 100% rename from stdlib/test/builtin/test_bfloat16.mojo rename to mojo/stdlib/test/builtin/test_bfloat16.mojo diff --git a/stdlib/test/builtin/test_bool.mojo b/mojo/stdlib/test/builtin/test_bool.mojo similarity index 100% rename from stdlib/test/builtin/test_bool.mojo rename to mojo/stdlib/test/builtin/test_bool.mojo diff --git a/stdlib/test/builtin/test_debug_assert.mojo b/mojo/stdlib/test/builtin/test_debug_assert.mojo similarity index 100% rename from stdlib/test/builtin/test_debug_assert.mojo rename to mojo/stdlib/test/builtin/test_debug_assert.mojo diff --git a/stdlib/test/builtin/test_debug_assert_default_error.mojo b/mojo/stdlib/test/builtin/test_debug_assert_default_error.mojo similarity index 100% rename from stdlib/test/builtin/test_debug_assert_default_error.mojo rename to mojo/stdlib/test/builtin/test_debug_assert_default_error.mojo diff --git a/stdlib/test/builtin/test_debug_assert_mode_all.mojo b/mojo/stdlib/test/builtin/test_debug_assert_mode_all.mojo similarity index 100% rename from stdlib/test/builtin/test_debug_assert_mode_all.mojo rename to mojo/stdlib/test/builtin/test_debug_assert_mode_all.mojo diff --git a/stdlib/test/builtin/test_debug_assert_mode_all_error.mojo b/mojo/stdlib/test/builtin/test_debug_assert_mode_all_error.mojo similarity index 100% rename from stdlib/test/builtin/test_debug_assert_mode_all_error.mojo rename to mojo/stdlib/test/builtin/test_debug_assert_mode_all_error.mojo diff --git a/stdlib/test/builtin/test_debug_assert_mode_none.mojo b/mojo/stdlib/test/builtin/test_debug_assert_mode_none.mojo similarity index 100% rename from stdlib/test/builtin/test_debug_assert_mode_none.mojo rename to mojo/stdlib/test/builtin/test_debug_assert_mode_none.mojo diff --git a/stdlib/test/builtin/test_debug_assert_warning.mojo b/mojo/stdlib/test/builtin/test_debug_assert_warning.mojo similarity index 100% rename from stdlib/test/builtin/test_debug_assert_warning.mojo rename to mojo/stdlib/test/builtin/test_debug_assert_warning.mojo diff --git a/stdlib/test/builtin/test_deprecation_warnings.mojo b/mojo/stdlib/test/builtin/test_deprecation_warnings.mojo similarity index 100% rename from stdlib/test/builtin/test_deprecation_warnings.mojo rename to mojo/stdlib/test/builtin/test_deprecation_warnings.mojo diff --git a/stdlib/test/builtin/test_dtype.mojo b/mojo/stdlib/test/builtin/test_dtype.mojo similarity index 100% rename from stdlib/test/builtin/test_dtype.mojo rename to mojo/stdlib/test/builtin/test_dtype.mojo diff --git a/stdlib/test/builtin/test_error.mojo b/mojo/stdlib/test/builtin/test_error.mojo similarity index 100% rename from stdlib/test/builtin/test_error.mojo rename to mojo/stdlib/test/builtin/test_error.mojo diff --git a/stdlib/test/builtin/test_file.mojo b/mojo/stdlib/test/builtin/test_file.mojo similarity index 100% rename from stdlib/test/builtin/test_file.mojo rename to mojo/stdlib/test/builtin/test_file.mojo diff --git a/stdlib/test/builtin/test_file_dummy_input.txt b/mojo/stdlib/test/builtin/test_file_dummy_input.txt similarity index 100% rename from stdlib/test/builtin/test_file_dummy_input.txt rename to mojo/stdlib/test/builtin/test_file_dummy_input.txt diff --git a/stdlib/test/builtin/test_float_literal.mojo b/mojo/stdlib/test/builtin/test_float_literal.mojo similarity index 100% rename from stdlib/test/builtin/test_float_literal.mojo rename to mojo/stdlib/test/builtin/test_float_literal.mojo diff --git a/stdlib/test/builtin/test_format_float.mojo b/mojo/stdlib/test/builtin/test_format_float.mojo similarity index 100% rename from stdlib/test/builtin/test_format_float.mojo rename to mojo/stdlib/test/builtin/test_format_float.mojo diff --git a/stdlib/test/builtin/test_format_int.mojo b/mojo/stdlib/test/builtin/test_format_int.mojo similarity index 100% rename from stdlib/test/builtin/test_format_int.mojo rename to mojo/stdlib/test/builtin/test_format_int.mojo diff --git a/stdlib/test/builtin/test_int.mojo b/mojo/stdlib/test/builtin/test_int.mojo similarity index 100% rename from stdlib/test/builtin/test_int.mojo rename to mojo/stdlib/test/builtin/test_int.mojo diff --git a/stdlib/test/builtin/test_int_literal.mojo b/mojo/stdlib/test/builtin/test_int_literal.mojo similarity index 100% rename from stdlib/test/builtin/test_int_literal.mojo rename to mojo/stdlib/test/builtin/test_int_literal.mojo diff --git a/stdlib/test/builtin/test_issue_1004.mojo b/mojo/stdlib/test/builtin/test_issue_1004.mojo similarity index 100% rename from stdlib/test/builtin/test_issue_1004.mojo rename to mojo/stdlib/test/builtin/test_issue_1004.mojo diff --git a/stdlib/test/builtin/test_issue_1505.mojo b/mojo/stdlib/test/builtin/test_issue_1505.mojo similarity index 100% rename from stdlib/test/builtin/test_issue_1505.mojo rename to mojo/stdlib/test/builtin/test_issue_1505.mojo diff --git a/stdlib/test/builtin/test_issue_3908.mojo b/mojo/stdlib/test/builtin/test_issue_3908.mojo similarity index 100% rename from stdlib/test/builtin/test_issue_3908.mojo rename to mojo/stdlib/test/builtin/test_issue_3908.mojo diff --git a/stdlib/test/builtin/test_list_literal.mojo b/mojo/stdlib/test/builtin/test_list_literal.mojo similarity index 100% rename from stdlib/test/builtin/test_list_literal.mojo rename to mojo/stdlib/test/builtin/test_list_literal.mojo diff --git a/stdlib/test/builtin/test_location.mojo b/mojo/stdlib/test/builtin/test_location.mojo similarity index 100% rename from stdlib/test/builtin/test_location.mojo rename to mojo/stdlib/test/builtin/test_location.mojo diff --git a/stdlib/test/builtin/test_math.mojo b/mojo/stdlib/test/builtin/test_math.mojo similarity index 100% rename from stdlib/test/builtin/test_math.mojo rename to mojo/stdlib/test/builtin/test_math.mojo diff --git a/stdlib/test/builtin/test_none.mojo b/mojo/stdlib/test/builtin/test_none.mojo similarity index 100% rename from stdlib/test/builtin/test_none.mojo rename to mojo/stdlib/test/builtin/test_none.mojo diff --git a/stdlib/test/builtin/test_object.mojo b/mojo/stdlib/test/builtin/test_object.mojo similarity index 100% rename from stdlib/test/builtin/test_object.mojo rename to mojo/stdlib/test/builtin/test_object.mojo diff --git a/stdlib/test/builtin/test_print.mojo b/mojo/stdlib/test/builtin/test_print.mojo similarity index 100% rename from stdlib/test/builtin/test_print.mojo rename to mojo/stdlib/test/builtin/test_print.mojo diff --git a/stdlib/test/builtin/test_print_long_string.mojo b/mojo/stdlib/test/builtin/test_print_long_string.mojo similarity index 100% rename from stdlib/test/builtin/test_print_long_string.mojo rename to mojo/stdlib/test/builtin/test_print_long_string.mojo diff --git a/stdlib/test/builtin/test_print_stderr.mojo b/mojo/stdlib/test/builtin/test_print_stderr.mojo similarity index 100% rename from stdlib/test/builtin/test_print_stderr.mojo rename to mojo/stdlib/test/builtin/test_print_stderr.mojo diff --git a/stdlib/test/builtin/test_range.mojo b/mojo/stdlib/test/builtin/test_range.mojo similarity index 100% rename from stdlib/test/builtin/test_range.mojo rename to mojo/stdlib/test/builtin/test_range.mojo diff --git a/stdlib/test/builtin/test_range_out_of_bounds.mojo b/mojo/stdlib/test/builtin/test_range_out_of_bounds.mojo similarity index 100% rename from stdlib/test/builtin/test_range_out_of_bounds.mojo rename to mojo/stdlib/test/builtin/test_range_out_of_bounds.mojo diff --git a/stdlib/test/builtin/test_range_uint_reverse_range_bad.mojo b/mojo/stdlib/test/builtin/test_range_uint_reverse_range_bad.mojo similarity index 100% rename from stdlib/test/builtin/test_range_uint_reverse_range_bad.mojo rename to mojo/stdlib/test/builtin/test_range_uint_reverse_range_bad.mojo diff --git a/stdlib/test/builtin/test_rebind.mojo b/mojo/stdlib/test/builtin/test_rebind.mojo similarity index 100% rename from stdlib/test/builtin/test_rebind.mojo rename to mojo/stdlib/test/builtin/test_rebind.mojo diff --git a/stdlib/test/builtin/test_repr.mojo b/mojo/stdlib/test/builtin/test_repr.mojo similarity index 100% rename from stdlib/test/builtin/test_repr.mojo rename to mojo/stdlib/test/builtin/test_repr.mojo diff --git a/stdlib/test/builtin/test_reversed.mojo b/mojo/stdlib/test/builtin/test_reversed.mojo similarity index 100% rename from stdlib/test/builtin/test_reversed.mojo rename to mojo/stdlib/test/builtin/test_reversed.mojo diff --git a/stdlib/test/builtin/test_simd.mojo b/mojo/stdlib/test/builtin/test_simd.mojo similarity index 100% rename from stdlib/test/builtin/test_simd.mojo rename to mojo/stdlib/test/builtin/test_simd.mojo diff --git a/stdlib/test/builtin/test_slice.mojo b/mojo/stdlib/test/builtin/test_slice.mojo similarity index 100% rename from stdlib/test/builtin/test_slice.mojo rename to mojo/stdlib/test/builtin/test_slice.mojo diff --git a/stdlib/test/builtin/test_sort.mojo b/mojo/stdlib/test/builtin/test_sort.mojo similarity index 100% rename from stdlib/test/builtin/test_sort.mojo rename to mojo/stdlib/test/builtin/test_sort.mojo diff --git a/stdlib/test/builtin/test_sort_issue_1018.mojo b/mojo/stdlib/test/builtin/test_sort_issue_1018.mojo similarity index 100% rename from stdlib/test/builtin/test_sort_issue_1018.mojo rename to mojo/stdlib/test/builtin/test_sort_issue_1018.mojo diff --git a/stdlib/test/builtin/test_stdin.mojo b/mojo/stdlib/test/builtin/test_stdin.mojo similarity index 100% rename from stdlib/test/builtin/test_stdin.mojo rename to mojo/stdlib/test/builtin/test_stdin.mojo diff --git a/stdlib/test/builtin/test_str.mojo b/mojo/stdlib/test/builtin/test_str.mojo similarity index 100% rename from stdlib/test/builtin/test_str.mojo rename to mojo/stdlib/test/builtin/test_str.mojo diff --git a/stdlib/test/builtin/test_string_literal.mojo b/mojo/stdlib/test/builtin/test_string_literal.mojo similarity index 100% rename from stdlib/test/builtin/test_string_literal.mojo rename to mojo/stdlib/test/builtin/test_string_literal.mojo diff --git a/stdlib/test/builtin/test_swap.mojo b/mojo/stdlib/test/builtin/test_swap.mojo similarity index 100% rename from stdlib/test/builtin/test_swap.mojo rename to mojo/stdlib/test/builtin/test_swap.mojo diff --git a/stdlib/test/builtin/test_tuple.mojo b/mojo/stdlib/test/builtin/test_tuple.mojo similarity index 100% rename from stdlib/test/builtin/test_tuple.mojo rename to mojo/stdlib/test/builtin/test_tuple.mojo diff --git a/stdlib/test/builtin/test_uint.mojo b/mojo/stdlib/test/builtin/test_uint.mojo similarity index 100% rename from stdlib/test/builtin/test_uint.mojo rename to mojo/stdlib/test/builtin/test_uint.mojo diff --git a/stdlib/test/builtin/test_uint_error.mojo b/mojo/stdlib/test/builtin/test_uint_error.mojo similarity index 100% rename from stdlib/test/builtin/test_uint_error.mojo rename to mojo/stdlib/test/builtin/test_uint_error.mojo diff --git a/stdlib/test/collections/string/test_inlined_string.mojo b/mojo/stdlib/test/collections/string/test_inlined_string.mojo similarity index 100% rename from stdlib/test/collections/string/test_inlined_string.mojo rename to mojo/stdlib/test/collections/string/test_inlined_string.mojo diff --git a/stdlib/test/collections/string/test_string.mojo b/mojo/stdlib/test/collections/string/test_string.mojo similarity index 100% rename from stdlib/test/collections/string/test_string.mojo rename to mojo/stdlib/test/collections/string/test_string.mojo diff --git a/stdlib/test/collections/string/test_string_slice.mojo b/mojo/stdlib/test/collections/string/test_string_slice.mojo similarity index 100% rename from stdlib/test/collections/string/test_string_slice.mojo rename to mojo/stdlib/test/collections/string/test_string_slice.mojo diff --git a/stdlib/test/collections/string/test_unicode.mojo b/mojo/stdlib/test/collections/string/test_unicode.mojo similarity index 100% rename from stdlib/test/collections/string/test_unicode.mojo rename to mojo/stdlib/test/collections/string/test_unicode.mojo diff --git a/stdlib/test/collections/test_codepoint.mojo b/mojo/stdlib/test/collections/test_codepoint.mojo similarity index 100% rename from stdlib/test/collections/test_codepoint.mojo rename to mojo/stdlib/test/collections/test_codepoint.mojo diff --git a/stdlib/test/collections/test_counter.mojo b/mojo/stdlib/test/collections/test_counter.mojo similarity index 100% rename from stdlib/test/collections/test_counter.mojo rename to mojo/stdlib/test/collections/test_counter.mojo diff --git a/stdlib/test/collections/test_deque.mojo b/mojo/stdlib/test/collections/test_deque.mojo similarity index 100% rename from stdlib/test/collections/test_deque.mojo rename to mojo/stdlib/test/collections/test_deque.mojo diff --git a/stdlib/test/collections/test_dict.mojo b/mojo/stdlib/test/collections/test_dict.mojo similarity index 100% rename from stdlib/test/collections/test_dict.mojo rename to mojo/stdlib/test/collections/test_dict.mojo diff --git a/stdlib/test/collections/test_index_normalization.mojo b/mojo/stdlib/test/collections/test_index_normalization.mojo similarity index 100% rename from stdlib/test/collections/test_index_normalization.mojo rename to mojo/stdlib/test/collections/test_index_normalization.mojo diff --git a/stdlib/test/collections/test_inline_array.mojo b/mojo/stdlib/test/collections/test_inline_array.mojo similarity index 100% rename from stdlib/test/collections/test_inline_array.mojo rename to mojo/stdlib/test/collections/test_inline_array.mojo diff --git a/stdlib/test/collections/test_inline_list.mojo b/mojo/stdlib/test/collections/test_inline_list.mojo similarity index 100% rename from stdlib/test/collections/test_inline_list.mojo rename to mojo/stdlib/test/collections/test_inline_list.mojo diff --git a/stdlib/test/collections/test_interval.mojo b/mojo/stdlib/test/collections/test_interval.mojo similarity index 100% rename from stdlib/test/collections/test_interval.mojo rename to mojo/stdlib/test/collections/test_interval.mojo diff --git a/stdlib/test/collections/test_linked_list.mojo b/mojo/stdlib/test/collections/test_linked_list.mojo similarity index 100% rename from stdlib/test/collections/test_linked_list.mojo rename to mojo/stdlib/test/collections/test_linked_list.mojo diff --git a/stdlib/test/collections/test_list.mojo b/mojo/stdlib/test/collections/test_list.mojo similarity index 100% rename from stdlib/test/collections/test_list.mojo rename to mojo/stdlib/test/collections/test_list.mojo diff --git a/stdlib/test/collections/test_list_getitem_invalid_index.mojo b/mojo/stdlib/test/collections/test_list_getitem_invalid_index.mojo similarity index 100% rename from stdlib/test/collections/test_list_getitem_invalid_index.mojo rename to mojo/stdlib/test/collections/test_list_getitem_invalid_index.mojo diff --git a/stdlib/test/collections/test_optional.mojo b/mojo/stdlib/test/collections/test_optional.mojo similarity index 100% rename from stdlib/test/collections/test_optional.mojo rename to mojo/stdlib/test/collections/test_optional.mojo diff --git a/stdlib/test/collections/test_set.mojo b/mojo/stdlib/test/collections/test_set.mojo similarity index 100% rename from stdlib/test/collections/test_set.mojo rename to mojo/stdlib/test/collections/test_set.mojo diff --git a/stdlib/test/collections/test_vector.mojo b/mojo/stdlib/test/collections/test_vector.mojo similarity index 100% rename from stdlib/test/collections/test_vector.mojo rename to mojo/stdlib/test/collections/test_vector.mojo diff --git a/stdlib/test/hashlib/test_ahash.mojo b/mojo/stdlib/test/hashlib/test_ahash.mojo similarity index 100% rename from stdlib/test/hashlib/test_ahash.mojo rename to mojo/stdlib/test/hashlib/test_ahash.mojo diff --git a/stdlib/test/hashlib/test_hash.mojo b/mojo/stdlib/test/hashlib/test_hash.mojo similarity index 100% rename from stdlib/test/hashlib/test_hash.mojo rename to mojo/stdlib/test/hashlib/test_hash.mojo diff --git a/stdlib/test/hashlib/test_hasher.mojo b/mojo/stdlib/test/hashlib/test_hasher.mojo similarity index 100% rename from stdlib/test/hashlib/test_hasher.mojo rename to mojo/stdlib/test/hashlib/test_hasher.mojo diff --git a/stdlib/test/lit.cfg.py b/mojo/stdlib/test/lit.cfg.py similarity index 100% rename from stdlib/test/lit.cfg.py rename to mojo/stdlib/test/lit.cfg.py diff --git a/stdlib/test/memory/test_arc.mojo b/mojo/stdlib/test/memory/test_arc.mojo similarity index 100% rename from stdlib/test/memory/test_arc.mojo rename to mojo/stdlib/test/memory/test_arc.mojo diff --git a/stdlib/test/memory/test_bitcast.mojo b/mojo/stdlib/test/memory/test_bitcast.mojo similarity index 100% rename from stdlib/test/memory/test_bitcast.mojo rename to mojo/stdlib/test/memory/test_bitcast.mojo diff --git a/stdlib/test/memory/test_maybe_uninitialized.mojo b/mojo/stdlib/test/memory/test_maybe_uninitialized.mojo similarity index 100% rename from stdlib/test/memory/test_maybe_uninitialized.mojo rename to mojo/stdlib/test/memory/test_maybe_uninitialized.mojo diff --git a/stdlib/test/memory/test_memory.mojo b/mojo/stdlib/test/memory/test_memory.mojo similarity index 100% rename from stdlib/test/memory/test_memory.mojo rename to mojo/stdlib/test/memory/test_memory.mojo diff --git a/stdlib/test/memory/test_owned_pointer.mojo b/mojo/stdlib/test/memory/test_owned_pointer.mojo similarity index 100% rename from stdlib/test/memory/test_owned_pointer.mojo rename to mojo/stdlib/test/memory/test_owned_pointer.mojo diff --git a/stdlib/test/memory/test_reference.mojo b/mojo/stdlib/test/memory/test_reference.mojo similarity index 100% rename from stdlib/test/memory/test_reference.mojo rename to mojo/stdlib/test/memory/test_reference.mojo diff --git a/stdlib/test/memory/test_span.mojo b/mojo/stdlib/test/memory/test_span.mojo similarity index 100% rename from stdlib/test/memory/test_span.mojo rename to mojo/stdlib/test/memory/test_span.mojo diff --git a/stdlib/test/memory/test_unsafepointer.mojo b/mojo/stdlib/test/memory/test_unsafepointer.mojo similarity index 100% rename from stdlib/test/memory/test_unsafepointer.mojo rename to mojo/stdlib/test/memory/test_unsafepointer.mojo diff --git a/stdlib/test/os/path/test_basename.mojo b/mojo/stdlib/test/os/path/test_basename.mojo similarity index 100% rename from stdlib/test/os/path/test_basename.mojo rename to mojo/stdlib/test/os/path/test_basename.mojo diff --git a/stdlib/test/os/path/test_dirname.mojo b/mojo/stdlib/test/os/path/test_dirname.mojo similarity index 100% rename from stdlib/test/os/path/test_dirname.mojo rename to mojo/stdlib/test/os/path/test_dirname.mojo diff --git a/stdlib/test/os/path/test_exists.mojo b/mojo/stdlib/test/os/path/test_exists.mojo similarity index 100% rename from stdlib/test/os/path/test_exists.mojo rename to mojo/stdlib/test/os/path/test_exists.mojo diff --git a/stdlib/test/os/path/test_expanduser.mojo b/mojo/stdlib/test/os/path/test_expanduser.mojo similarity index 100% rename from stdlib/test/os/path/test_expanduser.mojo rename to mojo/stdlib/test/os/path/test_expanduser.mojo diff --git a/stdlib/test/os/path/test_expandvars.mojo b/mojo/stdlib/test/os/path/test_expandvars.mojo similarity index 100% rename from stdlib/test/os/path/test_expandvars.mojo rename to mojo/stdlib/test/os/path/test_expandvars.mojo diff --git a/stdlib/test/os/path/test_getsize.mojo b/mojo/stdlib/test/os/path/test_getsize.mojo similarity index 100% rename from stdlib/test/os/path/test_getsize.mojo rename to mojo/stdlib/test/os/path/test_getsize.mojo diff --git a/stdlib/test/os/path/test_isdir.mojo b/mojo/stdlib/test/os/path/test_isdir.mojo similarity index 100% rename from stdlib/test/os/path/test_isdir.mojo rename to mojo/stdlib/test/os/path/test_isdir.mojo diff --git a/stdlib/test/os/path/test_isfile.mojo b/mojo/stdlib/test/os/path/test_isfile.mojo similarity index 100% rename from stdlib/test/os/path/test_isfile.mojo rename to mojo/stdlib/test/os/path/test_isfile.mojo diff --git a/stdlib/test/os/path/test_islink.mojo b/mojo/stdlib/test/os/path/test_islink.mojo similarity index 100% rename from stdlib/test/os/path/test_islink.mojo rename to mojo/stdlib/test/os/path/test_islink.mojo diff --git a/stdlib/test/os/path/test_join.mojo b/mojo/stdlib/test/os/path/test_join.mojo similarity index 100% rename from stdlib/test/os/path/test_join.mojo rename to mojo/stdlib/test/os/path/test_join.mojo diff --git a/stdlib/test/os/path/test_split.mojo b/mojo/stdlib/test/os/path/test_split.mojo similarity index 100% rename from stdlib/test/os/path/test_split.mojo rename to mojo/stdlib/test/os/path/test_split.mojo diff --git a/stdlib/test/os/path/test_splitroot.mojo b/mojo/stdlib/test/os/path/test_splitroot.mojo similarity index 100% rename from stdlib/test/os/path/test_splitroot.mojo rename to mojo/stdlib/test/os/path/test_splitroot.mojo diff --git a/stdlib/test/os/test_atomic.mojo b/mojo/stdlib/test/os/test_atomic.mojo similarity index 100% rename from stdlib/test/os/test_atomic.mojo rename to mojo/stdlib/test/os/test_atomic.mojo diff --git a/stdlib/test/os/test_env.mojo b/mojo/stdlib/test/os/test_env.mojo similarity index 100% rename from stdlib/test/os/test_env.mojo rename to mojo/stdlib/test/os/test_env.mojo diff --git a/stdlib/test/os/test_listdir.mojo b/mojo/stdlib/test/os/test_listdir.mojo similarity index 100% rename from stdlib/test/os/test_listdir.mojo rename to mojo/stdlib/test/os/test_listdir.mojo diff --git a/stdlib/test/os/test_mkdir_and_rmdir.mojo b/mojo/stdlib/test/os/test_mkdir_and_rmdir.mojo similarity index 100% rename from stdlib/test/os/test_mkdir_and_rmdir.mojo rename to mojo/stdlib/test/os/test_mkdir_and_rmdir.mojo diff --git a/stdlib/test/os/test_no_trap.mojo b/mojo/stdlib/test/os/test_no_trap.mojo similarity index 100% rename from stdlib/test/os/test_no_trap.mojo rename to mojo/stdlib/test/os/test_no_trap.mojo diff --git a/stdlib/test/os/test_remove.mojo b/mojo/stdlib/test/os/test_remove.mojo similarity index 100% rename from stdlib/test/os/test_remove.mojo rename to mojo/stdlib/test/os/test_remove.mojo diff --git a/stdlib/test/os/test_stat.mojo b/mojo/stdlib/test/os/test_stat.mojo similarity index 100% rename from stdlib/test/os/test_stat.mojo rename to mojo/stdlib/test/os/test_stat.mojo diff --git a/stdlib/test/os/test_trap.mojo b/mojo/stdlib/test/os/test_trap.mojo similarity index 100% rename from stdlib/test/os/test_trap.mojo rename to mojo/stdlib/test/os/test_trap.mojo diff --git a/stdlib/test/os/test_trap_stringable.mojo b/mojo/stdlib/test/os/test_trap_stringable.mojo similarity index 100% rename from stdlib/test/os/test_trap_stringable.mojo rename to mojo/stdlib/test/os/test_trap_stringable.mojo diff --git a/stdlib/test/pathlib/test_pathlib.mojo b/mojo/stdlib/test/pathlib/test_pathlib.mojo similarity index 100% rename from stdlib/test/pathlib/test_pathlib.mojo rename to mojo/stdlib/test/pathlib/test_pathlib.mojo diff --git a/stdlib/test/pwd/test_pwd.mojo b/mojo/stdlib/test/pwd/test_pwd.mojo similarity index 100% rename from stdlib/test/pwd/test_pwd.mojo rename to mojo/stdlib/test/pwd/test_pwd.mojo diff --git a/stdlib/test/python/custom_indexable.py b/mojo/stdlib/test/python/custom_indexable.py similarity index 100% rename from stdlib/test/python/custom_indexable.py rename to mojo/stdlib/test/python/custom_indexable.py diff --git a/stdlib/test/python/module_for_test_python_object_dunder_contains.py b/mojo/stdlib/test/python/module_for_test_python_object_dunder_contains.py similarity index 100% rename from stdlib/test/python/module_for_test_python_object_dunder_contains.py rename to mojo/stdlib/test/python/module_for_test_python_object_dunder_contains.py diff --git a/stdlib/test/python/my_module.py b/mojo/stdlib/test/python/my_module.py similarity index 100% rename from stdlib/test/python/my_module.py rename to mojo/stdlib/test/python/my_module.py diff --git a/stdlib/test/python/test_ownership.mojo b/mojo/stdlib/test/python/test_ownership.mojo similarity index 100% rename from stdlib/test/python/test_ownership.mojo rename to mojo/stdlib/test/python/test_ownership.mojo diff --git a/stdlib/test/python/test_python_cpython.mojo b/mojo/stdlib/test/python/test_python_cpython.mojo similarity index 100% rename from stdlib/test/python/test_python_cpython.mojo rename to mojo/stdlib/test/python/test_python_cpython.mojo diff --git a/stdlib/test/python/test_python_error_handling.mojo b/mojo/stdlib/test/python/test_python_error_handling.mojo similarity index 100% rename from stdlib/test/python/test_python_error_handling.mojo rename to mojo/stdlib/test/python/test_python_error_handling.mojo diff --git a/stdlib/test/python/test_python_info.mojo b/mojo/stdlib/test/python/test_python_info.mojo similarity index 100% rename from stdlib/test/python/test_python_info.mojo rename to mojo/stdlib/test/python/test_python_info.mojo diff --git a/stdlib/test/python/test_python_interop.mojo b/mojo/stdlib/test/python/test_python_interop.mojo similarity index 100% rename from stdlib/test/python/test_python_interop.mojo rename to mojo/stdlib/test/python/test_python_interop.mojo diff --git a/stdlib/test/python/test_python_module_create.mojo b/mojo/stdlib/test/python/test_python_module_create.mojo similarity index 100% rename from stdlib/test/python/test_python_module_create.mojo rename to mojo/stdlib/test/python/test_python_module_create.mojo diff --git a/stdlib/test/python/test_python_object.mojo b/mojo/stdlib/test/python/test_python_object.mojo similarity index 100% rename from stdlib/test/python/test_python_object.mojo rename to mojo/stdlib/test/python/test_python_object.mojo diff --git a/stdlib/test/python/test_python_object_dunder_contains.mojo b/mojo/stdlib/test/python/test_python_object_dunder_contains.mojo similarity index 100% rename from stdlib/test/python/test_python_object_dunder_contains.mojo rename to mojo/stdlib/test/python/test_python_object_dunder_contains.mojo diff --git a/stdlib/test/python/test_python_object_len_raises.mojo b/mojo/stdlib/test/python/test_python_object_len_raises.mojo similarity index 100% rename from stdlib/test/python/test_python_object_len_raises.mojo rename to mojo/stdlib/test/python/test_python_object_len_raises.mojo diff --git a/stdlib/test/python/test_python_to_mojo.mojo b/mojo/stdlib/test/python/test_python_to_mojo.mojo similarity index 100% rename from stdlib/test/python/test_python_to_mojo.mojo rename to mojo/stdlib/test/python/test_python_to_mojo.mojo diff --git a/stdlib/test/random/test_random.mojo b/mojo/stdlib/test/random/test_random.mojo similarity index 100% rename from stdlib/test/random/test_random.mojo rename to mojo/stdlib/test/random/test_random.mojo diff --git a/stdlib/test/sys/test_aarch64_target.mojo b/mojo/stdlib/test/sys/test_aarch64_target.mojo similarity index 100% rename from stdlib/test/sys/test_aarch64_target.mojo rename to mojo/stdlib/test/sys/test_aarch64_target.mojo diff --git a/stdlib/test/sys/test_build_info_debug.mojo b/mojo/stdlib/test/sys/test_build_info_debug.mojo similarity index 100% rename from stdlib/test/sys/test_build_info_debug.mojo rename to mojo/stdlib/test/sys/test_build_info_debug.mojo diff --git a/stdlib/test/sys/test_c_types.mojo b/mojo/stdlib/test/sys/test_c_types.mojo similarity index 100% rename from stdlib/test/sys/test_c_types.mojo rename to mojo/stdlib/test/sys/test_c_types.mojo diff --git a/stdlib/test/sys/test_compile.mojo b/mojo/stdlib/test/sys/test_compile.mojo similarity index 100% rename from stdlib/test/sys/test_compile.mojo rename to mojo/stdlib/test/sys/test_compile.mojo diff --git a/stdlib/test/sys/test_compile_debug.mojo b/mojo/stdlib/test/sys/test_compile_debug.mojo similarity index 100% rename from stdlib/test/sys/test_compile_debug.mojo rename to mojo/stdlib/test/sys/test_compile_debug.mojo diff --git a/stdlib/test/sys/test_dlhandle.mojo b/mojo/stdlib/test/sys/test_dlhandle.mojo similarity index 100% rename from stdlib/test/sys/test_dlhandle.mojo rename to mojo/stdlib/test/sys/test_dlhandle.mojo diff --git a/stdlib/test/sys/test_exit_0.mojo b/mojo/stdlib/test/sys/test_exit_0.mojo similarity index 100% rename from stdlib/test/sys/test_exit_0.mojo rename to mojo/stdlib/test/sys/test_exit_0.mojo diff --git a/stdlib/test/sys/test_exit_1.mojo b/mojo/stdlib/test/sys/test_exit_1.mojo similarity index 100% rename from stdlib/test/sys/test_exit_1.mojo rename to mojo/stdlib/test/sys/test_exit_1.mojo diff --git a/stdlib/test/sys/test_intrinsics.mojo b/mojo/stdlib/test/sys/test_intrinsics.mojo similarity index 100% rename from stdlib/test/sys/test_intrinsics.mojo rename to mojo/stdlib/test/sys/test_intrinsics.mojo diff --git a/stdlib/test/sys/test_invalid_paramenv.mojo b/mojo/stdlib/test/sys/test_invalid_paramenv.mojo similarity index 100% rename from stdlib/test/sys/test_invalid_paramenv.mojo rename to mojo/stdlib/test/sys/test_invalid_paramenv.mojo diff --git a/stdlib/test/sys/test_linux_target.mojo b/mojo/stdlib/test/sys/test_linux_target.mojo similarity index 100% rename from stdlib/test/sys/test_linux_target.mojo rename to mojo/stdlib/test/sys/test_linux_target.mojo diff --git a/stdlib/test/sys/test_macos_target.mojo b/mojo/stdlib/test/sys/test_macos_target.mojo similarity index 100% rename from stdlib/test/sys/test_macos_target.mojo rename to mojo/stdlib/test/sys/test_macos_target.mojo diff --git a/stdlib/test/sys/test_paramenv.mojo b/mojo/stdlib/test/sys/test_paramenv.mojo similarity index 100% rename from stdlib/test/sys/test_paramenv.mojo rename to mojo/stdlib/test/sys/test_paramenv.mojo diff --git a/stdlib/test/sys/test_sizeof.mojo b/mojo/stdlib/test/sys/test_sizeof.mojo similarity index 100% rename from stdlib/test/sys/test_sizeof.mojo rename to mojo/stdlib/test/sys/test_sizeof.mojo diff --git a/stdlib/test/sys/test_targetinfo.mojo b/mojo/stdlib/test/sys/test_targetinfo.mojo similarity index 100% rename from stdlib/test/sys/test_targetinfo.mojo rename to mojo/stdlib/test/sys/test_targetinfo.mojo diff --git a/stdlib/test/sys/test_windows_target.mojo b/mojo/stdlib/test/sys/test_windows_target.mojo similarity index 100% rename from stdlib/test/sys/test_windows_target.mojo rename to mojo/stdlib/test/sys/test_windows_target.mojo diff --git a/stdlib/test/tempfile/test_tempfile.mojo b/mojo/stdlib/test/tempfile/test_tempfile.mojo similarity index 100% rename from stdlib/test/tempfile/test_tempfile.mojo rename to mojo/stdlib/test/tempfile/test_tempfile.mojo diff --git a/stdlib/test/test_utils/__init__.mojo b/mojo/stdlib/test/test_utils/__init__.mojo similarity index 100% rename from stdlib/test/test_utils/__init__.mojo rename to mojo/stdlib/test/test_utils/__init__.mojo diff --git a/stdlib/test/test_utils/test_utils.mojo b/mojo/stdlib/test/test_utils/test_utils.mojo similarity index 100% rename from stdlib/test/test_utils/test_utils.mojo rename to mojo/stdlib/test/test_utils/test_utils.mojo diff --git a/stdlib/test/test_utils/types.mojo b/mojo/stdlib/test/test_utils/types.mojo similarity index 100% rename from stdlib/test/test_utils/types.mojo rename to mojo/stdlib/test/test_utils/types.mojo diff --git a/stdlib/test/testing/test_assert_raises.mojo b/mojo/stdlib/test/testing/test_assert_raises.mojo similarity index 100% rename from stdlib/test/testing/test_assert_raises.mojo rename to mojo/stdlib/test/testing/test_assert_raises.mojo diff --git a/stdlib/test/testing/test_assertion.mojo b/mojo/stdlib/test/testing/test_assertion.mojo similarity index 100% rename from stdlib/test/testing/test_assertion.mojo rename to mojo/stdlib/test/testing/test_assertion.mojo diff --git a/stdlib/test/time/test_time.mojo b/mojo/stdlib/test/time/test_time.mojo similarity index 100% rename from stdlib/test/time/test_time.mojo rename to mojo/stdlib/test/time/test_time.mojo diff --git a/stdlib/test/utils/issue_13632.mojo b/mojo/stdlib/test/utils/issue_13632.mojo similarity index 100% rename from stdlib/test/utils/issue_13632.mojo rename to mojo/stdlib/test/utils/issue_13632.mojo diff --git a/stdlib/test/utils/test_index.mojo b/mojo/stdlib/test/utils/test_index.mojo similarity index 100% rename from stdlib/test/utils/test_index.mojo rename to mojo/stdlib/test/utils/test_index.mojo diff --git a/stdlib/test/utils/test_numerics.mojo b/mojo/stdlib/test/utils/test_numerics.mojo similarity index 100% rename from stdlib/test/utils/test_numerics.mojo rename to mojo/stdlib/test/utils/test_numerics.mojo diff --git a/stdlib/test/utils/test_select.mojo b/mojo/stdlib/test/utils/test_select.mojo similarity index 100% rename from stdlib/test/utils/test_select.mojo rename to mojo/stdlib/test/utils/test_select.mojo diff --git a/stdlib/test/utils/test_static_tuple.mojo b/mojo/stdlib/test/utils/test_static_tuple.mojo similarity index 100% rename from stdlib/test/utils/test_static_tuple.mojo rename to mojo/stdlib/test/utils/test_static_tuple.mojo diff --git a/stdlib/test/utils/test_tuple.mojo b/mojo/stdlib/test/utils/test_tuple.mojo similarity index 100% rename from stdlib/test/utils/test_tuple.mojo rename to mojo/stdlib/test/utils/test_tuple.mojo diff --git a/stdlib/test/utils/test_unroll.mojo b/mojo/stdlib/test/utils/test_unroll.mojo similarity index 100% rename from stdlib/test/utils/test_unroll.mojo rename to mojo/stdlib/test/utils/test_unroll.mojo diff --git a/stdlib/test/utils/test_variant.mojo b/mojo/stdlib/test/utils/test_variant.mojo similarity index 100% rename from stdlib/test/utils/test_variant.mojo rename to mojo/stdlib/test/utils/test_variant.mojo diff --git a/stdlib/test/utils/test_write.mojo b/mojo/stdlib/test/utils/test_write.mojo similarity index 100% rename from stdlib/test/utils/test_write.mojo rename to mojo/stdlib/test/utils/test_write.mojo diff --git a/stdlib/test/utils/test_write_to_stdout.mojo b/mojo/stdlib/test/utils/test_write_to_stdout.mojo similarity index 100% rename from stdlib/test/utils/test_write_to_stdout.mojo rename to mojo/stdlib/test/utils/test_write_to_stdout.mojo diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 0000000000..46c3124e43 --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,14 @@ +[tool.black] +include = '\.pyi?$' +line-length = 80 +preview = true +fast = true + +[tool.pyright] +typeCheckingMode = "off" +reportMissingImports = false + +[project] +requires-python = ">=3.8" +name = "max-repo" + diff --git a/src/max/Dockerfile.cpu b/src/max/Dockerfile.cpu new file mode 100644 index 0000000000..08395e8a21 --- /dev/null +++ b/src/max/Dockerfile.cpu @@ -0,0 +1,46 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +# This is an example of how to run max-pipelines serve in a docker container. + +# Create a build image to download depedencies +FROM ghcr.io/modular/magic:latest AS production + +RUN apt-get update && apt-get install -y --no-install-recommends build-essential git + +COPY . /app +WORKDIR /app + +RUN magic install + +EXPOSE 8000 + +# TODO: Add HEALTHCHECK instruction +# HEALTHCHECK --interval=30s --timeout=30s --start-period=5s --retries=3 CMD curl --fail http://localhost:8000/health || exit 1 + +LABEL maintainer "Modular Inc " + +ENV PYTHONUNBUFFERED=1 +# suppress transformers logging +ENV TRANSFORMERS_VERBOSITY="critical" +ENV TRANSFORMERS_NO_ADVISORY_WARNINGS=1 +ENV MODULAR_STRUCTURED_LOGGING=1 +ENV PROMETHEUS_MULTIPROC_DIR=/tmp + +# OTEL configuration +ENV OTEL_SERVICE_NAME="max-serve" +# OTEL's default histogram bucktes have poor resolution. Prefer exponential histograms. +ENV OTEL_EXPORTER_OTLP_METRICS_DEFAULT_HISTOGRAM_AGGREGATION="base2_exponential_bucket_histogram" + +ENTRYPOINT ["magic", "run", "serve"] +CMD ["--model-path=modularai/Llama-3.1-8B-Instruct-GGUF"] diff --git a/src/max/Dockerfile.cuda-simple b/src/max/Dockerfile.cuda-simple new file mode 100644 index 0000000000..eb288f8e29 --- /dev/null +++ b/src/max/Dockerfile.cuda-simple @@ -0,0 +1,50 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +# This is a simplified Dockerfile that just runs the max-pipelines serve command +# targeting a CUDA-enabled image. This build includes magic and build tools +# in the production image. + +ARG CUDA_VERSION=12.6.0 + +# Create a build image to download depedencies +FROM ghcr.io/modular/magic:noble-cuda-${CUDA_VERSION} AS production + +RUN apt-get update && apt-get install -y --no-install-recommends build-essential git + +COPY . /app +WORKDIR /app + +RUN magic install + +EXPOSE 8000 + +# TODO: Add HEALTHCHECK instruction +# HEALTHCHECK --interval=30s --timeout=30s --start-period=5s --retries=3 CMD curl --fail http://localhost:8000/health || exit 1 + +LABEL maintainer "Modular Inc " + +ENV PYTHONUNBUFFERED=1 +# suppress transformers logging +ENV TRANSFORMERS_VERBOSITY="critical" +ENV TRANSFORMERS_NO_ADVISORY_WARNINGS=1 +ENV MODULAR_STRUCTURED_LOGGING=1 +ENV PROMETHEUS_MULTIPROC_DIR=/tmp + +# OTEL configuration +ENV OTEL_SERVICE_NAME="max-serve" +# OTEL's default histogram bucktes have poor resolution. Prefer exponential histograms. +ENV OTEL_EXPORTER_OTLP_METRICS_DEFAULT_HISTOGRAM_AGGREGATION="base2_exponential_bucket_histogram" + +ENTRYPOINT ["magic", "run", "serve"] +CMD ["--model-path=modularai/Llama-3.1-8B-Instruct-GGUF"] diff --git a/src/max/Dockerfile.cuda-small b/src/max/Dockerfile.cuda-small new file mode 100644 index 0000000000..ac53dbdbf5 --- /dev/null +++ b/src/max/Dockerfile.cuda-small @@ -0,0 +1,63 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +# This build avoids having magic and build dependencies in the production image +# targeting a CUDA-enabled image. It optimizes for size over customizability by +# not including build tools in the production image. + +ARG CUDA_VERSION=12.6.0 +ARG BASE_IMAGE=nvidia/cuda:{CUDA_VERSION}-base-ubuntu24.04 + +# Create a build image to download depedencies +FROM ghcr.io/modular/magic:noble AS build + +RUN apt-get update && apt-get install -y --no-install-recommends build-essential git + +COPY . /app +WORKDIR /app + +RUN magic install + +# Create the shell-hook bash script to activate the environment +RUN magic shell-hook > /shell-hook.sh +RUN echo 'python -m max.entrypoints.pipelines serve "$@"' >> /shell-hook.sh + +# Create the production image +FROM ${BASE_IMAGE} AS production + +COPY --from=build /app/.magic/envs/default /app/.magic/envs/default +COPY --from=build /shell-hook.sh /shellhook.sh +COPY . /app + +WORKDIR /app +EXPOSE 8000 + +# TODO: Add HEALTHCHECK instruction +# HEALTHCHECK --interval=30s --timeout=30s --start-period=5s --retries=3 CMD curl --fail http://localhost:8000/health || exit 1 + +LABEL maintainer "Modular Inc " + +ENV PYTHONUNBUFFERED=1 +# suppress transformers logging +ENV TRANSFORMERS_VERBOSITY="critical" +ENV TRANSFORMERS_NO_ADVISORY_WARNINGS=1 +ENV MODULAR_STRUCTURED_LOGGING=1 +ENV PROMETHEUS_MULTIPROC_DIR=/tmp + +# OTEL configuration +ENV OTEL_SERVICE_NAME="max-serve" +# OTEL's default histogram bucktes have poor resolution. Prefer exponential histograms. +ENV OTEL_EXPORTER_OTLP_METRICS_DEFAULT_HISTOGRAM_AGGREGATION="base2_exponential_bucket_histogram" + +ENTRYPOINT ["/bin/bash", "/shell-hook.sh"] +CMD ["--model-path=modularai/Llama-3.1-8B-Instruct-GGUF"] diff --git a/src/max/README.md b/src/max/README.md new file mode 100644 index 0000000000..5a27ab75da --- /dev/null +++ b/src/max/README.md @@ -0,0 +1,41 @@ +# MAX Pipelines + +These are end-to-end pipelines that demonstrate the power of +[MAX](https://docs.modular.com/max/) for accelerating common AI workloads, and +more. Each of the supported pipelines can be served via an OpenAI-compatible +endpoint. + +MAX can also serve most PyTorch-based large language models that are +present on Hugging Face, although not at the same performance as native MAX +Graph versions. + +## Usage + +The easiest way to try out any of the pipelines is with our Magic command-line +tool. + +1. Install Magic on macOS and Linux with this command: + + ```shell + curl -ssL https://magic.modular.com | bash + ``` + + Then run the source command that's printed in your terminal. + + To see the available commands, you can run `magic --help`. + [Learn more about Magic here](https://docs.modular.com/magic). + +2. Install max-pipelines command to run the pipelines. + + ```shell + magic global install max-pipelines + ``` + +3. Serve a model. + + ```shell + max-pipelines serve --model-path deepseek-ai/DeepSeek-R1-Distill-Llama-8B + ``` + +See [https://builds.modular.com/](https://builds.modular.com/) to discover many +of the models supported by MAX. diff --git a/src/max/entrypoints/cli/__init__.py b/src/max/entrypoints/cli/__init__.py new file mode 100644 index 0000000000..cb55ab269b --- /dev/null +++ b/src/max/entrypoints/cli/__init__.py @@ -0,0 +1,51 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + + +"""Pipeline cli utilities.""" + +from .config import ( + config_to_flag, + get_default, + get_field_type, + is_flag, + is_multiple, + is_optional, + pipeline_config_options, + validate_field_type, +) +from .device_options import DevicesOptionType +from .encode import pipeline_encode +from .generate import generate_text_for_pipeline, stream_text_to_console +from .list import list_pipelines_to_console, list_pipelines_to_json +from .metrics import TextGenerationMetrics +from .serve import serve_pipeline + +__all__ = [ + "DevicesOptionType", + "TextGenerationMetrics", + "config_to_flag", + "pipeline_config_options", + "serve_pipeline", + "generate_text_for_pipeline", + "stream_text_to_console", + "list_pipelines_to_console", + "list_pipelines_to_json", + "pipeline_encode", + "get_default", + "get_field_type", + "is_flag", + "is_multiple", + "is_optional", + "validate_field_type", +] diff --git a/src/max/entrypoints/cli/config.py b/src/max/entrypoints/cli/config.py new file mode 100644 index 0000000000..c303a0d4a5 --- /dev/null +++ b/src/max/entrypoints/cli/config.py @@ -0,0 +1,202 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + + +"""Utilities for working with Config objects in Click.""" + +from __future__ import annotations + +import functools +import inspect +import pathlib +from dataclasses import MISSING, Field, fields +from enum import Enum +from pathlib import Path +from typing import Any, Union, get_args, get_origin, get_type_hints + +import click +from max.driver import DeviceSpec +from max.pipelines import PipelineConfig + +from .device_options import DevicesOptionType + +VALID_CONFIG_TYPES = [str, bool, Enum, Path, DeviceSpec, int, float] + + +def get_interior_type(type_hint: Union[type, str, Any]) -> type[Any]: + interior_args = set(get_args(type_hint)) - set([type(None)]) + if len(interior_args) > 1: + msg = ( + "Parsing does not currently supported Union type, with more than" + " one non-None type: {type_hint}" + ) + raise ValueError(msg) + + return get_args(type_hint)[0] + + +def is_optional(type_hint: Union[type, str, Any]) -> bool: + return get_origin(type_hint) is Union and type(None) in get_args(type_hint) + + +def is_flag(field_type: Any) -> bool: + return field_type is bool + + +def validate_field_type(field_type: Any) -> bool: + if is_optional(field_type): + test_type = get_args(field_type)[0] + elif get_origin(field_type) is list: + test_type = get_interior_type(field_type) + else: + test_type = field_type + + for valid_type in VALID_CONFIG_TYPES: + if valid_type == test_type: + return True + + if get_origin(valid_type) is None and inspect.isclass(test_type): + if issubclass(test_type, valid_type): + return True + msg = f"type '{test_type}' not supported in config." + raise ValueError(msg) + + +def get_field_type(field_type: Any): + validate_field_type(field_type) + + # Get underlying core field type, is Optional or list. + if is_optional(field_type): + field_type = get_interior_type(field_type) + elif get_origin(field_type) is list: + field_type = get_interior_type(field_type) + + # Update the field_type to be format specific. + if field_type == Path: + field_type = click.Path(path_type=pathlib.Path) + elif inspect.isclass(field_type): + if issubclass(field_type, Enum): + field_type = click.Choice(list(field_type)) + + return field_type + + +def get_default(dataclass_field: Field) -> Any: + if dataclass_field.default_factory != MISSING: + default = dataclass_field.default_factory() + elif dataclass_field.default != MISSING: + default = dataclass_field.default + else: + default = None + + return default + + +def is_multiple(field_type: Any) -> bool: + return get_origin(field_type) is list + + +def create_click_option( + help_for_fields: dict[str, str], + dataclass_field: Field, + field_type: Any, +) -> click.option: # type: ignore + # Get name. + normalized_name = dataclass_field.name.lower().replace("_", "-") + + # Get Help text. + help_text = help_for_fields.get(dataclass_field.name, None) + + # Get help field. + return click.option( + f"--{normalized_name}", + show_default=True, + help=help_text, + is_flag=is_flag(field_type), + default=get_default(dataclass_field), + multiple=is_multiple(field_type), + type=get_field_type(field_type), + ) + + +def config_to_flag(cls): + options = [] + if hasattr(cls, "help"): + help_text = cls.help() + else: + help_text = {} + field_types = get_type_hints(cls) + for _field in fields(cls): + # Skip private config fields. + # We also skip device_specs as it should not be used directly via the CLI entrypoint. + if _field.name.startswith("_") or _field.name == "device_specs": + continue + + new_option = create_click_option( + help_text, _field, field_types[_field.name] + ) + options.append(new_option) + + def apply_flags(func): + for option in reversed(options): + func = option(func) # type: ignore + return func + + return apply_flags + + +def pipeline_config_options(func): + @config_to_flag(PipelineConfig) + @click.option( + "--devices", + is_flag=False, + type=DevicesOptionType(), + show_default=False, + default="", + flag_value="0", + help=( + "Whether to run the model on CPU (--devices=cpu), GPU (--devices=gpu)" + " or a list of GPUs (--devices=gpu:0,1) etc. An ID value can be" + " provided optionally to indicate the device ID to target. If not" + " provided, the model will run on the first available GPU (--devices=gpu)," + " or CPU if no GPUs are available (--devices=cpu)." + ), + ) + # Kept for backwards compatibility. + @click.option( + "--use-gpu", + is_flag=False, + type=DevicesOptionType(), + show_default=False, + default="", + flag_value="0", + help=( + "Whether to run the model on the available GPU. An ID value can be" + " provided optionally to indicate the device ID to target." + ), + ) + @functools.wraps(func) + def wrapper(*args, **kwargs): + # Remove the options from kwargs and replace with unified device_specs. + devices: str | list[int] = kwargs.pop("devices") + legacy_use_gpu = kwargs.pop("use_gpu", None) + + # Apply legacy flag if no modern devices specified. + if not devices and legacy_use_gpu: + devices = legacy_use_gpu + + kwargs["device_specs"] = DevicesOptionType.device_specs(devices) + + return func(*args, **kwargs) + + return wrapper diff --git a/src/max/entrypoints/cli/device_options.py b/src/max/entrypoints/cli/device_options.py new file mode 100644 index 0000000000..ce14d9a8fe --- /dev/null +++ b/src/max/entrypoints/cli/device_options.py @@ -0,0 +1,90 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + + +"""Custom Click Options used in pipelines""" + +from __future__ import annotations + +from typing import Any + +import click +from max.driver import DeviceSpec, accelerator_count + + +class DevicesOptionType(click.ParamType): + name = "devices" + + @staticmethod + def device_specs(devices: str | list[int]) -> list[DeviceSpec]: + """Converts parsed devices input into validated :obj:`DeviceSpec` objects. + + Args: + devices: The value provided by the --devices option. + Valid arguments: + - "cpu" → use the CPU, + - "gpu" → default to GPU 0, or, + - a list of ints (GPU IDs). + + Raises: + ValueError: If a requested GPU ID is invalid. + + Returns: + A list of DeviceSpec objects. + """ + num_available_gpus = accelerator_count() + if devices == "cpu" or num_available_gpus == 0: + return [DeviceSpec.cpu()] + + requested_ids: list[int] = [] + if devices == "gpu": + requested_ids = [0] + elif isinstance(devices, list): + requested_ids = devices + + if not requested_ids: + # Return device 0 when no specific IDs are requested. + return [DeviceSpec.accelerator(id=0)] + + # Validate requested GPU IDs. + for gpu_id in requested_ids: + if gpu_id >= num_available_gpus: + msg = ( + f"GPU {gpu_id} requested but only {num_available_gpus} " + "available. Use valid device IDs or '--devices=cpu'." + ) + raise ValueError(msg) + + return [DeviceSpec.accelerator(id=id) for id in requested_ids] + + def convert( + self, + value: Any, + param: click.Parameter | None = None, + ctx: click.Context | None = None, + ) -> str | list[int]: + if not value: + return [] + + if value.lower() in {"cpu", "gpu"}: + return value.lower() + + try: + # Support both "gpu:0,1" and old "0,1" formats. + return [int(part) for part in value.replace("gpu:", "").split(",")] + except ValueError: + self.fail( + f"'{value}' is not a valid device list. Use format 'cpu', 'gpu', or 'gpu:0,1'.", + param, + ctx, + ) diff --git a/src/max/entrypoints/cli/encode.py b/src/max/entrypoints/cli/encode.py new file mode 100644 index 0000000000..42f662f106 --- /dev/null +++ b/src/max/entrypoints/cli/encode.py @@ -0,0 +1,97 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + + +"""Utilities for encoding text in the cli.""" + +import asyncio +import logging +import uuid +from typing import Optional + +from max.pipelines import ( + PIPELINE_REGISTRY, + EmbeddingsGenerator, + EmbeddingsResponse, + PipelineConfig, +) +from max.pipelines.interfaces import ( + PipelineTask, + PipelineTokenizer, + TokenGeneratorRequest, +) + +from .metrics import EmbeddingsMetrics + +logger = logging.getLogger(__name__) + +MODEL_NAME = "model" + + +async def _run_pipeline_encode( + pipeline: EmbeddingsGenerator, + tokenizer: PipelineTokenizer, + prompt: str, + metrics: Optional[EmbeddingsMetrics] = None, +) -> EmbeddingsResponse: + req_id = str(uuid.uuid4()) + context = await tokenizer.new_context( + TokenGeneratorRequest( + id=req_id, + index=0, + prompt=prompt, + model_name=MODEL_NAME, + ) + ) + pipeline_request = {req_id: context} + + if metrics: + metrics.prompt_size = context.current_length + metrics.signpost("begin_encoding") + + response = pipeline.encode(pipeline_request) + + if metrics: + metrics.signpost("end_encoding") + return response[req_id] + + +def pipeline_encode( + pipeline_config: PipelineConfig, + prompt: str, + num_warmups: int = 0, +) -> None: + # Run timed run & print results. + with EmbeddingsMetrics(print_report=True) as metrics: + tokenizer, pipeline = PIPELINE_REGISTRY.retrieve( + pipeline_config, task=PipelineTask.EMBEDDINGS_GENERATION + ) + assert isinstance(pipeline, EmbeddingsGenerator) + + if num_warmups > 0: + logger.info("Running warmup") + for _ in range(num_warmups): + asyncio.run( + _run_pipeline_encode( + pipeline, tokenizer, prompt, metrics=None + ) + ) + + # Run and print results. + logger.info("Running model...") + print("Encoding:", prompt) + + pipeline_output = asyncio.run( + _run_pipeline_encode(pipeline, tokenizer, prompt, metrics=metrics) + ) + print("Embeddings:", pipeline_output.embeddings) diff --git a/src/max/entrypoints/cli/entrypoint.py b/src/max/entrypoints/cli/entrypoint.py new file mode 100644 index 0000000000..972028a959 --- /dev/null +++ b/src/max/entrypoints/cli/entrypoint.py @@ -0,0 +1,34 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + + +"""Entrypoint for generalized click cli.""" + +import click + + +class ModelGroup(click.Group): + def get_command(self, ctx, cmd_name): + rv = click.Group.get_command(self, ctx, cmd_name) + if rv is not None: + return rv + supported = ", ".join(self.list_commands(ctx)) + ctx.fail( + f"Command not supported: {cmd_name}\nSupported commands:" + f" {supported}" + ) + + +@click.command(cls=ModelGroup) +def run_cli(): + pass diff --git a/src/max/entrypoints/cli/generate.py b/src/max/entrypoints/cli/generate.py new file mode 100644 index 0000000000..97718673a8 --- /dev/null +++ b/src/max/entrypoints/cli/generate.py @@ -0,0 +1,156 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +"""Utilities for generating text in the cli.""" + +from __future__ import annotations + +import asyncio +import logging +import uuid +from collections.abc import Iterable +from typing import Optional + +import requests +from max.pipelines import ( + PIPELINE_REGISTRY, + PipelineConfig, +) +from max.pipelines.interfaces import ( + PipelineTokenizer, + TokenGenerator, + TokenGeneratorRequest, +) + +from .metrics import TextGenerationMetrics + +logger = logging.getLogger(__name__) + +MODEL_NAME = "model" + + +async def stream_text_to_console( + pipeline: TokenGenerator, + tokenizer: PipelineTokenizer, + prompt: str, + images: Optional[list[bytes]], + num_steps: int, + metrics: Optional[TextGenerationMetrics] = None, + print_tokens: bool = True, +) -> None: + req_id = str(uuid.uuid4()) + context = await tokenizer.new_context( + TokenGeneratorRequest( + id=req_id, + index=0, + prompt=prompt, + images=images, + model_name=MODEL_NAME, + ) + ) + pipeline_request = {req_id: context} + if print_tokens: + print(prompt, end="", flush=True) + + prompt_size = context.current_length + if metrics: + metrics.prompt_size = prompt_size + metrics.signpost("begin_generation") + + try: + first_token = True + generate_again = True + while generate_again: + responses = pipeline.next_token( + pipeline_request, + num_steps=num_steps, + ) + + for response in responses: + if req_id not in response: + # next_token is expected to omit the return if + # it encounters eos. + generate_again = False + break + + encoded_text = response[req_id].next_token + response_text = await tokenizer.decode(context, encoded_text) + if metrics: + if first_token: + first_token = False + metrics.signpost("first_token") + metrics.new_token() + if print_tokens: + print(response_text, end="", flush=True) + + # Yield to the event loop. If at no other point (e.g. + # tokenizer.decode which we await earlier does not yield to the + # event loop), it will be at this point that we'll receive a + # CancelledError if our future was canceled (e.g., we received a + # SIGINT). + await asyncio.sleep(0) + + finally: + if metrics: + metrics.signpost("end_generation") + + pipeline.release(context) + + if print_tokens: + print() + + +def generate_text_for_pipeline( + pipeline_config: PipelineConfig, + prompt: str, + image_urls: Iterable[str] = (), + num_warmups: int = 0, +) -> None: + # Run timed run & print results. + with TextGenerationMetrics(print_report=True) as metrics: + tokenizer, pipeline = PIPELINE_REGISTRY.retrieve(pipeline_config) + assert isinstance(pipeline, TokenGenerator) + if image_urls: + logger.info("Downloading images") + images = [requests.get(url).content for url in image_urls] + else: + images = None + + if num_warmups > 0: + logger.info("Running warmup") + for _ in range(num_warmups): + asyncio.run( + stream_text_to_console( + pipeline, + tokenizer, + prompt, + images, + num_steps=pipeline_config.max_num_steps, + metrics=None, + print_tokens=False, + ) + ) + + # Run and print results. + logger.info("Beginning text generation") + asyncio.run( + stream_text_to_console( + pipeline, + tokenizer, + prompt, + images, + num_steps=pipeline_config.max_num_steps, + metrics=metrics, + print_tokens=True, + ) + ) diff --git a/src/max/entrypoints/cli/list.py b/src/max/entrypoints/cli/list.py new file mode 100644 index 0000000000..e844a95fc0 --- /dev/null +++ b/src/max/entrypoints/cli/list.py @@ -0,0 +1,64 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +# ===----------------------------------------------------------------------=== # +# +# This file is Modular Inc proprietary. +# +# ===----------------------------------------------------------------------=== # + +"""Utilities for exploring supported pipelines.""" + +import json + +from max.pipelines import PIPELINE_REGISTRY + + +def list_pipelines_to_console(): + print() + # Print human readable format + for arch in PIPELINE_REGISTRY.architectures.values(): + print() + print(f" Architecture: {arch.name}") + print() + print(" Example Huggingface Repo Ids: ") + for repo_id in arch.example_repo_ids: + print(f" {repo_id}") + + print() + for ( + encoding_name, + kv_cache_strategies, + ) in arch.supported_encodings.items(): + print( + f" Encoding Supported: {encoding_name}, with Cache Strategies: {kv_cache_strategies}" + ) + + print() + + +def list_pipelines_to_json(): + """Print the list of pipelines architecture options in JSON format.""" + architectures = {} + for arch in PIPELINE_REGISTRY.architectures.values(): + architectures[arch.name] = { + "example_repo_ids": list(arch.example_repo_ids), + "supported_encodings": [ + { + "encoding": encoding, + "supported_kv_cache_strategies": list(strategies), + } + for encoding, strategies in arch.supported_encodings.items() + ], + } + print(json.dumps({"architectures": architectures}, indent=2)) diff --git a/src/max/entrypoints/cli/metrics.py b/src/max/entrypoints/cli/metrics.py new file mode 100644 index 0000000000..b1b1cb1678 --- /dev/null +++ b/src/max/entrypoints/cli/metrics.py @@ -0,0 +1,225 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + + +"""Metric-gathering utilities for the pipelines.""" + +import time +from typing import Any, Union + +import psutil + + +class TextGenerationMetrics: + """Metrics capturing and reporting for a text generation pipeline.""" + + prompt_size: int + output_size: int + startup_time: Union[float, str] + time_to_first_token: Union[float, str] + prompt_eval_throughput: Union[float, str] + eval_throughput: Union[float, str] + + _start_time: float + _signposts: dict[str, float] + _mem_usage_marker: dict[str, float] + _should_print_report: bool + _process: psutil.Process + _print_raw: bool + + def __init__(self, print_report: bool = False, print_raw: bool = False): + self._signposts = {} + self._mem_usage_marker = {} + self.batch_size = 1 + self.prompt_size = 0 + self.output_size = 0 + self._should_print_report = print_report + self._start_time = time.time() + self._process = psutil.Process() + self._print_raw = print_raw + + def __enter__(self): + return self + + def __exit__(self, *exc): + self._calculate_results() + if self._should_print_report: + self._print_report(self._print_raw) + + def signpost(self, name: str): + """Measure the current time and memory usage, tagging it with a name for later reporting.""" + self._signposts[name] = time.time() + self._mem_usage_marker[name] = (self._process.memory_info().rss) / ( + 1024 * 1024 * 1024 + ) + + def new_token(self): + """Report that a new token has been generated.""" + self.new_tokens(1) + + def new_tokens(self, num_tokens: int): + """Report that a num_tokens tokens have been generated.""" + self.output_size += num_tokens + + def _calculate_results(self): + begin_generation = self._signposts.get("begin_generation") + if begin_generation: + self.startup_time = ( + self._signposts["begin_generation"] - self._start_time + ) * 1000.0 + else: + self.startup_time = "n/a" + + # Calculate TTFT & context-encoding throughput + first_token = self._signposts.get("first_token") + if first_token and begin_generation: + self.time_to_first_token = ( + self._signposts["first_token"] + - self._signposts["begin_generation"] + ) * 1000.0 + self.prompt_eval_throughput = ( + self.prompt_size + * self.batch_size + / (self.time_to_first_token / 1000.0) + ) + else: + self.time_to_first_token = "n/a" + self.prompt_eval_throughput = "n/a" + + # Calculate TPOT & token-gen throughput + end_generation = self._signposts.get("end_generation") + if end_generation and first_token and self.output_size > 1: + generation_time = ( + self._signposts["end_generation"] + - self._signposts["first_token"] + ) + self.eval_throughput = ( + (self.output_size - 1) * self.batch_size / generation_time + ) + self.time_per_output_token: Any = ( + generation_time * 1000.0 / (self.output_size - 1) + ) + else: + self.eval_throughput = "n/a" + self.time_per_output_token = "n/a" + + if end_generation and begin_generation: + total_batch_time = ( + self._signposts["end_generation"] + - self._signposts["begin_generation"] + ) + self.requests_per_second: Any = self.batch_size / total_batch_time + self.total_exe_time: Any = total_batch_time * 1000 + else: + self.total_exe_time = "n/a" + self.requests_per_second = "n/a" + + def _print_report(self, print_raw=False): + print() + print("Prompt size:", self.prompt_size) + print("Output size:", self.output_size) + print("Startup time:", self.startup_time, "ms") + print("Time to first token:", self.time_to_first_token, "ms") + print( + "Prompt eval throughput (context-encoding):", + self.prompt_eval_throughput, + "tokens per second", + ) + print("Time per Output Token:", self.time_per_output_token, "ms") + print( + "Eval throughput (token-generation):", + self.eval_throughput, + "tokens per second", + ) + print("Total Latency:", self.total_exe_time, "ms") + print("Total Throughput:", self.requests_per_second, "req/s") + if print_raw: + print("=============raw stats=================") + for k, v in self._signposts.items(): + print( + f"Started {k} at {v} with memory" + f" {self._mem_usage_marker[k]} GB" + ) + + +class EmbeddingsMetrics: + prompt_size: int + startup_time: Union[float, str] + + _start_time: float + _signposts: dict[str, float] + _mem_usage_marker: dict[str, float] + _should_print_report: bool + _process: psutil.Process + _print_raw: bool + + def __init__(self, print_report: bool = False, print_raw: bool = False): + self._signposts = {} + self._mem_usage_marker = {} + self.batch_size = 1 + self.prompt_size = 0 + self._should_print_report = print_report + self._start_time = time.time() + self._process = psutil.Process() + self._print_raw = print_raw + + def __enter__(self): + return self + + def __exit__(self, *exc): + self._calculate_results() + if self._should_print_report: + self._print_report(self._print_raw) + + def signpost(self, name: str): + """Measure the current time and memory usage, tagging it with a name for later reporting.""" + self._signposts[name] = time.time() + self._mem_usage_marker[name] = (self._process.memory_info().rss) / ( + 1024 * 1024 * 1024 + ) + + def _calculate_results(self): + begin_generation = self._signposts.get("begin_encoding") + if begin_generation: + self.startup_time = ( + self._signposts["begin_encoding"] - self._start_time + ) * 1000.0 + else: + self.startup_time = "n/a" + + # Calculate TPOT & token-gen throughput + end_generation = self._signposts.get("end_generation") + if end_generation and begin_generation: + total_batch_time = ( + self._signposts["end_generation"] + - self._signposts["begin_generation"] + ) + self.requests_per_second: Any = self.batch_size / total_batch_time + self.total_exe_time: Any = total_batch_time * 1000 + else: + self.total_exe_time = "n/a" + self.requests_per_second = "n/a" + + def _print_report(self, print_raw=False): + print() + print("Prompt size:", self.prompt_size) + print("Startup time:", self.startup_time, "ms") + print("Total Latency:", self.total_exe_time, "ms") + print("Total Throughput:", self.requests_per_second, "req/s") + if print_raw: + print("=============raw stats=================") + for k, v in self._signposts.items(): + print( + f"Started {k} at {v} with memory" + f" {self._mem_usage_marker[k]} GB" + ) diff --git a/src/max/entrypoints/cli/serve.py b/src/max/entrypoints/cli/serve.py new file mode 100644 index 0000000000..148ddbbaf7 --- /dev/null +++ b/src/max/entrypoints/cli/serve.py @@ -0,0 +1,115 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + + +"""Utilities for serving cli.""" + +import functools +import logging +from typing import Optional, Union + +import uvloop +from max.pipelines import PIPELINE_REGISTRY, PipelineConfig, PipelineTask +from max.pipelines.kv_cache import KVCacheStrategy +from max.serve.api_server import ( + ServingTokenGeneratorSettings, + fastapi_app, + fastapi_config, +) +from max.serve.config import Settings +from max.serve.pipelines.llm import batch_config_from_pipeline_config +from max.serve.pipelines.performance_fake import ( + PerformanceFakingPipelineTokenizer, + get_performance_fake, +) +from transformers import AutoTokenizer +from uvicorn import Server + +logger = logging.getLogger(__name__) + + +def serve_pipeline( + pipeline_config: PipelineConfig, + performance_fake: str = "none", + profile: bool = False, + batch_timeout: float = 0.0, + model_name: Union[str, None] = None, + failure_percentage: Optional[int] = None, +): + # Initialize settings + settings = Settings(MAX_SERVE_USE_HEARTBEAT=False) + + # TODO: make validate_pipeline_config more generic or cleanly handle the + # case where this is a generalized model unsupported by MAX + if pipeline_config.architecture in PIPELINE_REGISTRY.architectures: + # Retrieve tokenizer and pipeline. + pipeline_config = PIPELINE_REGISTRY.validate_pipeline_config( + pipeline_config + ) + + # TODO: This is a workaround to support embeddings generation until the + # changes to tie pipelines to tasks is complete. This will be removed. + pipeline_task = PipelineTask.TEXT_GENERATION + if pipeline_config.model_path == "sentence-transformers/all-mpnet-base-v2": + pipeline_task = PipelineTask.EMBEDDINGS_GENERATION + + if performance_fake == "none": + logger.info(f"Starting server using {pipeline_config.model_path}") + # Load tokenizer and pipeline from PIPELINE_REGISTRY. + tokenizer, pipeline_factory = PIPELINE_REGISTRY.retrieve_factory( + pipeline_config, + task=pipeline_task, + ) + else: + logger.info( + f"Starting server using performance fake {performance_fake}." + ) + tokenizer = PerformanceFakingPipelineTokenizer( + AutoTokenizer.from_pretrained(pipeline_config.model_path) + ) + pipeline_factory = functools.partial( + get_performance_fake, + performance_fake, # type: ignore + failure_percentage, + ) + + pipeline_config.cache_strategy = KVCacheStrategy.CONTINUOUS + + # Load batch config. + batch_config = batch_config_from_pipeline_config( + pipeline_config=pipeline_config, + pipeline_task=pipeline_task, + batch_timeout=batch_timeout, + ) + + # If explicit model name is not provided, set to model_path. + if model_name is None: + model_name = pipeline_config.model_path + assert model_name is not None + + pipeline_settings = ServingTokenGeneratorSettings( + model_name=model_name, + model_factory=pipeline_factory, + pipeline_config=batch_config, + tokenizer=tokenizer, + ) + + # Intialize and serve webserver. + app = fastapi_app( + settings, + pipeline_settings, + ) + config = fastapi_config(app=app, server_settings=settings) + + server = Server(config) + uvloop.run(server.serve()) diff --git a/src/max/entrypoints/llm.py b/src/max/entrypoints/llm.py new file mode 100644 index 0000000000..5f745b72c1 --- /dev/null +++ b/src/max/entrypoints/llm.py @@ -0,0 +1,185 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +"""A high level interface for interacting with LLMs built from MAX pipelines""" + +from __future__ import annotations + +import asyncio +import queue +import threading +from queue import Queue +from threading import Thread +from typing import Optional, Sequence + +import tqdm +from max.pipelines.config import PipelineConfig +from max.pipelines.registry import PIPELINE_REGISTRY +from max.serve.config import Settings +from max.serve.pipelines.llm import ( + TokenGeneratorPipeline, + TokenGeneratorRequest, + batch_config_from_pipeline_config, +) +from max.serve.pipelines.model_worker import start_model_worker +from max.serve.pipelines.telemetry_worker import start_telemetry_consumer +from max.serve.scheduler.process_control import ProcessControl + +RequestQueue = Queue[tuple[Sequence[str], Optional[int], bool]] +ResponseQueue = Queue[list[str]] + + +# For now, the LLM class only supports the direct token generation use case. +# Long term, there are multiple other potential use cases to support. +# This class loosely mirrors vllm.LLM for offline inference: https://docs.vllm.ai/en/stable/dev/offline_inference/llm.html +class LLM: + """A high level interface for interacting with LLMs.""" + + _pc: ProcessControl + _async_runner: Thread + _request_queue: RequestQueue + _response_queue: ResponseQueue + + def __init__(self, settings: Settings, pipeline_config: PipelineConfig): + self._pc = ProcessControl(threading, "LLM") + self._request_queue = Queue() + self._response_queue = Queue() + self._async_runner = Thread( + target=_run_async_worker, + args=( + self._pc, + pipeline_config, + self._request_queue, + self._response_queue, + settings, + ), + ) + self._async_runner.start() + # TODO: set a timeout on wait + self._pc.started_event.wait() + + def __del__(self): + self._pc.set_canceled() + self._async_runner.join() + + def generate( + self, + prompts: str | Sequence[str], + max_new_tokens: int | None = 100, + use_tqdm: bool = True, + ) -> list[str]: + if isinstance(prompts, str): + # Handle the degenerate case where the users just passes in a single string + return self.generate((prompts,), max_new_tokens, use_tqdm) + + self._request_queue.put((prompts, max_new_tokens, use_tqdm)) + return self._response_queue.get() + + +def _run_async_worker( + pc: ProcessControl, + pipeline_config: PipelineConfig, + request_queue: RequestQueue, + response_queue: ResponseQueue, + settings: Settings, +): + asyncio.run( + _async_worker( + pc, + pipeline_config, + request_queue, + response_queue, + settings, + ) + ) + + +async def _async_worker( + pc: ProcessControl, + pipeline_config: PipelineConfig, + request_queue: RequestQueue, + response_queue: ResponseQueue, + settings: Settings, +): + tokenizer, model_factory = PIPELINE_REGISTRY.retrieve_factory( + pipeline_config + ) + batch_config = batch_config_from_pipeline_config(pipeline_config) + model_name = pipeline_config.model_path + + async with start_telemetry_consumer(settings) as metric_client: + async with start_model_worker( + model_factory=model_factory, + batch_config=batch_config, + settings=settings, + metric_client=metric_client, + ) as engine_queue: + # Start the model worker process. + # Create dynamic and continuous batching workers and associated queues + # to feed the model worker process. + async with TokenGeneratorPipeline( + model_name=model_name, + tokenizer=tokenizer, + engine_queue=engine_queue, + ) as pipeline: + pc.set_started() + while True: + pc.beat() + if pc.is_canceled(): + break + + try: + (prompts, max_new_tokens, use_tqdm) = request_queue.get( + timeout=0.3 + ) + + if use_tqdm: + pbar = tqdm.tqdm(total=len(prompts)) + + # Lambda to do a full text generation for a request. + async def all_tokens( + i: int, + prompt: str, + ) -> tuple[int, str]: + request = TokenGeneratorRequest( + id=str(i), + index=0, + model_name=model_name, + prompt=prompt, + max_new_tokens=max_new_tokens, + ) + + # Generate this request until complete + tokens = await pipeline.all_tokens(request) + if use_tqdm: + pbar.update(1) + return (i, "".join(t.decoded_token for t in tokens)) + + all_tokens_tasks = [ + all_tokens(i, prompt) + for i, prompt in enumerate(prompts) + ] + responses = [""] * len(prompts) + for i, response in await asyncio.gather( + *all_tokens_tasks + ): + responses[i] = response + + if use_tqdm: + pbar.close() + + response_queue.put(responses) + + except queue.Empty: + continue + pc.set_completed() diff --git a/src/max/entrypoints/pipelines.py b/src/max/entrypoints/pipelines.py new file mode 100644 index 0000000000..bdd102aa9f --- /dev/null +++ b/src/max/entrypoints/pipelines.py @@ -0,0 +1,274 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + + +import functools +import logging +import os +import signal + +import click +from max.entrypoints.cli import ( + generate_text_for_pipeline, + list_pipelines_to_console, + list_pipelines_to_json, + pipeline_config_options, + pipeline_encode, + serve_pipeline, +) +from max.pipelines import PIPELINE_REGISTRY, PipelineConfig +from max.pipelines.architectures import register_all_models +from max.serve.config import Settings +from max.serve.telemetry.common import configure_logging, configure_metrics + +logger = logging.getLogger(__name__) + + +class ModelGroup(click.Group): + def get_command(self, ctx, cmd_name): + rv = click.Group.get_command(self, ctx, cmd_name) + if rv is not None: + return rv + supported = ", ".join(self.list_commands(ctx)) + ctx.fail( + f"Command not supported: {cmd_name}\nSupported commands:" + f" {supported}" + ) + + +@click.command(cls=ModelGroup) +def main(): + settings = Settings() + configure_logging(settings) + configure_metrics(settings) + register_all_models() + + +def common_server_options(func): + @click.option( + "--profile-serve", + is_flag=True, + show_default=True, + default=False, + help=( + "Whether to enable pyinstrument profiling on the serving endpoint." + ), + ) + @click.option( + "--performance-fake", + type=click.Choice(["none", "no-op", "speed-of-light", "vllm"]), + default="none", + help="Fake the engine performance (for benchmarking)", + ) + @click.option( + "--batch-timeout", + type=float, + default=0.0, + help="Custom timeout for any particular batch.", + ) + @click.option( + "--model-name", + type=str, + help="Deprecated, please use `model_path` instead. Optional model alias for serving the model.", + ) + @click.option( + "--sim-failure", + type=int, + default=0, + help="Simulate fake-perf with failure percentage", + ) + @functools.wraps(func) + def wrapper(*args, **kwargs): + return func(*args, **kwargs) + + return wrapper + + +@main.command(name="serve") +@pipeline_config_options +@common_server_options +def cli_serve( + profile_serve, + performance_fake, + batch_timeout, + model_name, + sim_failure, + **config_kwargs, +): + """Start a model serving endpoint for inference. + + This command launches a server that can handle inference requests for the + specified model. The server supports various performance optimization + options and monitoring capabilities. + """ + # Initialize config, and serve. + pipeline_config = PipelineConfig(**config_kwargs) + failure_percentage = None + if sim_failure > 0: + failure_percentage = sim_failure + serve_pipeline( + pipeline_config=pipeline_config, + profile=profile_serve, + performance_fake=performance_fake, + batch_timeout=batch_timeout, + model_name=model_name, + failure_percentage=failure_percentage, + ) + + +@main.command(name="generate") +@pipeline_config_options +@click.option( + "--prompt", + type=str, + default="I believe the meaning of life is", + help="The text prompt to use for further generation.", +) +@click.option( + "--image_url", + type=str, + multiple=True, + default=[], + help=( + "Images to include along with prompt, specified as URLs." + " The images are ignored if the model does not support" + " image inputs." + ), +) +@click.option( + "--num-warmups", + type=int, + default=0, + show_default=True, + help="# of warmup iterations to run before the final timed run.", +) +def cli_pipeline(prompt, image_url, num_warmups, **config_kwargs): + """Generate text using the specified model. + + This command runs text generation using the loaded model, optionally + accepting image inputs for multimodal models. + """ + # Replit model_paths are kinda broken due to transformers + # version mismatch. We manually update trust_remote_code to True + # because the modularai version does not have the custom Python code needed + # Without this, we get: + # ValueError: `attn_type` has to be either `multihead_attention` or + # `multiquery_attention`. Received: grouped_query_attention + # Another reason why we override this flag here is because at PipelineConfig + # instantiation below, we'll call AutoConfig.from_pretrained, which will + # trigger the error above if not set to True. + if "replit" in config_kwargs["model_path"]: + config_kwargs["trust_remote_code"] = True + + if config_kwargs["max_new_tokens"] == -1: + # Limit generate default max_new_tokens to 100. + config_kwargs["max_new_tokens"] = 100 + + # Load tokenizer & pipeline. + pipeline_config = PipelineConfig(**config_kwargs) + generate_text_for_pipeline( + pipeline_config, + prompt=prompt, + image_urls=image_url, + num_warmups=num_warmups, + ) + + +@main.command(name="encode") +@pipeline_config_options +@click.option( + "--prompt", + type=str, + default="I believe the meaning of life is", + help="The text prompt to use for further generation.", +) +@click.option( + "--num-warmups", + type=int, + default=0, + show_default=True, + help="# of warmup iterations to run before the final timed run.", +) +def encode(prompt, num_warmups, **config_kwargs): + """Encode text input into model embeddings. + + This command processes the input text through the model's encoder, producing + embeddings that can be used for various downstream tasks. + """ + # Load tokenizer & pipeline. + pipeline_config = PipelineConfig(**config_kwargs) + pipeline_encode( + pipeline_config, + prompt=prompt, + num_warmups=num_warmups, + ) + + +@main.command(name="warm-cache") +@pipeline_config_options +def cli_warm_cache(**config_kwargs) -> None: + """Load and compile the model to prepare caches. + + This command is particularly useful in combination with + --save-to-serialized-model-path. Providing that option to this command + will result in a compiled model being stored to that path. Subsequent + invocations of other commands can then use --serialized-model-path to + reuse the previously-compiled model. + + Even without --save-to-serialized-model-path, this command will as a side + effect warm the Hugging Face cache and in some cases, MAX compilation + caches. + """ + pipeline_config = PipelineConfig(**config_kwargs) + _ = PIPELINE_REGISTRY.retrieve(pipeline_config) + + +@main.command(name="list") +@click.option( + "--json", + is_flag=True, + show_default=True, + default=False, + help="Print the list of pipelines options in JSON format.", +) +def cli_list(json): + """List available pipeline configurations and models. + + This command displays information about all registered pipelines and their + configurations. Output can be formatted as human-readable text or JSON. + """ + if json: + list_pipelines_to_json() + else: + list_pipelines_to_console() + + +if __name__ == "__main__": + if directory := os.getenv("BUILD_WORKSPACE_DIRECTORY"): + os.chdir(directory) + + # Workaround for https://github.com/buildbuddy-io/buildbuddy/issues/8326 + if ( + signal.getsignal(signal.SIGINT) == signal.SIG_IGN + and signal.getsignal(signal.SIGTERM) == signal.SIG_IGN + and signal.getsignal(signal.SIGQUIT) == signal.SIG_IGN + ): + # For SIGINT, Python remaps SIG_DFL to default_int_handler on startup. + # We do the same here to retain the same behavior we would get if we + # started normally. (SIG_DFL terminates the process immediately; + # default_int_handler raises KeyboardInterrupt.) + signal.signal(signal.SIGINT, signal.default_int_handler) + signal.signal(signal.SIGTERM, signal.SIG_DFL) + signal.signal(signal.SIGQUIT, signal.SIG_DFL) + + main() diff --git a/src/max/pipelines/README.md b/src/max/pipelines/README.md new file mode 100644 index 0000000000..160952f64b --- /dev/null +++ b/src/max/pipelines/README.md @@ -0,0 +1,119 @@ +# MAX Pipelines + +These are end-to-end pipelines that demonstrate the power of +[MAX](https://docs.modular.com/max/) for accelerating common AI workloads, and +more. Each of the supported pipelines can be served via an OpenAI-compatible +endpoint. + +MAX can also serve most PyTorch-based large language models that are +present on Hugging Face, although not at the same performance as native MAX +Graph versions. + +## Pipelines + +Highly optimized MAX Graph implementations exist for several core model +architectures. These include: + +- [Llama 3.1](llama3): A text completion pipeline using the Llama 3.1 model, +implemented using the MAX Graph API. This pipeline contains everything +needed to run a self-hosted large language model in the `LlamaForCausalLM` +family with state-of-the-art serving throughput. +- [Mistral](architectures/mistral): Support for the `MistralForCausalLM` family +of text completion models, by default using the Mistral NeMo 12B model. This pipeline +has been tuned for performance using the MAX Graph API. +- [Replit Code](architectures/replit): Code generation via the +Replit Code V1.5 3B model, implemented using the MAX Graph API. + +Instructions for how to run each pipeline can be found in their respective +subdirectories, along with all configuration parameters. A shared driver is +used to execute the pipelines. + +## Usage + +The easiest way to try out any of the pipelines is with our Magic command-line +tool. + +1. Install Magic on macOS and Ubuntu with this command: + + ```shell + curl -ssL https://magic.modular.com | bash + ``` + + Then run the source command that's printed in your terminal. + + To see the available commands, you can run `magic --help`. + [Learn more about Magic here](https://docs.modular.com/magic). + +2. Clone the MAX examples repository: + + If you don't already have a local clone of this repository, create one via: + + ```shell + git clone https://github.com/modular/max.git + ``` + + The following instructions assume that you're present within this + directory, and you can change to it after cloning: + + ```shell + cd max/src/max/ + ``` + +3. Now run one of the text completion demos with any of following commands: + + ```shell + magic run generate --model-path=modularai/llama-3.1 --prompt "Why is the sky blue?" + magic run generate --model-path=modularai/replit-code-1.5 --prompt "def fibonacci(n):" + magic run generate --model-path=mistralai/Mistral-Nemo-Instruct-2407 --prompt "Why is the sky blue?" + ``` + +4. Host a chat completion endpoint via MAX Serve. + + MAX Serve provides functionality to host performant OpenAI compatible + endpoints using the FastAPI framework. + + Finetuned weights hosted on Hugging Face can be used with one + of these optimized pipeline architectures when serving via the `serve` + command: + + ```shell + magic run serve --model-path=modularai/llama-3.1 + ``` + + A request can then be submitted via a cURL command. + + ```shell + curl -N http://localhost:8000/v1/chat/completions \ + -H "Content-Type: application/json" \ + -d '{ + "model": "modularai/llama-3.1", + "stream": true, + "messages": [ + {"role": "system", "content": "You are a helpful assistant."}, + {"role": "user", "content": "Who won the world series in 2020?"} + ] + }' + ``` + +## Verified Hugging Face model architectures + +If you provide a repository ID for a Hugging Face large language model +that does not currently have an optimized MAX Graph implementation, MAX +falls back to serving a PyTorch eager version of the model. + +The following table lists the model architectures tested to work with MAX. + +| **Architecture** | **Example Model** | +| --- | --- | +| AquilaForCausalLM | BAAI/Aquila-7B | +| ChatGLMModel | THUDM/chatglm3-6b | +| GPT2LMHeadModel | openai-community/gpt2 | +| GPTJForCausalLM | EleutherAI/gpt-j-6b | +| LlamaForCausalLM | meta-llama/Llama-3.2-3B-Instruct | +| LlamaForCausalLM | Skywork/Skywork-o1-Open-Llama-3.1-8B | +| LlamaForCausalLM | deepseek-ai/deepseek-coder-1.3b-instruct | +| PhiForCausalLM | microsoft/phi-2 | +| Phi3ForCausalLM | microsoft/Phi-3-mini-4k-instruct | +| GraniteForCausalLM | ibm-granite/granite-3.1-8b-instruct | +| Qwen2ForCausalLM | Qwen/Qwen2.5-1.5B-Instruct | +| OlmoForCausalLM | allenai/OLMo-1B-0724-hf | diff --git a/src/max/pipelines/__init__.py b/src/max/pipelines/__init__.py new file mode 100644 index 0000000000..3020fb1d21 --- /dev/null +++ b/src/max/pipelines/__init__.py @@ -0,0 +1,98 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +"""Types to interface with ML pipelines such as text/token generation.""" + +from typing import Callable as _Callable +from typing import Union as _Union + +from .config import ( + PipelineConfig, + PipelineEngine, + RopeType, + SamplingParams, + SupportedEncoding, + WeightsFormat, +) +from .context import InputContext, TextAndVisionContext, TextContext +from .embeddings_pipeline import EmbeddingsPipeline +from .hf_utils import HuggingFaceFile +from .interfaces import ( + EmbeddingsGenerator, + PipelineTask, + PipelineTokenizer, + TokenGenerator, + TokenGeneratorContext, + TokenGeneratorRequest, + TokenGeneratorRequestFunction, + TokenGeneratorRequestMessage, + TokenGeneratorRequestTool, + TokenGeneratorResponseFormat, +) +from .pipeline import ( + ModelInputs, + ModelOutputs, + PipelineModel, + TextGenerationPipeline, + upper_bounded_default, +) +from .registry import PIPELINE_REGISTRY, SupportedArchitecture +from .response import EmbeddingsResponse, LogProbabilities, TextResponse +from .tokenizer import ( + IdentityPipelineTokenizer, + PreTrainedPipelineTokenizer, + TextAndVisionTokenizer, + TextTokenizer, +) + +PipelinesFactory = _Callable[[], _Union[TokenGenerator, EmbeddingsGenerator]] + + +__all__ = [ + "HuggingFaceFile", + "PipelineConfig", + "PipelineEngine", + "PipelineTask", + "PIPELINE_REGISTRY", + "SamplingParams", + "SupportedArchitecture", + "SupportedEncoding", + "TokenGenerator", + "TokenGeneratorContext", + "TokenGeneratorRequest", + "TokenGeneratorRequestMessage", + "TokenGeneratorResponseFormat", + "TokenGeneratorRequestTool", + "TokenGeneratorResponseFormat", + "TokenGeneratorRequestFunction", + "IdentityPipelineTokenizer", + "InputContext", + "TextContext", + "TextAndVisionContext", + "PipelineTokenizer", + "PreTrainedPipelineTokenizer", + "TextTokenizer", + "TextAndVisionTokenizer", + "TextGenerationPipeline", + "WeightsFormat", + "RopeType", + "PipelineModel", + "ModelInputs", + "ModelOutputs", + "TextResponse", + "LogProbabilities", + "EmbeddingsGenerator", + "EmbeddingsPipeline", + "EmbeddingsResponse", + "upper_bounded_default", +] diff --git a/src/max/pipelines/architectures/__init__.py b/src/max/pipelines/architectures/__init__.py new file mode 100644 index 0000000000..cfb90c5bd3 --- /dev/null +++ b/src/max/pipelines/architectures/__init__.py @@ -0,0 +1,49 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from max.pipelines import PIPELINE_REGISTRY + + +def register_all_models(): + """Imports model architectures, thus registering the architecture in the shared PIPELINE_REGISTRY.""" + from .exaone import exaone_arch + from .granite import granite_arch + from .llama3 import llama_arch + from .llama_vision import llama_vision_arch + from .mistral import mistral_arch + from .mpnet import mpnet_arch + from .olmo import olmo_arch + from .phi3 import phi3_arch + from .pixtral import pixtral_arch + from .qwen2 import qwen2_arch + from .replit import replit_arch + + architectures = [ + exaone_arch, + llama_arch, + llama_vision_arch, + mistral_arch, + mpnet_arch, + olmo_arch, + phi3_arch, + pixtral_arch, + qwen2_arch, + replit_arch, + granite_arch, + ] + + for arch in architectures: + PIPELINE_REGISTRY.register(arch) + + +__all__ = ["register_all_models"] diff --git a/src/max/pipelines/architectures/deepseekV2/layers/__init__.py b/src/max/pipelines/architectures/deepseekV2/layers/__init__.py new file mode 100644 index 0000000000..fcf4807305 --- /dev/null +++ b/src/max/pipelines/architectures/deepseekV2/layers/__init__.py @@ -0,0 +1,14 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +"""DeepseekV2 layer modules.""" diff --git a/src/max/pipelines/architectures/deepseekV2/layers/moe_gate.py b/src/max/pipelines/architectures/deepseekV2/layers/moe_gate.py new file mode 100644 index 0000000000..fd814e5663 --- /dev/null +++ b/src/max/pipelines/architectures/deepseekV2/layers/moe_gate.py @@ -0,0 +1,82 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +"""Mixture of Experts Gate Layer.""" + +from dataclasses import dataclass + +from max.dtype import DType +from max.graph import TensorValue, ops +from max.pipelines.nn import Linear +from max.pipelines.nn.layer import LayerV2 + + +@dataclass +class MaxMoEGate(LayerV2): + """Mixture of Experts Gate Layer. + + Args: + gate_score: Linear layer that projects from hidden_size to intermediate_size. + num_experts_per_tok: Number of experts to route each token to. + n_routed_experts: Total number of experts in the model. + routed_scaling_factor: Scaling factor for routing weights. + aux_loss_alpha: Weight for auxiliary loss. + n_group: Number of groups for expert routing. + topk_group: Number of top experts per group. + gating_dim: Hidden dimension size for gating. + + Shape: + Input: (batch_size, seq_length, hidden_size) + Output: tuple of: + - topk_idx: (batch_size * seq_length, num_experts_per_tok) + - topk_weight: (batch_size * seq_length, num_experts_per_tok) + """ + + def __post_init__(self): + super().__init__() + + gate_score: Linear + num_experts_per_tok: int = 6 + n_routed_experts: int = 64 + routed_scaling_factor: float = 1.0 + aux_loss_alpha: float = 0.001 + n_group: int = 1 + topk_group: int = 1 + gating_dim: int = 2048 # equal to config.hidden_size + + def __call__( + self, hidden_states: TensorValue + ) -> tuple[TensorValue, TensorValue]: + """Compute expert routing weights and indices for input hidden states. + + Args: + hidden_states: Input tensor of shape (batch_size, seq_length, hidden_size) + + Returns: + tuple containing: + - topk_idx: Indices of top-k selected experts of shape (batch_size * seq_length, num_experts_per_tok) + - topk_weight: Routing weights for selected experts of shape (batch_size * seq_length, num_experts_per_tok) + """ + # compute gating score + bsz, seq_len, h = hidden_states.shape + hidden_states = hidden_states.reshape([bsz * seq_len, h]) + + logits = self.gate_score(hidden_states.cast(DType.float32)) + scores = ops.softmax(logits[-1].cast(DType.float32)) + + # select top k experts + topk_weight, topk_idx = ops.top_k( + scores, self.num_experts_per_tok, -1, False + ) + + return topk_idx, topk_weight diff --git a/src/max/pipelines/architectures/exaone/__init__.py b/src/max/pipelines/architectures/exaone/__init__.py new file mode 100644 index 0000000000..5a5f6a2981 --- /dev/null +++ b/src/max/pipelines/architectures/exaone/__init__.py @@ -0,0 +1,16 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from .arch import exaone_arch + +__all__ = ["exaone_arch"] diff --git a/src/max/pipelines/architectures/exaone/arch.py b/src/max/pipelines/architectures/exaone/arch.py new file mode 100644 index 0000000000..ce2bfbb8e4 --- /dev/null +++ b/src/max/pipelines/architectures/exaone/arch.py @@ -0,0 +1,59 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from max.pipelines import ( + PipelineTask, + RopeType, + SupportedArchitecture, + SupportedEncoding, + TextTokenizer, + WeightsFormat, +) +from max.pipelines.kv_cache import KVCacheStrategy + +from ..llama3 import weight_adapters +from ..llama3.model import Llama3Model +from .weight_adapters import convert_exaone_safetensor_state_dict + +exaone_arch = SupportedArchitecture( + name="ExaoneForCausalLM", + default_encoding=SupportedEncoding.float32, + task=PipelineTask.TEXT_GENERATION, + supported_encodings={ + SupportedEncoding.q4_k: [KVCacheStrategy.NAIVE], + SupportedEncoding.q6_k: [KVCacheStrategy.NAIVE], + SupportedEncoding.float32: [ + KVCacheStrategy.PAGED, + KVCacheStrategy.CONTINUOUS, + KVCacheStrategy.NAIVE, + ], + SupportedEncoding.bfloat16: [ + KVCacheStrategy.PAGED, + KVCacheStrategy.CONTINUOUS, + KVCacheStrategy.NAIVE, + ], + }, + example_repo_ids=[ + "LGAI-EXAONE/EXAONE-3.5-2.4B-Instruct", + "LGAI-EXAONE/EXAONE-3.5-7.8B-Instruct", + "LGAI-EXAONE/EXAONE-3.5-32B-Instruct", + ], + pipeline_model=Llama3Model, + tokenizer=TextTokenizer, + rope_type=RopeType.neox, + default_weights_format=WeightsFormat.gguf, + weight_adapters={ + WeightsFormat.safetensors: convert_exaone_safetensor_state_dict, + WeightsFormat.gguf: weight_adapters.convert_gguf_state_dict, + }, +) diff --git a/src/max/pipelines/architectures/exaone/weight_adapters.py b/src/max/pipelines/architectures/exaone/weight_adapters.py new file mode 100644 index 0000000000..39fcd27b0b --- /dev/null +++ b/src/max/pipelines/architectures/exaone/weight_adapters.py @@ -0,0 +1,56 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from __future__ import annotations + +from max.graph.weights import WeightData, Weights +from transformers import LlamaConfig + +from ..llama3.weight_adapters import _compute_safetensor_rope_scaling + +# Maps Exaone Safetensor to MAX weight names. +EXAONE_SAFETENSOR_MAPPING = { + "transformer.wte": "embed_tokens", + "transformer.h": "layers", + "mlp.c_fc_1": "mlp.up_proj", + "mlp.c_proj": "mlp.down_proj", + "mlp.c_fc_0": "mlp.gate_proj", + "ln_2": "post_attention_layernorm", + "ln_1": "input_layernorm", + "attn.attention.q_proj": "self_attn.q_proj", + "attn.attention.v_proj": "self_attn.v_proj", + "attn.attention.k_proj": "self_attn.k_proj", + "attn.attention.out_proj": "self_attn.o_proj", + "transformer.ln_f": "norm", +} + + +def convert_exaone_safetensor_state_dict( + state_dict: dict[str, Weights], + huggingface_config: LlamaConfig, + **unused_kwargs, +) -> dict[str, WeightData]: + new_state_dict: dict[str, WeightData] = {} + # Map the weight names. + for safetensor_name, value in state_dict.items(): + max_name = safetensor_name + for before, after in EXAONE_SAFETENSOR_MAPPING.items(): + max_name = max_name.replace(before, after) + new_state_dict[max_name] = value.data() + # Add rope scaling to the state dict. + rope_scaling = _compute_safetensor_rope_scaling(huggingface_config) + if rope_scaling is not None: + new_state_dict["rope_freqs.weight"] = WeightData.from_numpy( + rope_scaling, "rope_freqs.weight" + ) + return new_state_dict diff --git a/src/max/pipelines/architectures/granite/__init__.py b/src/max/pipelines/architectures/granite/__init__.py new file mode 100644 index 0000000000..95f180a1e2 --- /dev/null +++ b/src/max/pipelines/architectures/granite/__init__.py @@ -0,0 +1,16 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from .arch import granite_arch + +__all__ = ["granite_arch"] diff --git a/src/max/pipelines/architectures/granite/arch.py b/src/max/pipelines/architectures/granite/arch.py new file mode 100644 index 0000000000..e8d4fb19de --- /dev/null +++ b/src/max/pipelines/architectures/granite/arch.py @@ -0,0 +1,55 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from max.pipelines import ( + PipelineTask, + RopeType, + SupportedArchitecture, + SupportedEncoding, + TextTokenizer, + WeightsFormat, +) +from max.pipelines.kv_cache import KVCacheStrategy + +from ..llama3 import weight_adapters +from .model import GraniteModel + +granite_arch = SupportedArchitecture( + name="GraniteForCausalLM", + task=PipelineTask.TEXT_GENERATION, + example_repo_ids=[ + "ibm-granite/granite-3.1-8b-instruct", + "ibm-granite/granite-3.1-8b-base", + ], + default_weights_format=WeightsFormat.gguf, + default_encoding=SupportedEncoding.float32, + supported_encodings={ + SupportedEncoding.float32: [ + KVCacheStrategy.PAGED, + KVCacheStrategy.CONTINUOUS, + KVCacheStrategy.NAIVE, + ], + SupportedEncoding.bfloat16: [ + KVCacheStrategy.PAGED, + KVCacheStrategy.CONTINUOUS, + KVCacheStrategy.NAIVE, + ], + }, + pipeline_model=GraniteModel, + tokenizer=TextTokenizer, + rope_type=RopeType.normal, + weight_adapters={ + WeightsFormat.safetensors: weight_adapters.convert_safetensor_state_dict, + WeightsFormat.gguf: weight_adapters.convert_gguf_state_dict, + }, +) diff --git a/src/max/pipelines/architectures/granite/model.py b/src/max/pipelines/architectures/granite/model.py new file mode 100644 index 0000000000..a3dc42da60 --- /dev/null +++ b/src/max/pipelines/architectures/granite/model.py @@ -0,0 +1,38 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from __future__ import annotations + +from max.engine import InferenceSession +from max.graph import ops +from max.pipelines import PipelineConfig + +from ..llama3.model import Llama3Model + + +class GraniteModel(Llama3Model): + """Granite pipeline model implementation.""" + + def __init__( + self, pipeline_config: PipelineConfig, session: InferenceSession + ) -> None: + super().__init__(pipeline_config, session) + + logits_scaling = getattr( + self.pipeline_config.huggingface_config, "logits_scaling", 1.0 + ) + + if logits_scaling != 1.0: + self.logits_processor = lambda logits: logits / ops.constant( + logits_scaling, logits.dtype + ) diff --git a/src/max/pipelines/architectures/llama3/README.md b/src/max/pipelines/architectures/llama3/README.md new file mode 100644 index 0000000000..dfff0ded91 --- /dev/null +++ b/src/max/pipelines/architectures/llama3/README.md @@ -0,0 +1,134 @@ +# Llama 3.1 + +**Language:** Python + +**API**: MAX Graph + +This pipeline provides optimized support for the `LlamaForCausalLM` family +of large language models, as exemplified by the Llama 3.1 text completion +model. The model itself has been constructed in Python +using the [MAX Graph API](https://docs.modular.com/max/graph/). + +The MAX Graph API provides an accessible interface to the construction of +flexible accelerated compute graphs, which are then optimized by the MAX +Engine's advanced graph compiler. This pipeline showcases how a large language +model can be fully defined using Python and MAX Graphs and then compiled for +optimal inference performance via the MAX Engine. + +## Model + +[Llama 3.1](https://llama.meta.com/llama3/) is an open source large language +model released by Meta. The structure of this implementation was inspired by +Andrej Karpathy's [llama2.c](https://github.com/karpathy/llama2.c) and its [Mojo +port by Aydyn Tairov](https://github.com/tairov/llama2.mojo). + +The text completion demo is compatible with the the official Llama 3 +[text completion demo](https://github.com/meta-llama/llama3/blob/14aab0428d3ec3a9596f1dea06d9c564f9c0e35f/example_text_completion.py). + +The default settings for this pipeline use the 8B set of pretrained weights in +`q4_k` quantized encodings. + +## Usage + +The easiest way to try out this pipeline is with our Magic command-line tool. + +1. Install Magic on macOS and Ubuntu with this command: + + ```shell + curl -ssL https://magic.modular.com | bash + ``` + + Then run the source command that's printed in your terminal. + + To see the available commands, you can run `magic --help`. + [Learn more about Magic here](https://docs.modular.com/magic). + +2. Clone the MAX examples repository: + + If you don't already have a local clone of this repository, create one via: + + ```shell + git clone https://github.com/modular/max.git + ``` + + The following instructions assume that you're present within this pipeline's + directory, and you can change to it after cloning: + + ```shell + cd max/src/max/pipelines + ``` + +3. Now run the Llama 3.1 text completion demo with the following command: + + ```shell + magic run generate --model-path="modularai/Llama-3.1-8B-Instruct-GGUF" --prompt "I believe the meaning of life is" + ``` + +4. Host a chat completion endpoint via MAX Serve. + + MAX Serve provides functionality to host performant OpenAI compatible + endpoints using the FastAPI framework. + + You can configure the pipeline to be hosted by using the `--serve` argument. + For example: + + ```shell + magic run serve --model-path="modularai/Llama-3.1-8B-Instruct-GGUF" + ``` + + A request can be submitted via a cURL command. + + ```shell + curl -N http://localhost:8000/v1/chat/completions \ + -H "Content-Type: application/json" \ + -d '{ + "model": "modularai/llama-3.1", + "stream": true, + "messages": [ + {"role": "system", "content": "You are a helpful assistant."}, + {"role": "user", "content": "Who won the world series in 2020?"} + ] + }' + ``` + + Additionally, finetuned weights hosted on Hugging Face for any compatible + `LlamaForCausalLM` model can be used with this optimized architecture + via the `serve` command: + + ```shell + magic run serve --model-path=meta-llama/Llama-3.2-1B + ``` + +## Options + +The following command-line options are available to customize operation of the +pipeline: + +- `--max-length`: Controls the maximum length of the text sequence (includes the + input tokens). Defaults to huggingface model config's max sequence length. +- `--max-new-tokens`: The maximum number of new tokens to generate. If a -1 + value is provided, the model will continue to generate tokens for the entire + context length. (Default value: -1) +- `--prompt`: The text prompt to use for further generation. +- `--quantization-encoding`: The encoding to use for a datatype that can be + quantized to a low bits per weight format. The options for quantized formats + will download and cache default weights, but `float32` requires the use of + `--weight-path` to specify locally downloaded full-precision weights for use + in the model. + Valid values: `q4_0`, `q4_k`, `q6_k`, `bfloat16`, `float32`. + (Default value: `float32`). +- `--save-to-serialized-model-path`: If specified, writes the serialized model + to this path. +- `--serialized-model-path`: If specified, tries to load a serialized model + from this path. +- `--top-k`: Limits the sampling to the K most probable tokens. Default is 1. +- `--version`: Selects which version in the Llama 3 family to use. + Valid values: `3`, `3.1`. + (Default value: `3.1`) +- `--weight-path`: Overrides the default URL, and allows for an + already-downloaded pretrained weight file to be used with the model. +- `--max-batch-size`: Specifies the maximum batch size to be used. + Default is 1. +- `--devices`: Specifies the device(s) to use for the model. This can optionally + be "cpu", "gpu", or a comma-separated list of GPU ID(s) like "gpu-0,gpu-1". + Defaults to the first available GPU, or "cpu" if no GPUs are available. diff --git a/src/max/pipelines/architectures/llama3/__init__.py b/src/max/pipelines/architectures/llama3/__init__.py new file mode 100644 index 0000000000..a70f69fa33 --- /dev/null +++ b/src/max/pipelines/architectures/llama3/__init__.py @@ -0,0 +1,16 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from .arch import llama_arch + +__all__ = ["llama_arch"] diff --git a/src/max/pipelines/architectures/llama3/arch.py b/src/max/pipelines/architectures/llama3/arch.py new file mode 100644 index 0000000000..2bdd4dd5c2 --- /dev/null +++ b/src/max/pipelines/architectures/llama3/arch.py @@ -0,0 +1,66 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from max.pipelines import ( + PipelineTask, + RopeType, + SupportedArchitecture, + SupportedEncoding, + TextTokenizer, + WeightsFormat, +) +from max.pipelines.kv_cache import KVCacheStrategy + +from . import weight_adapters +from .model import Llama3Model + +llama_arch = SupportedArchitecture( + name="LlamaForCausalLM", + example_repo_ids=[ + "meta-llama/Llama-3.1-8B-Instruct", + "deepseek-ai/DeepSeek-R1-Distill-Llama-8B", + "meta-llama/Llama-Guard-3-8B", + "meta-llama/Llama-3.2-1B-Instruct", + "meta-llama/Llama-3.2-3B-Instruct", + "deepseek-ai/deepseek-coder-6.7b-instruct", + "modularai/llama-3.1", + ], + default_encoding=SupportedEncoding.q4_k, + supported_encodings={ + SupportedEncoding.gptq: [ + KVCacheStrategy.PAGED, + ], + SupportedEncoding.q4_k: [KVCacheStrategy.NAIVE], + SupportedEncoding.q4_0: [KVCacheStrategy.NAIVE], + SupportedEncoding.q6_k: [KVCacheStrategy.NAIVE], + SupportedEncoding.float32: [ + KVCacheStrategy.PAGED, + KVCacheStrategy.CONTINUOUS, + KVCacheStrategy.NAIVE, + ], + SupportedEncoding.bfloat16: [ + KVCacheStrategy.PAGED, + KVCacheStrategy.CONTINUOUS, + KVCacheStrategy.NAIVE, + ], + }, + pipeline_model=Llama3Model, + tokenizer=TextTokenizer, + rope_type=RopeType.normal, + default_weights_format=WeightsFormat.safetensors, + weight_adapters={ + WeightsFormat.safetensors: weight_adapters.convert_safetensor_state_dict, + WeightsFormat.gguf: weight_adapters.convert_gguf_state_dict, + }, + task=PipelineTask.TEXT_GENERATION, +) diff --git a/src/max/pipelines/architectures/llama3/config.py b/src/max/pipelines/architectures/llama3/config.py new file mode 100644 index 0000000000..50f0849b0c --- /dev/null +++ b/src/max/pipelines/architectures/llama3/config.py @@ -0,0 +1,54 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # +"""All configurable parameters for Llama3.""" + +from __future__ import annotations + +from max.pipelines import HuggingFaceFile, SupportedEncoding + + +def get_llama_huggingface_file( + version: str, encoding: SupportedEncoding, revision: str | None = None +) -> HuggingFaceFile: + if version == "3": + filenames = { + SupportedEncoding.bfloat16: "llama-3-8b-instruct-bf16.gguf", + SupportedEncoding.float32: "llama-3-8b-f32.gguf", + SupportedEncoding.q4_k: "llama-3-8b-instruct-q4_k_m.gguf", + SupportedEncoding.q4_0: "llama-3-8b-instruct-q4_0.gguf", + SupportedEncoding.q6_k: "llama-3-8b-instruct-q6_k.gguf", + } + filename = filenames.get(encoding) + if filename is None: + raise ValueError( + f"encoding does not have default hf file: {encoding}" + ) + return HuggingFaceFile("modularai/llama-3", filename, revision) + + elif version == "3.1": + filenames = { + SupportedEncoding.bfloat16: "llama-3.1-8b-instruct-bf16.gguf", + SupportedEncoding.float32: "llama-3.1-8b-instruct-f32.gguf", + SupportedEncoding.q4_k: "llama-3.1-8b-instruct-q4_k_m.gguf", + SupportedEncoding.q4_0: "llama-3.1-8b-instruct-q4_0.gguf", + SupportedEncoding.q6_k: "llama-3.1-8b-instruct-q6_k.gguf", + } + filename = filenames.get(encoding) + if filename is None: + raise ValueError( + f"encoding does not have default hf file: {encoding}" + ) + return HuggingFaceFile("modularai/llama-3.1", filename, revision) + + else: + raise ValueError(f"version {version} not supported for llama") diff --git a/src/max/pipelines/architectures/llama3/gguf.py b/src/max/pipelines/architectures/llama3/gguf.py new file mode 100644 index 0000000000..97255112b2 --- /dev/null +++ b/src/max/pipelines/architectures/llama3/gguf.py @@ -0,0 +1,468 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # +"""Build a Llama3 model via Graph API from GGUF weights.""" + +from __future__ import annotations + +import math +from dataclasses import dataclass +from typing import List, Literal, Optional + +import numpy as np +from max.dtype import DType +from max.graph import ( + DeviceRef, + Graph, + TensorValue, + TensorValueLike, + ops, +) +from max.graph.quantization import QuantizationEncoding +from max.graph.weights import Weights +from max.pipelines import PipelineConfig, RopeType, WeightsFormat +from max.pipelines.kv_cache import ( + FetchContinuousBatchingKVCacheCollection, + FetchPagedKVCacheCollection, + KVCacheParams, + KVCacheStrategy, +) +from max.pipelines.nn import ( + MLP, + AttentionWithRope, + DistributedAttentionWithRope, + DistributedMLP, + DistributedRMSNorm, + DistributedTransformer, + DistributedTransformerBlock, + Embedding, + Linear, + LinearV2, + OptimizedRotaryEmbedding, + RMSNorm, + VocabParallelEmbedding, +) +from max.pipelines.nn.layer import Layer + + +def distribute_value( + v: TensorValue, devices: List[DeviceRef] +) -> List[TensorValue]: + return [v.to(device) for device in devices] + + +def shard_col_value( + x: TensorValueLike, devices: List[DeviceRef] +) -> List[TensorValue]: + n_devices = len(devices) + v = TensorValue(x) + col_size = int(v.shape[1]) // n_devices + return [ + v[:, i * col_size : (i + 1) * col_size].to(device) + for i, device in enumerate(devices) + ] + + +def shard_row_value( + x: TensorValueLike, devices: List[DeviceRef] +) -> List[TensorValue]: + n_devices = len(devices) + v = TensorValue(x) + row_size = int(v.shape[0]) // n_devices + return [ + v[i * row_size : (i + 1) * row_size, :].to(device) + for i, device in enumerate(devices) + ] + + +@dataclass +class Phi3MLP(Layer): + """ + A multi-layer perceptron composed of two linear layers. Where the + gate_up_proj is a stacked linear layer which contains the up_proj and + gate_proj. This is used by the Phi3 models. + """ + + gate_up_proj: Linear + down_proj: Linear + + def __call__(self, x: TensorValue) -> TensorValue: + up_states = self.gate_up_proj(x) + + gate = up_states[:, : up_states.shape.static_dims[0] // 2] + up_states = up_states[:, up_states.shape.static_dims[0] // 2 :] + + return self.down_proj(ops.silu(gate) * up_states) + + +def rms_norm(dims: int, eps: float, weights: Weights) -> RMSNorm: + return RMSNorm(weights.weight.allocate(DType.float32, [dims]), eps) + + +@dataclass +class LayerNorm(Layer): + """Layer normalization block.""" + + gamma: TensorValue + beta: TensorValue + eps: float = 1e-5 + + def __call__(self, input: TensorValue): + return ops.cast( + ops.layer_norm( + ops.cast(input, DType.float32), + gamma=ops.cast(self.gamma, DType.float32), + beta=ops.cast(self.beta, DType.float32), + epsilon=self.eps, + ), + input.dtype, + ) + + +def layer_norm(dims: int, eps: float = 1e-5) -> LayerNorm: + gamma = ops.constant(np.ones(dims), DType.float32) + beta = ops.constant(np.zeros(dims), DType.float32) + return LayerNorm(gamma, beta, eps=eps) + + +def norm( + norm_method: Literal["rms_norm"] | Literal["layer_norm"], + pipeline_config: PipelineConfig, + weights: Weights, + weight_name: str, +) -> RMSNorm | LayerNorm: + if norm_method == "rms_norm": + if pipeline_config.huggingface_config.model_type == "exaone": + rms_norm_eps = pipeline_config.huggingface_config.layer_norm_epsilon + else: + rms_norm_eps = pipeline_config.huggingface_config.rms_norm_eps + + return rms_norm( + pipeline_config.huggingface_config.hidden_size, + rms_norm_eps, + weights[weight_name], + ) + else: + return layer_norm(pipeline_config.huggingface_config.hidden_size) + + +def distributed_norm( + norm_method: Literal["rms_norm"] | Literal["layer_norm"], + pipeline_config: PipelineConfig, + weights: Weights, + weight_name: str, + devices: List[DeviceRef], +) -> DistributedRMSNorm: + assert norm_method == "rms_norm" + + weights_ = TensorValue( + weights[weight_name].weight.allocate( + DType.float32, + [pipeline_config.huggingface_config.hidden_size], + ) + ) + weights_devs = distribute_value(weights_, devices) + + rms_norms = [ + RMSNorm(weights_dev, pipeline_config.huggingface_config.rms_norm_eps) + for weights_dev in weights_devs + ] + + return DistributedRMSNorm(rms_norms, devices) + + +def embedding( + pipeline_config: PipelineConfig, + vocab_size: int, + hidden_dim: int, + weights: Weights, +) -> Embedding: + if pipeline_config.quantization_encoding == "gptq": + return Embedding( + weights.weight.allocate( + DType.bfloat16, + [vocab_size, hidden_dim], + None, + ) + ) + + else: + return Embedding( + weights.weight.allocate( + pipeline_config.dtype, + [vocab_size, hidden_dim], + pipeline_config.graph_quantization_encoding, + ) + ) + + +def distributed_feed_forward( + dtype: DType, + quantization_encoding: Optional[QuantizationEncoding], + hidden_dim: int, + feed_forward_length: int, + weights: Weights, + devices: List[DeviceRef], +) -> DistributedMLP: + w_ffn_down_full = weights.ffn_down.weight.allocate( + dtype, [hidden_dim, feed_forward_length], quantization_encoding + ) + ffn_down_sharded = shard_col_value(w_ffn_down_full, devices) + w_ffn_gate_full = weights.ffn_gate.weight.allocate( + dtype, [feed_forward_length, hidden_dim], quantization_encoding + ) + ffn_gate_sharded = shard_row_value(w_ffn_gate_full, devices) + w_ffn_up_full = weights.ffn_up.weight.allocate( + dtype, [feed_forward_length, hidden_dim], quantization_encoding + ) + ffn_up_sharded = shard_row_value(w_ffn_up_full, devices) + + mlps = [ + MLP( + Linear(ffn_gate_sharded[rank]), + Linear(ffn_down_sharded[rank]), + Linear(ffn_up_sharded[rank]), + ) + for rank in range(len(devices)) + ] + + return DistributedMLP(mlps, len(devices)) + + +def distributed_attention_opaque( + kv_params: KVCacheParams, + pipeline_config: PipelineConfig, + rope: OptimizedRotaryEmbedding, + weights: Weights, + layer_idx: TensorValue, + devices: List[DeviceRef], +) -> DistributedAttentionWithRope: + wq_full = ops.transpose( + weights.attn_q.weight.allocate( + pipeline_config.dtype, + [ + pipeline_config.huggingface_config.hidden_size, + pipeline_config.huggingface_config.hidden_size, + ], + pipeline_config.graph_quantization_encoding, + ), + 0, + 1, + ) + kv_weight_dim = ( + pipeline_config.huggingface_config.hidden_size + // pipeline_config.huggingface_config.num_attention_heads + ) * pipeline_config.huggingface_config.num_key_value_heads + wk_full = ops.transpose( + weights.attn_k.weight.allocate( + pipeline_config.dtype, + [kv_weight_dim, pipeline_config.huggingface_config.hidden_size], + pipeline_config.graph_quantization_encoding, + ), + 0, + 1, + ) + wv_full = ops.transpose( + weights.attn_v.weight.allocate( + pipeline_config.dtype, + [kv_weight_dim, pipeline_config.huggingface_config.hidden_size], + pipeline_config.graph_quantization_encoding, + ), + 0, + 1, + ) + + wo_full = weights.attn_output.weight.allocate( + pipeline_config.dtype, + [ + pipeline_config.huggingface_config.hidden_size, + pipeline_config.huggingface_config.hidden_size, + ], + pipeline_config.graph_quantization_encoding, + ) + wq_shards = shard_col_value(wq_full, devices) + wk_shards = shard_col_value(wk_full, devices) + wv_shards = shard_col_value(wv_full, devices) + + # Didn't transpose here since linear will transpose so shard on col instead + # of row + wo_shards = shard_col_value(wo_full, devices) + attns = [ + AttentionWithRope( + n_heads=pipeline_config.huggingface_config.num_attention_heads + // len(devices), + kv_params=kv_params, + wqkv=ops.concat( + (wq_shards[rank], wk_shards[rank], wv_shards[rank]), axis=1 + ).transpose(0, 1), + wo=Linear(wo_shards[rank]), + rope=rope, + layer_idx=layer_idx, + scale=math.sqrt(1.0 / kv_params.head_dim), + ) + for rank in range(len(devices)) + ] + + return DistributedAttentionWithRope(attns, devices) + + +def _kv_collection_constructor( + kv_params: KVCacheParams, +) -> FetchContinuousBatchingKVCacheCollection | FetchPagedKVCacheCollection: + """Gets the fetch KV collection based on the KV cache strategy. + + Returns: + Callable that stages an op to fetch a KV cache collection. + + Raises: + ValueError: If the cache strategy is unsupported. + """ + if kv_params.cache_strategy == KVCacheStrategy.CONTINUOUS: + return FetchContinuousBatchingKVCacheCollection(kv_params) + elif kv_params.cache_strategy == KVCacheStrategy.PAGED: + return FetchPagedKVCacheCollection(kv_params) + + msg = f"Unsupported caching strategy {kv_params.cache_strategy}" + raise ValueError(msg) + + +def distributed_transformer_opaque( + graph: Graph, + pipeline_config: PipelineConfig, + weights: Weights, + max_seq_len: int, + kv_params: KVCacheParams, + norm_method: Literal["rms_norm"] | Literal["layer_norm"], +) -> DistributedTransformer: + devices = [ + DeviceRef(spec.device_type, spec.id) + for spec in pipeline_config.device_specs + ] + with graph: + if weights.rope_freqs.weight.exists(): + rope_scaling = weights.rope_freqs.weight.raw_tensor() + else: + rope_scaling = None + + interleaved_rope_weights = ( + pipeline_config.weights_format == WeightsFormat.gguf + and pipeline_config.rope_type == RopeType.normal + ) + partial_rotary_factor = getattr( + pipeline_config.huggingface_config, "partial_rotary_factor", 1 + ) + rope = OptimizedRotaryEmbedding( + dim=pipeline_config.huggingface_config.hidden_size, + n_heads=partial_rotary_factor + * pipeline_config.huggingface_config.num_attention_heads, + theta=pipeline_config.huggingface_config.rope_theta, + max_seq_len=max_seq_len, + rope_scaling=rope_scaling, + interleaved=interleaved_rope_weights, + ) + + layers = [ + DistributedTransformerBlock( + attention=distributed_attention_opaque( + kv_params, + pipeline_config, + rope, + weights.blk[i], + layer_idx=ops.constant(i, DType.uint32), + devices=devices, + ), + mlp=distributed_feed_forward( + pipeline_config.dtype, + pipeline_config.graph_quantization_encoding, + pipeline_config.huggingface_config.hidden_size, + pipeline_config.huggingface_config.intermediate_size, + weights.blk[i], + devices=devices, + ), + attention_norm=distributed_norm( + norm_method, + pipeline_config, + weights.blk[i], + "attn_norm", + devices=devices, + ), + mlp_norm=distributed_norm( + norm_method, + pipeline_config, + weights.blk[i], + "ffn_norm", + devices=devices, + ), + devices=devices, + ) + for i in range(pipeline_config.huggingface_config.num_hidden_layers) + ] + + # TODO(max.nn.Model): We still rely on the `Weights` mechanism for + # constructing the Python-side weights registry. + # So we have to "allocate" a spot in the weights registry for + # output/embedding weights here. + embedding_weight = weights.token_embd.weight.allocate( + pipeline_config.dtype, + [ + pipeline_config.huggingface_config.vocab_size, + pipeline_config.huggingface_config.hidden_size, + ], + ) + weights.output.weight.allocate( + pipeline_config.dtype, + [ + pipeline_config.huggingface_config.vocab_size, + pipeline_config.huggingface_config.hidden_size, + ], + ) + + embedding_layer = VocabParallelEmbedding( + vocab_size=pipeline_config.huggingface_config.vocab_size, + hidden_dim=pipeline_config.huggingface_config.hidden_size, + dtype=pipeline_config.dtype, + devices=devices, + # Use the embedding weight's name, which mismatches between + # Safetensors and GGUF Llama 3. + name=embedding_weight.name, + ) + + output = LinearV2( + in_dim=pipeline_config.huggingface_config.hidden_size, + out_dim=pipeline_config.huggingface_config.vocab_size, + dtype=pipeline_config.dtype, + # Only compute output embedding on device 0 for now. + # TODO(MODELS-378): More optimal would be to: + # - Shard embedding table across devices. + # - Compute output on all devices for multistep. + device=devices[0], + # Smaller model variants lack dedicated weights for a final linear + # layer, and share the embedding layer. + name=( + weights.output.name + if weights.output.weight.exists() + else embedding_layer.weight.name + ), + ) + + return DistributedTransformer( + dim=pipeline_config.huggingface_config.hidden_size, + n_heads=pipeline_config.huggingface_config.num_attention_heads, + layers=layers, + norm=norm(norm_method, pipeline_config, weights, "output_norm"), # type:ignore + output=output, + embedding=embedding_layer, + kv_params=kv_params, + kv_collection_constructor=_kv_collection_constructor(kv_params), + devices=devices, + all_logits=pipeline_config.enable_echo, + ) diff --git a/src/max/pipelines/architectures/llama3/llama3.py b/src/max/pipelines/architectures/llama3/llama3.py new file mode 100644 index 0000000000..a35e90e60a --- /dev/null +++ b/src/max/pipelines/architectures/llama3/llama3.py @@ -0,0 +1,198 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # +"""Build a Llama3 model that uses continuous or paged kv-caching""" + +from __future__ import annotations + +import functools +from typing import Callable, Literal, Optional + +import numpy as np +from max.dtype import DType +from max.graph import DeviceRef, TensorValue +from max.graph.quantization import QuantizationConfig, QuantizationEncoding +from max.pipelines.kv_cache import ( + FetchContinuousBatchingKVCacheCollection, + FetchPagedKVCacheCollection, + KVCacheParams, + KVCacheStrategy, +) +from max.pipelines.nn import ( + AttentionWithRopeV2, + EmbeddingV2, + GPTQAttentionWithRope, + GPTQLinearV2, + LayerV2, + LinearV2, + OptimizedRotaryEmbedding, + RMSNormV2, + Transformer, + TransformerBlock, +) + +from .naive_llama3 import ConstantLayerNorm, Llama3MLP, StackedMLP + + +class Llama3(Transformer): + def __init__( + self, + *, + hidden_size: int, + num_attention_heads: int, + num_key_value_heads: int, + num_hidden_layers: int, + rope_theta: float, + max_seq_len: int, + intermediate_size: int, + interleaved_rope_weights: bool, + rope_scaling: Optional[np.ndarray], + vocab_size: int, + dtype: DType, + quantization_encoding: Optional[QuantizationEncoding], + quantization_config: Optional[QuantizationConfig], + kv_params: KVCacheParams, + all_logits: bool, + norm_method: Literal["rms_norm"] | Literal["layer_norm"], + rms_norm_eps: Optional[float], + tie_word_embeddings: bool, + stacked_mlp: bool, + stacked_qkv: bool, + logits_postprocessor: Callable[[TensorValue], TensorValue] | None, + attention_multiplier: float, + embedding_multiplier: float, + residual_multiplier: float, + devices: list[DeviceRef], + clip_qkv: Optional[float], + ): + rope = OptimizedRotaryEmbedding( + dim=hidden_size, + n_heads=num_attention_heads, + theta=rope_theta, + max_seq_len=max_seq_len, + rope_scaling=rope_scaling, + interleaved=interleaved_rope_weights, + ) + create_norm: Callable[..., LayerV2] + if norm_method == "rms_norm": + if rms_norm_eps is None: + raise ValueError( + "rms_norm_eps cannot be None for model that uses RMSNorm." + ) + create_norm = functools.partial( + RMSNormV2, hidden_size, rms_norm_eps + ) + else: + create_norm = functools.partial(ConstantLayerNorm, hidden_size) + + linear_cls: Callable[..., LinearV2] + if quantization_config: + linear_cls = functools.partial( + GPTQLinearV2, quantization_config=quantization_config + ) + else: + linear_cls = LinearV2 + mlp_cls = StackedMLP if stacked_mlp else Llama3MLP + attention_cls: Callable[..., AttentionWithRopeV2] + if quantization_config: + attention_cls = functools.partial( + GPTQAttentionWithRope, + quantization_config=quantization_config, + scale=attention_multiplier, + ) + else: + attention_cls = functools.partial( + AttentionWithRopeV2, + stacked_qkv=stacked_qkv, + scale=attention_multiplier, + clip_qkv=clip_qkv, + ) + + layers = [ + TransformerBlock( + attention=attention_cls( + num_attention_heads=num_attention_heads, + num_key_value_heads=num_key_value_heads, + hidden_size=hidden_size, + kv_params=kv_params, + layer_idx=i, + dtype=dtype, + rope=rope, + linear_cls=linear_cls, + device=devices[0], + ), + mlp=mlp_cls( + dtype, + quantization_encoding, + hidden_size, + intermediate_size, + linear_cls, + # devices=devices, # TODO(kathywu): setting devices causes issues + ), + attention_norm=create_norm(), + mlp_norm=create_norm(), + residual_multiplier=residual_multiplier, + ) + for i in range(num_hidden_layers) + ] + + # Create Embedding and output layers. + embedding_output_dtype = dtype + embedding_output_quantization = quantization_encoding + if quantization_encoding == QuantizationEncoding.GPTQ: + embedding_output_dtype = DType.bfloat16 + embedding_output_quantization = None + + embedding_layer = EmbeddingV2( + vocab_size, + hidden_size, + embedding_output_dtype, + None, # TODO(kathywu): setting devices causes issues + quantization_encoding=embedding_output_quantization, + ) + output = LinearV2( + hidden_size, + vocab_size, + embedding_output_dtype, + None, # TODO(kathywu): setting devices causes issues + quantization_encoding=embedding_output_quantization, + ) + + if tie_word_embeddings: + output.set_shared_weight("weight", embedding_layer.weight) + + kv_collection_cls: ( + type[FetchContinuousBatchingKVCacheCollection] + | type[FetchPagedKVCacheCollection] + ) + if kv_params.cache_strategy == KVCacheStrategy.CONTINUOUS: + kv_collection_cls = FetchContinuousBatchingKVCacheCollection + elif kv_params.cache_strategy == KVCacheStrategy.PAGED: + kv_collection_cls = FetchPagedKVCacheCollection + else: + raise ValueError( + "Unsupported caching strategy " + str(kv_params.cache_strategy) + ) + + super().__init__( + dim=hidden_size, + n_heads=num_attention_heads, + layers=layers, + norm=create_norm(), + output=output, + embedding=embedding_layer, + kv_params=kv_params, + kv_collection_constructor=kv_collection_cls(kv_params), + all_logits=all_logits, + embedding_multiplier=embedding_multiplier, + logits_postprocessor=logits_postprocessor, + ) diff --git a/src/max/pipelines/architectures/llama3/model.py b/src/max/pipelines/architectures/llama3/model.py new file mode 100644 index 0000000000..eeff3afa16 --- /dev/null +++ b/src/max/pipelines/architectures/llama3/model.py @@ -0,0 +1,817 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from __future__ import annotations + +import logging +import math +import time +from typing import Any, Callable, List, Literal, Sequence, cast + +import numpy as np +from max.driver import Device, Tensor +from max.dtype import DType +from max.engine import InferenceSession, Model +from max.graph import DeviceRef, Graph, TensorType, TensorValue +from max.graph.weights import Weights +from max.pipelines import ( + LogProbabilities, + ModelInputs, + ModelOutputs, + PipelineConfig, + PipelineModel, + RopeType, + SupportedEncoding, + TextContext, + WeightsFormat, + upper_bounded_default, +) +from max.pipelines.dataprocessing import batch_padded_tokens_and_mask +from max.pipelines.kv_cache import ( + KVCacheInputs, + KVCacheManager, + KVCacheParams, + estimate_kv_cache_size, + load_kv_manager, +) +from max.pipelines.nn import Signals +from max.pipelines.nn.compute_log_probabilities import compute_log_probabilities + +from .gguf import distributed_transformer_opaque +from .llama3 import Llama3 +from .naive_llama3 import NaiveLlama3 +from .weight_adapters import LlamaSafetensorWeights + +logger = logging.getLogger("max.pipelines") + + +class Llama3Inputs(ModelInputs): + """A class representing inputs for the Llama3 model. + + This class encapsulates the input tensors required for the Llama3 model + execution. + """ + + tokens: np.ndarray | Tensor + """Tensor containing the input token IDs.""" + + input_row_offsets_or_attn_mask: np.ndarray | Tensor + """Tensor containing the offsets for each row in the ragged input sequence, + or the attention mask for the padded input sequence.""" + + signal_buffers: list[Tensor] + """Device buffers used for synchronization in communication collectives.""" + + def __init__( + self, + tokens: np.ndarray | Tensor, + input_row_offsets_or_attn_mask: np.ndarray | Tensor, + signal_buffers: list[Tensor], + ) -> None: + """ + Args: + tokens: Input token IDs. + input_row_offsets_or_attn_mask: Input row offsets (ragged tensors) + or attention mask (padded tensors). + signal_buffers: Device buffers used for synchronization in + communication collectives. + """ + self.tokens = tokens + self.input_row_offsets_or_attn_mask = input_row_offsets_or_attn_mask + self.signal_buffers = signal_buffers + + @property + def input_row_offsets(self) -> np.ndarray | Tensor: + """Gets the row offsets of the ragged input sequence.""" + # TODO(bduke): this should implement a ragged tensor interface. + return self.input_row_offsets_or_attn_mask + + +class LlamaModelBase(PipelineModel[TextContext]): + """Base Llama pipeline model implementation.""" + + model: Model + """Compiled and initialized model ready for inference.""" + + signal_buffers: list[Tensor] + """Device buffers used for synchronization in communication collectives.""" + + norm_method: Literal["rms_norm"] | Literal["layer_norm"] + """Normalization layer.""" + + logits_postprocessor: Callable[[TensorValue], TensorValue] | None = None + """Postprocessor for the logits.""" + + state_dict: dict[str, Any] + """Weights to load into the model.""" + + def __init__( + self, pipeline_config: PipelineConfig, session: InferenceSession + ) -> None: + """ + Args: + pipeline_config: The configuration for this pipeline. + session: The container for the runtime for this model. + """ + super().__init__(pipeline_config, session) + self.model = self.load_model(session) + + # Initialize state needed for communication collectives. + self.signal_buffers = ( + [ + Tensor.zeros( + shape=(Signals.NUM_BYTES,), + dtype=DType.uint8, + device=dev, + ) + for dev in pipeline_config.devices + ] + if len(pipeline_config.devices) > 1 + # Skip creating buffers for single-device, where communication + # collectives shouldn't be called. + else [] + ) + + @classmethod + def get_kv_params(cls, pipeline_config: PipelineConfig) -> KVCacheParams: + return KVCacheParams( + dtype=pipeline_config.cache_dtype, + n_kv_heads=pipeline_config.huggingface_config.num_key_value_heads, + head_dim=( + pipeline_config.huggingface_config.hidden_size + // pipeline_config.huggingface_config.num_attention_heads + ), + page_size=pipeline_config.kv_cache_page_size, + cache_strategy=pipeline_config.cache_strategy, + enable_prefix_caching=pipeline_config.enable_prefix_caching, + n_devices=len(pipeline_config.devices), + ) + + @classmethod + def get_num_layers(cls, pipeline_config: PipelineConfig) -> int: + return pipeline_config.huggingface_config.num_hidden_layers + + def execute( + self, + model_inputs: ModelInputs, + kv_cache_inputs: KVCacheInputs | None = None, + ) -> ModelOutputs: + model_inputs = cast(Llama3Inputs, model_inputs) + if kv_cache_inputs is None: + kv_cache_inputs = () # type: ignore + model_outputs = self.model.execute( + model_inputs.tokens, + model_inputs.input_row_offsets_or_attn_mask, + *model_inputs.signal_buffers, + *kv_cache_inputs, # type: ignore + copy_inputs_to_device=( + not self.pipeline_config.cache_strategy.uses_opaque() + ), + ) + + if self.pipeline_config.enable_echo: + return ModelOutputs( + next_token_logits=cast(Tensor, model_outputs[0]), + logits=cast(Tensor, model_outputs[1]), + ) + else: + return ModelOutputs( + next_token_logits=cast(Tensor, model_outputs[0]) + ) + + def _prepare_ragged_initial_token_inputs( + self, context_batch: Sequence[TextContext] + ) -> Llama3Inputs: + # Get input_row_offsets: start and end position of each batch in the + # combined total_seq_len dimension. + input_row_offsets = np.cumsum( + [0] + [ctx.active_length for ctx in context_batch], + dtype=np.uint32, + ) + + # Create a ragged token vector of length: sum(len(t) for t in tokens). + tokens = np.concatenate([ctx.next_tokens for ctx in context_batch]) + + return Llama3Inputs( + tokens=Tensor.from_numpy(tokens).to( + self.pipeline_config.devices[0] + ), + input_row_offsets_or_attn_mask=Tensor.from_numpy( + input_row_offsets + ).to(self.pipeline_config.devices[0]), + signal_buffers=self.signal_buffers, + ) + + def _prepare_padded_initial_token_inputs( + self, context_batch: Sequence[TextContext] + ) -> Llama3Inputs: + # Get tokens and seq_ids + tokens = [ctx.next_tokens for ctx in context_batch] + + # Pad tokens and compute attention mask for the batch. + max_seq_len = self.kv_manager.max_sequence_length + start_pos = [max_seq_len] * len(context_batch) + next_tokens_batch, _, attn_mask = batch_padded_tokens_and_mask( + start_pos=start_pos, + tokens=tokens, + pad_to_multiple_of=self.pipeline_config.pad_to_multiple_of, + ) + + return Llama3Inputs( + tokens=next_tokens_batch, + input_row_offsets_or_attn_mask=attn_mask, + signal_buffers=self.signal_buffers, + ) + + def prepare_initial_token_inputs( + self, context_batch: Sequence[TextContext] + ) -> Llama3Inputs: + """Prepare the inputs for the first pass in multistep execution.""" + if self.pipeline_config.cache_strategy.uses_opaque(): + return self._prepare_ragged_initial_token_inputs(context_batch) + else: + return self._prepare_padded_initial_token_inputs(context_batch) + + def _prepare_ragged_next_token_inputs( + self, + next_tokens: Tensor, + prev_model_inputs: Llama3Inputs, + ) -> Llama3Inputs: + row_offsets_size = ( + prev_model_inputs.input_row_offsets_or_attn_mask.shape[0] + ) + next_row_offsets = self._input_row_offsets_prealloc[:row_offsets_size] + + return Llama3Inputs( + tokens=next_tokens, + input_row_offsets_or_attn_mask=next_row_offsets, + signal_buffers=self.signal_buffers, + ) + + def prepare_next_token_inputs( + self, + next_tokens: Tensor, + prev_model_inputs: ModelInputs, + ) -> Llama3Inputs: + """Prepare the inputs for the next token in multistep execution. + This should avoid any device synchronization or copy operations. + """ + prev_model_inputs = cast(Llama3Inputs, prev_model_inputs) + if self.pipeline_config.cache_strategy.uses_opaque(): + return self._prepare_ragged_next_token_inputs( + next_tokens, prev_model_inputs + ) + else: + # TODO(MODELS-407): Consider deleting the padded path entirely. + msg = "multistep unsupported for padded token batches" + raise ValueError(msg) + + @classmethod + def calculate_max_seq_len(cls, pipeline_config: PipelineConfig) -> int: + try: + return upper_bounded_default( + upper_bound=pipeline_config.huggingface_config.max_position_embeddings, + default=pipeline_config.max_length, + ) + except ValueError as e: + msg = ( + "Unable to infer max_length for Llama3, the provided " + f"max_length ({pipeline_config.max_length}) exceeds the " + f"model's max_position_embeddings " + f"({pipeline_config.huggingface_config.max_position_embeddings})." + ) + raise ValueError(msg) from e + + def load_kv_manager( + self, + session: InferenceSession, + available_cache_memory: int, + ) -> KVCacheManager: + return load_kv_manager( + params=self.get_kv_params(self.pipeline_config), + max_batch_size=self.pipeline_config.max_batch_size, + max_seq_len=self.calculate_max_seq_len(self.pipeline_config), + num_layers=self.pipeline_config.huggingface_config.num_hidden_layers, + devices=self.pipeline_config.devices, + available_cache_memory=available_cache_memory, + page_size=self.pipeline_config.kv_cache_page_size, + session=session, + ) + + @classmethod + def estimate_kv_cache_size( + cls, + pipeline_config: PipelineConfig, + available_cache_memory: int, + devices: List[Device], + ) -> int: + """Estimates the size of the kv cache in bytes.""" + return estimate_kv_cache_size( + params=cls.get_kv_params(pipeline_config), + max_batch_size=pipeline_config.max_batch_size, + max_seq_len=cls.calculate_max_seq_len(pipeline_config), + num_layers=pipeline_config.huggingface_config.num_hidden_layers, + available_cache_memory=available_cache_memory, + devices=devices, + ) + + def load_model( + self, + session: InferenceSession, + ) -> Model: + # Pre-allocate a buffer for input_row_offsets in multistep execution. + # We do this to avoid materializing and copying a buffer with each multistep step + assert self.pipeline_config.max_batch_size, ( + "Expected max_batch_size to be set" + ) + self._input_row_offsets_prealloc = Tensor.from_numpy( + np.arange(self.pipeline_config.max_batch_size + 1, dtype=np.uint32) + ).to(self.pipeline_config.devices[0]) + + # Read in weights. + self._weights = self.pipeline_config.load_weights() + + if serialized_path := self.pipeline_config.serialized_model_path: + # Hydrate all weights to be referenced by the serialized path. + weights_registry = {} + for name, weight in self._weights.items(): + weights_registry[name] = weight.raw_tensor() + + logger.info("Loading serialized model from %s", serialized_path) + + return session.load( + serialized_path, weights_registry=weights_registry + ) + + else: + logger.info("Building and compiling model...") + before = time.perf_counter() + graph = self._build_graph(self._weights) + model = session.load(graph, weights_registry=self.state_dict) + after = time.perf_counter() + logger.info( + f"Building and compiling model took {after - before:.6f} seconds" + ) + if ( + export_path + := self.pipeline_config.save_to_serialized_model_path + ): + logger.info("Exporting serialized model to %s", export_path) + model._export_mef(export_path) + return model + + def _unflatten_kv_inputs( + self, kv_inputs_flat: Sequence[TensorValue] + ) -> List[tuple[TensorValue, ...]]: + kv_params = self.get_kv_params(self.pipeline_config) + n_devices = kv_params.n_devices + fetch_types = self.kv_manager.input_symbols()[0] + len_of_kv_tuple_per_dev = len(list(fetch_types)) + kv_caches_per_dev = [ + tuple( + kv_inputs_flat[ + i * len_of_kv_tuple_per_dev : (i + 1) + * len_of_kv_tuple_per_dev + ] + ) + for i in range(n_devices) + ] + return kv_caches_per_dev + + @property + def _attention_multiplier(self) -> float: + """The attention multiplier is a scalar that scales the attention scores. + It is used to control the variance of the attention scores. + + This function is used to get the attention multiplier from the + huggingface config. If the attention multiplier is not set, it will be + calculated as the square root of 1.0 divided by the head dimension. + """ + return getattr( + self.pipeline_config.huggingface_config, + "attention_multiplier", + math.sqrt(1.0 / self.get_kv_params(self.pipeline_config).head_dim), + ) + + def _build_opaque_graph(self, weights: Weights) -> Graph: + device0 = self.pipeline_config.devices[0] + device_ref = DeviceRef(device0.label, device0.id) + tokens_type = TensorType( + DType.int64, shape=["total_seq_len"], device=device_ref + ) + # NOTE: input_row_offsets_len should be batch_size + 1. + input_row_offsets_type = TensorType( + DType.uint32, shape=["input_row_offsets_len"], device=device_ref + ) + + huggingface_config = self.pipeline_config.huggingface_config + + if len(self.pipeline_config.devices) > 1: + kv_cache_args = self.kv_manager.input_symbols() + flattened_kv_types = [ + kv_type for sublist in kv_cache_args for kv_type in sublist + ] + + # Create metadata for signal buffers. + signals = Signals( + devices=( + DeviceRef(d.label, d.id) + for d in self.pipeline_config.devices + ) + ) + + # Distributed Llama still uses GGUF weights, so make sure that + # safetensor weights are converted to GGUF. + if self.pipeline_config.weights_format == WeightsFormat.safetensors: + weights = LlamaSafetensorWeights.from_safetensor_weights( + weights, huggingface_config + ) + with Graph( + getattr(huggingface_config, "model_type", "llama3"), + input_types=[ + tokens_type, + input_row_offsets_type, + *signals.input_types(), + *flattened_kv_types, + ], + ) as graph: + distributed_model = distributed_transformer_opaque( + graph=graph, + pipeline_config=self.pipeline_config, + weights=weights, + max_seq_len=self.calculate_max_seq_len( + self.pipeline_config + ), + kv_params=self.get_kv_params(self.pipeline_config), + norm_method=self.norm_method, + ) + self.state_dict = weights.allocated_weights + tokens, input_row_offsets, *variadic_args = graph.inputs + + # Multi-GPU passes a signal buffer per device: unmarshal those. + signal_buffers = [ + v.buffer + for v in variadic_args[: len(self.pipeline_config.devices)] + ] + + # Unmarshal the remaining arguments, which are for KV cache. + kv_cache = [ + v.tensor + for v in variadic_args[len(self.pipeline_config.devices) :] + ] + + kv_caches_per_dev = self._unflatten_kv_inputs(kv_cache) + + outputs = distributed_model( + tokens.tensor, + signal_buffers, + kv_caches_per_dev, + input_row_offsets=input_row_offsets, + ) + graph.output(*outputs) + return graph + else: + adapter = self.pipeline_config._weight_adapters.get( + self.pipeline_config.weights_format + ) + if adapter: + state_dict = adapter( + dict(weights.items()), + huggingface_config=huggingface_config, + pipeline_config=self.pipeline_config, + ) + else: + state_dict = { + key: value.data() for key, value in weights.items() + } + + if ( + rope_freqs := state_dict.pop("rope_freqs.weight", None) + ) is not None: + rope_scaling = rope_freqs.data + else: + rope_scaling = None + + interleaved_rope_weights = ( + self.pipeline_config.weights_format == WeightsFormat.gguf + and self.pipeline_config.rope_type == RopeType.normal + ) + rms_norm_eps = None + if self.norm_method == "rms_norm": + if huggingface_config.model_type == "exaone": + rms_norm_eps = huggingface_config.layer_norm_epsilon + else: + rms_norm_eps = huggingface_config.rms_norm_eps + + device_refs = [ + DeviceRef(spec.device_type, spec.id) + for spec in self.pipeline_config.device_specs + ] + + # When tie_word_embeddings=True, the embedding weights are shared with + # the output weights. + tie_word_embeddings = ( + getattr(huggingface_config, "tie_word_embeddings", False) + or "lm_head.weight" not in state_dict + ) + embedding_multiplier = getattr( + huggingface_config, "embedding_multiplier", 1.0 + ) + residual_multiplier = getattr( + huggingface_config, "residual_multiplier", 1.0 + ) + nn_model = Llama3( + hidden_size=huggingface_config.hidden_size, + num_attention_heads=huggingface_config.num_attention_heads, + num_key_value_heads=huggingface_config.num_key_value_heads, + num_hidden_layers=huggingface_config.num_hidden_layers, + rope_theta=huggingface_config.rope_theta, + rms_norm_eps=rms_norm_eps, + intermediate_size=huggingface_config.intermediate_size, + interleaved_rope_weights=interleaved_rope_weights, + rope_scaling=rope_scaling, + vocab_size=huggingface_config.vocab_size, + dtype=self.pipeline_config.dtype, + quantization_encoding=self.pipeline_config.graph_quantization_encoding, + quantization_config=self.pipeline_config._quant_config, + all_logits=self.pipeline_config.enable_echo, + max_seq_len=self.calculate_max_seq_len(self.pipeline_config), + kv_params=self.get_kv_params(self.pipeline_config), + norm_method=self.norm_method, + tie_word_embeddings=tie_word_embeddings, + stacked_mlp="layers.0.mlp.gate_up_proj.weight" in state_dict, + stacked_qkv="layers.0.self_attn.qkv_proj.weight" in state_dict, + logits_postprocessor=self.logits_postprocessor, + attention_multiplier=self._attention_multiplier, + embedding_multiplier=embedding_multiplier, + residual_multiplier=residual_multiplier, + devices=device_refs, + clip_qkv=getattr( + self.pipeline_config.huggingface_config, "clip_qkv", None + ), + ) + nn_model.load_state_dict(state_dict) + self.state_dict = nn_model.state_dict() + with Graph( + "llama3", + input_types=[ + tokens_type, + input_row_offsets_type, + *self.kv_manager.input_symbols()[0], + ], + ) as graph: + tokens, input_row_offsets, *kv_cache_inputs = graph.inputs + outputs = nn_model( + tokens.tensor, + [inp.tensor for inp in kv_cache_inputs], + input_row_offsets=input_row_offsets, + ) + graph.output(*outputs) + return graph + + def _build_graph(self, weights: Weights) -> Graph: + if self.pipeline_config.cache_strategy.uses_opaque(): + return self._build_opaque_graph(weights) + + tokens_type = TensorType(DType.int64, shape=["batch_size", "seq_len"]) + attn_mask_type = TensorType( + DType.float32, shape=["batch_size", "seq_len", "post_seq_len"] + ) + + if len(self.pipeline_config.devices) > 1: + raise ValueError( + "Naive mode does not support distributed execution" + ) + + kv_inputs = self.kv_manager.input_symbols()[0] + + interleaved_rope_weights = ( + self.pipeline_config.weights_format == WeightsFormat.gguf + and self.pipeline_config.rope_type == RopeType.normal + ) + adapter = self.pipeline_config._weight_adapters.get( + self.pipeline_config.weights_format + ) + huggingface_config = self.pipeline_config.huggingface_config + if adapter: + state_dict = adapter( + dict(weights.items()), + huggingface_config=huggingface_config, + pipeline_config=self.pipeline_config, + ) + else: + state_dict = {key: value.data() for key, value in weights.items()} + if ( + rope_freqs := state_dict.pop("rope_freqs.weight", None) + ) is not None: + rope_scaling = rope_freqs.data + else: + rope_scaling = None + + rms_norm_eps = None + if self.norm_method == "rms_norm": + if huggingface_config.model_type == "exaone": + rms_norm_eps = huggingface_config.layer_norm_epsilon + else: + rms_norm_eps = huggingface_config.rms_norm_eps + + device_refs = [ + DeviceRef(spec.device_type, spec.id) + for spec in self.pipeline_config.device_specs + ] + + # When tie_word_embeddings=True, the embedding weights are shared with + # the output weights. + tie_word_embeddings = ( + getattr(huggingface_config, "tie_word_embeddings", False) + or "lm_head.weight" not in state_dict + ) + embedding_multiplier = getattr( + huggingface_config, "embedding_multiplier", 1.0 + ) + residual_multiplier = getattr( + huggingface_config, "residual_multiplier", 1.0 + ) + nn_model = NaiveLlama3( + hidden_size=huggingface_config.hidden_size, + num_attention_heads=huggingface_config.num_attention_heads, + num_key_value_heads=huggingface_config.num_key_value_heads, + num_hidden_layers=huggingface_config.num_hidden_layers, + rope_theta=huggingface_config.rope_theta, + rms_norm_eps=rms_norm_eps, + intermediate_size=huggingface_config.intermediate_size, + interleaved_rope_weights=interleaved_rope_weights, + rope_scaling=rope_scaling, + vocab_size=huggingface_config.vocab_size, + dtype=self.pipeline_config.dtype, + quantization_encoding=self.pipeline_config.graph_quantization_encoding, + quantization_config=self.pipeline_config._quant_config, + max_seq_len=self.calculate_max_seq_len(self.pipeline_config), + kv_params=self.get_kv_params(self.pipeline_config), + norm_method=self.norm_method, + tie_word_embeddings=tie_word_embeddings, + stacked_mlp="layers.0.mlp.gate_up_proj.weight" in state_dict, + stacked_qkv="layers.0.self_attn.qkv_proj.weight" in state_dict, + logits_postprocessor=self.logits_postprocessor, + attention_multiplier=self._attention_multiplier, + embedding_multiplier=embedding_multiplier, + residual_multiplier=residual_multiplier, + devices=device_refs, + clip_qkv=getattr( + self.pipeline_config.huggingface_config, "clip_qkv", None + ), + ) + + # Load weights. We allow the weight types to be overriden due to + # multiple quantization enodings in GGUF checkpoints. + nn_model.load_state_dict( + state_dict, override_quantization_encoding=True + ) + self.state_dict = nn_model.state_dict() + + with Graph( + getattr(huggingface_config, "model_type", "llama3"), + input_types=[ + tokens_type, + attn_mask_type, + *kv_inputs, + ], + ) as graph: + tokens, attention_mask, k_cache, v_cache, start_pos, _ = ( + graph.inputs + ) + mask_dtype = ( + self.pipeline_config.dtype + if self.pipeline_config.quantization_encoding + in [ + SupportedEncoding.float32, + SupportedEncoding.bfloat16, + ] + else ( + DType.float32 + if self.pipeline_config.devices[0].label == "cpu" + else DType.bfloat16 + ) + ) + logits = nn_model( + tokens.tensor, + attention_mask.tensor.cast(mask_dtype), + k_cache.buffer, + v_cache.buffer, + start_pos.tensor, + )[0] + + if self.pipeline_config.enable_echo: + graph.output(logits[:, -1], logits) + else: + graph.output(logits[:, -1]) + + return graph + + def compute_log_probabilities( + self, + model_inputs: ModelInputs, + model_outputs: ModelOutputs, + next_tokens: Tensor, + batch_top_n: list[int], + batch_echo: list[bool], + ) -> list[LogProbabilities | None] | None: + if any(echo for echo in batch_echo): + if model_outputs.logits is None: + logger.warning( + "Could not get logprobs with echo because the full logits" + f" were not returned by {self.pipeline_config.model_path}" + " model. Please ensure that this model is started with " + "`--enable-echo`." + ) + assert not self.pipeline_config.enable_echo, ( + "Echo was enabled but logits were not returned." + ) + return None + logits = model_outputs.logits.to_numpy() + + llama3_inputs = cast(Llama3Inputs, model_inputs) + next_token_logits = cast( + Tensor, model_outputs.next_token_logits + ).to_numpy() + + sampled_tokens = next_tokens.to_numpy() + if self.pipeline_config.cache_strategy.uses_opaque(): + # Handle the ragged inputs + tokens = cast(Tensor, llama3_inputs.tokens).to_numpy() + input_row_offsets = cast( + Tensor, llama3_inputs.input_row_offsets + ).to_numpy() + + def _get_logits_and_samples( + batch_index: int, echo: bool + ) -> tuple[np.ndarray, np.ndarray]: + if echo: + start_offset = input_row_offsets[batch_index] + end_offset = input_row_offsets[batch_index + 1] + batch_logits = logits[start_offset:end_offset] + samples = np.concatenate( + ( + tokens[start_offset + 1 : end_offset], + sampled_tokens[batch_index : batch_index + 1], + ) + ) + else: + batch_logits = next_token_logits[ + batch_index : batch_index + 1 + ] + samples = sampled_tokens[batch_index : batch_index + 1] + return batch_logits, samples + + else: + # Handle batched inputs. Llama pads them to the right so the seq + # lengths can be computed by finding the first 0 token. + tokens = cast(np.ndarray, llama3_inputs.tokens) + seq_lens = np.sum(tokens > 0, axis=1) + + def _get_logits_and_samples( + batch_index: int, echo: bool + ) -> tuple[np.ndarray, np.ndarray]: + if echo: + seq_len = seq_lens[batch_index] + padded_tokens = tokens[batch_index] + + batch_logits = logits[batch_index, :seq_len, :] + samples = np.concatenate( + ( + padded_tokens[1:seq_len], + sampled_tokens[batch_index : batch_index + 1], + ) + ) + else: + batch_logits = next_token_logits[ + batch_index : batch_index + 1, : + ] + samples = sampled_tokens[batch_index : batch_index + 1] + return batch_logits, samples + + return compute_log_probabilities( + _get_logits_and_samples, batch_top_n, batch_echo + ) + + +class Llama3Model(LlamaModelBase): + """Llama 3 pipeline model implementation.""" + + norm_method: Literal["rms_norm"] | Literal["layer_norm"] = "rms_norm" + """Normalization layer.""" + + def __init__( + self, pipeline_config: PipelineConfig, session: InferenceSession + ) -> None: + super().__init__(pipeline_config, session) diff --git a/src/max/pipelines/architectures/llama3/naive_llama3.py b/src/max/pipelines/architectures/llama3/naive_llama3.py new file mode 100644 index 0000000000..c79badcbde --- /dev/null +++ b/src/max/pipelines/architectures/llama3/naive_llama3.py @@ -0,0 +1,317 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # +"""Builds a Llama3 model that uses naive KV-caching.""" + +from __future__ import annotations + +import functools +from collections.abc import Sequence +from typing import Callable, Literal, Optional, Union + +import numpy as np +from max.dtype import DType +from max.graph import DeviceRef, TensorValue, ops +from max.graph.quantization import QuantizationConfig, QuantizationEncoding +from max.pipelines.kv_cache import KVCacheParams +from max.pipelines.nn import ( + MLPV2, + EmbeddingV2, + GPTQLinearV2, + LayerV2, + LinearV2, + NaiveAttentionWithRope, + NaiveTransformer, + NaiveTransformerBlock, + OptimizedRotaryEmbedding, + RMSNormV2, + RotaryEmbedding, +) + + +class ConstantLayerNorm(LayerV2): + """Layer normalization block with constant gamma and beta values.""" + + gamma: np.ndarray + beta: np.ndarray + eps: float = 1e-5 + + def __init__(self, dims, eps: float = 1e-5): + super().__init__() + self.gamma = np.ones(dims) + self.beta = np.zeros(dims) + self.eps = eps + + def __call__(self, input: TensorValue): + gamma = ops.constant(self.gamma, DType.float32) + beta = ops.constant(self.beta, DType.float32) + return ops.cast( + ops.layer_norm( + ops.cast(input, DType.float32), + gamma=gamma, + beta=beta, + epsilon=self.eps, + ), + input.dtype, + ) + + +class NaiveLlama3(NaiveTransformer): + def __init__( + self, + *, + hidden_size: int, + num_attention_heads: int, + num_key_value_heads: int, + num_hidden_layers: int, + rope_theta: float, + max_seq_len: int, + rms_norm_eps: Optional[float], + intermediate_size: int, + interleaved_rope_weights: bool, + rope_scaling: Optional[np.ndarray], + vocab_size: int, + dtype: DType, + quantization_encoding: Optional[QuantizationEncoding], + quantization_config: Optional[QuantizationConfig], + kv_params: KVCacheParams, + norm_method: Literal["rms_norm"] | Literal["layer_norm"], + tie_word_embeddings: bool, + stacked_mlp: bool, + stacked_qkv: bool, + logits_postprocessor: Callable[[TensorValue], TensorValue] | None, + attention_multiplier: float, + embedding_multiplier: float, + residual_multiplier: float, + devices: list[DeviceRef], + clip_qkv: float | None, + ): + if stacked_qkv: + raise ValueError( + "Stacked QKV is not supported with naive caching strategy." + ) + rope = RotaryEmbedding( + dim=hidden_size, + n_heads=num_attention_heads, + theta=rope_theta, + max_seq_len=max_seq_len, + rope_scaling=rope_scaling, + interleaved=interleaved_rope_weights, + ) + + create_norm: Callable[..., LayerV2] + if norm_method == "rms_norm": + if rms_norm_eps is None: + raise ValueError( + "rms_norm_eps cannot be None for model that uses RMSNorm." + ) + create_norm = functools.partial( + RMSNormV2, hidden_size, rms_norm_eps + ) + else: + create_norm = functools.partial(ConstantLayerNorm, hidden_size) + + linear_cls: Callable[..., LinearV2] + if quantization_config: + linear_cls = functools.partial( + GPTQLinearV2, quantization_config=quantization_config + ) + else: + linear_cls = LinearV2 + + mlp_cls = StackedMLP if stacked_mlp else Llama3MLP + layers = [ + NaiveTransformerBlock( + attention=NaiveLLama3Attention( + kv_params, + hidden_size, + num_attention_heads, + num_key_value_heads, + rope, + dtype, + quantization_encoding, + linear_cls, + scale=attention_multiplier, + device=devices[0], + clip_qkv=clip_qkv, + ), + mlp=mlp_cls( + dtype, + quantization_encoding, + hidden_size, + intermediate_size, + linear_cls, + devices=devices, + ), + attention_norm=create_norm(), + mlp_norm=create_norm(), + residual_multiplier=residual_multiplier, + ) + for i in range(num_hidden_layers) + ] + + embedding_layer = EmbeddingV2( + vocab_size, + hidden_size, + dtype, + devices[0], + quantization_encoding=quantization_encoding, + ) + + output = LinearV2( + hidden_size, + vocab_size, + dtype, + devices[0], + quantization_encoding=quantization_encoding, + ) + if tie_word_embeddings: + output.set_shared_weight("weight", embedding_layer.weight) + + super().__init__( + dim=hidden_size, + n_heads=num_attention_heads, + layers=layers, + norm=create_norm(), + output=output, + theta=rope_theta, + embedding=embedding_layer, + embedding_multiplier=embedding_multiplier, + logits_postprocessor=logits_postprocessor, + ) + + +class NaiveLLama3Attention(NaiveAttentionWithRope): + def __init__( + self, + kv_params: KVCacheParams, + hidden_size: int, + num_attention_heads: int, + num_key_value_heads: int, + rope: Union[OptimizedRotaryEmbedding, RotaryEmbedding], + dtype: DType, + quantization_encoding: Optional[QuantizationEncoding], + linear_cls: Callable[..., LinearV2], + scale: float | None, + device: DeviceRef, + clip_qkv: float | None, + ): + kv_weight_dim = ( + hidden_size // num_attention_heads + ) * num_key_value_heads + + super().__init__( + n_heads=num_attention_heads, + kv_params=kv_params, + dim=hidden_size, + wk=linear_cls( + in_dim=hidden_size, + out_dim=kv_weight_dim, + dtype=dtype, + device=device, + quantization_encoding=quantization_encoding, + ), + wv=linear_cls( + in_dim=hidden_size, + out_dim=kv_weight_dim, + dtype=dtype, + device=device, + quantization_encoding=quantization_encoding, + ), + wq=linear_cls( + in_dim=hidden_size, + out_dim=hidden_size, + dtype=dtype, + device=device, + quantization_encoding=quantization_encoding, + ), + wo=linear_cls( + in_dim=hidden_size, + out_dim=hidden_size, + dtype=dtype, + device=device, + quantization_encoding=quantization_encoding, + ), + rope=rope, + scale=scale, + clip_qkv=clip_qkv, + ) + + +class Llama3MLP(MLPV2): + def __init__( + self, + dtype: DType, + quantization_encoding: Optional[QuantizationEncoding], + hidden_dim: int, + feed_forward_length: int, + linear_cls: Callable[..., LinearV2], + devices: Sequence[DeviceRef] = (), + ): + super().__init__( + gate_proj=linear_cls( + in_dim=hidden_dim, + out_dim=feed_forward_length, + dtype=dtype, + device=devices[0] if devices else None, + quantization_encoding=quantization_encoding, + ), + down_proj=linear_cls( + in_dim=feed_forward_length, + out_dim=hidden_dim, + dtype=dtype, + device=devices[0] if devices else None, + quantization_encoding=quantization_encoding, + ), + up_proj=linear_cls( + in_dim=hidden_dim, + out_dim=feed_forward_length, + dtype=dtype, + device=devices[0] if devices else None, + quantization_encoding=quantization_encoding, + ), + ) + + +class StackedMLP(LayerV2): + def __init__( + self, + dtype: DType, + quantization_encoding: Optional[QuantizationEncoding], + hidden_dim: int, + feed_forward_length: int, + linear_cls: Callable[..., LinearV2], + devices: Sequence[DeviceRef] = (), + ): + super().__init__() + self.gate_up_proj = linear_cls( + in_dim=hidden_dim, + out_dim=feed_forward_length * 2, + dtype=dtype, + device=devices[0] if devices else None, + quantization_encoding=quantization_encoding, + ) + self.down_proj = linear_cls( + in_dim=feed_forward_length, + out_dim=hidden_dim, + dtype=dtype, + device=devices[0] if devices else None, + quantization_encoding=quantization_encoding, + ) + + def __call__(self, x: TensorValue) -> TensorValue: + up_states = self.gate_up_proj(x) + + gate = up_states[:, : up_states.shape.static_dims[0] // 2] + up_states = up_states[:, up_states.shape.static_dims[0] // 2 :] + + return self.down_proj(ops.silu(gate) * up_states) diff --git a/src/max/pipelines/architectures/llama3/weight_adapters.py b/src/max/pipelines/architectures/llama3/weight_adapters.py new file mode 100644 index 0000000000..fb3831322a --- /dev/null +++ b/src/max/pipelines/architectures/llama3/weight_adapters.py @@ -0,0 +1,289 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from __future__ import annotations + +import math +from functools import cached_property +from os import PathLike +from typing import Sequence + +import numpy as np +import torch +from max.dtype import DType +from max.graph.weights import SafetensorWeights, WeightData, Weights +from max.graph.weights._torch_dtype_map import ( + modular_to_torch_type, + torch_to_modular_type, +) +from max.pipelines import PipelineConfig +from transformers import LlamaConfig + + +def _compute_safetensor_rope_scaling( + huggingface_config: LlamaConfig, +) -> np.ndarray | None: + # Unlike the `transformers` library's Llama model, MAX Llama expects the + # rope scaling value to be in the state dict (this is similar to GGUF). + if rope_scaling := getattr(huggingface_config, "rope_scaling", None): + if rope_scaling.get("rope_type", "").lower() == "llama3": + return _compute_rope_scaling( + rope_scaling, huggingface_config + ).numpy() + return None + + +# Maps from Safetensor to MAX weight names. +LLAMA_SAFETENSOR_MAPPING = { + "model.": "", # Removes the "model" prefix. + "g_idx": "perm_idx", # Specific to Llama GPT-Q weights. +} + + +def convert_safetensor_state_dict( + state_dict: dict[str, Weights], + huggingface_config: LlamaConfig, + pipeline_config: PipelineConfig, + **unused_kwargs, +) -> dict[str, WeightData]: + new_state_dict: dict[str, WeightData] = {} + # Map the weight names. + for safetensor_name, value in state_dict.items(): + max_name = safetensor_name + for before, after in LLAMA_SAFETENSOR_MAPPING.items(): + max_name = max_name.replace(before, after) + new_state_dict[max_name] = value.data() + # Add rope scaling to the state dict. + rope_scaling = _compute_safetensor_rope_scaling(huggingface_config) + if rope_scaling is not None: + new_state_dict["rope_freqs.weight"] = WeightData.from_numpy( + rope_scaling, "rope_freqs.weight" + ) + if pipeline_config._quant_config: + # hack: argsort the perm_idx array + for key, weight_data in new_state_dict.items(): + if key.endswith("perm_idx"): + new_state_dict[key] = WeightData.from_numpy( + np.argsort(weight_data.data).astype(np.int32), key + ) + return new_state_dict + + +# Maps from GGUF to MAX weight names. +LLAMA_GGUF_MAPPING = { + "token_embd": "embed_tokens", + "blk": "layers", + "ffn_up": "mlp.up_proj", + "ffn_down": "mlp.down_proj", + "ffn_gate": "mlp.gate_proj", + "ffn_norm": "post_attention_layernorm", + "attn_norm": "input_layernorm", + "attn_q": "self_attn.q_proj", + "attn_v": "self_attn.v_proj", + "attn_k": "self_attn.k_proj", + "attn_output": "self_attn.o_proj", + "output.weight": "lm_head.weight", + "output_norm": "norm", +} + + +def convert_gguf_state_dict( + state_dict: dict[str, Weights], **unused_kwargs +) -> dict[str, WeightData]: + new_state_dict: dict[str, WeightData] = {} + # Map the weight names. + for gguf_name, value in state_dict.items(): + max_name = gguf_name + for before, after in LLAMA_GGUF_MAPPING.items(): + max_name = max_name.replace(before, after) + new_state_dict[max_name] = value.data() + return new_state_dict + + +def _compute_rope_scaling( + rope_scaling, huggingface_config: LlamaConfig +) -> torch.Tensor: + # From llama.cpp's HF to GGUF conversion script: + # https://github.com/ggerganov/llama.cpp/blob/40c6d79fb52f995f47507fedfeaae2ac05d9b35c/convert_hf_to_gguf.py#L1627-L1654 + base = huggingface_config.rope_theta + dim = huggingface_config.head_dim + freqs = 1.0 / (base ** (torch.arange(0, dim, 2, dtype=torch.float32) / dim)) + + factor = rope_scaling.get("factor", 8.0) + low_freq_factor = rope_scaling.get("low_freq_factor", 1.0) + high_freq_factor = rope_scaling.get("high_freq_factor", 4.0) + old_context_len = rope_scaling.get("original_max_position_embeddings", 8192) + + low_freq_wavelen = old_context_len / low_freq_factor + high_freq_wavelen = old_context_len / high_freq_factor + assert low_freq_wavelen != high_freq_wavelen + + rope_factors = [] + for freq in freqs: + wavelen = 2 * math.pi / freq + if wavelen < high_freq_wavelen: + rope_factors.append(1) + elif wavelen > low_freq_wavelen: + rope_factors.append(factor) + else: + smooth = (old_context_len / wavelen - low_freq_factor) / ( + high_freq_factor - low_freq_factor + ) + rope_factors.append(1 / ((1 - smooth) / factor + smooth)) + return torch.tensor(rope_factors, dtype=torch.float32) + + +# Required for Multi-GPU LLama3 until it is migrated to new Layers API + +# Map from GGUF tensor names to Safetensor names. +# https://github.com/huggingface/transformers/blob/7bbc62474391aff64f63fcc064c975752d1fa4de/src/transformers/integrations/ggml.py#L36 +LLAMA_GGUF_TENSOR_MAPPING = { + "token_embd": "model.embed_tokens", + "blk": "model.layers", + "ffn_up": "mlp.up_proj", + "ffn_down": "mlp.down_proj", + "ffn_gate": "mlp.gate_proj", + "ffn_norm": "post_attention_layernorm", + "attn_norm": "input_layernorm", + "attn_q": "self_attn.q_proj", + "attn_v": "self_attn.v_proj", + "attn_k": "self_attn.k_proj", + "attn_output": "self_attn.o_proj", + "output.weight": "lm_head.weight", + "output_norm": "model.norm", +} + + +class LlamaSafetensorWeights(SafetensorWeights): + """Loads Safetensor weights with GGUF names. + + Does the following when loading weights: + (1) converts Safetensor weight names to and from GGUF names. For example, + the GGUF weight "blk.{i}.attn_q.weight" is instead saved as + "model.layers.{i}.self_attn.q_proj.weight" in Safetensor. + (2) Computes the rope_freqs.weight using the HuggingFace config + (3) Transposes the q_proj and k_proj weights. + + """ + + def __init__( + self, + filepaths: Sequence[PathLike], + huggingface_config: LlamaConfig, + has_rope_scaling: bool, + rope_freqs_tensor: torch.Tensor | None, + **kwargs, + ): + super().__init__(filepaths, **kwargs) + self._gguf_name_map = LLAMA_GGUF_TENSOR_MAPPING + self._huggingface_config = huggingface_config + self._has_rope_scaling = has_rope_scaling + self._rope_freqs_tensor = rope_freqs_tensor + + @classmethod + def from_safetensor_weights( + cls, weights: Weights, huggingface_config: LlamaConfig + ): + assert isinstance(weights, SafetensorWeights) + has_rope_scaling = False + rope_freqs_tensor = None + if rope_scaling := getattr(huggingface_config, "rope_scaling", None): + if rope_scaling.get("rope_type", "").lower() == "llama3": + has_rope_scaling = True + rope_freqs_tensor = _compute_rope_scaling( + rope_scaling, huggingface_config + ) + return cls( + weights._filepaths, + huggingface_config=huggingface_config, + has_rope_scaling=has_rope_scaling, + rope_freqs_tensor=rope_freqs_tensor, + tensors=weights._tensors, + tensors_to_file_idx=weights._tensors_to_file_idx, + prefix="", + allocated=weights._allocated, + _st_weight_map=weights._st_weight_map, + ) + + def items(self): + """Iterate through all allocable weights that start with the prefix.""" + # `self._tensor` contains Safetensor names, but the Llama pipeline + # expects GGUF names so this function should return GGUF names. + for safetensor_name in self._tensors: + if safetensor_name.startswith(self.name): + gguf_name = safetensor_name + + # The _gguf_name_map maps gguf -> safetensor names. + # We want the reverse transformation from safetensor -> gguf. + for after, before in self._gguf_name_map.items(): + gguf_name = gguf_name.replace(before, after) + yield ( + gguf_name, + LlamaSafetensorWeights( + self._filepaths, + huggingface_config=self._huggingface_config, + has_rope_scaling=self._has_rope_scaling, + rope_freqs_tensor=self._rope_freqs_tensor, + tensors=self._tensors, + tensors_to_file_idx=self._tensors_to_file_idx, + prefix=gguf_name, + allocated=self._allocated, + _st_weight_map=self._st_weight_map, + ), + ) + + @cached_property + def name(self) -> str: + """The current weight name or prefix.""" + # Convert the prefix, which follows the GGUF naming pattern, to + # Safetensor weight name. + name = self._prefix + for before, after in self._gguf_name_map.items(): + name = name.replace(before, after) + return name + + def __getattr__(self, attr) -> LlamaSafetensorWeights: + if self._prefix: + full_path = f"{self._prefix}.{attr}" + else: + full_path = str(attr) + return LlamaSafetensorWeights( + self._filepaths, + huggingface_config=self._huggingface_config, + has_rope_scaling=self._has_rope_scaling, + rope_freqs_tensor=self._rope_freqs_tensor, + tensors=self._tensors, + tensors_to_file_idx=self._tensors_to_file_idx, + prefix=full_path, + allocated=self._allocated, + _st_weight_map=self._st_weight_map, + ) + + def exists(self) -> bool: + return self.name in self._tensors_to_file_idx or ( + self._has_rope_scaling and self.name == "rope_freqs.weight" + ) + + def _load_tensor(self, dtype: DType | None = None): + if self._has_rope_scaling and self.name == "rope_freqs.weight": + tensor = self._rope_freqs_tensor + assert isinstance(tensor, torch.Tensor) + if ( + dtype is not None + and torch_to_modular_type(tensor.dtype) != dtype + ): + tensor = tensor.to(modular_to_torch_type(dtype)) + return tensor + tensor = super()._load_tensor(dtype) + + return tensor diff --git a/src/max/pipelines/architectures/llama_vision/README.md b/src/max/pipelines/architectures/llama_vision/README.md new file mode 100644 index 0000000000..d0656223e0 --- /dev/null +++ b/src/max/pipelines/architectures/llama_vision/README.md @@ -0,0 +1,138 @@ +# Llama 3.2 Vision + +**Language:** Python + +**API**: MAX Graph + +This pipeline provides optimized support for the +`MllamaForConditionalGeneration` family of multimodal models, as exemplified +by the Llama 3.2 Vision multimodal text generation model. The model itself has +been constructed in Python using the +[MAX Graph API](https://docs.modular.com/max/graph/). + +The MAX Graph API provides an accessible interface to the construction of +flexible accelerated compute graphs, which are then optimized by the MAX +Engine's advanced graph compiler. This pipeline showcases how a multimodal +model can be fully defined using Python and MAX Graphs and then compiled for +optimal inference performance via the MAX Engine. + +> [!NOTE] +> This pipeline is under active development, and while many layers have been +> implemented, the entire pipeline is not fully functional at present. + +## Model + +[Llama 3.2 Vision](https://ai.meta.com/blog/llama-3-2-connect-2024-vision-edge-mobile-devices/) +is an open source multimodal model released by Meta. It handles both text and +image input, and allows for text generation based on those multimodal inputs. +This implementation is based on +[the version located on Hugging Face](https://huggingface.co/blog/llama32), and +follows its convention of only attending to a single image at a time. + +Note that the Llama 3.2 1B and 3B text-only models use the `LlamaForCausalLM` +architecture, which is covered in [our Llama 3.x pipeline](../../llama3/). + +The default settings for this pipeline use the 11B set of pretrained weights in +the `bfloat16` encoding. + +## Usage + +The easiest way to try out this pipeline is with our Magic command-line tool. + +1. Install Magic on macOS and Ubuntu with this command: + + ```shell + curl -ssL https://magic.modular.com | bash + ``` + + Then run the source command that's printed in your terminal. + + To see the available commands, you can run `magic --help`. + [Learn more about Magic here](https://docs.modular.com/magic). + +2. Clone the MAX examples repository: + + If you don't already have a local clone of this repository, create one via: + + ```shell + git clone https://github.com/modular/max.git + ``` + + The following instructions assume that you're present within this pipeline's + directory, and you can change to it after cloning: + + ```shell + cd max/src/max/pipelines + ``` + +3. Host a multimodal chat completion endpoint via MAX Serve. + + MAX Serve provides functionality to host performant OpenAI compatible + endpoints using the FastAPI framework. + + You can configure the pipeline to be hosted by using the `serve` command. + Weights hosted on Hugging Face for any compatible + `MllamaForConditionalGeneration` model can be used with this optimized + architecture. For example: + + ```shell + magic run serve --model-path meta-llama/Llama-3.2-11B-Vision-Instruct + ``` + + A request can be submitted via a cURL command. + + ```shell + curl -N http://localhost:8000/v1/chat/completions \ + -H "Content-Type: application/json" \ + -d '{ + "model": "meta-llama/Llama-3.2-11B-Vision-Instruct", + "stream": true, + "messages": [ + {"role": "system", "content": "You are a helpful assistant."}, + {"role": "user", "content": [ + {"type": "text", "text": "What is in this image?"}, + {"type": "image_url", "image_url": {"url": "https://upload.wikimedia.org/wikipedia/commons/thumb/d/dd/Gfp-wisconsin-madison-the-nature-boardwalk.jpg/2560px-Gfp-wisconsin-madison-the-nature-boardwalk.jpg"}} + ]} + ] + }' + ``` + +## Options + +The following command-line options are available to customize operation of the +pipeline: + +- `--model-path`: Specify the repository ID of a Hugging Face model + repository to use. This is used to load tokenizers, architectures and model + weights. +- `--force-download`: Specify whether to force a download of configuration + files and weights even if they already exist in the local cache. Set this + if you want to ensure you have the correct version of the model. +- `--max-batch-size`: Specifies the maximum batch size to be used. + Default is 1. +- `--max-ce-batch-size`: Set the maximum cache size reserved for a single + context encoding batch. The effective limit will be the lesser of this value + and `max-cache-batch-size`. + Default is 32. +- `--max-length`: Controls the maximum length of the text sequence (includes the + input tokens). Defaults to huggingface model config's max sequence length. +- `--max-new-tokens`: The maximum number of new tokens to generate. If a -1 + value is provided, the model will continue to generate tokens for the entire + context length. (Default value: -1) +- `--quantization-encoding`: The encoding to use for a datatype that can be + quantized to a low bits per weight format. + Valid values: `q4_0`, `q4_k`, `q6_k`, `bfloat16`, `float32`. + (Default value: `bfloat16`). +- `--save-to-serialized-model-path`: If specified, writes the serialized model + to this path. +- `--serialized-model-path`: If specified, tries to load a serialized model + from this path. +- `--top-k`: Limits the sampling to the K most probable tokens. Default is 1. +- `--trust-remote-code`: Indicate whether to allow custom modeling files from + Hugging Face repositories. Set this to true with caution, as it may + introduce security risks. +- `--weight-path`: Overrides the default URL, and allows for an + already-downloaded pretrained weight file to be used with the model. +- `--devices`: Specifies the device(s) to use for the model. This can optionally + be "cpu", "gpu", or a comma-separated list of GPU ID(s) like "gpu-0,gpu-1". + Defaults to the first available GPU, or "cpu" if no GPUs are available. diff --git a/src/max/pipelines/architectures/llama_vision/__init__.py b/src/max/pipelines/architectures/llama_vision/__init__.py new file mode 100644 index 0000000000..10bbcab277 --- /dev/null +++ b/src/max/pipelines/architectures/llama_vision/__init__.py @@ -0,0 +1,16 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from .arch import llama_vision_arch + +__all__ = ["llama_vision_arch"] diff --git a/src/max/pipelines/architectures/llama_vision/arch.py b/src/max/pipelines/architectures/llama_vision/arch.py new file mode 100644 index 0000000000..a1ac78137d --- /dev/null +++ b/src/max/pipelines/architectures/llama_vision/arch.py @@ -0,0 +1,36 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from max.pipelines import ( + PipelineTask, + SupportedArchitecture, + SupportedEncoding, + TextAndVisionTokenizer, + WeightsFormat, +) +from max.pipelines.kv_cache import KVCacheStrategy + +from .llama_vision import LlamaVision + +llama_vision_arch = SupportedArchitecture( + name="MllamaForConditionalGeneration", + task=PipelineTask.TEXT_GENERATION, + example_repo_ids=["meta-llama/Llama-3.2-11B-Vision-Instruct"], + default_encoding=SupportedEncoding.bfloat16, + supported_encodings={ + SupportedEncoding.bfloat16: [KVCacheStrategy.CONTINUOUS] + }, + pipeline_model=LlamaVision, + tokenizer=TextAndVisionTokenizer, + default_weights_format=WeightsFormat.safetensors, +) diff --git a/src/max/pipelines/architectures/llama_vision/attention.py b/src/max/pipelines/architectures/llama_vision/attention.py new file mode 100644 index 0000000000..7129da3b7f --- /dev/null +++ b/src/max/pipelines/architectures/llama_vision/attention.py @@ -0,0 +1,107 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # +"""An attention layer used in Llama 3.2 vision pipeline.""" + +import math +from dataclasses import dataclass + +from max.graph import TensorValue, ops +from max.pipelines.nn import Linear +from max.pipelines.nn.layer import Layer + + +@dataclass +class Attention(Layer): + n_heads: int + head_dim: int + + wq: Linear + wk: Linear + wv: Linear + wo: Linear + + def attention( + self, + xq: TensorValue, + xk: TensorValue, + xv: TensorValue, + attn_mask: TensorValue, + ) -> TensorValue: + # Broadcast the attention mask across heads. + # Do so in the graph so that the broadcast can be fused into downstream + # ops. + batch, _, seq_len, post_seq_len = attn_mask.shape + attn_mask = attn_mask.broadcast_to( + ( + batch, + self.n_heads, + seq_len, + post_seq_len, + ) + ) + + scale = math.sqrt(1.0 / self.head_dim) + scores = xq @ ops.transpose(xk, -2, -1) + # Note, the graph compiler currently requires the order of operands + # to be `scores * scale` in order to pattern match the fused attention + # operator. + scores = ops.softmax(scores * scale + attn_mask) + + return scores @ xv + + def __call__( + self, x: TensorValue, attention_mask: TensorValue + ) -> TensorValue: + """Computes attention on x, reusing the KV cache. + + Args: + x: Activations with shape (batch, seq_len, dim). + Returns the result of multi-headed self attention on the input. + """ + batch, seq_len = x.shape[0], x.shape[1] + # matmul weights + xq = self.wq(x) + xk = self.wk(x) + xv = self.wv(x) + + xq = ops.reshape(xq, [batch, seq_len, self.n_heads, self.head_dim]) + + xk = ops.reshape( + xk, + [ + batch, + seq_len, + self.n_heads, + self.head_dim, + ], + ) + xv = ops.reshape( + xv, + [ + batch, + seq_len, + self.n_heads, + self.head_dim, + ], + ) + + xq = xq.transpose(1, 2) + xk = xk.transpose(1, 2) + xv = xv.transpose(1, 2) + + # (1, 16, 4128, 80) -> (1, 4128, 16, 80) + attn_out = self.attention(xq, xk, xv, attention_mask).transpose(1, 2) + output = attn_out.reshape( + [batch, seq_len, self.n_heads * self.head_dim] + ) # (1, 4128, 16 * 80) + return self.wo(output) diff --git a/src/max/pipelines/architectures/llama_vision/cross_attention_decoder.py b/src/max/pipelines/architectures/llama_vision/cross_attention_decoder.py new file mode 100644 index 0000000000..d4635f2a3c --- /dev/null +++ b/src/max/pipelines/architectures/llama_vision/cross_attention_decoder.py @@ -0,0 +1,173 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +"""Llama 3.2 Transformer Vision Language Model cross attention decoder.""" + +from __future__ import annotations + +import math +from dataclasses import dataclass + +from max.dtype import DType +from max.graph import TensorValue, Weight, ops +from max.pipelines.kv_cache import ( + ContinuousBatchingKVCacheCollection, + KVCacheParams, +) +from max.pipelines.nn import MLP, RMSNorm +from max.pipelines.nn.kernels import ( + MHAMaskVariant, + cross_attention_ragged, + matmul_kv_cache_ragged, + rms_norm_key_cache, +) +from max.pipelines.nn.layer import Layer +from max.pipelines.nn.linear import Linear + + +@dataclass +class CrossSdpaAttention(Layer): + """Cross attention layer using SDPA (Scaled Dot Product Attention).""" + + n_heads: int + """The number of attention heads.""" + + kv_params: KVCacheParams + """KV Cache Params, including the number of kv heads, the head dim, and data type.""" + + layer_idx: int + """Index into the cross attention layers' KV cache.""" + + q_proj: Linear + """A linear layer for the query projection.""" + + wk: Weight + """The k weight vector. Combines with wv to form a Linear.""" + + wv: Weight + """The v weight vector. Combines with wk to form a Linear.""" + + o_proj: Linear + """A linear layer for the output projection.""" + + q_norm: RMSNorm + """Layer normalization.""" + + k_norm: RMSNorm + """Layer normalization.""" + + def __call__( + self, + hidden_states: TensorValue, + hidden_input_row_offsets: TensorValue, + hidden_max_seq_len: TensorValue, + cross_attention_states: TensorValue, + cross_input_row_offsets: TensorValue, + kv_collection: ContinuousBatchingKVCacheCollection, + ) -> TensorValue: + """Computes attention on hidden (query) and cross (key and value). + + Returns: + Attended hidden activation. + """ + wkv = ops.concat((self.wk, self.wv), axis=0) + + query_states = self.q_proj(hidden_states) + query_states = query_states.reshape( + [ + -1, + self.n_heads, + self.kv_params.head_dim, + ] + ) + query_states = self.q_norm(query_states) + + matmul_kv_cache_ragged( + kv_params=self.kv_params, + # Here, hidden_states correspond to cross_attention_states. + hidden_states=cross_attention_states, + layer_idx=self.layer_idx, + input_row_offsets=cross_input_row_offsets, + weight=wkv, + kv_collection=kv_collection, + ) + rms_norm_key_cache( + self.kv_params, + kv_collection, + gamma=ops.cast(self.k_norm.weight, hidden_states.dtype), + epsilon=self.k_norm.eps, + layer_idx=self.layer_idx, + # Use the total sequence length of the cross attention states. + total_seq_len=cross_attention_states.shape[0], + input_row_offsets=cross_input_row_offsets, + ) + + # Calculate Flash Attention. + attn_out = cross_attention_ragged( + self.kv_params, + input=query_states, + kv_collection=kv_collection, + layer_idx=ops.constant(self.layer_idx, DType.uint32), + input_row_offsets=hidden_input_row_offsets, + # Use the null mask to attend to all vision tokens. + mask_variant=MHAMaskVariant.NULL_MASK, + kv_input_row_offsets=cross_input_row_offsets, + q_max_seq_len=hidden_max_seq_len, + scale=math.sqrt(1.0 / self.kv_params.head_dim), + ) + + # Reshape back to (hidden total seq len, hidden size). + attn_out = ops.reshape(attn_out, shape=[hidden_states.shape[0], -1]) + + return self.o_proj(attn_out) + + +@dataclass +class CrossAttentionDecoderLayer(Layer): + """Cross-attention transformer block with tanh-gated attention and feedforward.""" + + cross_attn: CrossSdpaAttention + input_layernorm: RMSNorm + cross_attn_attn_gate: Weight + mlp: MLP + post_attention_layernorm: RMSNorm + cross_attn_mlp_gate: Weight + + def __call__( + self, + hidden_states: TensorValue, + hidden_input_row_offsets: TensorValue, + hidden_max_seq_len: TensorValue, + cross_attention_states: TensorValue, + cross_input_row_offsets: TensorValue, + kv_collection: ContinuousBatchingKVCacheCollection, + ) -> TensorValue: + residual = hidden_states + hidden_states = self.input_layernorm(hidden_states) + + hidden_states = self.cross_attn( + hidden_states, + hidden_input_row_offsets, + hidden_max_seq_len, + cross_attention_states, + cross_input_row_offsets, + kv_collection, + ) + hidden_states = ( + residual + ops.tanh(self.cross_attn_attn_gate) * hidden_states + ) + + residual = hidden_states + hidden_states = self.post_attention_layernorm(hidden_states) + hidden_states = self.mlp(hidden_states) + return residual + ops.tanh(self.cross_attn_mlp_gate) * hidden_states diff --git a/src/max/pipelines/architectures/llama_vision/encoder.py b/src/max/pipelines/architectures/llama_vision/encoder.py new file mode 100644 index 0000000000..604057c531 --- /dev/null +++ b/src/max/pipelines/architectures/llama_vision/encoder.py @@ -0,0 +1,105 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +"""Llama 3.2 Transformer Vision Encoder.""" + +from __future__ import annotations + +from dataclasses import dataclass + +from max.graph import TensorValue, TensorValueLike, ops +from max.pipelines.nn import LayerNorm +from max.pipelines.nn.layer import Layer + +from .attention import Attention +from .mlp import MLP + + +@dataclass +class VisionEncoderLayer(Layer): + """ + This class implements a layer within Llama 3.2 vision transformer encoder. + """ + + mlp: MLP + input_layernorm: LayerNorm + post_attention_layernorm: LayerNorm + self_attn: Attention + is_gated: bool = False + gate_attn: TensorValueLike | None = None + gate_ffn: TensorValueLike | None = None + + def __call__( + self, hidden_state: TensorValue, attention_mask: TensorValue + ) -> TensorValue: + # Self Attention. + residual = hidden_state + hidden_state = self.input_layernorm(hidden_state) + + hidden_state = self.self_attn( + x=hidden_state, + attention_mask=attention_mask, + ) + + if self.is_gated: + hidden_state = ops.tanh(self.gate_attn) * hidden_state + hidden_state = residual + hidden_state + + # Feed forward. + residual = hidden_state + hidden_state = self.post_attention_layernorm(hidden_state) + hidden_state = self.mlp(hidden_state) + + # Gating criteria. + if self.is_gated: + hidden_state = ops.tanh(self.gate_ffn) * hidden_state + return residual + hidden_state + + +@dataclass +class VisionEncoder(Layer): + """ + Transformer encoder consisting of # of hidden self attention + layers. Each layer is a [`VisionEncoderLayer`]. + """ + + layers: list[VisionEncoderLayer] + + def __call__( + self, + hidden_states: TensorValue, + attention_mask: TensorValue, + output_hidden_states: bool, + ) -> tuple[TensorValue, tuple[TensorValue] | None]: + r""" + Args: + hidden_states (Tensor of shape `(batch_size, sequence_length, hidden_size)`): + attention_mask (Tensor of shape `(batch_size, sequence_length)`): + Mask to avoid performing attention on padding token indices. Mask values selected in `[0, 1]`: + + - 1 for tokens that are **not masked**, + - 0 for tokens that are **masked**. + output_hidden_states (`bool`, *optional*): + Whether or not to return the hidden states of all layers. See `hidden_states` under returned tensors + for more detail. + """ + encoder_states: tuple | None = () if output_hidden_states else None + for encoder_layer in self.layers: + if encoder_states is not None: + encoder_states = encoder_states + (hidden_states,) + hidden_states = encoder_layer(hidden_states, attention_mask) + + if encoder_states is not None: + encoder_states = encoder_states + (hidden_states,) + + return hidden_states, encoder_states diff --git a/src/max/pipelines/architectures/llama_vision/language_model.py b/src/max/pipelines/architectures/llama_vision/language_model.py new file mode 100644 index 0000000000..0d0e282185 --- /dev/null +++ b/src/max/pipelines/architectures/llama_vision/language_model.py @@ -0,0 +1,468 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +"""Llama 3.2 Transformer Vision Language Model.""" + +from __future__ import annotations + +import math +from dataclasses import dataclass + +from max.dtype import DType +from max.graph import TensorValue, ops +from max.graph.weights import Weights +from max.pipelines.kv_cache import ( + FetchContinuousBatchingKVCacheCollection, + KVCacheParams, +) +from max.pipelines.nn import ( + MLP, + AttentionWithRopeQKV, + Embedding, + Linear, + OptimizedRotaryEmbedding, + RMSNorm, + TransformerBlock, +) +from max.pipelines.nn.layer import Layer + +from .cross_attention_decoder import ( + CrossAttentionDecoderLayer, + CrossSdpaAttention, +) + + +@dataclass +class TextModel(Layer): + """ + The Llama text model which consists of transformer with self and cross attention layers. + """ + + dtype: DType + kv_params: KVCacheParams + embed_tokens: Embedding + layers: list[CrossAttentionDecoderLayer | TransformerBlock] + norm: RMSNorm + cross_attention_layers: list[int] + rotary_emb: OptimizedRotaryEmbedding + + def __call__( + self, + text_kv_cache_inputs: tuple[TensorValue, ...], + vision_kv_cache_inputs: tuple[TensorValue, ...], + input_ids: TensorValue, + hidden_input_row_offsets: TensorValue, + hidden_max_seq_len: TensorValue, + cross_attention_states: TensorValue, + cross_input_row_offsets: TensorValue, + ) -> TensorValue: + inputs_embeds = self.embed_tokens(input_ids) + + hidden_states = ops.cast(inputs_embeds, self.dtype) + + before_attention_blocks_shape = hidden_states.shape + + # Assume that text and vision KV caches have the same KV params for now. + # So they can share the KV collection constructor object. + kv_collection_constructor = FetchContinuousBatchingKVCacheCollection( + self.kv_params + ) + + # Construct text and vision KV collections with their distinct inputs. + text_kv_collection = kv_collection_constructor(*text_kv_cache_inputs) + vision_kv_collection = kv_collection_constructor( + *vision_kv_cache_inputs + ) + + for decoder_layer in self.layers: + # For text-only path we should skip cross attention layers. + # We expect cross_attention_states to be zeroes if it's a text-only path. + # The underlying implementation should be a no-op when a zeroed out cross + # attention states is passed in. + + if isinstance(decoder_layer, CrossAttentionDecoderLayer): + hidden_states = decoder_layer( + hidden_states, + hidden_input_row_offsets, + hidden_max_seq_len, + cross_attention_states, + cross_input_row_offsets, + vision_kv_collection, + ) + else: + hidden_states = decoder_layer( + hidden_states, + text_kv_collection, + input_row_offsets=hidden_input_row_offsets, + ) + + assert hidden_states.shape == before_attention_blocks_shape + + return self.norm(hidden_states) + + +@dataclass +class CausalLanguageModel(Layer): + """The Llama Vision Text Model with a language modeling head on top.""" + + dtype: DType + kv_params: KVCacheParams + model: TextModel + lm_head: Linear + + def __call__( + self, + text_kv_cache_inputs: tuple[TensorValue, ...], + vision_kv_cache_inputs: tuple[TensorValue, ...], + input_ids: TensorValue, + hidden_input_row_offsets: TensorValue, + hidden_max_seq_len: TensorValue, + cross_attention_states: TensorValue, + cross_input_row_offsets: TensorValue, + ) -> TensorValue: + last_hidden_state = self.model( + text_kv_cache_inputs, + vision_kv_cache_inputs, + input_ids, + hidden_input_row_offsets, + hidden_max_seq_len, + cross_attention_states, + cross_input_row_offsets, + ) + + # For ragged tensors gather the last tokens from packed dim 0. + last_token_indices = hidden_input_row_offsets[1:] - 1 + last_token_logits = ops.gather( + last_hidden_state, last_token_indices, axis=0 + ) + return ops.cast(self.lm_head(last_token_logits), self.dtype) # logits + + +def cross_attention_decoder_layer( + dtype: DType, + num_attention_heads: int, + hidden_size: int, + num_key_value_heads: int, + rms_norm_eps: float, + kv_params: KVCacheParams, + intermediate_size: int, + weights: Weights, + layer_idx: int, +) -> CrossAttentionDecoderLayer: + head_dim = hidden_size // num_attention_heads + sdpa_attn = CrossSdpaAttention( + n_heads=num_attention_heads, + kv_params=kv_params, + layer_idx=layer_idx, + q_proj=Linear( + weights.cross_attn.q_proj.weight.allocate( + dtype, + [ + num_attention_heads * head_dim, + hidden_size, + ], + ), + bias=None, + ), + wk=weights.cross_attn.k_proj.weight.allocate( + dtype, + [ + num_key_value_heads * head_dim, + hidden_size, + ], + ), + wv=weights.cross_attn.v_proj.weight.allocate( + dtype, + [ + num_key_value_heads * head_dim, + hidden_size, + ], + ), + o_proj=Linear( + weight=weights.cross_attn.o_proj.weight.allocate( + dtype, + [ + hidden_size, + num_attention_heads * head_dim, + ], + ), + bias=None, + ), + q_norm=RMSNorm( + weight=weights.cross_attn.q_norm.weight.allocate( + dtype, + [head_dim], + ), + eps=rms_norm_eps, + ), + k_norm=RMSNorm( + weight=weights.cross_attn.k_norm.weight.allocate( + dtype, + [head_dim], + ), + eps=rms_norm_eps, + ), + ) + return CrossAttentionDecoderLayer( + cross_attn=sdpa_attn, + input_layernorm=RMSNorm( + weight=weights.input_layernorm.weight.allocate( + dtype, + [hidden_size], + ), + eps=rms_norm_eps, + ), + cross_attn_attn_gate=weights.cross_attn_attn_gate.allocate( + dtype, + [1], + ), + mlp=MLP( + gate_proj=Linear( + weight=weights.mlp.gate_proj.weight.allocate( + dtype, + [ + intermediate_size, + hidden_size, + ], + ), + bias=None, + ), + down_proj=Linear( + weight=weights.mlp.down_proj.weight.allocate( + dtype, + [ + hidden_size, + intermediate_size, + ], + ), + bias=None, + ), + up_proj=Linear( + weight=weights.mlp.up_proj.weight.allocate( + dtype, + [ + intermediate_size, + hidden_size, + ], + ), + bias=None, + ), + ), + post_attention_layernorm=RMSNorm( + weight=weights.post_attention_layernorm.weight.allocate( + dtype, + [hidden_size], + ), + eps=rms_norm_eps, + ), + cross_attn_mlp_gate=weights.cross_attn_mlp_gate.allocate( + dtype, + [1], + ), + ) + + +def self_attention_decoder_layer( + dtype: DType, + num_attention_heads: int, + hidden_size: int, + num_key_value_heads: int, + intermediate_size: int, + rms_norm_eps: float, + kv_params: KVCacheParams, + weights: Weights, + layer_idx: int, + rotary_embedding: OptimizedRotaryEmbedding, +) -> TransformerBlock: + head_dim = hidden_size // num_attention_heads + + wq = weights.self_attn.q_proj.weight.allocate( + dtype, shape=[num_attention_heads * head_dim, hidden_size] + ) + wk = weights.self_attn.k_proj.weight.allocate( + dtype, shape=[num_key_value_heads * head_dim, hidden_size] + ) + wv = weights.self_attn.v_proj.weight.allocate( + dtype, shape=[num_key_value_heads * head_dim, hidden_size] + ) + o_proj = Linear( + weight=weights.self_attn.o_proj.weight.allocate( + dtype, + shape=[hidden_size, num_attention_heads * head_dim], + ) + ) + + attention = AttentionWithRopeQKV( + n_heads=num_attention_heads, + kv_params=kv_params, + layer_idx=layer_idx, + wq=wq, + wk=wk, + wv=wv, + wo=o_proj, + rope=rotary_embedding, + scale=math.sqrt(1.0 / head_dim), + ) + + return TransformerBlock( + attention=attention, + mlp=MLP( + gate_proj=Linear( + weight=weights.mlp.gate_proj.weight.allocate( + dtype, + [intermediate_size, hidden_size], + ), + bias=None, + ), + down_proj=Linear( + weight=weights.mlp.down_proj.weight.allocate( + dtype, + [hidden_size, intermediate_size], + ), + bias=None, + ), + up_proj=Linear( + weight=weights.mlp.up_proj.weight.allocate( + dtype, + [intermediate_size, hidden_size], + ), + bias=None, + ), + ), + attention_norm=RMSNorm( + weight=weights.input_layernorm.weight.allocate( + dtype, + [hidden_size], + ), + eps=rms_norm_eps, + ), + mlp_norm=RMSNorm( + weight=weights.post_attention_layernorm.weight.allocate( + dtype, [hidden_size] + ), + eps=rms_norm_eps, + ), + ) + + +def instantiate_language_model( + dtype: DType, + hidden_size: int, + n_heads: int, + rope_theta: int, + max_seq_len: int, + num_hidden_layers: int, + cross_attention_layers: list[int], + vocab_size: int, + rms_norm_eps: float, + num_key_value_heads: int, + intermediate_size: int, + kv_params: KVCacheParams, + weights: Weights, +) -> CausalLanguageModel: + layers: list[CrossAttentionDecoderLayer | TransformerBlock] = [] + + # We don't really have a rotary embedding layer within the graph as it's largely + # folded into the custom kernel, but leaving this here for now. + rotary_embedding = OptimizedRotaryEmbedding( + dim=hidden_size, + n_heads=n_heads, + theta=rope_theta, + max_seq_len=max_seq_len, + # TODO: Figure out how we want to pass this + # rope_scaling=params.rope_scaling, + interleaved=False, + ) + + # Track the cross attention KV cache layer index to compute the self + # attention KV layer index. + cross_kv_layer_idx = -1 + for layer_idx in range( + num_hidden_layers, + ): + curr_layer_weight = weights.language_model.model.layers[layer_idx] + + if layer_idx in cross_attention_layers: + cross_kv_layer_idx = cross_attention_layers.index(layer_idx) + layers.append( + cross_attention_decoder_layer( + dtype=dtype, + num_attention_heads=n_heads, + hidden_size=hidden_size, + num_key_value_heads=num_key_value_heads, + rms_norm_eps=rms_norm_eps, + kv_params=kv_params, + intermediate_size=intermediate_size, + weights=curr_layer_weight, + layer_idx=cross_kv_layer_idx, + ) + ) + else: + layers.append( + self_attention_decoder_layer( + dtype=dtype, + num_attention_heads=n_heads, + hidden_size=hidden_size, + num_key_value_heads=num_key_value_heads, + intermediate_size=intermediate_size, + rms_norm_eps=rms_norm_eps, + kv_params=kv_params, + weights=curr_layer_weight, + # Self KV layer index is the total layer index minus the + # number of cross KV layers so far. + layer_idx=layer_idx - cross_kv_layer_idx + 1, + rotary_embedding=rotary_embedding, + ) + ) + + text_model = TextModel( + dtype=dtype, + kv_params=kv_params, + embed_tokens=Embedding( + weights.language_model.model.embed_tokens.weight.allocate( + dtype, + [ + # Upstream in the Huggingface llama reference, 8 is added to the vocab size. + vocab_size + 8, + hidden_size, + ], + ), + ), + norm=RMSNorm( + weight=weights.language_model.model.norm.weight.allocate( + dtype, + [hidden_size], + ), + eps=rms_norm_eps, + ), + layers=layers, + cross_attention_layers=cross_attention_layers, + # TODO: Verify if these values passed are even correct. + rotary_emb=rotary_embedding, + ) + + return CausalLanguageModel( + dtype=dtype, + kv_params=kv_params, + model=text_model, + lm_head=Linear( + weights.language_model.lm_head.weight.allocate( + dtype, + [ + vocab_size, + hidden_size, + ], + ), + bias=None, + ), + ) diff --git a/src/max/pipelines/architectures/llama_vision/llama_vision.py b/src/max/pipelines/architectures/llama_vision/llama_vision.py new file mode 100644 index 0000000000..3dc23904eb --- /dev/null +++ b/src/max/pipelines/architectures/llama_vision/llama_vision.py @@ -0,0 +1,1184 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from __future__ import annotations + +import logging +import time +from collections.abc import Sequence +from concurrent.futures import ThreadPoolExecutor +from dataclasses import dataclass +from typing import Any, Iterable, Optional, cast, final + +import numpy as np +from max.driver import Device, Tensor +from max.dtype import DType +from max.engine import InferenceSession, Model +from max.graph import Dim, Graph, Shape, TensorType, TensorValue, ops +from max.graph.weights import Weights +from max.pipelines import ( + ModelInputs, + ModelOutputs, + PipelineConfig, + PipelineModel, + TextAndVisionContext, + upper_bounded_default, +) +from max.pipelines.kv_cache import ( + ContinuousBatchingKVCacheManager, + KVCacheInputs, + KVCacheInputSymbols, + KVCacheManager, + KVCacheParams, + KVCacheStrategy, + PaddedKVCacheInputs, + RaggedKVCacheInputs, + estimate_kv_cache_size, + infer_optimal_batch_size, + load_kv_manager, +) +from max.pipelines.kv_cache._utils import build_max_lengths_tensor +from max.pipelines.nn import Linear +from max.pipelines.nn.layer import Layer + +from .language_model import CausalLanguageModel, instantiate_language_model +from .vision_model import instantiate_vision_model + +logger = logging.getLogger("max.pipelines") + + +@dataclass +class MultimodalKVCacheInputSymbols(KVCacheInputSymbols): + text_kv_input_symbols: KVCacheInputSymbols + vision_kv_input_symbols: KVCacheInputSymbols + + +@dataclass +class MultimodalKVCacheInputs(KVCacheInputs): + text_kv_cache_inputs: KVCacheInputs + vision_kv_cache_inputs: KVCacheInputs + + +class MultimodalKVCacheManager(KVCacheManager): + """A lightweight wrapper around text and vision KV managers. + + Note on runtime and graph build time return types: + - Currently the multi modal KV manager doesn't support multiple devices. + So all lists that should be of length num_devices will have length 1. + - Individual modality KV cache managers return a 4-tuple of KV cache inputs. + Since this is a pair of KV cache managers, it returns an 8-tuple, + where the first 4 elements are the text KV cache inputs and the remaining + 4 elements are the vision KV cache inputs. + - This 8-tuple applies for both input symbols and return KV cache inputs. + - TODO(bduke): We should fix both multi-device and multi-modality using an + extensible KVCacheInput type. + """ + + text_kv_manager: KVCacheManager + """KV cache manager for text inputs.""" + + vision_kv_manager: ContinuousBatchingKVCacheManager + """KV cache manager for image inputs.""" + + def __init__( + self, + params: KVCacheParams, + max_batch_size: Optional[int], + text_max_seq_len: int, + vision_max_seq_len: int, + text_num_layers: int, + vision_num_layers: int, + devices: list[Device], + session: InferenceSession, + available_cache_memory: int, + page_size: int, + ) -> None: + assert max_batch_size, "Expected max_batch_size to be set" + self.text_kv_manager = load_kv_manager( + params=params, + max_batch_size=max_batch_size, + max_seq_len=text_max_seq_len, + num_layers=text_num_layers, + devices=devices, + available_cache_memory=available_cache_memory, + page_size=page_size, + session=session, + ) + + # Always use continuous batching KV cache for the vision KV projections, + # since the number of vision tokens is fixed per batch until we support + # multi-image, at least. + self.vision_kv_manager = ContinuousBatchingKVCacheManager( + params=params, + max_batch_size=max_batch_size, + max_seq_len=vision_max_seq_len, + num_layers=vision_num_layers, + devices=devices, + session=session, + ) + + # Call superclass after initializing modality KV managers since the + # superclass ctor calls methods that use the modality KV managers. + super().__init__( + params, + max_batch_size, + text_max_seq_len, + text_num_layers, + devices, + session, + is_ragged=True, + ) + + @classmethod + @final + def estimated_memory_size( + cls, + params: KVCacheParams, + max_batch_size: int, + max_seq_len: int, + num_layers: int, + available_cache_memory: int, + devices: list[Device], + **kwargs: Any, + ) -> int: + """Returns the estimated total memory usage of the kv cache.""" + assert "num_vision_layers" in kwargs, "num_vision_layers must be set" + num_vision_layers = kwargs["num_vision_layers"] + assert "max_vision_seq_len" in kwargs, "max_vision_seq_len must be set" + max_vision_seq_len = kwargs["max_vision_seq_len"] + + vision_kv_cache_size = ( + ContinuousBatchingKVCacheManager.estimated_memory_size( + params, + max_batch_size, + max_vision_seq_len, + num_vision_layers, + available_cache_memory, + devices, + ) + ) + + remaining_memory = available_cache_memory - vision_kv_cache_size + if remaining_memory > 0: + text_kv_cache_size = estimate_kv_cache_size( + params, + max_batch_size, + max_seq_len, + num_layers, + remaining_memory, + devices, + ) + return vision_kv_cache_size + text_kv_cache_size + + @classmethod + def infer_optimal_batch_size( + cls, + params: KVCacheParams, + max_seq_len: int, + num_layers: int, + available_cache_memory: int, + devices: list[Device], + **kwargs: Any, + ) -> int: + """Returns the estimated optimal batch size for the kv cache.""" + assert "num_vision_layers" in kwargs, "num_vision_layers must be set" + num_vision_layers = kwargs["num_vision_layers"] + assert "max_vision_seq_len" in kwargs, "max_vision_seq_len must be set" + max_vision_seq_len = kwargs["max_vision_seq_len"] + + # figure out the relative sizes of caches based on KV Cach settings + text_size_per_token = num_layers * max_seq_len + vision_size_per_token = num_vision_layers * max_vision_seq_len + text_to_vision_ratio = text_size_per_token / ( + text_size_per_token + vision_size_per_token + ) + + # divvy up our allocation based on this ratio + text_cache_size = available_cache_memory * text_to_vision_ratio + vision_cache_size = available_cache_memory - text_cache_size + + # infer the optimal batch size for each modality based on its cache size + text_batch_size = infer_optimal_batch_size( + params, + max_seq_len, + num_layers, + text_cache_size, + devices, + ) + vision_batch_size = ( + ContinuousBatchingKVCacheManager.infer_optimal_batch_size( + params, + max_vision_seq_len, + num_vision_layers, + vision_cache_size, + devices, + ) + ) + + return min(text_batch_size, vision_batch_size) + + @final + def _fetch( + self, seq_ids_and_prompts: dict[int, np.ndarray], num_steps: int = 1 + ) -> list[KVCacheInputs]: + """Returns KV cache inputs for both modalities' KV managers.""" + # Here we call into the text KV manager's fetch method to update + # its fetch metadata. + text_fetch_results = self.text_kv_manager.fetch( + seq_ids_and_prompts, num_steps + )[0] + + # For the vision KV manager, fetch metadata isn't applicable since + # autoregressive generation is text only. + active_batch_size = len(seq_ids_and_prompts) + + # Lookup table and seq_ids are redundant identical tensors. + lookup_table_tensor = Tensor.from_numpy( + np.array(list(seq_ids_and_prompts.keys()), np.uint32) + ) + cache_lengths_np = np.zeros(active_batch_size, np.uint32) + + max_seq_length = 0 + max_cache_length = 0 + + device = self.vision_kv_manager.devices[0] + for i, seq_id in enumerate(seq_ids_and_prompts): + # Assumption: all seq_ids with + # `vision_kv_manager.cache_lengths[seq_id] == 0` + # are context encoding steps and have the max image sequence length. + # TODO(bduke): pass the vision sequence lengths in from next_token. + + # Omit validity checks on seq ids, which are done in the text fetch. + cache_len = self.vision_kv_manager.cache_lengths[seq_id] + if cache_len == 0: + max_seq_length = self.vision_kv_manager.max_seq_len + + cache_lengths_np[i] = cache_len + + # Update the maximum lengths seen so far. + max_cache_length = max(max_cache_length, cache_len) + + # Build a tensor of maximum lengths. Each step slices the first row to + # advance to the values for the next row. + max_lengths_host = build_max_lengths_tensor( + num_steps, max_seq_length, max_cache_length + ) + + vision_fetch_results = RaggedKVCacheInputs( + # Block 0 for the first device (since MultimodalKVCacheManager + # assumes only 1 device). + blocks=self.vision_kv_manager.blocks[0], + cache_lengths=Tensor.from_numpy(cache_lengths_np).to(device), + lookup_table=lookup_table_tensor.to(device), + max_lengths=max_lengths_host, + ) + + multimodal_kv_inputs = [ + MultimodalKVCacheInputs(text_fetch_results, vision_fetch_results) + ] + return cast(list[KVCacheInputs], multimodal_kv_inputs) + + @final + def input_symbols( + self, + ) -> Sequence[MultimodalKVCacheInputSymbols]: + """Returns concatenated input symbols for text and vision KV managers. + + This has to rename input symbols that aren't necessarily the same: + `num_layers` and `max_seq_len` differ in general between text and + vision modalities. + """ + + def _input_symbols( + manager: KVCacheManager, num_layers_key: str, max_seq_len_key: str + ) -> KVCacheInputSymbols: + input_symbols = manager.input_symbols()[0] + # Get first element from input_symbols sequence + first_input_symbols = input_symbols[0] + assert isinstance(first_input_symbols, TensorType) + first_input_symbols.shape = Shape( + [ + "num_blocks", + 2, + num_layers_key, + max_seq_len_key, + "num_kv_heads", + "head_dim", + ] + ) + return input_symbols + + return [ + MultimodalKVCacheInputSymbols( + text_kv_input_symbols=_input_symbols( + self.text_kv_manager, "text_num_layers", "text_max_seq_len" + ), + vision_kv_input_symbols=_input_symbols( + self.vision_kv_manager, + "vision_num_layers", + "vision_max_seq_len", + ), + ) + ] + + def step(self, seq_ids_and_new_tokens: dict[int, np.ndarray]) -> None: + """Steps both text and vision modalities' KV managers.""" + # Step the text KV manager as usual for autoregressive text generation. + self.text_kv_manager.step(seq_ids_and_new_tokens) + + # Keep the base class's state in sync with the text KV manager's. + super().step(seq_ids_and_new_tokens) + + # Increment cache lengths for the vision KV manager iff this is a + # context encoding (CE) step with an image input. + # It's a CE step if the existing cache_lengths[seq_id] is 0. + for seq_id in seq_ids_and_new_tokens: + self.vision_kv_manager.cache_lengths[seq_id] += ( + self.vision_kv_manager.max_seq_len + if self.vision_kv_manager.cache_lengths[seq_id] == 0 + else 0 + ) + + def external_claim(self, seq_ids: list[int]) -> None: + """Reserves the same sequence ids for both modalities' KV caches.""" + self.text_kv_manager.external_claim(seq_ids) + self.vision_kv_manager.external_claim(seq_ids) + + # Keep the base class's state in sync with the text KV manager's. + super().external_claim(seq_ids) + + def release(self, seq_id: int) -> None: + """Marks the sequence complete for both modalities' KV caches.""" + self.text_kv_manager.release(seq_id) + self.vision_kv_manager.release(seq_id) + super().release(seq_id) + + def contains(self, seq_id: int) -> bool: + """Returns whether `seq_id` is in the KV cache.""" + text_kv_contains = self.text_kv_manager.contains(seq_id) + + # Assume that the modalities' KV caches have consistent sequence ids. + assert text_kv_contains == self.vision_kv_manager.contains(seq_id) + + return text_kv_contains + + def num_kv_inputs(self) -> int: + """Returns the sum of the KV input lengths for both modalities.""" + return ( + self.text_kv_manager.num_kv_inputs() + + self.vision_kv_manager.num_kv_inputs() + ) + + def increment_cache_lengths( + self, + kv_cache_inputs: list[RaggedKVCacheInputs] | list[PaddedKVCacheInputs], + prev_model_inputs: Iterable[Any], + ) -> list[RaggedKVCacheInputs] | list[PaddedKVCacheInputs]: + """Updates the cache lengths for multistep execution. + + This increments the text and vision KV cache lengths separately using + their respective KV cache inputs. + """ + # Cast the input to MultimodalKVCacheInputs to access its components + multimodal_inputs = cast(list[MultimodalKVCacheInputs], kv_cache_inputs) + text_kv_inputs = multimodal_inputs[0].text_kv_cache_inputs + vision_kv_inputs = multimodal_inputs[0].vision_kv_cache_inputs + + multimodal_kv_inputs = [ + MultimodalKVCacheInputs( + text_kv_cache_inputs=self.text_kv_manager.increment_cache_lengths( + [text_kv_inputs], # type: ignore + prev_model_inputs, + )[0], + vision_kv_cache_inputs=self.vision_kv_manager.increment_cache_lengths( + [vision_kv_inputs], # type: ignore + prev_model_inputs, + )[0], + ) + ] + return cast(list[RaggedKVCacheInputs], multimodal_kv_inputs) + + +# TODO(bduke): use `@dataclass(slots=True)` when we drop 3.9 support. +class LlamaVisionInputs(ModelInputs): + """Holds language model inputs and (optionally) vision model inputs.""" + + # Language model inputs. + input_id_values: Tensor + input_row_offsets: Tensor + input_id_max_seq_len: Tensor + pixel_row_offsets: Tensor + + # Vision model inputs. + _pixel_values: Tensor | None = None + _aspect_ratio_ids: Tensor | None = None + _aspect_ratio_mask: Tensor | None = None + + def __init__( + self, + input_id_values: Tensor, + input_row_offsets: Tensor, + input_id_max_seq_len: Tensor, + pixel_row_offsets: Tensor, + pixel_values: Tensor | None = None, + aspect_ratio_ids: Tensor | None = None, + aspect_ratio_mask: Tensor | None = None, + ): + self.input_id_values = input_id_values + self.input_row_offsets = input_row_offsets + self.input_id_max_seq_len = input_id_max_seq_len + self.pixel_row_offsets = pixel_row_offsets + self._pixel_values = pixel_values + self._aspect_ratio_ids = aspect_ratio_ids + self._aspect_ratio_mask = aspect_ratio_mask + + def __post_init__(self) -> None: + """Validate consistency between vision fields. + + If pixel_values is set, then aspect_ratio_ids, aspect_ratio_mask, + and pixel_row_offsets must also be set, and vice versa. + """ + if self.has_vision_inputs: + if not all( + x is not None + for x in ( + self._aspect_ratio_ids, + self._aspect_ratio_mask, + self.pixel_row_offsets, + ) + ): + msg = "provide all or none of Llama Vision vision model inputs" + raise ValueError(msg) + else: + for field_name in ("_aspect_ratio_ids", "_aspect_ratio_mask"): + if getattr(self, field_name) is not None: + msg = f"{field_name} must be None if _pixel_values is None" + raise ValueError(msg) + + @property + def has_vision_inputs(self) -> bool: + """Returns true iff this includes vision model inputs.""" + return self._pixel_values is not None + + @property + def pixel_values(self) -> Tensor: + assert self._pixel_values is not None + return self._pixel_values + + @property + def aspect_ratio_ids(self) -> Tensor: + assert self._aspect_ratio_ids is not None + return self._aspect_ratio_ids + + @property + def aspect_ratio_mask(self) -> Tensor: + assert self._aspect_ratio_mask is not None + return self._aspect_ratio_mask + + def update_for_next_token( + self, next_tokens: Tensor, next_row_offsets: Tensor + ) -> LlamaVisionInputs: + """Updates next_tokens and row_offsets after an initial step.""" + return LlamaVisionInputs( + input_id_values=next_tokens, + input_row_offsets=next_row_offsets, + input_id_max_seq_len=self.input_id_max_seq_len, + pixel_row_offsets=self.pixel_row_offsets, + # Set vision model inputs to None after the first `next_token`. + pixel_values=None, + aspect_ratio_ids=None, + aspect_ratio_mask=None, + ) + + +class LlamaVisionModel(Layer): + """The Llama 3.2 vision model.""" + + def __init__( + self, pipeline_config: PipelineConfig, weights: Weights + ) -> None: + # Set convenience attributes for the text and vision configs. + self.vision_config = pipeline_config.huggingface_config.vision_config + self.text_config = pipeline_config.huggingface_config.text_config + + self.vision_model = instantiate_vision_model( + dtype=pipeline_config.dtype, + image_size=self.vision_config.image_size, + patch_size=self.vision_config.patch_size, + supported_aspect_ratios=self.vision_config.supported_aspect_ratios, + hidden_size=self.vision_config.hidden_size, + max_num_tiles=self.vision_config.max_num_tiles, + num_channels=self.vision_config.num_channels, + norm_eps=self.vision_config.norm_eps, + attention_heads=self.vision_config.attention_heads, + num_hidden_layers=self.vision_config.num_hidden_layers, + intermediate_size=self.vision_config.intermediate_size, + num_global_layers=self.vision_config.num_global_layers, + intermediate_layers_indices=self.vision_config.intermediate_layers_indices, + weights=weights, + ) + + self.multi_modal_projector = Linear( + weights.multi_modal_projector.weight.allocate( + pipeline_config.dtype, + [ + self.text_config.hidden_size, + self.vision_config.vision_output_dim, + ], + ), + weights.multi_modal_projector.bias.allocate( + pipeline_config.dtype, + [self.text_config.hidden_size], + ), + ) + + def __call__( + self, + pixel_values: TensorValue, + aspect_ratio_ids: TensorValue, + aspect_ratio_mask: TensorValue, + ) -> TensorValue: + if aspect_ratio_ids is None: + msg = "`aspect_ratio_ids` must be provided if `pixel_values` is provided" + raise ValueError(msg) + + # Get vision tokens from vision model. + vision_outputs = self.vision_model( + pixel_values=pixel_values, + aspect_ratio_ids=aspect_ratio_ids, + aspect_ratio_mask=aspect_ratio_mask, + ) + cross_attention_states = vision_outputs[0] + + num_patches = cross_attention_states.shape[-2] + + return self.multi_modal_projector(cross_attention_states).reshape( + [ + Dim("batch_size") + * Dim("num_concurrent_media") + * self.vision_config.max_num_tiles + * num_patches, + self.text_config.hidden_size, + ] + ) + + +class LlamaVisionLanguageModel(Layer): + """The Llama 3.2 vision language model.""" + + language_model: CausalLanguageModel + """Language model composed of self and cross attention layers.""" + + num_text_kv_cache_inputs: int + """Number of KV cache inputs for self attention layers.""" + + def __init__( + self, + pipeline_config: PipelineConfig, + weights: Weights, + kv_params: KVCacheParams, + max_seq_len: int, + num_text_kv_cache_inputs: int, + ) -> None: + text_config = pipeline_config.huggingface_config.text_config + + self.language_model = instantiate_language_model( + dtype=pipeline_config.dtype, + hidden_size=text_config.hidden_size, + n_heads=text_config.num_attention_heads, + rope_theta=text_config.rope_theta, + max_seq_len=max_seq_len, + num_hidden_layers=text_config.num_hidden_layers, + cross_attention_layers=text_config.cross_attention_layers, + vocab_size=text_config.vocab_size, + rms_norm_eps=text_config.rms_norm_eps, + num_key_value_heads=text_config.num_key_value_heads, + intermediate_size=text_config.intermediate_size, + kv_params=kv_params, + weights=weights, + ) + self.num_text_kv_cache_inputs = num_text_kv_cache_inputs + + def __call__( + self, + cross_attention_states: TensorValue, + input_ids: TensorValue, + hidden_input_row_offsets: TensorValue, + hidden_max_seq_len: TensorValue, + cross_input_row_offsets: TensorValue, + *kv_cache_inputs: TensorValue, + ) -> TensorValue: + logits = self.language_model( + text_kv_cache_inputs=kv_cache_inputs[ + : self.num_text_kv_cache_inputs + ], + vision_kv_cache_inputs=kv_cache_inputs[ + self.num_text_kv_cache_inputs : + ], + input_ids=input_ids, + hidden_input_row_offsets=hidden_input_row_offsets, + hidden_max_seq_len=hidden_max_seq_len, + cross_attention_states=cross_attention_states, + cross_input_row_offsets=cross_input_row_offsets, + ) + + # Always return float32 logits, no matter the activation type + return ops.cast(logits, DType.float32) + + +class LlamaVision(PipelineModel[TextAndVisionContext]): + """The entire (multimodal) Llama3.2 vision model. + + A note on multi-step and vision inputs: + + - `has_images` in `prepare_initial_token_inputs` is determined by whether or + not `pixel_values` is set on each TextAndVisionContext in the batch. + So on the context encoding call, the caller sets pixel_values, making + `has_images` True. + - `prepare_initial_token_inputs` unsets `ctx.pixel_values` (sets it to an + empty list). + So the next prepare_initial_token_inputs will have has_images == False + (the next multi-step train will skip the vision encoder). + - That covers the num_steps = 1 case. + - For multistep, the prepare_next_token_inputs function will unset + LlamaVisionInputs.pixel_values (and aspect ratio ids/mask). + So for multistep, step > 1, subsequent steps won't run the vision encoder. + - Note the 2 different mechanisms: `has_images` is determined by + `TextAndVisionContext.pixel_values` in `prepare_initial_token_inputs`, + but it is determined by `LlamaVisionInputs.pixel_values` in + `PipelineModel.execute` (which is called multiple times in a multi-step + train, so `prepare_next_token_inputs` needs to unset + `LlamaVisionInputs.pixel_values`). + """ + + def __init__( + self, pipeline_config: PipelineConfig, session: InferenceSession + ) -> None: + # Set convenience attributes for the text and vision configs. + self.vision_config = pipeline_config.huggingface_config.vision_config + self.text_config = pipeline_config.huggingface_config.text_config + + # These need to be set at graph instantiation time. + self.vision_graph_input_size = -1 + self.language_graph_input_size = -1 + + super().__init__(pipeline_config, session) + self.vision_model, self.language_model = self.load_model(session) + # Note that in a multimodal model, the language model is the last model in the + # pipeline. Unfortunately, self.model is still being used (and exposed) + # in the token generation code, so we still need to set it here. + self.model = self.language_model + + def _llama3_vision_vision_graph(self) -> Graph: + # Inserted a manual CHW -> HWC transpose here. + pixel_values_type = TensorType( + # This has to be of type float32 as we construct tensors from a numpy + # array (which has no notion of some dtypes like bfloat16). Explicit + # casting will happen inside the graph. + DType.float32, + shape=[ + "batch_size", + "num_concurrent_media", + self.vision_config.max_num_tiles, + self.vision_config.image_size, # height + self.vision_config.image_size, # width + self.vision_config.num_channels, + ], + ) + aspect_ratio_ids_type = TensorType( + DType.int64, + shape=["batch_size", "num_concurrent_media"], + ) + aspect_ratio_mask_type = TensorType( + DType.int64, + shape=[ + "batch_size", + "num_concurrent_media", + self.vision_config.max_num_tiles, + ], + ) + + input_types = [ + pixel_values_type, + aspect_ratio_ids_type, + aspect_ratio_mask_type, + ] + self.vision_graph_input_size = len(input_types) + return Graph( + "llama3-vision-vision-model-graph", + forward=LlamaVisionModel( + pipeline_config=self.pipeline_config, weights=self.weights + ), + input_types=input_types, + ) + + @classmethod + def calculate_max_seq_len(cls, pipeline_config: PipelineConfig) -> int: + try: + return upper_bounded_default( + upper_bound=pipeline_config.huggingface_config.text_config.max_position_embeddings, + default=pipeline_config.max_length, + ) + except ValueError as e: + msg = ( + "Unable to infer max_length for Llama Vision, the provided " + f"max_length ({pipeline_config.max_length}) exceeds the " + f"model's max_position_embeddings " + f"({pipeline_config.huggingface_config.text_config.max_position_embeddings})." + ) + raise ValueError(msg) from e + + def _llama3_vision_language_graph(self) -> Graph: + # Pre-allocate a buffer for input_row_offsets in multistep execution. + # We do this to avoid materializing and copying a buffer with each multistep step + assert self.pipeline_config.max_batch_size, ( + "Expected max_batch_size to be set" + ) + self._input_row_offsets_prealloc = Tensor.from_numpy( + np.arange(self.pipeline_config.max_batch_size + 1, dtype=np.uint32) + ).to(self.pipeline_config.devices[0]) + + input_ids_type = TensorType(DType.int64, shape=["total_seq_len"]) + # image_size = self.vision_config.image_size + # patch_size = self.vision_config.patch_size + cross_attention_states_type = TensorType( + self.pipeline_config.dtype, + shape=[ + # TODO(bduke): fix algebraic dim creation outside of graph + # contexts. + # Dim("batch_size") + # * "num_concurrent_media" + # * self.vision_config.max_num_tiles + # * ((image_size // patch_size) ** 2 + 1), + "num_vision_embeddings", + self.text_config.hidden_size, + ], + ) + input_ids_max_seq_len_type = TensorType(DType.uint32, [1]) + input_row_offsets_type = TensorType( + DType.uint32, shape=["input_row_offsets_len"] + ) + cross_row_offsets_type = input_row_offsets_type + + # Unpack multimodal KV inputs. + assert isinstance(self.kv_manager, MultimodalKVCacheManager) + input_symbols = self.kv_manager.input_symbols()[0] + text_kv_input_symbols = input_symbols.text_kv_input_symbols + vision_kv_input_symbols = input_symbols.vision_kv_input_symbols + + input_types = [ + cross_attention_states_type, + input_ids_type, + input_row_offsets_type, + input_ids_max_seq_len_type, + cross_row_offsets_type, + *text_kv_input_symbols, + *vision_kv_input_symbols, + ] + self.language_graph_input_size = len(input_types) + + return Graph( + "llama3-vision-language-model-graph", + forward=LlamaVisionLanguageModel( + pipeline_config=self.pipeline_config, + weights=self.weights, + kv_params=self.get_kv_params(self.pipeline_config), + max_seq_len=self.calculate_max_seq_len(self.pipeline_config), + num_text_kv_cache_inputs=len(list(text_kv_input_symbols)), + ), + input_types=input_types, + ) + + @property + def vision_max_seq_len(self) -> int: + """Returns the maximum number of vision tokens.""" + return self._calculate_vision_max_seq_len(self.pipeline_config) + + @classmethod + def _calculate_vision_max_seq_len(cls, config: PipelineConfig) -> int: + """Returns the maximum number of vision tokens.""" + # Marshal out hyperparameters. + height = config.huggingface_config.vision_config.image_size + width = config.huggingface_config.vision_config.image_size + max_num_tiles = config.huggingface_config.vision_config.max_num_tiles + patch_size = config.huggingface_config.vision_config.patch_size + # TODO(bduke): account for the actual instead of max number of tiles. + # num_tiles * (image_dim**2 // patch_dim**2 + 1 (cls token)) + return max_num_tiles * ((height * width) // patch_size**2 + 1) + + @classmethod + def get_num_layers(cls, pipeline_config: PipelineConfig) -> int: + return ( + pipeline_config.huggingface_config.vision_config.num_hidden_layers + ) + + def _prepare_vision_inputs( + self, + context_batch: Sequence[TextAndVisionContext], + ) -> tuple[Tensor, Tensor, Tensor]: + """Batches up pixel_values, aspect_ratio_ids, and aspect_ratio_masks.""" + images = [] + aspect_ratio_ids_list = [] + aspect_ratio_mask_list = [] + for context in context_batch: + # Get first image in first batch and permute the order to (HWC). + image = np.transpose(context.pixel_values, (0, 1, 3, 4, 2)) + + # Add batch_size, num_concurrent_media, and max_num_tiles dimensions + # [1, num_concurrent_media, max_num_tiles, H, W, C] + image = np.expand_dims(image, axis=(0)) + images.append(image) + + if "aspect_ratio_ids" not in context.extra_model_args: + msg = "aspect_ratio_ids is required for image / vision model input" + raise ValueError(msg) + + if "aspect_ratio_mask" not in context.extra_model_args: + msg = "aspect_ratio_mask is required for image / vision model input" + raise ValueError(msg) + + aspect_ratio_ids_list.append( + context.extra_model_args["aspect_ratio_ids"] + ) + aspect_ratio_mask_list.append( + context.extra_model_args["aspect_ratio_mask"] + ) + + # Convert the list into a single NumPy array with shape + # (batch_size, 1, max_num_tiles, H, W, C). + final_images = np.concatenate(images, axis=0) + + pixel_values = Tensor.from_numpy(final_images).to( + self.pipeline_config.devices[0] + ) + + final_aspect_ratio_ids = np.concatenate(aspect_ratio_ids_list, axis=0) + + aspect_ratio_ids = Tensor.from_numpy(final_aspect_ratio_ids).to( + self.pipeline_config.devices[0] + ) + + final_aspect_ratio_mask = np.concatenate(aspect_ratio_mask_list, axis=0) + + aspect_ratio_mask = Tensor.from_numpy(final_aspect_ratio_mask).to( + self.pipeline_config.devices[0] + ) + + return pixel_values, aspect_ratio_ids, aspect_ratio_mask + + def prepare_initial_token_inputs( + self, + context_batch: Sequence[TextAndVisionContext], + ) -> LlamaVisionInputs: + """Creates tensors of token and image inputs, if applicable.""" + if self.pipeline_config.cache_strategy != KVCacheStrategy.CONTINUOUS: + msg = "Llama Vision only supports continuous batching" + raise ValueError(msg) + + def has_image(pixel_values: np.ndarray | list[np.ndarray]) -> bool: + return pixel_values is not None and len(pixel_values) > 0 + + has_images = any(has_image(ctx.pixel_values) for ctx in context_batch) + if has_images and not all( + has_image(ctx.pixel_values) for ctx in context_batch + ): + msg = ( + "expected context batch to all have images, or no images at all" + ) + raise RuntimeError(msg) + + def initial_prompt_missing_image(ctx: TextAndVisionContext) -> bool: + return ctx.is_initial_prompt and not has_image(ctx.pixel_values) + + if any(initial_prompt_missing_image(ctx) for ctx in context_batch): + msg = "The Llama Vision model currently requires a prompt with an image. Consider using the regular text-only models for non-image prompts" + raise RuntimeError(msg) + + # Prepare vision inputs if applicable. + pixel_values = None + aspect_ratio_ids = None + aspect_ratio_mask = None + if has_images: + pixel_values, aspect_ratio_ids, aspect_ratio_mask = ( + self._prepare_vision_inputs(context_batch) + ) + + # Input row offset type: ["input_row_offsets_len"], UInt32 + input_id_row_offsets = Tensor.from_numpy( + np.cumsum( + [0] + [ctx.active_length for ctx in context_batch], + dtype=np.uint32, + ) + ).to(self.pipeline_config.devices[0]) + + pixel_row_offsets = Tensor.from_numpy( + np.cumsum( + [0] + + [ + # Use an input row offset of 0 to mean no image. + self.vision_max_seq_len + if has_image(ctx.pixel_values) + else 0 + for ctx in context_batch + ], + dtype=np.uint32, + ) + ).to(self.pipeline_config.devices[0]) + + # Input Ids: ["total_seq_len"], Int64 + # Create a ragged token vector of length: sum(len(t) for t in tokens). + tokens = np.concatenate([ctx.next_tokens for ctx in context_batch]) + input_id_values = Tensor.from_numpy(tokens).to( + self.pipeline_config.devices[0] + ) + # This lives on host / in the CPU kernel, but is later casted to a scalar on + # device kernel side. No need for explicit .to(pipeline_config.device) call here. + input_id_max_seq_len = Tensor.from_numpy( + np.array( + [max(ctx.active_length for ctx in context_batch)], + dtype=np.uint32, + ) + ) + + # Unset the context's pixel values so that subsequent next_token + # calls reusing the same context won't run the vision encoder. + for ctx in context_batch: + ctx.pixel_values = [] + + return LlamaVisionInputs( + input_id_values=input_id_values, + input_row_offsets=input_id_row_offsets, + input_id_max_seq_len=input_id_max_seq_len, + pixel_row_offsets=pixel_row_offsets, + pixel_values=pixel_values, + aspect_ratio_ids=aspect_ratio_ids, + aspect_ratio_mask=aspect_ratio_mask, + ) + + def prepare_next_token_inputs( + self, + next_tokens: Tensor, + prev_inputs: ModelInputs, + ) -> LlamaVisionInputs: + """Produce the updated LlamaVisionInputs for the next token. + + This sets existing vision inputs to none and replaces text tokens and + row offsets. + """ + prev_inputs = cast(LlamaVisionInputs, prev_inputs) + next_row_offsets = self._input_row_offsets_prealloc[ + : prev_inputs.input_row_offsets.shape[0] + ] + + return prev_inputs.update_for_next_token(next_tokens, next_row_offsets) + + def execute( + self, + model_inputs: ModelInputs, + # TODO(zheng): This should be folded as KVCacheInputs into ModelInputs. + kv_cache_inputs: Optional[KVCacheInputs] = None, + ) -> ModelOutputs: + assert kv_cache_inputs is not None + # batch_size * num_concurrent_media * max_num_tiles * num_patches + # are set to 0 here to imitate a dummy tensor (used in text-only mode). + cross_attention_states = Tensor.zeros( + shape=[0, self.text_config.hidden_size], + dtype=self.pipeline_config.dtype, + ).to(self.pipeline_config.devices[0]) + + model_inputs = cast(LlamaVisionInputs, model_inputs) + if model_inputs.has_vision_inputs: + # Compute the cross attention states if this is a CE step. + exec_result = self.vision_model.execute( + model_inputs.pixel_values, + model_inputs.aspect_ratio_ids, + model_inputs.aspect_ratio_mask, + copy_inputs_to_device=False, + )[0] + assert isinstance(exec_result, Tensor) + cross_attention_states = exec_result + + all_kv_cache_inputs: list[Tensor] = [] + if isinstance(kv_cache_inputs, MultimodalKVCacheInputs): + all_kv_cache_inputs.extend(kv_cache_inputs.text_kv_cache_inputs) + all_kv_cache_inputs.extend(kv_cache_inputs.vision_kv_cache_inputs) + else: + all_kv_cache_inputs = list(kv_cache_inputs) + + model_outputs = self.language_model.execute( + cross_attention_states, + model_inputs.input_id_values, + model_inputs.input_row_offsets, + model_inputs.input_id_max_seq_len, + model_inputs.pixel_row_offsets, + *all_kv_cache_inputs, + copy_inputs_to_device=False, + ) + assert not self.pipeline_config.enable_echo + assert isinstance(model_outputs[0], Tensor) + return ModelOutputs(next_token_logits=model_outputs[0]) + + @classmethod + def get_kv_params(cls, pipeline_config: PipelineConfig) -> KVCacheParams: + return KVCacheParams( + dtype=pipeline_config.cache_dtype, + n_kv_heads=pipeline_config.huggingface_config.text_config.num_key_value_heads, + head_dim=( + pipeline_config.huggingface_config.text_config.hidden_size + // pipeline_config.huggingface_config.text_config.num_attention_heads + ), + page_size=pipeline_config.kv_cache_page_size, + cache_strategy=pipeline_config.cache_strategy, + enable_prefix_caching=pipeline_config.enable_prefix_caching, + ) + + def load_kv_manager( + self, + session: InferenceSession, + available_cache_memory: int, + ) -> KVCacheManager: + """Loads KV cache management objects for Llama vision. + + Args: + session: Inference session to compile and init the KV cache. + available_cache_memory: Amount of memory available to the KV cache, + in bytes. + + Returns: + A pair of KV managers: one for self the other for cross attention. + """ + num_cross_attn_layers = len(self.text_config.cross_attention_layers) + return MultimodalKVCacheManager( + params=self.get_kv_params(self.pipeline_config), + max_batch_size=self.pipeline_config.max_batch_size, + text_max_seq_len=self.calculate_max_seq_len(self.pipeline_config), + vision_max_seq_len=self.vision_max_seq_len, + text_num_layers=self.text_config.num_hidden_layers + - num_cross_attn_layers, + vision_num_layers=num_cross_attn_layers, + devices=self.pipeline_config.devices, + session=session, + available_cache_memory=available_cache_memory, + page_size=self.pipeline_config.kv_cache_page_size, + ) + + @classmethod + def estimate_kv_cache_size( + cls, + pipeline_config: PipelineConfig, + available_cache_memory: int, + devices: list[Device], + ) -> int: + """Estimates the size of the kv cache in bytes.""" + assert pipeline_config.max_batch_size is not None + + num_cross_attn_layers = len( + pipeline_config.huggingface_config.text_config.cross_attention_layers + ) + return MultimodalKVCacheManager.estimated_memory_size( + params=cls.get_kv_params(pipeline_config), + max_batch_size=pipeline_config.max_batch_size, + max_seq_len=cls.calculate_max_seq_len(pipeline_config), + num_layers=pipeline_config.huggingface_config.text_config.num_hidden_layers + - num_cross_attn_layers, + available_cache_memory=available_cache_memory, + devices=devices, + max_vision_seq_len=cls._calculate_vision_max_seq_len( + pipeline_config + ), + num_vision_layers=num_cross_attn_layers, + ) + + @classmethod + def infer_optimal_batch_size( + cls, + pipeline_config: PipelineConfig, + available_cache_memory: int, + ) -> int: + if ( + len(pipeline_config.devices) == 1 + and pipeline_config.devices[0].is_host + ): + return 1 + + num_cross_attn_layers = len( + pipeline_config.huggingface_config.text_config.cross_attention_layers + ) + optimal_batch_size = MultimodalKVCacheManager.infer_optimal_batch_size( + params=cls.get_kv_params(pipeline_config), + max_seq_len=cls.calculate_max_seq_len(pipeline_config), + num_layers=pipeline_config.huggingface_config.text_config.num_hidden_layers + - num_cross_attn_layers, + # TODO(GEX-1843): we underestimate the memory usage of the + # vision model due to multiple activations in flight while executing the + # vision encoder and first few layers of the text encoder in parallel. + # This is a hacky workaround to account for this, in the long term we + # should more accurately measure a model's memory consumption via + # an interface in the graph compiler. + available_cache_memory=int(available_cache_memory * 0.8), + devices=pipeline_config.devices, + max_vision_seq_len=cls._calculate_vision_max_seq_len( + pipeline_config + ), + num_vision_layers=num_cross_attn_layers, + ) + return max( + cls._MIN_DEFAULT_BATCH_SIZE, + min(optimal_batch_size, cls._MAX_DEFAULT_BATCH_SIZE), + ) + + def load_model( + self, + session: InferenceSession, + ) -> tuple[Model, Model]: + """ + Load the Llama vision multimodal model. Since this is a multimodal model, + we have vision and language models (graph) loaded. + """ + self.weights = self.pipeline_config.load_weights() + + def build_vision_model(): + logger.info("Building and compiling vision model...") + before = time.perf_counter() + vision_model_graph = self._llama3_vision_vision_graph() + vision_model = session.load( + vision_model_graph, + weights_registry=self.weights.allocated_weights, + ) + after = time.perf_counter() + logger.info( + f"Compiling vision model took {after - before:.6f} seconds" + ) + return vision_model + + def build_language_model(): + logger.info("Building and compiling language model...") + before = time.perf_counter() + language_model_graph = self._llama3_vision_language_graph() + language_model = session.load( + language_model_graph, + weights_registry=self.weights.allocated_weights, + ) + after = time.perf_counter() + logger.info( + f"Building and compiling language model took {after - before:.6f} seconds" + ) + return language_model + + with ThreadPoolExecutor(max_workers=2) as executor: + vision_model_future = executor.submit(build_vision_model) + language_model_future = executor.submit(build_language_model) + vision_model = vision_model_future.result() + language_model = language_model_future.result() + + return (vision_model, language_model) diff --git a/src/max/pipelines/architectures/llama_vision/mlp.py b/src/max/pipelines/architectures/llama_vision/mlp.py new file mode 100644 index 0000000000..01909f6e42 --- /dev/null +++ b/src/max/pipelines/architectures/llama_vision/mlp.py @@ -0,0 +1,36 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +"""Multi-layer Perceptron for Llama 3.2 vision transformer.""" + +from dataclasses import dataclass + +from max.graph import TensorValue, ops +from max.pipelines.nn import Linear +from max.pipelines.nn.layer import Layer + + +@dataclass +class MLP(Layer): + """ + Simple multi-layer perceptron composed of two linear layers. + Uses GELU activation function. + """ + + fc1: Linear + fc2: Linear + + def __call__(self, hidden_states: TensorValue) -> TensorValue: + hidden_states = self.fc1(hidden_states) + hidden_states = ops.gelu(hidden_states) + return self.fc2(hidden_states) diff --git a/src/max/pipelines/architectures/llama_vision/positional_embedding.py b/src/max/pipelines/architectures/llama_vision/positional_embedding.py new file mode 100644 index 0000000000..b581fa76fc --- /dev/null +++ b/src/max/pipelines/architectures/llama_vision/positional_embedding.py @@ -0,0 +1,131 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +"""Llama 3.2 Transformer Vision Model Positional Embeddings.""" + +from __future__ import annotations + +from dataclasses import dataclass + +from max.graph import TensorValue, Weight, ops +from max.pipelines.nn import Embedding +from max.pipelines.nn.layer import Layer + + +@dataclass +class PrecomputedAspectRatioEmbedding(Layer): + """ + Llama 3.2 precomputed aspect ratio embedding. + + Args: + params: Hyperparameters for this PrecomputedAspectRatioEmbedding layer. + gate: The gating parameter to control the contribution of the aspect + ratio embedding. + embedding: The aspect ratio embedding. + """ + + max_num_tiles: int + hidden_size: int + gate: Weight + embedding: Embedding + is_gated: bool = False + + def __call__( + self, hidden_state: TensorValue, aspect_ratio_ids: TensorValue + ) -> TensorValue: + batch_size, num_tiles, _, hidden_size = hidden_state.shape + embeddings = self.embedding(aspect_ratio_ids) + embeddings = embeddings.reshape((-1, num_tiles, 1, self.hidden_size)) + + if self.is_gated: + embeddings = embeddings * ops.tanh(self.gate) + + # We're broadcasting in the add operation below, so we call reshape() + # on embeddings first. + embeddings = embeddings.reshape( + ( + batch_size, + num_tiles, + embeddings.shape[2], + hidden_size, + ) + ) + return hidden_state + embeddings + + +@dataclass +class PrecomputedPositionEmbedding(Layer): + """ + Llama 3.2 precomputed position embedding. + + Args: + gate: The gating parameter to control the contribution of the position + embedding or another component of the model. + embedding: The precomputed position embedding. + tile_embedding: The embedding associated with tiles or patches in a + vision model. + """ + + image_size: int + patch_size: int + hidden_size: int + max_num_tiles: int + gate: Weight + embedding: Weight + tile_embedding: Embedding + + def __call__( + self, hidden_state: TensorValue, aspect_ratio_ids: TensorValue + ) -> TensorValue: + # position embeddings + gated_position_embedding = (1 - ops.tanh(self.gate)) * self.embedding + + num_patches = (self.image_size // self.patch_size) ** 2 + 1 + gated_position_embedding = gated_position_embedding.reshape( + ( + 1, + 1, + num_patches, + self.hidden_size, + ) + ) + # We're broadcasting gated_position_embedding in the add operation below, + # so we call reshape() on hidden_state first. + batch_size, num_tiles, _, _ = hidden_state.shape + hidden_state = hidden_state.reshape( + ( + batch_size, + num_tiles, + num_patches, + self.hidden_size, + ) + ) + hidden_state = hidden_state + gated_position_embedding + + # precomputed tile position embeddings + tile_position_embedding = self.tile_embedding(aspect_ratio_ids) + tile_position_embedding = tile_position_embedding.reshape( + ( + batch_size, + self.max_num_tiles, + num_patches, + self.hidden_size, + ) + ) + gated_tile_position_embedding = ( + ops.tanh(self.gate) * tile_position_embedding + ) + # This explicit reshape is called only to match num_tiles dim in + # tile_position_embedding. + hidden_state = hidden_state.reshape(tile_position_embedding.shape) + return hidden_state + gated_tile_position_embedding diff --git a/src/max/pipelines/architectures/llama_vision/vision_model.py b/src/max/pipelines/architectures/llama_vision/vision_model.py new file mode 100644 index 0000000000..695f2666cb --- /dev/null +++ b/src/max/pipelines/architectures/llama_vision/vision_model.py @@ -0,0 +1,741 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +"""Llama 3.2 Transformer Vision Model.""" + +from __future__ import annotations + +from dataclasses import dataclass + +from max.dtype import DType +from max.graph import Dim, StaticDim, TensorValue, TensorValueLike, ops +from max.graph.weights import Weights +from max.pipelines.nn import Conv2D, Embedding, LayerNorm, Linear +from max.pipelines.nn.layer import Layer + +from .attention import Attention +from .encoder import VisionEncoder, VisionEncoderLayer +from .mlp import MLP +from .positional_embedding import ( + PrecomputedAspectRatioEmbedding, + PrecomputedPositionEmbedding, +) + + +# TODO(MAXCORE-170): We should clean this up. This is just a RSCF layout permutation so it +# conforms with our conv op API. +@dataclass +class VisionConv2D(Conv2D): + def __call__(self, x: TensorValue) -> TensorValue: + # Permute first before calling the parent forward pass. + self.filter = ops.permute(self.filter, [2, 3, 1, 0]) + return super().__call__(x=x) + + +@dataclass +class VisionModel(Layer): + """ + Llama 3.2 vision model responsible for encoding images. It consists of two + vision encoders. + + This model is designed to process input images through a combination of convolutional + layers and transformer-based encoders. It utilizes gated and precomputed positional + embeddings to handle spatial information effectively, and supports multi-aspect ratio inputs. + + Args: + params : Hyperparameters that define the architecture and training behavior of the vision model. + gated_positional_embedding: Precomputed positional embeddings that are gated for enhanced spatial encoding. + pre_tile_positional_embedding: Precomputed aspect ratio positional embeddings applied before tiling the input patches. + post_tile_positional_embedding: Precomputed aspect ratio positional embeddings applied after tiling the input patches. + patch_embedding: Convolutional layer that extracts features from input image patches. + class_embedding: Embedding that is concatenated to the sequence for classification tasks. + layernorm_pre: Layer normalization applied before feeding inputs into the transformer encoders. + layernorm_post: Layer normalization applied after processing through the transformer layers. + transformer: Transformer responsible for capturing local spatial relationships in the image. + global_transformer: Transformer focused on global context and capturing long-range dependencies within the image. + """ + + gated_positional_embedding: PrecomputedPositionEmbedding + pre_tile_positional_embedding: PrecomputedAspectRatioEmbedding + post_tile_positional_embedding: PrecomputedAspectRatioEmbedding + patch_embedding: VisionConv2D + class_embedding: TensorValueLike + layernorm_pre: LayerNorm + layernorm_post: LayerNorm + transformer: VisionEncoder + global_transformer: VisionEncoder + dtype: DType + intermediate_layers_indices: list[int] + num_patches: int + + def apply_class_embedding(self, hidden_state: TensorValue) -> TensorValue: + """ + Adds a learnable class token embedding to the sequence of patch embeddings for a vision transformer. + + This function is responsible for prepending a class token to the sequence of image patch embeddings. + The class token is a learnable parameter that captures global information from the image through + the self-attention mechanism. After processing through the transformer layers, the class token + serves as a summary representation of the entire image, typically used for classification tasks. + + Args: + embedding_sequence (TensorValue): A tensor representing the sequence of embedded image patches. + Shape: (batch_size, num_patches, embedding_dim) + + Returns: + TensorValue: A tensor with the class token prepended to the sequence of patch embeddings. + Shape: (batch_size, num_patches + 1, embedding_dim) + The first token in the sequence is the class token, followed by the image patch embeddings. + + Example: + >>> class_token = model.apply_class_embedding(patch_embeddings) + >>> # class_token now holds the class embedding prepended to the patch embeddings + """ + batch_size, _, hidden_size = hidden_state.shape + # This was a reshape in torch reference implementation but we need to + # broadcast this into the right shapes. + class_embedding = TensorValue(self.class_embedding) + + class_embedding = class_embedding.broadcast_to( + (batch_size, 1, hidden_size) + ) + return ops.concat((class_embedding, hidden_state), axis=1) + + def _prepare_aspect_ratio_attention_mask( + self, + aspect_ratio_mask: TensorValue, + num_patches: int, + target_length: int, + dtype: DType, + ) -> TensorValue: + # Expand aspect ratio mask to target_length + batch_size, max_num_tiles = aspect_ratio_mask.shape + attention_mask = aspect_ratio_mask.reshape( + (batch_size, max_num_tiles, 1, 1) + ).cast(dtype) # (1, 4, 1, 1) + # attention_shape (1, 4, 1, 1) -> (1, 4, 1032, 1) + attention_mask = ops.tile(attention_mask, (1, 1, target_length, 1)) + + # Mask padding patches + pad_patches = target_length - num_patches + + # The snippet below is a workaround for + # attention_mask[:, :, 0 - pad_patches :] = 0 + valid_mask = attention_mask[:, :, :-pad_patches, :] + zero_pad = ops.constant(0, dtype).broadcast_to( + (batch_size, max_num_tiles, pad_patches, attention_mask.shape[-1]) + ) + attention_mask = ops.concat((valid_mask, zero_pad), axis=2) + + # Invert the mask (0 -> 1, 1 -> 0) + attention_mask = 1 - attention_mask + + # Reshape to 2D and create 4D attention mask + # (batch_size, 1, max_num_tiles * target_length, max_num_tiles * target_length) + attention_mask = attention_mask.reshape( + (batch_size, max_num_tiles * target_length, 1) + ) + + # TODO: Hardcoded for now. Reference implementation uses torch.finfo(torch.bfloat16).min + bfloat_dtype_min_val = -3.3895313892515355e38 + # Perform outer product by broadcasting elementwise multiplication. + attention_mask = ( + attention_mask + * attention_mask.reshape( + (batch_size, 1, max_num_tiles * target_length) + ) + ) * bfloat_dtype_min_val + + # before unsqueeze: attention_mask shape: (1, 4128, 4128) + return ops.unsqueeze(attention_mask, axis=1) + + def _manual_constant_pad_4d( + self, + dtype: DType, + input_tensor, + pad: tuple[int, int, int, int], + value=0, + ) -> TensorValue: + """ + Manually pads a 4D tensor (batch of images) with constant values. + + Args: + input_tensor (TensorValue): The input 4D tensor (batch_size, channels, height, width). + pad (tuple): Tuple of the form (left, right, top, bottom) specifying padding sizes. + value (float): The value to pad with. + + Returns: + TensorValue: Padded tensor. + """ + left, right, top, bottom = pad + batch_size, channels, height, width = input_tensor.shape + + # Compute new height and width after padding + new_height = height + top + bottom + new_width = width + left + right + + padded_tensor = ops.constant(value, dtype).broadcast_to( + (batch_size, channels, new_height, new_width) + ) + + # Insert the original tensor into the center of the padded tensor + # The code snippet below is a workaround for: + # padded_tensor[ + # :, :, top : top + height, left : left + width + # ] = input_tensor + + # Slice regions along height (dim=2) + # Unchanged region above + top_region = padded_tensor[:, :, :top, :] + # Unchanged region below + bottom_region = padded_tensor[:, :, top + height.dim :, :] + + # Slice regions along width (dim=3) + # Unchanged region to the left + left_region = padded_tensor[:, :, top : top + height.dim, :left] + width_tuple: tuple[TensorValue, ...] = (left_region, input_tensor) + if left > 0: + # Unchanged region to the right + right_region = padded_tensor[ + :, :, top : top + height.dim, left + width.dim : + ] + width_tuple += (right_region,) + + # Concatenate along width (axis=3) + middle_region = ops.concat(width_tuple, axis=3) + + # Concatenate along height (axis=2) + updated_padded_tensor = ops.concat( + (top_region, middle_region, bottom_region), axis=2 + ) + + return updated_padded_tensor + + def __call__( + self, + pixel_values: TensorValue, + aspect_ratio_ids: TensorValue, + aspect_ratio_mask: TensorValue, + ) -> tuple[TensorValue, TensorValue | None, TensorValue | None]: + ( + batch_size, + num_concurrent_media, + num_tiles, + height, + width, + num_channels, + ) = pixel_values.shape + + # Pixel values isn't always guaranteed to be the same dtype as configured + # at the pipeline config level. We insert an explicit cast here to account + # for it. + pixel_values = ops.cast(pixel_values, self.dtype) + + pixel_values = pixel_values.reshape( + ( + batch_size * num_concurrent_media * num_tiles, + height, + width, + num_channels, + ) + ) + + aspect_ratio_ids = aspect_ratio_ids.reshape( + (batch_size * num_concurrent_media, -1) + ) + + # Patch embedding + patch_embeds = self.patch_embedding(pixel_values) + + # Permute it back to original dim of (4, 1280, 32, 32) + patch_embeds = patch_embeds.permute([0, 3, 1, 2]) + + hidden_state = patch_embeds.flatten(2).transpose(1, 2) + + # Tile embeddings + _, num_patches, dim = hidden_state.shape + + hidden_state = hidden_state.reshape( + (batch_size * num_concurrent_media, num_tiles, -1, dim) + ) + + hidden_state = self.pre_tile_positional_embedding( + hidden_state, aspect_ratio_ids + ) + + # Add cls token + hidden_state = hidden_state.reshape( + (batch_size * num_concurrent_media * num_tiles, num_patches, dim) + ) + hidden_state = self.apply_class_embedding(hidden_state) + num_patches += 1 + + # Position embeddings + hidden_state = hidden_state.reshape( + (batch_size * num_concurrent_media, num_tiles, num_patches, dim) + ) + hidden_state = self.gated_positional_embedding( + hidden_state, aspect_ratio_ids + ) + + hidden_state = self.layernorm_pre(hidden_state) + + # Compute the number of tokens to pad + curr_num_patches = StaticDim(hidden_state.shape[-2]).dim + num_padding_patches = (8 - (curr_num_patches % 8)) % 8 + # Compute padding tuple for pad function + padding = ( + 0, + 0, + 0, + num_padding_patches, + ) # (pad_left, pad_right, pad_left for dim -2, pad_right for dim -2) + # Pad the tensor + hidden_state = self._manual_constant_pad_4d( + dtype=self.dtype, + input_tensor=hidden_state, + pad=padding, + value=0, + ) + + slice_index = -num_padding_patches if num_padding_patches > 0 else None + + # Prepare attention mask + attention_mask = aspect_ratio_mask.reshape( + (batch_size * num_concurrent_media, -1) + ) # (1, 4) + + attention_mask = self._prepare_aspect_ratio_attention_mask( + aspect_ratio_mask=attention_mask, + num_patches=self.num_patches, + target_length=StaticDim(hidden_state.shape[2]).dim, + dtype=self.dtype, + ) + + # Apply encoder + hidden_state = hidden_state.reshape( + (batch_size * num_concurrent_media, -1, dim) + ) + + # hidden_state: 1, 4128, 1280 + # attention_mask: 1, 1, 4128, 4128 + + hidden_state, all_intermediate_hidden_states = self.transformer( + hidden_state, + attention_mask=attention_mask, + output_hidden_states=True, + ) + assert all_intermediate_hidden_states is not None, ( + "expect intermediate hidden states output" + ) + + hidden_state = self.layernorm_post(hidden_state) + + # Apply global encoder + hidden_state = hidden_state.reshape( + ( + batch_size * num_concurrent_media, # 1 + num_tiles, # 4 + num_patches + num_padding_patches, # 1025 + 7 = 1032 + dim, + ) + ) + hidden_state = self.post_tile_positional_embedding( + hidden_state, aspect_ratio_ids + ) + hidden_state = hidden_state.reshape( + ( + batch_size * num_concurrent_media, + num_tiles * (num_patches + num_padding_patches), + dim, + ) + ) + + global_output = self.global_transformer( + hidden_state, + attention_mask=attention_mask, + output_hidden_states=False, + ) + hidden_state = global_output[0] + + # Remove padding from hidden state. + hidden_state = hidden_state.reshape( + ( + batch_size * num_concurrent_media, # 1 + num_tiles, # 4 + num_patches + num_padding_patches, # 1025 + 7 = 1032 + dim, + ) + ) + hidden_state = hidden_state[:, :, :slice_index] + hidden_state = hidden_state.reshape( + (batch_size, num_concurrent_media, num_tiles, num_patches, dim) + ) + + # Collect intermediate layer outputs from encoder output. + intermediate_hidden_states = ops.stack( + all_intermediate_hidden_states, axis=-1 + ) + + # These two operations are similar to: + # `intermediate_hidden_states + # = intermediate_hidden_states[..., self.intermediate_layers_indices]` + # We don't currently support slicing based on a provided list of indices + # yet. + selected_hidden_states_list = [ + intermediate_hidden_states[:, :, :, idx] + for idx in self.intermediate_layers_indices + ] + intermediate_hidden_states = ops.stack( + selected_hidden_states_list, axis=-1 + ) + + # Remove padding from intermediate hidden states. + # ('batch_size' * 'num_concurrent_media', 4128, 1280, 5) + intermediate_hidden_states = intermediate_hidden_states.reshape( + ( + Dim(batch_size) * num_concurrent_media, # 1 + num_tiles, # 4 + num_patches + num_padding_patches, # 1025 + 7 = 1032 + dim * len(self.intermediate_layers_indices), + ) + ) + + # (1, 4, 1032, 6400) -> (1, 4, 1025, 6400) + intermediate_hidden_states = intermediate_hidden_states[ + :, :, :slice_index + ] + + intermediate_hidden_states = intermediate_hidden_states.reshape( + ( + batch_size, + num_concurrent_media, + num_tiles, + num_patches, + dim * len(self.intermediate_layers_indices), + ) + ) + + # Concatenate final hidden state and intermediate hidden states. + hidden_state = ops.concat( + (hidden_state, intermediate_hidden_states), axis=-1 + ) + + # output_attentions: False, output_hidden_states: False in reference + # implementation, so these are just returned as `None`s. + return ( + hidden_state, # "last_hidden_state" + None, # "hidden_states" + None, # "attentions" + ) + + +def instantiate_vision_model( + dtype: DType, + image_size: int, + patch_size: int, + supported_aspect_ratios: list[list[int]], + hidden_size: int, + max_num_tiles: int, + num_channels: int, + norm_eps: float, + attention_heads: int, + num_hidden_layers: int, + intermediate_size: int, + num_global_layers: int, + intermediate_layers_indices: list[int], + weights: Weights, +) -> VisionModel: + # Shared variables. + num_patches = (image_size // patch_size) ** 2 + 1 + max_aspect_ratio_id = (len(supported_aspect_ratios)) + 1 + + gated_positional_embedding = PrecomputedPositionEmbedding( + image_size=image_size, + patch_size=patch_size, + hidden_size=hidden_size, + max_num_tiles=max_num_tiles, + gate=weights.vision_model.gated_positional_embedding.gate.allocate( + dtype, [1] + ), + embedding=weights.vision_model.gated_positional_embedding.embedding.allocate( + dtype, + [ + num_patches, + hidden_size, + ], + ), + tile_embedding=Embedding( + weights.vision_model.gated_positional_embedding.tile_embedding.weight.allocate( + dtype, + [ + max_aspect_ratio_id, + max_num_tiles * num_patches * hidden_size, + ], + ), + ), + ) + + pre_tile_positional_embedding = PrecomputedAspectRatioEmbedding( + max_num_tiles=max_num_tiles, + hidden_size=hidden_size, + gate=weights.vision_model.pre_tile_positional_embedding.gate.allocate( + dtype, [1] + ), + embedding=Embedding( + weights.vision_model.pre_tile_positional_embedding.embedding.weight.allocate( + dtype, + [max_aspect_ratio_id, max_num_tiles * hidden_size], + ), + ), + is_gated=True, + ) + + post_tile_positional_embedding = PrecomputedAspectRatioEmbedding( + max_num_tiles=max_num_tiles, + hidden_size=hidden_size, + gate=weights.vision_model.post_tile_positional_embedding.gate.allocate( + dtype, [1] + ), + embedding=Embedding( + weights.vision_model.post_tile_positional_embedding.embedding.weight.allocate( + dtype, + [ + max_aspect_ratio_id, + max_num_tiles * hidden_size, + ], + ), + ), + is_gated=True, + ) + + # patch_embedding filter has a shape of (1280, 3, 14, 14). + patch_embedding = VisionConv2D( + filter=weights.vision_model.patch_embedding.weight.allocate( + dtype, + [hidden_size, num_channels, patch_size, patch_size], + ), + stride=patch_size, + padding=(0, 0, 0, 0), + bias=None, + ) + + class_embedding = weights.vision_model.class_embedding.allocate( + dtype, + [hidden_size], + ) + + layernorm_pre = LayerNorm( + weights.vision_model.layernorm_pre.weight.allocate( + dtype, [hidden_size] + ), + bias=weights.vision_model.layernorm_pre.bias.allocate( + dtype, [hidden_size] + ), + eps=norm_eps, + ) + + layernorm_post = LayerNorm( + weights.vision_model.layernorm_post.weight.allocate( + dtype, [hidden_size] + ), + bias=weights.vision_model.layernorm_post.bias.allocate( + dtype, [hidden_size] + ), + eps=norm_eps, + ) + + transformer_encoder_layers: list[VisionEncoderLayer] = [] + + head_dim = hidden_size // attention_heads + + for index in range(num_hidden_layers): + curr_layer_weight = weights.vision_model.transformer.layers[index] + transformer_encoder_layers.append( + VisionEncoderLayer( + mlp=MLP( + Linear( + curr_layer_weight.mlp.fc1.weight.allocate( + dtype, + [intermediate_size, hidden_size], + ), + bias=curr_layer_weight.mlp.fc1.bias.allocate( + dtype, [intermediate_size] + ), + ), + Linear( + curr_layer_weight.mlp.fc2.weight.allocate( + dtype, + [hidden_size, intermediate_size], + ), + bias=curr_layer_weight.mlp.fc2.bias.allocate( + dtype, [hidden_size] + ), + ), + ), + input_layernorm=LayerNorm( + curr_layer_weight.input_layernorm.weight.allocate( + dtype, [hidden_size] + ), + bias=curr_layer_weight.input_layernorm.bias.allocate( + dtype, [hidden_size] + ), + eps=norm_eps, + ), + post_attention_layernorm=LayerNorm( + curr_layer_weight.post_attention_layernorm.weight.allocate( + dtype, [hidden_size] + ), + bias=curr_layer_weight.post_attention_layernorm.bias.allocate( + dtype, [hidden_size] + ), + eps=norm_eps, + ), + self_attn=Attention( + n_heads=attention_heads, + head_dim=head_dim, + wk=Linear( + curr_layer_weight.self_attn.k_proj.weight.allocate( + dtype, + [attention_heads * head_dim, hidden_size], + ), + bias=None, + ), + wv=Linear( + curr_layer_weight.self_attn.v_proj.weight.allocate( + dtype, + [attention_heads * head_dim, hidden_size], + ), + bias=None, + ), + wq=Linear( + curr_layer_weight.self_attn.q_proj.weight.allocate( + dtype, + [attention_heads * head_dim, hidden_size], + ), + bias=None, + ), + wo=Linear( + curr_layer_weight.self_attn.o_proj.weight.allocate( + dtype, + [hidden_size, attention_heads * head_dim], + ), + bias=None, + ), + ), + is_gated=False, + gate_attn=None, + gate_ffn=None, + ) + ) + transformer = VisionEncoder(transformer_encoder_layers) + + global_transformer_layers: list[VisionEncoderLayer] = [] + + for index in range(num_global_layers): + curr_layer_weight = weights.vision_model.global_transformer.layers[ + index + ] + + global_transformer_layers.append( + VisionEncoderLayer( + mlp=MLP( + Linear( + curr_layer_weight.mlp.fc1.weight.allocate( + dtype, + [intermediate_size, hidden_size], + ), + bias=curr_layer_weight.mlp.fc1.bias.allocate( + dtype, [intermediate_size] + ), + ), + Linear( + curr_layer_weight.mlp.fc2.weight.allocate( + dtype, + [hidden_size, intermediate_size], + ), + bias=curr_layer_weight.mlp.fc2.bias.allocate( + dtype, [hidden_size] + ), + ), + ), + input_layernorm=LayerNorm( + curr_layer_weight.input_layernorm.weight.allocate( + dtype, [hidden_size] + ), + bias=curr_layer_weight.input_layernorm.bias.allocate( + dtype, [hidden_size] + ), + eps=norm_eps, + ), + post_attention_layernorm=LayerNorm( + curr_layer_weight.post_attention_layernorm.weight.allocate( + dtype, [hidden_size] + ), + curr_layer_weight.post_attention_layernorm.bias.allocate( + dtype, [hidden_size] + ), + eps=norm_eps, + ), + self_attn=Attention( + n_heads=attention_heads, + head_dim=head_dim, + wk=Linear( + curr_layer_weight.self_attn.k_proj.weight.allocate( + dtype, + [hidden_size, attention_heads * head_dim], + ), + bias=None, + ), + wv=Linear( + curr_layer_weight.self_attn.v_proj.weight.allocate( + dtype, + [hidden_size, attention_heads * head_dim], + ), + bias=None, + ), + wq=Linear( + curr_layer_weight.self_attn.q_proj.weight.allocate( + dtype, + [hidden_size, attention_heads * head_dim], + ), + bias=None, + ), + wo=Linear( + curr_layer_weight.self_attn.o_proj.weight.allocate( + dtype, + [attention_heads * head_dim, hidden_size], + ), + bias=None, + ), + ), + is_gated=True, + gate_attn=curr_layer_weight.gate_attn.allocate(dtype, [1]), + gate_ffn=curr_layer_weight.gate_ffn.allocate(dtype, [1]), + ) + ) + global_transformer = VisionEncoder(global_transformer_layers) + + return VisionModel( + gated_positional_embedding=gated_positional_embedding, + pre_tile_positional_embedding=pre_tile_positional_embedding, + post_tile_positional_embedding=post_tile_positional_embedding, + patch_embedding=patch_embedding, + class_embedding=class_embedding, + layernorm_pre=layernorm_pre, + layernorm_post=layernorm_post, + transformer=transformer, + global_transformer=global_transformer, + dtype=dtype, + intermediate_layers_indices=intermediate_layers_indices, + num_patches=(image_size // patch_size) ** 2 + 1, + ) diff --git a/src/max/pipelines/architectures/mistral/README.md b/src/max/pipelines/architectures/mistral/README.md new file mode 100644 index 0000000000..4603761d44 --- /dev/null +++ b/src/max/pipelines/architectures/mistral/README.md @@ -0,0 +1,129 @@ +# Mistral NeMo + +**Language:** Python + +**API**: MAX Graph + +This pipeline provides optimized support for the `MistralForCausalLM` family +of large language models, as exemplified by the Mistral NeMo 12B text +completion model. The model itself has been constructed in Python +using the [MAX Graph API](https://docs.modular.com/max/graph/). + +The MAX Graph API provides an accessible interface to the construction of +flexible accelerated compute graphs, which are then optimized by the MAX +Engine's advanced graph compiler. This pipeline showcases how a large language +model can be fully defined using Python and MAX Graphs and then compiled for +optimal inference performance via the MAX Engine. + +## Model + +[Mistral NeMo](https://mistral.ai/news/mistral-nemo/) is an open source large +language model released by [Mistral AI](https://mistral.ai) in partnership +with NVIDIA. The weight checkpoints have been released under an Apache 2.0 +license. + +The default settings for this pipeline use the NeMo 12B set of pretrained +weights in the `bfloat16` encoding. + +## Usage + +The easiest way to try out this pipeline is with our Magic command-line tool. + +1. Install Magic on macOS and Ubuntu with this command: + + ```shell + curl -ssL https://magic.modular.com | bash + ``` + + Then run the source command that's printed in your terminal. + + To see the available commands, you can run `magic --help`. + [Learn more about Magic here](https://docs.modular.com/magic). + +2. Clone the MAX examples repository: + + If you don't already have a local clone of this repository, create one via: + + ```shell + git clone https://github.com/modular/max.git + ``` + + The following instructions assume that you're present within this pipeline's + directory, and you can change to it after cloning: + + ```shell + cd max/src/max/ + ``` + +3. Now run the Mistral text completion demo with the following command: + + ```shell + magic run mistral --prompt "I believe the meaning of life is" + ``` + +4. Host a chat completion endpoint via MAX Serve. + + MAX Serve provides functionality to host performant OpenAI compatible + endpoints using the FastAPI framework. + + You can configure the pipeline to be hosted by using the `--serve` argument. + For example: + + ```shell + magic run mistral --serve + ``` + + A request can be submitted via a cURL command. + + ```shell + curl -N http://localhost:8000/v1/chat/completions \ + -H "Content-Type: application/json" \ + -d '{ + "model": "mistralai/Mistral-Nemo-Instruct-2407", + "stream": true, + "messages": [ + {"role": "system", "content": "You are a helpful assistant."}, + {"role": "user", "content": "Who won the world series in 2020?"} + ] + }' + ``` + + Additionally, finetuned weights hosted on Hugging Face for any compatible + `MistralForCausalLM` model can be used with this optimized architecture + via the `serve` command: + + ```shell + magic run serve --model-path=mistralai/Ministral-8B-Instruct-2410 + ``` + +## Options + +The following command-line options are available to customize operation of the +pipeline: + +- `--max-length`: Controls the maximum length of the text sequence + (includes the input tokens). + (Default value: 512) +- `--max-new-tokens`: The maximum number of new tokens to generate. If a -1 + value is provided, the model will continue to generate tokens for the entire + context length. (Default value: -1) +- `--prompt`: The text prompt to use for further generation. +- `--quantization-encoding`: The encoding to use for a datatype that can be + quantized to a low bits per weight format. The options for quantized formats + will download and cache default weights, but `float32` requires the use of + `--weight-path` to specify locally downloaded full-precision weights for use + in the model. + Valid values: `bfloat16`, `float32`. + (Default value: `float32`). +- `--save-to-serialized-model-path`: If specified, writes the serialized model + to this path. +- `--serialized-model-path`: If specified, tries to load a serialized model + from this path. +- `--top-k`: Limits the sampling to the K most probable tokens. Default is 1. +- `--weight-path`: Overrides the default URL, and allows for an + already-downloaded pretrained weight file to be used with the model. +- `--max-batch-size`: Specifies the maximum batch size to be used. + Default is 1. +- `--devices`: Specifies the device(s) to use for the model. This can optionally + be "cpu", "gpu", or a comma-separated list of GPU ID(s) like "gpu-0,gpu-1". + Defaults to the first available GPU, or "cpu" if no GPUs are available. diff --git a/src/max/pipelines/architectures/mistral/__init__.py b/src/max/pipelines/architectures/mistral/__init__.py new file mode 100644 index 0000000000..ca84b22cc4 --- /dev/null +++ b/src/max/pipelines/architectures/mistral/__init__.py @@ -0,0 +1,19 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from max.pipelines import PIPELINE_REGISTRY + +from .arch import mistral_arch +from .model import MistralModel + +__all__ = ["MistralModel", "mistral_arch"] diff --git a/src/max/pipelines/architectures/mistral/arch.py b/src/max/pipelines/architectures/mistral/arch.py new file mode 100644 index 0000000000..fecc610b70 --- /dev/null +++ b/src/max/pipelines/architectures/mistral/arch.py @@ -0,0 +1,36 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from max.pipelines import ( + PipelineTask, + SupportedArchitecture, + SupportedEncoding, + TextTokenizer, + WeightsFormat, +) +from max.pipelines.kv_cache import KVCacheStrategy + +from .model import MistralModel + +mistral_arch = SupportedArchitecture( + name="MistralForCausalLM", + task=PipelineTask.TEXT_GENERATION, + example_repo_ids=["mistralai/Mistral-Nemo-Instruct-2407"], + default_encoding=SupportedEncoding.bfloat16, + supported_encodings={ + SupportedEncoding.bfloat16: [KVCacheStrategy.CONTINUOUS] + }, + pipeline_model=MistralModel, + tokenizer=TextTokenizer, + default_weights_format=WeightsFormat.safetensors, +) diff --git a/src/max/pipelines/architectures/mistral/graph.py b/src/max/pipelines/architectures/mistral/graph.py new file mode 100644 index 0000000000..57056f8fcd --- /dev/null +++ b/src/max/pipelines/architectures/mistral/graph.py @@ -0,0 +1,253 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # +"""Build a Mistral model via Graph API from Safetensor weights.""" + +import math + +from max.dtype import DType +from max.graph import Graph, TensorType, ops +from max.graph.weights import SafetensorWeights +from max.pipelines import PipelineConfig +from max.pipelines.kv_cache import ( + FetchContinuousBatchingKVCacheCollection, + KVCacheManager, + KVCacheParams, +) +from max.pipelines.nn import ( + MLP, + AttentionWithRope, + Embedding, + Linear, + OptimizedRotaryEmbedding, + RMSNorm, + Transformer, + TransformerBlock, +) + + +def feed_forward( + dtype: DType, + hidden_dim: int, + feed_forward_length: int, + weights: SafetensorWeights, +): + return MLP( + linear( + dtype, + feed_forward_length, + hidden_dim, + weights.gate_proj, + ), + linear( + dtype, + hidden_dim, + feed_forward_length, + weights.down_proj, + ), + linear( + dtype, + feed_forward_length, + hidden_dim, + weights.up_proj, + ), + ) + + +def linear( + dtype: DType, + in_features: int, + out_features: int, + weights: SafetensorWeights, +) -> Linear: + return Linear( + weights.weight.allocate(dtype, [in_features, out_features], None) + ) + + +def rms_norm(dims: int, eps: float, weights: SafetensorWeights) -> RMSNorm: + return RMSNorm(weights.weight.allocate(DType.bfloat16, [dims]), eps) + + +def embedding( + params: PipelineConfig, + vocab_size: int, + hidden_dim: int, + weights: SafetensorWeights, +): + return Embedding( + weights.weight.allocate( + params.dtype, + [vocab_size, hidden_dim], + ) + ) + + +def _attention_opaque( + kv_params: KVCacheParams, + params: PipelineConfig, + rope: OptimizedRotaryEmbedding, + weights: SafetensorWeights, + layer_idx: int, +): + kv_weight_dim = ( + params.huggingface_config.head_dim + * params.huggingface_config.num_key_value_heads + ) + + wq = weights.self_attn.q_proj.weight.allocate( + params.dtype, + [ + params.huggingface_config.num_attention_heads + * params.huggingface_config.head_dim, + params.huggingface_config.hidden_size, + ], + ) + wk = weights.self_attn.k_proj.weight.allocate( + params.dtype, + [kv_weight_dim, params.huggingface_config.hidden_size], + ) + wv = weights.self_attn.v_proj.weight.allocate( + params.dtype, + [kv_weight_dim, params.huggingface_config.hidden_size], + ) + wqkv = ops.concat((wq, wk, wv)) + + return AttentionWithRope( + n_heads=params.huggingface_config.num_attention_heads, + kv_params=kv_params, + wqkv=wqkv, + wo=linear( + params.dtype, + params.huggingface_config.hidden_size, + params.huggingface_config.num_attention_heads + * params.huggingface_config.head_dim, + weights.self_attn.o_proj, + ), + rope=rope, + layer_idx=layer_idx, # type: ignore + scale=math.sqrt(1 / kv_params.head_dim), + ) + + +def _transformer( + graph: Graph, + params: PipelineConfig, + weights: SafetensorWeights, + max_seq_len: int, + kv_params: KVCacheParams, +): + with graph: + rope = OptimizedRotaryEmbedding( + dim=params.huggingface_config.num_attention_heads + * params.huggingface_config.head_dim, + n_heads=params.huggingface_config.num_attention_heads, + theta=params.huggingface_config.rope_theta, + max_seq_len=max_seq_len, + rope_scaling=None, + interleaved=False, + ) + + layers = [ + TransformerBlock( + attention=_attention_opaque( + kv_params, + params, + rope, + weights.model.layers[i], + layer_idx=ops.constant(i, DType.uint32), # type: ignore + ), + mlp=feed_forward( + params.dtype, + params.huggingface_config.hidden_size, + params.huggingface_config.intermediate_size, + weights.model.layers[i].mlp, + ), + attention_norm=rms_norm( + params.huggingface_config.hidden_size, + params.huggingface_config.rms_norm_eps, + weights.model.layers[i].input_layernorm, + ), + mlp_norm=rms_norm( + params.huggingface_config.hidden_size, + params.huggingface_config.rms_norm_eps, + weights.model.layers[i].post_attention_layernorm, + ), + ) + for i in range(params.huggingface_config.num_hidden_layers) + ] + + embedding_layer = embedding( + params, + params.huggingface_config.vocab_size, + params.huggingface_config.hidden_size, + weights.model.embed_tokens, + ) + + output = linear( + params.dtype, + params.huggingface_config.vocab_size, + params.huggingface_config.hidden_size, + weights.lm_head, + ) + + kv_collection_cls = FetchContinuousBatchingKVCacheCollection + + return Transformer( + dim=params.huggingface_config.hidden_size, + n_heads=params.huggingface_config.num_attention_heads, + layers=layers, + norm=rms_norm( + params.huggingface_config.hidden_size, + params.huggingface_config.rms_norm_eps, + weights.model.norm, + ), + output=output, + embedding=embedding_layer, + kv_params=kv_params, + kv_collection_constructor=kv_collection_cls(kv_params), + ) + + +def _build_graph( + pipeline_config: PipelineConfig, + weights: SafetensorWeights, + max_seq_len: int, + kv_params: KVCacheParams, + kv_manager: KVCacheManager, +) -> Graph: + tokens_type = TensorType(DType.int64, shape=["total_seq_len"]) + input_row_offsets_type = TensorType( + DType.uint32, shape=["input_row_offsets_len"] + ) + + kv_cache_args = kv_manager.input_symbols()[0] + + with Graph( + "mistral", + input_types=[ + tokens_type, + input_row_offsets_type, + *kv_cache_args, + ], + ) as graph: + model = _transformer( + graph=graph, + params=pipeline_config, + weights=weights, + max_seq_len=max_seq_len, + kv_params=kv_params, + ) + tokens, input_row_offsets, *kv_cache = graph.inputs + outputs = model(tokens, kv_cache, input_row_offsets=input_row_offsets) + graph.output(*outputs) + return graph diff --git a/src/max/pipelines/architectures/mistral/model.py b/src/max/pipelines/architectures/mistral/model.py new file mode 100644 index 0000000000..69ba410ffa --- /dev/null +++ b/src/max/pipelines/architectures/mistral/model.py @@ -0,0 +1,254 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from __future__ import annotations + +import logging +import time +from typing import Sequence, cast + +import numpy as np +from max.driver import Device, Tensor +from max.engine import InferenceSession, Model +from max.graph.weights import SafetensorWeights +from max.pipelines import ( + ModelInputs, + ModelOutputs, + PipelineConfig, + PipelineModel, + TextContext, + upper_bounded_default, +) +from max.pipelines.kv_cache import ( + KVCacheInputs, + KVCacheManager, + KVCacheParams, + estimate_kv_cache_size, + load_kv_manager, +) + +from .graph import _build_graph + +logger = logging.getLogger("max.pipelines") + + +class MistralInputs(ModelInputs): + """A class representing inputs for the Mistral model. + + This class encapsulates the input tensors required for the Mistral model execution: + - input_tokens: A tensor containing the input token IDs + - input_row_offsets: A tensor containing the offsets for each row in the ragged input sequence + """ + + input_tokens: Tensor + input_row_offsets: Tensor + + def __init__( + self, + input_tokens: Tensor, + input_row_offsets: Tensor, + ) -> None: + self.input_tokens = input_tokens + self.input_row_offsets = input_row_offsets + + +class MistralModel(PipelineModel[TextContext]): + def __init__( + self, pipeline_config: PipelineConfig, session: InferenceSession + ) -> None: + super().__init__(pipeline_config, session) + self.model = self.load_model(session) + + def execute( + self, + model_inputs: ModelInputs, + kv_cache_inputs: KVCacheInputs | None = None, + ) -> ModelOutputs: + """Runs the graph.""" + model_inputs = cast(MistralInputs, model_inputs) + assert kv_cache_inputs is not None, ( + "Mistral has KV cache inputs, but none were provided" + ) + model_outputs = self.model.execute( + model_inputs.input_tokens, + model_inputs.input_row_offsets, + *kv_cache_inputs, + copy_inputs_to_device=False, + ) + assert isinstance(model_outputs[0], Tensor) + return ModelOutputs(next_token_logits=model_outputs[0]) + + def prepare_initial_token_inputs( + self, + context_batch: Sequence[TextContext], + ) -> MistralInputs: + # Get tokens and seq ids + tokens = [ctx.next_tokens for ctx in context_batch] + + # Get input_row_offsets: start and end position of each batch in the + # combined total_seq_len dimension. + input_row_offsets = Tensor.from_numpy( + np.cumsum( + [0] + [ctx.active_length for ctx in context_batch], + dtype=np.uint32, + ) + ).to(self.pipeline_config.devices[0]) + + # Create a ragged token vector of length: sum(len(t) for t in tokens). + next_tokens_batch = np.concatenate(tokens) + next_tokens_batch = Tensor.from_numpy(next_tokens_batch).to( + self.pipeline_config.devices[0] + ) + + return MistralInputs( + input_tokens=next_tokens_batch, + input_row_offsets=input_row_offsets, + ) + + def prepare_next_token_inputs( + self, + next_tokens: Tensor, + prev_model_inputs: ModelInputs, + ) -> MistralInputs: + prev_model_inputs = cast(MistralInputs, prev_model_inputs) + row_offsets_size = prev_model_inputs.input_row_offsets.shape[0] + next_row_offsets = self._input_row_offsets_prealloc[:row_offsets_size] + return MistralInputs( + input_tokens=next_tokens, + input_row_offsets=next_row_offsets, + ) + + @classmethod + def get_kv_params(cls, pipeline_config: PipelineConfig) -> KVCacheParams: + return KVCacheParams( + page_size=pipeline_config.kv_cache_page_size, + dtype=pipeline_config.cache_dtype, + n_kv_heads=pipeline_config.huggingface_config.num_key_value_heads, + head_dim=pipeline_config.huggingface_config.head_dim, + cache_strategy=pipeline_config.cache_strategy, + enable_prefix_caching=pipeline_config.enable_prefix_caching, + ) + + @classmethod + def get_num_layers(cls, pipeline_config: PipelineConfig) -> int: + return pipeline_config.huggingface_config.num_hidden_layers + + @classmethod + def calculate_max_seq_len(cls, pipeline_config: PipelineConfig) -> int: + try: + return upper_bounded_default( + upper_bound=pipeline_config.huggingface_config.max_position_embeddings, + default=pipeline_config.max_length, + ) + except ValueError as e: + msg = ( + "Unable to infer max_length for Mistral, the provided " + f"max_length ({pipeline_config.max_length}) exceeds the " + f"model's max_position_embeddings " + f"({pipeline_config.huggingface_config.max_position_embeddings})." + ) + raise ValueError(msg) from e + + def load_kv_manager( + self, + session: InferenceSession, + available_cache_memory: int, + ) -> KVCacheManager: + assert self.pipeline_config.devices, ( + "devices must be provided to load kv manager." + ) + return load_kv_manager( + params=self.get_kv_params(self.pipeline_config), + max_batch_size=self.pipeline_config.max_batch_size, + max_seq_len=self.calculate_max_seq_len(self.pipeline_config), + num_layers=self.pipeline_config.huggingface_config.num_hidden_layers, + devices=self.pipeline_config.devices, + available_cache_memory=available_cache_memory, + page_size=self.pipeline_config.kv_cache_page_size, + session=session, + ) + + @classmethod + def estimate_kv_cache_size( + cls, + pipeline_config: PipelineConfig, + available_cache_memory: int, + devices: list[Device], + ) -> int: + """Estimates the size of the kv cache in bytes.""" + assert devices, "devices must be provided to estimate kv cache size." + return estimate_kv_cache_size( + params=cls.get_kv_params(pipeline_config), + max_batch_size=pipeline_config.max_batch_size, + max_seq_len=cls.calculate_max_seq_len(pipeline_config), + num_layers=pipeline_config.huggingface_config.num_hidden_layers, + available_cache_memory=available_cache_memory, + devices=devices, + ) + + def load_model(self, session: InferenceSession) -> Model: + if self.pipeline_config.enable_echo: + msg = "Mistral model does not currently implement enable echo." + raise ValueError(msg) + + # Pre-allocate a buffer for input_row_offsets in multistep execution. + # We do this to avoid materializing and copying a buffer with each multistep step + assert self.pipeline_config.max_batch_size, ( + "Expected max_batch_size to be set" + ) + self._input_row_offsets_prealloc = Tensor.from_numpy( + np.arange(self.pipeline_config.max_batch_size + 1, dtype=np.uint32) + ).to(self.pipeline_config.devices[0]) + + self._weights = self.pipeline_config.load_weights() + + if not isinstance(self._weights, SafetensorWeights): + msg = "only safetensors weights are currently supported in Mistral models." + raise ValueError(msg) + + if serialized_path := self.pipeline_config.serialized_model_path: + # Hydrate all weights to be referenced by the serialized graph. + weights_registry = {} + for name, weight in self._weights.items(): + weights_registry[name] = weight.raw_tensor() + logger.info( + "Loading serialized model from ", serialized_path, "..." + ) + return session.load( + serialized_path, + weights_registry=weights_registry, + ) + else: + logger.info("Building and compiling model...") + before = time.perf_counter() + graph = _build_graph( + pipeline_config=self.pipeline_config, + weights=self._weights, + max_seq_len=self.calculate_max_seq_len(self.pipeline_config), + kv_params=self.get_kv_params(self.pipeline_config), + kv_manager=self.kv_manager, + ) + model = session.load( + graph, weights_registry=self._weights.allocated_weights + ) + after = time.perf_counter() + logger.info( + f"Building and compiling model took {after - before:.6f} seconds" + ) + if ( + export_path + := self.pipeline_config.save_to_serialized_model_path + ): + logger.info("Exporting serialized model to %s", export_path) + model._export_mef(export_path) + return model diff --git a/src/max/pipelines/architectures/mpnet/__init__.py b/src/max/pipelines/architectures/mpnet/__init__.py new file mode 100644 index 0000000000..b1252f1b47 --- /dev/null +++ b/src/max/pipelines/architectures/mpnet/__init__.py @@ -0,0 +1,16 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from .arch import mpnet_arch + +__all__ = ["mpnet_arch"] diff --git a/src/max/pipelines/architectures/mpnet/arch.py b/src/max/pipelines/architectures/mpnet/arch.py new file mode 100644 index 0000000000..9c124954a6 --- /dev/null +++ b/src/max/pipelines/architectures/mpnet/arch.py @@ -0,0 +1,38 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from max.pipelines import ( + PipelineTask, + SupportedArchitecture, + SupportedEncoding, + TextTokenizer, + WeightsFormat, +) + +from .model import MPNetPipelineModel + +mpnet_arch = SupportedArchitecture( + name="MPNetForMaskedLM", + task=PipelineTask.EMBEDDINGS_GENERATION, + example_repo_ids=[ + "sentence-transformers/all-mpnet-base-v2", + ], + default_encoding=SupportedEncoding.bfloat16, + supported_encodings={ + SupportedEncoding.float32: [], + SupportedEncoding.bfloat16: [], + }, + pipeline_model=MPNetPipelineModel, + tokenizer=TextTokenizer, + default_weights_format=WeightsFormat.safetensors, +) diff --git a/src/max/pipelines/architectures/mpnet/graph.py b/src/max/pipelines/architectures/mpnet/graph.py new file mode 100644 index 0000000000..89173e9064 --- /dev/null +++ b/src/max/pipelines/architectures/mpnet/graph.py @@ -0,0 +1,493 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # +from __future__ import annotations + +import math + +import numpy as np +from max.dtype import DType +from max.graph import Graph, TensorType, TensorValue, ops +from max.graph.quantization import QuantizationEncoding +from max.graph.weights import Weights +from max.pipelines import PipelineConfig +from max.pipelines.nn import Embedding, LayerNorm, Linear, Sequential +from max.pipelines.nn.layer import Layer + + +def _quantization_encoding( + pipeline_config: PipelineConfig, +) -> QuantizationEncoding | None: + if supported_encoding := pipeline_config.quantization_encoding: + return supported_encoding.quantization_encoding + return None + + +class MPNetEmbeddings(Layer): + """An embeddings layer that combines the tokens embeddings and positions + embeddings.""" + + def __init__(self, pipeline_config: PipelineConfig, weights: Weights): + config = self.config = pipeline_config.huggingface_config + self.word_embeddings = Embedding( + weights.word_embeddings.weight.allocate( + pipeline_config.dtype, + [ + config.vocab_size, + config.hidden_size, + ], + _quantization_encoding(pipeline_config), + ) + ) + self.position_embeddings = Embedding( + weights.position_embeddings.weight.allocate( + pipeline_config.dtype, + [ + config.max_position_embeddings, + config.hidden_size, + ], + ) + ) + self.layer_norm = LayerNorm( + weight=weights.LayerNorm.weight.allocate( + pipeline_config.dtype, + [config.hidden_size], + ), + bias=weights.LayerNorm.bias.allocate( + pipeline_config.dtype, [config.hidden_size] + ), + eps=config.layer_norm_eps, + ) + self.position_ids = weights.position_ids.allocate( + DType.int64, + [ + 1, + config.max_position_embeddings, + ], + ) + + def __call__( + self, + input_ids: TensorValue, + ) -> TensorValue: + position_ids = _create_position_ids_from_input_ids( + input_ids, self.config.pad_token_id + ) + inputs_embeds = self.word_embeddings(input_ids) + position_embeddings = self.position_embeddings(position_ids) + embeddings = inputs_embeds + position_embeddings + return self.layer_norm(embeddings) + + +def _create_position_ids_from_input_ids( + input_ids: TensorValue, padding_idx: int +) -> TensorValue: + mask = (input_ids != padding_idx).cast(DType.int64) + incremental_indices = ops.cumsum(mask, axis=1) * mask + return incremental_indices + padding_idx + + +class MPNetSelfAttention(Layer): + """Self-attention layer with position compensation.""" + + def __init__(self, pipeline_config: PipelineConfig, weights: Weights): + config = pipeline_config.huggingface_config + self.num_attention_heads = config.num_attention_heads + self.attention_head_size = int( + config.hidden_size / config.num_attention_heads + ) + self.all_head_size = self.num_attention_heads * self.attention_head_size + + self.q = Linear( + weights.q.weight.allocate( + pipeline_config.dtype, + [self.all_head_size, config.hidden_size], + _quantization_encoding(pipeline_config), + ), + bias=weights.q.bias.allocate( + pipeline_config.dtype, + [self.all_head_size], + _quantization_encoding(pipeline_config), + ), + ) + self.k = Linear( + weights.k.weight.allocate( + pipeline_config.dtype, + [self.all_head_size, config.hidden_size], + _quantization_encoding(pipeline_config), + ), + bias=weights.k.bias.allocate( + pipeline_config.dtype, + [self.all_head_size], + _quantization_encoding(pipeline_config), + ), + ) + self.v = Linear( + weights.v.weight.allocate( + pipeline_config.dtype, + [self.all_head_size, config.hidden_size], + _quantization_encoding(pipeline_config), + ), + bias=weights.v.bias.allocate( + pipeline_config.dtype, + [self.all_head_size], + _quantization_encoding(pipeline_config), + ), + ) + self.o = Linear( + weights.o.weight.allocate( + pipeline_config.dtype, + [config.hidden_size, config.hidden_size], + _quantization_encoding(pipeline_config), + ), + bias=weights.o.bias.allocate( + pipeline_config.dtype, + [config.hidden_size], + _quantization_encoding(pipeline_config), + ), + ) + + def transpose_for_scores(self, x: TensorValue) -> TensorValue: + new_x_shape = x.shape[:-1] + [ + self.num_attention_heads, + self.attention_head_size, + ] + x = ops.reshape(x, new_x_shape) + return ops.permute(x, [0, 2, 1, 3]) + + def __call__( + self, + hidden_states, + attention_mask: TensorValue, + position_bias: TensorValue, + ) -> TensorValue: + q = self.q(hidden_states) + k = self.k(hidden_states) + v = self.v(hidden_states) + + q = self.transpose_for_scores(q) + k = self.transpose_for_scores(k) + v = self.transpose_for_scores(v) + + # Take the dot product between "query" and "key" to get the raw attention scores. + attention_scores = q @ k.transpose(-1, -2) + attention_scores = attention_scores / math.sqrt( + self.attention_head_size + ) + + # Apply relative position embedding (precomputed in MPNetEncoder). + attention_scores += position_bias + + attention_scores = attention_scores + attention_mask + + # Normalize the attention scores to probabilities. + attention_probs = ops.softmax(attention_scores) + + c = attention_probs @ v + + c = ops.permute(c, [0, 2, 1, 3]) + new_c_shape = c.shape[:-2] + [self.all_head_size] + c = ops.reshape(c, new_c_shape) + + return self.o(c) + + +class MPNetAttention(Layer): + """Container for the attention and attention output layer norm layers.""" + + def __init__(self, pipeline_config: PipelineConfig, weights: Weights): + config = pipeline_config.huggingface_config + self.attn = MPNetSelfAttention(pipeline_config, weights.attn) + self.layer_norm = LayerNorm( + weight=weights.LayerNorm.weight.allocate( + DType.float32, [config.hidden_size] + ), + bias=weights.LayerNorm.bias.allocate( + DType.float32, [config.hidden_size] + ), + eps=config.layer_norm_eps, + ) + + def __call__( + self, + hidden_states: TensorValue, + attention_mask: TensorValue, + position_bias: TensorValue, + ) -> TensorValue: + attn_output = self.attn( + hidden_states, + attention_mask, + position_bias, + ) + return self.layer_norm(attn_output + hidden_states) + + +_ACTIVATIONS = { + "gelu": ops.gelu, + "relu": ops.relu, + "silu": ops.silu, + "sigmoid": ops.sigmoid, + "tanh": ops.tanh, +} + + +class MPNetIntermediate(Layer): + """Fully connected layer with an activation function.""" + + def __init__(self, pipeline_config: PipelineConfig, weights: Weights): + config = pipeline_config.huggingface_config + self.dense = Linear( + weights.dense.weight.allocate( + pipeline_config.dtype, + [config.intermediate_size, config.hidden_size], + _quantization_encoding(pipeline_config), + ), + bias=weights.dense.bias.allocate( + pipeline_config.dtype, + [config.intermediate_size], + _quantization_encoding(pipeline_config), + ), + ) + self.intermediate_act_fn = _ACTIVATIONS[config.hidden_act] + + def __call__(self, hidden_states: TensorValue) -> TensorValue: + hidden_states = self.dense(hidden_states) + hidden_states = self.intermediate_act_fn(hidden_states) + return hidden_states + + +class MPNetOutput(Layer): + """Layer that combines the outputs of the intermediate and attention layers.""" + + def __init__(self, pipeline_config: PipelineConfig, weights: Weights): + config = pipeline_config.huggingface_config + self.dense = Linear( + weights.dense.weight.allocate( + pipeline_config.dtype, + [config.hidden_size, config.intermediate_size], + _quantization_encoding(pipeline_config), + ), + bias=weights.dense.bias.allocate( + pipeline_config.dtype, + [config.hidden_size], + _quantization_encoding(pipeline_config), + ), + ) + self.layer_norm = LayerNorm( + weight=weights.LayerNorm.weight.allocate( + DType.float32, [config.hidden_size] + ), + bias=weights.LayerNorm.bias.allocate( + DType.float32, [config.hidden_size] + ), + eps=config.layer_norm_eps, + ) + + def __call__( + self, hidden_states: TensorValue, input_tensor: TensorValue + ) -> TensorValue: + hidden_states = self.dense(hidden_states) + hidden_states = self.layer_norm(hidden_states + input_tensor) + return hidden_states + + +class MPNetLayer(Layer): + """An Encoder layer block.""" + + def __init__(self, pipeline_config: PipelineConfig, weights: Weights): + self.attention = MPNetAttention(pipeline_config, weights.attention) + self.intermediate = MPNetIntermediate( + pipeline_config, weights.intermediate + ) + self.output = MPNetOutput(pipeline_config, weights.output) + + def __call__( + self, + hidden_states: TensorValue, + attention_mask: TensorValue, + position_bias: TensorValue, + ) -> TensorValue: + attention_output = self.attention( + hidden_states, + attention_mask, + position_bias=position_bias, + ) + intermediate_output = self.intermediate(attention_output) + layer_output = self.output(intermediate_output, attention_output) + return layer_output + + +class MPNetEncoder(Layer): + """Encoder that contains stacks of MPNetLayers.""" + + def __init__(self, pipeline_config: PipelineConfig, weights: Weights): + config = self.config = pipeline_config.huggingface_config + self.n_heads = config.num_attention_heads + num_hidden_layers = config.num_hidden_layers + self.layer = Sequential( + [ + MPNetLayer(pipeline_config, weights.layer[n]) + for n in range(num_hidden_layers) + ] + ) + self.relative_attention_bias = Embedding( + weights.relative_attention_bias.weight.allocate( + pipeline_config.dtype, + [ + config.relative_attention_num_buckets, + config.num_attention_heads, + ], + ) + ) + self.num_attention_heads = config.num_attention_heads + + def __call__( + self, + hidden_states: TensorValue, + attention_mask: TensorValue, + ) -> TensorValue: + position_bias = self.compute_position_bias(hidden_states) + for layer in self.layer.layers: + hidden_states = layer( + hidden_states, + attention_mask, + position_bias, + ) + return hidden_states + + def compute_position_bias(self, hidden_states: TensorValue) -> TensorValue: + shape = hidden_states.shape + bsz, qlen, klen = shape[0], shape[1], shape[1] + start = ops.constant(0, DType.int64) + step = ops.constant(1, DType.int64) + context_position = ops.range(start, qlen, step, qlen).cast(DType.int64)[ + :, None + ] + memory_position = ops.range(start, klen, step, klen).cast(DType.int64)[ + None, : + ] + relative_position = memory_position - context_position + rp_bucket = self.relative_position_bucket( + relative_position, + num_buckets=self.config.relative_attention_num_buckets, + ) + values = self.relative_attention_bias(rp_bucket) + values = ops.unsqueeze(ops.permute(values, [2, 0, 1]), 0) + values = ops.broadcast_to( + values, + [bsz, self.num_attention_heads, qlen, klen], + ) + return values + + @staticmethod + def relative_position_bucket( + relative_position: TensorValue, num_buckets=32, max_distance=128 + ) -> TensorValue: + n = -relative_position + + num_buckets //= 2 + ret = (n < 0).cast(DType.int64) * num_buckets + n = ops.abs(n) + + max_exact = num_buckets // 2 + is_small = n < max_exact + + val_if_large = max_exact + ops.cast( + ops.log(ops.cast(n, DType.float32) / max_exact) + / math.log(max_distance / max_exact) + * (num_buckets - max_exact), + DType.int64, + ) + + # Roundabout implementation of full_like(val_if_large, num_buckets - 1). + max_bucket = ops.broadcast_to( + ops.constant(num_buckets - 1, DType.int64), val_if_large.shape + ) + + val_if_large = ops.min(val_if_large, max_bucket) + ret += ops.select(is_small, n, val_if_large) + return ret + + +class MPNetModel(Layer): + """The MPNet encoder model. + + Based on the MPNetModel transformers implementation.""" + + def __init__( + self, + pipeline_config: PipelineConfig, + weights: Weights, + ): + self.embeddings = MPNetEmbeddings(pipeline_config, weights.embeddings) + self.encoder = MPNetEncoder(pipeline_config, weights.encoder) + self.pool_outputs = pipeline_config.pool_embeddings + + def __call__( + self, + input_ids: TensorValue, + attention_mask: TensorValue, + ) -> TensorValue: + embedding_output = self.embeddings( + input_ids=input_ids, + ) + extended_attention_mask = ops.reshape( + attention_mask, ("batch_size", 1, 1, "seq_len") + ) + extended_attention_mask = (1 - extended_attention_mask) * ops.constant( + np.finfo(np.float32).min, DType.float32 + ) + encoded_results = self.encoder( + embedding_output, + attention_mask=extended_attention_mask, + ) + if self.pool_outputs: + # Pool the embeddings. + # TODO(KERN-1550): Since GPU can only apply reductions along the + # inner-most dimension, transpose the mask so the seq_len is last. + encoded_results = encoded_results.transpose(1, 2) + input_mask_expanded = ops.broadcast_to( + ops.unsqueeze(attention_mask, 1), + ("batch_size", encoded_results.shape[1], "seq_len"), + ) + input_lengths = ops.max( + ops.sum(input_mask_expanded), ops.constant(1e-9, DType.float32) + ) + pooled_output = ( + ops.sum(encoded_results * input_mask_expanded) / input_lengths + ) + return ops.squeeze(pooled_output, 2) + else: + return encoded_results + + +def build_graph( + pipeline_config: PipelineConfig, + weights: Weights, +) -> Graph: + # Graph input types. + input_ids_type = TensorType(DType.int64, shape=["batch_size", "seq_len"]) + attention_mask_type = TensorType( + DType.float32, shape=["batch_size", "seq_len"] + ) + + mpnet = MPNetModel(pipeline_config, weights) + + # Initialize Graph. + return Graph( + "mpnet", + mpnet, + input_types=[ + input_ids_type, + attention_mask_type, + ], + ) diff --git a/src/max/pipelines/architectures/mpnet/model.py b/src/max/pipelines/architectures/mpnet/model.py new file mode 100644 index 0000000000..72180fe367 --- /dev/null +++ b/src/max/pipelines/architectures/mpnet/model.py @@ -0,0 +1,200 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # +"""Defines the MPNet pipeline model. + +Implementation is based on MPNetModel from the transformers library. +""" + +from __future__ import annotations + +import logging +import time +from collections.abc import Sequence +from typing import cast + +import numpy as np +from max.driver import Tensor +from max.engine import InferenceSession, Model +from max.pipelines import ( + ModelInputs, + ModelOutputs, + PipelineConfig, + PipelineModel, + TextContext, + upper_bounded_default, +) +from max.pipelines.dataprocessing import collate_batch +from max.pipelines.kv_cache import KVCacheInputs, KVCacheParams + +from .graph import build_graph + +logger = logging.getLogger("max.pipelines") + +PAD_VALUE = 1 + + +class MPNetInputs(ModelInputs): + """A class representing inputs for the MPNet model. + + This class encapsulates the input tensors required for the MPNet model execution: + - next_tokens_batch: A tensor containing the input token IDs + - attention_mask: A tensor containing the extended attention mask + """ + + next_tokens_batch: Tensor + attention_mask: Tensor + + def __init__( + self, + next_tokens_batch: Tensor, + attention_mask: Tensor, + ) -> None: + self.next_tokens_batch = next_tokens_batch + self.attention_mask = attention_mask + + +class MPNetPipelineModel(PipelineModel[TextContext]): + def __init__( + self, pipeline_config: PipelineConfig, session: InferenceSession + ) -> None: + super().__init__(pipeline_config, session) + self.model = self.load_model(session) + + @classmethod + def get_kv_params(cls, pipeline_config: PipelineConfig) -> KVCacheParams: + return KVCacheParams( + dtype=pipeline_config.cache_dtype, + n_kv_heads=pipeline_config.huggingface_config.num_attention_heads, + head_dim=( + pipeline_config.huggingface_config.hidden_size + // pipeline_config.huggingface_config.num_attention_heads + ), + cache_strategy=pipeline_config.cache_strategy, + enable_prefix_caching=pipeline_config.enable_prefix_caching, + ) + + @classmethod + def get_num_layers(cls, pipeline_config: PipelineConfig) -> int: + return pipeline_config.huggingface_config.num_hidden_layers + + @classmethod + def calculate_max_seq_len(cls, pipeline_config: PipelineConfig) -> int: + try: + return upper_bounded_default( + upper_bound=pipeline_config.huggingface_config.max_position_embeddings, + default=pipeline_config.max_length, + ) + except ValueError as e: + msg = ( + "Unable to infer max_length for MPNet, the provided " + f"max_length ({pipeline_config.max_length}) exceeds the " + f"model's max_position_embeddings " + f"({pipeline_config.huggingface_config.max_position_embeddings})." + ) + raise ValueError(msg) from e + + def execute( + self, + model_inputs: ModelInputs, + kv_cache_inputs: KVCacheInputs | None = None, + ) -> ModelOutputs: + model_inputs = cast(MPNetInputs, model_inputs) + assert kv_cache_inputs is None, "MPNet does not have KV cache inputs" + model_outputs = self.model.execute( + model_inputs.next_tokens_batch, + model_inputs.attention_mask, + copy_inputs_to_device=False, + ) + assert isinstance(model_outputs[0], Tensor) + return ModelOutputs(logits=model_outputs[0]) + + def prepare_initial_token_inputs( + self, + context_batch: Sequence[TextContext], + ) -> MPNetInputs: + # Get tokens and seq_ids. + tokens = [ctx.next_tokens for ctx in context_batch] + + # Pad tokens for the batch. + pad_value = getattr( + self.pipeline_config.huggingface_config, "pad_token_id", 1 + ) + next_tokens_batch, _ = collate_batch( + tokens, + pad_value=pad_value, + batch_size=len(tokens), + pad_to_multiple_of=self.pipeline_config.pad_to_multiple_of, + ) + + # Compute attention mask. + attention_mask = (next_tokens_batch != pad_value).astype(np.float32) + + return MPNetInputs( + next_tokens_batch=Tensor.from_numpy(next_tokens_batch).to( + self.pipeline_config.devices[0] + ), + attention_mask=Tensor.from_numpy(attention_mask).to( + self.pipeline_config.devices[0] + ), + ) + + def prepare_next_token_inputs( + self, + next_tokens: Tensor, + prev_model_inputs: ModelInputs, + ) -> MPNetInputs: + raise NotImplementedError( + "MPNet does not support preparing next tokens inputs." + ) + + def load_model( + self, + session: InferenceSession, + ) -> Model: + # Read in weights. + weights = self.pipeline_config.load_weights() + self._weights = weights + + if serialized_path := self.pipeline_config.serialized_model_path: + # Hydrate all weights to be referenced by the serialized path. + weights_registry = {} + for name, weight in self._weights.items(): + weights_registry[name] = weight.raw_tensor() + + logger.info("Loading serialized model from ", serialized_path) + + return session.load( + serialized_path, weights_registry=weights_registry + ) + + else: + logger.info("Building and compiling model...") + before = time.perf_counter() + graph = build_graph( + self.pipeline_config, + self._weights, + ) + model = session.load( + graph, weights_registry=self._weights.allocated_weights + ) + after = time.perf_counter() + logger.info( + f"Building and compiling model took {after - before:.6f} seconds" + ) + if ( + export_path + := self.pipeline_config.save_to_serialized_model_path + ): + logger.info("Exporting serialized model to %s", export_path) + model._export_mef(export_path) + return model diff --git a/src/max/pipelines/architectures/olmo/__init__.py b/src/max/pipelines/architectures/olmo/__init__.py new file mode 100644 index 0000000000..41fbdf80ac --- /dev/null +++ b/src/max/pipelines/architectures/olmo/__init__.py @@ -0,0 +1,16 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from .arch import olmo_arch + +__all__ = ["olmo_arch"] diff --git a/src/max/pipelines/architectures/olmo/arch.py b/src/max/pipelines/architectures/olmo/arch.py new file mode 100644 index 0000000000..b6047631c7 --- /dev/null +++ b/src/max/pipelines/architectures/olmo/arch.py @@ -0,0 +1,52 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from max.pipelines import ( + PipelineTask, + RopeType, + SupportedArchitecture, + SupportedEncoding, + TextTokenizer, + WeightsFormat, +) +from max.pipelines.kv_cache import KVCacheStrategy + +from ..llama3 import weight_adapters +from .model import OlmoModel + +olmo_arch = SupportedArchitecture( + name="OlmoForCausalLM", + task=PipelineTask.TEXT_GENERATION, + example_repo_ids=["allenai/OLMo-1B-hf", "allenai/OLMo-1B-0724-hf"], + default_weights_format=WeightsFormat.gguf, + default_encoding=SupportedEncoding.float32, + supported_encodings={ + SupportedEncoding.float32: [ + KVCacheStrategy.PAGED, + KVCacheStrategy.CONTINUOUS, + KVCacheStrategy.NAIVE, + ], + SupportedEncoding.bfloat16: [ + KVCacheStrategy.PAGED, + KVCacheStrategy.CONTINUOUS, + KVCacheStrategy.NAIVE, + ], + }, + pipeline_model=OlmoModel, + tokenizer=TextTokenizer, + rope_type=RopeType.normal, + weight_adapters={ + WeightsFormat.safetensors: weight_adapters.convert_safetensor_state_dict, + WeightsFormat.gguf: weight_adapters.convert_gguf_state_dict, + }, +) diff --git a/src/max/pipelines/architectures/olmo/model.py b/src/max/pipelines/architectures/olmo/model.py new file mode 100644 index 0000000000..5abe981ecf --- /dev/null +++ b/src/max/pipelines/architectures/olmo/model.py @@ -0,0 +1,32 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from __future__ import annotations + +from typing import Literal + +from max.engine import InferenceSession +from max.pipelines import PipelineConfig + +from ..llama3.model import LlamaModelBase + + +class OlmoModel(LlamaModelBase): + """Olmo pipeline model implementation.""" + + norm_method: Literal["rms_norm"] | Literal["layer_norm"] = "layer_norm" + + def __init__( + self, pipeline_config: PipelineConfig, session: InferenceSession + ) -> None: + super().__init__(pipeline_config, session) diff --git a/src/max/pipelines/architectures/phi3/__init__.py b/src/max/pipelines/architectures/phi3/__init__.py new file mode 100644 index 0000000000..577e2e1a5b --- /dev/null +++ b/src/max/pipelines/architectures/phi3/__init__.py @@ -0,0 +1,16 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from .arch import phi3_arch + +__all__ = ["phi3_arch"] diff --git a/src/max/pipelines/architectures/phi3/arch.py b/src/max/pipelines/architectures/phi3/arch.py new file mode 100644 index 0000000000..ad4bf4a656 --- /dev/null +++ b/src/max/pipelines/architectures/phi3/arch.py @@ -0,0 +1,52 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from max.pipelines import ( + PipelineTask, + RopeType, + SupportedArchitecture, + SupportedEncoding, + TextTokenizer, + WeightsFormat, +) +from max.pipelines.kv_cache import KVCacheStrategy + +from ..llama3 import weight_adapters +from .model import Phi3Model + +phi3_arch = SupportedArchitecture( + name="Phi3ForCausalLM", + task=PipelineTask.TEXT_GENERATION, + example_repo_ids=["microsoft/phi-4", "microsoft/Phi-3.5-mini-instruct"], + default_weights_format=WeightsFormat.gguf, + default_encoding=SupportedEncoding.bfloat16, + supported_encodings={ + SupportedEncoding.float32: [ + KVCacheStrategy.PAGED, + KVCacheStrategy.CONTINUOUS, + # KVCacheStrategy.NAIVE, # TODO(kathywu): Support naive caching for phi models + ], + SupportedEncoding.bfloat16: [ + KVCacheStrategy.PAGED, + KVCacheStrategy.CONTINUOUS, + # KVCacheStrategy.NAIVE, # TODO(kathywu): Support naive caching for phi models + ], + }, + pipeline_model=Phi3Model, + tokenizer=TextTokenizer, + rope_type=RopeType.normal, + weight_adapters={ + WeightsFormat.safetensors: weight_adapters.convert_safetensor_state_dict, + WeightsFormat.gguf: weight_adapters.convert_gguf_state_dict, + }, +) diff --git a/src/max/pipelines/architectures/phi3/model.py b/src/max/pipelines/architectures/phi3/model.py new file mode 100644 index 0000000000..494e8a53f9 --- /dev/null +++ b/src/max/pipelines/architectures/phi3/model.py @@ -0,0 +1,33 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from __future__ import annotations + +from typing import Literal + +from max.engine import InferenceSession +from max.pipelines import PipelineConfig + +from ..llama3.model import LlamaModelBase + + +class Phi3Model(LlamaModelBase): + """Phi 3 pipeline model implementation.""" + + norm_method: Literal["rms_norm"] | Literal["layer_norm"] = "rms_norm" + """Normalization layer.""" + + def __init__( + self, pipeline_config: PipelineConfig, session: InferenceSession + ) -> None: + super().__init__(pipeline_config, session) diff --git a/src/max/pipelines/architectures/pixtral/README.md b/src/max/pipelines/architectures/pixtral/README.md new file mode 100644 index 0000000000..4911c4ac85 --- /dev/null +++ b/src/max/pipelines/architectures/pixtral/README.md @@ -0,0 +1,134 @@ +# Pixtral + +**Language:** Python + +**API**: MAX Graph + +This pipeline provides optimized support for the +`LlavaForConditionalGeneration` family of multimodal models, as exemplified +by the Pixtral multimodal text generation model. The model itself has +been constructed in Python using the +[MAX Graph API](https://docs.modular.com/max/graph/). + +The MAX Graph API provides an accessible interface to the construction of +flexible accelerated compute graphs, which are then optimized by the MAX +Engine's advanced graph compiler. This pipeline showcases how a multimodal +model can be fully defined using Python and MAX Graphs and then compiled for +optimal inference performance via the MAX Engine. + +> [!NOTE] +> This pipeline is under active development, and while many layers have been +> implemented, the entire pipeline is not fully functional at present. + +## Model + +[Pixtral](https://mistral.ai/news/pixtral-12b/) +is an open source multimodal model released by Mistral AI. It handles both text +and image input, and allows for text generation based on those multimodal +inputs. The underlying architecture provides support for the broader +`LlavaForConditionalGeneration` family of models. + +The default settings for this pipeline use the 12B set of pretrained weights in +the `bfloat16` encoding. + +## Usage + +The easiest way to try out this pipeline is with our Magic command-line tool. + +1. Install Magic on macOS and Ubuntu with this command: + + ```shell + curl -ssL https://magic.modular.com | bash + ``` + + Then run the source command that's printed in your terminal. + + To see the available commands, you can run `magic --help`. + [Learn more about Magic here](https://docs.modular.com/magic). + +2. Clone the MAX examples repository: + + If you don't already have a local clone of this repository, create one via: + + ```shell + git clone https://github.com/modular/max.git + ``` + + The following instructions assume that you're present within this pipeline's + directory, and you can change to it after cloning: + + ```shell + cd max/src/max/pipelines + ``` + +3. Host a multimodal chat completion endpoint via MAX Serve. + + MAX Serve provides functionality to host performant OpenAI compatible + endpoints using the FastAPI framework. + + You can configure the pipeline to be hosted by using the `serve` command. + Weights hosted on Hugging Face for any compatible + `LlavaForConditionalGeneration` model can be used with this optimized + architecture. For example: + + ```shell + magic run serve --model-path mistral-community/pixtral-12b + ``` + + A request can be submitted via a cURL command. + + ```shell + curl -N http://localhost:8000/v1/chat/completions \ + -H "Content-Type: application/json" \ + -d '{ + "model": "mistral-community/pixtral-12b", + "stream": true, + "messages": [ + {"role": "system", "content": "You are a helpful assistant."}, + {"role": "user", "content": [ + {"type": "text", "text": "What is in this image?"}, + {"type": "image_url", "image_url": {"url": "https://upload.wikimedia.org/wikipedia/commons/thumb/d/dd/Gfp-wisconsin-madison-the-nature-boardwalk.jpg/2560px-Gfp-wisconsin-madison-the-nature-boardwalk.jpg"}} + ]} + ] + }' + ``` + +## Options + +The following command-line options are available to customize operation of the +pipeline: + +- `--model-path`: Specify the repository ID of a Hugging Face model + repository to use. This is used to load tokenizers, architectures and model + weights. +- `--force-download`: Specify whether to force a download of configuration + files and weights even if they already exist in the local cache. Set this + if you want to ensure you have the correct version of the model. +- `--max-batch-size`: Specifies the maximum batch size to be used. + Default is 1. +- `--max-ce-batch-size`: Set the maximum cache size reserved for a single + context encoding batch. The effective limit will be the lesser of this value + and `max-cache-batch-size`. + Default is 32. +- `--max-length`: Controls the maximum length of the text sequence (includes the + input tokens). Defaults to huggingface model config's max sequence length. +- `--max-new-tokens`: The maximum number of new tokens to generate. If a -1 + value is provided, the model will continue to generate tokens for the entire + context length. (Default value: -1) +- `--quantization-encoding`: The encoding to use for a datatype that can be + quantized to a low bits per weight format. + Valid values: `q4_0`, `q4_k`, `q6_k`, `bfloat16`, `float32`. + (Default value: `bfloat16`). +- `--save-to-serialized-model-path`: If specified, writes the serialized model + to this path. +- `--serialized-model-path`: If specified, tries to load a serialized model + from this path. +- `--top-k`: Limits the sampling to the K most probable tokens. Default is 1. +- `--trust-remote-code`: Indicate whether to allow custom modeling files from + Hugging Face repositories. Set this to true with caution, as it may + introduce security risks. +- `--weight-path`: Overrides the default URL, and allows for an + already-downloaded pretrained weight file to be used with the model. +- `--devices`: Specifies the device(s) to use for the model. This can optionally + be "cpu", "gpu", or a comma-separated list of GPU ID(s) like "gpu-0,gpu-1". + Defaults to the first available GPU, or "cpu" if no GPUs are available. diff --git a/src/max/pipelines/architectures/pixtral/__init__.py b/src/max/pipelines/architectures/pixtral/__init__.py new file mode 100644 index 0000000000..06f1d43e25 --- /dev/null +++ b/src/max/pipelines/architectures/pixtral/__init__.py @@ -0,0 +1,16 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from .arch import pixtral_arch + +__all__ = ["pixtral_arch"] diff --git a/src/max/pipelines/architectures/pixtral/arch.py b/src/max/pipelines/architectures/pixtral/arch.py new file mode 100644 index 0000000000..580d90e126 --- /dev/null +++ b/src/max/pipelines/architectures/pixtral/arch.py @@ -0,0 +1,39 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from max.pipelines import ( + PipelineTask, + SupportedArchitecture, + SupportedEncoding, + TextAndVisionTokenizer, + WeightsFormat, +) +from max.pipelines.kv_cache import KVCacheStrategy + +from .pixtral import PixtralModel + +pixtral_arch = SupportedArchitecture( + name="LlavaForConditionalGeneration", + task=PipelineTask.TEXT_GENERATION, + example_repo_ids=["mistral-community/pixtral-12b"], + default_encoding=SupportedEncoding.bfloat16, + supported_encodings={ + SupportedEncoding.bfloat16: [ + KVCacheStrategy.PAGED, + KVCacheStrategy.CONTINUOUS, + ], + }, + pipeline_model=PixtralModel, + tokenizer=TextAndVisionTokenizer, + default_weights_format=WeightsFormat.safetensors, +) diff --git a/src/max/pipelines/architectures/pixtral/llava/__init__.py b/src/max/pipelines/architectures/pixtral/llava/__init__.py new file mode 100644 index 0000000000..aae087fcca --- /dev/null +++ b/src/max/pipelines/architectures/pixtral/llava/__init__.py @@ -0,0 +1,14 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +"""Llava Code layer modules.""" diff --git a/src/max/pipelines/architectures/pixtral/llava/llava.py b/src/max/pipelines/architectures/pixtral/llava/llava.py new file mode 100644 index 0000000000..e6c5fe0dd5 --- /dev/null +++ b/src/max/pipelines/architectures/pixtral/llava/llava.py @@ -0,0 +1,178 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from dataclasses import dataclass + +from max.graph import TensorValue, TensorValueLike, ops +from max.pipelines.architectures.pixtral.vision_encoder.vision_encoder import ( + VisionEncoder, +) +from max.pipelines.nn.layer import Layer + +from .llava_decoder import Transformer +from .llava_projector import LlavaMultiModalConnector + + +@dataclass +class LlavaConditionalGeneration(Layer): + """The LLAVA model which consists of a vision encoder and a language model. + + image_token_index: a specific token index used to denote images in input_ids. + """ + + vision_encoder: VisionEncoder + multi_modal_projector: LlavaMultiModalConnector + language_model: Transformer + vocab_size: int + image_token_index: int = 10 + vision_feature_layer: int = -1 + vision_feature_select_strategy: str = "full" + image_seq_length: int = 1 + + # TODO: change pixel_values type to List[TensorValue] to support multiple images. + def __call__( + self, + input_ids: TensorValueLike, + pixel_values: TensorValueLike, + attention_mask: TensorValueLike, + kv_cache_inputs: tuple[ + TensorValue, TensorValue, TensorValue, TensorValue + ], + **kwargs, + ) -> tuple[TensorValue, ...]: + """ + Args: + input_ids (ragged `TensorValue` of shape `(batch_size * sequence_length for each batch)`): + Indices of input sequence tokens in the vocabulary. Can be obtained from language model tokenizer. + input_ids[i] is a sequence of token ids (indices) in sequence i. Expanding inputs for + image tokens in LLaVa should be done in processing. Each image is represented in the + input_ids sequence by a sequence of patches that have index(id) = self.image_token_index. + The maximum number of image tokens in one sequence (prompt) = + (input_ids == self.image_token_index).sum(1).max()) + Padding will be ignored by default should you provide it. + pixel_values (list`TensorValue` of length batch_size + The tensors corresponding to the input image are of shape `(image_height, image_width, num_channels)): + Pixel values can be obtained using ImageProcessor. + """ + # inputs_embeds shape (total_sequence_length=text_and_image_tokens_length for all seqs, + # language_model_hidden_dim) + inputs_embeds = self.language_model.embedding(input_ids) + + # Replace image place-holders in inputs_embeds with image embeddings. + # Obtain image embeddings from the vision encoder and project it to text embeddings space. + # Output shape = (num_images, num_patches_in_image, language_model_hidden_dim) + # TODO(AIPIPE-320): If input pixel_values is a list of images, don't wrap it in a list. + image_embeds = self.multi_modal_projector( + self.vision_encoder( + imgs=[pixel_values], attention_mask=attention_mask + ) + ) + image_embeds = ops.cast(image_embeds, inputs_embeds.dtype) + special_image_mask = ops.broadcast_to( + ops.unsqueeze((input_ids == self.image_token_index), -1), + inputs_embeds.shape, + ) + inputs_embeds = ops.masked_scatter( + inputs_embeds, special_image_mask, image_embeds + ) + + logits = self.language_model(inputs_embeds, kv_cache_inputs, **kwargs) + + return logits + + +@dataclass +class LlavaVisionEncoder(Layer): + """The LLAVA model which consists of a vision encoder and a language model. + + image_token_index: a specific token index used to denote images + """ + + vision_encoder: VisionEncoder + multi_modal_projector: LlavaMultiModalConnector + + # TODO: change pixel_values type to List[TensorValue] to support multiple images. + def __call__( + self, + pixel_values: TensorValueLike, + attention_mask: TensorValueLike, + **kwargs, + ) -> TensorValue: + """ + Args: + pixel_values (list`TensorValue` of length batch_size + The tensors corresponding to the input image are of shape `(image_height, image_width, num_channels)): + Pixel values can be obtained using ImageProcessor. + """ + # Replace image place-holders in inputs_embeds with image embeddings. + # Obtain image embeddings from the vision encoder and project it to text embeddings space. + # Output shape = (num_images, num_patches_in_image, language_model_hidden_dim) + # TODO(AIPIPE-320): If input pixel_values is a list of images, don't wrap it in a list. + return self.multi_modal_projector( + self.vision_encoder( + imgs=[pixel_values], attention_mask=attention_mask + ) + ) + + +@dataclass +class LlavaConditionalGenerationTextOnly(Layer): + """The LLAVA model which consists of a vision encoder and a language model. + + Because flow control is not added to the graph API yet. We have to create 2 llava models. + + image_token_index: a specific token index used to denote images + """ + + language_model: Transformer + vocab_size: int + image_token_index: int = 10 + + def __call__( + self, + input_ids: TensorValueLike, + image_embeds: TensorValue, + kv_cache_inputs: tuple[ + TensorValue, TensorValue, TensorValue, TensorValue + ], + **kwargs, + ) -> tuple[TensorValue, ...]: + """ + Args: + input_ids (ragged `TensorValue` of shape `(batch_size * sequence_length for each batch)`): + Indices of input sequence tokens in the vocabulary. Can be obtained from language model tokenizer. + input_ids[i] is a sequence of token ids (indices) in sequence i. Expanding inputs for + image tokens in LLaVa should be done in processing. Each image is represented in the + input_ids sequence by a sequence of patches that have index(id) = self.image_token_index. + The maximum number of image tokens in one sequence (prompt) = + (input_ids == self.image_token_index).sum(1).max()) + Padding will be ignored by default should you provide it. + inputs_embeds: + Embeddings of pixel_values generated by the vision encoder and projected to the + embedding space of the language model. + """ + # inputs_embeds shape (total_sequence_length=text_and_image_tokens_length for all seqs, + # language_model_hidden_dim) + inputs_embeds = self.language_model.embedding(input_ids) + + image_embeds = ops.cast(image_embeds, inputs_embeds.dtype) + special_image_mask = ops.broadcast_to( + ops.unsqueeze((input_ids == self.image_token_index), -1), + inputs_embeds.shape, + ) + inputs_embeds = ops.masked_scatter( + inputs_embeds, special_image_mask, image_embeds + ) + logits = self.language_model(inputs_embeds, kv_cache_inputs, **kwargs) + + return logits diff --git a/src/max/pipelines/architectures/pixtral/llava/llava_decoder.py b/src/max/pipelines/architectures/pixtral/llava/llava_decoder.py new file mode 100644 index 0000000000..3e4c1c4c8e --- /dev/null +++ b/src/max/pipelines/architectures/pixtral/llava/llava_decoder.py @@ -0,0 +1,128 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from dataclasses import dataclass +from typing import Union + +from max.dtype import DType +from max.graph import TensorValue, TensorValueLike, ops +from max.pipelines.kv_cache import ( + FetchContinuousBatchingKVCacheCollection, + FetchPagedKVCacheCollection, + KVCacheParams, +) +from max.pipelines.nn import ( + Embedding, + LayerNorm, + Linear, + RMSNorm, + TransformerBlock, +) +from max.pipelines.nn.layer import Layer + + +@dataclass +class Transformer(Layer): + """Transformer model consisting for TransformerBlock layers. + + The differences between this transformer and the transformer in nn: + + - It takes as input the token embeddings rather than the token ids. + - It skips the embedding generation (first step in nn.Transformer). + + TODO(AIPIPE-273): Once we have mo.if, we can update nn.Transformer + to only generate embeddings if token ids are passed. That would + eliminate the need for this class. + """ + + dim: int + n_heads: int + layers: list[TransformerBlock] + norm: Union[RMSNorm, LayerNorm] + output: Linear + embedding: Embedding + kv_params: KVCacheParams + kv_collection_constructor: Union[ + FetchContinuousBatchingKVCacheCollection, FetchPagedKVCacheCollection + ] + all_logits: bool = False + + def __call__( + self, + embeds: TensorValue, + kv_cache_inputs: tuple[ + TensorValue, TensorValue, TensorValue, TensorValue + ], + **kwargs, + ) -> tuple[TensorValue, ...]: + """Transformer model consisting of TransformerBlock layers. + + Args: + embeds: embeddings of the sequence of text tokens and possibly images. + shape = [batch_size, n_patches, hidden_dim] + kv_cache_inputs: A tuple of 4 tensor values. In the case of paged attention, + (blocks, cache_lengths, lookup_table, is_cache_empty). In the case of + continuous attention, (blocks, cache_lengths, lookup_table, max_lengths). + """ + h = embeds + + # Construct a kv cache for use downstream. + kv_collection = self.kv_collection_constructor(*kv_cache_inputs) + + for _, layer in enumerate(self.layers): + h = layer(h, kv_collection, **kwargs) + + if self.all_logits: + # When echo is enabled, the logits of the input tokens are + # returned. + logits = ops.cast(self.output(self.norm(h)), DType.float32) + if "input_row_offsets" in kwargs: + # For ragged tensors gather the last tokens from packed dim 0. + input_row_offsets: TensorValueLike = kwargs["input_row_offsets"] + last_token_indices = input_row_offsets[1:] - 1 # type: ignore + last_token_logits = ops.gather( + logits, last_token_indices, axis=0 + ) + else: + # For padded tensors, use `gather_nd`. + # Unsqueeze since `gather_nd` expects a static last dim. + valid_lengths: TensorValueLike = kwargs["valid_lengths"] + last_token_logits = ops.gather_nd( + logits, + indices=ops.unsqueeze(valid_lengths - 1, -1), # type: ignore + batch_dims=1, + ) + return (last_token_logits, logits) + else: + # Otherwise, only return the logits for the last non-pad token + # (right-padded). + if "input_row_offsets" in kwargs: + # For ragged tensors gather the last tokens from packed dim 0. + input_row_offsets = kwargs["input_row_offsets"] + last_token_indices = input_row_offsets[1:] - 1 # type: ignore + # Should be: last_token = h[last_token_indices] + last_token = ops.gather(h, last_token_indices, axis=0) + else: + # For padded tensors, use `gather_nd`. + # Unsqueeze since `gather_nd` expects a static last dim. + valid_lengths = kwargs["valid_lengths"] + last_token = ops.gather_nd( + h, + indices=ops.unsqueeze(valid_lengths - 1, -1), # type: ignore + batch_dims=1, + ) + + # Always return float32 logits, no matter the activation type + return ( + ops.cast(self.output(self.norm(last_token)), DType.float32), + ) diff --git a/src/max/pipelines/architectures/pixtral/llava/llava_projector.py b/src/max/pipelines/architectures/pixtral/llava/llava_projector.py new file mode 100644 index 0000000000..c75c0adabd --- /dev/null +++ b/src/max/pipelines/architectures/pixtral/llava/llava_projector.py @@ -0,0 +1,34 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + + +from dataclasses import dataclass + +from max.graph import TensorValue, ops +from max.pipelines.nn.layer import Layer +from max.pipelines.nn.linear import Linear + + +@dataclass +class LlavaMultiModalConnector(Layer): + """ + Simple multi-layer cross-modal connector to connect image features into the + text token embedding space. + Uses Gelu activation function. + """ + + linear_1: Linear + linear_2: Linear + + def __call__(self, x: TensorValue) -> TensorValue: + return self.linear_2(ops.gelu(self.linear_1(x))) diff --git a/src/max/pipelines/architectures/pixtral/model/graph.py b/src/max/pipelines/architectures/pixtral/model/graph.py new file mode 100644 index 0000000000..cebc6bab2a --- /dev/null +++ b/src/max/pipelines/architectures/pixtral/model/graph.py @@ -0,0 +1,311 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from max.dtype import DType +from max.graph import Graph, TensorType +from max.graph.weights import SafetensorWeights +from max.pipelines import PipelineConfig +from max.pipelines.kv_cache import KVCacheManager, KVCacheParams +from max.pipelines.nn import Linear + +from ..llava.llava import ( + LlavaConditionalGeneration, + LlavaConditionalGenerationTextOnly, + LlavaVisionEncoder, +) +from ..llava.llava_projector import LlavaMultiModalConnector +from ..vision_encoder.graph import _vision_encoder +from .mistral_graph import _transformer + + +def _linear( + dtype: DType, + in_features: int, + out_features: int, + weights: SafetensorWeights, +) -> Linear: + """Unlike the vision encoder's version, this linear layer has a bias. + This linear layer is used by the LlavaMultiModalConnector + """ + return Linear( + weights.weight.allocate(dtype, [in_features, out_features], None), + bias=weights.bias.allocate(dtype, [in_features], None), + ) + + +def _multi_modal_projector( + dtype: DType, + pipeline_config: PipelineConfig, + weights: SafetensorWeights, +) -> LlavaMultiModalConnector: + """Connects the vision encoder to the text decoder. + This MLP projects the patch embeddings to the text-encoder's embeddings space. + Input shape: + Output shape: + """ + return LlavaMultiModalConnector( + _linear( + dtype, + pipeline_config.huggingface_config.text_config.hidden_size, + pipeline_config.huggingface_config.vision_config.hidden_size, + weights.linear_1, + ), + _linear( + dtype, + pipeline_config.huggingface_config.text_config.hidden_size, + pipeline_config.huggingface_config.text_config.hidden_size, + weights.linear_2, + ), + ) + + +def _llava_vision_encoder_and_projector( + graph: Graph, + pipeline_config: PipelineConfig, + weights: SafetensorWeights, +) -> LlavaVisionEncoder: + # TODO(AIPIPE-273): Once we have mo.if, use this version of Llava rather than creating 2 graphs + vision_encoder = _vision_encoder(graph, pipeline_config, weights) + multi_modal_projector = _multi_modal_projector( + pipeline_config.dtype, pipeline_config, weights.multi_modal_projector + ) + return LlavaVisionEncoder( + vision_encoder=vision_encoder, + multi_modal_projector=multi_modal_projector, + ) + + +def _llava_decoder( + graph: Graph, + pipeline_config: PipelineConfig, + weights: SafetensorWeights, + max_seq_len: int, + kv_params: KVCacheParams, +) -> LlavaConditionalGenerationTextOnly: + # Weights of pixtral decoder have the same names and shapes as weights of mistral. + language_model = _transformer( + graph=graph, + params=pipeline_config, + weights=weights, + max_seq_len=max_seq_len, + kv_params=kv_params, + ) + + return LlavaConditionalGenerationTextOnly( + language_model=language_model, + vocab_size=pipeline_config.huggingface_config.text_config.vocab_size, + image_token_index=pipeline_config.huggingface_config.image_token_index, + ) + + +def _llava( + graph: Graph, + pipeline_config: PipelineConfig, + weights: SafetensorWeights, + max_seq_len: int, + kv_params: KVCacheParams, +) -> LlavaConditionalGeneration: + # TODO: Once we have mo.if, use this version of Llava rather than creating 2 graphs + vision_encoder = _vision_encoder(graph, pipeline_config, weights) + multi_modal_projector = _multi_modal_projector( + dtype=pipeline_config.dtype, + pipeline_config=pipeline_config, + weights=weights.multi_modal_projector, + ) + # Weights of pixtral have the same names and shapes as weights of mistral. + language_model = _transformer( + graph=graph, + params=pipeline_config, + weights=weights, + max_seq_len=max_seq_len, + kv_params=kv_params, + ) + + return LlavaConditionalGeneration( + vision_encoder=vision_encoder, + multi_modal_projector=multi_modal_projector, + language_model=language_model, + vocab_size=pipeline_config.huggingface_config.text_config.vocab_size, + image_token_index=pipeline_config.huggingface_config.image_token_index, + vision_feature_layer=pipeline_config.huggingface_config.vision_feature_layer, + vision_feature_select_strategy=pipeline_config.huggingface_config.vision_feature_select_strategy, + image_seq_length=pipeline_config.huggingface_config.image_seq_length, + ) + + +def _build_graph( + pipeline_config: PipelineConfig, + weights: SafetensorWeights, + max_seq_len: int, + kv_params: KVCacheParams, + kv_manager: KVCacheManager, +) -> Graph: + # TODO: Make this work for multiple devices. Now getting the types for device [0] + kv_cache_types = kv_manager.input_symbols()[0] + + input_ids_type = TensorType( + DType.int64, + shape=["total_seq_len"], + ) + # TODO: should be changed to add "batch_size", "n_images" dims when working with multiple images + pixel_values_type = TensorType( + DType.float32, + shape=["image_height", "image_width", "num_channels"], + ) + + attention_mask_type = TensorType( + DType.float32, + shape=["batch_size", 1, "num_patches", "num_patches"], + ) + + # Type of start and end position of each batch in the combined total_seq_len dimension. + input_row_offsets_type = TensorType( + DType.uint32, shape=["input_row_offsets_len"] + ) + + # Initialize Graph. + with Graph( + "pixtral", + input_types=[ + input_ids_type, + pixel_values_type, + attention_mask_type, + input_row_offsets_type, + *kv_cache_types, + ], + ) as graph: + model = _llava( + graph=graph, + pipeline_config=pipeline_config, + weights=weights, + max_seq_len=max_seq_len, + kv_params=kv_params, + ) + ( + input_ids, + pixel_values, + attention_mask, + input_row_offsets, + *kv_cache_inputs, + ) = graph.inputs + outputs = model( + input_ids=input_ids.tensor, + pixel_values=pixel_values.tensor, + attention_mask=attention_mask.tensor, + kv_cache_inputs=kv_cache_inputs, # type: ignore + input_row_offsets=input_row_offsets, + ) + graph.output(*outputs) + return graph + + +def _build_vision_graph( + pipeline_config: PipelineConfig, + weights: SafetensorWeights, +) -> Graph: + # Graph input types. + pixel_values_type = TensorType( + DType.float32, + shape=["image_height", "image_width", "num_channels"], + ) + + attention_mask_type = TensorType( + DType.float32, + shape=["batch_size", 1, "num_patches", "num_patches"], + ) + + # Initialize Graph. + with Graph( + "pixtral_vision_encoder", + input_types=[ + pixel_values_type, + attention_mask_type, + ], + ) as graph: + model = _llava_vision_encoder_and_projector( + graph, pipeline_config, weights + ) + ( + pixel_values, + attention_mask, + ) = graph.inputs + outputs = model( + pixel_values=pixel_values.tensor, + attention_mask=attention_mask.tensor, + ) + graph.output(outputs) + return graph + + +def _build_text_graph( + pipeline_config: PipelineConfig, + weights: SafetensorWeights, + max_seq_len: int, + kv_params: KVCacheParams, + kv_manager: KVCacheManager, +) -> Graph: + # TODO: Make this work for multiple devices. Now getting the types for device [0] + kv_cache_types = kv_manager.input_symbols()[0] + + input_ids_type = TensorType( + DType.int64, + shape=["total_seq_len"], + ) + + # Type of start and end position of each batch in the combined total_seq_len dimension. + input_row_offsets_type = TensorType( + DType.uint32, shape=["input_row_offsets_len"] + ) + + # num_images, num_patches_in_image, language_model_hidden_dim + image_embeddings_type = TensorType( + pipeline_config.dtype, + shape=[ + # TODO(bduke): fix algebraic dim creation outside of graph contexts. + "num_images", + "num_patches_in_image", + pipeline_config.huggingface_config.text_config.hidden_size, + ], + ) + + # Initialize Graph. + with Graph( + "pixtral", + input_types=[ + input_ids_type, + image_embeddings_type, + input_row_offsets_type, + *kv_cache_types, + ], + ) as graph: + model = _llava_decoder( + graph=graph, + pipeline_config=pipeline_config, + weights=weights, + max_seq_len=max_seq_len, + kv_params=kv_params, + ) + ( + input_ids, + image_embeds, + input_row_offsets, + *kv_cache_inputs, + ) = graph.inputs + outputs = model( + input_ids=input_ids.tensor, + image_embeds=image_embeds.tensor, + kv_cache_inputs=kv_cache_inputs, # type: ignore + input_row_offsets=input_row_offsets, + ) + graph.output(*outputs) + return graph diff --git a/src/max/pipelines/architectures/pixtral/model/mistral_graph.py b/src/max/pipelines/architectures/pixtral/model/mistral_graph.py new file mode 100644 index 0000000000..855e94614e --- /dev/null +++ b/src/max/pipelines/architectures/pixtral/model/mistral_graph.py @@ -0,0 +1,236 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # +"""Build a Mistral model via Graph API from Safetensor weights.""" + +import math +from typing import Union + +from max.dtype import DType +from max.graph import Graph, ops +from max.graph.weights import SafetensorWeights +from max.pipelines import PipelineConfig +from max.pipelines.kv_cache import ( + FetchContinuousBatchingKVCacheCollection, + FetchPagedKVCacheCollection, + KVCacheParams, + KVCacheStrategy, +) +from max.pipelines.nn import ( + MLP, + AttentionWithRope, + Embedding, + Linear, + OptimizedRotaryEmbedding, + RMSNorm, + TransformerBlock, +) + +from ..llava.llava_decoder import Transformer + + +def feed_forward( + dtype: DType, + hidden_dim: int, + feed_forward_length: int, + weights: SafetensorWeights, +): + return MLP( + linear( + dtype, + feed_forward_length, + hidden_dim, + weights.mlp.gate_proj, + ), + linear( + dtype, + hidden_dim, + feed_forward_length, + weights.mlp.down_proj, + ), + linear( + dtype, + feed_forward_length, + hidden_dim, + weights.mlp.up_proj, + ), + ) + + +def linear( + dtype: DType, + in_features: int, + out_features: int, + weights: SafetensorWeights, +) -> Linear: + return Linear( + weights.weight.allocate(dtype, [in_features, out_features], None) + ) + + +def rms_norm(dims: int, eps: float, weights: SafetensorWeights) -> RMSNorm: + return RMSNorm(weights.weight.allocate(DType.bfloat16, [dims]), eps) + + +def embedding( + params: PipelineConfig, + vocab_size: int, + hidden_dim: int, + weights: SafetensorWeights, +): + return Embedding( + weights.weight.allocate( + params.dtype, + [vocab_size, hidden_dim], + ) + ) + + +def _attention_opaque( + kv_params: KVCacheParams, + params: PipelineConfig, + rope: OptimizedRotaryEmbedding, + weights: SafetensorWeights, + layer_idx: int, +): + kv_weight_dim = ( + params.huggingface_config.text_config.head_dim + * params.huggingface_config.text_config.num_key_value_heads + ) + + wq = weights.self_attn.q_proj.weight.allocate( + params.dtype, + [ + params.huggingface_config.text_config.num_attention_heads + * params.huggingface_config.text_config.head_dim, + params.huggingface_config.text_config.hidden_size, + ], + ) + wk = weights.self_attn.k_proj.weight.allocate( + params.dtype, + [kv_weight_dim, params.huggingface_config.text_config.hidden_size], + ) + wv = weights.self_attn.v_proj.weight.allocate( + params.dtype, + [kv_weight_dim, params.huggingface_config.text_config.hidden_size], + ) + wqkv = ops.concat((wq, wk, wv)) + + return AttentionWithRope( + n_heads=params.huggingface_config.text_config.num_attention_heads, + kv_params=kv_params, + wqkv=wqkv, + wo=linear( + params.dtype, + params.huggingface_config.text_config.hidden_size, + params.huggingface_config.text_config.num_attention_heads + * params.huggingface_config.text_config.head_dim, + weights.self_attn.o_proj, + ), + rope=rope, + layer_idx=ops.constant(layer_idx, DType.uint32), + scale=math.sqrt(1 / kv_params.head_dim), + ) + + +def _transformer( + graph: Graph, + params: PipelineConfig, + weights: SafetensorWeights, + max_seq_len: int, + kv_params: KVCacheParams, +): + with graph: + rope = OptimizedRotaryEmbedding( + dim=params.huggingface_config.text_config.num_attention_heads + * params.huggingface_config.text_config.head_dim, + n_heads=params.huggingface_config.text_config.num_attention_heads, + theta=params.huggingface_config.text_config.rope_theta, + max_seq_len=max_seq_len, + rope_scaling=None, + interleaved=False, + ) + + layers = [ + TransformerBlock( + attention=_attention_opaque( + kv_params, + params, + rope, + weights.language_model.model.layers[i], + layer_idx=i, + ), + mlp=feed_forward( + params.dtype, + params.huggingface_config.text_config.hidden_size, + params.huggingface_config.text_config.intermediate_size, + weights.language_model.model.layers[i], + ), + attention_norm=rms_norm( + params.huggingface_config.text_config.hidden_size, + params.huggingface_config.text_config.rms_norm_eps, + weights.language_model.model.layers[i].input_layernorm, + ), + mlp_norm=rms_norm( + params.huggingface_config.text_config.hidden_size, + params.huggingface_config.text_config.rms_norm_eps, + weights.language_model.model.layers[ + i + ].post_attention_layernorm, + ), + ) + for i in range( + params.huggingface_config.text_config.num_hidden_layers + ) + ] + + embedding_layer = embedding( + params, + params.huggingface_config.text_config.vocab_size, + params.huggingface_config.text_config.hidden_size, + weights.language_model.model.embed_tokens, + ) + + output = linear( + params.dtype, + params.huggingface_config.text_config.vocab_size, + params.huggingface_config.text_config.hidden_size, + weights.language_model.lm_head, + ) + + kv_collection_cls: Union[ + type[FetchContinuousBatchingKVCacheCollection], + type[FetchPagedKVCacheCollection], + ] + if kv_params.cache_strategy == KVCacheStrategy.CONTINUOUS: + kv_collection_cls = FetchContinuousBatchingKVCacheCollection + elif kv_params.cache_strategy == KVCacheStrategy.PAGED: + kv_collection_cls = FetchPagedKVCacheCollection + else: + raise ValueError( + f"Unsupported caching strategy {kv_params.cache_strategy}" + ) + + return Transformer( + dim=params.huggingface_config.text_config.hidden_size, + n_heads=params.huggingface_config.text_config.num_attention_heads, + layers=layers, + norm=rms_norm( + params.huggingface_config.text_config.hidden_size, + params.huggingface_config.text_config.rms_norm_eps, + weights.language_model.model.norm, + ), + output=output, + embedding=embedding_layer, + kv_params=kv_params, + kv_collection_constructor=kv_collection_cls(kv_params), + ) diff --git a/src/max/pipelines/architectures/pixtral/pixtral.py b/src/max/pipelines/architectures/pixtral/pixtral.py new file mode 100644 index 0000000000..31f4e13682 --- /dev/null +++ b/src/max/pipelines/architectures/pixtral/pixtral.py @@ -0,0 +1,362 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from __future__ import annotations + +import logging +import time +from collections.abc import Sequence +from concurrent.futures import ThreadPoolExecutor +from typing import cast + +import numpy as np +from max.driver import Device, Tensor +from max.engine import InferenceSession, Model +from max.graph.weights import SafetensorWeights +from max.pipelines import ( + ModelInputs, + ModelOutputs, + PipelineConfig, + PipelineModel, + TextAndVisionContext, + upper_bounded_default, +) +from max.pipelines.kv_cache import ( + KVCacheInputs, + KVCacheManager, + KVCacheParams, + estimate_kv_cache_size, + load_kv_manager, +) + +from .model.graph import _build_text_graph, _build_vision_graph +from .vision_encoder.attention_utils import causal_attention_mask_2d_from_imgs + +logger = logging.getLogger("max.pipelines") + + +class PixtralInputs(ModelInputs): + """Holds inputs for the Pixtral model.""" + + input_ids: Tensor + input_row_offsets: Tensor + + # Image inputs + _pixel_values: Tensor | None = None + _attention_mask: Tensor | None = None + + def __init__( + self, + input_ids: Tensor, + input_row_offsets: Tensor, + pixel_values: Tensor | None = None, + attention_mask: Tensor | None = None, + ): + self.input_ids = input_ids + self.input_row_offsets = input_row_offsets + self._pixel_values = pixel_values + self._attention_mask = attention_mask + + @property + def has_vision_inputs(self) -> bool: + """Returns true iff this includes vision model inputs.""" + return self._pixel_values is not None + + @property + def pixel_values(self) -> Tensor: + assert self._pixel_values is not None + return self._pixel_values + + @property + def attention_mask(self) -> Tensor: + assert self._attention_mask is not None + return self._attention_mask + + +class PixtralModel(PipelineModel[TextAndVisionContext]): + """The overall interface to the Pixtral model.""" + + def __init__( + self, pipeline_config: PipelineConfig, session: InferenceSession + ) -> None: + super().__init__(pipeline_config, session) + self.vision_model, self.language_model = self.load_model(session) + # Note that in a multimodal model, the language model is the last model in the + # pipeline. Unfortunately, self.model is still being used (and exposed) + # in the token generation code, so we still need to set it here. + self.model = self.language_model + + def execute( + self, + model_inputs: ModelInputs, + # TODO(zheng): This should be folded as KVCacheInputs into ModelInputs. + kv_cache_inputs: KVCacheInputs | None = None, + ) -> ModelOutputs: + model_inputs = cast(PixtralInputs, model_inputs) + if model_inputs.has_vision_inputs: + image_embeds = self.vision_model.execute( + model_inputs.pixel_values, + model_inputs.attention_mask, + copy_inputs_to_device=False, + )[0] + else: + # batch_size * num_concurrent_media * num_patches are set to 0 here to imitate a dummy tensor (used in text-only mode). + image_embeds = Tensor.zeros( + shape=[ + 0, + 0, + self.pipeline_config.huggingface_config.text_config.hidden_size, + ], + dtype=self.pipeline_config.dtype, + ).to(self.pipeline_config.devices[0]) + assert kv_cache_inputs is not None, ( + "Pixtral has KV cache inputs, but none were provided" + ) + model_outputs = self.language_model.execute( + model_inputs.input_ids, + image_embeds, + model_inputs.input_row_offsets, + *kv_cache_inputs, + copy_inputs_to_device=False, + ) + assert not self.pipeline_config.enable_echo + assert isinstance(model_outputs[0], Tensor) + return ModelOutputs(next_token_logits=model_outputs[0]) + + def prepare_initial_token_inputs( + self, + context_batch: Sequence[TextAndVisionContext], + ) -> PixtralInputs: + # Input row offset type: ["input_row_offsets_len"], UInt32 + input_row_offsets = Tensor.from_numpy( + np.cumsum( + [0] + [ctx.active_length for ctx in context_batch], + dtype=np.uint32, + ) + ).to(self.pipeline_config.devices[0]) + + # Input Ids: ["total_seq_len"], Int64 + # Create a ragged token vector of length: sum(len(t) for t in tokens). + tokens = np.ascontiguousarray( + np.concatenate([ctx.next_tokens for ctx in context_batch]) + ) + input_ids = Tensor.from_numpy(tokens).to( + self.pipeline_config.devices[0] + ) + + # TODO: change this to work with all contexts in the batch. + if context_batch[ + 0 + ].pixel_values: # check if the request has pixel_values + # Get first image in first batch and permute the order to (HWC). + # Pixtral processor returns CHW images. + image = np.ascontiguousarray( + np.transpose(context_batch[0].pixel_values[0], (1, 2, 0)) + ) + pixel_values = Tensor.from_numpy(image).to( + self.pipeline_config.devices[0] + ) + # TODO(KERN-782): This should be -inf but softmax saturates with NaNs. + fill_val = -10000.0 + attention_mask = causal_attention_mask_2d_from_imgs( + [image], + self.pipeline_config.huggingface_config.vision_config.patch_size, + 1, + fill_val, + ) + attention_mask = Tensor.from_numpy(attention_mask).to( + self.pipeline_config.devices[0] + ) + return PixtralInputs( + input_ids=input_ids, + input_row_offsets=input_row_offsets, + pixel_values=pixel_values, + attention_mask=attention_mask, + ) + + return PixtralInputs( + input_ids=input_ids, + input_row_offsets=input_row_offsets, + ) + + def prepare_next_token_inputs( + self, + next_tokens: Tensor, + prev_model_inputs: ModelInputs, + ) -> PixtralInputs: + prev_model_inputs = cast(PixtralInputs, prev_model_inputs) + # input_ids, old_row_offsets, Optional: [pixel_values, attention_mask] + old_row_offsets = prev_model_inputs.input_row_offsets + + row_offsets_size = old_row_offsets.shape[0] + next_row_offsets = self._input_row_offsets_prealloc[:row_offsets_size] + # In multi-step execution, don't re-pass the pixel_values and attention_mask. + return PixtralInputs( + input_ids=next_tokens, + input_row_offsets=next_row_offsets, + ) + + @classmethod + def get_num_layers(cls, pipeline_config: PipelineConfig) -> int: + return pipeline_config.huggingface_config.text_config.num_hidden_layers + + @classmethod + def get_kv_params(cls, pipeline_config: PipelineConfig) -> KVCacheParams: + return KVCacheParams( + page_size=pipeline_config.kv_cache_page_size, + dtype=pipeline_config.cache_dtype, + n_kv_heads=pipeline_config.huggingface_config.text_config.num_key_value_heads, + head_dim=pipeline_config.huggingface_config.text_config.head_dim, + cache_strategy=pipeline_config.cache_strategy, + enable_prefix_caching=pipeline_config.enable_prefix_caching, + ) + + @classmethod + def calculate_max_seq_len(cls, pipeline_config: PipelineConfig) -> int: + try: + return upper_bounded_default( + upper_bound=pipeline_config.huggingface_config.text_config.max_position_embeddings, + default=pipeline_config.max_length, + ) + except ValueError as e: + msg = ( + "Unable to infer max_length for Pixtral, the provided " + f"max_length ({pipeline_config.max_length}) exceeds the " + f"model's max_position_embeddings " + f"({pipeline_config.huggingface_config.text_config.max_position_embeddings})." + ) + raise ValueError(msg) from e + + def load_kv_manager( + self, + session: InferenceSession, + available_cache_memory: int, + ) -> KVCacheManager: + return load_kv_manager( + params=self.get_kv_params(self.pipeline_config), + max_batch_size=self.pipeline_config.max_batch_size, + max_seq_len=self.calculate_max_seq_len(self.pipeline_config), + num_layers=self.get_num_layers(self.pipeline_config), + devices=self.pipeline_config.devices, + available_cache_memory=available_cache_memory, + page_size=self.pipeline_config.kv_cache_page_size, + session=session, + ) + + @classmethod + def estimate_kv_cache_size( + cls, + pipeline_config: PipelineConfig, + available_cache_memory: int, + devices: list[Device], + ) -> int: + """Estimates the size of the kv cache in bytes.""" + return estimate_kv_cache_size( + params=cls.get_kv_params(pipeline_config), + max_batch_size=pipeline_config.max_batch_size, + max_seq_len=cls.calculate_max_seq_len(pipeline_config), + num_layers=cls.get_num_layers(pipeline_config), + available_cache_memory=available_cache_memory, + devices=devices, + ) + + def load_model(self, session: InferenceSession) -> tuple[Model, Model]: + if self.pipeline_config.enable_echo: + msg = "Pixtral model does not currently implement enable echo." + raise ValueError(msg) + + # Pre-allocate a buffer for input_row_offsets in multistep execution. + # We do this to avoid materializing and copying a buffer with each multistep step + assert self.pipeline_config.max_batch_size, ( + "Expected max_batch_size to be set" + ) + self._input_row_offsets_prealloc = Tensor.from_numpy( + np.arange(self.pipeline_config.max_batch_size + 1, dtype=np.uint32) + ).to(self.pipeline_config.devices[0]) + + weights = self.pipeline_config.load_weights() + + if not isinstance(weights, SafetensorWeights): + msg = ( + "only safetensors weights are currently supported in Pixtral" + " models." + ) + raise ValueError(msg) + + self._weights = weights + + if serialized_path := self.pipeline_config.serialized_model_path: + # Hydrate all weights to be referenced by the serialized path. + weights_registry = {} + for name, weight in self._weights.items(): + weights_registry[name] = weight.raw_tensor() + + def serialized_load(serialized_path): + logger.info("Loading serialized model from %s", serialized_path) + model = session.load( + f"{serialized_path}", weights_registry=weights_registry + ) + return model + + vision_model = serialized_load(f"{serialized_path}.vision") + text_model = serialized_load(f"{serialized_path}.text") + + else: + + def build_and_compile_model(build, label, export_path=None): + logger.info(f"Building and compiling {label} model...") + graph = build() + before = time.perf_counter() + model = session.load( + graph, + weights_registry=self._weights.allocated_weights, + ) + after = time.perf_counter() + logger.info( + f"Building and compiling {label} model took {after - before:.6f} seconds" + ) + if export_path: + mef_path = f"{export_path}.{label}" + logger.info( + f"Exporting serialized {label} model to {mef_path}" + ) + model._export_mef(mef_path) + return model + + export_path = self.pipeline_config.save_to_serialized_model_path + with ThreadPoolExecutor(max_workers=2) as executor: + build = lambda: _build_vision_graph( + pipeline_config=self.pipeline_config, + weights=self._weights, + ) + vision_model_future = executor.submit( + build_and_compile_model, build, "vision", export_path + ) + + build = lambda: _build_text_graph( + pipeline_config=self.pipeline_config, + weights=self._weights, + max_seq_len=self.calculate_max_seq_len( + self.pipeline_config + ), + kv_params=self.get_kv_params(self.pipeline_config), + kv_manager=self.kv_manager, + ) + text_model_future = executor.submit( + build_and_compile_model, build, "text", export_path + ) + + vision_model = vision_model_future.result() + text_model = text_model_future.result() + + return vision_model, text_model diff --git a/src/max/pipelines/architectures/pixtral/vision_encoder/__init__.py b/src/max/pipelines/architectures/pixtral/vision_encoder/__init__.py new file mode 100644 index 0000000000..1ce61c35f1 --- /dev/null +++ b/src/max/pipelines/architectures/pixtral/vision_encoder/__init__.py @@ -0,0 +1,14 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +"""Pixtral Code vision encoder layer modules.""" diff --git a/src/max/pipelines/architectures/pixtral/vision_encoder/attention.py b/src/max/pipelines/architectures/pixtral/vision_encoder/attention.py new file mode 100644 index 0000000000..530f58e26a --- /dev/null +++ b/src/max/pipelines/architectures/pixtral/vision_encoder/attention.py @@ -0,0 +1,139 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + + +import math +from dataclasses import dataclass + +from max.graph import TensorValue, TensorValueLike, ops +from max.pipelines.nn.layer import Layer +from max.pipelines.nn.linear import Linear + +from .attention_utils import rotate_half + + +@dataclass +class Attention(Layer): + n_heads: int + dim: int + head_dim: int # hidden_size // self.n_heads + + dropout: float + + wq: Linear + wk: Linear + wv: Linear + wo: Linear + + def apply_rotary_embedding( + self, + xq: TensorValue, + xk: TensorValue, + cos: TensorValue, + sin: TensorValue, + unsqueeze_dim=0, + ) -> tuple[TensorValue, TensorValue]: + """Applies Rotary Position Embedding to the query and key tensors. + + Args: + xq (`TensorValueLike`): The query tensor. + xk (`TensorValueLike`): The key tensor. + cos (`TensorValueLike`): The cosine part of the rotary embedding. + sin (`TensorValueLike`): The sine part of the rotary embedding. + unsqueeze_dim (`int`, *optional*, defaults to 1): + The 'unsqueeze_dim' argument specifies the dimension along which to unsqueeze cos and + sin so that they can be properly broadcasted to the dimensions of q and k. For example, note + that cos and sin have the shape [batch_size, seq_len, head_dim]. Then, if q and + k have the shape [batch_size, heads, seq_len, head_dim], then setting unsqueeze_dim=1 makes + cos and sin broadcastable to the shapes of q and k. Similarly, if q and k have + the shape [batch_size, seq_len, heads, head_dim], then set unsqueeze_dim=2. + Returns: + `tuple(TensorValueLike)` comprising of the query and key tensors rotated using the Rotary Position Embedding. + """ + cos = ops.unsqueeze(cos, unsqueeze_dim) + sin = ops.unsqueeze(sin, unsqueeze_dim) + xq = xq.transpose(1, 2) + xk = xk.transpose(1, 2) + + q_embed = (xq * cos) + (rotate_half(xq) * sin) + k_embed = (xk * cos) + (rotate_half(xk) * sin) + return q_embed, k_embed + + def attention( + self, + xq: TensorValue, + xk: TensorValue, + xv: TensorValue, + attn_mask: TensorValueLike, + ) -> TensorValue: + xv = xv.transpose(1, 2) + + scale = math.sqrt(1.0 / self.head_dim) + # xk shape = batch_size=1, n_heads=16, head_dim=64, image_seq_len=160 + scores = xq @ ops.transpose(xk, 2, 3) + # Note, the graph compiler currently requires the order of operands + # to be `scores * scale` in order to pattern match the fused attention + # operator. + # attn_mask and pixel_values are model inputs. scores is self-attention + # scores between all patches in pixel_values. + # attn_mask shape = ("n_images", 1, "num_patches_in_image", "num_patches_in_image") + # scores shape = ("n_images", "n_heads", "num_patches_in_image", "num_patches_in_image") + attn_mask = ops.rebind( + attn_mask, (scores.shape[0], 1, scores.shape[2], scores.shape[3]) + ) + scores = ops.softmax(scores * scale + attn_mask) + + return scores @ xv + + def __call__( + self, + x: TensorValue, + attention_mask: TensorValueLike, + position_embeddings: tuple[TensorValue, TensorValue], + ) -> TensorValue: + """Computes attention on x. + + Args: + x: Activations with shape (batch, seq_len, dim). + attention_mask: a mask to ensure different blocks of patches (images) + can only attend to patches within their respective block (image). + position_embeddings: + + Returns the result of multi-headed self attention on the input. + """ + + batch_size, n_patches = x.shape[0], x.shape[1] + # matmul weights + xq = self.wq(x) + xk = self.wk(x) + xv = self.wv(x) + + xq = ops.reshape( + xq, [batch_size, n_patches, self.n_heads, self.head_dim] + ) + xk = ops.reshape( + xk, [batch_size, n_patches, self.n_heads, self.head_dim] + ) + xv = ops.reshape( + xv, [batch_size, n_patches, self.n_heads, self.head_dim] + ) + + cos, sin = position_embeddings + xq, xk = self.apply_rotary_embedding(xq, xk, cos, sin, unsqueeze_dim=0) + + output = ( + self.attention(xq, xk, xv, attention_mask) + .transpose(1, 2) + .reshape([batch_size, n_patches, -1]) + ) + return self.wo(output) diff --git a/src/max/pipelines/architectures/pixtral/vision_encoder/attention_utils.py b/src/max/pipelines/architectures/pixtral/vision_encoder/attention_utils.py new file mode 100644 index 0000000000..735e37041b --- /dev/null +++ b/src/max/pipelines/architectures/pixtral/vision_encoder/attention_utils.py @@ -0,0 +1,125 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from __future__ import annotations + +from typing import List + +import numpy as np +from max.graph import TensorValue, ops + + +def causal_attention_mask_2d_from_imgs( + imgs: List[np.ndarray], + patch_size: int, + batch_size: int, + fill_val: float = -10000.0, +): + """Generates a 2D mask to ensure different blocks of patches (images) can only attend + to patches within their respective block (image). + + Args: + + num_patches_list: A list of images (blocks). Each image is of shape + (height, width, num_channels). + + patch_size: size of one dim of each patch in the image. + + batch_size: num of images. + + + Returns an ndarray of shape (batch_size, 1, seq_len, seq_len) representing the + attention mask for the blocks of patches attended to by the transformer. + """ + # generate list of (num_patches_in_height * num_patches_in_width) for each image + num_patches_list = [ + img.shape[0] // patch_size * img.shape[1] // patch_size for img in imgs + ] + + # seq_length is number of patches in all images + seq_len = sum(num_patches_list) + mask_shape = (seq_len, seq_len) + + # TODO(KERN-782): This fill_val should be -inf but softmax saturates with NaNs. + fill_matrix = np.full(mask_shape, fill_val, dtype=np.float32) + + # block_end_idx and block_start_idx are calculated using cumulative sums of + # patch_embeds_list. These indicate the starting and ending indices of each + # block of embeddings. + block_end_idx = np.cumsum(num_patches_list) + block_start_idx = np.cumsum(np.concatenate(([0], num_patches_list[:-1]))) + + # TODO(KERN-782): This should be -inf but softmax saturates with NaNs. + for start, end in zip(block_start_idx, block_end_idx): + fill_matrix[int(start) : int(end), int(start) : int(end)] = 0 + + # Expand the mask dimensions to match the expected input shape + fill_matrix = np.expand_dims(fill_matrix, axis=(0, 1)) # Add two new axes + fill_matrix = np.broadcast_to( + fill_matrix, (batch_size, 1, seq_len, seq_len) + ) + return fill_matrix + + +def causal_attention_mask_2d( + num_patches_list: list[int], patch_embeds: TensorValue +): + """Generates a 2D mask to ensure different blocks of patches (images) can only attend + to patches within their respective block (image). + + Args: + + num_patches_list: A list of integers, where each entry represents the number of patches + in a block (e.g., (num_patches_in_height × num_patches_in_width) patches per image block). + It is list representing the sizes of different blocks in terms of patches. + + patch_embeds:A tensor of shape [batch_size, num_patches, hidden_size] representing the + embeddings of patches in a batch of images. + + Returns an ndarray of shape (batch_size, 1, seq_len, seq_len) representing the + attention mask for the blocks of patches attended to by the transformer. + """ + # The total number of patches for all image in the batch. + # TODO: change this to take a dim not an int. + seq_len = int(patch_embeds.shape[1]) + mask_shape = (seq_len, seq_len) + + # TODO(KERN-782): This should be -inf but softmax saturates with NaNs. + fill_val = -10000.0 + fill_matrix = np.full(mask_shape, fill_val, dtype=np.float32) + + # block_end_idx and block_start_idx are calculated using cumulative sums of + # patch_embeds_list. These indicate the starting and ending indices of each + # image (block of embeddings). + block_end_idx = np.cumsum(num_patches_list) + block_start_idx = np.cumsum(np.concatenate(([0], num_patches_list[:-1]))) + + # For each block, set the diagonal region corresponding to that block to 0. + # This allows patches within the same block to attend to each other. + for start, end in zip(block_start_idx, block_end_idx): + fill_matrix[int(start) : int(end), int(start) : int(end)] = 0 + + # Expand the mask dimensions to match the expected transformer input shape. + fill_matrix = np.expand_dims(fill_matrix, axis=(0, 1)) # Add two new axes + fill_matrix = np.broadcast_to( + fill_matrix, + (int(patch_embeds.shape[0]), 1, seq_len, seq_len), + ) + return fill_matrix + + +def rotate_half(x: TensorValue): + """Rotates half the hidden dims of the input.""" + x1 = x[..., : x.shape[-1] // 2] + x2 = x[..., x.shape[-1] // 2 :] + return ops.concat((-x2, x1), axis=-1) diff --git a/src/max/pipelines/architectures/pixtral/vision_encoder/graph.py b/src/max/pipelines/architectures/pixtral/vision_encoder/graph.py new file mode 100644 index 0000000000..b6ee70ec28 --- /dev/null +++ b/src/max/pipelines/architectures/pixtral/vision_encoder/graph.py @@ -0,0 +1,218 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + + +from max.dtype import DType +from max.graph import Graph, ops +from max.graph.weights import SafetensorWeights +from max.pipelines import PipelineConfig +from max.pipelines.nn import Conv2D, Linear, RMSNorm + +from .attention import Attention +from .rotary_embedding_2d import RotaryEmbedding2D +from .transformer import MLP, Transformer, TransformerBlock +from .vision_encoder import VisionEncoder + + +def _patch_conv2d( + dtype: DType, + in_channels: int, + patch_size: int, + out_channels: int, + weights: SafetensorWeights, +) -> Conv2D: + """Creates a 2D convolution layer with the following assumptions: + - kernel size = (patch_size, patch_size) + - stride = (patch_size, patch_size) + - padding = (0, 0, 0, 0) + + This convolution splits the image into patches and then learns an embedding + of each patch. The embedding dim is out_channels. + """ + # Loaded torch weights shape = torch.Size([1024, 3, 16, 16]). + # Conv2D expects (height, width, in_channels, out_channels) = [16, 16, 3, 1024]. + weights = ops.permute( # type: ignore + weights.weight.allocate( + dtype, [out_channels, in_channels, patch_size, patch_size], None + ), + [2, 3, 1, 0], + ) + return Conv2D( + weights, # type: ignore + stride=(patch_size, patch_size), + ) + + +def _linear( + dtype: DType, + in_features: int, + out_features: int, + weights: SafetensorWeights, +) -> Linear: + return Linear( + weights.weight.allocate(dtype, [in_features, out_features], None) + ) + + +def _feed_forward( + dtype: DType, + hidden_dim: int, + feed_forward_length: int, + weights: SafetensorWeights, +): + return MLP( + _linear( # gate_proj + dtype, + feed_forward_length, + hidden_dim, + weights.feed_forward.gate_proj, + ), + _linear( # down_proj + dtype, + hidden_dim, + feed_forward_length, + weights.feed_forward.down_proj, + ), + _linear( # up_proj + dtype, + feed_forward_length, + hidden_dim, + weights.feed_forward.up_proj, + ), + ) + + +def _rms_norm(dims: int, eps: float, weights: SafetensorWeights) -> RMSNorm: + return RMSNorm(weights.weight.allocate(DType.bfloat16, [dims]), eps) + + +def _encoder_attention( + pipeline_config: PipelineConfig, + weights: SafetensorWeights, +) -> Attention: + # TODO: Do we need to transpose weights? Not obvious from shapes. Both dims are the same. + hidden_dim = pipeline_config.huggingface_config.vision_config.hidden_size + wq = _linear( + pipeline_config.dtype, + hidden_dim, + hidden_dim, + weights.attention.q_proj, + ) + wk = _linear( + pipeline_config.dtype, + hidden_dim, + hidden_dim, + weights.attention.k_proj, + ) + wv = _linear( + pipeline_config.dtype, + hidden_dim, + hidden_dim, + weights.attention.v_proj, + ) + wo = _linear( + pipeline_config.dtype, + hidden_dim, + hidden_dim, + weights.attention.o_proj, + ) + + return Attention( + n_heads=pipeline_config.huggingface_config.vision_config.num_attention_heads, + dim=hidden_dim, + head_dim=pipeline_config.huggingface_config.vision_config.head_dim, + dropout=pipeline_config.huggingface_config.vision_config.attention_dropout, + wq=wq, + wk=wk, + wv=wv, + wo=wo, + ) + + +def _transformer( + graph: Graph, + pipeline_config: PipelineConfig, + weights: SafetensorWeights, +): + with graph: + layers = [ + TransformerBlock( + attention=_encoder_attention( + pipeline_config, weights.layers[i] + ), + mlp=_feed_forward( + pipeline_config.dtype, + pipeline_config.huggingface_config.vision_config.hidden_size, + pipeline_config.huggingface_config.vision_config.intermediate_size, + weights.layers[i], + ), + attention_norm=_rms_norm( + pipeline_config.huggingface_config.vision_config.hidden_size, + 1e-5, + weights.layers[i].attention_norm, + ), + mlp_norm=_rms_norm( + pipeline_config.huggingface_config.vision_config.hidden_size, + 1e-5, + weights.layers[i].ffn_norm, + ), + ) + for i in range( + pipeline_config.huggingface_config.vision_config.num_hidden_layers + ) + ] + + return Transformer( + n_heads=pipeline_config.huggingface_config.vision_config.num_attention_heads, + layers=layers, + dtype=pipeline_config.dtype, + ) + + +def _vision_encoder( + graph: Graph, + pipeline_config: PipelineConfig, + weights: SafetensorWeights, +) -> VisionEncoder: + patch_conv = _patch_conv2d( + pipeline_config.dtype, + pipeline_config.huggingface_config.vision_config.num_channels, + pipeline_config.huggingface_config.vision_config.patch_size, + pipeline_config.huggingface_config.vision_config.hidden_size, + weights.vision_tower.patch_conv, + ) + ln_pre = _rms_norm( + pipeline_config.huggingface_config.vision_config.hidden_size, + 1e-5, + weights.vision_tower.ln_pre, + ) + patch_rope = RotaryEmbedding2D( + dim=pipeline_config.huggingface_config.vision_config.hidden_size, + n_heads=pipeline_config.huggingface_config.vision_config.num_attention_heads, + theta=pipeline_config.huggingface_config.vision_config.rope_theta, + max_patches_per_side=pipeline_config.huggingface_config.vision_config.image_size + // pipeline_config.huggingface_config.vision_config.patch_size, + ) + encoder_transformer = _transformer( + graph, pipeline_config, weights.vision_tower.transformer + ) + + return VisionEncoder( + patch_conv=patch_conv, + layer_norm=ln_pre, + patch_positional_embedding=patch_rope, + transformer=encoder_transformer, + dtype=pipeline_config.dtype, + patch_size=pipeline_config.huggingface_config.vision_config.patch_size, + max_image_size=pipeline_config.huggingface_config.vision_config.image_size, + ) diff --git a/src/max/pipelines/architectures/pixtral/vision_encoder/rotary_embedding_2d.py b/src/max/pipelines/architectures/pixtral/vision_encoder/rotary_embedding_2d.py new file mode 100644 index 0000000000..65b38bfb50 --- /dev/null +++ b/src/max/pipelines/architectures/pixtral/vision_encoder/rotary_embedding_2d.py @@ -0,0 +1,200 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + + +from dataclasses import dataclass +from functools import cached_property +from typing import List, Optional + +import numpy as np +from max.dtype import DType +from max.graph import Dim, DimLike, TensorValue, TensorValueLike, ops +from max.pipelines.nn.layer import Layer + + +def meshgrid(height: DimLike, width: DimLike, indexing="ij") -> TensorValue: + """Returns row indices and col indices of each point on the grid.""" + height = Dim(height) + width = Dim(width) + row_indices = ops.range( + ops.constant(0, DType.int64), + TensorValue.from_dim(height), + ops.constant(1, DType.int64), + out_dim=height, + ) + col_indices = ops.range( + ops.constant(0, DType.int64), + TensorValue.from_dim(width), + ops.constant(1, DType.int64), + out_dim=width, + ) + + # repeat row indices for each row [[0, ..., 0], ..., [width=n_cols-1, ..., width-1]] + h_grid = ops.tile( + ops.unsqueeze(row_indices, 1), [1, width] + ) # Shape: (height, width) + # repeat col indices for each col [[0, 1, ..., height-1=n_rows-1], ...] + v_grid = ops.tile( + ops.unsqueeze(col_indices, 0), [height, 1] + ) # Shape: (height, width) + return h_grid, v_grid # type: ignore + + +def patch_position_ids( + patch_embeds: List[TensorValue], max_width: int +) -> TensorValue: + """ + Takes a list of patches, calculates the positional indices for each patch by + flattening the array, and returns these indices in the positions tensor. + max_width is the maximum numbers of patches you can have in an image on one + side ie.e max_image_width_or_height // patch_size. + """ + positions = [] + for patch in patch_embeds: + height, width = patch.shape[ + 1:3 + ] # img_height/patch_size, img_width/patch_size + # TODO(MSDK-1194): replace with ops.meshgrid() + mesh = meshgrid(height, width, indexing="ij") + # TODO(MSDK-1193): replace ? by ops.chunk() or ops.split_tensor() + # Combine row and col indices into 1 tensor of paired coordinates. Shape = (height, width, 2) + # Then split into 2 tensors: 1st and 2nd coordinate of points in the mesh. + mesh_coords = ops.stack(mesh, axis=-1).reshape((-1, 2)) # type: ignore + h_grid, v_grid = mesh_coords[:, 0], mesh_coords[:, 1] + # Calculates a unique ID for each coordinate pair. + # TODO: Understand if using max_width here leads to memory inefficiency + ids = h_grid * max_width + v_grid + positions.append(ids[:]) + return ops.concat(positions) + + +@dataclass +class RotaryEmbedding2D(Layer): + """ + RotaryEmbedding layer to calculate and apply the frequency tensor for complex exponentials. + """ + + dim: DimLike + n_heads: int + theta: float + """Hyperparameter used to control the frequency scaling of the sinusoidal components of the embeddings.""" + max_patches_per_side: int + """The maximum number of patches per side for model's input (images).""" + rope_scaling: Optional[np.ndarray] = None + """Scaling factor for the positional frequencies.""" + + def freqs_cis_base(self) -> TensorValue: + """ + Computes the frequency tensor for complex exponentials (cis) + for a given seq_len = num_patches in a block (image). + Tensor is scaled with theta parameter. + Required to apply Rotary Position Embedding (RoPE) to tensor. + See 'Roformer: Enhanced Transformer with Rotary Embedding' + (arxiv.org/pdf/2104.09864). + + Returns: + The frequency tensor for complex exponentials with shape + (max_seq_len, dim//(n_heads), 2) + ??(batch_size, height * width, dim) with dim the embed dim. + """ + head_dim = ( + self.dim // self.n_heads # type: ignore + ) # hidden_size // num_attention_heads + # Note: using float64 to avoid an overflow on the exponential, then converting back to float32. + # 1D tensor of length head_dim // 2 = 32 + iota = ops.range( + ops.constant(0, DType.float64), + ops.constant(head_dim, DType.float64), # type: ignore + ops.constant(2, DType.float64), + out_dim=head_dim // 2, + ) + if self.rope_scaling is not None: + iota = iota * self.rope_scaling + # 1D tensor of length head_dim // 2 = 32 + freqs = ops.cast(1.0 / (self.theta ** (iota / head_dim)), DType.float32) + + # Indices of patches in each side (height and width) of image. + # 1D tensor of length max_patches_per_side = 64 + h = ops.range( + ops.constant(0, DType.float32), + ops.constant(self.max_patches_per_side, DType.float32), + ops.constant(1, DType.float32), + out_dim=self.max_patches_per_side, + ) + # 1D tensor of length max_patches_per_side = 64 + w = ops.range( + ops.constant(0, DType.float32), + ops.constant(self.max_patches_per_side, DType.float32), + ops.constant(1, DType.float32), + out_dim=self.max_patches_per_side, + ) + # create matrices of freqs = outer product of height and width indices with their respective frequency. + # 2D tensors mapping patch positions to rotary embeddings. shape =(max_patches_per_side = 64, head_dim//4 =16) + freqs_h = ops.outer(h, freqs[::2]) + freqs_w = ops.outer(w, freqs[1::2]) + + # Combines the frequency matrices of horizontal and vertical patch indices into a single tensor of patches + # 2D tensor of shape (max_patches_per_side*max_patches_per_side = 4096, head_dim // 2 = 32) + _inv_freq = ops.concat( + [ + ops.tile( + ops.unsqueeze(freqs_h, 1), + (1, self.max_patches_per_side, 1), + ), + ops.tile( + ops.unsqueeze(freqs_w, 0), + (self.max_patches_per_side, 1, 1), + ), + ], + axis=-1, + ).reshape((-1, head_dim // 2)) + + # In Hugging Face Code, double copies to have rotary embeddings that match head_dim + # 2D tensor of shape (max_patches_per_side*max_patches_per_side =4096, head_dim=64) + _inv_freq = ops.concat((_inv_freq, _inv_freq), axis=-1) + + # 2D tensor of shape (max_patches_per_side*max_patches_per_side =4096, head_dim*2=128) + # self._freqs_cis = ops.stack( + # [ops.cos(_inv_freq), ops.sin(_inv_freq)], axis=-1 + # ) + return TensorValue(_inv_freq) + + @cached_property + def freqs_cis(self) -> TensorValue: + self._freqs_cis = self.freqs_cis_base() + return self._freqs_cis + + def __call__( + self, x: TensorValueLike, position_ids: TensorValue + ) -> tuple[TensorValue, TensorValue]: + """Applies rotary positional embeddings (RoPE) to `x`. + + Args: + x: Activation tensor with shape (batch, seq_len, n_kv_heads, head_dim). + position_ids: starting position of input tensor + + Returns: + Input activation tensor with rotary positional embeddings applied and + the same shape as `x`. + """ + v = TensorValue(x) + + # TODO: Figure out if this is the correct axis. + freqs_cis_sliced = ops.gather(self.freqs_cis, position_ids, 0) + # TODO(MSDK-1188): Ideally this cast would happen inside of the cached + # self.freqs_cis property instead of here, but complex.dtype is not + # known at that point. + cos = ops.cast(ops.cos(freqs_cis_sliced), v.dtype) + sin = ops.cast(ops.sin(freqs_cis_sliced), v.dtype) + + return cos, sin diff --git a/src/max/pipelines/architectures/pixtral/vision_encoder/transformer.py b/src/max/pipelines/architectures/pixtral/vision_encoder/transformer.py new file mode 100644 index 0000000000..e2089ead22 --- /dev/null +++ b/src/max/pipelines/architectures/pixtral/vision_encoder/transformer.py @@ -0,0 +1,113 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + + +from __future__ import annotations + +from dataclasses import dataclass +from typing import TYPE_CHECKING + +from max.dtype import DType +from max.graph import TensorValue, TensorValueLike, ops +from max.pipelines.nn.layer import Layer + +if TYPE_CHECKING: + from max.pipelines.nn.linear import Linear + from max.pipelines.nn.norm import RMSNorm + + from .attention import Attention + + +@dataclass +class MLP(Layer): + """ + Simple multi-layer perceptron composed of three linear layers. + Uses Gelu activation function. + """ + + gate_proj: Linear + down_proj: Linear + up_proj: Linear + + def __call__(self, x: TensorValueLike) -> TensorValue: + return self.down_proj((ops.silu(self.gate_proj(x)) * self.up_proj(x))) # type: ignore + + +@dataclass +class TransformerBlock(Layer): + """Stack of Attention, FeedForward, and RMSNorm layers.""" + + attention: Attention + mlp: MLP + attention_norm: RMSNorm + mlp_norm: RMSNorm + residual_multiplier: float = 1.0 + + def __call__( + self, + x: TensorValue, + attention_mask: TensorValueLike, + position_embeddings: tuple[TensorValue, TensorValue], + ) -> TensorValue: + residual_multiplier = ops.constant(self.residual_multiplier, x.dtype) + attn_out = self.attention( + self.attention_norm(x), + attention_mask, + position_embeddings, + ) + + if self.residual_multiplier != 1.0: + attn_out = attn_out * residual_multiplier + + h = x + attn_out + mlp = self.mlp(self.mlp_norm(h)) + if self.residual_multiplier != 1.0: + mlp = mlp * residual_multiplier + + return h + mlp + + +@dataclass +class Transformer(Layer): + """Transformer model consisting of TransformerBlock layers. + The input is embeddings created using convolution followed by normalization. + + The differences between this transformer and other decoder model transformers: + 1. Input to the transformer is patch embeddings created by convolutions not tokens. + 2. No linear(norm(output)) at the transformer output. + 3. It uses the 2d rotary embeddings defined for images which is different + from the rotary embeddings defined in other classes as rope: RotaryEmbedding + """ + + n_heads: int + layers: list[TransformerBlock] + dtype: DType + + def __call__( + self, + patch_embeds: TensorValue, + attention_mask: TensorValueLike, + position_embeddings: tuple[TensorValue, TensorValue], + **kwargs, + ): + h = patch_embeds + + for _, layer in enumerate(self.layers): + h = layer( + x=h, + attention_mask=attention_mask, + position_embeddings=position_embeddings, + **kwargs, + ) + + return ops.cast(h, self.dtype) diff --git a/src/max/pipelines/architectures/pixtral/vision_encoder/vision_encoder.py b/src/max/pipelines/architectures/pixtral/vision_encoder/vision_encoder.py new file mode 100644 index 0000000000..1c044dd18c --- /dev/null +++ b/src/max/pipelines/architectures/pixtral/vision_encoder/vision_encoder.py @@ -0,0 +1,93 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from __future__ import annotations + +from dataclasses import dataclass +from typing import List + +from max.dtype import DType +from max.graph import TensorValueLike, ops +from max.pipelines.nn import Conv2D +from max.pipelines.nn.layer import Layer +from max.pipelines.nn.norm import RMSNorm + +from .rotary_embedding_2d import RotaryEmbedding2D, patch_position_ids +from .transformer import Transformer + + +@dataclass +class VisionEncoder(Layer): + """The bare Pixtral vision encoder outputting raw hidden-states without any + specific head on top. + + It tokenizes the list of images and returns a representation of these images + embeddings of patches. + """ + + patch_conv: Conv2D + layer_norm: RMSNorm + patch_positional_embedding: RotaryEmbedding2D + transformer: Transformer + dtype: DType + patch_size: int = 16 + max_image_size: int = 1024 + + def __call__( + self, imgs: List[TensorValueLike], attention_mask: TensorValueLike + ): + """ + imgs: list of images of shape = (height, width, num_channels) + """ + # Images go through a convolution independently to get patched. + # Returns a list of [batch_size, hidden_size, height/patch_size, width/patch_size] tensors + patch_embeds_list = [ + self.patch_conv(ops.unsqueeze(ops.cast(img, self.dtype), 0)) + for img in imgs + ] + + # Flatten all images to a single tensor of patches of size (n_patches=seq_length, hidden_size). + # 1. Flattens each image's patches to (batch_size, n_patches in image, hidden_size). + # 2. Concat patches vertically on dim 1 to get a sequence of all patches + # TODO(MSDK-1192): replace transpose(1, 2) by permute(0, 2, 1) + # TODO(MSDK-1195): replace p.reshape((p.shape[0], p.shape[1], -1)) by p.flatten(2) + patch_embeds = ops.concat( + [ # p.shape = batch_size, patches_per_height, patches_per_width, hidden_size + p.reshape((p.shape[0], -1, p.shape[3])) + for p in patch_embeds_list + ], + axis=1, + ) + + # Pre-attention layer normalization + patch_embeds = self.layer_norm(patch_embeds) + + # Get unique ids of tokens (patches) based on row and col idx in the image (position). + # These help the model understand the spatial layout of the image. + position_ids = patch_position_ids( + patch_embeds_list, max_width=self.max_image_size // self.patch_size + ) + + # Positional Encodings + # map each position id to its corresponding embedding representing that posiiton + position_embedding = self.patch_positional_embedding( + patch_embeds, position_ids + ) + + encoder_output = self.transformer( + patch_embeds=patch_embeds, + attention_mask=attention_mask, + position_embeddings=position_embedding, + ) + + return encoder_output diff --git a/src/max/pipelines/architectures/qwen2/README.md b/src/max/pipelines/architectures/qwen2/README.md new file mode 100644 index 0000000000..d42abdc47d --- /dev/null +++ b/src/max/pipelines/architectures/qwen2/README.md @@ -0,0 +1,120 @@ +# Qwen 2.5 + +**Language:** Python + +**API**: MAX Graph + +This pipeline provides optimized support for the `Qwen2ForCausalLM` family +of large language models, as exemplified by the Qwen 2.5 7B Instruct text +completion model. The model itself has been constructed in Python +using the [MAX Graph API](https://docs.modular.com/max/graph/). + +The MAX Graph API provides an accessible interface to the construction of +flexible accelerated compute graphs, which are then optimized by the MAX +Engine's advanced graph compiler. This pipeline showcases how a large language +model can be fully defined using Python and MAX Graphs and then compiled for +optimal inference performance via the MAX Engine. + +## Model + +[Qwen 2.5](https://qwenlm.github.io/blog/qwen2.5/) is an open source large +language model released by [Qwen AI](https://qwenlm.github.io/). The weight +checkpoints have been released under an Apache 2.0 license. + +The default settings for this pipeline use the 7B Instruct set of pretrained +weights in the `bfloat16` encoding. + +## Usage + +The easiest way to try out this pipeline is with our Magic command-line tool. + +1. Install Magic on macOS and Ubuntu with this command: + + ```shell + curl -ssL https://magic.modular.com | bash + ``` + + Then run the source command that's printed in your terminal. + + To see the available commands, you can run `magic --help`. + [Learn more about Magic here](https://docs.modular.com/magic). + +2. Clone the MAX examples repository: + + If you don't already have a local clone of this repository, create one via: + + ```shell + git clone https://github.com/modular/max.git + ``` + + The following instructions assume that you're present within this pipeline's + directory, and you can change to it after cloning: + + ```shell + cd max/src/max/ + ``` + +3. Now run the Qwen text completion demo with the following command: + + ```shell + magic run qwen --prompt "I believe the meaning of life is" + ``` + +4. Host a chat completion endpoint via MAX Serve. + + MAX Serve provides functionality to host performant OpenAI compatible + endpoints using the FastAPI framework. + + You can configure the pipeline to be hosted by using the `--serve` argument. + For example: + + ```shell + magic run qwen --serve + ``` + + A request can be submitted via a cURL command. + + ```shell + curl -N http://localhost:8000/v1/chat/completions \ + -H "Content-Type: application/json" \ + -d '{ + "model": "Qwen/Qwen2.5-7B-Instruct", + "stream": true, + "messages": [ + {"role": "system", "content": "You are a helpful assistant."}, + {"role": "user", "content": "Who won the world series in 2020?"} + ] + }' + ``` + + Additionally, finetuned weights hosted on Hugging Face for any compatible + `Qwen2ForCausalLM` model can be used with this optimized architecture + via the `serve` command: + + ```shell + magic run serve --model-path=Qwen/Qwen2.5-7B-Instruct + ``` + +## Options + +The following command-line options are available to customize operation of the +pipeline: + +- `--max-length`: Controls the maximum length of the text sequence + (includes the input tokens). +- `--max-new-tokens`: The maximum number of new tokens to generate. If a -1 + value is provided, the model will continue to generate tokens for the entire + context length. (Default value: -1) +- `--prompt`: The text prompt to use for further generation. +- `--save-to-serialized-model-path`: If specified, writes the serialized model + to this path. +- `--serialized-model-path`: If specified, tries to load a serialized model + from this path. +- `--top-k`: Limits the sampling to the K most probable tokens. Default is 1. +- `--weight-path`: Overrides the default URL, and allows for an + already-downloaded pretrained weight file to be used with the model. +- `--max-batch-size`: Specifies the maximum batch size to be used. + Default is 1. +- `--devices`: Specifies the device(s) to use for the model. This can optionally + be "cpu", "gpu", or a comma-separated list of GPU ID(s) like "gpu-0,gpu-1". + Defaults to the first available GPU, or "cpu" if no GPUs are available. diff --git a/src/max/pipelines/architectures/qwen2/__init__.py b/src/max/pipelines/architectures/qwen2/__init__.py new file mode 100644 index 0000000000..69d2f5bacf --- /dev/null +++ b/src/max/pipelines/architectures/qwen2/__init__.py @@ -0,0 +1,16 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from .arch import qwen2_arch + +__all__ = ["qwen2_arch"] diff --git a/src/max/pipelines/architectures/qwen2/arch.py b/src/max/pipelines/architectures/qwen2/arch.py new file mode 100644 index 0000000000..f181ebfd1b --- /dev/null +++ b/src/max/pipelines/architectures/qwen2/arch.py @@ -0,0 +1,47 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from max.pipelines import ( + PipelineTask, + SupportedArchitecture, + SupportedEncoding, + TextTokenizer, + WeightsFormat, +) +from max.pipelines.kv_cache import KVCacheStrategy + +from .model import Qwen2Model + +qwen2_arch = SupportedArchitecture( + name="Qwen2ForCausalLM", + task=PipelineTask.TEXT_GENERATION, + example_repo_ids=[ + "Qwen/Qwen2.5-7B-Instruct", + ], + default_weights_format=WeightsFormat.safetensors, + default_encoding=SupportedEncoding.bfloat16, + supported_encodings={ + SupportedEncoding.float32: [ + KVCacheStrategy.PAGED, + KVCacheStrategy.CONTINUOUS, + KVCacheStrategy.NAIVE, + ], + SupportedEncoding.bfloat16: [ + KVCacheStrategy.PAGED, + KVCacheStrategy.CONTINUOUS, + KVCacheStrategy.NAIVE, + ], + }, + pipeline_model=Qwen2Model, + tokenizer=TextTokenizer, +) diff --git a/src/max/pipelines/architectures/qwen2/graph.py b/src/max/pipelines/architectures/qwen2/graph.py new file mode 100644 index 0000000000..cb5c51bbdf --- /dev/null +++ b/src/max/pipelines/architectures/qwen2/graph.py @@ -0,0 +1,309 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # +"""Build a Qwen2 model via Graph API from GGUF weights.""" + +import math +from typing import List, Union, cast + +from max.dtype import DType +from max.graph import ( + DeviceRef, + Graph, + TensorValue, + TensorValueLike, + Weight, + ops, +) +from max.graph.weights import Weights +from max.pipelines import PipelineConfig, RopeType, WeightsFormat +from max.pipelines.kv_cache import ( + FetchContinuousBatchingKVCacheCollection, + FetchPagedKVCacheCollection, + KVCacheParams, + KVCacheStrategy, +) +from max.pipelines.nn import ( + MLP, + AttentionWithRope, + Embedding, + Linear, + OptimizedRotaryEmbedding, + RMSNorm, + Transformer, + TransformerBlock, +) + + +def distribute_value( + v: TensorValue, devices: List[DeviceRef] +) -> List[TensorValue]: + return [v.to(device) for device in devices] + + +def shard_col_value( + x: TensorValueLike, devices: List[DeviceRef] +) -> List[TensorValue]: + n_devices = len(devices) + v = TensorValue(x) + col_size = v.shape[1] // n_devices + return [ + v[:, i * col_size : (i + 1) * col_size].to(device) + for i, device in enumerate(devices) + ] + + +def shard_row_value( + x: TensorValueLike, devices: List[DeviceRef] +) -> List[TensorValue]: + n_devices = len(devices) + v = TensorValue(x) + row_size = v.shape[0] // n_devices + return [ + v[i * row_size : (i + 1) * row_size, :].to(device) + for i, device in enumerate(devices) + ] + + +def feed_forward( + dtype: DType, + hidden_dim: int, + feed_forward_length: int, + weights: Weights, +) -> MLP: + return MLP( + linear( + dtype, + feed_forward_length, + hidden_dim, + weights.mlp.gate_proj, + ), + linear( + dtype, + hidden_dim, + feed_forward_length, + weights.mlp.down_proj, + ), + linear( + dtype, + feed_forward_length, + hidden_dim, + weights.mlp.up_proj, + ), + ) + + +def linear( + dtype: DType, + in_features: int, + out_features: int, + weights: Weights, +) -> Linear: + return Linear( + weights.weight.allocate( + dtype, + [in_features, out_features], + ) + ) + + +def rms_norm(dims: int, eps: float, weights: Weights) -> RMSNorm: + return RMSNorm(weights.weight.allocate(DType.float32, [dims]), eps) + + +def embedding( + pipeline_config: PipelineConfig, + vocab_size: int, + hidden_dim: int, + weights: Weights, +) -> Embedding: + return Embedding( + weights.weight.allocate( + pipeline_config.dtype, + [vocab_size, hidden_dim], + ) + ) + + +def attention( + kv_params: KVCacheParams, + pipeline_config: PipelineConfig, + rope: OptimizedRotaryEmbedding, + weights: Weights, + layer_idx: TensorValue, +) -> AttentionWithRope: + kv_weight_dim = ( + pipeline_config.huggingface_config.hidden_size + // pipeline_config.huggingface_config.num_attention_heads + ) * pipeline_config.huggingface_config.num_key_value_heads + + wq = weights.self_attn.q_proj.weight.allocate( + pipeline_config.dtype, + [ + pipeline_config.huggingface_config.hidden_size, + pipeline_config.huggingface_config.hidden_size, + ], + ) + wk = weights.self_attn.k_proj.weight.allocate( + pipeline_config.dtype, + [kv_weight_dim, pipeline_config.huggingface_config.hidden_size], + ) + wv = weights.self_attn.v_proj.weight.allocate( + pipeline_config.dtype, + [kv_weight_dim, pipeline_config.huggingface_config.hidden_size], + ) + + wqkv = ops.concat((wq, wk, wv)) + + bias_q = weights.self_attn.q_proj.bias.allocate( + pipeline_config.dtype, + [pipeline_config.huggingface_config.hidden_size], + ) + + bias_k = weights.self_attn.k_proj.bias.allocate( + pipeline_config.dtype, + [kv_weight_dim], + ) + + bias_v = weights.self_attn.v_proj.bias.allocate( + pipeline_config.dtype, + [kv_weight_dim], + ) + + bias_qkv = ops.concat((bias_q, bias_k, bias_v)) + + return AttentionWithRope( + n_heads=pipeline_config.huggingface_config.num_attention_heads, + kv_params=kv_params, + wqkv=wqkv, + wo=linear( + pipeline_config.dtype, + pipeline_config.huggingface_config.hidden_size, + pipeline_config.huggingface_config.hidden_size, + weights.self_attn.o_proj, + ), + rope=rope, + layer_idx=layer_idx, + bias=bias_qkv, + scale=math.sqrt(1.0 / kv_params.head_dim), + ) + + +def transformer( + graph: Graph, + pipeline_config: PipelineConfig, + weights: Weights, + kv_params: KVCacheParams, +) -> Transformer: + with graph: + if weights.rope_freqs.weight.exists(): + rope_scaling = weights.rope_freqs.weight.raw_tensor() + else: + rope_scaling = None + + interleaved_rope_weights = ( + pipeline_config.weights_format == WeightsFormat.gguf + and pipeline_config.rope_type == RopeType.normal + ) + rope = OptimizedRotaryEmbedding( + dim=pipeline_config.huggingface_config.hidden_size, + n_heads=pipeline_config.huggingface_config.num_attention_heads, + theta=pipeline_config.huggingface_config.rope_theta, + max_seq_len=pipeline_config.huggingface_config.max_position_embeddings, + rope_scaling=rope_scaling, + interleaved=interleaved_rope_weights, + ) + + rms_norm_eps = pipeline_config.huggingface_config.rms_norm_eps + layers = [ + TransformerBlock( + attention=attention( + kv_params, + pipeline_config, + rope, + weights.model.layers[i], + layer_idx=ops.constant(i, DType.uint32), + ), + mlp=feed_forward( + pipeline_config.dtype, + pipeline_config.huggingface_config.hidden_size, + pipeline_config.huggingface_config.intermediate_size, + weights.model.layers[i], + ), + attention_norm=rms_norm( + pipeline_config.huggingface_config.hidden_size, + rms_norm_eps, + weights.model.layers[i].input_layernorm, + ), + mlp_norm=rms_norm( + pipeline_config.huggingface_config.hidden_size, + rms_norm_eps, + weights.model.layers[i].post_attention_layernorm, + ), + ) + for i in range(pipeline_config.huggingface_config.num_hidden_layers) + ] + + embedding_layer = embedding( + pipeline_config, + pipeline_config.huggingface_config.vocab_size, + pipeline_config.huggingface_config.hidden_size, + weights.model.embed_tokens, + ) + + # Some model variants lack dedicated weights for a final linear + # layer, and share the embedding layer. + if weights.lm_head.weight.exists(): + output = Linear.create( + pipeline_config.dtype, + pipeline_config.graph_quantization_encoding, + pipeline_config.huggingface_config.vocab_size, + pipeline_config.huggingface_config.hidden_size, + weights.lm_head, + ) + else: + output = Linear.create( + pipeline_config.dtype, + pipeline_config.graph_quantization_encoding, + pipeline_config.huggingface_config.vocab_size, + pipeline_config.huggingface_config.hidden_size, + cast(Weight, embedding_layer.weights), + ) + + kv_collection: Union[ + FetchContinuousBatchingKVCacheCollection, + FetchPagedKVCacheCollection, + ] + if kv_params.cache_strategy == KVCacheStrategy.CONTINUOUS: + kv_collection = FetchContinuousBatchingKVCacheCollection(kv_params) + elif kv_params.cache_strategy == KVCacheStrategy.PAGED: + kv_collection = FetchPagedKVCacheCollection(kv_params) + else: + raise ValueError( + "Unsupported caching strategy " + str(kv_params.cache_strategy) + ) + + return Transformer( + dim=pipeline_config.huggingface_config.hidden_size, + n_heads=pipeline_config.huggingface_config.num_attention_heads, + layers=layers, + norm=rms_norm( + pipeline_config.huggingface_config.hidden_size, + rms_norm_eps, + weights.model.norm, + ), + output=output, + embedding=embedding_layer, + kv_params=kv_params, + kv_collection_constructor=kv_collection, + all_logits=pipeline_config.enable_echo, + ) diff --git a/src/max/pipelines/architectures/qwen2/model.py b/src/max/pipelines/architectures/qwen2/model.py new file mode 100644 index 0000000000..526234d031 --- /dev/null +++ b/src/max/pipelines/architectures/qwen2/model.py @@ -0,0 +1,498 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from __future__ import annotations + +import logging +import time +import warnings +from typing import List, Sequence, Union, cast + +import numpy as np +from max.driver import CPU, Device, Tensor +from max.dtype import DType +from max.engine import InferenceSession, Model +from max.graph import DeviceRef, Graph, TensorType, TensorValue +from max.graph.weights import Weights +from max.pipelines import ( + LogProbabilities, + ModelInputs, + ModelOutputs, + PipelineConfig, + PipelineModel, + TextContext, + upper_bounded_default, +) +from max.pipelines.dataprocessing import batch_padded_tokens_and_mask +from max.pipelines.kv_cache import ( + KVCacheInputs, + KVCacheManager, + KVCacheParams, + estimate_kv_cache_size, + load_kv_manager, +) +from max.pipelines.nn.compute_log_probabilities import compute_log_probabilities + +from .graph import transformer + + +class Qwen2Inputs(ModelInputs): + """A class representing inputs for the Qwen2 model. + + This class encapsulates the input tensors required for the Qwen2 model execution: + - tokens: A tensor containing the input token IDs + - input_row_offsets_or_attn_mask: A tensor containing the offsets for each row in the ragged input sequence, + or the attention mask for the padded input sequence + """ + + tokens: Tensor + input_row_offsets_or_attn_mask: Tensor + + def __init__( + self, + tokens: Tensor, + input_row_offsets_or_attn_mask: Tensor, + ) -> None: + self.tokens = tokens + self.input_row_offsets_or_attn_mask = input_row_offsets_or_attn_mask + + @property + def input_row_offsets(self) -> Tensor: + """Gets the row offsets of the ragged input sequence.""" + # TODO(bduke): this should implement a ragged tensor interface. + return self.input_row_offsets_or_attn_mask + + +class Qwen2Model(PipelineModel[TextContext]): + def __init__( + self, pipeline_config: PipelineConfig, session: InferenceSession + ) -> None: + super().__init__(pipeline_config, session) + self.model = self.load_model(session) + + def execute( + self, + model_inputs: ModelInputs, + kv_cache_inputs: KVCacheInputs | None = None, + ) -> ModelOutputs: + assert kv_cache_inputs is not None + + model_inputs = cast(Qwen2Inputs, model_inputs) + model_outputs = self.model.execute( + model_inputs.tokens, + model_inputs.input_row_offsets_or_attn_mask, + *kv_cache_inputs, + copy_inputs_to_device=( + not self.pipeline_config.cache_strategy.uses_opaque() + ), + ) + + assert isinstance(model_outputs[0], Tensor) + if len(model_outputs) > 1: + assert isinstance(model_outputs[1], Tensor) + logits = model_outputs[1] + else: + logits = None + + if self.pipeline_config.enable_echo: + return ModelOutputs( + next_token_logits=model_outputs[0], + logits=logits, + ) + else: + return ModelOutputs(next_token_logits=model_outputs[0]) + + def _prepare_ragged_initial_token_inputs( + self, context_batch: Sequence[TextContext] + ) -> Qwen2Inputs: + # Get input_row_offsets: start and end position of each batch in the + # combined total_seq_len dimension. + input_row_offsets = np.cumsum( + [0] + [ctx.active_length for ctx in context_batch], + dtype=np.uint32, + ) + + # Create a ragged token vector of length: sum(len(t) for t in tokens). + tokens = np.concatenate([ctx.next_tokens for ctx in context_batch]) + + return Qwen2Inputs( + tokens=Tensor.from_numpy(tokens).to( + self.pipeline_config.devices[0] + ), + input_row_offsets_or_attn_mask=Tensor.from_numpy( + input_row_offsets + ).to(self.pipeline_config.devices[0]), + ) + + def _prepare_padded_initial_token_inputs( + self, context_batch: Sequence[TextContext] + ) -> Qwen2Inputs: + # Get tokens and seq_ids + tokens = [ctx.next_tokens for ctx in context_batch] + + # Pad tokens and compute attention mask for the batch. + max_seq_len = self.kv_manager.max_sequence_length + start_pos = [max_seq_len] * len(context_batch) + next_tokens_batch, _, attn_mask = batch_padded_tokens_and_mask( + start_pos=start_pos, + tokens=tokens, + pad_to_multiple_of=self.pipeline_config.pad_to_multiple_of, + ) + + return Qwen2Inputs( + tokens=Tensor.from_numpy(next_tokens_batch).to( + self.pipeline_config.devices[0] + ), + input_row_offsets_or_attn_mask=Tensor.from_numpy(attn_mask).to( + self.pipeline_config.devices[0] + ), + ) + + # Ignored type due to challenge with Interface implementation and mypy rules. + def prepare_initial_token_inputs( + self, + context_batch: Sequence[TextContext], + ) -> Qwen2Inputs: + """Prepare the inputs for the first pass in multistep execution.""" + if self.pipeline_config.cache_strategy.uses_opaque(): + return self._prepare_ragged_initial_token_inputs(context_batch) + else: + return self._prepare_padded_initial_token_inputs(context_batch) + + def _prepare_ragged_next_token_inputs( + self, + next_tokens: Tensor, + prev_model_inputs: Qwen2Inputs, + ) -> Qwen2Inputs: + row_offsets_size = ( + prev_model_inputs.input_row_offsets_or_attn_mask.shape[0] + ) + next_row_offsets = self._input_row_offsets_prealloc[:row_offsets_size] + + return Qwen2Inputs( + tokens=next_tokens, + input_row_offsets_or_attn_mask=next_row_offsets, + ) + + def _prepare_padded_next_token_inputs( + self, + next_tokens: Tensor, + prev_model_inputs: Qwen2Inputs, + ) -> Qwen2Inputs: + batch_size = prev_model_inputs.tokens.shape[0] + start_pos = [ + prev_model_inputs.input_row_offsets_or_attn_mask.shape[-1] + ] * batch_size + + next_tokens_batch, _, attn_mask = batch_padded_tokens_and_mask( + start_pos=start_pos, + tokens=[next_tokens.to_numpy()], + pad_to_multiple_of=self.pipeline_config.pad_to_multiple_of, + ) + return Qwen2Inputs( + tokens=Tensor.from_numpy(next_tokens_batch).to( + self.pipeline_config.devices[0] + ), + input_row_offsets_or_attn_mask=Tensor.from_numpy(attn_mask).to( + self.pipeline_config.devices[0] + ), + ) + + def prepare_next_token_inputs( + self, + next_tokens: Tensor, + prev_model_inputs: ModelInputs, + ) -> Qwen2Inputs: + """Prepare the inputs for the next token in multistep execution. + This should avoid any device synchronization or copy operations. + """ + prev_model_inputs = cast(Qwen2Inputs, prev_model_inputs) + if self.pipeline_config.cache_strategy.uses_opaque(): + return self._prepare_ragged_next_token_inputs( + next_tokens, prev_model_inputs + ) + else: + return self._prepare_padded_next_token_inputs( + next_tokens, prev_model_inputs + ) + + @classmethod + def get_kv_params(cls, pipeline_config: PipelineConfig) -> KVCacheParams: + return KVCacheParams( + dtype=pipeline_config.cache_dtype, + n_kv_heads=pipeline_config.huggingface_config.num_key_value_heads, + head_dim=pipeline_config.huggingface_config.hidden_size + // pipeline_config.huggingface_config.num_attention_heads, + page_size=pipeline_config.kv_cache_page_size, + cache_strategy=pipeline_config.cache_strategy, + n_devices=len(pipeline_config.devices), + enable_prefix_caching=pipeline_config.enable_prefix_caching, + ) + + @classmethod + def get_num_layers(cls, pipeline_config: PipelineConfig) -> int: + return pipeline_config.huggingface_config.num_hidden_layers + + @classmethod + def calculate_max_seq_len(cls, pipeline_config: PipelineConfig) -> int: + try: + return upper_bounded_default( + upper_bound=pipeline_config.huggingface_config.max_position_embeddings, + default=pipeline_config.max_length, + ) + except ValueError as e: + msg = ( + "Unable to infer max_length for Qwen2, the provided " + f"max_length ({pipeline_config.max_length}) exceeds the " + f"model's max_position_embeddings " + f"({pipeline_config.huggingface_config.max_position_embeddings})." + ) + raise ValueError(msg) from e + + def load_kv_manager( + self, + session: InferenceSession, + available_cache_memory: int, + ) -> KVCacheManager: + return load_kv_manager( + params=self.get_kv_params(self.pipeline_config), + max_batch_size=self.pipeline_config.max_batch_size, + max_seq_len=self.calculate_max_seq_len(self.pipeline_config), + num_layers=self.pipeline_config.huggingface_config.num_hidden_layers, + devices=self.pipeline_config.devices, + available_cache_memory=available_cache_memory, + page_size=self.pipeline_config.kv_cache_page_size, + session=session, + ) + + @classmethod + def estimate_kv_cache_size( + cls, + pipeline_config: PipelineConfig, + available_cache_memory: int, + devices: List[Device], + ) -> int: + """Estimates the size of the kv cache in bytes.""" + return estimate_kv_cache_size( + params=cls.get_kv_params(pipeline_config), + max_batch_size=pipeline_config.max_batch_size, + max_seq_len=cls.calculate_max_seq_len(pipeline_config), + num_layers=pipeline_config.huggingface_config.num_hidden_layers, + available_cache_memory=available_cache_memory, + devices=devices, + ) + + def load_model( + self, + session: InferenceSession, + ) -> Model: + # Pre-allocate a buffer for input_row_offsets in multistep execution. + # We do this to avoid materializing and copying a buffer with each multistep step + + if self.pipeline_config.max_batch_size is None: + batch_size = 1 + else: + batch_size = self.pipeline_config.max_batch_size + 1 + + self._input_row_offsets_prealloc = Tensor.from_numpy( + np.arange(batch_size, dtype=np.uint32) + ).to(self.pipeline_config.devices[0]) + + # Read in weights. + self._weights = self.pipeline_config.load_weights() + + if serialized_path := self.pipeline_config.serialized_model_path: + # Hydrate all weights to be referenced by the serialized path. + weights_registry = {} + for name, weight in self._weights.items(): + weights_registry[name] = weight.raw_tensor() + + logging.info("Loading serialized model from %s", serialized_path) + + return session.load( + serialized_path, weights_registry=weights_registry + ) + + else: + logging.info("Building model...") + graph = self._build_graph(self._weights) + logging.info("Compiling...") + before = time.perf_counter() + model = session.load( + graph, weights_registry=self._weights.allocated_weights + ) + after = time.perf_counter() + logging.info(f"Compiling model took {after - before:.6f} seconds") + if ( + export_path + := self.pipeline_config.save_to_serialized_model_path + ): + logging.info("Exporting serialized model to %s", export_path) + model._export_mef(export_path) + return model + + def _unflatten_kv_inputs( + self, kv_inputs_flat: Sequence[Tensor] + ) -> List[tuple[Tensor, ...]]: + kv_params = self.get_kv_params(self.pipeline_config) + n_devices = kv_params.n_devices + fetch_types = self.kv_manager.input_symbols() + len_of_kv_tuple_per_dev = len(list(fetch_types[0])) + kv_caches_per_dev = [ + tuple( + kv_inputs_flat[ + i * len_of_kv_tuple_per_dev : (i + 1) + * len_of_kv_tuple_per_dev + ] + ) + for i in range(n_devices) + ] + return kv_caches_per_dev + + def _flatten_kv_inputs( + self, kv_caches_per_dev: List[tuple[Union[Tensor, TensorType], ...]] + ) -> Sequence[Union[Tensor, TensorType]]: + return [item for sublist in kv_caches_per_dev for item in sublist] + + def _build_opaque_graph(self, weights: Weights) -> Graph: + device0 = self.pipeline_config.devices[0] + device_ref = DeviceRef(device0.label, device0.id) + tokens_type = TensorType( + DType.int64, shape=["total_seq_len"], device=device_ref + ) + # NOTE: input_row_offsets_len should be batch_size + 1. + input_row_offsets_type = TensorType( + DType.uint32, shape=["input_row_offsets_len"], device=device_ref + ) + + kv_cache_args = self.kv_manager.input_symbols()[0] + + with Graph( + "Qwen2", + input_types=[ + tokens_type, + input_row_offsets_type, + *kv_cache_args, + ], + ) as graph: + model = transformer( + graph, + self.pipeline_config, + weights, + self.get_kv_params(self.pipeline_config), + ) + tokens, input_row_offsets, *kv_cache = graph.inputs + + assert isinstance(tokens, TensorValue) + assert len(kv_cache) == 4 + assert isinstance(kv_cache[0], TensorValue) + assert isinstance(kv_cache[1], TensorValue) + assert isinstance(kv_cache[2], TensorValue) + assert isinstance(kv_cache[3], TensorValue) + + outputs = model( + tokens, + (kv_cache[0], kv_cache[1], kv_cache[2], kv_cache[3]), + input_row_offsets=input_row_offsets, + ) + graph.output(*outputs) + return graph + + def _build_graph(self, weights: Weights) -> Graph: + g = self._build_opaque_graph(weights) + return g + + def compute_log_probabilities( + self, + model_inputs: ModelInputs, + model_outputs: ModelOutputs, + next_tokens: Tensor, + batch_top_n: list[int], + batch_echo: list[bool], + ) -> list[LogProbabilities | None] | None: + if any(echo for echo in batch_echo): + if model_outputs.logits is None: + warnings.warn( + "Could not get logprobs with echo because the full logits" + f" were not returned by {self.pipeline_config.model_path}" + " model. Please ensure that this model is started with " + "`--enable-echo`." + ) + assert not self.pipeline_config.enable_echo, ( + "Echo was enabled but logits were not returned." + ) + return None + logits = model_outputs.logits.to(CPU()).to_numpy() + + assert model_outputs.next_token_logits is not None + next_token_logits = model_outputs.next_token_logits.to(CPU()).to_numpy() + + sampled_tokens = next_tokens.to(CPU()).to_numpy() + assert isinstance(model_inputs, Qwen2Inputs) + tokens = model_inputs.tokens.to(CPU()).to_numpy() + + if self.pipeline_config.cache_strategy.uses_opaque(): + # Handle the ragged inputs + input_row_offsets = model_inputs.input_row_offsets_or_attn_mask.to( + CPU() + ).to_numpy() + + def _get_logits_and_samples( + batch_index: int, echo: bool + ) -> tuple[np.ndarray, np.ndarray]: + if echo: + start_offset = input_row_offsets[batch_index] + end_offset = input_row_offsets[batch_index + 1] + batch_logits = logits[start_offset:end_offset] + samples = np.concatenate( + ( + tokens[start_offset + 1 : end_offset], + sampled_tokens[batch_index : batch_index + 1], + ) + ) + else: + batch_logits = next_token_logits[ + batch_index : batch_index + 1 + ] + samples = sampled_tokens[batch_index : batch_index + 1] + return batch_logits, samples + + else: + # Handle batched inputs. The model pads them to the right so the seq + # lengths can be computed by finding the first 0 token. + seq_lens = np.sum(tokens > 0, axis=1) + + def _get_logits_and_samples( + batch_index: int, echo: bool + ) -> tuple[np.ndarray, np.ndarray]: + if echo: + seq_len = seq_lens[batch_index] + padded_tokens = tokens[batch_index] + + batch_logits = logits[batch_index, :seq_len, :] + samples = np.concatenate( + ( + padded_tokens[1:seq_len], + sampled_tokens[batch_index : batch_index + 1], + ) + ) + else: + batch_logits = next_token_logits[ + batch_index : batch_index + 1, : + ] + samples = sampled_tokens[batch_index : batch_index + 1] + return batch_logits, samples + + return compute_log_probabilities( + _get_logits_and_samples, batch_top_n, batch_echo + ) diff --git a/src/max/pipelines/architectures/replit/README.md b/src/max/pipelines/architectures/replit/README.md new file mode 100644 index 0000000000..a77f156e3a --- /dev/null +++ b/src/max/pipelines/architectures/replit/README.md @@ -0,0 +1,119 @@ +# Replit Code V1.5 3B + +**Language:** Python + +**API**: MAX Graph + +This pipeline demonstrates code completion from an initial prompt using +Replit's Code V1.5 3B large language model. The model itself has been +constructed in Python using the +[MAX Graph API](https://docs.modular.com/max/graph/). + +The MAX Graph API provides an accessible interface to the construction of +flexible accelerated compute graphs, which are then optimized by the MAX +Engine's advanced graph compiler. This pipeline showcases how a large language +model can be fully defined using Python and MAX Graphs and then compiled for +optimal inference performance via the MAX Engine. + +## Model + +[Replit Code](https://blog.replit.com/replit-code-v1_5) is an open source code +generation model trained on permissively licensed code and released by +[Replit](https://replit.com). The V1.5, 3B variant is the basis for this +implementation, and weights are +[obtained via Hugging Face](https://huggingface.co/replit/replit-code-v1-3b). + +## Usage + +The easiest way to try out this pipeline is with our Magic command-line tool. + +1. Install Magic on macOS and Ubuntu with this command: + + ```shell + curl -ssL https://magic.modular.com | bash + ``` + + Then run the source command that's printed in your terminal. + + To see the available commands, you can run `magic --help`. + [Learn more about Magic here](https://docs.modular.com/magic). + +2. Clone the MAX examples repository: + + If you don't already have a local clone of this repository, create one via: + + ```shell + git clone https://github.com/modular/max.git + ``` + + The following instructions assume that you're present within this pipeline's + directory, and you can change to it after cloning: + + ```shell + cd max/src/max/ + ``` + +3. Now run the Replit code completion demo with the following command: + + ```shell + magic run replit --prompt "def fibonacci(n):" + ``` + +4. Host a code completion endpoint via MAX Serve. + + MAX Serve provides functionality to host performant OpenAI compatible + endpoints using the FastAPI framework. + + You can configure the pipeline to be hosted by using the `--serve` argument. + For example: + + ```shell + magic run replit --serve + ``` + + A request can be submitted via a cURL command. + + ```shell + curl -N http://localhost:8000/v1/chat/completions \ + -H "Content-Type: application/json" \ + -d '{ + "model": "replit/replit-code-v1_5-3b", + "stream": true, + "messages": [ + {"role": "system", "content": "You are a helpful assistant."}, + {"role": "user", "content": "def fibonacci(n)"} + ] + }' + ``` + +## Options + +The following command-line options are available to customize operation of the +pipeline: + +- `--max-length`: Controls the maximum length of the text sequence + (includes the input tokens). + (Default value: 512) +- `--max-new-tokens`: The maximum number of new tokens to generate. If a -1 + value is provided, the model will continue to generate tokens for the entire + context length. (Default value: -1) +- `--prompt`: The text prompt to use for further generation. +- `--quantization-encoding`: The encoding to use for a datatype that can be + quantized to a low bits per weight format. The options for quantized formats + will download and cache default weights, but `float32` requires the use of + `--weight-path` to specify locally downloaded full-precision weights for use + in the model. + Valid values: `bfloat16`, `float32`. + (Default value: `float32`). +- `--save-to-serialized-model-path`: If specified, writes the serialized model + to this path. +- `--serialized-model-path`: If specified, tries to load a serialized model + from this path. +- `--top-k`: Limits the sampling to the K most probable tokens. Default is 1. +- `--weight-path`: Overrides the default URL, and allows for an + already-downloaded pretrained weight file to be used with the model. +- `--max-batch-size`: Specifies the maximum batch size to be used. + Default is 1. +- `--devices`: Specifies the device(s) to use for the model. This can optionally + be "cpu" or a comma-separated list of GPU ID(s). Defaults to the first + available GPU. diff --git a/src/max/pipelines/architectures/replit/__init__.py b/src/max/pipelines/architectures/replit/__init__.py new file mode 100644 index 0000000000..c49833f4ec --- /dev/null +++ b/src/max/pipelines/architectures/replit/__init__.py @@ -0,0 +1,16 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from .arch import replit_arch + +__all__ = ["replit_arch"] diff --git a/src/max/pipelines/architectures/replit/arch.py b/src/max/pipelines/architectures/replit/arch.py new file mode 100644 index 0000000000..1bd1dae74b --- /dev/null +++ b/src/max/pipelines/architectures/replit/arch.py @@ -0,0 +1,39 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from max.pipelines import ( + PipelineTask, + SupportedArchitecture, + SupportedEncoding, + TextTokenizer, + WeightsFormat, +) +from max.pipelines.kv_cache import KVCacheStrategy + +from .model import ReplitModel + +replit_arch = SupportedArchitecture( + name="MPTForCausalLM", + task=PipelineTask.TEXT_GENERATION, + example_repo_ids=[ + "modularai/replit-code-1.5", + ], + default_encoding=SupportedEncoding.bfloat16, + supported_encodings={ + SupportedEncoding.float32: [KVCacheStrategy.CONTINUOUS], + SupportedEncoding.bfloat16: [KVCacheStrategy.CONTINUOUS], + }, + pipeline_model=ReplitModel, + tokenizer=TextTokenizer, + default_weights_format=WeightsFormat.gguf, +) diff --git a/src/max/pipelines/architectures/replit/graph.py b/src/max/pipelines/architectures/replit/graph.py new file mode 100644 index 0000000000..91b01a59c2 --- /dev/null +++ b/src/max/pipelines/architectures/replit/graph.py @@ -0,0 +1,204 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +import math +from typing import Optional + +from max.dtype import DType +from max.graph import Graph, TensorType, TensorValue, ops +from max.graph.quantization import QuantizationEncoding +from max.graph.weights import GGUFWeights +from max.pipelines import PipelineConfig +from max.pipelines.kv_cache import ( + FetchContinuousBatchingKVCacheCollection, + KVCacheManager, + KVCacheParams, +) +from max.pipelines.nn import ( + AttentionImpl, + AttentionWithoutMask, + Embedding, + LayerNorm, + Linear, + MHAMaskVariant, + Sequential, + Transformer, + TransformerBlock, +) + + +def _feed_forward( + dtype: DType, + quantization_encoding: Optional[QuantizationEncoding], + input_dim: int, + hidden_dim: int, + weights: GGUFWeights, +): + return Sequential( + layers=[ + Linear( + weights.ffn_up.weight.allocate( + dtype, [hidden_dim, input_dim], quantization_encoding + ) + ), + ops.gelu, + Linear( + weights.ffn_down.weight.allocate( + dtype, [input_dim, hidden_dim], quantization_encoding + ) + ), + ] + ) + + +def _layer_norm(dims: int, eps: float, weights: GGUFWeights) -> LayerNorm: + return LayerNorm( + weight=weights.weight.allocate(DType.float32, [dims]), + eps=eps, + ) + + +def _attention( + pipeline_config: PipelineConfig, + weights: GGUFWeights, + kv_params: KVCacheParams, + layer_index: int, +) -> AttentionImpl: + k_in_dim = kv_params.n_kv_heads * kv_params.head_dim + v_in_dim = kv_params.n_kv_heads * kv_params.head_dim + q_in_dim = pipeline_config.huggingface_config.d_model + wqkv = TensorValue( + weights.attn_qkv.weight.allocate( + pipeline_config.dtype, + [ + k_in_dim + v_in_dim + q_in_dim, + pipeline_config.huggingface_config.d_model, + ], + pipeline_config.quantization_encoding.quantization_encoding, # type: ignore + ) + ) + + return AttentionWithoutMask( + n_heads=pipeline_config.huggingface_config.n_heads, + kv_params=kv_params, + wqkv=wqkv, + wo=Linear( + weights.attn_output.weight.allocate( + pipeline_config.dtype, + [ + pipeline_config.huggingface_config.d_model, + pipeline_config.huggingface_config.d_model, + ], + pipeline_config.quantization_encoding.quantization_encoding, # type: ignore + ) + ), + layer_idx=ops.constant(layer_index, dtype=DType.uint32), + mask_variant=MHAMaskVariant.CAUSAL_ALIBI_MASK, + scale=math.sqrt(1 / kv_params.head_dim), + ) + + +def _transformer( + graph: Graph, + pipeline_config: PipelineConfig, + weights: GGUFWeights, + kv_params: KVCacheParams, +): + with graph: + # Initialize Attention. + layers = [ + TransformerBlock( + attention=_attention( + pipeline_config, weights.blk[i], kv_params, i + ), + mlp=_feed_forward( + pipeline_config.dtype, + pipeline_config.quantization_encoding.quantization_encoding, # type: ignore + pipeline_config.huggingface_config.d_model, + 12288, + weights.blk[i], + ), + attention_norm=_layer_norm( + pipeline_config.huggingface_config.d_model, + 1e-5, + weights.blk[i].attn_norm, + ), + mlp_norm=_layer_norm( + pipeline_config.huggingface_config.d_model, + 1e-5, + weights.blk[i].ffn_norm, + ), + ) + for i in range(pipeline_config.huggingface_config.n_layers) + ] + + # Initialize Shared Embedding Weights. + shared_embedding_weight = weights.token_embd.weight.allocate( + pipeline_config.dtype, + [ + pipeline_config.huggingface_config.vocab_size, + pipeline_config.huggingface_config.d_model, + ], + pipeline_config.quantization_encoding.quantization_encoding, # type: ignore + ) + + return Transformer( + dim=pipeline_config.huggingface_config.d_model, + n_heads=pipeline_config.huggingface_config.n_heads, + layers=layers, + norm=_layer_norm( + pipeline_config.huggingface_config.d_model, + 1e-5, + weights.output_norm, + ), + output=Linear(shared_embedding_weight), + embedding=Embedding(shared_embedding_weight), + kv_params=kv_params, + kv_collection_constructor=FetchContinuousBatchingKVCacheCollection( + kv_params + ), + all_logits=pipeline_config.enable_echo, + ) + + +def _build_graph( + pipeline_config: PipelineConfig, + weights: GGUFWeights, + kv_params: KVCacheParams, + kv_manager: KVCacheManager, +) -> Graph: + # Graph input types. + tokens_type = TensorType(DType.int64, shape=["total_seq_len"]) + input_row_offsets_type = TensorType( + DType.uint32, shape=["input_row_offsets_len"] + ) + kv_cache_types = kv_manager.input_symbols()[0] + + # Initialize Graph. + with Graph( + "replit", + input_types=[ + tokens_type, + input_row_offsets_type, + *kv_cache_types, + ], + ) as graph: + model = _transformer(graph, pipeline_config, weights, kv_params) + tokens, input_row_offsets, *kv_cache_inputs = graph.inputs + outputs = model( + tokens=tokens, + input_row_offsets=input_row_offsets, + kv_cache_inputs=kv_cache_inputs, + ) + graph.output(*outputs) + return graph diff --git a/src/max/pipelines/architectures/replit/model.py b/src/max/pipelines/architectures/replit/model.py new file mode 100644 index 0000000000..211d63a840 --- /dev/null +++ b/src/max/pipelines/architectures/replit/model.py @@ -0,0 +1,316 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from __future__ import annotations + +import logging +import time +import warnings +from collections.abc import Sequence +from typing import cast + +import numpy as np +from max.driver import Device, DeviceSpec, Tensor +from max.engine import InferenceSession, Model +from max.graph.weights import GGUFWeights +from max.pipelines import ( + LogProbabilities, + ModelInputs, + ModelOutputs, + PipelineConfig, + PipelineModel, + TextContext, + upper_bounded_default, +) +from max.pipelines.kv_cache import ( + KVCacheInputs, + KVCacheManager, + KVCacheParams, + estimate_kv_cache_size, + load_kv_manager, +) +from max.pipelines.nn.compute_log_probabilities import compute_log_probabilities + +from .graph import _build_graph + +logger = logging.getLogger("max.pipelines") + + +class ReplitInputs(ModelInputs): + """A class representing inputs for the Replit model. + + This class encapsulates the input tensors required for the Replit model execution: + - tokens: A tensor containing the input token IDs + - input_row_offsets: A tensor containing the offsets for each row in the ragged input sequence + """ + + tokens: Tensor + input_row_offsets: Tensor + + def __init__( + self, + tokens: Tensor, + input_row_offsets: Tensor, + ) -> None: + self.tokens = tokens + self.input_row_offsets = input_row_offsets + + +class ReplitModel(PipelineModel[TextContext]): + def __init__( + self, pipeline_config: PipelineConfig, session: InferenceSession + ) -> None: + if pipeline_config.device_specs[0] == DeviceSpec.cpu(): + msg = "Replit currently only supported on gpu." + raise ValueError(msg) + + super().__init__(pipeline_config, session) + self.model = self.load_model(session) + + def execute( + self, + model_inputs: ModelInputs, + kv_cache_inputs: KVCacheInputs | None = None, + ) -> ModelOutputs: + model_inputs = cast(ReplitInputs, model_inputs) + assert kv_cache_inputs is not None, "Replit has KV cache inputs" + model_outputs = self.model.execute( + model_inputs.tokens, + model_inputs.input_row_offsets, + *kv_cache_inputs, + copy_inputs_to_device=False, + ) + if self.pipeline_config.enable_echo: + assert len(model_outputs) == 2 + assert isinstance(model_outputs[0], Tensor) + assert isinstance(model_outputs[1], Tensor) + return ModelOutputs( + next_token_logits=model_outputs[0], logits=model_outputs[1] + ) + else: + assert len(model_outputs) == 1 + assert isinstance(model_outputs[0], Tensor) + return ModelOutputs(next_token_logits=model_outputs[0]) + + def prepare_initial_token_inputs( + self, + context_batch: Sequence[TextContext], + ) -> ReplitInputs: + # Get input_row_offsets: start and end position of each batch in the + # combined total_seq_len dimension. + input_row_offsets = np.cumsum( + [0] + [ctx.active_length for ctx in context_batch], + dtype=np.uint32, + ) + + # Create a ragged token vector of length: sum(len(t) for t in tokens). + tokens = np.concatenate([ctx.next_tokens for ctx in context_batch]) + + return ReplitInputs( + tokens=Tensor.from_numpy(tokens).to( + self.pipeline_config.devices[0] + ), + input_row_offsets=Tensor.from_numpy(input_row_offsets).to( + self.pipeline_config.devices[0] + ), + ) + + def prepare_next_token_inputs( + self, + next_tokens: Tensor, + prev_model_inputs: ModelInputs, + ) -> ReplitInputs: + prev_model_inputs = cast(ReplitInputs, prev_model_inputs) + row_offsets_size = prev_model_inputs.input_row_offsets.shape[0] + next_row_offsets = self._input_row_offsets_prealloc[:row_offsets_size] + return ReplitInputs( + tokens=next_tokens, + input_row_offsets=next_row_offsets, + ) + + @classmethod + def get_num_layers(cls, pipeline_config: PipelineConfig) -> int: + return pipeline_config.huggingface_config.n_layers + + @classmethod + def get_kv_params(cls, pipeline_config: PipelineConfig) -> KVCacheParams: + return KVCacheParams( + dtype=pipeline_config.cache_dtype, + n_kv_heads=pipeline_config.huggingface_config.attn_config[ + "kv_n_heads" + ], + head_dim=pipeline_config.huggingface_config.d_model + // pipeline_config.huggingface_config.n_heads, + cache_strategy=pipeline_config.cache_strategy, + page_size=pipeline_config.kv_cache_page_size, + enable_prefix_caching=pipeline_config.enable_prefix_caching, + ) + + @classmethod + def calculate_max_seq_len(cls, pipeline_config: PipelineConfig) -> int: + try: + return upper_bounded_default( + upper_bound=pipeline_config.huggingface_config.max_seq_len, + default=pipeline_config.max_length, + ) + except ValueError as e: + msg = ( + "Unable to infer max_length for Replit, the provided " + f"max_length ({pipeline_config.max_length}) exceeds the " + f"model's max_seq_len " + f"({pipeline_config.huggingface_config.max_seq_len})." + ) + raise ValueError(msg) from e + + def load_kv_manager( + self, + session: InferenceSession, + available_cache_memory: int, + ) -> KVCacheManager: + return load_kv_manager( + params=self.get_kv_params(self.pipeline_config), + max_batch_size=self.pipeline_config.max_batch_size, + max_seq_len=self.calculate_max_seq_len(self.pipeline_config), + num_layers=self.pipeline_config.huggingface_config.n_layers, + devices=self.pipeline_config.devices, + available_cache_memory=available_cache_memory, + page_size=self.pipeline_config.kv_cache_page_size, + session=session, + ) + + @classmethod + def estimate_kv_cache_size( + cls, + pipeline_config: PipelineConfig, + available_cache_memory: int, + devices: list[Device], + ) -> int: + """Estimates the size of the kv cache in bytes.""" + return estimate_kv_cache_size( + params=cls.get_kv_params(pipeline_config), + max_batch_size=pipeline_config.max_batch_size, + max_seq_len=cls.calculate_max_seq_len(pipeline_config), + num_layers=pipeline_config.huggingface_config.n_layers, + available_cache_memory=available_cache_memory, + devices=devices, + ) + + def load_model( + self, + session: InferenceSession, + ) -> Model: + # Pre-allocate a buffer for input_row_offsets in multistep execution. + # We do this to avoid materializing and copying a buffer with each multistep step + assert self.pipeline_config.max_batch_size, ( + "Expected max_batch_size to be set" + ) + self._input_row_offsets_prealloc = Tensor.from_numpy( + np.arange(self.pipeline_config.max_batch_size + 1, dtype=np.uint32) + ).to(self.pipeline_config.devices[0]) + + # Read in weights. + weights = self.pipeline_config.load_weights() + if not isinstance(weights, GGUFWeights): + msg = "only gguf weights supported in Replit." + raise ValueError(msg) + + self._weights = weights + + if serialized_path := self.pipeline_config.serialized_model_path: + # Hydrate all weights to be referenced by the serialized path. + weights_registry = {} + for name, weight in self._weights.items(): + weights_registry[name] = weight.raw_tensor() + + logger.info("Loading serialized model from ", serialized_path) + + return session.load( + serialized_path, weights_registry=weights_registry + ) + + else: + logger.info("Building and compiling model...") + before = time.perf_counter() + graph = _build_graph( + self.pipeline_config, + self._weights, + self.get_kv_params(self.pipeline_config), + kv_manager=self.kv_manager, + ) + model = session.load( + graph, weights_registry=self._weights.allocated_weights + ) + after = time.perf_counter() + logger.info( + f"Building and compiling model took {after - before:.6f} seconds" + ) + if ( + export_path + := self.pipeline_config.save_to_serialized_model_path + ): + logger.info("Exporting serialized model to %s", export_path) + model._export_mef(export_path) + return model + + def compute_log_probabilities( + self, + model_inputs: ModelInputs, + model_outputs: ModelOutputs, + next_tokens: Tensor, + batch_top_n: list[int], + batch_echo: list[bool], + ) -> list[LogProbabilities | None] | None: + if any(echo for echo in batch_echo): + if model_outputs.logits is None: + warnings.warn( + "Could not get logprobs with echo because the full logits" + f" were not returned by {self.pipeline_config.model_path}" + " model. Please ensure that this model is started with " + "`--enable-echo`." + ) + assert not self.pipeline_config.enable_echo, ( + "Echo was enabled but logits were not returned." + ) + return None + logits = model_outputs.logits.to_numpy() + assert model_outputs.next_token_logits + next_token_logits = model_outputs.next_token_logits.to_numpy() + + sampled_tokens = next_tokens.to_numpy() + + # Handle the ragged inputs + model_inputs = cast(ReplitInputs, model_inputs) + tokens = model_inputs.tokens.to_numpy() + input_row_offsets = model_inputs.input_row_offsets.to_numpy() + + def _get_logits_and_samples( + batch_index: int, echo: bool + ) -> tuple[np.ndarray, np.ndarray]: + if echo: + start_offset = input_row_offsets[batch_index] + end_offset = input_row_offsets[batch_index + 1] + batch_logits = logits[start_offset:end_offset] + samples = np.concatenate( + ( + tokens[start_offset + 1 : end_offset], + sampled_tokens[batch_index : batch_index + 1], + ) + ) + else: + batch_logits = next_token_logits[batch_index : batch_index + 1] + samples = sampled_tokens[batch_index : batch_index + 1] + return batch_logits, samples + + return compute_log_probabilities( + _get_logits_and_samples, batch_top_n, batch_echo + ) diff --git a/src/max/pipelines/architectures/whisper/encoder.py b/src/max/pipelines/architectures/whisper/encoder.py new file mode 100644 index 0000000000..ce403a6390 --- /dev/null +++ b/src/max/pipelines/architectures/whisper/encoder.py @@ -0,0 +1,187 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # +from __future__ import annotations + +import math +from dataclasses import dataclass + +from max.dtype import DType +from max.graph import TensorValue, TensorValueLike, ops +from max.pipelines.nn import ( + Conv1D, + Embedding, + LayerNorm, + Linear, + Sequential, +) +from max.pipelines.nn.layer import Layer + + +@dataclass +class WhisperSdpaAttention(Layer): + n_heads: int + head_dim: int + + wq: Linear + wk: Linear + wv: Linear + wo: Linear + + def scaled_dot_product_attention( + self, + xq: TensorValueLike, + xk: TensorValueLike, + xv: TensorValueLike, + ) -> TensorValue: + xq = TensorValue(xq) + xk = TensorValue(xk) + xv = TensorValue(xv) + xq = xq.transpose(1, 2) + xk = xk.transpose(1, 2) + xv = xv.transpose(1, 2) + + scale = math.sqrt(1.0 / self.head_dim) + scores = xq @ ops.transpose(xk, 2, 3) + # Note, the graph compiler currently requires the order of operands + # to be `scores * scale` in order to pattern match the fused attention + # operator. + return ops.softmax(scores * scale) @ xv + + def __call__( + self, + x: TensorValue, + **kwargs, + ) -> TensorValue: + """Computes attention on x. + + Args: + x: Activations with shape (batch, seq_len, dim). + + Returns the result of WhisperSdpaAttention self attention on the input. + """ + x = TensorValue(x) + batch, seq_len = x.shape[0], x.shape[1] + # matmul weights + xq = self.wq(x) + xk = self.wk(x) + xv = self.wv(x) + + xq = ops.reshape(xq, [batch, seq_len, self.n_heads, self.head_dim]) + + xk = ops.reshape( + xk, + [ + batch, + seq_len, + self.n_heads, + self.head_dim, + ], + ) + xv = ops.reshape( + xv, + [ + batch, + seq_len, + self.n_heads, + self.head_dim, + ], + ) + + output = ( + self.scaled_dot_product_attention(xq, xk, xv) + .transpose(1, 2) + .reshape([batch, seq_len, -1]) + ) + return self.wo(output) + + +@dataclass +class WhisperEncoderLayer(Layer): + """Stack of Attention, FeedForward, and LayerNorm layers.""" + + attention: WhisperSdpaAttention + mlp: Sequential + attention_norm: LayerNorm + mlp_norm: LayerNorm + + def __call__( + self, + x: TensorValue, + **kwargs, + ) -> TensorValue: + attn_out = self.attention( + self.attention_norm(x), + **kwargs, + ) + + h = x + attn_out + h = h + self.mlp(self.mlp_norm(h)) + + return h + + +@dataclass +class WhisperEncoder(Layer): + """A Transformer consisting of a stem, positional embeddings, and self attention layers. + + The differences between this transformer and `nn.Transformer` are: + 1. Whisper passes the input through a stem of: + Two convolution layers with a filter width of 3 and the GELU activation + function where the second convolution layer has a stride of two. + + 2. After that, Sinusoidal position embeddings are then added to the output of the stem. + + After that, the usual Transformer blocks (with pre-activation residual blocks) are applied. + We use naive attention where the linear projections have a bias. + + 3. No final transformer linear layer "output". + """ + + conv1: Conv1D + conv2: Conv1D + embed_positions: Embedding + layers: list[WhisperEncoderLayer] + norm: LayerNorm # TODO: Is LayerNorm here not the same as nn.LayerNorm + + all_logits: bool = False + + def __call__( + self, + input_features: TensorValueLike, + **kwargs, + ) -> tuple[TensorValue, ...]: + """ + Args: + input_features: Tensor of shape (batch_size, feature_size, sequence_length) + expected_seq_length = config.max_source_positions * self.conv1.stride[0] * self.conv2.stride[0] + + """ + # Encoder stem: two convolution layers and the GELU activation function. + inputs_embeds = ops.gelu(self.conv1(input_features)) + inputs_embeds = ops.gelu(self.conv2(inputs_embeds)) + + # self.embed_positions.weights layers is of shape = (1500, 1280) + # TODO: Do we need the reshape to (batch_size, sequence_length, feature_size) or is it already in the right shape? + # inputs_embeds = ops.permute(inputs_embeds, [0, 2, 1]) + + # Add sinusoidal position embeddings to the output of the stem + h = inputs_embeds + self.embed_positions.weights + + for _, layer in enumerate(self.layers): + h = layer(h, **kwargs) + + # # A final layer normalization is applied to the encoder output + normalized = self.norm(h) + + # Always return float32 logits, no matter the activation type. + return (ops.cast(normalized, DType.float32),) diff --git a/src/max/pipelines/architectures/whisper/graph.py b/src/max/pipelines/architectures/whisper/graph.py new file mode 100644 index 0000000000..fc3ca1ab5a --- /dev/null +++ b/src/max/pipelines/architectures/whisper/graph.py @@ -0,0 +1,294 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +import numpy as np +from max.dtype import DType +from max.graph import Graph, TensorType, ops +from max.graph.weights import SafetensorWeights +from max.pipelines import PipelineConfig +from max.pipelines.nn import ( + Conv1D, + Embedding, + LayerNorm, + Linear, + Sequential, +) + +from .encoder import WhisperEncoder, WhisperEncoderLayer, WhisperSdpaAttention + + +def conv1d( + dtype: DType, + in_channels: int, + kernel_size: int, + stride: int, + padding: int, + out_channels: int, + weights: SafetensorWeights, +) -> Conv1D: + """Creates a 1D convolution layer. + For conv1: ( hugging_face weights: model.encoder.conv1.weight) + in_channels = 128 + out_channels = 1280 + kernel_size = 3 + stride = 1 + padding = 1 + + For conv2: ( hugging_face weights: model.encoder.conv2.weight) + in_channels = 1280 + out_channels = 1280 + kernel_size = 3 + stride = 2 + padding = 1 + """ + # Loaded torch weights shape = (out_channels, in_channels, kernel_size) = [1280, 128, 3]. + # Graph-API Conv1D expects (kernel_size, in_channels, out_channels) = [3, 128, 1280]. + # TODO: Implement Conv1D with bias and use it here. + bias = weights.bias.allocate(dtype, [out_channels]) + return Conv1D( + filter=ops.permute( + weights.weight.allocate( + dtype, [out_channels, in_channels, 1, kernel_size], None + ), + [2, 1, 0], + ), + stride=stride, + padding=padding, + ) + + +def embedding( + dtype: DType, + max_source_positions: int, + hidden_dim: int, + weights: SafetensorWeights, +): + return Embedding( + weights.weight.allocate( + dtype, + [max_source_positions, hidden_dim], + ) + ) + + +def layer_norm(dims: int, eps: float, weights: SafetensorWeights) -> LayerNorm: + # TODO: check the shape of bias + return LayerNorm( + weight=weights.weight.allocate(DType.bfloat16, [dims]), + eps=eps, + bias=weights.bias.allocate(DType.bfloat16, [dims]), + ) + + +def linear( + dtype: DType, + in_features: int, + out_features: int, + weights: SafetensorWeights, +) -> Linear: + # TODO: Check we are passing the correct dim for bias + return Linear( + weights.weight.allocate(dtype, [in_features, out_features], None), + bias=weights.bias.allocate(dtype, [out_features], None), + ) + + +def feed_forward( + dtype: DType, + hidden_dim: int, + feed_forward_length: int, + weights: SafetensorWeights, +): + return Sequential( + layers=[ + linear( + dtype, + feed_forward_length, + hidden_dim, + weights.fc1, + ), + ops.gelu, + linear( + dtype, + hidden_dim, + feed_forward_length, + weights.fc2, + ), + ] + ) + + +def attention( + pipeline_config: PipelineConfig, + weights: SafetensorWeights, + layer_index: int, +): + wq = weights.self_attn.q_proj.weight.allocate( + pipeline_config.dtype, + [ + pipeline_config.huggingface_config.d_model, + pipeline_config.huggingface_config.d_model, + ], + ) + wk = weights.self_attn.k_proj.weight.allocate( + pipeline_config.dtype, + [ + pipeline_config.huggingface_config.d_model, + pipeline_config.huggingface_config.d_model, + ], + ) + wv = weights.self_attn.v_proj.weight.allocate( + pipeline_config.dtype, + [ + pipeline_config.huggingface_config.d_model, + pipeline_config.huggingface_config.d_model, + ], + ) + + bias_q = weights.self_attn.q_proj.bias.allocate( + pipeline_config.dtype, [pipeline_config.huggingface_config.d_model] + ) + bias_v = weights.self_attn.v_proj.bias.allocate( + pipeline_config.dtype, [pipeline_config.huggingface_config.d_model] + ) + bias_k = ops.constant( + np.zeros(pipeline_config.huggingface_config.d_model), + pipeline_config.dtype, + ) + + wo = weights.attn_output.weight.allocate( + pipeline_config.dtype, + [ + pipeline_config.huggingface_config.d_model, + pipeline_config.huggingface_config.d_model, + ], + ) + bias_o = weights.self_attn.out_proj.bias.allocate( + pipeline_config.dtype, [pipeline_config.huggingface_config.d_model] + ) + return WhisperSdpaAttention( + n_heads=pipeline_config.huggingface_config.n_heads, + head_dim=pipeline_config.huggingface_config.d_model + // pipeline_config.huggingface_config.encoder_attention_heads, + wq=Linear(wq, bias=bias_q), + wk=Linear(wk, bias=bias_k), + wv=Linear(wv, bias=bias_v), + wo=Linear( + wo, + bias=bias_o, + ), + ) + + +def encoder( + pipeline_config: PipelineConfig, + weights: SafetensorWeights, +) -> WhisperEncoder: + conv1 = conv1d( + dtype=pipeline_config.dtype, + in_channels=pipeline_config.huggingface_config.num_mel_bins, + kernel_size=3, + stride=1, + padding=1, + out_channels=pipeline_config.huggingface_config.d_model, + weights=weights.model.encoder.conv1, + ) + + conv2 = conv1d( + dtype=pipeline_config.dtype, + in_channels=pipeline_config.huggingface_config.d_model, + kernel_size=3, + stride=2, + padding=1, + out_channels=pipeline_config.huggingface_config.d_model, + weights=weights.model.encoder.conv2, + ) + + # TODO: Not sure how to handle this. It learns embeddings to a max size. + embed_positions = embedding( + dtype=pipeline_config.dtype, + max_source_positions=pipeline_config.huggingface_config.max_source_positions, + hidden_dim=pipeline_config.huggingface_config.d_model, + weights=weights.model.encoder.embed_positions, + ) + + # EncoderBlocks + # TODO: Which cache strategy to use? Will both Continuous and paged will work? + layers = [ + WhisperEncoderLayer( + attention=attention( + pipeline_config, + weights.language_model.model.layers[i], + layer_idx=ops.constant(i, DType.uint32), # type: ignore + ), + mlp=feed_forward( + pipeline_config.dtype, + pipeline_config.huggingface_config.d_model, + pipeline_config.huggingface_config.encoder_ffn_dim, + weights.model.encoder.layers[i], + ), + attention_norm=layer_norm( + dims=pipeline_config.huggingface_config.d_model, + eps=1e-5, + weights=weights.model.encoder.layers[i].self_attn_layer_norm, + ), + mlp_norm=layer_norm( + dims=pipeline_config.huggingface_config.d_model, + eps=1e-5, + weights=weights.model.encoder.layers[i].final_layer_norm, + ), + ) + for i in range(pipeline_config.huggingface_config.encoder_layers) + ] + + # Hugging Face model uses default eps for nn.LayerNorm which is = 1e-5 + norm = layer_norm( + dims=pipeline_config.huggingface_config.d_model, + eps=1e-5, + weights=weights.model.encoder.layer_norm, + ) + + return WhisperEncoder( + conv1=conv1, + conv2=conv2, + embed_positions=embed_positions, + layers=layers, + norm=norm, + all_logits=False, + ) + + +def build_graph( + pipeline_config: PipelineConfig, + weights: SafetensorWeights, +) -> Graph: + # Audio input_features. + input_features_type = TensorType( + DType.float32, + shape=["batch_size", "num_mel_bins", "sequence_length"], + ) + + # Initialize Graph. + with Graph( + "whisper_audio_encoder", + input_types=[ + input_features_type, + ], + ) as graph: + model = encoder(pipeline_config, weights) + input_features = graph.inputs[0] + outputs = model( + input_features=input_features.tensor, + ) + graph.output(*outputs) + return graph diff --git a/src/max/pipelines/architectures/whisper/model.py b/src/max/pipelines/architectures/whisper/model.py new file mode 100644 index 0000000000..9e1e49eed4 --- /dev/null +++ b/src/max/pipelines/architectures/whisper/model.py @@ -0,0 +1,81 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from __future__ import annotations + +import logging +import time + +from max.driver import Tensor +from max.engine import InferenceSession, Model +from max.pipelines import ( + ModelInputs, + PipelineConfig, + PipelineModel, +) + +from .graph import build_graph + +logger = logging.getLogger("max.pipelines") + + +class WhisperInputs(ModelInputs): + """A class representing inputs for the Whisper model. + + input_features: + Float values mel features extracted from the raw speech waveform. + Raw speech waveform can be obtained by loading a `.flac` or `.wav` audio file into an array of type `List[float]` or a `numpy.ndarray`, *e.g.* viathe soundfile library (`pip install soundfile`). + To prepare the array into `input_features`, the [`AutoFeatureExtractor`] from the transformers library should be used for extracting the mel features, padding and conversion into a tensor of type `torch.FloatTensor`. See [`~WhisperFeatureExtractor.__call__`] + Shape = (batch_size, feature_size, sequence_length) + + decoder_input_ids: + Indices of decoder input sequence tokens in the vocabulary. Indices can be obtained using [`WhisperTokenizer`]. + Whisper uses the `decoder_start_token_id` as the starting token for `decoder_input_ids` generation. + Shape = (batch_size, target_sequence_length) + """ + + input_features: Tensor + decoder_input_ids: Tensor + + +class Whisper(PipelineModel): + def __init__( + self, pipeline_config: PipelineConfig, session: InferenceSession + ) -> None: + super().__init__(pipeline_config, session) + self.model = self.load_model(session) + + def load_model( + self, + session: InferenceSession, + ) -> Model: + """ + Load the Whisper speech recognition model. + """ + self.weights = self.pipeline_config.load_weights() + + logger.info("Building and compiling Whisper encoder-decoder model...") + before = time.perf_counter() + graph = build_graph( + self.pipeline_config, + self.weights, # type: ignore + ) + model = session.load( + graph, weights_registry=self.weights.allocated_weights + ) + after = time.perf_counter() + logger.info( + f"Compiling Whisper model took {after - before:.6f} seconds" + ) + + return model diff --git a/src/max/pipelines/config.py b/src/max/pipelines/config.py new file mode 100644 index 0000000000..d254ca7c0b --- /dev/null +++ b/src/max/pipelines/config.py @@ -0,0 +1,1093 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +"""Standardized config for Pipeline Inference.""" + +from __future__ import annotations + +import datetime +import glob +import json +import logging +import os +import struct +import time +from dataclasses import dataclass, field +from enum import Enum +from functools import cached_property +from pathlib import Path +from typing import Any, Optional, Union, cast + +import torch +from huggingface_hub import ( + HfFileSystem, + file_exists, + get_hf_file_metadata, + hf_hub_download, + hf_hub_url, + model_info, + repo_exists, +) +from huggingface_hub import constants as hf_hub_constants +from huggingface_hub.hf_api import ModelInfo +from huggingface_hub.utils import ( + EntryNotFoundError, + GatedRepoError, + HfHubHTTPError, + RepositoryNotFoundError, + RevisionNotFoundError, +) +from huggingface_hub.utils import tqdm as hf_tqdm +from max.driver import CPU, Accelerator, Device, DeviceSpec, accelerator_count +from max.dtype import DType +from max.graph.quantization import QuantizationConfig, QuantizationEncoding +from max.graph.weights import ( + GGUFWeights, + SafetensorWeights, + Weights, + WeightsAdapter, +) +from max.pipelines.kv_cache import KVCacheStrategy +from tqdm.contrib.concurrent import thread_map +from transformers import AutoConfig + +logger = logging.getLogger("max.pipelines") + + +class PipelineEngine(str, Enum): + MAX = "max" + HUGGINGFACE = "huggingface" + + +class SupportedEncoding(str, Enum): + """All possible encodings which may be supported by a particular model.""" + + float32 = "float32" + bfloat16 = "bfloat16" + q4_k = "q4_k" + q4_0 = "q4_0" + q6_k = "q6_k" + gptq = "gptq" + + def __repr__(self) -> str: + return self.name + + def __str__(self) -> str: + return self.name + + @classmethod + def parse_from_file_name(cls, name: str): + # TODO(AITLIB-127): Robustify detection of quantization encoding + name = name.lower() + if "f32" in name or "float32" in name: + return SupportedEncoding.float32 + elif "bf16" in name or "bfloat16" in name: + return SupportedEncoding.bfloat16 + elif "q4_k_m" in name: + return SupportedEncoding.q4_k + elif "q4_0" in name: + return SupportedEncoding.q4_0 + elif "q6_k" in name: + return SupportedEncoding.q6_k + elif "gptq" in name: + return SupportedEncoding.gptq + else: + return None + + @property + def quantization_encoding(self) -> Optional[QuantizationEncoding]: + if self not in _SUPPORTED_ENCODING_TO_QUANTIZATION_ENCODING: + raise ValueError( + f"SupportedEncoding({self}) does not have corresponding QuantizationEncoding." + ) + return _SUPPORTED_ENCODING_TO_QUANTIZATION_ENCODING[self] + + @property + def dtype(self) -> DType: + """The underlying model dtype associated with a quantization_encoding.""" + if self not in _SUPPORTED_ENCODING_TO_DTYPE: + raise ValueError( + f"SupportedEncoding({self}) does not have corresponding dtype." + ) + return _SUPPORTED_ENCODING_TO_DTYPE[self] + + @property + def cache_dtype(self) -> DType: + """The dtype that must be used in the kvcache for correctness.""" + if self not in _SUPPORTED_ENCODING_TO_CACHE_DTYPE: + raise ValueError( + f"SupportedEncoding({self}) does not have corresponding cache dtype." + ) + return _SUPPORTED_ENCODING_TO_CACHE_DTYPE[self] + + def supported_on(self, device_spec: DeviceSpec) -> bool: + """Returns whether this quantization encoding is supported on a device.""" + return device_spec.device_type in _SUPPORTED_DEVICES[self] + + +_SUPPORTED_ENCODING_TO_DTYPE = { + SupportedEncoding.float32: DType.float32, + SupportedEncoding.bfloat16: DType.bfloat16, + SupportedEncoding.q4_k: DType.uint8, + SupportedEncoding.q4_0: DType.uint8, + SupportedEncoding.q6_k: DType.uint8, + SupportedEncoding.gptq: DType.uint8, +} + + +_SUPPORTED_ENCODING_TO_CACHE_DTYPE = { + SupportedEncoding.float32: DType.float32, + SupportedEncoding.bfloat16: DType.bfloat16, + SupportedEncoding.q4_k: DType.float32, + SupportedEncoding.q4_0: DType.float32, + SupportedEncoding.q6_k: DType.float32, + SupportedEncoding.gptq: DType.bfloat16, +} + +_SUPPORTED_ENCODING_TO_QUANTIZATION_ENCODING = { + SupportedEncoding.float32: None, + SupportedEncoding.bfloat16: None, + SupportedEncoding.q4_k: QuantizationEncoding.Q4_K, + SupportedEncoding.q4_0: QuantizationEncoding.Q4_0, + SupportedEncoding.q6_k: QuantizationEncoding.Q6_K, + SupportedEncoding.gptq: QuantizationEncoding.GPTQ, +} + + +# Basic validation for supported devices for each type of encoding. +_SUPPORTED_DEVICES: dict[SupportedEncoding, tuple[str, ...]] = { + SupportedEncoding.float32: ("cpu", "gpu"), + SupportedEncoding.bfloat16: ("gpu",), + SupportedEncoding.q4_k: ("cpu",), + SupportedEncoding.q4_0: ("cpu",), + SupportedEncoding.q6_k: ("cpu",), + SupportedEncoding.gptq: ("gpu",), +} + + +class WeightsFormat(str, Enum): + gguf = "gguf" + safetensors = "safetensors" + pytorch = "pytorch" + + +class RepoType(str, Enum): + online = "online" + local = "local" + + +# Reference: https://github.com/ggerganov/llama.cpp/blob/eb5c3dc64bd967f2e23c87d9dec195f45468de60/src/llama.cpp#L20778 +class RopeType(str, Enum): + none = "none" + normal = "normal" + neox = "neox" + + +def _repo_exists_with_retry(repo_id: str) -> bool: + """ + Wrapper around huggingface_hub.repo_exists with retry logic. + Retries after 5, 30 and 60 seconds if we get a transient HTTP error. + + See huggingface_hub.repo_exists for details + """ + max_attempts = 3 + retry_delays_in_seconds = [ + 5, + 30, + 60, + ] + + for attempt, delay_in_seconds in enumerate(retry_delays_in_seconds): + try: + return repo_exists(repo_id) + except ( + RepositoryNotFoundError, + GatedRepoError, + RevisionNotFoundError, + EntryNotFoundError, + ) as e: + # Forward these specific errors to the user + logger.error(f"Hugging Face repository error: {str(e)}") + raise + except HfHubHTTPError as e: + if attempt == max_attempts - 1: + logger.error( + f"Failed to connect to Hugging Face Hub after {max_attempts} attempts: {str(e)}" + ) + raise + + logger.warning( + f"Transient Hugging Face Hub connection error (attempt {attempt + 1}/{max_attempts}): {str(e)}" + ) + logger.warning( + f"Retrying Hugging Face connection in {delay_in_seconds} seconds..." + ) + time.sleep(delay_in_seconds) + + assert False, ( + "This should never be reached due to the raise in the last attempt" + ) + + +@dataclass +class HuggingFaceRepo: + repo_id: str + trust_remote_code: bool = False + repo_type: Optional[RepoType] = None + + def __post_init__(self) -> None: + # Get repo type. + if not self.repo_type: + if os.path.exists(self.repo_id): + self.repo_type = RepoType.local + else: + self.repo_type = RepoType.online + + if self.repo_type == RepoType.online and not _repo_exists_with_retry( + self.repo_id + ): + raise ValueError(f"model_path: {self.repo_id} does not exist") + + def __str__(self) -> str: + return self.repo_id + + def __repr__(self) -> str: + return self.repo_id + + @cached_property + def info(self) -> ModelInfo: + if self.repo_type == RepoType.local: + raise ValueError( + "using model info, on local repos is not supported." + ) + elif self.repo_type == RepoType.online: + return model_info(self.repo_id, files_metadata=False) + else: + raise ValueError(f"Unsupported repo type: {self.repo_type}") + + @cached_property + def weight_files(self) -> dict[WeightsFormat, list[str]]: + safetensor_search_pattern = "*.safetensors" + gguf_search_pattern = "*.gguf" + pytorch_search_pattern = "*.bin" + + weight_files = {} + if self.repo_type == RepoType.local: + safetensor_paths = glob.glob( + os.path.join(self.repo_id, safetensor_search_pattern) + ) + gguf_paths = glob.glob( + os.path.join(self.repo_id, gguf_search_pattern) + ) + pytorch_paths = glob.glob( + os.path.join(self.repo_id, pytorch_search_pattern) + ) + elif self.repo_type == RepoType.online: + fs = HfFileSystem() + safetensor_paths = cast( + list[str], + fs.glob(f"{self.repo_id}/{safetensor_search_pattern}"), + ) + gguf_paths = cast( + list[str], + fs.glob(f"{self.repo_id}/{gguf_search_pattern}"), + ) + pytorch_paths = cast( + list[str], + fs.glob(f"{self.repo_id}/{pytorch_search_pattern}"), + ) + else: + raise ValueError(f"Unsupported repo type: {self.repo_type}") + + if safetensor_paths: + if len(safetensor_paths) == 1: + # If there is only one weight allow any name. + weight_files[WeightsFormat.safetensors] = [ + safetensor_paths[0].replace(f"{self.repo_id}/", "") + ] + else: + # If there is more than one weight, ignore consolidated tensors. + weight_files[WeightsFormat.safetensors] = [ + f.replace(f"{self.repo_id}/", "") + for f in safetensor_paths + if "consolidated" not in f + ] + + if gguf_paths: + weight_files[WeightsFormat.gguf] = [ + f.replace(f"{self.repo_id}/", "") for f in gguf_paths + ] + + if pytorch_paths: + weight_files[WeightsFormat.pytorch] = [ + f.replace(f"{self.repo_id}/", "") for f in pytorch_paths + ] + + return weight_files + + def size_of(self, filename: str) -> Union[int, None]: + if self.repo_type == RepoType.online: + url = hf_hub_url(self.repo_id, filename) + metadata = get_hf_file_metadata(url) + return metadata.size + raise NotImplementedError("not implemented for non-online repos.") + + @cached_property + def supported_encodings(self) -> list[SupportedEncoding]: + # TODO(AITLIB-128): Detection of supported encodings in weights can be cleaned up + supported_encodings = set([]) + + # Parse gguf file names. + for gguf_path in self.weight_files.get(WeightsFormat.gguf, []): + encoding = SupportedEncoding.parse_from_file_name(gguf_path) + if encoding: + supported_encodings.add(encoding) + + # Get Safetensor Metadata. + if WeightsFormat.safetensors in self.weight_files: + if self.repo_type == RepoType.local: + # Safetensor repos are assumed to only have one encoding in them. + with open( + os.path.join( + self.repo_id, + self.weight_files[WeightsFormat.safetensors][0], + ), + "rb", + ) as file: + # Read the first 8 bytes of the file + length_bytes = file.read(8) + # Interpret the bytes as a little-endian unsigned 64-bit integer + length_of_header = struct.unpack(" dict[WeightsFormat, list[Path]]: + files = [] + for gguf_file in self.weight_files.get(WeightsFormat.gguf, []): + file_encoding = SupportedEncoding.parse_from_file_name(gguf_file) + if file_encoding == encoding: + files.append(Path(gguf_file)) + + if files: + return {WeightsFormat.gguf: files} + else: + return {} + + def _get_safetensor_files_for_encoding( + self, encoding: SupportedEncoding + ) -> dict[WeightsFormat, list[Path]]: + if ( + WeightsFormat.safetensors in self.weight_files + and encoding == self.supported_encodings[0] + ): + return { + WeightsFormat.safetensors: [ + Path(f) + for f in self.weight_files[WeightsFormat.safetensors] + ] + } + + return {} + + def _get_pytorch_files_for_encoding( + self, encoding: SupportedEncoding + ) -> dict[WeightsFormat, list[Path]]: + if ( + WeightsFormat.pytorch in self.weight_files + and encoding == self.supported_encodings[0] + ): + return { + WeightsFormat.pytorch: [ + Path(f) for f in self.weight_files[WeightsFormat.pytorch] + ] + } + + return {} + + def files_for_encoding( + self, + encoding: SupportedEncoding, + weights_format: Optional[WeightsFormat] = None, + alternate_encoding: Optional[SupportedEncoding] = None, + ) -> dict[WeightsFormat, list[Path]]: + if weights_format == WeightsFormat.pytorch: + logger.warning( + "cannot infer encoding from .bin files, returning all bin files" + ) + return self._get_pytorch_files_for_encoding(encoding) + + if weights_format is WeightsFormat.gguf: + return self._get_gguf_files_for_encoding(encoding) + elif weights_format == WeightsFormat.safetensors: + return self._get_safetensor_files_for_encoding(encoding) + + gguf_files = self._get_gguf_files_for_encoding(encoding) + + safetensor_files = self._get_safetensor_files_for_encoding(encoding) + gguf_files.update(safetensor_files) + + pytorch_files = self._get_pytorch_files_for_encoding(encoding) + gguf_files.update(pytorch_files) + + if not gguf_files and alternate_encoding: + logger.warning( + "Could not find checkpoint with %s encoding, searching for %s files instead.", + encoding, + alternate_encoding, + ) + return self.files_for_encoding(alternate_encoding, weights_format) + return gguf_files + + def file_exists(self, filename: str) -> bool: + return file_exists(self.repo_id, filename) + + def download(self, filename: str, force_download: bool = False) -> Path: + return Path( + hf_hub_download( + self.repo_id, filename, force_download=force_download + ) + ) + + @property + def formats_available(self) -> list[WeightsFormat]: + return list(self.weight_files.keys()) + + def encoding_for_file(self, file: Union[str, Path]) -> SupportedEncoding: + if str(file).endswith(".safetensors"): + # If this file is safetensors, return the first encoding, as Safetensor repos can only have one. + return self.supported_encodings[0] + elif str(file).endswith(".gguf"): + encoding = SupportedEncoding.parse_from_file_name(str(file)) + if encoding: + return encoding + + raise ValueError( + f"gguf file, but encoding not found in file name: {file}" + ) + elif str(file).endswith(".bin"): + # If this file is pytorch, return the first encoding, as Pytorch repos only likely have one. + return self.supported_encodings[0] + else: + raise ValueError( + f"weight path: {file} not gguf or safetensors, cannot infer encoding from file." + ) + + +@dataclass +class SamplingParams: + top_k: int + enable_structured_output: bool + in_dtype: DType + out_dtype: DType + + +def _scan_available_devices() -> list[DeviceSpec]: + accel_count = accelerator_count() + if accel_count == 0: + return [DeviceSpec.cpu()] + else: + return [DeviceSpec.accelerator(i) for i in range(accel_count)] + + +@dataclass(frozen=False) +class PipelineConfig: + # When adding a new config parameter here, please remember to add a + # description to the `help()` method below + + # NOTE: model_path is made a str of "" by default, to avoid having + # it be Optional to check for None and then littering the codebase with + # asserts just to keep mypy happy. + model_path: str = "" + """repo_id of a Hugging Face model repository to use.""" + + huggingface_repo_id: str = "" + """DEPRECATED: repo_id of a Hugging Face model repository to use. Use `model_path` instead.""" + + huggingface_revision: str = hf_hub_constants.DEFAULT_REVISION + """Branch or Git revision of Hugging Face model repository to use.""" + + engine: Optional[PipelineEngine] = None + """Engine backend to use for serving, 'max' for the max engine, or 'huggingface' as fallback option for improved model coverage.""" + + architecture: Optional[str] = None + """Model architecture to run.""" + + weight_path: list[Path] = field(default_factory=list) + """Optional path or url of the model weights to use.""" + + device_specs: list[DeviceSpec] = field( + default_factory=_scan_available_devices + ) + """Devices to run inference upon. This option is not documented in help() as it shouldn't be used directly via the CLI entrypoint.""" + + quantization_encoding: Optional[SupportedEncoding] = None + """Weight encoding type.""" + + serialized_model_path: Optional[str] = None + """If specified, tries to load a serialized model from this path.""" + + save_to_serialized_model_path: Optional[str] = None + """If specified, tries to save a serialized model to this path.""" + + max_length: Optional[int] = None + """Maximum sequence length of the model.""" + + max_new_tokens: int = -1 + """Maximum number of new tokens to generate during a single inference pass of the model.""" + + max_batch_size: Optional[int] = None + """Maximum batch size to execute with the model. + This is set to one, to minimize memory consumption for the base case, in which a person is + running a local server to test out MAX. For users launching in a server scenario, the expectation + is that this value should be set higher based on server capacity.""" + + max_ce_batch_size: int = 32 + """Maximum cache size to reserve for a single context encoding batch. + The actual limit is the lesser of this and `max_batch_size`.""" + + enable_chunked_prefill: bool = True + """Enable chunked prefill to split context encoding requests into multiple chunks + based on 'target_num_new_tokens'.""" + + enable_in_flight_batching: bool = False + """When enabled, prioritizes token generation by batching it with context + encoding requests. Requires chunked prefill.""" + + cache_strategy: KVCacheStrategy = KVCacheStrategy.MODEL_DEFAULT + """The cache strategy to use. This defaults to `model_default`, which will set the cache + strategy based on the default strategy for the architecture requested. + + You can also force the engine to use a specific caching strategy: `naive` | `continuous` | `paged`. + """ + + max_num_steps: int = -1 + """The number of steps to run for multi-step scheduling. -1 specifies a default value based on + configuration and platform. Ignored for models which are not auto-regressive (e.g. embedding + models).""" + + pad_to_multiple_of: int = 2 + """Pad input tensors to be a multiple of value provided.""" + + kv_cache_page_size: int = 128 + """The number of tokens in a single page in the paged KVCache.""" + + enable_prefix_caching: bool = False + """Whether to enable prefix caching for the paged attention KVCache.""" + + device_memory_utilization: float = 0.9 + """The fraction of available device memory that the process should consume. + + This is used to inform the size of the KVCache workspace: + kv_cache_workspace = (total_free_memory * device_memory_utilization) - model_weights_size + """ + + target_num_new_tokens: Optional[int] = None + """The target number of un-encoded tokens to include in each batch. + If not set, this will be set to a best-guess optimal value based on model, hardware, and available memory.""" + + top_k: int = 1 + """Limits the sampling to the K most probable tokens. This defaults to 1, which enables greedy sampling.""" + + enable_structured_output: bool = False + """Enable structured generation/guided decoding for the server. This allows the user to pass a json + schema in the response_format field, which the LLM will adhere to.""" + + trust_remote_code: bool = False + """Whether or not to allow for custom modelling files on Hugging Face.""" + + force_download: bool = False + """Whether to force download a given file if it's already present in the local cache.""" + + enable_echo: bool = False + """Whether the model should be built with echo capabilities.""" + + rope_type: Optional[RopeType] = None + """Force using a specific rope type: `none` | `normal` | `neox`. Only matters for GGUF weights.""" + + pool_embeddings: bool = True + """Whether to pool embedding outputs.""" + + _huggingface_config: Optional[AutoConfig] = None + """The Hugging Face config associated with the `model-path`.""" + + _devices: list[Device] = field(default_factory=list) + """The underlying initialized devices, created by the specific `device_specs`.""" + + _weight_adapters: dict[WeightsFormat, WeightsAdapter] = field( + default_factory=dict + ) + """Weight adapter for the provided `weight_path`.""" + + _weights_repo_id: Optional[str] = None + """Hugging Face repo id to load weights from only. This should only be set by internal code.""" + + _available_cache_memory: Optional[int] = None + """The amount of available cache memory in bytes. This should only be set by internal code.""" + + _quant_config: Optional[QuantizationConfig] = None + """Optional config for specifying quantization parameters. This should only be set by internal code.""" + + max_cache_batch_size: Optional[int] = None + """DEPRECATED: The maximum cache batch size to use for the model. Use max_batch_size instead.""" + + gpu_profiling: str = os.environ.get("MODULAR_ENABLE_PROFILING", "false") + """Whether to enable GPU profiling of the model.""" + + use_experimental_kernels: str = os.environ.get( + "USE_EXPERIMENTAL_KERNELS", "false" + ) + + def __post_init__(self) -> None: + # Validate if a provided max_length is non-negative. + if self.max_length is not None and self.max_length < 0: + raise ValueError("max_length must be non-negative.") + + if self.huggingface_repo_id != "": + logger.warning( + "--huggingface-repo-id is deprecated, use `--model-path` instead. This setting will stop working in a future release." + ) + self.model_path = self.huggingface_repo_id + + if self.max_cache_batch_size is not None: + logger.warning( + "--max-cache-batch-size is deprecated, use `--max-batch-size` instead. This setting will stop working in a future release." + ) + self.max_batch_size = self.max_cache_batch_size + + # Validate that if weight_paths are passed as strings, they are converted to Path. + if isinstance(self.weight_path, tuple): + self.weight_path = list(self.weight_path) + elif not isinstance(self.weight_path, list): + self.weight_path = [self.weight_path] + weight_paths = [] + # Validate that if weight_paths are passed as strings, they are converted to Path. + for path in self.weight_path: + if isinstance(path, str): + path = Path(path) + elif not isinstance(path, Path): + raise ValueError( + "weight_path provided must either be string or Path:" + f" '{path}'" + ) + elif path.is_file(): + # If we already exist on the OS. Dont parse the path, just continue. + weight_paths.append(path) + continue + + # If the path, looks like it may start with a Hugging Face repo id, + # check if the repo_id is the same as the one provided. + # If it is the same, set the weight_path to just be the file_name post repo_id + # If it is different, set the _weights_repo_id to be that repo_id + # and set the path to be the file_name without the repo_id. + if path_pieces := str(path).split("/"): + if len(path_pieces) >= 3: + repo_id = f"{path_pieces[0]}/{path_pieces[1]}" + file_name = "/".join(path_pieces[2:]) + if self.model_path != "" and repo_id == self.model_path: + path = Path(file_name) + elif file_exists(repo_id, file_name): + self._weights_repo_id = repo_id + path = Path(file_name) + elif self.model_path == "": + raise ValueError( + "Unable to derive model_path from weight_path, " + "please provide a valid Hugging Face repository id." + ) + + weight_paths.append(path) + + self.weight_path = weight_paths + + # If we cannot infer the weight path, we lean on the model_path + # to provide it. + if len(self.weight_path) == 0: + if self.model_path == "": + raise ValueError( + "model_path must be provided and must be a valid Hugging Face repository" + ) + elif (not os.path.exists(self.model_path)) and ( + not _repo_exists_with_retry(self.model_path) + ): + raise ValueError( + f"{self.model_path} is not a valid Hugging Face repository" + ) + elif self.model_path == "" and self._weights_repo_id is not None: + # weight_path is used and we should derive the repo_id from it. + # At this point, we should have a resolved weight path - be it local or remote HF. + # weight_path should not be used directly anymore. + self.model_path = self._weights_repo_id + + # Set sensible defaults. These are platform-specific. + if self.max_num_steps < 0: + if ( + self.enable_structured_output + or self.device_specs[0] == DeviceSpec.cpu() + ): + self.max_num_steps = 1 + else: + self.max_num_steps = 10 + + if self.max_num_steps > 1 and self.enable_structured_output: + raise ValueError( + "max_num_steps > 1 not supported when enable_structured_output = True" + ) + + if self.enable_structured_output: + if self.device_specs[0] == DeviceSpec.cpu(): + raise ValueError( + "enable_structured_output is not currently supported on CPU." + ) + + if self.gpu_profiling not in ( + "false", + "off", + "no", + "0", + "true", + "on", + "yes", + "1", + "detailed", + ): + raise ValueError("gpu_profiling must be a boolean or 'detailed'") + + def __getstate__(self) -> dict[str, Any]: + """Override `__getstate__` to exclude the Hugging Face config.""" + state = self.__dict__.copy() + state.pop("_huggingface_config") + state["_devices"] = [] + return state + + @property + def graph_quantization_encoding(self) -> Optional[QuantizationEncoding]: + """Converts the CLI encoding to a MAX graph quantization encoding. + + Returns: + The graph quantization encoding corresponding to the CLI encoding. + + Raises: + ValueError: If no CLI encoding was specified. + """ + if self.quantization_encoding is None: + raise ValueError( + "can't convert `None` CLI encoding to graph quantization encoding" + ) + + return self.quantization_encoding.quantization_encoding + + def finalize_encoding_config(self): + """Depending on the encoding picked, we get some more parameters from the hf config""" + if self.quantization_encoding == SupportedEncoding.gptq: + hf_config = self.huggingface_config + hf_quant_config = hf_config.quantization_config + self._quant_config = QuantizationConfig( + quant_method=hf_quant_config["quant_method"], + bits=hf_quant_config["bits"], + group_size=hf_quant_config["group_size"], + desc_act=hf_quant_config["desc_act"], + sym=hf_quant_config["sym"], + ) + + def update_architecture(self) -> None: + if self.architecture is None: + # Retrieve architecture from model_path. + # This is done without using the huggingface config, to reduce the + # memory stored in this object, before it reaches the model worker. + hf_config = AutoConfig.from_pretrained( + self.model_path, + trust_remote_code=self.trust_remote_code, + ) + + # If we cannot get an architecture from the model_path, + # we cannot map the model to an internal architecture, and cannot + # be run using the MAX engine. + + architectures = getattr(hf_config, "architectures", None) + if architectures: + if len(architectures) > 1: + logger.warning( + "more than one architecture listed in Hugging Face config," + " using the first one." + ) + self.architecture = architectures[0] + else: + logger.warning( + "architectures not listed in Hugging Face config, trying with general `huggingface` engine" + ) + + self.engine = PipelineEngine.HUGGINGFACE + + @property + def huggingface_config(self) -> AutoConfig: + """Given the model_path, return the Hugging Face Config.""" + if self._huggingface_config is None: + # Lazy initialize the Hugging Face config field. + self._huggingface_config = AutoConfig.from_pretrained( + self.model_path, + trust_remote_code=self.trust_remote_code, + ) + assert self._huggingface_config is not None, ( + "Failed to load Hugging Face config" + ) + + return self._huggingface_config + + @property + def dtype(self) -> DType: + if self.quantization_encoding is None: + raise ValueError( + "quantization_encoding must be provided to infer dtype." + ) + + return self.quantization_encoding.dtype + + @property + def cache_dtype(self) -> DType: + if self.quantization_encoding is None: + raise ValueError( + "quantization_encoding must be provided to infer cache dtype." + ) + + return self.quantization_encoding.cache_dtype + + @property + def devices(self) -> list[Device]: + """Initialize and return a list of devices, given a list of device specs.""" + if self._devices: + return self._devices + num_devices_available = accelerator_count() + for device_spec in self.device_specs: + if device_spec.id >= num_devices_available: + msg = f"Device {device_spec.id} was requested but " + if num_devices_available == 0: + msg += "no devices were found." + else: + msg += f"only found {num_devices_available} devices." + raise ValueError(msg) + self._devices.append( + CPU(device_spec.id) + if device_spec.device_type == "cpu" + else Accelerator(device_spec.id) + ) + return self._devices + + @property + def weights_format(self) -> WeightsFormat: + """Identify which format our weights are expected in.""" + + if not self.weight_path: + raise ValueError( + "no weight_path provided cannot infer weights format." + ) + + # Get all weight paths. + if all( + [weight_path.suffix == ".gguf" for weight_path in self.weight_path] + ): + return WeightsFormat.gguf + elif all( + [ + weight_path.suffix == ".safetensors" + for weight_path in self.weight_path + ] + ): + return WeightsFormat.safetensors + elif all( + [weight_path.suffix == ".bin" for weight_path in self.weight_path] + ): + return WeightsFormat.pytorch + else: + raise ValueError( + f"weights type cannot be inferred from {self.weight_path}" + ) + + def weights_size(self) -> int: + size = 0 + hf_repo = HuggingFaceRepo( + ( + self._weights_repo_id + if self._weights_repo_id + else self.model_path + ), + trust_remote_code=self.trust_remote_code, + ) + for file_path in self.weight_path: + if os.path.exists(file_path): + size += os.path.getsize(file_path) + continue + + next_size = hf_repo.size_of(str(file_path)) + + if next_size is None: + raise ValueError( + f"Failed to get size of weight file {file_path}" + ) + size += next_size + + return size + + def download_weights(self) -> None: + # Try to load locally. + if all([os.path.exists(file_path) for file_path in self.weight_path]): + logger.info("All files exist locally, skipping download.") + return + + start_time = datetime.datetime.now() + weights_repo_id = ( + self._weights_repo_id if self._weights_repo_id else self.model_path + ) + logger.info(f"Starting download of model: {weights_repo_id}") + # max_workers=8 setting copied from default for + # huggingface_hub.snapshot_download. + self.weight_path = list( + thread_map( + lambda filename: Path( + hf_hub_download( + weights_repo_id, + str(filename), + revision=self.huggingface_revision, + force_download=self.force_download, + ) + ), + self.weight_path, + max_workers=8, + tqdm_class=hf_tqdm, + ) + ) + + logger.info( + f"Finished download of model: {weights_repo_id} in {(datetime.datetime.now() - start_time).total_seconds()} seconds." + ) + + def load_weights(self) -> Weights: + self.download_weights() + + if self.weights_format == WeightsFormat.gguf: + if len(self.weight_path) > 1: + raise ValueError("loading multiple gguf files is not supported") + return GGUFWeights(self.weight_path[0]) + + elif self.weights_format == WeightsFormat.safetensors: + return SafetensorWeights(self.weight_path) + + else: + raise ValueError( + f"loading weights format '{self.weights_format}' not supported" + ) + + @staticmethod + def help() -> dict[str, str]: + return { + "model_path": "Specify the repository ID of a Hugging Face model repository to use. This is used to load both Tokenizers, architectures and model weights.", + "huggingface_repo_id": "DEPRECATED: Use `model_path` instead.", + "huggingface_revision": "Branch or Git revision of Hugging Face model repository to use.", + "engine": "Specify the engine backend to use for serving the model. Options include `max` for the MAX engine, or `huggingface` as a fallback option that provides improved model coverage.", + "architecture": "Deprecated - Please set `model-path` instead. Define the model architecture to run. This should match one of the supported architectures for your selected engine.", + "weight_path": "Provide an optional local path or path relative to the root of a Hugging Face repo to the model weights you want to use. This allows you to specify custom weights instead of using defaults. You may pass multiple, ie. `--weight-path=model-00001-of-00002.safetensors --weight-path=model-00002-of-00002.safetensors`", + "quantization_encoding": "Define the weight encoding type for quantization. This can help optimize performance and memory usage during inference. ie. q4_k, bfloat16 etc.", + "serialized_model_path": "If specified, this flag attempts to load a serialized MEF model from the given path. This is useful for reusing previously saved models.", + "save_to_serialized_model_path": "If specified, this flag attempts to save the current model state to a serialized format at the given path for later use.", + "max_length": "Set the maximum sequence length for input data processed by the model. This must be less than the value specified in the Hugging Face configuration file. The default is derived from the Hugging Face configuration value. Larger values may consume more memory.", + "max_new_tokens": "Specify the maximum number of new tokens to generate during a single inference pass of the model. Default is -1, which means the model will generate until the maximum sequence length is hit, or and eos token is generated.", + "max_batch_size": "Define the maximum cache size reserved for a single batch. This value defaults to 1. Increase this value based on server capacity when deploying in production.", + "max_ce_batch_size": "Set the maximum cache size reserved for a single context encoding batch. The effective limit will be the lesser of this value and `max-cache-batch-size`. Default is 32.", + "enable_chunked_prefill": "Enable chunked prefill to split context encoding requests into multiple chunks based on `target-num-new-tokens`", + "enable_in_flight_batching": "When enabled, prioritizes token generation by batching it with context encoding requests. Requires chunked prefill.", + "max_cache_batch_size": "DEPRECATED: Use `max_batch_size` instead.", + "cache_strategy": "Force a specific cache strategy: 'naive' or 'continuous'. If not provided, the optimal caching strategy for the model requested will be selected.", + "rope_type": "Force using a specific rope type, `none` | `normal' | `nexo`. Only matters for GGUF weights.", + "max_num_steps": "Specify the number of steps to run for multi-step scheduling during inference. Default is set to 1.", + "pad_to_multiple_of": "Pad input tensors to be a multiple of value provided. Default is set to 2.", + "kv_cache_page_size": "The number of tokens in a single page in the paged KVCache. Default is set to 512.", + "enable_prefix_caching": "Whether to enable prefix caching for the paged attention KVCache. This defaults to false.", + "enable_structured_output": "Whether to enable constrained decoding in the text generation pipeline. This defaults to false.", + "device_memory_utilization": "The fraction of available device memory that the process should consume. This is used to inform the size of the KVCache workspace: kv_cache_workspace = (total_free_memory * device_memory_utilization) - model_weights_size. Default is set to 0.9.", + "top_k": "Limit sampling to the top K most probable tokens during generation. This can help control randomness and improve output quality. This defaults to 1, which defaults to greedy sampling.", + "trust_remote_code": "Indicate whether to allow custom modelling files from Hugging Face repositories. Set this to true with caution, as it may introduce security risks.", + "force_download": "Specify whether to forcefully download a file even if it already exists in local cache. Set this to true if you want to ensure you have the latest version.", + "enable_echo": "Whether the model should be built with echo capabilities. This defaults to false.", + "gpu_profiling": "Whether to enable GPU profiling of the model. This defaults to false.", + } + + def huggingface_weights_repo(self) -> HuggingFaceRepo: + return HuggingFaceRepo( + ( + self._weights_repo_id + if self._weights_repo_id + else self.model_path + ), + trust_remote_code=self.trust_remote_code, + ) + + @cached_property + def sampling_params(self) -> SamplingParams: + return SamplingParams( + top_k=self.top_k, + enable_structured_output=self.enable_structured_output, + in_dtype=DType.float32, + out_dtype=DType.float32, + ) diff --git a/src/max/pipelines/context.py b/src/max/pipelines/context.py new file mode 100644 index 0000000000..6390eb4403 --- /dev/null +++ b/src/max/pipelines/context.py @@ -0,0 +1,294 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +"""Standardized context object for Pipeline Inference.""" + +from __future__ import annotations + +from typing import Any, Optional, Protocol, Sequence, Union, runtime_checkable + +import numpy as np + +CHUNK_SIZE = 128 + + +@runtime_checkable +class InputContext(Protocol): + """A base class for model contexts, represent model inputs for TokenGenerators.""" + + @property + def cache_seq_id(self) -> int: ... + + @property + def active_idx(self) -> int: ... + + @property + def start_idx(self) -> int: ... + + @property + def end_idx(self) -> int: ... + + @property + def current_length(self) -> int: + """The current length of the sequence, including completed and active tokens.""" + ... + + @property + def max_length(self) -> int | None: + """The maximum length of this sequence.""" + ... + + @property + def log_probabilities(self) -> int: + """When > 0, returns the log probabilities for the top N tokens for each + element token in the sequence.""" + ... + + @property + def log_probabilities_echo(self) -> bool: + """When True, the input tokens are added to the returned logprobs.""" + ... + + @property + def active_length(self) -> int: + """Current sequence length: num tokens input this iteration. + + This will be the prompt size for context encoding, and simply 1 for + token generation. + """ + ... + + @property + def next_tokens(self) -> np.ndarray: + """The next prompt tokens to be input during this iteration. + + This should be a 1D array of tokens of length active_length. + """ + ... + + def update( + self, + new_token: int, + ) -> None: + """Updates the next_tokens and extends existing tokens to include all generated tokens.""" + ... + + def bump_token_indices( + self, + start_idx: Optional[int] = None, + active_idx: Optional[int] = None, + end_idx: Optional[int] = None, + ) -> None: + """Update the start_idx, active_idx and end_idx without manipulating the token array.""" + ... + + @property + def matcher(self) -> Optional["xgr.GrammarMatcher"]: # type: ignore + """An optional xgr Grammar Matcher provided when using structured output.""" + ... + + @property + def json_schema(self) -> str | None: + """A json schema to use during constrained decoding.""" + ... + + def set_matcher(self, matcher: "xgr.GrammarMatcher") -> None: # type: ignore + """Set a grammar matcher for use during constrained decoding.""" + ... + + def reset(self) -> None: + """Resets the context's state by combining all tokens into a new prompt. + This method is used when a request is evicted, meaning that the context + needed to be re-encoded in the following CE iteration.""" + ... + + +class TextContext: + """A base class for model context, specifically for Text model variants.""" + + def __init__( + self, + cache_seq_id: int, + prompt: Union[str, Sequence[int]], + max_length: int | None, + tokens: np.ndarray, + log_probabilities: int = 0, + log_probabilities_echo: bool = False, + json_schema: str | None = None, + ) -> None: + self.cache_seq_id = cache_seq_id + self.prompt = prompt + self.max_length = max_length + + if tokens.ndim != 1: + msg = f"tokens must be one dimensional array: got shape '{tokens.shape}'" + raise ValueError(msg) + + self.size = int(np.ceil(len(tokens) / CHUNK_SIZE) * CHUNK_SIZE) + + # Create a fresh array since the input tokens may be a view or share memory with + # another array in the caller, which prevents us from resizing it directly. + # The extra space is initialized to zero and will be filled with generated tokens. + assert len(tokens) <= self.size + self.tokens = np.zeros(self.size, dtype=tokens.dtype) + self.tokens[: len(tokens)] = tokens + + self._active_idx = len(tokens) + self._start_idx = 0 + self._end_idx = self._active_idx + + self.log_probabilities = log_probabilities + self.log_probabilities_echo = log_probabilities_echo + + self.matcher = None + self.json_schema = json_schema + self.is_initial_prompt = True + + @property + def start_idx(self) -> int: + return self._start_idx + + @property + def active_idx(self) -> int: + return self._active_idx + + @property + def end_idx(self) -> int: + return self._end_idx + + def set_matcher(self, matcher: "xgr.GrammarMatcher") -> None: # type: ignore + self.matcher = matcher + + @property + def current_length(self) -> int: + """The current length of the sequence, including completed and active tokens.""" + return self._end_idx + + @property + def active_length(self) -> int: + """Current sequence length: num tokens input this iteration. + + This will be the prompt size for context encoding, and simply 1 (or more) for + token generation. + """ + return self._active_idx - self._start_idx + + def bump_token_indices( + self, + start_idx: Optional[int] = None, + active_idx: Optional[int] = None, + end_idx: Optional[int] = None, + ) -> None: + """Update the start_idx, active_idx and end_idx without manipulating the token array.""" + new_start_idx = (start_idx if start_idx else 0) + self._start_idx + new_active_idx = (active_idx if active_idx else 0) + self._active_idx + new_end_idx = (end_idx if end_idx else 0) + self._end_idx + + if new_start_idx >= new_active_idx: + msg = f""" + active_idx must always be greater than start_idx, unable to bump token indices + as new start_idx ({new_start_idx}) is greater than new active_idx ({new_active_idx}). + """ + raise ValueError(msg) + + if new_active_idx > new_end_idx: + msg = f""" + end_idx must always be greater than active_idx, unable to bump token indices + as new active_idx ({new_active_idx}) is greater than new end_idx ({new_end_idx}). + """ + raise ValueError(msg) + + self._start_idx = new_start_idx + self._active_idx = new_active_idx + self._end_idx = new_end_idx + + @property + def next_tokens(self) -> np.ndarray: + return self.tokens[self._start_idx : self._active_idx] + + def update( + self, + new_token: int, + ) -> None: + """Updates the next_tokens and extends existing tokens to include all generated tokens.""" + # This is required for chunked prefill. + # The scheduler will update the active_idx via bump_token_indices and pass through the model + # To accomodate for this, if we identify that the active_idx is not at the end of the completed + # token array, we only update the start_idx and active_idx, leaving the token array alone. + if self._active_idx < self._end_idx: + self._start_idx = self._active_idx + self._active_idx = self._end_idx + return + + if self._end_idx >= self.size: + self.size += CHUNK_SIZE + if self.tokens.flags.owndata: + self.tokens.resize(self.size) + else: + self.tokens = np.resize(self.tokens, self.size) + + self.tokens[self._active_idx] = new_token + self._start_idx = self._active_idx + self._active_idx += 1 + self._end_idx += 1 + + # Accept the token, and move the FSM for constrained decoding forward. + if self.matcher: + assert self.matcher.accept_token(new_token) + + self.is_initial_prompt = False + + def reset(self) -> None: + """Resets the context's state by combining all tokens into a new prompt.""" + self._start_idx = 0 + + self.is_initial_prompt = True + + +class TextAndVisionContext(TextContext): + """A base class for model context, specifically for Vision model variants.""" + + def __init__( + self, + cache_seq_id: int, + prompt: Union[str, Sequence[int]], + max_length: int | None, + tokens: np.ndarray, + pixel_values: Union[np.ndarray, list[np.ndarray]], + extra_model_args: dict[str, Any], + log_probabilities: int = 0, + log_probabilities_echo: bool = False, + json_schema: str | None = None, + ) -> None: + super().__init__( + cache_seq_id=cache_seq_id, + prompt=prompt, + max_length=max_length, + tokens=tokens, + log_probabilities=log_probabilities, + log_probabilities_echo=log_probabilities_echo, + json_schema=json_schema, + ) + self.pixel_values = pixel_values + self.extra_model_args = extra_model_args + + def update( + self, + new_token: int, + ) -> None: + """Updates the next_tokens and extends existing tokens to include all generated tokens.""" + super().update(new_token=new_token) + + # Update context not to re-encode the same image in next steps. There are no image tokens + # expected after context encoding. + self.pixel_values = [] diff --git a/src/max/pipelines/dataprocessing/__init__.py b/src/max/pipelines/dataprocessing/__init__.py new file mode 100644 index 0000000000..52a3d7df46 --- /dev/null +++ b/src/max/pipelines/dataprocessing/__init__.py @@ -0,0 +1,30 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from .causal_attention_mask import causal_attention_mask +from .causal_attention_mask_with_alibi import causal_attention_mask_with_alibi +from .collate_batch import ( + PaddingDirection, + batch_padded_tokens_and_mask, + collate_batch, +) +from .max_tokens_to_generate import max_tokens_to_generate + +__all__ = [ + "causal_attention_mask", + "causal_attention_mask_with_alibi", + "collate_batch", + "batch_padded_tokens_and_mask", + "PaddingDirection", + "max_tokens_to_generate", +] diff --git a/src/max/pipelines/dataprocessing/causal_attention_mask.py b/src/max/pipelines/dataprocessing/causal_attention_mask.py new file mode 100644 index 0000000000..a882007aaa --- /dev/null +++ b/src/max/pipelines/dataprocessing/causal_attention_mask.py @@ -0,0 +1,67 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from __future__ import annotations + +import math + +import numpy as np + + +def causal_attention_mask( + original_start_pos: list[int], + original_seq_len: list[int], + pad_to_multiple_of: int = 1, +) -> np.ndarray: + # Each example in the batch has a "start position", which is the length + # of the previously encoded tokens ("context"), and a "sequence length", + # which is the number of additional tokens to be encoded in this pass. + # + # "Causal attention" means that each token can "see" tokens before it, + # as well as itself. + # The attention layer adds the mask to the attention scores and then + # performs a softmax, so for tokens that a given token can "see" the mask + # wants to produce a 0, meaning to pass the attention through as normal, + # and for tokens that can't be "seen" the mask should produce -inf, which + # will result in them being functionally ignored after the softmax operation. + # + # We call the total length "post_seq_len", referring to the total context + # length after this pass concludes. + start_pos: np.ndarray = np.array(original_start_pos, dtype=np.int64) + seq_len: np.ndarray = np.array(original_seq_len, dtype=np.int64) + + # Provided `pad_to_multiple_of` ensure the padded_length is cleanly divisible + # by this multiple. + # If max_len is 1, we are presumably in a token generation phase batch. + # W scenario, padding from 1 -> 2, does not result in a performance gain. + if seq_len.max() == 1: + padded_length = 1 + else: + padded_length = ( + math.ceil(seq_len.max() / pad_to_multiple_of) * pad_to_multiple_of + ) + + # Mask shape: for each token being generated, attend to tokens _before_ it + # in the entire sequence including context. Pad all values to the longest + # sequence length and total length. + post_seq_len = (start_pos + padded_length).max() + mask_shape = (padded_length, post_seq_len) + + # TODO(KERN-782): This should be -inf but softmax saturates with NaNs. + fill_val = -10000.0 + fill_matrix = np.full(mask_shape, fill_val, dtype=np.float32) + + return np.stack( + # Set diagonal to k + 1 so that tokens attend to themselves. + [np.triu(fill_matrix, k=k + 1) for k in start_pos] + ) diff --git a/src/max/pipelines/dataprocessing/causal_attention_mask_with_alibi.py b/src/max/pipelines/dataprocessing/causal_attention_mask_with_alibi.py new file mode 100644 index 0000000000..d3ebbb63bd --- /dev/null +++ b/src/max/pipelines/dataprocessing/causal_attention_mask_with_alibi.py @@ -0,0 +1,68 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from __future__ import annotations + +import numpy as np + +from .causal_attention_mask import causal_attention_mask + + +def _alibi_bias( + max_seq_len: int, alibi_bias_max: int, n_heads: int +) -> np.ndarray: + # This bias has to be calculated in fp32, as numpy does not have support for bf16. + bias = np.arange(1 - max_seq_len, 1, 1).reshape((1, 1, 1, max_seq_len)) + rounded_n_heads = int( + np.power(np.asfarray(2), np.ceil(np.log2(np.asfarray(n_heads)))) + ) + m = np.arange(1.0, 1.0 + rounded_n_heads) * ( + np.asfarray(alibi_bias_max) / np.asfarray(rounded_n_heads) + ) + + slopes = np.asfarray(1.0) / np.power(2.0, m) + + if rounded_n_heads != n_heads: + slopes = np.concatenate( + [slopes[1:rounded_n_heads:2], slopes[0:rounded_n_heads:2]] + ) + slopes = slopes[0:n_heads] + + slopes = slopes.reshape(1, n_heads, 1, 1) + + alibi_bias = bias * slopes + + return alibi_bias[:, :, :, :max_seq_len] + + +def causal_attention_mask_with_alibi( + original_start_pos: list[int], + original_seq_len: list[int], + alibi_bias_max: int, + n_heads: int, + pad_to_multiple_of: int = 1, +) -> np.ndarray: + # Get original causal mask + causal_mask = causal_attention_mask( + original_start_pos, original_seq_len, pad_to_multiple_of + ) + + max_seq_len = causal_mask.shape[2] + + # Broadcast causal_mask out for n_heads + causal_mask = np.expand_dims(causal_mask, axis=1) + + # Get alibi bias + alibi_bias = _alibi_bias(max_seq_len, alibi_bias_max, n_heads) + + return causal_mask + np.float32(alibi_bias) diff --git a/src/max/pipelines/dataprocessing/collate_batch.py b/src/max/pipelines/dataprocessing/collate_batch.py new file mode 100644 index 0000000000..22d0787785 --- /dev/null +++ b/src/max/pipelines/dataprocessing/collate_batch.py @@ -0,0 +1,120 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # +"""Batch padding.""" + +from __future__ import annotations + +import enum +import math + +import numpy as np + +from .causal_attention_mask import causal_attention_mask + + +class PaddingDirection(enum.Enum): + """Padding (from) direction for batch collation.""" + + LEFT = "left" + RIGHT = "right" + + +def collate_batch( + batch: list[np.ndarray], + direction: PaddingDirection = PaddingDirection.RIGHT, + pad_value: int = 0, + batch_size: int | None = None, + pad_to_multiple_of: int = 1, +) -> tuple[np.ndarray, np.ndarray]: + """Generates a single batch tensor from a batch of inputs. + + These input tensors may have different lengths. The `pad_value` will be used + to pad out the inputs to the same length. + + If `batch_size` is present, add additional values to the batch up to that + size. + + Returns: + A tuple of: + A matrix with all rows padded to the max sequence length. + A list with last token indices prior to any padding. + + Raises: + ValueError: if the batch is empty. + NotImplementedError: if the batch contains anything other than vectors. + """ + if not batch: + msg = "Must provide at least one batch item." + raise ValueError(msg) + + if not all(a.ndim == 1 for a in batch): + msg = "Collate only supports rank 1 tensors for now." + raise NotImplementedError(msg) + + max_len = max((len(a) for a in batch), default=0) + + # If max_len is 1, we are presumably in a token generation phase batch. + # W scenario, padding from 1 -> 2, does not result in a performance gain. + if max_len == 1: + pad_to = 1 + else: + pad_to = math.ceil(max_len / pad_to_multiple_of) * pad_to_multiple_of + + def pad(a: np.ndarray) -> np.ndarray: + npad = pad_to - len(a) + if npad == 0: + return a + padding = (npad, 0) if direction == PaddingDirection.LEFT else (0, npad) + return np.pad(a, padding, mode="constant", constant_values=pad_value) + + if batch_size is not None: + pad_batch_item = np.array([pad_value] * pad_to) + batch.extend([pad_batch_item] * (batch_size - len(batch))) + + # Generate unpadded last token index. + unpadded_last_token_index = ( + np.full(len(batch), -1) + if direction == PaddingDirection.LEFT + else np.array([len(a) - 1 for a in batch]) + ) + + return np.stack([pad(a) for a in batch], axis=0), unpadded_last_token_index + + +def batch_padded_tokens_and_mask( + start_pos: list[int], + tokens: list[np.ndarray], + pad_to_multiple_of: int = 1, +) -> tuple[np.ndarray, np.ndarray, np.ndarray]: + """Batches input tokens and computes a batched attention mask. + + Args: + start_pos: index into the end of the KV cache for each batch item. + tokens: unpadded input tokens for this batch. + + Returns: + A (batched tokens, unpadded last token indices, batch attention mask) pair. + """ + # Grab attention mask. + attn_mask = causal_attention_mask( + original_start_pos=start_pos, + original_seq_len=[len(t) for t in tokens], + pad_to_multiple_of=pad_to_multiple_of, + ) + + # Create batched input token tensor by padding all input token tensors + # to the maximum sequence length in the batch. + next_tokens_batch, unpadded_last_token_index = collate_batch( + tokens, batch_size=len(tokens), pad_to_multiple_of=pad_to_multiple_of + ) + return next_tokens_batch, unpadded_last_token_index, attn_mask diff --git a/src/max/pipelines/dataprocessing/max_tokens_to_generate.py b/src/max/pipelines/dataprocessing/max_tokens_to_generate.py new file mode 100644 index 0000000000..5163c06753 --- /dev/null +++ b/src/max/pipelines/dataprocessing/max_tokens_to_generate.py @@ -0,0 +1,24 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + + +def max_tokens_to_generate( + prompt_size: int, + max_length: int, + max_new_tokens: int = -1, +) -> int: + """Returns the max number of new tokens to generate.""" + _difference_between_max_and_prompt = max(max_length - prompt_size, 0) + if max_new_tokens < 0: + return _difference_between_max_and_prompt + return min(max_new_tokens, _difference_between_max_and_prompt) diff --git a/src/max/pipelines/embeddings_pipeline.py b/src/max/pipelines/embeddings_pipeline.py new file mode 100644 index 0000000000..85ed8932ec --- /dev/null +++ b/src/max/pipelines/embeddings_pipeline.py @@ -0,0 +1,86 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +"""Pipeline for running text embeddings.""" + +from __future__ import annotations + +from typing import Any, Type, TypeVar + +from max.engine import InferenceSession +from max.profiler import Tracer, traced + +from .config import PipelineConfig +from .context import InputContext +from .interfaces import EmbeddingsGenerator +from .pipeline import PipelineModel +from .response import EmbeddingsResponse + +T = TypeVar("T", bound=InputContext) + + +class EmbeddingsPipeline(EmbeddingsGenerator[T]): + """Generalized token generator pipeline.""" + + def __init__( + self, + pipeline_config: PipelineConfig, + pipeline_model: Type[PipelineModel], + **unused_kwargs, + ) -> None: + self._pipeline_config = pipeline_config + # Initialize Session. + session = InferenceSession(devices=self._pipeline_config.devices) + + # Load model. + self._pipeline_model = pipeline_model( + pipeline_config=self._pipeline_config, session=session + ) + + @traced + def encode(self, batch: dict[str, T]) -> dict[str, EmbeddingsResponse]: + """Provided a batch, process batch inputs, execute the graph for num_steps in a multi-step scenario, + then decode the tokens holistically and return the list of decoded tokens. + """ + + tracer: Tracer = Tracer() + # Flatten our batch for consistent indexing. + context_batch = list(batch.values()) + + tracer.next("prepare_initial_token_inputs") + # Prepare inputs for the first token in multistep execution. + model_inputs = self._pipeline_model.prepare_initial_token_inputs( + context_batch + ) + + tracer.next("execute") + model_outputs = self._pipeline_model.execute( + model_inputs=model_inputs, kv_cache_inputs=None + ) + assert model_outputs.logits + # Do the copy to host for each token generated. + tracer.next("logits.to(CPU())") + batch_embeddings = model_outputs.logits.to_numpy() + + # Prepare the response. + res: dict[str, Any] = {} + tracer.push("prepare_response") + for batch_index, request_id in enumerate(batch.keys()): + request_embeddings = batch_embeddings[batch_index] + if not self._pipeline_config.pool_embeddings: + # Remove padded tokens from embeddings + request_embeddings = request_embeddings[ + : context_batch[batch_index].active_length, : + ] + res[request_id] = EmbeddingsResponse(request_embeddings) + return res diff --git a/src/max/pipelines/hf_pipeline.py b/src/max/pipelines/hf_pipeline.py new file mode 100644 index 0000000000..0d03506701 --- /dev/null +++ b/src/max/pipelines/hf_pipeline.py @@ -0,0 +1,384 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +"""Generalized Token Generation Pipeline""" + +from __future__ import annotations + +import logging +import warnings +from typing import Any, Optional, cast + +import numpy as np +import torch +from max.driver import Tensor +from transformers import ( + AutoModel, + AutoModelForCausalLM, + AutoTokenizer, + BatchEncoding, +) + +from .config import PipelineConfig +from .context import TextContext +from .interfaces import EmbeddingsGenerator, TokenGenerator +from .kv_cache import ContinuousHFStaticCache +from .response import EmbeddingsResponse, TextResponse + +logger = logging.getLogger("max.pipelines") + +DEFAULT_MAX_SEQ_LEN = 512 + + +class HFTextGenerationPipeline(TokenGenerator[TextContext]): + """HuggingFace text token generator pipeline.""" + + def __init__( + self, + pipeline_config: PipelineConfig, + torch_device_type: str, + ): + self._pipeline_config = pipeline_config + self._torch_device = torch.device(torch_device_type) + + self._model = AutoModelForCausalLM.from_pretrained( + pipeline_config.model_path, + trust_remote_code=pipeline_config.trust_remote_code, + ).to(self._torch_device) + self._dtype = self._model.dtype + + if self._model.config.model_type == "gemma2": + raise RuntimeError( + "Gemma2 architecture is currently not supported." + ) + + self._tokenizer = AutoTokenizer.from_pretrained( + pipeline_config.model_path + ) + + eos_token_id = self._tokenizer.eos_token_id + + # Expand eos tokens if more are provided in pipeline_config + if "eos_token_id" in pipeline_config.huggingface_config: + eos_tokens = pipeline_config.huggingface_config.eos_token_id + if isinstance(eos_tokens, int): + if eos_tokens != eos_token_id: + msg = f"eos_token_id provided in huggingface config ({eos_tokens}), does not match provided eos_token_id ({eos_token_id}), using provided eos_token_id" + logger.warning(msg) + + eos_token_id = set([eos_tokens]) + elif isinstance(eos_tokens, list): + if eos_token_id in eos_tokens: + eos_token_id = set(eos_tokens) + else: + eos_token_id = set([eos_token_id]) + else: + msg = f"eos_token_id in huggingface_config, is neither int or list: {eos_tokens}" + logger.warning(msg) + self._eos_token_id = set([eos_token_id]) + else: + eos_token_id = set([eos_token_id]) + + self._eos_token_id = eos_token_id + if self._tokenizer.pad_token is None: + self._tokenizer.pad_token = self._tokenizer.eos_token + + max_batch_size = pipeline_config.max_batch_size + assert max_batch_size is not None, ( + "max_batch_size must be set before constructing ContinuousHFStaticCache" + ) + self._cache = ContinuousHFStaticCache( + config=self._model.config, + max_batch_size=max_batch_size, + max_seq_len=DEFAULT_MAX_SEQ_LEN + if pipeline_config.max_length is None + else pipeline_config.max_length, + dtype=self._dtype, + device=self._torch_device, + ) + + # TODO(deep): Implement sampling and remove this warning + if self._pipeline_config.top_k > 1: + warnings.warn( + "Only argmax sampling is currently implemented, and the top_k config will be ignored", + ) + + def next_token( + self, batch: dict[str, TextContext], num_steps: int + ) -> list[dict[str, TextResponse]]: + """Provided a batch, process batch inputs, execute the graph for num_steps in a multi-step scenario, + then decode the tokens holistically and return the list of decoded tokens. + """ + + context_batch = list(batch.values()) + new_sequences = False + + # Claim cache slots for new sequences + for ctx in context_batch: + seq_id = ctx.cache_seq_id + if seq_id in self._cache.available_slots: + self._cache.external_claim([seq_id]) + self._cache.tokens[seq_id] = ctx.next_tokens + new_sequences = True + + cache_seq_ids = [ctx.cache_seq_id for ctx in context_batch] + self._cache.set_active_slots(cache_seq_ids) + + # Initial inputs preparation + input_ids, attention_mask, cache_position = ( + self._prepare_initial_token_inputs( + cache_seq_ids, context_batch, new_sequences + ) + ) + + # Pre-allocate tensor for generated tokens + generated_tokens = torch.zeros( + (len(context_batch), num_steps), + dtype=torch.long, + device=self._torch_device, + ) + + # Generate tokens + with torch.no_grad(): + for step in range(num_steps): + self._cache.set_cache_position(cache_position) + + outputs = self._model( + input_ids=input_ids, + attention_mask=attention_mask, + past_key_values=self._cache, + use_cache=True, + ) + + next_token = outputs.logits[:, -1, :].argmax(dim=-1) + generated_tokens[:, step] = next_token + + # if last step, no need to prepare next batch input + if step == num_steps - 1: + break + + # Next inputs preparation + input_ids, attention_mask, cache_position = ( + self._prepare_next_token_inputs( + cache_seq_ids, + next_tokens=next_token.unsqueeze(-1), + ) + ) + + # Move generated tokens to CPU for processing + generated_tokens = generated_tokens.cpu() + + # Prepare the response, pruning away completed requests as we go. + res: list[dict[str, Any]] = [{} for i in range(num_steps)] + for batch_idx, (request_id, context) in enumerate(batch.items()): + for step in range(num_steps): + next_token_id = generated_tokens[batch_idx, step].item() + + # Update context + context.update(next_token_id) + next_tokens = np.array([next_token_id]) + self._cache.tokens[context.cache_seq_id] = np.append( + self._cache.tokens[context.cache_seq_id], next_tokens + ) + + max_length = ( + DEFAULT_MAX_SEQ_LEN + if context.max_length is None + else context.max_length + ) + if ( + next_token_id in self._eos_token_id + or context.current_length > max_length + ): + break + + res[step][request_id] = TextResponse(next_token) + + return res + + def _prepare_initial_token_inputs( + self, + cache_seq_ids: list[int], + context_batch: list[TextContext], + new_sequences: bool, + ) -> tuple[torch.Tensor, torch.Tensor, torch.Tensor]: + if new_sequences: + # Process all tokens for new sequences + tokens = [ + torch.tensor(self._cache.tokens[ctx.cache_seq_id]) + for ctx in context_batch + ] + padded = self._tokenizer.pad( + BatchEncoding({"input_ids": tokens}), + padding=True, + return_tensors="pt", + ) + + input_ids = padded["input_ids"].to(self._torch_device) + attention_mask = padded["attention_mask"].to(self._torch_device) + + # Initialize attention patterns + for seq_id, mask in zip(cache_seq_ids, attention_mask): + self._cache.update_attention_pattern(seq_id, mask) + else: + # Process only next tokens for the iterative steps + tokens = [torch.tensor(ctx.next_tokens) for ctx in context_batch] + padded = self._tokenizer.pad( + BatchEncoding({"input_ids": tokens}), + padding=True, + return_tensors="pt", + ) + input_ids = padded["input_ids"].to(self._torch_device) + + # Extend attention patterns by 1 + ones = torch.ones(1, dtype=torch.long, device=self._torch_device) + for seq_id in cache_seq_ids: + pattern = self._cache.attention_patterns[seq_id] + self._cache.update_attention_pattern( + seq_id, + torch.cat([pattern, ones]), + ) + + # Get complete attention mask for all sequences + attention_mask = self._cache.get_attention_mask(cache_seq_ids) + + # Calculate cache position + seq_length = input_ids.size(1) + max_length = attention_mask.size(1) + cache_position = torch.arange( + max_length - seq_length, + max_length, + device=self._torch_device, + ) + + return input_ids, attention_mask, cache_position + + def _prepare_next_token_inputs( + self, + cache_seq_ids: list[int], + next_tokens: Optional[Tensor] = None, + ) -> tuple[torch.Tensor, torch.Tensor, torch.Tensor]: + # Process only next tokens for the iterative steps + encoded_input = BatchEncoding({"input_ids": next_tokens}) + padded = self._tokenizer.pad( + encoded_input, padding=True, return_tensors="pt" + ) + input_ids = padded["input_ids"].to(self._torch_device) + + # Extend attention patterns by 1 + ones = torch.ones(1, dtype=torch.long, device=self._torch_device) + for seq_id in cache_seq_ids: + pattern = self._cache.attention_patterns[seq_id] + self._cache.update_attention_pattern( + seq_id, + torch.cat([pattern, ones]), + ) + + attention_mask = self._cache.get_attention_mask(cache_seq_ids) + + # Calculate cache position + seq_length = input_ids.size(1) + max_length = attention_mask.size(1) + cache_position = torch.arange( + max_length - seq_length, + max_length, + device=self._torch_device, + ) + + return input_ids, attention_mask, cache_position + + def release(self, context: TextContext) -> None: + if context.cache_seq_id not in self._cache.available_slots: + self._cache.release(context.cache_seq_id) + + +class HFEmbeddingsPipeline(EmbeddingsGenerator[TextContext]): + """Generalized token generator pipeline.""" + + def __init__( + self, + pipeline_config: PipelineConfig, + torch_device_type: str, + ) -> None: + self._pipeline_config = pipeline_config + self._torch_device = torch.device(torch_device_type) + self._model = AutoModel.from_pretrained( + pipeline_config.model_path, + trust_remote_code=pipeline_config.trust_remote_code, + ).to(self._torch_device) + self._tokenizer = AutoTokenizer.from_pretrained( + pipeline_config.model_path + ) + + def prepare_initial_token_inputs( + self, + context_batch: list[TextContext], + ) -> tuple[torch.Tensor, torch.Tensor]: + # Get tokens and seq_ids. + tokens = [ctx.next_tokens for ctx in context_batch] + + # Pad tokens for the batch. + padded = self._tokenizer.pad( + BatchEncoding({"input_ids": tokens}), + padding=True, + return_tensors="pt", + pad_to_multiple_of=2, + ) + input_ids = cast(torch.Tensor, padded["input_ids"]).to( + self._torch_device + ) + attention_mask = cast(torch.Tensor, padded["attention_mask"]).to( + self._torch_device + ) + return input_ids, attention_mask + + def encode( + self, batch: dict[str, TextContext] + ) -> dict[str, EmbeddingsResponse]: + """Encodes a batch of text inputs.""" + + # Flatten our batch for consistent indexing. + context_batch = list(batch.values()) + input_ids, attention_mask = self.prepare_initial_token_inputs( + context_batch + ) + + outputs = self._model( + input_ids=input_ids, attention_mask=attention_mask + ) + # Pool the embeddings of together, and copy to cpu. + batch_embeddings = ( + _mean_pooling(outputs, attention_mask).cpu().detach().numpy() + ) + + # Prepare the response. + res: dict[str, Any] = {} + for batch_index, request_id in enumerate(batch.keys()): + request_embeddings = batch_embeddings[batch_index] + res[request_id] = EmbeddingsResponse(request_embeddings) + return res + + +# Taken from the sentence piece transformer: +# https://huggingface.co/sentence-transformers/all-mpnet-base-v2 +# Mean Pooling - Take attention mask into account for correct averaging +def _mean_pooling(model_output, attention_mask): + token_embeddings = model_output[ + 0 + ] # First element of model_output contains all token embeddings + input_mask_expanded = ( + attention_mask.unsqueeze(-1).expand(token_embeddings.size()).float() + ) + return torch.sum(token_embeddings * input_mask_expanded, 1) / torch.clamp( + input_mask_expanded.sum(1), min=1e-9 + ) diff --git a/src/max/pipelines/hf_utils.py b/src/max/pipelines/hf_utils.py new file mode 100644 index 0000000000..698f62f49a --- /dev/null +++ b/src/max/pipelines/hf_utils.py @@ -0,0 +1,56 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +"""Utilities for interacting with HuggingFace Files/Repos.""" + +from __future__ import annotations + +from dataclasses import dataclass +from pathlib import Path + +from huggingface_hub import ( + file_exists, + get_hf_file_metadata, + hf_hub_download, + hf_hub_url, +) + + +@dataclass(frozen=True) +class HuggingFaceFile: + """A simple object for tracking huggingface model metadata. + The repo_id will frequently be used to load a tokenizer, + whereas the filename is used to download model weights.""" + + repo_id: str + filename: str + revision: str | None = None + + def download(self, force_download: bool = False) -> Path: + """Download the file and return the file path where the data is saved locally.""" + return Path( + hf_hub_download( + self.repo_id, + self.filename, + revision=self.revision, + force_download=force_download, + ) + ) + + def size(self) -> int | None: + url = hf_hub_url(self.repo_id, self.filename, revision=self.revision) + metadata = get_hf_file_metadata(url) + return metadata.size + + def exists(self) -> bool: + return file_exists(self.repo_id, self.filename, revision=self.revision) diff --git a/src/max/pipelines/interfaces/__init__.py b/src/max/pipelines/interfaces/__init__.py new file mode 100644 index 0000000000..9233e609e6 --- /dev/null +++ b/src/max/pipelines/interfaces/__init__.py @@ -0,0 +1,42 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +"""Top level imports for pipeline interfaces.""" + +from .embeddings_generation import ( + EmbeddingsGenerator, +) +from .tasks import PipelineTask +from .text_generation import ( + PipelineTokenizer, + TokenGenerator, + TokenGeneratorContext, + TokenGeneratorRequest, + TokenGeneratorRequestFunction, + TokenGeneratorRequestMessage, + TokenGeneratorRequestTool, + TokenGeneratorResponseFormat, +) + +__all__ = [ + "PipelineTask", + "PipelineTokenizer", + "TokenGenerator", + "TokenGeneratorContext", + "TokenGeneratorRequest", + "TokenGeneratorRequestFunction", + "TokenGeneratorRequestMessage", + "TokenGeneratorRequestTool", + "TokenGeneratorResponseFormat", + "EmbeddingsGenerator", +] diff --git a/src/max/pipelines/interfaces/embeddings_generation.py b/src/max/pipelines/interfaces/embeddings_generation.py new file mode 100644 index 0000000000..99846df2ed --- /dev/null +++ b/src/max/pipelines/interfaces/embeddings_generation.py @@ -0,0 +1,39 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +"""Interfaces for embeddings generation pipeline behaviors.""" + +from typing import Any, Generic, Protocol, TypeVar, runtime_checkable + +EmbeddingsGeneratorContext = TypeVar("EmbeddingsGeneratorContext") + + +@runtime_checkable +class EmbeddingsGenerator(Generic[EmbeddingsGeneratorContext], Protocol): + """Interface for LLM embeddings-generator models.""" + + def encode( + self, batch: dict[str, EmbeddingsGeneratorContext] + ) -> dict[str, Any]: + """Computes embeddings for a batch of inputs. + + Args: + batch (dict[str, EmbeddingsGeneratorContext]): Batch of contexts to generate + embeddings for. + + Returns: + dict[str, Any]: Dictionary mapping request IDs to their corresponding + embeddings. Each embedding is typically a numpy array or tensor of + floating point values. + """ + ... diff --git a/examples/run-examples.sh b/src/max/pipelines/interfaces/tasks.py old mode 100755 new mode 100644 similarity index 62% rename from examples/run-examples.sh rename to src/max/pipelines/interfaces/tasks.py index 30bc2be5fc..553a4705c1 --- a/examples/run-examples.sh +++ b/src/max/pipelines/interfaces/tasks.py @@ -1,6 +1,5 @@ -#!/usr/bin/env bash # ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt @@ -12,14 +11,11 @@ # limitations under the License. # ===----------------------------------------------------------------------=== # -set -euo pipefail +"""Pipeline Tasks.""" -SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) -REPO_ROOT="${SCRIPT_DIR}"/../ -EXAMPLES_DIR="${REPO_ROOT}"/examples +from enum import Enum -BUILD_DIR="${REPO_ROOT}"/build -mkdir -p "${BUILD_DIR}" -# Run the examples using `lit`. -lit -sv "${EXAMPLES_DIR}" +class PipelineTask(str, Enum): + TEXT_GENERATION = "text_generation" + EMBEDDINGS_GENERATION = "embeddings_generation" diff --git a/src/max/pipelines/interfaces/text_generation.py b/src/max/pipelines/interfaces/text_generation.py new file mode 100644 index 0000000000..c2a250a208 --- /dev/null +++ b/src/max/pipelines/interfaces/text_generation.py @@ -0,0 +1,277 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +"""Interfaces for text generation pipeline behaviors.""" + +from dataclasses import dataclass +from typing import ( + Any, + Generic, + List, + Literal, + Optional, + Protocol, + Sequence, + TypedDict, + TypeVar, + Union, + runtime_checkable, +) + + +class TokenGeneratorRequestFunction(TypedDict): + name: str + description: str + parameters: dict + + +class TokenGeneratorRequestTool(TypedDict): + type: str + function: TokenGeneratorRequestFunction + + +class TokenGeneratorResponseFormat(TypedDict): + type: str + json_schema: dict + + +class TokenGeneratorRequestMessage(TypedDict): + role: Literal["system", "user", "assistant"] + content: Union[str, list[dict[str, Any]]] + """Content can be simple string or a list of message parts of different + modalities. + + For example: + + .. code-block:: json + + { + "role": "user", + "content": "What'\''s the weather like in Boston today?" + } + + Or: + + .. code-block:: json + + { + "role": "user", + "content": [ + { + "type": "text", + "text": "What'\''s in this image?" + }, + { + "type": "image_url", + "image_url": { + "url": "https://upload.wikimedia.org/wikipedia/commons/thumb/d/dd/Gfp-wisconsin-madison-the-nature-boardwalk.jpg/2560px-Gfp-wisconsin-madison-the-nature-boardwalk.jpg" + } + } + ] + } + """ + + +@dataclass(frozen=True) +class TokenGeneratorRequest: + id: str + """ + A unique identifier for the request. This ID can be used to trace and log + the request throughout its lifecycle, facilitating debugging and tracking. + """ + index: int + """ + The sequence order of this request within a batch. This is useful for + maintaining the order of requests when processing multiple requests + simultaneously, ensuring that responses can be matched back to their + corresponding requests accurately. + """ + model_name: str + """ + The name of the model to be used for generating tokens. This should match + the available models on the server and determines the behavior and + capabilities of the response generation. + """ + prompt: Union[str, Sequence[int], None] = None + """ + The prompt to be processed by the model. This field supports legacy + completion APIs and can accept either a string or a sequence of integers + representing token IDs. If not provided, the model may generate output + based on the messages field. + """ + messages: Optional[list[TokenGeneratorRequestMessage]] = None + """ + A list of messages for chat-based interactions. This is used in chat + completion APIs, where each message represents a turn in the conversation. + If provided, the model will generate responses based on these messages. + """ + images: Optional[list[bytes]] = None + """ + A list of image byte arrays that can be included as part of the request. + This field is optional and may be used for multimodal inputs where images + are relevant to the prompt or task. + """ + tools: Optional[list[TokenGeneratorRequestTool]] = None + """ + A list of tools that can be invoked during the generation process. This + allows the model to utilize external functionalities or APIs to enhance its + responses. + """ + response_format: Optional[TokenGeneratorResponseFormat] = None + """ + Specifies the desired format for the model's output. When set, it enables + structured generation, which adheres to the json_schema provided. + """ + max_new_tokens: Optional[int] = None + """ + The maximum number of new tokens to generate in the response. If not set, + the model may generate tokens until it reaches its internal limits or based + on other stopping criteria. + """ + timestamp_ns: int = 0 + """ + The time (in nanoseconds) when the request was received by the server. This + can be useful for performance monitoring and logging purposes. + """ + request_path: str = "/" + """ + The endpoint path for the request. This is typically used for routing and + logging requests within the server infrastructure. + """ + logprobs: int = 0 + """ + The number of top log probabilities to return for each generated token. A value + of 0 means that log probabilities will not be returned. Useful for analyzing + model confidence in its predictions. + """ + echo: bool = False + """ + If set to True, the response will include the original prompt along with the + generated output. This can be useful for debugging or when you want to see how + the input relates to the output. + """ + stop: Optional[Union[str, List[str]]] = None + """ + Optional list of stop expressions (see: https://platform.openai.com/docs/api-reference/chat/create#chat-create-stop) + """ + + def __str__(self) -> str: + txt = f"Id: {self.id}" + if self.max_new_tokens: + txt += f", MaxNewTokens: {self.max_new_tokens}" + return txt + + +TokenGeneratorContext = TypeVar("TokenGeneratorContext") +TokenGeneratorBatchKey = TypeVar("TokenGeneratorBatchKey") + +TokenizerEncoded = TypeVar("TokenizerEncoded") + + +@runtime_checkable +class PipelineTokenizer( + Generic[TokenGeneratorContext, TokenizerEncoded], Protocol +): + """Interface for LLM tokenizers.""" + + @property + def eos(self) -> int: + """The end of sequence token for this tokenizer.""" + ... + + @property + def expects_content_wrapping(self) -> bool: + """If true, this tokenizer expects messages to have a 'content' property. + Text messages are formatted as + { "type" : "text", "content" : "text content"} + instead of, the OpenAI spec. + { "type" : "text", "text": "text content" }. + NOTE: Multimodal messages omit the content property. + Both "image_urls" and "image" content parts are converted to simply + { "type" : "image" } + Their content is provided as byte arrays and by the top level property on + the request object, i.e. "TokenGeneratorRequest.images". + """ + ... + + async def new_context( + self, request: TokenGeneratorRequest + ) -> TokenGeneratorContext: + """Creates a new context from a request object. This is sent to the + worker process once and then cached locally. + + Args: + request (TokenGeneratorRequest): Incoming request. + + Returns: + TokenGeneratorContext: Initialized context. + """ + ... + + async def encode(self, prompt: str) -> TokenizerEncoded: + """Encodes text prompts as tokens. + + Args: + prompt (str): Un-encoded prompt text. + + Raises: + ValueError: If the prompt exceeds the configured maximum length. + + Returns: + TokenizerEncoded: Encoded prompt tokens. + """ + ... + + async def decode( + self, + context: TokenGeneratorContext, + encoded: TokenizerEncoded, + **kwargs, + ) -> str: + """Decodes response tokens to text. + + Args: + context (TokenGeneratorContext): Current generation context. + encoded (TokenizerEncoded): Encoded response tokens. + + Returns: + str: Un-encoded response text. + """ + ... + + +@runtime_checkable +class TokenGenerator(Generic[TokenGeneratorContext], Protocol): + """Interface for LLM token-generator models.""" + + def next_token( + self, batch: dict[str, TokenGeneratorContext], num_steps: int + ) -> list[dict[str, Any]]: + """Computes the next token response for a single batch. + + Args: + batch (dict[str, TokenGeneratorContext]): Batch of contexts. + num_steps int: Number of tokens to generate. + + Returns: + list[dict[str, Any]]: List of encoded responses (indexed by req. ID) + """ + ... + + def release(self, context: TokenGeneratorContext) -> None: + """Releases resources associated with this context. + + Args: + context (TokenGeneratorContext): Finished context. + """ + ... diff --git a/src/max/pipelines/kv_cache/__init__.py b/src/max/pipelines/kv_cache/__init__.py new file mode 100644 index 0000000000..0008512c89 --- /dev/null +++ b/src/max/pipelines/kv_cache/__init__.py @@ -0,0 +1,183 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from typing import Any, Dict, List, Optional, Type + +from max.driver import Device +from max.dtype import DType +from max.engine import InferenceSession + +from .cache_params import KVCacheParams, KVCacheStrategy +from .continuous_batching_cache import ( + ContinuousBatchingKVCache, + ContinuousBatchingKVCacheCollection, + ContinuousBatchingKVCacheCollectionType, + ContinuousBatchingKVCacheManager, + ContinuousBatchingKVCacheType, + FetchContinuousBatchingKVCacheCollection, +) +from .hf import ContinuousHFStaticCache +from .manager import ( + KVCacheInputs, + KVCacheInputsSequence, + KVCacheInputSymbols, + KVCacheManager, + PaddedKVCacheInputs, + RaggedKVCacheInputs, +) +from .naive_cache import NaiveKVCacheManager +from .paged_cache import ( + FetchPagedKVCacheCollection, + PagedKVCacheCollection, + PagedKVCacheManager, + PagedKVCacheType, +) +from .radix_trie import RadixTrie + +CACHE_MANAGER_REGISTRY: dict[KVCacheStrategy, Type[KVCacheManager]] = { + KVCacheStrategy.CONTINUOUS: ContinuousBatchingKVCacheManager, + KVCacheStrategy.NAIVE: NaiveKVCacheManager, + KVCacheStrategy.PAGED: PagedKVCacheManager, +} + + +def load_kv_manager( + params: KVCacheParams, + max_batch_size: Optional[int], + max_seq_len: int, + num_layers: int, + devices: List[Device], + session: InferenceSession, + available_cache_memory: Optional[int] = None, + page_size: Optional[int] = 512, +) -> KVCacheManager: + assert max_batch_size is not None, "Expected max_batch_size to be set" + assert max_batch_size > 0, "max_batch_size must be greater than 0" + if params.cache_strategy == KVCacheStrategy.CONTINUOUS: + return ContinuousBatchingKVCacheManager( + params=params, + max_batch_size=max_batch_size, + max_seq_len=max_seq_len, + num_layers=num_layers, + devices=devices, + session=session, + ) + elif params.cache_strategy == KVCacheStrategy.NAIVE: + return NaiveKVCacheManager( + params=params, + max_batch_size=max_batch_size, + max_seq_len=max_seq_len, + num_layers=num_layers, + devices=devices, + session=session, + ) + elif params.cache_strategy == KVCacheStrategy.PAGED: + if page_size is None: + msg = ( + "Missing required argument page_size for KVCacheStrategy.PAGED" + ) + raise ValueError(msg) + + # TODO(KERN-1308) remove this validation as we generalize page_size + if page_size % 128 != 0 or page_size < 128: + msg = "Page size must be a multiple of 128 and at least 128." + raise ValueError(msg) + + if available_cache_memory is None: + msg = "Missing required argument available_cache_memory for KVCacheStrategy.PAGED" + raise ValueError(msg) + + return PagedKVCacheManager( + params=params, + max_batch_size=max_batch_size, + max_seq_len=max_seq_len, + num_layers=num_layers, + devices=devices, + session=session, + cache_memory=available_cache_memory, + page_size=page_size, + ) + else: + msg = f"cache type: {params.cache_strategy} not supported." + raise ValueError(msg) + + +def estimate_kv_cache_size( + params: KVCacheParams, + max_batch_size: Optional[int], + max_seq_len: int, + num_layers: int, + available_cache_memory: int, + devices: List[Device], + **kwargs: Any, +) -> int: + assert max_batch_size is not None, "Expected max_batch_size to be set" + assert max_batch_size > 0, "max_batch_size must be greater than 0" + if params.cache_strategy not in CACHE_MANAGER_REGISTRY: + msg = f"cache type: {params.cache_strategy} not supported." + raise ValueError(msg) + + return CACHE_MANAGER_REGISTRY[params.cache_strategy].estimated_memory_size( + params=params, + max_batch_size=max_batch_size, + max_seq_len=max_seq_len, + num_layers=num_layers, + available_cache_memory=available_cache_memory, + devices=devices, + **kwargs, + ) + + +def infer_optimal_batch_size( + params: KVCacheParams, + max_seq_len: int, + num_layers: int, + available_cache_memory: int, + devices: List[Device], + **kwargs: Any, +) -> int: + return CACHE_MANAGER_REGISTRY[ + params.cache_strategy + ].infer_optimal_batch_size( + params=params, + max_seq_len=max_seq_len, + num_layers=num_layers, + available_cache_memory=available_cache_memory, + devices=devices, + **kwargs, + ) + + +__all__ = [ + "KVCacheParams", + "KVCacheStrategy", + "ContinuousBatchingKVCache", + "ContinuousBatchingKVCacheCollection", + "ContinuousBatchingKVCacheCollectionType", + "ContinuousBatchingKVCacheManager", + "ContinuousBatchingKVCacheType", + "FetchContinuousBatchingKVCacheCollection", + "FetchPagedKVCacheCollection", + "PagedKVCacheManager", + "PagedKVCacheCollection", + "PagedKVCacheType", + "KVCacheManager", + "KVCacheInputs", + "KVCacheInputsSequence", + "RaggedKVCacheInputs", + "PaddedKVCacheInputs", + "KVCacheInputSymbols", + "NaiveKVCacheManager", + "ContinuousHFStaticCache", + "RadixTrie", +] diff --git a/src/max/pipelines/kv_cache/_utils.py b/src/max/pipelines/kv_cache/_utils.py new file mode 100644 index 0000000000..6942ad7823 --- /dev/null +++ b/src/max/pipelines/kv_cache/_utils.py @@ -0,0 +1,33 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +"""Utility functions for KV cache.""" + +import numpy as np +from max.driver import Tensor + + +def build_max_lengths_tensor( + num_steps: int, max_seq_length: int, max_cache_length: int +) -> Tensor: + # Build a tensor of maximum lengths. Each step slices the first row to + # advance to the values for the next row. + max_lengths_np = np.empty((num_steps, 2), np.uint32) + step_max_seq_length = max_seq_length + step_max_cache_length = max_cache_length + for step in range(num_steps): + max_lengths_np[step, 0] = step_max_seq_length + max_lengths_np[step, 1] = step_max_cache_length + step_max_cache_length += step_max_seq_length + step_max_seq_length = 1 + return Tensor.from_numpy(max_lengths_np) diff --git a/src/max/pipelines/kv_cache/cache_params.py b/src/max/pipelines/kv_cache/cache_params.py new file mode 100644 index 0000000000..6ca3a34491 --- /dev/null +++ b/src/max/pipelines/kv_cache/cache_params.py @@ -0,0 +1,84 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from enum import Enum +from typing import Optional + +from max.dtype import DType + + +class KVCacheStrategy(str, Enum): + MODEL_DEFAULT = "model_default" + NAIVE = "naive" + CONTINUOUS = "continuous" + PAGED = "paged" + + def __str__(self) -> str: + return self.value + + def __repr__(self) -> str: + return self.value + + def kernel_substring(self) -> str: + """Returns the common substring that we include in the kernel name for this caching strategy.""" + if self == KVCacheStrategy.CONTINUOUS: + return "continuous_batching" + return str(self.value) + + def uses_opaque(self) -> bool: + return self != KVCacheStrategy.NAIVE + + +class KVCacheParams: + def __init__( + self, + dtype: DType, + n_kv_heads: int, + head_dim: int, + enable_prefix_caching: bool = False, + cache_strategy: KVCacheStrategy = KVCacheStrategy.CONTINUOUS, + page_size: Optional[int] = None, + n_devices: int = 1, + ): + # Initialize static attributes. + self.dtype = dtype + self.n_kv_heads = n_kv_heads + self.head_dim = head_dim + self.cache_strategy = cache_strategy + self.n_devices = n_devices + self.n_kv_heads_per_device = n_kv_heads // n_devices + self.page_size = page_size + self.enable_prefix_caching = enable_prefix_caching + + # Validate inputs. + if enable_prefix_caching and cache_strategy != KVCacheStrategy.PAGED: + raise ValueError( + "Prefix caching is only supported for paged cache strategy" + ) + if page_size is None and cache_strategy == KVCacheStrategy.PAGED: + raise ValueError("Page size is required for paged cache strategy") + + @property + def dtype_shorthand(self) -> str: + """The textual representation in shorthand of the dtype.""" + return "bf16" if self.dtype == DType.bfloat16 else "f32" + + @property + def static_cache_shape(self) -> tuple[str, str, str, str, str]: + return ( + "num_layers", + "batch_size", + "seq_len", + "n_kv_heads", + "head_dim", + ) diff --git a/src/max/pipelines/kv_cache/continuous_batching_cache.py b/src/max/pipelines/kv_cache/continuous_batching_cache.py new file mode 100644 index 0000000000..b6f75e9c8a --- /dev/null +++ b/src/max/pipelines/kv_cache/continuous_batching_cache.py @@ -0,0 +1,405 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +"""Continuous Batching enabled KV cache for the Transformer leveraging the mo.opaque pattern.""" + +from __future__ import annotations + +from dataclasses import dataclass +from functools import reduce +from operator import mul +from typing import Any, List, cast + +import numpy as np +from max.driver import Device, Tensor +from max.dtype import DType +from max.engine import InferenceSession +from max.graph import ( + DeviceRef, + TensorType, + TensorValue, + _OpaqueType, + _OpaqueValue, + ops, +) + +from ._utils import build_max_lengths_tensor +from .cache_params import KVCacheParams +from .manager import ( + KVCacheInputs, + KVCacheInputSymbols, + KVCacheManager, + RaggedKVCacheInputs, +) + + +@dataclass +class ContinuousBatchingKVCacheInputSymbols(KVCacheInputSymbols): + kv_blocks: TensorType + cache_lengths: TensorType + lookup_table: TensorType + max_lengths: TensorType + + +class ContinuousBatchingKVCacheType(_OpaqueType): + """Continuous Mojo KV Cache graph type.""" + + def __init__(self) -> None: + """Creates an opaque type containing a continuous batching KV Cache.""" + super().__init__("ContinuousBatchingKVCache") + + +class ContinuousBatchingKVCacheCollectionType(_OpaqueType): + """The graph type for a "view" of the cache for the given sequences in the + batch. + + This object does not own the underlying buffers in k_cache and v_cache, + it's borrowing them from the BlockWrappers in our ContinuousKVCacheManager. + It does own the Pointer[NDBuffer[type, 3]] and valid_lengths buffer + """ + + def __init__(self) -> None: + """Creates an opaque type containing a continuous batching KV cache collection.""" + super().__init__("ContinuousBatchingKVCacheCollection") + + +class ContinuousBatchingKVCache(_OpaqueValue): + """Continuous Mojo KV cache graph value.""" + + +class ContinuousBatchingKVCacheCollection(_OpaqueValue): + """The graph value for a view of the KV cache.""" + + +class FetchContinuousBatchingKVCacheCollection: + def __init__(self, kv_params: KVCacheParams) -> None: + if kv_params.enable_prefix_caching: + raise ValueError( + "Prefix caching is not supported for continuous batching cache." + ) + self.kv_params = kv_params + + def __call__( + self, + blocks: TensorValue, # NDBuffer[type, 6, Self.blocks_shape] + cache_lengths: TensorValue, # NDBuffer[DType.uint32, 1], + lookup_table: TensorValue, # NDBuffer[DType.uint32, 1], + max_lengths: TensorValue, + ) -> ContinuousBatchingKVCacheCollection: + """Constructs a ContinuousBatchingKVCacheCollection for use downstream.""" + + # Explicit validation. + if blocks.dtype != self.kv_params.dtype: + msg = ( + f"expected blocks to be dtype: {self.kv_params.dtype}, got" + f" {blocks.dtype}" + ) + raise ValueError(msg) + + if blocks.rank != 6: + msg = f"expected blocks to be of rank 6, got {blocks.rank}" + raise ValueError(msg) + + # For all tensors other than the blocks tensor, the length should be equivalent + # to batch size, which is unknown within the graph at this stage. + if cache_lengths.dtype != DType.uint32: + msg = ( + "expected cache lengths to be dtype: uint32, got" + f" {cache_lengths.dtype}" + ) + raise ValueError(msg) + + if lookup_table.dtype != DType.uint32: + msg = ( + "expected lookup_table to be dtype: uint32, got" + f" {lookup_table.dtype}" + ) + raise ValueError(msg) + + return ContinuousBatchingKVCacheCollection( + ops.custom( + "mo.kv_collection_ctor.continuous_batching", + values=[ + blocks, + cache_lengths, + lookup_table, + max_lengths, + ], + out_types=[ContinuousBatchingKVCacheCollectionType()], + parameters={ + "num_heads": self.kv_params.n_kv_heads_per_device, + "head_dim": self.kv_params.head_dim, + }, + )[0].opaque + ) + + +class ContinuousBatchingKVCacheManager(KVCacheManager): + def __init__( + self, + params: KVCacheParams, + max_batch_size: int, + max_seq_len: int, + num_layers: int, + devices: List[Device], + session: InferenceSession, + ) -> None: + super().__init__( + params=params, + max_batch_size=max_batch_size, + max_seq_len=max_seq_len, + num_layers=num_layers, + devices=devices, + session=session, + is_ragged=True, + ) + + # Allocate memory for the KV cache blocks. + self.blocks: List[Tensor] = [] + for i in range(len(self.devices)): + self.blocks.append( + Tensor.zeros( + self.block_shape(self.max_batch_size), + self.params.dtype, + device=self.devices[i], + ) + ) + + @classmethod + def estimated_memory_size( + cls, + params: KVCacheParams, + max_batch_size: int, + max_seq_len: int, + num_layers: int, + available_cache_memory: int, + devices: List[Device], + **kwargs: Any, + ) -> int: + cache_size = ( + reduce( + mul, + cls._block_shape( + params, max_batch_size, max_seq_len, num_layers + ), + ) + * params.dtype.size_in_bytes + ) + lengths_size = max_batch_size * DType.uint32.size_in_bytes + lookup_table_size = max_batch_size * DType.uint32.size_in_bytes + size = cache_size + lengths_size + lookup_table_size + return size * len(devices) + + @classmethod + def infer_optimal_batch_size( + cls, + params: KVCacheParams, + max_seq_len: int, + num_layers: int, + available_cache_memory: int, + devices: List[Device], + **kwargs: Any, + ) -> int: + cache_size_per_sequence = ( + reduce( + mul, + cls._block_shape(params, 1, max_seq_len, num_layers), + ) + * params.dtype.size_in_bytes + ) + return int(available_cache_memory // cache_size_per_sequence) + + def _fetch( + self, + seq_ids_and_prompts: dict[int, np.ndarray], + num_steps: int = 1, + ) -> List[KVCacheInputs]: + """Fetches the KV cache state for the given sequence IDs. + + This method retrieves the current cache state for a batch of sequences, including their + cache lengths and lookup information. It's used during token generation to access + previously cached key/value pairs. + + Args: + seq_ids_and_prompts: Dictionary of sequence IDs to fetch cache state for and the + new prompt we plan to add to the cache. Each ID must be within + the max_batch_size and must exist in the current cache. + num_steps: Number of steps to run for multi-step scheduling. + + Returns: + List of tuples for each device containing: + - blocks: Tensor containing the KV cache blocks + - cache_lengths: Tensor of current cache lengths for each sequence + - lookup_table: Tensor mapping sequence IDs to cache positions + - max_lengths: Tensor containing [max_seq_length, max_cache_length] + + Raises: + ValueError: If any seq_id exceeds max_batch_size or doesn't exist in cache + """ + active_batch_size = len(seq_ids_and_prompts) + + # Lookup table and seq_ids are redundant identical tensors. + lookup_table_tensor = Tensor.from_numpy( + np.array(list(seq_ids_and_prompts.keys()), np.uint32) + ) + cache_lengths_np = np.zeros(active_batch_size, np.uint32) + + max_seq_length = 0 + max_cache_length = 0 + + for i, (seq_id, prompt) in enumerate(seq_ids_and_prompts.items()): + if seq_id > self.max_batch_size: + msg = ( + f"seq_id: {seq_id}, beyond max_batch_size, you may" + " want to increase `max_batch_size` in the pipeline" + " config." + ) + raise ValueError(msg) + elif seq_id not in self.cache_lengths: + raise ValueError(f"seq_id: {seq_id} not currently in cache.") + + cache_len = self.cache_lengths[seq_id] + + assert ( + cache_len + len(prompt) + num_steps - 1 <= self.max_seq_len + ), ( + f"seq_id: {seq_id} would overrun the max cache length of {self.max_seq_len} " + f"with {len(prompt)} new tokens and {num_steps} steps. Existing length: {cache_len}" + ) + + cache_lengths_np[i] = cache_len + + # Update the maximum lengths seen so far. + max_seq_length = max(max_seq_length, len(prompt)) + max_cache_length = max(max_cache_length, cache_len) + + cache_lengths = [ + Tensor.from_numpy(cache_lengths_np).to(d) for d in self.devices + ] + lookup_table_tensor_list = [ + lookup_table_tensor.to(self.devices[i]) + for i in range(len(self.devices)) + ] + + # Build a tensor of maximum lengths. Each step slices the first row to + # advance to the values for the next row. + max_lengths_host = build_max_lengths_tensor( + num_steps, max_seq_length, max_cache_length + ) + + result = [ + RaggedKVCacheInputs( + blocks=self.blocks[i], + cache_lengths=cache_lengths[i], + lookup_table=lookup_table_tensor_list[i], + max_lengths=max_lengths_host, + ) + for i in range(len(self.devices)) + ] + return cast(List[KVCacheInputs], result) + + def block_shape(self, n_sequences: int) -> list[int]: + """Returns the shape of the KV cache blocks for the given number of sequences. + + Defines the 6-dimensional shape of the cache blocks used to store key and value + tensors for transformer attention. The dimensions represent: + [n_sequences, 2, num_layers, max_seq_len, n_kv_heads_per_device, head_dim] + where 2 represents separate storage for keys and values. + + Args: + n_sequences: Number of sequences that will be cached + + Returns: + List describing the shape of the cache blocks with dimensions for: + sequences, key/value split, layers, sequence length, attention heads, and head dimension + """ + return self._block_shape( + self.params, + n_sequences, + self.max_seq_len, + self.num_layers, + ) + + @staticmethod + def _block_shape( + params: KVCacheParams, + n_sequences: int, + max_seq_len: int, + num_layers: int, + ) -> list[int]: + return [ + n_sequences, + 2, + num_layers, + max_seq_len, + params.n_kv_heads_per_device, + params.head_dim, + ] + + def input_symbols( + self, + ) -> List[ContinuousBatchingKVCacheInputSymbols]: + """Returns the expected input tensor types for `fetch` on each device. + + Defines the tensor specifications needed by the cache implementation, + including shapes and data types. This is used for graph construction + and validation. + + Returns: + List of ContinuousBatchingKVCacheInputSymbols for each device + containing TensorTypes for: + - KV cache blocks: 6D tensor for storing keys and values + - Cache lengths: 1D tensor tracking sequence lengths + - Lookup table: 1D tensor mapping sequence IDs to cache positions + - Maximum lengths: 2D tensor tracking maximum sequence and cache lengths per step. + """ + return [ + ContinuousBatchingKVCacheInputSymbols( + kv_blocks=TensorType( + self.params.dtype, + shape=[ + "num_blocks", + 2, + "num_layers", + "max_seq_len", + "num_kv_heads", + "head_dim", + ], + device=DeviceRef(self.devices[i].label, self.devices[i].id), + ), + cache_lengths=TensorType( + DType.uint32, + shape=["batch_size"], + device=DeviceRef(self.devices[i].label, self.devices[i].id), + ), + lookup_table=TensorType( + DType.uint32, + shape=["batch_size"], + device=DeviceRef(self.devices[i].label, self.devices[i].id), + ), + # max_lengths (on host) + max_lengths=TensorType( + DType.uint32, + shape=["steps_remaining", 2], + # TODO: This is a hack introduced to remediate a negative side effect + # of the graph compiler changes introduced in #52793. + # We are tricking the compiler into thinking that the max_lengths + # tensor is on the device, even though it is on the host. + # With #52793 graph compiler changes, the compiler would + # insert erroneous device transfers that lead to CUDA_ILLEGAL_ADDRESS + # errors if we don't do this forceful device specification. + device=DeviceRef(self.devices[i].label, self.devices[i].id), + ), + ) + for i in range(len(self.devices)) + ] diff --git a/src/max/pipelines/kv_cache/hf.py b/src/max/pipelines/kv_cache/hf.py new file mode 100644 index 0000000000..7f0a32622c --- /dev/null +++ b/src/max/pipelines/kv_cache/hf.py @@ -0,0 +1,149 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from typing import Any, Optional, Union + +import numpy as np +import torch +from torch import device as torch_device +from transformers import PretrainedConfig, StaticCache + + +class ContinuousHFStaticCache(StaticCache): + def __init__( + self, + config: PretrainedConfig, + max_batch_size: int, + max_seq_len: int, + device: torch_device, + dtype: torch.dtype = torch.float32, + layer_device_map: Optional[ + dict[int, Union[str, torch_device, int]] + ] = None, + ) -> None: + super().__init__( + config, + max_batch_size, + max_seq_len, + device, + dtype, + None, + layer_device_map, + ) + self.max_batch_size = max_batch_size + self.device = device + self._init_slots() + + def _init_slots(self) -> None: + self.available_slots: set[int] = set(range(self.max_batch_size)) + self.active_slots: list[int] = [] + self.attention_patterns: dict[int, torch.Tensor] = {} + self.tokens: dict[int, np.ndarray] = {} + self.cache_position: torch.Tensor = torch.arange( + 0, + len(self.active_slots), + device=self.device, + ) + + def external_claim(self, seq_ids: list[int]) -> None: + if not self.available_slots: + raise RuntimeError("No slots are available for claiming.") + + unavailable_slots = set(seq_ids) - self.available_slots + if unavailable_slots: + raise ValueError( + f"The following seq_ids are already claimed: {unavailable_slots}" + ) + + for seq_id in seq_ids: + self.available_slots.remove(seq_id) + self.attention_patterns[seq_id] = torch.tensor( + [], dtype=torch.long, device=self.device + ) + self.tokens[seq_id] = np.array([]) + + def set_active_slots(self, seq_ids: list[int]) -> None: + self.active_slots = seq_ids + + def set_cache_position(self, cache_position: torch.Tensor): + self.cache_position = cache_position + + def update( + self, + key_states: torch.Tensor, + value_states: torch.Tensor, + layer_idx: int, + cache_kwargs: Optional[dict[str, Any]] = None, + ) -> tuple[torch.Tensor, torch.Tensor]: + cache_position = self.cache_position + + k_out = self.key_cache[layer_idx] + v_out = self.value_cache[layer_idx] + + # Prepare slot indices tensor once + slot_indices = torch.tensor(self.active_slots, device=self.device) + + # Update each sequence individually to handle different shapes correctly + for batch_idx, slot_idx in enumerate(self.active_slots): + k_out[slot_idx].index_copy_( + 1, cache_position, key_states[batch_idx] + ) + v_out[slot_idx].index_copy_( + 1, cache_position, value_states[batch_idx] + ) + + # Return reordered key value cache for the layer + return ( + k_out.index_select(0, slot_indices), + v_out.index_select(0, slot_indices), + ) + + def update_attention_pattern( + self, seq_id: int, attention_mask: torch.Tensor + ) -> None: + self.attention_patterns[seq_id] = attention_mask.to( + device=self.device, dtype=torch.long + ) + + def get_attention_mask(self, seq_ids: list[int]) -> torch.Tensor: + max_len = max( + self.attention_patterns[seq_id].size(0) for seq_id in seq_ids + ) + attention_mask = torch.zeros( + (len(seq_ids), max_len), dtype=torch.long, device=self.device + ) + + for i, seq_id in enumerate(seq_ids): + pattern = self.attention_patterns[seq_id] + attention_mask[i, : pattern.size(0)] = pattern + + return attention_mask + + def release(self, seq_id: int) -> None: + if seq_id in self.available_slots: + raise KeyError( + f"The seq_id {seq_id} is not currently claimed and cannot be released." + ) + + # Zero out cache tensors for the sequence + for layer_idx in range(len(self.key_cache)): + self.key_cache[layer_idx][seq_id].zero_() + self.value_cache[layer_idx][seq_id].zero_() + + self.available_slots.add(seq_id) + del self.attention_patterns[seq_id] + del self.tokens[seq_id] + + def reset(self) -> None: + super().reset() + self._init_slots() diff --git a/src/max/pipelines/kv_cache/manager.py b/src/max/pipelines/kv_cache/manager.py new file mode 100644 index 0000000000..7f124db394 --- /dev/null +++ b/src/max/pipelines/kv_cache/manager.py @@ -0,0 +1,542 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +"""Abstract base class for KVCacheManager for KV Cache.""" + +from __future__ import annotations + +from abc import ABC, abstractmethod +from collections import deque +from dataclasses import dataclass +from typing import Any, List, Sequence, cast, final + +import numpy as np +from max.driver import Device, Tensor +from max.dtype import DType +from max.engine import InferenceSession +from max.graph import DeviceRef, Graph, TensorType, TensorValue + +from .cache_params import KVCacheParams + + +@dataclass +class _FetchMetadata: + """Metadata about sequences that are inflight. + + Inflight refers to sequences that have executed `fetch` but not `step`. + """ + + prompt: np.ndarray + num_steps: int + + +@dataclass +class KVCacheInputs: + """ + A base class that holds KV cache related (Tensor) inputs. + + It is meant to be subclassed by concrete KV cache input types. + + Example: + >>> @dataclass + ... class RaggedKVCacheInputs(KVCacheInputs): + ... blocks: Tensor + ... cache_lengths: Tensor + ... lookup_table: Tensor + ... max_lengths: Tensor + """ + + def __iter__(self): + """Iterates through each Type in order.""" + fields = deque( + getattr(self, field) for field in self.__dataclass_fields__ + ) + while fields: + value = fields.popleft() + if isinstance(value, Sequence) and all( + isinstance(x, KVCacheInputs) for x in value + ): + # Add sequence elements in original order + fields.extendleft([x for x in reversed(value)]) + continue + elif isinstance(value, KVCacheInputs): + fields.extendleft( + reversed( + [ + getattr(value, field) + for field in value.__dataclass_fields__ + ] + ) + ) + continue + else: + yield cast(Tensor, value) + + def __getitem__(self, index): + return list(self)[index] + + def __setitem__(self, index, value): + list(self)[index] = value + + def __len__(self): + count = 0 + # Iterate over all fields in the dataclass. If we run into a sequence of + # KVCacheInputs, we expand and recursively call `len` on the KVCacheInputs + # elements. + for field in self.__dataclass_fields__: + value = getattr(self, field) + if isinstance(value, Sequence) and all( + isinstance(x, KVCacheInputs) for x in value + ): + count += sum(len(x) for x in value) + else: + count += 1 + return count + + +@dataclass +class PaddedKVCacheInputs(KVCacheInputs): + """ + PaddedKVCacheInputs is a class that holds the inputs for + KV cache when used together with padded tensors. + """ + + k_cache: Tensor + v_cache: Tensor + start_pos: Tensor + null_op: Tensor + + +@dataclass +class RaggedKVCacheInputs(KVCacheInputs): + """ + RaggedKVCacheInputs is a class that holds the inputs for + KV cache when used together with ragged tensors. + """ + + blocks: Tensor + cache_lengths: Tensor + lookup_table: Tensor + max_lengths: Tensor + + +@dataclass +class KVCacheInputsSequence(KVCacheInputs): + """ + KVCacheInputsSequence is a sequence of KVCacheInputs. + It is primarily used in our multistep execution to represent batched + KVCacheInputs. + """ + + kv_cache_inputs: Sequence[KVCacheInputs] + + +@dataclass +class KVCacheInputSymbols: + """ + Base class for input symbols for KV cache managers. + + The derived class is responsible for defining the input symbols for the + specific KV cache manager. + + For example, here's a derived class for a text KV cache manager: + >>> @dataclass + ... class ContinuousBatchingKVCacheInputSymbols(KVCacheInputSymbols): + ... kv_blocks: TensorType + ... cache_lengths: TensorType + ... lookup_table: TensorType + ... max_lengths: TensorType + """ + + def __iter__(self): + """Iterates through each Type in order.""" + fields = deque( + getattr(self, field) for field in self.__dataclass_fields__ + ) + while fields: + value = fields.popleft() + if isinstance(value, KVCacheInputSymbols): + fields.extendleft( + reversed( + [ + getattr(value, field) + for field in value.__dataclass_fields__ + ] + ) + ) + continue + else: + yield value + + def __getitem__(self, index): + return list(self)[index] + + +class KVCacheManager(ABC): + def __init__( + self, + params: KVCacheParams, + max_batch_size: int, + max_seq_len: int, + num_layers: int, + devices: List[Device], + session: InferenceSession, + is_ragged: bool = False, + ) -> None: + self.params = params + self.max_batch_size = max_batch_size + self.max_seq_len = max_seq_len + self.num_layers = num_layers + self.devices = devices + self.session = session + + # Attributes for managing available slots. + self.available = set(range(self.max_batch_size)) + self.cache_lengths: dict[int, int] = {} + + self.is_ragged = is_ragged + increment_cache_lengths_graph = ( + self._create_increment_cache_lengths_graph() + ) + self.increment_cache_lengths_model = session.load( + increment_cache_lengths_graph + ) + self.fetch_metadata: dict[int, _FetchMetadata] = {} + + @classmethod + @abstractmethod + def estimated_memory_size( + cls, + params: KVCacheParams, + max_batch_size: int, + max_seq_len: int, + num_layers: int, + available_cache_memory: int, + devices: List[Device], + **kwargs: Any, + ) -> int: + """Returns the estimated total memory usage of the kv cache.""" + ... + + @classmethod + @abstractmethod + def infer_optimal_batch_size( + cls, + params: KVCacheParams, + max_seq_len: int, + num_layers: int, + available_cache_memory: int, + devices: List[Device], + **kwargs: Any, + ) -> int: + """Returns the estimated optimal batch size for the kv cache.""" + ... + + @abstractmethod + def _fetch( + self, + seq_ids_and_prompts: dict[int, np.ndarray], + num_steps: int = 1, + ) -> List[KVCacheInputs]: + """Used by `fetch` and should be implemented by child classes.""" + ... + + @final + def fetch( + self, + seq_ids_and_prompts: dict[int, np.ndarray], + num_steps: int = 1, + ) -> List[KVCacheInputs]: + """Returns blocks and other inputs to kv cache kernel for given + sequence ids and prompts.""" + # Call into `_fetch` method implemented by child classes. + # This may trim the prompts in place so the fetch metadata is updated + # afterwards. + res = self._fetch(seq_ids_and_prompts, num_steps) + + # Update the fetch metadata for the given sequence ids and prompts. + for seq_id, prompt in seq_ids_and_prompts.items(): + assert seq_id not in self.fetch_metadata + self.fetch_metadata[seq_id] = _FetchMetadata( + prompt=prompt, + num_steps=num_steps, + ) + + return res + + @abstractmethod + def input_symbols( + self, + ) -> Sequence[KVCacheInputSymbols]: + """Returns the input symbols for the kv cache manager.""" + ... + + def claim(self, n: int) -> List[int]: + """Claims `n` blocks of memory in the cache for incoming requests. + + This returns a list of sequence ids, which identify a sequence's + location within the cache. This sequence id can then be passed + in the fetch function to return the ContinuousBatchingKVCacheCollection + for those sequences. + """ + # TODO we should remove this interface and just use external_claim. + seq_ids = [] + + for _ in range(n): + id = self.available.pop() + seq_ids.append(id) + self.cache_lengths[id] = 0 + + return seq_ids + + def external_claim(self, seq_ids: List[int]) -> None: + """Variant of the above where sequence ids are reserved externally.""" + for seq_id in seq_ids: + self.available.remove(seq_id) + self.cache_lengths[seq_id] = 0 + + def _step( + self, + seq_ids_and_new_tokens: dict[int, np.ndarray], + ) -> None: + """Used by `step` and can optionally be overridden by child classes.""" + ... + + def step(self, seq_ids_and_new_tokens: dict[int, np.ndarray]) -> None: + """Update the `cache_lengths` objects to note that a new + kv projection step has occurred, and that the underlying memory + has been written to. This `cache_lengths` value is then used + downstream in `fetch` to track what section of memory should + be used in the kernels. + """ + # Call into `_step` method possibly overridden by child classes. + self._step(seq_ids_and_new_tokens) + + # Update the cache lengths and delete the fetch metadata for the given + # sequence ids and prompts. + for seq_id, new_tokens in seq_ids_and_new_tokens.items(): + if seq_id not in self.cache_lengths: + raise ValueError(f"seq_id: {seq_id} not in cache.") + + assert seq_id in self.fetch_metadata + metadata = self.fetch_metadata[seq_id] + del self.fetch_metadata[seq_id] + + assert metadata.num_steps == len(new_tokens) + self.cache_lengths[seq_id] += ( + len(metadata.prompt) + metadata.num_steps - 1 + ) + + def release(self, seq_id: int) -> None: + """Release `seq_id` provided, marking this sequence as complete. + This returns the seq_id back to the available pool of cache memory, + allowing it to be reused when a new sequence is claimed. + """ + + if seq_id not in self.cache_lengths: + raise ValueError(f"seq_id: {id} not in cache.") + + self.available.add(seq_id) + del self.cache_lengths[seq_id] + + def contains(self, seq_id: int) -> bool: + return seq_id not in self.slots_remaining + + @property + def slots_remaining(self) -> set[int]: + """The outstanding cache slots available.""" + return self.available + + @property + def max_sequence_length(self) -> int: + """The maximum sequence length in current cache.""" + return max(self.cache_lengths.values()) + + def num_kv_inputs(self) -> int: + """Returns the default number of KV cache inputs for KV managers. + + Subclasses with a different number of KV cache inputs should override + this method and `increment_cache_lengths`. + """ + return 4 + + def increment_cache_lengths( + self, + kv_cache_inputs: List[RaggedKVCacheInputs] | List[PaddedKVCacheInputs], + prev_model_inputs: Any, + ) -> List[RaggedKVCacheInputs] | List[PaddedKVCacheInputs]: + """ + Prepare the inputs for a multistep execution, generally by incrementing + the cache lengths. This should not require a device synchronization, + as this would defeat the purpose of multistep execution. + + This should also not update the cache lengths in our manager, this batch is + still considered in-progress. + """ + if self.is_ragged: + return self._increment_cache_lengths_ragged( + kv_cache_inputs=cast( + list[RaggedKVCacheInputs], kv_cache_inputs + ), + prev_model_inputs=prev_model_inputs, + ) + + return self._increment_cache_lengths_padded( + kv_cache_inputs=cast(list[PaddedKVCacheInputs], kv_cache_inputs), + prev_model_inputs=prev_model_inputs, + ) + + def _increment_cache_lengths_ragged( + self, + kv_cache_inputs: List[RaggedKVCacheInputs], + prev_model_inputs: Any, + ) -> List[RaggedKVCacheInputs]: + """Prepares cache inputs for the next token in multistep execution. + + Updates the cache lengths for the next inference step without requiring device + synchronization or memory copies. This is crucial for maintaining performance + during multi-token generation. + + Args: + kv_cache_inputs: Current cache state tuples (blocks, lengths, lookup, max_lengths) + prev_model_inputs: Previous model inputs including row offsets + + Returns: + Updated cache input tuples with incremented lengths. + """ + blocks = [kv_cache_inputs[i].blocks for i in range(len(self.devices))] + cache_lengths = [ + kv_cache_inputs[i].cache_lengths for i in range(len(self.devices)) + ] + lookup_table = [ + kv_cache_inputs[i].lookup_table for i in range(len(self.devices)) + ] + + # max_lengths is host allocated and the same across all devices. + max_lengths = kv_cache_inputs[0].max_lengths + + # Update the cache_lengths of our batch by the previous sequence length. + updated_cache_lengths = self.increment_cache_lengths_model.execute( + prev_model_inputs.input_row_offsets, *cache_lengths + ) + + # Advance to the next step of the max_lengths tensor. + updated_max_lengths = max_lengths[1:, :] + + # Return our updated batch. + for i in range(len(self.devices)): + updated_cache_length = updated_cache_lengths[i] + assert isinstance(updated_cache_length, Tensor) + kv_cache_inputs[i] = RaggedKVCacheInputs( + blocks=blocks[i], + cache_lengths=updated_cache_length, + lookup_table=lookup_table[i], + max_lengths=updated_max_lengths, + ) + return kv_cache_inputs + + def _increment_cache_lengths_padded( + self, + kv_cache_inputs: List[PaddedKVCacheInputs], + prev_model_inputs: Any, + ) -> List[PaddedKVCacheInputs]: + """ + Prepare the inputs for a multistep execution, generally by incrementing + the cache lengths. This should not require a device synchronization, + as this would defeat the purpose of multistep execution. + + This should also not update the cache lengths in our manager, this batch is + still considered in-progress. + """ + assert len(kv_cache_inputs) == 1 + curr_kv_cache_inputs = kv_cache_inputs[0] + + new_start_pos = self.increment_cache_lengths_model( + curr_kv_cache_inputs.start_pos, prev_model_inputs.tokens + )[0] + assert isinstance(new_start_pos, Tensor) + return [ + PaddedKVCacheInputs( + k_cache=curr_kv_cache_inputs.k_cache, + v_cache=curr_kv_cache_inputs.v_cache, + start_pos=new_start_pos, + null_op=new_start_pos, + ) + ] + + def _create_increment_cache_lengths_graph(self) -> Graph: + """Constructs a graph to increment the cache_lengths argument during multi-step inference. + + It's imperative that this operation occurs entirely on GPU, + otherwise we'll synchronize across devices and incur a latency penalty. + """ + if self.is_ragged: + return self._create_ragged_increment_cache_lengths_graph() + + return self._create_padded_increment_cache_lengths_graph() + + def _create_padded_increment_cache_lengths_graph(self) -> Graph: + start_pos_type = TensorType(DType.int64, shape=[]) + tokens_type = TensorType(DType.int64, shape=["batch_size", "seq_len"]) + with Graph( + "update_start_pos", input_types=[start_pos_type, tokens_type] + ) as graph: + start_pos, tokens = graph.inputs + assert isinstance(start_pos, TensorValue) + assert isinstance(tokens, TensorValue) + graph.output(start_pos + tokens.shape[1]) + + return graph + + def _create_ragged_increment_cache_lengths_graph(self) -> Graph: + input_symbols = self.input_symbols() + cache_lengths_types = [ + input_symbols[i][1] for i in range(len(self.devices)) + ] + + input_row_offsets_type = TensorType( + DType.uint32, + shape=["input_row_offsets_len"], + device=DeviceRef(self.devices[0].label, self.devices[0].id), + ) + + with Graph( + "update_cache_lengths", + input_types=[input_row_offsets_type, *cache_lengths_types], + ) as graph: + inp_row_offset, *cache_lengths = graph.inputs + assert isinstance(inp_row_offset, TensorValue) + # broadcast the inp_row_offset to all devices (naive) + # get rid of this if statement after #51465 merges + if len(self.devices) > 1: + input_row_offsets = [ + inp_row_offset.to(DeviceRef(d.label, d.id)) + for d in self.devices + ] + else: + input_row_offsets = [inp_row_offset] + outputs = [] + for i in range(len(self.devices)): + cache_length = cache_lengths[i] + assert isinstance(cache_length, TensorValue) + right_slice = input_row_offsets[i][1:].rebind( + cache_length.shape + ) + left_slice = input_row_offsets[i][ + : input_row_offsets[i].shape[0] - 1 + ].rebind(cache_length.shape) + increment_amount = right_slice - left_slice + outputs.append(cache_length + increment_amount) + graph.output(*outputs) + + return graph diff --git a/src/max/pipelines/kv_cache/naive_cache.py b/src/max/pipelines/kv_cache/naive_cache.py new file mode 100644 index 0000000000..40ad2d9b5e --- /dev/null +++ b/src/max/pipelines/kv_cache/naive_cache.py @@ -0,0 +1,216 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +"""Naive KV cache for the Transformer.""" + +from dataclasses import dataclass +from functools import reduce +from operator import mul +from typing import Any, List, cast + +import numpy as np +from max.driver import Device, Tensor +from max.dtype import DType +from max.engine import InferenceSession +from max.graph import BufferType, TensorType + +from .cache_params import KVCacheParams +from .manager import ( + KVCacheInputs, + KVCacheInputSymbols, + KVCacheManager, + PaddedKVCacheInputs, +) + + +@dataclass +class NaiveKVCacheInputSymbols(KVCacheInputSymbols): + k_cache: BufferType + v_cache: BufferType + start_pos: TensorType + null_op: TensorType + + +class NaiveKVCacheManager(KVCacheManager): + def __init__( + self, + params: KVCacheParams, + max_batch_size: int, + max_seq_len: int, + num_layers: int, + devices: List[Device], + session: InferenceSession, + ) -> None: + assert len(devices) == 1, "Naive caching only supports a single device." + assert params.n_devices == 1, ( + "Naive caching only supports a single device." + ) + if params.enable_prefix_caching: + raise ValueError("Prefix caching is not supported for naive cache.") + super().__init__( + params=params, + max_batch_size=max_batch_size, + max_seq_len=max_seq_len, + num_layers=num_layers, + devices=devices, + session=session, + is_ragged=False, + ) + + self.keys = Tensor.zeros( + shape=self.cache_shape, + dtype=self.params.dtype, + device=self.devices[0], + ) + + self.values = Tensor.zeros( + shape=self.cache_shape, + dtype=self.params.dtype, + device=self.devices[0], + ) + + @classmethod + def estimated_memory_size( + cls, + params: KVCacheParams, + max_batch_size: int, + max_seq_len: int, + num_layers: int, + available_cache_memory: int, + devices: List[Device], + **kwargs: Any, + ) -> int: + return ( + reduce( + mul, + cls._cache_shape( + params, max_batch_size, max_seq_len, num_layers + ), + ) + * params.dtype.size_in_bytes + * 2 + ) + + @classmethod + def infer_optimal_batch_size( + cls, + params: KVCacheParams, + max_seq_len: int, + num_layers: int, + available_cache_memory: int, + devices: List[Device], + **kwargs: Any, + ) -> int: + cache_size_per_sequence = ( + reduce( + mul, + cls._cache_shape(params, 1, max_seq_len, num_layers), + ) + * params.dtype.size_in_bytes + * 2 + ) + return int(available_cache_memory // cache_size_per_sequence) + + @property + def cache_shape(self) -> list[int]: + return self._cache_shape( + self.params, + self.max_batch_size, + self.max_seq_len, + self.num_layers, + ) + + @staticmethod + def _cache_shape( + params: KVCacheParams, + max_batch_size: int, + max_seq_len: int, + num_layers: int, + ): + return [ + max_seq_len, + num_layers, + max_batch_size, + params.n_kv_heads, + params.head_dim, + ] + + def _fetch( + self, + seq_ids_and_prompts: dict[int, np.ndarray], + num_steps: int = 1, + ) -> List[KVCacheInputs]: + existing_keys = list(self.cache_lengths.keys()) + for i, (seq_id, prompt) in enumerate(seq_ids_and_prompts.items()): + if existing_keys[i] != seq_id: + msg = ( + "seq_ids passed, are different than current inflight" + " batch.Naive Caching currently does not support mutating" + " inflight batches." + ) + raise ValueError(msg) + + total_length = ( + self.cache_lengths[seq_id] + len(prompt) + num_steps - 1 + ) + assert total_length <= self.max_seq_len, ( + f"seq_id: {seq_id} would overrun the max cache length of {self.max_seq_len} " + f"with {len(prompt)} new tokens and {num_steps} steps. Existing length: {self.cache_lengths[seq_id]}" + ) + padded_kv_cache_inputs = [ + PaddedKVCacheInputs( + k_cache=self.keys, + v_cache=self.values, + start_pos=Tensor.scalar( + self.max_sequence_length, DType.int64, self.devices[0] + ), + # TODO: MSDK-1201 - This next variable is not used upstream. + # It is included here, as a placeholder, until we can dynamically + # return a number of tensors from both `fetch` and `input_symbols`. + null_op=Tensor.scalar( + self.max_sequence_length, DType.int64, self.devices[0] + ), + ) + ] + return cast(List[KVCacheInputs], padded_kv_cache_inputs) + + def input_symbols( + self, + ) -> List[NaiveKVCacheInputSymbols]: + return [ + NaiveKVCacheInputSymbols( + k_cache=BufferType( + self.params.dtype, + shape=[ + "max_seq_len", + self.num_layers, + "max_batch_size", + self.params.n_kv_heads, + self.params.head_dim, + ], + ), + v_cache=BufferType( + self.params.dtype, + shape=[ + "max_seq_len", + self.num_layers, + "max_batch_size", + self.params.n_kv_heads, + self.params.head_dim, + ], + ), + start_pos=TensorType(DType.int64, shape=[]), + # null_op - this isnt used for the naive cache + null_op=TensorType(DType.int64, shape=[]), + ) + ] diff --git a/src/max/pipelines/kv_cache/paged_cache.py b/src/max/pipelines/kv_cache/paged_cache.py new file mode 100644 index 0000000000..7c814828be --- /dev/null +++ b/src/max/pipelines/kv_cache/paged_cache.py @@ -0,0 +1,746 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +"""PagedAttention-enabled KV cache for the Transformer leveraging the mo.opaque pattern.""" + +from __future__ import annotations + +import logging +import math +from dataclasses import dataclass +from functools import reduce +from operator import mul +from typing import Any, Dict, List, Optional, cast + +import numpy as np +from max.driver import Device, Tensor +from max.dtype import DType +from max.engine import InferenceSession +from max.graph import ( + DeviceRef, + TensorType, + TensorValue, + _OpaqueType, + _OpaqueValue, + ops, +) + +from ._utils import build_max_lengths_tensor +from .cache_params import KVCacheParams +from .manager import ( + KVCacheInputs, + KVCacheInputSymbols, + KVCacheManager, + RaggedKVCacheInputs, +) +from .paged_cache_metadata import PagedCacheMetadata, ceildiv +from .prefix_cache import PrefixCache + +logger = logging.getLogger("max.pipelines") + +PERCENTAGE_BLOCKS_TO_EVICT = 0.05 + + +@dataclass +class PagedCacheInputSymbols(KVCacheInputSymbols): + kv_blocks: TensorType + cache_lengths: TensorType + lookup_table: TensorType + max_lengths: TensorType + + +class PagedKVCacheType(_OpaqueType): + """PagedAttention Mojo KV Cache graph type.""" + + def __init__(self) -> None: + """Creates an opaque type containing a paged KV Cache.""" + super().__init__("PagedKVCache") + + +class PagedKVCacheCollectionType(_OpaqueType): + """The graph type for a "view" of the cache for the given sequences in the + batch. + + This object does not own the underlying buffers in k_cache and v_cache, + it's borrowing them from the BlockWrappers in our ContinuousKVCacheManager. + It does own the Pointer[NDBuffer[type, 3]] and valid_lengths buffer + """ + + def __init__(self) -> None: + """Creates an opaque type containing a paged KV cache collection.""" + super().__init__("PagedKVCacheCollection") + + +class PagedKVCache(_OpaqueValue): + """PagedAttention Mojo KV cache graph value.""" + + +class PagedKVCacheCollection(_OpaqueValue): + """The graph value for a view of the KV cache.""" + + +class FetchPagedKVCacheCollection: + def __init__(self, kv_params: KVCacheParams) -> None: + self.kv_params = kv_params + + def __call__( + self, + blocks: TensorValue, # NDBuffer[type, 6, Self.blocks_shape] + cache_lengths: TensorValue, # NDBuffer[DType.uint32, 1], + lookup_table: TensorValue, # NDBuffer[DType.uint32, 2], + is_cache_empty: TensorValue, + ) -> PagedKVCacheCollection: + """Constructs a PagedKVCacheCollection for use downstream.""" + + # Explicit validation. + if blocks.dtype != self.kv_params.dtype: + msg = ( + f"expected blocks to be dtype: {self.kv_params.dtype}, got" + f" {blocks.dtype}" + ) + raise ValueError(msg) + + if blocks.rank != 6: + msg = f"expected blocks to be of rank 6, got {blocks.rank}" + raise ValueError(msg) + + # For all tensors other than the blocks tensor, the length should be equivalent + # to batch size, which is unknown within the graph at this stage. + if cache_lengths.dtype != DType.uint32: + msg = f"expected cache lengths to be dtype: uint32, got {cache_lengths.dtype}" + raise ValueError(msg) + + if cache_lengths.rank != 1: + msg = f"expected cache lengths to be of rank 1, got {cache_lengths.rank}" + raise ValueError(msg) + + if lookup_table.dtype != DType.uint32: + msg = f"expected lookup_table to be dtype: uint32, got {lookup_table.dtype}" + raise ValueError(msg) + + if lookup_table.rank != 2: + msg = f"expected lookup_table to be of rank 2, got {lookup_table.rank}" + raise ValueError(msg) + + return PagedKVCacheCollection( + ops.custom( + "mo.kv_collection_ctor.paged", + values=[blocks, cache_lengths, lookup_table, is_cache_empty], + out_types=[PagedKVCacheCollectionType()], + parameters={ + "num_heads": self.kv_params.n_kv_heads_per_device, + "head_dim": self.kv_params.head_dim, + "page_size": int(blocks.shape[3]), + }, + )[0].opaque + ) + + +class PagedKVCacheManager(KVCacheManager): + def __init__( + self, + params: KVCacheParams, + max_batch_size: int, + max_seq_len: int, + num_layers: int, + devices: list[Device], + session: InferenceSession, + cache_memory: int, + page_size: int = 128, + enable_runtime_checks: bool = False, + ): + """ + Args: + params: The KVCacheParams for the given pipeline. + max_batch_size: The maximum number of active + requests that the manager should support. + max_seq_len: The maximum sequence length we will generate. + num_layers: The number of layers in the model. + devices: The devices on which the manager will allocate memory. + session: The inference session to load ops from. + cache_memory: The total amount of memory available for caching. + This is aggregated across all devices. + page_size: The number of tokens that will be stored in a single page. + enable_runtime_checks: Whether to enable runtime correctness checks. + """ + # The number of tokens in a single page. + self.page_size = page_size + + # The number of bytes that a single page will occupy. + single_page_size_bytes = ( + 2 + * num_layers + * params.n_kv_heads_per_device + * params.head_dim + * page_size + * params.dtype.size_in_bytes + ) + + # Normalize cache_memory across all devices. + cache_memory_per_device = cache_memory // len(devices) + + # The total number of pages we'll have per-device. + self.total_num_pages = int( + cache_memory_per_device // single_page_size_bytes + ) + + if self.total_num_pages == 0: + raise RuntimeError( + f"Insufficient cache memory to allocate even a single page.\n" + f"One page requires {single_page_size_bytes} bytes but only {cache_memory_per_device} bytes are available." + ) + + if max_batch_size > self.total_num_pages: + logger.warning( + f"Insufficient cache memory to support a batch containing {max_batch_size} requests with one token per request. " + f"Need to allocate at least {max_batch_size} blocks, but only have enough memory for {self.total_num_pages} blocks. " + f"One page requires {single_page_size_bytes} bytes but only {cache_memory_per_device} bytes are available." + ) + + blocks_needed_for_max_seq_len = ceildiv(max_seq_len, page_size) + if blocks_needed_for_max_seq_len > self.total_num_pages: + logger.warning( + f"Insufficient cache memory to support a batch containing one request at the max sequence length of {max_seq_len} tokens. " + f"Need to allocate at least {blocks_needed_for_max_seq_len} blocks, but only have enough memory for {self.total_num_pages} blocks. " + f"One page requires {single_page_size_bytes} bytes but only {cache_memory_per_device} bytes are available." + ) + + # call our base class constructor + super().__init__( + params=params, + max_batch_size=max_batch_size, + max_seq_len=max_seq_len, + num_layers=num_layers, + devices=devices, + session=session, + is_ragged=True, + ) + + # Initialize the set of available blocks. + self.available_blocks = set(range(self.total_num_pages)) + + # Initialize the blocks for each device. + self.blocks: list[Tensor] = [] + for device in self.devices: + self.blocks.append( + Tensor.zeros( + self.block_shape(), # type: ignore + self.params.dtype, + device=device, + ) + ) + + self.active_requests: Dict[int, PagedCacheMetadata] = {} + + self.prefix_cache: Optional[PrefixCache] = None + if params.enable_prefix_caching: + self.prefix_cache = PrefixCache( + session=session, + page_size=self.page_size, + block_shape=self.block_shape(is_parameterized=True), + dtype=self.params.dtype, + devices=devices, + tensors=self.blocks, + ) + + # Whether to enable runtime correctness checks. These correctness checks + # are expensive and should only be used in tests. + self.enable_runtime_checks = enable_runtime_checks + + def _runtime_check(self) -> None: + if not self.enable_runtime_checks: + return + assert self._count_all_pages() == self.total_num_pages + if self.prefix_cache is None: + return + for seq_id, data in self.active_requests.items(): + self.prefix_cache.validate_req_state_valid( + seq_id, + data.committed_tokens, + data.committed_blocks, + ) + + @property + def cache_hit_rate(self) -> float: + if self.prefix_cache is None: + return 0.0 + return self.prefix_cache.cache_hit_rate + + def alloc_block(self) -> int: + if len(self.available_blocks) == 0 and self.prefix_cache is not None: + blocks_to_evict = self.total_num_pages * PERCENTAGE_BLOCKS_TO_EVICT + blocks_to_evict = int(max(1, blocks_to_evict)) + evicted = self.prefix_cache.evict_blocks(blocks_to_evict) + for block in evicted: + self.available_blocks.add(block) + + if len(self.available_blocks) == 0: + raise RuntimeError( + f"All {self.total_num_pages} KVCache pages have been exhausted! " + "You must restart your process and set a smaller batch size or max seq len." + ) + + block = self.available_blocks.pop() + return block + + def release_block(self, block: int) -> None: + """We can release a block if prefix caching is disabled or if it is not committed. + + If it is committed, it may be in the radix tree and in use by other sequences. + This means it can't be safely released without further checks. + """ + if self.prefix_cache is None: + self.available_blocks.add(block) + return + + # We can only add the block to the available set if it is not committed + # to the prefix cache. + if block not in self.prefix_cache: + self.available_blocks.add(block) + + @classmethod + def _block_size_per_token( + cls, params: KVCacheParams, num_layers: int + ) -> int: + return ( + reduce(mul, cls._block_shape(params, 1, 1, num_layers), 1) + * params.dtype.size_in_bytes + ) + + @classmethod + def estimated_memory_size( + cls, + params: KVCacheParams, + max_batch_size: int, + max_seq_len: int, + num_layers: int, + available_cache_memory: int, + devices: list[Device], + **kwargs: Any, + ) -> int: + # Determine how much size is necessary to store the full cache based on max_batch_size and max_seq_len. + # If that's less than available_cache_memory, return that. + # Otherwise, return available_cache_memory. + # This is to prevent over-allocation on devices with a large amount of free memory (e.g. CPUs). + assert params.page_size is not None + block_size_per_token = cls._block_size_per_token( + params, num_layers + ) * len(devices) + + # round up our max_seq_len to the nearest page_size + max_seq_len_round_up = ( + math.ceil(max_seq_len / params.page_size) * params.page_size + ) + size_to_support_full_cache = ( + block_size_per_token * max_batch_size * max_seq_len_round_up + ) + + # return the minimum of the two + return min(available_cache_memory, size_to_support_full_cache) + + @classmethod + def infer_optimal_batch_size( + cls, + params: KVCacheParams, + max_seq_len: int, + num_layers: int, + available_cache_memory: int, + devices: list[Device], + **kwargs: Any, + ) -> int: + # We just hard-code a default of 512 for paged attention. + # The worst case scenario if this is too high is that we'll evict + # requests at an elevated rate. We print warnings in that case so users + # are aware of what needs to be tweaked/changed. + return 512 + + def block_shape( + self, + is_parameterized: bool = False, + ) -> list[int | str]: + return self._block_shape( + self.params, + self.total_num_pages, + self.page_size, + self.num_layers, + is_parameterized, + ) + + @classmethod + def _block_shape( + cls, + params: KVCacheParams, + total_num_pages: int, + page_size: int, + num_layers: int, + is_parameterized: bool = False, + ) -> list[int | str]: + # split k and v caches across a single dim + # 0 = key + # 1 = value + kv_dim = 2 + return [ + num_layers, + kv_dim, + "total_num_pages" if is_parameterized else total_num_pages, + page_size, + params.n_kv_heads_per_device, + params.head_dim, + ] + + def get_num_free_blocks(self) -> int: + if self.prefix_cache is None: + return len(self.available_blocks) + return len(self.available_blocks) + len(self.prefix_cache.stale_blocks) + + def get_num_used_blocks(self) -> int: + return self.total_num_pages - self.get_num_free_blocks() + + def can_fetch( + self, seq_ids_and_prompts: dict[int, np.ndarray], num_steps: int = 1 + ) -> bool: + """Checks if there are sufficient KV pages to run `fetch` on given batch. + + It is OK if some seq_id are not in the cache. We assume the cache lengths + are zero in those cases. + """ + + total_blocks_to_allocate = 0 + all_cache_hit_blocks: set[int] = set() + + for seq_id, prompt in seq_ids_and_prompts.items(): + data = self.active_requests.get( + seq_id, PagedCacheMetadata(self.page_size, self.max_seq_len) + ) + + # Extend the kv cache for given request with any cached prefixes. + cached_blocks: list[int] = [] + if self.prefix_cache is not None: + cached_blocks = self.prefix_cache.get_cached_blocks( + seq_id, prompt + ) + + # Compute the total sequence length and the number of pages required to store it. + total_sequence_length = ( + data.cached_idx + len(prompt) + num_steps - 1 + ) + num_pages_required = ceildiv(total_sequence_length, self.page_size) + + # Compute the number of *new* pages we need to allocate. + blocks_to_allocate = ( + num_pages_required - len(data.blocks) - len(cached_blocks) + ) + + total_blocks_to_allocate += blocks_to_allocate + all_cache_hit_blocks.update(cached_blocks) + + num_evictable_blocks = 0 + if self.prefix_cache is not None: + # the blocks in the prefix cache that will be used by sequences in + # this batch are no longer eligible for eviction / allocation. + num_evictable_blocks = len( + self.prefix_cache.stale_blocks - all_cache_hit_blocks + ) + + num_free_blocks = len(self.available_blocks) + num_evictable_blocks + + return total_blocks_to_allocate <= num_free_blocks + + def get_num_cached_tokens(self, prompt: np.ndarray) -> int: + """Returns the number of tokens in the CE prompt that are found in the + prefix cache. + """ + if self.prefix_cache is None: + return 0 + return self.prefix_cache.get_num_cached_tokens(prompt) + + def _fetch( + self, seq_ids_and_prompts: dict[int, np.ndarray], num_steps: int = 1 + ) -> List[KVCacheInputs]: + """This method identifies available blocks to service the given requests and marks them as inflight. + They're assigned to the request as "in-flight" until step is called. + + Generally the prompt length is n for prefill, and 1 for decode step. Additionally, there is not a + kv entry associated with each token in the prompt. + + When prefix caching is enabled, and KV entries can be retrieved for some tokens in the prompt, the + input `seq_ids_and_prompts` will be modified. Each prompt will be shortened to only include the tokens + for which we do not have a cached KV entry. Note that we will never return a empty prompt. + """ + self._runtime_check() + + max_seq_len_in_batch = -1 + # before we start making any changes, validate that we won't over-write the cache + for batch_idx, (seq_id, prompt) in enumerate( + seq_ids_and_prompts.items() + ): + # Validate there aren't other inflight requests for this sequence. + assert seq_id not in self.fetch_metadata + + # Add prompt and inflight tokens to the token array + data = self.active_requests[seq_id] + data.fetch(prompt, num_steps) + + # Compute the total sequence length + if data.seq_len > max_seq_len_in_batch: + max_seq_len_in_batch = data.seq_len + + assert data.seq_len <= self.max_seq_len, ( + f"seq_id: {seq_id} would overrun the max cache length of {self.max_seq_len} " + f"with {len(prompt)} new tokens. Existing length: {data.cached_idx}" + ) + + max_num_pages = ceildiv(max_seq_len_in_batch, self.page_size) + + # Allocate the buffers containing metadata about the batch. + # [0, total_num_pages) are the valid block ids and total_num_pages + # denotes an unassigned block. + batch_size = len(seq_ids_and_prompts) + lut_table_np = np.full( + (batch_size, max_num_pages), self.total_num_pages, dtype=np.uint32 + ) + cache_lengths_np = np.zeros((batch_size,), dtype=np.uint32) + + # Iterate over requests and query prefix cache + all_cache_hit_blocks: set[int] = set() + for batch_idx, (seq_id, prompt) in enumerate( + seq_ids_and_prompts.items() + ): + # Ensure we've called claim for this sequence id. + if seq_id not in self.active_requests: + raise ValueError(f"seq_id: {seq_id} not in active requests.") + + if self.prefix_cache is not None: + data = self.active_requests[seq_id] + # bump the committed_idx, and possibly the cached_idx + prefix_blocks = self.prefix_cache.fetch( + seq_id, + data, + free_block_fn=self.release_block, + alloc_block_fn=self.alloc_block, + ) + all_cache_hit_blocks.update(prefix_blocks) + # Possibly trim the input prompt. + seq_ids_and_prompts[seq_id] = data.prompt_tokens + + # Determine the number of pages required for each sequence. + max_seq_length = 0 + max_cache_length = 0 + total_sequence_length = 0 + total_blocks_to_allocate = 0 + blocks_to_allocate_by_seq = {} + for batch_idx, (seq_id, prompt) in enumerate( + seq_ids_and_prompts.items() + ): + data = self.active_requests[seq_id] + + # Get the existing cache length for this sequence. + cache_length = data.cached_idx + cache_lengths_np[batch_idx] = cache_length + + # Update the maximum lengths seen so far. + max_seq_length = max(max_seq_length, len(prompt)) + max_cache_length = max(max_cache_length, cache_length) + + # Compute the total sequence length and the number of pages required to store it. + total_sequence_length += data.seq_len + num_pages_required = ceildiv(data.seq_len, self.page_size) + + # Compute the number of *new* pages we need to allocate. + num_new_pages = num_pages_required - len(data.blocks) + assert num_new_pages >= 0 + blocks_to_allocate_by_seq[seq_id] = num_new_pages + total_blocks_to_allocate += num_new_pages + + # Check if we have enough free blocks to service all requests. + num_evictable_blocks = 0 + if self.prefix_cache is not None: + # the blocks in the prefix cache that will be used by sequences in + # this batch are no longer eligible for eviction / allocation. + num_evictable_blocks = len( + self.prefix_cache.stale_blocks - all_cache_hit_blocks + ) + num_free_blocks = len(self.available_blocks) + num_evictable_blocks + if total_blocks_to_allocate > num_free_blocks: + raise RuntimeError( + f"Not enough free blocks to service all {len(seq_ids_and_prompts)} requests.\n" + f"Need an additional {total_blocks_to_allocate} blocks to store KV projections for all {total_sequence_length} tokens.\n" + f"But only {num_free_blocks} out of {self.total_num_pages} cache blocks are available to be allocated.\n" + f"You must restart your process and set a smaller batch size or max sequence length.\n" + ) + + # Allocate additional pages for each request in the batch + for batch_idx, (seq_id, num_new_pages) in enumerate( + blocks_to_allocate_by_seq.items() + ): + data = self.active_requests[seq_id] + + # Assign some new pages to this request. + for _ in range(num_new_pages): + next_block = self.alloc_block() + data.blocks.append(next_block) + + # Populate the lookup table with the new pages. + for i, block_idx in enumerate(data.blocks): + lut_table_np[batch_idx, i] = block_idx + + # Build a tensor of maximum lengths. Each step slices the first row to + # advance to the values for the next row. + max_lengths_host = build_max_lengths_tensor( + num_steps, max_seq_length, max_cache_length + ) + + lut_table_host = Tensor.from_numpy(lut_table_np) + cache_lengths_host = Tensor.from_numpy(cache_lengths_np) + + ret_list = [] + for i, device in enumerate(self.devices): + ret_list.append( + RaggedKVCacheInputs( + blocks=self.blocks[i], + cache_lengths=cache_lengths_host.to(device=device), + lookup_table=lut_table_host.to(device=device), + max_lengths=max_lengths_host, + ) + ) + + self._runtime_check() + + return cast(List[KVCacheInputs], ret_list) + + def input_symbols( + self, + ) -> list[PagedCacheInputSymbols]: + return [ + PagedCacheInputSymbols( + kv_blocks=TensorType( + self.params.dtype, + shape=self.block_shape(is_parameterized=True), + device=DeviceRef(self.devices[i].label, self.devices[i].id), + ), + cache_lengths=TensorType( + DType.uint32, + shape=["batch_size"], + device=DeviceRef(self.devices[i].label, self.devices[i].id), + ), + lookup_table=TensorType( + DType.uint32, + shape=["batch_size", "max_num_pages"], + device=DeviceRef(self.devices[i].label, self.devices[i].id), + ), + max_lengths=TensorType( + DType.uint32, shape=["steps_remaining", 2] + ), + ) + for i in range(len(self.devices)) + ] + + def claim(self, n: int) -> list[int]: + """Claims `n` blocks of memory in the cache for incoming requests. + + This returns a list of sequence ids, which identify a sequence's + location within the cache. This sequence id can then be passed + in the fetch function to return the ContinuousBatchingKVCacheCollection + for those sequences. + """ + seq_ids = super().claim(n) + for seq_id in seq_ids: + self.active_requests[seq_id] = PagedCacheMetadata( + self.page_size, self.max_seq_len + ) + if self.prefix_cache is not None: + for seq_id in seq_ids: + self.prefix_cache.external_claim(seq_id) + return seq_ids + + def external_claim(self, seq_ids: list[int]) -> None: + """Variant of the above where sequence ids are reserved externally.""" + super().external_claim(seq_ids) + for seq_id in seq_ids: + self.active_requests[seq_id] = PagedCacheMetadata( + self.page_size, self.max_seq_len + ) + if self.prefix_cache is not None: + for seq_id in seq_ids: + self.prefix_cache.external_claim(seq_id) + + def _count_all_pages(self) -> int: + available_blocks = self.available_blocks + prefix_cache_blocks = set() + if self.prefix_cache is not None: + prefix_cache_blocks = self.prefix_cache.blocks + uncommitted_blocks = set() + for seq_id in self.active_requests: + uncommitted_blocks.update( + self.active_requests[seq_id].uncommitted_blocks + ) + return len(available_blocks | prefix_cache_blocks | uncommitted_blocks) + + def purge_prefix_cache(self) -> None: + if self.prefix_cache is None: + return + evicted = self.prefix_cache.evict_blocks() + for block in evicted: + self.available_blocks.add(block) + + def release(self, seq_id: int) -> None: + """Release `seq_id` provided, marking this sequence as complete. + This returns the seq_id back to the available pool of cache memory, + allowing it to be reused when a new sequence is claimed. + """ + super().release(seq_id) + data = self.active_requests[seq_id] + + if self.prefix_cache is not None: + self.prefix_cache.release(seq_id) + + for block in data.blocks: + self.release_block(block) + del self.active_requests[seq_id] + + def _step( + self, + seq_ids_and_new_tokens: dict[int, np.ndarray], + ) -> None: + """Update the `cache_lengths` objects to not that a new + kv projection step has occurred, and that the underlying memory + has been written to. This `cache_lengths` value is then used + downstream in `fetch` to track what section of memory should + be used in the kernels. + """ + self._runtime_check() + + for seq_id, new_tokens in seq_ids_and_new_tokens.items(): + if seq_id not in self.active_requests: + raise ValueError(f"seq_id: {seq_id} not in active requests.") + + # Write the new tokens into the token array and bump the cached_idx + data = self.active_requests[seq_id] + data.step(new_tokens) + + if self.prefix_cache is not None: + # Bump the committed_idx + self.prefix_cache.step( + seq_id, + data, + free_block_fn=self.release_block, + ) + + expected_num_pages = ceildiv(data.seq_len, self.page_size) + actual_num_pages = len(data.blocks) + if expected_num_pages != actual_num_pages: + raise ValueError( + f"Mismatch between expected and actual number of pages for seq_id: {seq_id}. Expected: {expected_num_pages}, Actual: {actual_num_pages}" + ) + + self._runtime_check() diff --git a/src/max/pipelines/kv_cache/paged_cache_metadata.py b/src/max/pipelines/kv_cache/paged_cache_metadata.py new file mode 100644 index 0000000000..abeb8f7a40 --- /dev/null +++ b/src/max/pipelines/kv_cache/paged_cache_metadata.py @@ -0,0 +1,171 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +"""PagedAttention-specific metadata for a single sequence.""" + +from __future__ import annotations + +import numpy as np + + +def ceildiv(n: int, d: int) -> int: + """Compute ceil(n/d) using strictly integer arithmetic.""" + q, r = divmod(n, d) + return q + bool(r) + + +class PagedCacheMetadata: + """Metadata for a single sequence in the paged KV cache. + + Token array layout: + + - Committed tokens have been inserted into the prefix cache. This must be a + multiple of the page size. + - Cached tokens are tokens that have a backing KV projection in the cache. + Uncached tokens will be written to the cache when the model is run. + - Committable tokens are tokens that are not yet committed but have a known + value (i.e. not inflight). We can query the prefix cache for such tokens. + - Inflight tokens are slots allocated for tokens that have not been generated + yet. Such tokens have a filler value of 0. After `fetch`, there should be + `num_steps - 1` inflight tokens. They will be replaced with actual tokens + in `step`. + + committed_idx V seq_len V + +----------------------------------------------------------------+ + | committed | uncommitted | + |----------------------------------------------------------------| + | | committable | | + |----------------------------------------------------------------| + | cached | uncached | + |----------------------------------------------------------------| + | | prompt | inflight | + +----------------------------------------------------------------+ + cached_idx ^ inflight_idx ^ + """ + + def __init__(self, page_size: int, max_seq_len: int) -> None: + self.page_size = page_size + self.committed_idx: int = 0 + self.cached_idx: int = 0 + self.inflight_idx: int = 0 + self.seq_len: int = 0 + self.blocks: list[int] = [] + self.tokens: np.ndarray = np.full((max_seq_len,), 0, dtype=np.int64) + + @property + def committed_blocks(self) -> list[int]: + return self.blocks[: self.committed_idx // self.page_size] + + @property + def uncommitted_blocks(self) -> list[int]: + return self.blocks[self.committed_idx // self.page_size : self.seq_len] + + @property + def committed_tokens(self) -> np.ndarray: + return self.tokens[: self.committed_idx] + + @property + def uncached_tokens(self) -> np.ndarray: + return self.tokens[self.cached_idx : self.seq_len] + + @property + def prompt_tokens(self) -> np.ndarray: + return self.tokens[self.cached_idx : self.inflight_idx] + + @property + def inflight_tokens(self) -> np.ndarray: + return self.tokens[self.inflight_idx : self.seq_len] + + @property + def committable_tokens_aligned(self) -> np.ndarray: + # Return all tokens that are committable and part of a block that only + # contains committable tokens. + inflight_idx = self.inflight_idx + partial_tokens = inflight_idx % self.page_size + if partial_tokens > 0: + inflight_idx -= partial_tokens + return self.tokens[self.committed_idx : inflight_idx] + + @property + def committable_blocks_aligned(self) -> list[int]: + # Returns all blocks that only contain committable tokens. + return self.blocks[ + self.committed_idx // self.page_size : self.inflight_idx + // self.page_size + ] + + @property + def committable_tokens(self) -> np.ndarray: + # Returns all tokens that are committable. + return self.tokens[self.committed_idx : self.inflight_idx] + + @property + def committable_blocks(self) -> list[int]: + # Returns any block that contains at least one committable token. + return self.blocks[ + self.committed_idx // self.page_size : ceildiv( + self.inflight_idx, self.page_size + ) + ] + + def _validate_indices(self): + assert ( + 0 + <= self.committed_idx + <= self.cached_idx + <= self.inflight_idx + <= self.seq_len + ), "The indices must be in the correct order" + assert self.seq_len <= len(self.tokens), ( + "Sequence has exceeded the max sequence length" + ) + assert self.committed_idx % self.page_size == 0, ( + "The committed_idx must be a multiple of the page size since we " + "can't commit a partial page into the prefix cache" + ) + + def fetch(self, prompt: np.ndarray, num_steps: int) -> None: + """Add prompt to token array and reserve space for inflight tokens.""" + self._validate_indices() + assert len(self.prompt_tokens) == 0, ( + "At the start of fetch, there should be no prompt tokens" + ) + assert len(self.inflight_tokens) == 0, ( + "At the start of fetch, there should be no inflight tokens" + ) + assert len(prompt) > 0, ( + "The prompt provided to fetch should be non-empty" + ) + num_inflight_tokens = num_steps - 1 + self.inflight_idx += len(prompt) + self.seq_len += len(prompt) + num_inflight_tokens + self.tokens[self.cached_idx : self.inflight_idx] = prompt + self._validate_indices() + + def step(self, new_tokens: np.ndarray) -> None: + """Write new tokens into inflight token slots. Also update the cached_idx.""" + self._validate_indices() + assert len(self.prompt_tokens) > 0, ( + "We could not have executed the model without at least one prompt token" + ) + num_inflight_tokens = len(new_tokens) - 1 + assert len(self.inflight_tokens) == num_inflight_tokens, ( + "The existing slots for inflight tokens should correspond to all but the last newly generated token" + ) + self.tokens[self.inflight_idx : self.seq_len] = new_tokens[:-1] + self.cached_idx = self.seq_len + self.inflight_idx = self.seq_len + assert len(self.uncached_tokens) == 0, ( + "After step, all tokens should have a backing KV projection in the cache" + ) + self._validate_indices() diff --git a/src/max/pipelines/kv_cache/prefix_cache.py b/src/max/pipelines/kv_cache/prefix_cache.py new file mode 100644 index 0000000000..191f53ffd2 --- /dev/null +++ b/src/max/pipelines/kv_cache/prefix_cache.py @@ -0,0 +1,369 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +"""Prefix cache to enable reuse of KV projections during context encoding with PagedAttention.""" + +from __future__ import annotations + +from typing import Callable, Optional + +import numpy as np +from max.driver import Device, Tensor +from max.dtype import DType +from max.engine import InferenceSession +from max.graph import BufferType, DeviceRef, Graph, TensorType, ops + +from .paged_cache_metadata import PagedCacheMetadata +from .radix_trie import RadixTrie, TrieNode + + +def construct_cow_strided_memcpy_graph( + block_shape: list[int | str], dtype: DType, devices: list[Device] +) -> Graph: + """ + Returns a graph for performing COW operations on the KV cache. + """ + assert len(block_shape) == 6 + ds = [DeviceRef(device.label, device.id) for device in devices] + blocks_ty = [BufferType(dtype, shape=block_shape, device=d) for d in ds] + block_src_idx_ty = TensorType(DType.uint32, shape=[]) + block_dst_idx_ty = TensorType(DType.uint32, shape=[]) + num_tokens_ty = TensorType(DType.uint32, shape=[]) + + with Graph( + "mo.kv_collection_cow_strided_memcpy.paged", + input_types=[ + block_dst_idx_ty, + block_src_idx_ty, + num_tokens_ty, + *blocks_ty, + ], + output_types=[], + ) as graph: + block_dst_idx, block_src_idx, num_tokens, *all_blocks = graph.inputs + for blocks in all_blocks: + ops.inplace_custom( + "mo.kv_collection_cow_strided_memcpy.paged", + values=[blocks, block_dst_idx, block_src_idx, num_tokens], + out_types=[], + ) + graph.output() + + return graph + + +class PrefixCache: + def __init__( + self, + session: InferenceSession, + page_size: int, + block_shape: list[int | str], + dtype: DType, + devices: list[Device], + tensors: list[Tensor], + enable_cow: bool = True, + ): + self.page_size = page_size + self.enable_cow = enable_cow + self.radix_trie = RadixTrie(page_size=self.page_size) + self.tensors = tensors + + self.cow_count = 0 + if self.enable_cow and self.page_size > 1: + # Load single op graph for performing memory transfers needed for COW + self.cow_strided_memcpy_graph = session.load( + construct_cow_strided_memcpy_graph( + block_shape, + dtype, + devices, + ), + ) + self.all_tokens = 0 + self.cache_hit_tokens = 0 + + # This is a pointer into the radix trie indicating the prefix of the sequence + # that has been committed into the radix trie. + self.active_requests: dict[int, TrieNode] = {} + + def __contains__(self, block: int) -> bool: + """Check if a block is owned by the prefix cache.""" + return block in self.radix_trie.get_all_blocks() + + def external_claim(self, seq_id: int) -> None: + """Claim a sequence for use by the prefix cache. + + This initializes the cursor in the trie for the given sequence at the + root, indicating that no blocks are committed for this sequence yet. + """ + assert seq_id not in self.active_requests + self.active_requests[seq_id] = self.radix_trie.root + + def release(self, seq_id: int) -> None: + """Release a sequence from the prefix cache. + + This decrements the ref count of committed blocks used by the sequence. + """ + assert seq_id in self.active_requests + node = self.active_requests[seq_id] + self.radix_trie.mark_not_in_use_by(node, seq_id) + del self.active_requests[seq_id] + + @property + def blocks(self) -> set[int]: + """Returns all blocks owned by the prefix cache.""" + return self.radix_trie.get_all_blocks() + + @property + def stale_blocks(self) -> set[int]: + """Returns all blocks that are evictable/stale. + + Stale blocks are those that are not in use by any sequence (refcount == 0) + """ + return self.radix_trie.get_evictable_blocks() + + @property + def cache_hit_rate(self) -> float: + """Returns the prefix cache hit rate.""" + if self.all_tokens == 0: + return 0.0 + assert self.cache_hit_tokens <= self.all_tokens + return self.cache_hit_tokens / self.all_tokens + + def validate_req_state_valid( + self, + seq_id: int, + committed_tokens: np.ndarray, + committed_blocks: list[int], + ): + """Check that the committed tokens and blocks match what was actually + committed into the radix trie.""" + assert seq_id in self.active_requests + node = self.active_requests[seq_id] + # Climb up the trie from the given node, accumulating all the + # prefix tokens and blocks. + tokens, blocks = node.get_prefix_tokens_and_blocks() + assert (tokens == committed_tokens).all() + assert blocks == committed_blocks + + def get_cached_blocks(self, seq_id: int, prompt: np.ndarray) -> list[int]: + """Returns the blocks from the prefix cache that can be reused for the given prompt.""" + node = self.active_requests.get(seq_id, self.radix_trie.root) + # Attempt to match all but the last token in the prompt. This is + # because the model expects a prompt of length at least 1. + _, cached_blocks = self.radix_trie.match_prefix(prompt[:-1], node=node) + return cached_blocks + + def get_num_cached_tokens(self, prompt: np.ndarray) -> int: + """Returns the number of tokens in the CE prompt that are found in the prefix cache.""" + _, prefix_blocks = self.radix_trie.match_prefix(prompt[:-1]) + return len(prefix_blocks) * self.page_size + + def evict_blocks(self, blocks_to_evict: Optional[int] = None) -> list[int]: + """Evict a percentage of all blocks according to a LRU policy on the trie leaves.""" + if blocks_to_evict is None: + blocks_to_evict = len(self.blocks) + return self.radix_trie.evict_blocks(desired_num_evicted=blocks_to_evict) + + def _release_partial_block( + self, + data: PagedCacheMetadata, + free_block_fn: Callable[[int], None], + ) -> None: + """Release the partially cached and uncommitted block. + + There may be a partially cached block if the seq len was not a multiple + of page size after the last `step` operation. We may want to release the + partial block if we can retrieve KV projections for additional tokens + in the block from the cache: + + e.g: + - partial_block b0 = ["I", "love", "to", "dance"] (cached = 2 tokens) + - we have block b1 = ["I", "love", "to", "sing"] (cached = 4 tokens) + in the prefix cache + - we can delete b0 and reuse b1 for the first three tokens for COW + """ + assert data.committed_idx < data.cached_idx + partial_blocks = data.committable_blocks + assert len(partial_blocks) == 1 + free_block_fn(partial_blocks[0]) + data.blocks.pop() + partial_tokens = data.cached_idx - data.committed_idx + assert 0 < partial_tokens < self.page_size + data.cached_idx -= partial_tokens + assert data.committed_idx == data.cached_idx + + def fetch( + self, + seq_id: int, + data: PagedCacheMetadata, + free_block_fn: Callable[[int], None], + alloc_block_fn: Callable[[], int], + ) -> list[int]: + """Extend the kv cache for given request with any cached prefixes. + + This will increment the committed_idx and cached_idx if there is a cache + hit. The prompt will be trimmed in the event that cached_idx is bumped. + """ + # If there is only one committable token, that means that the prompt + # is one token. We cannot reduce the prompt length any further since + # the model expects a prompt of length at least 1. + committable_tokens = data.committable_tokens[:-1] + if len(committable_tokens) == 0: + return [] + + # Query trie for all but last token. + node = self.active_requests[seq_id] + node, prefix_blocks = self.radix_trie.match_prefix( + committable_tokens, node=node + ) + self.active_requests[seq_id] = node + + # Mark the prefix blocks we retrieved from the radix trie cache as + # in use by this sequence so they don't get evicted prematurely. + self.radix_trie.mark_in_use_by(node, seq_id) + + # Update the cache hit rate metrics. + num_cache_hit_tokens = len(prefix_blocks) * self.page_size + self.cache_hit_tokens += num_cache_hit_tokens + self.all_tokens += len(committable_tokens) + + # If there is a block with partially cached tokens, we should release it + # if the cache hit blocks already contain these tokens and more + if data.committed_idx < data.cached_idx and num_cache_hit_tokens > 0: + assert data.committed_idx + num_cache_hit_tokens > data.cached_idx + self._release_partial_block(data, free_block_fn) + + data.blocks.extend(prefix_blocks) + # Bump the committed_idx since we got cache hits + data.committed_idx += num_cache_hit_tokens + data.cached_idx += num_cache_hit_tokens + + if self.enable_cow: + self._fetch_cow(seq_id, data, free_block_fn, alloc_block_fn) + + return prefix_blocks + + def _fetch_cow( + self, + seq_id: int, + data: PagedCacheMetadata, + free_block_fn: Callable[[int], None], + alloc_block_fn: Callable[[], int], + ) -> None: + """Extend the kv cache for given request with any cached prefixes by + copying a portion of the tokens in a committed block to a fresh block. + + This will keep the committed_idx the same, but increment the cached_idx + by between [1, page_size) tokens if we do perform a cow operation. The + prompt will be trimmed in the event that cached_idx is bumped. + """ + assert self.enable_cow + + # If page_size is 1, there is no need to perform COW + if self.page_size == 1: + return + assert self.cow_strided_memcpy_graph is not None + + # Match page_size tokens in the radix trie + committable_tokens = data.committable_tokens[:-1] + if len(committable_tokens) == 0: + return + committable_tokens_cropped = list(committable_tokens[: self.page_size]) + node = self.active_requests[seq_id] + res = node.find_block_with_largest_common_prefix( + committable_tokens_cropped + ) + if res is None: + return + partial_match_block, num_cache_hit_tokens = res + assert 0 < num_cache_hit_tokens < self.page_size + + # No point in performing COW if we have more cached but uncommitted tokens + # in the existing partial block than the matched prefix length. + partial_tokens = data.cached_idx - data.committed_idx + if num_cache_hit_tokens <= partial_tokens: + return + + # If we have a partially cached block, we need to release it before + # appending additional blocks. + if partial_tokens > 0: + assert data.committed_idx + num_cache_hit_tokens > data.cached_idx + self._release_partial_block(data, free_block_fn) + + # Copy prefix_len tokens from partial_match_block to new_block. + new_block = alloc_block_fn() + self.cow_count += 1 + self.cow_strided_memcpy_graph.execute( + new_block, + partial_match_block, + num_cache_hit_tokens, + *self.tensors, + ) + data.blocks.append(new_block) + data.cached_idx += num_cache_hit_tokens + assert len(data.prompt_tokens) > 0 + assert data.cached_idx < data.inflight_idx + + def step( + self, + seq_id: int, + data: PagedCacheMetadata, + free_block_fn: Callable[[int], None], + ) -> None: + """Now that we have written to the inflight blocks, we will try to commit + them to the radix trie. + + This increments the committed_idx. We guarantee that the number of committed + tokens will be a multiple of the page size. There may be some uncommitted + tokens left over due to there being a partial page at the end. Thus the + number of uncommitted tokens will always be less than the page size. + """ + committable_tokens = data.committable_tokens_aligned + node = self.active_requests[seq_id] + node, existing_blocks = self.radix_trie.match_prefix( + committable_tokens, node=node + ) + self.active_requests[seq_id] = node + + # If we computed a kv entry for a token that was already cached, + # we will just release that block we just computed. + for b0, b1 in zip(existing_blocks, data.committable_blocks_aligned): + if b0 != b1: + free_block_fn(b1) + + # Replace the inflight blocks with the existing prefix blocks. + committed_block_idx = data.committed_idx // self.page_size + data.blocks[ + committed_block_idx : committed_block_idx + len(existing_blocks) + ] = existing_blocks + data.committed_idx += len(existing_blocks) * self.page_size + + committable_tokens = data.committable_tokens_aligned + committable_blocks = data.committable_blocks_aligned + assert len(committable_tokens) % self.page_size == 0 + assert ( + len(committable_tokens) == len(committable_blocks) * self.page_size + ) + + # If there are any tokens to commit, insert them into the prefix cache. + node = self.radix_trie.insert( + committable_tokens, + committable_blocks, + node=node, + ) + self.active_requests[seq_id] = node + data.committed_idx += len(committable_tokens) + + # Mark the recently committed blocks as in use by this sequence + # so they don't get evicted prematurely. + self.radix_trie.mark_in_use_by(node, seq_id) diff --git a/src/max/pipelines/kv_cache/radix_trie.py b/src/max/pipelines/kv_cache/radix_trie.py new file mode 100644 index 0000000000..fe848cbe9e --- /dev/null +++ b/src/max/pipelines/kv_cache/radix_trie.py @@ -0,0 +1,479 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from typing import Any, Dict, List, Optional, Sequence, Set, Tuple, Union + +import numpy as np + +from .simple_trie import SimpleTrie + +TokenId = Any +BlockId = Any +SeqId = int + + +from collections import OrderedDict + + +def _token_prefix_match_len( + tokens0: np.ndarray, tokens1: np.ndarray, page_size: int +) -> int: + """Computes the length of maximum shared prefix of two tokens, aligned by + `page_size`. + + e.g: _token_prefix_match_len(["i", "like", "dogs"], ["i", "like", "cats"], page_size = 1) => 2 + _token_prefix_match_len(["i", "like", "dogs"], ["we", "like", "cats"], page_size = 1) => 0 + _token_prefix_match_len(["i", "like", "dogs"], ["i", "like", "dogs", "and", "cats"], page_size = 1) => 3 + """ + assert len(tokens0) % page_size == 0 + assert len(tokens1) % page_size == 0 + shorter_len = min(len(tokens0), len(tokens1)) + for i in range(0, shorter_len, page_size): + if (tokens0[i : i + page_size] != tokens1[i : i + page_size]).any(): + return i + return shorter_len + + +def _token_to_key(tokens: np.ndarray, page_size: int) -> tuple[TokenId, ...]: + assert len(tokens) >= page_size, ( + f"tokens must be at least page_size ({page_size}) long but is only {len(tokens)} tokens" + ) + return tuple(tokens[:page_size]) + + +class TrieNode: + """A TrieNode consists of a list of tokens and blocks. + + - Tokens are the ids of the tokens in the sequence. + - Blocks are the offsets into the KVCache region that back the KV entries + for a given token. I.e: the page index + """ + + node_id_counter = 0 + + def __init__(self) -> None: + """Constructs a TrieNode.""" + # each node is assigned a unique id to look it up in the lru cache + self.node_id = TrieNode.node_id_counter + TrieNode.node_id_counter += 1 + + self.children: Dict[tuple[TokenId, ...], TrieNode] = {} + # Typically in a map, we would have keys mapping to values. + # To avoid collision with KV cache terminology, we call them tokens and blocks. + # + # Only the root should have empty tokens/blocks + self.tokens: np.ndarray = np.array([]) + self.blocks: List[BlockId] = [] + # Only the root should have a null parent + self.parent: Optional[TrieNode] = None + # Sequences that are using the blocks owned by this trie node + # The node can only be evicted if self.active_seqs is empty + self.active_seqs: Set[SeqId] = set() + # A trie containing only the keys in the self.children dict where each + # key is length exactly page_size + self.key_trie = SimpleTrie() + + def is_leaf(self) -> bool: + """Returns true if the node is a leaf node.""" + return len(self.children) == 0 + + def is_root(self) -> bool: + """Returns true if the node is the root node.""" + return self.parent is None + + def is_evictable(self) -> bool: + """Returns true if the node is evictable.""" + return not self.is_root() and len(self.active_seqs) == 0 + + def find_block_with_largest_common_prefix( + self, target: Sequence[TokenId] + ) -> Optional[Tuple[BlockId, int]]: + """Returns any block in the trie that has the given prefix.""" + res = self.key_trie.find_string_with_largest_common_prefix(target) + if res is None: + return None + key, prefix_len = res + if prefix_len == 0: + return None + assert prefix_len <= len(target) + assert target[:prefix_len] == key[:prefix_len] + return self.children[tuple(key)].blocks[0], prefix_len + + def get_prefix_tokens_and_blocks(self) -> Tuple[np.ndarray, List[BlockId]]: + curr: Optional[TrieNode] = self + tokens: List[TokenId] = [] + blocks: List[BlockId] = [] + while curr is not None: + tokens.extend(curr.tokens[::-1]) + blocks.extend(curr.blocks[::-1]) + curr = curr.parent + return np.array(tokens, dtype=np.int64)[::-1], blocks[::-1] + + +class LRUCache(OrderedDict): + """Least recently used block cache to support O(1) eviction operations.""" + + def __init__(self): + super().__init__() + + def __setitem__(self, key: int, value: TrieNode) -> None: + super().__setitem__(key, value) + super().move_to_end(key) + + def move_to_front(self, key: int) -> None: + super().move_to_end(key, last=False) + + def pop_front(self) -> TrieNode: + return super().popitem(last=False)[-1] + + +class RadixTrie: + """This RadixTrie is specially designed for prefix caching in paged attention. + + The RadixTrie allows for efficient insertion and matching of sequences. It + matches each prefix of tokens in a sequence to its corresponding blocks. + Compared to a naive trie, the RadixTrie allows storing multiple tokens in a + single node for less indirection and faster access. + + Blocks in the RadixTrie should be immutable and committed. If it is in the + RadixTrie, it is eligible for sharing. An inflight or uncommitted block that + is being written to by a sequence should not be in the RadixTrie. + + The RadixTrie allows for an LRU eviction policy for its leaves. We only allow + evictions if no active sequences are using the node. + + Currently, the RadixTrie assumes that the paged KVCache page size is 1. + + This implementation is based off of SGLang: + - https://github.com/sgl-project/sglang/blob/337fe53ac41c68d6f171ef3b446f55eb0e98f77c/python/sglang/srt/mem_cache/radix_cache.py#L58 + """ + + def __init__(self, page_size: int = 1) -> None: + """Constructs a RadixTrie.""" + self.root = TrieNode() + self.page_size = page_size + self.evictable_blocks: set[BlockId] = set() + self.all_blocks: set[BlockId] = set() + + # the lru cache contains each evictable block in the trie + self.lru_cache = LRUCache() + + def _check_node_valid(self, node: TrieNode): + """Rudimentary checks of data structure invariants for TrieNode.""" + if self.root == node: + assert len(node.tokens) == 0 + assert len(node.blocks) == 0 + assert not node.parent + else: + assert len(node.tokens) > 0 + assert len(node.blocks) > 0 + assert node.parent + assert len(node.tokens) % self.page_size == 0 + assert len(node.tokens) // self.page_size == len(node.blocks) + + def insert( + self, + tokens: Union[np.ndarray, List[TokenId]], + blocks: List[BlockId], + node: Optional[TrieNode] = None, + ) -> TrieNode: + """Inserts `tokens` and `blocks` into the trie. + + We assume that each block contains exactly one token so the length of both + input lists must match. + + Args: + tokens: Tokens to insert into trie + blocks: KV cache block for each token + node: Node to begin insertion at. If this is not a leaf node, blocks + in the tree are overwritten. + Return: + trie_node: Node corresponding to end of the sequence where future + generated tokens can be inserted + """ + + if isinstance(tokens, list): + tokens = np.array(tokens) + + def insert_helper( + prev: TrieNode, tokens: np.ndarray, blocks: List[BlockId] + ) -> TrieNode: + if len(tokens) == 0: + return prev + + key = _token_to_key(tokens, self.page_size) + if key not in prev.children: + # insert new node + curr = TrieNode() + curr.parent = prev + curr.tokens = tokens + curr.blocks = blocks + prev.children[key] = curr + prev.key_trie.insert(key) + assert curr.is_evictable() and curr.is_leaf() + self.evictable_blocks.update(blocks) + self.lru_cache[curr.node_id] = curr + self.all_blocks.update(blocks) + + curr = prev.children[key] + prefix_len = _token_prefix_match_len( + curr.tokens, tokens, self.page_size + ) + + if prefix_len == len(curr.tokens) and prefix_len == len(tokens): + return curr + + unmatched_tokens = tokens[prefix_len:] + unmatched_blocks = blocks[prefix_len // self.page_size :] + if prefix_len == len(curr.tokens): + return insert_helper(curr, unmatched_tokens, unmatched_blocks) + + # this means that we got a partial match and must split the curr node + # (prev) -> (curr) + # becomes: + # (prev) -> (parent) -> (child) + (parent, _) = self._split_node(curr, prefix_len) + unmatched_tokens = tokens[prefix_len:] + unmatched_blocks = blocks[prefix_len // self.page_size :] + return insert_helper(parent, unmatched_tokens, unmatched_blocks) + + if len(tokens) % self.page_size != 0: + msg = f"Insertion failed: the number of tokens is not divisible by the page size. len(tokens) == {len(tokens)} but page_size == {self.page_size}." + raise ValueError(msg) + if len(tokens) // self.page_size != len(blocks): + msg = f"Insertion failed: the number of tokens and blocks do not match. len(tokens) // self.page_size == {len(tokens)} // {self.page_size} == {len(tokens) // self.page_size} but len(blocks) == {len(blocks)}." + raise ValueError(msg) + + if node is None: + node = self.root + + if len(tokens) == 0: + return node + + # clone to avoid mutating the original lists + tokens = tokens.copy() + blocks = blocks.copy() + return insert_helper(node, tokens, blocks) + + def match_prefix( + self, + tokens: Union[np.ndarray, List[TokenId]], + node: Optional[TrieNode] = None, + ) -> Tuple[TrieNode, List[BlockId]]: + """Matches the input `tokens` with the contents of the trie. + + Args: + tokens: tokens to search the trie for + node: Node to begin matching at. + Return: + Tuple containing: + - trie_node: Node corresponding to end of matched prefix where + future generated tokens can be inserted. + - block_list: KV cache blocks for matched prefix + """ + if isinstance(tokens, list): + tokens = np.array(tokens) + + def match_prefix_helper( + prev: TrieNode, tokens: np.ndarray, blocks: List[BlockId] + ) -> TrieNode: + if len(tokens) == 0: + return prev + + key = _token_to_key(tokens, self.page_size) + if key not in prev.children: + return prev + + curr = prev.children[key] + prefix_len = _token_prefix_match_len( + curr.tokens, tokens, self.page_size + ) + if prefix_len < len(curr.tokens): + # (prev) -> (curr) + # becomes: + # (prev) -> (parent) -> (child) + (parent, _) = self._split_node(curr, prefix_len) + blocks.extend(parent.blocks) + return parent + else: + blocks.extend(curr.blocks) + return match_prefix_helper(curr, tokens[prefix_len:], blocks) + + if node is None: + node = self.root + blocks: List[BlockId] = [] + + if len(tokens) == 0: + return node, [] + + tokens = tokens[: len(tokens) // self.page_size * self.page_size] + curr = match_prefix_helper(node, tokens, blocks) + return curr, blocks + + def _split_node( + self, node: TrieNode, split_len: int + ) -> Tuple[TrieNode, TrieNode]: + """Splits the provided node into two. + + The resulting parent node receives exactly `split_len` tokens/blocks, and + the child receives the remainder. + + before │ after splitting w/ `split_len` = 2 + │ ┌────────┐ + │ │ ab │ (parent) + ┌────────┐ │ └───▲────┘ + │ abcdef │ │ │ + └────────┘ │ ┌───▼────┐ + │ │ cdef │ (child) + │ └────────┘ + """ + assert node != self.root + assert split_len > 0 + assert split_len % self.page_size == 0 + + parent = TrieNode() + child = node + parent.tokens, child.tokens = ( + child.tokens[:split_len], + child.tokens[split_len:], + ) + parent.blocks, child.blocks = ( + child.blocks[: split_len // self.page_size], + child.blocks[split_len // self.page_size :], + ) + + parent.parent = child.parent + assert parent.parent is not None + assert len(parent.tokens) > 0 + parent_key = _token_to_key(parent.tokens, self.page_size) + parent.parent.children[parent_key] = parent + parent.parent.key_trie.insert(parent_key) + child_key = _token_to_key(child.tokens, self.page_size) + parent.children = {child_key: child} + parent.key_trie.insert(child_key) + self.lru_cache[child.node_id] = child + child.parent = parent + + parent.active_seqs = child.active_seqs.copy() + if parent.is_evictable(): + self.lru_cache[parent.node_id] = parent + + self._check_node_valid(parent) + self._check_node_valid(child) + return (parent, child) + + def mark_in_use_by(self, node: TrieNode, seq_id: SeqId): + """Climb up the trie starting from node, marking each node as being + in use by this seq.""" + + curr = node + while curr != self.root: + assert curr is not None + # optimization: if this node is already marked as using this sequence, + # assume that it is already marked for its parents as well + if seq_id in curr.active_seqs: + break + curr.active_seqs.add(seq_id) + if not curr.is_evictable(): + self.evictable_blocks -= set(curr.blocks) + if curr.node_id in self.lru_cache: + del self.lru_cache[curr.node_id] + assert curr.parent is not None + curr = curr.parent + + def mark_not_in_use_by(self, node: TrieNode, seq_id: SeqId): + """Climb up the trie starting from node, marking each node as no longer + in use by this seq. Since nodes without any users may be eligible for + eviction, we also update its last_access_time.""" + + curr = node + while curr != self.root: + assert curr is not None + assert seq_id in curr.active_seqs + curr.active_seqs.remove(seq_id) + if curr.is_evictable(): + self.evictable_blocks.update(curr.blocks) + self.lru_cache[curr.node_id] = curr + assert curr.parent is not None + curr = curr.parent + + def evict_blocks(self, desired_num_evicted: int) -> List[BlockId]: + """Attempt to evict at most `desired_num_evicted` blocks from trie.""" + evicted_blocks: List[BlockId] = [] + + while len(evicted_blocks) < desired_num_evicted and self.lru_cache: + leaf = self.lru_cache.pop_front() + # we guarantee that the parent node will only be evicted after all + # its children have been evicted. as such, this node we will evict + # is a leaf + assert leaf.is_evictable() and leaf.is_leaf() + key = _token_to_key(leaf.tokens, self.page_size) + num_blocks_to_evict = min( + desired_num_evicted - len(evicted_blocks), + len(leaf.blocks), + ) + assert num_blocks_to_evict > 0 + num_tokens_to_evict = num_blocks_to_evict * self.page_size + blocks_left, blocks_to_evict = ( + leaf.blocks[:-num_blocks_to_evict], + leaf.blocks[-num_blocks_to_evict:], + ) + leaf.blocks = blocks_left + leaf.tokens = leaf.tokens[:-num_tokens_to_evict] + evicted_blocks.extend(blocks_to_evict) + if leaf.blocks: + self.lru_cache[leaf.node_id] = leaf + self.lru_cache.move_to_front(leaf.node_id) + else: + parent = leaf.parent + assert parent is not None + del parent.children[key] + del parent.key_trie[key] + + self.evictable_blocks.difference_update(evicted_blocks) + self.all_blocks.difference_update(evicted_blocks) + if len(evicted_blocks) < desired_num_evicted: + assert not self.evictable_blocks + assert len(self.lru_cache) == 0 + + return evicted_blocks + + def get_all_blocks(self) -> set[BlockId]: + """Returns the total number of blocks in the trie.""" + return self.all_blocks + + def get_evictable_blocks(self) -> set[BlockId]: + """Returns the number of blocks that are eligible for eviction.""" + return self.evictable_blocks + + def pretty_format(self, print_blocks: bool = False) -> List[str]: + """Formats the contents of the trie.""" + + def helper(node: TrieNode, indent: int, lines: List[str]): + for _, child in node.children.items(): + tokens = child.tokens + token_list = tokens.tolist() + if print_blocks: + lines.append(f"{'-' * indent}{token_list} : {child.blocks}") + else: + lines.append(f"{'-' * indent}{token_list}") + helper(child, indent + 2, lines) + + lines: List[str] = [] + helper(self.root, 0, lines) + return lines + + def pretty_print(self, print_blocks: bool = True): + """Prints the contents of the trie.""" + for line in self.pretty_format(print_blocks): + print(line) diff --git a/src/max/pipelines/kv_cache/simple_trie.py b/src/max/pipelines/kv_cache/simple_trie.py new file mode 100644 index 0000000000..3ae86eb6a6 --- /dev/null +++ b/src/max/pipelines/kv_cache/simple_trie.py @@ -0,0 +1,152 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from typing import Any, Optional, Sequence, Tuple + +Key = Any + + +class SimpleNode: + """A node in a simple trie data structure.""" + + def __init__(self): + # Pointer to the children of this node + self.children: dict[Key, SimpleNode] = {} + # Whether this node is the end of a word + self.is_eow: bool = False + + +class SimpleTrie: + """A simple prefix trie with basic set insertion and deletion operations. + + Unlike the RadixTrie, this trie only have one item at each node and does not + map multiple keys to multiple values. Instead, it just stores a set of keys. + """ + + def __init__(self): + self.root = SimpleNode() + + def insert(self, s: Sequence[Key]): + """Inserts a sequence into the trie.""" + curr = self.root + for ch in s: + if ch not in curr.children: + curr.children[ch] = SimpleNode() + curr = curr.children[ch] + curr.is_eow = True + + def _search(self, s: Sequence[Key]) -> Tuple[SimpleNode, list[Key]]: + """Internal helper method to search for a sequence in the trie. + + Args: + s: The sequence to search for + + Returns: + A tuple containing: + - The last node reached during the search + - List of keys matched during the search + """ + curr = self.root + matched: list[Key] = [] + for ch in s: + if ch not in curr.children: + return curr, matched + matched.append(ch) + curr = curr.children[ch] + return curr, matched + + def find_string_with_largest_common_prefix( + self, target: Sequence[Key] + ) -> Optional[Tuple[Sequence[Key], int]]: + """Returns a sequence in the trie that shares the longest common prefix + with the target. + + If a match is found, returns a tuple containing: + - The matched sequence + - Length of the common prefix + Returns None if no match is found + """ + curr, matched = self._search(target) + prefix_len = len(matched) + + if prefix_len == 0: + return None + + # Keep going down left spine to find any string in trie that has s + # as its prefix + s = matched + while not curr.is_eow: + if not curr.children: + return None + ch = next(iter(curr.children)) + curr = curr.children[ch] + s.append(ch) + + return s, prefix_len + + def __contains__(self, s: Sequence[Key]) -> bool: + """Checks if the trie contains the exact sequence.""" + node, matched = self._search(s) + return len(matched) == len(s) and node.is_eow + + def __delitem__(self, s: Sequence[Key]) -> None: + """Deletes a sequence from the trie.""" + + def _remove( + root: Optional[SimpleNode], idx: int + ) -> Optional[SimpleNode]: + if not root: + return None + + if idx == len(s): + assert root.is_eow + root.is_eow = False + if len(root.children) == 0: + del root + root = None + return root + + ch = s[idx] + child = _remove(root.children[ch], idx + 1) + if child is None: + del root.children[ch] + else: + root.children[ch] = child + + if len(root.children) == 0 and not root.is_eow: + del root + root = None + return root + + _remove(self.root, 0) + + def pretty_format(self) -> list[str]: + """Returns a formatted string representation of the trie for debugging.""" + lines: list[str] = [] + + def helper(node: SimpleNode, indent: int): + if node.is_eow: + lines.append(f"{'-' * indent}*") + for ch, child in node.children.items(): + lines.append(f"{'-' * indent}{ch}") + helper(child, indent + 2) + + helper(self.root, 0) + return lines + + def pretty_print(self) -> None: + """Prints a formatted visual representation of the trie for debugging.""" + print("SimpleTrie(") + for line in self.pretty_format(): + print(line) + print(")") diff --git a/src/max/pipelines/nn/__init__.py b/src/max/pipelines/nn/__init__.py new file mode 100644 index 0000000000..22b3b1bac4 --- /dev/null +++ b/src/max/pipelines/nn/__init__.py @@ -0,0 +1,88 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from .attention import ( + Attention, + AttentionImpl, + AttentionImplQKV, + AttentionQKV, + AttentionWithoutMask, + AttentionWithRope, + AttentionWithRopeQKV, + AttentionWithRopeV2, + DistributedAttentionImpl, + DistributedAttentionWithRope, + GPTQAttentionWithRope, + NaiveAttentionWithRope, +) +from .comm import Signals +from .conv import Conv1D, Conv2D, Conv3D +from .embedding import Embedding, EmbeddingV2, VocabParallelEmbedding +from .kernels import MHAMaskVariant +from .layer import Layer, LayerV2 +from .linear import MLP, MLPV2, DistributedMLP, GPTQLinearV2, Linear, LinearV2 +from .norm import DistributedRMSNorm, LayerNorm, LayerNormV2, RMSNorm, RMSNormV2 +from .rotary_embedding import OptimizedRotaryEmbedding, RotaryEmbedding +from .sequential import Sequential +from .transformer import ( + DistributedTransformer, + DistributedTransformerBlock, + NaiveTransformer, + NaiveTransformerBlock, + Transformer, + TransformerBlock, +) + +__all__ = [ + "Attention", + "AttentionImpl", + "AttentionImplQKV", + "AttentionQKV", + "AttentionWithRope", + "AttentionWithRopeQKV", + "AttentionWithRopeV2", + "AttentionWithoutMask", + "Conv1D", + "Conv2D", + "Conv3D", + "DistributedAttentionImpl", + "DistributedAttentionWithRope", + "DistributedMLP", + "DistributedRMSNorm", + "DistributedTransformer", + "DistributedTransformerBlock", + "Embedding", + "EmbeddingV2", + "GPTQAttentionWithRope", + "GPTQLinearV2", + "Layer", + "LayerNorm", + "LayerNormV2", + "LayerV2", + "Linear", + "LinearV2", + "MHAMaskVariant", + "MLP", + "MLPV2", + "NaiveAttentionWithRope", + "NaiveTransformer", + "NaiveTransformerBlock", + "OptimizedRotaryEmbedding", + "RMSNorm", + "RMSNormV2", + "RotaryEmbedding", + "Sequential", + "Signals", + "Transformer", + "TransformerBlock", +] diff --git a/src/max/pipelines/nn/_identity.py b/src/max/pipelines/nn/_identity.py new file mode 100644 index 0000000000..eeb038c45a --- /dev/null +++ b/src/max/pipelines/nn/_identity.py @@ -0,0 +1,71 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # +"""Utility classes for using objects as keys in data structures.""" + +from collections.abc import MutableMapping, MutableSet + + +# From https://stackoverflow.com/questions/16994307/identityset-in-python +class IdentitySet(MutableSet): + """Set that uses object `id` as keys to support unhashable types.""" + + def __init__(self, iterable=()): + self.map = {} # id -> object + self |= iterable # add elements from iterable to the set (union) + + def __len__(self): + return len(self.map) + + def __iter__(self): + return iter(self.map.values()) + + def __contains__(self, x): + return id(x) in self.map + + def add(self, value): + """Add an element.""" + self.map[id(value)] = value + + def discard(self, value): + """Remove an element. Do not raise an exception if absent.""" + self.map.pop(id(value), None) + + def __repr__(self): + if not self: + return "%s()" % (self.__class__.__name__,) + return "%s(%r)" % (self.__class__.__name__, list(self)) + + +class IdentityMap(MutableMapping): + """Map that uses object `id` as keys to support unhashable types.""" + + def __init__(self): + self.key_map = {} # id -> object + self.value_map = {} # id -> Value + + def __getitem__(self, key): + return self.value_map[id(key)] + + def __setitem__(self, key, value): + self.key_map[id(key)] = key + self.value_map[id(key)] = value + + def __delitem__(self, key): + del self.key_map[id(key)] + del self.value_map[id(key)] + + def __iter__(self): + return iter(self.key_map.values()) + + def __len__(self): + return len(self.key_map) diff --git a/src/max/pipelines/nn/attention/__init__.py b/src/max/pipelines/nn/attention/__init__.py new file mode 100644 index 0000000000..5536ee5871 --- /dev/null +++ b/src/max/pipelines/nn/attention/__init__.py @@ -0,0 +1,44 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # +"""The attention mechanism used within the model.""" + +from .attention import Attention, AttentionQKV +from .attention_with_rope import ( + AttentionWithRope, + AttentionWithRopeQKV, + AttentionWithRopeV2, + DistributedAttentionWithRope, + GPTQAttentionWithRope, +) +from .attention_without_mask import AttentionWithoutMask +from .interfaces import ( + AttentionImpl, + AttentionImplQKV, + DistributedAttentionImpl, +) +from .naive_attention_with_rope import NaiveAttentionWithRope + +__all__ = [ + "Attention", + "AttentionQKV", + "AttentionImpl", + "AttentionImplQKV", + "AttentionWithRope", + "DistributedAttentionImpl", + "DistributedAttentionWithRope", + "AttentionWithRopeQKV", + "AttentionWithoutMask", + "NaiveAttentionWithRope", + "AttentionWithRopeV2", + "GPTQAttentionWithRope", +] diff --git a/src/max/pipelines/nn/attention/attention.py b/src/max/pipelines/nn/attention/attention.py new file mode 100644 index 0000000000..5eb57f2815 --- /dev/null +++ b/src/max/pipelines/nn/attention/attention.py @@ -0,0 +1,157 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # +"""A vanilla opaque KV Cache optimized attention mechanism.""" + +from dataclasses import dataclass +from typing import Union + +from max.dtype import DType +from max.graph import TensorValue, ops +from max.pipelines.kv_cache import ( + ContinuousBatchingKVCacheCollection, + PagedKVCacheCollection, +) + +from ..kernels import flash_attention, fused_qkv_matmul +from .interfaces import AttentionImpl, AttentionImplQKV + + +@dataclass +class Attention(AttentionImpl): + def __call__( + self, + x: TensorValue, + kv_collection: Union[ + ContinuousBatchingKVCacheCollection, PagedKVCacheCollection + ], + **kwargs, + ) -> TensorValue: + if isinstance(kv_collection, PagedKVCacheCollection): + raise ValueError( + "Paged attention not supported for Attention on non-ragged tensors." + ) + + if "attention_mask" not in kwargs: + raise ValueError("attention_mask not passed as input to Attention") + attention_mask = kwargs["attention_mask"] + if attention_mask.dtype != x.dtype: + msg = ( + "expected attention_mask and x to have the same dtype, but got" + f" {attention_mask.dtype} and {x.dtype}, respectively." + ) + raise ValueError(msg) + + # Get attributes from inputs + batch_size, seq_len = x.shape[0], x.shape[1] + + # Call into fused qkv matmul. + xq = fused_qkv_matmul( + self.kv_params, + input=x, + wqkv=self.wqkv, + kv_collection=kv_collection, + layer_idx=self.layer_idx, + n_heads=self.n_heads, + ) + + xq = ops.reshape( + xq, + [ + batch_size, + seq_len, + self.n_heads, + self.kv_params.head_dim, + ], + ) + + # Calculate Flash Attention + attn_out = flash_attention( + self.kv_params, + input=xq, + kv_collection=kv_collection, + layer_idx=self.layer_idx, + attention_mask=attention_mask, + valid_lengths=kwargs["valid_lengths"], + scale=self.scale, + ) + + attn_out = ops.reshape(attn_out, shape=[batch_size, seq_len, -1]) + + return self.wo(attn_out) + + +@dataclass +class AttentionQKV(AttentionImplQKV): + def __call__( + self, + x: TensorValue, + kv_collection: Union[ + ContinuousBatchingKVCacheCollection, PagedKVCacheCollection + ], + **kwargs, + ) -> TensorValue: + if isinstance(kv_collection, PagedKVCacheCollection): + raise ValueError( + "Paged attention not supported for Attention on non-ragged tensors." + ) + + if "attention_mask" not in kwargs: + raise ValueError("attention_mask not passed as input to Attention") + attention_mask = kwargs["attention_mask"] + if attention_mask.dtype != x.dtype: + msg = ( + "expected attention_mask and x to have the same dtype, but got" + f" {attention_mask.dtype} and {x.dtype}, respectively." + ) + raise ValueError(msg) + + wqkv = ops.concat((self.wq, self.wk, self.wv)).transpose(0, 1) + wqkv = ops.cast(wqkv, x.dtype) + + # Get attributes from inputs + batch_size, seq_len = x.shape[0], x.shape[1] + + # Call into fused qkv matmul. + xq = fused_qkv_matmul( + self.kv_params, + input=x, + wqkv=wqkv, + kv_collection=kv_collection, + layer_idx=ops.constant(self.layer_idx, DType.uint32), + n_heads=self.n_heads, + ) + + xq = ops.reshape( + xq, + [ + batch_size, + seq_len, + self.n_heads, + self.kv_params.head_dim, + ], + ) + + # Calculate Flash Attention + attn_out = flash_attention( + self.kv_params, + input=xq, + kv_collection=kv_collection, + layer_idx=ops.constant(self.layer_idx, DType.uint32), + attention_mask=attention_mask, + valid_lengths=kwargs["valid_lengths"], + scale=self.scale, + ) + + attn_out = ops.reshape(attn_out, shape=[batch_size, seq_len, -1]) + + return self.wo(attn_out) diff --git a/src/max/pipelines/nn/attention/attention_with_rope.py b/src/max/pipelines/nn/attention/attention_with_rope.py new file mode 100644 index 0000000000..897a14d068 --- /dev/null +++ b/src/max/pipelines/nn/attention/attention_with_rope.py @@ -0,0 +1,626 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # +"""An opaque KV Cache optimized attention mechanism with Rope.""" + +from __future__ import annotations + +import math +from dataclasses import dataclass +from typing import Callable, List, Optional, Union + +from max.dtype import DType +from max.graph import ( + BufferValue, + DeviceRef, + TensorValue, + Weight, + ops, +) +from max.graph.quantization import QuantizationConfig, QuantizationEncoding +from max.pipelines.kv_cache import ( + ContinuousBatchingKVCacheCollection, + KVCacheParams, + PagedKVCacheCollection, +) + +from ..kernels import ( + MHAMaskVariant, + flash_attention_ragged, + fused_qk_ragged_rope, + fused_qkv_ragged_matmul, + fused_qkv_ragged_matmul_quantized, +) +from ..layer import LayerV2 +from ..linear import LinearV2 +from ..rotary_embedding import OptimizedRotaryEmbedding +from .clamp import clamp +from .interfaces import ( + AttentionImpl, + AttentionImplQKV, + AttentionImplV2, + DistributedAttentionImpl, +) + + +@dataclass +class AttentionWithRope(AttentionImpl): + # This class will not use the RotaryEmbedding to + # calculate rope, but it already includes a freqs_cis + # calculation, which we will borrow + + rope: OptimizedRotaryEmbedding + bias: Optional[TensorValue] = None + perm_idx: Optional[TensorValue] = None + quantization_config: Optional[QuantizationConfig] = None + + def __call__( + self, + x: TensorValue, + kv_collection: Union[ + ContinuousBatchingKVCacheCollection, PagedKVCacheCollection + ], + **kwargs, + ) -> TensorValue: + # Get attributes from input. + total_seq_len = x.shape[0] + + # Call into fused qkv ragged matmul. + if self.quantization_config: + xq = fused_qkv_ragged_matmul_quantized( + self.kv_params, + input=x, + wqkv=self.wqkv, + input_row_offsets=kwargs["input_row_offsets"], + kv_collection=kv_collection, + layer_idx=self.layer_idx, + n_heads=self.n_heads, + bias=self.bias, + perm_idx=self.perm_idx, + quantization_config=self.quantization_config, + ) + else: + xq = fused_qkv_ragged_matmul( + self.kv_params, + input=x, + wqkv=self.wqkv, + input_row_offsets=kwargs["input_row_offsets"], + kv_collection=kv_collection, + layer_idx=self.layer_idx, + n_heads=self.n_heads, + bias=self.bias, + ) + + # Apply rope. + xq = xq.reshape((-1, self.n_heads, self.kv_params.head_dim)) + + if xq.device is not None: + freqs_cis = ops.cast(self.rope.freqs_cis, xq.dtype).to(xq.device) + else: + freqs_cis = ops.cast(self.rope.freqs_cis, xq.dtype) + + xq = fused_qk_ragged_rope( + self.kv_params, + xq, + kwargs["input_row_offsets"], + kv_collection, + freqs_cis, + self.layer_idx, + interleaved=self.rope.interleaved, + ) + + # Calculate Flash Attention. + attn_out = flash_attention_ragged( + self.kv_params, + input=xq, + kv_collection=kv_collection, + layer_idx=self.layer_idx, + input_row_offsets=kwargs["input_row_offsets"], + mask_variant=MHAMaskVariant.CAUSAL_MASK, + scale=self.scale, + ) + + attn_out = ops.reshape(attn_out, shape=[total_seq_len, -1]) + + return self.wo(attn_out) + + +class AttentionWithRopeV2(AttentionImplV2): + """Implementation of attention that uses the rope frequency. + + `AttentionWithRopeV2` will replace `AttentionWithRope` as we roll out + the new Layer API. + """ + + # This class will not use the RotaryEmbedding to + # calculate rope, but it already includes a freqs_cis + # calculation, which we will borrow + rope: OptimizedRotaryEmbedding + + def __init__( + self, + *, + rope: OptimizedRotaryEmbedding, + num_attention_heads: int, + num_key_value_heads: int, + hidden_size: int, + kv_params: KVCacheParams, + layer_idx: int, + dtype: DType = DType.float32, + device: DeviceRef = DeviceRef.CPU(), + linear_cls: Callable[..., LinearV2] = LinearV2, + stacked_qkv: bool = False, + scale: float | None = None, + has_bias: bool = False, + clip_qkv: float | None = None, + ): + """Initializes the attention layer. + + Args: + rope: The rope layer to borrow the freq_cis value from. + num_attention_heads: The number of attention heads. + num_key_value_heads: Number of key/value heads. + hidden_size: The dimension of the hidden states. + kv_params: KV Cache Params, including the number of kv heads, the head dim, and data type. + layer_idx: The layer number associated with this Attention block. + dtype: DType of the + device: Device to place the weights and run the computation. + linear_cls: Linear class to use for the outputs dense layer. + stacked_qkv: Whether the weights are stacked together. + scale: Value used to scale the results of the attention output. + has_bias: Whether to use an attention bias. + clip_qkv: If provided, the QKV weights are clamped between + `[-clip_qkv, clip_qkv]` + """ + + super().__init__() + self.rope = rope + self.n_heads = num_attention_heads + self.layer_idx = layer_idx + self.kv_params = kv_params + self.has_bias = has_bias + self.scale = ( + scale if scale else math.sqrt(1.0 / self.kv_params.head_dim) + ) + self.clip_qkv = clip_qkv + + if stacked_qkv and clip_qkv: + raise ValueError( + "`clip_qkv` not yet supported when `stack_qkv=True`." + ) + + if not self.kv_params.cache_strategy.uses_opaque(): + raise ValueError( + f"{self.kv_params.cache_strategy} cache strategy, not supported" + " in Attention layer." + ) + + kv_weight_dim = ( + hidden_size // num_attention_heads + ) * num_key_value_heads + + self.stacked_qkv = stacked_qkv + + if stacked_qkv: + # To keep the weight names consistent with the transformers attention, + # the names are suffixed ".weight". + self.qkv_proj = Weight( + name="qkv_proj.weight", + dtype=dtype, + shape=[hidden_size + 2 * kv_weight_dim, hidden_size], + ) + else: + self.q_proj = Weight( + name="q_proj.weight", + dtype=dtype, + shape=[hidden_size, hidden_size], + ) + self.k_proj = Weight( + name="k_proj.weight", + dtype=dtype, + shape=[kv_weight_dim, hidden_size], + ) + self.v_proj = Weight( + name="v_proj.weight", + dtype=dtype, + shape=[kv_weight_dim, hidden_size], + ) + + if has_bias: + assert not stacked_qkv, "Bias is not supported with stacked qkv." + + self.bias_q = Weight( + name="q_proj.bias", dtype=dtype, shape=[hidden_size] + ) + self.bias_k = Weight( + name="k_proj.bias", dtype=dtype, shape=[kv_weight_dim] + ) + self.bias_v = Weight( + name="v_proj.bias", dtype=dtype, shape=[kv_weight_dim] + ) + + self.o_proj = linear_cls( + in_dim=hidden_size, out_dim=hidden_size, dtype=dtype, device=device + ) + + @property + def wqkv(self) -> TensorValue: + """The concatenation of q, k, and v weight vectors.""" + if self.stacked_qkv: + return self.qkv_proj + else: + wq: TensorValue = self.q_proj + wk: TensorValue = self.k_proj + wv: TensorValue = self.v_proj + if self.clip_qkv: + wq = clamp(wq, min=-self.clip_qkv, max=self.clip_qkv) + wk = clamp(wk, min=-self.clip_qkv, max=self.clip_qkv) + wv = clamp(wv, min=-self.clip_qkv, max=self.clip_qkv) + return ops.concat((wq, wk, wv)) + + @property + def wqkv_bias(self) -> TensorValue | None: + """The concatenation of q, k, and v bias weight vectors.""" + if not self.has_bias: + return None + + return ops.concat((self.bias_q, self.bias_k, self.bias_v)) + + def __call__( + self, + x: TensorValue, + kv_collection: Union[ + ContinuousBatchingKVCacheCollection, PagedKVCacheCollection + ], + **kwargs, + ) -> TensorValue: + # Get attributes from input. + total_seq_len = x.shape[0] + + layer_idx = ops.constant(self.layer_idx, DType.uint32) + # Call into fused qkv ragged matmul. + xq = fused_qkv_ragged_matmul( + self.kv_params, + input=x, + wqkv=self.wqkv, + bias=self.wqkv_bias, + input_row_offsets=kwargs["input_row_offsets"], + kv_collection=kv_collection, + layer_idx=layer_idx, + n_heads=self.n_heads, + ) + + # Apply rope. + xq = xq.reshape((-1, self.n_heads, self.kv_params.head_dim)) + + if xq.device is not None: + freqs_cis = ops.cast(self.rope.freqs_cis, xq.dtype).to(xq.device) + else: + freqs_cis = ops.cast(self.rope.freqs_cis, xq.dtype) + + xq = fused_qk_ragged_rope( + self.kv_params, + xq, + kwargs["input_row_offsets"], + kv_collection, + freqs_cis, + layer_idx, + interleaved=self.rope.interleaved, + ) + + # Calculate Flash Attention. + attn_out = flash_attention_ragged( + self.kv_params, + input=xq, + kv_collection=kv_collection, + layer_idx=layer_idx, + input_row_offsets=kwargs["input_row_offsets"], + mask_variant=MHAMaskVariant.CAUSAL_MASK, + scale=self.scale, + ) + + attn_out = ops.reshape(attn_out, shape=[total_seq_len, -1]) + + return self.o_proj(attn_out) + + +class GPTQAttentionWithRope(AttentionWithRopeV2): + """Implementation of the GPT-Q attention layer.""" + + def __init__( + self, + quantization_config: QuantizationConfig, + rope: OptimizedRotaryEmbedding, + num_attention_heads: int, + num_key_value_heads: int, + hidden_size: int, + kv_params: KVCacheParams, + layer_idx: int, + dtype: DType = DType.float32, + device: DeviceRef | None = None, + scale: float | None = None, + linear_cls: Callable[..., LinearV2] = LinearV2, + ): + # Skip AttentionWithRopeV2.__init__ because the weights are created + # differently. + LayerV2.__init__(self) + self.quantization_config = quantization_config + self.rope = rope + self.n_heads = num_attention_heads + self.layer_idx = layer_idx + self.kv_params = kv_params + self.hidden_size = hidden_size + self.device = device + self.scale = ( + scale if scale else math.sqrt(1.0 / self.kv_params.head_dim) + ) + if not self.kv_params.cache_strategy.uses_opaque(): + raise ValueError( + f"{self.kv_params.cache_strategy} cache strategy, not supported" + " in Attention layer." + ) + + self.kv_weight_dim = ( + hidden_size // num_attention_heads + ) * num_key_value_heads + + self.q_proj_qweight = Weight( + name="q_proj.qweight", + dtype=DType.uint8, + shape=(1, 1), # Shape will be overridden at load_state_dict. + # device=device, + quantization_encoding=QuantizationEncoding.GPTQ, + ) + self.k_proj_qweight = Weight( + name="k_proj.qweight", + dtype=DType.uint8, + shape=(1, 1), # Shape will be overridden at load_state_dict. + # device=device, + quantization_encoding=QuantizationEncoding.GPTQ, + ) + self.v_proj_qweight = Weight( + name="v_proj.qweight", + dtype=DType.uint8, + shape=(1, 1), # Shape will be overridden at load_state_dict. + # device=device, + quantization_encoding=QuantizationEncoding.GPTQ, + ) + + self.q_proj_scales = Weight( + name="q_proj.scales", + dtype=DType.uint8, + shape=(1, 1), # Shape will be overridden at load_state_dict. + # device=device, + quantization_encoding=QuantizationEncoding.GPTQ, + ) + self.k_proj_scales = Weight( + name="k_proj.scales", + dtype=DType.uint8, + shape=(1, 1), # Shape will be overridden at load_state_dict. + # device=device, + quantization_encoding=QuantizationEncoding.GPTQ, + ) + self.v_proj_scales = Weight( + name="v_proj.scales", + dtype=DType.uint8, + shape=(1, 1), # Shape will be overridden at load_state_dict. + # device=device, + quantization_encoding=QuantizationEncoding.GPTQ, + ) + self.o_proj = linear_cls( + in_dim=hidden_size, + out_dim=hidden_size, + dtype=dtype, + # device=device, + quantization_encoding=QuantizationEncoding.GPTQ, + ) + + self.perm_idx = None + if quantization_config.desc_act: + self.perm_idx = Weight( + name="q_proj.perm_idx", + dtype=DType.int32, + shape=[hidden_size], + # device=device, + ) + + @property + def wqkv(self) -> TensorValue: + """The concatenation of q, k, and v weight vectors.""" + + # fmt: off + # the `qweight` tensor for a QuantLinear is of type uint32. When allocated as bytes, we reshape the + # uint8 tensor to [cols, rows * 4] so concatenating the uint8 tensors along axis=1 is equivalent to + # concatenating the original uint32 tensors along axis=1. + wq_qweight = ops.reshape(self.q_proj_qweight, (-1, self.hidden_size * 4)) + wk_qweight = ops.reshape(self.k_proj_qweight, (-1, self.kv_weight_dim * 4)) + wv_qweight = ops.reshape(self.v_proj_qweight, (-1, self.kv_weight_dim * 4)) + + wqkv_qweight = ops.reshape( + ops.concat((wq_qweight, wk_qweight, wv_qweight), axis=1), + (-1, self.hidden_size + 2 * self.kv_weight_dim), + ) + # `scales` tensor is in f16/bf16 type, so we reshape the uint8 tensor to [cols, rows * 2]. + wq_scales = ops.reshape(self.q_proj_scales, (-1, self.hidden_size * 2)) + wk_scales = ops.reshape(self.k_proj_scales, (-1, self.kv_weight_dim * 2)) + wv_scales = ops.reshape(self.v_proj_scales, (-1, self.kv_weight_dim * 2)) + + wqkv_scales = ops.reshape( + ops.concat((wq_scales, wk_scales, wv_scales), axis=1), + (-1, self.hidden_size + 2 * self.kv_weight_dim), + ) + # fmt: on + return ops.concat((wqkv_qweight, wqkv_scales), axis=0) + + def __call__( + self, + x: TensorValue, + kv_collection: Union[ + ContinuousBatchingKVCacheCollection, PagedKVCacheCollection + ], + **kwargs, + ) -> TensorValue: + layer_idx = ops.constant(self.layer_idx, DType.uint32) + + # Get attributes from input. + total_seq_len = x.shape[0] + + wqkv = self.wqkv + if self.device: + wqkv = wqkv.to(self.device) + + # Call into fused qkv ragged matmul. + xq = fused_qkv_ragged_matmul_quantized( + self.kv_params, + input=x, + wqkv=wqkv, + input_row_offsets=kwargs["input_row_offsets"], + kv_collection=kv_collection, + layer_idx=layer_idx, + n_heads=self.n_heads, + perm_idx=self.perm_idx, + quantization_config=self.quantization_config, + ) + + # Apply rope. + xq = xq.reshape((-1, self.n_heads, self.kv_params.head_dim)) + + if xq.device is not None: + freqs_cis = ops.cast(self.rope.freqs_cis, xq.dtype).to(xq.device) + else: + freqs_cis = ops.cast(self.rope.freqs_cis, xq.dtype) + + xq = fused_qk_ragged_rope( + self.kv_params, + xq, + kwargs["input_row_offsets"], + kv_collection, + freqs_cis, + layer_idx, + interleaved=self.rope.interleaved, + ) + + # Calculate Flash Attention. + attn_out = flash_attention_ragged( + self.kv_params, + input=xq, + kv_collection=kv_collection, + layer_idx=layer_idx, + input_row_offsets=kwargs["input_row_offsets"], + mask_variant=MHAMaskVariant.CAUSAL_MASK, + scale=self.scale, + ) + attn_out = ops.reshape(attn_out, shape=[total_seq_len, -1]) + + return self.o_proj(attn_out) + + +def distribute_value( + v: TensorValue, devices: List[DeviceRef] +) -> List[TensorValue]: + return [v.to(device) for device in devices] + + +@dataclass +class DistributedAttentionWithRope(DistributedAttentionImpl): + list_of_attentions: List[AttentionWithRope] + devices: list[DeviceRef] + + def __call__( + self, + x: List[TensorValue], + signal_buffers: List[BufferValue], + kv_collections: List[ + ContinuousBatchingKVCacheCollection | PagedKVCacheCollection + ], + **kwargs, + ) -> List[TensorValue]: + input_row_offsets = kwargs["input_row_offsets"] + assert isinstance(input_row_offsets, TensorValue) + input_row_offsets_ = distribute_value(input_row_offsets, self.devices) + + return list( + ops.allreduce.sum( + inputs=[ + self.list_of_attentions[i]( + x[i], + kv_collections[i], + input_row_offsets=input_row_offsets_[i], + ) + for i in range(len(self.devices)) + ], + signal_buffers=signal_buffers, + ) + ) + + +@dataclass +class AttentionWithRopeQKV(AttentionImplQKV): + # This class will not use the RotaryEmbedding to + # calculate rope, but it already includes a freqs_cis + # calculation, which we will borrow + rope: OptimizedRotaryEmbedding + + def __call__( + self, + x: TensorValue, + kv_collection: Union[ + ContinuousBatchingKVCacheCollection, PagedKVCacheCollection + ], + **kwargs, + ) -> TensorValue: + # Get attributes from input. + total_seq_len = x.shape[0] + + wqkv = ops.concat((self.wq, self.wk, self.wv)) + + # Call into fused qkv ragged matmul. + xq = fused_qkv_ragged_matmul( + self.kv_params, + input=x, + wqkv=wqkv, + input_row_offsets=kwargs["input_row_offsets"], + kv_collection=kv_collection, + layer_idx=ops.constant(self.layer_idx, DType.uint32), + n_heads=self.n_heads, + ) + + # Apply rope. + xq = xq.reshape((-1, self.n_heads, self.kv_params.head_dim)) + + # Cast freqs_cis to xq's dtype to match the fused_qk_ragged_rope kernel. + freqs_cis = ops.cast(self.rope.freqs_cis, xq.dtype) + + xq = fused_qk_ragged_rope( + self.kv_params, + xq, + kwargs["input_row_offsets"], + kv_collection, + freqs_cis, + ops.constant(self.layer_idx, DType.uint32), + interleaved=self.rope.interleaved, + ) + + # Calculate Flash Attention. + attn_out = flash_attention_ragged( + self.kv_params, + input=xq, + kv_collection=kv_collection, + layer_idx=ops.constant(self.layer_idx, DType.uint32), + input_row_offsets=kwargs["input_row_offsets"], + mask_variant=MHAMaskVariant.CAUSAL_MASK, + scale=self.scale, + ) + + attn_out = ops.reshape(attn_out, shape=[total_seq_len, -1]) + + return self.wo(attn_out) diff --git a/src/max/pipelines/nn/attention/attention_without_mask.py b/src/max/pipelines/nn/attention/attention_without_mask.py new file mode 100644 index 0000000000..47b368fd53 --- /dev/null +++ b/src/max/pipelines/nn/attention/attention_without_mask.py @@ -0,0 +1,74 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # +"""An opaque KV Cache optimized vanilla attention mechanism, with Mask Variants provided inside the Kernel.""" + +from dataclasses import dataclass +from typing import Union + +from max.graph import TensorValue, ops +from max.pipelines.kv_cache import ( + ContinuousBatchingKVCacheCollection, + PagedKVCacheCollection, +) + +from ..kernels import ( + MHAMaskVariant, + flash_attention_ragged, + fused_qkv_ragged_matmul, +) +from .interfaces import AttentionImpl + + +@dataclass +class AttentionWithoutMask(AttentionImpl): + mask_variant: MHAMaskVariant + + def __call__( + self, + x: TensorValue, + kv_collection: Union[ + ContinuousBatchingKVCacheCollection, PagedKVCacheCollection + ], + **kwargs, + ) -> TensorValue: + # Get attributes from input. + total_seq_len = x.shape[0] + + # Call into fused qkv ragged matmul. + xq = fused_qkv_ragged_matmul( + self.kv_params, + input=x, + wqkv=self.wqkv, + input_row_offsets=kwargs["input_row_offsets"], + kv_collection=kv_collection, + layer_idx=self.layer_idx, + n_heads=self.n_heads, + ) + + # Reshape for flash attention. + xq = xq.reshape((-1, self.n_heads, self.kv_params.head_dim)) + + # Calculate Flash Attention. + attn_out = flash_attention_ragged( + self.kv_params, + input=xq, + kv_collection=kv_collection, + layer_idx=self.layer_idx, + input_row_offsets=kwargs["input_row_offsets"], + mask_variant=self.mask_variant, + scale=self.scale, + ) + + attn_out = ops.reshape(attn_out, shape=[total_seq_len, -1]) + + return self.wo(attn_out) diff --git a/src/max/pipelines/nn/attention/clamp.py b/src/max/pipelines/nn/attention/clamp.py new file mode 100644 index 0000000000..86404eb314 --- /dev/null +++ b/src/max/pipelines/nn/attention/clamp.py @@ -0,0 +1,22 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from max.graph import TensorValue, ops + + +def clamp(x: TensorValue, min: float, max: float) -> TensorValue: + """Clamps values in `x` to `[min, max]`""" + return ops.min( + ops.max(x, ops.constant(min, x.dtype)), + ops.constant(max, x.dtype), + ) diff --git a/src/max/pipelines/nn/attention/interfaces.py b/src/max/pipelines/nn/attention/interfaces.py new file mode 100644 index 0000000000..ba0303cfb2 --- /dev/null +++ b/src/max/pipelines/nn/attention/interfaces.py @@ -0,0 +1,288 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # +"""General interface for Attention.""" + +from __future__ import annotations + +from abc import ABC, abstractmethod +from dataclasses import dataclass + +from max.graph import ( + BufferValue, + TensorValue, + TensorValueLike, +) +from max.pipelines.kv_cache import ( + ContinuousBatchingKVCacheCollection, + KVCacheParams, + PagedKVCacheCollection, +) + +from ..layer import Layer, LayerV2 +from ..linear import Linear + + +@dataclass +class AttentionImpl(Layer, ABC): + """ + A generalized attention interface, that will be used upstream by a general Transformer. + We would expect a seperate subclass, articulating each variation of Attention: + + - AttentionWithRope + - AttentionWithAlibi + - VanillaAttentionWithCausalMask + - ... + + There are a series of shared attributes, however, more may be needed for each individual variant. + For example, we may introduce an OptimizedRotaryEmbedding class for the AttentionWithRope class: + + .. code-block:: python + + @dataclass + class AttentionWithRope(AttentionImpl): + rope: OptimizedRotaryEmbedding + ... + + We expect the ``__call__`` abstractmethod to remain relatively consistent, however the ``**kwargs`` + argument is exposed, allowing you to leverage additional arguments for each particular variant. + For example, we may introduce an VanillaAttentionWithCausalMask class, which includes an attention + mask: + + .. code-block:: python + + @dataclass + class VanillaAttentionWithCausalMask(AttentionImpl): + ... + + def __call__( + self, + x: TensorValueLike, + kv_collection: ContinuousBatchingKVCacheCollection, + valid_lengths: TensorValueLike, + **kwargs, + ) -> tuple[TensorValue, ContinuousBatchingKVCacheCollection]: ... + + if "attn_mask" not in kwargs: + raise ValueError("attn_mask not provided to VanillaAttentionWithCausalMask") + + # Which we can then use the attention mask downstream like so: + op( + attn_mask = kwargs["attn_mask"] + ) + """ + + n_heads: int + """The number of attention heads.""" + + kv_params: KVCacheParams + """KV Cache Params, including the number of kv heads, the head dim, and data type.""" + + layer_idx: TensorValue + """The layer number associated with this Attention block.""" + + wqkv: TensorValue + """The concatenation of q, k, and v weight vectors.""" + + wo: Linear + """A linear layer for the output projection.""" + + scale: float + """The scale factor for the attention.""" + + def __post_init__(self) -> None: + assert self.scale is not None, "scale must be provided to AttentionImpl" + + if not self.kv_params.cache_strategy.uses_opaque(): + raise ValueError( + f"{self.kv_params.cache_strategy} cache strategy, not supported" + " in Attention layer." + ) + + @abstractmethod + def __call__( + self, + x: TensorValue, + kv_collection: ContinuousBatchingKVCacheCollection + | PagedKVCacheCollection, + **kwargs, + ) -> TensorValue: ... + + +class AttentionImplV2(LayerV2, ABC): + """A generalized attention interface, that will be used upstream by a general Transformer. + We would expect a separate subclass, articulating each variation of Attention: + + - AttentionWithRope + - AttentionWithAlibi + - VanillaAttentionWithCausalMask + - ... + + `AttentionImplV2` will replace `AttentionImpl` as we roll out changes to the + Layer API. + + There are a series of shared attributes, however, more may be needed for each individual variant. + For example, we may introduce an OptimizedRotaryEmbedding class for the AttentionWithRope class: + + .. code-block:: python + + @dataclass + class AttentionWithRope(AttentionImplV2): + rope: OptimizedRotaryEmbedding + ... + + We expect the ``__call__`` abstractmethod to remain relatively consistent, however the ``**kwargs`` + argument is exposed, allowing you to leverage additional arguments for each particular variant. + For example, we may introduce an VanillaAttentionWithCausalMask class, which includes an attention + mask: + + .. code-block:: python + + class VanillaAttentionWithCausalMask(AttentionImplV2): + ... + + def __call__( + self, + x: TensorValueLike, + kv_collection: ContinuousBatchingKVCacheCollection, + **kwargs, + ) -> tuple[TensorValue, ContinuousBatchingKVCacheCollection]: ... + + if "attn_mask" not in kwargs: + raise ValueError("attn_mask not provided to VanillaAttentionWithCausalMask") + + # Which we can then use the attention mask downstream like so: + op( + attn_mask = kwargs["attn_mask"] + ) + """ + + @abstractmethod + def __call__( + self, + x: TensorValue, + kv_collection: ContinuousBatchingKVCacheCollection + | PagedKVCacheCollection, + **kwargs, + ) -> TensorValue: ... + + +@dataclass +class DistributedAttentionImpl(Layer, ABC): + """ + A generalized Distributed attention interface. + """ + + @abstractmethod + def __call__( + self, + x: list[TensorValue], + signal_buffers: list[BufferValue], + kv_collections: list[ + ContinuousBatchingKVCacheCollection | PagedKVCacheCollection + ], + **kwargs, + ) -> list[TensorValue]: ... + + +@dataclass +class AttentionImplQKV(Layer, ABC): + """ + A generalized attention interface, that will be used upstream by a general Transformer. + We would expect a seperate subclass, articulating each variation of Attention: + + - AttentionWithRope + - AttentionWithAlibi + - VanillaAttentionWithCausalMask + - ... + + There are a series of shared attributes, however, more may be needed for each individual variant. + For example, we may introduce an OptimizedRotaryEmbedding class for the AttentionWithRope class: + + .. code-block:: python + + @dataclass + class AttentionWithRope(AttentionImpl): + rope: OptimizedRotaryEmbedding + ... + + We expect the ``__call__`` abstractmethod to remain relatively consistent, however the ``**kwargs`` + argument is exposed, allowing you to leverage additional arguments for each particular variant. + For example, we may introduce an VanillaAttentionWithCausalMask class, which includes an attention + mask: + + .. code-block:: python + + @dataclass + class VanillaAttentionWithCausalMask(AttentionImpl): + ... + + def __call__( + self, + x: TensorValueLike, + kv_collection: ContinuousBatchingKVCacheCollection, + valid_lengths: TensorValueLike, + **kwargs, + ) -> tuple[TensorValue, ContinuousBatchingKVCacheCollection]: ... + + if "attn_mask" not in kwargs: + raise ValueError("attn_mask not provided to VanillaAttentionWithCausalMask") + + # Which we can then use the attention mask downstream like so: + op( + attn_mask = kwargs["attn_mask"] + ) + """ + + n_heads: int + """The number of attention heads.""" + + kv_params: KVCacheParams + """KV Cache Params, including the number of kv heads, the head dim, and data type.""" + + layer_idx: int + """The layer number associated with this Attention block.""" + + wq: TensorValueLike + """The q weight vector.""" + + wk: TensorValueLike + """The k weight vector.""" + + wv: TensorValueLike + """The v weight vector.""" + + wo: Linear + """A linear layer for the output projection.""" + + scale: float + """The scale factor for the attention.""" + + def __post_init__(self) -> None: + assert self.scale is not None, ( + "scale must be provided to AttentionImplQKV" + ) + + if not self.kv_params.cache_strategy.uses_opaque(): + raise ValueError( + f"{self.kv_params.cache_strategy} cache strategy, not supported" + " in Attention layer." + ) + + @abstractmethod + def __call__( + self, + x: TensorValue, + kv_collection: ContinuousBatchingKVCacheCollection + | PagedKVCacheCollection, + **kwargs, + ) -> TensorValue: ... diff --git a/src/max/pipelines/nn/attention/naive_attention_with_rope.py b/src/max/pipelines/nn/attention/naive_attention_with_rope.py new file mode 100644 index 0000000000..3f136f167c --- /dev/null +++ b/src/max/pipelines/nn/attention/naive_attention_with_rope.py @@ -0,0 +1,223 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # +"""An attention layer, using only native max graph operations, the naive cache, and ROPE.""" + +from __future__ import annotations + +import math + +from max.dtype import DType +from max.graph import BufferValue, TensorValue, TensorValueLike, ops +from max.pipelines.kv_cache import KVCacheParams + +from ..layer import LayerV2 +from ..linear import Linear, LinearV2 +from ..rotary_embedding import RotaryEmbedding +from .clamp import clamp + + +class NaiveAttentionWithRope(LayerV2): + def __init__( + self, + n_heads: int, + kv_params: KVCacheParams, + dim: int, + wq: Linear | LinearV2, + wk: Linear | LinearV2, + wv: Linear | LinearV2, + wo: Linear | LinearV2, + rope: RotaryEmbedding, + scale: float | None = None, + clip_qkv: float | None = None, + ): + super().__init__() + self.n_heads = n_heads + self.kv_params = kv_params + self.dim = dim + self.q_proj = wq + self.k_proj = wk + self.v_proj = wv + self.o_proj = wo + self.rope = rope + self.scale = ( + scale if scale else math.sqrt(1.0 / self.kv_params.head_dim) + ) + self.clip_qkv = clip_qkv + + if self.kv_params.cache_strategy.uses_opaque(): + raise ValueError( + f"{self.kv_params.cache_strategy} cache strategy, not supported" + " in Attention layer." + ) + + def repeat_kv(self, kv: TensorValue) -> TensorValue: + """Repeats key/value tensors to match the number of query heads.""" + batch = kv.shape[0] + kv = ops.reshape( + kv, + [batch, -1, self.kv_params.n_kv_heads, 1, self.kv_params.head_dim], + ) + + kv = ops.tile( + kv, [1, 1, 1, self.n_heads // self.kv_params.n_kv_heads, 1] + ) + return ops.reshape( + kv, [batch, -1, self.n_heads, self.kv_params.head_dim] + ) + + def attention( + self, + xq: TensorValueLike, + xk: TensorValueLike, + xv: TensorValueLike, + attn_mask: TensorValueLike, + keys: TensorValueLike, + values: TensorValueLike, + ) -> TensorValue: + xq = TensorValue(xq) + xk = TensorValue(xk) + xv = TensorValue(xv) + attn_mask = TensorValue(attn_mask) + keys = TensorValue(keys) + values = TensorValue(values) + + # Broadcast the attention mask across heads. + # Do so in the graph so that the broadcast can be fused downstream ops. + batch, seq_len, post_seq_len = attn_mask.shape + attn_mask = attn_mask.reshape( + (batch, 1, seq_len, post_seq_len) + ).broadcast_to((batch, self.n_heads, seq_len, post_seq_len)) + + keys = keys.transpose(0, 1) + values = values.transpose(0, 1) + + keys = self.repeat_kv(keys) + values = self.repeat_kv(values) + + xq = xq.transpose(1, 2) + keys = keys.transpose(1, 2) + values = values.transpose(1, 2) + + scores = xq @ ops.transpose(keys, 2, 3) + # Note, the graph compiler currently requires the order of operands + # to be `scores * scale` in order to pattern match the fused attention + # operator. + return ( + ops.softmax( + scores * ops.constant(self.scale, dtype=DType.float32) + + attn_mask + ) + @ values + ) + + def __call__( + self, + x: TensorValueLike, + attention_mask: TensorValueLike, + k_cache: BufferValue, + v_cache: BufferValue, + start_pos: TensorValue, + layer_index: int, + ) -> TensorValue: + """Computes attention on x, reusing the KV cache. + + Args: + x: Activations with shape (batch, seq_len, dim). + k_cache: The full keys cache buffer with shape + (max_seq_len, n_layers, max_batch, n_kv_heads, head_dim). + v_cache: The full values cache buffer with shape + (max_seq_len, n_layers, max_batch, n_kv_heads, head_dim). + start_pos: Scalar of the current position in the kv_cache. + + Returns the result of multi-headed self attention on the input. + """ + x = TensorValue(x) + batch, seq_len = x.shape[0], x.shape[1] + # Apply `clip_qkv` before matmuling the weights + if self.clip_qkv: + assert isinstance(self.q_proj.weight, TensorValue) + self.q_proj.weight = clamp( + self.q_proj.weight, min=-self.clip_qkv, max=self.clip_qkv + ) + assert isinstance(self.k_proj.weight, TensorValue) + self.k_proj.weight = clamp( + self.k_proj.weight, min=-self.clip_qkv, max=self.clip_qkv + ) + assert isinstance(self.v_proj.weight, TensorValue) + self.v_proj.weight = clamp( + self.v_proj.weight, min=-self.clip_qkv, max=self.clip_qkv + ) + + xq = self.q_proj(x) + xk = self.k_proj(x) + xv = self.v_proj(x) + + xq = ops.reshape( + xq, [batch, seq_len, self.n_heads, self.kv_params.head_dim] + ) + + xk = ops.reshape( + xk, + [ + batch, + seq_len, + self.kv_params.n_kv_heads, + self.kv_params.head_dim, + ], + ) + xv = ops.reshape( + xv, + [ + batch, + seq_len, + self.kv_params.n_kv_heads, + self.kv_params.head_dim, + ], + ) + + xq = self.rope(xq, start_pos, seq_len) + xk = self.rope(xk, start_pos, seq_len) + + # Write xk and xv back the to cache at start_pos. + # The cache can have a larger max batch size than the current input. + # We slice down to the active batch size. + # cache[start_pos:start_pos+seq_len, layer_index, :batch] = ... + seq_len_val = TensorValue(seq_len) + slice_seq_len = (slice(start_pos, start_pos + seq_len_val), seq_len) + batch_val = TensorValue(batch) + slice_batch = (slice(0, batch_val), batch) + k_cache[slice_seq_len, layer_index, slice_batch] = xk.transpose( + 0, 1 + ).cast(k_cache.dtype) + v_cache[slice_seq_len, layer_index, slice_batch] = xv.transpose( + 0, 1 + ).cast(k_cache.dtype) + + # Then slice the correct keys and values for attention. + # The cache can have a larger max batch size than the current input. + # We slice down to the active batch size. + # ... = cache[0:start_pos+seq_len, layer_index, :batch] + slice_post_seq_len = (slice(0, start_pos + seq_len_val), "post_seq_len") + keys = k_cache[slice_post_seq_len, layer_index, slice_batch].cast( + xq.dtype + ) + values = v_cache[slice_post_seq_len, layer_index, slice_batch].cast( + xq.dtype + ) + + output = ( + self.attention(xq, xk, xv, attention_mask, keys, values) + .transpose(1, 2) + .reshape([batch, seq_len, -1]) + ) + return self.o_proj(output) diff --git a/src/max/pipelines/nn/comm/__init__.py b/src/max/pipelines/nn/comm/__init__.py new file mode 100644 index 0000000000..92288c849d --- /dev/null +++ b/src/max/pipelines/nn/comm/__init__.py @@ -0,0 +1,18 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from .allreduce import Signals + +__all__ = [ + "Signals", +] diff --git a/src/max/pipelines/nn/comm/allreduce.py b/src/max/pipelines/nn/comm/allreduce.py new file mode 100644 index 0000000000..3ab64efaa0 --- /dev/null +++ b/src/max/pipelines/nn/comm/allreduce.py @@ -0,0 +1,51 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # +"""Allreduce module definitions.""" + +from collections.abc import Iterable + +from max.dtype import DType +from max.graph import BufferType, DeviceRef + + +class Signals: + """Signal buffers used for peer-to-peer communication in allreduce. + + Device code uses these buffers by enabling peer-to-peer access. + Then thread blocks use the buffers to implement barriers for + synchronization, and to hold intermediate communication results. + """ + + NUM_BYTES = (1 + 128) * 1024 * 1024 + """The size of the signal buffers used for communication in allreduce.""" + # NOTE: ``NUM_BYTES`` must stay in sync with the size of the ``Signal`` + # Mojo struct + the size of the intermediate buffer for communication. + + devices: list[DeviceRef] + """List of devices that these signals communicate between.""" + + def __init__(self, devices: Iterable[DeviceRef]) -> None: + """ + Args: + devices: Devices between which these signals communicate. + """ + self.devices = list(devices) + + def input_types(self) -> list[BufferType]: + """Gets graph input types corresponding to these signal buffers.""" + return [ + BufferType( + dtype=DType.uint8, shape=(Signals.NUM_BYTES,), device=dev + ) + for dev in self.devices + ] diff --git a/src/max/pipelines/nn/compute_log_probabilities.py b/src/max/pipelines/nn/compute_log_probabilities.py new file mode 100644 index 0000000000..2914c34582 --- /dev/null +++ b/src/max/pipelines/nn/compute_log_probabilities.py @@ -0,0 +1,101 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from __future__ import annotations + +from typing import Callable + +import numpy as np +from max.pipelines import LogProbabilities +from scipy.special import log_softmax # type: ignore + + +def compute_log_probabilities( + get_logits_and_samples: Callable[ + [int, bool], (tuple[np.ndarray, np.ndarray] | None) + ], + batch_top_n: list[int], + batch_echo: list[bool], +) -> list[LogProbabilities | None]: + """Computes the log probabilities. + + Args: + get_logits_and_samples: Callable that takes the batch index and an + `echo` bool and returns the logits and sampled tokens for that batch. + Args: + - batch_index is an int between [0, batch_size) + - echo is whether that item was requested to echo the input tokens. + Returns (None if batch item is empty): + - Logits should have shape = (n_tokens, vocab_size). + - Sampled tokens should have shape = (n_tokens). + batch_top_n: Number of top log probabilities to return per input in + the batch. For any element where `top_n == 0`, the + LogProbabilities is skipped. + batch_echo: Whether to include input tokens in the returned log + probabilities. + + Returns: + Computed log probabilities for each item in the batch. + """ + log_probabilities: list[LogProbabilities | None] = [] + for batch, (top_n, echo) in enumerate(zip(batch_top_n, batch_echo)): + if top_n == 0: + log_probabilities.append(None) + continue + + logits_and_samples = get_logits_and_samples(batch, echo) + if not logits_and_samples: + log_probabilities.append(None) + continue + + logits, samples = logits_and_samples + log_probs = log_softmax(logits, axis=-1) + + # Get top n tokens. + top_n_indices = np.argpartition(log_probs, -top_n, axis=-1)[ + ..., -top_n: + ] + + # Get the log probabilities of each sampled token. + sampled_log_probs = np.take_along_axis( + log_probs, samples.reshape(-1, 1), axis=1 + ).reshape(-1) + + # Store the stats for each sample token. + num_tokens = log_probs.shape[0] + token_log_probabilities = [] + top_log_probabilities = [] + for i in range(num_tokens): + token_log_probabilities.append(sampled_log_probs[i].item()) + + # Compute top n log probs. + top_tokens = {} + for n in range(top_n): + top_token = top_n_indices[i][n] + top_token_logits = log_probs[i][top_token] + top_tokens[top_token] = top_token_logits.item() + + # Include sampled token in the top tokens. + sampled_token = samples[i].item() + top_tokens[sampled_token] = sampled_log_probs[i].item() + + top_log_probabilities.append(top_tokens) + + log_probabilities.append( + LogProbabilities( + token_log_probabilities=token_log_probabilities, + top_log_probabilities=top_log_probabilities, + ) + ) + + return log_probabilities diff --git a/src/max/pipelines/nn/conv.py b/src/max/pipelines/nn/conv.py new file mode 100644 index 0000000000..b7cda54f3e --- /dev/null +++ b/src/max/pipelines/nn/conv.py @@ -0,0 +1,177 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from dataclasses import dataclass +from typing import Optional, Tuple, Union + +from max.graph import TensorValue, TensorValueLike, Weight, ops + +from .layer import Layer + + +@dataclass +class Conv2D(Layer): + """A 2D convolution over an input signal composed of several input + planes. + """ + + filter: TensorValueLike + bias: Optional[TensorValueLike] = None + + stride: Union[int, Tuple[int, int]] = (1, 1) + padding: Union[int, Tuple[int, int, int, int]] = (0, 0, 0, 0) + dilation: Union[int, Tuple[int, int]] = (1, 1) + groups: int = 1 + + def __call__(self, x: TensorValue) -> TensorValue: + # These need to be casted as the underlying ops.conv2d call + # expects them to only be tuple types. + if isinstance(self.stride, int): + self.stride = (self.stride, self.stride) + + if isinstance(self.padding, int): + self.padding = ( + self.padding, + self.padding, + self.padding, + self.padding, + ) + + if isinstance(self.dilation, int): + self.dilation = (self.dilation, self.dilation) + + if ( + isinstance(self.filter, Weight) + and self.filter.quantization_encoding is not None + ): + raise ValueError("Conv1D not implemented with weight quantization.") + return ops.conv2d( + x, + self.filter, + self.stride, + self.dilation, + self.padding, + self.groups, + self.bias, + ) + + +@dataclass +class Conv1D(Layer): + """A 1D convolution over an input signal composed of several input + planes. + """ + + filter: TensorValueLike # [kernel_size, in_channels, out_channels] + bias: Optional[TensorValueLike] = None + + stride: int = 1 + padding: int = 0 + dilation: int = 1 + groups: int = 1 + + def __call__(self, x: TensorValueLike) -> TensorValue: + """ + Args: + x: a tensor of shape [batch_size, length, in_channels] + + Returns: + a tensor of shape [batch_size, new_length, out_channels] + new_length = ((length + 2 * padding - (kernel_size - 1) - 1) / stride) + 1 + """ + # TODO(GEX-327): Support Conv1D in mo rather than implementing it using Conv2D. + # Reshape [batch_size, length, in_channels] to [batch_size, height=1, length, in_channels]. + x = ops.unsqueeze(x, 1) + # Reshape [kernel_size, in_channels, out_channels] to [height=1, kernel_size, in_channels, out_channels]. + filter = ops.unsqueeze(self.filter, 0) + if ( + isinstance(self.filter, Weight) + and self.filter.quantization_encoding is not None + ): + raise ValueError("Conv1D not implemented with weight quantization.") + else: + output = ops.conv2d( + x, + filter, + (1, self.stride), + (1, self.dilation), + (0, 0, self.padding, self.padding), + self.groups, + self.bias, + ) + # Reshape [batch_size, height=1, new_length, out_channels] to [batch_size, new_length, out_channels]. + return ops.squeeze(output, 1) + + +@dataclass +class Conv3D(Layer): + """A 3D convolution over an input signal composed of several input + planes. + """ + + filter: TensorValueLike # [depth, height, width, in_channels / num_groups, out_channels] + bias: Optional[TensorValueLike] = None # [out_channels] + + stride: Union[int, Tuple[int, int, int]] = (1, 1, 1) + padding: Union[int, Tuple[int, int, int, int, int, int]] = ( + 0, + 0, + 0, + 0, + 0, + 0, + ) + dilation: Union[int, Tuple[int, int, int]] = (1, 1, 1) + groups: int = 1 + + def __call__(self, x: TensorValueLike) -> TensorValue: + """ + Args: + x: a tensor of shape [batch_size, length, in_channels] + + Returns: + a tensor of shape [batch_size, new_length, out_channels] + new_length = ((length + 2 * padding - (kernel_size - 1) - 1) / stride) + 1 + """ + # These need to be casted as the underlying ops.conv2d call + # expects them to only be tuple types. + if isinstance(self.stride, int): + self.stride = (self.stride, self.stride, self.stride) + + if isinstance(self.padding, int): + self.padding = ( + self.padding, + self.padding, + self.padding, + self.padding, + self.padding, + self.padding, + ) + + if isinstance(self.dilation, int): + self.dilation = (self.dilation, self.dilation, self.dilation) + + if ( + isinstance(self.filter, Weight) + and self.filter.quantization_encoding is not None + ): + raise ValueError("Conv3D not implemented with weight quantization.") + return ops.conv3d( + x, + self.filter, + self.stride, + self.dilation, + self.padding, + self.groups, + self.bias, + ) diff --git a/src/max/pipelines/nn/embedding.py b/src/max/pipelines/nn/embedding.py new file mode 100644 index 0000000000..fceaa845d3 --- /dev/null +++ b/src/max/pipelines/nn/embedding.py @@ -0,0 +1,255 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from __future__ import annotations + +import math +from dataclasses import dataclass +from typing import Optional + +from max.dtype import DType +from max.graph import ( + BufferValue, + DeviceRef, + TensorValue, + TensorValueLike, + Weight, + ops, +) +from max.graph.quantization import QuantizationEncoding + +from .layer import Layer, LayerV2 + + +@dataclass +class Embedding(Layer): + weights: TensorValueLike + + def __call__(self, indices: TensorValueLike) -> TensorValue: + result = ops.gather(self.weights, indices, axis=0) + if ( + isinstance(self.weights, Weight) + and self.weights.quantization_encoding is not None + ): + result = ops.dequantize(self.weights.quantization_encoding, result) + return result + + +class EmbeddingV2(LayerV2): + """ + A lookup table for embedding integer indices into dense vectors. + + This layer maps each integer index to a dense vector of fixed size. + Embedding weights are stored on the CPU but are moved to the specified + device during the model init phase. + + Example: + + .. code-block:: python + + embedding_layer = EmbeddingV2( + vocab_size=1000, + hidden_dim=256, + dtype=DType.float32, + device=DeviceRef.GPU(), + name="embeddings", + ) + + # Token indices of shape: [batch, ..., num_indices]. + token_indices: TensorValueLike + embeddings = embedding_layer(token_indices) + """ + + weight: Weight + """The embedding weight matrix stored on the CPU. + Model init moves weights to the device specified in :obj:`device`.""" + + device: DeviceRef | None + """The device on which embedding lookup is performed.""" + + def __init__( + self, + vocab_size: int, + hidden_dim: int, + dtype: DType, + device: DeviceRef | None = None, + quantization_encoding: Optional[QuantizationEncoding] = None, + name: Optional[str] = None, + ) -> None: + """Initializes the embedding layer with the given arguments. + + Args: + vocab_size: The number of unique items in the vocabulary. + Indices must be in the range ``[0, vocab_size)``. + hidden_dim: The dimensionality of each embedding vector. + dtype: The data type of the embedding weights. + device: The device where embedding lookups are executed. + Model init transfers the initially CPU-resident weights to this + device. + name: The name identifier for the embedding weight matrix. + """ + super().__init__() + + self.device = device + self.weight = Weight( + name or "weight", + dtype, + shape=(vocab_size, hidden_dim), + device=DeviceRef.CPU() if self.device else None, + quantization_encoding=quantization_encoding, + ) + + def __call__(self, indices: TensorValueLike) -> TensorValue: + """Embeds the input indices by looking up corresponding vectors. + + Args: + indices: A tensor of integer indices to look up. + Each index must be in the range ``[0, vocab_size)``. + + Returns: + A tensor containing the embeddings corresponding to the input + indices. + The result resides on the device specified in :obj:`device`. + """ + weight = self.weight.to(self.device) if self.device else self.weight + result = ops.gather( + TensorValue(weight), + indices, + axis=0, + ) + if self.weight.quantization_encoding is not None: + result = ops.dequantize(self.weight.quantization_encoding, result) + return result + + +class VocabParallelEmbedding(LayerV2): + """ + A lookup table for embedding integer indices into dense vectors. + + This layer works like `nn.Embedding` except the embedding table is sharded + on the vocabulary dimension across all devices. + + Example: + + .. code-block:: python + + embedding_layer = VocabParallelEmbedding( + vocab_size=1000, + hidden_dim=256, + dtype=DType.float32, + device=[DeviceRef.GPU(0), DeviceRef.GPU(1)], + name="embeddings", + ) + + # Token indices of shape: [batch, ..., num_indices]. + token_indices: TensorValueLike + embeddings = embedding_layer(token_indices) + """ + + def __init__( + self, + vocab_size: int, + hidden_dim: int, + dtype: DType, + devices: list[DeviceRef], + quantization_encoding: Optional[QuantizationEncoding] = None, + name: Optional[str] = None, + ): + """ + Args: + vocab_size: The number of unique items in the vocabulary. + Indices must be in the range ``[0, vocab_size)``. + hidden_dim: The dimensionality of each embedding vector. + dtype: The data type of the embedding weights. + devices: The devices where embedding lookups are executed. + Model init transfers the initially CPU-resident weights to this + device. + name: The name identifier for the embedding weight matrix. + """ + super().__init__() + self.vocab_size = vocab_size + self.devices = devices + + self.num_devices = len(self.devices) + self.shard_size = math.ceil(self.vocab_size / self.num_devices) + + # The weight is loaded in with a single op, then copied to each device + # in __call__. + self.weight = Weight( + name or "weight", + dtype, + shape=(vocab_size, hidden_dim), + device=DeviceRef.CPU(), + quantization_encoding=quantization_encoding, + ) + + def __call__( + self, indices: TensorValueLike, signal_buffers: list[BufferValue] + ) -> list[TensorValue]: + """Embeds the input indices by looking up corresponding vectors. + + Args: + indices: A tensor of integer indices to look up. + Each index must be in the range ``[0, vocab_size)``. + + Returns: + A tensor containing the embeddings corresponding to the input + indices. + The result resides on the device specified in :obj:`device`. + """ + # Shard the weight onto each device. + input = TensorValue(indices) + outputs = [ + self._per_device_call(input, n) for n in range(self.num_devices) + ] + return ops.allreduce.sum(outputs, signal_buffers) + + def _per_device_call( + self, indices: TensorValue, device_idx: int + ) -> TensorValue: + """Computes the embeddings for the input indices, for a single device.""" + # Copy a shard from the embedding weights onto the device. + device = self.devices[device_idx] + vocab_start_index = self.shard_size * device_idx + vocab_end_index = min( + self.shard_size * (device_idx + 1), self.vocab_size + ) + embedding_shard = self.weight[vocab_start_index:vocab_end_index].to( + device + ) + + indices = indices.to(device) + # Process indices so that all tokens are between 0 and the shard size. + + # Set up mask so that the 1=tokens within range, 0=tokens out of range. + input_mask = ops.logical_and( + indices >= vocab_start_index, indices < vocab_end_index + ) + + # Tokens that are out of this range are masked out. + indices -= vocab_start_index + + # Apply mask to avoid searching for out-of-bound tokens + indices *= input_mask + + result = ops.gather( + embedding_shard, + indices, + axis=0, + ) + if self.weight.quantization_encoding is not None: + result = ops.dequantize(self.weight.quantization_encoding, result) + result *= ops.cast( + ops.unsqueeze(input_mask, 1), result.dtype + ) # Apply input mask again + return result diff --git a/src/max/pipelines/nn/hooks/__init__.py b/src/max/pipelines/nn/hooks/__init__.py new file mode 100644 index 0000000000..b39c9375e4 --- /dev/null +++ b/src/max/pipelines/nn/hooks/__init__.py @@ -0,0 +1,20 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from .print_hook import PrintHook +from .torch_print_hook import TorchPrintHook + +__all__ = [ + "PrintHook", + "TorchPrintHook", +] diff --git a/src/max/pipelines/nn/hooks/base_print_hook.py b/src/max/pipelines/nn/hooks/base_print_hook.py new file mode 100644 index 0000000000..4241cd88bb --- /dev/null +++ b/src/max/pipelines/nn/hooks/base_print_hook.py @@ -0,0 +1,159 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from __future__ import annotations + +import dataclasses +import os +from abc import ABC, abstractmethod +from collections import Counter +from dataclasses import dataclass +from typing import Any + +from max.pipelines.nn._identity import IdentityMap + + +@dataclass +class LayerInfo: + layer_name: str + call_count: int = 0 + + +class BasePrintHook(ABC): + """Base hook for printing values. + + This class defines a `__call__` method that prints the inputs and outputs. + Only layers that have been saved with `hook.add_layer` will be printed. + + Abstract methods: + - print_value(name, value) -> bool: Override this method to print the value, + and return whether the print was successful. + + Properties: + - export_path: The base path to write values into (can be None). The full + exported path is "{export_path}/{step}". + + Methods: + - __call__(layer, args, kwargs, outputs): Calls `self.print_value`. + - add_layer(layer, name): Stores the name of a layer. + - step(): Can be called to increment the step and update the export path. + - remove(): To be used to remove the hook and run some cleanup steps. + - summarize(): Summarize the total number of tensors printed at each step. + """ + + def __init__(self, export_path: str | None = None): + self._known_layers = IdentityMap() # Maps layer -> LayerInfo + self._export_path = export_path + self._current_step = 0 + # Keep a counter for creating unique layer names. + self._layer_counter: dict[str, int] = Counter() + + # Maps step number -> [list of printed tensors] + self._recorded_prints: dict[int, list[str]] = {} + + def add_layer(self, layer, name): + self._known_layers[layer] = LayerInfo(name) + + @property + def export_path(self) -> str | None: + if self._export_path is None: + return None + return os.path.join(self._export_path, str(self._current_step)) + + def step(self): + self._current_step += 1 + + # Update export path. + if export_path := self.export_path: + os.makedirs(export_path, exist_ok=True) + + # Reset layer call counts. + for info in self._known_layers.values(): + info.call_count = 0 + + def __call__(self, layer, args, kwargs, outputs): + """Print all TensorValues.""" + if layer not in self._known_layers: + # If layer is not yet named, use the class name. + layer_cls = type(layer).__name__ + self._layer_counter[layer_cls] += 1 + layer_name = layer_cls + if self._layer_counter[layer_cls] > 1: + layer_name = f"{layer_name}{self._layer_counter[layer_cls]}" + self._known_layers[layer] = LayerInfo(layer_name) + + # Update call count and get layer name. + info = self._known_layers[layer] + info.call_count += 1 + if info.call_count > 1: + debug_name = f"{info.layer_name}({info.call_count})" + else: + debug_name = info.layer_name + + # Print input args and kwargs + for n, arg in enumerate(args): + self.print_and_record(f"{debug_name}-input_{n}", arg) + for key, value in kwargs.items(): + self.print_and_record(f"{debug_name}-input_{key}", value) + + # Print outputs. + if self.print_and_record(f"{debug_name}-output", outputs): + pass + elif isinstance(outputs, (list, tuple)): + for n, out in enumerate(outputs): + self.print_and_record(f"{debug_name}-output_{n}", out) + elif dataclasses.is_dataclass(outputs): + for field in dataclasses.fields(outputs): + self.print_and_record( + f"{debug_name}-output_{field.name}", + getattr(outputs, field.name), + ) + else: + print( + f"Was not able to write outputs from {debug_name} (output type" + f" was {type(outputs)})" + ) + + def print_and_record(self, name: str, value: Any) -> bool: + """Runs self.print_value and records the tensor if printed.""" + print_success = self.print_value(name, value) + if print_success: + if self._current_step not in self._recorded_prints: + self._recorded_prints[self._current_step] = [] + self._recorded_prints[self._current_step].append(name) + return print_success + + @abstractmethod + def print_value(self, name: str, value: Any) -> bool: + """Prints a value, and returns whether the print is successful.""" + raise NotImplementedError + + def summarize(self): + action = "Printed" + if self.export_path: + action = "Saved" + + tensors_printed = False + for step, tensors in self._recorded_prints.items(): + print(f"{action} {len(tensors)} tensors for step {step}.") + tensors_printed = tensors_printed or bool(len(tensors)) + + if not tensors_printed: + print("No tensors exported.") + elif self._export_path: + print(f"Tensors exported to {self._export_path}") + + def remove(self): + # Clean up export_path if it's empty. + if (export_path := self.export_path) and not os.listdir(export_path): + os.rmdir(export_path) diff --git a/src/max/pipelines/nn/hooks/identity.py b/src/max/pipelines/nn/hooks/identity.py new file mode 100644 index 0000000000..eeb038c45a --- /dev/null +++ b/src/max/pipelines/nn/hooks/identity.py @@ -0,0 +1,71 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # +"""Utility classes for using objects as keys in data structures.""" + +from collections.abc import MutableMapping, MutableSet + + +# From https://stackoverflow.com/questions/16994307/identityset-in-python +class IdentitySet(MutableSet): + """Set that uses object `id` as keys to support unhashable types.""" + + def __init__(self, iterable=()): + self.map = {} # id -> object + self |= iterable # add elements from iterable to the set (union) + + def __len__(self): + return len(self.map) + + def __iter__(self): + return iter(self.map.values()) + + def __contains__(self, x): + return id(x) in self.map + + def add(self, value): + """Add an element.""" + self.map[id(value)] = value + + def discard(self, value): + """Remove an element. Do not raise an exception if absent.""" + self.map.pop(id(value), None) + + def __repr__(self): + if not self: + return "%s()" % (self.__class__.__name__,) + return "%s(%r)" % (self.__class__.__name__, list(self)) + + +class IdentityMap(MutableMapping): + """Map that uses object `id` as keys to support unhashable types.""" + + def __init__(self): + self.key_map = {} # id -> object + self.value_map = {} # id -> Value + + def __getitem__(self, key): + return self.value_map[id(key)] + + def __setitem__(self, key, value): + self.key_map[id(key)] = key + self.value_map[id(key)] = value + + def __delitem__(self, key): + del self.key_map[id(key)] + del self.value_map[id(key)] + + def __iter__(self): + return iter(self.key_map.values()) + + def __len__(self): + return len(self.key_map) diff --git a/src/max/pipelines/nn/hooks/print_hook.py b/src/max/pipelines/nn/hooks/print_hook.py new file mode 100644 index 0000000000..845a6c0c3a --- /dev/null +++ b/src/max/pipelines/nn/hooks/print_hook.py @@ -0,0 +1,91 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # +"""Print hook for MAX Pipeline models.""" + +from __future__ import annotations + +import logging +import os +from collections import deque +from typing import Any, Optional, Tuple + +from max.graph import TensorValue +from max.pipelines.nn._identity import IdentitySet +from max.pipelines.nn.layer import Layer, add_layer_hook, clear_hooks + +from .base_print_hook import BasePrintHook + +logger = logging.getLogger("max.pipelines") + + +class PrintHook(BasePrintHook): + """Hook that prints/saves layer tensor inputs and outputs. + + This class must be initialized added before the graph is built so the + print ops can be added to the graph. + """ + + def __init__(self, export_path: Optional[str] = None): + super().__init__(export_path=export_path) + add_layer_hook(self) + if export_path is not None: + logger.warning( + "Export path is currently not supported. Values will be printed" + " to stdout with COMPACT format." + ) + + def name_layers(self, model: Layer): + """Create names for all layers in the model based on nested attributes.""" + for layer, name in _walk_layers(model): + self.add_layer(layer, name) + + @property + def export_path(self) -> Optional[str]: + if self._export_path is None: + return None + return os.path.join(self._export_path, str(self._current_step)) + + def print_value(self, name: str, value: Any) -> bool: + if isinstance(value, TensorValue): + value.print(name) + return True + return False + + def remove(self): + super().remove() + clear_hooks() # TODO: Add individual hook remover. + + def __del__(self): + self.summarize() + + +_SUPPORTED_TYPES = (Layer, list, tuple) + + +def _walk_layers(model): + """Walks through model and yields all layers with generated names.""" + seen = IdentitySet() + seen.add(model) + queue: deque[Tuple[Any, str]] = deque([(model, "model")]) + + while queue: + obj, name = queue.popleft() + if isinstance(obj, Layer): + yield obj, name + for k, v in obj.__dict__.items(): + if v not in seen or isinstance(v, _SUPPORTED_TYPES): + queue.append((v, f"{name}.{k}")) + elif isinstance(obj, (list, tuple)): + for n, v in enumerate(obj): + if v not in seen or isinstance(v, _SUPPORTED_TYPES): + queue.append((v, f"{name}.{n}")) diff --git a/src/max/pipelines/nn/hooks/torch_print_hook.py b/src/max/pipelines/nn/hooks/torch_print_hook.py new file mode 100644 index 0000000000..1decc2677c --- /dev/null +++ b/src/max/pipelines/nn/hooks/torch_print_hook.py @@ -0,0 +1,69 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # +"""Print hook for torch models.""" + +from __future__ import annotations + +import os +from typing import Any + +import torch + +from .base_print_hook import BasePrintHook + + +class TorchPrintHook(BasePrintHook): + """A torch-compatible print hook.""" + + _handle: torch.utils.hooks.RemovableHandle + """A handle used to remove the forward hook registered by this class.""" + + def __init__(self, export_path: str | None = None): + super().__init__(export_path) + self._handle = torch.nn.modules.module.register_module_forward_hook( + self + ) + + if export_path := self.export_path: + os.makedirs(export_path, exist_ok=True) + + def name_layers(self, model: torch.nn.Module): + """Create names for all layers in the model.""" + for module_name, module in model.named_modules(): + name = f"model.{module_name}" if module_name else "model" + self.add_layer(module, name) + + @property + def export_path(self) -> str | None: + if self._export_path is None: + return None + return os.path.join(self._export_path, str(self._current_step)) + + def __call__(self, module, args, outputs) -> None: # type: ignore + super().__call__(module, args, kwargs={}, outputs=outputs) + + def print_value(self, name: str, value: Any) -> bool: + if isinstance(value, torch.Tensor): + if export_path := self.export_path: + full_path = f"{export_path}/{name}.pt" + torch.save(value, full_path) + else: + print(name, value) + return True + return False + + def remove(self): + super().remove() + + if self._handle: + self._handle.remove() diff --git a/src/max/pipelines/nn/kernels.py b/src/max/pipelines/nn/kernels.py new file mode 100644 index 0000000000..476491da17 --- /dev/null +++ b/src/max/pipelines/nn/kernels.py @@ -0,0 +1,910 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # +"""Helper functions for wrapping custom kv cache/attention related ops.""" + +from __future__ import annotations + +from dataclasses import dataclass +from enum import Enum + +import numpy as np +from max.dtype import DType +from max.graph import Dim, TensorType, TensorValue, TensorValueLike, ops +from max.graph.quantization import QuantizationConfig +from max.pipelines.kv_cache import ( + ContinuousBatchingKVCacheCollection, + KVCacheParams, + KVCacheStrategy, + PagedKVCacheCollection, +) + + +def fused_qkv_ragged_matmul( + kv_params: KVCacheParams, + input: TensorValue, + input_row_offsets: TensorValue, + wqkv: TensorValue, + kv_collection: ContinuousBatchingKVCacheCollection | PagedKVCacheCollection, + layer_idx: TensorValue, + n_heads: int, + bias: TensorValue | None = None, +) -> TensorValue: + """Computes fused query, key, and value projections with ragged input. + + `input` and `input_row_offsets` are used together to implement the ragged + tensor. + `input_row_offsets` indicates where each batch starts and ends in `input` + + Raises: + ValueError: on input shapes/dtypes that are invalid for the kernel. + """ + if input.dtype != wqkv.dtype: + msg = ( + "expected input and wqkv to have the same dtype, but got" + f" {input.dtype} and {wqkv.dtype}, respectively." + ) + raise ValueError(msg) + + input_rank_expected = 2 + if input.rank != input_rank_expected: + msg = f"expected input to have rank {input_rank_expected}, was {input.rank}" + raise ValueError(msg) + + if input_row_offsets.dtype != DType.uint32: + msg = ( + "expected input_row_offsets to have dtype uint32, was" + f" {input_row_offsets.dtype}" + ) + raise ValueError(msg) + + if layer_idx.dtype != DType.uint32: + msg = f"expected layer_idx to have dtype uint32, was {layer_idx.dtype}" + raise ValueError(msg) + + if kv_params.cache_strategy not in { + KVCacheStrategy.CONTINUOUS, + KVCacheStrategy.PAGED, + }: + msg = f"unsupported cache strategy for fused_qkv_ragged_matmul: {kv_params.cache_strategy}" + raise ValueError(msg) + + parameters: dict[str, int | str | DType] = { + "num_heads": kv_params.n_kv_heads_per_device, + "head_dim": kv_params.head_dim, + } + if kv_params.cache_strategy == KVCacheStrategy.PAGED: + assert kv_params.page_size is not None + parameters["page_size"] = int(kv_params.page_size) + + cache_strategy_str = kv_params.cache_strategy.kernel_substring() + + if bias: + op_name = f"mo.fused_qkv_matmul.ragged.{cache_strategy_str}.bias" + + return ops.inplace_custom( + op_name, + values=[ + input, + input_row_offsets, + wqkv, + kv_collection, + layer_idx, + bias, + ], + out_types=[ + TensorType( + dtype=input.dtype, + shape=input.shape[:-1] + [n_heads * kv_params.head_dim], + device=input.device, + ) + ], + parameters=parameters, + )[0].tensor + + op_name = f"mo.fused_qkv_matmul.ragged.{cache_strategy_str}" + + return ops.inplace_custom( + op_name, + values=[input, input_row_offsets, wqkv, kv_collection, layer_idx], + out_types=[ + TensorType( + dtype=input.dtype, + shape=input.shape[:-1] + [n_heads * kv_params.head_dim], + device=input.device, + ) + ], + parameters=parameters, + )[0].tensor + + +def fused_qkv_ragged_matmul_quantized( + kv_params: KVCacheParams, + input: TensorValue, + input_row_offsets: TensorValue, + wqkv: TensorValue, + kv_collection: ContinuousBatchingKVCacheCollection | PagedKVCacheCollection, + layer_idx: TensorValue, + n_heads: int, + quantization_config: QuantizationConfig, + perm_idx: TensorValue | None = None, + bias: TensorValue | None = None, +) -> TensorValue: + """Computes fused query, key, and value projections with ragged input and + quantized weight matrices. A `quantization_config` must be provided. + + `input` and `input_row_offsets` are used together to implement the ragged + tensor. + `input_row_offsets` indicates where each batch starts and ends in `input` + + Raises: + ValueError: on input shapes/dtypes that are invalid for the kernel. + """ + + input_rank_expected = 2 + if input.rank != input_rank_expected: + msg = f"expected input to have rank {input_rank_expected}, was {input.rank}" + raise ValueError(msg) + + if input_row_offsets.dtype != DType.uint32: + msg = ( + "expected input_row_offsets to have dtype uint32, was" + f" {input_row_offsets.dtype}" + ) + raise ValueError(msg) + + if layer_idx.dtype != DType.uint32: + msg = f"expected layer_idx to have dtype uint32, was {layer_idx.dtype}" + raise ValueError(msg) + + if kv_params.cache_strategy not in { + KVCacheStrategy.CONTINUOUS, + KVCacheStrategy.PAGED, + }: + msg = f"unsupported cache strategy for fused_qkv_ragged_matmul: {kv_params.cache_strategy}" + raise ValueError(msg) + + # In the group-wise quantization scheme, every `group_size` quantized weights + # share the same scale. If `has_zp` is `True`, there is also a group-wise zero + # point that need to be substracted from the quantized weights. + # Since the new extensibility API doesn't currently support `bool` type parameters, + # we pass `has_zp` as an interger (`has_zp_int`). + # For GPTQ, `has_zp_int` will always be 0. + parameters: dict[str, int | str | DType] = { + "num_heads": kv_params.n_kv_heads_per_device, + "head_dim": kv_params.head_dim, + "group_size": quantization_config.group_size, + "has_zp_int": 0, + } + if perm_idx: + input = ops.gather(input, TensorValue(perm_idx), axis=1) + wqkv = ops.custom( + "GPTQ_gpu_repack_b4_g128_desc_act", + list((wqkv, perm_idx)), + out_types=[ + TensorType( + DType.uint8, + ((wqkv.shape[1], wqkv.shape[0])), + ) + ], + )[0].tensor + else: + wqkv = ops.custom( + "GPTQ_gpu_repack_b4_g128", + list((wqkv,)), + out_types=[ + TensorType( + DType.uint8, + ((wqkv.shape[1], wqkv.shape[0])), + ) + ], + )[0].tensor + + if kv_params.cache_strategy == KVCacheStrategy.PAGED: + assert kv_params.page_size is not None + parameters["page_size"] = int(kv_params.page_size) + + cache_strategy_str = kv_params.cache_strategy.kernel_substring() + + args = [input, input_row_offsets, wqkv, kv_collection, layer_idx] + if bias: + args.append(bias) + bias_name_str = "bias." + else: + bias_name_str = "" + + op_name = f"mo.fused_qkv_matmul.ragged.{cache_strategy_str}.{bias_name_str}quantized" + + return ops.inplace_custom( + op_name, + values=args, + out_types=[ + TensorType( + dtype=input.dtype, + shape=input.shape[:-1] + [n_heads * kv_params.head_dim], + device=input.device, + ) + ], + parameters=parameters, + )[0].tensor + + +def fused_qkv_matmul( + kv_params: KVCacheParams, + input: TensorValue, + wqkv: TensorValue, + kv_collection: ContinuousBatchingKVCacheCollection, + layer_idx: TensorValue, + n_heads: int, +) -> TensorValue: + """Computes fused query, key and value projections.""" + if input.dtype != wqkv.dtype: + msg = ( + "expected input and wqkv to have the same dtype, but got" + f" {input.dtype} and {wqkv.dtype}, respectively." + ) + raise ValueError(msg) + + input_rank_expected = 3 + if input.rank != input_rank_expected: + msg = f"expected input to have rank {input_rank_expected}, was {input.rank}" + raise ValueError(msg) + + wqkv_rank_expected = 2 + if wqkv.rank != wqkv_rank_expected: + msg = ( + f"expected wqkv to have rank {wqkv_rank_expected}, was {wqkv.rank}" + ) + raise ValueError(msg) + + if layer_idx.dtype != DType.uint32: + msg = f"expected layer_idx to have dtype uint32, was {layer_idx.dtype}" + raise ValueError(msg) + + if kv_params.cache_strategy != KVCacheStrategy.CONTINUOUS: + msg = f"unsupported cache strategy for fused_qkv_matmul: {kv_params.cache_strategy}" + raise ValueError(msg) + + cache_strategy_str = kv_params.cache_strategy.kernel_substring() + op_name = f"mo.fused_qkv_matmul.padded.{cache_strategy_str}" + + return ops.inplace_custom( + op_name, + values=[input, wqkv, kv_collection, layer_idx], + out_types=[ + TensorType( + dtype=input.dtype, + shape=input.shape[:-1] + [n_heads * kv_params.head_dim], + device=input.device, + ) + ], + parameters={ + "num_heads": kv_params.n_kv_heads_per_device, + "head_dim": kv_params.head_dim, + }, + )[0].tensor + + +def matmul_kv_cache_ragged( + kv_params: KVCacheParams, + hidden_states: TensorValue, + input_row_offsets: TensorValue, + weight: TensorValue, + kv_collection: ContinuousBatchingKVCacheCollection, + layer_idx: int | np.integer, +) -> None: + """Computes key and value projections with ragged input. + + `hidden_states` and `input_row_offsets` are used together to + implement the ragged tensor. + `input_row_offsets` indicates where each batch starts and ends in `input` + """ + if hidden_states.dtype != weight.dtype: + msg = ( + "expected hidden_states and weight to have the same dtype, but got" + f" {hidden_states.dtype} and {weight.dtype}, respectively." + ) + raise ValueError(msg) + + hidden_states_rank_expected = 2 + if hidden_states.rank != hidden_states_rank_expected: + msg = ( + "expected hidden_states to have rank " + f"{hidden_states_rank_expected}, was {hidden_states.rank}" + ) + raise ValueError(msg) + + if input_row_offsets.dtype != DType.uint32: + msg = ( + "expected input_row_offsets to have dtype uint32, was" + f" {input_row_offsets.dtype}" + ) + raise ValueError(msg) + + if kv_params.cache_strategy != KVCacheStrategy.CONTINUOUS: + msg = f"unsupported cache strategy for matmul_kv_cache_ragged: {kv_params.cache_strategy}" + raise ValueError(msg) + + parameters: dict[str, int | str | DType] = { + "num_heads": kv_params.n_kv_heads_per_device, + "head_dim": kv_params.head_dim, + } + if kv_params.cache_strategy == KVCacheStrategy.PAGED: + assert kv_params.page_size is not None + parameters["page_size"] = kv_params.page_size + + cache_strategy_str = kv_params.cache_strategy.kernel_substring() + op_name = f"mo.kv_matmul.ragged.{cache_strategy_str}" + + ops.inplace_custom( + name=op_name, + values=[ + hidden_states, + input_row_offsets, + weight, + kv_collection, + ops.constant(layer_idx, DType.uint32), + ], + parameters=parameters, + ) + + +def fused_qk_ragged_rope( + kv_params: KVCacheParams, + input: TensorValue, + input_row_offsets: TensorValue, + kv_collection: ContinuousBatchingKVCacheCollection | PagedKVCacheCollection, + freqs_cis: TensorValue, + layer_idx: TensorValue, + interleaved: bool = True, +) -> TensorValue: + """Computes fused query-key attention with rotary positional encodings and ragged inputs. + + `input` and `input_row_offsets` are used together to implement the ragged tensor. + `input_row_offsets` indicates where each batch starts and ends in `input` + """ + + if input.dtype != freqs_cis.dtype: + msg = ( + "expected input and freqs_cis to share a dtype, but got" + f" {input.dtype} and {freqs_cis.dtype} respectively" + ) + raise ValueError(msg) + + if input_row_offsets.dtype != DType.uint32: + msg = ( + "expected input_row_offsets to have dtype uint32, was" + f" {input_row_offsets.dtype}" + ) + + if layer_idx.dtype != DType.uint32: + msg = f"expected layer_idx to have dtype uint32, was {layer_idx.dtype}" + raise ValueError(msg) + + if kv_params.cache_strategy not in { + KVCacheStrategy.CONTINUOUS, + KVCacheStrategy.PAGED, + }: + msg = f"unsupported cache strategy for fused_qk_ragged_rope: {kv_params.cache_strategy}" + raise ValueError(msg) + + parameters: dict[str, bool | int | str | DType] = { + "num_heads": kv_params.n_kv_heads_per_device, + "head_dim": kv_params.head_dim, + "interleaved": interleaved, + } + if kv_params.cache_strategy == KVCacheStrategy.PAGED: + assert kv_params.page_size is not None + parameters["page_size"] = kv_params.page_size + + cache_strategy_str = kv_params.cache_strategy.kernel_substring() + op_name = f"mo.fused_qk_rope.ragged.{cache_strategy_str}" + + return ops.inplace_custom( + op_name, + values=[input, input_row_offsets, kv_collection, freqs_cis, layer_idx], + out_types=[ + TensorType( + dtype=input.dtype, shape=input.shape, device=input.device + ) + ], + parameters=parameters, + )[0].tensor + + +def fused_qk_rope( + kv_params: KVCacheParams, + input: TensorValue, + kv_collection: ContinuousBatchingKVCacheCollection, + freqs_cis_2d: TensorValue, + layer_idx: TensorValue, + interleaved: bool = True, +) -> TensorValue: + """Computes fused query-key attention with rotary positional encodings.""" + input_rank_expected = 4 + if input.rank != input_rank_expected: + msg = ( + f"expected input of rank {input_rank_expected} but got {input.rank}" + ) + raise ValueError(msg) + + freqs_cis_rank_expected = 2 + if freqs_cis_2d.rank != freqs_cis_rank_expected: + msg = ( + f"expected freqs_cis_2d of rank {freqs_cis_rank_expected} but got " + f"{freqs_cis_2d.rank}" + ) + raise ValueError(msg) + + if layer_idx.dtype != DType.uint32: + msg = f"expected uint32 layer_idx but got {layer_idx.dtype}" + raise ValueError(msg) + + if kv_params.cache_strategy != KVCacheStrategy.CONTINUOUS: + msg = f"unsupported cache strategy for fused_qk_rope: {kv_params.cache_strategy}" + raise ValueError(msg) + + parameters: dict[str, bool | int | str | DType] = { + "num_heads": kv_params.n_kv_heads_per_device, + "head_dim": kv_params.head_dim, + "interleaved": interleaved, + } + if kv_params.cache_strategy == KVCacheStrategy.PAGED: + assert kv_params.page_size is not None + parameters["page_size"] = kv_params.page_size + + cache_strategy_str = kv_params.cache_strategy.kernel_substring() + op_name = f"mo.fused_qk_rope.padded.{cache_strategy_str}" + + return ops.inplace_custom( + op_name, + values=[input, kv_collection, freqs_cis_2d, layer_idx], + out_types=[ + TensorType( + dtype=input.dtype, shape=input.shape, device=input.device + ) + ], + parameters=parameters, + )[0].tensor + + +def flash_attention( + kv_params: KVCacheParams, + input: TensorValue, + kv_collection: ContinuousBatchingKVCacheCollection, + layer_idx: TensorValue, + attention_mask: TensorValue, + valid_lengths: TensorValue, + scale: float, +) -> TensorValue: + """Computes flash attention provided the mo.opaque KV Cache.""" + input_rank_expected = 4 + if input.rank != input_rank_expected: + msg = ( + f"expected input of rank {input_rank_expected} but got {input.rank}" + ) + raise ValueError(msg) + + if layer_idx.dtype != DType.uint32: + msg = f"expected uint32 layer_idx but got {layer_idx.dtype}" + raise ValueError(msg) + + if attention_mask.dtype != input.dtype: + msg = ( + f"expected attention mask dtype {attention_mask.dtype} to match " + f"the input's dtype {input.dtype}" + ) + raise ValueError(msg) + + if valid_lengths.dtype != DType.uint32: + msg = f"expected uint32 valid_lengths but got {valid_lengths.dtype}" + raise ValueError(msg) + + if kv_params.cache_strategy != KVCacheStrategy.CONTINUOUS: + msg = f"unsupported cache strategy for flash_attention: {kv_params.cache_strategy}" + raise ValueError(msg) + + cache_strategy_str = kv_params.cache_strategy.kernel_substring() + op_name = f"mo.mha.padded.{cache_strategy_str}.tensor_mask.no_pos" + + return ops.inplace_custom( + op_name, + values=[ + input, + kv_collection, + layer_idx, + attention_mask, + valid_lengths, + # NOTE: The scale argument to the flash attention kernel is + # constrained to float32. + ops.constant(scale, dtype=DType.float32), + ], + out_types=[ + TensorType( + dtype=input.dtype, shape=input.shape, device=input.device + ) + ], + parameters={ + "num_heads": kv_params.n_kv_heads_per_device, + "head_dim": kv_params.head_dim, + }, + )[0].tensor + + +def flash_attention_with_causal_mask( + kv_params: KVCacheParams, + input: TensorValue, + kv_collection: ContinuousBatchingKVCacheCollection, + layer_idx: TensorValue, + valid_lengths: TensorValue, + scale: float, +) -> TensorValue: + """Computes flash attention provided the mo.opaque KV Cache. + Notably, materializes the causal mask within the kernel.""" + + if input.shape[0] != valid_lengths.shape[0]: + msg = ( + "expected batch size of input, to equal length of valid_lengths" + f" got batch size of input ({input.shape[0]}), length of" + f" valid_lengths ({valid_lengths.shape[0]})" + ) + raise ValueError(msg) + + if input.dtype != kv_params.dtype: + msg = ( + f"expected input to be dtype: {kv_params.dtype}, got {input.dtype}" + ) + raise ValueError(msg) + + if layer_idx.dtype != DType.uint32: + msg = f"expected uint32 layer_idx but got {layer_idx.dtype}" + raise ValueError(msg) + + if valid_lengths.dtype != DType.uint32: + msg = f"expected uint32 valid_lengths but got {valid_lengths.dtype}" + raise ValueError(msg) + + if kv_params.cache_strategy != KVCacheStrategy.CONTINUOUS: + msg = f"unsupported cache strategy for flash_attention_with_causal_mask: {kv_params.cache_strategy}" + raise ValueError(msg) + + cache_strategy_str = kv_params.cache_strategy.kernel_substring() + op_name = f"mo.mha.padded.{cache_strategy_str}.causal_mask.no_pos" + + return ops.inplace_custom( + op_name, + values=[ + input, + kv_collection, + layer_idx, + valid_lengths, + # NOTE: The scale argument to flash attention is constrained to float32. + ops.constant(scale, dtype=DType.float32), + ], + out_types=[ + TensorType( + dtype=input.dtype, shape=input.shape, device=input.device + ) + ], + parameters={ + "num_heads": kv_params.n_kv_heads_per_device, + "head_dim": kv_params.head_dim, + }, + )[0].tensor + + +@dataclass +class MHAMaskConfig: + attention_mask_variant: AttentionMaskVariant + positional_encoding_variant: PositionalEncodingVariant + + +class AttentionMaskVariant(str, Enum): + NULL_MASK = "null_mask" + CAUSAL_MASK = "causal_mask" + TENSOR_MASK = "tensor_mask" + + +class PositionalEncodingVariant(str, Enum): + NO_POS = "no_pos" + ALIBI_POS = "alibi_pos" + + +class MHAMaskVariant(str, Enum): + CAUSAL_MASK = 0 + CAUSAL_ALIBI_MASK = 1 + NULL_MASK = 2 + + +_MHA_MASK_CONFIG_DICT = { + MHAMaskVariant.CAUSAL_MASK: MHAMaskConfig( + attention_mask_variant=AttentionMaskVariant.CAUSAL_MASK, + positional_encoding_variant=PositionalEncodingVariant.NO_POS, + ), + MHAMaskVariant.CAUSAL_ALIBI_MASK: MHAMaskConfig( + attention_mask_variant=AttentionMaskVariant.CAUSAL_MASK, + positional_encoding_variant=PositionalEncodingVariant.ALIBI_POS, + ), + MHAMaskVariant.NULL_MASK: MHAMaskConfig( + attention_mask_variant=AttentionMaskVariant.NULL_MASK, + positional_encoding_variant=PositionalEncodingVariant.NO_POS, + ), +} + + +def flash_attention_ragged( + kv_params: KVCacheParams, + input: TensorValue, + input_row_offsets: TensorValue, + kv_collection: ContinuousBatchingKVCacheCollection | PagedKVCacheCollection, + layer_idx: TensorValue, + mask_variant: MHAMaskVariant, + scale: float, +) -> TensorValue: + """Computes flash (self) attention provided the `!mo.opaque` KV Cache. + + Notably, this materializes the attention mask (dependent on MHAMaskVariant) + within the kernel. + `input` and `input_row_offsets` are used together to implement the ragged + tensor. + `input_row_offsets` indicates where each batch starts and ends in `input` + + Note that this is self attention and the KV sequence length is + assumed to be equal to the Q sequence length. + For KV sequence length != Q sequence length, use `cross_attention_ragged`. + """ + input_rank_expected = 3 + if input.rank != input_rank_expected: + msg = ( + f"expected input of rank {input_rank_expected} but got {input.rank}" + ) + raise ValueError(msg) + + if input.dtype != kv_params.dtype: + msg = ( + f"expected input to be dtype: {kv_params.dtype}, got {input.dtype}" + ) + raise ValueError(msg) + + if layer_idx.dtype != DType.uint32: + msg = f"expected uint32 layer_idx but got {layer_idx.dtype}" + raise ValueError(msg) + + if input_row_offsets.dtype != DType.uint32: + msg = f"expected uint32 input_row_offsets but got {input_row_offsets.dtype}" + raise ValueError(msg) + + if kv_params.cache_strategy not in { + KVCacheStrategy.CONTINUOUS, + KVCacheStrategy.PAGED, + }: + msg = f"unsupported cache strategy for flash_attention_ragged: {kv_params.cache_strategy}" + raise ValueError(msg) + + parameters: dict[str, int | str | DType] = { + "num_heads": kv_params.n_kv_heads_per_device, + "head_dim": kv_params.head_dim, + } + if kv_params.cache_strategy == KVCacheStrategy.PAGED: + assert kv_params.page_size is not None + parameters["page_size"] = kv_params.page_size + + cache_strategy_str = kv_params.cache_strategy.kernel_substring() + mha_mask_config = _MHA_MASK_CONFIG_DICT[mask_variant] + op_name = f"mo.mha.ragged.{cache_strategy_str}.{str(mha_mask_config.attention_mask_variant.value)}.{str(mha_mask_config.positional_encoding_variant.value)}" + + return ops.inplace_custom( + op_name, + values=[ + input, + input_row_offsets, + kv_collection, + layer_idx, + # NOTE: The scale argument to flash attention is constrained to float32. + ops.constant(scale, dtype=DType.float32), + ], + out_types=[ + TensorType( + dtype=input.dtype, shape=input.shape, device=input.device + ) + ], + parameters=parameters, + )[0].tensor + + +def cross_attention_ragged( + kv_params: KVCacheParams, + input: TensorValue, + input_row_offsets: TensorValue, + kv_collection: ContinuousBatchingKVCacheCollection | PagedKVCacheCollection, + layer_idx: TensorValue, + mask_variant: MHAMaskVariant, + kv_input_row_offsets: TensorValue, + q_max_seq_len: TensorValue, + scale: float, +) -> TensorValue: + """Computes cross attention provided the `!mo.opaque` KV Cache. + + Notably, this materializes the attention mask (dependent on MHAMaskVariant) + within the kernel. + `input` and `input_row_offsets` are used together to implement the ragged + tensor. + `input_row_offsets` indicates where each batch starts and ends in `input` + + attention, `kv_input_row_offsets` represents the KV sequence length. + """ + input_rank_expected = 3 + if input.rank != input_rank_expected: + msg = ( + f"expected input of rank {input_rank_expected} but got {input.rank}" + ) + raise ValueError(msg) + + if input.dtype != kv_params.dtype: + msg = ( + f"expected input to be dtype: {kv_params.dtype}, got {input.dtype}" + ) + raise ValueError(msg) + + if layer_idx.dtype != DType.uint32: + msg = f"expected uint32 layer_idx but got {layer_idx.dtype}" + raise ValueError(msg) + + if input_row_offsets.dtype != DType.uint32: + msg = f"expected uint32 input_row_offsets but got {input_row_offsets.dtype}" + raise ValueError(msg) + + if kv_params.cache_strategy not in { + KVCacheStrategy.CONTINUOUS, + KVCacheStrategy.PAGED, + }: + msg = f"unsupported cache strategy for cross_attention_ragged: {kv_params.cache_strategy}" + raise ValueError(msg) + + if q_max_seq_len and (q_max_seq_len.dtype != DType.uint32): + msg = ( + "expected q_max_seq_len to be uint32 but got {q_max_seq_len.dtype}" + ) + raise ValueError(msg) + + parameters: dict[str, int | str | DType] = { + "num_heads": kv_params.n_kv_heads_per_device, + "head_dim": kv_params.head_dim, + } + if kv_params.cache_strategy == KVCacheStrategy.PAGED: + assert kv_params.page_size is not None + parameters["page_size"] = kv_params.page_size + + cache_strategy_str = kv_params.cache_strategy.kernel_substring() + mha_mask_config = _MHA_MASK_CONFIG_DICT[mask_variant] + op_name = f"mo.cross_attention.ragged.{cache_strategy_str}.{str(mha_mask_config.attention_mask_variant.value)}.{str(mha_mask_config.positional_encoding_variant.value)}" + + return ops.inplace_custom( + op_name, + values=[ + input, + input_row_offsets, + # Plumb in the query max sequence length for cross attention. + # For self attention this is the same as the KV max seq len stored + # on the kv_collection, but that isn't the case for cross attention. + q_max_seq_len, + kv_input_row_offsets, + kv_collection, + layer_idx, + # NOTE: The scale argument to flash attention is constrained to float32. + ops.constant(scale, dtype=DType.float32), + ], + out_types=[ + TensorType( + dtype=input.dtype, shape=input.shape, device=input.device + ) + ], + parameters=parameters, + )[0].tensor + + +def swish_glu( + a: TensorValueLike, b0: TensorValueLike, b1: TensorValueLike +) -> TensorValue: + """Computes swish(a@b0.t()) * (a@b1.t())""" + a = TensorValue(a) + b0 = TensorValue(b0) + b1 = TensorValue(b1) + a_rank_expected = 2 + if a.rank != a_rank_expected: + msg = f"expected a to have rank {a_rank_expected}, was {a.rank}" + raise ValueError(msg) + + b0_rank_expected = 2 + if b0.rank != b0_rank_expected: + msg = f"expected b0 to have rank {b0_rank_expected}, was {b0.rank}" + raise ValueError(msg) + + b1_rank_expected = 2 + if b1.rank != b1_rank_expected: + msg = f"expected b1 to have rank {b1_rank_expected}, was {b1.rank}" + raise ValueError(msg) + + m = a.shape[0] + n = b0.shape[0] + if b0.shape[1] != a.shape[1]: + msg = f"a.shape[1] == {a.shape[1]} != {b0.shape[1]} == b0.shape[1]" + raise ValueError(msg) + + if b0.shape != b1.shape: + msg = f"b0.shape == {b0.shape} != {b1.shape} == b1.shape" + raise ValueError(msg) + + if a.dtype != b0.dtype or a.dtype != b1.dtype: + msg = ( + "Element types of all arguments must be equal, but received" + f" {a.dtype}, {b0.dtype}, and {b1.dtype}." + ) + raise ValueError(msg) + + return ops.custom( + "swishGLU", + values=[a, b0, b1], + out_types=[ + TensorType( + dtype=a.dtype, + shape=[m, n], + device=a.device, + ) + ], + )[0].tensor + + +def rms_norm_key_cache( + kv_params: KVCacheParams, + kv_collection: ContinuousBatchingKVCacheCollection, + gamma: TensorValue, + epsilon: float | np.floating, + layer_idx: int | np.integer, + total_seq_len: Dim, + input_row_offsets: TensorValue, +) -> None: + """Computes RMSNorm on the _new_ entries in the KVCache. + + Currently, the KVCacheT class itself isn't aware of the new cache entries + until cache length increment, which happens after model forward. + So use `input_row_offsets` to do this bookkeeping. + """ + cache_strategy_str = kv_params.cache_strategy.kernel_substring() + op_name = f"mo.rms_norm_kv_cache.ragged.{cache_strategy_str}" + + gamma_rank_expected = 1 + if gamma.rank != gamma_rank_expected: + msg = ( + f"expected gamma of rank {gamma_rank_expected} but got {gamma.rank}" + ) + raise ValueError(msg) + + if input_row_offsets.dtype != DType.uint32: + msg = f"expected uint32 input_row_offsets but got {input_row_offsets.dtype}" + raise ValueError(msg) + + ops.inplace_custom( + op_name, + values=[ + kv_collection, + gamma, + ops.constant(epsilon, gamma.dtype), + ops.constant(layer_idx, DType.uint32), + ops.cast(TensorValue.from_dim(total_seq_len), DType.uint32), + input_row_offsets, + ], + parameters={ + "num_heads": kv_params.n_kv_heads_per_device, + "head_dim": kv_params.head_dim, + }, + ) diff --git a/src/max/pipelines/nn/layer/__init__.py b/src/max/pipelines/nn/layer/__init__.py new file mode 100644 index 0000000000..d3a8fc44a9 --- /dev/null +++ b/src/max/pipelines/nn/layer/__init__.py @@ -0,0 +1,30 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from .layer import ( + Layer, + LayerV2, + add_layer_hook, + clear_hooks, + recursive_named_layers, +) +from .layer_list import LayerList + +__all__ = [ + "Layer", + "LayerV2", + "add_layer_hook", + "clear_hooks", + "recursive_named_layers", + "LayerList", +] diff --git a/src/max/pipelines/nn/layer/layer.py b/src/max/pipelines/nn/layer/layer.py new file mode 100644 index 0000000000..3b76c479b6 --- /dev/null +++ b/src/max/pipelines/nn/layer/layer.py @@ -0,0 +1,423 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from __future__ import annotations + +import difflib +import threading +from abc import ABC, abstractmethod +from collections import deque +from dataclasses import dataclass +from functools import wraps +from inspect import signature +from typing import ( + Any, + Callable, + Dict, + Iterable, + Mapping, + Tuple, + Union, + get_args, +) + +import numpy as np +from max.driver import DLPackArray, Tensor +from max.dtype import DType +from max.graph import DeviceRef, ShapeLike, TensorValue, Weight +from max.graph.quantization import QuantizationEncoding +from max.graph.weights import WeightData + +from .._identity import IdentitySet + +DLPackCompatible = Union[DLPackArray, np.ndarray] + + +@dataclass +class ShardingStrategy: + """Defines how to load and shard a weight onto multiple devices.""" + + host_device: DeviceRef + shard_value: Callable[[Weight], tuple[TensorValue, ...]] + + +class Layer: + """Base Layer class. + + Currently, only functionality is for adding hooks to the call function of + each layer to support testing, debugging or profiling. + """ + + def __init_subclass__(cls): + if cls.__name__ == "LayerV2": + # LayerV2 subclasses Layer, but we don't want to apply + # _call_with_hooks to it. + return + # Check `__dict__` instead of `hasattr` because `hasattr` passes on + # subclasses that don't implement the method. + if "__call__" in cls.__dict__: + setattr(cls, "__call__", _call_with_hooks(cls.__dict__["__call__"])) + + def __call__(self, *args, **kwargs): + """Defines the forward function of this layer. + + Subclasses must override this function. There is no exact signature that a + call function must follow, but inputs/outputs should generally be + `max.graph.TensorValue`. Non-`TensorValue` inputs are fine, but + cannot be updated once the graph is built. + """ + + +class LayerV2(Layer, ABC): + """(new) Base class for model layers with weight and device management. + + This will be merged with the above class once all layers have been moved to + V2. + """ + + def __init__(self): + # `__init__` may be called if `__setattr__` is called before + # `super().__init__()`. So, to avoid resetting the values, first + # check to see if the layer has been initialized before. + if not hasattr(self, "_sublayers"): + self._sublayers: dict[str, LayerV2] = {} + self._layer_weights: dict[str, Weight] = {} + self._weight_values: dict[str, DLPackCompatible] = {} + self._shared_weights: dict[str, Weight] = {} + + # Update device list and sharding strategy to a singular object + # similar to a partition spec. + self._devices: tuple[DeviceRef, ...] = () + self._sharding_strategy: ShardingStrategy | None = None + + def __setattr__(self, name, value): + try: + if isinstance(value, LayerV2): + self._sublayers[name] = value + if self._devices or self._sharding_strategy: + value.to( + *self._devices, + sharding_strategy=self._sharding_strategy, + ) + elif isinstance(value, Weight): + self._layer_weights[value.name] = value + except AttributeError: + # The layer didn't call `super().__init__()` first thing. + LayerV2.__init__(self) + self.__setattr__(name, value) + return + super().__setattr__(name, value) + + def __repr__(self): + # TODO: Make this pretty + return f"{type(self).__name__}({len(self.sublayers)} layers, {len(self.layer_weights)} weights)" + + def to( + self, + *devices: DeviceRef, + sharding_strategy: ShardingStrategy | None = None, + ) -> None: + if len(self._devices) > 1 and not sharding_strategy: + raise ValueError( + "Must provide a sharding strategy if multiple devices are provided." + ) + + for _, layer in recursive_named_layers(self): + layer._devices = devices + layer._sharding_strategy = sharding_strategy + + @property + def layer_weights(self) -> dict[str, Weight]: + return self._layer_weights + + def __delattr__(self, name: str): + self._sublayers.pop(name, None) + self._layer_weights.pop(name, None) + self._shared_weights.pop(name, None) + super().__delattr__(name) + + def set_shared_weight(self, name: str, weight: Weight): + setattr(self, name, weight) + self._shared_weights[name] = weight + + @property + def sublayers(self) -> dict[str, LayerV2]: + return self._sublayers + + def load_state_dict( + self, + state_dict: Mapping[str, DLPackCompatible | WeightData], + *, + override_quantization_encoding: bool = False, + ) -> None: + """Sets the values of all weights in this model. + + Args: + state_dict: A map from weight name to a numpy array or + max.driver.Tensor. + override_quantization_encoding: Whether to override the weight + quantization based on the loaded value. + + Raises: + Error if any weight in the model is not present in the state dict. + """ + for name, layer in recursive_named_layers(self): + weight_prefix = f"{name}." if name else "" + for weight_name, weight in layer.layer_weights.items(): + # Skip the shared weights, since their values are loaded with + # the original layers. + if weight_name in layer._shared_weights: + continue + full_weight_name = f"{weight_prefix}{weight_name}" + if (data := state_dict.get(full_weight_name)) is not None: + if isinstance(data, WeightData): + data = _array_from_weight_loader( + weight, + data, + override_quantization_encoding, + full_weight_name, + ).data + else: + _validate_weight_value(weight, data, full_weight_name) + self._weight_values[full_weight_name] = data + weight.name = full_weight_name + else: + msg = f"Could not find weight '{full_weight_name}'. " + if possible_match := difflib.get_close_matches( + full_weight_name, state_dict.keys(), n=1 + ): + msg += f" Did you mean '{possible_match[0]}'?" + raise ValueError() + + def state_dict( + self, auto_initialize: bool = True + ) -> dict[str, DLPackCompatible]: + """Returns values of all weights in the model. + + The values returned are the same as the values set in `load_state_dict`. + If `load_state_dict` has not been called and none of the weights have + values, then they are initialized to zero. + + Args: + auto_initialize: Determines whether to initialize weights to zero if + the weight value has not been loaded. If this is False, a + ValueError is raised if an uninitialized weight is found. + + Returns: + Map from weight name to the weight value (can be numpy array or + max.driver.Tensor). + """ + + state_dict = {} + for full_weight_name, weight in self.raw_state_dict().items(): + if (data := self._weight_values.get(full_weight_name)) is None: + if not auto_initialize: + raise ValueError( + f"Weight '{full_weight_name}' was not initialized." + ) + data = self._weight_values[full_weight_name] = Tensor.zeros( + weight.shape.static_dims, weight.dtype + ) + state_dict[full_weight_name] = data + return state_dict + + def raw_state_dict(self) -> dict[str, Weight]: + """Returns all weights objects in the model. + Unlike `state_dict`, this returns `max.graph.Weight` objects instead of + the assigned values. Some parameters inside the `Weight` can be + configured before a graph is built. Do not change these attributes after + building a graph: + + - Weight.shape + - Weight.dtype + - Weight.quantization_encoding + - Weight.device + - Weight.align + + Returns: + Map from weight name to the `max.graph.Weight` object. + """ + state_dict = {} + for name, layer in recursive_named_layers(self): + prefix = f"{name}." if name else "" + + for weight_name, weight in layer.layer_weights.items(): + state_dict[f"{prefix}{weight_name}"] = weight + return state_dict + + @abstractmethod + def __call__(self, *args, **kwargs): + """Defines the forward function of this layer. + + Subclasses must override this function. There is no exact signature that a + call function must follow, but inputs/outputs should generally be + `max.graph.TensorValue`. Non-`TensorValue` inputs are fine, but + cannot be updated once the graph is built. + """ + + +def _array_from_weight_loader( + weight: Weight, + data: WeightData, + override_quantization_encoding: bool, + name: str, +) -> WeightData: + """Processes and validates the data from WeightData.""" + + if weight.quantization_encoding == QuantizationEncoding.GPTQ: + # Load all weights with GPTQ quantization as uint8. + # Store the original shape and dtype of the weight (used in layers like + # GPTLinear). + weight.original_dtype_and_shape = (data.dtype, data.shape) + data = data.view(DType.uint8) + else: + data = data.astype(weight.dtype) + + if weight.quantization_encoding: + # TODO: Set the quantized weight shape correctly when initializing the + # weight. For now, we trust that the value loaded from the checkpoint + # has the correct shape. + weight._shape = data.shape + elif weight.shape != data.shape: + raise ValueError( + f"Value provided to weight '{name}' had different shape" + f" (expected={weight.shape}, actual={data.shape})" + ) + + if weight.quantization_encoding != data.quantization_encoding: + if override_quantization_encoding: + weight.quantization_encoding = data.quantization_encoding + # We don't raise an error if `override_quantization_encoding` is `False` + # because in some cases the data is not aware of its own quantization + # type (e.g. data loaded from GPTQ Safetensors do not have a + # quantization label) + return data.astype(weight.dtype) + + +def _get_value_shape_dtype(value: DLPackCompatible) -> tuple[ShapeLike, DType]: + if isinstance(value, Tensor): + shape = value.shape + dtype = value.dtype + elif isinstance(value, np.ndarray): + shape = value.shape + dtype = DType.from_numpy(value.dtype) + else: + # `from_dlpack` does not copy the data. + value_tensor = Tensor.from_dlpack(value) + shape = value_tensor.shape + dtype = value_tensor.dtype + + return shape, dtype + + +def _validate_weight_value(weight: Weight, value: Any, name: str) -> None: + if not isinstance(value, get_args(DLPackCompatible)): + raise ValueError( + f"The class type of '{name}' value ({type(value)}) is not an array " + "type that we understand. Please use a numpy array or max.driver.Tensor." + ) + + shape, dtype = _get_value_shape_dtype(value) + + diffs = [] + weight_shape = tuple(weight.shape.static_dims) + if shape != weight_shape: + diffs.append(f"shape (expected={weight_shape}, actual={shape})") + if dtype != weight.dtype: + diffs.append(f"dtype (expected={weight.dtype}, actual={dtype})") + if diffs: + diff_str = " and ".join(diffs) + raise ValueError( + f"Value provided to weight '{name}' had different {diff_str}." + ) + + +def recursive_named_layers( + parent: LayerV2, prefix: str = "" +) -> Iterable[tuple[str, LayerV2]]: + """Recursively walks through the layers and generates names.""" + seen = IdentitySet() + queue: deque[tuple[str, LayerV2]] = deque() + queue.append((prefix, parent)) + + while queue: + name, layer = queue.popleft() + if layer in seen: + continue + seen.add(layer) + + yield (name, layer) + prefix = f"{name}." if name else "" + for local_name, layer in layer.sublayers.items(): + queue.append((f"{prefix}{local_name}", layer)) + + +_LOCAL = threading.local() +_LAYER_HOOKS = _LOCAL._layer_hooks = [] + + +def add_layer_hook( + fn: Callable[[Layer, Tuple[Any, ...], Dict[str, Any], Any], Any], +) -> None: + """Adds a hook to call a function after each layer's `__call__`. + + The function will be passed four inputs: the layer, input_args, + input_kwargs and outputs. The function can either return `None` or new + outputs that will replace the layer returned outputs. + + Note that input and outputs contain graph Values, which show limited + information (like shape and dtype). You can still see the computed values + if you include the Value in the `graph.output` op, or call `value.print`. + + Example of printing debug inputs: + + .. code-block:: python + + def print_info(layer, args, kwargs, outputs): + print("Layer:", type(layer).__name__) + print("Input args:", args) + print("Input kwargs:", kwargs) + print("Outputs:", outputs) + return outputs + + add_layer_hook(print_info) + """ + _LAYER_HOOKS.append(fn) + + +def clear_hooks(): + """Remove all hooks.""" + _LAYER_HOOKS.clear() + + +def _call_with_hooks(call_fn): + @wraps(call_fn) + def __call_with_hooks(layer, *args, **kwargs): + # Hide this wrapper from rich traceback. + _rich_traceback_omit = True + + outputs = call_fn(layer, *args, **kwargs) + # Use the inspect lib to ensure that args and kwargs are passed + # to the hook as defined in the function signature. + bound_args = signature(call_fn).bind(layer, *args, **kwargs) + for hook in _LAYER_HOOKS: + # Call the hook. Note that the first argument in `bound_args.args` + # is the layer, so it is skipped. + hook_outputs = hook( + layer, bound_args.args[1:], bound_args.kwargs, outputs + ) + if hook_outputs is not None: + outputs = hook_outputs + return outputs + + return __call_with_hooks diff --git a/src/max/pipelines/nn/layer/layer_list.py b/src/max/pipelines/nn/layer/layer_list.py new file mode 100644 index 0000000000..1f0aad4d82 --- /dev/null +++ b/src/max/pipelines/nn/layer/layer_list.py @@ -0,0 +1,77 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from typing import Sequence + +from max.graph import TensorValue + +from .layer import Layer, LayerV2 + + +class LayerList(LayerV2): + """Stores a list of layers. + + Can be used as a regular python list.""" + + def __init__(self, layers: Sequence[Layer]): + super().__init__() + self.layers = list(layers) + + # Only assign `LayerV2` objects to Sequential.sublayers. We ensure that + # the V2 functionality (getting sublayers) is correct by throwing + # an error in the `sublayers` property if any layer is still V1. + for n, layer in enumerate(layers): + if isinstance(layer, LayerV2): + self._sublayers[str(n)] = layer + + @property + def sublayers(self) -> dict[str, LayerV2]: + if len(self._sublayers) != len(self.layers): + raise ValueError( + "Not all layers in this Sequential object have " + "been migrated to V2." + ) + return super().sublayers + + def __len__(self): + return len(self.layers) + + def __getitem__(self, i: int) -> Layer: + return self.layers[i] + + def __delitem__(self, i: int): + del self.layers[i] + + def __setitem__(self, i: int, layer: Layer): + self.layers[i] = layer + + def insert(self, i, layer: Layer): + self.layers.insert(i, layer) + + def append(self, layer: Layer): + self.layers.append(layer) + + def extend(self, layer: Layer): + self.layers.append(layer) + + def __str__(self): + return str(self.layers) + + def __iter__(self): + return iter(self.layers) + + def __call__(self, *args, **kwargs) -> TensorValue: + x = self.layers[0](*args, **kwargs) + for layer in self.layers[1:]: + x = layer(x) + return x diff --git a/src/max/pipelines/nn/linear.py b/src/max/pipelines/nn/linear.py new file mode 100644 index 0000000000..dd6a625af0 --- /dev/null +++ b/src/max/pipelines/nn/linear.py @@ -0,0 +1,555 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +"""Multi-layer Perceptron.""" + +from __future__ import annotations + +from dataclasses import dataclass +from typing import Optional + +import numpy as np +from max.dtype import DType +from max.graph import ( + BufferValue, + DeviceRef, + TensorValue, + TensorValueLike, + Weight, + ops, +) +from max.graph.quantization import QuantizationConfig, QuantizationEncoding +from max.graph.weights import Weights + +from .kernels import swish_glu +from .layer import Layer, LayerV2 + + +class LinearV2(LayerV2): + """ + Applies a linear transformation to incoming data: :math:`y = xW^T + b`. + + This layer implements a fully connected layer where inputs are multiplied + by a weight matrix and optionally added with a bias vector. + Both weights and bias initially reside on CPU, and the model init phase + moves them to :obj:`device`. + + Example: + + .. code-block:: python + + linear_layer = LinearV2( + in_dim=256, + out_dim=128, + dtype=DType.float32, + device=DeviceRef.GPU(), + name="linear", + has_bias=True + ) + + # Input tensor of shape: [batch, ..., 256] + input_tensor: TensorValue + output = linear_layer(input_tensor) + """ + + weight: Weight | TensorValue + """The weight matrix stored on CPU with shape (out_dim, in_dim). + Model init transposes the weight and moves it to :obj:`device`.""" + + bias: Weight | None = None + """The optional bias vector stored on CPU with shape (out_dim,). + Model init moves the bias to :obj:`device` if present.""" + + device: DeviceRef | None + """The device where matrix operations are performed.""" + + def __init__( + self, + in_dim: int, + out_dim: int, + dtype: DType, + device: DeviceRef | None = None, + has_bias: bool = False, + quantization_encoding: Optional[QuantizationEncoding] = None, + name: Optional[str] = None, + ) -> None: + """Initializes the linear layer with weights and optional bias. + + Args: + in_dim: The dimensionality of the input space. + out_dim: The dimensionality of the output space. + dtype: The data type for both weights and bias. + device: The target device for computation. + Weights remain on CPU until moved during computation. + name: Base name for weights (appended with ``.weight`` and + ``.bias`` if applicable). + has_bias: When :obj:`True`, adds a bias vector to the layer. + Defaults to :obj:`False`. + """ + super().__init__() + + self.device = device + + self.weight = Weight( + name=f"{name}.weight" if name else "weight", + dtype=dtype, + shape=(out_dim, in_dim), + device=DeviceRef.CPU() if self.device else None, + quantization_encoding=quantization_encoding, + ) + self.quantization_encoding = quantization_encoding + + if has_bias: + self.bias = Weight( + name=f"{name}.bias" if name else "bias", + dtype=dtype, + shape=(out_dim,), + device=DeviceRef.CPU() if self.device else None, + quantization_encoding=quantization_encoding, + ) + + def __call__(self, x: TensorValue) -> TensorValue: + """Applies a linear transformation to the input data. + + Args: + x: Input tensor of shape ``(..., in_dim)``. + The last dimension must match the layer's ``in_dim``. + The input tensor must reside on :obj:`device`. + + Returns: + Output tensor of shape ``(..., out_dim)``. + The result resides on the device specified in :obj:`device`. + + Raises: + ValueError: If the last dimension of ``x`` doesn't match ``in_dim``. + """ + weight: TensorValue = self.weight + if self.device: + weight = weight.to(self.device) + + if self.quantization_encoding: + res = ops.qmatmul( + self.quantization_encoding, + None, + x, + weight, + ) + else: + res = x @ weight.T + if self.bias is not None: + bias = self.bias.to(self.device) if self.device else self.bias + res += bias + return res + + +def _allocate_if_needed(value: Weights | Weight, dtype, shape) -> Weight: + if isinstance(value, Weight): + return value + else: + return value.weight.allocate(dtype, shape) + + +@dataclass +class Linear(Layer): + """A unified linear layer that delegates to either regular or quantized implementation.""" + + weight: TensorValueLike + bias: Optional[TensorValueLike] = None + + def __call__(self, x: TensorValue) -> TensorValue: + weight = TensorValue(self.weight) + res = x @ weight.T + if self.bias is not None: + res += self.bias + return res + + @classmethod + def create( + cls, + dtype: DType, + quantization_encoding: Optional[QuantizationEncoding], + in_features: int, + out_features: int, + weights: Weights | Weight, + bias: Optional[Weights | Weight] = None, + quantization_config: Optional[QuantizationConfig] = None, + ) -> "Linear": + """Factory method to create a Linear layer with appropriate implementation.""" + if not quantization_encoding: + weight = _allocate_if_needed( + weights, dtype, [in_features, out_features] + ) + bias_weight = ( + _allocate_if_needed(bias, dtype, [out_features]) + if bias + else None + ) + return Linear(weight=weight, bias=bias_weight) + else: + return QLinear._create( + dtype, + quantization_encoding, + in_features, + out_features, + weights, + bias, + quantization_config, + ) + + +@dataclass +class QLinear(Linear): + """A quantized fully connected layer.""" + + # Because Linear.bias is optional and Linear is a dataclass and we inherit from Linear, all our fields must be optional even if it doesn't make logical sense + quantization_encoding: QuantizationEncoding | None = None + + @classmethod + def _create( + cls, + dtype: DType, + quantization_encoding: QuantizationEncoding, + in_features: int, + out_features: int, + weights: Weights | Weight, + bias: Optional[Weights | Weight], + quantization_config: Optional[QuantizationConfig], + ) -> "Linear": + if quantization_encoding != QuantizationEncoding.GPTQ: + weight = _allocate_if_needed( + weights, dtype, [in_features, out_features] + ) + bias_weight = ( + _allocate_if_needed(bias, dtype, [out_features]) + if bias + else None + ) + return QLinear( + weight=weight, + bias=bias_weight, + # GGUF weights can have different quantization per weight + quantization_encoding=weight.quantization_encoding, + ) + else: + return GPTQLinear._create( + dtype, + quantization_encoding, + in_features, + out_features, + weights, + bias, + quantization_config, + ) + + def __call__(self, x: TensorValue) -> TensorValue: + assert self.quantization_encoding is not None + weight = TensorValue(self.weight) + res = ops.qmatmul( + self.quantization_encoding, + None, + x, + weight, + ) + if self.bias is not None: + res += TensorValue(self.bias) + return res + + +@dataclass +class GPTQLinear(QLinear): + "A Linear layer for GPTQ encoding" + + # Because QLinear has optional fields, so must we, since we subclass QLinear + quantization_config: QuantizationConfig | None = None + perm_idx: Optional[TensorValueLike] | None = None + + @classmethod + def _create( + cls, + dtype: DType, + quantization_encoding: QuantizationEncoding, + in_features: int, + out_features: int, + weights: Weights | Weight, + bias: Optional[Weights | Weight], + quantization_config: Optional[QuantizationConfig], + ) -> "Linear": + """Internal method to create a Linear layer from GPTQ weights.""" + + assert quantization_config, ( + "QuantizationConfig must be provided for GPTQLinear" + ) + + assert quantization_config.sym, "GPTQ with sym=False is not supported." + + desc_act = quantization_config.desc_act + + perm_idx = None + + if isinstance(weights, Weights) and weights.qweight.exists(): + orig_quantized_weights = [weights.qweight, weights.scales] + quantized_weights = [] + for idx, qw in enumerate(orig_quantized_weights): + orig = qw.allocate() + # TODO(AITLIB-135): allocate_as_bytes is only available for + # safetensors. This isn't a problem right now because gptq is + # only present for safetensors + weight_bytes = qw.allocate_as_bytes() # type: ignore + assert len(orig.shape) == 2 + reshaped = ops.reshape( + weight_bytes, + (orig.shape[0] * orig.dtype.size_in_bytes, orig.shape[1]), + ).transpose(0, 1) + quantized_weights.append(reshaped) + + weight = ops.concat( + (quantized_weights[0], quantized_weights[1]), axis=1 + ).transpose(0, 1) + + if desc_act: + perm_idx = weights.g_idx.allocate( + DType.int32, + [out_features], + ) + # hack: argsort the perm_idx array + weights._allocated[perm_idx.name] = np.argsort( # type: ignore + weights._allocated[perm_idx.name] # type: ignore + ).astype(np.int32) + + return GPTQLinear( + weight=weight, + bias=None, + quantization_encoding=quantization_encoding, + quantization_config=quantization_config, + perm_idx=perm_idx, + ) + + else: + weight = _allocate_if_needed( + weights, DType.bfloat16, [in_features, out_features] + ) + bias_weight = ( + _allocate_if_needed(bias, dtype, [out_features]) + if bias + else None + ) + return Linear(weight, bias_weight) + + def __call__(self, x: TensorValue) -> TensorValue: + assert self.quantization_encoding is not None + weight = TensorValue(self.weight) + if self.perm_idx is not None: + perm_idx = TensorValue(self.perm_idx) + res = ops.qmatmul( + self.quantization_encoding, + self.quantization_config, + ops.gather(x, perm_idx, axis=(x.rank - 1)), + weight, + perm_idx, + ) + else: + res = ops.qmatmul( + self.quantization_encoding, + self.quantization_config, + x, + weight, + ) + if self.bias is not None: + res += TensorValue(self.bias) + return res + + +@dataclass +class GPTQLinearV2(LinearV2): + "A Linear layer for GPTQ encoding" + + def __init__( + self, + in_dim: int, + out_dim: int, + dtype: DType, + device: DeviceRef | None = None, + has_bias: bool = False, + quantization_encoding: Optional[QuantizationEncoding] = None, + quantization_config: Optional[QuantizationConfig] = None, + ) -> None: + """Initializes the linear layer with weights and optional bias with + GPTQ quantization. + + Args: + in_dim: The dimensionality of the input space. + out_dim: The dimensionality of the output space. + dtype: The data type for both weights and bias. + device: The target device for computation. + Weights remain on CPU until moved during computation. + has_bias: When :obj:`True`, adds a bias vector to the layer. + Defaults to :obj:`False`. + quantization_encoding: The quantization encoding of the weights. + quantization_config: Extra config for the weight quantization. + """ + del out_dim, dtype # Unused. + if has_bias: + raise ValueError("has_bias=True is not supported in GPTQLinear.") + + # Skip LinearV2 initialization. + LayerV2.__init__(self) + self.device = device + self.qweight = Weight( + name="qweight", + dtype=DType.uint8, + shape=(1, 1), # Shape will be overridden at load_state_dict. + device=DeviceRef.CPU() if device else None, + quantization_encoding=quantization_encoding, + ) + self.scales = Weight( + name="scales", + dtype=DType.uint8, + shape=(1, 1), # Shape will be overridden at load_state_dict. + device=DeviceRef.CPU() if device else None, + quantization_encoding=quantization_encoding, + ) + + assert quantization_config, ( + "QuantizationConfig must be provided for GPTQLinear" + ) + assert quantization_config.sym, "GPTQ with sym=False is not supported." + + self.quantization_config = quantization_config + + desc_act = self.quantization_config.desc_act + self.perm_idx = None + if desc_act: + self.perm_idx = Weight( + "perm_idx", + DType.int32, + [in_dim], + device=DeviceRef.CPU() if device else None, + ) + + def __call__(self, x: TensorValue) -> TensorValue: + assert self.qweight.quantization_encoding is not None + qweight_dtype, qweight_shape = self.qweight.original_dtype_and_shape + qweight = ops.reshape( + self.qweight, + (qweight_shape[0] * qweight_dtype.size_in_bytes, qweight_shape[1]), + ).transpose(0, 1) + + scales_dtype, scales_shape = self.scales.original_dtype_and_shape + scales = ops.reshape( + self.scales, + (scales_shape[0] * scales_dtype.size_in_bytes, scales_shape[1]), + ).transpose(0, 1) + weight = ops.concat((qweight, scales), axis=1).transpose(0, 1) + if self.device: + weight = weight.to(self.device) + if self.perm_idx is not None: + perm_idx: TensorValue = self.perm_idx + if self.device: + perm_idx = perm_idx.to(self.device) + + res = ops.qmatmul( + self.qweight.quantization_encoding, + self.quantization_config, + ops.gather(x, self.perm_idx, axis=(x.rank - 1)), + weight, + self.perm_idx, + ) + else: + res = ops.qmatmul( + self.qweight.quantization_encoding, + None, + x, + weight, + ) + if self.bias is not None: + res += TensorValue(self.bias) + return res + + +@dataclass +class MLP(Layer): + """ + Simple multi-layer perceptron composed of three linear layers. + Uses SiLU activation function. + """ + + gate_proj: Linear + down_proj: Linear + up_proj: Linear + + def __call__(self, x: TensorValueLike) -> TensorValue: + if ( + self.gate_proj.bias is None + and self.up_proj.bias is None + and TensorValue(x).rank == 2 + and TensorValue(x).device is not None + and TensorValue(x).device != DeviceRef.CPU() + and False # GEX-1476: This causes elaboration errors - disable swish_glu pathway. + ): + return self.down_proj( + swish_glu( + x, + self.gate_proj.weight, + self.up_proj.weight, + ) + ) + + return self.down_proj(ops.silu(self.gate_proj(x)) * self.up_proj(x)) # type: ignore + + +@dataclass +class MLPV2(LayerV2): + """ + Simple multi-layer perceptron composed of three linear layers. + Uses SiLU activation function. + """ + + gate_proj: LinearV2 + down_proj: LinearV2 + up_proj: LinearV2 + + def __post_init__(self): + super().__init__() + + def __call__(self, x: TensorValueLike) -> TensorValue: + if ( + self.gate_proj.bias is None + and self.up_proj.bias is None + and TensorValue(x).rank == 2 + and TensorValue(x).device is not None + and TensorValue(x).device != DeviceRef.CPU() + and False # GEX-1476: This causes elaboration errors - disable swish_glu pathway. + ): + return self.down_proj( + swish_glu( + x, + self.gate_proj.weight, + self.up_proj.weight, + ) + ) + + return self.down_proj( + ops.silu(self.gate_proj(x)) * self.up_proj(x) # type: ignore + ) + + +@dataclass +class DistributedMLP(Layer): + list_of_mlps: list[MLP] + num_devices: int + + def __call__( + self, x: list[TensorValue], signal_buffers: list[BufferValue] + ) -> list[TensorValue]: + mlp_outs = [self.list_of_mlps[i](x[i]) for i in range(self.num_devices)] + return ops.allreduce.sum(mlp_outs, signal_buffers) diff --git a/src/max/pipelines/nn/norm/__init__.py b/src/max/pipelines/nn/norm/__init__.py new file mode 100644 index 0000000000..6c5ff6c0b1 --- /dev/null +++ b/src/max/pipelines/nn/norm/__init__.py @@ -0,0 +1,23 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from .layer_norm import LayerNorm, LayerNormV2 +from .rms_norm import DistributedRMSNorm, RMSNorm, RMSNormV2 + +__all__ = [ + "LayerNorm", + "LayerNormV2", + "RMSNorm", + "RMSNormV2", + "DistributedRMSNorm", +] diff --git a/src/max/pipelines/nn/norm/layer_norm.py b/src/max/pipelines/nn/norm/layer_norm.py new file mode 100644 index 0000000000..9619d19ced --- /dev/null +++ b/src/max/pipelines/nn/norm/layer_norm.py @@ -0,0 +1,75 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +"""Layer Normalization layer.""" + +from __future__ import annotations + +from dataclasses import dataclass + +from max.dtype import DType +from max.graph import TensorValue, Weight, ops + +from ..layer import Layer, LayerV2 + + +@dataclass +class LayerNorm(Layer): + """Layer normalization block.""" + + weight: Weight + bias: Weight | None = None + eps: float = 1e-6 + + def __call__(self, input: TensorValue): + # TODO: AIPIPE-95 Replace with a broadcasting rmo.layer_norm + bias = ( + ops.cast(self.bias, input.dtype) + if self.bias + # If bias wasn't passed then use bias-less layer norm (beta = 0). + else ops.broadcast_to( + ops.constant(0.0, input.dtype), shape=(input.shape[-1],) + ) + ) + return ops.layer_norm( + input, + gamma=ops.cast(self.weight, input.dtype), + beta=bias, + epsilon=self.eps, + ) + + +class LayerNormV2(LayerV2): + """Layer normalization block.""" + + def __init__(self, dims: int, eps: float = 1e-5, use_bias=True): + self.weight = Weight("weight", DType.float32, (dims,)) + self.bias = Weight("bias", DType.float32, (dims,)) if use_bias else None + self.eps = eps + + def __call__(self, input: TensorValue): + # TODO: AIPIPE-95 Replace with a broadcasting rmo.layer_norm + bias = ( + ops.cast(self.bias, input.dtype) + if self.bias + # If bias wasn't passed then use bias-less layer norm (beta = 0). + else ops.broadcast_to( + ops.constant(0.0, input.dtype), shape=(input.shape[-1],) + ) + ) + return ops.layer_norm( + input, + gamma=ops.cast(self.weight, input.dtype), + beta=bias, + epsilon=self.eps, + ) diff --git a/src/max/pipelines/nn/norm/rms_norm.py b/src/max/pipelines/nn/norm/rms_norm.py new file mode 100644 index 0000000000..f6e4b455c3 --- /dev/null +++ b/src/max/pipelines/nn/norm/rms_norm.py @@ -0,0 +1,64 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +"""Normalization layer.""" + +from dataclasses import dataclass + +from max.dtype import DType +from max.graph import ( + DeviceRef, + TensorType, + TensorValue, + TensorValueLike, + Weight, + ops, +) + +from ..layer import Layer, LayerV2 + + +@dataclass +class RMSNorm(Layer): + weight: TensorValueLike + eps: float = 1e-6 + + def __call__(self, x: TensorValue) -> TensorValue: + return ops.custom( + "rms_norm", + [x, ops.cast(self.weight, x.dtype), ops.cast(self.eps, x.dtype)], + [TensorType(dtype=x.dtype, shape=x.shape, device=x.device)], + )[0].tensor + + +@dataclass +class DistributedRMSNorm(Layer): + rms_norms: list[RMSNorm] + devices: list[DeviceRef] + + def __call__(self, xs: list[TensorValue]) -> list[TensorValue]: + return [self.rms_norms[i](xs[i]) for i in range(len(self.devices))] + + +class RMSNormV2(LayerV2): + def __init__(self, dim: int, eps: float = 1e-6): + super().__init__() + self.weight = Weight("weight", DType.float32, [dim]) + self.eps = eps + + def __call__(self, x: TensorValue) -> TensorValue: + return ops.custom( + "rms_norm", + [x, ops.cast(self.weight, x.dtype), ops.cast(self.eps, x.dtype)], + [TensorType(dtype=x.dtype, shape=x.shape, device=x.device)], + )[0].tensor diff --git a/src/max/pipelines/nn/rotary_embedding.py b/src/max/pipelines/nn/rotary_embedding.py new file mode 100644 index 0000000000..ae622d8dad --- /dev/null +++ b/src/max/pipelines/nn/rotary_embedding.py @@ -0,0 +1,156 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # +"""The rope embedding used within the model.""" + +from dataclasses import dataclass +from functools import cached_property +from typing import Optional + +import numpy as np +from max.dtype import DType +from max.graph import Dim, DimLike, TensorValue, TensorValueLike, ops + +from .layer import LayerV2 + + +@dataclass +class RotaryEmbedding(LayerV2): + """ + RotaryEmbedding layer to calculate and apply the frequency tensor for complex exponentials. + """ + + dim: DimLike + n_heads: int + theta: float + """Hyperparameter used to control the frequency scaling of the sinusoidal components of the embeddings.""" + max_seq_len: int + """The maximum sequence length for model's input.""" + rope_scaling: Optional[np.ndarray] = None + """Scaling factor for the positional frequencies.""" + _freqs_cis: Optional[TensorValueLike] = None + interleaved: bool = True + + def __post_init__(self): + super().__init__() + + def freqs_cis_base(self) -> TensorValue: + """ + Computes the frequency tensor for complex exponentials (cis) + for a given seq_len. Tensor is scaled with theta parameter. + Required to apply Rotary Position Embedding (RoPE) to tensor. + See 'Roformer: Enhanced Transformer with Rotary Embedding' + (arxiv.org/pdf/2104.09864). + + Returns: + The frequency tensor for complex exponentials with shape + (max_seq_len * 2, dim//(2 * n_heads), 2) + """ + if self._freqs_cis is None: + n = self.dim // self.n_heads # type: ignore + # Note: using float64 to avoid an overflow on the exponential, then converting back to float32. + iota = ops.range( + ops.constant(0, DType.float64), + ops.constant(n - 1, DType.float64), # type: ignore + ops.constant(2, DType.float64), + out_dim=n // 2, + ) + if self.rope_scaling is not None: + iota = iota * self.rope_scaling + freqs = ops.cast(1.0 / (self.theta ** (iota / n)), DType.float32) + t = ops.range( + ops.constant(0, DType.float32), + ops.constant(self.max_seq_len * 2.0, DType.float32), + ops.constant(1, DType.float32), + out_dim=self.max_seq_len * 2, + ) + freqs = ops.outer(t, freqs) + self._freqs_cis = ops.stack( + [ops.cos(freqs), ops.sin(freqs)], axis=-1 + ) + return TensorValue(self._freqs_cis) + + @cached_property + def freqs_cis(self) -> TensorValue: + self._freqs_cis = self.freqs_cis_base() + return self._freqs_cis + + def __call__( + self, x: TensorValueLike, start_pos: TensorValue, seq_len: Dim + ) -> TensorValue: + """Applies rotary positional embeddings (RoPE) to `x`. + + Args: + x: Activation tensor with shape (batch, seq_len, n_kv_heads, head_dim). + start_pos: starting position of input tensor + seq_len: length of input tensor + + Returns: + Input activation tensor with rotary positional embeddings applied and + the same shape as `x`. + """ + v = TensorValue(x) + + if self.interleaved: + complex = ops.as_interleaved_complex(v) + x_re = complex[..., 0] + x_im = complex[..., 1] + else: + head_dim = v.shape[-1] + head_dim_val = TensorValue(head_dim) + half_dim = head_dim // 2 + half_dim_val = TensorValue(half_dim) + slice_re = (slice(0, half_dim_val), half_dim) + slice_im = (slice(half_dim_val, head_dim_val), half_dim) + x_re = v[..., slice_re] + x_im = v[..., slice_im] + + seq_len_val = TensorValue(seq_len) + freqs_cis_sliced = self.freqs_cis[ + (slice(start_pos, start_pos + seq_len_val), seq_len), + ] + # TODO(MSDK-1188): Ideally this cast would happen inside of the cached + # self.freqs_cis property instead of here, but complex.dtype is not + # known at that point. + freqs_cis_sliced = ops.cast(freqs_cis_sliced, v.dtype) + + freqs_cis_bcast = ops.unsqueeze(ops.unsqueeze(freqs_cis_sliced, 1), 0) + + freqs_re = freqs_cis_bcast[..., 0] + freqs_im = freqs_cis_bcast[..., 1] + + rope_re = (x_re * freqs_re) - (x_im * freqs_im) + rope_im = (x_re * freqs_im) + (x_im * freqs_re) + + if self.interleaved: + rope_complex = ops.stack([rope_re, rope_im], axis=-1) + else: + rope_complex = ops.concat((rope_re, rope_im), axis=-1) + + # Cast back to the activations dtype, which may differ from + # freqs_cis's dtype. + return ops.cast(ops.reshape(rope_complex, v.shape), v.dtype) + + +@dataclass +class OptimizedRotaryEmbedding(RotaryEmbedding): + """ + Optimized version of RotaryEmbedding using 2D frequency tensor representation. + """ + + @cached_property + def freqs_cis(self): + freqs = self.freqs_cis_base() + d1, d2, d3 = freqs.shape + new_f_shape = [d1.dim, d2.dim * d3.dim] # type: ignore + self._freqs_cis = ops.reshape(freqs, new_f_shape) + return self._freqs_cis diff --git a/src/max/pipelines/nn/sequential.py b/src/max/pipelines/nn/sequential.py new file mode 100644 index 0000000000..0d75fb976f --- /dev/null +++ b/src/max/pipelines/nn/sequential.py @@ -0,0 +1,20 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # +"""A General sequential layer, each layer is executed with the outputs of the previous.""" + +from .layer import LayerList + + +class Sequential(LayerList): + """A sequential stack of layers where each layer is called by the outputs + of the previous layer.""" diff --git a/src/max/pipelines/nn/transformer/__init__.py b/src/max/pipelines/nn/transformer/__init__.py new file mode 100644 index 0000000000..02c70b1c3c --- /dev/null +++ b/src/max/pipelines/nn/transformer/__init__.py @@ -0,0 +1,29 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # +"""The transformer mechanism used within the model.""" + +from .distributed_transformer import ( + DistributedTransformer, + DistributedTransformerBlock, +) +from .naive_transformer import NaiveTransformer, NaiveTransformerBlock +from .transformer import Transformer, TransformerBlock + +__all__ = [ + "DistributedTransformer", + "DistributedTransformerBlock", + "NaiveTransformer", + "NaiveTransformerBlock", + "Transformer", + "TransformerBlock", +] diff --git a/src/max/pipelines/nn/transformer/distributed_transformer.py b/src/max/pipelines/nn/transformer/distributed_transformer.py new file mode 100644 index 0000000000..0172b003f0 --- /dev/null +++ b/src/max/pipelines/nn/transformer/distributed_transformer.py @@ -0,0 +1,149 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from __future__ import annotations + +from dataclasses import dataclass + +from max.dtype import DType +from max.graph import BufferValue, DeviceRef, TensorValue, TensorValueLike, ops +from max.pipelines.kv_cache import ( + ContinuousBatchingKVCacheCollection, + FetchContinuousBatchingKVCacheCollection, + FetchPagedKVCacheCollection, + KVCacheParams, + PagedKVCacheCollection, +) + +from ..attention.interfaces import DistributedAttentionImpl +from ..embedding import VocabParallelEmbedding +from ..layer import Layer +from ..linear import DistributedMLP, LinearV2 +from ..norm import DistributedRMSNorm, LayerNorm, RMSNorm + + +# TODO (pavan): clean up duplicate instances of distribute_value, shard_col_value, +# shard_row_value across the codebase into a multi gpu utils file +def distribute_value(v, devices: list[DeviceRef]): + return [v.to(device) for device in devices] + + +@dataclass +class DistributedTransformerBlock(Layer): + """Stack of Attention, FeedForward, and RMSNorm layers.""" + + attention: DistributedAttentionImpl + mlp: DistributedMLP + attention_norm: DistributedRMSNorm + mlp_norm: DistributedRMSNorm + devices: list[DeviceRef] + + def __call__( + self, + xs: list[TensorValue], + signal_buffers: list[BufferValue], + kv_collections: list[ + ContinuousBatchingKVCacheCollection | PagedKVCacheCollection + ], + **kwargs, + ) -> list[TensorValue]: + attn_outs = self.attention( + self.attention_norm(xs), signal_buffers, kv_collections, **kwargs + ) + + hs = [x + attn_out for x, attn_out in zip(xs, attn_outs)] + mlp_outs = self.mlp(self.mlp_norm(hs), signal_buffers) + hs = [h + mlp_out for h, mlp_out in zip(hs, mlp_outs)] + + return hs + + +@dataclass +class DistributedTransformer(Layer): + """Transformer model consisting for TransformerBlock layers.""" + + dim: int + n_heads: int + layers: list[DistributedTransformerBlock] + norm: RMSNorm | LayerNorm + output: LinearV2 + embedding: VocabParallelEmbedding + kv_params: KVCacheParams + kv_collection_constructor: ( + FetchContinuousBatchingKVCacheCollection | FetchPagedKVCacheCollection + ) + devices: list[DeviceRef] + all_logits: bool = False + + def __call__( + self, + tokens: TensorValueLike, + signal_buffers: list[BufferValue], + kv_cache_inputs_per_dev: list[tuple[TensorValue, ...]], + **kwargs, + ) -> tuple[TensorValue, ...]: + h = self.embedding(tokens, signal_buffers) + + kv_collections = [ + self.kv_collection_constructor(*kv_cache_inputs) + for kv_cache_inputs in kv_cache_inputs_per_dev + ] + + for _, layer in enumerate(self.layers): + h = layer(h, signal_buffers, kv_collections, **kwargs) + + h0 = h[0] # All the outputs are the same here. + if self.all_logits: + # When echo is enabled, the logits of the input tokens are + # returned. + logits = ops.cast(self.output(self.norm(h0)), DType.float32) + if "input_row_offsets" in kwargs: + # For ragged tensors gather the last tokens from packed dim 0. + input_row_offsets: TensorValueLike = kwargs["input_row_offsets"] + last_token_indices = input_row_offsets[1:] - 1 # type: ignore + last_token_logits = ops.gather( + logits, last_token_indices, axis=0 + ) + else: + # For padded tensors, use `gather_nd`. + # Unsqueeze since `gather_nd` expects a static last dim. + valid_lengths: TensorValueLike = kwargs["valid_lengths"] + last_token_logits = ops.gather_nd( + logits, + indices=ops.unsqueeze(valid_lengths - 1, -1), # type: ignore + batch_dims=1, + ) + return (last_token_logits, logits) + else: + # Otherwise, only return the logits for the last non-pad token + # (right-padded). + if "input_row_offsets" in kwargs: + # For ragged tensors gather the last tokens from packed dim 0. + input_row_offsets = kwargs["input_row_offsets"] + last_token_indices = input_row_offsets[1:] - 1 # type: ignore + # Should be: last_token = h[last_token_indices] + last_token = ops.gather(h0, last_token_indices, axis=0) + else: + # For padded tensors, use `gather_nd`. + # Unsqueeze since `gather_nd` expects a static last dim. + valid_lengths = kwargs["valid_lengths"] + last_token = ops.gather_nd( + h0, + indices=ops.unsqueeze(valid_lengths - 1, -1), # type: ignore + batch_dims=1, + ) + + # Always return float32 logits, no matter the activation type + return ( + ops.cast(self.output(self.norm(last_token)), DType.float32), + ) diff --git a/src/max/pipelines/nn/transformer/naive_transformer.py b/src/max/pipelines/nn/transformer/naive_transformer.py new file mode 100644 index 0000000000..ae3dadbb2d --- /dev/null +++ b/src/max/pipelines/nn/transformer/naive_transformer.py @@ -0,0 +1,139 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from __future__ import annotations + +from typing import Callable + +from max.dtype import DType +from max.graph import TensorValue, TensorValueLike, ops + +from ..attention import NaiveAttentionWithRope +from ..embedding import Embedding, EmbeddingV2 +from ..layer import Layer, LayerList, LayerV2 +from ..linear import Linear, LinearV2 + + +class NaiveTransformerBlock(LayerV2): + """Max-Graph Only Stack of Attention, FeedForward, and RMSNorm layers.""" + + def __init__( + self, + attention: NaiveAttentionWithRope, + mlp: Layer, + attention_norm: Layer, + mlp_norm: Layer, + residual_multiplier: float = 1.0, + ): + super().__init__() + self.self_attn = attention + self.mlp = mlp + self.input_layernorm = attention_norm + self.post_attention_layernorm = mlp_norm + self.residual_multiplier = residual_multiplier + + def __call__( + self, + x: TensorValue, + attention_mask: TensorValueLike, + k_cache: TensorValueLike, + v_cache: TensorValueLike, + start_pos: TensorValue, + layer_index: int, + ) -> tuple[TensorValue, TensorValue, TensorValue]: + residual_multiplier = ops.constant(self.residual_multiplier, x.dtype) + attn_out = self.self_attn( + self.input_layernorm(x), + attention_mask, + k_cache, # type: ignore + v_cache, # type: ignore + start_pos, + layer_index, + ) + + if self.residual_multiplier != 1.0: + attn_out = attn_out * residual_multiplier + + h = x + attn_out + mlp = self.mlp(self.post_attention_layernorm(h)) + if self.residual_multiplier != 1.0: + mlp = mlp * residual_multiplier + + return h + mlp + + +class NaiveTransformer(LayerV2): + """Max-Graph only model consisting of NaiveTransformerBlock layers.""" + + def __init__( + self, + dim: int, + n_heads: int, + layers: list[NaiveTransformerBlock], + norm: Layer, + output: Linear | LinearV2, + theta: float, + embedding: Embedding | EmbeddingV2, + output_type: DType | None = None, + embedding_multiplier: float = 1.0, + logits_postprocessor: Callable[[TensorValue], TensorValue] + | None = None, + ): + super().__init__() + self.dim = dim + self.n_heads = n_heads + self.layers = LayerList(layers) + self.norm = norm + self.lm_head = output + self.theta = theta + self.embed_tokens = embedding + self.output_type = output_type + self.embedding_multiplier = embedding_multiplier + self.logits_postprocessor = logits_postprocessor + + def _apply_logits_postprocessor( + self, output: tuple[TensorValue] + ) -> tuple[TensorValue]: + if self.logits_postprocessor is None: + return output + return tuple(self.logits_postprocessor(elem) for elem in output) # type:ignore + + def __call__( + self, + tokens: TensorValueLike, + attention_mask: TensorValueLike, + k_cache: TensorValueLike, + v_cache: TensorValueLike, + start_pos: TensorValueLike, + ) -> tuple[TensorValue]: + h = self.embed_tokens(tokens) + + if self.embedding_multiplier != 1.0: + h = h * ops.constant(self.embedding_multiplier, h.dtype) + + for i in range(len(self.layers)): + h = self.layers[i]( + h, + attention_mask, + k_cache, + v_cache, + start_pos, + i, + ) + + output = self.lm_head(self.norm(h)) + if self.output_type is not None: + casted_output = ops.cast(output, self.output_type) + return self._apply_logits_postprocessor((casted_output,)) + + return self._apply_logits_postprocessor((output,)) diff --git a/src/max/pipelines/nn/transformer/transformer.py b/src/max/pipelines/nn/transformer/transformer.py new file mode 100644 index 0000000000..c0ba441975 --- /dev/null +++ b/src/max/pipelines/nn/transformer/transformer.py @@ -0,0 +1,162 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from __future__ import annotations + +from collections.abc import Sequence +from typing import Callable + +from max.dtype import DType +from max.graph import TensorValue, TensorValueLike, ops +from max.pipelines.kv_cache import ( + ContinuousBatchingKVCacheCollection, + FetchContinuousBatchingKVCacheCollection, + FetchPagedKVCacheCollection, + KVCacheParams, + PagedKVCacheCollection, +) + +from ..attention.interfaces import ( + AttentionImpl, + AttentionImplQKV, + AttentionImplV2, +) +from ..embedding import Embedding, EmbeddingV2 +from ..layer import Layer, LayerList, LayerV2 +from ..linear import Linear, LinearV2 + + +class TransformerBlock(LayerV2): + """Stack of Attention, FeedForward, and RMSNorm layers.""" + + def __init__( + self, + attention: AttentionImpl | AttentionImplV2 | AttentionImplQKV, + mlp: Layer, + attention_norm: Layer, + mlp_norm: Layer, + residual_multiplier: float = 1.0, + ): + super().__init__() + self.self_attn = attention + self.mlp = mlp + self.input_layernorm = attention_norm + self.post_attention_layernorm = mlp_norm + self.residual_multiplier = residual_multiplier + + def __call__( + self, + x: TensorValue, + kv_collection: ContinuousBatchingKVCacheCollection + | PagedKVCacheCollection, + **kwargs, + ) -> TensorValue: + residual_multiplier = ops.constant(self.residual_multiplier, x.dtype) + attn_out = self.self_attn( + self.input_layernorm(x), + kv_collection, + **kwargs, + ) + + if self.residual_multiplier != 1.0: + attn_out = attn_out * residual_multiplier + + h = x + attn_out + mlp = self.mlp(self.post_attention_layernorm(h)) + if self.residual_multiplier != 1.0: + mlp = mlp * residual_multiplier + + return h + mlp + + +class Transformer(LayerV2): + """Transformer model consisting for TransformerBlock layers.""" + + def __init__( + self, + dim: int, + n_heads: int, + layers: list[TransformerBlock], + norm: Layer, + output: Linear | LinearV2, + embedding: Embedding | EmbeddingV2, + kv_params: KVCacheParams, + kv_collection_constructor: ( + FetchContinuousBatchingKVCacheCollection + | FetchPagedKVCacheCollection + ), + all_logits: bool = False, + embedding_multiplier: float = 1.0, + logits_postprocessor: Callable[[TensorValue], TensorValue] + | None = None, + ): + super().__init__() + self.dim = dim + self.n_heads = n_heads + self.layers = LayerList(layers) + self.norm = norm + self.lm_head = output + self.embed_tokens = embedding + self.kv_params = kv_params + self.kv_collection_constructor = kv_collection_constructor + self.all_logits = all_logits + self.embedding_multiplier = embedding_multiplier + self.logits_postprocessor = logits_postprocessor + + def _apply_logits_postprocessor( + self, output: tuple[TensorValue, ...] + ) -> tuple[TensorValue, ...]: + if self.logits_postprocessor is None: + return output + return tuple(self.logits_postprocessor(elem) for elem in output) + + def __call__( + self, + tokens: TensorValueLike, + kv_cache_inputs: Sequence[TensorValue], + **kwargs, + ) -> tuple[TensorValue, ...]: + # TODO: Split into a ragged and non-ragged version. + h = self.embed_tokens(tokens) + + if self.embedding_multiplier != 1.0: + h = h * ops.constant(self.embedding_multiplier, h.dtype) + + kv_collection = self.kv_collection_constructor(*kv_cache_inputs) + + for _, layer in enumerate(self.layers): + h = layer(h, kv_collection, **kwargs) + + normalized = self.norm(h) + + if "input_row_offsets" in kwargs: + # Ragged inputs/activations + last_indices = kwargs["input_row_offsets"][1:] - 1 + last_tokens = ops.gather(normalized, last_indices, axis=0) + else: + # Dense padded inputs/activations + valid_lengths = kwargs["valid_lengths"] + # TODO: Remove once `gather_nd` works with nonstatic last dims. + indices = ops.unsqueeze(valid_lengths - 1, -1) + last_tokens = ops.gather_nd(normalized, indices, batch_dims=1) + + # Always return float32 logits, no matter the activation type. + last_token_logits = ops.cast(self.lm_head(last_tokens), DType.float32) + + if self.all_logits: + all_logits = ops.cast(self.lm_head(normalized), DType.float32) + return self._apply_logits_postprocessor( + (last_token_logits, all_logits) + ) + + return self._apply_logits_postprocessor((last_token_logits,)) diff --git a/src/max/pipelines/pipeline.py b/src/max/pipelines/pipeline.py new file mode 100644 index 0000000000..822602fb07 --- /dev/null +++ b/src/max/pipelines/pipeline.py @@ -0,0 +1,739 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # +# mypy: disable-error-code="import-not-found" +"""HF Token Generation Pipeline""" + +from __future__ import annotations + +import logging +from abc import ABC, abstractmethod +from dataclasses import dataclass +from typing import ( + Any, + Generic, + List, + Optional, + Protocol, + Sequence, + Type, + TypeVar, + runtime_checkable, +) + +import torch +from max.driver import Device, Tensor +from max.dtype import DType +from max.engine import InferenceSession +from max.pipelines.kv_cache import ( + KVCacheInputs, + KVCacheInputsSequence, + infer_optimal_batch_size, +) +from max.profiler import Tracer, traced +from transformers import AutoTokenizer + +from .config import PipelineConfig +from .context import InputContext +from .interfaces import TokenGenerator +from .kv_cache import KVCacheManager, KVCacheParams +from .response import LogProbabilities, TextResponse +from .sampling import token_sampler + +try: + import xgrammar as xgr + + # This retrieves the last logger handler added + # which presumably is the one initialized in xgrammar + # and removes it, this stops our server logging from + # doubling up. + logger = logging.getLogger() + handler = logger.handlers[-1] + logger.removeHandler(handler) +except ImportError: + pass + +logger = logging.getLogger("max.pipelines") + +ARCH_SAFE_VRAM_USAGE_LIMIT = { + "DeepseekCoder": 0.96, + "ExaoneForCausalLM": 0.96, + "LlamaForCausalLM": 0.96, + "MistralForCausalLM": 0.96, +} + + +def upper_bounded_default(upper_bound: int, default: int | None) -> int: + """ + Given an upper bound and an optional default value, returns a final value + that cannot exceed the upper bound. + + Args: + default: The default value to use, or None to use the upper bound. + upper_bound: The upper bound to use. + + Raises: + ValueError: If the provided default value exceeds the upper bound. + + Returns: + The final value. + """ + if default is None: + return upper_bound + elif default > upper_bound: + raise ValueError( + f"default value provided ({default}) exceeds the upper bound ({upper_bound})" + ) + return default + + +class ModelInputs: + """ + Base class for model inputs. + Use this class to encapsulate inputs for your model. + You may store any number of dataclass fields + + Example: + >>> class ReplitInputs(ModelInputs): + ... tokens: Tensor + ... input_row_offsets: Tensor + ... + ... def __init__(self, tokens: Tensor, input_row_offsets: Tensor): + ... self.tokens = tokens + ... self.input_row_offsets = input_row_offsets + ... + >>> # Create tensors + >>> tokens = Tensor.zeros((1, 2, 3), DType.int64) + >>> input_row_offsets = Tensor.zeros((1, 1, 1), DType.int64) + >>> # Initialize inputs + >>> inputs = ReplitInputs(tokens=tokens, input_row_offsets=input_row_offsets) + >>> # Access tensors + >>> list(inputs) == [tokens, input_row_offsets] + True + """ + + +@dataclass(frozen=True) +class ModelOutputs: + next_token_logits: Tensor | None = None + """Logits for just the next token.""" + + logits: Tensor | None = None + """Logits for the entire token sequence.""" + + +T = TypeVar("T", bound=InputContext) + + +class PipelineModel(ABC, Generic[T]): + """A pipeline model with setup, input preparation and execution methods.""" + + _MAX_DEFAULT_BATCH_SIZE = 4096 + _MIN_DEFAULT_BATCH_SIZE = 1 + + def __init__( + self, pipeline_config: PipelineConfig, session: InferenceSession + ) -> None: + self.pipeline_config = pipeline_config + + if isinstance(self, KVCacheMixin): + self.kv_manager = self.load_kv_manager( + session, pipeline_config._available_cache_memory + ) + + @classmethod + @abstractmethod + def calculate_max_seq_len(cls, pipeline_config: PipelineConfig) -> int: + """Calculate the optimal max sequence length for the model. + Models are expected to implement this method. + + Example: + >>> class MistralModel(PipelineModel): + ... @classmethod + ... def calculate_max_seq_len(cls, pipeline_config: PipelineConfig) -> int: + ... try: + ... return upper_bounded_default( + ... upper_bound=pipeline_config.huggingface_config.max_seq_len, + ... default=pipeline_config.max_length, + ... ) + ... except ValueError as e: + ... msg = ( + ... "Unable to infer max_length for Mistral, the provided " + ... f"max_length ({pipeline_config.max_length}) exceeds the " + ... f"model's max_seq_len " + ... f"({pipeline_config.huggingface_config.max_seq_len})." + ... ) + ... raise ValueError(msg) from e + ... + """ + raise NotImplementedError( + "PipelineModel must implement calculate_max_seq_len" + ) + + @classmethod + @abstractmethod + def get_kv_params(cls, pipeline_config: PipelineConfig) -> KVCacheParams: + """Returns the KV cache params for the pipeline model.""" + ... + + @classmethod + @abstractmethod + def get_num_layers(cls, pipeline_config: PipelineConfig) -> int: + """Returns the number of layers for the pipeline model.""" + ... + + @classmethod + def infer_optimal_batch_size( + cls, + pipeline_config: PipelineConfig, + available_cache_memory: int, + ) -> int: + """Returns the estimated optimal batch size to run the model + given current memory constraints.""" + if not issubclass(cls, KVCacheMixin): + # we rely on the KVCache setup to know optimal batch size. + # If we don't have that, default to BS=1. + return 1 + elif ( + len(pipeline_config.devices) == 1 + and pipeline_config.devices[0].is_host + ): + # batching on CPU is generally not useful, so we hard-code a batch size of 1. + return 1 + + # TODO we should map HF configs to a unified MAX Config object + # this would help avoid these excessive calls to class methods. + n_layers = cls.get_num_layers(pipeline_config) + kv_params = cls.get_kv_params(pipeline_config) + inferred_batch_size = infer_optimal_batch_size( + params=kv_params, + max_seq_len=cls.calculate_max_seq_len(pipeline_config), + num_layers=n_layers, + available_cache_memory=available_cache_memory, + devices=pipeline_config.devices, + ) + + # clamp the floor of the inferred batch size to 1 and the ceiling to 4096 + inferred_batch_size = max( + cls._MIN_DEFAULT_BATCH_SIZE, + min(inferred_batch_size, cls._MAX_DEFAULT_BATCH_SIZE), + ) + return inferred_batch_size + + @classmethod + def estimate_weights_size(cls, pipeline_config: PipelineConfig) -> int: + """Calculates the estimated memory consumption of our model.""" + + # TODO move this logic to the PipelineModel instead of PipelineConfig class. + # Better yet, make this more accurate by loading and measuring memory consumption + # after we load the model + return pipeline_config.weights_size() + + @abstractmethod + def execute( + self, + model_inputs: ModelInputs, + # TODO(zheng): This should be tucked inside ModelInputs in the future. + kv_cache_inputs: KVCacheInputs | None = None, + ) -> ModelOutputs: + """Executes the graph with the given inputs. + + Args: + model_inputs: The model inputs to execute, containing tensors and any other + required data for model execution. + kv_cache_inputs: The kv cache inputs to execute, containing tensors and any other + required data for model execution. + + Returns: + ModelOutputs containing the pipeline's output tensors. + + This is an abstract method that must be implemented by concrete PipelineModels + to define their specific execution logic. + """ + + @abstractmethod + def prepare_initial_token_inputs( + self, context_batch: Sequence[T] + ) -> ModelInputs: + """Prepares the initial inputs to be passed to `.execute()`. + + The inputs and functionality of this method can vary per model. + For example, the model inputs could include: + - Encoded tensors + - A unique IDs for each tensor if this model uses a KV Cache manager. + + This function would batch the encoded tensors, claim a slot in the kv + cache if the ID hasn't been seen before, and return the inputs and + caches as a list of tensors.""" + ... + + @abstractmethod + def prepare_next_token_inputs( + self, + next_tokens: Tensor, + prev_model_inputs: ModelInputs, + ) -> ModelInputs: + """Prepares the secondary inputs to be passed to `.execute()`. + + While `prepare_initial_token_inputs` is responsible for managing the initial inputs. + This function is responsible for updating the inputs, for each step in a multi-step execution pattern. + """ + ... + + def compute_log_probabilities( + self, + model_inputs: ModelInputs, + model_outputs: ModelOutputs, + next_tokens: Tensor, + batch_top_n: list[int], + batch_echo: list[bool], + ) -> list[LogProbabilities | None] | None: + """Optional method that can be overridden to compute log probabilities. + + Args: + model_inputs: Inputs to the model returned by + `prepare_*_token_inputs()`. + model_outputs: Outputs returned by `execute()`. + next_tokens: Sampled tokens. Should have shape=[batch size] + batch_top_n: Number of top log probabilities to return per input in + the batch. For any element where `top_n == 0`, the + LogProbabilities is skipped. + batch_echo: Whether to include input tokens in the returned log + probabilities. + + Returns: + List of log probabilities. + """ + raise NotImplementedError( + f"Log probabilities not implemented for {type(self)}." + ) + + +@runtime_checkable +class KVCacheMixin(Protocol): + def load_kv_manager( + self, + session: InferenceSession, + available_cache_memory: Optional[int], + ) -> KVCacheManager: + """Provided a PipelineConfig and InferenceSession, loads the KV manager. + + Args: + session: Inference session to compile and init the KV cache. + available_cache_memory: Amount of memory available to the KV cache, + in bytes. + + Returns: + Either a single KV cache manager or a tuple of KV cache managers: + one per input modality. + """ + ... + + @classmethod + @abstractmethod + def estimate_kv_cache_size( + cls, + pipeline_config: PipelineConfig, + available_cache_memory: int, + devices: list[Device], + ) -> int: + """Estimates the size of the kv cache in bytes.""" + ... + + +class TextGenerationPipeline(TokenGenerator[T]): + """Generalized token generator pipeline.""" + + def __init__( + self, + pipeline_config: PipelineConfig, + pipeline_model: Type[PipelineModel], + # TODO: This should be removed. + eos_token_id: int, + ) -> None: + self._pipeline_config = pipeline_config + + # Expand eos tokens if more are provided in pipeline_config + if "eos_token_id" in pipeline_config.huggingface_config: + eos_tokens = pipeline_config.huggingface_config.eos_token_id + if isinstance(eos_tokens, int): + if eos_tokens != eos_token_id: + msg = f"eos_token_id provided in huggingface config ({eos_tokens}), does not match provided eos_token_id ({eos_token_id}), using provided eos_token_id" + logger.warning(msg) + + self._eos_token_id = set([eos_tokens]) + elif isinstance(eos_tokens, list): + if eos_token_id in eos_tokens: + self._eos_token_id = set(eos_tokens) + else: + self._eos_token_id = set([eos_token_id]) + else: + msg = f"eos_token_id in huggingface_config, is neither int or list: {eos_tokens}" + logger.warning(msg) + self._eos_token_id = set([eos_token_id]) + + else: + self._eos_token_id = set([eos_token_id]) + + # Create a grammar compiler if constrained decoding is enabled + self.vocab_size = None + if pipeline_config.enable_structured_output: + tokenizer = AutoTokenizer.from_pretrained( + pipeline_config.model_path + ) + self.vocab_size = len(tokenizer) + tokenizer_info = xgr.TokenizerInfo.from_huggingface( + tokenizer, + vocab_size=self.vocab_size, + ) + + self._grammar_compiler = xgr.GrammarCompiler(tokenizer_info) + + # Initialize Session. + session = InferenceSession(devices=self._pipeline_config.devices) + + # Enable profiling if enabled. + session.gpu_profiling(self._pipeline_config.gpu_profiling) + + # Use experimental kernels if enabled by env var `USE_EXPERIMENTAL_KERNELS`. + session._use_experimental_kernels( + self._pipeline_config.use_experimental_kernels + ) + + # Load model. + self._pipeline_model = pipeline_model( + pipeline_config=self._pipeline_config, session=session + ) + + # Load sampler. + self._sampler = session.load( + token_sampler(self._pipeline_config.sampling_params), + ) + + def calculate_num_steps( + self, + num_steps: int, + context: T, + ) -> int: + max_seq_len = self._pipeline_model.calculate_max_seq_len( + self._pipeline_config + ) + # this is effectively: max_seq_len - (num_tokens_in_kv_cache + num_new_tokens) - num_new_tokens + num_available_steps = max_seq_len - ( + context.current_length - context.active_length + ) + if num_available_steps <= 0: + raise ValueError( + f"Request {context.cache_seq_id} length ({context.current_length}) is larger than or equal to the configured max_length ({max_seq_len})" + ) + + return ( + num_steps + if num_available_steps > num_steps + else num_available_steps + ) + + @traced + def prepare_batch( + self, + batch: list[T], + num_steps: int, + ) -> tuple[ModelInputs, List[KVCacheInputs], int, Optional[torch.Tensor]]: + tracer: Tracer = Tracer("prepare_batch") + + if self._pipeline_config.enable_structured_output: + assert self.vocab_size is not None + bitmask = torch.ones( + xgr.get_bitmask_shape( + len(batch), + self.vocab_size, + ), + dtype=torch.int32, + ) + else: + bitmask = None + + seq_ids_and_prompts = {} + seq_ids_and_untrimmed_lengths = {} + tracer.next("claim_cache_rows") + for i, context in enumerate(batch): + # Initialize a matcher if needed + if context.json_schema and context.matcher is None: + if not self._pipeline_config.enable_structured_output: + msg = "json_schema provided but constrained decoding is not enabled." + raise ValueError(msg) + + try: + compiled_grammar = ( + self._grammar_compiler.compile_json_schema( + context.json_schema, + any_whitespace=False, + ) + ) + matcher = xgr.GrammarMatcher(compiled_grammar) + context.set_matcher(matcher) + except Exception as e: + msg = f"Json schema provided in request cannot be compiled to valid grammar. \ + Please update your json schema to produce valid structured output. From XGrammar: {e}" + logger.warning(msg) + # I am removing the json_schema, so it doesn't try to load the grammar repeatedly. + context.json_schema = None # type: ignore + + # Claim cache rows for context. + if not self._pipeline_model.kv_manager.contains( + context.cache_seq_id + ): + self._pipeline_model.kv_manager.external_claim( + [context.cache_seq_id] + ) + + # Gather tokens and untrimmed lengths. + seq_ids_and_prompts[context.cache_seq_id] = context.next_tokens + seq_ids_and_untrimmed_lengths[context.cache_seq_id] = ( + context.active_length + ) + + # Update num_steps. + num_steps = self.calculate_num_steps(num_steps, context) + + # Update bitmask + if ( + self._pipeline_config.enable_structured_output + and context.matcher + ): + context.matcher.fill_next_token_bitmask(bitmask, index=i) + + # `fetch` mutates the seq_ids_and_prompts input in place when tokens are + # retrieved from the cache. This shortens the prompt in the event that + # some tokens have backing KV cache entries. + tracer.next("fetch_kv_cache") + kv_cache_inputs = self._pipeline_model.kv_manager.fetch( + seq_ids_and_prompts, num_steps + ) + + # Update the context with the new possibly shortened prompt. + tracer.next("trim_prompt") + for context in batch: + untrimmed_length = seq_ids_and_untrimmed_lengths[ + context.cache_seq_id + ] + trimmed_length = len(seq_ids_and_prompts[context.cache_seq_id]) + bump_length = untrimmed_length - trimmed_length + if bump_length > 0: + context.bump_token_indices( + start_idx=bump_length, + ) + + return ( + self._pipeline_model.prepare_initial_token_inputs(batch), + kv_cache_inputs, + num_steps, + bitmask, + ) + + @traced + def sample_logits( + self, + logits: Tensor, + prev_tokens: Tensor, + bitmask: Optional[Tensor], + ) -> tuple[Tensor, Tensor]: + if bitmask is not None: + a, b = self._sampler(logits, prev_tokens, bitmask)[:2] + else: + a, b = self._sampler( + logits, + prev_tokens, + )[:2] + assert isinstance(a, Tensor) + assert isinstance(b, Tensor) + return (a, b) + + @traced + def next_token( + self, + batch: dict[str, T], + num_steps: int, + ) -> list[dict[str, Any]]: + """Provided a batch, process batch inputs, execute the graph for num_steps in a multi-step scenario, + then decode the tokens holistically and return the list of decoded tokens. + """ + tracer: Tracer = Tracer("compute_parameters") + + # Flatten our batch for consistent indexing. + context_batch = list(batch.values()) + + # # Get extra compute parameters for each input. + batch_top_n = [context.log_probabilities for context in context_batch] + compute_log_probabilities = any(batch_top_n) + batch_echo: list[bool] = [ + context.log_probabilities_echo for context in context_batch + ] + + # Prepare the batch. + model_inputs, batched_kv_cache_inputs, num_steps, bitmask = ( + self.prepare_batch(context_batch, num_steps) + ) + + # Multistep execution loop. + tracer.next("allocate_generated_tokens") + generated_tokens = Tensor.zeros( + (len(context_batch), 0), + dtype=DType.int64, + device=self._pipeline_config.devices[0], + ) + + curr_step_inputs = model_inputs + batch_log_probabilities = [] + tracer.next(f"multistep_execution_loop_{num_steps}_steps") + for i in range(num_steps): + tracer.push(f"step_{i}") + + # Execute the model and get next tokens. + model_outputs = self._pipeline_model.execute( + model_inputs=curr_step_inputs, + kv_cache_inputs=KVCacheInputsSequence( + kv_cache_inputs=batched_kv_cache_inputs, + ), + ) + assert model_outputs.next_token_logits is not None + next_token_logits = model_outputs.next_token_logits + + if bitmask is not None: + assert self.vocab_size is not None + bits = 2 ** torch.arange(32, dtype=torch.int32) + bitmask = (bitmask.unsqueeze(-1) & bits) != 0 + bitmask = bitmask.reshape( + len(context_batch), + -1, + ).to(torch.bool) + bitmask = bitmask[:, 0 : self.vocab_size] + + bitmask = Tensor.from_dlpack(bitmask).to( + self._pipeline_config.devices[0] + ) + + # Sample next token. + tracer.next("sample_next_token") + new_tokens, new_generated_tokens = self.sample_logits( + next_token_logits, + generated_tokens, + bitmask, + ) + + assert isinstance(new_tokens, Tensor) + assert isinstance(new_generated_tokens, Tensor) + generated_tokens = new_generated_tokens + + if compute_log_probabilities: + try: + tracer.next("compute_log_probabilities") + batch_log_probabilities.append( + self._pipeline_model.compute_log_probabilities( + curr_step_inputs, + model_outputs, + new_tokens, + batch_top_n, + batch_echo, + ) + ) + except NotImplementedError: + logger.warning( + "Unable to compute log probabilities for" + f" {self._pipeline_config.model_path}" + ) + batch_log_probabilities.append(None) + # Check if we're on our last iteration. If so, skip preparing the next batch + if i == num_steps - 1: + tracer.pop() # pops f"step_{i}" + break + # Prepare inputs for the next token in multistep execution + tracer.next("increment_cache_lengths") # pops sample_next_token + # Unpack model inputs for execute() call by getting all fields + batched_kv_cache_inputs = ( + self._pipeline_model.kv_manager.increment_cache_lengths( + batched_kv_cache_inputs, # type: ignore + curr_step_inputs, + ) + ) + tracer.next("prepare_next_token_inputs") # pops inc_cache_lengths + curr_step_inputs = self._pipeline_model.prepare_next_token_inputs( + new_tokens, curr_step_inputs + ) + tracer.pop() # pops step_{i} + + # Do the copy to host for each token generated. + tracer.next( + "generated_tokens.to(CPU())" + ) # pops multistep_execution_loop_steps + generated_tokens_host = generated_tokens.to_numpy() + + # Actually update the cache lengths in our kv_cache manager + tracer.next("kv_manager.step") # pops generated_tokens.to(CPU()) + seq_ids_and_new_tokens = { + ctx.cache_seq_id: generated_tokens_host[i] + for i, ctx in enumerate(context_batch) + } + self._pipeline_model.kv_manager.step(seq_ids_and_new_tokens) + tracer.pop() # pops kv_manager.step + + # Prepare the response, pruning away completed requests as we go. + res: list[dict[str, Any]] = [{} for _ in range(num_steps)] + tracer.push("prepare_response") + for batch_index, (request_id, context) in enumerate(batch.items()): + step = 0 + while step < num_steps: + # Convert to a Python scalar to improve serialization performance. + next_token = int(generated_tokens_host[batch_index, step]) + + # Write this token into our pre-allocated tokens array. + context.update( + new_token=next_token, + ) + + max_length = upper_bounded_default( + upper_bound=self._pipeline_model.calculate_max_seq_len( + self._pipeline_config + ), + default=context.max_length, + ) + + # The current length is incremented above, during context.update + # As such, if we are already at the max length, exiting here + # would cause us to miss updating the request. + # As such, we overrun here by 1, ensuring that the context object + # tracks special tokens like eos_token_id appropriately for benchmarking + # and other uses, but that they are not returned in the request. + if ( + next_token in self._eos_token_id + or context.current_length > max_length + ): + step += 1 + break + + # Set up TextResponse + log_probs: Optional[LogProbabilities] = None + if compute_log_probabilities and ( + log_probs_for_step := batch_log_probabilities[step] + ): + log_probs = log_probs_for_step[batch_index] + + # Removing the positional arguments here, go about 100us faster. + res[step][request_id] = TextResponse(next_token, log_probs) + + step += 1 + + return res + + def release(self, context: T) -> None: + """Mark the context as complete, releasing the cache slot from the KV manager.""" + self._pipeline_model.kv_manager.release(context.cache_seq_id) diff --git a/src/max/pipelines/registry.py b/src/max/pipelines/registry.py new file mode 100644 index 0000000000..312b0d1e79 --- /dev/null +++ b/src/max/pipelines/registry.py @@ -0,0 +1,1045 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +"""Model registry, for tracking various model variants.""" + +from __future__ import annotations + +import functools +import logging +import os +from io import StringIO +from typing import Callable, Optional, Type, Union, cast + +import torch +from max.graph.weights import WeightsAdapter + +from .config import ( + PipelineConfig, + PipelineEngine, + RopeType, + SupportedEncoding, + WeightsFormat, +) +from .embeddings_pipeline import EmbeddingsPipeline +from .hf_pipeline import HFEmbeddingsPipeline, HFTextGenerationPipeline +from .interfaces import ( + EmbeddingsGenerator, + PipelineTask, + PipelineTokenizer, + TokenGenerator, +) +from .kv_cache import KVCacheStrategy +from .pipeline import KVCacheMixin, PipelineModel, TextGenerationPipeline +from .tokenizer import TextAndVisionTokenizer, TextTokenizer + +logger = logging.getLogger("max.pipelines") + +# Store a map of checkpoint encodings that can be cast to another dtype while +# keeping similar results. Maps the requested encoding to an acceptable +# alternate checkpoint encoding. +_ALTERNATE_ENCODINGS = { + SupportedEncoding.float32: SupportedEncoding.bfloat16, + SupportedEncoding.bfloat16: SupportedEncoding.float32, +} + +_PIPELINE_TASK_MAP = { + PipelineTask.TEXT_GENERATION: TextGenerationPipeline, + PipelineTask.EMBEDDINGS_GENERATION: EmbeddingsPipeline, +} + + +_HF_PIPELINE_TASK_MAP: dict[ + PipelineTask, type[HFTextGenerationPipeline] | type[HFEmbeddingsPipeline] +] = { + PipelineTask.TEXT_GENERATION: HFTextGenerationPipeline, + PipelineTask.EMBEDDINGS_GENERATION: HFEmbeddingsPipeline, +} + + +def _to_human_memory_size(bytes: int) -> str: + """Convert bytes to human readable memory size.""" + KiB = 1024 + MiB = KiB * 1024 + GiB = MiB * 1024 + TiB = GiB * 1024 + if bytes > TiB: + return f"{bytes / TiB:.2f} TiB" + if bytes > GiB: + return f"{bytes / GiB:.2f} GiB" + if bytes > MiB: + return f"{bytes / MiB:.2f} MiB" + return f"{bytes / KiB:.2f} KiB" + + +class SupportedArchitecture: + def __init__( + self, + name: str, + example_repo_ids: list[str], + default_encoding: SupportedEncoding, + supported_encodings: dict[SupportedEncoding, list[KVCacheStrategy]], + pipeline_model: Type[PipelineModel], + task: PipelineTask, + tokenizer: Type[Union[TextTokenizer, TextAndVisionTokenizer]], + default_weights_format: WeightsFormat, + rope_type: RopeType = RopeType.none, + weight_adapters: dict[WeightsFormat, WeightsAdapter] | None = None, + ): + """Initializes a model architecture supported by MAX pipelines. + + New architectures should be registered into the `PipelineRegistry`. + + args: + name: Architecture name. + example_repo_ids: HuggingFace repo_id which runs this architecture. + default_encoding: Default encoding for the model. + supported_encodings: Alternate encodings supported. + pipeline_model: PipelineModel class that defines the model graph + and execution. + task: Which pipeline task should the model run with. + tokenizer: Tokenizer used to preprocess model inputs. + default_weights_format: The weights format used in `pipeline_model`. + weight_converters: A dictionary of weight loaders to use if the + input checkpoint has a different format than the default. + """ + self.name = name + self.example_repo_ids = example_repo_ids + self.default_encoding = default_encoding + self.supported_encodings = supported_encodings + self.pipeline_model = pipeline_model + self.tokenizer = tokenizer + self.default_weights_format = default_weights_format + self.rope_type = rope_type + self.weight_adapters = weight_adapters or {} + self.task = task + + +class PipelineRegistry: + def __init__(self, architectures: list[SupportedArchitecture]): + self.architectures = {arch.name: arch for arch in architectures} + + def register(self, architecture: SupportedArchitecture): + """Add new architecture to registry.""" + if architecture.name in self.architectures: + msg = f"Refusing to override existing architecture for '{architecture.name}'" + raise ValueError(msg) + + self.architectures[architecture.name] = architecture + + def architecture_details( + self, pipeline_config: PipelineConfig + ) -> Optional[SupportedArchitecture]: + """Return architecture details for pipeline_config if available, None if not found.""" + + # If no architecture is provided in the pipeline_config, we have nothing to retrieve. + if not pipeline_config.architecture: + return None + + # If the engine is not provided or MAX, we should retrieve the architecture and validate it. + if ( + not pipeline_config.engine + or pipeline_config.engine == PipelineEngine.MAX + ): + if pipeline_config.architecture in self.architectures: + return self.architectures[pipeline_config.architecture] + else: + return None + else: + return None + + def validate_pipeline_config( + self, pipeline_config: PipelineConfig + ) -> PipelineConfig: + """Update pipeline config with appropriate values if not provided. + If invalid config is provided, error out with detailed reason.""" + + # This will update the architecture, and engine if no architecture is available. + pipeline_config.update_architecture() + + # This will retrieve the architecture, if we support it. + arch = self.architecture_details(pipeline_config) + + # If nothing is provided, we should not update any more params. + # Instead, fall back to the HuggingFace engine. + if not arch and pipeline_config.engine == PipelineEngine.MAX: + msg = ( + "optimized architecture not available for" + f" '{pipeline_config.architecture}', failing as engine is provided as 'MAX'" + ) + raise ValueError(msg) + + elif not arch: + msg = ( + "optimized architecture not available for" + f" '{pipeline_config.architecture}' falling back to" + " HuggingFace." + ) + logger.warning(msg) + pipeline_config.engine = PipelineEngine.HUGGINGFACE + return pipeline_config + + # The remainder of this function, assumes we have both a valid model_path, + # and a SupportedArchitecture. We should then validate the details of the existing architecture + # and fallback to HuggingFace if needed. + + # If weight_path and quantization_encoding are provided, verify that they are consistent. + huggingface_weights_repo = pipeline_config.huggingface_weights_repo() + if ( + pipeline_config.weight_path + and pipeline_config.quantization_encoding + # Cannot validate quantization_encoding for pytorch. + and pipeline_config.weights_format != WeightsFormat.pytorch + ): + # Get the encoding of the first weight path file. + if os.path.exists(pipeline_config.weight_path[0]): + file_encoding = SupportedEncoding.parse_from_file_name( + str(pipeline_config.weight_path[0]) + ) + else: + file_encoding = huggingface_weights_repo.encoding_for_file( + pipeline_config.weight_path[0] + ) + + if file_encoding: + if file_encoding != pipeline_config.quantization_encoding: + msg = f"weight_path provided '{pipeline_config.weight_path[0]}' has an inconsistent encoding '{file_encoding}' than quantization_encoding provided '{pipeline_config.quantization_encoding}'. Please update one." + raise ValueError(msg) + # If weight path is not None, infer the quantization_encoding from the weight_path. + elif ( + pipeline_config.weight_path + and not pipeline_config.quantization_encoding + and pipeline_config.weights_format != WeightsFormat.pytorch + ): + if os.path.exists(pipeline_config.weight_path[0]): + # Not currently supported. Infer encoding from local path. + if pipeline_config.weight_path[0].suffix == ".safetensors": + msg = "If a local safetensors file is provided, please provide a quantization_encoding." + raise ValueError(msg) + + if encoding := SupportedEncoding.parse_from_file_name( + str(pipeline_config.weight_path[0]) + ): + msg = f"encoding inferred from weights file: {encoding}" + logger.debug(msg) + pipeline_config.quantization_encoding = encoding + + else: + if encoding := huggingface_weights_repo.encoding_for_file( + pipeline_config.weight_path[0] + ): + msg = f"encoding inferred from weights file: {encoding}" + logger.debug(msg) + pipeline_config.quantization_encoding = encoding + else: + msg = f"encoding cannot be inferred from weights file: {pipeline_config.weight_path[0]}, please pass a quantization_encoding explictly." + raise ValueError(msg) + elif not pipeline_config.quantization_encoding: + # Check if the repo only has one quantization_encoding. + supported_encodings = huggingface_weights_repo.supported_encodings + if len(supported_encodings) == 1: + msg = f"huggingface repo only has '{supported_encodings[0]}' weights, using '{supported_encodings[0]}'" + logger.debug(msg) + pipeline_config.quantization_encoding = supported_encodings[0] + elif ( + not pipeline_config.devices[0].is_host + ) and SupportedEncoding.bfloat16 in arch.supported_encodings: + # TODO(AITLIB-137): replace this with more full featured logic. + # If we are running on an accelerator and the quantiziation encoding is not set, override to bfloat16. + pipeline_config.quantization_encoding = ( + SupportedEncoding.bfloat16 + ) + else: + msg = f"encoding not provided, using default encoding of {arch.default_encoding}" + logger.debug(msg) + pipeline_config.quantization_encoding = arch.default_encoding + # by this point, the quantization_encoding must be provided. verify it is supported. + if ( + pipeline_config.quantization_encoding + not in arch.supported_encodings + ): + if pipeline_config.engine == PipelineEngine.MAX: + msg = f"quantization_encoding of '{pipeline_config.quantization_encoding}' not supported by MAX engine, unable to run with engine = 'max'." + raise ValueError(msg) + + else: + msg = f"quantization_encoding of '{pipeline_config.quantization_encoding}' not supported by MAX engine, falling back to HuggingFace." + logger.warning(msg) + pipeline_config.engine = PipelineEngine.HUGGINGFACE + return pipeline_config + + # Check that the quantization encoding is supported on the specified + # devices. + for device_spec in pipeline_config.device_specs: + if not pipeline_config.quantization_encoding.supported_on( + device_spec + ): + raise ValueError( + f"{pipeline_config.quantization_encoding} is not supported on {device_spec.device_type}. " + "Please use the flag --devices=cpu or --devices=gpu to configure the device." + ) + + pipeline_config.finalize_encoding_config() + + # Pass weight adapters to the PipelineConfig. + pipeline_config._weight_adapters = arch.weight_adapters + + # We should now have a valid quantization_encoding, and possibly a weight_path. + # If no weight_path is provided, we should grab the default. + if not pipeline_config.weight_path: + # Retrieve the default files for each weights format. + + # Get alternate encoding (e.g. if float32 is requested and there are + # only bfloat16 weights, allow retrieving the bfloat16 weights + # because they can be cast to float32). + alternate_encoding = _ALTERNATE_ENCODINGS.get( + pipeline_config.quantization_encoding + ) + + weight_files = huggingface_weights_repo.files_for_encoding( + encoding=pipeline_config.quantization_encoding, + alternate_encoding=alternate_encoding, + ) + + if default_weight_files := weight_files.get( + arch.default_weights_format, [] + ): + pipeline_config.weight_path = default_weight_files + elif weight_files: + # Load any available weight file. + pipeline_config.weight_path = next(iter(weight_files.values())) + + if not pipeline_config.weight_path: + if pipeline_config.quantization_encoding not in [ + SupportedEncoding.bfloat16, + SupportedEncoding.float32, + ]: + msg = f"compatible weights cannot be found for '{pipeline_config.quantization_encoding}' in 'gguf' format, in the provided repo: '{huggingface_weights_repo.repo_id}'" + raise ValueError(msg) + else: + msg = f"compatible weights cannot be found for '{pipeline_config.quantization_encoding}'" + raise ValueError(msg) + + # Check supported_cache_strategy + supported_cache_strategies = arch.supported_encodings.get( + pipeline_config.quantization_encoding, [] + ) + if ( + pipeline_config.cache_strategy == KVCacheStrategy.MODEL_DEFAULT + and supported_cache_strategies + ): + default_strategy = supported_cache_strategies[0] + msg = f"default cache_strategy of '{default_strategy}' enabled" + logger.debug(msg) + + pipeline_config.cache_strategy = default_strategy + elif ( + supported_cache_strategies + and pipeline_config.cache_strategy not in supported_cache_strategies + ): + supported_strategy = supported_cache_strategies[0] + + msg = f"cache_strategy = '{pipeline_config.cache_strategy}' not supported for '{pipeline_config.quantization_encoding}', using '{supported_strategy}' cache strategy." + logger.warning(msg) + + pipeline_config.cache_strategy = supported_strategy + + # Assume at this point, an architecture, + # a model_path and weight_paths are available. + assert pipeline_config.weight_path, "weight_path must be provided." + for path in pipeline_config.weight_path: + # Check if file exists locally. + if not os.path.exists(path): + # If does not exist locally, verify that it exists on Huggingface. + if not huggingface_weights_repo.file_exists(str(path)): + msg = ( + f"weight_path: '{path}' does not exist locally, and" + f" '{pipeline_config.model_path}/{path}' does" + " not exist on HuggingFace." + ) + raise ValueError(msg) + + if pipeline_config.rope_type is None: + pipeline_config.rope_type = arch.rope_type + + self._estimate_memory_footprint(pipeline_config, arch) + + # If we pass validation ensure, the engine is set as MAX. + pipeline_config.engine = PipelineEngine.MAX + return pipeline_config + + def _estimate_memory_footprint( + self, + pipeline_config: PipelineConfig, + arch: SupportedArchitecture, + ): + model_cls = arch.pipeline_model + + try: + free_memory = int( + sum(d.stats["free_memory"] for d in pipeline_config.devices) + ) + except Exception as e: + logger.warning( + "Unable to estimate memory footprint of model, can't query device stats: " + + str(e) + ) + if not pipeline_config.max_batch_size: + pipeline_config.max_batch_size = 1 + if not pipeline_config.max_length: + pipeline_config.max_length = model_cls.calculate_max_seq_len( + pipeline_config + ) + return + + model_weights_size = model_cls.estimate_weights_size(pipeline_config) + + total_size = model_weights_size + available_kv_cache_memory = max(0, free_memory - model_weights_size) + available_kv_cache_memory = int( + available_kv_cache_memory + * pipeline_config.device_memory_utilization + ) + + user_provided_max_length = pipeline_config.max_length is not None + user_provided_max_batch_size = ( + pipeline_config.max_batch_size is not None + ) + if not user_provided_max_length: + pipeline_config.max_length = model_cls.calculate_max_seq_len( + pipeline_config + ) + + if not user_provided_max_batch_size: + pipeline_config.max_batch_size = self._infer_optimal_batch_size( + pipeline_config, model_cls, available_kv_cache_memory + ) + + actual_kv_cache_size = self._calculate_kv_cache_size( + model_cls, + pipeline_config, + available_kv_cache_memory, + ) + + pipeline_config._available_cache_memory = actual_kv_cache_size + + total_size += actual_kv_cache_size + + # If the model is too large to fit in memory, and the user did not + # specify a max_length, try to infer a value that would fit. + if total_size > free_memory and not user_provided_max_length: + original_max_length = pipeline_config.max_length + ( + found_valid_max_length, + inferred_max_length, + _, + ) = self._find_valid_max_length( + pipeline_config, + model_cls, + available_kv_cache_memory, + user_provided_max_batch_size, + ) + + if found_valid_max_length: + logger.warning( + f"Truncated model's default max_length from {original_max_length} to {inferred_max_length} to fit in memory." + ) + pipeline_config.max_length = inferred_max_length + actual_kv_cache_size = self._calculate_kv_cache_size( + model_cls, + pipeline_config, + available_kv_cache_memory, + ) + total_size = model_weights_size + actual_kv_cache_size + + if free_memory: + free_memory_str = f" / {_to_human_memory_size(free_memory)} free" + + weights_str = "" + if model_weights_size: + weights_str = f"\n\t Weights: {_to_human_memory_size(model_weights_size)}" + + if not user_provided_max_length: + max_length_str = f"Auto-inferred max sequence length: {pipeline_config.max_length}" + else: + max_length_str = ( + f"Current max sequence length: {pipeline_config.max_length}" + ) + + if not user_provided_max_batch_size: + max_batch_size_str = f"Auto-inferred max batch size: {pipeline_config.max_batch_size}" + else: + max_batch_size_str = ( + f"Current max batch size: {pipeline_config.max_batch_size}" + ) + + logging_str = ( + "\n" + f"\n\tEstimated memory consumption:" + f"{weights_str}" + f"\n\t KVCache allocation: {_to_human_memory_size(actual_kv_cache_size)}" + f"\n\t Total estimated: {_to_human_memory_size(model_weights_size + actual_kv_cache_size)} used{free_memory_str}" + f"\n\t{max_length_str}" + f"\n\t{max_batch_size_str}\n" + ) + logger.info(logging_str) + vram_usage_limit_scale = 0.95 + + if isinstance(free_memory, (int, float)): + if total_size > free_memory: + self._raise_oom_error( + pipeline_config, + user_provided_max_length, + user_provided_max_batch_size, + model_cls, + total_size, + free_memory, + available_kv_cache_memory, + model_weights_size, + ) + + elif total_size > vram_usage_limit_scale * free_memory: + logger.warning( + "Estimated model and kv cache memory use nears available memory. You may experience errors." + ) + + def _raise_oom_error( + self, + pipeline_config: PipelineConfig, + user_provided_max_length: bool, + user_provided_max_batch_size: bool, + model_cls: Type[PipelineModel], + total_size: int, + original_free_memory: int, + available_kv_cache_memory: int, + weights_size: int, + ) -> None: + """If we've determined the current configuration won't fit in device memory, + this method provides a friendly error message suggesting a viable configuration. + + The approach is to: + 1. Binary search max_length until we find a setting that works + 2. If user provided max_batch_size, binary search that too + 3. Generate appropriate suggestions based on this truth table: + + max_length + +----------------------+--------------------------+ + | set by user | set to default | + +----------------+======================+==========================+ + | set by user ║ Recommend both | Recommend max_batch_size | + max_batch_size +----------------+----------------------+--------------------------+ + | set to default ║ Recommend max_length | Recommend both | + +----------------+----------------------+--------------------------+ + """ + if weights_size > original_free_memory: + raise RuntimeError( + "Weights size exceeds available memory. Try running a smaller model, using a smaller precision, or using a device with more memory." + ) + + original_max_length = cast(int, pipeline_config.max_length) + original_max_batch_size = cast(int, pipeline_config.max_batch_size) + + # Find valid configurations through binary search + ( + found_valid_max_length, + inferred_max_length, + inferred_max_length_compatible_batch_size, + ) = self._find_valid_max_length( + pipeline_config, + model_cls, + available_kv_cache_memory, + user_provided_max_batch_size, + ) + + pipeline_config.max_batch_size = original_max_batch_size + + found_valid_max_batch_size, inferred_max_batch_size = ( + self._find_valid_batch_size( + pipeline_config, + model_cls, + available_kv_cache_memory, + original_max_length, + user_provided_max_batch_size, + ) + ) + + # Generate error message with suggestions + error_msg = self._generate_oom_error_message( + total_size=total_size, + original_free_memory=original_free_memory, + user_provided_max_length=user_provided_max_length, + user_provided_max_batch_size=user_provided_max_batch_size, + found_valid_max_length=found_valid_max_length, + found_valid_max_batch_size=found_valid_max_batch_size, + inferred_max_length=inferred_max_length, + inferred_max_batch_size=inferred_max_batch_size, + inferred_max_length_compatible_batch_size=inferred_max_length_compatible_batch_size, + original_max_length=original_max_length, + ) + + raise RuntimeError(error_msg) + + def _find_valid_max_length( + self, + pipeline_config: PipelineConfig, + model_cls: Type[PipelineModel], + available_kv_cache_memory: int, + user_provided_max_batch_size: bool, + ) -> tuple[bool, int, int]: + """Binary search to find a valid max_length configuration. + + Returns: + Tuple containing: + - found_valid_max_length: Whether a valid max_length was found + - inferred_max_length: The suggested max_length value + - inferred_max_length_compatible_batch_size: Compatible batch size for the max_length + """ + assert pipeline_config.max_length is not None + assert pipeline_config.max_batch_size is not None + + found_valid_max_length = False + lower = 1 + upper = pipeline_config.max_length + inferred_max_length = upper + + while not found_valid_max_length: + inferred_max_length = (lower + upper) // 2 + pipeline_config.max_length = inferred_max_length + + if not user_provided_max_batch_size: + pipeline_config.max_batch_size = self._infer_optimal_batch_size( + pipeline_config, model_cls, available_kv_cache_memory + ) + + kv_cache_size = self._calculate_kv_cache_size( + model_cls, pipeline_config, available_kv_cache_memory + ) + + if lower > upper: + break + elif upper - lower <= 1: + if kv_cache_size <= available_kv_cache_memory: + found_valid_max_length = True + break + + if kv_cache_size > available_kv_cache_memory: + upper = inferred_max_length - 1 + else: + lower = inferred_max_length + return ( + found_valid_max_length, + inferred_max_length, + pipeline_config.max_batch_size, + ) + + def _find_valid_batch_size( + self, + pipeline_config: PipelineConfig, + model_cls: Type[PipelineModel], + available_kv_cache_memory: int, + original_max_length: int, + user_provided_max_batch_size: bool, + ) -> tuple[bool, int]: + """Binary search to find a valid batch size configuration. + + Returns: + Tuple containing: + - found_valid_max_batch_size: Whether a valid batch size was found + - inferred_max_batch_size: The suggested batch size value. + If the user did not provide a batch size, this will be -1. + """ + if not user_provided_max_batch_size: + return False, -1 + + found_valid_max_batch_size = False + pipeline_config.max_length = original_max_length + inferred_max_batch_size = cast(int, pipeline_config.max_batch_size) + lower = 1 + upper = cast(int, pipeline_config.max_batch_size) + + while not found_valid_max_batch_size: + inferred_max_batch_size = (lower + upper) // 2 + pipeline_config.max_batch_size = inferred_max_batch_size + + kv_cache_size = self._calculate_kv_cache_size( + model_cls, pipeline_config, available_kv_cache_memory + ) + + if lower > upper: + break + elif upper - lower <= 1: + if kv_cache_size <= available_kv_cache_memory: + found_valid_max_batch_size = True + break + + if kv_cache_size > available_kv_cache_memory: + upper = inferred_max_batch_size - 1 + else: + lower = inferred_max_batch_size + + return found_valid_max_batch_size, inferred_max_batch_size + + def _calculate_kv_cache_size( + self, + model_cls: Type[PipelineModel], + pipeline_config: PipelineConfig, + available_kv_cache_memory: int, + ) -> int: + """Calculate the KV cache size for the current configuration.""" + if issubclass(model_cls, KVCacheMixin): + return model_cls.estimate_kv_cache_size( + pipeline_config=pipeline_config, + available_cache_memory=available_kv_cache_memory, + devices=pipeline_config.devices, + ) + return 0 + + def _generate_oom_error_message( + self, + total_size: int, + original_free_memory: int, + user_provided_max_length: bool, + user_provided_max_batch_size: bool, + found_valid_max_length: bool, + found_valid_max_batch_size: bool, + inferred_max_length: int, + inferred_max_batch_size: int, + inferred_max_length_compatible_batch_size: int, + original_max_length: int, + ) -> str: + """Generate an appropriate error message based on the configuration state.""" + free_memory_str = ( + f" / {_to_human_memory_size(original_free_memory)} free" + if original_free_memory + else "" + ) + + msg = StringIO() + msg.write( + f"Estimated model and kv cache memory use exceeds available memory ({_to_human_memory_size(total_size)} {free_memory_str}). Try " + ) + + if not found_valid_max_length and not found_valid_max_batch_size: + msg.write( + "reducing --max-length or --max-batch-size, finding a smaller model, or using a device with more memory." + ) + + elif user_provided_max_length: + self._add_user_provided_max_length_suggestions( + msg, + user_provided_max_batch_size, + found_valid_max_length, + found_valid_max_batch_size, + inferred_max_length, + inferred_max_batch_size, + inferred_max_length_compatible_batch_size, + ) + else: + self._add_default_max_length_suggestions( + msg, + user_provided_max_batch_size, + found_valid_max_length, + found_valid_max_batch_size, + inferred_max_length, + inferred_max_batch_size, + inferred_max_length_compatible_batch_size, + original_max_length, + ) + + msg.write(".") + return msg.getvalue() + + def _add_user_provided_max_length_suggestions( + self, + msg: StringIO, + user_provided_max_batch_size: bool, + found_valid_max_length: bool, + found_valid_max_batch_size: bool, + inferred_max_length: int, + inferred_max_batch_size: int, + inferred_max_length_compatible_batch_size: int, + ) -> None: + """Add error message suggestions when user provided max_length. + + This handles the top row of the truth table from the _raise_oom_error docstring. + + Args: + msg: StringIO buffer to write message to + user_provided_max_batch_size: Whether user provided batch size + found_valid_max_length: Whether valid max_length was found + found_valid_max_batch_size: Whether valid batch size was found + inferred_max_length: Suggested max_length value + inferred_max_batch_size: Suggested batch size value + inferred_max_length_compatible_batch_size: Compatible batch size for max_length + """ + if not user_provided_max_batch_size: + if found_valid_max_length: + msg.write( + f"reducing --max-length to {inferred_max_length} " + f"(supports batch size of {inferred_max_length_compatible_batch_size})" + ) + else: + msg.write("reducing --max-length or --max-batch-size") + else: + if found_valid_max_length: + msg.write( + f"reducing --max-length to {inferred_max_length} and " + f"--max-batch-size to {inferred_max_length_compatible_batch_size})" + ) + + if found_valid_max_batch_size: + if found_valid_max_length: + msg.write(" or ") + msg.write( + f"reducing --max-batch-size to {inferred_max_batch_size}" + ) + + def _add_default_max_length_suggestions( + self, + msg: StringIO, + user_provided_max_batch_size: bool, + found_valid_max_length: bool, + found_valid_max_batch_size: bool, + inferred_max_length: int, + inferred_max_batch_size: int, + inferred_max_length_compatible_batch_size: int, + original_max_length: int, + ) -> None: + """Add error message suggestions when max_length was set to default. + + This handles the bottom row of the truth table from the _raise_oom_error docstring. + + Args: + msg: StringIO buffer to write message to + user_provided_max_batch_size: Whether user provided batch size + found_valid_max_length: Whether valid max_length was found + found_valid_max_batch_size: Whether valid batch size was found + inferred_max_length: Suggested max_length value + inferred_max_batch_size: Suggested batch size value + inferred_max_length_compatible_batch_size: Compatible batch size for max_length + original_max_length: Original max_length value before modifications + """ + if not user_provided_max_batch_size: + if found_valid_max_length: + msg.write( + f"setting --max-length to {inferred_max_length} and " + f"--max-batch-size to {inferred_max_length_compatible_batch_size})" + ) + + if found_valid_max_batch_size: + if found_valid_max_length: + msg.write(" or ") + msg.write( + f"setting --max-batch-size to {inferred_max_batch_size}" + ) + + else: + if found_valid_max_batch_size: + msg.write( + f"reducing --max-batch-size to {inferred_max_batch_size}" + ) + if found_valid_max_length: + if found_valid_max_batch_size: + msg.write(" or ") + msg.write( + f"setting --max-length to {inferred_max_length} " + f"(currently defaulted to {original_max_length})" + ) + + def _infer_optimal_batch_size( + self, + pipeline_config: PipelineConfig, + model_cls: Type[PipelineModel], + available_kv_cache_memory: int, + ) -> int: + return model_cls.infer_optimal_batch_size( + pipeline_config, + available_kv_cache_memory, + ) + + def _load_logging_message( + self, + pipeline_config: PipelineConfig, + tokenizer_type: Type[PipelineTokenizer], + pipeline_name: str, + pipeline_model: str, + factory: bool, + ): + weight_path = ",\n ".join( + [ + f" {path}" + for path in pipeline_config.weight_path + ] + ) + factory_str = "factory" if factory else "" + + weights_repo_str = ( + f"\n weights_repo_id: {pipeline_config._weights_repo_id}" + if pipeline_config._weights_repo_id + else "" + ) + + devices_str = ", ".join( + f"{d.label}[{d.id}]" for d in pipeline_config.devices + ) + message = f""" + + Loading {tokenizer_type.__name__} and {pipeline_name}({pipeline_model}) {factory_str} for: + engine: {pipeline_config.engine} + architecture: {pipeline_config.architecture} + devices: {devices_str} + model_path: {pipeline_config.model_path}{weights_repo_str} + huggingface_revision: {pipeline_config.huggingface_revision} + quantization_encoding: {pipeline_config.quantization_encoding} + cache_strategy: {pipeline_config.cache_strategy} + weight_path: [ + {weight_path} + ] + """ + + return message + + def _set_hf_pipeline_defaults( + self, pipeline_config: PipelineConfig + ) -> PipelineConfig: + if pipeline_config.max_batch_size is None: + pipeline_config.max_batch_size = 1 + # HF pipelines always use custom continuous cache + pipeline_config.cache_strategy = KVCacheStrategy.CONTINUOUS + return pipeline_config + + def retrieve_factory( + self, + pipeline_config: PipelineConfig, + task: PipelineTask = PipelineTask.TEXT_GENERATION, + ) -> tuple[ + PipelineTokenizer, + Callable[[], TokenGenerator | EmbeddingsGenerator], + ]: + tokenizer: PipelineTokenizer + pipeline_factory: Callable[[], TokenGenerator | EmbeddingsGenerator] + + # Validate pipeline_config, and update missing values. + pipeline_config = self.validate_pipeline_config(pipeline_config) + if pipeline_config.engine == PipelineEngine.MAX: + # Keep MyPy happy. + assert pipeline_config.architecture is not None + + pipeline_class = _PIPELINE_TASK_MAP[task] + + # MAX pipeline + arch = self.architectures[pipeline_config.architecture] + logger.info( + self._load_logging_message( + pipeline_config=pipeline_config, + tokenizer_type=arch.tokenizer, + pipeline_model=arch.pipeline_model.__name__, + pipeline_name=pipeline_class.__name__, + factory=True, + ) + ) + + max_length = arch.pipeline_model.calculate_max_seq_len( + pipeline_config + ) + + # Old Mistral model like Mistral-7B-Instruct-v0.3 uses LlamaTokenizer + # and suffers from the whitespace decoding bug. So, we enable the fix + # for only MistralModel in order to avoid any issues with performance + # for rest of the models. This can be applied more generically once + # we have more time verifying this for all the models. + # More information: + # https://linear.app/modularml/issue/AIPIPE-197/add-support-for-mistral-7b-instruct-v03 + # TODO: remove this pipeline_model.__name__ check + if ( + arch.pipeline_model.__name__ in ("MistralModel", "Phi3Model") + and arch.tokenizer is TextTokenizer + ): + text_tokenizer = cast(Type[TextTokenizer], arch.tokenizer) + tokenizer = text_tokenizer( + pipeline_config.model_path, + revision=pipeline_config.huggingface_revision, + max_length=max_length, + max_new_tokens=pipeline_config.max_new_tokens, + trust_remote_code=pipeline_config.trust_remote_code, + enable_llama_whitespace_fix=True, + ) + else: + tokenizer = arch.tokenizer( + pipeline_config.model_path, + revision=pipeline_config.huggingface_revision, + max_length=max_length, + max_new_tokens=pipeline_config.max_new_tokens, + trust_remote_code=pipeline_config.trust_remote_code, + ) + + pipeline_factory = functools.partial( + pipeline_class, + pipeline_config=pipeline_config, + pipeline_model=arch.pipeline_model, + eos_token_id=tokenizer.eos, + ) + else: + pipeline_config = self._set_hf_pipeline_defaults(pipeline_config) + hf_pipeline_class = _HF_PIPELINE_TASK_MAP[task] + + torch_device_type = str(pipeline_config.device_specs[0].device_type) + if pipeline_config.device_specs[0].device_type == "gpu": + torch_device_type = "cuda" + torch.multiprocessing.set_start_method("spawn", force=True) + + # Generalized pipeline + tokenizer = TextTokenizer( + pipeline_config.model_path, + revision=pipeline_config.huggingface_revision, + max_length=pipeline_config.max_length, + max_new_tokens=pipeline_config.max_new_tokens, + trust_remote_code=pipeline_config.trust_remote_code, + enable_llama_whitespace_fix=True, + ) + logger.info( + self._load_logging_message( + pipeline_config=pipeline_config, + tokenizer_type=TextTokenizer, + pipeline_model="", + pipeline_name=hf_pipeline_class.__name__, + factory=True, + ) + ) + pipeline_factory = functools.partial( + hf_pipeline_class, + pipeline_config=pipeline_config, + torch_device_type=torch_device_type, + ) + + if tokenizer.eos is None: + msg = "tokenizer.eos value is None, tokenizer configuration is incomplete." + raise ValueError(msg) + + return tokenizer, pipeline_factory + + def retrieve( + self, + pipeline_config: PipelineConfig, + task: PipelineTask = PipelineTask.TEXT_GENERATION, + ) -> tuple[PipelineTokenizer, TokenGenerator | EmbeddingsGenerator]: + tokenizer, pipeline_factory = self.retrieve_factory( + pipeline_config, task + ) + return tokenizer, pipeline_factory() + + def reset(self) -> None: + self.architectures.clear() + + +PIPELINE_REGISTRY = PipelineRegistry([]) diff --git a/src/max/pipelines/requirements.txt b/src/max/pipelines/requirements.txt new file mode 100644 index 0000000000..708e101b5b --- /dev/null +++ b/src/max/pipelines/requirements.txt @@ -0,0 +1,38 @@ +# This was deleted as part of pipeline refactor +# https://github.com/modularml/modular/commit/d7e54f4a11b8f9a29e883d204dcacea90513db82#diff-b47636dfb4ba8723a713bfc288fdb324fa6e048067c7bbad0195795583edb21e +# But this is needed by benchmarking to setup the environment +# Adding this back for now to unblock. +click >= 8.1.7 +fastapi >= 0.111.0 +gguf >= 0.10.0 +requests >= 2.32.3 +sentencepiece >= 0.2.0 +tokenizers >= 0.19.1 +# PyTorch 2.5.1 with cuda support +torch == 2.5.1 +torchvision == 0.20.1 +torchaudio == 2.5.1 +transformers >= 4.44.2 +safetensors >= 0.4.5 +psutil + +# serve +hf-transfer>=0.1.9 +httpx>=0.28.1,<0.29 +huggingface-hub>=0.24.0 +opentelemetry-api>=1.29.0 +opentelemetry-exporter-otlp-proto-http>=1.27.0 +opentelemetry-exporter-prometheus>=0.48b0 +opentelemetry-sdk>=1.29.0 +pillow>=10.3.0 +prometheus-async>=22.2.0 +prometheus-client>=0.21.0 +pydantic-settings>=2.7.1 +pydantic +pyinstrument>=5.0.1 +python-json-logger>=2.0.7 +sentinel>=0.3.0 +sse-starlette>=2.1.2 +tokenizers>=0.19.0 +uvicorn>=0.34.0 +uvloop>=0.21.0 \ No newline at end of file diff --git a/src/max/pipelines/response.py b/src/max/pipelines/response.py new file mode 100644 index 0000000000..6154570afc --- /dev/null +++ b/src/max/pipelines/response.py @@ -0,0 +1,102 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +"""Standardized response object for Pipeline Inference.""" + +from __future__ import annotations + +from dataclasses import dataclass + +import numpy as np + + +class LogProbabilities: + """Log probabilities for an individual output token. + + Attributes: + token_log_probabilities (list[float]): Probabilities of each token. + top_log_probabilities (list[dict[int, float]]): Top tokens and their corresponding probabilities. + + """ + + def __init__( + self, + token_log_probabilities: list[float], + top_log_probabilities: list[dict[int, float]], + ) -> None: + self.token_log_probabilities = token_log_probabilities + self.top_log_probabilities = top_log_probabilities + + def __eq__(self, other: object) -> bool: + if not isinstance(other, LogProbabilities): + return False + + if len(self.token_log_probabilities) != len( + other.token_log_probabilities + ): + return False + + if not all( + a == b + for a, b in zip( + self.token_log_probabilities, other.token_log_probabilities + ) + ): + return False + + if len(self.top_log_probabilities) != len(other.top_log_probabilities): + return False + + if not all( + a == b + for a, b in zip( + self.top_log_probabilities, other.top_log_probabilities + ) + ): + return False + + return True + + +class TextResponse: + """A base class for model response, specifically for Text model variants. + + Attributes: + next_token (int | str): Encoded predicted next token. + log_probabilities (LogProbabilities | None): Log probabilities of each output token. + + """ + + def __init__( + self, + next_token: int | str, + log_probabilities: LogProbabilities | None = None, + ) -> None: + self.next_token = next_token + self.log_probabilities = log_probabilities + + def __eq__(self, value: object) -> bool: + if not isinstance(value, TextResponse): + return False + + return ( + self.next_token == value.next_token + and self.log_probabilities == value.log_probabilities + ) + + +@dataclass +class EmbeddingsResponse: + """Container for the response from embeddings pipeline.""" + + embeddings: np.ndarray diff --git a/src/max/pipelines/sampling.py b/src/max/pipelines/sampling.py new file mode 100644 index 0000000000..eda8e6e895 --- /dev/null +++ b/src/max/pipelines/sampling.py @@ -0,0 +1,95 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +"""Token sampling algorithms.""" + +from max.dtype import DType +from max.graph import Dim, Graph, Shape, TensorType, TensorValue, ops +from max.pipelines import SamplingParams + + +def _bitmask_sampler(sampling_params: SamplingParams) -> Graph: + logits_in_type = TensorType( + sampling_params.in_dtype, ["batch", "vocab_size"] + ) + prev_tokens_type = TensorType(DType.int64, ["batch", "num_prev_steps"]) + bitmask_type = TensorType(DType.bool, ["batch", "vocab_size"]) + + with Graph( + "bitmask_sampler", + input_types=[logits_in_type, prev_tokens_type, bitmask_type], + ) as graph: + # Deconstruct inputs and cast. + logits, prev_tokens, bitmask = (val.tensor for val in graph.inputs) + logits = ops.cast(logits, sampling_params.out_dtype) + + # Mask the logits out. + logits = ops.select( + bitmask, logits, ops.constant(-10000, dtype=DType.float32) + ) + + # Apply top_k or argmax sampling. + shape = Shape(logits.shape) + shape[-1] = Dim(1) + tokens = ops.custom( + "topk_fused_sampling", + [ + ops.constant(sampling_params.top_k, dtype=DType.int64), + logits, + ], + [TensorType(DType.int64, shape)], + )[0] + assert isinstance(tokens, TensorValue) + + all_tokens = ops.concat([prev_tokens, tokens], -1) + tokens = ops.squeeze(tokens, -1) + graph.output(tokens, all_tokens) + + return graph + + +def _vanilla_sampler(sampling_params: SamplingParams) -> Graph: + logits_in_type = TensorType( + sampling_params.in_dtype, ["batch", "vocab_size"] + ) + prev_tokens_type = TensorType(DType.int64, ["batch", "num_prev_steps"]) + with Graph( + "token_sampler", input_types=[logits_in_type, prev_tokens_type] + ) as graph: + logits, prev_tokens = (val.tensor for val in graph.inputs) + logits = ops.cast(logits, sampling_params.out_dtype) + + shape = Shape(logits.shape) + shape[-1] = Dim(1) + tokens = ops.custom( + "topk_fused_sampling", + [ + ops.constant(sampling_params.top_k, dtype=DType.int64), + logits, + ], + [TensorType(DType.int64, shape)], + )[0] + assert isinstance(tokens, TensorValue) + + all_tokens = ops.concat([prev_tokens, tokens], -1) + tokens = ops.squeeze(tokens, -1) + graph.output(tokens, all_tokens) + + return graph + + +def token_sampler(sampling_params: SamplingParams) -> Graph: + if sampling_params.enable_structured_output: + return _bitmask_sampler(sampling_params) + else: + return _vanilla_sampler(sampling_params) diff --git a/src/max/pipelines/tokenizer.py b/src/max/pipelines/tokenizer.py new file mode 100644 index 0000000000..03f4b73ae7 --- /dev/null +++ b/src/max/pipelines/tokenizer.py @@ -0,0 +1,518 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # +# mypy: disable-error-code="import-not-found" +"""Implementations of provided tokenizers.""" + +from __future__ import annotations + +import asyncio +import io +import json +import logging +from typing import Optional, Sequence, Union, cast + +import numpy as np +import torch +from PIL import Image +from transformers import ( + AutoProcessor, + AutoTokenizer, + CodeLlamaTokenizer, + CodeLlamaTokenizerFast, + LlamaTokenizer, + LlamaTokenizerFast, + PreTrainedTokenizer, + PreTrainedTokenizerFast, +) + +from .context import TextAndVisionContext, TextContext +from .interfaces import ( + PipelineTokenizer, + TokenGeneratorContext, + TokenGeneratorRequest, + TokenGeneratorRequestMessage, + TokenGeneratorRequestTool, +) + +logger = logging.getLogger("max.pipelines") + + +class IdentityPipelineTokenizer( + PipelineTokenizer[TokenGeneratorContext, str], +): + @property + def eos(self) -> int: + return 0 + + @property + def expects_content_wrapping(self) -> bool: + return False + + async def encode(self, prompt: str) -> str: + return prompt + + async def decode( + self, + context: TokenGeneratorContext, + encoded: str, + **kwargs, + ) -> str: + if isinstance(encoded, str): + return encoded + return "" + + +class PreTrainedPipelineTokenizer( + PipelineTokenizer[TokenGeneratorContext, np.ndarray] +): + def __init__( + self, + delegate: Union[PreTrainedTokenizer, PreTrainedTokenizerFast], + ) -> None: + assert isinstance( + delegate, (PreTrainedTokenizer, PreTrainedTokenizerFast) + ) + self.delegate = delegate + + def apply_chat_template( + self, messages: list[TokenGeneratorRequestMessage] + ) -> str: + try: + templated_message = self.delegate.apply_chat_template( + messages, tokenize=False, add_generation_prompt=True + ) + return cast(str, templated_message) + except Exception: + msg = ( + "apply_chat_template failed for" + " PreTrainedTokenGeneratorTokenizer" + ) + logger.warning(msg) + return "\n".join([str(message["content"]) for message in messages]) + + @property + def eos(self) -> int: + return self.delegate.eos_token_id + + @property + def expects_content_wrapping(self) -> bool: + return False + + async def encode(self, prompt: str) -> np.ndarray: + return np.array(self.delegate.encode(prompt)) + + async def decode( + self, + context: TokenGeneratorContext, + encoded: np.ndarray, + **kwargs, + ) -> str: + return self.delegate.decode(encoded, **kwargs) + + +def max_tokens_to_generate( + prompt_size: int, + max_length: int | None, + max_new_tokens: int | None = None, +) -> int | None: + """Returns the max number of new tokens to generate.""" + if max_length is None: + return max_new_tokens + _difference_between_max_and_prompt = max(max_length - prompt_size, 0) + if max_new_tokens is None: + return _difference_between_max_and_prompt + return min(max_new_tokens, _difference_between_max_and_prompt) + + +async def run_with_default_executor(fn, *args): + loop = asyncio.get_running_loop() + return await loop.run_in_executor(None, fn, *args) + + +class TextTokenizer(PipelineTokenizer[TextContext, np.ndarray]): + """Encapsulates creation of TextContext and specific token encode/decode logic.""" + + def __init__( + self, + model_path: str, + *, + revision: str | None = None, + max_length: int | None = None, + max_new_tokens: int | None = None, + trust_remote_code: bool = False, + enable_llama_whitespace_fix: bool = False, + ) -> None: + self.model_path = model_path + self.max_length = max_length + self.max_new_tokens = max_new_tokens + + self.delegate = AutoTokenizer.from_pretrained( + model_path, + revision=revision, + trust_remote_code=trust_remote_code, + # If `max_length` is None, the max length will be taken + # from the HuggingFace tokenizer_config. + model_max_length=max_length, + ) + + # configure Llama whitespace fix if needed + self._enable_llama_whitespace_fix = ( + enable_llama_whitespace_fix and self._is_llama_tokenizer + ) + ( + self._llama_whitespace_fix_dummy_token_id, + self._llama_whitespace_fix_dummy_token_len, + ) = self._llama_whitespace_fix_dummy_token + + def apply_chat_template( + self, + messages: list[TokenGeneratorRequestMessage], + tools: Optional[list[TokenGeneratorRequestTool]], + ) -> str: + try: + templated_message = self.delegate.apply_chat_template( + messages, + tokenize=False, + add_generation_prompt=True, + tools=tools, + ) + return cast(str, templated_message) + except Exception: + msg = ( + "apply_chat_template failed for" + f" TextTokenizer({self.model_path})" + ) + logger.warning(msg) + return "\n".join([str(message["content"]) for message in messages]) + + @property + def eos(self) -> int: + return self.delegate.eos_token_id + + @property + def expects_content_wrapping(self) -> bool: + return False + + async def encode(self, prompt: Union[str, Sequence[int]]) -> np.ndarray: + """Transform the provided prompt into a token array.""" + + encoded_prompt: np.ndarray + if isinstance(prompt, str): + # Note: the underlying tokenizer may not be thread safe in some cases, see https://github.com/huggingface/tokenizers/issues/537 + # Add a standard (non-async) lock in the executor thread if needed. + encoded_prompt = await run_with_default_executor( + self.delegate.encode, prompt + ) + max_length = self.max_length or self.delegate.model_max_length + if max_length and len(encoded_prompt) > max_length: + raise ValueError( + f"Input string is larger than tokenizer's max length ({len(encoded_prompt)} > {max_length})." + ) + else: + encoded_prompt = np.array(list(prompt)) + + return encoded_prompt + + async def decode( + self, context: TextContext, encoded: np.ndarray, **kwargs + ) -> str: + """Transformer a provided encoded token array, back into readable text.""" + # Sometimes, encoded comes in as an int so, make it np array + if isinstance(encoded, int): + encoded = np.array(encoded) + + # There is an issue where Llama tokenizer strips leading spaces + # if a single token is decoded at a time. This is a temporary + # fix until the issue resolved on the Tokenizers side. + # More information: + # https://github.com/huggingface/transformers/issues/31643 + # https://github.com/Lightning-AI/litgpt/pull/1559 + if self._enable_llama_whitespace_fix and encoded.size == 1: + return self._decode_with_llama_whitespace_fix(encoded, **kwargs) + + return self.delegate.decode(encoded, **kwargs) + + async def new_context(self, request: TokenGeneratorRequest) -> TextContext: + """Create a new TextContext object, leveraging necessary information like + cache_seq_id and prompt from TokenGeneratorRequest.""" + + prompt: Union[str, list[int]] + if request.prompt is not None: + if isinstance(request.prompt, str): + prompt = str(request.prompt) + else: + prompt = [int(t) for t in request.prompt] + elif request.messages is not None: + prompt = self.apply_chat_template(request.messages, request.tools) + else: + raise ValueError(f"{request} does not provide messages or prompt.") + + encoded_prompt = await self.encode(prompt) + + # TODO(zheng): We should probably just make max_new_tokens an optional + # instead of -1. + max_new_tokens = None + if request.max_new_tokens is not None: + max_new_tokens = request.max_new_tokens + elif self.max_new_tokens != -1: + max_new_tokens = self.max_new_tokens + + max_gen_tokens = max_tokens_to_generate( + len(encoded_prompt), + self.max_length, + max_new_tokens, + ) + + json_schema = ( + json.dumps(request.response_format.get("json_schema", None)) + if request.response_format + else None + ) + context = TextContext( + prompt=prompt, + cache_seq_id=request.index, + max_length=len(encoded_prompt) + max_gen_tokens + if max_gen_tokens is not None + else None, + tokens=np.array(encoded_prompt), + log_probabilities=request.logprobs, + log_probabilities_echo=request.echo, + json_schema=json_schema, + ) + return context + + @property + def _is_llama_tokenizer(self) -> bool: + tokenizers = ( + LlamaTokenizer, + LlamaTokenizerFast, + CodeLlamaTokenizer, + CodeLlamaTokenizerFast, + ) + return isinstance(self.delegate, tokenizers) + + @property + def _llama_whitespace_fix_dummy_token(self) -> tuple[int, int]: + dummy_token_id = 33 # \x1e + dummy_token_decoded = self.delegate.decode([dummy_token_id]) + return dummy_token_id, len(dummy_token_decoded) + + def _decode_with_llama_whitespace_fix( + self, encoded: np.ndarray, **kwargs + ) -> str: + decoded = self.delegate.decode( + np.insert(encoded, 0, self._llama_whitespace_fix_dummy_token_id), + **kwargs, + ) + return decoded[self._llama_whitespace_fix_dummy_token_len :] + + +class TextAndVisionTokenizer( + PipelineTokenizer[TextAndVisionContext, np.ndarray] +): + """Encapsulates creation of TextContext and specific token encode/decode logic.""" + + def __init__( + self, + model_path: str, + *, + revision: str | None = None, + max_length: int | None = None, + max_new_tokens: int | None = None, + trust_remote_code: bool = False, + ) -> None: + self.model_path = model_path + self.max_length = max_length + self.max_new_tokens = max_new_tokens + + self.delegate = AutoTokenizer.from_pretrained( + model_path, + revision=revision, + trust_remote_code=trust_remote_code, + # If `max_length` is None, the max length will be taken + # from the HuggingFace tokenizer_config. + model_max_length=max_length, + ) + self.processor = AutoProcessor.from_pretrained( + model_path, + revision=revision, + trust_remote_code=trust_remote_code, + ) + + def _wrap_str_message_content( + self, messages: list[TokenGeneratorRequestMessage] + ) -> list[TokenGeneratorRequestMessage]: + # Wrap string type values of "content" key with "type": "text" and its + # value. For example, if the message is {"content": "Hello, world!"}, + # it will be wrapped with {"type": "text", "text": "Hello, world!"}. + # This is a workaround for LlamaVision's chat template: + # https://huggingface.co/meta-llama/Llama-3.2-11B-Vision-Instruct/blob/main/chat_template.json + for message in messages: + if isinstance(message["content"], str): + message["content"] = [ + {"type": "text", "text": message["content"]} + ] + elif isinstance(message["content"], list): + for content in message["content"]: + if "content" in content and content["type"] == "text": + content["text"] = content.pop("content") + return messages + + def apply_chat_template( + self, messages: list[TokenGeneratorRequestMessage] + ) -> str: + # TODO: Refactor this. + if self.model_path == "meta-llama/Llama-3.2-11B-Vision-Instruct": + messages = self._wrap_str_message_content(messages) + try: + templated_message = self.processor.apply_chat_template( + messages, tokenize=False, add_generation_prompt=True + ) + return cast(str, templated_message) + except Exception as e: + msg = "apply_chat_template failed for TextAndVisionTokenizer" + logger.warning(msg) + logger.warning(str(e)) + prompt = [] + for message in messages: + if isinstance(message["content"], str): + prompt.append(message["content"]) + elif isinstance(message["content"], list): + for content in message["content"]: + if content["type"] == "text": + if "text" in content: + prompt.append(content["text"]) + else: + prompt.append(content["content"]) + return "\n".join(prompt) + + @property + def eos(self) -> int: + return self.delegate.eos_token_id + + @property + def expects_content_wrapping(self) -> bool: + return True + + async def encode(self, prompt: Union[str, Sequence[int]]) -> np.ndarray: + """Transform the provided prompt into a token array.""" + + encoded_prompt: np.ndarray + if isinstance(prompt, str): + # Note: the underlying tokenizer may not be thread safe in some cases, see https://github.com/huggingface/tokenizers/issues/537 + # Add a standard (non-async) lock in the executor thread if needed. + encoded_prompt = await run_with_default_executor( + self.delegate.encode, prompt + ) + max_length = self.max_length or self.delegate.model_max_length + if max_length and len(encoded_prompt) > max_length: + raise ValueError( + f"Input string is larger than tokenizer's max length ({len(encoded_prompt)} > {max_length})." + ) + else: + encoded_prompt = np.array(list(prompt)) + + return encoded_prompt + + async def decode( + self, context: TextAndVisionContext, encoded: np.ndarray, **kwargs + ) -> str: + """Transformer a provided encoded token array, back into readable text.""" + return self.delegate.decode(encoded, **kwargs) + + async def new_context( + self, request: TokenGeneratorRequest + ) -> TextAndVisionContext: + """Create a new TextAndVisionContext object, leveraging necessary information like + cache_seq_id and prompt from TokenGeneratorRequest.""" + prompt: Union[str, Sequence[int]] + if request.prompt is not None: + prompt = request.prompt + elif request.messages is not None: + prompt = self.apply_chat_template(request.messages) + else: + msg = f"{request} does not provide messages or prompt." + raise ValueError(msg) + + # Load images. + images = ( + [ + Image.open(io.BytesIO(image_data)) + for image_data in request.images + ] + if request.images + else None + ) + # PixtralProcessor returns a list of torch tensors. + # LlamaVision returns a np Array. + inputs = self.processor( + text=prompt, + images=images, + ) + + if "input_ids" not in inputs: + msg = "input_ids not provided in AutoProcessor output, please ensure you are using the correct processor for multi-modal inputs." + raise ValueError(msg) + encoded_prompt = np.array(inputs["input_ids"][0]) + + # TODO(zheng): We should probably just make max_new_tokens an optional + # instead of -1. + max_new_tokens = None + if request.max_new_tokens is not None: + max_new_tokens = request.max_new_tokens + elif self.max_new_tokens != -1: + max_new_tokens = self.max_new_tokens + + max_gen_tokens = max_tokens_to_generate( + encoded_prompt.shape[0], + self.max_length, + max_new_tokens, + ) + + extra_model_args = dict() + + if images is not None: + if "pixel_values" not in inputs: + msg = "pixel_values not provided in AutoProcessor output, please ensure you are using the correct processor for multi-modal inputs." + raise ValueError(msg) + pixel_values = inputs["pixel_values"][0] + if isinstance(pixel_values, list): + pixel_values = [ + tensor.numpy() if torch.is_tensor(tensor) else tensor + for tensor in pixel_values + ] + if "aspect_ratio_ids" in inputs: + extra_model_args["aspect_ratio_ids"] = inputs.aspect_ratio_ids + if "aspect_ratio_mask" in inputs: + extra_model_args["aspect_ratio_mask"] = inputs.aspect_ratio_mask + else: + pixel_values = [] + + json_schema = ( + json.dumps(request.response_format.get("json_schema", None)) + if request.response_format + else None + ) + + context = TextAndVisionContext( + prompt=prompt, + pixel_values=pixel_values, + extra_model_args=extra_model_args, + cache_seq_id=request.index, + tokens=encoded_prompt, + max_length=encoded_prompt.shape[0] + max_gen_tokens + if max_gen_tokens is not None + else None, + json_schema=json_schema, + ) + return context diff --git a/src/max/pixi.toml b/src/max/pixi.toml new file mode 100644 index 0000000000..6c2812dc86 --- /dev/null +++ b/src/max/pixi.toml @@ -0,0 +1,17 @@ +[project] +name = "max-pipelines-example" +channels = ["conda-forge", "https://conda.modular.com/max-nightly/"] +platforms = ["osx-arm64", "linux-aarch64", "linux-64"] +description = "MAX Pipelines" +version = "0.5.0" +authors = ["Modular Inc "] + +[dependencies] +max-pipelines = "*" + +[tasks] +llama3 = "max-pipelines llama3" +replit = "max-pipelines replit" +mistral = "max-pipelines mistral" +generate = "max-pipelines generate" +serve = "max-pipelines serve" diff --git a/tutorials/README.md b/tutorials/README.md new file mode 100644 index 0000000000..d5bca75fb9 --- /dev/null +++ b/tutorials/README.md @@ -0,0 +1,4 @@ +# MAX tutorials finished code + +This directory contains the "finished" code for tutorials you can read at +[docs.modular.com/max/tutorials](https://docs.modular.com/max/tutorials). diff --git a/tutorials/deploy-aws-kubernetes/README.md b/tutorials/deploy-aws-kubernetes/README.md new file mode 100644 index 0000000000..b319416118 --- /dev/null +++ b/tutorials/deploy-aws-kubernetes/README.md @@ -0,0 +1,6 @@ +# Tutorial: Deploy a model with Kubernetes and Helm + +This is the client code for the [Deploy a model with Kubernetes and +Helm](https://docs.modular.com/max/tutorials/deploy-aws-kubernetes) tutorial. + +Please refer to that page for more information. diff --git a/tutorials/deploy-aws-kubernetes/client.py b/tutorials/deploy-aws-kubernetes/client.py new file mode 100644 index 0000000000..076bc3c525 --- /dev/null +++ b/tutorials/deploy-aws-kubernetes/client.py @@ -0,0 +1,63 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +# suppress extraneous logging +import os + +os.environ["TRANSFORMERS_VERBOSITY"] = "critical" +os.environ["TOKENIZERS_PARALLELISM"] = "false" + +import numpy as np +import tritonclient.http as httpclient +from transformers import AutoTokenizer + +text = "Paris is the [MASK] of France." + +# Create a triton client +triton_client = httpclient.InferenceServerClient(url="127.0.0.1:8000") + +# Preprocess input statement +tokenizer = AutoTokenizer.from_pretrained("bert-base-uncased") +inputs = tokenizer( + text, + return_tensors="np", + return_token_type_ids=True, + padding="max_length", + truncation=True, + max_length=128, +) + +# Set the input data +triton_inputs = [ + httpclient.InferInput("input_ids", inputs["input_ids"].shape, "INT32"), + httpclient.InferInput( + "attention_mask", inputs["attention_mask"].shape, "INT32" + ), + httpclient.InferInput( + "token_type_ids", inputs["token_type_ids"].shape, "INT32" + ), +] +triton_inputs[0].set_data_from_numpy(inputs["input_ids"].astype(np.int32)) +triton_inputs[1].set_data_from_numpy(inputs["attention_mask"].astype(np.int32)) +triton_inputs[2].set_data_from_numpy(inputs["token_type_ids"].astype(np.int32)) + +# Executing +output = triton_client.infer("bert-base-uncased", triton_inputs) + +# Post-processing +masked_index = (inputs["input_ids"] == tokenizer.mask_token_id).nonzero()[1] +logits = output.as_numpy("result0")[0, masked_index, :] +predicted_token_ids = logits.argmax(axis=-1) +predicted_text = tokenizer.decode(predicted_token_ids) +output_text = text.replace("[MASK]", predicted_text) +print(output_text) diff --git a/tutorials/deploy-cloudformation-sagemaker/README.md b/tutorials/deploy-cloudformation-sagemaker/README.md new file mode 100644 index 0000000000..9cd602e606 --- /dev/null +++ b/tutorials/deploy-cloudformation-sagemaker/README.md @@ -0,0 +1,7 @@ +# Tutorial: Deploy a model with AWS CloudFormation + +This is the client code for the [Deploy a model with with AWS +CloudFormation](https://docs.modular.com/max/tutorials/deploy-cloudformation-sagemaker) +tutorial. + +Please refer to that page for more information. diff --git a/tutorials/deploy-cloudformation-sagemaker/client.py b/tutorials/deploy-cloudformation-sagemaker/client.py new file mode 100644 index 0000000000..8e39608aa4 --- /dev/null +++ b/tutorials/deploy-cloudformation-sagemaker/client.py @@ -0,0 +1,116 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +# suppress extraneous logging +import os + +os.environ["TRANSFORMERS_VERBOSITY"] = "critical" + +import json + +import boto3 +import numpy as np +import transformers +from botocore.config import Config + +config = Config(region_name="us-east-1") +client = boto3.client("sagemaker-runtime", config=config) + +# NOTE: Paste your endpoint here +endpoint_name = "YOUR-ENDPOINT-GOES-HERE" + +text = "The quick brown fox jumped over the lazy dog." + +tokenizer = transformers.BertTokenizer.from_pretrained("bert-base-uncased") +inputs = tokenizer( + text, padding="max_length", max_length=128, return_tensors="pt" +) + +# Convert tensor inputs to list for payload +input_ids = inputs["input_ids"].tolist()[0] +attention_mask = inputs["attention_mask"].tolist()[0] +token_type_ids = inputs["token_type_ids"].tolist()[0] + +payload = { + "inputs": [ + { + "name": "input_ids", + "shape": [1, 128], + "datatype": "INT32", + "data": input_ids, + }, + { + "name": "attention_mask", + "shape": [1, 128], + "datatype": "INT32", + "data": attention_mask, + }, + { + "name": "token_type_ids", + "shape": [1, 128], + "datatype": "INT32", + "data": token_type_ids, + }, + ] +} + +http_response = client.invoke_endpoint( + EndpointName=endpoint_name, + ContentType="application/octet-stream", + Body=json.dumps(payload), +) +response = json.loads(http_response["Body"].read().decode("utf8")) +outputs = response["outputs"] + + +def softmax(logits): + exp_logits = np.exp(logits - np.max(logits)) + return exp_logits / exp_logits.sum(axis=-1, keepdims=True) + + +# Process the output +for output in outputs: + logits = output["data"] + logits = np.array(logits).reshape(output["shape"]) + + print(f"Logits shape: {logits.shape}") + + if ( + len(logits.shape) == 3 + ): # Shape [batch_size, sequence_length, num_classes] + token_probabilities = softmax(logits) + predicted_classes = np.argmax(token_probabilities, axis=-1) + + print(f"Predicted classes shape: {predicted_classes.shape}") + print( + f"Predicted class indices range: {np.min(predicted_classes)}," + f" {np.max(predicted_classes)}" + ) + + # Map predicted indices to tokens + predicted_tokens = tokenizer.convert_ids_to_tokens(predicted_classes[0]) + + # Pair each input token with its predicted token + input_tokens = tokenizer.convert_ids_to_tokens(input_ids) + token_pairs = list(zip(input_tokens, predicted_tokens)) + + print("Predicted Token Pairs:") + print("-" * 45) + print("| {:<20} | {:<18} |".format("Input Token", "Predicted Token")) + print("-" * 45) + for input_token, predicted_token in token_pairs: + if input_token != "[PAD]": # Exclude padding tokens + print( + "| {:<20} | {:<18} |".format(input_token, predicted_token) + ) + print("-" * 45) diff --git a/tutorials/hello-magic/.gitattributes b/tutorials/hello-magic/.gitattributes new file mode 100644 index 0000000000..07fe41c52c --- /dev/null +++ b/tutorials/hello-magic/.gitattributes @@ -0,0 +1,2 @@ +# GitHub syntax highlighting +pixi.lock linguist-language=YAML linguist-generated=true diff --git a/tutorials/hello-magic/.gitignore b/tutorials/hello-magic/.gitignore new file mode 100644 index 0000000000..bd58f98a84 --- /dev/null +++ b/tutorials/hello-magic/.gitignore @@ -0,0 +1,5 @@ +# pixi environments +.pixi +*.egg-info +# magic environments +.magic diff --git a/tutorials/hello-magic/hello.mojo b/tutorials/hello-magic/hello.mojo new file mode 100644 index 0000000000..7630652a0d --- /dev/null +++ b/tutorials/hello-magic/hello.mojo @@ -0,0 +1,16 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + + +def main(): + print("hello, magic!") diff --git a/tutorials/hello-magic/local/.gitattributes b/tutorials/hello-magic/local/.gitattributes new file mode 100644 index 0000000000..07fe41c52c --- /dev/null +++ b/tutorials/hello-magic/local/.gitattributes @@ -0,0 +1,2 @@ +# GitHub syntax highlighting +pixi.lock linguist-language=YAML linguist-generated=true diff --git a/tutorials/hello-magic/local/.gitignore b/tutorials/hello-magic/local/.gitignore new file mode 100644 index 0000000000..bd58f98a84 --- /dev/null +++ b/tutorials/hello-magic/local/.gitignore @@ -0,0 +1,5 @@ +# pixi environments +.pixi +*.egg-info +# magic environments +.magic diff --git a/tutorials/hello-magic/local/__init__.mojo b/tutorials/hello-magic/local/__init__.mojo new file mode 100644 index 0000000000..ccf277134c --- /dev/null +++ b/tutorials/hello-magic/local/__init__.mojo @@ -0,0 +1,14 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from .zero import zero diff --git a/tutorials/hello-magic/local/mojoproject.toml b/tutorials/hello-magic/local/mojoproject.toml new file mode 100644 index 0000000000..27267f0813 --- /dev/null +++ b/tutorials/hello-magic/local/mojoproject.toml @@ -0,0 +1,13 @@ +[project] +platforms = ["osx-arm64", "linux-64"] +version = "0.0.0" +authors = ["Modular "] +channels = ["pytorch", "conda-forge", "https://conda.modular.com/max-nightly/"] +description = "Add a short description here" +name = "local" + +[tasks] + +[dependencies] +max = ">=24.4.0,<25" +pytorch = ">=2.5.1,<3" diff --git a/tutorials/hello-magic/local/zero.mojo b/tutorials/hello-magic/local/zero.mojo new file mode 100644 index 0000000000..83cbaecd3c --- /dev/null +++ b/tutorials/hello-magic/local/zero.mojo @@ -0,0 +1,23 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from python import Python, PythonObject + + +def zero() -> PythonObject: + torch = Python.import_module("torch") + return torch.zeros(1) + + +def main(): + print(zero()) diff --git a/tutorials/hello-magic/main.py b/tutorials/hello-magic/main.py new file mode 100644 index 0000000000..d6f77a6dbe --- /dev/null +++ b/tutorials/hello-magic/main.py @@ -0,0 +1,47 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +import subprocess + +from fastapi import FastAPI, HTTPException + +app = FastAPI() + + +@app.get("/") +def root(): + return {"message": "Hello, magic!"} + + +@app.get("/zero") +def zero(): + try: + p = subprocess.Popen( + ["magic", "run", "mojo", "local/zero.mojo"], + stdout=subprocess.PIPE, + stderr=subprocess.STDOUT, + text=True, + ) + while True: + output = p.stdout.readline() + if output == "" and p.poll() is not None: + raise HTTPException( + status_code=500, detail="Failed to produce zero" + ) + + return {"message": f"answer is {output}"} + + except subprocess.SubprocessError: + raise HTTPException( + status_code=500, detail="Failed to execute subprocess" + ) diff --git a/tutorials/hello-magic/mojoproject.toml b/tutorials/hello-magic/mojoproject.toml new file mode 100644 index 0000000000..201ce3b96e --- /dev/null +++ b/tutorials/hello-magic/mojoproject.toml @@ -0,0 +1,30 @@ +[project] +authors = ["Modular "] +channels = ["pytorch", "conda-forge", "https://conda.modular.com/max-nightly/"] +description = "Add a short description here" +name = "hello-magic" +platforms = ["osx-arm64", "linux-64"] +version = "0.1.0" + +[tasks] +hello = "mojo hello.mojo" +dev-server = "fastapi dev main.py" +format = "mojo format ." + +[dependencies] +max = ">=24.4.0,<25" +python = ">=3.8,<3.12" +pytorch = ">=2.5.1,<3" + +[pypi-dependencies] +fastapi = ">=0.115.0" + +[feature.test.tasks] +test = "pytest" + +[feature.test.pypi-dependencies] +pytest = ">=8.3.2, <9" + +[environments] +default = { solve-group = "default" } +test = { features = ["test"], solve-group = "default" } diff --git a/tutorials/helm/max-openai-api/.helmignore b/tutorials/helm/max-openai-api/.helmignore new file mode 100644 index 0000000000..7c4ce2fca1 --- /dev/null +++ b/tutorials/helm/max-openai-api/.helmignore @@ -0,0 +1,19 @@ +.DS_Store +# Common VCS dirs +.git/ +.gitignore +.bzr/ +.bzrignore +.hg/ +.hgignore +.svn/ +# Common backup files +*.swp +*.bak +*.tmp +*~ +# Various IDEs +.project +.idea/ +*.tmproj +bin \ No newline at end of file diff --git a/tutorials/helm/max-openai-api/Chart.yaml b/tutorials/helm/max-openai-api/Chart.yaml new file mode 100644 index 0000000000..c930088dd6 --- /dev/null +++ b/tutorials/helm/max-openai-api/Chart.yaml @@ -0,0 +1,28 @@ +##===----------------------------------------------------------------------===## +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +##===----------------------------------------------------------------------===## + +git apiVersion: v2 +appVersion: "0.1.0" +description: The MAX platform unifies the leading AI development frameworks (TensorFlow, PyTorch, ONNX) and hardware backends in order to simplify deployment for AI production teams and accelerate innovation for AI developers. +name: max-openai-api-chart +home: https://www.modular.com/ +keywords: + - machine learning + - inference +sources: + - https://github.com/modular/max +maintainers: + - name: Modular team + email: max-feedback@modular.com + url: https://github.com/modular/max +version: 0.1.0 diff --git a/tutorials/helm/max-openai-api/README.md b/tutorials/helm/max-openai-api/README.md new file mode 100644 index 0000000000..5af9a9380c --- /dev/null +++ b/tutorials/helm/max-openai-api/README.md @@ -0,0 +1,193 @@ + + + +# MAX OpenAI API Helm chart + +The MAX platform unifies the leading AI development frameworks (TensorFlow, PyTorch, ONNX) and hardware backends in order to simplify deployment for AI production teams and accelerate innovation for AI developers. + +**Homepage:** + +## Source Code + +* + +## Usage + +### Installing the chart + +To install this chart using Helm 3, run the following command: + +```console +helm install max-openai-api oci://registry-1.docker.io/modular/max-openai-api-chart \ + --version \ + --set huggingfaceRepoId= + --set maxServe.maxLength=512 \ + --set maxServe.maxBatchSize=16 \ + --set envSecret.HF_TOKEN= \ + --set env.HF_HUB_ENABLE_HF_TRANSFER=1 \ + --wait +``` + +The command deploys MAX OpenAI API on the Kubernetes cluster in the default configuration. The Values reference section below lists the parameters that can be configured during installation. + +### Upgrading the chart + +To upgrade the chart with the release name `max-openai-api`: + +```console +helm upgrade max-openai-api oci://registry-1.docker.io/modular/max-openai-api-chart +``` + +### Uninstalling the chart + +To uninstall/delete the `max-openai-api` deployment: + +```console +helm delete max-openai-api +``` + +### End-to-end example that provisions an K8s cluster and installs MAX OpenAI API + +To provision a k8s cluster via `eksctl` and then install MAX OpenAI API, run the following commands: + +```console +# provision a k8s cluster (takes 10-15 minutes) +eksctl create cluster \ + --name max-openai-api-demo \ + --region us-east-1 \ + --node-type g5.4xlarge \ + --nodes 1 + +# create a k8s namespace +kubectl create namespace max-openai-api-demo + +# deploy MAX OpenAI API via helm chart (takes 10 minutes) +helm install max-openai-api oci://registry-1.docker.io/modular/max-openai-api-chart \ + --version \ + --namespace max-openai-api-demo \ + --set huggingfaceRepoId=modularai/Llama-3.1-8B-Instruct-GGUF + --set maxServe.maxLength=512 \ + --set maxServe.maxBatchSize=16 \ + --set envSecret.HF_TOKEN= \ + --set env.HF_HUB_ENABLE_HF_TRANSFER=1 \ + --timeout 10m0s \ + --wait + +# forward the remote k8s port to the local network to access the service locally +# the command is blocking and takes the terminal +# user another terminal for subsequent curl and ctrl-c to stop the port forwarding +POD_NAME=$(kubectl get pods --namespace max-openai-api-demo -l "app.kubernetes.io/name=max-openai-api-chart,app.kubernetes.io/instance=max-openai-api" -o jsonpath="{.items[0].metadata.name}") +CONTAINER_PORT=$(kubectl get pod --namespace max-openai-api-demo $POD_NAME -o jsonpath="{.spec.containers[0].ports[0].containerPort}") +kubectl port-forward $POD_NAME 8000:$CONTAINER_PORT --namespace max-openai-api-demo & + +# test the service +curl -N http://localhost:8000/v1/chat/completions \ + -H "Content-Type: application/json" \ + -d '{ + "model": "modularai/Llama-3.1-8B-Instruct-GGUF", + "stream": true, + "messages": [ + {"role": "system", "content": "You are a helpful assistant."}, + {"role": "user", "content": "Who won the world series in 2020?"} + ] + }' + +# uninstall MAX OpenAI API +helm uninstall max-openai-api --namespace max-openai-api-demo + +# Delete the namespace +kubectl delete namespace max-openai-api-demo + +# delete the k8s cluster +eksctl delete cluster \ + --name max-openai-api-demo \ + --region us-east-1 +``` + +## Values + +| Key | Type | Default | Description | +|-----|------|---------|-------------| +| affinity | object | `{}` | Affinity to be added to all deployments | +| env | object | `{}` | Environment variables that will be passed into pods | +| envFromSecret | string | `"{{ template \"max.fullname\" . }}-env"` | The name of the secret which we will use to populate env vars in deployed pods This can be useful for secret keys, etc. | +| envFromSecrets | list | `[]` | This can be a list of templated strings | +| envRaw | list | `[]` | Environment variables in RAW format that will be passed into pods | +| envSecret | object | `{}` | Environment variables to pass as secrets | +| fullnameOverride | string | `nil` | Provide a name to override the full names of resources | +| image.pullPolicy | string | `"IfNotPresent"` | | +| image.repository | string | `"modular/max-openai-api"` | | +| image.tag | string | `"latest"` | | +| imagePullSecrets | list | `[]` | | +| inferenceServer.affinity | object | `{}` | Affinity to be added to inferenceServer deployment | +| inferenceServer.args | list | See `values.yaml` | Arguments to pass to the node entrypoint. If defined it overwrites the default args value set by .Values.max-serve | +| inferenceServer.autoscaling.enabled | bool | `false` | | +| inferenceServer.autoscaling.maxReplicas | int | `2` | | +| inferenceServer.autoscaling.minReplicas | int | `1` | | +| inferenceServer.autoscaling.targetCPUUtilizationPercentage | int | `80` | | +| inferenceServer.containerSecurityContext | object | `{}` | | +| inferenceServer.deploymentAnnotations | object | `{}` | Annotations to be added to inferenceServer deployment | +| inferenceServer.deploymentLabels | object | `{}` | Labels to be added to inferenceServer deployment | +| inferenceServer.env | object | `{}` | | +| inferenceServer.extraContainers | list | `[]` | Launch additional containers into inferenceServer pod | +| inferenceServer.livenessProbe.failureThreshold | int | `3` | | +| inferenceServer.livenessProbe.httpGet.path | string | `"/v1/health"` | | +| inferenceServer.livenessProbe.httpGet.port | string | `"http"` | | +| inferenceServer.livenessProbe.initialDelaySeconds | int | `1` | | +| inferenceServer.livenessProbe.periodSeconds | int | `15` | | +| inferenceServer.livenessProbe.successThreshold | int | `1` | | +| inferenceServer.livenessProbe.timeoutSeconds | int | `1` | | +| inferenceServer.nodeSelector | object | `{}` | NodeSelector to be added to inferenceServer deployment | +| inferenceServer.podAnnotations | object | `{}` | Annotations to be added to inferenceServer pods | +| inferenceServer.podLabels | object | `{}` | Labels to be added to inferenceServer pods | +| inferenceServer.podSecurityContext | object | `{}` | | +| inferenceServer.readinessProbe.failureThreshold | int | `3` | | +| inferenceServer.readinessProbe.httpGet.path | string | `"/v1/health"` | | +| inferenceServer.readinessProbe.httpGet.port | string | `"http"` | | +| inferenceServer.readinessProbe.initialDelaySeconds | int | `1` | | +| inferenceServer.readinessProbe.periodSeconds | int | `15` | | +| inferenceServer.readinessProbe.successThreshold | int | `1` | | +| inferenceServer.readinessProbe.timeoutSeconds | int | `1` | | +| inferenceServer.replicaCount | int | `1` | | +| inferenceServer.resources | object | `{}` | Resource settings for the inferenceServer pods - these settings overwrite existing values from the global resources object defined above. | +| inferenceServer.startupProbe.failureThreshold | int | `60` | | +| inferenceServer.startupProbe.httpGet.path | string | `"/v1/health"` | | +| inferenceServer.startupProbe.httpGet.port | string | `"http"` | | +| inferenceServer.startupProbe.initialDelaySeconds | int | `1` | | +| inferenceServer.startupProbe.periodSeconds | int | `5` | | +| inferenceServer.startupProbe.successThreshold | int | `1` | | +| inferenceServer.startupProbe.timeoutSeconds | int | `1` | | +| inferenceServer.strategy | object | `{}` | | +| inferenceServer.tolerations | list | `[]` | Tolerations to be added to inferenceServer deployment | +| inferenceServer.topologySpreadConstraints | list | `[]` | TopologySpreadConstrains to be added to inferenceServer deployments | +| inferenceServer.volumeMounts | list | `[]` | Volumes to mount into inferenceServer pod | +| inferenceServer.volumes | list | `[]` | Volumes to mount into inferenceServer pod | +| ingress.annotations | object | `{}` | | +| ingress.enabled | bool | `false` | | +| ingress.extraHostsRaw | list | `[]` | | +| ingress.hosts | list | `[]` | | +| ingress.ingressClassName | string | `nil` | | +| ingress.path | string | `"/"` | | +| ingress.pathType | string | `"ImplementationSpecific"` | | +| ingress.tls | list | `[]` | | +| maxServe | object | `{"cacheStrategy":"continuous","huggingfaceRepoId":"modularai/Llama-3.1-8B-Instruct-GGUF","maxBatchSize":"250","maxLength":"2048","maxNumSteps":"10"}` | MAX Serve arguments | +| nameOverride | string | `nil` | Provide a name to override the name of the chart | +| nodeSelector | object | `{}` | NodeSelector to be added to all deployments | +| resources | object | `{}` | | +| runAsUser | int | `0` | User ID directive. This user must have enough permissions to run the bootstrap script Running containers as root is not recommended in production. Change this to another UID - e.g. 1000 to be more secure | +| service.annotations | object | `{}` | | +| service.loadBalancerIP | string | `nil` | | +| service.ports[0].name | string | `"http"` | | +| service.ports[0].port | int | `8000` | | +| service.ports[0].protocol | string | `"TCP"` | | +| service.ports[0].targetPort | int | `8000` | | +| service.type | string | `"ClusterIP"` | | +| serviceAccount.annotations | object | `{}` | | +| serviceAccount.create | bool | `false` | Create custom service account for MAX Serving. If create: true and serviceAccountName is not provided, `max.fullname` will be used. | +| serviceAccountName | string | `nil` | Specify service account name to be used | +| tolerations | list | `[]` | Tolerations to be added to all deployments | +| topologySpreadConstraints | list | `[]` | TopologySpreadConstraints to be added to all deployments | +| volumeMounts | list | `[]` | | +| volumes | list | `[]` | | diff --git a/tutorials/helm/max-openai-api/README.md.gotmpl b/tutorials/helm/max-openai-api/README.md.gotmpl new file mode 100644 index 0000000000..f64ee8a86c --- /dev/null +++ b/tutorials/helm/max-openai-api/README.md.gotmpl @@ -0,0 +1,112 @@ + + + +# MAX OpenAI API Helm chart + +{{ template "chart.deprecationWarning" . }} + +{{ template "chart.description" . }} + +{{ template "chart.homepageLine" . }} + +{{ template "chart.sourcesSection" . }} + +## Usage + +### Installing the chart + +To install this chart using Helm 3, run the following command: + +```console +helm install max-openai-api oci://registry-1.docker.io/modular/max-openai-api-chart \ + --version \ + --set huggingfaceRepoId= + --set maxServe.maxLength=512 \ + --set maxServe.maxBatchSize=16 \ + --set envSecret.HF_TOKEN= \ + --set env.HF_HUB_ENABLE_HF_TRANSFER=1 \ + --wait +``` + +The command deploys MAX OpenAI API on the Kubernetes cluster in the default configuration. The Values reference section below lists the parameters that can be configured during installation. + +### Upgrading the chart + +To upgrade the chart with the release name `max-openai-api`: + +```console +helm upgrade max-openai-api oci://registry-1.docker.io/modular/max-openai-api-chart +``` + +### Uninstalling the chart + +To uninstall/delete the `max-openai-api` deployment: + +```console +helm delete max-openai-api +``` + +### End-to-end example that provisions an K8s cluster and installs MAX OpenAI API + +To provision a k8s cluster via `eksctl` and then install MAX OpenAI API, run the following commands: + +```console +# provision a k8s cluster (takes 10-15 minutes) +eksctl create cluster \ + --name max-openai-api-demo \ + --region us-east-1 \ + --node-type g5.4xlarge \ + --nodes 1 + +# create a k8s namespace +kubectl create namespace max-openai-api-demo + +# deploy MAX OpenAI API via helm chart (takes 10 minutes) +helm install max-openai-api oci://registry-1.docker.io/modular/max-openai-api-chart \ + --version \ + --namespace max-openai-api-demo \ + --set huggingfaceRepoId=modularai/Llama-3.1-8B-Instruct-GGUF + --set maxServe.maxLength=512 \ + --set maxServe.maxBatchSize=16 \ + --set envSecret.HF_TOKEN= \ + --set env.HF_HUB_ENABLE_HF_TRANSFER=1 \ + --timeout 10m0s \ + --wait + +# forward the remote k8s port to the local network to access the service locally +# the command is blocking and takes the terminal +# user another terminal for subsequent curl and ctrl-c to stop the port forwarding +POD_NAME=$(kubectl get pods --namespace max-openai-api-demo -l "app.kubernetes.io/name=max-openai-api-chart,app.kubernetes.io/instance=max-openai-api" -o jsonpath="{.items[0].metadata.name}") +CONTAINER_PORT=$(kubectl get pod --namespace max-openai-api-demo $POD_NAME -o jsonpath="{.spec.containers[0].ports[0].containerPort}") +kubectl port-forward $POD_NAME 8000:$CONTAINER_PORT --namespace max-openai-api-demo & + +# test the service +curl -N http://localhost:8000/v1/chat/completions \ + -H "Content-Type: application/json" \ + -d '{ + "model": "modularai/Llama-3.1-8B-Instruct-GGUF", + "stream": true, + "messages": [ + {"role": "system", "content": "You are a helpful assistant."}, + {"role": "user", "content": "Who won the world series in 2020?"} + ] + }' + +# uninstall MAX OpenAI API +helm uninstall max-openai-api --namespace max-openai-api-demo + +# Delete the namespace +kubectl delete namespace max-openai-api-demo + +# delete the k8s cluster +eksctl delete cluster \ + --name max-openai-api-demo \ + --region us-east-1 +``` + + +{{ template "chart.requirementsSection" . }} + +{{ template "chart.valuesSection" . }} diff --git a/tutorials/helm/max-openai-api/templates/NOTES.txt b/tutorials/helm/max-openai-api/templates/NOTES.txt new file mode 100644 index 0000000000..b6ed1cdc8d --- /dev/null +++ b/tutorials/helm/max-openai-api/templates/NOTES.txt @@ -0,0 +1,22 @@ +1. Get the application URL by running these commands: +{{- if .Values.ingress.enabled }} + {{- range .Values.ingress.hosts }} + http{{ if $.Values.ingress.tls }}s{{ end }}://{{ . }}{{ $.Values.ingress.path }} + {{- end }} +{{- else if contains "NodePort" .Values.service.type }} + NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ template "max.fullname" . }}) + NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}") + echo http://$NODE_IP:$NODE_PORT +{{- else if contains "LoadBalancer" .Values.service.type }} + NOTE: It may take a few minutes for the LoadBalancer IP to be available. + You can watch the status of by running 'kubectl get svc -w {{ template "max.fullname" . }}' + SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ template "max.fullname" . }} -o jsonpath='{.status.loadBalancer.ingress[0].ip}') + echo http://$SERVICE_IP:{{ .Values.service.port }} +{{- else if contains "ClusterIP" .Values.service.type }} + POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app.kubernetes.io/name={{ template "max.name" . }},app.kubernetes.io/instance={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}") + CONTAINER_PORT=$(kubectl get pod --namespace {{ .Release.Namespace }} $POD_NAME -o jsonpath="{.spec.containers[0].ports[0].containerPort}") + echo "The application is available at the following DNS name from within your cluster:" + echo "{{ .Release.Name }}.{{ .Release.Namespace }}.svc.cluster.local:$CONTAINER_PORT" + echo "Or use the following command to forward ports and visit it locally at http://127.0.0.1:8000" + echo "kubectl port-forward $POD_NAME 8000:$CONTAINER_PORT --namespace {{ .Release.Namespace }}" +{{- end }} diff --git a/tutorials/helm/max-openai-api/templates/_helpers.tpl b/tutorials/helm/max-openai-api/templates/_helpers.tpl new file mode 100644 index 0000000000..47a043060a --- /dev/null +++ b/tutorials/helm/max-openai-api/templates/_helpers.tpl @@ -0,0 +1,43 @@ +{{/* vim: set filetype=mustache: */}} +{{/* +Expand the name of the chart. +*/}} +{{- define "max.name" -}} + {{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}} +{{- end -}} + +{{/* +Create a default fully qualified app name. +We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). +If release name contains chart name it will be used as a full name. +*/}} +{{- define "max.fullname" -}} + {{- if .Values.fullnameOverride -}} + {{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}} + {{- else -}} + {{- $name := default .Chart.Name .Values.nameOverride -}} + {{- if contains $name .Release.Name -}} + {{- .Release.Name | trunc 63 | trimSuffix "-" -}} + {{- else -}} + {{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}} + {{- end -}} + {{- end -}} +{{- end -}} + +{{/* +Create the name of the service account to use +*/}} +{{- define "max.serviceAccountName" -}} + {{- if .Values.serviceAccount.create -}} + {{- default (include "max.fullname" .) .Values.serviceAccountName -}} + {{- else -}} + {{- default "default" .Values.serviceAccountName -}} + {{- end -}} +{{- end -}} + +{{/* +Create chart name and version as used by the chart label. +*/}} +{{- define "max.chart" -}} + {{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}} +{{- end -}} diff --git a/tutorials/helm/max-openai-api/templates/deployment.yaml b/tutorials/helm/max-openai-api/templates/deployment.yaml new file mode 100644 index 0000000000..9ce59c5c55 --- /dev/null +++ b/tutorials/helm/max-openai-api/templates/deployment.yaml @@ -0,0 +1,181 @@ +##===----------------------------------------------------------------------===## +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +##===----------------------------------------------------------------------===## +apiVersion: apps/v1 +kind: Deployment +metadata: + name: {{ template "max.fullname" . }} + namespace: {{ .Release.Namespace }} + labels: + app.kubernetes.io/name: {{ template "max.name" . }} + helm.sh/chart: {{ template "max.chart" . }} + app.kubernetes.io/managed-by: {{ .Release.Service }} + app.kubernetes.io/instance: {{ .Release.Name }} + {{- if .Values.inferenceServer.deploymentLabels }} + {{- toYaml .Values.inferenceServer.deploymentLabels | nindent 4 }} + {{- end }} + {{- if .Values.inferenceServer.deploymentAnnotations }} + annotations: {{- toYaml .Values.inferenceServer.deploymentAnnotations | nindent 4 }} + {{- end }} +spec: + {{- if not .Values.inferenceServer.autoscaling.enabled }} + replicas: {{ .Values.inferenceServer.replicaCount }} + {{- end }} + {{- if .Values.inferenceServer.strategy }} + strategy: {{- toYaml .Values.inferenceServer.strategy | nindent 4 }} + {{- end }} + selector: + matchLabels: + app.kubernetes.io/name: {{ template "max.name" . }} + app.kubernetes.io/instance: {{ .Release.Name }} + template: + metadata: + annotations: + # Force reload on changes + checksum/envSecret: {{ .Values.envSecret | toYaml | sha256sum }} + {{- if .Values.inferenceServer.podAnnotations }} + {{- toYaml .Values.inferenceServer.podAnnotations | nindent 8 }} + {{- end }} + labels: + app.kubernetes.io/name: {{ template "max.name" . }} + app.kubernetes.io/instance: {{ .Release.Name }} + {{- if .Values.inferenceServer.podLabels }} + {{- toYaml .Values.inferenceServer.podLabels | nindent 8 }} + {{- end }} + spec: + {{- if or (.Values.serviceAccount.create) (.Values.serviceAccountName) }} + serviceAccountName: {{ template "max.serviceAccountName" . }} + {{- end }} + securityContext: + runAsUser: {{ .Values.runAsUser }} + {{- if .Values.inferenceServer.podSecurityContext }} + {{- toYaml .Values.inferenceServer.podSecurityContext | nindent 8 }} + {{- end }} + {{- if .Values.inferenceServer.initContainers }} + initContainers: {{- tpl (toYaml .Values.inferenceServer.initContainers) . | nindent 6 }} + {{- end }} + containers: + - name: {{ .Chart.Name }} + image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}" + imagePullPolicy: {{ .Values.image.pullPolicy }} + {{- if .Values.inferenceServer.containerSecurityContext }} + securityContext: {{- toYaml .Values.inferenceServer.containerSecurityContext | nindent 12 }} + {{- end }} + {{- if .Values.inferenceServer.args }} + args: {{- toYaml .Values.inferenceServer.args | nindent 12 }} + {{- else }} + args: [ + "--model-path={{ .Values.maxServe.huggingfaceRepoId }}", + "--max-length={{ .Values.maxServe.maxLength }}", + "--max-batch-size={{ .Values.maxServe.maxBatchSize }}", + "--cache-strategy={{ .Values.maxServe.cacheStrategy }}", + "--max-num-steps={{ .Values.maxServe.maxNumSteps }}"] + {{- end }} + env: + {{- range $key, $value := .Values.env }} + - name: {{ $key | quote}} + value: {{ $value | quote }} + {{- end }} + {{- range $key, $value := .Values.inferenceServer.env }} + - name: {{ $key | quote}} + value: {{ $value | quote }} + {{- end }} + {{- if .Values.envRaw }} + {{- toYaml .Values.envRaw | nindent 12 }} + {{- end }} + envFrom: + - secretRef: + name: {{ tpl .Values.envFromSecret . | quote }} + {{- range .Values.envFromSecrets }} + - secretRef: + name: {{ tpl . $ | quote }} + {{- end }} + {{- if or .Values.volumeMounts .Values.inferenceServer.volumeMounts }} + volumeMounts: + {{- with .Values.volumeMounts }} + {{- tpl (toYaml .) $ | nindent 12 -}} + {{- end }} + {{- with .Values.inferenceServer.volumeMounts }} + {{- tpl (toYaml .) $ | nindent 12 -}} + {{- end }} + {{- end }} + ports: + {{- range .Values.service.ports }} + - name: {{ .name }} + containerPort: {{ .targetPort }} + {{- end }} + {{- if .Values.inferenceServer.startupProbe }} + startupProbe: {{- .Values.inferenceServer.startupProbe | toYaml | nindent 12 }} + {{- end }} + {{- if .Values.inferenceServer.readinessProbe }} + readinessProbe: {{- .Values.inferenceServer.readinessProbe | toYaml | nindent 12 }} + {{- end }} + {{- if .Values.inferenceServer.livenessProbe }} + livenessProbe: {{- .Values.inferenceServer.livenessProbe | toYaml | nindent 12 }} + {{- end }} + resources: + {{- if .Values.inferenceServer.resources }} + {{- toYaml .Values.inferenceServer.resources | nindent 12 }} + {{- else }} + {{- toYaml .Values.resources | nindent 12 }} + {{- end }} + {{- if .Values.inferenceServer.extraContainers }} + {{- toYaml .Values.inferenceServer.extraContainers | nindent 8 }} + {{- end }} + {{- if or .Values.nodeSelector .Values.inferenceServer.nodeSelector }} + nodeSelector: + {{- with .Values.nodeSelector }} + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.inferenceServer.nodeSelector }} + {{- toYaml . | nindent 8 }} + {{- end }} + {{- end }} + {{- if or .Values.affinity .Values.inferenceServer.affinity }} + affinity: + {{- with .Values.affinity }} + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.inferenceServer.affinity }} + {{- toYaml . | nindent 8 }} + {{- end }} + {{- end }} + {{- if or .Values.topologySpreadConstraints .Values.inferenceServer.topologySpreadConstraints }} + topologySpreadConstraints: + {{- with .Values.topologySpreadConstraints }} + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.inferenceServer.topologySpreadConstraints }} + {{- toYaml . | nindent 8 }} + {{- end }} + {{- end }} + {{- if or .Values.tolerations .Values.inferenceServer.tolerations }} + tolerations: + {{- with .Values.tolerations }} + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.inferenceServer.tolerations }} + {{- toYaml . | nindent 8 }} + {{- end }} + {{- end }} + {{- if .Values.imagePullSecrets }} + imagePullSecrets: {{- toYaml .Values.imagePullSecrets | nindent 8 }} + {{- end }} + {{- if or .Values.volumes .Values.inferenceServer.volumes }} + volumes: + {{- with .Values.volumes }} + {{- tpl (toYaml .) $ | nindent 8 -}} + {{- end }} + {{- with .Values.inferenceServer.volumes }} + {{- tpl (toYaml .) $ | nindent 8 -}} + {{- end }} + {{- end }} diff --git a/tutorials/helm/max-openai-api/templates/hpa.yaml b/tutorials/helm/max-openai-api/templates/hpa.yaml new file mode 100644 index 0000000000..ab5626d79a --- /dev/null +++ b/tutorials/helm/max-openai-api/templates/hpa.yaml @@ -0,0 +1,47 @@ +##===----------------------------------------------------------------------===## +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +##===----------------------------------------------------------------------===## +{{- if .Values.inferenceServer.autoscaling.enabled }} +apiVersion: autoscaling/v2 +kind: HorizontalPodAutoscaler +metadata: + name: {{ include "max.fullname" . }}-hpa + labels: + app.kubernetes.io/name: {{ template "max.name" . }} + helm.sh/chart: {{ template "max.chart" . }} + app.kubernetes.io/managed-by: {{ .Release.Service }} + app.kubernetes.io/instance: {{ .Release.Name }} +spec: + scaleTargetRef: + apiVersion: apps/v1 + kind: Deployment + name: {{ include "max.fullname" . }} + minReplicas: {{ .Values.inferenceServer.autoscaling.minReplicas }} + maxReplicas: {{ .Values.inferenceServer.autoscaling.maxReplicas }} + metrics: + {{- if .Values.inferenceServer.autoscaling.targetCPUUtilizationPercentage }} + - type: Resource + resource: + name: cpu + target: + type: Utilization + averageUtilization: {{ .Values.inferenceServer.autoscaling.targetCPUUtilizationPercentage }} + {{- end }} + {{- if .Values.inferenceServer.autoscaling.targetMemoryUtilizationPercentage }} + - type: Resource + resource: + name: memory + target: + type: Utilization + averageUtilization: {{ .Values.inferenceServer.autoscaling.targetMemoryUtilizationPercentage }} + {{- end }} +{{- end }} diff --git a/tutorials/helm/max-openai-api/templates/ingress.yaml b/tutorials/helm/max-openai-api/templates/ingress.yaml new file mode 100644 index 0000000000..e02fc3f027 --- /dev/null +++ b/tutorials/helm/max-openai-api/templates/ingress.yaml @@ -0,0 +1,57 @@ +##===----------------------------------------------------------------------===## +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +##===----------------------------------------------------------------------===## +{{ if .Values.ingress.enabled -}} +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: {{ template "max.fullname" . }} + namespace: {{ .Release.Namespace }} + labels: + app.kubernetes.io/name: {{ template "max.name" . }} + helm.sh/chart: {{ template "max.chart" . }} + app.kubernetes.io/managed-by: {{ .Release.Service }} + app.kubernetes.io/instance: {{ .Release.Name }} + {{- with .Values.ingress.annotations }} + annotations: {{- toYaml . | nindent 4 }} + {{- end }} +spec: + {{- if .Values.ingress.ingressClassName }} + ingressClassName: {{ .Values.ingress.ingressClassName }} + {{- end }} + {{- if .Values.ingress.tls }} + tls: + {{- range .Values.ingress.tls }} + - hosts: + {{- range .hosts }} + - {{ . }} + {{- end }} + secretName: {{ .secretName }} + {{- end }} + {{- end }} + rules: + {{- range .Values.ingress.hosts }} + - host: {{ . }} + http: + paths: + - path: {{ $.Values.ingress.path }} + pathType: {{ $.Values.ingress.pathType }} + backend: + service: + name: {{ template "max.fullname" . }} + port: + name: http + {{- end }} + {{- if .Values.ingress.extraHostsRaw }} + {{- toYaml .Values.ingress.extraHostsRaw | nindent 4 }} + {{- end }} +{{- end }} diff --git a/tutorials/helm/max-openai-api/templates/secret-env.yaml b/tutorials/helm/max-openai-api/templates/secret-env.yaml new file mode 100644 index 0000000000..1f4649686e --- /dev/null +++ b/tutorials/helm/max-openai-api/templates/secret-env.yaml @@ -0,0 +1,29 @@ +##===----------------------------------------------------------------------===## +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +##===----------------------------------------------------------------------===## +apiVersion: v1 +kind: Secret +metadata: + name: {{ template "max.fullname" . }}-env + namespace: {{ .Release.Namespace }} + labels: + app.kubernetes.io/name: {{ template "max.name" . }} + helm.sh/chart: {{ template "max.chart" . }} + app.kubernetes.io/managed-by: {{ .Release.Service }} + app.kubernetes.io/instance: {{ .Release.Name }} +type: Opaque +stringData: + {{- if .Values.envSecret }} + {{- range $key, $value := .Values.envSecret }} + {{ $key }}: {{ $value | quote }} + {{- end }} + {{- end }} diff --git a/tutorials/helm/max-openai-api/templates/service.yaml b/tutorials/helm/max-openai-api/templates/service.yaml new file mode 100644 index 0000000000..3f7d148592 --- /dev/null +++ b/tutorials/helm/max-openai-api/templates/service.yaml @@ -0,0 +1,34 @@ +##===----------------------------------------------------------------------===## +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +##===----------------------------------------------------------------------===## + +apiVersion: v1 +kind: Service +metadata: + name: {{ template "max.fullname" . }} + namespace: {{ .Release.Namespace }} + labels: + app.kubernetes.io/name: {{ template "max.name" . }} + helm.sh/chart: {{ template "max.chart" . }} + app.kubernetes.io/instance: {{ .Release.Name }} + {{- with .Values.service.annotations }} + annotations: {{- toYaml . | nindent 4 }} + {{- end }} +spec: + type: {{ .Values.service.type }} + ports: {{- .Values.service.ports | toYaml | nindent 2 }} + selector: + app.kubernetes.io/name: {{ template "max.name" . }} + app.kubernetes.io/instance: {{ .Release.Name }} + {{- if .Values.service.loadBalancerIP }} + loadBalancerIP: {{ .Values.service.loadBalancerIP }} + {{- end }} diff --git a/tutorials/helm/max-openai-api/templates/serviceaccount.yaml b/tutorials/helm/max-openai-api/templates/serviceaccount.yaml new file mode 100644 index 0000000000..f1aee92905 --- /dev/null +++ b/tutorials/helm/max-openai-api/templates/serviceaccount.yaml @@ -0,0 +1,28 @@ +##===----------------------------------------------------------------------===## +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +##===----------------------------------------------------------------------===## + +{{- if .Values.serviceAccount.create }} +apiVersion: v1 +kind: ServiceAccount +metadata: + name: {{ include "max.serviceAccountName" . }} + namespace: {{ .Release.Namespace }} + labels: + app.kubernetes.io/name: {{ template "max.name" . }} + helm.sh/chart: {{ template "max.chart" . }} + app.kubernetes.io/managed-by: {{ .Release.Service }} + app.kubernetes.io/instance: {{ .Release.Name }} + {{- if .Values.serviceAccount.annotations }} + annotations: {{- toYaml .Values.serviceAccount.annotations | nindent 4 }} + {{- end }} +{{- end -}} diff --git a/tutorials/helm/max-openai-api/values.yaml b/tutorials/helm/max-openai-api/values.yaml new file mode 100644 index 0000000000..d87d815cfe --- /dev/null +++ b/tutorials/helm/max-openai-api/values.yaml @@ -0,0 +1,239 @@ +##===----------------------------------------------------------------------===## +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +##===----------------------------------------------------------------------===## + +# Default values for the MAX Serving Helm chart. + +# A README is automatically generated from this file to document it, using helm-docs (see https://github.com/norwoodj/helm-docs) +# To update it, install helm-docs and run helm-docs from the root of this chart + +# -- Provide a name to override the name of the chart +nameOverride: ~ +# -- Provide a name to override the full names of resources +fullnameOverride: ~ + +# -- User ID directive. This user must have enough permissions to run the bootstrap script +# Running containers as root is not recommended in production. Change this to another UID - e.g. 1000 to be more secure +runAsUser: 0 + +# -- Specify service account name to be used +serviceAccountName: ~ +serviceAccount: + # -- Create custom service account for MAX Serving. If create: true and serviceAccountName is not provided, `max.fullname` will be used. + create: false + annotations: {} + +# -- Environment variables that will be passed into pods +env: {} + +# -- Environment variables in RAW format that will be passed into pods +envRaw: [] + +# -- The name of the secret which we will use to populate env vars in deployed pods +# This can be useful for secret keys, etc. +envFromSecret: '{{ template "max.fullname" . }}-env' +# -- This can be a list of templated strings +envFromSecrets: [] + +# -- Environment variables to pass as secrets +envSecret: + {} + # # AWS security credentials: https://docs.aws.amazon.com/IAM/latest/UserGuide/security-creds.html + # AWS_ACCESS_KEY_ID: ... + # AWS_SECRET_ACCESS_KEY: ... + # AWS_SESSION_TOKEN: ... + # # Google API Keys + # GOOGLE_KEY: ... + # GOOGLE_SECRET: ... + +volumes: + [] + # - name: customConfig + # configMap: + # name: '{{ template "max.fullname" . }}-custom-config' + # - name: additionalSecret + # secret: + # secretName: my-secret + # defaultMode: 0600 + +volumeMounts: + [] + # - name: customConfig + # mountPath: /mnt/config + # readOnly: true + # - name: additionalSecret: + # mountPath: /mnt/secret + +image: + repository: "docker.modular.com/modular/max-openai-api" + tag: "latest" + pullPolicy: IfNotPresent + +# -- MAX Serve arguments +maxServe: + huggingfaceRepoId: modularai/Llama-3.1-8B-Instruct-GGUF + maxLength: "2048" + maxBatchSize: "250" + cacheStrategy: "continuous" + maxNumSteps: "10" + +imagePullSecrets: [] + +service: + type: ClusterIP + # you may want to have a headless service if use grpc protocol + # https://kubernetes.io/docs/concepts/services-networking/service/#headless-services + # https://github.com/grpc/grpc/blob/57dacad8c761a12de3e5eafa45f190015c73cccb/doc/load-balancing.md + # clusterIP: None + ports: + - name: http + protocol: TCP + port: 8000 + targetPort: 8000 + annotations: + {} + # cloud.google.com/load-balancer-type: "Internal" + loadBalancerIP: ~ + +ingress: + enabled: false + ingressClassName: ~ + annotations: + {} + # kubernetes.io/tls-acme: "true" + ## Extend timeout to allow long running queries. + # nginx.ingress.kubernetes.io/proxy-connect-timeout: "300" + # nginx.ingress.kubernetes.io/proxy-read-timeout: "300" + # nginx.ingress.kubernetes.io/proxy-send-timeout: "300" + path: / + pathType: ImplementationSpecific + hosts: [] + tls: [] + extraHostsRaw: [] + # - secretName: chart-example-tls + # hosts: + # - chart-example.local + +resources: + {} + # We do not specify default resources and leave this as a conscious + # choice for the user. If you do want to specify resources, uncomment the following + # lines, adjust them as necessary, and remove the curly braces after 'resources:'. + # The limits below will apply to all MAX Serving components. To set individual resource limitations refer to the pod specific values below. + # The pod specific values will overwrite anything that is set here. + # limits: + # cpu: 100m + # memory: 128Mi + # requests: + # cpu: 100m + # memory: 128Mi + +# MAX Serving node configuration +inferenceServer: + replicaCount: 1 + autoscaling: + enabled: false + minReplicas: 1 + maxReplicas: 2 + targetCPUUtilizationPercentage: 80 + # targetMemoryUtilizationPercentage: 80 + + # -- Arguments to pass to the node entrypoint. If defined it overwrites the default args value set by .Values.max-serve + # @default -- See `values.yaml` + args: [] + # - "--model-path=modularai/Llama-3.1-8B-Instruct-GGUF", + # - "--max-length=2048", + # - "--max-batch-size=250", + # - "--cache-strategy=continuous", + # - "--max-num-steps=10", + + env: {} + # Limit number of CPUs that MAX Serving and its Inference Engine can use + # MODULAR_AsyncRT_CPU_MAX: 16 + # -- Volumes to mount into inferenceServer pod + volumes: [] + # -- Volumes to mount into inferenceServer pod + volumeMounts: [] + # -- Launch additional containers into inferenceServer pod + extraContainers: [] + # -- Annotations to be added to inferenceServer deployment + deploymentAnnotations: {} + # -- Labels to be added to inferenceServer deployment + deploymentLabels: {} + # -- NodeSelector to be added to inferenceServer deployment + nodeSelector: {} + # -- Tolerations to be added to inferenceServer deployment + tolerations: [] + # -- Affinity to be added to inferenceServer deployment + affinity: {} + # -- TopologySpreadConstrains to be added to inferenceServer deployments + topologySpreadConstraints: [] + # -- Annotations to be added to inferenceServer pods + podAnnotations: {} + # -- Labels to be added to inferenceServer pods + podLabels: {} + startupProbe: + httpGet: + path: /v1/health + port: http + initialDelaySeconds: 1 + timeoutSeconds: 1 + failureThreshold: 60 + periodSeconds: 5 + successThreshold: 1 + livenessProbe: + httpGet: + path: /v1/health + port: http + initialDelaySeconds: 1 + timeoutSeconds: 1 + failureThreshold: 3 + periodSeconds: 15 + successThreshold: 1 + readinessProbe: + httpGet: + path: /v1/health + port: http + initialDelaySeconds: 1 + timeoutSeconds: 1 + failureThreshold: 3 + periodSeconds: 15 + successThreshold: 1 + # -- Resource settings for the inferenceServer pods - these settings overwrite existing values from the global resources object defined above. + resources: + {} + # limits: + # cpu: 100m + # memory: 128Mi + # requests: + # cpu: 100m + # memory: 128Mi + podSecurityContext: {} + containerSecurityContext: {} + strategy: + {} + # type: RollingUpdate + # rollingUpdate: + # maxSurge: 25% + # maxUnavailable: 25% + +# -- NodeSelector to be added to all deployments +nodeSelector: {} + +# -- Tolerations to be added to all deployments +tolerations: [] + +# -- Affinity to be added to all deployments +affinity: {} + +# -- TopologySpreadConstraints to be added to all deployments +topologySpreadConstraints: [] diff --git a/tutorials/max-graph-api/.gitattributes b/tutorials/max-graph-api/.gitattributes new file mode 100644 index 0000000000..07fe41c52c --- /dev/null +++ b/tutorials/max-graph-api/.gitattributes @@ -0,0 +1,2 @@ +# GitHub syntax highlighting +pixi.lock linguist-language=YAML linguist-generated=true diff --git a/tutorials/max-graph-api/.gitignore b/tutorials/max-graph-api/.gitignore new file mode 100644 index 0000000000..1ef4bed3a8 --- /dev/null +++ b/tutorials/max-graph-api/.gitignore @@ -0,0 +1,7 @@ +# pixi environments +.pixi +*.egg-info +# magic environments +.magic +# MNIST data +data diff --git a/tutorials/max-graph-api/README.md b/tutorials/max-graph-api/README.md new file mode 100644 index 0000000000..a96f37787e --- /dev/null +++ b/tutorials/max-graph-api/README.md @@ -0,0 +1,7 @@ +# Tutorial: MAX Graph API + +This repository contains the code for +[Get started with MAX Graph](https://docs.modular.com/max/tutorials/get-started-with-max-graph) +tutorial. + +Please refer to that page for more information. diff --git a/tutorials/max-graph-api/add.mojo b/tutorials/max-graph-api/add.mojo new file mode 100644 index 0000000000..ffedee6d3d --- /dev/null +++ b/tutorials/max-graph-api/add.mojo @@ -0,0 +1,44 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from max import engine +from max.graph import Graph, TensorType, Type +from max.tensor import Tensor + + +def main(): + # 1. define add graph + graph = Graph( + in_types=List[Type]( + TensorType(DType.float32, 1), TensorType(DType.float32, 1) + ) + ) + out = graph[0] + graph[1] + graph.output(out) + graph.verify() + print("finall graph:", graph) + # 2. load and compile the graph + session = engine.InferenceSession() + model = session.load(graph) + print("input names are:") + for input_name in model.get_model_input_names(): + print(input_name[]) + + # 3. Execute / run the graph with some inputs + print("set some input values:") + input0 = Tensor[DType.float32](List[Float32](1.0)) + print("input0:", input0) + input1 = Tensor[DType.float32](List[Float32](1.0)) + print("input1:", input1) + ret = model.execute("input0", input0^, "input1", input1^) + print("result:", ret.get[DType.float32]("output0")) diff --git a/tutorials/max-graph-api/add.png b/tutorials/max-graph-api/add.png new file mode 100644 index 0000000000000000000000000000000000000000..46a8ad114c6a98a368acca0f3483b548d4073f9e GIT binary patch literal 16220 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 u0lQ#-w5raRX@JeLlbO7||5Cv%{&= PythonObject: + np = py.import_module("numpy") + fin = py.evaluate('open("model_weights.npy", mode="rb")') + model_weights = np.load( + fin, allow_pickle=True + ).item() # note this is of type PythonObject + fin.close() + print("python type of model_weights:", py.type(model_weights)) + for item in model_weights.items(): + print(item[0], item[1].shape, py.type(item[1])) + + return model_weights + + +@always_inline +fn numpy_data_pointer[ + type: DType +](numpy_array: PythonObject) raises -> UnsafePointer[Scalar[type]]: + return numpy_array.__array_interface__["data"][0].unsafe_get_as_pointer[ + type + ]() + + +@always_inline +fn memcpy_from_numpy(array: PythonObject, tensor: Tensor) raises: + src = numpy_data_pointer[tensor.type](array) + dst = tensor._ptr + length = tensor.num_elements() + memcpy(dst, src, length) + + +@always_inline +fn numpy_to_tensor[type: DType](array: PythonObject) raises -> Tensor[type]: + shape = List[Int]() + array_shape = array.shape + for dim in array_shape: + shape.append(dim) + + out = Tensor[type](shape) + memcpy_from_numpy(array, out) + return out^ + + +def build_mnist_graph( + fc1w: Tensor[DType.float32], + fc1b: Tensor[DType.float32], + fc2w: Tensor[DType.float32], + fc2b: Tensor[DType.float32], +) -> Graph: + # Note: "batch" is a symbolic dim which is known ahead of time vs dynamic dim + graph = Graph(TensorType(DType.float32, "batch", 28 * 28)) + # PyTorch linear is defined as: x W^T + b so we need to transpose the weights + fc1 = ( + graph[0] @ ops.transpose(graph.constant(fc1w), 1, 0) + ) + graph.constant(fc1b) + + relu = ops.relu(fc1) + + fc2 = (relu @ ops.transpose(graph.constant(fc2w), 1, 0)) + graph.constant( + fc2b + ) + out = ops.softmax(fc2) # adding explicit softmax for inference prob + graph.output(out) + graph.verify() + return graph + + +def load_mnist_test_data() -> PythonObject: + torchvision = py.import_module("torchvision") + test_dataset = torchvision.datasets.MNIST( + root="./data", train=False, transform=None, download=False + ) + return test_dataset + + +def preprocess(image: PythonObject) -> PythonObject: + transforms = py.import_module("torchvision.transforms") + image_tensor = transforms.ToTensor()(image) + image_tensor_normalized = transforms.Normalize((0.5,), (0.5,))(image_tensor) + reshaped_image = image_tensor_normalized.reshape(1, 28 * 28).numpy() + return reshaped_image + + +def argmax(t: Tensor) -> List[Int]: + var res = List[Int](capacity=t.dim(0)) + for i in range(t.dim(0)): + var max_val = Scalar[t.type].MIN + var max_idx = 0 + for j in range(t.dim(1)): + if t[i, j] > max_val: + max_val = t[i, j] + max_idx = j + res.append(max_idx) + return res + + +def main(): + weights_dict = load_model_weights() + fc1w = numpy_to_tensor[DType.float32](weights_dict["fc1.weight"]) + fc1b = numpy_to_tensor[DType.float32](weights_dict["fc1.bias"]) + fc2w = numpy_to_tensor[DType.float32](weights_dict["fc2.weight"]) + fc2b = numpy_to_tensor[DType.float32](weights_dict["fc2.bias"]) + + mnist_graph = build_mnist_graph(fc1w^, fc1b^, fc2w^, fc2b^) + session = engine.InferenceSession() + model = session.load(mnist_graph) + + for name in model.get_model_input_names(): + print("input:", name[]) + + for name in model.get_model_output_names(): + print("output:", name[]) + + correct = 0 + total = 0 + # use batch size of 1 in this example + test_dataset = load_mnist_test_data() + for i in range(len(test_dataset)): + item = test_dataset[i] + image = item[0] + label = item[1] + + preprocessed_image = preprocess(image) + + output = model.execute("input0", preprocessed_image) + probs = output.get[DType.float32]("output0") + + predicted = argmax(probs)[0] + + correct += Int(predicted == label) + total += 1 + + print( + "Accuracy of the network on the 10000 test images:", + 100 * correct / total, + "%", + ) diff --git a/tutorials/max-graph-api/mnist.png b/tutorials/max-graph-api/mnist.png new file mode 100644 index 0000000000000000000000000000000000000000..30cdec9e9678802246a03f3b12a6b597f8559f5b GIT binary patch literal 71811 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 USZ(#5HdhXwsE8P{?{sSAA5nrzTmS$7 literal 0 HcmV?d00001 diff --git a/tutorials/max-graph-api/mnist.py b/tutorials/max-graph-api/mnist.py new file mode 100644 index 0000000000..eb7f2a971e --- /dev/null +++ b/tutorials/max-graph-api/mnist.py @@ -0,0 +1,123 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +import random + +import numpy as np +import torch +import torch.nn as nn +import torch.nn.functional as F +import torch.optim as optim +import torchvision +import torchvision.transforms as transforms + + +def set_seeds(seed=42): + """Sets seed on CPU""" + random.seed(seed) + np.random.seed(seed) + torch.manual_seed(seed) + + +set_seeds() + + +class Model(nn.Module): + def __init__(self, input_size, hidden_size, num_classes): + super().__init__() + self.fc1 = nn.Linear(input_size, hidden_size) + self.relu = nn.ReLU() + self.fc2 = nn.Linear(hidden_size, num_classes) + + def forward(self, x): + x = self.fc1(x) + x = self.relu(x) + x = self.fc2(x) + return x + + +def main(): + input_size = 28 * 28 + hidden_size = 512 + num_classes = 10 + num_epochs = 5 + learning_rate = 0.001 + + preprocess = transforms.Compose( + [transforms.ToTensor(), transforms.Normalize((0.5,), (0.5,))] + ) + + train_dataset = torchvision.datasets.MNIST( + root="./data", train=True, transform=preprocess, download=True + ) + test_dataset = torchvision.datasets.MNIST( + root="./data", train=False, transform=preprocess, download=True + ) + + train_loader = torch.utils.data.DataLoader( + dataset=train_dataset, batch_size=128, shuffle=True + ) + test_loader = torch.utils.data.DataLoader( + dataset=test_dataset, batch_size=128, shuffle=False + ) + + model = Model(input_size, hidden_size, num_classes) + + loss_fn = nn.CrossEntropyLoss() + optimizer = optim.RMSprop(model.parameters(), lr=learning_rate) + + total_steps = len(train_loader) + for epoch in range(num_epochs): + for i, (images, labels) in enumerate(train_loader): + images = images.reshape(-1, 28 * 28) + outputs = model(images) + loss = loss_fn(outputs, labels) + optimizer.zero_grad() + loss.backward() + optimizer.step() + + if (i + 1) % 100 == 0: + print( + f"Epoch [{epoch + 1}/{num_epochs}], Step" + f" [{i + 1}/{total_steps}], Loss: {loss.item():.4f}" + ) + + model.eval() + + with torch.no_grad(): + correct = 0 + total = 0 + for images, labels in test_loader: + images = images.reshape(-1, 28 * 28) + outputs = model(images) + probs = F.softmax(outputs, dim=1) + predicted = torch.argmax(probs, 1) + total += labels.size(0) + correct += (predicted == labels).sum().item() + + print( + "Accuracy of the network on the 10000 test images:" + f" {100 * correct / total} %" + ) + + # save weights in numpy binary format + weights = {} + for name, param in model.named_parameters(): + weights[name] = param.detach().cpu().numpy() + + np.save("model_weights.npy", weights) + return + + +if __name__ == "__main__": + main() diff --git a/tutorials/max-graph-api/mojoproject.toml b/tutorials/max-graph-api/mojoproject.toml new file mode 100644 index 0000000000..7a073dbfb4 --- /dev/null +++ b/tutorials/max-graph-api/mojoproject.toml @@ -0,0 +1,19 @@ +[project] +authors = ["Modular "] +channels = ["conda-forge", "https://conda.modular.com/max-nightly/", "pytorch"] +description = "Add a short description here" +name = "max-graph-api" +platforms = ["osx-arm64", "linux-64"] +version = "0.0.0" + +[tasks] +add = "mojo add.mojo" +matmul = "mojo matmul.mojo" +mnist = "python mnist.py && mojo mnist.mojo" +test = { depends-on = ["add", "matmul", "mnist"] } + +[dependencies] +max = "~=24.6" +pytorch = { version = "==2.4.0", channel = "pytorch" } +torchvision = { version = ">=0.19.0,<0.20", channel = "pytorch" } +numpy = "<2.0" diff --git a/tutorials/max-graph-python/.mypy.ini b/tutorials/max-graph-python/.mypy.ini new file mode 100644 index 0000000000..1215375ed9 --- /dev/null +++ b/tutorials/max-graph-python/.mypy.ini @@ -0,0 +1,2 @@ +[mypy] +ignore_missing_imports = True \ No newline at end of file diff --git a/tutorials/max-graph-python/README.md b/tutorials/max-graph-python/README.md new file mode 100644 index 0000000000..4972b568c6 --- /dev/null +++ b/tutorials/max-graph-python/README.md @@ -0,0 +1,60 @@ +# Basic example for MAX Graph API in Python + +This is an example of building a model with the MAX Graph API in Python and +execute it with MAX Engine. + +## Usage + +First, install [Magic](https://docs.modular.com/magic/). + +Then run the `magic run addition` command from the terminal: + +```sh +magic run addition +``` + +You should see the following output: + +```output +input names are: +name: input0, shape: [1], dtype: DType.float32 +name: input1, shape: [1], dtype: DType.float32 +result: [2.] +``` + +## Tests + +To run tests, use the following command: + +```sh +magic run pytest +``` + +You should see the following output: + +```output +==================== test session starts ==================== +platform darwin -- Python 3.12.7, pytest-8.3.3, pluggy-1.5.0 +rootdir: /max-repo +configfile: pyproject.toml +collected 6 items + +tests/test_addition.py ...... [100%] + +===================== 6 passed in 6.94s ===================== +``` + +## Lint and format + +To lint with `mypy` run the following command: + +```sh +magic run mypy +``` + +To format the python files: + +```sh +magic run black +magic run isort +``` diff --git a/tutorials/max-graph-python/pyproject.toml b/tutorials/max-graph-python/pyproject.toml new file mode 100644 index 0000000000..c07431b62f --- /dev/null +++ b/tutorials/max-graph-python/pyproject.toml @@ -0,0 +1,33 @@ +[project] +authors = [{name = "Modular", email = "hello@modular.com"}] +dependencies = [] +description = "Add two numbers" +name = "max_ops" +requires-python = ">=3.11,<3.13" +version = "0.1.0" + +[build-system] +build-backend = "hatchling.build" +requires = ["hatchling"] + +[tool.pixi.project] +channels = ["conda-forge", "https://conda.modular.com/max-nightly/"] +platforms = ["osx-arm64", "linux-64"] + +[tool.pixi.pypi-dependencies] +max_ops = { path = ".", editable = true } + +[tool.pixi.tasks] +addition = "python3 src/max_ops/addition.py" +mypy = "mypy . --config .mypy.ini" +black = "black src/max_ops/addition.py tests/test_addition.py" +isort = "isort src/max_ops/addition.py tests/test_addition.py" +test = { depends-on = ["addition"] } + + +[tool.pixi.dependencies] +max = "~=24.6" +numpy = "<2.0" +pytest = ">=8.3.3,<9" +black = ">=24.10.0,<25" +mypy = ">=1.13.0,<2" diff --git a/tutorials/max-graph-python/src/max_ops/__init__.py b/tutorials/max-graph-python/src/max_ops/__init__.py new file mode 100644 index 0000000000..75c4f824f2 --- /dev/null +++ b/tutorials/max-graph-python/src/max_ops/__init__.py @@ -0,0 +1,12 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # diff --git a/tutorials/max-graph-python/src/max_ops/addition.py b/tutorials/max-graph-python/src/max_ops/addition.py new file mode 100644 index 0000000000..4528d4a549 --- /dev/null +++ b/tutorials/max-graph-python/src/max_ops/addition.py @@ -0,0 +1,51 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from typing import Any + +import numpy as np +from max import engine +from max.dtype import DType +from max.graph import Graph, TensorType, ops + + +def add_tensors(a: np.ndarray, b: np.ndarray) -> dict[str, Any]: + # 1. Build the graph + input_type = TensorType(dtype=DType.float32, shape=(1,)) + with Graph( + "simple_add_graph", input_types=(input_type, input_type) + ) as graph: + lhs, rhs = graph.inputs + out = ops.add(lhs, rhs) + graph.output(out) + print("final graph:", graph) + + # 2. Create an inference session + session = engine.InferenceSession() + model = session.load(graph) + + for tensor in model.input_metadata: + print( + f"name: {tensor.name}, shape: {tensor.shape}, dtype: {tensor.dtype}" + ) + + # 3. Execute the graph + ret = model.execute(a, b)[0] + print("result:", ret) + return ret + + +if __name__ == "__main__": + input0 = np.array([1.0], dtype=np.float32) + input1 = np.array([1.0], dtype=np.float32) + add_tensors(input0, input1) diff --git a/tutorials/max-graph-python/tests/__init__.py b/tutorials/max-graph-python/tests/__init__.py new file mode 100644 index 0000000000..75c4f824f2 --- /dev/null +++ b/tutorials/max-graph-python/tests/__init__.py @@ -0,0 +1,12 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # diff --git a/tutorials/max-serve-cloud-configs/aws/max-serve-aws.yaml b/tutorials/max-serve-cloud-configs/aws/max-serve-aws.yaml new file mode 100644 index 0000000000..cf63426766 --- /dev/null +++ b/tutorials/max-serve-cloud-configs/aws/max-serve-aws.yaml @@ -0,0 +1,250 @@ +##===----------------------------------------------------------------------===## +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +##===----------------------------------------------------------------------===## + +AWSTemplateFormatVersion: '2010-09-09' +Description: CloudFormation template to deploy MAX Serve on an EC2 instance. + +Parameters: + InstanceType: + Type: String + Default: g5.4xlarge + AllowedValues: + - g5.4xlarge + Description: EC2 instance type for the MAX Serve deployment. + + AmiId: + Type: AWS::EC2::Image::Id + Default: ami-02769e6d1f6a88067 + Description: AMI ID for Deep Learning Base OSS Nvidia Driver AMI (Amazon Linux 2) in us-east-1. + + HuggingFaceHubToken: + Type: String + NoEcho: true + Description: HuggingFace Hub API Token for accessing models. + + HuggingFaceRepoId: + Type: String + Default: modularai/Llama-3.1-8B-Instruct-GGUF + Description: Hugging Face Repository ID for the Model. + +Resources: + MaxServeInstanceProfile: + Type: AWS::IAM::InstanceProfile + Properties: + Roles: + - !Ref MaxServeInstanceRole + + MaxServeInstanceRole: + Type: AWS::IAM::Role + Properties: + AssumeRolePolicyDocument: + Version: '2012-10-17' + Statement: + - Effect: Allow + Principal: + Service: + - ec2.amazonaws.com + Action: + - sts:AssumeRole + ManagedPolicyArns: + - arn:aws:iam::aws:policy/AmazonEC2ContainerRegistryReadOnly + - arn:aws:iam::aws:policy/AmazonSSMManagedInstanceCore + - arn:aws:iam::aws:policy/CloudWatchAgentServerPolicy + Policies: + - PolicyName: CloudWatchLogsAccess + PolicyDocument: + Version: '2012-10-17' + Statement: + - Effect: Allow + Action: + - logs:CreateLogStream + - logs:PutLogEvents + - logs:DescribeLogStreams + Resource: !Sub 'arn:aws:logs:${AWS::Region}:${AWS::AccountId}:log-group:/aws/ec2/${AWS::StackName}-logs:*' + + MaxServeLogGroup: + Type: AWS::Logs::LogGroup + DeletionPolicy: Delete + UpdateReplacePolicy: Delete + Properties: + LogGroupName: !Sub '/aws/ec2/${AWS::StackName}-logs' + RetentionInDays: 1 + + MaxServeSecurityGroup: + Type: AWS::EC2::SecurityGroup + Properties: + GroupDescription: Enable HTTP access on port 80 and SSH on port 22 + SecurityGroupIngress: + - IpProtocol: tcp + FromPort: 80 + ToPort: 80 + CidrIp: 0.0.0.0/0 + - IpProtocol: tcp + FromPort: 22 + ToPort: 22 + CidrIp: 0.0.0.0/0 + + MaxServeInstance: + Type: AWS::EC2::Instance + Properties: + InstanceType: !Ref InstanceType + ImageId: !Ref AmiId + SecurityGroupIds: + - !Ref MaxServeSecurityGroup + IamInstanceProfile: !Ref MaxServeInstanceProfile + BlockDeviceMappings: + - DeviceName: /dev/xvda + Ebs: + VolumeSize: 100 + VolumeType: gp3 + DeleteOnTermination: true + UserData: + 'Fn::Base64': !Sub | + #!/bin/bash + set -xe # Enable detailed logging + # Redirect all output to a log file for debugging + exec > >(tee /var/log/user-data.log|logger -t user-data -s 2>/dev/console) 2>&1 + + echo "Starting user data script execution..." + + # Install CloudWatch agent first + echo "Installing CloudWatch agent..." + sudo yum install -y amazon-cloudwatch-agent + + # Create log files and directory with proper permissions + sudo mkdir -p /var/log/max-serve + sudo touch /var/log/max-serve/container.log + sudo chmod 644 /var/log/max-serve/container.log + sudo chown root:root /var/log/max-serve/container.log + + # Configure CloudWatch agent early + cat < /opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.json + { + "agent": { + "metrics_collection_interval": 60, + "run_as_user": "root" + }, + "logs": { + "logs_collected": { + "files": { + "collect_list": [ + { + "file_path": "/var/log/messages", + "log_group_name": "/aws/ec2/${AWS::StackName}-logs", + "log_stream_name": "instance-logs", + "timestamp_format": "%b %d %H:%M:%S", + "timezone": "UTC" + }, + { + "file_path": "/var/log/max-serve/container.log", + "log_group_name": "/aws/ec2/${AWS::StackName}-logs", + "log_stream_name": "instance-logs", + "timestamp_format": "%Y-%m-%d %H:%M:%S", + "timezone": "UTC" + }, + { + "file_path": "/var/log/user-data.log", + "log_group_name": "/aws/ec2/${AWS::StackName}-logs", + "log_stream_name": "instance-logs", + "timestamp_format": "%Y-%m-%d %H:%M:%S", + "timezone": "UTC" + } + ] + } + }, + "force_flush_interval": 15 + } + } + EOF + + # Start the CloudWatch agent + sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a fetch-config -m ec2 -c file:/opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.json -s + sudo systemctl enable amazon-cloudwatch-agent + sudo systemctl start amazon-cloudwatch-agent + + # Verify CloudWatch agent is running + sudo systemctl status amazon-cloudwatch-agent + + # Continue with Docker installation and rest of the setup + echo "Installing docker..." + sudo yum update -y + sudo yum install -y docker aws-cfn-bootstrap + sudo systemctl enable docker + sudo systemctl start docker + sudo usermod -a -G docker ec2-user + + # Verify docker is running + echo "Checking docker status..." + sudo systemctl status docker + docker --version + + # Install NVIDIA Container Toolkit + echo "Installing NVIDIA Container Toolkit..." + distribution=$(. /etc/os-release;echo $ID$VERSION_ID) + curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.repo | sudo tee /etc/yum.repos.d/nvidia-docker.repo + sudo yum clean expire-cache + sudo yum install -y nvidia-docker2 + sudo systemctl restart docker + + # Verify NVIDIA docker installation + echo "Checking NVIDIA docker installation..." + nvidia-smi + docker info | grep -i nvidia + + # Pull and run the MAX Serve container + echo "Pulling and running MAX Serve container..." + # Add error checking for docker pull + if ! sudo docker pull docker.modular.com/modular/max-openai-api:latest; then + echo "Failed to pull container image" + /opt/aws/bin/cfn-signal -e 1 --stack ${AWS::StackName} --resource MaxServeInstance --region ${AWS::Region} + exit 1 + fi + + sudo docker images + + # Start the container and capture logs + CONTAINER_ID=$(sudo docker run -d \ + --env "HF_TOKEN=${HuggingFaceHubToken}" \ + --env "HF_HUB_ENABLE_HF_TRANSFER=1" \ + -v /home/ec2-user/.cache/huggingface:/root/.cache/huggingface \ + --gpus 1 \ + -p 80:8000 \ + --ipc=host \ + docker.modular.com/modular/max-openai-api:latest \ + --model-path ${HuggingFaceRepoId}) + + if [ $? -ne 0 ]; then + echo "Failed to start container" + /opt/aws/bin/cfn-signal -e 1 --stack ${AWS::StackName} --resource MaxServeInstance --region ${AWS::Region} + exit 1 + fi + + # Start following container logs in the background + sudo docker logs -f $CONTAINER_ID > /var/log/max-serve/container.log 2>&1 & + + # Verify container is running + echo "Checking container status..." + if ! sudo docker ps | grep max-openai-api; then + echo "Container is not running" + /opt/aws/bin/cfn-signal -e 1 --stack ${AWS::StackName} --resource MaxServeInstance --region ${AWS::Region} + exit 1 + fi + +Outputs: + InstanceId: + Description: Instance ID of the EC2 instance + Value: !Ref MaxServeInstance + + PublicDNS: + Description: Public DNS of the EC2 instance + Value: !GetAtt MaxServeInstance.PublicDnsName diff --git a/tutorials/max-serve-cloud-configs/aws/notify.sh b/tutorials/max-serve-cloud-configs/aws/notify.sh new file mode 100644 index 0000000000..4d4b241536 --- /dev/null +++ b/tutorials/max-serve-cloud-configs/aws/notify.sh @@ -0,0 +1,106 @@ +#!/bin/bash +##===----------------------------------------------------------------------===## +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +##===----------------------------------------------------------------------===## + +REGION=$1 +STACK_NAME=$2 +PUBLIC_IP=$3 +MAX_WAIT_MINUTES=30 +START_TIME=$(date +%s) +LOG_GROUP="/aws/ec2/$STACK_NAME-logs" + +fetch_logs() { + local stream_name=$1 + local stream_type=$2 + local limit=$3 + echo "=== $stream_type Logs ===" + + if [ -n "$limit" ]; then + aws logs get-log-events \ + --log-group-name "$LOG_GROUP" \ + --log-stream-name "$stream_name" \ + --limit $limit \ + --region $REGION \ + --query 'events[*].[timestamp,message]' \ + --output text + else + aws logs get-log-events \ + --log-group-name "$LOG_GROUP" \ + --log-stream-name "$stream_name" \ + --start-time $(($(date +%s) - 60))000 \ + --region $REGION \ + --query 'events[*].[timestamp,message]' \ + --output text + fi + echo "====================" +} + +check_server_status() { + echo "🔍 Checking server health..." + + if echo "$EC2_LOGS" | grep -q "Pulling from docker.modular.com/modular/max-openai-api"; then + echo "⏳ Docker image is still being pulled..." + return 1 + fi + + if curl -s -f "http://$PUBLIC_IP/v1/health" >/dev/null; then + echo "✅ Server health check passed!" + return 0 + fi + + if echo "$EC2_LOGS" | grep -q "Building\|Compiling\|Starting download of model"; then + echo "⏳ Server is initializing (compiling model)..." + return 1 + fi + + echo "⏳ Server still starting up..." + return 1 +} + +echo "🔍 Starting monitoring for MAX server (max wait: ${MAX_WAIT_MINUTES} minutes)..." + +while true; do + current_time=$(date +%s) + elapsed_minutes=$(((current_time - START_TIME) / 60)) + + if [ $elapsed_minutes -ge $MAX_WAIT_MINUTES ]; then + echo "❌ Timeout after ${MAX_WAIT_MINUTES} minutes. Server might still be starting up." + exit 1 + fi + + EC2_LOG_STREAM=$(aws logs describe-log-streams \ + --log-group-name "$LOG_GROUP" \ + --log-stream-name-prefix "instance-logs" \ + --region $REGION \ + --query "logStreams[0].logStreamName" \ + --output text) + + echo "⏳ Checking logs... (${elapsed_minutes}/${MAX_WAIT_MINUTES} minutes)" + + if [ "$EC2_LOG_STREAM" != "None" ]; then + echo "📜 Instance Logs:" + EC2_LOGS=$(fetch_logs "$EC2_LOG_STREAM" "Instance" 50) + if check_server_status "$EC2_LOGS"; then + echo "✅ Server is ready! (took ${elapsed_minutes} minutes)" + echo "📋 Latest logs:" + echo "$EC2_LOGS" + exit 0 + fi + else + echo "⏳ Logs not yet available..." + fi + + echo "⏳ Server still starting up... checking again in 60 seconds" + echo "-------------------------------------------" + sleep 60 +done diff --git a/tutorials/max-serve-cloud-configs/azure/max-serve-azure.json b/tutorials/max-serve-cloud-configs/azure/max-serve-azure.json new file mode 100644 index 0000000000..554d50d8f0 --- /dev/null +++ b/tutorials/max-serve-cloud-configs/azure/max-serve-azure.json @@ -0,0 +1,252 @@ +{ + "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "Modular Inc.", + "copyright": "Copyright (c) 2025, Modular Inc. All rights reserved.", + "license": "Licensed under the Apache License v2.0 with LLVM Exceptions: https://llvm.org/LICENSE.txt", + "disclaimer": "Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License." + } + }, + "parameters": { + "adminUsername": { + "type": "string", + "metadata": { + "description": "Admin username for the virtual machine." + } + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "Admin password for the virtual machine." + } + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_NV36ads_A10_v5", + "metadata": { + "description": "Size of the virtual machine." + } + }, + "osDiskSizeGB": { + "type": "int", + "defaultValue": 128, + "metadata": { + "description": "OS disk size in GB." + } + }, + "vnetAddressPrefix": { + "type": "string", + "defaultValue": "10.0.0.0/16", + "metadata": { + "description": "Address space for the virtual network." + } + }, + "subnetAddressPrefix": { + "type": "string", + "defaultValue": "10.0.0.0/24", + "metadata": { + "description": "Subnet address space." + } + }, + "startupScript": { + "type": "string", + "metadata": { + "description": "Base64-encoded startup script." + } + }, + "location": { + "type": "string", + "defaultValue": "westus3", + "metadata": { + "description": "Location for all resources." + } + } + }, + "resources": [ + { + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2021-03-01", + "name": "maxServeVNet", + "location": "[parameters('location')]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "[parameters('vnetAddressPrefix')]" + ] + }, + "subnets": [ + { + "name": "maxServeSubnet", + "properties": { + "addressPrefix": "[parameters('subnetAddressPrefix')]" + } + } + ] + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2021-03-01", + "name": "maxServePublicIP", + "location": "[parameters('location')]", + "properties": { + "publicIPAllocationMethod": "Dynamic" + } + }, + { + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2021-02-01", + "name": "maxServeNSG", + "location": "[parameters('location')]", + "properties": { + "securityRules": [ + { + "name": "allowHTTP", + "properties": { + "priority": 100, + "protocol": "Tcp", + "access": "Allow", + "direction": "Inbound", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "destinationAddressPrefix": "*", + "destinationPortRange": "80", + "description": "Allow HTTP traffic on port 80" + } + }, + { + "name": "allowSSH", + "properties": { + "priority": 200, + "protocol": "Tcp", + "access": "Allow", + "direction": "Inbound", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "destinationAddressPrefix": "*", + "destinationPortRange": "22", + "description": "Allow SSH traffic on port 22" + } + }, + { + "name": "allowOutbound", + "properties": { + "priority": 300, + "protocol": "Tcp", + "access": "Allow", + "direction": "Outbound", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "destinationAddressPrefix": "*", + "destinationPortRange": "*", + "description": "Allow all outbound traffic" + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2021-03-01", + "name": "maxServeNIC", + "location": "[parameters('location')]", + "dependsOn": [ + "[resourceId('Microsoft.Network/publicIPAddresses', 'maxServePublicIP')]", + "[resourceId('Microsoft.Network/virtualNetworks', 'maxServeVNet')]", + "[resourceId('Microsoft.Network/networkSecurityGroups', 'maxServeNSG')]" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "subnet": { + "id": "[concat(resourceId('Microsoft.Network/virtualNetworks', 'maxServeVNet'), '/subnets/maxServeSubnet')]" + }, + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "[resourceId('Microsoft.Network/publicIPAddresses', 'maxServePublicIP')]" + } + } + } + ], + "networkSecurityGroup": { + "id": "[resourceId('Microsoft.Network/networkSecurityGroups', 'maxServeNSG')]" + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2021-03-01", + "name": "maxServeVM", + "location": "[parameters('location')]", + "dependsOn": [ + "[resourceId('Microsoft.Network/networkInterfaces', 'maxServeNIC')]" + ], + "plan": { + "name": "nvaie_gpu_1_gen2", + "publisher": "nvidia", + "product": "nvidia-ai-enterprise" + }, + "properties": { + "hardwareProfile": { + "vmSize": "[parameters('vmSize')]" + }, + "osProfile": { + "computerName": "maxServeVM", + "adminUsername": "[parameters('adminUsername')]", + "adminPassword": "[parameters('adminPassword')]" + }, + "storageProfile": { + "imageReference": { + "publisher": "nvidia", + "offer": "nvidia-ai-enterprise", + "sku": "nvaie_gpu_1_gen2", + "version": "24.07.03" + }, + "osDisk": { + "createOption": "FromImage", + "managedDisk": { + "storageAccountType": "Standard_LRS" + }, + "diskSizeGB": "[parameters('osDiskSizeGB')]" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "[resourceId('Microsoft.Network/networkInterfaces', 'maxServeNIC')]" + } + ] + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "apiVersion": "2021-03-01", + "name": "maxServeVM/customScriptExtension", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[resourceId('Microsoft.Compute/virtualMachines', 'maxServeVM')]" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.1", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [], + "script": "[parameters('startupScript')]" + } + } + } + ], + "outputs": { + "vmName": { + "type": "string", + "value": "[reference('maxServeVM').osProfile.computerName]" + } + } +} diff --git a/tutorials/max-serve-cloud-configs/azure/notify.sh b/tutorials/max-serve-cloud-configs/azure/notify.sh new file mode 100644 index 0000000000..c038b8b10a --- /dev/null +++ b/tutorials/max-serve-cloud-configs/azure/notify.sh @@ -0,0 +1,113 @@ +#!/bin/bash +##===----------------------------------------------------------------------===## +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +##===----------------------------------------------------------------------===## + +RESOURCE_GROUP=$1 +VM_PASSWORD=$2 +PUBLIC_IP=$3 +VM_NAME=maxServeVM +MAX_WAIT_MINUTES=30 +START_TIME=$(date +%s) + +fetch_logs() { + echo "=== Azure VM Logs ===" + echo "📋 Attempting to fetch logs from VM at ${PUBLIC_IP}..." + + LOGS=$(sshpass -p "$VM_PASSWORD" ssh -o StrictHostKeyChecking=no -o ConnectTimeout=50 -v azureuser@$PUBLIC_IP " + # First check if container is running + CONTAINER_ID=\$(sudo docker ps -q -f ancestor=docker.modular.com/modular/max-openai-api:latest) + if [ -n \"\$CONTAINER_ID\" ]; then + echo '=== Docker Container Found ===' + sudo docker logs \$CONTAINER_ID + else + echo '=== Checking Deployment Logs ===' + # Check deployment logs if container isn't running yet + sudo cat /var/log/azure/custom-script/handler.log 2>/dev/null || echo 'No handler.log'; + sudo cat /var/lib/waagent/custom-script/download/0/stdout 2>/dev/null || echo 'No stdout'; + sudo cat /var/lib/waagent/custom-script/download/0/stderr 2>/dev/null || echo 'No stderr'; + fi + " 2>&1) + + if [ $? -ne 0 ]; then + echo "❌ Failed to connect to VM or fetch logs" + echo "Debug info: $LOGS" + return 1 + fi + + echo "$LOGS" + echo "====================" +} + +check_server_status() { + local logs=$1 + echo "🔍 Checking logs for server status..." + + if echo "$logs" | grep -q "Pulling from docker.modular.com/modular/max-openai-api"; then + echo "⏳ Docker image is still being pulled..." + return 1 + fi + + if curl -s -f "http://$PUBLIC_IP/v1/health" >/dev/null; then + echo "✅ Server health check passed!" + return 0 + fi + + if echo "$logs" | grep -q "Building\|Compiling\|Starting download of model"; then + echo "⏳ Server is initializing (compiling model)..." + return 1 + fi + + echo "⏳ Server still starting up..." + return 1 +} + +echo "🔍 Starting monitoring for MAX server (max wait: ${MAX_WAIT_MINUTES} minutes)..." + +if ! az vm show -g "$RESOURCE_GROUP" -n "$VM_NAME" &>/dev/null; then + echo "❌ VM not found. Please check if VM exists in resource group ${RESOURCE_GROUP}" + exit 1 +fi + +while true; do + current_time=$(date +%s) + elapsed_minutes=$(((current_time - START_TIME) / 60)) + + if [ $elapsed_minutes -ge $MAX_WAIT_MINUTES ]; then + echo "❌ Timeout after ${MAX_WAIT_MINUTES} minutes. Server might still be starting up." + echo "👉 You can manually check the logs by:" + echo " ssh azureuser@$PUBLIC_IP" + echo " sudo cat /var/log/azure/custom-script/handler.log" + echo " sudo cat /var/lib/waagent/custom-script/download/0/stdout" + echo " sudo cat /var/lib/waagent/custom-script/download/0/stderr" + exit 1 + fi + + echo "⏳ Checking logs... (${elapsed_minutes}/${MAX_WAIT_MINUTES} minutes)" + + LOGS=$(fetch_logs) + + if [ -n "$LOGS" ]; then + if check_server_status "$LOGS"; then + echo "✅ Server is ready! (took ${elapsed_minutes} minutes)" + echo "📋 Latest logs:" + echo "$LOGS" + exit 0 + fi + else + echo "⏳ Logs not yet available..." + fi + + echo "⏳ Server still starting up... checking again in 60 seconds" + echo "-------------------------------------------" + sleep 60 +done diff --git a/tutorials/max-serve-cloud-configs/gcp/max-serve-gcp.jinja b/tutorials/max-serve-cloud-configs/gcp/max-serve-gcp.jinja new file mode 100644 index 0000000000..7f5a20dfec --- /dev/null +++ b/tutorials/max-serve-cloud-configs/gcp/max-serve-gcp.jinja @@ -0,0 +1,120 @@ +{# +===----------------------------------------------------------------------=== +Copyright (c) 2025, Modular Inc. All rights reserved. + +Licensed under the Apache License v2.0 with LLVM Exceptions: +https://llvm.org/LICENSE.txt + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +===----------------------------------------------------------------------=== +#} + +resources: +# Main compute instance +- name: {{ properties['instanceName'] }} + type: compute.v1.instance + properties: + zone: {{ properties['zone'] }} + machineType: zones/{{ properties['zone'] }}/machineTypes/{{ properties['machineType'] }} + guestAccelerators: + - acceleratorType: zones/{{ properties['zone'] }}/acceleratorTypes/{{ properties['acceleratorType'] }} + acceleratorCount: {{ properties['acceleratorCount'] }} + disks: + - deviceName: boot + boot: true + autoDelete: true + initializeParams: + sourceImage: projects/deeplearning-platform-release/global/images/{{ properties['sourceImage'] }} + diskSizeGb: 100 # disk space in GB + networkInterfaces: + - network: global/networks/default + accessConfigs: + - name: External NAT + type: ONE_TO_ONE_NAT + serviceAccounts: + - email: default + scopes: + - https://www.googleapis.com/auth/cloud-platform + scheduling: + preemptible: false + onHostMaintenance: TERMINATE # Disables live migration for GPU instances + automaticRestart: true + metadata: + items: + - key: startup-script + value: | + #!/bin/bash + set -xe # Enable detailed logging + curl -sSO https://dl.google.com/cloudagents/add-logging-agent-repo.sh + sudo bash add-logging-agent-repo.sh + + # Update and install dependencies + sudo apt-get update + sudo apt-get install -y google-fluentd curl apt-transport-https ca-certificates gnupg lsb-release software-properties-common + + # Configure Stackdriver logging + sudo service google-fluentd start + sudo systemctl enable google-fluentd + + # Install the NVIDIA drivers if not installed + if [ ! -f /opt/google/cuda-installer ]; then + sudo /opt/deeplearning/install-driver.sh + fi + + # Add Docker GPG key and Docker repository + curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg + echo \ + "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \ + $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null + + # Install Docker + sudo apt-get update + sudo apt-get install -y docker-ce docker-ce-cli containerd.io + + # Add NVIDIA Docker repository + distribution=$(. /etc/os-release;echo $ID$VERSION_ID) \ + && curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add - \ + && curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list + + # Install NVIDIA container runtime + sudo apt-get update + sudo apt-get install -y nvidia-container-toolkit + sudo systemctl restart docker + + # Add user to docker group + sudo usermod -aG docker $(whoami) + + docker run \ + --env "HF_TOKEN={{ properties['huggingFaceHubToken'] }}" \ + --env "HF_HUB_ENABLE_HF_TRANSFER=1" \ + -v $HOME/.cache/huggingface:/root/.cache/huggingface \ + --gpus 1 \ + -p 80:8000 \ + --ipc host \ + docker.modular.com/modular/max-openai-api:latest \ + --model-path {{ properties['huggingFaceRepoId'] }} + +# Add firewall rule directly in template +- name: allow-http + type: compute.v1.firewall + properties: + network: global/networks/default + sourceRanges: ["0.0.0.0/0"] + targetTags: ["http-server"] + allowed: + - IPProtocol: tcp + ports: ["80"] + +# Outputs section to output public IP and instance details +outputs: +- name: instanceName + value: $(ref.{{ properties['instanceName'] }}.name) + description: Name of the GCP Compute instance. + +- name: instancePublicIP + value: $(ref.{{ properties['instanceName'] }}.networkInterfaces[0].accessConfigs[0].natIP) + description: Public IP address of the GCP Compute instance. diff --git a/tutorials/max-serve-cloud-configs/gcp/notify.sh b/tutorials/max-serve-cloud-configs/gcp/notify.sh new file mode 100644 index 0000000000..89e7262f62 --- /dev/null +++ b/tutorials/max-serve-cloud-configs/gcp/notify.sh @@ -0,0 +1,103 @@ +#!/bin/bash +##===----------------------------------------------------------------------===## +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +##===----------------------------------------------------------------------===## + +PROJECT_ID=$1 +INSTANCE_NAME=$2 +ZONE=$3 +PUBLIC_IP=$4 +MAX_WAIT_MINUTES=30 +START_TIME=$(date +%s) + +fetch_logs() { + local instance_id=$1 + local limit=${2:-50} + echo "=== GCP Instance Logs ===" + + echo "Querying logs for instance_id: ${instance_id}" + + gcloud logging read \ + "resource.type=gce_instance AND \ + resource.labels.instance_id=${instance_id} AND \ + jsonPayload.message:*" \ + --project="${PROJECT_ID}" \ + --format="table(timestamp,jsonPayload.message)" \ + --limit=10 + + echo "====================" +} + +check_server_status() { + local logs=$1 + echo "🔍 Checking server health..." + + if echo "$logs" | grep -q "Pulling from docker.modular.com/modular/max-openai-api"; then + echo "⏳ Docker image is still being pulled..." + return 1 + fi + + if curl -s -f "http://${PUBLIC_IP}/v1/health" >/dev/null; then + echo "✅ Server health check passed!" + return 0 + fi + + if echo "$logs" | grep -q "Building\|Compiling\|Starting download of model"; then + echo "⏳ Server is initializing (compiling model)..." + return 1 + fi + + echo "⏳ Server still starting up..." + return 1 +} + +echo "🔍 Starting monitoring for MAX server (max wait: ${MAX_WAIT_MINUTES} minutes)..." + +# Get instance ID +INSTANCE_ID=$(gcloud compute instances describe "${INSTANCE_NAME}" \ + --zone="${ZONE}" \ + --project="${PROJECT_ID}" \ + --format="value(id)") + +if [ -z "$INSTANCE_ID" ]; then + echo "❌ Failed to get instance ID. Please check if instance exists." + exit 1 +fi + +while true; do + current_time=$(date +%s) + elapsed_minutes=$(((current_time - START_TIME) / 60)) + + if [ $elapsed_minutes -ge $MAX_WAIT_MINUTES ]; then + echo "❌ Timeout after ${MAX_WAIT_MINUTES} minutes. Server might still be starting up." + exit 1 + fi + + echo "⏳ Checking logs... (${elapsed_minutes}/${MAX_WAIT_MINUTES} minutes)" + + LOGS=$(fetch_logs "$INSTANCE_ID") + + if [ -n "$LOGS" ]; then + if check_server_status "$LOGS"; then + echo "✅ Server is ready! (took ${elapsed_minutes} minutes)" + echo "📋 Latest logs:" + echo "$LOGS" + exit 0 + fi + else + echo "⏳ Logs not yet available..." + fi + + echo "⏳ Server still starting up... checking again in 60 seconds" + echo "-------------------------------------------" + sleep 60 +done diff --git a/tutorials/run-embeddings-with-max-serve/.gitattributes b/tutorials/run-embeddings-with-max-serve/.gitattributes new file mode 100644 index 0000000000..8f61a8e774 --- /dev/null +++ b/tutorials/run-embeddings-with-max-serve/.gitattributes @@ -0,0 +1,2 @@ +# SCM syntax highlighting +pixi.lock linguist-language=YAML linguist-generated=true diff --git a/tutorials/run-embeddings-with-max-serve/.gitignore b/tutorials/run-embeddings-with-max-serve/.gitignore new file mode 100644 index 0000000000..9279c11d44 --- /dev/null +++ b/tutorials/run-embeddings-with-max-serve/.gitignore @@ -0,0 +1,6 @@ + +# pixi environments +.pixi +*.egg-info +# magic environments +.magic diff --git a/tutorials/run-embeddings-with-max-serve/README.md b/tutorials/run-embeddings-with-max-serve/README.md new file mode 100644 index 0000000000..4fc60548b3 --- /dev/null +++ b/tutorials/run-embeddings-with-max-serve/README.md @@ -0,0 +1,16 @@ +# Embeddings endpoint + +A document management system that uses embeddings and clustering to organize and +search through documents semantically. + +1. Start the embeddings endpoint: + + ```bash + max-pipelines serve --model-path=sentence-transformers/all-mpnet-base-v2 + ``` + +1. Run the system: + + ```bash + python -m embeddings.kb_system + ``` diff --git a/tutorials/run-embeddings-with-max-serve/pyproject.toml b/tutorials/run-embeddings-with-max-serve/pyproject.toml new file mode 100644 index 0000000000..ff683e51a7 --- /dev/null +++ b/tutorials/run-embeddings-with-max-serve/pyproject.toml @@ -0,0 +1,25 @@ +[project] +authors = [{name = "Modular", email = "hello@modular.com"}] +dependencies = [] +description = "Run an embeddings model using the all-mpnet-base-v2 model" +name = "embeddings" +requires-python = ">= 3.11" +version = "0.1.0" + +[build-system] +build-backend = "hatchling.build" +requires = ["hatchling"] + +[tool.pixi.project] +channels = ["https://conda.modular.com/max-nightly", "https://conda.modular.com/max", "https://repo.prefix.dev/modular-community", "conda-forge"] +platforms = ["osx-arm64"] + +[tool.pixi.pypi-dependencies] +embeddings = { path = ".", editable = true } + +[tool.pixi.tasks] + +[tool.pixi.dependencies] +numpy = ">=2.2.2,<3" +scikit-learn = ">=1.6.1,<2" +requests = ">=2.32.3,<3" diff --git a/tutorials/run-embeddings-with-max-serve/src/embeddings/__init__.py b/tutorials/run-embeddings-with-max-serve/src/embeddings/__init__.py new file mode 100644 index 0000000000..75c4f824f2 --- /dev/null +++ b/tutorials/run-embeddings-with-max-serve/src/embeddings/__init__.py @@ -0,0 +1,12 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # diff --git a/tutorials/run-embeddings-with-max-serve/src/embeddings/kb_system.py b/tutorials/run-embeddings-with-max-serve/src/embeddings/kb_system.py new file mode 100644 index 0000000000..5363aec1d1 --- /dev/null +++ b/tutorials/run-embeddings-with-max-serve/src/embeddings/kb_system.py @@ -0,0 +1,196 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +import logging +from functools import lru_cache +from typing import Dict, List, Tuple + +import numpy as np +import requests +from sklearn.cluster import KMeans +from sklearn.metrics.pairwise import cosine_similarity + +logging.basicConfig(level=logging.INFO) +logger = logging.getLogger(__name__) + + +class SmartKnowledgeBase: + def __init__(self, endpoint: str = "http://localhost:8000/v1/embeddings"): + self.endpoint = endpoint + self.documents: List[str] = [] + self.doc_titles: List[str] = [] + self.embeddings: np.ndarray = None + self.clusters: Dict[int, List[int]] = {} + + def _get_embedding( + self, texts: List[str], max_retries: int = 3 + ) -> np.ndarray: + """Get embeddings with retry logic.""" + for attempt in range(max_retries): + try: + response = requests.post( + self.endpoint, + headers={"Content-Type": "application/json"}, + json={ + "input": texts, + "model": "sentence-transformers/all-mpnet-base-v2", + }, + timeout=5, + ).json() + return np.array( + [item["embedding"] for item in response["data"]] + ) + except Exception as e: + if attempt == max_retries - 1: + raise Exception( + f"Failed to get embeddings after {max_retries} attempts: {e}" + ) + logger.warning(f"Attempt {attempt + 1} failed, retrying...") + + @lru_cache(maxsize=1000) + def _get_embedding_cached(self, text: str) -> np.ndarray: + """Cached version for single text embedding.""" + return self._get_embedding([text])[0] + + def add_document(self, title: str, content: str): + """Add a single document with title.""" + self.doc_titles.append(title) + self.documents.append(content) + + # Update embeddings + if len(self.documents) == 1: + self.embeddings = self._get_embedding([content]) + else: + self.embeddings = np.vstack( + [self.embeddings, self._get_embedding([content])] + ) + + # Recluster if we have enough documents + if len(self.documents) >= 3: + self._cluster_documents() + + def _cluster_documents(self, n_clusters: int = None): + """Cluster documents into topics.""" + if n_clusters is None: + n_clusters = max(2, len(self.documents) // 5) + + n_clusters = min(n_clusters, len(self.documents)) + kmeans = KMeans(n_clusters=n_clusters, random_state=42).fit( + self.embeddings + ) + + self.clusters = {} + for i in range(n_clusters): + self.clusters[i] = np.where(kmeans.labels_ == i)[0].tolist() + + def search( + self, query: str, top_k: int = 3 + ) -> List[Tuple[str, str, float]]: + """Find documents most similar to the query.""" + query_embedding = self._get_embedding_cached(query) + similarities = cosine_similarity([query_embedding], self.embeddings)[0] + top_indices = np.argsort(similarities)[-top_k:][::-1] + return [ + (self.doc_titles[i], self.documents[i], similarities[i]) + for i in top_indices + ] + + def get_topic_documents(self, topic_id: int) -> List[Tuple[str, str]]: + """Get all documents in a topic cluster.""" + return [ + (self.doc_titles[i], self.documents[i]) + for i in self.clusters.get(topic_id, []) + ] + + def suggest_topics( + self, query: str, top_k: int = 2 + ) -> List[Tuple[int, float]]: + query_embedding = self._get_embedding_cached(query) + topic_similarities = [] + + for topic_id, doc_indices in self.clusters.items(): + topic_embeddings = self.embeddings[doc_indices] + similarity = cosine_similarity( + [query_embedding], topic_embeddings + ).max() + topic_similarities.append((topic_id, similarity)) # Remove [0] + + return sorted(topic_similarities, key=lambda x: x[1], reverse=True)[ + :top_k + ] + + +# Example usage +if __name__ == "__main__": + # Initialize knowledge base + kb = SmartKnowledgeBase() + + # Add technical documentation + kb.add_document( + "Password Reset Guide", + "To reset your password: 1. Click 'Forgot Password' 2. Enter your email " + "3. Follow the reset link 4. Create a new password meeting security requirements", + ) + + kb.add_document( + "Account Security", + "Secure your account by enabling 2FA, using a strong password, and regularly " + "monitoring account activity. Enable login notifications for suspicious activity.", + ) + + kb.add_document( + "Billing Overview", + "Your billing cycle starts on the 1st of each month. View charges, update " + "payment methods, and download invoices from the Billing Dashboard.", + ) + + kb.add_document( + "Payment Methods", + "We accept credit cards, PayPal, and bank transfers. Update payment methods " + "in Billing Settings. New payment methods are verified with a $1 hold.", + ) + + kb.add_document( + "Installation Guide", + "Install by downloading the appropriate package for your OS. Run with admin " + "privileges. Follow prompts to select installation directory and components.", + ) + + kb.add_document( + "System Requirements", + "Minimum: 8GB RAM, 2GB storage, Windows 10/macOS 11+. Recommended: 16GB RAM, " + "4GB storage, SSD, modern multi-core processor for optimal performance.", + ) + + # Example 1: Search for password-related help + print("\nSearching for password help:") + results = kb.search("How do I change my password?") + for title, content, score in results: + print(f"\nTitle: {title}") + print(f"Relevance: {score:.2f}") + print(f"Content: {content[:100]}...") + + # Example 2: Get topic suggestions + print("\nGetting topics for billing query:") + query = "Where can I update my credit card?" + topics = kb.suggest_topics(query) + for topic_id, relevance in topics: + print(f"\nTopic {topic_id} (Relevance: {relevance:.2f}):") + for title, content in kb.get_topic_documents(topic_id): + print(f"- {title}: {content[:50]}...") + + # Example 3: Get all documents in a topic + print("\nAll documents in Topic 0:") + for title, content in kb.get_topic_documents(0): + print(f"\nTitle: {title}") + print(f"Content: {content[:100]}...") diff --git a/tutorials/run-onnx-with-python/.gitignore b/tutorials/run-onnx-with-python/.gitignore new file mode 100644 index 0000000000..bf7158d955 --- /dev/null +++ b/tutorials/run-onnx-with-python/.gitignore @@ -0,0 +1,2 @@ +.magic +resnet50.onnx diff --git a/tutorials/run-onnx-with-python/README.md b/tutorials/run-onnx-with-python/README.md new file mode 100644 index 0000000000..a4503b0232 --- /dev/null +++ b/tutorials/run-onnx-with-python/README.md @@ -0,0 +1,21 @@ +# Tutorial: Run an ONNX model with Python + +This is the finished project for the [Run an ONNX model with +Python](https://docs.modular.com/max/tutorials/run-onnx-with-python) tutorial. + +Please refer to that page for more information. + +If you just want to run this code, use these commands (first [install +magic](https://docs.modular.com/magic/#install-magic)): + +```sh +git clone https://github.com/modular/max.git + +cd max/tutorials/run-onnx-with-python + +magic shell + +python3 download-model.py + +python3 run.py +``` diff --git a/tutorials/run-onnx-with-python/download-model.py b/tutorials/run-onnx-with-python/download-model.py new file mode 100644 index 0000000000..286369fc46 --- /dev/null +++ b/tutorials/run-onnx-with-python/download-model.py @@ -0,0 +1,47 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +import torch +from torch.onnx import export +from transformers import ResNetForImageClassification + +# The HuggingFace model name and exported file name +HF_MODEL_NAME = "microsoft/resnet-50" +MODEL_PATH = "resnet50.onnx" + + +def main(): + # Load the ResNet model from HuggingFace in evaluation mode + model = ResNetForImageClassification.from_pretrained(HF_MODEL_NAME) + model.eval() + + # Create random input for tracing, then export the model to ONNX + dummy_input = torch.randn(1, 3, 224, 224) + export( + model, + dummy_input, + MODEL_PATH, + opset_version=11, + input_names=["pixel_values"], + output_names=["output"], + dynamic_axes={ + "pixel_values": {0: "batch_size"}, + "output": {0: "batch_size"}, + }, + ) + + print(f"Model saved as {MODEL_PATH}") + + +if __name__ == "__main__": + main() diff --git a/tutorials/run-onnx-with-python/pyproject.toml b/tutorials/run-onnx-with-python/pyproject.toml new file mode 100644 index 0000000000..b754655b7f --- /dev/null +++ b/tutorials/run-onnx-with-python/pyproject.toml @@ -0,0 +1,36 @@ +[project] +dependencies = [] +description = "Tutorial: Run an ONNX model with Python" +name = "onnx-tutorial" +requires-python = ">=3.9,<3.13" +version = "0.1.0" + +[build-system] +build-backend = "hatchling.build" +requires = ["hatchling"] + +[tool.pixi.project] +channels = ["pytorch", "conda-forge", "https://conda.modular.com/max-nightly/"] +platforms = ["linux-64", "osx-arm64"] + +[tool.pixi.pypi-dependencies] +onnx_tutorial = { path = ".", editable = true } + +[tool.pixi.dependencies] +max = "~=24.6" +pytorch = "==2.4.0" +numpy = "<2.0" +onnx = "==1.16.0" +transformers = "==4.40.1" +datasets = "==2.18" +pillow = "==10.3.0" +libjpeg-turbo = { version = "==3.0.0", channel = "conda-forge" } + +[tool.pixi.feature.test.tasks] +test = "python3 download-model.py && python3 run.py" + +[tool.pixi.environments] +test = { features = ["test"] } + +[tool.pixi.feature.test.dependencies] +python-dateutil = "==2.9.0" diff --git a/tutorials/run-onnx-with-python/run.py b/tutorials/run-onnx-with-python/run.py new file mode 100644 index 0000000000..ef84a1b096 --- /dev/null +++ b/tutorials/run-onnx-with-python/run.py @@ -0,0 +1,50 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +import numpy as np +from datasets import load_dataset +from max import engine +from transformers import AutoImageProcessor, AutoModelForImageClassification + +# The HuggingFace model name and exported file name +HF_MODEL_NAME = "microsoft/resnet-50" +MODEL_PATH = "resnet50.onnx" + + +def main(): + dataset = load_dataset("huggingface/cats-image", trust_remote_code=True) + image = dataset["test"]["image"][0] + # optionally, save the image to see it yourself: + # image.save("cat.png") + + image_processor = AutoImageProcessor.from_pretrained(HF_MODEL_NAME) + inputs = image_processor(image, return_tensors="np") + + print("Keys:", inputs.keys()) + print("Shape:", inputs["pixel_values"].shape) + + session = engine.InferenceSession() + model = session.load(MODEL_PATH) + outputs = model.execute_legacy(**inputs) + + print("Output shape:", outputs["output"].shape) + + predicted_label = np.argmax(outputs["output"], axis=-1)[0] + hf_model = AutoModelForImageClassification.from_pretrained(HF_MODEL_NAME) + predicted_class = hf_model.config.id2label[predicted_label] + + print(f"Prediction: {predicted_class}") + + +if __name__ == "__main__": + main() diff --git a/tutorials/run-onnx-with-python/src/onnx_tutorial/__init__.py b/tutorials/run-onnx-with-python/src/onnx_tutorial/__init__.py new file mode 100644 index 0000000000..1d49ac09ac --- /dev/null +++ b/tutorials/run-onnx-with-python/src/onnx_tutorial/__init__.py @@ -0,0 +1,12 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # diff --git a/tutorials/run-torchscript-with-python/.gitignore b/tutorials/run-torchscript-with-python/.gitignore new file mode 100644 index 0000000000..5254ad982c --- /dev/null +++ b/tutorials/run-torchscript-with-python/.gitignore @@ -0,0 +1,2 @@ +.magic +roberta.torchscript diff --git a/tutorials/run-torchscript-with-python/README.md b/tutorials/run-torchscript-with-python/README.md new file mode 100644 index 0000000000..639dc85912 --- /dev/null +++ b/tutorials/run-torchscript-with-python/README.md @@ -0,0 +1,22 @@ +# Tutorial: Run a TorchScript model with Python + +This is the finished project for the [Run a TorchScript model with +Python](https://docs.modular.com/max/tutorials/run-torchscript-with-python) +tutorial. + +Please refer to that page for more information. + +If you just want to run this code, use these commands (first [install +magic](https://docs.modular.com/magic/#install-magic)): + +```sh +git clone https://github.com/modular/max.git + +cd max/tutorials/run-torchscript-with-python + +magic shell + +python3 download-model.py + +python3 run.py +``` diff --git a/tutorials/run-torchscript-with-python/download-model.py b/tutorials/run-torchscript-with-python/download-model.py new file mode 100644 index 0000000000..bcd91ba410 --- /dev/null +++ b/tutorials/run-torchscript-with-python/download-model.py @@ -0,0 +1,43 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from pathlib import Path + +import torch +from transformers import AutoModelForSequenceClassification + +# The HuggingFace model name and exported file name +HF_MODEL_NAME = "cardiffnlp/twitter-roberta-base-emotion-multilabel-latest" +MODEL_PATH = Path("roberta.torchscript") + + +def main(): + # Load the ResNet model from HuggingFace in evaluation mode + hf_model = AutoModelForSequenceClassification.from_pretrained(HF_MODEL_NAME) + + # Convert the model to TorchScript + batch = 1 + seqlen = 128 + input_spec = { + "input_ids": torch.zeros((batch, seqlen), dtype=torch.int64), + "attention_mask": torch.zeros((batch, seqlen), dtype=torch.int64), + } + with torch.no_grad(): + traced_model = torch.jit.trace( + hf_model, example_kwarg_inputs=dict(input_spec), strict=False + ) + torch.jit.save(traced_model, MODEL_PATH) + + +if __name__ == "__main__": + main() diff --git a/tutorials/run-torchscript-with-python/pyproject.toml b/tutorials/run-torchscript-with-python/pyproject.toml new file mode 100644 index 0000000000..f4b1f5772e --- /dev/null +++ b/tutorials/run-torchscript-with-python/pyproject.toml @@ -0,0 +1,31 @@ +[project] +dependencies = [] +description = "Tutorial: Run a TorchScript model with Python" +name = "torchscript-tutorial" +requires-python = ">=3.11,<3.13" +version = "0.1.0" + +[build-system] +build-backend = "hatchling.build" +requires = ["hatchling"] + +[tool.pixi.project] +channels = ["pytorch", "conda-forge", "https://conda.modular.com/max-nightly/"] +platforms = ["linux-64", "osx-arm64"] + +[tool.pixi.pypi-dependencies] +torchscript_tutorial = { path = ".", editable = true } + +[tool.pixi.dependencies] +max = "~=24.6" +pytorch = "==2.4.0" +transformers = "==4.40.1" + +[tool.pixi.feature.test.tasks] +test = "python3 download-model.py && python3 run.py" + +[tool.pixi.environments] +test = { features = ["test"] } + +[tool.pixi.feature.test.dependencies] +python-dateutil = "==2.9.0" diff --git a/tutorials/run-torchscript-with-python/run.py b/tutorials/run-torchscript-with-python/run.py new file mode 100644 index 0000000000..0a9c75b4d3 --- /dev/null +++ b/tutorials/run-torchscript-with-python/run.py @@ -0,0 +1,76 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from pathlib import Path + +import torch +from max import engine +from max.dtype import DType +from transformers import AutoModelForSequenceClassification, AutoTokenizer + +# The HuggingFace model name and TorchScript file name +HF_MODEL_NAME = "cardiffnlp/twitter-roberta-base-emotion-multilabel-latest" +MODEL_PATH = Path("roberta.torchscript") + + +def main(): + batch = 1 + seqlen = 128 + input_spec = { + "input_ids": torch.zeros((batch, seqlen), dtype=torch.int64), + "attention_mask": torch.zeros((batch, seqlen), dtype=torch.int64), + } + + # We use the same `input_spec` that we used to trace the model (download-model.py) + input_spec_list = [ + engine.TorchInputSpec(shape=tensor.size(), dtype=DType.int64) + for tensor in input_spec.values() + ] + + session = engine.InferenceSession() + model = session.load(MODEL_PATH, input_specs=input_spec_list) + + for tensor in model.input_metadata: + print( + f"name: {tensor.name}, shape: {tensor.shape}, dtype: {tensor.dtype}" + ) + + # The model input + text_input = ( + "There are many exciting developments in the field of AI" + " Infrastructure!" + ) + + # Tokenize the input + tokenizer = AutoTokenizer.from_pretrained(HF_MODEL_NAME) + inputs = tokenizer( + text_input, + return_tensors="pt", + padding="max_length", + truncation=True, + max_length=seqlen, + ) + print(inputs) + + outputs = model.execute_legacy(**inputs) + + # Extract class prediction from output + hf_model = AutoModelForSequenceClassification.from_pretrained(HF_MODEL_NAME) + predicted_class_id = outputs["result0"]["logits"].argmax(axis=-1)[0] + classification = hf_model.config.id2label[predicted_class_id] + + print(f"The sentiment is: {classification}") + + +if __name__ == "__main__": + main() diff --git a/tutorials/run-torchscript-with-python/src/torchscript_tutorial/__init__.py b/tutorials/run-torchscript-with-python/src/torchscript_tutorial/__init__.py new file mode 100644 index 0000000000..1d49ac09ac --- /dev/null +++ b/tutorials/run-torchscript-with-python/src/torchscript_tutorial/__init__.py @@ -0,0 +1,12 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # From 44a9f7af205fe50d02fc0dd05ceb5ac4513bd26e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20B=C3=B8rstad?= Date: Wed, 26 Feb 2025 19:49:08 +0100 Subject: [PATCH 467/509] [Pipelines] Fix bug in quantized version of LinearV2 (#56733) This PR fixes an issue where quantized Llama would get NaNs at the output. This likely means that there's a difference between `self.quantization_encoding` and `self.weight. self.quantization_encoding`, perhaps the weight's encoding will change at a later time? This perhaps means that there are some deeper problems. This quick fix at least fixes the pipelines logits verification --------- Co-authored-by: Kathy Wu MODULAR_ORIG_COMMIT_REV_ID: 74f1da31cc9f3433714a025ab4a613171545d559 --- .../architectures/llama3/naive_llama3.py | 4 +++- .../nn/attention/attention_with_rope.py | 2 +- .../nn/attention/naive_attention_with_rope.py | 17 ----------------- src/max/pipelines/nn/{attention => }/clamp.py | 0 src/max/pipelines/nn/linear.py | 13 +++++++++---- 5 files changed, 13 insertions(+), 23 deletions(-) rename src/max/pipelines/nn/{attention => }/clamp.py (100%) diff --git a/src/max/pipelines/architectures/llama3/naive_llama3.py b/src/max/pipelines/architectures/llama3/naive_llama3.py index c79badcbde..d171f926cb 100644 --- a/src/max/pipelines/architectures/llama3/naive_llama3.py +++ b/src/max/pipelines/architectures/llama3/naive_llama3.py @@ -219,6 +219,7 @@ def __init__( dtype=dtype, device=device, quantization_encoding=quantization_encoding, + clip_weight=clip_qkv, ), wv=linear_cls( in_dim=hidden_size, @@ -226,6 +227,7 @@ def __init__( dtype=dtype, device=device, quantization_encoding=quantization_encoding, + clip_weight=clip_qkv, ), wq=linear_cls( in_dim=hidden_size, @@ -233,6 +235,7 @@ def __init__( dtype=dtype, device=device, quantization_encoding=quantization_encoding, + clip_weight=clip_qkv, ), wo=linear_cls( in_dim=hidden_size, @@ -243,7 +246,6 @@ def __init__( ), rope=rope, scale=scale, - clip_qkv=clip_qkv, ) diff --git a/src/max/pipelines/nn/attention/attention_with_rope.py b/src/max/pipelines/nn/attention/attention_with_rope.py index 897a14d068..a9d4c70fb8 100644 --- a/src/max/pipelines/nn/attention/attention_with_rope.py +++ b/src/max/pipelines/nn/attention/attention_with_rope.py @@ -33,6 +33,7 @@ PagedKVCacheCollection, ) +from ..clamp import clamp from ..kernels import ( MHAMaskVariant, flash_attention_ragged, @@ -43,7 +44,6 @@ from ..layer import LayerV2 from ..linear import LinearV2 from ..rotary_embedding import OptimizedRotaryEmbedding -from .clamp import clamp from .interfaces import ( AttentionImpl, AttentionImplQKV, diff --git a/src/max/pipelines/nn/attention/naive_attention_with_rope.py b/src/max/pipelines/nn/attention/naive_attention_with_rope.py index 3f136f167c..8900378460 100644 --- a/src/max/pipelines/nn/attention/naive_attention_with_rope.py +++ b/src/max/pipelines/nn/attention/naive_attention_with_rope.py @@ -23,7 +23,6 @@ from ..layer import LayerV2 from ..linear import Linear, LinearV2 from ..rotary_embedding import RotaryEmbedding -from .clamp import clamp class NaiveAttentionWithRope(LayerV2): @@ -38,7 +37,6 @@ def __init__( wo: Linear | LinearV2, rope: RotaryEmbedding, scale: float | None = None, - clip_qkv: float | None = None, ): super().__init__() self.n_heads = n_heads @@ -52,7 +50,6 @@ def __init__( self.scale = ( scale if scale else math.sqrt(1.0 / self.kv_params.head_dim) ) - self.clip_qkv = clip_qkv if self.kv_params.cache_strategy.uses_opaque(): raise ValueError( @@ -143,20 +140,6 @@ def __call__( """ x = TensorValue(x) batch, seq_len = x.shape[0], x.shape[1] - # Apply `clip_qkv` before matmuling the weights - if self.clip_qkv: - assert isinstance(self.q_proj.weight, TensorValue) - self.q_proj.weight = clamp( - self.q_proj.weight, min=-self.clip_qkv, max=self.clip_qkv - ) - assert isinstance(self.k_proj.weight, TensorValue) - self.k_proj.weight = clamp( - self.k_proj.weight, min=-self.clip_qkv, max=self.clip_qkv - ) - assert isinstance(self.v_proj.weight, TensorValue) - self.v_proj.weight = clamp( - self.v_proj.weight, min=-self.clip_qkv, max=self.clip_qkv - ) xq = self.q_proj(x) xk = self.k_proj(x) diff --git a/src/max/pipelines/nn/attention/clamp.py b/src/max/pipelines/nn/clamp.py similarity index 100% rename from src/max/pipelines/nn/attention/clamp.py rename to src/max/pipelines/nn/clamp.py diff --git a/src/max/pipelines/nn/linear.py b/src/max/pipelines/nn/linear.py index dd6a625af0..c09c5e8d74 100644 --- a/src/max/pipelines/nn/linear.py +++ b/src/max/pipelines/nn/linear.py @@ -31,6 +31,7 @@ from max.graph.quantization import QuantizationConfig, QuantizationEncoding from max.graph.weights import Weights +from .clamp import clamp from .kernels import swish_glu from .layer import Layer, LayerV2 @@ -62,7 +63,7 @@ class LinearV2(LayerV2): output = linear_layer(input_tensor) """ - weight: Weight | TensorValue + weight: Weight """The weight matrix stored on CPU with shape (out_dim, in_dim). Model init transposes the weight and moves it to :obj:`device`.""" @@ -82,6 +83,7 @@ def __init__( has_bias: bool = False, quantization_encoding: Optional[QuantizationEncoding] = None, name: Optional[str] = None, + clip_weight: Optional[float] = None, ) -> None: """Initializes the linear layer with weights and optional bias. @@ -99,6 +101,7 @@ def __init__( super().__init__() self.device = device + self.clip_weight = clip_weight self.weight = Weight( name=f"{name}.weight" if name else "weight", @@ -107,7 +110,6 @@ def __init__( device=DeviceRef.CPU() if self.device else None, quantization_encoding=quantization_encoding, ) - self.quantization_encoding = quantization_encoding if has_bias: self.bias = Weight( @@ -137,9 +139,12 @@ def __call__(self, x: TensorValue) -> TensorValue: if self.device: weight = weight.to(self.device) - if self.quantization_encoding: + if self.clip_weight: + weight = clamp(weight, -self.clip_weight, self.clip_weight) + + if self.weight.quantization_encoding: res = ops.qmatmul( - self.quantization_encoding, + self.weight.quantization_encoding, None, x, weight, From bdd80f93d705e29766bee4c0e503338e132efa99 Mon Sep 17 00:00:00 2001 From: kcaverly Date: Wed, 26 Feb 2025 15:44:13 -0500 Subject: [PATCH 468/509] [Pipelines] Harden TextResponse and next_token interface This puts explicit types on next token TextResponse objects, strengthening the interface for downstream changes. MODULAR_ORIG_COMMIT_REV_ID: 7cd459270f39d0813e421ed9387674901a7b2a69 --- src/max/pipelines/__init__.py | 4 +++- src/max/pipelines/embeddings_pipeline.py | 3 +-- src/max/pipelines/hf_pipeline.py | 14 +++++++++----- src/max/pipelines/interfaces/__init__.py | 4 ++++ src/max/pipelines/{ => interfaces}/response.py | 0 src/max/pipelines/interfaces/text_generation.py | 6 ++++-- src/max/pipelines/pipeline.py | 8 +++----- 7 files changed, 24 insertions(+), 15 deletions(-) rename src/max/pipelines/{ => interfaces}/response.py (100%) diff --git a/src/max/pipelines/__init__.py b/src/max/pipelines/__init__.py index 3020fb1d21..33c02c405a 100644 --- a/src/max/pipelines/__init__.py +++ b/src/max/pipelines/__init__.py @@ -29,8 +29,11 @@ from .hf_utils import HuggingFaceFile from .interfaces import ( EmbeddingsGenerator, + EmbeddingsResponse, + LogProbabilities, PipelineTask, PipelineTokenizer, + TextResponse, TokenGenerator, TokenGeneratorContext, TokenGeneratorRequest, @@ -47,7 +50,6 @@ upper_bounded_default, ) from .registry import PIPELINE_REGISTRY, SupportedArchitecture -from .response import EmbeddingsResponse, LogProbabilities, TextResponse from .tokenizer import ( IdentityPipelineTokenizer, PreTrainedPipelineTokenizer, diff --git a/src/max/pipelines/embeddings_pipeline.py b/src/max/pipelines/embeddings_pipeline.py index 85ed8932ec..fa609ef7f1 100644 --- a/src/max/pipelines/embeddings_pipeline.py +++ b/src/max/pipelines/embeddings_pipeline.py @@ -22,9 +22,8 @@ from .config import PipelineConfig from .context import InputContext -from .interfaces import EmbeddingsGenerator +from .interfaces import EmbeddingsGenerator, EmbeddingsResponse from .pipeline import PipelineModel -from .response import EmbeddingsResponse T = TypeVar("T", bound=InputContext) diff --git a/src/max/pipelines/hf_pipeline.py b/src/max/pipelines/hf_pipeline.py index 0d03506701..52f25f6985 100644 --- a/src/max/pipelines/hf_pipeline.py +++ b/src/max/pipelines/hf_pipeline.py @@ -17,7 +17,7 @@ import logging import warnings -from typing import Any, Optional, cast +from typing import Optional, cast import numpy as np import torch @@ -31,9 +31,13 @@ from .config import PipelineConfig from .context import TextContext -from .interfaces import EmbeddingsGenerator, TokenGenerator +from .interfaces import ( + EmbeddingsGenerator, + EmbeddingsResponse, + TextResponse, + TokenGenerator, +) from .kv_cache import ContinuousHFStaticCache -from .response import EmbeddingsResponse, TextResponse logger = logging.getLogger("max.pipelines") @@ -179,7 +183,7 @@ def next_token( generated_tokens = generated_tokens.cpu() # Prepare the response, pruning away completed requests as we go. - res: list[dict[str, Any]] = [{} for i in range(num_steps)] + res: list[dict[str, TextResponse]] = [{} for i in range(num_steps)] for batch_idx, (request_id, context) in enumerate(batch.items()): for step in range(num_steps): next_token_id = generated_tokens[batch_idx, step].item() @@ -362,7 +366,7 @@ def encode( ) # Prepare the response. - res: dict[str, Any] = {} + res: dict[str, EmbeddingsResponse] = {} for batch_index, request_id in enumerate(batch.keys()): request_embeddings = batch_embeddings[batch_index] res[request_id] = EmbeddingsResponse(request_embeddings) diff --git a/src/max/pipelines/interfaces/__init__.py b/src/max/pipelines/interfaces/__init__.py index 9233e609e6..5e0b009eea 100644 --- a/src/max/pipelines/interfaces/__init__.py +++ b/src/max/pipelines/interfaces/__init__.py @@ -16,6 +16,7 @@ from .embeddings_generation import ( EmbeddingsGenerator, ) +from .response import EmbeddingsResponse, LogProbabilities, TextResponse from .tasks import PipelineTask from .text_generation import ( PipelineTokenizer, @@ -29,8 +30,11 @@ ) __all__ = [ + "EmbeddingsResponse", + "LogProbabilities", "PipelineTask", "PipelineTokenizer", + "TextResponse", "TokenGenerator", "TokenGeneratorContext", "TokenGeneratorRequest", diff --git a/src/max/pipelines/response.py b/src/max/pipelines/interfaces/response.py similarity index 100% rename from src/max/pipelines/response.py rename to src/max/pipelines/interfaces/response.py diff --git a/src/max/pipelines/interfaces/text_generation.py b/src/max/pipelines/interfaces/text_generation.py index c2a250a208..ac7b64d1c7 100644 --- a/src/max/pipelines/interfaces/text_generation.py +++ b/src/max/pipelines/interfaces/text_generation.py @@ -28,6 +28,8 @@ runtime_checkable, ) +from .response import TextResponse + class TokenGeneratorRequestFunction(TypedDict): name: str @@ -256,7 +258,7 @@ class TokenGenerator(Generic[TokenGeneratorContext], Protocol): def next_token( self, batch: dict[str, TokenGeneratorContext], num_steps: int - ) -> list[dict[str, Any]]: + ) -> list[dict[str, TextResponse]]: """Computes the next token response for a single batch. Args: @@ -264,7 +266,7 @@ def next_token( num_steps int: Number of tokens to generate. Returns: - list[dict[str, Any]]: List of encoded responses (indexed by req. ID) + list[dict[str, TextResponse]]: List of encoded responses (indexed by req. ID) """ ... diff --git a/src/max/pipelines/pipeline.py b/src/max/pipelines/pipeline.py index 822602fb07..054d6f66c8 100644 --- a/src/max/pipelines/pipeline.py +++ b/src/max/pipelines/pipeline.py @@ -19,7 +19,6 @@ from abc import ABC, abstractmethod from dataclasses import dataclass from typing import ( - Any, Generic, List, Optional, @@ -44,9 +43,8 @@ from .config import PipelineConfig from .context import InputContext -from .interfaces import TokenGenerator +from .interfaces import LogProbabilities, TextResponse, TokenGenerator from .kv_cache import KVCacheManager, KVCacheParams -from .response import LogProbabilities, TextResponse from .sampling import token_sampler try: @@ -563,7 +561,7 @@ def next_token( self, batch: dict[str, T], num_steps: int, - ) -> list[dict[str, Any]]: + ) -> list[dict[str, TextResponse]]: """Provided a batch, process batch inputs, execute the graph for num_steps in a multi-step scenario, then decode the tokens holistically and return the list of decoded tokens. """ @@ -687,7 +685,7 @@ def next_token( tracer.pop() # pops kv_manager.step # Prepare the response, pruning away completed requests as we go. - res: list[dict[str, Any]] = [{} for _ in range(num_steps)] + res: list[dict[str, TextResponse]] = [{} for _ in range(num_steps)] tracer.push("prepare_response") for batch_index, (request_id, context) in enumerate(batch.items()): step = 0 From 39857d9afab81ff481b63e0b5d7615e824bc34e2 Mon Sep 17 00:00:00 2001 From: kcaverly Date: Wed, 26 Feb 2025 16:27:12 -0500 Subject: [PATCH 469/509] [Pipelines] Introduce TextGenerationResponse and TextGenerationStatus These objects will be used in the following PR to harden completion tracking and enable variable length token outputs. MODULAR_ORIG_COMMIT_REV_ID: c8691328e36643a38b43217b338f062bbf1400d0 --- src/max/pipelines/interfaces/__init__.py | 10 +++++++++- src/max/pipelines/interfaces/response.py | 25 ++++++++++++++++++++++++ 2 files changed, 34 insertions(+), 1 deletion(-) diff --git a/src/max/pipelines/interfaces/__init__.py b/src/max/pipelines/interfaces/__init__.py index 5e0b009eea..804d0d8d6c 100644 --- a/src/max/pipelines/interfaces/__init__.py +++ b/src/max/pipelines/interfaces/__init__.py @@ -16,7 +16,13 @@ from .embeddings_generation import ( EmbeddingsGenerator, ) -from .response import EmbeddingsResponse, LogProbabilities, TextResponse +from .response import ( + EmbeddingsResponse, + LogProbabilities, + TextGenerationResponse, + TextGenerationStatus, + TextResponse, +) from .tasks import PipelineTask from .text_generation import ( PipelineTokenizer, @@ -43,4 +49,6 @@ "TokenGeneratorRequestTool", "TokenGeneratorResponseFormat", "EmbeddingsGenerator", + "TextGenerationResponse", + "TextGenerationStatus", ] diff --git a/src/max/pipelines/interfaces/response.py b/src/max/pipelines/interfaces/response.py index 6154570afc..45808c9d72 100644 --- a/src/max/pipelines/interfaces/response.py +++ b/src/max/pipelines/interfaces/response.py @@ -16,6 +16,7 @@ from __future__ import annotations from dataclasses import dataclass +from enum import Enum import numpy as np @@ -100,3 +101,27 @@ class EmbeddingsResponse: """Container for the response from embeddings pipeline.""" embeddings: np.ndarray + + +class TextGenerationStatus(str, Enum): + ACTIVE = "active" + END_OF_SEQUENCE = "end_of_sequence" + MAXIMUM_LENGTH = "maximum_length" + + @property + def is_done(self) -> bool: + return self is not TextGenerationStatus.ACTIVE + + +class TextGenerationResponse: + def __init__( + self, tokens: list[TextResponse], final_status: TextGenerationStatus + ) -> None: + self.tokens = tokens + self.final_status = final_status + + def is_done(self) -> bool: + return self.final_status.is_done + + def append_token(self, token: TextResponse) -> None: + self.tokens.append(token) From 5f1d2d298b13ddd347c7da39aa9d498597e409f9 Mon Sep 17 00:00:00 2001 From: Frank <139076616+frspokan@users.noreply.github.com> Date: Wed, 26 Feb 2025 14:52:29 -0800 Subject: [PATCH 470/509] [Serve] Prevent busted version of OTEL prometheus pkg from installing (#56291) They accidentally published a broken package 1.12.0rc1 which is getting installed in the serving container (but not Bazel). The latest good version is 0.51b0. MODULAR_ORIG_COMMIT_REV_ID: 412ae88ccea58f10c4fe0648484ccc4a8f84882b --- src/max/pipelines/requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/max/pipelines/requirements.txt b/src/max/pipelines/requirements.txt index 708e101b5b..dc050dddf6 100644 --- a/src/max/pipelines/requirements.txt +++ b/src/max/pipelines/requirements.txt @@ -22,7 +22,7 @@ httpx>=0.28.1,<0.29 huggingface-hub>=0.24.0 opentelemetry-api>=1.29.0 opentelemetry-exporter-otlp-proto-http>=1.27.0 -opentelemetry-exporter-prometheus>=0.48b0 +opentelemetry-exporter-prometheus<1.0.0 opentelemetry-sdk>=1.29.0 pillow>=10.3.0 prometheus-async>=22.2.0 From efe686e8a1d587352dda1ac93e5bcc08f825c2dd Mon Sep 17 00:00:00 2001 From: Brendan Duke Date: Wed, 26 Feb 2025 18:51:38 -0500 Subject: [PATCH 471/509] [SDK] Add a Signals.buffers method Add a `Signals.buffers` method as a convenient way of passing runtime signal buffers (as driver tensors). MODULAR_ORIG_COMMIT_REV_ID: 2c6f6fcf46a31b40a0de921781ae1db2a3ecf3c1 --- src/max/pipelines/nn/comm/allreduce.py | 26 ++++++++++++++++++++++---- 1 file changed, 22 insertions(+), 4 deletions(-) diff --git a/src/max/pipelines/nn/comm/allreduce.py b/src/max/pipelines/nn/comm/allreduce.py index 3ab64efaa0..40d7838049 100644 --- a/src/max/pipelines/nn/comm/allreduce.py +++ b/src/max/pipelines/nn/comm/allreduce.py @@ -14,8 +14,9 @@ from collections.abc import Iterable +from max.driver import Accelerator, Tensor from max.dtype import DType -from max.graph import BufferType, DeviceRef +from max.graph import BufferType, DeviceKind, DeviceRef class Signals: @@ -32,14 +33,31 @@ class Signals: # Mojo struct + the size of the intermediate buffer for communication. devices: list[DeviceRef] - """List of devices that these signals communicate between.""" + """List of graph devices that these signals communicate between.""" def __init__(self, devices: Iterable[DeviceRef]) -> None: """ Args: - devices: Devices between which these signals communicate. + num_gpus: Number of GPUs involved in the allreduce. """ - self.devices = list(devices) + # Convert the iterable to a list since we iterate over it twice. + devices = list(devices) + if not all(dev.device_type == DeviceKind.GPU for dev in devices): + msg = "peer-to-peer signals should be constructed for accelerators" + raise TypeError(msg) + + self.devices = devices + + def buffers(self) -> list[Tensor]: + """Allocates and returns buffers used for communication in allreduce.""" + return [ + Tensor.zeros( + shape=(Signals.NUM_BYTES,), + dtype=DType.uint8, + device=Accelerator(id=dev.id), + ) + for dev in self.devices + ] def input_types(self) -> list[BufferType]: """Gets graph input types corresponding to these signal buffers.""" From f004ee3153e0276c4c216be8f2426eedb25c6886 Mon Sep 17 00:00:00 2001 From: Zheng Hao Tan Date: Wed, 26 Feb 2025 16:42:03 -0800 Subject: [PATCH 472/509] [Pipelines][KV Cache] Wrap KVCacheInputs under ModelInputs This tucks all `ModelInputs` into one coherent object and can be passed into an `.execute()` function like `model_outputs = execute(model_inputs)` MODULAR_ORIG_COMMIT_REV_ID: bea806b8c14c77d5548d1e9df2002d03138829a3 --- .../pipelines/architectures/llama3/model.py | 31 +++++++++---- .../llama_vision/llama_vision.py | 36 +++++++++++---- .../pipelines/architectures/mistral/model.py | 15 +++--- .../pipelines/architectures/mpnet/model.py | 10 ++-- .../architectures/pixtral/pixtral.py | 12 +++-- .../pipelines/architectures/qwen2/model.py | 29 ++++++++---- .../pipelines/architectures/replit/model.py | 17 +++++-- src/max/pipelines/embeddings_pipeline.py | 8 ++-- src/max/pipelines/pipeline.py | 46 +++++++++++-------- 9 files changed, 136 insertions(+), 68 deletions(-) diff --git a/src/max/pipelines/architectures/llama3/model.py b/src/max/pipelines/architectures/llama3/model.py index eeff3afa16..deb5de0c32 100644 --- a/src/max/pipelines/architectures/llama3/model.py +++ b/src/max/pipelines/architectures/llama3/model.py @@ -77,6 +77,7 @@ def __init__( tokens: np.ndarray | Tensor, input_row_offsets_or_attn_mask: np.ndarray | Tensor, signal_buffers: list[Tensor], + kv_cache_inputs: KVCacheInputs | None = None, ) -> None: """ Args: @@ -89,6 +90,7 @@ def __init__( self.tokens = tokens self.input_row_offsets_or_attn_mask = input_row_offsets_or_attn_mask self.signal_buffers = signal_buffers + self.kv_cache_inputs = kv_cache_inputs @property def input_row_offsets(self) -> np.ndarray | Tensor: @@ -164,16 +166,14 @@ def get_num_layers(cls, pipeline_config: PipelineConfig) -> int: def execute( self, model_inputs: ModelInputs, - kv_cache_inputs: KVCacheInputs | None = None, ) -> ModelOutputs: model_inputs = cast(Llama3Inputs, model_inputs) - if kv_cache_inputs is None: - kv_cache_inputs = () # type: ignore + curr_kv_cache_inputs = model_inputs.kv_cache_inputs or () model_outputs = self.model.execute( model_inputs.tokens, model_inputs.input_row_offsets_or_attn_mask, *model_inputs.signal_buffers, - *kv_cache_inputs, # type: ignore + *curr_kv_cache_inputs, copy_inputs_to_device=( not self.pipeline_config.cache_strategy.uses_opaque() ), @@ -190,7 +190,9 @@ def execute( ) def _prepare_ragged_initial_token_inputs( - self, context_batch: Sequence[TextContext] + self, + context_batch: Sequence[TextContext], + kv_cache_inputs: KVCacheInputs | None = None, ) -> Llama3Inputs: # Get input_row_offsets: start and end position of each batch in the # combined total_seq_len dimension. @@ -210,10 +212,13 @@ def _prepare_ragged_initial_token_inputs( input_row_offsets ).to(self.pipeline_config.devices[0]), signal_buffers=self.signal_buffers, + kv_cache_inputs=kv_cache_inputs, ) def _prepare_padded_initial_token_inputs( - self, context_batch: Sequence[TextContext] + self, + context_batch: Sequence[TextContext], + kv_cache_inputs: KVCacheInputs | None = None, ) -> Llama3Inputs: # Get tokens and seq_ids tokens = [ctx.next_tokens for ctx in context_batch] @@ -231,16 +236,23 @@ def _prepare_padded_initial_token_inputs( tokens=next_tokens_batch, input_row_offsets_or_attn_mask=attn_mask, signal_buffers=self.signal_buffers, + kv_cache_inputs=kv_cache_inputs, ) def prepare_initial_token_inputs( - self, context_batch: Sequence[TextContext] + self, + context_batch: Sequence[TextContext], + kv_cache_inputs: KVCacheInputs | None = None, ) -> Llama3Inputs: """Prepare the inputs for the first pass in multistep execution.""" if self.pipeline_config.cache_strategy.uses_opaque(): - return self._prepare_ragged_initial_token_inputs(context_batch) + return self._prepare_ragged_initial_token_inputs( + context_batch, kv_cache_inputs + ) else: - return self._prepare_padded_initial_token_inputs(context_batch) + return self._prepare_padded_initial_token_inputs( + context_batch, kv_cache_inputs + ) def _prepare_ragged_next_token_inputs( self, @@ -256,6 +268,7 @@ def _prepare_ragged_next_token_inputs( tokens=next_tokens, input_row_offsets_or_attn_mask=next_row_offsets, signal_buffers=self.signal_buffers, + kv_cache_inputs=prev_model_inputs.kv_cache_inputs, ) def prepare_next_token_inputs( diff --git a/src/max/pipelines/architectures/llama_vision/llama_vision.py b/src/max/pipelines/architectures/llama_vision/llama_vision.py index 3dc23904eb..accd5f919a 100644 --- a/src/max/pipelines/architectures/llama_vision/llama_vision.py +++ b/src/max/pipelines/architectures/llama_vision/llama_vision.py @@ -433,6 +433,7 @@ def __init__( pixel_values: Tensor | None = None, aspect_ratio_ids: Tensor | None = None, aspect_ratio_mask: Tensor | None = None, + kv_cache_inputs: KVCacheInputs | None = None, ): self.input_id_values = input_id_values self.input_row_offsets = input_row_offsets @@ -441,6 +442,7 @@ def __init__( self._pixel_values = pixel_values self._aspect_ratio_ids = aspect_ratio_ids self._aspect_ratio_mask = aspect_ratio_mask + self.kv_cache_inputs = kv_cache_inputs def __post_init__(self) -> None: """Validate consistency between vision fields. @@ -486,7 +488,10 @@ def aspect_ratio_mask(self) -> Tensor: return self._aspect_ratio_mask def update_for_next_token( - self, next_tokens: Tensor, next_row_offsets: Tensor + self, + next_tokens: Tensor, + next_row_offsets: Tensor, + kv_cache_inputs: KVCacheInputs | None = None, ) -> LlamaVisionInputs: """Updates next_tokens and row_offsets after an initial step.""" return LlamaVisionInputs( @@ -498,6 +503,7 @@ def update_for_next_token( pixel_values=None, aspect_ratio_ids=None, aspect_ratio_mask=None, + kv_cache_inputs=kv_cache_inputs, ) @@ -879,6 +885,7 @@ def _prepare_vision_inputs( def prepare_initial_token_inputs( self, context_batch: Sequence[TextAndVisionContext], + kv_cache_inputs: KVCacheInputs | None = None, ) -> LlamaVisionInputs: """Creates tensors of token and image inputs, if applicable.""" if self.pipeline_config.cache_strategy != KVCacheStrategy.CONTINUOUS: @@ -963,6 +970,7 @@ def initial_prompt_missing_image(ctx: TextAndVisionContext) -> bool: pixel_values=pixel_values, aspect_ratio_ids=aspect_ratio_ids, aspect_ratio_mask=aspect_ratio_mask, + kv_cache_inputs=kv_cache_inputs, ) def prepare_next_token_inputs( @@ -980,15 +988,17 @@ def prepare_next_token_inputs( : prev_inputs.input_row_offsets.shape[0] ] - return prev_inputs.update_for_next_token(next_tokens, next_row_offsets) + return prev_inputs.update_for_next_token( + next_tokens, next_row_offsets, prev_inputs.kv_cache_inputs + ) def execute( self, model_inputs: ModelInputs, - # TODO(zheng): This should be folded as KVCacheInputs into ModelInputs. - kv_cache_inputs: Optional[KVCacheInputs] = None, ) -> ModelOutputs: - assert kv_cache_inputs is not None + assert model_inputs.kv_cache_inputs is not None, ( + "Llama Vision has KV cache inputs" + ) # batch_size * num_concurrent_media * max_num_tiles * num_patches # are set to 0 here to imitate a dummy tensor (used in text-only mode). cross_attention_states = Tensor.zeros( @@ -1009,11 +1019,19 @@ def execute( cross_attention_states = exec_result all_kv_cache_inputs: list[Tensor] = [] - if isinstance(kv_cache_inputs, MultimodalKVCacheInputs): - all_kv_cache_inputs.extend(kv_cache_inputs.text_kv_cache_inputs) - all_kv_cache_inputs.extend(kv_cache_inputs.vision_kv_cache_inputs) + if isinstance(model_inputs.kv_cache_inputs, MultimodalKVCacheInputs): + all_kv_cache_inputs.extend( + model_inputs.kv_cache_inputs.text_kv_cache_inputs + ) + all_kv_cache_inputs.extend( + model_inputs.kv_cache_inputs.vision_kv_cache_inputs + ) + elif isinstance(model_inputs.kv_cache_inputs, KVCacheInputs): + all_kv_cache_inputs = list(model_inputs.kv_cache_inputs) else: - all_kv_cache_inputs = list(kv_cache_inputs) + raise ValueError( + f"Unsupported kv_cache_inputs type: {type(model_inputs.kv_cache_inputs)}" + ) model_outputs = self.language_model.execute( cross_attention_states, diff --git a/src/max/pipelines/architectures/mistral/model.py b/src/max/pipelines/architectures/mistral/model.py index 69ba410ffa..357cd5b132 100644 --- a/src/max/pipelines/architectures/mistral/model.py +++ b/src/max/pipelines/architectures/mistral/model.py @@ -57,9 +57,11 @@ def __init__( self, input_tokens: Tensor, input_row_offsets: Tensor, + kv_cache_inputs: KVCacheInputs | None = None, ) -> None: self.input_tokens = input_tokens self.input_row_offsets = input_row_offsets + self.kv_cache_inputs = kv_cache_inputs class MistralModel(PipelineModel[TextContext]): @@ -69,20 +71,16 @@ def __init__( super().__init__(pipeline_config, session) self.model = self.load_model(session) - def execute( - self, - model_inputs: ModelInputs, - kv_cache_inputs: KVCacheInputs | None = None, - ) -> ModelOutputs: + def execute(self, model_inputs: ModelInputs) -> ModelOutputs: """Runs the graph.""" model_inputs = cast(MistralInputs, model_inputs) - assert kv_cache_inputs is not None, ( + assert model_inputs.kv_cache_inputs is not None, ( "Mistral has KV cache inputs, but none were provided" ) model_outputs = self.model.execute( model_inputs.input_tokens, model_inputs.input_row_offsets, - *kv_cache_inputs, + *model_inputs.kv_cache_inputs, copy_inputs_to_device=False, ) assert isinstance(model_outputs[0], Tensor) @@ -91,6 +89,7 @@ def execute( def prepare_initial_token_inputs( self, context_batch: Sequence[TextContext], + kv_cache_inputs: KVCacheInputs | None = None, ) -> MistralInputs: # Get tokens and seq ids tokens = [ctx.next_tokens for ctx in context_batch] @@ -113,6 +112,7 @@ def prepare_initial_token_inputs( return MistralInputs( input_tokens=next_tokens_batch, input_row_offsets=input_row_offsets, + kv_cache_inputs=kv_cache_inputs, ) def prepare_next_token_inputs( @@ -126,6 +126,7 @@ def prepare_next_token_inputs( return MistralInputs( input_tokens=next_tokens, input_row_offsets=next_row_offsets, + kv_cache_inputs=prev_model_inputs.kv_cache_inputs, ) @classmethod diff --git a/src/max/pipelines/architectures/mpnet/model.py b/src/max/pipelines/architectures/mpnet/model.py index 72180fe367..7a1df30d8f 100644 --- a/src/max/pipelines/architectures/mpnet/model.py +++ b/src/max/pipelines/architectures/mpnet/model.py @@ -61,6 +61,8 @@ def __init__( ) -> None: self.next_tokens_batch = next_tokens_batch self.attention_mask = attention_mask + # MPNet does not have KV cache inputs. + self.kv_cache_inputs = None class MPNetPipelineModel(PipelineModel[TextContext]): @@ -103,13 +105,8 @@ def calculate_max_seq_len(cls, pipeline_config: PipelineConfig) -> int: ) raise ValueError(msg) from e - def execute( - self, - model_inputs: ModelInputs, - kv_cache_inputs: KVCacheInputs | None = None, - ) -> ModelOutputs: + def execute(self, model_inputs: ModelInputs) -> ModelOutputs: model_inputs = cast(MPNetInputs, model_inputs) - assert kv_cache_inputs is None, "MPNet does not have KV cache inputs" model_outputs = self.model.execute( model_inputs.next_tokens_batch, model_inputs.attention_mask, @@ -121,6 +118,7 @@ def execute( def prepare_initial_token_inputs( self, context_batch: Sequence[TextContext], + kv_cache_inputs: KVCacheInputs | None = None, ) -> MPNetInputs: # Get tokens and seq_ids. tokens = [ctx.next_tokens for ctx in context_batch] diff --git a/src/max/pipelines/architectures/pixtral/pixtral.py b/src/max/pipelines/architectures/pixtral/pixtral.py index 31f4e13682..95102c3d89 100644 --- a/src/max/pipelines/architectures/pixtral/pixtral.py +++ b/src/max/pipelines/architectures/pixtral/pixtral.py @@ -61,11 +61,13 @@ def __init__( input_row_offsets: Tensor, pixel_values: Tensor | None = None, attention_mask: Tensor | None = None, + kv_cache_inputs: KVCacheInputs | None = None, ): self.input_ids = input_ids self.input_row_offsets = input_row_offsets self._pixel_values = pixel_values self._attention_mask = attention_mask + self.kv_cache_inputs = kv_cache_inputs @property def has_vision_inputs(self) -> bool: @@ -99,8 +101,6 @@ def __init__( def execute( self, model_inputs: ModelInputs, - # TODO(zheng): This should be folded as KVCacheInputs into ModelInputs. - kv_cache_inputs: KVCacheInputs | None = None, ) -> ModelOutputs: model_inputs = cast(PixtralInputs, model_inputs) if model_inputs.has_vision_inputs: @@ -119,14 +119,14 @@ def execute( ], dtype=self.pipeline_config.dtype, ).to(self.pipeline_config.devices[0]) - assert kv_cache_inputs is not None, ( + assert model_inputs.kv_cache_inputs is not None, ( "Pixtral has KV cache inputs, but none were provided" ) model_outputs = self.language_model.execute( model_inputs.input_ids, image_embeds, model_inputs.input_row_offsets, - *kv_cache_inputs, + *model_inputs.kv_cache_inputs, copy_inputs_to_device=False, ) assert not self.pipeline_config.enable_echo @@ -136,6 +136,7 @@ def execute( def prepare_initial_token_inputs( self, context_batch: Sequence[TextAndVisionContext], + kv_cache_inputs: KVCacheInputs | None = None, ) -> PixtralInputs: # Input row offset type: ["input_row_offsets_len"], UInt32 input_row_offsets = Tensor.from_numpy( @@ -182,11 +183,13 @@ def prepare_initial_token_inputs( input_row_offsets=input_row_offsets, pixel_values=pixel_values, attention_mask=attention_mask, + kv_cache_inputs=kv_cache_inputs, ) return PixtralInputs( input_ids=input_ids, input_row_offsets=input_row_offsets, + kv_cache_inputs=kv_cache_inputs, ) def prepare_next_token_inputs( @@ -204,6 +207,7 @@ def prepare_next_token_inputs( return PixtralInputs( input_ids=next_tokens, input_row_offsets=next_row_offsets, + kv_cache_inputs=prev_model_inputs.kv_cache_inputs, ) @classmethod diff --git a/src/max/pipelines/architectures/qwen2/model.py b/src/max/pipelines/architectures/qwen2/model.py index 526234d031..3d26a468d1 100644 --- a/src/max/pipelines/architectures/qwen2/model.py +++ b/src/max/pipelines/architectures/qwen2/model.py @@ -62,9 +62,11 @@ def __init__( self, tokens: Tensor, input_row_offsets_or_attn_mask: Tensor, + kv_cache_inputs: KVCacheInputs | None = None, ) -> None: self.tokens = tokens self.input_row_offsets_or_attn_mask = input_row_offsets_or_attn_mask + self.kv_cache_inputs = kv_cache_inputs @property def input_row_offsets(self) -> Tensor: @@ -83,15 +85,13 @@ def __init__( def execute( self, model_inputs: ModelInputs, - kv_cache_inputs: KVCacheInputs | None = None, ) -> ModelOutputs: - assert kv_cache_inputs is not None - model_inputs = cast(Qwen2Inputs, model_inputs) + assert model_inputs.kv_cache_inputs is not None model_outputs = self.model.execute( model_inputs.tokens, model_inputs.input_row_offsets_or_attn_mask, - *kv_cache_inputs, + *model_inputs.kv_cache_inputs, copy_inputs_to_device=( not self.pipeline_config.cache_strategy.uses_opaque() ), @@ -113,7 +113,9 @@ def execute( return ModelOutputs(next_token_logits=model_outputs[0]) def _prepare_ragged_initial_token_inputs( - self, context_batch: Sequence[TextContext] + self, + context_batch: Sequence[TextContext], + kv_cache_inputs: KVCacheInputs | None = None, ) -> Qwen2Inputs: # Get input_row_offsets: start and end position of each batch in the # combined total_seq_len dimension. @@ -132,10 +134,13 @@ def _prepare_ragged_initial_token_inputs( input_row_offsets_or_attn_mask=Tensor.from_numpy( input_row_offsets ).to(self.pipeline_config.devices[0]), + kv_cache_inputs=kv_cache_inputs, ) def _prepare_padded_initial_token_inputs( - self, context_batch: Sequence[TextContext] + self, + context_batch: Sequence[TextContext], + kv_cache_inputs: KVCacheInputs | None = None, ) -> Qwen2Inputs: # Get tokens and seq_ids tokens = [ctx.next_tokens for ctx in context_batch] @@ -156,18 +161,24 @@ def _prepare_padded_initial_token_inputs( input_row_offsets_or_attn_mask=Tensor.from_numpy(attn_mask).to( self.pipeline_config.devices[0] ), + kv_cache_inputs=kv_cache_inputs, ) # Ignored type due to challenge with Interface implementation and mypy rules. def prepare_initial_token_inputs( self, context_batch: Sequence[TextContext], + kv_cache_inputs: KVCacheInputs | None = None, ) -> Qwen2Inputs: """Prepare the inputs for the first pass in multistep execution.""" if self.pipeline_config.cache_strategy.uses_opaque(): - return self._prepare_ragged_initial_token_inputs(context_batch) + return self._prepare_ragged_initial_token_inputs( + context_batch, kv_cache_inputs + ) else: - return self._prepare_padded_initial_token_inputs(context_batch) + return self._prepare_padded_initial_token_inputs( + context_batch, kv_cache_inputs + ) def _prepare_ragged_next_token_inputs( self, @@ -182,6 +193,7 @@ def _prepare_ragged_next_token_inputs( return Qwen2Inputs( tokens=next_tokens, input_row_offsets_or_attn_mask=next_row_offsets, + kv_cache_inputs=prev_model_inputs.kv_cache_inputs, ) def _prepare_padded_next_token_inputs( @@ -206,6 +218,7 @@ def _prepare_padded_next_token_inputs( input_row_offsets_or_attn_mask=Tensor.from_numpy(attn_mask).to( self.pipeline_config.devices[0] ), + kv_cache_inputs=prev_model_inputs.kv_cache_inputs, ) def prepare_next_token_inputs( diff --git a/src/max/pipelines/architectures/replit/model.py b/src/max/pipelines/architectures/replit/model.py index 211d63a840..3c2a42a208 100644 --- a/src/max/pipelines/architectures/replit/model.py +++ b/src/max/pipelines/architectures/replit/model.py @@ -61,9 +61,11 @@ def __init__( self, tokens: Tensor, input_row_offsets: Tensor, + kv_cache_inputs: KVCacheInputs | None = None, ) -> None: self.tokens = tokens self.input_row_offsets = input_row_offsets + self.kv_cache_inputs = kv_cache_inputs class ReplitModel(PipelineModel[TextContext]): @@ -80,14 +82,16 @@ def __init__( def execute( self, model_inputs: ModelInputs, - kv_cache_inputs: KVCacheInputs | None = None, ) -> ModelOutputs: model_inputs = cast(ReplitInputs, model_inputs) - assert kv_cache_inputs is not None, "Replit has KV cache inputs" + # keep mypy happy. + assert model_inputs.kv_cache_inputs is not None, ( + "Replit has KV cache inputs" + ) model_outputs = self.model.execute( model_inputs.tokens, model_inputs.input_row_offsets, - *kv_cache_inputs, + *model_inputs.kv_cache_inputs, copy_inputs_to_device=False, ) if self.pipeline_config.enable_echo: @@ -105,6 +109,7 @@ def execute( def prepare_initial_token_inputs( self, context_batch: Sequence[TextContext], + kv_cache_inputs: KVCacheInputs | None = None, ) -> ReplitInputs: # Get input_row_offsets: start and end position of each batch in the # combined total_seq_len dimension. @@ -116,6 +121,10 @@ def prepare_initial_token_inputs( # Create a ragged token vector of length: sum(len(t) for t in tokens). tokens = np.concatenate([ctx.next_tokens for ctx in context_batch]) + if kv_cache_inputs is None: + raise ValueError( + "Replit has KV cache inputs, but got None instead." + ) return ReplitInputs( tokens=Tensor.from_numpy(tokens).to( self.pipeline_config.devices[0] @@ -123,6 +132,7 @@ def prepare_initial_token_inputs( input_row_offsets=Tensor.from_numpy(input_row_offsets).to( self.pipeline_config.devices[0] ), + kv_cache_inputs=kv_cache_inputs, ) def prepare_next_token_inputs( @@ -136,6 +146,7 @@ def prepare_next_token_inputs( return ReplitInputs( tokens=next_tokens, input_row_offsets=next_row_offsets, + kv_cache_inputs=prev_model_inputs.kv_cache_inputs, ) @classmethod diff --git a/src/max/pipelines/embeddings_pipeline.py b/src/max/pipelines/embeddings_pipeline.py index fa609ef7f1..0c2bb35e8f 100644 --- a/src/max/pipelines/embeddings_pipeline.py +++ b/src/max/pipelines/embeddings_pipeline.py @@ -59,13 +59,13 @@ def encode(self, batch: dict[str, T]) -> dict[str, EmbeddingsResponse]: tracer.next("prepare_initial_token_inputs") # Prepare inputs for the first token in multistep execution. model_inputs = self._pipeline_model.prepare_initial_token_inputs( - context_batch + context_batch=context_batch, + kv_cache_inputs=None, ) tracer.next("execute") - model_outputs = self._pipeline_model.execute( - model_inputs=model_inputs, kv_cache_inputs=None - ) + model_outputs = self._pipeline_model.execute(model_inputs) + assert model_outputs.logits # Do the copy to host for each token generated. tracer.next("logits.to(CPU())") diff --git a/src/max/pipelines/pipeline.py b/src/max/pipelines/pipeline.py index 054d6f66c8..b42e9b7f48 100644 --- a/src/max/pipelines/pipeline.py +++ b/src/max/pipelines/pipeline.py @@ -20,7 +20,6 @@ from dataclasses import dataclass from typing import ( Generic, - List, Optional, Protocol, Sequence, @@ -119,6 +118,8 @@ class ModelInputs: True """ + kv_cache_inputs: KVCacheInputs | None = None + @dataclass(frozen=True) class ModelOutputs: @@ -240,16 +241,12 @@ def estimate_weights_size(cls, pipeline_config: PipelineConfig) -> int: def execute( self, model_inputs: ModelInputs, - # TODO(zheng): This should be tucked inside ModelInputs in the future. - kv_cache_inputs: KVCacheInputs | None = None, ) -> ModelOutputs: """Executes the graph with the given inputs. Args: model_inputs: The model inputs to execute, containing tensors and any other required data for model execution. - kv_cache_inputs: The kv cache inputs to execute, containing tensors and any other - required data for model execution. Returns: ModelOutputs containing the pipeline's output tensors. @@ -260,7 +257,9 @@ def execute( @abstractmethod def prepare_initial_token_inputs( - self, context_batch: Sequence[T] + self, + context_batch: Sequence[T], + kv_cache_inputs: KVCacheInputs | None = None, ) -> ModelInputs: """Prepares the initial inputs to be passed to `.execute()`. @@ -268,7 +267,8 @@ def prepare_initial_token_inputs( For example, the model inputs could include: - Encoded tensors - A unique IDs for each tensor if this model uses a KV Cache manager. - + - kv_cache_inputs: The kv cache inputs required for the model. This + should be None if the model does not use KV Cache. This function would batch the encoded tensors, claim a slot in the kv cache if the ID hasn't been seen before, and return the inputs and caches as a list of tensors.""" @@ -445,7 +445,7 @@ def prepare_batch( self, batch: list[T], num_steps: int, - ) -> tuple[ModelInputs, List[KVCacheInputs], int, Optional[torch.Tensor]]: + ) -> tuple[ModelInputs, int, Optional[torch.Tensor]]: tracer: Tracer = Tracer("prepare_batch") if self._pipeline_config.enable_structured_output: @@ -532,8 +532,12 @@ def prepare_batch( ) return ( - self._pipeline_model.prepare_initial_token_inputs(batch), - kv_cache_inputs, + self._pipeline_model.prepare_initial_token_inputs( + context_batch=batch, + kv_cache_inputs=KVCacheInputsSequence( + kv_cache_inputs=kv_cache_inputs + ), + ), num_steps, bitmask, ) @@ -578,8 +582,8 @@ def next_token( ] # Prepare the batch. - model_inputs, batched_kv_cache_inputs, num_steps, bitmask = ( - self.prepare_batch(context_batch, num_steps) + model_inputs, num_steps, bitmask = self.prepare_batch( + context_batch, num_steps ) # Multistep execution loop. @@ -599,9 +603,6 @@ def next_token( # Execute the model and get next tokens. model_outputs = self._pipeline_model.execute( model_inputs=curr_step_inputs, - kv_cache_inputs=KVCacheInputsSequence( - kv_cache_inputs=batched_kv_cache_inputs, - ), ) assert model_outputs.next_token_logits is not None next_token_logits = model_outputs.next_token_logits @@ -656,13 +657,22 @@ def next_token( break # Prepare inputs for the next token in multistep execution tracer.next("increment_cache_lengths") # pops sample_next_token - # Unpack model inputs for execute() call by getting all fields - batched_kv_cache_inputs = ( + + assert isinstance( + curr_step_inputs.kv_cache_inputs, KVCacheInputsSequence + ), ( + "prepare_batch instantiates and passes this as a KVCacheInputsSequence" + ) + assert isinstance( + curr_step_inputs.kv_cache_inputs.kv_cache_inputs, list + ), "increment_cache_lengths instantiates and passes this as a list" + curr_step_inputs.kv_cache_inputs.kv_cache_inputs = ( self._pipeline_model.kv_manager.increment_cache_lengths( - batched_kv_cache_inputs, # type: ignore + curr_step_inputs.kv_cache_inputs.kv_cache_inputs, curr_step_inputs, ) ) + tracer.next("prepare_next_token_inputs") # pops inc_cache_lengths curr_step_inputs = self._pipeline_model.prepare_next_token_inputs( new_tokens, curr_step_inputs From 4c20b5768e8672e512b0115d92580e45423627ed Mon Sep 17 00:00:00 2001 From: Jack Clayton Date: Wed, 26 Feb 2025 20:53:38 -0500 Subject: [PATCH 473/509] [max-examples] Add dedicated benchmark file for custom ops This moves the benchmark out of the top_k.mojo kernel and into a dedicated file, which imports the custom op, sets up ManagedTensorSlices and passes them to the `execute` function. This also enabled comparing GPU to CPU results. Added a couple of ctors to `DeviceContextPtr` to enable passing `Device` and `DeviceContext` from CPU/GPU. Working on adding matmul to the same benchmark file, and allowing the user to select specific benchmarks by passing an argument e.g. `magic run benchmark top_k`. Currently looks like: ``` ------------------------------------------------------------- | name | met (ms) | iters | GFLOPS/s | GElems/s | ------------------------------------------------------------- | top_k_custom/cpu | 2.291646 | 524 | 2.094 | 0.418 | | top_k_custom/gpu | 0.138753 | 8648 | 34.593 | 6.918 | ------------------------------------------------------------- ``` MODULAR_ORIG_COMMIT_REV_ID: bb0e346e4ff84e04830d7385ae48b75bc20a41f0 --- examples/custom_ops/README.md | 6 ++ examples/custom_ops/benchmarks.mojo | 135 ++++++++++++++++++++++++ examples/custom_ops/kernels/top_k.mojo | 137 ++++++------------------- examples/custom_ops/mojoproject.toml | 3 +- examples/custom_ops/top_k.py | 16 --- 5 files changed, 176 insertions(+), 121 deletions(-) create mode 100644 examples/custom_ops/benchmarks.mojo diff --git a/examples/custom_ops/README.md b/examples/custom_ops/README.md index 31825508ca..b3ff1d9910 100644 --- a/examples/custom_ops/README.md +++ b/examples/custom_ops/README.md @@ -53,3 +53,9 @@ The execution has two phases: first a `kernels.mojopkg` is compiled from the custom Mojo kernel, and then the graph is constructed and run in Python. The inference session is pointed to the `kernels.mojopkg` in order to load the custom operations. + +You can also run benchmarks to compare the performance of your GPU to your CPU: + +```sh +magic run benchmark +``` diff --git a/examples/custom_ops/benchmarks.mojo b/examples/custom_ops/benchmarks.mojo new file mode 100644 index 0000000000..c768958981 --- /dev/null +++ b/examples/custom_ops/benchmarks.mojo @@ -0,0 +1,135 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from kernels import TopK +from gpu.host import DeviceContext +from utils import IndexList +from max.driver.device import cpu_device +from max.tensor import ( + ManagedTensorSlice, + InputTensor, + OutputTensor, + StaticTensorSpec, +) +from random import rand +from memory import UnsafePointer +from runtime.asyncrt import DeviceContextPtr +from benchmark import ThroughputMeasure, BenchId, BenchMetric, Bench, Bencher +from bit import log2_floor +from sys import sizeof, has_nvidia_gpu_accelerator, has_amd_gpu_accelerator +from memory import AddressSpace + + +def top_k(): + alias batch_size = 30_000 + alias K = 32 + alias els = batch_size * K + alias rank = 2 + alias shape = IndexList[rank](batch_size, K) + alias val_dtype = DType.float32 + alias idx_dtype = DType.int32 + + # Slightly better performance compared to `create_unknown`. Using global + # address space doesn't improve perf for GPU. + alias val_spec = StaticTensorSpec[val_dtype, rank]( + shape=(batch_size, K), + strides=(K, 1), + alignment=sizeof[val_dtype](), + address_space=AddressSpace.GENERIC, + exclusive=True, + in_lambda=None, + out_lambda=None, + ) + alias idx_spec = StaticTensorSpec[idx_dtype, rank]( + shape=(batch_size, K), + strides=(K, 1), + alignment=sizeof[idx_dtype](), + address_space=AddressSpace.GENERIC, + exclusive=True, + in_lambda=None, + out_lambda=None, + ) + + var in_vals = UnsafePointer[Scalar[val_dtype]].alloc(els) + var out_vals = UnsafePointer[Scalar[val_dtype]].alloc(els) + var out_idxs = UnsafePointer[Scalar[idx_dtype]].alloc(els) + + rand(in_vals, els) + + @parameter + @always_inline + fn bench_cpu(mut b: Bencher) raises: + var cpu_ctx_ptr = cpu_device().unsafe_ptr() + + @parameter + @always_inline + fn run_bench() raises: + TopK.execute[K=K, target="cpu"]( + out_vals=OutputTensor[static_spec=val_spec](out_vals, shape), + out_idxs=OutputTensor[static_spec=idx_spec](out_idxs, shape), + in_vals=InputTensor[static_spec=val_spec](in_vals, shape), + ctx=cpu_ctx_ptr, + ) + + b.iter[run_bench]() + + var flops = ThroughputMeasure(BenchMetric.flops, els * log2_floor(K)) + var elements = ThroughputMeasure(BenchMetric.elements, els) + + var b = Bench() + b.bench_function[bench_cpu](BenchId("top_k_custom", "cpu"), flops, elements) + + @parameter + if has_nvidia_gpu_accelerator() or has_amd_gpu_accelerator(): + var gpu_ctx = DeviceContext() + var dev_in_vals = gpu_ctx.enqueue_create_buffer[val_dtype](els) + var dev_out_vals = gpu_ctx.enqueue_create_buffer[val_dtype](els) + var dev_out_idxs = gpu_ctx.enqueue_create_buffer[idx_dtype](els) + gpu_ctx.copy(dev_in_vals, in_vals) + + @parameter + @always_inline + fn bench_gpu(mut b: Bencher) raises: + @parameter + @always_inline + fn kernel_launch() raises: + TopK.execute[K=K, target="gpu"]( + out_vals=OutputTensor[static_spec=val_spec]( + dev_out_vals.unsafe_ptr(), shape + ), + out_idxs=OutputTensor[static_spec=idx_spec]( + dev_out_idxs.unsafe_ptr(), shape + ), + in_vals=InputTensor[static_spec=val_spec]( + dev_in_vals.unsafe_ptr(), shape + ), + ctx=gpu_ctx, + ) + + b.iter[kernel_launch]() + + b.bench_function[bench_gpu]( + BenchId("top_k_custom", "gpu"), flops, elements + ) + _ = gpu_ctx + + b.config.verbose_metric_names = False + print(b) + + in_vals.free() + out_vals.free() + out_idxs.free() + + +def main(): + top_k() diff --git a/examples/custom_ops/kernels/top_k.mojo b/examples/custom_ops/kernels/top_k.mojo index 7a03e23d18..0035212533 100644 --- a/examples/custom_ops/kernels/top_k.mojo +++ b/examples/custom_ops/kernels/top_k.mojo @@ -13,17 +13,13 @@ from math import iota from sys import alignof, sizeof, num_physical_cores - from algorithm import parallelize_over_rows from bit import log2_floor from compiler import register -from gpu import WARP_SIZE, barrier -import gpu.warp as warp +from gpu import WARP_SIZE, barrier, warp from gpu.memory import AddressSpace, external_memory from max.tensor import ManagedTensorSlice from memory import Span -from benchmark import Bench, Bencher, BenchId, BenchMetric, ThroughputMeasure - from utils.index import IndexList from utils.numerics import min_or_neg_inf @@ -63,11 +59,14 @@ struct TopK: ctx: DeviceContextPtr, ) raises: constrained[rank == 2, "rank must be 2"]() + constrained[ + not (target == "gpu" and K > WARP_SIZE), + "K can't be larger than warp size", + ]() + var shape = in_vals.shape() var batch_size = shape[0] - var dev_ctx = ctx.get_device_context() - print("Executing on device:", dev_ctx.name()) @parameter fn top_k_gpu[ @@ -124,106 +123,36 @@ struct TopK: top_k_sram[index].val = min_or_neg_inf[type]() @parameter - fn top_k_cpu(start_idx: Int, end_idx: Int): - for row_idx in range(start_idx, end_idx): - var offset = (row_idx * K) - iota(out_idxs.unsafe_ptr() + offset, K) - - @parameter - fn val_greater_than(lhs: Int32, rhs: Int32) -> Bool: - return ( - in_vals[row_idx, Int(lhs)] > in_vals[row_idx, Int(rhs)] - ) - - sort[val_greater_than](Span(out_idxs.unsafe_ptr() + offset, K)) - - for i in range(K): - var sorted_idx = Int(out_idxs[row_idx, i]) - out_vals[row_idx, i] = in_vals[row_idx, sorted_idx] - - if batch_size <= 10: - - @parameter - if target == "gpu": - # This is a simplified version that only works for K being under - # the warp size. The MAX "mo.top_k" op supports any K and does - # another reduction after each warp has reduced its values. - if K >= WARP_SIZE: - raise Error( - "[top_k_custom] K=", - K, - " but must be less than the WARP_SIZE=", - WARP_SIZE, - ) - - if K < WARP_SIZE: - dev_ctx.enqueue_function[top_k_gpu[K]]( - out_vals, - out_idxs, - in_vals, - grid_dim=batch_size, # One block per batch - block_dim=K, # One thread per K - shared_mem_bytes=K * sizeof[TopKElement[type]](), - ) - else: - # Set grain size to 1 to put each batch in a separate task - parallelize_over_rows[top_k_cpu](shape, 1, grain_size=1) - - # Everything below is for benchmarking when running a stress test + if target == "gpu": + dev_ctx.enqueue_function[top_k_gpu[K]]( + out_vals, + out_idxs, + in_vals, + grid_dim=batch_size, # One block per batch + block_dim=K, # One thread per K + shared_mem_bytes=K * sizeof[TopKElement[type]](), + ) else: - var bench = Bench() @parameter - @always_inline - fn bench_gpu(mut b: Bencher, shape: IndexList[rank]) raises: - @parameter - @always_inline - fn kernel_launch(dev_ctx: DeviceContext) raises: - dev_ctx.enqueue_function[top_k_gpu[K]]( - out_vals, - out_idxs, - in_vals, - grid_dim=batch_size, # One block per batch - block_dim=K, # One thread per K - shared_mem_bytes=K * sizeof[TopKElement[type]](), + fn top_k_cpu(start_idx: Int, end_idx: Int): + for row_idx in range(start_idx, end_idx): + var offset = (row_idx * K) + iota(out_idxs.unsafe_ptr() + offset, K) + + @parameter + fn val_greater_than(lhs: Int32, rhs: Int32) -> Bool: + return ( + in_vals[row_idx, Int(lhs)] + > in_vals[row_idx, Int(rhs)] + ) + + sort[val_greater_than]( + Span(out_idxs.unsafe_ptr() + offset, K) ) - b.iter_custom[kernel_launch](ctx.get_device_context()) + for i in range(K): + var sorted_idx = Int(out_idxs[row_idx, i]) + out_vals[row_idx, i] = in_vals[row_idx, sorted_idx] - @parameter - @always_inline - fn bench_cpu(mut b: Bencher) raises: - var grain = 1 - # Split job up evenly across physical cores on large batch - if batch_size > 1000: - grain = batch_size // num_physical_cores() - - @parameter - fn run_bench(): - parallelize_over_rows[top_k_cpu](shape, 1, grain_size=grain) - - b.iter[run_bench]() - - var els = ThroughputMeasure( - BenchMetric.elements, shape.flattened_length() - ) - var flops = ThroughputMeasure( - BenchMetric.flops, shape.flattened_length() * log2_floor(K) - ) - - # Only benchmark GPU if it's available - @parameter - if target == "gpu": - bench.bench_with_input[IndexList[rank], bench_gpu]( - BenchId("top_k_custom", "gpu"), shape, els, flops - ) - - # TODO: Always benchmark CPU to compare with GPU - else: - bench.bench_function[bench_cpu]( - BenchId("top_k_custom", "cpu"), els, flops - ) - - bench.config.verbose_metric_names = False - bench.config.verbose_timing = True - print(bench) + parallelize_over_rows[top_k_cpu](shape, axis=1, grain_size=1) diff --git a/examples/custom_ops/mojoproject.toml b/examples/custom_ops/mojoproject.toml index d110891084..f2a6f222ee 100644 --- a/examples/custom_ops/mojoproject.toml +++ b/examples/custom_ops/mojoproject.toml @@ -15,7 +15,8 @@ top_k = { cmd = "python top_k.py", depends-on = ["package"] } fused_attention = { cmd = "python fused_attention.py", depends-on = ["package"] } matrix_multiplication = { cmd = "python matrix_multiplication.py", depends-on = ["package"] } histogram = { cmd = "python histogram.py", depends-on = ["package"] } -test = { depends-on = ["addition", "mandelbrot", "vector_addition", "top_k", "fused_attention", "matrix_multiplication"] } +benchmark = { cmd = "mojo benchmarks.mojo", depends-on = ["package"] } +test = { depends-on = ["addition", "mandelbrot", "vector_addition", "top_k", "fused_attention", "matrix_multiplication", "benchmark"] } [dependencies] python = ">=3.9,<3.13" diff --git a/examples/custom_ops/top_k.py b/examples/custom_ops/top_k.py index 887fd444c0..3a77d793f7 100644 --- a/examples/custom_ops/top_k.py +++ b/examples/custom_ops/top_k.py @@ -105,15 +105,6 @@ def main(): parser = argparse.ArgumentParser( description="Top-K sampling with custom ops" ) - parser.add_argument( - "--stress-test", - type=int, - default=0, - help=( - "Number of times to repeat input for stress testing. " - "On NVIDIA A100, 250_000_000 takes less than 0.5ms and uses over 75%% of its memory." - ), - ) parser.add_argument( "--cpu", action="store_true", @@ -135,10 +126,6 @@ def main(): # Get probabilities of next word for each word in the `word_predictions` list probabilities = frequencies.next_word_probabilities(word_predictions) - # If stress testing, repeat the input the specified number of times - if args.stress_test > 0: - probabilities = np.repeat(probabilities, args.stress_test, axis=0) - batch_size = len(probabilities) K = frequencies.max_next_words @@ -183,9 +170,6 @@ def main(): values, indices = model.execute(input_tensor) - if args.stress_test > 0: - return - # Copy values and indices back to the CPU to be read. assert isinstance(values, Tensor) values = values.to(CPU()) From 390a755e7f5a440d391746e8f63f6f2b26e5e837 Mon Sep 17 00:00:00 2001 From: akirchhoff-modular Date: Wed, 26 Feb 2025 18:06:58 -0800 Subject: [PATCH 474/509] [KVCache] Clean up iterator logic of KVCacheInputs & KVCacheInputSymbols Both of these were using a deque to flatten out contained tensors and tensor types, respectively. This avoids recursion, but the structure of data they're iterating over is not very deep, so there is not much risk of stack overflow. Use "yield from" to make this more concise, and use a type guard to clean up some of the `isinstance` uses. Type annotations added where necessary or helpful. I also removed `__setitem__` since it was both broken and didn't seem to be used anywhere. MODULAR_ORIG_COMMIT_REV_ID: a0261de3f8e9aaf384c13e65119cfe5cbe0e01dc --- src/max/pipelines/kv_cache/manager.py | 89 ++++++++++++--------------- 1 file changed, 41 insertions(+), 48 deletions(-) diff --git a/src/max/pipelines/kv_cache/manager.py b/src/max/pipelines/kv_cache/manager.py index 7f124db394..1e1ad0040b 100644 --- a/src/max/pipelines/kv_cache/manager.py +++ b/src/max/pipelines/kv_cache/manager.py @@ -16,15 +16,25 @@ from __future__ import annotations from abc import ABC, abstractmethod -from collections import deque from dataclasses import dataclass -from typing import Any, List, Sequence, cast, final +from typing import ( + Any, + Iterator, + List, + Sequence, + Type, + TypeVar, + cast, + final, + overload, +) import numpy as np from max.driver import Device, Tensor from max.dtype import DType from max.engine import InferenceSession from max.graph import DeviceRef, Graph, TensorType, TensorValue +from typing_extensions import TypeGuard from .cache_params import KVCacheParams @@ -40,6 +50,13 @@ class _FetchMetadata: num_steps: int +_T = TypeVar("_T") + + +def _is_sequence_of(x: Any, ty: Type[_T]) -> TypeGuard[Sequence[_T]]: + return isinstance(x, Sequence) and all(isinstance(item, ty) for item in x) + + @dataclass class KVCacheInputs: """ @@ -56,48 +73,35 @@ class KVCacheInputs: ... max_lengths: Tensor """ - def __iter__(self): + def __iter__(self) -> Iterator[Tensor]: """Iterates through each Type in order.""" - fields = deque( - getattr(self, field) for field in self.__dataclass_fields__ - ) - while fields: - value = fields.popleft() - if isinstance(value, Sequence) and all( - isinstance(x, KVCacheInputs) for x in value - ): - # Add sequence elements in original order - fields.extendleft([x for x in reversed(value)]) - continue - elif isinstance(value, KVCacheInputs): - fields.extendleft( - reversed( - [ - getattr(value, field) - for field in value.__dataclass_fields__ - ] - ) - ) - continue + for field in self.__dataclass_fields__: + value = getattr(self, field) + if isinstance(value, KVCacheInputs): + yield from value + elif _is_sequence_of(value, KVCacheInputs): + for item in value: + yield from item else: yield cast(Tensor, value) - def __getitem__(self, index): - return list(self)[index] + @overload + def __getitem__(self, index: int) -> Tensor: ... + + @overload + def __getitem__(self, index: slice) -> Sequence[Tensor]: ... - def __setitem__(self, index, value): - list(self)[index] = value + def __getitem__(self, index: Any) -> Any: + return list(self)[index] - def __len__(self): + def __len__(self) -> int: count = 0 # Iterate over all fields in the dataclass. If we run into a sequence of # KVCacheInputs, we expand and recursively call `len` on the KVCacheInputs # elements. for field in self.__dataclass_fields__: value = getattr(self, field) - if isinstance(value, Sequence) and all( - isinstance(x, KVCacheInputs) for x in value - ): + if _is_sequence_of(value, KVCacheInputs): count += sum(len(x) for x in value) else: count += 1 @@ -158,27 +162,16 @@ class KVCacheInputSymbols: ... max_lengths: TensorType """ - def __iter__(self): + def __iter__(self) -> Iterator[Any]: """Iterates through each Type in order.""" - fields = deque( - getattr(self, field) for field in self.__dataclass_fields__ - ) - while fields: - value = fields.popleft() + for field in self.__dataclass_fields__: + value = getattr(self, field) if isinstance(value, KVCacheInputSymbols): - fields.extendleft( - reversed( - [ - getattr(value, field) - for field in value.__dataclass_fields__ - ] - ) - ) - continue + yield from value else: yield value - def __getitem__(self, index): + def __getitem__(self, index) -> Any: return list(self)[index] From 69403856b96b63a573a509972cc4f208753b899b Mon Sep 17 00:00:00 2001 From: akirchhoff-modular Date: Wed, 26 Feb 2025 18:14:37 -0800 Subject: [PATCH 475/509] [Pipelines] Qualify huggingface_hub accesses (NFC) This makes it easier to search to see where a network call may be being made. MODULAR_ORIG_COMMIT_REV_ID: f28696fda1657afd909348c577bf22f28764c000 --- src/max/pipelines/config.py | 51 ++++++++++++++----------------------- 1 file changed, 19 insertions(+), 32 deletions(-) diff --git a/src/max/pipelines/config.py b/src/max/pipelines/config.py index d254ca7c0b..b71b604777 100644 --- a/src/max/pipelines/config.py +++ b/src/max/pipelines/config.py @@ -28,25 +28,10 @@ from pathlib import Path from typing import Any, Optional, Union, cast +import huggingface_hub import torch -from huggingface_hub import ( - HfFileSystem, - file_exists, - get_hf_file_metadata, - hf_hub_download, - hf_hub_url, - model_info, - repo_exists, -) from huggingface_hub import constants as hf_hub_constants -from huggingface_hub.hf_api import ModelInfo -from huggingface_hub.utils import ( - EntryNotFoundError, - GatedRepoError, - HfHubHTTPError, - RepositoryNotFoundError, - RevisionNotFoundError, -) +from huggingface_hub import errors as hf_hub_errors from huggingface_hub.utils import tqdm as hf_tqdm from max.driver import CPU, Accelerator, Device, DeviceSpec, accelerator_count from max.dtype import DType @@ -209,17 +194,17 @@ def _repo_exists_with_retry(repo_id: str) -> bool: for attempt, delay_in_seconds in enumerate(retry_delays_in_seconds): try: - return repo_exists(repo_id) + return huggingface_hub.repo_exists(repo_id) except ( - RepositoryNotFoundError, - GatedRepoError, - RevisionNotFoundError, - EntryNotFoundError, + hf_hub_errors.RepositoryNotFoundError, + hf_hub_errors.GatedRepoError, + hf_hub_errors.RevisionNotFoundError, + hf_hub_errors.EntryNotFoundError, ) as e: # Forward these specific errors to the user logger.error(f"Hugging Face repository error: {str(e)}") raise - except HfHubHTTPError as e: + except hf_hub_errors.HfHubHTTPError as e: if attempt == max_attempts - 1: logger.error( f"Failed to connect to Hugging Face Hub after {max_attempts} attempts: {str(e)}" @@ -265,13 +250,15 @@ def __repr__(self) -> str: return self.repo_id @cached_property - def info(self) -> ModelInfo: + def info(self) -> huggingface_hub.ModelInfo: if self.repo_type == RepoType.local: raise ValueError( "using model info, on local repos is not supported." ) elif self.repo_type == RepoType.online: - return model_info(self.repo_id, files_metadata=False) + return huggingface_hub.model_info( + self.repo_id, files_metadata=False + ) else: raise ValueError(f"Unsupported repo type: {self.repo_type}") @@ -293,7 +280,7 @@ def weight_files(self) -> dict[WeightsFormat, list[str]]: os.path.join(self.repo_id, pytorch_search_pattern) ) elif self.repo_type == RepoType.online: - fs = HfFileSystem() + fs = huggingface_hub.HfFileSystem() safetensor_paths = cast( list[str], fs.glob(f"{self.repo_id}/{safetensor_search_pattern}"), @@ -337,8 +324,8 @@ def weight_files(self) -> dict[WeightsFormat, list[str]]: def size_of(self, filename: str) -> Union[int, None]: if self.repo_type == RepoType.online: - url = hf_hub_url(self.repo_id, filename) - metadata = get_hf_file_metadata(url) + url = huggingface_hub.hf_hub_url(self.repo_id, filename) + metadata = huggingface_hub.get_hf_file_metadata(url) return metadata.size raise NotImplementedError("not implemented for non-online repos.") @@ -503,11 +490,11 @@ def files_for_encoding( return gguf_files def file_exists(self, filename: str) -> bool: - return file_exists(self.repo_id, filename) + return huggingface_hub.file_exists(self.repo_id, filename) def download(self, filename: str, force_download: bool = False) -> Path: return Path( - hf_hub_download( + huggingface_hub.hf_hub_download( self.repo_id, filename, force_download=force_download ) ) @@ -749,7 +736,7 @@ def __post_init__(self) -> None: file_name = "/".join(path_pieces[2:]) if self.model_path != "" and repo_id == self.model_path: path = Path(file_name) - elif file_exists(repo_id, file_name): + elif huggingface_hub.file_exists(repo_id, file_name): self._weights_repo_id = repo_id path = Path(file_name) elif self.model_path == "": @@ -1006,7 +993,7 @@ def download_weights(self) -> None: self.weight_path = list( thread_map( lambda filename: Path( - hf_hub_download( + huggingface_hub.hf_hub_download( weights_repo_id, str(filename), revision=self.huggingface_revision, From 82953520c45fa62f6bae540b8c41a70ee60a0e98 Mon Sep 17 00:00:00 2001 From: Brian Zhang Date: Wed, 26 Feb 2025 18:50:12 -0800 Subject: [PATCH 476/509] [MAX] Format bytes into human readable strings in kv cache err messages (#56791) Stacked PRs: * __->__#56791 --- --- --- ### [MAX] Format bytes into human readable strings in kv cache err messages Add a new support subpackage that contains these few helpers. I leave DType where it currently is context: [Internal link] Closes E2EOPT-70 MODULAR_ORIG_COMMIT_REV_ID: 5ff6caa4f2cf53bae77bf8ee3fb366c8d227f294 --- src/max/pipelines/kv_cache/paged_cache.py | 13 ++++++++--- src/max/pipelines/registry.py | 28 ++++++----------------- 2 files changed, 17 insertions(+), 24 deletions(-) diff --git a/src/max/pipelines/kv_cache/paged_cache.py b/src/max/pipelines/kv_cache/paged_cache.py index 7c814828be..ab33d3335e 100644 --- a/src/max/pipelines/kv_cache/paged_cache.py +++ b/src/max/pipelines/kv_cache/paged_cache.py @@ -34,6 +34,7 @@ _OpaqueValue, ops, ) +from max.support.human_readable_formatter import to_human_readable_bytes from ._utils import build_max_lengths_tensor from .cache_params import KVCacheParams @@ -194,17 +195,23 @@ def __init__( cache_memory_per_device // single_page_size_bytes ) + single_page_size_bytes_str = to_human_readable_bytes( + single_page_size_bytes + ) + cache_memory_per_device_str = to_human_readable_bytes( + cache_memory_per_device + ) if self.total_num_pages == 0: raise RuntimeError( f"Insufficient cache memory to allocate even a single page.\n" - f"One page requires {single_page_size_bytes} bytes but only {cache_memory_per_device} bytes are available." + f"One page requires {single_page_size_bytes_str} but only {cache_memory_per_device_str} are available." ) if max_batch_size > self.total_num_pages: logger.warning( f"Insufficient cache memory to support a batch containing {max_batch_size} requests with one token per request. " f"Need to allocate at least {max_batch_size} blocks, but only have enough memory for {self.total_num_pages} blocks. " - f"One page requires {single_page_size_bytes} bytes but only {cache_memory_per_device} bytes are available." + f"One page requires {single_page_size_bytes_str} but only {cache_memory_per_device_str} are available." ) blocks_needed_for_max_seq_len = ceildiv(max_seq_len, page_size) @@ -212,7 +219,7 @@ def __init__( logger.warning( f"Insufficient cache memory to support a batch containing one request at the max sequence length of {max_seq_len} tokens. " f"Need to allocate at least {blocks_needed_for_max_seq_len} blocks, but only have enough memory for {self.total_num_pages} blocks. " - f"One page requires {single_page_size_bytes} bytes but only {cache_memory_per_device} bytes are available." + f"One page requires {single_page_size_bytes} but only {cache_memory_per_device} are available." ) # call our base class constructor diff --git a/src/max/pipelines/registry.py b/src/max/pipelines/registry.py index 312b0d1e79..2e180772f2 100644 --- a/src/max/pipelines/registry.py +++ b/src/max/pipelines/registry.py @@ -23,6 +23,7 @@ import torch from max.graph.weights import WeightsAdapter +from max.support.human_readable_formatter import to_human_readable_bytes from .config import ( PipelineConfig, @@ -67,21 +68,6 @@ } -def _to_human_memory_size(bytes: int) -> str: - """Convert bytes to human readable memory size.""" - KiB = 1024 - MiB = KiB * 1024 - GiB = MiB * 1024 - TiB = GiB * 1024 - if bytes > TiB: - return f"{bytes / TiB:.2f} TiB" - if bytes > GiB: - return f"{bytes / GiB:.2f} GiB" - if bytes > MiB: - return f"{bytes / MiB:.2f} MiB" - return f"{bytes / KiB:.2f} KiB" - - class SupportedArchitecture: def __init__( self, @@ -463,11 +449,11 @@ def _estimate_memory_footprint( total_size = model_weights_size + actual_kv_cache_size if free_memory: - free_memory_str = f" / {_to_human_memory_size(free_memory)} free" + free_memory_str = f" / {to_human_readable_bytes(free_memory)} free" weights_str = "" if model_weights_size: - weights_str = f"\n\t Weights: {_to_human_memory_size(model_weights_size)}" + weights_str = f"\n\t Weights: {to_human_readable_bytes(model_weights_size)}" if not user_provided_max_length: max_length_str = f"Auto-inferred max sequence length: {pipeline_config.max_length}" @@ -487,8 +473,8 @@ def _estimate_memory_footprint( "\n" f"\n\tEstimated memory consumption:" f"{weights_str}" - f"\n\t KVCache allocation: {_to_human_memory_size(actual_kv_cache_size)}" - f"\n\t Total estimated: {_to_human_memory_size(model_weights_size + actual_kv_cache_size)} used{free_memory_str}" + f"\n\t KVCache allocation: {to_human_readable_bytes(actual_kv_cache_size)}" + f"\n\t Total estimated: {to_human_readable_bytes(model_weights_size + actual_kv_cache_size)} used{free_memory_str}" f"\n\t{max_length_str}" f"\n\t{max_batch_size_str}\n" ) @@ -719,14 +705,14 @@ def _generate_oom_error_message( ) -> str: """Generate an appropriate error message based on the configuration state.""" free_memory_str = ( - f" / {_to_human_memory_size(original_free_memory)} free" + f" / {to_human_readable_bytes(original_free_memory)} free" if original_free_memory else "" ) msg = StringIO() msg.write( - f"Estimated model and kv cache memory use exceeds available memory ({_to_human_memory_size(total_size)} {free_memory_str}). Try " + f"Estimated model and kv cache memory use exceeds available memory ({to_human_readable_bytes(total_size)} {free_memory_str}). Try " ) if not found_valid_max_length and not found_valid_max_batch_size: From 8ae8a5c73210b9f90419755de38f74e8abb2c449 Mon Sep 17 00:00:00 2001 From: Jack Clayton Date: Wed, 26 Feb 2025 22:11:20 -0500 Subject: [PATCH 477/509] [max-examples] Add matmul benchmark to custom ops Results on A100 at 1028x1028x1028: ``` ------------------------------------------------------------------------ | name | met (ms)| iters | GFLOPS/s | GElems/s | ------------------------------------------------------------------------ | cpu/naive | 1345.17 | 2 | 1.6144302 | 0.0007856 | | gpu/naive | 2.84457 | 421 | 763.44951 | 0.3715082 | | gpu/coalescing | 0.65844 | 1822 | 3298.2149 | 1.6049707 | | gpu/tiled | 0.62589 | 1917 | 3469.7502 | 1.6884429 | | gpu/tiled_register | 0.40628 | 2953 | 5345.2100 | 2.6010754 | | gpu/block_tiled | 0.37401 | 3207 | 5806.3713 | 2.8254848 | | gpu/block_tiled_vectorized | 0.37404 | 3208 | 5805.9318 | 2.8252709 | ------------------------------------------------------------------------ ``` MODULAR_ORIG_COMMIT_REV_ID: e42b94e1862195d335533a790b6e0ed4b8d3f184 --- examples/custom_ops/benchmarks.mojo | 137 +++++++++++++++++++++++++++- 1 file changed, 136 insertions(+), 1 deletion(-) diff --git a/examples/custom_ops/benchmarks.mojo b/examples/custom_ops/benchmarks.mojo index c768958981..c9bdc86245 100644 --- a/examples/custom_ops/benchmarks.mojo +++ b/examples/custom_ops/benchmarks.mojo @@ -11,7 +11,8 @@ # limitations under the License. # ===----------------------------------------------------------------------=== # -from kernels import TopK +from kernels.top_k import TopK +from kernels.matrix_multiplication import MatrixMultiplication from gpu.host import DeviceContext from utils import IndexList from max.driver.device import cpu_device @@ -131,5 +132,139 @@ def top_k(): out_idxs.free() +def matmul(): + alias M = 1028 + alias K = 1028 + alias N = 1028 + alias FLOPS = M * N * (2 * K - 1) + + alias rank = 2 + alias a_shape = IndexList[rank](M, K) + alias b_shape = IndexList[rank](K, N) + alias c_shape = IndexList[rank](M, N) + + alias a_els = a_shape.flattened_length() + alias b_els = b_shape.flattened_length() + alias c_els = c_shape.flattened_length() + + alias dtype = DType.float32 + + alias a_spec = StaticTensorSpec[dtype, rank]( + shape=(M, K), + strides=(K, 1), + alignment=sizeof[dtype](), + address_space=AddressSpace.GENERIC, + exclusive=True, + in_lambda=None, + out_lambda=None, + ) + alias b_spec = StaticTensorSpec[dtype, rank]( + shape=(K, N), + strides=(N, 1), + alignment=sizeof[dtype](), + address_space=AddressSpace.GENERIC, + exclusive=True, + in_lambda=None, + out_lambda=None, + ) + alias c_spec = StaticTensorSpec[dtype, rank]( + shape=(M, N), + strides=(N, 1), + alignment=sizeof[dtype](), + address_space=AddressSpace.GENERIC, + exclusive=True, + in_lambda=None, + out_lambda=None, + ) + + var a_ptr = UnsafePointer[Scalar[dtype]].alloc(a_els) + var b_ptr = UnsafePointer[Scalar[dtype]].alloc(b_els) + var c_ptr = UnsafePointer[Scalar[dtype]].alloc(c_els) + + var a = InputTensor[static_spec=a_spec](a_ptr, a_shape) + var b = InputTensor[static_spec=b_spec](b_ptr, b_shape) + var c = OutputTensor[static_spec=c_spec](c_ptr, c_shape) + + rand(a_ptr, a_els) + rand(b_ptr, b_els) + + var cpu_ctx_ptr = cpu_device().unsafe_ptr() + var bench = Bench() + var flops = ThroughputMeasure(BenchMetric.flops, FLOPS) + var elements = ThroughputMeasure(BenchMetric.elements, M * N) + + @parameter + @always_inline + fn bench_cpu(mut bencher: Bencher) raises: + @parameter + @always_inline + fn run_bench() raises: + MatrixMultiplication["naive"].execute[target="cpu"]( + c, + a, + b, + cpu_ctx_ptr, + ) + + bencher.iter[run_bench]() + + bench.bench_function[bench_cpu](BenchId("cpu", "naive"), flops, elements) + + @parameter + if has_nvidia_gpu_accelerator() or has_amd_gpu_accelerator(): + var gpu_ctx = DeviceContext() + var a_dev = gpu_ctx.enqueue_create_buffer[dtype](a_els) + var b_dev = gpu_ctx.enqueue_create_buffer[dtype](b_els) + var c_dev = gpu_ctx.enqueue_create_buffer[dtype](c_els) + var c = InputTensor[static_spec=c_spec](c_dev.unsafe_ptr(), c_shape) + var a = OutputTensor[static_spec=a_spec](a_dev.unsafe_ptr(), a_shape) + var b = OutputTensor[static_spec=b_spec](b_dev.unsafe_ptr(), b_shape) + gpu_ctx.copy(a_dev, a_ptr) + gpu_ctx.copy(b_dev, b_ptr) + + @parameter + def bench_matmul_kernel[impl: StringLiteral](): + @parameter + @always_inline + fn bench_gpu(mut bench: Bencher) raises: + @parameter + @always_inline + fn kernel_launch(gpu_ctx: DeviceContext) raises: + MatrixMultiplication[impl].execute[target="gpu"]( + c, + a, + b, + gpu_ctx, + ) + + var gpu_ctx = DeviceContext() + bench.iter_custom[kernel_launch](gpu_ctx) + _ = gpu_ctx + + bench.bench_function[bench_gpu]( + BenchId("gpu", impl), flops, elements + ) + + bench_matmul_kernel["naive"]() + bench_matmul_kernel["coalescing"]() + bench_matmul_kernel["tiled"]() + bench_matmul_kernel["tiled_register"]() + bench_matmul_kernel["block_tiled"]() + bench_matmul_kernel["block_tiled_vectorized"]() + _ = gpu_ctx + _ = a_dev + _ = b_dev + _ = c_dev + + bench.config.verbose_metric_names = False + print(bench) + + a_ptr.free() + b_ptr.free() + c_ptr.free() + + +# TODO: arg parsing to select benchmarks def main(): top_k() + matmul() From e543f249c2c28b6adc9471019dbc202e5b312f65 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20B=C3=B8rstad?= Date: Thu, 27 Feb 2025 14:42:32 +0100 Subject: [PATCH 478/509] ] [max-examples] Fix DeviceContext lifetime in top_k benchmark Moves the cpu_device() context creation outside the benchmark function and keeps it alive until the end of the scope to prevent use-after-free errors. This prevents the example from segfaulting on Mac OS [ MODULAR_ORIG_COMMIT_REV_ID: 37177ca86aa143cc4dd405dd7253e6f218ddb18e --- examples/custom_ops/benchmarks.mojo | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/examples/custom_ops/benchmarks.mojo b/examples/custom_ops/benchmarks.mojo index c9bdc86245..f02bb8b731 100644 --- a/examples/custom_ops/benchmarks.mojo +++ b/examples/custom_ops/benchmarks.mojo @@ -67,11 +67,11 @@ def top_k(): rand(in_vals, els) + var cpu_ctx_ptr = cpu_device().unsafe_ptr() + @parameter @always_inline fn bench_cpu(mut b: Bencher) raises: - var cpu_ctx_ptr = cpu_device().unsafe_ptr() - @parameter @always_inline fn run_bench() raises: @@ -127,6 +127,7 @@ def top_k(): b.config.verbose_metric_names = False print(b) + _ = cpu_ctx_ptr in_vals.free() out_vals.free() out_idxs.free() From 5f2570fa100418dcce60108b8d9337ea1115cf89 Mon Sep 17 00:00:00 2001 From: martinvuyk <110240700+martinvuyk@users.noreply.github.com> Date: Thu, 27 Feb 2025 08:04:22 -0600 Subject: [PATCH 479/509] [External] [stdlib] Rename `List.size` to `List._len` and refactor usage of the field to use the public API (#56692) [External] [stdlib] Rename `List.size` to `List._len` Make the data member `size` of `List` private by prefixing with an `_`. Rename it to `len` while we're here. Adjust call sites to use public APIs where possible. Details: - Part of https://github.com/modular/mojo/issues/3511 - To prepare for any future implementation details than can change under the hood for `List`. Co-authored-by: martinvuyk <110240700+martinvuyk@users.noreply.github.com> Closes modularml/mojo#3814 MODULAR_ORIG_COMMIT_REV_ID: c2ac41d4c543b01619814ce0cd58fd8ba15ac9e9 --- mojo/docs/changelog.md | 36 ++++++ mojo/stdlib/src/builtin/file.mojo | 4 +- mojo/stdlib/src/builtin/string_literal.mojo | 15 +-- mojo/stdlib/src/collections/list.mojo | 111 ++++++++---------- .../src/collections/string/_unicode.mojo | 26 ++-- .../src/collections/string/codepoint.mojo | 2 +- .../stdlib/src/collections/string/format.mojo | 5 +- .../stdlib/src/collections/string/string.mojo | 81 +++++-------- .../src/collections/string/string_slice.mojo | 12 +- mojo/stdlib/src/memory/span.mojo | 2 +- mojo/stdlib/src/pathlib/path.mojo | 2 +- .../test_list_getitem_invalid_index.mojo | 2 +- 12 files changed, 141 insertions(+), 157 deletions(-) diff --git a/mojo/docs/changelog.md b/mojo/docs/changelog.md index c223bb1bd0..8f7363e0de 100644 --- a/mojo/docs/changelog.md +++ b/mojo/docs/changelog.md @@ -215,4 +215,40 @@ ctx.enqueue_function(compiled_func, grid_dim=1, block_dim=1) ### ❌ Removed +- Direct access to `List.size` has been removed. Use the public API instead. + + Examples: + + Extending a List: + + ```mojo + base_data = List[Byte](1, 2, 3) + + data_list = List[Byte](4, 5, 6) + ext_data_list = base_data.copy() + ext_data_list.extend(data_list) # [1, 2, 3, 4, 5, 6] + + data_span = Span(List[Byte](4, 5, 6)) + ext_data_span = base_data.copy() + ext_data_span.extend(data_span) # [1, 2, 3, 4, 5, 6] + + data_vec = SIMD[DType.uint8, 4](4, 5, 6, 7) + ext_data_vec_full = base_data.copy() + ext_data_vec_full.extend(data_vec) # [1, 2, 3, 4, 5, 6, 7] + + ext_data_vec_partial = base_data.copy() + ext_data_vec_partial.extend(data_vec, count=3) # [1, 2, 3, 4, 5, 6] + ``` + + Slicing and extending a list efficiently: + + ```mojo + base_data = List[Byte](1, 2, 3, 4, 5, 6) + n4_n5 = Span(base_data)[3:5] + extra_data = Span(List[Byte](8, 10)) + end_result = List[Byte](capacity=len(n4_n5) + len(extra_data)) + end_result.extend(n4_n5) + end_result.extend(extra_data) # [4, 5, 8, 10] + ``` + ### 🛠️ Fixed diff --git a/mojo/stdlib/src/builtin/file.mojo b/mojo/stdlib/src/builtin/file.mojo index 9325034705..e3ba22bf27 100644 --- a/mojo/stdlib/src/builtin/file.mojo +++ b/mojo/stdlib/src/builtin/file.mojo @@ -129,7 +129,7 @@ struct FileHandle: """Reads data from a file and sets the file handle seek position. If size is left as the default of -1, it will read to the end of the file. Setting size to a number larger than what's in the file will set - String.size to the total number of bytes, and read all the data. + the String length to the total number of bytes, and read all the data. Args: size: Requested number of bytes to read (Default: -1 = EOF). @@ -273,7 +273,7 @@ struct FileHandle: """Reads data from a file and sets the file handle seek position. If size is left as default of -1, it will read to the end of the file. Setting size to a number larger than what's in the file will be handled - and set the List.size to the total number of bytes in the file. + and set the List length to the total number of bytes in the file. Args: size: Requested number of bytes to read (Default: -1 = EOF). diff --git a/mojo/stdlib/src/builtin/string_literal.mojo b/mojo/stdlib/src/builtin/string_literal.mojo index aabd2b7678..da60f9515c 100644 --- a/mojo/stdlib/src/builtin/string_literal.mojo +++ b/mojo/stdlib/src/builtin/string_literal.mojo @@ -411,17 +411,10 @@ struct StringLiteral( # inline the string slice constructor to work around an elaborator # memory leak. # return self.as_string_slice() - var string = String() - var length = self.byte_length() - var buffer = String._buffer_type() - var new_capacity = length + 1 - buffer._realloc(new_capacity) - buffer.size = new_capacity - var data: UnsafePointer[UInt8] = self.unsafe_ptr() - memcpy(buffer.data, data, length) - (buffer.data + length).init_pointee_move(0) - string._buffer = buffer^ - return string + var buffer = String._buffer_type(capacity=self.byte_length() + 1) + buffer.extend(self.as_bytes()) + buffer.append(0) + return String(buffer=buffer^) @no_inline fn __repr__(self) -> String: diff --git a/mojo/stdlib/src/collections/list.mojo b/mojo/stdlib/src/collections/list.mojo index 21416c95dd..1aa7051342 100644 --- a/mojo/stdlib/src/collections/list.mojo +++ b/mojo/stdlib/src/collections/list.mojo @@ -98,7 +98,7 @@ struct List[T: CollectionElement, hint_trivial_type: Bool = False]( # Fields var data: UnsafePointer[T] """The underlying storage for the list.""" - var size: Int + var _len: Int """The number of elements in the list.""" var capacity: Int """The amount of elements that can fit in the list without resizing it.""" @@ -110,7 +110,7 @@ struct List[T: CollectionElement, hint_trivial_type: Bool = False]( fn __init__(out self): """Constructs an empty list.""" self.data = UnsafePointer[T]() - self.size = 0 + self._len = 0 self.capacity = 0 fn copy(self) -> Self: @@ -131,7 +131,7 @@ struct List[T: CollectionElement, hint_trivial_type: Bool = False]( capacity: The requested capacity of the list. """ self.data = UnsafePointer[T].alloc(capacity) - self.size = 0 + self._len = 0 self.capacity = capacity fn __init__(out self, owned *values: T): @@ -161,7 +161,7 @@ struct List[T: CollectionElement, hint_trivial_type: Bool = False]( # Do not destroy the elements when their backing storage goes away. __disable_del elements - self.size = length + self._len = length fn __init__(out self, span: Span[T]): """Constructs a list from the a Span of values. @@ -184,7 +184,7 @@ struct List[T: CollectionElement, hint_trivial_type: Bool = False]( capacity: The capacity of the list. """ self.data = ptr - self.size = length + self._len = length self.capacity = capacity fn __moveinit__(out self, owned existing: Self): @@ -194,7 +194,7 @@ struct List[T: CollectionElement, hint_trivial_type: Bool = False]( existing: The existing list. """ self.data = existing.data - self.size = existing.size + self._len = existing._len self.capacity = existing.capacity fn __copyinit__(out self, existing: Self): @@ -212,7 +212,7 @@ struct List[T: CollectionElement, hint_trivial_type: Bool = False]( @parameter if not hint_trivial_type: - for i in range(self.size): + for i in range(len(self)): (self.data + i).destroy_pointee() self.data.free() @@ -369,13 +369,14 @@ struct List[T: CollectionElement, hint_trivial_type: Bool = False]( # Trait implementations # ===-------------------------------------------------------------------===# + @always_inline("nodebug") fn __len__(self) -> Int: """Gets the number of elements in the list. Returns: The number of elements in the list. """ - return self.size + return self._len fn __bool__(self) -> Bool: """Checks whether the list has any elements or not. @@ -411,7 +412,9 @@ struct List[T: CollectionElement, hint_trivial_type: Bool = False]( Returns: A string representation of the list. """ - var output = String() + # at least 1 byte per item e.g.: [a, b, c, d] = 4 + 2 * 3 + [] + null + var l = len(self) + var output = String(capacity=l + 2 * (l - 1) * Int(l > 1) + 3) self.write_to(output) return output^ @@ -478,11 +481,12 @@ struct List[T: CollectionElement, hint_trivial_type: Bool = False]( fn _realloc(mut self, new_capacity: Int): var new_data = UnsafePointer[T].alloc(new_capacity) - _move_pointee_into_many_elements[hint_trivial_type]( - dest=new_data, - src=self.data, - size=self.size, - ) + @parameter + if hint_trivial_type: + memcpy(new_data, self.data, len(self)) + else: + for i in range(len(self)): + (self.data + i).move_pointee_into(new_data + i) if self.data: self.data.free() @@ -499,10 +503,10 @@ struct List[T: CollectionElement, hint_trivial_type: Bool = False]( If there is no capacity left, resizes to twice the current capacity. Except for 0 capacity where it sets 1. """ - if self.size >= self.capacity: + if self._len >= self.capacity: self._realloc(self.capacity * 2 | Int(self.capacity == 0)) self._unsafe_next_uninit_ptr().init_pointee_move(value^) - self.size += 1 + self._len += 1 fn insert(mut self, i: Int, owned value: T): """Inserts a value to the list at the given index. @@ -512,7 +516,7 @@ struct List[T: CollectionElement, hint_trivial_type: Bool = False]( i: The index for the value. value: The value to insert. """ - debug_assert(i <= self.size, "insert index out of range") + debug_assert(i <= len(self), "insert index out of range") var normalized_idx = i if i < 0: @@ -573,7 +577,7 @@ struct List[T: CollectionElement, hint_trivial_type: Bool = False]( # visible outside this function if a `__moveinit__()` constructor were # to throw (not currently possible AFAIK though) part way through the # logic below. - other.size = 0 + other._len = 0 var dest_ptr = self.data + len(self) @@ -590,7 +594,7 @@ struct List[T: CollectionElement, hint_trivial_type: Bool = False]( # Update the size now that all new elements have been moved into this # list. - self.size = final_size + self._len = final_size fn extend[ D: DType, // @@ -606,9 +610,9 @@ struct List[T: CollectionElement, hint_trivial_type: Bool = False]( Notes: If there is no capacity left, resizes to `len(self) + value.size`. """ - self.reserve(self.size + value.size) + self.reserve(self._len + value.size) self._unsafe_next_uninit_ptr().store(value) - self.size += value.size + self._len += value.size fn extend[ D: DType, // @@ -627,10 +631,10 @@ struct List[T: CollectionElement, hint_trivial_type: Bool = False]( If there is no capacity left, resizes to `len(self) + count`. """ debug_assert(count <= value.size, "count must be <= value.size") - self.reserve(self.size + count) + self.reserve(self._len + count) var v_ptr = UnsafePointer.address_of(value).bitcast[Scalar[D]]() memcpy(self._unsafe_next_uninit_ptr(), v_ptr, count) - self.size += count + self._len += count fn extend[ D: DType, // @@ -646,9 +650,9 @@ struct List[T: CollectionElement, hint_trivial_type: Bool = False]( Notes: If there is no capacity left, resizes to `len(self) + len(value)`. """ - self.reserve(self.size + len(value)) + self.reserve(self._len + len(value)) memcpy(self._unsafe_next_uninit_ptr(), value.unsafe_ptr(), len(value)) - self.size += len(value) + self._len += len(value) fn pop(mut self, i: Int = -1) -> T: """Pops a value from the list at the given index. @@ -659,17 +663,17 @@ struct List[T: CollectionElement, hint_trivial_type: Bool = False]( Returns: The popped value. """ - debug_assert(-len(self) <= i < len(self), "pop index out of range") + debug_assert(-self._len <= i < self._len, "pop index out of range") var normalized_idx = i if i < 0: - normalized_idx += len(self) + normalized_idx += self._len var ret_val = (self.data + normalized_idx).take_pointee() - for j in range(normalized_idx + 1, self.size): + for j in range(normalized_idx + 1, self._len): (self.data + j).move_pointee_into(self.data + j - 1) - self.size -= 1 - if self.size * 4 < self.capacity: + self._len -= 1 + if self._len * 4 < self.capacity: if self.capacity > 1: self._realloc(self.capacity // 2) return ret_val^ @@ -698,13 +702,13 @@ struct List[T: CollectionElement, hint_trivial_type: Bool = False]( new_size: The new size. value: The value to use to populate new elements. """ - if new_size <= self.size: + if new_size <= self._len: self.resize(new_size) else: self.reserve(new_size) - for i in range(self.size, new_size): + for i in range(self._len, new_size): (self.data + i).init_pointee_copy(value) - self.size = new_size + self._len = new_size fn resize(mut self, new_size: Int): """Resizes the list to the given new size. @@ -715,16 +719,16 @@ struct List[T: CollectionElement, hint_trivial_type: Bool = False]( Args: new_size: The new size. """ - if self.size < new_size: + if len(self) < new_size: abort( "You are calling List.resize with a new_size bigger than the" " current size. If you want to make the List bigger, provide a" " value to fill the new slots with. If not, make sure the new" " size is smaller than the current size." ) - for i in range(new_size, self.size): + for i in range(new_size, len(self)): (self.data + i).destroy_pointee() - self.size = new_size + self._len = new_size self.reserve(new_size) fn reverse(mut self): @@ -831,9 +835,9 @@ struct List[T: CollectionElement, hint_trivial_type: Bool = False]( fn clear(mut self): """Clears the elements in the list.""" - for i in range(self.size): + for i in range(self._len): (self.data + i).destroy_pointee() - self.size = 0 + self._len = 0 fn steal_data(mut self) -> UnsafePointer[T]: """Take ownership of the underlying pointer from the list. @@ -843,7 +847,7 @@ struct List[T: CollectionElement, hint_trivial_type: Bool = False]( """ var ptr = self.data self.data = UnsafePointer[T]() - self.size = 0 + self._len = 0 self.capacity = 0 return ptr @@ -891,11 +895,11 @@ struct List[T: CollectionElement, hint_trivial_type: Bool = False]( else: var normalized_idx = Int(idx) debug_assert( - -self.size <= normalized_idx < self.size, + -self._len <= normalized_idx < self._len, "index: ", normalized_idx, - " is out of bounds for `List` of size: ", - self.size, + " is out of bounds for `List` of length: ", + self._len, ) if normalized_idx < 0: normalized_idx += len(self) @@ -1048,24 +1052,24 @@ struct List[T: CollectionElement, hint_trivial_type: Bool = False]( - This pointer MUST not be used to read or write memory beyond the allocated capacity of this list. - This pointer may not be used to initialize non-contiguous elements. - - Ensure that `List.size` is updated to reflect the new number of + - Ensure that `List._len` is updated to reflect the new number of initialized elements, otherwise elements may be unexpectedly overwritten or not destroyed correctly. """ debug_assert( - self.capacity > 0 and self.capacity > self.size, + self.capacity > 0 and self.capacity > self._len, ( "safety violation: Insufficient capacity to retrieve pointer to" " next uninitialized element" ), ) - return self.data + self.size + return self.data + self._len fn _cast_hint_trivial_type[ hint_trivial_type: Bool ](owned self) -> List[T, hint_trivial_type]: - var size = self.size + var size = self._len var capacity = self.capacity # TODO: Why doesn't `__disable_del self` work here? @@ -1078,18 +1082,3 @@ struct List[T: CollectionElement, hint_trivial_type: Bool = False]( fn _clip(value: Int, start: Int, end: Int) -> Int: return max(start, min(value, end)) - - -fn _move_pointee_into_many_elements[ - T: CollectionElement, //, hint_trivial_type: Bool -](dest: UnsafePointer[T], src: UnsafePointer[T], size: Int): - @parameter - if hint_trivial_type: - memcpy( - dest=dest.bitcast[Int8](), - src=src.bitcast[Int8](), - count=size * sizeof[T](), - ) - else: - for i in range(size): - (src + i).move_pointee_into(dest + i) diff --git a/mojo/stdlib/src/collections/string/_unicode.mojo b/mojo/stdlib/src/collections/string/_unicode.mojo index 4ec5cd280e..04613c373e 100644 --- a/mojo/stdlib/src/collections/string/_unicode.mojo +++ b/mojo/stdlib/src/collections/string/_unicode.mojo @@ -183,22 +183,21 @@ fn to_lowercase(s: StringSlice) -> String: ) var lowercase_char_opt = _get_lowercase_mapping(rune_and_size[0]) if lowercase_char_opt is None: - memcpy( - output._unsafe_next_uninit_ptr(), - input + input_offset, - rune_and_size[1], + output.extend( + Span[Byte, s.origin]( + ptr=input + input_offset, length=rune_and_size[1] + ) ) - output.size += rune_and_size[1] else: var lower_char: Codepoint = lowercase_char_opt.unsafe_value() - output.size += lower_char.unsafe_write_utf8( + output._len += lower_char.unsafe_write_utf8( output._unsafe_next_uninit_ptr() ) input_offset += rune_and_size[1] # Check if we need to reserve additional capacity. - if output.size >= output.capacity - 5: + if len(output) >= output.capacity - 5: output.reserve( output.capacity + _estimate_needed_size(s.byte_length() - input_offset) @@ -238,21 +237,20 @@ fn to_uppercase(s: StringSlice) -> String: ) for char_idx in range(count): var char: Codepoint = uppercase_replacement_chars[char_idx] - output.size += char.unsafe_write_utf8( + output._len += char.unsafe_write_utf8( output._unsafe_next_uninit_ptr() ) else: - memcpy( - output._unsafe_next_uninit_ptr(), - input + input_offset, - rune_and_size[1], + output.extend( + Span[Byte, s.origin]( + ptr=input + input_offset, length=rune_and_size[1] + ) ) - output.size += rune_and_size[1] input_offset += rune_and_size[1] # Check if we need to reserve additional capacity. - if output.size >= output.capacity - 5: + if len(output) >= output.capacity - 5: output.reserve( output.capacity + _estimate_needed_size(s.byte_length() - input_offset) diff --git a/mojo/stdlib/src/collections/string/codepoint.mojo b/mojo/stdlib/src/collections/string/codepoint.mojo index 934d74ce49..1974d40318 100644 --- a/mojo/stdlib/src/collections/string/codepoint.mojo +++ b/mojo/stdlib/src/collections/string/codepoint.mojo @@ -286,7 +286,7 @@ struct Codepoint(CollectionElement, EqualityComparable, Intable, Stringable): var buffer = List[Byte](capacity=char_len + 1) _ = self.unsafe_write_utf8(buffer.unsafe_ptr()) buffer.unsafe_ptr()[char_len] = 0 - buffer.size = char_len + 1 + buffer._len = char_len + 1 return String(buffer=buffer^) # ===-------------------------------------------------------------------===# diff --git a/mojo/stdlib/src/collections/string/format.mojo b/mojo/stdlib/src/collections/string/format.mojo index d1e8d34411..ec2935b9e5 100644 --- a/mojo/stdlib/src/collections/string/format.mojo +++ b/mojo/stdlib/src/collections/string/format.mojo @@ -147,9 +147,8 @@ struct _FormatCurlyEntry(CollectionElement, CollectionElementNew): entries, size_estimation = Self._create_entries(fmt_src, len_pos_args) var fmt_len = fmt_src.byte_length() var buf = String._buffer_type(capacity=fmt_len + size_estimation) - buf.size = 1 - buf.unsafe_set(0, 0) - var res = String(buf^) + buf.append(0) + var res = String(buffer=buf^) var offset = 0 var ptr = fmt_src.unsafe_ptr() alias S = StringSlice[StaticConstantOrigin] diff --git a/mojo/stdlib/src/collections/string/string.mojo b/mojo/stdlib/src/collections/string/string.mojo index 304d33b6cc..85e121f004 100644 --- a/mojo/stdlib/src/collections/string/string.mojo +++ b/mojo/stdlib/src/collections/string/string.mojo @@ -748,7 +748,7 @@ struct String( bytes: The byte span to write to this String. Must NOT be null terminated. """ - self._iadd[False](bytes) + self._iadd(bytes) fn write[*Ts: Writable](mut self, *args: *Ts): """Write a sequence of Writable arguments to the provided Writer. @@ -841,7 +841,7 @@ struct String( if buff[-1]: buff.append(0) - return String(buff^) + return String(buffer=buff^) # ===------------------------------------------------------------------=== # # Operator dunders @@ -861,10 +861,7 @@ struct String( """ # TODO(#933): implement this for unicode when we support llvm intrinsic evaluation at compile time var normalized_idx = normalize_index["String"](idx, len(self)) - var buf = Self._buffer_type(capacity=1) - buf.append(self._buffer[normalized_idx]) - buf.append(0) - return String(buf^) + return String(buffer=Self._buffer_type(self._buffer[normalized_idx], 0)) fn __getitem__(self, span: Slice) -> String: """Gets the sequence of characters at the specified positions. @@ -889,14 +886,12 @@ struct String( ) ) - var buffer = Self._buffer_type() - var result_len = len(r) - buffer.resize(result_len + 1, 0) + var buffer = Self._buffer_type(capacity=len(r) + 1) var ptr = self.unsafe_ptr() - for i in range(result_len): - buffer[i] = ptr[r[i]] - buffer[result_len] = 0 - return Self(buffer^) + for i in r: + buffer.append(ptr[i]) + buffer.append(0) + return String(buffer=buffer^) @always_inline fn __eq__(self, other: String) -> Bool: @@ -982,27 +977,19 @@ struct String( return not (self < rhs) @staticmethod - fn _add[rhs_has_null: Bool](lhs: Span[Byte], rhs: Span[Byte]) -> String: + fn _add(lhs: Span[Byte], rhs: Span[Byte]) -> String: var lhs_len = len(lhs) var rhs_len = len(rhs) - var lhs_ptr = lhs.unsafe_ptr() - var rhs_ptr = rhs.unsafe_ptr() alias S = StringSlice[ImmutableAnyOrigin] if lhs_len == 0: - return String(S(ptr=rhs_ptr, length=rhs_len)) + return String(S(ptr=rhs.unsafe_ptr(), length=rhs_len)) elif rhs_len == 0: - return String(S(ptr=lhs_ptr, length=lhs_len)) - var sum_len = lhs_len + rhs_len - var buffer = Self._buffer_type(capacity=sum_len + 1) - var ptr = buffer.unsafe_ptr() - memcpy(ptr, lhs_ptr, lhs_len) - memcpy(ptr + lhs_len, rhs_ptr, rhs_len + Int(rhs_has_null)) - buffer.size = sum_len + 1 - - @parameter - if not rhs_has_null: - ptr[sum_len] = 0 - return Self(buffer^) + return String(S(ptr=lhs.unsafe_ptr(), length=lhs_len)) + var buffer = Self._buffer_type(capacity=lhs_len + rhs_len + 1) + buffer.extend(lhs) + buffer.extend(rhs) + buffer.append(0) + return String(buffer=buffer^) @always_inline fn __add__(self, other: StringSlice) -> String: @@ -1014,7 +1001,7 @@ struct String( Returns: The new constructed string. """ - return Self._add[False](self.as_bytes(), other.as_bytes()) + return Self._add(self.as_bytes(), other.as_bytes()) @always_inline fn __radd__(self, other: StringSlice) -> String: @@ -1026,27 +1013,17 @@ struct String( Returns: The new constructed string. """ - return Self._add[True](other.as_bytes(), self.as_bytes()) + return Self._add(other.as_bytes(), self.as_bytes()) - fn _iadd[has_null: Bool](mut self, other: Span[Byte]): - var s_len = self.byte_length() + fn _iadd(mut self, other: Span[Byte]): var o_len = len(other) - var o_ptr = other.unsafe_ptr() - if s_len == 0: - alias S = StringSlice[ImmutableAnyOrigin] - self = String(S(ptr=o_ptr, length=o_len)) - return - elif o_len == 0: + if o_len == 0: return - var sum_len = s_len + o_len - self._buffer.reserve(sum_len + 1) - var s_ptr = self.unsafe_ptr() - memcpy(s_ptr + s_len, o_ptr, o_len + Int(has_null)) - self._buffer.size = sum_len + 1 - - @parameter - if not has_null: - s_ptr[sum_len] = 0 + self._buffer.reserve(self.byte_length() + o_len + 1) + if len(self._buffer) > 0: + _ = self._buffer.pop() + self._buffer.extend(other) + self._buffer.append(0) @always_inline fn __iadd__(mut self, other: StringSlice): @@ -1055,7 +1032,7 @@ struct String( Args: other: The string to append. """ - self._iadd[False](other.as_bytes()) + self._iadd(other.as_bytes()) @deprecated("Use `str.codepoints()` or `str.codepoint_slices()` instead.") fn __iter__(self) -> CodepointSliceIter[__origin_of(self)]: @@ -1366,11 +1343,7 @@ struct String( Returns: The pointer to the underlying memory. """ - var ptr = self.unsafe_ptr() - self._buffer.data = UnsafePointer[UInt8]() - self._buffer.size = 0 - self._buffer.capacity = 0 - return ptr + return self._buffer.steal_data() fn count(self, substr: StringSlice) -> Int: """Return the number of non-overlapping occurrences of substring diff --git a/mojo/stdlib/src/collections/string/string_slice.mojo b/mojo/stdlib/src/collections/string/string_slice.mojo index e1c6bf41ca..7ec78dc993 100644 --- a/mojo/stdlib/src/collections/string/string_slice.mojo +++ b/mojo/stdlib/src/collections/string/string_slice.mojo @@ -939,15 +939,11 @@ struct StringSlice[mut: Bool, //, origin: Origin[mut]]( The string concatenated `n` times. """ - var len_self = self.byte_length() - var count = len_self * n + 1 - var buf = String._buffer_type(capacity=count) - buf.size = count - var b_ptr = buf.unsafe_ptr() + var buffer = List[Byte](capacity=self.byte_length() * n + 1) for i in range(n): - memcpy(b_ptr + len_self * i, self.unsafe_ptr(), len_self) - b_ptr[count - 1] = 0 - return String(buf^) + buffer.extend(self.as_bytes()) + buffer.append(0) + return String(buffer=buffer) # ===------------------------------------------------------------------===# # Methods diff --git a/mojo/stdlib/src/memory/span.mojo b/mojo/stdlib/src/memory/span.mojo index 290c720f61..70a0482a52 100644 --- a/mojo/stdlib/src/memory/span.mojo +++ b/mojo/stdlib/src/memory/span.mojo @@ -166,7 +166,7 @@ struct Span[ list: The list to which the span refers. """ self._data = list.data.address_space_cast[address_space]() - self._len = list.size + self._len = list._len @always_inline @implicit diff --git a/mojo/stdlib/src/pathlib/path.mojo b/mojo/stdlib/src/pathlib/path.mojo index 38f8683dc5..ce5cff99fa 100644 --- a/mojo/stdlib/src/pathlib/path.mojo +++ b/mojo/stdlib/src/pathlib/path.mojo @@ -151,7 +151,7 @@ struct Path( Returns: A string representation of the path. """ - return String.write(self) + return self.path @always_inline fn __bool__(self) -> Bool: diff --git a/mojo/stdlib/test/collections/test_list_getitem_invalid_index.mojo b/mojo/stdlib/test/collections/test_list_getitem_invalid_index.mojo index 34ef22d26c..09bb5c0a45 100644 --- a/mojo/stdlib/test/collections/test_list_getitem_invalid_index.mojo +++ b/mojo/stdlib/test/collections/test_list_getitem_invalid_index.mojo @@ -17,7 +17,7 @@ # CHECK-FAIL-LABEL: test_fail_list_index fn main(): print("== test_fail_list_index") - # CHECK-FAIL: index: 4 is out of bounds for `List` of size: 3 + # CHECK-FAIL: index: 4 is out of bounds for `List` of length: 3 nums = List[Int](1, 2, 3) print(nums[4]) From 87b50fcbd0fe7a321b4fac191866d146bac732a9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20B=C3=B8rstad?= Date: Thu, 27 Feb 2025 16:38:34 +0100 Subject: [PATCH 480/509] [Pipelines] Remove dependency on scipy (#56734) MODULAR_ORIG_COMMIT_REV_ID: c39bb49bc0f7d0f5207646ac54bf86e325f62553 --- .../pipelines/nn/compute_log_probabilities.py | 33 ++++++++++++++++++- 1 file changed, 32 insertions(+), 1 deletion(-) diff --git a/src/max/pipelines/nn/compute_log_probabilities.py b/src/max/pipelines/nn/compute_log_probabilities.py index 2914c34582..150ae74479 100644 --- a/src/max/pipelines/nn/compute_log_probabilities.py +++ b/src/max/pipelines/nn/compute_log_probabilities.py @@ -17,7 +17,38 @@ import numpy as np from max.pipelines import LogProbabilities -from scipy.special import log_softmax # type: ignore + + +def log_softmax(x: np.ndarray, axis: int = -1) -> np.ndarray: + """Compute the logarithm of the softmax function. + + This implementation uses the identity log(softmax(x)) = x - log(sum(exp(x))) + with numerical stability improvements to prevent overflow/underflow. + + Args: + x: Input array + axis: Axis to compute values along + + Returns: + Array with same shape as x, representing log(softmax(x)) + """ + # Subtract max value for numerical stability (prevents exp overflow) + x_max = np.amax(x, axis=axis, keepdims=True) + + # Compute exp(x - x_max) which is now safe from overflow + shifted_x = x - x_max + exp_shifted = np.exp(shifted_x) + + # Suppress -inf warnings from log(0) + # This can happen when input contains extreme negative values (-inf), + # which become 0 after exp() operation + with np.errstate(divide="ignore"): + sum_exp = np.sum(exp_shifted, axis=axis, keepdims=True) + log_sum_exp = np.log(sum_exp) + + # Final result: x - x_max - log(sum(exp(x - x_max))) + # This is mathematically equivalent to log(softmax(x)) + return shifted_x - log_sum_exp def compute_log_probabilities( From 56813a471e25a2be23c0aaf13938b84399268214 Mon Sep 17 00:00:00 2001 From: Patrick Dougherty Date: Thu, 27 Feb 2025 09:44:48 -0600 Subject: [PATCH 481/509] [CI] Update scripts for repo changes MODULAR_ORIG_COMMIT_REV_ID: c83157382bee3bb3eae3aa90ddb4921903febfcf --- examples/mojo/lit.cfg.py | 71 +++++++++++++++++++ examples/mojo/run-examples.sh | 25 +++++++ .../standard_library_tests_and_examples.yml | 1 + mojo/pixi.toml | 2 +- 4 files changed, 98 insertions(+), 1 deletion(-) create mode 100644 examples/mojo/lit.cfg.py create mode 100755 examples/mojo/run-examples.sh diff --git a/examples/mojo/lit.cfg.py b/examples/mojo/lit.cfg.py new file mode 100644 index 0000000000..f4bc0fc233 --- /dev/null +++ b/examples/mojo/lit.cfg.py @@ -0,0 +1,71 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2024, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +import os +from pathlib import Path + +import lit.formats +import lit.llvm + +config.test_format = lit.formats.ShTest(True) + +# name: The name of this test suite. +config.name = "Mojo Public Examples" + +# suffixes: A list of file extensions to treat as test files. +# TODO: Enable notebooks +config.suffixes = [".mojo", ".🔥"] + +config.excludes = [ + # No RUN: directive, just bare examples + "hello_interop.mojo", + "matmul.mojo", +] + [path.name for path in os.scandir("../examples/mojo") if path.is_dir()] + +# Have the examples run in the build directory. +# The `run-examples.sh` script creates the build directory. +build_root = Path.cwd().parent.parent / "mojo" / "build" + +# Execute the examples inside this part of the build +# directory to avoid polluting the source tree. +config.test_exec_root = build_root / "examples" / "mojo" + +# test_source_root: The root path where tests are located. +config.test_source_root = Path(__file__).parent.resolve() + +# Substitute %mojo for just `mojo` itself. +config.substitutions.insert(0, ("%mojo", "mojo")) + +pre_built_packages_path = os.environ.get( + "MODULAR_MOJO_NIGHTLY_IMPORT_PATH", + Path(os.environ["MODULAR_HOME"]) + / "pkg" + / "packages.modular.com_nightly_mojo" + / "lib" + / "mojo", +) + +os.environ[ + "MODULAR_MOJO_NIGHTLY_IMPORT_PATH" +] = f"{build_root},{pre_built_packages_path}" + +# Pass through several environment variables +# to the underlying subprocesses that run the tests. +lit.llvm.initialize(lit_config, config) +lit.llvm.llvm_config.with_system_environment( + [ + "MODULAR_HOME", + "MODULAR_MOJO_NIGHTLY_IMPORT_PATH", + "PATH", + ] +) diff --git a/examples/mojo/run-examples.sh b/examples/mojo/run-examples.sh new file mode 100755 index 0000000000..323239e1a6 --- /dev/null +++ b/examples/mojo/run-examples.sh @@ -0,0 +1,25 @@ +#!/usr/bin/env bash +##===----------------------------------------------------------------------===## +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +##===----------------------------------------------------------------------===## + +set -euo pipefail + +SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) +REPO_ROOT="${SCRIPT_DIR}"/../../ +EXAMPLES_DIR="${REPO_ROOT}"/examples/mojo + +BUILD_DIR="${REPO_ROOT}"/mojo/build +mkdir -p "${BUILD_DIR}" + +# Run the examples using `lit`. +lit -sv "${EXAMPLES_DIR}" diff --git a/mojo/.github/workflows/standard_library_tests_and_examples.yml b/mojo/.github/workflows/standard_library_tests_and_examples.yml index 2f13005fb3..14a4f3dc45 100644 --- a/mojo/.github/workflows/standard_library_tests_and_examples.yml +++ b/mojo/.github/workflows/standard_library_tests_and_examples.yml @@ -62,6 +62,7 @@ jobs: - name: Run standard library tests and examples env: MOJO_ENABLE_ASSERTIONS_IN_TESTS: ${{ matrix.mojo-enable-assertions }} + working-directory: mojo run: | magic run --frozen tests magic run --frozen examples diff --git a/mojo/pixi.toml b/mojo/pixi.toml index 37772a1b5e..5a4c015d34 100644 --- a/mojo/pixi.toml +++ b/mojo/pixi.toml @@ -7,7 +7,7 @@ platforms = ["linux-64", "linux-aarch64", "osx-arm64"] [tasks] build = "./stdlib/scripts/build-stdlib.sh" tests = "./stdlib/scripts/run-tests.sh" -examples = "./examples/run-examples.sh" +examples = "../examples/mojo/run-examples.sh" benchmarks = { cmd = ["./stdlib/scripts/run-benchmarks.sh"], env = { MODULAR_MOJO_NIGHTLY_IMPORT_PATH = "$CONDA_PREFIX/lib/mojo" } } [dependencies] From 479c0eb1f1ee53769dec2003c439401ad48dbc8b Mon Sep 17 00:00:00 2001 From: Ewa Matejska Date: Thu, 27 Feb 2025 08:04:56 -0800 Subject: [PATCH 482/509] [CI][Docs] Updating readmes and .github for merge of max/mojo repos MODULAR_ORIG_COMMIT_REV_ID: 5d22e1cb3a7fece09567d5460ccd51c18b9d587f --- .github/CODEOWNERS | 18 +++++ .github/ISSUE_TEMPLATE/CODEOWNERS | 5 -- .github/ISSUE_TEMPLATE/magic_issue.yaml | 61 +++++++++++++++++ .github/ISSUE_TEMPLATE/max_bug_report.yaml | 2 +- .../ISSUE_TEMPLATE/max_builds_bug_report.yaml | 2 +- .../ISSUE_TEMPLATE/max_feature_request.yaml | 2 +- .github/ISSUE_TEMPLATE/mojo_bug_report.yaml | 61 +++++++++++++++++ .../ISSUE_TEMPLATE/mojo_feature_request.yaml | 63 +++++++++++++++++ .github/PULL_REQUEST_TEMPLATE.md | 10 +++ .github/workflows/check_pr_target.yml | 28 ++++++++ .github/workflows/check_pr_title.yml | 53 +++++++++++++++ .../standard_library_tests_and_examples.yml | 68 +++++++++++++++++++ .github/workflows/test_pre_commit.yml | 52 ++++++++++++++ README.md | 8 ++- examples/README.md | 5 ++ examples/mojo/README.md | 2 +- examples/mojo/check_mod.py | 2 +- mojo/CONTRIBUTING.md | 14 ++-- mojo/README.md | 18 ++--- mojo/proposals/byte-as-uint8.md | 2 +- mojo/proposals/inferred-parameters.md | 2 +- mojo/proposals/lifetimes-keyword-renaming.md | 2 +- mojo/proposals/ref-convention.md | 4 +- mojo/proposals/remove-let-decls.md | 10 +-- mojo/stdlib/README.md | 2 +- mojo/stdlib/docs/development.md | 4 +- mojo/stdlib/src/builtin/simd.mojo | 2 +- mojo/stdlib/src/collections/linked_list.mojo | 2 +- mojo/stdlib/test/builtin/test_issue_1004.mojo | 2 +- mojo/stdlib/test/builtin/test_issue_1505.mojo | 2 +- mojo/stdlib/test/builtin/test_simd.mojo | 4 +- mojo/stdlib/test/collections/test_list.mojo | 2 +- 32 files changed, 466 insertions(+), 48 deletions(-) create mode 100644 .github/CODEOWNERS delete mode 100644 .github/ISSUE_TEMPLATE/CODEOWNERS create mode 100644 .github/ISSUE_TEMPLATE/magic_issue.yaml create mode 100644 .github/ISSUE_TEMPLATE/mojo_bug_report.yaml create mode 100644 .github/ISSUE_TEMPLATE/mojo_feature_request.yaml create mode 100644 .github/PULL_REQUEST_TEMPLATE.md create mode 100644 .github/workflows/check_pr_target.yml create mode 100644 .github/workflows/check_pr_title.yml create mode 100644 .github/workflows/standard_library_tests_and_examples.yml create mode 100644 .github/workflows/test_pre_commit.yml diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS new file mode 100644 index 0000000000..97ce248c98 --- /dev/null +++ b/.github/CODEOWNERS @@ -0,0 +1,18 @@ +# Codeowners for MAX repo. +# Every line is a file pattern that is followed by one or more code owners. +# Order is important; the last matching pattern takes the most precedence. + +# Standard Library Sources +/mojo/stdlib/ @modular/stdlib + +# Documentation +/mojo/docs/ @modular/mojo-docs + +/mojo/docs/changelog.md @modular/stdlib + +/mojo/stdlib/docs/ @modular/mojo-docs @modular/stdlib + +# Examples +/examples/mojo/ @jackos + +* @modularml/max-code-reviewers diff --git a/.github/ISSUE_TEMPLATE/CODEOWNERS b/.github/ISSUE_TEMPLATE/CODEOWNERS deleted file mode 100644 index 303c1ec52f..0000000000 --- a/.github/ISSUE_TEMPLATE/CODEOWNERS +++ /dev/null @@ -1,5 +0,0 @@ -# Codeowners for MAX repo. -# Every line is a file pattern that is followed by one or more code owners. -# Order is important; the last matching pattern takes the most precedence. - -* @modularml/max-code-reviewers diff --git a/.github/ISSUE_TEMPLATE/magic_issue.yaml b/.github/ISSUE_TEMPLATE/magic_issue.yaml new file mode 100644 index 0000000000..0f5ce15b62 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/magic_issue.yaml @@ -0,0 +1,61 @@ +##===----------------------------------------------------------------------===## +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +##===----------------------------------------------------------------------===## + +name: Magic issue report +description: Create an issue to help us improve Magic +title: "[Magic]" +labels: + - "magic" +body: + - type: markdown + attributes: + value: | + Thanks for taking the time to fill out a bug report! + + Please provide a descriptive title above and fill in the following fields. + + - type: textarea + id: Description + attributes: + label: Bug description + description: Describe the bug you encountered and what you expected to happen. + value: | + ### Actual behavior + + + ### Expected behavior + + validations: + required: true + + - type: textarea + id: Steps + attributes: + label: Steps to reproduce + description: Provide the specific steps to reproduce the issue. + value: | + - Provide a relevant code snippet or a link to the code that did not work as expected. + - If applicable, add screenshots to help explain the problem. + - If using the Playground, name the pre-existing notebook that failed and the steps that led to failure. + - Include anything else that might help us debug the issue. + validations: + required: true + + - type: textarea + id: Context + attributes: + label: System information + description: What version of Mojo are you using? + value: | + - Provide the system information by running `magic info`. + - Provide version information for MAX (includes Mojo) by pasting the output of `magic list max`. diff --git a/.github/ISSUE_TEMPLATE/max_bug_report.yaml b/.github/ISSUE_TEMPLATE/max_bug_report.yaml index 573a7069e2..097602640a 100644 --- a/.github/ISSUE_TEMPLATE/max_bug_report.yaml +++ b/.github/ISSUE_TEMPLATE/max_bug_report.yaml @@ -15,7 +15,7 @@ name: MAX bug report description: Create a bug report to help us improve MAX title: "[BUG]: " labels: - - bug + - "bug,max" body: - type: markdown attributes: diff --git a/.github/ISSUE_TEMPLATE/max_builds_bug_report.yaml b/.github/ISSUE_TEMPLATE/max_builds_bug_report.yaml index 0c43f15bac..65faa039e5 100644 --- a/.github/ISSUE_TEMPLATE/max_builds_bug_report.yaml +++ b/.github/ISSUE_TEMPLATE/max_builds_bug_report.yaml @@ -15,7 +15,7 @@ name: MAX Builds model bug report description: Report a bug with a model title: "[BUG]: " labels: - - bug + - max-builds body: - type: markdown attributes: diff --git a/.github/ISSUE_TEMPLATE/max_feature_request.yaml b/.github/ISSUE_TEMPLATE/max_feature_request.yaml index 57e6716fb8..b9a61bd61a 100644 --- a/.github/ISSUE_TEMPLATE/max_feature_request.yaml +++ b/.github/ISSUE_TEMPLATE/max_feature_request.yaml @@ -15,7 +15,7 @@ name: MAX feature request description: Suggest an enhancement for MAX title: "[Feature Request]" labels: - - enhancement + - "enhancement,max" body: - type: markdown attributes: diff --git a/.github/ISSUE_TEMPLATE/mojo_bug_report.yaml b/.github/ISSUE_TEMPLATE/mojo_bug_report.yaml new file mode 100644 index 0000000000..57b19d978c --- /dev/null +++ b/.github/ISSUE_TEMPLATE/mojo_bug_report.yaml @@ -0,0 +1,61 @@ +##===----------------------------------------------------------------------===## +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +##===----------------------------------------------------------------------===## + +name: Mojo bug report +description: Create a bug report to help us improve Mojo +title: "[BUG]" +labels: + - "bug,mojo" +body: + - type: markdown + attributes: + value: | + Thanks for taking the time to fill out a bug report! + + Please provide a descriptive title above and fill in the following fields. + + - type: textarea + id: Description + attributes: + label: Bug description + description: Describe the bug you encountered and what you expected to happen. + value: | + ### Actual behavior + + + ### Expected behavior + + validations: + required: true + + - type: textarea + id: Steps + attributes: + label: Steps to reproduce + description: Provide the specific steps to reproduce the issue. + value: | + - Provide a relevant code snippet or a link to the code that did not work as expected. + - If applicable, add screenshots to help explain the problem. + - If using the Playground, name the pre-existing notebook that failed and the steps that led to failure. + - Include anything else that might help us debug the issue. + validations: + required: true + + - type: textarea + id: Context + attributes: + label: System information + description: What version of Mojo are you using? + value: | + - Provide the system information by running `magic info`. + - Provide version information for MAX (includes Mojo) by pasting the output of `magic list max`. diff --git a/.github/ISSUE_TEMPLATE/mojo_feature_request.yaml b/.github/ISSUE_TEMPLATE/mojo_feature_request.yaml new file mode 100644 index 0000000000..a5ddc32a58 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/mojo_feature_request.yaml @@ -0,0 +1,63 @@ +##===----------------------------------------------------------------------===## +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +##===----------------------------------------------------------------------===## + +name: Mojo feature request +description: Suggest an enhancement for Mojo +title: "[Feature Request]" +labels: + - "enhancement,mojo" +body: + - type: markdown + attributes: + value: | + Thanks for taking the time to suggest a Mojo enhancement! + + Please enter a concise title above and fill out the following fields. + + - type: checkboxes + id: Roadmap + attributes: + label: Review Mojo's priorities + description: Please take a look at our roadmap before you file a new feature request. + options: + - label: I have read the [roadmap and priorities](https://docs.modular.com/mojo/roadmap.html#overall-priorities) and I believe this request falls within the priorities. + required: true + + - type: markdown + attributes: + value: | + If the request is out of the published roadmap and priorities, please start a [discussion](https://forum.modular.com/) in the Modular Forum to get feedback from the team. + + - type: textarea + id: Request + attributes: + label: What is your request? + description: Describe how you'd like us to improve Mojo. + validations: + required: true + + - type: textarea + id: Motivation + attributes: + label: What is your motivation for this change? + description: Describe the problem that your feature seeks to address (what is the value to the product/user?). + validations: + required: true + + - type: textarea + id: Description + attributes: + label: Any other details? + description: Perhaps some minimum functional attributes the implementation should include, or other context about your feature. + validations: + required: false diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 0000000000..2cd5f0bf30 --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,10 @@ + diff --git a/.github/workflows/check_pr_target.yml b/.github/workflows/check_pr_target.yml new file mode 100644 index 0000000000..4e333baf2a --- /dev/null +++ b/.github/workflows/check_pr_target.yml @@ -0,0 +1,28 @@ +name: Check PR target branch + +on: + pull_request: + types: [opened, edited, synchronize, reopened, ready_for_review] + +permissions: + contents: read + pull-requests: read + +jobs: + check-pr-target: + name: Check PR target branch + + runs-on: ubuntu-latest + timeout-minutes: 10 + + defaults: + run: + shell: bash + + steps: + - name: Fail if not targeting main branch + if: ${{ github.base_ref != 'main' }} + run: | + echo "PRs must be targeted to merge to the main branch!" + echo "PR is currently targeting: \"${{ github.base_ref }}\"" + exit 1 diff --git a/.github/workflows/check_pr_title.yml b/.github/workflows/check_pr_title.yml new file mode 100644 index 0000000000..9b2f320a15 --- /dev/null +++ b/.github/workflows/check_pr_title.yml @@ -0,0 +1,53 @@ +name: Check PR title + +on: + pull_request: + # By default, a workflow only runs when a pull_request's activity type is opened, synchronize, or reopened. We + # explicitly override here so that PR titles are re-linted when the PR text content is edited. + # + # Possible values: https://help.github.com/en/actions/reference/events-that-trigger-workflows#pull-request-event-pull_request + types: [opened, edited, reopened, synchronize, ready_for_review] + +jobs: + check-pr-title: + name: Check PR title format + + permissions: + pull-requests: write + + runs-on: ubuntu-latest + timeout-minutes: 5 + + steps: + - uses: morrisoncole/pr-lint-action@51f3cfabaf5d46f94e54524214e45685f0401b2a + if: github.actor != 'dependabot[bot]' + with: + title-regex: "^(Revert \")?(\\[\\S.*\\]\\s?)+\\s+[a-zA-Z`].*" + repo-token: "${{ secrets.GITHUB_TOKEN }}" + on-failed-regex-fail-action: true + on-failed-regex-create-review: true + on-failed-regex-request-changes: true + on-failed-regex-comment: + "The PR title does not conform to the '[\\] Title' format. + Please update the PR title. + \n\n + Typical [\\] values include: + \n\n + * `[stdlib]` — indicates a change to the Mojo standard library code\n + * `[docs]` — indicates a change to the documentation + \n\n + It's okay to include multiple labels on a PR that + affect multiple areas of work. + \n\n + Thank you for contributing to Mojo!🔥 + \n\n + + You can also use a tool like www.regex101.com to see why your PR + title fails to conform. Use + ``` + %regex% + ``` + as the regex to test and ```${{ github.event.pull_request.title }}``` + as the test string." + on-succeeded-regex-dismiss-review-comment: + "All good now, thanks!🫸🫷" diff --git a/.github/workflows/standard_library_tests_and_examples.yml b/.github/workflows/standard_library_tests_and_examples.yml new file mode 100644 index 0000000000..980e1e8678 --- /dev/null +++ b/.github/workflows/standard_library_tests_and_examples.yml @@ -0,0 +1,68 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2024, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +name: Test stdlib and examples +on: + pull_request: + types: [opened, synchronize, reopened, ready_for_review] + workflow_dispatch: + +permissions: + contents: read + pull-requests: read + +jobs: + test-examples: + name: with ${{ matrix.os }} and assertions=${{ matrix.mojo-enable-assertions }} + strategy: + fail-fast: false + matrix: + os: ["ubuntu-latest", "macos-14"] + mojo-enable-assertions: [0, 1] + + runs-on: ${{ matrix.os }} + timeout-minutes: 30 + + defaults: + run: + shell: bash + env: + DEBIAN_FRONTEND: noninteractive + + steps: + - name: Checkout repo + uses: actions/checkout@v4 + + - name: Download Magic CLI + run: | + curl -ssL https://magic.modular.com/cfba4c92-2390-4b86-93de-04b2f47114d5 | bash + # Add magic to PATH + echo "$HOME/.modular/bin" >> $GITHUB_PATH + + - name: Install build tools (Linux) + if: ${{ matrix.os == 'ubuntu-latest' }} + run: | + ./mojo/stdlib/scripts/install-build-tools-linux.sh + + - name: Install build tools (macOS) + if: ${{ matrix.os == 'macos-14' }} + run: | + ./mojo/stdlib/scripts/install-build-tools-macos.sh + + - name: Run standard library tests and examples + env: + MOJO_ENABLE_ASSERTIONS_IN_TESTS: ${{ matrix.mojo-enable-assertions }} + working-directory: mojo + run: | + magic run --frozen tests + magic run --frozen examples diff --git a/.github/workflows/test_pre_commit.yml b/.github/workflows/test_pre_commit.yml new file mode 100644 index 0000000000..99a2ddf73d --- /dev/null +++ b/.github/workflows/test_pre_commit.yml @@ -0,0 +1,52 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2024, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +name: Run pre-commit +on: + pull_request: + types: [opened, synchronize, reopened, ready_for_review] + workflow_dispatch: + +permissions: + contents: read + pull-requests: read + +jobs: + lint: + runs-on: "ubuntu-latest" + timeout-minutes: 30 + + defaults: + run: + shell: bash + env: + DEBIAN_FRONTEND: noninteractive + + steps: + - name: Checkout repo + uses: actions/checkout@v4 + + - name: Download Magic CLI + run: | + curl -ssL https://magic.modular.com/cfba4c92-2390-4b86-93de-04b2f47114d5 | bash + # Add magic to PATH + echo "$HOME/.modular/bin" >> $GITHUB_PATH + + - name: Install pre-commit + run: | + pip install pre-commit + pre-commit install + + - name: Run pre-commit + run: magic run pre-commit run --all-files + diff --git a/README.md b/README.md index 92d8013410..24507ed98d 100644 --- a/README.md +++ b/README.md @@ -85,9 +85,13 @@ The MAX container image is available in the ## Contributing Thanks for your interest in contributing to this repository! -We are not accepting pull requests yet. -However, we welcome your bug reports. If you have a bug, please file an issue +We accept contributions to the [Mojo standard library](./mojo). +Please see the [Contribution Guide](mojo/CONTRIBUTING.md) for instructions. + +We are not accepting contributions for other parts of the repository. + +We also welcome your bug reports. If you have a bug, please file an issue [here](https://github.com/modular/max/issues/new/choose). If you need support, the [Discord](https://discord.gg/modular) diff --git a/examples/README.md b/examples/README.md index 0722ca6ec4..b4f2e87907 100644 --- a/examples/README.md +++ b/examples/README.md @@ -3,6 +3,11 @@ These examples demonstrate the power and flexibility of [MAX](https://docs.modular.com/max/). They include: +## [Mojo code examples](mojo/) + +A collection of sample programs written in the +[Mojo](https://docs.modular.com/mojo/manual/) programming language. + ## [Custom GPU and CPU operations in Mojo](custom_ops/) The [MAX Graph API](https://docs.modular.com/max/graph/) provides a powerful diff --git a/examples/mojo/README.md b/examples/mojo/README.md index 6c651cd92d..f40ecbc1ca 100644 --- a/examples/mojo/README.md +++ b/examples/mojo/README.md @@ -16,7 +16,7 @@ After you have set up a Mojo programming environment, you can then use `git` to clone this repository of Mojo samples using the command below: ```bash -git clone https://github.com/modular/mojo.git +git clone https://github.com/modular/max.git ``` ## Running diff --git a/examples/mojo/check_mod.py b/examples/mojo/check_mod.py index e2f2719906..36049a4fd7 100644 --- a/examples/mojo/check_mod.py +++ b/examples/mojo/check_mod.py @@ -18,7 +18,7 @@ FIX = """ ------------------------------------------------------------------------- fix following the steps here: - https://github.com/modular/mojo/issues/1085#issuecomment-1771403719 + https://github.com/modular/max/issues/1085#issuecomment-1771403719 ------------------------------------------------------------------------- """ diff --git a/mojo/CONTRIBUTING.md b/mojo/CONTRIBUTING.md index 4c39f7729a..14e6ee1a9a 100644 --- a/mojo/CONTRIBUTING.md +++ b/mojo/CONTRIBUTING.md @@ -210,7 +210,7 @@ which represents the most recent nightly build. Before you start your first pull request, please complete this checklist: - Read this entire contributor guide. -- Read the [Code of Conduct](./CODE_OF_CONDUCT.md). +- Read the [Code of Conduct](../CODE_OF_CONDUCT.md). #### Evaluate and get buy-in on the change @@ -222,7 +222,7 @@ for more details. #### Fork and clone the repo -Go to the [Mojo repo](https://github.com/modular/mojo) and click the fork +Go to the [MAX repo](https://github.com/modular/max) and click the fork button: ![Create Fork](stdlib/docs/images/create-fork.png) @@ -230,14 +230,14 @@ button: Clone your forked repo locally with the command: ```bash -git clone git@github.com:[your-username]/mojo.git -cd mojo +git clone git@github.com:[your-username]/max.git +cd max/mojo ``` Add the upstream remote and fetch it: ```bash -git remote add upstream git@github.com:modular/mojo.git +git remote add upstream git@github.com:modular/max.git git fetch upstream ``` @@ -311,10 +311,10 @@ You'll see a link to create a PR: ```plaintext remote: Create a pull request for 'my-fix-pr' on GitHub by visiting: -remote: https://github.com/[your-username]/mojo/pull/new/my-fix-pr +remote: https://github.com/[your-username]/max/pull/new/my-fix-pr ``` -It should automatically set the base branch to the upstream `modular/mojo/main`, +It should automatically set the base branch to the upstream `modular/max/main`, but if it doesn't, you can set it manually. Now fill out the details: diff --git a/mojo/README.md b/mojo/README.md index 2a4878c789..8e4682b38b 100644 --- a/mojo/README.md +++ b/mojo/README.md @@ -26,11 +26,11 @@ This repo includes source code for: This repo has two primary branches: -- The [`stable`](https://github.com/modular/mojo/tree/stable) branch, which +- The [`stable`](https://github.com/modular/max/tree/stable) branch, which is in sync with the last stable released version of Mojo. Use the examples here if you’re using a [release build of Mojo](#latest-released). -- The [`main`](https://github.com/modular/mojo/tree/main) branch, which +- The [`main`](https://github.com/modular/max/tree/main) branch, which is in sync with the Mojo nightly build and subject to breakage. Use this branch for [contributions](./CONTRIBUTING.md), or if you're using the latest [nightly build of Mojo](#latest-nightly). @@ -79,7 +79,7 @@ When you clone this repo, you'll be on the `main` branch by default, which includes code matching the latest nightly build: ```bash -git clone https://github.com/modular/mojo.git +git clone https://github.com/modular/max.git ``` If you want to instead see the source from the most recent stable @@ -88,13 +88,13 @@ release, then you can switch to the `stable` branch. ## Contributing When you want to report issues or request features, [please create a GitHub -issue here](https://github.com/modular/mojo/issues). +issue here](https://github.com/modular/max/issues). See [here](./CONTRIBUTING.md) for guidelines on filing good bugs. -We welcome contributions to this repo on the -[`main`](https://github.com/modular/mojo/tree/main) +We welcome contributions to this repo for mojo on the +[`main`](https://github.com/modular/max/tree/main) branch. If you’d like to contribute to Mojo, please first read our [Contributor -Guide](https://github.com/modular/mojo/blob/main/CONTRIBUTING.md). +Guide](https://github.com/modular/max/blob/main/mojo/CONTRIBUTING.md). For more general questions or to chat with other Mojo developers, check out our [Discord](https://discord.gg/modular). @@ -108,6 +108,6 @@ MAX and Mojo usage and distribution are licensed under the ## Thanks to our contributors - - + + diff --git a/mojo/proposals/byte-as-uint8.md b/mojo/proposals/byte-as-uint8.md index 9881574ccd..03d4f77189 100644 --- a/mojo/proposals/byte-as-uint8.md +++ b/mojo/proposals/byte-as-uint8.md @@ -40,5 +40,5 @@ and 78 results for `DTypePointer[DType.int8]`. Replacing `DTypePointer[DType.int8]` with `DTypePointer[DType.uint8]` and `Pointer[Int8]` with `Pointer[UInt8]` on case by case bases is a substantial refactoring effort, but it will prevent a certain class of logical bugs (see -). As it is a breaking change in +). As it is a breaking change in sense of API design, it is sensible to do the refactoring as soon as possible. diff --git a/mojo/proposals/inferred-parameters.md b/mojo/proposals/inferred-parameters.md index f8eb6bf5c1..0e46dc0c1a 100644 --- a/mojo/proposals/inferred-parameters.md +++ b/mojo/proposals/inferred-parameters.md @@ -49,7 +49,7 @@ scalar_param[DType.int32, Int32()]() # 'dt' parameter is required This has been requested multiple times in various forms, especially given the new autoparameterization feature. The current tracking feature request: -- +- ## Proposal diff --git a/mojo/proposals/lifetimes-keyword-renaming.md b/mojo/proposals/lifetimes-keyword-renaming.md index 3b783202e7..b39636e616 100644 --- a/mojo/proposals/lifetimes-keyword-renaming.md +++ b/mojo/proposals/lifetimes-keyword-renaming.md @@ -2,7 +2,7 @@ Date: October 2024 -Previous revision: [[June 2023](https://github.com/modular/mojo/blob/f8d7cb8ba4c21ec3fbc87e21609b3fd56cab695f/proposals/lifetimes-keyword-renaming.md)] +Previous revision: [[June 2023](https://github.com/modular/max/blob/f8d7cb8ba4c21ec3fbc87e21609b3fd56cab695f/proposals/lifetimes-keyword-renaming.md)] The design of the Mojo references subsystem is starting to come together. To finalize the major points, it helps to come back and re-evaluate several early diff --git a/mojo/proposals/ref-convention.md b/mojo/proposals/ref-convention.md index 53b608e51e..f3c86e107c 100644 --- a/mojo/proposals/ref-convention.md +++ b/mojo/proposals/ref-convention.md @@ -12,7 +12,7 @@ Mojo’s safe references have evolved and iterated a lot. From the initial compiler re-plumbing that made memory-only types possible, to threading lifetimes through everything with the introduction of `!lit.ref` to the development of a “user-space” Reference type, to the recent discussions about -[adding automatic dereference to Reference](https://github.com/modular/mojo/discussions/2594), +[adding automatic dereference to Reference](https://github.com/modular/max/discussions/2594), we’ve been iteratively improving the model with a goal of ending up with something powerful and explainable. @@ -42,7 +42,7 @@ Along the way, we’ve had a number of challenges to address: to `Reference`. It would be awesome to clarify this. 5. We still need to - [reconsider which keywords](https://github.com/modular/mojo/blob/main/proposals/lifetimes-keyword-renaming.md) + [reconsider which keywords](https://github.com/modular/max/blob/main/mojo/proposals/lifetimes-keyword-renaming.md) to use for argument conventions. The `inout` keyword, for example, is problematic because it works with types that are not movable or copyable. The callee doesn’t actually move things in and out, it takes a mutable reference. diff --git a/mojo/proposals/remove-let-decls.md b/mojo/proposals/remove-let-decls.md index 1d1f8a3692..2fda1bc30b 100644 --- a/mojo/proposals/remove-let-decls.md +++ b/mojo/proposals/remove-let-decls.md @@ -1,6 +1,6 @@ # Simplifying Mojo🔥 - let's get rid of `let` -Chris Lattner, Dec 5, 2023, Status: **Accepted**, [discussion thread](https://github.com/modular/mojo/discussions/1456#discussioncomment-8358722) +Chris Lattner, Dec 5, 2023, Status: **Accepted**, [discussion thread](https://github.com/modular/max/discussions/1456#discussioncomment-8358722) Mojo is still a new language, and is rapidly evolving. We’re learning a lot from other languages, but Mojo poses its own set of tradeoffs that indicate a @@ -10,7 +10,7 @@ One of the early decisions made in Mojo's development is that it adopts the `let` and `var` design point that Swift uses. This whitepaper argues that we should switch to a simpler model by jettisoning `let` and just retaining `var` (and implicit Python-style variable declarations in `def`). This has also been -[suggested by the community](https://github.com/modular/mojo/issues/1205). +[suggested by the community](https://github.com/modular/max/issues/1205). Note that immutability and value semantics remain an important part of the Mojo design, this is just about removing "named immutable variables". Immutable @@ -31,7 +31,7 @@ variables aren't a core programming concept, and not something required to achieve Mojo's goals. 2. The naming of `let` caused a lot of early [heat and -debate](https://github.com/modular/mojo/discussions/120). Other programming +debate](https://github.com/modular/max/discussions/120). Other programming languages have a wide range of design points (e.g. `const` in C/C++ and Javascript) and there is a divergence of naming for all these things: `let`, `val`, `const`, etc, etc. @@ -43,7 +43,7 @@ three concepts going around: `alias`, `let`, and `var`. Most of the uses of 4. Both Swift and Rust encourage immutable values - Swift (and currently Mojo) warn about unneeded mutability, Rust makes mutability more verbose (`let mut`), and some propose that Mojo [make mutability more -verbose](https://github.com/modular/mojo/issues/451). This cuts very hard +verbose](https://github.com/modular/max/issues/451). This cuts very hard against a lot of the design center of Python, which doesn’t even have this concept at all: it would be weird to make it the default, but if we don’t, then why bother having it? @@ -112,7 +112,7 @@ This would eliminate a bunch of complexity in the compiler as well: like: “`let x: Int; x = 1; use(x); x = 2; use(x)`” even though the original lifetime of the first “`x=1`” naturally ended and “`x`” is uninitialized before being assigned to. This has always been a design smell, and it - [doesn’t work right](https://github.com/modular/mojo/issues/1414). + [doesn’t work right](https://github.com/modular/max/issues/1414). This proposal will not affect runtime performance at all as far as we know. diff --git a/mojo/stdlib/README.md b/mojo/stdlib/README.md index d64144c02d..8a9891f02d 100644 --- a/mojo/stdlib/README.md +++ b/mojo/stdlib/README.md @@ -54,6 +54,6 @@ See the license file in the repository for more details. ## Support For any inquiries, bug reports, or feature requests, please [open an -issue](https://github.com/modular/mojo/issues) on the GitHub repository. See +issue](https://github.com/modular/max/issues) on the GitHub repository. See the [Mojo contributor guide](../CONTRIBUTING.md) for guidelines on filing good bugs. diff --git a/mojo/stdlib/docs/development.md b/mojo/stdlib/docs/development.md index 37cfb5182e..a306c57515 100644 --- a/mojo/stdlib/docs/development.md +++ b/mojo/stdlib/docs/development.md @@ -107,7 +107,7 @@ You can do the same for a directory with All the tests should pass on the `main` branch with the nightly Mojo compiler. If you've pulled the latest changes and they're still failing please [open a GitHub -issue](https://github.com/modular/mojo/issues/new?assignees=&labels=bug%2Cmojo&projects=&template=mojo_bug_report.yaml&title=%5BBUG%5D). +issue](https://github.com/modular/max/issues). ### Running a subset of the Standard Library Unit Tests @@ -135,7 +135,7 @@ disabled, you can set the environment variable `MOJO_ENABLE_ASSERTIONS_IN_TESTS=0`. If you run into any issues when running the tests, -[please file an issue](https://github.com/modular/mojo/issues) and we’ll take +[please file an issue](https://github.com/modular/max/issues) and we’ll take a look. ## Formatting changes diff --git a/mojo/stdlib/src/builtin/simd.mojo b/mojo/stdlib/src/builtin/simd.mojo index 018d8f5f25..3a39d1c5ed 100644 --- a/mojo/stdlib/src/builtin/simd.mojo +++ b/mojo/stdlib/src/builtin/simd.mojo @@ -2256,7 +2256,7 @@ struct SIMD[type: DType, size: Int]( # Not an overload of shuffle because there is ambiguity # with fn shuffle[*mask: Int](self, other: Self) -> Self: - # TODO: move to the utils directory - see https://github.com/modular/mojo/issues/3477 + # TODO: move to the utils directory - see https://github.com/modular/max/issues/3477 @always_inline fn _dynamic_shuffle[ mask_size: Int, // diff --git a/mojo/stdlib/src/collections/linked_list.mojo b/mojo/stdlib/src/collections/linked_list.mojo index 55c49adc18..6c145d10fa 100644 --- a/mojo/stdlib/src/collections/linked_list.mojo +++ b/mojo/stdlib/src/collections/linked_list.mojo @@ -203,7 +203,7 @@ struct LinkedList[ self._tail = node # Do not destroy the elements when their backing storage goes away. - # FIXME(https://github.com/modular/mojo/issues/3969) this is leaking! + # FIXME(https://github.com/modular/max/issues/3969) this is leaking! __disable_del elements self._size = length diff --git a/mojo/stdlib/test/builtin/test_issue_1004.mojo b/mojo/stdlib/test/builtin/test_issue_1004.mojo index e80c944316..391205de72 100644 --- a/mojo/stdlib/test/builtin/test_issue_1004.mojo +++ b/mojo/stdlib/test/builtin/test_issue_1004.mojo @@ -11,7 +11,7 @@ # limitations under the License. # ===----------------------------------------------------------------------=== # # RUN: %mojo %s -# Test for https://github.com/modular/mojo/issues/1004 +# Test for https://github.com/modular/max/issues/1004 from testing import assert_equal diff --git a/mojo/stdlib/test/builtin/test_issue_1505.mojo b/mojo/stdlib/test/builtin/test_issue_1505.mojo index 712c1d9c0c..43eb2b764d 100644 --- a/mojo/stdlib/test/builtin/test_issue_1505.mojo +++ b/mojo/stdlib/test/builtin/test_issue_1505.mojo @@ -11,7 +11,7 @@ # limitations under the License. # ===----------------------------------------------------------------------=== # # RUN: %mojo %s -# Test for https://github.com/modular/mojo/issues/1505 +# Test for https://github.com/modular/max/issues/1505 from random import random_ui64 diff --git a/mojo/stdlib/test/builtin/test_simd.mojo b/mojo/stdlib/test/builtin/test_simd.mojo index 184627c5b7..e48370e2d1 100644 --- a/mojo/stdlib/test/builtin/test_simd.mojo +++ b/mojo/stdlib/test/builtin/test_simd.mojo @@ -119,7 +119,7 @@ def test_convert_simd_to_string(): var c: SIMD[DType.index, 8] = 7 assert_equal(String(c), "[7, 7, 7, 7, 7, 7, 7, 7]") - # TODO: uncomment when https://github.com/modular/mojo/issues/2353 is fixed + # TODO: uncomment when https://github.com/modular/max/issues/2353 is fixed # assert_equal(String(UInt32(-1)), "4294967295") assert_equal(String(UInt64(-1)), "18446744073709551615") @@ -129,7 +129,7 @@ def test_convert_simd_to_string(): assert_equal(String(UInt64(16646288086500911323)), "16646288086500911323") - # https://github.com/modular/mojo/issues/556 + # https://github.com/modular/max/issues/556 assert_equal( String( SIMD[DType.uint64, 4]( diff --git a/mojo/stdlib/test/collections/test_list.mojo b/mojo/stdlib/test/collections/test_list.mojo index b7c3cecf7a..a7a6e30f0f 100644 --- a/mojo/stdlib/test/collections/test_list.mojo +++ b/mojo/stdlib/test/collections/test_list.mojo @@ -574,7 +574,7 @@ def test_no_extra_copies_with_sugared_set_by_field(): # Ensure correct behavior of __copyinit__ # as reported in GH issue 27875 internally and -# https://github.com/modular/mojo/issues/1493 +# https://github.com/modular/max/issues/1493 def test_list_copy_constructor(): var vec = List[Int](capacity=1) var vec_copy = vec From d35951e21b5b17ac6c8a16b6b8b00598a8a4a291 Mon Sep 17 00:00:00 2001 From: Dan Moldovan <26628547+mdanatg@users.noreply.github.com> Date: Thu, 27 Feb 2025 11:12:34 -0500 Subject: [PATCH 483/509] Remove stale readme files. These are largely superseded by https://github.com/modular/max/tree/main/src/max/README.md MODULAR_ORIG_COMMIT_REV_ID: a63ce6c37bb4971ed67b17033d29b4b172eda196 --- src/max/pipelines/README.md | 119 ---------------- .../pipelines/architectures/mistral/README.md | 129 ----------------- .../pipelines/architectures/pixtral/README.md | 134 ------------------ .../pipelines/architectures/qwen2/README.md | 120 ---------------- .../pipelines/architectures/replit/README.md | 119 ---------------- 5 files changed, 621 deletions(-) delete mode 100644 src/max/pipelines/README.md delete mode 100644 src/max/pipelines/architectures/mistral/README.md delete mode 100644 src/max/pipelines/architectures/pixtral/README.md delete mode 100644 src/max/pipelines/architectures/qwen2/README.md delete mode 100644 src/max/pipelines/architectures/replit/README.md diff --git a/src/max/pipelines/README.md b/src/max/pipelines/README.md deleted file mode 100644 index 160952f64b..0000000000 --- a/src/max/pipelines/README.md +++ /dev/null @@ -1,119 +0,0 @@ -# MAX Pipelines - -These are end-to-end pipelines that demonstrate the power of -[MAX](https://docs.modular.com/max/) for accelerating common AI workloads, and -more. Each of the supported pipelines can be served via an OpenAI-compatible -endpoint. - -MAX can also serve most PyTorch-based large language models that are -present on Hugging Face, although not at the same performance as native MAX -Graph versions. - -## Pipelines - -Highly optimized MAX Graph implementations exist for several core model -architectures. These include: - -- [Llama 3.1](llama3): A text completion pipeline using the Llama 3.1 model, -implemented using the MAX Graph API. This pipeline contains everything -needed to run a self-hosted large language model in the `LlamaForCausalLM` -family with state-of-the-art serving throughput. -- [Mistral](architectures/mistral): Support for the `MistralForCausalLM` family -of text completion models, by default using the Mistral NeMo 12B model. This pipeline -has been tuned for performance using the MAX Graph API. -- [Replit Code](architectures/replit): Code generation via the -Replit Code V1.5 3B model, implemented using the MAX Graph API. - -Instructions for how to run each pipeline can be found in their respective -subdirectories, along with all configuration parameters. A shared driver is -used to execute the pipelines. - -## Usage - -The easiest way to try out any of the pipelines is with our Magic command-line -tool. - -1. Install Magic on macOS and Ubuntu with this command: - - ```shell - curl -ssL https://magic.modular.com | bash - ``` - - Then run the source command that's printed in your terminal. - - To see the available commands, you can run `magic --help`. - [Learn more about Magic here](https://docs.modular.com/magic). - -2. Clone the MAX examples repository: - - If you don't already have a local clone of this repository, create one via: - - ```shell - git clone https://github.com/modular/max.git - ``` - - The following instructions assume that you're present within this - directory, and you can change to it after cloning: - - ```shell - cd max/src/max/ - ``` - -3. Now run one of the text completion demos with any of following commands: - - ```shell - magic run generate --model-path=modularai/llama-3.1 --prompt "Why is the sky blue?" - magic run generate --model-path=modularai/replit-code-1.5 --prompt "def fibonacci(n):" - magic run generate --model-path=mistralai/Mistral-Nemo-Instruct-2407 --prompt "Why is the sky blue?" - ``` - -4. Host a chat completion endpoint via MAX Serve. - - MAX Serve provides functionality to host performant OpenAI compatible - endpoints using the FastAPI framework. - - Finetuned weights hosted on Hugging Face can be used with one - of these optimized pipeline architectures when serving via the `serve` - command: - - ```shell - magic run serve --model-path=modularai/llama-3.1 - ``` - - A request can then be submitted via a cURL command. - - ```shell - curl -N http://localhost:8000/v1/chat/completions \ - -H "Content-Type: application/json" \ - -d '{ - "model": "modularai/llama-3.1", - "stream": true, - "messages": [ - {"role": "system", "content": "You are a helpful assistant."}, - {"role": "user", "content": "Who won the world series in 2020?"} - ] - }' - ``` - -## Verified Hugging Face model architectures - -If you provide a repository ID for a Hugging Face large language model -that does not currently have an optimized MAX Graph implementation, MAX -falls back to serving a PyTorch eager version of the model. - -The following table lists the model architectures tested to work with MAX. - -| **Architecture** | **Example Model** | -| --- | --- | -| AquilaForCausalLM | BAAI/Aquila-7B | -| ChatGLMModel | THUDM/chatglm3-6b | -| GPT2LMHeadModel | openai-community/gpt2 | -| GPTJForCausalLM | EleutherAI/gpt-j-6b | -| LlamaForCausalLM | meta-llama/Llama-3.2-3B-Instruct | -| LlamaForCausalLM | Skywork/Skywork-o1-Open-Llama-3.1-8B | -| LlamaForCausalLM | deepseek-ai/deepseek-coder-1.3b-instruct | -| PhiForCausalLM | microsoft/phi-2 | -| Phi3ForCausalLM | microsoft/Phi-3-mini-4k-instruct | -| GraniteForCausalLM | ibm-granite/granite-3.1-8b-instruct | -| Qwen2ForCausalLM | Qwen/Qwen2.5-1.5B-Instruct | -| OlmoForCausalLM | allenai/OLMo-1B-0724-hf | diff --git a/src/max/pipelines/architectures/mistral/README.md b/src/max/pipelines/architectures/mistral/README.md deleted file mode 100644 index 4603761d44..0000000000 --- a/src/max/pipelines/architectures/mistral/README.md +++ /dev/null @@ -1,129 +0,0 @@ -# Mistral NeMo - -**Language:** Python - -**API**: MAX Graph - -This pipeline provides optimized support for the `MistralForCausalLM` family -of large language models, as exemplified by the Mistral NeMo 12B text -completion model. The model itself has been constructed in Python -using the [MAX Graph API](https://docs.modular.com/max/graph/). - -The MAX Graph API provides an accessible interface to the construction of -flexible accelerated compute graphs, which are then optimized by the MAX -Engine's advanced graph compiler. This pipeline showcases how a large language -model can be fully defined using Python and MAX Graphs and then compiled for -optimal inference performance via the MAX Engine. - -## Model - -[Mistral NeMo](https://mistral.ai/news/mistral-nemo/) is an open source large -language model released by [Mistral AI](https://mistral.ai) in partnership -with NVIDIA. The weight checkpoints have been released under an Apache 2.0 -license. - -The default settings for this pipeline use the NeMo 12B set of pretrained -weights in the `bfloat16` encoding. - -## Usage - -The easiest way to try out this pipeline is with our Magic command-line tool. - -1. Install Magic on macOS and Ubuntu with this command: - - ```shell - curl -ssL https://magic.modular.com | bash - ``` - - Then run the source command that's printed in your terminal. - - To see the available commands, you can run `magic --help`. - [Learn more about Magic here](https://docs.modular.com/magic). - -2. Clone the MAX examples repository: - - If you don't already have a local clone of this repository, create one via: - - ```shell - git clone https://github.com/modular/max.git - ``` - - The following instructions assume that you're present within this pipeline's - directory, and you can change to it after cloning: - - ```shell - cd max/src/max/ - ``` - -3. Now run the Mistral text completion demo with the following command: - - ```shell - magic run mistral --prompt "I believe the meaning of life is" - ``` - -4. Host a chat completion endpoint via MAX Serve. - - MAX Serve provides functionality to host performant OpenAI compatible - endpoints using the FastAPI framework. - - You can configure the pipeline to be hosted by using the `--serve` argument. - For example: - - ```shell - magic run mistral --serve - ``` - - A request can be submitted via a cURL command. - - ```shell - curl -N http://localhost:8000/v1/chat/completions \ - -H "Content-Type: application/json" \ - -d '{ - "model": "mistralai/Mistral-Nemo-Instruct-2407", - "stream": true, - "messages": [ - {"role": "system", "content": "You are a helpful assistant."}, - {"role": "user", "content": "Who won the world series in 2020?"} - ] - }' - ``` - - Additionally, finetuned weights hosted on Hugging Face for any compatible - `MistralForCausalLM` model can be used with this optimized architecture - via the `serve` command: - - ```shell - magic run serve --model-path=mistralai/Ministral-8B-Instruct-2410 - ``` - -## Options - -The following command-line options are available to customize operation of the -pipeline: - -- `--max-length`: Controls the maximum length of the text sequence - (includes the input tokens). - (Default value: 512) -- `--max-new-tokens`: The maximum number of new tokens to generate. If a -1 - value is provided, the model will continue to generate tokens for the entire - context length. (Default value: -1) -- `--prompt`: The text prompt to use for further generation. -- `--quantization-encoding`: The encoding to use for a datatype that can be - quantized to a low bits per weight format. The options for quantized formats - will download and cache default weights, but `float32` requires the use of - `--weight-path` to specify locally downloaded full-precision weights for use - in the model. - Valid values: `bfloat16`, `float32`. - (Default value: `float32`). -- `--save-to-serialized-model-path`: If specified, writes the serialized model - to this path. -- `--serialized-model-path`: If specified, tries to load a serialized model - from this path. -- `--top-k`: Limits the sampling to the K most probable tokens. Default is 1. -- `--weight-path`: Overrides the default URL, and allows for an - already-downloaded pretrained weight file to be used with the model. -- `--max-batch-size`: Specifies the maximum batch size to be used. - Default is 1. -- `--devices`: Specifies the device(s) to use for the model. This can optionally - be "cpu", "gpu", or a comma-separated list of GPU ID(s) like "gpu-0,gpu-1". - Defaults to the first available GPU, or "cpu" if no GPUs are available. diff --git a/src/max/pipelines/architectures/pixtral/README.md b/src/max/pipelines/architectures/pixtral/README.md deleted file mode 100644 index 4911c4ac85..0000000000 --- a/src/max/pipelines/architectures/pixtral/README.md +++ /dev/null @@ -1,134 +0,0 @@ -# Pixtral - -**Language:** Python - -**API**: MAX Graph - -This pipeline provides optimized support for the -`LlavaForConditionalGeneration` family of multimodal models, as exemplified -by the Pixtral multimodal text generation model. The model itself has -been constructed in Python using the -[MAX Graph API](https://docs.modular.com/max/graph/). - -The MAX Graph API provides an accessible interface to the construction of -flexible accelerated compute graphs, which are then optimized by the MAX -Engine's advanced graph compiler. This pipeline showcases how a multimodal -model can be fully defined using Python and MAX Graphs and then compiled for -optimal inference performance via the MAX Engine. - -> [!NOTE] -> This pipeline is under active development, and while many layers have been -> implemented, the entire pipeline is not fully functional at present. - -## Model - -[Pixtral](https://mistral.ai/news/pixtral-12b/) -is an open source multimodal model released by Mistral AI. It handles both text -and image input, and allows for text generation based on those multimodal -inputs. The underlying architecture provides support for the broader -`LlavaForConditionalGeneration` family of models. - -The default settings for this pipeline use the 12B set of pretrained weights in -the `bfloat16` encoding. - -## Usage - -The easiest way to try out this pipeline is with our Magic command-line tool. - -1. Install Magic on macOS and Ubuntu with this command: - - ```shell - curl -ssL https://magic.modular.com | bash - ``` - - Then run the source command that's printed in your terminal. - - To see the available commands, you can run `magic --help`. - [Learn more about Magic here](https://docs.modular.com/magic). - -2. Clone the MAX examples repository: - - If you don't already have a local clone of this repository, create one via: - - ```shell - git clone https://github.com/modular/max.git - ``` - - The following instructions assume that you're present within this pipeline's - directory, and you can change to it after cloning: - - ```shell - cd max/src/max/pipelines - ``` - -3. Host a multimodal chat completion endpoint via MAX Serve. - - MAX Serve provides functionality to host performant OpenAI compatible - endpoints using the FastAPI framework. - - You can configure the pipeline to be hosted by using the `serve` command. - Weights hosted on Hugging Face for any compatible - `LlavaForConditionalGeneration` model can be used with this optimized - architecture. For example: - - ```shell - magic run serve --model-path mistral-community/pixtral-12b - ``` - - A request can be submitted via a cURL command. - - ```shell - curl -N http://localhost:8000/v1/chat/completions \ - -H "Content-Type: application/json" \ - -d '{ - "model": "mistral-community/pixtral-12b", - "stream": true, - "messages": [ - {"role": "system", "content": "You are a helpful assistant."}, - {"role": "user", "content": [ - {"type": "text", "text": "What is in this image?"}, - {"type": "image_url", "image_url": {"url": "https://upload.wikimedia.org/wikipedia/commons/thumb/d/dd/Gfp-wisconsin-madison-the-nature-boardwalk.jpg/2560px-Gfp-wisconsin-madison-the-nature-boardwalk.jpg"}} - ]} - ] - }' - ``` - -## Options - -The following command-line options are available to customize operation of the -pipeline: - -- `--model-path`: Specify the repository ID of a Hugging Face model - repository to use. This is used to load tokenizers, architectures and model - weights. -- `--force-download`: Specify whether to force a download of configuration - files and weights even if they already exist in the local cache. Set this - if you want to ensure you have the correct version of the model. -- `--max-batch-size`: Specifies the maximum batch size to be used. - Default is 1. -- `--max-ce-batch-size`: Set the maximum cache size reserved for a single - context encoding batch. The effective limit will be the lesser of this value - and `max-cache-batch-size`. - Default is 32. -- `--max-length`: Controls the maximum length of the text sequence (includes the - input tokens). Defaults to huggingface model config's max sequence length. -- `--max-new-tokens`: The maximum number of new tokens to generate. If a -1 - value is provided, the model will continue to generate tokens for the entire - context length. (Default value: -1) -- `--quantization-encoding`: The encoding to use for a datatype that can be - quantized to a low bits per weight format. - Valid values: `q4_0`, `q4_k`, `q6_k`, `bfloat16`, `float32`. - (Default value: `bfloat16`). -- `--save-to-serialized-model-path`: If specified, writes the serialized model - to this path. -- `--serialized-model-path`: If specified, tries to load a serialized model - from this path. -- `--top-k`: Limits the sampling to the K most probable tokens. Default is 1. -- `--trust-remote-code`: Indicate whether to allow custom modeling files from - Hugging Face repositories. Set this to true with caution, as it may - introduce security risks. -- `--weight-path`: Overrides the default URL, and allows for an - already-downloaded pretrained weight file to be used with the model. -- `--devices`: Specifies the device(s) to use for the model. This can optionally - be "cpu", "gpu", or a comma-separated list of GPU ID(s) like "gpu-0,gpu-1". - Defaults to the first available GPU, or "cpu" if no GPUs are available. diff --git a/src/max/pipelines/architectures/qwen2/README.md b/src/max/pipelines/architectures/qwen2/README.md deleted file mode 100644 index d42abdc47d..0000000000 --- a/src/max/pipelines/architectures/qwen2/README.md +++ /dev/null @@ -1,120 +0,0 @@ -# Qwen 2.5 - -**Language:** Python - -**API**: MAX Graph - -This pipeline provides optimized support for the `Qwen2ForCausalLM` family -of large language models, as exemplified by the Qwen 2.5 7B Instruct text -completion model. The model itself has been constructed in Python -using the [MAX Graph API](https://docs.modular.com/max/graph/). - -The MAX Graph API provides an accessible interface to the construction of -flexible accelerated compute graphs, which are then optimized by the MAX -Engine's advanced graph compiler. This pipeline showcases how a large language -model can be fully defined using Python and MAX Graphs and then compiled for -optimal inference performance via the MAX Engine. - -## Model - -[Qwen 2.5](https://qwenlm.github.io/blog/qwen2.5/) is an open source large -language model released by [Qwen AI](https://qwenlm.github.io/). The weight -checkpoints have been released under an Apache 2.0 license. - -The default settings for this pipeline use the 7B Instruct set of pretrained -weights in the `bfloat16` encoding. - -## Usage - -The easiest way to try out this pipeline is with our Magic command-line tool. - -1. Install Magic on macOS and Ubuntu with this command: - - ```shell - curl -ssL https://magic.modular.com | bash - ``` - - Then run the source command that's printed in your terminal. - - To see the available commands, you can run `magic --help`. - [Learn more about Magic here](https://docs.modular.com/magic). - -2. Clone the MAX examples repository: - - If you don't already have a local clone of this repository, create one via: - - ```shell - git clone https://github.com/modular/max.git - ``` - - The following instructions assume that you're present within this pipeline's - directory, and you can change to it after cloning: - - ```shell - cd max/src/max/ - ``` - -3. Now run the Qwen text completion demo with the following command: - - ```shell - magic run qwen --prompt "I believe the meaning of life is" - ``` - -4. Host a chat completion endpoint via MAX Serve. - - MAX Serve provides functionality to host performant OpenAI compatible - endpoints using the FastAPI framework. - - You can configure the pipeline to be hosted by using the `--serve` argument. - For example: - - ```shell - magic run qwen --serve - ``` - - A request can be submitted via a cURL command. - - ```shell - curl -N http://localhost:8000/v1/chat/completions \ - -H "Content-Type: application/json" \ - -d '{ - "model": "Qwen/Qwen2.5-7B-Instruct", - "stream": true, - "messages": [ - {"role": "system", "content": "You are a helpful assistant."}, - {"role": "user", "content": "Who won the world series in 2020?"} - ] - }' - ``` - - Additionally, finetuned weights hosted on Hugging Face for any compatible - `Qwen2ForCausalLM` model can be used with this optimized architecture - via the `serve` command: - - ```shell - magic run serve --model-path=Qwen/Qwen2.5-7B-Instruct - ``` - -## Options - -The following command-line options are available to customize operation of the -pipeline: - -- `--max-length`: Controls the maximum length of the text sequence - (includes the input tokens). -- `--max-new-tokens`: The maximum number of new tokens to generate. If a -1 - value is provided, the model will continue to generate tokens for the entire - context length. (Default value: -1) -- `--prompt`: The text prompt to use for further generation. -- `--save-to-serialized-model-path`: If specified, writes the serialized model - to this path. -- `--serialized-model-path`: If specified, tries to load a serialized model - from this path. -- `--top-k`: Limits the sampling to the K most probable tokens. Default is 1. -- `--weight-path`: Overrides the default URL, and allows for an - already-downloaded pretrained weight file to be used with the model. -- `--max-batch-size`: Specifies the maximum batch size to be used. - Default is 1. -- `--devices`: Specifies the device(s) to use for the model. This can optionally - be "cpu", "gpu", or a comma-separated list of GPU ID(s) like "gpu-0,gpu-1". - Defaults to the first available GPU, or "cpu" if no GPUs are available. diff --git a/src/max/pipelines/architectures/replit/README.md b/src/max/pipelines/architectures/replit/README.md deleted file mode 100644 index a77f156e3a..0000000000 --- a/src/max/pipelines/architectures/replit/README.md +++ /dev/null @@ -1,119 +0,0 @@ -# Replit Code V1.5 3B - -**Language:** Python - -**API**: MAX Graph - -This pipeline demonstrates code completion from an initial prompt using -Replit's Code V1.5 3B large language model. The model itself has been -constructed in Python using the -[MAX Graph API](https://docs.modular.com/max/graph/). - -The MAX Graph API provides an accessible interface to the construction of -flexible accelerated compute graphs, which are then optimized by the MAX -Engine's advanced graph compiler. This pipeline showcases how a large language -model can be fully defined using Python and MAX Graphs and then compiled for -optimal inference performance via the MAX Engine. - -## Model - -[Replit Code](https://blog.replit.com/replit-code-v1_5) is an open source code -generation model trained on permissively licensed code and released by -[Replit](https://replit.com). The V1.5, 3B variant is the basis for this -implementation, and weights are -[obtained via Hugging Face](https://huggingface.co/replit/replit-code-v1-3b). - -## Usage - -The easiest way to try out this pipeline is with our Magic command-line tool. - -1. Install Magic on macOS and Ubuntu with this command: - - ```shell - curl -ssL https://magic.modular.com | bash - ``` - - Then run the source command that's printed in your terminal. - - To see the available commands, you can run `magic --help`. - [Learn more about Magic here](https://docs.modular.com/magic). - -2. Clone the MAX examples repository: - - If you don't already have a local clone of this repository, create one via: - - ```shell - git clone https://github.com/modular/max.git - ``` - - The following instructions assume that you're present within this pipeline's - directory, and you can change to it after cloning: - - ```shell - cd max/src/max/ - ``` - -3. Now run the Replit code completion demo with the following command: - - ```shell - magic run replit --prompt "def fibonacci(n):" - ``` - -4. Host a code completion endpoint via MAX Serve. - - MAX Serve provides functionality to host performant OpenAI compatible - endpoints using the FastAPI framework. - - You can configure the pipeline to be hosted by using the `--serve` argument. - For example: - - ```shell - magic run replit --serve - ``` - - A request can be submitted via a cURL command. - - ```shell - curl -N http://localhost:8000/v1/chat/completions \ - -H "Content-Type: application/json" \ - -d '{ - "model": "replit/replit-code-v1_5-3b", - "stream": true, - "messages": [ - {"role": "system", "content": "You are a helpful assistant."}, - {"role": "user", "content": "def fibonacci(n)"} - ] - }' - ``` - -## Options - -The following command-line options are available to customize operation of the -pipeline: - -- `--max-length`: Controls the maximum length of the text sequence - (includes the input tokens). - (Default value: 512) -- `--max-new-tokens`: The maximum number of new tokens to generate. If a -1 - value is provided, the model will continue to generate tokens for the entire - context length. (Default value: -1) -- `--prompt`: The text prompt to use for further generation. -- `--quantization-encoding`: The encoding to use for a datatype that can be - quantized to a low bits per weight format. The options for quantized formats - will download and cache default weights, but `float32` requires the use of - `--weight-path` to specify locally downloaded full-precision weights for use - in the model. - Valid values: `bfloat16`, `float32`. - (Default value: `float32`). -- `--save-to-serialized-model-path`: If specified, writes the serialized model - to this path. -- `--serialized-model-path`: If specified, tries to load a serialized model - from this path. -- `--top-k`: Limits the sampling to the K most probable tokens. Default is 1. -- `--weight-path`: Overrides the default URL, and allows for an - already-downloaded pretrained weight file to be used with the model. -- `--max-batch-size`: Specifies the maximum batch size to be used. - Default is 1. -- `--devices`: Specifies the device(s) to use for the model. This can optionally - be "cpu" or a comma-separated list of GPU ID(s). Defaults to the first - available GPU. From 98333f260bbf490d0f2034e923b42b2cf83c85df Mon Sep 17 00:00:00 2001 From: Scott Main Date: Thu, 27 Feb 2025 08:58:53 -0800 Subject: [PATCH 484/509] Update all GitHub links for `mojo`->`max` repo change MODULAR_ORIG_COMMIT_REV_ID: e3c60edfa481cae4a17f91c23cf9d1080d4bd030 --- mojo/docs/README.md | 2 +- mojo/docs/changelog-released.md | 662 +++++++++++++------------- mojo/docs/changelog.md | 2 +- mojo/docs/faq.md | 4 +- mojo/docs/manual/basics.mdx | 10 +- mojo/docs/manual/get-started.mdx | 4 +- mojo/docs/manual/operators.mdx | 6 +- mojo/docs/manual/parameters/index.mdx | 2 +- mojo/docs/manual/values/lifetimes.mdx | 4 +- mojo/docs/roadmap.md | 4 +- mojo/docs/tools/debugging.mdx | 6 +- mojo/docs/tools/testing.mdx | 13 +- 12 files changed, 361 insertions(+), 358 deletions(-) diff --git a/mojo/docs/README.md b/mojo/docs/README.md index 5200bc5cfe..d5abf29c53 100644 --- a/mojo/docs/README.md +++ b/mojo/docs/README.md @@ -16,7 +16,7 @@ Be aware that we don't provide tools to generate a preview of the website, because the Mojo docs are built along with other content that's not included in this repo. As such, we recommend you preview your edits in an IDE that can render Markdown and MDX files, such as VS Code, including the -[VS Code environment in GitHub](https://github.dev/modular/mojo/blob/main/). +[VS Code environment in GitHub](https://github.dev/modular/max/blob/main/). For more information about how to contribute, see the [Contributor Guide](../CONTRIBUTING.md) diff --git a/mojo/docs/changelog-released.md b/mojo/docs/changelog-released.md index 13cca39ddf..82fa4aa7a8 100644 --- a/mojo/docs/changelog-released.md +++ b/mojo/docs/changelog-released.md @@ -572,25 +572,25 @@ in [Update a package](/magic#update-a-package) to update the `max` package. - The command `mojo debug --vscode` now sets the current working directory properly. -- [Issue #3796](https://github.com/modular/mojo/issues/3796) - Compiler crash +- [Issue #3796](https://github.com/modular/max/issues/3796) - Compiler crash handling `for`-`else` statement. -- [Issue #3540](https://github.com/modular/mojo/issues/3540) - Using named +- [Issue #3540](https://github.com/modular/max/issues/3540) - Using named output slot breaks trait conformance -- [Issue #3617](https://github.com/modular/mojo/issues/3617) - Can't generate +- [Issue #3617](https://github.com/modular/max/issues/3617) - Can't generate the constructors for a type wrapping `!lit.ref` - The Mojo Language Server doesn't crash anymore on empty `__init__.mojo` files. - [Issue #3826](https://github.com/modular/mojo/issues/3826). + [Issue #3826](https://github.com/modular/max/issues/3826). -- [Issue #3935](https://github.com/modular/mojo/issues/3935) - Confusing OOM +- [Issue #3935](https://github.com/modular/max/issues/3935) - Confusing OOM error when using `Tuple.get()` incorrectly. -- [Issue #3955](https://github.com/modular/mojo/issues/3955) - Unexpected +- [Issue #3955](https://github.com/modular/max/issues/3955) - Unexpected copy behavior with `def` arguments in loops -- [Issue #3960](https://github.com/modular/mojo/issues/3960) - Infinite `for` +- [Issue #3960](https://github.com/modular/max/issues/3960) - Infinite `for` loop ## v24.6 (2024-12-17) @@ -617,7 +617,7 @@ detailed information in the following sections: (`ref [a, b]`). For details, see [Language changes](#24-6-language-changes). For background information and rationale on the name change see - [the proposal](https://github.com/modular/mojo/issues/3623). For more + [the proposal](https://github.com/modular/max/issues/3623). For more information on origins, see [Lifetimes, origins and references](/mojo/manual/values/lifetimes) in the Mojo Manual. @@ -699,7 +699,7 @@ detailed information in the following sections: eventually be deprecated and removed. This was [discussed extensively in a public - proposal](https://github.com/modular/mojo/issues/3623). For more + proposal](https://github.com/modular/max/issues/3623). For more information, see [Named results](/nightly/mojo/manual/functions#named-results) in the Mojo Manual. @@ -922,7 +922,7 @@ detailed information in the following sections: - 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/modular/mojo/issues/933). + [Issue #933](https://github.com/modular/max/issues/933). - Introduced the `@explicit_destroy` annotation, the `__disable_del` keyword, the `UnknownDestructibility` trait, and the `ImplicitlyDestructible` keyword, @@ -1041,8 +1041,8 @@ detailed information in the following sections: 'strong reference' pointer. - Support for multi-dimensional indexing and slicing for `PythonObject` - (PR [#3549](https://github.com/modular/mojo/pull/3549), - PR [#3583](https://github.com/modular/mojo/pull/3583)). + (PR [#3549](https://github.com/modular/max/pull/3549), + PR [#3583](https://github.com/modular/max/pull/3583)). ```mojo var np = Python.import_module("numpy") @@ -1055,7 +1055,7 @@ detailed information in the following sections: - Added [`PythonObject.__contains__()`](/mojo/stdlib/python/python_object/PythonObject#__contains__). - ([PR #3101](https://github.com/modular/mojo/pull/3101)) + ([PR #3101](https://github.com/modular/max/pull/3101)) Example usage: @@ -1087,7 +1087,7 @@ detailed information in the following sections: 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/modular/mojo/pull/3524)) + ([PR #3524](https://github.com/modular/max/pull/3524)) - `Arc` has been renamed to [`ArcPointer`](/mojo/stdlib/memory/arc/ArcPointer), for consistency with `OwnedPointer`. @@ -1117,7 +1117,7 @@ detailed information in the following sections: [`FloatableRaising`](/mojo/stdlib/builtin/floatable/FloatableRaising) traits to denote types that can be converted to a `Float64` value using the builtin `float` function. Made `SIMD` and `FloatLiteral` conform to the `Floatable` - trait. ([PR #3163](https://github.com/modular/mojo/pull/3163)) + trait. ([PR #3163](https://github.com/modular/max/pull/3163)) ```mojo fn foo[F: Floatable](v: F): @@ -1135,7 +1135,7 @@ detailed information in the following sections: - Introduced the [`random.shuffle()`](/mojo/stdlib/random/random/shuffle) function for randomizing the elements of a `List`. - ([PR #3327](https://github.com/modular/mojo/pull/3327)) + ([PR #3327](https://github.com/modular/max/pull/3327)) Example: @@ -1153,20 +1153,20 @@ detailed information in the following sections: - [`Slice.step`](/mojo/stdlib/builtin/builtin_slice/Slice#fields) is now an `Optional[Int]`, matching the optionality of `slice.step` in Python. - ([PR #3160](https://github.com/modular/mojo/pull/3160)) + ([PR #3160](https://github.com/modular/max/pull/3160)) - There is now a [`Byte`](/mojo/stdlib/builtin/simd/#aliases) alias to better express intent when working with a pack of bits. - ([PR #3670](https://github.com/modular/mojo/pull/3670)). + ([PR #3670](https://github.com/modular/max/pull/3670)). - Expanded [`os.path`](/mojo/stdlib/os/path/path/) with new functions: - - `os.path.expandvars()`: Expands environment variables in a path ([PR #3735](https://github.com/modular/mojo/pull/3735)). + - `os.path.expandvars()`: Expands environment variables in a path ([PR #3735](https://github.com/modular/max/pull/3735)). - `os.path.splitroot()`: Split a path into drive, root and tail. - ([PR #3780](https://github.com/modular/mojo/pull/3780)). + ([PR #3780](https://github.com/modular/max/pull/3780)). - Added a [`reserve()`](/mojo/stdlib/collections/string/String#reserve) method and new constructor to the `String` struct to allocate additional capacity. - ([PR #3755](https://github.com/modular/mojo/pull/3755)). + ([PR #3755](https://github.com/modular/max/pull/3755)). - A new [`StringLiteral.get[some_stringable]()`](/mojo/stdlib/builtin/string_literal/StringLiteral#get) @@ -1192,7 +1192,7 @@ detailed information in the following sections: - [`StringRef`](/mojo/stdlib/utils/stringref/StringRef) now implements `split()` which can be used to split a `StringRef` into a `List[StringRef]` by a - delimiter. ([PR #2705](https://github.com/modular/mojo/pull/2705)) + delimiter. ([PR #2705](https://github.com/modular/max/pull/2705)) - [`StringRef`](/mojo/stdlib/utils/stringref/StringRef) is now representable so `repr(StringRef("hello"))` will return `StringRef('hello')`. @@ -1251,7 +1251,7 @@ detailed information in the following sections: - 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/modular/mojo/issues/3532). + [Issue #3532](https://github.com/modular/max/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 @@ -1316,40 +1316,40 @@ detailed information in the following sections: - Lifetime tracking is now fully field sensitive, which makes the uninitialized variable checker more precise. -- [Issue #1310](https://github.com/modular/mojo/issues/1310) - Mojo permits +- [Issue #1310](https://github.com/modular/max/issues/1310) - Mojo permits the use of any constructor for implicit conversions -- [Issue #1632](https://github.com/modular/mojo/issues/1632) - Mojo produces +- [Issue #1632](https://github.com/modular/max/issues/1632) - Mojo produces weird error when inout function is used in non mutating function -- [Issue #3444](https://github.com/modular/mojo/issues/3444) - Raising init +- [Issue #3444](https://github.com/modular/max/issues/3444) - Raising init causing use of uninitialized variable -- [Issue #3544](https://github.com/modular/mojo/issues/3544) - Known +- [Issue #3544](https://github.com/modular/max/issues/3544) - Known mutable `ref` argument are not optimized as `noalias` by LLVM. -- [Issue #3559](https://github.com/modular/mojo/issues/3559) - VariadicPack +- [Issue #3559](https://github.com/modular/max/issues/3559) - VariadicPack doesn't extend the lifetimes of the values it references. -- [Issue #3627](https://github.com/modular/mojo/issues/3627) - Compiler +- [Issue #3627](https://github.com/modular/max/issues/3627) - Compiler overlooked exclusivity violation caused by `ref [MutableAnyOrigin] T` -- [Issue #3710](https://github.com/modular/mojo/issues/3710) - Mojo frees +- [Issue #3710](https://github.com/modular/max/issues/3710) - Mojo frees memory while reference to it is still in use. -- [Issue #3805](https://github.com/modular/mojo/issues/3805) - Crash When +- [Issue #3805](https://github.com/modular/max/issues/3805) - Crash When Initializing !llvm.ptr. -- [Issue #3816](https://github.com/modular/mojo/issues/3816) - Ternary +- [Issue #3816](https://github.com/modular/max/issues/3816) - Ternary if-operator doesn't propagate origin information. -- [Issue #3815](https://github.com/modular/mojo/issues/3815) - +- [Issue #3815](https://github.com/modular/max/issues/3815) - [BUG] Mutability not preserved when taking the union of two origins. -- [Issue #3829](https://github.com/modular/mojo/issues/3829) - Poor error +- [Issue #3829](https://github.com/modular/max/issues/3829) - Poor error message when invoking a function pointer upon an argument of the wrong origin -- [Issue #3830](https://github.com/modular/mojo/issues/3830) - Failures +- [Issue #3830](https://github.com/modular/max/issues/3830) - Failures emitting register RValues to ref arguments. - The VS Code extension now auto-updates its private copy of the MAX SDK. @@ -1555,7 +1555,7 @@ detailed information in the following sections: The Mojo compiler now always passes the "new value" being set using the last keyword argument of the `__setitem__()`, e.g. turning `yourType[1, 2] = 3` into `yourType.__setitem__(1, 2, val=3)`. This fixes - [Issue #248](https://github.com/modular/mojo/issues/248). + [Issue #248](https://github.com/modular/max/issues/248). - Mojo context managers used in regions of code that may raise no longer need to define a "conditional" exit function in the form of @@ -1682,7 +1682,7 @@ detailed information in the following sections: - Added the builtin [`input()`](/mojo/stdlib/builtin/io/input) function, which behaves the same as Python. - ([PR #3392](https://github.com/modular/mojo/pull/3392)) + ([PR #3392](https://github.com/modular/max/pull/3392)) ```mojo name = input("Enter your name: ") @@ -1693,7 +1693,7 @@ detailed information in the following sections: There is a known issue when running the `input()` function with JIT compilation (see issue - [#3479](https://github.com/modular/mojo/issues/3479)). + [#3479](https://github.com/modular/max/issues/3479)). - [`print()`](/mojo/stdlib/builtin/io/print) now requires that its arguments conform to the [`Formattable`](/mojo/stdlib/utils/format/Formattable) trait. @@ -1766,12 +1766,12 @@ detailed information in the following sections: - Added [`TemporaryDirectory`](/mojo/stdlib/tempfile/tempfile/TemporaryDirectory) in module `tempfile`. - ([PR 2743](https://github.com/modular/mojo/pull/2743)) + ([PR 2743](https://github.com/modular/max/pull/2743)) - Added [`NamedTemporaryFile`](/mojo/stdlib/tempfile/tempfile/NamedTemporaryFile) in module `tempfile`. - ([PR 2762](https://github.com/modular/mojo/pull/2762)) + ([PR 2762](https://github.com/modular/max/pull/2762)) - [`String`](/mojo/stdlib/collections/string/String) and friends: @@ -1780,7 +1780,7 @@ detailed information in the following sections: - Added the [`String.format()`](/mojo/stdlib/collections/string/String#format) method. - ([PR #2771](https://github.com/modular/mojo/pull/2771)) + ([PR #2771](https://github.com/modular/max/pull/2771)) Supports automatic and manual indexing of `*args`. @@ -1801,7 +1801,7 @@ detailed information in the following sections: - [`String.format()`](/mojo/stdlib/collections/string/String#format) now supports conversion flags `!s` and `!r`, allowing for `str()` and `repr()` conversions within format strings. - ([PR #3279](https://github.com/modular/mojo/pull/3279)) + ([PR #3279](https://github.com/modular/max/pull/3279)) Example: @@ -1818,14 +1818,14 @@ detailed information in the following sections: [`ljust()`](/mojo/stdlib/collections/string/String#ljust), and [`center()`](/mojo/stdlib/collections/string/String#center) methods to return a justified string based on width and fillchar. ([PR - #3278](https://github.com/modular/mojo/pull/3278)) + #3278](https://github.com/modular/max/pull/3278)) - The [`atol()`](/mojo/stdlib/collections/string/atol) function now correctly supports leading underscores, (e.g.`atol("0x_ff", 0)`), when the appropriate base is specified or inferred (base 0). non-base-10 integer literals as per Python's [Integer Literals](). - ([PR #3180](https://github.com/modular/mojo/pull/3180)) + ([PR #3180](https://github.com/modular/max/pull/3180)) - Added the [`unsafe_cstr_ptr()`](/mojo/stdlib/collections/string/String#unsafe_cstr_ptr) @@ -1843,7 +1843,7 @@ detailed information in the following sections: and [`StringSlice.__len__()`](/mojo/stdlib/utils/string_slice/StringSlice#__len__) now does return the Unicode codepoints length. - ([PR #2960](https://github.com/modular/mojo/pull/2960)) + ([PR #2960](https://github.com/modular/max/pull/2960)) - Added a new [`StaticString`](/mojo/stdlib/utils/string_slice/#aliases) type alias. This can be used in place of @@ -1987,7 +1987,7 @@ detailed information in the following sections: assert_equal(str(stacked), "[1 2 3 4 5 6]") ``` - ([PR #3264](https://github.com/modular/mojo/pull/3264)) + ([PR #3264](https://github.com/modular/max/pull/3264)) - Accessing local Python modules with [`Python.add_to_path(".")`](/mojo/stdlib/python/python/Python#add_to_path) @@ -2002,7 +2002,7 @@ detailed information in the following sections: - [`List`](/mojo/stdlib/collections/list/List) values are now equality comparable with `==` and `!=` when their element type is equality - comparable. ([PR #3195](https://github.com/modular/mojo/pull/3195)) + comparable. ([PR #3195](https://github.com/modular/max/pull/3195)) - [`Optional`](/mojo/stdlib/collections/optional/Optional) values are now equality comparable with `==` and `!=` when their element type is equality @@ -2010,22 +2010,22 @@ detailed information in the following sections: - Added a new [`Counter`](/mojo/stdlib/collections/counter/Counter) dictionary-like type, matching most of the features of the Python one. - ([PR #2910](https://github.com/modular/mojo/pull/2910)) + ([PR #2910](https://github.com/modular/max/pull/2910)) - [`Dict`](/mojo/stdlib/collections/dict/Dict) now implements [`setdefault()`](/mojo/stdlib/collections/dict/Dict#setdefault), which gets a value from the dictionary by key, or sets it to a default if it doesn't exist. - ([PR #2803](https://github.com/modular/mojo/pull/2803)) + ([PR #2803](https://github.com/modular/max/pull/2803)) - `Dict` now supports [`popitem()`](/mojo/stdlib/collections/dict/Dict#popitem), which removes and returns the last item in the `Dict`. - ([PR #2701](https://github.com/modular/mojo/pull/2701)) + ([PR #2701](https://github.com/modular/max/pull/2701)) - Added a [`Dict.__init__()`](/mojo/stdlib/collections/dict/Dict#__init__) overload to specify initial capacity. - ([PR #3171](https://github.com/modular/mojo/pull/3171)) + ([PR #3171](https://github.com/modular/max/pull/3171)) The capacity has to be a power of two and greater than or equal to 8. @@ -2040,7 +2040,7 @@ detailed information in the following sections: - `ListLiteral` now supports [`__contains__()`](/mojo/stdlib/builtin/builtin_list/ListLiteral#__contains__). - ([PR #3251](https://github.com/modular/mojo/pull/3251)) + ([PR #3251](https://github.com/modular/max/pull/3251)) - Filesystem and environment utilities: @@ -2122,7 +2122,7 @@ detailed information in the following sections: - Added the [`Identifiable`](/mojo/stdlib/builtin/identifiable/Identifiable) trait, used to describe types that implement the `__is__()` and `__isnot__()` trait methods. - ([PR #2807](https://github.com/modular/mojo/pull/2807)) + ([PR #2807](https://github.com/modular/max/pull/2807)) - Types conforming to [`Boolable`](/mojo/stdlib/builtin/bool/Boolable) (that is, those implementing `__bool__()`) no longer implicitly convert to `Bool`. @@ -2164,7 +2164,7 @@ detailed information in the following sections: - Added the [`oct()`](/mojo/stdlib/builtin/format_int/oct) builtin function for formatting an integer in octal. - ([PR #2914](https://github.com/modular/mojo/pull/2914)) + ([PR #2914](https://github.com/modular/max/pull/2914)) - Added the [`assert_is()`](/mojo/stdlib/testing/testing/assert_is) and [`assert_is_not()`](/mojo/stdlib/testing/testing/assert_is_not) test @@ -2172,7 +2172,7 @@ detailed information in the following sections: - The [`math`](/mojo/stdlib/math/constants/) package now includes the `pi`, `e`, and `tau` constants (Closes Issue - [#2135](https://github.com/modular/mojo/issues/2135)). + [#2135](https://github.com/modular/max/issues/2135)). - The [`ulp`](/mojo/stdlib/math/math/ulp) function from `numerics` has been moved to the `math` module. @@ -2181,7 +2181,7 @@ detailed information in the following sections: [`bit_reverse()`](/mojo/stdlib/bit/bit/bit_reverse), [`byte_swap()`](/mojo/stdlib/bit/bit/byte_swap), and [`pop_count()`](/mojo/stdlib/bit/bit/pop_count) for the `Int` type. - ([PR #3150](https://github.com/modular/mojo/pull/3150)) + ([PR #3150](https://github.com/modular/max/pull/3150)) - A few `bit` functions have been renamed for clarity: @@ -2193,7 +2193,7 @@ detailed information in the following sections: `OptionalReg[Int]` for `start` and `end` and implements a constructor which accepts optional values. `Slice._has_end()` has also been removed since a Slice with no end is now represented by an empty `Slice.end` option. - ([PR #2495](https://github.com/modular/mojo/pull/2495)) + ([PR #2495](https://github.com/modular/max/pull/2495)) ```mojo var s = Slice(1, None, 2) @@ -2305,28 +2305,28 @@ detailed information in the following sections: - Mojo now prints `ref` arguments and results in generated documentation correctly. -- [#1734](https://github.com/modular/mojo/issues/1734) - Calling +- [#1734](https://github.com/modular/max/issues/1734) - Calling `__copyinit__` on self causes crash. -- [#3142](https://github.com/modular/mojo/issues/3142) - [QoI] Confusing +- [#3142](https://github.com/modular/max/issues/3142) - [QoI] Confusing `__setitem__` method is failing with a "must be mutable" error. -- [#248](https://github.com/modular/mojo/issues/248) - [Feature] Enable +- [#248](https://github.com/modular/max/issues/248) - [Feature] Enable `__setitem__` to take variadic arguments -- [#3065](https://github.com/modular/mojo/issues/3065) - Fix incorrect behavior +- [#3065](https://github.com/modular/max/issues/3065) - Fix incorrect behavior of `SIMD.__int__` on unsigned types -- [#3045](https://github.com/modular/mojo/issues/3045) - Disable implicit SIMD +- [#3045](https://github.com/modular/max/issues/3045) - Disable implicit SIMD conversion routes through `Bool` -- [#3126](https://github.com/modular/mojo/issues/3126) - [BUG] List doesn't +- [#3126](https://github.com/modular/max/issues/3126) - [BUG] List doesn't work at compile time. -- [#3237](https://github.com/modular/mojo/issues/3237) - [BUG] Difference +- [#3237](https://github.com/modular/max/issues/3237) - [BUG] Difference between `__getitem__` and `[.]` operator. -- [#3336](https://github.com/modular/mojo/issues/3336) - Fix outdated +- [#3336](https://github.com/modular/max/issues/3336) - Fix outdated references to `let` in REPL documentation. - The VS Code extension no longer caches the information of the selected @@ -2545,7 +2545,7 @@ Big themes for this release: - Added built-in [`repr()`](/mojo/stdlib/builtin/repr/repr) function and [`Representable`](/mojo/stdlib/builtin/repr/Representable) trait. - ([PR #2361](https://github.com/modular/mojo/pull/2361)) + ([PR #2361](https://github.com/modular/max/pull/2361)) - Added the [`Indexer`](/mojo/stdlib/builtin/int/Indexer) trait to denote types that implement the `__index__()` method which allows these types to be @@ -2592,7 +2592,7 @@ Big themes for this release: print(a[AlwaysZero()]) # works and prints 1 ``` - ([PR #2685](https://github.com/modular/mojo/pull/2685)) + ([PR #2685](https://github.com/modular/max/pull/2685)) - Added traits allowing user-defined types to be supported by various built-in and math functions. @@ -2670,14 +2670,14 @@ Big themes for this release: [`rstrip()`](/mojo/stdlib/collections/string/String#rstrip) can now remove custom characters other than whitespace. In addition, there are now several useful aliases for whitespace, ASCII lower/uppercase, and so on. - ([PR #2555](https://github.com/modular/mojo/pull/2555)) + ([PR #2555](https://github.com/modular/max/pull/2555)) - `String` now has a [`splitlines()`](/mojo/stdlib/collections/string/String#splitlines) method, which allows splitting strings at line boundaries. This method supports [universal newlines](https://docs.python.org/3/glossary.html#term-universal-newlines) and provides an option to retain or remove the line break characters. - ([PR #2810](https://github.com/modular/mojo/pull/2810)) + ([PR #2810](https://github.com/modular/max/pull/2810)) - `InlinedString` has been renamed to [`InlineString`](/mojo/stdlib/utils/inline_string/InlineString) to be @@ -2686,12 +2686,12 @@ Big themes for this release: - [`StringRef`](/mojo/stdlib/utils/stringref/StringRef) now implements [`strip()`](/mojo/stdlib/utils/stringref/StringRef#strip), which can be used to remove leading and trailing whitespace. - ([PR #2683](https://github.com/modular/mojo/pull/2683)) + ([PR #2683](https://github.com/modular/max/pull/2683)) - `StringRef` now implements [`startswith()`](/mojo/stdlib/utils/stringref/StringRef#startswith) and [`endswith()`](/mojo/stdlib/utils/stringref/StringRef#endswith). - ([PR #2710](https://github.com/modular/mojo/pull/2710)) + ([PR #2710](https://github.com/modular/max/pull/2710)) - Added a new [`StringSlice`](/mojo/stdlib/utils/string_slice/StringSlice) type, to replace uses of the unsafe `StringRef` type in standard library @@ -2743,7 +2743,7 @@ Big themes for this release: - Added a built-in [`sort()`](/mojo/stdlib/builtin/sort/sort) function for lists of elements that conform to the [`ComparableCollectionElement`](/mojo/stdlib/builtin/value/ComparableCollectionElement) - trait.([PR #2609](https://github.com/modular/mojo/pull/2609)) + trait.([PR #2609](https://github.com/modular/max/pull/2609)) - [`int()`](/mojo/stdlib/builtin/int/int-function) can now take a string and a specified base to parse an integer from a @@ -2751,17 +2751,17 @@ Big themes for this release: specified, the string will be parsed as if it was an integer literal, with the base determined by whether the string contains the prefix `"0x"`, `"0o"`, or `"0b"`. - ([PR #2273](https://github.com/modular/mojo/pull/2273), - fixes [#2274](https://github.com/modular/mojo/issues/2274)) + ([PR #2273](https://github.com/modular/max/pull/2273), + fixes [#2274](https://github.com/modular/max/issues/2274)) - Added the [`bin()`](/mojo/stdlib/builtin/format_int/bin) built-in function to convert integral types into their binary string representation. - ([PR #2603](https://github.com/modular/mojo/pull/2603)) + ([PR #2603](https://github.com/modular/max/pull/2603)) - Added the [`atof()`](/mojo/stdlib/collections/string/atof) built-in function, which can convert a `String` to a `float64`. - ([PR #2649](https://github.com/modular/mojo/pull/2649)) + ([PR #2649](https://github.com/modular/max/pull/2649)) - You can now use the built-in [`any()`](/mojo/stdlib/builtin/bool/any) and [`all()`](/mojo/stdlib/builtin/bool/all) functions to check for truthy @@ -2769,7 +2769,7 @@ Big themes for this release: `size=1`, You must explicitly use these to get the truthy value of a SIMD vector with more than one element. This avoids common bugs around implicit conversion of `SIMD` to `Bool`. - ([PR #2600](https://github.com/modular/mojo/pull/2600)) + ([PR #2600](https://github.com/modular/max/pull/2600)) For example: @@ -2784,10 +2784,10 @@ Big themes for this release: - [`object`](/mojo/stdlib/builtin/object/) now implements all the bitwise operators. - ([PR #2324](https://github.com/modular/mojo/pull/2324)) + ([PR #2324](https://github.com/modular/max/pull/2324)) - [`Tuple`](/mojo/stdlib/builtin/tuple/Tuple) now supports `__contains__()`. - ([PR #2709](https://github.com/modular/mojo/pull/2709)) For example: + ([PR #2709](https://github.com/modular/max/pull/2709)) For example: ```mojo var x = Tuple(1, 2, True) @@ -2837,12 +2837,12 @@ Big themes for this release: Note that `List` doesn't conform to the `Stringable` trait yet so you cannot use `str(my_list)` yet. - ([PR #2673](https://github.com/modular/mojo/pull/2673)) + ([PR #2673](https://github.com/modular/max/pull/2673)) - `List` has a simplified syntax to call the [`count()`](/mojo/stdlib/collections/list/List#count) method: `my_list.count(x)`. - ([PR #2675](https://github.com/modular/mojo/pull/2675)) + ([PR #2675](https://github.com/modular/max/pull/2675)) - `List()` now supports `__contains__()`, so you can now use lists with the `in` operator: @@ -2851,84 +2851,84 @@ Big themes for this release: if x in my_list: ``` - ([PR #2667](https://github.com/modular/mojo/pull/2667)) + ([PR #2667](https://github.com/modular/max/pull/2667)) - `List` now has an [`unsafe_get()`](/mojo/stdlib/collections/list/List#unsafe_get) to get the reference to an element without bounds check or wraparound for negative indices. Note that this method is unsafe. Use with caution. - [PR #2800](https://github.com/modular/mojo/pull/2800)) + [PR #2800](https://github.com/modular/max/pull/2800)) - Added a [`fromkeys()`](/mojo/stdlib/collections/dict/Dict#fromkeys) method to `Dict` to return a `Dict` with the specified keys and values. - ([PR 2622](https://github.com/modular/mojo/pull/2622)) + ([PR 2622](https://github.com/modular/max/pull/2622)) - Added a [`clear()`](/mojo/stdlib/collections/dict/Dict#clear) method to - `Dict`. ([PR 2627](https://github.com/modular/mojo/pull/2627)) + `Dict`. ([PR 2627](https://github.com/modular/max/pull/2627)) - `Dict` now supports [`reversed()`](/mojo/stdlib/builtin/reversed/reversed) for its `items()` and `values()` iterators. - ([PR #2340](https://github.com/modular/mojo/pull/2340)) + ([PR #2340](https://github.com/modular/max/pull/2340)) - `Dict` now has a simplified conversion to `String` with `my_dict.__str__()`. Note that `Dict` does not conform to the `Stringable` trait so `str(my_dict)` is not possible yet. - ([PR #2674](https://github.com/modular/mojo/pull/2674)) + ([PR #2674](https://github.com/modular/max/pull/2674)) - `Dict` now implements [`get(key)`](/mojo/stdlib/collections/dict/Dict#get) and `get(key, default)` functions. - ([PR #2519](https://github.com/modular/mojo/pull/2519)) + ([PR #2519](https://github.com/modular/max/pull/2519)) - Added a temporary `__get_ref(key)` method to `Dict`, allowing you to get a `Reference` to a dictionary value. - Added a new [`InlineList`](/mojo/stdlib/collections/inline_list/InlineList) type, a stack-allocated list with a static maximum size. - ([PR 2587#](https://github.com/modular/mojo/pull/2587)) - ([PR #2703](https://github.com/modular/mojo/pull/2703)) + ([PR 2587#](https://github.com/modular/max/pull/2587)) + ([PR #2703](https://github.com/modular/max/pull/2703)) - Added a new [`Span`](/mojo/stdlib/memory/span/Span) type for taking slices of contiguous collections. - ([PR #2595](https://github.com/modular/mojo/pull/2595)) + ([PR #2595](https://github.com/modular/max/pull/2595)) - [`os`](/mojo/stdlib/os/os/) module: - The `os` module now provides functionality for adding and removing directories using [`mkdir()`](/mojo/stdlib/os/os/mkdir) and [`rmdir()`](/mojo/stdlib/os/os/rmdir). - ([PR #2430](https://github.com/modular/mojo/pull/2430)) + ([PR #2430](https://github.com/modular/max/pull/2430)) - Added the [`os.path.getsize()`](/mojo/stdlib/os/path/path/getsize) function, which gives the size in bytes of the file identified by the path. - ([PR 2626](https://github.com/modular/mojo/pull/2626)) + ([PR 2626](https://github.com/modular/max/pull/2626)) - Added [`os.path.join()`](/mojo/stdlib/os/path/path/join) function. - ([PR 2792](https://github.com/modular/mojo/pull/2792)) + ([PR 2792](https://github.com/modular/max/pull/2792)) - Added a new [`tempfile`](/mojo/stdlib/tempfile/tempfile/) module, with `gettempdir()` and `mkdtemp()` functions. - ([PR 2742](https://github.com/modular/mojo/pull/2742)) + ([PR 2742](https://github.com/modular/max/pull/2742)) - [`SIMD`](/mojo/stdlib/builtin/simd/SIMD) type: - Added [`SIMD.shuffle()`](/mojo/stdlib/builtin/simd/SIMD#shuffle) with `IndexList` mask. - ([PR #2315](https://github.com/modular/mojo/pull/2315)) + ([PR #2315](https://github.com/modular/max/pull/2315)) - [`SIMD.__bool__()`](/mojo/stdlib/builtin/simd/SIMD#__bool__) is constrained such that it only works when `size` is `1`. For SIMD vectors with more than one element, use [`any()`](/mojo/stdlib/builtin/bool/any) or [`all()`](/mojo/stdlib/builtin/bool/all). - ([PR #2502](https://github.com/modular/mojo/pull/2502)) + ([PR #2502](https://github.com/modular/max/pull/2502)) - The [`SIMD.reduce_or()`](/mojo/stdlib/builtin/simd/SIMD#reduce_or) and [`SIMD.reduce_and()`](/mojo/stdlib/builtin/simd/SIMD#reduce_and) methods are now bitwise operations, and support integer types. - ([PR #2671](https://github.com/modular/mojo/pull/2671)) + ([PR #2671](https://github.com/modular/max/pull/2671)) - Added [`SIMD.__repr__()`](/mojo/stdlib/builtin/simd/SIMD#__repr__) to get the verbose string representation of `SIMD` types. - ([PR #2728](https://github.com/modular/mojo/pull/2728)) + ([PR #2728](https://github.com/modular/max/pull/2728)) - [`math`](/mojo/stdlib/math/math/) package: @@ -2964,7 +2964,7 @@ Big themes for this release: - [`math.gcd()`](/mojo/stdlib/math/math/gcd) now works on negative inputs, and like Python's implementation, accepts a variadic list of integers. New overloads for a `List` or `Span`of integers are also added. - ([PR #2777](https://github.com/modular/mojo/pull/2777)) + ([PR #2777](https://github.com/modular/max/pull/2777)) - Async and coroutines: @@ -2988,12 +2988,12 @@ Big themes for this release: that works on memory-only types. Compare with the existing [`StaticTuple`](/mojo/stdlib/utils/static_tuple/StaticTuple) type, which is conceptually an array type, but only works on `AnyTrivialRegType`. - ([PR #2294](https://github.com/modular/mojo/pull/2294)) + ([PR #2294](https://github.com/modular/max/pull/2294)) - The [`base64`](/mojo/stdlib/base64/) package now includes encoding and decoding support for both the Base64 and Base16 encoding schemes. - ([PR #2364](https://github.com/modular/mojo/pull/2364)) - ([PR #2584](https://github.com/modular/mojo/pull/2584)) + ([PR #2364](https://github.com/modular/max/pull/2364)) + ([PR #2584](https://github.com/modular/max/pull/2584)) - The `take()` function in [`Variant`](/mojo/stdlib/utils/variant/Variant) and [`Optional`](/mojo/stdlib/collections/optional/Optional) has been renamed to @@ -3010,7 +3010,7 @@ Big themes for this release: - `infinity` and `NaN` are now correctly handled in [`testing.assert_almost_equal()`](/mojo/stdlib/testing/testing/assert_almost_equal) and an `inf` function has been added to `utils/numerics.mojo`. - ([PR #2375](https://github.com/modular/mojo/pull/2375)) + ([PR #2375](https://github.com/modular/max/pull/2375)) ### Tooling changes @@ -3124,16 +3124,16 @@ Big themes for this release: #### 🛠️ Fixed -- [#1837](https://github.com/modular/mojo/issues/1837) Fix self-referential +- [#1837](https://github.com/modular/max/issues/1837) Fix self-referential variant crashing the compiler. -- [#2363](https://github.com/modular/mojo/issues/2363) Fix LSP crashing on +- [#2363](https://github.com/modular/max/issues/2363) Fix LSP crashing on simple trait definitions. -- [#1787](https://github.com/modular/mojo/issues/1787) Fix error when using +- [#1787](https://github.com/modular/max/issues/1787) Fix error when using `//` on `FloatLiteral` in alias expression. - Made several improvements to dictionary performance. Dicts with integer keys are most heavily affected, but large dicts and dicts with large values will also see large improvements. -- [#2692](https://github.com/modular/mojo/issues/2692) Fix `assert_raises` +- [#2692](https://github.com/modular/max/issues/2692) Fix `assert_raises` to include calling location. ### Special thanks @@ -3322,21 +3322,21 @@ Special thanks to our community contributors: - `pop(index)` for removing an element at a particular index. By default, `List.pop()` removes the last element in the list. ([@LJ-9801](https://github.com/LJ-9801), fixes - [#2017](https://github.com/modular/mojo/issues/2017)) + [#2017](https://github.com/modular/max/issues/2017)) - `resize(new_size)` for resizing the list without the need to specify an additional value. ([@mikowals](https://github.com/mikowals), fixes - [#2133](https://github.com/modular/mojo/issues/2133)) + [#2133](https://github.com/modular/max/issues/2133)) - `insert(index, value)` for inserting a value at a specified index into the `List`. ([@whym1here](https://github.com/whym1here), fixes - [#2134](https://github.com/modular/mojo/issues/2134)) + [#2134](https://github.com/modular/max/issues/2134)) - A new constructor `List(ptr, size, capacity)` to to avoid needing to do a deep copy of an existing contiguous memory allocation when constructing a new `List`. ([@StandinKP](https://github.com/StandinKP), fixes - [#2170](https://github.com/modular/mojo/issues/2170)) + [#2170](https://github.com/modular/max/issues/2170)) - [`Dict`](/mojo/stdlib/collections/dict/Dict) now has a `update()` method to update keys/values from another `Dict`. @@ -3377,7 +3377,7 @@ Special thanks to our community contributors: ([@helehex](https://github.com/helehex) and [@jayzhan211](https://github.com/jayzhan211), contributes towards - [#2325](https://github.com/modular/mojo/issues/2325)) + [#2325](https://github.com/modular/max/issues/2325)) - [`Optional`](/mojo/stdlib/collections/optional/Optional) now implements `__is__` and `__isnot__` methods so that you can compare an `Optional` with @@ -3524,7 +3524,7 @@ Special thanks to our community contributors: [`chr`](/mojo/stdlib/collections/string/chr) functions have been improved to accept any Unicode character. ([@mzaks](https://github.com/mzaks), contributes towards - [#1616](https://github.com/modular/mojo/issues/1616)) + [#1616](https://github.com/modular/max/issues/1616)) - [`atol()`](/mojo/stdlib/collections/string/atol) now handles whitespace. The `atol()`function is used internally by `String.__int__()`, so @@ -3533,7 +3533,7 @@ Special thanks to our community contributors: - [`SIMD`](/mojo/stdlib/builtin/simd/SIMD) now implements the `__rmod__()` method. ([@bgreni](https://github.com/bgreni), fixes - [#1482](https://github.com/modular/mojo/issues/1482)) + [#1482](https://github.com/modular/max/issues/1482)) - [`bool(None)`](/mojo/stdlib/builtin/bool/bool-function) is now implemented. ([@zhoujingya](https://github.com/zhoujingya)) @@ -3568,7 +3568,7 @@ Special thanks to our community contributors: division, modulo, and left and right shift operators, including the in-place and reverse variants. ([@LJ-9801](https://github.com/LJ-9801), fixes - [#2224](https://github.com/modular/mojo/issues/2224)) + [#2224](https://github.com/modular/max/issues/2224)) - Added checked arithmetic operations for `SIMD` integers. @@ -3600,7 +3600,7 @@ Special thanks to our community contributors: - Added [`os.remove()`](/mojo/stdlib/os/os/remove) and [`os.unlink()`](/mojo/stdlib/os/os/unlink) for deleting files. ([@artemiogr97](https://github.com/artemiogr97), fixes - [#2306](https://github.com/modular/mojo/issues/2306)) + [#2306](https://github.com/modular/max/issues/2306)) #### 🦋 Changed @@ -3620,15 +3620,15 @@ Special thanks to our community contributors: ``` ([@lsh](https://github.com/lsh), fixes - [#2179](https://github.com/modular/mojo/issues/2179)) + [#2179](https://github.com/modular/max/issues/2179)) -- Per the accepted community proposal, - [Standardize the representation of byte sequence as a sequence of unsigned - 8-bit integers](https://github.com/modular/mojo/blob/main/proposals/byte-as-uint8.md), - began transition to using `UInt8` by changing the data pointer of `Error` - to `DTypePointer[DType.uint8]`. - ([@gabrieldemarmiesse](https://github.com/gabrieldemarmiesse), contributes - towards [#2317](https://github.com/modular/mojo/issues/2317)) +- Per the accepted community proposal, [Standardize the representation of byte +sequence as a sequence of unsigned 8-bit +integers](https://github.com/modular/max/blob/main/mojo/proposals/byte-as-uint8.md), +began transition to using `UInt8` by changing the data pointer of `Error` to +`DTypePointer[DType.uint8]`. +([@gabrieldemarmiesse](https://github.com/gabrieldemarmiesse), contributes +towards [#2317](https://github.com/modular/max/issues/2317)) - Continued transition to `UnsafePointer` from the legacy `Pointer` type in various standard library APIs and internals. @@ -3700,56 +3700,56 @@ Special thanks to our community contributors: #### 🛠️ Fixed -- [#516](https://github.com/modular/mojo/issues/516) and - [#1817](https://github.com/modular/mojo/issues/1817) and many others, e.g. +- [#516](https://github.com/modular/max/issues/516) and + [#1817](https://github.com/modular/max/issues/1817) and many others, e.g. "Can't create a function that returns two strings." -- [#1178](https://github.com/modular/mojo/issues/1178) (os/kern) failure (5). +- [#1178](https://github.com/modular/max/issues/1178) (os/kern) failure (5). -- [#1609](https://github.com/modular/mojo/issues/1609) alias with +- [#1609](https://github.com/modular/max/issues/1609) alias with `DynamicVector[Tuple[Int]]` fails. -- [#1987](https://github.com/modular/mojo/issues/1987) Defining `main` +- [#1987](https://github.com/modular/max/issues/1987) Defining `main` in a Mojo package is an error, for now. This is not intended to work yet, erroring for now will help to prevent accidental undefined behavior. -- [#1215](https://github.com/modular/mojo/issues/1215) and - [#1949](https://github.com/modular/mojo/issues/1949) The Mojo LSP server no +- [#1215](https://github.com/modular/max/issues/1215) and + [#1949](https://github.com/modular/max/issues/1949) The Mojo LSP server no longer cuts off hover previews for functions with functional arguments, parameters, or results. -- [#1901](https://github.com/modular/mojo/issues/1901) Fixed Mojo LSP and +- [#1901](https://github.com/modular/max/issues/1901) Fixed Mojo LSP and documentation generation handling of inout arguments. -- [#1913](https://github.com/modular/mojo/issues/1913) - `0__` no longer +- [#1913](https://github.com/modular/max/issues/1913) - `0__` no longer crashes the Mojo parser. -- [#1924](https://github.com/modular/mojo/issues/1924) JIT debugging on Mac +- [#1924](https://github.com/modular/max/issues/1924) JIT debugging on Mac has been fixed. -- [#1941](https://github.com/modular/mojo/issues/1941) Mojo variadic arguments +- [#1941](https://github.com/modular/max/issues/1941) Mojo variadic arguments don't work with non-trivial register-only types. -- [#1963](https://github.com/modular/mojo/issues/1963) `a!=0` is now parsed +- [#1963](https://github.com/modular/max/issues/1963) `a!=0` is now parsed and formatted correctly by `mojo format`. -- [#1676](https://github.com/modular/mojo/issues/1676) Fix a crash related to +- [#1676](https://github.com/modular/max/issues/1676) Fix a crash related to `@value` decorator and structs with empty body. -- [#1917](https://github.com/modular/mojo/issues/1917) Fix a crash after +- [#1917](https://github.com/modular/max/issues/1917) Fix a crash after syntax error during tuple creation. -- [#2006](https://github.com/modular/mojo/issues/2006) The Mojo LSP now +- [#2006](https://github.com/modular/max/issues/2006) The Mojo LSP now properly supports signature types with named arguments and parameters. -- [#2007](https://github.com/modular/mojo/issues/2007) and - [#1997](https://github.com/modular/mojo/issues/1997) The Mojo LSP no longer +- [#2007](https://github.com/modular/max/issues/2007) and + [#1997](https://github.com/modular/max/issues/1997) The Mojo LSP no longer crashes on certain types of closures. -- [#1675](https://github.com/modular/mojo/issues/1675) Ensure `@value` +- [#1675](https://github.com/modular/max/issues/1675) Ensure `@value` decorator fails gracefully after duplicate field error. -- [#2068](https://github.com/modular/mojo/issues/2068) +- [#2068](https://github.com/modular/max/issues/2068) Fix `SIMD.reduce()` for size_out == 2. ([@soraros](https://github.com/soraros)) @@ -3762,7 +3762,7 @@ This release doesn't include any changes to Mojo. ### 🔥 Legendary - The Mojo standard library is now open source! Check out the - [README](https://github.com/modular/mojo/blob/main/stdlib/README.md) + [README](https://github.com/modular/max/blob/main/mojo/stdlib/README.md) for everything you need to get started. - Structs and other nominal types are now allowed to implicitly conform to @@ -3831,7 +3831,7 @@ This release doesn't include any changes to Mojo. - `let` declarations now produce a compile time error instead of a warning, our next step in [removing let - declarations](https://github.com/modular/mojo/blob/main/proposals/remove-let-decls.md). + declarations](https://github.com/modular/max/blob/main/mojo/proposals/remove-let-decls.md). The compiler still recognizes the `let` keyword for now in order to produce a good error message, but that will be removed in subsequent releases. @@ -4135,27 +4135,27 @@ fixed in a future release. #### 🛠️ Fixed -- [#1362](https://github.com/modular/mojo/issues/1362) - Parameter inference +- [#1362](https://github.com/modular/max/issues/1362) - Parameter inference now recursively matches function types. -- [#951](https://github.com/modular/mojo/issues/951) - Functions that were +- [#951](https://github.com/modular/max/issues/951) - Functions that were both `async` and `@always_inline` incorrectly errored. -- [#1858](https://github.com/modular/mojo/issues/1858) - Trait with parametric +- [#1858](https://github.com/modular/max/issues/1858) - Trait with parametric methods regression. -- [#1892](https://github.com/modular/mojo/issues/1892) - Forbid unsupported +- [#1892](https://github.com/modular/max/issues/1892) - Forbid unsupported decorators on traits. -- [#1735](https://github.com/modular/mojo/issues/1735) - Trait-typed values +- [#1735](https://github.com/modular/max/issues/1735) - Trait-typed values are incorrectly considered equal. -- [#1909](https://github.com/modular/mojo/issues/1909) - Crash due to nested +- [#1909](https://github.com/modular/max/issues/1909) - Crash due to nested import in unreachable block. -- [#1921](https://github.com/modular/mojo/issues/1921) - Parser crashes +- [#1921](https://github.com/modular/max/issues/1921) - Parser crashes binding Reference to lvalue with subtype lifetime. -- [#1945](https://github.com/modular/mojo/issues/1945) - `Optional[T].or_else()` +- [#1945](https://github.com/modular/max/issues/1945) - `Optional[T].or_else()` should return `T` instead of `Optional[T]`. -- [#1940](https://github.com/modular/mojo/issues/1940) - Constrain +- [#1940](https://github.com/modular/max/issues/1940) - Constrain `math.copysign` to floating point or integral types. -- [#1838](https://github.com/modular/mojo/issues/1838) - Variadic `print` +- [#1838](https://github.com/modular/max/issues/1838) - Variadic `print` does not work when specifying `end=""` -- [#1826](https://github.com/modular/mojo/issues/1826) - The `SIMD.reduce` +- [#1826](https://github.com/modular/max/issues/1826) - The `SIMD.reduce` methods correctly handle edge cases where `size_out >= size`. ## v24.1.1 (2024-03-18) @@ -4509,7 +4509,7 @@ installation issues. Otherwise it is functionally identical to Mojo 24.1. ### 🦋 Changed - As another step towards [removing let - declarations](https://github.com/modular/mojo/blob/main/proposals/remove-let-decls.md) + declarations](https://github.com/modular/max/blob/main/mojo/proposals/remove-let-decls.md) we have removed support for let declarations inside the compiler. To ease migration, we parse `let` declarations as a `var` declaration so your code won't break. We emit a warning about this, but please switch your code to @@ -4609,72 +4609,72 @@ experience without dedicated sugar. ### 🛠️ Fixed -- [#435](https://github.com/modular/mojo/issues/435) +- [#435](https://github.com/modular/max/issues/435) Structs with Self type don't always work. -- [#1540](https://github.com/modular/mojo/issues/1540) +- [#1540](https://github.com/modular/max/issues/1540) Crash in register_passable self referencing struct. -- [#1664](https://github.com/modular/mojo/issues/1664) - Improve error +- [#1664](https://github.com/modular/max/issues/1664) - Improve error message when `StaticTuple` is constructed with a negative size for the number of elements. -- [#1679](https://github.com/modular/mojo/issues/1679) - crash on SIMD of zero +- [#1679](https://github.com/modular/max/issues/1679) - crash on SIMD of zero elements. - Various crashes on invalid code: - [#1230](https://github.com/modular/mojo/issues/1230), - [#1699](https://github.com/modular/mojo/issues/1699), - [#1708](https://github.com/modular/mojo/issues/1708) -- [#1223](https://github.com/modular/mojo/issues/1223) - Crash when parametric + [#1230](https://github.com/modular/max/issues/1230), + [#1699](https://github.com/modular/max/issues/1699), + [#1708](https://github.com/modular/max/issues/1708) +- [#1223](https://github.com/modular/max/issues/1223) - Crash when parametric function is passed as (runtime) argument. The parser now errors out instead. -- [#1530](https://github.com/modular/mojo/issues/1530) - Crash during +- [#1530](https://github.com/modular/max/issues/1530) - Crash during diagnostic emission for parameter deduction failure. -- [#1538](https://github.com/modular/mojo/issues/1538) and [#1607]( - https://github.com/modular/mojo/issues/1607) - Crash when returning type +- [#1538](https://github.com/modular/max/issues/1538) and [#1607]( + https://github.com/modular/max/issues/1607) - Crash when returning type value instead of instance of expected type. This is a common mistake and the error now includes a hint to point users to the problem. -- [#1613](https://github.com/modular/mojo/issues/1613) - Wrong type name in +- [#1613](https://github.com/modular/max/issues/1613) - Wrong type name in error for incorrect `self` argument type in trait method declaration. -- [#1670](https://github.com/modular/mojo/issues/1670) - Crash on implicit +- [#1670](https://github.com/modular/max/issues/1670) - Crash on implicit conversion in a global variable declaration. -- [#1741](https://github.com/modular/mojo/issues/1741) - Mojo documentation +- [#1741](https://github.com/modular/max/issues/1741) - Mojo documentation generation doesn't show `inout`/`owned` on variadic arguments. -- [#1621](https://github.com/modular/mojo/issues/1621) - VS Code does not +- [#1621](https://github.com/modular/max/issues/1621) - VS Code does not highlight `raises` and `capturing` in functional type expressions. -- [#1617](https://github.com/modular/mojo/issues/1617) - VS Code does not +- [#1617](https://github.com/modular/max/issues/1617) - VS Code does not highlight `fn` in specific contexts. -- [#1740](https://github.com/modular/mojo/issues/1740) - LSP shows unrelated +- [#1740](https://github.com/modular/max/issues/1740) - LSP shows unrelated info when hovering over a struct. -- [#1238](https://github.com/modular/mojo/issues/1238) - File shadows Mojo +- [#1238](https://github.com/modular/max/issues/1238) - File shadows Mojo package path. -- [#1429](https://github.com/modular/mojo/issues/1429) - Crash when using +- [#1429](https://github.com/modular/max/issues/1429) - Crash when using nested import statement. -- [#1322](https://github.com/modular/mojo/issues/1322) - Crash when missing +- [#1322](https://github.com/modular/max/issues/1322) - Crash when missing types in variadic argument. -- [#1314](https://github.com/modular/mojo/issues/1314) - Typecheck error when +- [#1314](https://github.com/modular/max/issues/1314) - Typecheck error when binding alias to parametric function with default argument. -- [#1248](https://github.com/modular/mojo/issues/1248) - Crash when importing +- [#1248](https://github.com/modular/max/issues/1248) - Crash when importing from file the same name as another file in the search path. -- [#1354](https://github.com/modular/mojo/issues/1354) - Crash when importing +- [#1354](https://github.com/modular/max/issues/1354) - Crash when importing from local package. -- [#1488](https://github.com/modular/mojo/issues/1488) - Crash when setting +- [#1488](https://github.com/modular/max/issues/1488) - Crash when setting generic element field. -- [#1476](https://github.com/modular/mojo/issues/1476) - Crash in interpreter +- [#1476](https://github.com/modular/max/issues/1476) - Crash in interpreter when calling functions in parameter context. -- [#1537](https://github.com/modular/mojo/issues/1537) - Crash when copying +- [#1537](https://github.com/modular/max/issues/1537) - Crash when copying parameter value. -- [#1546](https://github.com/modular/mojo/issues/1546) - Modify nested vector +- [#1546](https://github.com/modular/max/issues/1546) - Modify nested vector element crashes parser. -- [#1558](https://github.com/modular/mojo/issues/1558) - Invalid import causes +- [#1558](https://github.com/modular/max/issues/1558) - Invalid import causes parser to crash. -- [#1562](https://github.com/modular/mojo/issues/1562) - Crash when calling +- [#1562](https://github.com/modular/max/issues/1562) - Crash when calling parametric type member function. -- [#1577](https://github.com/modular/mojo/issues/1577) - Crash when using +- [#1577](https://github.com/modular/max/issues/1577) - Crash when using unresolved package as a variable. -- [#1579](https://github.com/modular/mojo/issues/1579) - Member access into +- [#1579](https://github.com/modular/max/issues/1579) - Member access into type instances causes a crash. -- [#1602](https://github.com/modular/mojo/issues/1602) - Interpreter failure +- [#1602](https://github.com/modular/max/issues/1602) - Interpreter failure when constructing strings at compile time. -- [#1696](https://github.com/modular/mojo/issues/1696) - Fixed an issue that +- [#1696](https://github.com/modular/max/issues/1696) - Fixed an issue that caused syntax highlighting to occasionally fail. -- [#1549](https://github.com/modular/mojo/issues/1549) - Fixed an issue when +- [#1549](https://github.com/modular/max/issues/1549) - Fixed an issue when the shift amount is out of range in `SIMD.shift_left` and `SIMD.shift_right`. ## v0.7.0 (2024-01-25) @@ -5020,7 +5020,7 @@ experience without dedicated sugar. - The `simd_width` and `dtype` parameters of `polynomial_evaluate` have been switched. Based on the request in - [#1587](https://github.com/modular/mojo/issues/1587), the + [#1587](https://github.com/modular/max/issues/1587), the `polynomial_evaluate` function has also been extended so that the `coefficients` parameter can take either a either a [`StaticTuple`](/mojo/stdlib/utils/static_tuple/StaticTuple) or a @@ -5031,50 +5031,50 @@ experience without dedicated sugar. ### 🛠️ Fixed -- [#1595](https://github.com/modular/mojo/issues/1595) - Improve error message +- [#1595](https://github.com/modular/max/issues/1595) - Improve error message when trying to materialize `IntLiteral` in runtime code. - Raising an error from the initializer of a memory-only type now works correctly in the presence of complex control flow. Previously Mojo could run the destructor on `self` before it was initialized when exiting with an error. -- [#1096](https://github.com/modular/mojo/issues/1096) - Improve warning +- [#1096](https://github.com/modular/max/issues/1096) - Improve warning messages for dead code in conditionals like `or` expressions. -- [#1419](https://github.com/modular/mojo/issues/1419) - Fix assertion failure +- [#1419](https://github.com/modular/max/issues/1419) - Fix assertion failure with uninitialized lattice values. -- [#1402](https://github.com/modular/mojo/issues/1402) - Fix movable trait not +- [#1402](https://github.com/modular/max/issues/1402) - Fix movable trait not detected on recursive struct implemented with `AnyPointer`. -- [#1399](https://github.com/modular/mojo/issues/1399) - Fix parser crash when +- [#1399](https://github.com/modular/max/issues/1399) - Fix parser crash when a parameter type in a struct that implements a trait is misspelled. -- [#1152](https://github.com/modular/mojo/issues/1152) - Allow mutable `self` +- [#1152](https://github.com/modular/max/issues/1152) - Allow mutable `self` argument when overloading operators using dunder methods. -- [#1493](https://github.com/modular/mojo/issues/1493) - Fix crash in +- [#1493](https://github.com/modular/max/issues/1493) - Fix crash in `DynamicVector` copy constructor in certain situations. -- [#1316](https://github.com/modular/mojo/issues/1316) - The `benchmark.keep` +- [#1316](https://github.com/modular/max/issues/1316) - The `benchmark.keep` function now properly handles vector types. -- [#1505](https://github.com/modular/mojo/issues/1505) - The `simd.shuffle` +- [#1505](https://github.com/modular/max/issues/1505) - The `simd.shuffle` operation now works on 64 element permutations. -- [#1355](https://github.com/modular/mojo/issues/1355) - Fix `String.find()` +- [#1355](https://github.com/modular/max/issues/1355) - Fix `String.find()` returning wrong value when starting index is non-zero. -- [#1367](https://github.com/modular/mojo/issues/1367) - Fix `String.replace()` +- [#1367](https://github.com/modular/max/issues/1367) - Fix `String.replace()` returning incorrect results for multi-character search strings. -- [#1535](https://github.com/modular/mojo/issues/1535) - Invalid error `field +- [#1535](https://github.com/modular/max/issues/1535) - Invalid error `field 'w.x.y' destroyed out of the middle of a value, preventing the overall value from being destroyed`. -- [#1475](https://github.com/modular/mojo/issues/1475) - Assertion failure in +- [#1475](https://github.com/modular/max/issues/1475) - Assertion failure in nested loop. -- [#1591](https://github.com/modular/mojo/issues/1591) - Assertion failure +- [#1591](https://github.com/modular/max/issues/1591) - Assertion failure when using `AnyType` struct member. -- [#1503](https://github.com/modular/mojo/issues/1503) - Rename the mojo build +- [#1503](https://github.com/modular/max/issues/1503) - Rename the mojo build of LLDB to `mojo-lldb`, to prevent name collisions with the system's LLDB. -- [#1542](https://github.com/modular/mojo/issues/1542) - `@unroll` does not +- [#1542](https://github.com/modular/max/issues/1542) - `@unroll` does not accept alias as unroll factor. -- [#1443](https://github.com/modular/mojo/issues/1443) - Compiler crash on +- [#1443](https://github.com/modular/max/issues/1443) - Compiler crash on variadic list of traits. -- [#1604](https://github.com/modular/mojo/issues/1604) - Variable of trivial +- [#1604](https://github.com/modular/max/issues/1604) - Variable of trivial type not destroyed by transferring ownership. -- [#1341](https://github.com/modular/mojo/issues/1341) - Segmentation fault +- [#1341](https://github.com/modular/max/issues/1341) - Segmentation fault when passing closures around. -- [#217](https://github.com/modular/mojo/issues/217) - Closure state is +- [#217](https://github.com/modular/max/issues/217) - Closure state is stack allocated. ## v0.6.1 (2023-12-18) @@ -5136,23 +5136,23 @@ experience without dedicated sugar. ### 🛠️ Fixed -- [#1421](https://github.com/modular/mojo/issues/1421) - Fixed a crash when +- [#1421](https://github.com/modular/max/issues/1421) - Fixed a crash when using Tuples in the REPL. -- [#222](https://github.com/modular/mojo/issues/222) - Generate an error +- [#222](https://github.com/modular/max/issues/222) - Generate an error for obviously self recursive functions. -- [#1408](https://github.com/modular/mojo/issues/1408) - Fix overload +- [#1408](https://github.com/modular/max/issues/1408) - Fix overload resolution when candidates can return generic types. -- [#1413](https://github.com/modular/mojo/issues/1413) and - [#1395](https://github.com/modular/mojo/issues/1395) - Do not crash when +- [#1413](https://github.com/modular/max/issues/1413) and + [#1395](https://github.com/modular/max/issues/1395) - Do not crash when re-declaring a builtin declaration. -- [#1307](https://github.com/modular/mojo/issues/1307) - Fix compatibility of +- [#1307](https://github.com/modular/max/issues/1307) - Fix compatibility of function signatures that only differ in default argument values. -- [#1380](https://github.com/modular/mojo/issues/1380) - Fix printing +- [#1380](https://github.com/modular/max/issues/1380) - Fix printing of empty `String`. ## v0.6.0 (2023-12-04) @@ -5287,7 +5287,7 @@ experience without dedicated sugar. manual (now deprecated). Plus, the entire Mojo Manual and other Mojo docs are now [open-sourced on - GitHub](https://github.com/modular/mojo/tree/main/docs), and we'd love + GitHub](https://github.com/modular/max/tree/main/mojo/docs), and we'd love to accept contributions to help us improve them! - Mojo now supports partial automatic parameterization: when a function is @@ -5455,7 +5455,7 @@ the previous "read to EOF" behavior when size is negative. - The Mojo Language Server now implements the Document Symbols request. IDEs use this to provide support for **Outline View** and **Go to Symbol**. This - addresses [Issue #960](https://github.com/modular/mojo/issues/960). + addresses [Issue #960](https://github.com/modular/max/issues/960). - The Mojo Language Server now shows documentation when code completing modules or packages in `import` statements. @@ -5519,31 +5519,31 @@ the previous "read to EOF" behavior when size is negative. ### 🛠️ Fixed -- [#734](https://github.com/modular/mojo/issues/734) - Consumption of struct +- [#734](https://github.com/modular/max/issues/734) - Consumption of struct works only for types with a `__del__` method. -- [#910](https://github.com/modular/mojo/issues/910) - Parser crash when +- [#910](https://github.com/modular/max/issues/910) - Parser crash when using memory-only generic type as return of function that `raise`s. -- [#1060](https://github.com/modular/mojo/issues/1060) - Mojo happily parses +- [#1060](https://github.com/modular/max/issues/1060) - Mojo happily parses code that has messed up indentation -- [#1159](https://github.com/modular/mojo/issues/1159) - The language server +- [#1159](https://github.com/modular/max/issues/1159) - The language server doesn't warn about bad return type. -- [#1166](https://github.com/modular/mojo/issues/1166) - warning: unreachable +- [#1166](https://github.com/modular/max/issues/1166) - warning: unreachable code after return statement with context manager -- [#1098](https://github.com/modular/mojo/issues/1098) - The language server +- [#1098](https://github.com/modular/max/issues/1098) - The language server doesn't highlight properties of PythonObjects correctly. -- [#1153](https://github.com/modular/mojo/issues/1153) - The language server +- [#1153](https://github.com/modular/max/issues/1153) - The language server crashes when parsing an invalid multi-nested module import. -- [#1236](https://github.com/modular/mojo/issues/1236) - The language server +- [#1236](https://github.com/modular/max/issues/1236) - The language server doesn't show autocomplete in if statements. -- [#1246](https://github.com/modular/mojo/issues/1246) - Warning diagnostics +- [#1246](https://github.com/modular/max/issues/1246) - Warning diagnostics are transient in the presence of caching. ### Known Issue @@ -5798,32 +5798,32 @@ the previous "read to EOF" behavior when size is negative. ### 🛠️ Fixed -- [#532](https://github.com/modular/mojo/issues/532) - Compiler optimizing +- [#532](https://github.com/modular/max/issues/532) - Compiler optimizing while True loop away -- [#760](https://github.com/modular/mojo/issues/760) - Compilation error: +- [#760](https://github.com/modular/max/issues/760) - Compilation error: 'hlcf.for.yield' op specifies 0 branch inputs but target expected 1 along control-flow edge from here -- [#849](https://github.com/modular/mojo/issues/849) - The `Tensor` type is +- [#849](https://github.com/modular/max/issues/849) - The `Tensor` type is now initialized with zeros at construction time. -- [#912](https://github.com/modular/mojo/issues/912) - Invalid load for +- [#912](https://github.com/modular/max/issues/912) - Invalid load for `__get_address_as_lvalue`. -- [#916](https://github.com/modular/mojo/issues/916) - Parser crash when +- [#916](https://github.com/modular/max/issues/916) - Parser crash when specifying default values for `inout` arguments. -- [#943](https://github.com/modular/mojo/issues/943) - Mojo hangs if you +- [#943](https://github.com/modular/max/issues/943) - Mojo hangs if you use continue in the nested loop -- [#957](https://github.com/modular/mojo/issues/957) - Parser crash when a +- [#957](https://github.com/modular/max/issues/957) - Parser crash when a function call with variadic arguments of a memory-only type is evaluated at compile time. -- [#990](https://github.com/modular/mojo/issues/990) - Fixes rounding +- [#990](https://github.com/modular/max/issues/990) - Fixes rounding issue with floor division with negative numerator. -- [#1018](https://github.com/modular/mojo/issues/1018) - In some cases the +- [#1018](https://github.com/modular/max/issues/1018) - In some cases the sort function was returning invalid results. This release fixes some of these corner cases. -- [#1010](https://github.com/modular/mojo/issues/1010) - Initializing tensor +- [#1010](https://github.com/modular/max/issues/1010) - Initializing tensor in alias declaration results in crash. -- [#1110](https://github.com/modular/mojo/issues/1110) - The `time.now()` +- [#1110](https://github.com/modular/max/issues/1110) - The `time.now()` function now returns nanoseconds across all operating systems. -- [#1115](https://github.com/modular/mojo/issues/1115) - cannot load +- [#1115](https://github.com/modular/max/issues/1115) - cannot load non-register passable type into SSA register. ## v0.4.0 for Mac (2023-10-19) @@ -6002,33 +6002,33 @@ the previous "read to EOF" behavior when size is negative. ### 🛠️ Fixed -- [#794](https://github.com/modular/mojo/issues/794) - Parser crash when +- [#794](https://github.com/modular/max/issues/794) - Parser crash when using the `in` operator. -- [#936](https://github.com/modular/mojo/issues/936) - The `Int` constructor +- [#936](https://github.com/modular/max/issues/936) - The `Int` constructor now accepts other `Int` instances. -- [#921](https://github.com/modular/mojo/issues/921) - Better error message +- [#921](https://github.com/modular/max/issues/921) - Better error message when running `mojo` on a module with no `main` function. -- [#556](https://github.com/modular/mojo/issues/556) - UInt64s are now +- [#556](https://github.com/modular/max/issues/556) - UInt64s are now printed correctly. -- [#804](https://github.com/modular/mojo/issues/804) - Emit error instead of +- [#804](https://github.com/modular/max/issues/804) - Emit error instead of crashing when passing variadic arguments of unsupported types. -- [#833](https://github.com/modular/mojo/issues/833) - Parser crash when +- [#833](https://github.com/modular/max/issues/833) - Parser crash when assigning module value. -- [#752](https://github.com/modular/mojo/issues/752) - Parser crash when +- [#752](https://github.com/modular/max/issues/752) - Parser crash when calling async def. -- [#711](https://github.com/modular/mojo/issues/711) - The overload resolution +- [#711](https://github.com/modular/max/issues/711) - The overload resolution logic now correctly prioritizes instance methods over static methods (if candidates are an equally good match otherwise), and no longer crashed if a static method has a `Self` type as its first argument. -- [#859](https://github.com/modular/mojo/issues/859) - Fix confusing error and +- [#859](https://github.com/modular/max/issues/859) - Fix confusing error and documentation of the `rebind` builtin. -- [#753](https://github.com/modular/mojo/issues/753) - Direct use of LLVM +- [#753](https://github.com/modular/max/issues/753) - Direct use of LLVM dialect produces strange errors in the compiler. -- [#926](https://github.com/modular/mojo/issues/926) - Fixes an issue that +- [#926](https://github.com/modular/max/issues/926) - Fixes an issue that occurred when a function with a return type of `StringRef` raised an error. When the function raised an error, it incorrectly returned the string value of that error. -- [#536](https://github.com/modular/mojo/issues/536) - Report More information +- [#536](https://github.com/modular/max/issues/536) - Report More information on python exception. ## v0.3.1 (2023-09-28) @@ -6039,15 +6039,15 @@ installing the previous versions of the SDK, this release may be for you. ### 🛠️ Fixed -- [#538](https://github.com/modular/mojo/issues/538) - Installation hangs +- [#538](https://github.com/modular/max/issues/538) - Installation hangs during the testing phase. This issue occurs on machines with a low number of CPU cores, such as free AWS EC2 instances and GitHub Codespaces. -- [#590](https://github.com/modular/mojo/issues/590) - Installation fails +- [#590](https://github.com/modular/max/issues/590) - Installation fails with a “failed to run python” message. -- [#672](https://github.com/modular/mojo/issues/672) - Language server hangs +- [#672](https://github.com/modular/max/issues/672) - Language server hangs on code completion. Related to #538, this occurs on machines with a low number of CPU cores. -- [#913](https://github.com/modular/mojo/issues/913) - In the REPL and Jupyter +- [#913](https://github.com/modular/max/issues/913) - In the REPL and Jupyter notebooks, inline comments were being parsed incorrectly. ## v0.3.0 (2023-09-21) @@ -6149,7 +6149,7 @@ Code](https://marketplace.visualstudio.com/items?itemName=modular-mojotools.vsco - The Mojo Language Server now supports top-level code completions, enabling completion when typing a reference to a variable, type, etc. This resolves - [#679](https://github.com/modular/mojo/issues/679). + [#679](https://github.com/modular/max/issues/679). - The Mojo REPL now colorizes the resultant variables to help distinguish input expressions from the output variables. @@ -6188,19 +6188,19 @@ Code](https://marketplace.visualstudio.com/items?itemName=modular-mojotools.vsco ### 🛠️ Fixed -- [#503](https://github.com/modular/mojo/issues/503) - Improve error message +- [#503](https://github.com/modular/max/issues/503) - Improve error message for failure lowering `kgen.param.constant`. -- [#554](https://github.com/modular/mojo/issues/554) - Alias of static tuple +- [#554](https://github.com/modular/max/issues/554) - Alias of static tuple fails to expand. -- [#500](https://github.com/modular/mojo/issues/500) - Call expansion failed +- [#500](https://github.com/modular/max/issues/500) - Call expansion failed due to verifier error. -- [#422](https://github.com/modular/mojo/issues/422) - Incorrect comment +- [#422](https://github.com/modular/max/issues/422) - Incorrect comment detection in multiline strings. -- [#729](https://github.com/modular/mojo/issues/740) - Improve messaging on +- [#729](https://github.com/modular/max/issues/740) - Improve messaging on how to exit the REPL. -- [#756](https://github.com/modular/mojo/issues/756) - Fix initialization +- [#756](https://github.com/modular/max/issues/756) - Fix initialization errors of the VS Code extension. -- [#575](https://github.com/modular/mojo/issues/575) - Build LLDB/REPL with +- [#575](https://github.com/modular/max/issues/575) - Build LLDB/REPL with libedit for a nicer editing experience in the terminal. ## v0.2.1 (2023-09-07) @@ -6263,17 +6263,17 @@ All earlier releases were considered version 0.1. been changed to enable type inference. Now it's possible to write `rotate_right[shift_val](simd_val)` and have the `dtype` and `simd_width` inferred from the argument. This addresses - [Issue #528](https://github.com/modular/mojo/issues/528). + [Issue #528](https://github.com/modular/max/issues/528). ### 🛠️ Fixed - Fixed a bug causing the parser to crash when the `with` statement was written without a colon. - This addresses [Issue #529](https://github.com/modular/mojo/issues/529). + This addresses [Issue #529](https://github.com/modular/max/issues/529). - Incorrect imports no longer crash when there are other errors at the top level of a module. This fixes [Issue - #531](https://github.com/modular/mojo/issues/531). + #531](https://github.com/modular/max/issues/531). ## August 2023 @@ -6348,15 +6348,15 @@ All earlier releases were considered version 0.1. #### 🛠️ Fixed - Fixed issues with print formatting for `DType.uint16` and `DType.int16`. -- [Issue #499](https://github.com/modular/mojo/issues/499) - Two new +- [Issue #499](https://github.com/modular/max/issues/499) - Two new `rotate_right` and `rotate_left` functions have been added to the SIMD module. -- [Issue #429](https://github.com/modular/mojo/issues/429) - You can now +- [Issue #429](https://github.com/modular/max/issues/429) - You can now construct a `Bool` from a `SIMD` type whose element-type is `DType.bool`. -- [Issue #350](https://github.com/modular/mojo/issues/350) - Confusing Matrix +- [Issue #350](https://github.com/modular/max/issues/350) - Confusing Matrix implementation -- [Issue #349](https://github.com/modular/mojo/issues/349) - Missing load_tr +- [Issue #349](https://github.com/modular/max/issues/349) - Missing load_tr in struct Matrix -- [Issue #501](https://github.com/modular/mojo/issues/501) - Missing syntax +- [Issue #501](https://github.com/modular/max/issues/501) - Missing syntax error messages in Python expressions. ### 2023-08-09 @@ -6420,7 +6420,7 @@ All earlier releases were considered version 0.1. #### 🛠️ Fixed -- [Issue #53](https://github.com/modular/mojo/issues/53) - `Int` now +- [Issue #53](https://github.com/modular/max/issues/53) - `Int` now implements true division with the `/` operator. Similar to Python, this returns a 64-bit floating point number. The corresponding in-place operator, `/=`, has the same semantics as `//=`. @@ -6460,10 +6460,10 @@ All earlier releases were considered version 0.1. #### 🛠️ Fixed -- [Issue #437](https://github.com/modular/mojo/issues/437) - Range can now +- [Issue #437](https://github.com/modular/max/issues/437) - Range can now be instantiated with a PythonObject. -- [Issue #288](https://github.com/modular/mojo/issues/288) - Python strings +- [Issue #288](https://github.com/modular/max/issues/288) - Python strings can now be safely copied. ### 2023-07-20 @@ -6472,7 +6472,7 @@ All earlier releases were considered version 0.1. - Mojo now includes a `Limits` module, which contains functions to get the max and min values representable by a type, as requested in [Issue - #51](https://github.com/modular/mojo/issues/51). The following functions + #51](https://github.com/modular/max/issues/51). The following functions moved from `Math` to `Limits`: `inf()`, `neginf()`, `isinf()`, `isfinite()`. - Mojo decorators are now distinguished between "signature" and "body" @@ -6539,14 +6539,14 @@ All earlier releases were considered version 0.1. - Reverted the feature from 2023-02-13 that allowed unqualified struct members. Use the `Self` keyword to conveniently access struct members with bound parameters instead. This was required to fix - [Issue #260](https://github.com/modular/mojo/issues/260). + [Issue #260](https://github.com/modular/max/issues/260). - Updated the RayTracing notebook: added step 5 to create specular lighting for more realistic images and step 6 to add a background image. #### 🛠️ Fixed -- [Issue #260](https://github.com/modular/mojo/issues/260) - Definitions +- [Issue #260](https://github.com/modular/max/issues/260) - Definitions inside structs no longer shadow definitions outside of struct definitions. ### 2023-07-12 @@ -6583,7 +6583,7 @@ All earlier releases were considered version 0.1. - The walrus operator now works in if/while statements without parentheses, e.g. `if x := function():`. -- [Issue #428](https://github.com/modular/mojo/issues/428) - The +- [Issue #428](https://github.com/modular/max/issues/428) - The `FloatLiteral` and `SIMD` types now support conversion to `Int` via the `to_int` or `__int__` method calls. The behavior matches that of Python, which rounds towards zero. @@ -6613,21 +6613,21 @@ All earlier releases were considered version 0.1. #### 🛠️ Fixed -- [Issue #253](https://github.com/modular/mojo/issues/253) - Issue +- [Issue #253](https://github.com/modular/max/issues/253) - Issue when accessing a struct member alias without providing parameters. -- [Issue #404](https://github.com/modular/mojo/issues/404) - The docs now use +- [Issue #404](https://github.com/modular/max/issues/404) - The docs now use `snake_case` for variable names, which more closely conforms to Python's style. -- [Issue #379](https://github.com/modular/mojo/issues/379) - Tuple +- [Issue #379](https://github.com/modular/max/issues/379) - Tuple limitations have been addressed and multiple return values are now supported, even without parentheses. -- [Issue #347](https://github.com/modular/mojo/issues/347) - Tuples no longer +- [Issue #347](https://github.com/modular/max/issues/347) - Tuples no longer require parentheses. -- [Issue #320](https://github.com/modular/mojo/issues/320) - Python objects +- [Issue #320](https://github.com/modular/max/issues/320) - Python objects are now traversable via `for` loops. ## June 2023 @@ -6653,18 +6653,18 @@ All earlier releases were considered version 0.1. #### 🛠️ Fixed -- [Issue #229](https://github.com/modular/mojo/issues/229) - Issue when +- [Issue #229](https://github.com/modular/max/issues/229) - Issue when throwing an exception from `__init__` before all fields are initialized. -- [Issue #74](https://github.com/modular/mojo/issues/74) - Struct +- [Issue #74](https://github.com/modular/max/issues/74) - Struct definition with recursive reference crashes. -- [Issue #285](https://github.com/modular/mojo/issues/285) - The +- [Issue #285](https://github.com/modular/max/issues/285) - The [`TargetInfo`](/mojo/stdlib/sys/info) module now includes `is_little_endian()` and `is_big_endian()` to check if the target host uses either little or big endian. -- [Issue #254](https://github.com/modular/mojo/issues/254) - Parameter name +- [Issue #254](https://github.com/modular/max/issues/254) - Parameter name shadowing in nested scopes is now handled correctly. ### 2023-06-21 @@ -6721,14 +6721,14 @@ only in declared parameter names, e.g. the following now works correctly: fn foobar[w: Int, S: DType]() -> SIMD[S, w]: ... ``` -- [Issue #219](https://github.com/modular/mojo/issues/219) - Issue when +- [Issue #219](https://github.com/modular/max/issues/219) - Issue when redefining a function and a struct defined in the same cell. -- [Issue #355](https://github.com/modular/mojo/issues/355) - The loop order +- [Issue #355](https://github.com/modular/max/issues/355) - The loop order in the Matmul notebook for Python and naive mojo have been reordered for consistency. The loop order now follows (M, K, N) ordering. -- [Issue #309](https://github.com/modular/mojo/issues/309) - Use snake case +- [Issue #309](https://github.com/modular/max/issues/309) - Use snake case naming within the testing package and move the asserts out of the TestSuite struct. @@ -6750,11 +6750,11 @@ only in declared parameter names, e.g. the following now works correctly: #### 🛠️ Fixed -- [Issue #354](https://github.com/modular/mojo/issues/354) - Returning a tuple +- [Issue #354](https://github.com/modular/max/issues/354) - Returning a tuple doesn't work even with parens. -- [Issue #365](https://github.com/modular/mojo/issues/365) - Copy-paste error +- [Issue #365](https://github.com/modular/max/issues/365) - Copy-paste error in `FloatLiteral` docs. -- [Issue #357](https://github.com/modular/mojo/issues/357) - Crash when +- [Issue #357](https://github.com/modular/max/issues/357) - Crash when missing input parameter to variadic parameter struct member function. ### 2023-06-07 @@ -6771,7 +6771,7 @@ only in declared parameter names, e.g. the following now works correctly: - Mojo Playground no longer includes the following Python packages (due to size, compute costs, and - [environment complications](https://github.com/modular/mojo/issues/300)): + [environment complications](https://github.com/modular/max/issues/300)): `torch`, `tensorflow`, `keras`, `transformers`. #### 🦋 Changed @@ -6779,19 +6779,19 @@ only in declared parameter names, e.g. the following now works correctly: - The data types and scalar names now conform to the naming convention used by numpy. So we use `Int32` instead of `SI32`, similarly using `Float32` instead of `F32`. Closes - [Issue #152](https://github.com/modular/mojo/issues/152). + [Issue #152](https://github.com/modular/max/issues/152). #### 🛠️ Fixed -- [Issue #287](https://github.com/modular/mojo/issues/287) - computed +- [Issue #287](https://github.com/modular/max/issues/287) - computed lvalues don't handle raising functions correctly -- [Issue #318](https://github.com/modular/mojo/issues/318) - Large integers +- [Issue #318](https://github.com/modular/max/issues/318) - Large integers are not being printed correctly -- [Issue #326](https://github.com/modular/mojo/issues/326) - Float modulo +- [Issue #326](https://github.com/modular/max/issues/326) - Float modulo operator is not working as expected -- [Issue #282](https://github.com/modular/mojo/issues/282) - Default arguments +- [Issue #282](https://github.com/modular/max/issues/282) - Default arguments are not working as expected -- [Issue #271](https://github.com/modular/mojo/issues/271) - Confusing error +- [Issue #271](https://github.com/modular/max/issues/271) - Confusing error message when converting between function types with different result semantics ## May 2023 @@ -6801,7 +6801,7 @@ only in declared parameter names, e.g. the following now works correctly: #### ⭐️ New - Mojo Playground now includes the following Python packages (in response to - [popular demand](https://github.com/modular/mojo/discussions/173)): + [popular demand](https://github.com/modular/max/discussions/173)): `torch`, `tensorflow`, `polars`, `opencv-python`, `keras`, `Pillow`, `plotly`, `seaborn`, `sympy`, `transformers`. @@ -6865,9 +6865,9 @@ only in declared parameter names, e.g. the following now works correctly: #### 🛠️ Fixed -- [Issue #231](https://github.com/modular/mojo/issues/231) - Unexpected error +- [Issue #231](https://github.com/modular/max/issues/231) - Unexpected error when a Python expression raises an exception -- [Issue #119](https://github.com/modular/mojo/issues/119) - The REPL fails +- [Issue #119](https://github.com/modular/max/issues/119) - The REPL fails when a python variable is redefined ### 2023-05-24 @@ -6892,39 +6892,39 @@ only in declared parameter names, e.g. the following now works correctly: #### 🛠️ Fixed -- [Issue #204](https://github.com/modular/mojo/issues/204) - Mojo REPL +- [Issue #204](https://github.com/modular/max/issues/204) - Mojo REPL crash when returning a String at compile-time -- [Issue #143](https://github.com/modular/mojo/issues/143) - synthesized +- [Issue #143](https://github.com/modular/max/issues/143) - synthesized init in `@register_passable` type doesn't get correct convention. -- [Issue #201](https://github.com/modular/mojo/issues/201) - String literal +- [Issue #201](https://github.com/modular/max/issues/201) - String literal concatenation is too eager. -- [Issue #209](https://github.com/modular/mojo/issues/209) - [QoI] Terrible +- [Issue #209](https://github.com/modular/max/issues/209) - [QoI] Terrible error message trying to convert a type to itself. -- [Issue #32](https://github.com/modular/mojo/issues/32) - Include struct +- [Issue #32](https://github.com/modular/max/issues/32) - Include struct fields in docgen -- [Issue #50](https://github.com/modular/mojo/issues/50) - Int to string +- [Issue #50](https://github.com/modular/max/issues/50) - Int to string conversion crashes due to buffer overflow -- [Issue #132](https://github.com/modular/mojo/issues/132) - PythonObject +- [Issue #132](https://github.com/modular/max/issues/132) - PythonObject `to_int` method has a misleading name -- [Issue #189](https://github.com/modular/mojo/issues/189) - PythonObject bool +- [Issue #189](https://github.com/modular/max/issues/189) - PythonObject bool conversion is incorrect -- [Issue #65](https://github.com/modular/mojo/issues/65) - Add SIMD +- [Issue #65](https://github.com/modular/max/issues/65) - Add SIMD constructor from Bool -- [Issue #153](https://github.com/modular/mojo/issues/153) - Meaning of +- [Issue #153](https://github.com/modular/max/issues/153) - Meaning of `Time.now` function result is unclear -- [Issue #165](https://github.com/modular/mojo/issues/165) - Type in +- [Issue #165](https://github.com/modular/max/issues/165) - Type in `Pointer.free` documentation -- [Issue #210](https://github.com/modular/mojo/issues/210) - Parameter results +- [Issue #210](https://github.com/modular/max/issues/210) - Parameter results cannot be declared outside top-level in function -- [Issue #214](https://github.com/modular/mojo/issues/214) - Pointer offset +- [Issue #214](https://github.com/modular/max/issues/214) - Pointer offset calculations at compile-time are incorrect -- [Issue #115](https://github.com/modular/mojo/issues/115) - Float printing +- [Issue #115](https://github.com/modular/max/issues/115) - Float printing does not include the right number of digits -- [Issue #202](https://github.com/modular/mojo/issues/202) - +- [Issue #202](https://github.com/modular/max/issues/202) - `kgen.unreachable` inside nested functions is illegal -- [Issue #235](https://github.com/modular/mojo/issues/235) - Crash when +- [Issue #235](https://github.com/modular/max/issues/235) - Crash when register passable struct field is not register passable -- [Issue #237](https://github.com/modular/mojo/issues/237) - Parameter +- [Issue #237](https://github.com/modular/max/issues/237) - Parameter closure sharp edges are not documented ### 2023-05-16 @@ -6939,16 +6939,16 @@ only in declared parameter names, e.g. the following now works correctly: #### 🛠️ Fixed -- [Issue #98](https://github.com/modular/mojo/issues/98): +- [Issue #98](https://github.com/modular/max/issues/98): Incorrect error with lifetime tracking in loop. -- [Issue #49](https://github.com/modular/mojo/issues/49): Type inference +- [Issue #49](https://github.com/modular/max/issues/49): Type inference issue (?) in 'ternary assignment' operation (FloatLiteral vs. 'SIMD[f32, 1]'). -- [Issue #48](https://github.com/modular/mojo/issues/48): +- [Issue #48](https://github.com/modular/max/issues/48): and/or don't work with memory-only types. -- [Issue #11](https://github.com/modular/mojo/issues/11): `setitem` Support +- [Issue #11](https://github.com/modular/max/issues/11): `setitem` Support for `PythonObject`. ### 2023-05-11 @@ -6966,7 +6966,7 @@ only in declared parameter names, e.g. the following now works correctly: - The "byref" syntax with the `&` sigil has changed to use an `inout` keyword to be more similar to the `borrowed` and `owned` syntax in arguments. - Please see [Issue #7](https://github.com/modular/mojo/issues/7) for more + Please see [Issue #7](https://github.com/modular/max/issues/7) for more information. - Optimized the Matrix multiplication implementation in the notebook. @@ -6983,10 +6983,10 @@ from "consume" to "transfer." - Fixed missing overloads for `Testing.assertEqual` so that they work on `Integer` and `String` values. -- [Issue #6](https://github.com/modular/mojo/issues/6): +- [Issue #6](https://github.com/modular/max/issues/6): Playground stops evaluating cells when a simple generic is defined. -- [Issue #18](https://github.com/modular/mojo/issues/18): +- [Issue #18](https://github.com/modular/max/issues/18): Memory leak in Python interoperability was removed. ### 2023-05-02 diff --git a/mojo/docs/changelog.md b/mojo/docs/changelog.md index 8f7363e0de..750d44f331 100644 --- a/mojo/docs/changelog.md +++ b/mojo/docs/changelog.md @@ -105,7 +105,7 @@ what we publish. The same statement will now raise an error informing the user their indices are invalid. -- Added an iterator to `LinkedList` ([PR #4005](https://github.com/modular/mojo/pull/4005)) +- Added an iterator to `LinkedList` ([PR #4005](https://github.com/modular/max/pull/4005)) - `LinkedList.__iter__()` to create a forward iterator. - `LinkedList.__reversed__()` for a backward iterator. diff --git a/mojo/docs/faq.md b/mojo/docs/faq.md index 2061c83564..93da03c653 100644 --- a/mojo/docs/faq.md +++ b/mojo/docs/faq.md @@ -148,7 +148,7 @@ at Modular to develop AI algorithms, but you can use it for other things like HPC, data transformations, writing pre/post processing operations, and much more. For examples of how Mojo can be used for other general programming tasks, see our [Mojo -examples](https://github.com/modular/mojo/tree/main/examples). +examples](https://github.com/modular/max/tree/main/examples/mojo). ### Is Mojo interpreted or compiled? @@ -285,7 +285,7 @@ and does not require login. using buttons in the Playground toolbar. - There might be some bugs. Please [report issues and feedback on - GitHub](https://github.com/modular/mojo/issues/new/choose). + GitHub](https://github.com/modular/max/issues/new/choose). ### What are the license terms for the SDK? diff --git a/mojo/docs/manual/basics.mdx b/mojo/docs/manual/basics.mdx index 4020b3eb96..ea9c44180c 100644 --- a/mojo/docs/manual/basics.mdx +++ b/mojo/docs/manual/basics.mdx @@ -450,11 +450,15 @@ Otherwise, here are some other resources to check out: * See [Get started with Mojo](/mojo/manual/get-started) for a hands-on tutorial that will get you up and running with Mojo. -* If you want to experiment with some code, clone [the Mojo - repo](https://github.com/modular/mojo/) to try our code examples: +* If you want to experiment with some code, clone [our GitHub + repo](https://github.com/modular/max/) to try our code examples: ```sh - git clone https://github.com/modular/mojo.git + git clone https://github.com/modular/max.git + ``` + + ```sh + cd max/examples/mojo ``` * To see all the available Mojo APIs, check out the [Mojo standard library diff --git a/mojo/docs/manual/get-started.mdx b/mojo/docs/manual/get-started.mdx index 799ebbc78d..2c7ac86f54 100644 --- a/mojo/docs/manual/get-started.mdx +++ b/mojo/docs/manual/get-started.mdx @@ -2,7 +2,7 @@ title: "Get started with Mojo" sidebar_label: "Tutorial: Get started with Mojo" description: "Install Mojo and learn the language basics by building a complete Mojo program" -github_url: https://github.com/modular/mojo/tree/main/examples/life +github_url: https://github.com/modular/max/tree/main/examples/mojo/life image: /images/artwork/mojo-get-started.jpg --- @@ -37,7 +37,7 @@ This tutorial might be a little long because there's a lot to learn, but we tried to keep the explanations simple, and we included links along the way for you to go learn more about each topic. If you just want to see the finished code, you can [get it on -GitHub](https://github.com/modular/mojo/tree/main/examples/life). +GitHub](https://github.com/modular/max/tree/main/examples/mojo/life). System requirements: diff --git a/mojo/docs/manual/operators.mdx b/mojo/docs/manual/operators.mdx index b3f9e8fd00..22a52dd56e 100644 --- a/mojo/docs/manual/operators.mdx +++ b/mojo/docs/manual/operators.mdx @@ -1,7 +1,7 @@ --- title: Operators, expressions, and dunder methods sidebar_label: Operators and expressions -github_url: https://github.com/modular/mojo/tree/main/examples/operators +github_url: https://github.com/modular/max/tree/main/examples/mojo/operators --- Mojo includes a variety of operators for manipulating values of different types. @@ -1071,8 +1071,8 @@ operations like printing complex values. We'll also allow mixing `Complex` and `Float64` values in arithmetic expressions to produce a `Complex` result. This example builds our `Complex` struct incrementally. You can also find the -[complete example in the public Mojo GitHub -repo](https://github.com/modular/mojo/tree/main/examples/operators). +[complete example in the public GitHub +repo](https://github.com/modular/max/tree/main/examples/mojo/operators). :::note diff --git a/mojo/docs/manual/parameters/index.mdx b/mojo/docs/manual/parameters/index.mdx index 22f588a94a..3c1b82c475 100644 --- a/mojo/docs/manual/parameters/index.mdx +++ b/mojo/docs/manual/parameters/index.mdx @@ -140,7 +140,7 @@ Mojo's support for generics is still early. You can write generic functions like this using traits and parameters. You can also write generic collections like `List` and `Dict`. If you're interested in learning how these types work, you can find the source code for the standard library collection types -[on GitHub](https://github.com/modular/mojo/blob/nightly/stdlib/src/collections/). +[on GitHub](https://github.com/modular/max/blob/main/mojo/stdlib/src/collections/). ## Parameterized structs diff --git a/mojo/docs/manual/values/lifetimes.mdx b/mojo/docs/manual/values/lifetimes.mdx index bd96d45b95..5d9bb37c10 100644 --- a/mojo/docs/manual/values/lifetimes.mdx +++ b/mojo/docs/manual/values/lifetimes.mdx @@ -424,8 +424,8 @@ for i in range(len(nums)): ``` (You can find the code for the -`List` iterator in the [Mojo -repo](https://github.com/modular/mojo/blob/main/stdlib/src/collections/list.mojo#L63).) +`List` iterator in the [public +repo](https://github.com/modular/max/blob/main/mojo/stdlib/src/collections/list.mojo#L63).) #### Parametric mutability of return values diff --git a/mojo/docs/roadmap.md b/mojo/docs/roadmap.md index 05e5bf94da..754c0acdc7 100644 --- a/mojo/docs/roadmap.md +++ b/mojo/docs/roadmap.md @@ -29,7 +29,7 @@ In the near-term, we will **not** prioritize "general goodness" work such as: - Tackling broad Python ecosystem challenges like packaging. If you have encountered any bugs with current Mojo behavior, please -[submit an issue on GitHub](https://github.com/modular/mojo/issues). +[submit an issue on GitHub](https://github.com/modular/max/issues). If you have ideas about how to improve the core Mojo features, we prefer that you first look for similar topics or start a new conversation about it @@ -148,7 +148,7 @@ When we get here, we will discuss what the right default is: for example, is full Python hash-table dynamism the default? Or do we use a more efficient model by default (e.g. vtable-based dispatch and explicitly declared stored properties) and allow opt'ing into dynamism with a `@dynamic` decorator on the -class. More discussion is [in this proposal](https://github.com/modular/mojo/blob/main/proposals/mojo-and-dynamism.md). +class. More discussion is [in this proposal](https://github.com/modular/max/blob/main/mojo/proposals/mojo-and-dynamism.md). ## C/C++ Interop diff --git a/mojo/docs/tools/debugging.mdx b/mojo/docs/tools/debugging.mdx index 2a761c6f88..50befddbed 100644 --- a/mojo/docs/tools/debugging.mdx +++ b/mojo/docs/tools/debugging.mdx @@ -24,9 +24,9 @@ in VS Code. There are several ways to start a debug session in VS Code. -To start debugging, you'll need to have a Mojo project to debug. There are -a number of examples ranging from simple to complex in the [Mojo repo on -GitHub](https://github.com/modular/mojo). +To start debugging, you'll need to have a Mojo project to debug. There are a +number of examples ranging from simple to complex in [our GitHub +repo](https://github.com/modular/max/tree/main/examples/mojo). :::note **VS Code veteran?** diff --git a/mojo/docs/tools/testing.mdx b/mojo/docs/tools/testing.mdx index 34dc575ce1..8861c554fe 100644 --- a/mojo/docs/tools/testing.mdx +++ b/mojo/docs/tools/testing.mdx @@ -2,7 +2,7 @@ title: Testing sidebar_position: 2 description: Testing Mojo programs. -github_url: https://github.com/modular/mojo/tree/main/examples/testing +github_url: https://github.com/modular/max/tree/main/examples/mojo/testing --- Mojo includes a framework for developing and executing unit tests. The Mojo @@ -96,9 +96,8 @@ its error message. organize them into test files. - [The `mojo test` command](#the-mojo-test-command) describes how to execute and collect lists of tests. -- The public [GitHub repo](https://github.com/modular/mojo/tree/main) contains - an [example - project](https://github.com/modular/mojo/tree/main/examples/testing) to +- Our GitHub repo contains an [example + project](https://github.com/modular/max/tree/main/examples/mojo/testing) to demonstrate unit testing. Several of the examples shown later are based on this project. @@ -291,7 +290,7 @@ the following: If needed, you can optionally use the `-I` option one or more times to append additional paths to the list of directories searched to import Mojo modules and packages. Consider the [example testing -project](https://github.com/modular/mojo/tree/main/examples/testing) in +project](https://github.com/modular/max/tree/main/examples/mojo/testing) in GitHub, which has the following directory structure: ```output @@ -363,7 +362,7 @@ By including the `--collect-only` or `--co` option, you can use `mojo test` to discover and print a list of tests. Consider the [example testing -project](https://github.com/modular/mojo/tree/main/examples/testing) +project](https://github.com/modular/max/tree/main/examples/mojo/testing) directory structure shown in the [Running tests](#running-tests) section. The following command produces a list of all of the tests defined in the `test` directory hierarchy. @@ -434,7 +433,7 @@ output shown): You can also produce JSON output for test collection as well. Consider the [example testing -project](https://github.com/modular/mojo/tree/main/examples/testing) +project](https://github.com/modular/max/tree/main/examples/mojo/testing) directory structure shown in the [Running tests](#running-tests) section. The following command collects a list in JSON format of all of the tests defined in the `test` directory hierarchy: From e9be43eb64d6899e0fa54b1af5b29f86695e9ce7 Mon Sep 17 00:00:00 2001 From: kcaverly Date: Thu, 27 Feb 2025 12:08:06 -0500 Subject: [PATCH 485/509] [Pipelines] Refactor next_token to return dict[str, TextGenerationResponse] This PR refactors the `next_token` interface to enable variable token length responses from the pipeline on a per-request basis. Instead of returning a `list[dict[str, TextResponse]]` and implicitly identifying request completion based on the keys returned in the dictionary. This PR refactors `next_token` to return a `dict[str, TextGenerationResponse]`, in which the dictionary keys align with the request ids provided. The newly introduced `TextGenerationResponse` includes variable token length arrays, and explicitly states the final status (`TextGenerationStatus`: ACTIVE, MAXIMUM_LENGTH, or END_OF_SEQUENCE).This hardens our interface to completion tracking, enables more complex decoding strategies, and provides the server the opportunity to provide a corrected `finish_reason`. MODULAR_ORIG_COMMIT_REV_ID: fa8c7ff5af9470d25d3f86c966c633f783cc37ec --- src/max/entrypoints/cli/generate.py | 30 +++++----- src/max/pipelines/hf_pipeline.py | 29 +++++++--- src/max/pipelines/interfaces/response.py | 20 +++++-- .../pipelines/interfaces/text_generation.py | 4 +- src/max/pipelines/pipeline.py | 56 ++++++++++++------- 5 files changed, 89 insertions(+), 50 deletions(-) diff --git a/src/max/entrypoints/cli/generate.py b/src/max/entrypoints/cli/generate.py index 97718673a8..ec90472b7c 100644 --- a/src/max/entrypoints/cli/generate.py +++ b/src/max/entrypoints/cli/generate.py @@ -76,22 +76,22 @@ async def stream_text_to_console( num_steps=num_steps, ) - for response in responses: - if req_id not in response: - # next_token is expected to omit the return if - # it encounters eos. + for request_idx, response in responses.items(): + if response.is_done: generate_again = False - break - - encoded_text = response[req_id].next_token - response_text = await tokenizer.decode(context, encoded_text) - if metrics: - if first_token: - first_token = False - metrics.signpost("first_token") - metrics.new_token() - if print_tokens: - print(response_text, end="", flush=True) + + for text_response in response.tokens: + encoded_text = text_response.next_token + response_text = await tokenizer.decode( + context, encoded_text + ) + if metrics: + if first_token: + first_token = False + metrics.signpost("first_token") + metrics.new_token() + if print_tokens: + print(response_text, end="", flush=True) # Yield to the event loop. If at no other point (e.g. # tokenizer.decode which we await earlier does not yield to the diff --git a/src/max/pipelines/hf_pipeline.py b/src/max/pipelines/hf_pipeline.py index 52f25f6985..ff252ceec0 100644 --- a/src/max/pipelines/hf_pipeline.py +++ b/src/max/pipelines/hf_pipeline.py @@ -34,6 +34,8 @@ from .interfaces import ( EmbeddingsGenerator, EmbeddingsResponse, + TextGenerationResponse, + TextGenerationStatus, TextResponse, TokenGenerator, ) @@ -119,7 +121,7 @@ def __init__( def next_token( self, batch: dict[str, TextContext], num_steps: int - ) -> list[dict[str, TextResponse]]: + ) -> dict[str, TextGenerationResponse]: """Provided a batch, process batch inputs, execute the graph for num_steps in a multi-step scenario, then decode the tokens holistically and return the list of decoded tokens. """ @@ -183,8 +185,10 @@ def next_token( generated_tokens = generated_tokens.cpu() # Prepare the response, pruning away completed requests as we go. - res: list[dict[str, TextResponse]] = [{} for i in range(num_steps)] + res: dict[str, TextGenerationResponse] = {} for batch_idx, (request_id, context) in enumerate(batch.items()): + status = TextGenerationStatus.ACTIVE + res[request_id] = TextGenerationResponse([], status) for step in range(num_steps): next_token_id = generated_tokens[batch_idx, step].item() @@ -200,13 +204,22 @@ def next_token( if context.max_length is None else context.max_length ) - if ( - next_token_id in self._eos_token_id - or context.current_length > max_length - ): - break - res[step][request_id] = TextResponse(next_token) + if next_token_id in self._eos_token_id: + status = TextGenerationStatus.END_OF_SEQUENCE + res[request_id].update_status(status) + elif context.current_length > max_length: + status = TextGenerationStatus.MAXIMUM_LENGTH + res[request_id].update_status(status) + elif context.current_length == max_length: + res[request_id].append_token(TextResponse(next_token)) + status = TextGenerationStatus.MAXIMUM_LENGTH + res[request_id].update_status(status) + else: + res[request_id].append_token(TextResponse(next_token)) + + if status.is_done: + break return res diff --git a/src/max/pipelines/interfaces/response.py b/src/max/pipelines/interfaces/response.py index 45808c9d72..573326871b 100644 --- a/src/max/pipelines/interfaces/response.py +++ b/src/max/pipelines/interfaces/response.py @@ -117,11 +117,23 @@ class TextGenerationResponse: def __init__( self, tokens: list[TextResponse], final_status: TextGenerationStatus ) -> None: - self.tokens = tokens - self.final_status = final_status + self._tokens = tokens + self._final_status = final_status + @property def is_done(self) -> bool: - return self.final_status.is_done + return self._final_status.is_done + + @property + def tokens(self) -> list[TextResponse]: + return self._tokens + + @property + def final_status(self) -> TextGenerationStatus: + return self._final_status def append_token(self, token: TextResponse) -> None: - self.tokens.append(token) + self._tokens.append(token) + + def update_status(self, status: TextGenerationStatus) -> None: + self._final_status = status diff --git a/src/max/pipelines/interfaces/text_generation.py b/src/max/pipelines/interfaces/text_generation.py index ac7b64d1c7..e329e0829b 100644 --- a/src/max/pipelines/interfaces/text_generation.py +++ b/src/max/pipelines/interfaces/text_generation.py @@ -28,7 +28,7 @@ runtime_checkable, ) -from .response import TextResponse +from .response import TextGenerationResponse class TokenGeneratorRequestFunction(TypedDict): @@ -258,7 +258,7 @@ class TokenGenerator(Generic[TokenGeneratorContext], Protocol): def next_token( self, batch: dict[str, TokenGeneratorContext], num_steps: int - ) -> list[dict[str, TextResponse]]: + ) -> dict[str, TextGenerationResponse]: """Computes the next token response for a single batch. Args: diff --git a/src/max/pipelines/pipeline.py b/src/max/pipelines/pipeline.py index b42e9b7f48..d1c951a3ab 100644 --- a/src/max/pipelines/pipeline.py +++ b/src/max/pipelines/pipeline.py @@ -42,7 +42,13 @@ from .config import PipelineConfig from .context import InputContext -from .interfaces import LogProbabilities, TextResponse, TokenGenerator +from .interfaces import ( + LogProbabilities, + TextGenerationResponse, + TextGenerationStatus, + TextResponse, + TokenGenerator, +) from .kv_cache import KVCacheManager, KVCacheParams from .sampling import token_sampler @@ -565,7 +571,7 @@ def next_token( self, batch: dict[str, T], num_steps: int, - ) -> list[dict[str, TextResponse]]: + ) -> dict[str, TextGenerationResponse]: """Provided a batch, process batch inputs, execute the graph for num_steps in a multi-step scenario, then decode the tokens holistically and return the list of decoded tokens. """ @@ -695,11 +701,12 @@ def next_token( tracer.pop() # pops kv_manager.step # Prepare the response, pruning away completed requests as we go. - res: list[dict[str, TextResponse]] = [{} for _ in range(num_steps)] + res: dict[str, TextGenerationResponse] = {} tracer.push("prepare_response") for batch_index, (request_id, context) in enumerate(batch.items()): - step = 0 - while step < num_steps: + status = TextGenerationStatus.ACTIVE + res[request_id] = TextGenerationResponse([], status) + for step in range(num_steps): # Convert to a Python scalar to improve serialization performance. next_token = int(generated_tokens_host[batch_index, step]) @@ -715,19 +722,6 @@ def next_token( default=context.max_length, ) - # The current length is incremented above, during context.update - # As such, if we are already at the max length, exiting here - # would cause us to miss updating the request. - # As such, we overrun here by 1, ensuring that the context object - # tracks special tokens like eos_token_id appropriately for benchmarking - # and other uses, but that they are not returned in the request. - if ( - next_token in self._eos_token_id - or context.current_length > max_length - ): - step += 1 - break - # Set up TextResponse log_probs: Optional[LogProbabilities] = None if compute_log_probabilities and ( @@ -735,10 +729,30 @@ def next_token( ): log_probs = log_probs_for_step[batch_index] - # Removing the positional arguments here, go about 100us faster. - res[step][request_id] = TextResponse(next_token, log_probs) + # Update status + # If its eos, dont add it to the token array. + if next_token in self._eos_token_id: + status = TextGenerationStatus.END_OF_SEQUENCE + res[request_id].update_status(status) + elif context.current_length == max_length: + status = TextGenerationStatus.MAXIMUM_LENGTH + res[request_id].append_token( + TextResponse(next_token, log_probs) + ) + res[request_id].update_status(status) + # This practically, should not be hit, as once the context object + # reaches the max_length, we should break from this current loop. + # TODO: Explore cleaning up max length checks. + elif context.current_length > max_length: + status = TextGenerationStatus.MAXIMUM_LENGTH + res[request_id].update_status(status) + else: + res[request_id].append_token( + TextResponse(next_token, log_probs) + ) - step += 1 + if status.is_done: + break return res From ab72aae5ae7e363837ad6f135ac8c5516ff55059 Mon Sep 17 00:00:00 2001 From: Patrick Dougherty Date: Thu, 27 Feb 2025 12:09:37 -0600 Subject: [PATCH 486/509] [CI] Add pre-commit-config to internal source of truth MODULAR_ORIG_COMMIT_REV_ID: 14e2678c27e07378a49cdfcae41feae5b7c27fb6 --- .pre-commit-config.yaml | 26 +++++++++++++++++++++++++ mojo/stdlib/scripts/check-docstrings.py | 2 +- 2 files changed, 27 insertions(+), 1 deletion(-) create mode 100644 .pre-commit-config.yaml diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml new file mode 100644 index 0000000000..b04addfbb6 --- /dev/null +++ b/.pre-commit-config.yaml @@ -0,0 +1,26 @@ +repos: + - repo: local + hooks: + - id: mojo-format + name: mojo-format + entry: mojo format mojo + language: system + files: '\.(mojo|🔥|py)$' + stages: [commit] + - id: check-docstrings + name: check-docstrings + entry: python3 ./mojo/stdlib/scripts/check-docstrings.py + language: system + pass_filenames: false + stages: [commit] + - id: check-license + name: check-license + entry: mojo mojo/stdlib/scripts/check_licenses.mojo + language: system + files: '\.(mojo|🔥|py)$' + stages: [commit] + - repo: https://github.com/igorshubovych/markdownlint-cli + rev: v0.40.0 + hooks: + - id: markdownlint + args: ['--config', 'mojo/stdlib/scripts/.markdownlint.yaml', '--fix'] diff --git a/mojo/stdlib/scripts/check-docstrings.py b/mojo/stdlib/scripts/check-docstrings.py index ddba7bb42c..1eb77ea27e 100644 --- a/mojo/stdlib/scripts/check-docstrings.py +++ b/mojo/stdlib/scripts/check-docstrings.py @@ -27,7 +27,7 @@ def main(): "--diagnose-missing-doc-strings", "-o", "/dev/null", - "./stdlib/src", + "./mojo/stdlib/src", ] result = subprocess.run(command, capture_output=True) if result.stderr or result.returncode != 0: From 99bbe159934c260bd1aa77e997a89d1c3d287e3b Mon Sep 17 00:00:00 2001 From: modularbot Date: Thu, 27 Feb 2025 22:33:19 +0000 Subject: [PATCH 487/509] [Release] Update lockfiles to point to latest nightly version: 25.2.0.dev2025022718 --- examples/custom_ops/magic.lock | 2182 ++++ examples/gpu_functions/magic.lock | 2182 ++++ examples/graph-api/magic.lock | 2182 ++++ .../inference/bert-c-torchscript/magic.lock | 7455 ++++++++++++++ .../bert-mojo-torchscript/magic.lock | 7480 ++++++++++++++ .../bert-python-torchscript/magic.lock | 7480 ++++++++++++++ .../resnet50-python-torchscript/magic.lock | 8098 +++++++++++++++ .../stable-diffusion-mojo-onnx/magic.lock | 8173 +++++++++++++++ .../stable-diffusion-python-onnx/magic.lock | 8272 +++++++++++++++ .../inference/yolo-python-onnx/magic.lock | 2220 ++++ examples/mojo/life/magic.lock | 5402 ++++++++++ examples/mojo/magic.lock | 2185 ++++ examples/mojo/operators/magic.lock | 2182 ++++ examples/mojo/testing/magic.lock | 2182 ++++ examples/notebooks/magic.lock | 7828 +++----------- examples/offline-inference/magic.lock | 9001 +++++++++++++++++ mojo/magic.lock | 2194 ++++ src/max/magic.lock | 9001 +++++++++++++++++ tutorials/hello-magic/local/magic.lock | 2333 +++++ tutorials/hello-magic/magic.lock | 2901 ++++++ tutorials/max-graph-api/magic.lock | 4414 ++++++++ 21 files changed, 99104 insertions(+), 6243 deletions(-) create mode 100644 examples/custom_ops/magic.lock create mode 100644 examples/gpu_functions/magic.lock create mode 100644 examples/graph-api/magic.lock create mode 100644 examples/inference/bert-c-torchscript/magic.lock create mode 100644 examples/inference/bert-mojo-torchscript/magic.lock create mode 100644 examples/inference/bert-python-torchscript/magic.lock create mode 100644 examples/inference/resnet50-python-torchscript/magic.lock create mode 100644 examples/inference/stable-diffusion-mojo-onnx/magic.lock create mode 100644 examples/inference/stable-diffusion-python-onnx/magic.lock create mode 100644 examples/inference/yolo-python-onnx/magic.lock create mode 100644 examples/mojo/life/magic.lock create mode 100644 examples/mojo/magic.lock create mode 100644 examples/mojo/operators/magic.lock create mode 100644 examples/mojo/testing/magic.lock create mode 100644 examples/offline-inference/magic.lock create mode 100644 mojo/magic.lock create mode 100644 src/max/magic.lock create mode 100644 tutorials/hello-magic/local/magic.lock create mode 100644 tutorials/hello-magic/magic.lock create mode 100644 tutorials/max-graph-api/magic.lock diff --git a/examples/custom_ops/magic.lock b/examples/custom_ops/magic.lock new file mode 100644 index 0000000000..9473097321 --- /dev/null +++ b/examples/custom_ops/magic.lock @@ -0,0 +1,2182 @@ +version: 6 +environments: + default: + channels: + - url: https://conda.anaconda.org/conda-forge/ + - url: https://conda.modular.com/max-nightly/ + packages: + linux-64: + - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2025.1.31-hbcca054_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-31_h59b9bed_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-31_he106b2a_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h767d61c_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hf1ad2bd_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h767d61c_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-31_h7ac8fdf_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.29-pthreads_h94d23a6_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsentencepiece-0.2.0-h8e10757_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.49.1-hee588c1_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-h8f9b012_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022718-release.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-h2d0b736_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.1-h7b32b05_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.9-h9e4cc4f_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.1-py312hbf22597_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-0.2.0-hc8f76dd_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-python-0.2.0-py312hb6b8a2b_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-spm-0.2.0-h8e10757_10.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + linux-aarch64: + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h68df207_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2025.1.31-hcefe29a_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/keyutils-1.6.1-h4e544f5_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/krb5-1.21.3-h50a48e9_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h18dbdb1_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-31_h1a9f1db_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-31_hab92f65_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20250104-pl5321h976ea20_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.6.4-h5ad3122_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.4.6-he21f813_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-14.2.0-he277a41_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-14.2.0-he9431aa_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-31_h411afd4_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.4-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.29-pthreads_h9d3fd7e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.3-h44a3b7b_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsentencepiece-0.2.0-h6164ad9_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.20-h68df207_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.49.1-h5eb1b54_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022718-release.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-ha32ae93_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.1-hd08dc88_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.9-h1683364_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.12-5_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyzmq-26.2.1-py312h2427ae1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8382b9d_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-0.2.0-h6c1b121_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-python-0.2.0-py312h197ff68_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-spm-0.2.0-h6164ad9_10.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py312h52516f5_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zeromq-4.3.5-h5efb499_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + osx-arm64: + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2025.1.31-hf0a4a13_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_h07bc746_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-31_h10e41b3_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-31_hb3479ef_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.4-h286801f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-31_hc9a63f6_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.4-h39f12f2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.29-openmp_hf332438_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.3-h3bd63a1_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsentencepiece-0.2.0-he13a0af_10.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.1-h3f77e49_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022718-release.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.1-h81ee809_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.9-hc22306f_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-5_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.1-py312hf4875e0_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-0.2.0-h22a84ea_10.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-python-0.2.0-py312h155166a_10.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-spm-0.2.0-he13a0af_10.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda +packages: +- conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 + sha256: fe51de6107f9edc7aa4f786a70f4a883943bc9d39b3bb7307c04c41410990726 + md5: d7c89558ba9fa0495403155b64376d81 + arch: x86_64 + platform: linux + license: None + size: 2562 + timestamp: 1578324546067 +- conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 + build_number: 16 + sha256: fbe2c5e56a653bebb982eda4876a9178aedfc2b545f25d0ce9c4c0b508253d22 + md5: 73aaf86a425cc6e73fcf236a5a46396d + depends: + - _libgcc_mutex 0.1 conda_forge + - libgomp >=7.5.0 + constrains: + - openmp_impl 9999 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 23621 + timestamp: 1650670423406 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2 + build_number: 16 + sha256: 3702bef2f0a4d38bd8288bbe54aace623602a1343c2cfbefd3fa188e015bebf0 + md5: 6168d71addc746e8f2b8d57dfd2edcea + depends: + - libgomp >=7.5.0 + constrains: + - openmp_impl 9999 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 23712 + timestamp: 1650670790230 +- conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda + sha256: 5ced96500d945fb286c9c838e54fa759aa04a7129c59800f0846b4335cee770d + md5: 62ee74e96c5ebb0af99386de58cf9553 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: bzip2-1.0.6 + license_family: BSD + size: 252783 + timestamp: 1720974456583 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h68df207_7.conda + sha256: 2258b0b33e1cb3a9852d47557984abb6e7ea58e3d7f92706ec1f8e879290c4cb + md5: 56398c28220513b9ea13d7b450acfb20 + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: bzip2-1.0.6 + license_family: BSD + size: 189884 + timestamp: 1720974504976 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda + sha256: adfa71f158cbd872a36394c56c3568e6034aa55c623634b37a4836bd036e6b91 + md5: fc6948412dbbbe9a4c9ddbbcfe0a79ab + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: bzip2-1.0.6 + license_family: BSD + size: 122909 + timestamp: 1720974522888 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2025.1.31-hbcca054_0.conda + sha256: bf832198976d559ab44d6cdb315642655547e26d826e34da67cbee6624cda189 + md5: 19f3a56f68d2fd06c516076bff482c52 + arch: x86_64 + platform: linux + license: ISC + size: 158144 + timestamp: 1738298224464 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2025.1.31-hcefe29a_0.conda + sha256: 66c6408ee461593cfdb2d78d82e6ed74d04a04ccb51df3ef8a5f35148c9c6eec + md5: 462cb166cd2e26a396f856510a3aff67 + arch: aarch64 + platform: linux + license: ISC + size: 158290 + timestamp: 1738299057652 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2025.1.31-hf0a4a13_0.conda + sha256: 7e12816618173fe70f5c638b72adf4bfd4ddabf27794369bb17871c5bb75b9f9 + md5: 3569d6a9141adc64d2fe4797f3289e06 + arch: arm64 + platform: osx + license: ISC + size: 158425 + timestamp: 1738298167688 +- conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda + sha256: c920d23cd1fcf565031c679adb62d848af60d6fbb0edc2d50ba475cea4f0d8ab + md5: f22f4d4970e09d68a10b922cbb0408d3 + depends: + - __unix + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 84705 + timestamp: 1734858922844 +- conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + sha256: ab29d57dc70786c1269633ba3dff20288b81664d3ff8d21af995742e2bb03287 + md5: 962b9857ee8e7018c22f2776ffa0b2d7 + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 27011 + timestamp: 1733218222191 +- conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + sha256: 598951ebdb23e25e4cec4bbff0ae369cec65ead80b50bc08b441d8e54de5cf03 + md5: f4b39bf00c69f56ac01e020ebfac066c + depends: + - python >=3.9 + - zipp >=0.5 + license: Apache-2.0 + license_family: APACHE + size: 29141 + timestamp: 1737420302391 +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + sha256: 19d8bd5bb2fde910ec59e081eeb59529491995ce0d653a5209366611023a0b3a + md5: 4ebae00eae9705b0c3d6d1018a81d047 + depends: + - importlib-metadata >=4.8.3 + - jupyter_core >=4.12,!=5.0.* + - python >=3.9 + - python-dateutil >=2.8.2 + - pyzmq >=23.0 + - tornado >=6.2 + - traitlets >=5.3 + license: BSD-3-Clause + license_family: BSD + size: 106342 + timestamp: 1733441040958 +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + sha256: 732b1e8536bc22a5a174baa79842d79db2f4956d90293dd82dc1b3f6099bcccd + md5: 0a2980dada0dd7fd0998f0342308b1b1 + depends: + - __unix + - platformdirs >=2.5 + - python >=3.8 + - traitlets >=5.3 + license: BSD-3-Clause + license_family: BSD + size: 57671 + timestamp: 1727163547058 +- conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 + sha256: 150c05a6e538610ca7c43beb3a40d65c90537497a4f6a5f4d15ec0451b6f5ebb + md5: 30186d27e2c9fa62b45fb1476b7200e3 + depends: + - libgcc-ng >=10.3.0 + arch: x86_64 + platform: linux + license: LGPL-2.1-or-later + size: 117831 + timestamp: 1646151697040 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/keyutils-1.6.1-h4e544f5_0.tar.bz2 + sha256: 6d4233d97a9b38acbb26e1268bcf8c10a8e79c2aed7e5a385ec3769967e3e65b + md5: 1f24853e59c68892452ef94ddd8afd4b + depends: + - libgcc-ng >=10.3.0 + arch: aarch64 + platform: linux + license: LGPL-2.1-or-later + size: 112327 + timestamp: 1646166857935 +- conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda + sha256: 99df692f7a8a5c27cd14b5fb1374ee55e756631b9c3d659ed3ee60830249b238 + md5: 3f43953b7d3fb3aaa1d0d0723d91e368 + depends: + - keyutils >=1.6.1,<2.0a0 + - libedit >=3.1.20191231,<3.2.0a0 + - libedit >=3.1.20191231,<4.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - openssl >=3.3.1,<4.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 1370023 + timestamp: 1719463201255 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/krb5-1.21.3-h50a48e9_0.conda + sha256: 0ec272afcf7ea7fbf007e07a3b4678384b7da4047348107b2ae02630a570a815 + md5: 29c10432a2ca1472b53f299ffb2ffa37 + depends: + - keyutils >=1.6.1,<2.0a0 + - libedit >=3.1.20191231,<3.2.0a0 + - libedit >=3.1.20191231,<4.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - openssl >=3.3.1,<4.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 1474620 + timestamp: 1719463205834 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda + sha256: 4442f957c3c77d69d9da3521268cad5d54c9033f1a73f99cde0a3658937b159b + md5: c6dc8a0fdec13a0565936655c33069a1 + depends: + - __osx >=11.0 + - libcxx >=16 + - libedit >=3.1.20191231,<3.2.0a0 + - libedit >=3.1.20191231,<4.0a0 + - openssl >=3.3.1,<4.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 1155530 + timestamp: 1719463474401 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_4.conda + sha256: db73f38155d901a610b2320525b9dd3b31e4949215c870685fd92ea61b5ce472 + md5: 01f8d123c96816249efd255a31ad7712 + depends: + - __glibc >=2.17,<3.0.a0 + constrains: + - binutils_impl_linux-64 2.43 + arch: x86_64 + platform: linux + license: GPL-3.0-only + license_family: GPL + size: 671240 + timestamp: 1740155456116 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_4.conda + sha256: 016832a70b0aa97e1c4e47e23c00b0c34def679de25146736df353199f684f0d + md5: 80c9ad5e05e91bb6c0967af3880c9742 + constrains: + - binutils_impl_linux-aarch64 2.43 + arch: aarch64 + platform: linux + license: GPL-3.0-only + license_family: GPL + size: 699058 + timestamp: 1740155620594 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda + sha256: 143a586aa67d50622ef703de57b9d43f44945836d6568e0e7aa174bd8c45e0d4 + md5: 488f260ccda0afaf08acb286db439c2f + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + constrains: + - libabseil-static =20240722.0=cxx17* + - abseil-cpp =20240722.0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 1311599 + timestamp: 1736008414161 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h18dbdb1_4.conda + sha256: bb6c5fb3b8de5f90735c5252b57efb3c268ee222c755569dac18065f05147670 + md5: 633b9fe454ffea2aaf29e191d946a83b + depends: + - libgcc >=13 + - libstdcxx >=13 + constrains: + - abseil-cpp =20240722.0 + - libabseil-static =20240722.0=cxx17* + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 1334844 + timestamp: 1736008472455 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_h07bc746_4.conda + sha256: 05fa5e5e908962b9c5aba95f962e2ca81d9599c4715aebe5e4ddb72b309d1770 + md5: c2d95bd7aa8d564a9bd7eca5e571a5b3 + depends: + - __osx >=11.0 + - libcxx >=18 + constrains: + - libabseil-static =20240722.0=cxx17* + - abseil-cpp =20240722.0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 1178260 + timestamp: 1736008642885 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-31_h59b9bed_openblas.conda + build_number: 31 + sha256: 9839fc4ac0cbb0aa3b9eea520adfb57311838959222654804e58f6f2d1771db5 + md5: 728dbebd0f7a20337218beacffd37916 + depends: + - libopenblas >=0.3.29,<0.3.30.0a0 + - libopenblas >=0.3.29,<1.0a0 + constrains: + - liblapacke =3.9.0=31*_openblas + - liblapack =3.9.0=31*_openblas + - blas =2.131=openblas + - mkl <2025 + - libcblas =3.9.0=31*_openblas + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 16859 + timestamp: 1740087969120 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-31_h1a9f1db_openblas.conda + build_number: 31 + sha256: 67c9c81dd0444ecc712124034d9f74186ca82fd770b3df46b1a68564461c6a1a + md5: 48bd5bf15ccf3e409840be9caafc0ad5 + depends: + - libopenblas >=0.3.29,<0.3.30.0a0 + - libopenblas >=0.3.29,<1.0a0 + constrains: + - liblapack =3.9.0=31*_openblas + - blas =2.131=openblas + - libcblas =3.9.0=31*_openblas + - mkl <2025 + - liblapacke =3.9.0=31*_openblas + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 16915 + timestamp: 1740087911042 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-31_h10e41b3_openblas.conda + build_number: 31 + sha256: 369586e7688b59b4f92c709b99d847d66d4d095425db327dd32ee5e6ab74697f + md5: 39b053da5e7035c6592102280aa7612a + depends: + - libopenblas >=0.3.29,<0.3.30.0a0 + - libopenblas >=0.3.29,<1.0a0 + constrains: + - liblapacke =3.9.0=31*_openblas + - libcblas =3.9.0=31*_openblas + - blas =2.131=openblas + - mkl <2025 + - liblapack =3.9.0=31*_openblas + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 17123 + timestamp: 1740088119350 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-31_he106b2a_openblas.conda + build_number: 31 + sha256: ede8545011f5b208b151fe3e883eb4e31d495ab925ab7b9ce394edca846e0c0d + md5: abb32c727da370c481a1c206f5159ce9 + depends: + - libblas 3.9.0 31_h59b9bed_openblas + constrains: + - liblapacke =3.9.0=31*_openblas + - liblapack =3.9.0=31*_openblas + - blas =2.131=openblas + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 16796 + timestamp: 1740087984429 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-31_hab92f65_openblas.conda + build_number: 31 + sha256: f0457a1d2982f0a28bfbadaa02621677c324e88f7c8198c24fb3e3214c468dba + md5: 6b81dbae56a519f1ec2f25e0ee2f4334 + depends: + - libblas 3.9.0 31_h1a9f1db_openblas + constrains: + - liblapack =3.9.0=31*_openblas + - blas =2.131=openblas + - liblapacke =3.9.0=31*_openblas + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 16824 + timestamp: 1740087917500 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-31_hb3479ef_openblas.conda + build_number: 31 + sha256: f237486cc9118d09d0f3ff8820280de34365f98ee7b7dc5ab923b04c7cbf25a5 + md5: 7353c2bf0e90834cb70545671996d871 + depends: + - libblas 3.9.0 31_h10e41b3_openblas + constrains: + - liblapacke =3.9.0=31*_openblas + - blas =2.131=openblas + - liblapack =3.9.0=31*_openblas + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 17032 + timestamp: 1740088127097 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda + sha256: 776092346da87a2a23502e14d91eb0c32699c4a1522b7331537bd1c3751dcff5 + md5: 5b3e1610ff8bd5443476b91d618f5b77 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + size: 523505 + timestamp: 1736877862502 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda + sha256: d789471216e7aba3c184cd054ed61ce3f6dac6f87a50ec69291b9297f8c18724 + md5: c277e0a4d549b03ac1e9d6cbbe3d017b + depends: + - ncurses + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - ncurses >=6.5,<7.0a0 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + size: 134676 + timestamp: 1738479519902 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20250104-pl5321h976ea20_0.conda + sha256: c0b27546aa3a23d47919226b3a1635fccdb4f24b94e72e206a751b33f46fd8d6 + md5: fb640d776fc92b682a14e001980825b1 + depends: + - ncurses + - libgcc >=13 + - ncurses >=6.5,<7.0a0 + arch: aarch64 + platform: linux + license: BSD-2-Clause + license_family: BSD + size: 148125 + timestamp: 1738479808948 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda + sha256: 66aa216a403de0bb0c1340a88d1a06adaff66bae2cfd196731aa24db9859d631 + md5: 44083d2d2c2025afca315c7a172eab2b + depends: + - ncurses + - __osx >=11.0 + - ncurses >=6.5,<7.0a0 + arch: arm64 + platform: osx + license: BSD-2-Clause + license_family: BSD + size: 107691 + timestamp: 1738479560845 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda + sha256: 56541b98447b58e52d824bd59d6382d609e11de1f8adf20b23143e353d2b8d26 + md5: db833e03127376d461e1e13e76f09b6c + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + constrains: + - expat 2.6.4.* + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 73304 + timestamp: 1730967041968 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.6.4-h5ad3122_0.conda + sha256: f42e758009ba9db90d1fe7992bc3e60d0c52f71fb20923375d2c44ae69a5a2b3 + md5: f1b3fab36861b3ce945a13f0dfdfc688 + depends: + - libgcc >=13 + constrains: + - expat 2.6.4.* + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 72345 + timestamp: 1730967203789 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.4-h286801f_0.conda + sha256: e42ab5ace927ee7c84e3f0f7d813671e1cf3529f5f06ee5899606630498c2745 + md5: 38d2656dd914feb0cab8c629370768bf + depends: + - __osx >=11.0 + constrains: + - expat 2.6.4.* + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 64693 + timestamp: 1730967175868 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_0.conda + sha256: 67a6c95e33ebc763c1adc3455b9a9ecde901850eb2fceb8e646cc05ef3a663da + md5: e3eb7806380bc8bcecba6d749ad5f026 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 53415 + timestamp: 1739260413716 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.4.6-he21f813_0.conda + sha256: 41568066beefe7b319ff27d85952242e5b77fb753d705b8716041959e17c35c2 + md5: 966084fccf3ad62a3160666cda869f28 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 51513 + timestamp: 1739260449772 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 + sha256: 41b3d13efb775e340e4dba549ab5c029611ea6918703096b2eaa9c015c0750ca + md5: 086914b672be056eb70fd4285b6783b6 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 39020 + timestamp: 1636488587153 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h767d61c_2.conda + sha256: 3a572d031cb86deb541d15c1875aaa097baefc0c580b54dc61f5edab99215792 + md5: ef504d1acbd74b7cc6849ef8af47dd03 + depends: + - __glibc >=2.17,<3.0.a0 + - _openmp_mutex >=4.5 + constrains: + - libgomp 14.2.0 h767d61c_2 + - libgcc-ng ==14.2.0=*_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 847885 + timestamp: 1740240653082 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-14.2.0-he277a41_2.conda + sha256: a57f7f9ba2a12f56eafdcd25b6d75f7be10b8fc1a802a58b76a77ca8c66f4503 + md5: 6b4268a60b10f29257b51b9b67ff8d76 + depends: + - _openmp_mutex >=4.5 + constrains: + - libgcc-ng ==14.2.0=*_2 + - libgomp 14.2.0 he277a41_2 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 535507 + timestamp: 1740241069780 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_2.conda + sha256: fb7558c328b38b2f9d2e412c48da7890e7721ba018d733ebdfea57280df01904 + md5: a2222a6ada71fb478682efe483ce0f92 + depends: + - libgcc 14.2.0 h767d61c_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 53758 + timestamp: 1740240660904 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-14.2.0-he9431aa_2.conda + sha256: 9647f75cddc18b07eebe6e1f21500eed50a6af2c43c84e831b4c7a597e10d226 + md5: 692c2bb75f32cfafb6799cf6d1c5d0e0 + depends: + - libgcc 14.2.0 he277a41_2 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 53622 + timestamp: 1740241074834 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_2.conda + sha256: e05263e8960da03c341650f2a3ffa4ccae4e111cb198e8933a2908125459e5a6 + md5: fb54c4ea68b460c278d26eea89cfbcc3 + depends: + - libgfortran5 14.2.0 hf1ad2bd_2 + constrains: + - libgfortran-ng ==14.2.0=*_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 53733 + timestamp: 1740240690977 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_2.conda + sha256: 996d3c0505301901a7ab23b5e7daad21635d1c065240bb0f4faf7e4f75d7f49d + md5: d8b9d9dc0c8cd97d375b48e55947ba70 + depends: + - libgfortran5 14.2.0 hb6113d0_2 + constrains: + - libgfortran-ng ==14.2.0=*_2 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 53611 + timestamp: 1740241100147 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda + sha256: 44e541b4821c96b28b27fef5630883a60ce4fee91fd9c79f25a199f8f73f337b + md5: 4a55d9e169114b2b90d3ec4604cd7bbf + depends: + - libgfortran5 13.2.0 hf226fd6_3 + arch: arm64 + platform: osx + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 110233 + timestamp: 1707330749033 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hf1ad2bd_2.conda + sha256: c17b7cf3073a1f4e1f34d50872934fa326346e104d3c445abc1e62481ad6085c + md5: 556a4fdfac7287d349b8f09aba899693 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14.2.0 + constrains: + - libgfortran 14.2.0 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 1461978 + timestamp: 1740240671964 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_2.conda + sha256: 7b9e1d3666a00e5a52e5d43c003bd1c73ab472804be513c070aaedca9c4c2a9a + md5: cd754566661513808ef2408c4ab99a2f + depends: + - libgcc >=14.2.0 + constrains: + - libgfortran 14.2.0 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 1100765 + timestamp: 1740241083241 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda + sha256: bafc679eedb468a86aa4636061c55966186399ee0a04b605920d208d97ac579a + md5: 66ac81d54e95c534ae488726c1f698ea + depends: + - llvm-openmp >=8.0.0 + constrains: + - libgfortran 5.0.0 13_2_0_*_3 + arch: arm64 + platform: osx + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 997381 + timestamp: 1707330687590 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h767d61c_2.conda + sha256: 1a3130e0b9267e781b89399580f3163632d59fe5b0142900d63052ab1a53490e + md5: 06d02030237f4d5b3d9a7e7d348fe3c6 + depends: + - __glibc >=2.17,<3.0.a0 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 459862 + timestamp: 1740240588123 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_2.conda + sha256: 4e303711fb7413bf98995beac58e731073099d7a669a3b81e49330ca8da05174 + md5: b11c09d9463daf4cae492d29806b1889 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 462783 + timestamp: 1740241005079 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-31_h7ac8fdf_openblas.conda + build_number: 31 + sha256: f583661921456e798aba10972a8abbd9d33571c655c1f66eff450edc9cbefcf3 + md5: 452b98eafe050ecff932f0ec832dd03f + depends: + - libblas 3.9.0 31_h59b9bed_openblas + constrains: + - libcblas =3.9.0=31*_openblas + - liblapacke =3.9.0=31*_openblas + - blas =2.131=openblas + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 16790 + timestamp: 1740087997375 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-31_h411afd4_openblas.conda + build_number: 31 + sha256: 27613828ff6fb258b2e58802617df549f00089660ea8ab6c55c68f042c570162 + md5: 41dbff5eb805a75c120a7b7a1c744dc2 + depends: + - libblas 3.9.0 31_h1a9f1db_openblas + constrains: + - blas =2.131=openblas + - libcblas =3.9.0=31*_openblas + - liblapacke =3.9.0=31*_openblas + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 16845 + timestamp: 1740087923843 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-31_hc9a63f6_openblas.conda + build_number: 31 + sha256: fe55b9aaf82c6c0192c3d1fcc9b8e884f97492dda9a8de5dae29334b3135fab5 + md5: ff57a55a2cbce171ef5707fb463caf19 + depends: + - libblas 3.9.0 31_h10e41b3_openblas + constrains: + - liblapacke =3.9.0=31*_openblas + - libcblas =3.9.0=31*_openblas + - blas =2.131=openblas + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 17033 + timestamp: 1740088134988 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda + sha256: cad52e10319ca4585bc37f0bc7cce99ec7c15dc9168e42ccb96b741b0a27db3f + md5: 42d5b6a0f30d3c10cd88cb8584fda1cb + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: 0BSD + size: 111357 + timestamp: 1738525339684 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.4-h86ecc28_0.conda + sha256: 96413664f0fade54a4931940d18749cfc8e6308349dbb0cb83adb2394ca1f730 + md5: b88244e0a115cc34f7fbca9b11248e76 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: 0BSD + size: 124197 + timestamp: 1738528201520 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.4-h39f12f2_0.conda + sha256: 560c59d3834cc652a84fb45531bd335ad06e271b34ebc216e380a89798fe8e2c + md5: e3fd1f8320a100f2b210e690a57cd615 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: 0BSD + size: 98945 + timestamp: 1738525462560 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda + sha256: 26d77a3bb4dceeedc2a41bd688564fe71bf2d149fdcf117049970bc02ff1add6 + md5: 30fd6e37fe21f86f4bd26d6ee73eeec7 + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: LGPL-2.1-only + license_family: GPL + size: 33408 + timestamp: 1697359010159 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda + sha256: fd18c2b75d7411096428d36a70b36b1a17e31f7b8956b6905d145792d49e97f8 + md5: c14f32510f694e3185704d89967ec422 + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: LGPL-2.1-only + license_family: GPL + size: 34501 + timestamp: 1697358973269 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.29-pthreads_h94d23a6_0.conda + sha256: cc5389ea254f111ef17a53df75e8e5209ef2ea6117e3f8aced88b5a8e51f11c4 + md5: 0a4d0252248ef9a0f88f2ba8b8a08e12 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libgfortran + - libgfortran5 >=14.2.0 + constrains: + - openblas >=0.3.29,<0.3.30.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 5919288 + timestamp: 1739825731827 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.29-pthreads_h9d3fd7e_0.conda + sha256: 3a2ccf4c9098cd18a636e9b7fff947fdeb4962bcfb75c9d6fd80b8c50caf6a3c + md5: a99e2bfcb1ad6362544c71281eb617e9 + depends: + - libgcc >=14 + - libgfortran + - libgfortran5 >=14.2.0 + constrains: + - openblas >=0.3.29,<0.3.30.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 4801657 + timestamp: 1739825308974 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.29-openmp_hf332438_0.conda + sha256: 8989d9e01ec8c9b2d48dbb5efbe70b356fcd15990fb53b64fcb84798982c0343 + md5: 0cd1148c68f09027ee0b0f0179f77c30 + depends: + - __osx >=11.0 + - libgfortran 5.* + - libgfortran5 >=13.2.0 + - llvm-openmp >=18.1.8 + constrains: + - openblas >=0.3.29,<0.3.30.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 4168442 + timestamp: 1739825514918 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda + sha256: 51125ebb8b7152e4a4e69fd2398489c4ec8473195c27cde3cbdf1cb6d18c5493 + md5: d8703f1ffe5a06356f06467f1d0b9464 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 2960815 + timestamp: 1735577210663 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.3-h44a3b7b_1.conda + sha256: ecb69f2b1668e784b41ba667493be846662d5ef702bef64fb2e013bb1364cdc4 + md5: 68f807f7cc13951652bbe048253fd405 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 2788074 + timestamp: 1735576315676 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.3-h3bd63a1_1.conda + sha256: f58a16b13ad53346903c833e266f83c3d770a43a432659b98710aed85ca885e7 + md5: bdbfea4cf45ae36652c6bbcc2e7ebe91 + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=18 + - libzlib >=1.3.1,<2.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 2271580 + timestamp: 1735576361997 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsentencepiece-0.2.0-h8e10757_10.conda + sha256: dc399e0f04a09f8c1807c3b36e578eb81f81891c0ddf21de9c1fb9f048ce4031 + md5: 4f43dbcfacd3cc9a183dd3a48b94d3c0 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 823649 + timestamp: 1735627841126 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsentencepiece-0.2.0-h6164ad9_10.conda + sha256: 57074803772f65d4075b7d6dc17ff5aa40ec3a30109fa4225ca16911504c4a8b + md5: a7a192edc9cfba26a27df3283203e6a1 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 800865 + timestamp: 1735627982895 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsentencepiece-0.2.0-he13a0af_10.conda + sha256: 3347a8840d085ce1661928e736229f068d56c84312fbed90886e059023d85611 + md5: 1f67e5e30edd56e0a0bf6df6bb711a9d + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 754657 + timestamp: 1735628030895 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda + sha256: 0105bd108f19ea8e6a78d2d994a6d4a8db16d19a41212070d2d1d48a63c34161 + md5: a587892d3c13b6621a6091be690dbca2 + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: ISC + size: 205978 + timestamp: 1716828628198 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.20-h68df207_0.conda + sha256: 448df5ea3c5cf1af785aad46858d7a5be0522f4234a4dc9bb764f4d11ff3b981 + md5: 2e4a8f23bebdcb85ca8e5a0fbe75666a + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: ISC + size: 177394 + timestamp: 1716828514515 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda + sha256: fade8223e1e1004367d7101dd17261003b60aa576df6d7802191f8972f7470b1 + md5: a7ce36e284c5faaf93c220dfc39e3abd + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: ISC + size: 164972 + timestamp: 1716828607917 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.49.1-hee588c1_1.conda + sha256: 7a09eef804ef7cf4d88215c2297eabb72af8ad0bd5b012060111c289f14bbe7d + md5: 73cea06049cc4174578b432320a003b8 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux + license: Unlicense + size: 915956 + timestamp: 1739953155793 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.49.1-h5eb1b54_1.conda + sha256: 920fb3b7d3b873babf79a3e392cc82d43b8bd02a573ccaff34219efb5cf7b51e + md5: 150d64241fa27d9d35a7f421ca968a6c + depends: + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + arch: aarch64 + platform: linux + license: Unlicense + size: 915118 + timestamp: 1739953101699 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.1-h3f77e49_1.conda + sha256: 266639fb10ca92287961574b0b4d6031fa40dd9d723d64a0fcb08513a24dab03 + md5: c83357a21092bd952933c36c5cb4f4d6 + depends: + - __osx >=11.0 + - libzlib >=1.3.1,<2.0a0 + arch: arm64 + platform: osx + license: Unlicense + size: 898767 + timestamp: 1739953312379 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-h8f9b012_2.conda + sha256: 8f5bd92e4a24e1d35ba015c5252e8f818898478cb3bc50bd8b12ab54707dc4da + md5: a78c856b6dc6bf4ea8daeb9beaaa3fb0 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc 14.2.0 h767d61c_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 3884556 + timestamp: 1740240685253 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_2.conda + sha256: c30a74bc996013907f6d9f344da007c26d98ef9a0831151cd50aece3125c45d5 + md5: eadee2cda99697e29411c1013c187b92 + depends: + - libgcc 14.2.0 he277a41_2 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 3810779 + timestamp: 1740241094774 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_2.conda + sha256: e86f38b007cf97cc2c67cd519f2de12a313c4ee3f5ef11652ad08932a5e34189 + md5: c75da67f045c2627f59e6fcb5f4e3a9b + depends: + - libstdcxx 14.2.0 h8f9b012_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 53830 + timestamp: 1740240722530 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_2.conda + sha256: 0107886ead6f255956d8e520f8dff260f9ab3d0d51512f18c52710c406e4b2df + md5: c934c1fddad582fcc385b608eb06a70c + depends: + - libstdcxx 14.2.0 h3f4de04_2 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 53715 + timestamp: 1740241126343 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda + sha256: 787eb542f055a2b3de553614b25f09eefb0a0931b0c87dbcce6efdfd92f04f18 + md5: 40b61aab5c7ba9ff276c41cfffe6b80b + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 33601 + timestamp: 1680112270483 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda + sha256: 616277b0c5f7616c2cdf36f6c316ea3f9aa5bb35f2d4476a349ab58b9b91675f + md5: 000e30b09db0b7c775b21695dff30969 + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 35720 + timestamp: 1680113474501 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda + sha256: 6ae68e0b86423ef188196fff6207ed0c8195dd84273cb5623b85aa08033a410c + md5: 5aa797f8787fe7a17d1b0821485b5adc + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: LGPL-2.1-or-later + size: 100393 + timestamp: 1702724383534 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda + sha256: 6b46c397644091b8a26a3048636d10b989b1bf266d4be5e9474bf763f828f41f + md5: b4df5d7d4b63579d081fd3a4cf99740e + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: LGPL-2.1-or-later + size: 114269 + timestamp: 1702724369203 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda + sha256: d4bfe88d7cb447768e31650f06257995601f89076080e76df55e3112d4e47dc4 + md5: edb0dca6bc32e4f4789199455a1dbeb8 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + constrains: + - zlib 1.3.1 *_2 + arch: x86_64 + platform: linux + license: Zlib + license_family: Other + size: 60963 + timestamp: 1727963148474 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda + sha256: 5a2c1eeef69342e88a98d1d95bff1603727ab1ff4ee0e421522acd8813439b84 + md5: 08aad7cbe9f5a6b460d0976076b6ae64 + depends: + - libgcc >=13 + constrains: + - zlib 1.3.1 *_2 + arch: aarch64 + platform: linux + license: Zlib + license_family: Other + size: 66657 + timestamp: 1727963199518 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda + sha256: ce34669eadaba351cd54910743e6a2261b67009624dbc7daeeafdef93616711b + md5: 369964e85dc26bfe78f41399b366c435 + depends: + - __osx >=11.0 + constrains: + - zlib 1.3.1 *_2 + arch: arm64 + platform: osx + license: Zlib + license_family: Other + size: 46438 + timestamp: 1727963202283 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda + sha256: b92a669f2059874ebdcb69041b6c243d68ffc3fb356ac1339cec44aeb27245d7 + md5: c4d54bfd3817313ce758aa76283b118d + depends: + - __osx >=11.0 + constrains: + - openmp 19.1.7|19.1.7.* + arch: arm64 + platform: osx + license: Apache-2.0 WITH LLVM-exception + license_family: APACHE + size: 280830 + timestamp: 1736986295869 +- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022718-release.conda + noarch: python + sha256: f3dcb14fed5470c0fc521542cbd2f1c56ca7e46d560f46176b8f926198cb3cbd + md5: 01fe5e0cf46c84a6345e323ad1316764 + depends: + - max-core ==25.2.0.dev2025022718 release + - max-python ==25.2.0.dev2025022718 release + - mojo-jupyter ==25.2.0.dev2025022718 release + - mblack ==25.2.0.dev2025022718 release + license: LicenseRef-Modular-Proprietary + size: 9905 + timestamp: 1740680254354 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022718-release.conda + sha256: 847d5767109a305d7bcad4ac29248a74a384034692934a0c54b00a590c27094a + md5: fc5a9ae36c7805979bd58ca55a25066f + depends: + - mblack ==25.2.0.dev2025022718 release + license: LicenseRef-Modular-Proprietary + size: 249811868 + timestamp: 1740680254354 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022718-release.conda + sha256: 250c35ecccd302e6c7de836ac200a5ece92e74508c2590c585d8803d488fd650 + md5: d88728b468c85902512a0f9b99251035 + depends: + - mblack ==25.2.0.dev2025022718 release + license: LicenseRef-Modular-Proprietary + size: 252108573 + timestamp: 1740680207793 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022718-release.conda + sha256: fb28d9e61aa507ea84b470082d3dc96844a24fe672d4e4c57e832655c5d0a202 + md5: dd8734453f7276a258f3351cc5c506c3 + depends: + - mblack ==25.2.0.dev2025022718 release + license: LicenseRef-Modular-Proprietary + size: 217273450 + timestamp: 1740681819160 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022718-release.conda + noarch: python + sha256: 831b4d62f66f0083321121c6ba25dedab3ee41d5e9f19d9752969592214af398 + md5: f828ace91aa057e4774e84ad459adccf + depends: + - max-core ==25.2.0.dev2025022718 release + - click >=8.0.0 + - numpy >=1.18,<2.0 + - sentencepiece >=0.2.0 + - tqdm >=4.67.1 + constrains: + - aiohttp >=3.11.12 + - fastapi >=0.114.2 + - gguf >=0.14.0 + - hf-transfer >=0.1.9 + - httpx >=0.28.1 + - huggingface_hub >=0.24.0 + - nvitop >=1.4.1 + - opentelemetry-api >=1.29.0 + - opentelemetry-exporter-otlp-proto-http >=1.27.0 + - opentelemetry-exporter-prometheus <1.0.0 + - opentelemetry-sdk >=1.29.0,<2.0 + - pillow >=10.3.0 + - prometheus_client >=0.21.0 + - prometheus-async >=22.2.0 + - psutil >=6.1.1 + - pydantic + - pydantic-settings >=2.7.1 + - pyinstrument >=5.0.1 + - python-json-logger >=2.0.7 + - requests >=2.32.3 + - rich >=13.9.4 + - safetensors >=0.5.2 + - sentinel >=0.3.0 + - sse-starlette >=2.1.2 + - tokenizers >=0.19.0 + - pytorch >=2.2.2,<=2.5.1 + - transformers >=4.40.1 + - uvicorn >=0.34.0 + - uvloop >=0.21.0 + - xgrammar ==0.1.11 + license: LicenseRef-Modular-Proprietary + size: 123584411 + timestamp: 1740680254354 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022718-release.conda + noarch: python + sha256: b9e5755b7bf6314a37a90ef0250c93f5e7c693954d7a6389a97ab9ef06e23cc3 + md5: bfd2e752d0fc9516b78a17169ce9cc78 + depends: + - max-core ==25.2.0.dev2025022718 release + - click >=8.0.0 + - numpy >=1.18,<2.0 + - sentencepiece >=0.2.0 + - tqdm >=4.67.1 + constrains: + - aiohttp >=3.11.12 + - fastapi >=0.114.2 + - gguf >=0.14.0 + - hf-transfer >=0.1.9 + - httpx >=0.28.1 + - huggingface_hub >=0.24.0 + - nvitop >=1.4.1 + - opentelemetry-api >=1.29.0 + - opentelemetry-exporter-otlp-proto-http >=1.27.0 + - opentelemetry-exporter-prometheus <1.0.0 + - opentelemetry-sdk >=1.29.0,<2.0 + - pillow >=10.3.0 + - prometheus_client >=0.21.0 + - prometheus-async >=22.2.0 + - psutil >=6.1.1 + - pydantic + - pydantic-settings >=2.7.1 + - pyinstrument >=5.0.1 + - python-json-logger >=2.0.7 + - requests >=2.32.3 + - rich >=13.9.4 + - safetensors >=0.5.2 + - sentinel >=0.3.0 + - sse-starlette >=2.1.2 + - tokenizers >=0.19.0 + - pytorch >=2.2.2,<=2.5.1 + - transformers >=4.40.1 + - uvicorn >=0.34.0 + - uvloop >=0.21.0 + - xgrammar ==0.1.11 + license: LicenseRef-Modular-Proprietary + size: 126004454 + timestamp: 1740680207793 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022718-release.conda + noarch: python + sha256: 7da9f4655082bb64c2b0cc996ffefa0ce5c49744854ed77a9b0d000e27cf5a55 + md5: b16d498a148aa61dca2a6bfec5cb8e46 + depends: + - max-core ==25.2.0.dev2025022718 release + - click >=8.0.0 + - numpy >=1.18,<2.0 + - sentencepiece >=0.2.0 + - tqdm >=4.67.1 + constrains: + - aiohttp >=3.11.12 + - fastapi >=0.114.2 + - gguf >=0.14.0 + - hf-transfer >=0.1.9 + - httpx >=0.28.1 + - huggingface_hub >=0.24.0 + - nvitop >=1.4.1 + - opentelemetry-api >=1.29.0 + - opentelemetry-exporter-otlp-proto-http >=1.27.0 + - opentelemetry-exporter-prometheus <1.0.0 + - opentelemetry-sdk >=1.29.0,<2.0 + - pillow >=10.3.0 + - prometheus_client >=0.21.0 + - prometheus-async >=22.2.0 + - psutil >=6.1.1 + - pydantic + - pydantic-settings >=2.7.1 + - pyinstrument >=5.0.1 + - python-json-logger >=2.0.7 + - requests >=2.32.3 + - rich >=13.9.4 + - safetensors >=0.5.2 + - sentinel >=0.3.0 + - sse-starlette >=2.1.2 + - tokenizers >=0.19.0 + - pytorch >=2.2.2,<=2.5.1 + - transformers >=4.40.1 + - uvicorn >=0.34.0 + - uvloop >=0.21.0 + - xgrammar ==0.1.11 + license: LicenseRef-Modular-Proprietary + size: 112658409 + timestamp: 1740681819160 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022718-release.conda + noarch: python + sha256: ff042a8abfed0e2e36b207e3d4f59a2b4577dea7f099b08d1aaef128ab796f09 + md5: 719ca7123d53415adcdd7f0cb8396c51 + depends: + - python >=3.9,<3.13 + - click >=8.0.0 + - mypy_extensions >=0.4.3 + - packaging >=22.0 + - pathspec >=0.9.0 + - platformdirs >=2 + - typing_extensions >=v4.12.2 + - python + license: MIT + size: 130852 + timestamp: 1740680254353 +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022718-release.conda + noarch: python + sha256: 19c33e23b27e240fee0b2a1d56921802ac88558dc2da417837cd590175561e16 + md5: 6b8d00b15817db11e026f824f7f0ba14 + depends: + - max-core ==25.2.0.dev2025022718 release + - python >=3.9,<3.13 + - jupyter_client >=8.6.2,<8.7 + - python + license: LicenseRef-Modular-Proprietary + size: 22981 + timestamp: 1740680254354 +- conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda + sha256: 1895f47b7d68581a6facde5cb13ab8c2764c2e53a76bd746f8f98910dc4e08fe + md5: 29097e7ea634a45cc5386b95cac6568f + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 10854 + timestamp: 1733230986902 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda + sha256: 3fde293232fa3fca98635e1167de6b7c7fda83caf24b9d6c91ec9eefb4f4d586 + md5: 47e340acb35de30501a76c7c799c41d7 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: X11 AND BSD-3-Clause + size: 891641 + timestamp: 1738195959188 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-ha32ae93_3.conda + sha256: 91cfb655a68b0353b2833521dc919188db3d8a7f4c64bea2c6a7557b24747468 + md5: 182afabe009dc78d8b73100255ee6868 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: X11 AND BSD-3-Clause + size: 926034 + timestamp: 1738196018799 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda + sha256: 2827ada40e8d9ca69a153a45f7fd14f32b2ead7045d3bbb5d10964898fe65733 + md5: 068d497125e4bf8a66bf707254fff5ae + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: X11 AND BSD-3-Clause + size: 797030 + timestamp: 1738196177597 +- conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda + sha256: fe3459c75cf84dcef6ef14efcc4adb0ade66038ddd27cadb894f34f4797687d8 + md5: d8285bea2a350f63fab23bf460221f3f + depends: + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - libgcc-ng >=12 + - liblapack >=3.9.0,<4.0a0 + - libstdcxx-ng >=12 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - numpy-base <0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 7484186 + timestamp: 1707225809722 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda + sha256: 23767677a7790bee5457d5e75ebd508b9a31c5354216f4310dd1acfca3f7a6f9 + md5: 9cebf5a06cb87d4569cd68df887af476 + depends: + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - libgcc-ng >=12 + - liblapack >=3.9.0,<4.0a0 + - libstdcxx-ng >=12 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - numpy-base <0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 6614296 + timestamp: 1707225994762 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda + sha256: c8841d6d6f61fd70ca80682efbab6bdb8606dc77c68d8acabfbd7c222054f518 + md5: d83fc83d589e2625a3451c9a7e21047c + depends: + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - libcxx >=16 + - liblapack >=3.9.0,<4.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - numpy-base <0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 6073136 + timestamp: 1707226249608 +- conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.1-h7b32b05_0.conda + sha256: cbf62df3c79a5c2d113247ddea5658e9ff3697b6e741c210656e239ecaf1768f + md5: 41adf927e746dc75ecf0ef841c454e48 + depends: + - __glibc >=2.17,<3.0.a0 + - ca-certificates + - libgcc >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 2939306 + timestamp: 1739301879343 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.1-hd08dc88_0.conda + sha256: d80b52b56b2206053968270069616868cbeb289ef855cf1584b1bb0fef61b37c + md5: 09036190605c57eaecf01218e0e9542d + depends: + - ca-certificates + - libgcc >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 3476570 + timestamp: 1739303256089 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.1-h81ee809_0.conda + sha256: 4f8e2389e1b711b44182a075516d02c80fa7a3a7e25a71ff1b5ace9eae57a17a + md5: 75f9f0c7b1740017e2db83a53ab9a28e + depends: + - __osx >=11.0 + - ca-certificates + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 2934522 + timestamp: 1739301896733 +- conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + sha256: da157b19bcd398b9804c5c52fc000fcb8ab0525bdb9c70f95beaa0bb42f85af1 + md5: 3bfed7e6228ebf2f7b9eaa47f1b4e2aa + depends: + - python >=3.8 + license: Apache-2.0 + license_family: APACHE + size: 60164 + timestamp: 1733203368787 +- conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + sha256: 9f64009cdf5b8e529995f18e03665b03f5d07c0b17445b8badef45bde76249ee + md5: 617f15191456cc6a13db418a275435e5 + depends: + - python >=3.9 + license: MPL-2.0 + license_family: MOZILLA + size: 41075 + timestamp: 1733233471940 +- conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + sha256: bb50f6499e8bc1d1a26f17716c97984671121608dc0c3ecd34858112bce59a27 + md5: 577852c7e53901ddccc7e6a9959ddebe + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 20448 + timestamp: 1733232756001 +- conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.9-h9e4cc4f_0_cpython.conda + sha256: 64fed5178f1e9c8ac0f572ac0ce37955f5dee7b2bcac665202bc14f1f7dd618a + md5: 5665f0079432f8848079c811cdb537d5 + depends: + - __glibc >=2.17,<3.0.a0 + - bzip2 >=1.0.8,<2.0a0 + - ld_impl_linux-64 >=2.36.1 + - libexpat >=2.6.4,<3.0a0 + - libffi >=3.4,<4.0a0 + - libgcc >=13 + - liblzma >=5.6.4,<6.0a0 + - libnsl >=2.0.1,<2.1.0a0 + - libsqlite >=3.48.0,<4.0a0 + - libuuid >=2.38.1,<3.0a0 + - libxcrypt >=4.4.36 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.4.1,<4.0a0 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + constrains: + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Python-2.0 + size: 31581682 + timestamp: 1739521496324 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.9-h1683364_0_cpython.conda + sha256: 0366f38918bceda8ff5917d7bbe1cea2bc8b6c74e7245eb0e4b0d3c2d37f76cf + md5: 2e7ad70254455e0508adabff10218512 + depends: + - bzip2 >=1.0.8,<2.0a0 + - ld_impl_linux-aarch64 >=2.36.1 + - libexpat >=2.6.4,<3.0a0 + - libffi >=3.4,<4.0a0 + - libgcc >=13 + - liblzma >=5.6.4,<6.0a0 + - libnsl >=2.0.1,<2.1.0a0 + - libsqlite >=3.48.0,<4.0a0 + - libuuid >=2.38.1,<3.0a0 + - libxcrypt >=4.4.36 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.4.1,<4.0a0 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + constrains: + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Python-2.0 + size: 13804161 + timestamp: 1739519531794 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.9-hc22306f_0_cpython.conda + sha256: cbf81a78d3ca6e663e827523e6ddbc28369cac488da047a28f83875eb52fe5f6 + md5: 1d105a6c46a753e3c0bab54a1ad24063 + depends: + - __osx >=11.0 + - bzip2 >=1.0.8,<2.0a0 + - libexpat >=2.6.4,<3.0a0 + - libffi >=3.4,<4.0a0 + - liblzma >=5.6.4,<6.0a0 + - libsqlite >=3.48.0,<4.0a0 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.4.1,<4.0a0 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + constrains: + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Python-2.0 + size: 12947786 + timestamp: 1739520092196 +- conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + sha256: a50052536f1ef8516ed11a844f9413661829aa083304dc624c5925298d078d79 + md5: 5ba79d7c71f03c678c8ead841f347d6e + depends: + - python >=3.9 + - six >=1.5 + license: Apache-2.0 + license_family: APACHE + size: 222505 + timestamp: 1733215763718 +- conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda + build_number: 5 + sha256: d10e93d759931ffb6372b45d65ff34d95c6000c61a07e298d162a3bc2accebb0 + md5: 0424ae29b104430108f5218a66db7260 + constrains: + - python 3.12.* *_cpython + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 6238 + timestamp: 1723823388266 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.12-5_cp312.conda + build_number: 5 + sha256: 5ccdad9981753cc4a2d126e356673a21c0cd5b34e209cb8d476a3947d4ad9b39 + md5: 62b20f305498284a07dc6c45fd0e5c87 + constrains: + - python 3.12.* *_cpython + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 6329 + timestamp: 1723823366253 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-5_cp312.conda + build_number: 5 + sha256: 49d624e4b809c799d2bf257b22c23cf3fc4460f5570d9a58e7ad86350aeaa1f4 + md5: b76f9b1c862128e56ac7aa8cd2333de9 + constrains: + - python 3.12.* *_cpython + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 6278 + timestamp: 1723823099686 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.1-py312hbf22597_0.conda + sha256: 90ec0da0317d3d76990a40c61e1709ef859dd3d8c63838bad2814f46a63c8a2e + md5: 7cec8d0dac15a2d9fea8e49879aa779d + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libsodium >=1.0.20,<1.0.21.0a0 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - zeromq >=4.3.5,<4.4.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 382698 + timestamp: 1738271121975 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyzmq-26.2.1-py312h2427ae1_0.conda + sha256: 9558f9330093e5c21b7c04e2e212e19b9b88ad9c808315f12c0765b244018a09 + md5: 0520da8de6870d8ff63e818e927d1524 + depends: + - libgcc >=13 + - libsodium >=1.0.20,<1.0.21.0a0 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - zeromq >=4.3.5,<4.4.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 375156 + timestamp: 1738273130727 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.1-py312hf4875e0_0.conda + sha256: 70d398b334668dc597d33e27847ede1b0829a639b9c91ee845355e52c86c2293 + md5: bfbefdb140b546a80827ff7c9d5ac7b8 + depends: + - __osx >=11.0 + - libcxx >=18 + - libsodium >=1.0.20,<1.0.21.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - zeromq >=4.3.5,<4.4.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 364649 + timestamp: 1738271263898 +- conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda + sha256: 2d6d0c026902561ed77cd646b5021aef2d4db22e57a5b0178dfc669231e06d2c + md5: 283b96675859b20a825f8fa30f311446 + depends: + - libgcc >=13 + - ncurses >=6.5,<7.0a0 + arch: x86_64 + platform: linux + license: GPL-3.0-only + license_family: GPL + size: 282480 + timestamp: 1740379431762 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8382b9d_2.conda + sha256: 54bed3a3041befaa9f5acde4a37b1a02f44705b7796689574bcf9d7beaad2959 + md5: c0f08fc2737967edde1a272d4bf41ed9 + depends: + - libgcc >=13 + - ncurses >=6.5,<7.0a0 + arch: aarch64 + platform: linux + license: GPL-3.0-only + license_family: GPL + size: 291806 + timestamp: 1740380591358 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda + sha256: 7db04684d3904f6151eff8673270922d31da1eea7fa73254d01c437f49702e34 + md5: 63ef3f6e6d6d5c589e64f11263dc5676 + depends: + - ncurses >=6.5,<7.0a0 + arch: arm64 + platform: osx + license: GPL-3.0-only + license_family: GPL + size: 252359 + timestamp: 1740379663071 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-0.2.0-hc8f76dd_10.conda + sha256: a1bde55ceb9dc5bd7879283d0f594a6ce65c07fda3de76230c65a4a5df47858a + md5: 480e915dfc6c592615ef6f217e615aa6 + depends: + - libsentencepiece 0.2.0 h8e10757_10 + - python_abi 3.12.* *_cp312 + - sentencepiece-python 0.2.0 py312hb6b8a2b_10 + - sentencepiece-spm 0.2.0 h8e10757_10 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 19470 + timestamp: 1735628377167 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-0.2.0-h6c1b121_10.conda + sha256: 846d885a560fbb4375b645e7caf2f756ef88bbeb441b670375da0090aaa427fb + md5: 33a89eb1dedae8eb7222b0a89856f337 + depends: + - libsentencepiece 0.2.0 h6164ad9_10 + - python_abi 3.12.* *_cp312 + - sentencepiece-python 0.2.0 py312h197ff68_10 + - sentencepiece-spm 0.2.0 h6164ad9_10 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 19686 + timestamp: 1735628718991 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-0.2.0-h22a84ea_10.conda + sha256: 526c934b897131bd274697649c3b1c492a7d66c03368885a954112468b3c1424 + md5: 346abe448f69949a65473b336856860a + depends: + - libsentencepiece 0.2.0 he13a0af_10 + - python_abi 3.12.* *_cp312 + - sentencepiece-python 0.2.0 py312h155166a_10 + - sentencepiece-spm 0.2.0 he13a0af_10 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 19759 + timestamp: 1735628533490 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-python-0.2.0-py312hb6b8a2b_10.conda + sha256: 37df7fb659564587b950b39c936769d9b5095afb7bc223f42d6248a5540c6567 + md5: 7908b7b977e2e123a5f6a29906f2ce44 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 h8e10757_10 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 2411182 + timestamp: 1735628106455 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-python-0.2.0-py312h197ff68_10.conda + sha256: a7c2c19cc397c7632e2630af49ddcff128f145c93ea493421e6f42bfa5e1d30b + md5: 5642e4545a3cf03e446fb3b3e9fd723b + depends: + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 h6164ad9_10 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 2458076 + timestamp: 1735628298246 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-python-0.2.0-py312h155166a_10.conda + sha256: 2d59614aeafbf54cc718805798c11c2d0a3b4b8d947d1bd81c87c484b4883077 + md5: 6e11367ef670296fce01fc9860be944d + depends: + - __osx >=11.0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 he13a0af_10 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 2433303 + timestamp: 1735628083958 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-spm-0.2.0-h8e10757_10.conda + sha256: 6b55e1121545357d63c3aa0766931720e8aafc52d88641ba7631c8cbaa68c52f + md5: e977b7be5ac26c55825e121e00b90493 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 h8e10757_10 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 89076 + timestamp: 1735628334078 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-spm-0.2.0-h6164ad9_10.conda + sha256: b98fc1028a8e8fbf309af383f9c837290a14e076e6c5533dc251694ea33ffc6e + md5: a4b75936c01dca3f089f02752b7ee325 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 h6164ad9_10 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 85983 + timestamp: 1735628693813 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-spm-0.2.0-he13a0af_10.conda + sha256: b760aeee02e2afbfcce3f559e8a227aa4c94139157b1702fdfb41a057dad0e52 + md5: 9b7300f23cd330da8664cd072c162e5f + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 he13a0af_10 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 83826 + timestamp: 1735628514667 +- conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + sha256: 41db0180680cc67c3fa76544ffd48d6a5679d96f4b71d7498a759e94edc9a2db + md5: a451d576819089b0d672f18768be0f65 + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 16385 + timestamp: 1733381032766 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda + sha256: e0569c9caa68bf476bead1bed3d79650bb080b532c64a4af7d8ca286c08dea4e + md5: d453b98d9c83e71da0741bb0ff4d76bc + depends: + - libgcc-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 + arch: x86_64 + platform: linux + license: TCL + license_family: BSD + size: 3318875 + timestamp: 1699202167581 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda + sha256: 7fa27cc512d3a783f38bd16bbbffc008807372499d5b65d089a8e43bde9db267 + md5: f75105e0585851f818e0009dd1dde4dc + depends: + - libgcc-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 + arch: aarch64 + platform: linux + license: TCL + license_family: BSD + size: 3351802 + timestamp: 1695506242997 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda + sha256: 72457ad031b4c048e5891f3f6cb27a53cb479db68a52d965f796910e71a403a8 + md5: b50a57ba89c32b62428b71a875291c9b + depends: + - libzlib >=1.2.13,<2.0.0a0 + arch: arm64 + platform: osx + license: TCL + license_family: BSD + size: 3145523 + timestamp: 1699202432999 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda + sha256: 062a3a3a37fa8615ce57929ba7e982c76f5a5810bcebd435950f6d6c4147c310 + md5: e417822cb989e80a0d2b1b576fdd1657 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 840414 + timestamp: 1732616043734 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py312h52516f5_0.conda + sha256: 4c19a544354172b2273553267e734795a6da3c78a04c2d19f8e9e159ca3178bc + md5: e28996d9d2d44d777b7e6fb12f63715b + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 841662 + timestamp: 1732616934923 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda + sha256: 964a2705a36c50040c967b18b45b9cc8de3c2aff4af546979a574e0b38e58e39 + md5: fb0605888a475d6a380ae1d1a819d976 + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 842549 + timestamp: 1732616081362 +- conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + sha256: 11e2c85468ae9902d24a27137b6b39b4a78099806e551d390e394a8c34b48e40 + md5: 9efbfdc37242619130ea42b1cc4ed861 + depends: + - colorama + - python >=3.9 + license: MPL-2.0 or MIT + size: 89498 + timestamp: 1735661472632 +- conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + sha256: f39a5620c6e8e9e98357507262a7869de2ae8cc07da8b7f84e517c9fd6c2b959 + md5: 019a7385be9af33791c989871317e1ed + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 110051 + timestamp: 1733367480074 +- conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + sha256: 337be7af5af8b2817f115b3b68870208b30c31d3439bec07bfb2d8f4823e3568 + md5: d17f13df8b65464ca316cbc000a3cb64 + depends: + - python >=3.9 + license: PSF-2.0 + license_family: PSF + size: 39637 + timestamp: 1733188758212 +- conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + sha256: c4b1ae8a2931fe9b274c44af29c5475a85b37693999f8c792dad0f8c6734b1de + md5: dbcace4706afdfb7eb891f7b37d07c04 + license: LicenseRef-Public-Domain + size: 122921 + timestamp: 1737119101255 +- conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda + sha256: a4dc72c96848f764bb5a5176aa93dd1e9b9e52804137b99daeebba277b31ea10 + md5: 3947a35e916fcc6b9825449affbf4214 + depends: + - __glibc >=2.17,<3.0.a0 + - krb5 >=1.21.3,<1.22.0a0 + - libgcc >=13 + - libsodium >=1.0.20,<1.0.21.0a0 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: MPL-2.0 + license_family: MOZILLA + size: 335400 + timestamp: 1731585026517 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zeromq-4.3.5-h5efb499_7.conda + sha256: a6003096dc0570a86492040ba32b04ce7662b159600be2252b7a0dfb9414e21c + md5: f2f3282559a4b87b7256ecafb4610107 + depends: + - krb5 >=1.21.3,<1.22.0a0 + - libgcc >=13 + - libsodium >=1.0.20,<1.0.21.0a0 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: MPL-2.0 + license_family: MOZILLA + size: 371419 + timestamp: 1731589490850 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda + sha256: 9e585569fe2e7d3bea71972cd4b9f06b1a7ab8fa7c5139f92a31cbceecf25a8a + md5: f7e6b65943cb73bce0143737fded08f1 + depends: + - __osx >=11.0 + - krb5 >=1.21.3,<1.22.0a0 + - libcxx >=18 + - libsodium >=1.0.20,<1.0.21.0a0 + arch: arm64 + platform: osx + license: MPL-2.0 + license_family: MOZILLA + size: 281565 + timestamp: 1731585108039 +- conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + sha256: 567c04f124525c97a096b65769834b7acb047db24b15a56888a322bf3966c3e1 + md5: 0c3cc595284c5e8f0f9900a9b228a332 + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 21809 + timestamp: 1732827613585 diff --git a/examples/gpu_functions/magic.lock b/examples/gpu_functions/magic.lock new file mode 100644 index 0000000000..9473097321 --- /dev/null +++ b/examples/gpu_functions/magic.lock @@ -0,0 +1,2182 @@ +version: 6 +environments: + default: + channels: + - url: https://conda.anaconda.org/conda-forge/ + - url: https://conda.modular.com/max-nightly/ + packages: + linux-64: + - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2025.1.31-hbcca054_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-31_h59b9bed_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-31_he106b2a_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h767d61c_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hf1ad2bd_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h767d61c_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-31_h7ac8fdf_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.29-pthreads_h94d23a6_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsentencepiece-0.2.0-h8e10757_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.49.1-hee588c1_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-h8f9b012_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022718-release.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-h2d0b736_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.1-h7b32b05_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.9-h9e4cc4f_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.1-py312hbf22597_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-0.2.0-hc8f76dd_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-python-0.2.0-py312hb6b8a2b_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-spm-0.2.0-h8e10757_10.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + linux-aarch64: + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h68df207_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2025.1.31-hcefe29a_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/keyutils-1.6.1-h4e544f5_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/krb5-1.21.3-h50a48e9_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h18dbdb1_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-31_h1a9f1db_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-31_hab92f65_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20250104-pl5321h976ea20_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.6.4-h5ad3122_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.4.6-he21f813_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-14.2.0-he277a41_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-14.2.0-he9431aa_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-31_h411afd4_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.4-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.29-pthreads_h9d3fd7e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.3-h44a3b7b_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsentencepiece-0.2.0-h6164ad9_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.20-h68df207_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.49.1-h5eb1b54_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022718-release.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-ha32ae93_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.1-hd08dc88_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.9-h1683364_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.12-5_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyzmq-26.2.1-py312h2427ae1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8382b9d_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-0.2.0-h6c1b121_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-python-0.2.0-py312h197ff68_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-spm-0.2.0-h6164ad9_10.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py312h52516f5_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zeromq-4.3.5-h5efb499_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + osx-arm64: + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2025.1.31-hf0a4a13_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_h07bc746_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-31_h10e41b3_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-31_hb3479ef_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.4-h286801f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-31_hc9a63f6_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.4-h39f12f2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.29-openmp_hf332438_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.3-h3bd63a1_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsentencepiece-0.2.0-he13a0af_10.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.1-h3f77e49_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022718-release.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.1-h81ee809_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.9-hc22306f_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-5_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.1-py312hf4875e0_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-0.2.0-h22a84ea_10.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-python-0.2.0-py312h155166a_10.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-spm-0.2.0-he13a0af_10.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda +packages: +- conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 + sha256: fe51de6107f9edc7aa4f786a70f4a883943bc9d39b3bb7307c04c41410990726 + md5: d7c89558ba9fa0495403155b64376d81 + arch: x86_64 + platform: linux + license: None + size: 2562 + timestamp: 1578324546067 +- conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 + build_number: 16 + sha256: fbe2c5e56a653bebb982eda4876a9178aedfc2b545f25d0ce9c4c0b508253d22 + md5: 73aaf86a425cc6e73fcf236a5a46396d + depends: + - _libgcc_mutex 0.1 conda_forge + - libgomp >=7.5.0 + constrains: + - openmp_impl 9999 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 23621 + timestamp: 1650670423406 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2 + build_number: 16 + sha256: 3702bef2f0a4d38bd8288bbe54aace623602a1343c2cfbefd3fa188e015bebf0 + md5: 6168d71addc746e8f2b8d57dfd2edcea + depends: + - libgomp >=7.5.0 + constrains: + - openmp_impl 9999 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 23712 + timestamp: 1650670790230 +- conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda + sha256: 5ced96500d945fb286c9c838e54fa759aa04a7129c59800f0846b4335cee770d + md5: 62ee74e96c5ebb0af99386de58cf9553 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: bzip2-1.0.6 + license_family: BSD + size: 252783 + timestamp: 1720974456583 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h68df207_7.conda + sha256: 2258b0b33e1cb3a9852d47557984abb6e7ea58e3d7f92706ec1f8e879290c4cb + md5: 56398c28220513b9ea13d7b450acfb20 + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: bzip2-1.0.6 + license_family: BSD + size: 189884 + timestamp: 1720974504976 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda + sha256: adfa71f158cbd872a36394c56c3568e6034aa55c623634b37a4836bd036e6b91 + md5: fc6948412dbbbe9a4c9ddbbcfe0a79ab + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: bzip2-1.0.6 + license_family: BSD + size: 122909 + timestamp: 1720974522888 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2025.1.31-hbcca054_0.conda + sha256: bf832198976d559ab44d6cdb315642655547e26d826e34da67cbee6624cda189 + md5: 19f3a56f68d2fd06c516076bff482c52 + arch: x86_64 + platform: linux + license: ISC + size: 158144 + timestamp: 1738298224464 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2025.1.31-hcefe29a_0.conda + sha256: 66c6408ee461593cfdb2d78d82e6ed74d04a04ccb51df3ef8a5f35148c9c6eec + md5: 462cb166cd2e26a396f856510a3aff67 + arch: aarch64 + platform: linux + license: ISC + size: 158290 + timestamp: 1738299057652 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2025.1.31-hf0a4a13_0.conda + sha256: 7e12816618173fe70f5c638b72adf4bfd4ddabf27794369bb17871c5bb75b9f9 + md5: 3569d6a9141adc64d2fe4797f3289e06 + arch: arm64 + platform: osx + license: ISC + size: 158425 + timestamp: 1738298167688 +- conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda + sha256: c920d23cd1fcf565031c679adb62d848af60d6fbb0edc2d50ba475cea4f0d8ab + md5: f22f4d4970e09d68a10b922cbb0408d3 + depends: + - __unix + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 84705 + timestamp: 1734858922844 +- conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + sha256: ab29d57dc70786c1269633ba3dff20288b81664d3ff8d21af995742e2bb03287 + md5: 962b9857ee8e7018c22f2776ffa0b2d7 + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 27011 + timestamp: 1733218222191 +- conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + sha256: 598951ebdb23e25e4cec4bbff0ae369cec65ead80b50bc08b441d8e54de5cf03 + md5: f4b39bf00c69f56ac01e020ebfac066c + depends: + - python >=3.9 + - zipp >=0.5 + license: Apache-2.0 + license_family: APACHE + size: 29141 + timestamp: 1737420302391 +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + sha256: 19d8bd5bb2fde910ec59e081eeb59529491995ce0d653a5209366611023a0b3a + md5: 4ebae00eae9705b0c3d6d1018a81d047 + depends: + - importlib-metadata >=4.8.3 + - jupyter_core >=4.12,!=5.0.* + - python >=3.9 + - python-dateutil >=2.8.2 + - pyzmq >=23.0 + - tornado >=6.2 + - traitlets >=5.3 + license: BSD-3-Clause + license_family: BSD + size: 106342 + timestamp: 1733441040958 +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + sha256: 732b1e8536bc22a5a174baa79842d79db2f4956d90293dd82dc1b3f6099bcccd + md5: 0a2980dada0dd7fd0998f0342308b1b1 + depends: + - __unix + - platformdirs >=2.5 + - python >=3.8 + - traitlets >=5.3 + license: BSD-3-Clause + license_family: BSD + size: 57671 + timestamp: 1727163547058 +- conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 + sha256: 150c05a6e538610ca7c43beb3a40d65c90537497a4f6a5f4d15ec0451b6f5ebb + md5: 30186d27e2c9fa62b45fb1476b7200e3 + depends: + - libgcc-ng >=10.3.0 + arch: x86_64 + platform: linux + license: LGPL-2.1-or-later + size: 117831 + timestamp: 1646151697040 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/keyutils-1.6.1-h4e544f5_0.tar.bz2 + sha256: 6d4233d97a9b38acbb26e1268bcf8c10a8e79c2aed7e5a385ec3769967e3e65b + md5: 1f24853e59c68892452ef94ddd8afd4b + depends: + - libgcc-ng >=10.3.0 + arch: aarch64 + platform: linux + license: LGPL-2.1-or-later + size: 112327 + timestamp: 1646166857935 +- conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda + sha256: 99df692f7a8a5c27cd14b5fb1374ee55e756631b9c3d659ed3ee60830249b238 + md5: 3f43953b7d3fb3aaa1d0d0723d91e368 + depends: + - keyutils >=1.6.1,<2.0a0 + - libedit >=3.1.20191231,<3.2.0a0 + - libedit >=3.1.20191231,<4.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - openssl >=3.3.1,<4.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 1370023 + timestamp: 1719463201255 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/krb5-1.21.3-h50a48e9_0.conda + sha256: 0ec272afcf7ea7fbf007e07a3b4678384b7da4047348107b2ae02630a570a815 + md5: 29c10432a2ca1472b53f299ffb2ffa37 + depends: + - keyutils >=1.6.1,<2.0a0 + - libedit >=3.1.20191231,<3.2.0a0 + - libedit >=3.1.20191231,<4.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - openssl >=3.3.1,<4.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 1474620 + timestamp: 1719463205834 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda + sha256: 4442f957c3c77d69d9da3521268cad5d54c9033f1a73f99cde0a3658937b159b + md5: c6dc8a0fdec13a0565936655c33069a1 + depends: + - __osx >=11.0 + - libcxx >=16 + - libedit >=3.1.20191231,<3.2.0a0 + - libedit >=3.1.20191231,<4.0a0 + - openssl >=3.3.1,<4.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 1155530 + timestamp: 1719463474401 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_4.conda + sha256: db73f38155d901a610b2320525b9dd3b31e4949215c870685fd92ea61b5ce472 + md5: 01f8d123c96816249efd255a31ad7712 + depends: + - __glibc >=2.17,<3.0.a0 + constrains: + - binutils_impl_linux-64 2.43 + arch: x86_64 + platform: linux + license: GPL-3.0-only + license_family: GPL + size: 671240 + timestamp: 1740155456116 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_4.conda + sha256: 016832a70b0aa97e1c4e47e23c00b0c34def679de25146736df353199f684f0d + md5: 80c9ad5e05e91bb6c0967af3880c9742 + constrains: + - binutils_impl_linux-aarch64 2.43 + arch: aarch64 + platform: linux + license: GPL-3.0-only + license_family: GPL + size: 699058 + timestamp: 1740155620594 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda + sha256: 143a586aa67d50622ef703de57b9d43f44945836d6568e0e7aa174bd8c45e0d4 + md5: 488f260ccda0afaf08acb286db439c2f + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + constrains: + - libabseil-static =20240722.0=cxx17* + - abseil-cpp =20240722.0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 1311599 + timestamp: 1736008414161 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h18dbdb1_4.conda + sha256: bb6c5fb3b8de5f90735c5252b57efb3c268ee222c755569dac18065f05147670 + md5: 633b9fe454ffea2aaf29e191d946a83b + depends: + - libgcc >=13 + - libstdcxx >=13 + constrains: + - abseil-cpp =20240722.0 + - libabseil-static =20240722.0=cxx17* + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 1334844 + timestamp: 1736008472455 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_h07bc746_4.conda + sha256: 05fa5e5e908962b9c5aba95f962e2ca81d9599c4715aebe5e4ddb72b309d1770 + md5: c2d95bd7aa8d564a9bd7eca5e571a5b3 + depends: + - __osx >=11.0 + - libcxx >=18 + constrains: + - libabseil-static =20240722.0=cxx17* + - abseil-cpp =20240722.0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 1178260 + timestamp: 1736008642885 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-31_h59b9bed_openblas.conda + build_number: 31 + sha256: 9839fc4ac0cbb0aa3b9eea520adfb57311838959222654804e58f6f2d1771db5 + md5: 728dbebd0f7a20337218beacffd37916 + depends: + - libopenblas >=0.3.29,<0.3.30.0a0 + - libopenblas >=0.3.29,<1.0a0 + constrains: + - liblapacke =3.9.0=31*_openblas + - liblapack =3.9.0=31*_openblas + - blas =2.131=openblas + - mkl <2025 + - libcblas =3.9.0=31*_openblas + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 16859 + timestamp: 1740087969120 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-31_h1a9f1db_openblas.conda + build_number: 31 + sha256: 67c9c81dd0444ecc712124034d9f74186ca82fd770b3df46b1a68564461c6a1a + md5: 48bd5bf15ccf3e409840be9caafc0ad5 + depends: + - libopenblas >=0.3.29,<0.3.30.0a0 + - libopenblas >=0.3.29,<1.0a0 + constrains: + - liblapack =3.9.0=31*_openblas + - blas =2.131=openblas + - libcblas =3.9.0=31*_openblas + - mkl <2025 + - liblapacke =3.9.0=31*_openblas + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 16915 + timestamp: 1740087911042 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-31_h10e41b3_openblas.conda + build_number: 31 + sha256: 369586e7688b59b4f92c709b99d847d66d4d095425db327dd32ee5e6ab74697f + md5: 39b053da5e7035c6592102280aa7612a + depends: + - libopenblas >=0.3.29,<0.3.30.0a0 + - libopenblas >=0.3.29,<1.0a0 + constrains: + - liblapacke =3.9.0=31*_openblas + - libcblas =3.9.0=31*_openblas + - blas =2.131=openblas + - mkl <2025 + - liblapack =3.9.0=31*_openblas + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 17123 + timestamp: 1740088119350 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-31_he106b2a_openblas.conda + build_number: 31 + sha256: ede8545011f5b208b151fe3e883eb4e31d495ab925ab7b9ce394edca846e0c0d + md5: abb32c727da370c481a1c206f5159ce9 + depends: + - libblas 3.9.0 31_h59b9bed_openblas + constrains: + - liblapacke =3.9.0=31*_openblas + - liblapack =3.9.0=31*_openblas + - blas =2.131=openblas + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 16796 + timestamp: 1740087984429 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-31_hab92f65_openblas.conda + build_number: 31 + sha256: f0457a1d2982f0a28bfbadaa02621677c324e88f7c8198c24fb3e3214c468dba + md5: 6b81dbae56a519f1ec2f25e0ee2f4334 + depends: + - libblas 3.9.0 31_h1a9f1db_openblas + constrains: + - liblapack =3.9.0=31*_openblas + - blas =2.131=openblas + - liblapacke =3.9.0=31*_openblas + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 16824 + timestamp: 1740087917500 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-31_hb3479ef_openblas.conda + build_number: 31 + sha256: f237486cc9118d09d0f3ff8820280de34365f98ee7b7dc5ab923b04c7cbf25a5 + md5: 7353c2bf0e90834cb70545671996d871 + depends: + - libblas 3.9.0 31_h10e41b3_openblas + constrains: + - liblapacke =3.9.0=31*_openblas + - blas =2.131=openblas + - liblapack =3.9.0=31*_openblas + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 17032 + timestamp: 1740088127097 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda + sha256: 776092346da87a2a23502e14d91eb0c32699c4a1522b7331537bd1c3751dcff5 + md5: 5b3e1610ff8bd5443476b91d618f5b77 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + size: 523505 + timestamp: 1736877862502 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda + sha256: d789471216e7aba3c184cd054ed61ce3f6dac6f87a50ec69291b9297f8c18724 + md5: c277e0a4d549b03ac1e9d6cbbe3d017b + depends: + - ncurses + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - ncurses >=6.5,<7.0a0 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + size: 134676 + timestamp: 1738479519902 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20250104-pl5321h976ea20_0.conda + sha256: c0b27546aa3a23d47919226b3a1635fccdb4f24b94e72e206a751b33f46fd8d6 + md5: fb640d776fc92b682a14e001980825b1 + depends: + - ncurses + - libgcc >=13 + - ncurses >=6.5,<7.0a0 + arch: aarch64 + platform: linux + license: BSD-2-Clause + license_family: BSD + size: 148125 + timestamp: 1738479808948 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda + sha256: 66aa216a403de0bb0c1340a88d1a06adaff66bae2cfd196731aa24db9859d631 + md5: 44083d2d2c2025afca315c7a172eab2b + depends: + - ncurses + - __osx >=11.0 + - ncurses >=6.5,<7.0a0 + arch: arm64 + platform: osx + license: BSD-2-Clause + license_family: BSD + size: 107691 + timestamp: 1738479560845 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda + sha256: 56541b98447b58e52d824bd59d6382d609e11de1f8adf20b23143e353d2b8d26 + md5: db833e03127376d461e1e13e76f09b6c + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + constrains: + - expat 2.6.4.* + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 73304 + timestamp: 1730967041968 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.6.4-h5ad3122_0.conda + sha256: f42e758009ba9db90d1fe7992bc3e60d0c52f71fb20923375d2c44ae69a5a2b3 + md5: f1b3fab36861b3ce945a13f0dfdfc688 + depends: + - libgcc >=13 + constrains: + - expat 2.6.4.* + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 72345 + timestamp: 1730967203789 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.4-h286801f_0.conda + sha256: e42ab5ace927ee7c84e3f0f7d813671e1cf3529f5f06ee5899606630498c2745 + md5: 38d2656dd914feb0cab8c629370768bf + depends: + - __osx >=11.0 + constrains: + - expat 2.6.4.* + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 64693 + timestamp: 1730967175868 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_0.conda + sha256: 67a6c95e33ebc763c1adc3455b9a9ecde901850eb2fceb8e646cc05ef3a663da + md5: e3eb7806380bc8bcecba6d749ad5f026 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 53415 + timestamp: 1739260413716 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.4.6-he21f813_0.conda + sha256: 41568066beefe7b319ff27d85952242e5b77fb753d705b8716041959e17c35c2 + md5: 966084fccf3ad62a3160666cda869f28 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 51513 + timestamp: 1739260449772 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 + sha256: 41b3d13efb775e340e4dba549ab5c029611ea6918703096b2eaa9c015c0750ca + md5: 086914b672be056eb70fd4285b6783b6 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 39020 + timestamp: 1636488587153 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h767d61c_2.conda + sha256: 3a572d031cb86deb541d15c1875aaa097baefc0c580b54dc61f5edab99215792 + md5: ef504d1acbd74b7cc6849ef8af47dd03 + depends: + - __glibc >=2.17,<3.0.a0 + - _openmp_mutex >=4.5 + constrains: + - libgomp 14.2.0 h767d61c_2 + - libgcc-ng ==14.2.0=*_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 847885 + timestamp: 1740240653082 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-14.2.0-he277a41_2.conda + sha256: a57f7f9ba2a12f56eafdcd25b6d75f7be10b8fc1a802a58b76a77ca8c66f4503 + md5: 6b4268a60b10f29257b51b9b67ff8d76 + depends: + - _openmp_mutex >=4.5 + constrains: + - libgcc-ng ==14.2.0=*_2 + - libgomp 14.2.0 he277a41_2 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 535507 + timestamp: 1740241069780 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_2.conda + sha256: fb7558c328b38b2f9d2e412c48da7890e7721ba018d733ebdfea57280df01904 + md5: a2222a6ada71fb478682efe483ce0f92 + depends: + - libgcc 14.2.0 h767d61c_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 53758 + timestamp: 1740240660904 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-14.2.0-he9431aa_2.conda + sha256: 9647f75cddc18b07eebe6e1f21500eed50a6af2c43c84e831b4c7a597e10d226 + md5: 692c2bb75f32cfafb6799cf6d1c5d0e0 + depends: + - libgcc 14.2.0 he277a41_2 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 53622 + timestamp: 1740241074834 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_2.conda + sha256: e05263e8960da03c341650f2a3ffa4ccae4e111cb198e8933a2908125459e5a6 + md5: fb54c4ea68b460c278d26eea89cfbcc3 + depends: + - libgfortran5 14.2.0 hf1ad2bd_2 + constrains: + - libgfortran-ng ==14.2.0=*_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 53733 + timestamp: 1740240690977 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_2.conda + sha256: 996d3c0505301901a7ab23b5e7daad21635d1c065240bb0f4faf7e4f75d7f49d + md5: d8b9d9dc0c8cd97d375b48e55947ba70 + depends: + - libgfortran5 14.2.0 hb6113d0_2 + constrains: + - libgfortran-ng ==14.2.0=*_2 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 53611 + timestamp: 1740241100147 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda + sha256: 44e541b4821c96b28b27fef5630883a60ce4fee91fd9c79f25a199f8f73f337b + md5: 4a55d9e169114b2b90d3ec4604cd7bbf + depends: + - libgfortran5 13.2.0 hf226fd6_3 + arch: arm64 + platform: osx + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 110233 + timestamp: 1707330749033 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hf1ad2bd_2.conda + sha256: c17b7cf3073a1f4e1f34d50872934fa326346e104d3c445abc1e62481ad6085c + md5: 556a4fdfac7287d349b8f09aba899693 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14.2.0 + constrains: + - libgfortran 14.2.0 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 1461978 + timestamp: 1740240671964 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_2.conda + sha256: 7b9e1d3666a00e5a52e5d43c003bd1c73ab472804be513c070aaedca9c4c2a9a + md5: cd754566661513808ef2408c4ab99a2f + depends: + - libgcc >=14.2.0 + constrains: + - libgfortran 14.2.0 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 1100765 + timestamp: 1740241083241 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda + sha256: bafc679eedb468a86aa4636061c55966186399ee0a04b605920d208d97ac579a + md5: 66ac81d54e95c534ae488726c1f698ea + depends: + - llvm-openmp >=8.0.0 + constrains: + - libgfortran 5.0.0 13_2_0_*_3 + arch: arm64 + platform: osx + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 997381 + timestamp: 1707330687590 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h767d61c_2.conda + sha256: 1a3130e0b9267e781b89399580f3163632d59fe5b0142900d63052ab1a53490e + md5: 06d02030237f4d5b3d9a7e7d348fe3c6 + depends: + - __glibc >=2.17,<3.0.a0 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 459862 + timestamp: 1740240588123 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_2.conda + sha256: 4e303711fb7413bf98995beac58e731073099d7a669a3b81e49330ca8da05174 + md5: b11c09d9463daf4cae492d29806b1889 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 462783 + timestamp: 1740241005079 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-31_h7ac8fdf_openblas.conda + build_number: 31 + sha256: f583661921456e798aba10972a8abbd9d33571c655c1f66eff450edc9cbefcf3 + md5: 452b98eafe050ecff932f0ec832dd03f + depends: + - libblas 3.9.0 31_h59b9bed_openblas + constrains: + - libcblas =3.9.0=31*_openblas + - liblapacke =3.9.0=31*_openblas + - blas =2.131=openblas + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 16790 + timestamp: 1740087997375 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-31_h411afd4_openblas.conda + build_number: 31 + sha256: 27613828ff6fb258b2e58802617df549f00089660ea8ab6c55c68f042c570162 + md5: 41dbff5eb805a75c120a7b7a1c744dc2 + depends: + - libblas 3.9.0 31_h1a9f1db_openblas + constrains: + - blas =2.131=openblas + - libcblas =3.9.0=31*_openblas + - liblapacke =3.9.0=31*_openblas + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 16845 + timestamp: 1740087923843 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-31_hc9a63f6_openblas.conda + build_number: 31 + sha256: fe55b9aaf82c6c0192c3d1fcc9b8e884f97492dda9a8de5dae29334b3135fab5 + md5: ff57a55a2cbce171ef5707fb463caf19 + depends: + - libblas 3.9.0 31_h10e41b3_openblas + constrains: + - liblapacke =3.9.0=31*_openblas + - libcblas =3.9.0=31*_openblas + - blas =2.131=openblas + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 17033 + timestamp: 1740088134988 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda + sha256: cad52e10319ca4585bc37f0bc7cce99ec7c15dc9168e42ccb96b741b0a27db3f + md5: 42d5b6a0f30d3c10cd88cb8584fda1cb + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: 0BSD + size: 111357 + timestamp: 1738525339684 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.4-h86ecc28_0.conda + sha256: 96413664f0fade54a4931940d18749cfc8e6308349dbb0cb83adb2394ca1f730 + md5: b88244e0a115cc34f7fbca9b11248e76 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: 0BSD + size: 124197 + timestamp: 1738528201520 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.4-h39f12f2_0.conda + sha256: 560c59d3834cc652a84fb45531bd335ad06e271b34ebc216e380a89798fe8e2c + md5: e3fd1f8320a100f2b210e690a57cd615 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: 0BSD + size: 98945 + timestamp: 1738525462560 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda + sha256: 26d77a3bb4dceeedc2a41bd688564fe71bf2d149fdcf117049970bc02ff1add6 + md5: 30fd6e37fe21f86f4bd26d6ee73eeec7 + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: LGPL-2.1-only + license_family: GPL + size: 33408 + timestamp: 1697359010159 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda + sha256: fd18c2b75d7411096428d36a70b36b1a17e31f7b8956b6905d145792d49e97f8 + md5: c14f32510f694e3185704d89967ec422 + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: LGPL-2.1-only + license_family: GPL + size: 34501 + timestamp: 1697358973269 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.29-pthreads_h94d23a6_0.conda + sha256: cc5389ea254f111ef17a53df75e8e5209ef2ea6117e3f8aced88b5a8e51f11c4 + md5: 0a4d0252248ef9a0f88f2ba8b8a08e12 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libgfortran + - libgfortran5 >=14.2.0 + constrains: + - openblas >=0.3.29,<0.3.30.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 5919288 + timestamp: 1739825731827 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.29-pthreads_h9d3fd7e_0.conda + sha256: 3a2ccf4c9098cd18a636e9b7fff947fdeb4962bcfb75c9d6fd80b8c50caf6a3c + md5: a99e2bfcb1ad6362544c71281eb617e9 + depends: + - libgcc >=14 + - libgfortran + - libgfortran5 >=14.2.0 + constrains: + - openblas >=0.3.29,<0.3.30.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 4801657 + timestamp: 1739825308974 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.29-openmp_hf332438_0.conda + sha256: 8989d9e01ec8c9b2d48dbb5efbe70b356fcd15990fb53b64fcb84798982c0343 + md5: 0cd1148c68f09027ee0b0f0179f77c30 + depends: + - __osx >=11.0 + - libgfortran 5.* + - libgfortran5 >=13.2.0 + - llvm-openmp >=18.1.8 + constrains: + - openblas >=0.3.29,<0.3.30.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 4168442 + timestamp: 1739825514918 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda + sha256: 51125ebb8b7152e4a4e69fd2398489c4ec8473195c27cde3cbdf1cb6d18c5493 + md5: d8703f1ffe5a06356f06467f1d0b9464 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 2960815 + timestamp: 1735577210663 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.3-h44a3b7b_1.conda + sha256: ecb69f2b1668e784b41ba667493be846662d5ef702bef64fb2e013bb1364cdc4 + md5: 68f807f7cc13951652bbe048253fd405 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 2788074 + timestamp: 1735576315676 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.3-h3bd63a1_1.conda + sha256: f58a16b13ad53346903c833e266f83c3d770a43a432659b98710aed85ca885e7 + md5: bdbfea4cf45ae36652c6bbcc2e7ebe91 + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=18 + - libzlib >=1.3.1,<2.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 2271580 + timestamp: 1735576361997 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsentencepiece-0.2.0-h8e10757_10.conda + sha256: dc399e0f04a09f8c1807c3b36e578eb81f81891c0ddf21de9c1fb9f048ce4031 + md5: 4f43dbcfacd3cc9a183dd3a48b94d3c0 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 823649 + timestamp: 1735627841126 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsentencepiece-0.2.0-h6164ad9_10.conda + sha256: 57074803772f65d4075b7d6dc17ff5aa40ec3a30109fa4225ca16911504c4a8b + md5: a7a192edc9cfba26a27df3283203e6a1 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 800865 + timestamp: 1735627982895 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsentencepiece-0.2.0-he13a0af_10.conda + sha256: 3347a8840d085ce1661928e736229f068d56c84312fbed90886e059023d85611 + md5: 1f67e5e30edd56e0a0bf6df6bb711a9d + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 754657 + timestamp: 1735628030895 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda + sha256: 0105bd108f19ea8e6a78d2d994a6d4a8db16d19a41212070d2d1d48a63c34161 + md5: a587892d3c13b6621a6091be690dbca2 + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: ISC + size: 205978 + timestamp: 1716828628198 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.20-h68df207_0.conda + sha256: 448df5ea3c5cf1af785aad46858d7a5be0522f4234a4dc9bb764f4d11ff3b981 + md5: 2e4a8f23bebdcb85ca8e5a0fbe75666a + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: ISC + size: 177394 + timestamp: 1716828514515 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda + sha256: fade8223e1e1004367d7101dd17261003b60aa576df6d7802191f8972f7470b1 + md5: a7ce36e284c5faaf93c220dfc39e3abd + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: ISC + size: 164972 + timestamp: 1716828607917 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.49.1-hee588c1_1.conda + sha256: 7a09eef804ef7cf4d88215c2297eabb72af8ad0bd5b012060111c289f14bbe7d + md5: 73cea06049cc4174578b432320a003b8 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux + license: Unlicense + size: 915956 + timestamp: 1739953155793 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.49.1-h5eb1b54_1.conda + sha256: 920fb3b7d3b873babf79a3e392cc82d43b8bd02a573ccaff34219efb5cf7b51e + md5: 150d64241fa27d9d35a7f421ca968a6c + depends: + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + arch: aarch64 + platform: linux + license: Unlicense + size: 915118 + timestamp: 1739953101699 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.1-h3f77e49_1.conda + sha256: 266639fb10ca92287961574b0b4d6031fa40dd9d723d64a0fcb08513a24dab03 + md5: c83357a21092bd952933c36c5cb4f4d6 + depends: + - __osx >=11.0 + - libzlib >=1.3.1,<2.0a0 + arch: arm64 + platform: osx + license: Unlicense + size: 898767 + timestamp: 1739953312379 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-h8f9b012_2.conda + sha256: 8f5bd92e4a24e1d35ba015c5252e8f818898478cb3bc50bd8b12ab54707dc4da + md5: a78c856b6dc6bf4ea8daeb9beaaa3fb0 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc 14.2.0 h767d61c_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 3884556 + timestamp: 1740240685253 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_2.conda + sha256: c30a74bc996013907f6d9f344da007c26d98ef9a0831151cd50aece3125c45d5 + md5: eadee2cda99697e29411c1013c187b92 + depends: + - libgcc 14.2.0 he277a41_2 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 3810779 + timestamp: 1740241094774 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_2.conda + sha256: e86f38b007cf97cc2c67cd519f2de12a313c4ee3f5ef11652ad08932a5e34189 + md5: c75da67f045c2627f59e6fcb5f4e3a9b + depends: + - libstdcxx 14.2.0 h8f9b012_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 53830 + timestamp: 1740240722530 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_2.conda + sha256: 0107886ead6f255956d8e520f8dff260f9ab3d0d51512f18c52710c406e4b2df + md5: c934c1fddad582fcc385b608eb06a70c + depends: + - libstdcxx 14.2.0 h3f4de04_2 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 53715 + timestamp: 1740241126343 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda + sha256: 787eb542f055a2b3de553614b25f09eefb0a0931b0c87dbcce6efdfd92f04f18 + md5: 40b61aab5c7ba9ff276c41cfffe6b80b + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 33601 + timestamp: 1680112270483 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda + sha256: 616277b0c5f7616c2cdf36f6c316ea3f9aa5bb35f2d4476a349ab58b9b91675f + md5: 000e30b09db0b7c775b21695dff30969 + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 35720 + timestamp: 1680113474501 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda + sha256: 6ae68e0b86423ef188196fff6207ed0c8195dd84273cb5623b85aa08033a410c + md5: 5aa797f8787fe7a17d1b0821485b5adc + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: LGPL-2.1-or-later + size: 100393 + timestamp: 1702724383534 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda + sha256: 6b46c397644091b8a26a3048636d10b989b1bf266d4be5e9474bf763f828f41f + md5: b4df5d7d4b63579d081fd3a4cf99740e + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: LGPL-2.1-or-later + size: 114269 + timestamp: 1702724369203 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda + sha256: d4bfe88d7cb447768e31650f06257995601f89076080e76df55e3112d4e47dc4 + md5: edb0dca6bc32e4f4789199455a1dbeb8 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + constrains: + - zlib 1.3.1 *_2 + arch: x86_64 + platform: linux + license: Zlib + license_family: Other + size: 60963 + timestamp: 1727963148474 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda + sha256: 5a2c1eeef69342e88a98d1d95bff1603727ab1ff4ee0e421522acd8813439b84 + md5: 08aad7cbe9f5a6b460d0976076b6ae64 + depends: + - libgcc >=13 + constrains: + - zlib 1.3.1 *_2 + arch: aarch64 + platform: linux + license: Zlib + license_family: Other + size: 66657 + timestamp: 1727963199518 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda + sha256: ce34669eadaba351cd54910743e6a2261b67009624dbc7daeeafdef93616711b + md5: 369964e85dc26bfe78f41399b366c435 + depends: + - __osx >=11.0 + constrains: + - zlib 1.3.1 *_2 + arch: arm64 + platform: osx + license: Zlib + license_family: Other + size: 46438 + timestamp: 1727963202283 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda + sha256: b92a669f2059874ebdcb69041b6c243d68ffc3fb356ac1339cec44aeb27245d7 + md5: c4d54bfd3817313ce758aa76283b118d + depends: + - __osx >=11.0 + constrains: + - openmp 19.1.7|19.1.7.* + arch: arm64 + platform: osx + license: Apache-2.0 WITH LLVM-exception + license_family: APACHE + size: 280830 + timestamp: 1736986295869 +- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022718-release.conda + noarch: python + sha256: f3dcb14fed5470c0fc521542cbd2f1c56ca7e46d560f46176b8f926198cb3cbd + md5: 01fe5e0cf46c84a6345e323ad1316764 + depends: + - max-core ==25.2.0.dev2025022718 release + - max-python ==25.2.0.dev2025022718 release + - mojo-jupyter ==25.2.0.dev2025022718 release + - mblack ==25.2.0.dev2025022718 release + license: LicenseRef-Modular-Proprietary + size: 9905 + timestamp: 1740680254354 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022718-release.conda + sha256: 847d5767109a305d7bcad4ac29248a74a384034692934a0c54b00a590c27094a + md5: fc5a9ae36c7805979bd58ca55a25066f + depends: + - mblack ==25.2.0.dev2025022718 release + license: LicenseRef-Modular-Proprietary + size: 249811868 + timestamp: 1740680254354 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022718-release.conda + sha256: 250c35ecccd302e6c7de836ac200a5ece92e74508c2590c585d8803d488fd650 + md5: d88728b468c85902512a0f9b99251035 + depends: + - mblack ==25.2.0.dev2025022718 release + license: LicenseRef-Modular-Proprietary + size: 252108573 + timestamp: 1740680207793 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022718-release.conda + sha256: fb28d9e61aa507ea84b470082d3dc96844a24fe672d4e4c57e832655c5d0a202 + md5: dd8734453f7276a258f3351cc5c506c3 + depends: + - mblack ==25.2.0.dev2025022718 release + license: LicenseRef-Modular-Proprietary + size: 217273450 + timestamp: 1740681819160 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022718-release.conda + noarch: python + sha256: 831b4d62f66f0083321121c6ba25dedab3ee41d5e9f19d9752969592214af398 + md5: f828ace91aa057e4774e84ad459adccf + depends: + - max-core ==25.2.0.dev2025022718 release + - click >=8.0.0 + - numpy >=1.18,<2.0 + - sentencepiece >=0.2.0 + - tqdm >=4.67.1 + constrains: + - aiohttp >=3.11.12 + - fastapi >=0.114.2 + - gguf >=0.14.0 + - hf-transfer >=0.1.9 + - httpx >=0.28.1 + - huggingface_hub >=0.24.0 + - nvitop >=1.4.1 + - opentelemetry-api >=1.29.0 + - opentelemetry-exporter-otlp-proto-http >=1.27.0 + - opentelemetry-exporter-prometheus <1.0.0 + - opentelemetry-sdk >=1.29.0,<2.0 + - pillow >=10.3.0 + - prometheus_client >=0.21.0 + - prometheus-async >=22.2.0 + - psutil >=6.1.1 + - pydantic + - pydantic-settings >=2.7.1 + - pyinstrument >=5.0.1 + - python-json-logger >=2.0.7 + - requests >=2.32.3 + - rich >=13.9.4 + - safetensors >=0.5.2 + - sentinel >=0.3.0 + - sse-starlette >=2.1.2 + - tokenizers >=0.19.0 + - pytorch >=2.2.2,<=2.5.1 + - transformers >=4.40.1 + - uvicorn >=0.34.0 + - uvloop >=0.21.0 + - xgrammar ==0.1.11 + license: LicenseRef-Modular-Proprietary + size: 123584411 + timestamp: 1740680254354 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022718-release.conda + noarch: python + sha256: b9e5755b7bf6314a37a90ef0250c93f5e7c693954d7a6389a97ab9ef06e23cc3 + md5: bfd2e752d0fc9516b78a17169ce9cc78 + depends: + - max-core ==25.2.0.dev2025022718 release + - click >=8.0.0 + - numpy >=1.18,<2.0 + - sentencepiece >=0.2.0 + - tqdm >=4.67.1 + constrains: + - aiohttp >=3.11.12 + - fastapi >=0.114.2 + - gguf >=0.14.0 + - hf-transfer >=0.1.9 + - httpx >=0.28.1 + - huggingface_hub >=0.24.0 + - nvitop >=1.4.1 + - opentelemetry-api >=1.29.0 + - opentelemetry-exporter-otlp-proto-http >=1.27.0 + - opentelemetry-exporter-prometheus <1.0.0 + - opentelemetry-sdk >=1.29.0,<2.0 + - pillow >=10.3.0 + - prometheus_client >=0.21.0 + - prometheus-async >=22.2.0 + - psutil >=6.1.1 + - pydantic + - pydantic-settings >=2.7.1 + - pyinstrument >=5.0.1 + - python-json-logger >=2.0.7 + - requests >=2.32.3 + - rich >=13.9.4 + - safetensors >=0.5.2 + - sentinel >=0.3.0 + - sse-starlette >=2.1.2 + - tokenizers >=0.19.0 + - pytorch >=2.2.2,<=2.5.1 + - transformers >=4.40.1 + - uvicorn >=0.34.0 + - uvloop >=0.21.0 + - xgrammar ==0.1.11 + license: LicenseRef-Modular-Proprietary + size: 126004454 + timestamp: 1740680207793 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022718-release.conda + noarch: python + sha256: 7da9f4655082bb64c2b0cc996ffefa0ce5c49744854ed77a9b0d000e27cf5a55 + md5: b16d498a148aa61dca2a6bfec5cb8e46 + depends: + - max-core ==25.2.0.dev2025022718 release + - click >=8.0.0 + - numpy >=1.18,<2.0 + - sentencepiece >=0.2.0 + - tqdm >=4.67.1 + constrains: + - aiohttp >=3.11.12 + - fastapi >=0.114.2 + - gguf >=0.14.0 + - hf-transfer >=0.1.9 + - httpx >=0.28.1 + - huggingface_hub >=0.24.0 + - nvitop >=1.4.1 + - opentelemetry-api >=1.29.0 + - opentelemetry-exporter-otlp-proto-http >=1.27.0 + - opentelemetry-exporter-prometheus <1.0.0 + - opentelemetry-sdk >=1.29.0,<2.0 + - pillow >=10.3.0 + - prometheus_client >=0.21.0 + - prometheus-async >=22.2.0 + - psutil >=6.1.1 + - pydantic + - pydantic-settings >=2.7.1 + - pyinstrument >=5.0.1 + - python-json-logger >=2.0.7 + - requests >=2.32.3 + - rich >=13.9.4 + - safetensors >=0.5.2 + - sentinel >=0.3.0 + - sse-starlette >=2.1.2 + - tokenizers >=0.19.0 + - pytorch >=2.2.2,<=2.5.1 + - transformers >=4.40.1 + - uvicorn >=0.34.0 + - uvloop >=0.21.0 + - xgrammar ==0.1.11 + license: LicenseRef-Modular-Proprietary + size: 112658409 + timestamp: 1740681819160 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022718-release.conda + noarch: python + sha256: ff042a8abfed0e2e36b207e3d4f59a2b4577dea7f099b08d1aaef128ab796f09 + md5: 719ca7123d53415adcdd7f0cb8396c51 + depends: + - python >=3.9,<3.13 + - click >=8.0.0 + - mypy_extensions >=0.4.3 + - packaging >=22.0 + - pathspec >=0.9.0 + - platformdirs >=2 + - typing_extensions >=v4.12.2 + - python + license: MIT + size: 130852 + timestamp: 1740680254353 +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022718-release.conda + noarch: python + sha256: 19c33e23b27e240fee0b2a1d56921802ac88558dc2da417837cd590175561e16 + md5: 6b8d00b15817db11e026f824f7f0ba14 + depends: + - max-core ==25.2.0.dev2025022718 release + - python >=3.9,<3.13 + - jupyter_client >=8.6.2,<8.7 + - python + license: LicenseRef-Modular-Proprietary + size: 22981 + timestamp: 1740680254354 +- conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda + sha256: 1895f47b7d68581a6facde5cb13ab8c2764c2e53a76bd746f8f98910dc4e08fe + md5: 29097e7ea634a45cc5386b95cac6568f + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 10854 + timestamp: 1733230986902 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda + sha256: 3fde293232fa3fca98635e1167de6b7c7fda83caf24b9d6c91ec9eefb4f4d586 + md5: 47e340acb35de30501a76c7c799c41d7 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: X11 AND BSD-3-Clause + size: 891641 + timestamp: 1738195959188 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-ha32ae93_3.conda + sha256: 91cfb655a68b0353b2833521dc919188db3d8a7f4c64bea2c6a7557b24747468 + md5: 182afabe009dc78d8b73100255ee6868 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: X11 AND BSD-3-Clause + size: 926034 + timestamp: 1738196018799 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda + sha256: 2827ada40e8d9ca69a153a45f7fd14f32b2ead7045d3bbb5d10964898fe65733 + md5: 068d497125e4bf8a66bf707254fff5ae + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: X11 AND BSD-3-Clause + size: 797030 + timestamp: 1738196177597 +- conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda + sha256: fe3459c75cf84dcef6ef14efcc4adb0ade66038ddd27cadb894f34f4797687d8 + md5: d8285bea2a350f63fab23bf460221f3f + depends: + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - libgcc-ng >=12 + - liblapack >=3.9.0,<4.0a0 + - libstdcxx-ng >=12 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - numpy-base <0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 7484186 + timestamp: 1707225809722 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda + sha256: 23767677a7790bee5457d5e75ebd508b9a31c5354216f4310dd1acfca3f7a6f9 + md5: 9cebf5a06cb87d4569cd68df887af476 + depends: + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - libgcc-ng >=12 + - liblapack >=3.9.0,<4.0a0 + - libstdcxx-ng >=12 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - numpy-base <0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 6614296 + timestamp: 1707225994762 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda + sha256: c8841d6d6f61fd70ca80682efbab6bdb8606dc77c68d8acabfbd7c222054f518 + md5: d83fc83d589e2625a3451c9a7e21047c + depends: + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - libcxx >=16 + - liblapack >=3.9.0,<4.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - numpy-base <0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 6073136 + timestamp: 1707226249608 +- conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.1-h7b32b05_0.conda + sha256: cbf62df3c79a5c2d113247ddea5658e9ff3697b6e741c210656e239ecaf1768f + md5: 41adf927e746dc75ecf0ef841c454e48 + depends: + - __glibc >=2.17,<3.0.a0 + - ca-certificates + - libgcc >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 2939306 + timestamp: 1739301879343 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.1-hd08dc88_0.conda + sha256: d80b52b56b2206053968270069616868cbeb289ef855cf1584b1bb0fef61b37c + md5: 09036190605c57eaecf01218e0e9542d + depends: + - ca-certificates + - libgcc >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 3476570 + timestamp: 1739303256089 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.1-h81ee809_0.conda + sha256: 4f8e2389e1b711b44182a075516d02c80fa7a3a7e25a71ff1b5ace9eae57a17a + md5: 75f9f0c7b1740017e2db83a53ab9a28e + depends: + - __osx >=11.0 + - ca-certificates + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 2934522 + timestamp: 1739301896733 +- conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + sha256: da157b19bcd398b9804c5c52fc000fcb8ab0525bdb9c70f95beaa0bb42f85af1 + md5: 3bfed7e6228ebf2f7b9eaa47f1b4e2aa + depends: + - python >=3.8 + license: Apache-2.0 + license_family: APACHE + size: 60164 + timestamp: 1733203368787 +- conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + sha256: 9f64009cdf5b8e529995f18e03665b03f5d07c0b17445b8badef45bde76249ee + md5: 617f15191456cc6a13db418a275435e5 + depends: + - python >=3.9 + license: MPL-2.0 + license_family: MOZILLA + size: 41075 + timestamp: 1733233471940 +- conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + sha256: bb50f6499e8bc1d1a26f17716c97984671121608dc0c3ecd34858112bce59a27 + md5: 577852c7e53901ddccc7e6a9959ddebe + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 20448 + timestamp: 1733232756001 +- conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.9-h9e4cc4f_0_cpython.conda + sha256: 64fed5178f1e9c8ac0f572ac0ce37955f5dee7b2bcac665202bc14f1f7dd618a + md5: 5665f0079432f8848079c811cdb537d5 + depends: + - __glibc >=2.17,<3.0.a0 + - bzip2 >=1.0.8,<2.0a0 + - ld_impl_linux-64 >=2.36.1 + - libexpat >=2.6.4,<3.0a0 + - libffi >=3.4,<4.0a0 + - libgcc >=13 + - liblzma >=5.6.4,<6.0a0 + - libnsl >=2.0.1,<2.1.0a0 + - libsqlite >=3.48.0,<4.0a0 + - libuuid >=2.38.1,<3.0a0 + - libxcrypt >=4.4.36 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.4.1,<4.0a0 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + constrains: + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Python-2.0 + size: 31581682 + timestamp: 1739521496324 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.9-h1683364_0_cpython.conda + sha256: 0366f38918bceda8ff5917d7bbe1cea2bc8b6c74e7245eb0e4b0d3c2d37f76cf + md5: 2e7ad70254455e0508adabff10218512 + depends: + - bzip2 >=1.0.8,<2.0a0 + - ld_impl_linux-aarch64 >=2.36.1 + - libexpat >=2.6.4,<3.0a0 + - libffi >=3.4,<4.0a0 + - libgcc >=13 + - liblzma >=5.6.4,<6.0a0 + - libnsl >=2.0.1,<2.1.0a0 + - libsqlite >=3.48.0,<4.0a0 + - libuuid >=2.38.1,<3.0a0 + - libxcrypt >=4.4.36 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.4.1,<4.0a0 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + constrains: + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Python-2.0 + size: 13804161 + timestamp: 1739519531794 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.9-hc22306f_0_cpython.conda + sha256: cbf81a78d3ca6e663e827523e6ddbc28369cac488da047a28f83875eb52fe5f6 + md5: 1d105a6c46a753e3c0bab54a1ad24063 + depends: + - __osx >=11.0 + - bzip2 >=1.0.8,<2.0a0 + - libexpat >=2.6.4,<3.0a0 + - libffi >=3.4,<4.0a0 + - liblzma >=5.6.4,<6.0a0 + - libsqlite >=3.48.0,<4.0a0 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.4.1,<4.0a0 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + constrains: + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Python-2.0 + size: 12947786 + timestamp: 1739520092196 +- conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + sha256: a50052536f1ef8516ed11a844f9413661829aa083304dc624c5925298d078d79 + md5: 5ba79d7c71f03c678c8ead841f347d6e + depends: + - python >=3.9 + - six >=1.5 + license: Apache-2.0 + license_family: APACHE + size: 222505 + timestamp: 1733215763718 +- conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda + build_number: 5 + sha256: d10e93d759931ffb6372b45d65ff34d95c6000c61a07e298d162a3bc2accebb0 + md5: 0424ae29b104430108f5218a66db7260 + constrains: + - python 3.12.* *_cpython + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 6238 + timestamp: 1723823388266 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.12-5_cp312.conda + build_number: 5 + sha256: 5ccdad9981753cc4a2d126e356673a21c0cd5b34e209cb8d476a3947d4ad9b39 + md5: 62b20f305498284a07dc6c45fd0e5c87 + constrains: + - python 3.12.* *_cpython + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 6329 + timestamp: 1723823366253 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-5_cp312.conda + build_number: 5 + sha256: 49d624e4b809c799d2bf257b22c23cf3fc4460f5570d9a58e7ad86350aeaa1f4 + md5: b76f9b1c862128e56ac7aa8cd2333de9 + constrains: + - python 3.12.* *_cpython + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 6278 + timestamp: 1723823099686 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.1-py312hbf22597_0.conda + sha256: 90ec0da0317d3d76990a40c61e1709ef859dd3d8c63838bad2814f46a63c8a2e + md5: 7cec8d0dac15a2d9fea8e49879aa779d + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libsodium >=1.0.20,<1.0.21.0a0 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - zeromq >=4.3.5,<4.4.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 382698 + timestamp: 1738271121975 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyzmq-26.2.1-py312h2427ae1_0.conda + sha256: 9558f9330093e5c21b7c04e2e212e19b9b88ad9c808315f12c0765b244018a09 + md5: 0520da8de6870d8ff63e818e927d1524 + depends: + - libgcc >=13 + - libsodium >=1.0.20,<1.0.21.0a0 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - zeromq >=4.3.5,<4.4.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 375156 + timestamp: 1738273130727 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.1-py312hf4875e0_0.conda + sha256: 70d398b334668dc597d33e27847ede1b0829a639b9c91ee845355e52c86c2293 + md5: bfbefdb140b546a80827ff7c9d5ac7b8 + depends: + - __osx >=11.0 + - libcxx >=18 + - libsodium >=1.0.20,<1.0.21.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - zeromq >=4.3.5,<4.4.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 364649 + timestamp: 1738271263898 +- conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda + sha256: 2d6d0c026902561ed77cd646b5021aef2d4db22e57a5b0178dfc669231e06d2c + md5: 283b96675859b20a825f8fa30f311446 + depends: + - libgcc >=13 + - ncurses >=6.5,<7.0a0 + arch: x86_64 + platform: linux + license: GPL-3.0-only + license_family: GPL + size: 282480 + timestamp: 1740379431762 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8382b9d_2.conda + sha256: 54bed3a3041befaa9f5acde4a37b1a02f44705b7796689574bcf9d7beaad2959 + md5: c0f08fc2737967edde1a272d4bf41ed9 + depends: + - libgcc >=13 + - ncurses >=6.5,<7.0a0 + arch: aarch64 + platform: linux + license: GPL-3.0-only + license_family: GPL + size: 291806 + timestamp: 1740380591358 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda + sha256: 7db04684d3904f6151eff8673270922d31da1eea7fa73254d01c437f49702e34 + md5: 63ef3f6e6d6d5c589e64f11263dc5676 + depends: + - ncurses >=6.5,<7.0a0 + arch: arm64 + platform: osx + license: GPL-3.0-only + license_family: GPL + size: 252359 + timestamp: 1740379663071 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-0.2.0-hc8f76dd_10.conda + sha256: a1bde55ceb9dc5bd7879283d0f594a6ce65c07fda3de76230c65a4a5df47858a + md5: 480e915dfc6c592615ef6f217e615aa6 + depends: + - libsentencepiece 0.2.0 h8e10757_10 + - python_abi 3.12.* *_cp312 + - sentencepiece-python 0.2.0 py312hb6b8a2b_10 + - sentencepiece-spm 0.2.0 h8e10757_10 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 19470 + timestamp: 1735628377167 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-0.2.0-h6c1b121_10.conda + sha256: 846d885a560fbb4375b645e7caf2f756ef88bbeb441b670375da0090aaa427fb + md5: 33a89eb1dedae8eb7222b0a89856f337 + depends: + - libsentencepiece 0.2.0 h6164ad9_10 + - python_abi 3.12.* *_cp312 + - sentencepiece-python 0.2.0 py312h197ff68_10 + - sentencepiece-spm 0.2.0 h6164ad9_10 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 19686 + timestamp: 1735628718991 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-0.2.0-h22a84ea_10.conda + sha256: 526c934b897131bd274697649c3b1c492a7d66c03368885a954112468b3c1424 + md5: 346abe448f69949a65473b336856860a + depends: + - libsentencepiece 0.2.0 he13a0af_10 + - python_abi 3.12.* *_cp312 + - sentencepiece-python 0.2.0 py312h155166a_10 + - sentencepiece-spm 0.2.0 he13a0af_10 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 19759 + timestamp: 1735628533490 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-python-0.2.0-py312hb6b8a2b_10.conda + sha256: 37df7fb659564587b950b39c936769d9b5095afb7bc223f42d6248a5540c6567 + md5: 7908b7b977e2e123a5f6a29906f2ce44 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 h8e10757_10 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 2411182 + timestamp: 1735628106455 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-python-0.2.0-py312h197ff68_10.conda + sha256: a7c2c19cc397c7632e2630af49ddcff128f145c93ea493421e6f42bfa5e1d30b + md5: 5642e4545a3cf03e446fb3b3e9fd723b + depends: + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 h6164ad9_10 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 2458076 + timestamp: 1735628298246 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-python-0.2.0-py312h155166a_10.conda + sha256: 2d59614aeafbf54cc718805798c11c2d0a3b4b8d947d1bd81c87c484b4883077 + md5: 6e11367ef670296fce01fc9860be944d + depends: + - __osx >=11.0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 he13a0af_10 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 2433303 + timestamp: 1735628083958 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-spm-0.2.0-h8e10757_10.conda + sha256: 6b55e1121545357d63c3aa0766931720e8aafc52d88641ba7631c8cbaa68c52f + md5: e977b7be5ac26c55825e121e00b90493 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 h8e10757_10 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 89076 + timestamp: 1735628334078 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-spm-0.2.0-h6164ad9_10.conda + sha256: b98fc1028a8e8fbf309af383f9c837290a14e076e6c5533dc251694ea33ffc6e + md5: a4b75936c01dca3f089f02752b7ee325 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 h6164ad9_10 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 85983 + timestamp: 1735628693813 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-spm-0.2.0-he13a0af_10.conda + sha256: b760aeee02e2afbfcce3f559e8a227aa4c94139157b1702fdfb41a057dad0e52 + md5: 9b7300f23cd330da8664cd072c162e5f + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 he13a0af_10 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 83826 + timestamp: 1735628514667 +- conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + sha256: 41db0180680cc67c3fa76544ffd48d6a5679d96f4b71d7498a759e94edc9a2db + md5: a451d576819089b0d672f18768be0f65 + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 16385 + timestamp: 1733381032766 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda + sha256: e0569c9caa68bf476bead1bed3d79650bb080b532c64a4af7d8ca286c08dea4e + md5: d453b98d9c83e71da0741bb0ff4d76bc + depends: + - libgcc-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 + arch: x86_64 + platform: linux + license: TCL + license_family: BSD + size: 3318875 + timestamp: 1699202167581 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda + sha256: 7fa27cc512d3a783f38bd16bbbffc008807372499d5b65d089a8e43bde9db267 + md5: f75105e0585851f818e0009dd1dde4dc + depends: + - libgcc-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 + arch: aarch64 + platform: linux + license: TCL + license_family: BSD + size: 3351802 + timestamp: 1695506242997 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda + sha256: 72457ad031b4c048e5891f3f6cb27a53cb479db68a52d965f796910e71a403a8 + md5: b50a57ba89c32b62428b71a875291c9b + depends: + - libzlib >=1.2.13,<2.0.0a0 + arch: arm64 + platform: osx + license: TCL + license_family: BSD + size: 3145523 + timestamp: 1699202432999 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda + sha256: 062a3a3a37fa8615ce57929ba7e982c76f5a5810bcebd435950f6d6c4147c310 + md5: e417822cb989e80a0d2b1b576fdd1657 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 840414 + timestamp: 1732616043734 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py312h52516f5_0.conda + sha256: 4c19a544354172b2273553267e734795a6da3c78a04c2d19f8e9e159ca3178bc + md5: e28996d9d2d44d777b7e6fb12f63715b + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 841662 + timestamp: 1732616934923 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda + sha256: 964a2705a36c50040c967b18b45b9cc8de3c2aff4af546979a574e0b38e58e39 + md5: fb0605888a475d6a380ae1d1a819d976 + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 842549 + timestamp: 1732616081362 +- conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + sha256: 11e2c85468ae9902d24a27137b6b39b4a78099806e551d390e394a8c34b48e40 + md5: 9efbfdc37242619130ea42b1cc4ed861 + depends: + - colorama + - python >=3.9 + license: MPL-2.0 or MIT + size: 89498 + timestamp: 1735661472632 +- conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + sha256: f39a5620c6e8e9e98357507262a7869de2ae8cc07da8b7f84e517c9fd6c2b959 + md5: 019a7385be9af33791c989871317e1ed + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 110051 + timestamp: 1733367480074 +- conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + sha256: 337be7af5af8b2817f115b3b68870208b30c31d3439bec07bfb2d8f4823e3568 + md5: d17f13df8b65464ca316cbc000a3cb64 + depends: + - python >=3.9 + license: PSF-2.0 + license_family: PSF + size: 39637 + timestamp: 1733188758212 +- conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + sha256: c4b1ae8a2931fe9b274c44af29c5475a85b37693999f8c792dad0f8c6734b1de + md5: dbcace4706afdfb7eb891f7b37d07c04 + license: LicenseRef-Public-Domain + size: 122921 + timestamp: 1737119101255 +- conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda + sha256: a4dc72c96848f764bb5a5176aa93dd1e9b9e52804137b99daeebba277b31ea10 + md5: 3947a35e916fcc6b9825449affbf4214 + depends: + - __glibc >=2.17,<3.0.a0 + - krb5 >=1.21.3,<1.22.0a0 + - libgcc >=13 + - libsodium >=1.0.20,<1.0.21.0a0 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: MPL-2.0 + license_family: MOZILLA + size: 335400 + timestamp: 1731585026517 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zeromq-4.3.5-h5efb499_7.conda + sha256: a6003096dc0570a86492040ba32b04ce7662b159600be2252b7a0dfb9414e21c + md5: f2f3282559a4b87b7256ecafb4610107 + depends: + - krb5 >=1.21.3,<1.22.0a0 + - libgcc >=13 + - libsodium >=1.0.20,<1.0.21.0a0 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: MPL-2.0 + license_family: MOZILLA + size: 371419 + timestamp: 1731589490850 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda + sha256: 9e585569fe2e7d3bea71972cd4b9f06b1a7ab8fa7c5139f92a31cbceecf25a8a + md5: f7e6b65943cb73bce0143737fded08f1 + depends: + - __osx >=11.0 + - krb5 >=1.21.3,<1.22.0a0 + - libcxx >=18 + - libsodium >=1.0.20,<1.0.21.0a0 + arch: arm64 + platform: osx + license: MPL-2.0 + license_family: MOZILLA + size: 281565 + timestamp: 1731585108039 +- conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + sha256: 567c04f124525c97a096b65769834b7acb047db24b15a56888a322bf3966c3e1 + md5: 0c3cc595284c5e8f0f9900a9b228a332 + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 21809 + timestamp: 1732827613585 diff --git a/examples/graph-api/magic.lock b/examples/graph-api/magic.lock new file mode 100644 index 0000000000..9473097321 --- /dev/null +++ b/examples/graph-api/magic.lock @@ -0,0 +1,2182 @@ +version: 6 +environments: + default: + channels: + - url: https://conda.anaconda.org/conda-forge/ + - url: https://conda.modular.com/max-nightly/ + packages: + linux-64: + - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2025.1.31-hbcca054_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-31_h59b9bed_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-31_he106b2a_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h767d61c_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hf1ad2bd_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h767d61c_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-31_h7ac8fdf_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.29-pthreads_h94d23a6_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsentencepiece-0.2.0-h8e10757_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.49.1-hee588c1_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-h8f9b012_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022718-release.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-h2d0b736_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.1-h7b32b05_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.9-h9e4cc4f_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.1-py312hbf22597_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-0.2.0-hc8f76dd_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-python-0.2.0-py312hb6b8a2b_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-spm-0.2.0-h8e10757_10.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + linux-aarch64: + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h68df207_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2025.1.31-hcefe29a_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/keyutils-1.6.1-h4e544f5_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/krb5-1.21.3-h50a48e9_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h18dbdb1_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-31_h1a9f1db_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-31_hab92f65_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20250104-pl5321h976ea20_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.6.4-h5ad3122_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.4.6-he21f813_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-14.2.0-he277a41_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-14.2.0-he9431aa_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-31_h411afd4_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.4-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.29-pthreads_h9d3fd7e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.3-h44a3b7b_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsentencepiece-0.2.0-h6164ad9_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.20-h68df207_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.49.1-h5eb1b54_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022718-release.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-ha32ae93_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.1-hd08dc88_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.9-h1683364_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.12-5_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyzmq-26.2.1-py312h2427ae1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8382b9d_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-0.2.0-h6c1b121_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-python-0.2.0-py312h197ff68_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-spm-0.2.0-h6164ad9_10.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py312h52516f5_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zeromq-4.3.5-h5efb499_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + osx-arm64: + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2025.1.31-hf0a4a13_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_h07bc746_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-31_h10e41b3_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-31_hb3479ef_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.4-h286801f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-31_hc9a63f6_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.4-h39f12f2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.29-openmp_hf332438_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.3-h3bd63a1_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsentencepiece-0.2.0-he13a0af_10.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.1-h3f77e49_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022718-release.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.1-h81ee809_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.9-hc22306f_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-5_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.1-py312hf4875e0_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-0.2.0-h22a84ea_10.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-python-0.2.0-py312h155166a_10.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-spm-0.2.0-he13a0af_10.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda +packages: +- conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 + sha256: fe51de6107f9edc7aa4f786a70f4a883943bc9d39b3bb7307c04c41410990726 + md5: d7c89558ba9fa0495403155b64376d81 + arch: x86_64 + platform: linux + license: None + size: 2562 + timestamp: 1578324546067 +- conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 + build_number: 16 + sha256: fbe2c5e56a653bebb982eda4876a9178aedfc2b545f25d0ce9c4c0b508253d22 + md5: 73aaf86a425cc6e73fcf236a5a46396d + depends: + - _libgcc_mutex 0.1 conda_forge + - libgomp >=7.5.0 + constrains: + - openmp_impl 9999 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 23621 + timestamp: 1650670423406 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2 + build_number: 16 + sha256: 3702bef2f0a4d38bd8288bbe54aace623602a1343c2cfbefd3fa188e015bebf0 + md5: 6168d71addc746e8f2b8d57dfd2edcea + depends: + - libgomp >=7.5.0 + constrains: + - openmp_impl 9999 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 23712 + timestamp: 1650670790230 +- conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda + sha256: 5ced96500d945fb286c9c838e54fa759aa04a7129c59800f0846b4335cee770d + md5: 62ee74e96c5ebb0af99386de58cf9553 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: bzip2-1.0.6 + license_family: BSD + size: 252783 + timestamp: 1720974456583 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h68df207_7.conda + sha256: 2258b0b33e1cb3a9852d47557984abb6e7ea58e3d7f92706ec1f8e879290c4cb + md5: 56398c28220513b9ea13d7b450acfb20 + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: bzip2-1.0.6 + license_family: BSD + size: 189884 + timestamp: 1720974504976 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda + sha256: adfa71f158cbd872a36394c56c3568e6034aa55c623634b37a4836bd036e6b91 + md5: fc6948412dbbbe9a4c9ddbbcfe0a79ab + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: bzip2-1.0.6 + license_family: BSD + size: 122909 + timestamp: 1720974522888 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2025.1.31-hbcca054_0.conda + sha256: bf832198976d559ab44d6cdb315642655547e26d826e34da67cbee6624cda189 + md5: 19f3a56f68d2fd06c516076bff482c52 + arch: x86_64 + platform: linux + license: ISC + size: 158144 + timestamp: 1738298224464 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2025.1.31-hcefe29a_0.conda + sha256: 66c6408ee461593cfdb2d78d82e6ed74d04a04ccb51df3ef8a5f35148c9c6eec + md5: 462cb166cd2e26a396f856510a3aff67 + arch: aarch64 + platform: linux + license: ISC + size: 158290 + timestamp: 1738299057652 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2025.1.31-hf0a4a13_0.conda + sha256: 7e12816618173fe70f5c638b72adf4bfd4ddabf27794369bb17871c5bb75b9f9 + md5: 3569d6a9141adc64d2fe4797f3289e06 + arch: arm64 + platform: osx + license: ISC + size: 158425 + timestamp: 1738298167688 +- conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda + sha256: c920d23cd1fcf565031c679adb62d848af60d6fbb0edc2d50ba475cea4f0d8ab + md5: f22f4d4970e09d68a10b922cbb0408d3 + depends: + - __unix + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 84705 + timestamp: 1734858922844 +- conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + sha256: ab29d57dc70786c1269633ba3dff20288b81664d3ff8d21af995742e2bb03287 + md5: 962b9857ee8e7018c22f2776ffa0b2d7 + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 27011 + timestamp: 1733218222191 +- conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + sha256: 598951ebdb23e25e4cec4bbff0ae369cec65ead80b50bc08b441d8e54de5cf03 + md5: f4b39bf00c69f56ac01e020ebfac066c + depends: + - python >=3.9 + - zipp >=0.5 + license: Apache-2.0 + license_family: APACHE + size: 29141 + timestamp: 1737420302391 +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + sha256: 19d8bd5bb2fde910ec59e081eeb59529491995ce0d653a5209366611023a0b3a + md5: 4ebae00eae9705b0c3d6d1018a81d047 + depends: + - importlib-metadata >=4.8.3 + - jupyter_core >=4.12,!=5.0.* + - python >=3.9 + - python-dateutil >=2.8.2 + - pyzmq >=23.0 + - tornado >=6.2 + - traitlets >=5.3 + license: BSD-3-Clause + license_family: BSD + size: 106342 + timestamp: 1733441040958 +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + sha256: 732b1e8536bc22a5a174baa79842d79db2f4956d90293dd82dc1b3f6099bcccd + md5: 0a2980dada0dd7fd0998f0342308b1b1 + depends: + - __unix + - platformdirs >=2.5 + - python >=3.8 + - traitlets >=5.3 + license: BSD-3-Clause + license_family: BSD + size: 57671 + timestamp: 1727163547058 +- conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 + sha256: 150c05a6e538610ca7c43beb3a40d65c90537497a4f6a5f4d15ec0451b6f5ebb + md5: 30186d27e2c9fa62b45fb1476b7200e3 + depends: + - libgcc-ng >=10.3.0 + arch: x86_64 + platform: linux + license: LGPL-2.1-or-later + size: 117831 + timestamp: 1646151697040 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/keyutils-1.6.1-h4e544f5_0.tar.bz2 + sha256: 6d4233d97a9b38acbb26e1268bcf8c10a8e79c2aed7e5a385ec3769967e3e65b + md5: 1f24853e59c68892452ef94ddd8afd4b + depends: + - libgcc-ng >=10.3.0 + arch: aarch64 + platform: linux + license: LGPL-2.1-or-later + size: 112327 + timestamp: 1646166857935 +- conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda + sha256: 99df692f7a8a5c27cd14b5fb1374ee55e756631b9c3d659ed3ee60830249b238 + md5: 3f43953b7d3fb3aaa1d0d0723d91e368 + depends: + - keyutils >=1.6.1,<2.0a0 + - libedit >=3.1.20191231,<3.2.0a0 + - libedit >=3.1.20191231,<4.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - openssl >=3.3.1,<4.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 1370023 + timestamp: 1719463201255 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/krb5-1.21.3-h50a48e9_0.conda + sha256: 0ec272afcf7ea7fbf007e07a3b4678384b7da4047348107b2ae02630a570a815 + md5: 29c10432a2ca1472b53f299ffb2ffa37 + depends: + - keyutils >=1.6.1,<2.0a0 + - libedit >=3.1.20191231,<3.2.0a0 + - libedit >=3.1.20191231,<4.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - openssl >=3.3.1,<4.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 1474620 + timestamp: 1719463205834 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda + sha256: 4442f957c3c77d69d9da3521268cad5d54c9033f1a73f99cde0a3658937b159b + md5: c6dc8a0fdec13a0565936655c33069a1 + depends: + - __osx >=11.0 + - libcxx >=16 + - libedit >=3.1.20191231,<3.2.0a0 + - libedit >=3.1.20191231,<4.0a0 + - openssl >=3.3.1,<4.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 1155530 + timestamp: 1719463474401 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_4.conda + sha256: db73f38155d901a610b2320525b9dd3b31e4949215c870685fd92ea61b5ce472 + md5: 01f8d123c96816249efd255a31ad7712 + depends: + - __glibc >=2.17,<3.0.a0 + constrains: + - binutils_impl_linux-64 2.43 + arch: x86_64 + platform: linux + license: GPL-3.0-only + license_family: GPL + size: 671240 + timestamp: 1740155456116 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_4.conda + sha256: 016832a70b0aa97e1c4e47e23c00b0c34def679de25146736df353199f684f0d + md5: 80c9ad5e05e91bb6c0967af3880c9742 + constrains: + - binutils_impl_linux-aarch64 2.43 + arch: aarch64 + platform: linux + license: GPL-3.0-only + license_family: GPL + size: 699058 + timestamp: 1740155620594 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda + sha256: 143a586aa67d50622ef703de57b9d43f44945836d6568e0e7aa174bd8c45e0d4 + md5: 488f260ccda0afaf08acb286db439c2f + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + constrains: + - libabseil-static =20240722.0=cxx17* + - abseil-cpp =20240722.0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 1311599 + timestamp: 1736008414161 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h18dbdb1_4.conda + sha256: bb6c5fb3b8de5f90735c5252b57efb3c268ee222c755569dac18065f05147670 + md5: 633b9fe454ffea2aaf29e191d946a83b + depends: + - libgcc >=13 + - libstdcxx >=13 + constrains: + - abseil-cpp =20240722.0 + - libabseil-static =20240722.0=cxx17* + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 1334844 + timestamp: 1736008472455 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_h07bc746_4.conda + sha256: 05fa5e5e908962b9c5aba95f962e2ca81d9599c4715aebe5e4ddb72b309d1770 + md5: c2d95bd7aa8d564a9bd7eca5e571a5b3 + depends: + - __osx >=11.0 + - libcxx >=18 + constrains: + - libabseil-static =20240722.0=cxx17* + - abseil-cpp =20240722.0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 1178260 + timestamp: 1736008642885 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-31_h59b9bed_openblas.conda + build_number: 31 + sha256: 9839fc4ac0cbb0aa3b9eea520adfb57311838959222654804e58f6f2d1771db5 + md5: 728dbebd0f7a20337218beacffd37916 + depends: + - libopenblas >=0.3.29,<0.3.30.0a0 + - libopenblas >=0.3.29,<1.0a0 + constrains: + - liblapacke =3.9.0=31*_openblas + - liblapack =3.9.0=31*_openblas + - blas =2.131=openblas + - mkl <2025 + - libcblas =3.9.0=31*_openblas + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 16859 + timestamp: 1740087969120 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-31_h1a9f1db_openblas.conda + build_number: 31 + sha256: 67c9c81dd0444ecc712124034d9f74186ca82fd770b3df46b1a68564461c6a1a + md5: 48bd5bf15ccf3e409840be9caafc0ad5 + depends: + - libopenblas >=0.3.29,<0.3.30.0a0 + - libopenblas >=0.3.29,<1.0a0 + constrains: + - liblapack =3.9.0=31*_openblas + - blas =2.131=openblas + - libcblas =3.9.0=31*_openblas + - mkl <2025 + - liblapacke =3.9.0=31*_openblas + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 16915 + timestamp: 1740087911042 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-31_h10e41b3_openblas.conda + build_number: 31 + sha256: 369586e7688b59b4f92c709b99d847d66d4d095425db327dd32ee5e6ab74697f + md5: 39b053da5e7035c6592102280aa7612a + depends: + - libopenblas >=0.3.29,<0.3.30.0a0 + - libopenblas >=0.3.29,<1.0a0 + constrains: + - liblapacke =3.9.0=31*_openblas + - libcblas =3.9.0=31*_openblas + - blas =2.131=openblas + - mkl <2025 + - liblapack =3.9.0=31*_openblas + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 17123 + timestamp: 1740088119350 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-31_he106b2a_openblas.conda + build_number: 31 + sha256: ede8545011f5b208b151fe3e883eb4e31d495ab925ab7b9ce394edca846e0c0d + md5: abb32c727da370c481a1c206f5159ce9 + depends: + - libblas 3.9.0 31_h59b9bed_openblas + constrains: + - liblapacke =3.9.0=31*_openblas + - liblapack =3.9.0=31*_openblas + - blas =2.131=openblas + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 16796 + timestamp: 1740087984429 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-31_hab92f65_openblas.conda + build_number: 31 + sha256: f0457a1d2982f0a28bfbadaa02621677c324e88f7c8198c24fb3e3214c468dba + md5: 6b81dbae56a519f1ec2f25e0ee2f4334 + depends: + - libblas 3.9.0 31_h1a9f1db_openblas + constrains: + - liblapack =3.9.0=31*_openblas + - blas =2.131=openblas + - liblapacke =3.9.0=31*_openblas + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 16824 + timestamp: 1740087917500 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-31_hb3479ef_openblas.conda + build_number: 31 + sha256: f237486cc9118d09d0f3ff8820280de34365f98ee7b7dc5ab923b04c7cbf25a5 + md5: 7353c2bf0e90834cb70545671996d871 + depends: + - libblas 3.9.0 31_h10e41b3_openblas + constrains: + - liblapacke =3.9.0=31*_openblas + - blas =2.131=openblas + - liblapack =3.9.0=31*_openblas + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 17032 + timestamp: 1740088127097 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda + sha256: 776092346da87a2a23502e14d91eb0c32699c4a1522b7331537bd1c3751dcff5 + md5: 5b3e1610ff8bd5443476b91d618f5b77 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + size: 523505 + timestamp: 1736877862502 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda + sha256: d789471216e7aba3c184cd054ed61ce3f6dac6f87a50ec69291b9297f8c18724 + md5: c277e0a4d549b03ac1e9d6cbbe3d017b + depends: + - ncurses + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - ncurses >=6.5,<7.0a0 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + size: 134676 + timestamp: 1738479519902 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20250104-pl5321h976ea20_0.conda + sha256: c0b27546aa3a23d47919226b3a1635fccdb4f24b94e72e206a751b33f46fd8d6 + md5: fb640d776fc92b682a14e001980825b1 + depends: + - ncurses + - libgcc >=13 + - ncurses >=6.5,<7.0a0 + arch: aarch64 + platform: linux + license: BSD-2-Clause + license_family: BSD + size: 148125 + timestamp: 1738479808948 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda + sha256: 66aa216a403de0bb0c1340a88d1a06adaff66bae2cfd196731aa24db9859d631 + md5: 44083d2d2c2025afca315c7a172eab2b + depends: + - ncurses + - __osx >=11.0 + - ncurses >=6.5,<7.0a0 + arch: arm64 + platform: osx + license: BSD-2-Clause + license_family: BSD + size: 107691 + timestamp: 1738479560845 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda + sha256: 56541b98447b58e52d824bd59d6382d609e11de1f8adf20b23143e353d2b8d26 + md5: db833e03127376d461e1e13e76f09b6c + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + constrains: + - expat 2.6.4.* + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 73304 + timestamp: 1730967041968 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.6.4-h5ad3122_0.conda + sha256: f42e758009ba9db90d1fe7992bc3e60d0c52f71fb20923375d2c44ae69a5a2b3 + md5: f1b3fab36861b3ce945a13f0dfdfc688 + depends: + - libgcc >=13 + constrains: + - expat 2.6.4.* + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 72345 + timestamp: 1730967203789 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.4-h286801f_0.conda + sha256: e42ab5ace927ee7c84e3f0f7d813671e1cf3529f5f06ee5899606630498c2745 + md5: 38d2656dd914feb0cab8c629370768bf + depends: + - __osx >=11.0 + constrains: + - expat 2.6.4.* + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 64693 + timestamp: 1730967175868 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_0.conda + sha256: 67a6c95e33ebc763c1adc3455b9a9ecde901850eb2fceb8e646cc05ef3a663da + md5: e3eb7806380bc8bcecba6d749ad5f026 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 53415 + timestamp: 1739260413716 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.4.6-he21f813_0.conda + sha256: 41568066beefe7b319ff27d85952242e5b77fb753d705b8716041959e17c35c2 + md5: 966084fccf3ad62a3160666cda869f28 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 51513 + timestamp: 1739260449772 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 + sha256: 41b3d13efb775e340e4dba549ab5c029611ea6918703096b2eaa9c015c0750ca + md5: 086914b672be056eb70fd4285b6783b6 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 39020 + timestamp: 1636488587153 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h767d61c_2.conda + sha256: 3a572d031cb86deb541d15c1875aaa097baefc0c580b54dc61f5edab99215792 + md5: ef504d1acbd74b7cc6849ef8af47dd03 + depends: + - __glibc >=2.17,<3.0.a0 + - _openmp_mutex >=4.5 + constrains: + - libgomp 14.2.0 h767d61c_2 + - libgcc-ng ==14.2.0=*_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 847885 + timestamp: 1740240653082 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-14.2.0-he277a41_2.conda + sha256: a57f7f9ba2a12f56eafdcd25b6d75f7be10b8fc1a802a58b76a77ca8c66f4503 + md5: 6b4268a60b10f29257b51b9b67ff8d76 + depends: + - _openmp_mutex >=4.5 + constrains: + - libgcc-ng ==14.2.0=*_2 + - libgomp 14.2.0 he277a41_2 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 535507 + timestamp: 1740241069780 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_2.conda + sha256: fb7558c328b38b2f9d2e412c48da7890e7721ba018d733ebdfea57280df01904 + md5: a2222a6ada71fb478682efe483ce0f92 + depends: + - libgcc 14.2.0 h767d61c_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 53758 + timestamp: 1740240660904 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-14.2.0-he9431aa_2.conda + sha256: 9647f75cddc18b07eebe6e1f21500eed50a6af2c43c84e831b4c7a597e10d226 + md5: 692c2bb75f32cfafb6799cf6d1c5d0e0 + depends: + - libgcc 14.2.0 he277a41_2 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 53622 + timestamp: 1740241074834 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_2.conda + sha256: e05263e8960da03c341650f2a3ffa4ccae4e111cb198e8933a2908125459e5a6 + md5: fb54c4ea68b460c278d26eea89cfbcc3 + depends: + - libgfortran5 14.2.0 hf1ad2bd_2 + constrains: + - libgfortran-ng ==14.2.0=*_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 53733 + timestamp: 1740240690977 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_2.conda + sha256: 996d3c0505301901a7ab23b5e7daad21635d1c065240bb0f4faf7e4f75d7f49d + md5: d8b9d9dc0c8cd97d375b48e55947ba70 + depends: + - libgfortran5 14.2.0 hb6113d0_2 + constrains: + - libgfortran-ng ==14.2.0=*_2 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 53611 + timestamp: 1740241100147 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda + sha256: 44e541b4821c96b28b27fef5630883a60ce4fee91fd9c79f25a199f8f73f337b + md5: 4a55d9e169114b2b90d3ec4604cd7bbf + depends: + - libgfortran5 13.2.0 hf226fd6_3 + arch: arm64 + platform: osx + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 110233 + timestamp: 1707330749033 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hf1ad2bd_2.conda + sha256: c17b7cf3073a1f4e1f34d50872934fa326346e104d3c445abc1e62481ad6085c + md5: 556a4fdfac7287d349b8f09aba899693 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14.2.0 + constrains: + - libgfortran 14.2.0 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 1461978 + timestamp: 1740240671964 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_2.conda + sha256: 7b9e1d3666a00e5a52e5d43c003bd1c73ab472804be513c070aaedca9c4c2a9a + md5: cd754566661513808ef2408c4ab99a2f + depends: + - libgcc >=14.2.0 + constrains: + - libgfortran 14.2.0 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 1100765 + timestamp: 1740241083241 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda + sha256: bafc679eedb468a86aa4636061c55966186399ee0a04b605920d208d97ac579a + md5: 66ac81d54e95c534ae488726c1f698ea + depends: + - llvm-openmp >=8.0.0 + constrains: + - libgfortran 5.0.0 13_2_0_*_3 + arch: arm64 + platform: osx + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 997381 + timestamp: 1707330687590 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h767d61c_2.conda + sha256: 1a3130e0b9267e781b89399580f3163632d59fe5b0142900d63052ab1a53490e + md5: 06d02030237f4d5b3d9a7e7d348fe3c6 + depends: + - __glibc >=2.17,<3.0.a0 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 459862 + timestamp: 1740240588123 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_2.conda + sha256: 4e303711fb7413bf98995beac58e731073099d7a669a3b81e49330ca8da05174 + md5: b11c09d9463daf4cae492d29806b1889 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 462783 + timestamp: 1740241005079 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-31_h7ac8fdf_openblas.conda + build_number: 31 + sha256: f583661921456e798aba10972a8abbd9d33571c655c1f66eff450edc9cbefcf3 + md5: 452b98eafe050ecff932f0ec832dd03f + depends: + - libblas 3.9.0 31_h59b9bed_openblas + constrains: + - libcblas =3.9.0=31*_openblas + - liblapacke =3.9.0=31*_openblas + - blas =2.131=openblas + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 16790 + timestamp: 1740087997375 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-31_h411afd4_openblas.conda + build_number: 31 + sha256: 27613828ff6fb258b2e58802617df549f00089660ea8ab6c55c68f042c570162 + md5: 41dbff5eb805a75c120a7b7a1c744dc2 + depends: + - libblas 3.9.0 31_h1a9f1db_openblas + constrains: + - blas =2.131=openblas + - libcblas =3.9.0=31*_openblas + - liblapacke =3.9.0=31*_openblas + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 16845 + timestamp: 1740087923843 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-31_hc9a63f6_openblas.conda + build_number: 31 + sha256: fe55b9aaf82c6c0192c3d1fcc9b8e884f97492dda9a8de5dae29334b3135fab5 + md5: ff57a55a2cbce171ef5707fb463caf19 + depends: + - libblas 3.9.0 31_h10e41b3_openblas + constrains: + - liblapacke =3.9.0=31*_openblas + - libcblas =3.9.0=31*_openblas + - blas =2.131=openblas + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 17033 + timestamp: 1740088134988 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda + sha256: cad52e10319ca4585bc37f0bc7cce99ec7c15dc9168e42ccb96b741b0a27db3f + md5: 42d5b6a0f30d3c10cd88cb8584fda1cb + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: 0BSD + size: 111357 + timestamp: 1738525339684 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.4-h86ecc28_0.conda + sha256: 96413664f0fade54a4931940d18749cfc8e6308349dbb0cb83adb2394ca1f730 + md5: b88244e0a115cc34f7fbca9b11248e76 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: 0BSD + size: 124197 + timestamp: 1738528201520 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.4-h39f12f2_0.conda + sha256: 560c59d3834cc652a84fb45531bd335ad06e271b34ebc216e380a89798fe8e2c + md5: e3fd1f8320a100f2b210e690a57cd615 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: 0BSD + size: 98945 + timestamp: 1738525462560 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda + sha256: 26d77a3bb4dceeedc2a41bd688564fe71bf2d149fdcf117049970bc02ff1add6 + md5: 30fd6e37fe21f86f4bd26d6ee73eeec7 + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: LGPL-2.1-only + license_family: GPL + size: 33408 + timestamp: 1697359010159 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda + sha256: fd18c2b75d7411096428d36a70b36b1a17e31f7b8956b6905d145792d49e97f8 + md5: c14f32510f694e3185704d89967ec422 + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: LGPL-2.1-only + license_family: GPL + size: 34501 + timestamp: 1697358973269 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.29-pthreads_h94d23a6_0.conda + sha256: cc5389ea254f111ef17a53df75e8e5209ef2ea6117e3f8aced88b5a8e51f11c4 + md5: 0a4d0252248ef9a0f88f2ba8b8a08e12 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libgfortran + - libgfortran5 >=14.2.0 + constrains: + - openblas >=0.3.29,<0.3.30.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 5919288 + timestamp: 1739825731827 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.29-pthreads_h9d3fd7e_0.conda + sha256: 3a2ccf4c9098cd18a636e9b7fff947fdeb4962bcfb75c9d6fd80b8c50caf6a3c + md5: a99e2bfcb1ad6362544c71281eb617e9 + depends: + - libgcc >=14 + - libgfortran + - libgfortran5 >=14.2.0 + constrains: + - openblas >=0.3.29,<0.3.30.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 4801657 + timestamp: 1739825308974 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.29-openmp_hf332438_0.conda + sha256: 8989d9e01ec8c9b2d48dbb5efbe70b356fcd15990fb53b64fcb84798982c0343 + md5: 0cd1148c68f09027ee0b0f0179f77c30 + depends: + - __osx >=11.0 + - libgfortran 5.* + - libgfortran5 >=13.2.0 + - llvm-openmp >=18.1.8 + constrains: + - openblas >=0.3.29,<0.3.30.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 4168442 + timestamp: 1739825514918 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda + sha256: 51125ebb8b7152e4a4e69fd2398489c4ec8473195c27cde3cbdf1cb6d18c5493 + md5: d8703f1ffe5a06356f06467f1d0b9464 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 2960815 + timestamp: 1735577210663 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.3-h44a3b7b_1.conda + sha256: ecb69f2b1668e784b41ba667493be846662d5ef702bef64fb2e013bb1364cdc4 + md5: 68f807f7cc13951652bbe048253fd405 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 2788074 + timestamp: 1735576315676 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.3-h3bd63a1_1.conda + sha256: f58a16b13ad53346903c833e266f83c3d770a43a432659b98710aed85ca885e7 + md5: bdbfea4cf45ae36652c6bbcc2e7ebe91 + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=18 + - libzlib >=1.3.1,<2.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 2271580 + timestamp: 1735576361997 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsentencepiece-0.2.0-h8e10757_10.conda + sha256: dc399e0f04a09f8c1807c3b36e578eb81f81891c0ddf21de9c1fb9f048ce4031 + md5: 4f43dbcfacd3cc9a183dd3a48b94d3c0 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 823649 + timestamp: 1735627841126 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsentencepiece-0.2.0-h6164ad9_10.conda + sha256: 57074803772f65d4075b7d6dc17ff5aa40ec3a30109fa4225ca16911504c4a8b + md5: a7a192edc9cfba26a27df3283203e6a1 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 800865 + timestamp: 1735627982895 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsentencepiece-0.2.0-he13a0af_10.conda + sha256: 3347a8840d085ce1661928e736229f068d56c84312fbed90886e059023d85611 + md5: 1f67e5e30edd56e0a0bf6df6bb711a9d + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 754657 + timestamp: 1735628030895 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda + sha256: 0105bd108f19ea8e6a78d2d994a6d4a8db16d19a41212070d2d1d48a63c34161 + md5: a587892d3c13b6621a6091be690dbca2 + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: ISC + size: 205978 + timestamp: 1716828628198 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.20-h68df207_0.conda + sha256: 448df5ea3c5cf1af785aad46858d7a5be0522f4234a4dc9bb764f4d11ff3b981 + md5: 2e4a8f23bebdcb85ca8e5a0fbe75666a + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: ISC + size: 177394 + timestamp: 1716828514515 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda + sha256: fade8223e1e1004367d7101dd17261003b60aa576df6d7802191f8972f7470b1 + md5: a7ce36e284c5faaf93c220dfc39e3abd + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: ISC + size: 164972 + timestamp: 1716828607917 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.49.1-hee588c1_1.conda + sha256: 7a09eef804ef7cf4d88215c2297eabb72af8ad0bd5b012060111c289f14bbe7d + md5: 73cea06049cc4174578b432320a003b8 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux + license: Unlicense + size: 915956 + timestamp: 1739953155793 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.49.1-h5eb1b54_1.conda + sha256: 920fb3b7d3b873babf79a3e392cc82d43b8bd02a573ccaff34219efb5cf7b51e + md5: 150d64241fa27d9d35a7f421ca968a6c + depends: + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + arch: aarch64 + platform: linux + license: Unlicense + size: 915118 + timestamp: 1739953101699 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.1-h3f77e49_1.conda + sha256: 266639fb10ca92287961574b0b4d6031fa40dd9d723d64a0fcb08513a24dab03 + md5: c83357a21092bd952933c36c5cb4f4d6 + depends: + - __osx >=11.0 + - libzlib >=1.3.1,<2.0a0 + arch: arm64 + platform: osx + license: Unlicense + size: 898767 + timestamp: 1739953312379 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-h8f9b012_2.conda + sha256: 8f5bd92e4a24e1d35ba015c5252e8f818898478cb3bc50bd8b12ab54707dc4da + md5: a78c856b6dc6bf4ea8daeb9beaaa3fb0 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc 14.2.0 h767d61c_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 3884556 + timestamp: 1740240685253 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_2.conda + sha256: c30a74bc996013907f6d9f344da007c26d98ef9a0831151cd50aece3125c45d5 + md5: eadee2cda99697e29411c1013c187b92 + depends: + - libgcc 14.2.0 he277a41_2 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 3810779 + timestamp: 1740241094774 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_2.conda + sha256: e86f38b007cf97cc2c67cd519f2de12a313c4ee3f5ef11652ad08932a5e34189 + md5: c75da67f045c2627f59e6fcb5f4e3a9b + depends: + - libstdcxx 14.2.0 h8f9b012_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 53830 + timestamp: 1740240722530 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_2.conda + sha256: 0107886ead6f255956d8e520f8dff260f9ab3d0d51512f18c52710c406e4b2df + md5: c934c1fddad582fcc385b608eb06a70c + depends: + - libstdcxx 14.2.0 h3f4de04_2 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 53715 + timestamp: 1740241126343 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda + sha256: 787eb542f055a2b3de553614b25f09eefb0a0931b0c87dbcce6efdfd92f04f18 + md5: 40b61aab5c7ba9ff276c41cfffe6b80b + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 33601 + timestamp: 1680112270483 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda + sha256: 616277b0c5f7616c2cdf36f6c316ea3f9aa5bb35f2d4476a349ab58b9b91675f + md5: 000e30b09db0b7c775b21695dff30969 + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 35720 + timestamp: 1680113474501 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda + sha256: 6ae68e0b86423ef188196fff6207ed0c8195dd84273cb5623b85aa08033a410c + md5: 5aa797f8787fe7a17d1b0821485b5adc + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: LGPL-2.1-or-later + size: 100393 + timestamp: 1702724383534 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda + sha256: 6b46c397644091b8a26a3048636d10b989b1bf266d4be5e9474bf763f828f41f + md5: b4df5d7d4b63579d081fd3a4cf99740e + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: LGPL-2.1-or-later + size: 114269 + timestamp: 1702724369203 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda + sha256: d4bfe88d7cb447768e31650f06257995601f89076080e76df55e3112d4e47dc4 + md5: edb0dca6bc32e4f4789199455a1dbeb8 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + constrains: + - zlib 1.3.1 *_2 + arch: x86_64 + platform: linux + license: Zlib + license_family: Other + size: 60963 + timestamp: 1727963148474 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda + sha256: 5a2c1eeef69342e88a98d1d95bff1603727ab1ff4ee0e421522acd8813439b84 + md5: 08aad7cbe9f5a6b460d0976076b6ae64 + depends: + - libgcc >=13 + constrains: + - zlib 1.3.1 *_2 + arch: aarch64 + platform: linux + license: Zlib + license_family: Other + size: 66657 + timestamp: 1727963199518 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda + sha256: ce34669eadaba351cd54910743e6a2261b67009624dbc7daeeafdef93616711b + md5: 369964e85dc26bfe78f41399b366c435 + depends: + - __osx >=11.0 + constrains: + - zlib 1.3.1 *_2 + arch: arm64 + platform: osx + license: Zlib + license_family: Other + size: 46438 + timestamp: 1727963202283 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda + sha256: b92a669f2059874ebdcb69041b6c243d68ffc3fb356ac1339cec44aeb27245d7 + md5: c4d54bfd3817313ce758aa76283b118d + depends: + - __osx >=11.0 + constrains: + - openmp 19.1.7|19.1.7.* + arch: arm64 + platform: osx + license: Apache-2.0 WITH LLVM-exception + license_family: APACHE + size: 280830 + timestamp: 1736986295869 +- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022718-release.conda + noarch: python + sha256: f3dcb14fed5470c0fc521542cbd2f1c56ca7e46d560f46176b8f926198cb3cbd + md5: 01fe5e0cf46c84a6345e323ad1316764 + depends: + - max-core ==25.2.0.dev2025022718 release + - max-python ==25.2.0.dev2025022718 release + - mojo-jupyter ==25.2.0.dev2025022718 release + - mblack ==25.2.0.dev2025022718 release + license: LicenseRef-Modular-Proprietary + size: 9905 + timestamp: 1740680254354 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022718-release.conda + sha256: 847d5767109a305d7bcad4ac29248a74a384034692934a0c54b00a590c27094a + md5: fc5a9ae36c7805979bd58ca55a25066f + depends: + - mblack ==25.2.0.dev2025022718 release + license: LicenseRef-Modular-Proprietary + size: 249811868 + timestamp: 1740680254354 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022718-release.conda + sha256: 250c35ecccd302e6c7de836ac200a5ece92e74508c2590c585d8803d488fd650 + md5: d88728b468c85902512a0f9b99251035 + depends: + - mblack ==25.2.0.dev2025022718 release + license: LicenseRef-Modular-Proprietary + size: 252108573 + timestamp: 1740680207793 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022718-release.conda + sha256: fb28d9e61aa507ea84b470082d3dc96844a24fe672d4e4c57e832655c5d0a202 + md5: dd8734453f7276a258f3351cc5c506c3 + depends: + - mblack ==25.2.0.dev2025022718 release + license: LicenseRef-Modular-Proprietary + size: 217273450 + timestamp: 1740681819160 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022718-release.conda + noarch: python + sha256: 831b4d62f66f0083321121c6ba25dedab3ee41d5e9f19d9752969592214af398 + md5: f828ace91aa057e4774e84ad459adccf + depends: + - max-core ==25.2.0.dev2025022718 release + - click >=8.0.0 + - numpy >=1.18,<2.0 + - sentencepiece >=0.2.0 + - tqdm >=4.67.1 + constrains: + - aiohttp >=3.11.12 + - fastapi >=0.114.2 + - gguf >=0.14.0 + - hf-transfer >=0.1.9 + - httpx >=0.28.1 + - huggingface_hub >=0.24.0 + - nvitop >=1.4.1 + - opentelemetry-api >=1.29.0 + - opentelemetry-exporter-otlp-proto-http >=1.27.0 + - opentelemetry-exporter-prometheus <1.0.0 + - opentelemetry-sdk >=1.29.0,<2.0 + - pillow >=10.3.0 + - prometheus_client >=0.21.0 + - prometheus-async >=22.2.0 + - psutil >=6.1.1 + - pydantic + - pydantic-settings >=2.7.1 + - pyinstrument >=5.0.1 + - python-json-logger >=2.0.7 + - requests >=2.32.3 + - rich >=13.9.4 + - safetensors >=0.5.2 + - sentinel >=0.3.0 + - sse-starlette >=2.1.2 + - tokenizers >=0.19.0 + - pytorch >=2.2.2,<=2.5.1 + - transformers >=4.40.1 + - uvicorn >=0.34.0 + - uvloop >=0.21.0 + - xgrammar ==0.1.11 + license: LicenseRef-Modular-Proprietary + size: 123584411 + timestamp: 1740680254354 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022718-release.conda + noarch: python + sha256: b9e5755b7bf6314a37a90ef0250c93f5e7c693954d7a6389a97ab9ef06e23cc3 + md5: bfd2e752d0fc9516b78a17169ce9cc78 + depends: + - max-core ==25.2.0.dev2025022718 release + - click >=8.0.0 + - numpy >=1.18,<2.0 + - sentencepiece >=0.2.0 + - tqdm >=4.67.1 + constrains: + - aiohttp >=3.11.12 + - fastapi >=0.114.2 + - gguf >=0.14.0 + - hf-transfer >=0.1.9 + - httpx >=0.28.1 + - huggingface_hub >=0.24.0 + - nvitop >=1.4.1 + - opentelemetry-api >=1.29.0 + - opentelemetry-exporter-otlp-proto-http >=1.27.0 + - opentelemetry-exporter-prometheus <1.0.0 + - opentelemetry-sdk >=1.29.0,<2.0 + - pillow >=10.3.0 + - prometheus_client >=0.21.0 + - prometheus-async >=22.2.0 + - psutil >=6.1.1 + - pydantic + - pydantic-settings >=2.7.1 + - pyinstrument >=5.0.1 + - python-json-logger >=2.0.7 + - requests >=2.32.3 + - rich >=13.9.4 + - safetensors >=0.5.2 + - sentinel >=0.3.0 + - sse-starlette >=2.1.2 + - tokenizers >=0.19.0 + - pytorch >=2.2.2,<=2.5.1 + - transformers >=4.40.1 + - uvicorn >=0.34.0 + - uvloop >=0.21.0 + - xgrammar ==0.1.11 + license: LicenseRef-Modular-Proprietary + size: 126004454 + timestamp: 1740680207793 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022718-release.conda + noarch: python + sha256: 7da9f4655082bb64c2b0cc996ffefa0ce5c49744854ed77a9b0d000e27cf5a55 + md5: b16d498a148aa61dca2a6bfec5cb8e46 + depends: + - max-core ==25.2.0.dev2025022718 release + - click >=8.0.0 + - numpy >=1.18,<2.0 + - sentencepiece >=0.2.0 + - tqdm >=4.67.1 + constrains: + - aiohttp >=3.11.12 + - fastapi >=0.114.2 + - gguf >=0.14.0 + - hf-transfer >=0.1.9 + - httpx >=0.28.1 + - huggingface_hub >=0.24.0 + - nvitop >=1.4.1 + - opentelemetry-api >=1.29.0 + - opentelemetry-exporter-otlp-proto-http >=1.27.0 + - opentelemetry-exporter-prometheus <1.0.0 + - opentelemetry-sdk >=1.29.0,<2.0 + - pillow >=10.3.0 + - prometheus_client >=0.21.0 + - prometheus-async >=22.2.0 + - psutil >=6.1.1 + - pydantic + - pydantic-settings >=2.7.1 + - pyinstrument >=5.0.1 + - python-json-logger >=2.0.7 + - requests >=2.32.3 + - rich >=13.9.4 + - safetensors >=0.5.2 + - sentinel >=0.3.0 + - sse-starlette >=2.1.2 + - tokenizers >=0.19.0 + - pytorch >=2.2.2,<=2.5.1 + - transformers >=4.40.1 + - uvicorn >=0.34.0 + - uvloop >=0.21.0 + - xgrammar ==0.1.11 + license: LicenseRef-Modular-Proprietary + size: 112658409 + timestamp: 1740681819160 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022718-release.conda + noarch: python + sha256: ff042a8abfed0e2e36b207e3d4f59a2b4577dea7f099b08d1aaef128ab796f09 + md5: 719ca7123d53415adcdd7f0cb8396c51 + depends: + - python >=3.9,<3.13 + - click >=8.0.0 + - mypy_extensions >=0.4.3 + - packaging >=22.0 + - pathspec >=0.9.0 + - platformdirs >=2 + - typing_extensions >=v4.12.2 + - python + license: MIT + size: 130852 + timestamp: 1740680254353 +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022718-release.conda + noarch: python + sha256: 19c33e23b27e240fee0b2a1d56921802ac88558dc2da417837cd590175561e16 + md5: 6b8d00b15817db11e026f824f7f0ba14 + depends: + - max-core ==25.2.0.dev2025022718 release + - python >=3.9,<3.13 + - jupyter_client >=8.6.2,<8.7 + - python + license: LicenseRef-Modular-Proprietary + size: 22981 + timestamp: 1740680254354 +- conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda + sha256: 1895f47b7d68581a6facde5cb13ab8c2764c2e53a76bd746f8f98910dc4e08fe + md5: 29097e7ea634a45cc5386b95cac6568f + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 10854 + timestamp: 1733230986902 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda + sha256: 3fde293232fa3fca98635e1167de6b7c7fda83caf24b9d6c91ec9eefb4f4d586 + md5: 47e340acb35de30501a76c7c799c41d7 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: X11 AND BSD-3-Clause + size: 891641 + timestamp: 1738195959188 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-ha32ae93_3.conda + sha256: 91cfb655a68b0353b2833521dc919188db3d8a7f4c64bea2c6a7557b24747468 + md5: 182afabe009dc78d8b73100255ee6868 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: X11 AND BSD-3-Clause + size: 926034 + timestamp: 1738196018799 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda + sha256: 2827ada40e8d9ca69a153a45f7fd14f32b2ead7045d3bbb5d10964898fe65733 + md5: 068d497125e4bf8a66bf707254fff5ae + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: X11 AND BSD-3-Clause + size: 797030 + timestamp: 1738196177597 +- conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda + sha256: fe3459c75cf84dcef6ef14efcc4adb0ade66038ddd27cadb894f34f4797687d8 + md5: d8285bea2a350f63fab23bf460221f3f + depends: + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - libgcc-ng >=12 + - liblapack >=3.9.0,<4.0a0 + - libstdcxx-ng >=12 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - numpy-base <0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 7484186 + timestamp: 1707225809722 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda + sha256: 23767677a7790bee5457d5e75ebd508b9a31c5354216f4310dd1acfca3f7a6f9 + md5: 9cebf5a06cb87d4569cd68df887af476 + depends: + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - libgcc-ng >=12 + - liblapack >=3.9.0,<4.0a0 + - libstdcxx-ng >=12 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - numpy-base <0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 6614296 + timestamp: 1707225994762 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda + sha256: c8841d6d6f61fd70ca80682efbab6bdb8606dc77c68d8acabfbd7c222054f518 + md5: d83fc83d589e2625a3451c9a7e21047c + depends: + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - libcxx >=16 + - liblapack >=3.9.0,<4.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - numpy-base <0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 6073136 + timestamp: 1707226249608 +- conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.1-h7b32b05_0.conda + sha256: cbf62df3c79a5c2d113247ddea5658e9ff3697b6e741c210656e239ecaf1768f + md5: 41adf927e746dc75ecf0ef841c454e48 + depends: + - __glibc >=2.17,<3.0.a0 + - ca-certificates + - libgcc >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 2939306 + timestamp: 1739301879343 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.1-hd08dc88_0.conda + sha256: d80b52b56b2206053968270069616868cbeb289ef855cf1584b1bb0fef61b37c + md5: 09036190605c57eaecf01218e0e9542d + depends: + - ca-certificates + - libgcc >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 3476570 + timestamp: 1739303256089 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.1-h81ee809_0.conda + sha256: 4f8e2389e1b711b44182a075516d02c80fa7a3a7e25a71ff1b5ace9eae57a17a + md5: 75f9f0c7b1740017e2db83a53ab9a28e + depends: + - __osx >=11.0 + - ca-certificates + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 2934522 + timestamp: 1739301896733 +- conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + sha256: da157b19bcd398b9804c5c52fc000fcb8ab0525bdb9c70f95beaa0bb42f85af1 + md5: 3bfed7e6228ebf2f7b9eaa47f1b4e2aa + depends: + - python >=3.8 + license: Apache-2.0 + license_family: APACHE + size: 60164 + timestamp: 1733203368787 +- conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + sha256: 9f64009cdf5b8e529995f18e03665b03f5d07c0b17445b8badef45bde76249ee + md5: 617f15191456cc6a13db418a275435e5 + depends: + - python >=3.9 + license: MPL-2.0 + license_family: MOZILLA + size: 41075 + timestamp: 1733233471940 +- conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + sha256: bb50f6499e8bc1d1a26f17716c97984671121608dc0c3ecd34858112bce59a27 + md5: 577852c7e53901ddccc7e6a9959ddebe + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 20448 + timestamp: 1733232756001 +- conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.9-h9e4cc4f_0_cpython.conda + sha256: 64fed5178f1e9c8ac0f572ac0ce37955f5dee7b2bcac665202bc14f1f7dd618a + md5: 5665f0079432f8848079c811cdb537d5 + depends: + - __glibc >=2.17,<3.0.a0 + - bzip2 >=1.0.8,<2.0a0 + - ld_impl_linux-64 >=2.36.1 + - libexpat >=2.6.4,<3.0a0 + - libffi >=3.4,<4.0a0 + - libgcc >=13 + - liblzma >=5.6.4,<6.0a0 + - libnsl >=2.0.1,<2.1.0a0 + - libsqlite >=3.48.0,<4.0a0 + - libuuid >=2.38.1,<3.0a0 + - libxcrypt >=4.4.36 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.4.1,<4.0a0 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + constrains: + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Python-2.0 + size: 31581682 + timestamp: 1739521496324 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.9-h1683364_0_cpython.conda + sha256: 0366f38918bceda8ff5917d7bbe1cea2bc8b6c74e7245eb0e4b0d3c2d37f76cf + md5: 2e7ad70254455e0508adabff10218512 + depends: + - bzip2 >=1.0.8,<2.0a0 + - ld_impl_linux-aarch64 >=2.36.1 + - libexpat >=2.6.4,<3.0a0 + - libffi >=3.4,<4.0a0 + - libgcc >=13 + - liblzma >=5.6.4,<6.0a0 + - libnsl >=2.0.1,<2.1.0a0 + - libsqlite >=3.48.0,<4.0a0 + - libuuid >=2.38.1,<3.0a0 + - libxcrypt >=4.4.36 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.4.1,<4.0a0 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + constrains: + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Python-2.0 + size: 13804161 + timestamp: 1739519531794 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.9-hc22306f_0_cpython.conda + sha256: cbf81a78d3ca6e663e827523e6ddbc28369cac488da047a28f83875eb52fe5f6 + md5: 1d105a6c46a753e3c0bab54a1ad24063 + depends: + - __osx >=11.0 + - bzip2 >=1.0.8,<2.0a0 + - libexpat >=2.6.4,<3.0a0 + - libffi >=3.4,<4.0a0 + - liblzma >=5.6.4,<6.0a0 + - libsqlite >=3.48.0,<4.0a0 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.4.1,<4.0a0 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + constrains: + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Python-2.0 + size: 12947786 + timestamp: 1739520092196 +- conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + sha256: a50052536f1ef8516ed11a844f9413661829aa083304dc624c5925298d078d79 + md5: 5ba79d7c71f03c678c8ead841f347d6e + depends: + - python >=3.9 + - six >=1.5 + license: Apache-2.0 + license_family: APACHE + size: 222505 + timestamp: 1733215763718 +- conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda + build_number: 5 + sha256: d10e93d759931ffb6372b45d65ff34d95c6000c61a07e298d162a3bc2accebb0 + md5: 0424ae29b104430108f5218a66db7260 + constrains: + - python 3.12.* *_cpython + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 6238 + timestamp: 1723823388266 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.12-5_cp312.conda + build_number: 5 + sha256: 5ccdad9981753cc4a2d126e356673a21c0cd5b34e209cb8d476a3947d4ad9b39 + md5: 62b20f305498284a07dc6c45fd0e5c87 + constrains: + - python 3.12.* *_cpython + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 6329 + timestamp: 1723823366253 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-5_cp312.conda + build_number: 5 + sha256: 49d624e4b809c799d2bf257b22c23cf3fc4460f5570d9a58e7ad86350aeaa1f4 + md5: b76f9b1c862128e56ac7aa8cd2333de9 + constrains: + - python 3.12.* *_cpython + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 6278 + timestamp: 1723823099686 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.1-py312hbf22597_0.conda + sha256: 90ec0da0317d3d76990a40c61e1709ef859dd3d8c63838bad2814f46a63c8a2e + md5: 7cec8d0dac15a2d9fea8e49879aa779d + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libsodium >=1.0.20,<1.0.21.0a0 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - zeromq >=4.3.5,<4.4.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 382698 + timestamp: 1738271121975 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyzmq-26.2.1-py312h2427ae1_0.conda + sha256: 9558f9330093e5c21b7c04e2e212e19b9b88ad9c808315f12c0765b244018a09 + md5: 0520da8de6870d8ff63e818e927d1524 + depends: + - libgcc >=13 + - libsodium >=1.0.20,<1.0.21.0a0 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - zeromq >=4.3.5,<4.4.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 375156 + timestamp: 1738273130727 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.1-py312hf4875e0_0.conda + sha256: 70d398b334668dc597d33e27847ede1b0829a639b9c91ee845355e52c86c2293 + md5: bfbefdb140b546a80827ff7c9d5ac7b8 + depends: + - __osx >=11.0 + - libcxx >=18 + - libsodium >=1.0.20,<1.0.21.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - zeromq >=4.3.5,<4.4.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 364649 + timestamp: 1738271263898 +- conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda + sha256: 2d6d0c026902561ed77cd646b5021aef2d4db22e57a5b0178dfc669231e06d2c + md5: 283b96675859b20a825f8fa30f311446 + depends: + - libgcc >=13 + - ncurses >=6.5,<7.0a0 + arch: x86_64 + platform: linux + license: GPL-3.0-only + license_family: GPL + size: 282480 + timestamp: 1740379431762 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8382b9d_2.conda + sha256: 54bed3a3041befaa9f5acde4a37b1a02f44705b7796689574bcf9d7beaad2959 + md5: c0f08fc2737967edde1a272d4bf41ed9 + depends: + - libgcc >=13 + - ncurses >=6.5,<7.0a0 + arch: aarch64 + platform: linux + license: GPL-3.0-only + license_family: GPL + size: 291806 + timestamp: 1740380591358 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda + sha256: 7db04684d3904f6151eff8673270922d31da1eea7fa73254d01c437f49702e34 + md5: 63ef3f6e6d6d5c589e64f11263dc5676 + depends: + - ncurses >=6.5,<7.0a0 + arch: arm64 + platform: osx + license: GPL-3.0-only + license_family: GPL + size: 252359 + timestamp: 1740379663071 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-0.2.0-hc8f76dd_10.conda + sha256: a1bde55ceb9dc5bd7879283d0f594a6ce65c07fda3de76230c65a4a5df47858a + md5: 480e915dfc6c592615ef6f217e615aa6 + depends: + - libsentencepiece 0.2.0 h8e10757_10 + - python_abi 3.12.* *_cp312 + - sentencepiece-python 0.2.0 py312hb6b8a2b_10 + - sentencepiece-spm 0.2.0 h8e10757_10 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 19470 + timestamp: 1735628377167 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-0.2.0-h6c1b121_10.conda + sha256: 846d885a560fbb4375b645e7caf2f756ef88bbeb441b670375da0090aaa427fb + md5: 33a89eb1dedae8eb7222b0a89856f337 + depends: + - libsentencepiece 0.2.0 h6164ad9_10 + - python_abi 3.12.* *_cp312 + - sentencepiece-python 0.2.0 py312h197ff68_10 + - sentencepiece-spm 0.2.0 h6164ad9_10 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 19686 + timestamp: 1735628718991 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-0.2.0-h22a84ea_10.conda + sha256: 526c934b897131bd274697649c3b1c492a7d66c03368885a954112468b3c1424 + md5: 346abe448f69949a65473b336856860a + depends: + - libsentencepiece 0.2.0 he13a0af_10 + - python_abi 3.12.* *_cp312 + - sentencepiece-python 0.2.0 py312h155166a_10 + - sentencepiece-spm 0.2.0 he13a0af_10 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 19759 + timestamp: 1735628533490 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-python-0.2.0-py312hb6b8a2b_10.conda + sha256: 37df7fb659564587b950b39c936769d9b5095afb7bc223f42d6248a5540c6567 + md5: 7908b7b977e2e123a5f6a29906f2ce44 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 h8e10757_10 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 2411182 + timestamp: 1735628106455 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-python-0.2.0-py312h197ff68_10.conda + sha256: a7c2c19cc397c7632e2630af49ddcff128f145c93ea493421e6f42bfa5e1d30b + md5: 5642e4545a3cf03e446fb3b3e9fd723b + depends: + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 h6164ad9_10 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 2458076 + timestamp: 1735628298246 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-python-0.2.0-py312h155166a_10.conda + sha256: 2d59614aeafbf54cc718805798c11c2d0a3b4b8d947d1bd81c87c484b4883077 + md5: 6e11367ef670296fce01fc9860be944d + depends: + - __osx >=11.0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 he13a0af_10 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 2433303 + timestamp: 1735628083958 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-spm-0.2.0-h8e10757_10.conda + sha256: 6b55e1121545357d63c3aa0766931720e8aafc52d88641ba7631c8cbaa68c52f + md5: e977b7be5ac26c55825e121e00b90493 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 h8e10757_10 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 89076 + timestamp: 1735628334078 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-spm-0.2.0-h6164ad9_10.conda + sha256: b98fc1028a8e8fbf309af383f9c837290a14e076e6c5533dc251694ea33ffc6e + md5: a4b75936c01dca3f089f02752b7ee325 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 h6164ad9_10 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 85983 + timestamp: 1735628693813 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-spm-0.2.0-he13a0af_10.conda + sha256: b760aeee02e2afbfcce3f559e8a227aa4c94139157b1702fdfb41a057dad0e52 + md5: 9b7300f23cd330da8664cd072c162e5f + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 he13a0af_10 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 83826 + timestamp: 1735628514667 +- conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + sha256: 41db0180680cc67c3fa76544ffd48d6a5679d96f4b71d7498a759e94edc9a2db + md5: a451d576819089b0d672f18768be0f65 + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 16385 + timestamp: 1733381032766 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda + sha256: e0569c9caa68bf476bead1bed3d79650bb080b532c64a4af7d8ca286c08dea4e + md5: d453b98d9c83e71da0741bb0ff4d76bc + depends: + - libgcc-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 + arch: x86_64 + platform: linux + license: TCL + license_family: BSD + size: 3318875 + timestamp: 1699202167581 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda + sha256: 7fa27cc512d3a783f38bd16bbbffc008807372499d5b65d089a8e43bde9db267 + md5: f75105e0585851f818e0009dd1dde4dc + depends: + - libgcc-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 + arch: aarch64 + platform: linux + license: TCL + license_family: BSD + size: 3351802 + timestamp: 1695506242997 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda + sha256: 72457ad031b4c048e5891f3f6cb27a53cb479db68a52d965f796910e71a403a8 + md5: b50a57ba89c32b62428b71a875291c9b + depends: + - libzlib >=1.2.13,<2.0.0a0 + arch: arm64 + platform: osx + license: TCL + license_family: BSD + size: 3145523 + timestamp: 1699202432999 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda + sha256: 062a3a3a37fa8615ce57929ba7e982c76f5a5810bcebd435950f6d6c4147c310 + md5: e417822cb989e80a0d2b1b576fdd1657 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 840414 + timestamp: 1732616043734 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py312h52516f5_0.conda + sha256: 4c19a544354172b2273553267e734795a6da3c78a04c2d19f8e9e159ca3178bc + md5: e28996d9d2d44d777b7e6fb12f63715b + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 841662 + timestamp: 1732616934923 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda + sha256: 964a2705a36c50040c967b18b45b9cc8de3c2aff4af546979a574e0b38e58e39 + md5: fb0605888a475d6a380ae1d1a819d976 + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 842549 + timestamp: 1732616081362 +- conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + sha256: 11e2c85468ae9902d24a27137b6b39b4a78099806e551d390e394a8c34b48e40 + md5: 9efbfdc37242619130ea42b1cc4ed861 + depends: + - colorama + - python >=3.9 + license: MPL-2.0 or MIT + size: 89498 + timestamp: 1735661472632 +- conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + sha256: f39a5620c6e8e9e98357507262a7869de2ae8cc07da8b7f84e517c9fd6c2b959 + md5: 019a7385be9af33791c989871317e1ed + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 110051 + timestamp: 1733367480074 +- conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + sha256: 337be7af5af8b2817f115b3b68870208b30c31d3439bec07bfb2d8f4823e3568 + md5: d17f13df8b65464ca316cbc000a3cb64 + depends: + - python >=3.9 + license: PSF-2.0 + license_family: PSF + size: 39637 + timestamp: 1733188758212 +- conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + sha256: c4b1ae8a2931fe9b274c44af29c5475a85b37693999f8c792dad0f8c6734b1de + md5: dbcace4706afdfb7eb891f7b37d07c04 + license: LicenseRef-Public-Domain + size: 122921 + timestamp: 1737119101255 +- conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda + sha256: a4dc72c96848f764bb5a5176aa93dd1e9b9e52804137b99daeebba277b31ea10 + md5: 3947a35e916fcc6b9825449affbf4214 + depends: + - __glibc >=2.17,<3.0.a0 + - krb5 >=1.21.3,<1.22.0a0 + - libgcc >=13 + - libsodium >=1.0.20,<1.0.21.0a0 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: MPL-2.0 + license_family: MOZILLA + size: 335400 + timestamp: 1731585026517 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zeromq-4.3.5-h5efb499_7.conda + sha256: a6003096dc0570a86492040ba32b04ce7662b159600be2252b7a0dfb9414e21c + md5: f2f3282559a4b87b7256ecafb4610107 + depends: + - krb5 >=1.21.3,<1.22.0a0 + - libgcc >=13 + - libsodium >=1.0.20,<1.0.21.0a0 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: MPL-2.0 + license_family: MOZILLA + size: 371419 + timestamp: 1731589490850 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda + sha256: 9e585569fe2e7d3bea71972cd4b9f06b1a7ab8fa7c5139f92a31cbceecf25a8a + md5: f7e6b65943cb73bce0143737fded08f1 + depends: + - __osx >=11.0 + - krb5 >=1.21.3,<1.22.0a0 + - libcxx >=18 + - libsodium >=1.0.20,<1.0.21.0a0 + arch: arm64 + platform: osx + license: MPL-2.0 + license_family: MOZILLA + size: 281565 + timestamp: 1731585108039 +- conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + sha256: 567c04f124525c97a096b65769834b7acb047db24b15a56888a322bf3966c3e1 + md5: 0c3cc595284c5e8f0f9900a9b228a332 + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 21809 + timestamp: 1732827613585 diff --git a/examples/inference/bert-c-torchscript/magic.lock b/examples/inference/bert-c-torchscript/magic.lock new file mode 100644 index 0000000000..d732b1f8d7 --- /dev/null +++ b/examples/inference/bert-c-torchscript/magic.lock @@ -0,0 +1,7455 @@ +version: 6 +environments: + default: + channels: + - url: https://conda.anaconda.org/conda-forge/ + - url: https://conda.modular.com/max-nightly/ + - url: https://conda.anaconda.org/pytorch/ + indexes: + - https://pypi.org/simple + - https://download.pytorch.org/whl/cpu + packages: + linux-64: + - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_kmp_llvm.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.13-py312h178313f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.1.0-pyh71513ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.1-h205f482_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.1-h1a47875_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.10.6-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.3.0-h4e1184b_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.0-h7959bf6_11.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.2-hefd7a92_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-h173a860_6.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h11f4f37_12.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.9-he1b24dc_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.2-h4e1184b_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-h4e1184b_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.9-he0e7f3f_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.489-h4d475cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.10.0-h113e628_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.13.0-h3cf044e_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-common-cpp-12.8.0-h736e048_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-files-datalake-cpp-12.12.0-ha633028_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/blas-2.116-mkl.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/blas-devel-3.9.0-16_linux64_mkl.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py312h2ec8cdc_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.4-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2025.1.31-hbcca054_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.1.31-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cmake-3.31.6-h74e3db0_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.12.9-py312hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-cudart-12.4.127-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cuda-cudart_linux-64-12.4.127-h85509e4_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-cupti-12.4.127-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-libraries-12.4.1-ha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-nvrtc-12.4.127-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-nvtx-12.4.127-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-opencl-12.4.127-he02047a_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cuda-runtime-12.4.1-ha804496_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cuda-version-12.4-h3060b56_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-3.3.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.8-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/frozenlist-1.5.0-py312h178313f_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.12.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gflags-2.2.2-h5888daf_1005.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/glog-0.7.1-hbabe93e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gmp-6.3.0-hac33072_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gmpy2-2.1.5-py312h7201bc8_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.29.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-19.0.1-hfa2a6e7_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-19.0.1-hcb10f89_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-19.0.1-hcb10f89_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-19.0.1-h08228c5_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-16_linux64_mkl.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.1.0-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-16_linux64_mkl.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcrc32c-1.1.2-h9c3ff4c_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcublas-12.4.5.8-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcufft-11.2.1.3-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcufile-1.9.1.3-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcurand-10.3.5.147-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.12.1-h332b0f4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcusolver-11.6.1.9-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcusparse-12.3.1.170-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libevent-2.1.12-hf998b51_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h767d61c_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-ng-14.2.0-h69a702a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hf1ad2bd_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.35.0-h2b5623c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.35.0-h0121fbd_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.67.1-h25350d4_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libhwloc-2.11.2-default_h0d58e46_1001.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h4ce23a2_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-16_linux64_mkl.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapacke-3.9.0-16_linux64_mkl.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnpp-12.2.5.30-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnvfatbin-12.4.127-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnvjitlink-12.4.127-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnvjpeg-12.3.1.117-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-1.18.0-hfcad708_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-headers-1.18.0-ha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-19.0.1-h081d1f1_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsentencepiece-0.2.0-h8e10757_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.49.1-hee588c1_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hf672d98_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-h8f9b012_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libthrift-0.21.0-h0e7cc3e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.10.0-h4c51ac1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.50.0-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.6-h8d12d68_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/llvm-openmp-15.0.7-h0cdce71_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.10.0-h5888daf_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-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022718-release.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-2022.1.0-h84fe81f_915.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-devel-2022.1.0-ha770c72_916.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-include-2022.1.0-h84fe81f_915.tar.bz2 + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022718-release.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/mpc-1.3.1-h24ddda3_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/mpfr-4.2.1-h90cbb55_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mpmath-1.3.0-pyhd8ed1ab_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.16-py312h66e93f0_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-h2d0b736_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/nlohmann_json-3.11.3-he02047a_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ocl-icd-2.3.2-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/opencl-headers-2024.10.24-h5888daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.1-h7b32b05_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/orc-2.0.3-h12ee42a_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.3-py312hf9745cd_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/prometheus-cpp-1.3.0-ha5d0236_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.1-py312h178313f_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-19.0.1-py312h7900ff3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-19.0.1-py312h01725c0_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.9-h9e4cc4f_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-xxhash-3.5.0-py312h66e93f0_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda + - conda: https://conda.anaconda.org/pytorch/linux-64/pytorch-2.5.1-py3.12_cuda12.4_cudnn9.1.0_0.tar.bz2 + - conda: https://conda.anaconda.org/pytorch/linux-64/pytorch-cuda-12.4-hc786d27_7.tar.bz2 + - conda: https://conda.anaconda.org/pytorch/noarch/pytorch-mutex-1.0-cuda.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py312h178313f_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.1-py312hbf22597_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/re2-2024.07.02-h9925aae_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda + - 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/linux-64/rhash-1.4.5-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/s2n-1.5.11-h072c03f_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/safetensors-0.5.3-py312h12e396e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-0.2.0-hc8f76dd_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-python-0.2.0-py312hb6b8a2b_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-spm-0.2.0-h8e10757_10.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-h8bd8927_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sympy-1.13.3-pyh2585a3b_105.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tbb-2021.13.0-hceb3a55_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.21.0-py312h8360d73_0.conda + - conda: https://conda.anaconda.org/pytorch/linux-64/torchtriton-3.1.0-py312.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.49.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xxhash-0.8.3-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.18.3-py312h178313f_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.1-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb8e6e7a_1.conda + linux-aarch64: + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.13-py312hcc812fe_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.1.0-pyh71513ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.1-hb7ec8d5_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.1-h740c5af_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-common-0.10.6-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-compression-0.3.0-h0f0193d_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-event-stream-0.5.0-hcbd8f92_11.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.2-h3df160d_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-hfd5ba81_6.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h5f50e26_12.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.9-h05b070f_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.2-h0f0193d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h0f0193d_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.9-hab3ce66_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.489-h88461e4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-core-cpp-1.14.0-h1887c18_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-identity-cpp-1.10.0-h47b0b28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-blobs-cpp-12.13.0-h185ecfd_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-common-cpp-12.8.0-h1b94036_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-files-datalake-cpp-12.12.0-h37d6d07_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/brotli-python-1.1.0-py312h6f74592_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h68df207_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/c-ares-1.34.4-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2025.1.31-hcefe29a_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.1.31-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cmake-3.31.6-h0efca9c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-3.3.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.8-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/frozenlist-1.5.0-py312hcc812fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.12.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gflags-2.2.2-h5ad3122_1005.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/glog-0.7.1-h468a4a4_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.29.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/keyutils-1.6.1-h4e544f5_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/krb5-1.21.3-h50a48e9_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h18dbdb1_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-19.0.1-h36213f4_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-19.0.1-h3b568fd_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-19.0.1-h3b568fd_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-19.0.1-h1e9d426_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-31_h1a9f1db_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlicommon-1.1.0-h86ecc28_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlidec-1.1.0-h86ecc28_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlienc-1.1.0-h86ecc28_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-31_hab92f65_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcrc32c-1.1.2-h01db608_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcurl-8.12.1-h6702fde_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20250104-pl5321h976ea20_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libev-4.33-h31becfc_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libevent-2.1.12-h4ba1bb4_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.6.4-h5ad3122_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.4.6-he21f813_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-14.2.0-he277a41_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-14.2.0-he9431aa_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-2.35.0-hccf9d24_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-storage-2.35.0-hb9b2b65_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgrpc-1.67.1-hf7ccdd3_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libiconv-1.18-hc99b53d_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-31_h411afd4_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.4-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnghttp2-1.64.0-hc8609a4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.29-pthreads_h9d3fd7e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopentelemetry-cpp-1.18.0-h60b47f9_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopentelemetry-cpp-headers-1.18.0-h8af1aa0_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-19.0.1-hfc78867_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.3-h44a3b7b_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsentencepiece-0.2.0-h6164ad9_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.20-h68df207_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.49.1-h5eb1b54_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libssh2-1.11.1-ha41c0db_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libthrift-0.21.0-h154c74f_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.10.0-ha346350_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuv-1.50.0-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.6-h2e0c361_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.10.0-h5ad3122_1.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022718-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.16-py312hb2c0f52_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-ha32ae93_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/nlohmann_json-3.11.3-h0a1ffab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.1-hd08dc88_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/orc-2.0.3-hdd485aa_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pandas-2.2.3-py312ha2895bd_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/prometheus-cpp-1.3.0-h7938499_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.2.1-py312hcc812fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-19.0.1-py312h8025657_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-19.0.1-py312h66f7834_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.9-h1683364_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-xxhash-3.5.0-py312h52516f5_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.12-5_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyyaml-6.0.2-py312hcc812fe_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyzmq-26.2.1-py312h2427ae1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/re2-2024.07.02-haa97905_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8382b9d_2.conda + - 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/linux-aarch64/rhash-1.4.5-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/s2n-1.5.11-h3caee7a_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/safetensors-0.5.3-py312h8cbf658_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-0.2.0-h6c1b121_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-python-0.2.0-py312h197ff68_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-spm-0.2.0-h6164ad9_10.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-hd4fb6f5_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.21.0-py312ha0d6ea1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py312h52516f5_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.49.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xxhash-0.8.3-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yaml-0.2.5-hf897c2e_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.18.3-py312hcc812fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zeromq-4.3.5-h5efb499_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zlib-1.3.1-h86ecc28_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.7-hbcf94c1_1.conda + - pypi: https://download.pytorch.org/whl/Jinja2-3.1.4-py3-none-any.whl#sha256=bc5dd2abb727a5319567b7a813e6a2e7318c39f4f487cfe6c89c6f9c7d25197d + - pypi: https://download.pytorch.org/whl/MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl#sha256=ac07bad82163452a6884fe8fa0963fb98c2346ba78d779ec06bd7a6262132aee + - pypi: https://download.pytorch.org/whl/mpmath-1.3.0-py3-none-any.whl#sha256=a0b2b9fe80bbcd81a6647ff13108738cfb482d481d826cc0e02f5b35e5c88d2c + - pypi: https://download.pytorch.org/whl/networkx-3.3-py3-none-any.whl#sha256=28575580c6ebdaf4505b22c6256a2b9de86b316dc63ba9e93abde3d78dfdbcf2 + - pypi: https://download.pytorch.org/whl/setuptools-70.2.0-py3-none-any.whl#sha256=b8b8060bb426838fbe942479c90296ce976249451118ef566a5a0b7d8b78fb05 + - pypi: https://download.pytorch.org/whl/sympy-1.13.1-py3-none-any.whl#sha256=db36cdc64bf61b9b24578b6f7bab1ecdd2452cf008f34faa33776680c26d66f8 + - pypi: https://download.pytorch.org/whl/cpu/torch-2.5.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl#sha256=36d1be99281b6f602d9639bd0af3ee0006e7aab16f6718d86f709d395b6f262c + osx-arm64: + - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.13-py312h998013c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.1.0-pyh71513ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.1-hfc2798a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.1-hc8a0bd2_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.10.6-h5505292_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-compression-0.3.0-hc8a0bd2_5.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.0-h54f970a_11.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.2-h96aa502_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-haba67d1_6.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h24f418c_12.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.9-hf37e03c_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.2-hc8a0bd2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-hc8a0bd2_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.9-ha81f72f_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.489-h0e5014b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.14.0-hd50102c_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.10.0-hc602bab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-blobs-cpp-12.13.0-h7585a09_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-common-cpp-12.8.0-h9ca1f76_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-files-datalake-cpp-12.12.0-hcdd55da_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py312hde4cb15_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.4-h5505292_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2025.1.31-hf0a4a13_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.1.31-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cmake-3.31.6-ha25475f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.12.9-py312hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-3.3.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.8-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/frozenlist-1.5.0-py312h998013c_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.12.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gflags-2.2.2-hf9b8971_1005.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/glog-0.7.1-heb240a5_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gmp-6.3.0-h7bae524_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gmpy2-2.1.5-py312h524cf62_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.29.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_h07bc746_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-19.0.1-h0945df6_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-19.0.1-hf07054f_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-19.0.1-hf07054f_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-19.0.1-h4239455_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-19_osxarm64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.1.0-hd74edd7_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.1.0-hd74edd7_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlienc-1.1.0-hd74edd7_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-19_osxarm64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcrc32c-1.1.2-hbdafb3b_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.12.1-h73640d1_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libev-4.33-h93a5062_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libevent-2.1.12-h2757513_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.4-h286801f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-2.35.0-hdbe95d5_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-storage-2.35.0-h7081f7f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgrpc-1.67.1-h0a426d6_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.18-hfe07756_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-19_osxarm64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.4-h39f12f2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.64.0-h6d7220d_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.24-openmp_hd76b1f2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopentelemetry-cpp-1.18.0-h0c05b2d_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopentelemetry-cpp-headers-1.18.0-hce30654_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-19.0.1-h636d7b7_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.3-h3bd63a1_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h07bc746_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsentencepiece-0.2.0-he13a0af_10.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.1-h3f77e49_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.1-h9cc3647_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libthrift-0.21.0-h64651cc_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.10.0-hda25de7_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libuv-1.50.0-h5505292_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.6-hce475f1_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-15.0.7-h7cfbb63_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.10.0-h286801f_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-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022718-release.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/mpc-1.3.1-h8f1351a_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/mpfr-4.2.1-hb693164_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mpmath-1.3.0-pyhd8ed1ab_1.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.16-py312h024a12e_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/osx-arm64/ncurses-6.5-h5e97a16_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/nlohmann_json-3.11.3-h00cdb27_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.1-h81ee809_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/orc-2.0.3-h0ff2369_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.3-py312hcd31e36_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/prometheus-cpp-1.3.0-h0967b3e_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.1-py312h998013c_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-19.0.1-py312h1f38498_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-19.0.1-py312hc40f475_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.9-hc22306f_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-xxhash-3.5.0-py312hea69d52_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-5_cp312.conda + - conda: https://conda.anaconda.org/pytorch/osx-arm64/pytorch-2.5.1-py3.12_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py312h998013c_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.1-py312hf4875e0_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/re2-2024.07.02-h6589ca4_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda + - 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/osx-arm64/rhash-1.4.5-h7ab814d_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/safetensors-0.5.3-py312hcd83bfe_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-0.2.0-h22a84ea_10.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-python-0.2.0-py312h155166a_10.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-spm-0.2.0-he13a0af_10.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-h98b9ce2_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sympy-1.13.3-pyh2585a3b_105.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.21.0-py312hf3e4074_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.49.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xxhash-0.8.3-h5505292_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.18.3-py312h998013c_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zlib-1.3.1-h8359307_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.7-h6491c7d_1.conda +packages: +- conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 + sha256: fe51de6107f9edc7aa4f786a70f4a883943bc9d39b3bb7307c04c41410990726 + md5: d7c89558ba9fa0495403155b64376d81 + arch: x86_64 + platform: linux + license: None + purls: [] + size: 2562 + timestamp: 1578324546067 +- conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_kmp_llvm.tar.bz2 + build_number: 2 + sha256: 84a66275da3a66e3f3e70e9d8f10496d807d01a9e4ec16cd2274cc5e28c478fc + md5: 562b26ba2e19059551a811e72ab7f793 + depends: + - _libgcc_mutex 0.1 conda_forge + - llvm-openmp >=9.0.1 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 5744 + timestamp: 1650742457817 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2 + build_number: 16 + sha256: 3702bef2f0a4d38bd8288bbe54aace623602a1343c2cfbefd3fa188e015bebf0 + md5: 6168d71addc746e8f2b8d57dfd2edcea + depends: + - libgomp >=7.5.0 + constrains: + - openmp_impl 9999 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 23712 + timestamp: 1650670790230 +- conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.6-pyhd8ed1ab_0.conda + sha256: a2a5579be9fb21f9397f51a4ba09599782c93e9117951a5105d8ee4b80d648c1 + md5: 5b7d3ceeb36e8e6783eae78acd4c18e1 + depends: + - python >=3.9 + license: PSF-2.0 + license_family: PSF + purls: + - pkg:pypi/aiohappyeyeballs?source=compressed-mapping + size: 19236 + timestamp: 1739175837817 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.13-py312h178313f_0.conda + sha256: 985834edea972ddf6c35ab4185fb228440efb845a70a88182895f8f90df4a4c9 + md5: 0ea623ee1f29a7e1d703bc3b0ef82306 + depends: + - __glibc >=2.17,<3.0.a0 + - aiohappyeyeballs >=2.3.0 + - aiosignal >=1.1.2 + - attrs >=17.3.0 + - frozenlist >=1.1.1 + - libgcc >=13 + - multidict >=4.5,<7.0 + - propcache >=0.2.0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - yarl >=1.17.0,<2.0 + arch: x86_64 + platform: linux + license: MIT AND Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/aiohttp?source=hash-mapping + size: 915558 + timestamp: 1740482064204 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.13-py312hcc812fe_0.conda + sha256: ca1fa0450decaca810db4b9f5ff1dd00c710fd89767c764a771b5d4ce7a152b0 + md5: 7e952a2d83ebfb371515c010acc110c7 + depends: + - aiohappyeyeballs >=2.3.0 + - aiosignal >=1.1.2 + - attrs >=17.3.0 + - frozenlist >=1.1.1 + - libgcc >=13 + - multidict >=4.5,<7.0 + - propcache >=0.2.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - yarl >=1.17.0,<2.0 + arch: aarch64 + platform: linux + license: MIT AND Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/aiohttp?source=hash-mapping + size: 904149 + timestamp: 1740481643315 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.13-py312h998013c_0.conda + sha256: 84f8c35912bce8c9ee979454a685ec0497fbccd7da86351e8d774ae3e7456055 + md5: d575ea7d96ce2c9fed370d85d3ef464e + depends: + - __osx >=11.0 + - aiohappyeyeballs >=2.3.0 + - aiosignal >=1.1.2 + - attrs >=17.3.0 + - frozenlist >=1.1.1 + - multidict >=4.5,<7.0 + - propcache >=0.2.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - yarl >=1.17.0,<2.0 + arch: arm64 + platform: osx + license: MIT AND Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/aiohttp?source=hash-mapping + size: 885919 + timestamp: 1740482022806 +- conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda + sha256: 7de8ced1918bbdadecf8e1c1c68237fe5709c097bd9e0d254f4cad118f4345d0 + md5: 1a3981115a398535dbe3f6d5faae3d36 + depends: + - frozenlist >=1.1.0 + - python >=3.9 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/aiosignal?source=hash-mapping + size: 13229 + timestamp: 1734342253061 +- conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.1.0-pyh71513ae_0.conda + sha256: 1f267886522dfb9ae4e5ebbc3135b5eb13cff27bdbfe8d881a4d893459166ab4 + md5: 2cc3f588512f04f3a0c64b4e9bedc02d + depends: + - python >=3.9 + license: MIT + license_family: MIT + purls: + - pkg:pypi/attrs?source=compressed-mapping + size: 56370 + timestamp: 1737819298139 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.1-h205f482_0.conda + sha256: ebe5e33249f37f6bb481de99581ebdc92dbfcf1b6915609bcf3c9e78661d6352 + md5: 9c500858e88df50af3cc883d194de78a + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 108111 + timestamp: 1737509831651 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.1-hb7ec8d5_0.conda + sha256: e1e6c9267a4d9af30b1d28c11a9041b17b7840ff83ef08614145a2a4f444f5b4 + md5: 2630f030652970a5531e492f6b2a6dd3 + depends: + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 + - libgcc >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 112658 + timestamp: 1737509863269 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.1-hfc2798a_0.conda + sha256: 5a60d196a585b25d1446fb973009e4e648e8d70beaa2793787243ede6da0fd9a + md5: 0abd67c0f7b60d50348fbb32fef50b65 + depends: + - __osx >=11.0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 92562 + timestamp: 1737509877079 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.1-h1a47875_3.conda + sha256: 095ac824ea9303eff67e04090ae531d9eb33d2bf8f82eaade39b839c421e16e8 + md5: 55a8561fdbbbd34f50f57d9be12ed084 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + - openssl >=3.3.1,<4.0a0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 47601 + timestamp: 1733991564405 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.1-h740c5af_3.conda + sha256: c5c7961d48ca7320ed3560c036f7aa5244df4b85d9657f70aacc5faba3e1509a + md5: 57ed2c445d7ef01d121b9bcea0522913 + depends: + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + - openssl >=3.3.1,<4.0a0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 50036 + timestamp: 1733991581303 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.1-hc8a0bd2_3.conda + sha256: 1f44be36e1daa17b4b081debb8aee492d13571084f38b503ad13e869fef24fe4 + md5: 8b0ce61384e5a33d2b301a64f3d22ac5 + depends: + - __osx >=11.0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - openssl >=3.3.1,<4.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 39925 + timestamp: 1733991649383 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.10.6-hb9d3cd8_0.conda + sha256: 496e92f2150fdc351eacf6e236015deedb3d0d3114f8e5954341cbf9f3dda257 + md5: d7d4680337a14001b0e043e96529409b + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 236574 + timestamp: 1733975453350 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-common-0.10.6-h86ecc28_0.conda + sha256: 57288ec5df35781bea8fc6a8c9099cad6695b747784fc1b8862a0f9e5b3bf5ab + md5: fef806a0f6de853670c746bbece01966 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 259031 + timestamp: 1733975520465 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.10.6-h5505292_0.conda + sha256: 3bde135c8e74987c0f79ecd4fa17ec9cff0d658b3090168727ca1af3815ae57a + md5: 145e5b4c9702ed279d7d68aaf096f77d + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 221863 + timestamp: 1733975576886 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.3.0-h4e1184b_5.conda + sha256: 62ca84da83585e7814a40240a1e750b1563b2680b032a471464eccc001c3309b + md5: 3f4c1197462a6df2be6dc8241828fe93 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 19086 + timestamp: 1733991637424 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-compression-0.3.0-h0f0193d_5.conda + sha256: 3f05d19f68ef800f33d44ea2a4211003124076516c8469abc7d432236344df53 + md5: 3a1421d12435df5b4c412cc4c8fac64d + depends: + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 19740 + timestamp: 1733991625201 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-compression-0.3.0-hc8a0bd2_5.conda + sha256: 47b2813f652ce7e64ac442f771b2a5f7d4af4ad0d07ff51f6075ea80ed2e3f09 + md5: a8b6c17732d14ed49d0e9b59c43186bc + depends: + - __osx >=11.0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 18068 + timestamp: 1733991869211 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.0-h7959bf6_11.conda + sha256: 10d7240c7db0c941fb1a59c4f8ea6689a434b03309ee7b766fa15a809c553c02 + md5: 9b3fb60fe57925a92f399bc3fc42eccf + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 54003 + timestamp: 1734024480949 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-event-stream-0.5.0-hcbd8f92_11.conda + sha256: 79aa363c71c891a27496c0498f8d498b2ddc87b3ccb3b6c9da5b50b05936ebb8 + md5: e0772c59af4243a9b2565baa5d79e5b6 + depends: + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + - libgcc >=13 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 55207 + timestamp: 1734024546663 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.0-h54f970a_11.conda + sha256: f0667935f4e0d4c25e0e51da035640310b5ceeb8f723156734439bde8b848d7d + md5: ba41238f8e653998d7d2f42e3a8db054 + depends: + - __osx >=11.0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + - libcxx >=18 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 47078 + timestamp: 1734024749727 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.2-hefd7a92_4.conda + sha256: 4a330206bd51148f6c13ca0b7a4db40f29a46f090642ebacdeb88b8a4abd7f99 + md5: 5ce4df662d32d3123ea8da15571b6f51 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-compression >=0.3.0,<0.3.1.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 197731 + timestamp: 1734008380764 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.2-h3df160d_4.conda + sha256: 3a1d2d332945306be9d49e569b95e4cc172d825f10e88715513a172f28ebb59e + md5: 28f00aa7fd9556c4c461328cf146c20b + depends: + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-compression >=0.3.0,<0.3.1.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - libgcc >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 190586 + timestamp: 1734008442362 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.2-h96aa502_4.conda + sha256: 22e4737c8a885995b7c1ae1d79c1f6e78d489e16ec079615980fdde067aeaf76 + md5: 495c93a4f08b17deb3c04894512330e6 + depends: + - __osx >=11.0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-compression >=0.3.0,<0.3.1.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 152983 + timestamp: 1734008451473 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-h173a860_6.conda + sha256: 335d822eead0a097ffd23677a288e1f18ea22f47a92d4f877419debb93af0e81 + md5: 9a063178f1af0a898526cc24ba7be486 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + - s2n >=1.5.11,<1.5.12.0a0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 157263 + timestamp: 1737207617838 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-hfd5ba81_6.conda + sha256: d8adfde05cee11057d99c3802e84b2300430a7c7c3c9936165d1d4b25ef59d91 + md5: 4e6771b45cb2b035c62d023dbf0dc000 + depends: + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + - s2n >=1.5.11,<1.5.12.0a0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 160933 + timestamp: 1737207637279 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-haba67d1_6.conda + sha256: 73722dd175af78b6cbfa033066f0933351f5382a1a737f6c6d9b8cfa84022161 + md5: d02e8f40ff69562903e70a1c6c48b009 + depends: + - __osx >=11.0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 136048 + timestamp: 1737207681224 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h11f4f37_12.conda + sha256: 512d3969426152d9d5fd886e27b13706122dc3fa90eb08c37b0d51a33d7bb14a + md5: 96c3e0221fa2da97619ee82faa341a73 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 194672 + timestamp: 1734025626798 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h5f50e26_12.conda + sha256: ffeb9100cc8fd4093e1a6fdfd938bc4a396dd77480b7fb17aa42855a4d5e2c70 + md5: 031ca33115d4b1eeb43f435d6215778c + depends: + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - libgcc >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 169516 + timestamp: 1734025167885 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h24f418c_12.conda + sha256: 96575ea1dd2a9ea94763882e40a66dcbff9c41f702bf37c9514c4c719b3c11dd + md5: c072045a6206f88015d02fcba1705ea1 + depends: + - __osx >=11.0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 134371 + timestamp: 1734025379525 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.9-he1b24dc_1.conda + sha256: 15fbdedc56850f8be5be7a5bcaea1af09c97590e631c024ae089737fc932fc42 + md5: caafc32928a5f7f3f7ef67d287689144 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-auth >=0.8.1,<0.8.2.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + - libgcc >=13 + - openssl >=3.4.0,<4.0a0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 115413 + timestamp: 1737558687616 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.9-h05b070f_1.conda + sha256: 9e7857fbc33eddc291fa09890ce468a92485d3e3e127bc00bbd1803e34121f84 + md5: e0a2869195f069db88b8932f5b00bee5 + depends: + - aws-c-auth >=0.8.1,<0.8.2.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + - libgcc >=13 + - openssl >=3.4.0,<4.0a0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 117875 + timestamp: 1737558720047 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.9-hf37e03c_1.conda + sha256: 92e8ca4eefcbbdf4189584c9410382884a06ed3030e5ecaac656dab8c95e6a80 + md5: de65f5e4ab5020103fe70a0eba9432a0 + depends: + - __osx >=11.0 + - aws-c-auth >=0.8.1,<0.8.2.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 98731 + timestamp: 1737558731831 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.2-h4e1184b_0.conda + sha256: 0424e380c435ba03b5948d02e8c958866c4eee50ed29e57f99473a5f795a4cfc + md5: dcd498d493818b776a77fbc242fbf8e4 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 55911 + timestamp: 1736535960724 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.2-h0f0193d_0.conda + sha256: fba38e469457764afcb94aa84d4d7788e6b5fa1554d34b05c904d2245fdd3c81 + md5: a78928881c652facde2a13ec6e776f3c + depends: + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 58221 + timestamp: 1736536003041 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.2-hc8a0bd2_0.conda + sha256: ea4f0f1e99056293c69615f581a997d65ba7e229e296e402e0d8ef750648a5b5 + md5: e7b5498ac7b7ab921a907be38f3a8080 + depends: + - __osx >=11.0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 49872 + timestamp: 1736536152332 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-h4e1184b_4.conda + sha256: 1ed9a332d06ad595694907fad2d6d801082916c27cd5076096fda4061e6d24a8 + md5: 74e8c3e4df4ceae34aa2959df4b28101 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 72762 + timestamp: 1733994347547 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h0f0193d_4.conda + sha256: 9f1e3635a587bcf92b61d88c7af7d24cd89c147c6d0ae58afbde08e65bcf48da + md5: 3bd35b0adab3d743f09e0252cc441d6b + depends: + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 72154 + timestamp: 1733994384415 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-hc8a0bd2_4.conda + sha256: 215086d95e8ff1d3fcb0197ada116cc9d7db1fdae7573f5e810d20fa9215b47c + md5: e70e88a357a3749b67679c0788c5b08a + depends: + - __osx >=11.0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 70186 + timestamp: 1733994496998 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.9-he0e7f3f_2.conda + sha256: c1930569713bd5231d48d885a5e3707ac917b428e8f08189d14064a2bb128adc + md5: 8a4e6fc8a3b285536202b5456a74a940 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-auth >=0.8.1,<0.8.2.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-event-stream >=0.5.0,<0.5.1.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-c-mqtt >=0.11.0,<0.11.1.0a0 + - aws-c-s3 >=0.7.9,<0.7.10.0a0 + - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 353222 + timestamp: 1737565463079 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.9-hab3ce66_2.conda + sha256: c3884fb10e0fd9be5c13256cabcda1afa9d2fcf8878c67214d02fc344509857d + md5: 875968ebffe992b68faf2caebbf32f02 + depends: + - aws-c-auth >=0.8.1,<0.8.2.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-event-stream >=0.5.0,<0.5.1.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-c-mqtt >=0.11.0,<0.11.1.0a0 + - aws-c-s3 >=0.7.9,<0.7.10.0a0 + - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 + - libgcc >=13 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 283812 + timestamp: 1737565480034 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.9-ha81f72f_2.conda + sha256: ed5f1d19aad53787fdebe13db4709c97eae2092536cc55d3536eba320c4286e1 + md5: c9c034d3239bf25687ca4dd985007ecd + depends: + - __osx >=11.0 + - aws-c-auth >=0.8.1,<0.8.2.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-event-stream >=0.5.0,<0.5.1.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-c-mqtt >=0.11.0,<0.11.1.0a0 + - aws-c-s3 >=0.7.9,<0.7.10.0a0 + - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 + - libcxx >=18 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 235976 + timestamp: 1737565563139 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.489-h4d475cb_0.conda + sha256: 08d6b7d2ed17bfcc7deb903c7751278ee434abdb27e3be0dceb561f30f030c75 + md5: b775e9f46dfa94b228a81d8e8c6d8b1d + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-event-stream >=0.5.0,<0.5.1.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + - aws-crt-cpp >=0.29.9,<0.29.10.0a0 + - libcurl >=8.11.1,<9.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 3144364 + timestamp: 1737576036746 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.489-h88461e4_0.conda + sha256: 88353e82b053763168cddbe2f88048defc1c97b3dad0966fbe8c4fa7aa592c7e + md5: e725d8fa77a6a5f38a78c5de914a5f40 + depends: + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-event-stream >=0.5.0,<0.5.1.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + - aws-crt-cpp >=0.29.9,<0.29.10.0a0 + - libcurl >=8.11.1,<9.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 3015109 + timestamp: 1737575993030 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.489-h0e5014b_0.conda + sha256: d82451530ddf363d8bb31a8a7391bb9699f745e940ace91d78c0e6170deef03c + md5: 156cfb45a1bb8cffc81e59047bb34f51 + depends: + - __osx >=11.0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-event-stream >=0.5.0,<0.5.1.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + - aws-crt-cpp >=0.29.9,<0.29.10.0a0 + - libcurl >=8.11.1,<9.0a0 + - libcxx >=18 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 2874126 + timestamp: 1737577023623 +- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda + sha256: fe07debdb089a3db17f40a7f20d283d75284bb4fc269ef727b8ba6fc93f7cb5a + md5: 0a8838771cc2e985cd295e01ae83baf1 + depends: + - __glibc >=2.17,<3.0.a0 + - libcurl >=8.10.1,<9.0a0 + - libgcc >=13 + - libstdcxx >=13 + - openssl >=3.3.2,<4.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 345117 + timestamp: 1728053909574 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-core-cpp-1.14.0-h1887c18_0.conda + sha256: 8967b3ccee4d74e61f6ec82dd8efb9deb854ee7ba012dfe767b7a92e0ac77724 + md5: e0c3a906a41be769f0ae20ca3e31cfc0 + depends: + - libcurl >=8.10.1,<9.0a0 + - libgcc >=13 + - libstdcxx >=13 + - openssl >=3.3.2,<4.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 338650 + timestamp: 1728055589907 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.14.0-hd50102c_0.conda + sha256: f5b91329ed59ffc0be8747784c6e4cc7e56250c54032883a83bc11808ef6a87e + md5: f093a11dcf3cdcca010b20a818fcc6dc + depends: + - __osx >=11.0 + - libcurl >=8.10.1,<9.0a0 + - libcxx >=17 + - openssl >=3.3.2,<4.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 294299 + timestamp: 1728054014060 +- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.10.0-h113e628_0.conda + sha256: 286b31616c191486626cb49e9ceb5920d29394b9e913c23adb7eb637629ba4de + md5: 73f73f60854f325a55f1d31459f2ab73 + depends: + - __glibc >=2.17,<3.0.a0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - libgcc >=13 + - libstdcxx >=13 + - openssl >=3.3.2,<4.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 232351 + timestamp: 1728486729511 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-identity-cpp-1.10.0-h47b0b28_0.conda + sha256: 1c72423b9beba167d2f01b80dc204da77240a8266f1edb3d89510c852b300d69 + md5: 94e73a7877743a85c57091d8afab2348 + depends: + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - libgcc >=13 + - libstdcxx >=13 + - openssl >=3.3.2,<4.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 217132 + timestamp: 1728488096615 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.10.0-hc602bab_0.conda + sha256: bde446b916fff5150606f8ed3e6058ffc55a3aa72381e46f1ab346590b1ae40a + md5: d7b71593a937459f2d4b67e1a4727dc2 + depends: + - __osx >=11.0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - libcxx >=17 + - openssl >=3.3.2,<4.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 166907 + timestamp: 1728486882502 +- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.13.0-h3cf044e_1.conda + sha256: 2606260e5379eed255bcdc6adc39b93fb31477337bcd911c121fc43cd29bf394 + md5: 7eb66060455c7a47d9dcdbfa9f46579b + depends: + - __glibc >=2.17,<3.0.a0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 549342 + timestamp: 1728578123088 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-blobs-cpp-12.13.0-h185ecfd_1.conda + sha256: 280ec70009a92626054f58e45b168fce393e71a9710587488bd8401628cda481 + md5: 221e1e5ecb2643e113f32b3229d5ba33 + depends: + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 + - libgcc >=13 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 502934 + timestamp: 1728580241002 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-blobs-cpp-12.13.0-h7585a09_1.conda + sha256: 08d52d130addc0fb55d5ba10d9fa483e39be25d69bac7f4c676c2c3069207590 + md5: 704238ef05d46144dae2e6b5853df8bc + depends: + - __osx >=11.0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 + - libcxx >=17 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 438636 + timestamp: 1728578216193 +- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-common-cpp-12.8.0-h736e048_1.conda + sha256: 273475f002b091b66ce7366da04bf164c3732c03f8692ab2ee2d23335b6a82ba + md5: 13de36be8de3ae3f05ba127631599213 + depends: + - __glibc >=2.17,<3.0.a0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libxml2 >=2.12.7,<3.0a0 + - openssl >=3.3.2,<4.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 149312 + timestamp: 1728563338704 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-common-cpp-12.8.0-h1b94036_1.conda + sha256: 146e76aac169e3dbdce5d3b142b7930ac643795c765e7655d1989905ec7d3231 + md5: 793b1080ab2d958980f137a8643cd6e8 + depends: + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libxml2 >=2.12.7,<3.0a0 + - openssl >=3.3.2,<4.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 140832 + timestamp: 1728565334900 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-common-cpp-12.8.0-h9ca1f76_1.conda + sha256: 77ab04e8fe5636a2de9c718f72a43645f7502cd208868c8a91ffba385547d585 + md5: 7a187cd7b1445afc80253bb186a607cc + depends: + - __osx >=11.0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - libcxx >=17 + - libxml2 >=2.12.7,<3.0a0 + - openssl >=3.3.2,<4.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 121278 + timestamp: 1728563418777 +- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-files-datalake-cpp-12.12.0-ha633028_1.conda + sha256: 5371e4f3f920933bb89b926a85a67f24388227419abd6e99f6086481e5e8d5f2 + md5: 7c1980f89dd41b097549782121a73490 + depends: + - __glibc >=2.17,<3.0.a0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 + - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 287366 + timestamp: 1728729530295 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-files-datalake-cpp-12.12.0-h37d6d07_1.conda + sha256: 4079c617a75682e49bae63670d58fd6078ccfbbe55ca1f994acab3a74ab6bbcc + md5: b724f3b4b7f4e9b36c58cbe3ed8610a2 + depends: + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 + - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 + - libgcc >=13 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 260547 + timestamp: 1728730924071 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-files-datalake-cpp-12.12.0-hcdd55da_1.conda + sha256: f48523f8aa0b5b80f45a92f0556b388dd96f44ac2dc2f44a01d08c1822eec97d + md5: c49fbc5233fcbaa86391162ff1adef38 + depends: + - __osx >=11.0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 + - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 + - libcxx >=17 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 196032 + timestamp: 1728729672889 +- conda: https://conda.anaconda.org/conda-forge/linux-64/blas-2.116-mkl.tar.bz2 + build_number: 16 + sha256: 87056ebdc90b6d1ea6726d04d42b844cc302112e80508edbf7bf1f1a4fd3fed2 + md5: c196a26abf6b4f132c88828ab7c2231c + depends: + - _openmp_mutex * *_llvm + - _openmp_mutex >=4.5 + - blas-devel 3.9.0 16_linux64_mkl + - libblas 3.9.0 16_linux64_mkl + - libcblas 3.9.0 16_linux64_mkl + - libgcc-ng >=12 + - libgfortran-ng + - libgfortran5 >=10.4.0 + - liblapack 3.9.0 16_linux64_mkl + - liblapacke 3.9.0 16_linux64_mkl + - llvm-openmp >=14.0.4 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 13258 + timestamp: 1660094704275 +- conda: https://conda.anaconda.org/conda-forge/linux-64/blas-devel-3.9.0-16_linux64_mkl.tar.bz2 + build_number: 16 + sha256: a7da65ca4e0322317cbc4d387c4a5f075cdc7fcd12ad9f7f18da758c7532749a + md5: 3f92c1c9e1c0e183462c5071aa02cae1 + depends: + - libblas 3.9.0 16_linux64_mkl + - libcblas 3.9.0 16_linux64_mkl + - liblapack 3.9.0 16_linux64_mkl + - liblapacke 3.9.0 16_linux64_mkl + - mkl >=2022.1.0,<2023.0a0 + - mkl-devel 2022.1.* + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 12630 + timestamp: 1660094595212 +- conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py312h2ec8cdc_2.conda + sha256: f2a59ccd20b4816dea9a2a5cb917eb69728271dbf1aeab4e1b7e609330a50b6f + md5: b0b867af6fc74b2a0aa206da29c0f3cf + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - libbrotlicommon 1.1.0 hb9d3cd8_2 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: + - pkg:pypi/brotli?source=hash-mapping + size: 349867 + timestamp: 1725267732089 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/brotli-python-1.1.0-py312h6f74592_2.conda + sha256: 9736bf660a0e4260c68f81d2635b51067f817813e6490ac9e8abd9a835dcbf6d + md5: e1e9727063057168d95f27a032acd0a4 + depends: + - libgcc >=13 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - libbrotlicommon 1.1.0 h86ecc28_2 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: + - pkg:pypi/brotli?source=hash-mapping + size: 356878 + timestamp: 1725267878508 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py312hde4cb15_2.conda + sha256: 254b411fa78ccc226f42daf606772972466f93e9bc6895eabb4cfda22f5178af + md5: a83c2ef76ccb11bc2349f4f17696b15d + depends: + - __osx >=11.0 + - libcxx >=17 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - libbrotlicommon 1.1.0 hd74edd7_2 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: + - pkg:pypi/brotli?source=hash-mapping + size: 339360 + timestamp: 1725268143995 +- conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda + sha256: 5ced96500d945fb286c9c838e54fa759aa04a7129c59800f0846b4335cee770d + md5: 62ee74e96c5ebb0af99386de58cf9553 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: bzip2-1.0.6 + license_family: BSD + purls: [] + size: 252783 + timestamp: 1720974456583 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h68df207_7.conda + sha256: 2258b0b33e1cb3a9852d47557984abb6e7ea58e3d7f92706ec1f8e879290c4cb + md5: 56398c28220513b9ea13d7b450acfb20 + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: bzip2-1.0.6 + license_family: BSD + purls: [] + size: 189884 + timestamp: 1720974504976 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda + sha256: adfa71f158cbd872a36394c56c3568e6034aa55c623634b37a4836bd036e6b91 + md5: fc6948412dbbbe9a4c9ddbbcfe0a79ab + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: bzip2-1.0.6 + license_family: BSD + purls: [] + size: 122909 + timestamp: 1720974522888 +- conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.4-hb9d3cd8_0.conda + sha256: d4f28d87b6339b94f74762c0076e29c8ef8ddfff51a564a92da2843573c18320 + md5: e2775acf57efd5af15b8e3d1d74d72d3 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 206085 + timestamp: 1734208189009 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/c-ares-1.34.4-h86ecc28_0.conda + sha256: 1187a41d4bb2afe02cb18690682edc98d1e9f5e0ccda638d8704a75ea1875bbe + md5: 356da36f35d36dcba16e43f1589d4e39 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 215979 + timestamp: 1734208193181 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.4-h5505292_0.conda + sha256: 09c0c8476e50b2955f474a4a1c17c4c047dd52993b5366b6ea8e968e583b921f + md5: c1c999a38a4303b29d75c636eaa13cf9 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 179496 + timestamp: 1734208291879 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2025.1.31-hbcca054_0.conda + sha256: bf832198976d559ab44d6cdb315642655547e26d826e34da67cbee6624cda189 + md5: 19f3a56f68d2fd06c516076bff482c52 + arch: x86_64 + platform: linux + license: ISC + purls: [] + size: 158144 + timestamp: 1738298224464 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2025.1.31-hcefe29a_0.conda + sha256: 66c6408ee461593cfdb2d78d82e6ed74d04a04ccb51df3ef8a5f35148c9c6eec + md5: 462cb166cd2e26a396f856510a3aff67 + arch: aarch64 + platform: linux + license: ISC + purls: [] + size: 158290 + timestamp: 1738299057652 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2025.1.31-hf0a4a13_0.conda + sha256: 7e12816618173fe70f5c638b72adf4bfd4ddabf27794369bb17871c5bb75b9f9 + md5: 3569d6a9141adc64d2fe4797f3289e06 + arch: arm64 + platform: osx + license: ISC + purls: [] + size: 158425 + timestamp: 1738298167688 +- conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.1.31-pyhd8ed1ab_0.conda + sha256: 42a78446da06a2568cb13e69be3355169fbd0ea424b00fc80b7d840f5baaacf3 + md5: c207fa5ac7ea99b149344385a9c0880d + depends: + - python >=3.9 + license: ISC + purls: + - pkg:pypi/certifi?source=compressed-mapping + size: 162721 + timestamp: 1739515973129 +- conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda + sha256: 4e0ee91b97e5de3e74567bdacea27f0139709fceca4db8adffbe24deffccb09b + md5: e83a31202d1c0a000fce3e9cf3825875 + depends: + - python >=3.9 + license: MIT + license_family: MIT + purls: + - pkg:pypi/charset-normalizer?source=hash-mapping + size: 47438 + timestamp: 1735929811779 +- conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda + sha256: c920d23cd1fcf565031c679adb62d848af60d6fbb0edc2d50ba475cea4f0d8ab + md5: f22f4d4970e09d68a10b922cbb0408d3 + depends: + - __unix + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/click?source=hash-mapping + size: 84705 + timestamp: 1734858922844 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cmake-3.31.6-h74e3db0_0.conda + sha256: 82372b404995a92fecfef38e9f1cb4977e71b785a728db5a9ed6f1aec49d547c + md5: d6e0e094315ee3e99ca153663e7fa669 + depends: + - __glibc >=2.17,<3.0.a0 + - bzip2 >=1.0.8,<2.0a0 + - libcurl >=8.12.1,<9.0a0 + - libexpat >=2.6.4,<3.0a0 + - libgcc >=13 + - liblzma >=5.6.4,<6.0a0 + - libstdcxx >=13 + - libuv >=1.50.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - rhash >=1.4.5,<2.0a0 + - zstd >=1.5.7,<1.6.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 20376244 + timestamp: 1740467420604 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cmake-3.31.6-h0efca9c_0.conda + sha256: fa894bf2306b4db3fde630b66a9c052dfcde7ec9f876e86fc555b86c21c97063 + md5: f3ec9663b69f8ac9315ff08d847a0e00 + depends: + - bzip2 >=1.0.8,<2.0a0 + - libcurl >=8.12.1,<9.0a0 + - libexpat >=2.6.4,<3.0a0 + - libgcc >=13 + - liblzma >=5.6.4,<6.0a0 + - libstdcxx >=13 + - libuv >=1.50.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - rhash >=1.4.5,<2.0a0 + - zstd >=1.5.7,<1.6.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 19859434 + timestamp: 1740467090575 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/cmake-3.31.6-ha25475f_0.conda + sha256: d71e84b6b7000323d2a394c3e01cfd35df3421741e8b4af7852e8400c2604574 + md5: 3a3bbf1de0a6d99658f4c1b63ad40d21 + depends: + - __osx >=11.0 + - bzip2 >=1.0.8,<2.0a0 + - libcurl >=8.12.1,<9.0a0 + - libcxx >=18 + - libexpat >=2.6.4,<3.0a0 + - liblzma >=5.6.4,<6.0a0 + - libuv >=1.50.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - rhash >=1.4.5,<2.0a0 + - zstd >=1.5.7,<1.6.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 16507414 + timestamp: 1740467905288 +- conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + sha256: ab29d57dc70786c1269633ba3dff20288b81664d3ff8d21af995742e2bb03287 + md5: 962b9857ee8e7018c22f2776ffa0b2d7 + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/colorama?source=hash-mapping + size: 27011 + timestamp: 1733218222191 +- conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.12.9-py312hd8ed1ab_0.conda + noarch: generic + sha256: f5c7ad0bd23fa8645ac279d99bddba656ff61483dc6312af12aae13910dfb210 + md5: a5b10f166467fecec692abaee84d16aa + depends: + - python 3.12.9.* + - python_abi * *_cp312 + license: Python-2.0 + purls: [] + size: 44836 + timestamp: 1739519561557 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-cudart-12.4.127-he02047a_2.conda + sha256: d8ad0be647dad6378119c110572bbf9f6b1e8c820393ed159d45f02588979c07 + md5: a748faa52331983fc3adcc3b116fe0e4 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-cudart_linux-64 12.4.127 h85509e4_2 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 22563 + timestamp: 1715710703269 +- conda: https://conda.anaconda.org/conda-forge/noarch/cuda-cudart_linux-64-12.4.127-h85509e4_2.conda + sha256: 1f1b3e0bf6b5e665860ecbdf509c1e02760c14d25e3f3893a712f90f7f8a5abc + md5: 329163110a96514802e9e64d971edf43 + depends: + - cuda-version >=12.4,<12.5.0a0 + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 186886 + timestamp: 1715710690964 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-cupti-12.4.127-he02047a_2.conda + sha256: db9ebc57fd583711bbdd12e54d00e4153a7b414f929f77fca2f44547c02204b8 + md5: 46422ef1b1161fb180027e50c598ecd0 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 1918773 + timestamp: 1715665119069 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-libraries-12.4.1-ha770c72_1.conda + sha256: cb30e83f33c7480caa68a1e35e6ff4102d17ff0a94239ca18555afff1df2f70e + md5: 6bb3f998485d4344a7539e0b218b3fc1 + depends: + - cuda-cudart 12.4.127.* + - cuda-nvrtc 12.4.127.* + - cuda-opencl 12.4.127.* + - libcublas 12.4.5.8.* + - libcufft 11.2.1.3.* + - libcufile 1.9.1.3.* + - libcurand 10.3.5.147.* + - libcusolver 11.6.1.9.* + - libcusparse 12.3.1.170.* + - libnpp 12.2.5.30.* + - libnvfatbin 12.4.127.* + - libnvjitlink 12.4.127.* + - libnvjpeg 12.3.1.117.* + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 20180 + timestamp: 1713304266920 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-nvrtc-12.4.127-he02047a_2.conda + sha256: c4aba5e152526db7cad7c8a5191497b0c6365c912ed845dc9c427d29893486a1 + md5: 80baf6262f4a1a0dde42d85aaa393402 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 18825627 + timestamp: 1715711095870 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-nvtx-12.4.127-he02047a_2.conda + sha256: 8f499785edaec6198a934e8a9dd1f8b6f79aabcc135962d6050dd7328c76d3dc + md5: 656a004b6e44f50ce71c65cab0d429b4 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 31691 + timestamp: 1715731339952 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-opencl-12.4.127-he02047a_1.conda + sha256: 75d912a70719a9d0bca9f234a79a857815d8feec3c54c145e6e41589de4ff5be + md5: 1e98deda07c14d26c80d124cf0eb011a + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - ocl-icd >=2.3.2,<3.0a0 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 30406 + timestamp: 1715711329543 +- conda: https://conda.anaconda.org/conda-forge/noarch/cuda-runtime-12.4.1-ha804496_0.conda + sha256: 61a593347c91a9bcd18329f7aa780bd1fb1e20dd1b61b16a451bd4a6b60dabf0 + md5: 48829f4ef6005ae8d4867b99168ff2b8 + depends: + - __linux + - cuda-libraries 12.4.1.* + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 20034 + timestamp: 1712683445348 +- conda: https://conda.anaconda.org/conda-forge/noarch/cuda-version-12.4-h3060b56_3.conda + sha256: 571d32fbd0dc8df6e85c14d1757549927e272af9c70b935d7e3a553ab0b0b4da + md5: c9a3fe8b957176e1a8452c6f3431b0d8 + constrains: + - cudatoolkit 12.4|12.4.* + - __cuda >=12 + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 21022 + timestamp: 1709765922936 +- conda: https://conda.anaconda.org/conda-forge/noarch/datasets-3.3.2-pyhd8ed1ab_0.conda + sha256: 06109a3de7a977424d960b75cdb307f8d769eae87c53e33a64e706171199997a + md5: c2f904077afe3a8246c26576f555a6af + depends: + - aiohttp + - dill >=0.3.0,<0.3.9 + - filelock + - fsspec >=2023.1.0,<=2024.12.0 + - huggingface_hub >=0.24.0 + - multiprocess <0.70.17 + - numpy >=1.17 + - packaging + - pandas + - pyarrow >=15.0.0 + - python >=3.9 + - python-xxhash + - pyyaml >=5.1 + - requests >=2.32.2 + - tqdm >=4.66.3 + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/datasets?source=hash-mapping + size: 335311 + timestamp: 1740153561620 +- conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.8-pyhd8ed1ab_0.conda + sha256: 482b5b566ca559119b504c53df12b08f3962a5ef8e48061d62fd58a47f8f2ec4 + md5: 78745f157d56877a2c6e7b386f66f3e2 + depends: + - python >=3.7 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/dill?source=hash-mapping + size: 88169 + timestamp: 1706434833883 +- conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.17.0-pyhd8ed1ab_0.conda + sha256: 006d7e5a0c17a6973596dd86bfc80d74ce541144d2aee2d22d46fd41df560a63 + md5: 7f402b4a1007ee355bc50ce4d24d4a57 + depends: + - python >=3.9 + license: Unlicense + purls: + - pkg:pypi/filelock?source=hash-mapping + size: 17544 + timestamp: 1737517924333 +- conda: https://conda.anaconda.org/conda-forge/linux-64/frozenlist-1.5.0-py312h178313f_1.conda + sha256: 501e20626798b6d7f130f4db0fb02c0385d8f4c11ca525925602a4208afb343f + md5: fb986e1c089021979dc79606af78ef8f + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/frozenlist?source=hash-mapping + size: 60939 + timestamp: 1737645356438 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/frozenlist-1.5.0-py312hcc812fe_1.conda + sha256: 84895c5e207e0cb2044f3607fb36b82eb8cb45f0a009d03dc04c777ed975757d + md5: 9090bf5c43e8011fb2e9a82a1db20cc3 + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/frozenlist?source=hash-mapping + size: 60472 + timestamp: 1737645511278 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/frozenlist-1.5.0-py312h998013c_1.conda + sha256: d503ac8c050abdbd129253973f23be34944978d510de78ef5a3e6aa1e3d9552d + md5: 5eb3715c7e3fa9b533361375bfefe6ee + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/frozenlist?source=hash-mapping + size: 57256 + timestamp: 1737645503377 +- conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.12.0-pyhd8ed1ab_0.conda + sha256: 3320970c4604989eadf908397a9475f9e6a96a773c185915111399cbfbe47817 + md5: e041ad4c43ab5e10c74587f95378ebc7 + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/fsspec?source=hash-mapping + size: 137756 + timestamp: 1734650349242 +- conda: https://conda.anaconda.org/conda-forge/linux-64/gflags-2.2.2-h5888daf_1005.conda + sha256: 6c33bf0c4d8f418546ba9c250db4e4221040936aef8956353bc764d4877bc39a + md5: d411fc29e338efb48c5fd4576d71d881 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 119654 + timestamp: 1726600001928 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gflags-2.2.2-h5ad3122_1005.conda + sha256: 28fe6b40b20454106d5e4ef6947cf298c13cc72a46347bbc49b563cd3a463bfa + md5: 4ff634d515abbf664774b5e1168a9744 + depends: + - libgcc >=13 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 106638 + timestamp: 1726599967617 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/gflags-2.2.2-hf9b8971_1005.conda + sha256: fd56ed8a1dab72ab90d8a8929b6f916a6d9220ca297ff077f8f04c5ed3408e20 + md5: 57a511a5905caa37540eb914dfcbf1fb + depends: + - __osx >=11.0 + - libcxx >=17 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 82090 + timestamp: 1726600145480 +- conda: https://conda.anaconda.org/conda-forge/linux-64/glog-0.7.1-hbabe93e_0.conda + sha256: dc824dc1d0aa358e28da2ecbbb9f03d932d976c8dca11214aa1dcdfcbd054ba2 + md5: ff862eebdfeb2fd048ae9dc92510baca + depends: + - gflags >=2.2.2,<2.3.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 143452 + timestamp: 1718284177264 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/glog-0.7.1-h468a4a4_0.conda + sha256: 920795d4f775a9f47e91c2223e64847f0b212b3fedc56c137c5889e32efe8ba0 + md5: 08940a32c6ced3703d1412dd37df4f62 + depends: + - gflags >=2.2.2,<2.3.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 145811 + timestamp: 1718284208668 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/glog-0.7.1-heb240a5_0.conda + sha256: 9fc77de416953aa959039db72bc41bfa4600ae3ff84acad04a7d0c1ab9552602 + md5: fef68d0a95aa5b84b5c1a4f6f3bf40e1 + depends: + - __osx >=11.0 + - gflags >=2.2.2,<2.3.0a0 + - libcxx >=16 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 112215 + timestamp: 1718284365403 +- conda: https://conda.anaconda.org/conda-forge/linux-64/gmp-6.3.0-hac33072_2.conda + sha256: 309cf4f04fec0c31b6771a5809a1909b4b3154a2208f52351e1ada006f4c750c + md5: c94a5994ef49749880a8139cf9afcbe1 + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: GPL-2.0-or-later OR LGPL-3.0-or-later + purls: [] + size: 460055 + timestamp: 1718980856608 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/gmp-6.3.0-h7bae524_2.conda + sha256: 76e222e072d61c840f64a44e0580c2503562b009090f55aa45053bf1ccb385dd + md5: eed7278dfbab727b56f2c0b64330814b + depends: + - __osx >=11.0 + - libcxx >=16 + arch: arm64 + platform: osx + license: GPL-2.0-or-later OR LGPL-3.0-or-later + purls: [] + size: 365188 + timestamp: 1718981343258 +- conda: https://conda.anaconda.org/conda-forge/linux-64/gmpy2-2.1.5-py312h7201bc8_3.conda + sha256: addd0bc226ca86c11f1223ab322d12b67501c2b3d93749bdab2068ccaedd8ef0 + md5: 673ef4d6611f5b4ca7b5c1f8c65a38dc + depends: + - __glibc >=2.17,<3.0.a0 + - gmp >=6.3.0,<7.0a0 + - libgcc >=13 + - mpc >=1.3.1,<2.0a0 + - mpfr >=4.2.1,<5.0a0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: LGPL-3.0-or-later + license_family: LGPL + purls: + - pkg:pypi/gmpy2?source=hash-mapping + size: 209631 + timestamp: 1733462668219 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/gmpy2-2.1.5-py312h524cf62_3.conda + sha256: 0ea196e4b706321951af1eebdb6a4eb9307faa1fd5361bcf49acb150e71774f7 + md5: ab7a5d10c7b4e249a9fe7bc280909803 + depends: + - __osx >=11.0 + - gmp >=6.3.0,<7.0a0 + - mpc >=1.3.1,<2.0a0 + - mpfr >=4.2.1,<5.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: LGPL-3.0-or-later + license_family: LGPL + purls: + - pkg:pypi/gmpy2?source=hash-mapping + size: 147983 + timestamp: 1733462785197 +- conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.29.1-pyhd8ed1ab_0.conda + sha256: f75ca9436fe11d0def6e575d29e0614033c45c90f37895a3b2bb3536612b251c + md5: 0bbbf72b600a1df32666a084769bf240 + depends: + - filelock + - fsspec >=2023.5.0 + - packaging >=20.9 + - python >=3.9 + - pyyaml >=5.1 + - requests + - tqdm >=4.42.1 + - typing-extensions >=3.7.4.3 + - typing_extensions >=3.7.4.3 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/huggingface-hub?source=compressed-mapping + size: 287974 + timestamp: 1740068383431 +- conda: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda + sha256: 71e750d509f5fa3421087ba88ef9a7b9be11c53174af3aa4d06aff4c18b38e8e + md5: 8b189310083baabfb622af68fd9d3ae3 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 12129203 + timestamp: 1720853576813 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda + sha256: 813298f2e54ef087dbfc9cc2e56e08ded41de65cff34c639cc8ba4e27e4540c9 + md5: 268203e8b983fddb6412b36f2024e75c + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 12282786 + timestamp: 1720853454991 +- conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda + sha256: d7a472c9fd479e2e8dcb83fb8d433fce971ea369d704ece380e876f9c3494e87 + md5: 39a4f67be3286c86d696df570b1201b7 + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/idna?source=hash-mapping + size: 49765 + timestamp: 1733211921194 +- conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + sha256: 598951ebdb23e25e4cec4bbff0ae369cec65ead80b50bc08b441d8e54de5cf03 + md5: f4b39bf00c69f56ac01e020ebfac066c + depends: + - python >=3.9 + - zipp >=0.5 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/importlib-metadata?source=compressed-mapping + size: 29141 + timestamp: 1737420302391 +- pypi: https://download.pytorch.org/whl/Jinja2-3.1.4-py3-none-any.whl#sha256=bc5dd2abb727a5319567b7a813e6a2e7318c39f4f487cfe6c89c6f9c7d25197d + name: jinja2 + version: 3.1.4 + sha256: bc5dd2abb727a5319567b7a813e6a2e7318c39f4f487cfe6c89c6f9c7d25197d + requires_dist: + - markupsafe>=2.0 + - babel>=2.7 ; extra == 'i18n' + requires_python: '>=3.7' +- conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.5-pyhd8ed1ab_0.conda + sha256: 98977694b9ecaa3218662f843425f39501f81973c450f995eec68f1803ed71c3 + md5: 2752a6ed44105bfb18c9bef1177d9dcd + depends: + - markupsafe >=2.0 + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/jinja2?source=hash-mapping + size: 112561 + timestamp: 1734824044952 +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + sha256: 19d8bd5bb2fde910ec59e081eeb59529491995ce0d653a5209366611023a0b3a + md5: 4ebae00eae9705b0c3d6d1018a81d047 + depends: + - importlib-metadata >=4.8.3 + - jupyter_core >=4.12,!=5.0.* + - python >=3.9 + - python-dateutil >=2.8.2 + - pyzmq >=23.0 + - tornado >=6.2 + - traitlets >=5.3 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/jupyter-client?source=hash-mapping + size: 106342 + timestamp: 1733441040958 +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + sha256: 732b1e8536bc22a5a174baa79842d79db2f4956d90293dd82dc1b3f6099bcccd + md5: 0a2980dada0dd7fd0998f0342308b1b1 + depends: + - __unix + - platformdirs >=2.5 + - python >=3.8 + - traitlets >=5.3 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/jupyter-core?source=hash-mapping + size: 57671 + timestamp: 1727163547058 +- conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 + sha256: 150c05a6e538610ca7c43beb3a40d65c90537497a4f6a5f4d15ec0451b6f5ebb + md5: 30186d27e2c9fa62b45fb1476b7200e3 + depends: + - libgcc-ng >=10.3.0 + arch: x86_64 + platform: linux + license: LGPL-2.1-or-later + purls: [] + size: 117831 + timestamp: 1646151697040 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/keyutils-1.6.1-h4e544f5_0.tar.bz2 + sha256: 6d4233d97a9b38acbb26e1268bcf8c10a8e79c2aed7e5a385ec3769967e3e65b + md5: 1f24853e59c68892452ef94ddd8afd4b + depends: + - libgcc-ng >=10.3.0 + arch: aarch64 + platform: linux + license: LGPL-2.1-or-later + purls: [] + size: 112327 + timestamp: 1646166857935 +- conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda + sha256: 99df692f7a8a5c27cd14b5fb1374ee55e756631b9c3d659ed3ee60830249b238 + md5: 3f43953b7d3fb3aaa1d0d0723d91e368 + depends: + - keyutils >=1.6.1,<2.0a0 + - libedit >=3.1.20191231,<3.2.0a0 + - libedit >=3.1.20191231,<4.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - openssl >=3.3.1,<4.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 1370023 + timestamp: 1719463201255 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/krb5-1.21.3-h50a48e9_0.conda + sha256: 0ec272afcf7ea7fbf007e07a3b4678384b7da4047348107b2ae02630a570a815 + md5: 29c10432a2ca1472b53f299ffb2ffa37 + depends: + - keyutils >=1.6.1,<2.0a0 + - libedit >=3.1.20191231,<3.2.0a0 + - libedit >=3.1.20191231,<4.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - openssl >=3.3.1,<4.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 1474620 + timestamp: 1719463205834 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda + sha256: 4442f957c3c77d69d9da3521268cad5d54c9033f1a73f99cde0a3658937b159b + md5: c6dc8a0fdec13a0565936655c33069a1 + depends: + - __osx >=11.0 + - libcxx >=16 + - libedit >=3.1.20191231,<3.2.0a0 + - libedit >=3.1.20191231,<4.0a0 + - openssl >=3.3.1,<4.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 1155530 + timestamp: 1719463474401 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_4.conda + sha256: db73f38155d901a610b2320525b9dd3b31e4949215c870685fd92ea61b5ce472 + md5: 01f8d123c96816249efd255a31ad7712 + depends: + - __glibc >=2.17,<3.0.a0 + constrains: + - binutils_impl_linux-64 2.43 + arch: x86_64 + platform: linux + license: GPL-3.0-only + license_family: GPL + purls: [] + size: 671240 + timestamp: 1740155456116 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_4.conda + sha256: 016832a70b0aa97e1c4e47e23c00b0c34def679de25146736df353199f684f0d + md5: 80c9ad5e05e91bb6c0967af3880c9742 + constrains: + - binutils_impl_linux-aarch64 2.43 + arch: aarch64 + platform: linux + license: GPL-3.0-only + license_family: GPL + purls: [] + size: 699058 + timestamp: 1740155620594 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda + sha256: 143a586aa67d50622ef703de57b9d43f44945836d6568e0e7aa174bd8c45e0d4 + md5: 488f260ccda0afaf08acb286db439c2f + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + constrains: + - libabseil-static =20240722.0=cxx17* + - abseil-cpp =20240722.0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 1311599 + timestamp: 1736008414161 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h18dbdb1_4.conda + sha256: bb6c5fb3b8de5f90735c5252b57efb3c268ee222c755569dac18065f05147670 + md5: 633b9fe454ffea2aaf29e191d946a83b + depends: + - libgcc >=13 + - libstdcxx >=13 + constrains: + - abseil-cpp =20240722.0 + - libabseil-static =20240722.0=cxx17* + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 1334844 + timestamp: 1736008472455 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_h07bc746_4.conda + sha256: 05fa5e5e908962b9c5aba95f962e2ca81d9599c4715aebe5e4ddb72b309d1770 + md5: c2d95bd7aa8d564a9bd7eca5e571a5b3 + depends: + - __osx >=11.0 + - libcxx >=18 + constrains: + - libabseil-static =20240722.0=cxx17* + - abseil-cpp =20240722.0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 1178260 + timestamp: 1736008642885 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-19.0.1-hfa2a6e7_0_cpu.conda + sha256: 7b1f61045b37266989023a007d6331875062bb658068a6e6ab49720495ca3543 + md5: 11b712ed1316c98592f6bae7ccfaa86c + depends: + - __glibc >=2.17,<3.0.a0 + - aws-crt-cpp >=0.29.9,<0.29.10.0a0 + - aws-sdk-cpp >=1.11.489,<1.11.490.0a0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - azure-identity-cpp >=1.10.0,<1.10.1.0a0 + - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 + - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 + - bzip2 >=1.0.8,<2.0a0 + - glog >=0.7.1,<0.8.0a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libbrotlidec >=1.1.0,<1.2.0a0 + - libbrotlienc >=1.1.0,<1.2.0a0 + - libgcc >=13 + - libgoogle-cloud >=2.35.0,<2.36.0a0 + - libgoogle-cloud-storage >=2.35.0,<2.36.0a0 + - libopentelemetry-cpp >=1.18.0,<1.19.0a0 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libre2-11 >=2024.7.2 + - libstdcxx >=13 + - libutf8proc >=2.10.0,<2.11.0a0 + - libzlib >=1.3.1,<2.0a0 + - lz4-c >=1.10.0,<1.11.0a0 + - orc >=2.0.3,<2.0.4.0a0 + - re2 + - snappy >=1.2.1,<1.3.0a0 + - zstd >=1.5.6,<1.6.0a0 + constrains: + - arrow-cpp <0.0a0 + - parquet-cpp <0.0a0 + - apache-arrow-proc =*=cpu + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 8967810 + timestamp: 1739768880886 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-19.0.1-h36213f4_0_cpu.conda + sha256: 3f141e56555676b4a9fd885a0a7452daa2530eb65cfbba1271f7a07457a82003 + md5: cfeb98942a3ef36c0bb2b09b084349da + depends: + - aws-crt-cpp >=0.29.9,<0.29.10.0a0 + - aws-sdk-cpp >=1.11.489,<1.11.490.0a0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - azure-identity-cpp >=1.10.0,<1.10.1.0a0 + - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 + - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 + - bzip2 >=1.0.8,<2.0a0 + - glog >=0.7.1,<0.8.0a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libbrotlidec >=1.1.0,<1.2.0a0 + - libbrotlienc >=1.1.0,<1.2.0a0 + - libgcc >=13 + - libgoogle-cloud >=2.35.0,<2.36.0a0 + - libgoogle-cloud-storage >=2.35.0,<2.36.0a0 + - libopentelemetry-cpp >=1.18.0,<1.19.0a0 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libre2-11 >=2024.7.2 + - libstdcxx >=13 + - libutf8proc >=2.10.0,<2.11.0a0 + - libzlib >=1.3.1,<2.0a0 + - lz4-c >=1.10.0,<1.11.0a0 + - orc >=2.0.3,<2.0.4.0a0 + - re2 + - snappy >=1.2.1,<1.3.0a0 + - zstd >=1.5.6,<1.6.0a0 + constrains: + - apache-arrow-proc =*=cpu + - parquet-cpp <0.0a0 + - arrow-cpp <0.0a0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 8215209 + timestamp: 1739770301694 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-19.0.1-h0945df6_0_cpu.conda + sha256: e34199bea635b1bf9f3819205b291f714ddd47db1bf6e6d10a4eb61da7330214 + md5: 21bcb04df4b1a99721199c5aa6273f53 + depends: + - __osx >=11.0 + - aws-crt-cpp >=0.29.9,<0.29.10.0a0 + - aws-sdk-cpp >=1.11.489,<1.11.490.0a0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - azure-identity-cpp >=1.10.0,<1.10.1.0a0 + - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 + - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 + - bzip2 >=1.0.8,<2.0a0 + - glog >=0.7.1,<0.8.0a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libbrotlidec >=1.1.0,<1.2.0a0 + - libbrotlienc >=1.1.0,<1.2.0a0 + - libcxx >=18 + - libgoogle-cloud >=2.35.0,<2.36.0a0 + - libgoogle-cloud-storage >=2.35.0,<2.36.0a0 + - libopentelemetry-cpp >=1.18.0,<1.19.0a0 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libre2-11 >=2024.7.2 + - libutf8proc >=2.10.0,<2.11.0a0 + - libzlib >=1.3.1,<2.0a0 + - lz4-c >=1.10.0,<1.11.0a0 + - orc >=2.0.3,<2.0.4.0a0 + - re2 + - snappy >=1.2.1,<1.3.0a0 + - zstd >=1.5.6,<1.6.0a0 + constrains: + - apache-arrow-proc =*=cpu + - arrow-cpp <0.0a0 + - parquet-cpp <0.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 5571369 + timestamp: 1739767084108 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-19.0.1-hcb10f89_0_cpu.conda + sha256: 9a3c38a8f1516fe5b7801d0407ff704efd53955ebd63f7fbc439ec3b563d19cc + md5: 0d63e2dea06c44c9d2c8be3e7e38eea9 + depends: + - __glibc >=2.17,<3.0.a0 + - libarrow 19.0.1 hfa2a6e7_0_cpu + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 638054 + timestamp: 1739768924910 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-19.0.1-h3b568fd_0_cpu.conda + sha256: 3260e26ca9e1146befeb9587ba80610f9d9591365c82f7cd8756f14a9a8e58c2 + md5: 7b270af126ffdec0153d8599370f0430 + depends: + - libarrow 19.0.1 h36213f4_0_cpu + - libgcc >=13 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 602400 + timestamp: 1739770383854 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-19.0.1-hf07054f_0_cpu.conda + sha256: b15f5fab53d941917143bb1cf22c5a0eacffb8ff2a010ee2e909afab3821d5f9 + md5: 9213d80ffba1921b86bfdf5fdd2c10c4 + depends: + - __osx >=11.0 + - libarrow 19.0.1 h0945df6_0_cpu + - libcxx >=18 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 500147 + timestamp: 1739767179329 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-19.0.1-hcb10f89_0_cpu.conda + sha256: f756208d787db50b6be68210cb9eec3644b8291a8a353bb2071ea4451bfc1412 + md5: ec52b3b990be399f4267a9acabb73070 + depends: + - __glibc >=2.17,<3.0.a0 + - libarrow 19.0.1 hfa2a6e7_0_cpu + - libarrow-acero 19.0.1 hcb10f89_0_cpu + - libgcc >=13 + - libparquet 19.0.1 h081d1f1_0_cpu + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 604500 + timestamp: 1739769034226 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-19.0.1-h3b568fd_0_cpu.conda + sha256: 76327753ed311ae1d1ef3f8f7067888e01d3c69e5198a9108052d74e2f91d03a + md5: 8a025a60dfcfa3d6cf100395f64de8ba + depends: + - libarrow 19.0.1 h36213f4_0_cpu + - libarrow-acero 19.0.1 h3b568fd_0_cpu + - libgcc >=13 + - libparquet 19.0.1 hfc78867_0_cpu + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 581121 + timestamp: 1739770488033 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-19.0.1-hf07054f_0_cpu.conda + sha256: 21fcb9a09e5872b4f1d483d8d950a1804ccb6804881881ca6fe6c5968a5e4dbc + md5: 0695382a64b393765b4bc9e1ee99250c + depends: + - __osx >=11.0 + - libarrow 19.0.1 h0945df6_0_cpu + - libarrow-acero 19.0.1 hf07054f_0_cpu + - libcxx >=18 + - libparquet 19.0.1 h636d7b7_0_cpu + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 501234 + timestamp: 1739768239766 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-19.0.1-h08228c5_0_cpu.conda + sha256: e0b3ed06ce74c6a083dab59fb3059fdbc40fc71ff94ce470ca0a7c7ffe8d0317 + md5: 792e2359bb93513324326cbe3ee4ebdd + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libarrow 19.0.1 hfa2a6e7_0_cpu + - libarrow-acero 19.0.1 hcb10f89_0_cpu + - libarrow-dataset 19.0.1 hcb10f89_0_cpu + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 523313 + timestamp: 1739769085090 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-19.0.1-h1e9d426_0_cpu.conda + sha256: c1085eb113a80691e3d76400c91b15dc8c0462d533f8c4ca4c33d5e9fe9cffef + md5: 1e34ad733a8c404ac0f652a942192636 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libarrow 19.0.1 h36213f4_0_cpu + - libarrow-acero 19.0.1 h3b568fd_0_cpu + - libarrow-dataset 19.0.1 h3b568fd_0_cpu + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 516114 + timestamp: 1739770543593 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-19.0.1-h4239455_0_cpu.conda + sha256: 0b5c0839102b396f8b0ba376189562a727ebbed3c6bdab74aaf56227ee45cb73 + md5: 2893dd55f7804b9106126c2f00712ec2 + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libarrow 19.0.1 h0945df6_0_cpu + - libarrow-acero 19.0.1 hf07054f_0_cpu + - libarrow-dataset 19.0.1 hf07054f_0_cpu + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 450361 + timestamp: 1739768396169 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-16_linux64_mkl.tar.bz2 + build_number: 16 + sha256: 24e656f13b402b6fceb88df386768445ab9beb657d451a8e5a88d4b3380cf7a4 + md5: 85f61af03fd291dae33150ffe89dc09a + depends: + - mkl >=2022.1.0,<2023.0a0 + constrains: + - liblapack 3.9.0 16_linux64_mkl + - liblapacke 3.9.0 16_linux64_mkl + - libcblas 3.9.0 16_linux64_mkl + - blas * mkl + - mkl <2025 + arch: x86_64 + platform: linux + track_features: + - blas_mkl + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 13102 + timestamp: 1660094562739 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-31_h1a9f1db_openblas.conda + build_number: 31 + sha256: 67c9c81dd0444ecc712124034d9f74186ca82fd770b3df46b1a68564461c6a1a + md5: 48bd5bf15ccf3e409840be9caafc0ad5 + depends: + - libopenblas >=0.3.29,<0.3.30.0a0 + - libopenblas >=0.3.29,<1.0a0 + constrains: + - liblapack =3.9.0=31*_openblas + - blas =2.131=openblas + - libcblas =3.9.0=31*_openblas + - mkl <2025 + - liblapacke =3.9.0=31*_openblas + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 16915 + timestamp: 1740087911042 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-19_osxarm64_openblas.conda + build_number: 19 + sha256: 51e78e3c9fa57f3fec12936b760928715ba0ab5253d02815202f9ec4c2c9255d + md5: f50b1fd98593278e18319653cff9c475 + depends: + - libopenblas >=0.3.24,<0.3.25.0a0 + - libopenblas >=0.3.24,<1.0a0 + constrains: + - libcblas 3.9.0 19_osxarm64_openblas + - liblapack 3.9.0 19_osxarm64_openblas + - blas * openblas + - liblapacke 3.9.0 19_osxarm64_openblas + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 14817 + timestamp: 1697484577887 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hb9d3cd8_2.conda + sha256: d9db2de60ea917298e658143354a530e9ca5f9c63471c65cf47ab39fd2f429e3 + md5: 41b599ed2b02abcfdd84302bff174b23 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 68851 + timestamp: 1725267660471 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlicommon-1.1.0-h86ecc28_2.conda + sha256: 64112af913974b309d67fd342e065fd184347043a6387933b3db796778a28019 + md5: 3ee026955c688f551a9999840cff4c67 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 68982 + timestamp: 1725267774142 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.1.0-hd74edd7_2.conda + sha256: 839dacb741bdbb25e58f42088a2001b649f4f12195aeb700b5ddfca3267749e5 + md5: d0bf1dff146b799b319ea0434b93f779 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 68426 + timestamp: 1725267943211 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hb9d3cd8_2.conda + sha256: 2892d512cad096cb03f1b66361deeab58b64e15ba525d6592bb6d609e7045edf + md5: 9566f0bd264fbd463002e759b8a82401 + depends: + - __glibc >=2.17,<3.0.a0 + - libbrotlicommon 1.1.0 hb9d3cd8_2 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 32696 + timestamp: 1725267669305 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlidec-1.1.0-h86ecc28_2.conda + sha256: 94c808d9ca3eb6ef30976a9843e27f027cf3a1e84e8c6835cbb696b7bdb35c4c + md5: e64d0f3b59c7c4047446b97a8624a72d + depends: + - libbrotlicommon 1.1.0 h86ecc28_2 + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 31708 + timestamp: 1725267783442 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.1.0-hd74edd7_2.conda + sha256: 6c6862eb274f21a7c0b60e5345467a12e6dda8b9af4438c66d496a2c1a538264 + md5: 55e66e68ce55523a6811633dd1ac74e2 + depends: + - __osx >=11.0 + - libbrotlicommon 1.1.0 hd74edd7_2 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 28378 + timestamp: 1725267980316 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.1.0-hb9d3cd8_2.conda + sha256: 779f58174e99de3600e939fa46eddb453ec5d3c60bb46cdaa8b4c127224dbf29 + md5: 06f70867945ea6a84d35836af780f1de + depends: + - __glibc >=2.17,<3.0.a0 + - libbrotlicommon 1.1.0 hb9d3cd8_2 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 281750 + timestamp: 1725267679782 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlienc-1.1.0-h86ecc28_2.conda + sha256: 41385e17bc73834b235c5aff12d6d82eccb534acb3c30986996f9dad92a0d54c + md5: 0e9bd365480c72b25c71a448257b537d + depends: + - libbrotlicommon 1.1.0 h86ecc28_2 + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 290230 + timestamp: 1725267792697 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlienc-1.1.0-hd74edd7_2.conda + sha256: eeb1eb0d58b9d02bc1b98dc0a058f104ab168eb2f7d1c7bfa0570a12cfcdb7b7 + md5: 4f3a434504c67b2c42565c0b85c1885c + depends: + - __osx >=11.0 + - libbrotlicommon 1.1.0 hd74edd7_2 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 279644 + timestamp: 1725268003553 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-16_linux64_mkl.tar.bz2 + build_number: 16 + sha256: 892ba10508f22310ccfe748df1fd3b6c7f20e7b6f6b79e69ed337863551c1bd8 + md5: 361bf757b95488de76c4f123805742d3 + depends: + - libblas 3.9.0 16_linux64_mkl + constrains: + - liblapack 3.9.0 16_linux64_mkl + - liblapacke 3.9.0 16_linux64_mkl + - blas * mkl + - mkl <2025 + arch: x86_64 + platform: linux + track_features: + - blas_mkl + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 12791 + timestamp: 1660094570921 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-31_hab92f65_openblas.conda + build_number: 31 + sha256: f0457a1d2982f0a28bfbadaa02621677c324e88f7c8198c24fb3e3214c468dba + md5: 6b81dbae56a519f1ec2f25e0ee2f4334 + depends: + - libblas 3.9.0 31_h1a9f1db_openblas + constrains: + - liblapack =3.9.0=31*_openblas + - blas =2.131=openblas + - liblapacke =3.9.0=31*_openblas + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 16824 + timestamp: 1740087917500 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-19_osxarm64_openblas.conda + build_number: 19 + sha256: 19b1c5e3ddd383ec14540336f4704938218d3c1db4707ae10d5357afb22cccc1 + md5: 5460a8d1beffd7f63994d891e6a20da4 + depends: + - libblas 3.9.0 19_osxarm64_openblas + constrains: + - liblapack 3.9.0 19_osxarm64_openblas + - blas * openblas + - liblapacke 3.9.0 19_osxarm64_openblas + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 14738 + timestamp: 1697484590682 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcrc32c-1.1.2-h9c3ff4c_0.tar.bz2 + sha256: fd1d153962764433fe6233f34a72cdeed5dcf8a883a85769e8295ce940b5b0c5 + md5: c965a5aa0d5c1c37ffc62dff36e28400 + depends: + - libgcc-ng >=9.4.0 + - libstdcxx-ng >=9.4.0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 20440 + timestamp: 1633683576494 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcrc32c-1.1.2-h01db608_0.tar.bz2 + sha256: b8b8c57a87da86b3ea24280fd6aa8efaf92f4e684b606bf2db5d3cb06ffbe2ea + md5: 268ee639c17ada0002fb04dd21816cc2 + depends: + - libgcc-ng >=9.4.0 + - libstdcxx-ng >=9.4.0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 18669 + timestamp: 1633683724891 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcrc32c-1.1.2-hbdafb3b_0.tar.bz2 + sha256: 58477b67cc719060b5b069ba57161e20ba69b8695d154a719cb4b60caf577929 + md5: 32bd82a6a625ea6ce090a81c3d34edeb + depends: + - libcxx >=11.1.0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 18765 + timestamp: 1633683992603 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcublas-12.4.5.8-he02047a_2.conda + sha256: 168e664423e875f7107697dfa7935399675872ea8abffa92621db98007258d66 + md5: d446adae085aa1ff37c44b69988a6f06 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-nvrtc + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 240665617 + timestamp: 1715711552741 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcufft-11.2.1.3-he02047a_2.conda + sha256: 242e1ed210a85fc0dc2a4e86bf0b75120f1768ab66497502c5e6d69e801bf9dc + md5: d2641a67c207946ef96f1328c4a8e8ed + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 174980358 + timestamp: 1715711515585 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcufile-1.9.1.3-he02047a_2.conda + sha256: 7fa7a608d52064b724241e4026f0e0cc244c6f725623e2c26c810be99822fa28 + md5: a051267bcb1912467c81d802a7d3465e + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 924329 + timestamp: 1715720836466 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcurand-10.3.5.147-he02047a_2.conda + sha256: 7db821fc8f566dbb8d4e40dae62edb07d638db8c028d677a0063ece66872d19c + md5: 9c4886d513fd477df88d411cd274c202 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 41590169 + timestamp: 1715711553620 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.12.1-h332b0f4_0.conda + sha256: 2ebc3039af29269e4cdb858fca36265e5e400c1125a4bcd84ae73a596e0e76ca + md5: 45e9dc4e7b25e2841deb392be085500e + depends: + - __glibc >=2.17,<3.0.a0 + - krb5 >=1.21.3,<1.22.0a0 + - libgcc >=13 + - libnghttp2 >=1.64.0,<2.0a0 + - libssh2 >=1.11.1,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.1,<4.0a0 + - zstd >=1.5.6,<1.6.0a0 + arch: x86_64 + platform: linux + license: curl + license_family: MIT + purls: [] + size: 426675 + timestamp: 1739512336799 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcurl-8.12.1-h6702fde_0.conda + sha256: a00458a5163b9552897cdac08b273deb1b3add09e05599dfbacf0606c3b1f41f + md5: 14c340cb70867cf7953d2632f89270b5 + depends: + - krb5 >=1.21.3,<1.22.0a0 + - libgcc >=13 + - libnghttp2 >=1.64.0,<2.0a0 + - libssh2 >=1.11.1,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.1,<4.0a0 + - zstd >=1.5.6,<1.6.0a0 + arch: aarch64 + platform: linux + license: curl + license_family: MIT + purls: [] + size: 444118 + timestamp: 1739512317570 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.12.1-h73640d1_0.conda + sha256: 0bddd1791eb0602c8c6aa465802e9d4526d3ec1251d900b209e767753565d5df + md5: 105f0cceef753644912f42e11c1ae9cf + depends: + - __osx >=11.0 + - krb5 >=1.21.3,<1.22.0a0 + - libnghttp2 >=1.64.0,<2.0a0 + - libssh2 >=1.11.1,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.1,<4.0a0 + - zstd >=1.5.6,<1.6.0a0 + arch: arm64 + platform: osx + license: curl + license_family: MIT + purls: [] + size: 387893 + timestamp: 1739512564746 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcusolver-11.6.1.9-he02047a_2.conda + sha256: df4f8a94bffb59dc3da28fb5a892c1ef2553f8afd49f141d3e2da8c92f276a56 + md5: 9f6877f8936be962f598db5e9b8efc51 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libcublas >=12.4.5.8,<12.5.0a0 + - libcusparse >=12.3.1.170,<12.4.0a0 + - libgcc-ng >=12 + - libnvjitlink >=12.4.127,<12.5.0a0 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 81594879 + timestamp: 1715711788074 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcusparse-12.3.1.170-he02047a_2.conda + sha256: f2254e41c93a8c3529690c19350556708182ef699ca658c6554eeb7eb4b8c3de + md5: 1c4c7ff54dc5b947f2ab8f5ff8a28dae + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libnvjitlink >=12.4.127,<12.5.0a0 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 117818451 + timestamp: 1715711610677 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda + sha256: 776092346da87a2a23502e14d91eb0c32699c4a1522b7331537bd1c3751dcff5 + md5: 5b3e1610ff8bd5443476b91d618f5b77 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + purls: [] + size: 523505 + timestamp: 1736877862502 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda + sha256: d789471216e7aba3c184cd054ed61ce3f6dac6f87a50ec69291b9297f8c18724 + md5: c277e0a4d549b03ac1e9d6cbbe3d017b + depends: + - ncurses + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - ncurses >=6.5,<7.0a0 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 134676 + timestamp: 1738479519902 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20250104-pl5321h976ea20_0.conda + sha256: c0b27546aa3a23d47919226b3a1635fccdb4f24b94e72e206a751b33f46fd8d6 + md5: fb640d776fc92b682a14e001980825b1 + depends: + - ncurses + - libgcc >=13 + - ncurses >=6.5,<7.0a0 + arch: aarch64 + platform: linux + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 148125 + timestamp: 1738479808948 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda + sha256: 66aa216a403de0bb0c1340a88d1a06adaff66bae2cfd196731aa24db9859d631 + md5: 44083d2d2c2025afca315c7a172eab2b + depends: + - ncurses + - __osx >=11.0 + - ncurses >=6.5,<7.0a0 + arch: arm64 + platform: osx + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 107691 + timestamp: 1738479560845 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda + sha256: 1cd6048169fa0395af74ed5d8f1716e22c19a81a8a36f934c110ca3ad4dd27b4 + md5: 172bf1cd1ff8629f2b1179945ed45055 + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 112766 + timestamp: 1702146165126 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libev-4.33-h31becfc_2.conda + sha256: 973af77e297f1955dd1f69c2cbdc5ab9dfc88388a5576cd152cda178af0fd006 + md5: a9a13cb143bbaa477b1ebaefbe47a302 + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 115123 + timestamp: 1702146237623 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libev-4.33-h93a5062_2.conda + sha256: 95cecb3902fbe0399c3a7e67a5bed1db813e5ab0e22f4023a5e0f722f2cc214f + md5: 36d33e440c31857372a72137f78bacf5 + arch: arm64 + platform: osx + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 107458 + timestamp: 1702146414478 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libevent-2.1.12-hf998b51_1.conda + sha256: 2e14399d81fb348e9d231a82ca4d816bf855206923759b69ad006ba482764131 + md5: a1cfcc585f0c42bf8d5546bb1dfb668d + depends: + - libgcc-ng >=12 + - openssl >=3.1.1,<4.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 427426 + timestamp: 1685725977222 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libevent-2.1.12-h4ba1bb4_1.conda + sha256: 01333cc7d6e6985dd5700b43660d90e9e58049182017fd24862088ecbe1458e4 + md5: 96ae6083cd1ac9f6bc81631ac835b317 + depends: + - libgcc-ng >=12 + - openssl >=3.1.1,<4.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 438992 + timestamp: 1685726046519 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libevent-2.1.12-h2757513_1.conda + sha256: 8c136d7586259bb5c0d2b913aaadc5b9737787ae4f40e3ad1beaf96c80b919b7 + md5: 1a109764bff3bdc7bdd84088347d71dc + depends: + - openssl >=3.1.1,<4.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 368167 + timestamp: 1685726248899 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda + sha256: 56541b98447b58e52d824bd59d6382d609e11de1f8adf20b23143e353d2b8d26 + md5: db833e03127376d461e1e13e76f09b6c + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + constrains: + - expat 2.6.4.* + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 73304 + timestamp: 1730967041968 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.6.4-h5ad3122_0.conda + sha256: f42e758009ba9db90d1fe7992bc3e60d0c52f71fb20923375d2c44ae69a5a2b3 + md5: f1b3fab36861b3ce945a13f0dfdfc688 + depends: + - libgcc >=13 + constrains: + - expat 2.6.4.* + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 72345 + timestamp: 1730967203789 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.4-h286801f_0.conda + sha256: e42ab5ace927ee7c84e3f0f7d813671e1cf3529f5f06ee5899606630498c2745 + md5: 38d2656dd914feb0cab8c629370768bf + depends: + - __osx >=11.0 + constrains: + - expat 2.6.4.* + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 64693 + timestamp: 1730967175868 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_0.conda + sha256: 67a6c95e33ebc763c1adc3455b9a9ecde901850eb2fceb8e646cc05ef3a663da + md5: e3eb7806380bc8bcecba6d749ad5f026 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 53415 + timestamp: 1739260413716 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.4.6-he21f813_0.conda + sha256: 41568066beefe7b319ff27d85952242e5b77fb753d705b8716041959e17c35c2 + md5: 966084fccf3ad62a3160666cda869f28 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 51513 + timestamp: 1739260449772 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 + sha256: 41b3d13efb775e340e4dba549ab5c029611ea6918703096b2eaa9c015c0750ca + md5: 086914b672be056eb70fd4285b6783b6 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 39020 + timestamp: 1636488587153 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h767d61c_2.conda + sha256: 3a572d031cb86deb541d15c1875aaa097baefc0c580b54dc61f5edab99215792 + md5: ef504d1acbd74b7cc6849ef8af47dd03 + depends: + - __glibc >=2.17,<3.0.a0 + - _openmp_mutex >=4.5 + constrains: + - libgomp 14.2.0 h767d61c_2 + - libgcc-ng ==14.2.0=*_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 847885 + timestamp: 1740240653082 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-14.2.0-he277a41_2.conda + sha256: a57f7f9ba2a12f56eafdcd25b6d75f7be10b8fc1a802a58b76a77ca8c66f4503 + md5: 6b4268a60b10f29257b51b9b67ff8d76 + depends: + - _openmp_mutex >=4.5 + constrains: + - libgcc-ng ==14.2.0=*_2 + - libgomp 14.2.0 he277a41_2 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 535507 + timestamp: 1740241069780 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_2.conda + sha256: fb7558c328b38b2f9d2e412c48da7890e7721ba018d733ebdfea57280df01904 + md5: a2222a6ada71fb478682efe483ce0f92 + depends: + - libgcc 14.2.0 h767d61c_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 53758 + timestamp: 1740240660904 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-14.2.0-he9431aa_2.conda + sha256: 9647f75cddc18b07eebe6e1f21500eed50a6af2c43c84e831b4c7a597e10d226 + md5: 692c2bb75f32cfafb6799cf6d1c5d0e0 + depends: + - libgcc 14.2.0 he277a41_2 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 53622 + timestamp: 1740241074834 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_2.conda + sha256: e05263e8960da03c341650f2a3ffa4ccae4e111cb198e8933a2908125459e5a6 + md5: fb54c4ea68b460c278d26eea89cfbcc3 + depends: + - libgfortran5 14.2.0 hf1ad2bd_2 + constrains: + - libgfortran-ng ==14.2.0=*_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 53733 + timestamp: 1740240690977 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_2.conda + sha256: 996d3c0505301901a7ab23b5e7daad21635d1c065240bb0f4faf7e4f75d7f49d + md5: d8b9d9dc0c8cd97d375b48e55947ba70 + depends: + - libgfortran5 14.2.0 hb6113d0_2 + constrains: + - libgfortran-ng ==14.2.0=*_2 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 53611 + timestamp: 1740241100147 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda + sha256: 44e541b4821c96b28b27fef5630883a60ce4fee91fd9c79f25a199f8f73f337b + md5: 4a55d9e169114b2b90d3ec4604cd7bbf + depends: + - libgfortran5 13.2.0 hf226fd6_3 + arch: arm64 + platform: osx + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 110233 + timestamp: 1707330749033 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-ng-14.2.0-h69a702a_2.conda + sha256: 688a5968852e677d2a64974c8869ffb120eac21997ced7d15c599f152ef6857e + md5: 4056c857af1a99ee50589a941059ec55 + depends: + - libgfortran 14.2.0 h69a702a_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 53781 + timestamp: 1740240884760 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hf1ad2bd_2.conda + sha256: c17b7cf3073a1f4e1f34d50872934fa326346e104d3c445abc1e62481ad6085c + md5: 556a4fdfac7287d349b8f09aba899693 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14.2.0 + constrains: + - libgfortran 14.2.0 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 1461978 + timestamp: 1740240671964 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_2.conda + sha256: 7b9e1d3666a00e5a52e5d43c003bd1c73ab472804be513c070aaedca9c4c2a9a + md5: cd754566661513808ef2408c4ab99a2f + depends: + - libgcc >=14.2.0 + constrains: + - libgfortran 14.2.0 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 1100765 + timestamp: 1740241083241 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda + sha256: bafc679eedb468a86aa4636061c55966186399ee0a04b605920d208d97ac579a + md5: 66ac81d54e95c534ae488726c1f698ea + depends: + - llvm-openmp >=8.0.0 + constrains: + - libgfortran 5.0.0 13_2_0_*_3 + arch: arm64 + platform: osx + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 997381 + timestamp: 1707330687590 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_2.conda + sha256: 4e303711fb7413bf98995beac58e731073099d7a669a3b81e49330ca8da05174 + md5: b11c09d9463daf4cae492d29806b1889 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 462783 + timestamp: 1740241005079 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.35.0-h2b5623c_0.conda + sha256: d747d14c69da512d8993a995dc2df90e857778b0a8542f12fb751544128af685 + md5: 1040ab07d7af9f23cf2466ffe4e58db1 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcurl >=8.11.1,<9.0a0 + - libgcc >=13 + - libgrpc >=1.67.1,<1.68.0a0 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + - openssl >=3.4.0,<4.0a0 + constrains: + - libgoogle-cloud 2.35.0 *_0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 1258035 + timestamp: 1738662406183 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-2.35.0-hccf9d24_0.conda + sha256: b5d323807ea699e76d9ebb829e48100446663978a1aac9adf538249864f73f97 + md5: f22720e07abb547ebce78a3aa7b97d69 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcurl >=8.11.1,<9.0a0 + - libgcc >=13 + - libgrpc >=1.67.1,<1.68.0a0 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + - openssl >=3.4.0,<4.0a0 + constrains: + - libgoogle-cloud 2.35.0 *_0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 1258015 + timestamp: 1738662706891 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-2.35.0-hdbe95d5_0.conda + sha256: 9bee9773540956d8a2ca0b317f73d94916200a4bfd8151319bf7fdcbf704d692 + md5: b1ea94282f38b142f8bc842ef7bcc18c + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcurl >=8.11.1,<9.0a0 + - libcxx >=18 + - libgrpc >=1.67.1,<1.68.0a0 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - openssl >=3.4.0,<4.0a0 + constrains: + - libgoogle-cloud 2.35.0 *_0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 877733 + timestamp: 1738662822079 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.35.0-h0121fbd_0.conda + sha256: cb1ef70e55d2c1defbfd8413dbe85b5550782470dda4f8d393f28d41b6d9b007 + md5: 34e2243e0428aac6b3e903ef99b6d57d + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil + - libcrc32c >=1.1.2,<1.2.0a0 + - libcurl + - libgcc >=13 + - libgoogle-cloud 2.35.0 h2b5623c_0 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 785777 + timestamp: 1738662565066 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-storage-2.35.0-hb9b2b65_0.conda + sha256: cf316f07d5dcc3b6669bf6d93203d435133c99d075a9f92dfa28eff1bd4def74 + md5: ae6ab5b7af1409d0eafd2b77c5d5528a + depends: + - libabseil + - libcrc32c >=1.1.2,<1.2.0a0 + - libcurl + - libgcc >=13 + - libgoogle-cloud 2.35.0 hccf9d24_0 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 739471 + timestamp: 1738662862568 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-storage-2.35.0-h7081f7f_0.conda + sha256: 52dc2d18264543b564b59fb80338fbd9cb2296f011d75f41adcd85041795201c + md5: 958beca4e16f59360e30c48ff0351e04 + depends: + - __osx >=11.0 + - libabseil + - libcrc32c >=1.1.2,<1.2.0a0 + - libcurl + - libcxx >=18 + - libgoogle-cloud 2.35.0 hdbe95d5_0 + - libzlib >=1.3.1,<2.0a0 + - openssl + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 529210 + timestamp: 1738664024959 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.67.1-h25350d4_1.conda + sha256: 014627485b3cf0ea18e04c0bab07be7fb98722a3aeeb58477acc7e1c3d2f911e + md5: 0c6497a760b99a926c7c12b74951a39c + depends: + - __glibc >=2.17,<3.0.a0 + - c-ares >=1.34.4,<2.0a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libre2-11 >=2024.7.2 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + - re2 + constrains: + - grpc-cpp =1.67.1 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 7792251 + timestamp: 1735584856826 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgrpc-1.67.1-hf7ccdd3_1.conda + sha256: 3fa173dc1d7456aac2b26937daae86a08432a31640e3d6569c62edc661fc9bbe + md5: 8fb41a425bebaeb3d0fa568503612e64 + depends: + - c-ares >=1.34.4,<2.0a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libre2-11 >=2024.7.2 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + - re2 + constrains: + - grpc-cpp =1.67.1 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 7430006 + timestamp: 1735585769731 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgrpc-1.67.1-h0a426d6_1.conda + sha256: 630edf63981818ff590367cb95fddbed0f5a390464d0952c90ec81de899e84a6 + md5: 8a3cba079d6ac985e7d73c76a678fbb4 + depends: + - __osx >=11.0 + - c-ares >=1.34.4,<2.0a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libre2-11 >=2024.7.2 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + - re2 + constrains: + - grpc-cpp =1.67.1 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 5311706 + timestamp: 1735585137716 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libhwloc-2.11.2-default_h0d58e46_1001.conda + sha256: d14c016482e1409ae1c50109a9ff933460a50940d2682e745ab1c172b5282a69 + md5: 804ca9e91bcaea0824a341d55b1684f2 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + - libxml2 >=2.13.4,<3.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 2423200 + timestamp: 1731374922090 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h4ce23a2_1.conda + sha256: 18a4afe14f731bfb9cf388659994263904d20111e42f841e9eea1bb6f91f4ab4 + md5: e796ff8ddc598affdf7c173d6145f087 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: LGPL-2.1-only + purls: [] + size: 713084 + timestamp: 1740128065462 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libiconv-1.18-hc99b53d_1.conda + sha256: 3db14977036fe1f511a6dbecacbeff3fdb58482c5c0cf87a2ea3232f5a540836 + md5: 81541d85a45fbf4d0a29346176f1f21c + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: LGPL-2.1-only + purls: [] + size: 718600 + timestamp: 1740130562607 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.18-hfe07756_1.conda + sha256: d30780d24bf3a30b4f116fca74dedb4199b34d500fe6c52cced5f8cc1e926f03 + md5: 450e6bdc0c7d986acf7b8443dce87111 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: LGPL-2.1-only + purls: [] + size: 681804 + timestamp: 1740128227484 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-16_linux64_mkl.tar.bz2 + build_number: 16 + sha256: d6201f860b2d76ed59027e69c2bbad6d1cb211a215ec9705cc487cde488fa1fa + md5: a2f166748917d6d6e4707841ca1f519e + depends: + - libblas 3.9.0 16_linux64_mkl + constrains: + - blas * mkl + - liblapacke 3.9.0 16_linux64_mkl + - libcblas 3.9.0 16_linux64_mkl + - mkl <2025 + arch: x86_64 + platform: linux + track_features: + - blas_mkl + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 12791 + timestamp: 1660094578903 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-31_h411afd4_openblas.conda + build_number: 31 + sha256: 27613828ff6fb258b2e58802617df549f00089660ea8ab6c55c68f042c570162 + md5: 41dbff5eb805a75c120a7b7a1c744dc2 + depends: + - libblas 3.9.0 31_h1a9f1db_openblas + constrains: + - blas =2.131=openblas + - libcblas =3.9.0=31*_openblas + - liblapacke =3.9.0=31*_openblas + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 16845 + timestamp: 1740087923843 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-19_osxarm64_openblas.conda + build_number: 19 + sha256: f19cff537403c9feed98c7e18259022102b087f2b72a757e8a417476b9cf30c1 + md5: 3638eacb084c374f41f9efa40d20a47b + depends: + - libblas 3.9.0 19_osxarm64_openblas + constrains: + - libcblas 3.9.0 19_osxarm64_openblas + - blas * openblas + - liblapacke 3.9.0 19_osxarm64_openblas + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 14721 + timestamp: 1697484603691 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblapacke-3.9.0-16_linux64_mkl.tar.bz2 + build_number: 16 + sha256: 935036dc46c483cba8288c6de58d461ab3f42915715ffe9485105ad1dd203a0e + md5: 44ccc4d4dca6a8d57fa17442bc64b5a1 + depends: + - libblas 3.9.0 16_linux64_mkl + - libcblas 3.9.0 16_linux64_mkl + - liblapack 3.9.0 16_linux64_mkl + constrains: + - blas * mkl + - mkl <2025 + arch: x86_64 + platform: linux + track_features: + - blas_mkl + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 12793 + timestamp: 1660094586875 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda + sha256: cad52e10319ca4585bc37f0bc7cce99ec7c15dc9168e42ccb96b741b0a27db3f + md5: 42d5b6a0f30d3c10cd88cb8584fda1cb + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: 0BSD + purls: [] + size: 111357 + timestamp: 1738525339684 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.4-h86ecc28_0.conda + sha256: 96413664f0fade54a4931940d18749cfc8e6308349dbb0cb83adb2394ca1f730 + md5: b88244e0a115cc34f7fbca9b11248e76 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: 0BSD + purls: [] + size: 124197 + timestamp: 1738528201520 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.4-h39f12f2_0.conda + sha256: 560c59d3834cc652a84fb45531bd335ad06e271b34ebc216e380a89798fe8e2c + md5: e3fd1f8320a100f2b210e690a57cd615 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: 0BSD + purls: [] + size: 98945 + timestamp: 1738525462560 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda + sha256: b0f2b3695b13a989f75d8fd7f4778e1c7aabe3b36db83f0fe80b2cd812c0e975 + md5: 19e57602824042dfd0446292ef90488b + depends: + - __glibc >=2.17,<3.0.a0 + - c-ares >=1.32.3,<2.0a0 + - libev >=4.33,<4.34.0a0 + - libev >=4.33,<5.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.3.2,<4.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 647599 + timestamp: 1729571887612 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnghttp2-1.64.0-hc8609a4_0.conda + sha256: c093c6d370aadbf0409c20b6c54c488ee2f6fea976181919fcc63e87ee232673 + md5: f52c614fa214a8bedece9421c771670d + depends: + - c-ares >=1.32.3,<2.0a0 + - libev >=4.33,<4.34.0a0 + - libev >=4.33,<5.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.3.2,<4.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 714610 + timestamp: 1729571912479 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.64.0-h6d7220d_0.conda + sha256: 00cc685824f39f51be5233b54e19f45abd60de5d8847f1a56906f8936648b72f + md5: 3408c02539cee5f1141f9f11450b6a51 + depends: + - __osx >=11.0 + - c-ares >=1.34.2,<2.0a0 + - libcxx >=17 + - libev >=4.33,<4.34.0a0 + - libev >=4.33,<5.0a0 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.3.2,<4.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 566719 + timestamp: 1729572385640 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnpp-12.2.5.30-he02047a_2.conda + sha256: d8c97716825955c48681f4a3cde2f0cbbacc77c91b4cd944d4906f63385487df + md5: a96a1edd18bee676cf2dcca251d3d6a4 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 99461229 + timestamp: 1715711634268 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda + sha256: 26d77a3bb4dceeedc2a41bd688564fe71bf2d149fdcf117049970bc02ff1add6 + md5: 30fd6e37fe21f86f4bd26d6ee73eeec7 + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: LGPL-2.1-only + license_family: GPL + purls: [] + size: 33408 + timestamp: 1697359010159 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda + sha256: fd18c2b75d7411096428d36a70b36b1a17e31f7b8956b6905d145792d49e97f8 + md5: c14f32510f694e3185704d89967ec422 + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: LGPL-2.1-only + license_family: GPL + purls: [] + size: 34501 + timestamp: 1697358973269 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnvfatbin-12.4.127-he02047a_2.conda + sha256: d40f37532f86cbbe63439489be0e88561819190392cc519c69365b3fc47a2c5b + md5: d746b76642b4ac6e40f1219405672beb + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 792025 + timestamp: 1715711761341 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnvjitlink-12.4.127-he02047a_2.conda + sha256: 31382c8ef388a51bd2c283a239e037b8b30f9c7ecf6ec9744824445b59db39b6 + md5: 303845d6c48bf4185dc4138634650468 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 16571958 + timestamp: 1715711715842 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnvjpeg-12.3.1.117-he02047a_2.conda + sha256: 49a182f8da4ba30fbfee9692976d9da349371175c9c9576768d4754a51fef326 + md5: 8f3ed0e41a4b505de40b4f96f4bfb0fa + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 2491500 + timestamp: 1715711780068 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.29-pthreads_h9d3fd7e_0.conda + sha256: 3a2ccf4c9098cd18a636e9b7fff947fdeb4962bcfb75c9d6fd80b8c50caf6a3c + md5: a99e2bfcb1ad6362544c71281eb617e9 + depends: + - libgcc >=14 + - libgfortran + - libgfortran5 >=14.2.0 + constrains: + - openblas >=0.3.29,<0.3.30.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 4801657 + timestamp: 1739825308974 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.24-openmp_hd76b1f2_0.conda + sha256: 21edfdf620ac5c93571aab452199b6b4622c445441dad88ab4d2eb326a7b91b3 + md5: aacb05989f358affe1bafd4ea7294db4 + depends: + - libgfortran 5.* + - libgfortran5 >=12.3.0 + - llvm-openmp >=15.0.7 + constrains: + - openblas >=0.3.24,<0.3.25.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 2849225 + timestamp: 1693784744674 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-1.18.0-hfcad708_1.conda + sha256: 4ea235e08676f16b0d3c3380befe1478c0fa0141512ee709b011005c55c9619f + md5: 1f5a5d66e77a39dc5bd639ec953705cf + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcurl >=8.11.1,<9.0a0 + - libgrpc >=1.67.1,<1.68.0a0 + - libopentelemetry-cpp-headers 1.18.0 ha770c72_1 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libzlib >=1.3.1,<2.0a0 + - nlohmann_json + - prometheus-cpp >=1.3.0,<1.4.0a0 + constrains: + - cpp-opentelemetry-sdk =1.18.0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 801927 + timestamp: 1735643375271 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopentelemetry-cpp-1.18.0-h60b47f9_1.conda + sha256: 160c493cd0f897955b0b6035b51c6d7255ffbaed3c8a12d43e8e8a719d405aba + md5: afe3c8c53f4b6d27d553c230d4b34038 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcurl >=8.11.1,<9.0a0 + - libgrpc >=1.67.1,<1.68.0a0 + - libopentelemetry-cpp-headers 1.18.0 h8af1aa0_1 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libzlib >=1.3.1,<2.0a0 + - nlohmann_json + - prometheus-cpp >=1.3.0,<1.4.0a0 + constrains: + - cpp-opentelemetry-sdk =1.18.0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 800896 + timestamp: 1735643533825 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopentelemetry-cpp-1.18.0-h0c05b2d_1.conda + sha256: c6bcbd53d62a9e0d8c667e560db0ca2ecb7679277cbb3c23457aabe74fcb8cba + md5: 19c46cc18825f3924251c39ec1b0d983 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcurl >=8.11.1,<9.0a0 + - libgrpc >=1.67.1,<1.68.0a0 + - libopentelemetry-cpp-headers 1.18.0 hce30654_1 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libzlib >=1.3.1,<2.0a0 + - nlohmann_json + - prometheus-cpp >=1.3.0,<1.4.0a0 + constrains: + - cpp-opentelemetry-sdk =1.18.0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 529588 + timestamp: 1735643889612 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-headers-1.18.0-ha770c72_1.conda + sha256: aa1f7dea79ea8513ff77339ba7c6e9cf10dfa537143e7718b1cfb3af52b649f2 + md5: 4fb055f57404920a43b147031471e03b + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 320359 + timestamp: 1735643346175 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopentelemetry-cpp-headers-1.18.0-h8af1aa0_1.conda + sha256: 981c0b29a0789597fa8ed147b02df2d2ad0c7f863d87df74770c40cee1800228 + md5: 282193b19a19e3b5d75d18ef82713ef0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 319401 + timestamp: 1735643509251 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopentelemetry-cpp-headers-1.18.0-hce30654_1.conda + sha256: 82e5f5ba64debbaab3c601b265dfc0cdb4d2880feba9bada5fd2e67b9f91ada5 + md5: e965dad955841507549fdacd8f7f94c0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 320565 + timestamp: 1735643673319 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-19.0.1-h081d1f1_0_cpu.conda + sha256: e9c4a07e79886963bfcd05894a15b5d4c7137c1122273de68845315c35d6505d + md5: 8b58c378d65b213c001f04a174a2a70e + depends: + - __glibc >=2.17,<3.0.a0 + - libarrow 19.0.1 hfa2a6e7_0_cpu + - libgcc >=13 + - libstdcxx >=13 + - libthrift >=0.21.0,<0.21.1.0a0 + - openssl >=3.4.1,<4.0a0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 1244749 + timestamp: 1739769006551 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-19.0.1-hfc78867_0_cpu.conda + sha256: 4822fcb00e97644ce74f313cd2f44fe85085c64b1481ac7e1a22ee7dd2ef772a + md5: d19e95e75e9005e712ec81409868b880 + depends: + - libarrow 19.0.1 h36213f4_0_cpu + - libgcc >=13 + - libstdcxx >=13 + - libthrift >=0.21.0,<0.21.1.0a0 + - openssl >=3.4.1,<4.0a0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 1154758 + timestamp: 1739770461892 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-19.0.1-h636d7b7_0_cpu.conda + sha256: 54e4a18493d63b7fbd5cf39fadabe665bcf462121a7bc2f394f510b0bcf22031 + md5: 0cce19e6981849babe6c73797abbfa4e + depends: + - __osx >=11.0 + - libarrow 19.0.1 h0945df6_0_cpu + - libcxx >=18 + - libthrift >=0.21.0,<0.21.1.0a0 + - openssl >=3.4.1,<4.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 895659 + timestamp: 1739768176454 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda + sha256: 51125ebb8b7152e4a4e69fd2398489c4ec8473195c27cde3cbdf1cb6d18c5493 + md5: d8703f1ffe5a06356f06467f1d0b9464 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 2960815 + timestamp: 1735577210663 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.3-h44a3b7b_1.conda + sha256: ecb69f2b1668e784b41ba667493be846662d5ef702bef64fb2e013bb1364cdc4 + md5: 68f807f7cc13951652bbe048253fd405 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 2788074 + timestamp: 1735576315676 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.3-h3bd63a1_1.conda + sha256: f58a16b13ad53346903c833e266f83c3d770a43a432659b98710aed85ca885e7 + md5: bdbfea4cf45ae36652c6bbcc2e7ebe91 + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=18 + - libzlib >=1.3.1,<2.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 2271580 + timestamp: 1735576361997 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_2.conda + sha256: 4420f8362c71251892ba1eeb957c5e445e4e1596c0c651c28d0d8b415fe120c7 + md5: b2fede24428726dd867611664fb372e8 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libstdcxx >=13 + constrains: + - re2 2024.07.02.* + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 209793 + timestamp: 1735541054068 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_2.conda + sha256: 862c20de0120f802e618dcb25913d00c5b82f91f4be60b2d46a774e851adc2f6 + md5: 9a7dbbaab49f76a6f36e5c9d98e323a7 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libstdcxx >=13 + constrains: + - re2 2024.07.02.* + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 204305 + timestamp: 1735540986919 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h07bc746_2.conda + sha256: 112a73ad483353751d4c5d63648c69a4d6fcebf5e1b698a860a3f5124fc3db96 + md5: 6b1e3624d3488016ca4f1ca0c412efaa + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=18 + constrains: + - re2 2024.07.02.* + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 167155 + timestamp: 1735541067807 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsentencepiece-0.2.0-h8e10757_10.conda + sha256: dc399e0f04a09f8c1807c3b36e578eb81f81891c0ddf21de9c1fb9f048ce4031 + md5: 4f43dbcfacd3cc9a183dd3a48b94d3c0 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 823649 + timestamp: 1735627841126 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsentencepiece-0.2.0-h6164ad9_10.conda + sha256: 57074803772f65d4075b7d6dc17ff5aa40ec3a30109fa4225ca16911504c4a8b + md5: a7a192edc9cfba26a27df3283203e6a1 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 800865 + timestamp: 1735627982895 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsentencepiece-0.2.0-he13a0af_10.conda + sha256: 3347a8840d085ce1661928e736229f068d56c84312fbed90886e059023d85611 + md5: 1f67e5e30edd56e0a0bf6df6bb711a9d + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 754657 + timestamp: 1735628030895 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda + sha256: 0105bd108f19ea8e6a78d2d994a6d4a8db16d19a41212070d2d1d48a63c34161 + md5: a587892d3c13b6621a6091be690dbca2 + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: ISC + purls: [] + size: 205978 + timestamp: 1716828628198 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.20-h68df207_0.conda + sha256: 448df5ea3c5cf1af785aad46858d7a5be0522f4234a4dc9bb764f4d11ff3b981 + md5: 2e4a8f23bebdcb85ca8e5a0fbe75666a + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: ISC + purls: [] + size: 177394 + timestamp: 1716828514515 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda + sha256: fade8223e1e1004367d7101dd17261003b60aa576df6d7802191f8972f7470b1 + md5: a7ce36e284c5faaf93c220dfc39e3abd + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: ISC + purls: [] + size: 164972 + timestamp: 1716828607917 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.49.1-hee588c1_1.conda + sha256: 7a09eef804ef7cf4d88215c2297eabb72af8ad0bd5b012060111c289f14bbe7d + md5: 73cea06049cc4174578b432320a003b8 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux + license: Unlicense + purls: [] + size: 915956 + timestamp: 1739953155793 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.49.1-h5eb1b54_1.conda + sha256: 920fb3b7d3b873babf79a3e392cc82d43b8bd02a573ccaff34219efb5cf7b51e + md5: 150d64241fa27d9d35a7f421ca968a6c + depends: + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + arch: aarch64 + platform: linux + license: Unlicense + purls: [] + size: 915118 + timestamp: 1739953101699 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.1-h3f77e49_1.conda + sha256: 266639fb10ca92287961574b0b4d6031fa40dd9d723d64a0fcb08513a24dab03 + md5: c83357a21092bd952933c36c5cb4f4d6 + depends: + - __osx >=11.0 + - libzlib >=1.3.1,<2.0a0 + arch: arm64 + platform: osx + license: Unlicense + purls: [] + size: 898767 + timestamp: 1739953312379 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hf672d98_0.conda + sha256: 0407ac9fda2bb67e11e357066eff144c845801d00b5f664efbc48813af1e7bb9 + md5: be2de152d8073ef1c01b7728475f2fe7 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 304278 + timestamp: 1732349402869 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libssh2-1.11.1-ha41c0db_0.conda + sha256: 40f2af5357457546bd11cd64a3b9043d83865180f65ce602515c35f353be35c7 + md5: aeffe03c0e598f015aab08dbb04f6ee4 + depends: + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 311577 + timestamp: 1732349396421 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.1-h9cc3647_0.conda + sha256: f7047c6ed44bcaeb04432e8c74da87591940d091b0a3940c0d884b7faa8062e9 + md5: ddc7194676c285513706e5fc64f214d7 + depends: + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 279028 + timestamp: 1732349599461 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-h8f9b012_2.conda + sha256: 8f5bd92e4a24e1d35ba015c5252e8f818898478cb3bc50bd8b12ab54707dc4da + md5: a78c856b6dc6bf4ea8daeb9beaaa3fb0 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc 14.2.0 h767d61c_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 3884556 + timestamp: 1740240685253 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_2.conda + sha256: c30a74bc996013907f6d9f344da007c26d98ef9a0831151cd50aece3125c45d5 + md5: eadee2cda99697e29411c1013c187b92 + depends: + - libgcc 14.2.0 he277a41_2 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 3810779 + timestamp: 1740241094774 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_2.conda + sha256: e86f38b007cf97cc2c67cd519f2de12a313c4ee3f5ef11652ad08932a5e34189 + md5: c75da67f045c2627f59e6fcb5f4e3a9b + depends: + - libstdcxx 14.2.0 h8f9b012_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 53830 + timestamp: 1740240722530 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_2.conda + sha256: 0107886ead6f255956d8e520f8dff260f9ab3d0d51512f18c52710c406e4b2df + md5: c934c1fddad582fcc385b608eb06a70c + depends: + - libstdcxx 14.2.0 h3f4de04_2 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 53715 + timestamp: 1740241126343 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libthrift-0.21.0-h0e7cc3e_0.conda + sha256: ebb395232973c18745b86c9a399a4725b2c39293c9a91b8e59251be013db42f0 + md5: dcb95c0a98ba9ff737f7ae482aef7833 + depends: + - __glibc >=2.17,<3.0.a0 + - libevent >=2.1.12,<2.1.13.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.3.2,<4.0a0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 425773 + timestamp: 1727205853307 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libthrift-0.21.0-h154c74f_0.conda + sha256: f04ab1417aca1687edff9c30d8423ace285eb8c053dc16d595c6e47cfeefb274 + md5: c28792bf37f4ecdce8e3cb9e40750650 + depends: + - libevent >=2.1.12,<2.1.13.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.3.2,<4.0a0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 417329 + timestamp: 1727205944238 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libthrift-0.21.0-h64651cc_0.conda + sha256: 7a6c7d5f58cbbc2ccd6493b4b821639fdb0701b9b04c737a949e8cb6adf1c9ad + md5: 7ce2bd2f650f8c31ad7ba4c7bfea61b7 + depends: + - __osx >=11.0 + - libcxx >=17 + - libevent >=2.1.12,<2.1.13.0a0 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.3.2,<4.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 324342 + timestamp: 1727206096912 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.10.0-h4c51ac1_0.conda + sha256: 8e41563ee963bf8ded06da45f4e70bf42f913cb3c2e79364eb3218deffa3cd74 + md5: aeccfff2806ae38430638ffbb4be9610 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 82745 + timestamp: 1737244366901 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.10.0-ha346350_0.conda + sha256: 9c333e07b76ae1ea2c882db764be52dc82f632be66d993a50b35ca9c5475074a + md5: c5166bcfb8348e8fc31ee16ec3981a5e + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 82679 + timestamp: 1737329054400 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.10.0-hda25de7_0.conda + sha256: aca3ef31d3dff5cefd3790742a5ee6548f1cf0201d0e8cee08b01da503484eb6 + md5: 5f741aed1d8d393586a5fdcaaa87f45c + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 83628 + timestamp: 1737244450097 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda + sha256: 787eb542f055a2b3de553614b25f09eefb0a0931b0c87dbcce6efdfd92f04f18 + md5: 40b61aab5c7ba9ff276c41cfffe6b80b + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 33601 + timestamp: 1680112270483 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda + sha256: 616277b0c5f7616c2cdf36f6c316ea3f9aa5bb35f2d4476a349ab58b9b91675f + md5: 000e30b09db0b7c775b21695dff30969 + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 35720 + timestamp: 1680113474501 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.50.0-hb9d3cd8_0.conda + sha256: b4a8890023902aef9f1f33e3e35603ad9c2f16c21fdb58e968fa6c1bd3e94c0b + md5: 771ee65e13bc599b0b62af5359d80169 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 891272 + timestamp: 1737016632446 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuv-1.50.0-h86ecc28_0.conda + sha256: 67914c7f171d343059144d804c2f17fcd621a94e45f179a0fd843b8c1618823e + md5: 915db044076cbbdffb425170deb4ce38 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 621056 + timestamp: 1737016626950 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libuv-1.50.0-h5505292_0.conda + sha256: d13fb49d4c8262bf2c44ffb2c77bb2b5d0f85fc6de76bdb75208efeccb29fce6 + md5: 20717343fb30798ab7c23c2e92b748c1 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 418890 + timestamp: 1737016751326 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda + sha256: 6ae68e0b86423ef188196fff6207ed0c8195dd84273cb5623b85aa08033a410c + md5: 5aa797f8787fe7a17d1b0821485b5adc + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: LGPL-2.1-or-later + purls: [] + size: 100393 + timestamp: 1702724383534 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda + sha256: 6b46c397644091b8a26a3048636d10b989b1bf266d4be5e9474bf763f828f41f + md5: b4df5d7d4b63579d081fd3a4cf99740e + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: LGPL-2.1-or-later + purls: [] + size: 114269 + timestamp: 1702724369203 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.6-h8d12d68_0.conda + sha256: db8af71ea9c0ae95b7cb4a0f59319522ed2243942437a1200ceb391493018d85 + md5: 328382c0e0ca648e5c189d5ec336c604 + depends: + - __glibc >=2.17,<3.0.a0 + - icu >=75.1,<76.0a0 + - libgcc >=13 + - libiconv >=1.18,<2.0a0 + - liblzma >=5.6.4,<6.0a0 + - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 690296 + timestamp: 1739952967309 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.6-h2e0c361_0.conda + sha256: bb075df08b04b1b47e75a250f2ebbb2401c3367057d64b8d44ef1ef3f44480e1 + md5: a159a92f890f862408c951c08f13415f + depends: + - icu >=75.1,<76.0a0 + - libgcc >=13 + - libiconv >=1.18,<2.0a0 + - liblzma >=5.6.4,<6.0a0 + - libzlib >=1.3.1,<2.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 733707 + timestamp: 1739953178456 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.6-hce475f1_0.conda + sha256: 9ce429417545f7616ed528061305b3a1fc3732ff3bb24bd91cba260550879693 + md5: 8654012bd68aa48b94eee6c9faab85b6 + depends: + - __osx >=11.0 + - libiconv >=1.18,<2.0a0 + - liblzma >=5.6.4,<6.0a0 + - libzlib >=1.3.1,<2.0a0 + constrains: + - icu <0.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 582490 + timestamp: 1739953065675 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda + sha256: d4bfe88d7cb447768e31650f06257995601f89076080e76df55e3112d4e47dc4 + md5: edb0dca6bc32e4f4789199455a1dbeb8 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + constrains: + - zlib 1.3.1 *_2 + arch: x86_64 + platform: linux + license: Zlib + license_family: Other + purls: [] + size: 60963 + timestamp: 1727963148474 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda + sha256: 5a2c1eeef69342e88a98d1d95bff1603727ab1ff4ee0e421522acd8813439b84 + md5: 08aad7cbe9f5a6b460d0976076b6ae64 + depends: + - libgcc >=13 + constrains: + - zlib 1.3.1 *_2 + arch: aarch64 + platform: linux + license: Zlib + license_family: Other + purls: [] + size: 66657 + timestamp: 1727963199518 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda + sha256: ce34669eadaba351cd54910743e6a2261b67009624dbc7daeeafdef93616711b + md5: 369964e85dc26bfe78f41399b366c435 + depends: + - __osx >=11.0 + constrains: + - zlib 1.3.1 *_2 + arch: arm64 + platform: osx + license: Zlib + license_family: Other + purls: [] + size: 46438 + timestamp: 1727963202283 +- conda: https://conda.anaconda.org/conda-forge/linux-64/llvm-openmp-15.0.7-h0cdce71_0.conda + sha256: 7c67d383a8b1f3e7bf9e046e785325c481f6868194edcfb9d78d261da4ad65d4 + md5: 589c9a3575a050b583241c3d688ad9aa + depends: + - libzlib >=1.2.13,<2.0.0a0 + constrains: + - openmp 15.0.7|15.0.7.* + arch: x86_64 + platform: linux + license: Apache-2.0 WITH LLVM-exception + license_family: APACHE + purls: [] + size: 3268766 + timestamp: 1673584331056 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-15.0.7-h7cfbb63_0.conda + sha256: 6cc4cf021fc1f06df3b97598bf9583fe7a04fad6a4eef9882558f7932f362bc0 + md5: 358164e15a9320f11b84a53fb8d8e446 + constrains: + - openmp 15.0.7|15.0.7.* + arch: arm64 + platform: osx + license: Apache-2.0 WITH LLVM-exception + license_family: APACHE + purls: [] + size: 263326 + timestamp: 1673584823527 +- conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.10.0-h5888daf_1.conda + sha256: 47326f811392a5fd3055f0f773036c392d26fdb32e4d8e7a8197eed951489346 + md5: 9de5350a85c4a20c685259b889aa6393 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 167055 + timestamp: 1733741040117 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.10.0-h5ad3122_1.conda + sha256: 67e55058d275beea76c1882399640c37b5be8be4eb39354c94b610928e9a0573 + md5: 6654e411da94011e8fbe004eacb8fe11 + depends: + - libgcc >=13 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 184953 + timestamp: 1733740984533 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.10.0-h286801f_1.conda + sha256: 94d3e2a485dab8bdfdd4837880bde3dd0d701e2b97d6134b8806b7c8e69c8652 + md5: 01511afc6cc1909c5303cf31be17b44f + depends: + - __osx >=11.0 + - libcxx >=18 + arch: arm64 + platform: osx + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 148824 + timestamp: 1733741047892 +- pypi: https://download.pytorch.org/whl/MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl#sha256=ac07bad82163452a6884fe8fa0963fb98c2346ba78d779ec06bd7a6262132aee + name: markupsafe + version: 2.1.5 + sha256: ac07bad82163452a6884fe8fa0963fb98c2346ba78d779ec06bd7a6262132aee + requires_python: '>=3.7' +- conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_1.conda + sha256: 4a6bf68d2a2b669fecc9a4a009abd1cf8e72c2289522ff00d81b5a6e51ae78f5 + md5: eb227c3e0bf58f5bd69c0532b157975b + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - jinja2 >=3.0.0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/markupsafe?source=hash-mapping + size: 24604 + timestamp: 1733219911494 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312h998013c_1.conda + sha256: 4aa997b244014d3707eeef54ab0ee497d12c0d0d184018960cce096169758283 + md5: 46e547061080fddf9cf95a0327e8aba6 + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - jinja2 >=3.0.0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/markupsafe?source=hash-mapping + size: 24048 + timestamp: 1733219945697 +- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022718-release.conda + noarch: python + sha256: f3dcb14fed5470c0fc521542cbd2f1c56ca7e46d560f46176b8f926198cb3cbd + md5: 01fe5e0cf46c84a6345e323ad1316764 + depends: + - max-core ==25.2.0.dev2025022718 release + - max-python ==25.2.0.dev2025022718 release + - mojo-jupyter ==25.2.0.dev2025022718 release + - mblack ==25.2.0.dev2025022718 release + license: LicenseRef-Modular-Proprietary + size: 9905 + timestamp: 1740680254354 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022718-release.conda + sha256: 847d5767109a305d7bcad4ac29248a74a384034692934a0c54b00a590c27094a + md5: fc5a9ae36c7805979bd58ca55a25066f + depends: + - mblack ==25.2.0.dev2025022718 release + license: LicenseRef-Modular-Proprietary + size: 249811868 + timestamp: 1740680254354 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022718-release.conda + sha256: 250c35ecccd302e6c7de836ac200a5ece92e74508c2590c585d8803d488fd650 + md5: d88728b468c85902512a0f9b99251035 + depends: + - mblack ==25.2.0.dev2025022718 release + license: LicenseRef-Modular-Proprietary + size: 252108573 + timestamp: 1740680207793 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022718-release.conda + sha256: fb28d9e61aa507ea84b470082d3dc96844a24fe672d4e4c57e832655c5d0a202 + md5: dd8734453f7276a258f3351cc5c506c3 + depends: + - mblack ==25.2.0.dev2025022718 release + license: LicenseRef-Modular-Proprietary + size: 217273450 + timestamp: 1740681819160 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022718-release.conda + noarch: python + sha256: 831b4d62f66f0083321121c6ba25dedab3ee41d5e9f19d9752969592214af398 + md5: f828ace91aa057e4774e84ad459adccf + depends: + - max-core ==25.2.0.dev2025022718 release + - click >=8.0.0 + - numpy >=1.18,<2.0 + - sentencepiece >=0.2.0 + - tqdm >=4.67.1 + constrains: + - aiohttp >=3.11.12 + - fastapi >=0.114.2 + - gguf >=0.14.0 + - hf-transfer >=0.1.9 + - httpx >=0.28.1 + - huggingface_hub >=0.24.0 + - nvitop >=1.4.1 + - opentelemetry-api >=1.29.0 + - opentelemetry-exporter-otlp-proto-http >=1.27.0 + - opentelemetry-exporter-prometheus <1.0.0 + - opentelemetry-sdk >=1.29.0,<2.0 + - pillow >=10.3.0 + - prometheus_client >=0.21.0 + - prometheus-async >=22.2.0 + - psutil >=6.1.1 + - pydantic + - pydantic-settings >=2.7.1 + - pyinstrument >=5.0.1 + - python-json-logger >=2.0.7 + - requests >=2.32.3 + - rich >=13.9.4 + - safetensors >=0.5.2 + - sentinel >=0.3.0 + - sse-starlette >=2.1.2 + - tokenizers >=0.19.0 + - pytorch >=2.2.2,<=2.5.1 + - transformers >=4.40.1 + - uvicorn >=0.34.0 + - uvloop >=0.21.0 + - xgrammar ==0.1.11 + license: LicenseRef-Modular-Proprietary + size: 123584411 + timestamp: 1740680254354 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022718-release.conda + noarch: python + sha256: b9e5755b7bf6314a37a90ef0250c93f5e7c693954d7a6389a97ab9ef06e23cc3 + md5: bfd2e752d0fc9516b78a17169ce9cc78 + depends: + - max-core ==25.2.0.dev2025022718 release + - click >=8.0.0 + - numpy >=1.18,<2.0 + - sentencepiece >=0.2.0 + - tqdm >=4.67.1 + constrains: + - aiohttp >=3.11.12 + - fastapi >=0.114.2 + - gguf >=0.14.0 + - hf-transfer >=0.1.9 + - httpx >=0.28.1 + - huggingface_hub >=0.24.0 + - nvitop >=1.4.1 + - opentelemetry-api >=1.29.0 + - opentelemetry-exporter-otlp-proto-http >=1.27.0 + - opentelemetry-exporter-prometheus <1.0.0 + - opentelemetry-sdk >=1.29.0,<2.0 + - pillow >=10.3.0 + - prometheus_client >=0.21.0 + - prometheus-async >=22.2.0 + - psutil >=6.1.1 + - pydantic + - pydantic-settings >=2.7.1 + - pyinstrument >=5.0.1 + - python-json-logger >=2.0.7 + - requests >=2.32.3 + - rich >=13.9.4 + - safetensors >=0.5.2 + - sentinel >=0.3.0 + - sse-starlette >=2.1.2 + - tokenizers >=0.19.0 + - pytorch >=2.2.2,<=2.5.1 + - transformers >=4.40.1 + - uvicorn >=0.34.0 + - uvloop >=0.21.0 + - xgrammar ==0.1.11 + license: LicenseRef-Modular-Proprietary + size: 126004454 + timestamp: 1740680207793 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022718-release.conda + noarch: python + sha256: 7da9f4655082bb64c2b0cc996ffefa0ce5c49744854ed77a9b0d000e27cf5a55 + md5: b16d498a148aa61dca2a6bfec5cb8e46 + depends: + - max-core ==25.2.0.dev2025022718 release + - click >=8.0.0 + - numpy >=1.18,<2.0 + - sentencepiece >=0.2.0 + - tqdm >=4.67.1 + constrains: + - aiohttp >=3.11.12 + - fastapi >=0.114.2 + - gguf >=0.14.0 + - hf-transfer >=0.1.9 + - httpx >=0.28.1 + - huggingface_hub >=0.24.0 + - nvitop >=1.4.1 + - opentelemetry-api >=1.29.0 + - opentelemetry-exporter-otlp-proto-http >=1.27.0 + - opentelemetry-exporter-prometheus <1.0.0 + - opentelemetry-sdk >=1.29.0,<2.0 + - pillow >=10.3.0 + - prometheus_client >=0.21.0 + - prometheus-async >=22.2.0 + - psutil >=6.1.1 + - pydantic + - pydantic-settings >=2.7.1 + - pyinstrument >=5.0.1 + - python-json-logger >=2.0.7 + - requests >=2.32.3 + - rich >=13.9.4 + - safetensors >=0.5.2 + - sentinel >=0.3.0 + - sse-starlette >=2.1.2 + - tokenizers >=0.19.0 + - pytorch >=2.2.2,<=2.5.1 + - transformers >=4.40.1 + - uvicorn >=0.34.0 + - uvloop >=0.21.0 + - xgrammar ==0.1.11 + license: LicenseRef-Modular-Proprietary + size: 112658409 + timestamp: 1740681819160 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022718-release.conda + noarch: python + sha256: ff042a8abfed0e2e36b207e3d4f59a2b4577dea7f099b08d1aaef128ab796f09 + md5: 719ca7123d53415adcdd7f0cb8396c51 + depends: + - python >=3.9,<3.13 + - click >=8.0.0 + - mypy_extensions >=0.4.3 + - packaging >=22.0 + - pathspec >=0.9.0 + - platformdirs >=2 + - typing_extensions >=v4.12.2 + - python + license: MIT + size: 130852 + timestamp: 1740680254353 +- conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-2022.1.0-h84fe81f_915.tar.bz2 + sha256: 767318c4f2057822a7ebc238d6065ce12c6ae60df4ab892758adb79b1057ce02 + md5: b9c8f925797a93dbff45e1626b025a6b + depends: + - _openmp_mutex * *_llvm + - _openmp_mutex >=4.5 + - llvm-openmp >=14.0.3 + - tbb 2021.* + arch: x86_64 + platform: linux + license: LicenseRef-ProprietaryIntel + license_family: Proprietary + purls: [] + size: 209326825 + timestamp: 1652946040193 +- conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-devel-2022.1.0-ha770c72_916.tar.bz2 + sha256: 93d957608b17ada3039ff0acad2b8596451caa6829b3502fe87375e639ffc34e + md5: 69ba49e445f87aea2cba343a71a35ca2 + depends: + - mkl 2022.1.0 h84fe81f_915 + - mkl-include 2022.1.0 h84fe81f_915 + arch: x86_64 + platform: linux + license: LicenseRef-ProprietaryIntel + license_family: Proprietary + purls: [] + size: 25614 + timestamp: 1652946458276 +- conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-include-2022.1.0-h84fe81f_915.tar.bz2 + sha256: 63415fe64e99f8323d0191d45ea5b1ec3973317e728b9071267ffb7ff3b38364 + md5: 2dcd1acca05c11410d4494d7fc7dfa2a + arch: x86_64 + platform: linux + license: LicenseRef-ProprietaryIntel + license_family: Proprietary + purls: [] + size: 762563 + timestamp: 1652946186347 +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022718-release.conda + noarch: python + sha256: 19c33e23b27e240fee0b2a1d56921802ac88558dc2da417837cd590175561e16 + md5: 6b8d00b15817db11e026f824f7f0ba14 + depends: + - max-core ==25.2.0.dev2025022718 release + - python >=3.9,<3.13 + - jupyter_client >=8.6.2,<8.7 + - python + license: LicenseRef-Modular-Proprietary + size: 22981 + timestamp: 1740680254354 +- conda: https://conda.anaconda.org/conda-forge/linux-64/mpc-1.3.1-h24ddda3_1.conda + sha256: 1bf794ddf2c8b3a3e14ae182577c624fa92dea975537accff4bc7e5fea085212 + md5: aa14b9a5196a6d8dd364164b7ce56acf + depends: + - __glibc >=2.17,<3.0.a0 + - gmp >=6.3.0,<7.0a0 + - libgcc >=13 + - mpfr >=4.2.1,<5.0a0 + arch: x86_64 + platform: linux + license: LGPL-3.0-or-later + license_family: LGPL + purls: [] + size: 116777 + timestamp: 1725629179524 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/mpc-1.3.1-h8f1351a_1.conda + sha256: 2700899ad03302a1751dbf2bca135407e470dd83ac897ab91dd8675d4300f158 + md5: a5635df796b71f6ca400fc7026f50701 + depends: + - __osx >=11.0 + - gmp >=6.3.0,<7.0a0 + - mpfr >=4.2.1,<5.0a0 + arch: arm64 + platform: osx + license: LGPL-3.0-or-later + license_family: LGPL + purls: [] + size: 104766 + timestamp: 1725629165420 +- conda: https://conda.anaconda.org/conda-forge/linux-64/mpfr-4.2.1-h90cbb55_3.conda + sha256: f25d2474dd557ca66c6231c8f5ace5af312efde1ba8290a6ea5e1732a4e669c0 + md5: 2eeb50cab6652538eee8fc0bc3340c81 + depends: + - __glibc >=2.17,<3.0.a0 + - gmp >=6.3.0,<7.0a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: LGPL-3.0-only + license_family: LGPL + purls: [] + size: 634751 + timestamp: 1725746740014 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/mpfr-4.2.1-hb693164_3.conda + sha256: 4463e4e2aba7668e37a1b8532859191b4477a6f3602a5d6b4d64ad4c4baaeac5 + md5: 4e4ea852d54cc2b869842de5044662fb + depends: + - __osx >=11.0 + - gmp >=6.3.0,<7.0a0 + arch: arm64 + platform: osx + license: LGPL-3.0-only + license_family: LGPL + purls: [] + size: 345517 + timestamp: 1725746730583 +- pypi: https://download.pytorch.org/whl/mpmath-1.3.0-py3-none-any.whl#sha256=a0b2b9fe80bbcd81a6647ff13108738cfb482d481d826cc0e02f5b35e5c88d2c + name: mpmath + version: 1.3.0 + sha256: a0b2b9fe80bbcd81a6647ff13108738cfb482d481d826cc0e02f5b35e5c88d2c + requires_dist: + - pytest>=4.6 ; extra == 'develop' + - pycodestyle ; extra == 'develop' + - pytest-cov ; extra == 'develop' + - codecov ; extra == 'develop' + - wheel ; extra == 'develop' + - sphinx ; extra == 'docs' + - gmpy2>=2.1.0a4 ; platform_python_implementation != 'PyPy' and extra == 'gmpy' + - pytest>=4.6 ; extra == 'tests' +- conda: https://conda.anaconda.org/conda-forge/noarch/mpmath-1.3.0-pyhd8ed1ab_1.conda + sha256: 7d7aa3fcd6f42b76bd711182f3776a02bef09a68c5f117d66b712a6d81368692 + md5: 3585aa87c43ab15b167b574cd73b057b + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/mpmath?source=hash-mapping + size: 439705 + timestamp: 1733302781386 +- conda: 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 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/multidict?source=hash-mapping + size: 61507 + timestamp: 1733913288935 +- conda: 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 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/multidict?source=hash-mapping + size: 63077 + timestamp: 1733913233032 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/multidict-6.1.0-py312hdb8e49c_1.conda + sha256: 482fd09fb798090dc8cce2285fa69f43b1459099122eac2fb112d9b922b9f916 + md5: 0048335516fed938e4dd2c457b4c5b9b + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/multidict?source=hash-mapping + size: 55968 + timestamp: 1729065664275 +- conda: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.16-py312h66e93f0_1.conda + sha256: 459092c4e9305e00a0207b764a266c9caa14d82196322b2a74c96028c563a809 + md5: efe4a3f62320156f68579362314009f3 + depends: + - __glibc >=2.17,<3.0.a0 + - dill >=0.3.8 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/multiprocess?source=hash-mapping + size: 340540 + timestamp: 1724954755987 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.16-py312hb2c0f52_1.conda + sha256: f93627c78d1f86f593350196699b462c334542477aa55fe0212edf45392c9ab4 + md5: 642c63b684ce5614f157572b04816983 + depends: + - dill >=0.3.8 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/multiprocess?source=hash-mapping + size: 341428 + timestamp: 1724954862644 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/multiprocess-0.70.16-py312h024a12e_1.conda + sha256: d19a1c8b3fd44414657066becba960143e7115a385fb71b941f7e9c74f066a32 + md5: fd83a478d686df79aa394b9db1ad20b5 + depends: + - __osx >=11.0 + - dill >=0.3.8 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/multiprocess?source=hash-mapping + size: 342831 + timestamp: 1724954807776 +- conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda + sha256: 1895f47b7d68581a6facde5cb13ab8c2764c2e53a76bd746f8f98910dc4e08fe + md5: 29097e7ea634a45cc5386b95cac6568f + depends: + - python >=3.9 + license: MIT + license_family: MIT + purls: + - pkg:pypi/mypy-extensions?source=hash-mapping + size: 10854 + timestamp: 1733230986902 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda + sha256: 3fde293232fa3fca98635e1167de6b7c7fda83caf24b9d6c91ec9eefb4f4d586 + md5: 47e340acb35de30501a76c7c799c41d7 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: X11 AND BSD-3-Clause + purls: [] + size: 891641 + timestamp: 1738195959188 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-ha32ae93_3.conda + sha256: 91cfb655a68b0353b2833521dc919188db3d8a7f4c64bea2c6a7557b24747468 + md5: 182afabe009dc78d8b73100255ee6868 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: X11 AND BSD-3-Clause + purls: [] + size: 926034 + timestamp: 1738196018799 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda + sha256: 2827ada40e8d9ca69a153a45f7fd14f32b2ead7045d3bbb5d10964898fe65733 + md5: 068d497125e4bf8a66bf707254fff5ae + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: X11 AND BSD-3-Clause + purls: [] + size: 797030 + timestamp: 1738196177597 +- pypi: https://download.pytorch.org/whl/networkx-3.3-py3-none-any.whl#sha256=28575580c6ebdaf4505b22c6256a2b9de86b316dc63ba9e93abde3d78dfdbcf2 + name: networkx + version: '3.3' + sha256: 28575580c6ebdaf4505b22c6256a2b9de86b316dc63ba9e93abde3d78dfdbcf2 + requires_dist: + - numpy>=1.23 ; extra == 'default' + - scipy>=1.9,!=1.11.0,!=1.11.1 ; extra == 'default' + - matplotlib>=3.6 ; extra == 'default' + - pandas>=1.4 ; extra == 'default' + - changelist==0.5 ; extra == 'developer' + - pre-commit>=3.2 ; extra == 'developer' + - mypy>=1.1 ; extra == 'developer' + - rtoml ; extra == 'developer' + - sphinx>=7 ; extra == 'doc' + - pydata-sphinx-theme>=0.14 ; extra == 'doc' + - sphinx-gallery>=0.14 ; extra == 'doc' + - numpydoc>=1.7 ; extra == 'doc' + - pillow>=9.4 ; extra == 'doc' + - texext>=0.6.7 ; extra == 'doc' + - myst-nb>=1.0 ; extra == 'doc' + - lxml>=4.6 ; extra == 'extra' + - pygraphviz>=1.12 ; extra == 'extra' + - pydot>=2.0 ; extra == 'extra' + - sympy>=1.10 ; extra == 'extra' + - pytest>=7.2 ; extra == 'test' + - pytest-cov>=4.0 ; extra == 'test' + requires_python: '>=3.10' +- conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda + sha256: 39625cd0c9747fa5c46a9a90683b8997d8b9649881b3dc88336b13b7bdd60117 + md5: fd40bf7f7f4bc4b647dc8512053d9873 + depends: + - python >=3.10 + - python + constrains: + - numpy >=1.24 + - scipy >=1.10,!=1.11.0,!=1.11.1 + - matplotlib >=3.7 + - pandas >=2.0 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 1265008 + timestamp: 1731521053408 +- conda: https://conda.anaconda.org/conda-forge/linux-64/nlohmann_json-3.11.3-he02047a_1.conda + sha256: ce4bcced4f8eea71b7cac8bc3daac097abf7a5792f278cd811dedada199500c1 + md5: e46f7ac4917215b49df2ea09a694a3fa + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 122743 + timestamp: 1723652407663 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/nlohmann_json-3.11.3-h0a1ffab_1.conda + sha256: c90b1f11fc337d90a9e4c5aeeacac1418c5ba6a195097086566d38bb2ecf0f24 + md5: f2bd10ff23ab5c87327439c4499b3f3e + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 122755 + timestamp: 1723652622631 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/nlohmann_json-3.11.3-h00cdb27_1.conda + sha256: 3f4e6a4fa074bb297855f8111ab974dab6d9f98b7d4317d4dd46f8687ee2363b + md5: d2dee849c806430eee64d3acc98ce090 + depends: + - __osx >=11.0 + - libcxx >=16 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 123250 + timestamp: 1723652704997 +- conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda + sha256: fe3459c75cf84dcef6ef14efcc4adb0ade66038ddd27cadb894f34f4797687d8 + md5: d8285bea2a350f63fab23bf460221f3f + depends: + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - libgcc-ng >=12 + - liblapack >=3.9.0,<4.0a0 + - libstdcxx-ng >=12 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - numpy-base <0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/numpy?source=hash-mapping + size: 7484186 + timestamp: 1707225809722 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda + sha256: 23767677a7790bee5457d5e75ebd508b9a31c5354216f4310dd1acfca3f7a6f9 + md5: 9cebf5a06cb87d4569cd68df887af476 + depends: + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - libgcc-ng >=12 + - liblapack >=3.9.0,<4.0a0 + - libstdcxx-ng >=12 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - numpy-base <0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/numpy?source=hash-mapping + size: 6614296 + timestamp: 1707225994762 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda + sha256: c8841d6d6f61fd70ca80682efbab6bdb8606dc77c68d8acabfbd7c222054f518 + md5: d83fc83d589e2625a3451c9a7e21047c + depends: + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - libcxx >=16 + - liblapack >=3.9.0,<4.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - numpy-base <0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/numpy?source=hash-mapping + size: 6073136 + timestamp: 1707226249608 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ocl-icd-2.3.2-hb9d3cd8_2.conda + sha256: 96ddd13054032fabd54636f634d50bc74d10d8578bc946405c429b2d895db6f2 + md5: 2e8d2b469559d6b2cb6fd4b34f9c8d7f + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - opencl-headers >=2024.10.24 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 94934 + timestamp: 1732915114536 +- conda: https://conda.anaconda.org/conda-forge/linux-64/opencl-headers-2024.10.24-h5888daf_0.conda + sha256: 7e1d3ad55d4ad3ddf826e205d4603b9ed40c5e655a9dfd66b56f459d7ba14db3 + md5: 3ba02cce423fdac1a8582bd6bb189359 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 54060 + timestamp: 1732912937444 +- conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.1-h7b32b05_0.conda + sha256: cbf62df3c79a5c2d113247ddea5658e9ff3697b6e741c210656e239ecaf1768f + md5: 41adf927e746dc75ecf0ef841c454e48 + depends: + - __glibc >=2.17,<3.0.a0 + - ca-certificates + - libgcc >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 2939306 + timestamp: 1739301879343 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.1-hd08dc88_0.conda + sha256: d80b52b56b2206053968270069616868cbeb289ef855cf1584b1bb0fef61b37c + md5: 09036190605c57eaecf01218e0e9542d + depends: + - ca-certificates + - libgcc >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 3476570 + timestamp: 1739303256089 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.1-h81ee809_0.conda + sha256: 4f8e2389e1b711b44182a075516d02c80fa7a3a7e25a71ff1b5ace9eae57a17a + md5: 75f9f0c7b1740017e2db83a53ab9a28e + depends: + - __osx >=11.0 + - ca-certificates + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 2934522 + timestamp: 1739301896733 +- conda: https://conda.anaconda.org/conda-forge/linux-64/orc-2.0.3-h12ee42a_2.conda + sha256: dff5cc8023905782c86b3459055f26d4b97890e403b0698477c9fed15d8669cc + md5: 4f6f9f3f80354ad185e276c120eac3f0 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - lz4-c >=1.10.0,<1.11.0a0 + - snappy >=1.2.1,<1.3.0a0 + - tzdata + - zstd >=1.5.6,<1.6.0a0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 1188881 + timestamp: 1735630209320 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/orc-2.0.3-hdd485aa_2.conda + sha256: b6c67542352a86cdf143c3066d5cda855b74454a156eedcd8958b494c6a32a83 + md5: d19f01b42e5d6a2908b65df435aff42f + depends: + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - lz4-c >=1.10.0,<1.11.0a0 + - snappy >=1.2.1,<1.3.0a0 + - tzdata + - zstd >=1.5.6,<1.6.0a0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 1167714 + timestamp: 1735630248837 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/orc-2.0.3-h0ff2369_2.conda + sha256: cca330695f3bdb8c0e46350c29cd4af3345865544e36f1d7c9ba9190ad22f5f4 + md5: 24b1897c0d24afbb70704ba998793b78 + depends: + - __osx >=11.0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libzlib >=1.3.1,<2.0a0 + - lz4-c >=1.10.0,<1.11.0a0 + - snappy >=1.2.1,<1.3.0a0 + - tzdata + - zstd >=1.5.6,<1.6.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 438520 + timestamp: 1735630624140 +- conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + sha256: da157b19bcd398b9804c5c52fc000fcb8ab0525bdb9c70f95beaa0bb42f85af1 + md5: 3bfed7e6228ebf2f7b9eaa47f1b4e2aa + depends: + - python >=3.8 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/packaging?source=hash-mapping + size: 60164 + timestamp: 1733203368787 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.3-py312hf9745cd_1.conda + sha256: ad275a83bfebfa8a8fee9b0569aaf6f513ada6a246b2f5d5b85903d8ca61887e + md5: 8bce4f6caaf8c5448c7ac86d87e26b4b + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + - numpy >=1.19,<3 + - numpy >=1.22.4 + - python >=3.12,<3.13.0a0 + - python-dateutil >=2.8.1 + - python-tzdata >=2022a + - python_abi 3.12.* *_cp312 + - pytz >=2020.1,<2024.2 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/pandas?source=hash-mapping + size: 15436913 + timestamp: 1726879054912 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pandas-2.2.3-py312ha2895bd_2.conda + sha256: a34b10077de97eea72c81cb96e3ddc7d48320c0fc7d9b28ba8d9d2bead1d8297 + md5: 39a91ac336d350513de6aad56da5a920 + depends: + - libgcc >=13 + - libstdcxx >=13 + - numpy >=1.19,<3 + - numpy >=1.22.4 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python-dateutil >=2.8.1 + - python-tzdata >=2022a + - python_abi 3.12.* *_cp312 + - pytz >=2020.1,<2024.2 + constrains: + - fsspec >=2022.11.0 + - s3fs >=2022.11.0 + - fastparquet >=2022.12.0 + - pyreadstat >=1.2.0 + - qtpy >=2.3.0 + - scipy >=1.10.0 + - beautifulsoup4 >=4.11.2 + - gcsfs >=2022.11.0 + - numexpr >=2.8.4 + - sqlalchemy >=2.0.0 + - pyxlsb >=1.0.10 + - numba >=0.56.4 + - lxml >=4.9.2 + - matplotlib >=3.6.3 + - psycopg2 >=2.9.6 + - tzdata >=2022.7 + - bottleneck >=1.3.6 + - xarray >=2022.12.0 + - xlsxwriter >=3.0.5 + - zstandard >=0.19.0 + - blosc >=1.21.3 + - pytables >=3.8.0 + - openpyxl >=3.1.0 + - pyqt5 >=5.15.8 + - tabulate >=0.9.0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/pandas?source=hash-mapping + size: 15162992 + timestamp: 1736811533875 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.3-py312hcd31e36_1.conda + sha256: ff0cb54b5d058c7987b4a0984066e893642d1865a7bb695294b6172e2fcdc457 + md5: c68bfa69e6086c381c74e16fd72613a8 + depends: + - __osx >=11.0 + - libcxx >=17 + - numpy >=1.19,<3 + - numpy >=1.22.4 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python-dateutil >=2.8.1 + - python-tzdata >=2022a + - python_abi 3.12.* *_cp312 + - pytz >=2020.1,<2024.2 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/pandas?source=hash-mapping + size: 14470437 + timestamp: 1726878887799 +- conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + sha256: 9f64009cdf5b8e529995f18e03665b03f5d07c0b17445b8badef45bde76249ee + md5: 617f15191456cc6a13db418a275435e5 + depends: + - python >=3.9 + license: MPL-2.0 + license_family: MOZILLA + purls: + - pkg:pypi/pathspec?source=hash-mapping + size: 41075 + timestamp: 1733233471940 +- conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + sha256: bb50f6499e8bc1d1a26f17716c97984671121608dc0c3ecd34858112bce59a27 + md5: 577852c7e53901ddccc7e6a9959ddebe + depends: + - python >=3.9 + license: MIT + license_family: MIT + purls: + - pkg:pypi/platformdirs?source=hash-mapping + size: 20448 + timestamp: 1733232756001 +- conda: https://conda.anaconda.org/conda-forge/linux-64/prometheus-cpp-1.3.0-ha5d0236_0.conda + sha256: 013669433eb447548f21c3c6b16b2ed64356f726b5f77c1b39d5ba17a8a4b8bc + md5: a83f6a2fdc079e643237887a37460668 + depends: + - __glibc >=2.17,<3.0.a0 + - libcurl >=8.10.1,<9.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - zlib + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 199544 + timestamp: 1730769112346 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/prometheus-cpp-1.3.0-h7938499_0.conda + sha256: 9350d7bbc3982a732ff13a7fd17b585509e3b7d0191ac7b810cc3224868e3648 + md5: 10f4301290e51c49979ff98d1bdf2556 + depends: + - libcurl >=8.10.1,<9.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - zlib + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 211335 + timestamp: 1730769181127 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/prometheus-cpp-1.3.0-h0967b3e_0.conda + sha256: 851a77ae1a8e90db9b9f3c4466abea7afb52713c3d98ceb0d37ba6ff27df2eff + md5: 7172339b49c94275ba42fec3eaeda34f + depends: + - __osx >=11.0 + - libcurl >=8.10.1,<9.0a0 + - libcxx >=18 + - libzlib >=1.3.1,<2.0a0 + - zlib + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 173220 + timestamp: 1730769371051 +- conda: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.1-py312h178313f_1.conda + sha256: 6d5ff6490c53e14591b70924711fe7bd70eb7fbeeeb1cbd9ed2f6d794ec8c4eb + md5: 349635694b4df27336bc15a49e9220e9 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/propcache?source=hash-mapping + size: 52947 + timestamp: 1737635699390 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.2.1-py312hcc812fe_1.conda + sha256: d759d8ab9c060b42cabf6312b9a04aa590daecabf1dd4e35731f4bc1b5c388bb + md5: 533b07e9fd835938f465225613825eee + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/propcache?source=hash-mapping + size: 52776 + timestamp: 1737635802135 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.1-py312h998013c_1.conda + sha256: 96145760baad111d7ae4213ea8f8cc035cf33b001f5ff37d92268e4d28b0941d + md5: 83678928c58c9ae76778a435b6c7a94a + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/propcache?source=hash-mapping + size: 50942 + timestamp: 1737635896600 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-19.0.1-py312h7900ff3_0.conda + sha256: 82a0b6ef00473c134ff32138a6fe1f6edc600f362f2007d33d6c6723e220a83d + md5: 972f2a7f04b117accc08a11469c2cb6e + depends: + - libarrow-acero 19.0.1.* + - libarrow-dataset 19.0.1.* + - libarrow-substrait 19.0.1.* + - libparquet 19.0.1.* + - pyarrow-core 19.0.1 *_0_* + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 25300 + timestamp: 1739792645286 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-19.0.1-py312h8025657_0.conda + sha256: d17f85be9e3c9ccdbf46a00f51a155d6c9d02837f3ff850539cc931ce149546f + md5: 0f2b788d71caa13c9e05fb4366e3b564 + depends: + - libarrow-acero 19.0.1.* + - libarrow-dataset 19.0.1.* + - libarrow-substrait 19.0.1.* + - libparquet 19.0.1.* + - pyarrow-core 19.0.1 *_0_* + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 25487 + timestamp: 1739792927040 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-19.0.1-py312h1f38498_0.conda + sha256: 212a9ef1971d69882b977a930b3e8cd9d78bb58c027119a52b92d48a5e47f9eb + md5: 4bbcfad0bfcad7ee1d617a9b6db564ee + depends: + - libarrow-acero 19.0.1.* + - libarrow-dataset 19.0.1.* + - libarrow-substrait 19.0.1.* + - libparquet 19.0.1.* + - pyarrow-core 19.0.1 *_0_* + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 25462 + timestamp: 1739792876991 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-19.0.1-py312h01725c0_0_cpu.conda + sha256: b2d397ee72a8e33aa1b2bcaa525b3bfc1dad333a631e668e54bcdcf275b3d69b + md5: 227543d1eef90da786f0c63bd0787839 + depends: + - __glibc >=2.17,<3.0.a0 + - libarrow 19.0.1.* *cpu + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - numpy >=1.21,<3 + - apache-arrow-proc =*=cpu + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/pyarrow?source=hash-mapping + size: 5203933 + timestamp: 1739792285799 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-19.0.1-py312h66f7834_0_cpu.conda + sha256: ab25433629022236b24d35a53dbef033ef60f3cb3a71fa630392d7340791bdc7 + md5: e83aadc9635bdcf69845587c4c837fd3 + depends: + - libarrow 19.0.1.* *cpu + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - numpy >=1.21,<3 + - apache-arrow-proc =*=cpu + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/pyarrow?source=hash-mapping + size: 5017444 + timestamp: 1739792893195 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-19.0.1-py312hc40f475_0_cpu.conda + sha256: 50ad4d67a1a2be32c2441a945a333b5347e36f027ea629fd903e7eaae77e0ed7 + md5: 90e3c0898e229d76e4a6949f621f0f58 + depends: + - __osx >=11.0 + - libarrow 19.0.1.* *cpu + - libcxx >=18 + - libzlib >=1.3.1,<2.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - apache-arrow-proc =*=cpu + - numpy >=1.21,<3 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/pyarrow?source=hash-mapping + size: 4398733 + timestamp: 1739792829575 +- conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda + sha256: ba3b032fa52709ce0d9fd388f63d330a026754587a2f461117cac9ab73d8d0d8 + md5: 461219d1a5bd61342293efa2c0c90eac + depends: + - __unix + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/pysocks?source=hash-mapping + size: 21085 + timestamp: 1733217331982 +- conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.9-h9e4cc4f_0_cpython.conda + sha256: 64fed5178f1e9c8ac0f572ac0ce37955f5dee7b2bcac665202bc14f1f7dd618a + md5: 5665f0079432f8848079c811cdb537d5 + depends: + - __glibc >=2.17,<3.0.a0 + - bzip2 >=1.0.8,<2.0a0 + - ld_impl_linux-64 >=2.36.1 + - libexpat >=2.6.4,<3.0a0 + - libffi >=3.4,<4.0a0 + - libgcc >=13 + - liblzma >=5.6.4,<6.0a0 + - libnsl >=2.0.1,<2.1.0a0 + - libsqlite >=3.48.0,<4.0a0 + - libuuid >=2.38.1,<3.0a0 + - libxcrypt >=4.4.36 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.4.1,<4.0a0 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + constrains: + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Python-2.0 + purls: [] + size: 31581682 + timestamp: 1739521496324 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.9-h1683364_0_cpython.conda + sha256: 0366f38918bceda8ff5917d7bbe1cea2bc8b6c74e7245eb0e4b0d3c2d37f76cf + md5: 2e7ad70254455e0508adabff10218512 + depends: + - bzip2 >=1.0.8,<2.0a0 + - ld_impl_linux-aarch64 >=2.36.1 + - libexpat >=2.6.4,<3.0a0 + - libffi >=3.4,<4.0a0 + - libgcc >=13 + - liblzma >=5.6.4,<6.0a0 + - libnsl >=2.0.1,<2.1.0a0 + - libsqlite >=3.48.0,<4.0a0 + - libuuid >=2.38.1,<3.0a0 + - libxcrypt >=4.4.36 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.4.1,<4.0a0 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + constrains: + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Python-2.0 + purls: [] + size: 13804161 + timestamp: 1739519531794 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.9-hc22306f_0_cpython.conda + sha256: cbf81a78d3ca6e663e827523e6ddbc28369cac488da047a28f83875eb52fe5f6 + md5: 1d105a6c46a753e3c0bab54a1ad24063 + depends: + - __osx >=11.0 + - bzip2 >=1.0.8,<2.0a0 + - libexpat >=2.6.4,<3.0a0 + - libffi >=3.4,<4.0a0 + - liblzma >=5.6.4,<6.0a0 + - libsqlite >=3.48.0,<4.0a0 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.4.1,<4.0a0 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + constrains: + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Python-2.0 + purls: [] + size: 12947786 + timestamp: 1739520092196 +- conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + sha256: a50052536f1ef8516ed11a844f9413661829aa083304dc624c5925298d078d79 + md5: 5ba79d7c71f03c678c8ead841f347d6e + depends: + - python >=3.9 + - six >=1.5 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/python-dateutil?source=hash-mapping + size: 222505 + timestamp: 1733215763718 +- conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.1-pyhd8ed1ab_0.conda + sha256: 1597d6055d34e709ab8915091973552a0b8764c8032ede07c4e99670da029629 + md5: 392c91c42edd569a7ec99ed8648f597a + depends: + - python >=3.9 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/tzdata?source=hash-mapping + size: 143794 + timestamp: 1737541204030 +- conda: https://conda.anaconda.org/conda-forge/linux-64/python-xxhash-3.5.0-py312h66e93f0_2.conda + sha256: b5950a737d200e2e3cf199ab7b474ac194fcf4d6bee13bcbdf32c5a5cca7eaf0 + md5: cc3f6c452697c1cf7e4e6e5f21861f96 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - xxhash >=0.8.3,<0.8.4.0a0 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + purls: + - pkg:pypi/xxhash?source=hash-mapping + size: 23216 + timestamp: 1740594909669 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-xxhash-3.5.0-py312h52516f5_2.conda + sha256: b0c7528f2597e33911f179dad9852a4958683533570f8cc68976068b444461f4 + md5: c6de44ac405bf8a793c57850ea6b427a + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - xxhash >=0.8.3,<0.8.4.0a0 + arch: aarch64 + platform: linux + license: BSD-2-Clause + license_family: BSD + purls: + - pkg:pypi/xxhash?source=compressed-mapping + size: 23768 + timestamp: 1740595924431 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-xxhash-3.5.0-py312hea69d52_2.conda + sha256: 10c3df8dae696da4bd8532609999991ae1f3c4cc1a1e7f6a636cf6aa19d9eb82 + md5: b0c7097883bb4d8acfd72e7b9c6b93cd + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - xxhash >=0.8.3,<0.8.4.0a0 + arch: arm64 + platform: osx + license: BSD-2-Clause + license_family: BSD + purls: + - pkg:pypi/xxhash?source=hash-mapping + size: 21947 + timestamp: 1740595129087 +- conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda + build_number: 5 + sha256: d10e93d759931ffb6372b45d65ff34d95c6000c61a07e298d162a3bc2accebb0 + md5: 0424ae29b104430108f5218a66db7260 + constrains: + - python 3.12.* *_cpython + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 6238 + timestamp: 1723823388266 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.12-5_cp312.conda + build_number: 5 + sha256: 5ccdad9981753cc4a2d126e356673a21c0cd5b34e209cb8d476a3947d4ad9b39 + md5: 62b20f305498284a07dc6c45fd0e5c87 + constrains: + - python 3.12.* *_cpython + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 6329 + timestamp: 1723823366253 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-5_cp312.conda + build_number: 5 + sha256: 49d624e4b809c799d2bf257b22c23cf3fc4460f5570d9a58e7ad86350aeaa1f4 + md5: b76f9b1c862128e56ac7aa8cd2333de9 + constrains: + - python 3.12.* *_cpython + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 6278 + timestamp: 1723823099686 +- conda: https://conda.anaconda.org/pytorch/linux-64/pytorch-2.5.1-py3.12_cuda12.4_cudnn9.1.0_0.tar.bz2 + sha256: 8183ab363b7892f67ba3660929f1c3f4f8646e4a2a02d499d387acc0509764c3 + md5: 42164c6ce8e563c20a542686a8b9b964 + depends: + - blas * mkl + - filelock + - jinja2 + - llvm-openmp <16 + - mkl >=2018 + - networkx + - python >=3.12,<3.13.0a0 + - pytorch-cuda >=12.4,<12.5 + - pytorch-mutex 1.0 cuda + - pyyaml + - sympy + - torchtriton 3.1.0 + - typing_extensions + constrains: + - cpuonly <0 + arch: x86_64 + platform: linux + license: BSD 3-Clause + license_family: BSD + purls: + - pkg:pypi/torch?source=hash-mapping + size: 1571072276 + timestamp: 1729655770987 +- conda: https://conda.anaconda.org/pytorch/osx-arm64/pytorch-2.5.1-py3.12_0.tar.bz2 + sha256: 1d476688886b78f641973d1b5c1352eaece59484f4408f2c1af46e3634a6c957 + md5: a393d6275c53d5218015a23c741dc004 + depends: + - filelock + - jinja2 + - llvm-openmp <16 + - networkx + - python >=3.12,<3.13.0a0 + - pyyaml + - sympy + - typing_extensions + constrains: + - cpuonly + arch: arm64 + platform: osx + license: BSD 3-Clause + license_family: BSD + purls: + - pkg:pypi/torch?source=hash-mapping + size: 62089911 + timestamp: 1729651375444 +- conda: https://conda.anaconda.org/pytorch/linux-64/pytorch-cuda-12.4-hc786d27_7.tar.bz2 + sha256: 4ce6352f6270673aaf335909da2bbdd70ad8aaae489319e1e3a5ac0aae720314 + md5: 06635b1bbf5e2fef4a8b9b282500cd7b + depends: + - cuda-cudart >=12.4,<12.5 + - cuda-cupti >=12.4,<12.5 + - cuda-libraries >=12.4,<12.5 + - cuda-nvrtc >=12.4,<12.5 + - cuda-nvtx >=12.4,<12.5 + - cuda-runtime >=12.4,<12.5 + - libcublas >=12.4.5.8,<12.5.2.13 + - libcufft >=11.2.1.3,<11.2.3.18 + - libcusolver >=11.6.1.9,<11.6.2.40 + - libcusparse >=12.3.1.170,<12.4.1.18 + - libnpp >=12.2.5.30,<12.3.0.116 + - libnvjitlink >=12.4.127,<12.5.40 + - libnvjpeg >=12.3.1.117,<12.3.2.38 + arch: x86_64 + platform: linux + purls: [] + size: 7189 + timestamp: 1724179791784 +- conda: https://conda.anaconda.org/pytorch/noarch/pytorch-mutex-1.0-cuda.tar.bz2 + build_number: 100 + sha256: c16316183f51b74ca5eee4dcb8631052f328c0bbf244176734a0b7d390b81ee3 + md5: a948316e36fb5b11223b3fcfa93f8358 + purls: [] + size: 2906 + timestamp: 1628062930777 +- conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda + sha256: 1a7d6b233f7e6e3bbcbad054c8fd51e690a67b129a899a056a5e45dd9f00cb41 + md5: 3eeeeb9e4827ace8c0c1419c85d590ad + depends: + - python >=3.7 + license: MIT + license_family: MIT + purls: + - pkg:pypi/pytz?source=hash-mapping + size: 188538 + timestamp: 1706886944988 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py312h178313f_2.conda + sha256: 159cba13a93b3fe084a1eb9bda0a07afc9148147647f0d437c3c3da60980503b + md5: cf2485f39740de96e2a7f2bb18ed2fee + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - yaml >=0.2.5,<0.3.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: + - pkg:pypi/pyyaml?source=hash-mapping + size: 206903 + timestamp: 1737454910324 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyyaml-6.0.2-py312hcc812fe_2.conda + sha256: dc78e41d51300722ba35ac4a10d37339ceffbe22d7501c71dfd3f633a4f8e79a + md5: 4de4a5ff81c941674e08595244e7cd61 + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - yaml >=0.2.5,<0.3.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: + - pkg:pypi/pyyaml?source=hash-mapping + size: 199172 + timestamp: 1737454840766 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py312h998013c_2.conda + sha256: ad225ad24bfd60f7719709791345042c3cb32da1692e62bd463b084cf140e00d + md5: 68149ed4d4e9e1c42d2ba1f27f08ca96 + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - yaml >=0.2.5,<0.3.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: + - pkg:pypi/pyyaml?source=hash-mapping + size: 192148 + timestamp: 1737454886351 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.1-py312hbf22597_0.conda + sha256: 90ec0da0317d3d76990a40c61e1709ef859dd3d8c63838bad2814f46a63c8a2e + md5: 7cec8d0dac15a2d9fea8e49879aa779d + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libsodium >=1.0.20,<1.0.21.0a0 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - zeromq >=4.3.5,<4.4.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/pyzmq?source=hash-mapping + size: 382698 + timestamp: 1738271121975 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyzmq-26.2.1-py312h2427ae1_0.conda + sha256: 9558f9330093e5c21b7c04e2e212e19b9b88ad9c808315f12c0765b244018a09 + md5: 0520da8de6870d8ff63e818e927d1524 + depends: + - libgcc >=13 + - libsodium >=1.0.20,<1.0.21.0a0 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - zeromq >=4.3.5,<4.4.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/pyzmq?source=hash-mapping + size: 375156 + timestamp: 1738273130727 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.1-py312hf4875e0_0.conda + sha256: 70d398b334668dc597d33e27847ede1b0829a639b9c91ee845355e52c86c2293 + md5: bfbefdb140b546a80827ff7c9d5ac7b8 + depends: + - __osx >=11.0 + - libcxx >=18 + - libsodium >=1.0.20,<1.0.21.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - zeromq >=4.3.5,<4.4.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/pyzmq?source=hash-mapping + size: 364649 + timestamp: 1738271263898 +- conda: https://conda.anaconda.org/conda-forge/linux-64/re2-2024.07.02-h9925aae_2.conda + sha256: d213c44958d49ce7e0d4d5b81afec23640cce5016685dbb2d23571a99caa4474 + md5: e84ddf12bde691e8ec894b00ea829ddf + depends: + - libre2-11 2024.07.02 hbbce691_2 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 26786 + timestamp: 1735541074034 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/re2-2024.07.02-haa97905_2.conda + sha256: 040848655df9119bae5a549fb5c8956a5537120859416c1d9d0712b7bac9f12e + md5: 1bf0135339b4a7419a198a795d2d4be0 + depends: + - libre2-11 2024.07.02 h18dbdb1_2 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 26830 + timestamp: 1735540999398 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/re2-2024.07.02-h6589ca4_2.conda + sha256: 4d3799c05f8f662922a0acd129d119774760a3281b883603678e128d1cb307fb + md5: 7a8b4ad8c58a3408ca89d78788c78178 + depends: + - libre2-11 2024.07.02 h07bc746_2 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 26861 + timestamp: 1735541088455 +- conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda + sha256: 2d6d0c026902561ed77cd646b5021aef2d4db22e57a5b0178dfc669231e06d2c + md5: 283b96675859b20a825f8fa30f311446 + depends: + - libgcc >=13 + - ncurses >=6.5,<7.0a0 + arch: x86_64 + platform: linux + license: GPL-3.0-only + license_family: GPL + purls: [] + size: 282480 + timestamp: 1740379431762 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8382b9d_2.conda + sha256: 54bed3a3041befaa9f5acde4a37b1a02f44705b7796689574bcf9d7beaad2959 + md5: c0f08fc2737967edde1a272d4bf41ed9 + depends: + - libgcc >=13 + - ncurses >=6.5,<7.0a0 + arch: aarch64 + platform: linux + license: GPL-3.0-only + license_family: GPL + purls: [] + size: 291806 + timestamp: 1740380591358 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda + sha256: 7db04684d3904f6151eff8673270922d31da1eea7fa73254d01c437f49702e34 + md5: 63ef3f6e6d6d5c589e64f11263dc5676 + depends: + - ncurses >=6.5,<7.0a0 + arch: arm64 + platform: osx + license: GPL-3.0-only + license_family: GPL + purls: [] + size: 252359 + timestamp: 1740379663071 +- conda: https://conda.anaconda.org/conda-forge/linux-64/regex-2024.11.6-py312h66e93f0_0.conda + sha256: fcb5687d3ec5fff580b64b8fb649d9d65c999a91a5c3108a313ecdd2de99f06b + md5: 647770db979b43f9c9ca25dcfa7dc4e4 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Python-2.0 + license_family: PSF + purls: + - pkg:pypi/regex?source=hash-mapping + size: 402821 + timestamp: 1730952378415 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/regex-2024.11.6-py312hb2c0f52_0.conda + sha256: ec2c416860de29224e447e2031f8686a05476759c17da1f32f61d4307e540ec8 + md5: fa8b589107567f532fa1380e66f91776 + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Python-2.0 + license_family: PSF + purls: + - pkg:pypi/regex?source=hash-mapping + size: 398947 + timestamp: 1730952477463 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/regex-2024.11.6-py312hea69d52_0.conda + sha256: dcdec32f2c7dd37986baa692bedf9db126ad34e92e5e9b64f707cba3d04d2525 + md5: e73cda1f18846b608284bd784f061eac + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Python-2.0 + license_family: PSF + purls: + - pkg:pypi/regex?source=hash-mapping + size: 366374 + timestamp: 1730952427552 +- conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda + sha256: d701ca1136197aa121bbbe0e8c18db6b5c94acbd041c2b43c70e5ae104e1d8ad + md5: a9b9368f3701a417eac9edbcae7cb737 + depends: + - certifi >=2017.4.17 + - charset-normalizer >=2,<4 + - idna >=2.5,<4 + - python >=3.9 + - urllib3 >=1.21.1,<3 + constrains: + - chardet >=3.0.2,<6 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/requests?source=hash-mapping + size: 58723 + timestamp: 1733217126197 +- conda: https://conda.anaconda.org/conda-forge/linux-64/rhash-1.4.5-hb9d3cd8_0.conda + sha256: 04677caac29ec64a5d41d0cca8dbec5f60fa166d5458ff5a4393e4dc08a4799e + md5: 9af0e7981755f09c81421946c4bcea04 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 186921 + timestamp: 1728886721623 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/rhash-1.4.5-h86ecc28_0.conda + sha256: 82f3555c8f4fa76faf111622766457a8d17755bf493c0ac72ee59f4dad71d994 + md5: 93bac703d92dafc337db454e6e93a520 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 201958 + timestamp: 1728886717057 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/rhash-1.4.5-h7ab814d_0.conda + sha256: e6a3e9dbfcb5ad5d69a20c8ac237d37a282a95983314a28912fc54208c5db391 + md5: 352b210f81798ae1e2f25a98ef4b3b54 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 177240 + timestamp: 1728886815751 +- conda: https://conda.anaconda.org/conda-forge/linux-64/s2n-1.5.11-h072c03f_0.conda + sha256: cfdd98c8f9a1e5b6f9abce5dac6d590cc9fe541a08466c9e4a26f90e00b569e3 + md5: 5e8060d52f676a40edef0006a75c718f + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - openssl >=3.4.0,<4.0a0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 356213 + timestamp: 1737146304079 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/s2n-1.5.11-h3caee7a_0.conda + sha256: 5a7ae66f96be24c3b2007139b6c3701ab015b4b4eb4eccfdd07be97710243a47 + md5: 1517c0518f8a06a48a15f41d94252874 + depends: + - libgcc >=13 + - openssl >=3.4.0,<4.0a0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 352811 + timestamp: 1737146319512 +- conda: https://conda.anaconda.org/conda-forge/linux-64/safetensors-0.5.3-py312h12e396e_0.conda + sha256: 23dec8105d34e51cc2269a79680a666351233e2dc171ff14c46d3455d2c22080 + md5: fd1fc1f1e6ceee16d9a58d3ff5a57c7f + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - __glibc >=2.17 + arch: x86_64 + platform: linux + license: Apache-2.0 + purls: + - pkg:pypi/safetensors?source=compressed-mapping + size: 431388 + timestamp: 1740651706122 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/safetensors-0.5.3-py312h8cbf658_0.conda + sha256: 24ca173b9f39d5e5cabc6ea7e570b500682669e5910510020549f8696e29992d + md5: eb2d82d057535f4fb3182f43df429495 + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - __glibc >=2.17 + arch: aarch64 + platform: linux + license: Apache-2.0 + purls: + - pkg:pypi/safetensors?source=hash-mapping + size: 417509 + timestamp: 1740651719895 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/safetensors-0.5.3-py312hcd83bfe_0.conda + sha256: 1d0412be1b16df769c69d537907e690be50d06d05f757ba2451facb6883a3eb3 + md5: 68b99db908e1ec63c0cacae262a835e9 + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - __osx >=11.0 + arch: arm64 + platform: osx + license: Apache-2.0 + purls: + - pkg:pypi/safetensors?source=compressed-mapping + size: 382676 + timestamp: 1740651813281 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-0.2.0-hc8f76dd_10.conda + sha256: a1bde55ceb9dc5bd7879283d0f594a6ce65c07fda3de76230c65a4a5df47858a + md5: 480e915dfc6c592615ef6f217e615aa6 + depends: + - libsentencepiece 0.2.0 h8e10757_10 + - python_abi 3.12.* *_cp312 + - sentencepiece-python 0.2.0 py312hb6b8a2b_10 + - sentencepiece-spm 0.2.0 h8e10757_10 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 19470 + timestamp: 1735628377167 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-0.2.0-h6c1b121_10.conda + sha256: 846d885a560fbb4375b645e7caf2f756ef88bbeb441b670375da0090aaa427fb + md5: 33a89eb1dedae8eb7222b0a89856f337 + depends: + - libsentencepiece 0.2.0 h6164ad9_10 + - python_abi 3.12.* *_cp312 + - sentencepiece-python 0.2.0 py312h197ff68_10 + - sentencepiece-spm 0.2.0 h6164ad9_10 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 19686 + timestamp: 1735628718991 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-0.2.0-h22a84ea_10.conda + sha256: 526c934b897131bd274697649c3b1c492a7d66c03368885a954112468b3c1424 + md5: 346abe448f69949a65473b336856860a + depends: + - libsentencepiece 0.2.0 he13a0af_10 + - python_abi 3.12.* *_cp312 + - sentencepiece-python 0.2.0 py312h155166a_10 + - sentencepiece-spm 0.2.0 he13a0af_10 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 19759 + timestamp: 1735628533490 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-python-0.2.0-py312hb6b8a2b_10.conda + sha256: 37df7fb659564587b950b39c936769d9b5095afb7bc223f42d6248a5540c6567 + md5: 7908b7b977e2e123a5f6a29906f2ce44 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 h8e10757_10 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/sentencepiece?source=hash-mapping + size: 2411182 + timestamp: 1735628106455 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-python-0.2.0-py312h197ff68_10.conda + sha256: a7c2c19cc397c7632e2630af49ddcff128f145c93ea493421e6f42bfa5e1d30b + md5: 5642e4545a3cf03e446fb3b3e9fd723b + depends: + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 h6164ad9_10 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/sentencepiece?source=hash-mapping + size: 2458076 + timestamp: 1735628298246 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-python-0.2.0-py312h155166a_10.conda + sha256: 2d59614aeafbf54cc718805798c11c2d0a3b4b8d947d1bd81c87c484b4883077 + md5: 6e11367ef670296fce01fc9860be944d + depends: + - __osx >=11.0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 he13a0af_10 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/sentencepiece?source=hash-mapping + size: 2433303 + timestamp: 1735628083958 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-spm-0.2.0-h8e10757_10.conda + sha256: 6b55e1121545357d63c3aa0766931720e8aafc52d88641ba7631c8cbaa68c52f + md5: e977b7be5ac26c55825e121e00b90493 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 h8e10757_10 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 89076 + timestamp: 1735628334078 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-spm-0.2.0-h6164ad9_10.conda + sha256: b98fc1028a8e8fbf309af383f9c837290a14e076e6c5533dc251694ea33ffc6e + md5: a4b75936c01dca3f089f02752b7ee325 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 h6164ad9_10 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 85983 + timestamp: 1735628693813 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-spm-0.2.0-he13a0af_10.conda + sha256: b760aeee02e2afbfcce3f559e8a227aa4c94139157b1702fdfb41a057dad0e52 + md5: 9b7300f23cd330da8664cd072c162e5f + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 he13a0af_10 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 83826 + timestamp: 1735628514667 +- pypi: https://download.pytorch.org/whl/setuptools-70.2.0-py3-none-any.whl#sha256=b8b8060bb426838fbe942479c90296ce976249451118ef566a5a0b7d8b78fb05 + name: setuptools + version: 70.2.0 + sha256: b8b8060bb426838fbe942479c90296ce976249451118ef566a5a0b7d8b78fb05 + requires_dist: + - sphinx>=3.5 ; extra == 'doc' + - jaraco-packaging>=9.3 ; extra == 'doc' + - rst-linker>=1.9 ; extra == 'doc' + - furo ; extra == 'doc' + - sphinx-lint ; extra == 'doc' + - jaraco-tidelift>=1.4 ; extra == 'doc' + - pygments-github-lexers==0.0.5 ; extra == 'doc' + - sphinx-favicon ; extra == 'doc' + - sphinx-inline-tabs ; extra == 'doc' + - sphinx-reredirects ; extra == 'doc' + - sphinxcontrib-towncrier ; extra == 'doc' + - sphinx-notfound-page>=1,<2 ; extra == 'doc' + - pyproject-hooks!=1.1 ; extra == 'doc' + - pytest>=6,!=8.1.* ; extra == 'test' + - pytest-checkdocs>=2.4 ; extra == 'test' + - pytest-cov ; extra == 'test' + - pytest-mypy ; extra == 'test' + - pytest-enabler>=2.2 ; extra == 'test' + - virtualenv>=13.0.0 ; extra == 'test' + - wheel ; extra == 'test' + - pip>=19.1 ; extra == 'test' + - packaging>=23.2 ; extra == 'test' + - jaraco-envs>=2.2 ; extra == 'test' + - pytest-xdist>=3 ; extra == 'test' + - jaraco-path>=3.2.0 ; extra == 'test' + - build[virtualenv]>=1.0.3 ; extra == 'test' + - filelock>=3.4.0 ; extra == 'test' + - ini2toml[lite]>=0.14 ; extra == 'test' + - tomli-w>=1.0.0 ; extra == 'test' + - pytest-timeout ; extra == 'test' + - pytest-home>=0.5 ; extra == 'test' + - mypy==1.10.0 ; extra == 'test' + - tomli ; extra == 'test' + - importlib-metadata ; extra == 'test' + - pytest-subprocess ; extra == 'test' + - pyproject-hooks!=1.1 ; extra == 'test' + - jaraco-test ; extra == 'test' + - jaraco-develop>=7.21 ; python_full_version >= '3.9' and sys_platform != 'cygwin' and extra == 'test' + - pytest-ruff>=0.3.2 ; sys_platform != 'cygwin' and extra == 'test' + - pytest-perf ; sys_platform != 'cygwin' and extra == 'test' + requires_python: '>=3.8' +- conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + sha256: 41db0180680cc67c3fa76544ffd48d6a5679d96f4b71d7498a759e94edc9a2db + md5: a451d576819089b0d672f18768be0f65 + depends: + - python >=3.9 + license: MIT + license_family: MIT + purls: + - pkg:pypi/six?source=hash-mapping + size: 16385 + timestamp: 1733381032766 +- conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-h8bd8927_1.conda + sha256: ec91e86eeb2c6bbf09d51351b851e945185d70661d2ada67204c9a6419d282d3 + md5: 3b3e64af585eadfb52bb90b553db5edf + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 42739 + timestamp: 1733501881851 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-hd4fb6f5_1.conda + sha256: c4a07ae5def8d55128f25a567a296ef9d7bf99a3bc79d46bd5160c076a5f50af + md5: 2fcc6cd1e5550deb509073fd2e6693e1 + depends: + - libgcc >=13 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 43032 + timestamp: 1733501964775 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-h98b9ce2_1.conda + sha256: 4242f95b215127a006eb664fe26ed5a82df87e90cbdbc7ce7ff4971f0720997f + md5: ded86dee325290da2967a3fea3800eb5 + depends: + - __osx >=11.0 + - libcxx >=18 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 35857 + timestamp: 1733502172664 +- pypi: https://download.pytorch.org/whl/sympy-1.13.1-py3-none-any.whl#sha256=db36cdc64bf61b9b24578b6f7bab1ecdd2452cf008f34faa33776680c26d66f8 + name: sympy + version: 1.13.1 + sha256: db36cdc64bf61b9b24578b6f7bab1ecdd2452cf008f34faa33776680c26d66f8 + requires_dist: + - mpmath>=1.1.0,<1.4 + - pytest>=7.1.0 ; extra == 'dev' + - hypothesis>=6.70.0 ; extra == 'dev' + requires_python: '>=3.8' +- conda: https://conda.anaconda.org/conda-forge/noarch/sympy-1.13.3-pyh2585a3b_105.conda + sha256: 929d939c5a8bcdc10a17501890918da68cf14a5883b36fddf77b8f0fbf040be2 + md5: 254cd5083ffa04d96e3173397a3d30f4 + depends: + - __unix + - cpython + - gmpy2 >=2.0.8 + - mpmath >=0.19 + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/sympy?source=hash-mapping + size: 4523617 + timestamp: 1736248315124 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tbb-2021.13.0-hceb3a55_1.conda + sha256: 65463732129899770d54b1fbf30e1bb82fdebda9d7553caf08d23db4590cd691 + md5: ba7726b8df7b9d34ea80e82b097a4893 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libhwloc >=2.11.2,<2.11.3.0a0 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 175954 + timestamp: 1732982638805 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda + sha256: e0569c9caa68bf476bead1bed3d79650bb080b532c64a4af7d8ca286c08dea4e + md5: d453b98d9c83e71da0741bb0ff4d76bc + depends: + - libgcc-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 + arch: x86_64 + platform: linux + license: TCL + license_family: BSD + purls: [] + size: 3318875 + timestamp: 1699202167581 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda + sha256: 7fa27cc512d3a783f38bd16bbbffc008807372499d5b65d089a8e43bde9db267 + md5: f75105e0585851f818e0009dd1dde4dc + depends: + - libgcc-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 + arch: aarch64 + platform: linux + license: TCL + license_family: BSD + purls: [] + size: 3351802 + timestamp: 1695506242997 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda + sha256: 72457ad031b4c048e5891f3f6cb27a53cb479db68a52d965f796910e71a403a8 + md5: b50a57ba89c32b62428b71a875291c9b + depends: + - libzlib >=1.2.13,<2.0.0a0 + arch: arm64 + platform: osx + license: TCL + license_family: BSD + purls: [] + size: 3145523 + timestamp: 1699202432999 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.21.0-py312h8360d73_0.conda + sha256: 4f504a5e9d77c6d88a8f735c4319429d8bf40b742384f908a2efe0a09acc3cc5 + md5: f953aa733207f3d37acf4a3efbedba89 + depends: + - __glibc >=2.17,<3.0.a0 + - huggingface_hub >=0.16.4,<1.0 + - libgcc >=13 + - libstdcxx >=13 + - openssl >=3.4.0,<4.0a0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - __glibc >=2.17 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/tokenizers?source=hash-mapping + size: 2258007 + timestamp: 1732734202127 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.21.0-py312ha0d6ea1_0.conda + sha256: ef0f4d4e2c798b1821187ea0ba4c86484e48abaa0e9a19fe68030fa7ff5dde84 + md5: 077f48c9e0c08a30d842e15c51df4143 + depends: + - huggingface_hub >=0.16.4,<1.0 + - libgcc >=13 + - libstdcxx >=13 + - openssl >=3.4.0,<4.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - __glibc >=2.17 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/tokenizers?source=hash-mapping + size: 2331194 + timestamp: 1732734303196 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.21.0-py312hf3e4074_0.conda + sha256: 5d395333fcb22dc611140286c1f2ea8b3fa220a4931c583587cb612238091555 + md5: 4c732c74b485ef7ac8ec1c548dd45e8e + depends: + - __osx >=11.0 + - huggingface_hub >=0.16.4,<1.0 + - libcxx >=18 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - __osx >=11.0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/tokenizers?source=hash-mapping + size: 1931389 + timestamp: 1732734727624 +- pypi: https://download.pytorch.org/whl/cpu/torch-2.5.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl#sha256=36d1be99281b6f602d9639bd0af3ee0006e7aab16f6718d86f709d395b6f262c + name: torch + version: 2.5.1 + sha256: 36d1be99281b6f602d9639bd0af3ee0006e7aab16f6718d86f709d395b6f262c + requires_dist: + - filelock + - typing-extensions>=4.8.0 + - networkx + - jinja2 + - fsspec + - nvidia-cuda-nvrtc-cu12==12.4.127 ; platform_machine == 'x86_64' and platform_system == 'Linux' + - nvidia-cuda-runtime-cu12==12.4.127 ; platform_machine == 'x86_64' and platform_system == 'Linux' + - nvidia-cuda-cupti-cu12==12.4.127 ; platform_machine == 'x86_64' and platform_system == 'Linux' + - nvidia-cudnn-cu12==9.1.0.70 ; platform_machine == 'x86_64' and platform_system == 'Linux' + - nvidia-cublas-cu12==12.4.5.8 ; platform_machine == 'x86_64' and platform_system == 'Linux' + - nvidia-cufft-cu12==11.2.1.3 ; platform_machine == 'x86_64' and platform_system == 'Linux' + - nvidia-curand-cu12==10.3.5.147 ; platform_machine == 'x86_64' and platform_system == 'Linux' + - nvidia-cusolver-cu12==11.6.1.9 ; platform_machine == 'x86_64' and platform_system == 'Linux' + - nvidia-cusparse-cu12==12.3.1.170 ; platform_machine == 'x86_64' and platform_system == 'Linux' + - nvidia-nccl-cu12==2.21.5 ; platform_machine == 'x86_64' and platform_system == 'Linux' + - nvidia-nvtx-cu12==12.4.127 ; platform_machine == 'x86_64' and platform_system == 'Linux' + - nvidia-nvjitlink-cu12==12.4.127 ; platform_machine == 'x86_64' and platform_system == 'Linux' + - sympy==1.12.1 ; python_full_version == '3.8.*' + - setuptools ; python_full_version >= '3.12' + - sympy==1.13.1 ; python_full_version >= '3.9' + - opt-einsum>=3.3 ; extra == 'opt-einsum' + - optree>=0.12.0 ; extra == 'optree' + requires_python: '>=3.8.0' +- conda: https://conda.anaconda.org/pytorch/linux-64/torchtriton-3.1.0-py312.tar.bz2 + build_number: 1 + sha256: f0beb429b3834a3796626642829a7e4bb9d4fe6477c8dc614a55e5c4f15a6a05 + md5: bb4b2d07cb6b9b476e78740c08ba69fe + depends: + - filelock + - python >=3.12,<3.13.0a0 + - pytorch + arch: x86_64 + platform: linux + license: MIT + purls: + - pkg:pypi/triton?source=hash-mapping + size: 244939186 + timestamp: 1727971107041 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda + sha256: 062a3a3a37fa8615ce57929ba7e982c76f5a5810bcebd435950f6d6c4147c310 + md5: e417822cb989e80a0d2b1b576fdd1657 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/tornado?source=hash-mapping + size: 840414 + timestamp: 1732616043734 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py312h52516f5_0.conda + sha256: 4c19a544354172b2273553267e734795a6da3c78a04c2d19f8e9e159ca3178bc + md5: e28996d9d2d44d777b7e6fb12f63715b + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/tornado?source=hash-mapping + size: 841662 + timestamp: 1732616934923 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda + sha256: 964a2705a36c50040c967b18b45b9cc8de3c2aff4af546979a574e0b38e58e39 + md5: fb0605888a475d6a380ae1d1a819d976 + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/tornado?source=hash-mapping + size: 842549 + timestamp: 1732616081362 +- conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + sha256: 11e2c85468ae9902d24a27137b6b39b4a78099806e551d390e394a8c34b48e40 + md5: 9efbfdc37242619130ea42b1cc4ed861 + depends: + - colorama + - python >=3.9 + license: MPL-2.0 or MIT + purls: + - pkg:pypi/tqdm?source=hash-mapping + size: 89498 + timestamp: 1735661472632 +- conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + sha256: f39a5620c6e8e9e98357507262a7869de2ae8cc07da8b7f84e517c9fd6c2b959 + md5: 019a7385be9af33791c989871317e1ed + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/traitlets?source=hash-mapping + size: 110051 + timestamp: 1733367480074 +- conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.49.0-pyhd8ed1ab_0.conda + sha256: d522d7dda6ebe296b20955b1be3eccc5d5cfdfd413457c1236323b6a08fffd9e + md5: e63e78e545fcf857cac3372edeb67ea4 + depends: + - datasets !=2.5.0 + - filelock + - huggingface_hub >=0.23.0,<1.0 + - numpy >=1.17 + - packaging >=20.0 + - python >=3.9 + - pyyaml >=5.1 + - regex !=2019.12.17 + - requests + - safetensors >=0.4.1 + - tokenizers >=0.21,<0.22 + - tqdm >=4.27 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/transformers?source=hash-mapping + size: 3514640 + timestamp: 1739826374204 +- conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda + noarch: python + sha256: c8e9c1c467b5f960b627d7adc1c65fece8e929a3de89967e91ef0f726422fd32 + md5: b6a408c64b78ec7b779a3e5c7a902433 + depends: + - typing_extensions 4.12.2 pyha770c72_1 + license: PSF-2.0 + license_family: PSF + purls: [] + size: 10075 + timestamp: 1733188758872 +- conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + sha256: 337be7af5af8b2817f115b3b68870208b30c31d3439bec07bfb2d8f4823e3568 + md5: d17f13df8b65464ca316cbc000a3cb64 + depends: + - python >=3.9 + license: PSF-2.0 + license_family: PSF + purls: + - pkg:pypi/typing-extensions?source=hash-mapping + size: 39637 + timestamp: 1733188758212 +- conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + sha256: c4b1ae8a2931fe9b274c44af29c5475a85b37693999f8c792dad0f8c6734b1de + md5: dbcace4706afdfb7eb891f7b37d07c04 + license: LicenseRef-Public-Domain + purls: [] + size: 122921 + timestamp: 1737119101255 +- conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.2-pyhd8ed1ab_0.conda + sha256: 8cd972048f297b8e0601158ce352f5ca9510dda9f2706a46560220aa58b9f038 + md5: 92cdb6fe54b78739ad70637e4f0deb07 + depends: + - brotli-python >=1.0.9 + - pysocks >=1.5.6,<2.0,!=1.5.7 + - python >=3.8 + license: MIT + license_family: MIT + purls: + - pkg:pypi/urllib3?source=hash-mapping + size: 95016 + timestamp: 1718653149133 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xxhash-0.8.3-hb9d3cd8_0.conda + sha256: 3bbc35b9ee44ffea1de441f906ba05139873a28325f8a8ed152e17af30e62232 + md5: 2ef1822d8168ed5d79ab1bf01088419a + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 107794 + timestamp: 1735848927308 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xxhash-0.8.3-h86ecc28_0.conda + sha256: f210d0b6b8543acef9b73db43a557c94e695f9dfaa2f6989057c449d9c3e1239 + md5: d992916b6e4f6e7412332bbcd41c5aa2 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 104556 + timestamp: 1735848964267 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/xxhash-0.8.3-h5505292_0.conda + sha256: 43573d504e7edc4b876a9058dc316aa9851ced1d433c2b569d583c2db22c76e2 + md5: 92a98c1bbae4729dfd0216ca22c21858 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 98318 + timestamp: 1735849111725 +- conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 + sha256: a4e34c710eeb26945bdbdaba82d3d74f60a78f54a874ec10d373811a5d217535 + md5: 4cb3ad778ec2d5a7acbdf254eb1c42ae + depends: + - libgcc-ng >=9.4.0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 89141 + timestamp: 1641346969816 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yaml-0.2.5-hf897c2e_2.tar.bz2 + sha256: 8bc601d6dbe249eba44b3c456765265cd8f42ef1e778f8df9b0c9c88b8558d7e + md5: b853307650cb226731f653aa623936a4 + depends: + - libgcc-ng >=9.4.0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 92927 + timestamp: 1641347626613 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 + sha256: 93181a04ba8cfecfdfb162fc958436d868cc37db504c58078eab4c1a3e57fbb7 + md5: 4bb3f014845110883a3c5ee811fd84b4 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 88016 + timestamp: 1641347076660 +- conda: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.18.3-py312h178313f_1.conda + sha256: 6b054c93dd19fd7544af51b41a8eacca2ab62271f6c0c5a2a0cffe80dc37a0ce + md5: 6822c49f294d4355f19d314b8b6063d8 + depends: + - __glibc >=2.17,<3.0.a0 + - idna >=2.0 + - libgcc >=13 + - multidict >=4.0 + - propcache >=0.2.1 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/yarl?source=hash-mapping + size: 152305 + timestamp: 1737575898300 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.18.3-py312hcc812fe_1.conda + sha256: bfa211c0dd5dbb308788f055277dc428b7923ceb2de6a22ea98bc17cf306f9f5 + md5: d14c78abdd6109e2b7162f53b6cc1e77 + depends: + - idna >=2.0 + - libgcc >=13 + - multidict >=4.0 + - propcache >=0.2.1 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/yarl?source=hash-mapping + size: 149654 + timestamp: 1737576065314 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.18.3-py312h998013c_1.conda + sha256: 48821d23567ca0f853eee6f7812c74392867e123798b5b3c44f58758d8eb580e + md5: 092d3b40acc67c470f379049be343a7a + depends: + - __osx >=11.0 + - idna >=2.0 + - multidict >=4.0 + - propcache >=0.2.1 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/yarl?source=hash-mapping + size: 145543 + timestamp: 1737576074753 +- conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda + sha256: a4dc72c96848f764bb5a5176aa93dd1e9b9e52804137b99daeebba277b31ea10 + md5: 3947a35e916fcc6b9825449affbf4214 + depends: + - __glibc >=2.17,<3.0.a0 + - krb5 >=1.21.3,<1.22.0a0 + - libgcc >=13 + - libsodium >=1.0.20,<1.0.21.0a0 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: MPL-2.0 + license_family: MOZILLA + purls: [] + size: 335400 + timestamp: 1731585026517 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zeromq-4.3.5-h5efb499_7.conda + sha256: a6003096dc0570a86492040ba32b04ce7662b159600be2252b7a0dfb9414e21c + md5: f2f3282559a4b87b7256ecafb4610107 + depends: + - krb5 >=1.21.3,<1.22.0a0 + - libgcc >=13 + - libsodium >=1.0.20,<1.0.21.0a0 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: MPL-2.0 + license_family: MOZILLA + purls: [] + size: 371419 + timestamp: 1731589490850 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda + sha256: 9e585569fe2e7d3bea71972cd4b9f06b1a7ab8fa7c5139f92a31cbceecf25a8a + md5: f7e6b65943cb73bce0143737fded08f1 + depends: + - __osx >=11.0 + - krb5 >=1.21.3,<1.22.0a0 + - libcxx >=18 + - libsodium >=1.0.20,<1.0.21.0a0 + arch: arm64 + platform: osx + license: MPL-2.0 + license_family: MOZILLA + purls: [] + size: 281565 + timestamp: 1731585108039 +- conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + sha256: 567c04f124525c97a096b65769834b7acb047db24b15a56888a322bf3966c3e1 + md5: 0c3cc595284c5e8f0f9900a9b228a332 + depends: + - python >=3.9 + license: MIT + license_family: MIT + purls: + - pkg:pypi/zipp?source=hash-mapping + size: 21809 + timestamp: 1732827613585 +- conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.1-hb9d3cd8_2.conda + sha256: 5d7c0e5f0005f74112a34a7425179f4eb6e73c92f5d109e6af4ddeca407c92ab + md5: c9f075ab2f33b3bbee9e62d4ad0a6cd8 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libzlib 1.3.1 hb9d3cd8_2 + arch: x86_64 + platform: linux + license: Zlib + license_family: Other + purls: [] + size: 92286 + timestamp: 1727963153079 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zlib-1.3.1-h86ecc28_2.conda + sha256: b4f649aa3ecdae384d5dad7074e198bff120edd3dfb816588e31738fc6d627b1 + md5: bc230abb5d21b63ff4799b0e75204783 + depends: + - libgcc >=13 + - libzlib 1.3.1 h86ecc28_2 + arch: aarch64 + platform: linux + license: Zlib + license_family: Other + purls: [] + size: 95582 + timestamp: 1727963203597 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zlib-1.3.1-h8359307_2.conda + sha256: 58f8860756680a4831c1bf4f294e2354d187f2e999791d53b1941834c4b37430 + md5: e3170d898ca6cb48f1bb567afb92f775 + depends: + - __osx >=11.0 + - libzlib 1.3.1 h8359307_2 + arch: arm64 + platform: osx + license: Zlib + license_family: Other + purls: [] + size: 77606 + timestamp: 1727963209370 +- conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb8e6e7a_1.conda + sha256: 532d3623961e34c53aba98db2ad0a33b7a52ff90d6960e505fb2d2efc06bb7da + md5: 02e4e2fa41a6528afba2e54cbc4280ff + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 567419 + timestamp: 1740255350233 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.7-hbcf94c1_1.conda + sha256: a8e9a9e19ec3778594d9746e308cdba096f3019c0c0a62f552d0d299b35c343f + md5: d98196f3502425e14f82bdfc8eb4ae27 + depends: + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 550364 + timestamp: 1740255370714 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.7-h6491c7d_1.conda + sha256: f49bbeeb3a8ead81920e6c695fff1260cbd221e2cfcdf9fb34207260fbd60816 + md5: 66e5c4b02aa97230459efdd4f64c8ce6 + depends: + - __osx >=11.0 + - libzlib >=1.3.1,<2.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 399981 + timestamp: 1740255382232 diff --git a/examples/inference/bert-mojo-torchscript/magic.lock b/examples/inference/bert-mojo-torchscript/magic.lock new file mode 100644 index 0000000000..092e126f9f --- /dev/null +++ b/examples/inference/bert-mojo-torchscript/magic.lock @@ -0,0 +1,7480 @@ +version: 6 +environments: + default: + channels: + - url: https://conda.anaconda.org/conda-forge/ + - url: https://conda.modular.com/max-nightly/ + - url: https://conda.anaconda.org/pytorch/ + indexes: + - https://pypi.org/simple + - https://download.pytorch.org/whl/cpu + packages: + linux-64: + - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_kmp_llvm.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.13-py312h178313f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.1.0-pyh71513ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.1-h205f482_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.1-h1a47875_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.10.6-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.3.0-h4e1184b_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.0-h7959bf6_11.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.2-hefd7a92_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-h173a860_6.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h11f4f37_12.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.9-he1b24dc_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.2-h4e1184b_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-h4e1184b_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.9-he0e7f3f_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.489-h4d475cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.10.0-h113e628_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.13.0-h3cf044e_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-common-cpp-12.8.0-h736e048_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-files-datalake-cpp-12.12.0-ha633028_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/blas-2.116-mkl.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/blas-devel-3.9.0-16_linux64_mkl.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py312h2ec8cdc_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.4-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2025.1.31-hbcca054_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.1.31-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py312h06ac9bb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.12.9-py312hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-cudart-12.4.127-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cuda-cudart_linux-64-12.4.127-h85509e4_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-cupti-12.4.127-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-libraries-12.4.1-ha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-nvrtc-12.4.127-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-nvtx-12.4.127-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-opencl-12.4.127-he02047a_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cuda-runtime-12.4.1-ha804496_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cuda-version-12.4-h3060b56_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-3.3.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.8-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/frozenlist-1.5.0-py312h178313f_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.12.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gflags-2.2.2-h5888daf_1005.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/glog-0.7.1-hbabe93e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gmp-6.3.0-hac33072_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gmpy2-2.1.5-py312h7201bc8_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.29.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-19.0.1-hfa2a6e7_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-19.0.1-hcb10f89_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-19.0.1-hcb10f89_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-19.0.1-h08228c5_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-16_linux64_mkl.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.1.0-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-16_linux64_mkl.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcrc32c-1.1.2-h9c3ff4c_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcublas-12.4.5.8-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcufft-11.2.1.3-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcufile-1.9.1.3-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcurand-10.3.5.147-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.12.1-h332b0f4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcusolver-11.6.1.9-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcusparse-12.3.1.170-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libevent-2.1.12-hf998b51_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h767d61c_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-ng-14.2.0-h69a702a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hf1ad2bd_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.35.0-h2b5623c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.35.0-h0121fbd_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.67.1-h25350d4_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libhwloc-2.11.2-default_h0d58e46_1001.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h4ce23a2_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-16_linux64_mkl.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapacke-3.9.0-16_linux64_mkl.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnpp-12.2.5.30-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnvfatbin-12.4.127-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnvjitlink-12.4.127-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnvjpeg-12.3.1.117-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-1.18.0-hfcad708_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-headers-1.18.0-ha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-19.0.1-h081d1f1_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsentencepiece-0.2.0-h8e10757_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.49.1-hee588c1_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hf672d98_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-h8f9b012_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libthrift-0.21.0-h0e7cc3e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.10.0-h4c51ac1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.6-h8d12d68_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/llvm-openmp-15.0.7-h0cdce71_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.10.0-h5888daf_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-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022718-release.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-2022.1.0-h84fe81f_915.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-devel-2022.1.0-ha770c72_916.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-include-2022.1.0-h84fe81f_915.tar.bz2 + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022718-release.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/mpc-1.3.1-h24ddda3_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/mpfr-4.2.1-h90cbb55_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mpmath-1.3.0-pyhd8ed1ab_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.16-py312h66e93f0_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-h2d0b736_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/nlohmann_json-3.11.3-he02047a_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ocl-icd-2.3.2-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/opencl-headers-2024.10.24-h5888daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.1-h7b32b05_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/orc-2.0.3-h12ee42a_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.3-py312hf9745cd_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/prometheus-cpp-1.3.0-ha5d0236_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.1-py312h178313f_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-19.0.1-py312h7900ff3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-19.0.1-py312h01725c0_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.9-h9e4cc4f_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-xxhash-3.5.0-py312h66e93f0_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda + - conda: https://conda.anaconda.org/pytorch/linux-64/pytorch-2.5.1-py3.12_cuda12.4_cudnn9.1.0_0.tar.bz2 + - conda: https://conda.anaconda.org/pytorch/linux-64/pytorch-cuda-12.4-hc786d27_7.tar.bz2 + - conda: https://conda.anaconda.org/pytorch/noarch/pytorch-mutex-1.0-cuda.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py312h178313f_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.1-py312hbf22597_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/re2-2024.07.02-h9925aae_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda + - 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/linux-64/s2n-1.5.11-h072c03f_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/safetensors-0.5.3-py312h12e396e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-0.2.0-hc8f76dd_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-python-0.2.0-py312hb6b8a2b_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-spm-0.2.0-h8e10757_10.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-h8bd8927_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sympy-1.13.3-pyh2585a3b_105.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tbb-2021.13.0-hceb3a55_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.21.0-py312h8360d73_0.conda + - conda: https://conda.anaconda.org/pytorch/linux-64/torchtriton-3.1.0-py312.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.49.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xxhash-0.8.3-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.18.3-py312h178313f_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.1-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312hef9b889_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda + linux-aarch64: + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.13-py312hcc812fe_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.1.0-pyh71513ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.1-hb7ec8d5_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.1-h740c5af_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-common-0.10.6-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-compression-0.3.0-h0f0193d_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-event-stream-0.5.0-hcbd8f92_11.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.2-h3df160d_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-hfd5ba81_6.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h5f50e26_12.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.9-h05b070f_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.2-h0f0193d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h0f0193d_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.9-hab3ce66_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.489-h88461e4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-core-cpp-1.14.0-h1887c18_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-identity-cpp-1.10.0-h47b0b28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-blobs-cpp-12.13.0-h185ecfd_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-common-cpp-12.8.0-h1b94036_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-files-datalake-cpp-12.12.0-h37d6d07_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/brotli-python-1.1.0-py312h6f74592_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h68df207_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/c-ares-1.34.4-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2025.1.31-hcefe29a_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.1.31-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cffi-1.17.1-py312hac81daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-3.3.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.8-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/frozenlist-1.5.0-py312hcc812fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.12.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gflags-2.2.2-h5ad3122_1005.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/glog-0.7.1-h468a4a4_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.29.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/keyutils-1.6.1-h4e544f5_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/krb5-1.21.3-h50a48e9_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h18dbdb1_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-19.0.1-h36213f4_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-19.0.1-h3b568fd_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-19.0.1-h3b568fd_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-19.0.1-h1e9d426_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-31_h1a9f1db_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlicommon-1.1.0-h86ecc28_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlidec-1.1.0-h86ecc28_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlienc-1.1.0-h86ecc28_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-31_hab92f65_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcrc32c-1.1.2-h01db608_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcurl-8.12.1-h6702fde_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20250104-pl5321h976ea20_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libev-4.33-h31becfc_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libevent-2.1.12-h4ba1bb4_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.6.4-h5ad3122_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.4.6-he21f813_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-14.2.0-he277a41_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-14.2.0-he9431aa_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-2.35.0-hccf9d24_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-storage-2.35.0-hb9b2b65_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgrpc-1.67.1-hf7ccdd3_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libiconv-1.18-hc99b53d_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-31_h411afd4_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.4-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnghttp2-1.64.0-hc8609a4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.29-pthreads_h9d3fd7e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopentelemetry-cpp-1.18.0-h60b47f9_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopentelemetry-cpp-headers-1.18.0-h8af1aa0_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-19.0.1-hfc78867_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.3-h44a3b7b_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsentencepiece-0.2.0-h6164ad9_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.20-h68df207_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.49.1-h5eb1b54_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libssh2-1.11.1-ha41c0db_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libthrift-0.21.0-h154c74f_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.10.0-ha346350_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.6-h2e0c361_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.10.0-h5ad3122_1.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022718-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.16-py312hb2c0f52_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-ha32ae93_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/nlohmann_json-3.11.3-h0a1ffab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.1-hd08dc88_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/orc-2.0.3-hdd485aa_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pandas-2.2.3-py312ha2895bd_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/prometheus-cpp-1.3.0-h7938499_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.2.1-py312hcc812fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-19.0.1-py312h8025657_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-19.0.1-py312h66f7834_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.9-h1683364_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-xxhash-3.5.0-py312h52516f5_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.12-5_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyyaml-6.0.2-py312hcc812fe_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyzmq-26.2.1-py312h2427ae1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/re2-2024.07.02-haa97905_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8382b9d_2.conda + - 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/linux-aarch64/s2n-1.5.11-h3caee7a_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/safetensors-0.5.3-py312h8cbf658_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-0.2.0-h6c1b121_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-python-0.2.0-py312h197ff68_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-spm-0.2.0-h6164ad9_10.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-hd4fb6f5_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.21.0-py312ha0d6ea1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py312h52516f5_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.49.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xxhash-0.8.3-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yaml-0.2.5-hf897c2e_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.18.3-py312hcc812fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zeromq-4.3.5-h5efb499_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zlib-1.3.1-h86ecc28_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstandard-0.23.0-py312hb698573_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.6-h02f22dd_0.conda + - pypi: https://download.pytorch.org/whl/Jinja2-3.1.4-py3-none-any.whl#sha256=bc5dd2abb727a5319567b7a813e6a2e7318c39f4f487cfe6c89c6f9c7d25197d + - pypi: https://download.pytorch.org/whl/MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl#sha256=ac07bad82163452a6884fe8fa0963fb98c2346ba78d779ec06bd7a6262132aee + - pypi: https://download.pytorch.org/whl/mpmath-1.3.0-py3-none-any.whl#sha256=a0b2b9fe80bbcd81a6647ff13108738cfb482d481d826cc0e02f5b35e5c88d2c + - pypi: https://download.pytorch.org/whl/networkx-3.3-py3-none-any.whl#sha256=28575580c6ebdaf4505b22c6256a2b9de86b316dc63ba9e93abde3d78dfdbcf2 + - pypi: https://download.pytorch.org/whl/setuptools-70.2.0-py3-none-any.whl#sha256=b8b8060bb426838fbe942479c90296ce976249451118ef566a5a0b7d8b78fb05 + - pypi: https://download.pytorch.org/whl/sympy-1.13.1-py3-none-any.whl#sha256=db36cdc64bf61b9b24578b6f7bab1ecdd2452cf008f34faa33776680c26d66f8 + - pypi: https://download.pytorch.org/whl/cpu/torch-2.5.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl#sha256=36d1be99281b6f602d9639bd0af3ee0006e7aab16f6718d86f709d395b6f262c + osx-arm64: + - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.13-py312h998013c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.1.0-pyh71513ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.1-hfc2798a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.1-hc8a0bd2_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.10.6-h5505292_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-compression-0.3.0-hc8a0bd2_5.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.0-h54f970a_11.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.2-h96aa502_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-haba67d1_6.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h24f418c_12.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.9-hf37e03c_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.2-hc8a0bd2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-hc8a0bd2_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.9-ha81f72f_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.489-h0e5014b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.14.0-hd50102c_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.10.0-hc602bab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-blobs-cpp-12.13.0-h7585a09_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-common-cpp-12.8.0-h9ca1f76_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-files-datalake-cpp-12.12.0-hcdd55da_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py312hde4cb15_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.4-h5505292_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2025.1.31-hf0a4a13_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.1.31-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.1-py312h0fad829_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.12.9-py312hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-3.3.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.8-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/frozenlist-1.5.0-py312h998013c_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.12.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gflags-2.2.2-hf9b8971_1005.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/glog-0.7.1-heb240a5_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gmp-6.3.0-h7bae524_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gmpy2-2.1.5-py312h524cf62_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.29.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_h07bc746_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-19.0.1-h0945df6_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-19.0.1-hf07054f_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-19.0.1-hf07054f_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-19.0.1-h4239455_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-19_osxarm64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.1.0-hd74edd7_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.1.0-hd74edd7_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlienc-1.1.0-hd74edd7_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-19_osxarm64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcrc32c-1.1.2-hbdafb3b_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.12.1-h73640d1_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libev-4.33-h93a5062_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libevent-2.1.12-h2757513_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.4-h286801f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-2.35.0-hdbe95d5_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-storage-2.35.0-h7081f7f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgrpc-1.67.1-h0a426d6_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.18-hfe07756_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-19_osxarm64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.4-h39f12f2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.64.0-h6d7220d_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.24-openmp_hd76b1f2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopentelemetry-cpp-1.18.0-h0c05b2d_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopentelemetry-cpp-headers-1.18.0-hce30654_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-19.0.1-h636d7b7_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.3-h3bd63a1_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h07bc746_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsentencepiece-0.2.0-he13a0af_10.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.1-h3f77e49_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.1-h9cc3647_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libthrift-0.21.0-h64651cc_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.10.0-hda25de7_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.6-hce475f1_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-15.0.7-h7cfbb63_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.10.0-h286801f_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-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022718-release.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/mpc-1.3.1-h8f1351a_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/mpfr-4.2.1-hb693164_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mpmath-1.3.0-pyhd8ed1ab_1.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.16-py312h024a12e_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/osx-arm64/ncurses-6.5-h5e97a16_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/nlohmann_json-3.11.3-h00cdb27_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.1-h81ee809_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/orc-2.0.3-h0ff2369_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.3-py312hcd31e36_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/prometheus-cpp-1.3.0-h0967b3e_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.1-py312h998013c_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-19.0.1-py312h1f38498_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-19.0.1-py312hc40f475_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.9-hc22306f_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-xxhash-3.5.0-py312hea69d52_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-5_cp312.conda + - conda: https://conda.anaconda.org/pytorch/osx-arm64/pytorch-2.5.1-py3.12_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py312h998013c_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.1-py312hf4875e0_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/re2-2024.07.02-h6589ca4_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda + - 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/osx-arm64/safetensors-0.5.3-py312hcd83bfe_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-0.2.0-h22a84ea_10.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-python-0.2.0-py312h155166a_10.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-spm-0.2.0-he13a0af_10.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-h98b9ce2_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sympy-1.13.3-pyh2585a3b_105.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.21.0-py312hf3e4074_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.49.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xxhash-0.8.3-h5505292_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.18.3-py312h998013c_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zlib-1.3.1-h8359307_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py312h15fbf35_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.6-hb46c0d2_0.conda +packages: +- conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 + sha256: fe51de6107f9edc7aa4f786a70f4a883943bc9d39b3bb7307c04c41410990726 + md5: d7c89558ba9fa0495403155b64376d81 + arch: x86_64 + platform: linux + license: None + purls: [] + size: 2562 + timestamp: 1578324546067 +- conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_kmp_llvm.tar.bz2 + build_number: 2 + sha256: 84a66275da3a66e3f3e70e9d8f10496d807d01a9e4ec16cd2274cc5e28c478fc + md5: 562b26ba2e19059551a811e72ab7f793 + depends: + - _libgcc_mutex 0.1 conda_forge + - llvm-openmp >=9.0.1 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 5744 + timestamp: 1650742457817 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2 + build_number: 16 + sha256: 3702bef2f0a4d38bd8288bbe54aace623602a1343c2cfbefd3fa188e015bebf0 + md5: 6168d71addc746e8f2b8d57dfd2edcea + depends: + - libgomp >=7.5.0 + constrains: + - openmp_impl 9999 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 23712 + timestamp: 1650670790230 +- conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.6-pyhd8ed1ab_0.conda + sha256: a2a5579be9fb21f9397f51a4ba09599782c93e9117951a5105d8ee4b80d648c1 + md5: 5b7d3ceeb36e8e6783eae78acd4c18e1 + depends: + - python >=3.9 + license: PSF-2.0 + license_family: PSF + purls: + - pkg:pypi/aiohappyeyeballs?source=compressed-mapping + size: 19236 + timestamp: 1739175837817 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.13-py312h178313f_0.conda + sha256: 985834edea972ddf6c35ab4185fb228440efb845a70a88182895f8f90df4a4c9 + md5: 0ea623ee1f29a7e1d703bc3b0ef82306 + depends: + - __glibc >=2.17,<3.0.a0 + - aiohappyeyeballs >=2.3.0 + - aiosignal >=1.1.2 + - attrs >=17.3.0 + - frozenlist >=1.1.1 + - libgcc >=13 + - multidict >=4.5,<7.0 + - propcache >=0.2.0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - yarl >=1.17.0,<2.0 + arch: x86_64 + platform: linux + license: MIT AND Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/aiohttp?source=hash-mapping + size: 915558 + timestamp: 1740482064204 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.13-py312hcc812fe_0.conda + sha256: ca1fa0450decaca810db4b9f5ff1dd00c710fd89767c764a771b5d4ce7a152b0 + md5: 7e952a2d83ebfb371515c010acc110c7 + depends: + - aiohappyeyeballs >=2.3.0 + - aiosignal >=1.1.2 + - attrs >=17.3.0 + - frozenlist >=1.1.1 + - libgcc >=13 + - multidict >=4.5,<7.0 + - propcache >=0.2.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - yarl >=1.17.0,<2.0 + arch: aarch64 + platform: linux + license: MIT AND Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/aiohttp?source=hash-mapping + size: 904149 + timestamp: 1740481643315 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.13-py312h998013c_0.conda + sha256: 84f8c35912bce8c9ee979454a685ec0497fbccd7da86351e8d774ae3e7456055 + md5: d575ea7d96ce2c9fed370d85d3ef464e + depends: + - __osx >=11.0 + - aiohappyeyeballs >=2.3.0 + - aiosignal >=1.1.2 + - attrs >=17.3.0 + - frozenlist >=1.1.1 + - multidict >=4.5,<7.0 + - propcache >=0.2.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - yarl >=1.17.0,<2.0 + arch: arm64 + platform: osx + license: MIT AND Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/aiohttp?source=hash-mapping + size: 885919 + timestamp: 1740482022806 +- conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda + sha256: 7de8ced1918bbdadecf8e1c1c68237fe5709c097bd9e0d254f4cad118f4345d0 + md5: 1a3981115a398535dbe3f6d5faae3d36 + depends: + - frozenlist >=1.1.0 + - python >=3.9 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/aiosignal?source=hash-mapping + size: 13229 + timestamp: 1734342253061 +- conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.1.0-pyh71513ae_0.conda + sha256: 1f267886522dfb9ae4e5ebbc3135b5eb13cff27bdbfe8d881a4d893459166ab4 + md5: 2cc3f588512f04f3a0c64b4e9bedc02d + depends: + - python >=3.9 + license: MIT + license_family: MIT + purls: + - pkg:pypi/attrs?source=compressed-mapping + size: 56370 + timestamp: 1737819298139 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.1-h205f482_0.conda + sha256: ebe5e33249f37f6bb481de99581ebdc92dbfcf1b6915609bcf3c9e78661d6352 + md5: 9c500858e88df50af3cc883d194de78a + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 108111 + timestamp: 1737509831651 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.1-hb7ec8d5_0.conda + sha256: e1e6c9267a4d9af30b1d28c11a9041b17b7840ff83ef08614145a2a4f444f5b4 + md5: 2630f030652970a5531e492f6b2a6dd3 + depends: + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 + - libgcc >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 112658 + timestamp: 1737509863269 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.1-hfc2798a_0.conda + sha256: 5a60d196a585b25d1446fb973009e4e648e8d70beaa2793787243ede6da0fd9a + md5: 0abd67c0f7b60d50348fbb32fef50b65 + depends: + - __osx >=11.0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 92562 + timestamp: 1737509877079 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.1-h1a47875_3.conda + sha256: 095ac824ea9303eff67e04090ae531d9eb33d2bf8f82eaade39b839c421e16e8 + md5: 55a8561fdbbbd34f50f57d9be12ed084 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + - openssl >=3.3.1,<4.0a0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 47601 + timestamp: 1733991564405 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.1-h740c5af_3.conda + sha256: c5c7961d48ca7320ed3560c036f7aa5244df4b85d9657f70aacc5faba3e1509a + md5: 57ed2c445d7ef01d121b9bcea0522913 + depends: + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + - openssl >=3.3.1,<4.0a0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 50036 + timestamp: 1733991581303 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.1-hc8a0bd2_3.conda + sha256: 1f44be36e1daa17b4b081debb8aee492d13571084f38b503ad13e869fef24fe4 + md5: 8b0ce61384e5a33d2b301a64f3d22ac5 + depends: + - __osx >=11.0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - openssl >=3.3.1,<4.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 39925 + timestamp: 1733991649383 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.10.6-hb9d3cd8_0.conda + sha256: 496e92f2150fdc351eacf6e236015deedb3d0d3114f8e5954341cbf9f3dda257 + md5: d7d4680337a14001b0e043e96529409b + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 236574 + timestamp: 1733975453350 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-common-0.10.6-h86ecc28_0.conda + sha256: 57288ec5df35781bea8fc6a8c9099cad6695b747784fc1b8862a0f9e5b3bf5ab + md5: fef806a0f6de853670c746bbece01966 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 259031 + timestamp: 1733975520465 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.10.6-h5505292_0.conda + sha256: 3bde135c8e74987c0f79ecd4fa17ec9cff0d658b3090168727ca1af3815ae57a + md5: 145e5b4c9702ed279d7d68aaf096f77d + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 221863 + timestamp: 1733975576886 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.3.0-h4e1184b_5.conda + sha256: 62ca84da83585e7814a40240a1e750b1563b2680b032a471464eccc001c3309b + md5: 3f4c1197462a6df2be6dc8241828fe93 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 19086 + timestamp: 1733991637424 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-compression-0.3.0-h0f0193d_5.conda + sha256: 3f05d19f68ef800f33d44ea2a4211003124076516c8469abc7d432236344df53 + md5: 3a1421d12435df5b4c412cc4c8fac64d + depends: + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 19740 + timestamp: 1733991625201 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-compression-0.3.0-hc8a0bd2_5.conda + sha256: 47b2813f652ce7e64ac442f771b2a5f7d4af4ad0d07ff51f6075ea80ed2e3f09 + md5: a8b6c17732d14ed49d0e9b59c43186bc + depends: + - __osx >=11.0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 18068 + timestamp: 1733991869211 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.0-h7959bf6_11.conda + sha256: 10d7240c7db0c941fb1a59c4f8ea6689a434b03309ee7b766fa15a809c553c02 + md5: 9b3fb60fe57925a92f399bc3fc42eccf + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 54003 + timestamp: 1734024480949 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-event-stream-0.5.0-hcbd8f92_11.conda + sha256: 79aa363c71c891a27496c0498f8d498b2ddc87b3ccb3b6c9da5b50b05936ebb8 + md5: e0772c59af4243a9b2565baa5d79e5b6 + depends: + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + - libgcc >=13 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 55207 + timestamp: 1734024546663 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.0-h54f970a_11.conda + sha256: f0667935f4e0d4c25e0e51da035640310b5ceeb8f723156734439bde8b848d7d + md5: ba41238f8e653998d7d2f42e3a8db054 + depends: + - __osx >=11.0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + - libcxx >=18 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 47078 + timestamp: 1734024749727 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.2-hefd7a92_4.conda + sha256: 4a330206bd51148f6c13ca0b7a4db40f29a46f090642ebacdeb88b8a4abd7f99 + md5: 5ce4df662d32d3123ea8da15571b6f51 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-compression >=0.3.0,<0.3.1.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 197731 + timestamp: 1734008380764 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.2-h3df160d_4.conda + sha256: 3a1d2d332945306be9d49e569b95e4cc172d825f10e88715513a172f28ebb59e + md5: 28f00aa7fd9556c4c461328cf146c20b + depends: + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-compression >=0.3.0,<0.3.1.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - libgcc >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 190586 + timestamp: 1734008442362 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.2-h96aa502_4.conda + sha256: 22e4737c8a885995b7c1ae1d79c1f6e78d489e16ec079615980fdde067aeaf76 + md5: 495c93a4f08b17deb3c04894512330e6 + depends: + - __osx >=11.0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-compression >=0.3.0,<0.3.1.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 152983 + timestamp: 1734008451473 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-h173a860_6.conda + sha256: 335d822eead0a097ffd23677a288e1f18ea22f47a92d4f877419debb93af0e81 + md5: 9a063178f1af0a898526cc24ba7be486 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + - s2n >=1.5.11,<1.5.12.0a0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 157263 + timestamp: 1737207617838 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-hfd5ba81_6.conda + sha256: d8adfde05cee11057d99c3802e84b2300430a7c7c3c9936165d1d4b25ef59d91 + md5: 4e6771b45cb2b035c62d023dbf0dc000 + depends: + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + - s2n >=1.5.11,<1.5.12.0a0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 160933 + timestamp: 1737207637279 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-haba67d1_6.conda + sha256: 73722dd175af78b6cbfa033066f0933351f5382a1a737f6c6d9b8cfa84022161 + md5: d02e8f40ff69562903e70a1c6c48b009 + depends: + - __osx >=11.0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 136048 + timestamp: 1737207681224 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h11f4f37_12.conda + sha256: 512d3969426152d9d5fd886e27b13706122dc3fa90eb08c37b0d51a33d7bb14a + md5: 96c3e0221fa2da97619ee82faa341a73 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 194672 + timestamp: 1734025626798 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h5f50e26_12.conda + sha256: ffeb9100cc8fd4093e1a6fdfd938bc4a396dd77480b7fb17aa42855a4d5e2c70 + md5: 031ca33115d4b1eeb43f435d6215778c + depends: + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - libgcc >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 169516 + timestamp: 1734025167885 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h24f418c_12.conda + sha256: 96575ea1dd2a9ea94763882e40a66dcbff9c41f702bf37c9514c4c719b3c11dd + md5: c072045a6206f88015d02fcba1705ea1 + depends: + - __osx >=11.0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 134371 + timestamp: 1734025379525 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.9-he1b24dc_1.conda + sha256: 15fbdedc56850f8be5be7a5bcaea1af09c97590e631c024ae089737fc932fc42 + md5: caafc32928a5f7f3f7ef67d287689144 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-auth >=0.8.1,<0.8.2.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + - libgcc >=13 + - openssl >=3.4.0,<4.0a0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 115413 + timestamp: 1737558687616 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.9-h05b070f_1.conda + sha256: 9e7857fbc33eddc291fa09890ce468a92485d3e3e127bc00bbd1803e34121f84 + md5: e0a2869195f069db88b8932f5b00bee5 + depends: + - aws-c-auth >=0.8.1,<0.8.2.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + - libgcc >=13 + - openssl >=3.4.0,<4.0a0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 117875 + timestamp: 1737558720047 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.9-hf37e03c_1.conda + sha256: 92e8ca4eefcbbdf4189584c9410382884a06ed3030e5ecaac656dab8c95e6a80 + md5: de65f5e4ab5020103fe70a0eba9432a0 + depends: + - __osx >=11.0 + - aws-c-auth >=0.8.1,<0.8.2.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 98731 + timestamp: 1737558731831 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.2-h4e1184b_0.conda + sha256: 0424e380c435ba03b5948d02e8c958866c4eee50ed29e57f99473a5f795a4cfc + md5: dcd498d493818b776a77fbc242fbf8e4 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 55911 + timestamp: 1736535960724 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.2-h0f0193d_0.conda + sha256: fba38e469457764afcb94aa84d4d7788e6b5fa1554d34b05c904d2245fdd3c81 + md5: a78928881c652facde2a13ec6e776f3c + depends: + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 58221 + timestamp: 1736536003041 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.2-hc8a0bd2_0.conda + sha256: ea4f0f1e99056293c69615f581a997d65ba7e229e296e402e0d8ef750648a5b5 + md5: e7b5498ac7b7ab921a907be38f3a8080 + depends: + - __osx >=11.0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 49872 + timestamp: 1736536152332 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-h4e1184b_4.conda + sha256: 1ed9a332d06ad595694907fad2d6d801082916c27cd5076096fda4061e6d24a8 + md5: 74e8c3e4df4ceae34aa2959df4b28101 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 72762 + timestamp: 1733994347547 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h0f0193d_4.conda + sha256: 9f1e3635a587bcf92b61d88c7af7d24cd89c147c6d0ae58afbde08e65bcf48da + md5: 3bd35b0adab3d743f09e0252cc441d6b + depends: + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 72154 + timestamp: 1733994384415 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-hc8a0bd2_4.conda + sha256: 215086d95e8ff1d3fcb0197ada116cc9d7db1fdae7573f5e810d20fa9215b47c + md5: e70e88a357a3749b67679c0788c5b08a + depends: + - __osx >=11.0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 70186 + timestamp: 1733994496998 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.9-he0e7f3f_2.conda + sha256: c1930569713bd5231d48d885a5e3707ac917b428e8f08189d14064a2bb128adc + md5: 8a4e6fc8a3b285536202b5456a74a940 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-auth >=0.8.1,<0.8.2.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-event-stream >=0.5.0,<0.5.1.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-c-mqtt >=0.11.0,<0.11.1.0a0 + - aws-c-s3 >=0.7.9,<0.7.10.0a0 + - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 353222 + timestamp: 1737565463079 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.9-hab3ce66_2.conda + sha256: c3884fb10e0fd9be5c13256cabcda1afa9d2fcf8878c67214d02fc344509857d + md5: 875968ebffe992b68faf2caebbf32f02 + depends: + - aws-c-auth >=0.8.1,<0.8.2.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-event-stream >=0.5.0,<0.5.1.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-c-mqtt >=0.11.0,<0.11.1.0a0 + - aws-c-s3 >=0.7.9,<0.7.10.0a0 + - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 + - libgcc >=13 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 283812 + timestamp: 1737565480034 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.9-ha81f72f_2.conda + sha256: ed5f1d19aad53787fdebe13db4709c97eae2092536cc55d3536eba320c4286e1 + md5: c9c034d3239bf25687ca4dd985007ecd + depends: + - __osx >=11.0 + - aws-c-auth >=0.8.1,<0.8.2.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-event-stream >=0.5.0,<0.5.1.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-c-mqtt >=0.11.0,<0.11.1.0a0 + - aws-c-s3 >=0.7.9,<0.7.10.0a0 + - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 + - libcxx >=18 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 235976 + timestamp: 1737565563139 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.489-h4d475cb_0.conda + sha256: 08d6b7d2ed17bfcc7deb903c7751278ee434abdb27e3be0dceb561f30f030c75 + md5: b775e9f46dfa94b228a81d8e8c6d8b1d + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-event-stream >=0.5.0,<0.5.1.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + - aws-crt-cpp >=0.29.9,<0.29.10.0a0 + - libcurl >=8.11.1,<9.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 3144364 + timestamp: 1737576036746 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.489-h88461e4_0.conda + sha256: 88353e82b053763168cddbe2f88048defc1c97b3dad0966fbe8c4fa7aa592c7e + md5: e725d8fa77a6a5f38a78c5de914a5f40 + depends: + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-event-stream >=0.5.0,<0.5.1.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + - aws-crt-cpp >=0.29.9,<0.29.10.0a0 + - libcurl >=8.11.1,<9.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 3015109 + timestamp: 1737575993030 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.489-h0e5014b_0.conda + sha256: d82451530ddf363d8bb31a8a7391bb9699f745e940ace91d78c0e6170deef03c + md5: 156cfb45a1bb8cffc81e59047bb34f51 + depends: + - __osx >=11.0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-event-stream >=0.5.0,<0.5.1.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + - aws-crt-cpp >=0.29.9,<0.29.10.0a0 + - libcurl >=8.11.1,<9.0a0 + - libcxx >=18 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 2874126 + timestamp: 1737577023623 +- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda + sha256: fe07debdb089a3db17f40a7f20d283d75284bb4fc269ef727b8ba6fc93f7cb5a + md5: 0a8838771cc2e985cd295e01ae83baf1 + depends: + - __glibc >=2.17,<3.0.a0 + - libcurl >=8.10.1,<9.0a0 + - libgcc >=13 + - libstdcxx >=13 + - openssl >=3.3.2,<4.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 345117 + timestamp: 1728053909574 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-core-cpp-1.14.0-h1887c18_0.conda + sha256: 8967b3ccee4d74e61f6ec82dd8efb9deb854ee7ba012dfe767b7a92e0ac77724 + md5: e0c3a906a41be769f0ae20ca3e31cfc0 + depends: + - libcurl >=8.10.1,<9.0a0 + - libgcc >=13 + - libstdcxx >=13 + - openssl >=3.3.2,<4.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 338650 + timestamp: 1728055589907 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.14.0-hd50102c_0.conda + sha256: f5b91329ed59ffc0be8747784c6e4cc7e56250c54032883a83bc11808ef6a87e + md5: f093a11dcf3cdcca010b20a818fcc6dc + depends: + - __osx >=11.0 + - libcurl >=8.10.1,<9.0a0 + - libcxx >=17 + - openssl >=3.3.2,<4.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 294299 + timestamp: 1728054014060 +- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.10.0-h113e628_0.conda + sha256: 286b31616c191486626cb49e9ceb5920d29394b9e913c23adb7eb637629ba4de + md5: 73f73f60854f325a55f1d31459f2ab73 + depends: + - __glibc >=2.17,<3.0.a0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - libgcc >=13 + - libstdcxx >=13 + - openssl >=3.3.2,<4.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 232351 + timestamp: 1728486729511 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-identity-cpp-1.10.0-h47b0b28_0.conda + sha256: 1c72423b9beba167d2f01b80dc204da77240a8266f1edb3d89510c852b300d69 + md5: 94e73a7877743a85c57091d8afab2348 + depends: + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - libgcc >=13 + - libstdcxx >=13 + - openssl >=3.3.2,<4.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 217132 + timestamp: 1728488096615 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.10.0-hc602bab_0.conda + sha256: bde446b916fff5150606f8ed3e6058ffc55a3aa72381e46f1ab346590b1ae40a + md5: d7b71593a937459f2d4b67e1a4727dc2 + depends: + - __osx >=11.0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - libcxx >=17 + - openssl >=3.3.2,<4.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 166907 + timestamp: 1728486882502 +- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.13.0-h3cf044e_1.conda + sha256: 2606260e5379eed255bcdc6adc39b93fb31477337bcd911c121fc43cd29bf394 + md5: 7eb66060455c7a47d9dcdbfa9f46579b + depends: + - __glibc >=2.17,<3.0.a0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 549342 + timestamp: 1728578123088 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-blobs-cpp-12.13.0-h185ecfd_1.conda + sha256: 280ec70009a92626054f58e45b168fce393e71a9710587488bd8401628cda481 + md5: 221e1e5ecb2643e113f32b3229d5ba33 + depends: + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 + - libgcc >=13 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 502934 + timestamp: 1728580241002 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-blobs-cpp-12.13.0-h7585a09_1.conda + sha256: 08d52d130addc0fb55d5ba10d9fa483e39be25d69bac7f4c676c2c3069207590 + md5: 704238ef05d46144dae2e6b5853df8bc + depends: + - __osx >=11.0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 + - libcxx >=17 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 438636 + timestamp: 1728578216193 +- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-common-cpp-12.8.0-h736e048_1.conda + sha256: 273475f002b091b66ce7366da04bf164c3732c03f8692ab2ee2d23335b6a82ba + md5: 13de36be8de3ae3f05ba127631599213 + depends: + - __glibc >=2.17,<3.0.a0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libxml2 >=2.12.7,<3.0a0 + - openssl >=3.3.2,<4.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 149312 + timestamp: 1728563338704 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-common-cpp-12.8.0-h1b94036_1.conda + sha256: 146e76aac169e3dbdce5d3b142b7930ac643795c765e7655d1989905ec7d3231 + md5: 793b1080ab2d958980f137a8643cd6e8 + depends: + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libxml2 >=2.12.7,<3.0a0 + - openssl >=3.3.2,<4.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 140832 + timestamp: 1728565334900 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-common-cpp-12.8.0-h9ca1f76_1.conda + sha256: 77ab04e8fe5636a2de9c718f72a43645f7502cd208868c8a91ffba385547d585 + md5: 7a187cd7b1445afc80253bb186a607cc + depends: + - __osx >=11.0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - libcxx >=17 + - libxml2 >=2.12.7,<3.0a0 + - openssl >=3.3.2,<4.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 121278 + timestamp: 1728563418777 +- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-files-datalake-cpp-12.12.0-ha633028_1.conda + sha256: 5371e4f3f920933bb89b926a85a67f24388227419abd6e99f6086481e5e8d5f2 + md5: 7c1980f89dd41b097549782121a73490 + depends: + - __glibc >=2.17,<3.0.a0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 + - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 287366 + timestamp: 1728729530295 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-files-datalake-cpp-12.12.0-h37d6d07_1.conda + sha256: 4079c617a75682e49bae63670d58fd6078ccfbbe55ca1f994acab3a74ab6bbcc + md5: b724f3b4b7f4e9b36c58cbe3ed8610a2 + depends: + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 + - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 + - libgcc >=13 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 260547 + timestamp: 1728730924071 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-files-datalake-cpp-12.12.0-hcdd55da_1.conda + sha256: f48523f8aa0b5b80f45a92f0556b388dd96f44ac2dc2f44a01d08c1822eec97d + md5: c49fbc5233fcbaa86391162ff1adef38 + depends: + - __osx >=11.0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 + - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 + - libcxx >=17 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 196032 + timestamp: 1728729672889 +- conda: https://conda.anaconda.org/conda-forge/linux-64/blas-2.116-mkl.tar.bz2 + build_number: 16 + sha256: 87056ebdc90b6d1ea6726d04d42b844cc302112e80508edbf7bf1f1a4fd3fed2 + md5: c196a26abf6b4f132c88828ab7c2231c + depends: + - _openmp_mutex * *_llvm + - _openmp_mutex >=4.5 + - blas-devel 3.9.0 16_linux64_mkl + - libblas 3.9.0 16_linux64_mkl + - libcblas 3.9.0 16_linux64_mkl + - libgcc-ng >=12 + - libgfortran-ng + - libgfortran5 >=10.4.0 + - liblapack 3.9.0 16_linux64_mkl + - liblapacke 3.9.0 16_linux64_mkl + - llvm-openmp >=14.0.4 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 13258 + timestamp: 1660094704275 +- conda: https://conda.anaconda.org/conda-forge/linux-64/blas-devel-3.9.0-16_linux64_mkl.tar.bz2 + build_number: 16 + sha256: a7da65ca4e0322317cbc4d387c4a5f075cdc7fcd12ad9f7f18da758c7532749a + md5: 3f92c1c9e1c0e183462c5071aa02cae1 + depends: + - libblas 3.9.0 16_linux64_mkl + - libcblas 3.9.0 16_linux64_mkl + - liblapack 3.9.0 16_linux64_mkl + - liblapacke 3.9.0 16_linux64_mkl + - mkl >=2022.1.0,<2023.0a0 + - mkl-devel 2022.1.* + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 12630 + timestamp: 1660094595212 +- conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py312h2ec8cdc_2.conda + sha256: f2a59ccd20b4816dea9a2a5cb917eb69728271dbf1aeab4e1b7e609330a50b6f + md5: b0b867af6fc74b2a0aa206da29c0f3cf + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - libbrotlicommon 1.1.0 hb9d3cd8_2 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: + - pkg:pypi/brotli?source=hash-mapping + size: 349867 + timestamp: 1725267732089 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/brotli-python-1.1.0-py312h6f74592_2.conda + sha256: 9736bf660a0e4260c68f81d2635b51067f817813e6490ac9e8abd9a835dcbf6d + md5: e1e9727063057168d95f27a032acd0a4 + depends: + - libgcc >=13 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - libbrotlicommon 1.1.0 h86ecc28_2 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: + - pkg:pypi/brotli?source=hash-mapping + size: 356878 + timestamp: 1725267878508 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py312hde4cb15_2.conda + sha256: 254b411fa78ccc226f42daf606772972466f93e9bc6895eabb4cfda22f5178af + md5: a83c2ef76ccb11bc2349f4f17696b15d + depends: + - __osx >=11.0 + - libcxx >=17 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - libbrotlicommon 1.1.0 hd74edd7_2 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: + - pkg:pypi/brotli?source=hash-mapping + size: 339360 + timestamp: 1725268143995 +- conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda + sha256: 5ced96500d945fb286c9c838e54fa759aa04a7129c59800f0846b4335cee770d + md5: 62ee74e96c5ebb0af99386de58cf9553 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: bzip2-1.0.6 + license_family: BSD + purls: [] + size: 252783 + timestamp: 1720974456583 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h68df207_7.conda + sha256: 2258b0b33e1cb3a9852d47557984abb6e7ea58e3d7f92706ec1f8e879290c4cb + md5: 56398c28220513b9ea13d7b450acfb20 + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: bzip2-1.0.6 + license_family: BSD + purls: [] + size: 189884 + timestamp: 1720974504976 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda + sha256: adfa71f158cbd872a36394c56c3568e6034aa55c623634b37a4836bd036e6b91 + md5: fc6948412dbbbe9a4c9ddbbcfe0a79ab + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: bzip2-1.0.6 + license_family: BSD + purls: [] + size: 122909 + timestamp: 1720974522888 +- conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.4-hb9d3cd8_0.conda + sha256: d4f28d87b6339b94f74762c0076e29c8ef8ddfff51a564a92da2843573c18320 + md5: e2775acf57efd5af15b8e3d1d74d72d3 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 206085 + timestamp: 1734208189009 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/c-ares-1.34.4-h86ecc28_0.conda + sha256: 1187a41d4bb2afe02cb18690682edc98d1e9f5e0ccda638d8704a75ea1875bbe + md5: 356da36f35d36dcba16e43f1589d4e39 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 215979 + timestamp: 1734208193181 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.4-h5505292_0.conda + sha256: 09c0c8476e50b2955f474a4a1c17c4c047dd52993b5366b6ea8e968e583b921f + md5: c1c999a38a4303b29d75c636eaa13cf9 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 179496 + timestamp: 1734208291879 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2025.1.31-hbcca054_0.conda + sha256: bf832198976d559ab44d6cdb315642655547e26d826e34da67cbee6624cda189 + md5: 19f3a56f68d2fd06c516076bff482c52 + arch: x86_64 + platform: linux + license: ISC + purls: [] + size: 158144 + timestamp: 1738298224464 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2025.1.31-hcefe29a_0.conda + sha256: 66c6408ee461593cfdb2d78d82e6ed74d04a04ccb51df3ef8a5f35148c9c6eec + md5: 462cb166cd2e26a396f856510a3aff67 + arch: aarch64 + platform: linux + license: ISC + purls: [] + size: 158290 + timestamp: 1738299057652 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2025.1.31-hf0a4a13_0.conda + sha256: 7e12816618173fe70f5c638b72adf4bfd4ddabf27794369bb17871c5bb75b9f9 + md5: 3569d6a9141adc64d2fe4797f3289e06 + arch: arm64 + platform: osx + license: ISC + purls: [] + size: 158425 + timestamp: 1738298167688 +- conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.1.31-pyhd8ed1ab_0.conda + sha256: 42a78446da06a2568cb13e69be3355169fbd0ea424b00fc80b7d840f5baaacf3 + md5: c207fa5ac7ea99b149344385a9c0880d + depends: + - python >=3.9 + license: ISC + purls: + - pkg:pypi/certifi?source=compressed-mapping + size: 162721 + timestamp: 1739515973129 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py312h06ac9bb_0.conda + sha256: cba6ea83c4b0b4f5b5dc59cb19830519b28f95d7ebef7c9c5cf1c14843621457 + md5: a861504bbea4161a9170b85d4d2be840 + depends: + - __glibc >=2.17,<3.0.a0 + - libffi >=3.4,<4.0a0 + - libgcc >=13 + - pycparser + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: + - pkg:pypi/cffi?source=hash-mapping + size: 294403 + timestamp: 1725560714366 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cffi-1.17.1-py312hac81daf_0.conda + sha256: 1162e3ca039e7ca7c0e78f0a020ed1bde968096841b663e3f393c966eb82f0f0 + md5: 1a256e5581b1099e9295cb84d53db3ea + depends: + - libffi >=3.4,<4.0a0 + - libgcc >=13 + - pycparser + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: + - pkg:pypi/cffi?source=hash-mapping + size: 312892 + timestamp: 1725561779888 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.1-py312h0fad829_0.conda + sha256: 8d91a0d01358b5c3f20297c6c536c5d24ccd3e0c2ddd37f9d0593d0f0070226f + md5: 19a5456f72f505881ba493979777b24e + depends: + - __osx >=11.0 + - libffi >=3.4,<4.0a0 + - pycparser + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: + - pkg:pypi/cffi?source=hash-mapping + size: 281206 + timestamp: 1725560813378 +- conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda + sha256: 4e0ee91b97e5de3e74567bdacea27f0139709fceca4db8adffbe24deffccb09b + md5: e83a31202d1c0a000fce3e9cf3825875 + depends: + - python >=3.9 + license: MIT + license_family: MIT + purls: + - pkg:pypi/charset-normalizer?source=hash-mapping + size: 47438 + timestamp: 1735929811779 +- conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda + sha256: c920d23cd1fcf565031c679adb62d848af60d6fbb0edc2d50ba475cea4f0d8ab + md5: f22f4d4970e09d68a10b922cbb0408d3 + depends: + - __unix + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/click?source=hash-mapping + size: 84705 + timestamp: 1734858922844 +- conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + sha256: ab29d57dc70786c1269633ba3dff20288b81664d3ff8d21af995742e2bb03287 + md5: 962b9857ee8e7018c22f2776ffa0b2d7 + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/colorama?source=hash-mapping + size: 27011 + timestamp: 1733218222191 +- conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.12.9-py312hd8ed1ab_0.conda + noarch: generic + sha256: f5c7ad0bd23fa8645ac279d99bddba656ff61483dc6312af12aae13910dfb210 + md5: a5b10f166467fecec692abaee84d16aa + depends: + - python 3.12.9.* + - python_abi * *_cp312 + license: Python-2.0 + purls: [] + size: 44836 + timestamp: 1739519561557 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-cudart-12.4.127-he02047a_2.conda + sha256: d8ad0be647dad6378119c110572bbf9f6b1e8c820393ed159d45f02588979c07 + md5: a748faa52331983fc3adcc3b116fe0e4 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-cudart_linux-64 12.4.127 h85509e4_2 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 22563 + timestamp: 1715710703269 +- conda: https://conda.anaconda.org/conda-forge/noarch/cuda-cudart_linux-64-12.4.127-h85509e4_2.conda + sha256: 1f1b3e0bf6b5e665860ecbdf509c1e02760c14d25e3f3893a712f90f7f8a5abc + md5: 329163110a96514802e9e64d971edf43 + depends: + - cuda-version >=12.4,<12.5.0a0 + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 186886 + timestamp: 1715710690964 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-cupti-12.4.127-he02047a_2.conda + sha256: db9ebc57fd583711bbdd12e54d00e4153a7b414f929f77fca2f44547c02204b8 + md5: 46422ef1b1161fb180027e50c598ecd0 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 1918773 + timestamp: 1715665119069 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-libraries-12.4.1-ha770c72_1.conda + sha256: cb30e83f33c7480caa68a1e35e6ff4102d17ff0a94239ca18555afff1df2f70e + md5: 6bb3f998485d4344a7539e0b218b3fc1 + depends: + - cuda-cudart 12.4.127.* + - cuda-nvrtc 12.4.127.* + - cuda-opencl 12.4.127.* + - libcublas 12.4.5.8.* + - libcufft 11.2.1.3.* + - libcufile 1.9.1.3.* + - libcurand 10.3.5.147.* + - libcusolver 11.6.1.9.* + - libcusparse 12.3.1.170.* + - libnpp 12.2.5.30.* + - libnvfatbin 12.4.127.* + - libnvjitlink 12.4.127.* + - libnvjpeg 12.3.1.117.* + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 20180 + timestamp: 1713304266920 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-nvrtc-12.4.127-he02047a_2.conda + sha256: c4aba5e152526db7cad7c8a5191497b0c6365c912ed845dc9c427d29893486a1 + md5: 80baf6262f4a1a0dde42d85aaa393402 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 18825627 + timestamp: 1715711095870 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-nvtx-12.4.127-he02047a_2.conda + sha256: 8f499785edaec6198a934e8a9dd1f8b6f79aabcc135962d6050dd7328c76d3dc + md5: 656a004b6e44f50ce71c65cab0d429b4 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 31691 + timestamp: 1715731339952 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-opencl-12.4.127-he02047a_1.conda + sha256: 75d912a70719a9d0bca9f234a79a857815d8feec3c54c145e6e41589de4ff5be + md5: 1e98deda07c14d26c80d124cf0eb011a + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - ocl-icd >=2.3.2,<3.0a0 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 30406 + timestamp: 1715711329543 +- conda: https://conda.anaconda.org/conda-forge/noarch/cuda-runtime-12.4.1-ha804496_0.conda + sha256: 61a593347c91a9bcd18329f7aa780bd1fb1e20dd1b61b16a451bd4a6b60dabf0 + md5: 48829f4ef6005ae8d4867b99168ff2b8 + depends: + - __linux + - cuda-libraries 12.4.1.* + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 20034 + timestamp: 1712683445348 +- conda: https://conda.anaconda.org/conda-forge/noarch/cuda-version-12.4-h3060b56_3.conda + sha256: 571d32fbd0dc8df6e85c14d1757549927e272af9c70b935d7e3a553ab0b0b4da + md5: c9a3fe8b957176e1a8452c6f3431b0d8 + constrains: + - cudatoolkit 12.4|12.4.* + - __cuda >=12 + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 21022 + timestamp: 1709765922936 +- conda: https://conda.anaconda.org/conda-forge/noarch/datasets-3.3.2-pyhd8ed1ab_0.conda + sha256: 06109a3de7a977424d960b75cdb307f8d769eae87c53e33a64e706171199997a + md5: c2f904077afe3a8246c26576f555a6af + depends: + - aiohttp + - dill >=0.3.0,<0.3.9 + - filelock + - fsspec >=2023.1.0,<=2024.12.0 + - huggingface_hub >=0.24.0 + - multiprocess <0.70.17 + - numpy >=1.17 + - packaging + - pandas + - pyarrow >=15.0.0 + - python >=3.9 + - python-xxhash + - pyyaml >=5.1 + - requests >=2.32.2 + - tqdm >=4.66.3 + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/datasets?source=hash-mapping + size: 335311 + timestamp: 1740153561620 +- conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.8-pyhd8ed1ab_0.conda + sha256: 482b5b566ca559119b504c53df12b08f3962a5ef8e48061d62fd58a47f8f2ec4 + md5: 78745f157d56877a2c6e7b386f66f3e2 + depends: + - python >=3.7 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/dill?source=hash-mapping + size: 88169 + timestamp: 1706434833883 +- conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.17.0-pyhd8ed1ab_0.conda + sha256: 006d7e5a0c17a6973596dd86bfc80d74ce541144d2aee2d22d46fd41df560a63 + md5: 7f402b4a1007ee355bc50ce4d24d4a57 + depends: + - python >=3.9 + license: Unlicense + purls: + - pkg:pypi/filelock?source=hash-mapping + size: 17544 + timestamp: 1737517924333 +- conda: https://conda.anaconda.org/conda-forge/linux-64/frozenlist-1.5.0-py312h178313f_1.conda + sha256: 501e20626798b6d7f130f4db0fb02c0385d8f4c11ca525925602a4208afb343f + md5: fb986e1c089021979dc79606af78ef8f + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/frozenlist?source=hash-mapping + size: 60939 + timestamp: 1737645356438 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/frozenlist-1.5.0-py312hcc812fe_1.conda + sha256: 84895c5e207e0cb2044f3607fb36b82eb8cb45f0a009d03dc04c777ed975757d + md5: 9090bf5c43e8011fb2e9a82a1db20cc3 + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/frozenlist?source=hash-mapping + size: 60472 + timestamp: 1737645511278 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/frozenlist-1.5.0-py312h998013c_1.conda + sha256: d503ac8c050abdbd129253973f23be34944978d510de78ef5a3e6aa1e3d9552d + md5: 5eb3715c7e3fa9b533361375bfefe6ee + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/frozenlist?source=hash-mapping + size: 57256 + timestamp: 1737645503377 +- conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.12.0-pyhd8ed1ab_0.conda + sha256: 3320970c4604989eadf908397a9475f9e6a96a773c185915111399cbfbe47817 + md5: e041ad4c43ab5e10c74587f95378ebc7 + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/fsspec?source=hash-mapping + size: 137756 + timestamp: 1734650349242 +- conda: https://conda.anaconda.org/conda-forge/linux-64/gflags-2.2.2-h5888daf_1005.conda + sha256: 6c33bf0c4d8f418546ba9c250db4e4221040936aef8956353bc764d4877bc39a + md5: d411fc29e338efb48c5fd4576d71d881 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 119654 + timestamp: 1726600001928 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gflags-2.2.2-h5ad3122_1005.conda + sha256: 28fe6b40b20454106d5e4ef6947cf298c13cc72a46347bbc49b563cd3a463bfa + md5: 4ff634d515abbf664774b5e1168a9744 + depends: + - libgcc >=13 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 106638 + timestamp: 1726599967617 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/gflags-2.2.2-hf9b8971_1005.conda + sha256: fd56ed8a1dab72ab90d8a8929b6f916a6d9220ca297ff077f8f04c5ed3408e20 + md5: 57a511a5905caa37540eb914dfcbf1fb + depends: + - __osx >=11.0 + - libcxx >=17 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 82090 + timestamp: 1726600145480 +- conda: https://conda.anaconda.org/conda-forge/linux-64/glog-0.7.1-hbabe93e_0.conda + sha256: dc824dc1d0aa358e28da2ecbbb9f03d932d976c8dca11214aa1dcdfcbd054ba2 + md5: ff862eebdfeb2fd048ae9dc92510baca + depends: + - gflags >=2.2.2,<2.3.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 143452 + timestamp: 1718284177264 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/glog-0.7.1-h468a4a4_0.conda + sha256: 920795d4f775a9f47e91c2223e64847f0b212b3fedc56c137c5889e32efe8ba0 + md5: 08940a32c6ced3703d1412dd37df4f62 + depends: + - gflags >=2.2.2,<2.3.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 145811 + timestamp: 1718284208668 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/glog-0.7.1-heb240a5_0.conda + sha256: 9fc77de416953aa959039db72bc41bfa4600ae3ff84acad04a7d0c1ab9552602 + md5: fef68d0a95aa5b84b5c1a4f6f3bf40e1 + depends: + - __osx >=11.0 + - gflags >=2.2.2,<2.3.0a0 + - libcxx >=16 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 112215 + timestamp: 1718284365403 +- conda: https://conda.anaconda.org/conda-forge/linux-64/gmp-6.3.0-hac33072_2.conda + sha256: 309cf4f04fec0c31b6771a5809a1909b4b3154a2208f52351e1ada006f4c750c + md5: c94a5994ef49749880a8139cf9afcbe1 + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: GPL-2.0-or-later OR LGPL-3.0-or-later + purls: [] + size: 460055 + timestamp: 1718980856608 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/gmp-6.3.0-h7bae524_2.conda + sha256: 76e222e072d61c840f64a44e0580c2503562b009090f55aa45053bf1ccb385dd + md5: eed7278dfbab727b56f2c0b64330814b + depends: + - __osx >=11.0 + - libcxx >=16 + arch: arm64 + platform: osx + license: GPL-2.0-or-later OR LGPL-3.0-or-later + purls: [] + size: 365188 + timestamp: 1718981343258 +- conda: https://conda.anaconda.org/conda-forge/linux-64/gmpy2-2.1.5-py312h7201bc8_3.conda + sha256: addd0bc226ca86c11f1223ab322d12b67501c2b3d93749bdab2068ccaedd8ef0 + md5: 673ef4d6611f5b4ca7b5c1f8c65a38dc + depends: + - __glibc >=2.17,<3.0.a0 + - gmp >=6.3.0,<7.0a0 + - libgcc >=13 + - mpc >=1.3.1,<2.0a0 + - mpfr >=4.2.1,<5.0a0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: LGPL-3.0-or-later + license_family: LGPL + purls: + - pkg:pypi/gmpy2?source=hash-mapping + size: 209631 + timestamp: 1733462668219 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/gmpy2-2.1.5-py312h524cf62_3.conda + sha256: 0ea196e4b706321951af1eebdb6a4eb9307faa1fd5361bcf49acb150e71774f7 + md5: ab7a5d10c7b4e249a9fe7bc280909803 + depends: + - __osx >=11.0 + - gmp >=6.3.0,<7.0a0 + - mpc >=1.3.1,<2.0a0 + - mpfr >=4.2.1,<5.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: LGPL-3.0-or-later + license_family: LGPL + purls: + - pkg:pypi/gmpy2?source=hash-mapping + size: 147983 + timestamp: 1733462785197 +- conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda + sha256: 0aa1cdc67a9fe75ea95b5644b734a756200d6ec9d0dff66530aec3d1c1e9df75 + md5: b4754fb1bdcb70c8fd54f918301582c6 + depends: + - hpack >=4.1,<5 + - hyperframe >=6.1,<7 + - python >=3.9 + license: MIT + license_family: MIT + purls: + - pkg:pypi/h2?source=hash-mapping + size: 53888 + timestamp: 1738578623567 +- conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda + sha256: 6ad78a180576c706aabeb5b4c8ceb97c0cb25f1e112d76495bff23e3779948ba + md5: 0a802cb9888dd14eeefc611f05c40b6e + depends: + - python >=3.9 + license: MIT + license_family: MIT + purls: + - pkg:pypi/hpack?source=hash-mapping + size: 30731 + timestamp: 1737618390337 +- conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.29.1-pyhd8ed1ab_0.conda + sha256: f75ca9436fe11d0def6e575d29e0614033c45c90f37895a3b2bb3536612b251c + md5: 0bbbf72b600a1df32666a084769bf240 + depends: + - filelock + - fsspec >=2023.5.0 + - packaging >=20.9 + - python >=3.9 + - pyyaml >=5.1 + - requests + - tqdm >=4.42.1 + - typing-extensions >=3.7.4.3 + - typing_extensions >=3.7.4.3 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/huggingface-hub?source=compressed-mapping + size: 287974 + timestamp: 1740068383431 +- conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda + sha256: 77af6f5fe8b62ca07d09ac60127a30d9069fdc3c68d6b256754d0ffb1f7779f8 + md5: 8e6923fc12f1fe8f8c4e5c9f343256ac + depends: + - python >=3.9 + license: MIT + license_family: MIT + purls: + - pkg:pypi/hyperframe?source=hash-mapping + size: 17397 + timestamp: 1737618427549 +- conda: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda + sha256: 71e750d509f5fa3421087ba88ef9a7b9be11c53174af3aa4d06aff4c18b38e8e + md5: 8b189310083baabfb622af68fd9d3ae3 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 12129203 + timestamp: 1720853576813 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda + sha256: 813298f2e54ef087dbfc9cc2e56e08ded41de65cff34c639cc8ba4e27e4540c9 + md5: 268203e8b983fddb6412b36f2024e75c + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 12282786 + timestamp: 1720853454991 +- conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda + sha256: d7a472c9fd479e2e8dcb83fb8d433fce971ea369d704ece380e876f9c3494e87 + md5: 39a4f67be3286c86d696df570b1201b7 + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/idna?source=hash-mapping + size: 49765 + timestamp: 1733211921194 +- conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + sha256: 598951ebdb23e25e4cec4bbff0ae369cec65ead80b50bc08b441d8e54de5cf03 + md5: f4b39bf00c69f56ac01e020ebfac066c + depends: + - python >=3.9 + - zipp >=0.5 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/importlib-metadata?source=compressed-mapping + size: 29141 + timestamp: 1737420302391 +- pypi: https://download.pytorch.org/whl/Jinja2-3.1.4-py3-none-any.whl#sha256=bc5dd2abb727a5319567b7a813e6a2e7318c39f4f487cfe6c89c6f9c7d25197d + name: jinja2 + version: 3.1.4 + sha256: bc5dd2abb727a5319567b7a813e6a2e7318c39f4f487cfe6c89c6f9c7d25197d + requires_dist: + - markupsafe>=2.0 + - babel>=2.7 ; extra == 'i18n' + requires_python: '>=3.7' +- conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.5-pyhd8ed1ab_0.conda + sha256: 98977694b9ecaa3218662f843425f39501f81973c450f995eec68f1803ed71c3 + md5: 2752a6ed44105bfb18c9bef1177d9dcd + depends: + - markupsafe >=2.0 + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/jinja2?source=hash-mapping + size: 112561 + timestamp: 1734824044952 +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + sha256: 19d8bd5bb2fde910ec59e081eeb59529491995ce0d653a5209366611023a0b3a + md5: 4ebae00eae9705b0c3d6d1018a81d047 + depends: + - importlib-metadata >=4.8.3 + - jupyter_core >=4.12,!=5.0.* + - python >=3.9 + - python-dateutil >=2.8.2 + - pyzmq >=23.0 + - tornado >=6.2 + - traitlets >=5.3 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/jupyter-client?source=hash-mapping + size: 106342 + timestamp: 1733441040958 +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + sha256: 732b1e8536bc22a5a174baa79842d79db2f4956d90293dd82dc1b3f6099bcccd + md5: 0a2980dada0dd7fd0998f0342308b1b1 + depends: + - __unix + - platformdirs >=2.5 + - python >=3.8 + - traitlets >=5.3 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/jupyter-core?source=hash-mapping + size: 57671 + timestamp: 1727163547058 +- conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 + sha256: 150c05a6e538610ca7c43beb3a40d65c90537497a4f6a5f4d15ec0451b6f5ebb + md5: 30186d27e2c9fa62b45fb1476b7200e3 + depends: + - libgcc-ng >=10.3.0 + arch: x86_64 + platform: linux + license: LGPL-2.1-or-later + purls: [] + size: 117831 + timestamp: 1646151697040 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/keyutils-1.6.1-h4e544f5_0.tar.bz2 + sha256: 6d4233d97a9b38acbb26e1268bcf8c10a8e79c2aed7e5a385ec3769967e3e65b + md5: 1f24853e59c68892452ef94ddd8afd4b + depends: + - libgcc-ng >=10.3.0 + arch: aarch64 + platform: linux + license: LGPL-2.1-or-later + purls: [] + size: 112327 + timestamp: 1646166857935 +- conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda + sha256: 99df692f7a8a5c27cd14b5fb1374ee55e756631b9c3d659ed3ee60830249b238 + md5: 3f43953b7d3fb3aaa1d0d0723d91e368 + depends: + - keyutils >=1.6.1,<2.0a0 + - libedit >=3.1.20191231,<3.2.0a0 + - libedit >=3.1.20191231,<4.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - openssl >=3.3.1,<4.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 1370023 + timestamp: 1719463201255 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/krb5-1.21.3-h50a48e9_0.conda + sha256: 0ec272afcf7ea7fbf007e07a3b4678384b7da4047348107b2ae02630a570a815 + md5: 29c10432a2ca1472b53f299ffb2ffa37 + depends: + - keyutils >=1.6.1,<2.0a0 + - libedit >=3.1.20191231,<3.2.0a0 + - libedit >=3.1.20191231,<4.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - openssl >=3.3.1,<4.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 1474620 + timestamp: 1719463205834 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda + sha256: 4442f957c3c77d69d9da3521268cad5d54c9033f1a73f99cde0a3658937b159b + md5: c6dc8a0fdec13a0565936655c33069a1 + depends: + - __osx >=11.0 + - libcxx >=16 + - libedit >=3.1.20191231,<3.2.0a0 + - libedit >=3.1.20191231,<4.0a0 + - openssl >=3.3.1,<4.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 1155530 + timestamp: 1719463474401 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_4.conda + sha256: db73f38155d901a610b2320525b9dd3b31e4949215c870685fd92ea61b5ce472 + md5: 01f8d123c96816249efd255a31ad7712 + depends: + - __glibc >=2.17,<3.0.a0 + constrains: + - binutils_impl_linux-64 2.43 + arch: x86_64 + platform: linux + license: GPL-3.0-only + license_family: GPL + purls: [] + size: 671240 + timestamp: 1740155456116 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_4.conda + sha256: 016832a70b0aa97e1c4e47e23c00b0c34def679de25146736df353199f684f0d + md5: 80c9ad5e05e91bb6c0967af3880c9742 + constrains: + - binutils_impl_linux-aarch64 2.43 + arch: aarch64 + platform: linux + license: GPL-3.0-only + license_family: GPL + purls: [] + size: 699058 + timestamp: 1740155620594 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda + sha256: 143a586aa67d50622ef703de57b9d43f44945836d6568e0e7aa174bd8c45e0d4 + md5: 488f260ccda0afaf08acb286db439c2f + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + constrains: + - libabseil-static =20240722.0=cxx17* + - abseil-cpp =20240722.0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 1311599 + timestamp: 1736008414161 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h18dbdb1_4.conda + sha256: bb6c5fb3b8de5f90735c5252b57efb3c268ee222c755569dac18065f05147670 + md5: 633b9fe454ffea2aaf29e191d946a83b + depends: + - libgcc >=13 + - libstdcxx >=13 + constrains: + - abseil-cpp =20240722.0 + - libabseil-static =20240722.0=cxx17* + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 1334844 + timestamp: 1736008472455 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_h07bc746_4.conda + sha256: 05fa5e5e908962b9c5aba95f962e2ca81d9599c4715aebe5e4ddb72b309d1770 + md5: c2d95bd7aa8d564a9bd7eca5e571a5b3 + depends: + - __osx >=11.0 + - libcxx >=18 + constrains: + - libabseil-static =20240722.0=cxx17* + - abseil-cpp =20240722.0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 1178260 + timestamp: 1736008642885 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-19.0.1-hfa2a6e7_0_cpu.conda + sha256: 7b1f61045b37266989023a007d6331875062bb658068a6e6ab49720495ca3543 + md5: 11b712ed1316c98592f6bae7ccfaa86c + depends: + - __glibc >=2.17,<3.0.a0 + - aws-crt-cpp >=0.29.9,<0.29.10.0a0 + - aws-sdk-cpp >=1.11.489,<1.11.490.0a0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - azure-identity-cpp >=1.10.0,<1.10.1.0a0 + - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 + - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 + - bzip2 >=1.0.8,<2.0a0 + - glog >=0.7.1,<0.8.0a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libbrotlidec >=1.1.0,<1.2.0a0 + - libbrotlienc >=1.1.0,<1.2.0a0 + - libgcc >=13 + - libgoogle-cloud >=2.35.0,<2.36.0a0 + - libgoogle-cloud-storage >=2.35.0,<2.36.0a0 + - libopentelemetry-cpp >=1.18.0,<1.19.0a0 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libre2-11 >=2024.7.2 + - libstdcxx >=13 + - libutf8proc >=2.10.0,<2.11.0a0 + - libzlib >=1.3.1,<2.0a0 + - lz4-c >=1.10.0,<1.11.0a0 + - orc >=2.0.3,<2.0.4.0a0 + - re2 + - snappy >=1.2.1,<1.3.0a0 + - zstd >=1.5.6,<1.6.0a0 + constrains: + - arrow-cpp <0.0a0 + - parquet-cpp <0.0a0 + - apache-arrow-proc =*=cpu + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 8967810 + timestamp: 1739768880886 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-19.0.1-h36213f4_0_cpu.conda + sha256: 3f141e56555676b4a9fd885a0a7452daa2530eb65cfbba1271f7a07457a82003 + md5: cfeb98942a3ef36c0bb2b09b084349da + depends: + - aws-crt-cpp >=0.29.9,<0.29.10.0a0 + - aws-sdk-cpp >=1.11.489,<1.11.490.0a0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - azure-identity-cpp >=1.10.0,<1.10.1.0a0 + - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 + - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 + - bzip2 >=1.0.8,<2.0a0 + - glog >=0.7.1,<0.8.0a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libbrotlidec >=1.1.0,<1.2.0a0 + - libbrotlienc >=1.1.0,<1.2.0a0 + - libgcc >=13 + - libgoogle-cloud >=2.35.0,<2.36.0a0 + - libgoogle-cloud-storage >=2.35.0,<2.36.0a0 + - libopentelemetry-cpp >=1.18.0,<1.19.0a0 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libre2-11 >=2024.7.2 + - libstdcxx >=13 + - libutf8proc >=2.10.0,<2.11.0a0 + - libzlib >=1.3.1,<2.0a0 + - lz4-c >=1.10.0,<1.11.0a0 + - orc >=2.0.3,<2.0.4.0a0 + - re2 + - snappy >=1.2.1,<1.3.0a0 + - zstd >=1.5.6,<1.6.0a0 + constrains: + - apache-arrow-proc =*=cpu + - parquet-cpp <0.0a0 + - arrow-cpp <0.0a0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 8215209 + timestamp: 1739770301694 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-19.0.1-h0945df6_0_cpu.conda + sha256: e34199bea635b1bf9f3819205b291f714ddd47db1bf6e6d10a4eb61da7330214 + md5: 21bcb04df4b1a99721199c5aa6273f53 + depends: + - __osx >=11.0 + - aws-crt-cpp >=0.29.9,<0.29.10.0a0 + - aws-sdk-cpp >=1.11.489,<1.11.490.0a0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - azure-identity-cpp >=1.10.0,<1.10.1.0a0 + - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 + - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 + - bzip2 >=1.0.8,<2.0a0 + - glog >=0.7.1,<0.8.0a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libbrotlidec >=1.1.0,<1.2.0a0 + - libbrotlienc >=1.1.0,<1.2.0a0 + - libcxx >=18 + - libgoogle-cloud >=2.35.0,<2.36.0a0 + - libgoogle-cloud-storage >=2.35.0,<2.36.0a0 + - libopentelemetry-cpp >=1.18.0,<1.19.0a0 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libre2-11 >=2024.7.2 + - libutf8proc >=2.10.0,<2.11.0a0 + - libzlib >=1.3.1,<2.0a0 + - lz4-c >=1.10.0,<1.11.0a0 + - orc >=2.0.3,<2.0.4.0a0 + - re2 + - snappy >=1.2.1,<1.3.0a0 + - zstd >=1.5.6,<1.6.0a0 + constrains: + - apache-arrow-proc =*=cpu + - arrow-cpp <0.0a0 + - parquet-cpp <0.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 5571369 + timestamp: 1739767084108 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-19.0.1-hcb10f89_0_cpu.conda + sha256: 9a3c38a8f1516fe5b7801d0407ff704efd53955ebd63f7fbc439ec3b563d19cc + md5: 0d63e2dea06c44c9d2c8be3e7e38eea9 + depends: + - __glibc >=2.17,<3.0.a0 + - libarrow 19.0.1 hfa2a6e7_0_cpu + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 638054 + timestamp: 1739768924910 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-19.0.1-h3b568fd_0_cpu.conda + sha256: 3260e26ca9e1146befeb9587ba80610f9d9591365c82f7cd8756f14a9a8e58c2 + md5: 7b270af126ffdec0153d8599370f0430 + depends: + - libarrow 19.0.1 h36213f4_0_cpu + - libgcc >=13 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 602400 + timestamp: 1739770383854 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-19.0.1-hf07054f_0_cpu.conda + sha256: b15f5fab53d941917143bb1cf22c5a0eacffb8ff2a010ee2e909afab3821d5f9 + md5: 9213d80ffba1921b86bfdf5fdd2c10c4 + depends: + - __osx >=11.0 + - libarrow 19.0.1 h0945df6_0_cpu + - libcxx >=18 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 500147 + timestamp: 1739767179329 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-19.0.1-hcb10f89_0_cpu.conda + sha256: f756208d787db50b6be68210cb9eec3644b8291a8a353bb2071ea4451bfc1412 + md5: ec52b3b990be399f4267a9acabb73070 + depends: + - __glibc >=2.17,<3.0.a0 + - libarrow 19.0.1 hfa2a6e7_0_cpu + - libarrow-acero 19.0.1 hcb10f89_0_cpu + - libgcc >=13 + - libparquet 19.0.1 h081d1f1_0_cpu + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 604500 + timestamp: 1739769034226 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-19.0.1-h3b568fd_0_cpu.conda + sha256: 76327753ed311ae1d1ef3f8f7067888e01d3c69e5198a9108052d74e2f91d03a + md5: 8a025a60dfcfa3d6cf100395f64de8ba + depends: + - libarrow 19.0.1 h36213f4_0_cpu + - libarrow-acero 19.0.1 h3b568fd_0_cpu + - libgcc >=13 + - libparquet 19.0.1 hfc78867_0_cpu + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 581121 + timestamp: 1739770488033 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-19.0.1-hf07054f_0_cpu.conda + sha256: 21fcb9a09e5872b4f1d483d8d950a1804ccb6804881881ca6fe6c5968a5e4dbc + md5: 0695382a64b393765b4bc9e1ee99250c + depends: + - __osx >=11.0 + - libarrow 19.0.1 h0945df6_0_cpu + - libarrow-acero 19.0.1 hf07054f_0_cpu + - libcxx >=18 + - libparquet 19.0.1 h636d7b7_0_cpu + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 501234 + timestamp: 1739768239766 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-19.0.1-h08228c5_0_cpu.conda + sha256: e0b3ed06ce74c6a083dab59fb3059fdbc40fc71ff94ce470ca0a7c7ffe8d0317 + md5: 792e2359bb93513324326cbe3ee4ebdd + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libarrow 19.0.1 hfa2a6e7_0_cpu + - libarrow-acero 19.0.1 hcb10f89_0_cpu + - libarrow-dataset 19.0.1 hcb10f89_0_cpu + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 523313 + timestamp: 1739769085090 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-19.0.1-h1e9d426_0_cpu.conda + sha256: c1085eb113a80691e3d76400c91b15dc8c0462d533f8c4ca4c33d5e9fe9cffef + md5: 1e34ad733a8c404ac0f652a942192636 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libarrow 19.0.1 h36213f4_0_cpu + - libarrow-acero 19.0.1 h3b568fd_0_cpu + - libarrow-dataset 19.0.1 h3b568fd_0_cpu + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 516114 + timestamp: 1739770543593 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-19.0.1-h4239455_0_cpu.conda + sha256: 0b5c0839102b396f8b0ba376189562a727ebbed3c6bdab74aaf56227ee45cb73 + md5: 2893dd55f7804b9106126c2f00712ec2 + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libarrow 19.0.1 h0945df6_0_cpu + - libarrow-acero 19.0.1 hf07054f_0_cpu + - libarrow-dataset 19.0.1 hf07054f_0_cpu + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 450361 + timestamp: 1739768396169 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-16_linux64_mkl.tar.bz2 + build_number: 16 + sha256: 24e656f13b402b6fceb88df386768445ab9beb657d451a8e5a88d4b3380cf7a4 + md5: 85f61af03fd291dae33150ffe89dc09a + depends: + - mkl >=2022.1.0,<2023.0a0 + constrains: + - liblapack 3.9.0 16_linux64_mkl + - liblapacke 3.9.0 16_linux64_mkl + - libcblas 3.9.0 16_linux64_mkl + - blas * mkl + - mkl <2025 + arch: x86_64 + platform: linux + track_features: + - blas_mkl + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 13102 + timestamp: 1660094562739 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-31_h1a9f1db_openblas.conda + build_number: 31 + sha256: 67c9c81dd0444ecc712124034d9f74186ca82fd770b3df46b1a68564461c6a1a + md5: 48bd5bf15ccf3e409840be9caafc0ad5 + depends: + - libopenblas >=0.3.29,<0.3.30.0a0 + - libopenblas >=0.3.29,<1.0a0 + constrains: + - liblapack =3.9.0=31*_openblas + - blas =2.131=openblas + - libcblas =3.9.0=31*_openblas + - mkl <2025 + - liblapacke =3.9.0=31*_openblas + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 16915 + timestamp: 1740087911042 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-19_osxarm64_openblas.conda + build_number: 19 + sha256: 51e78e3c9fa57f3fec12936b760928715ba0ab5253d02815202f9ec4c2c9255d + md5: f50b1fd98593278e18319653cff9c475 + depends: + - libopenblas >=0.3.24,<0.3.25.0a0 + - libopenblas >=0.3.24,<1.0a0 + constrains: + - libcblas 3.9.0 19_osxarm64_openblas + - liblapack 3.9.0 19_osxarm64_openblas + - blas * openblas + - liblapacke 3.9.0 19_osxarm64_openblas + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 14817 + timestamp: 1697484577887 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hb9d3cd8_2.conda + sha256: d9db2de60ea917298e658143354a530e9ca5f9c63471c65cf47ab39fd2f429e3 + md5: 41b599ed2b02abcfdd84302bff174b23 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 68851 + timestamp: 1725267660471 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlicommon-1.1.0-h86ecc28_2.conda + sha256: 64112af913974b309d67fd342e065fd184347043a6387933b3db796778a28019 + md5: 3ee026955c688f551a9999840cff4c67 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 68982 + timestamp: 1725267774142 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.1.0-hd74edd7_2.conda + sha256: 839dacb741bdbb25e58f42088a2001b649f4f12195aeb700b5ddfca3267749e5 + md5: d0bf1dff146b799b319ea0434b93f779 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 68426 + timestamp: 1725267943211 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hb9d3cd8_2.conda + sha256: 2892d512cad096cb03f1b66361deeab58b64e15ba525d6592bb6d609e7045edf + md5: 9566f0bd264fbd463002e759b8a82401 + depends: + - __glibc >=2.17,<3.0.a0 + - libbrotlicommon 1.1.0 hb9d3cd8_2 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 32696 + timestamp: 1725267669305 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlidec-1.1.0-h86ecc28_2.conda + sha256: 94c808d9ca3eb6ef30976a9843e27f027cf3a1e84e8c6835cbb696b7bdb35c4c + md5: e64d0f3b59c7c4047446b97a8624a72d + depends: + - libbrotlicommon 1.1.0 h86ecc28_2 + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 31708 + timestamp: 1725267783442 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.1.0-hd74edd7_2.conda + sha256: 6c6862eb274f21a7c0b60e5345467a12e6dda8b9af4438c66d496a2c1a538264 + md5: 55e66e68ce55523a6811633dd1ac74e2 + depends: + - __osx >=11.0 + - libbrotlicommon 1.1.0 hd74edd7_2 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 28378 + timestamp: 1725267980316 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.1.0-hb9d3cd8_2.conda + sha256: 779f58174e99de3600e939fa46eddb453ec5d3c60bb46cdaa8b4c127224dbf29 + md5: 06f70867945ea6a84d35836af780f1de + depends: + - __glibc >=2.17,<3.0.a0 + - libbrotlicommon 1.1.0 hb9d3cd8_2 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 281750 + timestamp: 1725267679782 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlienc-1.1.0-h86ecc28_2.conda + sha256: 41385e17bc73834b235c5aff12d6d82eccb534acb3c30986996f9dad92a0d54c + md5: 0e9bd365480c72b25c71a448257b537d + depends: + - libbrotlicommon 1.1.0 h86ecc28_2 + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 290230 + timestamp: 1725267792697 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlienc-1.1.0-hd74edd7_2.conda + sha256: eeb1eb0d58b9d02bc1b98dc0a058f104ab168eb2f7d1c7bfa0570a12cfcdb7b7 + md5: 4f3a434504c67b2c42565c0b85c1885c + depends: + - __osx >=11.0 + - libbrotlicommon 1.1.0 hd74edd7_2 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 279644 + timestamp: 1725268003553 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-16_linux64_mkl.tar.bz2 + build_number: 16 + sha256: 892ba10508f22310ccfe748df1fd3b6c7f20e7b6f6b79e69ed337863551c1bd8 + md5: 361bf757b95488de76c4f123805742d3 + depends: + - libblas 3.9.0 16_linux64_mkl + constrains: + - liblapack 3.9.0 16_linux64_mkl + - liblapacke 3.9.0 16_linux64_mkl + - blas * mkl + - mkl <2025 + arch: x86_64 + platform: linux + track_features: + - blas_mkl + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 12791 + timestamp: 1660094570921 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-31_hab92f65_openblas.conda + build_number: 31 + sha256: f0457a1d2982f0a28bfbadaa02621677c324e88f7c8198c24fb3e3214c468dba + md5: 6b81dbae56a519f1ec2f25e0ee2f4334 + depends: + - libblas 3.9.0 31_h1a9f1db_openblas + constrains: + - liblapack =3.9.0=31*_openblas + - blas =2.131=openblas + - liblapacke =3.9.0=31*_openblas + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 16824 + timestamp: 1740087917500 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-19_osxarm64_openblas.conda + build_number: 19 + sha256: 19b1c5e3ddd383ec14540336f4704938218d3c1db4707ae10d5357afb22cccc1 + md5: 5460a8d1beffd7f63994d891e6a20da4 + depends: + - libblas 3.9.0 19_osxarm64_openblas + constrains: + - liblapack 3.9.0 19_osxarm64_openblas + - blas * openblas + - liblapacke 3.9.0 19_osxarm64_openblas + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 14738 + timestamp: 1697484590682 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcrc32c-1.1.2-h9c3ff4c_0.tar.bz2 + sha256: fd1d153962764433fe6233f34a72cdeed5dcf8a883a85769e8295ce940b5b0c5 + md5: c965a5aa0d5c1c37ffc62dff36e28400 + depends: + - libgcc-ng >=9.4.0 + - libstdcxx-ng >=9.4.0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 20440 + timestamp: 1633683576494 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcrc32c-1.1.2-h01db608_0.tar.bz2 + sha256: b8b8c57a87da86b3ea24280fd6aa8efaf92f4e684b606bf2db5d3cb06ffbe2ea + md5: 268ee639c17ada0002fb04dd21816cc2 + depends: + - libgcc-ng >=9.4.0 + - libstdcxx-ng >=9.4.0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 18669 + timestamp: 1633683724891 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcrc32c-1.1.2-hbdafb3b_0.tar.bz2 + sha256: 58477b67cc719060b5b069ba57161e20ba69b8695d154a719cb4b60caf577929 + md5: 32bd82a6a625ea6ce090a81c3d34edeb + depends: + - libcxx >=11.1.0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 18765 + timestamp: 1633683992603 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcublas-12.4.5.8-he02047a_2.conda + sha256: 168e664423e875f7107697dfa7935399675872ea8abffa92621db98007258d66 + md5: d446adae085aa1ff37c44b69988a6f06 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-nvrtc + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 240665617 + timestamp: 1715711552741 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcufft-11.2.1.3-he02047a_2.conda + sha256: 242e1ed210a85fc0dc2a4e86bf0b75120f1768ab66497502c5e6d69e801bf9dc + md5: d2641a67c207946ef96f1328c4a8e8ed + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 174980358 + timestamp: 1715711515585 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcufile-1.9.1.3-he02047a_2.conda + sha256: 7fa7a608d52064b724241e4026f0e0cc244c6f725623e2c26c810be99822fa28 + md5: a051267bcb1912467c81d802a7d3465e + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 924329 + timestamp: 1715720836466 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcurand-10.3.5.147-he02047a_2.conda + sha256: 7db821fc8f566dbb8d4e40dae62edb07d638db8c028d677a0063ece66872d19c + md5: 9c4886d513fd477df88d411cd274c202 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 41590169 + timestamp: 1715711553620 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.12.1-h332b0f4_0.conda + sha256: 2ebc3039af29269e4cdb858fca36265e5e400c1125a4bcd84ae73a596e0e76ca + md5: 45e9dc4e7b25e2841deb392be085500e + depends: + - __glibc >=2.17,<3.0.a0 + - krb5 >=1.21.3,<1.22.0a0 + - libgcc >=13 + - libnghttp2 >=1.64.0,<2.0a0 + - libssh2 >=1.11.1,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.1,<4.0a0 + - zstd >=1.5.6,<1.6.0a0 + arch: x86_64 + platform: linux + license: curl + license_family: MIT + purls: [] + size: 426675 + timestamp: 1739512336799 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcurl-8.12.1-h6702fde_0.conda + sha256: a00458a5163b9552897cdac08b273deb1b3add09e05599dfbacf0606c3b1f41f + md5: 14c340cb70867cf7953d2632f89270b5 + depends: + - krb5 >=1.21.3,<1.22.0a0 + - libgcc >=13 + - libnghttp2 >=1.64.0,<2.0a0 + - libssh2 >=1.11.1,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.1,<4.0a0 + - zstd >=1.5.6,<1.6.0a0 + arch: aarch64 + platform: linux + license: curl + license_family: MIT + purls: [] + size: 444118 + timestamp: 1739512317570 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.12.1-h73640d1_0.conda + sha256: 0bddd1791eb0602c8c6aa465802e9d4526d3ec1251d900b209e767753565d5df + md5: 105f0cceef753644912f42e11c1ae9cf + depends: + - __osx >=11.0 + - krb5 >=1.21.3,<1.22.0a0 + - libnghttp2 >=1.64.0,<2.0a0 + - libssh2 >=1.11.1,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.1,<4.0a0 + - zstd >=1.5.6,<1.6.0a0 + arch: arm64 + platform: osx + license: curl + license_family: MIT + purls: [] + size: 387893 + timestamp: 1739512564746 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcusolver-11.6.1.9-he02047a_2.conda + sha256: df4f8a94bffb59dc3da28fb5a892c1ef2553f8afd49f141d3e2da8c92f276a56 + md5: 9f6877f8936be962f598db5e9b8efc51 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libcublas >=12.4.5.8,<12.5.0a0 + - libcusparse >=12.3.1.170,<12.4.0a0 + - libgcc-ng >=12 + - libnvjitlink >=12.4.127,<12.5.0a0 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 81594879 + timestamp: 1715711788074 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcusparse-12.3.1.170-he02047a_2.conda + sha256: f2254e41c93a8c3529690c19350556708182ef699ca658c6554eeb7eb4b8c3de + md5: 1c4c7ff54dc5b947f2ab8f5ff8a28dae + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libnvjitlink >=12.4.127,<12.5.0a0 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 117818451 + timestamp: 1715711610677 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda + sha256: 776092346da87a2a23502e14d91eb0c32699c4a1522b7331537bd1c3751dcff5 + md5: 5b3e1610ff8bd5443476b91d618f5b77 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + purls: [] + size: 523505 + timestamp: 1736877862502 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda + sha256: d789471216e7aba3c184cd054ed61ce3f6dac6f87a50ec69291b9297f8c18724 + md5: c277e0a4d549b03ac1e9d6cbbe3d017b + depends: + - ncurses + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - ncurses >=6.5,<7.0a0 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 134676 + timestamp: 1738479519902 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20250104-pl5321h976ea20_0.conda + sha256: c0b27546aa3a23d47919226b3a1635fccdb4f24b94e72e206a751b33f46fd8d6 + md5: fb640d776fc92b682a14e001980825b1 + depends: + - ncurses + - libgcc >=13 + - ncurses >=6.5,<7.0a0 + arch: aarch64 + platform: linux + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 148125 + timestamp: 1738479808948 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda + sha256: 66aa216a403de0bb0c1340a88d1a06adaff66bae2cfd196731aa24db9859d631 + md5: 44083d2d2c2025afca315c7a172eab2b + depends: + - ncurses + - __osx >=11.0 + - ncurses >=6.5,<7.0a0 + arch: arm64 + platform: osx + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 107691 + timestamp: 1738479560845 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda + sha256: 1cd6048169fa0395af74ed5d8f1716e22c19a81a8a36f934c110ca3ad4dd27b4 + md5: 172bf1cd1ff8629f2b1179945ed45055 + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 112766 + timestamp: 1702146165126 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libev-4.33-h31becfc_2.conda + sha256: 973af77e297f1955dd1f69c2cbdc5ab9dfc88388a5576cd152cda178af0fd006 + md5: a9a13cb143bbaa477b1ebaefbe47a302 + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 115123 + timestamp: 1702146237623 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libev-4.33-h93a5062_2.conda + sha256: 95cecb3902fbe0399c3a7e67a5bed1db813e5ab0e22f4023a5e0f722f2cc214f + md5: 36d33e440c31857372a72137f78bacf5 + arch: arm64 + platform: osx + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 107458 + timestamp: 1702146414478 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libevent-2.1.12-hf998b51_1.conda + sha256: 2e14399d81fb348e9d231a82ca4d816bf855206923759b69ad006ba482764131 + md5: a1cfcc585f0c42bf8d5546bb1dfb668d + depends: + - libgcc-ng >=12 + - openssl >=3.1.1,<4.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 427426 + timestamp: 1685725977222 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libevent-2.1.12-h4ba1bb4_1.conda + sha256: 01333cc7d6e6985dd5700b43660d90e9e58049182017fd24862088ecbe1458e4 + md5: 96ae6083cd1ac9f6bc81631ac835b317 + depends: + - libgcc-ng >=12 + - openssl >=3.1.1,<4.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 438992 + timestamp: 1685726046519 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libevent-2.1.12-h2757513_1.conda + sha256: 8c136d7586259bb5c0d2b913aaadc5b9737787ae4f40e3ad1beaf96c80b919b7 + md5: 1a109764bff3bdc7bdd84088347d71dc + depends: + - openssl >=3.1.1,<4.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 368167 + timestamp: 1685726248899 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda + sha256: 56541b98447b58e52d824bd59d6382d609e11de1f8adf20b23143e353d2b8d26 + md5: db833e03127376d461e1e13e76f09b6c + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + constrains: + - expat 2.6.4.* + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 73304 + timestamp: 1730967041968 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.6.4-h5ad3122_0.conda + sha256: f42e758009ba9db90d1fe7992bc3e60d0c52f71fb20923375d2c44ae69a5a2b3 + md5: f1b3fab36861b3ce945a13f0dfdfc688 + depends: + - libgcc >=13 + constrains: + - expat 2.6.4.* + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 72345 + timestamp: 1730967203789 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.4-h286801f_0.conda + sha256: e42ab5ace927ee7c84e3f0f7d813671e1cf3529f5f06ee5899606630498c2745 + md5: 38d2656dd914feb0cab8c629370768bf + depends: + - __osx >=11.0 + constrains: + - expat 2.6.4.* + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 64693 + timestamp: 1730967175868 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_0.conda + sha256: 67a6c95e33ebc763c1adc3455b9a9ecde901850eb2fceb8e646cc05ef3a663da + md5: e3eb7806380bc8bcecba6d749ad5f026 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 53415 + timestamp: 1739260413716 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.4.6-he21f813_0.conda + sha256: 41568066beefe7b319ff27d85952242e5b77fb753d705b8716041959e17c35c2 + md5: 966084fccf3ad62a3160666cda869f28 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 51513 + timestamp: 1739260449772 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 + sha256: 41b3d13efb775e340e4dba549ab5c029611ea6918703096b2eaa9c015c0750ca + md5: 086914b672be056eb70fd4285b6783b6 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 39020 + timestamp: 1636488587153 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h767d61c_2.conda + sha256: 3a572d031cb86deb541d15c1875aaa097baefc0c580b54dc61f5edab99215792 + md5: ef504d1acbd74b7cc6849ef8af47dd03 + depends: + - __glibc >=2.17,<3.0.a0 + - _openmp_mutex >=4.5 + constrains: + - libgomp 14.2.0 h767d61c_2 + - libgcc-ng ==14.2.0=*_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 847885 + timestamp: 1740240653082 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-14.2.0-he277a41_2.conda + sha256: a57f7f9ba2a12f56eafdcd25b6d75f7be10b8fc1a802a58b76a77ca8c66f4503 + md5: 6b4268a60b10f29257b51b9b67ff8d76 + depends: + - _openmp_mutex >=4.5 + constrains: + - libgcc-ng ==14.2.0=*_2 + - libgomp 14.2.0 he277a41_2 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 535507 + timestamp: 1740241069780 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_2.conda + sha256: fb7558c328b38b2f9d2e412c48da7890e7721ba018d733ebdfea57280df01904 + md5: a2222a6ada71fb478682efe483ce0f92 + depends: + - libgcc 14.2.0 h767d61c_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 53758 + timestamp: 1740240660904 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-14.2.0-he9431aa_2.conda + sha256: 9647f75cddc18b07eebe6e1f21500eed50a6af2c43c84e831b4c7a597e10d226 + md5: 692c2bb75f32cfafb6799cf6d1c5d0e0 + depends: + - libgcc 14.2.0 he277a41_2 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 53622 + timestamp: 1740241074834 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_2.conda + sha256: e05263e8960da03c341650f2a3ffa4ccae4e111cb198e8933a2908125459e5a6 + md5: fb54c4ea68b460c278d26eea89cfbcc3 + depends: + - libgfortran5 14.2.0 hf1ad2bd_2 + constrains: + - libgfortran-ng ==14.2.0=*_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 53733 + timestamp: 1740240690977 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_2.conda + sha256: 996d3c0505301901a7ab23b5e7daad21635d1c065240bb0f4faf7e4f75d7f49d + md5: d8b9d9dc0c8cd97d375b48e55947ba70 + depends: + - libgfortran5 14.2.0 hb6113d0_2 + constrains: + - libgfortran-ng ==14.2.0=*_2 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 53611 + timestamp: 1740241100147 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda + sha256: 44e541b4821c96b28b27fef5630883a60ce4fee91fd9c79f25a199f8f73f337b + md5: 4a55d9e169114b2b90d3ec4604cd7bbf + depends: + - libgfortran5 13.2.0 hf226fd6_3 + arch: arm64 + platform: osx + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 110233 + timestamp: 1707330749033 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-ng-14.2.0-h69a702a_2.conda + sha256: 688a5968852e677d2a64974c8869ffb120eac21997ced7d15c599f152ef6857e + md5: 4056c857af1a99ee50589a941059ec55 + depends: + - libgfortran 14.2.0 h69a702a_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 53781 + timestamp: 1740240884760 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hf1ad2bd_2.conda + sha256: c17b7cf3073a1f4e1f34d50872934fa326346e104d3c445abc1e62481ad6085c + md5: 556a4fdfac7287d349b8f09aba899693 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14.2.0 + constrains: + - libgfortran 14.2.0 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 1461978 + timestamp: 1740240671964 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_2.conda + sha256: 7b9e1d3666a00e5a52e5d43c003bd1c73ab472804be513c070aaedca9c4c2a9a + md5: cd754566661513808ef2408c4ab99a2f + depends: + - libgcc >=14.2.0 + constrains: + - libgfortran 14.2.0 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 1100765 + timestamp: 1740241083241 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda + sha256: bafc679eedb468a86aa4636061c55966186399ee0a04b605920d208d97ac579a + md5: 66ac81d54e95c534ae488726c1f698ea + depends: + - llvm-openmp >=8.0.0 + constrains: + - libgfortran 5.0.0 13_2_0_*_3 + arch: arm64 + platform: osx + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 997381 + timestamp: 1707330687590 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_2.conda + sha256: 4e303711fb7413bf98995beac58e731073099d7a669a3b81e49330ca8da05174 + md5: b11c09d9463daf4cae492d29806b1889 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 462783 + timestamp: 1740241005079 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.35.0-h2b5623c_0.conda + sha256: d747d14c69da512d8993a995dc2df90e857778b0a8542f12fb751544128af685 + md5: 1040ab07d7af9f23cf2466ffe4e58db1 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcurl >=8.11.1,<9.0a0 + - libgcc >=13 + - libgrpc >=1.67.1,<1.68.0a0 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + - openssl >=3.4.0,<4.0a0 + constrains: + - libgoogle-cloud 2.35.0 *_0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 1258035 + timestamp: 1738662406183 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-2.35.0-hccf9d24_0.conda + sha256: b5d323807ea699e76d9ebb829e48100446663978a1aac9adf538249864f73f97 + md5: f22720e07abb547ebce78a3aa7b97d69 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcurl >=8.11.1,<9.0a0 + - libgcc >=13 + - libgrpc >=1.67.1,<1.68.0a0 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + - openssl >=3.4.0,<4.0a0 + constrains: + - libgoogle-cloud 2.35.0 *_0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 1258015 + timestamp: 1738662706891 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-2.35.0-hdbe95d5_0.conda + sha256: 9bee9773540956d8a2ca0b317f73d94916200a4bfd8151319bf7fdcbf704d692 + md5: b1ea94282f38b142f8bc842ef7bcc18c + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcurl >=8.11.1,<9.0a0 + - libcxx >=18 + - libgrpc >=1.67.1,<1.68.0a0 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - openssl >=3.4.0,<4.0a0 + constrains: + - libgoogle-cloud 2.35.0 *_0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 877733 + timestamp: 1738662822079 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.35.0-h0121fbd_0.conda + sha256: cb1ef70e55d2c1defbfd8413dbe85b5550782470dda4f8d393f28d41b6d9b007 + md5: 34e2243e0428aac6b3e903ef99b6d57d + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil + - libcrc32c >=1.1.2,<1.2.0a0 + - libcurl + - libgcc >=13 + - libgoogle-cloud 2.35.0 h2b5623c_0 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 785777 + timestamp: 1738662565066 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-storage-2.35.0-hb9b2b65_0.conda + sha256: cf316f07d5dcc3b6669bf6d93203d435133c99d075a9f92dfa28eff1bd4def74 + md5: ae6ab5b7af1409d0eafd2b77c5d5528a + depends: + - libabseil + - libcrc32c >=1.1.2,<1.2.0a0 + - libcurl + - libgcc >=13 + - libgoogle-cloud 2.35.0 hccf9d24_0 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 739471 + timestamp: 1738662862568 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-storage-2.35.0-h7081f7f_0.conda + sha256: 52dc2d18264543b564b59fb80338fbd9cb2296f011d75f41adcd85041795201c + md5: 958beca4e16f59360e30c48ff0351e04 + depends: + - __osx >=11.0 + - libabseil + - libcrc32c >=1.1.2,<1.2.0a0 + - libcurl + - libcxx >=18 + - libgoogle-cloud 2.35.0 hdbe95d5_0 + - libzlib >=1.3.1,<2.0a0 + - openssl + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 529210 + timestamp: 1738664024959 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.67.1-h25350d4_1.conda + sha256: 014627485b3cf0ea18e04c0bab07be7fb98722a3aeeb58477acc7e1c3d2f911e + md5: 0c6497a760b99a926c7c12b74951a39c + depends: + - __glibc >=2.17,<3.0.a0 + - c-ares >=1.34.4,<2.0a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libre2-11 >=2024.7.2 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + - re2 + constrains: + - grpc-cpp =1.67.1 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 7792251 + timestamp: 1735584856826 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgrpc-1.67.1-hf7ccdd3_1.conda + sha256: 3fa173dc1d7456aac2b26937daae86a08432a31640e3d6569c62edc661fc9bbe + md5: 8fb41a425bebaeb3d0fa568503612e64 + depends: + - c-ares >=1.34.4,<2.0a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libre2-11 >=2024.7.2 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + - re2 + constrains: + - grpc-cpp =1.67.1 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 7430006 + timestamp: 1735585769731 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgrpc-1.67.1-h0a426d6_1.conda + sha256: 630edf63981818ff590367cb95fddbed0f5a390464d0952c90ec81de899e84a6 + md5: 8a3cba079d6ac985e7d73c76a678fbb4 + depends: + - __osx >=11.0 + - c-ares >=1.34.4,<2.0a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libre2-11 >=2024.7.2 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + - re2 + constrains: + - grpc-cpp =1.67.1 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 5311706 + timestamp: 1735585137716 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libhwloc-2.11.2-default_h0d58e46_1001.conda + sha256: d14c016482e1409ae1c50109a9ff933460a50940d2682e745ab1c172b5282a69 + md5: 804ca9e91bcaea0824a341d55b1684f2 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + - libxml2 >=2.13.4,<3.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 2423200 + timestamp: 1731374922090 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h4ce23a2_1.conda + sha256: 18a4afe14f731bfb9cf388659994263904d20111e42f841e9eea1bb6f91f4ab4 + md5: e796ff8ddc598affdf7c173d6145f087 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: LGPL-2.1-only + purls: [] + size: 713084 + timestamp: 1740128065462 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libiconv-1.18-hc99b53d_1.conda + sha256: 3db14977036fe1f511a6dbecacbeff3fdb58482c5c0cf87a2ea3232f5a540836 + md5: 81541d85a45fbf4d0a29346176f1f21c + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: LGPL-2.1-only + purls: [] + size: 718600 + timestamp: 1740130562607 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.18-hfe07756_1.conda + sha256: d30780d24bf3a30b4f116fca74dedb4199b34d500fe6c52cced5f8cc1e926f03 + md5: 450e6bdc0c7d986acf7b8443dce87111 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: LGPL-2.1-only + purls: [] + size: 681804 + timestamp: 1740128227484 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-16_linux64_mkl.tar.bz2 + build_number: 16 + sha256: d6201f860b2d76ed59027e69c2bbad6d1cb211a215ec9705cc487cde488fa1fa + md5: a2f166748917d6d6e4707841ca1f519e + depends: + - libblas 3.9.0 16_linux64_mkl + constrains: + - blas * mkl + - liblapacke 3.9.0 16_linux64_mkl + - libcblas 3.9.0 16_linux64_mkl + - mkl <2025 + arch: x86_64 + platform: linux + track_features: + - blas_mkl + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 12791 + timestamp: 1660094578903 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-31_h411afd4_openblas.conda + build_number: 31 + sha256: 27613828ff6fb258b2e58802617df549f00089660ea8ab6c55c68f042c570162 + md5: 41dbff5eb805a75c120a7b7a1c744dc2 + depends: + - libblas 3.9.0 31_h1a9f1db_openblas + constrains: + - blas =2.131=openblas + - libcblas =3.9.0=31*_openblas + - liblapacke =3.9.0=31*_openblas + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 16845 + timestamp: 1740087923843 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-19_osxarm64_openblas.conda + build_number: 19 + sha256: f19cff537403c9feed98c7e18259022102b087f2b72a757e8a417476b9cf30c1 + md5: 3638eacb084c374f41f9efa40d20a47b + depends: + - libblas 3.9.0 19_osxarm64_openblas + constrains: + - libcblas 3.9.0 19_osxarm64_openblas + - blas * openblas + - liblapacke 3.9.0 19_osxarm64_openblas + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 14721 + timestamp: 1697484603691 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblapacke-3.9.0-16_linux64_mkl.tar.bz2 + build_number: 16 + sha256: 935036dc46c483cba8288c6de58d461ab3f42915715ffe9485105ad1dd203a0e + md5: 44ccc4d4dca6a8d57fa17442bc64b5a1 + depends: + - libblas 3.9.0 16_linux64_mkl + - libcblas 3.9.0 16_linux64_mkl + - liblapack 3.9.0 16_linux64_mkl + constrains: + - blas * mkl + - mkl <2025 + arch: x86_64 + platform: linux + track_features: + - blas_mkl + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 12793 + timestamp: 1660094586875 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda + sha256: cad52e10319ca4585bc37f0bc7cce99ec7c15dc9168e42ccb96b741b0a27db3f + md5: 42d5b6a0f30d3c10cd88cb8584fda1cb + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: 0BSD + purls: [] + size: 111357 + timestamp: 1738525339684 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.4-h86ecc28_0.conda + sha256: 96413664f0fade54a4931940d18749cfc8e6308349dbb0cb83adb2394ca1f730 + md5: b88244e0a115cc34f7fbca9b11248e76 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: 0BSD + purls: [] + size: 124197 + timestamp: 1738528201520 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.4-h39f12f2_0.conda + sha256: 560c59d3834cc652a84fb45531bd335ad06e271b34ebc216e380a89798fe8e2c + md5: e3fd1f8320a100f2b210e690a57cd615 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: 0BSD + purls: [] + size: 98945 + timestamp: 1738525462560 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda + sha256: b0f2b3695b13a989f75d8fd7f4778e1c7aabe3b36db83f0fe80b2cd812c0e975 + md5: 19e57602824042dfd0446292ef90488b + depends: + - __glibc >=2.17,<3.0.a0 + - c-ares >=1.32.3,<2.0a0 + - libev >=4.33,<4.34.0a0 + - libev >=4.33,<5.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.3.2,<4.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 647599 + timestamp: 1729571887612 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnghttp2-1.64.0-hc8609a4_0.conda + sha256: c093c6d370aadbf0409c20b6c54c488ee2f6fea976181919fcc63e87ee232673 + md5: f52c614fa214a8bedece9421c771670d + depends: + - c-ares >=1.32.3,<2.0a0 + - libev >=4.33,<4.34.0a0 + - libev >=4.33,<5.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.3.2,<4.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 714610 + timestamp: 1729571912479 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.64.0-h6d7220d_0.conda + sha256: 00cc685824f39f51be5233b54e19f45abd60de5d8847f1a56906f8936648b72f + md5: 3408c02539cee5f1141f9f11450b6a51 + depends: + - __osx >=11.0 + - c-ares >=1.34.2,<2.0a0 + - libcxx >=17 + - libev >=4.33,<4.34.0a0 + - libev >=4.33,<5.0a0 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.3.2,<4.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 566719 + timestamp: 1729572385640 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnpp-12.2.5.30-he02047a_2.conda + sha256: d8c97716825955c48681f4a3cde2f0cbbacc77c91b4cd944d4906f63385487df + md5: a96a1edd18bee676cf2dcca251d3d6a4 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 99461229 + timestamp: 1715711634268 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda + sha256: 26d77a3bb4dceeedc2a41bd688564fe71bf2d149fdcf117049970bc02ff1add6 + md5: 30fd6e37fe21f86f4bd26d6ee73eeec7 + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: LGPL-2.1-only + license_family: GPL + purls: [] + size: 33408 + timestamp: 1697359010159 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda + sha256: fd18c2b75d7411096428d36a70b36b1a17e31f7b8956b6905d145792d49e97f8 + md5: c14f32510f694e3185704d89967ec422 + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: LGPL-2.1-only + license_family: GPL + purls: [] + size: 34501 + timestamp: 1697358973269 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnvfatbin-12.4.127-he02047a_2.conda + sha256: d40f37532f86cbbe63439489be0e88561819190392cc519c69365b3fc47a2c5b + md5: d746b76642b4ac6e40f1219405672beb + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 792025 + timestamp: 1715711761341 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnvjitlink-12.4.127-he02047a_2.conda + sha256: 31382c8ef388a51bd2c283a239e037b8b30f9c7ecf6ec9744824445b59db39b6 + md5: 303845d6c48bf4185dc4138634650468 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 16571958 + timestamp: 1715711715842 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnvjpeg-12.3.1.117-he02047a_2.conda + sha256: 49a182f8da4ba30fbfee9692976d9da349371175c9c9576768d4754a51fef326 + md5: 8f3ed0e41a4b505de40b4f96f4bfb0fa + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 2491500 + timestamp: 1715711780068 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.29-pthreads_h9d3fd7e_0.conda + sha256: 3a2ccf4c9098cd18a636e9b7fff947fdeb4962bcfb75c9d6fd80b8c50caf6a3c + md5: a99e2bfcb1ad6362544c71281eb617e9 + depends: + - libgcc >=14 + - libgfortran + - libgfortran5 >=14.2.0 + constrains: + - openblas >=0.3.29,<0.3.30.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 4801657 + timestamp: 1739825308974 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.24-openmp_hd76b1f2_0.conda + sha256: 21edfdf620ac5c93571aab452199b6b4622c445441dad88ab4d2eb326a7b91b3 + md5: aacb05989f358affe1bafd4ea7294db4 + depends: + - libgfortran 5.* + - libgfortran5 >=12.3.0 + - llvm-openmp >=15.0.7 + constrains: + - openblas >=0.3.24,<0.3.25.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 2849225 + timestamp: 1693784744674 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-1.18.0-hfcad708_1.conda + sha256: 4ea235e08676f16b0d3c3380befe1478c0fa0141512ee709b011005c55c9619f + md5: 1f5a5d66e77a39dc5bd639ec953705cf + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcurl >=8.11.1,<9.0a0 + - libgrpc >=1.67.1,<1.68.0a0 + - libopentelemetry-cpp-headers 1.18.0 ha770c72_1 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libzlib >=1.3.1,<2.0a0 + - nlohmann_json + - prometheus-cpp >=1.3.0,<1.4.0a0 + constrains: + - cpp-opentelemetry-sdk =1.18.0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 801927 + timestamp: 1735643375271 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopentelemetry-cpp-1.18.0-h60b47f9_1.conda + sha256: 160c493cd0f897955b0b6035b51c6d7255ffbaed3c8a12d43e8e8a719d405aba + md5: afe3c8c53f4b6d27d553c230d4b34038 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcurl >=8.11.1,<9.0a0 + - libgrpc >=1.67.1,<1.68.0a0 + - libopentelemetry-cpp-headers 1.18.0 h8af1aa0_1 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libzlib >=1.3.1,<2.0a0 + - nlohmann_json + - prometheus-cpp >=1.3.0,<1.4.0a0 + constrains: + - cpp-opentelemetry-sdk =1.18.0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 800896 + timestamp: 1735643533825 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopentelemetry-cpp-1.18.0-h0c05b2d_1.conda + sha256: c6bcbd53d62a9e0d8c667e560db0ca2ecb7679277cbb3c23457aabe74fcb8cba + md5: 19c46cc18825f3924251c39ec1b0d983 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcurl >=8.11.1,<9.0a0 + - libgrpc >=1.67.1,<1.68.0a0 + - libopentelemetry-cpp-headers 1.18.0 hce30654_1 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libzlib >=1.3.1,<2.0a0 + - nlohmann_json + - prometheus-cpp >=1.3.0,<1.4.0a0 + constrains: + - cpp-opentelemetry-sdk =1.18.0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 529588 + timestamp: 1735643889612 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-headers-1.18.0-ha770c72_1.conda + sha256: aa1f7dea79ea8513ff77339ba7c6e9cf10dfa537143e7718b1cfb3af52b649f2 + md5: 4fb055f57404920a43b147031471e03b + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 320359 + timestamp: 1735643346175 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopentelemetry-cpp-headers-1.18.0-h8af1aa0_1.conda + sha256: 981c0b29a0789597fa8ed147b02df2d2ad0c7f863d87df74770c40cee1800228 + md5: 282193b19a19e3b5d75d18ef82713ef0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 319401 + timestamp: 1735643509251 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopentelemetry-cpp-headers-1.18.0-hce30654_1.conda + sha256: 82e5f5ba64debbaab3c601b265dfc0cdb4d2880feba9bada5fd2e67b9f91ada5 + md5: e965dad955841507549fdacd8f7f94c0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 320565 + timestamp: 1735643673319 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-19.0.1-h081d1f1_0_cpu.conda + sha256: e9c4a07e79886963bfcd05894a15b5d4c7137c1122273de68845315c35d6505d + md5: 8b58c378d65b213c001f04a174a2a70e + depends: + - __glibc >=2.17,<3.0.a0 + - libarrow 19.0.1 hfa2a6e7_0_cpu + - libgcc >=13 + - libstdcxx >=13 + - libthrift >=0.21.0,<0.21.1.0a0 + - openssl >=3.4.1,<4.0a0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 1244749 + timestamp: 1739769006551 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-19.0.1-hfc78867_0_cpu.conda + sha256: 4822fcb00e97644ce74f313cd2f44fe85085c64b1481ac7e1a22ee7dd2ef772a + md5: d19e95e75e9005e712ec81409868b880 + depends: + - libarrow 19.0.1 h36213f4_0_cpu + - libgcc >=13 + - libstdcxx >=13 + - libthrift >=0.21.0,<0.21.1.0a0 + - openssl >=3.4.1,<4.0a0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 1154758 + timestamp: 1739770461892 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-19.0.1-h636d7b7_0_cpu.conda + sha256: 54e4a18493d63b7fbd5cf39fadabe665bcf462121a7bc2f394f510b0bcf22031 + md5: 0cce19e6981849babe6c73797abbfa4e + depends: + - __osx >=11.0 + - libarrow 19.0.1 h0945df6_0_cpu + - libcxx >=18 + - libthrift >=0.21.0,<0.21.1.0a0 + - openssl >=3.4.1,<4.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 895659 + timestamp: 1739768176454 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda + sha256: 51125ebb8b7152e4a4e69fd2398489c4ec8473195c27cde3cbdf1cb6d18c5493 + md5: d8703f1ffe5a06356f06467f1d0b9464 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 2960815 + timestamp: 1735577210663 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.3-h44a3b7b_1.conda + sha256: ecb69f2b1668e784b41ba667493be846662d5ef702bef64fb2e013bb1364cdc4 + md5: 68f807f7cc13951652bbe048253fd405 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 2788074 + timestamp: 1735576315676 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.3-h3bd63a1_1.conda + sha256: f58a16b13ad53346903c833e266f83c3d770a43a432659b98710aed85ca885e7 + md5: bdbfea4cf45ae36652c6bbcc2e7ebe91 + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=18 + - libzlib >=1.3.1,<2.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 2271580 + timestamp: 1735576361997 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_2.conda + sha256: 4420f8362c71251892ba1eeb957c5e445e4e1596c0c651c28d0d8b415fe120c7 + md5: b2fede24428726dd867611664fb372e8 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libstdcxx >=13 + constrains: + - re2 2024.07.02.* + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 209793 + timestamp: 1735541054068 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_2.conda + sha256: 862c20de0120f802e618dcb25913d00c5b82f91f4be60b2d46a774e851adc2f6 + md5: 9a7dbbaab49f76a6f36e5c9d98e323a7 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libstdcxx >=13 + constrains: + - re2 2024.07.02.* + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 204305 + timestamp: 1735540986919 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h07bc746_2.conda + sha256: 112a73ad483353751d4c5d63648c69a4d6fcebf5e1b698a860a3f5124fc3db96 + md5: 6b1e3624d3488016ca4f1ca0c412efaa + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=18 + constrains: + - re2 2024.07.02.* + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 167155 + timestamp: 1735541067807 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsentencepiece-0.2.0-h8e10757_10.conda + sha256: dc399e0f04a09f8c1807c3b36e578eb81f81891c0ddf21de9c1fb9f048ce4031 + md5: 4f43dbcfacd3cc9a183dd3a48b94d3c0 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 823649 + timestamp: 1735627841126 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsentencepiece-0.2.0-h6164ad9_10.conda + sha256: 57074803772f65d4075b7d6dc17ff5aa40ec3a30109fa4225ca16911504c4a8b + md5: a7a192edc9cfba26a27df3283203e6a1 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 800865 + timestamp: 1735627982895 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsentencepiece-0.2.0-he13a0af_10.conda + sha256: 3347a8840d085ce1661928e736229f068d56c84312fbed90886e059023d85611 + md5: 1f67e5e30edd56e0a0bf6df6bb711a9d + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 754657 + timestamp: 1735628030895 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda + sha256: 0105bd108f19ea8e6a78d2d994a6d4a8db16d19a41212070d2d1d48a63c34161 + md5: a587892d3c13b6621a6091be690dbca2 + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: ISC + purls: [] + size: 205978 + timestamp: 1716828628198 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.20-h68df207_0.conda + sha256: 448df5ea3c5cf1af785aad46858d7a5be0522f4234a4dc9bb764f4d11ff3b981 + md5: 2e4a8f23bebdcb85ca8e5a0fbe75666a + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: ISC + purls: [] + size: 177394 + timestamp: 1716828514515 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda + sha256: fade8223e1e1004367d7101dd17261003b60aa576df6d7802191f8972f7470b1 + md5: a7ce36e284c5faaf93c220dfc39e3abd + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: ISC + purls: [] + size: 164972 + timestamp: 1716828607917 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.49.1-hee588c1_1.conda + sha256: 7a09eef804ef7cf4d88215c2297eabb72af8ad0bd5b012060111c289f14bbe7d + md5: 73cea06049cc4174578b432320a003b8 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux + license: Unlicense + purls: [] + size: 915956 + timestamp: 1739953155793 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.49.1-h5eb1b54_1.conda + sha256: 920fb3b7d3b873babf79a3e392cc82d43b8bd02a573ccaff34219efb5cf7b51e + md5: 150d64241fa27d9d35a7f421ca968a6c + depends: + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + arch: aarch64 + platform: linux + license: Unlicense + purls: [] + size: 915118 + timestamp: 1739953101699 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.1-h3f77e49_1.conda + sha256: 266639fb10ca92287961574b0b4d6031fa40dd9d723d64a0fcb08513a24dab03 + md5: c83357a21092bd952933c36c5cb4f4d6 + depends: + - __osx >=11.0 + - libzlib >=1.3.1,<2.0a0 + arch: arm64 + platform: osx + license: Unlicense + purls: [] + size: 898767 + timestamp: 1739953312379 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hf672d98_0.conda + sha256: 0407ac9fda2bb67e11e357066eff144c845801d00b5f664efbc48813af1e7bb9 + md5: be2de152d8073ef1c01b7728475f2fe7 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 304278 + timestamp: 1732349402869 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libssh2-1.11.1-ha41c0db_0.conda + sha256: 40f2af5357457546bd11cd64a3b9043d83865180f65ce602515c35f353be35c7 + md5: aeffe03c0e598f015aab08dbb04f6ee4 + depends: + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 311577 + timestamp: 1732349396421 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.1-h9cc3647_0.conda + sha256: f7047c6ed44bcaeb04432e8c74da87591940d091b0a3940c0d884b7faa8062e9 + md5: ddc7194676c285513706e5fc64f214d7 + depends: + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 279028 + timestamp: 1732349599461 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-h8f9b012_2.conda + sha256: 8f5bd92e4a24e1d35ba015c5252e8f818898478cb3bc50bd8b12ab54707dc4da + md5: a78c856b6dc6bf4ea8daeb9beaaa3fb0 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc 14.2.0 h767d61c_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 3884556 + timestamp: 1740240685253 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_2.conda + sha256: c30a74bc996013907f6d9f344da007c26d98ef9a0831151cd50aece3125c45d5 + md5: eadee2cda99697e29411c1013c187b92 + depends: + - libgcc 14.2.0 he277a41_2 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 3810779 + timestamp: 1740241094774 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_2.conda + sha256: e86f38b007cf97cc2c67cd519f2de12a313c4ee3f5ef11652ad08932a5e34189 + md5: c75da67f045c2627f59e6fcb5f4e3a9b + depends: + - libstdcxx 14.2.0 h8f9b012_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 53830 + timestamp: 1740240722530 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_2.conda + sha256: 0107886ead6f255956d8e520f8dff260f9ab3d0d51512f18c52710c406e4b2df + md5: c934c1fddad582fcc385b608eb06a70c + depends: + - libstdcxx 14.2.0 h3f4de04_2 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 53715 + timestamp: 1740241126343 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libthrift-0.21.0-h0e7cc3e_0.conda + sha256: ebb395232973c18745b86c9a399a4725b2c39293c9a91b8e59251be013db42f0 + md5: dcb95c0a98ba9ff737f7ae482aef7833 + depends: + - __glibc >=2.17,<3.0.a0 + - libevent >=2.1.12,<2.1.13.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.3.2,<4.0a0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 425773 + timestamp: 1727205853307 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libthrift-0.21.0-h154c74f_0.conda + sha256: f04ab1417aca1687edff9c30d8423ace285eb8c053dc16d595c6e47cfeefb274 + md5: c28792bf37f4ecdce8e3cb9e40750650 + depends: + - libevent >=2.1.12,<2.1.13.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.3.2,<4.0a0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 417329 + timestamp: 1727205944238 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libthrift-0.21.0-h64651cc_0.conda + sha256: 7a6c7d5f58cbbc2ccd6493b4b821639fdb0701b9b04c737a949e8cb6adf1c9ad + md5: 7ce2bd2f650f8c31ad7ba4c7bfea61b7 + depends: + - __osx >=11.0 + - libcxx >=17 + - libevent >=2.1.12,<2.1.13.0a0 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.3.2,<4.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 324342 + timestamp: 1727206096912 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.10.0-h4c51ac1_0.conda + sha256: 8e41563ee963bf8ded06da45f4e70bf42f913cb3c2e79364eb3218deffa3cd74 + md5: aeccfff2806ae38430638ffbb4be9610 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 82745 + timestamp: 1737244366901 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.10.0-ha346350_0.conda + sha256: 9c333e07b76ae1ea2c882db764be52dc82f632be66d993a50b35ca9c5475074a + md5: c5166bcfb8348e8fc31ee16ec3981a5e + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 82679 + timestamp: 1737329054400 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.10.0-hda25de7_0.conda + sha256: aca3ef31d3dff5cefd3790742a5ee6548f1cf0201d0e8cee08b01da503484eb6 + md5: 5f741aed1d8d393586a5fdcaaa87f45c + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 83628 + timestamp: 1737244450097 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda + sha256: 787eb542f055a2b3de553614b25f09eefb0a0931b0c87dbcce6efdfd92f04f18 + md5: 40b61aab5c7ba9ff276c41cfffe6b80b + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 33601 + timestamp: 1680112270483 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda + sha256: 616277b0c5f7616c2cdf36f6c316ea3f9aa5bb35f2d4476a349ab58b9b91675f + md5: 000e30b09db0b7c775b21695dff30969 + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 35720 + timestamp: 1680113474501 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda + sha256: 6ae68e0b86423ef188196fff6207ed0c8195dd84273cb5623b85aa08033a410c + md5: 5aa797f8787fe7a17d1b0821485b5adc + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: LGPL-2.1-or-later + purls: [] + size: 100393 + timestamp: 1702724383534 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda + sha256: 6b46c397644091b8a26a3048636d10b989b1bf266d4be5e9474bf763f828f41f + md5: b4df5d7d4b63579d081fd3a4cf99740e + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: LGPL-2.1-or-later + purls: [] + size: 114269 + timestamp: 1702724369203 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.6-h8d12d68_0.conda + sha256: db8af71ea9c0ae95b7cb4a0f59319522ed2243942437a1200ceb391493018d85 + md5: 328382c0e0ca648e5c189d5ec336c604 + depends: + - __glibc >=2.17,<3.0.a0 + - icu >=75.1,<76.0a0 + - libgcc >=13 + - libiconv >=1.18,<2.0a0 + - liblzma >=5.6.4,<6.0a0 + - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 690296 + timestamp: 1739952967309 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.6-h2e0c361_0.conda + sha256: bb075df08b04b1b47e75a250f2ebbb2401c3367057d64b8d44ef1ef3f44480e1 + md5: a159a92f890f862408c951c08f13415f + depends: + - icu >=75.1,<76.0a0 + - libgcc >=13 + - libiconv >=1.18,<2.0a0 + - liblzma >=5.6.4,<6.0a0 + - libzlib >=1.3.1,<2.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 733707 + timestamp: 1739953178456 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.6-hce475f1_0.conda + sha256: 9ce429417545f7616ed528061305b3a1fc3732ff3bb24bd91cba260550879693 + md5: 8654012bd68aa48b94eee6c9faab85b6 + depends: + - __osx >=11.0 + - libiconv >=1.18,<2.0a0 + - liblzma >=5.6.4,<6.0a0 + - libzlib >=1.3.1,<2.0a0 + constrains: + - icu <0.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 582490 + timestamp: 1739953065675 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda + sha256: d4bfe88d7cb447768e31650f06257995601f89076080e76df55e3112d4e47dc4 + md5: edb0dca6bc32e4f4789199455a1dbeb8 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + constrains: + - zlib 1.3.1 *_2 + arch: x86_64 + platform: linux + license: Zlib + license_family: Other + purls: [] + size: 60963 + timestamp: 1727963148474 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda + sha256: 5a2c1eeef69342e88a98d1d95bff1603727ab1ff4ee0e421522acd8813439b84 + md5: 08aad7cbe9f5a6b460d0976076b6ae64 + depends: + - libgcc >=13 + constrains: + - zlib 1.3.1 *_2 + arch: aarch64 + platform: linux + license: Zlib + license_family: Other + purls: [] + size: 66657 + timestamp: 1727963199518 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda + sha256: ce34669eadaba351cd54910743e6a2261b67009624dbc7daeeafdef93616711b + md5: 369964e85dc26bfe78f41399b366c435 + depends: + - __osx >=11.0 + constrains: + - zlib 1.3.1 *_2 + arch: arm64 + platform: osx + license: Zlib + license_family: Other + purls: [] + size: 46438 + timestamp: 1727963202283 +- conda: https://conda.anaconda.org/conda-forge/linux-64/llvm-openmp-15.0.7-h0cdce71_0.conda + sha256: 7c67d383a8b1f3e7bf9e046e785325c481f6868194edcfb9d78d261da4ad65d4 + md5: 589c9a3575a050b583241c3d688ad9aa + depends: + - libzlib >=1.2.13,<2.0.0a0 + constrains: + - openmp 15.0.7|15.0.7.* + arch: x86_64 + platform: linux + license: Apache-2.0 WITH LLVM-exception + license_family: APACHE + purls: [] + size: 3268766 + timestamp: 1673584331056 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-15.0.7-h7cfbb63_0.conda + sha256: 6cc4cf021fc1f06df3b97598bf9583fe7a04fad6a4eef9882558f7932f362bc0 + md5: 358164e15a9320f11b84a53fb8d8e446 + constrains: + - openmp 15.0.7|15.0.7.* + arch: arm64 + platform: osx + license: Apache-2.0 WITH LLVM-exception + license_family: APACHE + purls: [] + size: 263326 + timestamp: 1673584823527 +- conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.10.0-h5888daf_1.conda + sha256: 47326f811392a5fd3055f0f773036c392d26fdb32e4d8e7a8197eed951489346 + md5: 9de5350a85c4a20c685259b889aa6393 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 167055 + timestamp: 1733741040117 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.10.0-h5ad3122_1.conda + sha256: 67e55058d275beea76c1882399640c37b5be8be4eb39354c94b610928e9a0573 + md5: 6654e411da94011e8fbe004eacb8fe11 + depends: + - libgcc >=13 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 184953 + timestamp: 1733740984533 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.10.0-h286801f_1.conda + sha256: 94d3e2a485dab8bdfdd4837880bde3dd0d701e2b97d6134b8806b7c8e69c8652 + md5: 01511afc6cc1909c5303cf31be17b44f + depends: + - __osx >=11.0 + - libcxx >=18 + arch: arm64 + platform: osx + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 148824 + timestamp: 1733741047892 +- pypi: https://download.pytorch.org/whl/MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl#sha256=ac07bad82163452a6884fe8fa0963fb98c2346ba78d779ec06bd7a6262132aee + name: markupsafe + version: 2.1.5 + sha256: ac07bad82163452a6884fe8fa0963fb98c2346ba78d779ec06bd7a6262132aee + requires_python: '>=3.7' +- conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_1.conda + sha256: 4a6bf68d2a2b669fecc9a4a009abd1cf8e72c2289522ff00d81b5a6e51ae78f5 + md5: eb227c3e0bf58f5bd69c0532b157975b + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - jinja2 >=3.0.0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/markupsafe?source=hash-mapping + size: 24604 + timestamp: 1733219911494 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312h998013c_1.conda + sha256: 4aa997b244014d3707eeef54ab0ee497d12c0d0d184018960cce096169758283 + md5: 46e547061080fddf9cf95a0327e8aba6 + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - jinja2 >=3.0.0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/markupsafe?source=hash-mapping + size: 24048 + timestamp: 1733219945697 +- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022718-release.conda + noarch: python + sha256: f3dcb14fed5470c0fc521542cbd2f1c56ca7e46d560f46176b8f926198cb3cbd + md5: 01fe5e0cf46c84a6345e323ad1316764 + depends: + - max-core ==25.2.0.dev2025022718 release + - max-python ==25.2.0.dev2025022718 release + - mojo-jupyter ==25.2.0.dev2025022718 release + - mblack ==25.2.0.dev2025022718 release + license: LicenseRef-Modular-Proprietary + size: 9905 + timestamp: 1740680254354 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022718-release.conda + sha256: 847d5767109a305d7bcad4ac29248a74a384034692934a0c54b00a590c27094a + md5: fc5a9ae36c7805979bd58ca55a25066f + depends: + - mblack ==25.2.0.dev2025022718 release + license: LicenseRef-Modular-Proprietary + size: 249811868 + timestamp: 1740680254354 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022718-release.conda + sha256: 250c35ecccd302e6c7de836ac200a5ece92e74508c2590c585d8803d488fd650 + md5: d88728b468c85902512a0f9b99251035 + depends: + - mblack ==25.2.0.dev2025022718 release + license: LicenseRef-Modular-Proprietary + size: 252108573 + timestamp: 1740680207793 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022718-release.conda + sha256: fb28d9e61aa507ea84b470082d3dc96844a24fe672d4e4c57e832655c5d0a202 + md5: dd8734453f7276a258f3351cc5c506c3 + depends: + - mblack ==25.2.0.dev2025022718 release + license: LicenseRef-Modular-Proprietary + size: 217273450 + timestamp: 1740681819160 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022718-release.conda + noarch: python + sha256: 831b4d62f66f0083321121c6ba25dedab3ee41d5e9f19d9752969592214af398 + md5: f828ace91aa057e4774e84ad459adccf + depends: + - max-core ==25.2.0.dev2025022718 release + - click >=8.0.0 + - numpy >=1.18,<2.0 + - sentencepiece >=0.2.0 + - tqdm >=4.67.1 + constrains: + - aiohttp >=3.11.12 + - fastapi >=0.114.2 + - gguf >=0.14.0 + - hf-transfer >=0.1.9 + - httpx >=0.28.1 + - huggingface_hub >=0.24.0 + - nvitop >=1.4.1 + - opentelemetry-api >=1.29.0 + - opentelemetry-exporter-otlp-proto-http >=1.27.0 + - opentelemetry-exporter-prometheus <1.0.0 + - opentelemetry-sdk >=1.29.0,<2.0 + - pillow >=10.3.0 + - prometheus_client >=0.21.0 + - prometheus-async >=22.2.0 + - psutil >=6.1.1 + - pydantic + - pydantic-settings >=2.7.1 + - pyinstrument >=5.0.1 + - python-json-logger >=2.0.7 + - requests >=2.32.3 + - rich >=13.9.4 + - safetensors >=0.5.2 + - sentinel >=0.3.0 + - sse-starlette >=2.1.2 + - tokenizers >=0.19.0 + - pytorch >=2.2.2,<=2.5.1 + - transformers >=4.40.1 + - uvicorn >=0.34.0 + - uvloop >=0.21.0 + - xgrammar ==0.1.11 + license: LicenseRef-Modular-Proprietary + size: 123584411 + timestamp: 1740680254354 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022718-release.conda + noarch: python + sha256: b9e5755b7bf6314a37a90ef0250c93f5e7c693954d7a6389a97ab9ef06e23cc3 + md5: bfd2e752d0fc9516b78a17169ce9cc78 + depends: + - max-core ==25.2.0.dev2025022718 release + - click >=8.0.0 + - numpy >=1.18,<2.0 + - sentencepiece >=0.2.0 + - tqdm >=4.67.1 + constrains: + - aiohttp >=3.11.12 + - fastapi >=0.114.2 + - gguf >=0.14.0 + - hf-transfer >=0.1.9 + - httpx >=0.28.1 + - huggingface_hub >=0.24.0 + - nvitop >=1.4.1 + - opentelemetry-api >=1.29.0 + - opentelemetry-exporter-otlp-proto-http >=1.27.0 + - opentelemetry-exporter-prometheus <1.0.0 + - opentelemetry-sdk >=1.29.0,<2.0 + - pillow >=10.3.0 + - prometheus_client >=0.21.0 + - prometheus-async >=22.2.0 + - psutil >=6.1.1 + - pydantic + - pydantic-settings >=2.7.1 + - pyinstrument >=5.0.1 + - python-json-logger >=2.0.7 + - requests >=2.32.3 + - rich >=13.9.4 + - safetensors >=0.5.2 + - sentinel >=0.3.0 + - sse-starlette >=2.1.2 + - tokenizers >=0.19.0 + - pytorch >=2.2.2,<=2.5.1 + - transformers >=4.40.1 + - uvicorn >=0.34.0 + - uvloop >=0.21.0 + - xgrammar ==0.1.11 + license: LicenseRef-Modular-Proprietary + size: 126004454 + timestamp: 1740680207793 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022718-release.conda + noarch: python + sha256: 7da9f4655082bb64c2b0cc996ffefa0ce5c49744854ed77a9b0d000e27cf5a55 + md5: b16d498a148aa61dca2a6bfec5cb8e46 + depends: + - max-core ==25.2.0.dev2025022718 release + - click >=8.0.0 + - numpy >=1.18,<2.0 + - sentencepiece >=0.2.0 + - tqdm >=4.67.1 + constrains: + - aiohttp >=3.11.12 + - fastapi >=0.114.2 + - gguf >=0.14.0 + - hf-transfer >=0.1.9 + - httpx >=0.28.1 + - huggingface_hub >=0.24.0 + - nvitop >=1.4.1 + - opentelemetry-api >=1.29.0 + - opentelemetry-exporter-otlp-proto-http >=1.27.0 + - opentelemetry-exporter-prometheus <1.0.0 + - opentelemetry-sdk >=1.29.0,<2.0 + - pillow >=10.3.0 + - prometheus_client >=0.21.0 + - prometheus-async >=22.2.0 + - psutil >=6.1.1 + - pydantic + - pydantic-settings >=2.7.1 + - pyinstrument >=5.0.1 + - python-json-logger >=2.0.7 + - requests >=2.32.3 + - rich >=13.9.4 + - safetensors >=0.5.2 + - sentinel >=0.3.0 + - sse-starlette >=2.1.2 + - tokenizers >=0.19.0 + - pytorch >=2.2.2,<=2.5.1 + - transformers >=4.40.1 + - uvicorn >=0.34.0 + - uvloop >=0.21.0 + - xgrammar ==0.1.11 + license: LicenseRef-Modular-Proprietary + size: 112658409 + timestamp: 1740681819160 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022718-release.conda + noarch: python + sha256: ff042a8abfed0e2e36b207e3d4f59a2b4577dea7f099b08d1aaef128ab796f09 + md5: 719ca7123d53415adcdd7f0cb8396c51 + depends: + - python >=3.9,<3.13 + - click >=8.0.0 + - mypy_extensions >=0.4.3 + - packaging >=22.0 + - pathspec >=0.9.0 + - platformdirs >=2 + - typing_extensions >=v4.12.2 + - python + license: MIT + size: 130852 + timestamp: 1740680254353 +- conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-2022.1.0-h84fe81f_915.tar.bz2 + sha256: 767318c4f2057822a7ebc238d6065ce12c6ae60df4ab892758adb79b1057ce02 + md5: b9c8f925797a93dbff45e1626b025a6b + depends: + - _openmp_mutex * *_llvm + - _openmp_mutex >=4.5 + - llvm-openmp >=14.0.3 + - tbb 2021.* + arch: x86_64 + platform: linux + license: LicenseRef-ProprietaryIntel + license_family: Proprietary + purls: [] + size: 209326825 + timestamp: 1652946040193 +- conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-devel-2022.1.0-ha770c72_916.tar.bz2 + sha256: 93d957608b17ada3039ff0acad2b8596451caa6829b3502fe87375e639ffc34e + md5: 69ba49e445f87aea2cba343a71a35ca2 + depends: + - mkl 2022.1.0 h84fe81f_915 + - mkl-include 2022.1.0 h84fe81f_915 + arch: x86_64 + platform: linux + license: LicenseRef-ProprietaryIntel + license_family: Proprietary + purls: [] + size: 25614 + timestamp: 1652946458276 +- conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-include-2022.1.0-h84fe81f_915.tar.bz2 + sha256: 63415fe64e99f8323d0191d45ea5b1ec3973317e728b9071267ffb7ff3b38364 + md5: 2dcd1acca05c11410d4494d7fc7dfa2a + arch: x86_64 + platform: linux + license: LicenseRef-ProprietaryIntel + license_family: Proprietary + purls: [] + size: 762563 + timestamp: 1652946186347 +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022718-release.conda + noarch: python + sha256: 19c33e23b27e240fee0b2a1d56921802ac88558dc2da417837cd590175561e16 + md5: 6b8d00b15817db11e026f824f7f0ba14 + depends: + - max-core ==25.2.0.dev2025022718 release + - python >=3.9,<3.13 + - jupyter_client >=8.6.2,<8.7 + - python + license: LicenseRef-Modular-Proprietary + size: 22981 + timestamp: 1740680254354 +- conda: https://conda.anaconda.org/conda-forge/linux-64/mpc-1.3.1-h24ddda3_1.conda + sha256: 1bf794ddf2c8b3a3e14ae182577c624fa92dea975537accff4bc7e5fea085212 + md5: aa14b9a5196a6d8dd364164b7ce56acf + depends: + - __glibc >=2.17,<3.0.a0 + - gmp >=6.3.0,<7.0a0 + - libgcc >=13 + - mpfr >=4.2.1,<5.0a0 + arch: x86_64 + platform: linux + license: LGPL-3.0-or-later + license_family: LGPL + purls: [] + size: 116777 + timestamp: 1725629179524 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/mpc-1.3.1-h8f1351a_1.conda + sha256: 2700899ad03302a1751dbf2bca135407e470dd83ac897ab91dd8675d4300f158 + md5: a5635df796b71f6ca400fc7026f50701 + depends: + - __osx >=11.0 + - gmp >=6.3.0,<7.0a0 + - mpfr >=4.2.1,<5.0a0 + arch: arm64 + platform: osx + license: LGPL-3.0-or-later + license_family: LGPL + purls: [] + size: 104766 + timestamp: 1725629165420 +- conda: https://conda.anaconda.org/conda-forge/linux-64/mpfr-4.2.1-h90cbb55_3.conda + sha256: f25d2474dd557ca66c6231c8f5ace5af312efde1ba8290a6ea5e1732a4e669c0 + md5: 2eeb50cab6652538eee8fc0bc3340c81 + depends: + - __glibc >=2.17,<3.0.a0 + - gmp >=6.3.0,<7.0a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: LGPL-3.0-only + license_family: LGPL + purls: [] + size: 634751 + timestamp: 1725746740014 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/mpfr-4.2.1-hb693164_3.conda + sha256: 4463e4e2aba7668e37a1b8532859191b4477a6f3602a5d6b4d64ad4c4baaeac5 + md5: 4e4ea852d54cc2b869842de5044662fb + depends: + - __osx >=11.0 + - gmp >=6.3.0,<7.0a0 + arch: arm64 + platform: osx + license: LGPL-3.0-only + license_family: LGPL + purls: [] + size: 345517 + timestamp: 1725746730583 +- pypi: https://download.pytorch.org/whl/mpmath-1.3.0-py3-none-any.whl#sha256=a0b2b9fe80bbcd81a6647ff13108738cfb482d481d826cc0e02f5b35e5c88d2c + name: mpmath + version: 1.3.0 + sha256: a0b2b9fe80bbcd81a6647ff13108738cfb482d481d826cc0e02f5b35e5c88d2c + requires_dist: + - pytest>=4.6 ; extra == 'develop' + - pycodestyle ; extra == 'develop' + - pytest-cov ; extra == 'develop' + - codecov ; extra == 'develop' + - wheel ; extra == 'develop' + - sphinx ; extra == 'docs' + - gmpy2>=2.1.0a4 ; platform_python_implementation != 'PyPy' and extra == 'gmpy' + - pytest>=4.6 ; extra == 'tests' +- conda: https://conda.anaconda.org/conda-forge/noarch/mpmath-1.3.0-pyhd8ed1ab_1.conda + sha256: 7d7aa3fcd6f42b76bd711182f3776a02bef09a68c5f117d66b712a6d81368692 + md5: 3585aa87c43ab15b167b574cd73b057b + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/mpmath?source=hash-mapping + size: 439705 + timestamp: 1733302781386 +- conda: 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 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/multidict?source=hash-mapping + size: 61507 + timestamp: 1733913288935 +- conda: 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 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/multidict?source=hash-mapping + size: 63077 + timestamp: 1733913233032 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/multidict-6.1.0-py312hdb8e49c_1.conda + sha256: 482fd09fb798090dc8cce2285fa69f43b1459099122eac2fb112d9b922b9f916 + md5: 0048335516fed938e4dd2c457b4c5b9b + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/multidict?source=hash-mapping + size: 55968 + timestamp: 1729065664275 +- conda: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.16-py312h66e93f0_1.conda + sha256: 459092c4e9305e00a0207b764a266c9caa14d82196322b2a74c96028c563a809 + md5: efe4a3f62320156f68579362314009f3 + depends: + - __glibc >=2.17,<3.0.a0 + - dill >=0.3.8 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/multiprocess?source=hash-mapping + size: 340540 + timestamp: 1724954755987 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.16-py312hb2c0f52_1.conda + sha256: f93627c78d1f86f593350196699b462c334542477aa55fe0212edf45392c9ab4 + md5: 642c63b684ce5614f157572b04816983 + depends: + - dill >=0.3.8 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/multiprocess?source=hash-mapping + size: 341428 + timestamp: 1724954862644 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/multiprocess-0.70.16-py312h024a12e_1.conda + sha256: d19a1c8b3fd44414657066becba960143e7115a385fb71b941f7e9c74f066a32 + md5: fd83a478d686df79aa394b9db1ad20b5 + depends: + - __osx >=11.0 + - dill >=0.3.8 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/multiprocess?source=hash-mapping + size: 342831 + timestamp: 1724954807776 +- conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda + sha256: 1895f47b7d68581a6facde5cb13ab8c2764c2e53a76bd746f8f98910dc4e08fe + md5: 29097e7ea634a45cc5386b95cac6568f + depends: + - python >=3.9 + license: MIT + license_family: MIT + purls: + - pkg:pypi/mypy-extensions?source=hash-mapping + size: 10854 + timestamp: 1733230986902 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda + sha256: 3fde293232fa3fca98635e1167de6b7c7fda83caf24b9d6c91ec9eefb4f4d586 + md5: 47e340acb35de30501a76c7c799c41d7 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: X11 AND BSD-3-Clause + purls: [] + size: 891641 + timestamp: 1738195959188 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-ha32ae93_3.conda + sha256: 91cfb655a68b0353b2833521dc919188db3d8a7f4c64bea2c6a7557b24747468 + md5: 182afabe009dc78d8b73100255ee6868 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: X11 AND BSD-3-Clause + purls: [] + size: 926034 + timestamp: 1738196018799 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda + sha256: 2827ada40e8d9ca69a153a45f7fd14f32b2ead7045d3bbb5d10964898fe65733 + md5: 068d497125e4bf8a66bf707254fff5ae + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: X11 AND BSD-3-Clause + purls: [] + size: 797030 + timestamp: 1738196177597 +- pypi: https://download.pytorch.org/whl/networkx-3.3-py3-none-any.whl#sha256=28575580c6ebdaf4505b22c6256a2b9de86b316dc63ba9e93abde3d78dfdbcf2 + name: networkx + version: '3.3' + sha256: 28575580c6ebdaf4505b22c6256a2b9de86b316dc63ba9e93abde3d78dfdbcf2 + requires_dist: + - numpy>=1.23 ; extra == 'default' + - scipy>=1.9,!=1.11.0,!=1.11.1 ; extra == 'default' + - matplotlib>=3.6 ; extra == 'default' + - pandas>=1.4 ; extra == 'default' + - changelist==0.5 ; extra == 'developer' + - pre-commit>=3.2 ; extra == 'developer' + - mypy>=1.1 ; extra == 'developer' + - rtoml ; extra == 'developer' + - sphinx>=7 ; extra == 'doc' + - pydata-sphinx-theme>=0.14 ; extra == 'doc' + - sphinx-gallery>=0.14 ; extra == 'doc' + - numpydoc>=1.7 ; extra == 'doc' + - pillow>=9.4 ; extra == 'doc' + - texext>=0.6.7 ; extra == 'doc' + - myst-nb>=1.0 ; extra == 'doc' + - lxml>=4.6 ; extra == 'extra' + - pygraphviz>=1.12 ; extra == 'extra' + - pydot>=2.0 ; extra == 'extra' + - sympy>=1.10 ; extra == 'extra' + - pytest>=7.2 ; extra == 'test' + - pytest-cov>=4.0 ; extra == 'test' + requires_python: '>=3.10' +- conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda + sha256: 39625cd0c9747fa5c46a9a90683b8997d8b9649881b3dc88336b13b7bdd60117 + md5: fd40bf7f7f4bc4b647dc8512053d9873 + depends: + - python >=3.10 + - python + constrains: + - numpy >=1.24 + - scipy >=1.10,!=1.11.0,!=1.11.1 + - matplotlib >=3.7 + - pandas >=2.0 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 1265008 + timestamp: 1731521053408 +- conda: https://conda.anaconda.org/conda-forge/linux-64/nlohmann_json-3.11.3-he02047a_1.conda + sha256: ce4bcced4f8eea71b7cac8bc3daac097abf7a5792f278cd811dedada199500c1 + md5: e46f7ac4917215b49df2ea09a694a3fa + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 122743 + timestamp: 1723652407663 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/nlohmann_json-3.11.3-h0a1ffab_1.conda + sha256: c90b1f11fc337d90a9e4c5aeeacac1418c5ba6a195097086566d38bb2ecf0f24 + md5: f2bd10ff23ab5c87327439c4499b3f3e + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 122755 + timestamp: 1723652622631 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/nlohmann_json-3.11.3-h00cdb27_1.conda + sha256: 3f4e6a4fa074bb297855f8111ab974dab6d9f98b7d4317d4dd46f8687ee2363b + md5: d2dee849c806430eee64d3acc98ce090 + depends: + - __osx >=11.0 + - libcxx >=16 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 123250 + timestamp: 1723652704997 +- conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda + sha256: fe3459c75cf84dcef6ef14efcc4adb0ade66038ddd27cadb894f34f4797687d8 + md5: d8285bea2a350f63fab23bf460221f3f + depends: + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - libgcc-ng >=12 + - liblapack >=3.9.0,<4.0a0 + - libstdcxx-ng >=12 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - numpy-base <0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/numpy?source=hash-mapping + size: 7484186 + timestamp: 1707225809722 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda + sha256: 23767677a7790bee5457d5e75ebd508b9a31c5354216f4310dd1acfca3f7a6f9 + md5: 9cebf5a06cb87d4569cd68df887af476 + depends: + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - libgcc-ng >=12 + - liblapack >=3.9.0,<4.0a0 + - libstdcxx-ng >=12 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - numpy-base <0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/numpy?source=hash-mapping + size: 6614296 + timestamp: 1707225994762 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda + sha256: c8841d6d6f61fd70ca80682efbab6bdb8606dc77c68d8acabfbd7c222054f518 + md5: d83fc83d589e2625a3451c9a7e21047c + depends: + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - libcxx >=16 + - liblapack >=3.9.0,<4.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - numpy-base <0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/numpy?source=hash-mapping + size: 6073136 + timestamp: 1707226249608 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ocl-icd-2.3.2-hb9d3cd8_2.conda + sha256: 96ddd13054032fabd54636f634d50bc74d10d8578bc946405c429b2d895db6f2 + md5: 2e8d2b469559d6b2cb6fd4b34f9c8d7f + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - opencl-headers >=2024.10.24 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 94934 + timestamp: 1732915114536 +- conda: https://conda.anaconda.org/conda-forge/linux-64/opencl-headers-2024.10.24-h5888daf_0.conda + sha256: 7e1d3ad55d4ad3ddf826e205d4603b9ed40c5e655a9dfd66b56f459d7ba14db3 + md5: 3ba02cce423fdac1a8582bd6bb189359 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 54060 + timestamp: 1732912937444 +- conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.1-h7b32b05_0.conda + sha256: cbf62df3c79a5c2d113247ddea5658e9ff3697b6e741c210656e239ecaf1768f + md5: 41adf927e746dc75ecf0ef841c454e48 + depends: + - __glibc >=2.17,<3.0.a0 + - ca-certificates + - libgcc >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 2939306 + timestamp: 1739301879343 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.1-hd08dc88_0.conda + sha256: d80b52b56b2206053968270069616868cbeb289ef855cf1584b1bb0fef61b37c + md5: 09036190605c57eaecf01218e0e9542d + depends: + - ca-certificates + - libgcc >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 3476570 + timestamp: 1739303256089 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.1-h81ee809_0.conda + sha256: 4f8e2389e1b711b44182a075516d02c80fa7a3a7e25a71ff1b5ace9eae57a17a + md5: 75f9f0c7b1740017e2db83a53ab9a28e + depends: + - __osx >=11.0 + - ca-certificates + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 2934522 + timestamp: 1739301896733 +- conda: https://conda.anaconda.org/conda-forge/linux-64/orc-2.0.3-h12ee42a_2.conda + sha256: dff5cc8023905782c86b3459055f26d4b97890e403b0698477c9fed15d8669cc + md5: 4f6f9f3f80354ad185e276c120eac3f0 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - lz4-c >=1.10.0,<1.11.0a0 + - snappy >=1.2.1,<1.3.0a0 + - tzdata + - zstd >=1.5.6,<1.6.0a0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 1188881 + timestamp: 1735630209320 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/orc-2.0.3-hdd485aa_2.conda + sha256: b6c67542352a86cdf143c3066d5cda855b74454a156eedcd8958b494c6a32a83 + md5: d19f01b42e5d6a2908b65df435aff42f + depends: + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - lz4-c >=1.10.0,<1.11.0a0 + - snappy >=1.2.1,<1.3.0a0 + - tzdata + - zstd >=1.5.6,<1.6.0a0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 1167714 + timestamp: 1735630248837 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/orc-2.0.3-h0ff2369_2.conda + sha256: cca330695f3bdb8c0e46350c29cd4af3345865544e36f1d7c9ba9190ad22f5f4 + md5: 24b1897c0d24afbb70704ba998793b78 + depends: + - __osx >=11.0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libzlib >=1.3.1,<2.0a0 + - lz4-c >=1.10.0,<1.11.0a0 + - snappy >=1.2.1,<1.3.0a0 + - tzdata + - zstd >=1.5.6,<1.6.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 438520 + timestamp: 1735630624140 +- conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + sha256: da157b19bcd398b9804c5c52fc000fcb8ab0525bdb9c70f95beaa0bb42f85af1 + md5: 3bfed7e6228ebf2f7b9eaa47f1b4e2aa + depends: + - python >=3.8 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/packaging?source=hash-mapping + size: 60164 + timestamp: 1733203368787 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.3-py312hf9745cd_1.conda + sha256: ad275a83bfebfa8a8fee9b0569aaf6f513ada6a246b2f5d5b85903d8ca61887e + md5: 8bce4f6caaf8c5448c7ac86d87e26b4b + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + - numpy >=1.19,<3 + - numpy >=1.22.4 + - python >=3.12,<3.13.0a0 + - python-dateutil >=2.8.1 + - python-tzdata >=2022a + - python_abi 3.12.* *_cp312 + - pytz >=2020.1,<2024.2 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/pandas?source=hash-mapping + size: 15436913 + timestamp: 1726879054912 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pandas-2.2.3-py312ha2895bd_2.conda + sha256: a34b10077de97eea72c81cb96e3ddc7d48320c0fc7d9b28ba8d9d2bead1d8297 + md5: 39a91ac336d350513de6aad56da5a920 + depends: + - libgcc >=13 + - libstdcxx >=13 + - numpy >=1.19,<3 + - numpy >=1.22.4 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python-dateutil >=2.8.1 + - python-tzdata >=2022a + - python_abi 3.12.* *_cp312 + - pytz >=2020.1,<2024.2 + constrains: + - fsspec >=2022.11.0 + - s3fs >=2022.11.0 + - fastparquet >=2022.12.0 + - pyreadstat >=1.2.0 + - qtpy >=2.3.0 + - scipy >=1.10.0 + - beautifulsoup4 >=4.11.2 + - gcsfs >=2022.11.0 + - numexpr >=2.8.4 + - sqlalchemy >=2.0.0 + - pyxlsb >=1.0.10 + - numba >=0.56.4 + - lxml >=4.9.2 + - matplotlib >=3.6.3 + - psycopg2 >=2.9.6 + - tzdata >=2022.7 + - bottleneck >=1.3.6 + - xarray >=2022.12.0 + - xlsxwriter >=3.0.5 + - zstandard >=0.19.0 + - blosc >=1.21.3 + - pytables >=3.8.0 + - openpyxl >=3.1.0 + - pyqt5 >=5.15.8 + - tabulate >=0.9.0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/pandas?source=hash-mapping + size: 15162992 + timestamp: 1736811533875 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.3-py312hcd31e36_1.conda + sha256: ff0cb54b5d058c7987b4a0984066e893642d1865a7bb695294b6172e2fcdc457 + md5: c68bfa69e6086c381c74e16fd72613a8 + depends: + - __osx >=11.0 + - libcxx >=17 + - numpy >=1.19,<3 + - numpy >=1.22.4 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python-dateutil >=2.8.1 + - python-tzdata >=2022a + - python_abi 3.12.* *_cp312 + - pytz >=2020.1,<2024.2 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/pandas?source=hash-mapping + size: 14470437 + timestamp: 1726878887799 +- conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + sha256: 9f64009cdf5b8e529995f18e03665b03f5d07c0b17445b8badef45bde76249ee + md5: 617f15191456cc6a13db418a275435e5 + depends: + - python >=3.9 + license: MPL-2.0 + license_family: MOZILLA + purls: + - pkg:pypi/pathspec?source=hash-mapping + size: 41075 + timestamp: 1733233471940 +- conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + sha256: bb50f6499e8bc1d1a26f17716c97984671121608dc0c3ecd34858112bce59a27 + md5: 577852c7e53901ddccc7e6a9959ddebe + depends: + - python >=3.9 + license: MIT + license_family: MIT + purls: + - pkg:pypi/platformdirs?source=hash-mapping + size: 20448 + timestamp: 1733232756001 +- conda: https://conda.anaconda.org/conda-forge/linux-64/prometheus-cpp-1.3.0-ha5d0236_0.conda + sha256: 013669433eb447548f21c3c6b16b2ed64356f726b5f77c1b39d5ba17a8a4b8bc + md5: a83f6a2fdc079e643237887a37460668 + depends: + - __glibc >=2.17,<3.0.a0 + - libcurl >=8.10.1,<9.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - zlib + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 199544 + timestamp: 1730769112346 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/prometheus-cpp-1.3.0-h7938499_0.conda + sha256: 9350d7bbc3982a732ff13a7fd17b585509e3b7d0191ac7b810cc3224868e3648 + md5: 10f4301290e51c49979ff98d1bdf2556 + depends: + - libcurl >=8.10.1,<9.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - zlib + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 211335 + timestamp: 1730769181127 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/prometheus-cpp-1.3.0-h0967b3e_0.conda + sha256: 851a77ae1a8e90db9b9f3c4466abea7afb52713c3d98ceb0d37ba6ff27df2eff + md5: 7172339b49c94275ba42fec3eaeda34f + depends: + - __osx >=11.0 + - libcurl >=8.10.1,<9.0a0 + - libcxx >=18 + - libzlib >=1.3.1,<2.0a0 + - zlib + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 173220 + timestamp: 1730769371051 +- conda: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.1-py312h178313f_1.conda + sha256: 6d5ff6490c53e14591b70924711fe7bd70eb7fbeeeb1cbd9ed2f6d794ec8c4eb + md5: 349635694b4df27336bc15a49e9220e9 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/propcache?source=hash-mapping + size: 52947 + timestamp: 1737635699390 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.2.1-py312hcc812fe_1.conda + sha256: d759d8ab9c060b42cabf6312b9a04aa590daecabf1dd4e35731f4bc1b5c388bb + md5: 533b07e9fd835938f465225613825eee + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/propcache?source=hash-mapping + size: 52776 + timestamp: 1737635802135 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.1-py312h998013c_1.conda + sha256: 96145760baad111d7ae4213ea8f8cc035cf33b001f5ff37d92268e4d28b0941d + md5: 83678928c58c9ae76778a435b6c7a94a + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/propcache?source=hash-mapping + size: 50942 + timestamp: 1737635896600 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-19.0.1-py312h7900ff3_0.conda + sha256: 82a0b6ef00473c134ff32138a6fe1f6edc600f362f2007d33d6c6723e220a83d + md5: 972f2a7f04b117accc08a11469c2cb6e + depends: + - libarrow-acero 19.0.1.* + - libarrow-dataset 19.0.1.* + - libarrow-substrait 19.0.1.* + - libparquet 19.0.1.* + - pyarrow-core 19.0.1 *_0_* + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 25300 + timestamp: 1739792645286 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-19.0.1-py312h8025657_0.conda + sha256: d17f85be9e3c9ccdbf46a00f51a155d6c9d02837f3ff850539cc931ce149546f + md5: 0f2b788d71caa13c9e05fb4366e3b564 + depends: + - libarrow-acero 19.0.1.* + - libarrow-dataset 19.0.1.* + - libarrow-substrait 19.0.1.* + - libparquet 19.0.1.* + - pyarrow-core 19.0.1 *_0_* + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 25487 + timestamp: 1739792927040 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-19.0.1-py312h1f38498_0.conda + sha256: 212a9ef1971d69882b977a930b3e8cd9d78bb58c027119a52b92d48a5e47f9eb + md5: 4bbcfad0bfcad7ee1d617a9b6db564ee + depends: + - libarrow-acero 19.0.1.* + - libarrow-dataset 19.0.1.* + - libarrow-substrait 19.0.1.* + - libparquet 19.0.1.* + - pyarrow-core 19.0.1 *_0_* + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 25462 + timestamp: 1739792876991 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-19.0.1-py312h01725c0_0_cpu.conda + sha256: b2d397ee72a8e33aa1b2bcaa525b3bfc1dad333a631e668e54bcdcf275b3d69b + md5: 227543d1eef90da786f0c63bd0787839 + depends: + - __glibc >=2.17,<3.0.a0 + - libarrow 19.0.1.* *cpu + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - numpy >=1.21,<3 + - apache-arrow-proc =*=cpu + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/pyarrow?source=hash-mapping + size: 5203933 + timestamp: 1739792285799 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-19.0.1-py312h66f7834_0_cpu.conda + sha256: ab25433629022236b24d35a53dbef033ef60f3cb3a71fa630392d7340791bdc7 + md5: e83aadc9635bdcf69845587c4c837fd3 + depends: + - libarrow 19.0.1.* *cpu + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - numpy >=1.21,<3 + - apache-arrow-proc =*=cpu + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/pyarrow?source=hash-mapping + size: 5017444 + timestamp: 1739792893195 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-19.0.1-py312hc40f475_0_cpu.conda + sha256: 50ad4d67a1a2be32c2441a945a333b5347e36f027ea629fd903e7eaae77e0ed7 + md5: 90e3c0898e229d76e4a6949f621f0f58 + depends: + - __osx >=11.0 + - libarrow 19.0.1.* *cpu + - libcxx >=18 + - libzlib >=1.3.1,<2.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - apache-arrow-proc =*=cpu + - numpy >=1.21,<3 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/pyarrow?source=hash-mapping + size: 4398733 + timestamp: 1739792829575 +- conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda + sha256: 79db7928d13fab2d892592223d7570f5061c192f27b9febd1a418427b719acc6 + md5: 12c566707c80111f9799308d9e265aef + depends: + - python >=3.9 + - python + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 110100 + timestamp: 1733195786147 +- conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda + sha256: ba3b032fa52709ce0d9fd388f63d330a026754587a2f461117cac9ab73d8d0d8 + md5: 461219d1a5bd61342293efa2c0c90eac + depends: + - __unix + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/pysocks?source=hash-mapping + size: 21085 + timestamp: 1733217331982 +- conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.9-h9e4cc4f_0_cpython.conda + sha256: 64fed5178f1e9c8ac0f572ac0ce37955f5dee7b2bcac665202bc14f1f7dd618a + md5: 5665f0079432f8848079c811cdb537d5 + depends: + - __glibc >=2.17,<3.0.a0 + - bzip2 >=1.0.8,<2.0a0 + - ld_impl_linux-64 >=2.36.1 + - libexpat >=2.6.4,<3.0a0 + - libffi >=3.4,<4.0a0 + - libgcc >=13 + - liblzma >=5.6.4,<6.0a0 + - libnsl >=2.0.1,<2.1.0a0 + - libsqlite >=3.48.0,<4.0a0 + - libuuid >=2.38.1,<3.0a0 + - libxcrypt >=4.4.36 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.4.1,<4.0a0 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + constrains: + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Python-2.0 + purls: [] + size: 31581682 + timestamp: 1739521496324 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.9-h1683364_0_cpython.conda + sha256: 0366f38918bceda8ff5917d7bbe1cea2bc8b6c74e7245eb0e4b0d3c2d37f76cf + md5: 2e7ad70254455e0508adabff10218512 + depends: + - bzip2 >=1.0.8,<2.0a0 + - ld_impl_linux-aarch64 >=2.36.1 + - libexpat >=2.6.4,<3.0a0 + - libffi >=3.4,<4.0a0 + - libgcc >=13 + - liblzma >=5.6.4,<6.0a0 + - libnsl >=2.0.1,<2.1.0a0 + - libsqlite >=3.48.0,<4.0a0 + - libuuid >=2.38.1,<3.0a0 + - libxcrypt >=4.4.36 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.4.1,<4.0a0 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + constrains: + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Python-2.0 + purls: [] + size: 13804161 + timestamp: 1739519531794 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.9-hc22306f_0_cpython.conda + sha256: cbf81a78d3ca6e663e827523e6ddbc28369cac488da047a28f83875eb52fe5f6 + md5: 1d105a6c46a753e3c0bab54a1ad24063 + depends: + - __osx >=11.0 + - bzip2 >=1.0.8,<2.0a0 + - libexpat >=2.6.4,<3.0a0 + - libffi >=3.4,<4.0a0 + - liblzma >=5.6.4,<6.0a0 + - libsqlite >=3.48.0,<4.0a0 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.4.1,<4.0a0 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + constrains: + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Python-2.0 + purls: [] + size: 12947786 + timestamp: 1739520092196 +- conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + sha256: a50052536f1ef8516ed11a844f9413661829aa083304dc624c5925298d078d79 + md5: 5ba79d7c71f03c678c8ead841f347d6e + depends: + - python >=3.9 + - six >=1.5 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/python-dateutil?source=hash-mapping + size: 222505 + timestamp: 1733215763718 +- conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.1-pyhd8ed1ab_0.conda + sha256: 1597d6055d34e709ab8915091973552a0b8764c8032ede07c4e99670da029629 + md5: 392c91c42edd569a7ec99ed8648f597a + depends: + - python >=3.9 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/tzdata?source=hash-mapping + size: 143794 + timestamp: 1737541204030 +- conda: https://conda.anaconda.org/conda-forge/linux-64/python-xxhash-3.5.0-py312h66e93f0_2.conda + sha256: b5950a737d200e2e3cf199ab7b474ac194fcf4d6bee13bcbdf32c5a5cca7eaf0 + md5: cc3f6c452697c1cf7e4e6e5f21861f96 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - xxhash >=0.8.3,<0.8.4.0a0 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + purls: + - pkg:pypi/xxhash?source=hash-mapping + size: 23216 + timestamp: 1740594909669 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-xxhash-3.5.0-py312h52516f5_2.conda + sha256: b0c7528f2597e33911f179dad9852a4958683533570f8cc68976068b444461f4 + md5: c6de44ac405bf8a793c57850ea6b427a + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - xxhash >=0.8.3,<0.8.4.0a0 + arch: aarch64 + platform: linux + license: BSD-2-Clause + license_family: BSD + purls: + - pkg:pypi/xxhash?source=compressed-mapping + size: 23768 + timestamp: 1740595924431 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-xxhash-3.5.0-py312hea69d52_2.conda + sha256: 10c3df8dae696da4bd8532609999991ae1f3c4cc1a1e7f6a636cf6aa19d9eb82 + md5: b0c7097883bb4d8acfd72e7b9c6b93cd + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - xxhash >=0.8.3,<0.8.4.0a0 + arch: arm64 + platform: osx + license: BSD-2-Clause + license_family: BSD + purls: + - pkg:pypi/xxhash?source=hash-mapping + size: 21947 + timestamp: 1740595129087 +- conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda + build_number: 5 + sha256: d10e93d759931ffb6372b45d65ff34d95c6000c61a07e298d162a3bc2accebb0 + md5: 0424ae29b104430108f5218a66db7260 + constrains: + - python 3.12.* *_cpython + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 6238 + timestamp: 1723823388266 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.12-5_cp312.conda + build_number: 5 + sha256: 5ccdad9981753cc4a2d126e356673a21c0cd5b34e209cb8d476a3947d4ad9b39 + md5: 62b20f305498284a07dc6c45fd0e5c87 + constrains: + - python 3.12.* *_cpython + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 6329 + timestamp: 1723823366253 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-5_cp312.conda + build_number: 5 + sha256: 49d624e4b809c799d2bf257b22c23cf3fc4460f5570d9a58e7ad86350aeaa1f4 + md5: b76f9b1c862128e56ac7aa8cd2333de9 + constrains: + - python 3.12.* *_cpython + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 6278 + timestamp: 1723823099686 +- conda: https://conda.anaconda.org/pytorch/linux-64/pytorch-2.5.1-py3.12_cuda12.4_cudnn9.1.0_0.tar.bz2 + sha256: 8183ab363b7892f67ba3660929f1c3f4f8646e4a2a02d499d387acc0509764c3 + md5: 42164c6ce8e563c20a542686a8b9b964 + depends: + - blas * mkl + - filelock + - jinja2 + - llvm-openmp <16 + - mkl >=2018 + - networkx + - python >=3.12,<3.13.0a0 + - pytorch-cuda >=12.4,<12.5 + - pytorch-mutex 1.0 cuda + - pyyaml + - sympy + - torchtriton 3.1.0 + - typing_extensions + constrains: + - cpuonly <0 + arch: x86_64 + platform: linux + license: BSD 3-Clause + license_family: BSD + purls: + - pkg:pypi/torch?source=hash-mapping + size: 1571072276 + timestamp: 1729655770987 +- conda: https://conda.anaconda.org/pytorch/osx-arm64/pytorch-2.5.1-py3.12_0.tar.bz2 + sha256: 1d476688886b78f641973d1b5c1352eaece59484f4408f2c1af46e3634a6c957 + md5: a393d6275c53d5218015a23c741dc004 + depends: + - filelock + - jinja2 + - llvm-openmp <16 + - networkx + - python >=3.12,<3.13.0a0 + - pyyaml + - sympy + - typing_extensions + constrains: + - cpuonly + arch: arm64 + platform: osx + license: BSD 3-Clause + license_family: BSD + purls: + - pkg:pypi/torch?source=hash-mapping + size: 62089911 + timestamp: 1729651375444 +- conda: https://conda.anaconda.org/pytorch/linux-64/pytorch-cuda-12.4-hc786d27_7.tar.bz2 + sha256: 4ce6352f6270673aaf335909da2bbdd70ad8aaae489319e1e3a5ac0aae720314 + md5: 06635b1bbf5e2fef4a8b9b282500cd7b + depends: + - cuda-cudart >=12.4,<12.5 + - cuda-cupti >=12.4,<12.5 + - cuda-libraries >=12.4,<12.5 + - cuda-nvrtc >=12.4,<12.5 + - cuda-nvtx >=12.4,<12.5 + - cuda-runtime >=12.4,<12.5 + - libcublas >=12.4.5.8,<12.5.2.13 + - libcufft >=11.2.1.3,<11.2.3.18 + - libcusolver >=11.6.1.9,<11.6.2.40 + - libcusparse >=12.3.1.170,<12.4.1.18 + - libnpp >=12.2.5.30,<12.3.0.116 + - libnvjitlink >=12.4.127,<12.5.40 + - libnvjpeg >=12.3.1.117,<12.3.2.38 + arch: x86_64 + platform: linux + purls: [] + size: 7189 + timestamp: 1724179791784 +- conda: https://conda.anaconda.org/pytorch/noarch/pytorch-mutex-1.0-cuda.tar.bz2 + build_number: 100 + sha256: c16316183f51b74ca5eee4dcb8631052f328c0bbf244176734a0b7d390b81ee3 + md5: a948316e36fb5b11223b3fcfa93f8358 + purls: [] + size: 2906 + timestamp: 1628062930777 +- conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda + sha256: 1a7d6b233f7e6e3bbcbad054c8fd51e690a67b129a899a056a5e45dd9f00cb41 + md5: 3eeeeb9e4827ace8c0c1419c85d590ad + depends: + - python >=3.7 + license: MIT + license_family: MIT + purls: + - pkg:pypi/pytz?source=hash-mapping + size: 188538 + timestamp: 1706886944988 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py312h178313f_2.conda + sha256: 159cba13a93b3fe084a1eb9bda0a07afc9148147647f0d437c3c3da60980503b + md5: cf2485f39740de96e2a7f2bb18ed2fee + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - yaml >=0.2.5,<0.3.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: + - pkg:pypi/pyyaml?source=hash-mapping + size: 206903 + timestamp: 1737454910324 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyyaml-6.0.2-py312hcc812fe_2.conda + sha256: dc78e41d51300722ba35ac4a10d37339ceffbe22d7501c71dfd3f633a4f8e79a + md5: 4de4a5ff81c941674e08595244e7cd61 + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - yaml >=0.2.5,<0.3.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: + - pkg:pypi/pyyaml?source=hash-mapping + size: 199172 + timestamp: 1737454840766 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py312h998013c_2.conda + sha256: ad225ad24bfd60f7719709791345042c3cb32da1692e62bd463b084cf140e00d + md5: 68149ed4d4e9e1c42d2ba1f27f08ca96 + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - yaml >=0.2.5,<0.3.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: + - pkg:pypi/pyyaml?source=hash-mapping + size: 192148 + timestamp: 1737454886351 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.1-py312hbf22597_0.conda + sha256: 90ec0da0317d3d76990a40c61e1709ef859dd3d8c63838bad2814f46a63c8a2e + md5: 7cec8d0dac15a2d9fea8e49879aa779d + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libsodium >=1.0.20,<1.0.21.0a0 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - zeromq >=4.3.5,<4.4.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/pyzmq?source=hash-mapping + size: 382698 + timestamp: 1738271121975 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyzmq-26.2.1-py312h2427ae1_0.conda + sha256: 9558f9330093e5c21b7c04e2e212e19b9b88ad9c808315f12c0765b244018a09 + md5: 0520da8de6870d8ff63e818e927d1524 + depends: + - libgcc >=13 + - libsodium >=1.0.20,<1.0.21.0a0 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - zeromq >=4.3.5,<4.4.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/pyzmq?source=hash-mapping + size: 375156 + timestamp: 1738273130727 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.1-py312hf4875e0_0.conda + sha256: 70d398b334668dc597d33e27847ede1b0829a639b9c91ee845355e52c86c2293 + md5: bfbefdb140b546a80827ff7c9d5ac7b8 + depends: + - __osx >=11.0 + - libcxx >=18 + - libsodium >=1.0.20,<1.0.21.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - zeromq >=4.3.5,<4.4.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/pyzmq?source=hash-mapping + size: 364649 + timestamp: 1738271263898 +- conda: https://conda.anaconda.org/conda-forge/linux-64/re2-2024.07.02-h9925aae_2.conda + sha256: d213c44958d49ce7e0d4d5b81afec23640cce5016685dbb2d23571a99caa4474 + md5: e84ddf12bde691e8ec894b00ea829ddf + depends: + - libre2-11 2024.07.02 hbbce691_2 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 26786 + timestamp: 1735541074034 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/re2-2024.07.02-haa97905_2.conda + sha256: 040848655df9119bae5a549fb5c8956a5537120859416c1d9d0712b7bac9f12e + md5: 1bf0135339b4a7419a198a795d2d4be0 + depends: + - libre2-11 2024.07.02 h18dbdb1_2 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 26830 + timestamp: 1735540999398 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/re2-2024.07.02-h6589ca4_2.conda + sha256: 4d3799c05f8f662922a0acd129d119774760a3281b883603678e128d1cb307fb + md5: 7a8b4ad8c58a3408ca89d78788c78178 + depends: + - libre2-11 2024.07.02 h07bc746_2 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 26861 + timestamp: 1735541088455 +- conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda + sha256: 2d6d0c026902561ed77cd646b5021aef2d4db22e57a5b0178dfc669231e06d2c + md5: 283b96675859b20a825f8fa30f311446 + depends: + - libgcc >=13 + - ncurses >=6.5,<7.0a0 + arch: x86_64 + platform: linux + license: GPL-3.0-only + license_family: GPL + purls: [] + size: 282480 + timestamp: 1740379431762 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8382b9d_2.conda + sha256: 54bed3a3041befaa9f5acde4a37b1a02f44705b7796689574bcf9d7beaad2959 + md5: c0f08fc2737967edde1a272d4bf41ed9 + depends: + - libgcc >=13 + - ncurses >=6.5,<7.0a0 + arch: aarch64 + platform: linux + license: GPL-3.0-only + license_family: GPL + purls: [] + size: 291806 + timestamp: 1740380591358 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda + sha256: 7db04684d3904f6151eff8673270922d31da1eea7fa73254d01c437f49702e34 + md5: 63ef3f6e6d6d5c589e64f11263dc5676 + depends: + - ncurses >=6.5,<7.0a0 + arch: arm64 + platform: osx + license: GPL-3.0-only + license_family: GPL + purls: [] + size: 252359 + timestamp: 1740379663071 +- conda: https://conda.anaconda.org/conda-forge/linux-64/regex-2024.11.6-py312h66e93f0_0.conda + sha256: fcb5687d3ec5fff580b64b8fb649d9d65c999a91a5c3108a313ecdd2de99f06b + md5: 647770db979b43f9c9ca25dcfa7dc4e4 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Python-2.0 + license_family: PSF + purls: + - pkg:pypi/regex?source=hash-mapping + size: 402821 + timestamp: 1730952378415 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/regex-2024.11.6-py312hb2c0f52_0.conda + sha256: ec2c416860de29224e447e2031f8686a05476759c17da1f32f61d4307e540ec8 + md5: fa8b589107567f532fa1380e66f91776 + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Python-2.0 + license_family: PSF + purls: + - pkg:pypi/regex?source=hash-mapping + size: 398947 + timestamp: 1730952477463 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/regex-2024.11.6-py312hea69d52_0.conda + sha256: dcdec32f2c7dd37986baa692bedf9db126ad34e92e5e9b64f707cba3d04d2525 + md5: e73cda1f18846b608284bd784f061eac + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Python-2.0 + license_family: PSF + purls: + - pkg:pypi/regex?source=hash-mapping + size: 366374 + timestamp: 1730952427552 +- conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda + sha256: d701ca1136197aa121bbbe0e8c18db6b5c94acbd041c2b43c70e5ae104e1d8ad + md5: a9b9368f3701a417eac9edbcae7cb737 + depends: + - certifi >=2017.4.17 + - charset-normalizer >=2,<4 + - idna >=2.5,<4 + - python >=3.9 + - urllib3 >=1.21.1,<3 + constrains: + - chardet >=3.0.2,<6 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/requests?source=hash-mapping + size: 58723 + timestamp: 1733217126197 +- conda: https://conda.anaconda.org/conda-forge/linux-64/s2n-1.5.11-h072c03f_0.conda + sha256: cfdd98c8f9a1e5b6f9abce5dac6d590cc9fe541a08466c9e4a26f90e00b569e3 + md5: 5e8060d52f676a40edef0006a75c718f + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - openssl >=3.4.0,<4.0a0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 356213 + timestamp: 1737146304079 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/s2n-1.5.11-h3caee7a_0.conda + sha256: 5a7ae66f96be24c3b2007139b6c3701ab015b4b4eb4eccfdd07be97710243a47 + md5: 1517c0518f8a06a48a15f41d94252874 + depends: + - libgcc >=13 + - openssl >=3.4.0,<4.0a0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 352811 + timestamp: 1737146319512 +- conda: https://conda.anaconda.org/conda-forge/linux-64/safetensors-0.5.3-py312h12e396e_0.conda + sha256: 23dec8105d34e51cc2269a79680a666351233e2dc171ff14c46d3455d2c22080 + md5: fd1fc1f1e6ceee16d9a58d3ff5a57c7f + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - __glibc >=2.17 + arch: x86_64 + platform: linux + license: Apache-2.0 + purls: + - pkg:pypi/safetensors?source=compressed-mapping + size: 431388 + timestamp: 1740651706122 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/safetensors-0.5.3-py312h8cbf658_0.conda + sha256: 24ca173b9f39d5e5cabc6ea7e570b500682669e5910510020549f8696e29992d + md5: eb2d82d057535f4fb3182f43df429495 + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - __glibc >=2.17 + arch: aarch64 + platform: linux + license: Apache-2.0 + purls: + - pkg:pypi/safetensors?source=hash-mapping + size: 417509 + timestamp: 1740651719895 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/safetensors-0.5.3-py312hcd83bfe_0.conda + sha256: 1d0412be1b16df769c69d537907e690be50d06d05f757ba2451facb6883a3eb3 + md5: 68b99db908e1ec63c0cacae262a835e9 + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - __osx >=11.0 + arch: arm64 + platform: osx + license: Apache-2.0 + purls: + - pkg:pypi/safetensors?source=compressed-mapping + size: 382676 + timestamp: 1740651813281 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-0.2.0-hc8f76dd_10.conda + sha256: a1bde55ceb9dc5bd7879283d0f594a6ce65c07fda3de76230c65a4a5df47858a + md5: 480e915dfc6c592615ef6f217e615aa6 + depends: + - libsentencepiece 0.2.0 h8e10757_10 + - python_abi 3.12.* *_cp312 + - sentencepiece-python 0.2.0 py312hb6b8a2b_10 + - sentencepiece-spm 0.2.0 h8e10757_10 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 19470 + timestamp: 1735628377167 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-0.2.0-h6c1b121_10.conda + sha256: 846d885a560fbb4375b645e7caf2f756ef88bbeb441b670375da0090aaa427fb + md5: 33a89eb1dedae8eb7222b0a89856f337 + depends: + - libsentencepiece 0.2.0 h6164ad9_10 + - python_abi 3.12.* *_cp312 + - sentencepiece-python 0.2.0 py312h197ff68_10 + - sentencepiece-spm 0.2.0 h6164ad9_10 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 19686 + timestamp: 1735628718991 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-0.2.0-h22a84ea_10.conda + sha256: 526c934b897131bd274697649c3b1c492a7d66c03368885a954112468b3c1424 + md5: 346abe448f69949a65473b336856860a + depends: + - libsentencepiece 0.2.0 he13a0af_10 + - python_abi 3.12.* *_cp312 + - sentencepiece-python 0.2.0 py312h155166a_10 + - sentencepiece-spm 0.2.0 he13a0af_10 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 19759 + timestamp: 1735628533490 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-python-0.2.0-py312hb6b8a2b_10.conda + sha256: 37df7fb659564587b950b39c936769d9b5095afb7bc223f42d6248a5540c6567 + md5: 7908b7b977e2e123a5f6a29906f2ce44 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 h8e10757_10 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/sentencepiece?source=hash-mapping + size: 2411182 + timestamp: 1735628106455 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-python-0.2.0-py312h197ff68_10.conda + sha256: a7c2c19cc397c7632e2630af49ddcff128f145c93ea493421e6f42bfa5e1d30b + md5: 5642e4545a3cf03e446fb3b3e9fd723b + depends: + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 h6164ad9_10 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/sentencepiece?source=hash-mapping + size: 2458076 + timestamp: 1735628298246 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-python-0.2.0-py312h155166a_10.conda + sha256: 2d59614aeafbf54cc718805798c11c2d0a3b4b8d947d1bd81c87c484b4883077 + md5: 6e11367ef670296fce01fc9860be944d + depends: + - __osx >=11.0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 he13a0af_10 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/sentencepiece?source=hash-mapping + size: 2433303 + timestamp: 1735628083958 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-spm-0.2.0-h8e10757_10.conda + sha256: 6b55e1121545357d63c3aa0766931720e8aafc52d88641ba7631c8cbaa68c52f + md5: e977b7be5ac26c55825e121e00b90493 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 h8e10757_10 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 89076 + timestamp: 1735628334078 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-spm-0.2.0-h6164ad9_10.conda + sha256: b98fc1028a8e8fbf309af383f9c837290a14e076e6c5533dc251694ea33ffc6e + md5: a4b75936c01dca3f089f02752b7ee325 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 h6164ad9_10 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 85983 + timestamp: 1735628693813 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-spm-0.2.0-he13a0af_10.conda + sha256: b760aeee02e2afbfcce3f559e8a227aa4c94139157b1702fdfb41a057dad0e52 + md5: 9b7300f23cd330da8664cd072c162e5f + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 he13a0af_10 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 83826 + timestamp: 1735628514667 +- pypi: https://download.pytorch.org/whl/setuptools-70.2.0-py3-none-any.whl#sha256=b8b8060bb426838fbe942479c90296ce976249451118ef566a5a0b7d8b78fb05 + name: setuptools + version: 70.2.0 + sha256: b8b8060bb426838fbe942479c90296ce976249451118ef566a5a0b7d8b78fb05 + requires_dist: + - sphinx>=3.5 ; extra == 'doc' + - jaraco-packaging>=9.3 ; extra == 'doc' + - rst-linker>=1.9 ; extra == 'doc' + - furo ; extra == 'doc' + - sphinx-lint ; extra == 'doc' + - jaraco-tidelift>=1.4 ; extra == 'doc' + - pygments-github-lexers==0.0.5 ; extra == 'doc' + - sphinx-favicon ; extra == 'doc' + - sphinx-inline-tabs ; extra == 'doc' + - sphinx-reredirects ; extra == 'doc' + - sphinxcontrib-towncrier ; extra == 'doc' + - sphinx-notfound-page>=1,<2 ; extra == 'doc' + - pyproject-hooks!=1.1 ; extra == 'doc' + - pytest>=6,!=8.1.* ; extra == 'test' + - pytest-checkdocs>=2.4 ; extra == 'test' + - pytest-cov ; extra == 'test' + - pytest-mypy ; extra == 'test' + - pytest-enabler>=2.2 ; extra == 'test' + - virtualenv>=13.0.0 ; extra == 'test' + - wheel ; extra == 'test' + - pip>=19.1 ; extra == 'test' + - packaging>=23.2 ; extra == 'test' + - jaraco-envs>=2.2 ; extra == 'test' + - pytest-xdist>=3 ; extra == 'test' + - jaraco-path>=3.2.0 ; extra == 'test' + - build[virtualenv]>=1.0.3 ; extra == 'test' + - filelock>=3.4.0 ; extra == 'test' + - ini2toml[lite]>=0.14 ; extra == 'test' + - tomli-w>=1.0.0 ; extra == 'test' + - pytest-timeout ; extra == 'test' + - pytest-home>=0.5 ; extra == 'test' + - mypy==1.10.0 ; extra == 'test' + - tomli ; extra == 'test' + - importlib-metadata ; extra == 'test' + - pytest-subprocess ; extra == 'test' + - pyproject-hooks!=1.1 ; extra == 'test' + - jaraco-test ; extra == 'test' + - jaraco-develop>=7.21 ; python_full_version >= '3.9' and sys_platform != 'cygwin' and extra == 'test' + - pytest-ruff>=0.3.2 ; sys_platform != 'cygwin' and extra == 'test' + - pytest-perf ; sys_platform != 'cygwin' and extra == 'test' + requires_python: '>=3.8' +- conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + sha256: 41db0180680cc67c3fa76544ffd48d6a5679d96f4b71d7498a759e94edc9a2db + md5: a451d576819089b0d672f18768be0f65 + depends: + - python >=3.9 + license: MIT + license_family: MIT + purls: + - pkg:pypi/six?source=hash-mapping + size: 16385 + timestamp: 1733381032766 +- conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-h8bd8927_1.conda + sha256: ec91e86eeb2c6bbf09d51351b851e945185d70661d2ada67204c9a6419d282d3 + md5: 3b3e64af585eadfb52bb90b553db5edf + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 42739 + timestamp: 1733501881851 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-hd4fb6f5_1.conda + sha256: c4a07ae5def8d55128f25a567a296ef9d7bf99a3bc79d46bd5160c076a5f50af + md5: 2fcc6cd1e5550deb509073fd2e6693e1 + depends: + - libgcc >=13 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 43032 + timestamp: 1733501964775 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-h98b9ce2_1.conda + sha256: 4242f95b215127a006eb664fe26ed5a82df87e90cbdbc7ce7ff4971f0720997f + md5: ded86dee325290da2967a3fea3800eb5 + depends: + - __osx >=11.0 + - libcxx >=18 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 35857 + timestamp: 1733502172664 +- pypi: https://download.pytorch.org/whl/sympy-1.13.1-py3-none-any.whl#sha256=db36cdc64bf61b9b24578b6f7bab1ecdd2452cf008f34faa33776680c26d66f8 + name: sympy + version: 1.13.1 + sha256: db36cdc64bf61b9b24578b6f7bab1ecdd2452cf008f34faa33776680c26d66f8 + requires_dist: + - mpmath>=1.1.0,<1.4 + - pytest>=7.1.0 ; extra == 'dev' + - hypothesis>=6.70.0 ; extra == 'dev' + requires_python: '>=3.8' +- conda: https://conda.anaconda.org/conda-forge/noarch/sympy-1.13.3-pyh2585a3b_105.conda + sha256: 929d939c5a8bcdc10a17501890918da68cf14a5883b36fddf77b8f0fbf040be2 + md5: 254cd5083ffa04d96e3173397a3d30f4 + depends: + - __unix + - cpython + - gmpy2 >=2.0.8 + - mpmath >=0.19 + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/sympy?source=hash-mapping + size: 4523617 + timestamp: 1736248315124 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tbb-2021.13.0-hceb3a55_1.conda + sha256: 65463732129899770d54b1fbf30e1bb82fdebda9d7553caf08d23db4590cd691 + md5: ba7726b8df7b9d34ea80e82b097a4893 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libhwloc >=2.11.2,<2.11.3.0a0 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 175954 + timestamp: 1732982638805 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda + sha256: e0569c9caa68bf476bead1bed3d79650bb080b532c64a4af7d8ca286c08dea4e + md5: d453b98d9c83e71da0741bb0ff4d76bc + depends: + - libgcc-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 + arch: x86_64 + platform: linux + license: TCL + license_family: BSD + purls: [] + size: 3318875 + timestamp: 1699202167581 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda + sha256: 7fa27cc512d3a783f38bd16bbbffc008807372499d5b65d089a8e43bde9db267 + md5: f75105e0585851f818e0009dd1dde4dc + depends: + - libgcc-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 + arch: aarch64 + platform: linux + license: TCL + license_family: BSD + purls: [] + size: 3351802 + timestamp: 1695506242997 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda + sha256: 72457ad031b4c048e5891f3f6cb27a53cb479db68a52d965f796910e71a403a8 + md5: b50a57ba89c32b62428b71a875291c9b + depends: + - libzlib >=1.2.13,<2.0.0a0 + arch: arm64 + platform: osx + license: TCL + license_family: BSD + purls: [] + size: 3145523 + timestamp: 1699202432999 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.21.0-py312h8360d73_0.conda + sha256: 4f504a5e9d77c6d88a8f735c4319429d8bf40b742384f908a2efe0a09acc3cc5 + md5: f953aa733207f3d37acf4a3efbedba89 + depends: + - __glibc >=2.17,<3.0.a0 + - huggingface_hub >=0.16.4,<1.0 + - libgcc >=13 + - libstdcxx >=13 + - openssl >=3.4.0,<4.0a0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - __glibc >=2.17 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/tokenizers?source=hash-mapping + size: 2258007 + timestamp: 1732734202127 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.21.0-py312ha0d6ea1_0.conda + sha256: ef0f4d4e2c798b1821187ea0ba4c86484e48abaa0e9a19fe68030fa7ff5dde84 + md5: 077f48c9e0c08a30d842e15c51df4143 + depends: + - huggingface_hub >=0.16.4,<1.0 + - libgcc >=13 + - libstdcxx >=13 + - openssl >=3.4.0,<4.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - __glibc >=2.17 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/tokenizers?source=hash-mapping + size: 2331194 + timestamp: 1732734303196 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.21.0-py312hf3e4074_0.conda + sha256: 5d395333fcb22dc611140286c1f2ea8b3fa220a4931c583587cb612238091555 + md5: 4c732c74b485ef7ac8ec1c548dd45e8e + depends: + - __osx >=11.0 + - huggingface_hub >=0.16.4,<1.0 + - libcxx >=18 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - __osx >=11.0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/tokenizers?source=hash-mapping + size: 1931389 + timestamp: 1732734727624 +- pypi: https://download.pytorch.org/whl/cpu/torch-2.5.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl#sha256=36d1be99281b6f602d9639bd0af3ee0006e7aab16f6718d86f709d395b6f262c + name: torch + version: 2.5.1 + sha256: 36d1be99281b6f602d9639bd0af3ee0006e7aab16f6718d86f709d395b6f262c + requires_dist: + - filelock + - typing-extensions>=4.8.0 + - networkx + - jinja2 + - fsspec + - nvidia-cuda-nvrtc-cu12==12.4.127 ; platform_machine == 'x86_64' and platform_system == 'Linux' + - nvidia-cuda-runtime-cu12==12.4.127 ; platform_machine == 'x86_64' and platform_system == 'Linux' + - nvidia-cuda-cupti-cu12==12.4.127 ; platform_machine == 'x86_64' and platform_system == 'Linux' + - nvidia-cudnn-cu12==9.1.0.70 ; platform_machine == 'x86_64' and platform_system == 'Linux' + - nvidia-cublas-cu12==12.4.5.8 ; platform_machine == 'x86_64' and platform_system == 'Linux' + - nvidia-cufft-cu12==11.2.1.3 ; platform_machine == 'x86_64' and platform_system == 'Linux' + - nvidia-curand-cu12==10.3.5.147 ; platform_machine == 'x86_64' and platform_system == 'Linux' + - nvidia-cusolver-cu12==11.6.1.9 ; platform_machine == 'x86_64' and platform_system == 'Linux' + - nvidia-cusparse-cu12==12.3.1.170 ; platform_machine == 'x86_64' and platform_system == 'Linux' + - nvidia-nccl-cu12==2.21.5 ; platform_machine == 'x86_64' and platform_system == 'Linux' + - nvidia-nvtx-cu12==12.4.127 ; platform_machine == 'x86_64' and platform_system == 'Linux' + - nvidia-nvjitlink-cu12==12.4.127 ; platform_machine == 'x86_64' and platform_system == 'Linux' + - sympy==1.12.1 ; python_full_version == '3.8.*' + - setuptools ; python_full_version >= '3.12' + - sympy==1.13.1 ; python_full_version >= '3.9' + - opt-einsum>=3.3 ; extra == 'opt-einsum' + - optree>=0.12.0 ; extra == 'optree' + requires_python: '>=3.8.0' +- conda: https://conda.anaconda.org/pytorch/linux-64/torchtriton-3.1.0-py312.tar.bz2 + build_number: 1 + sha256: f0beb429b3834a3796626642829a7e4bb9d4fe6477c8dc614a55e5c4f15a6a05 + md5: bb4b2d07cb6b9b476e78740c08ba69fe + depends: + - filelock + - python >=3.12,<3.13.0a0 + - pytorch + arch: x86_64 + platform: linux + license: MIT + purls: + - pkg:pypi/triton?source=hash-mapping + size: 244939186 + timestamp: 1727971107041 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda + sha256: 062a3a3a37fa8615ce57929ba7e982c76f5a5810bcebd435950f6d6c4147c310 + md5: e417822cb989e80a0d2b1b576fdd1657 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/tornado?source=hash-mapping + size: 840414 + timestamp: 1732616043734 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py312h52516f5_0.conda + sha256: 4c19a544354172b2273553267e734795a6da3c78a04c2d19f8e9e159ca3178bc + md5: e28996d9d2d44d777b7e6fb12f63715b + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/tornado?source=hash-mapping + size: 841662 + timestamp: 1732616934923 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda + sha256: 964a2705a36c50040c967b18b45b9cc8de3c2aff4af546979a574e0b38e58e39 + md5: fb0605888a475d6a380ae1d1a819d976 + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/tornado?source=hash-mapping + size: 842549 + timestamp: 1732616081362 +- conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + sha256: 11e2c85468ae9902d24a27137b6b39b4a78099806e551d390e394a8c34b48e40 + md5: 9efbfdc37242619130ea42b1cc4ed861 + depends: + - colorama + - python >=3.9 + license: MPL-2.0 or MIT + purls: + - pkg:pypi/tqdm?source=hash-mapping + size: 89498 + timestamp: 1735661472632 +- conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + sha256: f39a5620c6e8e9e98357507262a7869de2ae8cc07da8b7f84e517c9fd6c2b959 + md5: 019a7385be9af33791c989871317e1ed + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/traitlets?source=hash-mapping + size: 110051 + timestamp: 1733367480074 +- conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.49.0-pyhd8ed1ab_0.conda + sha256: d522d7dda6ebe296b20955b1be3eccc5d5cfdfd413457c1236323b6a08fffd9e + md5: e63e78e545fcf857cac3372edeb67ea4 + depends: + - datasets !=2.5.0 + - filelock + - huggingface_hub >=0.23.0,<1.0 + - numpy >=1.17 + - packaging >=20.0 + - python >=3.9 + - pyyaml >=5.1 + - regex !=2019.12.17 + - requests + - safetensors >=0.4.1 + - tokenizers >=0.21,<0.22 + - tqdm >=4.27 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/transformers?source=hash-mapping + size: 3514640 + timestamp: 1739826374204 +- conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda + noarch: python + sha256: c8e9c1c467b5f960b627d7adc1c65fece8e929a3de89967e91ef0f726422fd32 + md5: b6a408c64b78ec7b779a3e5c7a902433 + depends: + - typing_extensions 4.12.2 pyha770c72_1 + license: PSF-2.0 + license_family: PSF + purls: [] + size: 10075 + timestamp: 1733188758872 +- conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + sha256: 337be7af5af8b2817f115b3b68870208b30c31d3439bec07bfb2d8f4823e3568 + md5: d17f13df8b65464ca316cbc000a3cb64 + depends: + - python >=3.9 + license: PSF-2.0 + license_family: PSF + purls: + - pkg:pypi/typing-extensions?source=hash-mapping + size: 39637 + timestamp: 1733188758212 +- conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + sha256: c4b1ae8a2931fe9b274c44af29c5475a85b37693999f8c792dad0f8c6734b1de + md5: dbcace4706afdfb7eb891f7b37d07c04 + license: LicenseRef-Public-Domain + purls: [] + size: 122921 + timestamp: 1737119101255 +- conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda + sha256: 114919ffa80c328127dab9c8e7a38f9d563c617691fb81fccb11c1e86763727e + md5: 32674f8dbfb7b26410ed580dd3c10a29 + depends: + - brotli-python >=1.0.9 + - h2 >=4,<5 + - pysocks >=1.5.6,<2.0,!=1.5.7 + - python >=3.9 + - zstandard >=0.18.0 + license: MIT + license_family: MIT + purls: + - pkg:pypi/urllib3?source=hash-mapping + size: 100102 + timestamp: 1734859520452 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xxhash-0.8.3-hb9d3cd8_0.conda + sha256: 3bbc35b9ee44ffea1de441f906ba05139873a28325f8a8ed152e17af30e62232 + md5: 2ef1822d8168ed5d79ab1bf01088419a + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 107794 + timestamp: 1735848927308 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xxhash-0.8.3-h86ecc28_0.conda + sha256: f210d0b6b8543acef9b73db43a557c94e695f9dfaa2f6989057c449d9c3e1239 + md5: d992916b6e4f6e7412332bbcd41c5aa2 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 104556 + timestamp: 1735848964267 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/xxhash-0.8.3-h5505292_0.conda + sha256: 43573d504e7edc4b876a9058dc316aa9851ced1d433c2b569d583c2db22c76e2 + md5: 92a98c1bbae4729dfd0216ca22c21858 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 98318 + timestamp: 1735849111725 +- conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 + sha256: a4e34c710eeb26945bdbdaba82d3d74f60a78f54a874ec10d373811a5d217535 + md5: 4cb3ad778ec2d5a7acbdf254eb1c42ae + depends: + - libgcc-ng >=9.4.0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 89141 + timestamp: 1641346969816 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yaml-0.2.5-hf897c2e_2.tar.bz2 + sha256: 8bc601d6dbe249eba44b3c456765265cd8f42ef1e778f8df9b0c9c88b8558d7e + md5: b853307650cb226731f653aa623936a4 + depends: + - libgcc-ng >=9.4.0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 92927 + timestamp: 1641347626613 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 + sha256: 93181a04ba8cfecfdfb162fc958436d868cc37db504c58078eab4c1a3e57fbb7 + md5: 4bb3f014845110883a3c5ee811fd84b4 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 88016 + timestamp: 1641347076660 +- conda: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.18.3-py312h178313f_1.conda + sha256: 6b054c93dd19fd7544af51b41a8eacca2ab62271f6c0c5a2a0cffe80dc37a0ce + md5: 6822c49f294d4355f19d314b8b6063d8 + depends: + - __glibc >=2.17,<3.0.a0 + - idna >=2.0 + - libgcc >=13 + - multidict >=4.0 + - propcache >=0.2.1 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/yarl?source=hash-mapping + size: 152305 + timestamp: 1737575898300 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.18.3-py312hcc812fe_1.conda + sha256: bfa211c0dd5dbb308788f055277dc428b7923ceb2de6a22ea98bc17cf306f9f5 + md5: d14c78abdd6109e2b7162f53b6cc1e77 + depends: + - idna >=2.0 + - libgcc >=13 + - multidict >=4.0 + - propcache >=0.2.1 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/yarl?source=hash-mapping + size: 149654 + timestamp: 1737576065314 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.18.3-py312h998013c_1.conda + sha256: 48821d23567ca0f853eee6f7812c74392867e123798b5b3c44f58758d8eb580e + md5: 092d3b40acc67c470f379049be343a7a + depends: + - __osx >=11.0 + - idna >=2.0 + - multidict >=4.0 + - propcache >=0.2.1 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/yarl?source=hash-mapping + size: 145543 + timestamp: 1737576074753 +- conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda + sha256: a4dc72c96848f764bb5a5176aa93dd1e9b9e52804137b99daeebba277b31ea10 + md5: 3947a35e916fcc6b9825449affbf4214 + depends: + - __glibc >=2.17,<3.0.a0 + - krb5 >=1.21.3,<1.22.0a0 + - libgcc >=13 + - libsodium >=1.0.20,<1.0.21.0a0 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: MPL-2.0 + license_family: MOZILLA + purls: [] + size: 335400 + timestamp: 1731585026517 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zeromq-4.3.5-h5efb499_7.conda + sha256: a6003096dc0570a86492040ba32b04ce7662b159600be2252b7a0dfb9414e21c + md5: f2f3282559a4b87b7256ecafb4610107 + depends: + - krb5 >=1.21.3,<1.22.0a0 + - libgcc >=13 + - libsodium >=1.0.20,<1.0.21.0a0 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: MPL-2.0 + license_family: MOZILLA + purls: [] + size: 371419 + timestamp: 1731589490850 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda + sha256: 9e585569fe2e7d3bea71972cd4b9f06b1a7ab8fa7c5139f92a31cbceecf25a8a + md5: f7e6b65943cb73bce0143737fded08f1 + depends: + - __osx >=11.0 + - krb5 >=1.21.3,<1.22.0a0 + - libcxx >=18 + - libsodium >=1.0.20,<1.0.21.0a0 + arch: arm64 + platform: osx + license: MPL-2.0 + license_family: MOZILLA + purls: [] + size: 281565 + timestamp: 1731585108039 +- conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + sha256: 567c04f124525c97a096b65769834b7acb047db24b15a56888a322bf3966c3e1 + md5: 0c3cc595284c5e8f0f9900a9b228a332 + depends: + - python >=3.9 + license: MIT + license_family: MIT + purls: + - pkg:pypi/zipp?source=hash-mapping + size: 21809 + timestamp: 1732827613585 +- conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.1-hb9d3cd8_2.conda + sha256: 5d7c0e5f0005f74112a34a7425179f4eb6e73c92f5d109e6af4ddeca407c92ab + md5: c9f075ab2f33b3bbee9e62d4ad0a6cd8 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libzlib 1.3.1 hb9d3cd8_2 + arch: x86_64 + platform: linux + license: Zlib + license_family: Other + purls: [] + size: 92286 + timestamp: 1727963153079 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zlib-1.3.1-h86ecc28_2.conda + sha256: b4f649aa3ecdae384d5dad7074e198bff120edd3dfb816588e31738fc6d627b1 + md5: bc230abb5d21b63ff4799b0e75204783 + depends: + - libgcc >=13 + - libzlib 1.3.1 h86ecc28_2 + arch: aarch64 + platform: linux + license: Zlib + license_family: Other + purls: [] + size: 95582 + timestamp: 1727963203597 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zlib-1.3.1-h8359307_2.conda + sha256: 58f8860756680a4831c1bf4f294e2354d187f2e999791d53b1941834c4b37430 + md5: e3170d898ca6cb48f1bb567afb92f775 + depends: + - __osx >=11.0 + - libzlib 1.3.1 h8359307_2 + arch: arm64 + platform: osx + license: Zlib + license_family: Other + purls: [] + size: 77606 + timestamp: 1727963209370 +- conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312hef9b889_1.conda + sha256: b97015e146437283f2213ff0e95abdc8e2480150634d81fbae6b96ee09f5e50b + md5: 8b7069e9792ee4e5b4919a7a306d2e67 + depends: + - __glibc >=2.17,<3.0.a0 + - cffi >=1.11 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - zstd >=1.5.6,<1.5.7.0a0 + - zstd >=1.5.6,<1.6.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/zstandard?source=hash-mapping + size: 419552 + timestamp: 1725305670210 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstandard-0.23.0-py312hb698573_1.conda + sha256: 2681c2a249752bdc7978e59ee2f34fcdfcbfda80029b84b8e5fec8dbc9e3af25 + md5: ffcb8e97e62af42075e0e5f46bb9856e + depends: + - cffi >=1.11 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - zstd >=1.5.6,<1.5.7.0a0 + - zstd >=1.5.6,<1.6.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/zstandard?source=hash-mapping + size: 392496 + timestamp: 1725305808244 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py312h15fbf35_1.conda + sha256: d00ca25c1e28fd31199b26a94f8c96574475704a825d244d7a6351ad3745eeeb + md5: a4cde595509a7ad9c13b1a3809bcfe51 + depends: + - __osx >=11.0 + - cffi >=1.11 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - zstd >=1.5.6,<1.5.7.0a0 + - zstd >=1.5.6,<1.6.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/zstandard?source=hash-mapping + size: 330788 + timestamp: 1725305806565 +- conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda + sha256: c558b9cc01d9c1444031bd1ce4b9cff86f9085765f17627a6cd85fc623c8a02b + md5: 4d056880988120e29d75bfff282e0f45 + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 554846 + timestamp: 1714722996770 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.6-h02f22dd_0.conda + sha256: 484f9d0722c77685ae379fbff3ccd662af9ead7e59eb39cd6d0c677cdf25ff6c + md5: be8d5f8cf21aed237b8b182ea86b3dd6 + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 539937 + timestamp: 1714723130243 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.6-hb46c0d2_0.conda + sha256: 2d4fd1ff7ee79cd954ca8e81abf11d9d49954dd1fef80f27289e2402ae9c2e09 + md5: d96942c06c3e84bfcc5efb038724a7fd + depends: + - __osx >=11.0 + - libzlib >=1.2.13,<2.0.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 405089 + timestamp: 1714723101397 diff --git a/examples/inference/bert-python-torchscript/magic.lock b/examples/inference/bert-python-torchscript/magic.lock new file mode 100644 index 0000000000..092e126f9f --- /dev/null +++ b/examples/inference/bert-python-torchscript/magic.lock @@ -0,0 +1,7480 @@ +version: 6 +environments: + default: + channels: + - url: https://conda.anaconda.org/conda-forge/ + - url: https://conda.modular.com/max-nightly/ + - url: https://conda.anaconda.org/pytorch/ + indexes: + - https://pypi.org/simple + - https://download.pytorch.org/whl/cpu + packages: + linux-64: + - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_kmp_llvm.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.13-py312h178313f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.1.0-pyh71513ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.1-h205f482_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.1-h1a47875_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.10.6-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.3.0-h4e1184b_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.0-h7959bf6_11.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.2-hefd7a92_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-h173a860_6.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h11f4f37_12.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.9-he1b24dc_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.2-h4e1184b_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-h4e1184b_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.9-he0e7f3f_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.489-h4d475cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.10.0-h113e628_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.13.0-h3cf044e_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-common-cpp-12.8.0-h736e048_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-files-datalake-cpp-12.12.0-ha633028_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/blas-2.116-mkl.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/blas-devel-3.9.0-16_linux64_mkl.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py312h2ec8cdc_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.4-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2025.1.31-hbcca054_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.1.31-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py312h06ac9bb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.12.9-py312hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-cudart-12.4.127-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cuda-cudart_linux-64-12.4.127-h85509e4_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-cupti-12.4.127-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-libraries-12.4.1-ha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-nvrtc-12.4.127-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-nvtx-12.4.127-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-opencl-12.4.127-he02047a_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cuda-runtime-12.4.1-ha804496_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cuda-version-12.4-h3060b56_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-3.3.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.8-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/frozenlist-1.5.0-py312h178313f_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.12.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gflags-2.2.2-h5888daf_1005.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/glog-0.7.1-hbabe93e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gmp-6.3.0-hac33072_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gmpy2-2.1.5-py312h7201bc8_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.29.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-19.0.1-hfa2a6e7_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-19.0.1-hcb10f89_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-19.0.1-hcb10f89_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-19.0.1-h08228c5_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-16_linux64_mkl.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.1.0-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-16_linux64_mkl.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcrc32c-1.1.2-h9c3ff4c_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcublas-12.4.5.8-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcufft-11.2.1.3-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcufile-1.9.1.3-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcurand-10.3.5.147-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.12.1-h332b0f4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcusolver-11.6.1.9-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcusparse-12.3.1.170-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libevent-2.1.12-hf998b51_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h767d61c_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-ng-14.2.0-h69a702a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hf1ad2bd_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.35.0-h2b5623c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.35.0-h0121fbd_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.67.1-h25350d4_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libhwloc-2.11.2-default_h0d58e46_1001.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h4ce23a2_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-16_linux64_mkl.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapacke-3.9.0-16_linux64_mkl.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnpp-12.2.5.30-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnvfatbin-12.4.127-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnvjitlink-12.4.127-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnvjpeg-12.3.1.117-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-1.18.0-hfcad708_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-headers-1.18.0-ha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-19.0.1-h081d1f1_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsentencepiece-0.2.0-h8e10757_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.49.1-hee588c1_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hf672d98_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-h8f9b012_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libthrift-0.21.0-h0e7cc3e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.10.0-h4c51ac1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.6-h8d12d68_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/llvm-openmp-15.0.7-h0cdce71_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.10.0-h5888daf_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-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022718-release.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-2022.1.0-h84fe81f_915.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-devel-2022.1.0-ha770c72_916.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-include-2022.1.0-h84fe81f_915.tar.bz2 + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022718-release.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/mpc-1.3.1-h24ddda3_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/mpfr-4.2.1-h90cbb55_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mpmath-1.3.0-pyhd8ed1ab_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.16-py312h66e93f0_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-h2d0b736_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/nlohmann_json-3.11.3-he02047a_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ocl-icd-2.3.2-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/opencl-headers-2024.10.24-h5888daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.1-h7b32b05_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/orc-2.0.3-h12ee42a_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.3-py312hf9745cd_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/prometheus-cpp-1.3.0-ha5d0236_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.1-py312h178313f_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-19.0.1-py312h7900ff3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-19.0.1-py312h01725c0_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.9-h9e4cc4f_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-xxhash-3.5.0-py312h66e93f0_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda + - conda: https://conda.anaconda.org/pytorch/linux-64/pytorch-2.5.1-py3.12_cuda12.4_cudnn9.1.0_0.tar.bz2 + - conda: https://conda.anaconda.org/pytorch/linux-64/pytorch-cuda-12.4-hc786d27_7.tar.bz2 + - conda: https://conda.anaconda.org/pytorch/noarch/pytorch-mutex-1.0-cuda.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py312h178313f_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.1-py312hbf22597_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/re2-2024.07.02-h9925aae_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda + - 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/linux-64/s2n-1.5.11-h072c03f_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/safetensors-0.5.3-py312h12e396e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-0.2.0-hc8f76dd_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-python-0.2.0-py312hb6b8a2b_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-spm-0.2.0-h8e10757_10.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-h8bd8927_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sympy-1.13.3-pyh2585a3b_105.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tbb-2021.13.0-hceb3a55_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.21.0-py312h8360d73_0.conda + - conda: https://conda.anaconda.org/pytorch/linux-64/torchtriton-3.1.0-py312.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.49.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xxhash-0.8.3-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.18.3-py312h178313f_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.1-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312hef9b889_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda + linux-aarch64: + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.13-py312hcc812fe_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.1.0-pyh71513ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.1-hb7ec8d5_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.1-h740c5af_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-common-0.10.6-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-compression-0.3.0-h0f0193d_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-event-stream-0.5.0-hcbd8f92_11.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.2-h3df160d_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-hfd5ba81_6.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h5f50e26_12.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.9-h05b070f_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.2-h0f0193d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h0f0193d_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.9-hab3ce66_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.489-h88461e4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-core-cpp-1.14.0-h1887c18_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-identity-cpp-1.10.0-h47b0b28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-blobs-cpp-12.13.0-h185ecfd_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-common-cpp-12.8.0-h1b94036_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-files-datalake-cpp-12.12.0-h37d6d07_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/brotli-python-1.1.0-py312h6f74592_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h68df207_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/c-ares-1.34.4-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2025.1.31-hcefe29a_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.1.31-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cffi-1.17.1-py312hac81daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-3.3.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.8-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/frozenlist-1.5.0-py312hcc812fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.12.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gflags-2.2.2-h5ad3122_1005.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/glog-0.7.1-h468a4a4_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.29.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/keyutils-1.6.1-h4e544f5_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/krb5-1.21.3-h50a48e9_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h18dbdb1_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-19.0.1-h36213f4_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-19.0.1-h3b568fd_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-19.0.1-h3b568fd_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-19.0.1-h1e9d426_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-31_h1a9f1db_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlicommon-1.1.0-h86ecc28_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlidec-1.1.0-h86ecc28_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlienc-1.1.0-h86ecc28_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-31_hab92f65_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcrc32c-1.1.2-h01db608_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcurl-8.12.1-h6702fde_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20250104-pl5321h976ea20_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libev-4.33-h31becfc_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libevent-2.1.12-h4ba1bb4_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.6.4-h5ad3122_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.4.6-he21f813_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-14.2.0-he277a41_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-14.2.0-he9431aa_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-2.35.0-hccf9d24_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-storage-2.35.0-hb9b2b65_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgrpc-1.67.1-hf7ccdd3_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libiconv-1.18-hc99b53d_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-31_h411afd4_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.4-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnghttp2-1.64.0-hc8609a4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.29-pthreads_h9d3fd7e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopentelemetry-cpp-1.18.0-h60b47f9_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopentelemetry-cpp-headers-1.18.0-h8af1aa0_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-19.0.1-hfc78867_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.3-h44a3b7b_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsentencepiece-0.2.0-h6164ad9_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.20-h68df207_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.49.1-h5eb1b54_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libssh2-1.11.1-ha41c0db_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libthrift-0.21.0-h154c74f_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.10.0-ha346350_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.6-h2e0c361_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.10.0-h5ad3122_1.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022718-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.16-py312hb2c0f52_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-ha32ae93_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/nlohmann_json-3.11.3-h0a1ffab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.1-hd08dc88_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/orc-2.0.3-hdd485aa_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pandas-2.2.3-py312ha2895bd_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/prometheus-cpp-1.3.0-h7938499_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.2.1-py312hcc812fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-19.0.1-py312h8025657_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-19.0.1-py312h66f7834_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.9-h1683364_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-xxhash-3.5.0-py312h52516f5_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.12-5_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyyaml-6.0.2-py312hcc812fe_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyzmq-26.2.1-py312h2427ae1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/re2-2024.07.02-haa97905_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8382b9d_2.conda + - 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/linux-aarch64/s2n-1.5.11-h3caee7a_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/safetensors-0.5.3-py312h8cbf658_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-0.2.0-h6c1b121_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-python-0.2.0-py312h197ff68_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-spm-0.2.0-h6164ad9_10.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-hd4fb6f5_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.21.0-py312ha0d6ea1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py312h52516f5_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.49.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xxhash-0.8.3-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yaml-0.2.5-hf897c2e_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.18.3-py312hcc812fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zeromq-4.3.5-h5efb499_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zlib-1.3.1-h86ecc28_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstandard-0.23.0-py312hb698573_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.6-h02f22dd_0.conda + - pypi: https://download.pytorch.org/whl/Jinja2-3.1.4-py3-none-any.whl#sha256=bc5dd2abb727a5319567b7a813e6a2e7318c39f4f487cfe6c89c6f9c7d25197d + - pypi: https://download.pytorch.org/whl/MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl#sha256=ac07bad82163452a6884fe8fa0963fb98c2346ba78d779ec06bd7a6262132aee + - pypi: https://download.pytorch.org/whl/mpmath-1.3.0-py3-none-any.whl#sha256=a0b2b9fe80bbcd81a6647ff13108738cfb482d481d826cc0e02f5b35e5c88d2c + - pypi: https://download.pytorch.org/whl/networkx-3.3-py3-none-any.whl#sha256=28575580c6ebdaf4505b22c6256a2b9de86b316dc63ba9e93abde3d78dfdbcf2 + - pypi: https://download.pytorch.org/whl/setuptools-70.2.0-py3-none-any.whl#sha256=b8b8060bb426838fbe942479c90296ce976249451118ef566a5a0b7d8b78fb05 + - pypi: https://download.pytorch.org/whl/sympy-1.13.1-py3-none-any.whl#sha256=db36cdc64bf61b9b24578b6f7bab1ecdd2452cf008f34faa33776680c26d66f8 + - pypi: https://download.pytorch.org/whl/cpu/torch-2.5.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl#sha256=36d1be99281b6f602d9639bd0af3ee0006e7aab16f6718d86f709d395b6f262c + osx-arm64: + - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.13-py312h998013c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.1.0-pyh71513ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.1-hfc2798a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.1-hc8a0bd2_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.10.6-h5505292_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-compression-0.3.0-hc8a0bd2_5.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.0-h54f970a_11.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.2-h96aa502_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-haba67d1_6.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h24f418c_12.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.9-hf37e03c_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.2-hc8a0bd2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-hc8a0bd2_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.9-ha81f72f_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.489-h0e5014b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.14.0-hd50102c_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.10.0-hc602bab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-blobs-cpp-12.13.0-h7585a09_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-common-cpp-12.8.0-h9ca1f76_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-files-datalake-cpp-12.12.0-hcdd55da_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py312hde4cb15_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.4-h5505292_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2025.1.31-hf0a4a13_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.1.31-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.1-py312h0fad829_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.12.9-py312hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-3.3.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.8-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/frozenlist-1.5.0-py312h998013c_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.12.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gflags-2.2.2-hf9b8971_1005.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/glog-0.7.1-heb240a5_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gmp-6.3.0-h7bae524_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gmpy2-2.1.5-py312h524cf62_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.29.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_h07bc746_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-19.0.1-h0945df6_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-19.0.1-hf07054f_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-19.0.1-hf07054f_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-19.0.1-h4239455_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-19_osxarm64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.1.0-hd74edd7_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.1.0-hd74edd7_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlienc-1.1.0-hd74edd7_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-19_osxarm64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcrc32c-1.1.2-hbdafb3b_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.12.1-h73640d1_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libev-4.33-h93a5062_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libevent-2.1.12-h2757513_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.4-h286801f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-2.35.0-hdbe95d5_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-storage-2.35.0-h7081f7f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgrpc-1.67.1-h0a426d6_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.18-hfe07756_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-19_osxarm64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.4-h39f12f2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.64.0-h6d7220d_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.24-openmp_hd76b1f2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopentelemetry-cpp-1.18.0-h0c05b2d_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopentelemetry-cpp-headers-1.18.0-hce30654_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-19.0.1-h636d7b7_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.3-h3bd63a1_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h07bc746_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsentencepiece-0.2.0-he13a0af_10.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.1-h3f77e49_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.1-h9cc3647_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libthrift-0.21.0-h64651cc_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.10.0-hda25de7_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.6-hce475f1_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-15.0.7-h7cfbb63_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.10.0-h286801f_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-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022718-release.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/mpc-1.3.1-h8f1351a_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/mpfr-4.2.1-hb693164_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mpmath-1.3.0-pyhd8ed1ab_1.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.16-py312h024a12e_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/osx-arm64/ncurses-6.5-h5e97a16_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/nlohmann_json-3.11.3-h00cdb27_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.1-h81ee809_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/orc-2.0.3-h0ff2369_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.3-py312hcd31e36_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/prometheus-cpp-1.3.0-h0967b3e_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.1-py312h998013c_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-19.0.1-py312h1f38498_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-19.0.1-py312hc40f475_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.9-hc22306f_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-xxhash-3.5.0-py312hea69d52_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-5_cp312.conda + - conda: https://conda.anaconda.org/pytorch/osx-arm64/pytorch-2.5.1-py3.12_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py312h998013c_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.1-py312hf4875e0_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/re2-2024.07.02-h6589ca4_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda + - 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/osx-arm64/safetensors-0.5.3-py312hcd83bfe_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-0.2.0-h22a84ea_10.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-python-0.2.0-py312h155166a_10.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-spm-0.2.0-he13a0af_10.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-h98b9ce2_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sympy-1.13.3-pyh2585a3b_105.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.21.0-py312hf3e4074_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.49.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xxhash-0.8.3-h5505292_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.18.3-py312h998013c_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zlib-1.3.1-h8359307_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py312h15fbf35_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.6-hb46c0d2_0.conda +packages: +- conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 + sha256: fe51de6107f9edc7aa4f786a70f4a883943bc9d39b3bb7307c04c41410990726 + md5: d7c89558ba9fa0495403155b64376d81 + arch: x86_64 + platform: linux + license: None + purls: [] + size: 2562 + timestamp: 1578324546067 +- conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_kmp_llvm.tar.bz2 + build_number: 2 + sha256: 84a66275da3a66e3f3e70e9d8f10496d807d01a9e4ec16cd2274cc5e28c478fc + md5: 562b26ba2e19059551a811e72ab7f793 + depends: + - _libgcc_mutex 0.1 conda_forge + - llvm-openmp >=9.0.1 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 5744 + timestamp: 1650742457817 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2 + build_number: 16 + sha256: 3702bef2f0a4d38bd8288bbe54aace623602a1343c2cfbefd3fa188e015bebf0 + md5: 6168d71addc746e8f2b8d57dfd2edcea + depends: + - libgomp >=7.5.0 + constrains: + - openmp_impl 9999 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 23712 + timestamp: 1650670790230 +- conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.6-pyhd8ed1ab_0.conda + sha256: a2a5579be9fb21f9397f51a4ba09599782c93e9117951a5105d8ee4b80d648c1 + md5: 5b7d3ceeb36e8e6783eae78acd4c18e1 + depends: + - python >=3.9 + license: PSF-2.0 + license_family: PSF + purls: + - pkg:pypi/aiohappyeyeballs?source=compressed-mapping + size: 19236 + timestamp: 1739175837817 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.13-py312h178313f_0.conda + sha256: 985834edea972ddf6c35ab4185fb228440efb845a70a88182895f8f90df4a4c9 + md5: 0ea623ee1f29a7e1d703bc3b0ef82306 + depends: + - __glibc >=2.17,<3.0.a0 + - aiohappyeyeballs >=2.3.0 + - aiosignal >=1.1.2 + - attrs >=17.3.0 + - frozenlist >=1.1.1 + - libgcc >=13 + - multidict >=4.5,<7.0 + - propcache >=0.2.0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - yarl >=1.17.0,<2.0 + arch: x86_64 + platform: linux + license: MIT AND Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/aiohttp?source=hash-mapping + size: 915558 + timestamp: 1740482064204 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.13-py312hcc812fe_0.conda + sha256: ca1fa0450decaca810db4b9f5ff1dd00c710fd89767c764a771b5d4ce7a152b0 + md5: 7e952a2d83ebfb371515c010acc110c7 + depends: + - aiohappyeyeballs >=2.3.0 + - aiosignal >=1.1.2 + - attrs >=17.3.0 + - frozenlist >=1.1.1 + - libgcc >=13 + - multidict >=4.5,<7.0 + - propcache >=0.2.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - yarl >=1.17.0,<2.0 + arch: aarch64 + platform: linux + license: MIT AND Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/aiohttp?source=hash-mapping + size: 904149 + timestamp: 1740481643315 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.13-py312h998013c_0.conda + sha256: 84f8c35912bce8c9ee979454a685ec0497fbccd7da86351e8d774ae3e7456055 + md5: d575ea7d96ce2c9fed370d85d3ef464e + depends: + - __osx >=11.0 + - aiohappyeyeballs >=2.3.0 + - aiosignal >=1.1.2 + - attrs >=17.3.0 + - frozenlist >=1.1.1 + - multidict >=4.5,<7.0 + - propcache >=0.2.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - yarl >=1.17.0,<2.0 + arch: arm64 + platform: osx + license: MIT AND Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/aiohttp?source=hash-mapping + size: 885919 + timestamp: 1740482022806 +- conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda + sha256: 7de8ced1918bbdadecf8e1c1c68237fe5709c097bd9e0d254f4cad118f4345d0 + md5: 1a3981115a398535dbe3f6d5faae3d36 + depends: + - frozenlist >=1.1.0 + - python >=3.9 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/aiosignal?source=hash-mapping + size: 13229 + timestamp: 1734342253061 +- conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.1.0-pyh71513ae_0.conda + sha256: 1f267886522dfb9ae4e5ebbc3135b5eb13cff27bdbfe8d881a4d893459166ab4 + md5: 2cc3f588512f04f3a0c64b4e9bedc02d + depends: + - python >=3.9 + license: MIT + license_family: MIT + purls: + - pkg:pypi/attrs?source=compressed-mapping + size: 56370 + timestamp: 1737819298139 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.1-h205f482_0.conda + sha256: ebe5e33249f37f6bb481de99581ebdc92dbfcf1b6915609bcf3c9e78661d6352 + md5: 9c500858e88df50af3cc883d194de78a + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 108111 + timestamp: 1737509831651 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.1-hb7ec8d5_0.conda + sha256: e1e6c9267a4d9af30b1d28c11a9041b17b7840ff83ef08614145a2a4f444f5b4 + md5: 2630f030652970a5531e492f6b2a6dd3 + depends: + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 + - libgcc >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 112658 + timestamp: 1737509863269 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.1-hfc2798a_0.conda + sha256: 5a60d196a585b25d1446fb973009e4e648e8d70beaa2793787243ede6da0fd9a + md5: 0abd67c0f7b60d50348fbb32fef50b65 + depends: + - __osx >=11.0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 92562 + timestamp: 1737509877079 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.1-h1a47875_3.conda + sha256: 095ac824ea9303eff67e04090ae531d9eb33d2bf8f82eaade39b839c421e16e8 + md5: 55a8561fdbbbd34f50f57d9be12ed084 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + - openssl >=3.3.1,<4.0a0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 47601 + timestamp: 1733991564405 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.1-h740c5af_3.conda + sha256: c5c7961d48ca7320ed3560c036f7aa5244df4b85d9657f70aacc5faba3e1509a + md5: 57ed2c445d7ef01d121b9bcea0522913 + depends: + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + - openssl >=3.3.1,<4.0a0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 50036 + timestamp: 1733991581303 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.1-hc8a0bd2_3.conda + sha256: 1f44be36e1daa17b4b081debb8aee492d13571084f38b503ad13e869fef24fe4 + md5: 8b0ce61384e5a33d2b301a64f3d22ac5 + depends: + - __osx >=11.0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - openssl >=3.3.1,<4.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 39925 + timestamp: 1733991649383 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.10.6-hb9d3cd8_0.conda + sha256: 496e92f2150fdc351eacf6e236015deedb3d0d3114f8e5954341cbf9f3dda257 + md5: d7d4680337a14001b0e043e96529409b + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 236574 + timestamp: 1733975453350 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-common-0.10.6-h86ecc28_0.conda + sha256: 57288ec5df35781bea8fc6a8c9099cad6695b747784fc1b8862a0f9e5b3bf5ab + md5: fef806a0f6de853670c746bbece01966 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 259031 + timestamp: 1733975520465 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.10.6-h5505292_0.conda + sha256: 3bde135c8e74987c0f79ecd4fa17ec9cff0d658b3090168727ca1af3815ae57a + md5: 145e5b4c9702ed279d7d68aaf096f77d + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 221863 + timestamp: 1733975576886 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.3.0-h4e1184b_5.conda + sha256: 62ca84da83585e7814a40240a1e750b1563b2680b032a471464eccc001c3309b + md5: 3f4c1197462a6df2be6dc8241828fe93 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 19086 + timestamp: 1733991637424 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-compression-0.3.0-h0f0193d_5.conda + sha256: 3f05d19f68ef800f33d44ea2a4211003124076516c8469abc7d432236344df53 + md5: 3a1421d12435df5b4c412cc4c8fac64d + depends: + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 19740 + timestamp: 1733991625201 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-compression-0.3.0-hc8a0bd2_5.conda + sha256: 47b2813f652ce7e64ac442f771b2a5f7d4af4ad0d07ff51f6075ea80ed2e3f09 + md5: a8b6c17732d14ed49d0e9b59c43186bc + depends: + - __osx >=11.0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 18068 + timestamp: 1733991869211 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.0-h7959bf6_11.conda + sha256: 10d7240c7db0c941fb1a59c4f8ea6689a434b03309ee7b766fa15a809c553c02 + md5: 9b3fb60fe57925a92f399bc3fc42eccf + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 54003 + timestamp: 1734024480949 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-event-stream-0.5.0-hcbd8f92_11.conda + sha256: 79aa363c71c891a27496c0498f8d498b2ddc87b3ccb3b6c9da5b50b05936ebb8 + md5: e0772c59af4243a9b2565baa5d79e5b6 + depends: + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + - libgcc >=13 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 55207 + timestamp: 1734024546663 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.0-h54f970a_11.conda + sha256: f0667935f4e0d4c25e0e51da035640310b5ceeb8f723156734439bde8b848d7d + md5: ba41238f8e653998d7d2f42e3a8db054 + depends: + - __osx >=11.0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + - libcxx >=18 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 47078 + timestamp: 1734024749727 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.2-hefd7a92_4.conda + sha256: 4a330206bd51148f6c13ca0b7a4db40f29a46f090642ebacdeb88b8a4abd7f99 + md5: 5ce4df662d32d3123ea8da15571b6f51 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-compression >=0.3.0,<0.3.1.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 197731 + timestamp: 1734008380764 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.2-h3df160d_4.conda + sha256: 3a1d2d332945306be9d49e569b95e4cc172d825f10e88715513a172f28ebb59e + md5: 28f00aa7fd9556c4c461328cf146c20b + depends: + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-compression >=0.3.0,<0.3.1.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - libgcc >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 190586 + timestamp: 1734008442362 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.2-h96aa502_4.conda + sha256: 22e4737c8a885995b7c1ae1d79c1f6e78d489e16ec079615980fdde067aeaf76 + md5: 495c93a4f08b17deb3c04894512330e6 + depends: + - __osx >=11.0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-compression >=0.3.0,<0.3.1.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 152983 + timestamp: 1734008451473 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-h173a860_6.conda + sha256: 335d822eead0a097ffd23677a288e1f18ea22f47a92d4f877419debb93af0e81 + md5: 9a063178f1af0a898526cc24ba7be486 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + - s2n >=1.5.11,<1.5.12.0a0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 157263 + timestamp: 1737207617838 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-hfd5ba81_6.conda + sha256: d8adfde05cee11057d99c3802e84b2300430a7c7c3c9936165d1d4b25ef59d91 + md5: 4e6771b45cb2b035c62d023dbf0dc000 + depends: + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + - s2n >=1.5.11,<1.5.12.0a0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 160933 + timestamp: 1737207637279 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-haba67d1_6.conda + sha256: 73722dd175af78b6cbfa033066f0933351f5382a1a737f6c6d9b8cfa84022161 + md5: d02e8f40ff69562903e70a1c6c48b009 + depends: + - __osx >=11.0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 136048 + timestamp: 1737207681224 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h11f4f37_12.conda + sha256: 512d3969426152d9d5fd886e27b13706122dc3fa90eb08c37b0d51a33d7bb14a + md5: 96c3e0221fa2da97619ee82faa341a73 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 194672 + timestamp: 1734025626798 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h5f50e26_12.conda + sha256: ffeb9100cc8fd4093e1a6fdfd938bc4a396dd77480b7fb17aa42855a4d5e2c70 + md5: 031ca33115d4b1eeb43f435d6215778c + depends: + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - libgcc >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 169516 + timestamp: 1734025167885 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h24f418c_12.conda + sha256: 96575ea1dd2a9ea94763882e40a66dcbff9c41f702bf37c9514c4c719b3c11dd + md5: c072045a6206f88015d02fcba1705ea1 + depends: + - __osx >=11.0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 134371 + timestamp: 1734025379525 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.9-he1b24dc_1.conda + sha256: 15fbdedc56850f8be5be7a5bcaea1af09c97590e631c024ae089737fc932fc42 + md5: caafc32928a5f7f3f7ef67d287689144 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-auth >=0.8.1,<0.8.2.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + - libgcc >=13 + - openssl >=3.4.0,<4.0a0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 115413 + timestamp: 1737558687616 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.9-h05b070f_1.conda + sha256: 9e7857fbc33eddc291fa09890ce468a92485d3e3e127bc00bbd1803e34121f84 + md5: e0a2869195f069db88b8932f5b00bee5 + depends: + - aws-c-auth >=0.8.1,<0.8.2.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + - libgcc >=13 + - openssl >=3.4.0,<4.0a0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 117875 + timestamp: 1737558720047 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.9-hf37e03c_1.conda + sha256: 92e8ca4eefcbbdf4189584c9410382884a06ed3030e5ecaac656dab8c95e6a80 + md5: de65f5e4ab5020103fe70a0eba9432a0 + depends: + - __osx >=11.0 + - aws-c-auth >=0.8.1,<0.8.2.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 98731 + timestamp: 1737558731831 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.2-h4e1184b_0.conda + sha256: 0424e380c435ba03b5948d02e8c958866c4eee50ed29e57f99473a5f795a4cfc + md5: dcd498d493818b776a77fbc242fbf8e4 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 55911 + timestamp: 1736535960724 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.2-h0f0193d_0.conda + sha256: fba38e469457764afcb94aa84d4d7788e6b5fa1554d34b05c904d2245fdd3c81 + md5: a78928881c652facde2a13ec6e776f3c + depends: + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 58221 + timestamp: 1736536003041 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.2-hc8a0bd2_0.conda + sha256: ea4f0f1e99056293c69615f581a997d65ba7e229e296e402e0d8ef750648a5b5 + md5: e7b5498ac7b7ab921a907be38f3a8080 + depends: + - __osx >=11.0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 49872 + timestamp: 1736536152332 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-h4e1184b_4.conda + sha256: 1ed9a332d06ad595694907fad2d6d801082916c27cd5076096fda4061e6d24a8 + md5: 74e8c3e4df4ceae34aa2959df4b28101 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 72762 + timestamp: 1733994347547 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h0f0193d_4.conda + sha256: 9f1e3635a587bcf92b61d88c7af7d24cd89c147c6d0ae58afbde08e65bcf48da + md5: 3bd35b0adab3d743f09e0252cc441d6b + depends: + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 72154 + timestamp: 1733994384415 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-hc8a0bd2_4.conda + sha256: 215086d95e8ff1d3fcb0197ada116cc9d7db1fdae7573f5e810d20fa9215b47c + md5: e70e88a357a3749b67679c0788c5b08a + depends: + - __osx >=11.0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 70186 + timestamp: 1733994496998 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.9-he0e7f3f_2.conda + sha256: c1930569713bd5231d48d885a5e3707ac917b428e8f08189d14064a2bb128adc + md5: 8a4e6fc8a3b285536202b5456a74a940 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-auth >=0.8.1,<0.8.2.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-event-stream >=0.5.0,<0.5.1.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-c-mqtt >=0.11.0,<0.11.1.0a0 + - aws-c-s3 >=0.7.9,<0.7.10.0a0 + - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 353222 + timestamp: 1737565463079 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.9-hab3ce66_2.conda + sha256: c3884fb10e0fd9be5c13256cabcda1afa9d2fcf8878c67214d02fc344509857d + md5: 875968ebffe992b68faf2caebbf32f02 + depends: + - aws-c-auth >=0.8.1,<0.8.2.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-event-stream >=0.5.0,<0.5.1.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-c-mqtt >=0.11.0,<0.11.1.0a0 + - aws-c-s3 >=0.7.9,<0.7.10.0a0 + - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 + - libgcc >=13 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 283812 + timestamp: 1737565480034 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.9-ha81f72f_2.conda + sha256: ed5f1d19aad53787fdebe13db4709c97eae2092536cc55d3536eba320c4286e1 + md5: c9c034d3239bf25687ca4dd985007ecd + depends: + - __osx >=11.0 + - aws-c-auth >=0.8.1,<0.8.2.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-event-stream >=0.5.0,<0.5.1.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-c-mqtt >=0.11.0,<0.11.1.0a0 + - aws-c-s3 >=0.7.9,<0.7.10.0a0 + - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 + - libcxx >=18 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 235976 + timestamp: 1737565563139 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.489-h4d475cb_0.conda + sha256: 08d6b7d2ed17bfcc7deb903c7751278ee434abdb27e3be0dceb561f30f030c75 + md5: b775e9f46dfa94b228a81d8e8c6d8b1d + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-event-stream >=0.5.0,<0.5.1.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + - aws-crt-cpp >=0.29.9,<0.29.10.0a0 + - libcurl >=8.11.1,<9.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 3144364 + timestamp: 1737576036746 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.489-h88461e4_0.conda + sha256: 88353e82b053763168cddbe2f88048defc1c97b3dad0966fbe8c4fa7aa592c7e + md5: e725d8fa77a6a5f38a78c5de914a5f40 + depends: + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-event-stream >=0.5.0,<0.5.1.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + - aws-crt-cpp >=0.29.9,<0.29.10.0a0 + - libcurl >=8.11.1,<9.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 3015109 + timestamp: 1737575993030 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.489-h0e5014b_0.conda + sha256: d82451530ddf363d8bb31a8a7391bb9699f745e940ace91d78c0e6170deef03c + md5: 156cfb45a1bb8cffc81e59047bb34f51 + depends: + - __osx >=11.0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-event-stream >=0.5.0,<0.5.1.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + - aws-crt-cpp >=0.29.9,<0.29.10.0a0 + - libcurl >=8.11.1,<9.0a0 + - libcxx >=18 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 2874126 + timestamp: 1737577023623 +- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda + sha256: fe07debdb089a3db17f40a7f20d283d75284bb4fc269ef727b8ba6fc93f7cb5a + md5: 0a8838771cc2e985cd295e01ae83baf1 + depends: + - __glibc >=2.17,<3.0.a0 + - libcurl >=8.10.1,<9.0a0 + - libgcc >=13 + - libstdcxx >=13 + - openssl >=3.3.2,<4.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 345117 + timestamp: 1728053909574 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-core-cpp-1.14.0-h1887c18_0.conda + sha256: 8967b3ccee4d74e61f6ec82dd8efb9deb854ee7ba012dfe767b7a92e0ac77724 + md5: e0c3a906a41be769f0ae20ca3e31cfc0 + depends: + - libcurl >=8.10.1,<9.0a0 + - libgcc >=13 + - libstdcxx >=13 + - openssl >=3.3.2,<4.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 338650 + timestamp: 1728055589907 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.14.0-hd50102c_0.conda + sha256: f5b91329ed59ffc0be8747784c6e4cc7e56250c54032883a83bc11808ef6a87e + md5: f093a11dcf3cdcca010b20a818fcc6dc + depends: + - __osx >=11.0 + - libcurl >=8.10.1,<9.0a0 + - libcxx >=17 + - openssl >=3.3.2,<4.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 294299 + timestamp: 1728054014060 +- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.10.0-h113e628_0.conda + sha256: 286b31616c191486626cb49e9ceb5920d29394b9e913c23adb7eb637629ba4de + md5: 73f73f60854f325a55f1d31459f2ab73 + depends: + - __glibc >=2.17,<3.0.a0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - libgcc >=13 + - libstdcxx >=13 + - openssl >=3.3.2,<4.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 232351 + timestamp: 1728486729511 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-identity-cpp-1.10.0-h47b0b28_0.conda + sha256: 1c72423b9beba167d2f01b80dc204da77240a8266f1edb3d89510c852b300d69 + md5: 94e73a7877743a85c57091d8afab2348 + depends: + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - libgcc >=13 + - libstdcxx >=13 + - openssl >=3.3.2,<4.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 217132 + timestamp: 1728488096615 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.10.0-hc602bab_0.conda + sha256: bde446b916fff5150606f8ed3e6058ffc55a3aa72381e46f1ab346590b1ae40a + md5: d7b71593a937459f2d4b67e1a4727dc2 + depends: + - __osx >=11.0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - libcxx >=17 + - openssl >=3.3.2,<4.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 166907 + timestamp: 1728486882502 +- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.13.0-h3cf044e_1.conda + sha256: 2606260e5379eed255bcdc6adc39b93fb31477337bcd911c121fc43cd29bf394 + md5: 7eb66060455c7a47d9dcdbfa9f46579b + depends: + - __glibc >=2.17,<3.0.a0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 549342 + timestamp: 1728578123088 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-blobs-cpp-12.13.0-h185ecfd_1.conda + sha256: 280ec70009a92626054f58e45b168fce393e71a9710587488bd8401628cda481 + md5: 221e1e5ecb2643e113f32b3229d5ba33 + depends: + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 + - libgcc >=13 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 502934 + timestamp: 1728580241002 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-blobs-cpp-12.13.0-h7585a09_1.conda + sha256: 08d52d130addc0fb55d5ba10d9fa483e39be25d69bac7f4c676c2c3069207590 + md5: 704238ef05d46144dae2e6b5853df8bc + depends: + - __osx >=11.0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 + - libcxx >=17 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 438636 + timestamp: 1728578216193 +- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-common-cpp-12.8.0-h736e048_1.conda + sha256: 273475f002b091b66ce7366da04bf164c3732c03f8692ab2ee2d23335b6a82ba + md5: 13de36be8de3ae3f05ba127631599213 + depends: + - __glibc >=2.17,<3.0.a0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libxml2 >=2.12.7,<3.0a0 + - openssl >=3.3.2,<4.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 149312 + timestamp: 1728563338704 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-common-cpp-12.8.0-h1b94036_1.conda + sha256: 146e76aac169e3dbdce5d3b142b7930ac643795c765e7655d1989905ec7d3231 + md5: 793b1080ab2d958980f137a8643cd6e8 + depends: + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libxml2 >=2.12.7,<3.0a0 + - openssl >=3.3.2,<4.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 140832 + timestamp: 1728565334900 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-common-cpp-12.8.0-h9ca1f76_1.conda + sha256: 77ab04e8fe5636a2de9c718f72a43645f7502cd208868c8a91ffba385547d585 + md5: 7a187cd7b1445afc80253bb186a607cc + depends: + - __osx >=11.0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - libcxx >=17 + - libxml2 >=2.12.7,<3.0a0 + - openssl >=3.3.2,<4.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 121278 + timestamp: 1728563418777 +- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-files-datalake-cpp-12.12.0-ha633028_1.conda + sha256: 5371e4f3f920933bb89b926a85a67f24388227419abd6e99f6086481e5e8d5f2 + md5: 7c1980f89dd41b097549782121a73490 + depends: + - __glibc >=2.17,<3.0.a0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 + - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 287366 + timestamp: 1728729530295 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-files-datalake-cpp-12.12.0-h37d6d07_1.conda + sha256: 4079c617a75682e49bae63670d58fd6078ccfbbe55ca1f994acab3a74ab6bbcc + md5: b724f3b4b7f4e9b36c58cbe3ed8610a2 + depends: + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 + - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 + - libgcc >=13 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 260547 + timestamp: 1728730924071 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-files-datalake-cpp-12.12.0-hcdd55da_1.conda + sha256: f48523f8aa0b5b80f45a92f0556b388dd96f44ac2dc2f44a01d08c1822eec97d + md5: c49fbc5233fcbaa86391162ff1adef38 + depends: + - __osx >=11.0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 + - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 + - libcxx >=17 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 196032 + timestamp: 1728729672889 +- conda: https://conda.anaconda.org/conda-forge/linux-64/blas-2.116-mkl.tar.bz2 + build_number: 16 + sha256: 87056ebdc90b6d1ea6726d04d42b844cc302112e80508edbf7bf1f1a4fd3fed2 + md5: c196a26abf6b4f132c88828ab7c2231c + depends: + - _openmp_mutex * *_llvm + - _openmp_mutex >=4.5 + - blas-devel 3.9.0 16_linux64_mkl + - libblas 3.9.0 16_linux64_mkl + - libcblas 3.9.0 16_linux64_mkl + - libgcc-ng >=12 + - libgfortran-ng + - libgfortran5 >=10.4.0 + - liblapack 3.9.0 16_linux64_mkl + - liblapacke 3.9.0 16_linux64_mkl + - llvm-openmp >=14.0.4 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 13258 + timestamp: 1660094704275 +- conda: https://conda.anaconda.org/conda-forge/linux-64/blas-devel-3.9.0-16_linux64_mkl.tar.bz2 + build_number: 16 + sha256: a7da65ca4e0322317cbc4d387c4a5f075cdc7fcd12ad9f7f18da758c7532749a + md5: 3f92c1c9e1c0e183462c5071aa02cae1 + depends: + - libblas 3.9.0 16_linux64_mkl + - libcblas 3.9.0 16_linux64_mkl + - liblapack 3.9.0 16_linux64_mkl + - liblapacke 3.9.0 16_linux64_mkl + - mkl >=2022.1.0,<2023.0a0 + - mkl-devel 2022.1.* + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 12630 + timestamp: 1660094595212 +- conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py312h2ec8cdc_2.conda + sha256: f2a59ccd20b4816dea9a2a5cb917eb69728271dbf1aeab4e1b7e609330a50b6f + md5: b0b867af6fc74b2a0aa206da29c0f3cf + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - libbrotlicommon 1.1.0 hb9d3cd8_2 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: + - pkg:pypi/brotli?source=hash-mapping + size: 349867 + timestamp: 1725267732089 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/brotli-python-1.1.0-py312h6f74592_2.conda + sha256: 9736bf660a0e4260c68f81d2635b51067f817813e6490ac9e8abd9a835dcbf6d + md5: e1e9727063057168d95f27a032acd0a4 + depends: + - libgcc >=13 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - libbrotlicommon 1.1.0 h86ecc28_2 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: + - pkg:pypi/brotli?source=hash-mapping + size: 356878 + timestamp: 1725267878508 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py312hde4cb15_2.conda + sha256: 254b411fa78ccc226f42daf606772972466f93e9bc6895eabb4cfda22f5178af + md5: a83c2ef76ccb11bc2349f4f17696b15d + depends: + - __osx >=11.0 + - libcxx >=17 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - libbrotlicommon 1.1.0 hd74edd7_2 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: + - pkg:pypi/brotli?source=hash-mapping + size: 339360 + timestamp: 1725268143995 +- conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda + sha256: 5ced96500d945fb286c9c838e54fa759aa04a7129c59800f0846b4335cee770d + md5: 62ee74e96c5ebb0af99386de58cf9553 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: bzip2-1.0.6 + license_family: BSD + purls: [] + size: 252783 + timestamp: 1720974456583 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h68df207_7.conda + sha256: 2258b0b33e1cb3a9852d47557984abb6e7ea58e3d7f92706ec1f8e879290c4cb + md5: 56398c28220513b9ea13d7b450acfb20 + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: bzip2-1.0.6 + license_family: BSD + purls: [] + size: 189884 + timestamp: 1720974504976 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda + sha256: adfa71f158cbd872a36394c56c3568e6034aa55c623634b37a4836bd036e6b91 + md5: fc6948412dbbbe9a4c9ddbbcfe0a79ab + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: bzip2-1.0.6 + license_family: BSD + purls: [] + size: 122909 + timestamp: 1720974522888 +- conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.4-hb9d3cd8_0.conda + sha256: d4f28d87b6339b94f74762c0076e29c8ef8ddfff51a564a92da2843573c18320 + md5: e2775acf57efd5af15b8e3d1d74d72d3 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 206085 + timestamp: 1734208189009 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/c-ares-1.34.4-h86ecc28_0.conda + sha256: 1187a41d4bb2afe02cb18690682edc98d1e9f5e0ccda638d8704a75ea1875bbe + md5: 356da36f35d36dcba16e43f1589d4e39 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 215979 + timestamp: 1734208193181 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.4-h5505292_0.conda + sha256: 09c0c8476e50b2955f474a4a1c17c4c047dd52993b5366b6ea8e968e583b921f + md5: c1c999a38a4303b29d75c636eaa13cf9 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 179496 + timestamp: 1734208291879 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2025.1.31-hbcca054_0.conda + sha256: bf832198976d559ab44d6cdb315642655547e26d826e34da67cbee6624cda189 + md5: 19f3a56f68d2fd06c516076bff482c52 + arch: x86_64 + platform: linux + license: ISC + purls: [] + size: 158144 + timestamp: 1738298224464 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2025.1.31-hcefe29a_0.conda + sha256: 66c6408ee461593cfdb2d78d82e6ed74d04a04ccb51df3ef8a5f35148c9c6eec + md5: 462cb166cd2e26a396f856510a3aff67 + arch: aarch64 + platform: linux + license: ISC + purls: [] + size: 158290 + timestamp: 1738299057652 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2025.1.31-hf0a4a13_0.conda + sha256: 7e12816618173fe70f5c638b72adf4bfd4ddabf27794369bb17871c5bb75b9f9 + md5: 3569d6a9141adc64d2fe4797f3289e06 + arch: arm64 + platform: osx + license: ISC + purls: [] + size: 158425 + timestamp: 1738298167688 +- conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.1.31-pyhd8ed1ab_0.conda + sha256: 42a78446da06a2568cb13e69be3355169fbd0ea424b00fc80b7d840f5baaacf3 + md5: c207fa5ac7ea99b149344385a9c0880d + depends: + - python >=3.9 + license: ISC + purls: + - pkg:pypi/certifi?source=compressed-mapping + size: 162721 + timestamp: 1739515973129 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py312h06ac9bb_0.conda + sha256: cba6ea83c4b0b4f5b5dc59cb19830519b28f95d7ebef7c9c5cf1c14843621457 + md5: a861504bbea4161a9170b85d4d2be840 + depends: + - __glibc >=2.17,<3.0.a0 + - libffi >=3.4,<4.0a0 + - libgcc >=13 + - pycparser + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: + - pkg:pypi/cffi?source=hash-mapping + size: 294403 + timestamp: 1725560714366 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cffi-1.17.1-py312hac81daf_0.conda + sha256: 1162e3ca039e7ca7c0e78f0a020ed1bde968096841b663e3f393c966eb82f0f0 + md5: 1a256e5581b1099e9295cb84d53db3ea + depends: + - libffi >=3.4,<4.0a0 + - libgcc >=13 + - pycparser + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: + - pkg:pypi/cffi?source=hash-mapping + size: 312892 + timestamp: 1725561779888 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.1-py312h0fad829_0.conda + sha256: 8d91a0d01358b5c3f20297c6c536c5d24ccd3e0c2ddd37f9d0593d0f0070226f + md5: 19a5456f72f505881ba493979777b24e + depends: + - __osx >=11.0 + - libffi >=3.4,<4.0a0 + - pycparser + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: + - pkg:pypi/cffi?source=hash-mapping + size: 281206 + timestamp: 1725560813378 +- conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda + sha256: 4e0ee91b97e5de3e74567bdacea27f0139709fceca4db8adffbe24deffccb09b + md5: e83a31202d1c0a000fce3e9cf3825875 + depends: + - python >=3.9 + license: MIT + license_family: MIT + purls: + - pkg:pypi/charset-normalizer?source=hash-mapping + size: 47438 + timestamp: 1735929811779 +- conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda + sha256: c920d23cd1fcf565031c679adb62d848af60d6fbb0edc2d50ba475cea4f0d8ab + md5: f22f4d4970e09d68a10b922cbb0408d3 + depends: + - __unix + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/click?source=hash-mapping + size: 84705 + timestamp: 1734858922844 +- conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + sha256: ab29d57dc70786c1269633ba3dff20288b81664d3ff8d21af995742e2bb03287 + md5: 962b9857ee8e7018c22f2776ffa0b2d7 + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/colorama?source=hash-mapping + size: 27011 + timestamp: 1733218222191 +- conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.12.9-py312hd8ed1ab_0.conda + noarch: generic + sha256: f5c7ad0bd23fa8645ac279d99bddba656ff61483dc6312af12aae13910dfb210 + md5: a5b10f166467fecec692abaee84d16aa + depends: + - python 3.12.9.* + - python_abi * *_cp312 + license: Python-2.0 + purls: [] + size: 44836 + timestamp: 1739519561557 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-cudart-12.4.127-he02047a_2.conda + sha256: d8ad0be647dad6378119c110572bbf9f6b1e8c820393ed159d45f02588979c07 + md5: a748faa52331983fc3adcc3b116fe0e4 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-cudart_linux-64 12.4.127 h85509e4_2 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 22563 + timestamp: 1715710703269 +- conda: https://conda.anaconda.org/conda-forge/noarch/cuda-cudart_linux-64-12.4.127-h85509e4_2.conda + sha256: 1f1b3e0bf6b5e665860ecbdf509c1e02760c14d25e3f3893a712f90f7f8a5abc + md5: 329163110a96514802e9e64d971edf43 + depends: + - cuda-version >=12.4,<12.5.0a0 + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 186886 + timestamp: 1715710690964 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-cupti-12.4.127-he02047a_2.conda + sha256: db9ebc57fd583711bbdd12e54d00e4153a7b414f929f77fca2f44547c02204b8 + md5: 46422ef1b1161fb180027e50c598ecd0 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 1918773 + timestamp: 1715665119069 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-libraries-12.4.1-ha770c72_1.conda + sha256: cb30e83f33c7480caa68a1e35e6ff4102d17ff0a94239ca18555afff1df2f70e + md5: 6bb3f998485d4344a7539e0b218b3fc1 + depends: + - cuda-cudart 12.4.127.* + - cuda-nvrtc 12.4.127.* + - cuda-opencl 12.4.127.* + - libcublas 12.4.5.8.* + - libcufft 11.2.1.3.* + - libcufile 1.9.1.3.* + - libcurand 10.3.5.147.* + - libcusolver 11.6.1.9.* + - libcusparse 12.3.1.170.* + - libnpp 12.2.5.30.* + - libnvfatbin 12.4.127.* + - libnvjitlink 12.4.127.* + - libnvjpeg 12.3.1.117.* + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 20180 + timestamp: 1713304266920 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-nvrtc-12.4.127-he02047a_2.conda + sha256: c4aba5e152526db7cad7c8a5191497b0c6365c912ed845dc9c427d29893486a1 + md5: 80baf6262f4a1a0dde42d85aaa393402 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 18825627 + timestamp: 1715711095870 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-nvtx-12.4.127-he02047a_2.conda + sha256: 8f499785edaec6198a934e8a9dd1f8b6f79aabcc135962d6050dd7328c76d3dc + md5: 656a004b6e44f50ce71c65cab0d429b4 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 31691 + timestamp: 1715731339952 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-opencl-12.4.127-he02047a_1.conda + sha256: 75d912a70719a9d0bca9f234a79a857815d8feec3c54c145e6e41589de4ff5be + md5: 1e98deda07c14d26c80d124cf0eb011a + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - ocl-icd >=2.3.2,<3.0a0 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 30406 + timestamp: 1715711329543 +- conda: https://conda.anaconda.org/conda-forge/noarch/cuda-runtime-12.4.1-ha804496_0.conda + sha256: 61a593347c91a9bcd18329f7aa780bd1fb1e20dd1b61b16a451bd4a6b60dabf0 + md5: 48829f4ef6005ae8d4867b99168ff2b8 + depends: + - __linux + - cuda-libraries 12.4.1.* + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 20034 + timestamp: 1712683445348 +- conda: https://conda.anaconda.org/conda-forge/noarch/cuda-version-12.4-h3060b56_3.conda + sha256: 571d32fbd0dc8df6e85c14d1757549927e272af9c70b935d7e3a553ab0b0b4da + md5: c9a3fe8b957176e1a8452c6f3431b0d8 + constrains: + - cudatoolkit 12.4|12.4.* + - __cuda >=12 + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 21022 + timestamp: 1709765922936 +- conda: https://conda.anaconda.org/conda-forge/noarch/datasets-3.3.2-pyhd8ed1ab_0.conda + sha256: 06109a3de7a977424d960b75cdb307f8d769eae87c53e33a64e706171199997a + md5: c2f904077afe3a8246c26576f555a6af + depends: + - aiohttp + - dill >=0.3.0,<0.3.9 + - filelock + - fsspec >=2023.1.0,<=2024.12.0 + - huggingface_hub >=0.24.0 + - multiprocess <0.70.17 + - numpy >=1.17 + - packaging + - pandas + - pyarrow >=15.0.0 + - python >=3.9 + - python-xxhash + - pyyaml >=5.1 + - requests >=2.32.2 + - tqdm >=4.66.3 + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/datasets?source=hash-mapping + size: 335311 + timestamp: 1740153561620 +- conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.8-pyhd8ed1ab_0.conda + sha256: 482b5b566ca559119b504c53df12b08f3962a5ef8e48061d62fd58a47f8f2ec4 + md5: 78745f157d56877a2c6e7b386f66f3e2 + depends: + - python >=3.7 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/dill?source=hash-mapping + size: 88169 + timestamp: 1706434833883 +- conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.17.0-pyhd8ed1ab_0.conda + sha256: 006d7e5a0c17a6973596dd86bfc80d74ce541144d2aee2d22d46fd41df560a63 + md5: 7f402b4a1007ee355bc50ce4d24d4a57 + depends: + - python >=3.9 + license: Unlicense + purls: + - pkg:pypi/filelock?source=hash-mapping + size: 17544 + timestamp: 1737517924333 +- conda: https://conda.anaconda.org/conda-forge/linux-64/frozenlist-1.5.0-py312h178313f_1.conda + sha256: 501e20626798b6d7f130f4db0fb02c0385d8f4c11ca525925602a4208afb343f + md5: fb986e1c089021979dc79606af78ef8f + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/frozenlist?source=hash-mapping + size: 60939 + timestamp: 1737645356438 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/frozenlist-1.5.0-py312hcc812fe_1.conda + sha256: 84895c5e207e0cb2044f3607fb36b82eb8cb45f0a009d03dc04c777ed975757d + md5: 9090bf5c43e8011fb2e9a82a1db20cc3 + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/frozenlist?source=hash-mapping + size: 60472 + timestamp: 1737645511278 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/frozenlist-1.5.0-py312h998013c_1.conda + sha256: d503ac8c050abdbd129253973f23be34944978d510de78ef5a3e6aa1e3d9552d + md5: 5eb3715c7e3fa9b533361375bfefe6ee + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/frozenlist?source=hash-mapping + size: 57256 + timestamp: 1737645503377 +- conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.12.0-pyhd8ed1ab_0.conda + sha256: 3320970c4604989eadf908397a9475f9e6a96a773c185915111399cbfbe47817 + md5: e041ad4c43ab5e10c74587f95378ebc7 + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/fsspec?source=hash-mapping + size: 137756 + timestamp: 1734650349242 +- conda: https://conda.anaconda.org/conda-forge/linux-64/gflags-2.2.2-h5888daf_1005.conda + sha256: 6c33bf0c4d8f418546ba9c250db4e4221040936aef8956353bc764d4877bc39a + md5: d411fc29e338efb48c5fd4576d71d881 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 119654 + timestamp: 1726600001928 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gflags-2.2.2-h5ad3122_1005.conda + sha256: 28fe6b40b20454106d5e4ef6947cf298c13cc72a46347bbc49b563cd3a463bfa + md5: 4ff634d515abbf664774b5e1168a9744 + depends: + - libgcc >=13 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 106638 + timestamp: 1726599967617 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/gflags-2.2.2-hf9b8971_1005.conda + sha256: fd56ed8a1dab72ab90d8a8929b6f916a6d9220ca297ff077f8f04c5ed3408e20 + md5: 57a511a5905caa37540eb914dfcbf1fb + depends: + - __osx >=11.0 + - libcxx >=17 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 82090 + timestamp: 1726600145480 +- conda: https://conda.anaconda.org/conda-forge/linux-64/glog-0.7.1-hbabe93e_0.conda + sha256: dc824dc1d0aa358e28da2ecbbb9f03d932d976c8dca11214aa1dcdfcbd054ba2 + md5: ff862eebdfeb2fd048ae9dc92510baca + depends: + - gflags >=2.2.2,<2.3.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 143452 + timestamp: 1718284177264 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/glog-0.7.1-h468a4a4_0.conda + sha256: 920795d4f775a9f47e91c2223e64847f0b212b3fedc56c137c5889e32efe8ba0 + md5: 08940a32c6ced3703d1412dd37df4f62 + depends: + - gflags >=2.2.2,<2.3.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 145811 + timestamp: 1718284208668 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/glog-0.7.1-heb240a5_0.conda + sha256: 9fc77de416953aa959039db72bc41bfa4600ae3ff84acad04a7d0c1ab9552602 + md5: fef68d0a95aa5b84b5c1a4f6f3bf40e1 + depends: + - __osx >=11.0 + - gflags >=2.2.2,<2.3.0a0 + - libcxx >=16 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 112215 + timestamp: 1718284365403 +- conda: https://conda.anaconda.org/conda-forge/linux-64/gmp-6.3.0-hac33072_2.conda + sha256: 309cf4f04fec0c31b6771a5809a1909b4b3154a2208f52351e1ada006f4c750c + md5: c94a5994ef49749880a8139cf9afcbe1 + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: GPL-2.0-or-later OR LGPL-3.0-or-later + purls: [] + size: 460055 + timestamp: 1718980856608 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/gmp-6.3.0-h7bae524_2.conda + sha256: 76e222e072d61c840f64a44e0580c2503562b009090f55aa45053bf1ccb385dd + md5: eed7278dfbab727b56f2c0b64330814b + depends: + - __osx >=11.0 + - libcxx >=16 + arch: arm64 + platform: osx + license: GPL-2.0-or-later OR LGPL-3.0-or-later + purls: [] + size: 365188 + timestamp: 1718981343258 +- conda: https://conda.anaconda.org/conda-forge/linux-64/gmpy2-2.1.5-py312h7201bc8_3.conda + sha256: addd0bc226ca86c11f1223ab322d12b67501c2b3d93749bdab2068ccaedd8ef0 + md5: 673ef4d6611f5b4ca7b5c1f8c65a38dc + depends: + - __glibc >=2.17,<3.0.a0 + - gmp >=6.3.0,<7.0a0 + - libgcc >=13 + - mpc >=1.3.1,<2.0a0 + - mpfr >=4.2.1,<5.0a0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: LGPL-3.0-or-later + license_family: LGPL + purls: + - pkg:pypi/gmpy2?source=hash-mapping + size: 209631 + timestamp: 1733462668219 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/gmpy2-2.1.5-py312h524cf62_3.conda + sha256: 0ea196e4b706321951af1eebdb6a4eb9307faa1fd5361bcf49acb150e71774f7 + md5: ab7a5d10c7b4e249a9fe7bc280909803 + depends: + - __osx >=11.0 + - gmp >=6.3.0,<7.0a0 + - mpc >=1.3.1,<2.0a0 + - mpfr >=4.2.1,<5.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: LGPL-3.0-or-later + license_family: LGPL + purls: + - pkg:pypi/gmpy2?source=hash-mapping + size: 147983 + timestamp: 1733462785197 +- conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda + sha256: 0aa1cdc67a9fe75ea95b5644b734a756200d6ec9d0dff66530aec3d1c1e9df75 + md5: b4754fb1bdcb70c8fd54f918301582c6 + depends: + - hpack >=4.1,<5 + - hyperframe >=6.1,<7 + - python >=3.9 + license: MIT + license_family: MIT + purls: + - pkg:pypi/h2?source=hash-mapping + size: 53888 + timestamp: 1738578623567 +- conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda + sha256: 6ad78a180576c706aabeb5b4c8ceb97c0cb25f1e112d76495bff23e3779948ba + md5: 0a802cb9888dd14eeefc611f05c40b6e + depends: + - python >=3.9 + license: MIT + license_family: MIT + purls: + - pkg:pypi/hpack?source=hash-mapping + size: 30731 + timestamp: 1737618390337 +- conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.29.1-pyhd8ed1ab_0.conda + sha256: f75ca9436fe11d0def6e575d29e0614033c45c90f37895a3b2bb3536612b251c + md5: 0bbbf72b600a1df32666a084769bf240 + depends: + - filelock + - fsspec >=2023.5.0 + - packaging >=20.9 + - python >=3.9 + - pyyaml >=5.1 + - requests + - tqdm >=4.42.1 + - typing-extensions >=3.7.4.3 + - typing_extensions >=3.7.4.3 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/huggingface-hub?source=compressed-mapping + size: 287974 + timestamp: 1740068383431 +- conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda + sha256: 77af6f5fe8b62ca07d09ac60127a30d9069fdc3c68d6b256754d0ffb1f7779f8 + md5: 8e6923fc12f1fe8f8c4e5c9f343256ac + depends: + - python >=3.9 + license: MIT + license_family: MIT + purls: + - pkg:pypi/hyperframe?source=hash-mapping + size: 17397 + timestamp: 1737618427549 +- conda: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda + sha256: 71e750d509f5fa3421087ba88ef9a7b9be11c53174af3aa4d06aff4c18b38e8e + md5: 8b189310083baabfb622af68fd9d3ae3 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 12129203 + timestamp: 1720853576813 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda + sha256: 813298f2e54ef087dbfc9cc2e56e08ded41de65cff34c639cc8ba4e27e4540c9 + md5: 268203e8b983fddb6412b36f2024e75c + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 12282786 + timestamp: 1720853454991 +- conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda + sha256: d7a472c9fd479e2e8dcb83fb8d433fce971ea369d704ece380e876f9c3494e87 + md5: 39a4f67be3286c86d696df570b1201b7 + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/idna?source=hash-mapping + size: 49765 + timestamp: 1733211921194 +- conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + sha256: 598951ebdb23e25e4cec4bbff0ae369cec65ead80b50bc08b441d8e54de5cf03 + md5: f4b39bf00c69f56ac01e020ebfac066c + depends: + - python >=3.9 + - zipp >=0.5 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/importlib-metadata?source=compressed-mapping + size: 29141 + timestamp: 1737420302391 +- pypi: https://download.pytorch.org/whl/Jinja2-3.1.4-py3-none-any.whl#sha256=bc5dd2abb727a5319567b7a813e6a2e7318c39f4f487cfe6c89c6f9c7d25197d + name: jinja2 + version: 3.1.4 + sha256: bc5dd2abb727a5319567b7a813e6a2e7318c39f4f487cfe6c89c6f9c7d25197d + requires_dist: + - markupsafe>=2.0 + - babel>=2.7 ; extra == 'i18n' + requires_python: '>=3.7' +- conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.5-pyhd8ed1ab_0.conda + sha256: 98977694b9ecaa3218662f843425f39501f81973c450f995eec68f1803ed71c3 + md5: 2752a6ed44105bfb18c9bef1177d9dcd + depends: + - markupsafe >=2.0 + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/jinja2?source=hash-mapping + size: 112561 + timestamp: 1734824044952 +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + sha256: 19d8bd5bb2fde910ec59e081eeb59529491995ce0d653a5209366611023a0b3a + md5: 4ebae00eae9705b0c3d6d1018a81d047 + depends: + - importlib-metadata >=4.8.3 + - jupyter_core >=4.12,!=5.0.* + - python >=3.9 + - python-dateutil >=2.8.2 + - pyzmq >=23.0 + - tornado >=6.2 + - traitlets >=5.3 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/jupyter-client?source=hash-mapping + size: 106342 + timestamp: 1733441040958 +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + sha256: 732b1e8536bc22a5a174baa79842d79db2f4956d90293dd82dc1b3f6099bcccd + md5: 0a2980dada0dd7fd0998f0342308b1b1 + depends: + - __unix + - platformdirs >=2.5 + - python >=3.8 + - traitlets >=5.3 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/jupyter-core?source=hash-mapping + size: 57671 + timestamp: 1727163547058 +- conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 + sha256: 150c05a6e538610ca7c43beb3a40d65c90537497a4f6a5f4d15ec0451b6f5ebb + md5: 30186d27e2c9fa62b45fb1476b7200e3 + depends: + - libgcc-ng >=10.3.0 + arch: x86_64 + platform: linux + license: LGPL-2.1-or-later + purls: [] + size: 117831 + timestamp: 1646151697040 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/keyutils-1.6.1-h4e544f5_0.tar.bz2 + sha256: 6d4233d97a9b38acbb26e1268bcf8c10a8e79c2aed7e5a385ec3769967e3e65b + md5: 1f24853e59c68892452ef94ddd8afd4b + depends: + - libgcc-ng >=10.3.0 + arch: aarch64 + platform: linux + license: LGPL-2.1-or-later + purls: [] + size: 112327 + timestamp: 1646166857935 +- conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda + sha256: 99df692f7a8a5c27cd14b5fb1374ee55e756631b9c3d659ed3ee60830249b238 + md5: 3f43953b7d3fb3aaa1d0d0723d91e368 + depends: + - keyutils >=1.6.1,<2.0a0 + - libedit >=3.1.20191231,<3.2.0a0 + - libedit >=3.1.20191231,<4.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - openssl >=3.3.1,<4.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 1370023 + timestamp: 1719463201255 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/krb5-1.21.3-h50a48e9_0.conda + sha256: 0ec272afcf7ea7fbf007e07a3b4678384b7da4047348107b2ae02630a570a815 + md5: 29c10432a2ca1472b53f299ffb2ffa37 + depends: + - keyutils >=1.6.1,<2.0a0 + - libedit >=3.1.20191231,<3.2.0a0 + - libedit >=3.1.20191231,<4.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - openssl >=3.3.1,<4.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 1474620 + timestamp: 1719463205834 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda + sha256: 4442f957c3c77d69d9da3521268cad5d54c9033f1a73f99cde0a3658937b159b + md5: c6dc8a0fdec13a0565936655c33069a1 + depends: + - __osx >=11.0 + - libcxx >=16 + - libedit >=3.1.20191231,<3.2.0a0 + - libedit >=3.1.20191231,<4.0a0 + - openssl >=3.3.1,<4.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 1155530 + timestamp: 1719463474401 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_4.conda + sha256: db73f38155d901a610b2320525b9dd3b31e4949215c870685fd92ea61b5ce472 + md5: 01f8d123c96816249efd255a31ad7712 + depends: + - __glibc >=2.17,<3.0.a0 + constrains: + - binutils_impl_linux-64 2.43 + arch: x86_64 + platform: linux + license: GPL-3.0-only + license_family: GPL + purls: [] + size: 671240 + timestamp: 1740155456116 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_4.conda + sha256: 016832a70b0aa97e1c4e47e23c00b0c34def679de25146736df353199f684f0d + md5: 80c9ad5e05e91bb6c0967af3880c9742 + constrains: + - binutils_impl_linux-aarch64 2.43 + arch: aarch64 + platform: linux + license: GPL-3.0-only + license_family: GPL + purls: [] + size: 699058 + timestamp: 1740155620594 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda + sha256: 143a586aa67d50622ef703de57b9d43f44945836d6568e0e7aa174bd8c45e0d4 + md5: 488f260ccda0afaf08acb286db439c2f + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + constrains: + - libabseil-static =20240722.0=cxx17* + - abseil-cpp =20240722.0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 1311599 + timestamp: 1736008414161 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h18dbdb1_4.conda + sha256: bb6c5fb3b8de5f90735c5252b57efb3c268ee222c755569dac18065f05147670 + md5: 633b9fe454ffea2aaf29e191d946a83b + depends: + - libgcc >=13 + - libstdcxx >=13 + constrains: + - abseil-cpp =20240722.0 + - libabseil-static =20240722.0=cxx17* + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 1334844 + timestamp: 1736008472455 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_h07bc746_4.conda + sha256: 05fa5e5e908962b9c5aba95f962e2ca81d9599c4715aebe5e4ddb72b309d1770 + md5: c2d95bd7aa8d564a9bd7eca5e571a5b3 + depends: + - __osx >=11.0 + - libcxx >=18 + constrains: + - libabseil-static =20240722.0=cxx17* + - abseil-cpp =20240722.0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 1178260 + timestamp: 1736008642885 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-19.0.1-hfa2a6e7_0_cpu.conda + sha256: 7b1f61045b37266989023a007d6331875062bb658068a6e6ab49720495ca3543 + md5: 11b712ed1316c98592f6bae7ccfaa86c + depends: + - __glibc >=2.17,<3.0.a0 + - aws-crt-cpp >=0.29.9,<0.29.10.0a0 + - aws-sdk-cpp >=1.11.489,<1.11.490.0a0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - azure-identity-cpp >=1.10.0,<1.10.1.0a0 + - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 + - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 + - bzip2 >=1.0.8,<2.0a0 + - glog >=0.7.1,<0.8.0a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libbrotlidec >=1.1.0,<1.2.0a0 + - libbrotlienc >=1.1.0,<1.2.0a0 + - libgcc >=13 + - libgoogle-cloud >=2.35.0,<2.36.0a0 + - libgoogle-cloud-storage >=2.35.0,<2.36.0a0 + - libopentelemetry-cpp >=1.18.0,<1.19.0a0 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libre2-11 >=2024.7.2 + - libstdcxx >=13 + - libutf8proc >=2.10.0,<2.11.0a0 + - libzlib >=1.3.1,<2.0a0 + - lz4-c >=1.10.0,<1.11.0a0 + - orc >=2.0.3,<2.0.4.0a0 + - re2 + - snappy >=1.2.1,<1.3.0a0 + - zstd >=1.5.6,<1.6.0a0 + constrains: + - arrow-cpp <0.0a0 + - parquet-cpp <0.0a0 + - apache-arrow-proc =*=cpu + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 8967810 + timestamp: 1739768880886 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-19.0.1-h36213f4_0_cpu.conda + sha256: 3f141e56555676b4a9fd885a0a7452daa2530eb65cfbba1271f7a07457a82003 + md5: cfeb98942a3ef36c0bb2b09b084349da + depends: + - aws-crt-cpp >=0.29.9,<0.29.10.0a0 + - aws-sdk-cpp >=1.11.489,<1.11.490.0a0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - azure-identity-cpp >=1.10.0,<1.10.1.0a0 + - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 + - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 + - bzip2 >=1.0.8,<2.0a0 + - glog >=0.7.1,<0.8.0a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libbrotlidec >=1.1.0,<1.2.0a0 + - libbrotlienc >=1.1.0,<1.2.0a0 + - libgcc >=13 + - libgoogle-cloud >=2.35.0,<2.36.0a0 + - libgoogle-cloud-storage >=2.35.0,<2.36.0a0 + - libopentelemetry-cpp >=1.18.0,<1.19.0a0 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libre2-11 >=2024.7.2 + - libstdcxx >=13 + - libutf8proc >=2.10.0,<2.11.0a0 + - libzlib >=1.3.1,<2.0a0 + - lz4-c >=1.10.0,<1.11.0a0 + - orc >=2.0.3,<2.0.4.0a0 + - re2 + - snappy >=1.2.1,<1.3.0a0 + - zstd >=1.5.6,<1.6.0a0 + constrains: + - apache-arrow-proc =*=cpu + - parquet-cpp <0.0a0 + - arrow-cpp <0.0a0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 8215209 + timestamp: 1739770301694 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-19.0.1-h0945df6_0_cpu.conda + sha256: e34199bea635b1bf9f3819205b291f714ddd47db1bf6e6d10a4eb61da7330214 + md5: 21bcb04df4b1a99721199c5aa6273f53 + depends: + - __osx >=11.0 + - aws-crt-cpp >=0.29.9,<0.29.10.0a0 + - aws-sdk-cpp >=1.11.489,<1.11.490.0a0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - azure-identity-cpp >=1.10.0,<1.10.1.0a0 + - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 + - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 + - bzip2 >=1.0.8,<2.0a0 + - glog >=0.7.1,<0.8.0a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libbrotlidec >=1.1.0,<1.2.0a0 + - libbrotlienc >=1.1.0,<1.2.0a0 + - libcxx >=18 + - libgoogle-cloud >=2.35.0,<2.36.0a0 + - libgoogle-cloud-storage >=2.35.0,<2.36.0a0 + - libopentelemetry-cpp >=1.18.0,<1.19.0a0 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libre2-11 >=2024.7.2 + - libutf8proc >=2.10.0,<2.11.0a0 + - libzlib >=1.3.1,<2.0a0 + - lz4-c >=1.10.0,<1.11.0a0 + - orc >=2.0.3,<2.0.4.0a0 + - re2 + - snappy >=1.2.1,<1.3.0a0 + - zstd >=1.5.6,<1.6.0a0 + constrains: + - apache-arrow-proc =*=cpu + - arrow-cpp <0.0a0 + - parquet-cpp <0.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 5571369 + timestamp: 1739767084108 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-19.0.1-hcb10f89_0_cpu.conda + sha256: 9a3c38a8f1516fe5b7801d0407ff704efd53955ebd63f7fbc439ec3b563d19cc + md5: 0d63e2dea06c44c9d2c8be3e7e38eea9 + depends: + - __glibc >=2.17,<3.0.a0 + - libarrow 19.0.1 hfa2a6e7_0_cpu + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 638054 + timestamp: 1739768924910 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-19.0.1-h3b568fd_0_cpu.conda + sha256: 3260e26ca9e1146befeb9587ba80610f9d9591365c82f7cd8756f14a9a8e58c2 + md5: 7b270af126ffdec0153d8599370f0430 + depends: + - libarrow 19.0.1 h36213f4_0_cpu + - libgcc >=13 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 602400 + timestamp: 1739770383854 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-19.0.1-hf07054f_0_cpu.conda + sha256: b15f5fab53d941917143bb1cf22c5a0eacffb8ff2a010ee2e909afab3821d5f9 + md5: 9213d80ffba1921b86bfdf5fdd2c10c4 + depends: + - __osx >=11.0 + - libarrow 19.0.1 h0945df6_0_cpu + - libcxx >=18 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 500147 + timestamp: 1739767179329 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-19.0.1-hcb10f89_0_cpu.conda + sha256: f756208d787db50b6be68210cb9eec3644b8291a8a353bb2071ea4451bfc1412 + md5: ec52b3b990be399f4267a9acabb73070 + depends: + - __glibc >=2.17,<3.0.a0 + - libarrow 19.0.1 hfa2a6e7_0_cpu + - libarrow-acero 19.0.1 hcb10f89_0_cpu + - libgcc >=13 + - libparquet 19.0.1 h081d1f1_0_cpu + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 604500 + timestamp: 1739769034226 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-19.0.1-h3b568fd_0_cpu.conda + sha256: 76327753ed311ae1d1ef3f8f7067888e01d3c69e5198a9108052d74e2f91d03a + md5: 8a025a60dfcfa3d6cf100395f64de8ba + depends: + - libarrow 19.0.1 h36213f4_0_cpu + - libarrow-acero 19.0.1 h3b568fd_0_cpu + - libgcc >=13 + - libparquet 19.0.1 hfc78867_0_cpu + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 581121 + timestamp: 1739770488033 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-19.0.1-hf07054f_0_cpu.conda + sha256: 21fcb9a09e5872b4f1d483d8d950a1804ccb6804881881ca6fe6c5968a5e4dbc + md5: 0695382a64b393765b4bc9e1ee99250c + depends: + - __osx >=11.0 + - libarrow 19.0.1 h0945df6_0_cpu + - libarrow-acero 19.0.1 hf07054f_0_cpu + - libcxx >=18 + - libparquet 19.0.1 h636d7b7_0_cpu + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 501234 + timestamp: 1739768239766 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-19.0.1-h08228c5_0_cpu.conda + sha256: e0b3ed06ce74c6a083dab59fb3059fdbc40fc71ff94ce470ca0a7c7ffe8d0317 + md5: 792e2359bb93513324326cbe3ee4ebdd + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libarrow 19.0.1 hfa2a6e7_0_cpu + - libarrow-acero 19.0.1 hcb10f89_0_cpu + - libarrow-dataset 19.0.1 hcb10f89_0_cpu + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 523313 + timestamp: 1739769085090 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-19.0.1-h1e9d426_0_cpu.conda + sha256: c1085eb113a80691e3d76400c91b15dc8c0462d533f8c4ca4c33d5e9fe9cffef + md5: 1e34ad733a8c404ac0f652a942192636 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libarrow 19.0.1 h36213f4_0_cpu + - libarrow-acero 19.0.1 h3b568fd_0_cpu + - libarrow-dataset 19.0.1 h3b568fd_0_cpu + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 516114 + timestamp: 1739770543593 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-19.0.1-h4239455_0_cpu.conda + sha256: 0b5c0839102b396f8b0ba376189562a727ebbed3c6bdab74aaf56227ee45cb73 + md5: 2893dd55f7804b9106126c2f00712ec2 + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libarrow 19.0.1 h0945df6_0_cpu + - libarrow-acero 19.0.1 hf07054f_0_cpu + - libarrow-dataset 19.0.1 hf07054f_0_cpu + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 450361 + timestamp: 1739768396169 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-16_linux64_mkl.tar.bz2 + build_number: 16 + sha256: 24e656f13b402b6fceb88df386768445ab9beb657d451a8e5a88d4b3380cf7a4 + md5: 85f61af03fd291dae33150ffe89dc09a + depends: + - mkl >=2022.1.0,<2023.0a0 + constrains: + - liblapack 3.9.0 16_linux64_mkl + - liblapacke 3.9.0 16_linux64_mkl + - libcblas 3.9.0 16_linux64_mkl + - blas * mkl + - mkl <2025 + arch: x86_64 + platform: linux + track_features: + - blas_mkl + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 13102 + timestamp: 1660094562739 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-31_h1a9f1db_openblas.conda + build_number: 31 + sha256: 67c9c81dd0444ecc712124034d9f74186ca82fd770b3df46b1a68564461c6a1a + md5: 48bd5bf15ccf3e409840be9caafc0ad5 + depends: + - libopenblas >=0.3.29,<0.3.30.0a0 + - libopenblas >=0.3.29,<1.0a0 + constrains: + - liblapack =3.9.0=31*_openblas + - blas =2.131=openblas + - libcblas =3.9.0=31*_openblas + - mkl <2025 + - liblapacke =3.9.0=31*_openblas + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 16915 + timestamp: 1740087911042 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-19_osxarm64_openblas.conda + build_number: 19 + sha256: 51e78e3c9fa57f3fec12936b760928715ba0ab5253d02815202f9ec4c2c9255d + md5: f50b1fd98593278e18319653cff9c475 + depends: + - libopenblas >=0.3.24,<0.3.25.0a0 + - libopenblas >=0.3.24,<1.0a0 + constrains: + - libcblas 3.9.0 19_osxarm64_openblas + - liblapack 3.9.0 19_osxarm64_openblas + - blas * openblas + - liblapacke 3.9.0 19_osxarm64_openblas + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 14817 + timestamp: 1697484577887 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hb9d3cd8_2.conda + sha256: d9db2de60ea917298e658143354a530e9ca5f9c63471c65cf47ab39fd2f429e3 + md5: 41b599ed2b02abcfdd84302bff174b23 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 68851 + timestamp: 1725267660471 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlicommon-1.1.0-h86ecc28_2.conda + sha256: 64112af913974b309d67fd342e065fd184347043a6387933b3db796778a28019 + md5: 3ee026955c688f551a9999840cff4c67 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 68982 + timestamp: 1725267774142 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.1.0-hd74edd7_2.conda + sha256: 839dacb741bdbb25e58f42088a2001b649f4f12195aeb700b5ddfca3267749e5 + md5: d0bf1dff146b799b319ea0434b93f779 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 68426 + timestamp: 1725267943211 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hb9d3cd8_2.conda + sha256: 2892d512cad096cb03f1b66361deeab58b64e15ba525d6592bb6d609e7045edf + md5: 9566f0bd264fbd463002e759b8a82401 + depends: + - __glibc >=2.17,<3.0.a0 + - libbrotlicommon 1.1.0 hb9d3cd8_2 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 32696 + timestamp: 1725267669305 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlidec-1.1.0-h86ecc28_2.conda + sha256: 94c808d9ca3eb6ef30976a9843e27f027cf3a1e84e8c6835cbb696b7bdb35c4c + md5: e64d0f3b59c7c4047446b97a8624a72d + depends: + - libbrotlicommon 1.1.0 h86ecc28_2 + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 31708 + timestamp: 1725267783442 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.1.0-hd74edd7_2.conda + sha256: 6c6862eb274f21a7c0b60e5345467a12e6dda8b9af4438c66d496a2c1a538264 + md5: 55e66e68ce55523a6811633dd1ac74e2 + depends: + - __osx >=11.0 + - libbrotlicommon 1.1.0 hd74edd7_2 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 28378 + timestamp: 1725267980316 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.1.0-hb9d3cd8_2.conda + sha256: 779f58174e99de3600e939fa46eddb453ec5d3c60bb46cdaa8b4c127224dbf29 + md5: 06f70867945ea6a84d35836af780f1de + depends: + - __glibc >=2.17,<3.0.a0 + - libbrotlicommon 1.1.0 hb9d3cd8_2 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 281750 + timestamp: 1725267679782 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlienc-1.1.0-h86ecc28_2.conda + sha256: 41385e17bc73834b235c5aff12d6d82eccb534acb3c30986996f9dad92a0d54c + md5: 0e9bd365480c72b25c71a448257b537d + depends: + - libbrotlicommon 1.1.0 h86ecc28_2 + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 290230 + timestamp: 1725267792697 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlienc-1.1.0-hd74edd7_2.conda + sha256: eeb1eb0d58b9d02bc1b98dc0a058f104ab168eb2f7d1c7bfa0570a12cfcdb7b7 + md5: 4f3a434504c67b2c42565c0b85c1885c + depends: + - __osx >=11.0 + - libbrotlicommon 1.1.0 hd74edd7_2 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 279644 + timestamp: 1725268003553 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-16_linux64_mkl.tar.bz2 + build_number: 16 + sha256: 892ba10508f22310ccfe748df1fd3b6c7f20e7b6f6b79e69ed337863551c1bd8 + md5: 361bf757b95488de76c4f123805742d3 + depends: + - libblas 3.9.0 16_linux64_mkl + constrains: + - liblapack 3.9.0 16_linux64_mkl + - liblapacke 3.9.0 16_linux64_mkl + - blas * mkl + - mkl <2025 + arch: x86_64 + platform: linux + track_features: + - blas_mkl + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 12791 + timestamp: 1660094570921 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-31_hab92f65_openblas.conda + build_number: 31 + sha256: f0457a1d2982f0a28bfbadaa02621677c324e88f7c8198c24fb3e3214c468dba + md5: 6b81dbae56a519f1ec2f25e0ee2f4334 + depends: + - libblas 3.9.0 31_h1a9f1db_openblas + constrains: + - liblapack =3.9.0=31*_openblas + - blas =2.131=openblas + - liblapacke =3.9.0=31*_openblas + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 16824 + timestamp: 1740087917500 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-19_osxarm64_openblas.conda + build_number: 19 + sha256: 19b1c5e3ddd383ec14540336f4704938218d3c1db4707ae10d5357afb22cccc1 + md5: 5460a8d1beffd7f63994d891e6a20da4 + depends: + - libblas 3.9.0 19_osxarm64_openblas + constrains: + - liblapack 3.9.0 19_osxarm64_openblas + - blas * openblas + - liblapacke 3.9.0 19_osxarm64_openblas + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 14738 + timestamp: 1697484590682 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcrc32c-1.1.2-h9c3ff4c_0.tar.bz2 + sha256: fd1d153962764433fe6233f34a72cdeed5dcf8a883a85769e8295ce940b5b0c5 + md5: c965a5aa0d5c1c37ffc62dff36e28400 + depends: + - libgcc-ng >=9.4.0 + - libstdcxx-ng >=9.4.0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 20440 + timestamp: 1633683576494 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcrc32c-1.1.2-h01db608_0.tar.bz2 + sha256: b8b8c57a87da86b3ea24280fd6aa8efaf92f4e684b606bf2db5d3cb06ffbe2ea + md5: 268ee639c17ada0002fb04dd21816cc2 + depends: + - libgcc-ng >=9.4.0 + - libstdcxx-ng >=9.4.0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 18669 + timestamp: 1633683724891 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcrc32c-1.1.2-hbdafb3b_0.tar.bz2 + sha256: 58477b67cc719060b5b069ba57161e20ba69b8695d154a719cb4b60caf577929 + md5: 32bd82a6a625ea6ce090a81c3d34edeb + depends: + - libcxx >=11.1.0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 18765 + timestamp: 1633683992603 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcublas-12.4.5.8-he02047a_2.conda + sha256: 168e664423e875f7107697dfa7935399675872ea8abffa92621db98007258d66 + md5: d446adae085aa1ff37c44b69988a6f06 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-nvrtc + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 240665617 + timestamp: 1715711552741 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcufft-11.2.1.3-he02047a_2.conda + sha256: 242e1ed210a85fc0dc2a4e86bf0b75120f1768ab66497502c5e6d69e801bf9dc + md5: d2641a67c207946ef96f1328c4a8e8ed + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 174980358 + timestamp: 1715711515585 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcufile-1.9.1.3-he02047a_2.conda + sha256: 7fa7a608d52064b724241e4026f0e0cc244c6f725623e2c26c810be99822fa28 + md5: a051267bcb1912467c81d802a7d3465e + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 924329 + timestamp: 1715720836466 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcurand-10.3.5.147-he02047a_2.conda + sha256: 7db821fc8f566dbb8d4e40dae62edb07d638db8c028d677a0063ece66872d19c + md5: 9c4886d513fd477df88d411cd274c202 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 41590169 + timestamp: 1715711553620 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.12.1-h332b0f4_0.conda + sha256: 2ebc3039af29269e4cdb858fca36265e5e400c1125a4bcd84ae73a596e0e76ca + md5: 45e9dc4e7b25e2841deb392be085500e + depends: + - __glibc >=2.17,<3.0.a0 + - krb5 >=1.21.3,<1.22.0a0 + - libgcc >=13 + - libnghttp2 >=1.64.0,<2.0a0 + - libssh2 >=1.11.1,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.1,<4.0a0 + - zstd >=1.5.6,<1.6.0a0 + arch: x86_64 + platform: linux + license: curl + license_family: MIT + purls: [] + size: 426675 + timestamp: 1739512336799 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcurl-8.12.1-h6702fde_0.conda + sha256: a00458a5163b9552897cdac08b273deb1b3add09e05599dfbacf0606c3b1f41f + md5: 14c340cb70867cf7953d2632f89270b5 + depends: + - krb5 >=1.21.3,<1.22.0a0 + - libgcc >=13 + - libnghttp2 >=1.64.0,<2.0a0 + - libssh2 >=1.11.1,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.1,<4.0a0 + - zstd >=1.5.6,<1.6.0a0 + arch: aarch64 + platform: linux + license: curl + license_family: MIT + purls: [] + size: 444118 + timestamp: 1739512317570 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.12.1-h73640d1_0.conda + sha256: 0bddd1791eb0602c8c6aa465802e9d4526d3ec1251d900b209e767753565d5df + md5: 105f0cceef753644912f42e11c1ae9cf + depends: + - __osx >=11.0 + - krb5 >=1.21.3,<1.22.0a0 + - libnghttp2 >=1.64.0,<2.0a0 + - libssh2 >=1.11.1,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.1,<4.0a0 + - zstd >=1.5.6,<1.6.0a0 + arch: arm64 + platform: osx + license: curl + license_family: MIT + purls: [] + size: 387893 + timestamp: 1739512564746 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcusolver-11.6.1.9-he02047a_2.conda + sha256: df4f8a94bffb59dc3da28fb5a892c1ef2553f8afd49f141d3e2da8c92f276a56 + md5: 9f6877f8936be962f598db5e9b8efc51 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libcublas >=12.4.5.8,<12.5.0a0 + - libcusparse >=12.3.1.170,<12.4.0a0 + - libgcc-ng >=12 + - libnvjitlink >=12.4.127,<12.5.0a0 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 81594879 + timestamp: 1715711788074 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcusparse-12.3.1.170-he02047a_2.conda + sha256: f2254e41c93a8c3529690c19350556708182ef699ca658c6554eeb7eb4b8c3de + md5: 1c4c7ff54dc5b947f2ab8f5ff8a28dae + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libnvjitlink >=12.4.127,<12.5.0a0 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 117818451 + timestamp: 1715711610677 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda + sha256: 776092346da87a2a23502e14d91eb0c32699c4a1522b7331537bd1c3751dcff5 + md5: 5b3e1610ff8bd5443476b91d618f5b77 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + purls: [] + size: 523505 + timestamp: 1736877862502 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda + sha256: d789471216e7aba3c184cd054ed61ce3f6dac6f87a50ec69291b9297f8c18724 + md5: c277e0a4d549b03ac1e9d6cbbe3d017b + depends: + - ncurses + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - ncurses >=6.5,<7.0a0 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 134676 + timestamp: 1738479519902 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20250104-pl5321h976ea20_0.conda + sha256: c0b27546aa3a23d47919226b3a1635fccdb4f24b94e72e206a751b33f46fd8d6 + md5: fb640d776fc92b682a14e001980825b1 + depends: + - ncurses + - libgcc >=13 + - ncurses >=6.5,<7.0a0 + arch: aarch64 + platform: linux + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 148125 + timestamp: 1738479808948 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda + sha256: 66aa216a403de0bb0c1340a88d1a06adaff66bae2cfd196731aa24db9859d631 + md5: 44083d2d2c2025afca315c7a172eab2b + depends: + - ncurses + - __osx >=11.0 + - ncurses >=6.5,<7.0a0 + arch: arm64 + platform: osx + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 107691 + timestamp: 1738479560845 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda + sha256: 1cd6048169fa0395af74ed5d8f1716e22c19a81a8a36f934c110ca3ad4dd27b4 + md5: 172bf1cd1ff8629f2b1179945ed45055 + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 112766 + timestamp: 1702146165126 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libev-4.33-h31becfc_2.conda + sha256: 973af77e297f1955dd1f69c2cbdc5ab9dfc88388a5576cd152cda178af0fd006 + md5: a9a13cb143bbaa477b1ebaefbe47a302 + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 115123 + timestamp: 1702146237623 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libev-4.33-h93a5062_2.conda + sha256: 95cecb3902fbe0399c3a7e67a5bed1db813e5ab0e22f4023a5e0f722f2cc214f + md5: 36d33e440c31857372a72137f78bacf5 + arch: arm64 + platform: osx + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 107458 + timestamp: 1702146414478 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libevent-2.1.12-hf998b51_1.conda + sha256: 2e14399d81fb348e9d231a82ca4d816bf855206923759b69ad006ba482764131 + md5: a1cfcc585f0c42bf8d5546bb1dfb668d + depends: + - libgcc-ng >=12 + - openssl >=3.1.1,<4.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 427426 + timestamp: 1685725977222 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libevent-2.1.12-h4ba1bb4_1.conda + sha256: 01333cc7d6e6985dd5700b43660d90e9e58049182017fd24862088ecbe1458e4 + md5: 96ae6083cd1ac9f6bc81631ac835b317 + depends: + - libgcc-ng >=12 + - openssl >=3.1.1,<4.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 438992 + timestamp: 1685726046519 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libevent-2.1.12-h2757513_1.conda + sha256: 8c136d7586259bb5c0d2b913aaadc5b9737787ae4f40e3ad1beaf96c80b919b7 + md5: 1a109764bff3bdc7bdd84088347d71dc + depends: + - openssl >=3.1.1,<4.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 368167 + timestamp: 1685726248899 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda + sha256: 56541b98447b58e52d824bd59d6382d609e11de1f8adf20b23143e353d2b8d26 + md5: db833e03127376d461e1e13e76f09b6c + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + constrains: + - expat 2.6.4.* + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 73304 + timestamp: 1730967041968 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.6.4-h5ad3122_0.conda + sha256: f42e758009ba9db90d1fe7992bc3e60d0c52f71fb20923375d2c44ae69a5a2b3 + md5: f1b3fab36861b3ce945a13f0dfdfc688 + depends: + - libgcc >=13 + constrains: + - expat 2.6.4.* + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 72345 + timestamp: 1730967203789 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.4-h286801f_0.conda + sha256: e42ab5ace927ee7c84e3f0f7d813671e1cf3529f5f06ee5899606630498c2745 + md5: 38d2656dd914feb0cab8c629370768bf + depends: + - __osx >=11.0 + constrains: + - expat 2.6.4.* + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 64693 + timestamp: 1730967175868 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_0.conda + sha256: 67a6c95e33ebc763c1adc3455b9a9ecde901850eb2fceb8e646cc05ef3a663da + md5: e3eb7806380bc8bcecba6d749ad5f026 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 53415 + timestamp: 1739260413716 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.4.6-he21f813_0.conda + sha256: 41568066beefe7b319ff27d85952242e5b77fb753d705b8716041959e17c35c2 + md5: 966084fccf3ad62a3160666cda869f28 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 51513 + timestamp: 1739260449772 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 + sha256: 41b3d13efb775e340e4dba549ab5c029611ea6918703096b2eaa9c015c0750ca + md5: 086914b672be056eb70fd4285b6783b6 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 39020 + timestamp: 1636488587153 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h767d61c_2.conda + sha256: 3a572d031cb86deb541d15c1875aaa097baefc0c580b54dc61f5edab99215792 + md5: ef504d1acbd74b7cc6849ef8af47dd03 + depends: + - __glibc >=2.17,<3.0.a0 + - _openmp_mutex >=4.5 + constrains: + - libgomp 14.2.0 h767d61c_2 + - libgcc-ng ==14.2.0=*_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 847885 + timestamp: 1740240653082 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-14.2.0-he277a41_2.conda + sha256: a57f7f9ba2a12f56eafdcd25b6d75f7be10b8fc1a802a58b76a77ca8c66f4503 + md5: 6b4268a60b10f29257b51b9b67ff8d76 + depends: + - _openmp_mutex >=4.5 + constrains: + - libgcc-ng ==14.2.0=*_2 + - libgomp 14.2.0 he277a41_2 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 535507 + timestamp: 1740241069780 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_2.conda + sha256: fb7558c328b38b2f9d2e412c48da7890e7721ba018d733ebdfea57280df01904 + md5: a2222a6ada71fb478682efe483ce0f92 + depends: + - libgcc 14.2.0 h767d61c_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 53758 + timestamp: 1740240660904 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-14.2.0-he9431aa_2.conda + sha256: 9647f75cddc18b07eebe6e1f21500eed50a6af2c43c84e831b4c7a597e10d226 + md5: 692c2bb75f32cfafb6799cf6d1c5d0e0 + depends: + - libgcc 14.2.0 he277a41_2 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 53622 + timestamp: 1740241074834 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_2.conda + sha256: e05263e8960da03c341650f2a3ffa4ccae4e111cb198e8933a2908125459e5a6 + md5: fb54c4ea68b460c278d26eea89cfbcc3 + depends: + - libgfortran5 14.2.0 hf1ad2bd_2 + constrains: + - libgfortran-ng ==14.2.0=*_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 53733 + timestamp: 1740240690977 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_2.conda + sha256: 996d3c0505301901a7ab23b5e7daad21635d1c065240bb0f4faf7e4f75d7f49d + md5: d8b9d9dc0c8cd97d375b48e55947ba70 + depends: + - libgfortran5 14.2.0 hb6113d0_2 + constrains: + - libgfortran-ng ==14.2.0=*_2 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 53611 + timestamp: 1740241100147 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda + sha256: 44e541b4821c96b28b27fef5630883a60ce4fee91fd9c79f25a199f8f73f337b + md5: 4a55d9e169114b2b90d3ec4604cd7bbf + depends: + - libgfortran5 13.2.0 hf226fd6_3 + arch: arm64 + platform: osx + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 110233 + timestamp: 1707330749033 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-ng-14.2.0-h69a702a_2.conda + sha256: 688a5968852e677d2a64974c8869ffb120eac21997ced7d15c599f152ef6857e + md5: 4056c857af1a99ee50589a941059ec55 + depends: + - libgfortran 14.2.0 h69a702a_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 53781 + timestamp: 1740240884760 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hf1ad2bd_2.conda + sha256: c17b7cf3073a1f4e1f34d50872934fa326346e104d3c445abc1e62481ad6085c + md5: 556a4fdfac7287d349b8f09aba899693 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14.2.0 + constrains: + - libgfortran 14.2.0 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 1461978 + timestamp: 1740240671964 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_2.conda + sha256: 7b9e1d3666a00e5a52e5d43c003bd1c73ab472804be513c070aaedca9c4c2a9a + md5: cd754566661513808ef2408c4ab99a2f + depends: + - libgcc >=14.2.0 + constrains: + - libgfortran 14.2.0 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 1100765 + timestamp: 1740241083241 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda + sha256: bafc679eedb468a86aa4636061c55966186399ee0a04b605920d208d97ac579a + md5: 66ac81d54e95c534ae488726c1f698ea + depends: + - llvm-openmp >=8.0.0 + constrains: + - libgfortran 5.0.0 13_2_0_*_3 + arch: arm64 + platform: osx + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 997381 + timestamp: 1707330687590 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_2.conda + sha256: 4e303711fb7413bf98995beac58e731073099d7a669a3b81e49330ca8da05174 + md5: b11c09d9463daf4cae492d29806b1889 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 462783 + timestamp: 1740241005079 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.35.0-h2b5623c_0.conda + sha256: d747d14c69da512d8993a995dc2df90e857778b0a8542f12fb751544128af685 + md5: 1040ab07d7af9f23cf2466ffe4e58db1 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcurl >=8.11.1,<9.0a0 + - libgcc >=13 + - libgrpc >=1.67.1,<1.68.0a0 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + - openssl >=3.4.0,<4.0a0 + constrains: + - libgoogle-cloud 2.35.0 *_0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 1258035 + timestamp: 1738662406183 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-2.35.0-hccf9d24_0.conda + sha256: b5d323807ea699e76d9ebb829e48100446663978a1aac9adf538249864f73f97 + md5: f22720e07abb547ebce78a3aa7b97d69 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcurl >=8.11.1,<9.0a0 + - libgcc >=13 + - libgrpc >=1.67.1,<1.68.0a0 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + - openssl >=3.4.0,<4.0a0 + constrains: + - libgoogle-cloud 2.35.0 *_0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 1258015 + timestamp: 1738662706891 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-2.35.0-hdbe95d5_0.conda + sha256: 9bee9773540956d8a2ca0b317f73d94916200a4bfd8151319bf7fdcbf704d692 + md5: b1ea94282f38b142f8bc842ef7bcc18c + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcurl >=8.11.1,<9.0a0 + - libcxx >=18 + - libgrpc >=1.67.1,<1.68.0a0 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - openssl >=3.4.0,<4.0a0 + constrains: + - libgoogle-cloud 2.35.0 *_0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 877733 + timestamp: 1738662822079 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.35.0-h0121fbd_0.conda + sha256: cb1ef70e55d2c1defbfd8413dbe85b5550782470dda4f8d393f28d41b6d9b007 + md5: 34e2243e0428aac6b3e903ef99b6d57d + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil + - libcrc32c >=1.1.2,<1.2.0a0 + - libcurl + - libgcc >=13 + - libgoogle-cloud 2.35.0 h2b5623c_0 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 785777 + timestamp: 1738662565066 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-storage-2.35.0-hb9b2b65_0.conda + sha256: cf316f07d5dcc3b6669bf6d93203d435133c99d075a9f92dfa28eff1bd4def74 + md5: ae6ab5b7af1409d0eafd2b77c5d5528a + depends: + - libabseil + - libcrc32c >=1.1.2,<1.2.0a0 + - libcurl + - libgcc >=13 + - libgoogle-cloud 2.35.0 hccf9d24_0 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 739471 + timestamp: 1738662862568 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-storage-2.35.0-h7081f7f_0.conda + sha256: 52dc2d18264543b564b59fb80338fbd9cb2296f011d75f41adcd85041795201c + md5: 958beca4e16f59360e30c48ff0351e04 + depends: + - __osx >=11.0 + - libabseil + - libcrc32c >=1.1.2,<1.2.0a0 + - libcurl + - libcxx >=18 + - libgoogle-cloud 2.35.0 hdbe95d5_0 + - libzlib >=1.3.1,<2.0a0 + - openssl + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 529210 + timestamp: 1738664024959 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.67.1-h25350d4_1.conda + sha256: 014627485b3cf0ea18e04c0bab07be7fb98722a3aeeb58477acc7e1c3d2f911e + md5: 0c6497a760b99a926c7c12b74951a39c + depends: + - __glibc >=2.17,<3.0.a0 + - c-ares >=1.34.4,<2.0a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libre2-11 >=2024.7.2 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + - re2 + constrains: + - grpc-cpp =1.67.1 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 7792251 + timestamp: 1735584856826 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgrpc-1.67.1-hf7ccdd3_1.conda + sha256: 3fa173dc1d7456aac2b26937daae86a08432a31640e3d6569c62edc661fc9bbe + md5: 8fb41a425bebaeb3d0fa568503612e64 + depends: + - c-ares >=1.34.4,<2.0a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libre2-11 >=2024.7.2 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + - re2 + constrains: + - grpc-cpp =1.67.1 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 7430006 + timestamp: 1735585769731 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgrpc-1.67.1-h0a426d6_1.conda + sha256: 630edf63981818ff590367cb95fddbed0f5a390464d0952c90ec81de899e84a6 + md5: 8a3cba079d6ac985e7d73c76a678fbb4 + depends: + - __osx >=11.0 + - c-ares >=1.34.4,<2.0a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libre2-11 >=2024.7.2 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + - re2 + constrains: + - grpc-cpp =1.67.1 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 5311706 + timestamp: 1735585137716 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libhwloc-2.11.2-default_h0d58e46_1001.conda + sha256: d14c016482e1409ae1c50109a9ff933460a50940d2682e745ab1c172b5282a69 + md5: 804ca9e91bcaea0824a341d55b1684f2 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + - libxml2 >=2.13.4,<3.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 2423200 + timestamp: 1731374922090 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h4ce23a2_1.conda + sha256: 18a4afe14f731bfb9cf388659994263904d20111e42f841e9eea1bb6f91f4ab4 + md5: e796ff8ddc598affdf7c173d6145f087 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: LGPL-2.1-only + purls: [] + size: 713084 + timestamp: 1740128065462 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libiconv-1.18-hc99b53d_1.conda + sha256: 3db14977036fe1f511a6dbecacbeff3fdb58482c5c0cf87a2ea3232f5a540836 + md5: 81541d85a45fbf4d0a29346176f1f21c + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: LGPL-2.1-only + purls: [] + size: 718600 + timestamp: 1740130562607 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.18-hfe07756_1.conda + sha256: d30780d24bf3a30b4f116fca74dedb4199b34d500fe6c52cced5f8cc1e926f03 + md5: 450e6bdc0c7d986acf7b8443dce87111 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: LGPL-2.1-only + purls: [] + size: 681804 + timestamp: 1740128227484 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-16_linux64_mkl.tar.bz2 + build_number: 16 + sha256: d6201f860b2d76ed59027e69c2bbad6d1cb211a215ec9705cc487cde488fa1fa + md5: a2f166748917d6d6e4707841ca1f519e + depends: + - libblas 3.9.0 16_linux64_mkl + constrains: + - blas * mkl + - liblapacke 3.9.0 16_linux64_mkl + - libcblas 3.9.0 16_linux64_mkl + - mkl <2025 + arch: x86_64 + platform: linux + track_features: + - blas_mkl + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 12791 + timestamp: 1660094578903 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-31_h411afd4_openblas.conda + build_number: 31 + sha256: 27613828ff6fb258b2e58802617df549f00089660ea8ab6c55c68f042c570162 + md5: 41dbff5eb805a75c120a7b7a1c744dc2 + depends: + - libblas 3.9.0 31_h1a9f1db_openblas + constrains: + - blas =2.131=openblas + - libcblas =3.9.0=31*_openblas + - liblapacke =3.9.0=31*_openblas + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 16845 + timestamp: 1740087923843 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-19_osxarm64_openblas.conda + build_number: 19 + sha256: f19cff537403c9feed98c7e18259022102b087f2b72a757e8a417476b9cf30c1 + md5: 3638eacb084c374f41f9efa40d20a47b + depends: + - libblas 3.9.0 19_osxarm64_openblas + constrains: + - libcblas 3.9.0 19_osxarm64_openblas + - blas * openblas + - liblapacke 3.9.0 19_osxarm64_openblas + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 14721 + timestamp: 1697484603691 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblapacke-3.9.0-16_linux64_mkl.tar.bz2 + build_number: 16 + sha256: 935036dc46c483cba8288c6de58d461ab3f42915715ffe9485105ad1dd203a0e + md5: 44ccc4d4dca6a8d57fa17442bc64b5a1 + depends: + - libblas 3.9.0 16_linux64_mkl + - libcblas 3.9.0 16_linux64_mkl + - liblapack 3.9.0 16_linux64_mkl + constrains: + - blas * mkl + - mkl <2025 + arch: x86_64 + platform: linux + track_features: + - blas_mkl + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 12793 + timestamp: 1660094586875 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda + sha256: cad52e10319ca4585bc37f0bc7cce99ec7c15dc9168e42ccb96b741b0a27db3f + md5: 42d5b6a0f30d3c10cd88cb8584fda1cb + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: 0BSD + purls: [] + size: 111357 + timestamp: 1738525339684 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.4-h86ecc28_0.conda + sha256: 96413664f0fade54a4931940d18749cfc8e6308349dbb0cb83adb2394ca1f730 + md5: b88244e0a115cc34f7fbca9b11248e76 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: 0BSD + purls: [] + size: 124197 + timestamp: 1738528201520 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.4-h39f12f2_0.conda + sha256: 560c59d3834cc652a84fb45531bd335ad06e271b34ebc216e380a89798fe8e2c + md5: e3fd1f8320a100f2b210e690a57cd615 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: 0BSD + purls: [] + size: 98945 + timestamp: 1738525462560 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda + sha256: b0f2b3695b13a989f75d8fd7f4778e1c7aabe3b36db83f0fe80b2cd812c0e975 + md5: 19e57602824042dfd0446292ef90488b + depends: + - __glibc >=2.17,<3.0.a0 + - c-ares >=1.32.3,<2.0a0 + - libev >=4.33,<4.34.0a0 + - libev >=4.33,<5.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.3.2,<4.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 647599 + timestamp: 1729571887612 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnghttp2-1.64.0-hc8609a4_0.conda + sha256: c093c6d370aadbf0409c20b6c54c488ee2f6fea976181919fcc63e87ee232673 + md5: f52c614fa214a8bedece9421c771670d + depends: + - c-ares >=1.32.3,<2.0a0 + - libev >=4.33,<4.34.0a0 + - libev >=4.33,<5.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.3.2,<4.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 714610 + timestamp: 1729571912479 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.64.0-h6d7220d_0.conda + sha256: 00cc685824f39f51be5233b54e19f45abd60de5d8847f1a56906f8936648b72f + md5: 3408c02539cee5f1141f9f11450b6a51 + depends: + - __osx >=11.0 + - c-ares >=1.34.2,<2.0a0 + - libcxx >=17 + - libev >=4.33,<4.34.0a0 + - libev >=4.33,<5.0a0 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.3.2,<4.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 566719 + timestamp: 1729572385640 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnpp-12.2.5.30-he02047a_2.conda + sha256: d8c97716825955c48681f4a3cde2f0cbbacc77c91b4cd944d4906f63385487df + md5: a96a1edd18bee676cf2dcca251d3d6a4 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 99461229 + timestamp: 1715711634268 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda + sha256: 26d77a3bb4dceeedc2a41bd688564fe71bf2d149fdcf117049970bc02ff1add6 + md5: 30fd6e37fe21f86f4bd26d6ee73eeec7 + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: LGPL-2.1-only + license_family: GPL + purls: [] + size: 33408 + timestamp: 1697359010159 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda + sha256: fd18c2b75d7411096428d36a70b36b1a17e31f7b8956b6905d145792d49e97f8 + md5: c14f32510f694e3185704d89967ec422 + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: LGPL-2.1-only + license_family: GPL + purls: [] + size: 34501 + timestamp: 1697358973269 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnvfatbin-12.4.127-he02047a_2.conda + sha256: d40f37532f86cbbe63439489be0e88561819190392cc519c69365b3fc47a2c5b + md5: d746b76642b4ac6e40f1219405672beb + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 792025 + timestamp: 1715711761341 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnvjitlink-12.4.127-he02047a_2.conda + sha256: 31382c8ef388a51bd2c283a239e037b8b30f9c7ecf6ec9744824445b59db39b6 + md5: 303845d6c48bf4185dc4138634650468 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 16571958 + timestamp: 1715711715842 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnvjpeg-12.3.1.117-he02047a_2.conda + sha256: 49a182f8da4ba30fbfee9692976d9da349371175c9c9576768d4754a51fef326 + md5: 8f3ed0e41a4b505de40b4f96f4bfb0fa + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 2491500 + timestamp: 1715711780068 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.29-pthreads_h9d3fd7e_0.conda + sha256: 3a2ccf4c9098cd18a636e9b7fff947fdeb4962bcfb75c9d6fd80b8c50caf6a3c + md5: a99e2bfcb1ad6362544c71281eb617e9 + depends: + - libgcc >=14 + - libgfortran + - libgfortran5 >=14.2.0 + constrains: + - openblas >=0.3.29,<0.3.30.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 4801657 + timestamp: 1739825308974 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.24-openmp_hd76b1f2_0.conda + sha256: 21edfdf620ac5c93571aab452199b6b4622c445441dad88ab4d2eb326a7b91b3 + md5: aacb05989f358affe1bafd4ea7294db4 + depends: + - libgfortran 5.* + - libgfortran5 >=12.3.0 + - llvm-openmp >=15.0.7 + constrains: + - openblas >=0.3.24,<0.3.25.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 2849225 + timestamp: 1693784744674 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-1.18.0-hfcad708_1.conda + sha256: 4ea235e08676f16b0d3c3380befe1478c0fa0141512ee709b011005c55c9619f + md5: 1f5a5d66e77a39dc5bd639ec953705cf + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcurl >=8.11.1,<9.0a0 + - libgrpc >=1.67.1,<1.68.0a0 + - libopentelemetry-cpp-headers 1.18.0 ha770c72_1 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libzlib >=1.3.1,<2.0a0 + - nlohmann_json + - prometheus-cpp >=1.3.0,<1.4.0a0 + constrains: + - cpp-opentelemetry-sdk =1.18.0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 801927 + timestamp: 1735643375271 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopentelemetry-cpp-1.18.0-h60b47f9_1.conda + sha256: 160c493cd0f897955b0b6035b51c6d7255ffbaed3c8a12d43e8e8a719d405aba + md5: afe3c8c53f4b6d27d553c230d4b34038 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcurl >=8.11.1,<9.0a0 + - libgrpc >=1.67.1,<1.68.0a0 + - libopentelemetry-cpp-headers 1.18.0 h8af1aa0_1 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libzlib >=1.3.1,<2.0a0 + - nlohmann_json + - prometheus-cpp >=1.3.0,<1.4.0a0 + constrains: + - cpp-opentelemetry-sdk =1.18.0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 800896 + timestamp: 1735643533825 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopentelemetry-cpp-1.18.0-h0c05b2d_1.conda + sha256: c6bcbd53d62a9e0d8c667e560db0ca2ecb7679277cbb3c23457aabe74fcb8cba + md5: 19c46cc18825f3924251c39ec1b0d983 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcurl >=8.11.1,<9.0a0 + - libgrpc >=1.67.1,<1.68.0a0 + - libopentelemetry-cpp-headers 1.18.0 hce30654_1 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libzlib >=1.3.1,<2.0a0 + - nlohmann_json + - prometheus-cpp >=1.3.0,<1.4.0a0 + constrains: + - cpp-opentelemetry-sdk =1.18.0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 529588 + timestamp: 1735643889612 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-headers-1.18.0-ha770c72_1.conda + sha256: aa1f7dea79ea8513ff77339ba7c6e9cf10dfa537143e7718b1cfb3af52b649f2 + md5: 4fb055f57404920a43b147031471e03b + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 320359 + timestamp: 1735643346175 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopentelemetry-cpp-headers-1.18.0-h8af1aa0_1.conda + sha256: 981c0b29a0789597fa8ed147b02df2d2ad0c7f863d87df74770c40cee1800228 + md5: 282193b19a19e3b5d75d18ef82713ef0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 319401 + timestamp: 1735643509251 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopentelemetry-cpp-headers-1.18.0-hce30654_1.conda + sha256: 82e5f5ba64debbaab3c601b265dfc0cdb4d2880feba9bada5fd2e67b9f91ada5 + md5: e965dad955841507549fdacd8f7f94c0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 320565 + timestamp: 1735643673319 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-19.0.1-h081d1f1_0_cpu.conda + sha256: e9c4a07e79886963bfcd05894a15b5d4c7137c1122273de68845315c35d6505d + md5: 8b58c378d65b213c001f04a174a2a70e + depends: + - __glibc >=2.17,<3.0.a0 + - libarrow 19.0.1 hfa2a6e7_0_cpu + - libgcc >=13 + - libstdcxx >=13 + - libthrift >=0.21.0,<0.21.1.0a0 + - openssl >=3.4.1,<4.0a0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 1244749 + timestamp: 1739769006551 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-19.0.1-hfc78867_0_cpu.conda + sha256: 4822fcb00e97644ce74f313cd2f44fe85085c64b1481ac7e1a22ee7dd2ef772a + md5: d19e95e75e9005e712ec81409868b880 + depends: + - libarrow 19.0.1 h36213f4_0_cpu + - libgcc >=13 + - libstdcxx >=13 + - libthrift >=0.21.0,<0.21.1.0a0 + - openssl >=3.4.1,<4.0a0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 1154758 + timestamp: 1739770461892 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-19.0.1-h636d7b7_0_cpu.conda + sha256: 54e4a18493d63b7fbd5cf39fadabe665bcf462121a7bc2f394f510b0bcf22031 + md5: 0cce19e6981849babe6c73797abbfa4e + depends: + - __osx >=11.0 + - libarrow 19.0.1 h0945df6_0_cpu + - libcxx >=18 + - libthrift >=0.21.0,<0.21.1.0a0 + - openssl >=3.4.1,<4.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 895659 + timestamp: 1739768176454 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda + sha256: 51125ebb8b7152e4a4e69fd2398489c4ec8473195c27cde3cbdf1cb6d18c5493 + md5: d8703f1ffe5a06356f06467f1d0b9464 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 2960815 + timestamp: 1735577210663 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.3-h44a3b7b_1.conda + sha256: ecb69f2b1668e784b41ba667493be846662d5ef702bef64fb2e013bb1364cdc4 + md5: 68f807f7cc13951652bbe048253fd405 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 2788074 + timestamp: 1735576315676 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.3-h3bd63a1_1.conda + sha256: f58a16b13ad53346903c833e266f83c3d770a43a432659b98710aed85ca885e7 + md5: bdbfea4cf45ae36652c6bbcc2e7ebe91 + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=18 + - libzlib >=1.3.1,<2.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 2271580 + timestamp: 1735576361997 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_2.conda + sha256: 4420f8362c71251892ba1eeb957c5e445e4e1596c0c651c28d0d8b415fe120c7 + md5: b2fede24428726dd867611664fb372e8 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libstdcxx >=13 + constrains: + - re2 2024.07.02.* + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 209793 + timestamp: 1735541054068 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_2.conda + sha256: 862c20de0120f802e618dcb25913d00c5b82f91f4be60b2d46a774e851adc2f6 + md5: 9a7dbbaab49f76a6f36e5c9d98e323a7 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libstdcxx >=13 + constrains: + - re2 2024.07.02.* + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 204305 + timestamp: 1735540986919 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h07bc746_2.conda + sha256: 112a73ad483353751d4c5d63648c69a4d6fcebf5e1b698a860a3f5124fc3db96 + md5: 6b1e3624d3488016ca4f1ca0c412efaa + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=18 + constrains: + - re2 2024.07.02.* + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 167155 + timestamp: 1735541067807 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsentencepiece-0.2.0-h8e10757_10.conda + sha256: dc399e0f04a09f8c1807c3b36e578eb81f81891c0ddf21de9c1fb9f048ce4031 + md5: 4f43dbcfacd3cc9a183dd3a48b94d3c0 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 823649 + timestamp: 1735627841126 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsentencepiece-0.2.0-h6164ad9_10.conda + sha256: 57074803772f65d4075b7d6dc17ff5aa40ec3a30109fa4225ca16911504c4a8b + md5: a7a192edc9cfba26a27df3283203e6a1 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 800865 + timestamp: 1735627982895 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsentencepiece-0.2.0-he13a0af_10.conda + sha256: 3347a8840d085ce1661928e736229f068d56c84312fbed90886e059023d85611 + md5: 1f67e5e30edd56e0a0bf6df6bb711a9d + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 754657 + timestamp: 1735628030895 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda + sha256: 0105bd108f19ea8e6a78d2d994a6d4a8db16d19a41212070d2d1d48a63c34161 + md5: a587892d3c13b6621a6091be690dbca2 + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: ISC + purls: [] + size: 205978 + timestamp: 1716828628198 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.20-h68df207_0.conda + sha256: 448df5ea3c5cf1af785aad46858d7a5be0522f4234a4dc9bb764f4d11ff3b981 + md5: 2e4a8f23bebdcb85ca8e5a0fbe75666a + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: ISC + purls: [] + size: 177394 + timestamp: 1716828514515 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda + sha256: fade8223e1e1004367d7101dd17261003b60aa576df6d7802191f8972f7470b1 + md5: a7ce36e284c5faaf93c220dfc39e3abd + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: ISC + purls: [] + size: 164972 + timestamp: 1716828607917 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.49.1-hee588c1_1.conda + sha256: 7a09eef804ef7cf4d88215c2297eabb72af8ad0bd5b012060111c289f14bbe7d + md5: 73cea06049cc4174578b432320a003b8 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux + license: Unlicense + purls: [] + size: 915956 + timestamp: 1739953155793 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.49.1-h5eb1b54_1.conda + sha256: 920fb3b7d3b873babf79a3e392cc82d43b8bd02a573ccaff34219efb5cf7b51e + md5: 150d64241fa27d9d35a7f421ca968a6c + depends: + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + arch: aarch64 + platform: linux + license: Unlicense + purls: [] + size: 915118 + timestamp: 1739953101699 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.1-h3f77e49_1.conda + sha256: 266639fb10ca92287961574b0b4d6031fa40dd9d723d64a0fcb08513a24dab03 + md5: c83357a21092bd952933c36c5cb4f4d6 + depends: + - __osx >=11.0 + - libzlib >=1.3.1,<2.0a0 + arch: arm64 + platform: osx + license: Unlicense + purls: [] + size: 898767 + timestamp: 1739953312379 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hf672d98_0.conda + sha256: 0407ac9fda2bb67e11e357066eff144c845801d00b5f664efbc48813af1e7bb9 + md5: be2de152d8073ef1c01b7728475f2fe7 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 304278 + timestamp: 1732349402869 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libssh2-1.11.1-ha41c0db_0.conda + sha256: 40f2af5357457546bd11cd64a3b9043d83865180f65ce602515c35f353be35c7 + md5: aeffe03c0e598f015aab08dbb04f6ee4 + depends: + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 311577 + timestamp: 1732349396421 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.1-h9cc3647_0.conda + sha256: f7047c6ed44bcaeb04432e8c74da87591940d091b0a3940c0d884b7faa8062e9 + md5: ddc7194676c285513706e5fc64f214d7 + depends: + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 279028 + timestamp: 1732349599461 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-h8f9b012_2.conda + sha256: 8f5bd92e4a24e1d35ba015c5252e8f818898478cb3bc50bd8b12ab54707dc4da + md5: a78c856b6dc6bf4ea8daeb9beaaa3fb0 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc 14.2.0 h767d61c_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 3884556 + timestamp: 1740240685253 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_2.conda + sha256: c30a74bc996013907f6d9f344da007c26d98ef9a0831151cd50aece3125c45d5 + md5: eadee2cda99697e29411c1013c187b92 + depends: + - libgcc 14.2.0 he277a41_2 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 3810779 + timestamp: 1740241094774 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_2.conda + sha256: e86f38b007cf97cc2c67cd519f2de12a313c4ee3f5ef11652ad08932a5e34189 + md5: c75da67f045c2627f59e6fcb5f4e3a9b + depends: + - libstdcxx 14.2.0 h8f9b012_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 53830 + timestamp: 1740240722530 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_2.conda + sha256: 0107886ead6f255956d8e520f8dff260f9ab3d0d51512f18c52710c406e4b2df + md5: c934c1fddad582fcc385b608eb06a70c + depends: + - libstdcxx 14.2.0 h3f4de04_2 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 53715 + timestamp: 1740241126343 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libthrift-0.21.0-h0e7cc3e_0.conda + sha256: ebb395232973c18745b86c9a399a4725b2c39293c9a91b8e59251be013db42f0 + md5: dcb95c0a98ba9ff737f7ae482aef7833 + depends: + - __glibc >=2.17,<3.0.a0 + - libevent >=2.1.12,<2.1.13.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.3.2,<4.0a0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 425773 + timestamp: 1727205853307 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libthrift-0.21.0-h154c74f_0.conda + sha256: f04ab1417aca1687edff9c30d8423ace285eb8c053dc16d595c6e47cfeefb274 + md5: c28792bf37f4ecdce8e3cb9e40750650 + depends: + - libevent >=2.1.12,<2.1.13.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.3.2,<4.0a0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 417329 + timestamp: 1727205944238 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libthrift-0.21.0-h64651cc_0.conda + sha256: 7a6c7d5f58cbbc2ccd6493b4b821639fdb0701b9b04c737a949e8cb6adf1c9ad + md5: 7ce2bd2f650f8c31ad7ba4c7bfea61b7 + depends: + - __osx >=11.0 + - libcxx >=17 + - libevent >=2.1.12,<2.1.13.0a0 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.3.2,<4.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 324342 + timestamp: 1727206096912 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.10.0-h4c51ac1_0.conda + sha256: 8e41563ee963bf8ded06da45f4e70bf42f913cb3c2e79364eb3218deffa3cd74 + md5: aeccfff2806ae38430638ffbb4be9610 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 82745 + timestamp: 1737244366901 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.10.0-ha346350_0.conda + sha256: 9c333e07b76ae1ea2c882db764be52dc82f632be66d993a50b35ca9c5475074a + md5: c5166bcfb8348e8fc31ee16ec3981a5e + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 82679 + timestamp: 1737329054400 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.10.0-hda25de7_0.conda + sha256: aca3ef31d3dff5cefd3790742a5ee6548f1cf0201d0e8cee08b01da503484eb6 + md5: 5f741aed1d8d393586a5fdcaaa87f45c + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 83628 + timestamp: 1737244450097 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda + sha256: 787eb542f055a2b3de553614b25f09eefb0a0931b0c87dbcce6efdfd92f04f18 + md5: 40b61aab5c7ba9ff276c41cfffe6b80b + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 33601 + timestamp: 1680112270483 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda + sha256: 616277b0c5f7616c2cdf36f6c316ea3f9aa5bb35f2d4476a349ab58b9b91675f + md5: 000e30b09db0b7c775b21695dff30969 + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 35720 + timestamp: 1680113474501 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda + sha256: 6ae68e0b86423ef188196fff6207ed0c8195dd84273cb5623b85aa08033a410c + md5: 5aa797f8787fe7a17d1b0821485b5adc + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: LGPL-2.1-or-later + purls: [] + size: 100393 + timestamp: 1702724383534 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda + sha256: 6b46c397644091b8a26a3048636d10b989b1bf266d4be5e9474bf763f828f41f + md5: b4df5d7d4b63579d081fd3a4cf99740e + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: LGPL-2.1-or-later + purls: [] + size: 114269 + timestamp: 1702724369203 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.6-h8d12d68_0.conda + sha256: db8af71ea9c0ae95b7cb4a0f59319522ed2243942437a1200ceb391493018d85 + md5: 328382c0e0ca648e5c189d5ec336c604 + depends: + - __glibc >=2.17,<3.0.a0 + - icu >=75.1,<76.0a0 + - libgcc >=13 + - libiconv >=1.18,<2.0a0 + - liblzma >=5.6.4,<6.0a0 + - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 690296 + timestamp: 1739952967309 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.6-h2e0c361_0.conda + sha256: bb075df08b04b1b47e75a250f2ebbb2401c3367057d64b8d44ef1ef3f44480e1 + md5: a159a92f890f862408c951c08f13415f + depends: + - icu >=75.1,<76.0a0 + - libgcc >=13 + - libiconv >=1.18,<2.0a0 + - liblzma >=5.6.4,<6.0a0 + - libzlib >=1.3.1,<2.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 733707 + timestamp: 1739953178456 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.6-hce475f1_0.conda + sha256: 9ce429417545f7616ed528061305b3a1fc3732ff3bb24bd91cba260550879693 + md5: 8654012bd68aa48b94eee6c9faab85b6 + depends: + - __osx >=11.0 + - libiconv >=1.18,<2.0a0 + - liblzma >=5.6.4,<6.0a0 + - libzlib >=1.3.1,<2.0a0 + constrains: + - icu <0.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 582490 + timestamp: 1739953065675 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda + sha256: d4bfe88d7cb447768e31650f06257995601f89076080e76df55e3112d4e47dc4 + md5: edb0dca6bc32e4f4789199455a1dbeb8 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + constrains: + - zlib 1.3.1 *_2 + arch: x86_64 + platform: linux + license: Zlib + license_family: Other + purls: [] + size: 60963 + timestamp: 1727963148474 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda + sha256: 5a2c1eeef69342e88a98d1d95bff1603727ab1ff4ee0e421522acd8813439b84 + md5: 08aad7cbe9f5a6b460d0976076b6ae64 + depends: + - libgcc >=13 + constrains: + - zlib 1.3.1 *_2 + arch: aarch64 + platform: linux + license: Zlib + license_family: Other + purls: [] + size: 66657 + timestamp: 1727963199518 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda + sha256: ce34669eadaba351cd54910743e6a2261b67009624dbc7daeeafdef93616711b + md5: 369964e85dc26bfe78f41399b366c435 + depends: + - __osx >=11.0 + constrains: + - zlib 1.3.1 *_2 + arch: arm64 + platform: osx + license: Zlib + license_family: Other + purls: [] + size: 46438 + timestamp: 1727963202283 +- conda: https://conda.anaconda.org/conda-forge/linux-64/llvm-openmp-15.0.7-h0cdce71_0.conda + sha256: 7c67d383a8b1f3e7bf9e046e785325c481f6868194edcfb9d78d261da4ad65d4 + md5: 589c9a3575a050b583241c3d688ad9aa + depends: + - libzlib >=1.2.13,<2.0.0a0 + constrains: + - openmp 15.0.7|15.0.7.* + arch: x86_64 + platform: linux + license: Apache-2.0 WITH LLVM-exception + license_family: APACHE + purls: [] + size: 3268766 + timestamp: 1673584331056 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-15.0.7-h7cfbb63_0.conda + sha256: 6cc4cf021fc1f06df3b97598bf9583fe7a04fad6a4eef9882558f7932f362bc0 + md5: 358164e15a9320f11b84a53fb8d8e446 + constrains: + - openmp 15.0.7|15.0.7.* + arch: arm64 + platform: osx + license: Apache-2.0 WITH LLVM-exception + license_family: APACHE + purls: [] + size: 263326 + timestamp: 1673584823527 +- conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.10.0-h5888daf_1.conda + sha256: 47326f811392a5fd3055f0f773036c392d26fdb32e4d8e7a8197eed951489346 + md5: 9de5350a85c4a20c685259b889aa6393 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 167055 + timestamp: 1733741040117 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.10.0-h5ad3122_1.conda + sha256: 67e55058d275beea76c1882399640c37b5be8be4eb39354c94b610928e9a0573 + md5: 6654e411da94011e8fbe004eacb8fe11 + depends: + - libgcc >=13 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 184953 + timestamp: 1733740984533 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.10.0-h286801f_1.conda + sha256: 94d3e2a485dab8bdfdd4837880bde3dd0d701e2b97d6134b8806b7c8e69c8652 + md5: 01511afc6cc1909c5303cf31be17b44f + depends: + - __osx >=11.0 + - libcxx >=18 + arch: arm64 + platform: osx + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 148824 + timestamp: 1733741047892 +- pypi: https://download.pytorch.org/whl/MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl#sha256=ac07bad82163452a6884fe8fa0963fb98c2346ba78d779ec06bd7a6262132aee + name: markupsafe + version: 2.1.5 + sha256: ac07bad82163452a6884fe8fa0963fb98c2346ba78d779ec06bd7a6262132aee + requires_python: '>=3.7' +- conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_1.conda + sha256: 4a6bf68d2a2b669fecc9a4a009abd1cf8e72c2289522ff00d81b5a6e51ae78f5 + md5: eb227c3e0bf58f5bd69c0532b157975b + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - jinja2 >=3.0.0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/markupsafe?source=hash-mapping + size: 24604 + timestamp: 1733219911494 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312h998013c_1.conda + sha256: 4aa997b244014d3707eeef54ab0ee497d12c0d0d184018960cce096169758283 + md5: 46e547061080fddf9cf95a0327e8aba6 + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - jinja2 >=3.0.0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/markupsafe?source=hash-mapping + size: 24048 + timestamp: 1733219945697 +- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022718-release.conda + noarch: python + sha256: f3dcb14fed5470c0fc521542cbd2f1c56ca7e46d560f46176b8f926198cb3cbd + md5: 01fe5e0cf46c84a6345e323ad1316764 + depends: + - max-core ==25.2.0.dev2025022718 release + - max-python ==25.2.0.dev2025022718 release + - mojo-jupyter ==25.2.0.dev2025022718 release + - mblack ==25.2.0.dev2025022718 release + license: LicenseRef-Modular-Proprietary + size: 9905 + timestamp: 1740680254354 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022718-release.conda + sha256: 847d5767109a305d7bcad4ac29248a74a384034692934a0c54b00a590c27094a + md5: fc5a9ae36c7805979bd58ca55a25066f + depends: + - mblack ==25.2.0.dev2025022718 release + license: LicenseRef-Modular-Proprietary + size: 249811868 + timestamp: 1740680254354 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022718-release.conda + sha256: 250c35ecccd302e6c7de836ac200a5ece92e74508c2590c585d8803d488fd650 + md5: d88728b468c85902512a0f9b99251035 + depends: + - mblack ==25.2.0.dev2025022718 release + license: LicenseRef-Modular-Proprietary + size: 252108573 + timestamp: 1740680207793 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022718-release.conda + sha256: fb28d9e61aa507ea84b470082d3dc96844a24fe672d4e4c57e832655c5d0a202 + md5: dd8734453f7276a258f3351cc5c506c3 + depends: + - mblack ==25.2.0.dev2025022718 release + license: LicenseRef-Modular-Proprietary + size: 217273450 + timestamp: 1740681819160 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022718-release.conda + noarch: python + sha256: 831b4d62f66f0083321121c6ba25dedab3ee41d5e9f19d9752969592214af398 + md5: f828ace91aa057e4774e84ad459adccf + depends: + - max-core ==25.2.0.dev2025022718 release + - click >=8.0.0 + - numpy >=1.18,<2.0 + - sentencepiece >=0.2.0 + - tqdm >=4.67.1 + constrains: + - aiohttp >=3.11.12 + - fastapi >=0.114.2 + - gguf >=0.14.0 + - hf-transfer >=0.1.9 + - httpx >=0.28.1 + - huggingface_hub >=0.24.0 + - nvitop >=1.4.1 + - opentelemetry-api >=1.29.0 + - opentelemetry-exporter-otlp-proto-http >=1.27.0 + - opentelemetry-exporter-prometheus <1.0.0 + - opentelemetry-sdk >=1.29.0,<2.0 + - pillow >=10.3.0 + - prometheus_client >=0.21.0 + - prometheus-async >=22.2.0 + - psutil >=6.1.1 + - pydantic + - pydantic-settings >=2.7.1 + - pyinstrument >=5.0.1 + - python-json-logger >=2.0.7 + - requests >=2.32.3 + - rich >=13.9.4 + - safetensors >=0.5.2 + - sentinel >=0.3.0 + - sse-starlette >=2.1.2 + - tokenizers >=0.19.0 + - pytorch >=2.2.2,<=2.5.1 + - transformers >=4.40.1 + - uvicorn >=0.34.0 + - uvloop >=0.21.0 + - xgrammar ==0.1.11 + license: LicenseRef-Modular-Proprietary + size: 123584411 + timestamp: 1740680254354 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022718-release.conda + noarch: python + sha256: b9e5755b7bf6314a37a90ef0250c93f5e7c693954d7a6389a97ab9ef06e23cc3 + md5: bfd2e752d0fc9516b78a17169ce9cc78 + depends: + - max-core ==25.2.0.dev2025022718 release + - click >=8.0.0 + - numpy >=1.18,<2.0 + - sentencepiece >=0.2.0 + - tqdm >=4.67.1 + constrains: + - aiohttp >=3.11.12 + - fastapi >=0.114.2 + - gguf >=0.14.0 + - hf-transfer >=0.1.9 + - httpx >=0.28.1 + - huggingface_hub >=0.24.0 + - nvitop >=1.4.1 + - opentelemetry-api >=1.29.0 + - opentelemetry-exporter-otlp-proto-http >=1.27.0 + - opentelemetry-exporter-prometheus <1.0.0 + - opentelemetry-sdk >=1.29.0,<2.0 + - pillow >=10.3.0 + - prometheus_client >=0.21.0 + - prometheus-async >=22.2.0 + - psutil >=6.1.1 + - pydantic + - pydantic-settings >=2.7.1 + - pyinstrument >=5.0.1 + - python-json-logger >=2.0.7 + - requests >=2.32.3 + - rich >=13.9.4 + - safetensors >=0.5.2 + - sentinel >=0.3.0 + - sse-starlette >=2.1.2 + - tokenizers >=0.19.0 + - pytorch >=2.2.2,<=2.5.1 + - transformers >=4.40.1 + - uvicorn >=0.34.0 + - uvloop >=0.21.0 + - xgrammar ==0.1.11 + license: LicenseRef-Modular-Proprietary + size: 126004454 + timestamp: 1740680207793 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022718-release.conda + noarch: python + sha256: 7da9f4655082bb64c2b0cc996ffefa0ce5c49744854ed77a9b0d000e27cf5a55 + md5: b16d498a148aa61dca2a6bfec5cb8e46 + depends: + - max-core ==25.2.0.dev2025022718 release + - click >=8.0.0 + - numpy >=1.18,<2.0 + - sentencepiece >=0.2.0 + - tqdm >=4.67.1 + constrains: + - aiohttp >=3.11.12 + - fastapi >=0.114.2 + - gguf >=0.14.0 + - hf-transfer >=0.1.9 + - httpx >=0.28.1 + - huggingface_hub >=0.24.0 + - nvitop >=1.4.1 + - opentelemetry-api >=1.29.0 + - opentelemetry-exporter-otlp-proto-http >=1.27.0 + - opentelemetry-exporter-prometheus <1.0.0 + - opentelemetry-sdk >=1.29.0,<2.0 + - pillow >=10.3.0 + - prometheus_client >=0.21.0 + - prometheus-async >=22.2.0 + - psutil >=6.1.1 + - pydantic + - pydantic-settings >=2.7.1 + - pyinstrument >=5.0.1 + - python-json-logger >=2.0.7 + - requests >=2.32.3 + - rich >=13.9.4 + - safetensors >=0.5.2 + - sentinel >=0.3.0 + - sse-starlette >=2.1.2 + - tokenizers >=0.19.0 + - pytorch >=2.2.2,<=2.5.1 + - transformers >=4.40.1 + - uvicorn >=0.34.0 + - uvloop >=0.21.0 + - xgrammar ==0.1.11 + license: LicenseRef-Modular-Proprietary + size: 112658409 + timestamp: 1740681819160 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022718-release.conda + noarch: python + sha256: ff042a8abfed0e2e36b207e3d4f59a2b4577dea7f099b08d1aaef128ab796f09 + md5: 719ca7123d53415adcdd7f0cb8396c51 + depends: + - python >=3.9,<3.13 + - click >=8.0.0 + - mypy_extensions >=0.4.3 + - packaging >=22.0 + - pathspec >=0.9.0 + - platformdirs >=2 + - typing_extensions >=v4.12.2 + - python + license: MIT + size: 130852 + timestamp: 1740680254353 +- conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-2022.1.0-h84fe81f_915.tar.bz2 + sha256: 767318c4f2057822a7ebc238d6065ce12c6ae60df4ab892758adb79b1057ce02 + md5: b9c8f925797a93dbff45e1626b025a6b + depends: + - _openmp_mutex * *_llvm + - _openmp_mutex >=4.5 + - llvm-openmp >=14.0.3 + - tbb 2021.* + arch: x86_64 + platform: linux + license: LicenseRef-ProprietaryIntel + license_family: Proprietary + purls: [] + size: 209326825 + timestamp: 1652946040193 +- conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-devel-2022.1.0-ha770c72_916.tar.bz2 + sha256: 93d957608b17ada3039ff0acad2b8596451caa6829b3502fe87375e639ffc34e + md5: 69ba49e445f87aea2cba343a71a35ca2 + depends: + - mkl 2022.1.0 h84fe81f_915 + - mkl-include 2022.1.0 h84fe81f_915 + arch: x86_64 + platform: linux + license: LicenseRef-ProprietaryIntel + license_family: Proprietary + purls: [] + size: 25614 + timestamp: 1652946458276 +- conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-include-2022.1.0-h84fe81f_915.tar.bz2 + sha256: 63415fe64e99f8323d0191d45ea5b1ec3973317e728b9071267ffb7ff3b38364 + md5: 2dcd1acca05c11410d4494d7fc7dfa2a + arch: x86_64 + platform: linux + license: LicenseRef-ProprietaryIntel + license_family: Proprietary + purls: [] + size: 762563 + timestamp: 1652946186347 +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022718-release.conda + noarch: python + sha256: 19c33e23b27e240fee0b2a1d56921802ac88558dc2da417837cd590175561e16 + md5: 6b8d00b15817db11e026f824f7f0ba14 + depends: + - max-core ==25.2.0.dev2025022718 release + - python >=3.9,<3.13 + - jupyter_client >=8.6.2,<8.7 + - python + license: LicenseRef-Modular-Proprietary + size: 22981 + timestamp: 1740680254354 +- conda: https://conda.anaconda.org/conda-forge/linux-64/mpc-1.3.1-h24ddda3_1.conda + sha256: 1bf794ddf2c8b3a3e14ae182577c624fa92dea975537accff4bc7e5fea085212 + md5: aa14b9a5196a6d8dd364164b7ce56acf + depends: + - __glibc >=2.17,<3.0.a0 + - gmp >=6.3.0,<7.0a0 + - libgcc >=13 + - mpfr >=4.2.1,<5.0a0 + arch: x86_64 + platform: linux + license: LGPL-3.0-or-later + license_family: LGPL + purls: [] + size: 116777 + timestamp: 1725629179524 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/mpc-1.3.1-h8f1351a_1.conda + sha256: 2700899ad03302a1751dbf2bca135407e470dd83ac897ab91dd8675d4300f158 + md5: a5635df796b71f6ca400fc7026f50701 + depends: + - __osx >=11.0 + - gmp >=6.3.0,<7.0a0 + - mpfr >=4.2.1,<5.0a0 + arch: arm64 + platform: osx + license: LGPL-3.0-or-later + license_family: LGPL + purls: [] + size: 104766 + timestamp: 1725629165420 +- conda: https://conda.anaconda.org/conda-forge/linux-64/mpfr-4.2.1-h90cbb55_3.conda + sha256: f25d2474dd557ca66c6231c8f5ace5af312efde1ba8290a6ea5e1732a4e669c0 + md5: 2eeb50cab6652538eee8fc0bc3340c81 + depends: + - __glibc >=2.17,<3.0.a0 + - gmp >=6.3.0,<7.0a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: LGPL-3.0-only + license_family: LGPL + purls: [] + size: 634751 + timestamp: 1725746740014 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/mpfr-4.2.1-hb693164_3.conda + sha256: 4463e4e2aba7668e37a1b8532859191b4477a6f3602a5d6b4d64ad4c4baaeac5 + md5: 4e4ea852d54cc2b869842de5044662fb + depends: + - __osx >=11.0 + - gmp >=6.3.0,<7.0a0 + arch: arm64 + platform: osx + license: LGPL-3.0-only + license_family: LGPL + purls: [] + size: 345517 + timestamp: 1725746730583 +- pypi: https://download.pytorch.org/whl/mpmath-1.3.0-py3-none-any.whl#sha256=a0b2b9fe80bbcd81a6647ff13108738cfb482d481d826cc0e02f5b35e5c88d2c + name: mpmath + version: 1.3.0 + sha256: a0b2b9fe80bbcd81a6647ff13108738cfb482d481d826cc0e02f5b35e5c88d2c + requires_dist: + - pytest>=4.6 ; extra == 'develop' + - pycodestyle ; extra == 'develop' + - pytest-cov ; extra == 'develop' + - codecov ; extra == 'develop' + - wheel ; extra == 'develop' + - sphinx ; extra == 'docs' + - gmpy2>=2.1.0a4 ; platform_python_implementation != 'PyPy' and extra == 'gmpy' + - pytest>=4.6 ; extra == 'tests' +- conda: https://conda.anaconda.org/conda-forge/noarch/mpmath-1.3.0-pyhd8ed1ab_1.conda + sha256: 7d7aa3fcd6f42b76bd711182f3776a02bef09a68c5f117d66b712a6d81368692 + md5: 3585aa87c43ab15b167b574cd73b057b + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/mpmath?source=hash-mapping + size: 439705 + timestamp: 1733302781386 +- conda: 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 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/multidict?source=hash-mapping + size: 61507 + timestamp: 1733913288935 +- conda: 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 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/multidict?source=hash-mapping + size: 63077 + timestamp: 1733913233032 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/multidict-6.1.0-py312hdb8e49c_1.conda + sha256: 482fd09fb798090dc8cce2285fa69f43b1459099122eac2fb112d9b922b9f916 + md5: 0048335516fed938e4dd2c457b4c5b9b + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/multidict?source=hash-mapping + size: 55968 + timestamp: 1729065664275 +- conda: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.16-py312h66e93f0_1.conda + sha256: 459092c4e9305e00a0207b764a266c9caa14d82196322b2a74c96028c563a809 + md5: efe4a3f62320156f68579362314009f3 + depends: + - __glibc >=2.17,<3.0.a0 + - dill >=0.3.8 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/multiprocess?source=hash-mapping + size: 340540 + timestamp: 1724954755987 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.16-py312hb2c0f52_1.conda + sha256: f93627c78d1f86f593350196699b462c334542477aa55fe0212edf45392c9ab4 + md5: 642c63b684ce5614f157572b04816983 + depends: + - dill >=0.3.8 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/multiprocess?source=hash-mapping + size: 341428 + timestamp: 1724954862644 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/multiprocess-0.70.16-py312h024a12e_1.conda + sha256: d19a1c8b3fd44414657066becba960143e7115a385fb71b941f7e9c74f066a32 + md5: fd83a478d686df79aa394b9db1ad20b5 + depends: + - __osx >=11.0 + - dill >=0.3.8 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/multiprocess?source=hash-mapping + size: 342831 + timestamp: 1724954807776 +- conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda + sha256: 1895f47b7d68581a6facde5cb13ab8c2764c2e53a76bd746f8f98910dc4e08fe + md5: 29097e7ea634a45cc5386b95cac6568f + depends: + - python >=3.9 + license: MIT + license_family: MIT + purls: + - pkg:pypi/mypy-extensions?source=hash-mapping + size: 10854 + timestamp: 1733230986902 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda + sha256: 3fde293232fa3fca98635e1167de6b7c7fda83caf24b9d6c91ec9eefb4f4d586 + md5: 47e340acb35de30501a76c7c799c41d7 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: X11 AND BSD-3-Clause + purls: [] + size: 891641 + timestamp: 1738195959188 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-ha32ae93_3.conda + sha256: 91cfb655a68b0353b2833521dc919188db3d8a7f4c64bea2c6a7557b24747468 + md5: 182afabe009dc78d8b73100255ee6868 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: X11 AND BSD-3-Clause + purls: [] + size: 926034 + timestamp: 1738196018799 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda + sha256: 2827ada40e8d9ca69a153a45f7fd14f32b2ead7045d3bbb5d10964898fe65733 + md5: 068d497125e4bf8a66bf707254fff5ae + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: X11 AND BSD-3-Clause + purls: [] + size: 797030 + timestamp: 1738196177597 +- pypi: https://download.pytorch.org/whl/networkx-3.3-py3-none-any.whl#sha256=28575580c6ebdaf4505b22c6256a2b9de86b316dc63ba9e93abde3d78dfdbcf2 + name: networkx + version: '3.3' + sha256: 28575580c6ebdaf4505b22c6256a2b9de86b316dc63ba9e93abde3d78dfdbcf2 + requires_dist: + - numpy>=1.23 ; extra == 'default' + - scipy>=1.9,!=1.11.0,!=1.11.1 ; extra == 'default' + - matplotlib>=3.6 ; extra == 'default' + - pandas>=1.4 ; extra == 'default' + - changelist==0.5 ; extra == 'developer' + - pre-commit>=3.2 ; extra == 'developer' + - mypy>=1.1 ; extra == 'developer' + - rtoml ; extra == 'developer' + - sphinx>=7 ; extra == 'doc' + - pydata-sphinx-theme>=0.14 ; extra == 'doc' + - sphinx-gallery>=0.14 ; extra == 'doc' + - numpydoc>=1.7 ; extra == 'doc' + - pillow>=9.4 ; extra == 'doc' + - texext>=0.6.7 ; extra == 'doc' + - myst-nb>=1.0 ; extra == 'doc' + - lxml>=4.6 ; extra == 'extra' + - pygraphviz>=1.12 ; extra == 'extra' + - pydot>=2.0 ; extra == 'extra' + - sympy>=1.10 ; extra == 'extra' + - pytest>=7.2 ; extra == 'test' + - pytest-cov>=4.0 ; extra == 'test' + requires_python: '>=3.10' +- conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda + sha256: 39625cd0c9747fa5c46a9a90683b8997d8b9649881b3dc88336b13b7bdd60117 + md5: fd40bf7f7f4bc4b647dc8512053d9873 + depends: + - python >=3.10 + - python + constrains: + - numpy >=1.24 + - scipy >=1.10,!=1.11.0,!=1.11.1 + - matplotlib >=3.7 + - pandas >=2.0 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 1265008 + timestamp: 1731521053408 +- conda: https://conda.anaconda.org/conda-forge/linux-64/nlohmann_json-3.11.3-he02047a_1.conda + sha256: ce4bcced4f8eea71b7cac8bc3daac097abf7a5792f278cd811dedada199500c1 + md5: e46f7ac4917215b49df2ea09a694a3fa + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 122743 + timestamp: 1723652407663 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/nlohmann_json-3.11.3-h0a1ffab_1.conda + sha256: c90b1f11fc337d90a9e4c5aeeacac1418c5ba6a195097086566d38bb2ecf0f24 + md5: f2bd10ff23ab5c87327439c4499b3f3e + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 122755 + timestamp: 1723652622631 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/nlohmann_json-3.11.3-h00cdb27_1.conda + sha256: 3f4e6a4fa074bb297855f8111ab974dab6d9f98b7d4317d4dd46f8687ee2363b + md5: d2dee849c806430eee64d3acc98ce090 + depends: + - __osx >=11.0 + - libcxx >=16 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 123250 + timestamp: 1723652704997 +- conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda + sha256: fe3459c75cf84dcef6ef14efcc4adb0ade66038ddd27cadb894f34f4797687d8 + md5: d8285bea2a350f63fab23bf460221f3f + depends: + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - libgcc-ng >=12 + - liblapack >=3.9.0,<4.0a0 + - libstdcxx-ng >=12 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - numpy-base <0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/numpy?source=hash-mapping + size: 7484186 + timestamp: 1707225809722 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda + sha256: 23767677a7790bee5457d5e75ebd508b9a31c5354216f4310dd1acfca3f7a6f9 + md5: 9cebf5a06cb87d4569cd68df887af476 + depends: + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - libgcc-ng >=12 + - liblapack >=3.9.0,<4.0a0 + - libstdcxx-ng >=12 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - numpy-base <0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/numpy?source=hash-mapping + size: 6614296 + timestamp: 1707225994762 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda + sha256: c8841d6d6f61fd70ca80682efbab6bdb8606dc77c68d8acabfbd7c222054f518 + md5: d83fc83d589e2625a3451c9a7e21047c + depends: + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - libcxx >=16 + - liblapack >=3.9.0,<4.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - numpy-base <0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/numpy?source=hash-mapping + size: 6073136 + timestamp: 1707226249608 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ocl-icd-2.3.2-hb9d3cd8_2.conda + sha256: 96ddd13054032fabd54636f634d50bc74d10d8578bc946405c429b2d895db6f2 + md5: 2e8d2b469559d6b2cb6fd4b34f9c8d7f + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - opencl-headers >=2024.10.24 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 94934 + timestamp: 1732915114536 +- conda: https://conda.anaconda.org/conda-forge/linux-64/opencl-headers-2024.10.24-h5888daf_0.conda + sha256: 7e1d3ad55d4ad3ddf826e205d4603b9ed40c5e655a9dfd66b56f459d7ba14db3 + md5: 3ba02cce423fdac1a8582bd6bb189359 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 54060 + timestamp: 1732912937444 +- conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.1-h7b32b05_0.conda + sha256: cbf62df3c79a5c2d113247ddea5658e9ff3697b6e741c210656e239ecaf1768f + md5: 41adf927e746dc75ecf0ef841c454e48 + depends: + - __glibc >=2.17,<3.0.a0 + - ca-certificates + - libgcc >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 2939306 + timestamp: 1739301879343 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.1-hd08dc88_0.conda + sha256: d80b52b56b2206053968270069616868cbeb289ef855cf1584b1bb0fef61b37c + md5: 09036190605c57eaecf01218e0e9542d + depends: + - ca-certificates + - libgcc >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 3476570 + timestamp: 1739303256089 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.1-h81ee809_0.conda + sha256: 4f8e2389e1b711b44182a075516d02c80fa7a3a7e25a71ff1b5ace9eae57a17a + md5: 75f9f0c7b1740017e2db83a53ab9a28e + depends: + - __osx >=11.0 + - ca-certificates + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 2934522 + timestamp: 1739301896733 +- conda: https://conda.anaconda.org/conda-forge/linux-64/orc-2.0.3-h12ee42a_2.conda + sha256: dff5cc8023905782c86b3459055f26d4b97890e403b0698477c9fed15d8669cc + md5: 4f6f9f3f80354ad185e276c120eac3f0 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - lz4-c >=1.10.0,<1.11.0a0 + - snappy >=1.2.1,<1.3.0a0 + - tzdata + - zstd >=1.5.6,<1.6.0a0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 1188881 + timestamp: 1735630209320 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/orc-2.0.3-hdd485aa_2.conda + sha256: b6c67542352a86cdf143c3066d5cda855b74454a156eedcd8958b494c6a32a83 + md5: d19f01b42e5d6a2908b65df435aff42f + depends: + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - lz4-c >=1.10.0,<1.11.0a0 + - snappy >=1.2.1,<1.3.0a0 + - tzdata + - zstd >=1.5.6,<1.6.0a0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 1167714 + timestamp: 1735630248837 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/orc-2.0.3-h0ff2369_2.conda + sha256: cca330695f3bdb8c0e46350c29cd4af3345865544e36f1d7c9ba9190ad22f5f4 + md5: 24b1897c0d24afbb70704ba998793b78 + depends: + - __osx >=11.0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libzlib >=1.3.1,<2.0a0 + - lz4-c >=1.10.0,<1.11.0a0 + - snappy >=1.2.1,<1.3.0a0 + - tzdata + - zstd >=1.5.6,<1.6.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 438520 + timestamp: 1735630624140 +- conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + sha256: da157b19bcd398b9804c5c52fc000fcb8ab0525bdb9c70f95beaa0bb42f85af1 + md5: 3bfed7e6228ebf2f7b9eaa47f1b4e2aa + depends: + - python >=3.8 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/packaging?source=hash-mapping + size: 60164 + timestamp: 1733203368787 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.3-py312hf9745cd_1.conda + sha256: ad275a83bfebfa8a8fee9b0569aaf6f513ada6a246b2f5d5b85903d8ca61887e + md5: 8bce4f6caaf8c5448c7ac86d87e26b4b + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + - numpy >=1.19,<3 + - numpy >=1.22.4 + - python >=3.12,<3.13.0a0 + - python-dateutil >=2.8.1 + - python-tzdata >=2022a + - python_abi 3.12.* *_cp312 + - pytz >=2020.1,<2024.2 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/pandas?source=hash-mapping + size: 15436913 + timestamp: 1726879054912 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pandas-2.2.3-py312ha2895bd_2.conda + sha256: a34b10077de97eea72c81cb96e3ddc7d48320c0fc7d9b28ba8d9d2bead1d8297 + md5: 39a91ac336d350513de6aad56da5a920 + depends: + - libgcc >=13 + - libstdcxx >=13 + - numpy >=1.19,<3 + - numpy >=1.22.4 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python-dateutil >=2.8.1 + - python-tzdata >=2022a + - python_abi 3.12.* *_cp312 + - pytz >=2020.1,<2024.2 + constrains: + - fsspec >=2022.11.0 + - s3fs >=2022.11.0 + - fastparquet >=2022.12.0 + - pyreadstat >=1.2.0 + - qtpy >=2.3.0 + - scipy >=1.10.0 + - beautifulsoup4 >=4.11.2 + - gcsfs >=2022.11.0 + - numexpr >=2.8.4 + - sqlalchemy >=2.0.0 + - pyxlsb >=1.0.10 + - numba >=0.56.4 + - lxml >=4.9.2 + - matplotlib >=3.6.3 + - psycopg2 >=2.9.6 + - tzdata >=2022.7 + - bottleneck >=1.3.6 + - xarray >=2022.12.0 + - xlsxwriter >=3.0.5 + - zstandard >=0.19.0 + - blosc >=1.21.3 + - pytables >=3.8.0 + - openpyxl >=3.1.0 + - pyqt5 >=5.15.8 + - tabulate >=0.9.0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/pandas?source=hash-mapping + size: 15162992 + timestamp: 1736811533875 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.3-py312hcd31e36_1.conda + sha256: ff0cb54b5d058c7987b4a0984066e893642d1865a7bb695294b6172e2fcdc457 + md5: c68bfa69e6086c381c74e16fd72613a8 + depends: + - __osx >=11.0 + - libcxx >=17 + - numpy >=1.19,<3 + - numpy >=1.22.4 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python-dateutil >=2.8.1 + - python-tzdata >=2022a + - python_abi 3.12.* *_cp312 + - pytz >=2020.1,<2024.2 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/pandas?source=hash-mapping + size: 14470437 + timestamp: 1726878887799 +- conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + sha256: 9f64009cdf5b8e529995f18e03665b03f5d07c0b17445b8badef45bde76249ee + md5: 617f15191456cc6a13db418a275435e5 + depends: + - python >=3.9 + license: MPL-2.0 + license_family: MOZILLA + purls: + - pkg:pypi/pathspec?source=hash-mapping + size: 41075 + timestamp: 1733233471940 +- conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + sha256: bb50f6499e8bc1d1a26f17716c97984671121608dc0c3ecd34858112bce59a27 + md5: 577852c7e53901ddccc7e6a9959ddebe + depends: + - python >=3.9 + license: MIT + license_family: MIT + purls: + - pkg:pypi/platformdirs?source=hash-mapping + size: 20448 + timestamp: 1733232756001 +- conda: https://conda.anaconda.org/conda-forge/linux-64/prometheus-cpp-1.3.0-ha5d0236_0.conda + sha256: 013669433eb447548f21c3c6b16b2ed64356f726b5f77c1b39d5ba17a8a4b8bc + md5: a83f6a2fdc079e643237887a37460668 + depends: + - __glibc >=2.17,<3.0.a0 + - libcurl >=8.10.1,<9.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - zlib + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 199544 + timestamp: 1730769112346 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/prometheus-cpp-1.3.0-h7938499_0.conda + sha256: 9350d7bbc3982a732ff13a7fd17b585509e3b7d0191ac7b810cc3224868e3648 + md5: 10f4301290e51c49979ff98d1bdf2556 + depends: + - libcurl >=8.10.1,<9.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - zlib + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 211335 + timestamp: 1730769181127 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/prometheus-cpp-1.3.0-h0967b3e_0.conda + sha256: 851a77ae1a8e90db9b9f3c4466abea7afb52713c3d98ceb0d37ba6ff27df2eff + md5: 7172339b49c94275ba42fec3eaeda34f + depends: + - __osx >=11.0 + - libcurl >=8.10.1,<9.0a0 + - libcxx >=18 + - libzlib >=1.3.1,<2.0a0 + - zlib + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 173220 + timestamp: 1730769371051 +- conda: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.1-py312h178313f_1.conda + sha256: 6d5ff6490c53e14591b70924711fe7bd70eb7fbeeeb1cbd9ed2f6d794ec8c4eb + md5: 349635694b4df27336bc15a49e9220e9 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/propcache?source=hash-mapping + size: 52947 + timestamp: 1737635699390 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.2.1-py312hcc812fe_1.conda + sha256: d759d8ab9c060b42cabf6312b9a04aa590daecabf1dd4e35731f4bc1b5c388bb + md5: 533b07e9fd835938f465225613825eee + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/propcache?source=hash-mapping + size: 52776 + timestamp: 1737635802135 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.1-py312h998013c_1.conda + sha256: 96145760baad111d7ae4213ea8f8cc035cf33b001f5ff37d92268e4d28b0941d + md5: 83678928c58c9ae76778a435b6c7a94a + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/propcache?source=hash-mapping + size: 50942 + timestamp: 1737635896600 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-19.0.1-py312h7900ff3_0.conda + sha256: 82a0b6ef00473c134ff32138a6fe1f6edc600f362f2007d33d6c6723e220a83d + md5: 972f2a7f04b117accc08a11469c2cb6e + depends: + - libarrow-acero 19.0.1.* + - libarrow-dataset 19.0.1.* + - libarrow-substrait 19.0.1.* + - libparquet 19.0.1.* + - pyarrow-core 19.0.1 *_0_* + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 25300 + timestamp: 1739792645286 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-19.0.1-py312h8025657_0.conda + sha256: d17f85be9e3c9ccdbf46a00f51a155d6c9d02837f3ff850539cc931ce149546f + md5: 0f2b788d71caa13c9e05fb4366e3b564 + depends: + - libarrow-acero 19.0.1.* + - libarrow-dataset 19.0.1.* + - libarrow-substrait 19.0.1.* + - libparquet 19.0.1.* + - pyarrow-core 19.0.1 *_0_* + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 25487 + timestamp: 1739792927040 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-19.0.1-py312h1f38498_0.conda + sha256: 212a9ef1971d69882b977a930b3e8cd9d78bb58c027119a52b92d48a5e47f9eb + md5: 4bbcfad0bfcad7ee1d617a9b6db564ee + depends: + - libarrow-acero 19.0.1.* + - libarrow-dataset 19.0.1.* + - libarrow-substrait 19.0.1.* + - libparquet 19.0.1.* + - pyarrow-core 19.0.1 *_0_* + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 25462 + timestamp: 1739792876991 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-19.0.1-py312h01725c0_0_cpu.conda + sha256: b2d397ee72a8e33aa1b2bcaa525b3bfc1dad333a631e668e54bcdcf275b3d69b + md5: 227543d1eef90da786f0c63bd0787839 + depends: + - __glibc >=2.17,<3.0.a0 + - libarrow 19.0.1.* *cpu + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - numpy >=1.21,<3 + - apache-arrow-proc =*=cpu + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/pyarrow?source=hash-mapping + size: 5203933 + timestamp: 1739792285799 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-19.0.1-py312h66f7834_0_cpu.conda + sha256: ab25433629022236b24d35a53dbef033ef60f3cb3a71fa630392d7340791bdc7 + md5: e83aadc9635bdcf69845587c4c837fd3 + depends: + - libarrow 19.0.1.* *cpu + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - numpy >=1.21,<3 + - apache-arrow-proc =*=cpu + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/pyarrow?source=hash-mapping + size: 5017444 + timestamp: 1739792893195 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-19.0.1-py312hc40f475_0_cpu.conda + sha256: 50ad4d67a1a2be32c2441a945a333b5347e36f027ea629fd903e7eaae77e0ed7 + md5: 90e3c0898e229d76e4a6949f621f0f58 + depends: + - __osx >=11.0 + - libarrow 19.0.1.* *cpu + - libcxx >=18 + - libzlib >=1.3.1,<2.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - apache-arrow-proc =*=cpu + - numpy >=1.21,<3 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/pyarrow?source=hash-mapping + size: 4398733 + timestamp: 1739792829575 +- conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda + sha256: 79db7928d13fab2d892592223d7570f5061c192f27b9febd1a418427b719acc6 + md5: 12c566707c80111f9799308d9e265aef + depends: + - python >=3.9 + - python + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 110100 + timestamp: 1733195786147 +- conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda + sha256: ba3b032fa52709ce0d9fd388f63d330a026754587a2f461117cac9ab73d8d0d8 + md5: 461219d1a5bd61342293efa2c0c90eac + depends: + - __unix + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/pysocks?source=hash-mapping + size: 21085 + timestamp: 1733217331982 +- conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.9-h9e4cc4f_0_cpython.conda + sha256: 64fed5178f1e9c8ac0f572ac0ce37955f5dee7b2bcac665202bc14f1f7dd618a + md5: 5665f0079432f8848079c811cdb537d5 + depends: + - __glibc >=2.17,<3.0.a0 + - bzip2 >=1.0.8,<2.0a0 + - ld_impl_linux-64 >=2.36.1 + - libexpat >=2.6.4,<3.0a0 + - libffi >=3.4,<4.0a0 + - libgcc >=13 + - liblzma >=5.6.4,<6.0a0 + - libnsl >=2.0.1,<2.1.0a0 + - libsqlite >=3.48.0,<4.0a0 + - libuuid >=2.38.1,<3.0a0 + - libxcrypt >=4.4.36 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.4.1,<4.0a0 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + constrains: + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Python-2.0 + purls: [] + size: 31581682 + timestamp: 1739521496324 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.9-h1683364_0_cpython.conda + sha256: 0366f38918bceda8ff5917d7bbe1cea2bc8b6c74e7245eb0e4b0d3c2d37f76cf + md5: 2e7ad70254455e0508adabff10218512 + depends: + - bzip2 >=1.0.8,<2.0a0 + - ld_impl_linux-aarch64 >=2.36.1 + - libexpat >=2.6.4,<3.0a0 + - libffi >=3.4,<4.0a0 + - libgcc >=13 + - liblzma >=5.6.4,<6.0a0 + - libnsl >=2.0.1,<2.1.0a0 + - libsqlite >=3.48.0,<4.0a0 + - libuuid >=2.38.1,<3.0a0 + - libxcrypt >=4.4.36 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.4.1,<4.0a0 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + constrains: + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Python-2.0 + purls: [] + size: 13804161 + timestamp: 1739519531794 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.9-hc22306f_0_cpython.conda + sha256: cbf81a78d3ca6e663e827523e6ddbc28369cac488da047a28f83875eb52fe5f6 + md5: 1d105a6c46a753e3c0bab54a1ad24063 + depends: + - __osx >=11.0 + - bzip2 >=1.0.8,<2.0a0 + - libexpat >=2.6.4,<3.0a0 + - libffi >=3.4,<4.0a0 + - liblzma >=5.6.4,<6.0a0 + - libsqlite >=3.48.0,<4.0a0 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.4.1,<4.0a0 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + constrains: + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Python-2.0 + purls: [] + size: 12947786 + timestamp: 1739520092196 +- conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + sha256: a50052536f1ef8516ed11a844f9413661829aa083304dc624c5925298d078d79 + md5: 5ba79d7c71f03c678c8ead841f347d6e + depends: + - python >=3.9 + - six >=1.5 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/python-dateutil?source=hash-mapping + size: 222505 + timestamp: 1733215763718 +- conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.1-pyhd8ed1ab_0.conda + sha256: 1597d6055d34e709ab8915091973552a0b8764c8032ede07c4e99670da029629 + md5: 392c91c42edd569a7ec99ed8648f597a + depends: + - python >=3.9 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/tzdata?source=hash-mapping + size: 143794 + timestamp: 1737541204030 +- conda: https://conda.anaconda.org/conda-forge/linux-64/python-xxhash-3.5.0-py312h66e93f0_2.conda + sha256: b5950a737d200e2e3cf199ab7b474ac194fcf4d6bee13bcbdf32c5a5cca7eaf0 + md5: cc3f6c452697c1cf7e4e6e5f21861f96 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - xxhash >=0.8.3,<0.8.4.0a0 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + purls: + - pkg:pypi/xxhash?source=hash-mapping + size: 23216 + timestamp: 1740594909669 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-xxhash-3.5.0-py312h52516f5_2.conda + sha256: b0c7528f2597e33911f179dad9852a4958683533570f8cc68976068b444461f4 + md5: c6de44ac405bf8a793c57850ea6b427a + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - xxhash >=0.8.3,<0.8.4.0a0 + arch: aarch64 + platform: linux + license: BSD-2-Clause + license_family: BSD + purls: + - pkg:pypi/xxhash?source=compressed-mapping + size: 23768 + timestamp: 1740595924431 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-xxhash-3.5.0-py312hea69d52_2.conda + sha256: 10c3df8dae696da4bd8532609999991ae1f3c4cc1a1e7f6a636cf6aa19d9eb82 + md5: b0c7097883bb4d8acfd72e7b9c6b93cd + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - xxhash >=0.8.3,<0.8.4.0a0 + arch: arm64 + platform: osx + license: BSD-2-Clause + license_family: BSD + purls: + - pkg:pypi/xxhash?source=hash-mapping + size: 21947 + timestamp: 1740595129087 +- conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda + build_number: 5 + sha256: d10e93d759931ffb6372b45d65ff34d95c6000c61a07e298d162a3bc2accebb0 + md5: 0424ae29b104430108f5218a66db7260 + constrains: + - python 3.12.* *_cpython + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 6238 + timestamp: 1723823388266 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.12-5_cp312.conda + build_number: 5 + sha256: 5ccdad9981753cc4a2d126e356673a21c0cd5b34e209cb8d476a3947d4ad9b39 + md5: 62b20f305498284a07dc6c45fd0e5c87 + constrains: + - python 3.12.* *_cpython + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 6329 + timestamp: 1723823366253 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-5_cp312.conda + build_number: 5 + sha256: 49d624e4b809c799d2bf257b22c23cf3fc4460f5570d9a58e7ad86350aeaa1f4 + md5: b76f9b1c862128e56ac7aa8cd2333de9 + constrains: + - python 3.12.* *_cpython + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 6278 + timestamp: 1723823099686 +- conda: https://conda.anaconda.org/pytorch/linux-64/pytorch-2.5.1-py3.12_cuda12.4_cudnn9.1.0_0.tar.bz2 + sha256: 8183ab363b7892f67ba3660929f1c3f4f8646e4a2a02d499d387acc0509764c3 + md5: 42164c6ce8e563c20a542686a8b9b964 + depends: + - blas * mkl + - filelock + - jinja2 + - llvm-openmp <16 + - mkl >=2018 + - networkx + - python >=3.12,<3.13.0a0 + - pytorch-cuda >=12.4,<12.5 + - pytorch-mutex 1.0 cuda + - pyyaml + - sympy + - torchtriton 3.1.0 + - typing_extensions + constrains: + - cpuonly <0 + arch: x86_64 + platform: linux + license: BSD 3-Clause + license_family: BSD + purls: + - pkg:pypi/torch?source=hash-mapping + size: 1571072276 + timestamp: 1729655770987 +- conda: https://conda.anaconda.org/pytorch/osx-arm64/pytorch-2.5.1-py3.12_0.tar.bz2 + sha256: 1d476688886b78f641973d1b5c1352eaece59484f4408f2c1af46e3634a6c957 + md5: a393d6275c53d5218015a23c741dc004 + depends: + - filelock + - jinja2 + - llvm-openmp <16 + - networkx + - python >=3.12,<3.13.0a0 + - pyyaml + - sympy + - typing_extensions + constrains: + - cpuonly + arch: arm64 + platform: osx + license: BSD 3-Clause + license_family: BSD + purls: + - pkg:pypi/torch?source=hash-mapping + size: 62089911 + timestamp: 1729651375444 +- conda: https://conda.anaconda.org/pytorch/linux-64/pytorch-cuda-12.4-hc786d27_7.tar.bz2 + sha256: 4ce6352f6270673aaf335909da2bbdd70ad8aaae489319e1e3a5ac0aae720314 + md5: 06635b1bbf5e2fef4a8b9b282500cd7b + depends: + - cuda-cudart >=12.4,<12.5 + - cuda-cupti >=12.4,<12.5 + - cuda-libraries >=12.4,<12.5 + - cuda-nvrtc >=12.4,<12.5 + - cuda-nvtx >=12.4,<12.5 + - cuda-runtime >=12.4,<12.5 + - libcublas >=12.4.5.8,<12.5.2.13 + - libcufft >=11.2.1.3,<11.2.3.18 + - libcusolver >=11.6.1.9,<11.6.2.40 + - libcusparse >=12.3.1.170,<12.4.1.18 + - libnpp >=12.2.5.30,<12.3.0.116 + - libnvjitlink >=12.4.127,<12.5.40 + - libnvjpeg >=12.3.1.117,<12.3.2.38 + arch: x86_64 + platform: linux + purls: [] + size: 7189 + timestamp: 1724179791784 +- conda: https://conda.anaconda.org/pytorch/noarch/pytorch-mutex-1.0-cuda.tar.bz2 + build_number: 100 + sha256: c16316183f51b74ca5eee4dcb8631052f328c0bbf244176734a0b7d390b81ee3 + md5: a948316e36fb5b11223b3fcfa93f8358 + purls: [] + size: 2906 + timestamp: 1628062930777 +- conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda + sha256: 1a7d6b233f7e6e3bbcbad054c8fd51e690a67b129a899a056a5e45dd9f00cb41 + md5: 3eeeeb9e4827ace8c0c1419c85d590ad + depends: + - python >=3.7 + license: MIT + license_family: MIT + purls: + - pkg:pypi/pytz?source=hash-mapping + size: 188538 + timestamp: 1706886944988 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py312h178313f_2.conda + sha256: 159cba13a93b3fe084a1eb9bda0a07afc9148147647f0d437c3c3da60980503b + md5: cf2485f39740de96e2a7f2bb18ed2fee + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - yaml >=0.2.5,<0.3.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: + - pkg:pypi/pyyaml?source=hash-mapping + size: 206903 + timestamp: 1737454910324 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyyaml-6.0.2-py312hcc812fe_2.conda + sha256: dc78e41d51300722ba35ac4a10d37339ceffbe22d7501c71dfd3f633a4f8e79a + md5: 4de4a5ff81c941674e08595244e7cd61 + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - yaml >=0.2.5,<0.3.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: + - pkg:pypi/pyyaml?source=hash-mapping + size: 199172 + timestamp: 1737454840766 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py312h998013c_2.conda + sha256: ad225ad24bfd60f7719709791345042c3cb32da1692e62bd463b084cf140e00d + md5: 68149ed4d4e9e1c42d2ba1f27f08ca96 + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - yaml >=0.2.5,<0.3.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: + - pkg:pypi/pyyaml?source=hash-mapping + size: 192148 + timestamp: 1737454886351 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.1-py312hbf22597_0.conda + sha256: 90ec0da0317d3d76990a40c61e1709ef859dd3d8c63838bad2814f46a63c8a2e + md5: 7cec8d0dac15a2d9fea8e49879aa779d + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libsodium >=1.0.20,<1.0.21.0a0 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - zeromq >=4.3.5,<4.4.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/pyzmq?source=hash-mapping + size: 382698 + timestamp: 1738271121975 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyzmq-26.2.1-py312h2427ae1_0.conda + sha256: 9558f9330093e5c21b7c04e2e212e19b9b88ad9c808315f12c0765b244018a09 + md5: 0520da8de6870d8ff63e818e927d1524 + depends: + - libgcc >=13 + - libsodium >=1.0.20,<1.0.21.0a0 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - zeromq >=4.3.5,<4.4.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/pyzmq?source=hash-mapping + size: 375156 + timestamp: 1738273130727 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.1-py312hf4875e0_0.conda + sha256: 70d398b334668dc597d33e27847ede1b0829a639b9c91ee845355e52c86c2293 + md5: bfbefdb140b546a80827ff7c9d5ac7b8 + depends: + - __osx >=11.0 + - libcxx >=18 + - libsodium >=1.0.20,<1.0.21.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - zeromq >=4.3.5,<4.4.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/pyzmq?source=hash-mapping + size: 364649 + timestamp: 1738271263898 +- conda: https://conda.anaconda.org/conda-forge/linux-64/re2-2024.07.02-h9925aae_2.conda + sha256: d213c44958d49ce7e0d4d5b81afec23640cce5016685dbb2d23571a99caa4474 + md5: e84ddf12bde691e8ec894b00ea829ddf + depends: + - libre2-11 2024.07.02 hbbce691_2 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 26786 + timestamp: 1735541074034 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/re2-2024.07.02-haa97905_2.conda + sha256: 040848655df9119bae5a549fb5c8956a5537120859416c1d9d0712b7bac9f12e + md5: 1bf0135339b4a7419a198a795d2d4be0 + depends: + - libre2-11 2024.07.02 h18dbdb1_2 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 26830 + timestamp: 1735540999398 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/re2-2024.07.02-h6589ca4_2.conda + sha256: 4d3799c05f8f662922a0acd129d119774760a3281b883603678e128d1cb307fb + md5: 7a8b4ad8c58a3408ca89d78788c78178 + depends: + - libre2-11 2024.07.02 h07bc746_2 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 26861 + timestamp: 1735541088455 +- conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda + sha256: 2d6d0c026902561ed77cd646b5021aef2d4db22e57a5b0178dfc669231e06d2c + md5: 283b96675859b20a825f8fa30f311446 + depends: + - libgcc >=13 + - ncurses >=6.5,<7.0a0 + arch: x86_64 + platform: linux + license: GPL-3.0-only + license_family: GPL + purls: [] + size: 282480 + timestamp: 1740379431762 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8382b9d_2.conda + sha256: 54bed3a3041befaa9f5acde4a37b1a02f44705b7796689574bcf9d7beaad2959 + md5: c0f08fc2737967edde1a272d4bf41ed9 + depends: + - libgcc >=13 + - ncurses >=6.5,<7.0a0 + arch: aarch64 + platform: linux + license: GPL-3.0-only + license_family: GPL + purls: [] + size: 291806 + timestamp: 1740380591358 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda + sha256: 7db04684d3904f6151eff8673270922d31da1eea7fa73254d01c437f49702e34 + md5: 63ef3f6e6d6d5c589e64f11263dc5676 + depends: + - ncurses >=6.5,<7.0a0 + arch: arm64 + platform: osx + license: GPL-3.0-only + license_family: GPL + purls: [] + size: 252359 + timestamp: 1740379663071 +- conda: https://conda.anaconda.org/conda-forge/linux-64/regex-2024.11.6-py312h66e93f0_0.conda + sha256: fcb5687d3ec5fff580b64b8fb649d9d65c999a91a5c3108a313ecdd2de99f06b + md5: 647770db979b43f9c9ca25dcfa7dc4e4 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Python-2.0 + license_family: PSF + purls: + - pkg:pypi/regex?source=hash-mapping + size: 402821 + timestamp: 1730952378415 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/regex-2024.11.6-py312hb2c0f52_0.conda + sha256: ec2c416860de29224e447e2031f8686a05476759c17da1f32f61d4307e540ec8 + md5: fa8b589107567f532fa1380e66f91776 + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Python-2.0 + license_family: PSF + purls: + - pkg:pypi/regex?source=hash-mapping + size: 398947 + timestamp: 1730952477463 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/regex-2024.11.6-py312hea69d52_0.conda + sha256: dcdec32f2c7dd37986baa692bedf9db126ad34e92e5e9b64f707cba3d04d2525 + md5: e73cda1f18846b608284bd784f061eac + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Python-2.0 + license_family: PSF + purls: + - pkg:pypi/regex?source=hash-mapping + size: 366374 + timestamp: 1730952427552 +- conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda + sha256: d701ca1136197aa121bbbe0e8c18db6b5c94acbd041c2b43c70e5ae104e1d8ad + md5: a9b9368f3701a417eac9edbcae7cb737 + depends: + - certifi >=2017.4.17 + - charset-normalizer >=2,<4 + - idna >=2.5,<4 + - python >=3.9 + - urllib3 >=1.21.1,<3 + constrains: + - chardet >=3.0.2,<6 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/requests?source=hash-mapping + size: 58723 + timestamp: 1733217126197 +- conda: https://conda.anaconda.org/conda-forge/linux-64/s2n-1.5.11-h072c03f_0.conda + sha256: cfdd98c8f9a1e5b6f9abce5dac6d590cc9fe541a08466c9e4a26f90e00b569e3 + md5: 5e8060d52f676a40edef0006a75c718f + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - openssl >=3.4.0,<4.0a0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 356213 + timestamp: 1737146304079 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/s2n-1.5.11-h3caee7a_0.conda + sha256: 5a7ae66f96be24c3b2007139b6c3701ab015b4b4eb4eccfdd07be97710243a47 + md5: 1517c0518f8a06a48a15f41d94252874 + depends: + - libgcc >=13 + - openssl >=3.4.0,<4.0a0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 352811 + timestamp: 1737146319512 +- conda: https://conda.anaconda.org/conda-forge/linux-64/safetensors-0.5.3-py312h12e396e_0.conda + sha256: 23dec8105d34e51cc2269a79680a666351233e2dc171ff14c46d3455d2c22080 + md5: fd1fc1f1e6ceee16d9a58d3ff5a57c7f + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - __glibc >=2.17 + arch: x86_64 + platform: linux + license: Apache-2.0 + purls: + - pkg:pypi/safetensors?source=compressed-mapping + size: 431388 + timestamp: 1740651706122 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/safetensors-0.5.3-py312h8cbf658_0.conda + sha256: 24ca173b9f39d5e5cabc6ea7e570b500682669e5910510020549f8696e29992d + md5: eb2d82d057535f4fb3182f43df429495 + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - __glibc >=2.17 + arch: aarch64 + platform: linux + license: Apache-2.0 + purls: + - pkg:pypi/safetensors?source=hash-mapping + size: 417509 + timestamp: 1740651719895 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/safetensors-0.5.3-py312hcd83bfe_0.conda + sha256: 1d0412be1b16df769c69d537907e690be50d06d05f757ba2451facb6883a3eb3 + md5: 68b99db908e1ec63c0cacae262a835e9 + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - __osx >=11.0 + arch: arm64 + platform: osx + license: Apache-2.0 + purls: + - pkg:pypi/safetensors?source=compressed-mapping + size: 382676 + timestamp: 1740651813281 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-0.2.0-hc8f76dd_10.conda + sha256: a1bde55ceb9dc5bd7879283d0f594a6ce65c07fda3de76230c65a4a5df47858a + md5: 480e915dfc6c592615ef6f217e615aa6 + depends: + - libsentencepiece 0.2.0 h8e10757_10 + - python_abi 3.12.* *_cp312 + - sentencepiece-python 0.2.0 py312hb6b8a2b_10 + - sentencepiece-spm 0.2.0 h8e10757_10 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 19470 + timestamp: 1735628377167 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-0.2.0-h6c1b121_10.conda + sha256: 846d885a560fbb4375b645e7caf2f756ef88bbeb441b670375da0090aaa427fb + md5: 33a89eb1dedae8eb7222b0a89856f337 + depends: + - libsentencepiece 0.2.0 h6164ad9_10 + - python_abi 3.12.* *_cp312 + - sentencepiece-python 0.2.0 py312h197ff68_10 + - sentencepiece-spm 0.2.0 h6164ad9_10 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 19686 + timestamp: 1735628718991 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-0.2.0-h22a84ea_10.conda + sha256: 526c934b897131bd274697649c3b1c492a7d66c03368885a954112468b3c1424 + md5: 346abe448f69949a65473b336856860a + depends: + - libsentencepiece 0.2.0 he13a0af_10 + - python_abi 3.12.* *_cp312 + - sentencepiece-python 0.2.0 py312h155166a_10 + - sentencepiece-spm 0.2.0 he13a0af_10 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 19759 + timestamp: 1735628533490 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-python-0.2.0-py312hb6b8a2b_10.conda + sha256: 37df7fb659564587b950b39c936769d9b5095afb7bc223f42d6248a5540c6567 + md5: 7908b7b977e2e123a5f6a29906f2ce44 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 h8e10757_10 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/sentencepiece?source=hash-mapping + size: 2411182 + timestamp: 1735628106455 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-python-0.2.0-py312h197ff68_10.conda + sha256: a7c2c19cc397c7632e2630af49ddcff128f145c93ea493421e6f42bfa5e1d30b + md5: 5642e4545a3cf03e446fb3b3e9fd723b + depends: + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 h6164ad9_10 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/sentencepiece?source=hash-mapping + size: 2458076 + timestamp: 1735628298246 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-python-0.2.0-py312h155166a_10.conda + sha256: 2d59614aeafbf54cc718805798c11c2d0a3b4b8d947d1bd81c87c484b4883077 + md5: 6e11367ef670296fce01fc9860be944d + depends: + - __osx >=11.0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 he13a0af_10 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/sentencepiece?source=hash-mapping + size: 2433303 + timestamp: 1735628083958 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-spm-0.2.0-h8e10757_10.conda + sha256: 6b55e1121545357d63c3aa0766931720e8aafc52d88641ba7631c8cbaa68c52f + md5: e977b7be5ac26c55825e121e00b90493 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 h8e10757_10 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 89076 + timestamp: 1735628334078 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-spm-0.2.0-h6164ad9_10.conda + sha256: b98fc1028a8e8fbf309af383f9c837290a14e076e6c5533dc251694ea33ffc6e + md5: a4b75936c01dca3f089f02752b7ee325 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 h6164ad9_10 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 85983 + timestamp: 1735628693813 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-spm-0.2.0-he13a0af_10.conda + sha256: b760aeee02e2afbfcce3f559e8a227aa4c94139157b1702fdfb41a057dad0e52 + md5: 9b7300f23cd330da8664cd072c162e5f + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 he13a0af_10 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 83826 + timestamp: 1735628514667 +- pypi: https://download.pytorch.org/whl/setuptools-70.2.0-py3-none-any.whl#sha256=b8b8060bb426838fbe942479c90296ce976249451118ef566a5a0b7d8b78fb05 + name: setuptools + version: 70.2.0 + sha256: b8b8060bb426838fbe942479c90296ce976249451118ef566a5a0b7d8b78fb05 + requires_dist: + - sphinx>=3.5 ; extra == 'doc' + - jaraco-packaging>=9.3 ; extra == 'doc' + - rst-linker>=1.9 ; extra == 'doc' + - furo ; extra == 'doc' + - sphinx-lint ; extra == 'doc' + - jaraco-tidelift>=1.4 ; extra == 'doc' + - pygments-github-lexers==0.0.5 ; extra == 'doc' + - sphinx-favicon ; extra == 'doc' + - sphinx-inline-tabs ; extra == 'doc' + - sphinx-reredirects ; extra == 'doc' + - sphinxcontrib-towncrier ; extra == 'doc' + - sphinx-notfound-page>=1,<2 ; extra == 'doc' + - pyproject-hooks!=1.1 ; extra == 'doc' + - pytest>=6,!=8.1.* ; extra == 'test' + - pytest-checkdocs>=2.4 ; extra == 'test' + - pytest-cov ; extra == 'test' + - pytest-mypy ; extra == 'test' + - pytest-enabler>=2.2 ; extra == 'test' + - virtualenv>=13.0.0 ; extra == 'test' + - wheel ; extra == 'test' + - pip>=19.1 ; extra == 'test' + - packaging>=23.2 ; extra == 'test' + - jaraco-envs>=2.2 ; extra == 'test' + - pytest-xdist>=3 ; extra == 'test' + - jaraco-path>=3.2.0 ; extra == 'test' + - build[virtualenv]>=1.0.3 ; extra == 'test' + - filelock>=3.4.0 ; extra == 'test' + - ini2toml[lite]>=0.14 ; extra == 'test' + - tomli-w>=1.0.0 ; extra == 'test' + - pytest-timeout ; extra == 'test' + - pytest-home>=0.5 ; extra == 'test' + - mypy==1.10.0 ; extra == 'test' + - tomli ; extra == 'test' + - importlib-metadata ; extra == 'test' + - pytest-subprocess ; extra == 'test' + - pyproject-hooks!=1.1 ; extra == 'test' + - jaraco-test ; extra == 'test' + - jaraco-develop>=7.21 ; python_full_version >= '3.9' and sys_platform != 'cygwin' and extra == 'test' + - pytest-ruff>=0.3.2 ; sys_platform != 'cygwin' and extra == 'test' + - pytest-perf ; sys_platform != 'cygwin' and extra == 'test' + requires_python: '>=3.8' +- conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + sha256: 41db0180680cc67c3fa76544ffd48d6a5679d96f4b71d7498a759e94edc9a2db + md5: a451d576819089b0d672f18768be0f65 + depends: + - python >=3.9 + license: MIT + license_family: MIT + purls: + - pkg:pypi/six?source=hash-mapping + size: 16385 + timestamp: 1733381032766 +- conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-h8bd8927_1.conda + sha256: ec91e86eeb2c6bbf09d51351b851e945185d70661d2ada67204c9a6419d282d3 + md5: 3b3e64af585eadfb52bb90b553db5edf + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 42739 + timestamp: 1733501881851 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-hd4fb6f5_1.conda + sha256: c4a07ae5def8d55128f25a567a296ef9d7bf99a3bc79d46bd5160c076a5f50af + md5: 2fcc6cd1e5550deb509073fd2e6693e1 + depends: + - libgcc >=13 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 43032 + timestamp: 1733501964775 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-h98b9ce2_1.conda + sha256: 4242f95b215127a006eb664fe26ed5a82df87e90cbdbc7ce7ff4971f0720997f + md5: ded86dee325290da2967a3fea3800eb5 + depends: + - __osx >=11.0 + - libcxx >=18 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 35857 + timestamp: 1733502172664 +- pypi: https://download.pytorch.org/whl/sympy-1.13.1-py3-none-any.whl#sha256=db36cdc64bf61b9b24578b6f7bab1ecdd2452cf008f34faa33776680c26d66f8 + name: sympy + version: 1.13.1 + sha256: db36cdc64bf61b9b24578b6f7bab1ecdd2452cf008f34faa33776680c26d66f8 + requires_dist: + - mpmath>=1.1.0,<1.4 + - pytest>=7.1.0 ; extra == 'dev' + - hypothesis>=6.70.0 ; extra == 'dev' + requires_python: '>=3.8' +- conda: https://conda.anaconda.org/conda-forge/noarch/sympy-1.13.3-pyh2585a3b_105.conda + sha256: 929d939c5a8bcdc10a17501890918da68cf14a5883b36fddf77b8f0fbf040be2 + md5: 254cd5083ffa04d96e3173397a3d30f4 + depends: + - __unix + - cpython + - gmpy2 >=2.0.8 + - mpmath >=0.19 + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/sympy?source=hash-mapping + size: 4523617 + timestamp: 1736248315124 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tbb-2021.13.0-hceb3a55_1.conda + sha256: 65463732129899770d54b1fbf30e1bb82fdebda9d7553caf08d23db4590cd691 + md5: ba7726b8df7b9d34ea80e82b097a4893 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libhwloc >=2.11.2,<2.11.3.0a0 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 175954 + timestamp: 1732982638805 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda + sha256: e0569c9caa68bf476bead1bed3d79650bb080b532c64a4af7d8ca286c08dea4e + md5: d453b98d9c83e71da0741bb0ff4d76bc + depends: + - libgcc-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 + arch: x86_64 + platform: linux + license: TCL + license_family: BSD + purls: [] + size: 3318875 + timestamp: 1699202167581 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda + sha256: 7fa27cc512d3a783f38bd16bbbffc008807372499d5b65d089a8e43bde9db267 + md5: f75105e0585851f818e0009dd1dde4dc + depends: + - libgcc-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 + arch: aarch64 + platform: linux + license: TCL + license_family: BSD + purls: [] + size: 3351802 + timestamp: 1695506242997 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda + sha256: 72457ad031b4c048e5891f3f6cb27a53cb479db68a52d965f796910e71a403a8 + md5: b50a57ba89c32b62428b71a875291c9b + depends: + - libzlib >=1.2.13,<2.0.0a0 + arch: arm64 + platform: osx + license: TCL + license_family: BSD + purls: [] + size: 3145523 + timestamp: 1699202432999 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.21.0-py312h8360d73_0.conda + sha256: 4f504a5e9d77c6d88a8f735c4319429d8bf40b742384f908a2efe0a09acc3cc5 + md5: f953aa733207f3d37acf4a3efbedba89 + depends: + - __glibc >=2.17,<3.0.a0 + - huggingface_hub >=0.16.4,<1.0 + - libgcc >=13 + - libstdcxx >=13 + - openssl >=3.4.0,<4.0a0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - __glibc >=2.17 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/tokenizers?source=hash-mapping + size: 2258007 + timestamp: 1732734202127 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.21.0-py312ha0d6ea1_0.conda + sha256: ef0f4d4e2c798b1821187ea0ba4c86484e48abaa0e9a19fe68030fa7ff5dde84 + md5: 077f48c9e0c08a30d842e15c51df4143 + depends: + - huggingface_hub >=0.16.4,<1.0 + - libgcc >=13 + - libstdcxx >=13 + - openssl >=3.4.0,<4.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - __glibc >=2.17 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/tokenizers?source=hash-mapping + size: 2331194 + timestamp: 1732734303196 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.21.0-py312hf3e4074_0.conda + sha256: 5d395333fcb22dc611140286c1f2ea8b3fa220a4931c583587cb612238091555 + md5: 4c732c74b485ef7ac8ec1c548dd45e8e + depends: + - __osx >=11.0 + - huggingface_hub >=0.16.4,<1.0 + - libcxx >=18 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - __osx >=11.0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/tokenizers?source=hash-mapping + size: 1931389 + timestamp: 1732734727624 +- pypi: https://download.pytorch.org/whl/cpu/torch-2.5.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl#sha256=36d1be99281b6f602d9639bd0af3ee0006e7aab16f6718d86f709d395b6f262c + name: torch + version: 2.5.1 + sha256: 36d1be99281b6f602d9639bd0af3ee0006e7aab16f6718d86f709d395b6f262c + requires_dist: + - filelock + - typing-extensions>=4.8.0 + - networkx + - jinja2 + - fsspec + - nvidia-cuda-nvrtc-cu12==12.4.127 ; platform_machine == 'x86_64' and platform_system == 'Linux' + - nvidia-cuda-runtime-cu12==12.4.127 ; platform_machine == 'x86_64' and platform_system == 'Linux' + - nvidia-cuda-cupti-cu12==12.4.127 ; platform_machine == 'x86_64' and platform_system == 'Linux' + - nvidia-cudnn-cu12==9.1.0.70 ; platform_machine == 'x86_64' and platform_system == 'Linux' + - nvidia-cublas-cu12==12.4.5.8 ; platform_machine == 'x86_64' and platform_system == 'Linux' + - nvidia-cufft-cu12==11.2.1.3 ; platform_machine == 'x86_64' and platform_system == 'Linux' + - nvidia-curand-cu12==10.3.5.147 ; platform_machine == 'x86_64' and platform_system == 'Linux' + - nvidia-cusolver-cu12==11.6.1.9 ; platform_machine == 'x86_64' and platform_system == 'Linux' + - nvidia-cusparse-cu12==12.3.1.170 ; platform_machine == 'x86_64' and platform_system == 'Linux' + - nvidia-nccl-cu12==2.21.5 ; platform_machine == 'x86_64' and platform_system == 'Linux' + - nvidia-nvtx-cu12==12.4.127 ; platform_machine == 'x86_64' and platform_system == 'Linux' + - nvidia-nvjitlink-cu12==12.4.127 ; platform_machine == 'x86_64' and platform_system == 'Linux' + - sympy==1.12.1 ; python_full_version == '3.8.*' + - setuptools ; python_full_version >= '3.12' + - sympy==1.13.1 ; python_full_version >= '3.9' + - opt-einsum>=3.3 ; extra == 'opt-einsum' + - optree>=0.12.0 ; extra == 'optree' + requires_python: '>=3.8.0' +- conda: https://conda.anaconda.org/pytorch/linux-64/torchtriton-3.1.0-py312.tar.bz2 + build_number: 1 + sha256: f0beb429b3834a3796626642829a7e4bb9d4fe6477c8dc614a55e5c4f15a6a05 + md5: bb4b2d07cb6b9b476e78740c08ba69fe + depends: + - filelock + - python >=3.12,<3.13.0a0 + - pytorch + arch: x86_64 + platform: linux + license: MIT + purls: + - pkg:pypi/triton?source=hash-mapping + size: 244939186 + timestamp: 1727971107041 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda + sha256: 062a3a3a37fa8615ce57929ba7e982c76f5a5810bcebd435950f6d6c4147c310 + md5: e417822cb989e80a0d2b1b576fdd1657 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/tornado?source=hash-mapping + size: 840414 + timestamp: 1732616043734 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py312h52516f5_0.conda + sha256: 4c19a544354172b2273553267e734795a6da3c78a04c2d19f8e9e159ca3178bc + md5: e28996d9d2d44d777b7e6fb12f63715b + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/tornado?source=hash-mapping + size: 841662 + timestamp: 1732616934923 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda + sha256: 964a2705a36c50040c967b18b45b9cc8de3c2aff4af546979a574e0b38e58e39 + md5: fb0605888a475d6a380ae1d1a819d976 + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/tornado?source=hash-mapping + size: 842549 + timestamp: 1732616081362 +- conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + sha256: 11e2c85468ae9902d24a27137b6b39b4a78099806e551d390e394a8c34b48e40 + md5: 9efbfdc37242619130ea42b1cc4ed861 + depends: + - colorama + - python >=3.9 + license: MPL-2.0 or MIT + purls: + - pkg:pypi/tqdm?source=hash-mapping + size: 89498 + timestamp: 1735661472632 +- conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + sha256: f39a5620c6e8e9e98357507262a7869de2ae8cc07da8b7f84e517c9fd6c2b959 + md5: 019a7385be9af33791c989871317e1ed + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/traitlets?source=hash-mapping + size: 110051 + timestamp: 1733367480074 +- conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.49.0-pyhd8ed1ab_0.conda + sha256: d522d7dda6ebe296b20955b1be3eccc5d5cfdfd413457c1236323b6a08fffd9e + md5: e63e78e545fcf857cac3372edeb67ea4 + depends: + - datasets !=2.5.0 + - filelock + - huggingface_hub >=0.23.0,<1.0 + - numpy >=1.17 + - packaging >=20.0 + - python >=3.9 + - pyyaml >=5.1 + - regex !=2019.12.17 + - requests + - safetensors >=0.4.1 + - tokenizers >=0.21,<0.22 + - tqdm >=4.27 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/transformers?source=hash-mapping + size: 3514640 + timestamp: 1739826374204 +- conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda + noarch: python + sha256: c8e9c1c467b5f960b627d7adc1c65fece8e929a3de89967e91ef0f726422fd32 + md5: b6a408c64b78ec7b779a3e5c7a902433 + depends: + - typing_extensions 4.12.2 pyha770c72_1 + license: PSF-2.0 + license_family: PSF + purls: [] + size: 10075 + timestamp: 1733188758872 +- conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + sha256: 337be7af5af8b2817f115b3b68870208b30c31d3439bec07bfb2d8f4823e3568 + md5: d17f13df8b65464ca316cbc000a3cb64 + depends: + - python >=3.9 + license: PSF-2.0 + license_family: PSF + purls: + - pkg:pypi/typing-extensions?source=hash-mapping + size: 39637 + timestamp: 1733188758212 +- conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + sha256: c4b1ae8a2931fe9b274c44af29c5475a85b37693999f8c792dad0f8c6734b1de + md5: dbcace4706afdfb7eb891f7b37d07c04 + license: LicenseRef-Public-Domain + purls: [] + size: 122921 + timestamp: 1737119101255 +- conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda + sha256: 114919ffa80c328127dab9c8e7a38f9d563c617691fb81fccb11c1e86763727e + md5: 32674f8dbfb7b26410ed580dd3c10a29 + depends: + - brotli-python >=1.0.9 + - h2 >=4,<5 + - pysocks >=1.5.6,<2.0,!=1.5.7 + - python >=3.9 + - zstandard >=0.18.0 + license: MIT + license_family: MIT + purls: + - pkg:pypi/urllib3?source=hash-mapping + size: 100102 + timestamp: 1734859520452 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xxhash-0.8.3-hb9d3cd8_0.conda + sha256: 3bbc35b9ee44ffea1de441f906ba05139873a28325f8a8ed152e17af30e62232 + md5: 2ef1822d8168ed5d79ab1bf01088419a + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 107794 + timestamp: 1735848927308 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xxhash-0.8.3-h86ecc28_0.conda + sha256: f210d0b6b8543acef9b73db43a557c94e695f9dfaa2f6989057c449d9c3e1239 + md5: d992916b6e4f6e7412332bbcd41c5aa2 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 104556 + timestamp: 1735848964267 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/xxhash-0.8.3-h5505292_0.conda + sha256: 43573d504e7edc4b876a9058dc316aa9851ced1d433c2b569d583c2db22c76e2 + md5: 92a98c1bbae4729dfd0216ca22c21858 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 98318 + timestamp: 1735849111725 +- conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 + sha256: a4e34c710eeb26945bdbdaba82d3d74f60a78f54a874ec10d373811a5d217535 + md5: 4cb3ad778ec2d5a7acbdf254eb1c42ae + depends: + - libgcc-ng >=9.4.0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 89141 + timestamp: 1641346969816 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yaml-0.2.5-hf897c2e_2.tar.bz2 + sha256: 8bc601d6dbe249eba44b3c456765265cd8f42ef1e778f8df9b0c9c88b8558d7e + md5: b853307650cb226731f653aa623936a4 + depends: + - libgcc-ng >=9.4.0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 92927 + timestamp: 1641347626613 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 + sha256: 93181a04ba8cfecfdfb162fc958436d868cc37db504c58078eab4c1a3e57fbb7 + md5: 4bb3f014845110883a3c5ee811fd84b4 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 88016 + timestamp: 1641347076660 +- conda: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.18.3-py312h178313f_1.conda + sha256: 6b054c93dd19fd7544af51b41a8eacca2ab62271f6c0c5a2a0cffe80dc37a0ce + md5: 6822c49f294d4355f19d314b8b6063d8 + depends: + - __glibc >=2.17,<3.0.a0 + - idna >=2.0 + - libgcc >=13 + - multidict >=4.0 + - propcache >=0.2.1 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/yarl?source=hash-mapping + size: 152305 + timestamp: 1737575898300 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.18.3-py312hcc812fe_1.conda + sha256: bfa211c0dd5dbb308788f055277dc428b7923ceb2de6a22ea98bc17cf306f9f5 + md5: d14c78abdd6109e2b7162f53b6cc1e77 + depends: + - idna >=2.0 + - libgcc >=13 + - multidict >=4.0 + - propcache >=0.2.1 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/yarl?source=hash-mapping + size: 149654 + timestamp: 1737576065314 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.18.3-py312h998013c_1.conda + sha256: 48821d23567ca0f853eee6f7812c74392867e123798b5b3c44f58758d8eb580e + md5: 092d3b40acc67c470f379049be343a7a + depends: + - __osx >=11.0 + - idna >=2.0 + - multidict >=4.0 + - propcache >=0.2.1 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/yarl?source=hash-mapping + size: 145543 + timestamp: 1737576074753 +- conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda + sha256: a4dc72c96848f764bb5a5176aa93dd1e9b9e52804137b99daeebba277b31ea10 + md5: 3947a35e916fcc6b9825449affbf4214 + depends: + - __glibc >=2.17,<3.0.a0 + - krb5 >=1.21.3,<1.22.0a0 + - libgcc >=13 + - libsodium >=1.0.20,<1.0.21.0a0 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: MPL-2.0 + license_family: MOZILLA + purls: [] + size: 335400 + timestamp: 1731585026517 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zeromq-4.3.5-h5efb499_7.conda + sha256: a6003096dc0570a86492040ba32b04ce7662b159600be2252b7a0dfb9414e21c + md5: f2f3282559a4b87b7256ecafb4610107 + depends: + - krb5 >=1.21.3,<1.22.0a0 + - libgcc >=13 + - libsodium >=1.0.20,<1.0.21.0a0 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: MPL-2.0 + license_family: MOZILLA + purls: [] + size: 371419 + timestamp: 1731589490850 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda + sha256: 9e585569fe2e7d3bea71972cd4b9f06b1a7ab8fa7c5139f92a31cbceecf25a8a + md5: f7e6b65943cb73bce0143737fded08f1 + depends: + - __osx >=11.0 + - krb5 >=1.21.3,<1.22.0a0 + - libcxx >=18 + - libsodium >=1.0.20,<1.0.21.0a0 + arch: arm64 + platform: osx + license: MPL-2.0 + license_family: MOZILLA + purls: [] + size: 281565 + timestamp: 1731585108039 +- conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + sha256: 567c04f124525c97a096b65769834b7acb047db24b15a56888a322bf3966c3e1 + md5: 0c3cc595284c5e8f0f9900a9b228a332 + depends: + - python >=3.9 + license: MIT + license_family: MIT + purls: + - pkg:pypi/zipp?source=hash-mapping + size: 21809 + timestamp: 1732827613585 +- conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.1-hb9d3cd8_2.conda + sha256: 5d7c0e5f0005f74112a34a7425179f4eb6e73c92f5d109e6af4ddeca407c92ab + md5: c9f075ab2f33b3bbee9e62d4ad0a6cd8 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libzlib 1.3.1 hb9d3cd8_2 + arch: x86_64 + platform: linux + license: Zlib + license_family: Other + purls: [] + size: 92286 + timestamp: 1727963153079 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zlib-1.3.1-h86ecc28_2.conda + sha256: b4f649aa3ecdae384d5dad7074e198bff120edd3dfb816588e31738fc6d627b1 + md5: bc230abb5d21b63ff4799b0e75204783 + depends: + - libgcc >=13 + - libzlib 1.3.1 h86ecc28_2 + arch: aarch64 + platform: linux + license: Zlib + license_family: Other + purls: [] + size: 95582 + timestamp: 1727963203597 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zlib-1.3.1-h8359307_2.conda + sha256: 58f8860756680a4831c1bf4f294e2354d187f2e999791d53b1941834c4b37430 + md5: e3170d898ca6cb48f1bb567afb92f775 + depends: + - __osx >=11.0 + - libzlib 1.3.1 h8359307_2 + arch: arm64 + platform: osx + license: Zlib + license_family: Other + purls: [] + size: 77606 + timestamp: 1727963209370 +- conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312hef9b889_1.conda + sha256: b97015e146437283f2213ff0e95abdc8e2480150634d81fbae6b96ee09f5e50b + md5: 8b7069e9792ee4e5b4919a7a306d2e67 + depends: + - __glibc >=2.17,<3.0.a0 + - cffi >=1.11 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - zstd >=1.5.6,<1.5.7.0a0 + - zstd >=1.5.6,<1.6.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/zstandard?source=hash-mapping + size: 419552 + timestamp: 1725305670210 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstandard-0.23.0-py312hb698573_1.conda + sha256: 2681c2a249752bdc7978e59ee2f34fcdfcbfda80029b84b8e5fec8dbc9e3af25 + md5: ffcb8e97e62af42075e0e5f46bb9856e + depends: + - cffi >=1.11 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - zstd >=1.5.6,<1.5.7.0a0 + - zstd >=1.5.6,<1.6.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/zstandard?source=hash-mapping + size: 392496 + timestamp: 1725305808244 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py312h15fbf35_1.conda + sha256: d00ca25c1e28fd31199b26a94f8c96574475704a825d244d7a6351ad3745eeeb + md5: a4cde595509a7ad9c13b1a3809bcfe51 + depends: + - __osx >=11.0 + - cffi >=1.11 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - zstd >=1.5.6,<1.5.7.0a0 + - zstd >=1.5.6,<1.6.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/zstandard?source=hash-mapping + size: 330788 + timestamp: 1725305806565 +- conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda + sha256: c558b9cc01d9c1444031bd1ce4b9cff86f9085765f17627a6cd85fc623c8a02b + md5: 4d056880988120e29d75bfff282e0f45 + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 554846 + timestamp: 1714722996770 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.6-h02f22dd_0.conda + sha256: 484f9d0722c77685ae379fbff3ccd662af9ead7e59eb39cd6d0c677cdf25ff6c + md5: be8d5f8cf21aed237b8b182ea86b3dd6 + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 539937 + timestamp: 1714723130243 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.6-hb46c0d2_0.conda + sha256: 2d4fd1ff7ee79cd954ca8e81abf11d9d49954dd1fef80f27289e2402ae9c2e09 + md5: d96942c06c3e84bfcc5efb038724a7fd + depends: + - __osx >=11.0 + - libzlib >=1.2.13,<2.0.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 405089 + timestamp: 1714723101397 diff --git a/examples/inference/resnet50-python-torchscript/magic.lock b/examples/inference/resnet50-python-torchscript/magic.lock new file mode 100644 index 0000000000..87999c426a --- /dev/null +++ b/examples/inference/resnet50-python-torchscript/magic.lock @@ -0,0 +1,8098 @@ +version: 6 +environments: + default: + channels: + - url: https://conda.anaconda.org/conda-forge/ + - url: https://conda.modular.com/max-nightly/ + - url: https://conda.anaconda.org/pytorch/ + indexes: + - https://pypi.org/simple + - https://download.pytorch.org/whl/cpu + packages: + linux-64: + - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_kmp_llvm.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.13-py312h178313f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.1.0-pyh71513ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.1-h205f482_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.1-h1a47875_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.10.6-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.3.0-h4e1184b_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.0-h7959bf6_11.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.2-hefd7a92_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-h173a860_6.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h11f4f37_12.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.9-he1b24dc_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.2-h4e1184b_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-h4e1184b_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.9-he0e7f3f_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.489-h4d475cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.10.0-h113e628_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.13.0-h3cf044e_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-common-cpp-12.8.0-h736e048_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-files-datalake-cpp-12.12.0-ha633028_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/blas-2.116-mkl.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/blas-devel-3.9.0-16_linux64_mkl.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py312h2ec8cdc_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.4-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2025.1.31-hbcca054_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.1.31-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py312h06ac9bb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.12.9-py312hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-cudart-12.4.127-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cuda-cudart_linux-64-12.4.127-h85509e4_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-cupti-12.4.127-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-libraries-12.4.1-ha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-nvrtc-12.4.127-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-nvtx-12.4.127-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-opencl-12.4.127-he02047a_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cuda-runtime-12.4.1-ha804496_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cuda-version-12.4-h3060b56_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-3.3.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.8-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.17.0-pyhd8ed1ab_0.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-py312h178313f_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.12.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gflags-2.2.2-h5888daf_1005.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/glog-0.7.1-hbabe93e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gmp-6.3.0-hac33072_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gmpy2-2.1.5-py312h7201bc8_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.29.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.17-h717163a_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-19.0.1-hfa2a6e7_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-19.0.1-hcb10f89_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-19.0.1-hcb10f89_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-19.0.1-h08228c5_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-16_linux64_mkl.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.1.0-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-16_linux64_mkl.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcrc32c-1.1.2-h9c3ff4c_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcublas-12.4.5.8-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcufft-11.2.1.3-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcufile-1.9.1.3-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcurand-10.3.5.147-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.12.1-h332b0f4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcusolver-11.6.1.9-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcusparse-12.3.1.170-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.23-h4ddbbb0_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libevent-2.1.12-hf998b51_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h767d61c_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-ng-14.2.0-h69a702a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hf1ad2bd_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.35.0-h2b5623c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.35.0-h0121fbd_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.67.1-h25350d4_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libhwloc-2.11.2-default_h0d58e46_1001.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h4ce23a2_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-16_linux64_mkl.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapacke-3.9.0-16_linux64_mkl.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnpp-12.2.5.30-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnvfatbin-12.4.127-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnvjitlink-12.4.127-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnvjpeg-12.3.1.117-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-1.18.0-hfcad708_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-headers-1.18.0-ha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-19.0.1-h081d1f1_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.47-h943b412_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsentencepiece-0.2.0-h8e10757_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.49.1-hee588c1_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hf672d98_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-h8f9b012_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libthrift-0.21.0-h0e7cc3e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hd9ff511_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.10.0-h4c51ac1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.5.0-h851e524_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.6-h8d12d68_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/llvm-openmp-15.0.7-h0cdce71_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.10.0-h5888daf_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-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022718-release.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-2022.1.0-h84fe81f_915.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-devel-2022.1.0-ha770c72_916.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-include-2022.1.0-h84fe81f_915.tar.bz2 + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022718-release.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/mpc-1.3.1-h24ddda3_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/mpfr-4.2.1-h90cbb55_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mpmath-1.3.0-pyhd8ed1ab_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.16-py312h66e93f0_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-h2d0b736_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/nlohmann_json-3.11.3-he02047a_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ocl-icd-2.3.2-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/opencl-headers-2024.10.24-h5888daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.3-h5fbd93e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.1-h7b32b05_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/orc-2.0.3-h12ee42a_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.3-py312hf9745cd_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-11.1.0-py312h80c1187_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/prometheus-cpp-1.3.0-ha5d0236_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.1-py312h178313f_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-19.0.1-py312h7900ff3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-19.0.1-py312h01725c0_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.9-h9e4cc4f_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-xxhash-3.5.0-py312h66e93f0_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda + - conda: https://conda.anaconda.org/pytorch/linux-64/pytorch-2.5.1-py3.12_cuda12.4_cudnn9.1.0_0.tar.bz2 + - conda: https://conda.anaconda.org/pytorch/linux-64/pytorch-cuda-12.4-hc786d27_7.tar.bz2 + - conda: https://conda.anaconda.org/pytorch/noarch/pytorch-mutex-1.0-cuda.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py312h178313f_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.1-py312hbf22597_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/re2-2024.07.02-h9925aae_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda + - 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/linux-64/s2n-1.5.11-h072c03f_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/safetensors-0.5.3-py312h12e396e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-0.2.0-hc8f76dd_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-python-0.2.0-py312hb6b8a2b_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-spm-0.2.0-h8e10757_10.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-h8bd8927_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sympy-1.13.3-pyh2585a3b_105.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tbb-2021.13.0-hceb3a55_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.21.0-py312h8360d73_0.conda + - conda: https://conda.anaconda.org/pytorch/linux-64/torchtriton-3.1.0-py312.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.49.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xxhash-0.8.3-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.18.3-py312h178313f_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.1-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312hef9b889_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda + linux-aarch64: + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.13-py312hcc812fe_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.1.0-pyh71513ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.1-hb7ec8d5_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.1-h740c5af_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-common-0.10.6-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-compression-0.3.0-h0f0193d_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-event-stream-0.5.0-hcbd8f92_11.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.2-h3df160d_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-hfd5ba81_6.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h5f50e26_12.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.9-h05b070f_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.2-h0f0193d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h0f0193d_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.9-hab3ce66_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.489-h88461e4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-core-cpp-1.14.0-h1887c18_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-identity-cpp-1.10.0-h47b0b28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-blobs-cpp-12.13.0-h185ecfd_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-common-cpp-12.8.0-h1b94036_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-files-datalake-cpp-12.12.0-h37d6d07_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/brotli-python-1.1.0-py312h6f74592_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h68df207_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/c-ares-1.34.4-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2025.1.31-hcefe29a_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.1.31-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cffi-1.17.1-py312hac81daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-3.3.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.8-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.17.0-pyhd8ed1ab_0.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-py312hcc812fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.12.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gflags-2.2.2-h5ad3122_1005.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/glog-0.7.1-h468a4a4_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.29.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/keyutils-1.6.1-h4e544f5_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/krb5-1.21.3-h50a48e9_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lcms2-2.17-hc88f144_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.0.0-h4de3ea5_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h18dbdb1_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-19.0.1-h36213f4_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-19.0.1-h3b568fd_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-19.0.1-h3b568fd_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-19.0.1-h1e9d426_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-31_h1a9f1db_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlicommon-1.1.0-h86ecc28_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlidec-1.1.0-h86ecc28_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlienc-1.1.0-h86ecc28_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-31_hab92f65_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcrc32c-1.1.2-h01db608_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcurl-8.12.1-h6702fde_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libdeflate-1.23-h5e3c512_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20250104-pl5321h976ea20_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libev-4.33-h31becfc_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libevent-2.1.12-h4ba1bb4_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.6.4-h5ad3122_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.4.6-he21f813_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-14.2.0-he277a41_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-14.2.0-he9431aa_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-2.35.0-hccf9d24_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-storage-2.35.0-hb9b2b65_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgrpc-1.67.1-hf7ccdd3_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libiconv-1.18-hc99b53d_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libjpeg-turbo-3.0.0-h31becfc_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-31_h411afd4_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.4-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnghttp2-1.64.0-hc8609a4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.29-pthreads_h9d3fd7e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopentelemetry-cpp-1.18.0-h60b47f9_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopentelemetry-cpp-headers-1.18.0-h8af1aa0_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-19.0.1-hfc78867_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.47-hec79eb8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.3-h44a3b7b_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsentencepiece-0.2.0-h6164ad9_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.20-h68df207_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.49.1-h5eb1b54_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libssh2-1.11.1-ha41c0db_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libthrift-0.21.0-h154c74f_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.0-h88f7998_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.10.0-ha346350_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libwebp-base-1.5.0-h0886dbf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcb-1.17.0-h262b8f6_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.6-h2e0c361_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.10.0-h5ad3122_1.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022718-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.16-py312hb2c0f52_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-ha32ae93_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/nlohmann_json-3.11.3-h0a1ffab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openjpeg-2.5.3-h3f56577_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.1-hd08dc88_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/orc-2.0.3-hdd485aa_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pandas-2.2.3-py312ha2895bd_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pillow-11.1.0-py312h719f0cf_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/prometheus-cpp-1.3.0-h7938499_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.2.1-py312hcc812fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pthread-stubs-0.4-h86ecc28_1002.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-19.0.1-py312h8025657_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-19.0.1-py312h66f7834_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.9-h1683364_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-xxhash-3.5.0-py312h52516f5_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.12-5_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyyaml-6.0.2-py312hcc812fe_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyzmq-26.2.1-py312h2427ae1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/re2-2024.07.02-haa97905_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8382b9d_2.conda + - 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/linux-aarch64/s2n-1.5.11-h3caee7a_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/safetensors-0.5.3-py312h8cbf658_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-0.2.0-h6c1b121_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-python-0.2.0-py312h197ff68_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-spm-0.2.0-h6164ad9_10.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-hd4fb6f5_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.21.0-py312ha0d6ea1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py312h52516f5_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.49.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxau-1.0.12-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxdmcp-1.1.5-h57736b2_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xxhash-0.8.3-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yaml-0.2.5-hf897c2e_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.18.3-py312hcc812fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zeromq-4.3.5-h5efb499_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zlib-1.3.1-h86ecc28_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstandard-0.23.0-py312hb698573_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.6-h02f22dd_0.conda + - pypi: https://download.pytorch.org/whl/Jinja2-3.1.4-py3-none-any.whl#sha256=bc5dd2abb727a5319567b7a813e6a2e7318c39f4f487cfe6c89c6f9c7d25197d + - pypi: https://download.pytorch.org/whl/MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl#sha256=ac07bad82163452a6884fe8fa0963fb98c2346ba78d779ec06bd7a6262132aee + - pypi: https://download.pytorch.org/whl/mpmath-1.3.0-py3-none-any.whl#sha256=a0b2b9fe80bbcd81a6647ff13108738cfb482d481d826cc0e02f5b35e5c88d2c + - pypi: https://download.pytorch.org/whl/setuptools-70.2.0-py3-none-any.whl#sha256=b8b8060bb426838fbe942479c90296ce976249451118ef566a5a0b7d8b78fb05 + - pypi: https://download.pytorch.org/whl/sympy-1.13.1-py3-none-any.whl#sha256=db36cdc64bf61b9b24578b6f7bab1ecdd2452cf008f34faa33776680c26d66f8 + - pypi: https://download.pytorch.org/whl/cpu/torch-2.5.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl#sha256=36d1be99281b6f602d9639bd0af3ee0006e7aab16f6718d86f709d395b6f262c + osx-arm64: + - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.13-py312h998013c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.1.0-pyh71513ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.1-hfc2798a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.1-hc8a0bd2_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.10.6-h5505292_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-compression-0.3.0-hc8a0bd2_5.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.0-h54f970a_11.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.2-h96aa502_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-haba67d1_6.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h24f418c_12.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.9-hf37e03c_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.2-hc8a0bd2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-hc8a0bd2_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.9-ha81f72f_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.489-h0e5014b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.14.0-hd50102c_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.10.0-hc602bab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-blobs-cpp-12.13.0-h7585a09_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-common-cpp-12.8.0-h9ca1f76_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-files-datalake-cpp-12.12.0-hcdd55da_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py312hde4cb15_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.4-h5505292_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2025.1.31-hf0a4a13_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.1.31-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.1-py312h0fad829_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.12.9-py312hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-3.3.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.8-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.17.0-pyhd8ed1ab_0.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-py312h998013c_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.12.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gflags-2.2.2-hf9b8971_1005.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/glog-0.7.1-heb240a5_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gmp-6.3.0-h7bae524_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gmpy2-2.1.5-py312h524cf62_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.29.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.17-h7eeda09_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_h07bc746_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-19.0.1-h0945df6_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-19.0.1-hf07054f_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-19.0.1-hf07054f_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-19.0.1-h4239455_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-19_osxarm64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.1.0-hd74edd7_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.1.0-hd74edd7_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlienc-1.1.0-hd74edd7_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-19_osxarm64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcrc32c-1.1.2-hbdafb3b_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.12.1-h73640d1_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.23-hec38601_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libev-4.33-h93a5062_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libevent-2.1.12-h2757513_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.4-h286801f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-2.35.0-hdbe95d5_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-storage-2.35.0-h7081f7f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgrpc-1.67.1-h0a426d6_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.18-hfe07756_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.0.0-hb547adb_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-19_osxarm64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.4-h39f12f2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.64.0-h6d7220d_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.24-openmp_hd76b1f2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopentelemetry-cpp-1.18.0-h0c05b2d_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopentelemetry-cpp-headers-1.18.0-hce30654_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-19.0.1-h636d7b7_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.47-h3783ad8_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.3-h3bd63a1_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h07bc746_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsentencepiece-0.2.0-he13a0af_10.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.1-h3f77e49_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.1-h9cc3647_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libthrift-0.21.0-h64651cc_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-h551f018_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.10.0-hda25de7_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.5.0-h2471fea_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxcb-1.17.0-hdb1d25a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.6-hce475f1_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-15.0.7-h7cfbb63_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.10.0-h286801f_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-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022718-release.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/mpc-1.3.1-h8f1351a_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/mpfr-4.2.1-hb693164_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mpmath-1.3.0-pyhd8ed1ab_1.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.16-py312h024a12e_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/osx-arm64/ncurses-6.5-h5e97a16_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/nlohmann_json-3.11.3-h00cdb27_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openjpeg-2.5.3-h8a3d83b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.1-h81ee809_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/orc-2.0.3-h0ff2369_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.3-py312hcd31e36_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-11.1.0-py312h50aef2c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/prometheus-cpp-1.3.0-h0967b3e_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.1-py312h998013c_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pthread-stubs-0.4-hd74edd7_1002.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-19.0.1-py312h1f38498_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-19.0.1-py312hc40f475_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.9-hc22306f_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-xxhash-3.5.0-py312hea69d52_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-5_cp312.conda + - conda: https://conda.anaconda.org/pytorch/osx-arm64/pytorch-2.5.1-py3.12_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py312h998013c_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.1-py312hf4875e0_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/re2-2024.07.02-h6589ca4_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda + - 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/osx-arm64/safetensors-0.5.3-py312hcd83bfe_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-0.2.0-h22a84ea_10.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-python-0.2.0-py312h155166a_10.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-spm-0.2.0-he13a0af_10.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-h98b9ce2_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sympy-1.13.3-pyh2585a3b_105.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.21.0-py312hf3e4074_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.49.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxau-1.0.12-h5505292_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxdmcp-1.1.5-hd74edd7_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xxhash-0.8.3-h5505292_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.18.3-py312h998013c_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zlib-1.3.1-h8359307_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py312h15fbf35_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.6-hb46c0d2_0.conda +packages: +- conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 + sha256: fe51de6107f9edc7aa4f786a70f4a883943bc9d39b3bb7307c04c41410990726 + md5: d7c89558ba9fa0495403155b64376d81 + arch: x86_64 + platform: linux + license: None + purls: [] + size: 2562 + timestamp: 1578324546067 +- conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_kmp_llvm.tar.bz2 + build_number: 2 + sha256: 84a66275da3a66e3f3e70e9d8f10496d807d01a9e4ec16cd2274cc5e28c478fc + md5: 562b26ba2e19059551a811e72ab7f793 + depends: + - _libgcc_mutex 0.1 conda_forge + - llvm-openmp >=9.0.1 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 5744 + timestamp: 1650742457817 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2 + build_number: 16 + sha256: 3702bef2f0a4d38bd8288bbe54aace623602a1343c2cfbefd3fa188e015bebf0 + md5: 6168d71addc746e8f2b8d57dfd2edcea + depends: + - libgomp >=7.5.0 + constrains: + - openmp_impl 9999 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 23712 + timestamp: 1650670790230 +- conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.6-pyhd8ed1ab_0.conda + sha256: a2a5579be9fb21f9397f51a4ba09599782c93e9117951a5105d8ee4b80d648c1 + md5: 5b7d3ceeb36e8e6783eae78acd4c18e1 + depends: + - python >=3.9 + license: PSF-2.0 + license_family: PSF + purls: + - pkg:pypi/aiohappyeyeballs?source=compressed-mapping + size: 19236 + timestamp: 1739175837817 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.13-py312h178313f_0.conda + sha256: 985834edea972ddf6c35ab4185fb228440efb845a70a88182895f8f90df4a4c9 + md5: 0ea623ee1f29a7e1d703bc3b0ef82306 + depends: + - __glibc >=2.17,<3.0.a0 + - aiohappyeyeballs >=2.3.0 + - aiosignal >=1.1.2 + - attrs >=17.3.0 + - frozenlist >=1.1.1 + - libgcc >=13 + - multidict >=4.5,<7.0 + - propcache >=0.2.0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - yarl >=1.17.0,<2.0 + arch: x86_64 + platform: linux + license: MIT AND Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/aiohttp?source=hash-mapping + size: 915558 + timestamp: 1740482064204 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.13-py312hcc812fe_0.conda + sha256: ca1fa0450decaca810db4b9f5ff1dd00c710fd89767c764a771b5d4ce7a152b0 + md5: 7e952a2d83ebfb371515c010acc110c7 + depends: + - aiohappyeyeballs >=2.3.0 + - aiosignal >=1.1.2 + - attrs >=17.3.0 + - frozenlist >=1.1.1 + - libgcc >=13 + - multidict >=4.5,<7.0 + - propcache >=0.2.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - yarl >=1.17.0,<2.0 + arch: aarch64 + platform: linux + license: MIT AND Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/aiohttp?source=hash-mapping + size: 904149 + timestamp: 1740481643315 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.13-py312h998013c_0.conda + sha256: 84f8c35912bce8c9ee979454a685ec0497fbccd7da86351e8d774ae3e7456055 + md5: d575ea7d96ce2c9fed370d85d3ef464e + depends: + - __osx >=11.0 + - aiohappyeyeballs >=2.3.0 + - aiosignal >=1.1.2 + - attrs >=17.3.0 + - frozenlist >=1.1.1 + - multidict >=4.5,<7.0 + - propcache >=0.2.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - yarl >=1.17.0,<2.0 + arch: arm64 + platform: osx + license: MIT AND Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/aiohttp?source=hash-mapping + size: 885919 + timestamp: 1740482022806 +- conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda + sha256: 7de8ced1918bbdadecf8e1c1c68237fe5709c097bd9e0d254f4cad118f4345d0 + md5: 1a3981115a398535dbe3f6d5faae3d36 + depends: + - frozenlist >=1.1.0 + - python >=3.9 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/aiosignal?source=hash-mapping + size: 13229 + timestamp: 1734342253061 +- conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.1.0-pyh71513ae_0.conda + sha256: 1f267886522dfb9ae4e5ebbc3135b5eb13cff27bdbfe8d881a4d893459166ab4 + md5: 2cc3f588512f04f3a0c64b4e9bedc02d + depends: + - python >=3.9 + license: MIT + license_family: MIT + purls: + - pkg:pypi/attrs?source=compressed-mapping + size: 56370 + timestamp: 1737819298139 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.1-h205f482_0.conda + sha256: ebe5e33249f37f6bb481de99581ebdc92dbfcf1b6915609bcf3c9e78661d6352 + md5: 9c500858e88df50af3cc883d194de78a + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 108111 + timestamp: 1737509831651 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.1-hb7ec8d5_0.conda + sha256: e1e6c9267a4d9af30b1d28c11a9041b17b7840ff83ef08614145a2a4f444f5b4 + md5: 2630f030652970a5531e492f6b2a6dd3 + depends: + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 + - libgcc >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 112658 + timestamp: 1737509863269 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.1-hfc2798a_0.conda + sha256: 5a60d196a585b25d1446fb973009e4e648e8d70beaa2793787243ede6da0fd9a + md5: 0abd67c0f7b60d50348fbb32fef50b65 + depends: + - __osx >=11.0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 92562 + timestamp: 1737509877079 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.1-h1a47875_3.conda + sha256: 095ac824ea9303eff67e04090ae531d9eb33d2bf8f82eaade39b839c421e16e8 + md5: 55a8561fdbbbd34f50f57d9be12ed084 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + - openssl >=3.3.1,<4.0a0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 47601 + timestamp: 1733991564405 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.1-h740c5af_3.conda + sha256: c5c7961d48ca7320ed3560c036f7aa5244df4b85d9657f70aacc5faba3e1509a + md5: 57ed2c445d7ef01d121b9bcea0522913 + depends: + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + - openssl >=3.3.1,<4.0a0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 50036 + timestamp: 1733991581303 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.1-hc8a0bd2_3.conda + sha256: 1f44be36e1daa17b4b081debb8aee492d13571084f38b503ad13e869fef24fe4 + md5: 8b0ce61384e5a33d2b301a64f3d22ac5 + depends: + - __osx >=11.0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - openssl >=3.3.1,<4.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 39925 + timestamp: 1733991649383 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.10.6-hb9d3cd8_0.conda + sha256: 496e92f2150fdc351eacf6e236015deedb3d0d3114f8e5954341cbf9f3dda257 + md5: d7d4680337a14001b0e043e96529409b + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 236574 + timestamp: 1733975453350 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-common-0.10.6-h86ecc28_0.conda + sha256: 57288ec5df35781bea8fc6a8c9099cad6695b747784fc1b8862a0f9e5b3bf5ab + md5: fef806a0f6de853670c746bbece01966 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 259031 + timestamp: 1733975520465 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.10.6-h5505292_0.conda + sha256: 3bde135c8e74987c0f79ecd4fa17ec9cff0d658b3090168727ca1af3815ae57a + md5: 145e5b4c9702ed279d7d68aaf096f77d + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 221863 + timestamp: 1733975576886 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.3.0-h4e1184b_5.conda + sha256: 62ca84da83585e7814a40240a1e750b1563b2680b032a471464eccc001c3309b + md5: 3f4c1197462a6df2be6dc8241828fe93 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 19086 + timestamp: 1733991637424 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-compression-0.3.0-h0f0193d_5.conda + sha256: 3f05d19f68ef800f33d44ea2a4211003124076516c8469abc7d432236344df53 + md5: 3a1421d12435df5b4c412cc4c8fac64d + depends: + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 19740 + timestamp: 1733991625201 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-compression-0.3.0-hc8a0bd2_5.conda + sha256: 47b2813f652ce7e64ac442f771b2a5f7d4af4ad0d07ff51f6075ea80ed2e3f09 + md5: a8b6c17732d14ed49d0e9b59c43186bc + depends: + - __osx >=11.0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 18068 + timestamp: 1733991869211 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.0-h7959bf6_11.conda + sha256: 10d7240c7db0c941fb1a59c4f8ea6689a434b03309ee7b766fa15a809c553c02 + md5: 9b3fb60fe57925a92f399bc3fc42eccf + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 54003 + timestamp: 1734024480949 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-event-stream-0.5.0-hcbd8f92_11.conda + sha256: 79aa363c71c891a27496c0498f8d498b2ddc87b3ccb3b6c9da5b50b05936ebb8 + md5: e0772c59af4243a9b2565baa5d79e5b6 + depends: + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + - libgcc >=13 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 55207 + timestamp: 1734024546663 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.0-h54f970a_11.conda + sha256: f0667935f4e0d4c25e0e51da035640310b5ceeb8f723156734439bde8b848d7d + md5: ba41238f8e653998d7d2f42e3a8db054 + depends: + - __osx >=11.0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + - libcxx >=18 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 47078 + timestamp: 1734024749727 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.2-hefd7a92_4.conda + sha256: 4a330206bd51148f6c13ca0b7a4db40f29a46f090642ebacdeb88b8a4abd7f99 + md5: 5ce4df662d32d3123ea8da15571b6f51 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-compression >=0.3.0,<0.3.1.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 197731 + timestamp: 1734008380764 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.2-h3df160d_4.conda + sha256: 3a1d2d332945306be9d49e569b95e4cc172d825f10e88715513a172f28ebb59e + md5: 28f00aa7fd9556c4c461328cf146c20b + depends: + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-compression >=0.3.0,<0.3.1.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - libgcc >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 190586 + timestamp: 1734008442362 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.2-h96aa502_4.conda + sha256: 22e4737c8a885995b7c1ae1d79c1f6e78d489e16ec079615980fdde067aeaf76 + md5: 495c93a4f08b17deb3c04894512330e6 + depends: + - __osx >=11.0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-compression >=0.3.0,<0.3.1.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 152983 + timestamp: 1734008451473 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-h173a860_6.conda + sha256: 335d822eead0a097ffd23677a288e1f18ea22f47a92d4f877419debb93af0e81 + md5: 9a063178f1af0a898526cc24ba7be486 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + - s2n >=1.5.11,<1.5.12.0a0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 157263 + timestamp: 1737207617838 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-hfd5ba81_6.conda + sha256: d8adfde05cee11057d99c3802e84b2300430a7c7c3c9936165d1d4b25ef59d91 + md5: 4e6771b45cb2b035c62d023dbf0dc000 + depends: + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + - s2n >=1.5.11,<1.5.12.0a0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 160933 + timestamp: 1737207637279 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-haba67d1_6.conda + sha256: 73722dd175af78b6cbfa033066f0933351f5382a1a737f6c6d9b8cfa84022161 + md5: d02e8f40ff69562903e70a1c6c48b009 + depends: + - __osx >=11.0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 136048 + timestamp: 1737207681224 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h11f4f37_12.conda + sha256: 512d3969426152d9d5fd886e27b13706122dc3fa90eb08c37b0d51a33d7bb14a + md5: 96c3e0221fa2da97619ee82faa341a73 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 194672 + timestamp: 1734025626798 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h5f50e26_12.conda + sha256: ffeb9100cc8fd4093e1a6fdfd938bc4a396dd77480b7fb17aa42855a4d5e2c70 + md5: 031ca33115d4b1eeb43f435d6215778c + depends: + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - libgcc >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 169516 + timestamp: 1734025167885 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h24f418c_12.conda + sha256: 96575ea1dd2a9ea94763882e40a66dcbff9c41f702bf37c9514c4c719b3c11dd + md5: c072045a6206f88015d02fcba1705ea1 + depends: + - __osx >=11.0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 134371 + timestamp: 1734025379525 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.9-he1b24dc_1.conda + sha256: 15fbdedc56850f8be5be7a5bcaea1af09c97590e631c024ae089737fc932fc42 + md5: caafc32928a5f7f3f7ef67d287689144 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-auth >=0.8.1,<0.8.2.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + - libgcc >=13 + - openssl >=3.4.0,<4.0a0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 115413 + timestamp: 1737558687616 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.9-h05b070f_1.conda + sha256: 9e7857fbc33eddc291fa09890ce468a92485d3e3e127bc00bbd1803e34121f84 + md5: e0a2869195f069db88b8932f5b00bee5 + depends: + - aws-c-auth >=0.8.1,<0.8.2.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + - libgcc >=13 + - openssl >=3.4.0,<4.0a0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 117875 + timestamp: 1737558720047 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.9-hf37e03c_1.conda + sha256: 92e8ca4eefcbbdf4189584c9410382884a06ed3030e5ecaac656dab8c95e6a80 + md5: de65f5e4ab5020103fe70a0eba9432a0 + depends: + - __osx >=11.0 + - aws-c-auth >=0.8.1,<0.8.2.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 98731 + timestamp: 1737558731831 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.2-h4e1184b_0.conda + sha256: 0424e380c435ba03b5948d02e8c958866c4eee50ed29e57f99473a5f795a4cfc + md5: dcd498d493818b776a77fbc242fbf8e4 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 55911 + timestamp: 1736535960724 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.2-h0f0193d_0.conda + sha256: fba38e469457764afcb94aa84d4d7788e6b5fa1554d34b05c904d2245fdd3c81 + md5: a78928881c652facde2a13ec6e776f3c + depends: + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 58221 + timestamp: 1736536003041 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.2-hc8a0bd2_0.conda + sha256: ea4f0f1e99056293c69615f581a997d65ba7e229e296e402e0d8ef750648a5b5 + md5: e7b5498ac7b7ab921a907be38f3a8080 + depends: + - __osx >=11.0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 49872 + timestamp: 1736536152332 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-h4e1184b_4.conda + sha256: 1ed9a332d06ad595694907fad2d6d801082916c27cd5076096fda4061e6d24a8 + md5: 74e8c3e4df4ceae34aa2959df4b28101 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 72762 + timestamp: 1733994347547 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h0f0193d_4.conda + sha256: 9f1e3635a587bcf92b61d88c7af7d24cd89c147c6d0ae58afbde08e65bcf48da + md5: 3bd35b0adab3d743f09e0252cc441d6b + depends: + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 72154 + timestamp: 1733994384415 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-hc8a0bd2_4.conda + sha256: 215086d95e8ff1d3fcb0197ada116cc9d7db1fdae7573f5e810d20fa9215b47c + md5: e70e88a357a3749b67679c0788c5b08a + depends: + - __osx >=11.0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 70186 + timestamp: 1733994496998 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.9-he0e7f3f_2.conda + sha256: c1930569713bd5231d48d885a5e3707ac917b428e8f08189d14064a2bb128adc + md5: 8a4e6fc8a3b285536202b5456a74a940 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-auth >=0.8.1,<0.8.2.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-event-stream >=0.5.0,<0.5.1.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-c-mqtt >=0.11.0,<0.11.1.0a0 + - aws-c-s3 >=0.7.9,<0.7.10.0a0 + - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 353222 + timestamp: 1737565463079 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.9-hab3ce66_2.conda + sha256: c3884fb10e0fd9be5c13256cabcda1afa9d2fcf8878c67214d02fc344509857d + md5: 875968ebffe992b68faf2caebbf32f02 + depends: + - aws-c-auth >=0.8.1,<0.8.2.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-event-stream >=0.5.0,<0.5.1.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-c-mqtt >=0.11.0,<0.11.1.0a0 + - aws-c-s3 >=0.7.9,<0.7.10.0a0 + - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 + - libgcc >=13 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 283812 + timestamp: 1737565480034 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.9-ha81f72f_2.conda + sha256: ed5f1d19aad53787fdebe13db4709c97eae2092536cc55d3536eba320c4286e1 + md5: c9c034d3239bf25687ca4dd985007ecd + depends: + - __osx >=11.0 + - aws-c-auth >=0.8.1,<0.8.2.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-event-stream >=0.5.0,<0.5.1.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-c-mqtt >=0.11.0,<0.11.1.0a0 + - aws-c-s3 >=0.7.9,<0.7.10.0a0 + - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 + - libcxx >=18 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 235976 + timestamp: 1737565563139 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.489-h4d475cb_0.conda + sha256: 08d6b7d2ed17bfcc7deb903c7751278ee434abdb27e3be0dceb561f30f030c75 + md5: b775e9f46dfa94b228a81d8e8c6d8b1d + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-event-stream >=0.5.0,<0.5.1.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + - aws-crt-cpp >=0.29.9,<0.29.10.0a0 + - libcurl >=8.11.1,<9.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 3144364 + timestamp: 1737576036746 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.489-h88461e4_0.conda + sha256: 88353e82b053763168cddbe2f88048defc1c97b3dad0966fbe8c4fa7aa592c7e + md5: e725d8fa77a6a5f38a78c5de914a5f40 + depends: + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-event-stream >=0.5.0,<0.5.1.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + - aws-crt-cpp >=0.29.9,<0.29.10.0a0 + - libcurl >=8.11.1,<9.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 3015109 + timestamp: 1737575993030 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.489-h0e5014b_0.conda + sha256: d82451530ddf363d8bb31a8a7391bb9699f745e940ace91d78c0e6170deef03c + md5: 156cfb45a1bb8cffc81e59047bb34f51 + depends: + - __osx >=11.0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-event-stream >=0.5.0,<0.5.1.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + - aws-crt-cpp >=0.29.9,<0.29.10.0a0 + - libcurl >=8.11.1,<9.0a0 + - libcxx >=18 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 2874126 + timestamp: 1737577023623 +- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda + sha256: fe07debdb089a3db17f40a7f20d283d75284bb4fc269ef727b8ba6fc93f7cb5a + md5: 0a8838771cc2e985cd295e01ae83baf1 + depends: + - __glibc >=2.17,<3.0.a0 + - libcurl >=8.10.1,<9.0a0 + - libgcc >=13 + - libstdcxx >=13 + - openssl >=3.3.2,<4.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 345117 + timestamp: 1728053909574 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-core-cpp-1.14.0-h1887c18_0.conda + sha256: 8967b3ccee4d74e61f6ec82dd8efb9deb854ee7ba012dfe767b7a92e0ac77724 + md5: e0c3a906a41be769f0ae20ca3e31cfc0 + depends: + - libcurl >=8.10.1,<9.0a0 + - libgcc >=13 + - libstdcxx >=13 + - openssl >=3.3.2,<4.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 338650 + timestamp: 1728055589907 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.14.0-hd50102c_0.conda + sha256: f5b91329ed59ffc0be8747784c6e4cc7e56250c54032883a83bc11808ef6a87e + md5: f093a11dcf3cdcca010b20a818fcc6dc + depends: + - __osx >=11.0 + - libcurl >=8.10.1,<9.0a0 + - libcxx >=17 + - openssl >=3.3.2,<4.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 294299 + timestamp: 1728054014060 +- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.10.0-h113e628_0.conda + sha256: 286b31616c191486626cb49e9ceb5920d29394b9e913c23adb7eb637629ba4de + md5: 73f73f60854f325a55f1d31459f2ab73 + depends: + - __glibc >=2.17,<3.0.a0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - libgcc >=13 + - libstdcxx >=13 + - openssl >=3.3.2,<4.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 232351 + timestamp: 1728486729511 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-identity-cpp-1.10.0-h47b0b28_0.conda + sha256: 1c72423b9beba167d2f01b80dc204da77240a8266f1edb3d89510c852b300d69 + md5: 94e73a7877743a85c57091d8afab2348 + depends: + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - libgcc >=13 + - libstdcxx >=13 + - openssl >=3.3.2,<4.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 217132 + timestamp: 1728488096615 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.10.0-hc602bab_0.conda + sha256: bde446b916fff5150606f8ed3e6058ffc55a3aa72381e46f1ab346590b1ae40a + md5: d7b71593a937459f2d4b67e1a4727dc2 + depends: + - __osx >=11.0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - libcxx >=17 + - openssl >=3.3.2,<4.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 166907 + timestamp: 1728486882502 +- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.13.0-h3cf044e_1.conda + sha256: 2606260e5379eed255bcdc6adc39b93fb31477337bcd911c121fc43cd29bf394 + md5: 7eb66060455c7a47d9dcdbfa9f46579b + depends: + - __glibc >=2.17,<3.0.a0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 549342 + timestamp: 1728578123088 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-blobs-cpp-12.13.0-h185ecfd_1.conda + sha256: 280ec70009a92626054f58e45b168fce393e71a9710587488bd8401628cda481 + md5: 221e1e5ecb2643e113f32b3229d5ba33 + depends: + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 + - libgcc >=13 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 502934 + timestamp: 1728580241002 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-blobs-cpp-12.13.0-h7585a09_1.conda + sha256: 08d52d130addc0fb55d5ba10d9fa483e39be25d69bac7f4c676c2c3069207590 + md5: 704238ef05d46144dae2e6b5853df8bc + depends: + - __osx >=11.0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 + - libcxx >=17 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 438636 + timestamp: 1728578216193 +- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-common-cpp-12.8.0-h736e048_1.conda + sha256: 273475f002b091b66ce7366da04bf164c3732c03f8692ab2ee2d23335b6a82ba + md5: 13de36be8de3ae3f05ba127631599213 + depends: + - __glibc >=2.17,<3.0.a0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libxml2 >=2.12.7,<3.0a0 + - openssl >=3.3.2,<4.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 149312 + timestamp: 1728563338704 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-common-cpp-12.8.0-h1b94036_1.conda + sha256: 146e76aac169e3dbdce5d3b142b7930ac643795c765e7655d1989905ec7d3231 + md5: 793b1080ab2d958980f137a8643cd6e8 + depends: + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libxml2 >=2.12.7,<3.0a0 + - openssl >=3.3.2,<4.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 140832 + timestamp: 1728565334900 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-common-cpp-12.8.0-h9ca1f76_1.conda + sha256: 77ab04e8fe5636a2de9c718f72a43645f7502cd208868c8a91ffba385547d585 + md5: 7a187cd7b1445afc80253bb186a607cc + depends: + - __osx >=11.0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - libcxx >=17 + - libxml2 >=2.12.7,<3.0a0 + - openssl >=3.3.2,<4.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 121278 + timestamp: 1728563418777 +- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-files-datalake-cpp-12.12.0-ha633028_1.conda + sha256: 5371e4f3f920933bb89b926a85a67f24388227419abd6e99f6086481e5e8d5f2 + md5: 7c1980f89dd41b097549782121a73490 + depends: + - __glibc >=2.17,<3.0.a0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 + - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 287366 + timestamp: 1728729530295 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-files-datalake-cpp-12.12.0-h37d6d07_1.conda + sha256: 4079c617a75682e49bae63670d58fd6078ccfbbe55ca1f994acab3a74ab6bbcc + md5: b724f3b4b7f4e9b36c58cbe3ed8610a2 + depends: + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 + - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 + - libgcc >=13 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 260547 + timestamp: 1728730924071 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-files-datalake-cpp-12.12.0-hcdd55da_1.conda + sha256: f48523f8aa0b5b80f45a92f0556b388dd96f44ac2dc2f44a01d08c1822eec97d + md5: c49fbc5233fcbaa86391162ff1adef38 + depends: + - __osx >=11.0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 + - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 + - libcxx >=17 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 196032 + timestamp: 1728729672889 +- conda: https://conda.anaconda.org/conda-forge/linux-64/blas-2.116-mkl.tar.bz2 + build_number: 16 + sha256: 87056ebdc90b6d1ea6726d04d42b844cc302112e80508edbf7bf1f1a4fd3fed2 + md5: c196a26abf6b4f132c88828ab7c2231c + depends: + - _openmp_mutex * *_llvm + - _openmp_mutex >=4.5 + - blas-devel 3.9.0 16_linux64_mkl + - libblas 3.9.0 16_linux64_mkl + - libcblas 3.9.0 16_linux64_mkl + - libgcc-ng >=12 + - libgfortran-ng + - libgfortran5 >=10.4.0 + - liblapack 3.9.0 16_linux64_mkl + - liblapacke 3.9.0 16_linux64_mkl + - llvm-openmp >=14.0.4 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 13258 + timestamp: 1660094704275 +- conda: https://conda.anaconda.org/conda-forge/linux-64/blas-devel-3.9.0-16_linux64_mkl.tar.bz2 + build_number: 16 + sha256: a7da65ca4e0322317cbc4d387c4a5f075cdc7fcd12ad9f7f18da758c7532749a + md5: 3f92c1c9e1c0e183462c5071aa02cae1 + depends: + - libblas 3.9.0 16_linux64_mkl + - libcblas 3.9.0 16_linux64_mkl + - liblapack 3.9.0 16_linux64_mkl + - liblapacke 3.9.0 16_linux64_mkl + - mkl >=2022.1.0,<2023.0a0 + - mkl-devel 2022.1.* + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 12630 + timestamp: 1660094595212 +- conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py312h2ec8cdc_2.conda + sha256: f2a59ccd20b4816dea9a2a5cb917eb69728271dbf1aeab4e1b7e609330a50b6f + md5: b0b867af6fc74b2a0aa206da29c0f3cf + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - libbrotlicommon 1.1.0 hb9d3cd8_2 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: + - pkg:pypi/brotli?source=hash-mapping + size: 349867 + timestamp: 1725267732089 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/brotli-python-1.1.0-py312h6f74592_2.conda + sha256: 9736bf660a0e4260c68f81d2635b51067f817813e6490ac9e8abd9a835dcbf6d + md5: e1e9727063057168d95f27a032acd0a4 + depends: + - libgcc >=13 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - libbrotlicommon 1.1.0 h86ecc28_2 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: + - pkg:pypi/brotli?source=hash-mapping + size: 356878 + timestamp: 1725267878508 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py312hde4cb15_2.conda + sha256: 254b411fa78ccc226f42daf606772972466f93e9bc6895eabb4cfda22f5178af + md5: a83c2ef76ccb11bc2349f4f17696b15d + depends: + - __osx >=11.0 + - libcxx >=17 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - libbrotlicommon 1.1.0 hd74edd7_2 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: + - pkg:pypi/brotli?source=hash-mapping + size: 339360 + timestamp: 1725268143995 +- conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda + sha256: 5ced96500d945fb286c9c838e54fa759aa04a7129c59800f0846b4335cee770d + md5: 62ee74e96c5ebb0af99386de58cf9553 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: bzip2-1.0.6 + license_family: BSD + purls: [] + size: 252783 + timestamp: 1720974456583 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h68df207_7.conda + sha256: 2258b0b33e1cb3a9852d47557984abb6e7ea58e3d7f92706ec1f8e879290c4cb + md5: 56398c28220513b9ea13d7b450acfb20 + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: bzip2-1.0.6 + license_family: BSD + purls: [] + size: 189884 + timestamp: 1720974504976 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda + sha256: adfa71f158cbd872a36394c56c3568e6034aa55c623634b37a4836bd036e6b91 + md5: fc6948412dbbbe9a4c9ddbbcfe0a79ab + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: bzip2-1.0.6 + license_family: BSD + purls: [] + size: 122909 + timestamp: 1720974522888 +- conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.4-hb9d3cd8_0.conda + sha256: d4f28d87b6339b94f74762c0076e29c8ef8ddfff51a564a92da2843573c18320 + md5: e2775acf57efd5af15b8e3d1d74d72d3 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 206085 + timestamp: 1734208189009 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/c-ares-1.34.4-h86ecc28_0.conda + sha256: 1187a41d4bb2afe02cb18690682edc98d1e9f5e0ccda638d8704a75ea1875bbe + md5: 356da36f35d36dcba16e43f1589d4e39 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 215979 + timestamp: 1734208193181 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.4-h5505292_0.conda + sha256: 09c0c8476e50b2955f474a4a1c17c4c047dd52993b5366b6ea8e968e583b921f + md5: c1c999a38a4303b29d75c636eaa13cf9 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 179496 + timestamp: 1734208291879 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2025.1.31-hbcca054_0.conda + sha256: bf832198976d559ab44d6cdb315642655547e26d826e34da67cbee6624cda189 + md5: 19f3a56f68d2fd06c516076bff482c52 + arch: x86_64 + platform: linux + license: ISC + purls: [] + size: 158144 + timestamp: 1738298224464 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2025.1.31-hcefe29a_0.conda + sha256: 66c6408ee461593cfdb2d78d82e6ed74d04a04ccb51df3ef8a5f35148c9c6eec + md5: 462cb166cd2e26a396f856510a3aff67 + arch: aarch64 + platform: linux + license: ISC + purls: [] + size: 158290 + timestamp: 1738299057652 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2025.1.31-hf0a4a13_0.conda + sha256: 7e12816618173fe70f5c638b72adf4bfd4ddabf27794369bb17871c5bb75b9f9 + md5: 3569d6a9141adc64d2fe4797f3289e06 + arch: arm64 + platform: osx + license: ISC + purls: [] + size: 158425 + timestamp: 1738298167688 +- conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.1.31-pyhd8ed1ab_0.conda + sha256: 42a78446da06a2568cb13e69be3355169fbd0ea424b00fc80b7d840f5baaacf3 + md5: c207fa5ac7ea99b149344385a9c0880d + depends: + - python >=3.9 + license: ISC + purls: + - pkg:pypi/certifi?source=compressed-mapping + size: 162721 + timestamp: 1739515973129 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py312h06ac9bb_0.conda + sha256: cba6ea83c4b0b4f5b5dc59cb19830519b28f95d7ebef7c9c5cf1c14843621457 + md5: a861504bbea4161a9170b85d4d2be840 + depends: + - __glibc >=2.17,<3.0.a0 + - libffi >=3.4,<4.0a0 + - libgcc >=13 + - pycparser + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: + - pkg:pypi/cffi?source=hash-mapping + size: 294403 + timestamp: 1725560714366 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cffi-1.17.1-py312hac81daf_0.conda + sha256: 1162e3ca039e7ca7c0e78f0a020ed1bde968096841b663e3f393c966eb82f0f0 + md5: 1a256e5581b1099e9295cb84d53db3ea + depends: + - libffi >=3.4,<4.0a0 + - libgcc >=13 + - pycparser + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: + - pkg:pypi/cffi?source=hash-mapping + size: 312892 + timestamp: 1725561779888 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.1-py312h0fad829_0.conda + sha256: 8d91a0d01358b5c3f20297c6c536c5d24ccd3e0c2ddd37f9d0593d0f0070226f + md5: 19a5456f72f505881ba493979777b24e + depends: + - __osx >=11.0 + - libffi >=3.4,<4.0a0 + - pycparser + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: + - pkg:pypi/cffi?source=hash-mapping + size: 281206 + timestamp: 1725560813378 +- conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda + sha256: 4e0ee91b97e5de3e74567bdacea27f0139709fceca4db8adffbe24deffccb09b + md5: e83a31202d1c0a000fce3e9cf3825875 + depends: + - python >=3.9 + license: MIT + license_family: MIT + purls: + - pkg:pypi/charset-normalizer?source=hash-mapping + size: 47438 + timestamp: 1735929811779 +- conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda + sha256: c920d23cd1fcf565031c679adb62d848af60d6fbb0edc2d50ba475cea4f0d8ab + md5: f22f4d4970e09d68a10b922cbb0408d3 + depends: + - __unix + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/click?source=hash-mapping + size: 84705 + timestamp: 1734858922844 +- conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + sha256: ab29d57dc70786c1269633ba3dff20288b81664d3ff8d21af995742e2bb03287 + md5: 962b9857ee8e7018c22f2776ffa0b2d7 + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/colorama?source=hash-mapping + size: 27011 + timestamp: 1733218222191 +- conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.12.9-py312hd8ed1ab_0.conda + noarch: generic + sha256: f5c7ad0bd23fa8645ac279d99bddba656ff61483dc6312af12aae13910dfb210 + md5: a5b10f166467fecec692abaee84d16aa + depends: + - python 3.12.9.* + - python_abi * *_cp312 + license: Python-2.0 + purls: [] + size: 44836 + timestamp: 1739519561557 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-cudart-12.4.127-he02047a_2.conda + sha256: d8ad0be647dad6378119c110572bbf9f6b1e8c820393ed159d45f02588979c07 + md5: a748faa52331983fc3adcc3b116fe0e4 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-cudart_linux-64 12.4.127 h85509e4_2 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 22563 + timestamp: 1715710703269 +- conda: https://conda.anaconda.org/conda-forge/noarch/cuda-cudart_linux-64-12.4.127-h85509e4_2.conda + sha256: 1f1b3e0bf6b5e665860ecbdf509c1e02760c14d25e3f3893a712f90f7f8a5abc + md5: 329163110a96514802e9e64d971edf43 + depends: + - cuda-version >=12.4,<12.5.0a0 + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 186886 + timestamp: 1715710690964 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-cupti-12.4.127-he02047a_2.conda + sha256: db9ebc57fd583711bbdd12e54d00e4153a7b414f929f77fca2f44547c02204b8 + md5: 46422ef1b1161fb180027e50c598ecd0 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 1918773 + timestamp: 1715665119069 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-libraries-12.4.1-ha770c72_1.conda + sha256: cb30e83f33c7480caa68a1e35e6ff4102d17ff0a94239ca18555afff1df2f70e + md5: 6bb3f998485d4344a7539e0b218b3fc1 + depends: + - cuda-cudart 12.4.127.* + - cuda-nvrtc 12.4.127.* + - cuda-opencl 12.4.127.* + - libcublas 12.4.5.8.* + - libcufft 11.2.1.3.* + - libcufile 1.9.1.3.* + - libcurand 10.3.5.147.* + - libcusolver 11.6.1.9.* + - libcusparse 12.3.1.170.* + - libnpp 12.2.5.30.* + - libnvfatbin 12.4.127.* + - libnvjitlink 12.4.127.* + - libnvjpeg 12.3.1.117.* + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 20180 + timestamp: 1713304266920 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-nvrtc-12.4.127-he02047a_2.conda + sha256: c4aba5e152526db7cad7c8a5191497b0c6365c912ed845dc9c427d29893486a1 + md5: 80baf6262f4a1a0dde42d85aaa393402 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 18825627 + timestamp: 1715711095870 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-nvtx-12.4.127-he02047a_2.conda + sha256: 8f499785edaec6198a934e8a9dd1f8b6f79aabcc135962d6050dd7328c76d3dc + md5: 656a004b6e44f50ce71c65cab0d429b4 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 31691 + timestamp: 1715731339952 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-opencl-12.4.127-he02047a_1.conda + sha256: 75d912a70719a9d0bca9f234a79a857815d8feec3c54c145e6e41589de4ff5be + md5: 1e98deda07c14d26c80d124cf0eb011a + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - ocl-icd >=2.3.2,<3.0a0 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 30406 + timestamp: 1715711329543 +- conda: https://conda.anaconda.org/conda-forge/noarch/cuda-runtime-12.4.1-ha804496_0.conda + sha256: 61a593347c91a9bcd18329f7aa780bd1fb1e20dd1b61b16a451bd4a6b60dabf0 + md5: 48829f4ef6005ae8d4867b99168ff2b8 + depends: + - __linux + - cuda-libraries 12.4.1.* + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 20034 + timestamp: 1712683445348 +- conda: https://conda.anaconda.org/conda-forge/noarch/cuda-version-12.4-h3060b56_3.conda + sha256: 571d32fbd0dc8df6e85c14d1757549927e272af9c70b935d7e3a553ab0b0b4da + md5: c9a3fe8b957176e1a8452c6f3431b0d8 + constrains: + - cudatoolkit 12.4|12.4.* + - __cuda >=12 + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 21022 + timestamp: 1709765922936 +- conda: https://conda.anaconda.org/conda-forge/noarch/datasets-3.3.2-pyhd8ed1ab_0.conda + sha256: 06109a3de7a977424d960b75cdb307f8d769eae87c53e33a64e706171199997a + md5: c2f904077afe3a8246c26576f555a6af + depends: + - aiohttp + - dill >=0.3.0,<0.3.9 + - filelock + - fsspec >=2023.1.0,<=2024.12.0 + - huggingface_hub >=0.24.0 + - multiprocess <0.70.17 + - numpy >=1.17 + - packaging + - pandas + - pyarrow >=15.0.0 + - python >=3.9 + - python-xxhash + - pyyaml >=5.1 + - requests >=2.32.2 + - tqdm >=4.66.3 + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/datasets?source=hash-mapping + size: 335311 + timestamp: 1740153561620 +- conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.8-pyhd8ed1ab_0.conda + sha256: 482b5b566ca559119b504c53df12b08f3962a5ef8e48061d62fd58a47f8f2ec4 + md5: 78745f157d56877a2c6e7b386f66f3e2 + depends: + - python >=3.7 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/dill?source=hash-mapping + size: 88169 + timestamp: 1706434833883 +- conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.17.0-pyhd8ed1ab_0.conda + sha256: 006d7e5a0c17a6973596dd86bfc80d74ce541144d2aee2d22d46fd41df560a63 + md5: 7f402b4a1007ee355bc50ce4d24d4a57 + depends: + - python >=3.9 + license: Unlicense + purls: + - pkg:pypi/filelock?source=hash-mapping + size: 17544 + timestamp: 1737517924333 +- conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.12.1-h267a509_2.conda + sha256: b2e3c449ec9d907dd4656cb0dc93e140f447175b125a3824b31368b06c666bb6 + md5: 9ae35c3d96db2c94ce0cef86efdfa2cb + depends: + - libgcc-ng >=12 + - libpng >=1.6.39,<1.7.0a0 + - libzlib >=1.2.13,<2.0.0a0 + arch: x86_64 + platform: linux + license: GPL-2.0-only OR FTL + purls: [] + size: 634972 + timestamp: 1694615932610 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/freetype-2.12.1-hf0a5ef3_2.conda + sha256: 7af93030f4407f076dce181062360efac2cd54dce863b5d7765287a6f5382537 + md5: a5ab74c5bd158c3d5532b66d8d83d907 + depends: + - libgcc-ng >=12 + - libpng >=1.6.39,<1.7.0a0 + - libzlib >=1.2.13,<2.0.0a0 + arch: aarch64 + platform: linux + license: GPL-2.0-only OR FTL + purls: [] + size: 642092 + timestamp: 1694617858496 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/freetype-2.12.1-hadb7bae_2.conda + sha256: 791673127e037a2dc0eebe122dc4f904cb3f6e635bb888f42cbe1a76b48748d9 + md5: e6085e516a3e304ce41a8ee08b9b89ad + depends: + - libpng >=1.6.39,<1.7.0a0 + - libzlib >=1.2.13,<2.0.0a0 + arch: arm64 + platform: osx + license: GPL-2.0-only OR FTL + purls: [] + size: 596430 + timestamp: 1694616332835 +- conda: https://conda.anaconda.org/conda-forge/linux-64/frozenlist-1.5.0-py312h178313f_1.conda + sha256: 501e20626798b6d7f130f4db0fb02c0385d8f4c11ca525925602a4208afb343f + md5: fb986e1c089021979dc79606af78ef8f + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/frozenlist?source=hash-mapping + size: 60939 + timestamp: 1737645356438 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/frozenlist-1.5.0-py312hcc812fe_1.conda + sha256: 84895c5e207e0cb2044f3607fb36b82eb8cb45f0a009d03dc04c777ed975757d + md5: 9090bf5c43e8011fb2e9a82a1db20cc3 + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/frozenlist?source=hash-mapping + size: 60472 + timestamp: 1737645511278 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/frozenlist-1.5.0-py312h998013c_1.conda + sha256: d503ac8c050abdbd129253973f23be34944978d510de78ef5a3e6aa1e3d9552d + md5: 5eb3715c7e3fa9b533361375bfefe6ee + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/frozenlist?source=hash-mapping + size: 57256 + timestamp: 1737645503377 +- conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.12.0-pyhd8ed1ab_0.conda + sha256: 3320970c4604989eadf908397a9475f9e6a96a773c185915111399cbfbe47817 + md5: e041ad4c43ab5e10c74587f95378ebc7 + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/fsspec?source=hash-mapping + size: 137756 + timestamp: 1734650349242 +- conda: https://conda.anaconda.org/conda-forge/linux-64/gflags-2.2.2-h5888daf_1005.conda + sha256: 6c33bf0c4d8f418546ba9c250db4e4221040936aef8956353bc764d4877bc39a + md5: d411fc29e338efb48c5fd4576d71d881 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 119654 + timestamp: 1726600001928 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gflags-2.2.2-h5ad3122_1005.conda + sha256: 28fe6b40b20454106d5e4ef6947cf298c13cc72a46347bbc49b563cd3a463bfa + md5: 4ff634d515abbf664774b5e1168a9744 + depends: + - libgcc >=13 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 106638 + timestamp: 1726599967617 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/gflags-2.2.2-hf9b8971_1005.conda + sha256: fd56ed8a1dab72ab90d8a8929b6f916a6d9220ca297ff077f8f04c5ed3408e20 + md5: 57a511a5905caa37540eb914dfcbf1fb + depends: + - __osx >=11.0 + - libcxx >=17 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 82090 + timestamp: 1726600145480 +- conda: https://conda.anaconda.org/conda-forge/linux-64/glog-0.7.1-hbabe93e_0.conda + sha256: dc824dc1d0aa358e28da2ecbbb9f03d932d976c8dca11214aa1dcdfcbd054ba2 + md5: ff862eebdfeb2fd048ae9dc92510baca + depends: + - gflags >=2.2.2,<2.3.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 143452 + timestamp: 1718284177264 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/glog-0.7.1-h468a4a4_0.conda + sha256: 920795d4f775a9f47e91c2223e64847f0b212b3fedc56c137c5889e32efe8ba0 + md5: 08940a32c6ced3703d1412dd37df4f62 + depends: + - gflags >=2.2.2,<2.3.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 145811 + timestamp: 1718284208668 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/glog-0.7.1-heb240a5_0.conda + sha256: 9fc77de416953aa959039db72bc41bfa4600ae3ff84acad04a7d0c1ab9552602 + md5: fef68d0a95aa5b84b5c1a4f6f3bf40e1 + depends: + - __osx >=11.0 + - gflags >=2.2.2,<2.3.0a0 + - libcxx >=16 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 112215 + timestamp: 1718284365403 +- conda: https://conda.anaconda.org/conda-forge/linux-64/gmp-6.3.0-hac33072_2.conda + sha256: 309cf4f04fec0c31b6771a5809a1909b4b3154a2208f52351e1ada006f4c750c + md5: c94a5994ef49749880a8139cf9afcbe1 + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: GPL-2.0-or-later OR LGPL-3.0-or-later + purls: [] + size: 460055 + timestamp: 1718980856608 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/gmp-6.3.0-h7bae524_2.conda + sha256: 76e222e072d61c840f64a44e0580c2503562b009090f55aa45053bf1ccb385dd + md5: eed7278dfbab727b56f2c0b64330814b + depends: + - __osx >=11.0 + - libcxx >=16 + arch: arm64 + platform: osx + license: GPL-2.0-or-later OR LGPL-3.0-or-later + purls: [] + size: 365188 + timestamp: 1718981343258 +- conda: https://conda.anaconda.org/conda-forge/linux-64/gmpy2-2.1.5-py312h7201bc8_3.conda + sha256: addd0bc226ca86c11f1223ab322d12b67501c2b3d93749bdab2068ccaedd8ef0 + md5: 673ef4d6611f5b4ca7b5c1f8c65a38dc + depends: + - __glibc >=2.17,<3.0.a0 + - gmp >=6.3.0,<7.0a0 + - libgcc >=13 + - mpc >=1.3.1,<2.0a0 + - mpfr >=4.2.1,<5.0a0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: LGPL-3.0-or-later + license_family: LGPL + purls: + - pkg:pypi/gmpy2?source=hash-mapping + size: 209631 + timestamp: 1733462668219 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/gmpy2-2.1.5-py312h524cf62_3.conda + sha256: 0ea196e4b706321951af1eebdb6a4eb9307faa1fd5361bcf49acb150e71774f7 + md5: ab7a5d10c7b4e249a9fe7bc280909803 + depends: + - __osx >=11.0 + - gmp >=6.3.0,<7.0a0 + - mpc >=1.3.1,<2.0a0 + - mpfr >=4.2.1,<5.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: LGPL-3.0-or-later + license_family: LGPL + purls: + - pkg:pypi/gmpy2?source=hash-mapping + size: 147983 + timestamp: 1733462785197 +- conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda + sha256: 0aa1cdc67a9fe75ea95b5644b734a756200d6ec9d0dff66530aec3d1c1e9df75 + md5: b4754fb1bdcb70c8fd54f918301582c6 + depends: + - hpack >=4.1,<5 + - hyperframe >=6.1,<7 + - python >=3.9 + license: MIT + license_family: MIT + purls: + - pkg:pypi/h2?source=hash-mapping + size: 53888 + timestamp: 1738578623567 +- conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda + sha256: 6ad78a180576c706aabeb5b4c8ceb97c0cb25f1e112d76495bff23e3779948ba + md5: 0a802cb9888dd14eeefc611f05c40b6e + depends: + - python >=3.9 + license: MIT + license_family: MIT + purls: + - pkg:pypi/hpack?source=hash-mapping + size: 30731 + timestamp: 1737618390337 +- conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.29.1-pyhd8ed1ab_0.conda + sha256: f75ca9436fe11d0def6e575d29e0614033c45c90f37895a3b2bb3536612b251c + md5: 0bbbf72b600a1df32666a084769bf240 + depends: + - filelock + - fsspec >=2023.5.0 + - packaging >=20.9 + - python >=3.9 + - pyyaml >=5.1 + - requests + - tqdm >=4.42.1 + - typing-extensions >=3.7.4.3 + - typing_extensions >=3.7.4.3 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/huggingface-hub?source=compressed-mapping + size: 287974 + timestamp: 1740068383431 +- conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda + sha256: 77af6f5fe8b62ca07d09ac60127a30d9069fdc3c68d6b256754d0ffb1f7779f8 + md5: 8e6923fc12f1fe8f8c4e5c9f343256ac + depends: + - python >=3.9 + license: MIT + license_family: MIT + purls: + - pkg:pypi/hyperframe?source=hash-mapping + size: 17397 + timestamp: 1737618427549 +- conda: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda + sha256: 71e750d509f5fa3421087ba88ef9a7b9be11c53174af3aa4d06aff4c18b38e8e + md5: 8b189310083baabfb622af68fd9d3ae3 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 12129203 + timestamp: 1720853576813 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda + sha256: 813298f2e54ef087dbfc9cc2e56e08ded41de65cff34c639cc8ba4e27e4540c9 + md5: 268203e8b983fddb6412b36f2024e75c + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 12282786 + timestamp: 1720853454991 +- conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda + sha256: d7a472c9fd479e2e8dcb83fb8d433fce971ea369d704ece380e876f9c3494e87 + md5: 39a4f67be3286c86d696df570b1201b7 + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/idna?source=hash-mapping + size: 49765 + timestamp: 1733211921194 +- conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + sha256: 598951ebdb23e25e4cec4bbff0ae369cec65ead80b50bc08b441d8e54de5cf03 + md5: f4b39bf00c69f56ac01e020ebfac066c + depends: + - python >=3.9 + - zipp >=0.5 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/importlib-metadata?source=compressed-mapping + size: 29141 + timestamp: 1737420302391 +- pypi: https://download.pytorch.org/whl/Jinja2-3.1.4-py3-none-any.whl#sha256=bc5dd2abb727a5319567b7a813e6a2e7318c39f4f487cfe6c89c6f9c7d25197d + name: jinja2 + version: 3.1.4 + sha256: bc5dd2abb727a5319567b7a813e6a2e7318c39f4f487cfe6c89c6f9c7d25197d + requires_dist: + - markupsafe>=2.0 + - babel>=2.7 ; extra == 'i18n' + requires_python: '>=3.7' +- conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.5-pyhd8ed1ab_0.conda + sha256: 98977694b9ecaa3218662f843425f39501f81973c450f995eec68f1803ed71c3 + md5: 2752a6ed44105bfb18c9bef1177d9dcd + depends: + - markupsafe >=2.0 + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/jinja2?source=hash-mapping + size: 112561 + timestamp: 1734824044952 +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + sha256: 19d8bd5bb2fde910ec59e081eeb59529491995ce0d653a5209366611023a0b3a + md5: 4ebae00eae9705b0c3d6d1018a81d047 + depends: + - importlib-metadata >=4.8.3 + - jupyter_core >=4.12,!=5.0.* + - python >=3.9 + - python-dateutil >=2.8.2 + - pyzmq >=23.0 + - tornado >=6.2 + - traitlets >=5.3 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/jupyter-client?source=hash-mapping + size: 106342 + timestamp: 1733441040958 +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + sha256: 732b1e8536bc22a5a174baa79842d79db2f4956d90293dd82dc1b3f6099bcccd + md5: 0a2980dada0dd7fd0998f0342308b1b1 + depends: + - __unix + - platformdirs >=2.5 + - python >=3.8 + - traitlets >=5.3 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/jupyter-core?source=hash-mapping + size: 57671 + timestamp: 1727163547058 +- conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 + sha256: 150c05a6e538610ca7c43beb3a40d65c90537497a4f6a5f4d15ec0451b6f5ebb + md5: 30186d27e2c9fa62b45fb1476b7200e3 + depends: + - libgcc-ng >=10.3.0 + arch: x86_64 + platform: linux + license: LGPL-2.1-or-later + purls: [] + size: 117831 + timestamp: 1646151697040 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/keyutils-1.6.1-h4e544f5_0.tar.bz2 + sha256: 6d4233d97a9b38acbb26e1268bcf8c10a8e79c2aed7e5a385ec3769967e3e65b + md5: 1f24853e59c68892452ef94ddd8afd4b + depends: + - libgcc-ng >=10.3.0 + arch: aarch64 + platform: linux + license: LGPL-2.1-or-later + purls: [] + size: 112327 + timestamp: 1646166857935 +- conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda + sha256: 99df692f7a8a5c27cd14b5fb1374ee55e756631b9c3d659ed3ee60830249b238 + md5: 3f43953b7d3fb3aaa1d0d0723d91e368 + depends: + - keyutils >=1.6.1,<2.0a0 + - libedit >=3.1.20191231,<3.2.0a0 + - libedit >=3.1.20191231,<4.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - openssl >=3.3.1,<4.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 1370023 + timestamp: 1719463201255 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/krb5-1.21.3-h50a48e9_0.conda + sha256: 0ec272afcf7ea7fbf007e07a3b4678384b7da4047348107b2ae02630a570a815 + md5: 29c10432a2ca1472b53f299ffb2ffa37 + depends: + - keyutils >=1.6.1,<2.0a0 + - libedit >=3.1.20191231,<3.2.0a0 + - libedit >=3.1.20191231,<4.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - openssl >=3.3.1,<4.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 1474620 + timestamp: 1719463205834 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda + sha256: 4442f957c3c77d69d9da3521268cad5d54c9033f1a73f99cde0a3658937b159b + md5: c6dc8a0fdec13a0565936655c33069a1 + depends: + - __osx >=11.0 + - libcxx >=16 + - libedit >=3.1.20191231,<3.2.0a0 + - libedit >=3.1.20191231,<4.0a0 + - openssl >=3.3.1,<4.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 1155530 + timestamp: 1719463474401 +- conda: https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.17-h717163a_0.conda + sha256: d6a61830a354da022eae93fa896d0991385a875c6bba53c82263a289deda9db8 + md5: 000e85703f0fd9594c81710dd5066471 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libtiff >=4.7.0,<4.8.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 248046 + timestamp: 1739160907615 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lcms2-2.17-hc88f144_0.conda + sha256: 47cf6a4780dc41caa9bc95f020eed485b07010c9ccc85e9ef44b538fedb5341d + md5: b87b1abd2542cf65a00ad2e2461a3083 + depends: + - libgcc >=13 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libtiff >=4.7.0,<4.8.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 287007 + timestamp: 1739161069194 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.17-h7eeda09_0.conda + sha256: 310a62c2f074ebd5aa43b3cd4b00d46385ce680fa2132ecee255a200e2d2f15f + md5: 92a61fd30b19ebd5c1621a5bfe6d8b5f + depends: + - __osx >=11.0 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libtiff >=4.7.0,<4.8.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 212125 + timestamp: 1739161108467 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_4.conda + sha256: db73f38155d901a610b2320525b9dd3b31e4949215c870685fd92ea61b5ce472 + md5: 01f8d123c96816249efd255a31ad7712 + depends: + - __glibc >=2.17,<3.0.a0 + constrains: + - binutils_impl_linux-64 2.43 + arch: x86_64 + platform: linux + license: GPL-3.0-only + license_family: GPL + purls: [] + size: 671240 + timestamp: 1740155456116 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_4.conda + sha256: 016832a70b0aa97e1c4e47e23c00b0c34def679de25146736df353199f684f0d + md5: 80c9ad5e05e91bb6c0967af3880c9742 + constrains: + - binutils_impl_linux-aarch64 2.43 + arch: aarch64 + platform: linux + license: GPL-3.0-only + license_family: GPL + purls: [] + size: 699058 + timestamp: 1740155620594 +- conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 + sha256: cb55f36dcd898203927133280ae1dc643368af041a48bcf7c026acb7c47b0c12 + md5: 76bbff344f0134279f225174e9064c8f + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 281798 + timestamp: 1657977462600 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.0.0-h4de3ea5_0.tar.bz2 + sha256: 2d09ef9b7796d83364957e420b41c32d94e628c3f0520b61c332518a7b5cd586 + md5: 1a0ffc65e03ce81559dbcb0695ad1476 + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 262096 + timestamp: 1657978241894 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 + sha256: 6f068bb53dfb6147d3147d981bb851bb5477e769407ad4e6a68edf482fdcb958 + md5: de462d5aacda3b30721b512c5da4e742 + depends: + - libcxx >=13.0.1 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 215721 + timestamp: 1657977558796 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda + sha256: 143a586aa67d50622ef703de57b9d43f44945836d6568e0e7aa174bd8c45e0d4 + md5: 488f260ccda0afaf08acb286db439c2f + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + constrains: + - libabseil-static =20240722.0=cxx17* + - abseil-cpp =20240722.0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 1311599 + timestamp: 1736008414161 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h18dbdb1_4.conda + sha256: bb6c5fb3b8de5f90735c5252b57efb3c268ee222c755569dac18065f05147670 + md5: 633b9fe454ffea2aaf29e191d946a83b + depends: + - libgcc >=13 + - libstdcxx >=13 + constrains: + - abseil-cpp =20240722.0 + - libabseil-static =20240722.0=cxx17* + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 1334844 + timestamp: 1736008472455 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_h07bc746_4.conda + sha256: 05fa5e5e908962b9c5aba95f962e2ca81d9599c4715aebe5e4ddb72b309d1770 + md5: c2d95bd7aa8d564a9bd7eca5e571a5b3 + depends: + - __osx >=11.0 + - libcxx >=18 + constrains: + - libabseil-static =20240722.0=cxx17* + - abseil-cpp =20240722.0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 1178260 + timestamp: 1736008642885 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-19.0.1-hfa2a6e7_0_cpu.conda + sha256: 7b1f61045b37266989023a007d6331875062bb658068a6e6ab49720495ca3543 + md5: 11b712ed1316c98592f6bae7ccfaa86c + depends: + - __glibc >=2.17,<3.0.a0 + - aws-crt-cpp >=0.29.9,<0.29.10.0a0 + - aws-sdk-cpp >=1.11.489,<1.11.490.0a0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - azure-identity-cpp >=1.10.0,<1.10.1.0a0 + - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 + - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 + - bzip2 >=1.0.8,<2.0a0 + - glog >=0.7.1,<0.8.0a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libbrotlidec >=1.1.0,<1.2.0a0 + - libbrotlienc >=1.1.0,<1.2.0a0 + - libgcc >=13 + - libgoogle-cloud >=2.35.0,<2.36.0a0 + - libgoogle-cloud-storage >=2.35.0,<2.36.0a0 + - libopentelemetry-cpp >=1.18.0,<1.19.0a0 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libre2-11 >=2024.7.2 + - libstdcxx >=13 + - libutf8proc >=2.10.0,<2.11.0a0 + - libzlib >=1.3.1,<2.0a0 + - lz4-c >=1.10.0,<1.11.0a0 + - orc >=2.0.3,<2.0.4.0a0 + - re2 + - snappy >=1.2.1,<1.3.0a0 + - zstd >=1.5.6,<1.6.0a0 + constrains: + - arrow-cpp <0.0a0 + - parquet-cpp <0.0a0 + - apache-arrow-proc =*=cpu + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 8967810 + timestamp: 1739768880886 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-19.0.1-h36213f4_0_cpu.conda + sha256: 3f141e56555676b4a9fd885a0a7452daa2530eb65cfbba1271f7a07457a82003 + md5: cfeb98942a3ef36c0bb2b09b084349da + depends: + - aws-crt-cpp >=0.29.9,<0.29.10.0a0 + - aws-sdk-cpp >=1.11.489,<1.11.490.0a0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - azure-identity-cpp >=1.10.0,<1.10.1.0a0 + - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 + - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 + - bzip2 >=1.0.8,<2.0a0 + - glog >=0.7.1,<0.8.0a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libbrotlidec >=1.1.0,<1.2.0a0 + - libbrotlienc >=1.1.0,<1.2.0a0 + - libgcc >=13 + - libgoogle-cloud >=2.35.0,<2.36.0a0 + - libgoogle-cloud-storage >=2.35.0,<2.36.0a0 + - libopentelemetry-cpp >=1.18.0,<1.19.0a0 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libre2-11 >=2024.7.2 + - libstdcxx >=13 + - libutf8proc >=2.10.0,<2.11.0a0 + - libzlib >=1.3.1,<2.0a0 + - lz4-c >=1.10.0,<1.11.0a0 + - orc >=2.0.3,<2.0.4.0a0 + - re2 + - snappy >=1.2.1,<1.3.0a0 + - zstd >=1.5.6,<1.6.0a0 + constrains: + - apache-arrow-proc =*=cpu + - parquet-cpp <0.0a0 + - arrow-cpp <0.0a0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 8215209 + timestamp: 1739770301694 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-19.0.1-h0945df6_0_cpu.conda + sha256: e34199bea635b1bf9f3819205b291f714ddd47db1bf6e6d10a4eb61da7330214 + md5: 21bcb04df4b1a99721199c5aa6273f53 + depends: + - __osx >=11.0 + - aws-crt-cpp >=0.29.9,<0.29.10.0a0 + - aws-sdk-cpp >=1.11.489,<1.11.490.0a0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - azure-identity-cpp >=1.10.0,<1.10.1.0a0 + - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 + - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 + - bzip2 >=1.0.8,<2.0a0 + - glog >=0.7.1,<0.8.0a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libbrotlidec >=1.1.0,<1.2.0a0 + - libbrotlienc >=1.1.0,<1.2.0a0 + - libcxx >=18 + - libgoogle-cloud >=2.35.0,<2.36.0a0 + - libgoogle-cloud-storage >=2.35.0,<2.36.0a0 + - libopentelemetry-cpp >=1.18.0,<1.19.0a0 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libre2-11 >=2024.7.2 + - libutf8proc >=2.10.0,<2.11.0a0 + - libzlib >=1.3.1,<2.0a0 + - lz4-c >=1.10.0,<1.11.0a0 + - orc >=2.0.3,<2.0.4.0a0 + - re2 + - snappy >=1.2.1,<1.3.0a0 + - zstd >=1.5.6,<1.6.0a0 + constrains: + - apache-arrow-proc =*=cpu + - arrow-cpp <0.0a0 + - parquet-cpp <0.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 5571369 + timestamp: 1739767084108 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-19.0.1-hcb10f89_0_cpu.conda + sha256: 9a3c38a8f1516fe5b7801d0407ff704efd53955ebd63f7fbc439ec3b563d19cc + md5: 0d63e2dea06c44c9d2c8be3e7e38eea9 + depends: + - __glibc >=2.17,<3.0.a0 + - libarrow 19.0.1 hfa2a6e7_0_cpu + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 638054 + timestamp: 1739768924910 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-19.0.1-h3b568fd_0_cpu.conda + sha256: 3260e26ca9e1146befeb9587ba80610f9d9591365c82f7cd8756f14a9a8e58c2 + md5: 7b270af126ffdec0153d8599370f0430 + depends: + - libarrow 19.0.1 h36213f4_0_cpu + - libgcc >=13 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 602400 + timestamp: 1739770383854 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-19.0.1-hf07054f_0_cpu.conda + sha256: b15f5fab53d941917143bb1cf22c5a0eacffb8ff2a010ee2e909afab3821d5f9 + md5: 9213d80ffba1921b86bfdf5fdd2c10c4 + depends: + - __osx >=11.0 + - libarrow 19.0.1 h0945df6_0_cpu + - libcxx >=18 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 500147 + timestamp: 1739767179329 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-19.0.1-hcb10f89_0_cpu.conda + sha256: f756208d787db50b6be68210cb9eec3644b8291a8a353bb2071ea4451bfc1412 + md5: ec52b3b990be399f4267a9acabb73070 + depends: + - __glibc >=2.17,<3.0.a0 + - libarrow 19.0.1 hfa2a6e7_0_cpu + - libarrow-acero 19.0.1 hcb10f89_0_cpu + - libgcc >=13 + - libparquet 19.0.1 h081d1f1_0_cpu + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 604500 + timestamp: 1739769034226 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-19.0.1-h3b568fd_0_cpu.conda + sha256: 76327753ed311ae1d1ef3f8f7067888e01d3c69e5198a9108052d74e2f91d03a + md5: 8a025a60dfcfa3d6cf100395f64de8ba + depends: + - libarrow 19.0.1 h36213f4_0_cpu + - libarrow-acero 19.0.1 h3b568fd_0_cpu + - libgcc >=13 + - libparquet 19.0.1 hfc78867_0_cpu + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 581121 + timestamp: 1739770488033 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-19.0.1-hf07054f_0_cpu.conda + sha256: 21fcb9a09e5872b4f1d483d8d950a1804ccb6804881881ca6fe6c5968a5e4dbc + md5: 0695382a64b393765b4bc9e1ee99250c + depends: + - __osx >=11.0 + - libarrow 19.0.1 h0945df6_0_cpu + - libarrow-acero 19.0.1 hf07054f_0_cpu + - libcxx >=18 + - libparquet 19.0.1 h636d7b7_0_cpu + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 501234 + timestamp: 1739768239766 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-19.0.1-h08228c5_0_cpu.conda + sha256: e0b3ed06ce74c6a083dab59fb3059fdbc40fc71ff94ce470ca0a7c7ffe8d0317 + md5: 792e2359bb93513324326cbe3ee4ebdd + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libarrow 19.0.1 hfa2a6e7_0_cpu + - libarrow-acero 19.0.1 hcb10f89_0_cpu + - libarrow-dataset 19.0.1 hcb10f89_0_cpu + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 523313 + timestamp: 1739769085090 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-19.0.1-h1e9d426_0_cpu.conda + sha256: c1085eb113a80691e3d76400c91b15dc8c0462d533f8c4ca4c33d5e9fe9cffef + md5: 1e34ad733a8c404ac0f652a942192636 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libarrow 19.0.1 h36213f4_0_cpu + - libarrow-acero 19.0.1 h3b568fd_0_cpu + - libarrow-dataset 19.0.1 h3b568fd_0_cpu + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 516114 + timestamp: 1739770543593 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-19.0.1-h4239455_0_cpu.conda + sha256: 0b5c0839102b396f8b0ba376189562a727ebbed3c6bdab74aaf56227ee45cb73 + md5: 2893dd55f7804b9106126c2f00712ec2 + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libarrow 19.0.1 h0945df6_0_cpu + - libarrow-acero 19.0.1 hf07054f_0_cpu + - libarrow-dataset 19.0.1 hf07054f_0_cpu + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 450361 + timestamp: 1739768396169 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-16_linux64_mkl.tar.bz2 + build_number: 16 + sha256: 24e656f13b402b6fceb88df386768445ab9beb657d451a8e5a88d4b3380cf7a4 + md5: 85f61af03fd291dae33150ffe89dc09a + depends: + - mkl >=2022.1.0,<2023.0a0 + constrains: + - liblapack 3.9.0 16_linux64_mkl + - liblapacke 3.9.0 16_linux64_mkl + - libcblas 3.9.0 16_linux64_mkl + - blas * mkl + - mkl <2025 + arch: x86_64 + platform: linux + track_features: + - blas_mkl + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 13102 + timestamp: 1660094562739 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-31_h1a9f1db_openblas.conda + build_number: 31 + sha256: 67c9c81dd0444ecc712124034d9f74186ca82fd770b3df46b1a68564461c6a1a + md5: 48bd5bf15ccf3e409840be9caafc0ad5 + depends: + - libopenblas >=0.3.29,<0.3.30.0a0 + - libopenblas >=0.3.29,<1.0a0 + constrains: + - liblapack =3.9.0=31*_openblas + - blas =2.131=openblas + - libcblas =3.9.0=31*_openblas + - mkl <2025 + - liblapacke =3.9.0=31*_openblas + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 16915 + timestamp: 1740087911042 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-19_osxarm64_openblas.conda + build_number: 19 + sha256: 51e78e3c9fa57f3fec12936b760928715ba0ab5253d02815202f9ec4c2c9255d + md5: f50b1fd98593278e18319653cff9c475 + depends: + - libopenblas >=0.3.24,<0.3.25.0a0 + - libopenblas >=0.3.24,<1.0a0 + constrains: + - libcblas 3.9.0 19_osxarm64_openblas + - liblapack 3.9.0 19_osxarm64_openblas + - blas * openblas + - liblapacke 3.9.0 19_osxarm64_openblas + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 14817 + timestamp: 1697484577887 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hb9d3cd8_2.conda + sha256: d9db2de60ea917298e658143354a530e9ca5f9c63471c65cf47ab39fd2f429e3 + md5: 41b599ed2b02abcfdd84302bff174b23 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 68851 + timestamp: 1725267660471 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlicommon-1.1.0-h86ecc28_2.conda + sha256: 64112af913974b309d67fd342e065fd184347043a6387933b3db796778a28019 + md5: 3ee026955c688f551a9999840cff4c67 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 68982 + timestamp: 1725267774142 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.1.0-hd74edd7_2.conda + sha256: 839dacb741bdbb25e58f42088a2001b649f4f12195aeb700b5ddfca3267749e5 + md5: d0bf1dff146b799b319ea0434b93f779 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 68426 + timestamp: 1725267943211 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hb9d3cd8_2.conda + sha256: 2892d512cad096cb03f1b66361deeab58b64e15ba525d6592bb6d609e7045edf + md5: 9566f0bd264fbd463002e759b8a82401 + depends: + - __glibc >=2.17,<3.0.a0 + - libbrotlicommon 1.1.0 hb9d3cd8_2 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 32696 + timestamp: 1725267669305 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlidec-1.1.0-h86ecc28_2.conda + sha256: 94c808d9ca3eb6ef30976a9843e27f027cf3a1e84e8c6835cbb696b7bdb35c4c + md5: e64d0f3b59c7c4047446b97a8624a72d + depends: + - libbrotlicommon 1.1.0 h86ecc28_2 + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 31708 + timestamp: 1725267783442 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.1.0-hd74edd7_2.conda + sha256: 6c6862eb274f21a7c0b60e5345467a12e6dda8b9af4438c66d496a2c1a538264 + md5: 55e66e68ce55523a6811633dd1ac74e2 + depends: + - __osx >=11.0 + - libbrotlicommon 1.1.0 hd74edd7_2 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 28378 + timestamp: 1725267980316 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.1.0-hb9d3cd8_2.conda + sha256: 779f58174e99de3600e939fa46eddb453ec5d3c60bb46cdaa8b4c127224dbf29 + md5: 06f70867945ea6a84d35836af780f1de + depends: + - __glibc >=2.17,<3.0.a0 + - libbrotlicommon 1.1.0 hb9d3cd8_2 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 281750 + timestamp: 1725267679782 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlienc-1.1.0-h86ecc28_2.conda + sha256: 41385e17bc73834b235c5aff12d6d82eccb534acb3c30986996f9dad92a0d54c + md5: 0e9bd365480c72b25c71a448257b537d + depends: + - libbrotlicommon 1.1.0 h86ecc28_2 + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 290230 + timestamp: 1725267792697 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlienc-1.1.0-hd74edd7_2.conda + sha256: eeb1eb0d58b9d02bc1b98dc0a058f104ab168eb2f7d1c7bfa0570a12cfcdb7b7 + md5: 4f3a434504c67b2c42565c0b85c1885c + depends: + - __osx >=11.0 + - libbrotlicommon 1.1.0 hd74edd7_2 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 279644 + timestamp: 1725268003553 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-16_linux64_mkl.tar.bz2 + build_number: 16 + sha256: 892ba10508f22310ccfe748df1fd3b6c7f20e7b6f6b79e69ed337863551c1bd8 + md5: 361bf757b95488de76c4f123805742d3 + depends: + - libblas 3.9.0 16_linux64_mkl + constrains: + - liblapack 3.9.0 16_linux64_mkl + - liblapacke 3.9.0 16_linux64_mkl + - blas * mkl + - mkl <2025 + arch: x86_64 + platform: linux + track_features: + - blas_mkl + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 12791 + timestamp: 1660094570921 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-31_hab92f65_openblas.conda + build_number: 31 + sha256: f0457a1d2982f0a28bfbadaa02621677c324e88f7c8198c24fb3e3214c468dba + md5: 6b81dbae56a519f1ec2f25e0ee2f4334 + depends: + - libblas 3.9.0 31_h1a9f1db_openblas + constrains: + - liblapack =3.9.0=31*_openblas + - blas =2.131=openblas + - liblapacke =3.9.0=31*_openblas + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 16824 + timestamp: 1740087917500 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-19_osxarm64_openblas.conda + build_number: 19 + sha256: 19b1c5e3ddd383ec14540336f4704938218d3c1db4707ae10d5357afb22cccc1 + md5: 5460a8d1beffd7f63994d891e6a20da4 + depends: + - libblas 3.9.0 19_osxarm64_openblas + constrains: + - liblapack 3.9.0 19_osxarm64_openblas + - blas * openblas + - liblapacke 3.9.0 19_osxarm64_openblas + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 14738 + timestamp: 1697484590682 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcrc32c-1.1.2-h9c3ff4c_0.tar.bz2 + sha256: fd1d153962764433fe6233f34a72cdeed5dcf8a883a85769e8295ce940b5b0c5 + md5: c965a5aa0d5c1c37ffc62dff36e28400 + depends: + - libgcc-ng >=9.4.0 + - libstdcxx-ng >=9.4.0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 20440 + timestamp: 1633683576494 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcrc32c-1.1.2-h01db608_0.tar.bz2 + sha256: b8b8c57a87da86b3ea24280fd6aa8efaf92f4e684b606bf2db5d3cb06ffbe2ea + md5: 268ee639c17ada0002fb04dd21816cc2 + depends: + - libgcc-ng >=9.4.0 + - libstdcxx-ng >=9.4.0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 18669 + timestamp: 1633683724891 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcrc32c-1.1.2-hbdafb3b_0.tar.bz2 + sha256: 58477b67cc719060b5b069ba57161e20ba69b8695d154a719cb4b60caf577929 + md5: 32bd82a6a625ea6ce090a81c3d34edeb + depends: + - libcxx >=11.1.0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 18765 + timestamp: 1633683992603 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcublas-12.4.5.8-he02047a_2.conda + sha256: 168e664423e875f7107697dfa7935399675872ea8abffa92621db98007258d66 + md5: d446adae085aa1ff37c44b69988a6f06 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-nvrtc + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 240665617 + timestamp: 1715711552741 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcufft-11.2.1.3-he02047a_2.conda + sha256: 242e1ed210a85fc0dc2a4e86bf0b75120f1768ab66497502c5e6d69e801bf9dc + md5: d2641a67c207946ef96f1328c4a8e8ed + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 174980358 + timestamp: 1715711515585 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcufile-1.9.1.3-he02047a_2.conda + sha256: 7fa7a608d52064b724241e4026f0e0cc244c6f725623e2c26c810be99822fa28 + md5: a051267bcb1912467c81d802a7d3465e + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 924329 + timestamp: 1715720836466 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcurand-10.3.5.147-he02047a_2.conda + sha256: 7db821fc8f566dbb8d4e40dae62edb07d638db8c028d677a0063ece66872d19c + md5: 9c4886d513fd477df88d411cd274c202 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 41590169 + timestamp: 1715711553620 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.12.1-h332b0f4_0.conda + sha256: 2ebc3039af29269e4cdb858fca36265e5e400c1125a4bcd84ae73a596e0e76ca + md5: 45e9dc4e7b25e2841deb392be085500e + depends: + - __glibc >=2.17,<3.0.a0 + - krb5 >=1.21.3,<1.22.0a0 + - libgcc >=13 + - libnghttp2 >=1.64.0,<2.0a0 + - libssh2 >=1.11.1,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.1,<4.0a0 + - zstd >=1.5.6,<1.6.0a0 + arch: x86_64 + platform: linux + license: curl + license_family: MIT + purls: [] + size: 426675 + timestamp: 1739512336799 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcurl-8.12.1-h6702fde_0.conda + sha256: a00458a5163b9552897cdac08b273deb1b3add09e05599dfbacf0606c3b1f41f + md5: 14c340cb70867cf7953d2632f89270b5 + depends: + - krb5 >=1.21.3,<1.22.0a0 + - libgcc >=13 + - libnghttp2 >=1.64.0,<2.0a0 + - libssh2 >=1.11.1,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.1,<4.0a0 + - zstd >=1.5.6,<1.6.0a0 + arch: aarch64 + platform: linux + license: curl + license_family: MIT + purls: [] + size: 444118 + timestamp: 1739512317570 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.12.1-h73640d1_0.conda + sha256: 0bddd1791eb0602c8c6aa465802e9d4526d3ec1251d900b209e767753565d5df + md5: 105f0cceef753644912f42e11c1ae9cf + depends: + - __osx >=11.0 + - krb5 >=1.21.3,<1.22.0a0 + - libnghttp2 >=1.64.0,<2.0a0 + - libssh2 >=1.11.1,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.1,<4.0a0 + - zstd >=1.5.6,<1.6.0a0 + arch: arm64 + platform: osx + license: curl + license_family: MIT + purls: [] + size: 387893 + timestamp: 1739512564746 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcusolver-11.6.1.9-he02047a_2.conda + sha256: df4f8a94bffb59dc3da28fb5a892c1ef2553f8afd49f141d3e2da8c92f276a56 + md5: 9f6877f8936be962f598db5e9b8efc51 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libcublas >=12.4.5.8,<12.5.0a0 + - libcusparse >=12.3.1.170,<12.4.0a0 + - libgcc-ng >=12 + - libnvjitlink >=12.4.127,<12.5.0a0 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 81594879 + timestamp: 1715711788074 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcusparse-12.3.1.170-he02047a_2.conda + sha256: f2254e41c93a8c3529690c19350556708182ef699ca658c6554eeb7eb4b8c3de + md5: 1c4c7ff54dc5b947f2ab8f5ff8a28dae + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libnvjitlink >=12.4.127,<12.5.0a0 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 117818451 + timestamp: 1715711610677 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda + sha256: 776092346da87a2a23502e14d91eb0c32699c4a1522b7331537bd1c3751dcff5 + md5: 5b3e1610ff8bd5443476b91d618f5b77 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + purls: [] + size: 523505 + timestamp: 1736877862502 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.23-h4ddbbb0_0.conda + sha256: 511d801626d02f4247a04fff957cc6e9ec4cc7e8622bd9acd076bcdc5de5fe66 + md5: 8dfae1d2e74767e9ce36d5fa0d8605db + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 72255 + timestamp: 1734373823254 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libdeflate-1.23-h5e3c512_0.conda + sha256: 959419d87cd2b789a9055db95704c614f31aeb70bef7949fa2f734122a3a2863 + md5: 7e7ca2607b11b180120cefc2354fc0cb + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 69862 + timestamp: 1734373858306 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.23-hec38601_0.conda + sha256: 887c02deaed6d583459eba6367023e36d8761085b2f7126e389424f57155da53 + md5: 1d8b9588be14e71df38c525767a1ac30 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 54132 + timestamp: 1734373971372 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda + sha256: d789471216e7aba3c184cd054ed61ce3f6dac6f87a50ec69291b9297f8c18724 + md5: c277e0a4d549b03ac1e9d6cbbe3d017b + depends: + - ncurses + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - ncurses >=6.5,<7.0a0 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 134676 + timestamp: 1738479519902 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20250104-pl5321h976ea20_0.conda + sha256: c0b27546aa3a23d47919226b3a1635fccdb4f24b94e72e206a751b33f46fd8d6 + md5: fb640d776fc92b682a14e001980825b1 + depends: + - ncurses + - libgcc >=13 + - ncurses >=6.5,<7.0a0 + arch: aarch64 + platform: linux + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 148125 + timestamp: 1738479808948 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda + sha256: 66aa216a403de0bb0c1340a88d1a06adaff66bae2cfd196731aa24db9859d631 + md5: 44083d2d2c2025afca315c7a172eab2b + depends: + - ncurses + - __osx >=11.0 + - ncurses >=6.5,<7.0a0 + arch: arm64 + platform: osx + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 107691 + timestamp: 1738479560845 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda + sha256: 1cd6048169fa0395af74ed5d8f1716e22c19a81a8a36f934c110ca3ad4dd27b4 + md5: 172bf1cd1ff8629f2b1179945ed45055 + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 112766 + timestamp: 1702146165126 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libev-4.33-h31becfc_2.conda + sha256: 973af77e297f1955dd1f69c2cbdc5ab9dfc88388a5576cd152cda178af0fd006 + md5: a9a13cb143bbaa477b1ebaefbe47a302 + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 115123 + timestamp: 1702146237623 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libev-4.33-h93a5062_2.conda + sha256: 95cecb3902fbe0399c3a7e67a5bed1db813e5ab0e22f4023a5e0f722f2cc214f + md5: 36d33e440c31857372a72137f78bacf5 + arch: arm64 + platform: osx + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 107458 + timestamp: 1702146414478 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libevent-2.1.12-hf998b51_1.conda + sha256: 2e14399d81fb348e9d231a82ca4d816bf855206923759b69ad006ba482764131 + md5: a1cfcc585f0c42bf8d5546bb1dfb668d + depends: + - libgcc-ng >=12 + - openssl >=3.1.1,<4.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 427426 + timestamp: 1685725977222 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libevent-2.1.12-h4ba1bb4_1.conda + sha256: 01333cc7d6e6985dd5700b43660d90e9e58049182017fd24862088ecbe1458e4 + md5: 96ae6083cd1ac9f6bc81631ac835b317 + depends: + - libgcc-ng >=12 + - openssl >=3.1.1,<4.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 438992 + timestamp: 1685726046519 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libevent-2.1.12-h2757513_1.conda + sha256: 8c136d7586259bb5c0d2b913aaadc5b9737787ae4f40e3ad1beaf96c80b919b7 + md5: 1a109764bff3bdc7bdd84088347d71dc + depends: + - openssl >=3.1.1,<4.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 368167 + timestamp: 1685726248899 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda + sha256: 56541b98447b58e52d824bd59d6382d609e11de1f8adf20b23143e353d2b8d26 + md5: db833e03127376d461e1e13e76f09b6c + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + constrains: + - expat 2.6.4.* + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 73304 + timestamp: 1730967041968 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.6.4-h5ad3122_0.conda + sha256: f42e758009ba9db90d1fe7992bc3e60d0c52f71fb20923375d2c44ae69a5a2b3 + md5: f1b3fab36861b3ce945a13f0dfdfc688 + depends: + - libgcc >=13 + constrains: + - expat 2.6.4.* + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 72345 + timestamp: 1730967203789 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.4-h286801f_0.conda + sha256: e42ab5ace927ee7c84e3f0f7d813671e1cf3529f5f06ee5899606630498c2745 + md5: 38d2656dd914feb0cab8c629370768bf + depends: + - __osx >=11.0 + constrains: + - expat 2.6.4.* + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 64693 + timestamp: 1730967175868 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_0.conda + sha256: 67a6c95e33ebc763c1adc3455b9a9ecde901850eb2fceb8e646cc05ef3a663da + md5: e3eb7806380bc8bcecba6d749ad5f026 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 53415 + timestamp: 1739260413716 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.4.6-he21f813_0.conda + sha256: 41568066beefe7b319ff27d85952242e5b77fb753d705b8716041959e17c35c2 + md5: 966084fccf3ad62a3160666cda869f28 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 51513 + timestamp: 1739260449772 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 + sha256: 41b3d13efb775e340e4dba549ab5c029611ea6918703096b2eaa9c015c0750ca + md5: 086914b672be056eb70fd4285b6783b6 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 39020 + timestamp: 1636488587153 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h767d61c_2.conda + sha256: 3a572d031cb86deb541d15c1875aaa097baefc0c580b54dc61f5edab99215792 + md5: ef504d1acbd74b7cc6849ef8af47dd03 + depends: + - __glibc >=2.17,<3.0.a0 + - _openmp_mutex >=4.5 + constrains: + - libgomp 14.2.0 h767d61c_2 + - libgcc-ng ==14.2.0=*_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 847885 + timestamp: 1740240653082 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-14.2.0-he277a41_2.conda + sha256: a57f7f9ba2a12f56eafdcd25b6d75f7be10b8fc1a802a58b76a77ca8c66f4503 + md5: 6b4268a60b10f29257b51b9b67ff8d76 + depends: + - _openmp_mutex >=4.5 + constrains: + - libgcc-ng ==14.2.0=*_2 + - libgomp 14.2.0 he277a41_2 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 535507 + timestamp: 1740241069780 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_2.conda + sha256: fb7558c328b38b2f9d2e412c48da7890e7721ba018d733ebdfea57280df01904 + md5: a2222a6ada71fb478682efe483ce0f92 + depends: + - libgcc 14.2.0 h767d61c_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 53758 + timestamp: 1740240660904 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-14.2.0-he9431aa_2.conda + sha256: 9647f75cddc18b07eebe6e1f21500eed50a6af2c43c84e831b4c7a597e10d226 + md5: 692c2bb75f32cfafb6799cf6d1c5d0e0 + depends: + - libgcc 14.2.0 he277a41_2 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 53622 + timestamp: 1740241074834 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_2.conda + sha256: e05263e8960da03c341650f2a3ffa4ccae4e111cb198e8933a2908125459e5a6 + md5: fb54c4ea68b460c278d26eea89cfbcc3 + depends: + - libgfortran5 14.2.0 hf1ad2bd_2 + constrains: + - libgfortran-ng ==14.2.0=*_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 53733 + timestamp: 1740240690977 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_2.conda + sha256: 996d3c0505301901a7ab23b5e7daad21635d1c065240bb0f4faf7e4f75d7f49d + md5: d8b9d9dc0c8cd97d375b48e55947ba70 + depends: + - libgfortran5 14.2.0 hb6113d0_2 + constrains: + - libgfortran-ng ==14.2.0=*_2 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 53611 + timestamp: 1740241100147 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda + sha256: 44e541b4821c96b28b27fef5630883a60ce4fee91fd9c79f25a199f8f73f337b + md5: 4a55d9e169114b2b90d3ec4604cd7bbf + depends: + - libgfortran5 13.2.0 hf226fd6_3 + arch: arm64 + platform: osx + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 110233 + timestamp: 1707330749033 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-ng-14.2.0-h69a702a_2.conda + sha256: 688a5968852e677d2a64974c8869ffb120eac21997ced7d15c599f152ef6857e + md5: 4056c857af1a99ee50589a941059ec55 + depends: + - libgfortran 14.2.0 h69a702a_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 53781 + timestamp: 1740240884760 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hf1ad2bd_2.conda + sha256: c17b7cf3073a1f4e1f34d50872934fa326346e104d3c445abc1e62481ad6085c + md5: 556a4fdfac7287d349b8f09aba899693 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14.2.0 + constrains: + - libgfortran 14.2.0 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 1461978 + timestamp: 1740240671964 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_2.conda + sha256: 7b9e1d3666a00e5a52e5d43c003bd1c73ab472804be513c070aaedca9c4c2a9a + md5: cd754566661513808ef2408c4ab99a2f + depends: + - libgcc >=14.2.0 + constrains: + - libgfortran 14.2.0 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 1100765 + timestamp: 1740241083241 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda + sha256: bafc679eedb468a86aa4636061c55966186399ee0a04b605920d208d97ac579a + md5: 66ac81d54e95c534ae488726c1f698ea + depends: + - llvm-openmp >=8.0.0 + constrains: + - libgfortran 5.0.0 13_2_0_*_3 + arch: arm64 + platform: osx + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 997381 + timestamp: 1707330687590 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_2.conda + sha256: 4e303711fb7413bf98995beac58e731073099d7a669a3b81e49330ca8da05174 + md5: b11c09d9463daf4cae492d29806b1889 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 462783 + timestamp: 1740241005079 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.35.0-h2b5623c_0.conda + sha256: d747d14c69da512d8993a995dc2df90e857778b0a8542f12fb751544128af685 + md5: 1040ab07d7af9f23cf2466ffe4e58db1 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcurl >=8.11.1,<9.0a0 + - libgcc >=13 + - libgrpc >=1.67.1,<1.68.0a0 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + - openssl >=3.4.0,<4.0a0 + constrains: + - libgoogle-cloud 2.35.0 *_0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 1258035 + timestamp: 1738662406183 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-2.35.0-hccf9d24_0.conda + sha256: b5d323807ea699e76d9ebb829e48100446663978a1aac9adf538249864f73f97 + md5: f22720e07abb547ebce78a3aa7b97d69 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcurl >=8.11.1,<9.0a0 + - libgcc >=13 + - libgrpc >=1.67.1,<1.68.0a0 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + - openssl >=3.4.0,<4.0a0 + constrains: + - libgoogle-cloud 2.35.0 *_0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 1258015 + timestamp: 1738662706891 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-2.35.0-hdbe95d5_0.conda + sha256: 9bee9773540956d8a2ca0b317f73d94916200a4bfd8151319bf7fdcbf704d692 + md5: b1ea94282f38b142f8bc842ef7bcc18c + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcurl >=8.11.1,<9.0a0 + - libcxx >=18 + - libgrpc >=1.67.1,<1.68.0a0 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - openssl >=3.4.0,<4.0a0 + constrains: + - libgoogle-cloud 2.35.0 *_0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 877733 + timestamp: 1738662822079 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.35.0-h0121fbd_0.conda + sha256: cb1ef70e55d2c1defbfd8413dbe85b5550782470dda4f8d393f28d41b6d9b007 + md5: 34e2243e0428aac6b3e903ef99b6d57d + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil + - libcrc32c >=1.1.2,<1.2.0a0 + - libcurl + - libgcc >=13 + - libgoogle-cloud 2.35.0 h2b5623c_0 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 785777 + timestamp: 1738662565066 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-storage-2.35.0-hb9b2b65_0.conda + sha256: cf316f07d5dcc3b6669bf6d93203d435133c99d075a9f92dfa28eff1bd4def74 + md5: ae6ab5b7af1409d0eafd2b77c5d5528a + depends: + - libabseil + - libcrc32c >=1.1.2,<1.2.0a0 + - libcurl + - libgcc >=13 + - libgoogle-cloud 2.35.0 hccf9d24_0 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 739471 + timestamp: 1738662862568 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-storage-2.35.0-h7081f7f_0.conda + sha256: 52dc2d18264543b564b59fb80338fbd9cb2296f011d75f41adcd85041795201c + md5: 958beca4e16f59360e30c48ff0351e04 + depends: + - __osx >=11.0 + - libabseil + - libcrc32c >=1.1.2,<1.2.0a0 + - libcurl + - libcxx >=18 + - libgoogle-cloud 2.35.0 hdbe95d5_0 + - libzlib >=1.3.1,<2.0a0 + - openssl + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 529210 + timestamp: 1738664024959 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.67.1-h25350d4_1.conda + sha256: 014627485b3cf0ea18e04c0bab07be7fb98722a3aeeb58477acc7e1c3d2f911e + md5: 0c6497a760b99a926c7c12b74951a39c + depends: + - __glibc >=2.17,<3.0.a0 + - c-ares >=1.34.4,<2.0a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libre2-11 >=2024.7.2 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + - re2 + constrains: + - grpc-cpp =1.67.1 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 7792251 + timestamp: 1735584856826 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgrpc-1.67.1-hf7ccdd3_1.conda + sha256: 3fa173dc1d7456aac2b26937daae86a08432a31640e3d6569c62edc661fc9bbe + md5: 8fb41a425bebaeb3d0fa568503612e64 + depends: + - c-ares >=1.34.4,<2.0a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libre2-11 >=2024.7.2 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + - re2 + constrains: + - grpc-cpp =1.67.1 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 7430006 + timestamp: 1735585769731 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgrpc-1.67.1-h0a426d6_1.conda + sha256: 630edf63981818ff590367cb95fddbed0f5a390464d0952c90ec81de899e84a6 + md5: 8a3cba079d6ac985e7d73c76a678fbb4 + depends: + - __osx >=11.0 + - c-ares >=1.34.4,<2.0a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libre2-11 >=2024.7.2 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + - re2 + constrains: + - grpc-cpp =1.67.1 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 5311706 + timestamp: 1735585137716 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libhwloc-2.11.2-default_h0d58e46_1001.conda + sha256: d14c016482e1409ae1c50109a9ff933460a50940d2682e745ab1c172b5282a69 + md5: 804ca9e91bcaea0824a341d55b1684f2 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + - libxml2 >=2.13.4,<3.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 2423200 + timestamp: 1731374922090 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h4ce23a2_1.conda + sha256: 18a4afe14f731bfb9cf388659994263904d20111e42f841e9eea1bb6f91f4ab4 + md5: e796ff8ddc598affdf7c173d6145f087 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: LGPL-2.1-only + purls: [] + size: 713084 + timestamp: 1740128065462 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libiconv-1.18-hc99b53d_1.conda + sha256: 3db14977036fe1f511a6dbecacbeff3fdb58482c5c0cf87a2ea3232f5a540836 + md5: 81541d85a45fbf4d0a29346176f1f21c + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: LGPL-2.1-only + purls: [] + size: 718600 + timestamp: 1740130562607 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.18-hfe07756_1.conda + sha256: d30780d24bf3a30b4f116fca74dedb4199b34d500fe6c52cced5f8cc1e926f03 + md5: 450e6bdc0c7d986acf7b8443dce87111 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: LGPL-2.1-only + purls: [] + size: 681804 + timestamp: 1740128227484 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda + sha256: b954e09b7e49c2f2433d6f3bb73868eda5e378278b0f8c1dd10a7ef090e14f2f + md5: ea25936bb4080d843790b586850f82b8 + depends: + - libgcc-ng >=12 + constrains: + - jpeg <0.0.0a + arch: x86_64 + platform: linux + license: IJG AND BSD-3-Clause AND Zlib + purls: [] + size: 618575 + timestamp: 1694474974816 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libjpeg-turbo-3.0.0-h31becfc_1.conda + sha256: 675bc1f2a8581cd34a86c412663ec29c5f90c1d9f8d11866aa1ade5cdbdf8429 + md5: ed24e702928be089d9ba3f05618515c6 + depends: + - libgcc-ng >=12 + constrains: + - jpeg <0.0.0a + arch: aarch64 + platform: linux + license: IJG AND BSD-3-Clause AND Zlib + purls: [] + size: 647126 + timestamp: 1694475003570 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.0.0-hb547adb_1.conda + sha256: a42054eaa38e84fc1e5ab443facac4bbc9d1b6b6f23f54b7bf4f1eb687e1d993 + md5: 3ff1e053dc3a2b8e36b9bfa4256a58d1 + constrains: + - jpeg <0.0.0a + arch: arm64 + platform: osx + license: IJG AND BSD-3-Clause AND Zlib + purls: [] + size: 547541 + timestamp: 1694475104253 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-16_linux64_mkl.tar.bz2 + build_number: 16 + sha256: d6201f860b2d76ed59027e69c2bbad6d1cb211a215ec9705cc487cde488fa1fa + md5: a2f166748917d6d6e4707841ca1f519e + depends: + - libblas 3.9.0 16_linux64_mkl + constrains: + - blas * mkl + - liblapacke 3.9.0 16_linux64_mkl + - libcblas 3.9.0 16_linux64_mkl + - mkl <2025 + arch: x86_64 + platform: linux + track_features: + - blas_mkl + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 12791 + timestamp: 1660094578903 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-31_h411afd4_openblas.conda + build_number: 31 + sha256: 27613828ff6fb258b2e58802617df549f00089660ea8ab6c55c68f042c570162 + md5: 41dbff5eb805a75c120a7b7a1c744dc2 + depends: + - libblas 3.9.0 31_h1a9f1db_openblas + constrains: + - blas =2.131=openblas + - libcblas =3.9.0=31*_openblas + - liblapacke =3.9.0=31*_openblas + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 16845 + timestamp: 1740087923843 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-19_osxarm64_openblas.conda + build_number: 19 + sha256: f19cff537403c9feed98c7e18259022102b087f2b72a757e8a417476b9cf30c1 + md5: 3638eacb084c374f41f9efa40d20a47b + depends: + - libblas 3.9.0 19_osxarm64_openblas + constrains: + - libcblas 3.9.0 19_osxarm64_openblas + - blas * openblas + - liblapacke 3.9.0 19_osxarm64_openblas + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 14721 + timestamp: 1697484603691 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblapacke-3.9.0-16_linux64_mkl.tar.bz2 + build_number: 16 + sha256: 935036dc46c483cba8288c6de58d461ab3f42915715ffe9485105ad1dd203a0e + md5: 44ccc4d4dca6a8d57fa17442bc64b5a1 + depends: + - libblas 3.9.0 16_linux64_mkl + - libcblas 3.9.0 16_linux64_mkl + - liblapack 3.9.0 16_linux64_mkl + constrains: + - blas * mkl + - mkl <2025 + arch: x86_64 + platform: linux + track_features: + - blas_mkl + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 12793 + timestamp: 1660094586875 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda + sha256: cad52e10319ca4585bc37f0bc7cce99ec7c15dc9168e42ccb96b741b0a27db3f + md5: 42d5b6a0f30d3c10cd88cb8584fda1cb + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: 0BSD + purls: [] + size: 111357 + timestamp: 1738525339684 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.4-h86ecc28_0.conda + sha256: 96413664f0fade54a4931940d18749cfc8e6308349dbb0cb83adb2394ca1f730 + md5: b88244e0a115cc34f7fbca9b11248e76 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: 0BSD + purls: [] + size: 124197 + timestamp: 1738528201520 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.4-h39f12f2_0.conda + sha256: 560c59d3834cc652a84fb45531bd335ad06e271b34ebc216e380a89798fe8e2c + md5: e3fd1f8320a100f2b210e690a57cd615 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: 0BSD + purls: [] + size: 98945 + timestamp: 1738525462560 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda + sha256: b0f2b3695b13a989f75d8fd7f4778e1c7aabe3b36db83f0fe80b2cd812c0e975 + md5: 19e57602824042dfd0446292ef90488b + depends: + - __glibc >=2.17,<3.0.a0 + - c-ares >=1.32.3,<2.0a0 + - libev >=4.33,<4.34.0a0 + - libev >=4.33,<5.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.3.2,<4.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 647599 + timestamp: 1729571887612 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnghttp2-1.64.0-hc8609a4_0.conda + sha256: c093c6d370aadbf0409c20b6c54c488ee2f6fea976181919fcc63e87ee232673 + md5: f52c614fa214a8bedece9421c771670d + depends: + - c-ares >=1.32.3,<2.0a0 + - libev >=4.33,<4.34.0a0 + - libev >=4.33,<5.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.3.2,<4.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 714610 + timestamp: 1729571912479 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.64.0-h6d7220d_0.conda + sha256: 00cc685824f39f51be5233b54e19f45abd60de5d8847f1a56906f8936648b72f + md5: 3408c02539cee5f1141f9f11450b6a51 + depends: + - __osx >=11.0 + - c-ares >=1.34.2,<2.0a0 + - libcxx >=17 + - libev >=4.33,<4.34.0a0 + - libev >=4.33,<5.0a0 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.3.2,<4.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 566719 + timestamp: 1729572385640 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnpp-12.2.5.30-he02047a_2.conda + sha256: d8c97716825955c48681f4a3cde2f0cbbacc77c91b4cd944d4906f63385487df + md5: a96a1edd18bee676cf2dcca251d3d6a4 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 99461229 + timestamp: 1715711634268 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda + sha256: 26d77a3bb4dceeedc2a41bd688564fe71bf2d149fdcf117049970bc02ff1add6 + md5: 30fd6e37fe21f86f4bd26d6ee73eeec7 + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: LGPL-2.1-only + license_family: GPL + purls: [] + size: 33408 + timestamp: 1697359010159 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda + sha256: fd18c2b75d7411096428d36a70b36b1a17e31f7b8956b6905d145792d49e97f8 + md5: c14f32510f694e3185704d89967ec422 + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: LGPL-2.1-only + license_family: GPL + purls: [] + size: 34501 + timestamp: 1697358973269 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnvfatbin-12.4.127-he02047a_2.conda + sha256: d40f37532f86cbbe63439489be0e88561819190392cc519c69365b3fc47a2c5b + md5: d746b76642b4ac6e40f1219405672beb + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 792025 + timestamp: 1715711761341 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnvjitlink-12.4.127-he02047a_2.conda + sha256: 31382c8ef388a51bd2c283a239e037b8b30f9c7ecf6ec9744824445b59db39b6 + md5: 303845d6c48bf4185dc4138634650468 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 16571958 + timestamp: 1715711715842 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnvjpeg-12.3.1.117-he02047a_2.conda + sha256: 49a182f8da4ba30fbfee9692976d9da349371175c9c9576768d4754a51fef326 + md5: 8f3ed0e41a4b505de40b4f96f4bfb0fa + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 2491500 + timestamp: 1715711780068 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.29-pthreads_h9d3fd7e_0.conda + sha256: 3a2ccf4c9098cd18a636e9b7fff947fdeb4962bcfb75c9d6fd80b8c50caf6a3c + md5: a99e2bfcb1ad6362544c71281eb617e9 + depends: + - libgcc >=14 + - libgfortran + - libgfortran5 >=14.2.0 + constrains: + - openblas >=0.3.29,<0.3.30.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 4801657 + timestamp: 1739825308974 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.24-openmp_hd76b1f2_0.conda + sha256: 21edfdf620ac5c93571aab452199b6b4622c445441dad88ab4d2eb326a7b91b3 + md5: aacb05989f358affe1bafd4ea7294db4 + depends: + - libgfortran 5.* + - libgfortran5 >=12.3.0 + - llvm-openmp >=15.0.7 + constrains: + - openblas >=0.3.24,<0.3.25.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 2849225 + timestamp: 1693784744674 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-1.18.0-hfcad708_1.conda + sha256: 4ea235e08676f16b0d3c3380befe1478c0fa0141512ee709b011005c55c9619f + md5: 1f5a5d66e77a39dc5bd639ec953705cf + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcurl >=8.11.1,<9.0a0 + - libgrpc >=1.67.1,<1.68.0a0 + - libopentelemetry-cpp-headers 1.18.0 ha770c72_1 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libzlib >=1.3.1,<2.0a0 + - nlohmann_json + - prometheus-cpp >=1.3.0,<1.4.0a0 + constrains: + - cpp-opentelemetry-sdk =1.18.0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 801927 + timestamp: 1735643375271 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopentelemetry-cpp-1.18.0-h60b47f9_1.conda + sha256: 160c493cd0f897955b0b6035b51c6d7255ffbaed3c8a12d43e8e8a719d405aba + md5: afe3c8c53f4b6d27d553c230d4b34038 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcurl >=8.11.1,<9.0a0 + - libgrpc >=1.67.1,<1.68.0a0 + - libopentelemetry-cpp-headers 1.18.0 h8af1aa0_1 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libzlib >=1.3.1,<2.0a0 + - nlohmann_json + - prometheus-cpp >=1.3.0,<1.4.0a0 + constrains: + - cpp-opentelemetry-sdk =1.18.0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 800896 + timestamp: 1735643533825 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopentelemetry-cpp-1.18.0-h0c05b2d_1.conda + sha256: c6bcbd53d62a9e0d8c667e560db0ca2ecb7679277cbb3c23457aabe74fcb8cba + md5: 19c46cc18825f3924251c39ec1b0d983 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcurl >=8.11.1,<9.0a0 + - libgrpc >=1.67.1,<1.68.0a0 + - libopentelemetry-cpp-headers 1.18.0 hce30654_1 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libzlib >=1.3.1,<2.0a0 + - nlohmann_json + - prometheus-cpp >=1.3.0,<1.4.0a0 + constrains: + - cpp-opentelemetry-sdk =1.18.0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 529588 + timestamp: 1735643889612 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-headers-1.18.0-ha770c72_1.conda + sha256: aa1f7dea79ea8513ff77339ba7c6e9cf10dfa537143e7718b1cfb3af52b649f2 + md5: 4fb055f57404920a43b147031471e03b + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 320359 + timestamp: 1735643346175 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopentelemetry-cpp-headers-1.18.0-h8af1aa0_1.conda + sha256: 981c0b29a0789597fa8ed147b02df2d2ad0c7f863d87df74770c40cee1800228 + md5: 282193b19a19e3b5d75d18ef82713ef0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 319401 + timestamp: 1735643509251 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopentelemetry-cpp-headers-1.18.0-hce30654_1.conda + sha256: 82e5f5ba64debbaab3c601b265dfc0cdb4d2880feba9bada5fd2e67b9f91ada5 + md5: e965dad955841507549fdacd8f7f94c0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 320565 + timestamp: 1735643673319 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-19.0.1-h081d1f1_0_cpu.conda + sha256: e9c4a07e79886963bfcd05894a15b5d4c7137c1122273de68845315c35d6505d + md5: 8b58c378d65b213c001f04a174a2a70e + depends: + - __glibc >=2.17,<3.0.a0 + - libarrow 19.0.1 hfa2a6e7_0_cpu + - libgcc >=13 + - libstdcxx >=13 + - libthrift >=0.21.0,<0.21.1.0a0 + - openssl >=3.4.1,<4.0a0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 1244749 + timestamp: 1739769006551 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-19.0.1-hfc78867_0_cpu.conda + sha256: 4822fcb00e97644ce74f313cd2f44fe85085c64b1481ac7e1a22ee7dd2ef772a + md5: d19e95e75e9005e712ec81409868b880 + depends: + - libarrow 19.0.1 h36213f4_0_cpu + - libgcc >=13 + - libstdcxx >=13 + - libthrift >=0.21.0,<0.21.1.0a0 + - openssl >=3.4.1,<4.0a0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 1154758 + timestamp: 1739770461892 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-19.0.1-h636d7b7_0_cpu.conda + sha256: 54e4a18493d63b7fbd5cf39fadabe665bcf462121a7bc2f394f510b0bcf22031 + md5: 0cce19e6981849babe6c73797abbfa4e + depends: + - __osx >=11.0 + - libarrow 19.0.1 h0945df6_0_cpu + - libcxx >=18 + - libthrift >=0.21.0,<0.21.1.0a0 + - openssl >=3.4.1,<4.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 895659 + timestamp: 1739768176454 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.47-h943b412_0.conda + sha256: 23367d71da58c9a61c8cbd963fcffb92768d4ae5ffbef9a47cdf1f54f98c5c36 + md5: 55199e2ae2c3651f6f9b2a447b47bdc9 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux + license: zlib-acknowledgement + purls: [] + size: 288701 + timestamp: 1739952993639 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.47-hec79eb8_0.conda + sha256: 3861a65106a5f876eff3fc19042c3edb528216114b9f8e64b37aebf003deda11 + md5: c4b1ba0d7cef5002759d2f156722feee + depends: + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + arch: aarch64 + platform: linux + license: zlib-acknowledgement + purls: [] + size: 291536 + timestamp: 1739957375872 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.47-h3783ad8_0.conda + sha256: dc93cc30f59b28e7812c6f14d2c2e590b509c38092cce7ababe6b23541b7ed8f + md5: 3550e05e3af94a3fa9cef2694417ccdf + depends: + - __osx >=11.0 + - libzlib >=1.3.1,<2.0a0 + arch: arm64 + platform: osx + license: zlib-acknowledgement + purls: [] + size: 259332 + timestamp: 1739953032676 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda + sha256: 51125ebb8b7152e4a4e69fd2398489c4ec8473195c27cde3cbdf1cb6d18c5493 + md5: d8703f1ffe5a06356f06467f1d0b9464 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 2960815 + timestamp: 1735577210663 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.3-h44a3b7b_1.conda + sha256: ecb69f2b1668e784b41ba667493be846662d5ef702bef64fb2e013bb1364cdc4 + md5: 68f807f7cc13951652bbe048253fd405 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 2788074 + timestamp: 1735576315676 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.3-h3bd63a1_1.conda + sha256: f58a16b13ad53346903c833e266f83c3d770a43a432659b98710aed85ca885e7 + md5: bdbfea4cf45ae36652c6bbcc2e7ebe91 + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=18 + - libzlib >=1.3.1,<2.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 2271580 + timestamp: 1735576361997 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_2.conda + sha256: 4420f8362c71251892ba1eeb957c5e445e4e1596c0c651c28d0d8b415fe120c7 + md5: b2fede24428726dd867611664fb372e8 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libstdcxx >=13 + constrains: + - re2 2024.07.02.* + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 209793 + timestamp: 1735541054068 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_2.conda + sha256: 862c20de0120f802e618dcb25913d00c5b82f91f4be60b2d46a774e851adc2f6 + md5: 9a7dbbaab49f76a6f36e5c9d98e323a7 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libstdcxx >=13 + constrains: + - re2 2024.07.02.* + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 204305 + timestamp: 1735540986919 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h07bc746_2.conda + sha256: 112a73ad483353751d4c5d63648c69a4d6fcebf5e1b698a860a3f5124fc3db96 + md5: 6b1e3624d3488016ca4f1ca0c412efaa + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=18 + constrains: + - re2 2024.07.02.* + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 167155 + timestamp: 1735541067807 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsentencepiece-0.2.0-h8e10757_10.conda + sha256: dc399e0f04a09f8c1807c3b36e578eb81f81891c0ddf21de9c1fb9f048ce4031 + md5: 4f43dbcfacd3cc9a183dd3a48b94d3c0 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 823649 + timestamp: 1735627841126 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsentencepiece-0.2.0-h6164ad9_10.conda + sha256: 57074803772f65d4075b7d6dc17ff5aa40ec3a30109fa4225ca16911504c4a8b + md5: a7a192edc9cfba26a27df3283203e6a1 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 800865 + timestamp: 1735627982895 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsentencepiece-0.2.0-he13a0af_10.conda + sha256: 3347a8840d085ce1661928e736229f068d56c84312fbed90886e059023d85611 + md5: 1f67e5e30edd56e0a0bf6df6bb711a9d + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 754657 + timestamp: 1735628030895 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda + sha256: 0105bd108f19ea8e6a78d2d994a6d4a8db16d19a41212070d2d1d48a63c34161 + md5: a587892d3c13b6621a6091be690dbca2 + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: ISC + purls: [] + size: 205978 + timestamp: 1716828628198 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.20-h68df207_0.conda + sha256: 448df5ea3c5cf1af785aad46858d7a5be0522f4234a4dc9bb764f4d11ff3b981 + md5: 2e4a8f23bebdcb85ca8e5a0fbe75666a + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: ISC + purls: [] + size: 177394 + timestamp: 1716828514515 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda + sha256: fade8223e1e1004367d7101dd17261003b60aa576df6d7802191f8972f7470b1 + md5: a7ce36e284c5faaf93c220dfc39e3abd + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: ISC + purls: [] + size: 164972 + timestamp: 1716828607917 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.49.1-hee588c1_1.conda + sha256: 7a09eef804ef7cf4d88215c2297eabb72af8ad0bd5b012060111c289f14bbe7d + md5: 73cea06049cc4174578b432320a003b8 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux + license: Unlicense + purls: [] + size: 915956 + timestamp: 1739953155793 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.49.1-h5eb1b54_1.conda + sha256: 920fb3b7d3b873babf79a3e392cc82d43b8bd02a573ccaff34219efb5cf7b51e + md5: 150d64241fa27d9d35a7f421ca968a6c + depends: + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + arch: aarch64 + platform: linux + license: Unlicense + purls: [] + size: 915118 + timestamp: 1739953101699 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.1-h3f77e49_1.conda + sha256: 266639fb10ca92287961574b0b4d6031fa40dd9d723d64a0fcb08513a24dab03 + md5: c83357a21092bd952933c36c5cb4f4d6 + depends: + - __osx >=11.0 + - libzlib >=1.3.1,<2.0a0 + arch: arm64 + platform: osx + license: Unlicense + purls: [] + size: 898767 + timestamp: 1739953312379 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hf672d98_0.conda + sha256: 0407ac9fda2bb67e11e357066eff144c845801d00b5f664efbc48813af1e7bb9 + md5: be2de152d8073ef1c01b7728475f2fe7 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 304278 + timestamp: 1732349402869 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libssh2-1.11.1-ha41c0db_0.conda + sha256: 40f2af5357457546bd11cd64a3b9043d83865180f65ce602515c35f353be35c7 + md5: aeffe03c0e598f015aab08dbb04f6ee4 + depends: + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 311577 + timestamp: 1732349396421 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.1-h9cc3647_0.conda + sha256: f7047c6ed44bcaeb04432e8c74da87591940d091b0a3940c0d884b7faa8062e9 + md5: ddc7194676c285513706e5fc64f214d7 + depends: + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 279028 + timestamp: 1732349599461 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-h8f9b012_2.conda + sha256: 8f5bd92e4a24e1d35ba015c5252e8f818898478cb3bc50bd8b12ab54707dc4da + md5: a78c856b6dc6bf4ea8daeb9beaaa3fb0 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc 14.2.0 h767d61c_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 3884556 + timestamp: 1740240685253 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_2.conda + sha256: c30a74bc996013907f6d9f344da007c26d98ef9a0831151cd50aece3125c45d5 + md5: eadee2cda99697e29411c1013c187b92 + depends: + - libgcc 14.2.0 he277a41_2 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 3810779 + timestamp: 1740241094774 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_2.conda + sha256: e86f38b007cf97cc2c67cd519f2de12a313c4ee3f5ef11652ad08932a5e34189 + md5: c75da67f045c2627f59e6fcb5f4e3a9b + depends: + - libstdcxx 14.2.0 h8f9b012_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 53830 + timestamp: 1740240722530 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_2.conda + sha256: 0107886ead6f255956d8e520f8dff260f9ab3d0d51512f18c52710c406e4b2df + md5: c934c1fddad582fcc385b608eb06a70c + depends: + - libstdcxx 14.2.0 h3f4de04_2 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 53715 + timestamp: 1740241126343 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libthrift-0.21.0-h0e7cc3e_0.conda + sha256: ebb395232973c18745b86c9a399a4725b2c39293c9a91b8e59251be013db42f0 + md5: dcb95c0a98ba9ff737f7ae482aef7833 + depends: + - __glibc >=2.17,<3.0.a0 + - libevent >=2.1.12,<2.1.13.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.3.2,<4.0a0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 425773 + timestamp: 1727205853307 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libthrift-0.21.0-h154c74f_0.conda + sha256: f04ab1417aca1687edff9c30d8423ace285eb8c053dc16d595c6e47cfeefb274 + md5: c28792bf37f4ecdce8e3cb9e40750650 + depends: + - libevent >=2.1.12,<2.1.13.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.3.2,<4.0a0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 417329 + timestamp: 1727205944238 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libthrift-0.21.0-h64651cc_0.conda + sha256: 7a6c7d5f58cbbc2ccd6493b4b821639fdb0701b9b04c737a949e8cb6adf1c9ad + md5: 7ce2bd2f650f8c31ad7ba4c7bfea61b7 + depends: + - __osx >=11.0 + - libcxx >=17 + - libevent >=2.1.12,<2.1.13.0a0 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.3.2,<4.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 324342 + timestamp: 1727206096912 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hd9ff511_3.conda + sha256: b224e16b88d76ea95e4af56e2bc638c603bd26a770b98d117d04541d3aafa002 + md5: 0ea6510969e1296cc19966fad481f6de + depends: + - __glibc >=2.17,<3.0.a0 + - lerc >=4.0.0,<5.0a0 + - libdeflate >=1.23,<1.24.0a0 + - libgcc >=13 + - libjpeg-turbo >=3.0.0,<4.0a0 + - liblzma >=5.6.3,<6.0a0 + - libstdcxx >=13 + - libwebp-base >=1.4.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - zstd >=1.5.6,<1.6.0a0 + arch: x86_64 + platform: linux + license: HPND + purls: [] + size: 428173 + timestamp: 1734398813264 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.0-h88f7998_3.conda + sha256: 5888bd66ba7606ae8596856c7dac800940ecad0aed77d6aa37db69d434c81cf0 + md5: 36a0ea4a173338c8725dc0807e99cf22 + depends: + - lerc >=4.0.0,<5.0a0 + - libdeflate >=1.23,<1.24.0a0 + - libgcc >=13 + - libjpeg-turbo >=3.0.0,<4.0a0 + - liblzma >=5.6.3,<6.0a0 + - libstdcxx >=13 + - libwebp-base >=1.4.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - zstd >=1.5.6,<1.6.0a0 + arch: aarch64 + platform: linux + license: HPND + purls: [] + size: 464699 + timestamp: 1734398752249 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-h551f018_3.conda + sha256: 91417846157e04992801438a496b151df89604b2e7c6775d6f701fcd0cbed5ae + md5: a5d084a957563e614ec0c0196d890654 + depends: + - __osx >=11.0 + - lerc >=4.0.0,<5.0a0 + - libcxx >=18 + - libdeflate >=1.23,<1.24.0a0 + - libjpeg-turbo >=3.0.0,<4.0a0 + - liblzma >=5.6.3,<6.0a0 + - libwebp-base >=1.4.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - zstd >=1.5.6,<1.6.0a0 + arch: arm64 + platform: osx + license: HPND + purls: [] + size: 370600 + timestamp: 1734398863052 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.10.0-h4c51ac1_0.conda + sha256: 8e41563ee963bf8ded06da45f4e70bf42f913cb3c2e79364eb3218deffa3cd74 + md5: aeccfff2806ae38430638ffbb4be9610 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 82745 + timestamp: 1737244366901 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.10.0-ha346350_0.conda + sha256: 9c333e07b76ae1ea2c882db764be52dc82f632be66d993a50b35ca9c5475074a + md5: c5166bcfb8348e8fc31ee16ec3981a5e + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 82679 + timestamp: 1737329054400 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.10.0-hda25de7_0.conda + sha256: aca3ef31d3dff5cefd3790742a5ee6548f1cf0201d0e8cee08b01da503484eb6 + md5: 5f741aed1d8d393586a5fdcaaa87f45c + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 83628 + timestamp: 1737244450097 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda + sha256: 787eb542f055a2b3de553614b25f09eefb0a0931b0c87dbcce6efdfd92f04f18 + md5: 40b61aab5c7ba9ff276c41cfffe6b80b + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 33601 + timestamp: 1680112270483 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda + sha256: 616277b0c5f7616c2cdf36f6c316ea3f9aa5bb35f2d4476a349ab58b9b91675f + md5: 000e30b09db0b7c775b21695dff30969 + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 35720 + timestamp: 1680113474501 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.5.0-h851e524_0.conda + sha256: c45283fd3e90df5f0bd3dbcd31f59cdd2b001d424cf30a07223655413b158eaf + md5: 63f790534398730f59e1b899c3644d4a + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + constrains: + - libwebp 1.5.0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 429973 + timestamp: 1734777489810 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libwebp-base-1.5.0-h0886dbf_0.conda + sha256: b3d881a0ae08bb07fff7fa8ead506c8d2e0388733182fe4f216f3ec5d61ffcf0 + md5: 95ef4a689b8cc1b7e18b53784d88f96b + depends: + - libgcc >=13 + constrains: + - libwebp 1.5.0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 362623 + timestamp: 1734779054659 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.5.0-h2471fea_0.conda + sha256: f8bdb876b4bc8cb5df47c28af29188de8911c3fea4b799a33743500149de3f4a + md5: 569466afeb84f90d5bb88c11cc23d746 + depends: + - __osx >=11.0 + constrains: + - libwebp 1.5.0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 290013 + timestamp: 1734777593617 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda + sha256: 666c0c431b23c6cec6e492840b176dde533d48b7e6fb8883f5071223433776aa + md5: 92ed62436b625154323d40d5f2f11dd7 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - pthread-stubs + - xorg-libxau >=1.0.11,<2.0a0 + - xorg-libxdmcp + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 395888 + timestamp: 1727278577118 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcb-1.17.0-h262b8f6_0.conda + sha256: 461cab3d5650ac6db73a367de5c8eca50363966e862dcf60181d693236b1ae7b + md5: cd14ee5cca2464a425b1dbfc24d90db2 + depends: + - libgcc >=13 + - pthread-stubs + - xorg-libxau >=1.0.11,<2.0a0 + - xorg-libxdmcp + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 397493 + timestamp: 1727280745441 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxcb-1.17.0-hdb1d25a_0.conda + sha256: bd3816218924b1e43b275863e21a3e13a5db4a6da74cca8e60bc3c213eb62f71 + md5: af523aae2eca6dfa1c8eec693f5b9a79 + depends: + - __osx >=11.0 + - pthread-stubs + - xorg-libxau >=1.0.11,<2.0a0 + - xorg-libxdmcp + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 323658 + timestamp: 1727278733917 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda + sha256: 6ae68e0b86423ef188196fff6207ed0c8195dd84273cb5623b85aa08033a410c + md5: 5aa797f8787fe7a17d1b0821485b5adc + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: LGPL-2.1-or-later + purls: [] + size: 100393 + timestamp: 1702724383534 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda + sha256: 6b46c397644091b8a26a3048636d10b989b1bf266d4be5e9474bf763f828f41f + md5: b4df5d7d4b63579d081fd3a4cf99740e + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: LGPL-2.1-or-later + purls: [] + size: 114269 + timestamp: 1702724369203 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.6-h8d12d68_0.conda + sha256: db8af71ea9c0ae95b7cb4a0f59319522ed2243942437a1200ceb391493018d85 + md5: 328382c0e0ca648e5c189d5ec336c604 + depends: + - __glibc >=2.17,<3.0.a0 + - icu >=75.1,<76.0a0 + - libgcc >=13 + - libiconv >=1.18,<2.0a0 + - liblzma >=5.6.4,<6.0a0 + - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 690296 + timestamp: 1739952967309 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.6-h2e0c361_0.conda + sha256: bb075df08b04b1b47e75a250f2ebbb2401c3367057d64b8d44ef1ef3f44480e1 + md5: a159a92f890f862408c951c08f13415f + depends: + - icu >=75.1,<76.0a0 + - libgcc >=13 + - libiconv >=1.18,<2.0a0 + - liblzma >=5.6.4,<6.0a0 + - libzlib >=1.3.1,<2.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 733707 + timestamp: 1739953178456 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.6-hce475f1_0.conda + sha256: 9ce429417545f7616ed528061305b3a1fc3732ff3bb24bd91cba260550879693 + md5: 8654012bd68aa48b94eee6c9faab85b6 + depends: + - __osx >=11.0 + - libiconv >=1.18,<2.0a0 + - liblzma >=5.6.4,<6.0a0 + - libzlib >=1.3.1,<2.0a0 + constrains: + - icu <0.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 582490 + timestamp: 1739953065675 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda + sha256: d4bfe88d7cb447768e31650f06257995601f89076080e76df55e3112d4e47dc4 + md5: edb0dca6bc32e4f4789199455a1dbeb8 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + constrains: + - zlib 1.3.1 *_2 + arch: x86_64 + platform: linux + license: Zlib + license_family: Other + purls: [] + size: 60963 + timestamp: 1727963148474 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda + sha256: 5a2c1eeef69342e88a98d1d95bff1603727ab1ff4ee0e421522acd8813439b84 + md5: 08aad7cbe9f5a6b460d0976076b6ae64 + depends: + - libgcc >=13 + constrains: + - zlib 1.3.1 *_2 + arch: aarch64 + platform: linux + license: Zlib + license_family: Other + purls: [] + size: 66657 + timestamp: 1727963199518 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda + sha256: ce34669eadaba351cd54910743e6a2261b67009624dbc7daeeafdef93616711b + md5: 369964e85dc26bfe78f41399b366c435 + depends: + - __osx >=11.0 + constrains: + - zlib 1.3.1 *_2 + arch: arm64 + platform: osx + license: Zlib + license_family: Other + purls: [] + size: 46438 + timestamp: 1727963202283 +- conda: https://conda.anaconda.org/conda-forge/linux-64/llvm-openmp-15.0.7-h0cdce71_0.conda + sha256: 7c67d383a8b1f3e7bf9e046e785325c481f6868194edcfb9d78d261da4ad65d4 + md5: 589c9a3575a050b583241c3d688ad9aa + depends: + - libzlib >=1.2.13,<2.0.0a0 + constrains: + - openmp 15.0.7|15.0.7.* + arch: x86_64 + platform: linux + license: Apache-2.0 WITH LLVM-exception + license_family: APACHE + purls: [] + size: 3268766 + timestamp: 1673584331056 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-15.0.7-h7cfbb63_0.conda + sha256: 6cc4cf021fc1f06df3b97598bf9583fe7a04fad6a4eef9882558f7932f362bc0 + md5: 358164e15a9320f11b84a53fb8d8e446 + constrains: + - openmp 15.0.7|15.0.7.* + arch: arm64 + platform: osx + license: Apache-2.0 WITH LLVM-exception + license_family: APACHE + purls: [] + size: 263326 + timestamp: 1673584823527 +- conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.10.0-h5888daf_1.conda + sha256: 47326f811392a5fd3055f0f773036c392d26fdb32e4d8e7a8197eed951489346 + md5: 9de5350a85c4a20c685259b889aa6393 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 167055 + timestamp: 1733741040117 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.10.0-h5ad3122_1.conda + sha256: 67e55058d275beea76c1882399640c37b5be8be4eb39354c94b610928e9a0573 + md5: 6654e411da94011e8fbe004eacb8fe11 + depends: + - libgcc >=13 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 184953 + timestamp: 1733740984533 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.10.0-h286801f_1.conda + sha256: 94d3e2a485dab8bdfdd4837880bde3dd0d701e2b97d6134b8806b7c8e69c8652 + md5: 01511afc6cc1909c5303cf31be17b44f + depends: + - __osx >=11.0 + - libcxx >=18 + arch: arm64 + platform: osx + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 148824 + timestamp: 1733741047892 +- pypi: https://download.pytorch.org/whl/MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl#sha256=ac07bad82163452a6884fe8fa0963fb98c2346ba78d779ec06bd7a6262132aee + name: markupsafe + version: 2.1.5 + sha256: ac07bad82163452a6884fe8fa0963fb98c2346ba78d779ec06bd7a6262132aee + requires_python: '>=3.7' +- conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_1.conda + sha256: 4a6bf68d2a2b669fecc9a4a009abd1cf8e72c2289522ff00d81b5a6e51ae78f5 + md5: eb227c3e0bf58f5bd69c0532b157975b + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - jinja2 >=3.0.0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/markupsafe?source=hash-mapping + size: 24604 + timestamp: 1733219911494 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312h998013c_1.conda + sha256: 4aa997b244014d3707eeef54ab0ee497d12c0d0d184018960cce096169758283 + md5: 46e547061080fddf9cf95a0327e8aba6 + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - jinja2 >=3.0.0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/markupsafe?source=hash-mapping + size: 24048 + timestamp: 1733219945697 +- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022718-release.conda + noarch: python + sha256: f3dcb14fed5470c0fc521542cbd2f1c56ca7e46d560f46176b8f926198cb3cbd + md5: 01fe5e0cf46c84a6345e323ad1316764 + depends: + - max-core ==25.2.0.dev2025022718 release + - max-python ==25.2.0.dev2025022718 release + - mojo-jupyter ==25.2.0.dev2025022718 release + - mblack ==25.2.0.dev2025022718 release + license: LicenseRef-Modular-Proprietary + size: 9905 + timestamp: 1740680254354 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022718-release.conda + sha256: 847d5767109a305d7bcad4ac29248a74a384034692934a0c54b00a590c27094a + md5: fc5a9ae36c7805979bd58ca55a25066f + depends: + - mblack ==25.2.0.dev2025022718 release + license: LicenseRef-Modular-Proprietary + size: 249811868 + timestamp: 1740680254354 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022718-release.conda + sha256: 250c35ecccd302e6c7de836ac200a5ece92e74508c2590c585d8803d488fd650 + md5: d88728b468c85902512a0f9b99251035 + depends: + - mblack ==25.2.0.dev2025022718 release + license: LicenseRef-Modular-Proprietary + size: 252108573 + timestamp: 1740680207793 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022718-release.conda + sha256: fb28d9e61aa507ea84b470082d3dc96844a24fe672d4e4c57e832655c5d0a202 + md5: dd8734453f7276a258f3351cc5c506c3 + depends: + - mblack ==25.2.0.dev2025022718 release + license: LicenseRef-Modular-Proprietary + size: 217273450 + timestamp: 1740681819160 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022718-release.conda + noarch: python + sha256: 831b4d62f66f0083321121c6ba25dedab3ee41d5e9f19d9752969592214af398 + md5: f828ace91aa057e4774e84ad459adccf + depends: + - max-core ==25.2.0.dev2025022718 release + - click >=8.0.0 + - numpy >=1.18,<2.0 + - sentencepiece >=0.2.0 + - tqdm >=4.67.1 + constrains: + - aiohttp >=3.11.12 + - fastapi >=0.114.2 + - gguf >=0.14.0 + - hf-transfer >=0.1.9 + - httpx >=0.28.1 + - huggingface_hub >=0.24.0 + - nvitop >=1.4.1 + - opentelemetry-api >=1.29.0 + - opentelemetry-exporter-otlp-proto-http >=1.27.0 + - opentelemetry-exporter-prometheus <1.0.0 + - opentelemetry-sdk >=1.29.0,<2.0 + - pillow >=10.3.0 + - prometheus_client >=0.21.0 + - prometheus-async >=22.2.0 + - psutil >=6.1.1 + - pydantic + - pydantic-settings >=2.7.1 + - pyinstrument >=5.0.1 + - python-json-logger >=2.0.7 + - requests >=2.32.3 + - rich >=13.9.4 + - safetensors >=0.5.2 + - sentinel >=0.3.0 + - sse-starlette >=2.1.2 + - tokenizers >=0.19.0 + - pytorch >=2.2.2,<=2.5.1 + - transformers >=4.40.1 + - uvicorn >=0.34.0 + - uvloop >=0.21.0 + - xgrammar ==0.1.11 + license: LicenseRef-Modular-Proprietary + size: 123584411 + timestamp: 1740680254354 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022718-release.conda + noarch: python + sha256: b9e5755b7bf6314a37a90ef0250c93f5e7c693954d7a6389a97ab9ef06e23cc3 + md5: bfd2e752d0fc9516b78a17169ce9cc78 + depends: + - max-core ==25.2.0.dev2025022718 release + - click >=8.0.0 + - numpy >=1.18,<2.0 + - sentencepiece >=0.2.0 + - tqdm >=4.67.1 + constrains: + - aiohttp >=3.11.12 + - fastapi >=0.114.2 + - gguf >=0.14.0 + - hf-transfer >=0.1.9 + - httpx >=0.28.1 + - huggingface_hub >=0.24.0 + - nvitop >=1.4.1 + - opentelemetry-api >=1.29.0 + - opentelemetry-exporter-otlp-proto-http >=1.27.0 + - opentelemetry-exporter-prometheus <1.0.0 + - opentelemetry-sdk >=1.29.0,<2.0 + - pillow >=10.3.0 + - prometheus_client >=0.21.0 + - prometheus-async >=22.2.0 + - psutil >=6.1.1 + - pydantic + - pydantic-settings >=2.7.1 + - pyinstrument >=5.0.1 + - python-json-logger >=2.0.7 + - requests >=2.32.3 + - rich >=13.9.4 + - safetensors >=0.5.2 + - sentinel >=0.3.0 + - sse-starlette >=2.1.2 + - tokenizers >=0.19.0 + - pytorch >=2.2.2,<=2.5.1 + - transformers >=4.40.1 + - uvicorn >=0.34.0 + - uvloop >=0.21.0 + - xgrammar ==0.1.11 + license: LicenseRef-Modular-Proprietary + size: 126004454 + timestamp: 1740680207793 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022718-release.conda + noarch: python + sha256: 7da9f4655082bb64c2b0cc996ffefa0ce5c49744854ed77a9b0d000e27cf5a55 + md5: b16d498a148aa61dca2a6bfec5cb8e46 + depends: + - max-core ==25.2.0.dev2025022718 release + - click >=8.0.0 + - numpy >=1.18,<2.0 + - sentencepiece >=0.2.0 + - tqdm >=4.67.1 + constrains: + - aiohttp >=3.11.12 + - fastapi >=0.114.2 + - gguf >=0.14.0 + - hf-transfer >=0.1.9 + - httpx >=0.28.1 + - huggingface_hub >=0.24.0 + - nvitop >=1.4.1 + - opentelemetry-api >=1.29.0 + - opentelemetry-exporter-otlp-proto-http >=1.27.0 + - opentelemetry-exporter-prometheus <1.0.0 + - opentelemetry-sdk >=1.29.0,<2.0 + - pillow >=10.3.0 + - prometheus_client >=0.21.0 + - prometheus-async >=22.2.0 + - psutil >=6.1.1 + - pydantic + - pydantic-settings >=2.7.1 + - pyinstrument >=5.0.1 + - python-json-logger >=2.0.7 + - requests >=2.32.3 + - rich >=13.9.4 + - safetensors >=0.5.2 + - sentinel >=0.3.0 + - sse-starlette >=2.1.2 + - tokenizers >=0.19.0 + - pytorch >=2.2.2,<=2.5.1 + - transformers >=4.40.1 + - uvicorn >=0.34.0 + - uvloop >=0.21.0 + - xgrammar ==0.1.11 + license: LicenseRef-Modular-Proprietary + size: 112658409 + timestamp: 1740681819160 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022718-release.conda + noarch: python + sha256: ff042a8abfed0e2e36b207e3d4f59a2b4577dea7f099b08d1aaef128ab796f09 + md5: 719ca7123d53415adcdd7f0cb8396c51 + depends: + - python >=3.9,<3.13 + - click >=8.0.0 + - mypy_extensions >=0.4.3 + - packaging >=22.0 + - pathspec >=0.9.0 + - platformdirs >=2 + - typing_extensions >=v4.12.2 + - python + license: MIT + size: 130852 + timestamp: 1740680254353 +- conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-2022.1.0-h84fe81f_915.tar.bz2 + sha256: 767318c4f2057822a7ebc238d6065ce12c6ae60df4ab892758adb79b1057ce02 + md5: b9c8f925797a93dbff45e1626b025a6b + depends: + - _openmp_mutex * *_llvm + - _openmp_mutex >=4.5 + - llvm-openmp >=14.0.3 + - tbb 2021.* + arch: x86_64 + platform: linux + license: LicenseRef-ProprietaryIntel + license_family: Proprietary + purls: [] + size: 209326825 + timestamp: 1652946040193 +- conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-devel-2022.1.0-ha770c72_916.tar.bz2 + sha256: 93d957608b17ada3039ff0acad2b8596451caa6829b3502fe87375e639ffc34e + md5: 69ba49e445f87aea2cba343a71a35ca2 + depends: + - mkl 2022.1.0 h84fe81f_915 + - mkl-include 2022.1.0 h84fe81f_915 + arch: x86_64 + platform: linux + license: LicenseRef-ProprietaryIntel + license_family: Proprietary + purls: [] + size: 25614 + timestamp: 1652946458276 +- conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-include-2022.1.0-h84fe81f_915.tar.bz2 + sha256: 63415fe64e99f8323d0191d45ea5b1ec3973317e728b9071267ffb7ff3b38364 + md5: 2dcd1acca05c11410d4494d7fc7dfa2a + arch: x86_64 + platform: linux + license: LicenseRef-ProprietaryIntel + license_family: Proprietary + purls: [] + size: 762563 + timestamp: 1652946186347 +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022718-release.conda + noarch: python + sha256: 19c33e23b27e240fee0b2a1d56921802ac88558dc2da417837cd590175561e16 + md5: 6b8d00b15817db11e026f824f7f0ba14 + depends: + - max-core ==25.2.0.dev2025022718 release + - python >=3.9,<3.13 + - jupyter_client >=8.6.2,<8.7 + - python + license: LicenseRef-Modular-Proprietary + size: 22981 + timestamp: 1740680254354 +- conda: https://conda.anaconda.org/conda-forge/linux-64/mpc-1.3.1-h24ddda3_1.conda + sha256: 1bf794ddf2c8b3a3e14ae182577c624fa92dea975537accff4bc7e5fea085212 + md5: aa14b9a5196a6d8dd364164b7ce56acf + depends: + - __glibc >=2.17,<3.0.a0 + - gmp >=6.3.0,<7.0a0 + - libgcc >=13 + - mpfr >=4.2.1,<5.0a0 + arch: x86_64 + platform: linux + license: LGPL-3.0-or-later + license_family: LGPL + purls: [] + size: 116777 + timestamp: 1725629179524 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/mpc-1.3.1-h8f1351a_1.conda + sha256: 2700899ad03302a1751dbf2bca135407e470dd83ac897ab91dd8675d4300f158 + md5: a5635df796b71f6ca400fc7026f50701 + depends: + - __osx >=11.0 + - gmp >=6.3.0,<7.0a0 + - mpfr >=4.2.1,<5.0a0 + arch: arm64 + platform: osx + license: LGPL-3.0-or-later + license_family: LGPL + purls: [] + size: 104766 + timestamp: 1725629165420 +- conda: https://conda.anaconda.org/conda-forge/linux-64/mpfr-4.2.1-h90cbb55_3.conda + sha256: f25d2474dd557ca66c6231c8f5ace5af312efde1ba8290a6ea5e1732a4e669c0 + md5: 2eeb50cab6652538eee8fc0bc3340c81 + depends: + - __glibc >=2.17,<3.0.a0 + - gmp >=6.3.0,<7.0a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: LGPL-3.0-only + license_family: LGPL + purls: [] + size: 634751 + timestamp: 1725746740014 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/mpfr-4.2.1-hb693164_3.conda + sha256: 4463e4e2aba7668e37a1b8532859191b4477a6f3602a5d6b4d64ad4c4baaeac5 + md5: 4e4ea852d54cc2b869842de5044662fb + depends: + - __osx >=11.0 + - gmp >=6.3.0,<7.0a0 + arch: arm64 + platform: osx + license: LGPL-3.0-only + license_family: LGPL + purls: [] + size: 345517 + timestamp: 1725746730583 +- pypi: https://download.pytorch.org/whl/mpmath-1.3.0-py3-none-any.whl#sha256=a0b2b9fe80bbcd81a6647ff13108738cfb482d481d826cc0e02f5b35e5c88d2c + name: mpmath + version: 1.3.0 + sha256: a0b2b9fe80bbcd81a6647ff13108738cfb482d481d826cc0e02f5b35e5c88d2c + requires_dist: + - pytest>=4.6 ; extra == 'develop' + - pycodestyle ; extra == 'develop' + - pytest-cov ; extra == 'develop' + - codecov ; extra == 'develop' + - wheel ; extra == 'develop' + - sphinx ; extra == 'docs' + - gmpy2>=2.1.0a4 ; platform_python_implementation != 'PyPy' and extra == 'gmpy' + - pytest>=4.6 ; extra == 'tests' +- conda: https://conda.anaconda.org/conda-forge/noarch/mpmath-1.3.0-pyhd8ed1ab_1.conda + sha256: 7d7aa3fcd6f42b76bd711182f3776a02bef09a68c5f117d66b712a6d81368692 + md5: 3585aa87c43ab15b167b574cd73b057b + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/mpmath?source=hash-mapping + size: 439705 + timestamp: 1733302781386 +- conda: 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 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/multidict?source=hash-mapping + size: 61507 + timestamp: 1733913288935 +- conda: 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 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/multidict?source=hash-mapping + size: 63077 + timestamp: 1733913233032 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/multidict-6.1.0-py312hdb8e49c_1.conda + sha256: 482fd09fb798090dc8cce2285fa69f43b1459099122eac2fb112d9b922b9f916 + md5: 0048335516fed938e4dd2c457b4c5b9b + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/multidict?source=hash-mapping + size: 55968 + timestamp: 1729065664275 +- conda: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.16-py312h66e93f0_1.conda + sha256: 459092c4e9305e00a0207b764a266c9caa14d82196322b2a74c96028c563a809 + md5: efe4a3f62320156f68579362314009f3 + depends: + - __glibc >=2.17,<3.0.a0 + - dill >=0.3.8 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/multiprocess?source=hash-mapping + size: 340540 + timestamp: 1724954755987 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.16-py312hb2c0f52_1.conda + sha256: f93627c78d1f86f593350196699b462c334542477aa55fe0212edf45392c9ab4 + md5: 642c63b684ce5614f157572b04816983 + depends: + - dill >=0.3.8 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/multiprocess?source=hash-mapping + size: 341428 + timestamp: 1724954862644 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/multiprocess-0.70.16-py312h024a12e_1.conda + sha256: d19a1c8b3fd44414657066becba960143e7115a385fb71b941f7e9c74f066a32 + md5: fd83a478d686df79aa394b9db1ad20b5 + depends: + - __osx >=11.0 + - dill >=0.3.8 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/multiprocess?source=hash-mapping + size: 342831 + timestamp: 1724954807776 +- conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda + sha256: 1895f47b7d68581a6facde5cb13ab8c2764c2e53a76bd746f8f98910dc4e08fe + md5: 29097e7ea634a45cc5386b95cac6568f + depends: + - python >=3.9 + license: MIT + license_family: MIT + purls: + - pkg:pypi/mypy-extensions?source=hash-mapping + size: 10854 + timestamp: 1733230986902 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda + sha256: 3fde293232fa3fca98635e1167de6b7c7fda83caf24b9d6c91ec9eefb4f4d586 + md5: 47e340acb35de30501a76c7c799c41d7 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: X11 AND BSD-3-Clause + purls: [] + size: 891641 + timestamp: 1738195959188 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-ha32ae93_3.conda + sha256: 91cfb655a68b0353b2833521dc919188db3d8a7f4c64bea2c6a7557b24747468 + md5: 182afabe009dc78d8b73100255ee6868 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: X11 AND BSD-3-Clause + purls: [] + size: 926034 + timestamp: 1738196018799 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda + sha256: 2827ada40e8d9ca69a153a45f7fd14f32b2ead7045d3bbb5d10964898fe65733 + md5: 068d497125e4bf8a66bf707254fff5ae + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: X11 AND BSD-3-Clause + purls: [] + size: 797030 + timestamp: 1738196177597 +- conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.1-pyhd8ed1ab_0.conda + sha256: 6b955c8530985fa727ad3323653a54af44ecf453cfdb1b549b3edff609bd3728 + md5: 254f787d5068bc89f578bf63893ce8b4 + depends: + - python >=3.8 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/networkx?source=hash-mapping + size: 1459994 + timestamp: 1680693050542 +- conda: https://conda.anaconda.org/conda-forge/linux-64/nlohmann_json-3.11.3-he02047a_1.conda + sha256: ce4bcced4f8eea71b7cac8bc3daac097abf7a5792f278cd811dedada199500c1 + md5: e46f7ac4917215b49df2ea09a694a3fa + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 122743 + timestamp: 1723652407663 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/nlohmann_json-3.11.3-h0a1ffab_1.conda + sha256: c90b1f11fc337d90a9e4c5aeeacac1418c5ba6a195097086566d38bb2ecf0f24 + md5: f2bd10ff23ab5c87327439c4499b3f3e + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 122755 + timestamp: 1723652622631 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/nlohmann_json-3.11.3-h00cdb27_1.conda + sha256: 3f4e6a4fa074bb297855f8111ab974dab6d9f98b7d4317d4dd46f8687ee2363b + md5: d2dee849c806430eee64d3acc98ce090 + depends: + - __osx >=11.0 + - libcxx >=16 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 123250 + timestamp: 1723652704997 +- conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda + sha256: fe3459c75cf84dcef6ef14efcc4adb0ade66038ddd27cadb894f34f4797687d8 + md5: d8285bea2a350f63fab23bf460221f3f + depends: + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - libgcc-ng >=12 + - liblapack >=3.9.0,<4.0a0 + - libstdcxx-ng >=12 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - numpy-base <0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/numpy?source=hash-mapping + size: 7484186 + timestamp: 1707225809722 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda + sha256: 23767677a7790bee5457d5e75ebd508b9a31c5354216f4310dd1acfca3f7a6f9 + md5: 9cebf5a06cb87d4569cd68df887af476 + depends: + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - libgcc-ng >=12 + - liblapack >=3.9.0,<4.0a0 + - libstdcxx-ng >=12 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - numpy-base <0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/numpy?source=hash-mapping + size: 6614296 + timestamp: 1707225994762 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda + sha256: c8841d6d6f61fd70ca80682efbab6bdb8606dc77c68d8acabfbd7c222054f518 + md5: d83fc83d589e2625a3451c9a7e21047c + depends: + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - libcxx >=16 + - liblapack >=3.9.0,<4.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - numpy-base <0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/numpy?source=hash-mapping + size: 6073136 + timestamp: 1707226249608 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ocl-icd-2.3.2-hb9d3cd8_2.conda + sha256: 96ddd13054032fabd54636f634d50bc74d10d8578bc946405c429b2d895db6f2 + md5: 2e8d2b469559d6b2cb6fd4b34f9c8d7f + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - opencl-headers >=2024.10.24 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 94934 + timestamp: 1732915114536 +- conda: https://conda.anaconda.org/conda-forge/linux-64/opencl-headers-2024.10.24-h5888daf_0.conda + sha256: 7e1d3ad55d4ad3ddf826e205d4603b9ed40c5e655a9dfd66b56f459d7ba14db3 + md5: 3ba02cce423fdac1a8582bd6bb189359 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 54060 + timestamp: 1732912937444 +- conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.3-h5fbd93e_0.conda + sha256: 5bee706ea5ba453ed7fd9da7da8380dd88b865c8d30b5aaec14d2b6dd32dbc39 + md5: 9e5816bc95d285c115a3ebc2f8563564 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libpng >=1.6.44,<1.7.0a0 + - libstdcxx >=13 + - libtiff >=4.7.0,<4.8.0a0 + - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 342988 + timestamp: 1733816638720 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openjpeg-2.5.3-h3f56577_0.conda + sha256: 92d310033e20538e896f4e4b1ea4205eb6604eee7c5c651c4965a0d8d3ca0f1d + md5: 04231368e4af50d11184b50e14250993 + depends: + - libgcc >=13 + - libpng >=1.6.44,<1.7.0a0 + - libstdcxx >=13 + - libtiff >=4.7.0,<4.8.0a0 + - libzlib >=1.3.1,<2.0a0 + arch: aarch64 + platform: linux + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 377796 + timestamp: 1733816683252 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/openjpeg-2.5.3-h8a3d83b_0.conda + sha256: 1d59bc72ca7faac06d349c1a280f5cfb8a57ee5896f1e24225a997189d7418c7 + md5: 4b71d78648dbcf68ce8bf22bb07ff838 + depends: + - __osx >=11.0 + - libcxx >=18 + - libpng >=1.6.44,<1.7.0a0 + - libtiff >=4.7.0,<4.8.0a0 + - libzlib >=1.3.1,<2.0a0 + arch: arm64 + platform: osx + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 319362 + timestamp: 1733816781741 +- conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.1-h7b32b05_0.conda + sha256: cbf62df3c79a5c2d113247ddea5658e9ff3697b6e741c210656e239ecaf1768f + md5: 41adf927e746dc75ecf0ef841c454e48 + depends: + - __glibc >=2.17,<3.0.a0 + - ca-certificates + - libgcc >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 2939306 + timestamp: 1739301879343 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.1-hd08dc88_0.conda + sha256: d80b52b56b2206053968270069616868cbeb289ef855cf1584b1bb0fef61b37c + md5: 09036190605c57eaecf01218e0e9542d + depends: + - ca-certificates + - libgcc >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 3476570 + timestamp: 1739303256089 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.1-h81ee809_0.conda + sha256: 4f8e2389e1b711b44182a075516d02c80fa7a3a7e25a71ff1b5ace9eae57a17a + md5: 75f9f0c7b1740017e2db83a53ab9a28e + depends: + - __osx >=11.0 + - ca-certificates + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 2934522 + timestamp: 1739301896733 +- conda: https://conda.anaconda.org/conda-forge/linux-64/orc-2.0.3-h12ee42a_2.conda + sha256: dff5cc8023905782c86b3459055f26d4b97890e403b0698477c9fed15d8669cc + md5: 4f6f9f3f80354ad185e276c120eac3f0 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - lz4-c >=1.10.0,<1.11.0a0 + - snappy >=1.2.1,<1.3.0a0 + - tzdata + - zstd >=1.5.6,<1.6.0a0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 1188881 + timestamp: 1735630209320 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/orc-2.0.3-hdd485aa_2.conda + sha256: b6c67542352a86cdf143c3066d5cda855b74454a156eedcd8958b494c6a32a83 + md5: d19f01b42e5d6a2908b65df435aff42f + depends: + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - lz4-c >=1.10.0,<1.11.0a0 + - snappy >=1.2.1,<1.3.0a0 + - tzdata + - zstd >=1.5.6,<1.6.0a0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 1167714 + timestamp: 1735630248837 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/orc-2.0.3-h0ff2369_2.conda + sha256: cca330695f3bdb8c0e46350c29cd4af3345865544e36f1d7c9ba9190ad22f5f4 + md5: 24b1897c0d24afbb70704ba998793b78 + depends: + - __osx >=11.0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libzlib >=1.3.1,<2.0a0 + - lz4-c >=1.10.0,<1.11.0a0 + - snappy >=1.2.1,<1.3.0a0 + - tzdata + - zstd >=1.5.6,<1.6.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 438520 + timestamp: 1735630624140 +- conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + sha256: da157b19bcd398b9804c5c52fc000fcb8ab0525bdb9c70f95beaa0bb42f85af1 + md5: 3bfed7e6228ebf2f7b9eaa47f1b4e2aa + depends: + - python >=3.8 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/packaging?source=hash-mapping + size: 60164 + timestamp: 1733203368787 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.3-py312hf9745cd_1.conda + sha256: ad275a83bfebfa8a8fee9b0569aaf6f513ada6a246b2f5d5b85903d8ca61887e + md5: 8bce4f6caaf8c5448c7ac86d87e26b4b + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + - numpy >=1.19,<3 + - numpy >=1.22.4 + - python >=3.12,<3.13.0a0 + - python-dateutil >=2.8.1 + - python-tzdata >=2022a + - python_abi 3.12.* *_cp312 + - pytz >=2020.1,<2024.2 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/pandas?source=hash-mapping + size: 15436913 + timestamp: 1726879054912 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pandas-2.2.3-py312ha2895bd_2.conda + sha256: a34b10077de97eea72c81cb96e3ddc7d48320c0fc7d9b28ba8d9d2bead1d8297 + md5: 39a91ac336d350513de6aad56da5a920 + depends: + - libgcc >=13 + - libstdcxx >=13 + - numpy >=1.19,<3 + - numpy >=1.22.4 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python-dateutil >=2.8.1 + - python-tzdata >=2022a + - python_abi 3.12.* *_cp312 + - pytz >=2020.1,<2024.2 + constrains: + - fsspec >=2022.11.0 + - s3fs >=2022.11.0 + - fastparquet >=2022.12.0 + - pyreadstat >=1.2.0 + - qtpy >=2.3.0 + - scipy >=1.10.0 + - beautifulsoup4 >=4.11.2 + - gcsfs >=2022.11.0 + - numexpr >=2.8.4 + - sqlalchemy >=2.0.0 + - pyxlsb >=1.0.10 + - numba >=0.56.4 + - lxml >=4.9.2 + - matplotlib >=3.6.3 + - psycopg2 >=2.9.6 + - tzdata >=2022.7 + - bottleneck >=1.3.6 + - xarray >=2022.12.0 + - xlsxwriter >=3.0.5 + - zstandard >=0.19.0 + - blosc >=1.21.3 + - pytables >=3.8.0 + - openpyxl >=3.1.0 + - pyqt5 >=5.15.8 + - tabulate >=0.9.0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/pandas?source=hash-mapping + size: 15162992 + timestamp: 1736811533875 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.3-py312hcd31e36_1.conda + sha256: ff0cb54b5d058c7987b4a0984066e893642d1865a7bb695294b6172e2fcdc457 + md5: c68bfa69e6086c381c74e16fd72613a8 + depends: + - __osx >=11.0 + - libcxx >=17 + - numpy >=1.19,<3 + - numpy >=1.22.4 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python-dateutil >=2.8.1 + - python-tzdata >=2022a + - python_abi 3.12.* *_cp312 + - pytz >=2020.1,<2024.2 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/pandas?source=hash-mapping + size: 14470437 + timestamp: 1726878887799 +- conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + sha256: 9f64009cdf5b8e529995f18e03665b03f5d07c0b17445b8badef45bde76249ee + md5: 617f15191456cc6a13db418a275435e5 + depends: + - python >=3.9 + license: MPL-2.0 + license_family: MOZILLA + purls: + - pkg:pypi/pathspec?source=hash-mapping + size: 41075 + timestamp: 1733233471940 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-11.1.0-py312h80c1187_0.conda + sha256: 5c347962202b55ae4d8a463e0555c5c6ca33396266a08284bf1384399894e541 + md5: d3894405f05b2c0f351d5de3ae26fa9c + depends: + - __glibc >=2.17,<3.0.a0 + - freetype >=2.12.1,<3.0a0 + - lcms2 >=2.16,<3.0a0 + - libgcc >=13 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libtiff >=4.7.0,<4.8.0a0 + - libwebp-base >=1.5.0,<2.0a0 + - libxcb >=1.17.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - openjpeg >=2.5.3,<3.0a0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - tk >=8.6.13,<8.7.0a0 + arch: x86_64 + platform: linux + license: HPND + purls: + - pkg:pypi/pillow?source=hash-mapping + size: 42749785 + timestamp: 1735929845390 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pillow-11.1.0-py312h719f0cf_0.conda + sha256: 7559556ffc44bda777f85c2e5acd6b5756fa5822c0271b329b7b9a3c6bb20349 + md5: 77e0ec0a6fc847d317f204aa15b59f6b + depends: + - freetype >=2.12.1,<3.0a0 + - lcms2 >=2.16,<3.0a0 + - libgcc >=13 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libtiff >=4.7.0,<4.8.0a0 + - libwebp-base >=1.5.0,<2.0a0 + - libxcb >=1.17.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - openjpeg >=2.5.3,<3.0a0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - tk >=8.6.13,<8.7.0a0 + arch: aarch64 + platform: linux + license: HPND + purls: + - pkg:pypi/pillow?source=hash-mapping + size: 41362848 + timestamp: 1735932311857 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-11.1.0-py312h50aef2c_0.conda + sha256: b29b7c915053e06a7a5b4118760202c572c9c35d23bd6ce8e73270b6a50e50ee + md5: 94d6ba8cd468668a9fb04193b0f4b36e + depends: + - __osx >=11.0 + - freetype >=2.12.1,<3.0a0 + - lcms2 >=2.16,<3.0a0 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libtiff >=4.7.0,<4.8.0a0 + - libwebp-base >=1.5.0,<2.0a0 + - libxcb >=1.17.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - openjpeg >=2.5.3,<3.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - tk >=8.6.13,<8.7.0a0 + arch: arm64 + platform: osx + license: HPND + purls: + - pkg:pypi/pillow?source=hash-mapping + size: 42852329 + timestamp: 1735930118976 +- conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + sha256: bb50f6499e8bc1d1a26f17716c97984671121608dc0c3ecd34858112bce59a27 + md5: 577852c7e53901ddccc7e6a9959ddebe + depends: + - python >=3.9 + license: MIT + license_family: MIT + purls: + - pkg:pypi/platformdirs?source=hash-mapping + size: 20448 + timestamp: 1733232756001 +- conda: https://conda.anaconda.org/conda-forge/linux-64/prometheus-cpp-1.3.0-ha5d0236_0.conda + sha256: 013669433eb447548f21c3c6b16b2ed64356f726b5f77c1b39d5ba17a8a4b8bc + md5: a83f6a2fdc079e643237887a37460668 + depends: + - __glibc >=2.17,<3.0.a0 + - libcurl >=8.10.1,<9.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - zlib + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 199544 + timestamp: 1730769112346 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/prometheus-cpp-1.3.0-h7938499_0.conda + sha256: 9350d7bbc3982a732ff13a7fd17b585509e3b7d0191ac7b810cc3224868e3648 + md5: 10f4301290e51c49979ff98d1bdf2556 + depends: + - libcurl >=8.10.1,<9.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - zlib + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 211335 + timestamp: 1730769181127 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/prometheus-cpp-1.3.0-h0967b3e_0.conda + sha256: 851a77ae1a8e90db9b9f3c4466abea7afb52713c3d98ceb0d37ba6ff27df2eff + md5: 7172339b49c94275ba42fec3eaeda34f + depends: + - __osx >=11.0 + - libcurl >=8.10.1,<9.0a0 + - libcxx >=18 + - libzlib >=1.3.1,<2.0a0 + - zlib + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 173220 + timestamp: 1730769371051 +- conda: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.1-py312h178313f_1.conda + sha256: 6d5ff6490c53e14591b70924711fe7bd70eb7fbeeeb1cbd9ed2f6d794ec8c4eb + md5: 349635694b4df27336bc15a49e9220e9 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/propcache?source=hash-mapping + size: 52947 + timestamp: 1737635699390 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.2.1-py312hcc812fe_1.conda + sha256: d759d8ab9c060b42cabf6312b9a04aa590daecabf1dd4e35731f4bc1b5c388bb + md5: 533b07e9fd835938f465225613825eee + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/propcache?source=hash-mapping + size: 52776 + timestamp: 1737635802135 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.1-py312h998013c_1.conda + sha256: 96145760baad111d7ae4213ea8f8cc035cf33b001f5ff37d92268e4d28b0941d + md5: 83678928c58c9ae76778a435b6c7a94a + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/propcache?source=hash-mapping + size: 50942 + timestamp: 1737635896600 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda + sha256: 9c88f8c64590e9567c6c80823f0328e58d3b1efb0e1c539c0315ceca764e0973 + md5: b3c17d95b5a10c6e64a21fa17573e70e + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 8252 + timestamp: 1726802366959 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pthread-stubs-0.4-h86ecc28_1002.conda + sha256: 977dfb0cb3935d748521dd80262fe7169ab82920afd38ed14b7fee2ea5ec01ba + md5: bb5a90c93e3bac3d5690acf76b4a6386 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 8342 + timestamp: 1726803319942 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pthread-stubs-0.4-hd74edd7_1002.conda + sha256: 8ed65e17fbb0ca944bfb8093b60086e3f9dd678c3448b5de212017394c247ee3 + md5: 415816daf82e0b23a736a069a75e9da7 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 8381 + timestamp: 1726802424786 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-19.0.1-py312h7900ff3_0.conda + sha256: 82a0b6ef00473c134ff32138a6fe1f6edc600f362f2007d33d6c6723e220a83d + md5: 972f2a7f04b117accc08a11469c2cb6e + depends: + - libarrow-acero 19.0.1.* + - libarrow-dataset 19.0.1.* + - libarrow-substrait 19.0.1.* + - libparquet 19.0.1.* + - pyarrow-core 19.0.1 *_0_* + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 25300 + timestamp: 1739792645286 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-19.0.1-py312h8025657_0.conda + sha256: d17f85be9e3c9ccdbf46a00f51a155d6c9d02837f3ff850539cc931ce149546f + md5: 0f2b788d71caa13c9e05fb4366e3b564 + depends: + - libarrow-acero 19.0.1.* + - libarrow-dataset 19.0.1.* + - libarrow-substrait 19.0.1.* + - libparquet 19.0.1.* + - pyarrow-core 19.0.1 *_0_* + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 25487 + timestamp: 1739792927040 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-19.0.1-py312h1f38498_0.conda + sha256: 212a9ef1971d69882b977a930b3e8cd9d78bb58c027119a52b92d48a5e47f9eb + md5: 4bbcfad0bfcad7ee1d617a9b6db564ee + depends: + - libarrow-acero 19.0.1.* + - libarrow-dataset 19.0.1.* + - libarrow-substrait 19.0.1.* + - libparquet 19.0.1.* + - pyarrow-core 19.0.1 *_0_* + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 25462 + timestamp: 1739792876991 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-19.0.1-py312h01725c0_0_cpu.conda + sha256: b2d397ee72a8e33aa1b2bcaa525b3bfc1dad333a631e668e54bcdcf275b3d69b + md5: 227543d1eef90da786f0c63bd0787839 + depends: + - __glibc >=2.17,<3.0.a0 + - libarrow 19.0.1.* *cpu + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - numpy >=1.21,<3 + - apache-arrow-proc =*=cpu + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/pyarrow?source=hash-mapping + size: 5203933 + timestamp: 1739792285799 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-19.0.1-py312h66f7834_0_cpu.conda + sha256: ab25433629022236b24d35a53dbef033ef60f3cb3a71fa630392d7340791bdc7 + md5: e83aadc9635bdcf69845587c4c837fd3 + depends: + - libarrow 19.0.1.* *cpu + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - numpy >=1.21,<3 + - apache-arrow-proc =*=cpu + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/pyarrow?source=hash-mapping + size: 5017444 + timestamp: 1739792893195 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-19.0.1-py312hc40f475_0_cpu.conda + sha256: 50ad4d67a1a2be32c2441a945a333b5347e36f027ea629fd903e7eaae77e0ed7 + md5: 90e3c0898e229d76e4a6949f621f0f58 + depends: + - __osx >=11.0 + - libarrow 19.0.1.* *cpu + - libcxx >=18 + - libzlib >=1.3.1,<2.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - apache-arrow-proc =*=cpu + - numpy >=1.21,<3 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/pyarrow?source=hash-mapping + size: 4398733 + timestamp: 1739792829575 +- conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda + sha256: 79db7928d13fab2d892592223d7570f5061c192f27b9febd1a418427b719acc6 + md5: 12c566707c80111f9799308d9e265aef + depends: + - python >=3.9 + - python + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 110100 + timestamp: 1733195786147 +- conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda + sha256: ba3b032fa52709ce0d9fd388f63d330a026754587a2f461117cac9ab73d8d0d8 + md5: 461219d1a5bd61342293efa2c0c90eac + depends: + - __unix + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/pysocks?source=hash-mapping + size: 21085 + timestamp: 1733217331982 +- conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.9-h9e4cc4f_0_cpython.conda + sha256: 64fed5178f1e9c8ac0f572ac0ce37955f5dee7b2bcac665202bc14f1f7dd618a + md5: 5665f0079432f8848079c811cdb537d5 + depends: + - __glibc >=2.17,<3.0.a0 + - bzip2 >=1.0.8,<2.0a0 + - ld_impl_linux-64 >=2.36.1 + - libexpat >=2.6.4,<3.0a0 + - libffi >=3.4,<4.0a0 + - libgcc >=13 + - liblzma >=5.6.4,<6.0a0 + - libnsl >=2.0.1,<2.1.0a0 + - libsqlite >=3.48.0,<4.0a0 + - libuuid >=2.38.1,<3.0a0 + - libxcrypt >=4.4.36 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.4.1,<4.0a0 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + constrains: + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Python-2.0 + purls: [] + size: 31581682 + timestamp: 1739521496324 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.9-h1683364_0_cpython.conda + sha256: 0366f38918bceda8ff5917d7bbe1cea2bc8b6c74e7245eb0e4b0d3c2d37f76cf + md5: 2e7ad70254455e0508adabff10218512 + depends: + - bzip2 >=1.0.8,<2.0a0 + - ld_impl_linux-aarch64 >=2.36.1 + - libexpat >=2.6.4,<3.0a0 + - libffi >=3.4,<4.0a0 + - libgcc >=13 + - liblzma >=5.6.4,<6.0a0 + - libnsl >=2.0.1,<2.1.0a0 + - libsqlite >=3.48.0,<4.0a0 + - libuuid >=2.38.1,<3.0a0 + - libxcrypt >=4.4.36 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.4.1,<4.0a0 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + constrains: + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Python-2.0 + purls: [] + size: 13804161 + timestamp: 1739519531794 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.9-hc22306f_0_cpython.conda + sha256: cbf81a78d3ca6e663e827523e6ddbc28369cac488da047a28f83875eb52fe5f6 + md5: 1d105a6c46a753e3c0bab54a1ad24063 + depends: + - __osx >=11.0 + - bzip2 >=1.0.8,<2.0a0 + - libexpat >=2.6.4,<3.0a0 + - libffi >=3.4,<4.0a0 + - liblzma >=5.6.4,<6.0a0 + - libsqlite >=3.48.0,<4.0a0 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.4.1,<4.0a0 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + constrains: + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Python-2.0 + purls: [] + size: 12947786 + timestamp: 1739520092196 +- conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + sha256: a50052536f1ef8516ed11a844f9413661829aa083304dc624c5925298d078d79 + md5: 5ba79d7c71f03c678c8ead841f347d6e + depends: + - python >=3.9 + - six >=1.5 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/python-dateutil?source=hash-mapping + size: 222505 + timestamp: 1733215763718 +- conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.1-pyhd8ed1ab_0.conda + sha256: 1597d6055d34e709ab8915091973552a0b8764c8032ede07c4e99670da029629 + md5: 392c91c42edd569a7ec99ed8648f597a + depends: + - python >=3.9 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/tzdata?source=hash-mapping + size: 143794 + timestamp: 1737541204030 +- conda: https://conda.anaconda.org/conda-forge/linux-64/python-xxhash-3.5.0-py312h66e93f0_2.conda + sha256: b5950a737d200e2e3cf199ab7b474ac194fcf4d6bee13bcbdf32c5a5cca7eaf0 + md5: cc3f6c452697c1cf7e4e6e5f21861f96 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - xxhash >=0.8.3,<0.8.4.0a0 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + purls: + - pkg:pypi/xxhash?source=hash-mapping + size: 23216 + timestamp: 1740594909669 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-xxhash-3.5.0-py312h52516f5_2.conda + sha256: b0c7528f2597e33911f179dad9852a4958683533570f8cc68976068b444461f4 + md5: c6de44ac405bf8a793c57850ea6b427a + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - xxhash >=0.8.3,<0.8.4.0a0 + arch: aarch64 + platform: linux + license: BSD-2-Clause + license_family: BSD + purls: + - pkg:pypi/xxhash?source=compressed-mapping + size: 23768 + timestamp: 1740595924431 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-xxhash-3.5.0-py312hea69d52_2.conda + sha256: 10c3df8dae696da4bd8532609999991ae1f3c4cc1a1e7f6a636cf6aa19d9eb82 + md5: b0c7097883bb4d8acfd72e7b9c6b93cd + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - xxhash >=0.8.3,<0.8.4.0a0 + arch: arm64 + platform: osx + license: BSD-2-Clause + license_family: BSD + purls: + - pkg:pypi/xxhash?source=hash-mapping + size: 21947 + timestamp: 1740595129087 +- conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda + build_number: 5 + sha256: d10e93d759931ffb6372b45d65ff34d95c6000c61a07e298d162a3bc2accebb0 + md5: 0424ae29b104430108f5218a66db7260 + constrains: + - python 3.12.* *_cpython + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 6238 + timestamp: 1723823388266 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.12-5_cp312.conda + build_number: 5 + sha256: 5ccdad9981753cc4a2d126e356673a21c0cd5b34e209cb8d476a3947d4ad9b39 + md5: 62b20f305498284a07dc6c45fd0e5c87 + constrains: + - python 3.12.* *_cpython + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 6329 + timestamp: 1723823366253 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-5_cp312.conda + build_number: 5 + sha256: 49d624e4b809c799d2bf257b22c23cf3fc4460f5570d9a58e7ad86350aeaa1f4 + md5: b76f9b1c862128e56ac7aa8cd2333de9 + constrains: + - python 3.12.* *_cpython + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 6278 + timestamp: 1723823099686 +- conda: https://conda.anaconda.org/pytorch/linux-64/pytorch-2.5.1-py3.12_cuda12.4_cudnn9.1.0_0.tar.bz2 + sha256: 8183ab363b7892f67ba3660929f1c3f4f8646e4a2a02d499d387acc0509764c3 + md5: 42164c6ce8e563c20a542686a8b9b964 + depends: + - blas * mkl + - filelock + - jinja2 + - llvm-openmp <16 + - mkl >=2018 + - networkx + - python >=3.12,<3.13.0a0 + - pytorch-cuda >=12.4,<12.5 + - pytorch-mutex 1.0 cuda + - pyyaml + - sympy + - torchtriton 3.1.0 + - typing_extensions + constrains: + - cpuonly <0 + arch: x86_64 + platform: linux + license: BSD 3-Clause + license_family: BSD + purls: + - pkg:pypi/torch?source=hash-mapping + size: 1571072276 + timestamp: 1729655770987 +- conda: https://conda.anaconda.org/pytorch/osx-arm64/pytorch-2.5.1-py3.12_0.tar.bz2 + sha256: 1d476688886b78f641973d1b5c1352eaece59484f4408f2c1af46e3634a6c957 + md5: a393d6275c53d5218015a23c741dc004 + depends: + - filelock + - jinja2 + - llvm-openmp <16 + - networkx + - python >=3.12,<3.13.0a0 + - pyyaml + - sympy + - typing_extensions + constrains: + - cpuonly + arch: arm64 + platform: osx + license: BSD 3-Clause + license_family: BSD + purls: + - pkg:pypi/torch?source=hash-mapping + size: 62089911 + timestamp: 1729651375444 +- conda: https://conda.anaconda.org/pytorch/linux-64/pytorch-cuda-12.4-hc786d27_7.tar.bz2 + sha256: 4ce6352f6270673aaf335909da2bbdd70ad8aaae489319e1e3a5ac0aae720314 + md5: 06635b1bbf5e2fef4a8b9b282500cd7b + depends: + - cuda-cudart >=12.4,<12.5 + - cuda-cupti >=12.4,<12.5 + - cuda-libraries >=12.4,<12.5 + - cuda-nvrtc >=12.4,<12.5 + - cuda-nvtx >=12.4,<12.5 + - cuda-runtime >=12.4,<12.5 + - libcublas >=12.4.5.8,<12.5.2.13 + - libcufft >=11.2.1.3,<11.2.3.18 + - libcusolver >=11.6.1.9,<11.6.2.40 + - libcusparse >=12.3.1.170,<12.4.1.18 + - libnpp >=12.2.5.30,<12.3.0.116 + - libnvjitlink >=12.4.127,<12.5.40 + - libnvjpeg >=12.3.1.117,<12.3.2.38 + arch: x86_64 + platform: linux + purls: [] + size: 7189 + timestamp: 1724179791784 +- conda: https://conda.anaconda.org/pytorch/noarch/pytorch-mutex-1.0-cuda.tar.bz2 + build_number: 100 + sha256: c16316183f51b74ca5eee4dcb8631052f328c0bbf244176734a0b7d390b81ee3 + md5: a948316e36fb5b11223b3fcfa93f8358 + purls: [] + size: 2906 + timestamp: 1628062930777 +- conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda + sha256: 1a7d6b233f7e6e3bbcbad054c8fd51e690a67b129a899a056a5e45dd9f00cb41 + md5: 3eeeeb9e4827ace8c0c1419c85d590ad + depends: + - python >=3.7 + license: MIT + license_family: MIT + purls: + - pkg:pypi/pytz?source=hash-mapping + size: 188538 + timestamp: 1706886944988 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py312h178313f_2.conda + sha256: 159cba13a93b3fe084a1eb9bda0a07afc9148147647f0d437c3c3da60980503b + md5: cf2485f39740de96e2a7f2bb18ed2fee + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - yaml >=0.2.5,<0.3.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: + - pkg:pypi/pyyaml?source=hash-mapping + size: 206903 + timestamp: 1737454910324 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyyaml-6.0.2-py312hcc812fe_2.conda + sha256: dc78e41d51300722ba35ac4a10d37339ceffbe22d7501c71dfd3f633a4f8e79a + md5: 4de4a5ff81c941674e08595244e7cd61 + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - yaml >=0.2.5,<0.3.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: + - pkg:pypi/pyyaml?source=hash-mapping + size: 199172 + timestamp: 1737454840766 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py312h998013c_2.conda + sha256: ad225ad24bfd60f7719709791345042c3cb32da1692e62bd463b084cf140e00d + md5: 68149ed4d4e9e1c42d2ba1f27f08ca96 + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - yaml >=0.2.5,<0.3.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: + - pkg:pypi/pyyaml?source=hash-mapping + size: 192148 + timestamp: 1737454886351 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.1-py312hbf22597_0.conda + sha256: 90ec0da0317d3d76990a40c61e1709ef859dd3d8c63838bad2814f46a63c8a2e + md5: 7cec8d0dac15a2d9fea8e49879aa779d + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libsodium >=1.0.20,<1.0.21.0a0 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - zeromq >=4.3.5,<4.4.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/pyzmq?source=hash-mapping + size: 382698 + timestamp: 1738271121975 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyzmq-26.2.1-py312h2427ae1_0.conda + sha256: 9558f9330093e5c21b7c04e2e212e19b9b88ad9c808315f12c0765b244018a09 + md5: 0520da8de6870d8ff63e818e927d1524 + depends: + - libgcc >=13 + - libsodium >=1.0.20,<1.0.21.0a0 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - zeromq >=4.3.5,<4.4.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/pyzmq?source=hash-mapping + size: 375156 + timestamp: 1738273130727 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.1-py312hf4875e0_0.conda + sha256: 70d398b334668dc597d33e27847ede1b0829a639b9c91ee845355e52c86c2293 + md5: bfbefdb140b546a80827ff7c9d5ac7b8 + depends: + - __osx >=11.0 + - libcxx >=18 + - libsodium >=1.0.20,<1.0.21.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - zeromq >=4.3.5,<4.4.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/pyzmq?source=hash-mapping + size: 364649 + timestamp: 1738271263898 +- conda: https://conda.anaconda.org/conda-forge/linux-64/re2-2024.07.02-h9925aae_2.conda + sha256: d213c44958d49ce7e0d4d5b81afec23640cce5016685dbb2d23571a99caa4474 + md5: e84ddf12bde691e8ec894b00ea829ddf + depends: + - libre2-11 2024.07.02 hbbce691_2 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 26786 + timestamp: 1735541074034 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/re2-2024.07.02-haa97905_2.conda + sha256: 040848655df9119bae5a549fb5c8956a5537120859416c1d9d0712b7bac9f12e + md5: 1bf0135339b4a7419a198a795d2d4be0 + depends: + - libre2-11 2024.07.02 h18dbdb1_2 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 26830 + timestamp: 1735540999398 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/re2-2024.07.02-h6589ca4_2.conda + sha256: 4d3799c05f8f662922a0acd129d119774760a3281b883603678e128d1cb307fb + md5: 7a8b4ad8c58a3408ca89d78788c78178 + depends: + - libre2-11 2024.07.02 h07bc746_2 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 26861 + timestamp: 1735541088455 +- conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda + sha256: 2d6d0c026902561ed77cd646b5021aef2d4db22e57a5b0178dfc669231e06d2c + md5: 283b96675859b20a825f8fa30f311446 + depends: + - libgcc >=13 + - ncurses >=6.5,<7.0a0 + arch: x86_64 + platform: linux + license: GPL-3.0-only + license_family: GPL + purls: [] + size: 282480 + timestamp: 1740379431762 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8382b9d_2.conda + sha256: 54bed3a3041befaa9f5acde4a37b1a02f44705b7796689574bcf9d7beaad2959 + md5: c0f08fc2737967edde1a272d4bf41ed9 + depends: + - libgcc >=13 + - ncurses >=6.5,<7.0a0 + arch: aarch64 + platform: linux + license: GPL-3.0-only + license_family: GPL + purls: [] + size: 291806 + timestamp: 1740380591358 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda + sha256: 7db04684d3904f6151eff8673270922d31da1eea7fa73254d01c437f49702e34 + md5: 63ef3f6e6d6d5c589e64f11263dc5676 + depends: + - ncurses >=6.5,<7.0a0 + arch: arm64 + platform: osx + license: GPL-3.0-only + license_family: GPL + purls: [] + size: 252359 + timestamp: 1740379663071 +- conda: https://conda.anaconda.org/conda-forge/linux-64/regex-2024.11.6-py312h66e93f0_0.conda + sha256: fcb5687d3ec5fff580b64b8fb649d9d65c999a91a5c3108a313ecdd2de99f06b + md5: 647770db979b43f9c9ca25dcfa7dc4e4 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Python-2.0 + license_family: PSF + purls: + - pkg:pypi/regex?source=hash-mapping + size: 402821 + timestamp: 1730952378415 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/regex-2024.11.6-py312hb2c0f52_0.conda + sha256: ec2c416860de29224e447e2031f8686a05476759c17da1f32f61d4307e540ec8 + md5: fa8b589107567f532fa1380e66f91776 + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Python-2.0 + license_family: PSF + purls: + - pkg:pypi/regex?source=hash-mapping + size: 398947 + timestamp: 1730952477463 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/regex-2024.11.6-py312hea69d52_0.conda + sha256: dcdec32f2c7dd37986baa692bedf9db126ad34e92e5e9b64f707cba3d04d2525 + md5: e73cda1f18846b608284bd784f061eac + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Python-2.0 + license_family: PSF + purls: + - pkg:pypi/regex?source=hash-mapping + size: 366374 + timestamp: 1730952427552 +- conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda + sha256: d701ca1136197aa121bbbe0e8c18db6b5c94acbd041c2b43c70e5ae104e1d8ad + md5: a9b9368f3701a417eac9edbcae7cb737 + depends: + - certifi >=2017.4.17 + - charset-normalizer >=2,<4 + - idna >=2.5,<4 + - python >=3.9 + - urllib3 >=1.21.1,<3 + constrains: + - chardet >=3.0.2,<6 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/requests?source=hash-mapping + size: 58723 + timestamp: 1733217126197 +- conda: https://conda.anaconda.org/conda-forge/linux-64/s2n-1.5.11-h072c03f_0.conda + sha256: cfdd98c8f9a1e5b6f9abce5dac6d590cc9fe541a08466c9e4a26f90e00b569e3 + md5: 5e8060d52f676a40edef0006a75c718f + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - openssl >=3.4.0,<4.0a0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 356213 + timestamp: 1737146304079 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/s2n-1.5.11-h3caee7a_0.conda + sha256: 5a7ae66f96be24c3b2007139b6c3701ab015b4b4eb4eccfdd07be97710243a47 + md5: 1517c0518f8a06a48a15f41d94252874 + depends: + - libgcc >=13 + - openssl >=3.4.0,<4.0a0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 352811 + timestamp: 1737146319512 +- conda: https://conda.anaconda.org/conda-forge/linux-64/safetensors-0.5.3-py312h12e396e_0.conda + sha256: 23dec8105d34e51cc2269a79680a666351233e2dc171ff14c46d3455d2c22080 + md5: fd1fc1f1e6ceee16d9a58d3ff5a57c7f + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - __glibc >=2.17 + arch: x86_64 + platform: linux + license: Apache-2.0 + purls: + - pkg:pypi/safetensors?source=compressed-mapping + size: 431388 + timestamp: 1740651706122 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/safetensors-0.5.3-py312h8cbf658_0.conda + sha256: 24ca173b9f39d5e5cabc6ea7e570b500682669e5910510020549f8696e29992d + md5: eb2d82d057535f4fb3182f43df429495 + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - __glibc >=2.17 + arch: aarch64 + platform: linux + license: Apache-2.0 + purls: + - pkg:pypi/safetensors?source=hash-mapping + size: 417509 + timestamp: 1740651719895 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/safetensors-0.5.3-py312hcd83bfe_0.conda + sha256: 1d0412be1b16df769c69d537907e690be50d06d05f757ba2451facb6883a3eb3 + md5: 68b99db908e1ec63c0cacae262a835e9 + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - __osx >=11.0 + arch: arm64 + platform: osx + license: Apache-2.0 + purls: + - pkg:pypi/safetensors?source=compressed-mapping + size: 382676 + timestamp: 1740651813281 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-0.2.0-hc8f76dd_10.conda + sha256: a1bde55ceb9dc5bd7879283d0f594a6ce65c07fda3de76230c65a4a5df47858a + md5: 480e915dfc6c592615ef6f217e615aa6 + depends: + - libsentencepiece 0.2.0 h8e10757_10 + - python_abi 3.12.* *_cp312 + - sentencepiece-python 0.2.0 py312hb6b8a2b_10 + - sentencepiece-spm 0.2.0 h8e10757_10 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 19470 + timestamp: 1735628377167 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-0.2.0-h6c1b121_10.conda + sha256: 846d885a560fbb4375b645e7caf2f756ef88bbeb441b670375da0090aaa427fb + md5: 33a89eb1dedae8eb7222b0a89856f337 + depends: + - libsentencepiece 0.2.0 h6164ad9_10 + - python_abi 3.12.* *_cp312 + - sentencepiece-python 0.2.0 py312h197ff68_10 + - sentencepiece-spm 0.2.0 h6164ad9_10 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 19686 + timestamp: 1735628718991 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-0.2.0-h22a84ea_10.conda + sha256: 526c934b897131bd274697649c3b1c492a7d66c03368885a954112468b3c1424 + md5: 346abe448f69949a65473b336856860a + depends: + - libsentencepiece 0.2.0 he13a0af_10 + - python_abi 3.12.* *_cp312 + - sentencepiece-python 0.2.0 py312h155166a_10 + - sentencepiece-spm 0.2.0 he13a0af_10 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 19759 + timestamp: 1735628533490 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-python-0.2.0-py312hb6b8a2b_10.conda + sha256: 37df7fb659564587b950b39c936769d9b5095afb7bc223f42d6248a5540c6567 + md5: 7908b7b977e2e123a5f6a29906f2ce44 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 h8e10757_10 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/sentencepiece?source=hash-mapping + size: 2411182 + timestamp: 1735628106455 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-python-0.2.0-py312h197ff68_10.conda + sha256: a7c2c19cc397c7632e2630af49ddcff128f145c93ea493421e6f42bfa5e1d30b + md5: 5642e4545a3cf03e446fb3b3e9fd723b + depends: + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 h6164ad9_10 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/sentencepiece?source=hash-mapping + size: 2458076 + timestamp: 1735628298246 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-python-0.2.0-py312h155166a_10.conda + sha256: 2d59614aeafbf54cc718805798c11c2d0a3b4b8d947d1bd81c87c484b4883077 + md5: 6e11367ef670296fce01fc9860be944d + depends: + - __osx >=11.0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 he13a0af_10 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/sentencepiece?source=hash-mapping + size: 2433303 + timestamp: 1735628083958 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-spm-0.2.0-h8e10757_10.conda + sha256: 6b55e1121545357d63c3aa0766931720e8aafc52d88641ba7631c8cbaa68c52f + md5: e977b7be5ac26c55825e121e00b90493 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 h8e10757_10 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 89076 + timestamp: 1735628334078 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-spm-0.2.0-h6164ad9_10.conda + sha256: b98fc1028a8e8fbf309af383f9c837290a14e076e6c5533dc251694ea33ffc6e + md5: a4b75936c01dca3f089f02752b7ee325 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 h6164ad9_10 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 85983 + timestamp: 1735628693813 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-spm-0.2.0-he13a0af_10.conda + sha256: b760aeee02e2afbfcce3f559e8a227aa4c94139157b1702fdfb41a057dad0e52 + md5: 9b7300f23cd330da8664cd072c162e5f + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 he13a0af_10 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 83826 + timestamp: 1735628514667 +- pypi: https://download.pytorch.org/whl/setuptools-70.2.0-py3-none-any.whl#sha256=b8b8060bb426838fbe942479c90296ce976249451118ef566a5a0b7d8b78fb05 + name: setuptools + version: 70.2.0 + sha256: b8b8060bb426838fbe942479c90296ce976249451118ef566a5a0b7d8b78fb05 + requires_dist: + - sphinx>=3.5 ; extra == 'doc' + - jaraco-packaging>=9.3 ; extra == 'doc' + - rst-linker>=1.9 ; extra == 'doc' + - furo ; extra == 'doc' + - sphinx-lint ; extra == 'doc' + - jaraco-tidelift>=1.4 ; extra == 'doc' + - pygments-github-lexers==0.0.5 ; extra == 'doc' + - sphinx-favicon ; extra == 'doc' + - sphinx-inline-tabs ; extra == 'doc' + - sphinx-reredirects ; extra == 'doc' + - sphinxcontrib-towncrier ; extra == 'doc' + - sphinx-notfound-page>=1,<2 ; extra == 'doc' + - pyproject-hooks!=1.1 ; extra == 'doc' + - pytest>=6,!=8.1.* ; extra == 'test' + - pytest-checkdocs>=2.4 ; extra == 'test' + - pytest-cov ; extra == 'test' + - pytest-mypy ; extra == 'test' + - pytest-enabler>=2.2 ; extra == 'test' + - virtualenv>=13.0.0 ; extra == 'test' + - wheel ; extra == 'test' + - pip>=19.1 ; extra == 'test' + - packaging>=23.2 ; extra == 'test' + - jaraco-envs>=2.2 ; extra == 'test' + - pytest-xdist>=3 ; extra == 'test' + - jaraco-path>=3.2.0 ; extra == 'test' + - build[virtualenv]>=1.0.3 ; extra == 'test' + - filelock>=3.4.0 ; extra == 'test' + - ini2toml[lite]>=0.14 ; extra == 'test' + - tomli-w>=1.0.0 ; extra == 'test' + - pytest-timeout ; extra == 'test' + - pytest-home>=0.5 ; extra == 'test' + - mypy==1.10.0 ; extra == 'test' + - tomli ; extra == 'test' + - importlib-metadata ; extra == 'test' + - pytest-subprocess ; extra == 'test' + - pyproject-hooks!=1.1 ; extra == 'test' + - jaraco-test ; extra == 'test' + - jaraco-develop>=7.21 ; python_full_version >= '3.9' and sys_platform != 'cygwin' and extra == 'test' + - pytest-ruff>=0.3.2 ; sys_platform != 'cygwin' and extra == 'test' + - pytest-perf ; sys_platform != 'cygwin' and extra == 'test' + requires_python: '>=3.8' +- conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + sha256: 41db0180680cc67c3fa76544ffd48d6a5679d96f4b71d7498a759e94edc9a2db + md5: a451d576819089b0d672f18768be0f65 + depends: + - python >=3.9 + license: MIT + license_family: MIT + purls: + - pkg:pypi/six?source=hash-mapping + size: 16385 + timestamp: 1733381032766 +- conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-h8bd8927_1.conda + sha256: ec91e86eeb2c6bbf09d51351b851e945185d70661d2ada67204c9a6419d282d3 + md5: 3b3e64af585eadfb52bb90b553db5edf + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 42739 + timestamp: 1733501881851 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-hd4fb6f5_1.conda + sha256: c4a07ae5def8d55128f25a567a296ef9d7bf99a3bc79d46bd5160c076a5f50af + md5: 2fcc6cd1e5550deb509073fd2e6693e1 + depends: + - libgcc >=13 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 43032 + timestamp: 1733501964775 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-h98b9ce2_1.conda + sha256: 4242f95b215127a006eb664fe26ed5a82df87e90cbdbc7ce7ff4971f0720997f + md5: ded86dee325290da2967a3fea3800eb5 + depends: + - __osx >=11.0 + - libcxx >=18 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 35857 + timestamp: 1733502172664 +- pypi: https://download.pytorch.org/whl/sympy-1.13.1-py3-none-any.whl#sha256=db36cdc64bf61b9b24578b6f7bab1ecdd2452cf008f34faa33776680c26d66f8 + name: sympy + version: 1.13.1 + sha256: db36cdc64bf61b9b24578b6f7bab1ecdd2452cf008f34faa33776680c26d66f8 + requires_dist: + - mpmath>=1.1.0,<1.4 + - pytest>=7.1.0 ; extra == 'dev' + - hypothesis>=6.70.0 ; extra == 'dev' + requires_python: '>=3.8' +- conda: https://conda.anaconda.org/conda-forge/noarch/sympy-1.13.3-pyh2585a3b_105.conda + sha256: 929d939c5a8bcdc10a17501890918da68cf14a5883b36fddf77b8f0fbf040be2 + md5: 254cd5083ffa04d96e3173397a3d30f4 + depends: + - __unix + - cpython + - gmpy2 >=2.0.8 + - mpmath >=0.19 + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/sympy?source=hash-mapping + size: 4523617 + timestamp: 1736248315124 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tbb-2021.13.0-hceb3a55_1.conda + sha256: 65463732129899770d54b1fbf30e1bb82fdebda9d7553caf08d23db4590cd691 + md5: ba7726b8df7b9d34ea80e82b097a4893 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libhwloc >=2.11.2,<2.11.3.0a0 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 175954 + timestamp: 1732982638805 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda + sha256: e0569c9caa68bf476bead1bed3d79650bb080b532c64a4af7d8ca286c08dea4e + md5: d453b98d9c83e71da0741bb0ff4d76bc + depends: + - libgcc-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 + arch: x86_64 + platform: linux + license: TCL + license_family: BSD + purls: [] + size: 3318875 + timestamp: 1699202167581 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda + sha256: 7fa27cc512d3a783f38bd16bbbffc008807372499d5b65d089a8e43bde9db267 + md5: f75105e0585851f818e0009dd1dde4dc + depends: + - libgcc-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 + arch: aarch64 + platform: linux + license: TCL + license_family: BSD + purls: [] + size: 3351802 + timestamp: 1695506242997 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda + sha256: 72457ad031b4c048e5891f3f6cb27a53cb479db68a52d965f796910e71a403a8 + md5: b50a57ba89c32b62428b71a875291c9b + depends: + - libzlib >=1.2.13,<2.0.0a0 + arch: arm64 + platform: osx + license: TCL + license_family: BSD + purls: [] + size: 3145523 + timestamp: 1699202432999 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.21.0-py312h8360d73_0.conda + sha256: 4f504a5e9d77c6d88a8f735c4319429d8bf40b742384f908a2efe0a09acc3cc5 + md5: f953aa733207f3d37acf4a3efbedba89 + depends: + - __glibc >=2.17,<3.0.a0 + - huggingface_hub >=0.16.4,<1.0 + - libgcc >=13 + - libstdcxx >=13 + - openssl >=3.4.0,<4.0a0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - __glibc >=2.17 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/tokenizers?source=hash-mapping + size: 2258007 + timestamp: 1732734202127 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.21.0-py312ha0d6ea1_0.conda + sha256: ef0f4d4e2c798b1821187ea0ba4c86484e48abaa0e9a19fe68030fa7ff5dde84 + md5: 077f48c9e0c08a30d842e15c51df4143 + depends: + - huggingface_hub >=0.16.4,<1.0 + - libgcc >=13 + - libstdcxx >=13 + - openssl >=3.4.0,<4.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - __glibc >=2.17 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/tokenizers?source=hash-mapping + size: 2331194 + timestamp: 1732734303196 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.21.0-py312hf3e4074_0.conda + sha256: 5d395333fcb22dc611140286c1f2ea8b3fa220a4931c583587cb612238091555 + md5: 4c732c74b485ef7ac8ec1c548dd45e8e + depends: + - __osx >=11.0 + - huggingface_hub >=0.16.4,<1.0 + - libcxx >=18 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - __osx >=11.0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/tokenizers?source=hash-mapping + size: 1931389 + timestamp: 1732734727624 +- pypi: https://download.pytorch.org/whl/cpu/torch-2.5.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl#sha256=36d1be99281b6f602d9639bd0af3ee0006e7aab16f6718d86f709d395b6f262c + name: torch + version: 2.5.1 + sha256: 36d1be99281b6f602d9639bd0af3ee0006e7aab16f6718d86f709d395b6f262c + requires_dist: + - filelock + - typing-extensions>=4.8.0 + - networkx + - jinja2 + - fsspec + - nvidia-cuda-nvrtc-cu12==12.4.127 ; platform_machine == 'x86_64' and platform_system == 'Linux' + - nvidia-cuda-runtime-cu12==12.4.127 ; platform_machine == 'x86_64' and platform_system == 'Linux' + - nvidia-cuda-cupti-cu12==12.4.127 ; platform_machine == 'x86_64' and platform_system == 'Linux' + - nvidia-cudnn-cu12==9.1.0.70 ; platform_machine == 'x86_64' and platform_system == 'Linux' + - nvidia-cublas-cu12==12.4.5.8 ; platform_machine == 'x86_64' and platform_system == 'Linux' + - nvidia-cufft-cu12==11.2.1.3 ; platform_machine == 'x86_64' and platform_system == 'Linux' + - nvidia-curand-cu12==10.3.5.147 ; platform_machine == 'x86_64' and platform_system == 'Linux' + - nvidia-cusolver-cu12==11.6.1.9 ; platform_machine == 'x86_64' and platform_system == 'Linux' + - nvidia-cusparse-cu12==12.3.1.170 ; platform_machine == 'x86_64' and platform_system == 'Linux' + - nvidia-nccl-cu12==2.21.5 ; platform_machine == 'x86_64' and platform_system == 'Linux' + - nvidia-nvtx-cu12==12.4.127 ; platform_machine == 'x86_64' and platform_system == 'Linux' + - nvidia-nvjitlink-cu12==12.4.127 ; platform_machine == 'x86_64' and platform_system == 'Linux' + - sympy==1.12.1 ; python_full_version == '3.8.*' + - setuptools ; python_full_version >= '3.12' + - sympy==1.13.1 ; python_full_version >= '3.9' + - opt-einsum>=3.3 ; extra == 'opt-einsum' + - optree>=0.12.0 ; extra == 'optree' + requires_python: '>=3.8.0' +- conda: https://conda.anaconda.org/pytorch/linux-64/torchtriton-3.1.0-py312.tar.bz2 + build_number: 1 + sha256: f0beb429b3834a3796626642829a7e4bb9d4fe6477c8dc614a55e5c4f15a6a05 + md5: bb4b2d07cb6b9b476e78740c08ba69fe + depends: + - filelock + - python >=3.12,<3.13.0a0 + - pytorch + arch: x86_64 + platform: linux + license: MIT + purls: + - pkg:pypi/triton?source=hash-mapping + size: 244939186 + timestamp: 1727971107041 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda + sha256: 062a3a3a37fa8615ce57929ba7e982c76f5a5810bcebd435950f6d6c4147c310 + md5: e417822cb989e80a0d2b1b576fdd1657 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/tornado?source=hash-mapping + size: 840414 + timestamp: 1732616043734 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py312h52516f5_0.conda + sha256: 4c19a544354172b2273553267e734795a6da3c78a04c2d19f8e9e159ca3178bc + md5: e28996d9d2d44d777b7e6fb12f63715b + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/tornado?source=hash-mapping + size: 841662 + timestamp: 1732616934923 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda + sha256: 964a2705a36c50040c967b18b45b9cc8de3c2aff4af546979a574e0b38e58e39 + md5: fb0605888a475d6a380ae1d1a819d976 + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/tornado?source=hash-mapping + size: 842549 + timestamp: 1732616081362 +- conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + sha256: 11e2c85468ae9902d24a27137b6b39b4a78099806e551d390e394a8c34b48e40 + md5: 9efbfdc37242619130ea42b1cc4ed861 + depends: + - colorama + - python >=3.9 + license: MPL-2.0 or MIT + purls: + - pkg:pypi/tqdm?source=hash-mapping + size: 89498 + timestamp: 1735661472632 +- conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + sha256: f39a5620c6e8e9e98357507262a7869de2ae8cc07da8b7f84e517c9fd6c2b959 + md5: 019a7385be9af33791c989871317e1ed + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/traitlets?source=hash-mapping + size: 110051 + timestamp: 1733367480074 +- conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.49.0-pyhd8ed1ab_0.conda + sha256: d522d7dda6ebe296b20955b1be3eccc5d5cfdfd413457c1236323b6a08fffd9e + md5: e63e78e545fcf857cac3372edeb67ea4 + depends: + - datasets !=2.5.0 + - filelock + - huggingface_hub >=0.23.0,<1.0 + - numpy >=1.17 + - packaging >=20.0 + - python >=3.9 + - pyyaml >=5.1 + - regex !=2019.12.17 + - requests + - safetensors >=0.4.1 + - tokenizers >=0.21,<0.22 + - tqdm >=4.27 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/transformers?source=hash-mapping + size: 3514640 + timestamp: 1739826374204 +- conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda + noarch: python + sha256: c8e9c1c467b5f960b627d7adc1c65fece8e929a3de89967e91ef0f726422fd32 + md5: b6a408c64b78ec7b779a3e5c7a902433 + depends: + - typing_extensions 4.12.2 pyha770c72_1 + license: PSF-2.0 + license_family: PSF + purls: [] + size: 10075 + timestamp: 1733188758872 +- conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + sha256: 337be7af5af8b2817f115b3b68870208b30c31d3439bec07bfb2d8f4823e3568 + md5: d17f13df8b65464ca316cbc000a3cb64 + depends: + - python >=3.9 + license: PSF-2.0 + license_family: PSF + purls: + - pkg:pypi/typing-extensions?source=hash-mapping + size: 39637 + timestamp: 1733188758212 +- conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + sha256: c4b1ae8a2931fe9b274c44af29c5475a85b37693999f8c792dad0f8c6734b1de + md5: dbcace4706afdfb7eb891f7b37d07c04 + license: LicenseRef-Public-Domain + purls: [] + size: 122921 + timestamp: 1737119101255 +- conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda + sha256: 114919ffa80c328127dab9c8e7a38f9d563c617691fb81fccb11c1e86763727e + md5: 32674f8dbfb7b26410ed580dd3c10a29 + depends: + - brotli-python >=1.0.9 + - h2 >=4,<5 + - pysocks >=1.5.6,<2.0,!=1.5.7 + - python >=3.9 + - zstandard >=0.18.0 + license: MIT + license_family: MIT + purls: + - pkg:pypi/urllib3?source=hash-mapping + size: 100102 + timestamp: 1734859520452 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-hb9d3cd8_0.conda + sha256: ed10c9283974d311855ae08a16dfd7e56241fac632aec3b92e3cfe73cff31038 + md5: f6ebe2cb3f82ba6c057dde5d9debe4f7 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 14780 + timestamp: 1734229004433 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxau-1.0.12-h86ecc28_0.conda + sha256: 7829a0019b99ba462aece7592d2d7f42e12d12ccd3b9614e529de6ddba453685 + md5: d5397424399a66d33c80b1f2345a36a6 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 15873 + timestamp: 1734230458294 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxau-1.0.12-h5505292_0.conda + sha256: f33e6f013fc36ebc200f09ddead83468544cb5c353a3b50499b07b8c34e28a8d + md5: 50901e0764b7701d8ed7343496f4f301 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 13593 + timestamp: 1734229104321 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb9d3cd8_0.conda + sha256: 6b250f3e59db07c2514057944a3ea2044d6a8cdde8a47b6497c254520fade1ee + md5: 8035c64cb77ed555e3f150b7b3972480 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 19901 + timestamp: 1727794976192 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxdmcp-1.1.5-h57736b2_0.conda + sha256: efcc150da5926cf244f757b8376d96a4db78bc15b8d90ca9f56ac6e75755971f + md5: 25a5a7b797fe6e084e04ffe2db02fc62 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 20615 + timestamp: 1727796660574 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxdmcp-1.1.5-hd74edd7_0.conda + sha256: 9939a166d780700d81023546759102b33fdc2c5f11ef09f5f66c77210fd334c8 + md5: 77c447f48cab5d3a15ac224edb86a968 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 18487 + timestamp: 1727795205022 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xxhash-0.8.3-hb9d3cd8_0.conda + sha256: 3bbc35b9ee44ffea1de441f906ba05139873a28325f8a8ed152e17af30e62232 + md5: 2ef1822d8168ed5d79ab1bf01088419a + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 107794 + timestamp: 1735848927308 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xxhash-0.8.3-h86ecc28_0.conda + sha256: f210d0b6b8543acef9b73db43a557c94e695f9dfaa2f6989057c449d9c3e1239 + md5: d992916b6e4f6e7412332bbcd41c5aa2 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 104556 + timestamp: 1735848964267 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/xxhash-0.8.3-h5505292_0.conda + sha256: 43573d504e7edc4b876a9058dc316aa9851ced1d433c2b569d583c2db22c76e2 + md5: 92a98c1bbae4729dfd0216ca22c21858 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 98318 + timestamp: 1735849111725 +- conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 + sha256: a4e34c710eeb26945bdbdaba82d3d74f60a78f54a874ec10d373811a5d217535 + md5: 4cb3ad778ec2d5a7acbdf254eb1c42ae + depends: + - libgcc-ng >=9.4.0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 89141 + timestamp: 1641346969816 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yaml-0.2.5-hf897c2e_2.tar.bz2 + sha256: 8bc601d6dbe249eba44b3c456765265cd8f42ef1e778f8df9b0c9c88b8558d7e + md5: b853307650cb226731f653aa623936a4 + depends: + - libgcc-ng >=9.4.0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 92927 + timestamp: 1641347626613 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 + sha256: 93181a04ba8cfecfdfb162fc958436d868cc37db504c58078eab4c1a3e57fbb7 + md5: 4bb3f014845110883a3c5ee811fd84b4 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 88016 + timestamp: 1641347076660 +- conda: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.18.3-py312h178313f_1.conda + sha256: 6b054c93dd19fd7544af51b41a8eacca2ab62271f6c0c5a2a0cffe80dc37a0ce + md5: 6822c49f294d4355f19d314b8b6063d8 + depends: + - __glibc >=2.17,<3.0.a0 + - idna >=2.0 + - libgcc >=13 + - multidict >=4.0 + - propcache >=0.2.1 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/yarl?source=hash-mapping + size: 152305 + timestamp: 1737575898300 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.18.3-py312hcc812fe_1.conda + sha256: bfa211c0dd5dbb308788f055277dc428b7923ceb2de6a22ea98bc17cf306f9f5 + md5: d14c78abdd6109e2b7162f53b6cc1e77 + depends: + - idna >=2.0 + - libgcc >=13 + - multidict >=4.0 + - propcache >=0.2.1 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/yarl?source=hash-mapping + size: 149654 + timestamp: 1737576065314 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.18.3-py312h998013c_1.conda + sha256: 48821d23567ca0f853eee6f7812c74392867e123798b5b3c44f58758d8eb580e + md5: 092d3b40acc67c470f379049be343a7a + depends: + - __osx >=11.0 + - idna >=2.0 + - multidict >=4.0 + - propcache >=0.2.1 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/yarl?source=hash-mapping + size: 145543 + timestamp: 1737576074753 +- conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda + sha256: a4dc72c96848f764bb5a5176aa93dd1e9b9e52804137b99daeebba277b31ea10 + md5: 3947a35e916fcc6b9825449affbf4214 + depends: + - __glibc >=2.17,<3.0.a0 + - krb5 >=1.21.3,<1.22.0a0 + - libgcc >=13 + - libsodium >=1.0.20,<1.0.21.0a0 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: MPL-2.0 + license_family: MOZILLA + purls: [] + size: 335400 + timestamp: 1731585026517 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zeromq-4.3.5-h5efb499_7.conda + sha256: a6003096dc0570a86492040ba32b04ce7662b159600be2252b7a0dfb9414e21c + md5: f2f3282559a4b87b7256ecafb4610107 + depends: + - krb5 >=1.21.3,<1.22.0a0 + - libgcc >=13 + - libsodium >=1.0.20,<1.0.21.0a0 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: MPL-2.0 + license_family: MOZILLA + purls: [] + size: 371419 + timestamp: 1731589490850 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda + sha256: 9e585569fe2e7d3bea71972cd4b9f06b1a7ab8fa7c5139f92a31cbceecf25a8a + md5: f7e6b65943cb73bce0143737fded08f1 + depends: + - __osx >=11.0 + - krb5 >=1.21.3,<1.22.0a0 + - libcxx >=18 + - libsodium >=1.0.20,<1.0.21.0a0 + arch: arm64 + platform: osx + license: MPL-2.0 + license_family: MOZILLA + purls: [] + size: 281565 + timestamp: 1731585108039 +- conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + sha256: 567c04f124525c97a096b65769834b7acb047db24b15a56888a322bf3966c3e1 + md5: 0c3cc595284c5e8f0f9900a9b228a332 + depends: + - python >=3.9 + license: MIT + license_family: MIT + purls: + - pkg:pypi/zipp?source=hash-mapping + size: 21809 + timestamp: 1732827613585 +- conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.1-hb9d3cd8_2.conda + sha256: 5d7c0e5f0005f74112a34a7425179f4eb6e73c92f5d109e6af4ddeca407c92ab + md5: c9f075ab2f33b3bbee9e62d4ad0a6cd8 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libzlib 1.3.1 hb9d3cd8_2 + arch: x86_64 + platform: linux + license: Zlib + license_family: Other + purls: [] + size: 92286 + timestamp: 1727963153079 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zlib-1.3.1-h86ecc28_2.conda + sha256: b4f649aa3ecdae384d5dad7074e198bff120edd3dfb816588e31738fc6d627b1 + md5: bc230abb5d21b63ff4799b0e75204783 + depends: + - libgcc >=13 + - libzlib 1.3.1 h86ecc28_2 + arch: aarch64 + platform: linux + license: Zlib + license_family: Other + purls: [] + size: 95582 + timestamp: 1727963203597 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zlib-1.3.1-h8359307_2.conda + sha256: 58f8860756680a4831c1bf4f294e2354d187f2e999791d53b1941834c4b37430 + md5: e3170d898ca6cb48f1bb567afb92f775 + depends: + - __osx >=11.0 + - libzlib 1.3.1 h8359307_2 + arch: arm64 + platform: osx + license: Zlib + license_family: Other + purls: [] + size: 77606 + timestamp: 1727963209370 +- conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312hef9b889_1.conda + sha256: b97015e146437283f2213ff0e95abdc8e2480150634d81fbae6b96ee09f5e50b + md5: 8b7069e9792ee4e5b4919a7a306d2e67 + depends: + - __glibc >=2.17,<3.0.a0 + - cffi >=1.11 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - zstd >=1.5.6,<1.5.7.0a0 + - zstd >=1.5.6,<1.6.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/zstandard?source=hash-mapping + size: 419552 + timestamp: 1725305670210 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstandard-0.23.0-py312hb698573_1.conda + sha256: 2681c2a249752bdc7978e59ee2f34fcdfcbfda80029b84b8e5fec8dbc9e3af25 + md5: ffcb8e97e62af42075e0e5f46bb9856e + depends: + - cffi >=1.11 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - zstd >=1.5.6,<1.5.7.0a0 + - zstd >=1.5.6,<1.6.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/zstandard?source=hash-mapping + size: 392496 + timestamp: 1725305808244 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py312h15fbf35_1.conda + sha256: d00ca25c1e28fd31199b26a94f8c96574475704a825d244d7a6351ad3745eeeb + md5: a4cde595509a7ad9c13b1a3809bcfe51 + depends: + - __osx >=11.0 + - cffi >=1.11 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - zstd >=1.5.6,<1.5.7.0a0 + - zstd >=1.5.6,<1.6.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/zstandard?source=hash-mapping + size: 330788 + timestamp: 1725305806565 +- conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda + sha256: c558b9cc01d9c1444031bd1ce4b9cff86f9085765f17627a6cd85fc623c8a02b + md5: 4d056880988120e29d75bfff282e0f45 + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 554846 + timestamp: 1714722996770 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.6-h02f22dd_0.conda + sha256: 484f9d0722c77685ae379fbff3ccd662af9ead7e59eb39cd6d0c677cdf25ff6c + md5: be8d5f8cf21aed237b8b182ea86b3dd6 + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 539937 + timestamp: 1714723130243 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.6-hb46c0d2_0.conda + sha256: 2d4fd1ff7ee79cd954ca8e81abf11d9d49954dd1fef80f27289e2402ae9c2e09 + md5: d96942c06c3e84bfcc5efb038724a7fd + depends: + - __osx >=11.0 + - libzlib >=1.2.13,<2.0.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 405089 + timestamp: 1714723101397 diff --git a/examples/inference/stable-diffusion-mojo-onnx/magic.lock b/examples/inference/stable-diffusion-mojo-onnx/magic.lock new file mode 100644 index 0000000000..9220a3345d --- /dev/null +++ b/examples/inference/stable-diffusion-mojo-onnx/magic.lock @@ -0,0 +1,8173 @@ +version: 6 +environments: + default: + channels: + - url: https://conda.anaconda.org/conda-forge/ + - url: https://conda.modular.com/max-nightly/ + - url: https://conda.anaconda.org/pytorch/ + indexes: + - https://pypi.org/simple + - https://download.pytorch.org/whl/cpu + packages: + linux-64: + - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_kmp_llvm.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.13-py312h178313f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.1.0-pyh71513ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.1-h205f482_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.1-h1a47875_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.10.6-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.3.0-h4e1184b_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.0-h7959bf6_11.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.2-hefd7a92_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-h173a860_6.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h11f4f37_12.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.9-he1b24dc_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.2-h4e1184b_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-h4e1184b_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.9-he0e7f3f_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.489-h4d475cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.10.0-h113e628_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.13.0-h3cf044e_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-common-cpp-12.8.0-h736e048_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-files-datalake-cpp-12.12.0-ha633028_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/blas-2.116-mkl.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/blas-devel-3.9.0-16_linux64_mkl.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py312h2ec8cdc_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.4-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2025.1.31-hbcca054_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.1.31-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py312h06ac9bb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.12.9-py312hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-cudart-12.4.127-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cuda-cudart_linux-64-12.4.127-h85509e4_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-cupti-12.4.127-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-libraries-12.4.1-ha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-nvrtc-12.4.127-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-nvtx-12.4.127-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-opencl-12.4.127-he02047a_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cuda-runtime-12.4.1-ha804496_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cuda-version-12.4-h3060b56_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.17.0-pyhd8ed1ab_0.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-py312h178313f_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2025.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gflags-2.2.2-h5888daf_1005.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/glog-0.7.1-hbabe93e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gmp-6.3.0-hac33072_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gmpy2-2.1.5-py312h7201bc8_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.24.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.17-h717163a_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-19.0.1-hfa2a6e7_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-19.0.1-hcb10f89_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-19.0.1-hcb10f89_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-19.0.1-h08228c5_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-16_linux64_mkl.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.1.0-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-16_linux64_mkl.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcrc32c-1.1.2-h9c3ff4c_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcublas-12.4.5.8-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcufft-11.2.1.3-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcufile-1.9.1.3-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcurand-10.3.5.147-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.12.1-h332b0f4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcusolver-11.6.1.9-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcusparse-12.3.1.170-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.23-h4ddbbb0_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libevent-2.1.12-hf998b51_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h767d61c_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-ng-14.2.0-h69a702a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hf1ad2bd_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.35.0-h2b5623c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.35.0-h0121fbd_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.67.1-h25350d4_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libhwloc-2.11.2-default_h0d58e46_1001.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h4ce23a2_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-16_linux64_mkl.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapacke-3.9.0-16_linux64_mkl.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnpp-12.2.5.30-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnvfatbin-12.4.127-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnvjitlink-12.4.127-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnvjpeg-12.3.1.117-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-1.18.0-hfcad708_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-headers-1.18.0-ha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-19.0.1-h081d1f1_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.47-h943b412_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsentencepiece-0.2.0-h8e10757_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.49.1-hee588c1_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hf672d98_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-h8f9b012_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libthrift-0.21.0-h0e7cc3e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hd9ff511_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.10.0-h4c51ac1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.5.0-h851e524_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.6-h8d12d68_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/llvm-openmp-15.0.7-h0cdce71_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.10.0-h5888daf_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-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022718-release.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-2022.1.0-h84fe81f_915.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-devel-2022.1.0-ha770c72_916.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-include-2022.1.0-h84fe81f_915.tar.bz2 + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022718-release.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/mpc-1.3.1-h24ddda3_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/mpfr-4.2.1-h90cbb55_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mpmath-1.3.0-pyhd8ed1ab_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-h2d0b736_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/nlohmann_json-3.11.3-he02047a_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ocl-icd-2.3.2-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/opencl-headers-2024.10.24-h5888daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.3-h5fbd93e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.1-h7b32b05_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/orc-2.0.3-h12ee42a_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.3-py312hf9745cd_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-10.3.0-py312h287a98d_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/prometheus-cpp-1.3.0-ha5d0236_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.1-py312h178313f_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-19.0.1-py312h7900ff3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-19.0.1-py312h01725c0_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.9-h9e4cc4f_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-xxhash-3.5.0-py312h66e93f0_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda + - conda: https://conda.anaconda.org/pytorch/linux-64/pytorch-2.5.1-py3.12_cuda12.4_cudnn9.1.0_0.tar.bz2 + - conda: https://conda.anaconda.org/pytorch/linux-64/pytorch-cuda-12.4-hc786d27_7.tar.bz2 + - conda: https://conda.anaconda.org/pytorch/noarch/pytorch-mutex-1.0-cuda.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py312h178313f_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.1-py312hbf22597_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/re2-2024.07.02-h9925aae_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda + - 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/linux-64/s2n-1.5.11-h072c03f_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/safetensors-0.5.3-py312h12e396e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-0.2.0-hc8f76dd_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-python-0.2.0-py312hb6b8a2b_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-spm-0.2.0-h8e10757_10.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-h8bd8927_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sympy-1.13.3-pyh2585a3b_105.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tbb-2021.13.0-hceb3a55_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.21.0-py312h8360d73_0.conda + - conda: https://conda.anaconda.org/pytorch/linux-64/torchtriton-3.1.0-py312.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.49.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xxhash-0.8.3-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.18.3-py312h178313f_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.1-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312hef9b889_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda + linux-aarch64: + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.13-py312hcc812fe_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.1.0-pyh71513ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.1-hb7ec8d5_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.1-h740c5af_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-common-0.10.6-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-compression-0.3.0-h0f0193d_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-event-stream-0.5.0-hcbd8f92_11.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.2-h3df160d_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-hfd5ba81_6.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h5f50e26_12.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.9-h05b070f_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.2-h0f0193d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h0f0193d_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.9-hab3ce66_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.489-h88461e4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-core-cpp-1.14.0-h1887c18_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-identity-cpp-1.10.0-h47b0b28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-blobs-cpp-12.13.0-h185ecfd_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-common-cpp-12.8.0-h1b94036_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-files-datalake-cpp-12.12.0-h37d6d07_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/brotli-python-1.1.0-py312h6f74592_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h68df207_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/c-ares-1.34.4-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2025.1.31-hcefe29a_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.1.31-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cffi-1.17.1-py312hac81daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-3.3.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.8-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.17.0-pyhd8ed1ab_0.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-py312hcc812fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.12.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gflags-2.2.2-h5ad3122_1005.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/glog-0.7.1-h468a4a4_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.24.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/keyutils-1.6.1-h4e544f5_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/krb5-1.21.3-h50a48e9_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lcms2-2.17-hc88f144_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.0.0-h4de3ea5_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h18dbdb1_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-19.0.1-h36213f4_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-19.0.1-h3b568fd_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-19.0.1-h3b568fd_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-19.0.1-h1e9d426_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-31_h1a9f1db_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlicommon-1.1.0-h86ecc28_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlidec-1.1.0-h86ecc28_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlienc-1.1.0-h86ecc28_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-31_hab92f65_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcrc32c-1.1.2-h01db608_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcurl-8.12.1-h6702fde_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libdeflate-1.23-h5e3c512_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20250104-pl5321h976ea20_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libev-4.33-h31becfc_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libevent-2.1.12-h4ba1bb4_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.6.4-h5ad3122_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.4.6-he21f813_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-14.2.0-he277a41_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-14.2.0-he9431aa_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-2.35.0-hccf9d24_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-storage-2.35.0-hb9b2b65_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgrpc-1.67.1-hf7ccdd3_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libiconv-1.18-hc99b53d_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libjpeg-turbo-3.0.0-h31becfc_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-31_h411afd4_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.4-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnghttp2-1.64.0-hc8609a4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.29-pthreads_h9d3fd7e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopentelemetry-cpp-1.18.0-h60b47f9_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopentelemetry-cpp-headers-1.18.0-h8af1aa0_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-19.0.1-hfc78867_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.47-hec79eb8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.3-h44a3b7b_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsentencepiece-0.2.0-h6164ad9_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.20-h68df207_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.49.1-h5eb1b54_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libssh2-1.11.1-ha41c0db_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libthrift-0.21.0-h154c74f_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.0-h88f7998_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.10.0-ha346350_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libwebp-base-1.5.0-h0886dbf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcb-1.17.0-h262b8f6_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.6-h2e0c361_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.10.0-h5ad3122_1.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022718-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.16-py312hb2c0f52_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-ha32ae93_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/nlohmann_json-3.11.3-h0a1ffab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openjpeg-2.5.3-h3f56577_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.1-hd08dc88_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/orc-2.0.3-hdd485aa_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pandas-2.2.3-py312ha2895bd_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pillow-10.3.0-py312hc0f7016_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/prometheus-cpp-1.3.0-h7938499_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.2.1-py312hcc812fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pthread-stubs-0.4-h86ecc28_1002.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-19.0.1-py312h8025657_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-19.0.1-py312h66f7834_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.9-h1683364_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-xxhash-3.5.0-py312h52516f5_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.12-5_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyyaml-6.0.2-py312hcc812fe_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyzmq-26.2.1-py312h2427ae1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/re2-2024.07.02-haa97905_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8382b9d_2.conda + - 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/linux-aarch64/s2n-1.5.11-h3caee7a_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/safetensors-0.5.3-py312h8cbf658_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-0.2.0-h6c1b121_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-python-0.2.0-py312h197ff68_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-spm-0.2.0-h6164ad9_10.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-hd4fb6f5_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.21.0-py312ha0d6ea1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py312h52516f5_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.49.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxau-1.0.12-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxdmcp-1.1.5-h57736b2_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xxhash-0.8.3-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yaml-0.2.5-hf897c2e_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.18.3-py312hcc812fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zeromq-4.3.5-h5efb499_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zlib-1.3.1-h86ecc28_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstandard-0.23.0-py312hb698573_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.6-h02f22dd_0.conda + - pypi: https://download.pytorch.org/whl/Jinja2-3.1.4-py3-none-any.whl#sha256=bc5dd2abb727a5319567b7a813e6a2e7318c39f4f487cfe6c89c6f9c7d25197d + - pypi: https://download.pytorch.org/whl/MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl#sha256=ac07bad82163452a6884fe8fa0963fb98c2346ba78d779ec06bd7a6262132aee + - pypi: https://download.pytorch.org/whl/mpmath-1.3.0-py3-none-any.whl#sha256=a0b2b9fe80bbcd81a6647ff13108738cfb482d481d826cc0e02f5b35e5c88d2c + - pypi: https://download.pytorch.org/whl/networkx-3.3-py3-none-any.whl#sha256=28575580c6ebdaf4505b22c6256a2b9de86b316dc63ba9e93abde3d78dfdbcf2 + - pypi: https://download.pytorch.org/whl/setuptools-70.2.0-py3-none-any.whl#sha256=b8b8060bb426838fbe942479c90296ce976249451118ef566a5a0b7d8b78fb05 + - pypi: https://download.pytorch.org/whl/sympy-1.13.1-py3-none-any.whl#sha256=db36cdc64bf61b9b24578b6f7bab1ecdd2452cf008f34faa33776680c26d66f8 + - pypi: https://download.pytorch.org/whl/cpu/torch-2.5.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl#sha256=36d1be99281b6f602d9639bd0af3ee0006e7aab16f6718d86f709d395b6f262c + osx-arm64: + - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.13-py312h998013c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.1.0-pyh71513ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.1-hfc2798a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.1-hc8a0bd2_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.10.6-h5505292_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-compression-0.3.0-hc8a0bd2_5.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.0-h54f970a_11.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.2-h96aa502_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-haba67d1_6.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h24f418c_12.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.9-hf37e03c_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.2-hc8a0bd2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-hc8a0bd2_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.9-ha81f72f_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.489-h0e5014b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.14.0-hd50102c_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.10.0-hc602bab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-blobs-cpp-12.13.0-h7585a09_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-common-cpp-12.8.0-h9ca1f76_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-files-datalake-cpp-12.12.0-hcdd55da_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py312hde4cb15_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.4-h5505292_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2025.1.31-hf0a4a13_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.1.31-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.1-py312h0fad829_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.12.9-py312hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.17.0-pyhd8ed1ab_0.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-py312h998013c_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2025.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gflags-2.2.2-hf9b8971_1005.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/glog-0.7.1-heb240a5_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gmp-6.3.0-h7bae524_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gmpy2-2.1.5-py312h524cf62_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.24.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.17-h7eeda09_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_h07bc746_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-19.0.1-h0945df6_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-19.0.1-hf07054f_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-19.0.1-hf07054f_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-19.0.1-h4239455_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-19_osxarm64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.1.0-hd74edd7_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.1.0-hd74edd7_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlienc-1.1.0-hd74edd7_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-19_osxarm64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcrc32c-1.1.2-hbdafb3b_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.12.1-h73640d1_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.23-hec38601_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libev-4.33-h93a5062_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libevent-2.1.12-h2757513_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.4-h286801f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-2.35.0-hdbe95d5_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-storage-2.35.0-h7081f7f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgrpc-1.67.1-h0a426d6_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.18-hfe07756_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.0.0-hb547adb_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-19_osxarm64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.4-h39f12f2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.64.0-h6d7220d_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.24-openmp_hd76b1f2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopentelemetry-cpp-1.18.0-h0c05b2d_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopentelemetry-cpp-headers-1.18.0-hce30654_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-19.0.1-h636d7b7_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.47-h3783ad8_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.3-h3bd63a1_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h07bc746_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsentencepiece-0.2.0-he13a0af_10.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.1-h3f77e49_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.1-h9cc3647_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libthrift-0.21.0-h64651cc_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-h551f018_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.10.0-hda25de7_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.5.0-h2471fea_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxcb-1.17.0-hdb1d25a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.6-hce475f1_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-15.0.7-h7cfbb63_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.10.0-h286801f_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-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022718-release.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/mpc-1.3.1-h8f1351a_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/mpfr-4.2.1-hb693164_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mpmath-1.3.0-pyhd8ed1ab_1.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 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/nlohmann_json-3.11.3-h00cdb27_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openjpeg-2.5.3-h8a3d83b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.1-h81ee809_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/orc-2.0.3-h0ff2369_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.3-py312hcd31e36_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-10.3.0-py312h39b1d8d_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/prometheus-cpp-1.3.0-h0967b3e_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.1-py312h998013c_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pthread-stubs-0.4-hd74edd7_1002.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-19.0.1-py312h1f38498_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-19.0.1-py312hc40f475_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.9-hc22306f_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-xxhash-3.5.0-py312hea69d52_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-5_cp312.conda + - conda: https://conda.anaconda.org/pytorch/osx-arm64/pytorch-2.5.1-py3.12_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py312h998013c_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.1-py312hf4875e0_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/re2-2024.07.02-h6589ca4_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda + - 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/osx-arm64/safetensors-0.5.3-py312hcd83bfe_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-0.2.0-h22a84ea_10.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-python-0.2.0-py312h155166a_10.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-spm-0.2.0-he13a0af_10.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-h98b9ce2_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sympy-1.13.3-pyh2585a3b_105.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.21.0-py312hf3e4074_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.49.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxau-1.0.12-h5505292_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxdmcp-1.1.5-hd74edd7_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xxhash-0.8.3-h5505292_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.18.3-py312h998013c_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zlib-1.3.1-h8359307_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py312h15fbf35_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.6-hb46c0d2_0.conda +packages: +- conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 + sha256: fe51de6107f9edc7aa4f786a70f4a883943bc9d39b3bb7307c04c41410990726 + md5: d7c89558ba9fa0495403155b64376d81 + arch: x86_64 + platform: linux + license: None + purls: [] + size: 2562 + timestamp: 1578324546067 +- conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_kmp_llvm.tar.bz2 + build_number: 2 + sha256: 84a66275da3a66e3f3e70e9d8f10496d807d01a9e4ec16cd2274cc5e28c478fc + md5: 562b26ba2e19059551a811e72ab7f793 + depends: + - _libgcc_mutex 0.1 conda_forge + - llvm-openmp >=9.0.1 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 5744 + timestamp: 1650742457817 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2 + build_number: 16 + sha256: 3702bef2f0a4d38bd8288bbe54aace623602a1343c2cfbefd3fa188e015bebf0 + md5: 6168d71addc746e8f2b8d57dfd2edcea + depends: + - libgomp >=7.5.0 + constrains: + - openmp_impl 9999 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 23712 + timestamp: 1650670790230 +- conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.6-pyhd8ed1ab_0.conda + sha256: a2a5579be9fb21f9397f51a4ba09599782c93e9117951a5105d8ee4b80d648c1 + md5: 5b7d3ceeb36e8e6783eae78acd4c18e1 + depends: + - python >=3.9 + license: PSF-2.0 + license_family: PSF + purls: + - pkg:pypi/aiohappyeyeballs?source=compressed-mapping + size: 19236 + timestamp: 1739175837817 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.13-py312h178313f_0.conda + sha256: 985834edea972ddf6c35ab4185fb228440efb845a70a88182895f8f90df4a4c9 + md5: 0ea623ee1f29a7e1d703bc3b0ef82306 + depends: + - __glibc >=2.17,<3.0.a0 + - aiohappyeyeballs >=2.3.0 + - aiosignal >=1.1.2 + - attrs >=17.3.0 + - frozenlist >=1.1.1 + - libgcc >=13 + - multidict >=4.5,<7.0 + - propcache >=0.2.0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - yarl >=1.17.0,<2.0 + arch: x86_64 + platform: linux + license: MIT AND Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/aiohttp?source=hash-mapping + size: 915558 + timestamp: 1740482064204 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.13-py312hcc812fe_0.conda + sha256: ca1fa0450decaca810db4b9f5ff1dd00c710fd89767c764a771b5d4ce7a152b0 + md5: 7e952a2d83ebfb371515c010acc110c7 + depends: + - aiohappyeyeballs >=2.3.0 + - aiosignal >=1.1.2 + - attrs >=17.3.0 + - frozenlist >=1.1.1 + - libgcc >=13 + - multidict >=4.5,<7.0 + - propcache >=0.2.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - yarl >=1.17.0,<2.0 + arch: aarch64 + platform: linux + license: MIT AND Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/aiohttp?source=hash-mapping + size: 904149 + timestamp: 1740481643315 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.13-py312h998013c_0.conda + sha256: 84f8c35912bce8c9ee979454a685ec0497fbccd7da86351e8d774ae3e7456055 + md5: d575ea7d96ce2c9fed370d85d3ef464e + depends: + - __osx >=11.0 + - aiohappyeyeballs >=2.3.0 + - aiosignal >=1.1.2 + - attrs >=17.3.0 + - frozenlist >=1.1.1 + - multidict >=4.5,<7.0 + - propcache >=0.2.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - yarl >=1.17.0,<2.0 + arch: arm64 + platform: osx + license: MIT AND Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/aiohttp?source=hash-mapping + size: 885919 + timestamp: 1740482022806 +- conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda + sha256: 7de8ced1918bbdadecf8e1c1c68237fe5709c097bd9e0d254f4cad118f4345d0 + md5: 1a3981115a398535dbe3f6d5faae3d36 + depends: + - frozenlist >=1.1.0 + - python >=3.9 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/aiosignal?source=hash-mapping + size: 13229 + timestamp: 1734342253061 +- conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.1.0-pyh71513ae_0.conda + sha256: 1f267886522dfb9ae4e5ebbc3135b5eb13cff27bdbfe8d881a4d893459166ab4 + md5: 2cc3f588512f04f3a0c64b4e9bedc02d + depends: + - python >=3.9 + license: MIT + license_family: MIT + purls: + - pkg:pypi/attrs?source=compressed-mapping + size: 56370 + timestamp: 1737819298139 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.1-h205f482_0.conda + sha256: ebe5e33249f37f6bb481de99581ebdc92dbfcf1b6915609bcf3c9e78661d6352 + md5: 9c500858e88df50af3cc883d194de78a + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 108111 + timestamp: 1737509831651 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.1-hb7ec8d5_0.conda + sha256: e1e6c9267a4d9af30b1d28c11a9041b17b7840ff83ef08614145a2a4f444f5b4 + md5: 2630f030652970a5531e492f6b2a6dd3 + depends: + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 + - libgcc >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 112658 + timestamp: 1737509863269 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.1-hfc2798a_0.conda + sha256: 5a60d196a585b25d1446fb973009e4e648e8d70beaa2793787243ede6da0fd9a + md5: 0abd67c0f7b60d50348fbb32fef50b65 + depends: + - __osx >=11.0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 92562 + timestamp: 1737509877079 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.1-h1a47875_3.conda + sha256: 095ac824ea9303eff67e04090ae531d9eb33d2bf8f82eaade39b839c421e16e8 + md5: 55a8561fdbbbd34f50f57d9be12ed084 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + - openssl >=3.3.1,<4.0a0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 47601 + timestamp: 1733991564405 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.1-h740c5af_3.conda + sha256: c5c7961d48ca7320ed3560c036f7aa5244df4b85d9657f70aacc5faba3e1509a + md5: 57ed2c445d7ef01d121b9bcea0522913 + depends: + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + - openssl >=3.3.1,<4.0a0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 50036 + timestamp: 1733991581303 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.1-hc8a0bd2_3.conda + sha256: 1f44be36e1daa17b4b081debb8aee492d13571084f38b503ad13e869fef24fe4 + md5: 8b0ce61384e5a33d2b301a64f3d22ac5 + depends: + - __osx >=11.0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - openssl >=3.3.1,<4.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 39925 + timestamp: 1733991649383 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.10.6-hb9d3cd8_0.conda + sha256: 496e92f2150fdc351eacf6e236015deedb3d0d3114f8e5954341cbf9f3dda257 + md5: d7d4680337a14001b0e043e96529409b + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 236574 + timestamp: 1733975453350 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-common-0.10.6-h86ecc28_0.conda + sha256: 57288ec5df35781bea8fc6a8c9099cad6695b747784fc1b8862a0f9e5b3bf5ab + md5: fef806a0f6de853670c746bbece01966 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 259031 + timestamp: 1733975520465 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.10.6-h5505292_0.conda + sha256: 3bde135c8e74987c0f79ecd4fa17ec9cff0d658b3090168727ca1af3815ae57a + md5: 145e5b4c9702ed279d7d68aaf096f77d + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 221863 + timestamp: 1733975576886 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.3.0-h4e1184b_5.conda + sha256: 62ca84da83585e7814a40240a1e750b1563b2680b032a471464eccc001c3309b + md5: 3f4c1197462a6df2be6dc8241828fe93 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 19086 + timestamp: 1733991637424 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-compression-0.3.0-h0f0193d_5.conda + sha256: 3f05d19f68ef800f33d44ea2a4211003124076516c8469abc7d432236344df53 + md5: 3a1421d12435df5b4c412cc4c8fac64d + depends: + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 19740 + timestamp: 1733991625201 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-compression-0.3.0-hc8a0bd2_5.conda + sha256: 47b2813f652ce7e64ac442f771b2a5f7d4af4ad0d07ff51f6075ea80ed2e3f09 + md5: a8b6c17732d14ed49d0e9b59c43186bc + depends: + - __osx >=11.0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 18068 + timestamp: 1733991869211 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.0-h7959bf6_11.conda + sha256: 10d7240c7db0c941fb1a59c4f8ea6689a434b03309ee7b766fa15a809c553c02 + md5: 9b3fb60fe57925a92f399bc3fc42eccf + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 54003 + timestamp: 1734024480949 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-event-stream-0.5.0-hcbd8f92_11.conda + sha256: 79aa363c71c891a27496c0498f8d498b2ddc87b3ccb3b6c9da5b50b05936ebb8 + md5: e0772c59af4243a9b2565baa5d79e5b6 + depends: + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + - libgcc >=13 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 55207 + timestamp: 1734024546663 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.0-h54f970a_11.conda + sha256: f0667935f4e0d4c25e0e51da035640310b5ceeb8f723156734439bde8b848d7d + md5: ba41238f8e653998d7d2f42e3a8db054 + depends: + - __osx >=11.0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + - libcxx >=18 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 47078 + timestamp: 1734024749727 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.2-hefd7a92_4.conda + sha256: 4a330206bd51148f6c13ca0b7a4db40f29a46f090642ebacdeb88b8a4abd7f99 + md5: 5ce4df662d32d3123ea8da15571b6f51 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-compression >=0.3.0,<0.3.1.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 197731 + timestamp: 1734008380764 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.2-h3df160d_4.conda + sha256: 3a1d2d332945306be9d49e569b95e4cc172d825f10e88715513a172f28ebb59e + md5: 28f00aa7fd9556c4c461328cf146c20b + depends: + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-compression >=0.3.0,<0.3.1.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - libgcc >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 190586 + timestamp: 1734008442362 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.2-h96aa502_4.conda + sha256: 22e4737c8a885995b7c1ae1d79c1f6e78d489e16ec079615980fdde067aeaf76 + md5: 495c93a4f08b17deb3c04894512330e6 + depends: + - __osx >=11.0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-compression >=0.3.0,<0.3.1.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 152983 + timestamp: 1734008451473 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-h173a860_6.conda + sha256: 335d822eead0a097ffd23677a288e1f18ea22f47a92d4f877419debb93af0e81 + md5: 9a063178f1af0a898526cc24ba7be486 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + - s2n >=1.5.11,<1.5.12.0a0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 157263 + timestamp: 1737207617838 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-hfd5ba81_6.conda + sha256: d8adfde05cee11057d99c3802e84b2300430a7c7c3c9936165d1d4b25ef59d91 + md5: 4e6771b45cb2b035c62d023dbf0dc000 + depends: + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + - s2n >=1.5.11,<1.5.12.0a0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 160933 + timestamp: 1737207637279 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-haba67d1_6.conda + sha256: 73722dd175af78b6cbfa033066f0933351f5382a1a737f6c6d9b8cfa84022161 + md5: d02e8f40ff69562903e70a1c6c48b009 + depends: + - __osx >=11.0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 136048 + timestamp: 1737207681224 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h11f4f37_12.conda + sha256: 512d3969426152d9d5fd886e27b13706122dc3fa90eb08c37b0d51a33d7bb14a + md5: 96c3e0221fa2da97619ee82faa341a73 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 194672 + timestamp: 1734025626798 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h5f50e26_12.conda + sha256: ffeb9100cc8fd4093e1a6fdfd938bc4a396dd77480b7fb17aa42855a4d5e2c70 + md5: 031ca33115d4b1eeb43f435d6215778c + depends: + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - libgcc >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 169516 + timestamp: 1734025167885 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h24f418c_12.conda + sha256: 96575ea1dd2a9ea94763882e40a66dcbff9c41f702bf37c9514c4c719b3c11dd + md5: c072045a6206f88015d02fcba1705ea1 + depends: + - __osx >=11.0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 134371 + timestamp: 1734025379525 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.9-he1b24dc_1.conda + sha256: 15fbdedc56850f8be5be7a5bcaea1af09c97590e631c024ae089737fc932fc42 + md5: caafc32928a5f7f3f7ef67d287689144 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-auth >=0.8.1,<0.8.2.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + - libgcc >=13 + - openssl >=3.4.0,<4.0a0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 115413 + timestamp: 1737558687616 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.9-h05b070f_1.conda + sha256: 9e7857fbc33eddc291fa09890ce468a92485d3e3e127bc00bbd1803e34121f84 + md5: e0a2869195f069db88b8932f5b00bee5 + depends: + - aws-c-auth >=0.8.1,<0.8.2.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + - libgcc >=13 + - openssl >=3.4.0,<4.0a0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 117875 + timestamp: 1737558720047 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.9-hf37e03c_1.conda + sha256: 92e8ca4eefcbbdf4189584c9410382884a06ed3030e5ecaac656dab8c95e6a80 + md5: de65f5e4ab5020103fe70a0eba9432a0 + depends: + - __osx >=11.0 + - aws-c-auth >=0.8.1,<0.8.2.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 98731 + timestamp: 1737558731831 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.2-h4e1184b_0.conda + sha256: 0424e380c435ba03b5948d02e8c958866c4eee50ed29e57f99473a5f795a4cfc + md5: dcd498d493818b776a77fbc242fbf8e4 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 55911 + timestamp: 1736535960724 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.2-h0f0193d_0.conda + sha256: fba38e469457764afcb94aa84d4d7788e6b5fa1554d34b05c904d2245fdd3c81 + md5: a78928881c652facde2a13ec6e776f3c + depends: + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 58221 + timestamp: 1736536003041 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.2-hc8a0bd2_0.conda + sha256: ea4f0f1e99056293c69615f581a997d65ba7e229e296e402e0d8ef750648a5b5 + md5: e7b5498ac7b7ab921a907be38f3a8080 + depends: + - __osx >=11.0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 49872 + timestamp: 1736536152332 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-h4e1184b_4.conda + sha256: 1ed9a332d06ad595694907fad2d6d801082916c27cd5076096fda4061e6d24a8 + md5: 74e8c3e4df4ceae34aa2959df4b28101 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 72762 + timestamp: 1733994347547 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h0f0193d_4.conda + sha256: 9f1e3635a587bcf92b61d88c7af7d24cd89c147c6d0ae58afbde08e65bcf48da + md5: 3bd35b0adab3d743f09e0252cc441d6b + depends: + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 72154 + timestamp: 1733994384415 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-hc8a0bd2_4.conda + sha256: 215086d95e8ff1d3fcb0197ada116cc9d7db1fdae7573f5e810d20fa9215b47c + md5: e70e88a357a3749b67679c0788c5b08a + depends: + - __osx >=11.0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 70186 + timestamp: 1733994496998 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.9-he0e7f3f_2.conda + sha256: c1930569713bd5231d48d885a5e3707ac917b428e8f08189d14064a2bb128adc + md5: 8a4e6fc8a3b285536202b5456a74a940 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-auth >=0.8.1,<0.8.2.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-event-stream >=0.5.0,<0.5.1.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-c-mqtt >=0.11.0,<0.11.1.0a0 + - aws-c-s3 >=0.7.9,<0.7.10.0a0 + - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 353222 + timestamp: 1737565463079 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.9-hab3ce66_2.conda + sha256: c3884fb10e0fd9be5c13256cabcda1afa9d2fcf8878c67214d02fc344509857d + md5: 875968ebffe992b68faf2caebbf32f02 + depends: + - aws-c-auth >=0.8.1,<0.8.2.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-event-stream >=0.5.0,<0.5.1.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-c-mqtt >=0.11.0,<0.11.1.0a0 + - aws-c-s3 >=0.7.9,<0.7.10.0a0 + - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 + - libgcc >=13 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 283812 + timestamp: 1737565480034 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.9-ha81f72f_2.conda + sha256: ed5f1d19aad53787fdebe13db4709c97eae2092536cc55d3536eba320c4286e1 + md5: c9c034d3239bf25687ca4dd985007ecd + depends: + - __osx >=11.0 + - aws-c-auth >=0.8.1,<0.8.2.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-event-stream >=0.5.0,<0.5.1.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-c-mqtt >=0.11.0,<0.11.1.0a0 + - aws-c-s3 >=0.7.9,<0.7.10.0a0 + - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 + - libcxx >=18 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 235976 + timestamp: 1737565563139 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.489-h4d475cb_0.conda + sha256: 08d6b7d2ed17bfcc7deb903c7751278ee434abdb27e3be0dceb561f30f030c75 + md5: b775e9f46dfa94b228a81d8e8c6d8b1d + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-event-stream >=0.5.0,<0.5.1.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + - aws-crt-cpp >=0.29.9,<0.29.10.0a0 + - libcurl >=8.11.1,<9.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 3144364 + timestamp: 1737576036746 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.489-h88461e4_0.conda + sha256: 88353e82b053763168cddbe2f88048defc1c97b3dad0966fbe8c4fa7aa592c7e + md5: e725d8fa77a6a5f38a78c5de914a5f40 + depends: + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-event-stream >=0.5.0,<0.5.1.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + - aws-crt-cpp >=0.29.9,<0.29.10.0a0 + - libcurl >=8.11.1,<9.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 3015109 + timestamp: 1737575993030 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.489-h0e5014b_0.conda + sha256: d82451530ddf363d8bb31a8a7391bb9699f745e940ace91d78c0e6170deef03c + md5: 156cfb45a1bb8cffc81e59047bb34f51 + depends: + - __osx >=11.0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-event-stream >=0.5.0,<0.5.1.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + - aws-crt-cpp >=0.29.9,<0.29.10.0a0 + - libcurl >=8.11.1,<9.0a0 + - libcxx >=18 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 2874126 + timestamp: 1737577023623 +- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda + sha256: fe07debdb089a3db17f40a7f20d283d75284bb4fc269ef727b8ba6fc93f7cb5a + md5: 0a8838771cc2e985cd295e01ae83baf1 + depends: + - __glibc >=2.17,<3.0.a0 + - libcurl >=8.10.1,<9.0a0 + - libgcc >=13 + - libstdcxx >=13 + - openssl >=3.3.2,<4.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 345117 + timestamp: 1728053909574 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-core-cpp-1.14.0-h1887c18_0.conda + sha256: 8967b3ccee4d74e61f6ec82dd8efb9deb854ee7ba012dfe767b7a92e0ac77724 + md5: e0c3a906a41be769f0ae20ca3e31cfc0 + depends: + - libcurl >=8.10.1,<9.0a0 + - libgcc >=13 + - libstdcxx >=13 + - openssl >=3.3.2,<4.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 338650 + timestamp: 1728055589907 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.14.0-hd50102c_0.conda + sha256: f5b91329ed59ffc0be8747784c6e4cc7e56250c54032883a83bc11808ef6a87e + md5: f093a11dcf3cdcca010b20a818fcc6dc + depends: + - __osx >=11.0 + - libcurl >=8.10.1,<9.0a0 + - libcxx >=17 + - openssl >=3.3.2,<4.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 294299 + timestamp: 1728054014060 +- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.10.0-h113e628_0.conda + sha256: 286b31616c191486626cb49e9ceb5920d29394b9e913c23adb7eb637629ba4de + md5: 73f73f60854f325a55f1d31459f2ab73 + depends: + - __glibc >=2.17,<3.0.a0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - libgcc >=13 + - libstdcxx >=13 + - openssl >=3.3.2,<4.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 232351 + timestamp: 1728486729511 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-identity-cpp-1.10.0-h47b0b28_0.conda + sha256: 1c72423b9beba167d2f01b80dc204da77240a8266f1edb3d89510c852b300d69 + md5: 94e73a7877743a85c57091d8afab2348 + depends: + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - libgcc >=13 + - libstdcxx >=13 + - openssl >=3.3.2,<4.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 217132 + timestamp: 1728488096615 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.10.0-hc602bab_0.conda + sha256: bde446b916fff5150606f8ed3e6058ffc55a3aa72381e46f1ab346590b1ae40a + md5: d7b71593a937459f2d4b67e1a4727dc2 + depends: + - __osx >=11.0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - libcxx >=17 + - openssl >=3.3.2,<4.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 166907 + timestamp: 1728486882502 +- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.13.0-h3cf044e_1.conda + sha256: 2606260e5379eed255bcdc6adc39b93fb31477337bcd911c121fc43cd29bf394 + md5: 7eb66060455c7a47d9dcdbfa9f46579b + depends: + - __glibc >=2.17,<3.0.a0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 549342 + timestamp: 1728578123088 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-blobs-cpp-12.13.0-h185ecfd_1.conda + sha256: 280ec70009a92626054f58e45b168fce393e71a9710587488bd8401628cda481 + md5: 221e1e5ecb2643e113f32b3229d5ba33 + depends: + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 + - libgcc >=13 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 502934 + timestamp: 1728580241002 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-blobs-cpp-12.13.0-h7585a09_1.conda + sha256: 08d52d130addc0fb55d5ba10d9fa483e39be25d69bac7f4c676c2c3069207590 + md5: 704238ef05d46144dae2e6b5853df8bc + depends: + - __osx >=11.0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 + - libcxx >=17 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 438636 + timestamp: 1728578216193 +- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-common-cpp-12.8.0-h736e048_1.conda + sha256: 273475f002b091b66ce7366da04bf164c3732c03f8692ab2ee2d23335b6a82ba + md5: 13de36be8de3ae3f05ba127631599213 + depends: + - __glibc >=2.17,<3.0.a0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libxml2 >=2.12.7,<3.0a0 + - openssl >=3.3.2,<4.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 149312 + timestamp: 1728563338704 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-common-cpp-12.8.0-h1b94036_1.conda + sha256: 146e76aac169e3dbdce5d3b142b7930ac643795c765e7655d1989905ec7d3231 + md5: 793b1080ab2d958980f137a8643cd6e8 + depends: + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libxml2 >=2.12.7,<3.0a0 + - openssl >=3.3.2,<4.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 140832 + timestamp: 1728565334900 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-common-cpp-12.8.0-h9ca1f76_1.conda + sha256: 77ab04e8fe5636a2de9c718f72a43645f7502cd208868c8a91ffba385547d585 + md5: 7a187cd7b1445afc80253bb186a607cc + depends: + - __osx >=11.0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - libcxx >=17 + - libxml2 >=2.12.7,<3.0a0 + - openssl >=3.3.2,<4.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 121278 + timestamp: 1728563418777 +- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-files-datalake-cpp-12.12.0-ha633028_1.conda + sha256: 5371e4f3f920933bb89b926a85a67f24388227419abd6e99f6086481e5e8d5f2 + md5: 7c1980f89dd41b097549782121a73490 + depends: + - __glibc >=2.17,<3.0.a0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 + - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 287366 + timestamp: 1728729530295 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-files-datalake-cpp-12.12.0-h37d6d07_1.conda + sha256: 4079c617a75682e49bae63670d58fd6078ccfbbe55ca1f994acab3a74ab6bbcc + md5: b724f3b4b7f4e9b36c58cbe3ed8610a2 + depends: + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 + - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 + - libgcc >=13 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 260547 + timestamp: 1728730924071 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-files-datalake-cpp-12.12.0-hcdd55da_1.conda + sha256: f48523f8aa0b5b80f45a92f0556b388dd96f44ac2dc2f44a01d08c1822eec97d + md5: c49fbc5233fcbaa86391162ff1adef38 + depends: + - __osx >=11.0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 + - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 + - libcxx >=17 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 196032 + timestamp: 1728729672889 +- conda: https://conda.anaconda.org/conda-forge/linux-64/blas-2.116-mkl.tar.bz2 + build_number: 16 + sha256: 87056ebdc90b6d1ea6726d04d42b844cc302112e80508edbf7bf1f1a4fd3fed2 + md5: c196a26abf6b4f132c88828ab7c2231c + depends: + - _openmp_mutex * *_llvm + - _openmp_mutex >=4.5 + - blas-devel 3.9.0 16_linux64_mkl + - libblas 3.9.0 16_linux64_mkl + - libcblas 3.9.0 16_linux64_mkl + - libgcc-ng >=12 + - libgfortran-ng + - libgfortran5 >=10.4.0 + - liblapack 3.9.0 16_linux64_mkl + - liblapacke 3.9.0 16_linux64_mkl + - llvm-openmp >=14.0.4 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 13258 + timestamp: 1660094704275 +- conda: https://conda.anaconda.org/conda-forge/linux-64/blas-devel-3.9.0-16_linux64_mkl.tar.bz2 + build_number: 16 + sha256: a7da65ca4e0322317cbc4d387c4a5f075cdc7fcd12ad9f7f18da758c7532749a + md5: 3f92c1c9e1c0e183462c5071aa02cae1 + depends: + - libblas 3.9.0 16_linux64_mkl + - libcblas 3.9.0 16_linux64_mkl + - liblapack 3.9.0 16_linux64_mkl + - liblapacke 3.9.0 16_linux64_mkl + - mkl >=2022.1.0,<2023.0a0 + - mkl-devel 2022.1.* + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 12630 + timestamp: 1660094595212 +- conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py312h2ec8cdc_2.conda + sha256: f2a59ccd20b4816dea9a2a5cb917eb69728271dbf1aeab4e1b7e609330a50b6f + md5: b0b867af6fc74b2a0aa206da29c0f3cf + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - libbrotlicommon 1.1.0 hb9d3cd8_2 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: + - pkg:pypi/brotli?source=hash-mapping + size: 349867 + timestamp: 1725267732089 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/brotli-python-1.1.0-py312h6f74592_2.conda + sha256: 9736bf660a0e4260c68f81d2635b51067f817813e6490ac9e8abd9a835dcbf6d + md5: e1e9727063057168d95f27a032acd0a4 + depends: + - libgcc >=13 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - libbrotlicommon 1.1.0 h86ecc28_2 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: + - pkg:pypi/brotli?source=hash-mapping + size: 356878 + timestamp: 1725267878508 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py312hde4cb15_2.conda + sha256: 254b411fa78ccc226f42daf606772972466f93e9bc6895eabb4cfda22f5178af + md5: a83c2ef76ccb11bc2349f4f17696b15d + depends: + - __osx >=11.0 + - libcxx >=17 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - libbrotlicommon 1.1.0 hd74edd7_2 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: + - pkg:pypi/brotli?source=hash-mapping + size: 339360 + timestamp: 1725268143995 +- conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda + sha256: 5ced96500d945fb286c9c838e54fa759aa04a7129c59800f0846b4335cee770d + md5: 62ee74e96c5ebb0af99386de58cf9553 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: bzip2-1.0.6 + license_family: BSD + purls: [] + size: 252783 + timestamp: 1720974456583 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h68df207_7.conda + sha256: 2258b0b33e1cb3a9852d47557984abb6e7ea58e3d7f92706ec1f8e879290c4cb + md5: 56398c28220513b9ea13d7b450acfb20 + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: bzip2-1.0.6 + license_family: BSD + purls: [] + size: 189884 + timestamp: 1720974504976 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda + sha256: adfa71f158cbd872a36394c56c3568e6034aa55c623634b37a4836bd036e6b91 + md5: fc6948412dbbbe9a4c9ddbbcfe0a79ab + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: bzip2-1.0.6 + license_family: BSD + purls: [] + size: 122909 + timestamp: 1720974522888 +- conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.4-hb9d3cd8_0.conda + sha256: d4f28d87b6339b94f74762c0076e29c8ef8ddfff51a564a92da2843573c18320 + md5: e2775acf57efd5af15b8e3d1d74d72d3 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 206085 + timestamp: 1734208189009 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/c-ares-1.34.4-h86ecc28_0.conda + sha256: 1187a41d4bb2afe02cb18690682edc98d1e9f5e0ccda638d8704a75ea1875bbe + md5: 356da36f35d36dcba16e43f1589d4e39 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 215979 + timestamp: 1734208193181 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.4-h5505292_0.conda + sha256: 09c0c8476e50b2955f474a4a1c17c4c047dd52993b5366b6ea8e968e583b921f + md5: c1c999a38a4303b29d75c636eaa13cf9 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 179496 + timestamp: 1734208291879 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2025.1.31-hbcca054_0.conda + sha256: bf832198976d559ab44d6cdb315642655547e26d826e34da67cbee6624cda189 + md5: 19f3a56f68d2fd06c516076bff482c52 + arch: x86_64 + platform: linux + license: ISC + purls: [] + size: 158144 + timestamp: 1738298224464 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2025.1.31-hcefe29a_0.conda + sha256: 66c6408ee461593cfdb2d78d82e6ed74d04a04ccb51df3ef8a5f35148c9c6eec + md5: 462cb166cd2e26a396f856510a3aff67 + arch: aarch64 + platform: linux + license: ISC + purls: [] + size: 158290 + timestamp: 1738299057652 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2025.1.31-hf0a4a13_0.conda + sha256: 7e12816618173fe70f5c638b72adf4bfd4ddabf27794369bb17871c5bb75b9f9 + md5: 3569d6a9141adc64d2fe4797f3289e06 + arch: arm64 + platform: osx + license: ISC + purls: [] + size: 158425 + timestamp: 1738298167688 +- conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.1.31-pyhd8ed1ab_0.conda + sha256: 42a78446da06a2568cb13e69be3355169fbd0ea424b00fc80b7d840f5baaacf3 + md5: c207fa5ac7ea99b149344385a9c0880d + depends: + - python >=3.9 + license: ISC + purls: + - pkg:pypi/certifi?source=compressed-mapping + size: 162721 + timestamp: 1739515973129 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py312h06ac9bb_0.conda + sha256: cba6ea83c4b0b4f5b5dc59cb19830519b28f95d7ebef7c9c5cf1c14843621457 + md5: a861504bbea4161a9170b85d4d2be840 + depends: + - __glibc >=2.17,<3.0.a0 + - libffi >=3.4,<4.0a0 + - libgcc >=13 + - pycparser + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: + - pkg:pypi/cffi?source=hash-mapping + size: 294403 + timestamp: 1725560714366 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cffi-1.17.1-py312hac81daf_0.conda + sha256: 1162e3ca039e7ca7c0e78f0a020ed1bde968096841b663e3f393c966eb82f0f0 + md5: 1a256e5581b1099e9295cb84d53db3ea + depends: + - libffi >=3.4,<4.0a0 + - libgcc >=13 + - pycparser + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: + - pkg:pypi/cffi?source=hash-mapping + size: 312892 + timestamp: 1725561779888 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.1-py312h0fad829_0.conda + sha256: 8d91a0d01358b5c3f20297c6c536c5d24ccd3e0c2ddd37f9d0593d0f0070226f + md5: 19a5456f72f505881ba493979777b24e + depends: + - __osx >=11.0 + - libffi >=3.4,<4.0a0 + - pycparser + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: + - pkg:pypi/cffi?source=hash-mapping + size: 281206 + timestamp: 1725560813378 +- conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda + sha256: 4e0ee91b97e5de3e74567bdacea27f0139709fceca4db8adffbe24deffccb09b + md5: e83a31202d1c0a000fce3e9cf3825875 + depends: + - python >=3.9 + license: MIT + license_family: MIT + purls: + - pkg:pypi/charset-normalizer?source=hash-mapping + size: 47438 + timestamp: 1735929811779 +- conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda + sha256: c920d23cd1fcf565031c679adb62d848af60d6fbb0edc2d50ba475cea4f0d8ab + md5: f22f4d4970e09d68a10b922cbb0408d3 + depends: + - __unix + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/click?source=hash-mapping + size: 84705 + timestamp: 1734858922844 +- conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + sha256: ab29d57dc70786c1269633ba3dff20288b81664d3ff8d21af995742e2bb03287 + md5: 962b9857ee8e7018c22f2776ffa0b2d7 + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/colorama?source=hash-mapping + size: 27011 + timestamp: 1733218222191 +- conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.12.9-py312hd8ed1ab_0.conda + noarch: generic + sha256: f5c7ad0bd23fa8645ac279d99bddba656ff61483dc6312af12aae13910dfb210 + md5: a5b10f166467fecec692abaee84d16aa + depends: + - python 3.12.9.* + - python_abi * *_cp312 + license: Python-2.0 + purls: [] + size: 44836 + timestamp: 1739519561557 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-cudart-12.4.127-he02047a_2.conda + sha256: d8ad0be647dad6378119c110572bbf9f6b1e8c820393ed159d45f02588979c07 + md5: a748faa52331983fc3adcc3b116fe0e4 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-cudart_linux-64 12.4.127 h85509e4_2 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 22563 + timestamp: 1715710703269 +- conda: https://conda.anaconda.org/conda-forge/noarch/cuda-cudart_linux-64-12.4.127-h85509e4_2.conda + sha256: 1f1b3e0bf6b5e665860ecbdf509c1e02760c14d25e3f3893a712f90f7f8a5abc + md5: 329163110a96514802e9e64d971edf43 + depends: + - cuda-version >=12.4,<12.5.0a0 + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 186886 + timestamp: 1715710690964 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-cupti-12.4.127-he02047a_2.conda + sha256: db9ebc57fd583711bbdd12e54d00e4153a7b414f929f77fca2f44547c02204b8 + md5: 46422ef1b1161fb180027e50c598ecd0 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 1918773 + timestamp: 1715665119069 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-libraries-12.4.1-ha770c72_1.conda + sha256: cb30e83f33c7480caa68a1e35e6ff4102d17ff0a94239ca18555afff1df2f70e + md5: 6bb3f998485d4344a7539e0b218b3fc1 + depends: + - cuda-cudart 12.4.127.* + - cuda-nvrtc 12.4.127.* + - cuda-opencl 12.4.127.* + - libcublas 12.4.5.8.* + - libcufft 11.2.1.3.* + - libcufile 1.9.1.3.* + - libcurand 10.3.5.147.* + - libcusolver 11.6.1.9.* + - libcusparse 12.3.1.170.* + - libnpp 12.2.5.30.* + - libnvfatbin 12.4.127.* + - libnvjitlink 12.4.127.* + - libnvjpeg 12.3.1.117.* + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 20180 + timestamp: 1713304266920 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-nvrtc-12.4.127-he02047a_2.conda + sha256: c4aba5e152526db7cad7c8a5191497b0c6365c912ed845dc9c427d29893486a1 + md5: 80baf6262f4a1a0dde42d85aaa393402 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 18825627 + timestamp: 1715711095870 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-nvtx-12.4.127-he02047a_2.conda + sha256: 8f499785edaec6198a934e8a9dd1f8b6f79aabcc135962d6050dd7328c76d3dc + md5: 656a004b6e44f50ce71c65cab0d429b4 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 31691 + timestamp: 1715731339952 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-opencl-12.4.127-he02047a_1.conda + sha256: 75d912a70719a9d0bca9f234a79a857815d8feec3c54c145e6e41589de4ff5be + md5: 1e98deda07c14d26c80d124cf0eb011a + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - ocl-icd >=2.3.2,<3.0a0 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 30406 + timestamp: 1715711329543 +- conda: https://conda.anaconda.org/conda-forge/noarch/cuda-runtime-12.4.1-ha804496_0.conda + sha256: 61a593347c91a9bcd18329f7aa780bd1fb1e20dd1b61b16a451bd4a6b60dabf0 + md5: 48829f4ef6005ae8d4867b99168ff2b8 + depends: + - __linux + - cuda-libraries 12.4.1.* + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 20034 + timestamp: 1712683445348 +- conda: https://conda.anaconda.org/conda-forge/noarch/cuda-version-12.4-h3060b56_3.conda + sha256: 571d32fbd0dc8df6e85c14d1757549927e272af9c70b935d7e3a553ab0b0b4da + md5: c9a3fe8b957176e1a8452c6f3431b0d8 + constrains: + - cudatoolkit 12.4|12.4.* + - __cuda >=12 + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 21022 + timestamp: 1709765922936 +- conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda + sha256: 7e09bd083a609138b780fcc4535924cb96814d2c908a36d4c64a2ba9ee3efe7f + md5: 3e087f072ce03c43a9b60522f5d0ca2f + depends: + - aiohttp + - dill >=0.3.0,<0.3.8 + - fsspec >=2021.11.1 + - huggingface_hub >=0.14.0,<1.0.0 + - importlib-metadata + - multiprocess + - numpy >=1.17 + - packaging + - pandas + - pyarrow >=8.0.0 + - python >=3.8.0 + - python-xxhash + - pyyaml >=5.1 + - requests >=2.19.0 + - tqdm >=4.62.1 + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/datasets?source=hash-mapping + size: 347303 + timestamp: 1691593908658 +- conda: https://conda.anaconda.org/conda-forge/noarch/datasets-3.3.2-pyhd8ed1ab_0.conda + sha256: 06109a3de7a977424d960b75cdb307f8d769eae87c53e33a64e706171199997a + md5: c2f904077afe3a8246c26576f555a6af + depends: + - aiohttp + - dill >=0.3.0,<0.3.9 + - filelock + - fsspec >=2023.1.0,<=2024.12.0 + - huggingface_hub >=0.24.0 + - multiprocess <0.70.17 + - numpy >=1.17 + - packaging + - pandas + - pyarrow >=15.0.0 + - python >=3.9 + - python-xxhash + - pyyaml >=5.1 + - requests >=2.32.2 + - tqdm >=4.66.3 + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/datasets?source=hash-mapping + size: 335311 + timestamp: 1740153561620 +- conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda + sha256: 4ff20c6be028be2825235631c45d9e4a75bca1de65f8840c02dfb28ea0137c45 + md5: 5e4f3466526c52bc9af2d2353a1460bd + depends: + - python >=3.7 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/dill?source=hash-mapping + size: 87553 + timestamp: 1690101185422 +- conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.8-pyhd8ed1ab_0.conda + sha256: 482b5b566ca559119b504c53df12b08f3962a5ef8e48061d62fd58a47f8f2ec4 + md5: 78745f157d56877a2c6e7b386f66f3e2 + depends: + - python >=3.7 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/dill?source=hash-mapping + size: 88169 + timestamp: 1706434833883 +- conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.17.0-pyhd8ed1ab_0.conda + sha256: 006d7e5a0c17a6973596dd86bfc80d74ce541144d2aee2d22d46fd41df560a63 + md5: 7f402b4a1007ee355bc50ce4d24d4a57 + depends: + - python >=3.9 + license: Unlicense + purls: + - pkg:pypi/filelock?source=hash-mapping + size: 17544 + timestamp: 1737517924333 +- conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.12.1-h267a509_2.conda + sha256: b2e3c449ec9d907dd4656cb0dc93e140f447175b125a3824b31368b06c666bb6 + md5: 9ae35c3d96db2c94ce0cef86efdfa2cb + depends: + - libgcc-ng >=12 + - libpng >=1.6.39,<1.7.0a0 + - libzlib >=1.2.13,<2.0.0a0 + arch: x86_64 + platform: linux + license: GPL-2.0-only OR FTL + purls: [] + size: 634972 + timestamp: 1694615932610 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/freetype-2.12.1-hf0a5ef3_2.conda + sha256: 7af93030f4407f076dce181062360efac2cd54dce863b5d7765287a6f5382537 + md5: a5ab74c5bd158c3d5532b66d8d83d907 + depends: + - libgcc-ng >=12 + - libpng >=1.6.39,<1.7.0a0 + - libzlib >=1.2.13,<2.0.0a0 + arch: aarch64 + platform: linux + license: GPL-2.0-only OR FTL + purls: [] + size: 642092 + timestamp: 1694617858496 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/freetype-2.12.1-hadb7bae_2.conda + sha256: 791673127e037a2dc0eebe122dc4f904cb3f6e635bb888f42cbe1a76b48748d9 + md5: e6085e516a3e304ce41a8ee08b9b89ad + depends: + - libpng >=1.6.39,<1.7.0a0 + - libzlib >=1.2.13,<2.0.0a0 + arch: arm64 + platform: osx + license: GPL-2.0-only OR FTL + purls: [] + size: 596430 + timestamp: 1694616332835 +- conda: https://conda.anaconda.org/conda-forge/linux-64/frozenlist-1.5.0-py312h178313f_1.conda + sha256: 501e20626798b6d7f130f4db0fb02c0385d8f4c11ca525925602a4208afb343f + md5: fb986e1c089021979dc79606af78ef8f + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/frozenlist?source=hash-mapping + size: 60939 + timestamp: 1737645356438 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/frozenlist-1.5.0-py312hcc812fe_1.conda + sha256: 84895c5e207e0cb2044f3607fb36b82eb8cb45f0a009d03dc04c777ed975757d + md5: 9090bf5c43e8011fb2e9a82a1db20cc3 + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/frozenlist?source=hash-mapping + size: 60472 + timestamp: 1737645511278 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/frozenlist-1.5.0-py312h998013c_1.conda + sha256: d503ac8c050abdbd129253973f23be34944978d510de78ef5a3e6aa1e3d9552d + md5: 5eb3715c7e3fa9b533361375bfefe6ee + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/frozenlist?source=hash-mapping + size: 57256 + timestamp: 1737645503377 +- conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.12.0-pyhd8ed1ab_0.conda + sha256: 3320970c4604989eadf908397a9475f9e6a96a773c185915111399cbfbe47817 + md5: e041ad4c43ab5e10c74587f95378ebc7 + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/fsspec?source=hash-mapping + size: 137756 + timestamp: 1734650349242 +- conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2025.2.0-pyhd8ed1ab_0.conda + sha256: 7433b8469074985b651693778ec6f03d2a23fad9919a515e3b8545996b5e721a + md5: d9ea16b71920b03beafc17fcca16df90 + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/fsspec?source=hash-mapping + size: 138186 + timestamp: 1738501352608 +- conda: https://conda.anaconda.org/conda-forge/linux-64/gflags-2.2.2-h5888daf_1005.conda + sha256: 6c33bf0c4d8f418546ba9c250db4e4221040936aef8956353bc764d4877bc39a + md5: d411fc29e338efb48c5fd4576d71d881 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 119654 + timestamp: 1726600001928 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gflags-2.2.2-h5ad3122_1005.conda + sha256: 28fe6b40b20454106d5e4ef6947cf298c13cc72a46347bbc49b563cd3a463bfa + md5: 4ff634d515abbf664774b5e1168a9744 + depends: + - libgcc >=13 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 106638 + timestamp: 1726599967617 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/gflags-2.2.2-hf9b8971_1005.conda + sha256: fd56ed8a1dab72ab90d8a8929b6f916a6d9220ca297ff077f8f04c5ed3408e20 + md5: 57a511a5905caa37540eb914dfcbf1fb + depends: + - __osx >=11.0 + - libcxx >=17 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 82090 + timestamp: 1726600145480 +- conda: https://conda.anaconda.org/conda-forge/linux-64/glog-0.7.1-hbabe93e_0.conda + sha256: dc824dc1d0aa358e28da2ecbbb9f03d932d976c8dca11214aa1dcdfcbd054ba2 + md5: ff862eebdfeb2fd048ae9dc92510baca + depends: + - gflags >=2.2.2,<2.3.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 143452 + timestamp: 1718284177264 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/glog-0.7.1-h468a4a4_0.conda + sha256: 920795d4f775a9f47e91c2223e64847f0b212b3fedc56c137c5889e32efe8ba0 + md5: 08940a32c6ced3703d1412dd37df4f62 + depends: + - gflags >=2.2.2,<2.3.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 145811 + timestamp: 1718284208668 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/glog-0.7.1-heb240a5_0.conda + sha256: 9fc77de416953aa959039db72bc41bfa4600ae3ff84acad04a7d0c1ab9552602 + md5: fef68d0a95aa5b84b5c1a4f6f3bf40e1 + depends: + - __osx >=11.0 + - gflags >=2.2.2,<2.3.0a0 + - libcxx >=16 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 112215 + timestamp: 1718284365403 +- conda: https://conda.anaconda.org/conda-forge/linux-64/gmp-6.3.0-hac33072_2.conda + sha256: 309cf4f04fec0c31b6771a5809a1909b4b3154a2208f52351e1ada006f4c750c + md5: c94a5994ef49749880a8139cf9afcbe1 + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: GPL-2.0-or-later OR LGPL-3.0-or-later + purls: [] + size: 460055 + timestamp: 1718980856608 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/gmp-6.3.0-h7bae524_2.conda + sha256: 76e222e072d61c840f64a44e0580c2503562b009090f55aa45053bf1ccb385dd + md5: eed7278dfbab727b56f2c0b64330814b + depends: + - __osx >=11.0 + - libcxx >=16 + arch: arm64 + platform: osx + license: GPL-2.0-or-later OR LGPL-3.0-or-later + purls: [] + size: 365188 + timestamp: 1718981343258 +- conda: https://conda.anaconda.org/conda-forge/linux-64/gmpy2-2.1.5-py312h7201bc8_3.conda + sha256: addd0bc226ca86c11f1223ab322d12b67501c2b3d93749bdab2068ccaedd8ef0 + md5: 673ef4d6611f5b4ca7b5c1f8c65a38dc + depends: + - __glibc >=2.17,<3.0.a0 + - gmp >=6.3.0,<7.0a0 + - libgcc >=13 + - mpc >=1.3.1,<2.0a0 + - mpfr >=4.2.1,<5.0a0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: LGPL-3.0-or-later + license_family: LGPL + purls: + - pkg:pypi/gmpy2?source=hash-mapping + size: 209631 + timestamp: 1733462668219 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/gmpy2-2.1.5-py312h524cf62_3.conda + sha256: 0ea196e4b706321951af1eebdb6a4eb9307faa1fd5361bcf49acb150e71774f7 + md5: ab7a5d10c7b4e249a9fe7bc280909803 + depends: + - __osx >=11.0 + - gmp >=6.3.0,<7.0a0 + - mpc >=1.3.1,<2.0a0 + - mpfr >=4.2.1,<5.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: LGPL-3.0-or-later + license_family: LGPL + purls: + - pkg:pypi/gmpy2?source=hash-mapping + size: 147983 + timestamp: 1733462785197 +- conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda + sha256: 0aa1cdc67a9fe75ea95b5644b734a756200d6ec9d0dff66530aec3d1c1e9df75 + md5: b4754fb1bdcb70c8fd54f918301582c6 + depends: + - hpack >=4.1,<5 + - hyperframe >=6.1,<7 + - python >=3.9 + license: MIT + license_family: MIT + purls: + - pkg:pypi/h2?source=hash-mapping + size: 53888 + timestamp: 1738578623567 +- conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda + sha256: 6ad78a180576c706aabeb5b4c8ceb97c0cb25f1e112d76495bff23e3779948ba + md5: 0a802cb9888dd14eeefc611f05c40b6e + depends: + - python >=3.9 + license: MIT + license_family: MIT + purls: + - pkg:pypi/hpack?source=hash-mapping + size: 30731 + timestamp: 1737618390337 +- conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.24.7-pyhd8ed1ab_0.conda + sha256: 000b32aa2b960fe1e39aecdd3e5b0eea0f9b1e9d622188c7bd8a6f86c244233d + md5: 9a8208360743187a5eabc2b2b05cb74f + depends: + - filelock + - fsspec >=2023.5.0 + - packaging >=20.9 + - python >=3.8 + - pyyaml >=5.1 + - requests + - tqdm >=4.42.1 + - typing-extensions >=3.7.4.3 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/huggingface-hub?source=hash-mapping + size: 259655 + timestamp: 1726154689209 +- conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda + sha256: 77af6f5fe8b62ca07d09ac60127a30d9069fdc3c68d6b256754d0ffb1f7779f8 + md5: 8e6923fc12f1fe8f8c4e5c9f343256ac + depends: + - python >=3.9 + license: MIT + license_family: MIT + purls: + - pkg:pypi/hyperframe?source=hash-mapping + size: 17397 + timestamp: 1737618427549 +- conda: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda + sha256: 71e750d509f5fa3421087ba88ef9a7b9be11c53174af3aa4d06aff4c18b38e8e + md5: 8b189310083baabfb622af68fd9d3ae3 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 12129203 + timestamp: 1720853576813 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda + sha256: 813298f2e54ef087dbfc9cc2e56e08ded41de65cff34c639cc8ba4e27e4540c9 + md5: 268203e8b983fddb6412b36f2024e75c + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 12282786 + timestamp: 1720853454991 +- conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda + sha256: d7a472c9fd479e2e8dcb83fb8d433fce971ea369d704ece380e876f9c3494e87 + md5: 39a4f67be3286c86d696df570b1201b7 + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/idna?source=hash-mapping + size: 49765 + timestamp: 1733211921194 +- conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + sha256: 598951ebdb23e25e4cec4bbff0ae369cec65ead80b50bc08b441d8e54de5cf03 + md5: f4b39bf00c69f56ac01e020ebfac066c + depends: + - python >=3.9 + - zipp >=0.5 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/importlib-metadata?source=compressed-mapping + size: 29141 + timestamp: 1737420302391 +- pypi: https://download.pytorch.org/whl/Jinja2-3.1.4-py3-none-any.whl#sha256=bc5dd2abb727a5319567b7a813e6a2e7318c39f4f487cfe6c89c6f9c7d25197d + name: jinja2 + version: 3.1.4 + sha256: bc5dd2abb727a5319567b7a813e6a2e7318c39f4f487cfe6c89c6f9c7d25197d + requires_dist: + - markupsafe>=2.0 + - babel>=2.7 ; extra == 'i18n' + requires_python: '>=3.7' +- conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.5-pyhd8ed1ab_0.conda + sha256: 98977694b9ecaa3218662f843425f39501f81973c450f995eec68f1803ed71c3 + md5: 2752a6ed44105bfb18c9bef1177d9dcd + depends: + - markupsafe >=2.0 + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/jinja2?source=hash-mapping + size: 112561 + timestamp: 1734824044952 +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + sha256: 19d8bd5bb2fde910ec59e081eeb59529491995ce0d653a5209366611023a0b3a + md5: 4ebae00eae9705b0c3d6d1018a81d047 + depends: + - importlib-metadata >=4.8.3 + - jupyter_core >=4.12,!=5.0.* + - python >=3.9 + - python-dateutil >=2.8.2 + - pyzmq >=23.0 + - tornado >=6.2 + - traitlets >=5.3 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/jupyter-client?source=hash-mapping + size: 106342 + timestamp: 1733441040958 +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + sha256: 732b1e8536bc22a5a174baa79842d79db2f4956d90293dd82dc1b3f6099bcccd + md5: 0a2980dada0dd7fd0998f0342308b1b1 + depends: + - __unix + - platformdirs >=2.5 + - python >=3.8 + - traitlets >=5.3 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/jupyter-core?source=hash-mapping + size: 57671 + timestamp: 1727163547058 +- conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 + sha256: 150c05a6e538610ca7c43beb3a40d65c90537497a4f6a5f4d15ec0451b6f5ebb + md5: 30186d27e2c9fa62b45fb1476b7200e3 + depends: + - libgcc-ng >=10.3.0 + arch: x86_64 + platform: linux + license: LGPL-2.1-or-later + purls: [] + size: 117831 + timestamp: 1646151697040 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/keyutils-1.6.1-h4e544f5_0.tar.bz2 + sha256: 6d4233d97a9b38acbb26e1268bcf8c10a8e79c2aed7e5a385ec3769967e3e65b + md5: 1f24853e59c68892452ef94ddd8afd4b + depends: + - libgcc-ng >=10.3.0 + arch: aarch64 + platform: linux + license: LGPL-2.1-or-later + purls: [] + size: 112327 + timestamp: 1646166857935 +- conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda + sha256: 99df692f7a8a5c27cd14b5fb1374ee55e756631b9c3d659ed3ee60830249b238 + md5: 3f43953b7d3fb3aaa1d0d0723d91e368 + depends: + - keyutils >=1.6.1,<2.0a0 + - libedit >=3.1.20191231,<3.2.0a0 + - libedit >=3.1.20191231,<4.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - openssl >=3.3.1,<4.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 1370023 + timestamp: 1719463201255 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/krb5-1.21.3-h50a48e9_0.conda + sha256: 0ec272afcf7ea7fbf007e07a3b4678384b7da4047348107b2ae02630a570a815 + md5: 29c10432a2ca1472b53f299ffb2ffa37 + depends: + - keyutils >=1.6.1,<2.0a0 + - libedit >=3.1.20191231,<3.2.0a0 + - libedit >=3.1.20191231,<4.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - openssl >=3.3.1,<4.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 1474620 + timestamp: 1719463205834 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda + sha256: 4442f957c3c77d69d9da3521268cad5d54c9033f1a73f99cde0a3658937b159b + md5: c6dc8a0fdec13a0565936655c33069a1 + depends: + - __osx >=11.0 + - libcxx >=16 + - libedit >=3.1.20191231,<3.2.0a0 + - libedit >=3.1.20191231,<4.0a0 + - openssl >=3.3.1,<4.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 1155530 + timestamp: 1719463474401 +- conda: https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.17-h717163a_0.conda + sha256: d6a61830a354da022eae93fa896d0991385a875c6bba53c82263a289deda9db8 + md5: 000e85703f0fd9594c81710dd5066471 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libtiff >=4.7.0,<4.8.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 248046 + timestamp: 1739160907615 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lcms2-2.17-hc88f144_0.conda + sha256: 47cf6a4780dc41caa9bc95f020eed485b07010c9ccc85e9ef44b538fedb5341d + md5: b87b1abd2542cf65a00ad2e2461a3083 + depends: + - libgcc >=13 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libtiff >=4.7.0,<4.8.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 287007 + timestamp: 1739161069194 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.17-h7eeda09_0.conda + sha256: 310a62c2f074ebd5aa43b3cd4b00d46385ce680fa2132ecee255a200e2d2f15f + md5: 92a61fd30b19ebd5c1621a5bfe6d8b5f + depends: + - __osx >=11.0 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libtiff >=4.7.0,<4.8.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 212125 + timestamp: 1739161108467 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_4.conda + sha256: db73f38155d901a610b2320525b9dd3b31e4949215c870685fd92ea61b5ce472 + md5: 01f8d123c96816249efd255a31ad7712 + depends: + - __glibc >=2.17,<3.0.a0 + constrains: + - binutils_impl_linux-64 2.43 + arch: x86_64 + platform: linux + license: GPL-3.0-only + license_family: GPL + purls: [] + size: 671240 + timestamp: 1740155456116 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_4.conda + sha256: 016832a70b0aa97e1c4e47e23c00b0c34def679de25146736df353199f684f0d + md5: 80c9ad5e05e91bb6c0967af3880c9742 + constrains: + - binutils_impl_linux-aarch64 2.43 + arch: aarch64 + platform: linux + license: GPL-3.0-only + license_family: GPL + purls: [] + size: 699058 + timestamp: 1740155620594 +- conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 + sha256: cb55f36dcd898203927133280ae1dc643368af041a48bcf7c026acb7c47b0c12 + md5: 76bbff344f0134279f225174e9064c8f + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 281798 + timestamp: 1657977462600 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.0.0-h4de3ea5_0.tar.bz2 + sha256: 2d09ef9b7796d83364957e420b41c32d94e628c3f0520b61c332518a7b5cd586 + md5: 1a0ffc65e03ce81559dbcb0695ad1476 + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 262096 + timestamp: 1657978241894 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 + sha256: 6f068bb53dfb6147d3147d981bb851bb5477e769407ad4e6a68edf482fdcb958 + md5: de462d5aacda3b30721b512c5da4e742 + depends: + - libcxx >=13.0.1 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 215721 + timestamp: 1657977558796 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda + sha256: 143a586aa67d50622ef703de57b9d43f44945836d6568e0e7aa174bd8c45e0d4 + md5: 488f260ccda0afaf08acb286db439c2f + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + constrains: + - libabseil-static =20240722.0=cxx17* + - abseil-cpp =20240722.0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 1311599 + timestamp: 1736008414161 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h18dbdb1_4.conda + sha256: bb6c5fb3b8de5f90735c5252b57efb3c268ee222c755569dac18065f05147670 + md5: 633b9fe454ffea2aaf29e191d946a83b + depends: + - libgcc >=13 + - libstdcxx >=13 + constrains: + - abseil-cpp =20240722.0 + - libabseil-static =20240722.0=cxx17* + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 1334844 + timestamp: 1736008472455 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_h07bc746_4.conda + sha256: 05fa5e5e908962b9c5aba95f962e2ca81d9599c4715aebe5e4ddb72b309d1770 + md5: c2d95bd7aa8d564a9bd7eca5e571a5b3 + depends: + - __osx >=11.0 + - libcxx >=18 + constrains: + - libabseil-static =20240722.0=cxx17* + - abseil-cpp =20240722.0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 1178260 + timestamp: 1736008642885 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-19.0.1-hfa2a6e7_0_cpu.conda + sha256: 7b1f61045b37266989023a007d6331875062bb658068a6e6ab49720495ca3543 + md5: 11b712ed1316c98592f6bae7ccfaa86c + depends: + - __glibc >=2.17,<3.0.a0 + - aws-crt-cpp >=0.29.9,<0.29.10.0a0 + - aws-sdk-cpp >=1.11.489,<1.11.490.0a0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - azure-identity-cpp >=1.10.0,<1.10.1.0a0 + - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 + - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 + - bzip2 >=1.0.8,<2.0a0 + - glog >=0.7.1,<0.8.0a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libbrotlidec >=1.1.0,<1.2.0a0 + - libbrotlienc >=1.1.0,<1.2.0a0 + - libgcc >=13 + - libgoogle-cloud >=2.35.0,<2.36.0a0 + - libgoogle-cloud-storage >=2.35.0,<2.36.0a0 + - libopentelemetry-cpp >=1.18.0,<1.19.0a0 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libre2-11 >=2024.7.2 + - libstdcxx >=13 + - libutf8proc >=2.10.0,<2.11.0a0 + - libzlib >=1.3.1,<2.0a0 + - lz4-c >=1.10.0,<1.11.0a0 + - orc >=2.0.3,<2.0.4.0a0 + - re2 + - snappy >=1.2.1,<1.3.0a0 + - zstd >=1.5.6,<1.6.0a0 + constrains: + - arrow-cpp <0.0a0 + - parquet-cpp <0.0a0 + - apache-arrow-proc =*=cpu + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 8967810 + timestamp: 1739768880886 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-19.0.1-h36213f4_0_cpu.conda + sha256: 3f141e56555676b4a9fd885a0a7452daa2530eb65cfbba1271f7a07457a82003 + md5: cfeb98942a3ef36c0bb2b09b084349da + depends: + - aws-crt-cpp >=0.29.9,<0.29.10.0a0 + - aws-sdk-cpp >=1.11.489,<1.11.490.0a0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - azure-identity-cpp >=1.10.0,<1.10.1.0a0 + - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 + - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 + - bzip2 >=1.0.8,<2.0a0 + - glog >=0.7.1,<0.8.0a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libbrotlidec >=1.1.0,<1.2.0a0 + - libbrotlienc >=1.1.0,<1.2.0a0 + - libgcc >=13 + - libgoogle-cloud >=2.35.0,<2.36.0a0 + - libgoogle-cloud-storage >=2.35.0,<2.36.0a0 + - libopentelemetry-cpp >=1.18.0,<1.19.0a0 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libre2-11 >=2024.7.2 + - libstdcxx >=13 + - libutf8proc >=2.10.0,<2.11.0a0 + - libzlib >=1.3.1,<2.0a0 + - lz4-c >=1.10.0,<1.11.0a0 + - orc >=2.0.3,<2.0.4.0a0 + - re2 + - snappy >=1.2.1,<1.3.0a0 + - zstd >=1.5.6,<1.6.0a0 + constrains: + - apache-arrow-proc =*=cpu + - parquet-cpp <0.0a0 + - arrow-cpp <0.0a0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 8215209 + timestamp: 1739770301694 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-19.0.1-h0945df6_0_cpu.conda + sha256: e34199bea635b1bf9f3819205b291f714ddd47db1bf6e6d10a4eb61da7330214 + md5: 21bcb04df4b1a99721199c5aa6273f53 + depends: + - __osx >=11.0 + - aws-crt-cpp >=0.29.9,<0.29.10.0a0 + - aws-sdk-cpp >=1.11.489,<1.11.490.0a0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - azure-identity-cpp >=1.10.0,<1.10.1.0a0 + - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 + - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 + - bzip2 >=1.0.8,<2.0a0 + - glog >=0.7.1,<0.8.0a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libbrotlidec >=1.1.0,<1.2.0a0 + - libbrotlienc >=1.1.0,<1.2.0a0 + - libcxx >=18 + - libgoogle-cloud >=2.35.0,<2.36.0a0 + - libgoogle-cloud-storage >=2.35.0,<2.36.0a0 + - libopentelemetry-cpp >=1.18.0,<1.19.0a0 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libre2-11 >=2024.7.2 + - libutf8proc >=2.10.0,<2.11.0a0 + - libzlib >=1.3.1,<2.0a0 + - lz4-c >=1.10.0,<1.11.0a0 + - orc >=2.0.3,<2.0.4.0a0 + - re2 + - snappy >=1.2.1,<1.3.0a0 + - zstd >=1.5.6,<1.6.0a0 + constrains: + - apache-arrow-proc =*=cpu + - arrow-cpp <0.0a0 + - parquet-cpp <0.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 5571369 + timestamp: 1739767084108 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-19.0.1-hcb10f89_0_cpu.conda + sha256: 9a3c38a8f1516fe5b7801d0407ff704efd53955ebd63f7fbc439ec3b563d19cc + md5: 0d63e2dea06c44c9d2c8be3e7e38eea9 + depends: + - __glibc >=2.17,<3.0.a0 + - libarrow 19.0.1 hfa2a6e7_0_cpu + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 638054 + timestamp: 1739768924910 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-19.0.1-h3b568fd_0_cpu.conda + sha256: 3260e26ca9e1146befeb9587ba80610f9d9591365c82f7cd8756f14a9a8e58c2 + md5: 7b270af126ffdec0153d8599370f0430 + depends: + - libarrow 19.0.1 h36213f4_0_cpu + - libgcc >=13 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 602400 + timestamp: 1739770383854 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-19.0.1-hf07054f_0_cpu.conda + sha256: b15f5fab53d941917143bb1cf22c5a0eacffb8ff2a010ee2e909afab3821d5f9 + md5: 9213d80ffba1921b86bfdf5fdd2c10c4 + depends: + - __osx >=11.0 + - libarrow 19.0.1 h0945df6_0_cpu + - libcxx >=18 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 500147 + timestamp: 1739767179329 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-19.0.1-hcb10f89_0_cpu.conda + sha256: f756208d787db50b6be68210cb9eec3644b8291a8a353bb2071ea4451bfc1412 + md5: ec52b3b990be399f4267a9acabb73070 + depends: + - __glibc >=2.17,<3.0.a0 + - libarrow 19.0.1 hfa2a6e7_0_cpu + - libarrow-acero 19.0.1 hcb10f89_0_cpu + - libgcc >=13 + - libparquet 19.0.1 h081d1f1_0_cpu + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 604500 + timestamp: 1739769034226 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-19.0.1-h3b568fd_0_cpu.conda + sha256: 76327753ed311ae1d1ef3f8f7067888e01d3c69e5198a9108052d74e2f91d03a + md5: 8a025a60dfcfa3d6cf100395f64de8ba + depends: + - libarrow 19.0.1 h36213f4_0_cpu + - libarrow-acero 19.0.1 h3b568fd_0_cpu + - libgcc >=13 + - libparquet 19.0.1 hfc78867_0_cpu + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 581121 + timestamp: 1739770488033 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-19.0.1-hf07054f_0_cpu.conda + sha256: 21fcb9a09e5872b4f1d483d8d950a1804ccb6804881881ca6fe6c5968a5e4dbc + md5: 0695382a64b393765b4bc9e1ee99250c + depends: + - __osx >=11.0 + - libarrow 19.0.1 h0945df6_0_cpu + - libarrow-acero 19.0.1 hf07054f_0_cpu + - libcxx >=18 + - libparquet 19.0.1 h636d7b7_0_cpu + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 501234 + timestamp: 1739768239766 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-19.0.1-h08228c5_0_cpu.conda + sha256: e0b3ed06ce74c6a083dab59fb3059fdbc40fc71ff94ce470ca0a7c7ffe8d0317 + md5: 792e2359bb93513324326cbe3ee4ebdd + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libarrow 19.0.1 hfa2a6e7_0_cpu + - libarrow-acero 19.0.1 hcb10f89_0_cpu + - libarrow-dataset 19.0.1 hcb10f89_0_cpu + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 523313 + timestamp: 1739769085090 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-19.0.1-h1e9d426_0_cpu.conda + sha256: c1085eb113a80691e3d76400c91b15dc8c0462d533f8c4ca4c33d5e9fe9cffef + md5: 1e34ad733a8c404ac0f652a942192636 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libarrow 19.0.1 h36213f4_0_cpu + - libarrow-acero 19.0.1 h3b568fd_0_cpu + - libarrow-dataset 19.0.1 h3b568fd_0_cpu + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 516114 + timestamp: 1739770543593 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-19.0.1-h4239455_0_cpu.conda + sha256: 0b5c0839102b396f8b0ba376189562a727ebbed3c6bdab74aaf56227ee45cb73 + md5: 2893dd55f7804b9106126c2f00712ec2 + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libarrow 19.0.1 h0945df6_0_cpu + - libarrow-acero 19.0.1 hf07054f_0_cpu + - libarrow-dataset 19.0.1 hf07054f_0_cpu + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 450361 + timestamp: 1739768396169 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-16_linux64_mkl.tar.bz2 + build_number: 16 + sha256: 24e656f13b402b6fceb88df386768445ab9beb657d451a8e5a88d4b3380cf7a4 + md5: 85f61af03fd291dae33150ffe89dc09a + depends: + - mkl >=2022.1.0,<2023.0a0 + constrains: + - liblapack 3.9.0 16_linux64_mkl + - liblapacke 3.9.0 16_linux64_mkl + - libcblas 3.9.0 16_linux64_mkl + - blas * mkl + - mkl <2025 + arch: x86_64 + platform: linux + track_features: + - blas_mkl + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 13102 + timestamp: 1660094562739 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-31_h1a9f1db_openblas.conda + build_number: 31 + sha256: 67c9c81dd0444ecc712124034d9f74186ca82fd770b3df46b1a68564461c6a1a + md5: 48bd5bf15ccf3e409840be9caafc0ad5 + depends: + - libopenblas >=0.3.29,<0.3.30.0a0 + - libopenblas >=0.3.29,<1.0a0 + constrains: + - liblapack =3.9.0=31*_openblas + - blas =2.131=openblas + - libcblas =3.9.0=31*_openblas + - mkl <2025 + - liblapacke =3.9.0=31*_openblas + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 16915 + timestamp: 1740087911042 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-19_osxarm64_openblas.conda + build_number: 19 + sha256: 51e78e3c9fa57f3fec12936b760928715ba0ab5253d02815202f9ec4c2c9255d + md5: f50b1fd98593278e18319653cff9c475 + depends: + - libopenblas >=0.3.24,<0.3.25.0a0 + - libopenblas >=0.3.24,<1.0a0 + constrains: + - libcblas 3.9.0 19_osxarm64_openblas + - liblapack 3.9.0 19_osxarm64_openblas + - blas * openblas + - liblapacke 3.9.0 19_osxarm64_openblas + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 14817 + timestamp: 1697484577887 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hb9d3cd8_2.conda + sha256: d9db2de60ea917298e658143354a530e9ca5f9c63471c65cf47ab39fd2f429e3 + md5: 41b599ed2b02abcfdd84302bff174b23 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 68851 + timestamp: 1725267660471 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlicommon-1.1.0-h86ecc28_2.conda + sha256: 64112af913974b309d67fd342e065fd184347043a6387933b3db796778a28019 + md5: 3ee026955c688f551a9999840cff4c67 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 68982 + timestamp: 1725267774142 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.1.0-hd74edd7_2.conda + sha256: 839dacb741bdbb25e58f42088a2001b649f4f12195aeb700b5ddfca3267749e5 + md5: d0bf1dff146b799b319ea0434b93f779 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 68426 + timestamp: 1725267943211 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hb9d3cd8_2.conda + sha256: 2892d512cad096cb03f1b66361deeab58b64e15ba525d6592bb6d609e7045edf + md5: 9566f0bd264fbd463002e759b8a82401 + depends: + - __glibc >=2.17,<3.0.a0 + - libbrotlicommon 1.1.0 hb9d3cd8_2 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 32696 + timestamp: 1725267669305 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlidec-1.1.0-h86ecc28_2.conda + sha256: 94c808d9ca3eb6ef30976a9843e27f027cf3a1e84e8c6835cbb696b7bdb35c4c + md5: e64d0f3b59c7c4047446b97a8624a72d + depends: + - libbrotlicommon 1.1.0 h86ecc28_2 + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 31708 + timestamp: 1725267783442 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.1.0-hd74edd7_2.conda + sha256: 6c6862eb274f21a7c0b60e5345467a12e6dda8b9af4438c66d496a2c1a538264 + md5: 55e66e68ce55523a6811633dd1ac74e2 + depends: + - __osx >=11.0 + - libbrotlicommon 1.1.0 hd74edd7_2 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 28378 + timestamp: 1725267980316 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.1.0-hb9d3cd8_2.conda + sha256: 779f58174e99de3600e939fa46eddb453ec5d3c60bb46cdaa8b4c127224dbf29 + md5: 06f70867945ea6a84d35836af780f1de + depends: + - __glibc >=2.17,<3.0.a0 + - libbrotlicommon 1.1.0 hb9d3cd8_2 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 281750 + timestamp: 1725267679782 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlienc-1.1.0-h86ecc28_2.conda + sha256: 41385e17bc73834b235c5aff12d6d82eccb534acb3c30986996f9dad92a0d54c + md5: 0e9bd365480c72b25c71a448257b537d + depends: + - libbrotlicommon 1.1.0 h86ecc28_2 + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 290230 + timestamp: 1725267792697 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlienc-1.1.0-hd74edd7_2.conda + sha256: eeb1eb0d58b9d02bc1b98dc0a058f104ab168eb2f7d1c7bfa0570a12cfcdb7b7 + md5: 4f3a434504c67b2c42565c0b85c1885c + depends: + - __osx >=11.0 + - libbrotlicommon 1.1.0 hd74edd7_2 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 279644 + timestamp: 1725268003553 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-16_linux64_mkl.tar.bz2 + build_number: 16 + sha256: 892ba10508f22310ccfe748df1fd3b6c7f20e7b6f6b79e69ed337863551c1bd8 + md5: 361bf757b95488de76c4f123805742d3 + depends: + - libblas 3.9.0 16_linux64_mkl + constrains: + - liblapack 3.9.0 16_linux64_mkl + - liblapacke 3.9.0 16_linux64_mkl + - blas * mkl + - mkl <2025 + arch: x86_64 + platform: linux + track_features: + - blas_mkl + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 12791 + timestamp: 1660094570921 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-31_hab92f65_openblas.conda + build_number: 31 + sha256: f0457a1d2982f0a28bfbadaa02621677c324e88f7c8198c24fb3e3214c468dba + md5: 6b81dbae56a519f1ec2f25e0ee2f4334 + depends: + - libblas 3.9.0 31_h1a9f1db_openblas + constrains: + - liblapack =3.9.0=31*_openblas + - blas =2.131=openblas + - liblapacke =3.9.0=31*_openblas + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 16824 + timestamp: 1740087917500 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-19_osxarm64_openblas.conda + build_number: 19 + sha256: 19b1c5e3ddd383ec14540336f4704938218d3c1db4707ae10d5357afb22cccc1 + md5: 5460a8d1beffd7f63994d891e6a20da4 + depends: + - libblas 3.9.0 19_osxarm64_openblas + constrains: + - liblapack 3.9.0 19_osxarm64_openblas + - blas * openblas + - liblapacke 3.9.0 19_osxarm64_openblas + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 14738 + timestamp: 1697484590682 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcrc32c-1.1.2-h9c3ff4c_0.tar.bz2 + sha256: fd1d153962764433fe6233f34a72cdeed5dcf8a883a85769e8295ce940b5b0c5 + md5: c965a5aa0d5c1c37ffc62dff36e28400 + depends: + - libgcc-ng >=9.4.0 + - libstdcxx-ng >=9.4.0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 20440 + timestamp: 1633683576494 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcrc32c-1.1.2-h01db608_0.tar.bz2 + sha256: b8b8c57a87da86b3ea24280fd6aa8efaf92f4e684b606bf2db5d3cb06ffbe2ea + md5: 268ee639c17ada0002fb04dd21816cc2 + depends: + - libgcc-ng >=9.4.0 + - libstdcxx-ng >=9.4.0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 18669 + timestamp: 1633683724891 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcrc32c-1.1.2-hbdafb3b_0.tar.bz2 + sha256: 58477b67cc719060b5b069ba57161e20ba69b8695d154a719cb4b60caf577929 + md5: 32bd82a6a625ea6ce090a81c3d34edeb + depends: + - libcxx >=11.1.0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 18765 + timestamp: 1633683992603 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcublas-12.4.5.8-he02047a_2.conda + sha256: 168e664423e875f7107697dfa7935399675872ea8abffa92621db98007258d66 + md5: d446adae085aa1ff37c44b69988a6f06 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-nvrtc + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 240665617 + timestamp: 1715711552741 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcufft-11.2.1.3-he02047a_2.conda + sha256: 242e1ed210a85fc0dc2a4e86bf0b75120f1768ab66497502c5e6d69e801bf9dc + md5: d2641a67c207946ef96f1328c4a8e8ed + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 174980358 + timestamp: 1715711515585 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcufile-1.9.1.3-he02047a_2.conda + sha256: 7fa7a608d52064b724241e4026f0e0cc244c6f725623e2c26c810be99822fa28 + md5: a051267bcb1912467c81d802a7d3465e + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 924329 + timestamp: 1715720836466 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcurand-10.3.5.147-he02047a_2.conda + sha256: 7db821fc8f566dbb8d4e40dae62edb07d638db8c028d677a0063ece66872d19c + md5: 9c4886d513fd477df88d411cd274c202 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 41590169 + timestamp: 1715711553620 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.12.1-h332b0f4_0.conda + sha256: 2ebc3039af29269e4cdb858fca36265e5e400c1125a4bcd84ae73a596e0e76ca + md5: 45e9dc4e7b25e2841deb392be085500e + depends: + - __glibc >=2.17,<3.0.a0 + - krb5 >=1.21.3,<1.22.0a0 + - libgcc >=13 + - libnghttp2 >=1.64.0,<2.0a0 + - libssh2 >=1.11.1,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.1,<4.0a0 + - zstd >=1.5.6,<1.6.0a0 + arch: x86_64 + platform: linux + license: curl + license_family: MIT + purls: [] + size: 426675 + timestamp: 1739512336799 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcurl-8.12.1-h6702fde_0.conda + sha256: a00458a5163b9552897cdac08b273deb1b3add09e05599dfbacf0606c3b1f41f + md5: 14c340cb70867cf7953d2632f89270b5 + depends: + - krb5 >=1.21.3,<1.22.0a0 + - libgcc >=13 + - libnghttp2 >=1.64.0,<2.0a0 + - libssh2 >=1.11.1,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.1,<4.0a0 + - zstd >=1.5.6,<1.6.0a0 + arch: aarch64 + platform: linux + license: curl + license_family: MIT + purls: [] + size: 444118 + timestamp: 1739512317570 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.12.1-h73640d1_0.conda + sha256: 0bddd1791eb0602c8c6aa465802e9d4526d3ec1251d900b209e767753565d5df + md5: 105f0cceef753644912f42e11c1ae9cf + depends: + - __osx >=11.0 + - krb5 >=1.21.3,<1.22.0a0 + - libnghttp2 >=1.64.0,<2.0a0 + - libssh2 >=1.11.1,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.1,<4.0a0 + - zstd >=1.5.6,<1.6.0a0 + arch: arm64 + platform: osx + license: curl + license_family: MIT + purls: [] + size: 387893 + timestamp: 1739512564746 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcusolver-11.6.1.9-he02047a_2.conda + sha256: df4f8a94bffb59dc3da28fb5a892c1ef2553f8afd49f141d3e2da8c92f276a56 + md5: 9f6877f8936be962f598db5e9b8efc51 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libcublas >=12.4.5.8,<12.5.0a0 + - libcusparse >=12.3.1.170,<12.4.0a0 + - libgcc-ng >=12 + - libnvjitlink >=12.4.127,<12.5.0a0 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 81594879 + timestamp: 1715711788074 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcusparse-12.3.1.170-he02047a_2.conda + sha256: f2254e41c93a8c3529690c19350556708182ef699ca658c6554eeb7eb4b8c3de + md5: 1c4c7ff54dc5b947f2ab8f5ff8a28dae + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libnvjitlink >=12.4.127,<12.5.0a0 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 117818451 + timestamp: 1715711610677 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda + sha256: 776092346da87a2a23502e14d91eb0c32699c4a1522b7331537bd1c3751dcff5 + md5: 5b3e1610ff8bd5443476b91d618f5b77 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + purls: [] + size: 523505 + timestamp: 1736877862502 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.23-h4ddbbb0_0.conda + sha256: 511d801626d02f4247a04fff957cc6e9ec4cc7e8622bd9acd076bcdc5de5fe66 + md5: 8dfae1d2e74767e9ce36d5fa0d8605db + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 72255 + timestamp: 1734373823254 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libdeflate-1.23-h5e3c512_0.conda + sha256: 959419d87cd2b789a9055db95704c614f31aeb70bef7949fa2f734122a3a2863 + md5: 7e7ca2607b11b180120cefc2354fc0cb + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 69862 + timestamp: 1734373858306 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.23-hec38601_0.conda + sha256: 887c02deaed6d583459eba6367023e36d8761085b2f7126e389424f57155da53 + md5: 1d8b9588be14e71df38c525767a1ac30 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 54132 + timestamp: 1734373971372 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda + sha256: d789471216e7aba3c184cd054ed61ce3f6dac6f87a50ec69291b9297f8c18724 + md5: c277e0a4d549b03ac1e9d6cbbe3d017b + depends: + - ncurses + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - ncurses >=6.5,<7.0a0 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 134676 + timestamp: 1738479519902 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20250104-pl5321h976ea20_0.conda + sha256: c0b27546aa3a23d47919226b3a1635fccdb4f24b94e72e206a751b33f46fd8d6 + md5: fb640d776fc92b682a14e001980825b1 + depends: + - ncurses + - libgcc >=13 + - ncurses >=6.5,<7.0a0 + arch: aarch64 + platform: linux + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 148125 + timestamp: 1738479808948 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda + sha256: 66aa216a403de0bb0c1340a88d1a06adaff66bae2cfd196731aa24db9859d631 + md5: 44083d2d2c2025afca315c7a172eab2b + depends: + - ncurses + - __osx >=11.0 + - ncurses >=6.5,<7.0a0 + arch: arm64 + platform: osx + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 107691 + timestamp: 1738479560845 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda + sha256: 1cd6048169fa0395af74ed5d8f1716e22c19a81a8a36f934c110ca3ad4dd27b4 + md5: 172bf1cd1ff8629f2b1179945ed45055 + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 112766 + timestamp: 1702146165126 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libev-4.33-h31becfc_2.conda + sha256: 973af77e297f1955dd1f69c2cbdc5ab9dfc88388a5576cd152cda178af0fd006 + md5: a9a13cb143bbaa477b1ebaefbe47a302 + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 115123 + timestamp: 1702146237623 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libev-4.33-h93a5062_2.conda + sha256: 95cecb3902fbe0399c3a7e67a5bed1db813e5ab0e22f4023a5e0f722f2cc214f + md5: 36d33e440c31857372a72137f78bacf5 + arch: arm64 + platform: osx + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 107458 + timestamp: 1702146414478 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libevent-2.1.12-hf998b51_1.conda + sha256: 2e14399d81fb348e9d231a82ca4d816bf855206923759b69ad006ba482764131 + md5: a1cfcc585f0c42bf8d5546bb1dfb668d + depends: + - libgcc-ng >=12 + - openssl >=3.1.1,<4.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 427426 + timestamp: 1685725977222 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libevent-2.1.12-h4ba1bb4_1.conda + sha256: 01333cc7d6e6985dd5700b43660d90e9e58049182017fd24862088ecbe1458e4 + md5: 96ae6083cd1ac9f6bc81631ac835b317 + depends: + - libgcc-ng >=12 + - openssl >=3.1.1,<4.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 438992 + timestamp: 1685726046519 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libevent-2.1.12-h2757513_1.conda + sha256: 8c136d7586259bb5c0d2b913aaadc5b9737787ae4f40e3ad1beaf96c80b919b7 + md5: 1a109764bff3bdc7bdd84088347d71dc + depends: + - openssl >=3.1.1,<4.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 368167 + timestamp: 1685726248899 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda + sha256: 56541b98447b58e52d824bd59d6382d609e11de1f8adf20b23143e353d2b8d26 + md5: db833e03127376d461e1e13e76f09b6c + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + constrains: + - expat 2.6.4.* + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 73304 + timestamp: 1730967041968 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.6.4-h5ad3122_0.conda + sha256: f42e758009ba9db90d1fe7992bc3e60d0c52f71fb20923375d2c44ae69a5a2b3 + md5: f1b3fab36861b3ce945a13f0dfdfc688 + depends: + - libgcc >=13 + constrains: + - expat 2.6.4.* + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 72345 + timestamp: 1730967203789 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.4-h286801f_0.conda + sha256: e42ab5ace927ee7c84e3f0f7d813671e1cf3529f5f06ee5899606630498c2745 + md5: 38d2656dd914feb0cab8c629370768bf + depends: + - __osx >=11.0 + constrains: + - expat 2.6.4.* + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 64693 + timestamp: 1730967175868 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_0.conda + sha256: 67a6c95e33ebc763c1adc3455b9a9ecde901850eb2fceb8e646cc05ef3a663da + md5: e3eb7806380bc8bcecba6d749ad5f026 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 53415 + timestamp: 1739260413716 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.4.6-he21f813_0.conda + sha256: 41568066beefe7b319ff27d85952242e5b77fb753d705b8716041959e17c35c2 + md5: 966084fccf3ad62a3160666cda869f28 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 51513 + timestamp: 1739260449772 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 + sha256: 41b3d13efb775e340e4dba549ab5c029611ea6918703096b2eaa9c015c0750ca + md5: 086914b672be056eb70fd4285b6783b6 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 39020 + timestamp: 1636488587153 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h767d61c_2.conda + sha256: 3a572d031cb86deb541d15c1875aaa097baefc0c580b54dc61f5edab99215792 + md5: ef504d1acbd74b7cc6849ef8af47dd03 + depends: + - __glibc >=2.17,<3.0.a0 + - _openmp_mutex >=4.5 + constrains: + - libgomp 14.2.0 h767d61c_2 + - libgcc-ng ==14.2.0=*_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 847885 + timestamp: 1740240653082 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-14.2.0-he277a41_2.conda + sha256: a57f7f9ba2a12f56eafdcd25b6d75f7be10b8fc1a802a58b76a77ca8c66f4503 + md5: 6b4268a60b10f29257b51b9b67ff8d76 + depends: + - _openmp_mutex >=4.5 + constrains: + - libgcc-ng ==14.2.0=*_2 + - libgomp 14.2.0 he277a41_2 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 535507 + timestamp: 1740241069780 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_2.conda + sha256: fb7558c328b38b2f9d2e412c48da7890e7721ba018d733ebdfea57280df01904 + md5: a2222a6ada71fb478682efe483ce0f92 + depends: + - libgcc 14.2.0 h767d61c_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 53758 + timestamp: 1740240660904 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-14.2.0-he9431aa_2.conda + sha256: 9647f75cddc18b07eebe6e1f21500eed50a6af2c43c84e831b4c7a597e10d226 + md5: 692c2bb75f32cfafb6799cf6d1c5d0e0 + depends: + - libgcc 14.2.0 he277a41_2 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 53622 + timestamp: 1740241074834 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_2.conda + sha256: e05263e8960da03c341650f2a3ffa4ccae4e111cb198e8933a2908125459e5a6 + md5: fb54c4ea68b460c278d26eea89cfbcc3 + depends: + - libgfortran5 14.2.0 hf1ad2bd_2 + constrains: + - libgfortran-ng ==14.2.0=*_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 53733 + timestamp: 1740240690977 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_2.conda + sha256: 996d3c0505301901a7ab23b5e7daad21635d1c065240bb0f4faf7e4f75d7f49d + md5: d8b9d9dc0c8cd97d375b48e55947ba70 + depends: + - libgfortran5 14.2.0 hb6113d0_2 + constrains: + - libgfortran-ng ==14.2.0=*_2 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 53611 + timestamp: 1740241100147 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda + sha256: 44e541b4821c96b28b27fef5630883a60ce4fee91fd9c79f25a199f8f73f337b + md5: 4a55d9e169114b2b90d3ec4604cd7bbf + depends: + - libgfortran5 13.2.0 hf226fd6_3 + arch: arm64 + platform: osx + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 110233 + timestamp: 1707330749033 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-ng-14.2.0-h69a702a_2.conda + sha256: 688a5968852e677d2a64974c8869ffb120eac21997ced7d15c599f152ef6857e + md5: 4056c857af1a99ee50589a941059ec55 + depends: + - libgfortran 14.2.0 h69a702a_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 53781 + timestamp: 1740240884760 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hf1ad2bd_2.conda + sha256: c17b7cf3073a1f4e1f34d50872934fa326346e104d3c445abc1e62481ad6085c + md5: 556a4fdfac7287d349b8f09aba899693 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14.2.0 + constrains: + - libgfortran 14.2.0 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 1461978 + timestamp: 1740240671964 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_2.conda + sha256: 7b9e1d3666a00e5a52e5d43c003bd1c73ab472804be513c070aaedca9c4c2a9a + md5: cd754566661513808ef2408c4ab99a2f + depends: + - libgcc >=14.2.0 + constrains: + - libgfortran 14.2.0 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 1100765 + timestamp: 1740241083241 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda + sha256: bafc679eedb468a86aa4636061c55966186399ee0a04b605920d208d97ac579a + md5: 66ac81d54e95c534ae488726c1f698ea + depends: + - llvm-openmp >=8.0.0 + constrains: + - libgfortran 5.0.0 13_2_0_*_3 + arch: arm64 + platform: osx + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 997381 + timestamp: 1707330687590 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_2.conda + sha256: 4e303711fb7413bf98995beac58e731073099d7a669a3b81e49330ca8da05174 + md5: b11c09d9463daf4cae492d29806b1889 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 462783 + timestamp: 1740241005079 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.35.0-h2b5623c_0.conda + sha256: d747d14c69da512d8993a995dc2df90e857778b0a8542f12fb751544128af685 + md5: 1040ab07d7af9f23cf2466ffe4e58db1 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcurl >=8.11.1,<9.0a0 + - libgcc >=13 + - libgrpc >=1.67.1,<1.68.0a0 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + - openssl >=3.4.0,<4.0a0 + constrains: + - libgoogle-cloud 2.35.0 *_0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 1258035 + timestamp: 1738662406183 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-2.35.0-hccf9d24_0.conda + sha256: b5d323807ea699e76d9ebb829e48100446663978a1aac9adf538249864f73f97 + md5: f22720e07abb547ebce78a3aa7b97d69 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcurl >=8.11.1,<9.0a0 + - libgcc >=13 + - libgrpc >=1.67.1,<1.68.0a0 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + - openssl >=3.4.0,<4.0a0 + constrains: + - libgoogle-cloud 2.35.0 *_0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 1258015 + timestamp: 1738662706891 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-2.35.0-hdbe95d5_0.conda + sha256: 9bee9773540956d8a2ca0b317f73d94916200a4bfd8151319bf7fdcbf704d692 + md5: b1ea94282f38b142f8bc842ef7bcc18c + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcurl >=8.11.1,<9.0a0 + - libcxx >=18 + - libgrpc >=1.67.1,<1.68.0a0 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - openssl >=3.4.0,<4.0a0 + constrains: + - libgoogle-cloud 2.35.0 *_0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 877733 + timestamp: 1738662822079 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.35.0-h0121fbd_0.conda + sha256: cb1ef70e55d2c1defbfd8413dbe85b5550782470dda4f8d393f28d41b6d9b007 + md5: 34e2243e0428aac6b3e903ef99b6d57d + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil + - libcrc32c >=1.1.2,<1.2.0a0 + - libcurl + - libgcc >=13 + - libgoogle-cloud 2.35.0 h2b5623c_0 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 785777 + timestamp: 1738662565066 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-storage-2.35.0-hb9b2b65_0.conda + sha256: cf316f07d5dcc3b6669bf6d93203d435133c99d075a9f92dfa28eff1bd4def74 + md5: ae6ab5b7af1409d0eafd2b77c5d5528a + depends: + - libabseil + - libcrc32c >=1.1.2,<1.2.0a0 + - libcurl + - libgcc >=13 + - libgoogle-cloud 2.35.0 hccf9d24_0 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 739471 + timestamp: 1738662862568 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-storage-2.35.0-h7081f7f_0.conda + sha256: 52dc2d18264543b564b59fb80338fbd9cb2296f011d75f41adcd85041795201c + md5: 958beca4e16f59360e30c48ff0351e04 + depends: + - __osx >=11.0 + - libabseil + - libcrc32c >=1.1.2,<1.2.0a0 + - libcurl + - libcxx >=18 + - libgoogle-cloud 2.35.0 hdbe95d5_0 + - libzlib >=1.3.1,<2.0a0 + - openssl + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 529210 + timestamp: 1738664024959 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.67.1-h25350d4_1.conda + sha256: 014627485b3cf0ea18e04c0bab07be7fb98722a3aeeb58477acc7e1c3d2f911e + md5: 0c6497a760b99a926c7c12b74951a39c + depends: + - __glibc >=2.17,<3.0.a0 + - c-ares >=1.34.4,<2.0a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libre2-11 >=2024.7.2 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + - re2 + constrains: + - grpc-cpp =1.67.1 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 7792251 + timestamp: 1735584856826 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgrpc-1.67.1-hf7ccdd3_1.conda + sha256: 3fa173dc1d7456aac2b26937daae86a08432a31640e3d6569c62edc661fc9bbe + md5: 8fb41a425bebaeb3d0fa568503612e64 + depends: + - c-ares >=1.34.4,<2.0a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libre2-11 >=2024.7.2 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + - re2 + constrains: + - grpc-cpp =1.67.1 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 7430006 + timestamp: 1735585769731 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgrpc-1.67.1-h0a426d6_1.conda + sha256: 630edf63981818ff590367cb95fddbed0f5a390464d0952c90ec81de899e84a6 + md5: 8a3cba079d6ac985e7d73c76a678fbb4 + depends: + - __osx >=11.0 + - c-ares >=1.34.4,<2.0a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libre2-11 >=2024.7.2 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + - re2 + constrains: + - grpc-cpp =1.67.1 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 5311706 + timestamp: 1735585137716 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libhwloc-2.11.2-default_h0d58e46_1001.conda + sha256: d14c016482e1409ae1c50109a9ff933460a50940d2682e745ab1c172b5282a69 + md5: 804ca9e91bcaea0824a341d55b1684f2 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + - libxml2 >=2.13.4,<3.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 2423200 + timestamp: 1731374922090 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h4ce23a2_1.conda + sha256: 18a4afe14f731bfb9cf388659994263904d20111e42f841e9eea1bb6f91f4ab4 + md5: e796ff8ddc598affdf7c173d6145f087 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: LGPL-2.1-only + purls: [] + size: 713084 + timestamp: 1740128065462 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libiconv-1.18-hc99b53d_1.conda + sha256: 3db14977036fe1f511a6dbecacbeff3fdb58482c5c0cf87a2ea3232f5a540836 + md5: 81541d85a45fbf4d0a29346176f1f21c + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: LGPL-2.1-only + purls: [] + size: 718600 + timestamp: 1740130562607 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.18-hfe07756_1.conda + sha256: d30780d24bf3a30b4f116fca74dedb4199b34d500fe6c52cced5f8cc1e926f03 + md5: 450e6bdc0c7d986acf7b8443dce87111 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: LGPL-2.1-only + purls: [] + size: 681804 + timestamp: 1740128227484 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda + sha256: b954e09b7e49c2f2433d6f3bb73868eda5e378278b0f8c1dd10a7ef090e14f2f + md5: ea25936bb4080d843790b586850f82b8 + depends: + - libgcc-ng >=12 + constrains: + - jpeg <0.0.0a + arch: x86_64 + platform: linux + license: IJG AND BSD-3-Clause AND Zlib + purls: [] + size: 618575 + timestamp: 1694474974816 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libjpeg-turbo-3.0.0-h31becfc_1.conda + sha256: 675bc1f2a8581cd34a86c412663ec29c5f90c1d9f8d11866aa1ade5cdbdf8429 + md5: ed24e702928be089d9ba3f05618515c6 + depends: + - libgcc-ng >=12 + constrains: + - jpeg <0.0.0a + arch: aarch64 + platform: linux + license: IJG AND BSD-3-Clause AND Zlib + purls: [] + size: 647126 + timestamp: 1694475003570 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.0.0-hb547adb_1.conda + sha256: a42054eaa38e84fc1e5ab443facac4bbc9d1b6b6f23f54b7bf4f1eb687e1d993 + md5: 3ff1e053dc3a2b8e36b9bfa4256a58d1 + constrains: + - jpeg <0.0.0a + arch: arm64 + platform: osx + license: IJG AND BSD-3-Clause AND Zlib + purls: [] + size: 547541 + timestamp: 1694475104253 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-16_linux64_mkl.tar.bz2 + build_number: 16 + sha256: d6201f860b2d76ed59027e69c2bbad6d1cb211a215ec9705cc487cde488fa1fa + md5: a2f166748917d6d6e4707841ca1f519e + depends: + - libblas 3.9.0 16_linux64_mkl + constrains: + - blas * mkl + - liblapacke 3.9.0 16_linux64_mkl + - libcblas 3.9.0 16_linux64_mkl + - mkl <2025 + arch: x86_64 + platform: linux + track_features: + - blas_mkl + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 12791 + timestamp: 1660094578903 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-31_h411afd4_openblas.conda + build_number: 31 + sha256: 27613828ff6fb258b2e58802617df549f00089660ea8ab6c55c68f042c570162 + md5: 41dbff5eb805a75c120a7b7a1c744dc2 + depends: + - libblas 3.9.0 31_h1a9f1db_openblas + constrains: + - blas =2.131=openblas + - libcblas =3.9.0=31*_openblas + - liblapacke =3.9.0=31*_openblas + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 16845 + timestamp: 1740087923843 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-19_osxarm64_openblas.conda + build_number: 19 + sha256: f19cff537403c9feed98c7e18259022102b087f2b72a757e8a417476b9cf30c1 + md5: 3638eacb084c374f41f9efa40d20a47b + depends: + - libblas 3.9.0 19_osxarm64_openblas + constrains: + - libcblas 3.9.0 19_osxarm64_openblas + - blas * openblas + - liblapacke 3.9.0 19_osxarm64_openblas + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 14721 + timestamp: 1697484603691 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblapacke-3.9.0-16_linux64_mkl.tar.bz2 + build_number: 16 + sha256: 935036dc46c483cba8288c6de58d461ab3f42915715ffe9485105ad1dd203a0e + md5: 44ccc4d4dca6a8d57fa17442bc64b5a1 + depends: + - libblas 3.9.0 16_linux64_mkl + - libcblas 3.9.0 16_linux64_mkl + - liblapack 3.9.0 16_linux64_mkl + constrains: + - blas * mkl + - mkl <2025 + arch: x86_64 + platform: linux + track_features: + - blas_mkl + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 12793 + timestamp: 1660094586875 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda + sha256: cad52e10319ca4585bc37f0bc7cce99ec7c15dc9168e42ccb96b741b0a27db3f + md5: 42d5b6a0f30d3c10cd88cb8584fda1cb + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: 0BSD + purls: [] + size: 111357 + timestamp: 1738525339684 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.4-h86ecc28_0.conda + sha256: 96413664f0fade54a4931940d18749cfc8e6308349dbb0cb83adb2394ca1f730 + md5: b88244e0a115cc34f7fbca9b11248e76 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: 0BSD + purls: [] + size: 124197 + timestamp: 1738528201520 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.4-h39f12f2_0.conda + sha256: 560c59d3834cc652a84fb45531bd335ad06e271b34ebc216e380a89798fe8e2c + md5: e3fd1f8320a100f2b210e690a57cd615 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: 0BSD + purls: [] + size: 98945 + timestamp: 1738525462560 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda + sha256: b0f2b3695b13a989f75d8fd7f4778e1c7aabe3b36db83f0fe80b2cd812c0e975 + md5: 19e57602824042dfd0446292ef90488b + depends: + - __glibc >=2.17,<3.0.a0 + - c-ares >=1.32.3,<2.0a0 + - libev >=4.33,<4.34.0a0 + - libev >=4.33,<5.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.3.2,<4.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 647599 + timestamp: 1729571887612 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnghttp2-1.64.0-hc8609a4_0.conda + sha256: c093c6d370aadbf0409c20b6c54c488ee2f6fea976181919fcc63e87ee232673 + md5: f52c614fa214a8bedece9421c771670d + depends: + - c-ares >=1.32.3,<2.0a0 + - libev >=4.33,<4.34.0a0 + - libev >=4.33,<5.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.3.2,<4.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 714610 + timestamp: 1729571912479 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.64.0-h6d7220d_0.conda + sha256: 00cc685824f39f51be5233b54e19f45abd60de5d8847f1a56906f8936648b72f + md5: 3408c02539cee5f1141f9f11450b6a51 + depends: + - __osx >=11.0 + - c-ares >=1.34.2,<2.0a0 + - libcxx >=17 + - libev >=4.33,<4.34.0a0 + - libev >=4.33,<5.0a0 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.3.2,<4.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 566719 + timestamp: 1729572385640 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnpp-12.2.5.30-he02047a_2.conda + sha256: d8c97716825955c48681f4a3cde2f0cbbacc77c91b4cd944d4906f63385487df + md5: a96a1edd18bee676cf2dcca251d3d6a4 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 99461229 + timestamp: 1715711634268 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda + sha256: 26d77a3bb4dceeedc2a41bd688564fe71bf2d149fdcf117049970bc02ff1add6 + md5: 30fd6e37fe21f86f4bd26d6ee73eeec7 + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: LGPL-2.1-only + license_family: GPL + purls: [] + size: 33408 + timestamp: 1697359010159 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda + sha256: fd18c2b75d7411096428d36a70b36b1a17e31f7b8956b6905d145792d49e97f8 + md5: c14f32510f694e3185704d89967ec422 + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: LGPL-2.1-only + license_family: GPL + purls: [] + size: 34501 + timestamp: 1697358973269 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnvfatbin-12.4.127-he02047a_2.conda + sha256: d40f37532f86cbbe63439489be0e88561819190392cc519c69365b3fc47a2c5b + md5: d746b76642b4ac6e40f1219405672beb + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 792025 + timestamp: 1715711761341 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnvjitlink-12.4.127-he02047a_2.conda + sha256: 31382c8ef388a51bd2c283a239e037b8b30f9c7ecf6ec9744824445b59db39b6 + md5: 303845d6c48bf4185dc4138634650468 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 16571958 + timestamp: 1715711715842 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnvjpeg-12.3.1.117-he02047a_2.conda + sha256: 49a182f8da4ba30fbfee9692976d9da349371175c9c9576768d4754a51fef326 + md5: 8f3ed0e41a4b505de40b4f96f4bfb0fa + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 2491500 + timestamp: 1715711780068 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.29-pthreads_h9d3fd7e_0.conda + sha256: 3a2ccf4c9098cd18a636e9b7fff947fdeb4962bcfb75c9d6fd80b8c50caf6a3c + md5: a99e2bfcb1ad6362544c71281eb617e9 + depends: + - libgcc >=14 + - libgfortran + - libgfortran5 >=14.2.0 + constrains: + - openblas >=0.3.29,<0.3.30.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 4801657 + timestamp: 1739825308974 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.24-openmp_hd76b1f2_0.conda + sha256: 21edfdf620ac5c93571aab452199b6b4622c445441dad88ab4d2eb326a7b91b3 + md5: aacb05989f358affe1bafd4ea7294db4 + depends: + - libgfortran 5.* + - libgfortran5 >=12.3.0 + - llvm-openmp >=15.0.7 + constrains: + - openblas >=0.3.24,<0.3.25.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 2849225 + timestamp: 1693784744674 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-1.18.0-hfcad708_1.conda + sha256: 4ea235e08676f16b0d3c3380befe1478c0fa0141512ee709b011005c55c9619f + md5: 1f5a5d66e77a39dc5bd639ec953705cf + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcurl >=8.11.1,<9.0a0 + - libgrpc >=1.67.1,<1.68.0a0 + - libopentelemetry-cpp-headers 1.18.0 ha770c72_1 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libzlib >=1.3.1,<2.0a0 + - nlohmann_json + - prometheus-cpp >=1.3.0,<1.4.0a0 + constrains: + - cpp-opentelemetry-sdk =1.18.0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 801927 + timestamp: 1735643375271 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopentelemetry-cpp-1.18.0-h60b47f9_1.conda + sha256: 160c493cd0f897955b0b6035b51c6d7255ffbaed3c8a12d43e8e8a719d405aba + md5: afe3c8c53f4b6d27d553c230d4b34038 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcurl >=8.11.1,<9.0a0 + - libgrpc >=1.67.1,<1.68.0a0 + - libopentelemetry-cpp-headers 1.18.0 h8af1aa0_1 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libzlib >=1.3.1,<2.0a0 + - nlohmann_json + - prometheus-cpp >=1.3.0,<1.4.0a0 + constrains: + - cpp-opentelemetry-sdk =1.18.0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 800896 + timestamp: 1735643533825 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopentelemetry-cpp-1.18.0-h0c05b2d_1.conda + sha256: c6bcbd53d62a9e0d8c667e560db0ca2ecb7679277cbb3c23457aabe74fcb8cba + md5: 19c46cc18825f3924251c39ec1b0d983 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcurl >=8.11.1,<9.0a0 + - libgrpc >=1.67.1,<1.68.0a0 + - libopentelemetry-cpp-headers 1.18.0 hce30654_1 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libzlib >=1.3.1,<2.0a0 + - nlohmann_json + - prometheus-cpp >=1.3.0,<1.4.0a0 + constrains: + - cpp-opentelemetry-sdk =1.18.0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 529588 + timestamp: 1735643889612 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-headers-1.18.0-ha770c72_1.conda + sha256: aa1f7dea79ea8513ff77339ba7c6e9cf10dfa537143e7718b1cfb3af52b649f2 + md5: 4fb055f57404920a43b147031471e03b + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 320359 + timestamp: 1735643346175 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopentelemetry-cpp-headers-1.18.0-h8af1aa0_1.conda + sha256: 981c0b29a0789597fa8ed147b02df2d2ad0c7f863d87df74770c40cee1800228 + md5: 282193b19a19e3b5d75d18ef82713ef0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 319401 + timestamp: 1735643509251 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopentelemetry-cpp-headers-1.18.0-hce30654_1.conda + sha256: 82e5f5ba64debbaab3c601b265dfc0cdb4d2880feba9bada5fd2e67b9f91ada5 + md5: e965dad955841507549fdacd8f7f94c0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 320565 + timestamp: 1735643673319 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-19.0.1-h081d1f1_0_cpu.conda + sha256: e9c4a07e79886963bfcd05894a15b5d4c7137c1122273de68845315c35d6505d + md5: 8b58c378d65b213c001f04a174a2a70e + depends: + - __glibc >=2.17,<3.0.a0 + - libarrow 19.0.1 hfa2a6e7_0_cpu + - libgcc >=13 + - libstdcxx >=13 + - libthrift >=0.21.0,<0.21.1.0a0 + - openssl >=3.4.1,<4.0a0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 1244749 + timestamp: 1739769006551 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-19.0.1-hfc78867_0_cpu.conda + sha256: 4822fcb00e97644ce74f313cd2f44fe85085c64b1481ac7e1a22ee7dd2ef772a + md5: d19e95e75e9005e712ec81409868b880 + depends: + - libarrow 19.0.1 h36213f4_0_cpu + - libgcc >=13 + - libstdcxx >=13 + - libthrift >=0.21.0,<0.21.1.0a0 + - openssl >=3.4.1,<4.0a0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 1154758 + timestamp: 1739770461892 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-19.0.1-h636d7b7_0_cpu.conda + sha256: 54e4a18493d63b7fbd5cf39fadabe665bcf462121a7bc2f394f510b0bcf22031 + md5: 0cce19e6981849babe6c73797abbfa4e + depends: + - __osx >=11.0 + - libarrow 19.0.1 h0945df6_0_cpu + - libcxx >=18 + - libthrift >=0.21.0,<0.21.1.0a0 + - openssl >=3.4.1,<4.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 895659 + timestamp: 1739768176454 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.47-h943b412_0.conda + sha256: 23367d71da58c9a61c8cbd963fcffb92768d4ae5ffbef9a47cdf1f54f98c5c36 + md5: 55199e2ae2c3651f6f9b2a447b47bdc9 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux + license: zlib-acknowledgement + purls: [] + size: 288701 + timestamp: 1739952993639 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.47-hec79eb8_0.conda + sha256: 3861a65106a5f876eff3fc19042c3edb528216114b9f8e64b37aebf003deda11 + md5: c4b1ba0d7cef5002759d2f156722feee + depends: + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + arch: aarch64 + platform: linux + license: zlib-acknowledgement + purls: [] + size: 291536 + timestamp: 1739957375872 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.47-h3783ad8_0.conda + sha256: dc93cc30f59b28e7812c6f14d2c2e590b509c38092cce7ababe6b23541b7ed8f + md5: 3550e05e3af94a3fa9cef2694417ccdf + depends: + - __osx >=11.0 + - libzlib >=1.3.1,<2.0a0 + arch: arm64 + platform: osx + license: zlib-acknowledgement + purls: [] + size: 259332 + timestamp: 1739953032676 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda + sha256: 51125ebb8b7152e4a4e69fd2398489c4ec8473195c27cde3cbdf1cb6d18c5493 + md5: d8703f1ffe5a06356f06467f1d0b9464 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 2960815 + timestamp: 1735577210663 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.3-h44a3b7b_1.conda + sha256: ecb69f2b1668e784b41ba667493be846662d5ef702bef64fb2e013bb1364cdc4 + md5: 68f807f7cc13951652bbe048253fd405 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 2788074 + timestamp: 1735576315676 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.3-h3bd63a1_1.conda + sha256: f58a16b13ad53346903c833e266f83c3d770a43a432659b98710aed85ca885e7 + md5: bdbfea4cf45ae36652c6bbcc2e7ebe91 + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=18 + - libzlib >=1.3.1,<2.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 2271580 + timestamp: 1735576361997 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_2.conda + sha256: 4420f8362c71251892ba1eeb957c5e445e4e1596c0c651c28d0d8b415fe120c7 + md5: b2fede24428726dd867611664fb372e8 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libstdcxx >=13 + constrains: + - re2 2024.07.02.* + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 209793 + timestamp: 1735541054068 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_2.conda + sha256: 862c20de0120f802e618dcb25913d00c5b82f91f4be60b2d46a774e851adc2f6 + md5: 9a7dbbaab49f76a6f36e5c9d98e323a7 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libstdcxx >=13 + constrains: + - re2 2024.07.02.* + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 204305 + timestamp: 1735540986919 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h07bc746_2.conda + sha256: 112a73ad483353751d4c5d63648c69a4d6fcebf5e1b698a860a3f5124fc3db96 + md5: 6b1e3624d3488016ca4f1ca0c412efaa + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=18 + constrains: + - re2 2024.07.02.* + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 167155 + timestamp: 1735541067807 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsentencepiece-0.2.0-h8e10757_10.conda + sha256: dc399e0f04a09f8c1807c3b36e578eb81f81891c0ddf21de9c1fb9f048ce4031 + md5: 4f43dbcfacd3cc9a183dd3a48b94d3c0 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 823649 + timestamp: 1735627841126 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsentencepiece-0.2.0-h6164ad9_10.conda + sha256: 57074803772f65d4075b7d6dc17ff5aa40ec3a30109fa4225ca16911504c4a8b + md5: a7a192edc9cfba26a27df3283203e6a1 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 800865 + timestamp: 1735627982895 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsentencepiece-0.2.0-he13a0af_10.conda + sha256: 3347a8840d085ce1661928e736229f068d56c84312fbed90886e059023d85611 + md5: 1f67e5e30edd56e0a0bf6df6bb711a9d + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 754657 + timestamp: 1735628030895 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda + sha256: 0105bd108f19ea8e6a78d2d994a6d4a8db16d19a41212070d2d1d48a63c34161 + md5: a587892d3c13b6621a6091be690dbca2 + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: ISC + purls: [] + size: 205978 + timestamp: 1716828628198 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.20-h68df207_0.conda + sha256: 448df5ea3c5cf1af785aad46858d7a5be0522f4234a4dc9bb764f4d11ff3b981 + md5: 2e4a8f23bebdcb85ca8e5a0fbe75666a + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: ISC + purls: [] + size: 177394 + timestamp: 1716828514515 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda + sha256: fade8223e1e1004367d7101dd17261003b60aa576df6d7802191f8972f7470b1 + md5: a7ce36e284c5faaf93c220dfc39e3abd + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: ISC + purls: [] + size: 164972 + timestamp: 1716828607917 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.49.1-hee588c1_1.conda + sha256: 7a09eef804ef7cf4d88215c2297eabb72af8ad0bd5b012060111c289f14bbe7d + md5: 73cea06049cc4174578b432320a003b8 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux + license: Unlicense + purls: [] + size: 915956 + timestamp: 1739953155793 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.49.1-h5eb1b54_1.conda + sha256: 920fb3b7d3b873babf79a3e392cc82d43b8bd02a573ccaff34219efb5cf7b51e + md5: 150d64241fa27d9d35a7f421ca968a6c + depends: + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + arch: aarch64 + platform: linux + license: Unlicense + purls: [] + size: 915118 + timestamp: 1739953101699 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.1-h3f77e49_1.conda + sha256: 266639fb10ca92287961574b0b4d6031fa40dd9d723d64a0fcb08513a24dab03 + md5: c83357a21092bd952933c36c5cb4f4d6 + depends: + - __osx >=11.0 + - libzlib >=1.3.1,<2.0a0 + arch: arm64 + platform: osx + license: Unlicense + purls: [] + size: 898767 + timestamp: 1739953312379 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hf672d98_0.conda + sha256: 0407ac9fda2bb67e11e357066eff144c845801d00b5f664efbc48813af1e7bb9 + md5: be2de152d8073ef1c01b7728475f2fe7 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 304278 + timestamp: 1732349402869 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libssh2-1.11.1-ha41c0db_0.conda + sha256: 40f2af5357457546bd11cd64a3b9043d83865180f65ce602515c35f353be35c7 + md5: aeffe03c0e598f015aab08dbb04f6ee4 + depends: + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 311577 + timestamp: 1732349396421 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.1-h9cc3647_0.conda + sha256: f7047c6ed44bcaeb04432e8c74da87591940d091b0a3940c0d884b7faa8062e9 + md5: ddc7194676c285513706e5fc64f214d7 + depends: + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 279028 + timestamp: 1732349599461 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-h8f9b012_2.conda + sha256: 8f5bd92e4a24e1d35ba015c5252e8f818898478cb3bc50bd8b12ab54707dc4da + md5: a78c856b6dc6bf4ea8daeb9beaaa3fb0 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc 14.2.0 h767d61c_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 3884556 + timestamp: 1740240685253 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_2.conda + sha256: c30a74bc996013907f6d9f344da007c26d98ef9a0831151cd50aece3125c45d5 + md5: eadee2cda99697e29411c1013c187b92 + depends: + - libgcc 14.2.0 he277a41_2 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 3810779 + timestamp: 1740241094774 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_2.conda + sha256: e86f38b007cf97cc2c67cd519f2de12a313c4ee3f5ef11652ad08932a5e34189 + md5: c75da67f045c2627f59e6fcb5f4e3a9b + depends: + - libstdcxx 14.2.0 h8f9b012_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 53830 + timestamp: 1740240722530 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_2.conda + sha256: 0107886ead6f255956d8e520f8dff260f9ab3d0d51512f18c52710c406e4b2df + md5: c934c1fddad582fcc385b608eb06a70c + depends: + - libstdcxx 14.2.0 h3f4de04_2 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 53715 + timestamp: 1740241126343 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libthrift-0.21.0-h0e7cc3e_0.conda + sha256: ebb395232973c18745b86c9a399a4725b2c39293c9a91b8e59251be013db42f0 + md5: dcb95c0a98ba9ff737f7ae482aef7833 + depends: + - __glibc >=2.17,<3.0.a0 + - libevent >=2.1.12,<2.1.13.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.3.2,<4.0a0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 425773 + timestamp: 1727205853307 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libthrift-0.21.0-h154c74f_0.conda + sha256: f04ab1417aca1687edff9c30d8423ace285eb8c053dc16d595c6e47cfeefb274 + md5: c28792bf37f4ecdce8e3cb9e40750650 + depends: + - libevent >=2.1.12,<2.1.13.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.3.2,<4.0a0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 417329 + timestamp: 1727205944238 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libthrift-0.21.0-h64651cc_0.conda + sha256: 7a6c7d5f58cbbc2ccd6493b4b821639fdb0701b9b04c737a949e8cb6adf1c9ad + md5: 7ce2bd2f650f8c31ad7ba4c7bfea61b7 + depends: + - __osx >=11.0 + - libcxx >=17 + - libevent >=2.1.12,<2.1.13.0a0 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.3.2,<4.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 324342 + timestamp: 1727206096912 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hd9ff511_3.conda + sha256: b224e16b88d76ea95e4af56e2bc638c603bd26a770b98d117d04541d3aafa002 + md5: 0ea6510969e1296cc19966fad481f6de + depends: + - __glibc >=2.17,<3.0.a0 + - lerc >=4.0.0,<5.0a0 + - libdeflate >=1.23,<1.24.0a0 + - libgcc >=13 + - libjpeg-turbo >=3.0.0,<4.0a0 + - liblzma >=5.6.3,<6.0a0 + - libstdcxx >=13 + - libwebp-base >=1.4.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - zstd >=1.5.6,<1.6.0a0 + arch: x86_64 + platform: linux + license: HPND + purls: [] + size: 428173 + timestamp: 1734398813264 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.0-h88f7998_3.conda + sha256: 5888bd66ba7606ae8596856c7dac800940ecad0aed77d6aa37db69d434c81cf0 + md5: 36a0ea4a173338c8725dc0807e99cf22 + depends: + - lerc >=4.0.0,<5.0a0 + - libdeflate >=1.23,<1.24.0a0 + - libgcc >=13 + - libjpeg-turbo >=3.0.0,<4.0a0 + - liblzma >=5.6.3,<6.0a0 + - libstdcxx >=13 + - libwebp-base >=1.4.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - zstd >=1.5.6,<1.6.0a0 + arch: aarch64 + platform: linux + license: HPND + purls: [] + size: 464699 + timestamp: 1734398752249 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-h551f018_3.conda + sha256: 91417846157e04992801438a496b151df89604b2e7c6775d6f701fcd0cbed5ae + md5: a5d084a957563e614ec0c0196d890654 + depends: + - __osx >=11.0 + - lerc >=4.0.0,<5.0a0 + - libcxx >=18 + - libdeflate >=1.23,<1.24.0a0 + - libjpeg-turbo >=3.0.0,<4.0a0 + - liblzma >=5.6.3,<6.0a0 + - libwebp-base >=1.4.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - zstd >=1.5.6,<1.6.0a0 + arch: arm64 + platform: osx + license: HPND + purls: [] + size: 370600 + timestamp: 1734398863052 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.10.0-h4c51ac1_0.conda + sha256: 8e41563ee963bf8ded06da45f4e70bf42f913cb3c2e79364eb3218deffa3cd74 + md5: aeccfff2806ae38430638ffbb4be9610 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 82745 + timestamp: 1737244366901 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.10.0-ha346350_0.conda + sha256: 9c333e07b76ae1ea2c882db764be52dc82f632be66d993a50b35ca9c5475074a + md5: c5166bcfb8348e8fc31ee16ec3981a5e + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 82679 + timestamp: 1737329054400 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.10.0-hda25de7_0.conda + sha256: aca3ef31d3dff5cefd3790742a5ee6548f1cf0201d0e8cee08b01da503484eb6 + md5: 5f741aed1d8d393586a5fdcaaa87f45c + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 83628 + timestamp: 1737244450097 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda + sha256: 787eb542f055a2b3de553614b25f09eefb0a0931b0c87dbcce6efdfd92f04f18 + md5: 40b61aab5c7ba9ff276c41cfffe6b80b + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 33601 + timestamp: 1680112270483 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda + sha256: 616277b0c5f7616c2cdf36f6c316ea3f9aa5bb35f2d4476a349ab58b9b91675f + md5: 000e30b09db0b7c775b21695dff30969 + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 35720 + timestamp: 1680113474501 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.5.0-h851e524_0.conda + sha256: c45283fd3e90df5f0bd3dbcd31f59cdd2b001d424cf30a07223655413b158eaf + md5: 63f790534398730f59e1b899c3644d4a + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + constrains: + - libwebp 1.5.0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 429973 + timestamp: 1734777489810 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libwebp-base-1.5.0-h0886dbf_0.conda + sha256: b3d881a0ae08bb07fff7fa8ead506c8d2e0388733182fe4f216f3ec5d61ffcf0 + md5: 95ef4a689b8cc1b7e18b53784d88f96b + depends: + - libgcc >=13 + constrains: + - libwebp 1.5.0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 362623 + timestamp: 1734779054659 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.5.0-h2471fea_0.conda + sha256: f8bdb876b4bc8cb5df47c28af29188de8911c3fea4b799a33743500149de3f4a + md5: 569466afeb84f90d5bb88c11cc23d746 + depends: + - __osx >=11.0 + constrains: + - libwebp 1.5.0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 290013 + timestamp: 1734777593617 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda + sha256: 666c0c431b23c6cec6e492840b176dde533d48b7e6fb8883f5071223433776aa + md5: 92ed62436b625154323d40d5f2f11dd7 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - pthread-stubs + - xorg-libxau >=1.0.11,<2.0a0 + - xorg-libxdmcp + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 395888 + timestamp: 1727278577118 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcb-1.17.0-h262b8f6_0.conda + sha256: 461cab3d5650ac6db73a367de5c8eca50363966e862dcf60181d693236b1ae7b + md5: cd14ee5cca2464a425b1dbfc24d90db2 + depends: + - libgcc >=13 + - pthread-stubs + - xorg-libxau >=1.0.11,<2.0a0 + - xorg-libxdmcp + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 397493 + timestamp: 1727280745441 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxcb-1.17.0-hdb1d25a_0.conda + sha256: bd3816218924b1e43b275863e21a3e13a5db4a6da74cca8e60bc3c213eb62f71 + md5: af523aae2eca6dfa1c8eec693f5b9a79 + depends: + - __osx >=11.0 + - pthread-stubs + - xorg-libxau >=1.0.11,<2.0a0 + - xorg-libxdmcp + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 323658 + timestamp: 1727278733917 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda + sha256: 6ae68e0b86423ef188196fff6207ed0c8195dd84273cb5623b85aa08033a410c + md5: 5aa797f8787fe7a17d1b0821485b5adc + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: LGPL-2.1-or-later + purls: [] + size: 100393 + timestamp: 1702724383534 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda + sha256: 6b46c397644091b8a26a3048636d10b989b1bf266d4be5e9474bf763f828f41f + md5: b4df5d7d4b63579d081fd3a4cf99740e + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: LGPL-2.1-or-later + purls: [] + size: 114269 + timestamp: 1702724369203 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.6-h8d12d68_0.conda + sha256: db8af71ea9c0ae95b7cb4a0f59319522ed2243942437a1200ceb391493018d85 + md5: 328382c0e0ca648e5c189d5ec336c604 + depends: + - __glibc >=2.17,<3.0.a0 + - icu >=75.1,<76.0a0 + - libgcc >=13 + - libiconv >=1.18,<2.0a0 + - liblzma >=5.6.4,<6.0a0 + - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 690296 + timestamp: 1739952967309 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.6-h2e0c361_0.conda + sha256: bb075df08b04b1b47e75a250f2ebbb2401c3367057d64b8d44ef1ef3f44480e1 + md5: a159a92f890f862408c951c08f13415f + depends: + - icu >=75.1,<76.0a0 + - libgcc >=13 + - libiconv >=1.18,<2.0a0 + - liblzma >=5.6.4,<6.0a0 + - libzlib >=1.3.1,<2.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 733707 + timestamp: 1739953178456 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.6-hce475f1_0.conda + sha256: 9ce429417545f7616ed528061305b3a1fc3732ff3bb24bd91cba260550879693 + md5: 8654012bd68aa48b94eee6c9faab85b6 + depends: + - __osx >=11.0 + - libiconv >=1.18,<2.0a0 + - liblzma >=5.6.4,<6.0a0 + - libzlib >=1.3.1,<2.0a0 + constrains: + - icu <0.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 582490 + timestamp: 1739953065675 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda + sha256: d4bfe88d7cb447768e31650f06257995601f89076080e76df55e3112d4e47dc4 + md5: edb0dca6bc32e4f4789199455a1dbeb8 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + constrains: + - zlib 1.3.1 *_2 + arch: x86_64 + platform: linux + license: Zlib + license_family: Other + purls: [] + size: 60963 + timestamp: 1727963148474 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda + sha256: 5a2c1eeef69342e88a98d1d95bff1603727ab1ff4ee0e421522acd8813439b84 + md5: 08aad7cbe9f5a6b460d0976076b6ae64 + depends: + - libgcc >=13 + constrains: + - zlib 1.3.1 *_2 + arch: aarch64 + platform: linux + license: Zlib + license_family: Other + purls: [] + size: 66657 + timestamp: 1727963199518 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda + sha256: ce34669eadaba351cd54910743e6a2261b67009624dbc7daeeafdef93616711b + md5: 369964e85dc26bfe78f41399b366c435 + depends: + - __osx >=11.0 + constrains: + - zlib 1.3.1 *_2 + arch: arm64 + platform: osx + license: Zlib + license_family: Other + purls: [] + size: 46438 + timestamp: 1727963202283 +- conda: https://conda.anaconda.org/conda-forge/linux-64/llvm-openmp-15.0.7-h0cdce71_0.conda + sha256: 7c67d383a8b1f3e7bf9e046e785325c481f6868194edcfb9d78d261da4ad65d4 + md5: 589c9a3575a050b583241c3d688ad9aa + depends: + - libzlib >=1.2.13,<2.0.0a0 + constrains: + - openmp 15.0.7|15.0.7.* + arch: x86_64 + platform: linux + license: Apache-2.0 WITH LLVM-exception + license_family: APACHE + purls: [] + size: 3268766 + timestamp: 1673584331056 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-15.0.7-h7cfbb63_0.conda + sha256: 6cc4cf021fc1f06df3b97598bf9583fe7a04fad6a4eef9882558f7932f362bc0 + md5: 358164e15a9320f11b84a53fb8d8e446 + constrains: + - openmp 15.0.7|15.0.7.* + arch: arm64 + platform: osx + license: Apache-2.0 WITH LLVM-exception + license_family: APACHE + purls: [] + size: 263326 + timestamp: 1673584823527 +- conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.10.0-h5888daf_1.conda + sha256: 47326f811392a5fd3055f0f773036c392d26fdb32e4d8e7a8197eed951489346 + md5: 9de5350a85c4a20c685259b889aa6393 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 167055 + timestamp: 1733741040117 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.10.0-h5ad3122_1.conda + sha256: 67e55058d275beea76c1882399640c37b5be8be4eb39354c94b610928e9a0573 + md5: 6654e411da94011e8fbe004eacb8fe11 + depends: + - libgcc >=13 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 184953 + timestamp: 1733740984533 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.10.0-h286801f_1.conda + sha256: 94d3e2a485dab8bdfdd4837880bde3dd0d701e2b97d6134b8806b7c8e69c8652 + md5: 01511afc6cc1909c5303cf31be17b44f + depends: + - __osx >=11.0 + - libcxx >=18 + arch: arm64 + platform: osx + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 148824 + timestamp: 1733741047892 +- pypi: https://download.pytorch.org/whl/MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl#sha256=ac07bad82163452a6884fe8fa0963fb98c2346ba78d779ec06bd7a6262132aee + name: markupsafe + version: 2.1.5 + sha256: ac07bad82163452a6884fe8fa0963fb98c2346ba78d779ec06bd7a6262132aee + requires_python: '>=3.7' +- conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_1.conda + sha256: 4a6bf68d2a2b669fecc9a4a009abd1cf8e72c2289522ff00d81b5a6e51ae78f5 + md5: eb227c3e0bf58f5bd69c0532b157975b + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - jinja2 >=3.0.0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/markupsafe?source=hash-mapping + size: 24604 + timestamp: 1733219911494 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312h998013c_1.conda + sha256: 4aa997b244014d3707eeef54ab0ee497d12c0d0d184018960cce096169758283 + md5: 46e547061080fddf9cf95a0327e8aba6 + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - jinja2 >=3.0.0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/markupsafe?source=hash-mapping + size: 24048 + timestamp: 1733219945697 +- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022718-release.conda + noarch: python + sha256: f3dcb14fed5470c0fc521542cbd2f1c56ca7e46d560f46176b8f926198cb3cbd + md5: 01fe5e0cf46c84a6345e323ad1316764 + depends: + - max-core ==25.2.0.dev2025022718 release + - max-python ==25.2.0.dev2025022718 release + - mojo-jupyter ==25.2.0.dev2025022718 release + - mblack ==25.2.0.dev2025022718 release + license: LicenseRef-Modular-Proprietary + size: 9905 + timestamp: 1740680254354 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022718-release.conda + sha256: 847d5767109a305d7bcad4ac29248a74a384034692934a0c54b00a590c27094a + md5: fc5a9ae36c7805979bd58ca55a25066f + depends: + - mblack ==25.2.0.dev2025022718 release + license: LicenseRef-Modular-Proprietary + size: 249811868 + timestamp: 1740680254354 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022718-release.conda + sha256: 250c35ecccd302e6c7de836ac200a5ece92e74508c2590c585d8803d488fd650 + md5: d88728b468c85902512a0f9b99251035 + depends: + - mblack ==25.2.0.dev2025022718 release + license: LicenseRef-Modular-Proprietary + size: 252108573 + timestamp: 1740680207793 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022718-release.conda + sha256: fb28d9e61aa507ea84b470082d3dc96844a24fe672d4e4c57e832655c5d0a202 + md5: dd8734453f7276a258f3351cc5c506c3 + depends: + - mblack ==25.2.0.dev2025022718 release + license: LicenseRef-Modular-Proprietary + size: 217273450 + timestamp: 1740681819160 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022718-release.conda + noarch: python + sha256: 831b4d62f66f0083321121c6ba25dedab3ee41d5e9f19d9752969592214af398 + md5: f828ace91aa057e4774e84ad459adccf + depends: + - max-core ==25.2.0.dev2025022718 release + - click >=8.0.0 + - numpy >=1.18,<2.0 + - sentencepiece >=0.2.0 + - tqdm >=4.67.1 + constrains: + - aiohttp >=3.11.12 + - fastapi >=0.114.2 + - gguf >=0.14.0 + - hf-transfer >=0.1.9 + - httpx >=0.28.1 + - huggingface_hub >=0.24.0 + - nvitop >=1.4.1 + - opentelemetry-api >=1.29.0 + - opentelemetry-exporter-otlp-proto-http >=1.27.0 + - opentelemetry-exporter-prometheus <1.0.0 + - opentelemetry-sdk >=1.29.0,<2.0 + - pillow >=10.3.0 + - prometheus_client >=0.21.0 + - prometheus-async >=22.2.0 + - psutil >=6.1.1 + - pydantic + - pydantic-settings >=2.7.1 + - pyinstrument >=5.0.1 + - python-json-logger >=2.0.7 + - requests >=2.32.3 + - rich >=13.9.4 + - safetensors >=0.5.2 + - sentinel >=0.3.0 + - sse-starlette >=2.1.2 + - tokenizers >=0.19.0 + - pytorch >=2.2.2,<=2.5.1 + - transformers >=4.40.1 + - uvicorn >=0.34.0 + - uvloop >=0.21.0 + - xgrammar ==0.1.11 + license: LicenseRef-Modular-Proprietary + size: 123584411 + timestamp: 1740680254354 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022718-release.conda + noarch: python + sha256: b9e5755b7bf6314a37a90ef0250c93f5e7c693954d7a6389a97ab9ef06e23cc3 + md5: bfd2e752d0fc9516b78a17169ce9cc78 + depends: + - max-core ==25.2.0.dev2025022718 release + - click >=8.0.0 + - numpy >=1.18,<2.0 + - sentencepiece >=0.2.0 + - tqdm >=4.67.1 + constrains: + - aiohttp >=3.11.12 + - fastapi >=0.114.2 + - gguf >=0.14.0 + - hf-transfer >=0.1.9 + - httpx >=0.28.1 + - huggingface_hub >=0.24.0 + - nvitop >=1.4.1 + - opentelemetry-api >=1.29.0 + - opentelemetry-exporter-otlp-proto-http >=1.27.0 + - opentelemetry-exporter-prometheus <1.0.0 + - opentelemetry-sdk >=1.29.0,<2.0 + - pillow >=10.3.0 + - prometheus_client >=0.21.0 + - prometheus-async >=22.2.0 + - psutil >=6.1.1 + - pydantic + - pydantic-settings >=2.7.1 + - pyinstrument >=5.0.1 + - python-json-logger >=2.0.7 + - requests >=2.32.3 + - rich >=13.9.4 + - safetensors >=0.5.2 + - sentinel >=0.3.0 + - sse-starlette >=2.1.2 + - tokenizers >=0.19.0 + - pytorch >=2.2.2,<=2.5.1 + - transformers >=4.40.1 + - uvicorn >=0.34.0 + - uvloop >=0.21.0 + - xgrammar ==0.1.11 + license: LicenseRef-Modular-Proprietary + size: 126004454 + timestamp: 1740680207793 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022718-release.conda + noarch: python + sha256: 7da9f4655082bb64c2b0cc996ffefa0ce5c49744854ed77a9b0d000e27cf5a55 + md5: b16d498a148aa61dca2a6bfec5cb8e46 + depends: + - max-core ==25.2.0.dev2025022718 release + - click >=8.0.0 + - numpy >=1.18,<2.0 + - sentencepiece >=0.2.0 + - tqdm >=4.67.1 + constrains: + - aiohttp >=3.11.12 + - fastapi >=0.114.2 + - gguf >=0.14.0 + - hf-transfer >=0.1.9 + - httpx >=0.28.1 + - huggingface_hub >=0.24.0 + - nvitop >=1.4.1 + - opentelemetry-api >=1.29.0 + - opentelemetry-exporter-otlp-proto-http >=1.27.0 + - opentelemetry-exporter-prometheus <1.0.0 + - opentelemetry-sdk >=1.29.0,<2.0 + - pillow >=10.3.0 + - prometheus_client >=0.21.0 + - prometheus-async >=22.2.0 + - psutil >=6.1.1 + - pydantic + - pydantic-settings >=2.7.1 + - pyinstrument >=5.0.1 + - python-json-logger >=2.0.7 + - requests >=2.32.3 + - rich >=13.9.4 + - safetensors >=0.5.2 + - sentinel >=0.3.0 + - sse-starlette >=2.1.2 + - tokenizers >=0.19.0 + - pytorch >=2.2.2,<=2.5.1 + - transformers >=4.40.1 + - uvicorn >=0.34.0 + - uvloop >=0.21.0 + - xgrammar ==0.1.11 + license: LicenseRef-Modular-Proprietary + size: 112658409 + timestamp: 1740681819160 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022718-release.conda + noarch: python + sha256: ff042a8abfed0e2e36b207e3d4f59a2b4577dea7f099b08d1aaef128ab796f09 + md5: 719ca7123d53415adcdd7f0cb8396c51 + depends: + - python >=3.9,<3.13 + - click >=8.0.0 + - mypy_extensions >=0.4.3 + - packaging >=22.0 + - pathspec >=0.9.0 + - platformdirs >=2 + - typing_extensions >=v4.12.2 + - python + license: MIT + size: 130852 + timestamp: 1740680254353 +- conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-2022.1.0-h84fe81f_915.tar.bz2 + sha256: 767318c4f2057822a7ebc238d6065ce12c6ae60df4ab892758adb79b1057ce02 + md5: b9c8f925797a93dbff45e1626b025a6b + depends: + - _openmp_mutex * *_llvm + - _openmp_mutex >=4.5 + - llvm-openmp >=14.0.3 + - tbb 2021.* + arch: x86_64 + platform: linux + license: LicenseRef-ProprietaryIntel + license_family: Proprietary + purls: [] + size: 209326825 + timestamp: 1652946040193 +- conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-devel-2022.1.0-ha770c72_916.tar.bz2 + sha256: 93d957608b17ada3039ff0acad2b8596451caa6829b3502fe87375e639ffc34e + md5: 69ba49e445f87aea2cba343a71a35ca2 + depends: + - mkl 2022.1.0 h84fe81f_915 + - mkl-include 2022.1.0 h84fe81f_915 + arch: x86_64 + platform: linux + license: LicenseRef-ProprietaryIntel + license_family: Proprietary + purls: [] + size: 25614 + timestamp: 1652946458276 +- conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-include-2022.1.0-h84fe81f_915.tar.bz2 + sha256: 63415fe64e99f8323d0191d45ea5b1ec3973317e728b9071267ffb7ff3b38364 + md5: 2dcd1acca05c11410d4494d7fc7dfa2a + arch: x86_64 + platform: linux + license: LicenseRef-ProprietaryIntel + license_family: Proprietary + purls: [] + size: 762563 + timestamp: 1652946186347 +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022718-release.conda + noarch: python + sha256: 19c33e23b27e240fee0b2a1d56921802ac88558dc2da417837cd590175561e16 + md5: 6b8d00b15817db11e026f824f7f0ba14 + depends: + - max-core ==25.2.0.dev2025022718 release + - python >=3.9,<3.13 + - jupyter_client >=8.6.2,<8.7 + - python + license: LicenseRef-Modular-Proprietary + size: 22981 + timestamp: 1740680254354 +- conda: https://conda.anaconda.org/conda-forge/linux-64/mpc-1.3.1-h24ddda3_1.conda + sha256: 1bf794ddf2c8b3a3e14ae182577c624fa92dea975537accff4bc7e5fea085212 + md5: aa14b9a5196a6d8dd364164b7ce56acf + depends: + - __glibc >=2.17,<3.0.a0 + - gmp >=6.3.0,<7.0a0 + - libgcc >=13 + - mpfr >=4.2.1,<5.0a0 + arch: x86_64 + platform: linux + license: LGPL-3.0-or-later + license_family: LGPL + purls: [] + size: 116777 + timestamp: 1725629179524 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/mpc-1.3.1-h8f1351a_1.conda + sha256: 2700899ad03302a1751dbf2bca135407e470dd83ac897ab91dd8675d4300f158 + md5: a5635df796b71f6ca400fc7026f50701 + depends: + - __osx >=11.0 + - gmp >=6.3.0,<7.0a0 + - mpfr >=4.2.1,<5.0a0 + arch: arm64 + platform: osx + license: LGPL-3.0-or-later + license_family: LGPL + purls: [] + size: 104766 + timestamp: 1725629165420 +- conda: https://conda.anaconda.org/conda-forge/linux-64/mpfr-4.2.1-h90cbb55_3.conda + sha256: f25d2474dd557ca66c6231c8f5ace5af312efde1ba8290a6ea5e1732a4e669c0 + md5: 2eeb50cab6652538eee8fc0bc3340c81 + depends: + - __glibc >=2.17,<3.0.a0 + - gmp >=6.3.0,<7.0a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: LGPL-3.0-only + license_family: LGPL + purls: [] + size: 634751 + timestamp: 1725746740014 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/mpfr-4.2.1-hb693164_3.conda + sha256: 4463e4e2aba7668e37a1b8532859191b4477a6f3602a5d6b4d64ad4c4baaeac5 + md5: 4e4ea852d54cc2b869842de5044662fb + depends: + - __osx >=11.0 + - gmp >=6.3.0,<7.0a0 + arch: arm64 + platform: osx + license: LGPL-3.0-only + license_family: LGPL + purls: [] + size: 345517 + timestamp: 1725746730583 +- pypi: https://download.pytorch.org/whl/mpmath-1.3.0-py3-none-any.whl#sha256=a0b2b9fe80bbcd81a6647ff13108738cfb482d481d826cc0e02f5b35e5c88d2c + name: mpmath + version: 1.3.0 + sha256: a0b2b9fe80bbcd81a6647ff13108738cfb482d481d826cc0e02f5b35e5c88d2c + requires_dist: + - pytest>=4.6 ; extra == 'develop' + - pycodestyle ; extra == 'develop' + - pytest-cov ; extra == 'develop' + - codecov ; extra == 'develop' + - wheel ; extra == 'develop' + - sphinx ; extra == 'docs' + - gmpy2>=2.1.0a4 ; platform_python_implementation != 'PyPy' and extra == 'gmpy' + - pytest>=4.6 ; extra == 'tests' +- conda: https://conda.anaconda.org/conda-forge/noarch/mpmath-1.3.0-pyhd8ed1ab_1.conda + sha256: 7d7aa3fcd6f42b76bd711182f3776a02bef09a68c5f117d66b712a6d81368692 + md5: 3585aa87c43ab15b167b574cd73b057b + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/mpmath?source=hash-mapping + size: 439705 + timestamp: 1733302781386 +- conda: 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 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/multidict?source=hash-mapping + size: 61507 + timestamp: 1733913288935 +- conda: 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 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/multidict?source=hash-mapping + size: 63077 + timestamp: 1733913233032 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/multidict-6.1.0-py312hdb8e49c_1.conda + sha256: 482fd09fb798090dc8cce2285fa69f43b1459099122eac2fb112d9b922b9f916 + md5: 0048335516fed938e4dd2c457b4c5b9b + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/multidict?source=hash-mapping + size: 55968 + timestamp: 1729065664275 +- conda: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.15-py312h98912ed_1.conda + sha256: bb612a921fafda6375a2204ffebd8811db8dd3b8f25ac9886cc9bcbff7e3664e + md5: 5a64b9f44790d9a187a85366dd0ffa8d + depends: + - dill >=0.3.6 + - libgcc-ng >=12 + - python >=3.12.0rc3,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/multiprocess?source=hash-mapping + size: 335666 + timestamp: 1695459025249 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.16-py312hb2c0f52_1.conda + sha256: f93627c78d1f86f593350196699b462c334542477aa55fe0212edf45392c9ab4 + md5: 642c63b684ce5614f157572b04816983 + depends: + - dill >=0.3.8 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/multiprocess?source=hash-mapping + size: 341428 + timestamp: 1724954862644 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/multiprocess-0.70.15-py312h02f2b3b_1.conda + sha256: 8041371e3ec3fbc2ca13c71b0180672896e6382e62892d9f6b11a4c5dd675951 + md5: 910ef2223c71902175418d9163152788 + depends: + - dill >=0.3.6 + - python >=3.12.0rc3,<3.13.0a0 + - python >=3.12.0rc3,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/multiprocess?source=hash-mapping + size: 335147 + timestamp: 1695459275360 +- conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda + sha256: 1895f47b7d68581a6facde5cb13ab8c2764c2e53a76bd746f8f98910dc4e08fe + md5: 29097e7ea634a45cc5386b95cac6568f + depends: + - python >=3.9 + license: MIT + license_family: MIT + purls: + - pkg:pypi/mypy-extensions?source=hash-mapping + size: 10854 + timestamp: 1733230986902 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda + sha256: 3fde293232fa3fca98635e1167de6b7c7fda83caf24b9d6c91ec9eefb4f4d586 + md5: 47e340acb35de30501a76c7c799c41d7 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: X11 AND BSD-3-Clause + purls: [] + size: 891641 + timestamp: 1738195959188 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-ha32ae93_3.conda + sha256: 91cfb655a68b0353b2833521dc919188db3d8a7f4c64bea2c6a7557b24747468 + md5: 182afabe009dc78d8b73100255ee6868 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: X11 AND BSD-3-Clause + purls: [] + size: 926034 + timestamp: 1738196018799 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda + sha256: 2827ada40e8d9ca69a153a45f7fd14f32b2ead7045d3bbb5d10964898fe65733 + md5: 068d497125e4bf8a66bf707254fff5ae + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: X11 AND BSD-3-Clause + purls: [] + size: 797030 + timestamp: 1738196177597 +- pypi: https://download.pytorch.org/whl/networkx-3.3-py3-none-any.whl#sha256=28575580c6ebdaf4505b22c6256a2b9de86b316dc63ba9e93abde3d78dfdbcf2 + name: networkx + version: '3.3' + sha256: 28575580c6ebdaf4505b22c6256a2b9de86b316dc63ba9e93abde3d78dfdbcf2 + requires_dist: + - numpy>=1.23 ; extra == 'default' + - scipy>=1.9,!=1.11.0,!=1.11.1 ; extra == 'default' + - matplotlib>=3.6 ; extra == 'default' + - pandas>=1.4 ; extra == 'default' + - changelist==0.5 ; extra == 'developer' + - pre-commit>=3.2 ; extra == 'developer' + - mypy>=1.1 ; extra == 'developer' + - rtoml ; extra == 'developer' + - sphinx>=7 ; extra == 'doc' + - pydata-sphinx-theme>=0.14 ; extra == 'doc' + - sphinx-gallery>=0.14 ; extra == 'doc' + - numpydoc>=1.7 ; extra == 'doc' + - pillow>=9.4 ; extra == 'doc' + - texext>=0.6.7 ; extra == 'doc' + - myst-nb>=1.0 ; extra == 'doc' + - lxml>=4.6 ; extra == 'extra' + - pygraphviz>=1.12 ; extra == 'extra' + - pydot>=2.0 ; extra == 'extra' + - sympy>=1.10 ; extra == 'extra' + - pytest>=7.2 ; extra == 'test' + - pytest-cov>=4.0 ; extra == 'test' + requires_python: '>=3.10' +- conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda + sha256: 39625cd0c9747fa5c46a9a90683b8997d8b9649881b3dc88336b13b7bdd60117 + md5: fd40bf7f7f4bc4b647dc8512053d9873 + depends: + - python >=3.10 + - python + constrains: + - numpy >=1.24 + - scipy >=1.10,!=1.11.0,!=1.11.1 + - matplotlib >=3.7 + - pandas >=2.0 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 1265008 + timestamp: 1731521053408 +- conda: https://conda.anaconda.org/conda-forge/linux-64/nlohmann_json-3.11.3-he02047a_1.conda + sha256: ce4bcced4f8eea71b7cac8bc3daac097abf7a5792f278cd811dedada199500c1 + md5: e46f7ac4917215b49df2ea09a694a3fa + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 122743 + timestamp: 1723652407663 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/nlohmann_json-3.11.3-h0a1ffab_1.conda + sha256: c90b1f11fc337d90a9e4c5aeeacac1418c5ba6a195097086566d38bb2ecf0f24 + md5: f2bd10ff23ab5c87327439c4499b3f3e + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 122755 + timestamp: 1723652622631 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/nlohmann_json-3.11.3-h00cdb27_1.conda + sha256: 3f4e6a4fa074bb297855f8111ab974dab6d9f98b7d4317d4dd46f8687ee2363b + md5: d2dee849c806430eee64d3acc98ce090 + depends: + - __osx >=11.0 + - libcxx >=16 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 123250 + timestamp: 1723652704997 +- conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda + sha256: fe3459c75cf84dcef6ef14efcc4adb0ade66038ddd27cadb894f34f4797687d8 + md5: d8285bea2a350f63fab23bf460221f3f + depends: + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - libgcc-ng >=12 + - liblapack >=3.9.0,<4.0a0 + - libstdcxx-ng >=12 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - numpy-base <0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/numpy?source=hash-mapping + size: 7484186 + timestamp: 1707225809722 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda + sha256: 23767677a7790bee5457d5e75ebd508b9a31c5354216f4310dd1acfca3f7a6f9 + md5: 9cebf5a06cb87d4569cd68df887af476 + depends: + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - libgcc-ng >=12 + - liblapack >=3.9.0,<4.0a0 + - libstdcxx-ng >=12 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - numpy-base <0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/numpy?source=hash-mapping + size: 6614296 + timestamp: 1707225994762 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda + sha256: c8841d6d6f61fd70ca80682efbab6bdb8606dc77c68d8acabfbd7c222054f518 + md5: d83fc83d589e2625a3451c9a7e21047c + depends: + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - libcxx >=16 + - liblapack >=3.9.0,<4.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - numpy-base <0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/numpy?source=hash-mapping + size: 6073136 + timestamp: 1707226249608 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ocl-icd-2.3.2-hb9d3cd8_2.conda + sha256: 96ddd13054032fabd54636f634d50bc74d10d8578bc946405c429b2d895db6f2 + md5: 2e8d2b469559d6b2cb6fd4b34f9c8d7f + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - opencl-headers >=2024.10.24 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 94934 + timestamp: 1732915114536 +- conda: https://conda.anaconda.org/conda-forge/linux-64/opencl-headers-2024.10.24-h5888daf_0.conda + sha256: 7e1d3ad55d4ad3ddf826e205d4603b9ed40c5e655a9dfd66b56f459d7ba14db3 + md5: 3ba02cce423fdac1a8582bd6bb189359 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 54060 + timestamp: 1732912937444 +- conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.3-h5fbd93e_0.conda + sha256: 5bee706ea5ba453ed7fd9da7da8380dd88b865c8d30b5aaec14d2b6dd32dbc39 + md5: 9e5816bc95d285c115a3ebc2f8563564 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libpng >=1.6.44,<1.7.0a0 + - libstdcxx >=13 + - libtiff >=4.7.0,<4.8.0a0 + - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 342988 + timestamp: 1733816638720 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openjpeg-2.5.3-h3f56577_0.conda + sha256: 92d310033e20538e896f4e4b1ea4205eb6604eee7c5c651c4965a0d8d3ca0f1d + md5: 04231368e4af50d11184b50e14250993 + depends: + - libgcc >=13 + - libpng >=1.6.44,<1.7.0a0 + - libstdcxx >=13 + - libtiff >=4.7.0,<4.8.0a0 + - libzlib >=1.3.1,<2.0a0 + arch: aarch64 + platform: linux + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 377796 + timestamp: 1733816683252 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/openjpeg-2.5.3-h8a3d83b_0.conda + sha256: 1d59bc72ca7faac06d349c1a280f5cfb8a57ee5896f1e24225a997189d7418c7 + md5: 4b71d78648dbcf68ce8bf22bb07ff838 + depends: + - __osx >=11.0 + - libcxx >=18 + - libpng >=1.6.44,<1.7.0a0 + - libtiff >=4.7.0,<4.8.0a0 + - libzlib >=1.3.1,<2.0a0 + arch: arm64 + platform: osx + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 319362 + timestamp: 1733816781741 +- conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.1-h7b32b05_0.conda + sha256: cbf62df3c79a5c2d113247ddea5658e9ff3697b6e741c210656e239ecaf1768f + md5: 41adf927e746dc75ecf0ef841c454e48 + depends: + - __glibc >=2.17,<3.0.a0 + - ca-certificates + - libgcc >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 2939306 + timestamp: 1739301879343 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.1-hd08dc88_0.conda + sha256: d80b52b56b2206053968270069616868cbeb289ef855cf1584b1bb0fef61b37c + md5: 09036190605c57eaecf01218e0e9542d + depends: + - ca-certificates + - libgcc >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 3476570 + timestamp: 1739303256089 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.1-h81ee809_0.conda + sha256: 4f8e2389e1b711b44182a075516d02c80fa7a3a7e25a71ff1b5ace9eae57a17a + md5: 75f9f0c7b1740017e2db83a53ab9a28e + depends: + - __osx >=11.0 + - ca-certificates + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 2934522 + timestamp: 1739301896733 +- conda: https://conda.anaconda.org/conda-forge/linux-64/orc-2.0.3-h12ee42a_2.conda + sha256: dff5cc8023905782c86b3459055f26d4b97890e403b0698477c9fed15d8669cc + md5: 4f6f9f3f80354ad185e276c120eac3f0 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - lz4-c >=1.10.0,<1.11.0a0 + - snappy >=1.2.1,<1.3.0a0 + - tzdata + - zstd >=1.5.6,<1.6.0a0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 1188881 + timestamp: 1735630209320 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/orc-2.0.3-hdd485aa_2.conda + sha256: b6c67542352a86cdf143c3066d5cda855b74454a156eedcd8958b494c6a32a83 + md5: d19f01b42e5d6a2908b65df435aff42f + depends: + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - lz4-c >=1.10.0,<1.11.0a0 + - snappy >=1.2.1,<1.3.0a0 + - tzdata + - zstd >=1.5.6,<1.6.0a0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 1167714 + timestamp: 1735630248837 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/orc-2.0.3-h0ff2369_2.conda + sha256: cca330695f3bdb8c0e46350c29cd4af3345865544e36f1d7c9ba9190ad22f5f4 + md5: 24b1897c0d24afbb70704ba998793b78 + depends: + - __osx >=11.0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libzlib >=1.3.1,<2.0a0 + - lz4-c >=1.10.0,<1.11.0a0 + - snappy >=1.2.1,<1.3.0a0 + - tzdata + - zstd >=1.5.6,<1.6.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 438520 + timestamp: 1735630624140 +- conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + sha256: da157b19bcd398b9804c5c52fc000fcb8ab0525bdb9c70f95beaa0bb42f85af1 + md5: 3bfed7e6228ebf2f7b9eaa47f1b4e2aa + depends: + - python >=3.8 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/packaging?source=hash-mapping + size: 60164 + timestamp: 1733203368787 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.3-py312hf9745cd_1.conda + sha256: ad275a83bfebfa8a8fee9b0569aaf6f513ada6a246b2f5d5b85903d8ca61887e + md5: 8bce4f6caaf8c5448c7ac86d87e26b4b + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + - numpy >=1.19,<3 + - numpy >=1.22.4 + - python >=3.12,<3.13.0a0 + - python-dateutil >=2.8.1 + - python-tzdata >=2022a + - python_abi 3.12.* *_cp312 + - pytz >=2020.1,<2024.2 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/pandas?source=hash-mapping + size: 15436913 + timestamp: 1726879054912 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pandas-2.2.3-py312ha2895bd_2.conda + sha256: a34b10077de97eea72c81cb96e3ddc7d48320c0fc7d9b28ba8d9d2bead1d8297 + md5: 39a91ac336d350513de6aad56da5a920 + depends: + - libgcc >=13 + - libstdcxx >=13 + - numpy >=1.19,<3 + - numpy >=1.22.4 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python-dateutil >=2.8.1 + - python-tzdata >=2022a + - python_abi 3.12.* *_cp312 + - pytz >=2020.1,<2024.2 + constrains: + - fsspec >=2022.11.0 + - s3fs >=2022.11.0 + - fastparquet >=2022.12.0 + - pyreadstat >=1.2.0 + - qtpy >=2.3.0 + - scipy >=1.10.0 + - beautifulsoup4 >=4.11.2 + - gcsfs >=2022.11.0 + - numexpr >=2.8.4 + - sqlalchemy >=2.0.0 + - pyxlsb >=1.0.10 + - numba >=0.56.4 + - lxml >=4.9.2 + - matplotlib >=3.6.3 + - psycopg2 >=2.9.6 + - tzdata >=2022.7 + - bottleneck >=1.3.6 + - xarray >=2022.12.0 + - xlsxwriter >=3.0.5 + - zstandard >=0.19.0 + - blosc >=1.21.3 + - pytables >=3.8.0 + - openpyxl >=3.1.0 + - pyqt5 >=5.15.8 + - tabulate >=0.9.0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/pandas?source=hash-mapping + size: 15162992 + timestamp: 1736811533875 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.3-py312hcd31e36_1.conda + sha256: ff0cb54b5d058c7987b4a0984066e893642d1865a7bb695294b6172e2fcdc457 + md5: c68bfa69e6086c381c74e16fd72613a8 + depends: + - __osx >=11.0 + - libcxx >=17 + - numpy >=1.19,<3 + - numpy >=1.22.4 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python-dateutil >=2.8.1 + - python-tzdata >=2022a + - python_abi 3.12.* *_cp312 + - pytz >=2020.1,<2024.2 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/pandas?source=hash-mapping + size: 14470437 + timestamp: 1726878887799 +- conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + sha256: 9f64009cdf5b8e529995f18e03665b03f5d07c0b17445b8badef45bde76249ee + md5: 617f15191456cc6a13db418a275435e5 + depends: + - python >=3.9 + license: MPL-2.0 + license_family: MOZILLA + purls: + - pkg:pypi/pathspec?source=hash-mapping + size: 41075 + timestamp: 1733233471940 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-10.3.0-py312h287a98d_1.conda + sha256: e1a2426f23535fc15e577d799685229a93117b645734e5cca60597bb23cef09e + md5: b1325cda3f250f9f842180607054e6ed + depends: + - freetype >=2.12.1,<3.0a0 + - lcms2 >=2.16,<3.0a0 + - libgcc-ng >=12 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libtiff >=4.6.0,<4.8.0a0 + - libwebp-base >=1.4.0,<2.0a0 + - libxcb >=1.16,<2.0.0a0 + - libzlib >=1.3.1,<2.0a0 + - openjpeg >=2.5.2,<3.0a0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - tk >=8.6.13,<8.7.0a0 + arch: x86_64 + platform: linux + license: HPND + purls: + - pkg:pypi/pillow?source=hash-mapping + size: 41702764 + timestamp: 1718833930009 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pillow-10.3.0-py312hc0f7016_1.conda + sha256: a55086ded25a27a0f6f7ec3bd82dfc6d594e7e119ad6a1e2dd9c449b4931e3e0 + md5: fe73c159f45d5660035ae21a3c799227 + depends: + - freetype >=2.12.1,<3.0a0 + - lcms2 >=2.16,<3.0a0 + - libgcc-ng >=12 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libtiff >=4.6.0,<4.8.0a0 + - libwebp-base >=1.4.0,<2.0a0 + - libxcb >=1.16,<2.0.0a0 + - libzlib >=1.3.1,<2.0a0 + - openjpeg >=2.5.2,<3.0a0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - tk >=8.6.13,<8.7.0a0 + arch: aarch64 + platform: linux + license: HPND + purls: + - pkg:pypi/pillow?source=hash-mapping + size: 42558380 + timestamp: 1718835195362 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-10.3.0-py312h39b1d8d_1.conda + sha256: 37907cdfdb8765d26cb239098fcb053b0b55216945d8bedc9429023ba8db11ab + md5: 4d3a01b6c6df5cc761adb1f3da5b99c2 + depends: + - __osx >=11.0 + - freetype >=2.12.1,<3.0a0 + - lcms2 >=2.16,<3.0a0 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libtiff >=4.6.0,<4.8.0a0 + - libwebp-base >=1.4.0,<2.0a0 + - libxcb >=1.16,<2.0.0a0 + - libzlib >=1.3.1,<2.0a0 + - openjpeg >=2.5.2,<3.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - tk >=8.6.13,<8.7.0a0 + arch: arm64 + platform: osx + license: HPND + purls: + - pkg:pypi/pillow?source=hash-mapping + size: 42691135 + timestamp: 1718834038233 +- conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + sha256: bb50f6499e8bc1d1a26f17716c97984671121608dc0c3ecd34858112bce59a27 + md5: 577852c7e53901ddccc7e6a9959ddebe + depends: + - python >=3.9 + license: MIT + license_family: MIT + purls: + - pkg:pypi/platformdirs?source=hash-mapping + size: 20448 + timestamp: 1733232756001 +- conda: https://conda.anaconda.org/conda-forge/linux-64/prometheus-cpp-1.3.0-ha5d0236_0.conda + sha256: 013669433eb447548f21c3c6b16b2ed64356f726b5f77c1b39d5ba17a8a4b8bc + md5: a83f6a2fdc079e643237887a37460668 + depends: + - __glibc >=2.17,<3.0.a0 + - libcurl >=8.10.1,<9.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - zlib + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 199544 + timestamp: 1730769112346 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/prometheus-cpp-1.3.0-h7938499_0.conda + sha256: 9350d7bbc3982a732ff13a7fd17b585509e3b7d0191ac7b810cc3224868e3648 + md5: 10f4301290e51c49979ff98d1bdf2556 + depends: + - libcurl >=8.10.1,<9.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - zlib + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 211335 + timestamp: 1730769181127 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/prometheus-cpp-1.3.0-h0967b3e_0.conda + sha256: 851a77ae1a8e90db9b9f3c4466abea7afb52713c3d98ceb0d37ba6ff27df2eff + md5: 7172339b49c94275ba42fec3eaeda34f + depends: + - __osx >=11.0 + - libcurl >=8.10.1,<9.0a0 + - libcxx >=18 + - libzlib >=1.3.1,<2.0a0 + - zlib + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 173220 + timestamp: 1730769371051 +- conda: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.1-py312h178313f_1.conda + sha256: 6d5ff6490c53e14591b70924711fe7bd70eb7fbeeeb1cbd9ed2f6d794ec8c4eb + md5: 349635694b4df27336bc15a49e9220e9 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/propcache?source=hash-mapping + size: 52947 + timestamp: 1737635699390 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.2.1-py312hcc812fe_1.conda + sha256: d759d8ab9c060b42cabf6312b9a04aa590daecabf1dd4e35731f4bc1b5c388bb + md5: 533b07e9fd835938f465225613825eee + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/propcache?source=hash-mapping + size: 52776 + timestamp: 1737635802135 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.1-py312h998013c_1.conda + sha256: 96145760baad111d7ae4213ea8f8cc035cf33b001f5ff37d92268e4d28b0941d + md5: 83678928c58c9ae76778a435b6c7a94a + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/propcache?source=hash-mapping + size: 50942 + timestamp: 1737635896600 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda + sha256: 9c88f8c64590e9567c6c80823f0328e58d3b1efb0e1c539c0315ceca764e0973 + md5: b3c17d95b5a10c6e64a21fa17573e70e + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 8252 + timestamp: 1726802366959 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pthread-stubs-0.4-h86ecc28_1002.conda + sha256: 977dfb0cb3935d748521dd80262fe7169ab82920afd38ed14b7fee2ea5ec01ba + md5: bb5a90c93e3bac3d5690acf76b4a6386 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 8342 + timestamp: 1726803319942 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pthread-stubs-0.4-hd74edd7_1002.conda + sha256: 8ed65e17fbb0ca944bfb8093b60086e3f9dd678c3448b5de212017394c247ee3 + md5: 415816daf82e0b23a736a069a75e9da7 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 8381 + timestamp: 1726802424786 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-19.0.1-py312h7900ff3_0.conda + sha256: 82a0b6ef00473c134ff32138a6fe1f6edc600f362f2007d33d6c6723e220a83d + md5: 972f2a7f04b117accc08a11469c2cb6e + depends: + - libarrow-acero 19.0.1.* + - libarrow-dataset 19.0.1.* + - libarrow-substrait 19.0.1.* + - libparquet 19.0.1.* + - pyarrow-core 19.0.1 *_0_* + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 25300 + timestamp: 1739792645286 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-19.0.1-py312h8025657_0.conda + sha256: d17f85be9e3c9ccdbf46a00f51a155d6c9d02837f3ff850539cc931ce149546f + md5: 0f2b788d71caa13c9e05fb4366e3b564 + depends: + - libarrow-acero 19.0.1.* + - libarrow-dataset 19.0.1.* + - libarrow-substrait 19.0.1.* + - libparquet 19.0.1.* + - pyarrow-core 19.0.1 *_0_* + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 25487 + timestamp: 1739792927040 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-19.0.1-py312h1f38498_0.conda + sha256: 212a9ef1971d69882b977a930b3e8cd9d78bb58c027119a52b92d48a5e47f9eb + md5: 4bbcfad0bfcad7ee1d617a9b6db564ee + depends: + - libarrow-acero 19.0.1.* + - libarrow-dataset 19.0.1.* + - libarrow-substrait 19.0.1.* + - libparquet 19.0.1.* + - pyarrow-core 19.0.1 *_0_* + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 25462 + timestamp: 1739792876991 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-19.0.1-py312h01725c0_0_cpu.conda + sha256: b2d397ee72a8e33aa1b2bcaa525b3bfc1dad333a631e668e54bcdcf275b3d69b + md5: 227543d1eef90da786f0c63bd0787839 + depends: + - __glibc >=2.17,<3.0.a0 + - libarrow 19.0.1.* *cpu + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - numpy >=1.21,<3 + - apache-arrow-proc =*=cpu + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/pyarrow?source=hash-mapping + size: 5203933 + timestamp: 1739792285799 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-19.0.1-py312h66f7834_0_cpu.conda + sha256: ab25433629022236b24d35a53dbef033ef60f3cb3a71fa630392d7340791bdc7 + md5: e83aadc9635bdcf69845587c4c837fd3 + depends: + - libarrow 19.0.1.* *cpu + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - numpy >=1.21,<3 + - apache-arrow-proc =*=cpu + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/pyarrow?source=hash-mapping + size: 5017444 + timestamp: 1739792893195 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-19.0.1-py312hc40f475_0_cpu.conda + sha256: 50ad4d67a1a2be32c2441a945a333b5347e36f027ea629fd903e7eaae77e0ed7 + md5: 90e3c0898e229d76e4a6949f621f0f58 + depends: + - __osx >=11.0 + - libarrow 19.0.1.* *cpu + - libcxx >=18 + - libzlib >=1.3.1,<2.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - apache-arrow-proc =*=cpu + - numpy >=1.21,<3 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/pyarrow?source=hash-mapping + size: 4398733 + timestamp: 1739792829575 +- conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda + sha256: 79db7928d13fab2d892592223d7570f5061c192f27b9febd1a418427b719acc6 + md5: 12c566707c80111f9799308d9e265aef + depends: + - python >=3.9 + - python + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 110100 + timestamp: 1733195786147 +- conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda + sha256: ba3b032fa52709ce0d9fd388f63d330a026754587a2f461117cac9ab73d8d0d8 + md5: 461219d1a5bd61342293efa2c0c90eac + depends: + - __unix + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/pysocks?source=hash-mapping + size: 21085 + timestamp: 1733217331982 +- conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.9-h9e4cc4f_0_cpython.conda + sha256: 64fed5178f1e9c8ac0f572ac0ce37955f5dee7b2bcac665202bc14f1f7dd618a + md5: 5665f0079432f8848079c811cdb537d5 + depends: + - __glibc >=2.17,<3.0.a0 + - bzip2 >=1.0.8,<2.0a0 + - ld_impl_linux-64 >=2.36.1 + - libexpat >=2.6.4,<3.0a0 + - libffi >=3.4,<4.0a0 + - libgcc >=13 + - liblzma >=5.6.4,<6.0a0 + - libnsl >=2.0.1,<2.1.0a0 + - libsqlite >=3.48.0,<4.0a0 + - libuuid >=2.38.1,<3.0a0 + - libxcrypt >=4.4.36 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.4.1,<4.0a0 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + constrains: + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Python-2.0 + purls: [] + size: 31581682 + timestamp: 1739521496324 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.9-h1683364_0_cpython.conda + sha256: 0366f38918bceda8ff5917d7bbe1cea2bc8b6c74e7245eb0e4b0d3c2d37f76cf + md5: 2e7ad70254455e0508adabff10218512 + depends: + - bzip2 >=1.0.8,<2.0a0 + - ld_impl_linux-aarch64 >=2.36.1 + - libexpat >=2.6.4,<3.0a0 + - libffi >=3.4,<4.0a0 + - libgcc >=13 + - liblzma >=5.6.4,<6.0a0 + - libnsl >=2.0.1,<2.1.0a0 + - libsqlite >=3.48.0,<4.0a0 + - libuuid >=2.38.1,<3.0a0 + - libxcrypt >=4.4.36 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.4.1,<4.0a0 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + constrains: + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Python-2.0 + purls: [] + size: 13804161 + timestamp: 1739519531794 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.9-hc22306f_0_cpython.conda + sha256: cbf81a78d3ca6e663e827523e6ddbc28369cac488da047a28f83875eb52fe5f6 + md5: 1d105a6c46a753e3c0bab54a1ad24063 + depends: + - __osx >=11.0 + - bzip2 >=1.0.8,<2.0a0 + - libexpat >=2.6.4,<3.0a0 + - libffi >=3.4,<4.0a0 + - liblzma >=5.6.4,<6.0a0 + - libsqlite >=3.48.0,<4.0a0 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.4.1,<4.0a0 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + constrains: + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Python-2.0 + purls: [] + size: 12947786 + timestamp: 1739520092196 +- conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + sha256: a50052536f1ef8516ed11a844f9413661829aa083304dc624c5925298d078d79 + md5: 5ba79d7c71f03c678c8ead841f347d6e + depends: + - python >=3.9 + - six >=1.5 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/python-dateutil?source=hash-mapping + size: 222505 + timestamp: 1733215763718 +- conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.1-pyhd8ed1ab_0.conda + sha256: 1597d6055d34e709ab8915091973552a0b8764c8032ede07c4e99670da029629 + md5: 392c91c42edd569a7ec99ed8648f597a + depends: + - python >=3.9 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/tzdata?source=hash-mapping + size: 143794 + timestamp: 1737541204030 +- conda: https://conda.anaconda.org/conda-forge/linux-64/python-xxhash-3.5.0-py312h66e93f0_2.conda + sha256: b5950a737d200e2e3cf199ab7b474ac194fcf4d6bee13bcbdf32c5a5cca7eaf0 + md5: cc3f6c452697c1cf7e4e6e5f21861f96 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - xxhash >=0.8.3,<0.8.4.0a0 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + purls: + - pkg:pypi/xxhash?source=hash-mapping + size: 23216 + timestamp: 1740594909669 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-xxhash-3.5.0-py312h52516f5_2.conda + sha256: b0c7528f2597e33911f179dad9852a4958683533570f8cc68976068b444461f4 + md5: c6de44ac405bf8a793c57850ea6b427a + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - xxhash >=0.8.3,<0.8.4.0a0 + arch: aarch64 + platform: linux + license: BSD-2-Clause + license_family: BSD + purls: + - pkg:pypi/xxhash?source=compressed-mapping + size: 23768 + timestamp: 1740595924431 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-xxhash-3.5.0-py312hea69d52_2.conda + sha256: 10c3df8dae696da4bd8532609999991ae1f3c4cc1a1e7f6a636cf6aa19d9eb82 + md5: b0c7097883bb4d8acfd72e7b9c6b93cd + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - xxhash >=0.8.3,<0.8.4.0a0 + arch: arm64 + platform: osx + license: BSD-2-Clause + license_family: BSD + purls: + - pkg:pypi/xxhash?source=hash-mapping + size: 21947 + timestamp: 1740595129087 +- conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda + build_number: 5 + sha256: d10e93d759931ffb6372b45d65ff34d95c6000c61a07e298d162a3bc2accebb0 + md5: 0424ae29b104430108f5218a66db7260 + constrains: + - python 3.12.* *_cpython + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 6238 + timestamp: 1723823388266 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.12-5_cp312.conda + build_number: 5 + sha256: 5ccdad9981753cc4a2d126e356673a21c0cd5b34e209cb8d476a3947d4ad9b39 + md5: 62b20f305498284a07dc6c45fd0e5c87 + constrains: + - python 3.12.* *_cpython + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 6329 + timestamp: 1723823366253 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-5_cp312.conda + build_number: 5 + sha256: 49d624e4b809c799d2bf257b22c23cf3fc4460f5570d9a58e7ad86350aeaa1f4 + md5: b76f9b1c862128e56ac7aa8cd2333de9 + constrains: + - python 3.12.* *_cpython + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 6278 + timestamp: 1723823099686 +- conda: https://conda.anaconda.org/pytorch/linux-64/pytorch-2.5.1-py3.12_cuda12.4_cudnn9.1.0_0.tar.bz2 + sha256: 8183ab363b7892f67ba3660929f1c3f4f8646e4a2a02d499d387acc0509764c3 + md5: 42164c6ce8e563c20a542686a8b9b964 + depends: + - blas * mkl + - filelock + - jinja2 + - llvm-openmp <16 + - mkl >=2018 + - networkx + - python >=3.12,<3.13.0a0 + - pytorch-cuda >=12.4,<12.5 + - pytorch-mutex 1.0 cuda + - pyyaml + - sympy + - torchtriton 3.1.0 + - typing_extensions + constrains: + - cpuonly <0 + arch: x86_64 + platform: linux + license: BSD 3-Clause + license_family: BSD + purls: + - pkg:pypi/torch?source=hash-mapping + size: 1571072276 + timestamp: 1729655770987 +- conda: https://conda.anaconda.org/pytorch/osx-arm64/pytorch-2.5.1-py3.12_0.tar.bz2 + sha256: 1d476688886b78f641973d1b5c1352eaece59484f4408f2c1af46e3634a6c957 + md5: a393d6275c53d5218015a23c741dc004 + depends: + - filelock + - jinja2 + - llvm-openmp <16 + - networkx + - python >=3.12,<3.13.0a0 + - pyyaml + - sympy + - typing_extensions + constrains: + - cpuonly + arch: arm64 + platform: osx + license: BSD 3-Clause + license_family: BSD + purls: + - pkg:pypi/torch?source=hash-mapping + size: 62089911 + timestamp: 1729651375444 +- conda: https://conda.anaconda.org/pytorch/linux-64/pytorch-cuda-12.4-hc786d27_7.tar.bz2 + sha256: 4ce6352f6270673aaf335909da2bbdd70ad8aaae489319e1e3a5ac0aae720314 + md5: 06635b1bbf5e2fef4a8b9b282500cd7b + depends: + - cuda-cudart >=12.4,<12.5 + - cuda-cupti >=12.4,<12.5 + - cuda-libraries >=12.4,<12.5 + - cuda-nvrtc >=12.4,<12.5 + - cuda-nvtx >=12.4,<12.5 + - cuda-runtime >=12.4,<12.5 + - libcublas >=12.4.5.8,<12.5.2.13 + - libcufft >=11.2.1.3,<11.2.3.18 + - libcusolver >=11.6.1.9,<11.6.2.40 + - libcusparse >=12.3.1.170,<12.4.1.18 + - libnpp >=12.2.5.30,<12.3.0.116 + - libnvjitlink >=12.4.127,<12.5.40 + - libnvjpeg >=12.3.1.117,<12.3.2.38 + arch: x86_64 + platform: linux + purls: [] + size: 7189 + timestamp: 1724179791784 +- conda: https://conda.anaconda.org/pytorch/noarch/pytorch-mutex-1.0-cuda.tar.bz2 + build_number: 100 + sha256: c16316183f51b74ca5eee4dcb8631052f328c0bbf244176734a0b7d390b81ee3 + md5: a948316e36fb5b11223b3fcfa93f8358 + purls: [] + size: 2906 + timestamp: 1628062930777 +- conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda + sha256: 1a7d6b233f7e6e3bbcbad054c8fd51e690a67b129a899a056a5e45dd9f00cb41 + md5: 3eeeeb9e4827ace8c0c1419c85d590ad + depends: + - python >=3.7 + license: MIT + license_family: MIT + purls: + - pkg:pypi/pytz?source=hash-mapping + size: 188538 + timestamp: 1706886944988 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py312h178313f_2.conda + sha256: 159cba13a93b3fe084a1eb9bda0a07afc9148147647f0d437c3c3da60980503b + md5: cf2485f39740de96e2a7f2bb18ed2fee + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - yaml >=0.2.5,<0.3.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: + - pkg:pypi/pyyaml?source=hash-mapping + size: 206903 + timestamp: 1737454910324 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyyaml-6.0.2-py312hcc812fe_2.conda + sha256: dc78e41d51300722ba35ac4a10d37339ceffbe22d7501c71dfd3f633a4f8e79a + md5: 4de4a5ff81c941674e08595244e7cd61 + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - yaml >=0.2.5,<0.3.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: + - pkg:pypi/pyyaml?source=hash-mapping + size: 199172 + timestamp: 1737454840766 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py312h998013c_2.conda + sha256: ad225ad24bfd60f7719709791345042c3cb32da1692e62bd463b084cf140e00d + md5: 68149ed4d4e9e1c42d2ba1f27f08ca96 + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - yaml >=0.2.5,<0.3.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: + - pkg:pypi/pyyaml?source=hash-mapping + size: 192148 + timestamp: 1737454886351 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.1-py312hbf22597_0.conda + sha256: 90ec0da0317d3d76990a40c61e1709ef859dd3d8c63838bad2814f46a63c8a2e + md5: 7cec8d0dac15a2d9fea8e49879aa779d + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libsodium >=1.0.20,<1.0.21.0a0 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - zeromq >=4.3.5,<4.4.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/pyzmq?source=hash-mapping + size: 382698 + timestamp: 1738271121975 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyzmq-26.2.1-py312h2427ae1_0.conda + sha256: 9558f9330093e5c21b7c04e2e212e19b9b88ad9c808315f12c0765b244018a09 + md5: 0520da8de6870d8ff63e818e927d1524 + depends: + - libgcc >=13 + - libsodium >=1.0.20,<1.0.21.0a0 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - zeromq >=4.3.5,<4.4.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/pyzmq?source=hash-mapping + size: 375156 + timestamp: 1738273130727 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.1-py312hf4875e0_0.conda + sha256: 70d398b334668dc597d33e27847ede1b0829a639b9c91ee845355e52c86c2293 + md5: bfbefdb140b546a80827ff7c9d5ac7b8 + depends: + - __osx >=11.0 + - libcxx >=18 + - libsodium >=1.0.20,<1.0.21.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - zeromq >=4.3.5,<4.4.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/pyzmq?source=hash-mapping + size: 364649 + timestamp: 1738271263898 +- conda: https://conda.anaconda.org/conda-forge/linux-64/re2-2024.07.02-h9925aae_2.conda + sha256: d213c44958d49ce7e0d4d5b81afec23640cce5016685dbb2d23571a99caa4474 + md5: e84ddf12bde691e8ec894b00ea829ddf + depends: + - libre2-11 2024.07.02 hbbce691_2 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 26786 + timestamp: 1735541074034 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/re2-2024.07.02-haa97905_2.conda + sha256: 040848655df9119bae5a549fb5c8956a5537120859416c1d9d0712b7bac9f12e + md5: 1bf0135339b4a7419a198a795d2d4be0 + depends: + - libre2-11 2024.07.02 h18dbdb1_2 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 26830 + timestamp: 1735540999398 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/re2-2024.07.02-h6589ca4_2.conda + sha256: 4d3799c05f8f662922a0acd129d119774760a3281b883603678e128d1cb307fb + md5: 7a8b4ad8c58a3408ca89d78788c78178 + depends: + - libre2-11 2024.07.02 h07bc746_2 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 26861 + timestamp: 1735541088455 +- conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda + sha256: 2d6d0c026902561ed77cd646b5021aef2d4db22e57a5b0178dfc669231e06d2c + md5: 283b96675859b20a825f8fa30f311446 + depends: + - libgcc >=13 + - ncurses >=6.5,<7.0a0 + arch: x86_64 + platform: linux + license: GPL-3.0-only + license_family: GPL + purls: [] + size: 282480 + timestamp: 1740379431762 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8382b9d_2.conda + sha256: 54bed3a3041befaa9f5acde4a37b1a02f44705b7796689574bcf9d7beaad2959 + md5: c0f08fc2737967edde1a272d4bf41ed9 + depends: + - libgcc >=13 + - ncurses >=6.5,<7.0a0 + arch: aarch64 + platform: linux + license: GPL-3.0-only + license_family: GPL + purls: [] + size: 291806 + timestamp: 1740380591358 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda + sha256: 7db04684d3904f6151eff8673270922d31da1eea7fa73254d01c437f49702e34 + md5: 63ef3f6e6d6d5c589e64f11263dc5676 + depends: + - ncurses >=6.5,<7.0a0 + arch: arm64 + platform: osx + license: GPL-3.0-only + license_family: GPL + purls: [] + size: 252359 + timestamp: 1740379663071 +- conda: https://conda.anaconda.org/conda-forge/linux-64/regex-2024.11.6-py312h66e93f0_0.conda + sha256: fcb5687d3ec5fff580b64b8fb649d9d65c999a91a5c3108a313ecdd2de99f06b + md5: 647770db979b43f9c9ca25dcfa7dc4e4 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Python-2.0 + license_family: PSF + purls: + - pkg:pypi/regex?source=hash-mapping + size: 402821 + timestamp: 1730952378415 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/regex-2024.11.6-py312hb2c0f52_0.conda + sha256: ec2c416860de29224e447e2031f8686a05476759c17da1f32f61d4307e540ec8 + md5: fa8b589107567f532fa1380e66f91776 + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Python-2.0 + license_family: PSF + purls: + - pkg:pypi/regex?source=hash-mapping + size: 398947 + timestamp: 1730952477463 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/regex-2024.11.6-py312hea69d52_0.conda + sha256: dcdec32f2c7dd37986baa692bedf9db126ad34e92e5e9b64f707cba3d04d2525 + md5: e73cda1f18846b608284bd784f061eac + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Python-2.0 + license_family: PSF + purls: + - pkg:pypi/regex?source=hash-mapping + size: 366374 + timestamp: 1730952427552 +- conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda + sha256: d701ca1136197aa121bbbe0e8c18db6b5c94acbd041c2b43c70e5ae104e1d8ad + md5: a9b9368f3701a417eac9edbcae7cb737 + depends: + - certifi >=2017.4.17 + - charset-normalizer >=2,<4 + - idna >=2.5,<4 + - python >=3.9 + - urllib3 >=1.21.1,<3 + constrains: + - chardet >=3.0.2,<6 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/requests?source=hash-mapping + size: 58723 + timestamp: 1733217126197 +- conda: https://conda.anaconda.org/conda-forge/linux-64/s2n-1.5.11-h072c03f_0.conda + sha256: cfdd98c8f9a1e5b6f9abce5dac6d590cc9fe541a08466c9e4a26f90e00b569e3 + md5: 5e8060d52f676a40edef0006a75c718f + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - openssl >=3.4.0,<4.0a0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 356213 + timestamp: 1737146304079 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/s2n-1.5.11-h3caee7a_0.conda + sha256: 5a7ae66f96be24c3b2007139b6c3701ab015b4b4eb4eccfdd07be97710243a47 + md5: 1517c0518f8a06a48a15f41d94252874 + depends: + - libgcc >=13 + - openssl >=3.4.0,<4.0a0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 352811 + timestamp: 1737146319512 +- conda: https://conda.anaconda.org/conda-forge/linux-64/safetensors-0.5.3-py312h12e396e_0.conda + sha256: 23dec8105d34e51cc2269a79680a666351233e2dc171ff14c46d3455d2c22080 + md5: fd1fc1f1e6ceee16d9a58d3ff5a57c7f + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - __glibc >=2.17 + arch: x86_64 + platform: linux + license: Apache-2.0 + purls: + - pkg:pypi/safetensors?source=compressed-mapping + size: 431388 + timestamp: 1740651706122 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/safetensors-0.5.3-py312h8cbf658_0.conda + sha256: 24ca173b9f39d5e5cabc6ea7e570b500682669e5910510020549f8696e29992d + md5: eb2d82d057535f4fb3182f43df429495 + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - __glibc >=2.17 + arch: aarch64 + platform: linux + license: Apache-2.0 + purls: + - pkg:pypi/safetensors?source=hash-mapping + size: 417509 + timestamp: 1740651719895 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/safetensors-0.5.3-py312hcd83bfe_0.conda + sha256: 1d0412be1b16df769c69d537907e690be50d06d05f757ba2451facb6883a3eb3 + md5: 68b99db908e1ec63c0cacae262a835e9 + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - __osx >=11.0 + arch: arm64 + platform: osx + license: Apache-2.0 + purls: + - pkg:pypi/safetensors?source=compressed-mapping + size: 382676 + timestamp: 1740651813281 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-0.2.0-hc8f76dd_10.conda + sha256: a1bde55ceb9dc5bd7879283d0f594a6ce65c07fda3de76230c65a4a5df47858a + md5: 480e915dfc6c592615ef6f217e615aa6 + depends: + - libsentencepiece 0.2.0 h8e10757_10 + - python_abi 3.12.* *_cp312 + - sentencepiece-python 0.2.0 py312hb6b8a2b_10 + - sentencepiece-spm 0.2.0 h8e10757_10 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 19470 + timestamp: 1735628377167 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-0.2.0-h6c1b121_10.conda + sha256: 846d885a560fbb4375b645e7caf2f756ef88bbeb441b670375da0090aaa427fb + md5: 33a89eb1dedae8eb7222b0a89856f337 + depends: + - libsentencepiece 0.2.0 h6164ad9_10 + - python_abi 3.12.* *_cp312 + - sentencepiece-python 0.2.0 py312h197ff68_10 + - sentencepiece-spm 0.2.0 h6164ad9_10 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 19686 + timestamp: 1735628718991 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-0.2.0-h22a84ea_10.conda + sha256: 526c934b897131bd274697649c3b1c492a7d66c03368885a954112468b3c1424 + md5: 346abe448f69949a65473b336856860a + depends: + - libsentencepiece 0.2.0 he13a0af_10 + - python_abi 3.12.* *_cp312 + - sentencepiece-python 0.2.0 py312h155166a_10 + - sentencepiece-spm 0.2.0 he13a0af_10 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 19759 + timestamp: 1735628533490 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-python-0.2.0-py312hb6b8a2b_10.conda + sha256: 37df7fb659564587b950b39c936769d9b5095afb7bc223f42d6248a5540c6567 + md5: 7908b7b977e2e123a5f6a29906f2ce44 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 h8e10757_10 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/sentencepiece?source=hash-mapping + size: 2411182 + timestamp: 1735628106455 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-python-0.2.0-py312h197ff68_10.conda + sha256: a7c2c19cc397c7632e2630af49ddcff128f145c93ea493421e6f42bfa5e1d30b + md5: 5642e4545a3cf03e446fb3b3e9fd723b + depends: + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 h6164ad9_10 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/sentencepiece?source=hash-mapping + size: 2458076 + timestamp: 1735628298246 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-python-0.2.0-py312h155166a_10.conda + sha256: 2d59614aeafbf54cc718805798c11c2d0a3b4b8d947d1bd81c87c484b4883077 + md5: 6e11367ef670296fce01fc9860be944d + depends: + - __osx >=11.0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 he13a0af_10 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/sentencepiece?source=hash-mapping + size: 2433303 + timestamp: 1735628083958 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-spm-0.2.0-h8e10757_10.conda + sha256: 6b55e1121545357d63c3aa0766931720e8aafc52d88641ba7631c8cbaa68c52f + md5: e977b7be5ac26c55825e121e00b90493 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 h8e10757_10 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 89076 + timestamp: 1735628334078 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-spm-0.2.0-h6164ad9_10.conda + sha256: b98fc1028a8e8fbf309af383f9c837290a14e076e6c5533dc251694ea33ffc6e + md5: a4b75936c01dca3f089f02752b7ee325 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 h6164ad9_10 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 85983 + timestamp: 1735628693813 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-spm-0.2.0-he13a0af_10.conda + sha256: b760aeee02e2afbfcce3f559e8a227aa4c94139157b1702fdfb41a057dad0e52 + md5: 9b7300f23cd330da8664cd072c162e5f + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 he13a0af_10 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 83826 + timestamp: 1735628514667 +- pypi: https://download.pytorch.org/whl/setuptools-70.2.0-py3-none-any.whl#sha256=b8b8060bb426838fbe942479c90296ce976249451118ef566a5a0b7d8b78fb05 + name: setuptools + version: 70.2.0 + sha256: b8b8060bb426838fbe942479c90296ce976249451118ef566a5a0b7d8b78fb05 + requires_dist: + - sphinx>=3.5 ; extra == 'doc' + - jaraco-packaging>=9.3 ; extra == 'doc' + - rst-linker>=1.9 ; extra == 'doc' + - furo ; extra == 'doc' + - sphinx-lint ; extra == 'doc' + - jaraco-tidelift>=1.4 ; extra == 'doc' + - pygments-github-lexers==0.0.5 ; extra == 'doc' + - sphinx-favicon ; extra == 'doc' + - sphinx-inline-tabs ; extra == 'doc' + - sphinx-reredirects ; extra == 'doc' + - sphinxcontrib-towncrier ; extra == 'doc' + - sphinx-notfound-page>=1,<2 ; extra == 'doc' + - pyproject-hooks!=1.1 ; extra == 'doc' + - pytest>=6,!=8.1.* ; extra == 'test' + - pytest-checkdocs>=2.4 ; extra == 'test' + - pytest-cov ; extra == 'test' + - pytest-mypy ; extra == 'test' + - pytest-enabler>=2.2 ; extra == 'test' + - virtualenv>=13.0.0 ; extra == 'test' + - wheel ; extra == 'test' + - pip>=19.1 ; extra == 'test' + - packaging>=23.2 ; extra == 'test' + - jaraco-envs>=2.2 ; extra == 'test' + - pytest-xdist>=3 ; extra == 'test' + - jaraco-path>=3.2.0 ; extra == 'test' + - build[virtualenv]>=1.0.3 ; extra == 'test' + - filelock>=3.4.0 ; extra == 'test' + - ini2toml[lite]>=0.14 ; extra == 'test' + - tomli-w>=1.0.0 ; extra == 'test' + - pytest-timeout ; extra == 'test' + - pytest-home>=0.5 ; extra == 'test' + - mypy==1.10.0 ; extra == 'test' + - tomli ; extra == 'test' + - importlib-metadata ; extra == 'test' + - pytest-subprocess ; extra == 'test' + - pyproject-hooks!=1.1 ; extra == 'test' + - jaraco-test ; extra == 'test' + - jaraco-develop>=7.21 ; python_full_version >= '3.9' and sys_platform != 'cygwin' and extra == 'test' + - pytest-ruff>=0.3.2 ; sys_platform != 'cygwin' and extra == 'test' + - pytest-perf ; sys_platform != 'cygwin' and extra == 'test' + requires_python: '>=3.8' +- conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + sha256: 41db0180680cc67c3fa76544ffd48d6a5679d96f4b71d7498a759e94edc9a2db + md5: a451d576819089b0d672f18768be0f65 + depends: + - python >=3.9 + license: MIT + license_family: MIT + purls: + - pkg:pypi/six?source=hash-mapping + size: 16385 + timestamp: 1733381032766 +- conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-h8bd8927_1.conda + sha256: ec91e86eeb2c6bbf09d51351b851e945185d70661d2ada67204c9a6419d282d3 + md5: 3b3e64af585eadfb52bb90b553db5edf + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 42739 + timestamp: 1733501881851 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-hd4fb6f5_1.conda + sha256: c4a07ae5def8d55128f25a567a296ef9d7bf99a3bc79d46bd5160c076a5f50af + md5: 2fcc6cd1e5550deb509073fd2e6693e1 + depends: + - libgcc >=13 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 43032 + timestamp: 1733501964775 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-h98b9ce2_1.conda + sha256: 4242f95b215127a006eb664fe26ed5a82df87e90cbdbc7ce7ff4971f0720997f + md5: ded86dee325290da2967a3fea3800eb5 + depends: + - __osx >=11.0 + - libcxx >=18 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 35857 + timestamp: 1733502172664 +- pypi: https://download.pytorch.org/whl/sympy-1.13.1-py3-none-any.whl#sha256=db36cdc64bf61b9b24578b6f7bab1ecdd2452cf008f34faa33776680c26d66f8 + name: sympy + version: 1.13.1 + sha256: db36cdc64bf61b9b24578b6f7bab1ecdd2452cf008f34faa33776680c26d66f8 + requires_dist: + - mpmath>=1.1.0,<1.4 + - pytest>=7.1.0 ; extra == 'dev' + - hypothesis>=6.70.0 ; extra == 'dev' + requires_python: '>=3.8' +- conda: https://conda.anaconda.org/conda-forge/noarch/sympy-1.13.3-pyh2585a3b_105.conda + sha256: 929d939c5a8bcdc10a17501890918da68cf14a5883b36fddf77b8f0fbf040be2 + md5: 254cd5083ffa04d96e3173397a3d30f4 + depends: + - __unix + - cpython + - gmpy2 >=2.0.8 + - mpmath >=0.19 + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/sympy?source=hash-mapping + size: 4523617 + timestamp: 1736248315124 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tbb-2021.13.0-hceb3a55_1.conda + sha256: 65463732129899770d54b1fbf30e1bb82fdebda9d7553caf08d23db4590cd691 + md5: ba7726b8df7b9d34ea80e82b097a4893 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libhwloc >=2.11.2,<2.11.3.0a0 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 175954 + timestamp: 1732982638805 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda + sha256: e0569c9caa68bf476bead1bed3d79650bb080b532c64a4af7d8ca286c08dea4e + md5: d453b98d9c83e71da0741bb0ff4d76bc + depends: + - libgcc-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 + arch: x86_64 + platform: linux + license: TCL + license_family: BSD + purls: [] + size: 3318875 + timestamp: 1699202167581 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda + sha256: 7fa27cc512d3a783f38bd16bbbffc008807372499d5b65d089a8e43bde9db267 + md5: f75105e0585851f818e0009dd1dde4dc + depends: + - libgcc-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 + arch: aarch64 + platform: linux + license: TCL + license_family: BSD + purls: [] + size: 3351802 + timestamp: 1695506242997 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda + sha256: 72457ad031b4c048e5891f3f6cb27a53cb479db68a52d965f796910e71a403a8 + md5: b50a57ba89c32b62428b71a875291c9b + depends: + - libzlib >=1.2.13,<2.0.0a0 + arch: arm64 + platform: osx + license: TCL + license_family: BSD + purls: [] + size: 3145523 + timestamp: 1699202432999 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.21.0-py312h8360d73_0.conda + sha256: 4f504a5e9d77c6d88a8f735c4319429d8bf40b742384f908a2efe0a09acc3cc5 + md5: f953aa733207f3d37acf4a3efbedba89 + depends: + - __glibc >=2.17,<3.0.a0 + - huggingface_hub >=0.16.4,<1.0 + - libgcc >=13 + - libstdcxx >=13 + - openssl >=3.4.0,<4.0a0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - __glibc >=2.17 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/tokenizers?source=hash-mapping + size: 2258007 + timestamp: 1732734202127 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.21.0-py312ha0d6ea1_0.conda + sha256: ef0f4d4e2c798b1821187ea0ba4c86484e48abaa0e9a19fe68030fa7ff5dde84 + md5: 077f48c9e0c08a30d842e15c51df4143 + depends: + - huggingface_hub >=0.16.4,<1.0 + - libgcc >=13 + - libstdcxx >=13 + - openssl >=3.4.0,<4.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - __glibc >=2.17 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/tokenizers?source=hash-mapping + size: 2331194 + timestamp: 1732734303196 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.21.0-py312hf3e4074_0.conda + sha256: 5d395333fcb22dc611140286c1f2ea8b3fa220a4931c583587cb612238091555 + md5: 4c732c74b485ef7ac8ec1c548dd45e8e + depends: + - __osx >=11.0 + - huggingface_hub >=0.16.4,<1.0 + - libcxx >=18 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - __osx >=11.0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/tokenizers?source=hash-mapping + size: 1931389 + timestamp: 1732734727624 +- pypi: https://download.pytorch.org/whl/cpu/torch-2.5.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl#sha256=36d1be99281b6f602d9639bd0af3ee0006e7aab16f6718d86f709d395b6f262c + name: torch + version: 2.5.1 + sha256: 36d1be99281b6f602d9639bd0af3ee0006e7aab16f6718d86f709d395b6f262c + requires_dist: + - filelock + - typing-extensions>=4.8.0 + - networkx + - jinja2 + - fsspec + - nvidia-cuda-nvrtc-cu12==12.4.127 ; platform_machine == 'x86_64' and platform_system == 'Linux' + - nvidia-cuda-runtime-cu12==12.4.127 ; platform_machine == 'x86_64' and platform_system == 'Linux' + - nvidia-cuda-cupti-cu12==12.4.127 ; platform_machine == 'x86_64' and platform_system == 'Linux' + - nvidia-cudnn-cu12==9.1.0.70 ; platform_machine == 'x86_64' and platform_system == 'Linux' + - nvidia-cublas-cu12==12.4.5.8 ; platform_machine == 'x86_64' and platform_system == 'Linux' + - nvidia-cufft-cu12==11.2.1.3 ; platform_machine == 'x86_64' and platform_system == 'Linux' + - nvidia-curand-cu12==10.3.5.147 ; platform_machine == 'x86_64' and platform_system == 'Linux' + - nvidia-cusolver-cu12==11.6.1.9 ; platform_machine == 'x86_64' and platform_system == 'Linux' + - nvidia-cusparse-cu12==12.3.1.170 ; platform_machine == 'x86_64' and platform_system == 'Linux' + - nvidia-nccl-cu12==2.21.5 ; platform_machine == 'x86_64' and platform_system == 'Linux' + - nvidia-nvtx-cu12==12.4.127 ; platform_machine == 'x86_64' and platform_system == 'Linux' + - nvidia-nvjitlink-cu12==12.4.127 ; platform_machine == 'x86_64' and platform_system == 'Linux' + - sympy==1.12.1 ; python_full_version == '3.8.*' + - setuptools ; python_full_version >= '3.12' + - sympy==1.13.1 ; python_full_version >= '3.9' + - opt-einsum>=3.3 ; extra == 'opt-einsum' + - optree>=0.12.0 ; extra == 'optree' + requires_python: '>=3.8.0' +- conda: https://conda.anaconda.org/pytorch/linux-64/torchtriton-3.1.0-py312.tar.bz2 + build_number: 1 + sha256: f0beb429b3834a3796626642829a7e4bb9d4fe6477c8dc614a55e5c4f15a6a05 + md5: bb4b2d07cb6b9b476e78740c08ba69fe + depends: + - filelock + - python >=3.12,<3.13.0a0 + - pytorch + arch: x86_64 + platform: linux + license: MIT + purls: + - pkg:pypi/triton?source=hash-mapping + size: 244939186 + timestamp: 1727971107041 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda + sha256: 062a3a3a37fa8615ce57929ba7e982c76f5a5810bcebd435950f6d6c4147c310 + md5: e417822cb989e80a0d2b1b576fdd1657 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/tornado?source=hash-mapping + size: 840414 + timestamp: 1732616043734 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py312h52516f5_0.conda + sha256: 4c19a544354172b2273553267e734795a6da3c78a04c2d19f8e9e159ca3178bc + md5: e28996d9d2d44d777b7e6fb12f63715b + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/tornado?source=hash-mapping + size: 841662 + timestamp: 1732616934923 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda + sha256: 964a2705a36c50040c967b18b45b9cc8de3c2aff4af546979a574e0b38e58e39 + md5: fb0605888a475d6a380ae1d1a819d976 + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/tornado?source=hash-mapping + size: 842549 + timestamp: 1732616081362 +- conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + sha256: 11e2c85468ae9902d24a27137b6b39b4a78099806e551d390e394a8c34b48e40 + md5: 9efbfdc37242619130ea42b1cc4ed861 + depends: + - colorama + - python >=3.9 + license: MPL-2.0 or MIT + purls: + - pkg:pypi/tqdm?source=hash-mapping + size: 89498 + timestamp: 1735661472632 +- conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + sha256: f39a5620c6e8e9e98357507262a7869de2ae8cc07da8b7f84e517c9fd6c2b959 + md5: 019a7385be9af33791c989871317e1ed + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/traitlets?source=hash-mapping + size: 110051 + timestamp: 1733367480074 +- conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.49.0-pyhd8ed1ab_0.conda + sha256: d522d7dda6ebe296b20955b1be3eccc5d5cfdfd413457c1236323b6a08fffd9e + md5: e63e78e545fcf857cac3372edeb67ea4 + depends: + - datasets !=2.5.0 + - filelock + - huggingface_hub >=0.23.0,<1.0 + - numpy >=1.17 + - packaging >=20.0 + - python >=3.9 + - pyyaml >=5.1 + - regex !=2019.12.17 + - requests + - safetensors >=0.4.1 + - tokenizers >=0.21,<0.22 + - tqdm >=4.27 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/transformers?source=hash-mapping + size: 3514640 + timestamp: 1739826374204 +- conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda + noarch: python + sha256: c8e9c1c467b5f960b627d7adc1c65fece8e929a3de89967e91ef0f726422fd32 + md5: b6a408c64b78ec7b779a3e5c7a902433 + depends: + - typing_extensions 4.12.2 pyha770c72_1 + license: PSF-2.0 + license_family: PSF + purls: [] + size: 10075 + timestamp: 1733188758872 +- conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + sha256: 337be7af5af8b2817f115b3b68870208b30c31d3439bec07bfb2d8f4823e3568 + md5: d17f13df8b65464ca316cbc000a3cb64 + depends: + - python >=3.9 + license: PSF-2.0 + license_family: PSF + purls: + - pkg:pypi/typing-extensions?source=hash-mapping + size: 39637 + timestamp: 1733188758212 +- conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + sha256: c4b1ae8a2931fe9b274c44af29c5475a85b37693999f8c792dad0f8c6734b1de + md5: dbcace4706afdfb7eb891f7b37d07c04 + license: LicenseRef-Public-Domain + purls: [] + size: 122921 + timestamp: 1737119101255 +- conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda + sha256: 114919ffa80c328127dab9c8e7a38f9d563c617691fb81fccb11c1e86763727e + md5: 32674f8dbfb7b26410ed580dd3c10a29 + depends: + - brotli-python >=1.0.9 + - h2 >=4,<5 + - pysocks >=1.5.6,<2.0,!=1.5.7 + - python >=3.9 + - zstandard >=0.18.0 + license: MIT + license_family: MIT + purls: + - pkg:pypi/urllib3?source=hash-mapping + size: 100102 + timestamp: 1734859520452 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-hb9d3cd8_0.conda + sha256: ed10c9283974d311855ae08a16dfd7e56241fac632aec3b92e3cfe73cff31038 + md5: f6ebe2cb3f82ba6c057dde5d9debe4f7 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 14780 + timestamp: 1734229004433 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxau-1.0.12-h86ecc28_0.conda + sha256: 7829a0019b99ba462aece7592d2d7f42e12d12ccd3b9614e529de6ddba453685 + md5: d5397424399a66d33c80b1f2345a36a6 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 15873 + timestamp: 1734230458294 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxau-1.0.12-h5505292_0.conda + sha256: f33e6f013fc36ebc200f09ddead83468544cb5c353a3b50499b07b8c34e28a8d + md5: 50901e0764b7701d8ed7343496f4f301 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 13593 + timestamp: 1734229104321 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb9d3cd8_0.conda + sha256: 6b250f3e59db07c2514057944a3ea2044d6a8cdde8a47b6497c254520fade1ee + md5: 8035c64cb77ed555e3f150b7b3972480 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 19901 + timestamp: 1727794976192 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxdmcp-1.1.5-h57736b2_0.conda + sha256: efcc150da5926cf244f757b8376d96a4db78bc15b8d90ca9f56ac6e75755971f + md5: 25a5a7b797fe6e084e04ffe2db02fc62 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 20615 + timestamp: 1727796660574 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxdmcp-1.1.5-hd74edd7_0.conda + sha256: 9939a166d780700d81023546759102b33fdc2c5f11ef09f5f66c77210fd334c8 + md5: 77c447f48cab5d3a15ac224edb86a968 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 18487 + timestamp: 1727795205022 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xxhash-0.8.3-hb9d3cd8_0.conda + sha256: 3bbc35b9ee44ffea1de441f906ba05139873a28325f8a8ed152e17af30e62232 + md5: 2ef1822d8168ed5d79ab1bf01088419a + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 107794 + timestamp: 1735848927308 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xxhash-0.8.3-h86ecc28_0.conda + sha256: f210d0b6b8543acef9b73db43a557c94e695f9dfaa2f6989057c449d9c3e1239 + md5: d992916b6e4f6e7412332bbcd41c5aa2 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 104556 + timestamp: 1735848964267 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/xxhash-0.8.3-h5505292_0.conda + sha256: 43573d504e7edc4b876a9058dc316aa9851ced1d433c2b569d583c2db22c76e2 + md5: 92a98c1bbae4729dfd0216ca22c21858 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 98318 + timestamp: 1735849111725 +- conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 + sha256: a4e34c710eeb26945bdbdaba82d3d74f60a78f54a874ec10d373811a5d217535 + md5: 4cb3ad778ec2d5a7acbdf254eb1c42ae + depends: + - libgcc-ng >=9.4.0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 89141 + timestamp: 1641346969816 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yaml-0.2.5-hf897c2e_2.tar.bz2 + sha256: 8bc601d6dbe249eba44b3c456765265cd8f42ef1e778f8df9b0c9c88b8558d7e + md5: b853307650cb226731f653aa623936a4 + depends: + - libgcc-ng >=9.4.0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 92927 + timestamp: 1641347626613 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 + sha256: 93181a04ba8cfecfdfb162fc958436d868cc37db504c58078eab4c1a3e57fbb7 + md5: 4bb3f014845110883a3c5ee811fd84b4 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 88016 + timestamp: 1641347076660 +- conda: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.18.3-py312h178313f_1.conda + sha256: 6b054c93dd19fd7544af51b41a8eacca2ab62271f6c0c5a2a0cffe80dc37a0ce + md5: 6822c49f294d4355f19d314b8b6063d8 + depends: + - __glibc >=2.17,<3.0.a0 + - idna >=2.0 + - libgcc >=13 + - multidict >=4.0 + - propcache >=0.2.1 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/yarl?source=hash-mapping + size: 152305 + timestamp: 1737575898300 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.18.3-py312hcc812fe_1.conda + sha256: bfa211c0dd5dbb308788f055277dc428b7923ceb2de6a22ea98bc17cf306f9f5 + md5: d14c78abdd6109e2b7162f53b6cc1e77 + depends: + - idna >=2.0 + - libgcc >=13 + - multidict >=4.0 + - propcache >=0.2.1 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/yarl?source=hash-mapping + size: 149654 + timestamp: 1737576065314 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.18.3-py312h998013c_1.conda + sha256: 48821d23567ca0f853eee6f7812c74392867e123798b5b3c44f58758d8eb580e + md5: 092d3b40acc67c470f379049be343a7a + depends: + - __osx >=11.0 + - idna >=2.0 + - multidict >=4.0 + - propcache >=0.2.1 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/yarl?source=hash-mapping + size: 145543 + timestamp: 1737576074753 +- conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda + sha256: a4dc72c96848f764bb5a5176aa93dd1e9b9e52804137b99daeebba277b31ea10 + md5: 3947a35e916fcc6b9825449affbf4214 + depends: + - __glibc >=2.17,<3.0.a0 + - krb5 >=1.21.3,<1.22.0a0 + - libgcc >=13 + - libsodium >=1.0.20,<1.0.21.0a0 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: MPL-2.0 + license_family: MOZILLA + purls: [] + size: 335400 + timestamp: 1731585026517 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zeromq-4.3.5-h5efb499_7.conda + sha256: a6003096dc0570a86492040ba32b04ce7662b159600be2252b7a0dfb9414e21c + md5: f2f3282559a4b87b7256ecafb4610107 + depends: + - krb5 >=1.21.3,<1.22.0a0 + - libgcc >=13 + - libsodium >=1.0.20,<1.0.21.0a0 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: MPL-2.0 + license_family: MOZILLA + purls: [] + size: 371419 + timestamp: 1731589490850 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda + sha256: 9e585569fe2e7d3bea71972cd4b9f06b1a7ab8fa7c5139f92a31cbceecf25a8a + md5: f7e6b65943cb73bce0143737fded08f1 + depends: + - __osx >=11.0 + - krb5 >=1.21.3,<1.22.0a0 + - libcxx >=18 + - libsodium >=1.0.20,<1.0.21.0a0 + arch: arm64 + platform: osx + license: MPL-2.0 + license_family: MOZILLA + purls: [] + size: 281565 + timestamp: 1731585108039 +- conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + sha256: 567c04f124525c97a096b65769834b7acb047db24b15a56888a322bf3966c3e1 + md5: 0c3cc595284c5e8f0f9900a9b228a332 + depends: + - python >=3.9 + license: MIT + license_family: MIT + purls: + - pkg:pypi/zipp?source=hash-mapping + size: 21809 + timestamp: 1732827613585 +- conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.1-hb9d3cd8_2.conda + sha256: 5d7c0e5f0005f74112a34a7425179f4eb6e73c92f5d109e6af4ddeca407c92ab + md5: c9f075ab2f33b3bbee9e62d4ad0a6cd8 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libzlib 1.3.1 hb9d3cd8_2 + arch: x86_64 + platform: linux + license: Zlib + license_family: Other + purls: [] + size: 92286 + timestamp: 1727963153079 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zlib-1.3.1-h86ecc28_2.conda + sha256: b4f649aa3ecdae384d5dad7074e198bff120edd3dfb816588e31738fc6d627b1 + md5: bc230abb5d21b63ff4799b0e75204783 + depends: + - libgcc >=13 + - libzlib 1.3.1 h86ecc28_2 + arch: aarch64 + platform: linux + license: Zlib + license_family: Other + purls: [] + size: 95582 + timestamp: 1727963203597 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zlib-1.3.1-h8359307_2.conda + sha256: 58f8860756680a4831c1bf4f294e2354d187f2e999791d53b1941834c4b37430 + md5: e3170d898ca6cb48f1bb567afb92f775 + depends: + - __osx >=11.0 + - libzlib 1.3.1 h8359307_2 + arch: arm64 + platform: osx + license: Zlib + license_family: Other + purls: [] + size: 77606 + timestamp: 1727963209370 +- conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312hef9b889_1.conda + sha256: b97015e146437283f2213ff0e95abdc8e2480150634d81fbae6b96ee09f5e50b + md5: 8b7069e9792ee4e5b4919a7a306d2e67 + depends: + - __glibc >=2.17,<3.0.a0 + - cffi >=1.11 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - zstd >=1.5.6,<1.5.7.0a0 + - zstd >=1.5.6,<1.6.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/zstandard?source=hash-mapping + size: 419552 + timestamp: 1725305670210 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstandard-0.23.0-py312hb698573_1.conda + sha256: 2681c2a249752bdc7978e59ee2f34fcdfcbfda80029b84b8e5fec8dbc9e3af25 + md5: ffcb8e97e62af42075e0e5f46bb9856e + depends: + - cffi >=1.11 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - zstd >=1.5.6,<1.5.7.0a0 + - zstd >=1.5.6,<1.6.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/zstandard?source=hash-mapping + size: 392496 + timestamp: 1725305808244 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py312h15fbf35_1.conda + sha256: d00ca25c1e28fd31199b26a94f8c96574475704a825d244d7a6351ad3745eeeb + md5: a4cde595509a7ad9c13b1a3809bcfe51 + depends: + - __osx >=11.0 + - cffi >=1.11 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - zstd >=1.5.6,<1.5.7.0a0 + - zstd >=1.5.6,<1.6.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/zstandard?source=hash-mapping + size: 330788 + timestamp: 1725305806565 +- conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda + sha256: c558b9cc01d9c1444031bd1ce4b9cff86f9085765f17627a6cd85fc623c8a02b + md5: 4d056880988120e29d75bfff282e0f45 + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 554846 + timestamp: 1714722996770 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.6-h02f22dd_0.conda + sha256: 484f9d0722c77685ae379fbff3ccd662af9ead7e59eb39cd6d0c677cdf25ff6c + md5: be8d5f8cf21aed237b8b182ea86b3dd6 + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 539937 + timestamp: 1714723130243 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.6-hb46c0d2_0.conda + sha256: 2d4fd1ff7ee79cd954ca8e81abf11d9d49954dd1fef80f27289e2402ae9c2e09 + md5: d96942c06c3e84bfcc5efb038724a7fd + depends: + - __osx >=11.0 + - libzlib >=1.2.13,<2.0.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 405089 + timestamp: 1714723101397 diff --git a/examples/inference/stable-diffusion-python-onnx/magic.lock b/examples/inference/stable-diffusion-python-onnx/magic.lock new file mode 100644 index 0000000000..38419fcd65 --- /dev/null +++ b/examples/inference/stable-diffusion-python-onnx/magic.lock @@ -0,0 +1,8272 @@ +version: 6 +environments: + default: + channels: + - url: https://conda.anaconda.org/conda-forge/ + - url: https://conda.modular.com/max-nightly/ + - url: https://conda.anaconda.org/pytorch/ + indexes: + - https://pypi.org/simple + - https://download.pytorch.org/whl/cpu + packages: + linux-64: + - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_kmp_llvm.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.13-py312h178313f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.1.0-pyh71513ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.1-h205f482_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.1-h1a47875_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.10.6-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.3.0-h4e1184b_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.0-h7959bf6_11.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.2-hefd7a92_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-h173a860_6.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h11f4f37_12.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.9-he1b24dc_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.2-h4e1184b_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-h4e1184b_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.9-he0e7f3f_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.489-h4d475cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.10.0-h113e628_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.13.0-h3cf044e_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-common-cpp-12.8.0-h736e048_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-files-datalake-cpp-12.12.0-ha633028_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/blas-2.116-mkl.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/blas-devel-3.9.0-16_linux64_mkl.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py312h2ec8cdc_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.4-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2025.1.31-hbcca054_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.1.31-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py312h06ac9bb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.12.9-py312hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-cudart-12.4.127-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cuda-cudart_linux-64-12.4.127-h85509e4_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-cupti-12.4.127-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-libraries-12.4.1-ha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-nvrtc-12.4.127-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-nvtx-12.4.127-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-opencl-12.4.127-he02047a_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cuda-runtime-12.4.1-ha804496_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cuda-version-12.4-h3060b56_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/diffusers-0.27.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.17.0-pyhd8ed1ab_0.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-py312h178313f_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2025.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gflags-2.2.2-h5888daf_1005.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/glog-0.7.1-hbabe93e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gmp-6.3.0-hac33072_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gmpy2-2.1.5-py312h7201bc8_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.24.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.17-h717163a_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-19.0.1-hfa2a6e7_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-19.0.1-hcb10f89_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-19.0.1-hcb10f89_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-19.0.1-h08228c5_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-16_linux64_mkl.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.1.0-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-16_linux64_mkl.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcrc32c-1.1.2-h9c3ff4c_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcublas-12.4.5.8-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcufft-11.2.1.3-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcufile-1.9.1.3-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcurand-10.3.5.147-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.12.1-h332b0f4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcusolver-11.6.1.9-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcusparse-12.3.1.170-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.23-h4ddbbb0_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libevent-2.1.12-hf998b51_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h767d61c_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-ng-14.2.0-h69a702a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hf1ad2bd_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.35.0-h2b5623c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.35.0-h0121fbd_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.67.1-h25350d4_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libhwloc-2.11.2-default_h0d58e46_1001.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h4ce23a2_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-16_linux64_mkl.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapacke-3.9.0-16_linux64_mkl.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnpp-12.2.5.30-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnvfatbin-12.4.127-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnvjitlink-12.4.127-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnvjpeg-12.3.1.117-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-1.18.0-hfcad708_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-headers-1.18.0-ha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-19.0.1-h081d1f1_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.47-h943b412_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsentencepiece-0.2.0-h8e10757_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.49.1-hee588c1_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hf672d98_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-h8f9b012_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libthrift-0.21.0-h0e7cc3e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hd9ff511_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.10.0-h4c51ac1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.5.0-h851e524_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.6-h8d12d68_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/llvm-openmp-15.0.7-h0cdce71_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.10.0-h5888daf_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-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022718-release.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-2022.1.0-h84fe81f_915.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-devel-2022.1.0-ha770c72_916.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-include-2022.1.0-h84fe81f_915.tar.bz2 + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022718-release.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/mpc-1.3.1-h24ddda3_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/mpfr-4.2.1-h90cbb55_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mpmath-1.3.0-pyhd8ed1ab_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-h2d0b736_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/nlohmann_json-3.11.3-he02047a_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ocl-icd-2.3.2-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/opencl-headers-2024.10.24-h5888daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.3-h5fbd93e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.1-h7b32b05_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/orc-2.0.3-h12ee42a_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.3-py312hf9745cd_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-10.3.0-py312h287a98d_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/prometheus-cpp-1.3.0-ha5d0236_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.1-py312h178313f_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-19.0.1-py312h7900ff3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-19.0.1-py312h01725c0_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.9-h9e4cc4f_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-xxhash-3.5.0-py312h66e93f0_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda + - conda: https://conda.anaconda.org/pytorch/linux-64/pytorch-2.5.1-py3.12_cuda12.4_cudnn9.1.0_0.tar.bz2 + - conda: https://conda.anaconda.org/pytorch/linux-64/pytorch-cuda-12.4-hc786d27_7.tar.bz2 + - conda: https://conda.anaconda.org/pytorch/noarch/pytorch-mutex-1.0-cuda.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py312h178313f_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.1-py312hbf22597_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/re2-2024.07.02-h9925aae_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda + - 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/linux-64/s2n-1.5.11-h072c03f_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/safetensors-0.5.3-py312h12e396e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-0.2.0-hc8f76dd_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-python-0.2.0-py312hb6b8a2b_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-spm-0.2.0-h8e10757_10.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-h8bd8927_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sympy-1.13.3-pyh2585a3b_105.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tbb-2021.13.0-hceb3a55_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.21.0-py312h8360d73_0.conda + - conda: https://conda.anaconda.org/pytorch/linux-64/torchtriton-3.1.0-py312.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.49.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xxhash-0.8.3-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.18.3-py312h178313f_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.1-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312hef9b889_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda + linux-aarch64: + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.13-py312hcc812fe_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.1.0-pyh71513ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.1-hb7ec8d5_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.1-h740c5af_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-common-0.10.6-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-compression-0.3.0-h0f0193d_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-event-stream-0.5.0-hcbd8f92_11.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.2-h3df160d_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-hfd5ba81_6.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h5f50e26_12.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.9-h05b070f_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.2-h0f0193d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h0f0193d_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.9-hab3ce66_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.489-h88461e4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-core-cpp-1.14.0-h1887c18_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-identity-cpp-1.10.0-h47b0b28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-blobs-cpp-12.13.0-h185ecfd_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-common-cpp-12.8.0-h1b94036_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-files-datalake-cpp-12.12.0-h37d6d07_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/brotli-python-1.1.0-py312h6f74592_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h68df207_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/c-ares-1.34.4-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2025.1.31-hcefe29a_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.1.31-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cffi-1.17.1-py312hac81daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-3.3.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.8-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.17.0-pyhd8ed1ab_0.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-py312hcc812fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.12.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gflags-2.2.2-h5ad3122_1005.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/glog-0.7.1-h468a4a4_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.24.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/keyutils-1.6.1-h4e544f5_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/krb5-1.21.3-h50a48e9_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lcms2-2.17-hc88f144_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.0.0-h4de3ea5_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h18dbdb1_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-19.0.1-h36213f4_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-19.0.1-h3b568fd_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-19.0.1-h3b568fd_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-19.0.1-h1e9d426_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-31_h1a9f1db_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlicommon-1.1.0-h86ecc28_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlidec-1.1.0-h86ecc28_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlienc-1.1.0-h86ecc28_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-31_hab92f65_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcrc32c-1.1.2-h01db608_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcurl-8.12.1-h6702fde_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libdeflate-1.23-h5e3c512_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20250104-pl5321h976ea20_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libev-4.33-h31becfc_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libevent-2.1.12-h4ba1bb4_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.6.4-h5ad3122_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.4.6-he21f813_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-14.2.0-he277a41_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-14.2.0-he9431aa_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-2.35.0-hccf9d24_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-storage-2.35.0-hb9b2b65_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgrpc-1.67.1-hf7ccdd3_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libiconv-1.18-hc99b53d_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libjpeg-turbo-3.0.0-h31becfc_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-31_h411afd4_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.4-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnghttp2-1.64.0-hc8609a4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.29-pthreads_h9d3fd7e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopentelemetry-cpp-1.18.0-h60b47f9_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopentelemetry-cpp-headers-1.18.0-h8af1aa0_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-19.0.1-hfc78867_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.47-hec79eb8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.3-h44a3b7b_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsentencepiece-0.2.0-h6164ad9_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.20-h68df207_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.49.1-h5eb1b54_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libssh2-1.11.1-ha41c0db_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libthrift-0.21.0-h154c74f_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.0-h88f7998_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.10.0-ha346350_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libwebp-base-1.5.0-h0886dbf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcb-1.17.0-h262b8f6_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.6-h2e0c361_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.10.0-h5ad3122_1.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022718-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.16-py312hb2c0f52_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-ha32ae93_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/nlohmann_json-3.11.3-h0a1ffab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openjpeg-2.5.3-h3f56577_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.1-hd08dc88_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/orc-2.0.3-hdd485aa_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pandas-2.2.3-py312ha2895bd_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pillow-10.3.0-py312hc0f7016_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/prometheus-cpp-1.3.0-h7938499_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.2.1-py312hcc812fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pthread-stubs-0.4-h86ecc28_1002.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-19.0.1-py312h8025657_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-19.0.1-py312h66f7834_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.9-h1683364_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-xxhash-3.5.0-py312h52516f5_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.12-5_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyyaml-6.0.2-py312hcc812fe_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyzmq-26.2.1-py312h2427ae1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/re2-2024.07.02-haa97905_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8382b9d_2.conda + - 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/linux-aarch64/s2n-1.5.11-h3caee7a_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/safetensors-0.5.3-py312h8cbf658_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-0.2.0-h6c1b121_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-python-0.2.0-py312h197ff68_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-spm-0.2.0-h6164ad9_10.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-hd4fb6f5_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.21.0-py312ha0d6ea1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py312h52516f5_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.49.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxau-1.0.12-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxdmcp-1.1.5-h57736b2_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xxhash-0.8.3-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yaml-0.2.5-hf897c2e_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.18.3-py312hcc812fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zeromq-4.3.5-h5efb499_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zlib-1.3.1-h86ecc28_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstandard-0.23.0-py312hb698573_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.6-h02f22dd_0.conda + - pypi: https://files.pythonhosted.org/packages/75/c5/3b84fd731dd93c549a0c25657e4ce5a957aeccd32d60dba2958cd3cdac23/diffusers-0.27.2-py3-none-any.whl + - pypi: https://download.pytorch.org/whl/Jinja2-3.1.4-py3-none-any.whl#sha256=bc5dd2abb727a5319567b7a813e6a2e7318c39f4f487cfe6c89c6f9c7d25197d + - pypi: https://download.pytorch.org/whl/MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl#sha256=ac07bad82163452a6884fe8fa0963fb98c2346ba78d779ec06bd7a6262132aee + - pypi: https://download.pytorch.org/whl/mpmath-1.3.0-py3-none-any.whl#sha256=a0b2b9fe80bbcd81a6647ff13108738cfb482d481d826cc0e02f5b35e5c88d2c + - pypi: https://download.pytorch.org/whl/networkx-3.3-py3-none-any.whl#sha256=28575580c6ebdaf4505b22c6256a2b9de86b316dc63ba9e93abde3d78dfdbcf2 + - pypi: https://download.pytorch.org/whl/setuptools-70.2.0-py3-none-any.whl#sha256=b8b8060bb426838fbe942479c90296ce976249451118ef566a5a0b7d8b78fb05 + - pypi: https://download.pytorch.org/whl/sympy-1.13.1-py3-none-any.whl#sha256=db36cdc64bf61b9b24578b6f7bab1ecdd2452cf008f34faa33776680c26d66f8 + - pypi: https://download.pytorch.org/whl/cpu/torch-2.5.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl#sha256=36d1be99281b6f602d9639bd0af3ee0006e7aab16f6718d86f709d395b6f262c + osx-arm64: + - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.13-py312h998013c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.1.0-pyh71513ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.1-hfc2798a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.1-hc8a0bd2_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.10.6-h5505292_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-compression-0.3.0-hc8a0bd2_5.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.0-h54f970a_11.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.2-h96aa502_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-haba67d1_6.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h24f418c_12.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.9-hf37e03c_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.2-hc8a0bd2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-hc8a0bd2_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.9-ha81f72f_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.489-h0e5014b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.14.0-hd50102c_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.10.0-hc602bab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-blobs-cpp-12.13.0-h7585a09_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-common-cpp-12.8.0-h9ca1f76_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-files-datalake-cpp-12.12.0-hcdd55da_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py312hde4cb15_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.4-h5505292_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2025.1.31-hf0a4a13_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.1.31-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.1-py312h0fad829_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.12.9-py312hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/diffusers-0.27.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.17.0-pyhd8ed1ab_0.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-py312h998013c_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2025.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gflags-2.2.2-hf9b8971_1005.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/glog-0.7.1-heb240a5_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gmp-6.3.0-h7bae524_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gmpy2-2.1.5-py312h524cf62_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.24.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.17-h7eeda09_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_h07bc746_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-19.0.1-h0945df6_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-19.0.1-hf07054f_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-19.0.1-hf07054f_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-19.0.1-h4239455_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-19_osxarm64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.1.0-hd74edd7_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.1.0-hd74edd7_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlienc-1.1.0-hd74edd7_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-19_osxarm64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcrc32c-1.1.2-hbdafb3b_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.12.1-h73640d1_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.23-hec38601_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libev-4.33-h93a5062_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libevent-2.1.12-h2757513_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.4-h286801f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-2.35.0-hdbe95d5_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-storage-2.35.0-h7081f7f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgrpc-1.67.1-h0a426d6_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.18-hfe07756_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.0.0-hb547adb_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-19_osxarm64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.4-h39f12f2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.64.0-h6d7220d_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.24-openmp_hd76b1f2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopentelemetry-cpp-1.18.0-h0c05b2d_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopentelemetry-cpp-headers-1.18.0-hce30654_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-19.0.1-h636d7b7_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.47-h3783ad8_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.3-h3bd63a1_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h07bc746_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsentencepiece-0.2.0-he13a0af_10.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.1-h3f77e49_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.1-h9cc3647_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libthrift-0.21.0-h64651cc_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-h551f018_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.10.0-hda25de7_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.5.0-h2471fea_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxcb-1.17.0-hdb1d25a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.6-hce475f1_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-15.0.7-h7cfbb63_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.10.0-h286801f_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-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022718-release.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/mpc-1.3.1-h8f1351a_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/mpfr-4.2.1-hb693164_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mpmath-1.3.0-pyhd8ed1ab_1.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 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/nlohmann_json-3.11.3-h00cdb27_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openjpeg-2.5.3-h8a3d83b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.1-h81ee809_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/orc-2.0.3-h0ff2369_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.3-py312hcd31e36_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-10.3.0-py312h39b1d8d_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/prometheus-cpp-1.3.0-h0967b3e_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.1-py312h998013c_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pthread-stubs-0.4-hd74edd7_1002.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-19.0.1-py312h1f38498_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-19.0.1-py312hc40f475_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.9-hc22306f_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-xxhash-3.5.0-py312hea69d52_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-5_cp312.conda + - conda: https://conda.anaconda.org/pytorch/osx-arm64/pytorch-2.5.1-py3.12_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py312h998013c_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.1-py312hf4875e0_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/re2-2024.07.02-h6589ca4_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda + - 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/osx-arm64/safetensors-0.5.3-py312hcd83bfe_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-0.2.0-h22a84ea_10.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-python-0.2.0-py312h155166a_10.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-spm-0.2.0-he13a0af_10.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-h98b9ce2_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sympy-1.13.3-pyh2585a3b_105.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.21.0-py312hf3e4074_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.49.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxau-1.0.12-h5505292_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxdmcp-1.1.5-hd74edd7_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xxhash-0.8.3-h5505292_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.18.3-py312h998013c_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zlib-1.3.1-h8359307_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py312h15fbf35_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.6-hb46c0d2_0.conda +packages: +- conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 + sha256: fe51de6107f9edc7aa4f786a70f4a883943bc9d39b3bb7307c04c41410990726 + md5: d7c89558ba9fa0495403155b64376d81 + arch: x86_64 + platform: linux + license: None + purls: [] + size: 2562 + timestamp: 1578324546067 +- conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_kmp_llvm.tar.bz2 + build_number: 2 + sha256: 84a66275da3a66e3f3e70e9d8f10496d807d01a9e4ec16cd2274cc5e28c478fc + md5: 562b26ba2e19059551a811e72ab7f793 + depends: + - _libgcc_mutex 0.1 conda_forge + - llvm-openmp >=9.0.1 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 5744 + timestamp: 1650742457817 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2 + build_number: 16 + sha256: 3702bef2f0a4d38bd8288bbe54aace623602a1343c2cfbefd3fa188e015bebf0 + md5: 6168d71addc746e8f2b8d57dfd2edcea + depends: + - libgomp >=7.5.0 + constrains: + - openmp_impl 9999 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 23712 + timestamp: 1650670790230 +- conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.6-pyhd8ed1ab_0.conda + sha256: a2a5579be9fb21f9397f51a4ba09599782c93e9117951a5105d8ee4b80d648c1 + md5: 5b7d3ceeb36e8e6783eae78acd4c18e1 + depends: + - python >=3.9 + license: PSF-2.0 + license_family: PSF + purls: + - pkg:pypi/aiohappyeyeballs?source=compressed-mapping + size: 19236 + timestamp: 1739175837817 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.13-py312h178313f_0.conda + sha256: 985834edea972ddf6c35ab4185fb228440efb845a70a88182895f8f90df4a4c9 + md5: 0ea623ee1f29a7e1d703bc3b0ef82306 + depends: + - __glibc >=2.17,<3.0.a0 + - aiohappyeyeballs >=2.3.0 + - aiosignal >=1.1.2 + - attrs >=17.3.0 + - frozenlist >=1.1.1 + - libgcc >=13 + - multidict >=4.5,<7.0 + - propcache >=0.2.0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - yarl >=1.17.0,<2.0 + arch: x86_64 + platform: linux + license: MIT AND Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/aiohttp?source=hash-mapping + size: 915558 + timestamp: 1740482064204 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.13-py312hcc812fe_0.conda + sha256: ca1fa0450decaca810db4b9f5ff1dd00c710fd89767c764a771b5d4ce7a152b0 + md5: 7e952a2d83ebfb371515c010acc110c7 + depends: + - aiohappyeyeballs >=2.3.0 + - aiosignal >=1.1.2 + - attrs >=17.3.0 + - frozenlist >=1.1.1 + - libgcc >=13 + - multidict >=4.5,<7.0 + - propcache >=0.2.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - yarl >=1.17.0,<2.0 + arch: aarch64 + platform: linux + license: MIT AND Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/aiohttp?source=hash-mapping + size: 904149 + timestamp: 1740481643315 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.13-py312h998013c_0.conda + sha256: 84f8c35912bce8c9ee979454a685ec0497fbccd7da86351e8d774ae3e7456055 + md5: d575ea7d96ce2c9fed370d85d3ef464e + depends: + - __osx >=11.0 + - aiohappyeyeballs >=2.3.0 + - aiosignal >=1.1.2 + - attrs >=17.3.0 + - frozenlist >=1.1.1 + - multidict >=4.5,<7.0 + - propcache >=0.2.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - yarl >=1.17.0,<2.0 + arch: arm64 + platform: osx + license: MIT AND Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/aiohttp?source=hash-mapping + size: 885919 + timestamp: 1740482022806 +- conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda + sha256: 7de8ced1918bbdadecf8e1c1c68237fe5709c097bd9e0d254f4cad118f4345d0 + md5: 1a3981115a398535dbe3f6d5faae3d36 + depends: + - frozenlist >=1.1.0 + - python >=3.9 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/aiosignal?source=hash-mapping + size: 13229 + timestamp: 1734342253061 +- conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.1.0-pyh71513ae_0.conda + sha256: 1f267886522dfb9ae4e5ebbc3135b5eb13cff27bdbfe8d881a4d893459166ab4 + md5: 2cc3f588512f04f3a0c64b4e9bedc02d + depends: + - python >=3.9 + license: MIT + license_family: MIT + purls: + - pkg:pypi/attrs?source=compressed-mapping + size: 56370 + timestamp: 1737819298139 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.1-h205f482_0.conda + sha256: ebe5e33249f37f6bb481de99581ebdc92dbfcf1b6915609bcf3c9e78661d6352 + md5: 9c500858e88df50af3cc883d194de78a + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 108111 + timestamp: 1737509831651 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.1-hb7ec8d5_0.conda + sha256: e1e6c9267a4d9af30b1d28c11a9041b17b7840ff83ef08614145a2a4f444f5b4 + md5: 2630f030652970a5531e492f6b2a6dd3 + depends: + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 + - libgcc >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 112658 + timestamp: 1737509863269 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.1-hfc2798a_0.conda + sha256: 5a60d196a585b25d1446fb973009e4e648e8d70beaa2793787243ede6da0fd9a + md5: 0abd67c0f7b60d50348fbb32fef50b65 + depends: + - __osx >=11.0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 92562 + timestamp: 1737509877079 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.1-h1a47875_3.conda + sha256: 095ac824ea9303eff67e04090ae531d9eb33d2bf8f82eaade39b839c421e16e8 + md5: 55a8561fdbbbd34f50f57d9be12ed084 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + - openssl >=3.3.1,<4.0a0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 47601 + timestamp: 1733991564405 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.1-h740c5af_3.conda + sha256: c5c7961d48ca7320ed3560c036f7aa5244df4b85d9657f70aacc5faba3e1509a + md5: 57ed2c445d7ef01d121b9bcea0522913 + depends: + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + - openssl >=3.3.1,<4.0a0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 50036 + timestamp: 1733991581303 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.1-hc8a0bd2_3.conda + sha256: 1f44be36e1daa17b4b081debb8aee492d13571084f38b503ad13e869fef24fe4 + md5: 8b0ce61384e5a33d2b301a64f3d22ac5 + depends: + - __osx >=11.0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - openssl >=3.3.1,<4.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 39925 + timestamp: 1733991649383 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.10.6-hb9d3cd8_0.conda + sha256: 496e92f2150fdc351eacf6e236015deedb3d0d3114f8e5954341cbf9f3dda257 + md5: d7d4680337a14001b0e043e96529409b + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 236574 + timestamp: 1733975453350 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-common-0.10.6-h86ecc28_0.conda + sha256: 57288ec5df35781bea8fc6a8c9099cad6695b747784fc1b8862a0f9e5b3bf5ab + md5: fef806a0f6de853670c746bbece01966 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 259031 + timestamp: 1733975520465 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.10.6-h5505292_0.conda + sha256: 3bde135c8e74987c0f79ecd4fa17ec9cff0d658b3090168727ca1af3815ae57a + md5: 145e5b4c9702ed279d7d68aaf096f77d + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 221863 + timestamp: 1733975576886 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.3.0-h4e1184b_5.conda + sha256: 62ca84da83585e7814a40240a1e750b1563b2680b032a471464eccc001c3309b + md5: 3f4c1197462a6df2be6dc8241828fe93 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 19086 + timestamp: 1733991637424 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-compression-0.3.0-h0f0193d_5.conda + sha256: 3f05d19f68ef800f33d44ea2a4211003124076516c8469abc7d432236344df53 + md5: 3a1421d12435df5b4c412cc4c8fac64d + depends: + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 19740 + timestamp: 1733991625201 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-compression-0.3.0-hc8a0bd2_5.conda + sha256: 47b2813f652ce7e64ac442f771b2a5f7d4af4ad0d07ff51f6075ea80ed2e3f09 + md5: a8b6c17732d14ed49d0e9b59c43186bc + depends: + - __osx >=11.0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 18068 + timestamp: 1733991869211 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.0-h7959bf6_11.conda + sha256: 10d7240c7db0c941fb1a59c4f8ea6689a434b03309ee7b766fa15a809c553c02 + md5: 9b3fb60fe57925a92f399bc3fc42eccf + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 54003 + timestamp: 1734024480949 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-event-stream-0.5.0-hcbd8f92_11.conda + sha256: 79aa363c71c891a27496c0498f8d498b2ddc87b3ccb3b6c9da5b50b05936ebb8 + md5: e0772c59af4243a9b2565baa5d79e5b6 + depends: + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + - libgcc >=13 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 55207 + timestamp: 1734024546663 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.0-h54f970a_11.conda + sha256: f0667935f4e0d4c25e0e51da035640310b5ceeb8f723156734439bde8b848d7d + md5: ba41238f8e653998d7d2f42e3a8db054 + depends: + - __osx >=11.0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + - libcxx >=18 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 47078 + timestamp: 1734024749727 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.2-hefd7a92_4.conda + sha256: 4a330206bd51148f6c13ca0b7a4db40f29a46f090642ebacdeb88b8a4abd7f99 + md5: 5ce4df662d32d3123ea8da15571b6f51 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-compression >=0.3.0,<0.3.1.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 197731 + timestamp: 1734008380764 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.2-h3df160d_4.conda + sha256: 3a1d2d332945306be9d49e569b95e4cc172d825f10e88715513a172f28ebb59e + md5: 28f00aa7fd9556c4c461328cf146c20b + depends: + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-compression >=0.3.0,<0.3.1.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - libgcc >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 190586 + timestamp: 1734008442362 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.2-h96aa502_4.conda + sha256: 22e4737c8a885995b7c1ae1d79c1f6e78d489e16ec079615980fdde067aeaf76 + md5: 495c93a4f08b17deb3c04894512330e6 + depends: + - __osx >=11.0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-compression >=0.3.0,<0.3.1.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 152983 + timestamp: 1734008451473 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-h173a860_6.conda + sha256: 335d822eead0a097ffd23677a288e1f18ea22f47a92d4f877419debb93af0e81 + md5: 9a063178f1af0a898526cc24ba7be486 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + - s2n >=1.5.11,<1.5.12.0a0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 157263 + timestamp: 1737207617838 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-hfd5ba81_6.conda + sha256: d8adfde05cee11057d99c3802e84b2300430a7c7c3c9936165d1d4b25ef59d91 + md5: 4e6771b45cb2b035c62d023dbf0dc000 + depends: + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + - s2n >=1.5.11,<1.5.12.0a0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 160933 + timestamp: 1737207637279 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-haba67d1_6.conda + sha256: 73722dd175af78b6cbfa033066f0933351f5382a1a737f6c6d9b8cfa84022161 + md5: d02e8f40ff69562903e70a1c6c48b009 + depends: + - __osx >=11.0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 136048 + timestamp: 1737207681224 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h11f4f37_12.conda + sha256: 512d3969426152d9d5fd886e27b13706122dc3fa90eb08c37b0d51a33d7bb14a + md5: 96c3e0221fa2da97619ee82faa341a73 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 194672 + timestamp: 1734025626798 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h5f50e26_12.conda + sha256: ffeb9100cc8fd4093e1a6fdfd938bc4a396dd77480b7fb17aa42855a4d5e2c70 + md5: 031ca33115d4b1eeb43f435d6215778c + depends: + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - libgcc >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 169516 + timestamp: 1734025167885 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h24f418c_12.conda + sha256: 96575ea1dd2a9ea94763882e40a66dcbff9c41f702bf37c9514c4c719b3c11dd + md5: c072045a6206f88015d02fcba1705ea1 + depends: + - __osx >=11.0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 134371 + timestamp: 1734025379525 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.9-he1b24dc_1.conda + sha256: 15fbdedc56850f8be5be7a5bcaea1af09c97590e631c024ae089737fc932fc42 + md5: caafc32928a5f7f3f7ef67d287689144 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-auth >=0.8.1,<0.8.2.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + - libgcc >=13 + - openssl >=3.4.0,<4.0a0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 115413 + timestamp: 1737558687616 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.9-h05b070f_1.conda + sha256: 9e7857fbc33eddc291fa09890ce468a92485d3e3e127bc00bbd1803e34121f84 + md5: e0a2869195f069db88b8932f5b00bee5 + depends: + - aws-c-auth >=0.8.1,<0.8.2.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + - libgcc >=13 + - openssl >=3.4.0,<4.0a0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 117875 + timestamp: 1737558720047 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.9-hf37e03c_1.conda + sha256: 92e8ca4eefcbbdf4189584c9410382884a06ed3030e5ecaac656dab8c95e6a80 + md5: de65f5e4ab5020103fe70a0eba9432a0 + depends: + - __osx >=11.0 + - aws-c-auth >=0.8.1,<0.8.2.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 98731 + timestamp: 1737558731831 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.2-h4e1184b_0.conda + sha256: 0424e380c435ba03b5948d02e8c958866c4eee50ed29e57f99473a5f795a4cfc + md5: dcd498d493818b776a77fbc242fbf8e4 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 55911 + timestamp: 1736535960724 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.2-h0f0193d_0.conda + sha256: fba38e469457764afcb94aa84d4d7788e6b5fa1554d34b05c904d2245fdd3c81 + md5: a78928881c652facde2a13ec6e776f3c + depends: + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 58221 + timestamp: 1736536003041 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.2-hc8a0bd2_0.conda + sha256: ea4f0f1e99056293c69615f581a997d65ba7e229e296e402e0d8ef750648a5b5 + md5: e7b5498ac7b7ab921a907be38f3a8080 + depends: + - __osx >=11.0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 49872 + timestamp: 1736536152332 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-h4e1184b_4.conda + sha256: 1ed9a332d06ad595694907fad2d6d801082916c27cd5076096fda4061e6d24a8 + md5: 74e8c3e4df4ceae34aa2959df4b28101 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 72762 + timestamp: 1733994347547 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h0f0193d_4.conda + sha256: 9f1e3635a587bcf92b61d88c7af7d24cd89c147c6d0ae58afbde08e65bcf48da + md5: 3bd35b0adab3d743f09e0252cc441d6b + depends: + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 72154 + timestamp: 1733994384415 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-hc8a0bd2_4.conda + sha256: 215086d95e8ff1d3fcb0197ada116cc9d7db1fdae7573f5e810d20fa9215b47c + md5: e70e88a357a3749b67679c0788c5b08a + depends: + - __osx >=11.0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 70186 + timestamp: 1733994496998 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.9-he0e7f3f_2.conda + sha256: c1930569713bd5231d48d885a5e3707ac917b428e8f08189d14064a2bb128adc + md5: 8a4e6fc8a3b285536202b5456a74a940 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-auth >=0.8.1,<0.8.2.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-event-stream >=0.5.0,<0.5.1.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-c-mqtt >=0.11.0,<0.11.1.0a0 + - aws-c-s3 >=0.7.9,<0.7.10.0a0 + - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 353222 + timestamp: 1737565463079 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.9-hab3ce66_2.conda + sha256: c3884fb10e0fd9be5c13256cabcda1afa9d2fcf8878c67214d02fc344509857d + md5: 875968ebffe992b68faf2caebbf32f02 + depends: + - aws-c-auth >=0.8.1,<0.8.2.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-event-stream >=0.5.0,<0.5.1.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-c-mqtt >=0.11.0,<0.11.1.0a0 + - aws-c-s3 >=0.7.9,<0.7.10.0a0 + - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 + - libgcc >=13 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 283812 + timestamp: 1737565480034 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.9-ha81f72f_2.conda + sha256: ed5f1d19aad53787fdebe13db4709c97eae2092536cc55d3536eba320c4286e1 + md5: c9c034d3239bf25687ca4dd985007ecd + depends: + - __osx >=11.0 + - aws-c-auth >=0.8.1,<0.8.2.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-event-stream >=0.5.0,<0.5.1.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-c-mqtt >=0.11.0,<0.11.1.0a0 + - aws-c-s3 >=0.7.9,<0.7.10.0a0 + - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 + - libcxx >=18 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 235976 + timestamp: 1737565563139 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.489-h4d475cb_0.conda + sha256: 08d6b7d2ed17bfcc7deb903c7751278ee434abdb27e3be0dceb561f30f030c75 + md5: b775e9f46dfa94b228a81d8e8c6d8b1d + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-event-stream >=0.5.0,<0.5.1.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + - aws-crt-cpp >=0.29.9,<0.29.10.0a0 + - libcurl >=8.11.1,<9.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 3144364 + timestamp: 1737576036746 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.489-h88461e4_0.conda + sha256: 88353e82b053763168cddbe2f88048defc1c97b3dad0966fbe8c4fa7aa592c7e + md5: e725d8fa77a6a5f38a78c5de914a5f40 + depends: + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-event-stream >=0.5.0,<0.5.1.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + - aws-crt-cpp >=0.29.9,<0.29.10.0a0 + - libcurl >=8.11.1,<9.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 3015109 + timestamp: 1737575993030 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.489-h0e5014b_0.conda + sha256: d82451530ddf363d8bb31a8a7391bb9699f745e940ace91d78c0e6170deef03c + md5: 156cfb45a1bb8cffc81e59047bb34f51 + depends: + - __osx >=11.0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-event-stream >=0.5.0,<0.5.1.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + - aws-crt-cpp >=0.29.9,<0.29.10.0a0 + - libcurl >=8.11.1,<9.0a0 + - libcxx >=18 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 2874126 + timestamp: 1737577023623 +- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda + sha256: fe07debdb089a3db17f40a7f20d283d75284bb4fc269ef727b8ba6fc93f7cb5a + md5: 0a8838771cc2e985cd295e01ae83baf1 + depends: + - __glibc >=2.17,<3.0.a0 + - libcurl >=8.10.1,<9.0a0 + - libgcc >=13 + - libstdcxx >=13 + - openssl >=3.3.2,<4.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 345117 + timestamp: 1728053909574 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-core-cpp-1.14.0-h1887c18_0.conda + sha256: 8967b3ccee4d74e61f6ec82dd8efb9deb854ee7ba012dfe767b7a92e0ac77724 + md5: e0c3a906a41be769f0ae20ca3e31cfc0 + depends: + - libcurl >=8.10.1,<9.0a0 + - libgcc >=13 + - libstdcxx >=13 + - openssl >=3.3.2,<4.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 338650 + timestamp: 1728055589907 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.14.0-hd50102c_0.conda + sha256: f5b91329ed59ffc0be8747784c6e4cc7e56250c54032883a83bc11808ef6a87e + md5: f093a11dcf3cdcca010b20a818fcc6dc + depends: + - __osx >=11.0 + - libcurl >=8.10.1,<9.0a0 + - libcxx >=17 + - openssl >=3.3.2,<4.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 294299 + timestamp: 1728054014060 +- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.10.0-h113e628_0.conda + sha256: 286b31616c191486626cb49e9ceb5920d29394b9e913c23adb7eb637629ba4de + md5: 73f73f60854f325a55f1d31459f2ab73 + depends: + - __glibc >=2.17,<3.0.a0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - libgcc >=13 + - libstdcxx >=13 + - openssl >=3.3.2,<4.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 232351 + timestamp: 1728486729511 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-identity-cpp-1.10.0-h47b0b28_0.conda + sha256: 1c72423b9beba167d2f01b80dc204da77240a8266f1edb3d89510c852b300d69 + md5: 94e73a7877743a85c57091d8afab2348 + depends: + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - libgcc >=13 + - libstdcxx >=13 + - openssl >=3.3.2,<4.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 217132 + timestamp: 1728488096615 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.10.0-hc602bab_0.conda + sha256: bde446b916fff5150606f8ed3e6058ffc55a3aa72381e46f1ab346590b1ae40a + md5: d7b71593a937459f2d4b67e1a4727dc2 + depends: + - __osx >=11.0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - libcxx >=17 + - openssl >=3.3.2,<4.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 166907 + timestamp: 1728486882502 +- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.13.0-h3cf044e_1.conda + sha256: 2606260e5379eed255bcdc6adc39b93fb31477337bcd911c121fc43cd29bf394 + md5: 7eb66060455c7a47d9dcdbfa9f46579b + depends: + - __glibc >=2.17,<3.0.a0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 549342 + timestamp: 1728578123088 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-blobs-cpp-12.13.0-h185ecfd_1.conda + sha256: 280ec70009a92626054f58e45b168fce393e71a9710587488bd8401628cda481 + md5: 221e1e5ecb2643e113f32b3229d5ba33 + depends: + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 + - libgcc >=13 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 502934 + timestamp: 1728580241002 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-blobs-cpp-12.13.0-h7585a09_1.conda + sha256: 08d52d130addc0fb55d5ba10d9fa483e39be25d69bac7f4c676c2c3069207590 + md5: 704238ef05d46144dae2e6b5853df8bc + depends: + - __osx >=11.0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 + - libcxx >=17 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 438636 + timestamp: 1728578216193 +- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-common-cpp-12.8.0-h736e048_1.conda + sha256: 273475f002b091b66ce7366da04bf164c3732c03f8692ab2ee2d23335b6a82ba + md5: 13de36be8de3ae3f05ba127631599213 + depends: + - __glibc >=2.17,<3.0.a0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libxml2 >=2.12.7,<3.0a0 + - openssl >=3.3.2,<4.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 149312 + timestamp: 1728563338704 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-common-cpp-12.8.0-h1b94036_1.conda + sha256: 146e76aac169e3dbdce5d3b142b7930ac643795c765e7655d1989905ec7d3231 + md5: 793b1080ab2d958980f137a8643cd6e8 + depends: + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libxml2 >=2.12.7,<3.0a0 + - openssl >=3.3.2,<4.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 140832 + timestamp: 1728565334900 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-common-cpp-12.8.0-h9ca1f76_1.conda + sha256: 77ab04e8fe5636a2de9c718f72a43645f7502cd208868c8a91ffba385547d585 + md5: 7a187cd7b1445afc80253bb186a607cc + depends: + - __osx >=11.0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - libcxx >=17 + - libxml2 >=2.12.7,<3.0a0 + - openssl >=3.3.2,<4.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 121278 + timestamp: 1728563418777 +- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-files-datalake-cpp-12.12.0-ha633028_1.conda + sha256: 5371e4f3f920933bb89b926a85a67f24388227419abd6e99f6086481e5e8d5f2 + md5: 7c1980f89dd41b097549782121a73490 + depends: + - __glibc >=2.17,<3.0.a0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 + - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 287366 + timestamp: 1728729530295 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-files-datalake-cpp-12.12.0-h37d6d07_1.conda + sha256: 4079c617a75682e49bae63670d58fd6078ccfbbe55ca1f994acab3a74ab6bbcc + md5: b724f3b4b7f4e9b36c58cbe3ed8610a2 + depends: + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 + - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 + - libgcc >=13 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 260547 + timestamp: 1728730924071 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-files-datalake-cpp-12.12.0-hcdd55da_1.conda + sha256: f48523f8aa0b5b80f45a92f0556b388dd96f44ac2dc2f44a01d08c1822eec97d + md5: c49fbc5233fcbaa86391162ff1adef38 + depends: + - __osx >=11.0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 + - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 + - libcxx >=17 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 196032 + timestamp: 1728729672889 +- conda: https://conda.anaconda.org/conda-forge/linux-64/blas-2.116-mkl.tar.bz2 + build_number: 16 + sha256: 87056ebdc90b6d1ea6726d04d42b844cc302112e80508edbf7bf1f1a4fd3fed2 + md5: c196a26abf6b4f132c88828ab7c2231c + depends: + - _openmp_mutex * *_llvm + - _openmp_mutex >=4.5 + - blas-devel 3.9.0 16_linux64_mkl + - libblas 3.9.0 16_linux64_mkl + - libcblas 3.9.0 16_linux64_mkl + - libgcc-ng >=12 + - libgfortran-ng + - libgfortran5 >=10.4.0 + - liblapack 3.9.0 16_linux64_mkl + - liblapacke 3.9.0 16_linux64_mkl + - llvm-openmp >=14.0.4 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 13258 + timestamp: 1660094704275 +- conda: https://conda.anaconda.org/conda-forge/linux-64/blas-devel-3.9.0-16_linux64_mkl.tar.bz2 + build_number: 16 + sha256: a7da65ca4e0322317cbc4d387c4a5f075cdc7fcd12ad9f7f18da758c7532749a + md5: 3f92c1c9e1c0e183462c5071aa02cae1 + depends: + - libblas 3.9.0 16_linux64_mkl + - libcblas 3.9.0 16_linux64_mkl + - liblapack 3.9.0 16_linux64_mkl + - liblapacke 3.9.0 16_linux64_mkl + - mkl >=2022.1.0,<2023.0a0 + - mkl-devel 2022.1.* + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 12630 + timestamp: 1660094595212 +- conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py312h2ec8cdc_2.conda + sha256: f2a59ccd20b4816dea9a2a5cb917eb69728271dbf1aeab4e1b7e609330a50b6f + md5: b0b867af6fc74b2a0aa206da29c0f3cf + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - libbrotlicommon 1.1.0 hb9d3cd8_2 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: + - pkg:pypi/brotli?source=hash-mapping + size: 349867 + timestamp: 1725267732089 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/brotli-python-1.1.0-py312h6f74592_2.conda + sha256: 9736bf660a0e4260c68f81d2635b51067f817813e6490ac9e8abd9a835dcbf6d + md5: e1e9727063057168d95f27a032acd0a4 + depends: + - libgcc >=13 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - libbrotlicommon 1.1.0 h86ecc28_2 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: + - pkg:pypi/brotli?source=hash-mapping + size: 356878 + timestamp: 1725267878508 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py312hde4cb15_2.conda + sha256: 254b411fa78ccc226f42daf606772972466f93e9bc6895eabb4cfda22f5178af + md5: a83c2ef76ccb11bc2349f4f17696b15d + depends: + - __osx >=11.0 + - libcxx >=17 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - libbrotlicommon 1.1.0 hd74edd7_2 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: + - pkg:pypi/brotli?source=hash-mapping + size: 339360 + timestamp: 1725268143995 +- conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda + sha256: 5ced96500d945fb286c9c838e54fa759aa04a7129c59800f0846b4335cee770d + md5: 62ee74e96c5ebb0af99386de58cf9553 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: bzip2-1.0.6 + license_family: BSD + purls: [] + size: 252783 + timestamp: 1720974456583 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h68df207_7.conda + sha256: 2258b0b33e1cb3a9852d47557984abb6e7ea58e3d7f92706ec1f8e879290c4cb + md5: 56398c28220513b9ea13d7b450acfb20 + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: bzip2-1.0.6 + license_family: BSD + purls: [] + size: 189884 + timestamp: 1720974504976 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda + sha256: adfa71f158cbd872a36394c56c3568e6034aa55c623634b37a4836bd036e6b91 + md5: fc6948412dbbbe9a4c9ddbbcfe0a79ab + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: bzip2-1.0.6 + license_family: BSD + purls: [] + size: 122909 + timestamp: 1720974522888 +- conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.4-hb9d3cd8_0.conda + sha256: d4f28d87b6339b94f74762c0076e29c8ef8ddfff51a564a92da2843573c18320 + md5: e2775acf57efd5af15b8e3d1d74d72d3 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 206085 + timestamp: 1734208189009 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/c-ares-1.34.4-h86ecc28_0.conda + sha256: 1187a41d4bb2afe02cb18690682edc98d1e9f5e0ccda638d8704a75ea1875bbe + md5: 356da36f35d36dcba16e43f1589d4e39 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 215979 + timestamp: 1734208193181 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.4-h5505292_0.conda + sha256: 09c0c8476e50b2955f474a4a1c17c4c047dd52993b5366b6ea8e968e583b921f + md5: c1c999a38a4303b29d75c636eaa13cf9 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 179496 + timestamp: 1734208291879 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2025.1.31-hbcca054_0.conda + sha256: bf832198976d559ab44d6cdb315642655547e26d826e34da67cbee6624cda189 + md5: 19f3a56f68d2fd06c516076bff482c52 + arch: x86_64 + platform: linux + license: ISC + purls: [] + size: 158144 + timestamp: 1738298224464 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2025.1.31-hcefe29a_0.conda + sha256: 66c6408ee461593cfdb2d78d82e6ed74d04a04ccb51df3ef8a5f35148c9c6eec + md5: 462cb166cd2e26a396f856510a3aff67 + arch: aarch64 + platform: linux + license: ISC + purls: [] + size: 158290 + timestamp: 1738299057652 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2025.1.31-hf0a4a13_0.conda + sha256: 7e12816618173fe70f5c638b72adf4bfd4ddabf27794369bb17871c5bb75b9f9 + md5: 3569d6a9141adc64d2fe4797f3289e06 + arch: arm64 + platform: osx + license: ISC + purls: [] + size: 158425 + timestamp: 1738298167688 +- conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.1.31-pyhd8ed1ab_0.conda + sha256: 42a78446da06a2568cb13e69be3355169fbd0ea424b00fc80b7d840f5baaacf3 + md5: c207fa5ac7ea99b149344385a9c0880d + depends: + - python >=3.9 + license: ISC + purls: + - pkg:pypi/certifi?source=compressed-mapping + size: 162721 + timestamp: 1739515973129 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py312h06ac9bb_0.conda + sha256: cba6ea83c4b0b4f5b5dc59cb19830519b28f95d7ebef7c9c5cf1c14843621457 + md5: a861504bbea4161a9170b85d4d2be840 + depends: + - __glibc >=2.17,<3.0.a0 + - libffi >=3.4,<4.0a0 + - libgcc >=13 + - pycparser + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: + - pkg:pypi/cffi?source=hash-mapping + size: 294403 + timestamp: 1725560714366 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cffi-1.17.1-py312hac81daf_0.conda + sha256: 1162e3ca039e7ca7c0e78f0a020ed1bde968096841b663e3f393c966eb82f0f0 + md5: 1a256e5581b1099e9295cb84d53db3ea + depends: + - libffi >=3.4,<4.0a0 + - libgcc >=13 + - pycparser + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: + - pkg:pypi/cffi?source=hash-mapping + size: 312892 + timestamp: 1725561779888 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.1-py312h0fad829_0.conda + sha256: 8d91a0d01358b5c3f20297c6c536c5d24ccd3e0c2ddd37f9d0593d0f0070226f + md5: 19a5456f72f505881ba493979777b24e + depends: + - __osx >=11.0 + - libffi >=3.4,<4.0a0 + - pycparser + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: + - pkg:pypi/cffi?source=hash-mapping + size: 281206 + timestamp: 1725560813378 +- conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda + sha256: 4e0ee91b97e5de3e74567bdacea27f0139709fceca4db8adffbe24deffccb09b + md5: e83a31202d1c0a000fce3e9cf3825875 + depends: + - python >=3.9 + license: MIT + license_family: MIT + purls: + - pkg:pypi/charset-normalizer?source=hash-mapping + size: 47438 + timestamp: 1735929811779 +- conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda + sha256: c920d23cd1fcf565031c679adb62d848af60d6fbb0edc2d50ba475cea4f0d8ab + md5: f22f4d4970e09d68a10b922cbb0408d3 + depends: + - __unix + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/click?source=hash-mapping + size: 84705 + timestamp: 1734858922844 +- conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + sha256: ab29d57dc70786c1269633ba3dff20288b81664d3ff8d21af995742e2bb03287 + md5: 962b9857ee8e7018c22f2776ffa0b2d7 + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/colorama?source=hash-mapping + size: 27011 + timestamp: 1733218222191 +- conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.12.9-py312hd8ed1ab_0.conda + noarch: generic + sha256: f5c7ad0bd23fa8645ac279d99bddba656ff61483dc6312af12aae13910dfb210 + md5: a5b10f166467fecec692abaee84d16aa + depends: + - python 3.12.9.* + - python_abi * *_cp312 + license: Python-2.0 + purls: [] + size: 44836 + timestamp: 1739519561557 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-cudart-12.4.127-he02047a_2.conda + sha256: d8ad0be647dad6378119c110572bbf9f6b1e8c820393ed159d45f02588979c07 + md5: a748faa52331983fc3adcc3b116fe0e4 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-cudart_linux-64 12.4.127 h85509e4_2 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 22563 + timestamp: 1715710703269 +- conda: https://conda.anaconda.org/conda-forge/noarch/cuda-cudart_linux-64-12.4.127-h85509e4_2.conda + sha256: 1f1b3e0bf6b5e665860ecbdf509c1e02760c14d25e3f3893a712f90f7f8a5abc + md5: 329163110a96514802e9e64d971edf43 + depends: + - cuda-version >=12.4,<12.5.0a0 + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 186886 + timestamp: 1715710690964 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-cupti-12.4.127-he02047a_2.conda + sha256: db9ebc57fd583711bbdd12e54d00e4153a7b414f929f77fca2f44547c02204b8 + md5: 46422ef1b1161fb180027e50c598ecd0 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 1918773 + timestamp: 1715665119069 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-libraries-12.4.1-ha770c72_1.conda + sha256: cb30e83f33c7480caa68a1e35e6ff4102d17ff0a94239ca18555afff1df2f70e + md5: 6bb3f998485d4344a7539e0b218b3fc1 + depends: + - cuda-cudart 12.4.127.* + - cuda-nvrtc 12.4.127.* + - cuda-opencl 12.4.127.* + - libcublas 12.4.5.8.* + - libcufft 11.2.1.3.* + - libcufile 1.9.1.3.* + - libcurand 10.3.5.147.* + - libcusolver 11.6.1.9.* + - libcusparse 12.3.1.170.* + - libnpp 12.2.5.30.* + - libnvfatbin 12.4.127.* + - libnvjitlink 12.4.127.* + - libnvjpeg 12.3.1.117.* + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 20180 + timestamp: 1713304266920 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-nvrtc-12.4.127-he02047a_2.conda + sha256: c4aba5e152526db7cad7c8a5191497b0c6365c912ed845dc9c427d29893486a1 + md5: 80baf6262f4a1a0dde42d85aaa393402 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 18825627 + timestamp: 1715711095870 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-nvtx-12.4.127-he02047a_2.conda + sha256: 8f499785edaec6198a934e8a9dd1f8b6f79aabcc135962d6050dd7328c76d3dc + md5: 656a004b6e44f50ce71c65cab0d429b4 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 31691 + timestamp: 1715731339952 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-opencl-12.4.127-he02047a_1.conda + sha256: 75d912a70719a9d0bca9f234a79a857815d8feec3c54c145e6e41589de4ff5be + md5: 1e98deda07c14d26c80d124cf0eb011a + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - ocl-icd >=2.3.2,<3.0a0 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 30406 + timestamp: 1715711329543 +- conda: https://conda.anaconda.org/conda-forge/noarch/cuda-runtime-12.4.1-ha804496_0.conda + sha256: 61a593347c91a9bcd18329f7aa780bd1fb1e20dd1b61b16a451bd4a6b60dabf0 + md5: 48829f4ef6005ae8d4867b99168ff2b8 + depends: + - __linux + - cuda-libraries 12.4.1.* + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 20034 + timestamp: 1712683445348 +- conda: https://conda.anaconda.org/conda-forge/noarch/cuda-version-12.4-h3060b56_3.conda + sha256: 571d32fbd0dc8df6e85c14d1757549927e272af9c70b935d7e3a553ab0b0b4da + md5: c9a3fe8b957176e1a8452c6f3431b0d8 + constrains: + - cudatoolkit 12.4|12.4.* + - __cuda >=12 + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 21022 + timestamp: 1709765922936 +- conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda + sha256: 7e09bd083a609138b780fcc4535924cb96814d2c908a36d4c64a2ba9ee3efe7f + md5: 3e087f072ce03c43a9b60522f5d0ca2f + depends: + - aiohttp + - dill >=0.3.0,<0.3.8 + - fsspec >=2021.11.1 + - huggingface_hub >=0.14.0,<1.0.0 + - importlib-metadata + - multiprocess + - numpy >=1.17 + - packaging + - pandas + - pyarrow >=8.0.0 + - python >=3.8.0 + - python-xxhash + - pyyaml >=5.1 + - requests >=2.19.0 + - tqdm >=4.62.1 + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/datasets?source=hash-mapping + size: 347303 + timestamp: 1691593908658 +- conda: https://conda.anaconda.org/conda-forge/noarch/datasets-3.3.2-pyhd8ed1ab_0.conda + sha256: 06109a3de7a977424d960b75cdb307f8d769eae87c53e33a64e706171199997a + md5: c2f904077afe3a8246c26576f555a6af + depends: + - aiohttp + - dill >=0.3.0,<0.3.9 + - filelock + - fsspec >=2023.1.0,<=2024.12.0 + - huggingface_hub >=0.24.0 + - multiprocess <0.70.17 + - numpy >=1.17 + - packaging + - pandas + - pyarrow >=15.0.0 + - python >=3.9 + - python-xxhash + - pyyaml >=5.1 + - requests >=2.32.2 + - tqdm >=4.66.3 + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/datasets?source=hash-mapping + size: 335311 + timestamp: 1740153561620 +- pypi: https://files.pythonhosted.org/packages/75/c5/3b84fd731dd93c549a0c25657e4ce5a957aeccd32d60dba2958cd3cdac23/diffusers-0.27.2-py3-none-any.whl + name: diffusers + version: 0.27.2 + sha256: 85da5cd1098ab428535d592136973ec0c3f12f78148c94b379cb9f02d2414e75 + requires_dist: + - importlib-metadata + - filelock + - huggingface-hub>=0.20.2 + - numpy + - regex!=2019.12.17 + - requests + - safetensors>=0.3.1 + - pillow + - urllib3<=2.0.0 ; extra == 'dev' + - isort>=5.5.4 ; extra == 'dev' + - ruff==0.1.5 ; extra == 'dev' + - hf-doc-builder>=0.3.0 ; extra == 'dev' + - compel==0.1.8 ; extra == 'dev' + - gitpython<3.1.19 ; extra == 'dev' + - datasets ; extra == 'dev' + - jinja2 ; extra == 'dev' + - invisible-watermark>=0.2.0 ; extra == 'dev' + - k-diffusion>=0.0.12 ; extra == 'dev' + - librosa ; extra == 'dev' + - parameterized ; extra == 'dev' + - pytest ; extra == 'dev' + - pytest-timeout ; extra == 'dev' + - pytest-xdist ; extra == 'dev' + - requests-mock==1.10.0 ; extra == 'dev' + - safetensors>=0.3.1 ; extra == 'dev' + - sentencepiece>=0.1.91,!=0.1.92 ; extra == 'dev' + - scipy ; extra == 'dev' + - torchvision ; extra == 'dev' + - transformers>=4.25.1 ; extra == 'dev' + - accelerate>=0.11.0 ; extra == 'dev' + - protobuf>=3.20.3,<4 ; extra == 'dev' + - tensorboard ; extra == 'dev' + - peft>=0.6.0 ; extra == 'dev' + - torch>=1.4 ; extra == 'dev' + - jax>=0.4.1 ; extra == 'dev' + - jaxlib>=0.4.1 ; extra == 'dev' + - flax>=0.4.1 ; extra == 'dev' + - hf-doc-builder>=0.3.0 ; extra == 'docs' + - jax>=0.4.1 ; extra == 'flax' + - jaxlib>=0.4.1 ; extra == 'flax' + - flax>=0.4.1 ; extra == 'flax' + - urllib3<=2.0.0 ; extra == 'quality' + - isort>=5.5.4 ; extra == 'quality' + - ruff==0.1.5 ; extra == 'quality' + - hf-doc-builder>=0.3.0 ; extra == 'quality' + - compel==0.1.8 ; extra == 'test' + - gitpython<3.1.19 ; extra == 'test' + - datasets ; extra == 'test' + - jinja2 ; extra == 'test' + - invisible-watermark>=0.2.0 ; extra == 'test' + - k-diffusion>=0.0.12 ; extra == 'test' + - librosa ; extra == 'test' + - parameterized ; extra == 'test' + - pytest ; extra == 'test' + - pytest-timeout ; extra == 'test' + - pytest-xdist ; extra == 'test' + - requests-mock==1.10.0 ; extra == 'test' + - safetensors>=0.3.1 ; extra == 'test' + - sentencepiece>=0.1.91,!=0.1.92 ; extra == 'test' + - scipy ; extra == 'test' + - torchvision ; extra == 'test' + - transformers>=4.25.1 ; extra == 'test' + - torch>=1.4 ; extra == 'torch' + - accelerate>=0.11.0 ; extra == 'torch' + - accelerate>=0.11.0 ; extra == 'training' + - datasets ; extra == 'training' + - protobuf>=3.20.3,<4 ; extra == 'training' + - tensorboard ; extra == 'training' + - jinja2 ; extra == 'training' + - peft>=0.6.0 ; extra == 'training' + requires_python: '>=3.8.0' +- conda: https://conda.anaconda.org/conda-forge/noarch/diffusers-0.27.2-pyhd8ed1ab_0.conda + sha256: 5720260b1bce855f98323ec18a19903f05e53551f2b26bc17cc59346043328ab + md5: 9c2cd89e6c0b3c2ee1e2d118a00d7e96 + depends: + - filelock + - huggingface_hub + - importlib-metadata + - numpy + - pillow + - python >=3.6 + - pytorch >=1.4 + - regex !=2019.12.17 + - requests + - safetensors + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/diffusers?source=hash-mapping + size: 578830 + timestamp: 1712100797027 +- conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda + sha256: 4ff20c6be028be2825235631c45d9e4a75bca1de65f8840c02dfb28ea0137c45 + md5: 5e4f3466526c52bc9af2d2353a1460bd + depends: + - python >=3.7 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/dill?source=hash-mapping + size: 87553 + timestamp: 1690101185422 +- conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.8-pyhd8ed1ab_0.conda + sha256: 482b5b566ca559119b504c53df12b08f3962a5ef8e48061d62fd58a47f8f2ec4 + md5: 78745f157d56877a2c6e7b386f66f3e2 + depends: + - python >=3.7 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/dill?source=hash-mapping + size: 88169 + timestamp: 1706434833883 +- conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.17.0-pyhd8ed1ab_0.conda + sha256: 006d7e5a0c17a6973596dd86bfc80d74ce541144d2aee2d22d46fd41df560a63 + md5: 7f402b4a1007ee355bc50ce4d24d4a57 + depends: + - python >=3.9 + license: Unlicense + purls: + - pkg:pypi/filelock?source=hash-mapping + size: 17544 + timestamp: 1737517924333 +- conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.12.1-h267a509_2.conda + sha256: b2e3c449ec9d907dd4656cb0dc93e140f447175b125a3824b31368b06c666bb6 + md5: 9ae35c3d96db2c94ce0cef86efdfa2cb + depends: + - libgcc-ng >=12 + - libpng >=1.6.39,<1.7.0a0 + - libzlib >=1.2.13,<2.0.0a0 + arch: x86_64 + platform: linux + license: GPL-2.0-only OR FTL + purls: [] + size: 634972 + timestamp: 1694615932610 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/freetype-2.12.1-hf0a5ef3_2.conda + sha256: 7af93030f4407f076dce181062360efac2cd54dce863b5d7765287a6f5382537 + md5: a5ab74c5bd158c3d5532b66d8d83d907 + depends: + - libgcc-ng >=12 + - libpng >=1.6.39,<1.7.0a0 + - libzlib >=1.2.13,<2.0.0a0 + arch: aarch64 + platform: linux + license: GPL-2.0-only OR FTL + purls: [] + size: 642092 + timestamp: 1694617858496 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/freetype-2.12.1-hadb7bae_2.conda + sha256: 791673127e037a2dc0eebe122dc4f904cb3f6e635bb888f42cbe1a76b48748d9 + md5: e6085e516a3e304ce41a8ee08b9b89ad + depends: + - libpng >=1.6.39,<1.7.0a0 + - libzlib >=1.2.13,<2.0.0a0 + arch: arm64 + platform: osx + license: GPL-2.0-only OR FTL + purls: [] + size: 596430 + timestamp: 1694616332835 +- conda: https://conda.anaconda.org/conda-forge/linux-64/frozenlist-1.5.0-py312h178313f_1.conda + sha256: 501e20626798b6d7f130f4db0fb02c0385d8f4c11ca525925602a4208afb343f + md5: fb986e1c089021979dc79606af78ef8f + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/frozenlist?source=hash-mapping + size: 60939 + timestamp: 1737645356438 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/frozenlist-1.5.0-py312hcc812fe_1.conda + sha256: 84895c5e207e0cb2044f3607fb36b82eb8cb45f0a009d03dc04c777ed975757d + md5: 9090bf5c43e8011fb2e9a82a1db20cc3 + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/frozenlist?source=hash-mapping + size: 60472 + timestamp: 1737645511278 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/frozenlist-1.5.0-py312h998013c_1.conda + sha256: d503ac8c050abdbd129253973f23be34944978d510de78ef5a3e6aa1e3d9552d + md5: 5eb3715c7e3fa9b533361375bfefe6ee + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/frozenlist?source=hash-mapping + size: 57256 + timestamp: 1737645503377 +- conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.12.0-pyhd8ed1ab_0.conda + sha256: 3320970c4604989eadf908397a9475f9e6a96a773c185915111399cbfbe47817 + md5: e041ad4c43ab5e10c74587f95378ebc7 + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/fsspec?source=hash-mapping + size: 137756 + timestamp: 1734650349242 +- conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2025.2.0-pyhd8ed1ab_0.conda + sha256: 7433b8469074985b651693778ec6f03d2a23fad9919a515e3b8545996b5e721a + md5: d9ea16b71920b03beafc17fcca16df90 + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/fsspec?source=hash-mapping + size: 138186 + timestamp: 1738501352608 +- conda: https://conda.anaconda.org/conda-forge/linux-64/gflags-2.2.2-h5888daf_1005.conda + sha256: 6c33bf0c4d8f418546ba9c250db4e4221040936aef8956353bc764d4877bc39a + md5: d411fc29e338efb48c5fd4576d71d881 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 119654 + timestamp: 1726600001928 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gflags-2.2.2-h5ad3122_1005.conda + sha256: 28fe6b40b20454106d5e4ef6947cf298c13cc72a46347bbc49b563cd3a463bfa + md5: 4ff634d515abbf664774b5e1168a9744 + depends: + - libgcc >=13 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 106638 + timestamp: 1726599967617 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/gflags-2.2.2-hf9b8971_1005.conda + sha256: fd56ed8a1dab72ab90d8a8929b6f916a6d9220ca297ff077f8f04c5ed3408e20 + md5: 57a511a5905caa37540eb914dfcbf1fb + depends: + - __osx >=11.0 + - libcxx >=17 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 82090 + timestamp: 1726600145480 +- conda: https://conda.anaconda.org/conda-forge/linux-64/glog-0.7.1-hbabe93e_0.conda + sha256: dc824dc1d0aa358e28da2ecbbb9f03d932d976c8dca11214aa1dcdfcbd054ba2 + md5: ff862eebdfeb2fd048ae9dc92510baca + depends: + - gflags >=2.2.2,<2.3.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 143452 + timestamp: 1718284177264 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/glog-0.7.1-h468a4a4_0.conda + sha256: 920795d4f775a9f47e91c2223e64847f0b212b3fedc56c137c5889e32efe8ba0 + md5: 08940a32c6ced3703d1412dd37df4f62 + depends: + - gflags >=2.2.2,<2.3.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 145811 + timestamp: 1718284208668 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/glog-0.7.1-heb240a5_0.conda + sha256: 9fc77de416953aa959039db72bc41bfa4600ae3ff84acad04a7d0c1ab9552602 + md5: fef68d0a95aa5b84b5c1a4f6f3bf40e1 + depends: + - __osx >=11.0 + - gflags >=2.2.2,<2.3.0a0 + - libcxx >=16 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 112215 + timestamp: 1718284365403 +- conda: https://conda.anaconda.org/conda-forge/linux-64/gmp-6.3.0-hac33072_2.conda + sha256: 309cf4f04fec0c31b6771a5809a1909b4b3154a2208f52351e1ada006f4c750c + md5: c94a5994ef49749880a8139cf9afcbe1 + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: GPL-2.0-or-later OR LGPL-3.0-or-later + purls: [] + size: 460055 + timestamp: 1718980856608 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/gmp-6.3.0-h7bae524_2.conda + sha256: 76e222e072d61c840f64a44e0580c2503562b009090f55aa45053bf1ccb385dd + md5: eed7278dfbab727b56f2c0b64330814b + depends: + - __osx >=11.0 + - libcxx >=16 + arch: arm64 + platform: osx + license: GPL-2.0-or-later OR LGPL-3.0-or-later + purls: [] + size: 365188 + timestamp: 1718981343258 +- conda: https://conda.anaconda.org/conda-forge/linux-64/gmpy2-2.1.5-py312h7201bc8_3.conda + sha256: addd0bc226ca86c11f1223ab322d12b67501c2b3d93749bdab2068ccaedd8ef0 + md5: 673ef4d6611f5b4ca7b5c1f8c65a38dc + depends: + - __glibc >=2.17,<3.0.a0 + - gmp >=6.3.0,<7.0a0 + - libgcc >=13 + - mpc >=1.3.1,<2.0a0 + - mpfr >=4.2.1,<5.0a0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: LGPL-3.0-or-later + license_family: LGPL + purls: + - pkg:pypi/gmpy2?source=hash-mapping + size: 209631 + timestamp: 1733462668219 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/gmpy2-2.1.5-py312h524cf62_3.conda + sha256: 0ea196e4b706321951af1eebdb6a4eb9307faa1fd5361bcf49acb150e71774f7 + md5: ab7a5d10c7b4e249a9fe7bc280909803 + depends: + - __osx >=11.0 + - gmp >=6.3.0,<7.0a0 + - mpc >=1.3.1,<2.0a0 + - mpfr >=4.2.1,<5.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: LGPL-3.0-or-later + license_family: LGPL + purls: + - pkg:pypi/gmpy2?source=hash-mapping + size: 147983 + timestamp: 1733462785197 +- conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda + sha256: 0aa1cdc67a9fe75ea95b5644b734a756200d6ec9d0dff66530aec3d1c1e9df75 + md5: b4754fb1bdcb70c8fd54f918301582c6 + depends: + - hpack >=4.1,<5 + - hyperframe >=6.1,<7 + - python >=3.9 + license: MIT + license_family: MIT + purls: + - pkg:pypi/h2?source=hash-mapping + size: 53888 + timestamp: 1738578623567 +- conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda + sha256: 6ad78a180576c706aabeb5b4c8ceb97c0cb25f1e112d76495bff23e3779948ba + md5: 0a802cb9888dd14eeefc611f05c40b6e + depends: + - python >=3.9 + license: MIT + license_family: MIT + purls: + - pkg:pypi/hpack?source=hash-mapping + size: 30731 + timestamp: 1737618390337 +- conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.24.7-pyhd8ed1ab_0.conda + sha256: 000b32aa2b960fe1e39aecdd3e5b0eea0f9b1e9d622188c7bd8a6f86c244233d + md5: 9a8208360743187a5eabc2b2b05cb74f + depends: + - filelock + - fsspec >=2023.5.0 + - packaging >=20.9 + - python >=3.8 + - pyyaml >=5.1 + - requests + - tqdm >=4.42.1 + - typing-extensions >=3.7.4.3 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/huggingface-hub?source=hash-mapping + size: 259655 + timestamp: 1726154689209 +- conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda + sha256: 77af6f5fe8b62ca07d09ac60127a30d9069fdc3c68d6b256754d0ffb1f7779f8 + md5: 8e6923fc12f1fe8f8c4e5c9f343256ac + depends: + - python >=3.9 + license: MIT + license_family: MIT + purls: + - pkg:pypi/hyperframe?source=hash-mapping + size: 17397 + timestamp: 1737618427549 +- conda: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda + sha256: 71e750d509f5fa3421087ba88ef9a7b9be11c53174af3aa4d06aff4c18b38e8e + md5: 8b189310083baabfb622af68fd9d3ae3 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 12129203 + timestamp: 1720853576813 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda + sha256: 813298f2e54ef087dbfc9cc2e56e08ded41de65cff34c639cc8ba4e27e4540c9 + md5: 268203e8b983fddb6412b36f2024e75c + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 12282786 + timestamp: 1720853454991 +- conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda + sha256: d7a472c9fd479e2e8dcb83fb8d433fce971ea369d704ece380e876f9c3494e87 + md5: 39a4f67be3286c86d696df570b1201b7 + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/idna?source=hash-mapping + size: 49765 + timestamp: 1733211921194 +- conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + sha256: 598951ebdb23e25e4cec4bbff0ae369cec65ead80b50bc08b441d8e54de5cf03 + md5: f4b39bf00c69f56ac01e020ebfac066c + depends: + - python >=3.9 + - zipp >=0.5 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/importlib-metadata?source=compressed-mapping + size: 29141 + timestamp: 1737420302391 +- pypi: https://download.pytorch.org/whl/Jinja2-3.1.4-py3-none-any.whl#sha256=bc5dd2abb727a5319567b7a813e6a2e7318c39f4f487cfe6c89c6f9c7d25197d + name: jinja2 + version: 3.1.4 + sha256: bc5dd2abb727a5319567b7a813e6a2e7318c39f4f487cfe6c89c6f9c7d25197d + requires_dist: + - markupsafe>=2.0 + - babel>=2.7 ; extra == 'i18n' + requires_python: '>=3.7' +- conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.5-pyhd8ed1ab_0.conda + sha256: 98977694b9ecaa3218662f843425f39501f81973c450f995eec68f1803ed71c3 + md5: 2752a6ed44105bfb18c9bef1177d9dcd + depends: + - markupsafe >=2.0 + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/jinja2?source=hash-mapping + size: 112561 + timestamp: 1734824044952 +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + sha256: 19d8bd5bb2fde910ec59e081eeb59529491995ce0d653a5209366611023a0b3a + md5: 4ebae00eae9705b0c3d6d1018a81d047 + depends: + - importlib-metadata >=4.8.3 + - jupyter_core >=4.12,!=5.0.* + - python >=3.9 + - python-dateutil >=2.8.2 + - pyzmq >=23.0 + - tornado >=6.2 + - traitlets >=5.3 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/jupyter-client?source=hash-mapping + size: 106342 + timestamp: 1733441040958 +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + sha256: 732b1e8536bc22a5a174baa79842d79db2f4956d90293dd82dc1b3f6099bcccd + md5: 0a2980dada0dd7fd0998f0342308b1b1 + depends: + - __unix + - platformdirs >=2.5 + - python >=3.8 + - traitlets >=5.3 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/jupyter-core?source=hash-mapping + size: 57671 + timestamp: 1727163547058 +- conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 + sha256: 150c05a6e538610ca7c43beb3a40d65c90537497a4f6a5f4d15ec0451b6f5ebb + md5: 30186d27e2c9fa62b45fb1476b7200e3 + depends: + - libgcc-ng >=10.3.0 + arch: x86_64 + platform: linux + license: LGPL-2.1-or-later + purls: [] + size: 117831 + timestamp: 1646151697040 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/keyutils-1.6.1-h4e544f5_0.tar.bz2 + sha256: 6d4233d97a9b38acbb26e1268bcf8c10a8e79c2aed7e5a385ec3769967e3e65b + md5: 1f24853e59c68892452ef94ddd8afd4b + depends: + - libgcc-ng >=10.3.0 + arch: aarch64 + platform: linux + license: LGPL-2.1-or-later + purls: [] + size: 112327 + timestamp: 1646166857935 +- conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda + sha256: 99df692f7a8a5c27cd14b5fb1374ee55e756631b9c3d659ed3ee60830249b238 + md5: 3f43953b7d3fb3aaa1d0d0723d91e368 + depends: + - keyutils >=1.6.1,<2.0a0 + - libedit >=3.1.20191231,<3.2.0a0 + - libedit >=3.1.20191231,<4.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - openssl >=3.3.1,<4.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 1370023 + timestamp: 1719463201255 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/krb5-1.21.3-h50a48e9_0.conda + sha256: 0ec272afcf7ea7fbf007e07a3b4678384b7da4047348107b2ae02630a570a815 + md5: 29c10432a2ca1472b53f299ffb2ffa37 + depends: + - keyutils >=1.6.1,<2.0a0 + - libedit >=3.1.20191231,<3.2.0a0 + - libedit >=3.1.20191231,<4.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - openssl >=3.3.1,<4.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 1474620 + timestamp: 1719463205834 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda + sha256: 4442f957c3c77d69d9da3521268cad5d54c9033f1a73f99cde0a3658937b159b + md5: c6dc8a0fdec13a0565936655c33069a1 + depends: + - __osx >=11.0 + - libcxx >=16 + - libedit >=3.1.20191231,<3.2.0a0 + - libedit >=3.1.20191231,<4.0a0 + - openssl >=3.3.1,<4.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 1155530 + timestamp: 1719463474401 +- conda: https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.17-h717163a_0.conda + sha256: d6a61830a354da022eae93fa896d0991385a875c6bba53c82263a289deda9db8 + md5: 000e85703f0fd9594c81710dd5066471 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libtiff >=4.7.0,<4.8.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 248046 + timestamp: 1739160907615 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lcms2-2.17-hc88f144_0.conda + sha256: 47cf6a4780dc41caa9bc95f020eed485b07010c9ccc85e9ef44b538fedb5341d + md5: b87b1abd2542cf65a00ad2e2461a3083 + depends: + - libgcc >=13 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libtiff >=4.7.0,<4.8.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 287007 + timestamp: 1739161069194 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.17-h7eeda09_0.conda + sha256: 310a62c2f074ebd5aa43b3cd4b00d46385ce680fa2132ecee255a200e2d2f15f + md5: 92a61fd30b19ebd5c1621a5bfe6d8b5f + depends: + - __osx >=11.0 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libtiff >=4.7.0,<4.8.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 212125 + timestamp: 1739161108467 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_4.conda + sha256: db73f38155d901a610b2320525b9dd3b31e4949215c870685fd92ea61b5ce472 + md5: 01f8d123c96816249efd255a31ad7712 + depends: + - __glibc >=2.17,<3.0.a0 + constrains: + - binutils_impl_linux-64 2.43 + arch: x86_64 + platform: linux + license: GPL-3.0-only + license_family: GPL + purls: [] + size: 671240 + timestamp: 1740155456116 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_4.conda + sha256: 016832a70b0aa97e1c4e47e23c00b0c34def679de25146736df353199f684f0d + md5: 80c9ad5e05e91bb6c0967af3880c9742 + constrains: + - binutils_impl_linux-aarch64 2.43 + arch: aarch64 + platform: linux + license: GPL-3.0-only + license_family: GPL + purls: [] + size: 699058 + timestamp: 1740155620594 +- conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 + sha256: cb55f36dcd898203927133280ae1dc643368af041a48bcf7c026acb7c47b0c12 + md5: 76bbff344f0134279f225174e9064c8f + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 281798 + timestamp: 1657977462600 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.0.0-h4de3ea5_0.tar.bz2 + sha256: 2d09ef9b7796d83364957e420b41c32d94e628c3f0520b61c332518a7b5cd586 + md5: 1a0ffc65e03ce81559dbcb0695ad1476 + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 262096 + timestamp: 1657978241894 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 + sha256: 6f068bb53dfb6147d3147d981bb851bb5477e769407ad4e6a68edf482fdcb958 + md5: de462d5aacda3b30721b512c5da4e742 + depends: + - libcxx >=13.0.1 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 215721 + timestamp: 1657977558796 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda + sha256: 143a586aa67d50622ef703de57b9d43f44945836d6568e0e7aa174bd8c45e0d4 + md5: 488f260ccda0afaf08acb286db439c2f + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + constrains: + - libabseil-static =20240722.0=cxx17* + - abseil-cpp =20240722.0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 1311599 + timestamp: 1736008414161 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h18dbdb1_4.conda + sha256: bb6c5fb3b8de5f90735c5252b57efb3c268ee222c755569dac18065f05147670 + md5: 633b9fe454ffea2aaf29e191d946a83b + depends: + - libgcc >=13 + - libstdcxx >=13 + constrains: + - abseil-cpp =20240722.0 + - libabseil-static =20240722.0=cxx17* + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 1334844 + timestamp: 1736008472455 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_h07bc746_4.conda + sha256: 05fa5e5e908962b9c5aba95f962e2ca81d9599c4715aebe5e4ddb72b309d1770 + md5: c2d95bd7aa8d564a9bd7eca5e571a5b3 + depends: + - __osx >=11.0 + - libcxx >=18 + constrains: + - libabseil-static =20240722.0=cxx17* + - abseil-cpp =20240722.0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 1178260 + timestamp: 1736008642885 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-19.0.1-hfa2a6e7_0_cpu.conda + sha256: 7b1f61045b37266989023a007d6331875062bb658068a6e6ab49720495ca3543 + md5: 11b712ed1316c98592f6bae7ccfaa86c + depends: + - __glibc >=2.17,<3.0.a0 + - aws-crt-cpp >=0.29.9,<0.29.10.0a0 + - aws-sdk-cpp >=1.11.489,<1.11.490.0a0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - azure-identity-cpp >=1.10.0,<1.10.1.0a0 + - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 + - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 + - bzip2 >=1.0.8,<2.0a0 + - glog >=0.7.1,<0.8.0a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libbrotlidec >=1.1.0,<1.2.0a0 + - libbrotlienc >=1.1.0,<1.2.0a0 + - libgcc >=13 + - libgoogle-cloud >=2.35.0,<2.36.0a0 + - libgoogle-cloud-storage >=2.35.0,<2.36.0a0 + - libopentelemetry-cpp >=1.18.0,<1.19.0a0 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libre2-11 >=2024.7.2 + - libstdcxx >=13 + - libutf8proc >=2.10.0,<2.11.0a0 + - libzlib >=1.3.1,<2.0a0 + - lz4-c >=1.10.0,<1.11.0a0 + - orc >=2.0.3,<2.0.4.0a0 + - re2 + - snappy >=1.2.1,<1.3.0a0 + - zstd >=1.5.6,<1.6.0a0 + constrains: + - arrow-cpp <0.0a0 + - parquet-cpp <0.0a0 + - apache-arrow-proc =*=cpu + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 8967810 + timestamp: 1739768880886 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-19.0.1-h36213f4_0_cpu.conda + sha256: 3f141e56555676b4a9fd885a0a7452daa2530eb65cfbba1271f7a07457a82003 + md5: cfeb98942a3ef36c0bb2b09b084349da + depends: + - aws-crt-cpp >=0.29.9,<0.29.10.0a0 + - aws-sdk-cpp >=1.11.489,<1.11.490.0a0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - azure-identity-cpp >=1.10.0,<1.10.1.0a0 + - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 + - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 + - bzip2 >=1.0.8,<2.0a0 + - glog >=0.7.1,<0.8.0a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libbrotlidec >=1.1.0,<1.2.0a0 + - libbrotlienc >=1.1.0,<1.2.0a0 + - libgcc >=13 + - libgoogle-cloud >=2.35.0,<2.36.0a0 + - libgoogle-cloud-storage >=2.35.0,<2.36.0a0 + - libopentelemetry-cpp >=1.18.0,<1.19.0a0 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libre2-11 >=2024.7.2 + - libstdcxx >=13 + - libutf8proc >=2.10.0,<2.11.0a0 + - libzlib >=1.3.1,<2.0a0 + - lz4-c >=1.10.0,<1.11.0a0 + - orc >=2.0.3,<2.0.4.0a0 + - re2 + - snappy >=1.2.1,<1.3.0a0 + - zstd >=1.5.6,<1.6.0a0 + constrains: + - apache-arrow-proc =*=cpu + - parquet-cpp <0.0a0 + - arrow-cpp <0.0a0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 8215209 + timestamp: 1739770301694 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-19.0.1-h0945df6_0_cpu.conda + sha256: e34199bea635b1bf9f3819205b291f714ddd47db1bf6e6d10a4eb61da7330214 + md5: 21bcb04df4b1a99721199c5aa6273f53 + depends: + - __osx >=11.0 + - aws-crt-cpp >=0.29.9,<0.29.10.0a0 + - aws-sdk-cpp >=1.11.489,<1.11.490.0a0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - azure-identity-cpp >=1.10.0,<1.10.1.0a0 + - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 + - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 + - bzip2 >=1.0.8,<2.0a0 + - glog >=0.7.1,<0.8.0a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libbrotlidec >=1.1.0,<1.2.0a0 + - libbrotlienc >=1.1.0,<1.2.0a0 + - libcxx >=18 + - libgoogle-cloud >=2.35.0,<2.36.0a0 + - libgoogle-cloud-storage >=2.35.0,<2.36.0a0 + - libopentelemetry-cpp >=1.18.0,<1.19.0a0 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libre2-11 >=2024.7.2 + - libutf8proc >=2.10.0,<2.11.0a0 + - libzlib >=1.3.1,<2.0a0 + - lz4-c >=1.10.0,<1.11.0a0 + - orc >=2.0.3,<2.0.4.0a0 + - re2 + - snappy >=1.2.1,<1.3.0a0 + - zstd >=1.5.6,<1.6.0a0 + constrains: + - apache-arrow-proc =*=cpu + - arrow-cpp <0.0a0 + - parquet-cpp <0.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 5571369 + timestamp: 1739767084108 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-19.0.1-hcb10f89_0_cpu.conda + sha256: 9a3c38a8f1516fe5b7801d0407ff704efd53955ebd63f7fbc439ec3b563d19cc + md5: 0d63e2dea06c44c9d2c8be3e7e38eea9 + depends: + - __glibc >=2.17,<3.0.a0 + - libarrow 19.0.1 hfa2a6e7_0_cpu + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 638054 + timestamp: 1739768924910 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-19.0.1-h3b568fd_0_cpu.conda + sha256: 3260e26ca9e1146befeb9587ba80610f9d9591365c82f7cd8756f14a9a8e58c2 + md5: 7b270af126ffdec0153d8599370f0430 + depends: + - libarrow 19.0.1 h36213f4_0_cpu + - libgcc >=13 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 602400 + timestamp: 1739770383854 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-19.0.1-hf07054f_0_cpu.conda + sha256: b15f5fab53d941917143bb1cf22c5a0eacffb8ff2a010ee2e909afab3821d5f9 + md5: 9213d80ffba1921b86bfdf5fdd2c10c4 + depends: + - __osx >=11.0 + - libarrow 19.0.1 h0945df6_0_cpu + - libcxx >=18 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 500147 + timestamp: 1739767179329 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-19.0.1-hcb10f89_0_cpu.conda + sha256: f756208d787db50b6be68210cb9eec3644b8291a8a353bb2071ea4451bfc1412 + md5: ec52b3b990be399f4267a9acabb73070 + depends: + - __glibc >=2.17,<3.0.a0 + - libarrow 19.0.1 hfa2a6e7_0_cpu + - libarrow-acero 19.0.1 hcb10f89_0_cpu + - libgcc >=13 + - libparquet 19.0.1 h081d1f1_0_cpu + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 604500 + timestamp: 1739769034226 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-19.0.1-h3b568fd_0_cpu.conda + sha256: 76327753ed311ae1d1ef3f8f7067888e01d3c69e5198a9108052d74e2f91d03a + md5: 8a025a60dfcfa3d6cf100395f64de8ba + depends: + - libarrow 19.0.1 h36213f4_0_cpu + - libarrow-acero 19.0.1 h3b568fd_0_cpu + - libgcc >=13 + - libparquet 19.0.1 hfc78867_0_cpu + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 581121 + timestamp: 1739770488033 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-19.0.1-hf07054f_0_cpu.conda + sha256: 21fcb9a09e5872b4f1d483d8d950a1804ccb6804881881ca6fe6c5968a5e4dbc + md5: 0695382a64b393765b4bc9e1ee99250c + depends: + - __osx >=11.0 + - libarrow 19.0.1 h0945df6_0_cpu + - libarrow-acero 19.0.1 hf07054f_0_cpu + - libcxx >=18 + - libparquet 19.0.1 h636d7b7_0_cpu + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 501234 + timestamp: 1739768239766 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-19.0.1-h08228c5_0_cpu.conda + sha256: e0b3ed06ce74c6a083dab59fb3059fdbc40fc71ff94ce470ca0a7c7ffe8d0317 + md5: 792e2359bb93513324326cbe3ee4ebdd + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libarrow 19.0.1 hfa2a6e7_0_cpu + - libarrow-acero 19.0.1 hcb10f89_0_cpu + - libarrow-dataset 19.0.1 hcb10f89_0_cpu + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 523313 + timestamp: 1739769085090 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-19.0.1-h1e9d426_0_cpu.conda + sha256: c1085eb113a80691e3d76400c91b15dc8c0462d533f8c4ca4c33d5e9fe9cffef + md5: 1e34ad733a8c404ac0f652a942192636 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libarrow 19.0.1 h36213f4_0_cpu + - libarrow-acero 19.0.1 h3b568fd_0_cpu + - libarrow-dataset 19.0.1 h3b568fd_0_cpu + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 516114 + timestamp: 1739770543593 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-19.0.1-h4239455_0_cpu.conda + sha256: 0b5c0839102b396f8b0ba376189562a727ebbed3c6bdab74aaf56227ee45cb73 + md5: 2893dd55f7804b9106126c2f00712ec2 + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libarrow 19.0.1 h0945df6_0_cpu + - libarrow-acero 19.0.1 hf07054f_0_cpu + - libarrow-dataset 19.0.1 hf07054f_0_cpu + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 450361 + timestamp: 1739768396169 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-16_linux64_mkl.tar.bz2 + build_number: 16 + sha256: 24e656f13b402b6fceb88df386768445ab9beb657d451a8e5a88d4b3380cf7a4 + md5: 85f61af03fd291dae33150ffe89dc09a + depends: + - mkl >=2022.1.0,<2023.0a0 + constrains: + - liblapack 3.9.0 16_linux64_mkl + - liblapacke 3.9.0 16_linux64_mkl + - libcblas 3.9.0 16_linux64_mkl + - blas * mkl + - mkl <2025 + arch: x86_64 + platform: linux + track_features: + - blas_mkl + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 13102 + timestamp: 1660094562739 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-31_h1a9f1db_openblas.conda + build_number: 31 + sha256: 67c9c81dd0444ecc712124034d9f74186ca82fd770b3df46b1a68564461c6a1a + md5: 48bd5bf15ccf3e409840be9caafc0ad5 + depends: + - libopenblas >=0.3.29,<0.3.30.0a0 + - libopenblas >=0.3.29,<1.0a0 + constrains: + - liblapack =3.9.0=31*_openblas + - blas =2.131=openblas + - libcblas =3.9.0=31*_openblas + - mkl <2025 + - liblapacke =3.9.0=31*_openblas + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 16915 + timestamp: 1740087911042 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-19_osxarm64_openblas.conda + build_number: 19 + sha256: 51e78e3c9fa57f3fec12936b760928715ba0ab5253d02815202f9ec4c2c9255d + md5: f50b1fd98593278e18319653cff9c475 + depends: + - libopenblas >=0.3.24,<0.3.25.0a0 + - libopenblas >=0.3.24,<1.0a0 + constrains: + - libcblas 3.9.0 19_osxarm64_openblas + - liblapack 3.9.0 19_osxarm64_openblas + - blas * openblas + - liblapacke 3.9.0 19_osxarm64_openblas + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 14817 + timestamp: 1697484577887 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hb9d3cd8_2.conda + sha256: d9db2de60ea917298e658143354a530e9ca5f9c63471c65cf47ab39fd2f429e3 + md5: 41b599ed2b02abcfdd84302bff174b23 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 68851 + timestamp: 1725267660471 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlicommon-1.1.0-h86ecc28_2.conda + sha256: 64112af913974b309d67fd342e065fd184347043a6387933b3db796778a28019 + md5: 3ee026955c688f551a9999840cff4c67 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 68982 + timestamp: 1725267774142 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.1.0-hd74edd7_2.conda + sha256: 839dacb741bdbb25e58f42088a2001b649f4f12195aeb700b5ddfca3267749e5 + md5: d0bf1dff146b799b319ea0434b93f779 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 68426 + timestamp: 1725267943211 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hb9d3cd8_2.conda + sha256: 2892d512cad096cb03f1b66361deeab58b64e15ba525d6592bb6d609e7045edf + md5: 9566f0bd264fbd463002e759b8a82401 + depends: + - __glibc >=2.17,<3.0.a0 + - libbrotlicommon 1.1.0 hb9d3cd8_2 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 32696 + timestamp: 1725267669305 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlidec-1.1.0-h86ecc28_2.conda + sha256: 94c808d9ca3eb6ef30976a9843e27f027cf3a1e84e8c6835cbb696b7bdb35c4c + md5: e64d0f3b59c7c4047446b97a8624a72d + depends: + - libbrotlicommon 1.1.0 h86ecc28_2 + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 31708 + timestamp: 1725267783442 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.1.0-hd74edd7_2.conda + sha256: 6c6862eb274f21a7c0b60e5345467a12e6dda8b9af4438c66d496a2c1a538264 + md5: 55e66e68ce55523a6811633dd1ac74e2 + depends: + - __osx >=11.0 + - libbrotlicommon 1.1.0 hd74edd7_2 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 28378 + timestamp: 1725267980316 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.1.0-hb9d3cd8_2.conda + sha256: 779f58174e99de3600e939fa46eddb453ec5d3c60bb46cdaa8b4c127224dbf29 + md5: 06f70867945ea6a84d35836af780f1de + depends: + - __glibc >=2.17,<3.0.a0 + - libbrotlicommon 1.1.0 hb9d3cd8_2 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 281750 + timestamp: 1725267679782 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlienc-1.1.0-h86ecc28_2.conda + sha256: 41385e17bc73834b235c5aff12d6d82eccb534acb3c30986996f9dad92a0d54c + md5: 0e9bd365480c72b25c71a448257b537d + depends: + - libbrotlicommon 1.1.0 h86ecc28_2 + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 290230 + timestamp: 1725267792697 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlienc-1.1.0-hd74edd7_2.conda + sha256: eeb1eb0d58b9d02bc1b98dc0a058f104ab168eb2f7d1c7bfa0570a12cfcdb7b7 + md5: 4f3a434504c67b2c42565c0b85c1885c + depends: + - __osx >=11.0 + - libbrotlicommon 1.1.0 hd74edd7_2 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 279644 + timestamp: 1725268003553 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-16_linux64_mkl.tar.bz2 + build_number: 16 + sha256: 892ba10508f22310ccfe748df1fd3b6c7f20e7b6f6b79e69ed337863551c1bd8 + md5: 361bf757b95488de76c4f123805742d3 + depends: + - libblas 3.9.0 16_linux64_mkl + constrains: + - liblapack 3.9.0 16_linux64_mkl + - liblapacke 3.9.0 16_linux64_mkl + - blas * mkl + - mkl <2025 + arch: x86_64 + platform: linux + track_features: + - blas_mkl + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 12791 + timestamp: 1660094570921 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-31_hab92f65_openblas.conda + build_number: 31 + sha256: f0457a1d2982f0a28bfbadaa02621677c324e88f7c8198c24fb3e3214c468dba + md5: 6b81dbae56a519f1ec2f25e0ee2f4334 + depends: + - libblas 3.9.0 31_h1a9f1db_openblas + constrains: + - liblapack =3.9.0=31*_openblas + - blas =2.131=openblas + - liblapacke =3.9.0=31*_openblas + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 16824 + timestamp: 1740087917500 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-19_osxarm64_openblas.conda + build_number: 19 + sha256: 19b1c5e3ddd383ec14540336f4704938218d3c1db4707ae10d5357afb22cccc1 + md5: 5460a8d1beffd7f63994d891e6a20da4 + depends: + - libblas 3.9.0 19_osxarm64_openblas + constrains: + - liblapack 3.9.0 19_osxarm64_openblas + - blas * openblas + - liblapacke 3.9.0 19_osxarm64_openblas + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 14738 + timestamp: 1697484590682 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcrc32c-1.1.2-h9c3ff4c_0.tar.bz2 + sha256: fd1d153962764433fe6233f34a72cdeed5dcf8a883a85769e8295ce940b5b0c5 + md5: c965a5aa0d5c1c37ffc62dff36e28400 + depends: + - libgcc-ng >=9.4.0 + - libstdcxx-ng >=9.4.0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 20440 + timestamp: 1633683576494 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcrc32c-1.1.2-h01db608_0.tar.bz2 + sha256: b8b8c57a87da86b3ea24280fd6aa8efaf92f4e684b606bf2db5d3cb06ffbe2ea + md5: 268ee639c17ada0002fb04dd21816cc2 + depends: + - libgcc-ng >=9.4.0 + - libstdcxx-ng >=9.4.0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 18669 + timestamp: 1633683724891 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcrc32c-1.1.2-hbdafb3b_0.tar.bz2 + sha256: 58477b67cc719060b5b069ba57161e20ba69b8695d154a719cb4b60caf577929 + md5: 32bd82a6a625ea6ce090a81c3d34edeb + depends: + - libcxx >=11.1.0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 18765 + timestamp: 1633683992603 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcublas-12.4.5.8-he02047a_2.conda + sha256: 168e664423e875f7107697dfa7935399675872ea8abffa92621db98007258d66 + md5: d446adae085aa1ff37c44b69988a6f06 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-nvrtc + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 240665617 + timestamp: 1715711552741 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcufft-11.2.1.3-he02047a_2.conda + sha256: 242e1ed210a85fc0dc2a4e86bf0b75120f1768ab66497502c5e6d69e801bf9dc + md5: d2641a67c207946ef96f1328c4a8e8ed + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 174980358 + timestamp: 1715711515585 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcufile-1.9.1.3-he02047a_2.conda + sha256: 7fa7a608d52064b724241e4026f0e0cc244c6f725623e2c26c810be99822fa28 + md5: a051267bcb1912467c81d802a7d3465e + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 924329 + timestamp: 1715720836466 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcurand-10.3.5.147-he02047a_2.conda + sha256: 7db821fc8f566dbb8d4e40dae62edb07d638db8c028d677a0063ece66872d19c + md5: 9c4886d513fd477df88d411cd274c202 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 41590169 + timestamp: 1715711553620 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.12.1-h332b0f4_0.conda + sha256: 2ebc3039af29269e4cdb858fca36265e5e400c1125a4bcd84ae73a596e0e76ca + md5: 45e9dc4e7b25e2841deb392be085500e + depends: + - __glibc >=2.17,<3.0.a0 + - krb5 >=1.21.3,<1.22.0a0 + - libgcc >=13 + - libnghttp2 >=1.64.0,<2.0a0 + - libssh2 >=1.11.1,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.1,<4.0a0 + - zstd >=1.5.6,<1.6.0a0 + arch: x86_64 + platform: linux + license: curl + license_family: MIT + purls: [] + size: 426675 + timestamp: 1739512336799 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcurl-8.12.1-h6702fde_0.conda + sha256: a00458a5163b9552897cdac08b273deb1b3add09e05599dfbacf0606c3b1f41f + md5: 14c340cb70867cf7953d2632f89270b5 + depends: + - krb5 >=1.21.3,<1.22.0a0 + - libgcc >=13 + - libnghttp2 >=1.64.0,<2.0a0 + - libssh2 >=1.11.1,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.1,<4.0a0 + - zstd >=1.5.6,<1.6.0a0 + arch: aarch64 + platform: linux + license: curl + license_family: MIT + purls: [] + size: 444118 + timestamp: 1739512317570 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.12.1-h73640d1_0.conda + sha256: 0bddd1791eb0602c8c6aa465802e9d4526d3ec1251d900b209e767753565d5df + md5: 105f0cceef753644912f42e11c1ae9cf + depends: + - __osx >=11.0 + - krb5 >=1.21.3,<1.22.0a0 + - libnghttp2 >=1.64.0,<2.0a0 + - libssh2 >=1.11.1,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.1,<4.0a0 + - zstd >=1.5.6,<1.6.0a0 + arch: arm64 + platform: osx + license: curl + license_family: MIT + purls: [] + size: 387893 + timestamp: 1739512564746 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcusolver-11.6.1.9-he02047a_2.conda + sha256: df4f8a94bffb59dc3da28fb5a892c1ef2553f8afd49f141d3e2da8c92f276a56 + md5: 9f6877f8936be962f598db5e9b8efc51 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libcublas >=12.4.5.8,<12.5.0a0 + - libcusparse >=12.3.1.170,<12.4.0a0 + - libgcc-ng >=12 + - libnvjitlink >=12.4.127,<12.5.0a0 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 81594879 + timestamp: 1715711788074 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcusparse-12.3.1.170-he02047a_2.conda + sha256: f2254e41c93a8c3529690c19350556708182ef699ca658c6554eeb7eb4b8c3de + md5: 1c4c7ff54dc5b947f2ab8f5ff8a28dae + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libnvjitlink >=12.4.127,<12.5.0a0 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 117818451 + timestamp: 1715711610677 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda + sha256: 776092346da87a2a23502e14d91eb0c32699c4a1522b7331537bd1c3751dcff5 + md5: 5b3e1610ff8bd5443476b91d618f5b77 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + purls: [] + size: 523505 + timestamp: 1736877862502 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.23-h4ddbbb0_0.conda + sha256: 511d801626d02f4247a04fff957cc6e9ec4cc7e8622bd9acd076bcdc5de5fe66 + md5: 8dfae1d2e74767e9ce36d5fa0d8605db + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 72255 + timestamp: 1734373823254 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libdeflate-1.23-h5e3c512_0.conda + sha256: 959419d87cd2b789a9055db95704c614f31aeb70bef7949fa2f734122a3a2863 + md5: 7e7ca2607b11b180120cefc2354fc0cb + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 69862 + timestamp: 1734373858306 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.23-hec38601_0.conda + sha256: 887c02deaed6d583459eba6367023e36d8761085b2f7126e389424f57155da53 + md5: 1d8b9588be14e71df38c525767a1ac30 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 54132 + timestamp: 1734373971372 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda + sha256: d789471216e7aba3c184cd054ed61ce3f6dac6f87a50ec69291b9297f8c18724 + md5: c277e0a4d549b03ac1e9d6cbbe3d017b + depends: + - ncurses + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - ncurses >=6.5,<7.0a0 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 134676 + timestamp: 1738479519902 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20250104-pl5321h976ea20_0.conda + sha256: c0b27546aa3a23d47919226b3a1635fccdb4f24b94e72e206a751b33f46fd8d6 + md5: fb640d776fc92b682a14e001980825b1 + depends: + - ncurses + - libgcc >=13 + - ncurses >=6.5,<7.0a0 + arch: aarch64 + platform: linux + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 148125 + timestamp: 1738479808948 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda + sha256: 66aa216a403de0bb0c1340a88d1a06adaff66bae2cfd196731aa24db9859d631 + md5: 44083d2d2c2025afca315c7a172eab2b + depends: + - ncurses + - __osx >=11.0 + - ncurses >=6.5,<7.0a0 + arch: arm64 + platform: osx + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 107691 + timestamp: 1738479560845 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda + sha256: 1cd6048169fa0395af74ed5d8f1716e22c19a81a8a36f934c110ca3ad4dd27b4 + md5: 172bf1cd1ff8629f2b1179945ed45055 + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 112766 + timestamp: 1702146165126 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libev-4.33-h31becfc_2.conda + sha256: 973af77e297f1955dd1f69c2cbdc5ab9dfc88388a5576cd152cda178af0fd006 + md5: a9a13cb143bbaa477b1ebaefbe47a302 + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 115123 + timestamp: 1702146237623 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libev-4.33-h93a5062_2.conda + sha256: 95cecb3902fbe0399c3a7e67a5bed1db813e5ab0e22f4023a5e0f722f2cc214f + md5: 36d33e440c31857372a72137f78bacf5 + arch: arm64 + platform: osx + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 107458 + timestamp: 1702146414478 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libevent-2.1.12-hf998b51_1.conda + sha256: 2e14399d81fb348e9d231a82ca4d816bf855206923759b69ad006ba482764131 + md5: a1cfcc585f0c42bf8d5546bb1dfb668d + depends: + - libgcc-ng >=12 + - openssl >=3.1.1,<4.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 427426 + timestamp: 1685725977222 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libevent-2.1.12-h4ba1bb4_1.conda + sha256: 01333cc7d6e6985dd5700b43660d90e9e58049182017fd24862088ecbe1458e4 + md5: 96ae6083cd1ac9f6bc81631ac835b317 + depends: + - libgcc-ng >=12 + - openssl >=3.1.1,<4.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 438992 + timestamp: 1685726046519 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libevent-2.1.12-h2757513_1.conda + sha256: 8c136d7586259bb5c0d2b913aaadc5b9737787ae4f40e3ad1beaf96c80b919b7 + md5: 1a109764bff3bdc7bdd84088347d71dc + depends: + - openssl >=3.1.1,<4.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 368167 + timestamp: 1685726248899 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda + sha256: 56541b98447b58e52d824bd59d6382d609e11de1f8adf20b23143e353d2b8d26 + md5: db833e03127376d461e1e13e76f09b6c + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + constrains: + - expat 2.6.4.* + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 73304 + timestamp: 1730967041968 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.6.4-h5ad3122_0.conda + sha256: f42e758009ba9db90d1fe7992bc3e60d0c52f71fb20923375d2c44ae69a5a2b3 + md5: f1b3fab36861b3ce945a13f0dfdfc688 + depends: + - libgcc >=13 + constrains: + - expat 2.6.4.* + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 72345 + timestamp: 1730967203789 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.4-h286801f_0.conda + sha256: e42ab5ace927ee7c84e3f0f7d813671e1cf3529f5f06ee5899606630498c2745 + md5: 38d2656dd914feb0cab8c629370768bf + depends: + - __osx >=11.0 + constrains: + - expat 2.6.4.* + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 64693 + timestamp: 1730967175868 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_0.conda + sha256: 67a6c95e33ebc763c1adc3455b9a9ecde901850eb2fceb8e646cc05ef3a663da + md5: e3eb7806380bc8bcecba6d749ad5f026 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 53415 + timestamp: 1739260413716 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.4.6-he21f813_0.conda + sha256: 41568066beefe7b319ff27d85952242e5b77fb753d705b8716041959e17c35c2 + md5: 966084fccf3ad62a3160666cda869f28 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 51513 + timestamp: 1739260449772 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 + sha256: 41b3d13efb775e340e4dba549ab5c029611ea6918703096b2eaa9c015c0750ca + md5: 086914b672be056eb70fd4285b6783b6 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 39020 + timestamp: 1636488587153 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h767d61c_2.conda + sha256: 3a572d031cb86deb541d15c1875aaa097baefc0c580b54dc61f5edab99215792 + md5: ef504d1acbd74b7cc6849ef8af47dd03 + depends: + - __glibc >=2.17,<3.0.a0 + - _openmp_mutex >=4.5 + constrains: + - libgomp 14.2.0 h767d61c_2 + - libgcc-ng ==14.2.0=*_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 847885 + timestamp: 1740240653082 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-14.2.0-he277a41_2.conda + sha256: a57f7f9ba2a12f56eafdcd25b6d75f7be10b8fc1a802a58b76a77ca8c66f4503 + md5: 6b4268a60b10f29257b51b9b67ff8d76 + depends: + - _openmp_mutex >=4.5 + constrains: + - libgcc-ng ==14.2.0=*_2 + - libgomp 14.2.0 he277a41_2 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 535507 + timestamp: 1740241069780 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_2.conda + sha256: fb7558c328b38b2f9d2e412c48da7890e7721ba018d733ebdfea57280df01904 + md5: a2222a6ada71fb478682efe483ce0f92 + depends: + - libgcc 14.2.0 h767d61c_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 53758 + timestamp: 1740240660904 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-14.2.0-he9431aa_2.conda + sha256: 9647f75cddc18b07eebe6e1f21500eed50a6af2c43c84e831b4c7a597e10d226 + md5: 692c2bb75f32cfafb6799cf6d1c5d0e0 + depends: + - libgcc 14.2.0 he277a41_2 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 53622 + timestamp: 1740241074834 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_2.conda + sha256: e05263e8960da03c341650f2a3ffa4ccae4e111cb198e8933a2908125459e5a6 + md5: fb54c4ea68b460c278d26eea89cfbcc3 + depends: + - libgfortran5 14.2.0 hf1ad2bd_2 + constrains: + - libgfortran-ng ==14.2.0=*_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 53733 + timestamp: 1740240690977 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_2.conda + sha256: 996d3c0505301901a7ab23b5e7daad21635d1c065240bb0f4faf7e4f75d7f49d + md5: d8b9d9dc0c8cd97d375b48e55947ba70 + depends: + - libgfortran5 14.2.0 hb6113d0_2 + constrains: + - libgfortran-ng ==14.2.0=*_2 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 53611 + timestamp: 1740241100147 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda + sha256: 44e541b4821c96b28b27fef5630883a60ce4fee91fd9c79f25a199f8f73f337b + md5: 4a55d9e169114b2b90d3ec4604cd7bbf + depends: + - libgfortran5 13.2.0 hf226fd6_3 + arch: arm64 + platform: osx + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 110233 + timestamp: 1707330749033 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-ng-14.2.0-h69a702a_2.conda + sha256: 688a5968852e677d2a64974c8869ffb120eac21997ced7d15c599f152ef6857e + md5: 4056c857af1a99ee50589a941059ec55 + depends: + - libgfortran 14.2.0 h69a702a_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 53781 + timestamp: 1740240884760 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hf1ad2bd_2.conda + sha256: c17b7cf3073a1f4e1f34d50872934fa326346e104d3c445abc1e62481ad6085c + md5: 556a4fdfac7287d349b8f09aba899693 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14.2.0 + constrains: + - libgfortran 14.2.0 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 1461978 + timestamp: 1740240671964 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_2.conda + sha256: 7b9e1d3666a00e5a52e5d43c003bd1c73ab472804be513c070aaedca9c4c2a9a + md5: cd754566661513808ef2408c4ab99a2f + depends: + - libgcc >=14.2.0 + constrains: + - libgfortran 14.2.0 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 1100765 + timestamp: 1740241083241 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda + sha256: bafc679eedb468a86aa4636061c55966186399ee0a04b605920d208d97ac579a + md5: 66ac81d54e95c534ae488726c1f698ea + depends: + - llvm-openmp >=8.0.0 + constrains: + - libgfortran 5.0.0 13_2_0_*_3 + arch: arm64 + platform: osx + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 997381 + timestamp: 1707330687590 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_2.conda + sha256: 4e303711fb7413bf98995beac58e731073099d7a669a3b81e49330ca8da05174 + md5: b11c09d9463daf4cae492d29806b1889 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 462783 + timestamp: 1740241005079 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.35.0-h2b5623c_0.conda + sha256: d747d14c69da512d8993a995dc2df90e857778b0a8542f12fb751544128af685 + md5: 1040ab07d7af9f23cf2466ffe4e58db1 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcurl >=8.11.1,<9.0a0 + - libgcc >=13 + - libgrpc >=1.67.1,<1.68.0a0 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + - openssl >=3.4.0,<4.0a0 + constrains: + - libgoogle-cloud 2.35.0 *_0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 1258035 + timestamp: 1738662406183 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-2.35.0-hccf9d24_0.conda + sha256: b5d323807ea699e76d9ebb829e48100446663978a1aac9adf538249864f73f97 + md5: f22720e07abb547ebce78a3aa7b97d69 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcurl >=8.11.1,<9.0a0 + - libgcc >=13 + - libgrpc >=1.67.1,<1.68.0a0 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + - openssl >=3.4.0,<4.0a0 + constrains: + - libgoogle-cloud 2.35.0 *_0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 1258015 + timestamp: 1738662706891 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-2.35.0-hdbe95d5_0.conda + sha256: 9bee9773540956d8a2ca0b317f73d94916200a4bfd8151319bf7fdcbf704d692 + md5: b1ea94282f38b142f8bc842ef7bcc18c + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcurl >=8.11.1,<9.0a0 + - libcxx >=18 + - libgrpc >=1.67.1,<1.68.0a0 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - openssl >=3.4.0,<4.0a0 + constrains: + - libgoogle-cloud 2.35.0 *_0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 877733 + timestamp: 1738662822079 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.35.0-h0121fbd_0.conda + sha256: cb1ef70e55d2c1defbfd8413dbe85b5550782470dda4f8d393f28d41b6d9b007 + md5: 34e2243e0428aac6b3e903ef99b6d57d + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil + - libcrc32c >=1.1.2,<1.2.0a0 + - libcurl + - libgcc >=13 + - libgoogle-cloud 2.35.0 h2b5623c_0 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 785777 + timestamp: 1738662565066 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-storage-2.35.0-hb9b2b65_0.conda + sha256: cf316f07d5dcc3b6669bf6d93203d435133c99d075a9f92dfa28eff1bd4def74 + md5: ae6ab5b7af1409d0eafd2b77c5d5528a + depends: + - libabseil + - libcrc32c >=1.1.2,<1.2.0a0 + - libcurl + - libgcc >=13 + - libgoogle-cloud 2.35.0 hccf9d24_0 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 739471 + timestamp: 1738662862568 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-storage-2.35.0-h7081f7f_0.conda + sha256: 52dc2d18264543b564b59fb80338fbd9cb2296f011d75f41adcd85041795201c + md5: 958beca4e16f59360e30c48ff0351e04 + depends: + - __osx >=11.0 + - libabseil + - libcrc32c >=1.1.2,<1.2.0a0 + - libcurl + - libcxx >=18 + - libgoogle-cloud 2.35.0 hdbe95d5_0 + - libzlib >=1.3.1,<2.0a0 + - openssl + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 529210 + timestamp: 1738664024959 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.67.1-h25350d4_1.conda + sha256: 014627485b3cf0ea18e04c0bab07be7fb98722a3aeeb58477acc7e1c3d2f911e + md5: 0c6497a760b99a926c7c12b74951a39c + depends: + - __glibc >=2.17,<3.0.a0 + - c-ares >=1.34.4,<2.0a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libre2-11 >=2024.7.2 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + - re2 + constrains: + - grpc-cpp =1.67.1 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 7792251 + timestamp: 1735584856826 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgrpc-1.67.1-hf7ccdd3_1.conda + sha256: 3fa173dc1d7456aac2b26937daae86a08432a31640e3d6569c62edc661fc9bbe + md5: 8fb41a425bebaeb3d0fa568503612e64 + depends: + - c-ares >=1.34.4,<2.0a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libre2-11 >=2024.7.2 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + - re2 + constrains: + - grpc-cpp =1.67.1 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 7430006 + timestamp: 1735585769731 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgrpc-1.67.1-h0a426d6_1.conda + sha256: 630edf63981818ff590367cb95fddbed0f5a390464d0952c90ec81de899e84a6 + md5: 8a3cba079d6ac985e7d73c76a678fbb4 + depends: + - __osx >=11.0 + - c-ares >=1.34.4,<2.0a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libre2-11 >=2024.7.2 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + - re2 + constrains: + - grpc-cpp =1.67.1 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 5311706 + timestamp: 1735585137716 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libhwloc-2.11.2-default_h0d58e46_1001.conda + sha256: d14c016482e1409ae1c50109a9ff933460a50940d2682e745ab1c172b5282a69 + md5: 804ca9e91bcaea0824a341d55b1684f2 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + - libxml2 >=2.13.4,<3.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 2423200 + timestamp: 1731374922090 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h4ce23a2_1.conda + sha256: 18a4afe14f731bfb9cf388659994263904d20111e42f841e9eea1bb6f91f4ab4 + md5: e796ff8ddc598affdf7c173d6145f087 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: LGPL-2.1-only + purls: [] + size: 713084 + timestamp: 1740128065462 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libiconv-1.18-hc99b53d_1.conda + sha256: 3db14977036fe1f511a6dbecacbeff3fdb58482c5c0cf87a2ea3232f5a540836 + md5: 81541d85a45fbf4d0a29346176f1f21c + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: LGPL-2.1-only + purls: [] + size: 718600 + timestamp: 1740130562607 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.18-hfe07756_1.conda + sha256: d30780d24bf3a30b4f116fca74dedb4199b34d500fe6c52cced5f8cc1e926f03 + md5: 450e6bdc0c7d986acf7b8443dce87111 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: LGPL-2.1-only + purls: [] + size: 681804 + timestamp: 1740128227484 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda + sha256: b954e09b7e49c2f2433d6f3bb73868eda5e378278b0f8c1dd10a7ef090e14f2f + md5: ea25936bb4080d843790b586850f82b8 + depends: + - libgcc-ng >=12 + constrains: + - jpeg <0.0.0a + arch: x86_64 + platform: linux + license: IJG AND BSD-3-Clause AND Zlib + purls: [] + size: 618575 + timestamp: 1694474974816 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libjpeg-turbo-3.0.0-h31becfc_1.conda + sha256: 675bc1f2a8581cd34a86c412663ec29c5f90c1d9f8d11866aa1ade5cdbdf8429 + md5: ed24e702928be089d9ba3f05618515c6 + depends: + - libgcc-ng >=12 + constrains: + - jpeg <0.0.0a + arch: aarch64 + platform: linux + license: IJG AND BSD-3-Clause AND Zlib + purls: [] + size: 647126 + timestamp: 1694475003570 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.0.0-hb547adb_1.conda + sha256: a42054eaa38e84fc1e5ab443facac4bbc9d1b6b6f23f54b7bf4f1eb687e1d993 + md5: 3ff1e053dc3a2b8e36b9bfa4256a58d1 + constrains: + - jpeg <0.0.0a + arch: arm64 + platform: osx + license: IJG AND BSD-3-Clause AND Zlib + purls: [] + size: 547541 + timestamp: 1694475104253 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-16_linux64_mkl.tar.bz2 + build_number: 16 + sha256: d6201f860b2d76ed59027e69c2bbad6d1cb211a215ec9705cc487cde488fa1fa + md5: a2f166748917d6d6e4707841ca1f519e + depends: + - libblas 3.9.0 16_linux64_mkl + constrains: + - blas * mkl + - liblapacke 3.9.0 16_linux64_mkl + - libcblas 3.9.0 16_linux64_mkl + - mkl <2025 + arch: x86_64 + platform: linux + track_features: + - blas_mkl + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 12791 + timestamp: 1660094578903 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-31_h411afd4_openblas.conda + build_number: 31 + sha256: 27613828ff6fb258b2e58802617df549f00089660ea8ab6c55c68f042c570162 + md5: 41dbff5eb805a75c120a7b7a1c744dc2 + depends: + - libblas 3.9.0 31_h1a9f1db_openblas + constrains: + - blas =2.131=openblas + - libcblas =3.9.0=31*_openblas + - liblapacke =3.9.0=31*_openblas + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 16845 + timestamp: 1740087923843 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-19_osxarm64_openblas.conda + build_number: 19 + sha256: f19cff537403c9feed98c7e18259022102b087f2b72a757e8a417476b9cf30c1 + md5: 3638eacb084c374f41f9efa40d20a47b + depends: + - libblas 3.9.0 19_osxarm64_openblas + constrains: + - libcblas 3.9.0 19_osxarm64_openblas + - blas * openblas + - liblapacke 3.9.0 19_osxarm64_openblas + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 14721 + timestamp: 1697484603691 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblapacke-3.9.0-16_linux64_mkl.tar.bz2 + build_number: 16 + sha256: 935036dc46c483cba8288c6de58d461ab3f42915715ffe9485105ad1dd203a0e + md5: 44ccc4d4dca6a8d57fa17442bc64b5a1 + depends: + - libblas 3.9.0 16_linux64_mkl + - libcblas 3.9.0 16_linux64_mkl + - liblapack 3.9.0 16_linux64_mkl + constrains: + - blas * mkl + - mkl <2025 + arch: x86_64 + platform: linux + track_features: + - blas_mkl + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 12793 + timestamp: 1660094586875 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda + sha256: cad52e10319ca4585bc37f0bc7cce99ec7c15dc9168e42ccb96b741b0a27db3f + md5: 42d5b6a0f30d3c10cd88cb8584fda1cb + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: 0BSD + purls: [] + size: 111357 + timestamp: 1738525339684 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.4-h86ecc28_0.conda + sha256: 96413664f0fade54a4931940d18749cfc8e6308349dbb0cb83adb2394ca1f730 + md5: b88244e0a115cc34f7fbca9b11248e76 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: 0BSD + purls: [] + size: 124197 + timestamp: 1738528201520 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.4-h39f12f2_0.conda + sha256: 560c59d3834cc652a84fb45531bd335ad06e271b34ebc216e380a89798fe8e2c + md5: e3fd1f8320a100f2b210e690a57cd615 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: 0BSD + purls: [] + size: 98945 + timestamp: 1738525462560 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda + sha256: b0f2b3695b13a989f75d8fd7f4778e1c7aabe3b36db83f0fe80b2cd812c0e975 + md5: 19e57602824042dfd0446292ef90488b + depends: + - __glibc >=2.17,<3.0.a0 + - c-ares >=1.32.3,<2.0a0 + - libev >=4.33,<4.34.0a0 + - libev >=4.33,<5.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.3.2,<4.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 647599 + timestamp: 1729571887612 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnghttp2-1.64.0-hc8609a4_0.conda + sha256: c093c6d370aadbf0409c20b6c54c488ee2f6fea976181919fcc63e87ee232673 + md5: f52c614fa214a8bedece9421c771670d + depends: + - c-ares >=1.32.3,<2.0a0 + - libev >=4.33,<4.34.0a0 + - libev >=4.33,<5.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.3.2,<4.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 714610 + timestamp: 1729571912479 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.64.0-h6d7220d_0.conda + sha256: 00cc685824f39f51be5233b54e19f45abd60de5d8847f1a56906f8936648b72f + md5: 3408c02539cee5f1141f9f11450b6a51 + depends: + - __osx >=11.0 + - c-ares >=1.34.2,<2.0a0 + - libcxx >=17 + - libev >=4.33,<4.34.0a0 + - libev >=4.33,<5.0a0 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.3.2,<4.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 566719 + timestamp: 1729572385640 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnpp-12.2.5.30-he02047a_2.conda + sha256: d8c97716825955c48681f4a3cde2f0cbbacc77c91b4cd944d4906f63385487df + md5: a96a1edd18bee676cf2dcca251d3d6a4 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 99461229 + timestamp: 1715711634268 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda + sha256: 26d77a3bb4dceeedc2a41bd688564fe71bf2d149fdcf117049970bc02ff1add6 + md5: 30fd6e37fe21f86f4bd26d6ee73eeec7 + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: LGPL-2.1-only + license_family: GPL + purls: [] + size: 33408 + timestamp: 1697359010159 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda + sha256: fd18c2b75d7411096428d36a70b36b1a17e31f7b8956b6905d145792d49e97f8 + md5: c14f32510f694e3185704d89967ec422 + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: LGPL-2.1-only + license_family: GPL + purls: [] + size: 34501 + timestamp: 1697358973269 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnvfatbin-12.4.127-he02047a_2.conda + sha256: d40f37532f86cbbe63439489be0e88561819190392cc519c69365b3fc47a2c5b + md5: d746b76642b4ac6e40f1219405672beb + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 792025 + timestamp: 1715711761341 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnvjitlink-12.4.127-he02047a_2.conda + sha256: 31382c8ef388a51bd2c283a239e037b8b30f9c7ecf6ec9744824445b59db39b6 + md5: 303845d6c48bf4185dc4138634650468 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 16571958 + timestamp: 1715711715842 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnvjpeg-12.3.1.117-he02047a_2.conda + sha256: 49a182f8da4ba30fbfee9692976d9da349371175c9c9576768d4754a51fef326 + md5: 8f3ed0e41a4b505de40b4f96f4bfb0fa + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 2491500 + timestamp: 1715711780068 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.29-pthreads_h9d3fd7e_0.conda + sha256: 3a2ccf4c9098cd18a636e9b7fff947fdeb4962bcfb75c9d6fd80b8c50caf6a3c + md5: a99e2bfcb1ad6362544c71281eb617e9 + depends: + - libgcc >=14 + - libgfortran + - libgfortran5 >=14.2.0 + constrains: + - openblas >=0.3.29,<0.3.30.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 4801657 + timestamp: 1739825308974 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.24-openmp_hd76b1f2_0.conda + sha256: 21edfdf620ac5c93571aab452199b6b4622c445441dad88ab4d2eb326a7b91b3 + md5: aacb05989f358affe1bafd4ea7294db4 + depends: + - libgfortran 5.* + - libgfortran5 >=12.3.0 + - llvm-openmp >=15.0.7 + constrains: + - openblas >=0.3.24,<0.3.25.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 2849225 + timestamp: 1693784744674 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-1.18.0-hfcad708_1.conda + sha256: 4ea235e08676f16b0d3c3380befe1478c0fa0141512ee709b011005c55c9619f + md5: 1f5a5d66e77a39dc5bd639ec953705cf + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcurl >=8.11.1,<9.0a0 + - libgrpc >=1.67.1,<1.68.0a0 + - libopentelemetry-cpp-headers 1.18.0 ha770c72_1 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libzlib >=1.3.1,<2.0a0 + - nlohmann_json + - prometheus-cpp >=1.3.0,<1.4.0a0 + constrains: + - cpp-opentelemetry-sdk =1.18.0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 801927 + timestamp: 1735643375271 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopentelemetry-cpp-1.18.0-h60b47f9_1.conda + sha256: 160c493cd0f897955b0b6035b51c6d7255ffbaed3c8a12d43e8e8a719d405aba + md5: afe3c8c53f4b6d27d553c230d4b34038 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcurl >=8.11.1,<9.0a0 + - libgrpc >=1.67.1,<1.68.0a0 + - libopentelemetry-cpp-headers 1.18.0 h8af1aa0_1 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libzlib >=1.3.1,<2.0a0 + - nlohmann_json + - prometheus-cpp >=1.3.0,<1.4.0a0 + constrains: + - cpp-opentelemetry-sdk =1.18.0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 800896 + timestamp: 1735643533825 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopentelemetry-cpp-1.18.0-h0c05b2d_1.conda + sha256: c6bcbd53d62a9e0d8c667e560db0ca2ecb7679277cbb3c23457aabe74fcb8cba + md5: 19c46cc18825f3924251c39ec1b0d983 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcurl >=8.11.1,<9.0a0 + - libgrpc >=1.67.1,<1.68.0a0 + - libopentelemetry-cpp-headers 1.18.0 hce30654_1 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libzlib >=1.3.1,<2.0a0 + - nlohmann_json + - prometheus-cpp >=1.3.0,<1.4.0a0 + constrains: + - cpp-opentelemetry-sdk =1.18.0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 529588 + timestamp: 1735643889612 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-headers-1.18.0-ha770c72_1.conda + sha256: aa1f7dea79ea8513ff77339ba7c6e9cf10dfa537143e7718b1cfb3af52b649f2 + md5: 4fb055f57404920a43b147031471e03b + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 320359 + timestamp: 1735643346175 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopentelemetry-cpp-headers-1.18.0-h8af1aa0_1.conda + sha256: 981c0b29a0789597fa8ed147b02df2d2ad0c7f863d87df74770c40cee1800228 + md5: 282193b19a19e3b5d75d18ef82713ef0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 319401 + timestamp: 1735643509251 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopentelemetry-cpp-headers-1.18.0-hce30654_1.conda + sha256: 82e5f5ba64debbaab3c601b265dfc0cdb4d2880feba9bada5fd2e67b9f91ada5 + md5: e965dad955841507549fdacd8f7f94c0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 320565 + timestamp: 1735643673319 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-19.0.1-h081d1f1_0_cpu.conda + sha256: e9c4a07e79886963bfcd05894a15b5d4c7137c1122273de68845315c35d6505d + md5: 8b58c378d65b213c001f04a174a2a70e + depends: + - __glibc >=2.17,<3.0.a0 + - libarrow 19.0.1 hfa2a6e7_0_cpu + - libgcc >=13 + - libstdcxx >=13 + - libthrift >=0.21.0,<0.21.1.0a0 + - openssl >=3.4.1,<4.0a0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 1244749 + timestamp: 1739769006551 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-19.0.1-hfc78867_0_cpu.conda + sha256: 4822fcb00e97644ce74f313cd2f44fe85085c64b1481ac7e1a22ee7dd2ef772a + md5: d19e95e75e9005e712ec81409868b880 + depends: + - libarrow 19.0.1 h36213f4_0_cpu + - libgcc >=13 + - libstdcxx >=13 + - libthrift >=0.21.0,<0.21.1.0a0 + - openssl >=3.4.1,<4.0a0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 1154758 + timestamp: 1739770461892 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-19.0.1-h636d7b7_0_cpu.conda + sha256: 54e4a18493d63b7fbd5cf39fadabe665bcf462121a7bc2f394f510b0bcf22031 + md5: 0cce19e6981849babe6c73797abbfa4e + depends: + - __osx >=11.0 + - libarrow 19.0.1 h0945df6_0_cpu + - libcxx >=18 + - libthrift >=0.21.0,<0.21.1.0a0 + - openssl >=3.4.1,<4.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 895659 + timestamp: 1739768176454 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.47-h943b412_0.conda + sha256: 23367d71da58c9a61c8cbd963fcffb92768d4ae5ffbef9a47cdf1f54f98c5c36 + md5: 55199e2ae2c3651f6f9b2a447b47bdc9 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux + license: zlib-acknowledgement + purls: [] + size: 288701 + timestamp: 1739952993639 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.47-hec79eb8_0.conda + sha256: 3861a65106a5f876eff3fc19042c3edb528216114b9f8e64b37aebf003deda11 + md5: c4b1ba0d7cef5002759d2f156722feee + depends: + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + arch: aarch64 + platform: linux + license: zlib-acknowledgement + purls: [] + size: 291536 + timestamp: 1739957375872 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.47-h3783ad8_0.conda + sha256: dc93cc30f59b28e7812c6f14d2c2e590b509c38092cce7ababe6b23541b7ed8f + md5: 3550e05e3af94a3fa9cef2694417ccdf + depends: + - __osx >=11.0 + - libzlib >=1.3.1,<2.0a0 + arch: arm64 + platform: osx + license: zlib-acknowledgement + purls: [] + size: 259332 + timestamp: 1739953032676 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda + sha256: 51125ebb8b7152e4a4e69fd2398489c4ec8473195c27cde3cbdf1cb6d18c5493 + md5: d8703f1ffe5a06356f06467f1d0b9464 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 2960815 + timestamp: 1735577210663 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.3-h44a3b7b_1.conda + sha256: ecb69f2b1668e784b41ba667493be846662d5ef702bef64fb2e013bb1364cdc4 + md5: 68f807f7cc13951652bbe048253fd405 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 2788074 + timestamp: 1735576315676 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.3-h3bd63a1_1.conda + sha256: f58a16b13ad53346903c833e266f83c3d770a43a432659b98710aed85ca885e7 + md5: bdbfea4cf45ae36652c6bbcc2e7ebe91 + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=18 + - libzlib >=1.3.1,<2.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 2271580 + timestamp: 1735576361997 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_2.conda + sha256: 4420f8362c71251892ba1eeb957c5e445e4e1596c0c651c28d0d8b415fe120c7 + md5: b2fede24428726dd867611664fb372e8 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libstdcxx >=13 + constrains: + - re2 2024.07.02.* + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 209793 + timestamp: 1735541054068 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_2.conda + sha256: 862c20de0120f802e618dcb25913d00c5b82f91f4be60b2d46a774e851adc2f6 + md5: 9a7dbbaab49f76a6f36e5c9d98e323a7 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libstdcxx >=13 + constrains: + - re2 2024.07.02.* + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 204305 + timestamp: 1735540986919 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h07bc746_2.conda + sha256: 112a73ad483353751d4c5d63648c69a4d6fcebf5e1b698a860a3f5124fc3db96 + md5: 6b1e3624d3488016ca4f1ca0c412efaa + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=18 + constrains: + - re2 2024.07.02.* + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 167155 + timestamp: 1735541067807 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsentencepiece-0.2.0-h8e10757_10.conda + sha256: dc399e0f04a09f8c1807c3b36e578eb81f81891c0ddf21de9c1fb9f048ce4031 + md5: 4f43dbcfacd3cc9a183dd3a48b94d3c0 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 823649 + timestamp: 1735627841126 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsentencepiece-0.2.0-h6164ad9_10.conda + sha256: 57074803772f65d4075b7d6dc17ff5aa40ec3a30109fa4225ca16911504c4a8b + md5: a7a192edc9cfba26a27df3283203e6a1 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 800865 + timestamp: 1735627982895 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsentencepiece-0.2.0-he13a0af_10.conda + sha256: 3347a8840d085ce1661928e736229f068d56c84312fbed90886e059023d85611 + md5: 1f67e5e30edd56e0a0bf6df6bb711a9d + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 754657 + timestamp: 1735628030895 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda + sha256: 0105bd108f19ea8e6a78d2d994a6d4a8db16d19a41212070d2d1d48a63c34161 + md5: a587892d3c13b6621a6091be690dbca2 + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: ISC + purls: [] + size: 205978 + timestamp: 1716828628198 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.20-h68df207_0.conda + sha256: 448df5ea3c5cf1af785aad46858d7a5be0522f4234a4dc9bb764f4d11ff3b981 + md5: 2e4a8f23bebdcb85ca8e5a0fbe75666a + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: ISC + purls: [] + size: 177394 + timestamp: 1716828514515 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda + sha256: fade8223e1e1004367d7101dd17261003b60aa576df6d7802191f8972f7470b1 + md5: a7ce36e284c5faaf93c220dfc39e3abd + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: ISC + purls: [] + size: 164972 + timestamp: 1716828607917 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.49.1-hee588c1_1.conda + sha256: 7a09eef804ef7cf4d88215c2297eabb72af8ad0bd5b012060111c289f14bbe7d + md5: 73cea06049cc4174578b432320a003b8 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux + license: Unlicense + purls: [] + size: 915956 + timestamp: 1739953155793 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.49.1-h5eb1b54_1.conda + sha256: 920fb3b7d3b873babf79a3e392cc82d43b8bd02a573ccaff34219efb5cf7b51e + md5: 150d64241fa27d9d35a7f421ca968a6c + depends: + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + arch: aarch64 + platform: linux + license: Unlicense + purls: [] + size: 915118 + timestamp: 1739953101699 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.1-h3f77e49_1.conda + sha256: 266639fb10ca92287961574b0b4d6031fa40dd9d723d64a0fcb08513a24dab03 + md5: c83357a21092bd952933c36c5cb4f4d6 + depends: + - __osx >=11.0 + - libzlib >=1.3.1,<2.0a0 + arch: arm64 + platform: osx + license: Unlicense + purls: [] + size: 898767 + timestamp: 1739953312379 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hf672d98_0.conda + sha256: 0407ac9fda2bb67e11e357066eff144c845801d00b5f664efbc48813af1e7bb9 + md5: be2de152d8073ef1c01b7728475f2fe7 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 304278 + timestamp: 1732349402869 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libssh2-1.11.1-ha41c0db_0.conda + sha256: 40f2af5357457546bd11cd64a3b9043d83865180f65ce602515c35f353be35c7 + md5: aeffe03c0e598f015aab08dbb04f6ee4 + depends: + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 311577 + timestamp: 1732349396421 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.1-h9cc3647_0.conda + sha256: f7047c6ed44bcaeb04432e8c74da87591940d091b0a3940c0d884b7faa8062e9 + md5: ddc7194676c285513706e5fc64f214d7 + depends: + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 279028 + timestamp: 1732349599461 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-h8f9b012_2.conda + sha256: 8f5bd92e4a24e1d35ba015c5252e8f818898478cb3bc50bd8b12ab54707dc4da + md5: a78c856b6dc6bf4ea8daeb9beaaa3fb0 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc 14.2.0 h767d61c_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 3884556 + timestamp: 1740240685253 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_2.conda + sha256: c30a74bc996013907f6d9f344da007c26d98ef9a0831151cd50aece3125c45d5 + md5: eadee2cda99697e29411c1013c187b92 + depends: + - libgcc 14.2.0 he277a41_2 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 3810779 + timestamp: 1740241094774 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_2.conda + sha256: e86f38b007cf97cc2c67cd519f2de12a313c4ee3f5ef11652ad08932a5e34189 + md5: c75da67f045c2627f59e6fcb5f4e3a9b + depends: + - libstdcxx 14.2.0 h8f9b012_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 53830 + timestamp: 1740240722530 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_2.conda + sha256: 0107886ead6f255956d8e520f8dff260f9ab3d0d51512f18c52710c406e4b2df + md5: c934c1fddad582fcc385b608eb06a70c + depends: + - libstdcxx 14.2.0 h3f4de04_2 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 53715 + timestamp: 1740241126343 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libthrift-0.21.0-h0e7cc3e_0.conda + sha256: ebb395232973c18745b86c9a399a4725b2c39293c9a91b8e59251be013db42f0 + md5: dcb95c0a98ba9ff737f7ae482aef7833 + depends: + - __glibc >=2.17,<3.0.a0 + - libevent >=2.1.12,<2.1.13.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.3.2,<4.0a0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 425773 + timestamp: 1727205853307 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libthrift-0.21.0-h154c74f_0.conda + sha256: f04ab1417aca1687edff9c30d8423ace285eb8c053dc16d595c6e47cfeefb274 + md5: c28792bf37f4ecdce8e3cb9e40750650 + depends: + - libevent >=2.1.12,<2.1.13.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.3.2,<4.0a0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 417329 + timestamp: 1727205944238 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libthrift-0.21.0-h64651cc_0.conda + sha256: 7a6c7d5f58cbbc2ccd6493b4b821639fdb0701b9b04c737a949e8cb6adf1c9ad + md5: 7ce2bd2f650f8c31ad7ba4c7bfea61b7 + depends: + - __osx >=11.0 + - libcxx >=17 + - libevent >=2.1.12,<2.1.13.0a0 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.3.2,<4.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 324342 + timestamp: 1727206096912 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hd9ff511_3.conda + sha256: b224e16b88d76ea95e4af56e2bc638c603bd26a770b98d117d04541d3aafa002 + md5: 0ea6510969e1296cc19966fad481f6de + depends: + - __glibc >=2.17,<3.0.a0 + - lerc >=4.0.0,<5.0a0 + - libdeflate >=1.23,<1.24.0a0 + - libgcc >=13 + - libjpeg-turbo >=3.0.0,<4.0a0 + - liblzma >=5.6.3,<6.0a0 + - libstdcxx >=13 + - libwebp-base >=1.4.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - zstd >=1.5.6,<1.6.0a0 + arch: x86_64 + platform: linux + license: HPND + purls: [] + size: 428173 + timestamp: 1734398813264 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.0-h88f7998_3.conda + sha256: 5888bd66ba7606ae8596856c7dac800940ecad0aed77d6aa37db69d434c81cf0 + md5: 36a0ea4a173338c8725dc0807e99cf22 + depends: + - lerc >=4.0.0,<5.0a0 + - libdeflate >=1.23,<1.24.0a0 + - libgcc >=13 + - libjpeg-turbo >=3.0.0,<4.0a0 + - liblzma >=5.6.3,<6.0a0 + - libstdcxx >=13 + - libwebp-base >=1.4.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - zstd >=1.5.6,<1.6.0a0 + arch: aarch64 + platform: linux + license: HPND + purls: [] + size: 464699 + timestamp: 1734398752249 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-h551f018_3.conda + sha256: 91417846157e04992801438a496b151df89604b2e7c6775d6f701fcd0cbed5ae + md5: a5d084a957563e614ec0c0196d890654 + depends: + - __osx >=11.0 + - lerc >=4.0.0,<5.0a0 + - libcxx >=18 + - libdeflate >=1.23,<1.24.0a0 + - libjpeg-turbo >=3.0.0,<4.0a0 + - liblzma >=5.6.3,<6.0a0 + - libwebp-base >=1.4.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - zstd >=1.5.6,<1.6.0a0 + arch: arm64 + platform: osx + license: HPND + purls: [] + size: 370600 + timestamp: 1734398863052 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.10.0-h4c51ac1_0.conda + sha256: 8e41563ee963bf8ded06da45f4e70bf42f913cb3c2e79364eb3218deffa3cd74 + md5: aeccfff2806ae38430638ffbb4be9610 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 82745 + timestamp: 1737244366901 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.10.0-ha346350_0.conda + sha256: 9c333e07b76ae1ea2c882db764be52dc82f632be66d993a50b35ca9c5475074a + md5: c5166bcfb8348e8fc31ee16ec3981a5e + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 82679 + timestamp: 1737329054400 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.10.0-hda25de7_0.conda + sha256: aca3ef31d3dff5cefd3790742a5ee6548f1cf0201d0e8cee08b01da503484eb6 + md5: 5f741aed1d8d393586a5fdcaaa87f45c + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 83628 + timestamp: 1737244450097 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda + sha256: 787eb542f055a2b3de553614b25f09eefb0a0931b0c87dbcce6efdfd92f04f18 + md5: 40b61aab5c7ba9ff276c41cfffe6b80b + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 33601 + timestamp: 1680112270483 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda + sha256: 616277b0c5f7616c2cdf36f6c316ea3f9aa5bb35f2d4476a349ab58b9b91675f + md5: 000e30b09db0b7c775b21695dff30969 + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 35720 + timestamp: 1680113474501 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.5.0-h851e524_0.conda + sha256: c45283fd3e90df5f0bd3dbcd31f59cdd2b001d424cf30a07223655413b158eaf + md5: 63f790534398730f59e1b899c3644d4a + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + constrains: + - libwebp 1.5.0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 429973 + timestamp: 1734777489810 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libwebp-base-1.5.0-h0886dbf_0.conda + sha256: b3d881a0ae08bb07fff7fa8ead506c8d2e0388733182fe4f216f3ec5d61ffcf0 + md5: 95ef4a689b8cc1b7e18b53784d88f96b + depends: + - libgcc >=13 + constrains: + - libwebp 1.5.0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 362623 + timestamp: 1734779054659 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.5.0-h2471fea_0.conda + sha256: f8bdb876b4bc8cb5df47c28af29188de8911c3fea4b799a33743500149de3f4a + md5: 569466afeb84f90d5bb88c11cc23d746 + depends: + - __osx >=11.0 + constrains: + - libwebp 1.5.0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 290013 + timestamp: 1734777593617 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda + sha256: 666c0c431b23c6cec6e492840b176dde533d48b7e6fb8883f5071223433776aa + md5: 92ed62436b625154323d40d5f2f11dd7 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - pthread-stubs + - xorg-libxau >=1.0.11,<2.0a0 + - xorg-libxdmcp + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 395888 + timestamp: 1727278577118 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcb-1.17.0-h262b8f6_0.conda + sha256: 461cab3d5650ac6db73a367de5c8eca50363966e862dcf60181d693236b1ae7b + md5: cd14ee5cca2464a425b1dbfc24d90db2 + depends: + - libgcc >=13 + - pthread-stubs + - xorg-libxau >=1.0.11,<2.0a0 + - xorg-libxdmcp + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 397493 + timestamp: 1727280745441 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxcb-1.17.0-hdb1d25a_0.conda + sha256: bd3816218924b1e43b275863e21a3e13a5db4a6da74cca8e60bc3c213eb62f71 + md5: af523aae2eca6dfa1c8eec693f5b9a79 + depends: + - __osx >=11.0 + - pthread-stubs + - xorg-libxau >=1.0.11,<2.0a0 + - xorg-libxdmcp + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 323658 + timestamp: 1727278733917 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda + sha256: 6ae68e0b86423ef188196fff6207ed0c8195dd84273cb5623b85aa08033a410c + md5: 5aa797f8787fe7a17d1b0821485b5adc + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: LGPL-2.1-or-later + purls: [] + size: 100393 + timestamp: 1702724383534 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda + sha256: 6b46c397644091b8a26a3048636d10b989b1bf266d4be5e9474bf763f828f41f + md5: b4df5d7d4b63579d081fd3a4cf99740e + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: LGPL-2.1-or-later + purls: [] + size: 114269 + timestamp: 1702724369203 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.6-h8d12d68_0.conda + sha256: db8af71ea9c0ae95b7cb4a0f59319522ed2243942437a1200ceb391493018d85 + md5: 328382c0e0ca648e5c189d5ec336c604 + depends: + - __glibc >=2.17,<3.0.a0 + - icu >=75.1,<76.0a0 + - libgcc >=13 + - libiconv >=1.18,<2.0a0 + - liblzma >=5.6.4,<6.0a0 + - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 690296 + timestamp: 1739952967309 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.6-h2e0c361_0.conda + sha256: bb075df08b04b1b47e75a250f2ebbb2401c3367057d64b8d44ef1ef3f44480e1 + md5: a159a92f890f862408c951c08f13415f + depends: + - icu >=75.1,<76.0a0 + - libgcc >=13 + - libiconv >=1.18,<2.0a0 + - liblzma >=5.6.4,<6.0a0 + - libzlib >=1.3.1,<2.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 733707 + timestamp: 1739953178456 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.6-hce475f1_0.conda + sha256: 9ce429417545f7616ed528061305b3a1fc3732ff3bb24bd91cba260550879693 + md5: 8654012bd68aa48b94eee6c9faab85b6 + depends: + - __osx >=11.0 + - libiconv >=1.18,<2.0a0 + - liblzma >=5.6.4,<6.0a0 + - libzlib >=1.3.1,<2.0a0 + constrains: + - icu <0.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 582490 + timestamp: 1739953065675 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda + sha256: d4bfe88d7cb447768e31650f06257995601f89076080e76df55e3112d4e47dc4 + md5: edb0dca6bc32e4f4789199455a1dbeb8 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + constrains: + - zlib 1.3.1 *_2 + arch: x86_64 + platform: linux + license: Zlib + license_family: Other + purls: [] + size: 60963 + timestamp: 1727963148474 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda + sha256: 5a2c1eeef69342e88a98d1d95bff1603727ab1ff4ee0e421522acd8813439b84 + md5: 08aad7cbe9f5a6b460d0976076b6ae64 + depends: + - libgcc >=13 + constrains: + - zlib 1.3.1 *_2 + arch: aarch64 + platform: linux + license: Zlib + license_family: Other + purls: [] + size: 66657 + timestamp: 1727963199518 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda + sha256: ce34669eadaba351cd54910743e6a2261b67009624dbc7daeeafdef93616711b + md5: 369964e85dc26bfe78f41399b366c435 + depends: + - __osx >=11.0 + constrains: + - zlib 1.3.1 *_2 + arch: arm64 + platform: osx + license: Zlib + license_family: Other + purls: [] + size: 46438 + timestamp: 1727963202283 +- conda: https://conda.anaconda.org/conda-forge/linux-64/llvm-openmp-15.0.7-h0cdce71_0.conda + sha256: 7c67d383a8b1f3e7bf9e046e785325c481f6868194edcfb9d78d261da4ad65d4 + md5: 589c9a3575a050b583241c3d688ad9aa + depends: + - libzlib >=1.2.13,<2.0.0a0 + constrains: + - openmp 15.0.7|15.0.7.* + arch: x86_64 + platform: linux + license: Apache-2.0 WITH LLVM-exception + license_family: APACHE + purls: [] + size: 3268766 + timestamp: 1673584331056 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-15.0.7-h7cfbb63_0.conda + sha256: 6cc4cf021fc1f06df3b97598bf9583fe7a04fad6a4eef9882558f7932f362bc0 + md5: 358164e15a9320f11b84a53fb8d8e446 + constrains: + - openmp 15.0.7|15.0.7.* + arch: arm64 + platform: osx + license: Apache-2.0 WITH LLVM-exception + license_family: APACHE + purls: [] + size: 263326 + timestamp: 1673584823527 +- conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.10.0-h5888daf_1.conda + sha256: 47326f811392a5fd3055f0f773036c392d26fdb32e4d8e7a8197eed951489346 + md5: 9de5350a85c4a20c685259b889aa6393 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 167055 + timestamp: 1733741040117 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.10.0-h5ad3122_1.conda + sha256: 67e55058d275beea76c1882399640c37b5be8be4eb39354c94b610928e9a0573 + md5: 6654e411da94011e8fbe004eacb8fe11 + depends: + - libgcc >=13 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 184953 + timestamp: 1733740984533 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.10.0-h286801f_1.conda + sha256: 94d3e2a485dab8bdfdd4837880bde3dd0d701e2b97d6134b8806b7c8e69c8652 + md5: 01511afc6cc1909c5303cf31be17b44f + depends: + - __osx >=11.0 + - libcxx >=18 + arch: arm64 + platform: osx + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 148824 + timestamp: 1733741047892 +- pypi: https://download.pytorch.org/whl/MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl#sha256=ac07bad82163452a6884fe8fa0963fb98c2346ba78d779ec06bd7a6262132aee + name: markupsafe + version: 2.1.5 + sha256: ac07bad82163452a6884fe8fa0963fb98c2346ba78d779ec06bd7a6262132aee + requires_python: '>=3.7' +- conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_1.conda + sha256: 4a6bf68d2a2b669fecc9a4a009abd1cf8e72c2289522ff00d81b5a6e51ae78f5 + md5: eb227c3e0bf58f5bd69c0532b157975b + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - jinja2 >=3.0.0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/markupsafe?source=hash-mapping + size: 24604 + timestamp: 1733219911494 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312h998013c_1.conda + sha256: 4aa997b244014d3707eeef54ab0ee497d12c0d0d184018960cce096169758283 + md5: 46e547061080fddf9cf95a0327e8aba6 + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - jinja2 >=3.0.0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/markupsafe?source=hash-mapping + size: 24048 + timestamp: 1733219945697 +- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022718-release.conda + noarch: python + sha256: f3dcb14fed5470c0fc521542cbd2f1c56ca7e46d560f46176b8f926198cb3cbd + md5: 01fe5e0cf46c84a6345e323ad1316764 + depends: + - max-core ==25.2.0.dev2025022718 release + - max-python ==25.2.0.dev2025022718 release + - mojo-jupyter ==25.2.0.dev2025022718 release + - mblack ==25.2.0.dev2025022718 release + license: LicenseRef-Modular-Proprietary + size: 9905 + timestamp: 1740680254354 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022718-release.conda + sha256: 847d5767109a305d7bcad4ac29248a74a384034692934a0c54b00a590c27094a + md5: fc5a9ae36c7805979bd58ca55a25066f + depends: + - mblack ==25.2.0.dev2025022718 release + license: LicenseRef-Modular-Proprietary + size: 249811868 + timestamp: 1740680254354 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022718-release.conda + sha256: 250c35ecccd302e6c7de836ac200a5ece92e74508c2590c585d8803d488fd650 + md5: d88728b468c85902512a0f9b99251035 + depends: + - mblack ==25.2.0.dev2025022718 release + license: LicenseRef-Modular-Proprietary + size: 252108573 + timestamp: 1740680207793 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022718-release.conda + sha256: fb28d9e61aa507ea84b470082d3dc96844a24fe672d4e4c57e832655c5d0a202 + md5: dd8734453f7276a258f3351cc5c506c3 + depends: + - mblack ==25.2.0.dev2025022718 release + license: LicenseRef-Modular-Proprietary + size: 217273450 + timestamp: 1740681819160 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022718-release.conda + noarch: python + sha256: 831b4d62f66f0083321121c6ba25dedab3ee41d5e9f19d9752969592214af398 + md5: f828ace91aa057e4774e84ad459adccf + depends: + - max-core ==25.2.0.dev2025022718 release + - click >=8.0.0 + - numpy >=1.18,<2.0 + - sentencepiece >=0.2.0 + - tqdm >=4.67.1 + constrains: + - aiohttp >=3.11.12 + - fastapi >=0.114.2 + - gguf >=0.14.0 + - hf-transfer >=0.1.9 + - httpx >=0.28.1 + - huggingface_hub >=0.24.0 + - nvitop >=1.4.1 + - opentelemetry-api >=1.29.0 + - opentelemetry-exporter-otlp-proto-http >=1.27.0 + - opentelemetry-exporter-prometheus <1.0.0 + - opentelemetry-sdk >=1.29.0,<2.0 + - pillow >=10.3.0 + - prometheus_client >=0.21.0 + - prometheus-async >=22.2.0 + - psutil >=6.1.1 + - pydantic + - pydantic-settings >=2.7.1 + - pyinstrument >=5.0.1 + - python-json-logger >=2.0.7 + - requests >=2.32.3 + - rich >=13.9.4 + - safetensors >=0.5.2 + - sentinel >=0.3.0 + - sse-starlette >=2.1.2 + - tokenizers >=0.19.0 + - pytorch >=2.2.2,<=2.5.1 + - transformers >=4.40.1 + - uvicorn >=0.34.0 + - uvloop >=0.21.0 + - xgrammar ==0.1.11 + license: LicenseRef-Modular-Proprietary + size: 123584411 + timestamp: 1740680254354 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022718-release.conda + noarch: python + sha256: b9e5755b7bf6314a37a90ef0250c93f5e7c693954d7a6389a97ab9ef06e23cc3 + md5: bfd2e752d0fc9516b78a17169ce9cc78 + depends: + - max-core ==25.2.0.dev2025022718 release + - click >=8.0.0 + - numpy >=1.18,<2.0 + - sentencepiece >=0.2.0 + - tqdm >=4.67.1 + constrains: + - aiohttp >=3.11.12 + - fastapi >=0.114.2 + - gguf >=0.14.0 + - hf-transfer >=0.1.9 + - httpx >=0.28.1 + - huggingface_hub >=0.24.0 + - nvitop >=1.4.1 + - opentelemetry-api >=1.29.0 + - opentelemetry-exporter-otlp-proto-http >=1.27.0 + - opentelemetry-exporter-prometheus <1.0.0 + - opentelemetry-sdk >=1.29.0,<2.0 + - pillow >=10.3.0 + - prometheus_client >=0.21.0 + - prometheus-async >=22.2.0 + - psutil >=6.1.1 + - pydantic + - pydantic-settings >=2.7.1 + - pyinstrument >=5.0.1 + - python-json-logger >=2.0.7 + - requests >=2.32.3 + - rich >=13.9.4 + - safetensors >=0.5.2 + - sentinel >=0.3.0 + - sse-starlette >=2.1.2 + - tokenizers >=0.19.0 + - pytorch >=2.2.2,<=2.5.1 + - transformers >=4.40.1 + - uvicorn >=0.34.0 + - uvloop >=0.21.0 + - xgrammar ==0.1.11 + license: LicenseRef-Modular-Proprietary + size: 126004454 + timestamp: 1740680207793 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022718-release.conda + noarch: python + sha256: 7da9f4655082bb64c2b0cc996ffefa0ce5c49744854ed77a9b0d000e27cf5a55 + md5: b16d498a148aa61dca2a6bfec5cb8e46 + depends: + - max-core ==25.2.0.dev2025022718 release + - click >=8.0.0 + - numpy >=1.18,<2.0 + - sentencepiece >=0.2.0 + - tqdm >=4.67.1 + constrains: + - aiohttp >=3.11.12 + - fastapi >=0.114.2 + - gguf >=0.14.0 + - hf-transfer >=0.1.9 + - httpx >=0.28.1 + - huggingface_hub >=0.24.0 + - nvitop >=1.4.1 + - opentelemetry-api >=1.29.0 + - opentelemetry-exporter-otlp-proto-http >=1.27.0 + - opentelemetry-exporter-prometheus <1.0.0 + - opentelemetry-sdk >=1.29.0,<2.0 + - pillow >=10.3.0 + - prometheus_client >=0.21.0 + - prometheus-async >=22.2.0 + - psutil >=6.1.1 + - pydantic + - pydantic-settings >=2.7.1 + - pyinstrument >=5.0.1 + - python-json-logger >=2.0.7 + - requests >=2.32.3 + - rich >=13.9.4 + - safetensors >=0.5.2 + - sentinel >=0.3.0 + - sse-starlette >=2.1.2 + - tokenizers >=0.19.0 + - pytorch >=2.2.2,<=2.5.1 + - transformers >=4.40.1 + - uvicorn >=0.34.0 + - uvloop >=0.21.0 + - xgrammar ==0.1.11 + license: LicenseRef-Modular-Proprietary + size: 112658409 + timestamp: 1740681819160 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022718-release.conda + noarch: python + sha256: ff042a8abfed0e2e36b207e3d4f59a2b4577dea7f099b08d1aaef128ab796f09 + md5: 719ca7123d53415adcdd7f0cb8396c51 + depends: + - python >=3.9,<3.13 + - click >=8.0.0 + - mypy_extensions >=0.4.3 + - packaging >=22.0 + - pathspec >=0.9.0 + - platformdirs >=2 + - typing_extensions >=v4.12.2 + - python + license: MIT + size: 130852 + timestamp: 1740680254353 +- conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-2022.1.0-h84fe81f_915.tar.bz2 + sha256: 767318c4f2057822a7ebc238d6065ce12c6ae60df4ab892758adb79b1057ce02 + md5: b9c8f925797a93dbff45e1626b025a6b + depends: + - _openmp_mutex * *_llvm + - _openmp_mutex >=4.5 + - llvm-openmp >=14.0.3 + - tbb 2021.* + arch: x86_64 + platform: linux + license: LicenseRef-ProprietaryIntel + license_family: Proprietary + purls: [] + size: 209326825 + timestamp: 1652946040193 +- conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-devel-2022.1.0-ha770c72_916.tar.bz2 + sha256: 93d957608b17ada3039ff0acad2b8596451caa6829b3502fe87375e639ffc34e + md5: 69ba49e445f87aea2cba343a71a35ca2 + depends: + - mkl 2022.1.0 h84fe81f_915 + - mkl-include 2022.1.0 h84fe81f_915 + arch: x86_64 + platform: linux + license: LicenseRef-ProprietaryIntel + license_family: Proprietary + purls: [] + size: 25614 + timestamp: 1652946458276 +- conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-include-2022.1.0-h84fe81f_915.tar.bz2 + sha256: 63415fe64e99f8323d0191d45ea5b1ec3973317e728b9071267ffb7ff3b38364 + md5: 2dcd1acca05c11410d4494d7fc7dfa2a + arch: x86_64 + platform: linux + license: LicenseRef-ProprietaryIntel + license_family: Proprietary + purls: [] + size: 762563 + timestamp: 1652946186347 +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022718-release.conda + noarch: python + sha256: 19c33e23b27e240fee0b2a1d56921802ac88558dc2da417837cd590175561e16 + md5: 6b8d00b15817db11e026f824f7f0ba14 + depends: + - max-core ==25.2.0.dev2025022718 release + - python >=3.9,<3.13 + - jupyter_client >=8.6.2,<8.7 + - python + license: LicenseRef-Modular-Proprietary + size: 22981 + timestamp: 1740680254354 +- conda: https://conda.anaconda.org/conda-forge/linux-64/mpc-1.3.1-h24ddda3_1.conda + sha256: 1bf794ddf2c8b3a3e14ae182577c624fa92dea975537accff4bc7e5fea085212 + md5: aa14b9a5196a6d8dd364164b7ce56acf + depends: + - __glibc >=2.17,<3.0.a0 + - gmp >=6.3.0,<7.0a0 + - libgcc >=13 + - mpfr >=4.2.1,<5.0a0 + arch: x86_64 + platform: linux + license: LGPL-3.0-or-later + license_family: LGPL + purls: [] + size: 116777 + timestamp: 1725629179524 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/mpc-1.3.1-h8f1351a_1.conda + sha256: 2700899ad03302a1751dbf2bca135407e470dd83ac897ab91dd8675d4300f158 + md5: a5635df796b71f6ca400fc7026f50701 + depends: + - __osx >=11.0 + - gmp >=6.3.0,<7.0a0 + - mpfr >=4.2.1,<5.0a0 + arch: arm64 + platform: osx + license: LGPL-3.0-or-later + license_family: LGPL + purls: [] + size: 104766 + timestamp: 1725629165420 +- conda: https://conda.anaconda.org/conda-forge/linux-64/mpfr-4.2.1-h90cbb55_3.conda + sha256: f25d2474dd557ca66c6231c8f5ace5af312efde1ba8290a6ea5e1732a4e669c0 + md5: 2eeb50cab6652538eee8fc0bc3340c81 + depends: + - __glibc >=2.17,<3.0.a0 + - gmp >=6.3.0,<7.0a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: LGPL-3.0-only + license_family: LGPL + purls: [] + size: 634751 + timestamp: 1725746740014 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/mpfr-4.2.1-hb693164_3.conda + sha256: 4463e4e2aba7668e37a1b8532859191b4477a6f3602a5d6b4d64ad4c4baaeac5 + md5: 4e4ea852d54cc2b869842de5044662fb + depends: + - __osx >=11.0 + - gmp >=6.3.0,<7.0a0 + arch: arm64 + platform: osx + license: LGPL-3.0-only + license_family: LGPL + purls: [] + size: 345517 + timestamp: 1725746730583 +- pypi: https://download.pytorch.org/whl/mpmath-1.3.0-py3-none-any.whl#sha256=a0b2b9fe80bbcd81a6647ff13108738cfb482d481d826cc0e02f5b35e5c88d2c + name: mpmath + version: 1.3.0 + sha256: a0b2b9fe80bbcd81a6647ff13108738cfb482d481d826cc0e02f5b35e5c88d2c + requires_dist: + - pytest>=4.6 ; extra == 'develop' + - pycodestyle ; extra == 'develop' + - pytest-cov ; extra == 'develop' + - codecov ; extra == 'develop' + - wheel ; extra == 'develop' + - sphinx ; extra == 'docs' + - gmpy2>=2.1.0a4 ; platform_python_implementation != 'PyPy' and extra == 'gmpy' + - pytest>=4.6 ; extra == 'tests' +- conda: https://conda.anaconda.org/conda-forge/noarch/mpmath-1.3.0-pyhd8ed1ab_1.conda + sha256: 7d7aa3fcd6f42b76bd711182f3776a02bef09a68c5f117d66b712a6d81368692 + md5: 3585aa87c43ab15b167b574cd73b057b + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/mpmath?source=hash-mapping + size: 439705 + timestamp: 1733302781386 +- conda: 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 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/multidict?source=hash-mapping + size: 61507 + timestamp: 1733913288935 +- conda: 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 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/multidict?source=hash-mapping + size: 63077 + timestamp: 1733913233032 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/multidict-6.1.0-py312hdb8e49c_1.conda + sha256: 482fd09fb798090dc8cce2285fa69f43b1459099122eac2fb112d9b922b9f916 + md5: 0048335516fed938e4dd2c457b4c5b9b + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/multidict?source=hash-mapping + size: 55968 + timestamp: 1729065664275 +- conda: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.15-py312h98912ed_1.conda + sha256: bb612a921fafda6375a2204ffebd8811db8dd3b8f25ac9886cc9bcbff7e3664e + md5: 5a64b9f44790d9a187a85366dd0ffa8d + depends: + - dill >=0.3.6 + - libgcc-ng >=12 + - python >=3.12.0rc3,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/multiprocess?source=hash-mapping + size: 335666 + timestamp: 1695459025249 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.16-py312hb2c0f52_1.conda + sha256: f93627c78d1f86f593350196699b462c334542477aa55fe0212edf45392c9ab4 + md5: 642c63b684ce5614f157572b04816983 + depends: + - dill >=0.3.8 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/multiprocess?source=hash-mapping + size: 341428 + timestamp: 1724954862644 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/multiprocess-0.70.15-py312h02f2b3b_1.conda + sha256: 8041371e3ec3fbc2ca13c71b0180672896e6382e62892d9f6b11a4c5dd675951 + md5: 910ef2223c71902175418d9163152788 + depends: + - dill >=0.3.6 + - python >=3.12.0rc3,<3.13.0a0 + - python >=3.12.0rc3,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/multiprocess?source=hash-mapping + size: 335147 + timestamp: 1695459275360 +- conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda + sha256: 1895f47b7d68581a6facde5cb13ab8c2764c2e53a76bd746f8f98910dc4e08fe + md5: 29097e7ea634a45cc5386b95cac6568f + depends: + - python >=3.9 + license: MIT + license_family: MIT + purls: + - pkg:pypi/mypy-extensions?source=hash-mapping + size: 10854 + timestamp: 1733230986902 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda + sha256: 3fde293232fa3fca98635e1167de6b7c7fda83caf24b9d6c91ec9eefb4f4d586 + md5: 47e340acb35de30501a76c7c799c41d7 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: X11 AND BSD-3-Clause + purls: [] + size: 891641 + timestamp: 1738195959188 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-ha32ae93_3.conda + sha256: 91cfb655a68b0353b2833521dc919188db3d8a7f4c64bea2c6a7557b24747468 + md5: 182afabe009dc78d8b73100255ee6868 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: X11 AND BSD-3-Clause + purls: [] + size: 926034 + timestamp: 1738196018799 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda + sha256: 2827ada40e8d9ca69a153a45f7fd14f32b2ead7045d3bbb5d10964898fe65733 + md5: 068d497125e4bf8a66bf707254fff5ae + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: X11 AND BSD-3-Clause + purls: [] + size: 797030 + timestamp: 1738196177597 +- pypi: https://download.pytorch.org/whl/networkx-3.3-py3-none-any.whl#sha256=28575580c6ebdaf4505b22c6256a2b9de86b316dc63ba9e93abde3d78dfdbcf2 + name: networkx + version: '3.3' + sha256: 28575580c6ebdaf4505b22c6256a2b9de86b316dc63ba9e93abde3d78dfdbcf2 + requires_dist: + - numpy>=1.23 ; extra == 'default' + - scipy>=1.9,!=1.11.0,!=1.11.1 ; extra == 'default' + - matplotlib>=3.6 ; extra == 'default' + - pandas>=1.4 ; extra == 'default' + - changelist==0.5 ; extra == 'developer' + - pre-commit>=3.2 ; extra == 'developer' + - mypy>=1.1 ; extra == 'developer' + - rtoml ; extra == 'developer' + - sphinx>=7 ; extra == 'doc' + - pydata-sphinx-theme>=0.14 ; extra == 'doc' + - sphinx-gallery>=0.14 ; extra == 'doc' + - numpydoc>=1.7 ; extra == 'doc' + - pillow>=9.4 ; extra == 'doc' + - texext>=0.6.7 ; extra == 'doc' + - myst-nb>=1.0 ; extra == 'doc' + - lxml>=4.6 ; extra == 'extra' + - pygraphviz>=1.12 ; extra == 'extra' + - pydot>=2.0 ; extra == 'extra' + - sympy>=1.10 ; extra == 'extra' + - pytest>=7.2 ; extra == 'test' + - pytest-cov>=4.0 ; extra == 'test' + requires_python: '>=3.10' +- conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda + sha256: 39625cd0c9747fa5c46a9a90683b8997d8b9649881b3dc88336b13b7bdd60117 + md5: fd40bf7f7f4bc4b647dc8512053d9873 + depends: + - python >=3.10 + - python + constrains: + - numpy >=1.24 + - scipy >=1.10,!=1.11.0,!=1.11.1 + - matplotlib >=3.7 + - pandas >=2.0 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 1265008 + timestamp: 1731521053408 +- conda: https://conda.anaconda.org/conda-forge/linux-64/nlohmann_json-3.11.3-he02047a_1.conda + sha256: ce4bcced4f8eea71b7cac8bc3daac097abf7a5792f278cd811dedada199500c1 + md5: e46f7ac4917215b49df2ea09a694a3fa + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 122743 + timestamp: 1723652407663 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/nlohmann_json-3.11.3-h0a1ffab_1.conda + sha256: c90b1f11fc337d90a9e4c5aeeacac1418c5ba6a195097086566d38bb2ecf0f24 + md5: f2bd10ff23ab5c87327439c4499b3f3e + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 122755 + timestamp: 1723652622631 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/nlohmann_json-3.11.3-h00cdb27_1.conda + sha256: 3f4e6a4fa074bb297855f8111ab974dab6d9f98b7d4317d4dd46f8687ee2363b + md5: d2dee849c806430eee64d3acc98ce090 + depends: + - __osx >=11.0 + - libcxx >=16 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 123250 + timestamp: 1723652704997 +- conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda + sha256: fe3459c75cf84dcef6ef14efcc4adb0ade66038ddd27cadb894f34f4797687d8 + md5: d8285bea2a350f63fab23bf460221f3f + depends: + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - libgcc-ng >=12 + - liblapack >=3.9.0,<4.0a0 + - libstdcxx-ng >=12 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - numpy-base <0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/numpy?source=hash-mapping + size: 7484186 + timestamp: 1707225809722 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda + sha256: 23767677a7790bee5457d5e75ebd508b9a31c5354216f4310dd1acfca3f7a6f9 + md5: 9cebf5a06cb87d4569cd68df887af476 + depends: + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - libgcc-ng >=12 + - liblapack >=3.9.0,<4.0a0 + - libstdcxx-ng >=12 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - numpy-base <0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/numpy?source=hash-mapping + size: 6614296 + timestamp: 1707225994762 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda + sha256: c8841d6d6f61fd70ca80682efbab6bdb8606dc77c68d8acabfbd7c222054f518 + md5: d83fc83d589e2625a3451c9a7e21047c + depends: + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - libcxx >=16 + - liblapack >=3.9.0,<4.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - numpy-base <0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/numpy?source=hash-mapping + size: 6073136 + timestamp: 1707226249608 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ocl-icd-2.3.2-hb9d3cd8_2.conda + sha256: 96ddd13054032fabd54636f634d50bc74d10d8578bc946405c429b2d895db6f2 + md5: 2e8d2b469559d6b2cb6fd4b34f9c8d7f + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - opencl-headers >=2024.10.24 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 94934 + timestamp: 1732915114536 +- conda: https://conda.anaconda.org/conda-forge/linux-64/opencl-headers-2024.10.24-h5888daf_0.conda + sha256: 7e1d3ad55d4ad3ddf826e205d4603b9ed40c5e655a9dfd66b56f459d7ba14db3 + md5: 3ba02cce423fdac1a8582bd6bb189359 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 54060 + timestamp: 1732912937444 +- conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.3-h5fbd93e_0.conda + sha256: 5bee706ea5ba453ed7fd9da7da8380dd88b865c8d30b5aaec14d2b6dd32dbc39 + md5: 9e5816bc95d285c115a3ebc2f8563564 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libpng >=1.6.44,<1.7.0a0 + - libstdcxx >=13 + - libtiff >=4.7.0,<4.8.0a0 + - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 342988 + timestamp: 1733816638720 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openjpeg-2.5.3-h3f56577_0.conda + sha256: 92d310033e20538e896f4e4b1ea4205eb6604eee7c5c651c4965a0d8d3ca0f1d + md5: 04231368e4af50d11184b50e14250993 + depends: + - libgcc >=13 + - libpng >=1.6.44,<1.7.0a0 + - libstdcxx >=13 + - libtiff >=4.7.0,<4.8.0a0 + - libzlib >=1.3.1,<2.0a0 + arch: aarch64 + platform: linux + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 377796 + timestamp: 1733816683252 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/openjpeg-2.5.3-h8a3d83b_0.conda + sha256: 1d59bc72ca7faac06d349c1a280f5cfb8a57ee5896f1e24225a997189d7418c7 + md5: 4b71d78648dbcf68ce8bf22bb07ff838 + depends: + - __osx >=11.0 + - libcxx >=18 + - libpng >=1.6.44,<1.7.0a0 + - libtiff >=4.7.0,<4.8.0a0 + - libzlib >=1.3.1,<2.0a0 + arch: arm64 + platform: osx + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 319362 + timestamp: 1733816781741 +- conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.1-h7b32b05_0.conda + sha256: cbf62df3c79a5c2d113247ddea5658e9ff3697b6e741c210656e239ecaf1768f + md5: 41adf927e746dc75ecf0ef841c454e48 + depends: + - __glibc >=2.17,<3.0.a0 + - ca-certificates + - libgcc >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 2939306 + timestamp: 1739301879343 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.1-hd08dc88_0.conda + sha256: d80b52b56b2206053968270069616868cbeb289ef855cf1584b1bb0fef61b37c + md5: 09036190605c57eaecf01218e0e9542d + depends: + - ca-certificates + - libgcc >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 3476570 + timestamp: 1739303256089 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.1-h81ee809_0.conda + sha256: 4f8e2389e1b711b44182a075516d02c80fa7a3a7e25a71ff1b5ace9eae57a17a + md5: 75f9f0c7b1740017e2db83a53ab9a28e + depends: + - __osx >=11.0 + - ca-certificates + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 2934522 + timestamp: 1739301896733 +- conda: https://conda.anaconda.org/conda-forge/linux-64/orc-2.0.3-h12ee42a_2.conda + sha256: dff5cc8023905782c86b3459055f26d4b97890e403b0698477c9fed15d8669cc + md5: 4f6f9f3f80354ad185e276c120eac3f0 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - lz4-c >=1.10.0,<1.11.0a0 + - snappy >=1.2.1,<1.3.0a0 + - tzdata + - zstd >=1.5.6,<1.6.0a0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 1188881 + timestamp: 1735630209320 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/orc-2.0.3-hdd485aa_2.conda + sha256: b6c67542352a86cdf143c3066d5cda855b74454a156eedcd8958b494c6a32a83 + md5: d19f01b42e5d6a2908b65df435aff42f + depends: + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - lz4-c >=1.10.0,<1.11.0a0 + - snappy >=1.2.1,<1.3.0a0 + - tzdata + - zstd >=1.5.6,<1.6.0a0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 1167714 + timestamp: 1735630248837 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/orc-2.0.3-h0ff2369_2.conda + sha256: cca330695f3bdb8c0e46350c29cd4af3345865544e36f1d7c9ba9190ad22f5f4 + md5: 24b1897c0d24afbb70704ba998793b78 + depends: + - __osx >=11.0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libzlib >=1.3.1,<2.0a0 + - lz4-c >=1.10.0,<1.11.0a0 + - snappy >=1.2.1,<1.3.0a0 + - tzdata + - zstd >=1.5.6,<1.6.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 438520 + timestamp: 1735630624140 +- conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + sha256: da157b19bcd398b9804c5c52fc000fcb8ab0525bdb9c70f95beaa0bb42f85af1 + md5: 3bfed7e6228ebf2f7b9eaa47f1b4e2aa + depends: + - python >=3.8 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/packaging?source=hash-mapping + size: 60164 + timestamp: 1733203368787 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.3-py312hf9745cd_1.conda + sha256: ad275a83bfebfa8a8fee9b0569aaf6f513ada6a246b2f5d5b85903d8ca61887e + md5: 8bce4f6caaf8c5448c7ac86d87e26b4b + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + - numpy >=1.19,<3 + - numpy >=1.22.4 + - python >=3.12,<3.13.0a0 + - python-dateutil >=2.8.1 + - python-tzdata >=2022a + - python_abi 3.12.* *_cp312 + - pytz >=2020.1,<2024.2 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/pandas?source=hash-mapping + size: 15436913 + timestamp: 1726879054912 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pandas-2.2.3-py312ha2895bd_2.conda + sha256: a34b10077de97eea72c81cb96e3ddc7d48320c0fc7d9b28ba8d9d2bead1d8297 + md5: 39a91ac336d350513de6aad56da5a920 + depends: + - libgcc >=13 + - libstdcxx >=13 + - numpy >=1.19,<3 + - numpy >=1.22.4 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python-dateutil >=2.8.1 + - python-tzdata >=2022a + - python_abi 3.12.* *_cp312 + - pytz >=2020.1,<2024.2 + constrains: + - fsspec >=2022.11.0 + - s3fs >=2022.11.0 + - fastparquet >=2022.12.0 + - pyreadstat >=1.2.0 + - qtpy >=2.3.0 + - scipy >=1.10.0 + - beautifulsoup4 >=4.11.2 + - gcsfs >=2022.11.0 + - numexpr >=2.8.4 + - sqlalchemy >=2.0.0 + - pyxlsb >=1.0.10 + - numba >=0.56.4 + - lxml >=4.9.2 + - matplotlib >=3.6.3 + - psycopg2 >=2.9.6 + - tzdata >=2022.7 + - bottleneck >=1.3.6 + - xarray >=2022.12.0 + - xlsxwriter >=3.0.5 + - zstandard >=0.19.0 + - blosc >=1.21.3 + - pytables >=3.8.0 + - openpyxl >=3.1.0 + - pyqt5 >=5.15.8 + - tabulate >=0.9.0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/pandas?source=hash-mapping + size: 15162992 + timestamp: 1736811533875 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.3-py312hcd31e36_1.conda + sha256: ff0cb54b5d058c7987b4a0984066e893642d1865a7bb695294b6172e2fcdc457 + md5: c68bfa69e6086c381c74e16fd72613a8 + depends: + - __osx >=11.0 + - libcxx >=17 + - numpy >=1.19,<3 + - numpy >=1.22.4 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python-dateutil >=2.8.1 + - python-tzdata >=2022a + - python_abi 3.12.* *_cp312 + - pytz >=2020.1,<2024.2 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/pandas?source=hash-mapping + size: 14470437 + timestamp: 1726878887799 +- conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + sha256: 9f64009cdf5b8e529995f18e03665b03f5d07c0b17445b8badef45bde76249ee + md5: 617f15191456cc6a13db418a275435e5 + depends: + - python >=3.9 + license: MPL-2.0 + license_family: MOZILLA + purls: + - pkg:pypi/pathspec?source=hash-mapping + size: 41075 + timestamp: 1733233471940 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-10.3.0-py312h287a98d_1.conda + sha256: e1a2426f23535fc15e577d799685229a93117b645734e5cca60597bb23cef09e + md5: b1325cda3f250f9f842180607054e6ed + depends: + - freetype >=2.12.1,<3.0a0 + - lcms2 >=2.16,<3.0a0 + - libgcc-ng >=12 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libtiff >=4.6.0,<4.8.0a0 + - libwebp-base >=1.4.0,<2.0a0 + - libxcb >=1.16,<2.0.0a0 + - libzlib >=1.3.1,<2.0a0 + - openjpeg >=2.5.2,<3.0a0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - tk >=8.6.13,<8.7.0a0 + arch: x86_64 + platform: linux + license: HPND + purls: + - pkg:pypi/pillow?source=hash-mapping + size: 41702764 + timestamp: 1718833930009 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pillow-10.3.0-py312hc0f7016_1.conda + sha256: a55086ded25a27a0f6f7ec3bd82dfc6d594e7e119ad6a1e2dd9c449b4931e3e0 + md5: fe73c159f45d5660035ae21a3c799227 + depends: + - freetype >=2.12.1,<3.0a0 + - lcms2 >=2.16,<3.0a0 + - libgcc-ng >=12 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libtiff >=4.6.0,<4.8.0a0 + - libwebp-base >=1.4.0,<2.0a0 + - libxcb >=1.16,<2.0.0a0 + - libzlib >=1.3.1,<2.0a0 + - openjpeg >=2.5.2,<3.0a0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - tk >=8.6.13,<8.7.0a0 + arch: aarch64 + platform: linux + license: HPND + purls: + - pkg:pypi/pillow?source=hash-mapping + size: 42558380 + timestamp: 1718835195362 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-10.3.0-py312h39b1d8d_1.conda + sha256: 37907cdfdb8765d26cb239098fcb053b0b55216945d8bedc9429023ba8db11ab + md5: 4d3a01b6c6df5cc761adb1f3da5b99c2 + depends: + - __osx >=11.0 + - freetype >=2.12.1,<3.0a0 + - lcms2 >=2.16,<3.0a0 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libtiff >=4.6.0,<4.8.0a0 + - libwebp-base >=1.4.0,<2.0a0 + - libxcb >=1.16,<2.0.0a0 + - libzlib >=1.3.1,<2.0a0 + - openjpeg >=2.5.2,<3.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - tk >=8.6.13,<8.7.0a0 + arch: arm64 + platform: osx + license: HPND + purls: + - pkg:pypi/pillow?source=hash-mapping + size: 42691135 + timestamp: 1718834038233 +- conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + sha256: bb50f6499e8bc1d1a26f17716c97984671121608dc0c3ecd34858112bce59a27 + md5: 577852c7e53901ddccc7e6a9959ddebe + depends: + - python >=3.9 + license: MIT + license_family: MIT + purls: + - pkg:pypi/platformdirs?source=hash-mapping + size: 20448 + timestamp: 1733232756001 +- conda: https://conda.anaconda.org/conda-forge/linux-64/prometheus-cpp-1.3.0-ha5d0236_0.conda + sha256: 013669433eb447548f21c3c6b16b2ed64356f726b5f77c1b39d5ba17a8a4b8bc + md5: a83f6a2fdc079e643237887a37460668 + depends: + - __glibc >=2.17,<3.0.a0 + - libcurl >=8.10.1,<9.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - zlib + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 199544 + timestamp: 1730769112346 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/prometheus-cpp-1.3.0-h7938499_0.conda + sha256: 9350d7bbc3982a732ff13a7fd17b585509e3b7d0191ac7b810cc3224868e3648 + md5: 10f4301290e51c49979ff98d1bdf2556 + depends: + - libcurl >=8.10.1,<9.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - zlib + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 211335 + timestamp: 1730769181127 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/prometheus-cpp-1.3.0-h0967b3e_0.conda + sha256: 851a77ae1a8e90db9b9f3c4466abea7afb52713c3d98ceb0d37ba6ff27df2eff + md5: 7172339b49c94275ba42fec3eaeda34f + depends: + - __osx >=11.0 + - libcurl >=8.10.1,<9.0a0 + - libcxx >=18 + - libzlib >=1.3.1,<2.0a0 + - zlib + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 173220 + timestamp: 1730769371051 +- conda: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.1-py312h178313f_1.conda + sha256: 6d5ff6490c53e14591b70924711fe7bd70eb7fbeeeb1cbd9ed2f6d794ec8c4eb + md5: 349635694b4df27336bc15a49e9220e9 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/propcache?source=hash-mapping + size: 52947 + timestamp: 1737635699390 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.2.1-py312hcc812fe_1.conda + sha256: d759d8ab9c060b42cabf6312b9a04aa590daecabf1dd4e35731f4bc1b5c388bb + md5: 533b07e9fd835938f465225613825eee + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/propcache?source=hash-mapping + size: 52776 + timestamp: 1737635802135 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.1-py312h998013c_1.conda + sha256: 96145760baad111d7ae4213ea8f8cc035cf33b001f5ff37d92268e4d28b0941d + md5: 83678928c58c9ae76778a435b6c7a94a + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/propcache?source=hash-mapping + size: 50942 + timestamp: 1737635896600 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda + sha256: 9c88f8c64590e9567c6c80823f0328e58d3b1efb0e1c539c0315ceca764e0973 + md5: b3c17d95b5a10c6e64a21fa17573e70e + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 8252 + timestamp: 1726802366959 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pthread-stubs-0.4-h86ecc28_1002.conda + sha256: 977dfb0cb3935d748521dd80262fe7169ab82920afd38ed14b7fee2ea5ec01ba + md5: bb5a90c93e3bac3d5690acf76b4a6386 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 8342 + timestamp: 1726803319942 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pthread-stubs-0.4-hd74edd7_1002.conda + sha256: 8ed65e17fbb0ca944bfb8093b60086e3f9dd678c3448b5de212017394c247ee3 + md5: 415816daf82e0b23a736a069a75e9da7 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 8381 + timestamp: 1726802424786 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-19.0.1-py312h7900ff3_0.conda + sha256: 82a0b6ef00473c134ff32138a6fe1f6edc600f362f2007d33d6c6723e220a83d + md5: 972f2a7f04b117accc08a11469c2cb6e + depends: + - libarrow-acero 19.0.1.* + - libarrow-dataset 19.0.1.* + - libarrow-substrait 19.0.1.* + - libparquet 19.0.1.* + - pyarrow-core 19.0.1 *_0_* + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 25300 + timestamp: 1739792645286 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-19.0.1-py312h8025657_0.conda + sha256: d17f85be9e3c9ccdbf46a00f51a155d6c9d02837f3ff850539cc931ce149546f + md5: 0f2b788d71caa13c9e05fb4366e3b564 + depends: + - libarrow-acero 19.0.1.* + - libarrow-dataset 19.0.1.* + - libarrow-substrait 19.0.1.* + - libparquet 19.0.1.* + - pyarrow-core 19.0.1 *_0_* + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 25487 + timestamp: 1739792927040 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-19.0.1-py312h1f38498_0.conda + sha256: 212a9ef1971d69882b977a930b3e8cd9d78bb58c027119a52b92d48a5e47f9eb + md5: 4bbcfad0bfcad7ee1d617a9b6db564ee + depends: + - libarrow-acero 19.0.1.* + - libarrow-dataset 19.0.1.* + - libarrow-substrait 19.0.1.* + - libparquet 19.0.1.* + - pyarrow-core 19.0.1 *_0_* + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 25462 + timestamp: 1739792876991 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-19.0.1-py312h01725c0_0_cpu.conda + sha256: b2d397ee72a8e33aa1b2bcaa525b3bfc1dad333a631e668e54bcdcf275b3d69b + md5: 227543d1eef90da786f0c63bd0787839 + depends: + - __glibc >=2.17,<3.0.a0 + - libarrow 19.0.1.* *cpu + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - numpy >=1.21,<3 + - apache-arrow-proc =*=cpu + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/pyarrow?source=hash-mapping + size: 5203933 + timestamp: 1739792285799 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-19.0.1-py312h66f7834_0_cpu.conda + sha256: ab25433629022236b24d35a53dbef033ef60f3cb3a71fa630392d7340791bdc7 + md5: e83aadc9635bdcf69845587c4c837fd3 + depends: + - libarrow 19.0.1.* *cpu + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - numpy >=1.21,<3 + - apache-arrow-proc =*=cpu + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/pyarrow?source=hash-mapping + size: 5017444 + timestamp: 1739792893195 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-19.0.1-py312hc40f475_0_cpu.conda + sha256: 50ad4d67a1a2be32c2441a945a333b5347e36f027ea629fd903e7eaae77e0ed7 + md5: 90e3c0898e229d76e4a6949f621f0f58 + depends: + - __osx >=11.0 + - libarrow 19.0.1.* *cpu + - libcxx >=18 + - libzlib >=1.3.1,<2.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - apache-arrow-proc =*=cpu + - numpy >=1.21,<3 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/pyarrow?source=hash-mapping + size: 4398733 + timestamp: 1739792829575 +- conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda + sha256: 79db7928d13fab2d892592223d7570f5061c192f27b9febd1a418427b719acc6 + md5: 12c566707c80111f9799308d9e265aef + depends: + - python >=3.9 + - python + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 110100 + timestamp: 1733195786147 +- conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda + sha256: ba3b032fa52709ce0d9fd388f63d330a026754587a2f461117cac9ab73d8d0d8 + md5: 461219d1a5bd61342293efa2c0c90eac + depends: + - __unix + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/pysocks?source=hash-mapping + size: 21085 + timestamp: 1733217331982 +- conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.9-h9e4cc4f_0_cpython.conda + sha256: 64fed5178f1e9c8ac0f572ac0ce37955f5dee7b2bcac665202bc14f1f7dd618a + md5: 5665f0079432f8848079c811cdb537d5 + depends: + - __glibc >=2.17,<3.0.a0 + - bzip2 >=1.0.8,<2.0a0 + - ld_impl_linux-64 >=2.36.1 + - libexpat >=2.6.4,<3.0a0 + - libffi >=3.4,<4.0a0 + - libgcc >=13 + - liblzma >=5.6.4,<6.0a0 + - libnsl >=2.0.1,<2.1.0a0 + - libsqlite >=3.48.0,<4.0a0 + - libuuid >=2.38.1,<3.0a0 + - libxcrypt >=4.4.36 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.4.1,<4.0a0 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + constrains: + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Python-2.0 + purls: [] + size: 31581682 + timestamp: 1739521496324 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.9-h1683364_0_cpython.conda + sha256: 0366f38918bceda8ff5917d7bbe1cea2bc8b6c74e7245eb0e4b0d3c2d37f76cf + md5: 2e7ad70254455e0508adabff10218512 + depends: + - bzip2 >=1.0.8,<2.0a0 + - ld_impl_linux-aarch64 >=2.36.1 + - libexpat >=2.6.4,<3.0a0 + - libffi >=3.4,<4.0a0 + - libgcc >=13 + - liblzma >=5.6.4,<6.0a0 + - libnsl >=2.0.1,<2.1.0a0 + - libsqlite >=3.48.0,<4.0a0 + - libuuid >=2.38.1,<3.0a0 + - libxcrypt >=4.4.36 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.4.1,<4.0a0 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + constrains: + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Python-2.0 + purls: [] + size: 13804161 + timestamp: 1739519531794 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.9-hc22306f_0_cpython.conda + sha256: cbf81a78d3ca6e663e827523e6ddbc28369cac488da047a28f83875eb52fe5f6 + md5: 1d105a6c46a753e3c0bab54a1ad24063 + depends: + - __osx >=11.0 + - bzip2 >=1.0.8,<2.0a0 + - libexpat >=2.6.4,<3.0a0 + - libffi >=3.4,<4.0a0 + - liblzma >=5.6.4,<6.0a0 + - libsqlite >=3.48.0,<4.0a0 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.4.1,<4.0a0 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + constrains: + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Python-2.0 + purls: [] + size: 12947786 + timestamp: 1739520092196 +- conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + sha256: a50052536f1ef8516ed11a844f9413661829aa083304dc624c5925298d078d79 + md5: 5ba79d7c71f03c678c8ead841f347d6e + depends: + - python >=3.9 + - six >=1.5 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/python-dateutil?source=hash-mapping + size: 222505 + timestamp: 1733215763718 +- conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.1-pyhd8ed1ab_0.conda + sha256: 1597d6055d34e709ab8915091973552a0b8764c8032ede07c4e99670da029629 + md5: 392c91c42edd569a7ec99ed8648f597a + depends: + - python >=3.9 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/tzdata?source=hash-mapping + size: 143794 + timestamp: 1737541204030 +- conda: https://conda.anaconda.org/conda-forge/linux-64/python-xxhash-3.5.0-py312h66e93f0_2.conda + sha256: b5950a737d200e2e3cf199ab7b474ac194fcf4d6bee13bcbdf32c5a5cca7eaf0 + md5: cc3f6c452697c1cf7e4e6e5f21861f96 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - xxhash >=0.8.3,<0.8.4.0a0 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + purls: + - pkg:pypi/xxhash?source=hash-mapping + size: 23216 + timestamp: 1740594909669 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-xxhash-3.5.0-py312h52516f5_2.conda + sha256: b0c7528f2597e33911f179dad9852a4958683533570f8cc68976068b444461f4 + md5: c6de44ac405bf8a793c57850ea6b427a + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - xxhash >=0.8.3,<0.8.4.0a0 + arch: aarch64 + platform: linux + license: BSD-2-Clause + license_family: BSD + purls: + - pkg:pypi/xxhash?source=compressed-mapping + size: 23768 + timestamp: 1740595924431 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-xxhash-3.5.0-py312hea69d52_2.conda + sha256: 10c3df8dae696da4bd8532609999991ae1f3c4cc1a1e7f6a636cf6aa19d9eb82 + md5: b0c7097883bb4d8acfd72e7b9c6b93cd + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - xxhash >=0.8.3,<0.8.4.0a0 + arch: arm64 + platform: osx + license: BSD-2-Clause + license_family: BSD + purls: + - pkg:pypi/xxhash?source=hash-mapping + size: 21947 + timestamp: 1740595129087 +- conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda + build_number: 5 + sha256: d10e93d759931ffb6372b45d65ff34d95c6000c61a07e298d162a3bc2accebb0 + md5: 0424ae29b104430108f5218a66db7260 + constrains: + - python 3.12.* *_cpython + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 6238 + timestamp: 1723823388266 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.12-5_cp312.conda + build_number: 5 + sha256: 5ccdad9981753cc4a2d126e356673a21c0cd5b34e209cb8d476a3947d4ad9b39 + md5: 62b20f305498284a07dc6c45fd0e5c87 + constrains: + - python 3.12.* *_cpython + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 6329 + timestamp: 1723823366253 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-5_cp312.conda + build_number: 5 + sha256: 49d624e4b809c799d2bf257b22c23cf3fc4460f5570d9a58e7ad86350aeaa1f4 + md5: b76f9b1c862128e56ac7aa8cd2333de9 + constrains: + - python 3.12.* *_cpython + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 6278 + timestamp: 1723823099686 +- conda: https://conda.anaconda.org/pytorch/linux-64/pytorch-2.5.1-py3.12_cuda12.4_cudnn9.1.0_0.tar.bz2 + sha256: 8183ab363b7892f67ba3660929f1c3f4f8646e4a2a02d499d387acc0509764c3 + md5: 42164c6ce8e563c20a542686a8b9b964 + depends: + - blas * mkl + - filelock + - jinja2 + - llvm-openmp <16 + - mkl >=2018 + - networkx + - python >=3.12,<3.13.0a0 + - pytorch-cuda >=12.4,<12.5 + - pytorch-mutex 1.0 cuda + - pyyaml + - sympy + - torchtriton 3.1.0 + - typing_extensions + constrains: + - cpuonly <0 + arch: x86_64 + platform: linux + license: BSD 3-Clause + license_family: BSD + purls: + - pkg:pypi/torch?source=hash-mapping + size: 1571072276 + timestamp: 1729655770987 +- conda: https://conda.anaconda.org/pytorch/osx-arm64/pytorch-2.5.1-py3.12_0.tar.bz2 + sha256: 1d476688886b78f641973d1b5c1352eaece59484f4408f2c1af46e3634a6c957 + md5: a393d6275c53d5218015a23c741dc004 + depends: + - filelock + - jinja2 + - llvm-openmp <16 + - networkx + - python >=3.12,<3.13.0a0 + - pyyaml + - sympy + - typing_extensions + constrains: + - cpuonly + arch: arm64 + platform: osx + license: BSD 3-Clause + license_family: BSD + purls: + - pkg:pypi/torch?source=hash-mapping + size: 62089911 + timestamp: 1729651375444 +- conda: https://conda.anaconda.org/pytorch/linux-64/pytorch-cuda-12.4-hc786d27_7.tar.bz2 + sha256: 4ce6352f6270673aaf335909da2bbdd70ad8aaae489319e1e3a5ac0aae720314 + md5: 06635b1bbf5e2fef4a8b9b282500cd7b + depends: + - cuda-cudart >=12.4,<12.5 + - cuda-cupti >=12.4,<12.5 + - cuda-libraries >=12.4,<12.5 + - cuda-nvrtc >=12.4,<12.5 + - cuda-nvtx >=12.4,<12.5 + - cuda-runtime >=12.4,<12.5 + - libcublas >=12.4.5.8,<12.5.2.13 + - libcufft >=11.2.1.3,<11.2.3.18 + - libcusolver >=11.6.1.9,<11.6.2.40 + - libcusparse >=12.3.1.170,<12.4.1.18 + - libnpp >=12.2.5.30,<12.3.0.116 + - libnvjitlink >=12.4.127,<12.5.40 + - libnvjpeg >=12.3.1.117,<12.3.2.38 + arch: x86_64 + platform: linux + purls: [] + size: 7189 + timestamp: 1724179791784 +- conda: https://conda.anaconda.org/pytorch/noarch/pytorch-mutex-1.0-cuda.tar.bz2 + build_number: 100 + sha256: c16316183f51b74ca5eee4dcb8631052f328c0bbf244176734a0b7d390b81ee3 + md5: a948316e36fb5b11223b3fcfa93f8358 + purls: [] + size: 2906 + timestamp: 1628062930777 +- conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda + sha256: 1a7d6b233f7e6e3bbcbad054c8fd51e690a67b129a899a056a5e45dd9f00cb41 + md5: 3eeeeb9e4827ace8c0c1419c85d590ad + depends: + - python >=3.7 + license: MIT + license_family: MIT + purls: + - pkg:pypi/pytz?source=hash-mapping + size: 188538 + timestamp: 1706886944988 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py312h178313f_2.conda + sha256: 159cba13a93b3fe084a1eb9bda0a07afc9148147647f0d437c3c3da60980503b + md5: cf2485f39740de96e2a7f2bb18ed2fee + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - yaml >=0.2.5,<0.3.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: + - pkg:pypi/pyyaml?source=hash-mapping + size: 206903 + timestamp: 1737454910324 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyyaml-6.0.2-py312hcc812fe_2.conda + sha256: dc78e41d51300722ba35ac4a10d37339ceffbe22d7501c71dfd3f633a4f8e79a + md5: 4de4a5ff81c941674e08595244e7cd61 + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - yaml >=0.2.5,<0.3.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: + - pkg:pypi/pyyaml?source=hash-mapping + size: 199172 + timestamp: 1737454840766 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py312h998013c_2.conda + sha256: ad225ad24bfd60f7719709791345042c3cb32da1692e62bd463b084cf140e00d + md5: 68149ed4d4e9e1c42d2ba1f27f08ca96 + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - yaml >=0.2.5,<0.3.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: + - pkg:pypi/pyyaml?source=hash-mapping + size: 192148 + timestamp: 1737454886351 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.1-py312hbf22597_0.conda + sha256: 90ec0da0317d3d76990a40c61e1709ef859dd3d8c63838bad2814f46a63c8a2e + md5: 7cec8d0dac15a2d9fea8e49879aa779d + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libsodium >=1.0.20,<1.0.21.0a0 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - zeromq >=4.3.5,<4.4.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/pyzmq?source=hash-mapping + size: 382698 + timestamp: 1738271121975 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyzmq-26.2.1-py312h2427ae1_0.conda + sha256: 9558f9330093e5c21b7c04e2e212e19b9b88ad9c808315f12c0765b244018a09 + md5: 0520da8de6870d8ff63e818e927d1524 + depends: + - libgcc >=13 + - libsodium >=1.0.20,<1.0.21.0a0 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - zeromq >=4.3.5,<4.4.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/pyzmq?source=hash-mapping + size: 375156 + timestamp: 1738273130727 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.1-py312hf4875e0_0.conda + sha256: 70d398b334668dc597d33e27847ede1b0829a639b9c91ee845355e52c86c2293 + md5: bfbefdb140b546a80827ff7c9d5ac7b8 + depends: + - __osx >=11.0 + - libcxx >=18 + - libsodium >=1.0.20,<1.0.21.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - zeromq >=4.3.5,<4.4.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/pyzmq?source=hash-mapping + size: 364649 + timestamp: 1738271263898 +- conda: https://conda.anaconda.org/conda-forge/linux-64/re2-2024.07.02-h9925aae_2.conda + sha256: d213c44958d49ce7e0d4d5b81afec23640cce5016685dbb2d23571a99caa4474 + md5: e84ddf12bde691e8ec894b00ea829ddf + depends: + - libre2-11 2024.07.02 hbbce691_2 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 26786 + timestamp: 1735541074034 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/re2-2024.07.02-haa97905_2.conda + sha256: 040848655df9119bae5a549fb5c8956a5537120859416c1d9d0712b7bac9f12e + md5: 1bf0135339b4a7419a198a795d2d4be0 + depends: + - libre2-11 2024.07.02 h18dbdb1_2 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 26830 + timestamp: 1735540999398 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/re2-2024.07.02-h6589ca4_2.conda + sha256: 4d3799c05f8f662922a0acd129d119774760a3281b883603678e128d1cb307fb + md5: 7a8b4ad8c58a3408ca89d78788c78178 + depends: + - libre2-11 2024.07.02 h07bc746_2 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 26861 + timestamp: 1735541088455 +- conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda + sha256: 2d6d0c026902561ed77cd646b5021aef2d4db22e57a5b0178dfc669231e06d2c + md5: 283b96675859b20a825f8fa30f311446 + depends: + - libgcc >=13 + - ncurses >=6.5,<7.0a0 + arch: x86_64 + platform: linux + license: GPL-3.0-only + license_family: GPL + purls: [] + size: 282480 + timestamp: 1740379431762 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8382b9d_2.conda + sha256: 54bed3a3041befaa9f5acde4a37b1a02f44705b7796689574bcf9d7beaad2959 + md5: c0f08fc2737967edde1a272d4bf41ed9 + depends: + - libgcc >=13 + - ncurses >=6.5,<7.0a0 + arch: aarch64 + platform: linux + license: GPL-3.0-only + license_family: GPL + purls: [] + size: 291806 + timestamp: 1740380591358 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda + sha256: 7db04684d3904f6151eff8673270922d31da1eea7fa73254d01c437f49702e34 + md5: 63ef3f6e6d6d5c589e64f11263dc5676 + depends: + - ncurses >=6.5,<7.0a0 + arch: arm64 + platform: osx + license: GPL-3.0-only + license_family: GPL + purls: [] + size: 252359 + timestamp: 1740379663071 +- conda: https://conda.anaconda.org/conda-forge/linux-64/regex-2024.11.6-py312h66e93f0_0.conda + sha256: fcb5687d3ec5fff580b64b8fb649d9d65c999a91a5c3108a313ecdd2de99f06b + md5: 647770db979b43f9c9ca25dcfa7dc4e4 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Python-2.0 + license_family: PSF + purls: + - pkg:pypi/regex?source=hash-mapping + size: 402821 + timestamp: 1730952378415 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/regex-2024.11.6-py312hb2c0f52_0.conda + sha256: ec2c416860de29224e447e2031f8686a05476759c17da1f32f61d4307e540ec8 + md5: fa8b589107567f532fa1380e66f91776 + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Python-2.0 + license_family: PSF + purls: + - pkg:pypi/regex?source=hash-mapping + size: 398947 + timestamp: 1730952477463 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/regex-2024.11.6-py312hea69d52_0.conda + sha256: dcdec32f2c7dd37986baa692bedf9db126ad34e92e5e9b64f707cba3d04d2525 + md5: e73cda1f18846b608284bd784f061eac + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Python-2.0 + license_family: PSF + purls: + - pkg:pypi/regex?source=hash-mapping + size: 366374 + timestamp: 1730952427552 +- conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda + sha256: d701ca1136197aa121bbbe0e8c18db6b5c94acbd041c2b43c70e5ae104e1d8ad + md5: a9b9368f3701a417eac9edbcae7cb737 + depends: + - certifi >=2017.4.17 + - charset-normalizer >=2,<4 + - idna >=2.5,<4 + - python >=3.9 + - urllib3 >=1.21.1,<3 + constrains: + - chardet >=3.0.2,<6 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/requests?source=hash-mapping + size: 58723 + timestamp: 1733217126197 +- conda: https://conda.anaconda.org/conda-forge/linux-64/s2n-1.5.11-h072c03f_0.conda + sha256: cfdd98c8f9a1e5b6f9abce5dac6d590cc9fe541a08466c9e4a26f90e00b569e3 + md5: 5e8060d52f676a40edef0006a75c718f + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - openssl >=3.4.0,<4.0a0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 356213 + timestamp: 1737146304079 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/s2n-1.5.11-h3caee7a_0.conda + sha256: 5a7ae66f96be24c3b2007139b6c3701ab015b4b4eb4eccfdd07be97710243a47 + md5: 1517c0518f8a06a48a15f41d94252874 + depends: + - libgcc >=13 + - openssl >=3.4.0,<4.0a0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 352811 + timestamp: 1737146319512 +- conda: https://conda.anaconda.org/conda-forge/linux-64/safetensors-0.5.3-py312h12e396e_0.conda + sha256: 23dec8105d34e51cc2269a79680a666351233e2dc171ff14c46d3455d2c22080 + md5: fd1fc1f1e6ceee16d9a58d3ff5a57c7f + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - __glibc >=2.17 + arch: x86_64 + platform: linux + license: Apache-2.0 + purls: + - pkg:pypi/safetensors?source=compressed-mapping + size: 431388 + timestamp: 1740651706122 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/safetensors-0.5.3-py312h8cbf658_0.conda + sha256: 24ca173b9f39d5e5cabc6ea7e570b500682669e5910510020549f8696e29992d + md5: eb2d82d057535f4fb3182f43df429495 + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - __glibc >=2.17 + arch: aarch64 + platform: linux + license: Apache-2.0 + purls: + - pkg:pypi/safetensors?source=hash-mapping + size: 417509 + timestamp: 1740651719895 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/safetensors-0.5.3-py312hcd83bfe_0.conda + sha256: 1d0412be1b16df769c69d537907e690be50d06d05f757ba2451facb6883a3eb3 + md5: 68b99db908e1ec63c0cacae262a835e9 + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - __osx >=11.0 + arch: arm64 + platform: osx + license: Apache-2.0 + purls: + - pkg:pypi/safetensors?source=compressed-mapping + size: 382676 + timestamp: 1740651813281 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-0.2.0-hc8f76dd_10.conda + sha256: a1bde55ceb9dc5bd7879283d0f594a6ce65c07fda3de76230c65a4a5df47858a + md5: 480e915dfc6c592615ef6f217e615aa6 + depends: + - libsentencepiece 0.2.0 h8e10757_10 + - python_abi 3.12.* *_cp312 + - sentencepiece-python 0.2.0 py312hb6b8a2b_10 + - sentencepiece-spm 0.2.0 h8e10757_10 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 19470 + timestamp: 1735628377167 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-0.2.0-h6c1b121_10.conda + sha256: 846d885a560fbb4375b645e7caf2f756ef88bbeb441b670375da0090aaa427fb + md5: 33a89eb1dedae8eb7222b0a89856f337 + depends: + - libsentencepiece 0.2.0 h6164ad9_10 + - python_abi 3.12.* *_cp312 + - sentencepiece-python 0.2.0 py312h197ff68_10 + - sentencepiece-spm 0.2.0 h6164ad9_10 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 19686 + timestamp: 1735628718991 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-0.2.0-h22a84ea_10.conda + sha256: 526c934b897131bd274697649c3b1c492a7d66c03368885a954112468b3c1424 + md5: 346abe448f69949a65473b336856860a + depends: + - libsentencepiece 0.2.0 he13a0af_10 + - python_abi 3.12.* *_cp312 + - sentencepiece-python 0.2.0 py312h155166a_10 + - sentencepiece-spm 0.2.0 he13a0af_10 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 19759 + timestamp: 1735628533490 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-python-0.2.0-py312hb6b8a2b_10.conda + sha256: 37df7fb659564587b950b39c936769d9b5095afb7bc223f42d6248a5540c6567 + md5: 7908b7b977e2e123a5f6a29906f2ce44 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 h8e10757_10 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/sentencepiece?source=hash-mapping + size: 2411182 + timestamp: 1735628106455 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-python-0.2.0-py312h197ff68_10.conda + sha256: a7c2c19cc397c7632e2630af49ddcff128f145c93ea493421e6f42bfa5e1d30b + md5: 5642e4545a3cf03e446fb3b3e9fd723b + depends: + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 h6164ad9_10 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/sentencepiece?source=hash-mapping + size: 2458076 + timestamp: 1735628298246 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-python-0.2.0-py312h155166a_10.conda + sha256: 2d59614aeafbf54cc718805798c11c2d0a3b4b8d947d1bd81c87c484b4883077 + md5: 6e11367ef670296fce01fc9860be944d + depends: + - __osx >=11.0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 he13a0af_10 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/sentencepiece?source=hash-mapping + size: 2433303 + timestamp: 1735628083958 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-spm-0.2.0-h8e10757_10.conda + sha256: 6b55e1121545357d63c3aa0766931720e8aafc52d88641ba7631c8cbaa68c52f + md5: e977b7be5ac26c55825e121e00b90493 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 h8e10757_10 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 89076 + timestamp: 1735628334078 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-spm-0.2.0-h6164ad9_10.conda + sha256: b98fc1028a8e8fbf309af383f9c837290a14e076e6c5533dc251694ea33ffc6e + md5: a4b75936c01dca3f089f02752b7ee325 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 h6164ad9_10 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 85983 + timestamp: 1735628693813 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-spm-0.2.0-he13a0af_10.conda + sha256: b760aeee02e2afbfcce3f559e8a227aa4c94139157b1702fdfb41a057dad0e52 + md5: 9b7300f23cd330da8664cd072c162e5f + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 he13a0af_10 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 83826 + timestamp: 1735628514667 +- pypi: https://download.pytorch.org/whl/setuptools-70.2.0-py3-none-any.whl#sha256=b8b8060bb426838fbe942479c90296ce976249451118ef566a5a0b7d8b78fb05 + name: setuptools + version: 70.2.0 + sha256: b8b8060bb426838fbe942479c90296ce976249451118ef566a5a0b7d8b78fb05 + requires_dist: + - sphinx>=3.5 ; extra == 'doc' + - jaraco-packaging>=9.3 ; extra == 'doc' + - rst-linker>=1.9 ; extra == 'doc' + - furo ; extra == 'doc' + - sphinx-lint ; extra == 'doc' + - jaraco-tidelift>=1.4 ; extra == 'doc' + - pygments-github-lexers==0.0.5 ; extra == 'doc' + - sphinx-favicon ; extra == 'doc' + - sphinx-inline-tabs ; extra == 'doc' + - sphinx-reredirects ; extra == 'doc' + - sphinxcontrib-towncrier ; extra == 'doc' + - sphinx-notfound-page>=1,<2 ; extra == 'doc' + - pyproject-hooks!=1.1 ; extra == 'doc' + - pytest>=6,!=8.1.* ; extra == 'test' + - pytest-checkdocs>=2.4 ; extra == 'test' + - pytest-cov ; extra == 'test' + - pytest-mypy ; extra == 'test' + - pytest-enabler>=2.2 ; extra == 'test' + - virtualenv>=13.0.0 ; extra == 'test' + - wheel ; extra == 'test' + - pip>=19.1 ; extra == 'test' + - packaging>=23.2 ; extra == 'test' + - jaraco-envs>=2.2 ; extra == 'test' + - pytest-xdist>=3 ; extra == 'test' + - jaraco-path>=3.2.0 ; extra == 'test' + - build[virtualenv]>=1.0.3 ; extra == 'test' + - filelock>=3.4.0 ; extra == 'test' + - ini2toml[lite]>=0.14 ; extra == 'test' + - tomli-w>=1.0.0 ; extra == 'test' + - pytest-timeout ; extra == 'test' + - pytest-home>=0.5 ; extra == 'test' + - mypy==1.10.0 ; extra == 'test' + - tomli ; extra == 'test' + - importlib-metadata ; extra == 'test' + - pytest-subprocess ; extra == 'test' + - pyproject-hooks!=1.1 ; extra == 'test' + - jaraco-test ; extra == 'test' + - jaraco-develop>=7.21 ; python_full_version >= '3.9' and sys_platform != 'cygwin' and extra == 'test' + - pytest-ruff>=0.3.2 ; sys_platform != 'cygwin' and extra == 'test' + - pytest-perf ; sys_platform != 'cygwin' and extra == 'test' + requires_python: '>=3.8' +- conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + sha256: 41db0180680cc67c3fa76544ffd48d6a5679d96f4b71d7498a759e94edc9a2db + md5: a451d576819089b0d672f18768be0f65 + depends: + - python >=3.9 + license: MIT + license_family: MIT + purls: + - pkg:pypi/six?source=hash-mapping + size: 16385 + timestamp: 1733381032766 +- conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-h8bd8927_1.conda + sha256: ec91e86eeb2c6bbf09d51351b851e945185d70661d2ada67204c9a6419d282d3 + md5: 3b3e64af585eadfb52bb90b553db5edf + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 42739 + timestamp: 1733501881851 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-hd4fb6f5_1.conda + sha256: c4a07ae5def8d55128f25a567a296ef9d7bf99a3bc79d46bd5160c076a5f50af + md5: 2fcc6cd1e5550deb509073fd2e6693e1 + depends: + - libgcc >=13 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 43032 + timestamp: 1733501964775 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-h98b9ce2_1.conda + sha256: 4242f95b215127a006eb664fe26ed5a82df87e90cbdbc7ce7ff4971f0720997f + md5: ded86dee325290da2967a3fea3800eb5 + depends: + - __osx >=11.0 + - libcxx >=18 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 35857 + timestamp: 1733502172664 +- pypi: https://download.pytorch.org/whl/sympy-1.13.1-py3-none-any.whl#sha256=db36cdc64bf61b9b24578b6f7bab1ecdd2452cf008f34faa33776680c26d66f8 + name: sympy + version: 1.13.1 + sha256: db36cdc64bf61b9b24578b6f7bab1ecdd2452cf008f34faa33776680c26d66f8 + requires_dist: + - mpmath>=1.1.0,<1.4 + - pytest>=7.1.0 ; extra == 'dev' + - hypothesis>=6.70.0 ; extra == 'dev' + requires_python: '>=3.8' +- conda: https://conda.anaconda.org/conda-forge/noarch/sympy-1.13.3-pyh2585a3b_105.conda + sha256: 929d939c5a8bcdc10a17501890918da68cf14a5883b36fddf77b8f0fbf040be2 + md5: 254cd5083ffa04d96e3173397a3d30f4 + depends: + - __unix + - cpython + - gmpy2 >=2.0.8 + - mpmath >=0.19 + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/sympy?source=hash-mapping + size: 4523617 + timestamp: 1736248315124 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tbb-2021.13.0-hceb3a55_1.conda + sha256: 65463732129899770d54b1fbf30e1bb82fdebda9d7553caf08d23db4590cd691 + md5: ba7726b8df7b9d34ea80e82b097a4893 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libhwloc >=2.11.2,<2.11.3.0a0 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 175954 + timestamp: 1732982638805 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda + sha256: e0569c9caa68bf476bead1bed3d79650bb080b532c64a4af7d8ca286c08dea4e + md5: d453b98d9c83e71da0741bb0ff4d76bc + depends: + - libgcc-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 + arch: x86_64 + platform: linux + license: TCL + license_family: BSD + purls: [] + size: 3318875 + timestamp: 1699202167581 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda + sha256: 7fa27cc512d3a783f38bd16bbbffc008807372499d5b65d089a8e43bde9db267 + md5: f75105e0585851f818e0009dd1dde4dc + depends: + - libgcc-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 + arch: aarch64 + platform: linux + license: TCL + license_family: BSD + purls: [] + size: 3351802 + timestamp: 1695506242997 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda + sha256: 72457ad031b4c048e5891f3f6cb27a53cb479db68a52d965f796910e71a403a8 + md5: b50a57ba89c32b62428b71a875291c9b + depends: + - libzlib >=1.2.13,<2.0.0a0 + arch: arm64 + platform: osx + license: TCL + license_family: BSD + purls: [] + size: 3145523 + timestamp: 1699202432999 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.21.0-py312h8360d73_0.conda + sha256: 4f504a5e9d77c6d88a8f735c4319429d8bf40b742384f908a2efe0a09acc3cc5 + md5: f953aa733207f3d37acf4a3efbedba89 + depends: + - __glibc >=2.17,<3.0.a0 + - huggingface_hub >=0.16.4,<1.0 + - libgcc >=13 + - libstdcxx >=13 + - openssl >=3.4.0,<4.0a0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - __glibc >=2.17 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/tokenizers?source=hash-mapping + size: 2258007 + timestamp: 1732734202127 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.21.0-py312ha0d6ea1_0.conda + sha256: ef0f4d4e2c798b1821187ea0ba4c86484e48abaa0e9a19fe68030fa7ff5dde84 + md5: 077f48c9e0c08a30d842e15c51df4143 + depends: + - huggingface_hub >=0.16.4,<1.0 + - libgcc >=13 + - libstdcxx >=13 + - openssl >=3.4.0,<4.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - __glibc >=2.17 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/tokenizers?source=hash-mapping + size: 2331194 + timestamp: 1732734303196 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.21.0-py312hf3e4074_0.conda + sha256: 5d395333fcb22dc611140286c1f2ea8b3fa220a4931c583587cb612238091555 + md5: 4c732c74b485ef7ac8ec1c548dd45e8e + depends: + - __osx >=11.0 + - huggingface_hub >=0.16.4,<1.0 + - libcxx >=18 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - __osx >=11.0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/tokenizers?source=hash-mapping + size: 1931389 + timestamp: 1732734727624 +- pypi: https://download.pytorch.org/whl/cpu/torch-2.5.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl#sha256=36d1be99281b6f602d9639bd0af3ee0006e7aab16f6718d86f709d395b6f262c + name: torch + version: 2.5.1 + sha256: 36d1be99281b6f602d9639bd0af3ee0006e7aab16f6718d86f709d395b6f262c + requires_dist: + - filelock + - typing-extensions>=4.8.0 + - networkx + - jinja2 + - fsspec + - nvidia-cuda-nvrtc-cu12==12.4.127 ; platform_machine == 'x86_64' and platform_system == 'Linux' + - nvidia-cuda-runtime-cu12==12.4.127 ; platform_machine == 'x86_64' and platform_system == 'Linux' + - nvidia-cuda-cupti-cu12==12.4.127 ; platform_machine == 'x86_64' and platform_system == 'Linux' + - nvidia-cudnn-cu12==9.1.0.70 ; platform_machine == 'x86_64' and platform_system == 'Linux' + - nvidia-cublas-cu12==12.4.5.8 ; platform_machine == 'x86_64' and platform_system == 'Linux' + - nvidia-cufft-cu12==11.2.1.3 ; platform_machine == 'x86_64' and platform_system == 'Linux' + - nvidia-curand-cu12==10.3.5.147 ; platform_machine == 'x86_64' and platform_system == 'Linux' + - nvidia-cusolver-cu12==11.6.1.9 ; platform_machine == 'x86_64' and platform_system == 'Linux' + - nvidia-cusparse-cu12==12.3.1.170 ; platform_machine == 'x86_64' and platform_system == 'Linux' + - nvidia-nccl-cu12==2.21.5 ; platform_machine == 'x86_64' and platform_system == 'Linux' + - nvidia-nvtx-cu12==12.4.127 ; platform_machine == 'x86_64' and platform_system == 'Linux' + - nvidia-nvjitlink-cu12==12.4.127 ; platform_machine == 'x86_64' and platform_system == 'Linux' + - sympy==1.12.1 ; python_full_version == '3.8.*' + - setuptools ; python_full_version >= '3.12' + - sympy==1.13.1 ; python_full_version >= '3.9' + - opt-einsum>=3.3 ; extra == 'opt-einsum' + - optree>=0.12.0 ; extra == 'optree' + requires_python: '>=3.8.0' +- conda: https://conda.anaconda.org/pytorch/linux-64/torchtriton-3.1.0-py312.tar.bz2 + build_number: 1 + sha256: f0beb429b3834a3796626642829a7e4bb9d4fe6477c8dc614a55e5c4f15a6a05 + md5: bb4b2d07cb6b9b476e78740c08ba69fe + depends: + - filelock + - python >=3.12,<3.13.0a0 + - pytorch + arch: x86_64 + platform: linux + license: MIT + purls: + - pkg:pypi/triton?source=hash-mapping + size: 244939186 + timestamp: 1727971107041 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda + sha256: 062a3a3a37fa8615ce57929ba7e982c76f5a5810bcebd435950f6d6c4147c310 + md5: e417822cb989e80a0d2b1b576fdd1657 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/tornado?source=hash-mapping + size: 840414 + timestamp: 1732616043734 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py312h52516f5_0.conda + sha256: 4c19a544354172b2273553267e734795a6da3c78a04c2d19f8e9e159ca3178bc + md5: e28996d9d2d44d777b7e6fb12f63715b + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/tornado?source=hash-mapping + size: 841662 + timestamp: 1732616934923 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda + sha256: 964a2705a36c50040c967b18b45b9cc8de3c2aff4af546979a574e0b38e58e39 + md5: fb0605888a475d6a380ae1d1a819d976 + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/tornado?source=hash-mapping + size: 842549 + timestamp: 1732616081362 +- conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + sha256: 11e2c85468ae9902d24a27137b6b39b4a78099806e551d390e394a8c34b48e40 + md5: 9efbfdc37242619130ea42b1cc4ed861 + depends: + - colorama + - python >=3.9 + license: MPL-2.0 or MIT + purls: + - pkg:pypi/tqdm?source=hash-mapping + size: 89498 + timestamp: 1735661472632 +- conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + sha256: f39a5620c6e8e9e98357507262a7869de2ae8cc07da8b7f84e517c9fd6c2b959 + md5: 019a7385be9af33791c989871317e1ed + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/traitlets?source=hash-mapping + size: 110051 + timestamp: 1733367480074 +- conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.49.0-pyhd8ed1ab_0.conda + sha256: d522d7dda6ebe296b20955b1be3eccc5d5cfdfd413457c1236323b6a08fffd9e + md5: e63e78e545fcf857cac3372edeb67ea4 + depends: + - datasets !=2.5.0 + - filelock + - huggingface_hub >=0.23.0,<1.0 + - numpy >=1.17 + - packaging >=20.0 + - python >=3.9 + - pyyaml >=5.1 + - regex !=2019.12.17 + - requests + - safetensors >=0.4.1 + - tokenizers >=0.21,<0.22 + - tqdm >=4.27 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/transformers?source=hash-mapping + size: 3514640 + timestamp: 1739826374204 +- conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda + noarch: python + sha256: c8e9c1c467b5f960b627d7adc1c65fece8e929a3de89967e91ef0f726422fd32 + md5: b6a408c64b78ec7b779a3e5c7a902433 + depends: + - typing_extensions 4.12.2 pyha770c72_1 + license: PSF-2.0 + license_family: PSF + purls: [] + size: 10075 + timestamp: 1733188758872 +- conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + sha256: 337be7af5af8b2817f115b3b68870208b30c31d3439bec07bfb2d8f4823e3568 + md5: d17f13df8b65464ca316cbc000a3cb64 + depends: + - python >=3.9 + license: PSF-2.0 + license_family: PSF + purls: + - pkg:pypi/typing-extensions?source=hash-mapping + size: 39637 + timestamp: 1733188758212 +- conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + sha256: c4b1ae8a2931fe9b274c44af29c5475a85b37693999f8c792dad0f8c6734b1de + md5: dbcace4706afdfb7eb891f7b37d07c04 + license: LicenseRef-Public-Domain + purls: [] + size: 122921 + timestamp: 1737119101255 +- conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda + sha256: 114919ffa80c328127dab9c8e7a38f9d563c617691fb81fccb11c1e86763727e + md5: 32674f8dbfb7b26410ed580dd3c10a29 + depends: + - brotli-python >=1.0.9 + - h2 >=4,<5 + - pysocks >=1.5.6,<2.0,!=1.5.7 + - python >=3.9 + - zstandard >=0.18.0 + license: MIT + license_family: MIT + purls: + - pkg:pypi/urllib3?source=hash-mapping + size: 100102 + timestamp: 1734859520452 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-hb9d3cd8_0.conda + sha256: ed10c9283974d311855ae08a16dfd7e56241fac632aec3b92e3cfe73cff31038 + md5: f6ebe2cb3f82ba6c057dde5d9debe4f7 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 14780 + timestamp: 1734229004433 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxau-1.0.12-h86ecc28_0.conda + sha256: 7829a0019b99ba462aece7592d2d7f42e12d12ccd3b9614e529de6ddba453685 + md5: d5397424399a66d33c80b1f2345a36a6 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 15873 + timestamp: 1734230458294 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxau-1.0.12-h5505292_0.conda + sha256: f33e6f013fc36ebc200f09ddead83468544cb5c353a3b50499b07b8c34e28a8d + md5: 50901e0764b7701d8ed7343496f4f301 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 13593 + timestamp: 1734229104321 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb9d3cd8_0.conda + sha256: 6b250f3e59db07c2514057944a3ea2044d6a8cdde8a47b6497c254520fade1ee + md5: 8035c64cb77ed555e3f150b7b3972480 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 19901 + timestamp: 1727794976192 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxdmcp-1.1.5-h57736b2_0.conda + sha256: efcc150da5926cf244f757b8376d96a4db78bc15b8d90ca9f56ac6e75755971f + md5: 25a5a7b797fe6e084e04ffe2db02fc62 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 20615 + timestamp: 1727796660574 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxdmcp-1.1.5-hd74edd7_0.conda + sha256: 9939a166d780700d81023546759102b33fdc2c5f11ef09f5f66c77210fd334c8 + md5: 77c447f48cab5d3a15ac224edb86a968 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 18487 + timestamp: 1727795205022 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xxhash-0.8.3-hb9d3cd8_0.conda + sha256: 3bbc35b9ee44ffea1de441f906ba05139873a28325f8a8ed152e17af30e62232 + md5: 2ef1822d8168ed5d79ab1bf01088419a + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 107794 + timestamp: 1735848927308 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xxhash-0.8.3-h86ecc28_0.conda + sha256: f210d0b6b8543acef9b73db43a557c94e695f9dfaa2f6989057c449d9c3e1239 + md5: d992916b6e4f6e7412332bbcd41c5aa2 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 104556 + timestamp: 1735848964267 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/xxhash-0.8.3-h5505292_0.conda + sha256: 43573d504e7edc4b876a9058dc316aa9851ced1d433c2b569d583c2db22c76e2 + md5: 92a98c1bbae4729dfd0216ca22c21858 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 98318 + timestamp: 1735849111725 +- conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 + sha256: a4e34c710eeb26945bdbdaba82d3d74f60a78f54a874ec10d373811a5d217535 + md5: 4cb3ad778ec2d5a7acbdf254eb1c42ae + depends: + - libgcc-ng >=9.4.0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 89141 + timestamp: 1641346969816 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yaml-0.2.5-hf897c2e_2.tar.bz2 + sha256: 8bc601d6dbe249eba44b3c456765265cd8f42ef1e778f8df9b0c9c88b8558d7e + md5: b853307650cb226731f653aa623936a4 + depends: + - libgcc-ng >=9.4.0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 92927 + timestamp: 1641347626613 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 + sha256: 93181a04ba8cfecfdfb162fc958436d868cc37db504c58078eab4c1a3e57fbb7 + md5: 4bb3f014845110883a3c5ee811fd84b4 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 88016 + timestamp: 1641347076660 +- conda: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.18.3-py312h178313f_1.conda + sha256: 6b054c93dd19fd7544af51b41a8eacca2ab62271f6c0c5a2a0cffe80dc37a0ce + md5: 6822c49f294d4355f19d314b8b6063d8 + depends: + - __glibc >=2.17,<3.0.a0 + - idna >=2.0 + - libgcc >=13 + - multidict >=4.0 + - propcache >=0.2.1 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/yarl?source=hash-mapping + size: 152305 + timestamp: 1737575898300 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.18.3-py312hcc812fe_1.conda + sha256: bfa211c0dd5dbb308788f055277dc428b7923ceb2de6a22ea98bc17cf306f9f5 + md5: d14c78abdd6109e2b7162f53b6cc1e77 + depends: + - idna >=2.0 + - libgcc >=13 + - multidict >=4.0 + - propcache >=0.2.1 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/yarl?source=hash-mapping + size: 149654 + timestamp: 1737576065314 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.18.3-py312h998013c_1.conda + sha256: 48821d23567ca0f853eee6f7812c74392867e123798b5b3c44f58758d8eb580e + md5: 092d3b40acc67c470f379049be343a7a + depends: + - __osx >=11.0 + - idna >=2.0 + - multidict >=4.0 + - propcache >=0.2.1 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/yarl?source=hash-mapping + size: 145543 + timestamp: 1737576074753 +- conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda + sha256: a4dc72c96848f764bb5a5176aa93dd1e9b9e52804137b99daeebba277b31ea10 + md5: 3947a35e916fcc6b9825449affbf4214 + depends: + - __glibc >=2.17,<3.0.a0 + - krb5 >=1.21.3,<1.22.0a0 + - libgcc >=13 + - libsodium >=1.0.20,<1.0.21.0a0 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: MPL-2.0 + license_family: MOZILLA + purls: [] + size: 335400 + timestamp: 1731585026517 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zeromq-4.3.5-h5efb499_7.conda + sha256: a6003096dc0570a86492040ba32b04ce7662b159600be2252b7a0dfb9414e21c + md5: f2f3282559a4b87b7256ecafb4610107 + depends: + - krb5 >=1.21.3,<1.22.0a0 + - libgcc >=13 + - libsodium >=1.0.20,<1.0.21.0a0 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: MPL-2.0 + license_family: MOZILLA + purls: [] + size: 371419 + timestamp: 1731589490850 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda + sha256: 9e585569fe2e7d3bea71972cd4b9f06b1a7ab8fa7c5139f92a31cbceecf25a8a + md5: f7e6b65943cb73bce0143737fded08f1 + depends: + - __osx >=11.0 + - krb5 >=1.21.3,<1.22.0a0 + - libcxx >=18 + - libsodium >=1.0.20,<1.0.21.0a0 + arch: arm64 + platform: osx + license: MPL-2.0 + license_family: MOZILLA + purls: [] + size: 281565 + timestamp: 1731585108039 +- conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + sha256: 567c04f124525c97a096b65769834b7acb047db24b15a56888a322bf3966c3e1 + md5: 0c3cc595284c5e8f0f9900a9b228a332 + depends: + - python >=3.9 + license: MIT + license_family: MIT + purls: + - pkg:pypi/zipp?source=hash-mapping + size: 21809 + timestamp: 1732827613585 +- conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.1-hb9d3cd8_2.conda + sha256: 5d7c0e5f0005f74112a34a7425179f4eb6e73c92f5d109e6af4ddeca407c92ab + md5: c9f075ab2f33b3bbee9e62d4ad0a6cd8 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libzlib 1.3.1 hb9d3cd8_2 + arch: x86_64 + platform: linux + license: Zlib + license_family: Other + purls: [] + size: 92286 + timestamp: 1727963153079 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zlib-1.3.1-h86ecc28_2.conda + sha256: b4f649aa3ecdae384d5dad7074e198bff120edd3dfb816588e31738fc6d627b1 + md5: bc230abb5d21b63ff4799b0e75204783 + depends: + - libgcc >=13 + - libzlib 1.3.1 h86ecc28_2 + arch: aarch64 + platform: linux + license: Zlib + license_family: Other + purls: [] + size: 95582 + timestamp: 1727963203597 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zlib-1.3.1-h8359307_2.conda + sha256: 58f8860756680a4831c1bf4f294e2354d187f2e999791d53b1941834c4b37430 + md5: e3170d898ca6cb48f1bb567afb92f775 + depends: + - __osx >=11.0 + - libzlib 1.3.1 h8359307_2 + arch: arm64 + platform: osx + license: Zlib + license_family: Other + purls: [] + size: 77606 + timestamp: 1727963209370 +- conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312hef9b889_1.conda + sha256: b97015e146437283f2213ff0e95abdc8e2480150634d81fbae6b96ee09f5e50b + md5: 8b7069e9792ee4e5b4919a7a306d2e67 + depends: + - __glibc >=2.17,<3.0.a0 + - cffi >=1.11 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - zstd >=1.5.6,<1.5.7.0a0 + - zstd >=1.5.6,<1.6.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/zstandard?source=hash-mapping + size: 419552 + timestamp: 1725305670210 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstandard-0.23.0-py312hb698573_1.conda + sha256: 2681c2a249752bdc7978e59ee2f34fcdfcbfda80029b84b8e5fec8dbc9e3af25 + md5: ffcb8e97e62af42075e0e5f46bb9856e + depends: + - cffi >=1.11 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - zstd >=1.5.6,<1.5.7.0a0 + - zstd >=1.5.6,<1.6.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/zstandard?source=hash-mapping + size: 392496 + timestamp: 1725305808244 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py312h15fbf35_1.conda + sha256: d00ca25c1e28fd31199b26a94f8c96574475704a825d244d7a6351ad3745eeeb + md5: a4cde595509a7ad9c13b1a3809bcfe51 + depends: + - __osx >=11.0 + - cffi >=1.11 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - zstd >=1.5.6,<1.5.7.0a0 + - zstd >=1.5.6,<1.6.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/zstandard?source=hash-mapping + size: 330788 + timestamp: 1725305806565 +- conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda + sha256: c558b9cc01d9c1444031bd1ce4b9cff86f9085765f17627a6cd85fc623c8a02b + md5: 4d056880988120e29d75bfff282e0f45 + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 554846 + timestamp: 1714722996770 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.6-h02f22dd_0.conda + sha256: 484f9d0722c77685ae379fbff3ccd662af9ead7e59eb39cd6d0c677cdf25ff6c + md5: be8d5f8cf21aed237b8b182ea86b3dd6 + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 539937 + timestamp: 1714723130243 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.6-hb46c0d2_0.conda + sha256: 2d4fd1ff7ee79cd954ca8e81abf11d9d49954dd1fef80f27289e2402ae9c2e09 + md5: d96942c06c3e84bfcc5efb038724a7fd + depends: + - __osx >=11.0 + - libzlib >=1.2.13,<2.0.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 405089 + timestamp: 1714723101397 diff --git a/examples/inference/yolo-python-onnx/magic.lock b/examples/inference/yolo-python-onnx/magic.lock new file mode 100644 index 0000000000..59433dc061 --- /dev/null +++ b/examples/inference/yolo-python-onnx/magic.lock @@ -0,0 +1,2220 @@ +version: 6 +environments: + default: + channels: + - url: https://conda.anaconda.org/conda-forge/ + - url: https://conda.modular.com/max-nightly/ + packages: + linux-64: + - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2025.1.31-hbcca054_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-31_h59b9bed_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-31_he106b2a_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h767d61c_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hf1ad2bd_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h767d61c_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-31_h7ac8fdf_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.29-pthreads_h94d23a6_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsentencepiece-0.2.0-h8e10757_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.49.1-hee588c1_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-h8f9b012_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022718-release.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-h2d0b736_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.1-h7b32b05_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pip-24.3.1-pyh8b19718_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.9-h9e4cc4f_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.1-py312hbf22597_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-0.2.0-hc8f76dd_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-python-0.2.0-py312hb6b8a2b_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-spm-0.2.0-h8e10757_10.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.8.2-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/wheel-0.45.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + linux-aarch64: + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h68df207_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2025.1.31-hcefe29a_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/keyutils-1.6.1-h4e544f5_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/krb5-1.21.3-h50a48e9_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h18dbdb1_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-31_h1a9f1db_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-31_hab92f65_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20250104-pl5321h976ea20_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.6.4-h5ad3122_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.4.6-he21f813_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-14.2.0-he277a41_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-14.2.0-he9431aa_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-31_h411afd4_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.4-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.29-pthreads_h9d3fd7e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.3-h44a3b7b_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsentencepiece-0.2.0-h6164ad9_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.20-h68df207_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.49.1-h5eb1b54_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022718-release.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-ha32ae93_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.1-hd08dc88_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pip-24.3.1-pyh8b19718_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.9-h1683364_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.12-5_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyzmq-26.2.1-py312h2427ae1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8382b9d_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-0.2.0-h6c1b121_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-python-0.2.0-py312h197ff68_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-spm-0.2.0-h6164ad9_10.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.8.2-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py312h52516f5_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/wheel-0.45.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zeromq-4.3.5-h5efb499_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + osx-arm64: + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2025.1.31-hf0a4a13_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_h07bc746_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-31_h10e41b3_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-31_hb3479ef_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.4-h286801f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-31_hc9a63f6_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.4-h39f12f2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.29-openmp_hf332438_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.3-h3bd63a1_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsentencepiece-0.2.0-he13a0af_10.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.1-h3f77e49_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022718-release.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.1-h81ee809_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pip-24.3.1-pyh8b19718_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.9-hc22306f_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-5_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.1-py312hf4875e0_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-0.2.0-h22a84ea_10.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-python-0.2.0-py312h155166a_10.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-spm-0.2.0-he13a0af_10.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.8.2-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/wheel-0.45.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda +packages: +- conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 + sha256: fe51de6107f9edc7aa4f786a70f4a883943bc9d39b3bb7307c04c41410990726 + md5: d7c89558ba9fa0495403155b64376d81 + arch: x86_64 + platform: linux + license: None + size: 2562 + timestamp: 1578324546067 +- conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 + build_number: 16 + sha256: fbe2c5e56a653bebb982eda4876a9178aedfc2b545f25d0ce9c4c0b508253d22 + md5: 73aaf86a425cc6e73fcf236a5a46396d + depends: + - _libgcc_mutex 0.1 conda_forge + - libgomp >=7.5.0 + constrains: + - openmp_impl 9999 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 23621 + timestamp: 1650670423406 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2 + build_number: 16 + sha256: 3702bef2f0a4d38bd8288bbe54aace623602a1343c2cfbefd3fa188e015bebf0 + md5: 6168d71addc746e8f2b8d57dfd2edcea + depends: + - libgomp >=7.5.0 + constrains: + - openmp_impl 9999 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 23712 + timestamp: 1650670790230 +- conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda + sha256: 5ced96500d945fb286c9c838e54fa759aa04a7129c59800f0846b4335cee770d + md5: 62ee74e96c5ebb0af99386de58cf9553 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: bzip2-1.0.6 + license_family: BSD + size: 252783 + timestamp: 1720974456583 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h68df207_7.conda + sha256: 2258b0b33e1cb3a9852d47557984abb6e7ea58e3d7f92706ec1f8e879290c4cb + md5: 56398c28220513b9ea13d7b450acfb20 + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: bzip2-1.0.6 + license_family: BSD + size: 189884 + timestamp: 1720974504976 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda + sha256: adfa71f158cbd872a36394c56c3568e6034aa55c623634b37a4836bd036e6b91 + md5: fc6948412dbbbe9a4c9ddbbcfe0a79ab + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: bzip2-1.0.6 + license_family: BSD + size: 122909 + timestamp: 1720974522888 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2025.1.31-hbcca054_0.conda + sha256: bf832198976d559ab44d6cdb315642655547e26d826e34da67cbee6624cda189 + md5: 19f3a56f68d2fd06c516076bff482c52 + arch: x86_64 + platform: linux + license: ISC + size: 158144 + timestamp: 1738298224464 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2025.1.31-hcefe29a_0.conda + sha256: 66c6408ee461593cfdb2d78d82e6ed74d04a04ccb51df3ef8a5f35148c9c6eec + md5: 462cb166cd2e26a396f856510a3aff67 + arch: aarch64 + platform: linux + license: ISC + size: 158290 + timestamp: 1738299057652 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2025.1.31-hf0a4a13_0.conda + sha256: 7e12816618173fe70f5c638b72adf4bfd4ddabf27794369bb17871c5bb75b9f9 + md5: 3569d6a9141adc64d2fe4797f3289e06 + arch: arm64 + platform: osx + license: ISC + size: 158425 + timestamp: 1738298167688 +- conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda + sha256: c920d23cd1fcf565031c679adb62d848af60d6fbb0edc2d50ba475cea4f0d8ab + md5: f22f4d4970e09d68a10b922cbb0408d3 + depends: + - __unix + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 84705 + timestamp: 1734858922844 +- conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + sha256: ab29d57dc70786c1269633ba3dff20288b81664d3ff8d21af995742e2bb03287 + md5: 962b9857ee8e7018c22f2776ffa0b2d7 + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 27011 + timestamp: 1733218222191 +- conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + sha256: 598951ebdb23e25e4cec4bbff0ae369cec65ead80b50bc08b441d8e54de5cf03 + md5: f4b39bf00c69f56ac01e020ebfac066c + depends: + - python >=3.9 + - zipp >=0.5 + license: Apache-2.0 + license_family: APACHE + size: 29141 + timestamp: 1737420302391 +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + sha256: 19d8bd5bb2fde910ec59e081eeb59529491995ce0d653a5209366611023a0b3a + md5: 4ebae00eae9705b0c3d6d1018a81d047 + depends: + - importlib-metadata >=4.8.3 + - jupyter_core >=4.12,!=5.0.* + - python >=3.9 + - python-dateutil >=2.8.2 + - pyzmq >=23.0 + - tornado >=6.2 + - traitlets >=5.3 + license: BSD-3-Clause + license_family: BSD + size: 106342 + timestamp: 1733441040958 +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + sha256: 732b1e8536bc22a5a174baa79842d79db2f4956d90293dd82dc1b3f6099bcccd + md5: 0a2980dada0dd7fd0998f0342308b1b1 + depends: + - __unix + - platformdirs >=2.5 + - python >=3.8 + - traitlets >=5.3 + license: BSD-3-Clause + license_family: BSD + size: 57671 + timestamp: 1727163547058 +- conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 + sha256: 150c05a6e538610ca7c43beb3a40d65c90537497a4f6a5f4d15ec0451b6f5ebb + md5: 30186d27e2c9fa62b45fb1476b7200e3 + depends: + - libgcc-ng >=10.3.0 + arch: x86_64 + platform: linux + license: LGPL-2.1-or-later + size: 117831 + timestamp: 1646151697040 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/keyutils-1.6.1-h4e544f5_0.tar.bz2 + sha256: 6d4233d97a9b38acbb26e1268bcf8c10a8e79c2aed7e5a385ec3769967e3e65b + md5: 1f24853e59c68892452ef94ddd8afd4b + depends: + - libgcc-ng >=10.3.0 + arch: aarch64 + platform: linux + license: LGPL-2.1-or-later + size: 112327 + timestamp: 1646166857935 +- conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda + sha256: 99df692f7a8a5c27cd14b5fb1374ee55e756631b9c3d659ed3ee60830249b238 + md5: 3f43953b7d3fb3aaa1d0d0723d91e368 + depends: + - keyutils >=1.6.1,<2.0a0 + - libedit >=3.1.20191231,<3.2.0a0 + - libedit >=3.1.20191231,<4.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - openssl >=3.3.1,<4.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 1370023 + timestamp: 1719463201255 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/krb5-1.21.3-h50a48e9_0.conda + sha256: 0ec272afcf7ea7fbf007e07a3b4678384b7da4047348107b2ae02630a570a815 + md5: 29c10432a2ca1472b53f299ffb2ffa37 + depends: + - keyutils >=1.6.1,<2.0a0 + - libedit >=3.1.20191231,<3.2.0a0 + - libedit >=3.1.20191231,<4.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - openssl >=3.3.1,<4.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 1474620 + timestamp: 1719463205834 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda + sha256: 4442f957c3c77d69d9da3521268cad5d54c9033f1a73f99cde0a3658937b159b + md5: c6dc8a0fdec13a0565936655c33069a1 + depends: + - __osx >=11.0 + - libcxx >=16 + - libedit >=3.1.20191231,<3.2.0a0 + - libedit >=3.1.20191231,<4.0a0 + - openssl >=3.3.1,<4.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 1155530 + timestamp: 1719463474401 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_4.conda + sha256: db73f38155d901a610b2320525b9dd3b31e4949215c870685fd92ea61b5ce472 + md5: 01f8d123c96816249efd255a31ad7712 + depends: + - __glibc >=2.17,<3.0.a0 + constrains: + - binutils_impl_linux-64 2.43 + arch: x86_64 + platform: linux + license: GPL-3.0-only + license_family: GPL + size: 671240 + timestamp: 1740155456116 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_4.conda + sha256: 016832a70b0aa97e1c4e47e23c00b0c34def679de25146736df353199f684f0d + md5: 80c9ad5e05e91bb6c0967af3880c9742 + constrains: + - binutils_impl_linux-aarch64 2.43 + arch: aarch64 + platform: linux + license: GPL-3.0-only + license_family: GPL + size: 699058 + timestamp: 1740155620594 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda + sha256: 143a586aa67d50622ef703de57b9d43f44945836d6568e0e7aa174bd8c45e0d4 + md5: 488f260ccda0afaf08acb286db439c2f + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + constrains: + - libabseil-static =20240722.0=cxx17* + - abseil-cpp =20240722.0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 1311599 + timestamp: 1736008414161 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h18dbdb1_4.conda + sha256: bb6c5fb3b8de5f90735c5252b57efb3c268ee222c755569dac18065f05147670 + md5: 633b9fe454ffea2aaf29e191d946a83b + depends: + - libgcc >=13 + - libstdcxx >=13 + constrains: + - abseil-cpp =20240722.0 + - libabseil-static =20240722.0=cxx17* + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 1334844 + timestamp: 1736008472455 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_h07bc746_4.conda + sha256: 05fa5e5e908962b9c5aba95f962e2ca81d9599c4715aebe5e4ddb72b309d1770 + md5: c2d95bd7aa8d564a9bd7eca5e571a5b3 + depends: + - __osx >=11.0 + - libcxx >=18 + constrains: + - libabseil-static =20240722.0=cxx17* + - abseil-cpp =20240722.0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 1178260 + timestamp: 1736008642885 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-31_h59b9bed_openblas.conda + build_number: 31 + sha256: 9839fc4ac0cbb0aa3b9eea520adfb57311838959222654804e58f6f2d1771db5 + md5: 728dbebd0f7a20337218beacffd37916 + depends: + - libopenblas >=0.3.29,<0.3.30.0a0 + - libopenblas >=0.3.29,<1.0a0 + constrains: + - liblapacke =3.9.0=31*_openblas + - liblapack =3.9.0=31*_openblas + - blas =2.131=openblas + - mkl <2025 + - libcblas =3.9.0=31*_openblas + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 16859 + timestamp: 1740087969120 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-31_h1a9f1db_openblas.conda + build_number: 31 + sha256: 67c9c81dd0444ecc712124034d9f74186ca82fd770b3df46b1a68564461c6a1a + md5: 48bd5bf15ccf3e409840be9caafc0ad5 + depends: + - libopenblas >=0.3.29,<0.3.30.0a0 + - libopenblas >=0.3.29,<1.0a0 + constrains: + - liblapack =3.9.0=31*_openblas + - blas =2.131=openblas + - libcblas =3.9.0=31*_openblas + - mkl <2025 + - liblapacke =3.9.0=31*_openblas + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 16915 + timestamp: 1740087911042 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-31_h10e41b3_openblas.conda + build_number: 31 + sha256: 369586e7688b59b4f92c709b99d847d66d4d095425db327dd32ee5e6ab74697f + md5: 39b053da5e7035c6592102280aa7612a + depends: + - libopenblas >=0.3.29,<0.3.30.0a0 + - libopenblas >=0.3.29,<1.0a0 + constrains: + - liblapacke =3.9.0=31*_openblas + - libcblas =3.9.0=31*_openblas + - blas =2.131=openblas + - mkl <2025 + - liblapack =3.9.0=31*_openblas + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 17123 + timestamp: 1740088119350 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-31_he106b2a_openblas.conda + build_number: 31 + sha256: ede8545011f5b208b151fe3e883eb4e31d495ab925ab7b9ce394edca846e0c0d + md5: abb32c727da370c481a1c206f5159ce9 + depends: + - libblas 3.9.0 31_h59b9bed_openblas + constrains: + - liblapacke =3.9.0=31*_openblas + - liblapack =3.9.0=31*_openblas + - blas =2.131=openblas + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 16796 + timestamp: 1740087984429 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-31_hab92f65_openblas.conda + build_number: 31 + sha256: f0457a1d2982f0a28bfbadaa02621677c324e88f7c8198c24fb3e3214c468dba + md5: 6b81dbae56a519f1ec2f25e0ee2f4334 + depends: + - libblas 3.9.0 31_h1a9f1db_openblas + constrains: + - liblapack =3.9.0=31*_openblas + - blas =2.131=openblas + - liblapacke =3.9.0=31*_openblas + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 16824 + timestamp: 1740087917500 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-31_hb3479ef_openblas.conda + build_number: 31 + sha256: f237486cc9118d09d0f3ff8820280de34365f98ee7b7dc5ab923b04c7cbf25a5 + md5: 7353c2bf0e90834cb70545671996d871 + depends: + - libblas 3.9.0 31_h10e41b3_openblas + constrains: + - liblapacke =3.9.0=31*_openblas + - blas =2.131=openblas + - liblapack =3.9.0=31*_openblas + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 17032 + timestamp: 1740088127097 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda + sha256: 776092346da87a2a23502e14d91eb0c32699c4a1522b7331537bd1c3751dcff5 + md5: 5b3e1610ff8bd5443476b91d618f5b77 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + size: 523505 + timestamp: 1736877862502 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda + sha256: d789471216e7aba3c184cd054ed61ce3f6dac6f87a50ec69291b9297f8c18724 + md5: c277e0a4d549b03ac1e9d6cbbe3d017b + depends: + - ncurses + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - ncurses >=6.5,<7.0a0 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + size: 134676 + timestamp: 1738479519902 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20250104-pl5321h976ea20_0.conda + sha256: c0b27546aa3a23d47919226b3a1635fccdb4f24b94e72e206a751b33f46fd8d6 + md5: fb640d776fc92b682a14e001980825b1 + depends: + - ncurses + - libgcc >=13 + - ncurses >=6.5,<7.0a0 + arch: aarch64 + platform: linux + license: BSD-2-Clause + license_family: BSD + size: 148125 + timestamp: 1738479808948 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda + sha256: 66aa216a403de0bb0c1340a88d1a06adaff66bae2cfd196731aa24db9859d631 + md5: 44083d2d2c2025afca315c7a172eab2b + depends: + - ncurses + - __osx >=11.0 + - ncurses >=6.5,<7.0a0 + arch: arm64 + platform: osx + license: BSD-2-Clause + license_family: BSD + size: 107691 + timestamp: 1738479560845 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda + sha256: 56541b98447b58e52d824bd59d6382d609e11de1f8adf20b23143e353d2b8d26 + md5: db833e03127376d461e1e13e76f09b6c + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + constrains: + - expat 2.6.4.* + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 73304 + timestamp: 1730967041968 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.6.4-h5ad3122_0.conda + sha256: f42e758009ba9db90d1fe7992bc3e60d0c52f71fb20923375d2c44ae69a5a2b3 + md5: f1b3fab36861b3ce945a13f0dfdfc688 + depends: + - libgcc >=13 + constrains: + - expat 2.6.4.* + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 72345 + timestamp: 1730967203789 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.4-h286801f_0.conda + sha256: e42ab5ace927ee7c84e3f0f7d813671e1cf3529f5f06ee5899606630498c2745 + md5: 38d2656dd914feb0cab8c629370768bf + depends: + - __osx >=11.0 + constrains: + - expat 2.6.4.* + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 64693 + timestamp: 1730967175868 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_0.conda + sha256: 67a6c95e33ebc763c1adc3455b9a9ecde901850eb2fceb8e646cc05ef3a663da + md5: e3eb7806380bc8bcecba6d749ad5f026 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 53415 + timestamp: 1739260413716 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.4.6-he21f813_0.conda + sha256: 41568066beefe7b319ff27d85952242e5b77fb753d705b8716041959e17c35c2 + md5: 966084fccf3ad62a3160666cda869f28 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 51513 + timestamp: 1739260449772 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 + sha256: 41b3d13efb775e340e4dba549ab5c029611ea6918703096b2eaa9c015c0750ca + md5: 086914b672be056eb70fd4285b6783b6 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 39020 + timestamp: 1636488587153 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h767d61c_2.conda + sha256: 3a572d031cb86deb541d15c1875aaa097baefc0c580b54dc61f5edab99215792 + md5: ef504d1acbd74b7cc6849ef8af47dd03 + depends: + - __glibc >=2.17,<3.0.a0 + - _openmp_mutex >=4.5 + constrains: + - libgomp 14.2.0 h767d61c_2 + - libgcc-ng ==14.2.0=*_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 847885 + timestamp: 1740240653082 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-14.2.0-he277a41_2.conda + sha256: a57f7f9ba2a12f56eafdcd25b6d75f7be10b8fc1a802a58b76a77ca8c66f4503 + md5: 6b4268a60b10f29257b51b9b67ff8d76 + depends: + - _openmp_mutex >=4.5 + constrains: + - libgcc-ng ==14.2.0=*_2 + - libgomp 14.2.0 he277a41_2 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 535507 + timestamp: 1740241069780 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_2.conda + sha256: fb7558c328b38b2f9d2e412c48da7890e7721ba018d733ebdfea57280df01904 + md5: a2222a6ada71fb478682efe483ce0f92 + depends: + - libgcc 14.2.0 h767d61c_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 53758 + timestamp: 1740240660904 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-14.2.0-he9431aa_2.conda + sha256: 9647f75cddc18b07eebe6e1f21500eed50a6af2c43c84e831b4c7a597e10d226 + md5: 692c2bb75f32cfafb6799cf6d1c5d0e0 + depends: + - libgcc 14.2.0 he277a41_2 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 53622 + timestamp: 1740241074834 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_2.conda + sha256: e05263e8960da03c341650f2a3ffa4ccae4e111cb198e8933a2908125459e5a6 + md5: fb54c4ea68b460c278d26eea89cfbcc3 + depends: + - libgfortran5 14.2.0 hf1ad2bd_2 + constrains: + - libgfortran-ng ==14.2.0=*_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 53733 + timestamp: 1740240690977 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_2.conda + sha256: 996d3c0505301901a7ab23b5e7daad21635d1c065240bb0f4faf7e4f75d7f49d + md5: d8b9d9dc0c8cd97d375b48e55947ba70 + depends: + - libgfortran5 14.2.0 hb6113d0_2 + constrains: + - libgfortran-ng ==14.2.0=*_2 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 53611 + timestamp: 1740241100147 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda + sha256: 44e541b4821c96b28b27fef5630883a60ce4fee91fd9c79f25a199f8f73f337b + md5: 4a55d9e169114b2b90d3ec4604cd7bbf + depends: + - libgfortran5 13.2.0 hf226fd6_3 + arch: arm64 + platform: osx + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 110233 + timestamp: 1707330749033 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hf1ad2bd_2.conda + sha256: c17b7cf3073a1f4e1f34d50872934fa326346e104d3c445abc1e62481ad6085c + md5: 556a4fdfac7287d349b8f09aba899693 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14.2.0 + constrains: + - libgfortran 14.2.0 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 1461978 + timestamp: 1740240671964 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_2.conda + sha256: 7b9e1d3666a00e5a52e5d43c003bd1c73ab472804be513c070aaedca9c4c2a9a + md5: cd754566661513808ef2408c4ab99a2f + depends: + - libgcc >=14.2.0 + constrains: + - libgfortran 14.2.0 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 1100765 + timestamp: 1740241083241 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda + sha256: bafc679eedb468a86aa4636061c55966186399ee0a04b605920d208d97ac579a + md5: 66ac81d54e95c534ae488726c1f698ea + depends: + - llvm-openmp >=8.0.0 + constrains: + - libgfortran 5.0.0 13_2_0_*_3 + arch: arm64 + platform: osx + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 997381 + timestamp: 1707330687590 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h767d61c_2.conda + sha256: 1a3130e0b9267e781b89399580f3163632d59fe5b0142900d63052ab1a53490e + md5: 06d02030237f4d5b3d9a7e7d348fe3c6 + depends: + - __glibc >=2.17,<3.0.a0 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 459862 + timestamp: 1740240588123 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_2.conda + sha256: 4e303711fb7413bf98995beac58e731073099d7a669a3b81e49330ca8da05174 + md5: b11c09d9463daf4cae492d29806b1889 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 462783 + timestamp: 1740241005079 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-31_h7ac8fdf_openblas.conda + build_number: 31 + sha256: f583661921456e798aba10972a8abbd9d33571c655c1f66eff450edc9cbefcf3 + md5: 452b98eafe050ecff932f0ec832dd03f + depends: + - libblas 3.9.0 31_h59b9bed_openblas + constrains: + - libcblas =3.9.0=31*_openblas + - liblapacke =3.9.0=31*_openblas + - blas =2.131=openblas + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 16790 + timestamp: 1740087997375 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-31_h411afd4_openblas.conda + build_number: 31 + sha256: 27613828ff6fb258b2e58802617df549f00089660ea8ab6c55c68f042c570162 + md5: 41dbff5eb805a75c120a7b7a1c744dc2 + depends: + - libblas 3.9.0 31_h1a9f1db_openblas + constrains: + - blas =2.131=openblas + - libcblas =3.9.0=31*_openblas + - liblapacke =3.9.0=31*_openblas + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 16845 + timestamp: 1740087923843 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-31_hc9a63f6_openblas.conda + build_number: 31 + sha256: fe55b9aaf82c6c0192c3d1fcc9b8e884f97492dda9a8de5dae29334b3135fab5 + md5: ff57a55a2cbce171ef5707fb463caf19 + depends: + - libblas 3.9.0 31_h10e41b3_openblas + constrains: + - liblapacke =3.9.0=31*_openblas + - libcblas =3.9.0=31*_openblas + - blas =2.131=openblas + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 17033 + timestamp: 1740088134988 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda + sha256: cad52e10319ca4585bc37f0bc7cce99ec7c15dc9168e42ccb96b741b0a27db3f + md5: 42d5b6a0f30d3c10cd88cb8584fda1cb + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: 0BSD + size: 111357 + timestamp: 1738525339684 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.4-h86ecc28_0.conda + sha256: 96413664f0fade54a4931940d18749cfc8e6308349dbb0cb83adb2394ca1f730 + md5: b88244e0a115cc34f7fbca9b11248e76 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: 0BSD + size: 124197 + timestamp: 1738528201520 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.4-h39f12f2_0.conda + sha256: 560c59d3834cc652a84fb45531bd335ad06e271b34ebc216e380a89798fe8e2c + md5: e3fd1f8320a100f2b210e690a57cd615 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: 0BSD + size: 98945 + timestamp: 1738525462560 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda + sha256: 26d77a3bb4dceeedc2a41bd688564fe71bf2d149fdcf117049970bc02ff1add6 + md5: 30fd6e37fe21f86f4bd26d6ee73eeec7 + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: LGPL-2.1-only + license_family: GPL + size: 33408 + timestamp: 1697359010159 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda + sha256: fd18c2b75d7411096428d36a70b36b1a17e31f7b8956b6905d145792d49e97f8 + md5: c14f32510f694e3185704d89967ec422 + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: LGPL-2.1-only + license_family: GPL + size: 34501 + timestamp: 1697358973269 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.29-pthreads_h94d23a6_0.conda + sha256: cc5389ea254f111ef17a53df75e8e5209ef2ea6117e3f8aced88b5a8e51f11c4 + md5: 0a4d0252248ef9a0f88f2ba8b8a08e12 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libgfortran + - libgfortran5 >=14.2.0 + constrains: + - openblas >=0.3.29,<0.3.30.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 5919288 + timestamp: 1739825731827 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.29-pthreads_h9d3fd7e_0.conda + sha256: 3a2ccf4c9098cd18a636e9b7fff947fdeb4962bcfb75c9d6fd80b8c50caf6a3c + md5: a99e2bfcb1ad6362544c71281eb617e9 + depends: + - libgcc >=14 + - libgfortran + - libgfortran5 >=14.2.0 + constrains: + - openblas >=0.3.29,<0.3.30.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 4801657 + timestamp: 1739825308974 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.29-openmp_hf332438_0.conda + sha256: 8989d9e01ec8c9b2d48dbb5efbe70b356fcd15990fb53b64fcb84798982c0343 + md5: 0cd1148c68f09027ee0b0f0179f77c30 + depends: + - __osx >=11.0 + - libgfortran 5.* + - libgfortran5 >=13.2.0 + - llvm-openmp >=18.1.8 + constrains: + - openblas >=0.3.29,<0.3.30.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 4168442 + timestamp: 1739825514918 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda + sha256: 51125ebb8b7152e4a4e69fd2398489c4ec8473195c27cde3cbdf1cb6d18c5493 + md5: d8703f1ffe5a06356f06467f1d0b9464 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 2960815 + timestamp: 1735577210663 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.3-h44a3b7b_1.conda + sha256: ecb69f2b1668e784b41ba667493be846662d5ef702bef64fb2e013bb1364cdc4 + md5: 68f807f7cc13951652bbe048253fd405 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 2788074 + timestamp: 1735576315676 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.3-h3bd63a1_1.conda + sha256: f58a16b13ad53346903c833e266f83c3d770a43a432659b98710aed85ca885e7 + md5: bdbfea4cf45ae36652c6bbcc2e7ebe91 + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=18 + - libzlib >=1.3.1,<2.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 2271580 + timestamp: 1735576361997 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsentencepiece-0.2.0-h8e10757_10.conda + sha256: dc399e0f04a09f8c1807c3b36e578eb81f81891c0ddf21de9c1fb9f048ce4031 + md5: 4f43dbcfacd3cc9a183dd3a48b94d3c0 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 823649 + timestamp: 1735627841126 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsentencepiece-0.2.0-h6164ad9_10.conda + sha256: 57074803772f65d4075b7d6dc17ff5aa40ec3a30109fa4225ca16911504c4a8b + md5: a7a192edc9cfba26a27df3283203e6a1 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 800865 + timestamp: 1735627982895 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsentencepiece-0.2.0-he13a0af_10.conda + sha256: 3347a8840d085ce1661928e736229f068d56c84312fbed90886e059023d85611 + md5: 1f67e5e30edd56e0a0bf6df6bb711a9d + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 754657 + timestamp: 1735628030895 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda + sha256: 0105bd108f19ea8e6a78d2d994a6d4a8db16d19a41212070d2d1d48a63c34161 + md5: a587892d3c13b6621a6091be690dbca2 + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: ISC + size: 205978 + timestamp: 1716828628198 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.20-h68df207_0.conda + sha256: 448df5ea3c5cf1af785aad46858d7a5be0522f4234a4dc9bb764f4d11ff3b981 + md5: 2e4a8f23bebdcb85ca8e5a0fbe75666a + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: ISC + size: 177394 + timestamp: 1716828514515 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda + sha256: fade8223e1e1004367d7101dd17261003b60aa576df6d7802191f8972f7470b1 + md5: a7ce36e284c5faaf93c220dfc39e3abd + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: ISC + size: 164972 + timestamp: 1716828607917 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.49.1-hee588c1_1.conda + sha256: 7a09eef804ef7cf4d88215c2297eabb72af8ad0bd5b012060111c289f14bbe7d + md5: 73cea06049cc4174578b432320a003b8 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux + license: Unlicense + size: 915956 + timestamp: 1739953155793 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.49.1-h5eb1b54_1.conda + sha256: 920fb3b7d3b873babf79a3e392cc82d43b8bd02a573ccaff34219efb5cf7b51e + md5: 150d64241fa27d9d35a7f421ca968a6c + depends: + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + arch: aarch64 + platform: linux + license: Unlicense + size: 915118 + timestamp: 1739953101699 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.1-h3f77e49_1.conda + sha256: 266639fb10ca92287961574b0b4d6031fa40dd9d723d64a0fcb08513a24dab03 + md5: c83357a21092bd952933c36c5cb4f4d6 + depends: + - __osx >=11.0 + - libzlib >=1.3.1,<2.0a0 + arch: arm64 + platform: osx + license: Unlicense + size: 898767 + timestamp: 1739953312379 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-h8f9b012_2.conda + sha256: 8f5bd92e4a24e1d35ba015c5252e8f818898478cb3bc50bd8b12ab54707dc4da + md5: a78c856b6dc6bf4ea8daeb9beaaa3fb0 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc 14.2.0 h767d61c_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 3884556 + timestamp: 1740240685253 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_2.conda + sha256: c30a74bc996013907f6d9f344da007c26d98ef9a0831151cd50aece3125c45d5 + md5: eadee2cda99697e29411c1013c187b92 + depends: + - libgcc 14.2.0 he277a41_2 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 3810779 + timestamp: 1740241094774 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_2.conda + sha256: e86f38b007cf97cc2c67cd519f2de12a313c4ee3f5ef11652ad08932a5e34189 + md5: c75da67f045c2627f59e6fcb5f4e3a9b + depends: + - libstdcxx 14.2.0 h8f9b012_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 53830 + timestamp: 1740240722530 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_2.conda + sha256: 0107886ead6f255956d8e520f8dff260f9ab3d0d51512f18c52710c406e4b2df + md5: c934c1fddad582fcc385b608eb06a70c + depends: + - libstdcxx 14.2.0 h3f4de04_2 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 53715 + timestamp: 1740241126343 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda + sha256: 787eb542f055a2b3de553614b25f09eefb0a0931b0c87dbcce6efdfd92f04f18 + md5: 40b61aab5c7ba9ff276c41cfffe6b80b + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 33601 + timestamp: 1680112270483 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda + sha256: 616277b0c5f7616c2cdf36f6c316ea3f9aa5bb35f2d4476a349ab58b9b91675f + md5: 000e30b09db0b7c775b21695dff30969 + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 35720 + timestamp: 1680113474501 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda + sha256: 6ae68e0b86423ef188196fff6207ed0c8195dd84273cb5623b85aa08033a410c + md5: 5aa797f8787fe7a17d1b0821485b5adc + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: LGPL-2.1-or-later + size: 100393 + timestamp: 1702724383534 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda + sha256: 6b46c397644091b8a26a3048636d10b989b1bf266d4be5e9474bf763f828f41f + md5: b4df5d7d4b63579d081fd3a4cf99740e + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: LGPL-2.1-or-later + size: 114269 + timestamp: 1702724369203 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda + sha256: d4bfe88d7cb447768e31650f06257995601f89076080e76df55e3112d4e47dc4 + md5: edb0dca6bc32e4f4789199455a1dbeb8 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + constrains: + - zlib 1.3.1 *_2 + arch: x86_64 + platform: linux + license: Zlib + license_family: Other + size: 60963 + timestamp: 1727963148474 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda + sha256: 5a2c1eeef69342e88a98d1d95bff1603727ab1ff4ee0e421522acd8813439b84 + md5: 08aad7cbe9f5a6b460d0976076b6ae64 + depends: + - libgcc >=13 + constrains: + - zlib 1.3.1 *_2 + arch: aarch64 + platform: linux + license: Zlib + license_family: Other + size: 66657 + timestamp: 1727963199518 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda + sha256: ce34669eadaba351cd54910743e6a2261b67009624dbc7daeeafdef93616711b + md5: 369964e85dc26bfe78f41399b366c435 + depends: + - __osx >=11.0 + constrains: + - zlib 1.3.1 *_2 + arch: arm64 + platform: osx + license: Zlib + license_family: Other + size: 46438 + timestamp: 1727963202283 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda + sha256: b92a669f2059874ebdcb69041b6c243d68ffc3fb356ac1339cec44aeb27245d7 + md5: c4d54bfd3817313ce758aa76283b118d + depends: + - __osx >=11.0 + constrains: + - openmp 19.1.7|19.1.7.* + arch: arm64 + platform: osx + license: Apache-2.0 WITH LLVM-exception + license_family: APACHE + size: 280830 + timestamp: 1736986295869 +- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022718-release.conda + noarch: python + sha256: f3dcb14fed5470c0fc521542cbd2f1c56ca7e46d560f46176b8f926198cb3cbd + md5: 01fe5e0cf46c84a6345e323ad1316764 + depends: + - max-core ==25.2.0.dev2025022718 release + - max-python ==25.2.0.dev2025022718 release + - mojo-jupyter ==25.2.0.dev2025022718 release + - mblack ==25.2.0.dev2025022718 release + license: LicenseRef-Modular-Proprietary + size: 9905 + timestamp: 1740680254354 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022718-release.conda + sha256: 847d5767109a305d7bcad4ac29248a74a384034692934a0c54b00a590c27094a + md5: fc5a9ae36c7805979bd58ca55a25066f + depends: + - mblack ==25.2.0.dev2025022718 release + license: LicenseRef-Modular-Proprietary + size: 249811868 + timestamp: 1740680254354 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022718-release.conda + sha256: 250c35ecccd302e6c7de836ac200a5ece92e74508c2590c585d8803d488fd650 + md5: d88728b468c85902512a0f9b99251035 + depends: + - mblack ==25.2.0.dev2025022718 release + license: LicenseRef-Modular-Proprietary + size: 252108573 + timestamp: 1740680207793 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022718-release.conda + sha256: fb28d9e61aa507ea84b470082d3dc96844a24fe672d4e4c57e832655c5d0a202 + md5: dd8734453f7276a258f3351cc5c506c3 + depends: + - mblack ==25.2.0.dev2025022718 release + license: LicenseRef-Modular-Proprietary + size: 217273450 + timestamp: 1740681819160 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022718-release.conda + noarch: python + sha256: 831b4d62f66f0083321121c6ba25dedab3ee41d5e9f19d9752969592214af398 + md5: f828ace91aa057e4774e84ad459adccf + depends: + - max-core ==25.2.0.dev2025022718 release + - click >=8.0.0 + - numpy >=1.18,<2.0 + - sentencepiece >=0.2.0 + - tqdm >=4.67.1 + constrains: + - aiohttp >=3.11.12 + - fastapi >=0.114.2 + - gguf >=0.14.0 + - hf-transfer >=0.1.9 + - httpx >=0.28.1 + - huggingface_hub >=0.24.0 + - nvitop >=1.4.1 + - opentelemetry-api >=1.29.0 + - opentelemetry-exporter-otlp-proto-http >=1.27.0 + - opentelemetry-exporter-prometheus <1.0.0 + - opentelemetry-sdk >=1.29.0,<2.0 + - pillow >=10.3.0 + - prometheus_client >=0.21.0 + - prometheus-async >=22.2.0 + - psutil >=6.1.1 + - pydantic + - pydantic-settings >=2.7.1 + - pyinstrument >=5.0.1 + - python-json-logger >=2.0.7 + - requests >=2.32.3 + - rich >=13.9.4 + - safetensors >=0.5.2 + - sentinel >=0.3.0 + - sse-starlette >=2.1.2 + - tokenizers >=0.19.0 + - pytorch >=2.2.2,<=2.5.1 + - transformers >=4.40.1 + - uvicorn >=0.34.0 + - uvloop >=0.21.0 + - xgrammar ==0.1.11 + license: LicenseRef-Modular-Proprietary + size: 123584411 + timestamp: 1740680254354 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022718-release.conda + noarch: python + sha256: b9e5755b7bf6314a37a90ef0250c93f5e7c693954d7a6389a97ab9ef06e23cc3 + md5: bfd2e752d0fc9516b78a17169ce9cc78 + depends: + - max-core ==25.2.0.dev2025022718 release + - click >=8.0.0 + - numpy >=1.18,<2.0 + - sentencepiece >=0.2.0 + - tqdm >=4.67.1 + constrains: + - aiohttp >=3.11.12 + - fastapi >=0.114.2 + - gguf >=0.14.0 + - hf-transfer >=0.1.9 + - httpx >=0.28.1 + - huggingface_hub >=0.24.0 + - nvitop >=1.4.1 + - opentelemetry-api >=1.29.0 + - opentelemetry-exporter-otlp-proto-http >=1.27.0 + - opentelemetry-exporter-prometheus <1.0.0 + - opentelemetry-sdk >=1.29.0,<2.0 + - pillow >=10.3.0 + - prometheus_client >=0.21.0 + - prometheus-async >=22.2.0 + - psutil >=6.1.1 + - pydantic + - pydantic-settings >=2.7.1 + - pyinstrument >=5.0.1 + - python-json-logger >=2.0.7 + - requests >=2.32.3 + - rich >=13.9.4 + - safetensors >=0.5.2 + - sentinel >=0.3.0 + - sse-starlette >=2.1.2 + - tokenizers >=0.19.0 + - pytorch >=2.2.2,<=2.5.1 + - transformers >=4.40.1 + - uvicorn >=0.34.0 + - uvloop >=0.21.0 + - xgrammar ==0.1.11 + license: LicenseRef-Modular-Proprietary + size: 126004454 + timestamp: 1740680207793 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022718-release.conda + noarch: python + sha256: 7da9f4655082bb64c2b0cc996ffefa0ce5c49744854ed77a9b0d000e27cf5a55 + md5: b16d498a148aa61dca2a6bfec5cb8e46 + depends: + - max-core ==25.2.0.dev2025022718 release + - click >=8.0.0 + - numpy >=1.18,<2.0 + - sentencepiece >=0.2.0 + - tqdm >=4.67.1 + constrains: + - aiohttp >=3.11.12 + - fastapi >=0.114.2 + - gguf >=0.14.0 + - hf-transfer >=0.1.9 + - httpx >=0.28.1 + - huggingface_hub >=0.24.0 + - nvitop >=1.4.1 + - opentelemetry-api >=1.29.0 + - opentelemetry-exporter-otlp-proto-http >=1.27.0 + - opentelemetry-exporter-prometheus <1.0.0 + - opentelemetry-sdk >=1.29.0,<2.0 + - pillow >=10.3.0 + - prometheus_client >=0.21.0 + - prometheus-async >=22.2.0 + - psutil >=6.1.1 + - pydantic + - pydantic-settings >=2.7.1 + - pyinstrument >=5.0.1 + - python-json-logger >=2.0.7 + - requests >=2.32.3 + - rich >=13.9.4 + - safetensors >=0.5.2 + - sentinel >=0.3.0 + - sse-starlette >=2.1.2 + - tokenizers >=0.19.0 + - pytorch >=2.2.2,<=2.5.1 + - transformers >=4.40.1 + - uvicorn >=0.34.0 + - uvloop >=0.21.0 + - xgrammar ==0.1.11 + license: LicenseRef-Modular-Proprietary + size: 112658409 + timestamp: 1740681819160 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022718-release.conda + noarch: python + sha256: ff042a8abfed0e2e36b207e3d4f59a2b4577dea7f099b08d1aaef128ab796f09 + md5: 719ca7123d53415adcdd7f0cb8396c51 + depends: + - python >=3.9,<3.13 + - click >=8.0.0 + - mypy_extensions >=0.4.3 + - packaging >=22.0 + - pathspec >=0.9.0 + - platformdirs >=2 + - typing_extensions >=v4.12.2 + - python + license: MIT + size: 130852 + timestamp: 1740680254353 +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022718-release.conda + noarch: python + sha256: 19c33e23b27e240fee0b2a1d56921802ac88558dc2da417837cd590175561e16 + md5: 6b8d00b15817db11e026f824f7f0ba14 + depends: + - max-core ==25.2.0.dev2025022718 release + - python >=3.9,<3.13 + - jupyter_client >=8.6.2,<8.7 + - python + license: LicenseRef-Modular-Proprietary + size: 22981 + timestamp: 1740680254354 +- conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda + sha256: 1895f47b7d68581a6facde5cb13ab8c2764c2e53a76bd746f8f98910dc4e08fe + md5: 29097e7ea634a45cc5386b95cac6568f + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 10854 + timestamp: 1733230986902 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda + sha256: 3fde293232fa3fca98635e1167de6b7c7fda83caf24b9d6c91ec9eefb4f4d586 + md5: 47e340acb35de30501a76c7c799c41d7 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: X11 AND BSD-3-Clause + size: 891641 + timestamp: 1738195959188 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-ha32ae93_3.conda + sha256: 91cfb655a68b0353b2833521dc919188db3d8a7f4c64bea2c6a7557b24747468 + md5: 182afabe009dc78d8b73100255ee6868 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: X11 AND BSD-3-Clause + size: 926034 + timestamp: 1738196018799 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda + sha256: 2827ada40e8d9ca69a153a45f7fd14f32b2ead7045d3bbb5d10964898fe65733 + md5: 068d497125e4bf8a66bf707254fff5ae + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: X11 AND BSD-3-Clause + size: 797030 + timestamp: 1738196177597 +- conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda + sha256: fe3459c75cf84dcef6ef14efcc4adb0ade66038ddd27cadb894f34f4797687d8 + md5: d8285bea2a350f63fab23bf460221f3f + depends: + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - libgcc-ng >=12 + - liblapack >=3.9.0,<4.0a0 + - libstdcxx-ng >=12 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - numpy-base <0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 7484186 + timestamp: 1707225809722 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda + sha256: 23767677a7790bee5457d5e75ebd508b9a31c5354216f4310dd1acfca3f7a6f9 + md5: 9cebf5a06cb87d4569cd68df887af476 + depends: + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - libgcc-ng >=12 + - liblapack >=3.9.0,<4.0a0 + - libstdcxx-ng >=12 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - numpy-base <0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 6614296 + timestamp: 1707225994762 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda + sha256: c8841d6d6f61fd70ca80682efbab6bdb8606dc77c68d8acabfbd7c222054f518 + md5: d83fc83d589e2625a3451c9a7e21047c + depends: + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - libcxx >=16 + - liblapack >=3.9.0,<4.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - numpy-base <0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 6073136 + timestamp: 1707226249608 +- conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.1-h7b32b05_0.conda + sha256: cbf62df3c79a5c2d113247ddea5658e9ff3697b6e741c210656e239ecaf1768f + md5: 41adf927e746dc75ecf0ef841c454e48 + depends: + - __glibc >=2.17,<3.0.a0 + - ca-certificates + - libgcc >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 2939306 + timestamp: 1739301879343 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.1-hd08dc88_0.conda + sha256: d80b52b56b2206053968270069616868cbeb289ef855cf1584b1bb0fef61b37c + md5: 09036190605c57eaecf01218e0e9542d + depends: + - ca-certificates + - libgcc >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 3476570 + timestamp: 1739303256089 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.1-h81ee809_0.conda + sha256: 4f8e2389e1b711b44182a075516d02c80fa7a3a7e25a71ff1b5ace9eae57a17a + md5: 75f9f0c7b1740017e2db83a53ab9a28e + depends: + - __osx >=11.0 + - ca-certificates + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 2934522 + timestamp: 1739301896733 +- conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + sha256: da157b19bcd398b9804c5c52fc000fcb8ab0525bdb9c70f95beaa0bb42f85af1 + md5: 3bfed7e6228ebf2f7b9eaa47f1b4e2aa + depends: + - python >=3.8 + license: Apache-2.0 + license_family: APACHE + size: 60164 + timestamp: 1733203368787 +- conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + sha256: 9f64009cdf5b8e529995f18e03665b03f5d07c0b17445b8badef45bde76249ee + md5: 617f15191456cc6a13db418a275435e5 + depends: + - python >=3.9 + license: MPL-2.0 + license_family: MOZILLA + size: 41075 + timestamp: 1733233471940 +- conda: https://conda.anaconda.org/conda-forge/noarch/pip-24.3.1-pyh8b19718_2.conda + sha256: da8c8888de10c1e4234ebcaa1550ac2b4b5408ac20f093fe641e4bc8c9c9f3eb + md5: 04e691b9fadd93a8a9fad87a81d4fd8f + depends: + - python >=3.9,<3.13.0a0 + - setuptools + - wheel + license: MIT + license_family: MIT + size: 1245116 + timestamp: 1734466348103 +- conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + sha256: bb50f6499e8bc1d1a26f17716c97984671121608dc0c3ecd34858112bce59a27 + md5: 577852c7e53901ddccc7e6a9959ddebe + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 20448 + timestamp: 1733232756001 +- conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.9-h9e4cc4f_0_cpython.conda + sha256: 64fed5178f1e9c8ac0f572ac0ce37955f5dee7b2bcac665202bc14f1f7dd618a + md5: 5665f0079432f8848079c811cdb537d5 + depends: + - __glibc >=2.17,<3.0.a0 + - bzip2 >=1.0.8,<2.0a0 + - ld_impl_linux-64 >=2.36.1 + - libexpat >=2.6.4,<3.0a0 + - libffi >=3.4,<4.0a0 + - libgcc >=13 + - liblzma >=5.6.4,<6.0a0 + - libnsl >=2.0.1,<2.1.0a0 + - libsqlite >=3.48.0,<4.0a0 + - libuuid >=2.38.1,<3.0a0 + - libxcrypt >=4.4.36 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.4.1,<4.0a0 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + constrains: + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Python-2.0 + size: 31581682 + timestamp: 1739521496324 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.9-h1683364_0_cpython.conda + sha256: 0366f38918bceda8ff5917d7bbe1cea2bc8b6c74e7245eb0e4b0d3c2d37f76cf + md5: 2e7ad70254455e0508adabff10218512 + depends: + - bzip2 >=1.0.8,<2.0a0 + - ld_impl_linux-aarch64 >=2.36.1 + - libexpat >=2.6.4,<3.0a0 + - libffi >=3.4,<4.0a0 + - libgcc >=13 + - liblzma >=5.6.4,<6.0a0 + - libnsl >=2.0.1,<2.1.0a0 + - libsqlite >=3.48.0,<4.0a0 + - libuuid >=2.38.1,<3.0a0 + - libxcrypt >=4.4.36 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.4.1,<4.0a0 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + constrains: + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Python-2.0 + size: 13804161 + timestamp: 1739519531794 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.9-hc22306f_0_cpython.conda + sha256: cbf81a78d3ca6e663e827523e6ddbc28369cac488da047a28f83875eb52fe5f6 + md5: 1d105a6c46a753e3c0bab54a1ad24063 + depends: + - __osx >=11.0 + - bzip2 >=1.0.8,<2.0a0 + - libexpat >=2.6.4,<3.0a0 + - libffi >=3.4,<4.0a0 + - liblzma >=5.6.4,<6.0a0 + - libsqlite >=3.48.0,<4.0a0 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.4.1,<4.0a0 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + constrains: + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Python-2.0 + size: 12947786 + timestamp: 1739520092196 +- conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + sha256: a50052536f1ef8516ed11a844f9413661829aa083304dc624c5925298d078d79 + md5: 5ba79d7c71f03c678c8ead841f347d6e + depends: + - python >=3.9 + - six >=1.5 + license: Apache-2.0 + license_family: APACHE + size: 222505 + timestamp: 1733215763718 +- conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda + build_number: 5 + sha256: d10e93d759931ffb6372b45d65ff34d95c6000c61a07e298d162a3bc2accebb0 + md5: 0424ae29b104430108f5218a66db7260 + constrains: + - python 3.12.* *_cpython + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 6238 + timestamp: 1723823388266 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.12-5_cp312.conda + build_number: 5 + sha256: 5ccdad9981753cc4a2d126e356673a21c0cd5b34e209cb8d476a3947d4ad9b39 + md5: 62b20f305498284a07dc6c45fd0e5c87 + constrains: + - python 3.12.* *_cpython + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 6329 + timestamp: 1723823366253 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-5_cp312.conda + build_number: 5 + sha256: 49d624e4b809c799d2bf257b22c23cf3fc4460f5570d9a58e7ad86350aeaa1f4 + md5: b76f9b1c862128e56ac7aa8cd2333de9 + constrains: + - python 3.12.* *_cpython + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 6278 + timestamp: 1723823099686 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.1-py312hbf22597_0.conda + sha256: 90ec0da0317d3d76990a40c61e1709ef859dd3d8c63838bad2814f46a63c8a2e + md5: 7cec8d0dac15a2d9fea8e49879aa779d + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libsodium >=1.0.20,<1.0.21.0a0 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - zeromq >=4.3.5,<4.4.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 382698 + timestamp: 1738271121975 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyzmq-26.2.1-py312h2427ae1_0.conda + sha256: 9558f9330093e5c21b7c04e2e212e19b9b88ad9c808315f12c0765b244018a09 + md5: 0520da8de6870d8ff63e818e927d1524 + depends: + - libgcc >=13 + - libsodium >=1.0.20,<1.0.21.0a0 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - zeromq >=4.3.5,<4.4.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 375156 + timestamp: 1738273130727 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.1-py312hf4875e0_0.conda + sha256: 70d398b334668dc597d33e27847ede1b0829a639b9c91ee845355e52c86c2293 + md5: bfbefdb140b546a80827ff7c9d5ac7b8 + depends: + - __osx >=11.0 + - libcxx >=18 + - libsodium >=1.0.20,<1.0.21.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - zeromq >=4.3.5,<4.4.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 364649 + timestamp: 1738271263898 +- conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda + sha256: 2d6d0c026902561ed77cd646b5021aef2d4db22e57a5b0178dfc669231e06d2c + md5: 283b96675859b20a825f8fa30f311446 + depends: + - libgcc >=13 + - ncurses >=6.5,<7.0a0 + arch: x86_64 + platform: linux + license: GPL-3.0-only + license_family: GPL + size: 282480 + timestamp: 1740379431762 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8382b9d_2.conda + sha256: 54bed3a3041befaa9f5acde4a37b1a02f44705b7796689574bcf9d7beaad2959 + md5: c0f08fc2737967edde1a272d4bf41ed9 + depends: + - libgcc >=13 + - ncurses >=6.5,<7.0a0 + arch: aarch64 + platform: linux + license: GPL-3.0-only + license_family: GPL + size: 291806 + timestamp: 1740380591358 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda + sha256: 7db04684d3904f6151eff8673270922d31da1eea7fa73254d01c437f49702e34 + md5: 63ef3f6e6d6d5c589e64f11263dc5676 + depends: + - ncurses >=6.5,<7.0a0 + arch: arm64 + platform: osx + license: GPL-3.0-only + license_family: GPL + size: 252359 + timestamp: 1740379663071 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-0.2.0-hc8f76dd_10.conda + sha256: a1bde55ceb9dc5bd7879283d0f594a6ce65c07fda3de76230c65a4a5df47858a + md5: 480e915dfc6c592615ef6f217e615aa6 + depends: + - libsentencepiece 0.2.0 h8e10757_10 + - python_abi 3.12.* *_cp312 + - sentencepiece-python 0.2.0 py312hb6b8a2b_10 + - sentencepiece-spm 0.2.0 h8e10757_10 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 19470 + timestamp: 1735628377167 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-0.2.0-h6c1b121_10.conda + sha256: 846d885a560fbb4375b645e7caf2f756ef88bbeb441b670375da0090aaa427fb + md5: 33a89eb1dedae8eb7222b0a89856f337 + depends: + - libsentencepiece 0.2.0 h6164ad9_10 + - python_abi 3.12.* *_cp312 + - sentencepiece-python 0.2.0 py312h197ff68_10 + - sentencepiece-spm 0.2.0 h6164ad9_10 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 19686 + timestamp: 1735628718991 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-0.2.0-h22a84ea_10.conda + sha256: 526c934b897131bd274697649c3b1c492a7d66c03368885a954112468b3c1424 + md5: 346abe448f69949a65473b336856860a + depends: + - libsentencepiece 0.2.0 he13a0af_10 + - python_abi 3.12.* *_cp312 + - sentencepiece-python 0.2.0 py312h155166a_10 + - sentencepiece-spm 0.2.0 he13a0af_10 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 19759 + timestamp: 1735628533490 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-python-0.2.0-py312hb6b8a2b_10.conda + sha256: 37df7fb659564587b950b39c936769d9b5095afb7bc223f42d6248a5540c6567 + md5: 7908b7b977e2e123a5f6a29906f2ce44 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 h8e10757_10 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 2411182 + timestamp: 1735628106455 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-python-0.2.0-py312h197ff68_10.conda + sha256: a7c2c19cc397c7632e2630af49ddcff128f145c93ea493421e6f42bfa5e1d30b + md5: 5642e4545a3cf03e446fb3b3e9fd723b + depends: + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 h6164ad9_10 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 2458076 + timestamp: 1735628298246 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-python-0.2.0-py312h155166a_10.conda + sha256: 2d59614aeafbf54cc718805798c11c2d0a3b4b8d947d1bd81c87c484b4883077 + md5: 6e11367ef670296fce01fc9860be944d + depends: + - __osx >=11.0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 he13a0af_10 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 2433303 + timestamp: 1735628083958 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-spm-0.2.0-h8e10757_10.conda + sha256: 6b55e1121545357d63c3aa0766931720e8aafc52d88641ba7631c8cbaa68c52f + md5: e977b7be5ac26c55825e121e00b90493 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 h8e10757_10 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 89076 + timestamp: 1735628334078 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-spm-0.2.0-h6164ad9_10.conda + sha256: b98fc1028a8e8fbf309af383f9c837290a14e076e6c5533dc251694ea33ffc6e + md5: a4b75936c01dca3f089f02752b7ee325 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 h6164ad9_10 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 85983 + timestamp: 1735628693813 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-spm-0.2.0-he13a0af_10.conda + sha256: b760aeee02e2afbfcce3f559e8a227aa4c94139157b1702fdfb41a057dad0e52 + md5: 9b7300f23cd330da8664cd072c162e5f + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 he13a0af_10 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 83826 + timestamp: 1735628514667 +- conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.8.2-pyhff2d567_0.conda + sha256: 91d664ace7c22e787775069418daa9f232ee8bafdd0a6a080a5ed2395a6fa6b2 + md5: 9bddfdbf4e061821a1a443f93223be61 + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 777736 + timestamp: 1740654030775 +- conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + sha256: 41db0180680cc67c3fa76544ffd48d6a5679d96f4b71d7498a759e94edc9a2db + md5: a451d576819089b0d672f18768be0f65 + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 16385 + timestamp: 1733381032766 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda + sha256: e0569c9caa68bf476bead1bed3d79650bb080b532c64a4af7d8ca286c08dea4e + md5: d453b98d9c83e71da0741bb0ff4d76bc + depends: + - libgcc-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 + arch: x86_64 + platform: linux + license: TCL + license_family: BSD + size: 3318875 + timestamp: 1699202167581 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda + sha256: 7fa27cc512d3a783f38bd16bbbffc008807372499d5b65d089a8e43bde9db267 + md5: f75105e0585851f818e0009dd1dde4dc + depends: + - libgcc-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 + arch: aarch64 + platform: linux + license: TCL + license_family: BSD + size: 3351802 + timestamp: 1695506242997 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda + sha256: 72457ad031b4c048e5891f3f6cb27a53cb479db68a52d965f796910e71a403a8 + md5: b50a57ba89c32b62428b71a875291c9b + depends: + - libzlib >=1.2.13,<2.0.0a0 + arch: arm64 + platform: osx + license: TCL + license_family: BSD + size: 3145523 + timestamp: 1699202432999 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda + sha256: 062a3a3a37fa8615ce57929ba7e982c76f5a5810bcebd435950f6d6c4147c310 + md5: e417822cb989e80a0d2b1b576fdd1657 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 840414 + timestamp: 1732616043734 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py312h52516f5_0.conda + sha256: 4c19a544354172b2273553267e734795a6da3c78a04c2d19f8e9e159ca3178bc + md5: e28996d9d2d44d777b7e6fb12f63715b + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 841662 + timestamp: 1732616934923 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda + sha256: 964a2705a36c50040c967b18b45b9cc8de3c2aff4af546979a574e0b38e58e39 + md5: fb0605888a475d6a380ae1d1a819d976 + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 842549 + timestamp: 1732616081362 +- conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + sha256: 11e2c85468ae9902d24a27137b6b39b4a78099806e551d390e394a8c34b48e40 + md5: 9efbfdc37242619130ea42b1cc4ed861 + depends: + - colorama + - python >=3.9 + license: MPL-2.0 or MIT + size: 89498 + timestamp: 1735661472632 +- conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + sha256: f39a5620c6e8e9e98357507262a7869de2ae8cc07da8b7f84e517c9fd6c2b959 + md5: 019a7385be9af33791c989871317e1ed + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 110051 + timestamp: 1733367480074 +- conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + sha256: 337be7af5af8b2817f115b3b68870208b30c31d3439bec07bfb2d8f4823e3568 + md5: d17f13df8b65464ca316cbc000a3cb64 + depends: + - python >=3.9 + license: PSF-2.0 + license_family: PSF + size: 39637 + timestamp: 1733188758212 +- conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + sha256: c4b1ae8a2931fe9b274c44af29c5475a85b37693999f8c792dad0f8c6734b1de + md5: dbcace4706afdfb7eb891f7b37d07c04 + license: LicenseRef-Public-Domain + size: 122921 + timestamp: 1737119101255 +- conda: https://conda.anaconda.org/conda-forge/noarch/wheel-0.45.1-pyhd8ed1ab_1.conda + sha256: 1b34021e815ff89a4d902d879c3bd2040bc1bd6169b32e9427497fa05c55f1ce + md5: 75cb7132eb58d97896e173ef12ac9986 + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 62931 + timestamp: 1733130309598 +- conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda + sha256: a4dc72c96848f764bb5a5176aa93dd1e9b9e52804137b99daeebba277b31ea10 + md5: 3947a35e916fcc6b9825449affbf4214 + depends: + - __glibc >=2.17,<3.0.a0 + - krb5 >=1.21.3,<1.22.0a0 + - libgcc >=13 + - libsodium >=1.0.20,<1.0.21.0a0 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: MPL-2.0 + license_family: MOZILLA + size: 335400 + timestamp: 1731585026517 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zeromq-4.3.5-h5efb499_7.conda + sha256: a6003096dc0570a86492040ba32b04ce7662b159600be2252b7a0dfb9414e21c + md5: f2f3282559a4b87b7256ecafb4610107 + depends: + - krb5 >=1.21.3,<1.22.0a0 + - libgcc >=13 + - libsodium >=1.0.20,<1.0.21.0a0 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: MPL-2.0 + license_family: MOZILLA + size: 371419 + timestamp: 1731589490850 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda + sha256: 9e585569fe2e7d3bea71972cd4b9f06b1a7ab8fa7c5139f92a31cbceecf25a8a + md5: f7e6b65943cb73bce0143737fded08f1 + depends: + - __osx >=11.0 + - krb5 >=1.21.3,<1.22.0a0 + - libcxx >=18 + - libsodium >=1.0.20,<1.0.21.0a0 + arch: arm64 + platform: osx + license: MPL-2.0 + license_family: MOZILLA + size: 281565 + timestamp: 1731585108039 +- conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + sha256: 567c04f124525c97a096b65769834b7acb047db24b15a56888a322bf3966c3e1 + md5: 0c3cc595284c5e8f0f9900a9b228a332 + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 21809 + timestamp: 1732827613585 diff --git a/examples/mojo/life/magic.lock b/examples/mojo/life/magic.lock new file mode 100644 index 0000000000..1aec52b09f --- /dev/null +++ b/examples/mojo/life/magic.lock @@ -0,0 +1,5402 @@ +version: 6 +environments: + default: + channels: + - url: https://conda.anaconda.org/conda-forge/ + - url: https://conda.modular.com/max-nightly/ + packages: + linux-64: + - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/alsa-lib-1.2.13-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aom-3.9.1-hac33072_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/attr-2.5.1-h166bdaf_1.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2025.1.31-hbcca054_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.2-h3394656_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/dav1d-1.2.1-hd590300_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/dbus-1.13.6-h5008d03_3.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/expat-2.6.4-h5888daf_0.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 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/fontconfig-2.15.0-h7e30c49_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2 + - 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/gettext-0.23.1-h5888daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gettext-tools-0.23.1-h5888daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.13-h59595ed_1003.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-10.3.0-h76408a6_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/jack-1.9.22-h7c63dc7_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/lame-3.100-h166bdaf_1003.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libasprintf-0.23.1-h8e693c7_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libasprintf-devel-0.23.1-h8e693c7_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libavif16-1.1.1-hf3231e4_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-31_h59b9bed_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcap-2.71-h39aace5_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-31_he106b2a_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libdb-6.2.32-h9c3ff4c_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.23-h4ddbbb0_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libdrm-2.4.124-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libegl-1.7.0-ha4b6fd6_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libflac-1.4.3-h59595ed_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h767d61c_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcrypt-lib-1.11.0-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgettextpo-0.23.1-h5888daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgettextpo-devel-0.23.1-h5888daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hf1ad2bd_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgl-1.7.0-ha4b6fd6_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.82.2-h2ff4ddf_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libglvnd-1.7.0-ha4b6fd6_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libglx-1.7.0-ha4b6fd6_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h767d61c_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgpg-error-1.51-hbd13f7d_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h4ce23a2_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-31_h7ac8fdf_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libmad-0.15.1b-h0b41bf4_1001.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libogg-1.3.5-h4ab18f5_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.29-pthreads_h94d23a6_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopus-1.3.1-h7f98852_1.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libpciaccess-0.18-hd590300_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.47-h943b412_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsentencepiece-0.2.0-h8e10757_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsndfile-1.2.2-hc60ed4a_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.49.1-hee588c1_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-h8f9b012_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsystemd0-257.3-h3dc2cb9_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hd9ff511_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libudev1-257.3-h9a4d06a_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libunwind-1.6.2-h9c3ff4c_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/liburing-2.9-h84d6215_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libusb-1.0.27-h520f47e_100.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libvorbis-1.3.7-h9c3ff4c_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.5.0-h851e524_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxkbcommon-1.8.0-hc4a0caf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.6-h8d12d68_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.10.0-h5888daf_1.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022718-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/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.1-h7b32b05_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/opusfile-0.12-h3358134_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.44-hba22ea6_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.44.2-h29eaf8c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/portaudio-19.6.0-h7c63dc7_9.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/portmidi-2.0.4-h7c63dc7_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pulseaudio-client-17.0-hb77b528_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pygame-2.6.1-py312h4fcb14b_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.9-h9e4cc4f_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.1-py312hbf22597_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/rav1e-0.6.6-he8a937b_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sdl2-2.32.50-h9b8e6db_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sdl2_image-2.8.2-h06ee604_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sdl2_mixer-2.6.3-h8830914_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sdl2_ttf-2.24.0-h287479f_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sdl3-3.2.4-h3083f51_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-0.2.0-hc8f76dd_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-python-0.2.0-py312hb6b8a2b_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-spm-0.2.0-h8e10757_10.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/svt-av1-3.0.0-h5888daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/wayland-1.23.1-h3e06ad9_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xkeyboard-config-2.43-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libice-1.1.2-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libsm-1.2.5-he73a12e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libx11-1.8.11-h4f16b4b_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxcursor-1.2.3-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxext-1.3.6-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxfixes-6.0.1-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrender-0.9.12-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxscrnsaver-1.2.4-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb8e6e7a_1.conda + linux-aarch64: + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/alsa-lib-1.2.13-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aom-3.9.1-hcccb83c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/attr-2.5.1-h4e544f5_1.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h68df207_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2025.1.31-hcefe29a_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cairo-1.18.2-h83712da_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/dav1d-1.2.1-h31becfc_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/dbus-1.13.6-h12b9eeb_3.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/expat-2.6.4-h5ad3122_0.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 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/fontconfig-2.15.0-h8dda3cd_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2 + - 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/gettext-0.23.1-h5ad3122_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gettext-tools-0.23.1-h5ad3122_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/graphite2-1.3.13-h2f0025b_1003.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/harfbuzz-10.3.0-hb5e3f52_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/jack-1.9.22-h5c6c0ed_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/keyutils-1.6.1-h4e544f5_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/krb5-1.21.3-h50a48e9_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lame-3.100-h4e544f5_1003.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.0.0-h4de3ea5_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h18dbdb1_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libasprintf-0.23.1-h5e0f5ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libasprintf-devel-0.23.1-h5e0f5ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libavif16-1.1.1-h0430067_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-31_h1a9f1db_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcap-2.71-h51d75a7_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-31_hab92f65_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libdb-6.2.32-h01db608_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libdeflate-1.23-h5e3c512_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libdrm-2.4.124-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20250104-pl5321h976ea20_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libegl-1.7.0-hd24410f_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.6.4-h5ad3122_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.4.6-he21f813_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libflac-1.4.3-h2f0025b_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-14.2.0-he277a41_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-14.2.0-he9431aa_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcrypt-lib-1.11.0-h86ecc28_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgettextpo-0.23.1-h5ad3122_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgettextpo-devel-0.23.1-h5ad3122_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgl-1.7.0-hd24410f_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libglib-2.82.2-hc486b8e_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libglvnd-1.7.0-hd24410f_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libglx-1.7.0-hd24410f_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgpg-error-1.51-h05609ea_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libiconv-1.18-hc99b53d_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libjpeg-turbo-3.0.0-h31becfc_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-31_h411afd4_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.4-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libmad-0.15.1b-hb4cce97_1001.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libogg-1.3.5-h0b9eccb_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.29-pthreads_h9d3fd7e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopus-1.3.1-hf897c2e_1.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpciaccess-0.18-h31becfc_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.47-hec79eb8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.3-h44a3b7b_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsentencepiece-0.2.0-h6164ad9_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsndfile-1.2.2-h79657aa_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.20-h68df207_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.49.1-h5eb1b54_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsystemd0-257.3-h27834fc_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.0-h88f7998_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libudev1-257.3-h1187dce_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libunwind-1.6.2-h01db608_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liburing-2.9-h17cf362_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libusb-1.0.27-hfa5f0b2_100.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libvorbis-1.3.7-h01db608_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libwebp-base-1.5.0-h0886dbf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcb-1.17.0-h262b8f6_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxkbcommon-1.8.0-h2ef6bd0_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.6-h2e0c361_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.10.0-h5ad3122_1.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022718-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/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-ha32ae93_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.1-hd08dc88_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/opusfile-0.12-hf55b2d5_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pcre2-10.44-h070dd5b_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pixman-0.44.2-h86a87f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/portaudio-19.6.0-h5c6c0ed_9.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/portmidi-2.0.4-h5c6c0ed_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pthread-stubs-0.4-h86ecc28_1002.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pulseaudio-client-17.0-h729494f_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pygame-2.6.1-py312hb2c8110_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.9-h1683364_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.12-5_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyzmq-26.2.1-py312h2427ae1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/rav1e-0.6.6-h1d8f897_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8382b9d_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sdl2-2.32.50-h7851d19_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sdl2_image-2.8.2-hd95cb85_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sdl2_mixer-2.6.3-h422cae6_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sdl2_ttf-2.24.0-hb1608df_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sdl3-3.2.4-h9cc03ad_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-0.2.0-h6c1b121_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-python-0.2.0-py312h197ff68_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-spm-0.2.0-h6164ad9_10.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/svt-av1-3.0.0-h5ad3122_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py312h52516f5_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/wayland-1.23.1-h698ed42_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xkeyboard-config-2.43-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libice-1.1.2-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libsm-1.2.5-h0808dbd_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libx11-1.8.11-hca56bd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxau-1.0.12-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxcursor-1.2.3-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxdmcp-1.1.5-h57736b2_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxext-1.3.6-h57736b2_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxfixes-6.0.1-h57736b2_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxrender-0.9.12-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zeromq-4.3.5-h5efb499_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.7-hbcf94c1_1.conda + osx-arm64: + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aom-3.9.1-h7bae524_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2025.1.31-hf0a4a13_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cairo-1.18.2-h6a3b0d2_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/dav1d-1.2.1-hb547adb_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/dbus-1.13.6-h3818c69_3.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/expat-2.6.4-h286801f_0.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 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/fontconfig-2.15.0-h1383a14_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2 + - 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/gettext-0.23.1-h3dcc1bd_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gettext-tools-0.23.1-h493aca8_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/graphite2-1.3.13-hebf3989_1003.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/harfbuzz-10.3.0-hb72c1af_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lame-3.100-h1a8c8d9_1003.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_h07bc746_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libasprintf-0.23.1-h493aca8_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libasprintf-devel-0.23.1-h493aca8_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libavif16-1.1.1-hf9d1e0e_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-31_h10e41b3_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-31_hb3479ef_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.23-hec38601_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.4-h286801f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libflac-1.4.3-hb765f3a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgettextpo-0.23.1-h493aca8_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgettextpo-devel-0.23.1-h493aca8_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libglib-2.82.2-hdff4504_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.18-hfe07756_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libintl-0.23.1-h493aca8_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libintl-devel-0.23.1-h493aca8_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.0.0-hb547adb_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-31_hc9a63f6_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.4-h39f12f2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libmad-0.15.1b-h1a8c8d9_1001.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libogg-1.3.5-h99b78c6_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.29-openmp_hf332438_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopus-1.3.1-h27ca646_1.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.47-h3783ad8_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.3-h3bd63a1_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsentencepiece-0.2.0-he13a0af_10.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsndfile-1.2.2-h9739721_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.1-h3f77e49_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-h551f018_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libusb-1.0.27-h93a5062_100.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libvorbis-1.3.7-h9f76cd9_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.5.0-h2471fea_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022718-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/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.1-h81ee809_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/opusfile-0.12-h5643135_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pcre2-10.44-h297a79d_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pixman-0.44.2-h2f9eb0b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/portaudio-19.6.0-h13dd4ca_9.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/portmidi-2.0.4-h13dd4ca_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pygame-2.6.1-py312hb14fe3b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.9-hc22306f_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-5_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.1-py312hf4875e0_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/rav1e-0.6.6-h69fbcac_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sdl2-2.32.50-h994913f_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sdl2_image-2.8.2-h376e2e1_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sdl2_mixer-2.6.3-h4fe3bdc_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sdl2_ttf-2.24.0-h443c5de_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sdl3-3.2.4-he842692_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-0.2.0-h22a84ea_10.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-python-0.2.0-py312h155166a_10.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-spm-0.2.0-he13a0af_10.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/svt-av1-3.0.0-h8ab69cd_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.7-h6491c7d_1.conda +packages: +- conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 + sha256: fe51de6107f9edc7aa4f786a70f4a883943bc9d39b3bb7307c04c41410990726 + md5: d7c89558ba9fa0495403155b64376d81 + arch: x86_64 + platform: linux + license: None + size: 2562 + timestamp: 1578324546067 +- conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 + build_number: 16 + sha256: fbe2c5e56a653bebb982eda4876a9178aedfc2b545f25d0ce9c4c0b508253d22 + md5: 73aaf86a425cc6e73fcf236a5a46396d + depends: + - _libgcc_mutex 0.1 conda_forge + - libgomp >=7.5.0 + constrains: + - openmp_impl 9999 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 23621 + timestamp: 1650670423406 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2 + build_number: 16 + sha256: 3702bef2f0a4d38bd8288bbe54aace623602a1343c2cfbefd3fa188e015bebf0 + md5: 6168d71addc746e8f2b8d57dfd2edcea + depends: + - libgomp >=7.5.0 + constrains: + - openmp_impl 9999 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 23712 + timestamp: 1650670790230 +- conda: https://conda.anaconda.org/conda-forge/linux-64/alsa-lib-1.2.13-hb9d3cd8_0.conda + sha256: f507b58f77eabc0cc133723cb7fc45c053d551f234df85e70fb3ede082b0cd53 + md5: ae1370588aa6a5157c34c73e9bbb36a0 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: LGPL-2.1-or-later + license_family: GPL + size: 560238 + timestamp: 1731489643707 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/alsa-lib-1.2.13-h86ecc28_0.conda + sha256: 4141180b0304559fefa8ca66f1cc217a1d957b03aa959f955daf33718162042f + md5: f643bb02c4bbcfe7de161a8ca5df530b + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: LGPL-2.1-or-later + license_family: GPL + size: 591318 + timestamp: 1731489774660 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aom-3.9.1-hac33072_0.conda + sha256: b08ef033817b5f9f76ce62dfcac7694e7b6b4006420372de22494503decac855 + md5: 346722a0be40f6edc53f12640d301338 + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + size: 2706396 + timestamp: 1718551242397 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aom-3.9.1-hcccb83c_0.conda + sha256: ac438ce5d3d3673a9188b535fc7cda413b479f0d52536aeeac1bd82faa656ea0 + md5: cc744ac4efe5bcaa8cca51ff5b850df0 + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: aarch64 + platform: linux + license: BSD-2-Clause + license_family: BSD + size: 3250813 + timestamp: 1718551360260 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aom-3.9.1-h7bae524_0.conda + sha256: ec238f18ce8140485645252351a0eca9ef4f7a1c568a420f240a585229bc12ef + md5: 7adba36492a1bb22d98ffffe4f6fc6de + depends: + - __osx >=11.0 + - libcxx >=16 + arch: arm64 + platform: osx + license: BSD-2-Clause + license_family: BSD + size: 2235747 + timestamp: 1718551382432 +- conda: https://conda.anaconda.org/conda-forge/linux-64/attr-2.5.1-h166bdaf_1.tar.bz2 + sha256: 82c13b1772c21fc4a17441734de471d3aabf82b61db9b11f4a1bd04a9c4ac324 + md5: d9c69a24ad678ffce24c6543a0176b00 + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: GPL-2.0-or-later + license_family: GPL + size: 71042 + timestamp: 1660065501192 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/attr-2.5.1-h4e544f5_1.tar.bz2 + sha256: 2c793b48e835a8fac93f1664c706442972a0206963bf8ca202e83f7f4d29a7d7 + md5: 1ef6c06fec1b6f5ee99ffe2152e53568 + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: GPL-2.0-or-later + license_family: GPL + size: 74992 + timestamp: 1660065534958 +- conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda + sha256: 5ced96500d945fb286c9c838e54fa759aa04a7129c59800f0846b4335cee770d + md5: 62ee74e96c5ebb0af99386de58cf9553 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: bzip2-1.0.6 + license_family: BSD + size: 252783 + timestamp: 1720974456583 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h68df207_7.conda + sha256: 2258b0b33e1cb3a9852d47557984abb6e7ea58e3d7f92706ec1f8e879290c4cb + md5: 56398c28220513b9ea13d7b450acfb20 + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: bzip2-1.0.6 + license_family: BSD + size: 189884 + timestamp: 1720974504976 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda + sha256: adfa71f158cbd872a36394c56c3568e6034aa55c623634b37a4836bd036e6b91 + md5: fc6948412dbbbe9a4c9ddbbcfe0a79ab + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: bzip2-1.0.6 + license_family: BSD + size: 122909 + timestamp: 1720974522888 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2025.1.31-hbcca054_0.conda + sha256: bf832198976d559ab44d6cdb315642655547e26d826e34da67cbee6624cda189 + md5: 19f3a56f68d2fd06c516076bff482c52 + arch: x86_64 + platform: linux + license: ISC + size: 158144 + timestamp: 1738298224464 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2025.1.31-hcefe29a_0.conda + sha256: 66c6408ee461593cfdb2d78d82e6ed74d04a04ccb51df3ef8a5f35148c9c6eec + md5: 462cb166cd2e26a396f856510a3aff67 + arch: aarch64 + platform: linux + license: ISC + size: 158290 + timestamp: 1738299057652 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2025.1.31-hf0a4a13_0.conda + sha256: 7e12816618173fe70f5c638b72adf4bfd4ddabf27794369bb17871c5bb75b9f9 + md5: 3569d6a9141adc64d2fe4797f3289e06 + arch: arm64 + platform: osx + license: ISC + size: 158425 + timestamp: 1738298167688 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.2-h3394656_1.conda + sha256: de7d0d094e53decc005cb13e527be2635b8f604978da497d4c0d282c7dc08385 + md5: b34c2833a1f56db610aeb27f206d800d + depends: + - __glibc >=2.17,<3.0.a0 + - fontconfig >=2.15.0,<3.0a0 + - fonts-conda-ecosystem + - freetype >=2.12.1,<3.0a0 + - icu >=75.1,<76.0a0 + - libexpat >=2.6.4,<3.0a0 + - libgcc >=13 + - libglib >=2.82.2,<3.0a0 + - libpng >=1.6.44,<1.7.0a0 + - libstdcxx >=13 + - libxcb >=1.17.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - pixman >=0.44.2,<1.0a0 + - xorg-libice >=1.1.1,<2.0a0 + - xorg-libsm >=1.2.4,<2.0a0 + - xorg-libx11 >=1.8.10,<2.0a0 + - xorg-libxext >=1.3.6,<2.0a0 + - xorg-libxrender >=0.9.11,<0.10.0a0 + arch: x86_64 + platform: linux + license: LGPL-2.1-only or MPL-1.1 + size: 978868 + timestamp: 1733790976384 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cairo-1.18.2-h83712da_1.conda + sha256: 0353e175859c4989251628e4c8f9fb2dc52546b0c031ffe4541eb087ac586573 + md5: e7b46975d2c9a4666da0e9bb8a087f28 + depends: + - fontconfig >=2.15.0,<3.0a0 + - fonts-conda-ecosystem + - freetype >=2.12.1,<3.0a0 + - icu >=75.1,<76.0a0 + - libexpat >=2.6.4,<3.0a0 + - libgcc >=13 + - libglib >=2.82.2,<3.0a0 + - libpng >=1.6.44,<1.7.0a0 + - libstdcxx >=13 + - libxcb >=1.17.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - pixman >=0.44.2,<1.0a0 + - xorg-libice >=1.1.1,<2.0a0 + - xorg-libsm >=1.2.4,<2.0a0 + - xorg-libx11 >=1.8.10,<2.0a0 + - xorg-libxext >=1.3.6,<2.0a0 + - xorg-libxrender >=0.9.11,<0.10.0a0 + arch: aarch64 + platform: linux + license: LGPL-2.1-only or MPL-1.1 + size: 980455 + timestamp: 1733791018944 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/cairo-1.18.2-h6a3b0d2_1.conda + sha256: 9a28344e806b89c87fda0cdabd2fb961e5d2ff97107dba25bac9f5dc57220cc3 + md5: 8e3666c3f6e2c3e57aa261ab103a3600 + depends: + - __osx >=11.0 + - fontconfig >=2.15.0,<3.0a0 + - fonts-conda-ecosystem + - freetype >=2.12.1,<3.0a0 + - icu >=75.1,<76.0a0 + - libcxx >=18 + - libexpat >=2.6.4,<3.0a0 + - libglib >=2.82.2,<3.0a0 + - libpng >=1.6.44,<1.7.0a0 + - libzlib >=1.3.1,<2.0a0 + - pixman >=0.44.2,<1.0a0 + arch: arm64 + platform: osx + license: LGPL-2.1-only or MPL-1.1 + size: 894517 + timestamp: 1733791145035 +- conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda + sha256: c920d23cd1fcf565031c679adb62d848af60d6fbb0edc2d50ba475cea4f0d8ab + md5: f22f4d4970e09d68a10b922cbb0408d3 + depends: + - __unix + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 84705 + timestamp: 1734858922844 +- conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + sha256: ab29d57dc70786c1269633ba3dff20288b81664d3ff8d21af995742e2bb03287 + md5: 962b9857ee8e7018c22f2776ffa0b2d7 + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 27011 + timestamp: 1733218222191 +- conda: https://conda.anaconda.org/conda-forge/linux-64/dav1d-1.2.1-hd590300_0.conda + sha256: 22053a5842ca8ee1cf8e1a817138cdb5e647eb2c46979f84153f6ad7bde73020 + md5: 418c6ca5929a611cbd69204907a83995 + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + size: 760229 + timestamp: 1685695754230 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/dav1d-1.2.1-h31becfc_0.conda + sha256: 33fe66d025cf5bac7745196d1a3dd7a437abcf2dbce66043e9745218169f7e17 + md5: 6e5a87182d66b2d1328a96b61ca43a62 + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: BSD-2-Clause + license_family: BSD + size: 347363 + timestamp: 1685696690003 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/dav1d-1.2.1-hb547adb_0.conda + sha256: 93e077b880a85baec8227e8c72199220c7f87849ad32d02c14fb3807368260b8 + md5: 5a74cdee497e6b65173e10d94582fae6 + arch: arm64 + platform: osx + license: BSD-2-Clause + license_family: BSD + size: 316394 + timestamp: 1685695959391 +- conda: https://conda.anaconda.org/conda-forge/linux-64/dbus-1.13.6-h5008d03_3.tar.bz2 + sha256: 8f5f995699a2d9dbdd62c61385bfeeb57c82a681a7c8c5313c395aa0ccab68a5 + md5: ecfff944ba3960ecb334b9a2663d708d + depends: + - expat >=2.4.2,<3.0a0 + - libgcc-ng >=9.4.0 + - libglib >=2.70.2,<3.0a0 + arch: x86_64 + platform: linux + license: GPL-2.0-or-later + license_family: GPL + size: 618596 + timestamp: 1640112124844 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/dbus-1.13.6-h12b9eeb_3.tar.bz2 + sha256: 5fe76bdf27a142cfb9da0fb3197c562e528d2622b573765bee5c9904cf5e6b6b + md5: f3d63805602166bac09386741e00935e + depends: + - expat >=2.4.2,<3.0a0 + - libgcc-ng >=9.4.0 + - libglib >=2.70.2,<3.0a0 + arch: aarch64 + platform: linux + license: GPL-2.0-or-later + license_family: GPL + size: 672759 + timestamp: 1640113663539 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/dbus-1.13.6-h3818c69_3.tar.bz2 + sha256: fb21c1e677b43f5de8462f15bfbd0dce271cfe60cf1e6df50bc057b11feb52e1 + md5: 23730a06679644276233a5894eb2ef00 + depends: + - expat >=2.4.2,<3.0a0 + - libglib >=2.70.2,<3.0a0 + arch: arm64 + platform: osx + license: GPL-2.0-or-later + license_family: GPL + size: 574595 + timestamp: 1640112246560 +- conda: https://conda.anaconda.org/conda-forge/linux-64/expat-2.6.4-h5888daf_0.conda + sha256: 1848c7db9e264e3b8036ee133d570dd880422983cd20dd9585a505289606d276 + md5: 1d6afef758879ef5ee78127eb4cd2c4a + depends: + - __glibc >=2.17,<3.0.a0 + - libexpat 2.6.4 h5888daf_0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 138145 + timestamp: 1730967050578 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/expat-2.6.4-h5ad3122_0.conda + sha256: 13905ad49c2f43776bac0e464ffd3c9ec10ef35cc7dd7e187af6f66f843fa29a + md5: e8f1d587055376ea2419cc78696abd0b + depends: + - libexpat 2.6.4 h5ad3122_0 + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 130354 + timestamp: 1730967212801 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/expat-2.6.4-h286801f_0.conda + sha256: e621a088b762a8aa99bd8f3ef10e2efe923713bc476babb90e7919f6c13a358b + md5: a37ffeecc1b8a62205bdd8319652758b + depends: + - __osx >=11.0 + - libexpat 2.6.4 h286801f_0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 124765 + timestamp: 1730967188116 +- conda: https://conda.anaconda.org/conda-forge/linux-64/fluidsynth-2.3.7-hd992666_0.conda + sha256: 0bf26d25ae79e6f5f01a49a00e9ba3b60b10dd4c12ec43bdba51055c26bc9dd6 + md5: dd6c7b8a1b217ef7522ca987c465651d + depends: + - __glibc >=2.17,<3.0.a0 + - alsa-lib >=1.2.12,<1.3.0a0 + - jack >=1.9.22,<1.10.0a0 + - libgcc >=13 + - libglib >=2.82.2,<3.0a0 + - libsndfile >=1.2.2,<1.3.0a0 + - libstdcxx >=13 + - portaudio >=19.6.0,<19.7.0a0 + - pulseaudio-client >=17.0,<17.1.0a0 + - readline >=8.2,<9.0a0 + - sdl2 >=2.30.7,<3.0a0 + arch: x86_64 + platform: linux + license: GPL-2.0-or-later + license_family: LGPL + size: 279996 + timestamp: 1729590344462 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/fluidsynth-2.3.7-h4f58cef_0.conda + sha256: e557d4fcb40f224180d61cc5e57fe3d5d5793a255c7d5a29546e524ef2ffa298 + md5: 0207cc67431f4d12605cae60d8d323d7 + depends: + - alsa-lib >=1.2.12,<1.3.0a0 + - jack >=1.9.22,<1.10.0a0 + - libgcc >=13 + - libglib >=2.82.2,<3.0a0 + - libsndfile >=1.2.2,<1.3.0a0 + - libstdcxx >=13 + - portaudio >=19.6.0,<19.7.0a0 + - pulseaudio-client >=17.0,<17.1.0a0 + - readline >=8.2,<9.0a0 + - sdl2 >=2.30.7,<3.0a0 + arch: aarch64 + platform: linux + license: GPL-2.0-or-later + license_family: LGPL + size: 292770 + timestamp: 1729590405853 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/fluidsynth-2.3.7-h80fea77_0.conda + sha256: e4c39119797493d4f085cd6274e123372bec77e05ef93203ccf5dee714bfd9c3 + md5: dc2fc082a05af6a790d3e8e3e6489e6c + depends: + - __osx >=11.0 + - libcxx >=17 + - libglib >=2.82.2,<3.0a0 + - libsndfile >=1.2.2,<1.3.0a0 + - portaudio >=19.6.0,<19.7.0a0 + - readline >=8.2,<9.0a0 + - sdl2 >=2.30.7,<3.0a0 + arch: arm64 + platform: osx + license: GPL-2.0-or-later + license_family: LGPL + size: 234967 + timestamp: 1729590579216 +- conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 + sha256: 58d7f40d2940dd0a8aa28651239adbf5613254df0f75789919c4e6762054403b + md5: 0c96522c6bdaed4b1566d11387caaf45 + license: BSD-3-Clause + license_family: BSD + size: 397370 + timestamp: 1566932522327 +- conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 + sha256: c52a29fdac682c20d252facc50f01e7c2e7ceac52aa9817aaf0bb83f7559ec5c + md5: 34893075a5c9e55cdafac56607368fc6 + license: OFL-1.1 + license_family: Other + size: 96530 + timestamp: 1620479909603 +- conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 + sha256: 00925c8c055a2275614b4d983e1df637245e19058d79fc7dd1a93b8d9fb4b139 + md5: 4d59c254e01d9cde7957100457e2d5fb + license: OFL-1.1 + license_family: Other + size: 700814 + timestamp: 1620479612257 +- conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_3.conda + sha256: 2821ec1dc454bd8b9a31d0ed22a7ce22422c0aef163c59f49dfdf915d0f0ca14 + md5: 49023d73832ef61042f6a237cb2687e7 + license: LicenseRef-Ubuntu-Font-Licence-Version-1.0 + license_family: Other + size: 1620504 + timestamp: 1727511233259 +- conda: https://conda.anaconda.org/conda-forge/linux-64/fontconfig-2.15.0-h7e30c49_1.conda + sha256: 7093aa19d6df5ccb6ca50329ef8510c6acb6b0d8001191909397368b65b02113 + md5: 8f5b0b297b59e1ac160ad4beec99dbee + depends: + - __glibc >=2.17,<3.0.a0 + - freetype >=2.12.1,<3.0a0 + - libexpat >=2.6.3,<3.0a0 + - libgcc >=13 + - libuuid >=2.38.1,<3.0a0 + - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 265599 + timestamp: 1730283881107 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/fontconfig-2.15.0-h8dda3cd_1.conda + sha256: fe023bb8917c8a3138af86ef537b70c8c5d60c44f93946a87d1e8bb1a6634b55 + md5: 112b71b6af28b47c624bcbeefeea685b + depends: + - freetype >=2.12.1,<3.0a0 + - libexpat >=2.6.3,<3.0a0 + - libgcc >=13 + - libuuid >=2.38.1,<3.0a0 + - libzlib >=1.3.1,<2.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 277832 + timestamp: 1730284967179 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/fontconfig-2.15.0-h1383a14_1.conda + sha256: f79d3d816fafbd6a2b0f75ebc3251a30d3294b08af9bb747194121f5efa364bc + md5: 7b29f48742cea5d1ccb5edd839cb5621 + depends: + - __osx >=11.0 + - freetype >=2.12.1,<3.0a0 + - libexpat >=2.6.3,<3.0a0 + - libzlib >=1.3.1,<2.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 234227 + timestamp: 1730284037572 +- conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 + sha256: a997f2f1921bb9c9d76e6fa2f6b408b7fa549edd349a77639c9fe7a23ea93e61 + md5: fee5683a3f04bd15cbd8318b096a27ab + depends: + - fonts-conda-forge + license: BSD-3-Clause + license_family: BSD + size: 3667 + timestamp: 1566974674465 +- conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2 + sha256: 53f23a3319466053818540bcdf2091f253cbdbab1e0e9ae7b9e509dcaa2a5e38 + md5: f766549260d6815b0c52253f1fb1bb29 + depends: + - font-ttf-dejavu-sans-mono + - font-ttf-inconsolata + - font-ttf-source-code-pro + - font-ttf-ubuntu + license: BSD-3-Clause + license_family: BSD + size: 4102 + timestamp: 1566932280397 +- conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.12.1-h267a509_2.conda + sha256: b2e3c449ec9d907dd4656cb0dc93e140f447175b125a3824b31368b06c666bb6 + md5: 9ae35c3d96db2c94ce0cef86efdfa2cb + depends: + - libgcc-ng >=12 + - libpng >=1.6.39,<1.7.0a0 + - libzlib >=1.2.13,<2.0.0a0 + arch: x86_64 + platform: linux + license: GPL-2.0-only OR FTL + size: 634972 + timestamp: 1694615932610 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/freetype-2.12.1-hf0a5ef3_2.conda + sha256: 7af93030f4407f076dce181062360efac2cd54dce863b5d7765287a6f5382537 + md5: a5ab74c5bd158c3d5532b66d8d83d907 + depends: + - libgcc-ng >=12 + - libpng >=1.6.39,<1.7.0a0 + - libzlib >=1.2.13,<2.0.0a0 + arch: aarch64 + platform: linux + license: GPL-2.0-only OR FTL + size: 642092 + timestamp: 1694617858496 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/freetype-2.12.1-hadb7bae_2.conda + sha256: 791673127e037a2dc0eebe122dc4f904cb3f6e635bb888f42cbe1a76b48748d9 + md5: e6085e516a3e304ce41a8ee08b9b89ad + depends: + - libpng >=1.6.39,<1.7.0a0 + - libzlib >=1.2.13,<2.0.0a0 + arch: arm64 + platform: osx + license: GPL-2.0-only OR FTL + size: 596430 + timestamp: 1694616332835 +- conda: https://conda.anaconda.org/conda-forge/linux-64/gettext-0.23.1-h5888daf_0.conda + sha256: 9d93e75a63a8ca8f86d1be09f68f1211754e6f1e9ee4fa6d90b9d46ee0f1dabb + md5: 0754038c806eae440582da1c3af85577 + depends: + - __glibc >=2.17,<3.0.a0 + - gettext-tools 0.23.1 h5888daf_0 + - libasprintf 0.23.1 h8e693c7_0 + - libasprintf-devel 0.23.1 h8e693c7_0 + - libgcc >=13 + - libgettextpo 0.23.1 h5888daf_0 + - libgettextpo-devel 0.23.1 h5888daf_0 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: LGPL-2.1-or-later AND GPL-3.0-or-later + size: 484344 + timestamp: 1739038829530 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gettext-0.23.1-h5ad3122_0.conda + sha256: fae61ce07f930c00de83d7bc3b5bfc1d981d500517894434632c1565b9a6e579 + md5: 6a8190d3f7d7a171aeacf7d01bb9b14f + depends: + - gettext-tools 0.23.1 h5ad3122_0 + - libasprintf 0.23.1 h5e0f5ae_0 + - libasprintf-devel 0.23.1 h5e0f5ae_0 + - libgcc >=13 + - libgettextpo 0.23.1 h5ad3122_0 + - libgettextpo-devel 0.23.1 h5ad3122_0 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: LGPL-2.1-or-later AND GPL-3.0-or-later + size: 479395 + timestamp: 1739038679347 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/gettext-0.23.1-h3dcc1bd_0.conda + sha256: 9311cd9e64f0ae3bccae58b5b68a4804abd8b3c49f4f327b9573b50b026b317e + md5: 123c4d62e1bcba6274511af8c7cf40d5 + depends: + - __osx >=11.0 + - gettext-tools 0.23.1 h493aca8_0 + - libasprintf 0.23.1 h493aca8_0 + - libasprintf-devel 0.23.1 h493aca8_0 + - libcxx >=18 + - libgettextpo 0.23.1 h493aca8_0 + - libgettextpo-devel 0.23.1 h493aca8_0 + - libiconv >=1.17,<2.0a0 + - libintl 0.23.1 h493aca8_0 + - libintl-devel 0.23.1 h493aca8_0 + arch: arm64 + platform: osx + license: LGPL-2.1-or-later AND GPL-3.0-or-later + size: 484476 + timestamp: 1739039461682 +- conda: https://conda.anaconda.org/conda-forge/linux-64/gettext-tools-0.23.1-h5888daf_0.conda + sha256: dd2b54a823ea994c2a7908fcce40e1e612ca00cb9944f2382624ff2d3aa8db03 + md5: 2f659535feef3cfb782f7053c8775a32 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: GPL-3.0-or-later + license_family: GPL + size: 2967824 + timestamp: 1739038787800 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gettext-tools-0.23.1-h5ad3122_0.conda + sha256: 01f55fbf243f471ef426751de914b62fa21418ca3d0aa7a6983f0f87f6ec84e4 + md5: ba6d592245d2c0eb497cd11f70b50df7 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: GPL-3.0-or-later + license_family: GPL + size: 3232815 + timestamp: 1739038646552 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/gettext-tools-0.23.1-h493aca8_0.conda + sha256: c26b38bcff84b3af52f061f55de27a45fb2e9a0544c32b3cbddf8be97c80c296 + md5: 4086817e75778198f96c9b2ed4bc5a6e + depends: + - __osx >=11.0 + - libiconv >=1.17,<2.0a0 + - libintl 0.23.1 h493aca8_0 + arch: arm64 + platform: osx + license: GPL-3.0-or-later + license_family: GPL + size: 2890553 + timestamp: 1739039406578 +- conda: https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.13-h59595ed_1003.conda + sha256: 0595b009f20f8f60f13a6398e7cdcbd2acea5f986633adcf85f5a2283c992add + md5: f87c7b7c2cb45f323ffbce941c78ab7c + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LGPL-2.0-or-later + license_family: LGPL + size: 96855 + timestamp: 1711634169756 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/graphite2-1.3.13-h2f0025b_1003.conda + sha256: c7585e1fb536120583790080f3b3875c04d5f2d64eafbc87e9aa39895e4118c0 + md5: f33009add6a08358bc12d114ceec1304 + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: aarch64 + platform: linux + license: LGPL-2.0-or-later + license_family: LGPL + size: 99453 + timestamp: 1711634223220 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/graphite2-1.3.13-hebf3989_1003.conda + sha256: 2eadafbfc52f5e7df3da3c3b7e5bbe34d970bea1d645ffe60b0b1c3a216657f5 + md5: 339991336eeddb70076d8ca826dac625 + depends: + - libcxx >=16 + arch: arm64 + platform: osx + license: LGPL-2.0-or-later + license_family: LGPL + size: 79774 + timestamp: 1711634444608 +- conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-10.3.0-h76408a6_0.conda + sha256: fbccddfbbfaf139102e5513a2a053010338809348ade18bbf16cb6b92a53d294 + md5: 0a06f278e5d9242057673b1358a75e8f + depends: + - __glibc >=2.17,<3.0.a0 + - cairo >=1.18.2,<2.0a0 + - freetype >=2.12.1,<3.0a0 + - graphite2 + - icu >=75.1,<76.0a0 + - libexpat >=2.6.4,<3.0a0 + - libgcc >=13 + - libglib >=2.82.2,<3.0a0 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 1671633 + timestamp: 1740154398990 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/harfbuzz-10.3.0-hb5e3f52_0.conda + sha256: 687fbb17d8303b956ff917247e41ad8c864ed029b2349c0409cc905e11d9257d + md5: 4575cba227f2e4b5d0f23c9adc390f83 + depends: + - cairo >=1.18.2,<2.0a0 + - freetype >=2.12.1,<3.0a0 + - graphite2 + - icu >=75.1,<76.0a0 + - libexpat >=2.6.4,<3.0a0 + - libgcc >=13 + - libglib >=2.82.2,<3.0a0 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 1727792 + timestamp: 1740157913844 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/harfbuzz-10.3.0-hb72c1af_0.conda + sha256: eb9cc0c8e61a9ce1236fdfa5d426ae31ffd9fd1d6b154e2e7318694eaed6c24e + md5: d77e5f42ec2a35950710f57868885683 + depends: + - __osx >=11.0 + - cairo >=1.18.2,<2.0a0 + - freetype >=2.12.1,<3.0a0 + - graphite2 + - icu >=75.1,<76.0a0 + - libcxx >=18 + - libexpat >=2.6.4,<3.0a0 + - libglib >=2.82.2,<3.0a0 + - libzlib >=1.3.1,<2.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 1378165 + timestamp: 1740155007314 +- conda: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda + sha256: 71e750d509f5fa3421087ba88ef9a7b9be11c53174af3aa4d06aff4c18b38e8e + md5: 8b189310083baabfb622af68fd9d3ae3 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 12129203 + timestamp: 1720853576813 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda + sha256: 813298f2e54ef087dbfc9cc2e56e08ded41de65cff34c639cc8ba4e27e4540c9 + md5: 268203e8b983fddb6412b36f2024e75c + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 12282786 + timestamp: 1720853454991 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda + sha256: 9ba12c93406f3df5ab0a43db8a4b4ef67a5871dfd401010fbe29b218b2cbe620 + md5: 5eb22c1d7b3fc4abb50d92d621583137 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 11857802 + timestamp: 1720853997952 +- conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + sha256: 598951ebdb23e25e4cec4bbff0ae369cec65ead80b50bc08b441d8e54de5cf03 + md5: f4b39bf00c69f56ac01e020ebfac066c + depends: + - python >=3.9 + - zipp >=0.5 + license: Apache-2.0 + license_family: APACHE + size: 29141 + timestamp: 1737420302391 +- conda: https://conda.anaconda.org/conda-forge/linux-64/jack-1.9.22-h7c63dc7_2.conda + sha256: 5e44a3a4b9791d1268636811628555ad40d4a8dd5c3be3334062df75580ae25b + md5: f56277b7f079f1b13cbf7fb9b4f194c4 + depends: + - alsa-lib >=1.2.10,<1.3.0.0a0 + - libdb >=6.2.32,<6.3.0a0 + - libgcc-ng >=12 + - libopus >=1.3.1,<2.0a0 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LGPL-2.0-only + license_family: LGPL + size: 464144 + timestamp: 1693879949990 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/jack-1.9.22-h5c6c0ed_2.conda + sha256: 4b5714f0798fb38e19d0aced7e5a9069eebf3c8ee9f541d643d4e6d0edcf388f + md5: e6abd2a51bd727a1b62a54524f760864 + depends: + - alsa-lib >=1.2.10,<1.3.0.0a0 + - libdb >=6.2.32,<6.3.0a0 + - libgcc-ng >=12 + - libopus >=1.3.1,<2.0a0 + - libstdcxx-ng >=12 + arch: aarch64 + platform: linux + license: LGPL-2.0-only + license_family: LGPL + size: 489040 + timestamp: 1693881455137 +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + sha256: 19d8bd5bb2fde910ec59e081eeb59529491995ce0d653a5209366611023a0b3a + md5: 4ebae00eae9705b0c3d6d1018a81d047 + depends: + - importlib-metadata >=4.8.3 + - jupyter_core >=4.12,!=5.0.* + - python >=3.9 + - python-dateutil >=2.8.2 + - pyzmq >=23.0 + - tornado >=6.2 + - traitlets >=5.3 + license: BSD-3-Clause + license_family: BSD + size: 106342 + timestamp: 1733441040958 +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + sha256: 732b1e8536bc22a5a174baa79842d79db2f4956d90293dd82dc1b3f6099bcccd + md5: 0a2980dada0dd7fd0998f0342308b1b1 + depends: + - __unix + - platformdirs >=2.5 + - python >=3.8 + - traitlets >=5.3 + license: BSD-3-Clause + license_family: BSD + size: 57671 + timestamp: 1727163547058 +- conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 + sha256: 150c05a6e538610ca7c43beb3a40d65c90537497a4f6a5f4d15ec0451b6f5ebb + md5: 30186d27e2c9fa62b45fb1476b7200e3 + depends: + - libgcc-ng >=10.3.0 + arch: x86_64 + platform: linux + license: LGPL-2.1-or-later + size: 117831 + timestamp: 1646151697040 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/keyutils-1.6.1-h4e544f5_0.tar.bz2 + sha256: 6d4233d97a9b38acbb26e1268bcf8c10a8e79c2aed7e5a385ec3769967e3e65b + md5: 1f24853e59c68892452ef94ddd8afd4b + depends: + - libgcc-ng >=10.3.0 + arch: aarch64 + platform: linux + license: LGPL-2.1-or-later + size: 112327 + timestamp: 1646166857935 +- conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda + sha256: 99df692f7a8a5c27cd14b5fb1374ee55e756631b9c3d659ed3ee60830249b238 + md5: 3f43953b7d3fb3aaa1d0d0723d91e368 + depends: + - keyutils >=1.6.1,<2.0a0 + - libedit >=3.1.20191231,<3.2.0a0 + - libedit >=3.1.20191231,<4.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - openssl >=3.3.1,<4.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 1370023 + timestamp: 1719463201255 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/krb5-1.21.3-h50a48e9_0.conda + sha256: 0ec272afcf7ea7fbf007e07a3b4678384b7da4047348107b2ae02630a570a815 + md5: 29c10432a2ca1472b53f299ffb2ffa37 + depends: + - keyutils >=1.6.1,<2.0a0 + - libedit >=3.1.20191231,<3.2.0a0 + - libedit >=3.1.20191231,<4.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - openssl >=3.3.1,<4.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 1474620 + timestamp: 1719463205834 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda + sha256: 4442f957c3c77d69d9da3521268cad5d54c9033f1a73f99cde0a3658937b159b + md5: c6dc8a0fdec13a0565936655c33069a1 + depends: + - __osx >=11.0 + - libcxx >=16 + - libedit >=3.1.20191231,<3.2.0a0 + - libedit >=3.1.20191231,<4.0a0 + - openssl >=3.3.1,<4.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 1155530 + timestamp: 1719463474401 +- conda: https://conda.anaconda.org/conda-forge/linux-64/lame-3.100-h166bdaf_1003.tar.bz2 + sha256: aad2a703b9d7b038c0f745b853c6bb5f122988fe1a7a096e0e606d9cbec4eaab + md5: a8832b479f93521a9e7b5b743803be51 + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: LGPL-2.0-only + license_family: LGPL + size: 508258 + timestamp: 1664996250081 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lame-3.100-h4e544f5_1003.tar.bz2 + sha256: 2502904a42df6d94bd743f7b73915415391dd6d31d5f50cb57c0a54a108e7b0a + md5: ab05bcf82d8509b4243f07e93bada144 + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: LGPL-2.0-only + license_family: LGPL + size: 604863 + timestamp: 1664997611416 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/lame-3.100-h1a8c8d9_1003.tar.bz2 + sha256: f40ce7324b2cf5338b766d4cdb8e0453e4156a4f83c2f31bbfff750785de304c + md5: bff0e851d66725f78dc2fd8b032ddb7e + arch: arm64 + platform: osx + license: LGPL-2.0-only + license_family: LGPL + size: 528805 + timestamp: 1664996399305 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_4.conda + sha256: db73f38155d901a610b2320525b9dd3b31e4949215c870685fd92ea61b5ce472 + md5: 01f8d123c96816249efd255a31ad7712 + depends: + - __glibc >=2.17,<3.0.a0 + constrains: + - binutils_impl_linux-64 2.43 + arch: x86_64 + platform: linux + license: GPL-3.0-only + license_family: GPL + size: 671240 + timestamp: 1740155456116 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_4.conda + sha256: 016832a70b0aa97e1c4e47e23c00b0c34def679de25146736df353199f684f0d + md5: 80c9ad5e05e91bb6c0967af3880c9742 + constrains: + - binutils_impl_linux-aarch64 2.43 + arch: aarch64 + platform: linux + license: GPL-3.0-only + license_family: GPL + size: 699058 + timestamp: 1740155620594 +- conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 + sha256: cb55f36dcd898203927133280ae1dc643368af041a48bcf7c026acb7c47b0c12 + md5: 76bbff344f0134279f225174e9064c8f + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 281798 + timestamp: 1657977462600 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.0.0-h4de3ea5_0.tar.bz2 + sha256: 2d09ef9b7796d83364957e420b41c32d94e628c3f0520b61c332518a7b5cd586 + md5: 1a0ffc65e03ce81559dbcb0695ad1476 + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 262096 + timestamp: 1657978241894 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 + sha256: 6f068bb53dfb6147d3147d981bb851bb5477e769407ad4e6a68edf482fdcb958 + md5: de462d5aacda3b30721b512c5da4e742 + depends: + - libcxx >=13.0.1 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 215721 + timestamp: 1657977558796 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda + sha256: 143a586aa67d50622ef703de57b9d43f44945836d6568e0e7aa174bd8c45e0d4 + md5: 488f260ccda0afaf08acb286db439c2f + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + constrains: + - libabseil-static =20240722.0=cxx17* + - abseil-cpp =20240722.0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 1311599 + timestamp: 1736008414161 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h18dbdb1_4.conda + sha256: bb6c5fb3b8de5f90735c5252b57efb3c268ee222c755569dac18065f05147670 + md5: 633b9fe454ffea2aaf29e191d946a83b + depends: + - libgcc >=13 + - libstdcxx >=13 + constrains: + - abseil-cpp =20240722.0 + - libabseil-static =20240722.0=cxx17* + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 1334844 + timestamp: 1736008472455 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_h07bc746_4.conda + sha256: 05fa5e5e908962b9c5aba95f962e2ca81d9599c4715aebe5e4ddb72b309d1770 + md5: c2d95bd7aa8d564a9bd7eca5e571a5b3 + depends: + - __osx >=11.0 + - libcxx >=18 + constrains: + - libabseil-static =20240722.0=cxx17* + - abseil-cpp =20240722.0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 1178260 + timestamp: 1736008642885 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libasprintf-0.23.1-h8e693c7_0.conda + sha256: 13b863584fccbb9089de73a2442e540703ce4873e4719c9d98c98e4a8e12f9d1 + md5: 988f4937281a66ca19d1adb3b5e3f859 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: LGPL-2.1-or-later + size: 43179 + timestamp: 1739038705987 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libasprintf-0.23.1-h5e0f5ae_0.conda + sha256: f80d436462d78c459758176d59b0231c3cce99502408c2e4af03bacee786fc94 + md5: b34cfd925b96e72b99286e0cff036e82 + depends: + - libgcc >=13 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: LGPL-2.1-or-later + size: 43700 + timestamp: 1739038595159 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libasprintf-0.23.1-h493aca8_0.conda + sha256: 2b27d2ede7867fd362f94644aac1d7fb9af7f7fc3f122cb014647b47ffd402a4 + md5: baf9e4423f10a15ca7eab26480007639 + depends: + - __osx >=11.0 + - libcxx >=18 + arch: arm64 + platform: osx + license: LGPL-2.1-or-later + size: 41679 + timestamp: 1739039255705 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libasprintf-devel-0.23.1-h8e693c7_0.conda + sha256: b05a859fe5a2b43574f3a5d93552061232b92d17017b27ecab1eccca1dbb2fe4 + md5: 2827e722a963b779ce878ef9b5474534 + depends: + - __glibc >=2.17,<3.0.a0 + - libasprintf 0.23.1 h8e693c7_0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: LGPL-2.1-or-later + size: 34282 + timestamp: 1739038733352 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libasprintf-devel-0.23.1-h5e0f5ae_0.conda + sha256: 35829ce5805229b83e9b660ec6579b04c5ec83ac82ef72d93b31ea47def1ac09 + md5: ec789924a13fcd14c53cbf90ea1b8551 + depends: + - libasprintf 0.23.1 h5e0f5ae_0 + - libgcc >=13 + arch: aarch64 + platform: linux + license: LGPL-2.1-or-later + size: 34348 + timestamp: 1739038610428 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libasprintf-devel-0.23.1-h493aca8_0.conda + sha256: 25999d3c78270440e7e9e06c2e6f4a2e1ac11d2df84ac7b24280c6f530eed06f + md5: 13d4d79418eb3137fc94fe61e9e572e7 + depends: + - __osx >=11.0 + - libasprintf 0.23.1 h493aca8_0 + arch: arm64 + platform: osx + license: LGPL-2.1-or-later + size: 34641 + timestamp: 1739039285881 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libavif16-1.1.1-hf3231e4_3.conda + sha256: fdc5519fd91ebfe713561792365a1e86e0e9a1579b32f7df5d4136e97e01e30f + md5: 57983929fd533126e9bd71754f0d25f5 + depends: + - __glibc >=2.17,<3.0.a0 + - aom >=3.9.1,<3.10.0a0 + - dav1d >=1.2.1,<1.2.2.0a0 + - libgcc >=13 + - rav1e >=0.6.6,<1.0a0 + - svt-av1 >=3.0.0,<3.0.1.0a0 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + size: 117659 + timestamp: 1740443336123 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libavif16-1.1.1-h0430067_3.conda + sha256: f414adc92127560abe135d7ae56d15d734732186fd0ceea408ab7be6415abb6d + md5: f7ecf6b6fbea3f1f6f4efe97b7e4ce4e + depends: + - aom >=3.9.1,<3.10.0a0 + - dav1d >=1.2.1,<1.2.2.0a0 + - libgcc >=13 + - rav1e >=0.6.6,<1.0a0 + - svt-av1 >=3.0.0,<3.0.1.0a0 + arch: aarch64 + platform: linux + license: BSD-2-Clause + license_family: BSD + size: 117519 + timestamp: 1740443361559 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libavif16-1.1.1-hf9d1e0e_3.conda + sha256: 35f411fb4a9c7dfcf47affed864066ccdaa45969d05403f80134a41cdf7159b6 + md5: 8d1a6e4e698ca66e953622764733803a + depends: + - __osx >=11.0 + - aom >=3.9.1,<3.10.0a0 + - dav1d >=1.2.1,<1.2.2.0a0 + - rav1e >=0.6.6,<1.0a0 + - svt-av1 >=3.0.0,<3.0.1.0a0 + arch: arm64 + platform: osx + license: BSD-2-Clause + license_family: BSD + size: 98685 + timestamp: 1740443620556 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-31_h59b9bed_openblas.conda + build_number: 31 + sha256: 9839fc4ac0cbb0aa3b9eea520adfb57311838959222654804e58f6f2d1771db5 + md5: 728dbebd0f7a20337218beacffd37916 + depends: + - libopenblas >=0.3.29,<0.3.30.0a0 + - libopenblas >=0.3.29,<1.0a0 + constrains: + - liblapacke =3.9.0=31*_openblas + - liblapack =3.9.0=31*_openblas + - blas =2.131=openblas + - mkl <2025 + - libcblas =3.9.0=31*_openblas + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 16859 + timestamp: 1740087969120 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-31_h1a9f1db_openblas.conda + build_number: 31 + sha256: 67c9c81dd0444ecc712124034d9f74186ca82fd770b3df46b1a68564461c6a1a + md5: 48bd5bf15ccf3e409840be9caafc0ad5 + depends: + - libopenblas >=0.3.29,<0.3.30.0a0 + - libopenblas >=0.3.29,<1.0a0 + constrains: + - liblapack =3.9.0=31*_openblas + - blas =2.131=openblas + - libcblas =3.9.0=31*_openblas + - mkl <2025 + - liblapacke =3.9.0=31*_openblas + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 16915 + timestamp: 1740087911042 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-31_h10e41b3_openblas.conda + build_number: 31 + sha256: 369586e7688b59b4f92c709b99d847d66d4d095425db327dd32ee5e6ab74697f + md5: 39b053da5e7035c6592102280aa7612a + depends: + - libopenblas >=0.3.29,<0.3.30.0a0 + - libopenblas >=0.3.29,<1.0a0 + constrains: + - liblapacke =3.9.0=31*_openblas + - libcblas =3.9.0=31*_openblas + - blas =2.131=openblas + - mkl <2025 + - liblapack =3.9.0=31*_openblas + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 17123 + timestamp: 1740088119350 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcap-2.71-h39aace5_0.conda + sha256: 2bbefac94f4ab8ff7c64dc843238b6c8edcc9ff1f2b5a0a48407a904dc7ccfb2 + md5: dd19e4e3043f6948bd7454b946ee0983 + depends: + - __glibc >=2.17,<3.0.a0 + - attr >=2.5.1,<2.6.0a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 102268 + timestamp: 1729940917945 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcap-2.71-h51d75a7_0.conda + sha256: 2b66e66e6a0768e833e7edc764649679881ec0a6b37d9bf254b1ceb3b8b434ef + md5: 29f6092b6e938516ca0b042837e64fa5 + depends: + - attr >=2.5.1,<2.6.0a0 + - libgcc >=13 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 106877 + timestamp: 1729940936697 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-31_he106b2a_openblas.conda + build_number: 31 + sha256: ede8545011f5b208b151fe3e883eb4e31d495ab925ab7b9ce394edca846e0c0d + md5: abb32c727da370c481a1c206f5159ce9 + depends: + - libblas 3.9.0 31_h59b9bed_openblas + constrains: + - liblapacke =3.9.0=31*_openblas + - liblapack =3.9.0=31*_openblas + - blas =2.131=openblas + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 16796 + timestamp: 1740087984429 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-31_hab92f65_openblas.conda + build_number: 31 + sha256: f0457a1d2982f0a28bfbadaa02621677c324e88f7c8198c24fb3e3214c468dba + md5: 6b81dbae56a519f1ec2f25e0ee2f4334 + depends: + - libblas 3.9.0 31_h1a9f1db_openblas + constrains: + - liblapack =3.9.0=31*_openblas + - blas =2.131=openblas + - liblapacke =3.9.0=31*_openblas + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 16824 + timestamp: 1740087917500 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-31_hb3479ef_openblas.conda + build_number: 31 + sha256: f237486cc9118d09d0f3ff8820280de34365f98ee7b7dc5ab923b04c7cbf25a5 + md5: 7353c2bf0e90834cb70545671996d871 + depends: + - libblas 3.9.0 31_h10e41b3_openblas + constrains: + - liblapacke =3.9.0=31*_openblas + - blas =2.131=openblas + - liblapack =3.9.0=31*_openblas + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 17032 + timestamp: 1740088127097 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda + sha256: 776092346da87a2a23502e14d91eb0c32699c4a1522b7331537bd1c3751dcff5 + md5: 5b3e1610ff8bd5443476b91d618f5b77 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + size: 523505 + timestamp: 1736877862502 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libdb-6.2.32-h9c3ff4c_0.tar.bz2 + sha256: 21fac1012ff05b131d4b5d284003dbbe7b5c4c652aa9e401b46279ed5a784372 + md5: 3f3258d8f841fbac63b36b75bdac1afd + depends: + - libgcc-ng >=9.3.0 + - libstdcxx-ng >=9.3.0 + arch: x86_64 + platform: linux + license: AGPL-3.0-only + license_family: AGPL + size: 24409456 + timestamp: 1609539093147 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libdb-6.2.32-h01db608_0.tar.bz2 + sha256: 1f74d30c72d95c39315c6b5c3f1b328d00c4d5a2feff1e871fe5b71b4cb26811 + md5: 7cbfba14d5adfa65db945d5112909394 + depends: + - libgcc-ng >=9.3.0 + - libstdcxx-ng >=9.3.0 + arch: aarch64 + platform: linux + license: AGPL-3.0-only + license_family: AGPL + size: 24449415 + timestamp: 1609538998176 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.23-h4ddbbb0_0.conda + sha256: 511d801626d02f4247a04fff957cc6e9ec4cc7e8622bd9acd076bcdc5de5fe66 + md5: 8dfae1d2e74767e9ce36d5fa0d8605db + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 72255 + timestamp: 1734373823254 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libdeflate-1.23-h5e3c512_0.conda + sha256: 959419d87cd2b789a9055db95704c614f31aeb70bef7949fa2f734122a3a2863 + md5: 7e7ca2607b11b180120cefc2354fc0cb + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 69862 + timestamp: 1734373858306 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.23-hec38601_0.conda + sha256: 887c02deaed6d583459eba6367023e36d8761085b2f7126e389424f57155da53 + md5: 1d8b9588be14e71df38c525767a1ac30 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 54132 + timestamp: 1734373971372 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libdrm-2.4.124-hb9d3cd8_0.conda + sha256: f0d5ffbdf3903a7840184d14c14154b503e1a96767c328f61d99ad24b6963e52 + md5: 8bc89311041d7fcb510238cf0848ccae + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libpciaccess >=0.18,<0.19.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 242533 + timestamp: 1733424409299 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libdrm-2.4.124-h86ecc28_0.conda + sha256: a0a89edcd142942ec5730f2b7d3b3f3e702b9be2d4c675fea3a8b62d40e6adc3 + md5: a8058bcb6b4fa195aaa20452437c7727 + depends: + - libgcc >=13 + - libpciaccess >=0.18,<0.19.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 246299 + timestamp: 1733424417343 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda + sha256: d789471216e7aba3c184cd054ed61ce3f6dac6f87a50ec69291b9297f8c18724 + md5: c277e0a4d549b03ac1e9d6cbbe3d017b + depends: + - ncurses + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - ncurses >=6.5,<7.0a0 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + size: 134676 + timestamp: 1738479519902 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20250104-pl5321h976ea20_0.conda + sha256: c0b27546aa3a23d47919226b3a1635fccdb4f24b94e72e206a751b33f46fd8d6 + md5: fb640d776fc92b682a14e001980825b1 + depends: + - ncurses + - libgcc >=13 + - ncurses >=6.5,<7.0a0 + arch: aarch64 + platform: linux + license: BSD-2-Clause + license_family: BSD + size: 148125 + timestamp: 1738479808948 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda + sha256: 66aa216a403de0bb0c1340a88d1a06adaff66bae2cfd196731aa24db9859d631 + md5: 44083d2d2c2025afca315c7a172eab2b + depends: + - ncurses + - __osx >=11.0 + - ncurses >=6.5,<7.0a0 + arch: arm64 + platform: osx + license: BSD-2-Clause + license_family: BSD + size: 107691 + timestamp: 1738479560845 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libegl-1.7.0-ha4b6fd6_2.conda + sha256: 7fd5408d359d05a969133e47af580183fbf38e2235b562193d427bb9dad79723 + md5: c151d5eb730e9b7480e6d48c0fc44048 + depends: + - __glibc >=2.17,<3.0.a0 + - libglvnd 1.7.0 ha4b6fd6_2 + arch: x86_64 + platform: linux + license: LicenseRef-libglvnd + size: 44840 + timestamp: 1731330973553 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libegl-1.7.0-hd24410f_2.conda + sha256: 8962abf38a58c235611ce356b9899f6caeb0352a8bce631b0bcc59352fda455e + md5: cf105bce884e4ef8c8ccdca9fe6695e7 + depends: + - libglvnd 1.7.0 hd24410f_2 + arch: aarch64 + platform: linux + license: LicenseRef-libglvnd + size: 53551 + timestamp: 1731330990477 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda + sha256: 56541b98447b58e52d824bd59d6382d609e11de1f8adf20b23143e353d2b8d26 + md5: db833e03127376d461e1e13e76f09b6c + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + constrains: + - expat 2.6.4.* + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 73304 + timestamp: 1730967041968 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.6.4-h5ad3122_0.conda + sha256: f42e758009ba9db90d1fe7992bc3e60d0c52f71fb20923375d2c44ae69a5a2b3 + md5: f1b3fab36861b3ce945a13f0dfdfc688 + depends: + - libgcc >=13 + constrains: + - expat 2.6.4.* + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 72345 + timestamp: 1730967203789 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.4-h286801f_0.conda + sha256: e42ab5ace927ee7c84e3f0f7d813671e1cf3529f5f06ee5899606630498c2745 + md5: 38d2656dd914feb0cab8c629370768bf + depends: + - __osx >=11.0 + constrains: + - expat 2.6.4.* + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 64693 + timestamp: 1730967175868 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_0.conda + sha256: 67a6c95e33ebc763c1adc3455b9a9ecde901850eb2fceb8e646cc05ef3a663da + md5: e3eb7806380bc8bcecba6d749ad5f026 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 53415 + timestamp: 1739260413716 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.4.6-he21f813_0.conda + sha256: 41568066beefe7b319ff27d85952242e5b77fb753d705b8716041959e17c35c2 + md5: 966084fccf3ad62a3160666cda869f28 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 51513 + timestamp: 1739260449772 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 + sha256: 41b3d13efb775e340e4dba549ab5c029611ea6918703096b2eaa9c015c0750ca + md5: 086914b672be056eb70fd4285b6783b6 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 39020 + timestamp: 1636488587153 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libflac-1.4.3-h59595ed_0.conda + sha256: 65908b75fa7003167b8a8f0001e11e58ed5b1ef5e98b96ab2ba66d7c1b822c7d + md5: ee48bf17cc83a00f59ca1494d5646869 + depends: + - gettext >=0.21.1,<1.0a0 + - libgcc-ng >=12 + - libogg 1.3.* + - libogg >=1.3.4,<1.4.0a0 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 394383 + timestamp: 1687765514062 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libflac-1.4.3-h2f0025b_0.conda + sha256: b54935360349d3418b0663d787f20b3cba0b7ce3fcdf3ba5e7ef02b884759049 + md5: 520b12eab32a92e19b1f239ac545ec03 + depends: + - gettext >=0.21.1,<1.0a0 + - libgcc-ng >=12 + - libogg 1.3.* + - libogg >=1.3.4,<1.4.0a0 + - libstdcxx-ng >=12 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 371550 + timestamp: 1687765491794 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libflac-1.4.3-hb765f3a_0.conda + sha256: 3990b52782fe7207ab642df25368ed443094f6d1a7ea61854935c24192b388aa + md5: 356faba64411660f6c4d24ea31640733 + depends: + - gettext >=0.21.1,<1.0a0 + - libcxx >=15.0.7 + - libogg 1.3.* + - libogg >=1.3.4,<1.4.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 314408 + timestamp: 1687766236790 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h767d61c_2.conda + sha256: 3a572d031cb86deb541d15c1875aaa097baefc0c580b54dc61f5edab99215792 + md5: ef504d1acbd74b7cc6849ef8af47dd03 + depends: + - __glibc >=2.17,<3.0.a0 + - _openmp_mutex >=4.5 + constrains: + - libgomp 14.2.0 h767d61c_2 + - libgcc-ng ==14.2.0=*_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 847885 + timestamp: 1740240653082 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-14.2.0-he277a41_2.conda + sha256: a57f7f9ba2a12f56eafdcd25b6d75f7be10b8fc1a802a58b76a77ca8c66f4503 + md5: 6b4268a60b10f29257b51b9b67ff8d76 + depends: + - _openmp_mutex >=4.5 + constrains: + - libgcc-ng ==14.2.0=*_2 + - libgomp 14.2.0 he277a41_2 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 535507 + timestamp: 1740241069780 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_2.conda + sha256: fb7558c328b38b2f9d2e412c48da7890e7721ba018d733ebdfea57280df01904 + md5: a2222a6ada71fb478682efe483ce0f92 + depends: + - libgcc 14.2.0 h767d61c_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 53758 + timestamp: 1740240660904 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-14.2.0-he9431aa_2.conda + sha256: 9647f75cddc18b07eebe6e1f21500eed50a6af2c43c84e831b4c7a597e10d226 + md5: 692c2bb75f32cfafb6799cf6d1c5d0e0 + depends: + - libgcc 14.2.0 he277a41_2 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 53622 + timestamp: 1740241074834 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcrypt-lib-1.11.0-hb9d3cd8_2.conda + sha256: ffc3602f9298da248786f46b00d0594d26a18feeb1b07ce88f3d7d61075e39e6 + md5: e55712ff40a054134d51b89afca57dbc + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libgpg-error >=1.51,<2.0a0 + arch: x86_64 + platform: linux + license: LGPL-2.1-or-later + size: 586185 + timestamp: 1732523190369 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcrypt-lib-1.11.0-h86ecc28_2.conda + sha256: 7b0b59e11511e1c20e4d1b89ac458b4a0799da2ef10980302a5f033ecc434dee + md5: 07c1e27a75b217e5502bff34cd23c353 + depends: + - libgcc >=13 + - libgpg-error >=1.51,<2.0a0 + arch: aarch64 + platform: linux + license: LGPL-2.1-or-later + size: 635094 + timestamp: 1732523317415 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgettextpo-0.23.1-h5888daf_0.conda + sha256: 190097140d9c16637aa516757d8087f17e8c22cc844c87288da64404b81ef43c + md5: a09ce5decdef385bcce78c32809fa794 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: GPL-3.0-or-later + license_family: GPL + size: 166867 + timestamp: 1739038720211 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgettextpo-0.23.1-h5ad3122_0.conda + sha256: 5fe9ea0f19d4f89c5f5030a5aad853e05d1fe001ee003e102e4a2a01b0e157cc + md5: 04aa6b35d4581b59aafb2683345579d7 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: GPL-3.0-or-later + license_family: GPL + size: 207214 + timestamp: 1739038603075 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgettextpo-0.23.1-h493aca8_0.conda + sha256: 4dbd3f698d027330033f06778567eda5b985e2348ca92900083654a114ddd051 + md5: 18ad77def4cb7326692033eded9c815d + depends: + - __osx >=11.0 + - libiconv >=1.17,<2.0a0 + - libintl 0.23.1 h493aca8_0 + arch: arm64 + platform: osx + license: GPL-3.0-or-later + license_family: GPL + size: 166929 + timestamp: 1739039303132 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgettextpo-devel-0.23.1-h5888daf_0.conda + sha256: 90f29ec7a7e2d758cb61459e643dcb54933dcf92194be6c29b0a1591fcbb163e + md5: 7a5d5c245a6807deab87558e9efd3ef0 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libgettextpo 0.23.1 h5888daf_0 + arch: x86_64 + platform: linux + license: GPL-3.0-or-later + license_family: GPL + size: 36818 + timestamp: 1739038746565 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgettextpo-devel-0.23.1-h5ad3122_0.conda + sha256: e56df439c17f8a273ba7e9719def4ac3ff7aaadf37cad92179f4437d753e81a6 + md5: cb0245a67410b455cb8ee80f407f185f + depends: + - libgcc >=13 + - libgettextpo 0.23.1 h5ad3122_0 + arch: aarch64 + platform: linux + license: GPL-3.0-or-later + license_family: GPL + size: 37031 + timestamp: 1739038617604 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgettextpo-devel-0.23.1-h493aca8_0.conda + sha256: 6031e57ba3c03ca34422b847b98fb70e697a5c10556c8d7b30410a96754c25d8 + md5: e6f75805f4b533d449a5a6d60cbc9a71 + depends: + - __osx >=11.0 + - libgettextpo 0.23.1 h493aca8_0 + - libiconv >=1.17,<2.0a0 + - libintl 0.23.1 h493aca8_0 + arch: arm64 + platform: osx + license: GPL-3.0-or-later + license_family: GPL + size: 37264 + timestamp: 1739039332924 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_2.conda + sha256: e05263e8960da03c341650f2a3ffa4ccae4e111cb198e8933a2908125459e5a6 + md5: fb54c4ea68b460c278d26eea89cfbcc3 + depends: + - libgfortran5 14.2.0 hf1ad2bd_2 + constrains: + - libgfortran-ng ==14.2.0=*_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 53733 + timestamp: 1740240690977 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_2.conda + sha256: 996d3c0505301901a7ab23b5e7daad21635d1c065240bb0f4faf7e4f75d7f49d + md5: d8b9d9dc0c8cd97d375b48e55947ba70 + depends: + - libgfortran5 14.2.0 hb6113d0_2 + constrains: + - libgfortran-ng ==14.2.0=*_2 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 53611 + timestamp: 1740241100147 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda + sha256: 44e541b4821c96b28b27fef5630883a60ce4fee91fd9c79f25a199f8f73f337b + md5: 4a55d9e169114b2b90d3ec4604cd7bbf + depends: + - libgfortran5 13.2.0 hf226fd6_3 + arch: arm64 + platform: osx + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 110233 + timestamp: 1707330749033 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hf1ad2bd_2.conda + sha256: c17b7cf3073a1f4e1f34d50872934fa326346e104d3c445abc1e62481ad6085c + md5: 556a4fdfac7287d349b8f09aba899693 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14.2.0 + constrains: + - libgfortran 14.2.0 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 1461978 + timestamp: 1740240671964 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_2.conda + sha256: 7b9e1d3666a00e5a52e5d43c003bd1c73ab472804be513c070aaedca9c4c2a9a + md5: cd754566661513808ef2408c4ab99a2f + depends: + - libgcc >=14.2.0 + constrains: + - libgfortran 14.2.0 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 1100765 + timestamp: 1740241083241 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda + sha256: bafc679eedb468a86aa4636061c55966186399ee0a04b605920d208d97ac579a + md5: 66ac81d54e95c534ae488726c1f698ea + depends: + - llvm-openmp >=8.0.0 + constrains: + - libgfortran 5.0.0 13_2_0_*_3 + arch: arm64 + platform: osx + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 997381 + timestamp: 1707330687590 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgl-1.7.0-ha4b6fd6_2.conda + sha256: dc2752241fa3d9e40ce552c1942d0a4b5eeb93740c9723873f6fcf8d39ef8d2d + md5: 928b8be80851f5d8ffb016f9c81dae7a + depends: + - __glibc >=2.17,<3.0.a0 + - libglvnd 1.7.0 ha4b6fd6_2 + - libglx 1.7.0 ha4b6fd6_2 + arch: x86_64 + platform: linux + license: LicenseRef-libglvnd + size: 134712 + timestamp: 1731330998354 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgl-1.7.0-hd24410f_2.conda + sha256: 3e954380f16255d1c8ae5da3bd3044d3576a0e1ac2e3c3ff2fe8f2f1ad2e467a + md5: 0d00176464ebb25af83d40736a2cd3bb + depends: + - libglvnd 1.7.0 hd24410f_2 + - libglx 1.7.0 hd24410f_2 + arch: aarch64 + platform: linux + license: LicenseRef-libglvnd + size: 145442 + timestamp: 1731331005019 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.82.2-h2ff4ddf_1.conda + sha256: f0804a9e46ae7b32ca698d26c1c95aa82a91f71b6051883d4a46bea725be9ea4 + md5: 37d1af619d999ee8f1f73cf5a06f4e2f + depends: + - __glibc >=2.17,<3.0.a0 + - libffi >=3.4,<4.0a0 + - libgcc >=13 + - libiconv >=1.17,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - pcre2 >=10.44,<10.45.0a0 + constrains: + - glib 2.82.2 *_1 + arch: x86_64 + platform: linux + license: LGPL-2.1-or-later + size: 3923974 + timestamp: 1737037491054 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libglib-2.82.2-hc486b8e_1.conda + sha256: aed7967aaea90b5649eb7eb0eab2ed2270323245eb0832b228e876fbeaae7f76 + md5: 6dfc5a88cfd58288999ab5081f57de9c + depends: + - libffi >=3.4,<4.0a0 + - libgcc >=13 + - libiconv >=1.17,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - pcre2 >=10.44,<10.45.0a0 + constrains: + - glib 2.82.2 *_1 + arch: aarch64 + platform: linux + license: LGPL-2.1-or-later + size: 4004134 + timestamp: 1737037535030 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libglib-2.82.2-hdff4504_1.conda + sha256: d002aeaa51424e331f8504a54b6ba4388a6011a0ebcac29296f3d14282bf733b + md5: 849da57c370384ce48bef2e050488882 + depends: + - __osx >=11.0 + - libffi >=3.4,<4.0a0 + - libiconv >=1.17,<2.0a0 + - libintl >=0.22.5,<1.0a0 + - libzlib >=1.3.1,<2.0a0 + - pcre2 >=10.44,<10.45.0a0 + constrains: + - glib 2.82.2 *_1 + arch: arm64 + platform: osx + license: LGPL-2.1-or-later + size: 3643364 + timestamp: 1737037789629 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libglvnd-1.7.0-ha4b6fd6_2.conda + sha256: 1175f8a7a0c68b7f81962699751bb6574e6f07db4c9f72825f978e3016f46850 + md5: 434ca7e50e40f4918ab701e3facd59a0 + depends: + - __glibc >=2.17,<3.0.a0 + arch: x86_64 + platform: linux + license: LicenseRef-libglvnd + size: 132463 + timestamp: 1731330968309 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libglvnd-1.7.0-hd24410f_2.conda + sha256: 57ec3898a923d4bcc064669e90e8abfc4d1d945a13639470ba5f3748bd3090da + md5: 9e115653741810778c9a915a2f8439e7 + arch: aarch64 + platform: linux + license: LicenseRef-libglvnd + size: 152135 + timestamp: 1731330986070 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libglx-1.7.0-ha4b6fd6_2.conda + sha256: 2d35a679624a93ce5b3e9dd301fff92343db609b79f0363e6d0ceb3a6478bfa7 + md5: c8013e438185f33b13814c5c488acd5c + depends: + - __glibc >=2.17,<3.0.a0 + - libglvnd 1.7.0 ha4b6fd6_2 + - xorg-libx11 >=1.8.10,<2.0a0 + arch: x86_64 + platform: linux + license: LicenseRef-libglvnd + size: 75504 + timestamp: 1731330988898 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libglx-1.7.0-hd24410f_2.conda + sha256: 6591af640cb05a399fab47646025f8b1e1a06a0d4bbb4d2e320d6629b47a1c61 + md5: 1d4269e233636148696a67e2d30dad2a + depends: + - libglvnd 1.7.0 hd24410f_2 + - xorg-libx11 >=1.8.9,<2.0a0 + arch: aarch64 + platform: linux + license: LicenseRef-libglvnd + size: 77736 + timestamp: 1731330998960 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h767d61c_2.conda + sha256: 1a3130e0b9267e781b89399580f3163632d59fe5b0142900d63052ab1a53490e + md5: 06d02030237f4d5b3d9a7e7d348fe3c6 + depends: + - __glibc >=2.17,<3.0.a0 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 459862 + timestamp: 1740240588123 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_2.conda + sha256: 4e303711fb7413bf98995beac58e731073099d7a669a3b81e49330ca8da05174 + md5: b11c09d9463daf4cae492d29806b1889 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 462783 + timestamp: 1740241005079 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgpg-error-1.51-hbd13f7d_1.conda + sha256: 9e0c09c1faf2151ade3ccb64e52d3c1f2dde85c00e37c6a3e6a8bced2aba68be + md5: 168cc19c031482f83b23c4eebbb94e26 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: LGPL-2.1-only + license_family: GPL + size: 268740 + timestamp: 1731920927644 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgpg-error-1.51-h05609ea_1.conda + sha256: e819b3ba47dc7e195e8e8a9c874d0b45690cccb2fa741f1abd55b28323f9fc43 + md5: 9cabbbc1c3c8e9fa30e90748f14534dd + depends: + - libgcc >=13 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: LGPL-2.1-only + license_family: GPL + size: 277785 + timestamp: 1731920977846 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h4ce23a2_1.conda + sha256: 18a4afe14f731bfb9cf388659994263904d20111e42f841e9eea1bb6f91f4ab4 + md5: e796ff8ddc598affdf7c173d6145f087 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: LGPL-2.1-only + size: 713084 + timestamp: 1740128065462 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libiconv-1.18-hc99b53d_1.conda + sha256: 3db14977036fe1f511a6dbecacbeff3fdb58482c5c0cf87a2ea3232f5a540836 + md5: 81541d85a45fbf4d0a29346176f1f21c + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: LGPL-2.1-only + size: 718600 + timestamp: 1740130562607 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.18-hfe07756_1.conda + sha256: d30780d24bf3a30b4f116fca74dedb4199b34d500fe6c52cced5f8cc1e926f03 + md5: 450e6bdc0c7d986acf7b8443dce87111 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: LGPL-2.1-only + size: 681804 + timestamp: 1740128227484 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libintl-0.23.1-h493aca8_0.conda + sha256: 30d2a8a37070615a61777ce9317968b54c2197d04e9c6c2eea6cdb46e47f94dc + md5: 7b8faf3b5fc52744bda99c4cd1d6438d + depends: + - __osx >=11.0 + - libiconv >=1.17,<2.0a0 + arch: arm64 + platform: osx + license: LGPL-2.1-or-later + size: 78921 + timestamp: 1739039271409 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libintl-devel-0.23.1-h493aca8_0.conda + sha256: 5db07fa57b8cb916784353aa035fbf32aa7ee2905e38a8e70b168160372833f0 + md5: f9c6d5edc5951ef4010be8cbde9f12d4 + depends: + - __osx >=11.0 + - libiconv >=1.17,<2.0a0 + - libintl 0.23.1 h493aca8_0 + arch: arm64 + platform: osx + license: LGPL-2.1-or-later + size: 39774 + timestamp: 1739039317742 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda + sha256: b954e09b7e49c2f2433d6f3bb73868eda5e378278b0f8c1dd10a7ef090e14f2f + md5: ea25936bb4080d843790b586850f82b8 + depends: + - libgcc-ng >=12 + constrains: + - jpeg <0.0.0a + arch: x86_64 + platform: linux + license: IJG AND BSD-3-Clause AND Zlib + size: 618575 + timestamp: 1694474974816 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libjpeg-turbo-3.0.0-h31becfc_1.conda + sha256: 675bc1f2a8581cd34a86c412663ec29c5f90c1d9f8d11866aa1ade5cdbdf8429 + md5: ed24e702928be089d9ba3f05618515c6 + depends: + - libgcc-ng >=12 + constrains: + - jpeg <0.0.0a + arch: aarch64 + platform: linux + license: IJG AND BSD-3-Clause AND Zlib + size: 647126 + timestamp: 1694475003570 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.0.0-hb547adb_1.conda + sha256: a42054eaa38e84fc1e5ab443facac4bbc9d1b6b6f23f54b7bf4f1eb687e1d993 + md5: 3ff1e053dc3a2b8e36b9bfa4256a58d1 + constrains: + - jpeg <0.0.0a + arch: arm64 + platform: osx + license: IJG AND BSD-3-Clause AND Zlib + size: 547541 + timestamp: 1694475104253 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-31_h7ac8fdf_openblas.conda + build_number: 31 + sha256: f583661921456e798aba10972a8abbd9d33571c655c1f66eff450edc9cbefcf3 + md5: 452b98eafe050ecff932f0ec832dd03f + depends: + - libblas 3.9.0 31_h59b9bed_openblas + constrains: + - libcblas =3.9.0=31*_openblas + - liblapacke =3.9.0=31*_openblas + - blas =2.131=openblas + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 16790 + timestamp: 1740087997375 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-31_h411afd4_openblas.conda + build_number: 31 + sha256: 27613828ff6fb258b2e58802617df549f00089660ea8ab6c55c68f042c570162 + md5: 41dbff5eb805a75c120a7b7a1c744dc2 + depends: + - libblas 3.9.0 31_h1a9f1db_openblas + constrains: + - blas =2.131=openblas + - libcblas =3.9.0=31*_openblas + - liblapacke =3.9.0=31*_openblas + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 16845 + timestamp: 1740087923843 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-31_hc9a63f6_openblas.conda + build_number: 31 + sha256: fe55b9aaf82c6c0192c3d1fcc9b8e884f97492dda9a8de5dae29334b3135fab5 + md5: ff57a55a2cbce171ef5707fb463caf19 + depends: + - libblas 3.9.0 31_h10e41b3_openblas + constrains: + - liblapacke =3.9.0=31*_openblas + - libcblas =3.9.0=31*_openblas + - blas =2.131=openblas + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 17033 + timestamp: 1740088134988 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda + sha256: cad52e10319ca4585bc37f0bc7cce99ec7c15dc9168e42ccb96b741b0a27db3f + md5: 42d5b6a0f30d3c10cd88cb8584fda1cb + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: 0BSD + size: 111357 + timestamp: 1738525339684 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.4-h86ecc28_0.conda + sha256: 96413664f0fade54a4931940d18749cfc8e6308349dbb0cb83adb2394ca1f730 + md5: b88244e0a115cc34f7fbca9b11248e76 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: 0BSD + size: 124197 + timestamp: 1738528201520 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.4-h39f12f2_0.conda + sha256: 560c59d3834cc652a84fb45531bd335ad06e271b34ebc216e380a89798fe8e2c + md5: e3fd1f8320a100f2b210e690a57cd615 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: 0BSD + size: 98945 + timestamp: 1738525462560 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libmad-0.15.1b-h0b41bf4_1001.conda + sha256: 9e94cec54c4baadaa652c761179b8d32771fe7fa55faf6c78c2e35f942367f74 + md5: dc5cc4700f02ffeecc48253c9f29025b + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: GPL-2.0-only + license_family: GPL + size: 78561 + timestamp: 1670815547616 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libmad-0.15.1b-hb4cce97_1001.conda + sha256: f39c36ce40bc75bc2eb101e8569caf166d6a02e0b1ef95403146b4f9310df0e3 + md5: 10814f7a570b160cea0c885bc1c5e8d5 + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: GPL-2.0-only + license_family: GPL + size: 79598 + timestamp: 1673354561940 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libmad-0.15.1b-h1a8c8d9_1001.conda + sha256: 8e9209acf4bf6865760e61dc0d86116ffc9efc3e13c7f559eb1ea78532a3a625 + md5: 1eb30852ed396fbe6e301fe6d715aef9 + arch: arm64 + platform: osx + license: GPL-2.0-only + license_family: GPL + size: 77255 + timestamp: 1670815732700 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda + sha256: 26d77a3bb4dceeedc2a41bd688564fe71bf2d149fdcf117049970bc02ff1add6 + md5: 30fd6e37fe21f86f4bd26d6ee73eeec7 + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: LGPL-2.1-only + license_family: GPL + size: 33408 + timestamp: 1697359010159 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda + sha256: fd18c2b75d7411096428d36a70b36b1a17e31f7b8956b6905d145792d49e97f8 + md5: c14f32510f694e3185704d89967ec422 + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: LGPL-2.1-only + license_family: GPL + size: 34501 + timestamp: 1697358973269 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libogg-1.3.5-h4ab18f5_0.conda + sha256: 5eda3fe92b99b25dd4737226a9485078ab405672d9f621be75edcb68f1e9026d + md5: 601bfb4b3c6f0b844443bb81a56651e0 + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 205914 + timestamp: 1719301575771 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libogg-1.3.5-h0b9eccb_0.conda + sha256: e65acc318b7535fb8f2b5e994fe6eac3ae0be3bdb2acbe6037841d033c51f290 + md5: 15cb67b1b9dd0d4b37c81daba785e6ad + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 208233 + timestamp: 1719301637185 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libogg-1.3.5-h99b78c6_0.conda + sha256: 685f73b7241978007dfe0cecb9cae46c6a26d87d192b6f85a09eb65023c0b99e + md5: 57b668b9b78dea2c08e44bb2385d57c0 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 205451 + timestamp: 1719301708541 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.29-pthreads_h94d23a6_0.conda + sha256: cc5389ea254f111ef17a53df75e8e5209ef2ea6117e3f8aced88b5a8e51f11c4 + md5: 0a4d0252248ef9a0f88f2ba8b8a08e12 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libgfortran + - libgfortran5 >=14.2.0 + constrains: + - openblas >=0.3.29,<0.3.30.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 5919288 + timestamp: 1739825731827 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.29-pthreads_h9d3fd7e_0.conda + sha256: 3a2ccf4c9098cd18a636e9b7fff947fdeb4962bcfb75c9d6fd80b8c50caf6a3c + md5: a99e2bfcb1ad6362544c71281eb617e9 + depends: + - libgcc >=14 + - libgfortran + - libgfortran5 >=14.2.0 + constrains: + - openblas >=0.3.29,<0.3.30.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 4801657 + timestamp: 1739825308974 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.29-openmp_hf332438_0.conda + sha256: 8989d9e01ec8c9b2d48dbb5efbe70b356fcd15990fb53b64fcb84798982c0343 + md5: 0cd1148c68f09027ee0b0f0179f77c30 + depends: + - __osx >=11.0 + - libgfortran 5.* + - libgfortran5 >=13.2.0 + - llvm-openmp >=18.1.8 + constrains: + - openblas >=0.3.29,<0.3.30.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 4168442 + timestamp: 1739825514918 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libopus-1.3.1-h7f98852_1.tar.bz2 + sha256: 0e1c2740ebd1c93226dc5387461bbcf8142c518f2092f3ea7551f77755decc8f + md5: 15345e56d527b330e1cacbdf58676e8f + depends: + - libgcc-ng >=9.3.0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 260658 + timestamp: 1606823578035 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopus-1.3.1-hf897c2e_1.tar.bz2 + sha256: 92a87ade11af2cff41c35cf941f1a79390fde1f113f8e51e1cce30d31b7c8305 + md5: ac7534c50934ed25e4749d74b04c667a + depends: + - libgcc-ng >=9.3.0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 328825 + timestamp: 1606823775764 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopus-1.3.1-h27ca646_1.tar.bz2 + sha256: e9912101a58cbc609a1917c5289f3bd1f600c82ed3a1c90a6dd4ca02df77958a + md5: 3d0dbee0ccd2f6d6781d270313627b62 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 252854 + timestamp: 1606823635137 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libpciaccess-0.18-hd590300_0.conda + sha256: c0a30ac74eba66ea76a4f0a39acc7833f5ed783a632ca3bb6665b2d81aabd2fb + md5: 48f4330bfcd959c3cfb704d424903c82 + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 28361 + timestamp: 1707101388552 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpciaccess-0.18-h31becfc_0.conda + sha256: 0c6806dcd53da457c472cf22ad7793aef074cb198a10677a91b02c7dceeee770 + md5: 6d48179630f00e8c9ad9e30879ce1e54 + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 29211 + timestamp: 1707101477910 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.47-h943b412_0.conda + sha256: 23367d71da58c9a61c8cbd963fcffb92768d4ae5ffbef9a47cdf1f54f98c5c36 + md5: 55199e2ae2c3651f6f9b2a447b47bdc9 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux + license: zlib-acknowledgement + size: 288701 + timestamp: 1739952993639 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.47-hec79eb8_0.conda + sha256: 3861a65106a5f876eff3fc19042c3edb528216114b9f8e64b37aebf003deda11 + md5: c4b1ba0d7cef5002759d2f156722feee + depends: + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + arch: aarch64 + platform: linux + license: zlib-acknowledgement + size: 291536 + timestamp: 1739957375872 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.47-h3783ad8_0.conda + sha256: dc93cc30f59b28e7812c6f14d2c2e590b509c38092cce7ababe6b23541b7ed8f + md5: 3550e05e3af94a3fa9cef2694417ccdf + depends: + - __osx >=11.0 + - libzlib >=1.3.1,<2.0a0 + arch: arm64 + platform: osx + license: zlib-acknowledgement + size: 259332 + timestamp: 1739953032676 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda + sha256: 51125ebb8b7152e4a4e69fd2398489c4ec8473195c27cde3cbdf1cb6d18c5493 + md5: d8703f1ffe5a06356f06467f1d0b9464 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 2960815 + timestamp: 1735577210663 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.3-h44a3b7b_1.conda + sha256: ecb69f2b1668e784b41ba667493be846662d5ef702bef64fb2e013bb1364cdc4 + md5: 68f807f7cc13951652bbe048253fd405 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 2788074 + timestamp: 1735576315676 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.3-h3bd63a1_1.conda + sha256: f58a16b13ad53346903c833e266f83c3d770a43a432659b98710aed85ca885e7 + md5: bdbfea4cf45ae36652c6bbcc2e7ebe91 + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=18 + - libzlib >=1.3.1,<2.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 2271580 + timestamp: 1735576361997 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsentencepiece-0.2.0-h8e10757_10.conda + sha256: dc399e0f04a09f8c1807c3b36e578eb81f81891c0ddf21de9c1fb9f048ce4031 + md5: 4f43dbcfacd3cc9a183dd3a48b94d3c0 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 823649 + timestamp: 1735627841126 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsentencepiece-0.2.0-h6164ad9_10.conda + sha256: 57074803772f65d4075b7d6dc17ff5aa40ec3a30109fa4225ca16911504c4a8b + md5: a7a192edc9cfba26a27df3283203e6a1 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 800865 + timestamp: 1735627982895 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsentencepiece-0.2.0-he13a0af_10.conda + sha256: 3347a8840d085ce1661928e736229f068d56c84312fbed90886e059023d85611 + md5: 1f67e5e30edd56e0a0bf6df6bb711a9d + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 754657 + timestamp: 1735628030895 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsndfile-1.2.2-hc60ed4a_1.conda + sha256: f709cbede3d4f3aee4e2f8d60bd9e256057f410bd60b8964cb8cf82ec1457573 + md5: ef1910918dd895516a769ed36b5b3a4e + depends: + - lame >=3.100,<3.101.0a0 + - libflac >=1.4.3,<1.5.0a0 + - libgcc-ng >=12 + - libogg >=1.3.4,<1.4.0a0 + - libopus >=1.3.1,<2.0a0 + - libstdcxx-ng >=12 + - libvorbis >=1.3.7,<1.4.0a0 + - mpg123 >=1.32.1,<1.33.0a0 + arch: x86_64 + platform: linux + license: LGPL-2.1-or-later + license_family: LGPL + size: 354372 + timestamp: 1695747735668 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsndfile-1.2.2-h79657aa_1.conda + sha256: 8fcd5e45d6fb071e8baf492ebb8710203fd5eedf0cb791e007265db373c89942 + md5: ad8e62c0faec46b1442f960489c80b49 + depends: + - lame >=3.100,<3.101.0a0 + - libflac >=1.4.3,<1.5.0a0 + - libgcc-ng >=12 + - libogg >=1.3.4,<1.4.0a0 + - libopus >=1.3.1,<2.0a0 + - libstdcxx-ng >=12 + - libvorbis >=1.3.7,<1.4.0a0 + - mpg123 >=1.32.1,<1.33.0a0 + arch: aarch64 + platform: linux + license: LGPL-2.1-or-later + license_family: LGPL + size: 396501 + timestamp: 1695747749825 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsndfile-1.2.2-h9739721_1.conda + sha256: e559f2f72bb03a554aa5b74230fa19160d33c7981ed385294f1eea9a5871cc03 + md5: 77d552455cbc52e089cdb9df5b283199 + depends: + - lame >=3.100,<3.101.0a0 + - libcxx >=15.0.7 + - libflac >=1.4.3,<1.5.0a0 + - libogg >=1.3.4,<1.4.0a0 + - libopus >=1.3.1,<2.0a0 + - libvorbis >=1.3.7,<1.4.0a0 + - mpg123 >=1.32.1,<1.33.0a0 + arch: arm64 + platform: osx + license: LGPL-2.1-or-later + license_family: LGPL + size: 317185 + timestamp: 1695747981394 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda + sha256: 0105bd108f19ea8e6a78d2d994a6d4a8db16d19a41212070d2d1d48a63c34161 + md5: a587892d3c13b6621a6091be690dbca2 + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: ISC + size: 205978 + timestamp: 1716828628198 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.20-h68df207_0.conda + sha256: 448df5ea3c5cf1af785aad46858d7a5be0522f4234a4dc9bb764f4d11ff3b981 + md5: 2e4a8f23bebdcb85ca8e5a0fbe75666a + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: ISC + size: 177394 + timestamp: 1716828514515 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda + sha256: fade8223e1e1004367d7101dd17261003b60aa576df6d7802191f8972f7470b1 + md5: a7ce36e284c5faaf93c220dfc39e3abd + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: ISC + size: 164972 + timestamp: 1716828607917 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.49.1-hee588c1_1.conda + sha256: 7a09eef804ef7cf4d88215c2297eabb72af8ad0bd5b012060111c289f14bbe7d + md5: 73cea06049cc4174578b432320a003b8 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux + license: Unlicense + size: 915956 + timestamp: 1739953155793 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.49.1-h5eb1b54_1.conda + sha256: 920fb3b7d3b873babf79a3e392cc82d43b8bd02a573ccaff34219efb5cf7b51e + md5: 150d64241fa27d9d35a7f421ca968a6c + depends: + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + arch: aarch64 + platform: linux + license: Unlicense + size: 915118 + timestamp: 1739953101699 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.1-h3f77e49_1.conda + sha256: 266639fb10ca92287961574b0b4d6031fa40dd9d723d64a0fcb08513a24dab03 + md5: c83357a21092bd952933c36c5cb4f4d6 + depends: + - __osx >=11.0 + - libzlib >=1.3.1,<2.0a0 + arch: arm64 + platform: osx + license: Unlicense + size: 898767 + timestamp: 1739953312379 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-h8f9b012_2.conda + sha256: 8f5bd92e4a24e1d35ba015c5252e8f818898478cb3bc50bd8b12ab54707dc4da + md5: a78c856b6dc6bf4ea8daeb9beaaa3fb0 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc 14.2.0 h767d61c_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 3884556 + timestamp: 1740240685253 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_2.conda + sha256: c30a74bc996013907f6d9f344da007c26d98ef9a0831151cd50aece3125c45d5 + md5: eadee2cda99697e29411c1013c187b92 + depends: + - libgcc 14.2.0 he277a41_2 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 3810779 + timestamp: 1740241094774 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_2.conda + sha256: e86f38b007cf97cc2c67cd519f2de12a313c4ee3f5ef11652ad08932a5e34189 + md5: c75da67f045c2627f59e6fcb5f4e3a9b + depends: + - libstdcxx 14.2.0 h8f9b012_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 53830 + timestamp: 1740240722530 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_2.conda + sha256: 0107886ead6f255956d8e520f8dff260f9ab3d0d51512f18c52710c406e4b2df + md5: c934c1fddad582fcc385b608eb06a70c + depends: + - libstdcxx 14.2.0 h3f4de04_2 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 53715 + timestamp: 1740241126343 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsystemd0-257.3-h3dc2cb9_0.conda + sha256: dd566e2ef4a83b27d2b26d988cbbed50456294892744639f30f19954d2ee3287 + md5: df057752e83bd254f6d65646eb67cd2e + depends: + - __glibc >=2.17,<3.0.a0 + - libcap >=2.71,<2.72.0a0 + - libgcc >=13 + - libgcrypt-lib >=1.11.0,<2.0a0 + - liblzma >=5.6.4,<6.0a0 + - lz4-c >=1.10.0,<1.11.0a0 + - zstd >=1.5.6,<1.6.0a0 + arch: x86_64 + platform: linux + license: LGPL-2.1-or-later + size: 487271 + timestamp: 1739569869860 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsystemd0-257.3-h27834fc_0.conda + sha256: 707567df4c23c3c62ba97845bc130378526b2ff7ed0800c899bff7a19cf67e1d + md5: c5887d8cb34661658118cc7951772335 + depends: + - libcap >=2.71,<2.72.0a0 + - libgcc >=13 + - libgcrypt-lib >=1.11.0,<2.0a0 + - liblzma >=5.6.4,<6.0a0 + - lz4-c >=1.10.0,<1.11.0a0 + - zstd >=1.5.6,<1.6.0a0 + arch: aarch64 + platform: linux + license: LGPL-2.1-or-later + size: 509851 + timestamp: 1739569947167 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hd9ff511_3.conda + sha256: b224e16b88d76ea95e4af56e2bc638c603bd26a770b98d117d04541d3aafa002 + md5: 0ea6510969e1296cc19966fad481f6de + depends: + - __glibc >=2.17,<3.0.a0 + - lerc >=4.0.0,<5.0a0 + - libdeflate >=1.23,<1.24.0a0 + - libgcc >=13 + - libjpeg-turbo >=3.0.0,<4.0a0 + - liblzma >=5.6.3,<6.0a0 + - libstdcxx >=13 + - libwebp-base >=1.4.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - zstd >=1.5.6,<1.6.0a0 + arch: x86_64 + platform: linux + license: HPND + size: 428173 + timestamp: 1734398813264 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.0-h88f7998_3.conda + sha256: 5888bd66ba7606ae8596856c7dac800940ecad0aed77d6aa37db69d434c81cf0 + md5: 36a0ea4a173338c8725dc0807e99cf22 + depends: + - lerc >=4.0.0,<5.0a0 + - libdeflate >=1.23,<1.24.0a0 + - libgcc >=13 + - libjpeg-turbo >=3.0.0,<4.0a0 + - liblzma >=5.6.3,<6.0a0 + - libstdcxx >=13 + - libwebp-base >=1.4.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - zstd >=1.5.6,<1.6.0a0 + arch: aarch64 + platform: linux + license: HPND + size: 464699 + timestamp: 1734398752249 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-h551f018_3.conda + sha256: 91417846157e04992801438a496b151df89604b2e7c6775d6f701fcd0cbed5ae + md5: a5d084a957563e614ec0c0196d890654 + depends: + - __osx >=11.0 + - lerc >=4.0.0,<5.0a0 + - libcxx >=18 + - libdeflate >=1.23,<1.24.0a0 + - libjpeg-turbo >=3.0.0,<4.0a0 + - liblzma >=5.6.3,<6.0a0 + - libwebp-base >=1.4.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - zstd >=1.5.6,<1.6.0a0 + arch: arm64 + platform: osx + license: HPND + size: 370600 + timestamp: 1734398863052 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libudev1-257.3-h9a4d06a_0.conda + sha256: 35bdafc4b02f61a327f82bb11263c31466367e50b4e5efab3d413509315cb0a7 + md5: e7817c912b25f7599a50eba270e1a463 + depends: + - __glibc >=2.17,<3.0.a0 + - libcap >=2.71,<2.72.0a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: LGPL-2.1-or-later + size: 142897 + timestamp: 1739569881116 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libudev1-257.3-h1187dce_0.conda + sha256: 996a477ced74941583c88417b5a341ce036b58662981d3792799d4d9ec93071e + md5: 7bcdab7b8ee62692770d292969d6cef2 + depends: + - libcap >=2.71,<2.72.0a0 + - libgcc >=13 + arch: aarch64 + platform: linux + license: LGPL-2.1-or-later + size: 154046 + timestamp: 1739569955486 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libunwind-1.6.2-h9c3ff4c_0.tar.bz2 + sha256: f2ac872920833960e514ce9efd8f7c08ce66dd870738d73839d1bce1ac497de6 + md5: a730b2badd586580c5752cc73842e068 + depends: + - libgcc-ng >=9.4.0 + - libstdcxx-ng >=9.4.0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 75491 + timestamp: 1638450786937 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libunwind-1.6.2-h01db608_0.tar.bz2 + sha256: 7862d36ffc9f6b2ed3381ce77c78b9e5691d7353a19dd2050630868e192adf6f + md5: 93b7bbf9099cfe09e67c0abe34bb7885 + depends: + - libgcc-ng >=9.4.0 + - libstdcxx-ng >=9.4.0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 90479 + timestamp: 1638452154070 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liburing-2.9-h84d6215_0.conda + sha256: bfa34a5a929d792dfcfbbe2d9ee21bd870d73d646512e21c871dab0b80194468 + md5: ecd409e7bfcf4ee73f74d7a2cc91a4c3 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 121336 + timestamp: 1738604403935 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liburing-2.9-h17cf362_0.conda + sha256: 2922ab8ac4cdd966c1b13dad6ccc4c07c7db2054400843ee443ffd5e7b3f292e + md5: 8eef9430276ab3dbe6ad5b8f23ff5e26 + depends: + - libgcc >=13 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 123614 + timestamp: 1738605619021 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libusb-1.0.27-h520f47e_100.conda + sha256: c641cdf5c398441df9863291c20574c37b1e4a6113b18a41c6a43ccc1df1b92c + md5: 82e46dc001ab1ef291554ead981b0cde + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc-ng >=12 + - libudev1 >=255 + arch: x86_64 + platform: linux + license: LGPL-2.1-or-later + size: 86196 + timestamp: 1706828413450 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libusb-1.0.27-hfa5f0b2_100.conda + sha256: c3ad82698430b627de6773fa82120cf659405a957c975639f41b3922d4219d9e + md5: ff95dc61e4f11520aa3158979c776c78 + depends: + - libgcc-ng >=12 + - libudev1 >=255 + arch: aarch64 + platform: linux + license: LGPL-2.1-or-later + size: 89408 + timestamp: 1706828386412 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libusb-1.0.27-h93a5062_100.conda + sha256: 37c377ee456eb77a4f4b15e289ef6c2d213786d2f4c11c7320fd2f654e7642d6 + md5: 711b8190e3e1e30a6598f5f76e0f8a20 + arch: arm64 + platform: osx + license: LGPL-2.1-or-later + size: 80917 + timestamp: 1706828785473 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda + sha256: 787eb542f055a2b3de553614b25f09eefb0a0931b0c87dbcce6efdfd92f04f18 + md5: 40b61aab5c7ba9ff276c41cfffe6b80b + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 33601 + timestamp: 1680112270483 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda + sha256: 616277b0c5f7616c2cdf36f6c316ea3f9aa5bb35f2d4476a349ab58b9b91675f + md5: 000e30b09db0b7c775b21695dff30969 + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 35720 + timestamp: 1680113474501 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libvorbis-1.3.7-h9c3ff4c_0.tar.bz2 + sha256: 53080d72388a57b3c31ad5805c93a7328e46ff22fab7c44ad2a86d712740af33 + md5: 309dec04b70a3cc0f1e84a4013683bc0 + depends: + - libgcc-ng >=9.3.0 + - libogg >=1.3.4,<1.4.0a0 + - libstdcxx-ng >=9.3.0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 286280 + timestamp: 1610609811627 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libvorbis-1.3.7-h01db608_0.tar.bz2 + sha256: 1ade4727be5c52b287001b8094d02af66342dfe0ba13ef69222aaaf2e9be4342 + md5: c2863ff72c6d8a59054f8b9102c206e9 + depends: + - libgcc-ng >=9.3.0 + - libogg >=1.3.4,<1.4.0a0 + - libstdcxx-ng >=9.3.0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 292082 + timestamp: 1610616294416 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libvorbis-1.3.7-h9f76cd9_0.tar.bz2 + sha256: 60457217e20d8b24a8390c81338a8fa69c8656b440c067cd82f802a09da93cb9 + md5: 92a1a88d1a1d468c19d9e1659ac8d3df + depends: + - libcxx >=11.0.0 + - libogg >=1.3.4,<1.4.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 254839 + timestamp: 1610609991029 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.5.0-h851e524_0.conda + sha256: c45283fd3e90df5f0bd3dbcd31f59cdd2b001d424cf30a07223655413b158eaf + md5: 63f790534398730f59e1b899c3644d4a + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + constrains: + - libwebp 1.5.0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 429973 + timestamp: 1734777489810 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libwebp-base-1.5.0-h0886dbf_0.conda + sha256: b3d881a0ae08bb07fff7fa8ead506c8d2e0388733182fe4f216f3ec5d61ffcf0 + md5: 95ef4a689b8cc1b7e18b53784d88f96b + depends: + - libgcc >=13 + constrains: + - libwebp 1.5.0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 362623 + timestamp: 1734779054659 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.5.0-h2471fea_0.conda + sha256: f8bdb876b4bc8cb5df47c28af29188de8911c3fea4b799a33743500149de3f4a + md5: 569466afeb84f90d5bb88c11cc23d746 + depends: + - __osx >=11.0 + constrains: + - libwebp 1.5.0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 290013 + timestamp: 1734777593617 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda + sha256: 666c0c431b23c6cec6e492840b176dde533d48b7e6fb8883f5071223433776aa + md5: 92ed62436b625154323d40d5f2f11dd7 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - pthread-stubs + - xorg-libxau >=1.0.11,<2.0a0 + - xorg-libxdmcp + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 395888 + timestamp: 1727278577118 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcb-1.17.0-h262b8f6_0.conda + sha256: 461cab3d5650ac6db73a367de5c8eca50363966e862dcf60181d693236b1ae7b + md5: cd14ee5cca2464a425b1dbfc24d90db2 + depends: + - libgcc >=13 + - pthread-stubs + - xorg-libxau >=1.0.11,<2.0a0 + - xorg-libxdmcp + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 397493 + timestamp: 1727280745441 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda + sha256: 6ae68e0b86423ef188196fff6207ed0c8195dd84273cb5623b85aa08033a410c + md5: 5aa797f8787fe7a17d1b0821485b5adc + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: LGPL-2.1-or-later + size: 100393 + timestamp: 1702724383534 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda + sha256: 6b46c397644091b8a26a3048636d10b989b1bf266d4be5e9474bf763f828f41f + md5: b4df5d7d4b63579d081fd3a4cf99740e + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: LGPL-2.1-or-later + size: 114269 + timestamp: 1702724369203 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libxkbcommon-1.8.0-hc4a0caf_0.conda + sha256: 583203155abcfb03938d8473afbf129156b5b30301a0f796c8ecca8c5b7b2ed2 + md5: f1656760dbf05f47f962bfdc59fc3416 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + - libxcb >=1.17.0,<2.0a0 + - libxml2 >=2.13.5,<3.0a0 + - xkeyboard-config + - xorg-libxau >=1.0.12,<2.0a0 + arch: x86_64 + platform: linux + license: MIT/X11 Derivative + license_family: MIT + size: 642349 + timestamp: 1738735301999 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxkbcommon-1.8.0-h2ef6bd0_0.conda + sha256: d43a637fd237e77b9e72fe0723a06aa998779cf3f88bbe8260c31a9098340374 + md5: 90d998781d2895f73671bba13339d109 + depends: + - libgcc >=13 + - libstdcxx >=13 + - libxcb >=1.17.0,<2.0a0 + - libxml2 >=2.13.5,<3.0a0 + - xkeyboard-config + - xorg-libxau >=1.0.12,<2.0a0 + arch: aarch64 + platform: linux + license: MIT/X11 Derivative + license_family: MIT + size: 652340 + timestamp: 1738735348944 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.6-h8d12d68_0.conda + sha256: db8af71ea9c0ae95b7cb4a0f59319522ed2243942437a1200ceb391493018d85 + md5: 328382c0e0ca648e5c189d5ec336c604 + depends: + - __glibc >=2.17,<3.0.a0 + - icu >=75.1,<76.0a0 + - libgcc >=13 + - libiconv >=1.18,<2.0a0 + - liblzma >=5.6.4,<6.0a0 + - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 690296 + timestamp: 1739952967309 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.6-h2e0c361_0.conda + sha256: bb075df08b04b1b47e75a250f2ebbb2401c3367057d64b8d44ef1ef3f44480e1 + md5: a159a92f890f862408c951c08f13415f + depends: + - icu >=75.1,<76.0a0 + - libgcc >=13 + - libiconv >=1.18,<2.0a0 + - liblzma >=5.6.4,<6.0a0 + - libzlib >=1.3.1,<2.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 733707 + timestamp: 1739953178456 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda + sha256: d4bfe88d7cb447768e31650f06257995601f89076080e76df55e3112d4e47dc4 + md5: edb0dca6bc32e4f4789199455a1dbeb8 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + constrains: + - zlib 1.3.1 *_2 + arch: x86_64 + platform: linux + license: Zlib + license_family: Other + size: 60963 + timestamp: 1727963148474 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda + sha256: 5a2c1eeef69342e88a98d1d95bff1603727ab1ff4ee0e421522acd8813439b84 + md5: 08aad7cbe9f5a6b460d0976076b6ae64 + depends: + - libgcc >=13 + constrains: + - zlib 1.3.1 *_2 + arch: aarch64 + platform: linux + license: Zlib + license_family: Other + size: 66657 + timestamp: 1727963199518 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda + sha256: ce34669eadaba351cd54910743e6a2261b67009624dbc7daeeafdef93616711b + md5: 369964e85dc26bfe78f41399b366c435 + depends: + - __osx >=11.0 + constrains: + - zlib 1.3.1 *_2 + arch: arm64 + platform: osx + license: Zlib + license_family: Other + size: 46438 + timestamp: 1727963202283 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda + sha256: b92a669f2059874ebdcb69041b6c243d68ffc3fb356ac1339cec44aeb27245d7 + md5: c4d54bfd3817313ce758aa76283b118d + depends: + - __osx >=11.0 + constrains: + - openmp 19.1.7|19.1.7.* + arch: arm64 + platform: osx + license: Apache-2.0 WITH LLVM-exception + license_family: APACHE + size: 280830 + timestamp: 1736986295869 +- conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.10.0-h5888daf_1.conda + sha256: 47326f811392a5fd3055f0f773036c392d26fdb32e4d8e7a8197eed951489346 + md5: 9de5350a85c4a20c685259b889aa6393 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + size: 167055 + timestamp: 1733741040117 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.10.0-h5ad3122_1.conda + sha256: 67e55058d275beea76c1882399640c37b5be8be4eb39354c94b610928e9a0573 + md5: 6654e411da94011e8fbe004eacb8fe11 + depends: + - libgcc >=13 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: BSD-2-Clause + license_family: BSD + size: 184953 + timestamp: 1733740984533 +- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022718-release.conda + noarch: python + sha256: f3dcb14fed5470c0fc521542cbd2f1c56ca7e46d560f46176b8f926198cb3cbd + md5: 01fe5e0cf46c84a6345e323ad1316764 + depends: + - max-core ==25.2.0.dev2025022718 release + - max-python ==25.2.0.dev2025022718 release + - mojo-jupyter ==25.2.0.dev2025022718 release + - mblack ==25.2.0.dev2025022718 release + license: LicenseRef-Modular-Proprietary + size: 9905 + timestamp: 1740680254354 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022718-release.conda + sha256: 847d5767109a305d7bcad4ac29248a74a384034692934a0c54b00a590c27094a + md5: fc5a9ae36c7805979bd58ca55a25066f + depends: + - mblack ==25.2.0.dev2025022718 release + license: LicenseRef-Modular-Proprietary + size: 249811868 + timestamp: 1740680254354 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022718-release.conda + sha256: 250c35ecccd302e6c7de836ac200a5ece92e74508c2590c585d8803d488fd650 + md5: d88728b468c85902512a0f9b99251035 + depends: + - mblack ==25.2.0.dev2025022718 release + license: LicenseRef-Modular-Proprietary + size: 252108573 + timestamp: 1740680207793 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022718-release.conda + sha256: fb28d9e61aa507ea84b470082d3dc96844a24fe672d4e4c57e832655c5d0a202 + md5: dd8734453f7276a258f3351cc5c506c3 + depends: + - mblack ==25.2.0.dev2025022718 release + license: LicenseRef-Modular-Proprietary + size: 217273450 + timestamp: 1740681819160 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022718-release.conda + noarch: python + sha256: 831b4d62f66f0083321121c6ba25dedab3ee41d5e9f19d9752969592214af398 + md5: f828ace91aa057e4774e84ad459adccf + depends: + - max-core ==25.2.0.dev2025022718 release + - click >=8.0.0 + - numpy >=1.18,<2.0 + - sentencepiece >=0.2.0 + - tqdm >=4.67.1 + constrains: + - aiohttp >=3.11.12 + - fastapi >=0.114.2 + - gguf >=0.14.0 + - hf-transfer >=0.1.9 + - httpx >=0.28.1 + - huggingface_hub >=0.24.0 + - nvitop >=1.4.1 + - opentelemetry-api >=1.29.0 + - opentelemetry-exporter-otlp-proto-http >=1.27.0 + - opentelemetry-exporter-prometheus <1.0.0 + - opentelemetry-sdk >=1.29.0,<2.0 + - pillow >=10.3.0 + - prometheus_client >=0.21.0 + - prometheus-async >=22.2.0 + - psutil >=6.1.1 + - pydantic + - pydantic-settings >=2.7.1 + - pyinstrument >=5.0.1 + - python-json-logger >=2.0.7 + - requests >=2.32.3 + - rich >=13.9.4 + - safetensors >=0.5.2 + - sentinel >=0.3.0 + - sse-starlette >=2.1.2 + - tokenizers >=0.19.0 + - pytorch >=2.2.2,<=2.5.1 + - transformers >=4.40.1 + - uvicorn >=0.34.0 + - uvloop >=0.21.0 + - xgrammar ==0.1.11 + license: LicenseRef-Modular-Proprietary + size: 123584411 + timestamp: 1740680254354 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022718-release.conda + noarch: python + sha256: b9e5755b7bf6314a37a90ef0250c93f5e7c693954d7a6389a97ab9ef06e23cc3 + md5: bfd2e752d0fc9516b78a17169ce9cc78 + depends: + - max-core ==25.2.0.dev2025022718 release + - click >=8.0.0 + - numpy >=1.18,<2.0 + - sentencepiece >=0.2.0 + - tqdm >=4.67.1 + constrains: + - aiohttp >=3.11.12 + - fastapi >=0.114.2 + - gguf >=0.14.0 + - hf-transfer >=0.1.9 + - httpx >=0.28.1 + - huggingface_hub >=0.24.0 + - nvitop >=1.4.1 + - opentelemetry-api >=1.29.0 + - opentelemetry-exporter-otlp-proto-http >=1.27.0 + - opentelemetry-exporter-prometheus <1.0.0 + - opentelemetry-sdk >=1.29.0,<2.0 + - pillow >=10.3.0 + - prometheus_client >=0.21.0 + - prometheus-async >=22.2.0 + - psutil >=6.1.1 + - pydantic + - pydantic-settings >=2.7.1 + - pyinstrument >=5.0.1 + - python-json-logger >=2.0.7 + - requests >=2.32.3 + - rich >=13.9.4 + - safetensors >=0.5.2 + - sentinel >=0.3.0 + - sse-starlette >=2.1.2 + - tokenizers >=0.19.0 + - pytorch >=2.2.2,<=2.5.1 + - transformers >=4.40.1 + - uvicorn >=0.34.0 + - uvloop >=0.21.0 + - xgrammar ==0.1.11 + license: LicenseRef-Modular-Proprietary + size: 126004454 + timestamp: 1740680207793 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022718-release.conda + noarch: python + sha256: 7da9f4655082bb64c2b0cc996ffefa0ce5c49744854ed77a9b0d000e27cf5a55 + md5: b16d498a148aa61dca2a6bfec5cb8e46 + depends: + - max-core ==25.2.0.dev2025022718 release + - click >=8.0.0 + - numpy >=1.18,<2.0 + - sentencepiece >=0.2.0 + - tqdm >=4.67.1 + constrains: + - aiohttp >=3.11.12 + - fastapi >=0.114.2 + - gguf >=0.14.0 + - hf-transfer >=0.1.9 + - httpx >=0.28.1 + - huggingface_hub >=0.24.0 + - nvitop >=1.4.1 + - opentelemetry-api >=1.29.0 + - opentelemetry-exporter-otlp-proto-http >=1.27.0 + - opentelemetry-exporter-prometheus <1.0.0 + - opentelemetry-sdk >=1.29.0,<2.0 + - pillow >=10.3.0 + - prometheus_client >=0.21.0 + - prometheus-async >=22.2.0 + - psutil >=6.1.1 + - pydantic + - pydantic-settings >=2.7.1 + - pyinstrument >=5.0.1 + - python-json-logger >=2.0.7 + - requests >=2.32.3 + - rich >=13.9.4 + - safetensors >=0.5.2 + - sentinel >=0.3.0 + - sse-starlette >=2.1.2 + - tokenizers >=0.19.0 + - pytorch >=2.2.2,<=2.5.1 + - transformers >=4.40.1 + - uvicorn >=0.34.0 + - uvloop >=0.21.0 + - xgrammar ==0.1.11 + license: LicenseRef-Modular-Proprietary + size: 112658409 + timestamp: 1740681819160 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022718-release.conda + noarch: python + sha256: ff042a8abfed0e2e36b207e3d4f59a2b4577dea7f099b08d1aaef128ab796f09 + md5: 719ca7123d53415adcdd7f0cb8396c51 + depends: + - python >=3.9,<3.13 + - click >=8.0.0 + - mypy_extensions >=0.4.3 + - packaging >=22.0 + - pathspec >=0.9.0 + - platformdirs >=2 + - typing_extensions >=v4.12.2 + - python + license: MIT + size: 130852 + timestamp: 1740680254353 +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022718-release.conda + noarch: python + sha256: 19c33e23b27e240fee0b2a1d56921802ac88558dc2da417837cd590175561e16 + md5: 6b8d00b15817db11e026f824f7f0ba14 + depends: + - max-core ==25.2.0.dev2025022718 release + - python >=3.9,<3.13 + - jupyter_client >=8.6.2,<8.7 + - python + license: LicenseRef-Modular-Proprietary + size: 22981 + timestamp: 1740680254354 +- conda: https://conda.anaconda.org/conda-forge/linux-64/mpg123-1.32.9-hc50e24c_0.conda + sha256: 39c4700fb3fbe403a77d8cc27352fa72ba744db487559d5d44bf8411bb4ea200 + md5: c7f302fd11eeb0987a6a5e1f3aed6a21 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: LGPL-2.1-only + license_family: LGPL + size: 491140 + timestamp: 1730581373280 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/mpg123-1.32.9-h65af167_0.conda + sha256: d65d5a00278544639ba4f99887154be00a1f57afb0b34d80b08e5cba40a17072 + md5: cdf140c7690ab0132106d3bc48bce47d + depends: + - libgcc >=13 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: LGPL-2.1-only + license_family: LGPL + size: 558708 + timestamp: 1730581372400 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/mpg123-1.32.9-hf642e45_0.conda + sha256: 070bbbbb96856c325c0b6637638ce535afdc49adbaff306e2238c6032d28dddf + md5: d2b4857bdc3b76c36e23236172d09840 + depends: + - __osx >=11.0 + - libcxx >=18 + arch: arm64 + platform: osx + license: LGPL-2.1-only + license_family: LGPL + size: 360712 + timestamp: 1730581491116 +- conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda + sha256: 1895f47b7d68581a6facde5cb13ab8c2764c2e53a76bd746f8f98910dc4e08fe + md5: 29097e7ea634a45cc5386b95cac6568f + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 10854 + timestamp: 1733230986902 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda + sha256: 3fde293232fa3fca98635e1167de6b7c7fda83caf24b9d6c91ec9eefb4f4d586 + md5: 47e340acb35de30501a76c7c799c41d7 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: X11 AND BSD-3-Clause + size: 891641 + timestamp: 1738195959188 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-ha32ae93_3.conda + sha256: 91cfb655a68b0353b2833521dc919188db3d8a7f4c64bea2c6a7557b24747468 + md5: 182afabe009dc78d8b73100255ee6868 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: X11 AND BSD-3-Clause + size: 926034 + timestamp: 1738196018799 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda + sha256: 2827ada40e8d9ca69a153a45f7fd14f32b2ead7045d3bbb5d10964898fe65733 + md5: 068d497125e4bf8a66bf707254fff5ae + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: X11 AND BSD-3-Clause + size: 797030 + timestamp: 1738196177597 +- conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda + sha256: fe3459c75cf84dcef6ef14efcc4adb0ade66038ddd27cadb894f34f4797687d8 + md5: d8285bea2a350f63fab23bf460221f3f + depends: + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - libgcc-ng >=12 + - liblapack >=3.9.0,<4.0a0 + - libstdcxx-ng >=12 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - numpy-base <0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 7484186 + timestamp: 1707225809722 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda + sha256: 23767677a7790bee5457d5e75ebd508b9a31c5354216f4310dd1acfca3f7a6f9 + md5: 9cebf5a06cb87d4569cd68df887af476 + depends: + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - libgcc-ng >=12 + - liblapack >=3.9.0,<4.0a0 + - libstdcxx-ng >=12 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - numpy-base <0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 6614296 + timestamp: 1707225994762 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda + sha256: c8841d6d6f61fd70ca80682efbab6bdb8606dc77c68d8acabfbd7c222054f518 + md5: d83fc83d589e2625a3451c9a7e21047c + depends: + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - libcxx >=16 + - liblapack >=3.9.0,<4.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - numpy-base <0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 6073136 + timestamp: 1707226249608 +- conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.1-h7b32b05_0.conda + sha256: cbf62df3c79a5c2d113247ddea5658e9ff3697b6e741c210656e239ecaf1768f + md5: 41adf927e746dc75ecf0ef841c454e48 + depends: + - __glibc >=2.17,<3.0.a0 + - ca-certificates + - libgcc >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 2939306 + timestamp: 1739301879343 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.1-hd08dc88_0.conda + sha256: d80b52b56b2206053968270069616868cbeb289ef855cf1584b1bb0fef61b37c + md5: 09036190605c57eaecf01218e0e9542d + depends: + - ca-certificates + - libgcc >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 3476570 + timestamp: 1739303256089 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.1-h81ee809_0.conda + sha256: 4f8e2389e1b711b44182a075516d02c80fa7a3a7e25a71ff1b5ace9eae57a17a + md5: 75f9f0c7b1740017e2db83a53ab9a28e + depends: + - __osx >=11.0 + - ca-certificates + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 2934522 + timestamp: 1739301896733 +- conda: https://conda.anaconda.org/conda-forge/linux-64/opusfile-0.12-h3358134_2.conda + sha256: f4df9df880e405e5c856383f869d5b9d434f78fb7c234c9e7b099ab604fb7fc3 + md5: 5931bcae00b98f952696b6bcdd0be34b + depends: + - libgcc-ng >=12 + - libogg >=1.3.4,<1.4.0a0 + - libopus >=1.3.1,<2.0a0 + - openssl >=3.0.7,<4.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 65901 + timestamp: 1670387479735 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/opusfile-0.12-hf55b2d5_2.conda + sha256: a0ffa8054df68fad5f3533338557c7b985480ee3cf39f0e251ee6b03ff6896cf + md5: a9a71d77aec174e4532f91f560bc413b + depends: + - libgcc-ng >=12 + - libogg >=1.3.4,<1.4.0a0 + - libopus >=1.3.1,<2.0a0 + - openssl >=3.0.7,<4.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 91662 + timestamp: 1673436651852 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/opusfile-0.12-h5643135_2.conda + sha256: 108dbee936a8e3c21d2aa5618326343844df8f1fe14067c4dc5a731d7945ecc0 + md5: e34e472ae04beeb642c5e937a2aeeebf + depends: + - libogg >=1.3.4,<1.4.0a0 + - libopus >=1.3.1,<2.0a0 + - openssl >=3.0.7,<4.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 80128 + timestamp: 1670387790769 +- conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + sha256: da157b19bcd398b9804c5c52fc000fcb8ab0525bdb9c70f95beaa0bb42f85af1 + md5: 3bfed7e6228ebf2f7b9eaa47f1b4e2aa + depends: + - python >=3.8 + license: Apache-2.0 + license_family: APACHE + size: 60164 + timestamp: 1733203368787 +- conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + sha256: 9f64009cdf5b8e529995f18e03665b03f5d07c0b17445b8badef45bde76249ee + md5: 617f15191456cc6a13db418a275435e5 + depends: + - python >=3.9 + license: MPL-2.0 + license_family: MOZILLA + size: 41075 + timestamp: 1733233471940 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.44-hba22ea6_2.conda + sha256: 1087716b399dab91cc9511d6499036ccdc53eb29a288bebcb19cf465c51d7c0d + md5: df359c09c41cd186fffb93a2d87aa6f5 + depends: + - __glibc >=2.17,<3.0.a0 + - bzip2 >=1.0.8,<2.0a0 + - libgcc-ng >=12 + - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 952308 + timestamp: 1723488734144 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pcre2-10.44-h070dd5b_2.conda + sha256: e9f4b912e48514771d477f2ee955f59d4ff4ef799c3d4d16e4d0f335ce91df67 + md5: 94022de9682cb1a0bb18a99cbc3541b3 + depends: + - bzip2 >=1.0.8,<2.0a0 + - libgcc-ng >=12 + - libzlib >=1.3.1,<2.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 884590 + timestamp: 1723488793100 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pcre2-10.44-h297a79d_2.conda + sha256: 83153c7d8fd99cab33c92ce820aa7bfed0f1c94fc57010cf227b6e3c50cb7796 + md5: 147c83e5e44780c7492998acbacddf52 + depends: + - __osx >=11.0 + - bzip2 >=1.0.8,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 618973 + timestamp: 1723488853807 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.44.2-h29eaf8c_0.conda + sha256: 747c58db800d5583fee78e76240bf89cbaeedf7ab1ef339c2990602332b9c4be + md5: 5e2a7acfa2c24188af39e7944e1b3604 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 381072 + timestamp: 1733698987122 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pixman-0.44.2-h86a87f0_0.conda + sha256: 289c88d26530e427234adf7a8eb11e762d2beaf3c0a337c1c9887f60480e33e1 + md5: 95689fc369832398e82d17c56ff5df8a + depends: + - libgcc >=13 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 288697 + timestamp: 1733700860569 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pixman-0.44.2-h2f9eb0b_0.conda + sha256: 28855d4cb2d9fc9a6bd9196dadbaecd6868ec706394cec2f88824a61ba4b1bc0 + md5: fa8e429fdb9e5b757281f69b8cc4330b + depends: + - __osx >=11.0 + - libcxx >=18 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 201076 + timestamp: 1733699127167 +- conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + sha256: bb50f6499e8bc1d1a26f17716c97984671121608dc0c3ecd34858112bce59a27 + md5: 577852c7e53901ddccc7e6a9959ddebe + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 20448 + timestamp: 1733232756001 +- conda: https://conda.anaconda.org/conda-forge/linux-64/portaudio-19.6.0-h7c63dc7_9.conda + sha256: c09ae032d0303abfea34c0957834538b48133b0431283852741ed3e0f66fdb36 + md5: 893f2c33af6b03cfd04820a8c31f5798 + depends: + - alsa-lib >=1.2.10,<1.3.0.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 115512 + timestamp: 1693868383 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/portaudio-19.6.0-h5c6c0ed_9.conda + sha256: a73e31c5fe9d717cd42470b394018f4e48eed4a439b9371d2c6d380c86aed591 + md5: ab049f8223bccc6f621975beaa75c624 + depends: + - alsa-lib >=1.2.10,<1.3.0.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 118203 + timestamp: 1693868376750 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/portaudio-19.6.0-h13dd4ca_9.conda + sha256: 5ff2b55d685c29dfe632ef856796a4b862305088543d4982f0b807e8d9bb756e + md5: d325d46394b6c46d15718c855fb20b4a + depends: + - libcxx >=15.0.7 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 78863 + timestamp: 1693868663440 +- conda: https://conda.anaconda.org/conda-forge/linux-64/portmidi-2.0.4-h7c63dc7_2.conda + sha256: f4e1245409e97b5b46e655ba301da5e9bc1d6ae64f5ae46004583dae31214868 + md5: 5b2518aa80f149ee6881f5ad959f5d59 + depends: + - alsa-lib >=1.2.10,<1.3.0.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 43765 + timestamp: 1693881734349 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/portmidi-2.0.4-h5c6c0ed_2.conda + sha256: 64ed7bdebe45af7987f65402506fa5ad6f9fd339a93f8fe7a57c6bcce497022f + md5: 8ee28835da08f915cba9317fccb6396d + depends: + - alsa-lib >=1.2.10,<1.3.0.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 45266 + timestamp: 1693882668197 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/portmidi-2.0.4-h13dd4ca_2.conda + sha256: b948bea6ef3203d049997ca348ba0d751a3d891579388e53d323693b20896af6 + md5: fe77195a950275fe63e560b1b855e818 + depends: + - libcxx >=15.0.7 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 47319 + timestamp: 1693882007724 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda + sha256: 9c88f8c64590e9567c6c80823f0328e58d3b1efb0e1c539c0315ceca764e0973 + md5: b3c17d95b5a10c6e64a21fa17573e70e + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 8252 + timestamp: 1726802366959 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pthread-stubs-0.4-h86ecc28_1002.conda + sha256: 977dfb0cb3935d748521dd80262fe7169ab82920afd38ed14b7fee2ea5ec01ba + md5: bb5a90c93e3bac3d5690acf76b4a6386 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 8342 + timestamp: 1726803319942 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pulseaudio-client-17.0-hb77b528_0.conda + sha256: b27c0c8671bd95c205a61aeeac807c095b60bc76eb5021863f919036d7a964fc + md5: 07f45f1be1c25345faddb8db0de8039b + depends: + - dbus >=1.13.6,<2.0a0 + - libgcc-ng >=12 + - libglib >=2.78.3,<3.0a0 + - libsndfile >=1.2.2,<1.3.0a0 + - libsystemd0 >=255 + constrains: + - pulseaudio 17.0 *_0 + arch: x86_64 + platform: linux + license: LGPL-2.1-or-later + license_family: LGPL + size: 757633 + timestamp: 1705690081905 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pulseaudio-client-17.0-h729494f_0.conda + sha256: 209eac3123ee2c84a35401626941c4aa64e04e2c9854084ddeba6432c6078a41 + md5: f35f57712d5c2abca98c85a51a408bc1 + depends: + - dbus >=1.13.6,<2.0a0 + - libgcc-ng >=12 + - libglib >=2.78.3,<3.0a0 + - libsndfile >=1.2.2,<1.3.0a0 + - libsystemd0 >=255 + constrains: + - pulseaudio 17.0 *_0 + arch: aarch64 + platform: linux + license: LGPL-2.1-or-later + license_family: LGPL + size: 766184 + timestamp: 1705690164726 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pygame-2.6.1-py312h4fcb14b_0.conda + sha256: 7a5582c3eed17d0223cbd79dfb25ebae1ec7f8b06eb550fb65e163adb5f1c75b + md5: 80c4be6aac23ad6dfc2aeca1b1ab7d1f + depends: + - __glibc >=2.17,<3.0.a0 + - fontconfig >=2.14.2,<3.0a0 + - fonts-conda-ecosystem + - freetype >=2.12.1,<3.0a0 + - libgcc >=13 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libpng >=1.6.44,<1.7.0a0 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - portmidi >=2.0.4,<3.0a0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - sdl2 >=2.30.7,<3.0a0 + - sdl2_image >=2.8.2,<3.0a0 + - sdl2_mixer >=2.6.3,<3.0a0 + - sdl2_ttf >=2.22.0,<3.0a0 + arch: x86_64 + platform: linux + license: LGPL-2.1-only + size: 2984508 + timestamp: 1727636750824 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pygame-2.6.1-py312hb2c8110_0.conda + sha256: 347dc650cbcb5b25f632ae62c87357c15db79849ff582887f6910ae245dc7d4f + md5: f4a1a0e1e2a435699366317ffeabd1bc + depends: + - fontconfig >=2.14.2,<3.0a0 + - fonts-conda-ecosystem + - freetype >=2.12.1,<3.0a0 + - libgcc >=13 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libpng >=1.6.44,<1.7.0a0 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - portmidi >=2.0.4,<3.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - sdl2 >=2.30.7,<3.0a0 + - sdl2_image >=2.8.2,<3.0a0 + - sdl2_mixer >=2.6.3,<3.0a0 + - sdl2_ttf >=2.22.0,<3.0a0 + arch: aarch64 + platform: linux + license: LGPL-2.1-only + size: 2979554 + timestamp: 1727636776938 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pygame-2.6.1-py312hb14fe3b_0.conda + sha256: 78b91e7b4cee736829f96ec8445674d03b60c03cc51da6f74cac1a14286fe686 + md5: 3a2a4db46a57a51f36f4d79f9f9b6c97 + depends: + - __osx >=11.0 + - fontconfig >=2.14.2,<3.0a0 + - fonts-conda-ecosystem + - freetype >=2.12.1,<3.0a0 + - libcxx >=17 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libpng >=1.6.44,<1.7.0a0 + - libzlib >=1.3.1,<2.0a0 + - portmidi >=2.0.4,<3.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - sdl2 >=2.30.7,<3.0a0 + - sdl2_image >=2.8.2,<3.0a0 + - sdl2_mixer >=2.6.3,<3.0a0 + - sdl2_ttf >=2.22.0,<3.0a0 + arch: arm64 + platform: osx + license: LGPL-2.1-only + size: 2932509 + timestamp: 1727636775263 +- conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.9-h9e4cc4f_0_cpython.conda + sha256: 64fed5178f1e9c8ac0f572ac0ce37955f5dee7b2bcac665202bc14f1f7dd618a + md5: 5665f0079432f8848079c811cdb537d5 + depends: + - __glibc >=2.17,<3.0.a0 + - bzip2 >=1.0.8,<2.0a0 + - ld_impl_linux-64 >=2.36.1 + - libexpat >=2.6.4,<3.0a0 + - libffi >=3.4,<4.0a0 + - libgcc >=13 + - liblzma >=5.6.4,<6.0a0 + - libnsl >=2.0.1,<2.1.0a0 + - libsqlite >=3.48.0,<4.0a0 + - libuuid >=2.38.1,<3.0a0 + - libxcrypt >=4.4.36 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.4.1,<4.0a0 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + constrains: + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Python-2.0 + size: 31581682 + timestamp: 1739521496324 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.9-h1683364_0_cpython.conda + sha256: 0366f38918bceda8ff5917d7bbe1cea2bc8b6c74e7245eb0e4b0d3c2d37f76cf + md5: 2e7ad70254455e0508adabff10218512 + depends: + - bzip2 >=1.0.8,<2.0a0 + - ld_impl_linux-aarch64 >=2.36.1 + - libexpat >=2.6.4,<3.0a0 + - libffi >=3.4,<4.0a0 + - libgcc >=13 + - liblzma >=5.6.4,<6.0a0 + - libnsl >=2.0.1,<2.1.0a0 + - libsqlite >=3.48.0,<4.0a0 + - libuuid >=2.38.1,<3.0a0 + - libxcrypt >=4.4.36 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.4.1,<4.0a0 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + constrains: + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Python-2.0 + size: 13804161 + timestamp: 1739519531794 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.9-hc22306f_0_cpython.conda + sha256: cbf81a78d3ca6e663e827523e6ddbc28369cac488da047a28f83875eb52fe5f6 + md5: 1d105a6c46a753e3c0bab54a1ad24063 + depends: + - __osx >=11.0 + - bzip2 >=1.0.8,<2.0a0 + - libexpat >=2.6.4,<3.0a0 + - libffi >=3.4,<4.0a0 + - liblzma >=5.6.4,<6.0a0 + - libsqlite >=3.48.0,<4.0a0 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.4.1,<4.0a0 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + constrains: + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Python-2.0 + size: 12947786 + timestamp: 1739520092196 +- conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + sha256: a50052536f1ef8516ed11a844f9413661829aa083304dc624c5925298d078d79 + md5: 5ba79d7c71f03c678c8ead841f347d6e + depends: + - python >=3.9 + - six >=1.5 + license: Apache-2.0 + license_family: APACHE + size: 222505 + timestamp: 1733215763718 +- conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda + build_number: 5 + sha256: d10e93d759931ffb6372b45d65ff34d95c6000c61a07e298d162a3bc2accebb0 + md5: 0424ae29b104430108f5218a66db7260 + constrains: + - python 3.12.* *_cpython + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 6238 + timestamp: 1723823388266 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.12-5_cp312.conda + build_number: 5 + sha256: 5ccdad9981753cc4a2d126e356673a21c0cd5b34e209cb8d476a3947d4ad9b39 + md5: 62b20f305498284a07dc6c45fd0e5c87 + constrains: + - python 3.12.* *_cpython + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 6329 + timestamp: 1723823366253 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-5_cp312.conda + build_number: 5 + sha256: 49d624e4b809c799d2bf257b22c23cf3fc4460f5570d9a58e7ad86350aeaa1f4 + md5: b76f9b1c862128e56ac7aa8cd2333de9 + constrains: + - python 3.12.* *_cpython + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 6278 + timestamp: 1723823099686 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.1-py312hbf22597_0.conda + sha256: 90ec0da0317d3d76990a40c61e1709ef859dd3d8c63838bad2814f46a63c8a2e + md5: 7cec8d0dac15a2d9fea8e49879aa779d + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libsodium >=1.0.20,<1.0.21.0a0 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - zeromq >=4.3.5,<4.4.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 382698 + timestamp: 1738271121975 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyzmq-26.2.1-py312h2427ae1_0.conda + sha256: 9558f9330093e5c21b7c04e2e212e19b9b88ad9c808315f12c0765b244018a09 + md5: 0520da8de6870d8ff63e818e927d1524 + depends: + - libgcc >=13 + - libsodium >=1.0.20,<1.0.21.0a0 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - zeromq >=4.3.5,<4.4.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 375156 + timestamp: 1738273130727 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.1-py312hf4875e0_0.conda + sha256: 70d398b334668dc597d33e27847ede1b0829a639b9c91ee845355e52c86c2293 + md5: bfbefdb140b546a80827ff7c9d5ac7b8 + depends: + - __osx >=11.0 + - libcxx >=18 + - libsodium >=1.0.20,<1.0.21.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - zeromq >=4.3.5,<4.4.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 364649 + timestamp: 1738271263898 +- conda: https://conda.anaconda.org/conda-forge/linux-64/rav1e-0.6.6-he8a937b_2.conda + sha256: 91b3c1ced90d04ee2eded1f72cf3cbc19ff05a25e41876ef0758266a5bab009f + md5: 77d9955b4abddb811cb8ab1aa7d743e4 + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + size: 15423721 + timestamp: 1694329261357 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/rav1e-0.6.6-h1d8f897_2.conda + sha256: 093f21277dc5763cf0397e016e8291c2b796926ebbb173428dc9cdf5d012f328 + md5: 12c850a42b1ad1ed46a284a93959ee6a + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: BSD-2-Clause + license_family: BSD + size: 14347236 + timestamp: 1694329141875 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/rav1e-0.6.6-h69fbcac_2.conda + sha256: be6174970193cb4d0ffa7d731a93a4c9542881dbc7ab24e74b460ef312161169 + md5: e309ae86569b1cd55a0285fa4e939844 + arch: arm64 + platform: osx + license: BSD-2-Clause + license_family: BSD + size: 1526706 + timestamp: 1694329743011 +- conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda + sha256: 2d6d0c026902561ed77cd646b5021aef2d4db22e57a5b0178dfc669231e06d2c + md5: 283b96675859b20a825f8fa30f311446 + depends: + - libgcc >=13 + - ncurses >=6.5,<7.0a0 + arch: x86_64 + platform: linux + license: GPL-3.0-only + license_family: GPL + size: 282480 + timestamp: 1740379431762 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8382b9d_2.conda + sha256: 54bed3a3041befaa9f5acde4a37b1a02f44705b7796689574bcf9d7beaad2959 + md5: c0f08fc2737967edde1a272d4bf41ed9 + depends: + - libgcc >=13 + - ncurses >=6.5,<7.0a0 + arch: aarch64 + platform: linux + license: GPL-3.0-only + license_family: GPL + size: 291806 + timestamp: 1740380591358 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda + sha256: 7db04684d3904f6151eff8673270922d31da1eea7fa73254d01c437f49702e34 + md5: 63ef3f6e6d6d5c589e64f11263dc5676 + depends: + - ncurses >=6.5,<7.0a0 + arch: arm64 + platform: osx + license: GPL-3.0-only + license_family: GPL + size: 252359 + timestamp: 1740379663071 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sdl2-2.32.50-h9b8e6db_1.conda + sha256: c253ddeafdc46bb53cdac722d1305a94bbbd9905e6a112e295ce7bb9e7a2f7e7 + md5: 0d27110a2f613abc268e31b3c1d5fb4f + depends: + - __glibc >=2.17,<3.0.a0 + - libegl >=1.7.0,<2.0a0 + - libgcc >=13 + - libgl >=1.7.0,<2.0a0 + - libstdcxx >=13 + - sdl3 >=3.2.4,<4.0a0 + arch: x86_64 + platform: linux + license: Zlib + size: 513266 + timestamp: 1740516135153 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sdl2-2.32.50-h7851d19_1.conda + sha256: d2c1d0baf85f3484fa8630f3067f7411c8abcb8fee0ad67342d82e706c59230e + md5: 83f2b36f187b0269471774983ecfa39f + depends: + - libegl >=1.7.0,<2.0a0 + - libgcc >=13 + - libgl >=1.7.0,<2.0a0 + - libstdcxx >=13 + - sdl3 >=3.2.4,<4.0a0 + arch: aarch64 + platform: linux + license: Zlib + size: 523908 + timestamp: 1740516151246 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sdl2-2.32.50-h994913f_1.conda + sha256: 0a6ad048f2f311bebc05fc7a31d26373b693949ad0887edf48909b0acb849b5e + md5: ff589d08171ffeb5867e9c6a68ec913d + depends: + - __osx >=11.0 + - libcxx >=18 + - sdl3 >=3.2.4,<4.0a0 + arch: arm64 + platform: osx + license: Zlib + size: 493998 + timestamp: 1740516182244 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sdl2_image-2.8.2-h06ee604_1.conda + sha256: f18184e016e2e57306d1540dea584d38f4617d7ddb6aad4af6b5f21c52fa39ea + md5: 65e113270b460dcdfc4dc0a80bb3d11c + depends: + - libavif16 >=1.0.4,<2.0a0 + - libgcc-ng >=12 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libpng >=1.6.43,<1.7.0a0 + - libstdcxx-ng >=12 + - libtiff >=4.6.0,<4.8.0a0 + - libwebp-base >=1.4.0,<2.0a0 + - libzlib >=1.2.13,<2.0.0a0 + - sdl2 >=2.30.2,<3.0a0 + arch: x86_64 + platform: linux + license: Zlib + size: 152110 + timestamp: 1716857107234 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sdl2_image-2.8.2-hd95cb85_1.conda + sha256: 8bdd72e4789616b0db5fc8e756a4156d3bd7fd35cf96c1cb892d9f6bff3f6508 + md5: 45fbcda052d64b07fa601d965a41cb69 + depends: + - libavif16 >=1.0.4,<2.0a0 + - libgcc-ng >=12 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libpng >=1.6.43,<1.7.0a0 + - libstdcxx-ng >=12 + - libtiff >=4.6.0,<4.8.0a0 + - libwebp-base >=1.4.0,<2.0a0 + - libzlib >=1.2.13,<2.0.0a0 + - sdl2 >=2.30.2,<3.0a0 + arch: aarch64 + platform: linux + license: Zlib + size: 151138 + timestamp: 1716858240454 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sdl2_image-2.8.2-h376e2e1_1.conda + sha256: 8c385478a7b6a6e34b3b3f3d48ed48f504698544987ad331f03a7b43b11d689a + md5: 247d2c5a873901ef51f378c69a2c708e + depends: + - __osx >=11.0 + - libavif16 >=1.0.4,<2.0a0 + - libcxx >=16 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libpng >=1.6.43,<1.7.0a0 + - libtiff >=4.6.0,<4.8.0a0 + - libwebp-base >=1.4.0,<2.0a0 + - libzlib >=1.2.13,<2.0.0a0 + - sdl2 >=2.30.2,<3.0a0 + arch: arm64 + platform: osx + license: Zlib + size: 118041 + timestamp: 1716857215118 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sdl2_mixer-2.6.3-h8830914_1.conda + sha256: c3e99e222b091f26cfd1d6be22c5a2973df9e7caa020262f9d9523f340344a95 + md5: 1a2b60be4d860a0c419a87176c85c3ad + depends: + - fluidsynth >=2.3.4,<2.4.0a0 + - libflac >=1.4.3,<1.5.0a0 + - libgcc-ng >=12 + - libmad >=0.15.1b,<0.16.0a0 + - libogg >=1.3.4,<1.4.0a0 + - libstdcxx-ng >=12 + - libvorbis >=1.3.7,<1.4.0a0 + - mpg123 >=1.32.1,<1.33.0a0 + - opusfile >=0.12,<0.13.0a0 + - sdl2 >=2.28.3,<3.0a0 + arch: x86_64 + platform: linux + license: Zlib + size: 202966 + timestamp: 1695761744535 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sdl2_mixer-2.6.3-h422cae6_1.conda + sha256: 8fa4580bddd4d33f5fbddf5c54873613a7f8fcd9f781656fbf9fd1b27975b196 + md5: 75e56f84030bd1244d8bff3c55e8418e + depends: + - fluidsynth >=2.3.4,<2.4.0a0 + - libflac >=1.4.3,<1.5.0a0 + - libgcc-ng >=12 + - libmad >=0.15.1b,<0.16.0a0 + - libogg >=1.3.4,<1.4.0a0 + - libstdcxx-ng >=12 + - libvorbis >=1.3.7,<1.4.0a0 + - mpg123 >=1.32.1,<1.33.0a0 + - opusfile >=0.12,<0.13.0a0 + - sdl2 >=2.28.3,<3.0a0 + arch: aarch64 + platform: linux + license: Zlib + size: 238285 + timestamp: 1695761803447 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sdl2_mixer-2.6.3-h4fe3bdc_1.conda + sha256: fcaaf1b589aed11498f5b9735b996fb92ff18e4673a4c804bbfa28eb00264e06 + md5: b92222911d46f08faa583df51191bd7f + depends: + - fluidsynth >=2.3.4,<2.4.0a0 + - libcxx >=15.0.7 + - libflac >=1.4.3,<1.5.0a0 + - libmad >=0.15.1b,<0.16.0a0 + - libogg >=1.3.4,<1.4.0a0 + - libvorbis >=1.3.7,<1.4.0a0 + - mpg123 >=1.32.1,<1.33.0a0 + - opusfile >=0.12,<0.13.0a0 + - sdl2 >=2.28.3,<3.0a0 + arch: arm64 + platform: osx + license: Zlib + size: 188504 + timestamp: 1695762176058 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sdl2_ttf-2.24.0-h287479f_0.conda + sha256: 431d19b666db6e7a4f09c37c43c83f115176a006b2ac321853ca26bee888c519 + md5: bccd5b74eb55a523dfcc66b857555714 + depends: + - __glibc >=2.17,<3.0.a0 + - freetype >=2.12.1,<3.0a0 + - harfbuzz >=10.1.0,<11.0a0 + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + - sdl2 >=2.30.10,<3.0a0 + arch: x86_64 + platform: linux + license: Zlib + size: 61954 + timestamp: 1736117956977 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sdl2_ttf-2.24.0-hb1608df_0.conda + sha256: f9ee162a8efbd9cb0131500c57807e470b95f454aedb921dbf5960176b505ee4 + md5: 63b580a2a1005d91ffcb06a7e58d75f8 + depends: + - freetype >=2.12.1,<3.0a0 + - harfbuzz >=10.1.0,<11.0a0 + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + - sdl2 >=2.30.10,<3.0a0 + arch: aarch64 + platform: linux + license: Zlib + size: 55411 + timestamp: 1736119336293 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sdl2_ttf-2.24.0-h443c5de_0.conda + sha256: 5dc56fd1de51dec2f7b63b1a9069ab35ab0494d9cd5af164ab0019cbd9564cf6 + md5: 3cf5cf83deccb663b4e932d3d4b28f57 + depends: + - __osx >=11.0 + - freetype >=2.12.1,<3.0a0 + - harfbuzz >=10.1.0,<11.0a0 + - sdl2 >=2.30.10,<3.0a0 + arch: arm64 + platform: osx + license: Zlib + size: 45429 + timestamp: 1736118165229 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sdl3-3.2.4-h3083f51_0.conda + sha256: d19f33b8c73cf461698b3f6d81aa354aed68d50f8d64f72c0cccc507d183803c + md5: c0d92f268209e0a0fd27954a5667c11d + depends: + - __glibc >=2.17,<3.0.a0 + - dbus >=1.13.6,<2.0a0 + - jack >=1.9.22,<1.10.0a0 + - libdrm >=2.4.124,<2.5.0a0 + - libegl >=1.7.0,<2.0a0 + - libgcc >=13 + - libgl >=1.7.0,<2.0a0 + - libstdcxx >=13 + - libudev1 >=256.7 + - libunwind >=1.6.2,<1.7.0a0 + - liburing >=2.9,<2.10.0a0 + - libusb >=1.0.27,<2.0a0 + - libxkbcommon >=1.8.0,<2.0a0 + - pulseaudio-client >=17.0,<17.1.0a0 + - wayland >=1.23.1,<2.0a0 + - xorg-libx11 >=1.8.11,<2.0a0 + - xorg-libxcursor >=1.2.3,<2.0a0 + - xorg-libxext >=1.3.6,<2.0a0 + - xorg-libxfixes >=6.0.1,<7.0a0 + - xorg-libxscrnsaver >=1.2.4,<2.0a0 + arch: x86_64 + platform: linux + license: Zlib + size: 1728090 + timestamp: 1739801388543 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sdl3-3.2.4-h9cc03ad_0.conda + sha256: af6e96ddbf53a52f06714b715851f4cc0a684e26011da93974525535cc3a1da7 + md5: ecc9ec84f3a1d4d903a12d8b5c68e077 + depends: + - dbus >=1.13.6,<2.0a0 + - jack >=1.9.22,<1.10.0a0 + - libdrm >=2.4.124,<2.5.0a0 + - libegl >=1.7.0,<2.0a0 + - libgcc >=13 + - libgl >=1.7.0,<2.0a0 + - libstdcxx >=13 + - libudev1 >=256.7 + - libunwind >=1.6.2,<1.7.0a0 + - liburing >=2.9,<2.10.0a0 + - libusb >=1.0.27,<2.0a0 + - libxkbcommon >=1.8.0,<2.0a0 + - pulseaudio-client >=17.0,<17.1.0a0 + - wayland >=1.23.1,<2.0a0 + - xorg-libx11 >=1.8.11,<2.0a0 + - xorg-libxcursor >=1.2.3,<2.0a0 + - xorg-libxext >=1.3.6,<2.0a0 + - xorg-libxfixes >=6.0.1,<7.0a0 + arch: aarch64 + platform: linux + license: Zlib + size: 1655503 + timestamp: 1739553425173 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sdl3-3.2.4-he842692_0.conda + sha256: a9ab414a0432f256e4643f87aa97eaef31778990e7004d4e6dcf5a7a59c2047a + md5: 09a67fad3bcd67851f14082d80fe9b51 + depends: + - __osx >=11.0 + - dbus >=1.13.6,<2.0a0 + - libcxx >=18 + - libusb >=1.0.27,<2.0a0 + arch: arm64 + platform: osx + license: Zlib + size: 1258052 + timestamp: 1739553733611 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-0.2.0-hc8f76dd_10.conda + sha256: a1bde55ceb9dc5bd7879283d0f594a6ce65c07fda3de76230c65a4a5df47858a + md5: 480e915dfc6c592615ef6f217e615aa6 + depends: + - libsentencepiece 0.2.0 h8e10757_10 + - python_abi 3.12.* *_cp312 + - sentencepiece-python 0.2.0 py312hb6b8a2b_10 + - sentencepiece-spm 0.2.0 h8e10757_10 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 19470 + timestamp: 1735628377167 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-0.2.0-h6c1b121_10.conda + sha256: 846d885a560fbb4375b645e7caf2f756ef88bbeb441b670375da0090aaa427fb + md5: 33a89eb1dedae8eb7222b0a89856f337 + depends: + - libsentencepiece 0.2.0 h6164ad9_10 + - python_abi 3.12.* *_cp312 + - sentencepiece-python 0.2.0 py312h197ff68_10 + - sentencepiece-spm 0.2.0 h6164ad9_10 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 19686 + timestamp: 1735628718991 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-0.2.0-h22a84ea_10.conda + sha256: 526c934b897131bd274697649c3b1c492a7d66c03368885a954112468b3c1424 + md5: 346abe448f69949a65473b336856860a + depends: + - libsentencepiece 0.2.0 he13a0af_10 + - python_abi 3.12.* *_cp312 + - sentencepiece-python 0.2.0 py312h155166a_10 + - sentencepiece-spm 0.2.0 he13a0af_10 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 19759 + timestamp: 1735628533490 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-python-0.2.0-py312hb6b8a2b_10.conda + sha256: 37df7fb659564587b950b39c936769d9b5095afb7bc223f42d6248a5540c6567 + md5: 7908b7b977e2e123a5f6a29906f2ce44 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 h8e10757_10 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 2411182 + timestamp: 1735628106455 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-python-0.2.0-py312h197ff68_10.conda + sha256: a7c2c19cc397c7632e2630af49ddcff128f145c93ea493421e6f42bfa5e1d30b + md5: 5642e4545a3cf03e446fb3b3e9fd723b + depends: + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 h6164ad9_10 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 2458076 + timestamp: 1735628298246 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-python-0.2.0-py312h155166a_10.conda + sha256: 2d59614aeafbf54cc718805798c11c2d0a3b4b8d947d1bd81c87c484b4883077 + md5: 6e11367ef670296fce01fc9860be944d + depends: + - __osx >=11.0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 he13a0af_10 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 2433303 + timestamp: 1735628083958 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-spm-0.2.0-h8e10757_10.conda + sha256: 6b55e1121545357d63c3aa0766931720e8aafc52d88641ba7631c8cbaa68c52f + md5: e977b7be5ac26c55825e121e00b90493 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 h8e10757_10 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 89076 + timestamp: 1735628334078 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-spm-0.2.0-h6164ad9_10.conda + sha256: b98fc1028a8e8fbf309af383f9c837290a14e076e6c5533dc251694ea33ffc6e + md5: a4b75936c01dca3f089f02752b7ee325 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 h6164ad9_10 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 85983 + timestamp: 1735628693813 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-spm-0.2.0-he13a0af_10.conda + sha256: b760aeee02e2afbfcce3f559e8a227aa4c94139157b1702fdfb41a057dad0e52 + md5: 9b7300f23cd330da8664cd072c162e5f + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 he13a0af_10 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 83826 + timestamp: 1735628514667 +- conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + sha256: 41db0180680cc67c3fa76544ffd48d6a5679d96f4b71d7498a759e94edc9a2db + md5: a451d576819089b0d672f18768be0f65 + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 16385 + timestamp: 1733381032766 +- conda: https://conda.anaconda.org/conda-forge/linux-64/svt-av1-3.0.0-h5888daf_0.conda + sha256: 01ae1e86f79e05b9e687ef3b963e7f4f8a7554ac9f5af4dc1e3dc11ed79548b2 + md5: d86fc7eb811593abc06b328d3d72c001 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + size: 2746763 + timestamp: 1740096577511 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/svt-av1-3.0.0-h5ad3122_0.conda + sha256: dd730fe6914a748f2466ac077f3b5b219fec4e49b9e05454af856e42ffe46c58 + md5: 65e68986e59b0e1272af76e6356828a9 + depends: + - libgcc >=13 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: BSD-2-Clause + license_family: BSD + size: 1920727 + timestamp: 1740099395955 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/svt-av1-3.0.0-h8ab69cd_0.conda + sha256: 94802f002ec504c4a8a8dc5bb59d992a53eaa41379d7258a409939f9bb84547d + md5: 419e4ba326a85ce687a6b038e442c744 + depends: + - __osx >=11.0 + - libcxx >=18 + arch: arm64 + platform: osx + license: BSD-2-Clause + license_family: BSD + size: 1447364 + timestamp: 1740096672763 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda + sha256: e0569c9caa68bf476bead1bed3d79650bb080b532c64a4af7d8ca286c08dea4e + md5: d453b98d9c83e71da0741bb0ff4d76bc + depends: + - libgcc-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 + arch: x86_64 + platform: linux + license: TCL + license_family: BSD + size: 3318875 + timestamp: 1699202167581 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda + sha256: 7fa27cc512d3a783f38bd16bbbffc008807372499d5b65d089a8e43bde9db267 + md5: f75105e0585851f818e0009dd1dde4dc + depends: + - libgcc-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 + arch: aarch64 + platform: linux + license: TCL + license_family: BSD + size: 3351802 + timestamp: 1695506242997 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda + sha256: 72457ad031b4c048e5891f3f6cb27a53cb479db68a52d965f796910e71a403a8 + md5: b50a57ba89c32b62428b71a875291c9b + depends: + - libzlib >=1.2.13,<2.0.0a0 + arch: arm64 + platform: osx + license: TCL + license_family: BSD + size: 3145523 + timestamp: 1699202432999 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda + sha256: 062a3a3a37fa8615ce57929ba7e982c76f5a5810bcebd435950f6d6c4147c310 + md5: e417822cb989e80a0d2b1b576fdd1657 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 840414 + timestamp: 1732616043734 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py312h52516f5_0.conda + sha256: 4c19a544354172b2273553267e734795a6da3c78a04c2d19f8e9e159ca3178bc + md5: e28996d9d2d44d777b7e6fb12f63715b + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 841662 + timestamp: 1732616934923 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda + sha256: 964a2705a36c50040c967b18b45b9cc8de3c2aff4af546979a574e0b38e58e39 + md5: fb0605888a475d6a380ae1d1a819d976 + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 842549 + timestamp: 1732616081362 +- conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + sha256: 11e2c85468ae9902d24a27137b6b39b4a78099806e551d390e394a8c34b48e40 + md5: 9efbfdc37242619130ea42b1cc4ed861 + depends: + - colorama + - python >=3.9 + license: MPL-2.0 or MIT + size: 89498 + timestamp: 1735661472632 +- conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + sha256: f39a5620c6e8e9e98357507262a7869de2ae8cc07da8b7f84e517c9fd6c2b959 + md5: 019a7385be9af33791c989871317e1ed + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 110051 + timestamp: 1733367480074 +- conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + sha256: 337be7af5af8b2817f115b3b68870208b30c31d3439bec07bfb2d8f4823e3568 + md5: d17f13df8b65464ca316cbc000a3cb64 + depends: + - python >=3.9 + license: PSF-2.0 + license_family: PSF + size: 39637 + timestamp: 1733188758212 +- conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + sha256: c4b1ae8a2931fe9b274c44af29c5475a85b37693999f8c792dad0f8c6734b1de + md5: dbcace4706afdfb7eb891f7b37d07c04 + license: LicenseRef-Public-Domain + size: 122921 + timestamp: 1737119101255 +- conda: https://conda.anaconda.org/conda-forge/linux-64/wayland-1.23.1-h3e06ad9_0.conda + sha256: 0884b2023a32d2620192cf2e2fc6784b8d1e31cf9f137e49e00802d4daf7d1c1 + md5: 0a732427643ae5e0486a727927791da1 + depends: + - __glibc >=2.17,<3.0.a0 + - libexpat >=2.6.2,<3.0a0 + - libffi >=3.4,<4.0a0 + - libgcc-ng >=13 + - libstdcxx-ng >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 321561 + timestamp: 1724530461598 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/wayland-1.23.1-h698ed42_0.conda + sha256: 71c591803459e1f68f9ad206a4f2fa3971147502bad8791e94fd18d8362f8ce6 + md5: 2661f9252065051914f1cdf5835e7430 + depends: + - libexpat >=2.6.2,<3.0a0 + - libffi >=3.4,<4.0a0 + - libgcc-ng >=13 + - libstdcxx-ng >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 324815 + timestamp: 1724530528414 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xkeyboard-config-2.43-hb9d3cd8_0.conda + sha256: 0d89b5873515a1f05d311f37ea4e087bbccc0418afa38f2f6189e97280db3179 + md5: f725c7425d6d7c15e31f3b99a88ea02f + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - xorg-libx11 >=1.8.10,<2.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 389475 + timestamp: 1727840188958 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xkeyboard-config-2.43-h86ecc28_0.conda + sha256: b3f09cc99b6b7707aa8812bbc7556fd431999ad3a48292e4ff82335b5fda976c + md5: a809b8e3776fbc05696c82f8cf6f5a92 + depends: + - libgcc >=13 + - xorg-libx11 >=1.8.9,<2.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 391011 + timestamp: 1727840308426 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libice-1.1.2-hb9d3cd8_0.conda + sha256: c12396aabb21244c212e488bbdc4abcdef0b7404b15761d9329f5a4a39113c4b + md5: fb901ff28063514abb6046c9ec2c4a45 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 58628 + timestamp: 1734227592886 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libice-1.1.2-h86ecc28_0.conda + sha256: a2ba1864403c7eb4194dacbfe2777acf3d596feae43aada8d1b478617ce45031 + md5: c8d8ec3e00cd0fd8a231789b91a7c5b7 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 60433 + timestamp: 1734229908988 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libsm-1.2.5-he73a12e_0.conda + sha256: 760f43df6c2ce8cbbbcb8f2f3b7fc0f306716c011e28d1d340f3dfa8ccf29185 + md5: 4c3e9fab69804ec6077697922d70c6e2 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libuuid >=2.38.1,<3.0a0 + - xorg-libice >=1.1.2,<2.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 27198 + timestamp: 1734229639785 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libsm-1.2.5-h0808dbd_0.conda + sha256: 2749a32a00ccd8feaab6039d7848ed875880c13d3b2601afd1788600ce5f9075 + md5: 3983c253f53f67a9d8710fc96646950f + depends: + - libgcc >=13 + - libuuid >=2.38.1,<3.0a0 + - xorg-libice >=1.1.1,<2.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 28061 + timestamp: 1734232077988 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libx11-1.8.11-h4f16b4b_0.conda + sha256: a0e7fca9e341dc2455b20cd320fc1655e011f7f5f28367ecf8617cccd4bb2821 + md5: b6eb6d0cb323179af168df8fe16fb0a1 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libxcb >=1.17.0,<2.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 835157 + timestamp: 1738613163812 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libx11-1.8.11-hca56bd8_0.conda + sha256: 351ce88b3c2df30520721d45e3d32127a0f7f406be234c25a224ed46f082d2e5 + md5: b4f818a0a4e60cffe755381166c82888 + depends: + - libgcc >=13 + - libxcb >=1.17.0,<2.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 864226 + timestamp: 1738613196126 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-hb9d3cd8_0.conda + sha256: ed10c9283974d311855ae08a16dfd7e56241fac632aec3b92e3cfe73cff31038 + md5: f6ebe2cb3f82ba6c057dde5d9debe4f7 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 14780 + timestamp: 1734229004433 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxau-1.0.12-h86ecc28_0.conda + sha256: 7829a0019b99ba462aece7592d2d7f42e12d12ccd3b9614e529de6ddba453685 + md5: d5397424399a66d33c80b1f2345a36a6 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 15873 + timestamp: 1734230458294 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxcursor-1.2.3-hb9d3cd8_0.conda + sha256: 832f538ade441b1eee863c8c91af9e69b356cd3e9e1350fff4fe36cc573fc91a + md5: 2ccd714aa2242315acaf0a67faea780b + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - xorg-libx11 >=1.8.10,<2.0a0 + - xorg-libxfixes >=6.0.1,<7.0a0 + - xorg-libxrender >=0.9.11,<0.10.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 32533 + timestamp: 1730908305254 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxcursor-1.2.3-h86ecc28_0.conda + sha256: c5d3692520762322a9598e7448492309f5ee9d8f3aff72d787cf06e77c42507f + md5: f2054759c2203d12d0007005e1f1296d + depends: + - libgcc >=13 + - xorg-libx11 >=1.8.9,<2.0a0 + - xorg-libxfixes >=6.0.1,<7.0a0 + - xorg-libxrender >=0.9.11,<0.10.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 34596 + timestamp: 1730908388714 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb9d3cd8_0.conda + sha256: 6b250f3e59db07c2514057944a3ea2044d6a8cdde8a47b6497c254520fade1ee + md5: 8035c64cb77ed555e3f150b7b3972480 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 19901 + timestamp: 1727794976192 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxdmcp-1.1.5-h57736b2_0.conda + sha256: efcc150da5926cf244f757b8376d96a4db78bc15b8d90ca9f56ac6e75755971f + md5: 25a5a7b797fe6e084e04ffe2db02fc62 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 20615 + timestamp: 1727796660574 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxext-1.3.6-hb9d3cd8_0.conda + sha256: da5dc921c017c05f38a38bd75245017463104457b63a1ce633ed41f214159c14 + md5: febbab7d15033c913d53c7a2c102309d + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - xorg-libx11 >=1.8.10,<2.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 50060 + timestamp: 1727752228921 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxext-1.3.6-h57736b2_0.conda + sha256: 8e216b024f52e367463b4173f237af97cf7053c77d9ce3e958bc62473a053f71 + md5: bd1e86dd8aa3afd78a4bfdb4ef918165 + depends: + - libgcc >=13 + - xorg-libx11 >=1.8.9,<2.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 50746 + timestamp: 1727754268156 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxfixes-6.0.1-hb9d3cd8_0.conda + sha256: 2fef37e660985794617716eb915865ce157004a4d567ed35ec16514960ae9271 + md5: 4bdb303603e9821baf5fe5fdff1dc8f8 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - xorg-libx11 >=1.8.10,<2.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 19575 + timestamp: 1727794961233 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxfixes-6.0.1-h57736b2_0.conda + sha256: f5c71e0555681a82a65c483374b91d91b2cb9a9903b3a22ddc00f36719fce549 + md5: 78f8715c002cc66991d7c11e3cf66039 + depends: + - libgcc >=13 + - xorg-libx11 >=1.8.9,<2.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 20289 + timestamp: 1727796500830 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrender-0.9.12-hb9d3cd8_0.conda + sha256: 044c7b3153c224c6cedd4484dd91b389d2d7fd9c776ad0f4a34f099b3389f4a1 + md5: 96d57aba173e878a2089d5638016dc5e + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - xorg-libx11 >=1.8.10,<2.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 33005 + timestamp: 1734229037766 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxrender-0.9.12-h86ecc28_0.conda + sha256: ffd77ee860c9635a28cfda46163dcfe9224dc6248c62404c544ae6b564a0be1f + md5: ae2c2dd0e2d38d249887727db2af960e + depends: + - libgcc >=13 + - xorg-libx11 >=1.8.10,<2.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 33649 + timestamp: 1734229123157 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxscrnsaver-1.2.4-hb9d3cd8_0.conda + sha256: 58e8fc1687534124832d22e102f098b5401173212ac69eb9fd96b16a3e2c8cb2 + md5: 303f7a0e9e0cd7d250bb6b952cecda90 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - xorg-libx11 >=1.8.10,<2.0a0 + - xorg-libxext >=1.3.6,<2.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 14412 + timestamp: 1727899730073 +- conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda + sha256: a4dc72c96848f764bb5a5176aa93dd1e9b9e52804137b99daeebba277b31ea10 + md5: 3947a35e916fcc6b9825449affbf4214 + depends: + - __glibc >=2.17,<3.0.a0 + - krb5 >=1.21.3,<1.22.0a0 + - libgcc >=13 + - libsodium >=1.0.20,<1.0.21.0a0 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: MPL-2.0 + license_family: MOZILLA + size: 335400 + timestamp: 1731585026517 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zeromq-4.3.5-h5efb499_7.conda + sha256: a6003096dc0570a86492040ba32b04ce7662b159600be2252b7a0dfb9414e21c + md5: f2f3282559a4b87b7256ecafb4610107 + depends: + - krb5 >=1.21.3,<1.22.0a0 + - libgcc >=13 + - libsodium >=1.0.20,<1.0.21.0a0 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: MPL-2.0 + license_family: MOZILLA + size: 371419 + timestamp: 1731589490850 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda + sha256: 9e585569fe2e7d3bea71972cd4b9f06b1a7ab8fa7c5139f92a31cbceecf25a8a + md5: f7e6b65943cb73bce0143737fded08f1 + depends: + - __osx >=11.0 + - krb5 >=1.21.3,<1.22.0a0 + - libcxx >=18 + - libsodium >=1.0.20,<1.0.21.0a0 + arch: arm64 + platform: osx + license: MPL-2.0 + license_family: MOZILLA + size: 281565 + timestamp: 1731585108039 +- conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + sha256: 567c04f124525c97a096b65769834b7acb047db24b15a56888a322bf3966c3e1 + md5: 0c3cc595284c5e8f0f9900a9b228a332 + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 21809 + timestamp: 1732827613585 +- conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb8e6e7a_1.conda + sha256: 532d3623961e34c53aba98db2ad0a33b7a52ff90d6960e505fb2d2efc06bb7da + md5: 02e4e2fa41a6528afba2e54cbc4280ff + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 567419 + timestamp: 1740255350233 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.7-hbcf94c1_1.conda + sha256: a8e9a9e19ec3778594d9746e308cdba096f3019c0c0a62f552d0d299b35c343f + md5: d98196f3502425e14f82bdfc8eb4ae27 + depends: + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 550364 + timestamp: 1740255370714 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.7-h6491c7d_1.conda + sha256: f49bbeeb3a8ead81920e6c695fff1260cbd221e2cfcdf9fb34207260fbd60816 + md5: 66e5c4b02aa97230459efdd4f64c8ce6 + depends: + - __osx >=11.0 + - libzlib >=1.3.1,<2.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 399981 + timestamp: 1740255382232 diff --git a/examples/mojo/magic.lock b/examples/mojo/magic.lock new file mode 100644 index 0000000000..c06e7e4f53 --- /dev/null +++ b/examples/mojo/magic.lock @@ -0,0 +1,2185 @@ +version: 6 +environments: + default: + channels: + - url: https://conda.anaconda.org/conda-forge/ + - url: https://conda.modular.com/max-nightly/ + packages: + linux-64: + - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2025.1.31-hbcca054_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-31_h59b9bed_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-31_he106b2a_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h767d61c_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hf1ad2bd_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h767d61c_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-31_h7ac8fdf_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.29-pthreads_h94d23a6_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsentencepiece-0.2.0-h8e10757_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.49.1-hee588c1_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-h8f9b012_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022718-release.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-h2d0b736_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py311h64a7726_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.1-h7b32b05_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.11.11-h9e4cc4f_1_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.11-5_cp311.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.1-py311h7deb3e3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-0.2.0-h074ec65_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-python-0.2.0-py311hf886319_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-spm-0.2.0-h8e10757_10.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py311h9ecbd09_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + linux-aarch64: + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h68df207_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2025.1.31-hcefe29a_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/keyutils-1.6.1-h4e544f5_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/krb5-1.21.3-h50a48e9_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h18dbdb1_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-31_h1a9f1db_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-31_hab92f65_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20250104-pl5321h976ea20_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.6.4-h5ad3122_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.4.6-he21f813_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-14.2.0-he277a41_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-14.2.0-he9431aa_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-31_h411afd4_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.4-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.29-pthreads_h9d3fd7e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.3-h44a3b7b_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsentencepiece-0.2.0-h6164ad9_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.20-h68df207_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.49.1-h5eb1b54_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022718-release.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-ha32ae93_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py311h69ead2a_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.1-hd08dc88_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.11.11-h1683364_1_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.11-5_cp311.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyzmq-26.2.1-py311h826da9f_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8382b9d_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-0.2.0-h7028846_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-python-0.2.0-py311h5c441b1_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-spm-0.2.0-h6164ad9_10.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py311h5487e9b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zeromq-4.3.5-h5efb499_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + osx-arm64: + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2025.1.31-hf0a4a13_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_h07bc746_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-31_h10e41b3_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-31_hb3479ef_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.4-h286801f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-31_hc9a63f6_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.4-h39f12f2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.29-openmp_hf332438_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.3-h3bd63a1_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsentencepiece-0.2.0-he13a0af_10.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.1-h3f77e49_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022718-release.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py311h7125741_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.1-h81ee809_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.11.11-hc22306f_1_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.11-5_cp311.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.1-py311h01f2145_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-0.2.0-hf736513_10.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-python-0.2.0-py311hb1a73f2_10.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-spm-0.2.0-he13a0af_10.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py311h917b07b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda +packages: +- conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 + sha256: fe51de6107f9edc7aa4f786a70f4a883943bc9d39b3bb7307c04c41410990726 + md5: d7c89558ba9fa0495403155b64376d81 + arch: x86_64 + platform: linux + license: None + size: 2562 + timestamp: 1578324546067 +- conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 + build_number: 16 + sha256: fbe2c5e56a653bebb982eda4876a9178aedfc2b545f25d0ce9c4c0b508253d22 + md5: 73aaf86a425cc6e73fcf236a5a46396d + depends: + - _libgcc_mutex 0.1 conda_forge + - libgomp >=7.5.0 + constrains: + - openmp_impl 9999 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 23621 + timestamp: 1650670423406 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2 + build_number: 16 + sha256: 3702bef2f0a4d38bd8288bbe54aace623602a1343c2cfbefd3fa188e015bebf0 + md5: 6168d71addc746e8f2b8d57dfd2edcea + depends: + - libgomp >=7.5.0 + constrains: + - openmp_impl 9999 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 23712 + timestamp: 1650670790230 +- conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda + sha256: 5ced96500d945fb286c9c838e54fa759aa04a7129c59800f0846b4335cee770d + md5: 62ee74e96c5ebb0af99386de58cf9553 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: bzip2-1.0.6 + license_family: BSD + size: 252783 + timestamp: 1720974456583 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h68df207_7.conda + sha256: 2258b0b33e1cb3a9852d47557984abb6e7ea58e3d7f92706ec1f8e879290c4cb + md5: 56398c28220513b9ea13d7b450acfb20 + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: bzip2-1.0.6 + license_family: BSD + size: 189884 + timestamp: 1720974504976 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda + sha256: adfa71f158cbd872a36394c56c3568e6034aa55c623634b37a4836bd036e6b91 + md5: fc6948412dbbbe9a4c9ddbbcfe0a79ab + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: bzip2-1.0.6 + license_family: BSD + size: 122909 + timestamp: 1720974522888 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2025.1.31-hbcca054_0.conda + sha256: bf832198976d559ab44d6cdb315642655547e26d826e34da67cbee6624cda189 + md5: 19f3a56f68d2fd06c516076bff482c52 + arch: x86_64 + platform: linux + license: ISC + size: 158144 + timestamp: 1738298224464 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2025.1.31-hcefe29a_0.conda + sha256: 66c6408ee461593cfdb2d78d82e6ed74d04a04ccb51df3ef8a5f35148c9c6eec + md5: 462cb166cd2e26a396f856510a3aff67 + arch: aarch64 + platform: linux + license: ISC + size: 158290 + timestamp: 1738299057652 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2025.1.31-hf0a4a13_0.conda + sha256: 7e12816618173fe70f5c638b72adf4bfd4ddabf27794369bb17871c5bb75b9f9 + md5: 3569d6a9141adc64d2fe4797f3289e06 + arch: arm64 + platform: osx + license: ISC + size: 158425 + timestamp: 1738298167688 +- conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda + sha256: c920d23cd1fcf565031c679adb62d848af60d6fbb0edc2d50ba475cea4f0d8ab + md5: f22f4d4970e09d68a10b922cbb0408d3 + depends: + - __unix + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 84705 + timestamp: 1734858922844 +- conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + sha256: ab29d57dc70786c1269633ba3dff20288b81664d3ff8d21af995742e2bb03287 + md5: 962b9857ee8e7018c22f2776ffa0b2d7 + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 27011 + timestamp: 1733218222191 +- conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + sha256: 598951ebdb23e25e4cec4bbff0ae369cec65ead80b50bc08b441d8e54de5cf03 + md5: f4b39bf00c69f56ac01e020ebfac066c + depends: + - python >=3.9 + - zipp >=0.5 + license: Apache-2.0 + license_family: APACHE + size: 29141 + timestamp: 1737420302391 +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + sha256: 19d8bd5bb2fde910ec59e081eeb59529491995ce0d653a5209366611023a0b3a + md5: 4ebae00eae9705b0c3d6d1018a81d047 + depends: + - importlib-metadata >=4.8.3 + - jupyter_core >=4.12,!=5.0.* + - python >=3.9 + - python-dateutil >=2.8.2 + - pyzmq >=23.0 + - tornado >=6.2 + - traitlets >=5.3 + license: BSD-3-Clause + license_family: BSD + size: 106342 + timestamp: 1733441040958 +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + sha256: 732b1e8536bc22a5a174baa79842d79db2f4956d90293dd82dc1b3f6099bcccd + md5: 0a2980dada0dd7fd0998f0342308b1b1 + depends: + - __unix + - platformdirs >=2.5 + - python >=3.8 + - traitlets >=5.3 + license: BSD-3-Clause + license_family: BSD + size: 57671 + timestamp: 1727163547058 +- conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 + sha256: 150c05a6e538610ca7c43beb3a40d65c90537497a4f6a5f4d15ec0451b6f5ebb + md5: 30186d27e2c9fa62b45fb1476b7200e3 + depends: + - libgcc-ng >=10.3.0 + arch: x86_64 + platform: linux + license: LGPL-2.1-or-later + size: 117831 + timestamp: 1646151697040 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/keyutils-1.6.1-h4e544f5_0.tar.bz2 + sha256: 6d4233d97a9b38acbb26e1268bcf8c10a8e79c2aed7e5a385ec3769967e3e65b + md5: 1f24853e59c68892452ef94ddd8afd4b + depends: + - libgcc-ng >=10.3.0 + arch: aarch64 + platform: linux + license: LGPL-2.1-or-later + size: 112327 + timestamp: 1646166857935 +- conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda + sha256: 99df692f7a8a5c27cd14b5fb1374ee55e756631b9c3d659ed3ee60830249b238 + md5: 3f43953b7d3fb3aaa1d0d0723d91e368 + depends: + - keyutils >=1.6.1,<2.0a0 + - libedit >=3.1.20191231,<3.2.0a0 + - libedit >=3.1.20191231,<4.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - openssl >=3.3.1,<4.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 1370023 + timestamp: 1719463201255 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/krb5-1.21.3-h50a48e9_0.conda + sha256: 0ec272afcf7ea7fbf007e07a3b4678384b7da4047348107b2ae02630a570a815 + md5: 29c10432a2ca1472b53f299ffb2ffa37 + depends: + - keyutils >=1.6.1,<2.0a0 + - libedit >=3.1.20191231,<3.2.0a0 + - libedit >=3.1.20191231,<4.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - openssl >=3.3.1,<4.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 1474620 + timestamp: 1719463205834 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda + sha256: 4442f957c3c77d69d9da3521268cad5d54c9033f1a73f99cde0a3658937b159b + md5: c6dc8a0fdec13a0565936655c33069a1 + depends: + - __osx >=11.0 + - libcxx >=16 + - libedit >=3.1.20191231,<3.2.0a0 + - libedit >=3.1.20191231,<4.0a0 + - openssl >=3.3.1,<4.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 1155530 + timestamp: 1719463474401 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_4.conda + sha256: db73f38155d901a610b2320525b9dd3b31e4949215c870685fd92ea61b5ce472 + md5: 01f8d123c96816249efd255a31ad7712 + depends: + - __glibc >=2.17,<3.0.a0 + constrains: + - binutils_impl_linux-64 2.43 + arch: x86_64 + platform: linux + license: GPL-3.0-only + license_family: GPL + size: 671240 + timestamp: 1740155456116 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_4.conda + sha256: 016832a70b0aa97e1c4e47e23c00b0c34def679de25146736df353199f684f0d + md5: 80c9ad5e05e91bb6c0967af3880c9742 + constrains: + - binutils_impl_linux-aarch64 2.43 + arch: aarch64 + platform: linux + license: GPL-3.0-only + license_family: GPL + size: 699058 + timestamp: 1740155620594 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda + sha256: 143a586aa67d50622ef703de57b9d43f44945836d6568e0e7aa174bd8c45e0d4 + md5: 488f260ccda0afaf08acb286db439c2f + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + constrains: + - libabseil-static =20240722.0=cxx17* + - abseil-cpp =20240722.0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 1311599 + timestamp: 1736008414161 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h18dbdb1_4.conda + sha256: bb6c5fb3b8de5f90735c5252b57efb3c268ee222c755569dac18065f05147670 + md5: 633b9fe454ffea2aaf29e191d946a83b + depends: + - libgcc >=13 + - libstdcxx >=13 + constrains: + - abseil-cpp =20240722.0 + - libabseil-static =20240722.0=cxx17* + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 1334844 + timestamp: 1736008472455 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_h07bc746_4.conda + sha256: 05fa5e5e908962b9c5aba95f962e2ca81d9599c4715aebe5e4ddb72b309d1770 + md5: c2d95bd7aa8d564a9bd7eca5e571a5b3 + depends: + - __osx >=11.0 + - libcxx >=18 + constrains: + - libabseil-static =20240722.0=cxx17* + - abseil-cpp =20240722.0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 1178260 + timestamp: 1736008642885 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-31_h59b9bed_openblas.conda + build_number: 31 + sha256: 9839fc4ac0cbb0aa3b9eea520adfb57311838959222654804e58f6f2d1771db5 + md5: 728dbebd0f7a20337218beacffd37916 + depends: + - libopenblas >=0.3.29,<0.3.30.0a0 + - libopenblas >=0.3.29,<1.0a0 + constrains: + - liblapacke =3.9.0=31*_openblas + - liblapack =3.9.0=31*_openblas + - blas =2.131=openblas + - mkl <2025 + - libcblas =3.9.0=31*_openblas + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 16859 + timestamp: 1740087969120 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-31_h1a9f1db_openblas.conda + build_number: 31 + sha256: 67c9c81dd0444ecc712124034d9f74186ca82fd770b3df46b1a68564461c6a1a + md5: 48bd5bf15ccf3e409840be9caafc0ad5 + depends: + - libopenblas >=0.3.29,<0.3.30.0a0 + - libopenblas >=0.3.29,<1.0a0 + constrains: + - liblapack =3.9.0=31*_openblas + - blas =2.131=openblas + - libcblas =3.9.0=31*_openblas + - mkl <2025 + - liblapacke =3.9.0=31*_openblas + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 16915 + timestamp: 1740087911042 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-31_h10e41b3_openblas.conda + build_number: 31 + sha256: 369586e7688b59b4f92c709b99d847d66d4d095425db327dd32ee5e6ab74697f + md5: 39b053da5e7035c6592102280aa7612a + depends: + - libopenblas >=0.3.29,<0.3.30.0a0 + - libopenblas >=0.3.29,<1.0a0 + constrains: + - liblapacke =3.9.0=31*_openblas + - libcblas =3.9.0=31*_openblas + - blas =2.131=openblas + - mkl <2025 + - liblapack =3.9.0=31*_openblas + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 17123 + timestamp: 1740088119350 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-31_he106b2a_openblas.conda + build_number: 31 + sha256: ede8545011f5b208b151fe3e883eb4e31d495ab925ab7b9ce394edca846e0c0d + md5: abb32c727da370c481a1c206f5159ce9 + depends: + - libblas 3.9.0 31_h59b9bed_openblas + constrains: + - liblapacke =3.9.0=31*_openblas + - liblapack =3.9.0=31*_openblas + - blas =2.131=openblas + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 16796 + timestamp: 1740087984429 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-31_hab92f65_openblas.conda + build_number: 31 + sha256: f0457a1d2982f0a28bfbadaa02621677c324e88f7c8198c24fb3e3214c468dba + md5: 6b81dbae56a519f1ec2f25e0ee2f4334 + depends: + - libblas 3.9.0 31_h1a9f1db_openblas + constrains: + - liblapack =3.9.0=31*_openblas + - blas =2.131=openblas + - liblapacke =3.9.0=31*_openblas + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 16824 + timestamp: 1740087917500 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-31_hb3479ef_openblas.conda + build_number: 31 + sha256: f237486cc9118d09d0f3ff8820280de34365f98ee7b7dc5ab923b04c7cbf25a5 + md5: 7353c2bf0e90834cb70545671996d871 + depends: + - libblas 3.9.0 31_h10e41b3_openblas + constrains: + - liblapacke =3.9.0=31*_openblas + - blas =2.131=openblas + - liblapack =3.9.0=31*_openblas + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 17032 + timestamp: 1740088127097 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda + sha256: 776092346da87a2a23502e14d91eb0c32699c4a1522b7331537bd1c3751dcff5 + md5: 5b3e1610ff8bd5443476b91d618f5b77 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + size: 523505 + timestamp: 1736877862502 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda + sha256: d789471216e7aba3c184cd054ed61ce3f6dac6f87a50ec69291b9297f8c18724 + md5: c277e0a4d549b03ac1e9d6cbbe3d017b + depends: + - ncurses + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - ncurses >=6.5,<7.0a0 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + size: 134676 + timestamp: 1738479519902 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20250104-pl5321h976ea20_0.conda + sha256: c0b27546aa3a23d47919226b3a1635fccdb4f24b94e72e206a751b33f46fd8d6 + md5: fb640d776fc92b682a14e001980825b1 + depends: + - ncurses + - libgcc >=13 + - ncurses >=6.5,<7.0a0 + arch: aarch64 + platform: linux + license: BSD-2-Clause + license_family: BSD + size: 148125 + timestamp: 1738479808948 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda + sha256: 66aa216a403de0bb0c1340a88d1a06adaff66bae2cfd196731aa24db9859d631 + md5: 44083d2d2c2025afca315c7a172eab2b + depends: + - ncurses + - __osx >=11.0 + - ncurses >=6.5,<7.0a0 + arch: arm64 + platform: osx + license: BSD-2-Clause + license_family: BSD + size: 107691 + timestamp: 1738479560845 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda + sha256: 56541b98447b58e52d824bd59d6382d609e11de1f8adf20b23143e353d2b8d26 + md5: db833e03127376d461e1e13e76f09b6c + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + constrains: + - expat 2.6.4.* + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 73304 + timestamp: 1730967041968 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.6.4-h5ad3122_0.conda + sha256: f42e758009ba9db90d1fe7992bc3e60d0c52f71fb20923375d2c44ae69a5a2b3 + md5: f1b3fab36861b3ce945a13f0dfdfc688 + depends: + - libgcc >=13 + constrains: + - expat 2.6.4.* + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 72345 + timestamp: 1730967203789 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.4-h286801f_0.conda + sha256: e42ab5ace927ee7c84e3f0f7d813671e1cf3529f5f06ee5899606630498c2745 + md5: 38d2656dd914feb0cab8c629370768bf + depends: + - __osx >=11.0 + constrains: + - expat 2.6.4.* + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 64693 + timestamp: 1730967175868 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_0.conda + sha256: 67a6c95e33ebc763c1adc3455b9a9ecde901850eb2fceb8e646cc05ef3a663da + md5: e3eb7806380bc8bcecba6d749ad5f026 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 53415 + timestamp: 1739260413716 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.4.6-he21f813_0.conda + sha256: 41568066beefe7b319ff27d85952242e5b77fb753d705b8716041959e17c35c2 + md5: 966084fccf3ad62a3160666cda869f28 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 51513 + timestamp: 1739260449772 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 + sha256: 41b3d13efb775e340e4dba549ab5c029611ea6918703096b2eaa9c015c0750ca + md5: 086914b672be056eb70fd4285b6783b6 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 39020 + timestamp: 1636488587153 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h767d61c_2.conda + sha256: 3a572d031cb86deb541d15c1875aaa097baefc0c580b54dc61f5edab99215792 + md5: ef504d1acbd74b7cc6849ef8af47dd03 + depends: + - __glibc >=2.17,<3.0.a0 + - _openmp_mutex >=4.5 + constrains: + - libgomp 14.2.0 h767d61c_2 + - libgcc-ng ==14.2.0=*_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 847885 + timestamp: 1740240653082 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-14.2.0-he277a41_2.conda + sha256: a57f7f9ba2a12f56eafdcd25b6d75f7be10b8fc1a802a58b76a77ca8c66f4503 + md5: 6b4268a60b10f29257b51b9b67ff8d76 + depends: + - _openmp_mutex >=4.5 + constrains: + - libgcc-ng ==14.2.0=*_2 + - libgomp 14.2.0 he277a41_2 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 535507 + timestamp: 1740241069780 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_2.conda + sha256: fb7558c328b38b2f9d2e412c48da7890e7721ba018d733ebdfea57280df01904 + md5: a2222a6ada71fb478682efe483ce0f92 + depends: + - libgcc 14.2.0 h767d61c_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 53758 + timestamp: 1740240660904 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-14.2.0-he9431aa_2.conda + sha256: 9647f75cddc18b07eebe6e1f21500eed50a6af2c43c84e831b4c7a597e10d226 + md5: 692c2bb75f32cfafb6799cf6d1c5d0e0 + depends: + - libgcc 14.2.0 he277a41_2 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 53622 + timestamp: 1740241074834 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_2.conda + sha256: e05263e8960da03c341650f2a3ffa4ccae4e111cb198e8933a2908125459e5a6 + md5: fb54c4ea68b460c278d26eea89cfbcc3 + depends: + - libgfortran5 14.2.0 hf1ad2bd_2 + constrains: + - libgfortran-ng ==14.2.0=*_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 53733 + timestamp: 1740240690977 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_2.conda + sha256: 996d3c0505301901a7ab23b5e7daad21635d1c065240bb0f4faf7e4f75d7f49d + md5: d8b9d9dc0c8cd97d375b48e55947ba70 + depends: + - libgfortran5 14.2.0 hb6113d0_2 + constrains: + - libgfortran-ng ==14.2.0=*_2 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 53611 + timestamp: 1740241100147 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda + sha256: 44e541b4821c96b28b27fef5630883a60ce4fee91fd9c79f25a199f8f73f337b + md5: 4a55d9e169114b2b90d3ec4604cd7bbf + depends: + - libgfortran5 13.2.0 hf226fd6_3 + arch: arm64 + platform: osx + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 110233 + timestamp: 1707330749033 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hf1ad2bd_2.conda + sha256: c17b7cf3073a1f4e1f34d50872934fa326346e104d3c445abc1e62481ad6085c + md5: 556a4fdfac7287d349b8f09aba899693 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14.2.0 + constrains: + - libgfortran 14.2.0 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 1461978 + timestamp: 1740240671964 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_2.conda + sha256: 7b9e1d3666a00e5a52e5d43c003bd1c73ab472804be513c070aaedca9c4c2a9a + md5: cd754566661513808ef2408c4ab99a2f + depends: + - libgcc >=14.2.0 + constrains: + - libgfortran 14.2.0 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 1100765 + timestamp: 1740241083241 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda + sha256: bafc679eedb468a86aa4636061c55966186399ee0a04b605920d208d97ac579a + md5: 66ac81d54e95c534ae488726c1f698ea + depends: + - llvm-openmp >=8.0.0 + constrains: + - libgfortran 5.0.0 13_2_0_*_3 + arch: arm64 + platform: osx + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 997381 + timestamp: 1707330687590 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h767d61c_2.conda + sha256: 1a3130e0b9267e781b89399580f3163632d59fe5b0142900d63052ab1a53490e + md5: 06d02030237f4d5b3d9a7e7d348fe3c6 + depends: + - __glibc >=2.17,<3.0.a0 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 459862 + timestamp: 1740240588123 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_2.conda + sha256: 4e303711fb7413bf98995beac58e731073099d7a669a3b81e49330ca8da05174 + md5: b11c09d9463daf4cae492d29806b1889 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 462783 + timestamp: 1740241005079 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-31_h7ac8fdf_openblas.conda + build_number: 31 + sha256: f583661921456e798aba10972a8abbd9d33571c655c1f66eff450edc9cbefcf3 + md5: 452b98eafe050ecff932f0ec832dd03f + depends: + - libblas 3.9.0 31_h59b9bed_openblas + constrains: + - libcblas =3.9.0=31*_openblas + - liblapacke =3.9.0=31*_openblas + - blas =2.131=openblas + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 16790 + timestamp: 1740087997375 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-31_h411afd4_openblas.conda + build_number: 31 + sha256: 27613828ff6fb258b2e58802617df549f00089660ea8ab6c55c68f042c570162 + md5: 41dbff5eb805a75c120a7b7a1c744dc2 + depends: + - libblas 3.9.0 31_h1a9f1db_openblas + constrains: + - blas =2.131=openblas + - libcblas =3.9.0=31*_openblas + - liblapacke =3.9.0=31*_openblas + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 16845 + timestamp: 1740087923843 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-31_hc9a63f6_openblas.conda + build_number: 31 + sha256: fe55b9aaf82c6c0192c3d1fcc9b8e884f97492dda9a8de5dae29334b3135fab5 + md5: ff57a55a2cbce171ef5707fb463caf19 + depends: + - libblas 3.9.0 31_h10e41b3_openblas + constrains: + - liblapacke =3.9.0=31*_openblas + - libcblas =3.9.0=31*_openblas + - blas =2.131=openblas + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 17033 + timestamp: 1740088134988 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda + sha256: cad52e10319ca4585bc37f0bc7cce99ec7c15dc9168e42ccb96b741b0a27db3f + md5: 42d5b6a0f30d3c10cd88cb8584fda1cb + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: 0BSD + size: 111357 + timestamp: 1738525339684 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.4-h86ecc28_0.conda + sha256: 96413664f0fade54a4931940d18749cfc8e6308349dbb0cb83adb2394ca1f730 + md5: b88244e0a115cc34f7fbca9b11248e76 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: 0BSD + size: 124197 + timestamp: 1738528201520 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.4-h39f12f2_0.conda + sha256: 560c59d3834cc652a84fb45531bd335ad06e271b34ebc216e380a89798fe8e2c + md5: e3fd1f8320a100f2b210e690a57cd615 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: 0BSD + size: 98945 + timestamp: 1738525462560 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda + sha256: 26d77a3bb4dceeedc2a41bd688564fe71bf2d149fdcf117049970bc02ff1add6 + md5: 30fd6e37fe21f86f4bd26d6ee73eeec7 + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: LGPL-2.1-only + license_family: GPL + size: 33408 + timestamp: 1697359010159 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda + sha256: fd18c2b75d7411096428d36a70b36b1a17e31f7b8956b6905d145792d49e97f8 + md5: c14f32510f694e3185704d89967ec422 + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: LGPL-2.1-only + license_family: GPL + size: 34501 + timestamp: 1697358973269 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.29-pthreads_h94d23a6_0.conda + sha256: cc5389ea254f111ef17a53df75e8e5209ef2ea6117e3f8aced88b5a8e51f11c4 + md5: 0a4d0252248ef9a0f88f2ba8b8a08e12 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libgfortran + - libgfortran5 >=14.2.0 + constrains: + - openblas >=0.3.29,<0.3.30.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 5919288 + timestamp: 1739825731827 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.29-pthreads_h9d3fd7e_0.conda + sha256: 3a2ccf4c9098cd18a636e9b7fff947fdeb4962bcfb75c9d6fd80b8c50caf6a3c + md5: a99e2bfcb1ad6362544c71281eb617e9 + depends: + - libgcc >=14 + - libgfortran + - libgfortran5 >=14.2.0 + constrains: + - openblas >=0.3.29,<0.3.30.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 4801657 + timestamp: 1739825308974 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.29-openmp_hf332438_0.conda + sha256: 8989d9e01ec8c9b2d48dbb5efbe70b356fcd15990fb53b64fcb84798982c0343 + md5: 0cd1148c68f09027ee0b0f0179f77c30 + depends: + - __osx >=11.0 + - libgfortran 5.* + - libgfortran5 >=13.2.0 + - llvm-openmp >=18.1.8 + constrains: + - openblas >=0.3.29,<0.3.30.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 4168442 + timestamp: 1739825514918 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda + sha256: 51125ebb8b7152e4a4e69fd2398489c4ec8473195c27cde3cbdf1cb6d18c5493 + md5: d8703f1ffe5a06356f06467f1d0b9464 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 2960815 + timestamp: 1735577210663 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.3-h44a3b7b_1.conda + sha256: ecb69f2b1668e784b41ba667493be846662d5ef702bef64fb2e013bb1364cdc4 + md5: 68f807f7cc13951652bbe048253fd405 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 2788074 + timestamp: 1735576315676 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.3-h3bd63a1_1.conda + sha256: f58a16b13ad53346903c833e266f83c3d770a43a432659b98710aed85ca885e7 + md5: bdbfea4cf45ae36652c6bbcc2e7ebe91 + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=18 + - libzlib >=1.3.1,<2.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 2271580 + timestamp: 1735576361997 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsentencepiece-0.2.0-h8e10757_10.conda + sha256: dc399e0f04a09f8c1807c3b36e578eb81f81891c0ddf21de9c1fb9f048ce4031 + md5: 4f43dbcfacd3cc9a183dd3a48b94d3c0 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 823649 + timestamp: 1735627841126 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsentencepiece-0.2.0-h6164ad9_10.conda + sha256: 57074803772f65d4075b7d6dc17ff5aa40ec3a30109fa4225ca16911504c4a8b + md5: a7a192edc9cfba26a27df3283203e6a1 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 800865 + timestamp: 1735627982895 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsentencepiece-0.2.0-he13a0af_10.conda + sha256: 3347a8840d085ce1661928e736229f068d56c84312fbed90886e059023d85611 + md5: 1f67e5e30edd56e0a0bf6df6bb711a9d + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 754657 + timestamp: 1735628030895 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda + sha256: 0105bd108f19ea8e6a78d2d994a6d4a8db16d19a41212070d2d1d48a63c34161 + md5: a587892d3c13b6621a6091be690dbca2 + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: ISC + size: 205978 + timestamp: 1716828628198 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.20-h68df207_0.conda + sha256: 448df5ea3c5cf1af785aad46858d7a5be0522f4234a4dc9bb764f4d11ff3b981 + md5: 2e4a8f23bebdcb85ca8e5a0fbe75666a + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: ISC + size: 177394 + timestamp: 1716828514515 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda + sha256: fade8223e1e1004367d7101dd17261003b60aa576df6d7802191f8972f7470b1 + md5: a7ce36e284c5faaf93c220dfc39e3abd + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: ISC + size: 164972 + timestamp: 1716828607917 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.49.1-hee588c1_1.conda + sha256: 7a09eef804ef7cf4d88215c2297eabb72af8ad0bd5b012060111c289f14bbe7d + md5: 73cea06049cc4174578b432320a003b8 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux + license: Unlicense + size: 915956 + timestamp: 1739953155793 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.49.1-h5eb1b54_1.conda + sha256: 920fb3b7d3b873babf79a3e392cc82d43b8bd02a573ccaff34219efb5cf7b51e + md5: 150d64241fa27d9d35a7f421ca968a6c + depends: + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + arch: aarch64 + platform: linux + license: Unlicense + size: 915118 + timestamp: 1739953101699 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.1-h3f77e49_1.conda + sha256: 266639fb10ca92287961574b0b4d6031fa40dd9d723d64a0fcb08513a24dab03 + md5: c83357a21092bd952933c36c5cb4f4d6 + depends: + - __osx >=11.0 + - libzlib >=1.3.1,<2.0a0 + arch: arm64 + platform: osx + license: Unlicense + size: 898767 + timestamp: 1739953312379 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-h8f9b012_2.conda + sha256: 8f5bd92e4a24e1d35ba015c5252e8f818898478cb3bc50bd8b12ab54707dc4da + md5: a78c856b6dc6bf4ea8daeb9beaaa3fb0 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc 14.2.0 h767d61c_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 3884556 + timestamp: 1740240685253 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_2.conda + sha256: c30a74bc996013907f6d9f344da007c26d98ef9a0831151cd50aece3125c45d5 + md5: eadee2cda99697e29411c1013c187b92 + depends: + - libgcc 14.2.0 he277a41_2 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 3810779 + timestamp: 1740241094774 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_2.conda + sha256: e86f38b007cf97cc2c67cd519f2de12a313c4ee3f5ef11652ad08932a5e34189 + md5: c75da67f045c2627f59e6fcb5f4e3a9b + depends: + - libstdcxx 14.2.0 h8f9b012_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 53830 + timestamp: 1740240722530 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_2.conda + sha256: 0107886ead6f255956d8e520f8dff260f9ab3d0d51512f18c52710c406e4b2df + md5: c934c1fddad582fcc385b608eb06a70c + depends: + - libstdcxx 14.2.0 h3f4de04_2 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 53715 + timestamp: 1740241126343 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda + sha256: 787eb542f055a2b3de553614b25f09eefb0a0931b0c87dbcce6efdfd92f04f18 + md5: 40b61aab5c7ba9ff276c41cfffe6b80b + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 33601 + timestamp: 1680112270483 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda + sha256: 616277b0c5f7616c2cdf36f6c316ea3f9aa5bb35f2d4476a349ab58b9b91675f + md5: 000e30b09db0b7c775b21695dff30969 + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 35720 + timestamp: 1680113474501 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda + sha256: 6ae68e0b86423ef188196fff6207ed0c8195dd84273cb5623b85aa08033a410c + md5: 5aa797f8787fe7a17d1b0821485b5adc + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: LGPL-2.1-or-later + size: 100393 + timestamp: 1702724383534 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda + sha256: 6b46c397644091b8a26a3048636d10b989b1bf266d4be5e9474bf763f828f41f + md5: b4df5d7d4b63579d081fd3a4cf99740e + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: LGPL-2.1-or-later + size: 114269 + timestamp: 1702724369203 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda + sha256: d4bfe88d7cb447768e31650f06257995601f89076080e76df55e3112d4e47dc4 + md5: edb0dca6bc32e4f4789199455a1dbeb8 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + constrains: + - zlib 1.3.1 *_2 + arch: x86_64 + platform: linux + license: Zlib + license_family: Other + size: 60963 + timestamp: 1727963148474 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda + sha256: 5a2c1eeef69342e88a98d1d95bff1603727ab1ff4ee0e421522acd8813439b84 + md5: 08aad7cbe9f5a6b460d0976076b6ae64 + depends: + - libgcc >=13 + constrains: + - zlib 1.3.1 *_2 + arch: aarch64 + platform: linux + license: Zlib + license_family: Other + size: 66657 + timestamp: 1727963199518 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda + sha256: ce34669eadaba351cd54910743e6a2261b67009624dbc7daeeafdef93616711b + md5: 369964e85dc26bfe78f41399b366c435 + depends: + - __osx >=11.0 + constrains: + - zlib 1.3.1 *_2 + arch: arm64 + platform: osx + license: Zlib + license_family: Other + size: 46438 + timestamp: 1727963202283 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda + sha256: b92a669f2059874ebdcb69041b6c243d68ffc3fb356ac1339cec44aeb27245d7 + md5: c4d54bfd3817313ce758aa76283b118d + depends: + - __osx >=11.0 + constrains: + - openmp 19.1.7|19.1.7.* + arch: arm64 + platform: osx + license: Apache-2.0 WITH LLVM-exception + license_family: APACHE + size: 280830 + timestamp: 1736986295869 +- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022718-release.conda + noarch: python + sha256: f3dcb14fed5470c0fc521542cbd2f1c56ca7e46d560f46176b8f926198cb3cbd + md5: 01fe5e0cf46c84a6345e323ad1316764 + depends: + - max-core ==25.2.0.dev2025022718 release + - max-python ==25.2.0.dev2025022718 release + - mojo-jupyter ==25.2.0.dev2025022718 release + - mblack ==25.2.0.dev2025022718 release + license: LicenseRef-Modular-Proprietary + size: 9905 + timestamp: 1740680254354 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022718-release.conda + sha256: 847d5767109a305d7bcad4ac29248a74a384034692934a0c54b00a590c27094a + md5: fc5a9ae36c7805979bd58ca55a25066f + depends: + - mblack ==25.2.0.dev2025022718 release + license: LicenseRef-Modular-Proprietary + size: 249811868 + timestamp: 1740680254354 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022718-release.conda + sha256: 250c35ecccd302e6c7de836ac200a5ece92e74508c2590c585d8803d488fd650 + md5: d88728b468c85902512a0f9b99251035 + depends: + - mblack ==25.2.0.dev2025022718 release + license: LicenseRef-Modular-Proprietary + size: 252108573 + timestamp: 1740680207793 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022718-release.conda + sha256: fb28d9e61aa507ea84b470082d3dc96844a24fe672d4e4c57e832655c5d0a202 + md5: dd8734453f7276a258f3351cc5c506c3 + depends: + - mblack ==25.2.0.dev2025022718 release + license: LicenseRef-Modular-Proprietary + size: 217273450 + timestamp: 1740681819160 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022718-release.conda + noarch: python + sha256: 831b4d62f66f0083321121c6ba25dedab3ee41d5e9f19d9752969592214af398 + md5: f828ace91aa057e4774e84ad459adccf + depends: + - max-core ==25.2.0.dev2025022718 release + - click >=8.0.0 + - numpy >=1.18,<2.0 + - sentencepiece >=0.2.0 + - tqdm >=4.67.1 + constrains: + - aiohttp >=3.11.12 + - fastapi >=0.114.2 + - gguf >=0.14.0 + - hf-transfer >=0.1.9 + - httpx >=0.28.1 + - huggingface_hub >=0.24.0 + - nvitop >=1.4.1 + - opentelemetry-api >=1.29.0 + - opentelemetry-exporter-otlp-proto-http >=1.27.0 + - opentelemetry-exporter-prometheus <1.0.0 + - opentelemetry-sdk >=1.29.0,<2.0 + - pillow >=10.3.0 + - prometheus_client >=0.21.0 + - prometheus-async >=22.2.0 + - psutil >=6.1.1 + - pydantic + - pydantic-settings >=2.7.1 + - pyinstrument >=5.0.1 + - python-json-logger >=2.0.7 + - requests >=2.32.3 + - rich >=13.9.4 + - safetensors >=0.5.2 + - sentinel >=0.3.0 + - sse-starlette >=2.1.2 + - tokenizers >=0.19.0 + - pytorch >=2.2.2,<=2.5.1 + - transformers >=4.40.1 + - uvicorn >=0.34.0 + - uvloop >=0.21.0 + - xgrammar ==0.1.11 + license: LicenseRef-Modular-Proprietary + size: 123584411 + timestamp: 1740680254354 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022718-release.conda + noarch: python + sha256: b9e5755b7bf6314a37a90ef0250c93f5e7c693954d7a6389a97ab9ef06e23cc3 + md5: bfd2e752d0fc9516b78a17169ce9cc78 + depends: + - max-core ==25.2.0.dev2025022718 release + - click >=8.0.0 + - numpy >=1.18,<2.0 + - sentencepiece >=0.2.0 + - tqdm >=4.67.1 + constrains: + - aiohttp >=3.11.12 + - fastapi >=0.114.2 + - gguf >=0.14.0 + - hf-transfer >=0.1.9 + - httpx >=0.28.1 + - huggingface_hub >=0.24.0 + - nvitop >=1.4.1 + - opentelemetry-api >=1.29.0 + - opentelemetry-exporter-otlp-proto-http >=1.27.0 + - opentelemetry-exporter-prometheus <1.0.0 + - opentelemetry-sdk >=1.29.0,<2.0 + - pillow >=10.3.0 + - prometheus_client >=0.21.0 + - prometheus-async >=22.2.0 + - psutil >=6.1.1 + - pydantic + - pydantic-settings >=2.7.1 + - pyinstrument >=5.0.1 + - python-json-logger >=2.0.7 + - requests >=2.32.3 + - rich >=13.9.4 + - safetensors >=0.5.2 + - sentinel >=0.3.0 + - sse-starlette >=2.1.2 + - tokenizers >=0.19.0 + - pytorch >=2.2.2,<=2.5.1 + - transformers >=4.40.1 + - uvicorn >=0.34.0 + - uvloop >=0.21.0 + - xgrammar ==0.1.11 + license: LicenseRef-Modular-Proprietary + size: 126004454 + timestamp: 1740680207793 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022718-release.conda + noarch: python + sha256: 7da9f4655082bb64c2b0cc996ffefa0ce5c49744854ed77a9b0d000e27cf5a55 + md5: b16d498a148aa61dca2a6bfec5cb8e46 + depends: + - max-core ==25.2.0.dev2025022718 release + - click >=8.0.0 + - numpy >=1.18,<2.0 + - sentencepiece >=0.2.0 + - tqdm >=4.67.1 + constrains: + - aiohttp >=3.11.12 + - fastapi >=0.114.2 + - gguf >=0.14.0 + - hf-transfer >=0.1.9 + - httpx >=0.28.1 + - huggingface_hub >=0.24.0 + - nvitop >=1.4.1 + - opentelemetry-api >=1.29.0 + - opentelemetry-exporter-otlp-proto-http >=1.27.0 + - opentelemetry-exporter-prometheus <1.0.0 + - opentelemetry-sdk >=1.29.0,<2.0 + - pillow >=10.3.0 + - prometheus_client >=0.21.0 + - prometheus-async >=22.2.0 + - psutil >=6.1.1 + - pydantic + - pydantic-settings >=2.7.1 + - pyinstrument >=5.0.1 + - python-json-logger >=2.0.7 + - requests >=2.32.3 + - rich >=13.9.4 + - safetensors >=0.5.2 + - sentinel >=0.3.0 + - sse-starlette >=2.1.2 + - tokenizers >=0.19.0 + - pytorch >=2.2.2,<=2.5.1 + - transformers >=4.40.1 + - uvicorn >=0.34.0 + - uvloop >=0.21.0 + - xgrammar ==0.1.11 + license: LicenseRef-Modular-Proprietary + size: 112658409 + timestamp: 1740681819160 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022718-release.conda + noarch: python + sha256: ff042a8abfed0e2e36b207e3d4f59a2b4577dea7f099b08d1aaef128ab796f09 + md5: 719ca7123d53415adcdd7f0cb8396c51 + depends: + - python >=3.9,<3.13 + - click >=8.0.0 + - mypy_extensions >=0.4.3 + - packaging >=22.0 + - pathspec >=0.9.0 + - platformdirs >=2 + - typing_extensions >=v4.12.2 + - python + license: MIT + size: 130852 + timestamp: 1740680254353 +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022718-release.conda + noarch: python + sha256: 19c33e23b27e240fee0b2a1d56921802ac88558dc2da417837cd590175561e16 + md5: 6b8d00b15817db11e026f824f7f0ba14 + depends: + - max-core ==25.2.0.dev2025022718 release + - python >=3.9,<3.13 + - jupyter_client >=8.6.2,<8.7 + - python + license: LicenseRef-Modular-Proprietary + size: 22981 + timestamp: 1740680254354 +- conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda + sha256: 1895f47b7d68581a6facde5cb13ab8c2764c2e53a76bd746f8f98910dc4e08fe + md5: 29097e7ea634a45cc5386b95cac6568f + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 10854 + timestamp: 1733230986902 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda + sha256: 3fde293232fa3fca98635e1167de6b7c7fda83caf24b9d6c91ec9eefb4f4d586 + md5: 47e340acb35de30501a76c7c799c41d7 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: X11 AND BSD-3-Clause + size: 891641 + timestamp: 1738195959188 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-ha32ae93_3.conda + sha256: 91cfb655a68b0353b2833521dc919188db3d8a7f4c64bea2c6a7557b24747468 + md5: 182afabe009dc78d8b73100255ee6868 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: X11 AND BSD-3-Clause + size: 926034 + timestamp: 1738196018799 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda + sha256: 2827ada40e8d9ca69a153a45f7fd14f32b2ead7045d3bbb5d10964898fe65733 + md5: 068d497125e4bf8a66bf707254fff5ae + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: X11 AND BSD-3-Clause + size: 797030 + timestamp: 1738196177597 +- conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py311h64a7726_0.conda + sha256: 3f4365e11b28e244c95ba8579942b0802761ba7bb31c026f50d1a9ea9c728149 + md5: a502d7aad449a1206efb366d6a12c52d + depends: + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - libgcc-ng >=12 + - liblapack >=3.9.0,<4.0a0 + - libstdcxx-ng >=12 + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 + constrains: + - numpy-base <0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 8065890 + timestamp: 1707225944355 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py311h69ead2a_0.conda + sha256: 88800a1d9d11c2fccab09d40d36f7001616f5119eaf0ec86186562f33564e651 + md5: 3fd00dd400c8d3f9da12bf33061dd28d + depends: + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - libgcc-ng >=12 + - liblapack >=3.9.0,<4.0a0 + - libstdcxx-ng >=12 + - python >=3.11,<3.12.0a0 + - python >=3.11,<3.12.0a0 *_cpython + - python_abi 3.11.* *_cp311 + constrains: + - numpy-base <0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 7234391 + timestamp: 1707225781489 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py311h7125741_0.conda + sha256: 160a52a01fea44fe9753a2ed22cf13d7b55c8a89ea0b8738546fdbf4795d6514 + md5: 3160b93669a0def35a7a8158ebb33816 + depends: + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - libcxx >=16 + - liblapack >=3.9.0,<4.0a0 + - python >=3.11,<3.12.0a0 + - python >=3.11,<3.12.0a0 *_cpython + - python_abi 3.11.* *_cp311 + constrains: + - numpy-base <0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 6652352 + timestamp: 1707226297967 +- conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.1-h7b32b05_0.conda + sha256: cbf62df3c79a5c2d113247ddea5658e9ff3697b6e741c210656e239ecaf1768f + md5: 41adf927e746dc75ecf0ef841c454e48 + depends: + - __glibc >=2.17,<3.0.a0 + - ca-certificates + - libgcc >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 2939306 + timestamp: 1739301879343 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.1-hd08dc88_0.conda + sha256: d80b52b56b2206053968270069616868cbeb289ef855cf1584b1bb0fef61b37c + md5: 09036190605c57eaecf01218e0e9542d + depends: + - ca-certificates + - libgcc >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 3476570 + timestamp: 1739303256089 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.1-h81ee809_0.conda + sha256: 4f8e2389e1b711b44182a075516d02c80fa7a3a7e25a71ff1b5ace9eae57a17a + md5: 75f9f0c7b1740017e2db83a53ab9a28e + depends: + - __osx >=11.0 + - ca-certificates + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 2934522 + timestamp: 1739301896733 +- conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + sha256: da157b19bcd398b9804c5c52fc000fcb8ab0525bdb9c70f95beaa0bb42f85af1 + md5: 3bfed7e6228ebf2f7b9eaa47f1b4e2aa + depends: + - python >=3.8 + license: Apache-2.0 + license_family: APACHE + size: 60164 + timestamp: 1733203368787 +- conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + sha256: 9f64009cdf5b8e529995f18e03665b03f5d07c0b17445b8badef45bde76249ee + md5: 617f15191456cc6a13db418a275435e5 + depends: + - python >=3.9 + license: MPL-2.0 + license_family: MOZILLA + size: 41075 + timestamp: 1733233471940 +- conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + sha256: bb50f6499e8bc1d1a26f17716c97984671121608dc0c3ecd34858112bce59a27 + md5: 577852c7e53901ddccc7e6a9959ddebe + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 20448 + timestamp: 1733232756001 +- conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.11.11-h9e4cc4f_1_cpython.conda + build_number: 1 + sha256: b29ce0836fce55bdff8d5c5b71c4921a23f87d3b950aea89a9e75784120b06b0 + md5: 8387070aa413ce9a8cc35a509fae938b + depends: + - __glibc >=2.17,<3.0.a0 + - bzip2 >=1.0.8,<2.0a0 + - ld_impl_linux-64 >=2.36.1 + - libexpat >=2.6.4,<3.0a0 + - libffi >=3.4,<4.0a0 + - libgcc >=13 + - liblzma >=5.6.3,<6.0a0 + - libnsl >=2.0.1,<2.1.0a0 + - libsqlite >=3.47.0,<4.0a0 + - libuuid >=2.38.1,<3.0a0 + - libxcrypt >=4.4.36 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.4.0,<4.0a0 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + constrains: + - python_abi 3.11.* *_cp311 + arch: x86_64 + platform: linux + license: Python-2.0 + size: 30624804 + timestamp: 1733409665928 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.11.11-h1683364_1_cpython.conda + build_number: 1 + sha256: b39a2253510b26213093cb29e27722cb33782aec213c020dfd17cd74d58f68e7 + md5: 7e8786cbe7b83e7011e681a4780c9b7f + depends: + - bzip2 >=1.0.8,<2.0a0 + - ld_impl_linux-aarch64 >=2.36.1 + - libexpat >=2.6.4,<3.0a0 + - libffi >=3.4,<4.0a0 + - libgcc >=13 + - liblzma >=5.6.3,<6.0a0 + - libnsl >=2.0.1,<2.1.0a0 + - libsqlite >=3.47.0,<4.0a0 + - libuuid >=2.38.1,<3.0a0 + - libxcrypt >=4.4.36 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.4.0,<4.0a0 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + constrains: + - python_abi 3.11.* *_cp311 + arch: aarch64 + platform: linux + license: Python-2.0 + size: 15234582 + timestamp: 1733407838276 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.11.11-hc22306f_1_cpython.conda + build_number: 1 + sha256: 94e198f6a5affa1431401fca7e3b27fda68c59f5ee726083288bff1f6bed8c7f + md5: 8d81dcd0be5bdcdd98e0f2482bf63784 + depends: + - __osx >=11.0 + - bzip2 >=1.0.8,<2.0a0 + - libexpat >=2.6.4,<3.0a0 + - libffi >=3.4,<4.0a0 + - liblzma >=5.6.3,<6.0a0 + - libsqlite >=3.47.0,<4.0a0 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.4.0,<4.0a0 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + constrains: + - python_abi 3.11.* *_cp311 + arch: arm64 + platform: osx + license: Python-2.0 + size: 14647146 + timestamp: 1733409012105 +- conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + sha256: a50052536f1ef8516ed11a844f9413661829aa083304dc624c5925298d078d79 + md5: 5ba79d7c71f03c678c8ead841f347d6e + depends: + - python >=3.9 + - six >=1.5 + license: Apache-2.0 + license_family: APACHE + size: 222505 + timestamp: 1733215763718 +- conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.11-5_cp311.conda + build_number: 5 + sha256: 2660b8059b3ee854bc5d3c6b1fce946e5bd2fe8fbca7827de2c5885ead6209de + md5: 139a8d40c8a2f430df31048949e450de + constrains: + - python 3.11.* *_cpython + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 6211 + timestamp: 1723823324668 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.11-5_cp311.conda + build_number: 5 + sha256: 76974c2732919ace87b5f3a634eac93fed6900d557fcae0575787ec0a33c370e + md5: c2078141f21872cc34d9305123ba08f2 + constrains: + - python 3.11.* *_cpython + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 6300 + timestamp: 1723823316891 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.11-5_cp311.conda + build_number: 5 + sha256: adc05729b7e0aca7b436e60a86f10822a92185dfcb48d66d6444e3629d3a1f6a + md5: 3b855e3734344134cb56c410f729c340 + constrains: + - python 3.11.* *_cpython + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 6308 + timestamp: 1723823096865 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.1-py311h7deb3e3_0.conda + sha256: bd6309ef4629744aaaccd9b33d6389dfe879e9864386137e6e4ecc7e1b9ed0f3 + md5: 52457fbaa0aef8136d5dd7bb8a36db9e + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libsodium >=1.0.20,<1.0.21.0a0 + - libstdcxx >=13 + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 + - zeromq >=4.3.5,<4.4.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 392547 + timestamp: 1738271109731 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyzmq-26.2.1-py311h826da9f_0.conda + sha256: 09783a354a64324ed363a3c9de0f98d088f74f009d1a6fdd263c3758c4924992 + md5: 919dc1bfa979c20c6358f06e4ee8529f + depends: + - libgcc >=13 + - libsodium >=1.0.20,<1.0.21.0a0 + - libstdcxx >=13 + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 + - zeromq >=4.3.5,<4.4.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 386832 + timestamp: 1738273148939 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.1-py311h01f2145_0.conda + sha256: 29255e5ca9f0b50d551fce4d5b7745fa11b4e672418a6d88a4c3f1a974dd4e44 + md5: 4c5daee5a983fb515460a2714b612126 + depends: + - __osx >=11.0 + - libcxx >=18 + - libsodium >=1.0.20,<1.0.21.0a0 + - python >=3.11,<3.12.0a0 + - python >=3.11,<3.12.0a0 *_cpython + - python_abi 3.11.* *_cp311 + - zeromq >=4.3.5,<4.4.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 370170 + timestamp: 1738271259321 +- conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda + sha256: 2d6d0c026902561ed77cd646b5021aef2d4db22e57a5b0178dfc669231e06d2c + md5: 283b96675859b20a825f8fa30f311446 + depends: + - libgcc >=13 + - ncurses >=6.5,<7.0a0 + arch: x86_64 + platform: linux + license: GPL-3.0-only + license_family: GPL + size: 282480 + timestamp: 1740379431762 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8382b9d_2.conda + sha256: 54bed3a3041befaa9f5acde4a37b1a02f44705b7796689574bcf9d7beaad2959 + md5: c0f08fc2737967edde1a272d4bf41ed9 + depends: + - libgcc >=13 + - ncurses >=6.5,<7.0a0 + arch: aarch64 + platform: linux + license: GPL-3.0-only + license_family: GPL + size: 291806 + timestamp: 1740380591358 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda + sha256: 7db04684d3904f6151eff8673270922d31da1eea7fa73254d01c437f49702e34 + md5: 63ef3f6e6d6d5c589e64f11263dc5676 + depends: + - ncurses >=6.5,<7.0a0 + arch: arm64 + platform: osx + license: GPL-3.0-only + license_family: GPL + size: 252359 + timestamp: 1740379663071 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-0.2.0-h074ec65_10.conda + sha256: 1c7b8a24296bf1309f866d363a1152a796d495f97a87d0c6f35b845e6c153250 + md5: 4b2fa94e6d42231ffee6707dfe578915 + depends: + - libsentencepiece 0.2.0 h8e10757_10 + - python_abi 3.11.* *_cp311 + - sentencepiece-python 0.2.0 py311hf886319_10 + - sentencepiece-spm 0.2.0 h8e10757_10 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 19473 + timestamp: 1735628355599 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-0.2.0-h7028846_10.conda + sha256: a8b4437185e91d858566be18830fe93148a6335005349db08f60859c4ac413ad + md5: 64c3bcdf9faa00799dd2ed3f16044c26 + depends: + - libsentencepiece 0.2.0 h6164ad9_10 + - python_abi 3.11.* *_cp311 + - sentencepiece-python 0.2.0 py311h5c441b1_10 + - sentencepiece-spm 0.2.0 h6164ad9_10 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 19719 + timestamp: 1735628704628 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-0.2.0-hf736513_10.conda + sha256: 16826ce65b4a391990fa85dd2af7d0cd98549be9e993181f18e6d633185a0bd9 + md5: 4b55d377c0ba17934ab1515b608b8276 + depends: + - libsentencepiece 0.2.0 he13a0af_10 + - python_abi 3.11.* *_cp311 + - sentencepiece-python 0.2.0 py311hb1a73f2_10 + - sentencepiece-spm 0.2.0 he13a0af_10 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 19753 + timestamp: 1735628583443 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-python-0.2.0-py311hf886319_10.conda + sha256: 6d92d183dbe714d2b2b042542b36e1a875f307c83bde4324f24a6a1ea62400b6 + md5: 90c0c6f0d4d58d2383373e3ab7bc4d19 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 h8e10757_10 + - libstdcxx >=13 + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 2350779 + timestamp: 1735627954130 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-python-0.2.0-py311h5c441b1_10.conda + sha256: 27f130942401ad16fc41417747cdc31cb2e579d8586335ddae7ee03b156ab3d8 + md5: df5020e8701d1a3eccfb5740c1e7af23 + depends: + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 h6164ad9_10 + - libstdcxx >=13 + - python >=3.11,<3.12.0a0 + - python >=3.11,<3.12.0a0 *_cpython + - python_abi 3.11.* *_cp311 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 2516036 + timestamp: 1735628059861 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-python-0.2.0-py311hb1a73f2_10.conda + sha256: 877e5831eb93d1b18c2218284806d8e6fb623a484c368bb0de785ca8586d97bf + md5: 2c13a5b72d87bad8a5af1f4b100e6a36 + depends: + - __osx >=11.0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 he13a0af_10 + - python >=3.11,<3.12.0a0 + - python >=3.11,<3.12.0a0 *_cpython + - python_abi 3.11.* *_cp311 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 2498193 + timestamp: 1735628323682 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-spm-0.2.0-h8e10757_10.conda + sha256: 6b55e1121545357d63c3aa0766931720e8aafc52d88641ba7631c8cbaa68c52f + md5: e977b7be5ac26c55825e121e00b90493 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 h8e10757_10 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 89076 + timestamp: 1735628334078 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-spm-0.2.0-h6164ad9_10.conda + sha256: b98fc1028a8e8fbf309af383f9c837290a14e076e6c5533dc251694ea33ffc6e + md5: a4b75936c01dca3f089f02752b7ee325 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 h6164ad9_10 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 85983 + timestamp: 1735628693813 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-spm-0.2.0-he13a0af_10.conda + sha256: b760aeee02e2afbfcce3f559e8a227aa4c94139157b1702fdfb41a057dad0e52 + md5: 9b7300f23cd330da8664cd072c162e5f + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 he13a0af_10 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 83826 + timestamp: 1735628514667 +- conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + sha256: 41db0180680cc67c3fa76544ffd48d6a5679d96f4b71d7498a759e94edc9a2db + md5: a451d576819089b0d672f18768be0f65 + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 16385 + timestamp: 1733381032766 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda + sha256: e0569c9caa68bf476bead1bed3d79650bb080b532c64a4af7d8ca286c08dea4e + md5: d453b98d9c83e71da0741bb0ff4d76bc + depends: + - libgcc-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 + arch: x86_64 + platform: linux + license: TCL + license_family: BSD + size: 3318875 + timestamp: 1699202167581 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda + sha256: 7fa27cc512d3a783f38bd16bbbffc008807372499d5b65d089a8e43bde9db267 + md5: f75105e0585851f818e0009dd1dde4dc + depends: + - libgcc-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 + arch: aarch64 + platform: linux + license: TCL + license_family: BSD + size: 3351802 + timestamp: 1695506242997 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda + sha256: 72457ad031b4c048e5891f3f6cb27a53cb479db68a52d965f796910e71a403a8 + md5: b50a57ba89c32b62428b71a875291c9b + depends: + - libzlib >=1.2.13,<2.0.0a0 + arch: arm64 + platform: osx + license: TCL + license_family: BSD + size: 3145523 + timestamp: 1699202432999 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py311h9ecbd09_0.conda + sha256: afa3489113154b5cb0724b0bf120b62df91f426dabfe5d02f2ba09e90d346b28 + md5: df3aee9c3e44489257a840b8354e77b9 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 855653 + timestamp: 1732616048886 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py311h5487e9b_0.conda + sha256: 0619169eb95f8d7285dd267be3559d3f71af071954792cdd9591a90602992cee + md5: fe331d12b7fccca2348a114c4742a0e0 + depends: + - libgcc >=13 + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 859892 + timestamp: 1732616872562 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py311h917b07b_0.conda + sha256: 80b79a7d4ed8e16019b8c634cca66935d18fc98be358c76a6ead8c611306ee14 + md5: 183b74c576dc7f920dae168997dbd1dd + depends: + - __osx >=11.0 + - python >=3.11,<3.12.0a0 + - python >=3.11,<3.12.0a0 *_cpython + - python_abi 3.11.* *_cp311 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 858954 + timestamp: 1732616142626 +- conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + sha256: 11e2c85468ae9902d24a27137b6b39b4a78099806e551d390e394a8c34b48e40 + md5: 9efbfdc37242619130ea42b1cc4ed861 + depends: + - colorama + - python >=3.9 + license: MPL-2.0 or MIT + size: 89498 + timestamp: 1735661472632 +- conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + sha256: f39a5620c6e8e9e98357507262a7869de2ae8cc07da8b7f84e517c9fd6c2b959 + md5: 019a7385be9af33791c989871317e1ed + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 110051 + timestamp: 1733367480074 +- conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + sha256: 337be7af5af8b2817f115b3b68870208b30c31d3439bec07bfb2d8f4823e3568 + md5: d17f13df8b65464ca316cbc000a3cb64 + depends: + - python >=3.9 + license: PSF-2.0 + license_family: PSF + size: 39637 + timestamp: 1733188758212 +- conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + sha256: c4b1ae8a2931fe9b274c44af29c5475a85b37693999f8c792dad0f8c6734b1de + md5: dbcace4706afdfb7eb891f7b37d07c04 + license: LicenseRef-Public-Domain + size: 122921 + timestamp: 1737119101255 +- conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda + sha256: a4dc72c96848f764bb5a5176aa93dd1e9b9e52804137b99daeebba277b31ea10 + md5: 3947a35e916fcc6b9825449affbf4214 + depends: + - __glibc >=2.17,<3.0.a0 + - krb5 >=1.21.3,<1.22.0a0 + - libgcc >=13 + - libsodium >=1.0.20,<1.0.21.0a0 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: MPL-2.0 + license_family: MOZILLA + size: 335400 + timestamp: 1731585026517 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zeromq-4.3.5-h5efb499_7.conda + sha256: a6003096dc0570a86492040ba32b04ce7662b159600be2252b7a0dfb9414e21c + md5: f2f3282559a4b87b7256ecafb4610107 + depends: + - krb5 >=1.21.3,<1.22.0a0 + - libgcc >=13 + - libsodium >=1.0.20,<1.0.21.0a0 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: MPL-2.0 + license_family: MOZILLA + size: 371419 + timestamp: 1731589490850 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda + sha256: 9e585569fe2e7d3bea71972cd4b9f06b1a7ab8fa7c5139f92a31cbceecf25a8a + md5: f7e6b65943cb73bce0143737fded08f1 + depends: + - __osx >=11.0 + - krb5 >=1.21.3,<1.22.0a0 + - libcxx >=18 + - libsodium >=1.0.20,<1.0.21.0a0 + arch: arm64 + platform: osx + license: MPL-2.0 + license_family: MOZILLA + size: 281565 + timestamp: 1731585108039 +- conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + sha256: 567c04f124525c97a096b65769834b7acb047db24b15a56888a322bf3966c3e1 + md5: 0c3cc595284c5e8f0f9900a9b228a332 + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 21809 + timestamp: 1732827613585 diff --git a/examples/mojo/operators/magic.lock b/examples/mojo/operators/magic.lock new file mode 100644 index 0000000000..9473097321 --- /dev/null +++ b/examples/mojo/operators/magic.lock @@ -0,0 +1,2182 @@ +version: 6 +environments: + default: + channels: + - url: https://conda.anaconda.org/conda-forge/ + - url: https://conda.modular.com/max-nightly/ + packages: + linux-64: + - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2025.1.31-hbcca054_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-31_h59b9bed_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-31_he106b2a_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h767d61c_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hf1ad2bd_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h767d61c_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-31_h7ac8fdf_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.29-pthreads_h94d23a6_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsentencepiece-0.2.0-h8e10757_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.49.1-hee588c1_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-h8f9b012_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022718-release.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-h2d0b736_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.1-h7b32b05_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.9-h9e4cc4f_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.1-py312hbf22597_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-0.2.0-hc8f76dd_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-python-0.2.0-py312hb6b8a2b_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-spm-0.2.0-h8e10757_10.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + linux-aarch64: + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h68df207_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2025.1.31-hcefe29a_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/keyutils-1.6.1-h4e544f5_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/krb5-1.21.3-h50a48e9_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h18dbdb1_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-31_h1a9f1db_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-31_hab92f65_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20250104-pl5321h976ea20_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.6.4-h5ad3122_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.4.6-he21f813_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-14.2.0-he277a41_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-14.2.0-he9431aa_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-31_h411afd4_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.4-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.29-pthreads_h9d3fd7e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.3-h44a3b7b_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsentencepiece-0.2.0-h6164ad9_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.20-h68df207_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.49.1-h5eb1b54_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022718-release.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-ha32ae93_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.1-hd08dc88_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.9-h1683364_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.12-5_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyzmq-26.2.1-py312h2427ae1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8382b9d_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-0.2.0-h6c1b121_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-python-0.2.0-py312h197ff68_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-spm-0.2.0-h6164ad9_10.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py312h52516f5_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zeromq-4.3.5-h5efb499_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + osx-arm64: + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2025.1.31-hf0a4a13_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_h07bc746_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-31_h10e41b3_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-31_hb3479ef_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.4-h286801f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-31_hc9a63f6_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.4-h39f12f2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.29-openmp_hf332438_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.3-h3bd63a1_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsentencepiece-0.2.0-he13a0af_10.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.1-h3f77e49_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022718-release.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.1-h81ee809_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.9-hc22306f_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-5_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.1-py312hf4875e0_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-0.2.0-h22a84ea_10.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-python-0.2.0-py312h155166a_10.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-spm-0.2.0-he13a0af_10.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda +packages: +- conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 + sha256: fe51de6107f9edc7aa4f786a70f4a883943bc9d39b3bb7307c04c41410990726 + md5: d7c89558ba9fa0495403155b64376d81 + arch: x86_64 + platform: linux + license: None + size: 2562 + timestamp: 1578324546067 +- conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 + build_number: 16 + sha256: fbe2c5e56a653bebb982eda4876a9178aedfc2b545f25d0ce9c4c0b508253d22 + md5: 73aaf86a425cc6e73fcf236a5a46396d + depends: + - _libgcc_mutex 0.1 conda_forge + - libgomp >=7.5.0 + constrains: + - openmp_impl 9999 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 23621 + timestamp: 1650670423406 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2 + build_number: 16 + sha256: 3702bef2f0a4d38bd8288bbe54aace623602a1343c2cfbefd3fa188e015bebf0 + md5: 6168d71addc746e8f2b8d57dfd2edcea + depends: + - libgomp >=7.5.0 + constrains: + - openmp_impl 9999 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 23712 + timestamp: 1650670790230 +- conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda + sha256: 5ced96500d945fb286c9c838e54fa759aa04a7129c59800f0846b4335cee770d + md5: 62ee74e96c5ebb0af99386de58cf9553 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: bzip2-1.0.6 + license_family: BSD + size: 252783 + timestamp: 1720974456583 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h68df207_7.conda + sha256: 2258b0b33e1cb3a9852d47557984abb6e7ea58e3d7f92706ec1f8e879290c4cb + md5: 56398c28220513b9ea13d7b450acfb20 + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: bzip2-1.0.6 + license_family: BSD + size: 189884 + timestamp: 1720974504976 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda + sha256: adfa71f158cbd872a36394c56c3568e6034aa55c623634b37a4836bd036e6b91 + md5: fc6948412dbbbe9a4c9ddbbcfe0a79ab + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: bzip2-1.0.6 + license_family: BSD + size: 122909 + timestamp: 1720974522888 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2025.1.31-hbcca054_0.conda + sha256: bf832198976d559ab44d6cdb315642655547e26d826e34da67cbee6624cda189 + md5: 19f3a56f68d2fd06c516076bff482c52 + arch: x86_64 + platform: linux + license: ISC + size: 158144 + timestamp: 1738298224464 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2025.1.31-hcefe29a_0.conda + sha256: 66c6408ee461593cfdb2d78d82e6ed74d04a04ccb51df3ef8a5f35148c9c6eec + md5: 462cb166cd2e26a396f856510a3aff67 + arch: aarch64 + platform: linux + license: ISC + size: 158290 + timestamp: 1738299057652 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2025.1.31-hf0a4a13_0.conda + sha256: 7e12816618173fe70f5c638b72adf4bfd4ddabf27794369bb17871c5bb75b9f9 + md5: 3569d6a9141adc64d2fe4797f3289e06 + arch: arm64 + platform: osx + license: ISC + size: 158425 + timestamp: 1738298167688 +- conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda + sha256: c920d23cd1fcf565031c679adb62d848af60d6fbb0edc2d50ba475cea4f0d8ab + md5: f22f4d4970e09d68a10b922cbb0408d3 + depends: + - __unix + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 84705 + timestamp: 1734858922844 +- conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + sha256: ab29d57dc70786c1269633ba3dff20288b81664d3ff8d21af995742e2bb03287 + md5: 962b9857ee8e7018c22f2776ffa0b2d7 + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 27011 + timestamp: 1733218222191 +- conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + sha256: 598951ebdb23e25e4cec4bbff0ae369cec65ead80b50bc08b441d8e54de5cf03 + md5: f4b39bf00c69f56ac01e020ebfac066c + depends: + - python >=3.9 + - zipp >=0.5 + license: Apache-2.0 + license_family: APACHE + size: 29141 + timestamp: 1737420302391 +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + sha256: 19d8bd5bb2fde910ec59e081eeb59529491995ce0d653a5209366611023a0b3a + md5: 4ebae00eae9705b0c3d6d1018a81d047 + depends: + - importlib-metadata >=4.8.3 + - jupyter_core >=4.12,!=5.0.* + - python >=3.9 + - python-dateutil >=2.8.2 + - pyzmq >=23.0 + - tornado >=6.2 + - traitlets >=5.3 + license: BSD-3-Clause + license_family: BSD + size: 106342 + timestamp: 1733441040958 +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + sha256: 732b1e8536bc22a5a174baa79842d79db2f4956d90293dd82dc1b3f6099bcccd + md5: 0a2980dada0dd7fd0998f0342308b1b1 + depends: + - __unix + - platformdirs >=2.5 + - python >=3.8 + - traitlets >=5.3 + license: BSD-3-Clause + license_family: BSD + size: 57671 + timestamp: 1727163547058 +- conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 + sha256: 150c05a6e538610ca7c43beb3a40d65c90537497a4f6a5f4d15ec0451b6f5ebb + md5: 30186d27e2c9fa62b45fb1476b7200e3 + depends: + - libgcc-ng >=10.3.0 + arch: x86_64 + platform: linux + license: LGPL-2.1-or-later + size: 117831 + timestamp: 1646151697040 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/keyutils-1.6.1-h4e544f5_0.tar.bz2 + sha256: 6d4233d97a9b38acbb26e1268bcf8c10a8e79c2aed7e5a385ec3769967e3e65b + md5: 1f24853e59c68892452ef94ddd8afd4b + depends: + - libgcc-ng >=10.3.0 + arch: aarch64 + platform: linux + license: LGPL-2.1-or-later + size: 112327 + timestamp: 1646166857935 +- conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda + sha256: 99df692f7a8a5c27cd14b5fb1374ee55e756631b9c3d659ed3ee60830249b238 + md5: 3f43953b7d3fb3aaa1d0d0723d91e368 + depends: + - keyutils >=1.6.1,<2.0a0 + - libedit >=3.1.20191231,<3.2.0a0 + - libedit >=3.1.20191231,<4.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - openssl >=3.3.1,<4.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 1370023 + timestamp: 1719463201255 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/krb5-1.21.3-h50a48e9_0.conda + sha256: 0ec272afcf7ea7fbf007e07a3b4678384b7da4047348107b2ae02630a570a815 + md5: 29c10432a2ca1472b53f299ffb2ffa37 + depends: + - keyutils >=1.6.1,<2.0a0 + - libedit >=3.1.20191231,<3.2.0a0 + - libedit >=3.1.20191231,<4.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - openssl >=3.3.1,<4.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 1474620 + timestamp: 1719463205834 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda + sha256: 4442f957c3c77d69d9da3521268cad5d54c9033f1a73f99cde0a3658937b159b + md5: c6dc8a0fdec13a0565936655c33069a1 + depends: + - __osx >=11.0 + - libcxx >=16 + - libedit >=3.1.20191231,<3.2.0a0 + - libedit >=3.1.20191231,<4.0a0 + - openssl >=3.3.1,<4.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 1155530 + timestamp: 1719463474401 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_4.conda + sha256: db73f38155d901a610b2320525b9dd3b31e4949215c870685fd92ea61b5ce472 + md5: 01f8d123c96816249efd255a31ad7712 + depends: + - __glibc >=2.17,<3.0.a0 + constrains: + - binutils_impl_linux-64 2.43 + arch: x86_64 + platform: linux + license: GPL-3.0-only + license_family: GPL + size: 671240 + timestamp: 1740155456116 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_4.conda + sha256: 016832a70b0aa97e1c4e47e23c00b0c34def679de25146736df353199f684f0d + md5: 80c9ad5e05e91bb6c0967af3880c9742 + constrains: + - binutils_impl_linux-aarch64 2.43 + arch: aarch64 + platform: linux + license: GPL-3.0-only + license_family: GPL + size: 699058 + timestamp: 1740155620594 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda + sha256: 143a586aa67d50622ef703de57b9d43f44945836d6568e0e7aa174bd8c45e0d4 + md5: 488f260ccda0afaf08acb286db439c2f + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + constrains: + - libabseil-static =20240722.0=cxx17* + - abseil-cpp =20240722.0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 1311599 + timestamp: 1736008414161 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h18dbdb1_4.conda + sha256: bb6c5fb3b8de5f90735c5252b57efb3c268ee222c755569dac18065f05147670 + md5: 633b9fe454ffea2aaf29e191d946a83b + depends: + - libgcc >=13 + - libstdcxx >=13 + constrains: + - abseil-cpp =20240722.0 + - libabseil-static =20240722.0=cxx17* + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 1334844 + timestamp: 1736008472455 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_h07bc746_4.conda + sha256: 05fa5e5e908962b9c5aba95f962e2ca81d9599c4715aebe5e4ddb72b309d1770 + md5: c2d95bd7aa8d564a9bd7eca5e571a5b3 + depends: + - __osx >=11.0 + - libcxx >=18 + constrains: + - libabseil-static =20240722.0=cxx17* + - abseil-cpp =20240722.0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 1178260 + timestamp: 1736008642885 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-31_h59b9bed_openblas.conda + build_number: 31 + sha256: 9839fc4ac0cbb0aa3b9eea520adfb57311838959222654804e58f6f2d1771db5 + md5: 728dbebd0f7a20337218beacffd37916 + depends: + - libopenblas >=0.3.29,<0.3.30.0a0 + - libopenblas >=0.3.29,<1.0a0 + constrains: + - liblapacke =3.9.0=31*_openblas + - liblapack =3.9.0=31*_openblas + - blas =2.131=openblas + - mkl <2025 + - libcblas =3.9.0=31*_openblas + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 16859 + timestamp: 1740087969120 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-31_h1a9f1db_openblas.conda + build_number: 31 + sha256: 67c9c81dd0444ecc712124034d9f74186ca82fd770b3df46b1a68564461c6a1a + md5: 48bd5bf15ccf3e409840be9caafc0ad5 + depends: + - libopenblas >=0.3.29,<0.3.30.0a0 + - libopenblas >=0.3.29,<1.0a0 + constrains: + - liblapack =3.9.0=31*_openblas + - blas =2.131=openblas + - libcblas =3.9.0=31*_openblas + - mkl <2025 + - liblapacke =3.9.0=31*_openblas + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 16915 + timestamp: 1740087911042 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-31_h10e41b3_openblas.conda + build_number: 31 + sha256: 369586e7688b59b4f92c709b99d847d66d4d095425db327dd32ee5e6ab74697f + md5: 39b053da5e7035c6592102280aa7612a + depends: + - libopenblas >=0.3.29,<0.3.30.0a0 + - libopenblas >=0.3.29,<1.0a0 + constrains: + - liblapacke =3.9.0=31*_openblas + - libcblas =3.9.0=31*_openblas + - blas =2.131=openblas + - mkl <2025 + - liblapack =3.9.0=31*_openblas + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 17123 + timestamp: 1740088119350 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-31_he106b2a_openblas.conda + build_number: 31 + sha256: ede8545011f5b208b151fe3e883eb4e31d495ab925ab7b9ce394edca846e0c0d + md5: abb32c727da370c481a1c206f5159ce9 + depends: + - libblas 3.9.0 31_h59b9bed_openblas + constrains: + - liblapacke =3.9.0=31*_openblas + - liblapack =3.9.0=31*_openblas + - blas =2.131=openblas + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 16796 + timestamp: 1740087984429 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-31_hab92f65_openblas.conda + build_number: 31 + sha256: f0457a1d2982f0a28bfbadaa02621677c324e88f7c8198c24fb3e3214c468dba + md5: 6b81dbae56a519f1ec2f25e0ee2f4334 + depends: + - libblas 3.9.0 31_h1a9f1db_openblas + constrains: + - liblapack =3.9.0=31*_openblas + - blas =2.131=openblas + - liblapacke =3.9.0=31*_openblas + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 16824 + timestamp: 1740087917500 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-31_hb3479ef_openblas.conda + build_number: 31 + sha256: f237486cc9118d09d0f3ff8820280de34365f98ee7b7dc5ab923b04c7cbf25a5 + md5: 7353c2bf0e90834cb70545671996d871 + depends: + - libblas 3.9.0 31_h10e41b3_openblas + constrains: + - liblapacke =3.9.0=31*_openblas + - blas =2.131=openblas + - liblapack =3.9.0=31*_openblas + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 17032 + timestamp: 1740088127097 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda + sha256: 776092346da87a2a23502e14d91eb0c32699c4a1522b7331537bd1c3751dcff5 + md5: 5b3e1610ff8bd5443476b91d618f5b77 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + size: 523505 + timestamp: 1736877862502 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda + sha256: d789471216e7aba3c184cd054ed61ce3f6dac6f87a50ec69291b9297f8c18724 + md5: c277e0a4d549b03ac1e9d6cbbe3d017b + depends: + - ncurses + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - ncurses >=6.5,<7.0a0 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + size: 134676 + timestamp: 1738479519902 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20250104-pl5321h976ea20_0.conda + sha256: c0b27546aa3a23d47919226b3a1635fccdb4f24b94e72e206a751b33f46fd8d6 + md5: fb640d776fc92b682a14e001980825b1 + depends: + - ncurses + - libgcc >=13 + - ncurses >=6.5,<7.0a0 + arch: aarch64 + platform: linux + license: BSD-2-Clause + license_family: BSD + size: 148125 + timestamp: 1738479808948 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda + sha256: 66aa216a403de0bb0c1340a88d1a06adaff66bae2cfd196731aa24db9859d631 + md5: 44083d2d2c2025afca315c7a172eab2b + depends: + - ncurses + - __osx >=11.0 + - ncurses >=6.5,<7.0a0 + arch: arm64 + platform: osx + license: BSD-2-Clause + license_family: BSD + size: 107691 + timestamp: 1738479560845 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda + sha256: 56541b98447b58e52d824bd59d6382d609e11de1f8adf20b23143e353d2b8d26 + md5: db833e03127376d461e1e13e76f09b6c + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + constrains: + - expat 2.6.4.* + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 73304 + timestamp: 1730967041968 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.6.4-h5ad3122_0.conda + sha256: f42e758009ba9db90d1fe7992bc3e60d0c52f71fb20923375d2c44ae69a5a2b3 + md5: f1b3fab36861b3ce945a13f0dfdfc688 + depends: + - libgcc >=13 + constrains: + - expat 2.6.4.* + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 72345 + timestamp: 1730967203789 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.4-h286801f_0.conda + sha256: e42ab5ace927ee7c84e3f0f7d813671e1cf3529f5f06ee5899606630498c2745 + md5: 38d2656dd914feb0cab8c629370768bf + depends: + - __osx >=11.0 + constrains: + - expat 2.6.4.* + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 64693 + timestamp: 1730967175868 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_0.conda + sha256: 67a6c95e33ebc763c1adc3455b9a9ecde901850eb2fceb8e646cc05ef3a663da + md5: e3eb7806380bc8bcecba6d749ad5f026 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 53415 + timestamp: 1739260413716 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.4.6-he21f813_0.conda + sha256: 41568066beefe7b319ff27d85952242e5b77fb753d705b8716041959e17c35c2 + md5: 966084fccf3ad62a3160666cda869f28 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 51513 + timestamp: 1739260449772 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 + sha256: 41b3d13efb775e340e4dba549ab5c029611ea6918703096b2eaa9c015c0750ca + md5: 086914b672be056eb70fd4285b6783b6 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 39020 + timestamp: 1636488587153 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h767d61c_2.conda + sha256: 3a572d031cb86deb541d15c1875aaa097baefc0c580b54dc61f5edab99215792 + md5: ef504d1acbd74b7cc6849ef8af47dd03 + depends: + - __glibc >=2.17,<3.0.a0 + - _openmp_mutex >=4.5 + constrains: + - libgomp 14.2.0 h767d61c_2 + - libgcc-ng ==14.2.0=*_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 847885 + timestamp: 1740240653082 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-14.2.0-he277a41_2.conda + sha256: a57f7f9ba2a12f56eafdcd25b6d75f7be10b8fc1a802a58b76a77ca8c66f4503 + md5: 6b4268a60b10f29257b51b9b67ff8d76 + depends: + - _openmp_mutex >=4.5 + constrains: + - libgcc-ng ==14.2.0=*_2 + - libgomp 14.2.0 he277a41_2 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 535507 + timestamp: 1740241069780 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_2.conda + sha256: fb7558c328b38b2f9d2e412c48da7890e7721ba018d733ebdfea57280df01904 + md5: a2222a6ada71fb478682efe483ce0f92 + depends: + - libgcc 14.2.0 h767d61c_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 53758 + timestamp: 1740240660904 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-14.2.0-he9431aa_2.conda + sha256: 9647f75cddc18b07eebe6e1f21500eed50a6af2c43c84e831b4c7a597e10d226 + md5: 692c2bb75f32cfafb6799cf6d1c5d0e0 + depends: + - libgcc 14.2.0 he277a41_2 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 53622 + timestamp: 1740241074834 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_2.conda + sha256: e05263e8960da03c341650f2a3ffa4ccae4e111cb198e8933a2908125459e5a6 + md5: fb54c4ea68b460c278d26eea89cfbcc3 + depends: + - libgfortran5 14.2.0 hf1ad2bd_2 + constrains: + - libgfortran-ng ==14.2.0=*_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 53733 + timestamp: 1740240690977 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_2.conda + sha256: 996d3c0505301901a7ab23b5e7daad21635d1c065240bb0f4faf7e4f75d7f49d + md5: d8b9d9dc0c8cd97d375b48e55947ba70 + depends: + - libgfortran5 14.2.0 hb6113d0_2 + constrains: + - libgfortran-ng ==14.2.0=*_2 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 53611 + timestamp: 1740241100147 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda + sha256: 44e541b4821c96b28b27fef5630883a60ce4fee91fd9c79f25a199f8f73f337b + md5: 4a55d9e169114b2b90d3ec4604cd7bbf + depends: + - libgfortran5 13.2.0 hf226fd6_3 + arch: arm64 + platform: osx + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 110233 + timestamp: 1707330749033 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hf1ad2bd_2.conda + sha256: c17b7cf3073a1f4e1f34d50872934fa326346e104d3c445abc1e62481ad6085c + md5: 556a4fdfac7287d349b8f09aba899693 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14.2.0 + constrains: + - libgfortran 14.2.0 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 1461978 + timestamp: 1740240671964 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_2.conda + sha256: 7b9e1d3666a00e5a52e5d43c003bd1c73ab472804be513c070aaedca9c4c2a9a + md5: cd754566661513808ef2408c4ab99a2f + depends: + - libgcc >=14.2.0 + constrains: + - libgfortran 14.2.0 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 1100765 + timestamp: 1740241083241 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda + sha256: bafc679eedb468a86aa4636061c55966186399ee0a04b605920d208d97ac579a + md5: 66ac81d54e95c534ae488726c1f698ea + depends: + - llvm-openmp >=8.0.0 + constrains: + - libgfortran 5.0.0 13_2_0_*_3 + arch: arm64 + platform: osx + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 997381 + timestamp: 1707330687590 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h767d61c_2.conda + sha256: 1a3130e0b9267e781b89399580f3163632d59fe5b0142900d63052ab1a53490e + md5: 06d02030237f4d5b3d9a7e7d348fe3c6 + depends: + - __glibc >=2.17,<3.0.a0 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 459862 + timestamp: 1740240588123 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_2.conda + sha256: 4e303711fb7413bf98995beac58e731073099d7a669a3b81e49330ca8da05174 + md5: b11c09d9463daf4cae492d29806b1889 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 462783 + timestamp: 1740241005079 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-31_h7ac8fdf_openblas.conda + build_number: 31 + sha256: f583661921456e798aba10972a8abbd9d33571c655c1f66eff450edc9cbefcf3 + md5: 452b98eafe050ecff932f0ec832dd03f + depends: + - libblas 3.9.0 31_h59b9bed_openblas + constrains: + - libcblas =3.9.0=31*_openblas + - liblapacke =3.9.0=31*_openblas + - blas =2.131=openblas + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 16790 + timestamp: 1740087997375 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-31_h411afd4_openblas.conda + build_number: 31 + sha256: 27613828ff6fb258b2e58802617df549f00089660ea8ab6c55c68f042c570162 + md5: 41dbff5eb805a75c120a7b7a1c744dc2 + depends: + - libblas 3.9.0 31_h1a9f1db_openblas + constrains: + - blas =2.131=openblas + - libcblas =3.9.0=31*_openblas + - liblapacke =3.9.0=31*_openblas + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 16845 + timestamp: 1740087923843 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-31_hc9a63f6_openblas.conda + build_number: 31 + sha256: fe55b9aaf82c6c0192c3d1fcc9b8e884f97492dda9a8de5dae29334b3135fab5 + md5: ff57a55a2cbce171ef5707fb463caf19 + depends: + - libblas 3.9.0 31_h10e41b3_openblas + constrains: + - liblapacke =3.9.0=31*_openblas + - libcblas =3.9.0=31*_openblas + - blas =2.131=openblas + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 17033 + timestamp: 1740088134988 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda + sha256: cad52e10319ca4585bc37f0bc7cce99ec7c15dc9168e42ccb96b741b0a27db3f + md5: 42d5b6a0f30d3c10cd88cb8584fda1cb + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: 0BSD + size: 111357 + timestamp: 1738525339684 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.4-h86ecc28_0.conda + sha256: 96413664f0fade54a4931940d18749cfc8e6308349dbb0cb83adb2394ca1f730 + md5: b88244e0a115cc34f7fbca9b11248e76 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: 0BSD + size: 124197 + timestamp: 1738528201520 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.4-h39f12f2_0.conda + sha256: 560c59d3834cc652a84fb45531bd335ad06e271b34ebc216e380a89798fe8e2c + md5: e3fd1f8320a100f2b210e690a57cd615 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: 0BSD + size: 98945 + timestamp: 1738525462560 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda + sha256: 26d77a3bb4dceeedc2a41bd688564fe71bf2d149fdcf117049970bc02ff1add6 + md5: 30fd6e37fe21f86f4bd26d6ee73eeec7 + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: LGPL-2.1-only + license_family: GPL + size: 33408 + timestamp: 1697359010159 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda + sha256: fd18c2b75d7411096428d36a70b36b1a17e31f7b8956b6905d145792d49e97f8 + md5: c14f32510f694e3185704d89967ec422 + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: LGPL-2.1-only + license_family: GPL + size: 34501 + timestamp: 1697358973269 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.29-pthreads_h94d23a6_0.conda + sha256: cc5389ea254f111ef17a53df75e8e5209ef2ea6117e3f8aced88b5a8e51f11c4 + md5: 0a4d0252248ef9a0f88f2ba8b8a08e12 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libgfortran + - libgfortran5 >=14.2.0 + constrains: + - openblas >=0.3.29,<0.3.30.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 5919288 + timestamp: 1739825731827 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.29-pthreads_h9d3fd7e_0.conda + sha256: 3a2ccf4c9098cd18a636e9b7fff947fdeb4962bcfb75c9d6fd80b8c50caf6a3c + md5: a99e2bfcb1ad6362544c71281eb617e9 + depends: + - libgcc >=14 + - libgfortran + - libgfortran5 >=14.2.0 + constrains: + - openblas >=0.3.29,<0.3.30.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 4801657 + timestamp: 1739825308974 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.29-openmp_hf332438_0.conda + sha256: 8989d9e01ec8c9b2d48dbb5efbe70b356fcd15990fb53b64fcb84798982c0343 + md5: 0cd1148c68f09027ee0b0f0179f77c30 + depends: + - __osx >=11.0 + - libgfortran 5.* + - libgfortran5 >=13.2.0 + - llvm-openmp >=18.1.8 + constrains: + - openblas >=0.3.29,<0.3.30.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 4168442 + timestamp: 1739825514918 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda + sha256: 51125ebb8b7152e4a4e69fd2398489c4ec8473195c27cde3cbdf1cb6d18c5493 + md5: d8703f1ffe5a06356f06467f1d0b9464 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 2960815 + timestamp: 1735577210663 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.3-h44a3b7b_1.conda + sha256: ecb69f2b1668e784b41ba667493be846662d5ef702bef64fb2e013bb1364cdc4 + md5: 68f807f7cc13951652bbe048253fd405 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 2788074 + timestamp: 1735576315676 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.3-h3bd63a1_1.conda + sha256: f58a16b13ad53346903c833e266f83c3d770a43a432659b98710aed85ca885e7 + md5: bdbfea4cf45ae36652c6bbcc2e7ebe91 + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=18 + - libzlib >=1.3.1,<2.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 2271580 + timestamp: 1735576361997 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsentencepiece-0.2.0-h8e10757_10.conda + sha256: dc399e0f04a09f8c1807c3b36e578eb81f81891c0ddf21de9c1fb9f048ce4031 + md5: 4f43dbcfacd3cc9a183dd3a48b94d3c0 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 823649 + timestamp: 1735627841126 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsentencepiece-0.2.0-h6164ad9_10.conda + sha256: 57074803772f65d4075b7d6dc17ff5aa40ec3a30109fa4225ca16911504c4a8b + md5: a7a192edc9cfba26a27df3283203e6a1 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 800865 + timestamp: 1735627982895 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsentencepiece-0.2.0-he13a0af_10.conda + sha256: 3347a8840d085ce1661928e736229f068d56c84312fbed90886e059023d85611 + md5: 1f67e5e30edd56e0a0bf6df6bb711a9d + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 754657 + timestamp: 1735628030895 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda + sha256: 0105bd108f19ea8e6a78d2d994a6d4a8db16d19a41212070d2d1d48a63c34161 + md5: a587892d3c13b6621a6091be690dbca2 + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: ISC + size: 205978 + timestamp: 1716828628198 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.20-h68df207_0.conda + sha256: 448df5ea3c5cf1af785aad46858d7a5be0522f4234a4dc9bb764f4d11ff3b981 + md5: 2e4a8f23bebdcb85ca8e5a0fbe75666a + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: ISC + size: 177394 + timestamp: 1716828514515 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda + sha256: fade8223e1e1004367d7101dd17261003b60aa576df6d7802191f8972f7470b1 + md5: a7ce36e284c5faaf93c220dfc39e3abd + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: ISC + size: 164972 + timestamp: 1716828607917 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.49.1-hee588c1_1.conda + sha256: 7a09eef804ef7cf4d88215c2297eabb72af8ad0bd5b012060111c289f14bbe7d + md5: 73cea06049cc4174578b432320a003b8 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux + license: Unlicense + size: 915956 + timestamp: 1739953155793 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.49.1-h5eb1b54_1.conda + sha256: 920fb3b7d3b873babf79a3e392cc82d43b8bd02a573ccaff34219efb5cf7b51e + md5: 150d64241fa27d9d35a7f421ca968a6c + depends: + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + arch: aarch64 + platform: linux + license: Unlicense + size: 915118 + timestamp: 1739953101699 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.1-h3f77e49_1.conda + sha256: 266639fb10ca92287961574b0b4d6031fa40dd9d723d64a0fcb08513a24dab03 + md5: c83357a21092bd952933c36c5cb4f4d6 + depends: + - __osx >=11.0 + - libzlib >=1.3.1,<2.0a0 + arch: arm64 + platform: osx + license: Unlicense + size: 898767 + timestamp: 1739953312379 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-h8f9b012_2.conda + sha256: 8f5bd92e4a24e1d35ba015c5252e8f818898478cb3bc50bd8b12ab54707dc4da + md5: a78c856b6dc6bf4ea8daeb9beaaa3fb0 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc 14.2.0 h767d61c_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 3884556 + timestamp: 1740240685253 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_2.conda + sha256: c30a74bc996013907f6d9f344da007c26d98ef9a0831151cd50aece3125c45d5 + md5: eadee2cda99697e29411c1013c187b92 + depends: + - libgcc 14.2.0 he277a41_2 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 3810779 + timestamp: 1740241094774 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_2.conda + sha256: e86f38b007cf97cc2c67cd519f2de12a313c4ee3f5ef11652ad08932a5e34189 + md5: c75da67f045c2627f59e6fcb5f4e3a9b + depends: + - libstdcxx 14.2.0 h8f9b012_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 53830 + timestamp: 1740240722530 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_2.conda + sha256: 0107886ead6f255956d8e520f8dff260f9ab3d0d51512f18c52710c406e4b2df + md5: c934c1fddad582fcc385b608eb06a70c + depends: + - libstdcxx 14.2.0 h3f4de04_2 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 53715 + timestamp: 1740241126343 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda + sha256: 787eb542f055a2b3de553614b25f09eefb0a0931b0c87dbcce6efdfd92f04f18 + md5: 40b61aab5c7ba9ff276c41cfffe6b80b + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 33601 + timestamp: 1680112270483 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda + sha256: 616277b0c5f7616c2cdf36f6c316ea3f9aa5bb35f2d4476a349ab58b9b91675f + md5: 000e30b09db0b7c775b21695dff30969 + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 35720 + timestamp: 1680113474501 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda + sha256: 6ae68e0b86423ef188196fff6207ed0c8195dd84273cb5623b85aa08033a410c + md5: 5aa797f8787fe7a17d1b0821485b5adc + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: LGPL-2.1-or-later + size: 100393 + timestamp: 1702724383534 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda + sha256: 6b46c397644091b8a26a3048636d10b989b1bf266d4be5e9474bf763f828f41f + md5: b4df5d7d4b63579d081fd3a4cf99740e + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: LGPL-2.1-or-later + size: 114269 + timestamp: 1702724369203 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda + sha256: d4bfe88d7cb447768e31650f06257995601f89076080e76df55e3112d4e47dc4 + md5: edb0dca6bc32e4f4789199455a1dbeb8 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + constrains: + - zlib 1.3.1 *_2 + arch: x86_64 + platform: linux + license: Zlib + license_family: Other + size: 60963 + timestamp: 1727963148474 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda + sha256: 5a2c1eeef69342e88a98d1d95bff1603727ab1ff4ee0e421522acd8813439b84 + md5: 08aad7cbe9f5a6b460d0976076b6ae64 + depends: + - libgcc >=13 + constrains: + - zlib 1.3.1 *_2 + arch: aarch64 + platform: linux + license: Zlib + license_family: Other + size: 66657 + timestamp: 1727963199518 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda + sha256: ce34669eadaba351cd54910743e6a2261b67009624dbc7daeeafdef93616711b + md5: 369964e85dc26bfe78f41399b366c435 + depends: + - __osx >=11.0 + constrains: + - zlib 1.3.1 *_2 + arch: arm64 + platform: osx + license: Zlib + license_family: Other + size: 46438 + timestamp: 1727963202283 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda + sha256: b92a669f2059874ebdcb69041b6c243d68ffc3fb356ac1339cec44aeb27245d7 + md5: c4d54bfd3817313ce758aa76283b118d + depends: + - __osx >=11.0 + constrains: + - openmp 19.1.7|19.1.7.* + arch: arm64 + platform: osx + license: Apache-2.0 WITH LLVM-exception + license_family: APACHE + size: 280830 + timestamp: 1736986295869 +- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022718-release.conda + noarch: python + sha256: f3dcb14fed5470c0fc521542cbd2f1c56ca7e46d560f46176b8f926198cb3cbd + md5: 01fe5e0cf46c84a6345e323ad1316764 + depends: + - max-core ==25.2.0.dev2025022718 release + - max-python ==25.2.0.dev2025022718 release + - mojo-jupyter ==25.2.0.dev2025022718 release + - mblack ==25.2.0.dev2025022718 release + license: LicenseRef-Modular-Proprietary + size: 9905 + timestamp: 1740680254354 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022718-release.conda + sha256: 847d5767109a305d7bcad4ac29248a74a384034692934a0c54b00a590c27094a + md5: fc5a9ae36c7805979bd58ca55a25066f + depends: + - mblack ==25.2.0.dev2025022718 release + license: LicenseRef-Modular-Proprietary + size: 249811868 + timestamp: 1740680254354 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022718-release.conda + sha256: 250c35ecccd302e6c7de836ac200a5ece92e74508c2590c585d8803d488fd650 + md5: d88728b468c85902512a0f9b99251035 + depends: + - mblack ==25.2.0.dev2025022718 release + license: LicenseRef-Modular-Proprietary + size: 252108573 + timestamp: 1740680207793 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022718-release.conda + sha256: fb28d9e61aa507ea84b470082d3dc96844a24fe672d4e4c57e832655c5d0a202 + md5: dd8734453f7276a258f3351cc5c506c3 + depends: + - mblack ==25.2.0.dev2025022718 release + license: LicenseRef-Modular-Proprietary + size: 217273450 + timestamp: 1740681819160 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022718-release.conda + noarch: python + sha256: 831b4d62f66f0083321121c6ba25dedab3ee41d5e9f19d9752969592214af398 + md5: f828ace91aa057e4774e84ad459adccf + depends: + - max-core ==25.2.0.dev2025022718 release + - click >=8.0.0 + - numpy >=1.18,<2.0 + - sentencepiece >=0.2.0 + - tqdm >=4.67.1 + constrains: + - aiohttp >=3.11.12 + - fastapi >=0.114.2 + - gguf >=0.14.0 + - hf-transfer >=0.1.9 + - httpx >=0.28.1 + - huggingface_hub >=0.24.0 + - nvitop >=1.4.1 + - opentelemetry-api >=1.29.0 + - opentelemetry-exporter-otlp-proto-http >=1.27.0 + - opentelemetry-exporter-prometheus <1.0.0 + - opentelemetry-sdk >=1.29.0,<2.0 + - pillow >=10.3.0 + - prometheus_client >=0.21.0 + - prometheus-async >=22.2.0 + - psutil >=6.1.1 + - pydantic + - pydantic-settings >=2.7.1 + - pyinstrument >=5.0.1 + - python-json-logger >=2.0.7 + - requests >=2.32.3 + - rich >=13.9.4 + - safetensors >=0.5.2 + - sentinel >=0.3.0 + - sse-starlette >=2.1.2 + - tokenizers >=0.19.0 + - pytorch >=2.2.2,<=2.5.1 + - transformers >=4.40.1 + - uvicorn >=0.34.0 + - uvloop >=0.21.0 + - xgrammar ==0.1.11 + license: LicenseRef-Modular-Proprietary + size: 123584411 + timestamp: 1740680254354 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022718-release.conda + noarch: python + sha256: b9e5755b7bf6314a37a90ef0250c93f5e7c693954d7a6389a97ab9ef06e23cc3 + md5: bfd2e752d0fc9516b78a17169ce9cc78 + depends: + - max-core ==25.2.0.dev2025022718 release + - click >=8.0.0 + - numpy >=1.18,<2.0 + - sentencepiece >=0.2.0 + - tqdm >=4.67.1 + constrains: + - aiohttp >=3.11.12 + - fastapi >=0.114.2 + - gguf >=0.14.0 + - hf-transfer >=0.1.9 + - httpx >=0.28.1 + - huggingface_hub >=0.24.0 + - nvitop >=1.4.1 + - opentelemetry-api >=1.29.0 + - opentelemetry-exporter-otlp-proto-http >=1.27.0 + - opentelemetry-exporter-prometheus <1.0.0 + - opentelemetry-sdk >=1.29.0,<2.0 + - pillow >=10.3.0 + - prometheus_client >=0.21.0 + - prometheus-async >=22.2.0 + - psutil >=6.1.1 + - pydantic + - pydantic-settings >=2.7.1 + - pyinstrument >=5.0.1 + - python-json-logger >=2.0.7 + - requests >=2.32.3 + - rich >=13.9.4 + - safetensors >=0.5.2 + - sentinel >=0.3.0 + - sse-starlette >=2.1.2 + - tokenizers >=0.19.0 + - pytorch >=2.2.2,<=2.5.1 + - transformers >=4.40.1 + - uvicorn >=0.34.0 + - uvloop >=0.21.0 + - xgrammar ==0.1.11 + license: LicenseRef-Modular-Proprietary + size: 126004454 + timestamp: 1740680207793 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022718-release.conda + noarch: python + sha256: 7da9f4655082bb64c2b0cc996ffefa0ce5c49744854ed77a9b0d000e27cf5a55 + md5: b16d498a148aa61dca2a6bfec5cb8e46 + depends: + - max-core ==25.2.0.dev2025022718 release + - click >=8.0.0 + - numpy >=1.18,<2.0 + - sentencepiece >=0.2.0 + - tqdm >=4.67.1 + constrains: + - aiohttp >=3.11.12 + - fastapi >=0.114.2 + - gguf >=0.14.0 + - hf-transfer >=0.1.9 + - httpx >=0.28.1 + - huggingface_hub >=0.24.0 + - nvitop >=1.4.1 + - opentelemetry-api >=1.29.0 + - opentelemetry-exporter-otlp-proto-http >=1.27.0 + - opentelemetry-exporter-prometheus <1.0.0 + - opentelemetry-sdk >=1.29.0,<2.0 + - pillow >=10.3.0 + - prometheus_client >=0.21.0 + - prometheus-async >=22.2.0 + - psutil >=6.1.1 + - pydantic + - pydantic-settings >=2.7.1 + - pyinstrument >=5.0.1 + - python-json-logger >=2.0.7 + - requests >=2.32.3 + - rich >=13.9.4 + - safetensors >=0.5.2 + - sentinel >=0.3.0 + - sse-starlette >=2.1.2 + - tokenizers >=0.19.0 + - pytorch >=2.2.2,<=2.5.1 + - transformers >=4.40.1 + - uvicorn >=0.34.0 + - uvloop >=0.21.0 + - xgrammar ==0.1.11 + license: LicenseRef-Modular-Proprietary + size: 112658409 + timestamp: 1740681819160 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022718-release.conda + noarch: python + sha256: ff042a8abfed0e2e36b207e3d4f59a2b4577dea7f099b08d1aaef128ab796f09 + md5: 719ca7123d53415adcdd7f0cb8396c51 + depends: + - python >=3.9,<3.13 + - click >=8.0.0 + - mypy_extensions >=0.4.3 + - packaging >=22.0 + - pathspec >=0.9.0 + - platformdirs >=2 + - typing_extensions >=v4.12.2 + - python + license: MIT + size: 130852 + timestamp: 1740680254353 +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022718-release.conda + noarch: python + sha256: 19c33e23b27e240fee0b2a1d56921802ac88558dc2da417837cd590175561e16 + md5: 6b8d00b15817db11e026f824f7f0ba14 + depends: + - max-core ==25.2.0.dev2025022718 release + - python >=3.9,<3.13 + - jupyter_client >=8.6.2,<8.7 + - python + license: LicenseRef-Modular-Proprietary + size: 22981 + timestamp: 1740680254354 +- conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda + sha256: 1895f47b7d68581a6facde5cb13ab8c2764c2e53a76bd746f8f98910dc4e08fe + md5: 29097e7ea634a45cc5386b95cac6568f + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 10854 + timestamp: 1733230986902 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda + sha256: 3fde293232fa3fca98635e1167de6b7c7fda83caf24b9d6c91ec9eefb4f4d586 + md5: 47e340acb35de30501a76c7c799c41d7 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: X11 AND BSD-3-Clause + size: 891641 + timestamp: 1738195959188 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-ha32ae93_3.conda + sha256: 91cfb655a68b0353b2833521dc919188db3d8a7f4c64bea2c6a7557b24747468 + md5: 182afabe009dc78d8b73100255ee6868 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: X11 AND BSD-3-Clause + size: 926034 + timestamp: 1738196018799 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda + sha256: 2827ada40e8d9ca69a153a45f7fd14f32b2ead7045d3bbb5d10964898fe65733 + md5: 068d497125e4bf8a66bf707254fff5ae + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: X11 AND BSD-3-Clause + size: 797030 + timestamp: 1738196177597 +- conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda + sha256: fe3459c75cf84dcef6ef14efcc4adb0ade66038ddd27cadb894f34f4797687d8 + md5: d8285bea2a350f63fab23bf460221f3f + depends: + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - libgcc-ng >=12 + - liblapack >=3.9.0,<4.0a0 + - libstdcxx-ng >=12 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - numpy-base <0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 7484186 + timestamp: 1707225809722 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda + sha256: 23767677a7790bee5457d5e75ebd508b9a31c5354216f4310dd1acfca3f7a6f9 + md5: 9cebf5a06cb87d4569cd68df887af476 + depends: + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - libgcc-ng >=12 + - liblapack >=3.9.0,<4.0a0 + - libstdcxx-ng >=12 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - numpy-base <0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 6614296 + timestamp: 1707225994762 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda + sha256: c8841d6d6f61fd70ca80682efbab6bdb8606dc77c68d8acabfbd7c222054f518 + md5: d83fc83d589e2625a3451c9a7e21047c + depends: + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - libcxx >=16 + - liblapack >=3.9.0,<4.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - numpy-base <0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 6073136 + timestamp: 1707226249608 +- conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.1-h7b32b05_0.conda + sha256: cbf62df3c79a5c2d113247ddea5658e9ff3697b6e741c210656e239ecaf1768f + md5: 41adf927e746dc75ecf0ef841c454e48 + depends: + - __glibc >=2.17,<3.0.a0 + - ca-certificates + - libgcc >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 2939306 + timestamp: 1739301879343 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.1-hd08dc88_0.conda + sha256: d80b52b56b2206053968270069616868cbeb289ef855cf1584b1bb0fef61b37c + md5: 09036190605c57eaecf01218e0e9542d + depends: + - ca-certificates + - libgcc >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 3476570 + timestamp: 1739303256089 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.1-h81ee809_0.conda + sha256: 4f8e2389e1b711b44182a075516d02c80fa7a3a7e25a71ff1b5ace9eae57a17a + md5: 75f9f0c7b1740017e2db83a53ab9a28e + depends: + - __osx >=11.0 + - ca-certificates + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 2934522 + timestamp: 1739301896733 +- conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + sha256: da157b19bcd398b9804c5c52fc000fcb8ab0525bdb9c70f95beaa0bb42f85af1 + md5: 3bfed7e6228ebf2f7b9eaa47f1b4e2aa + depends: + - python >=3.8 + license: Apache-2.0 + license_family: APACHE + size: 60164 + timestamp: 1733203368787 +- conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + sha256: 9f64009cdf5b8e529995f18e03665b03f5d07c0b17445b8badef45bde76249ee + md5: 617f15191456cc6a13db418a275435e5 + depends: + - python >=3.9 + license: MPL-2.0 + license_family: MOZILLA + size: 41075 + timestamp: 1733233471940 +- conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + sha256: bb50f6499e8bc1d1a26f17716c97984671121608dc0c3ecd34858112bce59a27 + md5: 577852c7e53901ddccc7e6a9959ddebe + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 20448 + timestamp: 1733232756001 +- conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.9-h9e4cc4f_0_cpython.conda + sha256: 64fed5178f1e9c8ac0f572ac0ce37955f5dee7b2bcac665202bc14f1f7dd618a + md5: 5665f0079432f8848079c811cdb537d5 + depends: + - __glibc >=2.17,<3.0.a0 + - bzip2 >=1.0.8,<2.0a0 + - ld_impl_linux-64 >=2.36.1 + - libexpat >=2.6.4,<3.0a0 + - libffi >=3.4,<4.0a0 + - libgcc >=13 + - liblzma >=5.6.4,<6.0a0 + - libnsl >=2.0.1,<2.1.0a0 + - libsqlite >=3.48.0,<4.0a0 + - libuuid >=2.38.1,<3.0a0 + - libxcrypt >=4.4.36 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.4.1,<4.0a0 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + constrains: + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Python-2.0 + size: 31581682 + timestamp: 1739521496324 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.9-h1683364_0_cpython.conda + sha256: 0366f38918bceda8ff5917d7bbe1cea2bc8b6c74e7245eb0e4b0d3c2d37f76cf + md5: 2e7ad70254455e0508adabff10218512 + depends: + - bzip2 >=1.0.8,<2.0a0 + - ld_impl_linux-aarch64 >=2.36.1 + - libexpat >=2.6.4,<3.0a0 + - libffi >=3.4,<4.0a0 + - libgcc >=13 + - liblzma >=5.6.4,<6.0a0 + - libnsl >=2.0.1,<2.1.0a0 + - libsqlite >=3.48.0,<4.0a0 + - libuuid >=2.38.1,<3.0a0 + - libxcrypt >=4.4.36 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.4.1,<4.0a0 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + constrains: + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Python-2.0 + size: 13804161 + timestamp: 1739519531794 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.9-hc22306f_0_cpython.conda + sha256: cbf81a78d3ca6e663e827523e6ddbc28369cac488da047a28f83875eb52fe5f6 + md5: 1d105a6c46a753e3c0bab54a1ad24063 + depends: + - __osx >=11.0 + - bzip2 >=1.0.8,<2.0a0 + - libexpat >=2.6.4,<3.0a0 + - libffi >=3.4,<4.0a0 + - liblzma >=5.6.4,<6.0a0 + - libsqlite >=3.48.0,<4.0a0 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.4.1,<4.0a0 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + constrains: + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Python-2.0 + size: 12947786 + timestamp: 1739520092196 +- conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + sha256: a50052536f1ef8516ed11a844f9413661829aa083304dc624c5925298d078d79 + md5: 5ba79d7c71f03c678c8ead841f347d6e + depends: + - python >=3.9 + - six >=1.5 + license: Apache-2.0 + license_family: APACHE + size: 222505 + timestamp: 1733215763718 +- conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda + build_number: 5 + sha256: d10e93d759931ffb6372b45d65ff34d95c6000c61a07e298d162a3bc2accebb0 + md5: 0424ae29b104430108f5218a66db7260 + constrains: + - python 3.12.* *_cpython + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 6238 + timestamp: 1723823388266 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.12-5_cp312.conda + build_number: 5 + sha256: 5ccdad9981753cc4a2d126e356673a21c0cd5b34e209cb8d476a3947d4ad9b39 + md5: 62b20f305498284a07dc6c45fd0e5c87 + constrains: + - python 3.12.* *_cpython + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 6329 + timestamp: 1723823366253 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-5_cp312.conda + build_number: 5 + sha256: 49d624e4b809c799d2bf257b22c23cf3fc4460f5570d9a58e7ad86350aeaa1f4 + md5: b76f9b1c862128e56ac7aa8cd2333de9 + constrains: + - python 3.12.* *_cpython + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 6278 + timestamp: 1723823099686 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.1-py312hbf22597_0.conda + sha256: 90ec0da0317d3d76990a40c61e1709ef859dd3d8c63838bad2814f46a63c8a2e + md5: 7cec8d0dac15a2d9fea8e49879aa779d + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libsodium >=1.0.20,<1.0.21.0a0 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - zeromq >=4.3.5,<4.4.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 382698 + timestamp: 1738271121975 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyzmq-26.2.1-py312h2427ae1_0.conda + sha256: 9558f9330093e5c21b7c04e2e212e19b9b88ad9c808315f12c0765b244018a09 + md5: 0520da8de6870d8ff63e818e927d1524 + depends: + - libgcc >=13 + - libsodium >=1.0.20,<1.0.21.0a0 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - zeromq >=4.3.5,<4.4.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 375156 + timestamp: 1738273130727 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.1-py312hf4875e0_0.conda + sha256: 70d398b334668dc597d33e27847ede1b0829a639b9c91ee845355e52c86c2293 + md5: bfbefdb140b546a80827ff7c9d5ac7b8 + depends: + - __osx >=11.0 + - libcxx >=18 + - libsodium >=1.0.20,<1.0.21.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - zeromq >=4.3.5,<4.4.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 364649 + timestamp: 1738271263898 +- conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda + sha256: 2d6d0c026902561ed77cd646b5021aef2d4db22e57a5b0178dfc669231e06d2c + md5: 283b96675859b20a825f8fa30f311446 + depends: + - libgcc >=13 + - ncurses >=6.5,<7.0a0 + arch: x86_64 + platform: linux + license: GPL-3.0-only + license_family: GPL + size: 282480 + timestamp: 1740379431762 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8382b9d_2.conda + sha256: 54bed3a3041befaa9f5acde4a37b1a02f44705b7796689574bcf9d7beaad2959 + md5: c0f08fc2737967edde1a272d4bf41ed9 + depends: + - libgcc >=13 + - ncurses >=6.5,<7.0a0 + arch: aarch64 + platform: linux + license: GPL-3.0-only + license_family: GPL + size: 291806 + timestamp: 1740380591358 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda + sha256: 7db04684d3904f6151eff8673270922d31da1eea7fa73254d01c437f49702e34 + md5: 63ef3f6e6d6d5c589e64f11263dc5676 + depends: + - ncurses >=6.5,<7.0a0 + arch: arm64 + platform: osx + license: GPL-3.0-only + license_family: GPL + size: 252359 + timestamp: 1740379663071 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-0.2.0-hc8f76dd_10.conda + sha256: a1bde55ceb9dc5bd7879283d0f594a6ce65c07fda3de76230c65a4a5df47858a + md5: 480e915dfc6c592615ef6f217e615aa6 + depends: + - libsentencepiece 0.2.0 h8e10757_10 + - python_abi 3.12.* *_cp312 + - sentencepiece-python 0.2.0 py312hb6b8a2b_10 + - sentencepiece-spm 0.2.0 h8e10757_10 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 19470 + timestamp: 1735628377167 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-0.2.0-h6c1b121_10.conda + sha256: 846d885a560fbb4375b645e7caf2f756ef88bbeb441b670375da0090aaa427fb + md5: 33a89eb1dedae8eb7222b0a89856f337 + depends: + - libsentencepiece 0.2.0 h6164ad9_10 + - python_abi 3.12.* *_cp312 + - sentencepiece-python 0.2.0 py312h197ff68_10 + - sentencepiece-spm 0.2.0 h6164ad9_10 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 19686 + timestamp: 1735628718991 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-0.2.0-h22a84ea_10.conda + sha256: 526c934b897131bd274697649c3b1c492a7d66c03368885a954112468b3c1424 + md5: 346abe448f69949a65473b336856860a + depends: + - libsentencepiece 0.2.0 he13a0af_10 + - python_abi 3.12.* *_cp312 + - sentencepiece-python 0.2.0 py312h155166a_10 + - sentencepiece-spm 0.2.0 he13a0af_10 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 19759 + timestamp: 1735628533490 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-python-0.2.0-py312hb6b8a2b_10.conda + sha256: 37df7fb659564587b950b39c936769d9b5095afb7bc223f42d6248a5540c6567 + md5: 7908b7b977e2e123a5f6a29906f2ce44 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 h8e10757_10 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 2411182 + timestamp: 1735628106455 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-python-0.2.0-py312h197ff68_10.conda + sha256: a7c2c19cc397c7632e2630af49ddcff128f145c93ea493421e6f42bfa5e1d30b + md5: 5642e4545a3cf03e446fb3b3e9fd723b + depends: + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 h6164ad9_10 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 2458076 + timestamp: 1735628298246 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-python-0.2.0-py312h155166a_10.conda + sha256: 2d59614aeafbf54cc718805798c11c2d0a3b4b8d947d1bd81c87c484b4883077 + md5: 6e11367ef670296fce01fc9860be944d + depends: + - __osx >=11.0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 he13a0af_10 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 2433303 + timestamp: 1735628083958 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-spm-0.2.0-h8e10757_10.conda + sha256: 6b55e1121545357d63c3aa0766931720e8aafc52d88641ba7631c8cbaa68c52f + md5: e977b7be5ac26c55825e121e00b90493 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 h8e10757_10 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 89076 + timestamp: 1735628334078 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-spm-0.2.0-h6164ad9_10.conda + sha256: b98fc1028a8e8fbf309af383f9c837290a14e076e6c5533dc251694ea33ffc6e + md5: a4b75936c01dca3f089f02752b7ee325 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 h6164ad9_10 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 85983 + timestamp: 1735628693813 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-spm-0.2.0-he13a0af_10.conda + sha256: b760aeee02e2afbfcce3f559e8a227aa4c94139157b1702fdfb41a057dad0e52 + md5: 9b7300f23cd330da8664cd072c162e5f + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 he13a0af_10 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 83826 + timestamp: 1735628514667 +- conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + sha256: 41db0180680cc67c3fa76544ffd48d6a5679d96f4b71d7498a759e94edc9a2db + md5: a451d576819089b0d672f18768be0f65 + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 16385 + timestamp: 1733381032766 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda + sha256: e0569c9caa68bf476bead1bed3d79650bb080b532c64a4af7d8ca286c08dea4e + md5: d453b98d9c83e71da0741bb0ff4d76bc + depends: + - libgcc-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 + arch: x86_64 + platform: linux + license: TCL + license_family: BSD + size: 3318875 + timestamp: 1699202167581 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda + sha256: 7fa27cc512d3a783f38bd16bbbffc008807372499d5b65d089a8e43bde9db267 + md5: f75105e0585851f818e0009dd1dde4dc + depends: + - libgcc-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 + arch: aarch64 + platform: linux + license: TCL + license_family: BSD + size: 3351802 + timestamp: 1695506242997 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda + sha256: 72457ad031b4c048e5891f3f6cb27a53cb479db68a52d965f796910e71a403a8 + md5: b50a57ba89c32b62428b71a875291c9b + depends: + - libzlib >=1.2.13,<2.0.0a0 + arch: arm64 + platform: osx + license: TCL + license_family: BSD + size: 3145523 + timestamp: 1699202432999 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda + sha256: 062a3a3a37fa8615ce57929ba7e982c76f5a5810bcebd435950f6d6c4147c310 + md5: e417822cb989e80a0d2b1b576fdd1657 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 840414 + timestamp: 1732616043734 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py312h52516f5_0.conda + sha256: 4c19a544354172b2273553267e734795a6da3c78a04c2d19f8e9e159ca3178bc + md5: e28996d9d2d44d777b7e6fb12f63715b + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 841662 + timestamp: 1732616934923 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda + sha256: 964a2705a36c50040c967b18b45b9cc8de3c2aff4af546979a574e0b38e58e39 + md5: fb0605888a475d6a380ae1d1a819d976 + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 842549 + timestamp: 1732616081362 +- conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + sha256: 11e2c85468ae9902d24a27137b6b39b4a78099806e551d390e394a8c34b48e40 + md5: 9efbfdc37242619130ea42b1cc4ed861 + depends: + - colorama + - python >=3.9 + license: MPL-2.0 or MIT + size: 89498 + timestamp: 1735661472632 +- conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + sha256: f39a5620c6e8e9e98357507262a7869de2ae8cc07da8b7f84e517c9fd6c2b959 + md5: 019a7385be9af33791c989871317e1ed + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 110051 + timestamp: 1733367480074 +- conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + sha256: 337be7af5af8b2817f115b3b68870208b30c31d3439bec07bfb2d8f4823e3568 + md5: d17f13df8b65464ca316cbc000a3cb64 + depends: + - python >=3.9 + license: PSF-2.0 + license_family: PSF + size: 39637 + timestamp: 1733188758212 +- conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + sha256: c4b1ae8a2931fe9b274c44af29c5475a85b37693999f8c792dad0f8c6734b1de + md5: dbcace4706afdfb7eb891f7b37d07c04 + license: LicenseRef-Public-Domain + size: 122921 + timestamp: 1737119101255 +- conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda + sha256: a4dc72c96848f764bb5a5176aa93dd1e9b9e52804137b99daeebba277b31ea10 + md5: 3947a35e916fcc6b9825449affbf4214 + depends: + - __glibc >=2.17,<3.0.a0 + - krb5 >=1.21.3,<1.22.0a0 + - libgcc >=13 + - libsodium >=1.0.20,<1.0.21.0a0 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: MPL-2.0 + license_family: MOZILLA + size: 335400 + timestamp: 1731585026517 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zeromq-4.3.5-h5efb499_7.conda + sha256: a6003096dc0570a86492040ba32b04ce7662b159600be2252b7a0dfb9414e21c + md5: f2f3282559a4b87b7256ecafb4610107 + depends: + - krb5 >=1.21.3,<1.22.0a0 + - libgcc >=13 + - libsodium >=1.0.20,<1.0.21.0a0 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: MPL-2.0 + license_family: MOZILLA + size: 371419 + timestamp: 1731589490850 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda + sha256: 9e585569fe2e7d3bea71972cd4b9f06b1a7ab8fa7c5139f92a31cbceecf25a8a + md5: f7e6b65943cb73bce0143737fded08f1 + depends: + - __osx >=11.0 + - krb5 >=1.21.3,<1.22.0a0 + - libcxx >=18 + - libsodium >=1.0.20,<1.0.21.0a0 + arch: arm64 + platform: osx + license: MPL-2.0 + license_family: MOZILLA + size: 281565 + timestamp: 1731585108039 +- conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + sha256: 567c04f124525c97a096b65769834b7acb047db24b15a56888a322bf3966c3e1 + md5: 0c3cc595284c5e8f0f9900a9b228a332 + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 21809 + timestamp: 1732827613585 diff --git a/examples/mojo/testing/magic.lock b/examples/mojo/testing/magic.lock new file mode 100644 index 0000000000..9473097321 --- /dev/null +++ b/examples/mojo/testing/magic.lock @@ -0,0 +1,2182 @@ +version: 6 +environments: + default: + channels: + - url: https://conda.anaconda.org/conda-forge/ + - url: https://conda.modular.com/max-nightly/ + packages: + linux-64: + - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2025.1.31-hbcca054_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-31_h59b9bed_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-31_he106b2a_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h767d61c_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hf1ad2bd_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h767d61c_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-31_h7ac8fdf_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.29-pthreads_h94d23a6_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsentencepiece-0.2.0-h8e10757_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.49.1-hee588c1_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-h8f9b012_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022718-release.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-h2d0b736_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.1-h7b32b05_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.9-h9e4cc4f_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.1-py312hbf22597_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-0.2.0-hc8f76dd_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-python-0.2.0-py312hb6b8a2b_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-spm-0.2.0-h8e10757_10.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + linux-aarch64: + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h68df207_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2025.1.31-hcefe29a_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/keyutils-1.6.1-h4e544f5_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/krb5-1.21.3-h50a48e9_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h18dbdb1_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-31_h1a9f1db_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-31_hab92f65_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20250104-pl5321h976ea20_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.6.4-h5ad3122_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.4.6-he21f813_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-14.2.0-he277a41_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-14.2.0-he9431aa_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-31_h411afd4_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.4-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.29-pthreads_h9d3fd7e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.3-h44a3b7b_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsentencepiece-0.2.0-h6164ad9_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.20-h68df207_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.49.1-h5eb1b54_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022718-release.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-ha32ae93_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.1-hd08dc88_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.9-h1683364_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.12-5_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyzmq-26.2.1-py312h2427ae1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8382b9d_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-0.2.0-h6c1b121_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-python-0.2.0-py312h197ff68_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-spm-0.2.0-h6164ad9_10.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py312h52516f5_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zeromq-4.3.5-h5efb499_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + osx-arm64: + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2025.1.31-hf0a4a13_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_h07bc746_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-31_h10e41b3_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-31_hb3479ef_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.4-h286801f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-31_hc9a63f6_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.4-h39f12f2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.29-openmp_hf332438_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.3-h3bd63a1_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsentencepiece-0.2.0-he13a0af_10.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.1-h3f77e49_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022718-release.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.1-h81ee809_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.9-hc22306f_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-5_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.1-py312hf4875e0_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-0.2.0-h22a84ea_10.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-python-0.2.0-py312h155166a_10.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-spm-0.2.0-he13a0af_10.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda +packages: +- conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 + sha256: fe51de6107f9edc7aa4f786a70f4a883943bc9d39b3bb7307c04c41410990726 + md5: d7c89558ba9fa0495403155b64376d81 + arch: x86_64 + platform: linux + license: None + size: 2562 + timestamp: 1578324546067 +- conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 + build_number: 16 + sha256: fbe2c5e56a653bebb982eda4876a9178aedfc2b545f25d0ce9c4c0b508253d22 + md5: 73aaf86a425cc6e73fcf236a5a46396d + depends: + - _libgcc_mutex 0.1 conda_forge + - libgomp >=7.5.0 + constrains: + - openmp_impl 9999 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 23621 + timestamp: 1650670423406 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2 + build_number: 16 + sha256: 3702bef2f0a4d38bd8288bbe54aace623602a1343c2cfbefd3fa188e015bebf0 + md5: 6168d71addc746e8f2b8d57dfd2edcea + depends: + - libgomp >=7.5.0 + constrains: + - openmp_impl 9999 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 23712 + timestamp: 1650670790230 +- conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda + sha256: 5ced96500d945fb286c9c838e54fa759aa04a7129c59800f0846b4335cee770d + md5: 62ee74e96c5ebb0af99386de58cf9553 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: bzip2-1.0.6 + license_family: BSD + size: 252783 + timestamp: 1720974456583 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h68df207_7.conda + sha256: 2258b0b33e1cb3a9852d47557984abb6e7ea58e3d7f92706ec1f8e879290c4cb + md5: 56398c28220513b9ea13d7b450acfb20 + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: bzip2-1.0.6 + license_family: BSD + size: 189884 + timestamp: 1720974504976 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda + sha256: adfa71f158cbd872a36394c56c3568e6034aa55c623634b37a4836bd036e6b91 + md5: fc6948412dbbbe9a4c9ddbbcfe0a79ab + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: bzip2-1.0.6 + license_family: BSD + size: 122909 + timestamp: 1720974522888 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2025.1.31-hbcca054_0.conda + sha256: bf832198976d559ab44d6cdb315642655547e26d826e34da67cbee6624cda189 + md5: 19f3a56f68d2fd06c516076bff482c52 + arch: x86_64 + platform: linux + license: ISC + size: 158144 + timestamp: 1738298224464 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2025.1.31-hcefe29a_0.conda + sha256: 66c6408ee461593cfdb2d78d82e6ed74d04a04ccb51df3ef8a5f35148c9c6eec + md5: 462cb166cd2e26a396f856510a3aff67 + arch: aarch64 + platform: linux + license: ISC + size: 158290 + timestamp: 1738299057652 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2025.1.31-hf0a4a13_0.conda + sha256: 7e12816618173fe70f5c638b72adf4bfd4ddabf27794369bb17871c5bb75b9f9 + md5: 3569d6a9141adc64d2fe4797f3289e06 + arch: arm64 + platform: osx + license: ISC + size: 158425 + timestamp: 1738298167688 +- conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda + sha256: c920d23cd1fcf565031c679adb62d848af60d6fbb0edc2d50ba475cea4f0d8ab + md5: f22f4d4970e09d68a10b922cbb0408d3 + depends: + - __unix + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 84705 + timestamp: 1734858922844 +- conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + sha256: ab29d57dc70786c1269633ba3dff20288b81664d3ff8d21af995742e2bb03287 + md5: 962b9857ee8e7018c22f2776ffa0b2d7 + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 27011 + timestamp: 1733218222191 +- conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + sha256: 598951ebdb23e25e4cec4bbff0ae369cec65ead80b50bc08b441d8e54de5cf03 + md5: f4b39bf00c69f56ac01e020ebfac066c + depends: + - python >=3.9 + - zipp >=0.5 + license: Apache-2.0 + license_family: APACHE + size: 29141 + timestamp: 1737420302391 +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + sha256: 19d8bd5bb2fde910ec59e081eeb59529491995ce0d653a5209366611023a0b3a + md5: 4ebae00eae9705b0c3d6d1018a81d047 + depends: + - importlib-metadata >=4.8.3 + - jupyter_core >=4.12,!=5.0.* + - python >=3.9 + - python-dateutil >=2.8.2 + - pyzmq >=23.0 + - tornado >=6.2 + - traitlets >=5.3 + license: BSD-3-Clause + license_family: BSD + size: 106342 + timestamp: 1733441040958 +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + sha256: 732b1e8536bc22a5a174baa79842d79db2f4956d90293dd82dc1b3f6099bcccd + md5: 0a2980dada0dd7fd0998f0342308b1b1 + depends: + - __unix + - platformdirs >=2.5 + - python >=3.8 + - traitlets >=5.3 + license: BSD-3-Clause + license_family: BSD + size: 57671 + timestamp: 1727163547058 +- conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 + sha256: 150c05a6e538610ca7c43beb3a40d65c90537497a4f6a5f4d15ec0451b6f5ebb + md5: 30186d27e2c9fa62b45fb1476b7200e3 + depends: + - libgcc-ng >=10.3.0 + arch: x86_64 + platform: linux + license: LGPL-2.1-or-later + size: 117831 + timestamp: 1646151697040 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/keyutils-1.6.1-h4e544f5_0.tar.bz2 + sha256: 6d4233d97a9b38acbb26e1268bcf8c10a8e79c2aed7e5a385ec3769967e3e65b + md5: 1f24853e59c68892452ef94ddd8afd4b + depends: + - libgcc-ng >=10.3.0 + arch: aarch64 + platform: linux + license: LGPL-2.1-or-later + size: 112327 + timestamp: 1646166857935 +- conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda + sha256: 99df692f7a8a5c27cd14b5fb1374ee55e756631b9c3d659ed3ee60830249b238 + md5: 3f43953b7d3fb3aaa1d0d0723d91e368 + depends: + - keyutils >=1.6.1,<2.0a0 + - libedit >=3.1.20191231,<3.2.0a0 + - libedit >=3.1.20191231,<4.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - openssl >=3.3.1,<4.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 1370023 + timestamp: 1719463201255 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/krb5-1.21.3-h50a48e9_0.conda + sha256: 0ec272afcf7ea7fbf007e07a3b4678384b7da4047348107b2ae02630a570a815 + md5: 29c10432a2ca1472b53f299ffb2ffa37 + depends: + - keyutils >=1.6.1,<2.0a0 + - libedit >=3.1.20191231,<3.2.0a0 + - libedit >=3.1.20191231,<4.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - openssl >=3.3.1,<4.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 1474620 + timestamp: 1719463205834 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda + sha256: 4442f957c3c77d69d9da3521268cad5d54c9033f1a73f99cde0a3658937b159b + md5: c6dc8a0fdec13a0565936655c33069a1 + depends: + - __osx >=11.0 + - libcxx >=16 + - libedit >=3.1.20191231,<3.2.0a0 + - libedit >=3.1.20191231,<4.0a0 + - openssl >=3.3.1,<4.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 1155530 + timestamp: 1719463474401 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_4.conda + sha256: db73f38155d901a610b2320525b9dd3b31e4949215c870685fd92ea61b5ce472 + md5: 01f8d123c96816249efd255a31ad7712 + depends: + - __glibc >=2.17,<3.0.a0 + constrains: + - binutils_impl_linux-64 2.43 + arch: x86_64 + platform: linux + license: GPL-3.0-only + license_family: GPL + size: 671240 + timestamp: 1740155456116 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_4.conda + sha256: 016832a70b0aa97e1c4e47e23c00b0c34def679de25146736df353199f684f0d + md5: 80c9ad5e05e91bb6c0967af3880c9742 + constrains: + - binutils_impl_linux-aarch64 2.43 + arch: aarch64 + platform: linux + license: GPL-3.0-only + license_family: GPL + size: 699058 + timestamp: 1740155620594 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda + sha256: 143a586aa67d50622ef703de57b9d43f44945836d6568e0e7aa174bd8c45e0d4 + md5: 488f260ccda0afaf08acb286db439c2f + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + constrains: + - libabseil-static =20240722.0=cxx17* + - abseil-cpp =20240722.0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 1311599 + timestamp: 1736008414161 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h18dbdb1_4.conda + sha256: bb6c5fb3b8de5f90735c5252b57efb3c268ee222c755569dac18065f05147670 + md5: 633b9fe454ffea2aaf29e191d946a83b + depends: + - libgcc >=13 + - libstdcxx >=13 + constrains: + - abseil-cpp =20240722.0 + - libabseil-static =20240722.0=cxx17* + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 1334844 + timestamp: 1736008472455 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_h07bc746_4.conda + sha256: 05fa5e5e908962b9c5aba95f962e2ca81d9599c4715aebe5e4ddb72b309d1770 + md5: c2d95bd7aa8d564a9bd7eca5e571a5b3 + depends: + - __osx >=11.0 + - libcxx >=18 + constrains: + - libabseil-static =20240722.0=cxx17* + - abseil-cpp =20240722.0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 1178260 + timestamp: 1736008642885 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-31_h59b9bed_openblas.conda + build_number: 31 + sha256: 9839fc4ac0cbb0aa3b9eea520adfb57311838959222654804e58f6f2d1771db5 + md5: 728dbebd0f7a20337218beacffd37916 + depends: + - libopenblas >=0.3.29,<0.3.30.0a0 + - libopenblas >=0.3.29,<1.0a0 + constrains: + - liblapacke =3.9.0=31*_openblas + - liblapack =3.9.0=31*_openblas + - blas =2.131=openblas + - mkl <2025 + - libcblas =3.9.0=31*_openblas + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 16859 + timestamp: 1740087969120 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-31_h1a9f1db_openblas.conda + build_number: 31 + sha256: 67c9c81dd0444ecc712124034d9f74186ca82fd770b3df46b1a68564461c6a1a + md5: 48bd5bf15ccf3e409840be9caafc0ad5 + depends: + - libopenblas >=0.3.29,<0.3.30.0a0 + - libopenblas >=0.3.29,<1.0a0 + constrains: + - liblapack =3.9.0=31*_openblas + - blas =2.131=openblas + - libcblas =3.9.0=31*_openblas + - mkl <2025 + - liblapacke =3.9.0=31*_openblas + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 16915 + timestamp: 1740087911042 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-31_h10e41b3_openblas.conda + build_number: 31 + sha256: 369586e7688b59b4f92c709b99d847d66d4d095425db327dd32ee5e6ab74697f + md5: 39b053da5e7035c6592102280aa7612a + depends: + - libopenblas >=0.3.29,<0.3.30.0a0 + - libopenblas >=0.3.29,<1.0a0 + constrains: + - liblapacke =3.9.0=31*_openblas + - libcblas =3.9.0=31*_openblas + - blas =2.131=openblas + - mkl <2025 + - liblapack =3.9.0=31*_openblas + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 17123 + timestamp: 1740088119350 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-31_he106b2a_openblas.conda + build_number: 31 + sha256: ede8545011f5b208b151fe3e883eb4e31d495ab925ab7b9ce394edca846e0c0d + md5: abb32c727da370c481a1c206f5159ce9 + depends: + - libblas 3.9.0 31_h59b9bed_openblas + constrains: + - liblapacke =3.9.0=31*_openblas + - liblapack =3.9.0=31*_openblas + - blas =2.131=openblas + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 16796 + timestamp: 1740087984429 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-31_hab92f65_openblas.conda + build_number: 31 + sha256: f0457a1d2982f0a28bfbadaa02621677c324e88f7c8198c24fb3e3214c468dba + md5: 6b81dbae56a519f1ec2f25e0ee2f4334 + depends: + - libblas 3.9.0 31_h1a9f1db_openblas + constrains: + - liblapack =3.9.0=31*_openblas + - blas =2.131=openblas + - liblapacke =3.9.0=31*_openblas + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 16824 + timestamp: 1740087917500 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-31_hb3479ef_openblas.conda + build_number: 31 + sha256: f237486cc9118d09d0f3ff8820280de34365f98ee7b7dc5ab923b04c7cbf25a5 + md5: 7353c2bf0e90834cb70545671996d871 + depends: + - libblas 3.9.0 31_h10e41b3_openblas + constrains: + - liblapacke =3.9.0=31*_openblas + - blas =2.131=openblas + - liblapack =3.9.0=31*_openblas + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 17032 + timestamp: 1740088127097 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda + sha256: 776092346da87a2a23502e14d91eb0c32699c4a1522b7331537bd1c3751dcff5 + md5: 5b3e1610ff8bd5443476b91d618f5b77 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + size: 523505 + timestamp: 1736877862502 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda + sha256: d789471216e7aba3c184cd054ed61ce3f6dac6f87a50ec69291b9297f8c18724 + md5: c277e0a4d549b03ac1e9d6cbbe3d017b + depends: + - ncurses + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - ncurses >=6.5,<7.0a0 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + size: 134676 + timestamp: 1738479519902 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20250104-pl5321h976ea20_0.conda + sha256: c0b27546aa3a23d47919226b3a1635fccdb4f24b94e72e206a751b33f46fd8d6 + md5: fb640d776fc92b682a14e001980825b1 + depends: + - ncurses + - libgcc >=13 + - ncurses >=6.5,<7.0a0 + arch: aarch64 + platform: linux + license: BSD-2-Clause + license_family: BSD + size: 148125 + timestamp: 1738479808948 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda + sha256: 66aa216a403de0bb0c1340a88d1a06adaff66bae2cfd196731aa24db9859d631 + md5: 44083d2d2c2025afca315c7a172eab2b + depends: + - ncurses + - __osx >=11.0 + - ncurses >=6.5,<7.0a0 + arch: arm64 + platform: osx + license: BSD-2-Clause + license_family: BSD + size: 107691 + timestamp: 1738479560845 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda + sha256: 56541b98447b58e52d824bd59d6382d609e11de1f8adf20b23143e353d2b8d26 + md5: db833e03127376d461e1e13e76f09b6c + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + constrains: + - expat 2.6.4.* + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 73304 + timestamp: 1730967041968 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.6.4-h5ad3122_0.conda + sha256: f42e758009ba9db90d1fe7992bc3e60d0c52f71fb20923375d2c44ae69a5a2b3 + md5: f1b3fab36861b3ce945a13f0dfdfc688 + depends: + - libgcc >=13 + constrains: + - expat 2.6.4.* + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 72345 + timestamp: 1730967203789 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.4-h286801f_0.conda + sha256: e42ab5ace927ee7c84e3f0f7d813671e1cf3529f5f06ee5899606630498c2745 + md5: 38d2656dd914feb0cab8c629370768bf + depends: + - __osx >=11.0 + constrains: + - expat 2.6.4.* + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 64693 + timestamp: 1730967175868 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_0.conda + sha256: 67a6c95e33ebc763c1adc3455b9a9ecde901850eb2fceb8e646cc05ef3a663da + md5: e3eb7806380bc8bcecba6d749ad5f026 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 53415 + timestamp: 1739260413716 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.4.6-he21f813_0.conda + sha256: 41568066beefe7b319ff27d85952242e5b77fb753d705b8716041959e17c35c2 + md5: 966084fccf3ad62a3160666cda869f28 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 51513 + timestamp: 1739260449772 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 + sha256: 41b3d13efb775e340e4dba549ab5c029611ea6918703096b2eaa9c015c0750ca + md5: 086914b672be056eb70fd4285b6783b6 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 39020 + timestamp: 1636488587153 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h767d61c_2.conda + sha256: 3a572d031cb86deb541d15c1875aaa097baefc0c580b54dc61f5edab99215792 + md5: ef504d1acbd74b7cc6849ef8af47dd03 + depends: + - __glibc >=2.17,<3.0.a0 + - _openmp_mutex >=4.5 + constrains: + - libgomp 14.2.0 h767d61c_2 + - libgcc-ng ==14.2.0=*_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 847885 + timestamp: 1740240653082 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-14.2.0-he277a41_2.conda + sha256: a57f7f9ba2a12f56eafdcd25b6d75f7be10b8fc1a802a58b76a77ca8c66f4503 + md5: 6b4268a60b10f29257b51b9b67ff8d76 + depends: + - _openmp_mutex >=4.5 + constrains: + - libgcc-ng ==14.2.0=*_2 + - libgomp 14.2.0 he277a41_2 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 535507 + timestamp: 1740241069780 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_2.conda + sha256: fb7558c328b38b2f9d2e412c48da7890e7721ba018d733ebdfea57280df01904 + md5: a2222a6ada71fb478682efe483ce0f92 + depends: + - libgcc 14.2.0 h767d61c_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 53758 + timestamp: 1740240660904 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-14.2.0-he9431aa_2.conda + sha256: 9647f75cddc18b07eebe6e1f21500eed50a6af2c43c84e831b4c7a597e10d226 + md5: 692c2bb75f32cfafb6799cf6d1c5d0e0 + depends: + - libgcc 14.2.0 he277a41_2 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 53622 + timestamp: 1740241074834 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_2.conda + sha256: e05263e8960da03c341650f2a3ffa4ccae4e111cb198e8933a2908125459e5a6 + md5: fb54c4ea68b460c278d26eea89cfbcc3 + depends: + - libgfortran5 14.2.0 hf1ad2bd_2 + constrains: + - libgfortran-ng ==14.2.0=*_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 53733 + timestamp: 1740240690977 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_2.conda + sha256: 996d3c0505301901a7ab23b5e7daad21635d1c065240bb0f4faf7e4f75d7f49d + md5: d8b9d9dc0c8cd97d375b48e55947ba70 + depends: + - libgfortran5 14.2.0 hb6113d0_2 + constrains: + - libgfortran-ng ==14.2.0=*_2 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 53611 + timestamp: 1740241100147 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda + sha256: 44e541b4821c96b28b27fef5630883a60ce4fee91fd9c79f25a199f8f73f337b + md5: 4a55d9e169114b2b90d3ec4604cd7bbf + depends: + - libgfortran5 13.2.0 hf226fd6_3 + arch: arm64 + platform: osx + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 110233 + timestamp: 1707330749033 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hf1ad2bd_2.conda + sha256: c17b7cf3073a1f4e1f34d50872934fa326346e104d3c445abc1e62481ad6085c + md5: 556a4fdfac7287d349b8f09aba899693 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14.2.0 + constrains: + - libgfortran 14.2.0 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 1461978 + timestamp: 1740240671964 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_2.conda + sha256: 7b9e1d3666a00e5a52e5d43c003bd1c73ab472804be513c070aaedca9c4c2a9a + md5: cd754566661513808ef2408c4ab99a2f + depends: + - libgcc >=14.2.0 + constrains: + - libgfortran 14.2.0 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 1100765 + timestamp: 1740241083241 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda + sha256: bafc679eedb468a86aa4636061c55966186399ee0a04b605920d208d97ac579a + md5: 66ac81d54e95c534ae488726c1f698ea + depends: + - llvm-openmp >=8.0.0 + constrains: + - libgfortran 5.0.0 13_2_0_*_3 + arch: arm64 + platform: osx + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 997381 + timestamp: 1707330687590 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h767d61c_2.conda + sha256: 1a3130e0b9267e781b89399580f3163632d59fe5b0142900d63052ab1a53490e + md5: 06d02030237f4d5b3d9a7e7d348fe3c6 + depends: + - __glibc >=2.17,<3.0.a0 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 459862 + timestamp: 1740240588123 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_2.conda + sha256: 4e303711fb7413bf98995beac58e731073099d7a669a3b81e49330ca8da05174 + md5: b11c09d9463daf4cae492d29806b1889 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 462783 + timestamp: 1740241005079 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-31_h7ac8fdf_openblas.conda + build_number: 31 + sha256: f583661921456e798aba10972a8abbd9d33571c655c1f66eff450edc9cbefcf3 + md5: 452b98eafe050ecff932f0ec832dd03f + depends: + - libblas 3.9.0 31_h59b9bed_openblas + constrains: + - libcblas =3.9.0=31*_openblas + - liblapacke =3.9.0=31*_openblas + - blas =2.131=openblas + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 16790 + timestamp: 1740087997375 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-31_h411afd4_openblas.conda + build_number: 31 + sha256: 27613828ff6fb258b2e58802617df549f00089660ea8ab6c55c68f042c570162 + md5: 41dbff5eb805a75c120a7b7a1c744dc2 + depends: + - libblas 3.9.0 31_h1a9f1db_openblas + constrains: + - blas =2.131=openblas + - libcblas =3.9.0=31*_openblas + - liblapacke =3.9.0=31*_openblas + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 16845 + timestamp: 1740087923843 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-31_hc9a63f6_openblas.conda + build_number: 31 + sha256: fe55b9aaf82c6c0192c3d1fcc9b8e884f97492dda9a8de5dae29334b3135fab5 + md5: ff57a55a2cbce171ef5707fb463caf19 + depends: + - libblas 3.9.0 31_h10e41b3_openblas + constrains: + - liblapacke =3.9.0=31*_openblas + - libcblas =3.9.0=31*_openblas + - blas =2.131=openblas + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 17033 + timestamp: 1740088134988 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda + sha256: cad52e10319ca4585bc37f0bc7cce99ec7c15dc9168e42ccb96b741b0a27db3f + md5: 42d5b6a0f30d3c10cd88cb8584fda1cb + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: 0BSD + size: 111357 + timestamp: 1738525339684 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.4-h86ecc28_0.conda + sha256: 96413664f0fade54a4931940d18749cfc8e6308349dbb0cb83adb2394ca1f730 + md5: b88244e0a115cc34f7fbca9b11248e76 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: 0BSD + size: 124197 + timestamp: 1738528201520 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.4-h39f12f2_0.conda + sha256: 560c59d3834cc652a84fb45531bd335ad06e271b34ebc216e380a89798fe8e2c + md5: e3fd1f8320a100f2b210e690a57cd615 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: 0BSD + size: 98945 + timestamp: 1738525462560 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda + sha256: 26d77a3bb4dceeedc2a41bd688564fe71bf2d149fdcf117049970bc02ff1add6 + md5: 30fd6e37fe21f86f4bd26d6ee73eeec7 + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: LGPL-2.1-only + license_family: GPL + size: 33408 + timestamp: 1697359010159 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda + sha256: fd18c2b75d7411096428d36a70b36b1a17e31f7b8956b6905d145792d49e97f8 + md5: c14f32510f694e3185704d89967ec422 + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: LGPL-2.1-only + license_family: GPL + size: 34501 + timestamp: 1697358973269 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.29-pthreads_h94d23a6_0.conda + sha256: cc5389ea254f111ef17a53df75e8e5209ef2ea6117e3f8aced88b5a8e51f11c4 + md5: 0a4d0252248ef9a0f88f2ba8b8a08e12 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libgfortran + - libgfortran5 >=14.2.0 + constrains: + - openblas >=0.3.29,<0.3.30.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 5919288 + timestamp: 1739825731827 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.29-pthreads_h9d3fd7e_0.conda + sha256: 3a2ccf4c9098cd18a636e9b7fff947fdeb4962bcfb75c9d6fd80b8c50caf6a3c + md5: a99e2bfcb1ad6362544c71281eb617e9 + depends: + - libgcc >=14 + - libgfortran + - libgfortran5 >=14.2.0 + constrains: + - openblas >=0.3.29,<0.3.30.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 4801657 + timestamp: 1739825308974 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.29-openmp_hf332438_0.conda + sha256: 8989d9e01ec8c9b2d48dbb5efbe70b356fcd15990fb53b64fcb84798982c0343 + md5: 0cd1148c68f09027ee0b0f0179f77c30 + depends: + - __osx >=11.0 + - libgfortran 5.* + - libgfortran5 >=13.2.0 + - llvm-openmp >=18.1.8 + constrains: + - openblas >=0.3.29,<0.3.30.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 4168442 + timestamp: 1739825514918 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda + sha256: 51125ebb8b7152e4a4e69fd2398489c4ec8473195c27cde3cbdf1cb6d18c5493 + md5: d8703f1ffe5a06356f06467f1d0b9464 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 2960815 + timestamp: 1735577210663 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.3-h44a3b7b_1.conda + sha256: ecb69f2b1668e784b41ba667493be846662d5ef702bef64fb2e013bb1364cdc4 + md5: 68f807f7cc13951652bbe048253fd405 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 2788074 + timestamp: 1735576315676 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.3-h3bd63a1_1.conda + sha256: f58a16b13ad53346903c833e266f83c3d770a43a432659b98710aed85ca885e7 + md5: bdbfea4cf45ae36652c6bbcc2e7ebe91 + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=18 + - libzlib >=1.3.1,<2.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 2271580 + timestamp: 1735576361997 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsentencepiece-0.2.0-h8e10757_10.conda + sha256: dc399e0f04a09f8c1807c3b36e578eb81f81891c0ddf21de9c1fb9f048ce4031 + md5: 4f43dbcfacd3cc9a183dd3a48b94d3c0 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 823649 + timestamp: 1735627841126 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsentencepiece-0.2.0-h6164ad9_10.conda + sha256: 57074803772f65d4075b7d6dc17ff5aa40ec3a30109fa4225ca16911504c4a8b + md5: a7a192edc9cfba26a27df3283203e6a1 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 800865 + timestamp: 1735627982895 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsentencepiece-0.2.0-he13a0af_10.conda + sha256: 3347a8840d085ce1661928e736229f068d56c84312fbed90886e059023d85611 + md5: 1f67e5e30edd56e0a0bf6df6bb711a9d + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 754657 + timestamp: 1735628030895 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda + sha256: 0105bd108f19ea8e6a78d2d994a6d4a8db16d19a41212070d2d1d48a63c34161 + md5: a587892d3c13b6621a6091be690dbca2 + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: ISC + size: 205978 + timestamp: 1716828628198 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.20-h68df207_0.conda + sha256: 448df5ea3c5cf1af785aad46858d7a5be0522f4234a4dc9bb764f4d11ff3b981 + md5: 2e4a8f23bebdcb85ca8e5a0fbe75666a + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: ISC + size: 177394 + timestamp: 1716828514515 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda + sha256: fade8223e1e1004367d7101dd17261003b60aa576df6d7802191f8972f7470b1 + md5: a7ce36e284c5faaf93c220dfc39e3abd + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: ISC + size: 164972 + timestamp: 1716828607917 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.49.1-hee588c1_1.conda + sha256: 7a09eef804ef7cf4d88215c2297eabb72af8ad0bd5b012060111c289f14bbe7d + md5: 73cea06049cc4174578b432320a003b8 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux + license: Unlicense + size: 915956 + timestamp: 1739953155793 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.49.1-h5eb1b54_1.conda + sha256: 920fb3b7d3b873babf79a3e392cc82d43b8bd02a573ccaff34219efb5cf7b51e + md5: 150d64241fa27d9d35a7f421ca968a6c + depends: + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + arch: aarch64 + platform: linux + license: Unlicense + size: 915118 + timestamp: 1739953101699 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.1-h3f77e49_1.conda + sha256: 266639fb10ca92287961574b0b4d6031fa40dd9d723d64a0fcb08513a24dab03 + md5: c83357a21092bd952933c36c5cb4f4d6 + depends: + - __osx >=11.0 + - libzlib >=1.3.1,<2.0a0 + arch: arm64 + platform: osx + license: Unlicense + size: 898767 + timestamp: 1739953312379 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-h8f9b012_2.conda + sha256: 8f5bd92e4a24e1d35ba015c5252e8f818898478cb3bc50bd8b12ab54707dc4da + md5: a78c856b6dc6bf4ea8daeb9beaaa3fb0 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc 14.2.0 h767d61c_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 3884556 + timestamp: 1740240685253 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_2.conda + sha256: c30a74bc996013907f6d9f344da007c26d98ef9a0831151cd50aece3125c45d5 + md5: eadee2cda99697e29411c1013c187b92 + depends: + - libgcc 14.2.0 he277a41_2 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 3810779 + timestamp: 1740241094774 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_2.conda + sha256: e86f38b007cf97cc2c67cd519f2de12a313c4ee3f5ef11652ad08932a5e34189 + md5: c75da67f045c2627f59e6fcb5f4e3a9b + depends: + - libstdcxx 14.2.0 h8f9b012_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 53830 + timestamp: 1740240722530 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_2.conda + sha256: 0107886ead6f255956d8e520f8dff260f9ab3d0d51512f18c52710c406e4b2df + md5: c934c1fddad582fcc385b608eb06a70c + depends: + - libstdcxx 14.2.0 h3f4de04_2 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 53715 + timestamp: 1740241126343 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda + sha256: 787eb542f055a2b3de553614b25f09eefb0a0931b0c87dbcce6efdfd92f04f18 + md5: 40b61aab5c7ba9ff276c41cfffe6b80b + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 33601 + timestamp: 1680112270483 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda + sha256: 616277b0c5f7616c2cdf36f6c316ea3f9aa5bb35f2d4476a349ab58b9b91675f + md5: 000e30b09db0b7c775b21695dff30969 + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 35720 + timestamp: 1680113474501 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda + sha256: 6ae68e0b86423ef188196fff6207ed0c8195dd84273cb5623b85aa08033a410c + md5: 5aa797f8787fe7a17d1b0821485b5adc + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: LGPL-2.1-or-later + size: 100393 + timestamp: 1702724383534 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda + sha256: 6b46c397644091b8a26a3048636d10b989b1bf266d4be5e9474bf763f828f41f + md5: b4df5d7d4b63579d081fd3a4cf99740e + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: LGPL-2.1-or-later + size: 114269 + timestamp: 1702724369203 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda + sha256: d4bfe88d7cb447768e31650f06257995601f89076080e76df55e3112d4e47dc4 + md5: edb0dca6bc32e4f4789199455a1dbeb8 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + constrains: + - zlib 1.3.1 *_2 + arch: x86_64 + platform: linux + license: Zlib + license_family: Other + size: 60963 + timestamp: 1727963148474 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda + sha256: 5a2c1eeef69342e88a98d1d95bff1603727ab1ff4ee0e421522acd8813439b84 + md5: 08aad7cbe9f5a6b460d0976076b6ae64 + depends: + - libgcc >=13 + constrains: + - zlib 1.3.1 *_2 + arch: aarch64 + platform: linux + license: Zlib + license_family: Other + size: 66657 + timestamp: 1727963199518 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda + sha256: ce34669eadaba351cd54910743e6a2261b67009624dbc7daeeafdef93616711b + md5: 369964e85dc26bfe78f41399b366c435 + depends: + - __osx >=11.0 + constrains: + - zlib 1.3.1 *_2 + arch: arm64 + platform: osx + license: Zlib + license_family: Other + size: 46438 + timestamp: 1727963202283 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda + sha256: b92a669f2059874ebdcb69041b6c243d68ffc3fb356ac1339cec44aeb27245d7 + md5: c4d54bfd3817313ce758aa76283b118d + depends: + - __osx >=11.0 + constrains: + - openmp 19.1.7|19.1.7.* + arch: arm64 + platform: osx + license: Apache-2.0 WITH LLVM-exception + license_family: APACHE + size: 280830 + timestamp: 1736986295869 +- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022718-release.conda + noarch: python + sha256: f3dcb14fed5470c0fc521542cbd2f1c56ca7e46d560f46176b8f926198cb3cbd + md5: 01fe5e0cf46c84a6345e323ad1316764 + depends: + - max-core ==25.2.0.dev2025022718 release + - max-python ==25.2.0.dev2025022718 release + - mojo-jupyter ==25.2.0.dev2025022718 release + - mblack ==25.2.0.dev2025022718 release + license: LicenseRef-Modular-Proprietary + size: 9905 + timestamp: 1740680254354 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022718-release.conda + sha256: 847d5767109a305d7bcad4ac29248a74a384034692934a0c54b00a590c27094a + md5: fc5a9ae36c7805979bd58ca55a25066f + depends: + - mblack ==25.2.0.dev2025022718 release + license: LicenseRef-Modular-Proprietary + size: 249811868 + timestamp: 1740680254354 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022718-release.conda + sha256: 250c35ecccd302e6c7de836ac200a5ece92e74508c2590c585d8803d488fd650 + md5: d88728b468c85902512a0f9b99251035 + depends: + - mblack ==25.2.0.dev2025022718 release + license: LicenseRef-Modular-Proprietary + size: 252108573 + timestamp: 1740680207793 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022718-release.conda + sha256: fb28d9e61aa507ea84b470082d3dc96844a24fe672d4e4c57e832655c5d0a202 + md5: dd8734453f7276a258f3351cc5c506c3 + depends: + - mblack ==25.2.0.dev2025022718 release + license: LicenseRef-Modular-Proprietary + size: 217273450 + timestamp: 1740681819160 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022718-release.conda + noarch: python + sha256: 831b4d62f66f0083321121c6ba25dedab3ee41d5e9f19d9752969592214af398 + md5: f828ace91aa057e4774e84ad459adccf + depends: + - max-core ==25.2.0.dev2025022718 release + - click >=8.0.0 + - numpy >=1.18,<2.0 + - sentencepiece >=0.2.0 + - tqdm >=4.67.1 + constrains: + - aiohttp >=3.11.12 + - fastapi >=0.114.2 + - gguf >=0.14.0 + - hf-transfer >=0.1.9 + - httpx >=0.28.1 + - huggingface_hub >=0.24.0 + - nvitop >=1.4.1 + - opentelemetry-api >=1.29.0 + - opentelemetry-exporter-otlp-proto-http >=1.27.0 + - opentelemetry-exporter-prometheus <1.0.0 + - opentelemetry-sdk >=1.29.0,<2.0 + - pillow >=10.3.0 + - prometheus_client >=0.21.0 + - prometheus-async >=22.2.0 + - psutil >=6.1.1 + - pydantic + - pydantic-settings >=2.7.1 + - pyinstrument >=5.0.1 + - python-json-logger >=2.0.7 + - requests >=2.32.3 + - rich >=13.9.4 + - safetensors >=0.5.2 + - sentinel >=0.3.0 + - sse-starlette >=2.1.2 + - tokenizers >=0.19.0 + - pytorch >=2.2.2,<=2.5.1 + - transformers >=4.40.1 + - uvicorn >=0.34.0 + - uvloop >=0.21.0 + - xgrammar ==0.1.11 + license: LicenseRef-Modular-Proprietary + size: 123584411 + timestamp: 1740680254354 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022718-release.conda + noarch: python + sha256: b9e5755b7bf6314a37a90ef0250c93f5e7c693954d7a6389a97ab9ef06e23cc3 + md5: bfd2e752d0fc9516b78a17169ce9cc78 + depends: + - max-core ==25.2.0.dev2025022718 release + - click >=8.0.0 + - numpy >=1.18,<2.0 + - sentencepiece >=0.2.0 + - tqdm >=4.67.1 + constrains: + - aiohttp >=3.11.12 + - fastapi >=0.114.2 + - gguf >=0.14.0 + - hf-transfer >=0.1.9 + - httpx >=0.28.1 + - huggingface_hub >=0.24.0 + - nvitop >=1.4.1 + - opentelemetry-api >=1.29.0 + - opentelemetry-exporter-otlp-proto-http >=1.27.0 + - opentelemetry-exporter-prometheus <1.0.0 + - opentelemetry-sdk >=1.29.0,<2.0 + - pillow >=10.3.0 + - prometheus_client >=0.21.0 + - prometheus-async >=22.2.0 + - psutil >=6.1.1 + - pydantic + - pydantic-settings >=2.7.1 + - pyinstrument >=5.0.1 + - python-json-logger >=2.0.7 + - requests >=2.32.3 + - rich >=13.9.4 + - safetensors >=0.5.2 + - sentinel >=0.3.0 + - sse-starlette >=2.1.2 + - tokenizers >=0.19.0 + - pytorch >=2.2.2,<=2.5.1 + - transformers >=4.40.1 + - uvicorn >=0.34.0 + - uvloop >=0.21.0 + - xgrammar ==0.1.11 + license: LicenseRef-Modular-Proprietary + size: 126004454 + timestamp: 1740680207793 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022718-release.conda + noarch: python + sha256: 7da9f4655082bb64c2b0cc996ffefa0ce5c49744854ed77a9b0d000e27cf5a55 + md5: b16d498a148aa61dca2a6bfec5cb8e46 + depends: + - max-core ==25.2.0.dev2025022718 release + - click >=8.0.0 + - numpy >=1.18,<2.0 + - sentencepiece >=0.2.0 + - tqdm >=4.67.1 + constrains: + - aiohttp >=3.11.12 + - fastapi >=0.114.2 + - gguf >=0.14.0 + - hf-transfer >=0.1.9 + - httpx >=0.28.1 + - huggingface_hub >=0.24.0 + - nvitop >=1.4.1 + - opentelemetry-api >=1.29.0 + - opentelemetry-exporter-otlp-proto-http >=1.27.0 + - opentelemetry-exporter-prometheus <1.0.0 + - opentelemetry-sdk >=1.29.0,<2.0 + - pillow >=10.3.0 + - prometheus_client >=0.21.0 + - prometheus-async >=22.2.0 + - psutil >=6.1.1 + - pydantic + - pydantic-settings >=2.7.1 + - pyinstrument >=5.0.1 + - python-json-logger >=2.0.7 + - requests >=2.32.3 + - rich >=13.9.4 + - safetensors >=0.5.2 + - sentinel >=0.3.0 + - sse-starlette >=2.1.2 + - tokenizers >=0.19.0 + - pytorch >=2.2.2,<=2.5.1 + - transformers >=4.40.1 + - uvicorn >=0.34.0 + - uvloop >=0.21.0 + - xgrammar ==0.1.11 + license: LicenseRef-Modular-Proprietary + size: 112658409 + timestamp: 1740681819160 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022718-release.conda + noarch: python + sha256: ff042a8abfed0e2e36b207e3d4f59a2b4577dea7f099b08d1aaef128ab796f09 + md5: 719ca7123d53415adcdd7f0cb8396c51 + depends: + - python >=3.9,<3.13 + - click >=8.0.0 + - mypy_extensions >=0.4.3 + - packaging >=22.0 + - pathspec >=0.9.0 + - platformdirs >=2 + - typing_extensions >=v4.12.2 + - python + license: MIT + size: 130852 + timestamp: 1740680254353 +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022718-release.conda + noarch: python + sha256: 19c33e23b27e240fee0b2a1d56921802ac88558dc2da417837cd590175561e16 + md5: 6b8d00b15817db11e026f824f7f0ba14 + depends: + - max-core ==25.2.0.dev2025022718 release + - python >=3.9,<3.13 + - jupyter_client >=8.6.2,<8.7 + - python + license: LicenseRef-Modular-Proprietary + size: 22981 + timestamp: 1740680254354 +- conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda + sha256: 1895f47b7d68581a6facde5cb13ab8c2764c2e53a76bd746f8f98910dc4e08fe + md5: 29097e7ea634a45cc5386b95cac6568f + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 10854 + timestamp: 1733230986902 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda + sha256: 3fde293232fa3fca98635e1167de6b7c7fda83caf24b9d6c91ec9eefb4f4d586 + md5: 47e340acb35de30501a76c7c799c41d7 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: X11 AND BSD-3-Clause + size: 891641 + timestamp: 1738195959188 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-ha32ae93_3.conda + sha256: 91cfb655a68b0353b2833521dc919188db3d8a7f4c64bea2c6a7557b24747468 + md5: 182afabe009dc78d8b73100255ee6868 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: X11 AND BSD-3-Clause + size: 926034 + timestamp: 1738196018799 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda + sha256: 2827ada40e8d9ca69a153a45f7fd14f32b2ead7045d3bbb5d10964898fe65733 + md5: 068d497125e4bf8a66bf707254fff5ae + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: X11 AND BSD-3-Clause + size: 797030 + timestamp: 1738196177597 +- conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda + sha256: fe3459c75cf84dcef6ef14efcc4adb0ade66038ddd27cadb894f34f4797687d8 + md5: d8285bea2a350f63fab23bf460221f3f + depends: + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - libgcc-ng >=12 + - liblapack >=3.9.0,<4.0a0 + - libstdcxx-ng >=12 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - numpy-base <0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 7484186 + timestamp: 1707225809722 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda + sha256: 23767677a7790bee5457d5e75ebd508b9a31c5354216f4310dd1acfca3f7a6f9 + md5: 9cebf5a06cb87d4569cd68df887af476 + depends: + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - libgcc-ng >=12 + - liblapack >=3.9.0,<4.0a0 + - libstdcxx-ng >=12 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - numpy-base <0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 6614296 + timestamp: 1707225994762 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda + sha256: c8841d6d6f61fd70ca80682efbab6bdb8606dc77c68d8acabfbd7c222054f518 + md5: d83fc83d589e2625a3451c9a7e21047c + depends: + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - libcxx >=16 + - liblapack >=3.9.0,<4.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - numpy-base <0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 6073136 + timestamp: 1707226249608 +- conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.1-h7b32b05_0.conda + sha256: cbf62df3c79a5c2d113247ddea5658e9ff3697b6e741c210656e239ecaf1768f + md5: 41adf927e746dc75ecf0ef841c454e48 + depends: + - __glibc >=2.17,<3.0.a0 + - ca-certificates + - libgcc >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 2939306 + timestamp: 1739301879343 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.1-hd08dc88_0.conda + sha256: d80b52b56b2206053968270069616868cbeb289ef855cf1584b1bb0fef61b37c + md5: 09036190605c57eaecf01218e0e9542d + depends: + - ca-certificates + - libgcc >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 3476570 + timestamp: 1739303256089 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.1-h81ee809_0.conda + sha256: 4f8e2389e1b711b44182a075516d02c80fa7a3a7e25a71ff1b5ace9eae57a17a + md5: 75f9f0c7b1740017e2db83a53ab9a28e + depends: + - __osx >=11.0 + - ca-certificates + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 2934522 + timestamp: 1739301896733 +- conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + sha256: da157b19bcd398b9804c5c52fc000fcb8ab0525bdb9c70f95beaa0bb42f85af1 + md5: 3bfed7e6228ebf2f7b9eaa47f1b4e2aa + depends: + - python >=3.8 + license: Apache-2.0 + license_family: APACHE + size: 60164 + timestamp: 1733203368787 +- conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + sha256: 9f64009cdf5b8e529995f18e03665b03f5d07c0b17445b8badef45bde76249ee + md5: 617f15191456cc6a13db418a275435e5 + depends: + - python >=3.9 + license: MPL-2.0 + license_family: MOZILLA + size: 41075 + timestamp: 1733233471940 +- conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + sha256: bb50f6499e8bc1d1a26f17716c97984671121608dc0c3ecd34858112bce59a27 + md5: 577852c7e53901ddccc7e6a9959ddebe + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 20448 + timestamp: 1733232756001 +- conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.9-h9e4cc4f_0_cpython.conda + sha256: 64fed5178f1e9c8ac0f572ac0ce37955f5dee7b2bcac665202bc14f1f7dd618a + md5: 5665f0079432f8848079c811cdb537d5 + depends: + - __glibc >=2.17,<3.0.a0 + - bzip2 >=1.0.8,<2.0a0 + - ld_impl_linux-64 >=2.36.1 + - libexpat >=2.6.4,<3.0a0 + - libffi >=3.4,<4.0a0 + - libgcc >=13 + - liblzma >=5.6.4,<6.0a0 + - libnsl >=2.0.1,<2.1.0a0 + - libsqlite >=3.48.0,<4.0a0 + - libuuid >=2.38.1,<3.0a0 + - libxcrypt >=4.4.36 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.4.1,<4.0a0 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + constrains: + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Python-2.0 + size: 31581682 + timestamp: 1739521496324 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.9-h1683364_0_cpython.conda + sha256: 0366f38918bceda8ff5917d7bbe1cea2bc8b6c74e7245eb0e4b0d3c2d37f76cf + md5: 2e7ad70254455e0508adabff10218512 + depends: + - bzip2 >=1.0.8,<2.0a0 + - ld_impl_linux-aarch64 >=2.36.1 + - libexpat >=2.6.4,<3.0a0 + - libffi >=3.4,<4.0a0 + - libgcc >=13 + - liblzma >=5.6.4,<6.0a0 + - libnsl >=2.0.1,<2.1.0a0 + - libsqlite >=3.48.0,<4.0a0 + - libuuid >=2.38.1,<3.0a0 + - libxcrypt >=4.4.36 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.4.1,<4.0a0 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + constrains: + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Python-2.0 + size: 13804161 + timestamp: 1739519531794 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.9-hc22306f_0_cpython.conda + sha256: cbf81a78d3ca6e663e827523e6ddbc28369cac488da047a28f83875eb52fe5f6 + md5: 1d105a6c46a753e3c0bab54a1ad24063 + depends: + - __osx >=11.0 + - bzip2 >=1.0.8,<2.0a0 + - libexpat >=2.6.4,<3.0a0 + - libffi >=3.4,<4.0a0 + - liblzma >=5.6.4,<6.0a0 + - libsqlite >=3.48.0,<4.0a0 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.4.1,<4.0a0 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + constrains: + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Python-2.0 + size: 12947786 + timestamp: 1739520092196 +- conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + sha256: a50052536f1ef8516ed11a844f9413661829aa083304dc624c5925298d078d79 + md5: 5ba79d7c71f03c678c8ead841f347d6e + depends: + - python >=3.9 + - six >=1.5 + license: Apache-2.0 + license_family: APACHE + size: 222505 + timestamp: 1733215763718 +- conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda + build_number: 5 + sha256: d10e93d759931ffb6372b45d65ff34d95c6000c61a07e298d162a3bc2accebb0 + md5: 0424ae29b104430108f5218a66db7260 + constrains: + - python 3.12.* *_cpython + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 6238 + timestamp: 1723823388266 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.12-5_cp312.conda + build_number: 5 + sha256: 5ccdad9981753cc4a2d126e356673a21c0cd5b34e209cb8d476a3947d4ad9b39 + md5: 62b20f305498284a07dc6c45fd0e5c87 + constrains: + - python 3.12.* *_cpython + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 6329 + timestamp: 1723823366253 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-5_cp312.conda + build_number: 5 + sha256: 49d624e4b809c799d2bf257b22c23cf3fc4460f5570d9a58e7ad86350aeaa1f4 + md5: b76f9b1c862128e56ac7aa8cd2333de9 + constrains: + - python 3.12.* *_cpython + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 6278 + timestamp: 1723823099686 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.1-py312hbf22597_0.conda + sha256: 90ec0da0317d3d76990a40c61e1709ef859dd3d8c63838bad2814f46a63c8a2e + md5: 7cec8d0dac15a2d9fea8e49879aa779d + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libsodium >=1.0.20,<1.0.21.0a0 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - zeromq >=4.3.5,<4.4.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 382698 + timestamp: 1738271121975 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyzmq-26.2.1-py312h2427ae1_0.conda + sha256: 9558f9330093e5c21b7c04e2e212e19b9b88ad9c808315f12c0765b244018a09 + md5: 0520da8de6870d8ff63e818e927d1524 + depends: + - libgcc >=13 + - libsodium >=1.0.20,<1.0.21.0a0 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - zeromq >=4.3.5,<4.4.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 375156 + timestamp: 1738273130727 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.1-py312hf4875e0_0.conda + sha256: 70d398b334668dc597d33e27847ede1b0829a639b9c91ee845355e52c86c2293 + md5: bfbefdb140b546a80827ff7c9d5ac7b8 + depends: + - __osx >=11.0 + - libcxx >=18 + - libsodium >=1.0.20,<1.0.21.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - zeromq >=4.3.5,<4.4.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 364649 + timestamp: 1738271263898 +- conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda + sha256: 2d6d0c026902561ed77cd646b5021aef2d4db22e57a5b0178dfc669231e06d2c + md5: 283b96675859b20a825f8fa30f311446 + depends: + - libgcc >=13 + - ncurses >=6.5,<7.0a0 + arch: x86_64 + platform: linux + license: GPL-3.0-only + license_family: GPL + size: 282480 + timestamp: 1740379431762 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8382b9d_2.conda + sha256: 54bed3a3041befaa9f5acde4a37b1a02f44705b7796689574bcf9d7beaad2959 + md5: c0f08fc2737967edde1a272d4bf41ed9 + depends: + - libgcc >=13 + - ncurses >=6.5,<7.0a0 + arch: aarch64 + platform: linux + license: GPL-3.0-only + license_family: GPL + size: 291806 + timestamp: 1740380591358 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda + sha256: 7db04684d3904f6151eff8673270922d31da1eea7fa73254d01c437f49702e34 + md5: 63ef3f6e6d6d5c589e64f11263dc5676 + depends: + - ncurses >=6.5,<7.0a0 + arch: arm64 + platform: osx + license: GPL-3.0-only + license_family: GPL + size: 252359 + timestamp: 1740379663071 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-0.2.0-hc8f76dd_10.conda + sha256: a1bde55ceb9dc5bd7879283d0f594a6ce65c07fda3de76230c65a4a5df47858a + md5: 480e915dfc6c592615ef6f217e615aa6 + depends: + - libsentencepiece 0.2.0 h8e10757_10 + - python_abi 3.12.* *_cp312 + - sentencepiece-python 0.2.0 py312hb6b8a2b_10 + - sentencepiece-spm 0.2.0 h8e10757_10 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 19470 + timestamp: 1735628377167 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-0.2.0-h6c1b121_10.conda + sha256: 846d885a560fbb4375b645e7caf2f756ef88bbeb441b670375da0090aaa427fb + md5: 33a89eb1dedae8eb7222b0a89856f337 + depends: + - libsentencepiece 0.2.0 h6164ad9_10 + - python_abi 3.12.* *_cp312 + - sentencepiece-python 0.2.0 py312h197ff68_10 + - sentencepiece-spm 0.2.0 h6164ad9_10 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 19686 + timestamp: 1735628718991 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-0.2.0-h22a84ea_10.conda + sha256: 526c934b897131bd274697649c3b1c492a7d66c03368885a954112468b3c1424 + md5: 346abe448f69949a65473b336856860a + depends: + - libsentencepiece 0.2.0 he13a0af_10 + - python_abi 3.12.* *_cp312 + - sentencepiece-python 0.2.0 py312h155166a_10 + - sentencepiece-spm 0.2.0 he13a0af_10 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 19759 + timestamp: 1735628533490 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-python-0.2.0-py312hb6b8a2b_10.conda + sha256: 37df7fb659564587b950b39c936769d9b5095afb7bc223f42d6248a5540c6567 + md5: 7908b7b977e2e123a5f6a29906f2ce44 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 h8e10757_10 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 2411182 + timestamp: 1735628106455 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-python-0.2.0-py312h197ff68_10.conda + sha256: a7c2c19cc397c7632e2630af49ddcff128f145c93ea493421e6f42bfa5e1d30b + md5: 5642e4545a3cf03e446fb3b3e9fd723b + depends: + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 h6164ad9_10 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 2458076 + timestamp: 1735628298246 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-python-0.2.0-py312h155166a_10.conda + sha256: 2d59614aeafbf54cc718805798c11c2d0a3b4b8d947d1bd81c87c484b4883077 + md5: 6e11367ef670296fce01fc9860be944d + depends: + - __osx >=11.0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 he13a0af_10 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 2433303 + timestamp: 1735628083958 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-spm-0.2.0-h8e10757_10.conda + sha256: 6b55e1121545357d63c3aa0766931720e8aafc52d88641ba7631c8cbaa68c52f + md5: e977b7be5ac26c55825e121e00b90493 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 h8e10757_10 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 89076 + timestamp: 1735628334078 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-spm-0.2.0-h6164ad9_10.conda + sha256: b98fc1028a8e8fbf309af383f9c837290a14e076e6c5533dc251694ea33ffc6e + md5: a4b75936c01dca3f089f02752b7ee325 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 h6164ad9_10 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 85983 + timestamp: 1735628693813 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-spm-0.2.0-he13a0af_10.conda + sha256: b760aeee02e2afbfcce3f559e8a227aa4c94139157b1702fdfb41a057dad0e52 + md5: 9b7300f23cd330da8664cd072c162e5f + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 he13a0af_10 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 83826 + timestamp: 1735628514667 +- conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + sha256: 41db0180680cc67c3fa76544ffd48d6a5679d96f4b71d7498a759e94edc9a2db + md5: a451d576819089b0d672f18768be0f65 + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 16385 + timestamp: 1733381032766 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda + sha256: e0569c9caa68bf476bead1bed3d79650bb080b532c64a4af7d8ca286c08dea4e + md5: d453b98d9c83e71da0741bb0ff4d76bc + depends: + - libgcc-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 + arch: x86_64 + platform: linux + license: TCL + license_family: BSD + size: 3318875 + timestamp: 1699202167581 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda + sha256: 7fa27cc512d3a783f38bd16bbbffc008807372499d5b65d089a8e43bde9db267 + md5: f75105e0585851f818e0009dd1dde4dc + depends: + - libgcc-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 + arch: aarch64 + platform: linux + license: TCL + license_family: BSD + size: 3351802 + timestamp: 1695506242997 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda + sha256: 72457ad031b4c048e5891f3f6cb27a53cb479db68a52d965f796910e71a403a8 + md5: b50a57ba89c32b62428b71a875291c9b + depends: + - libzlib >=1.2.13,<2.0.0a0 + arch: arm64 + platform: osx + license: TCL + license_family: BSD + size: 3145523 + timestamp: 1699202432999 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda + sha256: 062a3a3a37fa8615ce57929ba7e982c76f5a5810bcebd435950f6d6c4147c310 + md5: e417822cb989e80a0d2b1b576fdd1657 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 840414 + timestamp: 1732616043734 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py312h52516f5_0.conda + sha256: 4c19a544354172b2273553267e734795a6da3c78a04c2d19f8e9e159ca3178bc + md5: e28996d9d2d44d777b7e6fb12f63715b + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 841662 + timestamp: 1732616934923 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda + sha256: 964a2705a36c50040c967b18b45b9cc8de3c2aff4af546979a574e0b38e58e39 + md5: fb0605888a475d6a380ae1d1a819d976 + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 842549 + timestamp: 1732616081362 +- conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + sha256: 11e2c85468ae9902d24a27137b6b39b4a78099806e551d390e394a8c34b48e40 + md5: 9efbfdc37242619130ea42b1cc4ed861 + depends: + - colorama + - python >=3.9 + license: MPL-2.0 or MIT + size: 89498 + timestamp: 1735661472632 +- conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + sha256: f39a5620c6e8e9e98357507262a7869de2ae8cc07da8b7f84e517c9fd6c2b959 + md5: 019a7385be9af33791c989871317e1ed + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 110051 + timestamp: 1733367480074 +- conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + sha256: 337be7af5af8b2817f115b3b68870208b30c31d3439bec07bfb2d8f4823e3568 + md5: d17f13df8b65464ca316cbc000a3cb64 + depends: + - python >=3.9 + license: PSF-2.0 + license_family: PSF + size: 39637 + timestamp: 1733188758212 +- conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + sha256: c4b1ae8a2931fe9b274c44af29c5475a85b37693999f8c792dad0f8c6734b1de + md5: dbcace4706afdfb7eb891f7b37d07c04 + license: LicenseRef-Public-Domain + size: 122921 + timestamp: 1737119101255 +- conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda + sha256: a4dc72c96848f764bb5a5176aa93dd1e9b9e52804137b99daeebba277b31ea10 + md5: 3947a35e916fcc6b9825449affbf4214 + depends: + - __glibc >=2.17,<3.0.a0 + - krb5 >=1.21.3,<1.22.0a0 + - libgcc >=13 + - libsodium >=1.0.20,<1.0.21.0a0 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: MPL-2.0 + license_family: MOZILLA + size: 335400 + timestamp: 1731585026517 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zeromq-4.3.5-h5efb499_7.conda + sha256: a6003096dc0570a86492040ba32b04ce7662b159600be2252b7a0dfb9414e21c + md5: f2f3282559a4b87b7256ecafb4610107 + depends: + - krb5 >=1.21.3,<1.22.0a0 + - libgcc >=13 + - libsodium >=1.0.20,<1.0.21.0a0 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: MPL-2.0 + license_family: MOZILLA + size: 371419 + timestamp: 1731589490850 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda + sha256: 9e585569fe2e7d3bea71972cd4b9f06b1a7ab8fa7c5139f92a31cbceecf25a8a + md5: f7e6b65943cb73bce0143737fded08f1 + depends: + - __osx >=11.0 + - krb5 >=1.21.3,<1.22.0a0 + - libcxx >=18 + - libsodium >=1.0.20,<1.0.21.0a0 + arch: arm64 + platform: osx + license: MPL-2.0 + license_family: MOZILLA + size: 281565 + timestamp: 1731585108039 +- conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + sha256: 567c04f124525c97a096b65769834b7acb047db24b15a56888a322bf3966c3e1 + md5: 0c3cc595284c5e8f0f9900a9b228a332 + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 21809 + timestamp: 1732827613585 diff --git a/examples/notebooks/magic.lock b/examples/notebooks/magic.lock index a9ee6e08a6..ee529cc1e2 100644 --- a/examples/notebooks/magic.lock +++ b/examples/notebooks/magic.lock @@ -8,10 +8,6 @@ environments: linux-64: - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.11-py312h178313f_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.8.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/argon2-cffi-bindings-21.2.0-py312h66e93f0_5.conda @@ -19,75 +15,38 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.1.0-pyh71513ae_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.1-h205f482_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.1-h1a47875_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.10.6-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.3.0-h4e1184b_5.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.0-h7959bf6_11.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.2-hefd7a92_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-h173a860_6.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h11f4f37_12.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.9-he1b24dc_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.2-h4e1184b_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-h4e1184b_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.9-he0e7f3f_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.489-h4d475cb_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.10.0-h113e628_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.13.0-h3cf044e_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-common-cpp-12.8.0-h736e048_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-files-datalake-cpp-12.12.0-ha633028_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.16.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/backoff-2.2.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.12.3-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.13.3-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyh29332c3_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.2.0-h82add2a_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py312h2ec8cdc_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.4-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2025.1.31-hbcca054_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.12.14-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.1.31-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py312h06ac9bb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.12-py312h2ec8cdc_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.1.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.18-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda - - 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/executing-2.1.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.8-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.17.0-pyhd8ed1ab_0.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 - - conda: https://conda.anaconda.org/conda-forge/linux-64/frozenlist-1.5.0-py312h178313f_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.12.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/gflags-2.2.2-h5888daf_1005.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/glog-0.7.1-hbabe93e_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/httptools-0.6.4-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.28.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh3099207_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-8.31.0-pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-8.32.0-pyh907856f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.5-pyhd8ed1ab_0.conda @@ -99,7 +58,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.11.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.15.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.3.5-pyhd8ed1ab_0.conda @@ -107,171 +66,96 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.16-hb7c19ff_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-19.0.0-h00a82cf_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-19.0.0-hcb10f89_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-19.0.0-hcb10f89_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-19.0.0-h08228c5_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-28_h59b9bed_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hb9d3cd8_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hb9d3cd8_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.1.0-hb9d3cd8_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-28_he106b2a_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libcrc32c-1.1.2-h9c3ff4c_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.11.1-h332b0f4_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.23-h4ddbbb0_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20240808-pl5321h7949ede_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libevent-2.1.12-hf998b51_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-31_h59b9bed_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-31_he106b2a_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.2-h7f98852_5.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h77fa898_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hd5240d6_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h77fa898_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.34.0-h2b5623c_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.34.0-h0121fbd_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.67.1-h25350d4_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-hd590300_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-28_h7ac8fdf_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.3-hb9d3cd8_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h767d61c_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hf1ad2bd_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h767d61c_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-31_h7ac8fdf_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.28-pthreads_h94d23a6_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-1.18.0-hfcad708_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-headers-1.18.0-ha770c72_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-19.0.0-h081d1f1_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.46-h943b412_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.29-pthreads_h94d23a6_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsentencepiece-0.2.0-h8e10757_10.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.48.0-hee588c1_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hf672d98_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-hc0a3c3a_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libthrift-0.21.0-h0e7cc3e_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hd9ff511_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.10.0-h4c51ac1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.49.1-hee588c1_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-h8f9b012_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.50.0-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.5.0-h851e524_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.5-h0d44e9d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - - 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.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025013105-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025013105-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025013105-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025013105-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.1.1-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025013105-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.modular.com/max-nightly/noarch/max-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022718-release.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.2-pyhd8ed1ab_0.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022718-release.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.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.6-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/nlohmann_json-3.11.3-he02047a_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.3-h5fbd93e_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.0-h7b32b05_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.29.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.29.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.29.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-prometheus-1.12.0rc1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.29.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.29.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.50b0-pyh3cfb1c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/orc-2.0.3-h12ee42a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.1-h7b32b05_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.2-py312h1d6d2e6_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-11.1.0-py312h80c1187_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pip-24.3.1-pyh8b19718_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/prometheus-cpp-1.3.0-ha5d0236_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.50-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.1-py312h178313f_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/protobuf-5.28.3-py312h2ec8cdc_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/psutil-6.1.1-py312h66e93f0_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/psutil-7.0.0-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-19.0.0-py312h7900ff3_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-19.0.0-py312h01725c0_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.6-pyh3cfb1c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.27.2-py312h12e396e_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.7.1-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pyinstrument-5.0.1-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.8-h9e4cc4f_1_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.9-h9e4cc4f_0_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.20-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/python-xxhash-3.5.0-py312h66e93f0_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py312h178313f_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.1-py312hbf22597_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/re2-2024.07.02-h9925aae_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.36.2-pyh29332c3_0.conda - - 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/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.11-h072c03f_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/safetensors-0.5.2-py312h12e396e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.23.1-py312h3b7be25_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh0d859eb_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.8.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-0.2.0-hc8f76dd_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-python-0.2.0-py312hb6b8a2b_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-spm-0.2.0-h8e10757_10.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.8.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-h8bd8927_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.5-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.45.3-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh0d859eb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.21.0-py312h8360d73_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.48.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20241206-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda @@ -279,33 +163,18 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.34.0-pyh31011fe_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.34.0-h31011fe_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/uvloop-0.21.0-py312h66e93f0_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/watchfiles-1.0.4-py312h12e396e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.8.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/websockets-14.2-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wheel-0.45.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.17.2-py312h66e93f0_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xxhash-0.8.2-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.18.3-py312h178313f_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.1-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312hef9b889_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda linux-aarch64: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.11-py312hcc812fe_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.8.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/argon2-cffi-bindings-21.2.0-py312hb2c0f52_5.conda @@ -313,76 +182,38 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.1.0-pyh71513ae_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.1-hb7ec8d5_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.1-h740c5af_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-common-0.10.6-h86ecc28_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-compression-0.3.0-h0f0193d_5.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-event-stream-0.5.0-hcbd8f92_11.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.2-h3df160d_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-hfd5ba81_6.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h5f50e26_12.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.9-h05b070f_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.2-h0f0193d_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h0f0193d_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.9-hab3ce66_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.489-h88461e4_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-core-cpp-1.14.0-h1887c18_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-identity-cpp-1.10.0-h47b0b28_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-blobs-cpp-12.13.0-h185ecfd_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-common-cpp-12.8.0-h1b94036_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-files-datalake-cpp-12.12.0-h37d6d07_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.16.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/backoff-2.2.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.12.3-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.13.3-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyh29332c3_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.2.0-h82add2a_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/brotli-python-1.1.0-py312h6f74592_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h68df207_7.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/c-ares-1.34.4-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2025.1.31-hcefe29a_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.12.14-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.1.31-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cffi-1.17.1-py312hac81daf_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/debugpy-1.8.12-py312h6f74592_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.1.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.18-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda - - 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/executing-2.1.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.8-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.17.0-pyhd8ed1ab_0.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 - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/frozenlist-1.5.0-py312hcc812fe_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.12.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gflags-2.2.2-h5ad3122_1005.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/glog-0.7.1-h468a4a4_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/httptools-0.6.4-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.28.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh3099207_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-8.31.0-pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-8.32.0-pyh907856f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.5-pyhd8ed1ab_0.conda @@ -394,7 +225,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.11.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.15.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.3.5-pyhd8ed1ab_0.conda @@ -402,171 +233,96 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/keyutils-1.6.1-h4e544f5_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/krb5-1.21.3-h50a48e9_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lcms2-2.16-h922389a_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.0.0-h4de3ea5_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h18dbdb1_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-19.0.0-h03ebaaf_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-19.0.0-h3b568fd_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-19.0.0-h3b568fd_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-19.0.0-h1e9d426_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-28_h1a9f1db_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlicommon-1.1.0-h86ecc28_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlidec-1.1.0-h86ecc28_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlienc-1.1.0-h86ecc28_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-28_hab92f65_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcrc32c-1.1.2-h01db608_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcurl-8.11.1-h6702fde_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libdeflate-1.23-h5e3c512_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20240808-pl5321h976ea20_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libev-4.33-h31becfc_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libevent-2.1.12-h4ba1bb4_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-31_h1a9f1db_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-31_hab92f65_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20250104-pl5321h976ea20_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.6.4-h5ad3122_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.4.2-h3557bc0_5.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-14.2.0-he277a41_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-14.2.0-he9431aa_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-2.34.0-hccf9d24_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-storage-2.34.0-hb9b2b65_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgrpc-1.67.1-hf7ccdd3_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libiconv-1.17-h31becfc_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libjpeg-turbo-3.0.0-h31becfc_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-28_h411afd4_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.3-h86ecc28_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnghttp2-1.64.0-hc8609a4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.4.6-he21f813_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-14.2.0-he277a41_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-14.2.0-he9431aa_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-31_h411afd4_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.4-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.28-pthreads_h9d3fd7e_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopentelemetry-cpp-1.18.0-h60b47f9_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopentelemetry-cpp-headers-1.18.0-h8af1aa0_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-19.0.0-hfc78867_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.46-hec79eb8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.29-pthreads_h9d3fd7e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.3-h44a3b7b_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsentencepiece-0.2.0-h6164ad9_10.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.20-h68df207_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.48.0-h5eb1b54_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libssh2-1.11.1-ha41c0db_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libthrift-0.21.0-h154c74f_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.0-h88f7998_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.10.0-ha346350_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.49.1-h5eb1b54_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuv-1.50.0-h86ecc28_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libwebp-base-1.5.0-h0886dbf_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcb-1.17.0-h262b8f6_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.5-h2e0c361_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - - 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.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025013105-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025013105-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025013105-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025013105-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.1.1-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025013105-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.modular.com/max-nightly/noarch/max-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022718-release.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.2-pyhd8ed1ab_0.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022718-release.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.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.6-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-ha32ae93_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/nlohmann_json-3.11.3-h0a1ffab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openjpeg-2.5.3-h3f56577_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.0-hd08dc88_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.29.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.29.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.29.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-prometheus-1.12.0rc1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.29.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.29.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.50b0-pyh3cfb1c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/orc-2.0.3-hdd485aa_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.1-hd08dc88_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pandas-2.2.2-py312h14eacfc_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pillow-11.1.0-py312h719f0cf_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pip-24.3.1-pyh8b19718_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/prometheus-cpp-1.3.0-h7938499_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.50-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.2.1-py312hcc812fe_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/protobuf-5.28.3-py312h6f74592_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/psutil-6.1.1-py312hb2c0f52_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pthread-stubs-0.4-h86ecc28_1002.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/psutil-7.0.0-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-19.0.0-py312h8025657_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-19.0.0-py312h66f7834_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.6-pyh3cfb1c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pydantic-core-2.27.2-py312h8cbf658_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.7.1-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyinstrument-5.0.1-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.8-h1683364_1_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.9-h1683364_0_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.20-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-xxhash-3.5.0-py312h52516f5_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.12-5_cp312.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyyaml-6.0.2-py312hcc812fe_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyzmq-26.2.1-py312h2427ae1_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/re2-2024.07.02-haa97905_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8fc344f_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8382b9d_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.36.2-pyh29332c3_0.conda - - 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/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.11-h3caee7a_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/safetensors-0.5.2-py312h8cbf658_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/rpds-py-0.23.1-py312he7a34ca_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh0d859eb_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.8.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-0.2.0-h6c1b121_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-python-0.2.0-py312h197ff68_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-spm-0.2.0-h6164ad9_10.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.8.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-hd4fb6f5_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.5-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.45.3-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh0d859eb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.21.0-py312ha0d6ea1_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py312h52516f5_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.48.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20241206-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda @@ -574,32 +330,17 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.34.0-pyh31011fe_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.34.0-h31011fe_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/uvloop-0.21.0-py312hb2c0f52_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/watchfiles-1.0.4-py312h8cbf658_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.8.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/websockets-14.2-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wheel-0.45.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/wrapt-1.17.2-py312hb2c0f52_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxau-1.0.12-h86ecc28_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxdmcp-1.1.5-h57736b2_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xxhash-0.8.2-h31becfc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yaml-0.2.5-hf897c2e_2.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.18.3-py312hcc812fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zeromq-4.3.5-h5efb499_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zlib-1.3.1-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstandard-0.23.0-py312hb698573_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.6-h02f22dd_0.conda osx-arm64: - - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.11-py312h998013c_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.8.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/appnope-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_1.conda @@ -608,76 +349,38 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.1.0-pyh71513ae_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.1-hfc2798a_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.1-hc8a0bd2_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.10.6-h5505292_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-compression-0.3.0-hc8a0bd2_5.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.0-h54f970a_11.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.2-h96aa502_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-haba67d1_6.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h24f418c_12.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.9-hf37e03c_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.2-hc8a0bd2_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-hc8a0bd2_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.9-ha81f72f_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.489-h0e5014b_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.14.0-hd50102c_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.10.0-hc602bab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-blobs-cpp-12.13.0-h7585a09_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-common-cpp-12.8.0-h9ca1f76_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-files-datalake-cpp-12.12.0-hcdd55da_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.16.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/backoff-2.2.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.12.3-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.13.3-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyh29332c3_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.2.0-h82add2a_4.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py312hde4cb15_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.4-h5505292_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2025.1.31-hf0a4a13_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.12.14-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.1.31-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.1-py312h0fad829_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/debugpy-1.8.12-py312hd8f9ff3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.1.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.18-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda - - 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/executing-2.1.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.8-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.17.0-pyhd8ed1ab_0.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 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/frozenlist-1.5.0-py312h998013c_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.12.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gflags-2.2.2-hf9b8971_1005.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/glog-0.7.1-heb240a5_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/httptools-0.6.4-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.28.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh57ce528_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-8.31.0-pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-8.32.0-pyh907856f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.5-pyhd8ed1ab_0.conda @@ -689,172 +392,98 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.11.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.15.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.3.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.16-ha0e7c42_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_h07bc746_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-19.0.0-h819e3af_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-19.0.0-hf07054f_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-19.0.0-hf07054f_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-19.0.0-h4239455_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-28_h10e41b3_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.1.0-hd74edd7_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.1.0-hd74edd7_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlienc-1.1.0-hd74edd7_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-28_hb3479ef_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcrc32c-1.1.2-hbdafb3b_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.11.1-h73640d1_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-31_h10e41b3_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-31_hb3479ef_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.23-hec38601_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20240808-pl5321hafb1f1b_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libev-4.33-h93a5062_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libevent-2.1.12-h2757513_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.4-h286801f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-2.34.0-hdbe95d5_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-storage-2.34.0-h7081f7f_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgrpc-1.67.1-h0a426d6_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.17-h0d3ecfb_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.0.0-hb547adb_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-28_hc9a63f6_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.3-h39f12f2_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.64.0-h6d7220d_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.28-openmp_hf332438_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopentelemetry-cpp-1.18.0-h0c05b2d_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopentelemetry-cpp-headers-1.18.0-hce30654_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-19.0.0-h636d7b7_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.46-h3783ad8_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-31_hc9a63f6_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.4-h39f12f2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.29-openmp_hf332438_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.3-h3bd63a1_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h07bc746_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsentencepiece-0.2.0-he13a0af_10.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.48.0-h3f77e49_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.1-h9cc3647_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libthrift-0.21.0-h64651cc_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-h551f018_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.10.0-hda25de7_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libuv-1.50.0-h5505292_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.5.0-h2471fea_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxcb-1.17.0-hdb1d25a_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.5-h178c5d8_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.1-h3f77e49_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda - - 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.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025013105-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025013105-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025013105-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025013105-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.1.1-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025013105-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.modular.com/max-nightly/noarch/max-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022718-release.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.2-pyhd8ed1ab_0.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022718-release.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.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.6-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/nlohmann_json-3.11.3-h00cdb27_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openjpeg-2.5.3-h8a3d83b_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.0-h81ee809_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.29.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.29.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.29.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-prometheus-1.12.0rc1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.29.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.29.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.50b0-pyh3cfb1c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/orc-2.0.3-h0ff2369_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.1-h81ee809_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.2-py312h8ae5369_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-11.1.0-py312h50aef2c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pip-24.3.1-pyh8b19718_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/prometheus-cpp-1.3.0-h0967b3e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.50-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.1-py312h998013c_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/protobuf-5.28.3-py312hd8f9ff3_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/psutil-6.1.1-py312hea69d52_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pthread-stubs-0.4-hd74edd7_1002.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/psutil-7.0.0-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-19.0.0-py312h1f38498_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-19.0.0-py312hc40f475_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.6-pyh3cfb1c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.27.2-py312hcd83bfe_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.7.1-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyinstrument-5.0.1-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-core-11.0-py312hb9d441b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-framework-cocoa-11.0-py312hb9d441b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.8-hc22306f_1_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.9-hc22306f_0_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.20-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-xxhash-3.5.0-py312h024a12e_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-5_cp312.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py312h998013c_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.1-py312hf4875e0_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/re2-2024.07.02-h6589ca4_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h92ec313_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.36.2-pyh29332c3_0.conda - - 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/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.5.2-py312hcd83bfe_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/rpds-py-0.23.1-py312hd60eec9_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh31c8845_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.8.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-0.2.0-h22a84ea_10.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-python-0.2.0-py312h155166a_10.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-spm-0.2.0-he13a0af_10.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.8.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-h98b9ce2_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.5-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.45.3-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh31c8845_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.21.0-py312hf3e4074_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.48.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20241206-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda @@ -862,25 +491,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.34.0-pyh31011fe_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.34.0-h31011fe_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/uvloop-0.21.0-py312h0bf5046_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/watchfiles-1.0.4-py312hcd83bfe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.8.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/websockets-14.2-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wheel-0.45.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/wrapt-1.17.2-py312hea69d52_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxau-1.0.12-h5505292_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxdmcp-1.1.5-hd74edd7_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xxhash-0.8.2-hb547adb_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.18.3-py312h998013c_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zlib-1.3.1-h8359307_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py312h15fbf35_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.6-hb46c0d2_0.conda packages: @@ -921,98 +539,6 @@ packages: license_family: BSD size: 23712 timestamp: 1650670790230 -- conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_1.conda - sha256: 95d4713e49ea92ae50cf42393683ede706b7875af5f7cb14c253438180afa732 - md5: 296b403617bafa89df4971567af79013 - depends: - - python >=3.9 - license: PSF-2.0 - license_family: PSF - size: 19351 - timestamp: 1733332029649 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.11-py312h178313f_0.conda - sha256: 2e817805e8a4fed33f23f116ff5649f8651af693328e9ed82d9d11a951338693 - md5: 8219afa093757bbe07b9825eb1973ed9 - depends: - - __glibc >=2.17,<3.0.a0 - - aiohappyeyeballs >=2.3.0 - - aiosignal >=1.1.2 - - attrs >=17.3.0 - - frozenlist >=1.1.1 - - libgcc >=13 - - multidict >=4.5,<7.0 - - propcache >=0.2.0 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - - yarl >=1.17.0,<2.0 - arch: x86_64 - platform: linux - license: MIT AND Apache-2.0 - license_family: Apache - size: 915358 - timestamp: 1734597073870 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.11-py312hcc812fe_0.conda - sha256: f28e81e458d19df4ca0002f8a92d7f647fa25e8179887a8676801dfe44edb1f2 - md5: 11fa88136d9bf39d2136b2378f7c10be - depends: - - aiohappyeyeballs >=2.3.0 - - aiosignal >=1.1.2 - - attrs >=17.3.0 - - frozenlist >=1.1.1 - - libgcc >=13 - - multidict >=4.5,<7.0 - - propcache >=0.2.0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - - yarl >=1.17.0,<2.0 - arch: aarch64 - platform: linux - license: MIT AND Apache-2.0 - license_family: Apache - size: 902422 - timestamp: 1734597104529 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.11-py312h998013c_0.conda - sha256: 446f078e7a7b892894d7f4851a278b7834ffb4f5632313646a55c3abe13690d4 - md5: c69c904691364cfb27d15aa7153e9c29 - depends: - - __osx >=11.0 - - aiohappyeyeballs >=2.3.0 - - aiosignal >=1.1.2 - - attrs >=17.3.0 - - frozenlist >=1.1.1 - - multidict >=4.5,<7.0 - - propcache >=0.2.0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - - yarl >=1.17.0,<2.0 - arch: arm64 - platform: osx - license: MIT AND Apache-2.0 - license_family: Apache - size: 875711 - timestamp: 1734597277258 -- conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda - sha256: 7de8ced1918bbdadecf8e1c1c68237fe5709c097bd9e0d254f4cad118f4345d0 - md5: 1a3981115a398535dbe3f6d5faae3d36 - depends: - - frozenlist >=1.1.0 - - python >=3.9 - license: Apache-2.0 - license_family: APACHE - size: 13229 - timestamp: 1734342253061 -- conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - sha256: e0ea1ba78fbb64f17062601edda82097fcf815012cf52bb704150a2668110d48 - md5: 2934f256a8acfe48f6ebb4fce6cde29c - depends: - - python >=3.9 - - typing-extensions >=4.0.0 - license: MIT - license_family: MIT - size: 18074 - timestamp: 1733247158254 - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.8.0-pyhd8ed1ab_0.conda sha256: f1455d2953e3eb6d71bc49881c8558d8e01888469dfd21061dd48afb6183e836 md5: 848d25bfbadf020ee4d4ba90e5668252 @@ -1137,2790 +663,1031 @@ packages: license_family: MIT size: 56370 timestamp: 1737819298139 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.1-h205f482_0.conda - sha256: ebe5e33249f37f6bb481de99581ebdc92dbfcf1b6915609bcf3c9e78661d6352 - md5: 9c500858e88df50af3cc883d194de78a +- conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.17.0-pyhd8ed1ab_0.conda + sha256: 1c656a35800b7f57f7371605bc6507c8d3ad60fbaaec65876fce7f73df1fc8ac + md5: 0a01c169f0ab0f91b26e77a3301fbfe4 depends: - - __glibc >=2.17,<3.0.a0 - - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - aws-c-http >=0.9.2,<0.9.3.0a0 - - aws-c-io >=0.15.3,<0.15.4.0a0 - - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 - - libgcc >=13 - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 108111 - timestamp: 1737509831651 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.1-hb7ec8d5_0.conda - sha256: e1e6c9267a4d9af30b1d28c11a9041b17b7840ff83ef08614145a2a4f444f5b4 - md5: 2630f030652970a5531e492f6b2a6dd3 - depends: - - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - aws-c-http >=0.9.2,<0.9.3.0a0 - - aws-c-io >=0.15.3,<0.15.4.0a0 - - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 - - libgcc >=13 - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 112658 - timestamp: 1737509863269 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.1-hfc2798a_0.conda - sha256: 5a60d196a585b25d1446fb973009e4e648e8d70beaa2793787243ede6da0fd9a - md5: 0abd67c0f7b60d50348fbb32fef50b65 + - python >=3.9 + - pytz >=2015.7 + license: BSD-3-Clause + license_family: BSD + size: 6938256 + timestamp: 1738490268466 +- conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.13.3-pyha770c72_0.conda + sha256: 4ce42860292a57867cfc81a5d261fb9886fc709a34eca52164cc8bbf6d03de9f + md5: 373374a3ed20141090504031dc7b693e depends: - - __osx >=11.0 - - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - aws-c-http >=0.9.2,<0.9.3.0a0 - - aws-c-io >=0.15.3,<0.15.4.0a0 - - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: Apache - size: 92562 - timestamp: 1737509877079 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.1-h1a47875_3.conda - sha256: 095ac824ea9303eff67e04090ae531d9eb33d2bf8f82eaade39b839c421e16e8 - md5: 55a8561fdbbbd34f50f57d9be12ed084 + - python >=3.9 + - soupsieve >=1.2 + - typing-extensions + license: MIT + license_family: MIT + size: 145482 + timestamp: 1738740460562 +- conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyh29332c3_4.conda + sha256: a05971bb80cca50ce9977aad3f7fc053e54ea7d5321523efc7b9a6e12901d3cd + md5: f0b4c8e370446ef89797608d60a564b3 + depends: + - python >=3.9 + - webencodings + - python + constrains: + - tinycss >=1.1.0,<1.5 + license: Apache-2.0 AND MIT + size: 141405 + timestamp: 1737382993425 +- conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.2.0-h82add2a_4.conda + sha256: 0aba699344275b3972bd751f9403316edea2ceb942db12f9f493b63c74774a46 + md5: a30e9406c873940383555af4c873220d + depends: + - bleach ==6.2.0 pyh29332c3_4 + - tinycss2 + license: Apache-2.0 AND MIT + size: 4213 + timestamp: 1737382993425 +- conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py312h2ec8cdc_2.conda + sha256: f2a59ccd20b4816dea9a2a5cb917eb69728271dbf1aeab4e1b7e609330a50b6f + md5: b0b867af6fc74b2a0aa206da29c0f3cf depends: - __glibc >=2.17,<3.0.a0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - libgcc >=13 - - openssl >=3.3.1,<4.0a0 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - libbrotlicommon 1.1.0 hb9d3cd8_2 arch: x86_64 platform: linux - license: Apache-2.0 - license_family: Apache - size: 47601 - timestamp: 1733991564405 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.1-h740c5af_3.conda - sha256: c5c7961d48ca7320ed3560c036f7aa5244df4b85d9657f70aacc5faba3e1509a - md5: 57ed2c445d7ef01d121b9bcea0522913 + license: MIT + license_family: MIT + size: 349867 + timestamp: 1725267732089 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/brotli-python-1.1.0-py312h6f74592_2.conda + sha256: 9736bf660a0e4260c68f81d2635b51067f817813e6490ac9e8abd9a835dcbf6d + md5: e1e9727063057168d95f27a032acd0a4 depends: - - aws-c-common >=0.10.6,<0.10.7.0a0 - libgcc >=13 - - openssl >=3.3.1,<4.0a0 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - libbrotlicommon 1.1.0 h86ecc28_2 arch: aarch64 platform: linux - license: Apache-2.0 - license_family: Apache - size: 50036 - timestamp: 1733991581303 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.1-hc8a0bd2_3.conda - sha256: 1f44be36e1daa17b4b081debb8aee492d13571084f38b503ad13e869fef24fe4 - md5: 8b0ce61384e5a33d2b301a64f3d22ac5 + license: MIT + license_family: MIT + size: 356878 + timestamp: 1725267878508 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py312hde4cb15_2.conda + sha256: 254b411fa78ccc226f42daf606772972466f93e9bc6895eabb4cfda22f5178af + md5: a83c2ef76ccb11bc2349f4f17696b15d depends: - __osx >=11.0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - openssl >=3.3.1,<4.0a0 + - libcxx >=17 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - libbrotlicommon 1.1.0 hd74edd7_2 arch: arm64 platform: osx - license: Apache-2.0 - license_family: Apache - size: 39925 - timestamp: 1733991649383 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.10.6-hb9d3cd8_0.conda - sha256: 496e92f2150fdc351eacf6e236015deedb3d0d3114f8e5954341cbf9f3dda257 - md5: d7d4680337a14001b0e043e96529409b + license: MIT + license_family: MIT + size: 339360 + timestamp: 1725268143995 +- conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda + sha256: 5ced96500d945fb286c9c838e54fa759aa04a7129c59800f0846b4335cee770d + md5: 62ee74e96c5ebb0af99386de58cf9553 depends: - __glibc >=2.17,<3.0.a0 - - libgcc >=13 + - libgcc-ng >=12 arch: x86_64 platform: linux - license: Apache-2.0 - license_family: Apache - size: 236574 - timestamp: 1733975453350 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-common-0.10.6-h86ecc28_0.conda - sha256: 57288ec5df35781bea8fc6a8c9099cad6695b747784fc1b8862a0f9e5b3bf5ab - md5: fef806a0f6de853670c746bbece01966 + license: bzip2-1.0.6 + license_family: BSD + size: 252783 + timestamp: 1720974456583 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h68df207_7.conda + sha256: 2258b0b33e1cb3a9852d47557984abb6e7ea58e3d7f92706ec1f8e879290c4cb + md5: 56398c28220513b9ea13d7b450acfb20 depends: - - libgcc >=13 + - libgcc-ng >=12 arch: aarch64 platform: linux - license: Apache-2.0 - license_family: Apache - size: 259031 - timestamp: 1733975520465 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.10.6-h5505292_0.conda - sha256: 3bde135c8e74987c0f79ecd4fa17ec9cff0d658b3090168727ca1af3815ae57a - md5: 145e5b4c9702ed279d7d68aaf096f77d + license: bzip2-1.0.6 + license_family: BSD + size: 189884 + timestamp: 1720974504976 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda + sha256: adfa71f158cbd872a36394c56c3568e6034aa55c623634b37a4836bd036e6b91 + md5: fc6948412dbbbe9a4c9ddbbcfe0a79ab depends: - __osx >=11.0 arch: arm64 platform: osx - license: Apache-2.0 - license_family: Apache - size: 221863 - timestamp: 1733975576886 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.3.0-h4e1184b_5.conda - sha256: 62ca84da83585e7814a40240a1e750b1563b2680b032a471464eccc001c3309b - md5: 3f4c1197462a6df2be6dc8241828fe93 - depends: - - __glibc >=2.17,<3.0.a0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - libgcc >=13 + license: bzip2-1.0.6 + license_family: BSD + size: 122909 + timestamp: 1720974522888 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2025.1.31-hbcca054_0.conda + sha256: bf832198976d559ab44d6cdb315642655547e26d826e34da67cbee6624cda189 + md5: 19f3a56f68d2fd06c516076bff482c52 arch: x86_64 platform: linux - license: Apache-2.0 - license_family: Apache - size: 19086 - timestamp: 1733991637424 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-compression-0.3.0-h0f0193d_5.conda - sha256: 3f05d19f68ef800f33d44ea2a4211003124076516c8469abc7d432236344df53 - md5: 3a1421d12435df5b4c412cc4c8fac64d - depends: - - aws-c-common >=0.10.6,<0.10.7.0a0 - - libgcc >=13 + license: ISC + size: 158144 + timestamp: 1738298224464 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2025.1.31-hcefe29a_0.conda + sha256: 66c6408ee461593cfdb2d78d82e6ed74d04a04ccb51df3ef8a5f35148c9c6eec + md5: 462cb166cd2e26a396f856510a3aff67 arch: aarch64 platform: linux - license: Apache-2.0 - license_family: Apache - size: 19740 - timestamp: 1733991625201 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-compression-0.3.0-hc8a0bd2_5.conda - sha256: 47b2813f652ce7e64ac442f771b2a5f7d4af4ad0d07ff51f6075ea80ed2e3f09 - md5: a8b6c17732d14ed49d0e9b59c43186bc - depends: - - __osx >=11.0 - - aws-c-common >=0.10.6,<0.10.7.0a0 + license: ISC + size: 158290 + timestamp: 1738299057652 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2025.1.31-hf0a4a13_0.conda + sha256: 7e12816618173fe70f5c638b72adf4bfd4ddabf27794369bb17871c5bb75b9f9 + md5: 3569d6a9141adc64d2fe4797f3289e06 arch: arm64 platform: osx - license: Apache-2.0 - license_family: Apache - size: 18068 - timestamp: 1733991869211 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.0-h7959bf6_11.conda - sha256: 10d7240c7db0c941fb1a59c4f8ea6689a434b03309ee7b766fa15a809c553c02 - md5: 9b3fb60fe57925a92f399bc3fc42eccf + license: ISC + size: 158425 + timestamp: 1738298167688 +- conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 + noarch: python + sha256: 561e6660f26c35d137ee150187d89767c988413c978e1b712d53f27ddf70ea17 + md5: 9b347a7ec10940d3f7941ff6c460b551 + depends: + - cached_property >=1.5.2,<1.5.3.0a0 + license: BSD-3-Clause + license_family: BSD + size: 4134 + timestamp: 1615209571450 +- conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 + sha256: 6dbf7a5070cc43d90a1e4c2ec0c541c69d8e30a0e25f50ce9f6e4a432e42c5d7 + md5: 576d629e47797577ab0f1b351297ef4a + depends: + - python >=3.6 + license: BSD-3-Clause + license_family: BSD + size: 11065 + timestamp: 1615209567874 +- conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.1.31-pyhd8ed1ab_0.conda + sha256: 42a78446da06a2568cb13e69be3355169fbd0ea424b00fc80b7d840f5baaacf3 + md5: c207fa5ac7ea99b149344385a9c0880d + depends: + - python >=3.9 + license: ISC + size: 162721 + timestamp: 1739515973129 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py312h06ac9bb_0.conda + sha256: cba6ea83c4b0b4f5b5dc59cb19830519b28f95d7ebef7c9c5cf1c14843621457 + md5: a861504bbea4161a9170b85d4d2be840 depends: - __glibc >=2.17,<3.0.a0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - aws-c-io >=0.15.3,<0.15.4.0a0 - - aws-checksums >=0.2.2,<0.2.3.0a0 + - libffi >=3.4,<4.0a0 - libgcc >=13 - - libstdcxx >=13 + - pycparser + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 arch: x86_64 platform: linux - license: Apache-2.0 - license_family: Apache - size: 54003 - timestamp: 1734024480949 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-event-stream-0.5.0-hcbd8f92_11.conda - sha256: 79aa363c71c891a27496c0498f8d498b2ddc87b3ccb3b6c9da5b50b05936ebb8 - md5: e0772c59af4243a9b2565baa5d79e5b6 - depends: - - aws-c-common >=0.10.6,<0.10.7.0a0 - - aws-c-io >=0.15.3,<0.15.4.0a0 - - aws-checksums >=0.2.2,<0.2.3.0a0 + license: MIT + license_family: MIT + size: 294403 + timestamp: 1725560714366 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cffi-1.17.1-py312hac81daf_0.conda + sha256: 1162e3ca039e7ca7c0e78f0a020ed1bde968096841b663e3f393c966eb82f0f0 + md5: 1a256e5581b1099e9295cb84d53db3ea + depends: + - libffi >=3.4,<4.0a0 - libgcc >=13 - - libstdcxx >=13 + - pycparser + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 arch: aarch64 platform: linux - license: Apache-2.0 - license_family: Apache - size: 55207 - timestamp: 1734024546663 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.0-h54f970a_11.conda - sha256: f0667935f4e0d4c25e0e51da035640310b5ceeb8f723156734439bde8b848d7d - md5: ba41238f8e653998d7d2f42e3a8db054 + license: MIT + license_family: MIT + size: 312892 + timestamp: 1725561779888 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.1-py312h0fad829_0.conda + sha256: 8d91a0d01358b5c3f20297c6c536c5d24ccd3e0c2ddd37f9d0593d0f0070226f + md5: 19a5456f72f505881ba493979777b24e depends: - __osx >=11.0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - aws-c-io >=0.15.3,<0.15.4.0a0 - - aws-checksums >=0.2.2,<0.2.3.0a0 - - libcxx >=18 + - libffi >=3.4,<4.0a0 + - pycparser + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 arch: arm64 platform: osx - license: Apache-2.0 - license_family: Apache - size: 47078 - timestamp: 1734024749727 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.2-hefd7a92_4.conda - sha256: 4a330206bd51148f6c13ca0b7a4db40f29a46f090642ebacdeb88b8a4abd7f99 - md5: 5ce4df662d32d3123ea8da15571b6f51 - depends: - - __glibc >=2.17,<3.0.a0 - - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - aws-c-compression >=0.3.0,<0.3.1.0a0 - - aws-c-io >=0.15.3,<0.15.4.0a0 - - libgcc >=13 - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 197731 - timestamp: 1734008380764 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.2-h3df160d_4.conda - sha256: 3a1d2d332945306be9d49e569b95e4cc172d825f10e88715513a172f28ebb59e - md5: 28f00aa7fd9556c4c461328cf146c20b - depends: - - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - aws-c-compression >=0.3.0,<0.3.1.0a0 - - aws-c-io >=0.15.3,<0.15.4.0a0 - - libgcc >=13 - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 190586 - timestamp: 1734008442362 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.2-h96aa502_4.conda - sha256: 22e4737c8a885995b7c1ae1d79c1f6e78d489e16ec079615980fdde067aeaf76 - md5: 495c93a4f08b17deb3c04894512330e6 - depends: - - __osx >=11.0 - - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - aws-c-compression >=0.3.0,<0.3.1.0a0 - - aws-c-io >=0.15.3,<0.15.4.0a0 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: Apache - size: 152983 - timestamp: 1734008451473 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-h173a860_6.conda - sha256: 335d822eead0a097ffd23677a288e1f18ea22f47a92d4f877419debb93af0e81 - md5: 9a063178f1af0a898526cc24ba7be486 - depends: - - __glibc >=2.17,<3.0.a0 - - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - libgcc >=13 - - s2n >=1.5.11,<1.5.12.0a0 - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 157263 - timestamp: 1737207617838 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-hfd5ba81_6.conda - sha256: d8adfde05cee11057d99c3802e84b2300430a7c7c3c9936165d1d4b25ef59d91 - md5: 4e6771b45cb2b035c62d023dbf0dc000 - depends: - - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - libgcc >=13 - - s2n >=1.5.11,<1.5.12.0a0 - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 160933 - timestamp: 1737207637279 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-haba67d1_6.conda - sha256: 73722dd175af78b6cbfa033066f0933351f5382a1a737f6c6d9b8cfa84022161 - md5: d02e8f40ff69562903e70a1c6c48b009 - depends: - - __osx >=11.0 - - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: Apache - size: 136048 - timestamp: 1737207681224 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h11f4f37_12.conda - sha256: 512d3969426152d9d5fd886e27b13706122dc3fa90eb08c37b0d51a33d7bb14a - md5: 96c3e0221fa2da97619ee82faa341a73 - depends: - - __glibc >=2.17,<3.0.a0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - aws-c-http >=0.9.2,<0.9.3.0a0 - - aws-c-io >=0.15.3,<0.15.4.0a0 - - libgcc >=13 - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 194672 - timestamp: 1734025626798 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h5f50e26_12.conda - sha256: ffeb9100cc8fd4093e1a6fdfd938bc4a396dd77480b7fb17aa42855a4d5e2c70 - md5: 031ca33115d4b1eeb43f435d6215778c - depends: - - aws-c-common >=0.10.6,<0.10.7.0a0 - - aws-c-http >=0.9.2,<0.9.3.0a0 - - aws-c-io >=0.15.3,<0.15.4.0a0 - - libgcc >=13 - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 169516 - timestamp: 1734025167885 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h24f418c_12.conda - sha256: 96575ea1dd2a9ea94763882e40a66dcbff9c41f702bf37c9514c4c719b3c11dd - md5: c072045a6206f88015d02fcba1705ea1 - depends: - - __osx >=11.0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - aws-c-http >=0.9.2,<0.9.3.0a0 - - aws-c-io >=0.15.3,<0.15.4.0a0 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: Apache - size: 134371 - timestamp: 1734025379525 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.9-he1b24dc_1.conda - sha256: 15fbdedc56850f8be5be7a5bcaea1af09c97590e631c024ae089737fc932fc42 - md5: caafc32928a5f7f3f7ef67d287689144 - depends: - - __glibc >=2.17,<3.0.a0 - - aws-c-auth >=0.8.1,<0.8.2.0a0 - - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - aws-c-http >=0.9.2,<0.9.3.0a0 - - aws-c-io >=0.15.3,<0.15.4.0a0 - - aws-checksums >=0.2.2,<0.2.3.0a0 - - libgcc >=13 - - openssl >=3.4.0,<4.0a0 - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 115413 - timestamp: 1737558687616 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.9-h05b070f_1.conda - sha256: 9e7857fbc33eddc291fa09890ce468a92485d3e3e127bc00bbd1803e34121f84 - md5: e0a2869195f069db88b8932f5b00bee5 - depends: - - aws-c-auth >=0.8.1,<0.8.2.0a0 - - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - aws-c-http >=0.9.2,<0.9.3.0a0 - - aws-c-io >=0.15.3,<0.15.4.0a0 - - aws-checksums >=0.2.2,<0.2.3.0a0 - - libgcc >=13 - - openssl >=3.4.0,<4.0a0 - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 117875 - timestamp: 1737558720047 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.9-hf37e03c_1.conda - sha256: 92e8ca4eefcbbdf4189584c9410382884a06ed3030e5ecaac656dab8c95e6a80 - md5: de65f5e4ab5020103fe70a0eba9432a0 - depends: - - __osx >=11.0 - - aws-c-auth >=0.8.1,<0.8.2.0a0 - - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - aws-c-http >=0.9.2,<0.9.3.0a0 - - aws-c-io >=0.15.3,<0.15.4.0a0 - - aws-checksums >=0.2.2,<0.2.3.0a0 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: Apache - size: 98731 - timestamp: 1737558731831 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.2-h4e1184b_0.conda - sha256: 0424e380c435ba03b5948d02e8c958866c4eee50ed29e57f99473a5f795a4cfc - md5: dcd498d493818b776a77fbc242fbf8e4 - depends: - - __glibc >=2.17,<3.0.a0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - libgcc >=13 - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 55911 - timestamp: 1736535960724 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.2-h0f0193d_0.conda - sha256: fba38e469457764afcb94aa84d4d7788e6b5fa1554d34b05c904d2245fdd3c81 - md5: a78928881c652facde2a13ec6e776f3c - depends: - - aws-c-common >=0.10.6,<0.10.7.0a0 - - libgcc >=13 - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 58221 - timestamp: 1736536003041 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.2-hc8a0bd2_0.conda - sha256: ea4f0f1e99056293c69615f581a997d65ba7e229e296e402e0d8ef750648a5b5 - md5: e7b5498ac7b7ab921a907be38f3a8080 - depends: - - __osx >=11.0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: Apache - size: 49872 - timestamp: 1736536152332 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-h4e1184b_4.conda - sha256: 1ed9a332d06ad595694907fad2d6d801082916c27cd5076096fda4061e6d24a8 - md5: 74e8c3e4df4ceae34aa2959df4b28101 - depends: - - __glibc >=2.17,<3.0.a0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - libgcc >=13 - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 72762 - timestamp: 1733994347547 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h0f0193d_4.conda - sha256: 9f1e3635a587bcf92b61d88c7af7d24cd89c147c6d0ae58afbde08e65bcf48da - md5: 3bd35b0adab3d743f09e0252cc441d6b - depends: - - aws-c-common >=0.10.6,<0.10.7.0a0 - - libgcc >=13 - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 72154 - timestamp: 1733994384415 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-hc8a0bd2_4.conda - sha256: 215086d95e8ff1d3fcb0197ada116cc9d7db1fdae7573f5e810d20fa9215b47c - md5: e70e88a357a3749b67679c0788c5b08a - depends: - - __osx >=11.0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: Apache - size: 70186 - timestamp: 1733994496998 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.9-he0e7f3f_2.conda - sha256: c1930569713bd5231d48d885a5e3707ac917b428e8f08189d14064a2bb128adc - md5: 8a4e6fc8a3b285536202b5456a74a940 + license: MIT + license_family: MIT + size: 281206 + timestamp: 1725560813378 +- conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda + sha256: 4e0ee91b97e5de3e74567bdacea27f0139709fceca4db8adffbe24deffccb09b + md5: e83a31202d1c0a000fce3e9cf3825875 depends: - - __glibc >=2.17,<3.0.a0 - - aws-c-auth >=0.8.1,<0.8.2.0a0 - - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - - aws-c-http >=0.9.2,<0.9.3.0a0 - - aws-c-io >=0.15.3,<0.15.4.0a0 - - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - - aws-c-s3 >=0.7.9,<0.7.10.0a0 - - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 - - libgcc >=13 - - libstdcxx >=13 - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 353222 - timestamp: 1737565463079 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.9-hab3ce66_2.conda - sha256: c3884fb10e0fd9be5c13256cabcda1afa9d2fcf8878c67214d02fc344509857d - md5: 875968ebffe992b68faf2caebbf32f02 - depends: - - aws-c-auth >=0.8.1,<0.8.2.0a0 - - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - - aws-c-http >=0.9.2,<0.9.3.0a0 - - aws-c-io >=0.15.3,<0.15.4.0a0 - - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - - aws-c-s3 >=0.7.9,<0.7.10.0a0 - - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 - - libgcc >=13 - - libstdcxx >=13 - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 283812 - timestamp: 1737565480034 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.9-ha81f72f_2.conda - sha256: ed5f1d19aad53787fdebe13db4709c97eae2092536cc55d3536eba320c4286e1 - md5: c9c034d3239bf25687ca4dd985007ecd + - python >=3.9 + license: MIT + license_family: MIT + size: 47438 + timestamp: 1735929811779 +- conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda + sha256: c920d23cd1fcf565031c679adb62d848af60d6fbb0edc2d50ba475cea4f0d8ab + md5: f22f4d4970e09d68a10b922cbb0408d3 depends: - - __osx >=11.0 - - aws-c-auth >=0.8.1,<0.8.2.0a0 - - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - - aws-c-http >=0.9.2,<0.9.3.0a0 - - aws-c-io >=0.15.3,<0.15.4.0a0 - - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - - aws-c-s3 >=0.7.9,<0.7.10.0a0 - - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 - - libcxx >=18 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: Apache - size: 235976 - timestamp: 1737565563139 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.489-h4d475cb_0.conda - sha256: 08d6b7d2ed17bfcc7deb903c7751278ee434abdb27e3be0dceb561f30f030c75 - md5: b775e9f46dfa94b228a81d8e8c6d8b1d + - __unix + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 84705 + timestamp: 1734858922844 +- conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + sha256: ab29d57dc70786c1269633ba3dff20288b81664d3ff8d21af995742e2bb03287 + md5: 962b9857ee8e7018c22f2776ffa0b2d7 depends: - - __glibc >=2.17,<3.0.a0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - - aws-checksums >=0.2.2,<0.2.3.0a0 - - aws-crt-cpp >=0.29.9,<0.29.10.0a0 - - libcurl >=8.11.1,<9.0a0 - - libgcc >=13 - - libstdcxx >=13 - - libzlib >=1.3.1,<2.0a0 - - openssl >=3.4.0,<4.0a0 - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 3144364 - timestamp: 1737576036746 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.489-h88461e4_0.conda - sha256: 88353e82b053763168cddbe2f88048defc1c97b3dad0966fbe8c4fa7aa592c7e - md5: e725d8fa77a6a5f38a78c5de914a5f40 - depends: - - aws-c-common >=0.10.6,<0.10.7.0a0 - - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - - aws-checksums >=0.2.2,<0.2.3.0a0 - - aws-crt-cpp >=0.29.9,<0.29.10.0a0 - - libcurl >=8.11.1,<9.0a0 - - libgcc >=13 - - libstdcxx >=13 - - libzlib >=1.3.1,<2.0a0 - - openssl >=3.4.0,<4.0a0 - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 3015109 - timestamp: 1737575993030 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.489-h0e5014b_0.conda - sha256: d82451530ddf363d8bb31a8a7391bb9699f745e940ace91d78c0e6170deef03c - md5: 156cfb45a1bb8cffc81e59047bb34f51 + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 27011 + timestamp: 1733218222191 +- conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda + sha256: 7e87ef7c91574d9fac19faedaaee328a70f718c9b4ddadfdc0ba9ac021bd64af + md5: 74673132601ec2b7fc592755605f4c1b depends: - - __osx >=11.0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - - aws-checksums >=0.2.2,<0.2.3.0a0 - - aws-crt-cpp >=0.29.9,<0.29.10.0a0 - - libcurl >=8.11.1,<9.0a0 - - libcxx >=18 - - libzlib >=1.3.1,<2.0a0 - - openssl >=3.4.0,<4.0a0 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: Apache - size: 2874126 - timestamp: 1737577023623 -- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda - sha256: fe07debdb089a3db17f40a7f20d283d75284bb4fc269ef727b8ba6fc93f7cb5a - md5: 0a8838771cc2e985cd295e01ae83baf1 + - python >=3.9 + - traitlets >=5.3 + license: BSD-3-Clause + license_family: BSD + size: 12103 + timestamp: 1733503053903 +- conda: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.12-py312h2ec8cdc_0.conda + sha256: f88c3a7ff384d1726aea2cb2342cf67f1502915391860335c40ab81d7e381e30 + md5: 6be6dcb4bffd1d456bdad28341d507bd depends: - __glibc >=2.17,<3.0.a0 - - libcurl >=8.10.1,<9.0a0 - libgcc >=13 - libstdcxx >=13 - - openssl >=3.3.2,<4.0a0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 arch: x86_64 platform: linux license: MIT license_family: MIT - size: 345117 - timestamp: 1728053909574 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-core-cpp-1.14.0-h1887c18_0.conda - sha256: 8967b3ccee4d74e61f6ec82dd8efb9deb854ee7ba012dfe767b7a92e0ac77724 - md5: e0c3a906a41be769f0ae20ca3e31cfc0 + size: 2646757 + timestamp: 1737269937348 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/debugpy-1.8.12-py312h6f74592_0.conda + sha256: ae9ce5415b25c74bea70224822b3c3b12d7d670dbf1f2d63b6995575e05af38b + md5: f54f7b0bad14e9bbba256a21238d2630 depends: - - libcurl >=8.10.1,<9.0a0 - libgcc >=13 - libstdcxx >=13 - - openssl >=3.3.2,<4.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 arch: aarch64 platform: linux license: MIT license_family: MIT - size: 338650 - timestamp: 1728055589907 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.14.0-hd50102c_0.conda - sha256: f5b91329ed59ffc0be8747784c6e4cc7e56250c54032883a83bc11808ef6a87e - md5: f093a11dcf3cdcca010b20a818fcc6dc + size: 2583530 + timestamp: 1737269969753 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/debugpy-1.8.12-py312hd8f9ff3_0.conda + sha256: 0ba7ba5f5529bd9cf103d4684e2e9af8a7791a8732c3a0ac689f2d6f2223feca + md5: 92ebf61ce320b7060ead08666dbc9369 depends: - __osx >=11.0 - - libcurl >=8.10.1,<9.0a0 - - libcxx >=17 - - openssl >=3.3.2,<4.0a0 + - libcxx >=18 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 arch: arm64 platform: osx license: MIT license_family: MIT - size: 294299 - timestamp: 1728054014060 -- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.10.0-h113e628_0.conda - sha256: 286b31616c191486626cb49e9ceb5920d29394b9e913c23adb7eb637629ba4de - md5: 73f73f60854f325a55f1d31459f2ab73 + size: 2564438 + timestamp: 1737270030625 +- conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda + sha256: c17c6b9937c08ad63cb20a26f403a3234088e57d4455600974a0ce865cb14017 + md5: 9ce473d1d1be1cc3810856a48b3fab32 depends: - - __glibc >=2.17,<3.0.a0 - - azure-core-cpp >=1.14.0,<1.14.1.0a0 - - libgcc >=13 - - libstdcxx >=13 - - openssl >=3.3.2,<4.0a0 - arch: x86_64 - platform: linux - license: MIT - license_family: MIT - size: 232351 - timestamp: 1728486729511 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-identity-cpp-1.10.0-h47b0b28_0.conda - sha256: 1c72423b9beba167d2f01b80dc204da77240a8266f1edb3d89510c852b300d69 - md5: 94e73a7877743a85c57091d8afab2348 + - python >=3.9 + license: BSD-2-Clause + license_family: BSD + size: 14129 + timestamp: 1740385067843 +- conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 + sha256: 9717a059677553562a8f38ff07f3b9f61727bd614f505658b0a5ecbcf8df89be + md5: 961b3a227b437d82ad7054484cfa71b2 depends: - - azure-core-cpp >=1.14.0,<1.14.1.0a0 - - libgcc >=13 - - libstdcxx >=13 - - openssl >=3.3.2,<4.0a0 - arch: aarch64 - platform: linux - license: MIT - license_family: MIT - size: 217132 - timestamp: 1728488096615 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.10.0-hc602bab_0.conda - sha256: bde446b916fff5150606f8ed3e6058ffc55a3aa72381e46f1ab346590b1ae40a - md5: d7b71593a937459f2d4b67e1a4727dc2 + - python >=3.6 + license: PSF-2.0 + license_family: PSF + size: 24062 + timestamp: 1615232388757 +- conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda + sha256: cbde2c64ec317118fc06b223c5fd87c8a680255e7348dd60e7b292d2e103e701 + md5: a16662747cdeb9abbac74d0057cc976e depends: - - __osx >=11.0 - - azure-core-cpp >=1.14.0,<1.14.1.0a0 - - libcxx >=17 - - openssl >=3.3.2,<4.0a0 - arch: arm64 - platform: osx - license: MIT - license_family: MIT - size: 166907 - timestamp: 1728486882502 -- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.13.0-h3cf044e_1.conda - sha256: 2606260e5379eed255bcdc6adc39b93fb31477337bcd911c121fc43cd29bf394 - md5: 7eb66060455c7a47d9dcdbfa9f46579b + - python >=3.9 + license: MIT and PSF-2.0 + size: 20486 + timestamp: 1733208916977 +- conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.1.0-pyhd8ed1ab_1.conda + sha256: 28d25ea375ebab4bf7479228f8430db20986187b04999136ff5c722ebd32eb60 + md5: ef8b5fca76806159fc25b4f48d8737eb depends: - - __glibc >=2.17,<3.0.a0 - - azure-core-cpp >=1.14.0,<1.14.1.0a0 - - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 - - libgcc >=13 - - libstdcxx >=13 - arch: x86_64 - platform: linux + - python >=3.9 license: MIT license_family: MIT - size: 549342 - timestamp: 1728578123088 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-blobs-cpp-12.13.0-h185ecfd_1.conda - sha256: 280ec70009a92626054f58e45b168fce393e71a9710587488bd8401628cda481 - md5: 221e1e5ecb2643e113f32b3229d5ba33 - depends: - - azure-core-cpp >=1.14.0,<1.14.1.0a0 - - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 - - libgcc >=13 - - libstdcxx >=13 - arch: aarch64 - platform: linux - license: MIT - license_family: MIT - size: 502934 - timestamp: 1728580241002 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-blobs-cpp-12.13.0-h7585a09_1.conda - sha256: 08d52d130addc0fb55d5ba10d9fa483e39be25d69bac7f4c676c2c3069207590 - md5: 704238ef05d46144dae2e6b5853df8bc + size: 28348 + timestamp: 1733569440265 +- conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_1.conda + sha256: 2509992ec2fd38ab27c7cdb42cf6cadc566a1cc0d1021a2673475d9fa87c6276 + md5: d3549fd50d450b6d9e7dddff25dd2110 depends: - - __osx >=11.0 - - azure-core-cpp >=1.14.0,<1.14.1.0a0 - - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 - - libcxx >=17 - arch: arm64 - platform: osx - license: MIT - license_family: MIT - size: 438636 - timestamp: 1728578216193 -- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-common-cpp-12.8.0-h736e048_1.conda - sha256: 273475f002b091b66ce7366da04bf164c3732c03f8692ab2ee2d23335b6a82ba - md5: 13de36be8de3ae3f05ba127631599213 + - cached-property >=1.3.0 + - python >=3.9,<4 + license: MPL-2.0 + license_family: MOZILLA + size: 16705 + timestamp: 1733327494780 +- conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda + sha256: 622516185a7c740d5c7f27016d0c15b45782c1501e5611deec63fd70344ce7c8 + md5: 7ee49e89531c0dcbba9466f6d115d585 depends: - - __glibc >=2.17,<3.0.a0 - - azure-core-cpp >=1.14.0,<1.14.1.0a0 - - libgcc >=13 - - libstdcxx >=13 - - libxml2 >=2.12.7,<3.0a0 - - openssl >=3.3.2,<4.0a0 - arch: x86_64 - platform: linux + - python >=3.9 + - typing_extensions license: MIT license_family: MIT - size: 149312 - timestamp: 1728563338704 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-common-cpp-12.8.0-h1b94036_1.conda - sha256: 146e76aac169e3dbdce5d3b142b7930ac643795c765e7655d1989905ec7d3231 - md5: 793b1080ab2d958980f137a8643cd6e8 + size: 51846 + timestamp: 1733327599467 +- conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda + sha256: 0aa1cdc67a9fe75ea95b5644b734a756200d6ec9d0dff66530aec3d1c1e9df75 + md5: b4754fb1bdcb70c8fd54f918301582c6 depends: - - azure-core-cpp >=1.14.0,<1.14.1.0a0 - - libgcc >=13 - - libstdcxx >=13 - - libxml2 >=2.12.7,<3.0a0 - - openssl >=3.3.2,<4.0a0 - arch: aarch64 - platform: linux + - hpack >=4.1,<5 + - hyperframe >=6.1,<7 + - python >=3.9 license: MIT license_family: MIT - size: 140832 - timestamp: 1728565334900 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-common-cpp-12.8.0-h9ca1f76_1.conda - sha256: 77ab04e8fe5636a2de9c718f72a43645f7502cd208868c8a91ffba385547d585 - md5: 7a187cd7b1445afc80253bb186a607cc + size: 53888 + timestamp: 1738578623567 +- conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda + sha256: 6ad78a180576c706aabeb5b4c8ceb97c0cb25f1e112d76495bff23e3779948ba + md5: 0a802cb9888dd14eeefc611f05c40b6e depends: - - __osx >=11.0 - - azure-core-cpp >=1.14.0,<1.14.1.0a0 - - libcxx >=17 - - libxml2 >=2.12.7,<3.0a0 - - openssl >=3.3.2,<4.0a0 - arch: arm64 - platform: osx + - python >=3.9 license: MIT license_family: MIT - size: 121278 - timestamp: 1728563418777 -- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-files-datalake-cpp-12.12.0-ha633028_1.conda - sha256: 5371e4f3f920933bb89b926a85a67f24388227419abd6e99f6086481e5e8d5f2 - md5: 7c1980f89dd41b097549782121a73490 + size: 30731 + timestamp: 1737618390337 +- conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda + sha256: c84d012a245171f3ed666a8bf9319580c269b7843ffa79f26468842da3abd5df + md5: 2ca8e6dbc86525c8b95e3c0ffa26442e depends: - - __glibc >=2.17,<3.0.a0 - - azure-core-cpp >=1.14.0,<1.14.1.0a0 - - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 - - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 - - libgcc >=13 - - libstdcxx >=13 - arch: x86_64 - platform: linux - license: MIT - license_family: MIT - size: 287366 - timestamp: 1728729530295 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-files-datalake-cpp-12.12.0-h37d6d07_1.conda - sha256: 4079c617a75682e49bae63670d58fd6078ccfbbe55ca1f994acab3a74ab6bbcc - md5: b724f3b4b7f4e9b36c58cbe3ed8610a2 - depends: - - azure-core-cpp >=1.14.0,<1.14.1.0a0 - - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 - - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 - - libgcc >=13 - - libstdcxx >=13 - arch: aarch64 - platform: linux - license: MIT - license_family: MIT - size: 260547 - timestamp: 1728730924071 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-files-datalake-cpp-12.12.0-hcdd55da_1.conda - sha256: f48523f8aa0b5b80f45a92f0556b388dd96f44ac2dc2f44a01d08c1822eec97d - md5: c49fbc5233fcbaa86391162ff1adef38 + - python >=3.8 + - h11 >=0.13,<0.15 + - h2 >=3,<5 + - sniffio 1.* + - anyio >=3.0,<5.0 + - certifi + license: BSD-3-Clause + license_family: BSD + size: 48959 + timestamp: 1731707562362 +- conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda + sha256: cd0f1de3697b252df95f98383e9edb1d00386bfdd03fdf607fa42fe5fcb09950 + md5: d6989ead454181f4f9bc987d3dc4e285 depends: - - __osx >=11.0 - - azure-core-cpp >=1.14.0,<1.14.1.0a0 - - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 - - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 - - libcxx >=17 - arch: arm64 - platform: osx + - anyio + - certifi + - httpcore 1.* + - idna + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 63082 + timestamp: 1733663449209 +- conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda + sha256: 77af6f5fe8b62ca07d09ac60127a30d9069fdc3c68d6b256754d0ffb1f7779f8 + md5: 8e6923fc12f1fe8f8c4e5c9f343256ac + depends: + - python >=3.9 license: MIT license_family: MIT - size: 196032 - timestamp: 1728729672889 -- conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.16.0-pyhd8ed1ab_1.conda - sha256: f6205d3a62e87447e06e98d911559be0208d824976d77ab092796c9176611fcb - md5: 3e23f7db93ec14c80525257d8affac28 + size: 17397 + timestamp: 1737618427549 +- conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda + sha256: d7a472c9fd479e2e8dcb83fb8d433fce971ea369d704ece380e876f9c3494e87 + md5: 39a4f67be3286c86d696df570b1201b7 depends: - python >=3.9 - - pytz >=2015.7 license: BSD-3-Clause license_family: BSD - size: 6551057 - timestamp: 1733236466015 -- conda: https://conda.anaconda.org/conda-forge/noarch/backoff-2.2.1-pyhd8ed1ab_1.conda - sha256: f334115c6b0c6c2cd0d28595365f205ec7eaa60bcc5ff91a75d7245f728be820 - md5: a38b801f2bcc12af80c2e02a9e4ce7d9 + size: 49765 + timestamp: 1733211921194 +- conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + sha256: 598951ebdb23e25e4cec4bbff0ae369cec65ead80b50bc08b441d8e54de5cf03 + md5: f4b39bf00c69f56ac01e020ebfac066c depends: - python >=3.9 - license: MIT - license_family: MIT - size: 18816 - timestamp: 1733771192649 -- conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.12.3-pyha770c72_1.conda - sha256: fca842ab7be052eea1037ebee17ac25cc79c626382dd2187b5c6e007b9d9f65f - md5: d48f7e9fdec44baf6d1da416fe402b04 + - zipp >=0.5 + license: Apache-2.0 + license_family: APACHE + size: 29141 + timestamp: 1737420302391 +- conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda + sha256: acc1d991837c0afb67c75b77fdc72b4bf022aac71fedd8b9ea45918ac9b08a80 + md5: c85c76dc67d75619a92f51dfbce06992 depends: - python >=3.9 - - soupsieve >=1.2 + - zipp >=3.1.0 + constrains: + - importlib-resources >=6.5.2,<6.5.3.0a0 + license: Apache-2.0 + license_family: APACHE + size: 33781 + timestamp: 1736252433366 +- conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh3099207_0.conda + sha256: 33cfd339bb4efac56edf93474b37ddc049e08b1b4930cf036c893cc1f5a1f32a + md5: b40131ab6a36ac2c09b7c57d4d3fbf99 + depends: + - __linux + - comm >=0.1.1 + - debugpy >=1.6.5 + - ipython >=7.23.1 + - jupyter_client >=6.1.12 + - jupyter_core >=4.12,!=5.0.* + - matplotlib-inline >=0.1 + - nest-asyncio + - packaging + - psutil + - python >=3.8 + - pyzmq >=24 + - tornado >=6.1 + - traitlets >=5.4.0 + license: BSD-3-Clause + license_family: BSD + size: 119084 + timestamp: 1719845605084 +- conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh57ce528_0.conda + sha256: 072534d4d379225b2c3a4e38bc7730b65ae171ac7f0c2d401141043336e97980 + md5: 9eb15d654daa0ef5a98802f586bb4ffc + depends: + - __osx + - appnope + - comm >=0.1.1 + - debugpy >=1.6.5 + - ipython >=7.23.1 + - jupyter_client >=6.1.12 + - jupyter_core >=4.12,!=5.0.* + - matplotlib-inline >=0.1 + - nest-asyncio + - packaging + - psutil + - python >=3.8 + - pyzmq >=24 + - tornado >=6.1 + - traitlets >=5.4.0 + license: BSD-3-Clause + license_family: BSD + size: 119568 + timestamp: 1719845667420 +- conda: https://conda.anaconda.org/conda-forge/noarch/ipython-8.32.0-pyh907856f_0.conda + sha256: b1b940cfe85d5f0aaed83ef8c9f07ee80daa68acb05feeb5142d620472b01e0d + md5: 9de86472b8f207fb098c69daaad50e67 + depends: + - __unix + - pexpect >4.3 + - python >=3.10 + - decorator + - exceptiongroup + - jedi >=0.16 + - matplotlib-inline + - pickleshare + - prompt-toolkit >=3.0.41,<3.1.0 + - pygments >=2.4.0 + - stack_data + - traitlets >=5.13.0 + - typing_extensions >=4.6 + - python + license: BSD-3-Clause + license_family: BSD + size: 636676 + timestamp: 1738421264236 +- conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda + sha256: 08e838d29c134a7684bca0468401d26840f41c92267c4126d7b43a6b533b0aed + md5: 0b0154421989637d424ccf0f104be51a + depends: + - arrow >=0.15.0 + - python >=3.9 license: MIT license_family: MIT - size: 118042 - timestamp: 1733230951790 -- conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyh29332c3_4.conda - sha256: a05971bb80cca50ce9977aad3f7fc053e54ea7d5321523efc7b9a6e12901d3cd - md5: f0b4c8e370446ef89797608d60a564b3 + size: 19832 + timestamp: 1733493720346 +- conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda + sha256: 92c4d217e2dc68983f724aa983cca5464dcb929c566627b26a2511159667dba8 + md5: a4f4c5dc9b80bc50e0d3dc4e6e8f1bd9 depends: + - parso >=0.8.3,<0.9.0 - python >=3.9 - - webencodings - - python - constrains: - - tinycss >=1.1.0,<1.5 license: Apache-2.0 AND MIT - size: 141405 - timestamp: 1737382993425 -- conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.2.0-h82add2a_4.conda - sha256: 0aba699344275b3972bd751f9403316edea2ceb942db12f9f493b63c74774a46 - md5: a30e9406c873940383555af4c873220d + size: 843646 + timestamp: 1733300981994 +- conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.5-pyhd8ed1ab_0.conda + sha256: 98977694b9ecaa3218662f843425f39501f81973c450f995eec68f1803ed71c3 + md5: 2752a6ed44105bfb18c9bef1177d9dcd depends: - - bleach ==6.2.0 pyh29332c3_4 - - tinycss2 - license: Apache-2.0 AND MIT - size: 4213 - timestamp: 1737382993425 -- conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py312h2ec8cdc_2.conda - sha256: f2a59ccd20b4816dea9a2a5cb917eb69728271dbf1aeab4e1b7e609330a50b6f - md5: b0b867af6fc74b2a0aa206da29c0f3cf + - markupsafe >=2.0 + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 112561 + timestamp: 1734824044952 +- conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.10.0-pyhd8ed1ab_1.conda + sha256: 61bca2dac194c44603446944745566d7b4e55407280f6f6cea8bbe4de26b558f + md5: cd170f82d8e5b355dfdea6adab23e4af + depends: + - python >=3.9 + license: Apache-2.0 + license_family: APACHE + size: 31573 + timestamp: 1733272196759 +- conda: https://conda.anaconda.org/conda-forge/linux-64/jsonpointer-3.0.0-py312h7900ff3_1.conda + sha256: 76ccb7bffc7761d1d3133ffbe1f7f1710a0f0d9aaa9f7ea522652e799f3601f4 + md5: 6b51f7459ea4073eeb5057207e2e1e3d depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libstdcxx >=13 - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 - constrains: - - libbrotlicommon 1.1.0 hb9d3cd8_2 arch: x86_64 platform: linux - license: MIT - license_family: MIT - size: 349867 - timestamp: 1725267732089 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/brotli-python-1.1.0-py312h6f74592_2.conda - sha256: 9736bf660a0e4260c68f81d2635b51067f817813e6490ac9e8abd9a835dcbf6d - md5: e1e9727063057168d95f27a032acd0a4 - depends: - - libgcc >=13 - - libstdcxx >=13 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - constrains: - - libbrotlicommon 1.1.0 h86ecc28_2 - arch: aarch64 - platform: linux - license: MIT - license_family: MIT - size: 356878 - timestamp: 1725267878508 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py312hde4cb15_2.conda - sha256: 254b411fa78ccc226f42daf606772972466f93e9bc6895eabb4cfda22f5178af - md5: a83c2ef76ccb11bc2349f4f17696b15d + license: BSD-3-Clause + license_family: BSD + size: 17277 + timestamp: 1725303032027 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/jsonpointer-3.0.0-py312h996f985_1.conda + sha256: 908448e2946c8fd8e28f5c7de4ed52548d227fae2994febf1050179b2590dbdc + md5: 2257c5f33024274faadf6a88a7d62807 depends: - - __osx >=11.0 - - libcxx >=17 - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 - constrains: - - libbrotlicommon 1.1.0 hd74edd7_2 - arch: arm64 - platform: osx - license: MIT - license_family: MIT - size: 339360 - timestamp: 1725268143995 -- conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda - sha256: 5ced96500d945fb286c9c838e54fa759aa04a7129c59800f0846b4335cee770d - md5: 62ee74e96c5ebb0af99386de58cf9553 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc-ng >=12 - arch: x86_64 - platform: linux - license: bzip2-1.0.6 - license_family: BSD - size: 252783 - timestamp: 1720974456583 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h68df207_7.conda - sha256: 2258b0b33e1cb3a9852d47557984abb6e7ea58e3d7f92706ec1f8e879290c4cb - md5: 56398c28220513b9ea13d7b450acfb20 - depends: - - libgcc-ng >=12 arch: aarch64 platform: linux - license: bzip2-1.0.6 - license_family: BSD - size: 189884 - timestamp: 1720974504976 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda - sha256: adfa71f158cbd872a36394c56c3568e6034aa55c623634b37a4836bd036e6b91 - md5: fc6948412dbbbe9a4c9ddbbcfe0a79ab - depends: - - __osx >=11.0 - arch: arm64 - platform: osx - license: bzip2-1.0.6 + license: BSD-3-Clause license_family: BSD - size: 122909 - timestamp: 1720974522888 -- conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.4-hb9d3cd8_0.conda - sha256: d4f28d87b6339b94f74762c0076e29c8ef8ddfff51a564a92da2843573c18320 - md5: e2775acf57efd5af15b8e3d1d74d72d3 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - arch: x86_64 - platform: linux - license: MIT - license_family: MIT - size: 206085 - timestamp: 1734208189009 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/c-ares-1.34.4-h86ecc28_0.conda - sha256: 1187a41d4bb2afe02cb18690682edc98d1e9f5e0ccda638d8704a75ea1875bbe - md5: 356da36f35d36dcba16e43f1589d4e39 - depends: - - libgcc >=13 - arch: aarch64 - platform: linux - license: MIT - license_family: MIT - size: 215979 - timestamp: 1734208193181 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.4-h5505292_0.conda - sha256: 09c0c8476e50b2955f474a4a1c17c4c047dd52993b5366b6ea8e968e583b921f - md5: c1c999a38a4303b29d75c636eaa13cf9 + size: 17821 + timestamp: 1725303138276 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/jsonpointer-3.0.0-py312h81bd7bf_1.conda + sha256: f6fb3734e967d1cd0cde32844ee952809f6c0a49895da7ec1c8cfdf97739b947 + md5: 80f403c03290e1662be03e026fb5f8ab depends: - - __osx >=11.0 - arch: arm64 - platform: osx - license: MIT - license_family: MIT - size: 179496 - timestamp: 1734208291879 -- conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2025.1.31-hbcca054_0.conda - sha256: bf832198976d559ab44d6cdb315642655547e26d826e34da67cbee6624cda189 - md5: 19f3a56f68d2fd06c516076bff482c52 - arch: x86_64 - platform: linux - license: ISC - size: 158144 - timestamp: 1738298224464 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2025.1.31-hcefe29a_0.conda - sha256: 66c6408ee461593cfdb2d78d82e6ed74d04a04ccb51df3ef8a5f35148c9c6eec - md5: 462cb166cd2e26a396f856510a3aff67 - arch: aarch64 - platform: linux - license: ISC - size: 158290 - timestamp: 1738299057652 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2025.1.31-hf0a4a13_0.conda - sha256: 7e12816618173fe70f5c638b72adf4bfd4ddabf27794369bb17871c5bb75b9f9 - md5: 3569d6a9141adc64d2fe4797f3289e06 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 arch: arm64 platform: osx - license: ISC - size: 158425 - timestamp: 1738298167688 -- conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - noarch: python - sha256: 561e6660f26c35d137ee150187d89767c988413c978e1b712d53f27ddf70ea17 - md5: 9b347a7ec10940d3f7941ff6c460b551 - depends: - - cached_property >=1.5.2,<1.5.3.0a0 - license: BSD-3-Clause - license_family: BSD - size: 4134 - timestamp: 1615209571450 -- conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - sha256: 6dbf7a5070cc43d90a1e4c2ec0c541c69d8e30a0e25f50ce9f6e4a432e42c5d7 - md5: 576d629e47797577ab0f1b351297ef4a - depends: - - python >=3.6 license: BSD-3-Clause license_family: BSD - size: 11065 - timestamp: 1615209567874 -- conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.12.14-pyhd8ed1ab_0.conda - sha256: 048c16a9cbcb1fbad02083414d3bc7c1d0eea4b39aee6aa6bf8d1d5089ca8bad - md5: 6feb87357ecd66733be3279f16a8c400 + size: 17865 + timestamp: 1725303130815 +- conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_1.conda + sha256: be992a99e589146f229c58fe5083e0b60551d774511c494f91fe011931bd7893 + md5: a3cead9264b331b32fe8f0aabc967522 depends: + - attrs >=22.2.0 + - importlib_resources >=1.4.0 + - jsonschema-specifications >=2023.03.6 + - pkgutil-resolve-name >=1.3.10 - python >=3.9 - license: ISC - size: 161642 - timestamp: 1734380604767 -- conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py312h06ac9bb_0.conda - sha256: cba6ea83c4b0b4f5b5dc59cb19830519b28f95d7ebef7c9c5cf1c14843621457 - md5: a861504bbea4161a9170b85d4d2be840 - depends: - - __glibc >=2.17,<3.0.a0 - - libffi >=3.4,<4.0a0 - - libgcc >=13 - - pycparser - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - arch: x86_64 - platform: linux - license: MIT - license_family: MIT - size: 294403 - timestamp: 1725560714366 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cffi-1.17.1-py312hac81daf_0.conda - sha256: 1162e3ca039e7ca7c0e78f0a020ed1bde968096841b663e3f393c966eb82f0f0 - md5: 1a256e5581b1099e9295cb84d53db3ea - depends: - - libffi >=3.4,<4.0a0 - - libgcc >=13 - - pycparser - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - arch: aarch64 - platform: linux + - referencing >=0.28.4 + - rpds-py >=0.7.1 license: MIT license_family: MIT - size: 312892 - timestamp: 1725561779888 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.1-py312h0fad829_0.conda - sha256: 8d91a0d01358b5c3f20297c6c536c5d24ccd3e0c2ddd37f9d0593d0f0070226f - md5: 19a5456f72f505881ba493979777b24e + size: 74256 + timestamp: 1733472818764 +- conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2024.10.1-pyhd8ed1ab_1.conda + sha256: 37127133837444cf0e6d1a95ff5a505f8214ed4e89e8e9343284840e674c6891 + md5: 3b519bc21bc80e60b456f1e62962a766 depends: - - __osx >=11.0 - - libffi >=3.4,<4.0a0 - - pycparser - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - arch: arm64 - platform: osx + - python >=3.9 + - referencing >=0.31.0 license: MIT license_family: MIT - size: 281206 - timestamp: 1725560813378 -- conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda - sha256: 4e0ee91b97e5de3e74567bdacea27f0139709fceca4db8adffbe24deffccb09b - md5: e83a31202d1c0a000fce3e9cf3825875 + size: 16170 + timestamp: 1733493624968 +- conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_1.conda + sha256: 6e0184530011961a0802fda100ecdfd4b0eca634ed94c37e553b72e21c26627d + md5: a5b1a8065857cc4bd8b7a38d063bb728 depends: - - python >=3.9 + - fqdn + - idna + - isoduration + - jsonpointer >1.13 + - jsonschema >=4.23.0,<4.23.1.0a0 + - rfc3339-validator + - rfc3986-validator >0.1.0 + - uri-template + - webcolors >=24.6.0 license: MIT license_family: MIT - size: 47438 - timestamp: 1735929811779 -- conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda - sha256: c920d23cd1fcf565031c679adb62d848af60d6fbb0edc2d50ba475cea4f0d8ab - md5: f22f4d4970e09d68a10b922cbb0408d3 + size: 7135 + timestamp: 1733472820035 +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_1.conda + sha256: 1565c8b1423a37fca00fe0ab2a17cd8992c2ecf23e7867a1c9f6f86a9831c196 + md5: 0b4c3908e5a38ea22ebb98ee5888c768 depends: - - __unix + - importlib-metadata >=4.8.3 + - jupyter_server >=1.1.2 - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 84705 - timestamp: 1734858922844 -- conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - sha256: ab29d57dc70786c1269633ba3dff20288b81664d3ff8d21af995742e2bb03287 - md5: 962b9857ee8e7018c22f2776ffa0b2d7 + size: 55221 + timestamp: 1733493006611 +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + sha256: 19d8bd5bb2fde910ec59e081eeb59529491995ce0d653a5209366611023a0b3a + md5: 4ebae00eae9705b0c3d6d1018a81d047 depends: + - importlib-metadata >=4.8.3 + - jupyter_core >=4.12,!=5.0.* - python >=3.9 + - python-dateutil >=2.8.2 + - pyzmq >=23.0 + - tornado >=6.2 + - traitlets >=5.3 license: BSD-3-Clause license_family: BSD - size: 27011 - timestamp: 1733218222191 -- conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - sha256: 7e87ef7c91574d9fac19faedaaee328a70f718c9b4ddadfdc0ba9ac021bd64af - md5: 74673132601ec2b7fc592755605f4c1b + size: 106342 + timestamp: 1733441040958 +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + sha256: 732b1e8536bc22a5a174baa79842d79db2f4956d90293dd82dc1b3f6099bcccd + md5: 0a2980dada0dd7fd0998f0342308b1b1 depends: - - python >=3.9 + - __unix + - platformdirs >=2.5 + - python >=3.8 - traitlets >=5.3 license: BSD-3-Clause license_family: BSD - size: 12103 - timestamp: 1733503053903 -- conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda - sha256: 7e09bd083a609138b780fcc4535924cb96814d2c908a36d4c64a2ba9ee3efe7f - md5: 3e087f072ce03c43a9b60522f5d0ca2f - depends: - - aiohttp - - dill >=0.3.0,<0.3.8 - - fsspec >=2021.11.1 - - huggingface_hub >=0.14.0,<1.0.0 - - importlib-metadata - - multiprocess - - numpy >=1.17 + size: 57671 + timestamp: 1727163547058 +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda + sha256: 37e6ac3ccf7afcc730c3b93cb91a13b9ae827fd306f35dd28f958a74a14878b5 + md5: f56000b36f09ab7533877e695e4e8cb0 + depends: + - jsonschema-with-format-nongpl >=4.18.0 - packaging - - pandas - - pyarrow >=8.0.0 - - python >=3.8.0 - - python-xxhash - - pyyaml >=5.1 - - requests >=2.19.0 - - tqdm >=4.62.1 - license: Apache-2.0 - license_family: Apache - size: 347303 - timestamp: 1691593908658 -- conda: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.12-py312h2ec8cdc_0.conda - sha256: f88c3a7ff384d1726aea2cb2342cf67f1502915391860335c40ab81d7e381e30 - md5: 6be6dcb4bffd1d456bdad28341d507bd - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libstdcxx >=13 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - arch: x86_64 - platform: linux - license: MIT - license_family: MIT - size: 2646757 - timestamp: 1737269937348 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/debugpy-1.8.12-py312h6f74592_0.conda - sha256: ae9ce5415b25c74bea70224822b3c3b12d7d670dbf1f2d63b6995575e05af38b - md5: f54f7b0bad14e9bbba256a21238d2630 - depends: - - libgcc >=13 - - libstdcxx >=13 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - arch: aarch64 - platform: linux - license: MIT - license_family: MIT - size: 2583530 - timestamp: 1737269969753 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/debugpy-1.8.12-py312hd8f9ff3_0.conda - sha256: 0ba7ba5f5529bd9cf103d4684e2e9af8a7791a8732c3a0ac689f2d6f2223feca - md5: 92ebf61ce320b7060ead08666dbc9369 - depends: - - __osx >=11.0 - - libcxx >=18 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - arch: arm64 - platform: osx - license: MIT - license_family: MIT - size: 2564438 - timestamp: 1737270030625 -- conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.1.1-pyhd8ed1ab_1.conda - sha256: 84e5120c97502a3785e8c3241c3bf51f64b4d445f13b4d2445db00d9816fe479 - md5: d622d8d7ee8868870f9cbe259f381181 - depends: - - python >=3.9 - license: BSD-2-Clause - license_family: BSD - size: 14068 - timestamp: 1733236549190 -- conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 - sha256: 9717a059677553562a8f38ff07f3b9f61727bd614f505658b0a5ecbcf8df89be - md5: 961b3a227b437d82ad7054484cfa71b2 - depends: - - python >=3.6 - license: PSF-2.0 - license_family: PSF - size: 24062 - timestamp: 1615232388757 -- conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.18-pyhd8ed1ab_0.conda - sha256: d614bcff10696f1efc714df07651b50bf3808401fcc03814309ecec242cc8870 - md5: 0cef44b1754ae4d6924ac0eef6b9fdbe - depends: - - python >=3.9 - - wrapt <2,>=1.10 - license: MIT - license_family: MIT - size: 14382 - timestamp: 1737987072859 -- conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda - sha256: 4ff20c6be028be2825235631c45d9e4a75bca1de65f8840c02dfb28ea0137c45 - md5: 5e4f3466526c52bc9af2d2353a1460bd - depends: - - python >=3.7 - license: BSD-3-Clause - license_family: BSD - size: 87553 - timestamp: 1690101185422 -- conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda - sha256: 3ec40ccf63f2450c5e6c7dd579e42fc2e97caf0d8cd4ba24aa434e6fc264eda0 - md5: 5fbd60d61d21b4bd2f9d7a48fe100418 - depends: - - python >=3.9,<4.0.0 - - sniffio - constrains: - - aioquic >=1.0.0 - - wmi >=1.5.1 - - httpx >=0.26.0 - - trio >=0.23 - - cryptography >=43 - - httpcore >=1.0.0 - - idna >=3.7 - - h2 >=4.1.0 - license: ISC - license_family: OTHER - size: 172172 - timestamp: 1733256829961 -- conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda - sha256: b91a19eb78edfc2dbb36de9a67f74ee2416f1b5273dd7327abe53f2dbf864736 - md5: da16dd3b0b71339060cd44cb7110ddf9 - depends: - - dnspython >=2.0.0 - - idna >=2.0.0 - - python >=3.9 - license: Unlicense - size: 44401 - timestamp: 1733300827551 -- conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_1.conda - sha256: e0d0fdf587aa0ed0ff08b2bce3ab355f46687b87b0775bfba01cc80a859ee6a2 - md5: 0794f8807ff2c6f020422cacb1bd7bfa - depends: - - email-validator >=2.2.0,<2.2.1.0a0 - license: Unlicense - size: 6552 - timestamp: 1733300828176 -- conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda - sha256: cbde2c64ec317118fc06b223c5fd87c8a680255e7348dd60e7b292d2e103e701 - md5: a16662747cdeb9abbac74d0057cc976e - depends: - - python >=3.9 - license: MIT and PSF-2.0 - size: 20486 - timestamp: 1733208916977 -- conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.1.0-pyhd8ed1ab_1.conda - sha256: 28d25ea375ebab4bf7479228f8430db20986187b04999136ff5c722ebd32eb60 - md5: ef8b5fca76806159fc25b4f48d8737eb - depends: - - python >=3.9 - license: MIT - license_family: MIT - size: 28348 - timestamp: 1733569440265 -- conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.8-pyh29332c3_0.conda - sha256: 5e1e3d5cf306d9b3b5fe0d45a9e8440e8770ba7e4a5fac1ac847ca693b0dc064 - md5: 753382711adab47269f0bfe994906bc4 - depends: - python >=3.9 - - starlette >=0.40.0,<0.46.0 - - typing_extensions >=4.8.0 - - pydantic >=1.7.4,!=1.8,!=1.8.1,!=2.0.0,!=2.0.1,!=2.1.0,<3.0.0 - - email_validator >=2.0.0 - - fastapi-cli >=0.0.5 - - httpx >=0.23.0 - - jinja2 >=3.1.5 - - python-multipart >=0.0.18 - - uvicorn-standard >=0.12.0 + - python-json-logger >=2.0.4 + - pyyaml >=5.3 + - referencing + - rfc3339-validator + - rfc3986-validator >=0.1.1 + - traitlets >=5.3 - python - license: MIT - license_family: MIT - size: 77940 - timestamp: 1738326226051 -- conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.7-pyhd8ed1ab_0.conda - sha256: 300683731013b7221922339cd40430bb3c2ddeeb658fd7e37f5099ffe64e4db0 - md5: d960e0ea9e1c561aa928f6c4439f04c7 - depends: - - python >=3.9 - - rich-toolkit >=0.11.1 - - typer >=0.12.3 - - uvicorn-standard >=0.15.0 - license: MIT - license_family: MIT - size: 15546 - timestamp: 1734302408607 -- conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.17.0-pyhd8ed1ab_0.conda - sha256: 006d7e5a0c17a6973596dd86bfc80d74ce541144d2aee2d22d46fd41df560a63 - md5: 7f402b4a1007ee355bc50ce4d24d4a57 - depends: - - python >=3.9 - license: Unlicense - size: 17544 - timestamp: 1737517924333 -- conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_1.conda - sha256: 2509992ec2fd38ab27c7cdb42cf6cadc566a1cc0d1021a2673475d9fa87c6276 - md5: d3549fd50d450b6d9e7dddff25dd2110 - depends: - - cached-property >=1.3.0 - - python >=3.9,<4 - license: MPL-2.0 - license_family: MOZILLA - size: 16705 - timestamp: 1733327494780 -- conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.12.1-h267a509_2.conda - sha256: b2e3c449ec9d907dd4656cb0dc93e140f447175b125a3824b31368b06c666bb6 - md5: 9ae35c3d96db2c94ce0cef86efdfa2cb - depends: - - libgcc-ng >=12 - - libpng >=1.6.39,<1.7.0a0 - - libzlib >=1.2.13,<2.0.0a0 - arch: x86_64 - platform: linux - license: GPL-2.0-only OR FTL - size: 634972 - timestamp: 1694615932610 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/freetype-2.12.1-hf0a5ef3_2.conda - sha256: 7af93030f4407f076dce181062360efac2cd54dce863b5d7765287a6f5382537 - md5: a5ab74c5bd158c3d5532b66d8d83d907 - depends: - - libgcc-ng >=12 - - libpng >=1.6.39,<1.7.0a0 - - libzlib >=1.2.13,<2.0.0a0 - arch: aarch64 - platform: linux - license: GPL-2.0-only OR FTL - size: 642092 - timestamp: 1694617858496 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/freetype-2.12.1-hadb7bae_2.conda - sha256: 791673127e037a2dc0eebe122dc4f904cb3f6e635bb888f42cbe1a76b48748d9 - md5: e6085e516a3e304ce41a8ee08b9b89ad - depends: - - libpng >=1.6.39,<1.7.0a0 - - libzlib >=1.2.13,<2.0.0a0 - arch: arm64 - platform: osx - license: GPL-2.0-only OR FTL - size: 596430 - timestamp: 1694616332835 -- conda: https://conda.anaconda.org/conda-forge/linux-64/frozenlist-1.5.0-py312h178313f_1.conda - sha256: 501e20626798b6d7f130f4db0fb02c0385d8f4c11ca525925602a4208afb343f - md5: fb986e1c089021979dc79606af78ef8f - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 60939 - timestamp: 1737645356438 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/frozenlist-1.5.0-py312hcc812fe_1.conda - sha256: 84895c5e207e0cb2044f3607fb36b82eb8cb45f0a009d03dc04c777ed975757d - md5: 9090bf5c43e8011fb2e9a82a1db20cc3 - depends: - - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 60472 - timestamp: 1737645511278 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/frozenlist-1.5.0-py312h998013c_1.conda - sha256: d503ac8c050abdbd129253973f23be34944978d510de78ef5a3e6aa1e3d9552d - md5: 5eb3715c7e3fa9b533361375bfefe6ee - depends: - - __osx >=11.0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: APACHE - size: 57256 - timestamp: 1737645503377 -- conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.12.0-pyhd8ed1ab_0.conda - sha256: 3320970c4604989eadf908397a9475f9e6a96a773c185915111399cbfbe47817 - md5: e041ad4c43ab5e10c74587f95378ebc7 - depends: - - python >=3.9 - license: BSD-3-Clause - license_family: BSD - size: 137756 - timestamp: 1734650349242 -- conda: https://conda.anaconda.org/conda-forge/linux-64/gflags-2.2.2-h5888daf_1005.conda - sha256: 6c33bf0c4d8f418546ba9c250db4e4221040936aef8956353bc764d4877bc39a - md5: d411fc29e338efb48c5fd4576d71d881 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libstdcxx >=13 - arch: x86_64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 119654 - timestamp: 1726600001928 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gflags-2.2.2-h5ad3122_1005.conda - sha256: 28fe6b40b20454106d5e4ef6947cf298c13cc72a46347bbc49b563cd3a463bfa - md5: 4ff634d515abbf664774b5e1168a9744 - depends: - - libgcc >=13 - - libstdcxx >=13 - arch: aarch64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 106638 - timestamp: 1726599967617 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/gflags-2.2.2-hf9b8971_1005.conda - sha256: fd56ed8a1dab72ab90d8a8929b6f916a6d9220ca297ff077f8f04c5ed3408e20 - md5: 57a511a5905caa37540eb914dfcbf1fb - depends: - - __osx >=11.0 - - libcxx >=17 - arch: arm64 - platform: osx - license: BSD-3-Clause - license_family: BSD - size: 82090 - timestamp: 1726600145480 -- conda: https://conda.anaconda.org/conda-forge/linux-64/glog-0.7.1-hbabe93e_0.conda - sha256: dc824dc1d0aa358e28da2ecbbb9f03d932d976c8dca11214aa1dcdfcbd054ba2 - md5: ff862eebdfeb2fd048ae9dc92510baca - depends: - - gflags >=2.2.2,<2.3.0a0 - - libgcc-ng >=12 - - libstdcxx-ng >=12 - arch: x86_64 - platform: linux license: BSD-3-Clause license_family: BSD - size: 143452 - timestamp: 1718284177264 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/glog-0.7.1-h468a4a4_0.conda - sha256: 920795d4f775a9f47e91c2223e64847f0b212b3fedc56c137c5889e32efe8ba0 - md5: 08940a32c6ced3703d1412dd37df4f62 + size: 23647 + timestamp: 1738765986736 +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.15.0-pyhd8ed1ab_0.conda + sha256: be5f9774065d94c4a988f53812b83b67618bec33fcaaa005a98067d506613f8a + md5: 6ba8c206b5c6f52b82435056cf74ee46 depends: - - gflags >=2.2.2,<2.3.0a0 - - libgcc-ng >=12 - - libstdcxx-ng >=12 - arch: aarch64 - platform: linux + - anyio >=3.1.0 + - argon2-cffi >=21.1 + - jinja2 >=3.0.3 + - jupyter_client >=7.4.4 + - jupyter_core >=4.12,!=5.0.* + - jupyter_events >=0.11.0 + - jupyter_server_terminals >=0.4.4 + - nbconvert-core >=6.4.4 + - nbformat >=5.3.0 + - overrides >=5.0 + - packaging >=22.0 + - prometheus_client >=0.9 + - python >=3.9 + - pyzmq >=24 + - send2trash >=1.8.2 + - terminado >=0.8.3 + - tornado >=6.2.0 + - traitlets >=5.6.0 + - websocket-client >=1.7 license: BSD-3-Clause license_family: BSD - size: 145811 - timestamp: 1718284208668 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/glog-0.7.1-heb240a5_0.conda - sha256: 9fc77de416953aa959039db72bc41bfa4600ae3ff84acad04a7d0c1ab9552602 - md5: fef68d0a95aa5b84b5c1a4f6f3bf40e1 + size: 327747 + timestamp: 1734702771032 +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda + sha256: 0890fc79422191bc29edf17d7b42cff44ba254aa225d31eb30819f8772b775b8 + md5: 2d983ff1b82a1ccb6f2e9d8784bdd6bd depends: - - __osx >=11.0 - - gflags >=2.2.2,<2.3.0a0 - - libcxx >=16 - arch: arm64 - platform: osx + - python >=3.9 + - terminado >=0.8.3 license: BSD-3-Clause license_family: BSD - size: 112215 - timestamp: 1718284365403 -- conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda - sha256: d8d19575a827f2c62500949b9536efdd6b5406c9f546a73b6a87ac90b03a5875 - md5: 4861e30ff0cd566ea6fb4593e3b7c22a - depends: - - protobuf >=3.20.2,<6.0.0.dev0,!=3.20.0,!=3.20.1,!=4.21.1,!=4.21.2,!=4.21.3,!=4.21.4,!=4.21.5 - - python >=3.9 - license: Apache-2.0 - license_family: APACHE - size: 116522 - timestamp: 1731459019854 -- conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda - sha256: 622516185a7c740d5c7f27016d0c15b45782c1501e5611deec63fd70344ce7c8 - md5: 7ee49e89531c0dcbba9466f6d115d585 - depends: - - python >=3.9 - - typing_extensions - license: MIT - license_family: MIT - size: 51846 - timestamp: 1733327599467 -- conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_1.conda - sha256: 843ddad410c370672a8250470697027618f104153612439076d4d7b91eeb7b5c - md5: 825927dc7b0f287ef8d4d0011bb113b1 - depends: - - hpack >=4.0,<5 - - hyperframe >=6.0,<7 - - python >=3.9 - license: MIT - license_family: MIT - size: 52000 - timestamp: 1733298867359 -- conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda - sha256: 6ad78a180576c706aabeb5b4c8ceb97c0cb25f1e112d76495bff23e3779948ba - md5: 0a802cb9888dd14eeefc611f05c40b6e - depends: - - python >=3.9 - license: MIT - license_family: MIT - size: 30731 - timestamp: 1737618390337 -- conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - sha256: c84d012a245171f3ed666a8bf9319580c269b7843ffa79f26468842da3abd5df - md5: 2ca8e6dbc86525c8b95e3c0ffa26442e - depends: - - python >=3.8 - - h11 >=0.13,<0.15 - - h2 >=3,<5 - - sniffio 1.* - - anyio >=3.0,<5.0 - - certifi - license: BSD-3-Clause - license_family: BSD - size: 48959 - timestamp: 1731707562362 -- conda: https://conda.anaconda.org/conda-forge/linux-64/httptools-0.6.4-py312h66e93f0_0.conda - sha256: 621e7e050b888e5239d33e37ea72d6419f8367e5babcad38b755586f20264796 - md5: 8b1160b32557290b64d5be68db3d996d - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - arch: x86_64 - platform: linux - license: MIT - license_family: MIT - size: 101872 - timestamp: 1732707756745 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/httptools-0.6.4-py312hb2c0f52_0.conda - sha256: 0bd1f30224af142711d11033a7469ae402a1147143f399f7341bbc1d8178c722 - md5: 5e70a6de59352f9a52e9caa7f3447390 - depends: - - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - arch: aarch64 - platform: linux - license: MIT - license_family: MIT - size: 101255 - timestamp: 1732707891645 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/httptools-0.6.4-py312hea69d52_0.conda - sha256: 5e93cda79e32e8c0039e05ea1939e688da336187dab025f699b42ef529e848be - md5: e1747a8e8d2aca5499aaea9993bf31ff - depends: - - __osx >=11.0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - arch: arm64 - platform: osx - license: MIT - license_family: MIT - size: 85623 - timestamp: 1732707871414 -- conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - sha256: cd0f1de3697b252df95f98383e9edb1d00386bfdd03fdf607fa42fe5fcb09950 - md5: d6989ead454181f4f9bc987d3dc4e285 - depends: - - anyio - - certifi - - httpcore 1.* - - idna - - python >=3.9 - license: BSD-3-Clause - license_family: BSD - size: 63082 - timestamp: 1733663449209 -- conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.28.0-pyhd8ed1ab_0.conda - sha256: 3c48ffeb8a425eeba5dfa81a4da4b738a12d2104da0c3b443185029718dd6e48 - md5: 317f31a6fe151756ef10e7ed97a15f8a - depends: - - filelock - - fsspec >=2023.5.0 - - packaging >=20.9 - - python >=3.9 - - pyyaml >=5.1 - - requests - - tqdm >=4.42.1 - - typing-extensions >=3.7.4.3 - - typing_extensions >=3.7.4.3 - license: Apache-2.0 - license_family: APACHE - size: 284361 - timestamp: 1738349452337 -- conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - sha256: 77af6f5fe8b62ca07d09ac60127a30d9069fdc3c68d6b256754d0ffb1f7779f8 - md5: 8e6923fc12f1fe8f8c4e5c9f343256ac - depends: - - python >=3.9 - license: MIT - license_family: MIT - size: 17397 - timestamp: 1737618427549 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda - sha256: 813298f2e54ef087dbfc9cc2e56e08ded41de65cff34c639cc8ba4e27e4540c9 - md5: 268203e8b983fddb6412b36f2024e75c - depends: - - libgcc-ng >=12 - - libstdcxx-ng >=12 - arch: aarch64 - platform: linux - license: MIT - license_family: MIT - size: 12282786 - timestamp: 1720853454991 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda - sha256: 9ba12c93406f3df5ab0a43db8a4b4ef67a5871dfd401010fbe29b218b2cbe620 - md5: 5eb22c1d7b3fc4abb50d92d621583137 - depends: - - __osx >=11.0 - arch: arm64 - platform: osx - license: MIT - license_family: MIT - size: 11857802 - timestamp: 1720853997952 -- conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - sha256: d7a472c9fd479e2e8dcb83fb8d433fce971ea369d704ece380e876f9c3494e87 - md5: 39a4f67be3286c86d696df570b1201b7 - depends: - - python >=3.9 - license: BSD-3-Clause - license_family: BSD - size: 49765 - timestamp: 1733211921194 -- conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_1.conda - sha256: 13766b88fc5b23581530d3a0287c0c58ad82f60401afefab283bf158d2be55a9 - md5: 315607a3030ad5d5227e76e0733798ff - depends: - - python >=3.9 - - zipp >=0.5 - license: Apache-2.0 - license_family: APACHE - size: 28623 - timestamp: 1733223207185 -- conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda - sha256: acc1d991837c0afb67c75b77fdc72b4bf022aac71fedd8b9ea45918ac9b08a80 - md5: c85c76dc67d75619a92f51dfbce06992 - depends: - - python >=3.9 - - zipp >=3.1.0 - constrains: - - importlib-resources >=6.5.2,<6.5.3.0a0 - license: Apache-2.0 - license_family: APACHE - size: 33781 - timestamp: 1736252433366 -- conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh3099207_0.conda - sha256: 33cfd339bb4efac56edf93474b37ddc049e08b1b4930cf036c893cc1f5a1f32a - md5: b40131ab6a36ac2c09b7c57d4d3fbf99 - depends: - - __linux - - comm >=0.1.1 - - debugpy >=1.6.5 - - ipython >=7.23.1 - - jupyter_client >=6.1.12 - - jupyter_core >=4.12,!=5.0.* - - matplotlib-inline >=0.1 - - nest-asyncio - - packaging - - psutil - - python >=3.8 - - pyzmq >=24 - - tornado >=6.1 - - traitlets >=5.4.0 - license: BSD-3-Clause - license_family: BSD - size: 119084 - timestamp: 1719845605084 -- conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh57ce528_0.conda - sha256: 072534d4d379225b2c3a4e38bc7730b65ae171ac7f0c2d401141043336e97980 - md5: 9eb15d654daa0ef5a98802f586bb4ffc - depends: - - __osx - - appnope - - comm >=0.1.1 - - debugpy >=1.6.5 - - ipython >=7.23.1 - - jupyter_client >=6.1.12 - - jupyter_core >=4.12,!=5.0.* - - matplotlib-inline >=0.1 - - nest-asyncio - - packaging - - psutil - - python >=3.8 - - pyzmq >=24 - - tornado >=6.1 - - traitlets >=5.4.0 - license: BSD-3-Clause - license_family: BSD - size: 119568 - timestamp: 1719845667420 -- conda: https://conda.anaconda.org/conda-forge/noarch/ipython-8.31.0-pyh707e725_0.conda - sha256: e10d1172ebf950f8f087f0d9310d215f5ddb8f3ad247bfa58ab5a909b3cabbdc - md5: 1d7fcd803dfa936a6c3bd051b293241c - depends: - - __unix - - decorator - - exceptiongroup - - jedi >=0.16 - - matplotlib-inline - - pexpect >4.3 - - pickleshare - - prompt-toolkit >=3.0.41,<3.1.0 - - pygments >=2.4.0 - - python >=3.10 - - stack_data - - traitlets >=5.13.0 - - typing_extensions >=4.6 - license: BSD-3-Clause - license_family: BSD - size: 600761 - timestamp: 1734788248334 -- conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda - sha256: 08e838d29c134a7684bca0468401d26840f41c92267c4126d7b43a6b533b0aed - md5: 0b0154421989637d424ccf0f104be51a - depends: - - arrow >=0.15.0 - - python >=3.9 - license: MIT - license_family: MIT - size: 19832 - timestamp: 1733493720346 -- conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda - sha256: 92c4d217e2dc68983f724aa983cca5464dcb929c566627b26a2511159667dba8 - md5: a4f4c5dc9b80bc50e0d3dc4e6e8f1bd9 - depends: - - parso >=0.8.3,<0.9.0 - - python >=3.9 - license: Apache-2.0 AND MIT - size: 843646 - timestamp: 1733300981994 -- conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.5-pyhd8ed1ab_0.conda - sha256: 98977694b9ecaa3218662f843425f39501f81973c450f995eec68f1803ed71c3 - md5: 2752a6ed44105bfb18c9bef1177d9dcd - depends: - - markupsafe >=2.0 - - python >=3.9 - license: BSD-3-Clause - license_family: BSD - size: 112561 - timestamp: 1734824044952 -- conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.10.0-pyhd8ed1ab_1.conda - sha256: 61bca2dac194c44603446944745566d7b4e55407280f6f6cea8bbe4de26b558f - md5: cd170f82d8e5b355dfdea6adab23e4af - depends: - - python >=3.9 - license: Apache-2.0 - license_family: APACHE - size: 31573 - timestamp: 1733272196759 -- conda: https://conda.anaconda.org/conda-forge/linux-64/jsonpointer-3.0.0-py312h7900ff3_1.conda - sha256: 76ccb7bffc7761d1d3133ffbe1f7f1710a0f0d9aaa9f7ea522652e799f3601f4 - md5: 6b51f7459ea4073eeb5057207e2e1e3d - depends: - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - arch: x86_64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 17277 - timestamp: 1725303032027 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/jsonpointer-3.0.0-py312h996f985_1.conda - sha256: 908448e2946c8fd8e28f5c7de4ed52548d227fae2994febf1050179b2590dbdc - md5: 2257c5f33024274faadf6a88a7d62807 - depends: - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - arch: aarch64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 17821 - timestamp: 1725303138276 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/jsonpointer-3.0.0-py312h81bd7bf_1.conda - sha256: f6fb3734e967d1cd0cde32844ee952809f6c0a49895da7ec1c8cfdf97739b947 - md5: 80f403c03290e1662be03e026fb5f8ab - depends: - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - arch: arm64 - platform: osx - license: BSD-3-Clause - license_family: BSD - size: 17865 - timestamp: 1725303130815 -- conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_1.conda - sha256: be992a99e589146f229c58fe5083e0b60551d774511c494f91fe011931bd7893 - md5: a3cead9264b331b32fe8f0aabc967522 - depends: - - attrs >=22.2.0 - - importlib_resources >=1.4.0 - - jsonschema-specifications >=2023.03.6 - - pkgutil-resolve-name >=1.3.10 - - python >=3.9 - - referencing >=0.28.4 - - rpds-py >=0.7.1 - license: MIT - license_family: MIT - size: 74256 - timestamp: 1733472818764 -- conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2024.10.1-pyhd8ed1ab_1.conda - sha256: 37127133837444cf0e6d1a95ff5a505f8214ed4e89e8e9343284840e674c6891 - md5: 3b519bc21bc80e60b456f1e62962a766 - depends: - - python >=3.9 - - referencing >=0.31.0 - license: MIT - license_family: MIT - size: 16170 - timestamp: 1733493624968 -- conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_1.conda - sha256: 6e0184530011961a0802fda100ecdfd4b0eca634ed94c37e553b72e21c26627d - md5: a5b1a8065857cc4bd8b7a38d063bb728 - depends: - - fqdn - - idna - - isoduration - - jsonpointer >1.13 - - jsonschema >=4.23.0,<4.23.1.0a0 - - rfc3339-validator - - rfc3986-validator >0.1.0 - - uri-template - - webcolors >=24.6.0 - license: MIT - license_family: MIT - size: 7135 - timestamp: 1733472820035 -- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_1.conda - sha256: 1565c8b1423a37fca00fe0ab2a17cd8992c2ecf23e7867a1c9f6f86a9831c196 - md5: 0b4c3908e5a38ea22ebb98ee5888c768 - depends: - - importlib-metadata >=4.8.3 - - jupyter_server >=1.1.2 - - python >=3.9 - license: BSD-3-Clause - license_family: BSD - size: 55221 - timestamp: 1733493006611 -- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - sha256: 19d8bd5bb2fde910ec59e081eeb59529491995ce0d653a5209366611023a0b3a - md5: 4ebae00eae9705b0c3d6d1018a81d047 - depends: - - importlib-metadata >=4.8.3 - - jupyter_core >=4.12,!=5.0.* - - python >=3.9 - - python-dateutil >=2.8.2 - - pyzmq >=23.0 - - tornado >=6.2 - - traitlets >=5.3 - license: BSD-3-Clause - license_family: BSD - size: 106342 - timestamp: 1733441040958 -- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - sha256: 732b1e8536bc22a5a174baa79842d79db2f4956d90293dd82dc1b3f6099bcccd - md5: 0a2980dada0dd7fd0998f0342308b1b1 - depends: - - __unix - - platformdirs >=2.5 - - python >=3.8 - - traitlets >=5.3 - license: BSD-3-Clause - license_family: BSD - size: 57671 - timestamp: 1727163547058 -- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.11.0-pyhd8ed1ab_0.conda - sha256: eeb32aa58d37b130387628d5c151092f6d3fcf0a6964294bef06d6bac117f3c4 - md5: 2d8876ca6bda213622dfbc3d1da56ecb - depends: - - jsonschema-with-format-nongpl >=4.18.0 - - packaging - - python >=3.9 - - python-json-logger >=2.0.4 - - pyyaml >=5.3 - - referencing - - rfc3339-validator - - rfc3986-validator >=0.1.1 - - traitlets >=5.3 - license: BSD-3-Clause - license_family: BSD - size: 22160 - timestamp: 1734531779868 -- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.15.0-pyhd8ed1ab_0.conda - sha256: be5f9774065d94c4a988f53812b83b67618bec33fcaaa005a98067d506613f8a - md5: 6ba8c206b5c6f52b82435056cf74ee46 - depends: - - anyio >=3.1.0 - - argon2-cffi >=21.1 - - jinja2 >=3.0.3 - - jupyter_client >=7.4.4 - - jupyter_core >=4.12,!=5.0.* - - jupyter_events >=0.11.0 - - jupyter_server_terminals >=0.4.4 - - nbconvert-core >=6.4.4 - - nbformat >=5.3.0 - - overrides >=5.0 - - packaging >=22.0 - - prometheus_client >=0.9 - - python >=3.9 - - pyzmq >=24 - - send2trash >=1.8.2 - - terminado >=0.8.3 - - tornado >=6.2.0 - - traitlets >=5.6.0 - - websocket-client >=1.7 - license: BSD-3-Clause - license_family: BSD - size: 327747 - timestamp: 1734702771032 -- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - sha256: 0890fc79422191bc29edf17d7b42cff44ba254aa225d31eb30819f8772b775b8 - md5: 2d983ff1b82a1ccb6f2e9d8784bdd6bd - depends: - - python >=3.9 - - terminado >=0.8.3 - license: BSD-3-Clause - license_family: BSD - size: 19711 - timestamp: 1733428049134 -- conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.3.5-pyhd8ed1ab_0.conda - sha256: 9d033314060993522e1ad999ded9da316a8b928d11b7a58c254597382239a72e - md5: ec1f95d39ec862a7a87de0662a98ce3e - depends: - - async-lru >=1.0.0 - - httpx >=0.25.0 - - importlib-metadata >=4.8.3 - - ipykernel >=6.5.0 - - jinja2 >=3.0.3 - - jupyter-lsp >=2.0.0 - - jupyter_core - - jupyter_server >=2.4.0,<3 - - jupyterlab_server >=2.27.1,<3 - - notebook-shim >=0.2 - - packaging - - python >=3.9 - - setuptools >=40.8.0 - - tomli >=1.2.2 - - tornado >=6.2.0 - - traitlets - license: BSD-3-Clause - license_family: BSD - size: 7614652 - timestamp: 1738184813883 -- conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - sha256: dc24b900742fdaf1e077d9a3458fd865711de80bca95fe3c6d46610c532c6ef0 - md5: fd312693df06da3578383232528c468d - depends: - - pygments >=2.4.1,<3 - - python >=3.9 - constrains: - - jupyterlab >=4.0.8,<5.0.0 - license: BSD-3-Clause - license_family: BSD - size: 18711 - timestamp: 1733328194037 -- conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - sha256: d03d0b7e23fa56d322993bc9786b3a43b88ccc26e58b77c756619a921ab30e86 - md5: 9dc4b2b0f41f0de41d27f3293e319357 - depends: - - babel >=2.10 - - importlib-metadata >=4.8.3 - - jinja2 >=3.0.3 - - json5 >=0.9.0 - - jsonschema >=4.18 - - jupyter_server >=1.21,<3 - - packaging >=21.3 - - python >=3.9 - - requests >=2.31 - constrains: - - openapi-core >=0.18.0,<0.19.0 - license: BSD-3-Clause - license_family: BSD - size: 49449 - timestamp: 1733599666357 -- conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 - sha256: 150c05a6e538610ca7c43beb3a40d65c90537497a4f6a5f4d15ec0451b6f5ebb - md5: 30186d27e2c9fa62b45fb1476b7200e3 - depends: - - libgcc-ng >=10.3.0 - arch: x86_64 - platform: linux - license: LGPL-2.1-or-later - size: 117831 - timestamp: 1646151697040 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/keyutils-1.6.1-h4e544f5_0.tar.bz2 - sha256: 6d4233d97a9b38acbb26e1268bcf8c10a8e79c2aed7e5a385ec3769967e3e65b - md5: 1f24853e59c68892452ef94ddd8afd4b - depends: - - libgcc-ng >=10.3.0 - arch: aarch64 - platform: linux - license: LGPL-2.1-or-later - size: 112327 - timestamp: 1646166857935 -- conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda - sha256: 99df692f7a8a5c27cd14b5fb1374ee55e756631b9c3d659ed3ee60830249b238 - md5: 3f43953b7d3fb3aaa1d0d0723d91e368 - depends: - - keyutils >=1.6.1,<2.0a0 - - libedit >=3.1.20191231,<3.2.0a0 - - libedit >=3.1.20191231,<4.0a0 - - libgcc-ng >=12 - - libstdcxx-ng >=12 - - openssl >=3.3.1,<4.0a0 - arch: x86_64 - platform: linux - license: MIT - license_family: MIT - size: 1370023 - timestamp: 1719463201255 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/krb5-1.21.3-h50a48e9_0.conda - sha256: 0ec272afcf7ea7fbf007e07a3b4678384b7da4047348107b2ae02630a570a815 - md5: 29c10432a2ca1472b53f299ffb2ffa37 - depends: - - keyutils >=1.6.1,<2.0a0 - - libedit >=3.1.20191231,<3.2.0a0 - - libedit >=3.1.20191231,<4.0a0 - - libgcc-ng >=12 - - libstdcxx-ng >=12 - - openssl >=3.3.1,<4.0a0 - arch: aarch64 - platform: linux - license: MIT - license_family: MIT - size: 1474620 - timestamp: 1719463205834 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda - sha256: 4442f957c3c77d69d9da3521268cad5d54c9033f1a73f99cde0a3658937b159b - md5: c6dc8a0fdec13a0565936655c33069a1 - depends: - - __osx >=11.0 - - libcxx >=16 - - libedit >=3.1.20191231,<3.2.0a0 - - libedit >=3.1.20191231,<4.0a0 - - openssl >=3.3.1,<4.0a0 - arch: arm64 - platform: osx - license: MIT - license_family: MIT - size: 1155530 - timestamp: 1719463474401 -- conda: https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.16-hb7c19ff_0.conda - sha256: 5c878d104b461b7ef922abe6320711c0d01772f4cd55de18b674f88547870041 - md5: 51bb7010fc86f70eee639b4bb7a894f5 - depends: - - libgcc-ng >=12 - - libjpeg-turbo >=3.0.0,<4.0a0 - - libtiff >=4.6.0,<4.8.0a0 - arch: x86_64 - platform: linux - license: MIT - license_family: MIT - size: 245247 - timestamp: 1701647787198 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lcms2-2.16-h922389a_0.conda - sha256: be4847b1014d3cbbc524a53bdbf66182f86125775020563e11d914c8468dd97d - md5: ffdd8267a04c515e7ce69c727b051414 - depends: - - libgcc-ng >=12 - - libjpeg-turbo >=3.0.0,<4.0a0 - - libtiff >=4.6.0,<4.8.0a0 - arch: aarch64 - platform: linux - license: MIT - license_family: MIT - size: 296219 - timestamp: 1701647961116 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.16-ha0e7c42_0.conda - sha256: 151e0c84feb7e0747fabcc85006b8973b22f5abbc3af76a9add0b0ef0320ebe4 - md5: 66f6c134e76fe13cce8a9ea5814b5dd5 - depends: - - libjpeg-turbo >=3.0.0,<4.0a0 - - libtiff >=4.6.0,<4.8.0a0 - arch: arm64 - platform: osx - license: MIT - license_family: MIT - size: 211959 - timestamp: 1701647962657 -- conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_2.conda - sha256: 7c91cea91b13f4314d125d1bedb9d03a29ebbd5080ccdea70260363424646dbe - md5: 048b02e3962f066da18efe3a21b77672 - depends: - - __glibc >=2.17,<3.0.a0 - constrains: - - binutils_impl_linux-64 2.43 - arch: x86_64 - platform: linux - license: GPL-3.0-only - license_family: GPL - size: 669211 - timestamp: 1729655358674 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_2.conda - sha256: 80ec7e8f006196808fac5bd4b3773a652847f97bbf08044cd87731424ac64f8b - md5: fcbde5ea19d55468953bf588770c0501 - constrains: - - binutils_impl_linux-aarch64 2.43 - arch: aarch64 - platform: linux - license: GPL-3.0-only - license_family: GPL - size: 698245 - timestamp: 1729655345825 -- conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 - sha256: cb55f36dcd898203927133280ae1dc643368af041a48bcf7c026acb7c47b0c12 - md5: 76bbff344f0134279f225174e9064c8f - depends: - - libgcc-ng >=12 - - libstdcxx-ng >=12 - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 281798 - timestamp: 1657977462600 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.0.0-h4de3ea5_0.tar.bz2 - sha256: 2d09ef9b7796d83364957e420b41c32d94e628c3f0520b61c332518a7b5cd586 - md5: 1a0ffc65e03ce81559dbcb0695ad1476 - depends: - - libgcc-ng >=12 - - libstdcxx-ng >=12 - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 262096 - timestamp: 1657978241894 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 - sha256: 6f068bb53dfb6147d3147d981bb851bb5477e769407ad4e6a68edf482fdcb958 - md5: de462d5aacda3b30721b512c5da4e742 - depends: - - libcxx >=13.0.1 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: Apache - size: 215721 - timestamp: 1657977558796 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda - sha256: 143a586aa67d50622ef703de57b9d43f44945836d6568e0e7aa174bd8c45e0d4 - md5: 488f260ccda0afaf08acb286db439c2f - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libstdcxx >=13 - constrains: - - libabseil-static =20240722.0=cxx17* - - abseil-cpp =20240722.0 - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 1311599 - timestamp: 1736008414161 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h18dbdb1_4.conda - sha256: bb6c5fb3b8de5f90735c5252b57efb3c268ee222c755569dac18065f05147670 - md5: 633b9fe454ffea2aaf29e191d946a83b - depends: - - libgcc >=13 - - libstdcxx >=13 - constrains: - - abseil-cpp =20240722.0 - - libabseil-static =20240722.0=cxx17* - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 1334844 - timestamp: 1736008472455 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_h07bc746_4.conda - sha256: 05fa5e5e908962b9c5aba95f962e2ca81d9599c4715aebe5e4ddb72b309d1770 - md5: c2d95bd7aa8d564a9bd7eca5e571a5b3 - depends: - - __osx >=11.0 - - libcxx >=18 - constrains: - - libabseil-static =20240722.0=cxx17* - - abseil-cpp =20240722.0 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: Apache - size: 1178260 - timestamp: 1736008642885 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-19.0.0-h00a82cf_8_cpu.conda - build_number: 8 - sha256: dcac39be95b9afe42bc9b7bfcfa258e31e413a4cb79c49f6707edf2838e8d64c - md5: 51e31b59290c09b58d290f66b908999b - depends: - - __glibc >=2.17,<3.0.a0 - - aws-crt-cpp >=0.29.9,<0.29.10.0a0 - - aws-sdk-cpp >=1.11.489,<1.11.490.0a0 - - azure-core-cpp >=1.14.0,<1.14.1.0a0 - - azure-identity-cpp >=1.10.0,<1.10.1.0a0 - - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 - - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 - - bzip2 >=1.0.8,<2.0a0 - - glog >=0.7.1,<0.8.0a0 - - libabseil * cxx17* - - libabseil >=20240722.0,<20240723.0a0 - - libbrotlidec >=1.1.0,<1.2.0a0 - - libbrotlienc >=1.1.0,<1.2.0a0 - - libgcc >=13 - - libgoogle-cloud >=2.34.0,<2.35.0a0 - - libgoogle-cloud-storage >=2.34.0,<2.35.0a0 - - libopentelemetry-cpp >=1.18.0,<1.19.0a0 - - libprotobuf >=5.28.3,<5.28.4.0a0 - - libre2-11 >=2024.7.2 - - libstdcxx >=13 - - libutf8proc >=2.10.0,<2.11.0a0 - - libzlib >=1.3.1,<2.0a0 - - lz4-c >=1.10.0,<1.11.0a0 - - orc >=2.0.3,<2.0.4.0a0 - - re2 - - snappy >=1.2.1,<1.3.0a0 - - zstd >=1.5.6,<1.6.0a0 - constrains: - - parquet-cpp <0.0a0 - - arrow-cpp <0.0a0 - - apache-arrow-proc =*=cpu - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 8969999 - timestamp: 1737824740139 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-19.0.0-h03ebaaf_8_cpu.conda - build_number: 8 - sha256: ca5db2ba71de0c4fb54ee12e3b841e3e90b988ae7a5935fae3cce90111b5cb6d - md5: 1ac6f73a63d715590a7ad0113a578762 - depends: - - aws-crt-cpp >=0.29.9,<0.29.10.0a0 - - aws-sdk-cpp >=1.11.489,<1.11.490.0a0 - - azure-core-cpp >=1.14.0,<1.14.1.0a0 - - azure-identity-cpp >=1.10.0,<1.10.1.0a0 - - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 - - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 - - bzip2 >=1.0.8,<2.0a0 - - glog >=0.7.1,<0.8.0a0 - - libabseil * cxx17* - - libabseil >=20240722.0,<20240723.0a0 - - libbrotlidec >=1.1.0,<1.2.0a0 - - libbrotlienc >=1.1.0,<1.2.0a0 - - libgcc >=13 - - libgoogle-cloud >=2.34.0,<2.35.0a0 - - libgoogle-cloud-storage >=2.34.0,<2.35.0a0 - - libopentelemetry-cpp >=1.18.0,<1.19.0a0 - - libprotobuf >=5.28.3,<5.28.4.0a0 - - libre2-11 >=2024.7.2 - - libstdcxx >=13 - - libutf8proc >=2.10.0,<2.11.0a0 - - libzlib >=1.3.1,<2.0a0 - - lz4-c >=1.10.0,<1.11.0a0 - - orc >=2.0.3,<2.0.4.0a0 - - re2 - - snappy >=1.2.1,<1.3.0a0 - - zstd >=1.5.6,<1.6.0a0 - constrains: - - arrow-cpp <0.0a0 - - apache-arrow-proc =*=cpu - - parquet-cpp <0.0a0 - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 8213318 - timestamp: 1737808895185 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-19.0.0-h819e3af_8_cpu.conda - build_number: 8 - sha256: 825afabd1c998dfddce9600584c492296a15219d441c6e3029e6c6228200d695 - md5: fbe0ce0ef6d386ab832ee5cca2ab3048 - depends: - - __osx >=11.0 - - aws-crt-cpp >=0.29.9,<0.29.10.0a0 - - aws-sdk-cpp >=1.11.489,<1.11.490.0a0 - - azure-core-cpp >=1.14.0,<1.14.1.0a0 - - azure-identity-cpp >=1.10.0,<1.10.1.0a0 - - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 - - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 - - bzip2 >=1.0.8,<2.0a0 - - glog >=0.7.1,<0.8.0a0 - - libabseil * cxx17* - - libabseil >=20240722.0,<20240723.0a0 - - libbrotlidec >=1.1.0,<1.2.0a0 - - libbrotlienc >=1.1.0,<1.2.0a0 - - libcxx >=18 - - libgoogle-cloud >=2.34.0,<2.35.0a0 - - libgoogle-cloud-storage >=2.34.0,<2.35.0a0 - - libopentelemetry-cpp >=1.18.0,<1.19.0a0 - - libprotobuf >=5.28.3,<5.28.4.0a0 - - libre2-11 >=2024.7.2 - - libutf8proc >=2.10.0,<2.11.0a0 - - libzlib >=1.3.1,<2.0a0 - - lz4-c >=1.10.0,<1.11.0a0 - - orc >=2.0.3,<2.0.4.0a0 - - re2 - - snappy >=1.2.1,<1.3.0a0 - - zstd >=1.5.6,<1.6.0a0 - constrains: - - arrow-cpp <0.0a0 - - apache-arrow-proc =*=cpu - - parquet-cpp <0.0a0 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: APACHE - size: 5573619 - timestamp: 1737806044972 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-19.0.0-hcb10f89_8_cpu.conda - build_number: 8 - sha256: bf8f64403685eb3ab6ebc5a25cc3a70431a1f822469bf96b0ee80c169deec0ac - md5: dafba09929a58e10bb8231ff7966e623 - depends: - - __glibc >=2.17,<3.0.a0 - - libarrow 19.0.0 h00a82cf_8_cpu - - libgcc >=13 - - libstdcxx >=13 - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 637555 - timestamp: 1737824783456 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-19.0.0-h3b568fd_8_cpu.conda - build_number: 8 - sha256: 154fe9bee1a1e3c96497fcbf3c01191965d5c4e9718dcbf8502035d7ff633499 - md5: e015edb6317c81893f9ce4865bbd55f4 - depends: - - libarrow 19.0.0 h03ebaaf_8_cpu - - libgcc >=13 - - libstdcxx >=13 - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 602892 - timestamp: 1737808980001 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-19.0.0-hf07054f_8_cpu.conda - build_number: 8 - sha256: 66ce35077dae435cd34644d53159af14afd62452eeec8f63cd55adb11e7f2780 - md5: 68cd272eccf7b4fcb0a3bab95e89e71e - depends: - - __osx >=11.0 - - libarrow 19.0.0 h819e3af_8_cpu - - libcxx >=18 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: APACHE - size: 500365 - timestamp: 1737806169385 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-19.0.0-hcb10f89_8_cpu.conda - build_number: 8 - sha256: dc4a0f13428c9bd9781e25b67f5f52a92b8c4beafa2435fe5127e9fac7969218 - md5: 66e19108e4597b9a35d0886607c2d8a8 - depends: - - __glibc >=2.17,<3.0.a0 - - libarrow 19.0.0 h00a82cf_8_cpu - - libarrow-acero 19.0.0 hcb10f89_8_cpu - - libgcc >=13 - - libparquet 19.0.0 h081d1f1_8_cpu - - libstdcxx >=13 - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 604335 - timestamp: 1737824891062 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-19.0.0-h3b568fd_8_cpu.conda - build_number: 8 - sha256: f038f979b3357124a548dd83880f94284355a90e4736caaabd23c750cf06eaa9 - md5: 03f35d7f35dae0e05f5f4f747d7eb6e7 - depends: - - libarrow 19.0.0 h03ebaaf_8_cpu - - libarrow-acero 19.0.0 h3b568fd_8_cpu - - libgcc >=13 - - libparquet 19.0.0 hfc78867_8_cpu - - libstdcxx >=13 - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 579626 - timestamp: 1737809072479 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-19.0.0-hf07054f_8_cpu.conda - build_number: 8 - sha256: 6934ce0503472f002695d45ae12a8f2948e10e7a0b7430330a4d0d83f3e5ca27 - md5: 1a941d1ddc16b532790781a4becdc881 - depends: - - __osx >=11.0 - - libarrow 19.0.0 h819e3af_8_cpu - - libarrow-acero 19.0.0 hf07054f_8_cpu - - libcxx >=18 - - libparquet 19.0.0 h636d7b7_8_cpu - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: APACHE - size: 501001 - timestamp: 1737807214184 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-19.0.0-h08228c5_8_cpu.conda - build_number: 8 - sha256: e370ee738d3963120f715343a27cf041c62a3ee8bb19e25da9115ec4bae5f2de - md5: e5dd1926e5a4b23de8ba4eacc8eb9b2d - depends: - - __glibc >=2.17,<3.0.a0 - - libabseil * cxx17* - - libabseil >=20240722.0,<20240723.0a0 - - libarrow 19.0.0 h00a82cf_8_cpu - - libarrow-acero 19.0.0 hcb10f89_8_cpu - - libarrow-dataset 19.0.0 hcb10f89_8_cpu - - libgcc >=13 - - libprotobuf >=5.28.3,<5.28.4.0a0 - - libstdcxx >=13 - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 521475 - timestamp: 1737824942852 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-19.0.0-h1e9d426_8_cpu.conda - build_number: 8 - sha256: 92e1fea8557a931c273ea3bd3bf73a4f4f0c566844dcedf78b9a16e5cf6cab56 - md5: ef08fcb5c165cdc743336bd8f4cbed69 - depends: - - libabseil * cxx17* - - libabseil >=20240722.0,<20240723.0a0 - - libarrow 19.0.0 h03ebaaf_8_cpu - - libarrow-acero 19.0.0 h3b568fd_8_cpu - - libarrow-dataset 19.0.0 h3b568fd_8_cpu - - libgcc >=13 - - libprotobuf >=5.28.3,<5.28.4.0a0 - - libstdcxx >=13 - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 516126 - timestamp: 1737809118915 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-19.0.0-h4239455_8_cpu.conda - build_number: 8 - sha256: 445d2ca20b07e57270f3b07b62c09794369413e5ff3716d9c73d0ad360969583 - md5: a39953d9b03b0463f4ccc187a8bcfcca - depends: - - __osx >=11.0 - - libabseil * cxx17* - - libabseil >=20240722.0,<20240723.0a0 - - libarrow 19.0.0 h819e3af_8_cpu - - libarrow-acero 19.0.0 hf07054f_8_cpu - - libarrow-dataset 19.0.0 hf07054f_8_cpu - - libcxx >=18 - - libprotobuf >=5.28.3,<5.28.4.0a0 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: APACHE - size: 449672 - timestamp: 1737807386331 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-28_h59b9bed_openblas.conda - build_number: 28 - sha256: 93fbcf2800b859b7ca5add3ab5d3aa11c6a6ff4b942a1cea4bf644f78488edb8 - md5: 73e2a99fdeb8531d50168987378fda8a - depends: - - libopenblas >=0.3.28,<0.3.29.0a0 - - libopenblas >=0.3.28,<1.0a0 - constrains: - - libcblas =3.9.0=28*_openblas - - blas =2.128=openblas - - liblapack =3.9.0=28*_openblas - - liblapacke =3.9.0=28*_openblas - arch: x86_64 - platform: linux + size: 19711 + timestamp: 1733428049134 +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.3.5-pyhd8ed1ab_0.conda + sha256: 9d033314060993522e1ad999ded9da316a8b928d11b7a58c254597382239a72e + md5: ec1f95d39ec862a7a87de0662a98ce3e + depends: + - async-lru >=1.0.0 + - httpx >=0.25.0 + - importlib-metadata >=4.8.3 + - ipykernel >=6.5.0 + - jinja2 >=3.0.3 + - jupyter-lsp >=2.0.0 + - jupyter_core + - jupyter_server >=2.4.0,<3 + - jupyterlab_server >=2.27.1,<3 + - notebook-shim >=0.2 + - packaging + - python >=3.9 + - setuptools >=40.8.0 + - tomli >=1.2.2 + - tornado >=6.2.0 + - traitlets license: BSD-3-Clause license_family: BSD - size: 16621 - timestamp: 1738114033763 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-28_h1a9f1db_openblas.conda - build_number: 28 - sha256: a50dc7ed1f49789aab4ffb560d9a46b5dc3f059a925282f699c1a96fa566a1a0 - md5: 88dfbb3875d62b431aa676b4a54734bf - depends: - - libopenblas >=0.3.28,<0.3.29.0a0 - - libopenblas >=0.3.28,<1.0a0 + size: 7614652 + timestamp: 1738184813883 +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda + sha256: dc24b900742fdaf1e077d9a3458fd865711de80bca95fe3c6d46610c532c6ef0 + md5: fd312693df06da3578383232528c468d + depends: + - pygments >=2.4.1,<3 + - python >=3.9 constrains: - - liblapack =3.9.0=28*_openblas - - libcblas =3.9.0=28*_openblas - - blas =2.128=openblas - - liblapacke =3.9.0=28*_openblas - arch: aarch64 - platform: linux + - jupyterlab >=4.0.8,<5.0.0 license: BSD-3-Clause license_family: BSD - size: 16697 - timestamp: 1738114082682 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-28_h10e41b3_openblas.conda - build_number: 28 - sha256: 5bea855a1a7435ce2238535aa4b13db8af8ee301d99a42b083b63fa64c1ea144 - md5: 166166d84a0e9571dc50210baf993b46 - depends: - - libopenblas >=0.3.28,<0.3.29.0a0 - - libopenblas >=0.3.28,<1.0a0 + size: 18711 + timestamp: 1733328194037 +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda + sha256: d03d0b7e23fa56d322993bc9786b3a43b88ccc26e58b77c756619a921ab30e86 + md5: 9dc4b2b0f41f0de41d27f3293e319357 + depends: + - babel >=2.10 + - importlib-metadata >=4.8.3 + - jinja2 >=3.0.3 + - json5 >=0.9.0 + - jsonschema >=4.18 + - jupyter_server >=1.21,<3 + - packaging >=21.3 + - python >=3.9 + - requests >=2.31 constrains: - - liblapack =3.9.0=28*_openblas - - liblapacke =3.9.0=28*_openblas - - blas =2.128=openblas - - libcblas =3.9.0=28*_openblas - arch: arm64 - platform: osx + - openapi-core >=0.18.0,<0.19.0 license: BSD-3-Clause license_family: BSD - size: 16840 - timestamp: 1738114389937 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hb9d3cd8_2.conda - sha256: d9db2de60ea917298e658143354a530e9ca5f9c63471c65cf47ab39fd2f429e3 - md5: 41b599ed2b02abcfdd84302bff174b23 + size: 49449 + timestamp: 1733599666357 +- conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 + sha256: 150c05a6e538610ca7c43beb3a40d65c90537497a4f6a5f4d15ec0451b6f5ebb + md5: 30186d27e2c9fa62b45fb1476b7200e3 depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 + - libgcc-ng >=10.3.0 arch: x86_64 platform: linux - license: MIT - license_family: MIT - size: 68851 - timestamp: 1725267660471 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlicommon-1.1.0-h86ecc28_2.conda - sha256: 64112af913974b309d67fd342e065fd184347043a6387933b3db796778a28019 - md5: 3ee026955c688f551a9999840cff4c67 + license: LGPL-2.1-or-later + size: 117831 + timestamp: 1646151697040 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/keyutils-1.6.1-h4e544f5_0.tar.bz2 + sha256: 6d4233d97a9b38acbb26e1268bcf8c10a8e79c2aed7e5a385ec3769967e3e65b + md5: 1f24853e59c68892452ef94ddd8afd4b depends: - - libgcc >=13 + - libgcc-ng >=10.3.0 arch: aarch64 platform: linux - license: MIT - license_family: MIT - size: 68982 - timestamp: 1725267774142 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.1.0-hd74edd7_2.conda - sha256: 839dacb741bdbb25e58f42088a2001b649f4f12195aeb700b5ddfca3267749e5 - md5: d0bf1dff146b799b319ea0434b93f779 - depends: - - __osx >=11.0 - arch: arm64 - platform: osx - license: MIT - license_family: MIT - size: 68426 - timestamp: 1725267943211 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hb9d3cd8_2.conda - sha256: 2892d512cad096cb03f1b66361deeab58b64e15ba525d6592bb6d609e7045edf - md5: 9566f0bd264fbd463002e759b8a82401 + license: LGPL-2.1-or-later + size: 112327 + timestamp: 1646166857935 +- conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda + sha256: 99df692f7a8a5c27cd14b5fb1374ee55e756631b9c3d659ed3ee60830249b238 + md5: 3f43953b7d3fb3aaa1d0d0723d91e368 depends: - - __glibc >=2.17,<3.0.a0 - - libbrotlicommon 1.1.0 hb9d3cd8_2 - - libgcc >=13 + - keyutils >=1.6.1,<2.0a0 + - libedit >=3.1.20191231,<3.2.0a0 + - libedit >=3.1.20191231,<4.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - openssl >=3.3.1,<4.0a0 arch: x86_64 platform: linux license: MIT license_family: MIT - size: 32696 - timestamp: 1725267669305 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlidec-1.1.0-h86ecc28_2.conda - sha256: 94c808d9ca3eb6ef30976a9843e27f027cf3a1e84e8c6835cbb696b7bdb35c4c - md5: e64d0f3b59c7c4047446b97a8624a72d + size: 1370023 + timestamp: 1719463201255 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/krb5-1.21.3-h50a48e9_0.conda + sha256: 0ec272afcf7ea7fbf007e07a3b4678384b7da4047348107b2ae02630a570a815 + md5: 29c10432a2ca1472b53f299ffb2ffa37 depends: - - libbrotlicommon 1.1.0 h86ecc28_2 - - libgcc >=13 + - keyutils >=1.6.1,<2.0a0 + - libedit >=3.1.20191231,<3.2.0a0 + - libedit >=3.1.20191231,<4.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - openssl >=3.3.1,<4.0a0 arch: aarch64 platform: linux license: MIT license_family: MIT - size: 31708 - timestamp: 1725267783442 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.1.0-hd74edd7_2.conda - sha256: 6c6862eb274f21a7c0b60e5345467a12e6dda8b9af4438c66d496a2c1a538264 - md5: 55e66e68ce55523a6811633dd1ac74e2 + size: 1474620 + timestamp: 1719463205834 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda + sha256: 4442f957c3c77d69d9da3521268cad5d54c9033f1a73f99cde0a3658937b159b + md5: c6dc8a0fdec13a0565936655c33069a1 depends: - __osx >=11.0 - - libbrotlicommon 1.1.0 hd74edd7_2 + - libcxx >=16 + - libedit >=3.1.20191231,<3.2.0a0 + - libedit >=3.1.20191231,<4.0a0 + - openssl >=3.3.1,<4.0a0 arch: arm64 platform: osx license: MIT license_family: MIT - size: 28378 - timestamp: 1725267980316 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.1.0-hb9d3cd8_2.conda - sha256: 779f58174e99de3600e939fa46eddb453ec5d3c60bb46cdaa8b4c127224dbf29 - md5: 06f70867945ea6a84d35836af780f1de + size: 1155530 + timestamp: 1719463474401 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_4.conda + sha256: db73f38155d901a610b2320525b9dd3b31e4949215c870685fd92ea61b5ce472 + md5: 01f8d123c96816249efd255a31ad7712 + depends: + - __glibc >=2.17,<3.0.a0 + constrains: + - binutils_impl_linux-64 2.43 + arch: x86_64 + platform: linux + license: GPL-3.0-only + license_family: GPL + size: 671240 + timestamp: 1740155456116 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_4.conda + sha256: 016832a70b0aa97e1c4e47e23c00b0c34def679de25146736df353199f684f0d + md5: 80c9ad5e05e91bb6c0967af3880c9742 + constrains: + - binutils_impl_linux-aarch64 2.43 + arch: aarch64 + platform: linux + license: GPL-3.0-only + license_family: GPL + size: 699058 + timestamp: 1740155620594 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda + sha256: 143a586aa67d50622ef703de57b9d43f44945836d6568e0e7aa174bd8c45e0d4 + md5: 488f260ccda0afaf08acb286db439c2f depends: - __glibc >=2.17,<3.0.a0 - - libbrotlicommon 1.1.0 hb9d3cd8_2 - libgcc >=13 + - libstdcxx >=13 + constrains: + - libabseil-static =20240722.0=cxx17* + - abseil-cpp =20240722.0 arch: x86_64 platform: linux - license: MIT - license_family: MIT - size: 281750 - timestamp: 1725267679782 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlienc-1.1.0-h86ecc28_2.conda - sha256: 41385e17bc73834b235c5aff12d6d82eccb534acb3c30986996f9dad92a0d54c - md5: 0e9bd365480c72b25c71a448257b537d + license: Apache-2.0 + license_family: Apache + size: 1311599 + timestamp: 1736008414161 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h18dbdb1_4.conda + sha256: bb6c5fb3b8de5f90735c5252b57efb3c268ee222c755569dac18065f05147670 + md5: 633b9fe454ffea2aaf29e191d946a83b depends: - - libbrotlicommon 1.1.0 h86ecc28_2 - libgcc >=13 + - libstdcxx >=13 + constrains: + - abseil-cpp =20240722.0 + - libabseil-static =20240722.0=cxx17* arch: aarch64 platform: linux - license: MIT - license_family: MIT - size: 290230 - timestamp: 1725267792697 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlienc-1.1.0-hd74edd7_2.conda - sha256: eeb1eb0d58b9d02bc1b98dc0a058f104ab168eb2f7d1c7bfa0570a12cfcdb7b7 - md5: 4f3a434504c67b2c42565c0b85c1885c + license: Apache-2.0 + license_family: Apache + size: 1334844 + timestamp: 1736008472455 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_h07bc746_4.conda + sha256: 05fa5e5e908962b9c5aba95f962e2ca81d9599c4715aebe5e4ddb72b309d1770 + md5: c2d95bd7aa8d564a9bd7eca5e571a5b3 depends: - __osx >=11.0 - - libbrotlicommon 1.1.0 hd74edd7_2 + - libcxx >=18 + constrains: + - libabseil-static =20240722.0=cxx17* + - abseil-cpp =20240722.0 arch: arm64 platform: osx - license: MIT - license_family: MIT - size: 279644 - timestamp: 1725268003553 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-28_he106b2a_openblas.conda - build_number: 28 - sha256: de293e117db53e5d78b579136509c35a5e4ad11529c05f9af83cf89be4d30de1 - md5: 4e20a1c00b4e8a984aac0f6cce59e3ac - depends: - - libblas 3.9.0 28_h59b9bed_openblas + license: Apache-2.0 + license_family: Apache + size: 1178260 + timestamp: 1736008642885 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-31_h59b9bed_openblas.conda + build_number: 31 + sha256: 9839fc4ac0cbb0aa3b9eea520adfb57311838959222654804e58f6f2d1771db5 + md5: 728dbebd0f7a20337218beacffd37916 + depends: + - libopenblas >=0.3.29,<0.3.30.0a0 + - libopenblas >=0.3.29,<1.0a0 constrains: - - blas =2.128=openblas - - liblapack =3.9.0=28*_openblas - - liblapacke =3.9.0=28*_openblas + - liblapacke =3.9.0=31*_openblas + - liblapack =3.9.0=31*_openblas + - blas =2.131=openblas + - mkl <2025 + - libcblas =3.9.0=31*_openblas arch: x86_64 platform: linux license: BSD-3-Clause license_family: BSD - size: 16539 - timestamp: 1738114043618 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-28_hab92f65_openblas.conda - build_number: 28 - sha256: ed62f13a85726f568e17ad569b5cc01a49a6c7bd334802cf1c1b15e9d10e7e93 - md5: 8cff453f547365131be5647c7680ac6d - depends: - - libblas 3.9.0 28_h1a9f1db_openblas + size: 16859 + timestamp: 1740087969120 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-31_h1a9f1db_openblas.conda + build_number: 31 + sha256: 67c9c81dd0444ecc712124034d9f74186ca82fd770b3df46b1a68564461c6a1a + md5: 48bd5bf15ccf3e409840be9caafc0ad5 + depends: + - libopenblas >=0.3.29,<0.3.30.0a0 + - libopenblas >=0.3.29,<1.0a0 constrains: - - liblapack =3.9.0=28*_openblas - - blas =2.128=openblas - - liblapacke =3.9.0=28*_openblas + - liblapack =3.9.0=31*_openblas + - blas =2.131=openblas + - libcblas =3.9.0=31*_openblas + - mkl <2025 + - liblapacke =3.9.0=31*_openblas arch: aarch64 platform: linux license: BSD-3-Clause license_family: BSD - size: 16655 - timestamp: 1738114088527 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-28_hb3479ef_openblas.conda - build_number: 28 - sha256: f08adea59381babb3568e6d23e52aff874cbc25f299821647ab1127d1e1332ca - md5: 30942dea911ce333765003a8adec4e8a - depends: - - libblas 3.9.0 28_h10e41b3_openblas + size: 16915 + timestamp: 1740087911042 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-31_h10e41b3_openblas.conda + build_number: 31 + sha256: 369586e7688b59b4f92c709b99d847d66d4d095425db327dd32ee5e6ab74697f + md5: 39b053da5e7035c6592102280aa7612a + depends: + - libopenblas >=0.3.29,<0.3.30.0a0 + - libopenblas >=0.3.29,<1.0a0 constrains: - - blas =2.128=openblas - - liblapacke =3.9.0=28*_openblas - - liblapack =3.9.0=28*_openblas + - liblapacke =3.9.0=31*_openblas + - libcblas =3.9.0=31*_openblas + - blas =2.131=openblas + - mkl <2025 + - liblapack =3.9.0=31*_openblas arch: arm64 platform: osx license: BSD-3-Clause license_family: BSD - size: 16788 - timestamp: 1738114399962 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libcrc32c-1.1.2-h9c3ff4c_0.tar.bz2 - sha256: fd1d153962764433fe6233f34a72cdeed5dcf8a883a85769e8295ce940b5b0c5 - md5: c965a5aa0d5c1c37ffc62dff36e28400 + size: 17123 + timestamp: 1740088119350 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-31_he106b2a_openblas.conda + build_number: 31 + sha256: ede8545011f5b208b151fe3e883eb4e31d495ab925ab7b9ce394edca846e0c0d + md5: abb32c727da370c481a1c206f5159ce9 depends: - - libgcc-ng >=9.4.0 - - libstdcxx-ng >=9.4.0 + - libblas 3.9.0 31_h59b9bed_openblas + constrains: + - liblapacke =3.9.0=31*_openblas + - liblapack =3.9.0=31*_openblas + - blas =2.131=openblas arch: x86_64 platform: linux license: BSD-3-Clause license_family: BSD - size: 20440 - timestamp: 1633683576494 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcrc32c-1.1.2-h01db608_0.tar.bz2 - sha256: b8b8c57a87da86b3ea24280fd6aa8efaf92f4e684b606bf2db5d3cb06ffbe2ea - md5: 268ee639c17ada0002fb04dd21816cc2 + size: 16796 + timestamp: 1740087984429 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-31_hab92f65_openblas.conda + build_number: 31 + sha256: f0457a1d2982f0a28bfbadaa02621677c324e88f7c8198c24fb3e3214c468dba + md5: 6b81dbae56a519f1ec2f25e0ee2f4334 depends: - - libgcc-ng >=9.4.0 - - libstdcxx-ng >=9.4.0 + - libblas 3.9.0 31_h1a9f1db_openblas + constrains: + - liblapack =3.9.0=31*_openblas + - blas =2.131=openblas + - liblapacke =3.9.0=31*_openblas arch: aarch64 platform: linux license: BSD-3-Clause license_family: BSD - size: 18669 - timestamp: 1633683724891 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcrc32c-1.1.2-hbdafb3b_0.tar.bz2 - sha256: 58477b67cc719060b5b069ba57161e20ba69b8695d154a719cb4b60caf577929 - md5: 32bd82a6a625ea6ce090a81c3d34edeb + size: 16824 + timestamp: 1740087917500 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-31_hb3479ef_openblas.conda + build_number: 31 + sha256: f237486cc9118d09d0f3ff8820280de34365f98ee7b7dc5ab923b04c7cbf25a5 + md5: 7353c2bf0e90834cb70545671996d871 depends: - - libcxx >=11.1.0 + - libblas 3.9.0 31_h10e41b3_openblas + constrains: + - liblapacke =3.9.0=31*_openblas + - blas =2.131=openblas + - liblapack =3.9.0=31*_openblas arch: arm64 platform: osx license: BSD-3-Clause license_family: BSD - size: 18765 - timestamp: 1633683992603 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.11.1-h332b0f4_0.conda - sha256: 3cd4075b2a7b5562e46c8ec626f6f9ca57aeecaa94ff7df57eca26daa94c9906 - md5: 2b3e0081006dc21e8bf53a91c83a055c - depends: - - __glibc >=2.17,<3.0.a0 - - krb5 >=1.21.3,<1.22.0a0 - - libgcc >=13 - - libnghttp2 >=1.64.0,<2.0a0 - - libssh2 >=1.11.1,<2.0a0 - - libzlib >=1.3.1,<2.0a0 - - openssl >=3.4.0,<4.0a0 - - zstd >=1.5.6,<1.6.0a0 - arch: x86_64 - platform: linux - license: curl - license_family: MIT - size: 423011 - timestamp: 1733999897624 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcurl-8.11.1-h6702fde_0.conda - sha256: 9fc65d21a58f4aad1bc39dfb94a178893aeb035850c5cf0ed9736674279f390b - md5: 7dec1cd271c403d1636bda5aa388a55d - depends: - - krb5 >=1.21.3,<1.22.0a0 - - libgcc >=13 - - libnghttp2 >=1.64.0,<2.0a0 - - libssh2 >=1.11.1,<2.0a0 - - libzlib >=1.3.1,<2.0a0 - - openssl >=3.4.0,<4.0a0 - - zstd >=1.5.6,<1.6.0a0 - arch: aarch64 - platform: linux - license: curl - license_family: MIT - size: 440737 - timestamp: 1733999835504 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.11.1-h73640d1_0.conda - sha256: f47c35938144c23278987c7d12096f6a42d7c850ffc277222b032073412383b6 - md5: 46d7524cabfdd199bffe63f8f19a552b - depends: - - __osx >=11.0 - - krb5 >=1.21.3,<1.22.0a0 - - libnghttp2 >=1.64.0,<2.0a0 - - libssh2 >=1.11.1,<2.0a0 - - libzlib >=1.3.1,<2.0a0 - - openssl >=3.4.0,<4.0a0 - - zstd >=1.5.6,<1.6.0a0 - arch: arm64 - platform: osx - license: curl - license_family: MIT - size: 385098 - timestamp: 1734000160270 + size: 17032 + timestamp: 1740088127097 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda sha256: 776092346da87a2a23502e14d91eb0c32699c4a1522b7331537bd1c3751dcff5 md5: 5b3e1610ff8bd5443476b91d618f5b77 @@ -3932,43 +1699,9 @@ packages: license_family: Apache size: 523505 timestamp: 1736877862502 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.23-h4ddbbb0_0.conda - sha256: 511d801626d02f4247a04fff957cc6e9ec4cc7e8622bd9acd076bcdc5de5fe66 - md5: 8dfae1d2e74767e9ce36d5fa0d8605db - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - arch: x86_64 - platform: linux - license: MIT - license_family: MIT - size: 72255 - timestamp: 1734373823254 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libdeflate-1.23-h5e3c512_0.conda - sha256: 959419d87cd2b789a9055db95704c614f31aeb70bef7949fa2f734122a3a2863 - md5: 7e7ca2607b11b180120cefc2354fc0cb - depends: - - libgcc >=13 - arch: aarch64 - platform: linux - license: MIT - license_family: MIT - size: 69862 - timestamp: 1734373858306 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.23-hec38601_0.conda - sha256: 887c02deaed6d583459eba6367023e36d8761085b2f7126e389424f57155da53 - md5: 1d8b9588be14e71df38c525767a1ac30 - depends: - - __osx >=11.0 - arch: arm64 - platform: osx - license: MIT - license_family: MIT - size: 54132 - timestamp: 1734373971372 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20240808-pl5321h7949ede_0.conda - sha256: 4d0d69ddf9cc7d724a1ccf3a9852e44c8aea9825692582bac2c4e8d21ec95ccd - md5: 8247f80f3dc464d9322e85007e307fe8 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda + sha256: d789471216e7aba3c184cd054ed61ce3f6dac6f87a50ec69291b9297f8c18724 + md5: c277e0a4d549b03ac1e9d6cbbe3d017b depends: - ncurses - __glibc >=2.17,<3.0.a0 @@ -3978,11 +1711,11 @@ packages: platform: linux license: BSD-2-Clause license_family: BSD - size: 134657 - timestamp: 1736191912705 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20240808-pl5321h976ea20_0.conda - sha256: 031daea98cf278f858b7957ad5dc475f1b5673cd5e718850529401ced64cef2c - md5: 0be40129d3dd1a152fff29a85f0785d0 + size: 134676 + timestamp: 1738479519902 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20250104-pl5321h976ea20_0.conda + sha256: c0b27546aa3a23d47919226b3a1635fccdb4f24b94e72e206a751b33f46fd8d6 + md5: fb640d776fc92b682a14e001980825b1 depends: - ncurses - libgcc >=13 @@ -3991,87 +1724,21 @@ packages: platform: linux license: BSD-2-Clause license_family: BSD - size: 148120 - timestamp: 1736192137151 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20240808-pl5321hafb1f1b_0.conda - sha256: fb934d7a03279ec8eae4bf1913ac9058fcf6fed35290d8ffa6e04157f396a3b1 - md5: af89aa84ffb5ee551ce0c137b951a3b5 + size: 148125 + timestamp: 1738479808948 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda + sha256: 66aa216a403de0bb0c1340a88d1a06adaff66bae2cfd196731aa24db9859d631 + md5: 44083d2d2c2025afca315c7a172eab2b depends: - ncurses - - __osx >=11.0 - - ncurses >=6.5,<7.0a0 - arch: arm64 - platform: osx - license: BSD-2-Clause - license_family: BSD - size: 107634 - timestamp: 1736192034117 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda - sha256: 1cd6048169fa0395af74ed5d8f1716e22c19a81a8a36f934c110ca3ad4dd27b4 - md5: 172bf1cd1ff8629f2b1179945ed45055 - depends: - - libgcc-ng >=12 - arch: x86_64 - platform: linux - license: BSD-2-Clause - license_family: BSD - size: 112766 - timestamp: 1702146165126 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libev-4.33-h31becfc_2.conda - sha256: 973af77e297f1955dd1f69c2cbdc5ab9dfc88388a5576cd152cda178af0fd006 - md5: a9a13cb143bbaa477b1ebaefbe47a302 - depends: - - libgcc-ng >=12 - arch: aarch64 - platform: linux - license: BSD-2-Clause - license_family: BSD - size: 115123 - timestamp: 1702146237623 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libev-4.33-h93a5062_2.conda - sha256: 95cecb3902fbe0399c3a7e67a5bed1db813e5ab0e22f4023a5e0f722f2cc214f - md5: 36d33e440c31857372a72137f78bacf5 - arch: arm64 - platform: osx - license: BSD-2-Clause - license_family: BSD - size: 107458 - timestamp: 1702146414478 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libevent-2.1.12-hf998b51_1.conda - sha256: 2e14399d81fb348e9d231a82ca4d816bf855206923759b69ad006ba482764131 - md5: a1cfcc585f0c42bf8d5546bb1dfb668d - depends: - - libgcc-ng >=12 - - openssl >=3.1.1,<4.0a0 - arch: x86_64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 427426 - timestamp: 1685725977222 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libevent-2.1.12-h4ba1bb4_1.conda - sha256: 01333cc7d6e6985dd5700b43660d90e9e58049182017fd24862088ecbe1458e4 - md5: 96ae6083cd1ac9f6bc81631ac835b317 - depends: - - libgcc-ng >=12 - - openssl >=3.1.1,<4.0a0 - arch: aarch64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 438992 - timestamp: 1685726046519 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libevent-2.1.12-h2757513_1.conda - sha256: 8c136d7586259bb5c0d2b913aaadc5b9737787ae4f40e3ad1beaf96c80b919b7 - md5: 1a109764bff3bdc7bdd84088347d71dc - depends: - - openssl >=3.1.1,<4.0a0 + - __osx >=11.0 + - ncurses >=6.5,<7.0a0 arch: arm64 platform: osx - license: BSD-3-Clause + license: BSD-2-Clause license_family: BSD - size: 368167 - timestamp: 1685726248899 + size: 107691 + timestamp: 1738479560845 - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda sha256: 56541b98447b58e52d824bd59d6382d609e11de1f8adf20b23143e353d2b8d26 md5: db833e03127376d461e1e13e76f09b6c @@ -4112,28 +1779,29 @@ packages: license_family: MIT size: 64693 timestamp: 1730967175868 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.2-h7f98852_5.tar.bz2 - sha256: ab6e9856c21709b7b517e940ae7028ae0737546122f83c2aa5d692860c3b149e - md5: d645c6d2ac96843a2bfaccd2d62b3ac3 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_0.conda + sha256: 67a6c95e33ebc763c1adc3455b9a9ecde901850eb2fceb8e646cc05ef3a663da + md5: e3eb7806380bc8bcecba6d749ad5f026 depends: - - libgcc-ng >=9.4.0 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 arch: x86_64 platform: linux license: MIT license_family: MIT - size: 58292 - timestamp: 1636488182923 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.4.2-h3557bc0_5.tar.bz2 - sha256: 7e9258a102480757fe3faeb225a3ca04dffd10fecd2a958c65cdb4cdf75f2c3c - md5: dddd85f4d52121fab0a8b099c5e06501 + size: 53415 + timestamp: 1739260413716 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.4.6-he21f813_0.conda + sha256: 41568066beefe7b319ff27d85952242e5b77fb753d705b8716041959e17c35c2 + md5: 966084fccf3ad62a3160666cda869f28 depends: - - libgcc-ng >=9.4.0 + - libgcc >=13 arch: aarch64 platform: linux license: MIT license_family: MIT - size: 59450 - timestamp: 1636488255090 + size: 51513 + timestamp: 1739260449772 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 sha256: 41b3d13efb775e340e4dba549ab5c029611ea6918703096b2eaa9c015c0750ca md5: 086914b672be056eb70fd4285b6783b6 @@ -4143,83 +1811,83 @@ packages: license_family: MIT size: 39020 timestamp: 1636488587153 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h77fa898_1.conda - sha256: 53eb8a79365e58849e7b1a068d31f4f9e718dc938d6f2c03e960345739a03569 - md5: 3cb76c3f10d3bc7f1105b2fc9db984df +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h767d61c_2.conda + sha256: 3a572d031cb86deb541d15c1875aaa097baefc0c580b54dc61f5edab99215792 + md5: ef504d1acbd74b7cc6849ef8af47dd03 depends: - - _libgcc_mutex 0.1 conda_forge + - __glibc >=2.17,<3.0.a0 - _openmp_mutex >=4.5 constrains: - - libgomp 14.2.0 h77fa898_1 - - libgcc-ng ==14.2.0=*_1 + - libgomp 14.2.0 h767d61c_2 + - libgcc-ng ==14.2.0=*_2 arch: x86_64 platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 848745 - timestamp: 1729027721139 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-14.2.0-he277a41_1.conda - sha256: 5d56757ccad208c79214395b00d006d8d18929a4ba49c47bd9460789a7620943 - md5: 511b511c5445e324066c3377481bcab8 + size: 847885 + timestamp: 1740240653082 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-14.2.0-he277a41_2.conda + sha256: a57f7f9ba2a12f56eafdcd25b6d75f7be10b8fc1a802a58b76a77ca8c66f4503 + md5: 6b4268a60b10f29257b51b9b67ff8d76 depends: - _openmp_mutex >=4.5 constrains: - - libgcc-ng ==14.2.0=*_1 - - libgomp 14.2.0 he277a41_1 + - libgcc-ng ==14.2.0=*_2 + - libgomp 14.2.0 he277a41_2 arch: aarch64 platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 535243 - timestamp: 1729089435134 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_1.conda - sha256: 3a76969c80e9af8b6e7a55090088bc41da4cffcde9e2c71b17f44d37b7cb87f7 - md5: e39480b9ca41323497b05492a63bc35b + size: 535507 + timestamp: 1740241069780 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_2.conda + sha256: fb7558c328b38b2f9d2e412c48da7890e7721ba018d733ebdfea57280df01904 + md5: a2222a6ada71fb478682efe483ce0f92 depends: - - libgcc 14.2.0 h77fa898_1 + - libgcc 14.2.0 h767d61c_2 arch: x86_64 platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 54142 - timestamp: 1729027726517 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-14.2.0-he9431aa_1.conda - sha256: 9b5cf168a6c7361cae869cb74b716766ee7c6d6b3f6172b32ba9bf91135efdc4 - md5: 0694c249c61469f2c0f7e2990782af21 + size: 53758 + timestamp: 1740240660904 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-14.2.0-he9431aa_2.conda + sha256: 9647f75cddc18b07eebe6e1f21500eed50a6af2c43c84e831b4c7a597e10d226 + md5: 692c2bb75f32cfafb6799cf6d1c5d0e0 depends: - - libgcc 14.2.0 he277a41_1 + - libgcc 14.2.0 he277a41_2 arch: aarch64 platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 54104 - timestamp: 1729089444587 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_1.conda - sha256: fc9e7f22a17faf74da904ebfc4d88699013d2992e55505e4aa0eb01770290977 - md5: f1fd30127802683586f768875127a987 + size: 53622 + timestamp: 1740241074834 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_2.conda + sha256: e05263e8960da03c341650f2a3ffa4ccae4e111cb198e8933a2908125459e5a6 + md5: fb54c4ea68b460c278d26eea89cfbcc3 depends: - - libgfortran5 14.2.0 hd5240d6_1 + - libgfortran5 14.2.0 hf1ad2bd_2 constrains: - - libgfortran-ng ==14.2.0=*_1 + - libgfortran-ng ==14.2.0=*_2 arch: x86_64 platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 53997 - timestamp: 1729027752995 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_1.conda - sha256: cb66e411fa32a5c6040f4e5e2a63c00897aae4c3133a9c004c2e929ccf19575b - md5: 0294b92d2f47a240bebb1e3336b495f1 + size: 53733 + timestamp: 1740240690977 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_2.conda + sha256: 996d3c0505301901a7ab23b5e7daad21635d1c065240bb0f4faf7e4f75d7f49d + md5: d8b9d9dc0c8cd97d375b48e55947ba70 depends: - - libgfortran5 14.2.0 hb6113d0_1 + - libgfortran5 14.2.0 hb6113d0_2 constrains: - - libgfortran-ng ==14.2.0=*_1 + - libgfortran-ng ==14.2.0=*_2 arch: aarch64 platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 54105 - timestamp: 1729089471124 + size: 53611 + timestamp: 1740241100147 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda sha256: 44e541b4821c96b28b27fef5630883a60ce4fee91fd9c79f25a199f8f73f337b md5: 4a55d9e169114b2b90d3ec4604cd7bbf @@ -4231,10 +1899,11 @@ packages: license_family: GPL size: 110233 timestamp: 1707330749033 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hd5240d6_1.conda - sha256: d149a37ca73611e425041f33b9d8dbed6e52ec506fe8cc1fc0ee054bddeb6d5d - md5: 9822b874ea29af082e5d36098d25427d +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hf1ad2bd_2.conda + sha256: c17b7cf3073a1f4e1f34d50872934fa326346e104d3c445abc1e62481ad6085c + md5: 556a4fdfac7287d349b8f09aba899693 depends: + - __glibc >=2.17,<3.0.a0 - libgcc >=14.2.0 constrains: - libgfortran 14.2.0 @@ -4242,11 +1911,11 @@ packages: platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 1462645 - timestamp: 1729027735353 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_1.conda - sha256: a87ff46d19916403cbf68cf1d785bf56b4d1ab7b2552468d2ea775d70782493f - md5: fc068e11b10e18f184e027782baa12b6 + size: 1461978 + timestamp: 1740240671964 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_2.conda + sha256: 7b9e1d3666a00e5a52e5d43c003bd1c73ab472804be513c070aaedca9c4c2a9a + md5: cd754566661513808ef2408c4ab99a2f depends: - libgcc >=14.2.0 constrains: @@ -4255,8 +1924,8 @@ packages: platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 1102158 - timestamp: 1729089452640 + size: 1100765 + timestamp: 1740241083241 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda sha256: bafc679eedb468a86aa4636061c55966186399ee0a04b605920d208d97ac579a md5: 66ac81d54e95c534ae488726c1f698ea @@ -4270,408 +1939,105 @@ packages: license_family: GPL size: 997381 timestamp: 1707330687590 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h77fa898_1.conda - sha256: 1911c29975ec99b6b906904040c855772ccb265a1c79d5d75c8ceec4ed89cd63 - md5: cc3573974587f12dda90d96e3e55a702 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h767d61c_2.conda + sha256: 1a3130e0b9267e781b89399580f3163632d59fe5b0142900d63052ab1a53490e + md5: 06d02030237f4d5b3d9a7e7d348fe3c6 depends: - - _libgcc_mutex 0.1 conda_forge + - __glibc >=2.17,<3.0.a0 arch: x86_64 platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 460992 - timestamp: 1729027639220 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_1.conda - sha256: 5aa53874a5e57a00f2e0c2e2910684eb674429cd5fcb803619b226a73e89aedf - md5: 376f0e73abbda6d23c0cb749adc195ef + size: 459862 + timestamp: 1740240588123 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_2.conda + sha256: 4e303711fb7413bf98995beac58e731073099d7a669a3b81e49330ca8da05174 + md5: b11c09d9463daf4cae492d29806b1889 arch: aarch64 platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 463521 - timestamp: 1729089357313 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.34.0-h2b5623c_0.conda - sha256: 348ee1dddd82dcef5a185c86e65dda8acfc9b583acc425ccb9b661f2d433b2cc - md5: 2a5142c88dd6132eaa8079f99476e922 - depends: - - __glibc >=2.17,<3.0.a0 - - libabseil * cxx17* - - libabseil >=20240722.0,<20240723.0a0 - - libcurl >=8.11.1,<9.0a0 - - libgcc >=13 - - libgrpc >=1.67.1,<1.68.0a0 - - libprotobuf >=5.28.3,<5.28.4.0a0 - - libstdcxx >=13 - - openssl >=3.4.0,<4.0a0 - constrains: - - libgoogle-cloud 2.34.0 *_0 - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 1256795 - timestamp: 1737286199784 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-2.34.0-hccf9d24_0.conda - sha256: 54267dda8fafc2a2d379ef77b6029d8240e0628d4b29758f788fb903f84397a3 - md5: 1ce0fd876001c40801b40fea22987e41 - depends: - - libabseil * cxx17* - - libabseil >=20240722.0,<20240723.0a0 - - libcurl >=8.11.1,<9.0a0 - - libgcc >=13 - - libgrpc >=1.67.1,<1.68.0a0 - - libprotobuf >=5.28.3,<5.28.4.0a0 - - libstdcxx >=13 - - openssl >=3.4.0,<4.0a0 - constrains: - - libgoogle-cloud 2.34.0 *_0 - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 1256586 - timestamp: 1737285242684 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-2.34.0-hdbe95d5_0.conda - sha256: 919d8cbcd47d5bd2244c55b2bb87e2bd2eed8215996aab8435cb7123ffd9d20e - md5: 69826544e7978fcaa6bc8c1962d96ad6 - depends: - - __osx >=11.0 - - libabseil * cxx17* - - libabseil >=20240722.0,<20240723.0a0 - - libcurl >=8.11.1,<9.0a0 - - libcxx >=18 - - libgrpc >=1.67.1,<1.68.0a0 - - libprotobuf >=5.28.3,<5.28.4.0a0 - - openssl >=3.4.0,<4.0a0 - constrains: - - libgoogle-cloud 2.34.0 *_0 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: Apache - size: 878217 - timestamp: 1737284441192 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.34.0-h0121fbd_0.conda - sha256: aa1b3b30ae6b2eab7c9e6a8e2fd8ec3776f25d2e3f0b6f9dc547ff8083bf25fa - md5: 9f0c43225243c81c6991733edcaafff5 - depends: - - __glibc >=2.17,<3.0.a0 - - libabseil - - libcrc32c >=1.1.2,<1.2.0a0 - - libcurl - - libgcc >=13 - - libgoogle-cloud 2.34.0 h2b5623c_0 - - libstdcxx >=13 - - libzlib >=1.3.1,<2.0a0 - - openssl - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 785792 - timestamp: 1737286406612 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-storage-2.34.0-hb9b2b65_0.conda - sha256: 4ad4fb7c02dcfa4c86dcf9591e0131a01fc0f2c3f2729c12882b944ddf2b8a9d - md5: 0732a5988f7f556f2c1d1f51026fc1be - depends: - - libabseil - - libcrc32c >=1.1.2,<1.2.0a0 - - libcurl - - libgcc >=13 - - libgoogle-cloud 2.34.0 hccf9d24_0 - - libstdcxx >=13 - - libzlib >=1.3.1,<2.0a0 - - openssl - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 739678 - timestamp: 1737285399565 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-storage-2.34.0-h7081f7f_0.conda - sha256: 79f6b93fb330728530036b2b38764e9d42e0eedd3ae7e549ac7eae49acd1e52b - md5: f09cb03f9cf847f1dc41b4c1f65c97c2 - depends: - - __osx >=11.0 - - libabseil - - libcrc32c >=1.1.2,<1.2.0a0 - - libcurl - - libcxx >=18 - - libgoogle-cloud 2.34.0 hdbe95d5_0 - - libzlib >=1.3.1,<2.0a0 - - openssl - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: Apache - size: 529202 - timestamp: 1737285376801 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.67.1-h25350d4_1.conda - sha256: 014627485b3cf0ea18e04c0bab07be7fb98722a3aeeb58477acc7e1c3d2f911e - md5: 0c6497a760b99a926c7c12b74951a39c - depends: - - __glibc >=2.17,<3.0.a0 - - c-ares >=1.34.4,<2.0a0 - - libabseil * cxx17* - - libabseil >=20240722.0,<20240723.0a0 - - libgcc >=13 - - libprotobuf >=5.28.3,<5.28.4.0a0 - - libre2-11 >=2024.7.2 - - libstdcxx >=13 - - libzlib >=1.3.1,<2.0a0 - - openssl >=3.4.0,<4.0a0 - - re2 - constrains: - - grpc-cpp =1.67.1 - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 7792251 - timestamp: 1735584856826 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgrpc-1.67.1-hf7ccdd3_1.conda - sha256: 3fa173dc1d7456aac2b26937daae86a08432a31640e3d6569c62edc661fc9bbe - md5: 8fb41a425bebaeb3d0fa568503612e64 - depends: - - c-ares >=1.34.4,<2.0a0 - - libabseil * cxx17* - - libabseil >=20240722.0,<20240723.0a0 - - libgcc >=13 - - libprotobuf >=5.28.3,<5.28.4.0a0 - - libre2-11 >=2024.7.2 - - libstdcxx >=13 - - libzlib >=1.3.1,<2.0a0 - - openssl >=3.4.0,<4.0a0 - - re2 - constrains: - - grpc-cpp =1.67.1 - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 7430006 - timestamp: 1735585769731 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgrpc-1.67.1-h0a426d6_1.conda - sha256: 630edf63981818ff590367cb95fddbed0f5a390464d0952c90ec81de899e84a6 - md5: 8a3cba079d6ac985e7d73c76a678fbb4 - depends: - - __osx >=11.0 - - c-ares >=1.34.4,<2.0a0 - - libabseil * cxx17* - - libabseil >=20240722.0,<20240723.0a0 - - libcxx >=18 - - libprotobuf >=5.28.3,<5.28.4.0a0 - - libre2-11 >=2024.7.2 - - libzlib >=1.3.1,<2.0a0 - - openssl >=3.4.0,<4.0a0 - - re2 - constrains: - - grpc-cpp =1.67.1 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: APACHE - size: 5311706 - timestamp: 1735585137716 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-hd590300_2.conda - sha256: 8ac2f6a9f186e76539439e50505d98581472fedb347a20e7d1f36429849f05c9 - md5: d66573916ffcf376178462f1b61c941e - depends: - - libgcc-ng >=12 - arch: x86_64 - platform: linux - license: LGPL-2.1-only - size: 705775 - timestamp: 1702682170569 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libiconv-1.17-h31becfc_2.conda - sha256: a30e09d089cb75a0d5b8e5c354694c1317da98261185ed65aa3793e741060614 - md5: 9a8eb13f14de7d761555a98712e6df65 - depends: - - libgcc-ng >=12 - arch: aarch64 - platform: linux - license: LGPL-2.1-only - size: 705787 - timestamp: 1702684557134 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.17-h0d3ecfb_2.conda - sha256: bc7de5097b97bcafcf7deaaed505f7ce02f648aac8eccc0d5a47cc599a1d0304 - md5: 69bda57310071cf6d2b86caf11573d2d - arch: arm64 - platform: osx - license: LGPL-2.1-only - size: 676469 - timestamp: 1702682458114 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda - sha256: b954e09b7e49c2f2433d6f3bb73868eda5e378278b0f8c1dd10a7ef090e14f2f - md5: ea25936bb4080d843790b586850f82b8 - depends: - - libgcc-ng >=12 - constrains: - - jpeg <0.0.0a - arch: x86_64 - platform: linux - license: IJG AND BSD-3-Clause AND Zlib - size: 618575 - timestamp: 1694474974816 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libjpeg-turbo-3.0.0-h31becfc_1.conda - sha256: 675bc1f2a8581cd34a86c412663ec29c5f90c1d9f8d11866aa1ade5cdbdf8429 - md5: ed24e702928be089d9ba3f05618515c6 - depends: - - libgcc-ng >=12 - constrains: - - jpeg <0.0.0a - arch: aarch64 - platform: linux - license: IJG AND BSD-3-Clause AND Zlib - size: 647126 - timestamp: 1694475003570 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.0.0-hb547adb_1.conda - sha256: a42054eaa38e84fc1e5ab443facac4bbc9d1b6b6f23f54b7bf4f1eb687e1d993 - md5: 3ff1e053dc3a2b8e36b9bfa4256a58d1 + size: 462783 + timestamp: 1740241005079 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-31_h7ac8fdf_openblas.conda + build_number: 31 + sha256: f583661921456e798aba10972a8abbd9d33571c655c1f66eff450edc9cbefcf3 + md5: 452b98eafe050ecff932f0ec832dd03f + depends: + - libblas 3.9.0 31_h59b9bed_openblas constrains: - - jpeg <0.0.0a - arch: arm64 - platform: osx - license: IJG AND BSD-3-Clause AND Zlib - size: 547541 - timestamp: 1694475104253 -- conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-28_h7ac8fdf_openblas.conda - build_number: 28 - sha256: 9530e6840690b78360946390a1d29624734a6b624f02c26631fb451592cbb8ef - md5: 069f40bfbf1dc55c83ddb07fc6a6ef8d - depends: - - libblas 3.9.0 28_h59b9bed_openblas - constrains: - - libcblas =3.9.0=28*_openblas - - blas =2.128=openblas - - liblapacke =3.9.0=28*_openblas + - libcblas =3.9.0=31*_openblas + - liblapacke =3.9.0=31*_openblas + - blas =2.131=openblas arch: x86_64 platform: linux license: BSD-3-Clause license_family: BSD - size: 16553 - timestamp: 1738114053556 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-28_h411afd4_openblas.conda - build_number: 28 - sha256: 1290ce1071a586e22bdd7d8f4c48000cc0005f0a67660be150d1ea5c6092129f - md5: bc4c5ee31476521e202356b56bba6077 - depends: - - libblas 3.9.0 28_h1a9f1db_openblas + size: 16790 + timestamp: 1740087997375 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-31_h411afd4_openblas.conda + build_number: 31 + sha256: 27613828ff6fb258b2e58802617df549f00089660ea8ab6c55c68f042c570162 + md5: 41dbff5eb805a75c120a7b7a1c744dc2 + depends: + - libblas 3.9.0 31_h1a9f1db_openblas constrains: - - liblapacke =3.9.0=28*_openblas - - libcblas =3.9.0=28*_openblas - - blas =2.128=openblas + - blas =2.131=openblas + - libcblas =3.9.0=31*_openblas + - liblapacke =3.9.0=31*_openblas arch: aarch64 platform: linux license: BSD-3-Clause license_family: BSD - size: 16637 - timestamp: 1738114094310 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-28_hc9a63f6_openblas.conda - build_number: 28 - sha256: 79c75a02bff20f8b001e6aecfee8d22a51552c3986e7037fca68e5ed071cc213 - md5: 45f26652530b558c21083ceb7adaf273 - depends: - - libblas 3.9.0 28_h10e41b3_openblas + size: 16845 + timestamp: 1740087923843 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-31_hc9a63f6_openblas.conda + build_number: 31 + sha256: fe55b9aaf82c6c0192c3d1fcc9b8e884f97492dda9a8de5dae29334b3135fab5 + md5: ff57a55a2cbce171ef5707fb463caf19 + depends: + - libblas 3.9.0 31_h10e41b3_openblas constrains: - - blas =2.128=openblas - - liblapacke =3.9.0=28*_openblas - - libcblas =3.9.0=28*_openblas + - liblapacke =3.9.0=31*_openblas + - libcblas =3.9.0=31*_openblas + - blas =2.131=openblas arch: arm64 platform: osx license: BSD-3-Clause license_family: BSD - size: 16793 - timestamp: 1738114407021 -- conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.3-hb9d3cd8_1.conda - sha256: e6e425252f3839e2756e4af1ea2074dffd3396c161bf460629f9dfd6a65f15c6 - md5: 2ecf2f1c7e4e21fcfe6423a51a992d84 + size: 17033 + timestamp: 1740088134988 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda + sha256: cad52e10319ca4585bc37f0bc7cce99ec7c15dc9168e42ccb96b741b0a27db3f + md5: 42d5b6a0f30d3c10cd88cb8584fda1cb depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - constrains: - - xz ==5.6.3=*_1 arch: x86_64 platform: linux license: 0BSD - size: 111132 - timestamp: 1733407410083 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.3-h86ecc28_1.conda - sha256: d1cce0b7d62d1e54e2164d3e0667ee808efc6c3870256e5b47a150cd0bf46824 - md5: eb08b903681f9f2432c320e8ed626723 + size: 111357 + timestamp: 1738525339684 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.4-h86ecc28_0.conda + sha256: 96413664f0fade54a4931940d18749cfc8e6308349dbb0cb83adb2394ca1f730 + md5: b88244e0a115cc34f7fbca9b11248e76 depends: - libgcc >=13 - constrains: - - xz ==5.6.3=*_1 arch: aarch64 platform: linux license: 0BSD - size: 124138 - timestamp: 1733409137214 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.3-h39f12f2_1.conda - sha256: d863b8257406918ffdc50ae65502f2b2d6cede29404d09a094f59509d6a0aaf1 - md5: b2553114a7f5e20ccd02378a77d836aa + size: 124197 + timestamp: 1738528201520 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.4-h39f12f2_0.conda + sha256: 560c59d3834cc652a84fb45531bd335ad06e271b34ebc216e380a89798fe8e2c + md5: e3fd1f8320a100f2b210e690a57cd615 depends: - __osx >=11.0 - constrains: - - xz ==5.6.3=*_1 arch: arm64 platform: osx license: 0BSD - size: 99129 - timestamp: 1733407496073 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda - sha256: b0f2b3695b13a989f75d8fd7f4778e1c7aabe3b36db83f0fe80b2cd812c0e975 - md5: 19e57602824042dfd0446292ef90488b - depends: - - __glibc >=2.17,<3.0.a0 - - c-ares >=1.32.3,<2.0a0 - - libev >=4.33,<4.34.0a0 - - libev >=4.33,<5.0a0 - - libgcc >=13 - - libstdcxx >=13 - - libzlib >=1.3.1,<2.0a0 - - openssl >=3.3.2,<4.0a0 - arch: x86_64 - platform: linux - license: MIT - license_family: MIT - size: 647599 - timestamp: 1729571887612 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnghttp2-1.64.0-hc8609a4_0.conda - sha256: c093c6d370aadbf0409c20b6c54c488ee2f6fea976181919fcc63e87ee232673 - md5: f52c614fa214a8bedece9421c771670d - depends: - - c-ares >=1.32.3,<2.0a0 - - libev >=4.33,<4.34.0a0 - - libev >=4.33,<5.0a0 - - libgcc >=13 - - libstdcxx >=13 - - libzlib >=1.3.1,<2.0a0 - - openssl >=3.3.2,<4.0a0 - arch: aarch64 - platform: linux - license: MIT - license_family: MIT - size: 714610 - timestamp: 1729571912479 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.64.0-h6d7220d_0.conda - sha256: 00cc685824f39f51be5233b54e19f45abd60de5d8847f1a56906f8936648b72f - md5: 3408c02539cee5f1141f9f11450b6a51 - depends: - - __osx >=11.0 - - c-ares >=1.34.2,<2.0a0 - - libcxx >=17 - - libev >=4.33,<4.34.0a0 - - libev >=4.33,<5.0a0 - - libzlib >=1.3.1,<2.0a0 - - openssl >=3.3.2,<4.0a0 - arch: arm64 - platform: osx - license: MIT - license_family: MIT - size: 566719 - timestamp: 1729572385640 + size: 98945 + timestamp: 1738525462560 - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda sha256: 26d77a3bb4dceeedc2a41bd688564fe71bf2d149fdcf117049970bc02ff1add6 md5: 30fd6e37fe21f86f4bd26d6ee73eeec7 @@ -4683,237 +2049,64 @@ packages: license_family: GPL size: 33408 timestamp: 1697359010159 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda - sha256: fd18c2b75d7411096428d36a70b36b1a17e31f7b8956b6905d145792d49e97f8 - md5: c14f32510f694e3185704d89967ec422 - depends: - - libgcc-ng >=12 - arch: aarch64 - platform: linux - license: LGPL-2.1-only - license_family: GPL - size: 34501 - timestamp: 1697358973269 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.28-pthreads_h94d23a6_1.conda - sha256: 99ba271d8a80a1af2723f2e124ffd91d850074c0389c067e6d96d72a2dbfeabe - md5: 62857b389e42b36b686331bec0922050 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - - libgfortran - - libgfortran5 >=14.2.0 - constrains: - - openblas >=0.3.28,<0.3.29.0a0 - arch: x86_64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 5578513 - timestamp: 1730772671118 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.28-pthreads_h9d3fd7e_1.conda - sha256: 30623a40764e935aa77e0d4db54c1a1589189a9bf3a03fdb445505c1e319b5a6 - md5: e8dde93dd199da3c1f2c1fcfd0042cd4 - depends: - - libgcc >=14 - - libgfortran - - libgfortran5 >=14.2.0 - constrains: - - openblas >=0.3.28,<0.3.29.0a0 - arch: aarch64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 4793435 - timestamp: 1730773029647 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.28-openmp_hf332438_1.conda - sha256: 62bb669c37a845129096f73d446cdb6bb170e4927f2fea2b661329680dbbc373 - md5: 40803a48d947c8639da6704e9a44d3ce - depends: - - __osx >=11.0 - - libgfortran 5.* - - libgfortran5 >=13.2.0 - - llvm-openmp >=18.1.8 - constrains: - - openblas >=0.3.28,<0.3.29.0a0 - arch: arm64 - platform: osx - license: BSD-3-Clause - license_family: BSD - size: 4165774 - timestamp: 1730772154295 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-1.18.0-hfcad708_1.conda - sha256: 4ea235e08676f16b0d3c3380befe1478c0fa0141512ee709b011005c55c9619f - md5: 1f5a5d66e77a39dc5bd639ec953705cf - depends: - - libabseil * cxx17* - - libabseil >=20240722.0,<20240723.0a0 - - libcurl >=8.11.1,<9.0a0 - - libgrpc >=1.67.1,<1.68.0a0 - - libopentelemetry-cpp-headers 1.18.0 ha770c72_1 - - libprotobuf >=5.28.3,<5.28.4.0a0 - - libzlib >=1.3.1,<2.0a0 - - nlohmann_json - - prometheus-cpp >=1.3.0,<1.4.0a0 - constrains: - - cpp-opentelemetry-sdk =1.18.0 - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 801927 - timestamp: 1735643375271 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopentelemetry-cpp-1.18.0-h60b47f9_1.conda - sha256: 160c493cd0f897955b0b6035b51c6d7255ffbaed3c8a12d43e8e8a719d405aba - md5: afe3c8c53f4b6d27d553c230d4b34038 - depends: - - libabseil * cxx17* - - libabseil >=20240722.0,<20240723.0a0 - - libcurl >=8.11.1,<9.0a0 - - libgrpc >=1.67.1,<1.68.0a0 - - libopentelemetry-cpp-headers 1.18.0 h8af1aa0_1 - - libprotobuf >=5.28.3,<5.28.4.0a0 - - libzlib >=1.3.1,<2.0a0 - - nlohmann_json - - prometheus-cpp >=1.3.0,<1.4.0a0 - constrains: - - cpp-opentelemetry-sdk =1.18.0 - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 800896 - timestamp: 1735643533825 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopentelemetry-cpp-1.18.0-h0c05b2d_1.conda - sha256: c6bcbd53d62a9e0d8c667e560db0ca2ecb7679277cbb3c23457aabe74fcb8cba - md5: 19c46cc18825f3924251c39ec1b0d983 - depends: - - libabseil * cxx17* - - libabseil >=20240722.0,<20240723.0a0 - - libcurl >=8.11.1,<9.0a0 - - libgrpc >=1.67.1,<1.68.0a0 - - libopentelemetry-cpp-headers 1.18.0 hce30654_1 - - libprotobuf >=5.28.3,<5.28.4.0a0 - - libzlib >=1.3.1,<2.0a0 - - nlohmann_json - - prometheus-cpp >=1.3.0,<1.4.0a0 - constrains: - - cpp-opentelemetry-sdk =1.18.0 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: APACHE - size: 529588 - timestamp: 1735643889612 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-headers-1.18.0-ha770c72_1.conda - sha256: aa1f7dea79ea8513ff77339ba7c6e9cf10dfa537143e7718b1cfb3af52b649f2 - md5: 4fb055f57404920a43b147031471e03b - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 320359 - timestamp: 1735643346175 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopentelemetry-cpp-headers-1.18.0-h8af1aa0_1.conda - sha256: 981c0b29a0789597fa8ed147b02df2d2ad0c7f863d87df74770c40cee1800228 - md5: 282193b19a19e3b5d75d18ef82713ef0 - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 319401 - timestamp: 1735643509251 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopentelemetry-cpp-headers-1.18.0-hce30654_1.conda - sha256: 82e5f5ba64debbaab3c601b265dfc0cdb4d2880feba9bada5fd2e67b9f91ada5 - md5: e965dad955841507549fdacd8f7f94c0 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: APACHE - size: 320565 - timestamp: 1735643673319 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-19.0.0-h081d1f1_8_cpu.conda - build_number: 8 - sha256: b2e1bf8634efb643a9f15fe19f9bc0877482c509eff7cee6136278a2c2fa5842 - md5: bef810a8da683aa11c644066a87f71c3 - depends: - - __glibc >=2.17,<3.0.a0 - - libarrow 19.0.0 h00a82cf_8_cpu - - libgcc >=13 - - libstdcxx >=13 - - libthrift >=0.21.0,<0.21.1.0a0 - - openssl >=3.4.0,<4.0a0 - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 1241786 - timestamp: 1737824866572 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-19.0.0-hfc78867_8_cpu.conda - build_number: 8 - sha256: 8917fc5e5bb65894106bbd461d2f9c9c0c3dc642ff5da197c941bf620ce840a0 - md5: b0d5f8c122a3e9a6b75036e43e78fcfa - depends: - - libarrow 19.0.0 h03ebaaf_8_cpu - - libgcc >=13 - - libstdcxx >=13 - - libthrift >=0.21.0,<0.21.1.0a0 - - openssl >=3.4.0,<4.0a0 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda + sha256: fd18c2b75d7411096428d36a70b36b1a17e31f7b8956b6905d145792d49e97f8 + md5: c14f32510f694e3185704d89967ec422 + depends: + - libgcc-ng >=12 arch: aarch64 platform: linux - license: Apache-2.0 - license_family: APACHE - size: 1153834 - timestamp: 1737809048861 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-19.0.0-h636d7b7_8_cpu.conda - build_number: 8 - sha256: da04e6bd7ed2ca64aadf0ad12d9752e8423e85c37e0db80e27c7ff334fcbd2b6 - md5: c1ff2e71a289fb76146591c9d3f9de0a - depends: - - __osx >=11.0 - - libarrow 19.0.0 h819e3af_8_cpu - - libcxx >=18 - - libthrift >=0.21.0,<0.21.1.0a0 - - openssl >=3.4.0,<4.0a0 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: APACHE - size: 893482 - timestamp: 1737807155720 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.46-h943b412_0.conda - sha256: a46436dadd12d58155280d68876dba2d8a3badbc8074956d14fe6530c7c7eda6 - md5: adcf7bacff219488e29cfa95a2abd8f7 + license: LGPL-2.1-only + license_family: GPL + size: 34501 + timestamp: 1697358973269 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.29-pthreads_h94d23a6_0.conda + sha256: cc5389ea254f111ef17a53df75e8e5209ef2ea6117e3f8aced88b5a8e51f11c4 + md5: 0a4d0252248ef9a0f88f2ba8b8a08e12 depends: - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libzlib >=1.3.1,<2.0a0 + - libgcc >=14 + - libgfortran + - libgfortran5 >=14.2.0 + constrains: + - openblas >=0.3.29,<0.3.30.0a0 arch: x86_64 platform: linux - license: zlib-acknowledgement - size: 292273 - timestamp: 1737791061653 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.46-hec79eb8_0.conda - sha256: be4eefe8415c9b37d158eaa9522ce4c399a572339ac2bcc4d26d6433e0ed767d - md5: f9f793497c0973d5416421aa2f96cda4 + license: BSD-3-Clause + license_family: BSD + size: 5919288 + timestamp: 1739825731827 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.29-pthreads_h9d3fd7e_0.conda + sha256: 3a2ccf4c9098cd18a636e9b7fff947fdeb4962bcfb75c9d6fd80b8c50caf6a3c + md5: a99e2bfcb1ad6362544c71281eb617e9 depends: - - libgcc >=13 - - libzlib >=1.3.1,<2.0a0 + - libgcc >=14 + - libgfortran + - libgfortran5 >=14.2.0 + constrains: + - openblas >=0.3.29,<0.3.30.0a0 arch: aarch64 platform: linux - license: zlib-acknowledgement - size: 304364 - timestamp: 1737795802176 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.46-h3783ad8_0.conda - sha256: db78a711561bb6df274ef421472d948dfd1093404db3915e891ae6d7fd37fadc - md5: 15d480fb9dad036eaa4de0b51eab3ccc + license: BSD-3-Clause + license_family: BSD + size: 4801657 + timestamp: 1739825308974 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.29-openmp_hf332438_0.conda + sha256: 8989d9e01ec8c9b2d48dbb5efbe70b356fcd15990fb53b64fcb84798982c0343 + md5: 0cd1148c68f09027ee0b0f0179f77c30 depends: - __osx >=11.0 - - libzlib >=1.3.1,<2.0a0 + - libgfortran 5.* + - libgfortran5 >=13.2.0 + - llvm-openmp >=18.1.8 + constrains: + - openblas >=0.3.29,<0.3.30.0a0 arch: arm64 platform: osx - license: zlib-acknowledgement - size: 266516 - timestamp: 1737791023678 + license: BSD-3-Clause + license_family: BSD + size: 4168442 + timestamp: 1739825514918 - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda sha256: 51125ebb8b7152e4a4e69fd2398489c4ec8473195c27cde3cbdf1cb6d18c5493 md5: d8703f1ffe5a06356f06467f1d0b9464 @@ -4960,55 +2153,52 @@ packages: license_family: BSD size: 2271580 timestamp: 1735576361997 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_2.conda - sha256: 4420f8362c71251892ba1eeb957c5e445e4e1596c0c651c28d0d8b415fe120c7 - md5: b2fede24428726dd867611664fb372e8 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsentencepiece-0.2.0-h8e10757_10.conda + sha256: dc399e0f04a09f8c1807c3b36e578eb81f81891c0ddf21de9c1fb9f048ce4031 + md5: 4f43dbcfacd3cc9a183dd3a48b94d3c0 depends: - __glibc >=2.17,<3.0.a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 - libstdcxx >=13 - constrains: - - re2 2024.07.02.* arch: x86_64 platform: linux - license: BSD-3-Clause - license_family: BSD - size: 209793 - timestamp: 1735541054068 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_2.conda - sha256: 862c20de0120f802e618dcb25913d00c5b82f91f4be60b2d46a774e851adc2f6 - md5: 9a7dbbaab49f76a6f36e5c9d98e323a7 + license: Apache-2.0 + license_family: Apache + size: 823649 + timestamp: 1735627841126 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsentencepiece-0.2.0-h6164ad9_10.conda + sha256: 57074803772f65d4075b7d6dc17ff5aa40ec3a30109fa4225ca16911504c4a8b + md5: a7a192edc9cfba26a27df3283203e6a1 depends: - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 - libstdcxx >=13 - constrains: - - re2 2024.07.02.* arch: aarch64 platform: linux - license: BSD-3-Clause - license_family: BSD - size: 204305 - timestamp: 1735540986919 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h07bc746_2.conda - sha256: 112a73ad483353751d4c5d63648c69a4d6fcebf5e1b698a860a3f5124fc3db96 - md5: 6b1e3624d3488016ca4f1ca0c412efaa + license: Apache-2.0 + license_family: Apache + size: 800865 + timestamp: 1735627982895 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsentencepiece-0.2.0-he13a0af_10.conda + sha256: 3347a8840d085ce1661928e736229f068d56c84312fbed90886e059023d85611 + md5: 1f67e5e30edd56e0a0bf6df6bb711a9d depends: - __osx >=11.0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - libcxx >=18 - constrains: - - re2 2024.07.02.* + - libprotobuf >=5.28.3,<5.28.4.0a0 arch: arm64 platform: osx - license: BSD-3-Clause - license_family: BSD - size: 167155 - timestamp: 1735541067807 + license: Apache-2.0 + license_family: Apache + size: 754657 + timestamp: 1735628030895 - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda sha256: 0105bd108f19ea8e6a78d2d994a6d4a8db16d19a41212070d2d1d48a63c34161 md5: a587892d3c13b6621a6091be690dbca2 @@ -5039,9 +2229,9 @@ packages: license: ISC size: 164972 timestamp: 1716828607917 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.48.0-hee588c1_1.conda - sha256: 22853d289ef6ec8a5b20f1aa261895b06525439990d3b139f8bfd0b5c5e32a3a - md5: 3fa05c528d8a1e2a67bbf1e36f22d3bc +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.49.1-hee588c1_1.conda + sha256: 7a09eef804ef7cf4d88215c2297eabb72af8ad0bd5b012060111c289f14bbe7d + md5: 73cea06049cc4174578b432320a003b8 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -5049,248 +2239,75 @@ packages: arch: x86_64 platform: linux license: Unlicense - size: 878223 - timestamp: 1737564987837 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.48.0-h5eb1b54_1.conda - sha256: 81dd9bf66c7f1d9064e007e2c787133100c406e7ca2de61dba9fb7b87372f255 - md5: 4f3a61fe206f20b27c385ee608bcdfda + size: 915956 + timestamp: 1739953155793 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.49.1-h5eb1b54_1.conda + sha256: 920fb3b7d3b873babf79a3e392cc82d43b8bd02a573ccaff34219efb5cf7b51e + md5: 150d64241fa27d9d35a7f421ca968a6c depends: - libgcc >=13 - libzlib >=1.3.1,<2.0a0 arch: aarch64 platform: linux license: Unlicense - size: 1044879 - timestamp: 1737565049785 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.48.0-h3f77e49_1.conda - sha256: 17c06940cc2a13fd6a17effabd6881b1477db38b2cd3ee2571092d293d3fdd75 - md5: 4c55169502ecddf8077973a987d08f08 + size: 915118 + timestamp: 1739953101699 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.1-h3f77e49_1.conda + sha256: 266639fb10ca92287961574b0b4d6031fa40dd9d723d64a0fcb08513a24dab03 + md5: c83357a21092bd952933c36c5cb4f4d6 depends: - __osx >=11.0 - libzlib >=1.3.1,<2.0a0 arch: arm64 platform: osx license: Unlicense - size: 852831 - timestamp: 1737564996616 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hf672d98_0.conda - sha256: 0407ac9fda2bb67e11e357066eff144c845801d00b5f664efbc48813af1e7bb9 - md5: be2de152d8073ef1c01b7728475f2fe7 + size: 898767 + timestamp: 1739953312379 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-h8f9b012_2.conda + sha256: 8f5bd92e4a24e1d35ba015c5252e8f818898478cb3bc50bd8b12ab54707dc4da + md5: a78c856b6dc6bf4ea8daeb9beaaa3fb0 depends: - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libzlib >=1.3.1,<2.0a0 - - openssl >=3.4.0,<4.0a0 - arch: x86_64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 304278 - timestamp: 1732349402869 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libssh2-1.11.1-ha41c0db_0.conda - sha256: 40f2af5357457546bd11cd64a3b9043d83865180f65ce602515c35f353be35c7 - md5: aeffe03c0e598f015aab08dbb04f6ee4 - depends: - - libgcc >=13 - - libzlib >=1.3.1,<2.0a0 - - openssl >=3.4.0,<4.0a0 - arch: aarch64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 311577 - timestamp: 1732349396421 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.1-h9cc3647_0.conda - sha256: f7047c6ed44bcaeb04432e8c74da87591940d091b0a3940c0d884b7faa8062e9 - md5: ddc7194676c285513706e5fc64f214d7 - depends: - - libzlib >=1.3.1,<2.0a0 - - openssl >=3.4.0,<4.0a0 - arch: arm64 - platform: osx - license: BSD-3-Clause - license_family: BSD - size: 279028 - timestamp: 1732349599461 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-hc0a3c3a_1.conda - sha256: 4661af0eb9bdcbb5fb33e5d0023b001ad4be828fccdcc56500059d56f9869462 - md5: 234a5554c53625688d51062645337328 - depends: - - libgcc 14.2.0 h77fa898_1 + - libgcc 14.2.0 h767d61c_2 arch: x86_64 platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 3893695 - timestamp: 1729027746910 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_1.conda - sha256: 519556d2c93f1b487091ce046d62e762286177f4a670ec10e16005177d0bcab3 - md5: 37f489acd39e22b623d2d1e5ac6d195c + size: 3884556 + timestamp: 1740240685253 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_2.conda + sha256: c30a74bc996013907f6d9f344da007c26d98ef9a0831151cd50aece3125c45d5 + md5: eadee2cda99697e29411c1013c187b92 depends: - - libgcc 14.2.0 he277a41_1 + - libgcc 14.2.0 he277a41_2 arch: aarch64 platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 3816794 - timestamp: 1729089463404 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_1.conda - sha256: 25bb30b827d4f6d6f0522cc0579e431695503822f144043b93c50237017fffd8 - md5: 8371ac6457591af2cf6159439c1fd051 + size: 3810779 + timestamp: 1740241094774 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_2.conda + sha256: e86f38b007cf97cc2c67cd519f2de12a313c4ee3f5ef11652ad08932a5e34189 + md5: c75da67f045c2627f59e6fcb5f4e3a9b depends: - - libstdcxx 14.2.0 hc0a3c3a_1 + - libstdcxx 14.2.0 h8f9b012_2 arch: x86_64 platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 54105 - timestamp: 1729027780628 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_1.conda - sha256: 9f97461bd55a2745a7a0941f3502a047f15bfe7bb2952dc7fb204b3202f866fd - md5: 0e75771b8a03afae5a2c6ce71bc733f5 + size: 53830 + timestamp: 1740240722530 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_2.conda + sha256: 0107886ead6f255956d8e520f8dff260f9ab3d0d51512f18c52710c406e4b2df + md5: c934c1fddad582fcc385b608eb06a70c depends: - - libstdcxx 14.2.0 h3f4de04_1 + - libstdcxx 14.2.0 h3f4de04_2 arch: aarch64 platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 54133 - timestamp: 1729089498541 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libthrift-0.21.0-h0e7cc3e_0.conda - sha256: ebb395232973c18745b86c9a399a4725b2c39293c9a91b8e59251be013db42f0 - md5: dcb95c0a98ba9ff737f7ae482aef7833 - depends: - - __glibc >=2.17,<3.0.a0 - - libevent >=2.1.12,<2.1.13.0a0 - - libgcc >=13 - - libstdcxx >=13 - - libzlib >=1.3.1,<2.0a0 - - openssl >=3.3.2,<4.0a0 - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 425773 - timestamp: 1727205853307 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libthrift-0.21.0-h154c74f_0.conda - sha256: f04ab1417aca1687edff9c30d8423ace285eb8c053dc16d595c6e47cfeefb274 - md5: c28792bf37f4ecdce8e3cb9e40750650 - depends: - - libevent >=2.1.12,<2.1.13.0a0 - - libgcc >=13 - - libstdcxx >=13 - - libzlib >=1.3.1,<2.0a0 - - openssl >=3.3.2,<4.0a0 - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 417329 - timestamp: 1727205944238 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libthrift-0.21.0-h64651cc_0.conda - sha256: 7a6c7d5f58cbbc2ccd6493b4b821639fdb0701b9b04c737a949e8cb6adf1c9ad - md5: 7ce2bd2f650f8c31ad7ba4c7bfea61b7 - depends: - - __osx >=11.0 - - libcxx >=17 - - libevent >=2.1.12,<2.1.13.0a0 - - libzlib >=1.3.1,<2.0a0 - - openssl >=3.3.2,<4.0a0 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: APACHE - size: 324342 - timestamp: 1727206096912 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hd9ff511_3.conda - sha256: b224e16b88d76ea95e4af56e2bc638c603bd26a770b98d117d04541d3aafa002 - md5: 0ea6510969e1296cc19966fad481f6de - depends: - - __glibc >=2.17,<3.0.a0 - - lerc >=4.0.0,<5.0a0 - - libdeflate >=1.23,<1.24.0a0 - - libgcc >=13 - - libjpeg-turbo >=3.0.0,<4.0a0 - - liblzma >=5.6.3,<6.0a0 - - libstdcxx >=13 - - libwebp-base >=1.4.0,<2.0a0 - - libzlib >=1.3.1,<2.0a0 - - zstd >=1.5.6,<1.6.0a0 - arch: x86_64 - platform: linux - license: HPND - size: 428173 - timestamp: 1734398813264 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.0-h88f7998_3.conda - sha256: 5888bd66ba7606ae8596856c7dac800940ecad0aed77d6aa37db69d434c81cf0 - md5: 36a0ea4a173338c8725dc0807e99cf22 - depends: - - lerc >=4.0.0,<5.0a0 - - libdeflate >=1.23,<1.24.0a0 - - libgcc >=13 - - libjpeg-turbo >=3.0.0,<4.0a0 - - liblzma >=5.6.3,<6.0a0 - - libstdcxx >=13 - - libwebp-base >=1.4.0,<2.0a0 - - libzlib >=1.3.1,<2.0a0 - - zstd >=1.5.6,<1.6.0a0 - arch: aarch64 - platform: linux - license: HPND - size: 464699 - timestamp: 1734398752249 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-h551f018_3.conda - sha256: 91417846157e04992801438a496b151df89604b2e7c6775d6f701fcd0cbed5ae - md5: a5d084a957563e614ec0c0196d890654 - depends: - - __osx >=11.0 - - lerc >=4.0.0,<5.0a0 - - libcxx >=18 - - libdeflate >=1.23,<1.24.0a0 - - libjpeg-turbo >=3.0.0,<4.0a0 - - liblzma >=5.6.3,<6.0a0 - - libwebp-base >=1.4.0,<2.0a0 - - libzlib >=1.3.1,<2.0a0 - - zstd >=1.5.6,<1.6.0a0 - arch: arm64 - platform: osx - license: HPND - size: 370600 - timestamp: 1734398863052 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.10.0-h4c51ac1_0.conda - sha256: 8e41563ee963bf8ded06da45f4e70bf42f913cb3c2e79364eb3218deffa3cd74 - md5: aeccfff2806ae38430638ffbb4be9610 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - arch: x86_64 - platform: linux - license: MIT - license_family: MIT - size: 82745 - timestamp: 1737244366901 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.10.0-ha346350_0.conda - sha256: 9c333e07b76ae1ea2c882db764be52dc82f632be66d993a50b35ca9c5475074a - md5: c5166bcfb8348e8fc31ee16ec3981a5e - depends: - - libgcc >=13 - arch: aarch64 - platform: linux - license: MIT - license_family: MIT - size: 82679 - timestamp: 1737329054400 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.10.0-hda25de7_0.conda - sha256: aca3ef31d3dff5cefd3790742a5ee6548f1cf0201d0e8cee08b01da503484eb6 - md5: 5f741aed1d8d393586a5fdcaaa87f45c - depends: - - __osx >=11.0 - arch: arm64 - platform: osx - license: MIT - license_family: MIT - size: 83628 - timestamp: 1737244450097 + size: 53715 + timestamp: 1740241126343 - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda sha256: 787eb542f055a2b3de553614b25f09eefb0a0931b0c87dbcce6efdfd92f04f18 md5: 40b61aab5c7ba9ff276c41cfffe6b80b @@ -5313,123 +2330,6 @@ packages: license_family: BSD size: 35720 timestamp: 1680113474501 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.50.0-hb9d3cd8_0.conda - sha256: b4a8890023902aef9f1f33e3e35603ad9c2f16c21fdb58e968fa6c1bd3e94c0b - md5: 771ee65e13bc599b0b62af5359d80169 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - arch: x86_64 - platform: linux - license: MIT - license_family: MIT - size: 891272 - timestamp: 1737016632446 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuv-1.50.0-h86ecc28_0.conda - sha256: 67914c7f171d343059144d804c2f17fcd621a94e45f179a0fd843b8c1618823e - md5: 915db044076cbbdffb425170deb4ce38 - depends: - - libgcc >=13 - arch: aarch64 - platform: linux - license: MIT - license_family: MIT - size: 621056 - timestamp: 1737016626950 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libuv-1.50.0-h5505292_0.conda - sha256: d13fb49d4c8262bf2c44ffb2c77bb2b5d0f85fc6de76bdb75208efeccb29fce6 - md5: 20717343fb30798ab7c23c2e92b748c1 - depends: - - __osx >=11.0 - arch: arm64 - platform: osx - license: MIT - license_family: MIT - size: 418890 - timestamp: 1737016751326 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.5.0-h851e524_0.conda - sha256: c45283fd3e90df5f0bd3dbcd31f59cdd2b001d424cf30a07223655413b158eaf - md5: 63f790534398730f59e1b899c3644d4a - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - constrains: - - libwebp 1.5.0 - arch: x86_64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 429973 - timestamp: 1734777489810 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libwebp-base-1.5.0-h0886dbf_0.conda - sha256: b3d881a0ae08bb07fff7fa8ead506c8d2e0388733182fe4f216f3ec5d61ffcf0 - md5: 95ef4a689b8cc1b7e18b53784d88f96b - depends: - - libgcc >=13 - constrains: - - libwebp 1.5.0 - arch: aarch64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 362623 - timestamp: 1734779054659 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.5.0-h2471fea_0.conda - sha256: f8bdb876b4bc8cb5df47c28af29188de8911c3fea4b799a33743500149de3f4a - md5: 569466afeb84f90d5bb88c11cc23d746 - depends: - - __osx >=11.0 - constrains: - - libwebp 1.5.0 - arch: arm64 - platform: osx - license: BSD-3-Clause - license_family: BSD - size: 290013 - timestamp: 1734777593617 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda - sha256: 666c0c431b23c6cec6e492840b176dde533d48b7e6fb8883f5071223433776aa - md5: 92ed62436b625154323d40d5f2f11dd7 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - pthread-stubs - - xorg-libxau >=1.0.11,<2.0a0 - - xorg-libxdmcp - arch: x86_64 - platform: linux - license: MIT - license_family: MIT - size: 395888 - timestamp: 1727278577118 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcb-1.17.0-h262b8f6_0.conda - sha256: 461cab3d5650ac6db73a367de5c8eca50363966e862dcf60181d693236b1ae7b - md5: cd14ee5cca2464a425b1dbfc24d90db2 - depends: - - libgcc >=13 - - pthread-stubs - - xorg-libxau >=1.0.11,<2.0a0 - - xorg-libxdmcp - arch: aarch64 - platform: linux - license: MIT - license_family: MIT - size: 397493 - timestamp: 1727280745441 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxcb-1.17.0-hdb1d25a_0.conda - sha256: bd3816218924b1e43b275863e21a3e13a5db4a6da74cca8e60bc3c213eb62f71 - md5: af523aae2eca6dfa1c8eec693f5b9a79 - depends: - - __osx >=11.0 - - pthread-stubs - - xorg-libxau >=1.0.11,<2.0a0 - - xorg-libxdmcp - arch: arm64 - platform: osx - license: MIT - license_family: MIT - size: 323658 - timestamp: 1727278733917 - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda sha256: 6ae68e0b86423ef188196fff6207ed0c8195dd84273cb5623b85aa08033a410c md5: 5aa797f8787fe7a17d1b0821485b5adc @@ -5450,53 +2350,6 @@ packages: license: LGPL-2.1-or-later size: 114269 timestamp: 1702724369203 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.5-h0d44e9d_1.conda - sha256: 306e18aa647d8208ad2cd0e62d84933222b2fbe93d2d53cd5283d2256b1d54de - md5: f5b05674697ae7d2c5932766695945e1 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libiconv >=1.17,<2.0a0 - - liblzma >=5.6.3,<6.0a0 - - libzlib >=1.3.1,<2.0a0 - constrains: - - icu <0.0a0 - arch: x86_64 - platform: linux - license: MIT - license_family: MIT - size: 689993 - timestamp: 1733443678322 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.5-h2e0c361_1.conda - sha256: dc0e86d35a836af6e99d18f50c6551fc64c53ed3a3da5a9fea90e78763cf14b4 - md5: 63410f85031930cde371dfe0ee89109a - depends: - - icu >=75.1,<76.0a0 - - libgcc >=13 - - libiconv >=1.17,<2.0a0 - - liblzma >=5.6.3,<6.0a0 - - libzlib >=1.3.1,<2.0a0 - arch: aarch64 - platform: linux - license: MIT - license_family: MIT - size: 732155 - timestamp: 1733443825814 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.5-h178c5d8_1.conda - sha256: d7af3f25a4cece170502acd38f2dafbea4521f373f46dcb28a37fbe6ac2da544 - md5: 3dc3cff0eca1640a6acbbfab2f78139e - depends: - - __osx >=11.0 - - icu >=75.1,<76.0a0 - - libiconv >=1.17,<2.0a0 - - liblzma >=5.6.3,<6.0a0 - - libzlib >=1.3.1,<2.0a0 - arch: arm64 - platform: osx - license: MIT - license_family: MIT - size: 582898 - timestamp: 1733443841584 - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda sha256: d4bfe88d7cb447768e31650f06257995601f89076080e76df55e3112d4e47dc4 md5: edb0dca6bc32e4f4789199455a1dbeb8 @@ -5550,53 +2403,6 @@ packages: license_family: APACHE size: 280830 timestamp: 1736986295869 -- conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.10.0-h5888daf_1.conda - sha256: 47326f811392a5fd3055f0f773036c392d26fdb32e4d8e7a8197eed951489346 - md5: 9de5350a85c4a20c685259b889aa6393 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libstdcxx >=13 - arch: x86_64 - platform: linux - license: BSD-2-Clause - license_family: BSD - size: 167055 - timestamp: 1733741040117 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.10.0-h5ad3122_1.conda - sha256: 67e55058d275beea76c1882399640c37b5be8be4eb39354c94b610928e9a0573 - md5: 6654e411da94011e8fbe004eacb8fe11 - depends: - - libgcc >=13 - - libstdcxx >=13 - arch: aarch64 - platform: linux - license: BSD-2-Clause - license_family: BSD - size: 184953 - timestamp: 1733740984533 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.10.0-h286801f_1.conda - sha256: 94d3e2a485dab8bdfdd4837880bde3dd0d701e2b97d6134b8806b7c8e69c8652 - md5: 01511afc6cc1909c5303cf31be17b44f - depends: - - __osx >=11.0 - - libcxx >=18 - arch: arm64 - platform: osx - license: BSD-2-Clause - license_family: BSD - size: 148824 - timestamp: 1733741047892 -- conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_1.conda - sha256: 0fbacdfb31e55964152b24d5567e9a9996e1e7902fb08eb7d91b5fd6ce60803a - md5: fee3164ac23dfca50cfcc8b85ddefb81 - depends: - - mdurl >=0.1,<1 - - python >=3.9 - license: MIT - license_family: MIT - size: 64430 - timestamp: 1733250550053 - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_1.conda sha256: 4a6bf68d2a2b669fecc9a4a009abd1cf8e72c2289522ff00d81b5a6e51ae78f5 md5: eb227c3e0bf58f5bd69c0532b157975b @@ -5654,127 +2460,178 @@ packages: license_family: BSD size: 14467 timestamp: 1733417051523 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025013105-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022718-release.conda noarch: python - sha256: 1b8fcd33ceff5e6e87603d1de72c12493fe20e4f5204bc3d061a7e2b8ab33e84 - md5: 74268fafa5367b803cb82c74751fb0f0 + sha256: f3dcb14fed5470c0fc521542cbd2f1c56ca7e46d560f46176b8f926198cb3cbd + md5: 01fe5e0cf46c84a6345e323ad1316764 depends: - - max-core ==25.1.0.dev2025013105 release - - max-python >=25.1.0.dev2025013105,<26.0a0 - - mojo-jupyter ==25.1.0.dev2025013105 release - - mblack ==25.1.0.dev2025013105 release + - max-core ==25.2.0.dev2025022718 release + - max-python ==25.2.0.dev2025022718 release + - mojo-jupyter ==25.2.0.dev2025022718 release + - mblack ==25.2.0.dev2025022718 release license: LicenseRef-Modular-Proprietary - size: 9918 - timestamp: 1738300734602 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025013105-release.conda - sha256: 1ac416f06cc0adad41d5ca07d55c0e146073c2971ba30696ce561fd7af5afb1a - md5: ddc94cd4ca461791a9e3ae7a571e78ed + size: 9905 + timestamp: 1740680254354 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022718-release.conda + sha256: 847d5767109a305d7bcad4ac29248a74a384034692934a0c54b00a590c27094a + md5: fc5a9ae36c7805979bd58ca55a25066f depends: - - mblack ==25.1.0.dev2025013105 release + - mblack ==25.2.0.dev2025022718 release license: LicenseRef-Modular-Proprietary - size: 243598857 - timestamp: 1738300650444 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025013105-release.conda - sha256: faee2aee06a50c1ca71fc7df91564dafe97986a71474fe0c2694b663bc7b0a1d - md5: 203e66b533a2e81c659276ce2a211b6b + size: 249811868 + timestamp: 1740680254354 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022718-release.conda + sha256: 250c35ecccd302e6c7de836ac200a5ece92e74508c2590c585d8803d488fd650 + md5: d88728b468c85902512a0f9b99251035 depends: - - mblack ==25.1.0.dev2025013105 release + - mblack ==25.2.0.dev2025022718 release license: LicenseRef-Modular-Proprietary - size: 246147380 - timestamp: 1738300734602 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025013105-release.conda - sha256: 12c6501ffb4e951a4e583ef694529e5621ee4c9d06554b0db464de1a37552974 - md5: 5663c30c6ab3e0a29c0fdb08f5634a68 + size: 252108573 + timestamp: 1740680207793 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022718-release.conda + sha256: fb28d9e61aa507ea84b470082d3dc96844a24fe672d4e4c57e832655c5d0a202 + md5: dd8734453f7276a258f3351cc5c506c3 depends: - - mblack ==25.1.0.dev2025013105 release + - mblack ==25.2.0.dev2025022718 release license: LicenseRef-Modular-Proprietary - size: 209002959 - timestamp: 1738349723783 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025013105-3.12release.conda - sha256: d08de32fd4aa12b4593146fc6f268a105b264e279c3a75009870e8d310778ea6 - md5: 27c0957cae6a8620faf67beb5f320aa4 + size: 217273450 + timestamp: 1740681819160 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022718-release.conda + noarch: python + sha256: 831b4d62f66f0083321121c6ba25dedab3ee41d5e9f19d9752969592214af398 + md5: f828ace91aa057e4774e84ad459adccf depends: - - max-core ==25.1.0.dev2025013105 release - - python - - fastapi - - httpx - - huggingface_hub + - max-core ==25.2.0.dev2025022718 release + - click >=8.0.0 - numpy >=1.18,<2.0 - - opentelemetry-api + - sentencepiece >=0.2.0 + - tqdm >=4.67.1 + constrains: + - aiohttp >=3.11.12 + - fastapi >=0.114.2 + - gguf >=0.14.0 + - hf-transfer >=0.1.9 + - httpx >=0.28.1 + - huggingface_hub >=0.24.0 + - nvitop >=1.4.1 + - opentelemetry-api >=1.29.0 - opentelemetry-exporter-otlp-proto-http >=1.27.0 - - opentelemetry-exporter-prometheus >=0.48b0 - - opentelemetry-sdk >=1.27.0 - - pillow - - pydantic-settings >=2.4.0,<3 - - pydantic >=2.4.0,<3 - - pyinstrument - - python-json-logger - - sse-starlette >=2.1.3,<3 - - transformers - - typing_extensions - - uvicorn - - python_abi 3.12.* *_cp312 + - opentelemetry-exporter-prometheus <1.0.0 + - opentelemetry-sdk >=1.29.0,<2.0 + - pillow >=10.3.0 + - prometheus_client >=0.21.0 + - prometheus-async >=22.2.0 + - psutil >=6.1.1 + - pydantic + - pydantic-settings >=2.7.1 + - pyinstrument >=5.0.1 + - python-json-logger >=2.0.7 + - requests >=2.32.3 + - rich >=13.9.4 + - safetensors >=0.5.2 + - sentinel >=0.3.0 + - sse-starlette >=2.1.2 + - tokenizers >=0.19.0 + - pytorch >=2.2.2,<=2.5.1 + - transformers >=4.40.1 + - uvicorn >=0.34.0 + - uvloop >=0.21.0 + - xgrammar ==0.1.11 license: LicenseRef-Modular-Proprietary - size: 120809611 - timestamp: 1738300650444 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025013105-3.12release.conda - sha256: 55f72914a83403fac6e20372314774856b769c67f59791a217593be0132e0433 - md5: 1467c9c730b2fba872caba9c325d3a93 + size: 123584411 + timestamp: 1740680254354 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022718-release.conda + noarch: python + sha256: b9e5755b7bf6314a37a90ef0250c93f5e7c693954d7a6389a97ab9ef06e23cc3 + md5: bfd2e752d0fc9516b78a17169ce9cc78 depends: - - max-core ==25.1.0.dev2025013105 release - - python - - fastapi - - httpx - - huggingface_hub + - max-core ==25.2.0.dev2025022718 release + - click >=8.0.0 - numpy >=1.18,<2.0 - - opentelemetry-api + - sentencepiece >=0.2.0 + - tqdm >=4.67.1 + constrains: + - aiohttp >=3.11.12 + - fastapi >=0.114.2 + - gguf >=0.14.0 + - hf-transfer >=0.1.9 + - httpx >=0.28.1 + - huggingface_hub >=0.24.0 + - nvitop >=1.4.1 + - opentelemetry-api >=1.29.0 - opentelemetry-exporter-otlp-proto-http >=1.27.0 - - opentelemetry-exporter-prometheus >=0.48b0 - - opentelemetry-sdk >=1.27.0 - - pillow - - pydantic-settings >=2.4.0,<3 - - pydantic >=2.4.0,<3 - - pyinstrument - - python-json-logger - - sse-starlette >=2.1.3,<3 - - transformers - - typing_extensions - - uvicorn - - python_abi 3.12.* *_cp312 + - opentelemetry-exporter-prometheus <1.0.0 + - opentelemetry-sdk >=1.29.0,<2.0 + - pillow >=10.3.0 + - prometheus_client >=0.21.0 + - prometheus-async >=22.2.0 + - psutil >=6.1.1 + - pydantic + - pydantic-settings >=2.7.1 + - pyinstrument >=5.0.1 + - python-json-logger >=2.0.7 + - requests >=2.32.3 + - rich >=13.9.4 + - safetensors >=0.5.2 + - sentinel >=0.3.0 + - sse-starlette >=2.1.2 + - tokenizers >=0.19.0 + - pytorch >=2.2.2,<=2.5.1 + - transformers >=4.40.1 + - uvicorn >=0.34.0 + - uvloop >=0.21.0 + - xgrammar ==0.1.11 license: LicenseRef-Modular-Proprietary - size: 123341772 - timestamp: 1738300734603 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025013105-3.12release.conda - sha256: 880116fc694ec36b549849a351f70e00f092e9de19a17862f76184672ae2bc83 - md5: 8493ea4815ffa8ae223182f94a7a6ecc + size: 126004454 + timestamp: 1740680207793 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022718-release.conda + noarch: python + sha256: 7da9f4655082bb64c2b0cc996ffefa0ce5c49744854ed77a9b0d000e27cf5a55 + md5: b16d498a148aa61dca2a6bfec5cb8e46 depends: - - max-core ==25.1.0.dev2025013105 release - - python - - fastapi - - httpx - - huggingface_hub + - max-core ==25.2.0.dev2025022718 release + - click >=8.0.0 - numpy >=1.18,<2.0 - - opentelemetry-api + - sentencepiece >=0.2.0 + - tqdm >=4.67.1 + constrains: + - aiohttp >=3.11.12 + - fastapi >=0.114.2 + - gguf >=0.14.0 + - hf-transfer >=0.1.9 + - httpx >=0.28.1 + - huggingface_hub >=0.24.0 + - nvitop >=1.4.1 + - opentelemetry-api >=1.29.0 - opentelemetry-exporter-otlp-proto-http >=1.27.0 - - opentelemetry-exporter-prometheus >=0.48b0 - - opentelemetry-sdk >=1.27.0 - - pillow - - pydantic-settings >=2.4.0,<3 - - pydantic >=2.4.0,<3 - - pyinstrument - - python-json-logger - - sse-starlette >=2.1.3,<3 - - transformers - - typing_extensions - - uvicorn - - python_abi 3.12.* *_cp312 + - opentelemetry-exporter-prometheus <1.0.0 + - opentelemetry-sdk >=1.29.0,<2.0 + - pillow >=10.3.0 + - prometheus_client >=0.21.0 + - prometheus-async >=22.2.0 + - psutil >=6.1.1 + - pydantic + - pydantic-settings >=2.7.1 + - pyinstrument >=5.0.1 + - python-json-logger >=2.0.7 + - requests >=2.32.3 + - rich >=13.9.4 + - safetensors >=0.5.2 + - sentinel >=0.3.0 + - sse-starlette >=2.1.2 + - tokenizers >=0.19.0 + - pytorch >=2.2.2,<=2.5.1 + - transformers >=4.40.1 + - uvicorn >=0.34.0 + - uvloop >=0.21.0 + - xgrammar ==0.1.11 license: LicenseRef-Modular-Proprietary - size: 108536428 - timestamp: 1738349723783 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025013105-release.conda + size: 112658409 + timestamp: 1740681819160 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022718-release.conda noarch: python - sha256: 0c8bbcd2d1133b99b54ebff3c8f5461c025c9de38bd8b6a65b5dc01f285dfa22 - md5: 01c6b9f78100a28719df93826b30be0d + sha256: ff042a8abfed0e2e36b207e3d4f59a2b4577dea7f099b08d1aaef128ab796f09 + md5: 719ca7123d53415adcdd7f0cb8396c51 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -5782,126 +2639,33 @@ packages: - packaging >=22.0 - pathspec >=0.9.0 - platformdirs >=2 + - typing_extensions >=v4.12.2 - python license: MIT - size: 130813 - timestamp: 1738300734602 -- conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda - sha256: 78c1bbe1723449c52b7a9df1af2ee5f005209f67e40b6e1d3c7619127c43b1c7 - md5: 592132998493b3ff25fd7479396e8351 - depends: - - python >=3.9 - license: MIT - license_family: MIT - size: 14465 - timestamp: 1733255681319 -- conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.1-pyhd8ed1ab_0.conda - sha256: b82ceee187e715a287d2e1dc2d79dd2c68f84858e9b9dbac38df3d48a6f426d9 - md5: 6e6b93442c2ab2f9902a3637b70c720f + size: 130852 + timestamp: 1740680254353 +- conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.2-pyhd8ed1ab_0.conda + sha256: 63d5308ac732b2f8130702c83ee40ce31c5451ebcb6e70075b771cc8f7df0156 + md5: 0982b0f06168fe3421d09f70596ca1f0 depends: - python >=3.9 - typing_extensions license: BSD-3-Clause license_family: BSD - size: 68935 - timestamp: 1738085278568 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025013105-release.conda + size: 68903 + timestamp: 1739952304731 +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022718-release.conda noarch: python - sha256: 122b3ad0404caebf7c5271d75ae5504f228795f529b98be2011d1a1cdc71f93d - md5: f218b84b9f1baa40269eaa760534be98 + sha256: 19c33e23b27e240fee0b2a1d56921802ac88558dc2da417837cd590175561e16 + md5: 6b8d00b15817db11e026f824f7f0ba14 depends: - - max-core ==25.1.0.dev2025013105 release + - max-core ==25.2.0.dev2025022718 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22925 - timestamp: 1738300734602 -- conda: 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 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 61507 - timestamp: 1733913288935 -- conda: 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 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 63077 - timestamp: 1733913233032 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/multidict-6.1.0-py312hdb8e49c_1.conda - sha256: 482fd09fb798090dc8cce2285fa69f43b1459099122eac2fb112d9b922b9f916 - md5: 0048335516fed938e4dd2c457b4c5b9b - depends: - - __osx >=11.0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: APACHE - size: 55968 - timestamp: 1729065664275 -- conda: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.15-py312h98912ed_1.conda - sha256: bb612a921fafda6375a2204ffebd8811db8dd3b8f25ac9886cc9bcbff7e3664e - md5: 5a64b9f44790d9a187a85366dd0ffa8d - depends: - - dill >=0.3.6 - - libgcc-ng >=12 - - python >=3.12.0rc3,<3.13.0a0 - - python_abi 3.12.* *_cp312 - arch: x86_64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 335666 - timestamp: 1695459025249 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.15-py312hdd3e373_1.conda - sha256: c53362cdf346f314e111faddc53061e3fd2ece0ba68ca303f5dd109976df158f - md5: 173a1692d2b3ddc265dc6afd21a869b3 - depends: - - dill >=0.3.6 - - libgcc-ng >=12 - - python >=3.12.0rc3,<3.13.0a0 - - python >=3.12.0rc3,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - arch: aarch64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 336110 - timestamp: 1695459137796 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/multiprocess-0.70.15-py312h02f2b3b_1.conda - sha256: 8041371e3ec3fbc2ca13c71b0180672896e6382e62892d9f6b11a4c5dd675951 - md5: 910ef2223c71902175418d9163152788 - depends: - - dill >=0.3.6 - - python >=3.12.0rc3,<3.13.0a0 - - python >=3.12.0rc3,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - arch: arm64 - platform: osx - license: BSD-3-Clause - license_family: BSD - size: 335147 - timestamp: 1695459275360 + size: 22981 + timestamp: 1740680254354 - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda sha256: 1895f47b7d68581a6facde5cb13ab8c2764c2e53a76bd746f8f98910dc4e08fe md5: 29097e7ea634a45cc5386b95cac6568f @@ -6005,43 +2769,6 @@ packages: license_family: BSD size: 11543 timestamp: 1733325673691 -- conda: https://conda.anaconda.org/conda-forge/linux-64/nlohmann_json-3.11.3-he02047a_1.conda - sha256: ce4bcced4f8eea71b7cac8bc3daac097abf7a5792f278cd811dedada199500c1 - md5: e46f7ac4917215b49df2ea09a694a3fa - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc-ng >=12 - - libstdcxx-ng >=12 - arch: x86_64 - platform: linux - license: MIT - license_family: MIT - size: 122743 - timestamp: 1723652407663 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/nlohmann_json-3.11.3-h0a1ffab_1.conda - sha256: c90b1f11fc337d90a9e4c5aeeacac1418c5ba6a195097086566d38bb2ecf0f24 - md5: f2bd10ff23ab5c87327439c4499b3f3e - depends: - - libgcc-ng >=12 - - libstdcxx-ng >=12 - arch: aarch64 - platform: linux - license: MIT - license_family: MIT - size: 122755 - timestamp: 1723652622631 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/nlohmann_json-3.11.3-h00cdb27_1.conda - sha256: 3f4e6a4fa074bb297855f8111ab974dab6d9f98b7d4317d4dd46f8687ee2363b - md5: d2dee849c806430eee64d3acc98ce090 - depends: - - __osx >=11.0 - - libcxx >=16 - arch: arm64 - platform: osx - license: MIT - license_family: MIT - size: 123250 - timestamp: 1723652704997 - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda sha256: 7b920e46b9f7a2d2aa6434222e5c8d739021dbc5cc75f32d124a8191d86f9056 md5: e7f89ea5f7ea9401642758ff50a2d9c1 @@ -6110,55 +2837,9 @@ packages: license_family: BSD size: 6073136 timestamp: 1707226249608 -- conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.3-h5fbd93e_0.conda - sha256: 5bee706ea5ba453ed7fd9da7da8380dd88b865c8d30b5aaec14d2b6dd32dbc39 - md5: 9e5816bc95d285c115a3ebc2f8563564 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libpng >=1.6.44,<1.7.0a0 - - libstdcxx >=13 - - libtiff >=4.7.0,<4.8.0a0 - - libzlib >=1.3.1,<2.0a0 - arch: x86_64 - platform: linux - license: BSD-2-Clause - license_family: BSD - size: 342988 - timestamp: 1733816638720 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openjpeg-2.5.3-h3f56577_0.conda - sha256: 92d310033e20538e896f4e4b1ea4205eb6604eee7c5c651c4965a0d8d3ca0f1d - md5: 04231368e4af50d11184b50e14250993 - depends: - - libgcc >=13 - - libpng >=1.6.44,<1.7.0a0 - - libstdcxx >=13 - - libtiff >=4.7.0,<4.8.0a0 - - libzlib >=1.3.1,<2.0a0 - arch: aarch64 - platform: linux - license: BSD-2-Clause - license_family: BSD - size: 377796 - timestamp: 1733816683252 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/openjpeg-2.5.3-h8a3d83b_0.conda - sha256: 1d59bc72ca7faac06d349c1a280f5cfb8a57ee5896f1e24225a997189d7418c7 - md5: 4b71d78648dbcf68ce8bf22bb07ff838 - depends: - - __osx >=11.0 - - libcxx >=18 - - libpng >=1.6.44,<1.7.0a0 - - libtiff >=4.7.0,<4.8.0a0 - - libzlib >=1.3.1,<2.0a0 - arch: arm64 - platform: osx - license: BSD-2-Clause - license_family: BSD - size: 319362 - timestamp: 1733816781741 -- conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.0-h7b32b05_1.conda - sha256: f62f6bca4a33ca5109b6d571b052a394d836956d21b25b7ffd03376abf7a481f - md5: 4ce6875f75469b2757a65e10a5d05e31 +- conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.1-h7b32b05_0.conda + sha256: cbf62df3c79a5c2d113247ddea5658e9ff3697b6e741c210656e239ecaf1768f + md5: 41adf927e746dc75ecf0ef841c454e48 depends: - __glibc >=2.17,<3.0.a0 - ca-certificates @@ -6167,11 +2848,11 @@ packages: platform: linux license: Apache-2.0 license_family: Apache - size: 2937158 - timestamp: 1736086387286 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.0-hd08dc88_1.conda - sha256: 60d34454b861501d7355f25a7b39fdb5de8d56fca49b5bcbe8b8142b7d82dce4 - md5: e21c4767e783a58c373fdb99de6211bf + size: 2939306 + timestamp: 1739301879343 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.1-hd08dc88_0.conda + sha256: d80b52b56b2206053968270069616868cbeb289ef855cf1584b1bb0fef61b37c + md5: 09036190605c57eaecf01218e0e9542d depends: - ca-certificates - libgcc >=13 @@ -6179,11 +2860,11 @@ packages: platform: linux license: Apache-2.0 license_family: Apache - size: 3469279 - timestamp: 1736088141230 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.0-h81ee809_1.conda - sha256: 97772762abc70b3a537683ca9fc3ff3d6099eb64e4aba3b9c99e6fce48422d21 - md5: 22f971393637480bda8c679f374d8861 + size: 3476570 + timestamp: 1739303256089 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.1-h81ee809_0.conda + sha256: 4f8e2389e1b711b44182a075516d02c80fa7a3a7e25a71ff1b5ace9eae57a17a + md5: 75f9f0c7b1740017e2db83a53ab9a28e depends: - __osx >=11.0 - ca-certificates @@ -6191,147 +2872,8 @@ packages: platform: osx license: Apache-2.0 license_family: Apache - size: 2936415 - timestamp: 1736086108693 -- conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.29.0-pyhd8ed1ab_1.conda - sha256: 296280c8ace35c0a1cf72bed1077f248b3af903c3bf92332f1783a207cb5abdb - md5: 307b05402c1a382f2f09426492dee8f8 - depends: - - deprecated >=1.2.6 - - importlib-metadata >=6.0,<=8.5.0 - - python >=3.9 - license: Apache-2.0 - license_family: APACHE - size: 44166 - timestamp: 1734132973331 -- conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.29.0-pyhd8ed1ab_0.conda - sha256: ae9776efe52564e0d6711cfcee7c54439273e57a3999f7f796f66e862f58aae9 - md5: 0c02e74d26bce3fec93b227cf7ea6e6b - depends: - - backoff >=1.10.0,<3.0.0 - - opentelemetry-proto 1.29.0 - - python >=3.9 - license: Apache-2.0 - license_family: APACHE - size: 18922 - timestamp: 1734310457116 -- conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.29.0-pyhd8ed1ab_1.conda - sha256: 5d61db9d5b4f91b3932f5f2348920d5b7fdaa09e52c8ea054cf7bf3f21677c9c - md5: 223f4e56a29601c887f0dc467034af5b - depends: - - deprecated >=1.2.6 - - googleapis-common-protos >=1.52,<2.dev0 - - opentelemetry-api >=1.15,<2.dev0 - - opentelemetry-exporter-otlp-proto-common 1.29.0 - - opentelemetry-proto 1.29.0 - - opentelemetry-sdk 1.29.0 - - python >=3.9 - - requests >=2.7,<3.dev0 - license: Apache-2.0 - license_family: APACHE - size: 17147 - timestamp: 1734345675510 -- conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-prometheus-1.12.0rc1-pyhd8ed1ab_0.conda - sha256: b8239230dbbdb491401e41b53bd9f21d60551cedef1a8d5807fca1bf9bdd331c - md5: 1ddc95052b31147d1e10d818cf519cf5 - depends: - - opentelemetry-api >=1.10.0 - - opentelemetry-sdk >=1.10.0 - - prometheus_client >=0.5.0,<1.0.0 - - python >=3.6 - license: Apache-2.0 - license_family: APACHE - size: 14721 - timestamp: 1695214221489 -- conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.29.0-pyhd8ed1ab_0.conda - sha256: 200a7cb8acc8a0ddd6ef55c5460cec871b6a265929b240a0296c0ccb9c8d9758 - md5: e2a6d2ad10b813c7fdc1c64aac376128 - depends: - - protobuf <6.0,>=5.0 - - python >=3.9 - license: Apache-2.0 - license_family: APACHE - size: 37235 - timestamp: 1734291034372 -- conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.29.0-pyhd8ed1ab_0.conda - sha256: 7b36629d8b8be8a019fcfd1518d7b7f862dd25de96f8adcadb93e4fd12cf9bd6 - md5: 2a8893f06e6ebda4bfa78875bc923ea4 - depends: - - opentelemetry-api 1.29.0 - - opentelemetry-semantic-conventions 0.50b0 - - python >=3.9 - - typing-extensions >=3.7.4 - - typing_extensions >=3.7.4 - license: Apache-2.0 - license_family: APACHE - size: 77645 - timestamp: 1734297838999 -- conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.50b0-pyh3cfb1c2_0.conda - sha256: 6526e70368d5bf66ef0eaa51fb800d53782dde71a24bd38f40139919a6f784dc - md5: f7111fa4188d646c8108e232d024cb99 - depends: - - deprecated >=1.2.6 - - opentelemetry-api 1.29.0 - - python >=3.9 - license: Apache-2.0 - license_family: APACHE - size: 86084 - timestamp: 1734208980168 -- conda: https://conda.anaconda.org/conda-forge/linux-64/orc-2.0.3-h12ee42a_2.conda - sha256: dff5cc8023905782c86b3459055f26d4b97890e403b0698477c9fed15d8669cc - md5: 4f6f9f3f80354ad185e276c120eac3f0 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libprotobuf >=5.28.3,<5.28.4.0a0 - - libstdcxx >=13 - - libzlib >=1.3.1,<2.0a0 - - lz4-c >=1.10.0,<1.11.0a0 - - snappy >=1.2.1,<1.3.0a0 - - tzdata - - zstd >=1.5.6,<1.6.0a0 - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 1188881 - timestamp: 1735630209320 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/orc-2.0.3-hdd485aa_2.conda - sha256: b6c67542352a86cdf143c3066d5cda855b74454a156eedcd8958b494c6a32a83 - md5: d19f01b42e5d6a2908b65df435aff42f - depends: - - libgcc >=13 - - libprotobuf >=5.28.3,<5.28.4.0a0 - - libstdcxx >=13 - - libzlib >=1.3.1,<2.0a0 - - lz4-c >=1.10.0,<1.11.0a0 - - snappy >=1.2.1,<1.3.0a0 - - tzdata - - zstd >=1.5.6,<1.6.0a0 - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 1167714 - timestamp: 1735630248837 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/orc-2.0.3-h0ff2369_2.conda - sha256: cca330695f3bdb8c0e46350c29cd4af3345865544e36f1d7c9ba9190ad22f5f4 - md5: 24b1897c0d24afbb70704ba998793b78 - depends: - - __osx >=11.0 - - libcxx >=18 - - libprotobuf >=5.28.3,<5.28.4.0a0 - - libzlib >=1.3.1,<2.0a0 - - lz4-c >=1.10.0,<1.11.0a0 - - snappy >=1.2.1,<1.3.0a0 - - tzdata - - zstd >=1.5.6,<1.6.0a0 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: Apache - size: 438520 - timestamp: 1735630624140 + size: 2934522 + timestamp: 1739301896733 - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda sha256: 1840bd90d25d4930d60f57b4f38d4e0ae3f5b8db2819638709c36098c6ba770c md5: e51f1e4089cad105b6cac64bd8166587 @@ -6351,62 +2893,6 @@ packages: license_family: APACHE size: 60164 timestamp: 1733203368787 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.2-py312h1d6d2e6_1.conda - sha256: 80fd53b68aa89b929d03874b99621ec8cc6a12629bd8bfbdca87a95f8852af96 - md5: ae00b61f3000d2284d1f2584d4dfafa8 - depends: - - libgcc-ng >=12 - - libstdcxx-ng >=12 - - numpy >=1.19,<3 - - python >=3.12,<3.13.0a0 - - python-dateutil >=2.8.1 - - python-tzdata >=2022a - - python_abi 3.12.* *_cp312 - - pytz >=2020.1 - arch: x86_64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 15458981 - timestamp: 1715898284697 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pandas-2.2.2-py312h14eacfc_1.conda - sha256: d24c1a6e362d3f1034be308406b05a446c06f8ec974178581c7a3a13fc0110aa - md5: ea4fd304d3cd65f0ddf0dd3c46e0703a - depends: - - libgcc-ng >=12 - - libstdcxx-ng >=12 - - numpy >=1.19,<3 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python-dateutil >=2.8.1 - - python-tzdata >=2022a - - python_abi 3.12.* *_cp312 - - pytz >=2020.1 - arch: aarch64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 15203830 - timestamp: 1715898319015 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.2-py312h8ae5369_1.conda - sha256: 664bf370d1e254f29fab3b9834ae5f692a59f7e35c64c61d9a9b9989831fd721 - md5: b38af0cd7ae3616c90a2511272385941 - depends: - - __osx >=11.0 - - libcxx >=16 - - numpy >=1.19,<3 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python-dateutil >=2.8.1 - - python-tzdata >=2022a - - python_abi 3.12.* *_cp312 - - pytz >=2020.1 - arch: arm64 - platform: osx - license: BSD-3-Clause - license_family: BSD - size: 14476760 - timestamp: 1715898136109 - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 sha256: 2bb9ba9857f4774b85900c2562f7e711d08dd48e2add9bee4e1612fbee27e16f md5: 457c2c8c08e54905d6954e79cb5b5db9 @@ -6452,71 +2938,6 @@ packages: license_family: MIT size: 11748 timestamp: 1733327448200 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-11.1.0-py312h80c1187_0.conda - sha256: 5c347962202b55ae4d8a463e0555c5c6ca33396266a08284bf1384399894e541 - md5: d3894405f05b2c0f351d5de3ae26fa9c - depends: - - __glibc >=2.17,<3.0.a0 - - freetype >=2.12.1,<3.0a0 - - lcms2 >=2.16,<3.0a0 - - libgcc >=13 - - libjpeg-turbo >=3.0.0,<4.0a0 - - libtiff >=4.7.0,<4.8.0a0 - - libwebp-base >=1.5.0,<2.0a0 - - libxcb >=1.17.0,<2.0a0 - - libzlib >=1.3.1,<2.0a0 - - openjpeg >=2.5.3,<3.0a0 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - - tk >=8.6.13,<8.7.0a0 - arch: x86_64 - platform: linux - license: HPND - size: 42749785 - timestamp: 1735929845390 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pillow-11.1.0-py312h719f0cf_0.conda - sha256: 7559556ffc44bda777f85c2e5acd6b5756fa5822c0271b329b7b9a3c6bb20349 - md5: 77e0ec0a6fc847d317f204aa15b59f6b - depends: - - freetype >=2.12.1,<3.0a0 - - lcms2 >=2.16,<3.0a0 - - libgcc >=13 - - libjpeg-turbo >=3.0.0,<4.0a0 - - libtiff >=4.7.0,<4.8.0a0 - - libwebp-base >=1.5.0,<2.0a0 - - libxcb >=1.17.0,<2.0a0 - - libzlib >=1.3.1,<2.0a0 - - openjpeg >=2.5.3,<3.0a0 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - - tk >=8.6.13,<8.7.0a0 - arch: aarch64 - platform: linux - license: HPND - size: 41362848 - timestamp: 1735932311857 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-11.1.0-py312h50aef2c_0.conda - sha256: b29b7c915053e06a7a5b4118760202c572c9c35d23bd6ce8e73270b6a50e50ee - md5: 94d6ba8cd468668a9fb04193b0f4b36e - depends: - - __osx >=11.0 - - freetype >=2.12.1,<3.0a0 - - lcms2 >=2.16,<3.0a0 - - libjpeg-turbo >=3.0.0,<4.0a0 - - libtiff >=4.7.0,<4.8.0a0 - - libwebp-base >=1.5.0,<2.0a0 - - libxcb >=1.17.0,<2.0a0 - - libzlib >=1.3.1,<2.0a0 - - openjpeg >=2.5.3,<3.0a0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - - tk >=8.6.13,<8.7.0a0 - arch: arm64 - platform: osx - license: HPND - size: 42852329 - timestamp: 1735930118976 - conda: https://conda.anaconda.org/conda-forge/noarch/pip-24.3.1-pyh8b19718_2.conda sha256: da8c8888de10c1e4234ebcaa1550ac2b4b5408ac20f093fe641e4bc8c9c9f3eb md5: 04e691b9fadd93a8a9fad87a81d4fd8f @@ -6528,69 +2949,23 @@ packages: license_family: MIT size: 1245116 timestamp: 1734466348103 -- conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - sha256: adb2dde5b4f7da70ae81309cce6188ed3286ff280355cf1931b45d91164d2ad8 - md5: 5a5870a74432aa332f7d32180633ad05 - depends: - - python >=3.9 - license: MIT AND PSF-2.0 - size: 10693 - timestamp: 1733344619659 -- conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda - sha256: bb50f6499e8bc1d1a26f17716c97984671121608dc0c3ecd34858112bce59a27 - md5: 577852c7e53901ddccc7e6a9959ddebe - depends: - - python >=3.9 - license: MIT - license_family: MIT - size: 20448 - timestamp: 1733232756001 -- conda: https://conda.anaconda.org/conda-forge/linux-64/prometheus-cpp-1.3.0-ha5d0236_0.conda - sha256: 013669433eb447548f21c3c6b16b2ed64356f726b5f77c1b39d5ba17a8a4b8bc - md5: a83f6a2fdc079e643237887a37460668 - depends: - - __glibc >=2.17,<3.0.a0 - - libcurl >=8.10.1,<9.0a0 - - libgcc >=13 - - libstdcxx >=13 - - libzlib >=1.3.1,<2.0a0 - - zlib - arch: x86_64 - platform: linux - license: MIT - license_family: MIT - size: 199544 - timestamp: 1730769112346 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/prometheus-cpp-1.3.0-h7938499_0.conda - sha256: 9350d7bbc3982a732ff13a7fd17b585509e3b7d0191ac7b810cc3224868e3648 - md5: 10f4301290e51c49979ff98d1bdf2556 - depends: - - libcurl >=8.10.1,<9.0a0 - - libgcc >=13 - - libstdcxx >=13 - - libzlib >=1.3.1,<2.0a0 - - zlib - arch: aarch64 - platform: linux - license: MIT - license_family: MIT - size: 211335 - timestamp: 1730769181127 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/prometheus-cpp-1.3.0-h0967b3e_0.conda - sha256: 851a77ae1a8e90db9b9f3c4466abea7afb52713c3d98ceb0d37ba6ff27df2eff - md5: 7172339b49c94275ba42fec3eaeda34f +- conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda + sha256: adb2dde5b4f7da70ae81309cce6188ed3286ff280355cf1931b45d91164d2ad8 + md5: 5a5870a74432aa332f7d32180633ad05 depends: - - __osx >=11.0 - - libcurl >=8.10.1,<9.0a0 - - libcxx >=18 - - libzlib >=1.3.1,<2.0a0 - - zlib - arch: arm64 - platform: osx + - python >=3.9 + license: MIT AND PSF-2.0 + size: 10693 + timestamp: 1733344619659 +- conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + sha256: bb50f6499e8bc1d1a26f17716c97984671121608dc0c3ecd34858112bce59a27 + md5: 577852c7e53901ddccc7e6a9959ddebe + depends: + - python >=3.9 license: MIT license_family: MIT - size: 173220 - timestamp: 1730769371051 + size: 20448 + timestamp: 1733232756001 - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda sha256: bc8f00d5155deb7b47702cb8370f233935704100dbc23e30747c161d1b6cf3ab md5: 3e01e386307acc60b2f89af0b2e161aa @@ -6612,102 +2987,9 @@ packages: license_family: BSD size: 271905 timestamp: 1737453457168 -- conda: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.1-py312h178313f_1.conda - sha256: 6d5ff6490c53e14591b70924711fe7bd70eb7fbeeeb1cbd9ed2f6d794ec8c4eb - md5: 349635694b4df27336bc15a49e9220e9 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 52947 - timestamp: 1737635699390 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.2.1-py312hcc812fe_1.conda - sha256: d759d8ab9c060b42cabf6312b9a04aa590daecabf1dd4e35731f4bc1b5c388bb - md5: 533b07e9fd835938f465225613825eee - depends: - - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 52776 - timestamp: 1737635802135 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.1-py312h998013c_1.conda - sha256: 96145760baad111d7ae4213ea8f8cc035cf33b001f5ff37d92268e4d28b0941d - md5: 83678928c58c9ae76778a435b6c7a94a - depends: - - __osx >=11.0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: APACHE - size: 50942 - timestamp: 1737635896600 -- conda: https://conda.anaconda.org/conda-forge/linux-64/protobuf-5.28.3-py312h2ec8cdc_0.conda - sha256: acb2e0ee948e3941f8ed191cb77f654e06538638aed8ccd71cbc78a15242ebbb - md5: 9d7e427d159c1b2d516cc047ff177c48 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libstdcxx >=13 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - constrains: - - libprotobuf 5.28.3 - arch: x86_64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 464794 - timestamp: 1731366525051 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/protobuf-5.28.3-py312h6f74592_0.conda - sha256: 9c575d5035c7ecb114ab9e17906c0a54087d9598dd6a2104c02fe33f0a29dd46 - md5: 06513608c94fb1c1b17136ace77063a9 - depends: - - libgcc >=13 - - libstdcxx >=13 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - constrains: - - libprotobuf 5.28.3 - arch: aarch64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 473242 - timestamp: 1731366577844 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/protobuf-5.28.3-py312hd8f9ff3_0.conda - sha256: 9d572a97419bdace14d7c7cc8cc8c4bf2dcb22b56965dac87a27fbdb5061b926 - md5: 5afbe52a59f04dd1fe566d0d17590d7e - depends: - - __osx >=11.0 - - libcxx >=18 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - constrains: - - libprotobuf 5.28.3 - arch: arm64 - platform: osx - license: BSD-3-Clause - license_family: BSD - size: 448803 - timestamp: 1731367010746 -- conda: https://conda.anaconda.org/conda-forge/linux-64/psutil-6.1.1-py312h66e93f0_0.conda - sha256: 55d4fd0b294aeada0d7810fcc25503b59ec34c4390630789bd61c085b9ce649f - md5: add2c79595fa8a9b6d653d7e4e2cf05f +- conda: https://conda.anaconda.org/conda-forge/linux-64/psutil-7.0.0-py312h66e93f0_0.conda + sha256: 158047d7a80e588c846437566d0df64cec5b0284c7184ceb4f3c540271406888 + md5: 8e30db4239508a538e4a3b3cdf5b9616 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -6717,11 +2999,11 @@ packages: platform: linux license: BSD-3-Clause license_family: BSD - size: 487053 - timestamp: 1735327468212 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/psutil-6.1.1-py312hb2c0f52_0.conda - sha256: b2db43b7a2d01b998dadd91dd19c2de1f3778b5f8b7bf90020e35acf577cf79e - md5: 3bd3fe4f02e4ff211d9d35b6a3aed824 + size: 466219 + timestamp: 1740663246825 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/psutil-7.0.0-py312hb2c0f52_0.conda + sha256: 2a4f1ad69b16b9843f90adf5b39418c635835605bd2b300f55a8432c5ee22296 + md5: 1195731cd361196f9e352341a764fccb depends: - libgcc >=13 - python >=3.12,<3.13.0a0 @@ -6731,11 +3013,11 @@ packages: platform: linux license: BSD-3-Clause license_family: BSD - size: 487185 - timestamp: 1735327601306 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/psutil-6.1.1-py312hea69d52_0.conda - sha256: 90332053dad4056fe752217fa311ffa61cb37dc693b1721e37580e71a2a6fe04 - md5: 90724dac996a4e9d629a88a4b1ffe694 + size: 467245 + timestamp: 1740663309651 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/psutil-7.0.0-py312hea69d52_0.conda + sha256: cb11dcb39b2035ef42c3df89b5a288744b5dcb5a98fb47385760843b1d4df046 + md5: 0f461bd37cb428dc20213a08766bb25d depends: - __osx >=11.0 - python >=3.12,<3.13.0a0 @@ -6745,42 +3027,8 @@ packages: platform: osx license: BSD-3-Clause license_family: BSD - size: 495397 - timestamp: 1735327574477 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda - sha256: 9c88f8c64590e9567c6c80823f0328e58d3b1efb0e1c539c0315ceca764e0973 - md5: b3c17d95b5a10c6e64a21fa17573e70e - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - arch: x86_64 - platform: linux - license: MIT - license_family: MIT - size: 8252 - timestamp: 1726802366959 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pthread-stubs-0.4-h86ecc28_1002.conda - sha256: 977dfb0cb3935d748521dd80262fe7169ab82920afd38ed14b7fee2ea5ec01ba - md5: bb5a90c93e3bac3d5690acf76b4a6386 - depends: - - libgcc >=13 - arch: aarch64 - platform: linux - license: MIT - license_family: MIT - size: 8342 - timestamp: 1726803319942 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pthread-stubs-0.4-hd74edd7_1002.conda - sha256: 8ed65e17fbb0ca944bfb8093b60086e3f9dd678c3448b5de212017394c247ee3 - md5: 415816daf82e0b23a736a069a75e9da7 - depends: - - __osx >=11.0 - arch: arm64 - platform: osx - license: MIT - license_family: MIT - size: 8381 - timestamp: 1726802424786 + size: 476376 + timestamp: 1740663381256 - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda sha256: a7713dfe30faf17508ec359e0bc7e0983f5d94682492469bd462cdaae9c64d83 md5: 7d9daffbb8d8e0af0f769dbbcd173a54 @@ -6798,117 +3046,6 @@ packages: license_family: MIT size: 16668 timestamp: 1733569518868 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-19.0.0-py312h7900ff3_0.conda - sha256: 7d98e626ec65b882341482ad15ecb7a670ee41dbaf375aa660ba8b7d0a940504 - md5: 14f86e63b5c214dd9fb34e5472d4bafc - depends: - - libarrow-acero 19.0.0.* - - libarrow-dataset 19.0.0.* - - libarrow-substrait 19.0.0.* - - libparquet 19.0.0.* - - pyarrow-core 19.0.0 *_0_* - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 25289 - timestamp: 1737128438818 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-19.0.0-py312h8025657_0.conda - sha256: 3a73d3d15031586214381edf5410a6920c1f75f52a8d8b994722b106d9a50150 - md5: a86fa414c44b7e3ee054cc385c79a822 - depends: - - libarrow-acero 19.0.0.* - - libarrow-dataset 19.0.0.* - - libarrow-substrait 19.0.0.* - - libparquet 19.0.0.* - - pyarrow-core 19.0.0 *_0_* - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 25496 - timestamp: 1737129041038 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-19.0.0-py312h1f38498_0.conda - sha256: 9d693901833c2ff4e5d67e1f2f6df50f699e1cec2f580c26d42299654830855a - md5: bd5e025292ff1127aa1534b59e55c4d0 - depends: - - libarrow-acero 19.0.0.* - - libarrow-dataset 19.0.0.* - - libarrow-substrait 19.0.0.* - - libparquet 19.0.0.* - - pyarrow-core 19.0.0 *_0_* - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: APACHE - size: 25428 - timestamp: 1737128284082 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-19.0.0-py312h01725c0_0_cpu.conda - sha256: 81178d0de0ac851a0a78e09c81ad92274cf770a38b28acdf53a0cfb2122d15aa - md5: 7ab1143b9ac1af5cc4a630706f643627 - depends: - - __glibc >=2.17,<3.0.a0 - - libarrow 19.0.0.* *cpu - - libgcc >=13 - - libstdcxx >=13 - - libzlib >=1.3.1,<2.0a0 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - constrains: - - apache-arrow-proc =*=cpu - - numpy >=1.21,<3 - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 5230953 - timestamp: 1737128097002 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-19.0.0-py312h66f7834_0_cpu.conda - sha256: 17ff419abfe9596f77857dfa635538200427d87283c28e64920d10d6533ec30e - md5: ce51dbcfeae8709f0b94c78eabe7cf5e - depends: - - libarrow 19.0.0.* *cpu - - libgcc >=13 - - libstdcxx >=13 - - libzlib >=1.3.1,<2.0a0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - constrains: - - numpy >=1.21,<3 - - apache-arrow-proc =*=cpu - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 5023430 - timestamp: 1737627066264 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-19.0.0-py312hc40f475_0_cpu.conda - sha256: 6303fe1c3e6d36273b72f0eeb3f19897d2376d57fe8c757f55dcbfbaa5cd6840 - md5: df502157843a7b1d90af04803767be15 - depends: - - __osx >=11.0 - - libarrow 19.0.0.* *cpu - - libcxx >=18 - - libzlib >=1.3.1,<2.0a0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - constrains: - - apache-arrow-proc =*=cpu - - numpy >=1.21,<3 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: APACHE - size: 4393075 - timestamp: 1737128225546 - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda sha256: 79db7928d13fab2d892592223d7570f5061c192f27b9febd1a418427b719acc6 md5: 12c566707c80111f9799308d9e265aef @@ -6919,81 +3056,6 @@ packages: license_family: BSD size: 110100 timestamp: 1733195786147 -- conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.6-pyh3cfb1c2_0.conda - sha256: 9a78801a28959edeb945e8270a4e666577b52fac0cf4e35f88cf122f73d83e75 - md5: c69f87041cf24dfc8cb6bf64ca7133c7 - depends: - - annotated-types >=0.6.0 - - pydantic-core 2.27.2 - - python >=3.9 - - typing-extensions >=4.6.1 - - typing_extensions >=4.12.2 - license: MIT - license_family: MIT - size: 296841 - timestamp: 1737761472006 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.27.2-py312h12e396e_0.conda - sha256: 81602a4592ad2ac1a1cb57372fd25214e63b1c477d5818b0c21cde0f1f85c001 - md5: bae01b2563030c085f5158c518b84e86 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - - typing-extensions >=4.6.0,!=4.7.0 - constrains: - - __glibc >=2.17 - arch: x86_64 - platform: linux - license: MIT - license_family: MIT - size: 1641402 - timestamp: 1734571789895 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pydantic-core-2.27.2-py312h8cbf658_0.conda - sha256: 623e0f3846f15d035ce7ab7ae445fc8d9e547b6684ab55858b6f44510d24b097 - md5: 9677f6ab4bf27ba3c2aee70d08c7b27c - depends: - - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - - typing-extensions >=4.6.0,!=4.7.0 - constrains: - - __glibc >=2.17 - arch: aarch64 - platform: linux - license: MIT - license_family: MIT - size: 1505076 - timestamp: 1734571966615 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.27.2-py312hcd83bfe_0.conda - sha256: cfa7201f890d5d08ce29ff70e65a96787d5793a1718776733666b44bbd4a1205 - md5: dcb307e02f17d38c6e1cbfbf8c602852 - depends: - - __osx >=11.0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - - typing-extensions >=4.6.0,!=4.7.0 - constrains: - - __osx >=11.0 - arch: arm64 - platform: osx - license: MIT - license_family: MIT - size: 1593461 - timestamp: 1734571986644 -- conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.7.1-pyh3cfb1c2_0.conda - sha256: 082fb1ec29917d2c9ed6a862cb8eb9beb88c208ea62c9fef1aeb5f4f3e0e0b06 - md5: d71d76b62bed332b037d7adfc0f3989a - depends: - - pydantic >=2.7.0 - - python >=3.9 - - python-dotenv >=0.21.0 - license: MIT - license_family: MIT - size: 31822 - timestamp: 1735650532951 - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda sha256: 28a3e3161390a9d23bc02b4419448f8d27679d9e2c250e29849e37749c8de86b md5: 232fb4577b6687b2d503ef8e254270c9 @@ -7003,48 +3065,6 @@ packages: license_family: BSD size: 888600 timestamp: 1736243563082 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pyinstrument-5.0.1-py312h66e93f0_0.conda - sha256: 3f1c0bc95f2c46dcd107f44cf742ee1fa40ba22e244f01083654743bbbcf28f3 - md5: 9f1d7b421e4c8fd00009490613db64d4 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - arch: x86_64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 182333 - timestamp: 1737774425235 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyinstrument-5.0.1-py312hb2c0f52_0.conda - sha256: 16af5db4359078bcb526291855bf1075ab035a96fe4e8d5cc4b0b5c8cba89b9a - md5: 90f5e9e04b1ecf25ad3f28b606f63742 - depends: - - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - arch: aarch64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 183988 - timestamp: 1737774588265 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyinstrument-5.0.1-py312hea69d52_0.conda - sha256: 5e7de2f908af22bbd8cf3562ce5ebf65ad6c0d8e40038f90b56f4db750639ce2 - md5: 07b0eb9b6bd91dfa87f95032825690dc - depends: - - __osx >=11.0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - arch: arm64 - platform: osx - license: BSD-3-Clause - license_family: BSD - size: 182524 - timestamp: 1737774624030 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-core-11.0-py312hb9d441b_0.conda sha256: 7805d910dd6ac686e2f780c879a986f35d7a4c73f4236c956c03bdcb26bec421 md5: 0726db04477a28c51d1a260afb356b67 @@ -7087,10 +3107,9 @@ packages: license_family: BSD size: 21085 timestamp: 1733217331982 -- conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.8-h9e4cc4f_1_cpython.conda - build_number: 1 - sha256: 3f0e0518c992d8ccfe62b189125721309836fe48a010dc424240583e157f9ff0 - md5: 7fd2fd79436d9b473812f14e86746844 +- conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.9-h9e4cc4f_0_cpython.conda + sha256: 64fed5178f1e9c8ac0f572ac0ce37955f5dee7b2bcac665202bc14f1f7dd618a + md5: 5665f0079432f8848079c811cdb537d5 depends: - __glibc >=2.17,<3.0.a0 - bzip2 >=1.0.8,<2.0a0 @@ -7098,14 +3117,14 @@ packages: - libexpat >=2.6.4,<3.0a0 - libffi >=3.4,<4.0a0 - libgcc >=13 - - liblzma >=5.6.3,<6.0a0 + - liblzma >=5.6.4,<6.0a0 - libnsl >=2.0.1,<2.1.0a0 - - libsqlite >=3.47.0,<4.0a0 + - libsqlite >=3.48.0,<4.0a0 - libuuid >=2.38.1,<3.0a0 - libxcrypt >=4.4.36 - libzlib >=1.3.1,<2.0a0 - ncurses >=6.5,<7.0a0 - - openssl >=3.4.0,<4.0a0 + - openssl >=3.4.1,<4.0a0 - readline >=8.2,<9.0a0 - tk >=8.6.13,<8.7.0a0 - tzdata @@ -7114,26 +3133,25 @@ packages: arch: x86_64 platform: linux license: Python-2.0 - size: 31565686 - timestamp: 1733410597922 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.8-h1683364_1_cpython.conda - build_number: 1 - sha256: 85573582d5b0f79923fed0a8365d3d74d21eee9f0a5fa1b9345f191e006363ab - md5: 09ec612ea05370989eaa3d81abf0f369 + size: 31581682 + timestamp: 1739521496324 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.9-h1683364_0_cpython.conda + sha256: 0366f38918bceda8ff5917d7bbe1cea2bc8b6c74e7245eb0e4b0d3c2d37f76cf + md5: 2e7ad70254455e0508adabff10218512 depends: - bzip2 >=1.0.8,<2.0a0 - ld_impl_linux-aarch64 >=2.36.1 - libexpat >=2.6.4,<3.0a0 - libffi >=3.4,<4.0a0 - libgcc >=13 - - liblzma >=5.6.3,<6.0a0 + - liblzma >=5.6.4,<6.0a0 - libnsl >=2.0.1,<2.1.0a0 - - libsqlite >=3.47.0,<4.0a0 + - libsqlite >=3.48.0,<4.0a0 - libuuid >=2.38.1,<3.0a0 - libxcrypt >=4.4.36 - libzlib >=1.3.1,<2.0a0 - ncurses >=6.5,<7.0a0 - - openssl >=3.4.0,<4.0a0 + - openssl >=3.4.1,<4.0a0 - readline >=8.2,<9.0a0 - tk >=8.6.13,<8.7.0a0 - tzdata @@ -7142,22 +3160,21 @@ packages: arch: aarch64 platform: linux license: Python-2.0 - size: 13760816 - timestamp: 1733407890896 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.8-hc22306f_1_cpython.conda - build_number: 1 - sha256: 7586a711b1b08a9df8864e26efdc06980bdfb0e18d5ac4651d0fee30a8d3e3a0 - md5: 54ca5b5d92ef3a3ba61e195ee882a518 + size: 13804161 + timestamp: 1739519531794 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.9-hc22306f_0_cpython.conda + sha256: cbf81a78d3ca6e663e827523e6ddbc28369cac488da047a28f83875eb52fe5f6 + md5: 1d105a6c46a753e3c0bab54a1ad24063 depends: - __osx >=11.0 - bzip2 >=1.0.8,<2.0a0 - libexpat >=2.6.4,<3.0a0 - libffi >=3.4,<4.0a0 - - liblzma >=5.6.3,<6.0a0 - - libsqlite >=3.47.0,<4.0a0 + - liblzma >=5.6.4,<6.0a0 + - libsqlite >=3.48.0,<4.0a0 - libzlib >=1.3.1,<2.0a0 - ncurses >=6.5,<7.0a0 - - openssl >=3.4.0,<4.0a0 + - openssl >=3.4.1,<4.0a0 - readline >=8.2,<9.0a0 - tk >=8.6.13,<8.7.0a0 - tzdata @@ -7166,8 +3183,8 @@ packages: arch: arm64 platform: osx license: Python-2.0 - size: 12998673 - timestamp: 1733408900971 + size: 12947786 + timestamp: 1739520092196 - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda sha256: a50052536f1ef8516ed11a844f9413661829aa083304dc624c5925298d078d79 md5: 5ba79d7c71f03c678c8ead841f347d6e @@ -7178,95 +3195,24 @@ packages: license_family: APACHE size: 222505 timestamp: 1733215763718 -- conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda - sha256: 99713f6b534fef94995c6c16fd21d59f3548784e9111775d692bdc7c44678f02 - md5: e5c6ed218664802d305e79cc2d4491de - depends: - - python >=3.9 - license: BSD-3-Clause - license_family: BSD - size: 24215 - timestamp: 1733243277223 - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda sha256: 1b09a28093071c1874862422696429d0d35bd0b8420698003ac004746c5e82a2 md5: 38e34d2d1d9dca4fb2b9a0a04f604e2c depends: - - python >=3.9 - license: BSD-3-Clause - license_family: BSD - size: 226259 - timestamp: 1733236073335 -- conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - sha256: 4790787fe1f4e8da616edca4acf6a4f8ed4e7c6967aa31b920208fc8f95efcca - md5: a61bf9ec79426938ff785eb69dbb1960 - depends: - - python >=3.6 - license: BSD-2-Clause - license_family: BSD - size: 13383 - timestamp: 1677079727691 -- conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.20-pyhff2d567_0.conda - sha256: 1b03678d145b1675b757cba165a0d9803885807792f7eb4495e48a38858c3cca - md5: a28c984e0429aff3ab7386f7de56de6f - depends: - - python >=3.9 - license: Apache-2.0 - license_family: Apache - size: 27913 - timestamp: 1734420869885 -- conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.1-pyhd8ed1ab_0.conda - sha256: 1597d6055d34e709ab8915091973552a0b8764c8032ede07c4e99670da029629 - md5: 392c91c42edd569a7ec99ed8648f597a - depends: - - python >=3.9 - license: Apache-2.0 - license_family: APACHE - size: 143794 - timestamp: 1737541204030 -- conda: https://conda.anaconda.org/conda-forge/linux-64/python-xxhash-3.5.0-py312h66e93f0_1.conda - sha256: 20851b1e59fee127d49e01fc73195a88ab0779f103b7d6ffc90d11142a83678f - md5: 39aed2afe4d0cf76ab3d6b09eecdbea7 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - - xxhash >=0.8.2,<0.8.3.0a0 - arch: x86_64 - platform: linux - license: BSD-2-Clause - license_family: BSD - size: 23162 - timestamp: 1725272139519 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-xxhash-3.5.0-py312h52516f5_1.conda - sha256: 0fa5ba80073a43391ee90303814adbc9fd826175de1fdac273ba0e5b711aa255 - md5: 591c4ae6d8338dfd07b951e00433a405 - depends: - - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - - xxhash >=0.8.2,<0.8.3.0a0 - arch: aarch64 - platform: linux - license: BSD-2-Clause + - python >=3.9 + license: BSD-3-Clause license_family: BSD - size: 23589 - timestamp: 1725273317965 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-xxhash-3.5.0-py312h024a12e_1.conda - sha256: 28204ef48f028a4d872e22040da0dad7ebd703549b010a1bb511b6dd94cf466d - md5: 266fe1ae54a7bb17990206664d0f0ae4 + size: 226259 + timestamp: 1733236073335 +- conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda + sha256: 4790787fe1f4e8da616edca4acf6a4f8ed4e7c6967aa31b920208fc8f95efcca + md5: a61bf9ec79426938ff785eb69dbb1960 depends: - - __osx >=11.0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - - xxhash >=0.8.2,<0.8.3.0a0 - arch: arm64 - platform: osx + - python >=3.6 license: BSD-2-Clause license_family: BSD - size: 21765 - timestamp: 1725272382968 + size: 13383 + timestamp: 1677079727691 - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda build_number: 5 sha256: d10e93d759931ffb6372b45d65ff34d95c6000c61a07e298d162a3bc2accebb0 @@ -7407,74 +3353,41 @@ packages: license_family: BSD size: 364649 timestamp: 1738271263898 -- conda: https://conda.anaconda.org/conda-forge/linux-64/re2-2024.07.02-h9925aae_2.conda - sha256: d213c44958d49ce7e0d4d5b81afec23640cce5016685dbb2d23571a99caa4474 - md5: e84ddf12bde691e8ec894b00ea829ddf - depends: - - libre2-11 2024.07.02 hbbce691_2 - arch: x86_64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 26786 - timestamp: 1735541074034 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/re2-2024.07.02-haa97905_2.conda - sha256: 040848655df9119bae5a549fb5c8956a5537120859416c1d9d0712b7bac9f12e - md5: 1bf0135339b4a7419a198a795d2d4be0 - depends: - - libre2-11 2024.07.02 h18dbdb1_2 - arch: aarch64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 26830 - timestamp: 1735540999398 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/re2-2024.07.02-h6589ca4_2.conda - sha256: 4d3799c05f8f662922a0acd129d119774760a3281b883603678e128d1cb307fb - md5: 7a8b4ad8c58a3408ca89d78788c78178 +- conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda + sha256: 2d6d0c026902561ed77cd646b5021aef2d4db22e57a5b0178dfc669231e06d2c + md5: 283b96675859b20a825f8fa30f311446 depends: - - libre2-11 2024.07.02 h07bc746_2 - arch: arm64 - platform: osx - license: BSD-3-Clause - license_family: BSD - size: 26861 - timestamp: 1735541088455 -- conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda - sha256: 5435cf39d039387fbdc977b0a762357ea909a7694d9528ab40f005e9208744d7 - md5: 47d31b792659ce70f470b5c82fdfb7a4 - depends: - - libgcc-ng >=12 - - ncurses >=6.3,<7.0a0 + - libgcc >=13 + - ncurses >=6.5,<7.0a0 arch: x86_64 platform: linux license: GPL-3.0-only license_family: GPL - size: 281456 - timestamp: 1679532220005 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8fc344f_1.conda - sha256: 4c99f7417419734e3797d45bc355e61c26520e111893b0d7087a01a7fbfbe3dd - md5: 105eb1e16bf83bfb2eb380a48032b655 + size: 282480 + timestamp: 1740379431762 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8382b9d_2.conda + sha256: 54bed3a3041befaa9f5acde4a37b1a02f44705b7796689574bcf9d7beaad2959 + md5: c0f08fc2737967edde1a272d4bf41ed9 depends: - - libgcc-ng >=12 - - ncurses >=6.3,<7.0a0 + - libgcc >=13 + - ncurses >=6.5,<7.0a0 arch: aarch64 platform: linux license: GPL-3.0-only license_family: GPL - size: 294092 - timestamp: 1679532238805 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h92ec313_1.conda - sha256: a1dfa679ac3f6007362386576a704ad2d0d7a02e98f5d0b115f207a2da63e884 - md5: 8cbb776a2f641b943d413b3e19df71f4 + size: 291806 + timestamp: 1740380591358 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda + sha256: 7db04684d3904f6151eff8673270922d31da1eea7fa73254d01c437f49702e34 + md5: 63ef3f6e6d6d5c589e64f11263dc5676 depends: - - ncurses >=6.3,<7.0a0 + - ncurses >=6.5,<7.0a0 arch: arm64 platform: osx license: GPL-3.0-only license_family: GPL - size: 250351 - timestamp: 1679532511311 + size: 252359 + timestamp: 1740379663071 - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.36.2-pyh29332c3_0.conda sha256: e20909f474a6cece176dfc0dc1addac265deb5fa92ea90e975fbca48085b20c3 md5: 9140f1c09dd5489549c6a33931b943c7 @@ -7488,48 +3401,6 @@ packages: license_family: MIT size: 51668 timestamp: 1737836872415 -- conda: https://conda.anaconda.org/conda-forge/linux-64/regex-2024.11.6-py312h66e93f0_0.conda - sha256: fcb5687d3ec5fff580b64b8fb649d9d65c999a91a5c3108a313ecdd2de99f06b - md5: 647770db979b43f9c9ca25dcfa7dc4e4 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - arch: x86_64 - platform: linux - license: Python-2.0 - license_family: PSF - size: 402821 - timestamp: 1730952378415 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/regex-2024.11.6-py312hb2c0f52_0.conda - sha256: ec2c416860de29224e447e2031f8686a05476759c17da1f32f61d4307e540ec8 - md5: fa8b589107567f532fa1380e66f91776 - depends: - - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - arch: aarch64 - platform: linux - license: Python-2.0 - license_family: PSF - size: 398947 - timestamp: 1730952477463 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/regex-2024.11.6-py312hea69d52_0.conda - sha256: dcdec32f2c7dd37986baa692bedf9db126ad34e92e5e9b64f707cba3d04d2525 - md5: e73cda1f18846b608284bd784f061eac - depends: - - __osx >=11.0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - arch: arm64 - platform: osx - license: Python-2.0 - license_family: PSF - size: 366374 - timestamp: 1730952427552 - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda sha256: d701ca1136197aa121bbbe0e8c18db6b5c94acbd041c2b43c70e5ae104e1d8ad md5: a9b9368f3701a417eac9edbcae7cb737 @@ -7564,38 +3435,13 @@ packages: license_family: MIT size: 7818 timestamp: 1598024297745 -- conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_1.conda - sha256: 06a760c5ae572e72e865d5a87e9fe3cc171e1a9c996e63daf3db52ff1a0b4457 - md5: 7aed65d4ff222bfb7335997aa40b7da5 - depends: - - markdown-it-py >=2.2.0 - - pygments >=2.13.0,<3.0.0 - - python >=3.9 - - typing_extensions >=4.0.0,<5.0.0 - license: MIT - license_family: MIT - size: 185646 - timestamp: 1733342347277 -- conda: https://conda.anaconda.org/conda-forge/noarch/rich-toolkit-0.11.3-pyh29332c3_0.conda - sha256: e558f8c254a9ff9164d069110da162fc79497d70c60f2c09a5d3d0d7101c5628 - md5: 4ba15ae9388b67d09782798347481f69 +- conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.23.1-py312h3b7be25_0.conda + sha256: 0378f8010ef166cea7fcb0d502e3c85fd96442e445aab7e66f8702deb9ab1e26 + md5: b9cb8c7bcbe3df8e640b244ed096b8e2 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 -- conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.22.3-py312h12e396e_0.conda - sha256: e8662d21ca3c912ac8941725392b838a29458b106ef22d9489cdf0f8de145fad - md5: bfb49da0cc9098597d527def04d66f8b - depends: - - __glibc >=2.17,<3.0.a0 - libgcc >=13 - - python >=3.12,<3.13.0a0 + - __glibc >=2.17,<3.0.a0 - python_abi 3.12.* *_cp312 constrains: - __glibc >=2.17 @@ -7603,14 +3449,14 @@ packages: platform: linux license: MIT license_family: MIT - size: 354410 - timestamp: 1733366814237 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/rpds-py-0.22.3-py312ha4e36d7_0.conda - sha256: bd8215aea86b57f7d036d53eee813a544736e94783faeb7b928931fca45715f8 - md5: 4d41b57d0d3933b9cab7ac8c05745123 + size: 394314 + timestamp: 1740153296343 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/rpds-py-0.23.1-py312he7a34ca_0.conda + sha256: a25be7524da46719fb5badcd388cf9ff9376250830a07bbaad44a69b915f077c + md5: 9925c3b64c5a8a096081b0e64d5fd2f6 depends: + - python - libgcc >=13 - - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 constrains: - __glibc >=2.17 @@ -7618,15 +3464,15 @@ packages: platform: linux license: MIT license_family: MIT - size: 348424 - timestamp: 1733368364148 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/rpds-py-0.22.3-py312hcd83bfe_0.conda - sha256: 0a8b50bf22400004a706ba160d7cb31f82b8d8c328a59aec73a9e0d3372d1964 - md5: 2f7c4d01946fa2ce73d7ef3eeb041877 + size: 397491 + timestamp: 1740153468896 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/rpds-py-0.23.1-py312hd60eec9_0.conda + sha256: 9b68bfd5dcd50a0e6c67a2aee42e15bb6d344357361e936fd6b93c9e4eaf0d69 + md5: 21bfb8afb20f48a6c60e83a2f01d7034 depends: + - python - __osx >=11.0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython + - python 3.12.* *_cpython - python_abi 3.12.* *_cp312 constrains: - __osx >=11.0 @@ -7634,166 +3480,189 @@ packages: platform: osx license: MIT license_family: MIT - size: 318920 - timestamp: 1733367225496 -- conda: https://conda.anaconda.org/conda-forge/linux-64/s2n-1.5.11-h072c03f_0.conda - sha256: cfdd98c8f9a1e5b6f9abce5dac6d590cc9fe541a08466c9e4a26f90e00b569e3 - md5: 5e8060d52f676a40edef0006a75c718f + size: 367762 + timestamp: 1740153151756 +- conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh0d859eb_1.conda + sha256: 00926652bbb8924e265caefdb1db100f86a479e8f1066efe395d5552dde54d02 + md5: 938c8de6b9de091997145b3bf25cdbf9 depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - openssl >=3.4.0,<4.0a0 + - __linux + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 22736 + timestamp: 1733322148326 +- conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh31c8845_1.conda + sha256: 5282eb5b462502c38df8cb37cd1542c5bbe26af2453a18a0a0602d084ca39f53 + md5: e67b1b1fa7a79ff9e8e326d0caf55854 + depends: + - __osx + - pyobjc-framework-cocoa + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 23100 + timestamp: 1733322309409 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-0.2.0-hc8f76dd_10.conda + sha256: a1bde55ceb9dc5bd7879283d0f594a6ce65c07fda3de76230c65a4a5df47858a + md5: 480e915dfc6c592615ef6f217e615aa6 + depends: + - libsentencepiece 0.2.0 h8e10757_10 + - python_abi 3.12.* *_cp312 + - sentencepiece-python 0.2.0 py312hb6b8a2b_10 + - sentencepiece-spm 0.2.0 h8e10757_10 arch: x86_64 platform: linux license: Apache-2.0 license_family: Apache - size: 356213 - timestamp: 1737146304079 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/s2n-1.5.11-h3caee7a_0.conda - sha256: 5a7ae66f96be24c3b2007139b6c3701ab015b4b4eb4eccfdd07be97710243a47 - md5: 1517c0518f8a06a48a15f41d94252874 + size: 19470 + timestamp: 1735628377167 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-0.2.0-h6c1b121_10.conda + sha256: 846d885a560fbb4375b645e7caf2f756ef88bbeb441b670375da0090aaa427fb + md5: 33a89eb1dedae8eb7222b0a89856f337 depends: - - libgcc >=13 - - openssl >=3.4.0,<4.0a0 + - libsentencepiece 0.2.0 h6164ad9_10 + - python_abi 3.12.* *_cp312 + - sentencepiece-python 0.2.0 py312h197ff68_10 + - sentencepiece-spm 0.2.0 h6164ad9_10 arch: aarch64 platform: linux license: Apache-2.0 license_family: Apache - size: 352811 - timestamp: 1737146319512 -- conda: https://conda.anaconda.org/conda-forge/linux-64/safetensors-0.5.2-py312h12e396e_0.conda - sha256: 98b8dfa5eec083e0b3ace00906a7f7e748b1e2446dca17e87473f43278fcc036 - md5: 999ca9d87d2bb8b4c01e62c755b928cf + size: 19686 + timestamp: 1735628718991 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-0.2.0-h22a84ea_10.conda + sha256: 526c934b897131bd274697649c3b1c492a7d66c03368885a954112468b3c1424 + md5: 346abe448f69949a65473b336856860a + depends: + - libsentencepiece 0.2.0 he13a0af_10 + - python_abi 3.12.* *_cp312 + - sentencepiece-python 0.2.0 py312h155166a_10 + - sentencepiece-spm 0.2.0 he13a0af_10 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 19759 + timestamp: 1735628533490 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-python-0.2.0-py312hb6b8a2b_10.conda + sha256: 37df7fb659564587b950b39c936769d9b5095afb7bc223f42d6248a5540c6567 + md5: 7908b7b977e2e123a5f6a29906f2ce44 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 h8e10757_10 + - libstdcxx >=13 - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 - constrains: - - __glibc >=2.17 arch: x86_64 platform: linux license: Apache-2.0 - license_family: APACHE - size: 424409 - timestamp: 1736383159339 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/safetensors-0.5.2-py312h8cbf658_0.conda - sha256: 3e230060c1366cbaf03f4315b021dfe47f5147f3af88f17975d661c08fe15ad3 - md5: 2c77c961c4e813b1d05122ac4d803d80 + license_family: Apache + size: 2411182 + timestamp: 1735628106455 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-python-0.2.0-py312h197ff68_10.conda + sha256: a7c2c19cc397c7632e2630af49ddcff128f145c93ea493421e6f42bfa5e1d30b + md5: 5642e4545a3cf03e446fb3b3e9fd723b depends: - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 h6164ad9_10 + - libstdcxx >=13 - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 - constrains: - - __glibc >=2.17 arch: aarch64 platform: linux license: Apache-2.0 - license_family: APACHE - size: 408166 - timestamp: 1736383184569 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/safetensors-0.5.2-py312hcd83bfe_0.conda - sha256: 0aeb3e654095ca0261d560d1fc05912d0e94d547a7dc435d7f4cedeba966d176 - md5: fc0383682805e293eba9b8afc9ad0931 + license_family: Apache + size: 2458076 + timestamp: 1735628298246 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-python-0.2.0-py312h155166a_10.conda + sha256: 2d59614aeafbf54cc718805798c11c2d0a3b4b8d947d1bd81c87c484b4883077 + md5: 6e11367ef670296fce01fc9860be944d depends: - __osx >=11.0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 he13a0af_10 - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 - constrains: - - __osx >=11.0 arch: arm64 platform: osx license: Apache-2.0 - license_family: APACHE - size: 378060 - timestamp: 1736383410115 -- conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh0d859eb_1.conda - sha256: 00926652bbb8924e265caefdb1db100f86a479e8f1066efe395d5552dde54d02 - md5: 938c8de6b9de091997145b3bf25cdbf9 - depends: - - __linux - - python >=3.9 - license: BSD-3-Clause - license_family: BSD - size: 22736 - timestamp: 1733322148326 -- conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh31c8845_1.conda - sha256: 5282eb5b462502c38df8cb37cd1542c5bbe26af2453a18a0a0602d084ca39f53 - md5: e67b1b1fa7a79ff9e8e326d0caf55854 - depends: - - __osx - - pyobjc-framework-cocoa - - python >=3.9 - license: BSD-3-Clause - license_family: BSD - size: 23100 - timestamp: 1733322309409 -- conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.8.0-pyhff2d567_0.conda - sha256: e0778e4f276e9a81b51c56f51ec22a27b4d8fc955abc0be77ad09ca9bea06bb9 - md5: 8f28e299c11afdd79e0ec1e279dcdc52 - depends: - - python >=3.9 - license: MIT - license_family: MIT - size: 775598 - timestamp: 1736512753595 -- conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda - sha256: 0557c090913aa63cdbe821dbdfa038a321b488e22bc80196c4b3b1aace4914ef - md5: 7c3c2a0f3ebdea2bbc35538d162b43bf - depends: - - python >=3.9 - license: MIT - license_family: MIT - size: 14462 - timestamp: 1733301007770 -- conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - sha256: 41db0180680cc67c3fa76544ffd48d6a5679d96f4b71d7498a759e94edc9a2db - md5: a451d576819089b0d672f18768be0f65 - depends: - - python >=3.9 - license: MIT - license_family: MIT - size: 16385 - timestamp: 1733381032766 -- conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-h8bd8927_1.conda - sha256: ec91e86eeb2c6bbf09d51351b851e945185d70661d2ada67204c9a6419d282d3 - md5: 3b3e64af585eadfb52bb90b553db5edf + license_family: Apache + size: 2433303 + timestamp: 1735628083958 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-spm-0.2.0-h8e10757_10.conda + sha256: 6b55e1121545357d63c3aa0766931720e8aafc52d88641ba7631c8cbaa68c52f + md5: e977b7be5ac26c55825e121e00b90493 depends: - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 h8e10757_10 - libstdcxx >=13 arch: x86_64 platform: linux - license: BSD-3-Clause - license_family: BSD - size: 42739 - timestamp: 1733501881851 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-hd4fb6f5_1.conda - sha256: c4a07ae5def8d55128f25a567a296ef9d7bf99a3bc79d46bd5160c076a5f50af - md5: 2fcc6cd1e5550deb509073fd2e6693e1 + license: Apache-2.0 + license_family: Apache + size: 89076 + timestamp: 1735628334078 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-spm-0.2.0-h6164ad9_10.conda + sha256: b98fc1028a8e8fbf309af383f9c837290a14e076e6c5533dc251694ea33ffc6e + md5: a4b75936c01dca3f089f02752b7ee325 depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 h6164ad9_10 - libstdcxx >=13 arch: aarch64 platform: linux - license: BSD-3-Clause - license_family: BSD - size: 43032 - timestamp: 1733501964775 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-h98b9ce2_1.conda - sha256: 4242f95b215127a006eb664fe26ed5a82df87e90cbdbc7ce7ff4971f0720997f - md5: ded86dee325290da2967a3fea3800eb5 + license: Apache-2.0 + license_family: Apache + size: 85983 + timestamp: 1735628693813 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-spm-0.2.0-he13a0af_10.conda + sha256: b760aeee02e2afbfcce3f559e8a227aa4c94139157b1702fdfb41a057dad0e52 + md5: 9b7300f23cd330da8664cd072c162e5f depends: - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 he13a0af_10 arch: arm64 platform: osx - license: BSD-3-Clause - license_family: BSD - size: 35857 - timestamp: 1733502172664 + license: Apache-2.0 + license_family: Apache + size: 83826 + timestamp: 1735628514667 +- conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.8.2-pyhff2d567_0.conda + sha256: 91d664ace7c22e787775069418daa9f232ee8bafdd0a6a080a5ed2395a6fa6b2 + md5: 9bddfdbf4e061821a1a443f93223be61 + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 777736 + timestamp: 1740654030775 +- conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + sha256: 41db0180680cc67c3fa76544ffd48d6a5679d96f4b71d7498a759e94edc9a2db + md5: a451d576819089b0d672f18768be0f65 + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 16385 + timestamp: 1733381032766 - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda sha256: c2248418c310bdd1719b186796ae50a8a77ce555228b6acd32768e2543a15012 md5: bf7a226e58dfb8346c70df36065d86c9 @@ -7812,17 +3681,6 @@ packages: license_family: MIT size: 36754 timestamp: 1693929424267 -- conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.2.1-pyhd8ed1ab_0.conda - sha256: 3c6a476e7afb702d841e23c61a0c4cc491929d2e39376d329e67e94c40a236cc - md5: c1ef6bc13dd2caa4b406fb3cb06c2791 - depends: - - anyio >=4.7.0 - - python >=3.9 - - starlette >=0.41.3 - license: BSD-3-Clause - license_family: BSD - size: 15324 - timestamp: 1735126414893 - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda sha256: 570da295d421661af487f1595045760526964f41471021056e993e73089e9c41 md5: b1b505328da7a6b246787df4b5a49fbc @@ -7835,17 +3693,6 @@ packages: license_family: MIT size: 26988 timestamp: 1733569565672 -- conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.45.3-pyha770c72_0.conda - sha256: be48c99e6fb8e12ebee09e6fbb4d78a170b614cdaa19ab791a8f5b6caf09919a - md5: 9b3a68bc7aed7949ef86f950993261f4 - depends: - - anyio >=3.6.2,<5 - - python >=3.9 - - typing_extensions >=3.10.0 - license: BSD-3-Clause - license_family: BSD - size: 57934 - timestamp: 1737824077668 - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh0d859eb_0.conda sha256: b300557c0382478cf661ddb520263508e4b3b5871b471410450ef2846e8c352c md5: efba281bbdae5f6b0a1d53c6d4a97c93 @@ -7897,80 +3744,24 @@ packages: md5: f75105e0585851f818e0009dd1dde4dc depends: - libgcc-ng >=12 - - libzlib >=1.2.13,<2.0.0a0 - arch: aarch64 - platform: linux - license: TCL - license_family: BSD - size: 3351802 - timestamp: 1695506242997 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda - sha256: 72457ad031b4c048e5891f3f6cb27a53cb479db68a52d965f796910e71a403a8 - md5: b50a57ba89c32b62428b71a875291c9b - depends: - - libzlib >=1.2.13,<2.0.0a0 - arch: arm64 - platform: osx - license: TCL - license_family: BSD - size: 3145523 - timestamp: 1699202432999 -- conda: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.21.0-py312h8360d73_0.conda - sha256: 4f504a5e9d77c6d88a8f735c4319429d8bf40b742384f908a2efe0a09acc3cc5 - md5: f953aa733207f3d37acf4a3efbedba89 - depends: - - __glibc >=2.17,<3.0.a0 - - huggingface_hub >=0.16.4,<1.0 - - libgcc >=13 - - libstdcxx >=13 - - openssl >=3.4.0,<4.0a0 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - constrains: - - __glibc >=2.17 - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 2258007 - timestamp: 1732734202127 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.21.0-py312ha0d6ea1_0.conda - sha256: ef0f4d4e2c798b1821187ea0ba4c86484e48abaa0e9a19fe68030fa7ff5dde84 - md5: 077f48c9e0c08a30d842e15c51df4143 - depends: - - huggingface_hub >=0.16.4,<1.0 - - libgcc >=13 - - libstdcxx >=13 - - openssl >=3.4.0,<4.0a0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - constrains: - - __glibc >=2.17 + - libzlib >=1.2.13,<2.0.0a0 arch: aarch64 platform: linux - license: Apache-2.0 - license_family: APACHE - size: 2331194 - timestamp: 1732734303196 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.21.0-py312hf3e4074_0.conda - sha256: 5d395333fcb22dc611140286c1f2ea8b3fa220a4931c583587cb612238091555 - md5: 4c732c74b485ef7ac8ec1c548dd45e8e + license: TCL + license_family: BSD + size: 3351802 + timestamp: 1695506242997 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda + sha256: 72457ad031b4c048e5891f3f6cb27a53cb479db68a52d965f796910e71a403a8 + md5: b50a57ba89c32b62428b71a875291c9b depends: - - __osx >=11.0 - - huggingface_hub >=0.16.4,<1.0 - - libcxx >=18 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - constrains: - - __osx >=11.0 + - libzlib >=1.2.13,<2.0.0a0 arch: arm64 platform: osx - license: Apache-2.0 - license_family: APACHE - size: 1931389 - timestamp: 1732734727624 + license: TCL + license_family: BSD + size: 3145523 + timestamp: 1699202432999 - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda sha256: 18636339a79656962723077df9a56c0ac7b8a864329eb8f847ee3d38495b863e md5: ac944244f1fed2eb49bae07193ae8215 @@ -8039,62 +3830,6 @@ packages: license_family: BSD size: 110051 timestamp: 1733367480074 -- conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.48.2-pyhd8ed1ab_0.conda - sha256: 67b19c3d6befcc538df3e6d8dc7c4a2b6c7e35b7c1666da790cea4166f1b768a - md5: 717807c559e9a30fea4850ab8881adcb - depends: - - datasets !=2.5.0 - - filelock - - huggingface_hub >=0.23.0,<1.0 - - numpy >=1.17 - - packaging >=20.0 - - python >=3.9 - - pyyaml >=5.1 - - regex !=2019.12.17 - - requests - - safetensors >=0.4.1 - - tokenizers >=0.21,<0.22 - - tqdm >=4.27 - license: Apache-2.0 - license_family: APACHE - size: 3416794 - timestamp: 1738278628376 -- conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda - sha256: ef695490e895c2ad552c77ec497b899b09fd4ad4ab07edcf5649f5994cf92a35 - md5: 170a0398946d8f5b454e592672b6fc20 - depends: - - python >=3.9 - - typer-slim-standard 0.15.1 hd8ed1ab_0 - license: MIT - license_family: MIT - size: 56175 - timestamp: 1733408582623 -- conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda - sha256: d4965516f35e0805199de6596c4ac76c4ad3d6b012be35e532102f9e53ecb860 - md5: 0218b16f5a1dd569e575a7a6415489db - depends: - - click >=8.0.0 - - python >=3.9 - - typing_extensions >=3.7.4.3 - constrains: - - rich >=10.11.0 - - typer >=0.15.1,<0.15.2.0a0 - - shellingham >=1.3.0 - license: MIT - license_family: MIT - size: 43592 - timestamp: 1733408569554 -- conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda - sha256: f31c56fe98315da8b9ce848256c17e0b9f87896b41a6ccf0c9cc74644dcef20f - md5: 4e603c43bfdfc7b533be087c3e070cc9 - depends: - - rich - - shellingham - - typer-slim 0.15.1 pyhd8ed1ab_0 - license: MIT - license_family: MIT - size: 49531 - timestamp: 1733408570063 - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20241206-pyhd8ed1ab_0.conda sha256: 8b98cd9464837174ab58aaa912fc95d5831879864676650a383994033533b8d1 md5: 1dbc4a115e2ad9fb7f9d5b68397f66f9 @@ -8159,128 +3894,6 @@ packages: license_family: MIT size: 100102 timestamp: 1734859520452 -- conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.34.0-pyh31011fe_0.conda - sha256: 55c160b0cf9274e2b98bc0f7fcce548bffa8d788bc86aa02801877457040f6fa - md5: 5d448feee86e4740498ec8f8eb40e052 - depends: - - __unix - - click >=7.0 - - h11 >=0.8 - - python >=3.9 - - typing_extensions >=4.0 - license: BSD-3-Clause - license_family: BSD - size: 48643 - timestamp: 1734293057914 -- conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.34.0-h31011fe_0.conda - sha256: 87e1531e175e75122f9f37608eb953af4c977465ab0ae11283cc01fef954e4ec - md5: 32a94143a7f65d76d2d5da37dcb4ed79 - depends: - - __unix - - httptools >=0.6.3 - - python-dotenv >=0.13 - - pyyaml >=5.1 - - uvicorn 0.34.0 pyh31011fe_0 - - uvloop >=0.14.0,!=0.15.0,!=0.15.1 - - watchfiles >=0.13 - - websockets >=10.4 - license: BSD-3-Clause - license_family: BSD - size: 7203 - timestamp: 1734293058849 -- conda: https://conda.anaconda.org/conda-forge/linux-64/uvloop-0.21.0-py312h66e93f0_1.conda - sha256: 9337a80165fcf70b06b9d6ba920dad702260ca966419ae77560a15540e41ab72 - md5: 998e481e17c1b6a74572e73b06f2df08 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libuv >=1.49.2,<2.0a0 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - arch: x86_64 - platform: linux - license: MIT OR Apache-2.0 - size: 701355 - timestamp: 1730214506716 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/uvloop-0.21.0-py312hb2c0f52_1.conda - sha256: 807eede6698bd00a1d739a3e19ee6ae6a03a66d2ddd2ef150f2dfd198c3b0292 - md5: d83e107ba16c77aba2feec47b7b666a4 - depends: - - libgcc >=13 - - libuv >=1.49.2,<2.0a0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - arch: aarch64 - platform: linux - license: MIT OR Apache-2.0 - size: 655266 - timestamp: 1730214606664 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/uvloop-0.21.0-py312h0bf5046_1.conda - sha256: b1efa77aa4871d7bb09c8dd297fa9bd9070ba7f0f95f2d12ae9cdd31ce8b6b22 - md5: 4f5110253ba80ebf27e55c4ab333880a - depends: - - __osx >=11.0 - - libuv >=1.49.2,<2.0a0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - arch: arm64 - platform: osx - license: MIT OR Apache-2.0 - size: 544097 - timestamp: 1730214653726 -- conda: https://conda.anaconda.org/conda-forge/linux-64/watchfiles-1.0.4-py312h12e396e_0.conda - sha256: b728f525dcae2c10524f9942255346eba62aee9c820ff269d7dd4f7caffb7ffb - md5: df87129c4cb7afc4a3cbad71a1b9e223 - depends: - - __glibc >=2.17,<3.0.a0 - - anyio >=3.0.0 - - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - constrains: - - __glibc >=2.17 - arch: x86_64 - platform: linux - license: MIT - license_family: MIT - size: 410192 - timestamp: 1736550568524 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/watchfiles-1.0.4-py312h8cbf658_0.conda - sha256: 45193910f6bafc287c784442d173745161b18f96223f0f990a9a744fda753787 - md5: ed958a27e610c31de625e167d4c11a04 - depends: - - anyio >=3.0.0 - - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - constrains: - - __glibc >=2.17 - arch: aarch64 - platform: linux - license: MIT - license_family: MIT - size: 403791 - timestamp: 1736550743174 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/watchfiles-1.0.4-py312hcd83bfe_0.conda - sha256: 84122e3712f2263e12c9d2be75d122eaf2d269801183df4b73aadcb670943b17 - md5: 946eb0208d09b811a671fad9b2831f4e - depends: - - __osx >=11.0 - - anyio >=3.0.0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - constrains: - - __osx >=11.0 - arch: arm64 - platform: osx - license: MIT - license_family: MIT - size: 363822 - timestamp: 1736550859472 - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda sha256: f21e63e8f7346f9074fd00ca3b079bd3d2fa4d71f1f89d5b6934bf31446dc2a5 md5: b68980f2495d096e71c7fd9d7ccf63e6 @@ -8317,48 +3930,6 @@ packages: license_family: APACHE size: 46718 timestamp: 1733157432924 -- conda: https://conda.anaconda.org/conda-forge/linux-64/websockets-14.2-py312h66e93f0_0.conda - sha256: 52092f1f811fddcbb63e4e8e1c726f32a0a1ea14c36b70982fc2021a3c010e48 - md5: 279166352304d5d4b63429e9c86fa3dc - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - arch: x86_64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 242949 - timestamp: 1737358315063 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/websockets-14.2-py312hb2c0f52_0.conda - sha256: 5b8273df10b85a667b4fe71788a12c33a9626723650e28f582fd56c87bad0471 - md5: d7535d5d2f8d49d625071f305d6112a1 - depends: - - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - arch: aarch64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 244675 - timestamp: 1737358397158 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/websockets-14.2-py312hea69d52_0.conda - sha256: e5ad8c983a1669d06a6648990c0491d5469143f02003c8fd2ae7d066d7d4b086 - md5: 8757561d3ea10ba178fb7fb888f33e3a - depends: - - __osx >=11.0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - arch: arm64 - platform: osx - license: BSD-3-Clause - license_family: BSD - size: 246269 - timestamp: 1737358485546 - conda: https://conda.anaconda.org/conda-forge/noarch/wheel-0.45.1-pyhd8ed1ab_1.conda sha256: 1b34021e815ff89a4d902d879c3bd2040bc1bd6169b32e9427497fa05c55f1ce md5: 75cb7132eb58d97896e173ef12ac9986 @@ -8368,147 +3939,6 @@ packages: license_family: MIT size: 62931 timestamp: 1733130309598 -- conda: https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.17.2-py312h66e93f0_0.conda - sha256: ed3a1700ecc5d38c7e7dc7d2802df1bc1da6ba3d6f6017448b8ded0affb4ae00 - md5: 669e63af87710f8d52fdec9d4d63b404 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - arch: x86_64 - platform: linux - license: BSD-2-Clause - license_family: BSD - size: 63590 - timestamp: 1736869574299 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/wrapt-1.17.2-py312hb2c0f52_0.conda - sha256: cc28914462a21b2f64d9b763a9733bfcbc811dd2975d0d2e6e429e35f5b6d59c - md5: 8a5c6e3f809bae085be369b62dc5d06a - depends: - - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - arch: aarch64 - platform: linux - license: BSD-2-Clause - license_family: BSD - size: 63967 - timestamp: 1736869675870 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/wrapt-1.17.2-py312hea69d52_0.conda - sha256: 6a3e68b57de29802e8703d1791dcacb7613bfdc17bbb087c6b2ea2796e6893ef - md5: e49608c832fcf438f70cbcae09c3adc5 - depends: - - __osx >=11.0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - arch: arm64 - platform: osx - license: BSD-2-Clause - license_family: BSD - size: 61198 - timestamp: 1736869673767 -- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-hb9d3cd8_0.conda - sha256: ed10c9283974d311855ae08a16dfd7e56241fac632aec3b92e3cfe73cff31038 - md5: f6ebe2cb3f82ba6c057dde5d9debe4f7 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - arch: x86_64 - platform: linux - license: MIT - license_family: MIT - size: 14780 - timestamp: 1734229004433 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxau-1.0.12-h86ecc28_0.conda - sha256: 7829a0019b99ba462aece7592d2d7f42e12d12ccd3b9614e529de6ddba453685 - md5: d5397424399a66d33c80b1f2345a36a6 - depends: - - libgcc >=13 - arch: aarch64 - platform: linux - license: MIT - license_family: MIT - size: 15873 - timestamp: 1734230458294 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxau-1.0.12-h5505292_0.conda - sha256: f33e6f013fc36ebc200f09ddead83468544cb5c353a3b50499b07b8c34e28a8d - md5: 50901e0764b7701d8ed7343496f4f301 - depends: - - __osx >=11.0 - arch: arm64 - platform: osx - license: MIT - license_family: MIT - size: 13593 - timestamp: 1734229104321 -- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb9d3cd8_0.conda - sha256: 6b250f3e59db07c2514057944a3ea2044d6a8cdde8a47b6497c254520fade1ee - md5: 8035c64cb77ed555e3f150b7b3972480 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - arch: x86_64 - platform: linux - license: MIT - license_family: MIT - size: 19901 - timestamp: 1727794976192 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxdmcp-1.1.5-h57736b2_0.conda - sha256: efcc150da5926cf244f757b8376d96a4db78bc15b8d90ca9f56ac6e75755971f - md5: 25a5a7b797fe6e084e04ffe2db02fc62 - depends: - - libgcc >=13 - arch: aarch64 - platform: linux - license: MIT - license_family: MIT - size: 20615 - timestamp: 1727796660574 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxdmcp-1.1.5-hd74edd7_0.conda - sha256: 9939a166d780700d81023546759102b33fdc2c5f11ef09f5f66c77210fd334c8 - md5: 77c447f48cab5d3a15ac224edb86a968 - depends: - - __osx >=11.0 - arch: arm64 - platform: osx - license: MIT - license_family: MIT - size: 18487 - timestamp: 1727795205022 -- conda: https://conda.anaconda.org/conda-forge/linux-64/xxhash-0.8.2-hd590300_0.conda - sha256: 6fe74a8fd84ab0dc25e4dc3e0c22388dd8accb212897a208b14fe5d4fbb8fc2f - md5: f08fb5c89edfc4aadee1c81d4cfb1fa1 - depends: - - libgcc-ng >=12 - arch: x86_64 - platform: linux - license: BSD-2-Clause - license_family: BSD - size: 97691 - timestamp: 1689951608120 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xxhash-0.8.2-h31becfc_0.conda - sha256: 4c526aed70b579d80e5c20d32130b6bc8bde59b3250d43c2b5269755f4da8a9b - md5: bb9faf6857108a9f62ebb4dab6ef05da - depends: - - libgcc-ng >=12 - arch: aarch64 - platform: linux - license: BSD-2-Clause - license_family: BSD - size: 102442 - timestamp: 1689951682147 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/xxhash-0.8.2-hb547adb_0.conda - sha256: a70f59f7221ee72c45b39a6b36a33eb9c717ba01921cce1a3c361a4676979a2e - md5: 144cd3b88706507f332f5eb5fb83a33b - arch: arm64 - platform: osx - license: BSD-2-Clause - license_family: BSD - size: 97593 - timestamp: 1689951969732 - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 sha256: a4e34c710eeb26945bdbdaba82d3d74f60a78f54a874ec10d373811a5d217535 md5: 4cb3ad778ec2d5a7acbdf254eb1c42ae @@ -8540,57 +3970,6 @@ packages: license_family: MIT size: 88016 timestamp: 1641347076660 -- conda: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.18.3-py312h178313f_1.conda - sha256: 6b054c93dd19fd7544af51b41a8eacca2ab62271f6c0c5a2a0cffe80dc37a0ce - md5: 6822c49f294d4355f19d314b8b6063d8 - depends: - - __glibc >=2.17,<3.0.a0 - - idna >=2.0 - - libgcc >=13 - - multidict >=4.0 - - propcache >=0.2.1 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 152305 - timestamp: 1737575898300 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.18.3-py312hcc812fe_1.conda - sha256: bfa211c0dd5dbb308788f055277dc428b7923ceb2de6a22ea98bc17cf306f9f5 - md5: d14c78abdd6109e2b7162f53b6cc1e77 - depends: - - idna >=2.0 - - libgcc >=13 - - multidict >=4.0 - - propcache >=0.2.1 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 149654 - timestamp: 1737576065314 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.18.3-py312h998013c_1.conda - sha256: 48821d23567ca0f853eee6f7812c74392867e123798b5b3c44f58758d8eb580e - md5: 092d3b40acc67c470f379049be343a7a - depends: - - __osx >=11.0 - - idna >=2.0 - - multidict >=4.0 - - propcache >=0.2.1 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: Apache - size: 145543 - timestamp: 1737576074753 - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda sha256: a4dc72c96848f764bb5a5176aa93dd1e9b9e52804137b99daeebba277b31ea10 md5: 3947a35e916fcc6b9825449affbf4214 @@ -8643,43 +4022,6 @@ packages: license_family: MIT size: 21809 timestamp: 1732827613585 -- conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.1-hb9d3cd8_2.conda - sha256: 5d7c0e5f0005f74112a34a7425179f4eb6e73c92f5d109e6af4ddeca407c92ab - md5: c9f075ab2f33b3bbee9e62d4ad0a6cd8 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libzlib 1.3.1 hb9d3cd8_2 - arch: x86_64 - platform: linux - license: Zlib - license_family: Other - size: 92286 - timestamp: 1727963153079 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zlib-1.3.1-h86ecc28_2.conda - sha256: b4f649aa3ecdae384d5dad7074e198bff120edd3dfb816588e31738fc6d627b1 - md5: bc230abb5d21b63ff4799b0e75204783 - depends: - - libgcc >=13 - - libzlib 1.3.1 h86ecc28_2 - arch: aarch64 - platform: linux - license: Zlib - license_family: Other - size: 95582 - timestamp: 1727963203597 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zlib-1.3.1-h8359307_2.conda - sha256: 58f8860756680a4831c1bf4f294e2354d187f2e999791d53b1941834c4b37430 - md5: e3170d898ca6cb48f1bb567afb92f775 - depends: - - __osx >=11.0 - - libzlib 1.3.1 h8359307_2 - arch: arm64 - platform: osx - license: Zlib - license_family: Other - size: 77606 - timestamp: 1727963209370 - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312hef9b889_1.conda sha256: b97015e146437283f2213ff0e95abdc8e2480150634d81fbae6b96ee09f5e50b md5: 8b7069e9792ee4e5b4919a7a306d2e67 diff --git a/examples/offline-inference/magic.lock b/examples/offline-inference/magic.lock new file mode 100644 index 0000000000..c7344b5c98 --- /dev/null +++ b/examples/offline-inference/magic.lock @@ -0,0 +1,9001 @@ +version: 6 +environments: + default: + channels: + - url: https://conda.anaconda.org/conda-forge/ + - url: https://conda.modular.com/max-nightly/ + packages: + linux-64: + - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_kmp_llvm.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.13-py312h178313f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.8.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.1.0-pyh71513ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.1-h205f482_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.1-h1a47875_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.10.6-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.3.0-h4e1184b_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.0-h7959bf6_11.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.2-hefd7a92_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-h173a860_6.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h11f4f37_12.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.9-he1b24dc_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.2-h4e1184b_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-h4e1184b_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.9-he0e7f3f_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.489-h4d475cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.10.0-h113e628_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.13.0-h3cf044e_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-common-cpp-12.8.0-h736e048_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-files-datalake-cpp-12.12.0-ha633028_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/backoff-2.2.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py312h2ec8cdc_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.4-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2025.1.31-hbcca054_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.1.31-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py312h06ac9bb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.12.9-py312hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-crt-tools-12.8.61-ha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-cudart-12.8.57-h5888daf_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cuda-cudart_linux-64-12.8.57-h3f2d84a_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-cuobjdump-12.8.55-hbd13f7d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-cupti-12.8.57-hbd13f7d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-nvcc-tools-12.8.61-he02047a_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-nvdisasm-12.8.55-hbd13f7d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-nvvm-tools-12.8.61-he02047a_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cuda-version-12.8-h5d125a7_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.18-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda + - 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.8-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.17.0-pyhd8ed1ab_0.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-py312h178313f_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2025.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gflags-2.2.2-h5888daf_1005.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/gguf-0.14.0-pyh267e887_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/glog-0.7.1-hbabe93e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gmp-6.3.0-hac33072_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gmpy2-2.1.5-py312h7201bc8_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.68.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/hf-transfer-0.1.9-py312h5bc9d60_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/httptools-0.6.4-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.29.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.17-h717163a_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-19.0.1-hfa2a6e7_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-19.0.1-hcb10f89_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-19.0.1-hcb10f89_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-19.0.1-h08228c5_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-31_hfdb39a5_mkl.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.1.0-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-31_h372d94f_mkl.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcrc32c-1.1.2-h9c3ff4c_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.12.1-h332b0f4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.23-h4ddbbb0_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libevent-2.1.12-hf998b51_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h767d61c_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.35.0-h2b5623c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.35.0-h0121fbd_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.67.1-h25350d4_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libhwloc-2.11.2-default_h0d58e46_1001.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h4ce23a2_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-31_hc41d3b0_mkl.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libllvm20-20.1.0.rc1-hb8a341e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-1.18.0-hfcad708_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-headers-1.18.0-ha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-19.0.1-h081d1f1_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.47-h943b412_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsentencepiece-0.2.0-h8e10757_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.49.1-hee588c1_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hf672d98_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-h8f9b012_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libthrift-0.21.0-h0e7cc3e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hd9ff511_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libtorch-2.5.1-cpu_mkl_h89e7157_113.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.10.0-h4c51ac1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.50.0-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.5.0-h851e524_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.6-h8d12d68_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/llvm-openmp-19.1.7-h024ca30_0.conda + - 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-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-pipelines-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022718-release.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-2024.2.2-ha957f24_16.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022718-release.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/mpc-1.3.1-h24ddda3_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/mpfr-4.2.1-h90cbb55_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mpmath-1.3.0-pyhd8ed1ab_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-h2d0b736_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/nlohmann_json-3.11.3-he02047a_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nvidia-ml-py-12.570.86-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nvitop-1.4.2-pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.3-h5fbd93e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.1-h7b32b05_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.30.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.30.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.30.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-prometheus-0.51b0-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.30.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.30.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.51b0-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/orc-2.0.3-h12ee42a_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.3-py312hf9745cd_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-11.1.0-py312h80c1187_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus-async-22.2.0-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/prometheus-cpp-1.3.0-ha5d0236_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.1-py312h178313f_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/protobuf-5.28.3-py312h2ec8cdc_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/psutil-7.0.0-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-19.0.1-py312h7900ff3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-19.0.1-py312h01725c0_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pybind11-2.13.6-pyh1ec8472_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pybind11-global-2.13.6-pyh415d2e4_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.6-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.27.2-py312h12e396e_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.8.1-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyinstrument-5.0.1-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.9-h9e4cc4f_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.20-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-xxhash-3.5.0-py312h66e93f0_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pytorch-2.5.1-cpu_mkl_py312_heeca0f5_113.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py312h178313f_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.1-py312hbf22597_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/re2-2024.07.02-h9925aae_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda + - 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.11-h072c03f_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/safetensors-0.5.3-py312h12e396e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-0.2.0-hc8f76dd_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-python-0.2.0-py312hb6b8a2b_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-spm-0.2.0-h8e10757_10.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sentinel-1.0.0-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.8.2-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sleef-3.8-h1b44611_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-h8bd8927_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.2.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.45.3-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sympy-1.13.3-pyh2585a3b_105.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tbb-2021.13.0-hceb3a55_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tiktoken-0.9.0-py312h14ff09d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.21.0-py312h8360d73_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.49.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/triton-3.2.0-cuda126py312h5a3d8a8_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.34.0-pyh31011fe_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.34.0-h31011fe_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/uvloop-0.21.0-py312h66e93f0_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/watchfiles-1.0.4-py312h12e396e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/websockets-15.0-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.17.2-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xgrammar-0.1.11-py312h6edf5ed_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xxhash-0.8.3-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.18.3-py312h178313f_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.1-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312hef9b889_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda + linux-aarch64: + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.13-py312hcc812fe_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.8.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.1.0-pyh71513ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.1-hb7ec8d5_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.1-h740c5af_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-common-0.10.6-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-compression-0.3.0-h0f0193d_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-event-stream-0.5.0-hcbd8f92_11.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.2-h3df160d_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-hfd5ba81_6.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h5f50e26_12.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.9-h05b070f_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.2-h0f0193d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h0f0193d_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.9-hab3ce66_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.489-h88461e4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-core-cpp-1.14.0-h1887c18_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-identity-cpp-1.10.0-h47b0b28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-blobs-cpp-12.13.0-h185ecfd_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-common-cpp-12.8.0-h1b94036_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-files-datalake-cpp-12.12.0-h37d6d07_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/backoff-2.2.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/brotli-python-1.1.0-py312h6f74592_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h68df207_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/c-ares-1.34.4-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2025.1.31-hcefe29a_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.1.31-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cffi-1.17.1-py312hac81daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.12.9-py312hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cuda-crt-tools-12.8.61-h579c4fd_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cuda-cudart-12.8.57-h3ae8b8a_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cuda-cudart_linux-aarch64-12.8.57-h3ae8b8a_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cuda-cuobjdump-12.8.55-h05609ea_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cuda-cupti-12.8.57-h5101a13_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cuda-nvcc-tools-12.8.61-h614329b_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cuda-nvdisasm-12.8.55-h5101a13_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cuda-nvvm-tools-12.8.61-h614329b_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cuda-version-12.8-h5d125a7_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.18-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda + - 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.8-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.17.0-pyhd8ed1ab_0.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-py312hcc812fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2025.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gflags-2.2.2-h5ad3122_1005.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/gguf-0.14.0-pyh267e887_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/glog-0.7.1-h468a4a4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gmp-6.3.0-h0a1ffab_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gmpy2-2.1.5-py312he9d48ea_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.68.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/hf-transfer-0.1.9-py312he5cae2c_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/httptools-0.6.4-py312hb2c0f52_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.29.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/keyutils-1.6.1-h4e544f5_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/krb5-1.21.3-h50a48e9_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lcms2-2.17-hc88f144_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.0.0-h4de3ea5_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h18dbdb1_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-19.0.1-h36213f4_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-19.0.1-h3b568fd_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-19.0.1-h3b568fd_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-19.0.1-h1e9d426_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-31_h1a9f1db_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlicommon-1.1.0-h86ecc28_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlidec-1.1.0-h86ecc28_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlienc-1.1.0-h86ecc28_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-31_hab92f65_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcrc32c-1.1.2-h01db608_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcurl-8.12.1-h6702fde_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libdeflate-1.23-h5e3c512_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20250104-pl5321h976ea20_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libev-4.33-h31becfc_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libevent-2.1.12-h4ba1bb4_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.6.4-h5ad3122_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.4.6-he21f813_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-14.2.0-he277a41_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-14.2.0-he9431aa_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-2.35.0-hccf9d24_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-storage-2.35.0-hb9b2b65_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgrpc-1.67.1-hf7ccdd3_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libiconv-1.18-hc99b53d_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libjpeg-turbo-3.0.0-h31becfc_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-31_h411afd4_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libllvm20-20.1.0.rc1-h1ddd4b9_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.4-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnghttp2-1.64.0-hc8609a4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.29-pthreads_h9d3fd7e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopentelemetry-cpp-1.18.0-h60b47f9_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopentelemetry-cpp-headers-1.18.0-h8af1aa0_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-19.0.1-hfc78867_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.47-hec79eb8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.3-h44a3b7b_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsentencepiece-0.2.0-h6164ad9_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.20-h68df207_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.49.1-h5eb1b54_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libssh2-1.11.1-ha41c0db_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libthrift-0.21.0-h154c74f_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.0-h88f7998_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libtorch-2.5.1-cpu_generic_hb04e7f6_13.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.10.0-ha346350_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuv-1.50.0-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libwebp-base-1.5.0-h0886dbf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcb-1.17.0-h262b8f6_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.6-h2e0c361_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda + - 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-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-pipelines-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022718-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-25.2.0.dev2025022718-release.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/mpc-1.3.1-h783934e_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/mpfr-4.2.1-h2305555_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mpmath-1.3.0-pyhd8ed1ab_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-ha32ae93_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/nlohmann_json-3.11.3-h0a1ffab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nomkl-1.0-h5ca1d4c_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nvidia-ml-py-12.570.86-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nvitop-1.4.2-pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openjpeg-2.5.3-h3f56577_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.1-hd08dc88_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.30.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.30.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.30.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-prometheus-0.51b0-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.30.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.30.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.51b0-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/orc-2.0.3-hdd485aa_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pandas-2.2.3-py312ha2895bd_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pillow-11.1.0-py312h719f0cf_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus-async-22.2.0-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/prometheus-cpp-1.3.0-h7938499_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.2.1-py312hcc812fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/protobuf-5.28.3-py312h6f74592_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/psutil-7.0.0-py312hb2c0f52_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pthread-stubs-0.4-h86ecc28_1002.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-19.0.1-py312h8025657_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-19.0.1-py312h66f7834_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pybind11-2.13.6-pyh1ec8472_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pybind11-global-2.13.6-pyh415d2e4_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.6-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pydantic-core-2.27.2-py312h8cbf658_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.8.1-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyinstrument-5.0.1-py312hb2c0f52_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.9-h1683364_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.20-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-xxhash-3.5.0-py312h52516f5_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.12-5_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pytorch-2.5.1-cpu_generic_py312_h819a134_13.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyyaml-6.0.2-py312hcc812fe_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyzmq-26.2.1-py312h2427ae1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/re2-2024.07.02-haa97905_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8382b9d_2.conda + - 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.11-h3caee7a_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/safetensors-0.5.3-py312h8cbf658_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-0.2.0-h6c1b121_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-python-0.2.0-py312h197ff68_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-spm-0.2.0-h6164ad9_10.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sentinel-1.0.0-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.8.2-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sleef-3.8-h8fb0607_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-hd4fb6f5_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.2.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.45.3-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sympy-1.13.3-pyh2585a3b_105.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tiktoken-0.9.0-py312h4a2a8a5_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.21.0-py312ha0d6ea1_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py312h52516f5_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.49.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/triton-3.2.0-cuda126py312h1ed5fa8_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.34.0-pyh31011fe_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.34.0-h31011fe_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/uvloop-0.21.0-py312hb2c0f52_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/watchfiles-1.0.4-py312h8cbf658_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/websockets-15.0-py312hb2c0f52_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/wrapt-1.17.2-py312hb2c0f52_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xgrammar-0.1.11-py312hc94be92_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxau-1.0.12-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxdmcp-1.1.5-h57736b2_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xxhash-0.8.3-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yaml-0.2.5-hf897c2e_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.18.3-py312hcc812fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zeromq-4.3.5-h5efb499_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zlib-1.3.1-h86ecc28_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstandard-0.23.0-py312hb698573_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.6-h02f22dd_0.conda + osx-arm64: + - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.13-py312h998013c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.8.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.1.0-pyh71513ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.1-hfc2798a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.1-hc8a0bd2_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.10.6-h5505292_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-compression-0.3.0-hc8a0bd2_5.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.0-h54f970a_11.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.2-h96aa502_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-haba67d1_6.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h24f418c_12.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.9-hf37e03c_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.2-hc8a0bd2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-hc8a0bd2_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.9-ha81f72f_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.489-h0e5014b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.14.0-hd50102c_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.10.0-hc602bab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-blobs-cpp-12.13.0-h7585a09_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-common-cpp-12.8.0-h9ca1f76_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-files-datalake-cpp-12.12.0-hcdd55da_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/backoff-2.2.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py312hde4cb15_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.4-h5505292_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2025.1.31-hf0a4a13_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.1.31-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.1-py312h0fad829_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.12.9-py312hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.18-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda + - 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.8-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.17.0-pyhd8ed1ab_0.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-py312h998013c_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2025.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gflags-2.2.2-hf9b8971_1005.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/gguf-0.14.0-pyh267e887_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/glog-0.7.1-heb240a5_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gmp-6.3.0-h7bae524_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gmpy2-2.1.5-py312h524cf62_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.68.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/hf-transfer-0.1.9-py312hfba41e8_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/httptools-0.6.4-py312hea69d52_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.29.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.17-h7eeda09_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_h07bc746_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-19.0.1-h0945df6_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-19.0.1-hf07054f_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-19.0.1-hf07054f_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-19.0.1-h4239455_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-31_h10e41b3_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.1.0-hd74edd7_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.1.0-hd74edd7_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlienc-1.1.0-hd74edd7_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-31_hb3479ef_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcrc32c-1.1.2-hbdafb3b_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.12.1-h73640d1_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.23-hec38601_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libev-4.33-h93a5062_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libevent-2.1.12-h2757513_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.4-h286801f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-2.35.0-hdbe95d5_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-storage-2.35.0-h7081f7f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgrpc-1.67.1-h0a426d6_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.18-hfe07756_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.0.0-hb547adb_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-31_hc9a63f6_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.4-h39f12f2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.64.0-h6d7220d_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.29-openmp_hf332438_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopentelemetry-cpp-1.18.0-h0c05b2d_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopentelemetry-cpp-headers-1.18.0-hce30654_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-19.0.1-h636d7b7_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.47-h3783ad8_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.3-h3bd63a1_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h07bc746_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsentencepiece-0.2.0-he13a0af_10.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.1-h3f77e49_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.1-h9cc3647_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libthrift-0.21.0-h64651cc_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-h551f018_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtorch-2.5.1-cpu_generic_he9b55c7_13.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.10.0-hda25de7_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libuv-1.50.0-h5505292_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.5.0-h2471fea_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxcb-1.17.0-hdb1d25a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.6-hce475f1_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda + - 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-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-pipelines-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022718-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-25.2.0.dev2025022718-release.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/mpc-1.3.1-h8f1351a_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/mpfr-4.2.1-hb693164_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mpmath-1.3.0-pyhd8ed1ab_1.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 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/nlohmann_json-3.11.3-h00cdb27_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nomkl-1.0-h5ca1d4c_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nvidia-ml-py-12.570.86-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nvitop-1.4.2-pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openjpeg-2.5.3-h8a3d83b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.1-h81ee809_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.30.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.30.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.30.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-prometheus-0.51b0-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.30.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.30.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.51b0-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/orc-2.0.3-h0ff2369_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.3-py312hcd31e36_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-11.1.0-py312h50aef2c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus-async-22.2.0-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/prometheus-cpp-1.3.0-h0967b3e_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.1-py312h998013c_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/protobuf-5.28.3-py312hd8f9ff3_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/psutil-7.0.0-py312hea69d52_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pthread-stubs-0.4-hd74edd7_1002.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-19.0.1-py312h1f38498_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-19.0.1-py312hc40f475_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pybind11-2.13.6-pyh1ec8472_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pybind11-global-2.13.6-pyh415d2e4_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.6-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.27.2-py312hcd83bfe_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.8.1-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyinstrument-5.0.1-py312hea69d52_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.9-hc22306f_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.20-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-xxhash-3.5.0-py312hea69d52_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-5_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pytorch-2.5.1-cpu_generic_py312_h49ed405_13.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py312h998013c_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.1-py312hf4875e0_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/re2-2024.07.02-h6589ca4_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda + - 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.5.3-py312hcd83bfe_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-0.2.0-h22a84ea_10.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-python-0.2.0-py312h155166a_10.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-spm-0.2.0-he13a0af_10.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sentinel-1.0.0-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.8.2-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sleef-3.8-h8391f65_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-h98b9ce2_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.2.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.45.3-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sympy-1.13.3-pyh2585a3b_105.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tiktoken-0.9.0-py312hf3e4074_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.21.0-py312hf3e4074_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.49.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.34.0-pyh31011fe_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.34.0-h31011fe_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/uvloop-0.21.0-py312h0bf5046_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/watchfiles-1.0.4-py312hcd83bfe_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/websockets-15.0-py312hea69d52_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/wrapt-1.17.2-py312hea69d52_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xgrammar-0.1.11-py312hd6dbf26_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxau-1.0.12-h5505292_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxdmcp-1.1.5-hd74edd7_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xxhash-0.8.3-h5505292_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.18.3-py312h998013c_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zlib-1.3.1-h8359307_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py312h15fbf35_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.6-hb46c0d2_0.conda +packages: +- conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 + sha256: fe51de6107f9edc7aa4f786a70f4a883943bc9d39b3bb7307c04c41410990726 + md5: d7c89558ba9fa0495403155b64376d81 + arch: x86_64 + platform: linux + license: None + size: 2562 + timestamp: 1578324546067 +- conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_kmp_llvm.tar.bz2 + build_number: 2 + sha256: 84a66275da3a66e3f3e70e9d8f10496d807d01a9e4ec16cd2274cc5e28c478fc + md5: 562b26ba2e19059551a811e72ab7f793 + depends: + - _libgcc_mutex 0.1 conda_forge + - llvm-openmp >=9.0.1 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 5744 + timestamp: 1650742457817 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2 + build_number: 16 + sha256: 3702bef2f0a4d38bd8288bbe54aace623602a1343c2cfbefd3fa188e015bebf0 + md5: 6168d71addc746e8f2b8d57dfd2edcea + depends: + - libgomp >=7.5.0 + constrains: + - openmp_impl 9999 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 23712 + timestamp: 1650670790230 +- conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.6-pyhd8ed1ab_0.conda + sha256: a2a5579be9fb21f9397f51a4ba09599782c93e9117951a5105d8ee4b80d648c1 + md5: 5b7d3ceeb36e8e6783eae78acd4c18e1 + depends: + - python >=3.9 + license: PSF-2.0 + license_family: PSF + size: 19236 + timestamp: 1739175837817 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.13-py312h178313f_0.conda + sha256: 985834edea972ddf6c35ab4185fb228440efb845a70a88182895f8f90df4a4c9 + md5: 0ea623ee1f29a7e1d703bc3b0ef82306 + depends: + - __glibc >=2.17,<3.0.a0 + - aiohappyeyeballs >=2.3.0 + - aiosignal >=1.1.2 + - attrs >=17.3.0 + - frozenlist >=1.1.1 + - libgcc >=13 + - multidict >=4.5,<7.0 + - propcache >=0.2.0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - yarl >=1.17.0,<2.0 + arch: x86_64 + platform: linux + license: MIT AND Apache-2.0 + license_family: Apache + size: 915558 + timestamp: 1740482064204 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.13-py312hcc812fe_0.conda + sha256: ca1fa0450decaca810db4b9f5ff1dd00c710fd89767c764a771b5d4ce7a152b0 + md5: 7e952a2d83ebfb371515c010acc110c7 + depends: + - aiohappyeyeballs >=2.3.0 + - aiosignal >=1.1.2 + - attrs >=17.3.0 + - frozenlist >=1.1.1 + - libgcc >=13 + - multidict >=4.5,<7.0 + - propcache >=0.2.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - yarl >=1.17.0,<2.0 + arch: aarch64 + platform: linux + license: MIT AND Apache-2.0 + license_family: Apache + size: 904149 + timestamp: 1740481643315 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.13-py312h998013c_0.conda + sha256: 84f8c35912bce8c9ee979454a685ec0497fbccd7da86351e8d774ae3e7456055 + md5: d575ea7d96ce2c9fed370d85d3ef464e + depends: + - __osx >=11.0 + - aiohappyeyeballs >=2.3.0 + - aiosignal >=1.1.2 + - attrs >=17.3.0 + - frozenlist >=1.1.1 + - multidict >=4.5,<7.0 + - propcache >=0.2.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - yarl >=1.17.0,<2.0 + arch: arm64 + platform: osx + license: MIT AND Apache-2.0 + license_family: Apache + size: 885919 + timestamp: 1740482022806 +- conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda + sha256: 7de8ced1918bbdadecf8e1c1c68237fe5709c097bd9e0d254f4cad118f4345d0 + md5: 1a3981115a398535dbe3f6d5faae3d36 + depends: + - frozenlist >=1.1.0 + - python >=3.9 + license: Apache-2.0 + license_family: APACHE + size: 13229 + timestamp: 1734342253061 +- conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda + sha256: e0ea1ba78fbb64f17062601edda82097fcf815012cf52bb704150a2668110d48 + md5: 2934f256a8acfe48f6ebb4fce6cde29c + depends: + - python >=3.9 + - typing-extensions >=4.0.0 + license: MIT + license_family: MIT + size: 18074 + timestamp: 1733247158254 +- conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.8.0-pyhd8ed1ab_0.conda + sha256: f1455d2953e3eb6d71bc49881c8558d8e01888469dfd21061dd48afb6183e836 + md5: 848d25bfbadf020ee4d4ba90e5668252 + depends: + - exceptiongroup >=1.0.2 + - idna >=2.8 + - python >=3.9 + - sniffio >=1.1 + - typing_extensions >=4.5 + constrains: + - trio >=0.26.1 + - uvloop >=0.21 + license: MIT + license_family: MIT + size: 115305 + timestamp: 1736174485476 +- conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.1.0-pyh71513ae_0.conda + sha256: 1f267886522dfb9ae4e5ebbc3135b5eb13cff27bdbfe8d881a4d893459166ab4 + md5: 2cc3f588512f04f3a0c64b4e9bedc02d + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 56370 + timestamp: 1737819298139 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.1-h205f482_0.conda + sha256: ebe5e33249f37f6bb481de99581ebdc92dbfcf1b6915609bcf3c9e78661d6352 + md5: 9c500858e88df50af3cc883d194de78a + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 108111 + timestamp: 1737509831651 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.1-hb7ec8d5_0.conda + sha256: e1e6c9267a4d9af30b1d28c11a9041b17b7840ff83ef08614145a2a4f444f5b4 + md5: 2630f030652970a5531e492f6b2a6dd3 + depends: + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 + - libgcc >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 112658 + timestamp: 1737509863269 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.1-hfc2798a_0.conda + sha256: 5a60d196a585b25d1446fb973009e4e648e8d70beaa2793787243ede6da0fd9a + md5: 0abd67c0f7b60d50348fbb32fef50b65 + depends: + - __osx >=11.0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 92562 + timestamp: 1737509877079 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.1-h1a47875_3.conda + sha256: 095ac824ea9303eff67e04090ae531d9eb33d2bf8f82eaade39b839c421e16e8 + md5: 55a8561fdbbbd34f50f57d9be12ed084 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + - openssl >=3.3.1,<4.0a0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 47601 + timestamp: 1733991564405 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.1-h740c5af_3.conda + sha256: c5c7961d48ca7320ed3560c036f7aa5244df4b85d9657f70aacc5faba3e1509a + md5: 57ed2c445d7ef01d121b9bcea0522913 + depends: + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + - openssl >=3.3.1,<4.0a0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 50036 + timestamp: 1733991581303 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.1-hc8a0bd2_3.conda + sha256: 1f44be36e1daa17b4b081debb8aee492d13571084f38b503ad13e869fef24fe4 + md5: 8b0ce61384e5a33d2b301a64f3d22ac5 + depends: + - __osx >=11.0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - openssl >=3.3.1,<4.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 39925 + timestamp: 1733991649383 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.10.6-hb9d3cd8_0.conda + sha256: 496e92f2150fdc351eacf6e236015deedb3d0d3114f8e5954341cbf9f3dda257 + md5: d7d4680337a14001b0e043e96529409b + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 236574 + timestamp: 1733975453350 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-common-0.10.6-h86ecc28_0.conda + sha256: 57288ec5df35781bea8fc6a8c9099cad6695b747784fc1b8862a0f9e5b3bf5ab + md5: fef806a0f6de853670c746bbece01966 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 259031 + timestamp: 1733975520465 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.10.6-h5505292_0.conda + sha256: 3bde135c8e74987c0f79ecd4fa17ec9cff0d658b3090168727ca1af3815ae57a + md5: 145e5b4c9702ed279d7d68aaf096f77d + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 221863 + timestamp: 1733975576886 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.3.0-h4e1184b_5.conda + sha256: 62ca84da83585e7814a40240a1e750b1563b2680b032a471464eccc001c3309b + md5: 3f4c1197462a6df2be6dc8241828fe93 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 19086 + timestamp: 1733991637424 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-compression-0.3.0-h0f0193d_5.conda + sha256: 3f05d19f68ef800f33d44ea2a4211003124076516c8469abc7d432236344df53 + md5: 3a1421d12435df5b4c412cc4c8fac64d + depends: + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 19740 + timestamp: 1733991625201 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-compression-0.3.0-hc8a0bd2_5.conda + sha256: 47b2813f652ce7e64ac442f771b2a5f7d4af4ad0d07ff51f6075ea80ed2e3f09 + md5: a8b6c17732d14ed49d0e9b59c43186bc + depends: + - __osx >=11.0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 18068 + timestamp: 1733991869211 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.0-h7959bf6_11.conda + sha256: 10d7240c7db0c941fb1a59c4f8ea6689a434b03309ee7b766fa15a809c553c02 + md5: 9b3fb60fe57925a92f399bc3fc42eccf + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 54003 + timestamp: 1734024480949 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-event-stream-0.5.0-hcbd8f92_11.conda + sha256: 79aa363c71c891a27496c0498f8d498b2ddc87b3ccb3b6c9da5b50b05936ebb8 + md5: e0772c59af4243a9b2565baa5d79e5b6 + depends: + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + - libgcc >=13 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 55207 + timestamp: 1734024546663 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.0-h54f970a_11.conda + sha256: f0667935f4e0d4c25e0e51da035640310b5ceeb8f723156734439bde8b848d7d + md5: ba41238f8e653998d7d2f42e3a8db054 + depends: + - __osx >=11.0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + - libcxx >=18 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 47078 + timestamp: 1734024749727 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.2-hefd7a92_4.conda + sha256: 4a330206bd51148f6c13ca0b7a4db40f29a46f090642ebacdeb88b8a4abd7f99 + md5: 5ce4df662d32d3123ea8da15571b6f51 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-compression >=0.3.0,<0.3.1.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 197731 + timestamp: 1734008380764 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.2-h3df160d_4.conda + sha256: 3a1d2d332945306be9d49e569b95e4cc172d825f10e88715513a172f28ebb59e + md5: 28f00aa7fd9556c4c461328cf146c20b + depends: + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-compression >=0.3.0,<0.3.1.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - libgcc >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 190586 + timestamp: 1734008442362 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.2-h96aa502_4.conda + sha256: 22e4737c8a885995b7c1ae1d79c1f6e78d489e16ec079615980fdde067aeaf76 + md5: 495c93a4f08b17deb3c04894512330e6 + depends: + - __osx >=11.0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-compression >=0.3.0,<0.3.1.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 152983 + timestamp: 1734008451473 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-h173a860_6.conda + sha256: 335d822eead0a097ffd23677a288e1f18ea22f47a92d4f877419debb93af0e81 + md5: 9a063178f1af0a898526cc24ba7be486 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + - s2n >=1.5.11,<1.5.12.0a0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 157263 + timestamp: 1737207617838 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-hfd5ba81_6.conda + sha256: d8adfde05cee11057d99c3802e84b2300430a7c7c3c9936165d1d4b25ef59d91 + md5: 4e6771b45cb2b035c62d023dbf0dc000 + depends: + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + - s2n >=1.5.11,<1.5.12.0a0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 160933 + timestamp: 1737207637279 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-haba67d1_6.conda + sha256: 73722dd175af78b6cbfa033066f0933351f5382a1a737f6c6d9b8cfa84022161 + md5: d02e8f40ff69562903e70a1c6c48b009 + depends: + - __osx >=11.0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 136048 + timestamp: 1737207681224 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h11f4f37_12.conda + sha256: 512d3969426152d9d5fd886e27b13706122dc3fa90eb08c37b0d51a33d7bb14a + md5: 96c3e0221fa2da97619ee82faa341a73 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 194672 + timestamp: 1734025626798 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h5f50e26_12.conda + sha256: ffeb9100cc8fd4093e1a6fdfd938bc4a396dd77480b7fb17aa42855a4d5e2c70 + md5: 031ca33115d4b1eeb43f435d6215778c + depends: + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - libgcc >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 169516 + timestamp: 1734025167885 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h24f418c_12.conda + sha256: 96575ea1dd2a9ea94763882e40a66dcbff9c41f702bf37c9514c4c719b3c11dd + md5: c072045a6206f88015d02fcba1705ea1 + depends: + - __osx >=11.0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 134371 + timestamp: 1734025379525 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.9-he1b24dc_1.conda + sha256: 15fbdedc56850f8be5be7a5bcaea1af09c97590e631c024ae089737fc932fc42 + md5: caafc32928a5f7f3f7ef67d287689144 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-auth >=0.8.1,<0.8.2.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + - libgcc >=13 + - openssl >=3.4.0,<4.0a0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 115413 + timestamp: 1737558687616 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.9-h05b070f_1.conda + sha256: 9e7857fbc33eddc291fa09890ce468a92485d3e3e127bc00bbd1803e34121f84 + md5: e0a2869195f069db88b8932f5b00bee5 + depends: + - aws-c-auth >=0.8.1,<0.8.2.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + - libgcc >=13 + - openssl >=3.4.0,<4.0a0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 117875 + timestamp: 1737558720047 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.9-hf37e03c_1.conda + sha256: 92e8ca4eefcbbdf4189584c9410382884a06ed3030e5ecaac656dab8c95e6a80 + md5: de65f5e4ab5020103fe70a0eba9432a0 + depends: + - __osx >=11.0 + - aws-c-auth >=0.8.1,<0.8.2.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 98731 + timestamp: 1737558731831 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.2-h4e1184b_0.conda + sha256: 0424e380c435ba03b5948d02e8c958866c4eee50ed29e57f99473a5f795a4cfc + md5: dcd498d493818b776a77fbc242fbf8e4 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 55911 + timestamp: 1736535960724 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.2-h0f0193d_0.conda + sha256: fba38e469457764afcb94aa84d4d7788e6b5fa1554d34b05c904d2245fdd3c81 + md5: a78928881c652facde2a13ec6e776f3c + depends: + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 58221 + timestamp: 1736536003041 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.2-hc8a0bd2_0.conda + sha256: ea4f0f1e99056293c69615f581a997d65ba7e229e296e402e0d8ef750648a5b5 + md5: e7b5498ac7b7ab921a907be38f3a8080 + depends: + - __osx >=11.0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 49872 + timestamp: 1736536152332 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-h4e1184b_4.conda + sha256: 1ed9a332d06ad595694907fad2d6d801082916c27cd5076096fda4061e6d24a8 + md5: 74e8c3e4df4ceae34aa2959df4b28101 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 72762 + timestamp: 1733994347547 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h0f0193d_4.conda + sha256: 9f1e3635a587bcf92b61d88c7af7d24cd89c147c6d0ae58afbde08e65bcf48da + md5: 3bd35b0adab3d743f09e0252cc441d6b + depends: + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 72154 + timestamp: 1733994384415 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-hc8a0bd2_4.conda + sha256: 215086d95e8ff1d3fcb0197ada116cc9d7db1fdae7573f5e810d20fa9215b47c + md5: e70e88a357a3749b67679c0788c5b08a + depends: + - __osx >=11.0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 70186 + timestamp: 1733994496998 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.9-he0e7f3f_2.conda + sha256: c1930569713bd5231d48d885a5e3707ac917b428e8f08189d14064a2bb128adc + md5: 8a4e6fc8a3b285536202b5456a74a940 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-auth >=0.8.1,<0.8.2.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-event-stream >=0.5.0,<0.5.1.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-c-mqtt >=0.11.0,<0.11.1.0a0 + - aws-c-s3 >=0.7.9,<0.7.10.0a0 + - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 353222 + timestamp: 1737565463079 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.9-hab3ce66_2.conda + sha256: c3884fb10e0fd9be5c13256cabcda1afa9d2fcf8878c67214d02fc344509857d + md5: 875968ebffe992b68faf2caebbf32f02 + depends: + - aws-c-auth >=0.8.1,<0.8.2.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-event-stream >=0.5.0,<0.5.1.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-c-mqtt >=0.11.0,<0.11.1.0a0 + - aws-c-s3 >=0.7.9,<0.7.10.0a0 + - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 + - libgcc >=13 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 283812 + timestamp: 1737565480034 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.9-ha81f72f_2.conda + sha256: ed5f1d19aad53787fdebe13db4709c97eae2092536cc55d3536eba320c4286e1 + md5: c9c034d3239bf25687ca4dd985007ecd + depends: + - __osx >=11.0 + - aws-c-auth >=0.8.1,<0.8.2.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-event-stream >=0.5.0,<0.5.1.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-c-mqtt >=0.11.0,<0.11.1.0a0 + - aws-c-s3 >=0.7.9,<0.7.10.0a0 + - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 + - libcxx >=18 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 235976 + timestamp: 1737565563139 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.489-h4d475cb_0.conda + sha256: 08d6b7d2ed17bfcc7deb903c7751278ee434abdb27e3be0dceb561f30f030c75 + md5: b775e9f46dfa94b228a81d8e8c6d8b1d + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-event-stream >=0.5.0,<0.5.1.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + - aws-crt-cpp >=0.29.9,<0.29.10.0a0 + - libcurl >=8.11.1,<9.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 3144364 + timestamp: 1737576036746 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.489-h88461e4_0.conda + sha256: 88353e82b053763168cddbe2f88048defc1c97b3dad0966fbe8c4fa7aa592c7e + md5: e725d8fa77a6a5f38a78c5de914a5f40 + depends: + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-event-stream >=0.5.0,<0.5.1.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + - aws-crt-cpp >=0.29.9,<0.29.10.0a0 + - libcurl >=8.11.1,<9.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 3015109 + timestamp: 1737575993030 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.489-h0e5014b_0.conda + sha256: d82451530ddf363d8bb31a8a7391bb9699f745e940ace91d78c0e6170deef03c + md5: 156cfb45a1bb8cffc81e59047bb34f51 + depends: + - __osx >=11.0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-event-stream >=0.5.0,<0.5.1.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + - aws-crt-cpp >=0.29.9,<0.29.10.0a0 + - libcurl >=8.11.1,<9.0a0 + - libcxx >=18 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 2874126 + timestamp: 1737577023623 +- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda + sha256: fe07debdb089a3db17f40a7f20d283d75284bb4fc269ef727b8ba6fc93f7cb5a + md5: 0a8838771cc2e985cd295e01ae83baf1 + depends: + - __glibc >=2.17,<3.0.a0 + - libcurl >=8.10.1,<9.0a0 + - libgcc >=13 + - libstdcxx >=13 + - openssl >=3.3.2,<4.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 345117 + timestamp: 1728053909574 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-core-cpp-1.14.0-h1887c18_0.conda + sha256: 8967b3ccee4d74e61f6ec82dd8efb9deb854ee7ba012dfe767b7a92e0ac77724 + md5: e0c3a906a41be769f0ae20ca3e31cfc0 + depends: + - libcurl >=8.10.1,<9.0a0 + - libgcc >=13 + - libstdcxx >=13 + - openssl >=3.3.2,<4.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 338650 + timestamp: 1728055589907 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.14.0-hd50102c_0.conda + sha256: f5b91329ed59ffc0be8747784c6e4cc7e56250c54032883a83bc11808ef6a87e + md5: f093a11dcf3cdcca010b20a818fcc6dc + depends: + - __osx >=11.0 + - libcurl >=8.10.1,<9.0a0 + - libcxx >=17 + - openssl >=3.3.2,<4.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 294299 + timestamp: 1728054014060 +- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.10.0-h113e628_0.conda + sha256: 286b31616c191486626cb49e9ceb5920d29394b9e913c23adb7eb637629ba4de + md5: 73f73f60854f325a55f1d31459f2ab73 + depends: + - __glibc >=2.17,<3.0.a0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - libgcc >=13 + - libstdcxx >=13 + - openssl >=3.3.2,<4.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 232351 + timestamp: 1728486729511 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-identity-cpp-1.10.0-h47b0b28_0.conda + sha256: 1c72423b9beba167d2f01b80dc204da77240a8266f1edb3d89510c852b300d69 + md5: 94e73a7877743a85c57091d8afab2348 + depends: + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - libgcc >=13 + - libstdcxx >=13 + - openssl >=3.3.2,<4.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 217132 + timestamp: 1728488096615 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.10.0-hc602bab_0.conda + sha256: bde446b916fff5150606f8ed3e6058ffc55a3aa72381e46f1ab346590b1ae40a + md5: d7b71593a937459f2d4b67e1a4727dc2 + depends: + - __osx >=11.0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - libcxx >=17 + - openssl >=3.3.2,<4.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 166907 + timestamp: 1728486882502 +- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.13.0-h3cf044e_1.conda + sha256: 2606260e5379eed255bcdc6adc39b93fb31477337bcd911c121fc43cd29bf394 + md5: 7eb66060455c7a47d9dcdbfa9f46579b + depends: + - __glibc >=2.17,<3.0.a0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 549342 + timestamp: 1728578123088 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-blobs-cpp-12.13.0-h185ecfd_1.conda + sha256: 280ec70009a92626054f58e45b168fce393e71a9710587488bd8401628cda481 + md5: 221e1e5ecb2643e113f32b3229d5ba33 + depends: + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 + - libgcc >=13 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 502934 + timestamp: 1728580241002 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-blobs-cpp-12.13.0-h7585a09_1.conda + sha256: 08d52d130addc0fb55d5ba10d9fa483e39be25d69bac7f4c676c2c3069207590 + md5: 704238ef05d46144dae2e6b5853df8bc + depends: + - __osx >=11.0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 + - libcxx >=17 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 438636 + timestamp: 1728578216193 +- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-common-cpp-12.8.0-h736e048_1.conda + sha256: 273475f002b091b66ce7366da04bf164c3732c03f8692ab2ee2d23335b6a82ba + md5: 13de36be8de3ae3f05ba127631599213 + depends: + - __glibc >=2.17,<3.0.a0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libxml2 >=2.12.7,<3.0a0 + - openssl >=3.3.2,<4.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 149312 + timestamp: 1728563338704 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-common-cpp-12.8.0-h1b94036_1.conda + sha256: 146e76aac169e3dbdce5d3b142b7930ac643795c765e7655d1989905ec7d3231 + md5: 793b1080ab2d958980f137a8643cd6e8 + depends: + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libxml2 >=2.12.7,<3.0a0 + - openssl >=3.3.2,<4.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 140832 + timestamp: 1728565334900 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-common-cpp-12.8.0-h9ca1f76_1.conda + sha256: 77ab04e8fe5636a2de9c718f72a43645f7502cd208868c8a91ffba385547d585 + md5: 7a187cd7b1445afc80253bb186a607cc + depends: + - __osx >=11.0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - libcxx >=17 + - libxml2 >=2.12.7,<3.0a0 + - openssl >=3.3.2,<4.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 121278 + timestamp: 1728563418777 +- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-files-datalake-cpp-12.12.0-ha633028_1.conda + sha256: 5371e4f3f920933bb89b926a85a67f24388227419abd6e99f6086481e5e8d5f2 + md5: 7c1980f89dd41b097549782121a73490 + depends: + - __glibc >=2.17,<3.0.a0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 + - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 287366 + timestamp: 1728729530295 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-files-datalake-cpp-12.12.0-h37d6d07_1.conda + sha256: 4079c617a75682e49bae63670d58fd6078ccfbbe55ca1f994acab3a74ab6bbcc + md5: b724f3b4b7f4e9b36c58cbe3ed8610a2 + depends: + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 + - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 + - libgcc >=13 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 260547 + timestamp: 1728730924071 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-files-datalake-cpp-12.12.0-hcdd55da_1.conda + sha256: f48523f8aa0b5b80f45a92f0556b388dd96f44ac2dc2f44a01d08c1822eec97d + md5: c49fbc5233fcbaa86391162ff1adef38 + depends: + - __osx >=11.0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 + - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 + - libcxx >=17 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 196032 + timestamp: 1728729672889 +- conda: https://conda.anaconda.org/conda-forge/noarch/backoff-2.2.1-pyhd8ed1ab_1.conda + sha256: f334115c6b0c6c2cd0d28595365f205ec7eaa60bcc5ff91a75d7245f728be820 + md5: a38b801f2bcc12af80c2e02a9e4ce7d9 + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 18816 + timestamp: 1733771192649 +- conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py312h2ec8cdc_2.conda + sha256: f2a59ccd20b4816dea9a2a5cb917eb69728271dbf1aeab4e1b7e609330a50b6f + md5: b0b867af6fc74b2a0aa206da29c0f3cf + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - libbrotlicommon 1.1.0 hb9d3cd8_2 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 349867 + timestamp: 1725267732089 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/brotli-python-1.1.0-py312h6f74592_2.conda + sha256: 9736bf660a0e4260c68f81d2635b51067f817813e6490ac9e8abd9a835dcbf6d + md5: e1e9727063057168d95f27a032acd0a4 + depends: + - libgcc >=13 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - libbrotlicommon 1.1.0 h86ecc28_2 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 356878 + timestamp: 1725267878508 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py312hde4cb15_2.conda + sha256: 254b411fa78ccc226f42daf606772972466f93e9bc6895eabb4cfda22f5178af + md5: a83c2ef76ccb11bc2349f4f17696b15d + depends: + - __osx >=11.0 + - libcxx >=17 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - libbrotlicommon 1.1.0 hd74edd7_2 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 339360 + timestamp: 1725268143995 +- conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda + sha256: 5ced96500d945fb286c9c838e54fa759aa04a7129c59800f0846b4335cee770d + md5: 62ee74e96c5ebb0af99386de58cf9553 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: bzip2-1.0.6 + license_family: BSD + size: 252783 + timestamp: 1720974456583 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h68df207_7.conda + sha256: 2258b0b33e1cb3a9852d47557984abb6e7ea58e3d7f92706ec1f8e879290c4cb + md5: 56398c28220513b9ea13d7b450acfb20 + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: bzip2-1.0.6 + license_family: BSD + size: 189884 + timestamp: 1720974504976 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda + sha256: adfa71f158cbd872a36394c56c3568e6034aa55c623634b37a4836bd036e6b91 + md5: fc6948412dbbbe9a4c9ddbbcfe0a79ab + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: bzip2-1.0.6 + license_family: BSD + size: 122909 + timestamp: 1720974522888 +- conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.4-hb9d3cd8_0.conda + sha256: d4f28d87b6339b94f74762c0076e29c8ef8ddfff51a564a92da2843573c18320 + md5: e2775acf57efd5af15b8e3d1d74d72d3 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 206085 + timestamp: 1734208189009 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/c-ares-1.34.4-h86ecc28_0.conda + sha256: 1187a41d4bb2afe02cb18690682edc98d1e9f5e0ccda638d8704a75ea1875bbe + md5: 356da36f35d36dcba16e43f1589d4e39 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 215979 + timestamp: 1734208193181 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.4-h5505292_0.conda + sha256: 09c0c8476e50b2955f474a4a1c17c4c047dd52993b5366b6ea8e968e583b921f + md5: c1c999a38a4303b29d75c636eaa13cf9 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 179496 + timestamp: 1734208291879 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2025.1.31-hbcca054_0.conda + sha256: bf832198976d559ab44d6cdb315642655547e26d826e34da67cbee6624cda189 + md5: 19f3a56f68d2fd06c516076bff482c52 + arch: x86_64 + platform: linux + license: ISC + size: 158144 + timestamp: 1738298224464 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2025.1.31-hcefe29a_0.conda + sha256: 66c6408ee461593cfdb2d78d82e6ed74d04a04ccb51df3ef8a5f35148c9c6eec + md5: 462cb166cd2e26a396f856510a3aff67 + arch: aarch64 + platform: linux + license: ISC + size: 158290 + timestamp: 1738299057652 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2025.1.31-hf0a4a13_0.conda + sha256: 7e12816618173fe70f5c638b72adf4bfd4ddabf27794369bb17871c5bb75b9f9 + md5: 3569d6a9141adc64d2fe4797f3289e06 + arch: arm64 + platform: osx + license: ISC + size: 158425 + timestamp: 1738298167688 +- conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.1.31-pyhd8ed1ab_0.conda + sha256: 42a78446da06a2568cb13e69be3355169fbd0ea424b00fc80b7d840f5baaacf3 + md5: c207fa5ac7ea99b149344385a9c0880d + depends: + - python >=3.9 + license: ISC + size: 162721 + timestamp: 1739515973129 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py312h06ac9bb_0.conda + sha256: cba6ea83c4b0b4f5b5dc59cb19830519b28f95d7ebef7c9c5cf1c14843621457 + md5: a861504bbea4161a9170b85d4d2be840 + depends: + - __glibc >=2.17,<3.0.a0 + - libffi >=3.4,<4.0a0 + - libgcc >=13 + - pycparser + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 294403 + timestamp: 1725560714366 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cffi-1.17.1-py312hac81daf_0.conda + sha256: 1162e3ca039e7ca7c0e78f0a020ed1bde968096841b663e3f393c966eb82f0f0 + md5: 1a256e5581b1099e9295cb84d53db3ea + depends: + - libffi >=3.4,<4.0a0 + - libgcc >=13 + - pycparser + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 312892 + timestamp: 1725561779888 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.1-py312h0fad829_0.conda + sha256: 8d91a0d01358b5c3f20297c6c536c5d24ccd3e0c2ddd37f9d0593d0f0070226f + md5: 19a5456f72f505881ba493979777b24e + depends: + - __osx >=11.0 + - libffi >=3.4,<4.0a0 + - pycparser + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 281206 + timestamp: 1725560813378 +- conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda + sha256: 4e0ee91b97e5de3e74567bdacea27f0139709fceca4db8adffbe24deffccb09b + md5: e83a31202d1c0a000fce3e9cf3825875 + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 47438 + timestamp: 1735929811779 +- conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda + sha256: c920d23cd1fcf565031c679adb62d848af60d6fbb0edc2d50ba475cea4f0d8ab + md5: f22f4d4970e09d68a10b922cbb0408d3 + depends: + - __unix + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 84705 + timestamp: 1734858922844 +- conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + sha256: ab29d57dc70786c1269633ba3dff20288b81664d3ff8d21af995742e2bb03287 + md5: 962b9857ee8e7018c22f2776ffa0b2d7 + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 27011 + timestamp: 1733218222191 +- conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.12.9-py312hd8ed1ab_0.conda + noarch: generic + sha256: f5c7ad0bd23fa8645ac279d99bddba656ff61483dc6312af12aae13910dfb210 + md5: a5b10f166467fecec692abaee84d16aa + depends: + - python 3.12.9.* + - python_abi * *_cp312 + license: Python-2.0 + size: 44836 + timestamp: 1739519561557 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-crt-tools-12.8.61-ha770c72_1.conda + sha256: 80a2ddb433b3d3b0abbf97febf5504cbda451e19f3a504936ef961209c647238 + md5: a5c66c2b4b7fb464129a1163a49c9e53 + depends: + - cuda-version >=12.8,<12.9.0a0 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + size: 27215 + timestamp: 1738873838328 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cuda-crt-tools-12.8.61-h579c4fd_1.conda + sha256: 78bfe492a98c2460960e2e9f7bef39326a889e2abb54debc9959ec7494822717 + md5: 04dbd57df8678150c7e5b37da647c702 + depends: + - cuda-version >=12.8,<12.9.0a0 + constrains: + - arm-variant * sbsa + arch: aarch64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + size: 27415 + timestamp: 1738873896497 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-cudart-12.8.57-h5888daf_1.conda + sha256: cc58a25d7ab38d8d27aa88b151dd55406cdfe5429b03419a13af8e9aca2f2596 + md5: cc1b22f4f3734a8b0e80aa874e9f1744 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-cudart_linux-64 12.8.57 h3f2d84a_1 + - cuda-version >=12.8,<12.9.0a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + size: 22706 + timestamp: 1739215390850 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cuda-cudart-12.8.57-h3ae8b8a_1.conda + sha256: 5790a30774eab55f84afe42ec9e6d81298b31ae3cf2584e245958bc742cfd280 + md5: 3d8375d2e0d1957db66cfe319c76adeb + depends: + - cuda-cudart_linux-aarch64 12.8.57 h3ae8b8a_1 + - cuda-version >=12.8,<12.9.0a0 + - libgcc >=13 + - libstdcxx >=13 + constrains: + - arm-variant * sbsa + arch: aarch64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + size: 22831 + timestamp: 1739215503338 +- conda: https://conda.anaconda.org/conda-forge/noarch/cuda-cudart_linux-64-12.8.57-h3f2d84a_1.conda + sha256: a60faad361f3f21a387d8c684114258de63305703db13c76417b5cf0956205a6 + md5: dff7d2f9a0ee9ab03bfff88fff9621da + depends: + - cuda-version >=12.8,<12.9.0a0 + license: LicenseRef-NVIDIA-End-User-License-Agreement + size: 192905 + timestamp: 1739215375478 +- conda: https://conda.anaconda.org/conda-forge/noarch/cuda-cudart_linux-aarch64-12.8.57-h3ae8b8a_1.conda + sha256: 70caf7f62c2a645d9ef487fe2f41433145e11786e91fd87dfed6338babdefe04 + md5: aa86deee0e8c93f71fde92db26339407 + depends: + - cuda-version >=12.8,<12.9.0a0 + constrains: + - arm-variant * sbsa + license: LicenseRef-NVIDIA-End-User-License-Agreement + size: 207838 + timestamp: 1739215492480 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-cuobjdump-12.8.55-hbd13f7d_0.conda + sha256: 424bea1fdfca90acf5c8c255e4b648315e8a07a8065a234dd4b28108d7514d59 + md5: 5ab6c95d69311e911bd98d48118ce047 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-nvdisasm + - cuda-version >=12.8,<12.9.0a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + size: 232521 + timestamp: 1737670501800 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cuda-cuobjdump-12.8.55-h05609ea_0.conda + sha256: 1b17aae0d05f839d7a5e08e40edbca2666954db95ed38b85d4c4aca9e1e568ca + md5: dcf96c9ad817538ebdcb1430f4510328 + depends: + - cuda-nvdisasm + - cuda-version >=12.8,<12.9.0a0 + - libgcc >=13 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + size: 235857 + timestamp: 1737670525095 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-cupti-12.8.57-hbd13f7d_0.conda + sha256: ff8fb3a51c18a43e8de90df30094e0ae4bb4ae0f35a473aa2f8ab052c5318816 + md5: 3a98112d0341979bbb2e75e71b36a4c0 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.8,<12.9.0a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + size: 1845047 + timestamp: 1737666283622 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cuda-cupti-12.8.57-h5101a13_0.conda + sha256: e0b0fe34fcb50c9c6e600bc5e29c7f65e5d09535eeeefae737819f71928c4813 + md5: 619e88e4871378089566f235461b4677 + depends: + - cuda-version >=12.8,<12.9.0a0 + - libgcc >=13 + - libstdcxx >=13 + constrains: + - arm-variant * sbsa + arch: aarch64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + size: 1620833 + timestamp: 1737666390106 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-nvcc-tools-12.8.61-he02047a_1.conda + sha256: 2436f383674e29a788f17e8aa5fc9c86819e122725d2291eda63260f15100496 + md5: fb406ed72a4f4af7acfd591c6787b903 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-crt-tools 12.8.61 ha770c72_1 + - cuda-nvvm-tools 12.8.61 he02047a_1 + - cuda-version >=12.8,<12.9.0a0 + - libgcc >=12 + - libstdcxx >=12 + constrains: + - gcc_impl_linux-64 >=6,<15.0a0 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + size: 25714998 + timestamp: 1738873949175 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cuda-nvcc-tools-12.8.61-h614329b_1.conda + sha256: a82b060291312d286b06ccd04f61023c08afe66014fe356b1c594285e61b0b7b + md5: 8c753c56765e2c8babc05cb5e4848c51 + depends: + - cuda-crt-tools 12.8.61 h579c4fd_1 + - cuda-nvvm-tools 12.8.61 h614329b_1 + - cuda-version >=12.8,<12.9.0a0 + - libgcc >=12 + - libstdcxx >=12 + constrains: + - arm-variant * sbsa + - gcc_impl_linux-aarch64 >=6,<15.0a0 + arch: aarch64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + size: 22320853 + timestamp: 1738874044293 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-nvdisasm-12.8.55-hbd13f7d_0.conda + sha256: 53377e888305b28e5c249b423291de37478ea465b2e4ba0247584491999a1284 + md5: 74f716637584db374166bf8b04f57a13 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.8,<12.9.0a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + size: 5122708 + timestamp: 1737667356055 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cuda-nvdisasm-12.8.55-h5101a13_0.conda + sha256: 292b078110ea97c19401a9fbdf359325d472a3b5c164c256846da82e6b3e3a9e + md5: 3829037f6474309e563bc86ea5344669 + depends: + - cuda-version >=12.8,<12.9.0a0 + - libgcc >=13 + - libstdcxx >=13 + constrains: + - arm-variant * sbsa + arch: aarch64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + size: 5077857 + timestamp: 1737667422732 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-nvvm-tools-12.8.61-he02047a_1.conda + sha256: a604b228e8aa84c3739c1b285857bf2c206a3d0ed7798216f5f651a0ac257ae3 + md5: f82afee87477746249975726453c56bf + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.8,<12.9.0a0 + - libgcc >=12 + - libstdcxx >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + size: 24622383 + timestamp: 1738873904778 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cuda-nvvm-tools-12.8.61-h614329b_1.conda + sha256: 9159c3b04c2eb7ed721e7a7ef6d7dec5b5bb58d5874d220299745034f10f5a28 + md5: 1f56d00ef41873791b9c6ab4642964b3 + depends: + - cuda-version >=12.8,<12.9.0a0 + - libgcc >=12 + - libstdcxx >=12 + constrains: + - arm-variant * sbsa + arch: aarch64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + size: 23961474 + timestamp: 1738873988055 +- conda: https://conda.anaconda.org/conda-forge/noarch/cuda-version-12.8-h5d125a7_3.conda + sha256: 6f93ceb66267e69728d83cf98673221f6b1f95a3514b3a97777cfd0ef8e24f3f + md5: 794eaca58880616a508dd6f6eb389266 + constrains: + - cudatoolkit 12.8|12.8.* + - __cuda >=12 + license: LicenseRef-NVIDIA-End-User-License-Agreement + size: 21086 + timestamp: 1737663758355 +- conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda + sha256: 7e09bd083a609138b780fcc4535924cb96814d2c908a36d4c64a2ba9ee3efe7f + md5: 3e087f072ce03c43a9b60522f5d0ca2f + depends: + - aiohttp + - dill >=0.3.0,<0.3.8 + - fsspec >=2021.11.1 + - huggingface_hub >=0.14.0,<1.0.0 + - importlib-metadata + - multiprocess + - numpy >=1.17 + - packaging + - pandas + - pyarrow >=8.0.0 + - python >=3.8.0 + - python-xxhash + - pyyaml >=5.1 + - requests >=2.19.0 + - tqdm >=4.62.1 + license: Apache-2.0 + license_family: Apache + size: 347303 + timestamp: 1691593908658 +- conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.18-pyhd8ed1ab_0.conda + sha256: d614bcff10696f1efc714df07651b50bf3808401fcc03814309ecec242cc8870 + md5: 0cef44b1754ae4d6924ac0eef6b9fdbe + depends: + - python >=3.9 + - wrapt <2,>=1.10 + license: MIT + license_family: MIT + size: 14382 + timestamp: 1737987072859 +- conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda + sha256: 4ff20c6be028be2825235631c45d9e4a75bca1de65f8840c02dfb28ea0137c45 + md5: 5e4f3466526c52bc9af2d2353a1460bd + depends: + - python >=3.7 + license: BSD-3-Clause + license_family: BSD + size: 87553 + timestamp: 1690101185422 +- conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda + sha256: 3ec40ccf63f2450c5e6c7dd579e42fc2e97caf0d8cd4ba24aa434e6fc264eda0 + md5: 5fbd60d61d21b4bd2f9d7a48fe100418 + depends: + - python >=3.9,<4.0.0 + - sniffio + constrains: + - aioquic >=1.0.0 + - wmi >=1.5.1 + - httpx >=0.26.0 + - trio >=0.23 + - cryptography >=43 + - httpcore >=1.0.0 + - idna >=3.7 + - h2 >=4.1.0 + license: ISC + license_family: OTHER + size: 172172 + timestamp: 1733256829961 +- conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda + sha256: b91a19eb78edfc2dbb36de9a67f74ee2416f1b5273dd7327abe53f2dbf864736 + md5: da16dd3b0b71339060cd44cb7110ddf9 + depends: + - dnspython >=2.0.0 + - idna >=2.0.0 + - python >=3.9 + license: Unlicense + size: 44401 + timestamp: 1733300827551 +- conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_1.conda + sha256: e0d0fdf587aa0ed0ff08b2bce3ab355f46687b87b0775bfba01cc80a859ee6a2 + md5: 0794f8807ff2c6f020422cacb1bd7bfa + depends: + - email-validator >=2.2.0,<2.2.1.0a0 + license: Unlicense + size: 6552 + timestamp: 1733300828176 +- conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda + sha256: cbde2c64ec317118fc06b223c5fd87c8a680255e7348dd60e7b292d2e103e701 + md5: a16662747cdeb9abbac74d0057cc976e + depends: + - python >=3.9 + license: MIT and PSF-2.0 + size: 20486 + timestamp: 1733208916977 +- conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.8-pyh29332c3_0.conda + sha256: 5e1e3d5cf306d9b3b5fe0d45a9e8440e8770ba7e4a5fac1ac847ca693b0dc064 + md5: 753382711adab47269f0bfe994906bc4 + depends: + - python >=3.9 + - starlette >=0.40.0,<0.46.0 + - typing_extensions >=4.8.0 + - pydantic >=1.7.4,!=1.8,!=1.8.1,!=2.0.0,!=2.0.1,!=2.1.0,<3.0.0 + - email_validator >=2.0.0 + - fastapi-cli >=0.0.5 + - httpx >=0.23.0 + - jinja2 >=3.1.5 + - python-multipart >=0.0.18 + - uvicorn-standard >=0.12.0 + - python + license: MIT + license_family: MIT + size: 77940 + timestamp: 1738326226051 +- conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.7-pyhd8ed1ab_0.conda + sha256: 300683731013b7221922339cd40430bb3c2ddeeb658fd7e37f5099ffe64e4db0 + md5: d960e0ea9e1c561aa928f6c4439f04c7 + depends: + - python >=3.9 + - rich-toolkit >=0.11.1 + - typer >=0.12.3 + - uvicorn-standard >=0.15.0 + license: MIT + license_family: MIT + size: 15546 + timestamp: 1734302408607 +- conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.17.0-pyhd8ed1ab_0.conda + sha256: 006d7e5a0c17a6973596dd86bfc80d74ce541144d2aee2d22d46fd41df560a63 + md5: 7f402b4a1007ee355bc50ce4d24d4a57 + depends: + - python >=3.9 + license: Unlicense + size: 17544 + timestamp: 1737517924333 +- conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.12.1-h267a509_2.conda + sha256: b2e3c449ec9d907dd4656cb0dc93e140f447175b125a3824b31368b06c666bb6 + md5: 9ae35c3d96db2c94ce0cef86efdfa2cb + depends: + - libgcc-ng >=12 + - libpng >=1.6.39,<1.7.0a0 + - libzlib >=1.2.13,<2.0.0a0 + arch: x86_64 + platform: linux + license: GPL-2.0-only OR FTL + size: 634972 + timestamp: 1694615932610 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/freetype-2.12.1-hf0a5ef3_2.conda + sha256: 7af93030f4407f076dce181062360efac2cd54dce863b5d7765287a6f5382537 + md5: a5ab74c5bd158c3d5532b66d8d83d907 + depends: + - libgcc-ng >=12 + - libpng >=1.6.39,<1.7.0a0 + - libzlib >=1.2.13,<2.0.0a0 + arch: aarch64 + platform: linux + license: GPL-2.0-only OR FTL + size: 642092 + timestamp: 1694617858496 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/freetype-2.12.1-hadb7bae_2.conda + sha256: 791673127e037a2dc0eebe122dc4f904cb3f6e635bb888f42cbe1a76b48748d9 + md5: e6085e516a3e304ce41a8ee08b9b89ad + depends: + - libpng >=1.6.39,<1.7.0a0 + - libzlib >=1.2.13,<2.0.0a0 + arch: arm64 + platform: osx + license: GPL-2.0-only OR FTL + size: 596430 + timestamp: 1694616332835 +- conda: https://conda.anaconda.org/conda-forge/linux-64/frozenlist-1.5.0-py312h178313f_1.conda + sha256: 501e20626798b6d7f130f4db0fb02c0385d8f4c11ca525925602a4208afb343f + md5: fb986e1c089021979dc79606af78ef8f + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 60939 + timestamp: 1737645356438 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/frozenlist-1.5.0-py312hcc812fe_1.conda + sha256: 84895c5e207e0cb2044f3607fb36b82eb8cb45f0a009d03dc04c777ed975757d + md5: 9090bf5c43e8011fb2e9a82a1db20cc3 + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 60472 + timestamp: 1737645511278 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/frozenlist-1.5.0-py312h998013c_1.conda + sha256: d503ac8c050abdbd129253973f23be34944978d510de78ef5a3e6aa1e3d9552d + md5: 5eb3715c7e3fa9b533361375bfefe6ee + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + size: 57256 + timestamp: 1737645503377 +- conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2025.2.0-pyhd8ed1ab_0.conda + sha256: 7433b8469074985b651693778ec6f03d2a23fad9919a515e3b8545996b5e721a + md5: d9ea16b71920b03beafc17fcca16df90 + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 138186 + timestamp: 1738501352608 +- conda: https://conda.anaconda.org/conda-forge/linux-64/gflags-2.2.2-h5888daf_1005.conda + sha256: 6c33bf0c4d8f418546ba9c250db4e4221040936aef8956353bc764d4877bc39a + md5: d411fc29e338efb48c5fd4576d71d881 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 119654 + timestamp: 1726600001928 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gflags-2.2.2-h5ad3122_1005.conda + sha256: 28fe6b40b20454106d5e4ef6947cf298c13cc72a46347bbc49b563cd3a463bfa + md5: 4ff634d515abbf664774b5e1168a9744 + depends: + - libgcc >=13 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 106638 + timestamp: 1726599967617 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/gflags-2.2.2-hf9b8971_1005.conda + sha256: fd56ed8a1dab72ab90d8a8929b6f916a6d9220ca297ff077f8f04c5ed3408e20 + md5: 57a511a5905caa37540eb914dfcbf1fb + depends: + - __osx >=11.0 + - libcxx >=17 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 82090 + timestamp: 1726600145480 +- conda: https://conda.anaconda.org/conda-forge/noarch/gguf-0.14.0-pyh267e887_0.conda + sha256: 223a157e2ce9e1195eced1bd42041b8219cc61c0a135f428256cf2753cac8142 + md5: 3fb0305a9a6f1d7607db045fdc42f705 + depends: + - python >=3.8 + - numpy >=1.17 + - tqdm >=4.27 + - pyyaml >=5.1 + - sentencepiece >=0.1.98,<=0.2.0 + - python + license: MIT + license_family: MIT + size: 74687 + timestamp: 1737040120169 +- conda: https://conda.anaconda.org/conda-forge/linux-64/glog-0.7.1-hbabe93e_0.conda + sha256: dc824dc1d0aa358e28da2ecbbb9f03d932d976c8dca11214aa1dcdfcbd054ba2 + md5: ff862eebdfeb2fd048ae9dc92510baca + depends: + - gflags >=2.2.2,<2.3.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 143452 + timestamp: 1718284177264 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/glog-0.7.1-h468a4a4_0.conda + sha256: 920795d4f775a9f47e91c2223e64847f0b212b3fedc56c137c5889e32efe8ba0 + md5: 08940a32c6ced3703d1412dd37df4f62 + depends: + - gflags >=2.2.2,<2.3.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 145811 + timestamp: 1718284208668 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/glog-0.7.1-heb240a5_0.conda + sha256: 9fc77de416953aa959039db72bc41bfa4600ae3ff84acad04a7d0c1ab9552602 + md5: fef68d0a95aa5b84b5c1a4f6f3bf40e1 + depends: + - __osx >=11.0 + - gflags >=2.2.2,<2.3.0a0 + - libcxx >=16 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 112215 + timestamp: 1718284365403 +- conda: https://conda.anaconda.org/conda-forge/linux-64/gmp-6.3.0-hac33072_2.conda + sha256: 309cf4f04fec0c31b6771a5809a1909b4b3154a2208f52351e1ada006f4c750c + md5: c94a5994ef49749880a8139cf9afcbe1 + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: GPL-2.0-or-later OR LGPL-3.0-or-later + size: 460055 + timestamp: 1718980856608 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gmp-6.3.0-h0a1ffab_2.conda + sha256: a5e341cbf797c65d2477b27d99091393edbaa5178c7d69b7463bb105b0488e69 + md5: 7cbfb3a8bb1b78a7f5518654ac6725ad + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: aarch64 + platform: linux + license: GPL-2.0-or-later OR LGPL-3.0-or-later + size: 417323 + timestamp: 1718980707330 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/gmp-6.3.0-h7bae524_2.conda + sha256: 76e222e072d61c840f64a44e0580c2503562b009090f55aa45053bf1ccb385dd + md5: eed7278dfbab727b56f2c0b64330814b + depends: + - __osx >=11.0 + - libcxx >=16 + arch: arm64 + platform: osx + license: GPL-2.0-or-later OR LGPL-3.0-or-later + size: 365188 + timestamp: 1718981343258 +- conda: https://conda.anaconda.org/conda-forge/linux-64/gmpy2-2.1.5-py312h7201bc8_3.conda + sha256: addd0bc226ca86c11f1223ab322d12b67501c2b3d93749bdab2068ccaedd8ef0 + md5: 673ef4d6611f5b4ca7b5c1f8c65a38dc + depends: + - __glibc >=2.17,<3.0.a0 + - gmp >=6.3.0,<7.0a0 + - libgcc >=13 + - mpc >=1.3.1,<2.0a0 + - mpfr >=4.2.1,<5.0a0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: LGPL-3.0-or-later + license_family: LGPL + size: 209631 + timestamp: 1733462668219 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gmpy2-2.1.5-py312he9d48ea_3.conda + sha256: b92ffcb02ee027db2b3b8b1256ecf9e04afd4c1680467574889419c9ed42c089 + md5: 9defe233dc6909ac868a1ca50b2ca84d + depends: + - gmp >=6.3.0,<7.0a0 + - libgcc >=13 + - mpc >=1.3.1,<2.0a0 + - mpfr >=4.2.1,<5.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: LGPL-3.0-or-later + license_family: LGPL + size: 201489 + timestamp: 1733462747377 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/gmpy2-2.1.5-py312h524cf62_3.conda + sha256: 0ea196e4b706321951af1eebdb6a4eb9307faa1fd5361bcf49acb150e71774f7 + md5: ab7a5d10c7b4e249a9fe7bc280909803 + depends: + - __osx >=11.0 + - gmp >=6.3.0,<7.0a0 + - mpc >=1.3.1,<2.0a0 + - mpfr >=4.2.1,<5.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: LGPL-3.0-or-later + license_family: LGPL + size: 147983 + timestamp: 1733462785197 +- conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.68.0-pyhd8ed1ab_0.conda + sha256: efaca61923e45849a3d763280305cb3a00a769546ce5df2b1bbe24db40aa23af + md5: 3b8e056a42f71c9398857ecf0b8fbcb6 + depends: + - protobuf >=3.20.2,<6.0.0.dev0,!=3.20.0,!=3.20.1,!=4.21.1,!=4.21.2,!=4.21.3,!=4.21.4,!=4.21.5 + - python >=3.9 + license: Apache-2.0 + license_family: APACHE + size: 67755 + timestamp: 1740136133858 +- conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda + sha256: 622516185a7c740d5c7f27016d0c15b45782c1501e5611deec63fd70344ce7c8 + md5: 7ee49e89531c0dcbba9466f6d115d585 + depends: + - python >=3.9 + - typing_extensions + license: MIT + license_family: MIT + size: 51846 + timestamp: 1733327599467 +- conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda + sha256: 0aa1cdc67a9fe75ea95b5644b734a756200d6ec9d0dff66530aec3d1c1e9df75 + md5: b4754fb1bdcb70c8fd54f918301582c6 + depends: + - hpack >=4.1,<5 + - hyperframe >=6.1,<7 + - python >=3.9 + license: MIT + license_family: MIT + size: 53888 + timestamp: 1738578623567 +- conda: https://conda.anaconda.org/conda-forge/linux-64/hf-transfer-0.1.9-py312h5bc9d60_1.conda + sha256: 21acb87a6403f88b2dbdefb79a537bc8fe871b86c60f9b690206eaf7ad1f009c + md5: 3639aa7b1297e680220f52c2b8a21200 + depends: + - python + - __glibc >=2.17,<3.0.a0 + - python_abi 3.12.* *_cp312 + - openssl >=3.4.1,<4.0a0 + constrains: + - __glibc >=2.17 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 1339225 + timestamp: 1739803760467 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/hf-transfer-0.1.9-py312he5cae2c_1.conda + sha256: 5554caf02aa37f3ef9b35d687f515385a50fd505987f5c4b84433d5c50d6a3b5 + md5: fbb03e07e1aefc42b856f0a06dd999f6 + depends: + - python + - python 3.12.* *_cpython + - python_abi 3.12.* *_cp312 + - openssl >=3.4.1,<4.0a0 + constrains: + - __glibc >=2.17 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 1366847 + timestamp: 1739803796587 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/hf-transfer-0.1.9-py312hfba41e8_1.conda + sha256: 15b1589c703c6a1677008e422175f540f3da35a9a63c588540a219042c697ea4 + md5: baa81a0f9e0470d67728651af77dc1c1 + depends: + - python + - __osx >=11.0 + - python 3.12.* *_cpython + - openssl >=3.4.1,<4.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - __osx >=11.0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + size: 1233816 + timestamp: 1739803893697 +- conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda + sha256: 6ad78a180576c706aabeb5b4c8ceb97c0cb25f1e112d76495bff23e3779948ba + md5: 0a802cb9888dd14eeefc611f05c40b6e + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 30731 + timestamp: 1737618390337 +- conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda + sha256: c84d012a245171f3ed666a8bf9319580c269b7843ffa79f26468842da3abd5df + md5: 2ca8e6dbc86525c8b95e3c0ffa26442e + depends: + - python >=3.8 + - h11 >=0.13,<0.15 + - h2 >=3,<5 + - sniffio 1.* + - anyio >=3.0,<5.0 + - certifi + license: BSD-3-Clause + license_family: BSD + size: 48959 + timestamp: 1731707562362 +- conda: https://conda.anaconda.org/conda-forge/linux-64/httptools-0.6.4-py312h66e93f0_0.conda + sha256: 621e7e050b888e5239d33e37ea72d6419f8367e5babcad38b755586f20264796 + md5: 8b1160b32557290b64d5be68db3d996d + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 101872 + timestamp: 1732707756745 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/httptools-0.6.4-py312hb2c0f52_0.conda + sha256: 0bd1f30224af142711d11033a7469ae402a1147143f399f7341bbc1d8178c722 + md5: 5e70a6de59352f9a52e9caa7f3447390 + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 101255 + timestamp: 1732707891645 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/httptools-0.6.4-py312hea69d52_0.conda + sha256: 5e93cda79e32e8c0039e05ea1939e688da336187dab025f699b42ef529e848be + md5: e1747a8e8d2aca5499aaea9993bf31ff + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 85623 + timestamp: 1732707871414 +- conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda + sha256: cd0f1de3697b252df95f98383e9edb1d00386bfdd03fdf607fa42fe5fcb09950 + md5: d6989ead454181f4f9bc987d3dc4e285 + depends: + - anyio + - certifi + - httpcore 1.* + - idna + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 63082 + timestamp: 1733663449209 +- conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.29.1-pyhd8ed1ab_0.conda + sha256: f75ca9436fe11d0def6e575d29e0614033c45c90f37895a3b2bb3536612b251c + md5: 0bbbf72b600a1df32666a084769bf240 + depends: + - filelock + - fsspec >=2023.5.0 + - packaging >=20.9 + - python >=3.9 + - pyyaml >=5.1 + - requests + - tqdm >=4.42.1 + - typing-extensions >=3.7.4.3 + - typing_extensions >=3.7.4.3 + license: Apache-2.0 + license_family: APACHE + size: 287974 + timestamp: 1740068383431 +- conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda + sha256: 77af6f5fe8b62ca07d09ac60127a30d9069fdc3c68d6b256754d0ffb1f7779f8 + md5: 8e6923fc12f1fe8f8c4e5c9f343256ac + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 17397 + timestamp: 1737618427549 +- conda: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda + sha256: 71e750d509f5fa3421087ba88ef9a7b9be11c53174af3aa4d06aff4c18b38e8e + md5: 8b189310083baabfb622af68fd9d3ae3 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 12129203 + timestamp: 1720853576813 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda + sha256: 813298f2e54ef087dbfc9cc2e56e08ded41de65cff34c639cc8ba4e27e4540c9 + md5: 268203e8b983fddb6412b36f2024e75c + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 12282786 + timestamp: 1720853454991 +- conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda + sha256: d7a472c9fd479e2e8dcb83fb8d433fce971ea369d704ece380e876f9c3494e87 + md5: 39a4f67be3286c86d696df570b1201b7 + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 49765 + timestamp: 1733211921194 +- conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_1.conda + sha256: 13766b88fc5b23581530d3a0287c0c58ad82f60401afefab283bf158d2be55a9 + md5: 315607a3030ad5d5227e76e0733798ff + depends: + - python >=3.9 + - zipp >=0.5 + license: Apache-2.0 + license_family: APACHE + size: 28623 + timestamp: 1733223207185 +- conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda + sha256: 0ec8f4d02053cd03b0f3e63168316530949484f80e16f5e2fb199a1d117a89ca + md5: 6837f3eff7dcea42ecd714ce1ac2b108 + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 11474 + timestamp: 1733223232820 +- conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.5-pyhd8ed1ab_0.conda + sha256: 98977694b9ecaa3218662f843425f39501f81973c450f995eec68f1803ed71c3 + md5: 2752a6ed44105bfb18c9bef1177d9dcd + depends: + - markupsafe >=2.0 + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 112561 + timestamp: 1734824044952 +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + sha256: 19d8bd5bb2fde910ec59e081eeb59529491995ce0d653a5209366611023a0b3a + md5: 4ebae00eae9705b0c3d6d1018a81d047 + depends: + - importlib-metadata >=4.8.3 + - jupyter_core >=4.12,!=5.0.* + - python >=3.9 + - python-dateutil >=2.8.2 + - pyzmq >=23.0 + - tornado >=6.2 + - traitlets >=5.3 + license: BSD-3-Clause + license_family: BSD + size: 106342 + timestamp: 1733441040958 +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + sha256: 732b1e8536bc22a5a174baa79842d79db2f4956d90293dd82dc1b3f6099bcccd + md5: 0a2980dada0dd7fd0998f0342308b1b1 + depends: + - __unix + - platformdirs >=2.5 + - python >=3.8 + - traitlets >=5.3 + license: BSD-3-Clause + license_family: BSD + size: 57671 + timestamp: 1727163547058 +- conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 + sha256: 150c05a6e538610ca7c43beb3a40d65c90537497a4f6a5f4d15ec0451b6f5ebb + md5: 30186d27e2c9fa62b45fb1476b7200e3 + depends: + - libgcc-ng >=10.3.0 + arch: x86_64 + platform: linux + license: LGPL-2.1-or-later + size: 117831 + timestamp: 1646151697040 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/keyutils-1.6.1-h4e544f5_0.tar.bz2 + sha256: 6d4233d97a9b38acbb26e1268bcf8c10a8e79c2aed7e5a385ec3769967e3e65b + md5: 1f24853e59c68892452ef94ddd8afd4b + depends: + - libgcc-ng >=10.3.0 + arch: aarch64 + platform: linux + license: LGPL-2.1-or-later + size: 112327 + timestamp: 1646166857935 +- conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda + sha256: 99df692f7a8a5c27cd14b5fb1374ee55e756631b9c3d659ed3ee60830249b238 + md5: 3f43953b7d3fb3aaa1d0d0723d91e368 + depends: + - keyutils >=1.6.1,<2.0a0 + - libedit >=3.1.20191231,<3.2.0a0 + - libedit >=3.1.20191231,<4.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - openssl >=3.3.1,<4.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 1370023 + timestamp: 1719463201255 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/krb5-1.21.3-h50a48e9_0.conda + sha256: 0ec272afcf7ea7fbf007e07a3b4678384b7da4047348107b2ae02630a570a815 + md5: 29c10432a2ca1472b53f299ffb2ffa37 + depends: + - keyutils >=1.6.1,<2.0a0 + - libedit >=3.1.20191231,<3.2.0a0 + - libedit >=3.1.20191231,<4.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - openssl >=3.3.1,<4.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 1474620 + timestamp: 1719463205834 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda + sha256: 4442f957c3c77d69d9da3521268cad5d54c9033f1a73f99cde0a3658937b159b + md5: c6dc8a0fdec13a0565936655c33069a1 + depends: + - __osx >=11.0 + - libcxx >=16 + - libedit >=3.1.20191231,<3.2.0a0 + - libedit >=3.1.20191231,<4.0a0 + - openssl >=3.3.1,<4.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 1155530 + timestamp: 1719463474401 +- conda: https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.17-h717163a_0.conda + sha256: d6a61830a354da022eae93fa896d0991385a875c6bba53c82263a289deda9db8 + md5: 000e85703f0fd9594c81710dd5066471 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libtiff >=4.7.0,<4.8.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 248046 + timestamp: 1739160907615 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lcms2-2.17-hc88f144_0.conda + sha256: 47cf6a4780dc41caa9bc95f020eed485b07010c9ccc85e9ef44b538fedb5341d + md5: b87b1abd2542cf65a00ad2e2461a3083 + depends: + - libgcc >=13 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libtiff >=4.7.0,<4.8.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 287007 + timestamp: 1739161069194 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.17-h7eeda09_0.conda + sha256: 310a62c2f074ebd5aa43b3cd4b00d46385ce680fa2132ecee255a200e2d2f15f + md5: 92a61fd30b19ebd5c1621a5bfe6d8b5f + depends: + - __osx >=11.0 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libtiff >=4.7.0,<4.8.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 212125 + timestamp: 1739161108467 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_4.conda + sha256: db73f38155d901a610b2320525b9dd3b31e4949215c870685fd92ea61b5ce472 + md5: 01f8d123c96816249efd255a31ad7712 + depends: + - __glibc >=2.17,<3.0.a0 + constrains: + - binutils_impl_linux-64 2.43 + arch: x86_64 + platform: linux + license: GPL-3.0-only + license_family: GPL + size: 671240 + timestamp: 1740155456116 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_4.conda + sha256: 016832a70b0aa97e1c4e47e23c00b0c34def679de25146736df353199f684f0d + md5: 80c9ad5e05e91bb6c0967af3880c9742 + constrains: + - binutils_impl_linux-aarch64 2.43 + arch: aarch64 + platform: linux + license: GPL-3.0-only + license_family: GPL + size: 699058 + timestamp: 1740155620594 +- conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 + sha256: cb55f36dcd898203927133280ae1dc643368af041a48bcf7c026acb7c47b0c12 + md5: 76bbff344f0134279f225174e9064c8f + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 281798 + timestamp: 1657977462600 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.0.0-h4de3ea5_0.tar.bz2 + sha256: 2d09ef9b7796d83364957e420b41c32d94e628c3f0520b61c332518a7b5cd586 + md5: 1a0ffc65e03ce81559dbcb0695ad1476 + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 262096 + timestamp: 1657978241894 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 + sha256: 6f068bb53dfb6147d3147d981bb851bb5477e769407ad4e6a68edf482fdcb958 + md5: de462d5aacda3b30721b512c5da4e742 + depends: + - libcxx >=13.0.1 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 215721 + timestamp: 1657977558796 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda + sha256: 143a586aa67d50622ef703de57b9d43f44945836d6568e0e7aa174bd8c45e0d4 + md5: 488f260ccda0afaf08acb286db439c2f + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + constrains: + - libabseil-static =20240722.0=cxx17* + - abseil-cpp =20240722.0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 1311599 + timestamp: 1736008414161 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h18dbdb1_4.conda + sha256: bb6c5fb3b8de5f90735c5252b57efb3c268ee222c755569dac18065f05147670 + md5: 633b9fe454ffea2aaf29e191d946a83b + depends: + - libgcc >=13 + - libstdcxx >=13 + constrains: + - abseil-cpp =20240722.0 + - libabseil-static =20240722.0=cxx17* + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 1334844 + timestamp: 1736008472455 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_h07bc746_4.conda + sha256: 05fa5e5e908962b9c5aba95f962e2ca81d9599c4715aebe5e4ddb72b309d1770 + md5: c2d95bd7aa8d564a9bd7eca5e571a5b3 + depends: + - __osx >=11.0 + - libcxx >=18 + constrains: + - libabseil-static =20240722.0=cxx17* + - abseil-cpp =20240722.0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 1178260 + timestamp: 1736008642885 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-19.0.1-hfa2a6e7_0_cpu.conda + sha256: 7b1f61045b37266989023a007d6331875062bb658068a6e6ab49720495ca3543 + md5: 11b712ed1316c98592f6bae7ccfaa86c + depends: + - __glibc >=2.17,<3.0.a0 + - aws-crt-cpp >=0.29.9,<0.29.10.0a0 + - aws-sdk-cpp >=1.11.489,<1.11.490.0a0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - azure-identity-cpp >=1.10.0,<1.10.1.0a0 + - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 + - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 + - bzip2 >=1.0.8,<2.0a0 + - glog >=0.7.1,<0.8.0a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libbrotlidec >=1.1.0,<1.2.0a0 + - libbrotlienc >=1.1.0,<1.2.0a0 + - libgcc >=13 + - libgoogle-cloud >=2.35.0,<2.36.0a0 + - libgoogle-cloud-storage >=2.35.0,<2.36.0a0 + - libopentelemetry-cpp >=1.18.0,<1.19.0a0 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libre2-11 >=2024.7.2 + - libstdcxx >=13 + - libutf8proc >=2.10.0,<2.11.0a0 + - libzlib >=1.3.1,<2.0a0 + - lz4-c >=1.10.0,<1.11.0a0 + - orc >=2.0.3,<2.0.4.0a0 + - re2 + - snappy >=1.2.1,<1.3.0a0 + - zstd >=1.5.6,<1.6.0a0 + constrains: + - arrow-cpp <0.0a0 + - parquet-cpp <0.0a0 + - apache-arrow-proc =*=cpu + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 8967810 + timestamp: 1739768880886 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-19.0.1-h36213f4_0_cpu.conda + sha256: 3f141e56555676b4a9fd885a0a7452daa2530eb65cfbba1271f7a07457a82003 + md5: cfeb98942a3ef36c0bb2b09b084349da + depends: + - aws-crt-cpp >=0.29.9,<0.29.10.0a0 + - aws-sdk-cpp >=1.11.489,<1.11.490.0a0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - azure-identity-cpp >=1.10.0,<1.10.1.0a0 + - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 + - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 + - bzip2 >=1.0.8,<2.0a0 + - glog >=0.7.1,<0.8.0a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libbrotlidec >=1.1.0,<1.2.0a0 + - libbrotlienc >=1.1.0,<1.2.0a0 + - libgcc >=13 + - libgoogle-cloud >=2.35.0,<2.36.0a0 + - libgoogle-cloud-storage >=2.35.0,<2.36.0a0 + - libopentelemetry-cpp >=1.18.0,<1.19.0a0 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libre2-11 >=2024.7.2 + - libstdcxx >=13 + - libutf8proc >=2.10.0,<2.11.0a0 + - libzlib >=1.3.1,<2.0a0 + - lz4-c >=1.10.0,<1.11.0a0 + - orc >=2.0.3,<2.0.4.0a0 + - re2 + - snappy >=1.2.1,<1.3.0a0 + - zstd >=1.5.6,<1.6.0a0 + constrains: + - apache-arrow-proc =*=cpu + - parquet-cpp <0.0a0 + - arrow-cpp <0.0a0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 8215209 + timestamp: 1739770301694 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-19.0.1-h0945df6_0_cpu.conda + sha256: e34199bea635b1bf9f3819205b291f714ddd47db1bf6e6d10a4eb61da7330214 + md5: 21bcb04df4b1a99721199c5aa6273f53 + depends: + - __osx >=11.0 + - aws-crt-cpp >=0.29.9,<0.29.10.0a0 + - aws-sdk-cpp >=1.11.489,<1.11.490.0a0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - azure-identity-cpp >=1.10.0,<1.10.1.0a0 + - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 + - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 + - bzip2 >=1.0.8,<2.0a0 + - glog >=0.7.1,<0.8.0a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libbrotlidec >=1.1.0,<1.2.0a0 + - libbrotlienc >=1.1.0,<1.2.0a0 + - libcxx >=18 + - libgoogle-cloud >=2.35.0,<2.36.0a0 + - libgoogle-cloud-storage >=2.35.0,<2.36.0a0 + - libopentelemetry-cpp >=1.18.0,<1.19.0a0 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libre2-11 >=2024.7.2 + - libutf8proc >=2.10.0,<2.11.0a0 + - libzlib >=1.3.1,<2.0a0 + - lz4-c >=1.10.0,<1.11.0a0 + - orc >=2.0.3,<2.0.4.0a0 + - re2 + - snappy >=1.2.1,<1.3.0a0 + - zstd >=1.5.6,<1.6.0a0 + constrains: + - apache-arrow-proc =*=cpu + - arrow-cpp <0.0a0 + - parquet-cpp <0.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + size: 5571369 + timestamp: 1739767084108 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-19.0.1-hcb10f89_0_cpu.conda + sha256: 9a3c38a8f1516fe5b7801d0407ff704efd53955ebd63f7fbc439ec3b563d19cc + md5: 0d63e2dea06c44c9d2c8be3e7e38eea9 + depends: + - __glibc >=2.17,<3.0.a0 + - libarrow 19.0.1 hfa2a6e7_0_cpu + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 638054 + timestamp: 1739768924910 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-19.0.1-h3b568fd_0_cpu.conda + sha256: 3260e26ca9e1146befeb9587ba80610f9d9591365c82f7cd8756f14a9a8e58c2 + md5: 7b270af126ffdec0153d8599370f0430 + depends: + - libarrow 19.0.1 h36213f4_0_cpu + - libgcc >=13 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 602400 + timestamp: 1739770383854 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-19.0.1-hf07054f_0_cpu.conda + sha256: b15f5fab53d941917143bb1cf22c5a0eacffb8ff2a010ee2e909afab3821d5f9 + md5: 9213d80ffba1921b86bfdf5fdd2c10c4 + depends: + - __osx >=11.0 + - libarrow 19.0.1 h0945df6_0_cpu + - libcxx >=18 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + size: 500147 + timestamp: 1739767179329 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-19.0.1-hcb10f89_0_cpu.conda + sha256: f756208d787db50b6be68210cb9eec3644b8291a8a353bb2071ea4451bfc1412 + md5: ec52b3b990be399f4267a9acabb73070 + depends: + - __glibc >=2.17,<3.0.a0 + - libarrow 19.0.1 hfa2a6e7_0_cpu + - libarrow-acero 19.0.1 hcb10f89_0_cpu + - libgcc >=13 + - libparquet 19.0.1 h081d1f1_0_cpu + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 604500 + timestamp: 1739769034226 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-19.0.1-h3b568fd_0_cpu.conda + sha256: 76327753ed311ae1d1ef3f8f7067888e01d3c69e5198a9108052d74e2f91d03a + md5: 8a025a60dfcfa3d6cf100395f64de8ba + depends: + - libarrow 19.0.1 h36213f4_0_cpu + - libarrow-acero 19.0.1 h3b568fd_0_cpu + - libgcc >=13 + - libparquet 19.0.1 hfc78867_0_cpu + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 581121 + timestamp: 1739770488033 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-19.0.1-hf07054f_0_cpu.conda + sha256: 21fcb9a09e5872b4f1d483d8d950a1804ccb6804881881ca6fe6c5968a5e4dbc + md5: 0695382a64b393765b4bc9e1ee99250c + depends: + - __osx >=11.0 + - libarrow 19.0.1 h0945df6_0_cpu + - libarrow-acero 19.0.1 hf07054f_0_cpu + - libcxx >=18 + - libparquet 19.0.1 h636d7b7_0_cpu + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + size: 501234 + timestamp: 1739768239766 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-19.0.1-h08228c5_0_cpu.conda + sha256: e0b3ed06ce74c6a083dab59fb3059fdbc40fc71ff94ce470ca0a7c7ffe8d0317 + md5: 792e2359bb93513324326cbe3ee4ebdd + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libarrow 19.0.1 hfa2a6e7_0_cpu + - libarrow-acero 19.0.1 hcb10f89_0_cpu + - libarrow-dataset 19.0.1 hcb10f89_0_cpu + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 523313 + timestamp: 1739769085090 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-19.0.1-h1e9d426_0_cpu.conda + sha256: c1085eb113a80691e3d76400c91b15dc8c0462d533f8c4ca4c33d5e9fe9cffef + md5: 1e34ad733a8c404ac0f652a942192636 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libarrow 19.0.1 h36213f4_0_cpu + - libarrow-acero 19.0.1 h3b568fd_0_cpu + - libarrow-dataset 19.0.1 h3b568fd_0_cpu + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 516114 + timestamp: 1739770543593 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-19.0.1-h4239455_0_cpu.conda + sha256: 0b5c0839102b396f8b0ba376189562a727ebbed3c6bdab74aaf56227ee45cb73 + md5: 2893dd55f7804b9106126c2f00712ec2 + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libarrow 19.0.1 h0945df6_0_cpu + - libarrow-acero 19.0.1 hf07054f_0_cpu + - libarrow-dataset 19.0.1 hf07054f_0_cpu + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + size: 450361 + timestamp: 1739768396169 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-31_hfdb39a5_mkl.conda + build_number: 31 + sha256: 862289f2cfb84bb6001d0e3569e908b8c42d66b881bd5b03f730a3924628b978 + md5: bdf4a57254e8248222cb631db4393ff1 + depends: + - mkl >=2024.2.2,<2025.0a0 + constrains: + - liblapack =3.9.0=31*_mkl + - liblapacke =3.9.0=31*_mkl + - blas =2.131=mkl + - libcblas =3.9.0=31*_mkl + arch: x86_64 + platform: linux + track_features: + - blas_mkl + license: BSD-3-Clause + license_family: BSD + size: 17259 + timestamp: 1740087718283 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-31_h1a9f1db_openblas.conda + build_number: 31 + sha256: 67c9c81dd0444ecc712124034d9f74186ca82fd770b3df46b1a68564461c6a1a + md5: 48bd5bf15ccf3e409840be9caafc0ad5 + depends: + - libopenblas >=0.3.29,<0.3.30.0a0 + - libopenblas >=0.3.29,<1.0a0 + constrains: + - liblapack =3.9.0=31*_openblas + - blas =2.131=openblas + - libcblas =3.9.0=31*_openblas + - mkl <2025 + - liblapacke =3.9.0=31*_openblas + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 16915 + timestamp: 1740087911042 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-31_h10e41b3_openblas.conda + build_number: 31 + sha256: 369586e7688b59b4f92c709b99d847d66d4d095425db327dd32ee5e6ab74697f + md5: 39b053da5e7035c6592102280aa7612a + depends: + - libopenblas >=0.3.29,<0.3.30.0a0 + - libopenblas >=0.3.29,<1.0a0 + constrains: + - liblapacke =3.9.0=31*_openblas + - libcblas =3.9.0=31*_openblas + - blas =2.131=openblas + - mkl <2025 + - liblapack =3.9.0=31*_openblas + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 17123 + timestamp: 1740088119350 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hb9d3cd8_2.conda + sha256: d9db2de60ea917298e658143354a530e9ca5f9c63471c65cf47ab39fd2f429e3 + md5: 41b599ed2b02abcfdd84302bff174b23 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 68851 + timestamp: 1725267660471 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlicommon-1.1.0-h86ecc28_2.conda + sha256: 64112af913974b309d67fd342e065fd184347043a6387933b3db796778a28019 + md5: 3ee026955c688f551a9999840cff4c67 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 68982 + timestamp: 1725267774142 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.1.0-hd74edd7_2.conda + sha256: 839dacb741bdbb25e58f42088a2001b649f4f12195aeb700b5ddfca3267749e5 + md5: d0bf1dff146b799b319ea0434b93f779 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 68426 + timestamp: 1725267943211 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hb9d3cd8_2.conda + sha256: 2892d512cad096cb03f1b66361deeab58b64e15ba525d6592bb6d609e7045edf + md5: 9566f0bd264fbd463002e759b8a82401 + depends: + - __glibc >=2.17,<3.0.a0 + - libbrotlicommon 1.1.0 hb9d3cd8_2 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 32696 + timestamp: 1725267669305 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlidec-1.1.0-h86ecc28_2.conda + sha256: 94c808d9ca3eb6ef30976a9843e27f027cf3a1e84e8c6835cbb696b7bdb35c4c + md5: e64d0f3b59c7c4047446b97a8624a72d + depends: + - libbrotlicommon 1.1.0 h86ecc28_2 + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 31708 + timestamp: 1725267783442 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.1.0-hd74edd7_2.conda + sha256: 6c6862eb274f21a7c0b60e5345467a12e6dda8b9af4438c66d496a2c1a538264 + md5: 55e66e68ce55523a6811633dd1ac74e2 + depends: + - __osx >=11.0 + - libbrotlicommon 1.1.0 hd74edd7_2 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 28378 + timestamp: 1725267980316 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.1.0-hb9d3cd8_2.conda + sha256: 779f58174e99de3600e939fa46eddb453ec5d3c60bb46cdaa8b4c127224dbf29 + md5: 06f70867945ea6a84d35836af780f1de + depends: + - __glibc >=2.17,<3.0.a0 + - libbrotlicommon 1.1.0 hb9d3cd8_2 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 281750 + timestamp: 1725267679782 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlienc-1.1.0-h86ecc28_2.conda + sha256: 41385e17bc73834b235c5aff12d6d82eccb534acb3c30986996f9dad92a0d54c + md5: 0e9bd365480c72b25c71a448257b537d + depends: + - libbrotlicommon 1.1.0 h86ecc28_2 + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 290230 + timestamp: 1725267792697 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlienc-1.1.0-hd74edd7_2.conda + sha256: eeb1eb0d58b9d02bc1b98dc0a058f104ab168eb2f7d1c7bfa0570a12cfcdb7b7 + md5: 4f3a434504c67b2c42565c0b85c1885c + depends: + - __osx >=11.0 + - libbrotlicommon 1.1.0 hd74edd7_2 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 279644 + timestamp: 1725268003553 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-31_h372d94f_mkl.conda + build_number: 31 + sha256: 2ee3ab2b6eeb59f2d3c6f933fa0db28f1b56f0bc543ed2c0f6ec04060e4b6ec0 + md5: 2a06a6c16b45bd3d10002927ca204b67 + depends: + - libblas 3.9.0 31_hfdb39a5_mkl + constrains: + - liblapack =3.9.0=31*_mkl + - liblapacke =3.9.0=31*_mkl + - blas =2.131=mkl + arch: x86_64 + platform: linux + track_features: + - blas_mkl + license: BSD-3-Clause + license_family: BSD + size: 16724 + timestamp: 1740087727554 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-31_hab92f65_openblas.conda + build_number: 31 + sha256: f0457a1d2982f0a28bfbadaa02621677c324e88f7c8198c24fb3e3214c468dba + md5: 6b81dbae56a519f1ec2f25e0ee2f4334 + depends: + - libblas 3.9.0 31_h1a9f1db_openblas + constrains: + - liblapack =3.9.0=31*_openblas + - blas =2.131=openblas + - liblapacke =3.9.0=31*_openblas + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 16824 + timestamp: 1740087917500 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-31_hb3479ef_openblas.conda + build_number: 31 + sha256: f237486cc9118d09d0f3ff8820280de34365f98ee7b7dc5ab923b04c7cbf25a5 + md5: 7353c2bf0e90834cb70545671996d871 + depends: + - libblas 3.9.0 31_h10e41b3_openblas + constrains: + - liblapacke =3.9.0=31*_openblas + - blas =2.131=openblas + - liblapack =3.9.0=31*_openblas + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 17032 + timestamp: 1740088127097 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcrc32c-1.1.2-h9c3ff4c_0.tar.bz2 + sha256: fd1d153962764433fe6233f34a72cdeed5dcf8a883a85769e8295ce940b5b0c5 + md5: c965a5aa0d5c1c37ffc62dff36e28400 + depends: + - libgcc-ng >=9.4.0 + - libstdcxx-ng >=9.4.0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 20440 + timestamp: 1633683576494 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcrc32c-1.1.2-h01db608_0.tar.bz2 + sha256: b8b8c57a87da86b3ea24280fd6aa8efaf92f4e684b606bf2db5d3cb06ffbe2ea + md5: 268ee639c17ada0002fb04dd21816cc2 + depends: + - libgcc-ng >=9.4.0 + - libstdcxx-ng >=9.4.0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 18669 + timestamp: 1633683724891 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcrc32c-1.1.2-hbdafb3b_0.tar.bz2 + sha256: 58477b67cc719060b5b069ba57161e20ba69b8695d154a719cb4b60caf577929 + md5: 32bd82a6a625ea6ce090a81c3d34edeb + depends: + - libcxx >=11.1.0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 18765 + timestamp: 1633683992603 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.12.1-h332b0f4_0.conda + sha256: 2ebc3039af29269e4cdb858fca36265e5e400c1125a4bcd84ae73a596e0e76ca + md5: 45e9dc4e7b25e2841deb392be085500e + depends: + - __glibc >=2.17,<3.0.a0 + - krb5 >=1.21.3,<1.22.0a0 + - libgcc >=13 + - libnghttp2 >=1.64.0,<2.0a0 + - libssh2 >=1.11.1,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.1,<4.0a0 + - zstd >=1.5.6,<1.6.0a0 + arch: x86_64 + platform: linux + license: curl + license_family: MIT + size: 426675 + timestamp: 1739512336799 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcurl-8.12.1-h6702fde_0.conda + sha256: a00458a5163b9552897cdac08b273deb1b3add09e05599dfbacf0606c3b1f41f + md5: 14c340cb70867cf7953d2632f89270b5 + depends: + - krb5 >=1.21.3,<1.22.0a0 + - libgcc >=13 + - libnghttp2 >=1.64.0,<2.0a0 + - libssh2 >=1.11.1,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.1,<4.0a0 + - zstd >=1.5.6,<1.6.0a0 + arch: aarch64 + platform: linux + license: curl + license_family: MIT + size: 444118 + timestamp: 1739512317570 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.12.1-h73640d1_0.conda + sha256: 0bddd1791eb0602c8c6aa465802e9d4526d3ec1251d900b209e767753565d5df + md5: 105f0cceef753644912f42e11c1ae9cf + depends: + - __osx >=11.0 + - krb5 >=1.21.3,<1.22.0a0 + - libnghttp2 >=1.64.0,<2.0a0 + - libssh2 >=1.11.1,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.1,<4.0a0 + - zstd >=1.5.6,<1.6.0a0 + arch: arm64 + platform: osx + license: curl + license_family: MIT + size: 387893 + timestamp: 1739512564746 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda + sha256: 776092346da87a2a23502e14d91eb0c32699c4a1522b7331537bd1c3751dcff5 + md5: 5b3e1610ff8bd5443476b91d618f5b77 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + size: 523505 + timestamp: 1736877862502 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.23-h4ddbbb0_0.conda + sha256: 511d801626d02f4247a04fff957cc6e9ec4cc7e8622bd9acd076bcdc5de5fe66 + md5: 8dfae1d2e74767e9ce36d5fa0d8605db + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 72255 + timestamp: 1734373823254 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libdeflate-1.23-h5e3c512_0.conda + sha256: 959419d87cd2b789a9055db95704c614f31aeb70bef7949fa2f734122a3a2863 + md5: 7e7ca2607b11b180120cefc2354fc0cb + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 69862 + timestamp: 1734373858306 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.23-hec38601_0.conda + sha256: 887c02deaed6d583459eba6367023e36d8761085b2f7126e389424f57155da53 + md5: 1d8b9588be14e71df38c525767a1ac30 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 54132 + timestamp: 1734373971372 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda + sha256: d789471216e7aba3c184cd054ed61ce3f6dac6f87a50ec69291b9297f8c18724 + md5: c277e0a4d549b03ac1e9d6cbbe3d017b + depends: + - ncurses + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - ncurses >=6.5,<7.0a0 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + size: 134676 + timestamp: 1738479519902 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20250104-pl5321h976ea20_0.conda + sha256: c0b27546aa3a23d47919226b3a1635fccdb4f24b94e72e206a751b33f46fd8d6 + md5: fb640d776fc92b682a14e001980825b1 + depends: + - ncurses + - libgcc >=13 + - ncurses >=6.5,<7.0a0 + arch: aarch64 + platform: linux + license: BSD-2-Clause + license_family: BSD + size: 148125 + timestamp: 1738479808948 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda + sha256: 66aa216a403de0bb0c1340a88d1a06adaff66bae2cfd196731aa24db9859d631 + md5: 44083d2d2c2025afca315c7a172eab2b + depends: + - ncurses + - __osx >=11.0 + - ncurses >=6.5,<7.0a0 + arch: arm64 + platform: osx + license: BSD-2-Clause + license_family: BSD + size: 107691 + timestamp: 1738479560845 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda + sha256: 1cd6048169fa0395af74ed5d8f1716e22c19a81a8a36f934c110ca3ad4dd27b4 + md5: 172bf1cd1ff8629f2b1179945ed45055 + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + size: 112766 + timestamp: 1702146165126 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libev-4.33-h31becfc_2.conda + sha256: 973af77e297f1955dd1f69c2cbdc5ab9dfc88388a5576cd152cda178af0fd006 + md5: a9a13cb143bbaa477b1ebaefbe47a302 + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: BSD-2-Clause + license_family: BSD + size: 115123 + timestamp: 1702146237623 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libev-4.33-h93a5062_2.conda + sha256: 95cecb3902fbe0399c3a7e67a5bed1db813e5ab0e22f4023a5e0f722f2cc214f + md5: 36d33e440c31857372a72137f78bacf5 + arch: arm64 + platform: osx + license: BSD-2-Clause + license_family: BSD + size: 107458 + timestamp: 1702146414478 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libevent-2.1.12-hf998b51_1.conda + sha256: 2e14399d81fb348e9d231a82ca4d816bf855206923759b69ad006ba482764131 + md5: a1cfcc585f0c42bf8d5546bb1dfb668d + depends: + - libgcc-ng >=12 + - openssl >=3.1.1,<4.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 427426 + timestamp: 1685725977222 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libevent-2.1.12-h4ba1bb4_1.conda + sha256: 01333cc7d6e6985dd5700b43660d90e9e58049182017fd24862088ecbe1458e4 + md5: 96ae6083cd1ac9f6bc81631ac835b317 + depends: + - libgcc-ng >=12 + - openssl >=3.1.1,<4.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 438992 + timestamp: 1685726046519 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libevent-2.1.12-h2757513_1.conda + sha256: 8c136d7586259bb5c0d2b913aaadc5b9737787ae4f40e3ad1beaf96c80b919b7 + md5: 1a109764bff3bdc7bdd84088347d71dc + depends: + - openssl >=3.1.1,<4.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 368167 + timestamp: 1685726248899 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda + sha256: 56541b98447b58e52d824bd59d6382d609e11de1f8adf20b23143e353d2b8d26 + md5: db833e03127376d461e1e13e76f09b6c + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + constrains: + - expat 2.6.4.* + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 73304 + timestamp: 1730967041968 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.6.4-h5ad3122_0.conda + sha256: f42e758009ba9db90d1fe7992bc3e60d0c52f71fb20923375d2c44ae69a5a2b3 + md5: f1b3fab36861b3ce945a13f0dfdfc688 + depends: + - libgcc >=13 + constrains: + - expat 2.6.4.* + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 72345 + timestamp: 1730967203789 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.4-h286801f_0.conda + sha256: e42ab5ace927ee7c84e3f0f7d813671e1cf3529f5f06ee5899606630498c2745 + md5: 38d2656dd914feb0cab8c629370768bf + depends: + - __osx >=11.0 + constrains: + - expat 2.6.4.* + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 64693 + timestamp: 1730967175868 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_0.conda + sha256: 67a6c95e33ebc763c1adc3455b9a9ecde901850eb2fceb8e646cc05ef3a663da + md5: e3eb7806380bc8bcecba6d749ad5f026 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 53415 + timestamp: 1739260413716 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.4.6-he21f813_0.conda + sha256: 41568066beefe7b319ff27d85952242e5b77fb753d705b8716041959e17c35c2 + md5: 966084fccf3ad62a3160666cda869f28 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 51513 + timestamp: 1739260449772 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 + sha256: 41b3d13efb775e340e4dba549ab5c029611ea6918703096b2eaa9c015c0750ca + md5: 086914b672be056eb70fd4285b6783b6 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 39020 + timestamp: 1636488587153 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h767d61c_2.conda + sha256: 3a572d031cb86deb541d15c1875aaa097baefc0c580b54dc61f5edab99215792 + md5: ef504d1acbd74b7cc6849ef8af47dd03 + depends: + - __glibc >=2.17,<3.0.a0 + - _openmp_mutex >=4.5 + constrains: + - libgomp 14.2.0 h767d61c_2 + - libgcc-ng ==14.2.0=*_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 847885 + timestamp: 1740240653082 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-14.2.0-he277a41_2.conda + sha256: a57f7f9ba2a12f56eafdcd25b6d75f7be10b8fc1a802a58b76a77ca8c66f4503 + md5: 6b4268a60b10f29257b51b9b67ff8d76 + depends: + - _openmp_mutex >=4.5 + constrains: + - libgcc-ng ==14.2.0=*_2 + - libgomp 14.2.0 he277a41_2 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 535507 + timestamp: 1740241069780 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_2.conda + sha256: fb7558c328b38b2f9d2e412c48da7890e7721ba018d733ebdfea57280df01904 + md5: a2222a6ada71fb478682efe483ce0f92 + depends: + - libgcc 14.2.0 h767d61c_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 53758 + timestamp: 1740240660904 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-14.2.0-he9431aa_2.conda + sha256: 9647f75cddc18b07eebe6e1f21500eed50a6af2c43c84e831b4c7a597e10d226 + md5: 692c2bb75f32cfafb6799cf6d1c5d0e0 + depends: + - libgcc 14.2.0 he277a41_2 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 53622 + timestamp: 1740241074834 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_2.conda + sha256: 996d3c0505301901a7ab23b5e7daad21635d1c065240bb0f4faf7e4f75d7f49d + md5: d8b9d9dc0c8cd97d375b48e55947ba70 + depends: + - libgfortran5 14.2.0 hb6113d0_2 + constrains: + - libgfortran-ng ==14.2.0=*_2 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 53611 + timestamp: 1740241100147 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda + sha256: 44e541b4821c96b28b27fef5630883a60ce4fee91fd9c79f25a199f8f73f337b + md5: 4a55d9e169114b2b90d3ec4604cd7bbf + depends: + - libgfortran5 13.2.0 hf226fd6_3 + arch: arm64 + platform: osx + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 110233 + timestamp: 1707330749033 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_2.conda + sha256: 7b9e1d3666a00e5a52e5d43c003bd1c73ab472804be513c070aaedca9c4c2a9a + md5: cd754566661513808ef2408c4ab99a2f + depends: + - libgcc >=14.2.0 + constrains: + - libgfortran 14.2.0 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 1100765 + timestamp: 1740241083241 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda + sha256: bafc679eedb468a86aa4636061c55966186399ee0a04b605920d208d97ac579a + md5: 66ac81d54e95c534ae488726c1f698ea + depends: + - llvm-openmp >=8.0.0 + constrains: + - libgfortran 5.0.0 13_2_0_*_3 + arch: arm64 + platform: osx + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 997381 + timestamp: 1707330687590 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_2.conda + sha256: 4e303711fb7413bf98995beac58e731073099d7a669a3b81e49330ca8da05174 + md5: b11c09d9463daf4cae492d29806b1889 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 462783 + timestamp: 1740241005079 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.35.0-h2b5623c_0.conda + sha256: d747d14c69da512d8993a995dc2df90e857778b0a8542f12fb751544128af685 + md5: 1040ab07d7af9f23cf2466ffe4e58db1 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcurl >=8.11.1,<9.0a0 + - libgcc >=13 + - libgrpc >=1.67.1,<1.68.0a0 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + - openssl >=3.4.0,<4.0a0 + constrains: + - libgoogle-cloud 2.35.0 *_0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 1258035 + timestamp: 1738662406183 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-2.35.0-hccf9d24_0.conda + sha256: b5d323807ea699e76d9ebb829e48100446663978a1aac9adf538249864f73f97 + md5: f22720e07abb547ebce78a3aa7b97d69 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcurl >=8.11.1,<9.0a0 + - libgcc >=13 + - libgrpc >=1.67.1,<1.68.0a0 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + - openssl >=3.4.0,<4.0a0 + constrains: + - libgoogle-cloud 2.35.0 *_0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 1258015 + timestamp: 1738662706891 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-2.35.0-hdbe95d5_0.conda + sha256: 9bee9773540956d8a2ca0b317f73d94916200a4bfd8151319bf7fdcbf704d692 + md5: b1ea94282f38b142f8bc842ef7bcc18c + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcurl >=8.11.1,<9.0a0 + - libcxx >=18 + - libgrpc >=1.67.1,<1.68.0a0 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - openssl >=3.4.0,<4.0a0 + constrains: + - libgoogle-cloud 2.35.0 *_0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 877733 + timestamp: 1738662822079 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.35.0-h0121fbd_0.conda + sha256: cb1ef70e55d2c1defbfd8413dbe85b5550782470dda4f8d393f28d41b6d9b007 + md5: 34e2243e0428aac6b3e903ef99b6d57d + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil + - libcrc32c >=1.1.2,<1.2.0a0 + - libcurl + - libgcc >=13 + - libgoogle-cloud 2.35.0 h2b5623c_0 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 785777 + timestamp: 1738662565066 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-storage-2.35.0-hb9b2b65_0.conda + sha256: cf316f07d5dcc3b6669bf6d93203d435133c99d075a9f92dfa28eff1bd4def74 + md5: ae6ab5b7af1409d0eafd2b77c5d5528a + depends: + - libabseil + - libcrc32c >=1.1.2,<1.2.0a0 + - libcurl + - libgcc >=13 + - libgoogle-cloud 2.35.0 hccf9d24_0 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 739471 + timestamp: 1738662862568 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-storage-2.35.0-h7081f7f_0.conda + sha256: 52dc2d18264543b564b59fb80338fbd9cb2296f011d75f41adcd85041795201c + md5: 958beca4e16f59360e30c48ff0351e04 + depends: + - __osx >=11.0 + - libabseil + - libcrc32c >=1.1.2,<1.2.0a0 + - libcurl + - libcxx >=18 + - libgoogle-cloud 2.35.0 hdbe95d5_0 + - libzlib >=1.3.1,<2.0a0 + - openssl + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 529210 + timestamp: 1738664024959 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.67.1-h25350d4_1.conda + sha256: 014627485b3cf0ea18e04c0bab07be7fb98722a3aeeb58477acc7e1c3d2f911e + md5: 0c6497a760b99a926c7c12b74951a39c + depends: + - __glibc >=2.17,<3.0.a0 + - c-ares >=1.34.4,<2.0a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libre2-11 >=2024.7.2 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + - re2 + constrains: + - grpc-cpp =1.67.1 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 7792251 + timestamp: 1735584856826 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgrpc-1.67.1-hf7ccdd3_1.conda + sha256: 3fa173dc1d7456aac2b26937daae86a08432a31640e3d6569c62edc661fc9bbe + md5: 8fb41a425bebaeb3d0fa568503612e64 + depends: + - c-ares >=1.34.4,<2.0a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libre2-11 >=2024.7.2 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + - re2 + constrains: + - grpc-cpp =1.67.1 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 7430006 + timestamp: 1735585769731 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgrpc-1.67.1-h0a426d6_1.conda + sha256: 630edf63981818ff590367cb95fddbed0f5a390464d0952c90ec81de899e84a6 + md5: 8a3cba079d6ac985e7d73c76a678fbb4 + depends: + - __osx >=11.0 + - c-ares >=1.34.4,<2.0a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libre2-11 >=2024.7.2 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + - re2 + constrains: + - grpc-cpp =1.67.1 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + size: 5311706 + timestamp: 1735585137716 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libhwloc-2.11.2-default_h0d58e46_1001.conda + sha256: d14c016482e1409ae1c50109a9ff933460a50940d2682e745ab1c172b5282a69 + md5: 804ca9e91bcaea0824a341d55b1684f2 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + - libxml2 >=2.13.4,<3.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 2423200 + timestamp: 1731374922090 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h4ce23a2_1.conda + sha256: 18a4afe14f731bfb9cf388659994263904d20111e42f841e9eea1bb6f91f4ab4 + md5: e796ff8ddc598affdf7c173d6145f087 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: LGPL-2.1-only + size: 713084 + timestamp: 1740128065462 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libiconv-1.18-hc99b53d_1.conda + sha256: 3db14977036fe1f511a6dbecacbeff3fdb58482c5c0cf87a2ea3232f5a540836 + md5: 81541d85a45fbf4d0a29346176f1f21c + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: LGPL-2.1-only + size: 718600 + timestamp: 1740130562607 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.18-hfe07756_1.conda + sha256: d30780d24bf3a30b4f116fca74dedb4199b34d500fe6c52cced5f8cc1e926f03 + md5: 450e6bdc0c7d986acf7b8443dce87111 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: LGPL-2.1-only + size: 681804 + timestamp: 1740128227484 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda + sha256: b954e09b7e49c2f2433d6f3bb73868eda5e378278b0f8c1dd10a7ef090e14f2f + md5: ea25936bb4080d843790b586850f82b8 + depends: + - libgcc-ng >=12 + constrains: + - jpeg <0.0.0a + arch: x86_64 + platform: linux + license: IJG AND BSD-3-Clause AND Zlib + size: 618575 + timestamp: 1694474974816 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libjpeg-turbo-3.0.0-h31becfc_1.conda + sha256: 675bc1f2a8581cd34a86c412663ec29c5f90c1d9f8d11866aa1ade5cdbdf8429 + md5: ed24e702928be089d9ba3f05618515c6 + depends: + - libgcc-ng >=12 + constrains: + - jpeg <0.0.0a + arch: aarch64 + platform: linux + license: IJG AND BSD-3-Clause AND Zlib + size: 647126 + timestamp: 1694475003570 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.0.0-hb547adb_1.conda + sha256: a42054eaa38e84fc1e5ab443facac4bbc9d1b6b6f23f54b7bf4f1eb687e1d993 + md5: 3ff1e053dc3a2b8e36b9bfa4256a58d1 + constrains: + - jpeg <0.0.0a + arch: arm64 + platform: osx + license: IJG AND BSD-3-Clause AND Zlib + size: 547541 + timestamp: 1694475104253 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-31_hc41d3b0_mkl.conda + build_number: 31 + sha256: a2d20845d916ac8fba09376cd791136a9b4547afb2131bc315178adfc87bb4ca + md5: 10d012ddd7cc1c7ff9093d4974a34e53 + depends: + - libblas 3.9.0 31_hfdb39a5_mkl + constrains: + - liblapacke =3.9.0=31*_mkl + - blas =2.131=mkl + - libcblas =3.9.0=31*_mkl + arch: x86_64 + platform: linux + track_features: + - blas_mkl + license: BSD-3-Clause + license_family: BSD + size: 16760 + timestamp: 1740087736615 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-31_h411afd4_openblas.conda + build_number: 31 + sha256: 27613828ff6fb258b2e58802617df549f00089660ea8ab6c55c68f042c570162 + md5: 41dbff5eb805a75c120a7b7a1c744dc2 + depends: + - libblas 3.9.0 31_h1a9f1db_openblas + constrains: + - blas =2.131=openblas + - libcblas =3.9.0=31*_openblas + - liblapacke =3.9.0=31*_openblas + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 16845 + timestamp: 1740087923843 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-31_hc9a63f6_openblas.conda + build_number: 31 + sha256: fe55b9aaf82c6c0192c3d1fcc9b8e884f97492dda9a8de5dae29334b3135fab5 + md5: ff57a55a2cbce171ef5707fb463caf19 + depends: + - libblas 3.9.0 31_h10e41b3_openblas + constrains: + - liblapacke =3.9.0=31*_openblas + - libcblas =3.9.0=31*_openblas + - blas =2.131=openblas + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 17033 + timestamp: 1740088134988 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libllvm20-20.1.0.rc1-hb8a341e_0.conda + sha256: efd9d6646cff6e93a81a9b671fa7af683f843ad72d1a46e258720d2a639f1034 + md5: cf83972da6924c67d8fbffa222896b95 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + - libxml2 >=2.13.5,<3.0a0 + - libzlib >=1.3.1,<2.0a0 + - zstd >=1.5.6,<1.6.0a0 + arch: x86_64 + platform: linux + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + size: 42975121 + timestamp: 1738551437179 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libllvm20-20.1.0.rc1-h1ddd4b9_0.conda + sha256: 7a06b4f6656f26e0b5ff124701973fa8602f5062f211d3975f40d5239d3eb4d9 + md5: a7649551ec41c69f5361a6c596ed1ffd + depends: + - libgcc >=13 + - libstdcxx >=13 + - libxml2 >=2.13.5,<3.0a0 + - libzlib >=1.3.1,<2.0a0 + - zstd >=1.5.6,<1.6.0a0 + arch: aarch64 + platform: linux + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + size: 42134035 + timestamp: 1738491036719 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda + sha256: cad52e10319ca4585bc37f0bc7cce99ec7c15dc9168e42ccb96b741b0a27db3f + md5: 42d5b6a0f30d3c10cd88cb8584fda1cb + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: 0BSD + size: 111357 + timestamp: 1738525339684 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.4-h86ecc28_0.conda + sha256: 96413664f0fade54a4931940d18749cfc8e6308349dbb0cb83adb2394ca1f730 + md5: b88244e0a115cc34f7fbca9b11248e76 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: 0BSD + size: 124197 + timestamp: 1738528201520 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.4-h39f12f2_0.conda + sha256: 560c59d3834cc652a84fb45531bd335ad06e271b34ebc216e380a89798fe8e2c + md5: e3fd1f8320a100f2b210e690a57cd615 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: 0BSD + size: 98945 + timestamp: 1738525462560 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda + sha256: b0f2b3695b13a989f75d8fd7f4778e1c7aabe3b36db83f0fe80b2cd812c0e975 + md5: 19e57602824042dfd0446292ef90488b + depends: + - __glibc >=2.17,<3.0.a0 + - c-ares >=1.32.3,<2.0a0 + - libev >=4.33,<4.34.0a0 + - libev >=4.33,<5.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.3.2,<4.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 647599 + timestamp: 1729571887612 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnghttp2-1.64.0-hc8609a4_0.conda + sha256: c093c6d370aadbf0409c20b6c54c488ee2f6fea976181919fcc63e87ee232673 + md5: f52c614fa214a8bedece9421c771670d + depends: + - c-ares >=1.32.3,<2.0a0 + - libev >=4.33,<4.34.0a0 + - libev >=4.33,<5.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.3.2,<4.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 714610 + timestamp: 1729571912479 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.64.0-h6d7220d_0.conda + sha256: 00cc685824f39f51be5233b54e19f45abd60de5d8847f1a56906f8936648b72f + md5: 3408c02539cee5f1141f9f11450b6a51 + depends: + - __osx >=11.0 + - c-ares >=1.34.2,<2.0a0 + - libcxx >=17 + - libev >=4.33,<4.34.0a0 + - libev >=4.33,<5.0a0 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.3.2,<4.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 566719 + timestamp: 1729572385640 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda + sha256: 26d77a3bb4dceeedc2a41bd688564fe71bf2d149fdcf117049970bc02ff1add6 + md5: 30fd6e37fe21f86f4bd26d6ee73eeec7 + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: LGPL-2.1-only + license_family: GPL + size: 33408 + timestamp: 1697359010159 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda + sha256: fd18c2b75d7411096428d36a70b36b1a17e31f7b8956b6905d145792d49e97f8 + md5: c14f32510f694e3185704d89967ec422 + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: LGPL-2.1-only + license_family: GPL + size: 34501 + timestamp: 1697358973269 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.29-pthreads_h9d3fd7e_0.conda + sha256: 3a2ccf4c9098cd18a636e9b7fff947fdeb4962bcfb75c9d6fd80b8c50caf6a3c + md5: a99e2bfcb1ad6362544c71281eb617e9 + depends: + - libgcc >=14 + - libgfortran + - libgfortran5 >=14.2.0 + constrains: + - openblas >=0.3.29,<0.3.30.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 4801657 + timestamp: 1739825308974 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.29-openmp_hf332438_0.conda + sha256: 8989d9e01ec8c9b2d48dbb5efbe70b356fcd15990fb53b64fcb84798982c0343 + md5: 0cd1148c68f09027ee0b0f0179f77c30 + depends: + - __osx >=11.0 + - libgfortran 5.* + - libgfortran5 >=13.2.0 + - llvm-openmp >=18.1.8 + constrains: + - openblas >=0.3.29,<0.3.30.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 4168442 + timestamp: 1739825514918 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-1.18.0-hfcad708_1.conda + sha256: 4ea235e08676f16b0d3c3380befe1478c0fa0141512ee709b011005c55c9619f + md5: 1f5a5d66e77a39dc5bd639ec953705cf + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcurl >=8.11.1,<9.0a0 + - libgrpc >=1.67.1,<1.68.0a0 + - libopentelemetry-cpp-headers 1.18.0 ha770c72_1 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libzlib >=1.3.1,<2.0a0 + - nlohmann_json + - prometheus-cpp >=1.3.0,<1.4.0a0 + constrains: + - cpp-opentelemetry-sdk =1.18.0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 801927 + timestamp: 1735643375271 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopentelemetry-cpp-1.18.0-h60b47f9_1.conda + sha256: 160c493cd0f897955b0b6035b51c6d7255ffbaed3c8a12d43e8e8a719d405aba + md5: afe3c8c53f4b6d27d553c230d4b34038 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcurl >=8.11.1,<9.0a0 + - libgrpc >=1.67.1,<1.68.0a0 + - libopentelemetry-cpp-headers 1.18.0 h8af1aa0_1 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libzlib >=1.3.1,<2.0a0 + - nlohmann_json + - prometheus-cpp >=1.3.0,<1.4.0a0 + constrains: + - cpp-opentelemetry-sdk =1.18.0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 800896 + timestamp: 1735643533825 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopentelemetry-cpp-1.18.0-h0c05b2d_1.conda + sha256: c6bcbd53d62a9e0d8c667e560db0ca2ecb7679277cbb3c23457aabe74fcb8cba + md5: 19c46cc18825f3924251c39ec1b0d983 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcurl >=8.11.1,<9.0a0 + - libgrpc >=1.67.1,<1.68.0a0 + - libopentelemetry-cpp-headers 1.18.0 hce30654_1 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libzlib >=1.3.1,<2.0a0 + - nlohmann_json + - prometheus-cpp >=1.3.0,<1.4.0a0 + constrains: + - cpp-opentelemetry-sdk =1.18.0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + size: 529588 + timestamp: 1735643889612 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-headers-1.18.0-ha770c72_1.conda + sha256: aa1f7dea79ea8513ff77339ba7c6e9cf10dfa537143e7718b1cfb3af52b649f2 + md5: 4fb055f57404920a43b147031471e03b + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 320359 + timestamp: 1735643346175 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopentelemetry-cpp-headers-1.18.0-h8af1aa0_1.conda + sha256: 981c0b29a0789597fa8ed147b02df2d2ad0c7f863d87df74770c40cee1800228 + md5: 282193b19a19e3b5d75d18ef82713ef0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 319401 + timestamp: 1735643509251 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopentelemetry-cpp-headers-1.18.0-hce30654_1.conda + sha256: 82e5f5ba64debbaab3c601b265dfc0cdb4d2880feba9bada5fd2e67b9f91ada5 + md5: e965dad955841507549fdacd8f7f94c0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + size: 320565 + timestamp: 1735643673319 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-19.0.1-h081d1f1_0_cpu.conda + sha256: e9c4a07e79886963bfcd05894a15b5d4c7137c1122273de68845315c35d6505d + md5: 8b58c378d65b213c001f04a174a2a70e + depends: + - __glibc >=2.17,<3.0.a0 + - libarrow 19.0.1 hfa2a6e7_0_cpu + - libgcc >=13 + - libstdcxx >=13 + - libthrift >=0.21.0,<0.21.1.0a0 + - openssl >=3.4.1,<4.0a0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 1244749 + timestamp: 1739769006551 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-19.0.1-hfc78867_0_cpu.conda + sha256: 4822fcb00e97644ce74f313cd2f44fe85085c64b1481ac7e1a22ee7dd2ef772a + md5: d19e95e75e9005e712ec81409868b880 + depends: + - libarrow 19.0.1 h36213f4_0_cpu + - libgcc >=13 + - libstdcxx >=13 + - libthrift >=0.21.0,<0.21.1.0a0 + - openssl >=3.4.1,<4.0a0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 1154758 + timestamp: 1739770461892 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-19.0.1-h636d7b7_0_cpu.conda + sha256: 54e4a18493d63b7fbd5cf39fadabe665bcf462121a7bc2f394f510b0bcf22031 + md5: 0cce19e6981849babe6c73797abbfa4e + depends: + - __osx >=11.0 + - libarrow 19.0.1 h0945df6_0_cpu + - libcxx >=18 + - libthrift >=0.21.0,<0.21.1.0a0 + - openssl >=3.4.1,<4.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + size: 895659 + timestamp: 1739768176454 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.47-h943b412_0.conda + sha256: 23367d71da58c9a61c8cbd963fcffb92768d4ae5ffbef9a47cdf1f54f98c5c36 + md5: 55199e2ae2c3651f6f9b2a447b47bdc9 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux + license: zlib-acknowledgement + size: 288701 + timestamp: 1739952993639 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.47-hec79eb8_0.conda + sha256: 3861a65106a5f876eff3fc19042c3edb528216114b9f8e64b37aebf003deda11 + md5: c4b1ba0d7cef5002759d2f156722feee + depends: + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + arch: aarch64 + platform: linux + license: zlib-acknowledgement + size: 291536 + timestamp: 1739957375872 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.47-h3783ad8_0.conda + sha256: dc93cc30f59b28e7812c6f14d2c2e590b509c38092cce7ababe6b23541b7ed8f + md5: 3550e05e3af94a3fa9cef2694417ccdf + depends: + - __osx >=11.0 + - libzlib >=1.3.1,<2.0a0 + arch: arm64 + platform: osx + license: zlib-acknowledgement + size: 259332 + timestamp: 1739953032676 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda + sha256: 51125ebb8b7152e4a4e69fd2398489c4ec8473195c27cde3cbdf1cb6d18c5493 + md5: d8703f1ffe5a06356f06467f1d0b9464 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 2960815 + timestamp: 1735577210663 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.3-h44a3b7b_1.conda + sha256: ecb69f2b1668e784b41ba667493be846662d5ef702bef64fb2e013bb1364cdc4 + md5: 68f807f7cc13951652bbe048253fd405 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 2788074 + timestamp: 1735576315676 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.3-h3bd63a1_1.conda + sha256: f58a16b13ad53346903c833e266f83c3d770a43a432659b98710aed85ca885e7 + md5: bdbfea4cf45ae36652c6bbcc2e7ebe91 + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=18 + - libzlib >=1.3.1,<2.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 2271580 + timestamp: 1735576361997 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_2.conda + sha256: 4420f8362c71251892ba1eeb957c5e445e4e1596c0c651c28d0d8b415fe120c7 + md5: b2fede24428726dd867611664fb372e8 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libstdcxx >=13 + constrains: + - re2 2024.07.02.* + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 209793 + timestamp: 1735541054068 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_2.conda + sha256: 862c20de0120f802e618dcb25913d00c5b82f91f4be60b2d46a774e851adc2f6 + md5: 9a7dbbaab49f76a6f36e5c9d98e323a7 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libstdcxx >=13 + constrains: + - re2 2024.07.02.* + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 204305 + timestamp: 1735540986919 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h07bc746_2.conda + sha256: 112a73ad483353751d4c5d63648c69a4d6fcebf5e1b698a860a3f5124fc3db96 + md5: 6b1e3624d3488016ca4f1ca0c412efaa + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=18 + constrains: + - re2 2024.07.02.* + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 167155 + timestamp: 1735541067807 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsentencepiece-0.2.0-h8e10757_10.conda + sha256: dc399e0f04a09f8c1807c3b36e578eb81f81891c0ddf21de9c1fb9f048ce4031 + md5: 4f43dbcfacd3cc9a183dd3a48b94d3c0 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 823649 + timestamp: 1735627841126 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsentencepiece-0.2.0-h6164ad9_10.conda + sha256: 57074803772f65d4075b7d6dc17ff5aa40ec3a30109fa4225ca16911504c4a8b + md5: a7a192edc9cfba26a27df3283203e6a1 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 800865 + timestamp: 1735627982895 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsentencepiece-0.2.0-he13a0af_10.conda + sha256: 3347a8840d085ce1661928e736229f068d56c84312fbed90886e059023d85611 + md5: 1f67e5e30edd56e0a0bf6df6bb711a9d + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 754657 + timestamp: 1735628030895 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda + sha256: 0105bd108f19ea8e6a78d2d994a6d4a8db16d19a41212070d2d1d48a63c34161 + md5: a587892d3c13b6621a6091be690dbca2 + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: ISC + size: 205978 + timestamp: 1716828628198 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.20-h68df207_0.conda + sha256: 448df5ea3c5cf1af785aad46858d7a5be0522f4234a4dc9bb764f4d11ff3b981 + md5: 2e4a8f23bebdcb85ca8e5a0fbe75666a + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: ISC + size: 177394 + timestamp: 1716828514515 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda + sha256: fade8223e1e1004367d7101dd17261003b60aa576df6d7802191f8972f7470b1 + md5: a7ce36e284c5faaf93c220dfc39e3abd + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: ISC + size: 164972 + timestamp: 1716828607917 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.49.1-hee588c1_1.conda + sha256: 7a09eef804ef7cf4d88215c2297eabb72af8ad0bd5b012060111c289f14bbe7d + md5: 73cea06049cc4174578b432320a003b8 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux + license: Unlicense + size: 915956 + timestamp: 1739953155793 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.49.1-h5eb1b54_1.conda + sha256: 920fb3b7d3b873babf79a3e392cc82d43b8bd02a573ccaff34219efb5cf7b51e + md5: 150d64241fa27d9d35a7f421ca968a6c + depends: + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + arch: aarch64 + platform: linux + license: Unlicense + size: 915118 + timestamp: 1739953101699 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.1-h3f77e49_1.conda + sha256: 266639fb10ca92287961574b0b4d6031fa40dd9d723d64a0fcb08513a24dab03 + md5: c83357a21092bd952933c36c5cb4f4d6 + depends: + - __osx >=11.0 + - libzlib >=1.3.1,<2.0a0 + arch: arm64 + platform: osx + license: Unlicense + size: 898767 + timestamp: 1739953312379 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hf672d98_0.conda + sha256: 0407ac9fda2bb67e11e357066eff144c845801d00b5f664efbc48813af1e7bb9 + md5: be2de152d8073ef1c01b7728475f2fe7 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 304278 + timestamp: 1732349402869 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libssh2-1.11.1-ha41c0db_0.conda + sha256: 40f2af5357457546bd11cd64a3b9043d83865180f65ce602515c35f353be35c7 + md5: aeffe03c0e598f015aab08dbb04f6ee4 + depends: + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 311577 + timestamp: 1732349396421 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.1-h9cc3647_0.conda + sha256: f7047c6ed44bcaeb04432e8c74da87591940d091b0a3940c0d884b7faa8062e9 + md5: ddc7194676c285513706e5fc64f214d7 + depends: + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 279028 + timestamp: 1732349599461 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-h8f9b012_2.conda + sha256: 8f5bd92e4a24e1d35ba015c5252e8f818898478cb3bc50bd8b12ab54707dc4da + md5: a78c856b6dc6bf4ea8daeb9beaaa3fb0 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc 14.2.0 h767d61c_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 3884556 + timestamp: 1740240685253 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_2.conda + sha256: c30a74bc996013907f6d9f344da007c26d98ef9a0831151cd50aece3125c45d5 + md5: eadee2cda99697e29411c1013c187b92 + depends: + - libgcc 14.2.0 he277a41_2 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 3810779 + timestamp: 1740241094774 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_2.conda + sha256: e86f38b007cf97cc2c67cd519f2de12a313c4ee3f5ef11652ad08932a5e34189 + md5: c75da67f045c2627f59e6fcb5f4e3a9b + depends: + - libstdcxx 14.2.0 h8f9b012_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 53830 + timestamp: 1740240722530 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_2.conda + sha256: 0107886ead6f255956d8e520f8dff260f9ab3d0d51512f18c52710c406e4b2df + md5: c934c1fddad582fcc385b608eb06a70c + depends: + - libstdcxx 14.2.0 h3f4de04_2 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 53715 + timestamp: 1740241126343 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libthrift-0.21.0-h0e7cc3e_0.conda + sha256: ebb395232973c18745b86c9a399a4725b2c39293c9a91b8e59251be013db42f0 + md5: dcb95c0a98ba9ff737f7ae482aef7833 + depends: + - __glibc >=2.17,<3.0.a0 + - libevent >=2.1.12,<2.1.13.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.3.2,<4.0a0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 425773 + timestamp: 1727205853307 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libthrift-0.21.0-h154c74f_0.conda + sha256: f04ab1417aca1687edff9c30d8423ace285eb8c053dc16d595c6e47cfeefb274 + md5: c28792bf37f4ecdce8e3cb9e40750650 + depends: + - libevent >=2.1.12,<2.1.13.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.3.2,<4.0a0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 417329 + timestamp: 1727205944238 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libthrift-0.21.0-h64651cc_0.conda + sha256: 7a6c7d5f58cbbc2ccd6493b4b821639fdb0701b9b04c737a949e8cb6adf1c9ad + md5: 7ce2bd2f650f8c31ad7ba4c7bfea61b7 + depends: + - __osx >=11.0 + - libcxx >=17 + - libevent >=2.1.12,<2.1.13.0a0 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.3.2,<4.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + size: 324342 + timestamp: 1727206096912 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hd9ff511_3.conda + sha256: b224e16b88d76ea95e4af56e2bc638c603bd26a770b98d117d04541d3aafa002 + md5: 0ea6510969e1296cc19966fad481f6de + depends: + - __glibc >=2.17,<3.0.a0 + - lerc >=4.0.0,<5.0a0 + - libdeflate >=1.23,<1.24.0a0 + - libgcc >=13 + - libjpeg-turbo >=3.0.0,<4.0a0 + - liblzma >=5.6.3,<6.0a0 + - libstdcxx >=13 + - libwebp-base >=1.4.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - zstd >=1.5.6,<1.6.0a0 + arch: x86_64 + platform: linux + license: HPND + size: 428173 + timestamp: 1734398813264 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.0-h88f7998_3.conda + sha256: 5888bd66ba7606ae8596856c7dac800940ecad0aed77d6aa37db69d434c81cf0 + md5: 36a0ea4a173338c8725dc0807e99cf22 + depends: + - lerc >=4.0.0,<5.0a0 + - libdeflate >=1.23,<1.24.0a0 + - libgcc >=13 + - libjpeg-turbo >=3.0.0,<4.0a0 + - liblzma >=5.6.3,<6.0a0 + - libstdcxx >=13 + - libwebp-base >=1.4.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - zstd >=1.5.6,<1.6.0a0 + arch: aarch64 + platform: linux + license: HPND + size: 464699 + timestamp: 1734398752249 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-h551f018_3.conda + sha256: 91417846157e04992801438a496b151df89604b2e7c6775d6f701fcd0cbed5ae + md5: a5d084a957563e614ec0c0196d890654 + depends: + - __osx >=11.0 + - lerc >=4.0.0,<5.0a0 + - libcxx >=18 + - libdeflate >=1.23,<1.24.0a0 + - libjpeg-turbo >=3.0.0,<4.0a0 + - liblzma >=5.6.3,<6.0a0 + - libwebp-base >=1.4.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - zstd >=1.5.6,<1.6.0a0 + arch: arm64 + platform: osx + license: HPND + size: 370600 + timestamp: 1734398863052 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libtorch-2.5.1-cpu_mkl_h89e7157_113.conda + sha256: 70e24c9b98d24006ce3c2b27503cb2c122f78cc6f59e980db774020203835aca + md5: 0dfe6af4a27ec2372271e3703cc52e48 + depends: + - __glibc >=2.17,<3.0.a0 + - _openmp_mutex >=4.5 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libblas * *mkl + - libcblas >=3.9.0,<4.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + - libuv >=1.50.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - mkl >=2024.2.2,<2025.0a0 + - sleef >=3.8,<4.0a0 + constrains: + - pytorch-gpu ==99999999 + - pytorch-cpu ==2.5.1 + - pytorch 2.5.1 cpu_mkl_*_113 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 53568815 + timestamp: 1739239230425 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libtorch-2.5.1-cpu_generic_hb04e7f6_13.conda + sha256: 62f94d17e75cdf2f48f4a89175759449aaad05bf2a356836430c82c65a7c5f44 + md5: ad17071bfd97d24a7a83fd044ae6282c + depends: + - _openmp_mutex >=4.5 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - libgcc >=13 + - liblapack >=3.9.0,<4.0a0 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + - libuv >=1.50.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - sleef >=3.8,<4.0a0 + constrains: + - pytorch-cpu ==2.5.1 + - pytorch 2.5.1 cpu_generic_*_13 + - openblas * openmp_* + - pytorch-gpu ==99999999 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 37722765 + timestamp: 1739239246382 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtorch-2.5.1-cpu_generic_he9b55c7_13.conda + sha256: 320cca1b7dbe0506221e0fb2911838fd112d4440a5298f033b56c1a93f0cf6fa + md5: e24814d808f0cd0e130dc141af1a8efd + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - libcxx >=18 + - liblapack >=3.9.0,<4.0a0 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libuv >=1.50.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - llvm-openmp >=18.1.8 + - numpy >=1.19,<3 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - sleef >=3.8,<4.0a0 + constrains: + - pytorch-gpu ==99999999 + - pytorch 2.5.1 cpu_generic_*_13 + - pytorch-cpu ==2.5.1 + - openblas * openmp_* + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 28302663 + timestamp: 1739247703257 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.10.0-h4c51ac1_0.conda + sha256: 8e41563ee963bf8ded06da45f4e70bf42f913cb3c2e79364eb3218deffa3cd74 + md5: aeccfff2806ae38430638ffbb4be9610 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 82745 + timestamp: 1737244366901 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.10.0-ha346350_0.conda + sha256: 9c333e07b76ae1ea2c882db764be52dc82f632be66d993a50b35ca9c5475074a + md5: c5166bcfb8348e8fc31ee16ec3981a5e + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 82679 + timestamp: 1737329054400 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.10.0-hda25de7_0.conda + sha256: aca3ef31d3dff5cefd3790742a5ee6548f1cf0201d0e8cee08b01da503484eb6 + md5: 5f741aed1d8d393586a5fdcaaa87f45c + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 83628 + timestamp: 1737244450097 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda + sha256: 787eb542f055a2b3de553614b25f09eefb0a0931b0c87dbcce6efdfd92f04f18 + md5: 40b61aab5c7ba9ff276c41cfffe6b80b + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 33601 + timestamp: 1680112270483 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda + sha256: 616277b0c5f7616c2cdf36f6c316ea3f9aa5bb35f2d4476a349ab58b9b91675f + md5: 000e30b09db0b7c775b21695dff30969 + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 35720 + timestamp: 1680113474501 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.50.0-hb9d3cd8_0.conda + sha256: b4a8890023902aef9f1f33e3e35603ad9c2f16c21fdb58e968fa6c1bd3e94c0b + md5: 771ee65e13bc599b0b62af5359d80169 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 891272 + timestamp: 1737016632446 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuv-1.50.0-h86ecc28_0.conda + sha256: 67914c7f171d343059144d804c2f17fcd621a94e45f179a0fd843b8c1618823e + md5: 915db044076cbbdffb425170deb4ce38 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 621056 + timestamp: 1737016626950 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libuv-1.50.0-h5505292_0.conda + sha256: d13fb49d4c8262bf2c44ffb2c77bb2b5d0f85fc6de76bdb75208efeccb29fce6 + md5: 20717343fb30798ab7c23c2e92b748c1 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 418890 + timestamp: 1737016751326 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.5.0-h851e524_0.conda + sha256: c45283fd3e90df5f0bd3dbcd31f59cdd2b001d424cf30a07223655413b158eaf + md5: 63f790534398730f59e1b899c3644d4a + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + constrains: + - libwebp 1.5.0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 429973 + timestamp: 1734777489810 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libwebp-base-1.5.0-h0886dbf_0.conda + sha256: b3d881a0ae08bb07fff7fa8ead506c8d2e0388733182fe4f216f3ec5d61ffcf0 + md5: 95ef4a689b8cc1b7e18b53784d88f96b + depends: + - libgcc >=13 + constrains: + - libwebp 1.5.0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 362623 + timestamp: 1734779054659 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.5.0-h2471fea_0.conda + sha256: f8bdb876b4bc8cb5df47c28af29188de8911c3fea4b799a33743500149de3f4a + md5: 569466afeb84f90d5bb88c11cc23d746 + depends: + - __osx >=11.0 + constrains: + - libwebp 1.5.0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 290013 + timestamp: 1734777593617 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda + sha256: 666c0c431b23c6cec6e492840b176dde533d48b7e6fb8883f5071223433776aa + md5: 92ed62436b625154323d40d5f2f11dd7 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - pthread-stubs + - xorg-libxau >=1.0.11,<2.0a0 + - xorg-libxdmcp + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 395888 + timestamp: 1727278577118 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcb-1.17.0-h262b8f6_0.conda + sha256: 461cab3d5650ac6db73a367de5c8eca50363966e862dcf60181d693236b1ae7b + md5: cd14ee5cca2464a425b1dbfc24d90db2 + depends: + - libgcc >=13 + - pthread-stubs + - xorg-libxau >=1.0.11,<2.0a0 + - xorg-libxdmcp + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 397493 + timestamp: 1727280745441 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxcb-1.17.0-hdb1d25a_0.conda + sha256: bd3816218924b1e43b275863e21a3e13a5db4a6da74cca8e60bc3c213eb62f71 + md5: af523aae2eca6dfa1c8eec693f5b9a79 + depends: + - __osx >=11.0 + - pthread-stubs + - xorg-libxau >=1.0.11,<2.0a0 + - xorg-libxdmcp + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 323658 + timestamp: 1727278733917 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda + sha256: 6ae68e0b86423ef188196fff6207ed0c8195dd84273cb5623b85aa08033a410c + md5: 5aa797f8787fe7a17d1b0821485b5adc + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: LGPL-2.1-or-later + size: 100393 + timestamp: 1702724383534 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda + sha256: 6b46c397644091b8a26a3048636d10b989b1bf266d4be5e9474bf763f828f41f + md5: b4df5d7d4b63579d081fd3a4cf99740e + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: LGPL-2.1-or-later + size: 114269 + timestamp: 1702724369203 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.6-h8d12d68_0.conda + sha256: db8af71ea9c0ae95b7cb4a0f59319522ed2243942437a1200ceb391493018d85 + md5: 328382c0e0ca648e5c189d5ec336c604 + depends: + - __glibc >=2.17,<3.0.a0 + - icu >=75.1,<76.0a0 + - libgcc >=13 + - libiconv >=1.18,<2.0a0 + - liblzma >=5.6.4,<6.0a0 + - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 690296 + timestamp: 1739952967309 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.6-h2e0c361_0.conda + sha256: bb075df08b04b1b47e75a250f2ebbb2401c3367057d64b8d44ef1ef3f44480e1 + md5: a159a92f890f862408c951c08f13415f + depends: + - icu >=75.1,<76.0a0 + - libgcc >=13 + - libiconv >=1.18,<2.0a0 + - liblzma >=5.6.4,<6.0a0 + - libzlib >=1.3.1,<2.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 733707 + timestamp: 1739953178456 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.6-hce475f1_0.conda + sha256: 9ce429417545f7616ed528061305b3a1fc3732ff3bb24bd91cba260550879693 + md5: 8654012bd68aa48b94eee6c9faab85b6 + depends: + - __osx >=11.0 + - libiconv >=1.18,<2.0a0 + - liblzma >=5.6.4,<6.0a0 + - libzlib >=1.3.1,<2.0a0 + constrains: + - icu <0.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 582490 + timestamp: 1739953065675 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda + sha256: d4bfe88d7cb447768e31650f06257995601f89076080e76df55e3112d4e47dc4 + md5: edb0dca6bc32e4f4789199455a1dbeb8 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + constrains: + - zlib 1.3.1 *_2 + arch: x86_64 + platform: linux + license: Zlib + license_family: Other + size: 60963 + timestamp: 1727963148474 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda + sha256: 5a2c1eeef69342e88a98d1d95bff1603727ab1ff4ee0e421522acd8813439b84 + md5: 08aad7cbe9f5a6b460d0976076b6ae64 + depends: + - libgcc >=13 + constrains: + - zlib 1.3.1 *_2 + arch: aarch64 + platform: linux + license: Zlib + license_family: Other + size: 66657 + timestamp: 1727963199518 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda + sha256: ce34669eadaba351cd54910743e6a2261b67009624dbc7daeeafdef93616711b + md5: 369964e85dc26bfe78f41399b366c435 + depends: + - __osx >=11.0 + constrains: + - zlib 1.3.1 *_2 + arch: arm64 + platform: osx + license: Zlib + license_family: Other + size: 46438 + timestamp: 1727963202283 +- conda: https://conda.anaconda.org/conda-forge/linux-64/llvm-openmp-19.1.7-h024ca30_0.conda + sha256: 5383e32604e03814b6011fa01a5332057934181a7ea0e90abba7890c17cabce6 + md5: 9915f85a72472011550550623cce2d53 + depends: + - __glibc >=2.17,<3.0.a0 + constrains: + - openmp 19.1.7|19.1.7.* + arch: x86_64 + platform: linux + license: Apache-2.0 WITH LLVM-exception + license_family: APACHE + size: 3190529 + timestamp: 1736986301022 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda + sha256: b92a669f2059874ebdcb69041b6c243d68ffc3fb356ac1339cec44aeb27245d7 + md5: c4d54bfd3817313ce758aa76283b118d + depends: + - __osx >=11.0 + constrains: + - openmp 19.1.7|19.1.7.* + arch: arm64 + platform: osx + license: Apache-2.0 WITH LLVM-exception + license_family: APACHE + size: 280830 + timestamp: 1736986295869 +- conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.10.0-h5888daf_1.conda + sha256: 47326f811392a5fd3055f0f773036c392d26fdb32e4d8e7a8197eed951489346 + md5: 9de5350a85c4a20c685259b889aa6393 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + size: 167055 + timestamp: 1733741040117 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.10.0-h5ad3122_1.conda + sha256: 67e55058d275beea76c1882399640c37b5be8be4eb39354c94b610928e9a0573 + md5: 6654e411da94011e8fbe004eacb8fe11 + depends: + - libgcc >=13 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: BSD-2-Clause + license_family: BSD + size: 184953 + timestamp: 1733740984533 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.10.0-h286801f_1.conda + sha256: 94d3e2a485dab8bdfdd4837880bde3dd0d701e2b97d6134b8806b7c8e69c8652 + md5: 01511afc6cc1909c5303cf31be17b44f + depends: + - __osx >=11.0 + - libcxx >=18 + arch: arm64 + platform: osx + license: BSD-2-Clause + license_family: BSD + size: 148824 + timestamp: 1733741047892 +- conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_1.conda + sha256: 0fbacdfb31e55964152b24d5567e9a9996e1e7902fb08eb7d91b5fd6ce60803a + md5: fee3164ac23dfca50cfcc8b85ddefb81 + depends: + - mdurl >=0.1,<1 + - python >=3.9 + license: MIT + license_family: MIT + size: 64430 + timestamp: 1733250550053 +- conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_1.conda + sha256: 4a6bf68d2a2b669fecc9a4a009abd1cf8e72c2289522ff00d81b5a6e51ae78f5 + md5: eb227c3e0bf58f5bd69c0532b157975b + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - jinja2 >=3.0.0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 24604 + timestamp: 1733219911494 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.2-py312h74ce7d3_1.conda + sha256: 1d500158262f30b9c23e37d1c861fe76e127a3926d69b3b38c25d20d3faa6f9f + md5: bc8607ab678073a0441808a31465f4fb + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - jinja2 >=3.0.0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 25079 + timestamp: 1733220639175 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312h998013c_1.conda + sha256: 4aa997b244014d3707eeef54ab0ee497d12c0d0d184018960cce096169758283 + md5: 46e547061080fddf9cf95a0327e8aba6 + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - jinja2 >=3.0.0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 24048 + timestamp: 1733219945697 +- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022718-release.conda + noarch: python + sha256: f3dcb14fed5470c0fc521542cbd2f1c56ca7e46d560f46176b8f926198cb3cbd + md5: 01fe5e0cf46c84a6345e323ad1316764 + depends: + - max-core ==25.2.0.dev2025022718 release + - max-python ==25.2.0.dev2025022718 release + - mojo-jupyter ==25.2.0.dev2025022718 release + - mblack ==25.2.0.dev2025022718 release + license: LicenseRef-Modular-Proprietary + size: 9905 + timestamp: 1740680254354 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022718-release.conda + sha256: 847d5767109a305d7bcad4ac29248a74a384034692934a0c54b00a590c27094a + md5: fc5a9ae36c7805979bd58ca55a25066f + depends: + - mblack ==25.2.0.dev2025022718 release + license: LicenseRef-Modular-Proprietary + size: 249811868 + timestamp: 1740680254354 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022718-release.conda + sha256: 250c35ecccd302e6c7de836ac200a5ece92e74508c2590c585d8803d488fd650 + md5: d88728b468c85902512a0f9b99251035 + depends: + - mblack ==25.2.0.dev2025022718 release + license: LicenseRef-Modular-Proprietary + size: 252108573 + timestamp: 1740680207793 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022718-release.conda + sha256: fb28d9e61aa507ea84b470082d3dc96844a24fe672d4e4c57e832655c5d0a202 + md5: dd8734453f7276a258f3351cc5c506c3 + depends: + - mblack ==25.2.0.dev2025022718 release + license: LicenseRef-Modular-Proprietary + size: 217273450 + timestamp: 1740681819160 +- conda: https://conda.modular.com/max-nightly/noarch/max-pipelines-25.2.0.dev2025022718-release.conda + noarch: python + sha256: 1e46a465f1d8e75afa9822717e6c6ee75965c078d0cd7b217c4f8622847e9fb0 + md5: 7257078fedac4bbfb961c30a84e2c387 + depends: + - max-python ==25.2.0.dev2025022718 release + - aiohttp >=3.11.12 + - fastapi >=0.114.2 + - gguf >=0.14.0 + - hf-transfer >=0.1.9 + - httpx >=0.28.1 + - huggingface_hub >=0.24.0 + - nvitop >=1.4.1 + - opentelemetry-api >=1.29.0 + - opentelemetry-exporter-otlp-proto-http >=1.27.0 + - opentelemetry-exporter-prometheus <1.0.0 + - opentelemetry-sdk >=1.29.0,<2.0 + - pillow >=10.3.0 + - prometheus_client >=0.21.0 + - prometheus-async >=22.2.0 + - psutil >=6.1.1 + - pydantic + - pydantic-settings >=2.7.1 + - pyinstrument >=5.0.1 + - python-json-logger >=2.0.7 + - requests >=2.32.3 + - rich >=13.9.4 + - safetensors >=0.5.2 + - sentinel >=0.3.0 + - sse-starlette >=2.1.2 + - tokenizers >=0.19.0 + - pytorch >=2.2.2,<=2.5.1 + - transformers >=4.40.1 + - uvicorn >=0.34.0 + - uvloop >=0.21.0 + - xgrammar ==0.1.11 + license: LicenseRef-Modular-Proprietary + size: 10365 + timestamp: 1740680254354 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022718-release.conda + noarch: python + sha256: 831b4d62f66f0083321121c6ba25dedab3ee41d5e9f19d9752969592214af398 + md5: f828ace91aa057e4774e84ad459adccf + depends: + - max-core ==25.2.0.dev2025022718 release + - click >=8.0.0 + - numpy >=1.18,<2.0 + - sentencepiece >=0.2.0 + - tqdm >=4.67.1 + constrains: + - aiohttp >=3.11.12 + - fastapi >=0.114.2 + - gguf >=0.14.0 + - hf-transfer >=0.1.9 + - httpx >=0.28.1 + - huggingface_hub >=0.24.0 + - nvitop >=1.4.1 + - opentelemetry-api >=1.29.0 + - opentelemetry-exporter-otlp-proto-http >=1.27.0 + - opentelemetry-exporter-prometheus <1.0.0 + - opentelemetry-sdk >=1.29.0,<2.0 + - pillow >=10.3.0 + - prometheus_client >=0.21.0 + - prometheus-async >=22.2.0 + - psutil >=6.1.1 + - pydantic + - pydantic-settings >=2.7.1 + - pyinstrument >=5.0.1 + - python-json-logger >=2.0.7 + - requests >=2.32.3 + - rich >=13.9.4 + - safetensors >=0.5.2 + - sentinel >=0.3.0 + - sse-starlette >=2.1.2 + - tokenizers >=0.19.0 + - pytorch >=2.2.2,<=2.5.1 + - transformers >=4.40.1 + - uvicorn >=0.34.0 + - uvloop >=0.21.0 + - xgrammar ==0.1.11 + license: LicenseRef-Modular-Proprietary + size: 123584411 + timestamp: 1740680254354 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022718-release.conda + noarch: python + sha256: b9e5755b7bf6314a37a90ef0250c93f5e7c693954d7a6389a97ab9ef06e23cc3 + md5: bfd2e752d0fc9516b78a17169ce9cc78 + depends: + - max-core ==25.2.0.dev2025022718 release + - click >=8.0.0 + - numpy >=1.18,<2.0 + - sentencepiece >=0.2.0 + - tqdm >=4.67.1 + constrains: + - aiohttp >=3.11.12 + - fastapi >=0.114.2 + - gguf >=0.14.0 + - hf-transfer >=0.1.9 + - httpx >=0.28.1 + - huggingface_hub >=0.24.0 + - nvitop >=1.4.1 + - opentelemetry-api >=1.29.0 + - opentelemetry-exporter-otlp-proto-http >=1.27.0 + - opentelemetry-exporter-prometheus <1.0.0 + - opentelemetry-sdk >=1.29.0,<2.0 + - pillow >=10.3.0 + - prometheus_client >=0.21.0 + - prometheus-async >=22.2.0 + - psutil >=6.1.1 + - pydantic + - pydantic-settings >=2.7.1 + - pyinstrument >=5.0.1 + - python-json-logger >=2.0.7 + - requests >=2.32.3 + - rich >=13.9.4 + - safetensors >=0.5.2 + - sentinel >=0.3.0 + - sse-starlette >=2.1.2 + - tokenizers >=0.19.0 + - pytorch >=2.2.2,<=2.5.1 + - transformers >=4.40.1 + - uvicorn >=0.34.0 + - uvloop >=0.21.0 + - xgrammar ==0.1.11 + license: LicenseRef-Modular-Proprietary + size: 126004454 + timestamp: 1740680207793 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022718-release.conda + noarch: python + sha256: 7da9f4655082bb64c2b0cc996ffefa0ce5c49744854ed77a9b0d000e27cf5a55 + md5: b16d498a148aa61dca2a6bfec5cb8e46 + depends: + - max-core ==25.2.0.dev2025022718 release + - click >=8.0.0 + - numpy >=1.18,<2.0 + - sentencepiece >=0.2.0 + - tqdm >=4.67.1 + constrains: + - aiohttp >=3.11.12 + - fastapi >=0.114.2 + - gguf >=0.14.0 + - hf-transfer >=0.1.9 + - httpx >=0.28.1 + - huggingface_hub >=0.24.0 + - nvitop >=1.4.1 + - opentelemetry-api >=1.29.0 + - opentelemetry-exporter-otlp-proto-http >=1.27.0 + - opentelemetry-exporter-prometheus <1.0.0 + - opentelemetry-sdk >=1.29.0,<2.0 + - pillow >=10.3.0 + - prometheus_client >=0.21.0 + - prometheus-async >=22.2.0 + - psutil >=6.1.1 + - pydantic + - pydantic-settings >=2.7.1 + - pyinstrument >=5.0.1 + - python-json-logger >=2.0.7 + - requests >=2.32.3 + - rich >=13.9.4 + - safetensors >=0.5.2 + - sentinel >=0.3.0 + - sse-starlette >=2.1.2 + - tokenizers >=0.19.0 + - pytorch >=2.2.2,<=2.5.1 + - transformers >=4.40.1 + - uvicorn >=0.34.0 + - uvloop >=0.21.0 + - xgrammar ==0.1.11 + license: LicenseRef-Modular-Proprietary + size: 112658409 + timestamp: 1740681819160 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022718-release.conda + noarch: python + sha256: ff042a8abfed0e2e36b207e3d4f59a2b4577dea7f099b08d1aaef128ab796f09 + md5: 719ca7123d53415adcdd7f0cb8396c51 + depends: + - python >=3.9,<3.13 + - click >=8.0.0 + - mypy_extensions >=0.4.3 + - packaging >=22.0 + - pathspec >=0.9.0 + - platformdirs >=2 + - typing_extensions >=v4.12.2 + - python + license: MIT + size: 130852 + timestamp: 1740680254353 +- conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda + sha256: 78c1bbe1723449c52b7a9df1af2ee5f005209f67e40b6e1d3c7619127c43b1c7 + md5: 592132998493b3ff25fd7479396e8351 + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 14465 + timestamp: 1733255681319 +- conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-2024.2.2-ha957f24_16.conda + sha256: 77906b0acead8f86b489da46f53916e624897338770dbf70b04b8f673c9273c1 + md5: 1459379c79dda834673426504d52b319 + depends: + - _openmp_mutex * *_llvm + - _openmp_mutex >=4.5 + - llvm-openmp >=19.1.2 + - tbb 2021.* + arch: x86_64 + platform: linux + license: LicenseRef-IntelSimplifiedSoftwareOct2022 + license_family: Proprietary + size: 124718448 + timestamp: 1730231808335 +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022718-release.conda + noarch: python + sha256: 19c33e23b27e240fee0b2a1d56921802ac88558dc2da417837cd590175561e16 + md5: 6b8d00b15817db11e026f824f7f0ba14 + depends: + - max-core ==25.2.0.dev2025022718 release + - python >=3.9,<3.13 + - jupyter_client >=8.6.2,<8.7 + - python + license: LicenseRef-Modular-Proprietary + size: 22981 + timestamp: 1740680254354 +- conda: https://conda.anaconda.org/conda-forge/linux-64/mpc-1.3.1-h24ddda3_1.conda + sha256: 1bf794ddf2c8b3a3e14ae182577c624fa92dea975537accff4bc7e5fea085212 + md5: aa14b9a5196a6d8dd364164b7ce56acf + depends: + - __glibc >=2.17,<3.0.a0 + - gmp >=6.3.0,<7.0a0 + - libgcc >=13 + - mpfr >=4.2.1,<5.0a0 + arch: x86_64 + platform: linux + license: LGPL-3.0-or-later + license_family: LGPL + size: 116777 + timestamp: 1725629179524 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/mpc-1.3.1-h783934e_1.conda + sha256: b5b674f496ed28c0b2d08533c6f11eaf1840bf7d9c830655f51514f2f9d9a9c8 + md5: d3758cd24507dc1bda3483ce051d48ac + depends: + - gmp >=6.3.0,<7.0a0 + - libgcc >=13 + - mpfr >=4.2.1,<5.0a0 + arch: aarch64 + platform: linux + license: LGPL-3.0-or-later + license_family: LGPL + size: 132799 + timestamp: 1725629168783 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/mpc-1.3.1-h8f1351a_1.conda + sha256: 2700899ad03302a1751dbf2bca135407e470dd83ac897ab91dd8675d4300f158 + md5: a5635df796b71f6ca400fc7026f50701 + depends: + - __osx >=11.0 + - gmp >=6.3.0,<7.0a0 + - mpfr >=4.2.1,<5.0a0 + arch: arm64 + platform: osx + license: LGPL-3.0-or-later + license_family: LGPL + size: 104766 + timestamp: 1725629165420 +- conda: https://conda.anaconda.org/conda-forge/linux-64/mpfr-4.2.1-h90cbb55_3.conda + sha256: f25d2474dd557ca66c6231c8f5ace5af312efde1ba8290a6ea5e1732a4e669c0 + md5: 2eeb50cab6652538eee8fc0bc3340c81 + depends: + - __glibc >=2.17,<3.0.a0 + - gmp >=6.3.0,<7.0a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: LGPL-3.0-only + license_family: LGPL + size: 634751 + timestamp: 1725746740014 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/mpfr-4.2.1-h2305555_3.conda + sha256: abb35c37de2ec6c9ee89995142b1cfea9e6547202ba5578e5307834eca6d436f + md5: 65b21e8d5f0ec6a2f7e87630caed3318 + depends: + - gmp >=6.3.0,<7.0a0 + - libgcc >=13 + arch: aarch64 + platform: linux + license: LGPL-3.0-only + license_family: LGPL + size: 1841314 + timestamp: 1725746723157 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/mpfr-4.2.1-hb693164_3.conda + sha256: 4463e4e2aba7668e37a1b8532859191b4477a6f3602a5d6b4d64ad4c4baaeac5 + md5: 4e4ea852d54cc2b869842de5044662fb + depends: + - __osx >=11.0 + - gmp >=6.3.0,<7.0a0 + arch: arm64 + platform: osx + license: LGPL-3.0-only + license_family: LGPL + size: 345517 + timestamp: 1725746730583 +- conda: https://conda.anaconda.org/conda-forge/noarch/mpmath-1.3.0-pyhd8ed1ab_1.conda + sha256: 7d7aa3fcd6f42b76bd711182f3776a02bef09a68c5f117d66b712a6d81368692 + md5: 3585aa87c43ab15b167b574cd73b057b + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 439705 + timestamp: 1733302781386 +- conda: 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 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 61507 + timestamp: 1733913288935 +- conda: 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 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 63077 + timestamp: 1733913233032 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/multidict-6.1.0-py312hdb8e49c_1.conda + sha256: 482fd09fb798090dc8cce2285fa69f43b1459099122eac2fb112d9b922b9f916 + md5: 0048335516fed938e4dd2c457b4c5b9b + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + size: 55968 + timestamp: 1729065664275 +- conda: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.15-py312h98912ed_1.conda + sha256: bb612a921fafda6375a2204ffebd8811db8dd3b8f25ac9886cc9bcbff7e3664e + md5: 5a64b9f44790d9a187a85366dd0ffa8d + depends: + - dill >=0.3.6 + - libgcc-ng >=12 + - python >=3.12.0rc3,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 335666 + timestamp: 1695459025249 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.15-py312hdd3e373_1.conda + sha256: c53362cdf346f314e111faddc53061e3fd2ece0ba68ca303f5dd109976df158f + md5: 173a1692d2b3ddc265dc6afd21a869b3 + depends: + - dill >=0.3.6 + - libgcc-ng >=12 + - python >=3.12.0rc3,<3.13.0a0 + - python >=3.12.0rc3,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 336110 + timestamp: 1695459137796 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/multiprocess-0.70.15-py312h02f2b3b_1.conda + sha256: 8041371e3ec3fbc2ca13c71b0180672896e6382e62892d9f6b11a4c5dd675951 + md5: 910ef2223c71902175418d9163152788 + depends: + - dill >=0.3.6 + - python >=3.12.0rc3,<3.13.0a0 + - python >=3.12.0rc3,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 335147 + timestamp: 1695459275360 +- conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda + sha256: 1895f47b7d68581a6facde5cb13ab8c2764c2e53a76bd746f8f98910dc4e08fe + md5: 29097e7ea634a45cc5386b95cac6568f + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 10854 + timestamp: 1733230986902 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda + sha256: 3fde293232fa3fca98635e1167de6b7c7fda83caf24b9d6c91ec9eefb4f4d586 + md5: 47e340acb35de30501a76c7c799c41d7 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: X11 AND BSD-3-Clause + size: 891641 + timestamp: 1738195959188 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-ha32ae93_3.conda + sha256: 91cfb655a68b0353b2833521dc919188db3d8a7f4c64bea2c6a7557b24747468 + md5: 182afabe009dc78d8b73100255ee6868 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: X11 AND BSD-3-Clause + size: 926034 + timestamp: 1738196018799 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda + sha256: 2827ada40e8d9ca69a153a45f7fd14f32b2ead7045d3bbb5d10964898fe65733 + md5: 068d497125e4bf8a66bf707254fff5ae + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: X11 AND BSD-3-Clause + size: 797030 + timestamp: 1738196177597 +- conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda + sha256: 39625cd0c9747fa5c46a9a90683b8997d8b9649881b3dc88336b13b7bdd60117 + md5: fd40bf7f7f4bc4b647dc8512053d9873 + depends: + - python >=3.10 + - python + constrains: + - numpy >=1.24 + - scipy >=1.10,!=1.11.0,!=1.11.1 + - matplotlib >=3.7 + - pandas >=2.0 + license: BSD-3-Clause + license_family: BSD + size: 1265008 + timestamp: 1731521053408 +- conda: https://conda.anaconda.org/conda-forge/linux-64/nlohmann_json-3.11.3-he02047a_1.conda + sha256: ce4bcced4f8eea71b7cac8bc3daac097abf7a5792f278cd811dedada199500c1 + md5: e46f7ac4917215b49df2ea09a694a3fa + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 122743 + timestamp: 1723652407663 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/nlohmann_json-3.11.3-h0a1ffab_1.conda + sha256: c90b1f11fc337d90a9e4c5aeeacac1418c5ba6a195097086566d38bb2ecf0f24 + md5: f2bd10ff23ab5c87327439c4499b3f3e + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 122755 + timestamp: 1723652622631 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/nlohmann_json-3.11.3-h00cdb27_1.conda + sha256: 3f4e6a4fa074bb297855f8111ab974dab6d9f98b7d4317d4dd46f8687ee2363b + md5: d2dee849c806430eee64d3acc98ce090 + depends: + - __osx >=11.0 + - libcxx >=16 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 123250 + timestamp: 1723652704997 +- conda: https://conda.anaconda.org/conda-forge/noarch/nomkl-1.0-h5ca1d4c_0.tar.bz2 + sha256: d38542a151a90417065c1a234866f97fd1ea82a81de75ecb725955ab78f88b4b + md5: 9a66894dfd07c4510beb6b3f9672ccc0 + constrains: + - mkl <0.a0 + license: BSD-3-Clause + license_family: BSD + size: 3843 + timestamp: 1582593857545 +- conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda + sha256: fe3459c75cf84dcef6ef14efcc4adb0ade66038ddd27cadb894f34f4797687d8 + md5: d8285bea2a350f63fab23bf460221f3f + depends: + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - libgcc-ng >=12 + - liblapack >=3.9.0,<4.0a0 + - libstdcxx-ng >=12 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - numpy-base <0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 7484186 + timestamp: 1707225809722 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda + sha256: 23767677a7790bee5457d5e75ebd508b9a31c5354216f4310dd1acfca3f7a6f9 + md5: 9cebf5a06cb87d4569cd68df887af476 + depends: + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - libgcc-ng >=12 + - liblapack >=3.9.0,<4.0a0 + - libstdcxx-ng >=12 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - numpy-base <0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 6614296 + timestamp: 1707225994762 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda + sha256: c8841d6d6f61fd70ca80682efbab6bdb8606dc77c68d8acabfbd7c222054f518 + md5: d83fc83d589e2625a3451c9a7e21047c + depends: + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - libcxx >=16 + - liblapack >=3.9.0,<4.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - numpy-base <0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 6073136 + timestamp: 1707226249608 +- conda: https://conda.anaconda.org/conda-forge/noarch/nvidia-ml-py-12.570.86-pyhd8ed1ab_0.conda + sha256: 6fd70c3d5b509ef1c30cb13df877f14b04bb0e53da032950921b31d95aa5971d + md5: bc4b4177052f661da6d56838dfe57a52 + depends: + - python >=3.9 + constrains: + - nvidia-ml ==9999999999 + - pynvml ~=12.0 + license: BSD-3-Clause + license_family: BSD + size: 43543 + timestamp: 1737778765664 +- conda: https://conda.anaconda.org/conda-forge/noarch/nvitop-1.4.2-pyh707e725_0.conda + sha256: 002c17241c698ba07b0d610da0590e8c8c1e38aef13cf7bd03112b2a9ff5350d + md5: eceb58298054d6f2b7c8f8c53642c2d8 + depends: + - __unix + - nvidia-ml-py >=11.450.51,<12.571.0a0 + - psutil >=5.6.6 + - python >=3.9 + license: GPL-3.0-only + license_family: GPL + size: 143819 + timestamp: 1737914833293 +- conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.3-h5fbd93e_0.conda + sha256: 5bee706ea5ba453ed7fd9da7da8380dd88b865c8d30b5aaec14d2b6dd32dbc39 + md5: 9e5816bc95d285c115a3ebc2f8563564 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libpng >=1.6.44,<1.7.0a0 + - libstdcxx >=13 + - libtiff >=4.7.0,<4.8.0a0 + - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + size: 342988 + timestamp: 1733816638720 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openjpeg-2.5.3-h3f56577_0.conda + sha256: 92d310033e20538e896f4e4b1ea4205eb6604eee7c5c651c4965a0d8d3ca0f1d + md5: 04231368e4af50d11184b50e14250993 + depends: + - libgcc >=13 + - libpng >=1.6.44,<1.7.0a0 + - libstdcxx >=13 + - libtiff >=4.7.0,<4.8.0a0 + - libzlib >=1.3.1,<2.0a0 + arch: aarch64 + platform: linux + license: BSD-2-Clause + license_family: BSD + size: 377796 + timestamp: 1733816683252 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/openjpeg-2.5.3-h8a3d83b_0.conda + sha256: 1d59bc72ca7faac06d349c1a280f5cfb8a57ee5896f1e24225a997189d7418c7 + md5: 4b71d78648dbcf68ce8bf22bb07ff838 + depends: + - __osx >=11.0 + - libcxx >=18 + - libpng >=1.6.44,<1.7.0a0 + - libtiff >=4.7.0,<4.8.0a0 + - libzlib >=1.3.1,<2.0a0 + arch: arm64 + platform: osx + license: BSD-2-Clause + license_family: BSD + size: 319362 + timestamp: 1733816781741 +- conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.1-h7b32b05_0.conda + sha256: cbf62df3c79a5c2d113247ddea5658e9ff3697b6e741c210656e239ecaf1768f + md5: 41adf927e746dc75ecf0ef841c454e48 + depends: + - __glibc >=2.17,<3.0.a0 + - ca-certificates + - libgcc >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 2939306 + timestamp: 1739301879343 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.1-hd08dc88_0.conda + sha256: d80b52b56b2206053968270069616868cbeb289ef855cf1584b1bb0fef61b37c + md5: 09036190605c57eaecf01218e0e9542d + depends: + - ca-certificates + - libgcc >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 3476570 + timestamp: 1739303256089 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.1-h81ee809_0.conda + sha256: 4f8e2389e1b711b44182a075516d02c80fa7a3a7e25a71ff1b5ace9eae57a17a + md5: 75f9f0c7b1740017e2db83a53ab9a28e + depends: + - __osx >=11.0 + - ca-certificates + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 2934522 + timestamp: 1739301896733 +- conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.30.0-pyhd8ed1ab_0.conda + sha256: ab5b873cc2542e305236e0439d323bf880d1b49eafe7a8a04d6863a5a409059d + md5: 65caf9f399f67c1c16efc0fb76f3576c + depends: + - deprecated >=1.2.6 + - importlib-metadata <=8.5.0,>=6.0 + - python >=3.9 + license: Apache-2.0 + license_family: APACHE + size: 44649 + timestamp: 1738813183426 +- conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.30.0-pyhd8ed1ab_0.conda + sha256: 12294c0e75460bf773500d0b97d58701f6141a26ebc7507b7aefd045c3943801 + md5: 49cf930ab95d2abaabb17f0d40899628 + depends: + - backoff >=1.10.0,<3.0.0 + - opentelemetry-proto 1.30.0 + - python >=3.9 + license: Apache-2.0 + license_family: APACHE + size: 19155 + timestamp: 1738757443981 +- conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.30.0-pyhd8ed1ab_0.conda + sha256: 4bdb101663f63cd9b9c5560b40cc4441fd766885a13a130c9a0b60addc493f7d + md5: 19cd3caf8abaabe7210cb46dbde1932b + depends: + - deprecated >=1.2.6 + - googleapis-common-protos ~=1.52 + - opentelemetry-api ~=1.15 + - opentelemetry-exporter-otlp-proto-common 1.30.0 + - opentelemetry-proto 1.30.0 + - opentelemetry-sdk >=1.30.0,<1.31.dev0 + - python >=3.9 + - requests ~=2.7 + license: Apache-2.0 + license_family: APACHE + size: 17129 + timestamp: 1738881064907 +- conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-prometheus-0.51b0-pyh29332c3_0.conda + sha256: 1b7420798c2e8589ea9c03a0b9e1db64a79dfbdf6d12937ad69fd70f9b2a6ec7 + md5: cbfa34f2b05a9f916b4e255416103082 + depends: + - python >=3.9 + - opentelemetry-api >=1.12,<2.dev0 + - opentelemetry-sdk >=1.30.0,<1.31.dev0 + - prometheus_client >=0.5.0,<1.0.0 + - python + license: Apache-2.0 + license_family: APACHE + size: 22659 + timestamp: 1740444975350 +- conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.30.0-pyhd8ed1ab_0.conda + sha256: a7dfb1566daca6bd7aea78ccc69257324336fa945199081c9a9d378d1b59737b + md5: 6b2133dbe9127cd09d3c20061c8f4faa + depends: + - protobuf <6.0,>=5.0 + - python >=3.9 + license: Apache-2.0 + license_family: APACHE + size: 37366 + timestamp: 1738753488553 +- conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.30.0-pyhd8ed1ab_0.conda + sha256: 287fac5c7a0a0a565932b7a43b733036bbc08e2b11cd93fb64f29ededb89e9c6 + md5: 3667728a1b18fb9a32aef23036934d9f + depends: + - opentelemetry-api 1.30.0 + - opentelemetry-semantic-conventions 0.51b0 + - python >=3.9 + - typing-extensions >=3.7.4 + - typing_extensions >=3.7.4 + license: Apache-2.0 + license_family: APACHE + size: 77853 + timestamp: 1738855492720 +- conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.51b0-pyh3cfb1c2_0.conda + sha256: 2618877c066a6608ea57a05d260ddd805d0f59b95076f63d816df139f648f25a + md5: ff41e8547f2e7e0d0affc6c6e6e0e87f + depends: + - deprecated >=1.2.6 + - opentelemetry-api 1.30.0 + - python >=3.9 + license: Apache-2.0 + license_family: APACHE + size: 91903 + timestamp: 1738850427906 +- conda: https://conda.anaconda.org/conda-forge/linux-64/orc-2.0.3-h12ee42a_2.conda + sha256: dff5cc8023905782c86b3459055f26d4b97890e403b0698477c9fed15d8669cc + md5: 4f6f9f3f80354ad185e276c120eac3f0 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - lz4-c >=1.10.0,<1.11.0a0 + - snappy >=1.2.1,<1.3.0a0 + - tzdata + - zstd >=1.5.6,<1.6.0a0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 1188881 + timestamp: 1735630209320 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/orc-2.0.3-hdd485aa_2.conda + sha256: b6c67542352a86cdf143c3066d5cda855b74454a156eedcd8958b494c6a32a83 + md5: d19f01b42e5d6a2908b65df435aff42f + depends: + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - lz4-c >=1.10.0,<1.11.0a0 + - snappy >=1.2.1,<1.3.0a0 + - tzdata + - zstd >=1.5.6,<1.6.0a0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 1167714 + timestamp: 1735630248837 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/orc-2.0.3-h0ff2369_2.conda + sha256: cca330695f3bdb8c0e46350c29cd4af3345865544e36f1d7c9ba9190ad22f5f4 + md5: 24b1897c0d24afbb70704ba998793b78 + depends: + - __osx >=11.0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libzlib >=1.3.1,<2.0a0 + - lz4-c >=1.10.0,<1.11.0a0 + - snappy >=1.2.1,<1.3.0a0 + - tzdata + - zstd >=1.5.6,<1.6.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 438520 + timestamp: 1735630624140 +- conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + sha256: da157b19bcd398b9804c5c52fc000fcb8ab0525bdb9c70f95beaa0bb42f85af1 + md5: 3bfed7e6228ebf2f7b9eaa47f1b4e2aa + depends: + - python >=3.8 + license: Apache-2.0 + license_family: APACHE + size: 60164 + timestamp: 1733203368787 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.3-py312hf9745cd_1.conda + sha256: ad275a83bfebfa8a8fee9b0569aaf6f513ada6a246b2f5d5b85903d8ca61887e + md5: 8bce4f6caaf8c5448c7ac86d87e26b4b + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + - numpy >=1.19,<3 + - numpy >=1.22.4 + - python >=3.12,<3.13.0a0 + - python-dateutil >=2.8.1 + - python-tzdata >=2022a + - python_abi 3.12.* *_cp312 + - pytz >=2020.1,<2024.2 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 15436913 + timestamp: 1726879054912 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pandas-2.2.3-py312ha2895bd_2.conda + sha256: a34b10077de97eea72c81cb96e3ddc7d48320c0fc7d9b28ba8d9d2bead1d8297 + md5: 39a91ac336d350513de6aad56da5a920 + depends: + - libgcc >=13 + - libstdcxx >=13 + - numpy >=1.19,<3 + - numpy >=1.22.4 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python-dateutil >=2.8.1 + - python-tzdata >=2022a + - python_abi 3.12.* *_cp312 + - pytz >=2020.1,<2024.2 + constrains: + - fsspec >=2022.11.0 + - s3fs >=2022.11.0 + - fastparquet >=2022.12.0 + - pyreadstat >=1.2.0 + - qtpy >=2.3.0 + - scipy >=1.10.0 + - beautifulsoup4 >=4.11.2 + - gcsfs >=2022.11.0 + - numexpr >=2.8.4 + - sqlalchemy >=2.0.0 + - pyxlsb >=1.0.10 + - numba >=0.56.4 + - lxml >=4.9.2 + - matplotlib >=3.6.3 + - psycopg2 >=2.9.6 + - tzdata >=2022.7 + - bottleneck >=1.3.6 + - xarray >=2022.12.0 + - xlsxwriter >=3.0.5 + - zstandard >=0.19.0 + - blosc >=1.21.3 + - pytables >=3.8.0 + - openpyxl >=3.1.0 + - pyqt5 >=5.15.8 + - tabulate >=0.9.0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 15162992 + timestamp: 1736811533875 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.3-py312hcd31e36_1.conda + sha256: ff0cb54b5d058c7987b4a0984066e893642d1865a7bb695294b6172e2fcdc457 + md5: c68bfa69e6086c381c74e16fd72613a8 + depends: + - __osx >=11.0 + - libcxx >=17 + - numpy >=1.19,<3 + - numpy >=1.22.4 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python-dateutil >=2.8.1 + - python-tzdata >=2022a + - python_abi 3.12.* *_cp312 + - pytz >=2020.1,<2024.2 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 14470437 + timestamp: 1726878887799 +- conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + sha256: 9f64009cdf5b8e529995f18e03665b03f5d07c0b17445b8badef45bde76249ee + md5: 617f15191456cc6a13db418a275435e5 + depends: + - python >=3.9 + license: MPL-2.0 + license_family: MOZILLA + size: 41075 + timestamp: 1733233471940 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-11.1.0-py312h80c1187_0.conda + sha256: 5c347962202b55ae4d8a463e0555c5c6ca33396266a08284bf1384399894e541 + md5: d3894405f05b2c0f351d5de3ae26fa9c + depends: + - __glibc >=2.17,<3.0.a0 + - freetype >=2.12.1,<3.0a0 + - lcms2 >=2.16,<3.0a0 + - libgcc >=13 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libtiff >=4.7.0,<4.8.0a0 + - libwebp-base >=1.5.0,<2.0a0 + - libxcb >=1.17.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - openjpeg >=2.5.3,<3.0a0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - tk >=8.6.13,<8.7.0a0 + arch: x86_64 + platform: linux + license: HPND + size: 42749785 + timestamp: 1735929845390 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pillow-11.1.0-py312h719f0cf_0.conda + sha256: 7559556ffc44bda777f85c2e5acd6b5756fa5822c0271b329b7b9a3c6bb20349 + md5: 77e0ec0a6fc847d317f204aa15b59f6b + depends: + - freetype >=2.12.1,<3.0a0 + - lcms2 >=2.16,<3.0a0 + - libgcc >=13 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libtiff >=4.7.0,<4.8.0a0 + - libwebp-base >=1.5.0,<2.0a0 + - libxcb >=1.17.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - openjpeg >=2.5.3,<3.0a0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - tk >=8.6.13,<8.7.0a0 + arch: aarch64 + platform: linux + license: HPND + size: 41362848 + timestamp: 1735932311857 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-11.1.0-py312h50aef2c_0.conda + sha256: b29b7c915053e06a7a5b4118760202c572c9c35d23bd6ce8e73270b6a50e50ee + md5: 94d6ba8cd468668a9fb04193b0f4b36e + depends: + - __osx >=11.0 + - freetype >=2.12.1,<3.0a0 + - lcms2 >=2.16,<3.0a0 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libtiff >=4.7.0,<4.8.0a0 + - libwebp-base >=1.5.0,<2.0a0 + - libxcb >=1.17.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - openjpeg >=2.5.3,<3.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - tk >=8.6.13,<8.7.0a0 + arch: arm64 + platform: osx + license: HPND + size: 42852329 + timestamp: 1735930118976 +- conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + sha256: bb50f6499e8bc1d1a26f17716c97984671121608dc0c3ecd34858112bce59a27 + md5: 577852c7e53901ddccc7e6a9959ddebe + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 20448 + timestamp: 1733232756001 +- conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_1.conda + sha256: 122433fc5318816b8c69283aaf267c73d87aa2d09ce39f64c9805c9a3b264819 + md5: e9dcbce5f45f9ee500e728ae58b605b6 + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 23595 + timestamp: 1733222855563 +- conda: https://conda.anaconda.org/conda-forge/noarch/prometheus-async-22.2.0-pyh29332c3_0.conda + sha256: 28262575a4b0421a50983be5e898205b7315b50d3e72518fe44b2b9c368026d8 + md5: e86915350744e5a8de993f7474ca98ce + depends: + - python >=3.9 + - prometheus_client >=0.8.0 + - typing_extensions >=3.10.0 + - wrapt + - python + license: Apache-2.0 + license_family: APACHE + size: 24093 + timestamp: 1737857634308 +- conda: https://conda.anaconda.org/conda-forge/linux-64/prometheus-cpp-1.3.0-ha5d0236_0.conda + sha256: 013669433eb447548f21c3c6b16b2ed64356f726b5f77c1b39d5ba17a8a4b8bc + md5: a83f6a2fdc079e643237887a37460668 + depends: + - __glibc >=2.17,<3.0.a0 + - libcurl >=8.10.1,<9.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - zlib + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 199544 + timestamp: 1730769112346 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/prometheus-cpp-1.3.0-h7938499_0.conda + sha256: 9350d7bbc3982a732ff13a7fd17b585509e3b7d0191ac7b810cc3224868e3648 + md5: 10f4301290e51c49979ff98d1bdf2556 + depends: + - libcurl >=8.10.1,<9.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - zlib + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 211335 + timestamp: 1730769181127 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/prometheus-cpp-1.3.0-h0967b3e_0.conda + sha256: 851a77ae1a8e90db9b9f3c4466abea7afb52713c3d98ceb0d37ba6ff27df2eff + md5: 7172339b49c94275ba42fec3eaeda34f + depends: + - __osx >=11.0 + - libcurl >=8.10.1,<9.0a0 + - libcxx >=18 + - libzlib >=1.3.1,<2.0a0 + - zlib + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 173220 + timestamp: 1730769371051 +- conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda + sha256: bc8f00d5155deb7b47702cb8370f233935704100dbc23e30747c161d1b6cf3ab + md5: 3e01e386307acc60b2f89af0b2e161aa + depends: + - python >=3.9 + license: Apache-2.0 + license_family: Apache + size: 49002 + timestamp: 1733327434163 +- conda: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.1-py312h178313f_1.conda + sha256: 6d5ff6490c53e14591b70924711fe7bd70eb7fbeeeb1cbd9ed2f6d794ec8c4eb + md5: 349635694b4df27336bc15a49e9220e9 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 52947 + timestamp: 1737635699390 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.2.1-py312hcc812fe_1.conda + sha256: d759d8ab9c060b42cabf6312b9a04aa590daecabf1dd4e35731f4bc1b5c388bb + md5: 533b07e9fd835938f465225613825eee + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 52776 + timestamp: 1737635802135 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.1-py312h998013c_1.conda + sha256: 96145760baad111d7ae4213ea8f8cc035cf33b001f5ff37d92268e4d28b0941d + md5: 83678928c58c9ae76778a435b6c7a94a + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + size: 50942 + timestamp: 1737635896600 +- conda: https://conda.anaconda.org/conda-forge/linux-64/protobuf-5.28.3-py312h2ec8cdc_0.conda + sha256: acb2e0ee948e3941f8ed191cb77f654e06538638aed8ccd71cbc78a15242ebbb + md5: 9d7e427d159c1b2d516cc047ff177c48 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - libprotobuf 5.28.3 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 464794 + timestamp: 1731366525051 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/protobuf-5.28.3-py312h6f74592_0.conda + sha256: 9c575d5035c7ecb114ab9e17906c0a54087d9598dd6a2104c02fe33f0a29dd46 + md5: 06513608c94fb1c1b17136ace77063a9 + depends: + - libgcc >=13 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - libprotobuf 5.28.3 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 473242 + timestamp: 1731366577844 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/protobuf-5.28.3-py312hd8f9ff3_0.conda + sha256: 9d572a97419bdace14d7c7cc8cc8c4bf2dcb22b56965dac87a27fbdb5061b926 + md5: 5afbe52a59f04dd1fe566d0d17590d7e + depends: + - __osx >=11.0 + - libcxx >=18 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - libprotobuf 5.28.3 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 448803 + timestamp: 1731367010746 +- conda: https://conda.anaconda.org/conda-forge/linux-64/psutil-7.0.0-py312h66e93f0_0.conda + sha256: 158047d7a80e588c846437566d0df64cec5b0284c7184ceb4f3c540271406888 + md5: 8e30db4239508a538e4a3b3cdf5b9616 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 466219 + timestamp: 1740663246825 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/psutil-7.0.0-py312hb2c0f52_0.conda + sha256: 2a4f1ad69b16b9843f90adf5b39418c635835605bd2b300f55a8432c5ee22296 + md5: 1195731cd361196f9e352341a764fccb + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 467245 + timestamp: 1740663309651 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/psutil-7.0.0-py312hea69d52_0.conda + sha256: cb11dcb39b2035ef42c3df89b5a288744b5dcb5a98fb47385760843b1d4df046 + md5: 0f461bd37cb428dc20213a08766bb25d + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 476376 + timestamp: 1740663381256 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda + sha256: 9c88f8c64590e9567c6c80823f0328e58d3b1efb0e1c539c0315ceca764e0973 + md5: b3c17d95b5a10c6e64a21fa17573e70e + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 8252 + timestamp: 1726802366959 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pthread-stubs-0.4-h86ecc28_1002.conda + sha256: 977dfb0cb3935d748521dd80262fe7169ab82920afd38ed14b7fee2ea5ec01ba + md5: bb5a90c93e3bac3d5690acf76b4a6386 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 8342 + timestamp: 1726803319942 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pthread-stubs-0.4-hd74edd7_1002.conda + sha256: 8ed65e17fbb0ca944bfb8093b60086e3f9dd678c3448b5de212017394c247ee3 + md5: 415816daf82e0b23a736a069a75e9da7 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 8381 + timestamp: 1726802424786 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-19.0.1-py312h7900ff3_0.conda + sha256: 82a0b6ef00473c134ff32138a6fe1f6edc600f362f2007d33d6c6723e220a83d + md5: 972f2a7f04b117accc08a11469c2cb6e + depends: + - libarrow-acero 19.0.1.* + - libarrow-dataset 19.0.1.* + - libarrow-substrait 19.0.1.* + - libparquet 19.0.1.* + - pyarrow-core 19.0.1 *_0_* + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 25300 + timestamp: 1739792645286 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-19.0.1-py312h8025657_0.conda + sha256: d17f85be9e3c9ccdbf46a00f51a155d6c9d02837f3ff850539cc931ce149546f + md5: 0f2b788d71caa13c9e05fb4366e3b564 + depends: + - libarrow-acero 19.0.1.* + - libarrow-dataset 19.0.1.* + - libarrow-substrait 19.0.1.* + - libparquet 19.0.1.* + - pyarrow-core 19.0.1 *_0_* + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 25487 + timestamp: 1739792927040 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-19.0.1-py312h1f38498_0.conda + sha256: 212a9ef1971d69882b977a930b3e8cd9d78bb58c027119a52b92d48a5e47f9eb + md5: 4bbcfad0bfcad7ee1d617a9b6db564ee + depends: + - libarrow-acero 19.0.1.* + - libarrow-dataset 19.0.1.* + - libarrow-substrait 19.0.1.* + - libparquet 19.0.1.* + - pyarrow-core 19.0.1 *_0_* + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + size: 25462 + timestamp: 1739792876991 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-19.0.1-py312h01725c0_0_cpu.conda + sha256: b2d397ee72a8e33aa1b2bcaa525b3bfc1dad333a631e668e54bcdcf275b3d69b + md5: 227543d1eef90da786f0c63bd0787839 + depends: + - __glibc >=2.17,<3.0.a0 + - libarrow 19.0.1.* *cpu + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - numpy >=1.21,<3 + - apache-arrow-proc =*=cpu + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 5203933 + timestamp: 1739792285799 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-19.0.1-py312h66f7834_0_cpu.conda + sha256: ab25433629022236b24d35a53dbef033ef60f3cb3a71fa630392d7340791bdc7 + md5: e83aadc9635bdcf69845587c4c837fd3 + depends: + - libarrow 19.0.1.* *cpu + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - numpy >=1.21,<3 + - apache-arrow-proc =*=cpu + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 5017444 + timestamp: 1739792893195 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-19.0.1-py312hc40f475_0_cpu.conda + sha256: 50ad4d67a1a2be32c2441a945a333b5347e36f027ea629fd903e7eaae77e0ed7 + md5: 90e3c0898e229d76e4a6949f621f0f58 + depends: + - __osx >=11.0 + - libarrow 19.0.1.* *cpu + - libcxx >=18 + - libzlib >=1.3.1,<2.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - apache-arrow-proc =*=cpu + - numpy >=1.21,<3 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + size: 4398733 + timestamp: 1739792829575 +- conda: https://conda.anaconda.org/conda-forge/noarch/pybind11-2.13.6-pyh1ec8472_2.conda + sha256: 27f888492af3d5ab19553f263b0015bf3766a334668b5b3a79c7dc0416e603c1 + md5: 8088a5e7b2888c780738c3130f2a969d + depends: + - pybind11-global 2.13.6 *_2 + - python + constrains: + - pybind11-abi ==4 + license: BSD-3-Clause + license_family: BSD + size: 186375 + timestamp: 1730237816231 +- conda: https://conda.anaconda.org/conda-forge/noarch/pybind11-global-2.13.6-pyh415d2e4_2.conda + sha256: 9ff0d61d86878f81779bdb7e47656a75feaab539893462cff29b8ec353026d81 + md5: 120541563e520d12d8e39abd7de9092c + depends: + - __unix + - python + constrains: + - pybind11-abi ==4 + license: BSD-3-Clause + license_family: BSD + size: 179139 + timestamp: 1730237481227 +- conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda + sha256: 79db7928d13fab2d892592223d7570f5061c192f27b9febd1a418427b719acc6 + md5: 12c566707c80111f9799308d9e265aef + depends: + - python >=3.9 + - python + license: BSD-3-Clause + license_family: BSD + size: 110100 + timestamp: 1733195786147 +- conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.6-pyh3cfb1c2_0.conda + sha256: 9a78801a28959edeb945e8270a4e666577b52fac0cf4e35f88cf122f73d83e75 + md5: c69f87041cf24dfc8cb6bf64ca7133c7 + depends: + - annotated-types >=0.6.0 + - pydantic-core 2.27.2 + - python >=3.9 + - typing-extensions >=4.6.1 + - typing_extensions >=4.12.2 + license: MIT + license_family: MIT + size: 296841 + timestamp: 1737761472006 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.27.2-py312h12e396e_0.conda + sha256: 81602a4592ad2ac1a1cb57372fd25214e63b1c477d5818b0c21cde0f1f85c001 + md5: bae01b2563030c085f5158c518b84e86 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - typing-extensions >=4.6.0,!=4.7.0 + constrains: + - __glibc >=2.17 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 1641402 + timestamp: 1734571789895 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pydantic-core-2.27.2-py312h8cbf658_0.conda + sha256: 623e0f3846f15d035ce7ab7ae445fc8d9e547b6684ab55858b6f44510d24b097 + md5: 9677f6ab4bf27ba3c2aee70d08c7b27c + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - typing-extensions >=4.6.0,!=4.7.0 + constrains: + - __glibc >=2.17 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 1505076 + timestamp: 1734571966615 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.27.2-py312hcd83bfe_0.conda + sha256: cfa7201f890d5d08ce29ff70e65a96787d5793a1718776733666b44bbd4a1205 + md5: dcb307e02f17d38c6e1cbfbf8c602852 + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - typing-extensions >=4.6.0,!=4.7.0 + constrains: + - __osx >=11.0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 1593461 + timestamp: 1734571986644 +- conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.8.1-pyh3cfb1c2_0.conda + sha256: 84b78dcdc75d7dacd8c85df9a7fef42ff5684897217b46beef6c516afb2550dc + md5: 88715188749bfac9fa92aec9c747d62c + depends: + - pydantic >=2.7.0 + - python >=3.9 + - python-dotenv >=0.21.0 + license: MIT + size: 32632 + timestamp: 1740672054181 +- conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda + sha256: 28a3e3161390a9d23bc02b4419448f8d27679d9e2c250e29849e37749c8de86b + md5: 232fb4577b6687b2d503ef8e254270c9 + depends: + - python >=3.9 + license: BSD-2-Clause + license_family: BSD + size: 888600 + timestamp: 1736243563082 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyinstrument-5.0.1-py312h66e93f0_0.conda + sha256: 3f1c0bc95f2c46dcd107f44cf742ee1fa40ba22e244f01083654743bbbcf28f3 + md5: 9f1d7b421e4c8fd00009490613db64d4 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 182333 + timestamp: 1737774425235 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyinstrument-5.0.1-py312hb2c0f52_0.conda + sha256: 16af5db4359078bcb526291855bf1075ab035a96fe4e8d5cc4b0b5c8cba89b9a + md5: 90f5e9e04b1ecf25ad3f28b606f63742 + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 183988 + timestamp: 1737774588265 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyinstrument-5.0.1-py312hea69d52_0.conda + sha256: 5e7de2f908af22bbd8cf3562ce5ebf65ad6c0d8e40038f90b56f4db750639ce2 + md5: 07b0eb9b6bd91dfa87f95032825690dc + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 182524 + timestamp: 1737774624030 +- conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda + sha256: ba3b032fa52709ce0d9fd388f63d330a026754587a2f461117cac9ab73d8d0d8 + md5: 461219d1a5bd61342293efa2c0c90eac + depends: + - __unix + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 21085 + timestamp: 1733217331982 +- conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.4-pyhd8ed1ab_1.conda + sha256: 75245ca9d0cbd6d38bb45ec02430189a9d4c21c055c5259739d738a2298d61b3 + md5: 799ed216dc6af62520f32aa39bc1c2bb + depends: + - colorama + - exceptiongroup >=1.0.0rc8 + - iniconfig + - packaging + - pluggy <2,>=1.5 + - python >=3.9 + - tomli >=1 + constrains: + - pytest-faulthandler >=2 + license: MIT + license_family: MIT + size: 259195 + timestamp: 1733217599806 +- conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.9-h9e4cc4f_0_cpython.conda + sha256: 64fed5178f1e9c8ac0f572ac0ce37955f5dee7b2bcac665202bc14f1f7dd618a + md5: 5665f0079432f8848079c811cdb537d5 + depends: + - __glibc >=2.17,<3.0.a0 + - bzip2 >=1.0.8,<2.0a0 + - ld_impl_linux-64 >=2.36.1 + - libexpat >=2.6.4,<3.0a0 + - libffi >=3.4,<4.0a0 + - libgcc >=13 + - liblzma >=5.6.4,<6.0a0 + - libnsl >=2.0.1,<2.1.0a0 + - libsqlite >=3.48.0,<4.0a0 + - libuuid >=2.38.1,<3.0a0 + - libxcrypt >=4.4.36 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.4.1,<4.0a0 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + constrains: + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Python-2.0 + size: 31581682 + timestamp: 1739521496324 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.9-h1683364_0_cpython.conda + sha256: 0366f38918bceda8ff5917d7bbe1cea2bc8b6c74e7245eb0e4b0d3c2d37f76cf + md5: 2e7ad70254455e0508adabff10218512 + depends: + - bzip2 >=1.0.8,<2.0a0 + - ld_impl_linux-aarch64 >=2.36.1 + - libexpat >=2.6.4,<3.0a0 + - libffi >=3.4,<4.0a0 + - libgcc >=13 + - liblzma >=5.6.4,<6.0a0 + - libnsl >=2.0.1,<2.1.0a0 + - libsqlite >=3.48.0,<4.0a0 + - libuuid >=2.38.1,<3.0a0 + - libxcrypt >=4.4.36 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.4.1,<4.0a0 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + constrains: + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Python-2.0 + size: 13804161 + timestamp: 1739519531794 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.9-hc22306f_0_cpython.conda + sha256: cbf81a78d3ca6e663e827523e6ddbc28369cac488da047a28f83875eb52fe5f6 + md5: 1d105a6c46a753e3c0bab54a1ad24063 + depends: + - __osx >=11.0 + - bzip2 >=1.0.8,<2.0a0 + - libexpat >=2.6.4,<3.0a0 + - libffi >=3.4,<4.0a0 + - liblzma >=5.6.4,<6.0a0 + - libsqlite >=3.48.0,<4.0a0 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.4.1,<4.0a0 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + constrains: + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Python-2.0 + size: 12947786 + timestamp: 1739520092196 +- conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + sha256: a50052536f1ef8516ed11a844f9413661829aa083304dc624c5925298d078d79 + md5: 5ba79d7c71f03c678c8ead841f347d6e + depends: + - python >=3.9 + - six >=1.5 + license: Apache-2.0 + license_family: APACHE + size: 222505 + timestamp: 1733215763718 +- conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda + sha256: 99713f6b534fef94995c6c16fd21d59f3548784e9111775d692bdc7c44678f02 + md5: e5c6ed218664802d305e79cc2d4491de + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 24215 + timestamp: 1733243277223 +- conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda + sha256: 4790787fe1f4e8da616edca4acf6a4f8ed4e7c6967aa31b920208fc8f95efcca + md5: a61bf9ec79426938ff785eb69dbb1960 + depends: + - python >=3.6 + license: BSD-2-Clause + license_family: BSD + size: 13383 + timestamp: 1677079727691 +- conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.20-pyhff2d567_0.conda + sha256: 1b03678d145b1675b757cba165a0d9803885807792f7eb4495e48a38858c3cca + md5: a28c984e0429aff3ab7386f7de56de6f + depends: + - python >=3.9 + license: Apache-2.0 + license_family: Apache + size: 27913 + timestamp: 1734420869885 +- conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.1-pyhd8ed1ab_0.conda + sha256: 1597d6055d34e709ab8915091973552a0b8764c8032ede07c4e99670da029629 + md5: 392c91c42edd569a7ec99ed8648f597a + depends: + - python >=3.9 + license: Apache-2.0 + license_family: APACHE + size: 143794 + timestamp: 1737541204030 +- conda: https://conda.anaconda.org/conda-forge/linux-64/python-xxhash-3.5.0-py312h66e93f0_2.conda + sha256: b5950a737d200e2e3cf199ab7b474ac194fcf4d6bee13bcbdf32c5a5cca7eaf0 + md5: cc3f6c452697c1cf7e4e6e5f21861f96 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - xxhash >=0.8.3,<0.8.4.0a0 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + size: 23216 + timestamp: 1740594909669 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-xxhash-3.5.0-py312h52516f5_2.conda + sha256: b0c7528f2597e33911f179dad9852a4958683533570f8cc68976068b444461f4 + md5: c6de44ac405bf8a793c57850ea6b427a + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - xxhash >=0.8.3,<0.8.4.0a0 + arch: aarch64 + platform: linux + license: BSD-2-Clause + license_family: BSD + size: 23768 + timestamp: 1740595924431 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-xxhash-3.5.0-py312hea69d52_2.conda + sha256: 10c3df8dae696da4bd8532609999991ae1f3c4cc1a1e7f6a636cf6aa19d9eb82 + md5: b0c7097883bb4d8acfd72e7b9c6b93cd + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - xxhash >=0.8.3,<0.8.4.0a0 + arch: arm64 + platform: osx + license: BSD-2-Clause + license_family: BSD + size: 21947 + timestamp: 1740595129087 +- conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda + build_number: 5 + sha256: d10e93d759931ffb6372b45d65ff34d95c6000c61a07e298d162a3bc2accebb0 + md5: 0424ae29b104430108f5218a66db7260 + constrains: + - python 3.12.* *_cpython + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 6238 + timestamp: 1723823388266 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.12-5_cp312.conda + build_number: 5 + sha256: 5ccdad9981753cc4a2d126e356673a21c0cd5b34e209cb8d476a3947d4ad9b39 + md5: 62b20f305498284a07dc6c45fd0e5c87 + constrains: + - python 3.12.* *_cpython + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 6329 + timestamp: 1723823366253 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-5_cp312.conda + build_number: 5 + sha256: 49d624e4b809c799d2bf257b22c23cf3fc4460f5570d9a58e7ad86350aeaa1f4 + md5: b76f9b1c862128e56ac7aa8cd2333de9 + constrains: + - python 3.12.* *_cpython + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 6278 + timestamp: 1723823099686 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pytorch-2.5.1-cpu_mkl_py312_heeca0f5_113.conda + sha256: dca9058fc3fd8c7720815a60f91fbed21c96deed1862c0779cb9849010a615e0 + md5: 0d0917b3ad4dad39ee9cf2340b6913e7 + depends: + - __glibc >=2.17,<3.0.a0 + - _openmp_mutex >=4.5 + - filelock + - fsspec + - jinja2 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libblas * *mkl + - libcblas >=3.9.0,<4.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + - libtorch 2.5.1.* + - libuv >=1.50.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - mkl >=2024.2.2,<2025.0a0 + - networkx + - numpy >=1.19,<3 + - pybind11 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - setuptools + - sleef >=3.8,<4.0a0 + - sympy >=1.13.1,!=1.13.2 + - typing_extensions + constrains: + - pytorch-gpu ==99999999 + - pytorch-cpu ==2.5.1 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 27046950 + timestamp: 1739243439897 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pytorch-2.5.1-cpu_generic_py312_h819a134_13.conda + sha256: aca9f90080b41be87632b9be5c05d2d2583583cc8a88c2e4d9a755b4352443e8 + md5: 973311c703c92c0145a0ed6cd28ac1f0 + depends: + - _openmp_mutex >=4.5 + - filelock + - fsspec + - jinja2 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcblas >=3.9.0,<4.0a0 + - libgcc >=13 + - liblapack >=3.9.0,<4.0a0 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + - libtorch 2.5.1.* + - libuv >=1.50.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - networkx + - nomkl + - numpy >=1.19,<3 + - pybind11 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - setuptools + - sleef >=3.8,<4.0a0 + - sympy >=1.13.1,!=1.13.2 + - typing_extensions + constrains: + - pytorch-cpu ==2.5.1 + - pytorch-gpu ==99999999 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 26955065 + timestamp: 1739239589334 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pytorch-2.5.1-cpu_generic_py312_h49ed405_13.conda + sha256: 80ad77e98a4d91287b4c5aad62fb73c19fdcd3bf8a4c46f3630fdb3795b613ac + md5: 8a4ecdb698c36fa439757454437f44bd + depends: + - __osx >=11.0 + - filelock + - fsspec + - jinja2 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcblas >=3.9.0,<4.0a0 + - libcxx >=18 + - liblapack >=3.9.0,<4.0a0 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libtorch 2.5.1.* + - libuv >=1.50.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - llvm-openmp >=18.1.8 + - networkx + - nomkl + - numpy >=1.19,<3 + - pybind11 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - setuptools + - sleef >=3.8,<4.0a0 + - sympy >=1.13.1,!=1.13.2 + - typing_extensions + constrains: + - pytorch-gpu ==99999999 + - pytorch-cpu ==2.5.1 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 26176295 + timestamp: 1739248670305 +- conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda + sha256: 1a7d6b233f7e6e3bbcbad054c8fd51e690a67b129a899a056a5e45dd9f00cb41 + md5: 3eeeeb9e4827ace8c0c1419c85d590ad + depends: + - python >=3.7 + license: MIT + license_family: MIT + size: 188538 + timestamp: 1706886944988 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py312h178313f_2.conda + sha256: 159cba13a93b3fe084a1eb9bda0a07afc9148147647f0d437c3c3da60980503b + md5: cf2485f39740de96e2a7f2bb18ed2fee + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - yaml >=0.2.5,<0.3.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 206903 + timestamp: 1737454910324 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyyaml-6.0.2-py312hcc812fe_2.conda + sha256: dc78e41d51300722ba35ac4a10d37339ceffbe22d7501c71dfd3f633a4f8e79a + md5: 4de4a5ff81c941674e08595244e7cd61 + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - yaml >=0.2.5,<0.3.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 199172 + timestamp: 1737454840766 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py312h998013c_2.conda + sha256: ad225ad24bfd60f7719709791345042c3cb32da1692e62bd463b084cf140e00d + md5: 68149ed4d4e9e1c42d2ba1f27f08ca96 + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - yaml >=0.2.5,<0.3.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 192148 + timestamp: 1737454886351 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.1-py312hbf22597_0.conda + sha256: 90ec0da0317d3d76990a40c61e1709ef859dd3d8c63838bad2814f46a63c8a2e + md5: 7cec8d0dac15a2d9fea8e49879aa779d + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libsodium >=1.0.20,<1.0.21.0a0 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - zeromq >=4.3.5,<4.4.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 382698 + timestamp: 1738271121975 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyzmq-26.2.1-py312h2427ae1_0.conda + sha256: 9558f9330093e5c21b7c04e2e212e19b9b88ad9c808315f12c0765b244018a09 + md5: 0520da8de6870d8ff63e818e927d1524 + depends: + - libgcc >=13 + - libsodium >=1.0.20,<1.0.21.0a0 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - zeromq >=4.3.5,<4.4.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 375156 + timestamp: 1738273130727 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.1-py312hf4875e0_0.conda + sha256: 70d398b334668dc597d33e27847ede1b0829a639b9c91ee845355e52c86c2293 + md5: bfbefdb140b546a80827ff7c9d5ac7b8 + depends: + - __osx >=11.0 + - libcxx >=18 + - libsodium >=1.0.20,<1.0.21.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - zeromq >=4.3.5,<4.4.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 364649 + timestamp: 1738271263898 +- conda: https://conda.anaconda.org/conda-forge/linux-64/re2-2024.07.02-h9925aae_2.conda + sha256: d213c44958d49ce7e0d4d5b81afec23640cce5016685dbb2d23571a99caa4474 + md5: e84ddf12bde691e8ec894b00ea829ddf + depends: + - libre2-11 2024.07.02 hbbce691_2 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 26786 + timestamp: 1735541074034 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/re2-2024.07.02-haa97905_2.conda + sha256: 040848655df9119bae5a549fb5c8956a5537120859416c1d9d0712b7bac9f12e + md5: 1bf0135339b4a7419a198a795d2d4be0 + depends: + - libre2-11 2024.07.02 h18dbdb1_2 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 26830 + timestamp: 1735540999398 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/re2-2024.07.02-h6589ca4_2.conda + sha256: 4d3799c05f8f662922a0acd129d119774760a3281b883603678e128d1cb307fb + md5: 7a8b4ad8c58a3408ca89d78788c78178 + depends: + - libre2-11 2024.07.02 h07bc746_2 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 26861 + timestamp: 1735541088455 +- conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda + sha256: 2d6d0c026902561ed77cd646b5021aef2d4db22e57a5b0178dfc669231e06d2c + md5: 283b96675859b20a825f8fa30f311446 + depends: + - libgcc >=13 + - ncurses >=6.5,<7.0a0 + arch: x86_64 + platform: linux + license: GPL-3.0-only + license_family: GPL + size: 282480 + timestamp: 1740379431762 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8382b9d_2.conda + sha256: 54bed3a3041befaa9f5acde4a37b1a02f44705b7796689574bcf9d7beaad2959 + md5: c0f08fc2737967edde1a272d4bf41ed9 + depends: + - libgcc >=13 + - ncurses >=6.5,<7.0a0 + arch: aarch64 + platform: linux + license: GPL-3.0-only + license_family: GPL + size: 291806 + timestamp: 1740380591358 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda + sha256: 7db04684d3904f6151eff8673270922d31da1eea7fa73254d01c437f49702e34 + md5: 63ef3f6e6d6d5c589e64f11263dc5676 + depends: + - ncurses >=6.5,<7.0a0 + arch: arm64 + platform: osx + license: GPL-3.0-only + license_family: GPL + size: 252359 + timestamp: 1740379663071 +- conda: https://conda.anaconda.org/conda-forge/linux-64/regex-2024.11.6-py312h66e93f0_0.conda + sha256: fcb5687d3ec5fff580b64b8fb649d9d65c999a91a5c3108a313ecdd2de99f06b + md5: 647770db979b43f9c9ca25dcfa7dc4e4 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Python-2.0 + license_family: PSF + size: 402821 + timestamp: 1730952378415 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/regex-2024.11.6-py312hb2c0f52_0.conda + sha256: ec2c416860de29224e447e2031f8686a05476759c17da1f32f61d4307e540ec8 + md5: fa8b589107567f532fa1380e66f91776 + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Python-2.0 + license_family: PSF + size: 398947 + timestamp: 1730952477463 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/regex-2024.11.6-py312hea69d52_0.conda + sha256: dcdec32f2c7dd37986baa692bedf9db126ad34e92e5e9b64f707cba3d04d2525 + md5: e73cda1f18846b608284bd784f061eac + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Python-2.0 + license_family: PSF + size: 366374 + timestamp: 1730952427552 +- conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda + sha256: d701ca1136197aa121bbbe0e8c18db6b5c94acbd041c2b43c70e5ae104e1d8ad + md5: a9b9368f3701a417eac9edbcae7cb737 + depends: + - certifi >=2017.4.17 + - charset-normalizer >=2,<4 + - idna >=2.5,<4 + - python >=3.9 + - urllib3 >=1.21.1,<3 + constrains: + - chardet >=3.0.2,<6 + license: Apache-2.0 + license_family: APACHE + size: 58723 + timestamp: 1733217126197 +- conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_1.conda + sha256: 06a760c5ae572e72e865d5a87e9fe3cc171e1a9c996e63daf3db52ff1a0b4457 + md5: 7aed65d4ff222bfb7335997aa40b7da5 + depends: + - markdown-it-py >=2.2.0 + - pygments >=2.13.0,<3.0.0 + - python >=3.9 + - typing_extensions >=4.0.0,<5.0.0 + license: MIT + license_family: MIT + size: 185646 + timestamp: 1733342347277 +- conda: 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 +- conda: https://conda.anaconda.org/conda-forge/linux-64/s2n-1.5.11-h072c03f_0.conda + sha256: cfdd98c8f9a1e5b6f9abce5dac6d590cc9fe541a08466c9e4a26f90e00b569e3 + md5: 5e8060d52f676a40edef0006a75c718f + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - openssl >=3.4.0,<4.0a0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 356213 + timestamp: 1737146304079 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/s2n-1.5.11-h3caee7a_0.conda + sha256: 5a7ae66f96be24c3b2007139b6c3701ab015b4b4eb4eccfdd07be97710243a47 + md5: 1517c0518f8a06a48a15f41d94252874 + depends: + - libgcc >=13 + - openssl >=3.4.0,<4.0a0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 352811 + timestamp: 1737146319512 +- conda: https://conda.anaconda.org/conda-forge/linux-64/safetensors-0.5.3-py312h12e396e_0.conda + sha256: 23dec8105d34e51cc2269a79680a666351233e2dc171ff14c46d3455d2c22080 + md5: fd1fc1f1e6ceee16d9a58d3ff5a57c7f + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - __glibc >=2.17 + arch: x86_64 + platform: linux + license: Apache-2.0 + size: 431388 + timestamp: 1740651706122 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/safetensors-0.5.3-py312h8cbf658_0.conda + sha256: 24ca173b9f39d5e5cabc6ea7e570b500682669e5910510020549f8696e29992d + md5: eb2d82d057535f4fb3182f43df429495 + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - __glibc >=2.17 + arch: aarch64 + platform: linux + license: Apache-2.0 + size: 417509 + timestamp: 1740651719895 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/safetensors-0.5.3-py312hcd83bfe_0.conda + sha256: 1d0412be1b16df769c69d537907e690be50d06d05f757ba2451facb6883a3eb3 + md5: 68b99db908e1ec63c0cacae262a835e9 + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - __osx >=11.0 + arch: arm64 + platform: osx + license: Apache-2.0 + size: 382676 + timestamp: 1740651813281 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-0.2.0-hc8f76dd_10.conda + sha256: a1bde55ceb9dc5bd7879283d0f594a6ce65c07fda3de76230c65a4a5df47858a + md5: 480e915dfc6c592615ef6f217e615aa6 + depends: + - libsentencepiece 0.2.0 h8e10757_10 + - python_abi 3.12.* *_cp312 + - sentencepiece-python 0.2.0 py312hb6b8a2b_10 + - sentencepiece-spm 0.2.0 h8e10757_10 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 19470 + timestamp: 1735628377167 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-0.2.0-h6c1b121_10.conda + sha256: 846d885a560fbb4375b645e7caf2f756ef88bbeb441b670375da0090aaa427fb + md5: 33a89eb1dedae8eb7222b0a89856f337 + depends: + - libsentencepiece 0.2.0 h6164ad9_10 + - python_abi 3.12.* *_cp312 + - sentencepiece-python 0.2.0 py312h197ff68_10 + - sentencepiece-spm 0.2.0 h6164ad9_10 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 19686 + timestamp: 1735628718991 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-0.2.0-h22a84ea_10.conda + sha256: 526c934b897131bd274697649c3b1c492a7d66c03368885a954112468b3c1424 + md5: 346abe448f69949a65473b336856860a + depends: + - libsentencepiece 0.2.0 he13a0af_10 + - python_abi 3.12.* *_cp312 + - sentencepiece-python 0.2.0 py312h155166a_10 + - sentencepiece-spm 0.2.0 he13a0af_10 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 19759 + timestamp: 1735628533490 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-python-0.2.0-py312hb6b8a2b_10.conda + sha256: 37df7fb659564587b950b39c936769d9b5095afb7bc223f42d6248a5540c6567 + md5: 7908b7b977e2e123a5f6a29906f2ce44 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 h8e10757_10 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 2411182 + timestamp: 1735628106455 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-python-0.2.0-py312h197ff68_10.conda + sha256: a7c2c19cc397c7632e2630af49ddcff128f145c93ea493421e6f42bfa5e1d30b + md5: 5642e4545a3cf03e446fb3b3e9fd723b + depends: + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 h6164ad9_10 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 2458076 + timestamp: 1735628298246 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-python-0.2.0-py312h155166a_10.conda + sha256: 2d59614aeafbf54cc718805798c11c2d0a3b4b8d947d1bd81c87c484b4883077 + md5: 6e11367ef670296fce01fc9860be944d + depends: + - __osx >=11.0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 he13a0af_10 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 2433303 + timestamp: 1735628083958 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-spm-0.2.0-h8e10757_10.conda + sha256: 6b55e1121545357d63c3aa0766931720e8aafc52d88641ba7631c8cbaa68c52f + md5: e977b7be5ac26c55825e121e00b90493 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 h8e10757_10 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 89076 + timestamp: 1735628334078 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-spm-0.2.0-h6164ad9_10.conda + sha256: b98fc1028a8e8fbf309af383f9c837290a14e076e6c5533dc251694ea33ffc6e + md5: a4b75936c01dca3f089f02752b7ee325 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 h6164ad9_10 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 85983 + timestamp: 1735628693813 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-spm-0.2.0-he13a0af_10.conda + sha256: b760aeee02e2afbfcce3f559e8a227aa4c94139157b1702fdfb41a057dad0e52 + md5: 9b7300f23cd330da8664cd072c162e5f + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 he13a0af_10 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 83826 + timestamp: 1735628514667 +- conda: https://conda.anaconda.org/conda-forge/noarch/sentinel-1.0.0-pyh29332c3_0.conda + sha256: 87f7d70b0a29627ce7f78a463c6609156aaee638cca917b5f6c6c70828446acf + md5: 82e861633beabad680253e03918ec4a2 + depends: + - python >=3.9 + - python + constrains: + - varname >=0.1 + license: MIT + license_family: MIT + size: 13828 + timestamp: 1740445106343 +- conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.8.2-pyhff2d567_0.conda + sha256: 91d664ace7c22e787775069418daa9f232ee8bafdd0a6a080a5ed2395a6fa6b2 + md5: 9bddfdbf4e061821a1a443f93223be61 + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 777736 + timestamp: 1740654030775 +- conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda + sha256: 0557c090913aa63cdbe821dbdfa038a321b488e22bc80196c4b3b1aace4914ef + md5: 7c3c2a0f3ebdea2bbc35538d162b43bf + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 14462 + timestamp: 1733301007770 +- conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + sha256: 41db0180680cc67c3fa76544ffd48d6a5679d96f4b71d7498a759e94edc9a2db + md5: a451d576819089b0d672f18768be0f65 + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 16385 + timestamp: 1733381032766 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sleef-3.8-h1b44611_0.conda + sha256: c998d5a29848ce9ff1c53ba506e7d01bbd520c39bbe72e2fb7cdf5a53bad012f + md5: aec4dba5d4c2924730088753f6fa164b + depends: + - __glibc >=2.17,<3.0.a0 + - _openmp_mutex >=4.5 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: BSL-1.0 + size: 1920152 + timestamp: 1738089391074 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sleef-3.8-h8fb0607_0.conda + sha256: 86a19e4457bbc20d6c52a7cf0a010b2d99b704e78ae396f9fae4f4da9ae42cf3 + md5: 76647a886ead58ea5d82990117aafce2 + depends: + - _openmp_mutex >=4.5 + - libgcc >=13 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: BSL-1.0 + size: 1172391 + timestamp: 1738090891356 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sleef-3.8-h8391f65_0.conda + sha256: e8f26540b22fe2f1c9f44666a8fdf0786e7a40e8e69466d2567a53b106f6dff3 + md5: 6567410b336a7b8f775cd9157fb50d61 + depends: + - __osx >=11.0 + - libcxx >=18 + - llvm-openmp >=18.1.8 + arch: arm64 + platform: osx + license: BSL-1.0 + size: 584685 + timestamp: 1738089615902 +- conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-h8bd8927_1.conda + sha256: ec91e86eeb2c6bbf09d51351b851e945185d70661d2ada67204c9a6419d282d3 + md5: 3b3e64af585eadfb52bb90b553db5edf + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 42739 + timestamp: 1733501881851 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-hd4fb6f5_1.conda + sha256: c4a07ae5def8d55128f25a567a296ef9d7bf99a3bc79d46bd5160c076a5f50af + md5: 2fcc6cd1e5550deb509073fd2e6693e1 + depends: + - libgcc >=13 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 43032 + timestamp: 1733501964775 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-h98b9ce2_1.conda + sha256: 4242f95b215127a006eb664fe26ed5a82df87e90cbdbc7ce7ff4971f0720997f + md5: ded86dee325290da2967a3fea3800eb5 + depends: + - __osx >=11.0 + - libcxx >=18 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 35857 + timestamp: 1733502172664 +- conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda + sha256: c2248418c310bdd1719b186796ae50a8a77ce555228b6acd32768e2543a15012 + md5: bf7a226e58dfb8346c70df36065d86c9 + depends: + - python >=3.9 + license: Apache-2.0 + license_family: Apache + size: 15019 + timestamp: 1733244175724 +- conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.2.1-pyhd8ed1ab_0.conda + sha256: 3c6a476e7afb702d841e23c61a0c4cc491929d2e39376d329e67e94c40a236cc + md5: c1ef6bc13dd2caa4b406fb3cb06c2791 + depends: + - anyio >=4.7.0 + - python >=3.9 + - starlette >=0.41.3 + license: BSD-3-Clause + license_family: BSD + size: 15324 + timestamp: 1735126414893 +- conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.45.3-pyha770c72_0.conda + sha256: be48c99e6fb8e12ebee09e6fbb4d78a170b614cdaa19ab791a8f5b6caf09919a + md5: 9b3a68bc7aed7949ef86f950993261f4 + depends: + - anyio >=3.6.2,<5 + - python >=3.9 + - typing_extensions >=3.10.0 + license: BSD-3-Clause + license_family: BSD + size: 57934 + timestamp: 1737824077668 +- conda: https://conda.anaconda.org/conda-forge/noarch/sympy-1.13.3-pyh2585a3b_105.conda + sha256: 929d939c5a8bcdc10a17501890918da68cf14a5883b36fddf77b8f0fbf040be2 + md5: 254cd5083ffa04d96e3173397a3d30f4 + depends: + - __unix + - cpython + - gmpy2 >=2.0.8 + - mpmath >=0.19 + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 4523617 + timestamp: 1736248315124 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tbb-2021.13.0-hceb3a55_1.conda + sha256: 65463732129899770d54b1fbf30e1bb82fdebda9d7553caf08d23db4590cd691 + md5: ba7726b8df7b9d34ea80e82b097a4893 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libhwloc >=2.11.2,<2.11.3.0a0 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 175954 + timestamp: 1732982638805 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tiktoken-0.9.0-py312h14ff09d_0.conda + sha256: aba3affdd0f87e198185ddc0986aa59cb067832dc88ffa6dedbe127da4f8d7bf + md5: 0f116f56298be1450a9db6b45bd2d9a1 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - regex >=2022.1.18 + - requests >=2.26.0 + constrains: + - __glibc >=2.17 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 968542 + timestamp: 1739550580537 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tiktoken-0.9.0-py312h4a2a8a5_0.conda + sha256: 924de648f79b934172cbeafed35ef7413fbd9944c9a76291bbf835da1cfaa0af + md5: 2c8304aecaaced4bbcfc715a5ed16a1a + depends: + - libgcc >=13 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - regex >=2022.1.18 + - requests >=2.26.0 + constrains: + - __glibc >=2.17 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 916956 + timestamp: 1739553289605 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tiktoken-0.9.0-py312hf3e4074_0.conda + sha256: a4335c374e3af6c8ce3d0c413b7074c355e04059dca25853ef0961f4ae0ab39b + md5: ca9fecb880b6d35241324835804a98a0 + depends: + - __osx >=11.0 + - libcxx >=18 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - regex >=2022.1.18 + - requests >=2.26.0 + constrains: + - __osx >=11.0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 827008 + timestamp: 1739550849700 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda + sha256: e0569c9caa68bf476bead1bed3d79650bb080b532c64a4af7d8ca286c08dea4e + md5: d453b98d9c83e71da0741bb0ff4d76bc + depends: + - libgcc-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 + arch: x86_64 + platform: linux + license: TCL + license_family: BSD + size: 3318875 + timestamp: 1699202167581 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda + sha256: 7fa27cc512d3a783f38bd16bbbffc008807372499d5b65d089a8e43bde9db267 + md5: f75105e0585851f818e0009dd1dde4dc + depends: + - libgcc-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 + arch: aarch64 + platform: linux + license: TCL + license_family: BSD + size: 3351802 + timestamp: 1695506242997 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda + sha256: 72457ad031b4c048e5891f3f6cb27a53cb479db68a52d965f796910e71a403a8 + md5: b50a57ba89c32b62428b71a875291c9b + depends: + - libzlib >=1.2.13,<2.0.0a0 + arch: arm64 + platform: osx + license: TCL + license_family: BSD + size: 3145523 + timestamp: 1699202432999 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.21.0-py312h8360d73_0.conda + sha256: 4f504a5e9d77c6d88a8f735c4319429d8bf40b742384f908a2efe0a09acc3cc5 + md5: f953aa733207f3d37acf4a3efbedba89 + depends: + - __glibc >=2.17,<3.0.a0 + - huggingface_hub >=0.16.4,<1.0 + - libgcc >=13 + - libstdcxx >=13 + - openssl >=3.4.0,<4.0a0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - __glibc >=2.17 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 2258007 + timestamp: 1732734202127 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.21.0-py312ha0d6ea1_0.conda + sha256: ef0f4d4e2c798b1821187ea0ba4c86484e48abaa0e9a19fe68030fa7ff5dde84 + md5: 077f48c9e0c08a30d842e15c51df4143 + depends: + - huggingface_hub >=0.16.4,<1.0 + - libgcc >=13 + - libstdcxx >=13 + - openssl >=3.4.0,<4.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - __glibc >=2.17 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 2331194 + timestamp: 1732734303196 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.21.0-py312hf3e4074_0.conda + sha256: 5d395333fcb22dc611140286c1f2ea8b3fa220a4931c583587cb612238091555 + md5: 4c732c74b485ef7ac8ec1c548dd45e8e + depends: + - __osx >=11.0 + - huggingface_hub >=0.16.4,<1.0 + - libcxx >=18 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - __osx >=11.0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + size: 1931389 + timestamp: 1732734727624 +- conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda + sha256: 18636339a79656962723077df9a56c0ac7b8a864329eb8f847ee3d38495b863e + md5: ac944244f1fed2eb49bae07193ae8215 + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 19167 + timestamp: 1733256819729 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda + sha256: 062a3a3a37fa8615ce57929ba7e982c76f5a5810bcebd435950f6d6c4147c310 + md5: e417822cb989e80a0d2b1b576fdd1657 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 840414 + timestamp: 1732616043734 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py312h52516f5_0.conda + sha256: 4c19a544354172b2273553267e734795a6da3c78a04c2d19f8e9e159ca3178bc + md5: e28996d9d2d44d777b7e6fb12f63715b + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 841662 + timestamp: 1732616934923 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda + sha256: 964a2705a36c50040c967b18b45b9cc8de3c2aff4af546979a574e0b38e58e39 + md5: fb0605888a475d6a380ae1d1a819d976 + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 842549 + timestamp: 1732616081362 +- conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + sha256: 11e2c85468ae9902d24a27137b6b39b4a78099806e551d390e394a8c34b48e40 + md5: 9efbfdc37242619130ea42b1cc4ed861 + depends: + - colorama + - python >=3.9 + license: MPL-2.0 or MIT + size: 89498 + timestamp: 1735661472632 +- conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + sha256: f39a5620c6e8e9e98357507262a7869de2ae8cc07da8b7f84e517c9fd6c2b959 + md5: 019a7385be9af33791c989871317e1ed + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 110051 + timestamp: 1733367480074 +- conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.49.0-pyhd8ed1ab_0.conda + sha256: d522d7dda6ebe296b20955b1be3eccc5d5cfdfd413457c1236323b6a08fffd9e + md5: e63e78e545fcf857cac3372edeb67ea4 + depends: + - datasets !=2.5.0 + - filelock + - huggingface_hub >=0.23.0,<1.0 + - numpy >=1.17 + - packaging >=20.0 + - python >=3.9 + - pyyaml >=5.1 + - regex !=2019.12.17 + - requests + - safetensors >=0.4.1 + - tokenizers >=0.21,<0.22 + - tqdm >=4.27 + license: Apache-2.0 + license_family: APACHE + size: 3514640 + timestamp: 1739826374204 +- conda: https://conda.anaconda.org/conda-forge/linux-64/triton-3.2.0-cuda126py312h5a3d8a8_0.conda + sha256: de5ede47f60573582a3aa6dc840c91a6c2002f294df22032ca91575174d60a21 + md5: 9c6facebce2e8fd1f9559ad14dc9dced + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-cudart + - cuda-cuobjdump + - cuda-cupti >=12.6.80,<13.0a0 + - cuda-nvcc-tools + - cuda-version >=12.6,<13 + - libgcc >=13 + - libllvm20 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - setuptools + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 101169812 + timestamp: 1738676149595 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/triton-3.2.0-cuda126py312h1ed5fa8_0.conda + sha256: abd91d81df1ef4b70546da24bc3b01b1aa7a5228bb7d4b73b38abab9dac74bfe + md5: f0c67131cc86daae8adf3ac221ee3a48 + depends: + - cuda-cudart + - cuda-cuobjdump + - cuda-cupti >=12.6.80,<13.0a0 + - cuda-nvcc-tools + - cuda-version >=12.6,<13 + - libgcc >=13 + - libllvm20 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - setuptools + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 103306412 + timestamp: 1738676445445 +- conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda + sha256: ef695490e895c2ad552c77ec497b899b09fd4ad4ab07edcf5649f5994cf92a35 + md5: 170a0398946d8f5b454e592672b6fc20 + depends: + - python >=3.9 + - typer-slim-standard 0.15.1 hd8ed1ab_0 + license: MIT + license_family: MIT + size: 56175 + timestamp: 1733408582623 +- conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda + sha256: d4965516f35e0805199de6596c4ac76c4ad3d6b012be35e532102f9e53ecb860 + md5: 0218b16f5a1dd569e575a7a6415489db + depends: + - click >=8.0.0 + - python >=3.9 + - typing_extensions >=3.7.4.3 + constrains: + - rich >=10.11.0 + - typer >=0.15.1,<0.15.2.0a0 + - shellingham >=1.3.0 + license: MIT + license_family: MIT + size: 43592 + timestamp: 1733408569554 +- conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda + sha256: f31c56fe98315da8b9ce848256c17e0b9f87896b41a6ccf0c9cc74644dcef20f + md5: 4e603c43bfdfc7b533be087c3e070cc9 + depends: + - rich + - shellingham + - typer-slim 0.15.1 pyhd8ed1ab_0 + license: MIT + license_family: MIT + size: 49531 + timestamp: 1733408570063 +- conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda + noarch: python + sha256: c8e9c1c467b5f960b627d7adc1c65fece8e929a3de89967e91ef0f726422fd32 + md5: b6a408c64b78ec7b779a3e5c7a902433 + depends: + - typing_extensions 4.12.2 pyha770c72_1 + license: PSF-2.0 + license_family: PSF + size: 10075 + timestamp: 1733188758872 +- conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + sha256: 337be7af5af8b2817f115b3b68870208b30c31d3439bec07bfb2d8f4823e3568 + md5: d17f13df8b65464ca316cbc000a3cb64 + depends: + - python >=3.9 + license: PSF-2.0 + license_family: PSF + size: 39637 + timestamp: 1733188758212 +- conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + sha256: c4b1ae8a2931fe9b274c44af29c5475a85b37693999f8c792dad0f8c6734b1de + md5: dbcace4706afdfb7eb891f7b37d07c04 + license: LicenseRef-Public-Domain + size: 122921 + timestamp: 1737119101255 +- conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda + sha256: 114919ffa80c328127dab9c8e7a38f9d563c617691fb81fccb11c1e86763727e + md5: 32674f8dbfb7b26410ed580dd3c10a29 + depends: + - brotli-python >=1.0.9 + - h2 >=4,<5 + - pysocks >=1.5.6,<2.0,!=1.5.7 + - python >=3.9 + - zstandard >=0.18.0 + license: MIT + license_family: MIT + size: 100102 + timestamp: 1734859520452 +- conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.34.0-pyh31011fe_0.conda + sha256: 55c160b0cf9274e2b98bc0f7fcce548bffa8d788bc86aa02801877457040f6fa + md5: 5d448feee86e4740498ec8f8eb40e052 + depends: + - __unix + - click >=7.0 + - h11 >=0.8 + - python >=3.9 + - typing_extensions >=4.0 + license: BSD-3-Clause + license_family: BSD + size: 48643 + timestamp: 1734293057914 +- conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.34.0-h31011fe_0.conda + sha256: 87e1531e175e75122f9f37608eb953af4c977465ab0ae11283cc01fef954e4ec + md5: 32a94143a7f65d76d2d5da37dcb4ed79 + depends: + - __unix + - httptools >=0.6.3 + - python-dotenv >=0.13 + - pyyaml >=5.1 + - uvicorn 0.34.0 pyh31011fe_0 + - uvloop >=0.14.0,!=0.15.0,!=0.15.1 + - watchfiles >=0.13 + - websockets >=10.4 + license: BSD-3-Clause + license_family: BSD + size: 7203 + timestamp: 1734293058849 +- conda: https://conda.anaconda.org/conda-forge/linux-64/uvloop-0.21.0-py312h66e93f0_1.conda + sha256: 9337a80165fcf70b06b9d6ba920dad702260ca966419ae77560a15540e41ab72 + md5: 998e481e17c1b6a74572e73b06f2df08 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libuv >=1.49.2,<2.0a0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: MIT OR Apache-2.0 + size: 701355 + timestamp: 1730214506716 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/uvloop-0.21.0-py312hb2c0f52_1.conda + sha256: 807eede6698bd00a1d739a3e19ee6ae6a03a66d2ddd2ef150f2dfd198c3b0292 + md5: d83e107ba16c77aba2feec47b7b666a4 + depends: + - libgcc >=13 + - libuv >=1.49.2,<2.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: MIT OR Apache-2.0 + size: 655266 + timestamp: 1730214606664 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/uvloop-0.21.0-py312h0bf5046_1.conda + sha256: b1efa77aa4871d7bb09c8dd297fa9bd9070ba7f0f95f2d12ae9cdd31ce8b6b22 + md5: 4f5110253ba80ebf27e55c4ab333880a + depends: + - __osx >=11.0 + - libuv >=1.49.2,<2.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: MIT OR Apache-2.0 + size: 544097 + timestamp: 1730214653726 +- conda: https://conda.anaconda.org/conda-forge/linux-64/watchfiles-1.0.4-py312h12e396e_0.conda + sha256: b728f525dcae2c10524f9942255346eba62aee9c820ff269d7dd4f7caffb7ffb + md5: df87129c4cb7afc4a3cbad71a1b9e223 + depends: + - __glibc >=2.17,<3.0.a0 + - anyio >=3.0.0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - __glibc >=2.17 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 410192 + timestamp: 1736550568524 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/watchfiles-1.0.4-py312h8cbf658_0.conda + sha256: 45193910f6bafc287c784442d173745161b18f96223f0f990a9a744fda753787 + md5: ed958a27e610c31de625e167d4c11a04 + depends: + - anyio >=3.0.0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - __glibc >=2.17 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 403791 + timestamp: 1736550743174 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/watchfiles-1.0.4-py312hcd83bfe_0.conda + sha256: 84122e3712f2263e12c9d2be75d122eaf2d269801183df4b73aadcb670943b17 + md5: 946eb0208d09b811a671fad9b2831f4e + depends: + - __osx >=11.0 + - anyio >=3.0.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - __osx >=11.0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 363822 + timestamp: 1736550859472 +- conda: https://conda.anaconda.org/conda-forge/linux-64/websockets-15.0-py312h66e93f0_0.conda + sha256: 409a7a1d32e8ea23ee5233b2e95152cfaec8763aa9031f28cd8014594afc45df + md5: 5da55154de4cc82383f6bd52195db1c4 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 263350 + timestamp: 1739780619751 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/websockets-15.0-py312hb2c0f52_0.conda + sha256: 7fe6b6150410f57b442e6d130fc433959c436ada975b2f9e6352b902381ece99 + md5: 998b97a00d49748c249b749edbf27107 + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 264378 + timestamp: 1739780675487 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/websockets-15.0-py312hea69d52_0.conda + sha256: 70f511b2f9f3e0e05f2d403200a55470f9dabf87d8830b42d9ff697b9677c946 + md5: ae0c72f9ce03b54723f1cf7a4066d083 + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 264745 + timestamp: 1739780725559 +- conda: https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.17.2-py312h66e93f0_0.conda + sha256: ed3a1700ecc5d38c7e7dc7d2802df1bc1da6ba3d6f6017448b8ded0affb4ae00 + md5: 669e63af87710f8d52fdec9d4d63b404 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + size: 63590 + timestamp: 1736869574299 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/wrapt-1.17.2-py312hb2c0f52_0.conda + sha256: cc28914462a21b2f64d9b763a9733bfcbc811dd2975d0d2e6e429e35f5b6d59c + md5: 8a5c6e3f809bae085be369b62dc5d06a + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: BSD-2-Clause + license_family: BSD + size: 63967 + timestamp: 1736869675870 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/wrapt-1.17.2-py312hea69d52_0.conda + sha256: 6a3e68b57de29802e8703d1791dcacb7613bfdc17bbb087c6b2ea2796e6893ef + md5: e49608c832fcf438f70cbcae09c3adc5 + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: BSD-2-Clause + license_family: BSD + size: 61198 + timestamp: 1736869673767 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xgrammar-0.1.11-py312h6edf5ed_2.conda + sha256: ff584830ae7a0e3fb7929f1a7554ca3559c83d5e064aed717719647bcaf2189f + md5: 2e78c5fd9d1e586b0c635e02dbbaa761 + depends: + - triton + - pydantic + - python + - sentencepiece + - tiktoken + - pytorch + - transformers + - pytest + - libstdcxx >=13 + - libgcc >=13 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Apache-2.0 AND BSD-4-Clause + size: 4409669 + timestamp: 1740619132269 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xgrammar-0.1.11-py312hc94be92_2.conda + sha256: c283b9f9a73d77cfa806d276010dca62335428d11be170d61fc869b26a038b5a + md5: 1970aa1298826d9e2feb51d16368f5aa + depends: + - triton + - pydantic + - python + - sentencepiece + - tiktoken + - pytorch + - transformers + - pytest + - libgcc >=13 + - libstdcxx >=13 + - libgcc >=13 + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Apache-2.0 AND BSD-4-Clause + size: 4270904 + timestamp: 1740619375982 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/xgrammar-0.1.11-py312hd6dbf26_2.conda + sha256: a6801464fd31ddc4e87ae4b210db9cea1bd39e5b3f0d7cc48d9673d53685667b + md5: 41f1c12abe32475b267fcb349fa5f7ab + depends: + - pydantic + - python + - sentencepiece + - tiktoken + - pytorch + - transformers + - pytest + - __osx >=11.0 + - libcxx >=18 + - python 3.12.* *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Apache-2.0 AND BSD-4-Clause + size: 353403 + timestamp: 1740619156354 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-hb9d3cd8_0.conda + sha256: ed10c9283974d311855ae08a16dfd7e56241fac632aec3b92e3cfe73cff31038 + md5: f6ebe2cb3f82ba6c057dde5d9debe4f7 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 14780 + timestamp: 1734229004433 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxau-1.0.12-h86ecc28_0.conda + sha256: 7829a0019b99ba462aece7592d2d7f42e12d12ccd3b9614e529de6ddba453685 + md5: d5397424399a66d33c80b1f2345a36a6 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 15873 + timestamp: 1734230458294 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxau-1.0.12-h5505292_0.conda + sha256: f33e6f013fc36ebc200f09ddead83468544cb5c353a3b50499b07b8c34e28a8d + md5: 50901e0764b7701d8ed7343496f4f301 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 13593 + timestamp: 1734229104321 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb9d3cd8_0.conda + sha256: 6b250f3e59db07c2514057944a3ea2044d6a8cdde8a47b6497c254520fade1ee + md5: 8035c64cb77ed555e3f150b7b3972480 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 19901 + timestamp: 1727794976192 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxdmcp-1.1.5-h57736b2_0.conda + sha256: efcc150da5926cf244f757b8376d96a4db78bc15b8d90ca9f56ac6e75755971f + md5: 25a5a7b797fe6e084e04ffe2db02fc62 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 20615 + timestamp: 1727796660574 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxdmcp-1.1.5-hd74edd7_0.conda + sha256: 9939a166d780700d81023546759102b33fdc2c5f11ef09f5f66c77210fd334c8 + md5: 77c447f48cab5d3a15ac224edb86a968 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 18487 + timestamp: 1727795205022 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xxhash-0.8.3-hb9d3cd8_0.conda + sha256: 3bbc35b9ee44ffea1de441f906ba05139873a28325f8a8ed152e17af30e62232 + md5: 2ef1822d8168ed5d79ab1bf01088419a + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + size: 107794 + timestamp: 1735848927308 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xxhash-0.8.3-h86ecc28_0.conda + sha256: f210d0b6b8543acef9b73db43a557c94e695f9dfaa2f6989057c449d9c3e1239 + md5: d992916b6e4f6e7412332bbcd41c5aa2 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: BSD-2-Clause + license_family: BSD + size: 104556 + timestamp: 1735848964267 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/xxhash-0.8.3-h5505292_0.conda + sha256: 43573d504e7edc4b876a9058dc316aa9851ced1d433c2b569d583c2db22c76e2 + md5: 92a98c1bbae4729dfd0216ca22c21858 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: BSD-2-Clause + license_family: BSD + size: 98318 + timestamp: 1735849111725 +- conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 + sha256: a4e34c710eeb26945bdbdaba82d3d74f60a78f54a874ec10d373811a5d217535 + md5: 4cb3ad778ec2d5a7acbdf254eb1c42ae + depends: + - libgcc-ng >=9.4.0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 89141 + timestamp: 1641346969816 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yaml-0.2.5-hf897c2e_2.tar.bz2 + sha256: 8bc601d6dbe249eba44b3c456765265cd8f42ef1e778f8df9b0c9c88b8558d7e + md5: b853307650cb226731f653aa623936a4 + depends: + - libgcc-ng >=9.4.0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 92927 + timestamp: 1641347626613 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 + sha256: 93181a04ba8cfecfdfb162fc958436d868cc37db504c58078eab4c1a3e57fbb7 + md5: 4bb3f014845110883a3c5ee811fd84b4 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 88016 + timestamp: 1641347076660 +- conda: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.18.3-py312h178313f_1.conda + sha256: 6b054c93dd19fd7544af51b41a8eacca2ab62271f6c0c5a2a0cffe80dc37a0ce + md5: 6822c49f294d4355f19d314b8b6063d8 + depends: + - __glibc >=2.17,<3.0.a0 + - idna >=2.0 + - libgcc >=13 + - multidict >=4.0 + - propcache >=0.2.1 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 152305 + timestamp: 1737575898300 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.18.3-py312hcc812fe_1.conda + sha256: bfa211c0dd5dbb308788f055277dc428b7923ceb2de6a22ea98bc17cf306f9f5 + md5: d14c78abdd6109e2b7162f53b6cc1e77 + depends: + - idna >=2.0 + - libgcc >=13 + - multidict >=4.0 + - propcache >=0.2.1 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 149654 + timestamp: 1737576065314 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.18.3-py312h998013c_1.conda + sha256: 48821d23567ca0f853eee6f7812c74392867e123798b5b3c44f58758d8eb580e + md5: 092d3b40acc67c470f379049be343a7a + depends: + - __osx >=11.0 + - idna >=2.0 + - multidict >=4.0 + - propcache >=0.2.1 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 145543 + timestamp: 1737576074753 +- conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda + sha256: a4dc72c96848f764bb5a5176aa93dd1e9b9e52804137b99daeebba277b31ea10 + md5: 3947a35e916fcc6b9825449affbf4214 + depends: + - __glibc >=2.17,<3.0.a0 + - krb5 >=1.21.3,<1.22.0a0 + - libgcc >=13 + - libsodium >=1.0.20,<1.0.21.0a0 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: MPL-2.0 + license_family: MOZILLA + size: 335400 + timestamp: 1731585026517 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zeromq-4.3.5-h5efb499_7.conda + sha256: a6003096dc0570a86492040ba32b04ce7662b159600be2252b7a0dfb9414e21c + md5: f2f3282559a4b87b7256ecafb4610107 + depends: + - krb5 >=1.21.3,<1.22.0a0 + - libgcc >=13 + - libsodium >=1.0.20,<1.0.21.0a0 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: MPL-2.0 + license_family: MOZILLA + size: 371419 + timestamp: 1731589490850 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda + sha256: 9e585569fe2e7d3bea71972cd4b9f06b1a7ab8fa7c5139f92a31cbceecf25a8a + md5: f7e6b65943cb73bce0143737fded08f1 + depends: + - __osx >=11.0 + - krb5 >=1.21.3,<1.22.0a0 + - libcxx >=18 + - libsodium >=1.0.20,<1.0.21.0a0 + arch: arm64 + platform: osx + license: MPL-2.0 + license_family: MOZILLA + size: 281565 + timestamp: 1731585108039 +- conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + sha256: 567c04f124525c97a096b65769834b7acb047db24b15a56888a322bf3966c3e1 + md5: 0c3cc595284c5e8f0f9900a9b228a332 + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 21809 + timestamp: 1732827613585 +- conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.1-hb9d3cd8_2.conda + sha256: 5d7c0e5f0005f74112a34a7425179f4eb6e73c92f5d109e6af4ddeca407c92ab + md5: c9f075ab2f33b3bbee9e62d4ad0a6cd8 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libzlib 1.3.1 hb9d3cd8_2 + arch: x86_64 + platform: linux + license: Zlib + license_family: Other + size: 92286 + timestamp: 1727963153079 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zlib-1.3.1-h86ecc28_2.conda + sha256: b4f649aa3ecdae384d5dad7074e198bff120edd3dfb816588e31738fc6d627b1 + md5: bc230abb5d21b63ff4799b0e75204783 + depends: + - libgcc >=13 + - libzlib 1.3.1 h86ecc28_2 + arch: aarch64 + platform: linux + license: Zlib + license_family: Other + size: 95582 + timestamp: 1727963203597 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zlib-1.3.1-h8359307_2.conda + sha256: 58f8860756680a4831c1bf4f294e2354d187f2e999791d53b1941834c4b37430 + md5: e3170d898ca6cb48f1bb567afb92f775 + depends: + - __osx >=11.0 + - libzlib 1.3.1 h8359307_2 + arch: arm64 + platform: osx + license: Zlib + license_family: Other + size: 77606 + timestamp: 1727963209370 +- conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312hef9b889_1.conda + sha256: b97015e146437283f2213ff0e95abdc8e2480150634d81fbae6b96ee09f5e50b + md5: 8b7069e9792ee4e5b4919a7a306d2e67 + depends: + - __glibc >=2.17,<3.0.a0 + - cffi >=1.11 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - zstd >=1.5.6,<1.5.7.0a0 + - zstd >=1.5.6,<1.6.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 419552 + timestamp: 1725305670210 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstandard-0.23.0-py312hb698573_1.conda + sha256: 2681c2a249752bdc7978e59ee2f34fcdfcbfda80029b84b8e5fec8dbc9e3af25 + md5: ffcb8e97e62af42075e0e5f46bb9856e + depends: + - cffi >=1.11 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - zstd >=1.5.6,<1.5.7.0a0 + - zstd >=1.5.6,<1.6.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 392496 + timestamp: 1725305808244 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py312h15fbf35_1.conda + sha256: d00ca25c1e28fd31199b26a94f8c96574475704a825d244d7a6351ad3745eeeb + md5: a4cde595509a7ad9c13b1a3809bcfe51 + depends: + - __osx >=11.0 + - cffi >=1.11 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - zstd >=1.5.6,<1.5.7.0a0 + - zstd >=1.5.6,<1.6.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 330788 + timestamp: 1725305806565 +- conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda + sha256: c558b9cc01d9c1444031bd1ce4b9cff86f9085765f17627a6cd85fc623c8a02b + md5: 4d056880988120e29d75bfff282e0f45 + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 554846 + timestamp: 1714722996770 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.6-h02f22dd_0.conda + sha256: 484f9d0722c77685ae379fbff3ccd662af9ead7e59eb39cd6d0c677cdf25ff6c + md5: be8d5f8cf21aed237b8b182ea86b3dd6 + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 539937 + timestamp: 1714723130243 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.6-hb46c0d2_0.conda + sha256: 2d4fd1ff7ee79cd954ca8e81abf11d9d49954dd1fef80f27289e2402ae9c2e09 + md5: d96942c06c3e84bfcc5efb038724a7fd + depends: + - __osx >=11.0 + - libzlib >=1.2.13,<2.0.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 405089 + timestamp: 1714723101397 diff --git a/mojo/magic.lock b/mojo/magic.lock new file mode 100644 index 0000000000..7c733a088a --- /dev/null +++ b/mojo/magic.lock @@ -0,0 +1,2194 @@ +version: 6 +environments: + default: + channels: + - url: https://conda.anaconda.org/conda-forge/ + - url: https://conda.modular.com/max-nightly/ + packages: + linux-64: + - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2025.1.31-hbcca054_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-31_h59b9bed_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-31_he106b2a_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h767d61c_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hf1ad2bd_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h767d61c_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-31_h7ac8fdf_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.29-pthreads_h94d23a6_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsentencepiece-0.2.0-h8e10757_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.49.1-hee588c1_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-h8f9b012_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/lit-19.1.7-pyhd8ed1ab_1.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022718-release.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-h2d0b736_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.1-h7b32b05_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.9-h9e4cc4f_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.1-py312hbf22597_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-0.2.0-hc8f76dd_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-python-0.2.0-py312hb6b8a2b_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-spm-0.2.0-h8e10757_10.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + linux-aarch64: + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h68df207_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2025.1.31-hcefe29a_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/keyutils-1.6.1-h4e544f5_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/krb5-1.21.3-h50a48e9_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h18dbdb1_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-31_h1a9f1db_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-31_hab92f65_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20250104-pl5321h976ea20_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.6.4-h5ad3122_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.4.6-he21f813_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-14.2.0-he277a41_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-14.2.0-he9431aa_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-31_h411afd4_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.4-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.29-pthreads_h9d3fd7e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.3-h44a3b7b_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsentencepiece-0.2.0-h6164ad9_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.20-h68df207_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.49.1-h5eb1b54_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/lit-19.1.7-pyhd8ed1ab_1.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022718-release.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-ha32ae93_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.1-hd08dc88_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.9-h1683364_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.12-5_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyzmq-26.2.1-py312h2427ae1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8382b9d_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-0.2.0-h6c1b121_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-python-0.2.0-py312h197ff68_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-spm-0.2.0-h6164ad9_10.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py312h52516f5_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zeromq-4.3.5-h5efb499_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + osx-arm64: + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2025.1.31-hf0a4a13_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_h07bc746_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-31_h10e41b3_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-31_hb3479ef_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.4-h286801f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-31_hc9a63f6_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.4-h39f12f2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.29-openmp_hf332438_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.3-h3bd63a1_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsentencepiece-0.2.0-he13a0af_10.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.1-h3f77e49_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/lit-19.1.7-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022718-release.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.1-h81ee809_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.9-hc22306f_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-5_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.1-py312hf4875e0_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-0.2.0-h22a84ea_10.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-python-0.2.0-py312h155166a_10.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-spm-0.2.0-he13a0af_10.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda +packages: +- conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 + sha256: fe51de6107f9edc7aa4f786a70f4a883943bc9d39b3bb7307c04c41410990726 + md5: d7c89558ba9fa0495403155b64376d81 + arch: x86_64 + platform: linux + license: None + size: 2562 + timestamp: 1578324546067 +- conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 + build_number: 16 + sha256: fbe2c5e56a653bebb982eda4876a9178aedfc2b545f25d0ce9c4c0b508253d22 + md5: 73aaf86a425cc6e73fcf236a5a46396d + depends: + - _libgcc_mutex 0.1 conda_forge + - libgomp >=7.5.0 + constrains: + - openmp_impl 9999 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 23621 + timestamp: 1650670423406 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2 + build_number: 16 + sha256: 3702bef2f0a4d38bd8288bbe54aace623602a1343c2cfbefd3fa188e015bebf0 + md5: 6168d71addc746e8f2b8d57dfd2edcea + depends: + - libgomp >=7.5.0 + constrains: + - openmp_impl 9999 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 23712 + timestamp: 1650670790230 +- conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda + sha256: 5ced96500d945fb286c9c838e54fa759aa04a7129c59800f0846b4335cee770d + md5: 62ee74e96c5ebb0af99386de58cf9553 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: bzip2-1.0.6 + license_family: BSD + size: 252783 + timestamp: 1720974456583 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h68df207_7.conda + sha256: 2258b0b33e1cb3a9852d47557984abb6e7ea58e3d7f92706ec1f8e879290c4cb + md5: 56398c28220513b9ea13d7b450acfb20 + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: bzip2-1.0.6 + license_family: BSD + size: 189884 + timestamp: 1720974504976 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda + sha256: adfa71f158cbd872a36394c56c3568e6034aa55c623634b37a4836bd036e6b91 + md5: fc6948412dbbbe9a4c9ddbbcfe0a79ab + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: bzip2-1.0.6 + license_family: BSD + size: 122909 + timestamp: 1720974522888 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2025.1.31-hbcca054_0.conda + sha256: bf832198976d559ab44d6cdb315642655547e26d826e34da67cbee6624cda189 + md5: 19f3a56f68d2fd06c516076bff482c52 + arch: x86_64 + platform: linux + license: ISC + size: 158144 + timestamp: 1738298224464 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2025.1.31-hcefe29a_0.conda + sha256: 66c6408ee461593cfdb2d78d82e6ed74d04a04ccb51df3ef8a5f35148c9c6eec + md5: 462cb166cd2e26a396f856510a3aff67 + arch: aarch64 + platform: linux + license: ISC + size: 158290 + timestamp: 1738299057652 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2025.1.31-hf0a4a13_0.conda + sha256: 7e12816618173fe70f5c638b72adf4bfd4ddabf27794369bb17871c5bb75b9f9 + md5: 3569d6a9141adc64d2fe4797f3289e06 + arch: arm64 + platform: osx + license: ISC + size: 158425 + timestamp: 1738298167688 +- conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda + sha256: c920d23cd1fcf565031c679adb62d848af60d6fbb0edc2d50ba475cea4f0d8ab + md5: f22f4d4970e09d68a10b922cbb0408d3 + depends: + - __unix + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 84705 + timestamp: 1734858922844 +- conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + sha256: ab29d57dc70786c1269633ba3dff20288b81664d3ff8d21af995742e2bb03287 + md5: 962b9857ee8e7018c22f2776ffa0b2d7 + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 27011 + timestamp: 1733218222191 +- conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + sha256: 598951ebdb23e25e4cec4bbff0ae369cec65ead80b50bc08b441d8e54de5cf03 + md5: f4b39bf00c69f56ac01e020ebfac066c + depends: + - python >=3.9 + - zipp >=0.5 + license: Apache-2.0 + license_family: APACHE + size: 29141 + timestamp: 1737420302391 +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + sha256: 19d8bd5bb2fde910ec59e081eeb59529491995ce0d653a5209366611023a0b3a + md5: 4ebae00eae9705b0c3d6d1018a81d047 + depends: + - importlib-metadata >=4.8.3 + - jupyter_core >=4.12,!=5.0.* + - python >=3.9 + - python-dateutil >=2.8.2 + - pyzmq >=23.0 + - tornado >=6.2 + - traitlets >=5.3 + license: BSD-3-Clause + license_family: BSD + size: 106342 + timestamp: 1733441040958 +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + sha256: 732b1e8536bc22a5a174baa79842d79db2f4956d90293dd82dc1b3f6099bcccd + md5: 0a2980dada0dd7fd0998f0342308b1b1 + depends: + - __unix + - platformdirs >=2.5 + - python >=3.8 + - traitlets >=5.3 + license: BSD-3-Clause + license_family: BSD + size: 57671 + timestamp: 1727163547058 +- conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 + sha256: 150c05a6e538610ca7c43beb3a40d65c90537497a4f6a5f4d15ec0451b6f5ebb + md5: 30186d27e2c9fa62b45fb1476b7200e3 + depends: + - libgcc-ng >=10.3.0 + arch: x86_64 + platform: linux + license: LGPL-2.1-or-later + size: 117831 + timestamp: 1646151697040 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/keyutils-1.6.1-h4e544f5_0.tar.bz2 + sha256: 6d4233d97a9b38acbb26e1268bcf8c10a8e79c2aed7e5a385ec3769967e3e65b + md5: 1f24853e59c68892452ef94ddd8afd4b + depends: + - libgcc-ng >=10.3.0 + arch: aarch64 + platform: linux + license: LGPL-2.1-or-later + size: 112327 + timestamp: 1646166857935 +- conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda + sha256: 99df692f7a8a5c27cd14b5fb1374ee55e756631b9c3d659ed3ee60830249b238 + md5: 3f43953b7d3fb3aaa1d0d0723d91e368 + depends: + - keyutils >=1.6.1,<2.0a0 + - libedit >=3.1.20191231,<3.2.0a0 + - libedit >=3.1.20191231,<4.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - openssl >=3.3.1,<4.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 1370023 + timestamp: 1719463201255 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/krb5-1.21.3-h50a48e9_0.conda + sha256: 0ec272afcf7ea7fbf007e07a3b4678384b7da4047348107b2ae02630a570a815 + md5: 29c10432a2ca1472b53f299ffb2ffa37 + depends: + - keyutils >=1.6.1,<2.0a0 + - libedit >=3.1.20191231,<3.2.0a0 + - libedit >=3.1.20191231,<4.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - openssl >=3.3.1,<4.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 1474620 + timestamp: 1719463205834 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda + sha256: 4442f957c3c77d69d9da3521268cad5d54c9033f1a73f99cde0a3658937b159b + md5: c6dc8a0fdec13a0565936655c33069a1 + depends: + - __osx >=11.0 + - libcxx >=16 + - libedit >=3.1.20191231,<3.2.0a0 + - libedit >=3.1.20191231,<4.0a0 + - openssl >=3.3.1,<4.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 1155530 + timestamp: 1719463474401 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_4.conda + sha256: db73f38155d901a610b2320525b9dd3b31e4949215c870685fd92ea61b5ce472 + md5: 01f8d123c96816249efd255a31ad7712 + depends: + - __glibc >=2.17,<3.0.a0 + constrains: + - binutils_impl_linux-64 2.43 + arch: x86_64 + platform: linux + license: GPL-3.0-only + license_family: GPL + size: 671240 + timestamp: 1740155456116 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_4.conda + sha256: 016832a70b0aa97e1c4e47e23c00b0c34def679de25146736df353199f684f0d + md5: 80c9ad5e05e91bb6c0967af3880c9742 + constrains: + - binutils_impl_linux-aarch64 2.43 + arch: aarch64 + platform: linux + license: GPL-3.0-only + license_family: GPL + size: 699058 + timestamp: 1740155620594 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda + sha256: 143a586aa67d50622ef703de57b9d43f44945836d6568e0e7aa174bd8c45e0d4 + md5: 488f260ccda0afaf08acb286db439c2f + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + constrains: + - libabseil-static =20240722.0=cxx17* + - abseil-cpp =20240722.0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 1311599 + timestamp: 1736008414161 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h18dbdb1_4.conda + sha256: bb6c5fb3b8de5f90735c5252b57efb3c268ee222c755569dac18065f05147670 + md5: 633b9fe454ffea2aaf29e191d946a83b + depends: + - libgcc >=13 + - libstdcxx >=13 + constrains: + - abseil-cpp =20240722.0 + - libabseil-static =20240722.0=cxx17* + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 1334844 + timestamp: 1736008472455 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_h07bc746_4.conda + sha256: 05fa5e5e908962b9c5aba95f962e2ca81d9599c4715aebe5e4ddb72b309d1770 + md5: c2d95bd7aa8d564a9bd7eca5e571a5b3 + depends: + - __osx >=11.0 + - libcxx >=18 + constrains: + - libabseil-static =20240722.0=cxx17* + - abseil-cpp =20240722.0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 1178260 + timestamp: 1736008642885 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-31_h59b9bed_openblas.conda + build_number: 31 + sha256: 9839fc4ac0cbb0aa3b9eea520adfb57311838959222654804e58f6f2d1771db5 + md5: 728dbebd0f7a20337218beacffd37916 + depends: + - libopenblas >=0.3.29,<0.3.30.0a0 + - libopenblas >=0.3.29,<1.0a0 + constrains: + - liblapacke =3.9.0=31*_openblas + - liblapack =3.9.0=31*_openblas + - blas =2.131=openblas + - mkl <2025 + - libcblas =3.9.0=31*_openblas + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 16859 + timestamp: 1740087969120 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-31_h1a9f1db_openblas.conda + build_number: 31 + sha256: 67c9c81dd0444ecc712124034d9f74186ca82fd770b3df46b1a68564461c6a1a + md5: 48bd5bf15ccf3e409840be9caafc0ad5 + depends: + - libopenblas >=0.3.29,<0.3.30.0a0 + - libopenblas >=0.3.29,<1.0a0 + constrains: + - liblapack =3.9.0=31*_openblas + - blas =2.131=openblas + - libcblas =3.9.0=31*_openblas + - mkl <2025 + - liblapacke =3.9.0=31*_openblas + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 16915 + timestamp: 1740087911042 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-31_h10e41b3_openblas.conda + build_number: 31 + sha256: 369586e7688b59b4f92c709b99d847d66d4d095425db327dd32ee5e6ab74697f + md5: 39b053da5e7035c6592102280aa7612a + depends: + - libopenblas >=0.3.29,<0.3.30.0a0 + - libopenblas >=0.3.29,<1.0a0 + constrains: + - liblapacke =3.9.0=31*_openblas + - libcblas =3.9.0=31*_openblas + - blas =2.131=openblas + - mkl <2025 + - liblapack =3.9.0=31*_openblas + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 17123 + timestamp: 1740088119350 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-31_he106b2a_openblas.conda + build_number: 31 + sha256: ede8545011f5b208b151fe3e883eb4e31d495ab925ab7b9ce394edca846e0c0d + md5: abb32c727da370c481a1c206f5159ce9 + depends: + - libblas 3.9.0 31_h59b9bed_openblas + constrains: + - liblapacke =3.9.0=31*_openblas + - liblapack =3.9.0=31*_openblas + - blas =2.131=openblas + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 16796 + timestamp: 1740087984429 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-31_hab92f65_openblas.conda + build_number: 31 + sha256: f0457a1d2982f0a28bfbadaa02621677c324e88f7c8198c24fb3e3214c468dba + md5: 6b81dbae56a519f1ec2f25e0ee2f4334 + depends: + - libblas 3.9.0 31_h1a9f1db_openblas + constrains: + - liblapack =3.9.0=31*_openblas + - blas =2.131=openblas + - liblapacke =3.9.0=31*_openblas + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 16824 + timestamp: 1740087917500 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-31_hb3479ef_openblas.conda + build_number: 31 + sha256: f237486cc9118d09d0f3ff8820280de34365f98ee7b7dc5ab923b04c7cbf25a5 + md5: 7353c2bf0e90834cb70545671996d871 + depends: + - libblas 3.9.0 31_h10e41b3_openblas + constrains: + - liblapacke =3.9.0=31*_openblas + - blas =2.131=openblas + - liblapack =3.9.0=31*_openblas + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 17032 + timestamp: 1740088127097 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda + sha256: 776092346da87a2a23502e14d91eb0c32699c4a1522b7331537bd1c3751dcff5 + md5: 5b3e1610ff8bd5443476b91d618f5b77 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + size: 523505 + timestamp: 1736877862502 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda + sha256: d789471216e7aba3c184cd054ed61ce3f6dac6f87a50ec69291b9297f8c18724 + md5: c277e0a4d549b03ac1e9d6cbbe3d017b + depends: + - ncurses + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - ncurses >=6.5,<7.0a0 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + size: 134676 + timestamp: 1738479519902 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20250104-pl5321h976ea20_0.conda + sha256: c0b27546aa3a23d47919226b3a1635fccdb4f24b94e72e206a751b33f46fd8d6 + md5: fb640d776fc92b682a14e001980825b1 + depends: + - ncurses + - libgcc >=13 + - ncurses >=6.5,<7.0a0 + arch: aarch64 + platform: linux + license: BSD-2-Clause + license_family: BSD + size: 148125 + timestamp: 1738479808948 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda + sha256: 66aa216a403de0bb0c1340a88d1a06adaff66bae2cfd196731aa24db9859d631 + md5: 44083d2d2c2025afca315c7a172eab2b + depends: + - ncurses + - __osx >=11.0 + - ncurses >=6.5,<7.0a0 + arch: arm64 + platform: osx + license: BSD-2-Clause + license_family: BSD + size: 107691 + timestamp: 1738479560845 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda + sha256: 56541b98447b58e52d824bd59d6382d609e11de1f8adf20b23143e353d2b8d26 + md5: db833e03127376d461e1e13e76f09b6c + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + constrains: + - expat 2.6.4.* + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 73304 + timestamp: 1730967041968 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.6.4-h5ad3122_0.conda + sha256: f42e758009ba9db90d1fe7992bc3e60d0c52f71fb20923375d2c44ae69a5a2b3 + md5: f1b3fab36861b3ce945a13f0dfdfc688 + depends: + - libgcc >=13 + constrains: + - expat 2.6.4.* + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 72345 + timestamp: 1730967203789 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.4-h286801f_0.conda + sha256: e42ab5ace927ee7c84e3f0f7d813671e1cf3529f5f06ee5899606630498c2745 + md5: 38d2656dd914feb0cab8c629370768bf + depends: + - __osx >=11.0 + constrains: + - expat 2.6.4.* + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 64693 + timestamp: 1730967175868 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_0.conda + sha256: 67a6c95e33ebc763c1adc3455b9a9ecde901850eb2fceb8e646cc05ef3a663da + md5: e3eb7806380bc8bcecba6d749ad5f026 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 53415 + timestamp: 1739260413716 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.4.6-he21f813_0.conda + sha256: 41568066beefe7b319ff27d85952242e5b77fb753d705b8716041959e17c35c2 + md5: 966084fccf3ad62a3160666cda869f28 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 51513 + timestamp: 1739260449772 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 + sha256: 41b3d13efb775e340e4dba549ab5c029611ea6918703096b2eaa9c015c0750ca + md5: 086914b672be056eb70fd4285b6783b6 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 39020 + timestamp: 1636488587153 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h767d61c_2.conda + sha256: 3a572d031cb86deb541d15c1875aaa097baefc0c580b54dc61f5edab99215792 + md5: ef504d1acbd74b7cc6849ef8af47dd03 + depends: + - __glibc >=2.17,<3.0.a0 + - _openmp_mutex >=4.5 + constrains: + - libgomp 14.2.0 h767d61c_2 + - libgcc-ng ==14.2.0=*_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 847885 + timestamp: 1740240653082 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-14.2.0-he277a41_2.conda + sha256: a57f7f9ba2a12f56eafdcd25b6d75f7be10b8fc1a802a58b76a77ca8c66f4503 + md5: 6b4268a60b10f29257b51b9b67ff8d76 + depends: + - _openmp_mutex >=4.5 + constrains: + - libgcc-ng ==14.2.0=*_2 + - libgomp 14.2.0 he277a41_2 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 535507 + timestamp: 1740241069780 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_2.conda + sha256: fb7558c328b38b2f9d2e412c48da7890e7721ba018d733ebdfea57280df01904 + md5: a2222a6ada71fb478682efe483ce0f92 + depends: + - libgcc 14.2.0 h767d61c_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 53758 + timestamp: 1740240660904 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-14.2.0-he9431aa_2.conda + sha256: 9647f75cddc18b07eebe6e1f21500eed50a6af2c43c84e831b4c7a597e10d226 + md5: 692c2bb75f32cfafb6799cf6d1c5d0e0 + depends: + - libgcc 14.2.0 he277a41_2 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 53622 + timestamp: 1740241074834 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_2.conda + sha256: e05263e8960da03c341650f2a3ffa4ccae4e111cb198e8933a2908125459e5a6 + md5: fb54c4ea68b460c278d26eea89cfbcc3 + depends: + - libgfortran5 14.2.0 hf1ad2bd_2 + constrains: + - libgfortran-ng ==14.2.0=*_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 53733 + timestamp: 1740240690977 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_2.conda + sha256: 996d3c0505301901a7ab23b5e7daad21635d1c065240bb0f4faf7e4f75d7f49d + md5: d8b9d9dc0c8cd97d375b48e55947ba70 + depends: + - libgfortran5 14.2.0 hb6113d0_2 + constrains: + - libgfortran-ng ==14.2.0=*_2 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 53611 + timestamp: 1740241100147 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda + sha256: 44e541b4821c96b28b27fef5630883a60ce4fee91fd9c79f25a199f8f73f337b + md5: 4a55d9e169114b2b90d3ec4604cd7bbf + depends: + - libgfortran5 13.2.0 hf226fd6_3 + arch: arm64 + platform: osx + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 110233 + timestamp: 1707330749033 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hf1ad2bd_2.conda + sha256: c17b7cf3073a1f4e1f34d50872934fa326346e104d3c445abc1e62481ad6085c + md5: 556a4fdfac7287d349b8f09aba899693 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14.2.0 + constrains: + - libgfortran 14.2.0 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 1461978 + timestamp: 1740240671964 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_2.conda + sha256: 7b9e1d3666a00e5a52e5d43c003bd1c73ab472804be513c070aaedca9c4c2a9a + md5: cd754566661513808ef2408c4ab99a2f + depends: + - libgcc >=14.2.0 + constrains: + - libgfortran 14.2.0 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 1100765 + timestamp: 1740241083241 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda + sha256: bafc679eedb468a86aa4636061c55966186399ee0a04b605920d208d97ac579a + md5: 66ac81d54e95c534ae488726c1f698ea + depends: + - llvm-openmp >=8.0.0 + constrains: + - libgfortran 5.0.0 13_2_0_*_3 + arch: arm64 + platform: osx + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 997381 + timestamp: 1707330687590 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h767d61c_2.conda + sha256: 1a3130e0b9267e781b89399580f3163632d59fe5b0142900d63052ab1a53490e + md5: 06d02030237f4d5b3d9a7e7d348fe3c6 + depends: + - __glibc >=2.17,<3.0.a0 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 459862 + timestamp: 1740240588123 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_2.conda + sha256: 4e303711fb7413bf98995beac58e731073099d7a669a3b81e49330ca8da05174 + md5: b11c09d9463daf4cae492d29806b1889 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 462783 + timestamp: 1740241005079 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-31_h7ac8fdf_openblas.conda + build_number: 31 + sha256: f583661921456e798aba10972a8abbd9d33571c655c1f66eff450edc9cbefcf3 + md5: 452b98eafe050ecff932f0ec832dd03f + depends: + - libblas 3.9.0 31_h59b9bed_openblas + constrains: + - libcblas =3.9.0=31*_openblas + - liblapacke =3.9.0=31*_openblas + - blas =2.131=openblas + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 16790 + timestamp: 1740087997375 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-31_h411afd4_openblas.conda + build_number: 31 + sha256: 27613828ff6fb258b2e58802617df549f00089660ea8ab6c55c68f042c570162 + md5: 41dbff5eb805a75c120a7b7a1c744dc2 + depends: + - libblas 3.9.0 31_h1a9f1db_openblas + constrains: + - blas =2.131=openblas + - libcblas =3.9.0=31*_openblas + - liblapacke =3.9.0=31*_openblas + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 16845 + timestamp: 1740087923843 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-31_hc9a63f6_openblas.conda + build_number: 31 + sha256: fe55b9aaf82c6c0192c3d1fcc9b8e884f97492dda9a8de5dae29334b3135fab5 + md5: ff57a55a2cbce171ef5707fb463caf19 + depends: + - libblas 3.9.0 31_h10e41b3_openblas + constrains: + - liblapacke =3.9.0=31*_openblas + - libcblas =3.9.0=31*_openblas + - blas =2.131=openblas + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 17033 + timestamp: 1740088134988 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda + sha256: cad52e10319ca4585bc37f0bc7cce99ec7c15dc9168e42ccb96b741b0a27db3f + md5: 42d5b6a0f30d3c10cd88cb8584fda1cb + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: 0BSD + size: 111357 + timestamp: 1738525339684 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.4-h86ecc28_0.conda + sha256: 96413664f0fade54a4931940d18749cfc8e6308349dbb0cb83adb2394ca1f730 + md5: b88244e0a115cc34f7fbca9b11248e76 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: 0BSD + size: 124197 + timestamp: 1738528201520 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.4-h39f12f2_0.conda + sha256: 560c59d3834cc652a84fb45531bd335ad06e271b34ebc216e380a89798fe8e2c + md5: e3fd1f8320a100f2b210e690a57cd615 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: 0BSD + size: 98945 + timestamp: 1738525462560 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda + sha256: 26d77a3bb4dceeedc2a41bd688564fe71bf2d149fdcf117049970bc02ff1add6 + md5: 30fd6e37fe21f86f4bd26d6ee73eeec7 + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: LGPL-2.1-only + license_family: GPL + size: 33408 + timestamp: 1697359010159 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda + sha256: fd18c2b75d7411096428d36a70b36b1a17e31f7b8956b6905d145792d49e97f8 + md5: c14f32510f694e3185704d89967ec422 + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: LGPL-2.1-only + license_family: GPL + size: 34501 + timestamp: 1697358973269 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.29-pthreads_h94d23a6_0.conda + sha256: cc5389ea254f111ef17a53df75e8e5209ef2ea6117e3f8aced88b5a8e51f11c4 + md5: 0a4d0252248ef9a0f88f2ba8b8a08e12 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libgfortran + - libgfortran5 >=14.2.0 + constrains: + - openblas >=0.3.29,<0.3.30.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 5919288 + timestamp: 1739825731827 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.29-pthreads_h9d3fd7e_0.conda + sha256: 3a2ccf4c9098cd18a636e9b7fff947fdeb4962bcfb75c9d6fd80b8c50caf6a3c + md5: a99e2bfcb1ad6362544c71281eb617e9 + depends: + - libgcc >=14 + - libgfortran + - libgfortran5 >=14.2.0 + constrains: + - openblas >=0.3.29,<0.3.30.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 4801657 + timestamp: 1739825308974 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.29-openmp_hf332438_0.conda + sha256: 8989d9e01ec8c9b2d48dbb5efbe70b356fcd15990fb53b64fcb84798982c0343 + md5: 0cd1148c68f09027ee0b0f0179f77c30 + depends: + - __osx >=11.0 + - libgfortran 5.* + - libgfortran5 >=13.2.0 + - llvm-openmp >=18.1.8 + constrains: + - openblas >=0.3.29,<0.3.30.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 4168442 + timestamp: 1739825514918 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda + sha256: 51125ebb8b7152e4a4e69fd2398489c4ec8473195c27cde3cbdf1cb6d18c5493 + md5: d8703f1ffe5a06356f06467f1d0b9464 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 2960815 + timestamp: 1735577210663 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.3-h44a3b7b_1.conda + sha256: ecb69f2b1668e784b41ba667493be846662d5ef702bef64fb2e013bb1364cdc4 + md5: 68f807f7cc13951652bbe048253fd405 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 2788074 + timestamp: 1735576315676 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.3-h3bd63a1_1.conda + sha256: f58a16b13ad53346903c833e266f83c3d770a43a432659b98710aed85ca885e7 + md5: bdbfea4cf45ae36652c6bbcc2e7ebe91 + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=18 + - libzlib >=1.3.1,<2.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 2271580 + timestamp: 1735576361997 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsentencepiece-0.2.0-h8e10757_10.conda + sha256: dc399e0f04a09f8c1807c3b36e578eb81f81891c0ddf21de9c1fb9f048ce4031 + md5: 4f43dbcfacd3cc9a183dd3a48b94d3c0 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 823649 + timestamp: 1735627841126 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsentencepiece-0.2.0-h6164ad9_10.conda + sha256: 57074803772f65d4075b7d6dc17ff5aa40ec3a30109fa4225ca16911504c4a8b + md5: a7a192edc9cfba26a27df3283203e6a1 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 800865 + timestamp: 1735627982895 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsentencepiece-0.2.0-he13a0af_10.conda + sha256: 3347a8840d085ce1661928e736229f068d56c84312fbed90886e059023d85611 + md5: 1f67e5e30edd56e0a0bf6df6bb711a9d + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 754657 + timestamp: 1735628030895 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda + sha256: 0105bd108f19ea8e6a78d2d994a6d4a8db16d19a41212070d2d1d48a63c34161 + md5: a587892d3c13b6621a6091be690dbca2 + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: ISC + size: 205978 + timestamp: 1716828628198 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.20-h68df207_0.conda + sha256: 448df5ea3c5cf1af785aad46858d7a5be0522f4234a4dc9bb764f4d11ff3b981 + md5: 2e4a8f23bebdcb85ca8e5a0fbe75666a + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: ISC + size: 177394 + timestamp: 1716828514515 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda + sha256: fade8223e1e1004367d7101dd17261003b60aa576df6d7802191f8972f7470b1 + md5: a7ce36e284c5faaf93c220dfc39e3abd + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: ISC + size: 164972 + timestamp: 1716828607917 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.49.1-hee588c1_1.conda + sha256: 7a09eef804ef7cf4d88215c2297eabb72af8ad0bd5b012060111c289f14bbe7d + md5: 73cea06049cc4174578b432320a003b8 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux + license: Unlicense + size: 915956 + timestamp: 1739953155793 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.49.1-h5eb1b54_1.conda + sha256: 920fb3b7d3b873babf79a3e392cc82d43b8bd02a573ccaff34219efb5cf7b51e + md5: 150d64241fa27d9d35a7f421ca968a6c + depends: + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + arch: aarch64 + platform: linux + license: Unlicense + size: 915118 + timestamp: 1739953101699 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.1-h3f77e49_1.conda + sha256: 266639fb10ca92287961574b0b4d6031fa40dd9d723d64a0fcb08513a24dab03 + md5: c83357a21092bd952933c36c5cb4f4d6 + depends: + - __osx >=11.0 + - libzlib >=1.3.1,<2.0a0 + arch: arm64 + platform: osx + license: Unlicense + size: 898767 + timestamp: 1739953312379 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-h8f9b012_2.conda + sha256: 8f5bd92e4a24e1d35ba015c5252e8f818898478cb3bc50bd8b12ab54707dc4da + md5: a78c856b6dc6bf4ea8daeb9beaaa3fb0 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc 14.2.0 h767d61c_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 3884556 + timestamp: 1740240685253 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_2.conda + sha256: c30a74bc996013907f6d9f344da007c26d98ef9a0831151cd50aece3125c45d5 + md5: eadee2cda99697e29411c1013c187b92 + depends: + - libgcc 14.2.0 he277a41_2 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 3810779 + timestamp: 1740241094774 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_2.conda + sha256: e86f38b007cf97cc2c67cd519f2de12a313c4ee3f5ef11652ad08932a5e34189 + md5: c75da67f045c2627f59e6fcb5f4e3a9b + depends: + - libstdcxx 14.2.0 h8f9b012_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 53830 + timestamp: 1740240722530 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_2.conda + sha256: 0107886ead6f255956d8e520f8dff260f9ab3d0d51512f18c52710c406e4b2df + md5: c934c1fddad582fcc385b608eb06a70c + depends: + - libstdcxx 14.2.0 h3f4de04_2 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 53715 + timestamp: 1740241126343 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda + sha256: 787eb542f055a2b3de553614b25f09eefb0a0931b0c87dbcce6efdfd92f04f18 + md5: 40b61aab5c7ba9ff276c41cfffe6b80b + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 33601 + timestamp: 1680112270483 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda + sha256: 616277b0c5f7616c2cdf36f6c316ea3f9aa5bb35f2d4476a349ab58b9b91675f + md5: 000e30b09db0b7c775b21695dff30969 + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 35720 + timestamp: 1680113474501 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda + sha256: 6ae68e0b86423ef188196fff6207ed0c8195dd84273cb5623b85aa08033a410c + md5: 5aa797f8787fe7a17d1b0821485b5adc + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: LGPL-2.1-or-later + size: 100393 + timestamp: 1702724383534 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda + sha256: 6b46c397644091b8a26a3048636d10b989b1bf266d4be5e9474bf763f828f41f + md5: b4df5d7d4b63579d081fd3a4cf99740e + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: LGPL-2.1-or-later + size: 114269 + timestamp: 1702724369203 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda + sha256: d4bfe88d7cb447768e31650f06257995601f89076080e76df55e3112d4e47dc4 + md5: edb0dca6bc32e4f4789199455a1dbeb8 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + constrains: + - zlib 1.3.1 *_2 + arch: x86_64 + platform: linux + license: Zlib + license_family: Other + size: 60963 + timestamp: 1727963148474 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda + sha256: 5a2c1eeef69342e88a98d1d95bff1603727ab1ff4ee0e421522acd8813439b84 + md5: 08aad7cbe9f5a6b460d0976076b6ae64 + depends: + - libgcc >=13 + constrains: + - zlib 1.3.1 *_2 + arch: aarch64 + platform: linux + license: Zlib + license_family: Other + size: 66657 + timestamp: 1727963199518 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda + sha256: ce34669eadaba351cd54910743e6a2261b67009624dbc7daeeafdef93616711b + md5: 369964e85dc26bfe78f41399b366c435 + depends: + - __osx >=11.0 + constrains: + - zlib 1.3.1 *_2 + arch: arm64 + platform: osx + license: Zlib + license_family: Other + size: 46438 + timestamp: 1727963202283 +- conda: https://conda.anaconda.org/conda-forge/noarch/lit-19.1.7-pyhd8ed1ab_1.conda + sha256: 57b535a67f59c97302e2bbc60abcbc8d51ef0a4c7b1926049091d7da96da7b3a + md5: c5a4e2d9818fe6551dccd02243765527 + depends: + - python >=3.9 + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + size: 128565 + timestamp: 1737789576837 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda + sha256: b92a669f2059874ebdcb69041b6c243d68ffc3fb356ac1339cec44aeb27245d7 + md5: c4d54bfd3817313ce758aa76283b118d + depends: + - __osx >=11.0 + constrains: + - openmp 19.1.7|19.1.7.* + arch: arm64 + platform: osx + license: Apache-2.0 WITH LLVM-exception + license_family: APACHE + size: 280830 + timestamp: 1736986295869 +- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022718-release.conda + noarch: python + sha256: f3dcb14fed5470c0fc521542cbd2f1c56ca7e46d560f46176b8f926198cb3cbd + md5: 01fe5e0cf46c84a6345e323ad1316764 + depends: + - max-core ==25.2.0.dev2025022718 release + - max-python ==25.2.0.dev2025022718 release + - mojo-jupyter ==25.2.0.dev2025022718 release + - mblack ==25.2.0.dev2025022718 release + license: LicenseRef-Modular-Proprietary + size: 9905 + timestamp: 1740680254354 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022718-release.conda + sha256: 847d5767109a305d7bcad4ac29248a74a384034692934a0c54b00a590c27094a + md5: fc5a9ae36c7805979bd58ca55a25066f + depends: + - mblack ==25.2.0.dev2025022718 release + license: LicenseRef-Modular-Proprietary + size: 249811868 + timestamp: 1740680254354 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022718-release.conda + sha256: 250c35ecccd302e6c7de836ac200a5ece92e74508c2590c585d8803d488fd650 + md5: d88728b468c85902512a0f9b99251035 + depends: + - mblack ==25.2.0.dev2025022718 release + license: LicenseRef-Modular-Proprietary + size: 252108573 + timestamp: 1740680207793 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022718-release.conda + sha256: fb28d9e61aa507ea84b470082d3dc96844a24fe672d4e4c57e832655c5d0a202 + md5: dd8734453f7276a258f3351cc5c506c3 + depends: + - mblack ==25.2.0.dev2025022718 release + license: LicenseRef-Modular-Proprietary + size: 217273450 + timestamp: 1740681819160 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022718-release.conda + noarch: python + sha256: 831b4d62f66f0083321121c6ba25dedab3ee41d5e9f19d9752969592214af398 + md5: f828ace91aa057e4774e84ad459adccf + depends: + - max-core ==25.2.0.dev2025022718 release + - click >=8.0.0 + - numpy >=1.18,<2.0 + - sentencepiece >=0.2.0 + - tqdm >=4.67.1 + constrains: + - aiohttp >=3.11.12 + - fastapi >=0.114.2 + - gguf >=0.14.0 + - hf-transfer >=0.1.9 + - httpx >=0.28.1 + - huggingface_hub >=0.24.0 + - nvitop >=1.4.1 + - opentelemetry-api >=1.29.0 + - opentelemetry-exporter-otlp-proto-http >=1.27.0 + - opentelemetry-exporter-prometheus <1.0.0 + - opentelemetry-sdk >=1.29.0,<2.0 + - pillow >=10.3.0 + - prometheus_client >=0.21.0 + - prometheus-async >=22.2.0 + - psutil >=6.1.1 + - pydantic + - pydantic-settings >=2.7.1 + - pyinstrument >=5.0.1 + - python-json-logger >=2.0.7 + - requests >=2.32.3 + - rich >=13.9.4 + - safetensors >=0.5.2 + - sentinel >=0.3.0 + - sse-starlette >=2.1.2 + - tokenizers >=0.19.0 + - pytorch >=2.2.2,<=2.5.1 + - transformers >=4.40.1 + - uvicorn >=0.34.0 + - uvloop >=0.21.0 + - xgrammar ==0.1.11 + license: LicenseRef-Modular-Proprietary + size: 123584411 + timestamp: 1740680254354 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022718-release.conda + noarch: python + sha256: b9e5755b7bf6314a37a90ef0250c93f5e7c693954d7a6389a97ab9ef06e23cc3 + md5: bfd2e752d0fc9516b78a17169ce9cc78 + depends: + - max-core ==25.2.0.dev2025022718 release + - click >=8.0.0 + - numpy >=1.18,<2.0 + - sentencepiece >=0.2.0 + - tqdm >=4.67.1 + constrains: + - aiohttp >=3.11.12 + - fastapi >=0.114.2 + - gguf >=0.14.0 + - hf-transfer >=0.1.9 + - httpx >=0.28.1 + - huggingface_hub >=0.24.0 + - nvitop >=1.4.1 + - opentelemetry-api >=1.29.0 + - opentelemetry-exporter-otlp-proto-http >=1.27.0 + - opentelemetry-exporter-prometheus <1.0.0 + - opentelemetry-sdk >=1.29.0,<2.0 + - pillow >=10.3.0 + - prometheus_client >=0.21.0 + - prometheus-async >=22.2.0 + - psutil >=6.1.1 + - pydantic + - pydantic-settings >=2.7.1 + - pyinstrument >=5.0.1 + - python-json-logger >=2.0.7 + - requests >=2.32.3 + - rich >=13.9.4 + - safetensors >=0.5.2 + - sentinel >=0.3.0 + - sse-starlette >=2.1.2 + - tokenizers >=0.19.0 + - pytorch >=2.2.2,<=2.5.1 + - transformers >=4.40.1 + - uvicorn >=0.34.0 + - uvloop >=0.21.0 + - xgrammar ==0.1.11 + license: LicenseRef-Modular-Proprietary + size: 126004454 + timestamp: 1740680207793 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022718-release.conda + noarch: python + sha256: 7da9f4655082bb64c2b0cc996ffefa0ce5c49744854ed77a9b0d000e27cf5a55 + md5: b16d498a148aa61dca2a6bfec5cb8e46 + depends: + - max-core ==25.2.0.dev2025022718 release + - click >=8.0.0 + - numpy >=1.18,<2.0 + - sentencepiece >=0.2.0 + - tqdm >=4.67.1 + constrains: + - aiohttp >=3.11.12 + - fastapi >=0.114.2 + - gguf >=0.14.0 + - hf-transfer >=0.1.9 + - httpx >=0.28.1 + - huggingface_hub >=0.24.0 + - nvitop >=1.4.1 + - opentelemetry-api >=1.29.0 + - opentelemetry-exporter-otlp-proto-http >=1.27.0 + - opentelemetry-exporter-prometheus <1.0.0 + - opentelemetry-sdk >=1.29.0,<2.0 + - pillow >=10.3.0 + - prometheus_client >=0.21.0 + - prometheus-async >=22.2.0 + - psutil >=6.1.1 + - pydantic + - pydantic-settings >=2.7.1 + - pyinstrument >=5.0.1 + - python-json-logger >=2.0.7 + - requests >=2.32.3 + - rich >=13.9.4 + - safetensors >=0.5.2 + - sentinel >=0.3.0 + - sse-starlette >=2.1.2 + - tokenizers >=0.19.0 + - pytorch >=2.2.2,<=2.5.1 + - transformers >=4.40.1 + - uvicorn >=0.34.0 + - uvloop >=0.21.0 + - xgrammar ==0.1.11 + license: LicenseRef-Modular-Proprietary + size: 112658409 + timestamp: 1740681819160 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022718-release.conda + noarch: python + sha256: ff042a8abfed0e2e36b207e3d4f59a2b4577dea7f099b08d1aaef128ab796f09 + md5: 719ca7123d53415adcdd7f0cb8396c51 + depends: + - python >=3.9,<3.13 + - click >=8.0.0 + - mypy_extensions >=0.4.3 + - packaging >=22.0 + - pathspec >=0.9.0 + - platformdirs >=2 + - typing_extensions >=v4.12.2 + - python + license: MIT + size: 130852 + timestamp: 1740680254353 +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022718-release.conda + noarch: python + sha256: 19c33e23b27e240fee0b2a1d56921802ac88558dc2da417837cd590175561e16 + md5: 6b8d00b15817db11e026f824f7f0ba14 + depends: + - max-core ==25.2.0.dev2025022718 release + - python >=3.9,<3.13 + - jupyter_client >=8.6.2,<8.7 + - python + license: LicenseRef-Modular-Proprietary + size: 22981 + timestamp: 1740680254354 +- conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda + sha256: 1895f47b7d68581a6facde5cb13ab8c2764c2e53a76bd746f8f98910dc4e08fe + md5: 29097e7ea634a45cc5386b95cac6568f + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 10854 + timestamp: 1733230986902 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda + sha256: 3fde293232fa3fca98635e1167de6b7c7fda83caf24b9d6c91ec9eefb4f4d586 + md5: 47e340acb35de30501a76c7c799c41d7 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: X11 AND BSD-3-Clause + size: 891641 + timestamp: 1738195959188 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-ha32ae93_3.conda + sha256: 91cfb655a68b0353b2833521dc919188db3d8a7f4c64bea2c6a7557b24747468 + md5: 182afabe009dc78d8b73100255ee6868 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: X11 AND BSD-3-Clause + size: 926034 + timestamp: 1738196018799 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda + sha256: 2827ada40e8d9ca69a153a45f7fd14f32b2ead7045d3bbb5d10964898fe65733 + md5: 068d497125e4bf8a66bf707254fff5ae + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: X11 AND BSD-3-Clause + size: 797030 + timestamp: 1738196177597 +- conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda + sha256: fe3459c75cf84dcef6ef14efcc4adb0ade66038ddd27cadb894f34f4797687d8 + md5: d8285bea2a350f63fab23bf460221f3f + depends: + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - libgcc-ng >=12 + - liblapack >=3.9.0,<4.0a0 + - libstdcxx-ng >=12 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - numpy-base <0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 7484186 + timestamp: 1707225809722 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda + sha256: 23767677a7790bee5457d5e75ebd508b9a31c5354216f4310dd1acfca3f7a6f9 + md5: 9cebf5a06cb87d4569cd68df887af476 + depends: + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - libgcc-ng >=12 + - liblapack >=3.9.0,<4.0a0 + - libstdcxx-ng >=12 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - numpy-base <0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 6614296 + timestamp: 1707225994762 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda + sha256: c8841d6d6f61fd70ca80682efbab6bdb8606dc77c68d8acabfbd7c222054f518 + md5: d83fc83d589e2625a3451c9a7e21047c + depends: + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - libcxx >=16 + - liblapack >=3.9.0,<4.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - numpy-base <0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 6073136 + timestamp: 1707226249608 +- conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.1-h7b32b05_0.conda + sha256: cbf62df3c79a5c2d113247ddea5658e9ff3697b6e741c210656e239ecaf1768f + md5: 41adf927e746dc75ecf0ef841c454e48 + depends: + - __glibc >=2.17,<3.0.a0 + - ca-certificates + - libgcc >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 2939306 + timestamp: 1739301879343 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.1-hd08dc88_0.conda + sha256: d80b52b56b2206053968270069616868cbeb289ef855cf1584b1bb0fef61b37c + md5: 09036190605c57eaecf01218e0e9542d + depends: + - ca-certificates + - libgcc >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 3476570 + timestamp: 1739303256089 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.1-h81ee809_0.conda + sha256: 4f8e2389e1b711b44182a075516d02c80fa7a3a7e25a71ff1b5ace9eae57a17a + md5: 75f9f0c7b1740017e2db83a53ab9a28e + depends: + - __osx >=11.0 + - ca-certificates + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 2934522 + timestamp: 1739301896733 +- conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + sha256: da157b19bcd398b9804c5c52fc000fcb8ab0525bdb9c70f95beaa0bb42f85af1 + md5: 3bfed7e6228ebf2f7b9eaa47f1b4e2aa + depends: + - python >=3.8 + license: Apache-2.0 + license_family: APACHE + size: 60164 + timestamp: 1733203368787 +- conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + sha256: 9f64009cdf5b8e529995f18e03665b03f5d07c0b17445b8badef45bde76249ee + md5: 617f15191456cc6a13db418a275435e5 + depends: + - python >=3.9 + license: MPL-2.0 + license_family: MOZILLA + size: 41075 + timestamp: 1733233471940 +- conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + sha256: bb50f6499e8bc1d1a26f17716c97984671121608dc0c3ecd34858112bce59a27 + md5: 577852c7e53901ddccc7e6a9959ddebe + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 20448 + timestamp: 1733232756001 +- conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.9-h9e4cc4f_0_cpython.conda + sha256: 64fed5178f1e9c8ac0f572ac0ce37955f5dee7b2bcac665202bc14f1f7dd618a + md5: 5665f0079432f8848079c811cdb537d5 + depends: + - __glibc >=2.17,<3.0.a0 + - bzip2 >=1.0.8,<2.0a0 + - ld_impl_linux-64 >=2.36.1 + - libexpat >=2.6.4,<3.0a0 + - libffi >=3.4,<4.0a0 + - libgcc >=13 + - liblzma >=5.6.4,<6.0a0 + - libnsl >=2.0.1,<2.1.0a0 + - libsqlite >=3.48.0,<4.0a0 + - libuuid >=2.38.1,<3.0a0 + - libxcrypt >=4.4.36 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.4.1,<4.0a0 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + constrains: + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Python-2.0 + size: 31581682 + timestamp: 1739521496324 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.9-h1683364_0_cpython.conda + sha256: 0366f38918bceda8ff5917d7bbe1cea2bc8b6c74e7245eb0e4b0d3c2d37f76cf + md5: 2e7ad70254455e0508adabff10218512 + depends: + - bzip2 >=1.0.8,<2.0a0 + - ld_impl_linux-aarch64 >=2.36.1 + - libexpat >=2.6.4,<3.0a0 + - libffi >=3.4,<4.0a0 + - libgcc >=13 + - liblzma >=5.6.4,<6.0a0 + - libnsl >=2.0.1,<2.1.0a0 + - libsqlite >=3.48.0,<4.0a0 + - libuuid >=2.38.1,<3.0a0 + - libxcrypt >=4.4.36 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.4.1,<4.0a0 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + constrains: + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Python-2.0 + size: 13804161 + timestamp: 1739519531794 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.9-hc22306f_0_cpython.conda + sha256: cbf81a78d3ca6e663e827523e6ddbc28369cac488da047a28f83875eb52fe5f6 + md5: 1d105a6c46a753e3c0bab54a1ad24063 + depends: + - __osx >=11.0 + - bzip2 >=1.0.8,<2.0a0 + - libexpat >=2.6.4,<3.0a0 + - libffi >=3.4,<4.0a0 + - liblzma >=5.6.4,<6.0a0 + - libsqlite >=3.48.0,<4.0a0 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.4.1,<4.0a0 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + constrains: + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Python-2.0 + size: 12947786 + timestamp: 1739520092196 +- conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + sha256: a50052536f1ef8516ed11a844f9413661829aa083304dc624c5925298d078d79 + md5: 5ba79d7c71f03c678c8ead841f347d6e + depends: + - python >=3.9 + - six >=1.5 + license: Apache-2.0 + license_family: APACHE + size: 222505 + timestamp: 1733215763718 +- conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda + build_number: 5 + sha256: d10e93d759931ffb6372b45d65ff34d95c6000c61a07e298d162a3bc2accebb0 + md5: 0424ae29b104430108f5218a66db7260 + constrains: + - python 3.12.* *_cpython + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 6238 + timestamp: 1723823388266 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.12-5_cp312.conda + build_number: 5 + sha256: 5ccdad9981753cc4a2d126e356673a21c0cd5b34e209cb8d476a3947d4ad9b39 + md5: 62b20f305498284a07dc6c45fd0e5c87 + constrains: + - python 3.12.* *_cpython + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 6329 + timestamp: 1723823366253 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-5_cp312.conda + build_number: 5 + sha256: 49d624e4b809c799d2bf257b22c23cf3fc4460f5570d9a58e7ad86350aeaa1f4 + md5: b76f9b1c862128e56ac7aa8cd2333de9 + constrains: + - python 3.12.* *_cpython + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 6278 + timestamp: 1723823099686 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.1-py312hbf22597_0.conda + sha256: 90ec0da0317d3d76990a40c61e1709ef859dd3d8c63838bad2814f46a63c8a2e + md5: 7cec8d0dac15a2d9fea8e49879aa779d + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libsodium >=1.0.20,<1.0.21.0a0 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - zeromq >=4.3.5,<4.4.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 382698 + timestamp: 1738271121975 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyzmq-26.2.1-py312h2427ae1_0.conda + sha256: 9558f9330093e5c21b7c04e2e212e19b9b88ad9c808315f12c0765b244018a09 + md5: 0520da8de6870d8ff63e818e927d1524 + depends: + - libgcc >=13 + - libsodium >=1.0.20,<1.0.21.0a0 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - zeromq >=4.3.5,<4.4.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 375156 + timestamp: 1738273130727 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.1-py312hf4875e0_0.conda + sha256: 70d398b334668dc597d33e27847ede1b0829a639b9c91ee845355e52c86c2293 + md5: bfbefdb140b546a80827ff7c9d5ac7b8 + depends: + - __osx >=11.0 + - libcxx >=18 + - libsodium >=1.0.20,<1.0.21.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - zeromq >=4.3.5,<4.4.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 364649 + timestamp: 1738271263898 +- conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda + sha256: 2d6d0c026902561ed77cd646b5021aef2d4db22e57a5b0178dfc669231e06d2c + md5: 283b96675859b20a825f8fa30f311446 + depends: + - libgcc >=13 + - ncurses >=6.5,<7.0a0 + arch: x86_64 + platform: linux + license: GPL-3.0-only + license_family: GPL + size: 282480 + timestamp: 1740379431762 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8382b9d_2.conda + sha256: 54bed3a3041befaa9f5acde4a37b1a02f44705b7796689574bcf9d7beaad2959 + md5: c0f08fc2737967edde1a272d4bf41ed9 + depends: + - libgcc >=13 + - ncurses >=6.5,<7.0a0 + arch: aarch64 + platform: linux + license: GPL-3.0-only + license_family: GPL + size: 291806 + timestamp: 1740380591358 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda + sha256: 7db04684d3904f6151eff8673270922d31da1eea7fa73254d01c437f49702e34 + md5: 63ef3f6e6d6d5c589e64f11263dc5676 + depends: + - ncurses >=6.5,<7.0a0 + arch: arm64 + platform: osx + license: GPL-3.0-only + license_family: GPL + size: 252359 + timestamp: 1740379663071 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-0.2.0-hc8f76dd_10.conda + sha256: a1bde55ceb9dc5bd7879283d0f594a6ce65c07fda3de76230c65a4a5df47858a + md5: 480e915dfc6c592615ef6f217e615aa6 + depends: + - libsentencepiece 0.2.0 h8e10757_10 + - python_abi 3.12.* *_cp312 + - sentencepiece-python 0.2.0 py312hb6b8a2b_10 + - sentencepiece-spm 0.2.0 h8e10757_10 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 19470 + timestamp: 1735628377167 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-0.2.0-h6c1b121_10.conda + sha256: 846d885a560fbb4375b645e7caf2f756ef88bbeb441b670375da0090aaa427fb + md5: 33a89eb1dedae8eb7222b0a89856f337 + depends: + - libsentencepiece 0.2.0 h6164ad9_10 + - python_abi 3.12.* *_cp312 + - sentencepiece-python 0.2.0 py312h197ff68_10 + - sentencepiece-spm 0.2.0 h6164ad9_10 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 19686 + timestamp: 1735628718991 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-0.2.0-h22a84ea_10.conda + sha256: 526c934b897131bd274697649c3b1c492a7d66c03368885a954112468b3c1424 + md5: 346abe448f69949a65473b336856860a + depends: + - libsentencepiece 0.2.0 he13a0af_10 + - python_abi 3.12.* *_cp312 + - sentencepiece-python 0.2.0 py312h155166a_10 + - sentencepiece-spm 0.2.0 he13a0af_10 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 19759 + timestamp: 1735628533490 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-python-0.2.0-py312hb6b8a2b_10.conda + sha256: 37df7fb659564587b950b39c936769d9b5095afb7bc223f42d6248a5540c6567 + md5: 7908b7b977e2e123a5f6a29906f2ce44 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 h8e10757_10 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 2411182 + timestamp: 1735628106455 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-python-0.2.0-py312h197ff68_10.conda + sha256: a7c2c19cc397c7632e2630af49ddcff128f145c93ea493421e6f42bfa5e1d30b + md5: 5642e4545a3cf03e446fb3b3e9fd723b + depends: + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 h6164ad9_10 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 2458076 + timestamp: 1735628298246 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-python-0.2.0-py312h155166a_10.conda + sha256: 2d59614aeafbf54cc718805798c11c2d0a3b4b8d947d1bd81c87c484b4883077 + md5: 6e11367ef670296fce01fc9860be944d + depends: + - __osx >=11.0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 he13a0af_10 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 2433303 + timestamp: 1735628083958 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-spm-0.2.0-h8e10757_10.conda + sha256: 6b55e1121545357d63c3aa0766931720e8aafc52d88641ba7631c8cbaa68c52f + md5: e977b7be5ac26c55825e121e00b90493 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 h8e10757_10 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 89076 + timestamp: 1735628334078 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-spm-0.2.0-h6164ad9_10.conda + sha256: b98fc1028a8e8fbf309af383f9c837290a14e076e6c5533dc251694ea33ffc6e + md5: a4b75936c01dca3f089f02752b7ee325 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 h6164ad9_10 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 85983 + timestamp: 1735628693813 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-spm-0.2.0-he13a0af_10.conda + sha256: b760aeee02e2afbfcce3f559e8a227aa4c94139157b1702fdfb41a057dad0e52 + md5: 9b7300f23cd330da8664cd072c162e5f + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 he13a0af_10 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 83826 + timestamp: 1735628514667 +- conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + sha256: 41db0180680cc67c3fa76544ffd48d6a5679d96f4b71d7498a759e94edc9a2db + md5: a451d576819089b0d672f18768be0f65 + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 16385 + timestamp: 1733381032766 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda + sha256: e0569c9caa68bf476bead1bed3d79650bb080b532c64a4af7d8ca286c08dea4e + md5: d453b98d9c83e71da0741bb0ff4d76bc + depends: + - libgcc-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 + arch: x86_64 + platform: linux + license: TCL + license_family: BSD + size: 3318875 + timestamp: 1699202167581 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda + sha256: 7fa27cc512d3a783f38bd16bbbffc008807372499d5b65d089a8e43bde9db267 + md5: f75105e0585851f818e0009dd1dde4dc + depends: + - libgcc-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 + arch: aarch64 + platform: linux + license: TCL + license_family: BSD + size: 3351802 + timestamp: 1695506242997 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda + sha256: 72457ad031b4c048e5891f3f6cb27a53cb479db68a52d965f796910e71a403a8 + md5: b50a57ba89c32b62428b71a875291c9b + depends: + - libzlib >=1.2.13,<2.0.0a0 + arch: arm64 + platform: osx + license: TCL + license_family: BSD + size: 3145523 + timestamp: 1699202432999 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda + sha256: 062a3a3a37fa8615ce57929ba7e982c76f5a5810bcebd435950f6d6c4147c310 + md5: e417822cb989e80a0d2b1b576fdd1657 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 840414 + timestamp: 1732616043734 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py312h52516f5_0.conda + sha256: 4c19a544354172b2273553267e734795a6da3c78a04c2d19f8e9e159ca3178bc + md5: e28996d9d2d44d777b7e6fb12f63715b + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 841662 + timestamp: 1732616934923 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda + sha256: 964a2705a36c50040c967b18b45b9cc8de3c2aff4af546979a574e0b38e58e39 + md5: fb0605888a475d6a380ae1d1a819d976 + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 842549 + timestamp: 1732616081362 +- conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + sha256: 11e2c85468ae9902d24a27137b6b39b4a78099806e551d390e394a8c34b48e40 + md5: 9efbfdc37242619130ea42b1cc4ed861 + depends: + - colorama + - python >=3.9 + license: MPL-2.0 or MIT + size: 89498 + timestamp: 1735661472632 +- conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + sha256: f39a5620c6e8e9e98357507262a7869de2ae8cc07da8b7f84e517c9fd6c2b959 + md5: 019a7385be9af33791c989871317e1ed + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 110051 + timestamp: 1733367480074 +- conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + sha256: 337be7af5af8b2817f115b3b68870208b30c31d3439bec07bfb2d8f4823e3568 + md5: d17f13df8b65464ca316cbc000a3cb64 + depends: + - python >=3.9 + license: PSF-2.0 + license_family: PSF + size: 39637 + timestamp: 1733188758212 +- conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + sha256: c4b1ae8a2931fe9b274c44af29c5475a85b37693999f8c792dad0f8c6734b1de + md5: dbcace4706afdfb7eb891f7b37d07c04 + license: LicenseRef-Public-Domain + size: 122921 + timestamp: 1737119101255 +- conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda + sha256: a4dc72c96848f764bb5a5176aa93dd1e9b9e52804137b99daeebba277b31ea10 + md5: 3947a35e916fcc6b9825449affbf4214 + depends: + - __glibc >=2.17,<3.0.a0 + - krb5 >=1.21.3,<1.22.0a0 + - libgcc >=13 + - libsodium >=1.0.20,<1.0.21.0a0 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: MPL-2.0 + license_family: MOZILLA + size: 335400 + timestamp: 1731585026517 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zeromq-4.3.5-h5efb499_7.conda + sha256: a6003096dc0570a86492040ba32b04ce7662b159600be2252b7a0dfb9414e21c + md5: f2f3282559a4b87b7256ecafb4610107 + depends: + - krb5 >=1.21.3,<1.22.0a0 + - libgcc >=13 + - libsodium >=1.0.20,<1.0.21.0a0 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: MPL-2.0 + license_family: MOZILLA + size: 371419 + timestamp: 1731589490850 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda + sha256: 9e585569fe2e7d3bea71972cd4b9f06b1a7ab8fa7c5139f92a31cbceecf25a8a + md5: f7e6b65943cb73bce0143737fded08f1 + depends: + - __osx >=11.0 + - krb5 >=1.21.3,<1.22.0a0 + - libcxx >=18 + - libsodium >=1.0.20,<1.0.21.0a0 + arch: arm64 + platform: osx + license: MPL-2.0 + license_family: MOZILLA + size: 281565 + timestamp: 1731585108039 +- conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + sha256: 567c04f124525c97a096b65769834b7acb047db24b15a56888a322bf3966c3e1 + md5: 0c3cc595284c5e8f0f9900a9b228a332 + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 21809 + timestamp: 1732827613585 diff --git a/src/max/magic.lock b/src/max/magic.lock new file mode 100644 index 0000000000..c7344b5c98 --- /dev/null +++ b/src/max/magic.lock @@ -0,0 +1,9001 @@ +version: 6 +environments: + default: + channels: + - url: https://conda.anaconda.org/conda-forge/ + - url: https://conda.modular.com/max-nightly/ + packages: + linux-64: + - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_kmp_llvm.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.13-py312h178313f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.8.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.1.0-pyh71513ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.1-h205f482_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.1-h1a47875_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.10.6-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.3.0-h4e1184b_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.0-h7959bf6_11.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.2-hefd7a92_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-h173a860_6.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h11f4f37_12.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.9-he1b24dc_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.2-h4e1184b_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-h4e1184b_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.9-he0e7f3f_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.489-h4d475cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.10.0-h113e628_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.13.0-h3cf044e_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-common-cpp-12.8.0-h736e048_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-files-datalake-cpp-12.12.0-ha633028_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/backoff-2.2.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py312h2ec8cdc_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.4-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2025.1.31-hbcca054_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.1.31-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py312h06ac9bb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.12.9-py312hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-crt-tools-12.8.61-ha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-cudart-12.8.57-h5888daf_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cuda-cudart_linux-64-12.8.57-h3f2d84a_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-cuobjdump-12.8.55-hbd13f7d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-cupti-12.8.57-hbd13f7d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-nvcc-tools-12.8.61-he02047a_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-nvdisasm-12.8.55-hbd13f7d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-nvvm-tools-12.8.61-he02047a_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cuda-version-12.8-h5d125a7_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.18-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda + - 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.8-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.17.0-pyhd8ed1ab_0.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-py312h178313f_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2025.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gflags-2.2.2-h5888daf_1005.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/gguf-0.14.0-pyh267e887_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/glog-0.7.1-hbabe93e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gmp-6.3.0-hac33072_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gmpy2-2.1.5-py312h7201bc8_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.68.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/hf-transfer-0.1.9-py312h5bc9d60_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/httptools-0.6.4-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.29.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.17-h717163a_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-19.0.1-hfa2a6e7_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-19.0.1-hcb10f89_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-19.0.1-hcb10f89_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-19.0.1-h08228c5_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-31_hfdb39a5_mkl.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.1.0-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-31_h372d94f_mkl.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcrc32c-1.1.2-h9c3ff4c_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.12.1-h332b0f4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.23-h4ddbbb0_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libevent-2.1.12-hf998b51_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h767d61c_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.35.0-h2b5623c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.35.0-h0121fbd_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.67.1-h25350d4_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libhwloc-2.11.2-default_h0d58e46_1001.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h4ce23a2_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-31_hc41d3b0_mkl.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libllvm20-20.1.0.rc1-hb8a341e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-1.18.0-hfcad708_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-headers-1.18.0-ha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-19.0.1-h081d1f1_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.47-h943b412_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsentencepiece-0.2.0-h8e10757_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.49.1-hee588c1_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hf672d98_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-h8f9b012_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libthrift-0.21.0-h0e7cc3e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hd9ff511_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libtorch-2.5.1-cpu_mkl_h89e7157_113.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.10.0-h4c51ac1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.50.0-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.5.0-h851e524_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.6-h8d12d68_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/llvm-openmp-19.1.7-h024ca30_0.conda + - 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-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-pipelines-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022718-release.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-2024.2.2-ha957f24_16.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022718-release.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/mpc-1.3.1-h24ddda3_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/mpfr-4.2.1-h90cbb55_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mpmath-1.3.0-pyhd8ed1ab_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-h2d0b736_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/nlohmann_json-3.11.3-he02047a_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nvidia-ml-py-12.570.86-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nvitop-1.4.2-pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.3-h5fbd93e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.1-h7b32b05_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.30.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.30.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.30.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-prometheus-0.51b0-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.30.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.30.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.51b0-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/orc-2.0.3-h12ee42a_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.3-py312hf9745cd_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-11.1.0-py312h80c1187_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus-async-22.2.0-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/prometheus-cpp-1.3.0-ha5d0236_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.1-py312h178313f_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/protobuf-5.28.3-py312h2ec8cdc_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/psutil-7.0.0-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-19.0.1-py312h7900ff3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-19.0.1-py312h01725c0_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pybind11-2.13.6-pyh1ec8472_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pybind11-global-2.13.6-pyh415d2e4_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.6-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.27.2-py312h12e396e_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.8.1-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyinstrument-5.0.1-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.9-h9e4cc4f_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.20-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-xxhash-3.5.0-py312h66e93f0_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pytorch-2.5.1-cpu_mkl_py312_heeca0f5_113.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py312h178313f_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.1-py312hbf22597_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/re2-2024.07.02-h9925aae_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda + - 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.11-h072c03f_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/safetensors-0.5.3-py312h12e396e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-0.2.0-hc8f76dd_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-python-0.2.0-py312hb6b8a2b_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-spm-0.2.0-h8e10757_10.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sentinel-1.0.0-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.8.2-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sleef-3.8-h1b44611_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-h8bd8927_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.2.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.45.3-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sympy-1.13.3-pyh2585a3b_105.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tbb-2021.13.0-hceb3a55_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tiktoken-0.9.0-py312h14ff09d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.21.0-py312h8360d73_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.49.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/triton-3.2.0-cuda126py312h5a3d8a8_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.34.0-pyh31011fe_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.34.0-h31011fe_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/uvloop-0.21.0-py312h66e93f0_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/watchfiles-1.0.4-py312h12e396e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/websockets-15.0-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.17.2-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xgrammar-0.1.11-py312h6edf5ed_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xxhash-0.8.3-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.18.3-py312h178313f_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.1-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312hef9b889_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda + linux-aarch64: + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.13-py312hcc812fe_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.8.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.1.0-pyh71513ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.1-hb7ec8d5_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.1-h740c5af_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-common-0.10.6-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-compression-0.3.0-h0f0193d_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-event-stream-0.5.0-hcbd8f92_11.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.2-h3df160d_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-hfd5ba81_6.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h5f50e26_12.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.9-h05b070f_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.2-h0f0193d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h0f0193d_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.9-hab3ce66_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.489-h88461e4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-core-cpp-1.14.0-h1887c18_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-identity-cpp-1.10.0-h47b0b28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-blobs-cpp-12.13.0-h185ecfd_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-common-cpp-12.8.0-h1b94036_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-files-datalake-cpp-12.12.0-h37d6d07_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/backoff-2.2.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/brotli-python-1.1.0-py312h6f74592_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h68df207_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/c-ares-1.34.4-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2025.1.31-hcefe29a_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.1.31-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cffi-1.17.1-py312hac81daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.12.9-py312hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cuda-crt-tools-12.8.61-h579c4fd_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cuda-cudart-12.8.57-h3ae8b8a_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cuda-cudart_linux-aarch64-12.8.57-h3ae8b8a_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cuda-cuobjdump-12.8.55-h05609ea_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cuda-cupti-12.8.57-h5101a13_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cuda-nvcc-tools-12.8.61-h614329b_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cuda-nvdisasm-12.8.55-h5101a13_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cuda-nvvm-tools-12.8.61-h614329b_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cuda-version-12.8-h5d125a7_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.18-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda + - 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.8-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.17.0-pyhd8ed1ab_0.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-py312hcc812fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2025.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gflags-2.2.2-h5ad3122_1005.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/gguf-0.14.0-pyh267e887_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/glog-0.7.1-h468a4a4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gmp-6.3.0-h0a1ffab_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gmpy2-2.1.5-py312he9d48ea_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.68.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/hf-transfer-0.1.9-py312he5cae2c_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/httptools-0.6.4-py312hb2c0f52_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.29.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/keyutils-1.6.1-h4e544f5_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/krb5-1.21.3-h50a48e9_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lcms2-2.17-hc88f144_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.0.0-h4de3ea5_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h18dbdb1_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-19.0.1-h36213f4_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-19.0.1-h3b568fd_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-19.0.1-h3b568fd_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-19.0.1-h1e9d426_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-31_h1a9f1db_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlicommon-1.1.0-h86ecc28_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlidec-1.1.0-h86ecc28_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlienc-1.1.0-h86ecc28_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-31_hab92f65_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcrc32c-1.1.2-h01db608_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcurl-8.12.1-h6702fde_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libdeflate-1.23-h5e3c512_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20250104-pl5321h976ea20_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libev-4.33-h31becfc_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libevent-2.1.12-h4ba1bb4_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.6.4-h5ad3122_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.4.6-he21f813_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-14.2.0-he277a41_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-14.2.0-he9431aa_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-2.35.0-hccf9d24_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-storage-2.35.0-hb9b2b65_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgrpc-1.67.1-hf7ccdd3_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libiconv-1.18-hc99b53d_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libjpeg-turbo-3.0.0-h31becfc_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-31_h411afd4_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libllvm20-20.1.0.rc1-h1ddd4b9_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.4-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnghttp2-1.64.0-hc8609a4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.29-pthreads_h9d3fd7e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopentelemetry-cpp-1.18.0-h60b47f9_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopentelemetry-cpp-headers-1.18.0-h8af1aa0_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-19.0.1-hfc78867_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.47-hec79eb8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.3-h44a3b7b_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsentencepiece-0.2.0-h6164ad9_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.20-h68df207_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.49.1-h5eb1b54_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libssh2-1.11.1-ha41c0db_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libthrift-0.21.0-h154c74f_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.0-h88f7998_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libtorch-2.5.1-cpu_generic_hb04e7f6_13.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.10.0-ha346350_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuv-1.50.0-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libwebp-base-1.5.0-h0886dbf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcb-1.17.0-h262b8f6_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.6-h2e0c361_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda + - 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-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-pipelines-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022718-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-25.2.0.dev2025022718-release.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/mpc-1.3.1-h783934e_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/mpfr-4.2.1-h2305555_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mpmath-1.3.0-pyhd8ed1ab_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-ha32ae93_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/nlohmann_json-3.11.3-h0a1ffab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nomkl-1.0-h5ca1d4c_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nvidia-ml-py-12.570.86-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nvitop-1.4.2-pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openjpeg-2.5.3-h3f56577_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.1-hd08dc88_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.30.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.30.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.30.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-prometheus-0.51b0-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.30.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.30.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.51b0-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/orc-2.0.3-hdd485aa_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pandas-2.2.3-py312ha2895bd_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pillow-11.1.0-py312h719f0cf_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus-async-22.2.0-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/prometheus-cpp-1.3.0-h7938499_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.2.1-py312hcc812fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/protobuf-5.28.3-py312h6f74592_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/psutil-7.0.0-py312hb2c0f52_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pthread-stubs-0.4-h86ecc28_1002.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-19.0.1-py312h8025657_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-19.0.1-py312h66f7834_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pybind11-2.13.6-pyh1ec8472_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pybind11-global-2.13.6-pyh415d2e4_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.6-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pydantic-core-2.27.2-py312h8cbf658_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.8.1-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyinstrument-5.0.1-py312hb2c0f52_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.9-h1683364_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.20-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-xxhash-3.5.0-py312h52516f5_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.12-5_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pytorch-2.5.1-cpu_generic_py312_h819a134_13.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyyaml-6.0.2-py312hcc812fe_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyzmq-26.2.1-py312h2427ae1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/re2-2024.07.02-haa97905_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8382b9d_2.conda + - 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.11-h3caee7a_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/safetensors-0.5.3-py312h8cbf658_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-0.2.0-h6c1b121_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-python-0.2.0-py312h197ff68_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-spm-0.2.0-h6164ad9_10.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sentinel-1.0.0-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.8.2-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sleef-3.8-h8fb0607_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-hd4fb6f5_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.2.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.45.3-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sympy-1.13.3-pyh2585a3b_105.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tiktoken-0.9.0-py312h4a2a8a5_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.21.0-py312ha0d6ea1_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py312h52516f5_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.49.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/triton-3.2.0-cuda126py312h1ed5fa8_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.34.0-pyh31011fe_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.34.0-h31011fe_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/uvloop-0.21.0-py312hb2c0f52_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/watchfiles-1.0.4-py312h8cbf658_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/websockets-15.0-py312hb2c0f52_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/wrapt-1.17.2-py312hb2c0f52_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xgrammar-0.1.11-py312hc94be92_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxau-1.0.12-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxdmcp-1.1.5-h57736b2_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xxhash-0.8.3-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yaml-0.2.5-hf897c2e_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.18.3-py312hcc812fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zeromq-4.3.5-h5efb499_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zlib-1.3.1-h86ecc28_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstandard-0.23.0-py312hb698573_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.6-h02f22dd_0.conda + osx-arm64: + - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.13-py312h998013c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.8.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.1.0-pyh71513ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.1-hfc2798a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.1-hc8a0bd2_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.10.6-h5505292_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-compression-0.3.0-hc8a0bd2_5.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.0-h54f970a_11.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.2-h96aa502_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-haba67d1_6.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h24f418c_12.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.9-hf37e03c_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.2-hc8a0bd2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-hc8a0bd2_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.9-ha81f72f_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.489-h0e5014b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.14.0-hd50102c_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.10.0-hc602bab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-blobs-cpp-12.13.0-h7585a09_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-common-cpp-12.8.0-h9ca1f76_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-files-datalake-cpp-12.12.0-hcdd55da_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/backoff-2.2.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py312hde4cb15_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.4-h5505292_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2025.1.31-hf0a4a13_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.1.31-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.1-py312h0fad829_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.12.9-py312hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.18-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda + - 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.8-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.17.0-pyhd8ed1ab_0.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-py312h998013c_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2025.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gflags-2.2.2-hf9b8971_1005.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/gguf-0.14.0-pyh267e887_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/glog-0.7.1-heb240a5_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gmp-6.3.0-h7bae524_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gmpy2-2.1.5-py312h524cf62_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.68.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/hf-transfer-0.1.9-py312hfba41e8_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/httptools-0.6.4-py312hea69d52_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.29.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.17-h7eeda09_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_h07bc746_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-19.0.1-h0945df6_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-19.0.1-hf07054f_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-19.0.1-hf07054f_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-19.0.1-h4239455_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-31_h10e41b3_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.1.0-hd74edd7_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.1.0-hd74edd7_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlienc-1.1.0-hd74edd7_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-31_hb3479ef_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcrc32c-1.1.2-hbdafb3b_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.12.1-h73640d1_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.23-hec38601_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libev-4.33-h93a5062_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libevent-2.1.12-h2757513_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.4-h286801f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-2.35.0-hdbe95d5_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-storage-2.35.0-h7081f7f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgrpc-1.67.1-h0a426d6_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.18-hfe07756_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.0.0-hb547adb_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-31_hc9a63f6_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.4-h39f12f2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.64.0-h6d7220d_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.29-openmp_hf332438_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopentelemetry-cpp-1.18.0-h0c05b2d_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopentelemetry-cpp-headers-1.18.0-hce30654_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-19.0.1-h636d7b7_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.47-h3783ad8_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.3-h3bd63a1_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h07bc746_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsentencepiece-0.2.0-he13a0af_10.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.1-h3f77e49_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.1-h9cc3647_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libthrift-0.21.0-h64651cc_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-h551f018_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtorch-2.5.1-cpu_generic_he9b55c7_13.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.10.0-hda25de7_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libuv-1.50.0-h5505292_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.5.0-h2471fea_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxcb-1.17.0-hdb1d25a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.6-hce475f1_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda + - 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-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-pipelines-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022718-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-25.2.0.dev2025022718-release.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/mpc-1.3.1-h8f1351a_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/mpfr-4.2.1-hb693164_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mpmath-1.3.0-pyhd8ed1ab_1.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 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/nlohmann_json-3.11.3-h00cdb27_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nomkl-1.0-h5ca1d4c_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nvidia-ml-py-12.570.86-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nvitop-1.4.2-pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openjpeg-2.5.3-h8a3d83b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.1-h81ee809_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.30.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.30.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.30.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-prometheus-0.51b0-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.30.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.30.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.51b0-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/orc-2.0.3-h0ff2369_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.3-py312hcd31e36_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-11.1.0-py312h50aef2c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus-async-22.2.0-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/prometheus-cpp-1.3.0-h0967b3e_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.1-py312h998013c_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/protobuf-5.28.3-py312hd8f9ff3_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/psutil-7.0.0-py312hea69d52_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pthread-stubs-0.4-hd74edd7_1002.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-19.0.1-py312h1f38498_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-19.0.1-py312hc40f475_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pybind11-2.13.6-pyh1ec8472_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pybind11-global-2.13.6-pyh415d2e4_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.6-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.27.2-py312hcd83bfe_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.8.1-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyinstrument-5.0.1-py312hea69d52_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.9-hc22306f_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.20-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-xxhash-3.5.0-py312hea69d52_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-5_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pytorch-2.5.1-cpu_generic_py312_h49ed405_13.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py312h998013c_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.1-py312hf4875e0_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/re2-2024.07.02-h6589ca4_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda + - 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.5.3-py312hcd83bfe_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-0.2.0-h22a84ea_10.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-python-0.2.0-py312h155166a_10.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-spm-0.2.0-he13a0af_10.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sentinel-1.0.0-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.8.2-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sleef-3.8-h8391f65_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-h98b9ce2_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.2.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.45.3-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sympy-1.13.3-pyh2585a3b_105.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tiktoken-0.9.0-py312hf3e4074_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.21.0-py312hf3e4074_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.49.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.34.0-pyh31011fe_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.34.0-h31011fe_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/uvloop-0.21.0-py312h0bf5046_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/watchfiles-1.0.4-py312hcd83bfe_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/websockets-15.0-py312hea69d52_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/wrapt-1.17.2-py312hea69d52_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xgrammar-0.1.11-py312hd6dbf26_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxau-1.0.12-h5505292_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxdmcp-1.1.5-hd74edd7_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xxhash-0.8.3-h5505292_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.18.3-py312h998013c_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zlib-1.3.1-h8359307_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py312h15fbf35_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.6-hb46c0d2_0.conda +packages: +- conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 + sha256: fe51de6107f9edc7aa4f786a70f4a883943bc9d39b3bb7307c04c41410990726 + md5: d7c89558ba9fa0495403155b64376d81 + arch: x86_64 + platform: linux + license: None + size: 2562 + timestamp: 1578324546067 +- conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_kmp_llvm.tar.bz2 + build_number: 2 + sha256: 84a66275da3a66e3f3e70e9d8f10496d807d01a9e4ec16cd2274cc5e28c478fc + md5: 562b26ba2e19059551a811e72ab7f793 + depends: + - _libgcc_mutex 0.1 conda_forge + - llvm-openmp >=9.0.1 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 5744 + timestamp: 1650742457817 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2 + build_number: 16 + sha256: 3702bef2f0a4d38bd8288bbe54aace623602a1343c2cfbefd3fa188e015bebf0 + md5: 6168d71addc746e8f2b8d57dfd2edcea + depends: + - libgomp >=7.5.0 + constrains: + - openmp_impl 9999 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 23712 + timestamp: 1650670790230 +- conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.6-pyhd8ed1ab_0.conda + sha256: a2a5579be9fb21f9397f51a4ba09599782c93e9117951a5105d8ee4b80d648c1 + md5: 5b7d3ceeb36e8e6783eae78acd4c18e1 + depends: + - python >=3.9 + license: PSF-2.0 + license_family: PSF + size: 19236 + timestamp: 1739175837817 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.13-py312h178313f_0.conda + sha256: 985834edea972ddf6c35ab4185fb228440efb845a70a88182895f8f90df4a4c9 + md5: 0ea623ee1f29a7e1d703bc3b0ef82306 + depends: + - __glibc >=2.17,<3.0.a0 + - aiohappyeyeballs >=2.3.0 + - aiosignal >=1.1.2 + - attrs >=17.3.0 + - frozenlist >=1.1.1 + - libgcc >=13 + - multidict >=4.5,<7.0 + - propcache >=0.2.0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - yarl >=1.17.0,<2.0 + arch: x86_64 + platform: linux + license: MIT AND Apache-2.0 + license_family: Apache + size: 915558 + timestamp: 1740482064204 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.13-py312hcc812fe_0.conda + sha256: ca1fa0450decaca810db4b9f5ff1dd00c710fd89767c764a771b5d4ce7a152b0 + md5: 7e952a2d83ebfb371515c010acc110c7 + depends: + - aiohappyeyeballs >=2.3.0 + - aiosignal >=1.1.2 + - attrs >=17.3.0 + - frozenlist >=1.1.1 + - libgcc >=13 + - multidict >=4.5,<7.0 + - propcache >=0.2.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - yarl >=1.17.0,<2.0 + arch: aarch64 + platform: linux + license: MIT AND Apache-2.0 + license_family: Apache + size: 904149 + timestamp: 1740481643315 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.13-py312h998013c_0.conda + sha256: 84f8c35912bce8c9ee979454a685ec0497fbccd7da86351e8d774ae3e7456055 + md5: d575ea7d96ce2c9fed370d85d3ef464e + depends: + - __osx >=11.0 + - aiohappyeyeballs >=2.3.0 + - aiosignal >=1.1.2 + - attrs >=17.3.0 + - frozenlist >=1.1.1 + - multidict >=4.5,<7.0 + - propcache >=0.2.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - yarl >=1.17.0,<2.0 + arch: arm64 + platform: osx + license: MIT AND Apache-2.0 + license_family: Apache + size: 885919 + timestamp: 1740482022806 +- conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda + sha256: 7de8ced1918bbdadecf8e1c1c68237fe5709c097bd9e0d254f4cad118f4345d0 + md5: 1a3981115a398535dbe3f6d5faae3d36 + depends: + - frozenlist >=1.1.0 + - python >=3.9 + license: Apache-2.0 + license_family: APACHE + size: 13229 + timestamp: 1734342253061 +- conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda + sha256: e0ea1ba78fbb64f17062601edda82097fcf815012cf52bb704150a2668110d48 + md5: 2934f256a8acfe48f6ebb4fce6cde29c + depends: + - python >=3.9 + - typing-extensions >=4.0.0 + license: MIT + license_family: MIT + size: 18074 + timestamp: 1733247158254 +- conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.8.0-pyhd8ed1ab_0.conda + sha256: f1455d2953e3eb6d71bc49881c8558d8e01888469dfd21061dd48afb6183e836 + md5: 848d25bfbadf020ee4d4ba90e5668252 + depends: + - exceptiongroup >=1.0.2 + - idna >=2.8 + - python >=3.9 + - sniffio >=1.1 + - typing_extensions >=4.5 + constrains: + - trio >=0.26.1 + - uvloop >=0.21 + license: MIT + license_family: MIT + size: 115305 + timestamp: 1736174485476 +- conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.1.0-pyh71513ae_0.conda + sha256: 1f267886522dfb9ae4e5ebbc3135b5eb13cff27bdbfe8d881a4d893459166ab4 + md5: 2cc3f588512f04f3a0c64b4e9bedc02d + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 56370 + timestamp: 1737819298139 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.1-h205f482_0.conda + sha256: ebe5e33249f37f6bb481de99581ebdc92dbfcf1b6915609bcf3c9e78661d6352 + md5: 9c500858e88df50af3cc883d194de78a + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 108111 + timestamp: 1737509831651 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.1-hb7ec8d5_0.conda + sha256: e1e6c9267a4d9af30b1d28c11a9041b17b7840ff83ef08614145a2a4f444f5b4 + md5: 2630f030652970a5531e492f6b2a6dd3 + depends: + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 + - libgcc >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 112658 + timestamp: 1737509863269 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.1-hfc2798a_0.conda + sha256: 5a60d196a585b25d1446fb973009e4e648e8d70beaa2793787243ede6da0fd9a + md5: 0abd67c0f7b60d50348fbb32fef50b65 + depends: + - __osx >=11.0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 92562 + timestamp: 1737509877079 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.1-h1a47875_3.conda + sha256: 095ac824ea9303eff67e04090ae531d9eb33d2bf8f82eaade39b839c421e16e8 + md5: 55a8561fdbbbd34f50f57d9be12ed084 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + - openssl >=3.3.1,<4.0a0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 47601 + timestamp: 1733991564405 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.1-h740c5af_3.conda + sha256: c5c7961d48ca7320ed3560c036f7aa5244df4b85d9657f70aacc5faba3e1509a + md5: 57ed2c445d7ef01d121b9bcea0522913 + depends: + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + - openssl >=3.3.1,<4.0a0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 50036 + timestamp: 1733991581303 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.1-hc8a0bd2_3.conda + sha256: 1f44be36e1daa17b4b081debb8aee492d13571084f38b503ad13e869fef24fe4 + md5: 8b0ce61384e5a33d2b301a64f3d22ac5 + depends: + - __osx >=11.0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - openssl >=3.3.1,<4.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 39925 + timestamp: 1733991649383 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.10.6-hb9d3cd8_0.conda + sha256: 496e92f2150fdc351eacf6e236015deedb3d0d3114f8e5954341cbf9f3dda257 + md5: d7d4680337a14001b0e043e96529409b + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 236574 + timestamp: 1733975453350 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-common-0.10.6-h86ecc28_0.conda + sha256: 57288ec5df35781bea8fc6a8c9099cad6695b747784fc1b8862a0f9e5b3bf5ab + md5: fef806a0f6de853670c746bbece01966 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 259031 + timestamp: 1733975520465 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.10.6-h5505292_0.conda + sha256: 3bde135c8e74987c0f79ecd4fa17ec9cff0d658b3090168727ca1af3815ae57a + md5: 145e5b4c9702ed279d7d68aaf096f77d + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 221863 + timestamp: 1733975576886 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.3.0-h4e1184b_5.conda + sha256: 62ca84da83585e7814a40240a1e750b1563b2680b032a471464eccc001c3309b + md5: 3f4c1197462a6df2be6dc8241828fe93 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 19086 + timestamp: 1733991637424 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-compression-0.3.0-h0f0193d_5.conda + sha256: 3f05d19f68ef800f33d44ea2a4211003124076516c8469abc7d432236344df53 + md5: 3a1421d12435df5b4c412cc4c8fac64d + depends: + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 19740 + timestamp: 1733991625201 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-compression-0.3.0-hc8a0bd2_5.conda + sha256: 47b2813f652ce7e64ac442f771b2a5f7d4af4ad0d07ff51f6075ea80ed2e3f09 + md5: a8b6c17732d14ed49d0e9b59c43186bc + depends: + - __osx >=11.0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 18068 + timestamp: 1733991869211 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.0-h7959bf6_11.conda + sha256: 10d7240c7db0c941fb1a59c4f8ea6689a434b03309ee7b766fa15a809c553c02 + md5: 9b3fb60fe57925a92f399bc3fc42eccf + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 54003 + timestamp: 1734024480949 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-event-stream-0.5.0-hcbd8f92_11.conda + sha256: 79aa363c71c891a27496c0498f8d498b2ddc87b3ccb3b6c9da5b50b05936ebb8 + md5: e0772c59af4243a9b2565baa5d79e5b6 + depends: + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + - libgcc >=13 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 55207 + timestamp: 1734024546663 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.0-h54f970a_11.conda + sha256: f0667935f4e0d4c25e0e51da035640310b5ceeb8f723156734439bde8b848d7d + md5: ba41238f8e653998d7d2f42e3a8db054 + depends: + - __osx >=11.0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + - libcxx >=18 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 47078 + timestamp: 1734024749727 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.2-hefd7a92_4.conda + sha256: 4a330206bd51148f6c13ca0b7a4db40f29a46f090642ebacdeb88b8a4abd7f99 + md5: 5ce4df662d32d3123ea8da15571b6f51 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-compression >=0.3.0,<0.3.1.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 197731 + timestamp: 1734008380764 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.2-h3df160d_4.conda + sha256: 3a1d2d332945306be9d49e569b95e4cc172d825f10e88715513a172f28ebb59e + md5: 28f00aa7fd9556c4c461328cf146c20b + depends: + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-compression >=0.3.0,<0.3.1.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - libgcc >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 190586 + timestamp: 1734008442362 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.2-h96aa502_4.conda + sha256: 22e4737c8a885995b7c1ae1d79c1f6e78d489e16ec079615980fdde067aeaf76 + md5: 495c93a4f08b17deb3c04894512330e6 + depends: + - __osx >=11.0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-compression >=0.3.0,<0.3.1.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 152983 + timestamp: 1734008451473 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-h173a860_6.conda + sha256: 335d822eead0a097ffd23677a288e1f18ea22f47a92d4f877419debb93af0e81 + md5: 9a063178f1af0a898526cc24ba7be486 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + - s2n >=1.5.11,<1.5.12.0a0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 157263 + timestamp: 1737207617838 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-hfd5ba81_6.conda + sha256: d8adfde05cee11057d99c3802e84b2300430a7c7c3c9936165d1d4b25ef59d91 + md5: 4e6771b45cb2b035c62d023dbf0dc000 + depends: + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + - s2n >=1.5.11,<1.5.12.0a0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 160933 + timestamp: 1737207637279 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-haba67d1_6.conda + sha256: 73722dd175af78b6cbfa033066f0933351f5382a1a737f6c6d9b8cfa84022161 + md5: d02e8f40ff69562903e70a1c6c48b009 + depends: + - __osx >=11.0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 136048 + timestamp: 1737207681224 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h11f4f37_12.conda + sha256: 512d3969426152d9d5fd886e27b13706122dc3fa90eb08c37b0d51a33d7bb14a + md5: 96c3e0221fa2da97619ee82faa341a73 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 194672 + timestamp: 1734025626798 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h5f50e26_12.conda + sha256: ffeb9100cc8fd4093e1a6fdfd938bc4a396dd77480b7fb17aa42855a4d5e2c70 + md5: 031ca33115d4b1eeb43f435d6215778c + depends: + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - libgcc >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 169516 + timestamp: 1734025167885 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h24f418c_12.conda + sha256: 96575ea1dd2a9ea94763882e40a66dcbff9c41f702bf37c9514c4c719b3c11dd + md5: c072045a6206f88015d02fcba1705ea1 + depends: + - __osx >=11.0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 134371 + timestamp: 1734025379525 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.9-he1b24dc_1.conda + sha256: 15fbdedc56850f8be5be7a5bcaea1af09c97590e631c024ae089737fc932fc42 + md5: caafc32928a5f7f3f7ef67d287689144 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-auth >=0.8.1,<0.8.2.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + - libgcc >=13 + - openssl >=3.4.0,<4.0a0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 115413 + timestamp: 1737558687616 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.9-h05b070f_1.conda + sha256: 9e7857fbc33eddc291fa09890ce468a92485d3e3e127bc00bbd1803e34121f84 + md5: e0a2869195f069db88b8932f5b00bee5 + depends: + - aws-c-auth >=0.8.1,<0.8.2.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + - libgcc >=13 + - openssl >=3.4.0,<4.0a0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 117875 + timestamp: 1737558720047 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.9-hf37e03c_1.conda + sha256: 92e8ca4eefcbbdf4189584c9410382884a06ed3030e5ecaac656dab8c95e6a80 + md5: de65f5e4ab5020103fe70a0eba9432a0 + depends: + - __osx >=11.0 + - aws-c-auth >=0.8.1,<0.8.2.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 98731 + timestamp: 1737558731831 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.2-h4e1184b_0.conda + sha256: 0424e380c435ba03b5948d02e8c958866c4eee50ed29e57f99473a5f795a4cfc + md5: dcd498d493818b776a77fbc242fbf8e4 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 55911 + timestamp: 1736535960724 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.2-h0f0193d_0.conda + sha256: fba38e469457764afcb94aa84d4d7788e6b5fa1554d34b05c904d2245fdd3c81 + md5: a78928881c652facde2a13ec6e776f3c + depends: + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 58221 + timestamp: 1736536003041 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.2-hc8a0bd2_0.conda + sha256: ea4f0f1e99056293c69615f581a997d65ba7e229e296e402e0d8ef750648a5b5 + md5: e7b5498ac7b7ab921a907be38f3a8080 + depends: + - __osx >=11.0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 49872 + timestamp: 1736536152332 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-h4e1184b_4.conda + sha256: 1ed9a332d06ad595694907fad2d6d801082916c27cd5076096fda4061e6d24a8 + md5: 74e8c3e4df4ceae34aa2959df4b28101 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 72762 + timestamp: 1733994347547 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h0f0193d_4.conda + sha256: 9f1e3635a587bcf92b61d88c7af7d24cd89c147c6d0ae58afbde08e65bcf48da + md5: 3bd35b0adab3d743f09e0252cc441d6b + depends: + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 72154 + timestamp: 1733994384415 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-hc8a0bd2_4.conda + sha256: 215086d95e8ff1d3fcb0197ada116cc9d7db1fdae7573f5e810d20fa9215b47c + md5: e70e88a357a3749b67679c0788c5b08a + depends: + - __osx >=11.0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 70186 + timestamp: 1733994496998 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.9-he0e7f3f_2.conda + sha256: c1930569713bd5231d48d885a5e3707ac917b428e8f08189d14064a2bb128adc + md5: 8a4e6fc8a3b285536202b5456a74a940 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-auth >=0.8.1,<0.8.2.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-event-stream >=0.5.0,<0.5.1.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-c-mqtt >=0.11.0,<0.11.1.0a0 + - aws-c-s3 >=0.7.9,<0.7.10.0a0 + - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 353222 + timestamp: 1737565463079 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.9-hab3ce66_2.conda + sha256: c3884fb10e0fd9be5c13256cabcda1afa9d2fcf8878c67214d02fc344509857d + md5: 875968ebffe992b68faf2caebbf32f02 + depends: + - aws-c-auth >=0.8.1,<0.8.2.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-event-stream >=0.5.0,<0.5.1.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-c-mqtt >=0.11.0,<0.11.1.0a0 + - aws-c-s3 >=0.7.9,<0.7.10.0a0 + - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 + - libgcc >=13 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 283812 + timestamp: 1737565480034 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.9-ha81f72f_2.conda + sha256: ed5f1d19aad53787fdebe13db4709c97eae2092536cc55d3536eba320c4286e1 + md5: c9c034d3239bf25687ca4dd985007ecd + depends: + - __osx >=11.0 + - aws-c-auth >=0.8.1,<0.8.2.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-event-stream >=0.5.0,<0.5.1.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-c-mqtt >=0.11.0,<0.11.1.0a0 + - aws-c-s3 >=0.7.9,<0.7.10.0a0 + - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 + - libcxx >=18 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 235976 + timestamp: 1737565563139 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.489-h4d475cb_0.conda + sha256: 08d6b7d2ed17bfcc7deb903c7751278ee434abdb27e3be0dceb561f30f030c75 + md5: b775e9f46dfa94b228a81d8e8c6d8b1d + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-event-stream >=0.5.0,<0.5.1.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + - aws-crt-cpp >=0.29.9,<0.29.10.0a0 + - libcurl >=8.11.1,<9.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 3144364 + timestamp: 1737576036746 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.489-h88461e4_0.conda + sha256: 88353e82b053763168cddbe2f88048defc1c97b3dad0966fbe8c4fa7aa592c7e + md5: e725d8fa77a6a5f38a78c5de914a5f40 + depends: + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-event-stream >=0.5.0,<0.5.1.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + - aws-crt-cpp >=0.29.9,<0.29.10.0a0 + - libcurl >=8.11.1,<9.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 3015109 + timestamp: 1737575993030 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.489-h0e5014b_0.conda + sha256: d82451530ddf363d8bb31a8a7391bb9699f745e940ace91d78c0e6170deef03c + md5: 156cfb45a1bb8cffc81e59047bb34f51 + depends: + - __osx >=11.0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-event-stream >=0.5.0,<0.5.1.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + - aws-crt-cpp >=0.29.9,<0.29.10.0a0 + - libcurl >=8.11.1,<9.0a0 + - libcxx >=18 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 2874126 + timestamp: 1737577023623 +- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda + sha256: fe07debdb089a3db17f40a7f20d283d75284bb4fc269ef727b8ba6fc93f7cb5a + md5: 0a8838771cc2e985cd295e01ae83baf1 + depends: + - __glibc >=2.17,<3.0.a0 + - libcurl >=8.10.1,<9.0a0 + - libgcc >=13 + - libstdcxx >=13 + - openssl >=3.3.2,<4.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 345117 + timestamp: 1728053909574 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-core-cpp-1.14.0-h1887c18_0.conda + sha256: 8967b3ccee4d74e61f6ec82dd8efb9deb854ee7ba012dfe767b7a92e0ac77724 + md5: e0c3a906a41be769f0ae20ca3e31cfc0 + depends: + - libcurl >=8.10.1,<9.0a0 + - libgcc >=13 + - libstdcxx >=13 + - openssl >=3.3.2,<4.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 338650 + timestamp: 1728055589907 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.14.0-hd50102c_0.conda + sha256: f5b91329ed59ffc0be8747784c6e4cc7e56250c54032883a83bc11808ef6a87e + md5: f093a11dcf3cdcca010b20a818fcc6dc + depends: + - __osx >=11.0 + - libcurl >=8.10.1,<9.0a0 + - libcxx >=17 + - openssl >=3.3.2,<4.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 294299 + timestamp: 1728054014060 +- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.10.0-h113e628_0.conda + sha256: 286b31616c191486626cb49e9ceb5920d29394b9e913c23adb7eb637629ba4de + md5: 73f73f60854f325a55f1d31459f2ab73 + depends: + - __glibc >=2.17,<3.0.a0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - libgcc >=13 + - libstdcxx >=13 + - openssl >=3.3.2,<4.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 232351 + timestamp: 1728486729511 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-identity-cpp-1.10.0-h47b0b28_0.conda + sha256: 1c72423b9beba167d2f01b80dc204da77240a8266f1edb3d89510c852b300d69 + md5: 94e73a7877743a85c57091d8afab2348 + depends: + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - libgcc >=13 + - libstdcxx >=13 + - openssl >=3.3.2,<4.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 217132 + timestamp: 1728488096615 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.10.0-hc602bab_0.conda + sha256: bde446b916fff5150606f8ed3e6058ffc55a3aa72381e46f1ab346590b1ae40a + md5: d7b71593a937459f2d4b67e1a4727dc2 + depends: + - __osx >=11.0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - libcxx >=17 + - openssl >=3.3.2,<4.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 166907 + timestamp: 1728486882502 +- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.13.0-h3cf044e_1.conda + sha256: 2606260e5379eed255bcdc6adc39b93fb31477337bcd911c121fc43cd29bf394 + md5: 7eb66060455c7a47d9dcdbfa9f46579b + depends: + - __glibc >=2.17,<3.0.a0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 549342 + timestamp: 1728578123088 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-blobs-cpp-12.13.0-h185ecfd_1.conda + sha256: 280ec70009a92626054f58e45b168fce393e71a9710587488bd8401628cda481 + md5: 221e1e5ecb2643e113f32b3229d5ba33 + depends: + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 + - libgcc >=13 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 502934 + timestamp: 1728580241002 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-blobs-cpp-12.13.0-h7585a09_1.conda + sha256: 08d52d130addc0fb55d5ba10d9fa483e39be25d69bac7f4c676c2c3069207590 + md5: 704238ef05d46144dae2e6b5853df8bc + depends: + - __osx >=11.0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 + - libcxx >=17 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 438636 + timestamp: 1728578216193 +- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-common-cpp-12.8.0-h736e048_1.conda + sha256: 273475f002b091b66ce7366da04bf164c3732c03f8692ab2ee2d23335b6a82ba + md5: 13de36be8de3ae3f05ba127631599213 + depends: + - __glibc >=2.17,<3.0.a0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libxml2 >=2.12.7,<3.0a0 + - openssl >=3.3.2,<4.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 149312 + timestamp: 1728563338704 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-common-cpp-12.8.0-h1b94036_1.conda + sha256: 146e76aac169e3dbdce5d3b142b7930ac643795c765e7655d1989905ec7d3231 + md5: 793b1080ab2d958980f137a8643cd6e8 + depends: + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libxml2 >=2.12.7,<3.0a0 + - openssl >=3.3.2,<4.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 140832 + timestamp: 1728565334900 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-common-cpp-12.8.0-h9ca1f76_1.conda + sha256: 77ab04e8fe5636a2de9c718f72a43645f7502cd208868c8a91ffba385547d585 + md5: 7a187cd7b1445afc80253bb186a607cc + depends: + - __osx >=11.0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - libcxx >=17 + - libxml2 >=2.12.7,<3.0a0 + - openssl >=3.3.2,<4.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 121278 + timestamp: 1728563418777 +- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-files-datalake-cpp-12.12.0-ha633028_1.conda + sha256: 5371e4f3f920933bb89b926a85a67f24388227419abd6e99f6086481e5e8d5f2 + md5: 7c1980f89dd41b097549782121a73490 + depends: + - __glibc >=2.17,<3.0.a0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 + - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 287366 + timestamp: 1728729530295 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-files-datalake-cpp-12.12.0-h37d6d07_1.conda + sha256: 4079c617a75682e49bae63670d58fd6078ccfbbe55ca1f994acab3a74ab6bbcc + md5: b724f3b4b7f4e9b36c58cbe3ed8610a2 + depends: + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 + - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 + - libgcc >=13 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 260547 + timestamp: 1728730924071 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-files-datalake-cpp-12.12.0-hcdd55da_1.conda + sha256: f48523f8aa0b5b80f45a92f0556b388dd96f44ac2dc2f44a01d08c1822eec97d + md5: c49fbc5233fcbaa86391162ff1adef38 + depends: + - __osx >=11.0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 + - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 + - libcxx >=17 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 196032 + timestamp: 1728729672889 +- conda: https://conda.anaconda.org/conda-forge/noarch/backoff-2.2.1-pyhd8ed1ab_1.conda + sha256: f334115c6b0c6c2cd0d28595365f205ec7eaa60bcc5ff91a75d7245f728be820 + md5: a38b801f2bcc12af80c2e02a9e4ce7d9 + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 18816 + timestamp: 1733771192649 +- conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py312h2ec8cdc_2.conda + sha256: f2a59ccd20b4816dea9a2a5cb917eb69728271dbf1aeab4e1b7e609330a50b6f + md5: b0b867af6fc74b2a0aa206da29c0f3cf + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - libbrotlicommon 1.1.0 hb9d3cd8_2 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 349867 + timestamp: 1725267732089 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/brotli-python-1.1.0-py312h6f74592_2.conda + sha256: 9736bf660a0e4260c68f81d2635b51067f817813e6490ac9e8abd9a835dcbf6d + md5: e1e9727063057168d95f27a032acd0a4 + depends: + - libgcc >=13 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - libbrotlicommon 1.1.0 h86ecc28_2 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 356878 + timestamp: 1725267878508 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py312hde4cb15_2.conda + sha256: 254b411fa78ccc226f42daf606772972466f93e9bc6895eabb4cfda22f5178af + md5: a83c2ef76ccb11bc2349f4f17696b15d + depends: + - __osx >=11.0 + - libcxx >=17 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - libbrotlicommon 1.1.0 hd74edd7_2 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 339360 + timestamp: 1725268143995 +- conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda + sha256: 5ced96500d945fb286c9c838e54fa759aa04a7129c59800f0846b4335cee770d + md5: 62ee74e96c5ebb0af99386de58cf9553 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: bzip2-1.0.6 + license_family: BSD + size: 252783 + timestamp: 1720974456583 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h68df207_7.conda + sha256: 2258b0b33e1cb3a9852d47557984abb6e7ea58e3d7f92706ec1f8e879290c4cb + md5: 56398c28220513b9ea13d7b450acfb20 + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: bzip2-1.0.6 + license_family: BSD + size: 189884 + timestamp: 1720974504976 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda + sha256: adfa71f158cbd872a36394c56c3568e6034aa55c623634b37a4836bd036e6b91 + md5: fc6948412dbbbe9a4c9ddbbcfe0a79ab + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: bzip2-1.0.6 + license_family: BSD + size: 122909 + timestamp: 1720974522888 +- conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.4-hb9d3cd8_0.conda + sha256: d4f28d87b6339b94f74762c0076e29c8ef8ddfff51a564a92da2843573c18320 + md5: e2775acf57efd5af15b8e3d1d74d72d3 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 206085 + timestamp: 1734208189009 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/c-ares-1.34.4-h86ecc28_0.conda + sha256: 1187a41d4bb2afe02cb18690682edc98d1e9f5e0ccda638d8704a75ea1875bbe + md5: 356da36f35d36dcba16e43f1589d4e39 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 215979 + timestamp: 1734208193181 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.4-h5505292_0.conda + sha256: 09c0c8476e50b2955f474a4a1c17c4c047dd52993b5366b6ea8e968e583b921f + md5: c1c999a38a4303b29d75c636eaa13cf9 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 179496 + timestamp: 1734208291879 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2025.1.31-hbcca054_0.conda + sha256: bf832198976d559ab44d6cdb315642655547e26d826e34da67cbee6624cda189 + md5: 19f3a56f68d2fd06c516076bff482c52 + arch: x86_64 + platform: linux + license: ISC + size: 158144 + timestamp: 1738298224464 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2025.1.31-hcefe29a_0.conda + sha256: 66c6408ee461593cfdb2d78d82e6ed74d04a04ccb51df3ef8a5f35148c9c6eec + md5: 462cb166cd2e26a396f856510a3aff67 + arch: aarch64 + platform: linux + license: ISC + size: 158290 + timestamp: 1738299057652 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2025.1.31-hf0a4a13_0.conda + sha256: 7e12816618173fe70f5c638b72adf4bfd4ddabf27794369bb17871c5bb75b9f9 + md5: 3569d6a9141adc64d2fe4797f3289e06 + arch: arm64 + platform: osx + license: ISC + size: 158425 + timestamp: 1738298167688 +- conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.1.31-pyhd8ed1ab_0.conda + sha256: 42a78446da06a2568cb13e69be3355169fbd0ea424b00fc80b7d840f5baaacf3 + md5: c207fa5ac7ea99b149344385a9c0880d + depends: + - python >=3.9 + license: ISC + size: 162721 + timestamp: 1739515973129 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py312h06ac9bb_0.conda + sha256: cba6ea83c4b0b4f5b5dc59cb19830519b28f95d7ebef7c9c5cf1c14843621457 + md5: a861504bbea4161a9170b85d4d2be840 + depends: + - __glibc >=2.17,<3.0.a0 + - libffi >=3.4,<4.0a0 + - libgcc >=13 + - pycparser + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 294403 + timestamp: 1725560714366 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cffi-1.17.1-py312hac81daf_0.conda + sha256: 1162e3ca039e7ca7c0e78f0a020ed1bde968096841b663e3f393c966eb82f0f0 + md5: 1a256e5581b1099e9295cb84d53db3ea + depends: + - libffi >=3.4,<4.0a0 + - libgcc >=13 + - pycparser + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 312892 + timestamp: 1725561779888 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.1-py312h0fad829_0.conda + sha256: 8d91a0d01358b5c3f20297c6c536c5d24ccd3e0c2ddd37f9d0593d0f0070226f + md5: 19a5456f72f505881ba493979777b24e + depends: + - __osx >=11.0 + - libffi >=3.4,<4.0a0 + - pycparser + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 281206 + timestamp: 1725560813378 +- conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda + sha256: 4e0ee91b97e5de3e74567bdacea27f0139709fceca4db8adffbe24deffccb09b + md5: e83a31202d1c0a000fce3e9cf3825875 + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 47438 + timestamp: 1735929811779 +- conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda + sha256: c920d23cd1fcf565031c679adb62d848af60d6fbb0edc2d50ba475cea4f0d8ab + md5: f22f4d4970e09d68a10b922cbb0408d3 + depends: + - __unix + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 84705 + timestamp: 1734858922844 +- conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + sha256: ab29d57dc70786c1269633ba3dff20288b81664d3ff8d21af995742e2bb03287 + md5: 962b9857ee8e7018c22f2776ffa0b2d7 + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 27011 + timestamp: 1733218222191 +- conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.12.9-py312hd8ed1ab_0.conda + noarch: generic + sha256: f5c7ad0bd23fa8645ac279d99bddba656ff61483dc6312af12aae13910dfb210 + md5: a5b10f166467fecec692abaee84d16aa + depends: + - python 3.12.9.* + - python_abi * *_cp312 + license: Python-2.0 + size: 44836 + timestamp: 1739519561557 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-crt-tools-12.8.61-ha770c72_1.conda + sha256: 80a2ddb433b3d3b0abbf97febf5504cbda451e19f3a504936ef961209c647238 + md5: a5c66c2b4b7fb464129a1163a49c9e53 + depends: + - cuda-version >=12.8,<12.9.0a0 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + size: 27215 + timestamp: 1738873838328 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cuda-crt-tools-12.8.61-h579c4fd_1.conda + sha256: 78bfe492a98c2460960e2e9f7bef39326a889e2abb54debc9959ec7494822717 + md5: 04dbd57df8678150c7e5b37da647c702 + depends: + - cuda-version >=12.8,<12.9.0a0 + constrains: + - arm-variant * sbsa + arch: aarch64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + size: 27415 + timestamp: 1738873896497 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-cudart-12.8.57-h5888daf_1.conda + sha256: cc58a25d7ab38d8d27aa88b151dd55406cdfe5429b03419a13af8e9aca2f2596 + md5: cc1b22f4f3734a8b0e80aa874e9f1744 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-cudart_linux-64 12.8.57 h3f2d84a_1 + - cuda-version >=12.8,<12.9.0a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + size: 22706 + timestamp: 1739215390850 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cuda-cudart-12.8.57-h3ae8b8a_1.conda + sha256: 5790a30774eab55f84afe42ec9e6d81298b31ae3cf2584e245958bc742cfd280 + md5: 3d8375d2e0d1957db66cfe319c76adeb + depends: + - cuda-cudart_linux-aarch64 12.8.57 h3ae8b8a_1 + - cuda-version >=12.8,<12.9.0a0 + - libgcc >=13 + - libstdcxx >=13 + constrains: + - arm-variant * sbsa + arch: aarch64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + size: 22831 + timestamp: 1739215503338 +- conda: https://conda.anaconda.org/conda-forge/noarch/cuda-cudart_linux-64-12.8.57-h3f2d84a_1.conda + sha256: a60faad361f3f21a387d8c684114258de63305703db13c76417b5cf0956205a6 + md5: dff7d2f9a0ee9ab03bfff88fff9621da + depends: + - cuda-version >=12.8,<12.9.0a0 + license: LicenseRef-NVIDIA-End-User-License-Agreement + size: 192905 + timestamp: 1739215375478 +- conda: https://conda.anaconda.org/conda-forge/noarch/cuda-cudart_linux-aarch64-12.8.57-h3ae8b8a_1.conda + sha256: 70caf7f62c2a645d9ef487fe2f41433145e11786e91fd87dfed6338babdefe04 + md5: aa86deee0e8c93f71fde92db26339407 + depends: + - cuda-version >=12.8,<12.9.0a0 + constrains: + - arm-variant * sbsa + license: LicenseRef-NVIDIA-End-User-License-Agreement + size: 207838 + timestamp: 1739215492480 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-cuobjdump-12.8.55-hbd13f7d_0.conda + sha256: 424bea1fdfca90acf5c8c255e4b648315e8a07a8065a234dd4b28108d7514d59 + md5: 5ab6c95d69311e911bd98d48118ce047 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-nvdisasm + - cuda-version >=12.8,<12.9.0a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + size: 232521 + timestamp: 1737670501800 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cuda-cuobjdump-12.8.55-h05609ea_0.conda + sha256: 1b17aae0d05f839d7a5e08e40edbca2666954db95ed38b85d4c4aca9e1e568ca + md5: dcf96c9ad817538ebdcb1430f4510328 + depends: + - cuda-nvdisasm + - cuda-version >=12.8,<12.9.0a0 + - libgcc >=13 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + size: 235857 + timestamp: 1737670525095 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-cupti-12.8.57-hbd13f7d_0.conda + sha256: ff8fb3a51c18a43e8de90df30094e0ae4bb4ae0f35a473aa2f8ab052c5318816 + md5: 3a98112d0341979bbb2e75e71b36a4c0 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.8,<12.9.0a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + size: 1845047 + timestamp: 1737666283622 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cuda-cupti-12.8.57-h5101a13_0.conda + sha256: e0b0fe34fcb50c9c6e600bc5e29c7f65e5d09535eeeefae737819f71928c4813 + md5: 619e88e4871378089566f235461b4677 + depends: + - cuda-version >=12.8,<12.9.0a0 + - libgcc >=13 + - libstdcxx >=13 + constrains: + - arm-variant * sbsa + arch: aarch64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + size: 1620833 + timestamp: 1737666390106 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-nvcc-tools-12.8.61-he02047a_1.conda + sha256: 2436f383674e29a788f17e8aa5fc9c86819e122725d2291eda63260f15100496 + md5: fb406ed72a4f4af7acfd591c6787b903 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-crt-tools 12.8.61 ha770c72_1 + - cuda-nvvm-tools 12.8.61 he02047a_1 + - cuda-version >=12.8,<12.9.0a0 + - libgcc >=12 + - libstdcxx >=12 + constrains: + - gcc_impl_linux-64 >=6,<15.0a0 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + size: 25714998 + timestamp: 1738873949175 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cuda-nvcc-tools-12.8.61-h614329b_1.conda + sha256: a82b060291312d286b06ccd04f61023c08afe66014fe356b1c594285e61b0b7b + md5: 8c753c56765e2c8babc05cb5e4848c51 + depends: + - cuda-crt-tools 12.8.61 h579c4fd_1 + - cuda-nvvm-tools 12.8.61 h614329b_1 + - cuda-version >=12.8,<12.9.0a0 + - libgcc >=12 + - libstdcxx >=12 + constrains: + - arm-variant * sbsa + - gcc_impl_linux-aarch64 >=6,<15.0a0 + arch: aarch64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + size: 22320853 + timestamp: 1738874044293 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-nvdisasm-12.8.55-hbd13f7d_0.conda + sha256: 53377e888305b28e5c249b423291de37478ea465b2e4ba0247584491999a1284 + md5: 74f716637584db374166bf8b04f57a13 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.8,<12.9.0a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + size: 5122708 + timestamp: 1737667356055 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cuda-nvdisasm-12.8.55-h5101a13_0.conda + sha256: 292b078110ea97c19401a9fbdf359325d472a3b5c164c256846da82e6b3e3a9e + md5: 3829037f6474309e563bc86ea5344669 + depends: + - cuda-version >=12.8,<12.9.0a0 + - libgcc >=13 + - libstdcxx >=13 + constrains: + - arm-variant * sbsa + arch: aarch64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + size: 5077857 + timestamp: 1737667422732 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-nvvm-tools-12.8.61-he02047a_1.conda + sha256: a604b228e8aa84c3739c1b285857bf2c206a3d0ed7798216f5f651a0ac257ae3 + md5: f82afee87477746249975726453c56bf + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.8,<12.9.0a0 + - libgcc >=12 + - libstdcxx >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + size: 24622383 + timestamp: 1738873904778 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cuda-nvvm-tools-12.8.61-h614329b_1.conda + sha256: 9159c3b04c2eb7ed721e7a7ef6d7dec5b5bb58d5874d220299745034f10f5a28 + md5: 1f56d00ef41873791b9c6ab4642964b3 + depends: + - cuda-version >=12.8,<12.9.0a0 + - libgcc >=12 + - libstdcxx >=12 + constrains: + - arm-variant * sbsa + arch: aarch64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + size: 23961474 + timestamp: 1738873988055 +- conda: https://conda.anaconda.org/conda-forge/noarch/cuda-version-12.8-h5d125a7_3.conda + sha256: 6f93ceb66267e69728d83cf98673221f6b1f95a3514b3a97777cfd0ef8e24f3f + md5: 794eaca58880616a508dd6f6eb389266 + constrains: + - cudatoolkit 12.8|12.8.* + - __cuda >=12 + license: LicenseRef-NVIDIA-End-User-License-Agreement + size: 21086 + timestamp: 1737663758355 +- conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda + sha256: 7e09bd083a609138b780fcc4535924cb96814d2c908a36d4c64a2ba9ee3efe7f + md5: 3e087f072ce03c43a9b60522f5d0ca2f + depends: + - aiohttp + - dill >=0.3.0,<0.3.8 + - fsspec >=2021.11.1 + - huggingface_hub >=0.14.0,<1.0.0 + - importlib-metadata + - multiprocess + - numpy >=1.17 + - packaging + - pandas + - pyarrow >=8.0.0 + - python >=3.8.0 + - python-xxhash + - pyyaml >=5.1 + - requests >=2.19.0 + - tqdm >=4.62.1 + license: Apache-2.0 + license_family: Apache + size: 347303 + timestamp: 1691593908658 +- conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.18-pyhd8ed1ab_0.conda + sha256: d614bcff10696f1efc714df07651b50bf3808401fcc03814309ecec242cc8870 + md5: 0cef44b1754ae4d6924ac0eef6b9fdbe + depends: + - python >=3.9 + - wrapt <2,>=1.10 + license: MIT + license_family: MIT + size: 14382 + timestamp: 1737987072859 +- conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda + sha256: 4ff20c6be028be2825235631c45d9e4a75bca1de65f8840c02dfb28ea0137c45 + md5: 5e4f3466526c52bc9af2d2353a1460bd + depends: + - python >=3.7 + license: BSD-3-Clause + license_family: BSD + size: 87553 + timestamp: 1690101185422 +- conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda + sha256: 3ec40ccf63f2450c5e6c7dd579e42fc2e97caf0d8cd4ba24aa434e6fc264eda0 + md5: 5fbd60d61d21b4bd2f9d7a48fe100418 + depends: + - python >=3.9,<4.0.0 + - sniffio + constrains: + - aioquic >=1.0.0 + - wmi >=1.5.1 + - httpx >=0.26.0 + - trio >=0.23 + - cryptography >=43 + - httpcore >=1.0.0 + - idna >=3.7 + - h2 >=4.1.0 + license: ISC + license_family: OTHER + size: 172172 + timestamp: 1733256829961 +- conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda + sha256: b91a19eb78edfc2dbb36de9a67f74ee2416f1b5273dd7327abe53f2dbf864736 + md5: da16dd3b0b71339060cd44cb7110ddf9 + depends: + - dnspython >=2.0.0 + - idna >=2.0.0 + - python >=3.9 + license: Unlicense + size: 44401 + timestamp: 1733300827551 +- conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_1.conda + sha256: e0d0fdf587aa0ed0ff08b2bce3ab355f46687b87b0775bfba01cc80a859ee6a2 + md5: 0794f8807ff2c6f020422cacb1bd7bfa + depends: + - email-validator >=2.2.0,<2.2.1.0a0 + license: Unlicense + size: 6552 + timestamp: 1733300828176 +- conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda + sha256: cbde2c64ec317118fc06b223c5fd87c8a680255e7348dd60e7b292d2e103e701 + md5: a16662747cdeb9abbac74d0057cc976e + depends: + - python >=3.9 + license: MIT and PSF-2.0 + size: 20486 + timestamp: 1733208916977 +- conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.8-pyh29332c3_0.conda + sha256: 5e1e3d5cf306d9b3b5fe0d45a9e8440e8770ba7e4a5fac1ac847ca693b0dc064 + md5: 753382711adab47269f0bfe994906bc4 + depends: + - python >=3.9 + - starlette >=0.40.0,<0.46.0 + - typing_extensions >=4.8.0 + - pydantic >=1.7.4,!=1.8,!=1.8.1,!=2.0.0,!=2.0.1,!=2.1.0,<3.0.0 + - email_validator >=2.0.0 + - fastapi-cli >=0.0.5 + - httpx >=0.23.0 + - jinja2 >=3.1.5 + - python-multipart >=0.0.18 + - uvicorn-standard >=0.12.0 + - python + license: MIT + license_family: MIT + size: 77940 + timestamp: 1738326226051 +- conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.7-pyhd8ed1ab_0.conda + sha256: 300683731013b7221922339cd40430bb3c2ddeeb658fd7e37f5099ffe64e4db0 + md5: d960e0ea9e1c561aa928f6c4439f04c7 + depends: + - python >=3.9 + - rich-toolkit >=0.11.1 + - typer >=0.12.3 + - uvicorn-standard >=0.15.0 + license: MIT + license_family: MIT + size: 15546 + timestamp: 1734302408607 +- conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.17.0-pyhd8ed1ab_0.conda + sha256: 006d7e5a0c17a6973596dd86bfc80d74ce541144d2aee2d22d46fd41df560a63 + md5: 7f402b4a1007ee355bc50ce4d24d4a57 + depends: + - python >=3.9 + license: Unlicense + size: 17544 + timestamp: 1737517924333 +- conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.12.1-h267a509_2.conda + sha256: b2e3c449ec9d907dd4656cb0dc93e140f447175b125a3824b31368b06c666bb6 + md5: 9ae35c3d96db2c94ce0cef86efdfa2cb + depends: + - libgcc-ng >=12 + - libpng >=1.6.39,<1.7.0a0 + - libzlib >=1.2.13,<2.0.0a0 + arch: x86_64 + platform: linux + license: GPL-2.0-only OR FTL + size: 634972 + timestamp: 1694615932610 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/freetype-2.12.1-hf0a5ef3_2.conda + sha256: 7af93030f4407f076dce181062360efac2cd54dce863b5d7765287a6f5382537 + md5: a5ab74c5bd158c3d5532b66d8d83d907 + depends: + - libgcc-ng >=12 + - libpng >=1.6.39,<1.7.0a0 + - libzlib >=1.2.13,<2.0.0a0 + arch: aarch64 + platform: linux + license: GPL-2.0-only OR FTL + size: 642092 + timestamp: 1694617858496 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/freetype-2.12.1-hadb7bae_2.conda + sha256: 791673127e037a2dc0eebe122dc4f904cb3f6e635bb888f42cbe1a76b48748d9 + md5: e6085e516a3e304ce41a8ee08b9b89ad + depends: + - libpng >=1.6.39,<1.7.0a0 + - libzlib >=1.2.13,<2.0.0a0 + arch: arm64 + platform: osx + license: GPL-2.0-only OR FTL + size: 596430 + timestamp: 1694616332835 +- conda: https://conda.anaconda.org/conda-forge/linux-64/frozenlist-1.5.0-py312h178313f_1.conda + sha256: 501e20626798b6d7f130f4db0fb02c0385d8f4c11ca525925602a4208afb343f + md5: fb986e1c089021979dc79606af78ef8f + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 60939 + timestamp: 1737645356438 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/frozenlist-1.5.0-py312hcc812fe_1.conda + sha256: 84895c5e207e0cb2044f3607fb36b82eb8cb45f0a009d03dc04c777ed975757d + md5: 9090bf5c43e8011fb2e9a82a1db20cc3 + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 60472 + timestamp: 1737645511278 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/frozenlist-1.5.0-py312h998013c_1.conda + sha256: d503ac8c050abdbd129253973f23be34944978d510de78ef5a3e6aa1e3d9552d + md5: 5eb3715c7e3fa9b533361375bfefe6ee + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + size: 57256 + timestamp: 1737645503377 +- conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2025.2.0-pyhd8ed1ab_0.conda + sha256: 7433b8469074985b651693778ec6f03d2a23fad9919a515e3b8545996b5e721a + md5: d9ea16b71920b03beafc17fcca16df90 + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 138186 + timestamp: 1738501352608 +- conda: https://conda.anaconda.org/conda-forge/linux-64/gflags-2.2.2-h5888daf_1005.conda + sha256: 6c33bf0c4d8f418546ba9c250db4e4221040936aef8956353bc764d4877bc39a + md5: d411fc29e338efb48c5fd4576d71d881 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 119654 + timestamp: 1726600001928 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gflags-2.2.2-h5ad3122_1005.conda + sha256: 28fe6b40b20454106d5e4ef6947cf298c13cc72a46347bbc49b563cd3a463bfa + md5: 4ff634d515abbf664774b5e1168a9744 + depends: + - libgcc >=13 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 106638 + timestamp: 1726599967617 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/gflags-2.2.2-hf9b8971_1005.conda + sha256: fd56ed8a1dab72ab90d8a8929b6f916a6d9220ca297ff077f8f04c5ed3408e20 + md5: 57a511a5905caa37540eb914dfcbf1fb + depends: + - __osx >=11.0 + - libcxx >=17 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 82090 + timestamp: 1726600145480 +- conda: https://conda.anaconda.org/conda-forge/noarch/gguf-0.14.0-pyh267e887_0.conda + sha256: 223a157e2ce9e1195eced1bd42041b8219cc61c0a135f428256cf2753cac8142 + md5: 3fb0305a9a6f1d7607db045fdc42f705 + depends: + - python >=3.8 + - numpy >=1.17 + - tqdm >=4.27 + - pyyaml >=5.1 + - sentencepiece >=0.1.98,<=0.2.0 + - python + license: MIT + license_family: MIT + size: 74687 + timestamp: 1737040120169 +- conda: https://conda.anaconda.org/conda-forge/linux-64/glog-0.7.1-hbabe93e_0.conda + sha256: dc824dc1d0aa358e28da2ecbbb9f03d932d976c8dca11214aa1dcdfcbd054ba2 + md5: ff862eebdfeb2fd048ae9dc92510baca + depends: + - gflags >=2.2.2,<2.3.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 143452 + timestamp: 1718284177264 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/glog-0.7.1-h468a4a4_0.conda + sha256: 920795d4f775a9f47e91c2223e64847f0b212b3fedc56c137c5889e32efe8ba0 + md5: 08940a32c6ced3703d1412dd37df4f62 + depends: + - gflags >=2.2.2,<2.3.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 145811 + timestamp: 1718284208668 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/glog-0.7.1-heb240a5_0.conda + sha256: 9fc77de416953aa959039db72bc41bfa4600ae3ff84acad04a7d0c1ab9552602 + md5: fef68d0a95aa5b84b5c1a4f6f3bf40e1 + depends: + - __osx >=11.0 + - gflags >=2.2.2,<2.3.0a0 + - libcxx >=16 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 112215 + timestamp: 1718284365403 +- conda: https://conda.anaconda.org/conda-forge/linux-64/gmp-6.3.0-hac33072_2.conda + sha256: 309cf4f04fec0c31b6771a5809a1909b4b3154a2208f52351e1ada006f4c750c + md5: c94a5994ef49749880a8139cf9afcbe1 + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: GPL-2.0-or-later OR LGPL-3.0-or-later + size: 460055 + timestamp: 1718980856608 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gmp-6.3.0-h0a1ffab_2.conda + sha256: a5e341cbf797c65d2477b27d99091393edbaa5178c7d69b7463bb105b0488e69 + md5: 7cbfb3a8bb1b78a7f5518654ac6725ad + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: aarch64 + platform: linux + license: GPL-2.0-or-later OR LGPL-3.0-or-later + size: 417323 + timestamp: 1718980707330 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/gmp-6.3.0-h7bae524_2.conda + sha256: 76e222e072d61c840f64a44e0580c2503562b009090f55aa45053bf1ccb385dd + md5: eed7278dfbab727b56f2c0b64330814b + depends: + - __osx >=11.0 + - libcxx >=16 + arch: arm64 + platform: osx + license: GPL-2.0-or-later OR LGPL-3.0-or-later + size: 365188 + timestamp: 1718981343258 +- conda: https://conda.anaconda.org/conda-forge/linux-64/gmpy2-2.1.5-py312h7201bc8_3.conda + sha256: addd0bc226ca86c11f1223ab322d12b67501c2b3d93749bdab2068ccaedd8ef0 + md5: 673ef4d6611f5b4ca7b5c1f8c65a38dc + depends: + - __glibc >=2.17,<3.0.a0 + - gmp >=6.3.0,<7.0a0 + - libgcc >=13 + - mpc >=1.3.1,<2.0a0 + - mpfr >=4.2.1,<5.0a0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: LGPL-3.0-or-later + license_family: LGPL + size: 209631 + timestamp: 1733462668219 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gmpy2-2.1.5-py312he9d48ea_3.conda + sha256: b92ffcb02ee027db2b3b8b1256ecf9e04afd4c1680467574889419c9ed42c089 + md5: 9defe233dc6909ac868a1ca50b2ca84d + depends: + - gmp >=6.3.0,<7.0a0 + - libgcc >=13 + - mpc >=1.3.1,<2.0a0 + - mpfr >=4.2.1,<5.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: LGPL-3.0-or-later + license_family: LGPL + size: 201489 + timestamp: 1733462747377 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/gmpy2-2.1.5-py312h524cf62_3.conda + sha256: 0ea196e4b706321951af1eebdb6a4eb9307faa1fd5361bcf49acb150e71774f7 + md5: ab7a5d10c7b4e249a9fe7bc280909803 + depends: + - __osx >=11.0 + - gmp >=6.3.0,<7.0a0 + - mpc >=1.3.1,<2.0a0 + - mpfr >=4.2.1,<5.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: LGPL-3.0-or-later + license_family: LGPL + size: 147983 + timestamp: 1733462785197 +- conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.68.0-pyhd8ed1ab_0.conda + sha256: efaca61923e45849a3d763280305cb3a00a769546ce5df2b1bbe24db40aa23af + md5: 3b8e056a42f71c9398857ecf0b8fbcb6 + depends: + - protobuf >=3.20.2,<6.0.0.dev0,!=3.20.0,!=3.20.1,!=4.21.1,!=4.21.2,!=4.21.3,!=4.21.4,!=4.21.5 + - python >=3.9 + license: Apache-2.0 + license_family: APACHE + size: 67755 + timestamp: 1740136133858 +- conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda + sha256: 622516185a7c740d5c7f27016d0c15b45782c1501e5611deec63fd70344ce7c8 + md5: 7ee49e89531c0dcbba9466f6d115d585 + depends: + - python >=3.9 + - typing_extensions + license: MIT + license_family: MIT + size: 51846 + timestamp: 1733327599467 +- conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda + sha256: 0aa1cdc67a9fe75ea95b5644b734a756200d6ec9d0dff66530aec3d1c1e9df75 + md5: b4754fb1bdcb70c8fd54f918301582c6 + depends: + - hpack >=4.1,<5 + - hyperframe >=6.1,<7 + - python >=3.9 + license: MIT + license_family: MIT + size: 53888 + timestamp: 1738578623567 +- conda: https://conda.anaconda.org/conda-forge/linux-64/hf-transfer-0.1.9-py312h5bc9d60_1.conda + sha256: 21acb87a6403f88b2dbdefb79a537bc8fe871b86c60f9b690206eaf7ad1f009c + md5: 3639aa7b1297e680220f52c2b8a21200 + depends: + - python + - __glibc >=2.17,<3.0.a0 + - python_abi 3.12.* *_cp312 + - openssl >=3.4.1,<4.0a0 + constrains: + - __glibc >=2.17 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 1339225 + timestamp: 1739803760467 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/hf-transfer-0.1.9-py312he5cae2c_1.conda + sha256: 5554caf02aa37f3ef9b35d687f515385a50fd505987f5c4b84433d5c50d6a3b5 + md5: fbb03e07e1aefc42b856f0a06dd999f6 + depends: + - python + - python 3.12.* *_cpython + - python_abi 3.12.* *_cp312 + - openssl >=3.4.1,<4.0a0 + constrains: + - __glibc >=2.17 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 1366847 + timestamp: 1739803796587 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/hf-transfer-0.1.9-py312hfba41e8_1.conda + sha256: 15b1589c703c6a1677008e422175f540f3da35a9a63c588540a219042c697ea4 + md5: baa81a0f9e0470d67728651af77dc1c1 + depends: + - python + - __osx >=11.0 + - python 3.12.* *_cpython + - openssl >=3.4.1,<4.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - __osx >=11.0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + size: 1233816 + timestamp: 1739803893697 +- conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda + sha256: 6ad78a180576c706aabeb5b4c8ceb97c0cb25f1e112d76495bff23e3779948ba + md5: 0a802cb9888dd14eeefc611f05c40b6e + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 30731 + timestamp: 1737618390337 +- conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda + sha256: c84d012a245171f3ed666a8bf9319580c269b7843ffa79f26468842da3abd5df + md5: 2ca8e6dbc86525c8b95e3c0ffa26442e + depends: + - python >=3.8 + - h11 >=0.13,<0.15 + - h2 >=3,<5 + - sniffio 1.* + - anyio >=3.0,<5.0 + - certifi + license: BSD-3-Clause + license_family: BSD + size: 48959 + timestamp: 1731707562362 +- conda: https://conda.anaconda.org/conda-forge/linux-64/httptools-0.6.4-py312h66e93f0_0.conda + sha256: 621e7e050b888e5239d33e37ea72d6419f8367e5babcad38b755586f20264796 + md5: 8b1160b32557290b64d5be68db3d996d + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 101872 + timestamp: 1732707756745 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/httptools-0.6.4-py312hb2c0f52_0.conda + sha256: 0bd1f30224af142711d11033a7469ae402a1147143f399f7341bbc1d8178c722 + md5: 5e70a6de59352f9a52e9caa7f3447390 + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 101255 + timestamp: 1732707891645 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/httptools-0.6.4-py312hea69d52_0.conda + sha256: 5e93cda79e32e8c0039e05ea1939e688da336187dab025f699b42ef529e848be + md5: e1747a8e8d2aca5499aaea9993bf31ff + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 85623 + timestamp: 1732707871414 +- conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda + sha256: cd0f1de3697b252df95f98383e9edb1d00386bfdd03fdf607fa42fe5fcb09950 + md5: d6989ead454181f4f9bc987d3dc4e285 + depends: + - anyio + - certifi + - httpcore 1.* + - idna + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 63082 + timestamp: 1733663449209 +- conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.29.1-pyhd8ed1ab_0.conda + sha256: f75ca9436fe11d0def6e575d29e0614033c45c90f37895a3b2bb3536612b251c + md5: 0bbbf72b600a1df32666a084769bf240 + depends: + - filelock + - fsspec >=2023.5.0 + - packaging >=20.9 + - python >=3.9 + - pyyaml >=5.1 + - requests + - tqdm >=4.42.1 + - typing-extensions >=3.7.4.3 + - typing_extensions >=3.7.4.3 + license: Apache-2.0 + license_family: APACHE + size: 287974 + timestamp: 1740068383431 +- conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda + sha256: 77af6f5fe8b62ca07d09ac60127a30d9069fdc3c68d6b256754d0ffb1f7779f8 + md5: 8e6923fc12f1fe8f8c4e5c9f343256ac + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 17397 + timestamp: 1737618427549 +- conda: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda + sha256: 71e750d509f5fa3421087ba88ef9a7b9be11c53174af3aa4d06aff4c18b38e8e + md5: 8b189310083baabfb622af68fd9d3ae3 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 12129203 + timestamp: 1720853576813 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda + sha256: 813298f2e54ef087dbfc9cc2e56e08ded41de65cff34c639cc8ba4e27e4540c9 + md5: 268203e8b983fddb6412b36f2024e75c + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 12282786 + timestamp: 1720853454991 +- conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda + sha256: d7a472c9fd479e2e8dcb83fb8d433fce971ea369d704ece380e876f9c3494e87 + md5: 39a4f67be3286c86d696df570b1201b7 + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 49765 + timestamp: 1733211921194 +- conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_1.conda + sha256: 13766b88fc5b23581530d3a0287c0c58ad82f60401afefab283bf158d2be55a9 + md5: 315607a3030ad5d5227e76e0733798ff + depends: + - python >=3.9 + - zipp >=0.5 + license: Apache-2.0 + license_family: APACHE + size: 28623 + timestamp: 1733223207185 +- conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda + sha256: 0ec8f4d02053cd03b0f3e63168316530949484f80e16f5e2fb199a1d117a89ca + md5: 6837f3eff7dcea42ecd714ce1ac2b108 + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 11474 + timestamp: 1733223232820 +- conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.5-pyhd8ed1ab_0.conda + sha256: 98977694b9ecaa3218662f843425f39501f81973c450f995eec68f1803ed71c3 + md5: 2752a6ed44105bfb18c9bef1177d9dcd + depends: + - markupsafe >=2.0 + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 112561 + timestamp: 1734824044952 +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + sha256: 19d8bd5bb2fde910ec59e081eeb59529491995ce0d653a5209366611023a0b3a + md5: 4ebae00eae9705b0c3d6d1018a81d047 + depends: + - importlib-metadata >=4.8.3 + - jupyter_core >=4.12,!=5.0.* + - python >=3.9 + - python-dateutil >=2.8.2 + - pyzmq >=23.0 + - tornado >=6.2 + - traitlets >=5.3 + license: BSD-3-Clause + license_family: BSD + size: 106342 + timestamp: 1733441040958 +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + sha256: 732b1e8536bc22a5a174baa79842d79db2f4956d90293dd82dc1b3f6099bcccd + md5: 0a2980dada0dd7fd0998f0342308b1b1 + depends: + - __unix + - platformdirs >=2.5 + - python >=3.8 + - traitlets >=5.3 + license: BSD-3-Clause + license_family: BSD + size: 57671 + timestamp: 1727163547058 +- conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 + sha256: 150c05a6e538610ca7c43beb3a40d65c90537497a4f6a5f4d15ec0451b6f5ebb + md5: 30186d27e2c9fa62b45fb1476b7200e3 + depends: + - libgcc-ng >=10.3.0 + arch: x86_64 + platform: linux + license: LGPL-2.1-or-later + size: 117831 + timestamp: 1646151697040 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/keyutils-1.6.1-h4e544f5_0.tar.bz2 + sha256: 6d4233d97a9b38acbb26e1268bcf8c10a8e79c2aed7e5a385ec3769967e3e65b + md5: 1f24853e59c68892452ef94ddd8afd4b + depends: + - libgcc-ng >=10.3.0 + arch: aarch64 + platform: linux + license: LGPL-2.1-or-later + size: 112327 + timestamp: 1646166857935 +- conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda + sha256: 99df692f7a8a5c27cd14b5fb1374ee55e756631b9c3d659ed3ee60830249b238 + md5: 3f43953b7d3fb3aaa1d0d0723d91e368 + depends: + - keyutils >=1.6.1,<2.0a0 + - libedit >=3.1.20191231,<3.2.0a0 + - libedit >=3.1.20191231,<4.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - openssl >=3.3.1,<4.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 1370023 + timestamp: 1719463201255 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/krb5-1.21.3-h50a48e9_0.conda + sha256: 0ec272afcf7ea7fbf007e07a3b4678384b7da4047348107b2ae02630a570a815 + md5: 29c10432a2ca1472b53f299ffb2ffa37 + depends: + - keyutils >=1.6.1,<2.0a0 + - libedit >=3.1.20191231,<3.2.0a0 + - libedit >=3.1.20191231,<4.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - openssl >=3.3.1,<4.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 1474620 + timestamp: 1719463205834 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda + sha256: 4442f957c3c77d69d9da3521268cad5d54c9033f1a73f99cde0a3658937b159b + md5: c6dc8a0fdec13a0565936655c33069a1 + depends: + - __osx >=11.0 + - libcxx >=16 + - libedit >=3.1.20191231,<3.2.0a0 + - libedit >=3.1.20191231,<4.0a0 + - openssl >=3.3.1,<4.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 1155530 + timestamp: 1719463474401 +- conda: https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.17-h717163a_0.conda + sha256: d6a61830a354da022eae93fa896d0991385a875c6bba53c82263a289deda9db8 + md5: 000e85703f0fd9594c81710dd5066471 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libtiff >=4.7.0,<4.8.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 248046 + timestamp: 1739160907615 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lcms2-2.17-hc88f144_0.conda + sha256: 47cf6a4780dc41caa9bc95f020eed485b07010c9ccc85e9ef44b538fedb5341d + md5: b87b1abd2542cf65a00ad2e2461a3083 + depends: + - libgcc >=13 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libtiff >=4.7.0,<4.8.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 287007 + timestamp: 1739161069194 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.17-h7eeda09_0.conda + sha256: 310a62c2f074ebd5aa43b3cd4b00d46385ce680fa2132ecee255a200e2d2f15f + md5: 92a61fd30b19ebd5c1621a5bfe6d8b5f + depends: + - __osx >=11.0 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libtiff >=4.7.0,<4.8.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 212125 + timestamp: 1739161108467 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_4.conda + sha256: db73f38155d901a610b2320525b9dd3b31e4949215c870685fd92ea61b5ce472 + md5: 01f8d123c96816249efd255a31ad7712 + depends: + - __glibc >=2.17,<3.0.a0 + constrains: + - binutils_impl_linux-64 2.43 + arch: x86_64 + platform: linux + license: GPL-3.0-only + license_family: GPL + size: 671240 + timestamp: 1740155456116 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_4.conda + sha256: 016832a70b0aa97e1c4e47e23c00b0c34def679de25146736df353199f684f0d + md5: 80c9ad5e05e91bb6c0967af3880c9742 + constrains: + - binutils_impl_linux-aarch64 2.43 + arch: aarch64 + platform: linux + license: GPL-3.0-only + license_family: GPL + size: 699058 + timestamp: 1740155620594 +- conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 + sha256: cb55f36dcd898203927133280ae1dc643368af041a48bcf7c026acb7c47b0c12 + md5: 76bbff344f0134279f225174e9064c8f + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 281798 + timestamp: 1657977462600 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.0.0-h4de3ea5_0.tar.bz2 + sha256: 2d09ef9b7796d83364957e420b41c32d94e628c3f0520b61c332518a7b5cd586 + md5: 1a0ffc65e03ce81559dbcb0695ad1476 + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 262096 + timestamp: 1657978241894 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 + sha256: 6f068bb53dfb6147d3147d981bb851bb5477e769407ad4e6a68edf482fdcb958 + md5: de462d5aacda3b30721b512c5da4e742 + depends: + - libcxx >=13.0.1 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 215721 + timestamp: 1657977558796 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda + sha256: 143a586aa67d50622ef703de57b9d43f44945836d6568e0e7aa174bd8c45e0d4 + md5: 488f260ccda0afaf08acb286db439c2f + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + constrains: + - libabseil-static =20240722.0=cxx17* + - abseil-cpp =20240722.0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 1311599 + timestamp: 1736008414161 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h18dbdb1_4.conda + sha256: bb6c5fb3b8de5f90735c5252b57efb3c268ee222c755569dac18065f05147670 + md5: 633b9fe454ffea2aaf29e191d946a83b + depends: + - libgcc >=13 + - libstdcxx >=13 + constrains: + - abseil-cpp =20240722.0 + - libabseil-static =20240722.0=cxx17* + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 1334844 + timestamp: 1736008472455 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_h07bc746_4.conda + sha256: 05fa5e5e908962b9c5aba95f962e2ca81d9599c4715aebe5e4ddb72b309d1770 + md5: c2d95bd7aa8d564a9bd7eca5e571a5b3 + depends: + - __osx >=11.0 + - libcxx >=18 + constrains: + - libabseil-static =20240722.0=cxx17* + - abseil-cpp =20240722.0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 1178260 + timestamp: 1736008642885 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-19.0.1-hfa2a6e7_0_cpu.conda + sha256: 7b1f61045b37266989023a007d6331875062bb658068a6e6ab49720495ca3543 + md5: 11b712ed1316c98592f6bae7ccfaa86c + depends: + - __glibc >=2.17,<3.0.a0 + - aws-crt-cpp >=0.29.9,<0.29.10.0a0 + - aws-sdk-cpp >=1.11.489,<1.11.490.0a0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - azure-identity-cpp >=1.10.0,<1.10.1.0a0 + - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 + - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 + - bzip2 >=1.0.8,<2.0a0 + - glog >=0.7.1,<0.8.0a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libbrotlidec >=1.1.0,<1.2.0a0 + - libbrotlienc >=1.1.0,<1.2.0a0 + - libgcc >=13 + - libgoogle-cloud >=2.35.0,<2.36.0a0 + - libgoogle-cloud-storage >=2.35.0,<2.36.0a0 + - libopentelemetry-cpp >=1.18.0,<1.19.0a0 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libre2-11 >=2024.7.2 + - libstdcxx >=13 + - libutf8proc >=2.10.0,<2.11.0a0 + - libzlib >=1.3.1,<2.0a0 + - lz4-c >=1.10.0,<1.11.0a0 + - orc >=2.0.3,<2.0.4.0a0 + - re2 + - snappy >=1.2.1,<1.3.0a0 + - zstd >=1.5.6,<1.6.0a0 + constrains: + - arrow-cpp <0.0a0 + - parquet-cpp <0.0a0 + - apache-arrow-proc =*=cpu + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 8967810 + timestamp: 1739768880886 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-19.0.1-h36213f4_0_cpu.conda + sha256: 3f141e56555676b4a9fd885a0a7452daa2530eb65cfbba1271f7a07457a82003 + md5: cfeb98942a3ef36c0bb2b09b084349da + depends: + - aws-crt-cpp >=0.29.9,<0.29.10.0a0 + - aws-sdk-cpp >=1.11.489,<1.11.490.0a0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - azure-identity-cpp >=1.10.0,<1.10.1.0a0 + - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 + - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 + - bzip2 >=1.0.8,<2.0a0 + - glog >=0.7.1,<0.8.0a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libbrotlidec >=1.1.0,<1.2.0a0 + - libbrotlienc >=1.1.0,<1.2.0a0 + - libgcc >=13 + - libgoogle-cloud >=2.35.0,<2.36.0a0 + - libgoogle-cloud-storage >=2.35.0,<2.36.0a0 + - libopentelemetry-cpp >=1.18.0,<1.19.0a0 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libre2-11 >=2024.7.2 + - libstdcxx >=13 + - libutf8proc >=2.10.0,<2.11.0a0 + - libzlib >=1.3.1,<2.0a0 + - lz4-c >=1.10.0,<1.11.0a0 + - orc >=2.0.3,<2.0.4.0a0 + - re2 + - snappy >=1.2.1,<1.3.0a0 + - zstd >=1.5.6,<1.6.0a0 + constrains: + - apache-arrow-proc =*=cpu + - parquet-cpp <0.0a0 + - arrow-cpp <0.0a0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 8215209 + timestamp: 1739770301694 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-19.0.1-h0945df6_0_cpu.conda + sha256: e34199bea635b1bf9f3819205b291f714ddd47db1bf6e6d10a4eb61da7330214 + md5: 21bcb04df4b1a99721199c5aa6273f53 + depends: + - __osx >=11.0 + - aws-crt-cpp >=0.29.9,<0.29.10.0a0 + - aws-sdk-cpp >=1.11.489,<1.11.490.0a0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - azure-identity-cpp >=1.10.0,<1.10.1.0a0 + - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 + - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 + - bzip2 >=1.0.8,<2.0a0 + - glog >=0.7.1,<0.8.0a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libbrotlidec >=1.1.0,<1.2.0a0 + - libbrotlienc >=1.1.0,<1.2.0a0 + - libcxx >=18 + - libgoogle-cloud >=2.35.0,<2.36.0a0 + - libgoogle-cloud-storage >=2.35.0,<2.36.0a0 + - libopentelemetry-cpp >=1.18.0,<1.19.0a0 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libre2-11 >=2024.7.2 + - libutf8proc >=2.10.0,<2.11.0a0 + - libzlib >=1.3.1,<2.0a0 + - lz4-c >=1.10.0,<1.11.0a0 + - orc >=2.0.3,<2.0.4.0a0 + - re2 + - snappy >=1.2.1,<1.3.0a0 + - zstd >=1.5.6,<1.6.0a0 + constrains: + - apache-arrow-proc =*=cpu + - arrow-cpp <0.0a0 + - parquet-cpp <0.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + size: 5571369 + timestamp: 1739767084108 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-19.0.1-hcb10f89_0_cpu.conda + sha256: 9a3c38a8f1516fe5b7801d0407ff704efd53955ebd63f7fbc439ec3b563d19cc + md5: 0d63e2dea06c44c9d2c8be3e7e38eea9 + depends: + - __glibc >=2.17,<3.0.a0 + - libarrow 19.0.1 hfa2a6e7_0_cpu + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 638054 + timestamp: 1739768924910 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-19.0.1-h3b568fd_0_cpu.conda + sha256: 3260e26ca9e1146befeb9587ba80610f9d9591365c82f7cd8756f14a9a8e58c2 + md5: 7b270af126ffdec0153d8599370f0430 + depends: + - libarrow 19.0.1 h36213f4_0_cpu + - libgcc >=13 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 602400 + timestamp: 1739770383854 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-19.0.1-hf07054f_0_cpu.conda + sha256: b15f5fab53d941917143bb1cf22c5a0eacffb8ff2a010ee2e909afab3821d5f9 + md5: 9213d80ffba1921b86bfdf5fdd2c10c4 + depends: + - __osx >=11.0 + - libarrow 19.0.1 h0945df6_0_cpu + - libcxx >=18 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + size: 500147 + timestamp: 1739767179329 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-19.0.1-hcb10f89_0_cpu.conda + sha256: f756208d787db50b6be68210cb9eec3644b8291a8a353bb2071ea4451bfc1412 + md5: ec52b3b990be399f4267a9acabb73070 + depends: + - __glibc >=2.17,<3.0.a0 + - libarrow 19.0.1 hfa2a6e7_0_cpu + - libarrow-acero 19.0.1 hcb10f89_0_cpu + - libgcc >=13 + - libparquet 19.0.1 h081d1f1_0_cpu + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 604500 + timestamp: 1739769034226 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-19.0.1-h3b568fd_0_cpu.conda + sha256: 76327753ed311ae1d1ef3f8f7067888e01d3c69e5198a9108052d74e2f91d03a + md5: 8a025a60dfcfa3d6cf100395f64de8ba + depends: + - libarrow 19.0.1 h36213f4_0_cpu + - libarrow-acero 19.0.1 h3b568fd_0_cpu + - libgcc >=13 + - libparquet 19.0.1 hfc78867_0_cpu + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 581121 + timestamp: 1739770488033 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-19.0.1-hf07054f_0_cpu.conda + sha256: 21fcb9a09e5872b4f1d483d8d950a1804ccb6804881881ca6fe6c5968a5e4dbc + md5: 0695382a64b393765b4bc9e1ee99250c + depends: + - __osx >=11.0 + - libarrow 19.0.1 h0945df6_0_cpu + - libarrow-acero 19.0.1 hf07054f_0_cpu + - libcxx >=18 + - libparquet 19.0.1 h636d7b7_0_cpu + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + size: 501234 + timestamp: 1739768239766 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-19.0.1-h08228c5_0_cpu.conda + sha256: e0b3ed06ce74c6a083dab59fb3059fdbc40fc71ff94ce470ca0a7c7ffe8d0317 + md5: 792e2359bb93513324326cbe3ee4ebdd + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libarrow 19.0.1 hfa2a6e7_0_cpu + - libarrow-acero 19.0.1 hcb10f89_0_cpu + - libarrow-dataset 19.0.1 hcb10f89_0_cpu + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 523313 + timestamp: 1739769085090 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-19.0.1-h1e9d426_0_cpu.conda + sha256: c1085eb113a80691e3d76400c91b15dc8c0462d533f8c4ca4c33d5e9fe9cffef + md5: 1e34ad733a8c404ac0f652a942192636 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libarrow 19.0.1 h36213f4_0_cpu + - libarrow-acero 19.0.1 h3b568fd_0_cpu + - libarrow-dataset 19.0.1 h3b568fd_0_cpu + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 516114 + timestamp: 1739770543593 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-19.0.1-h4239455_0_cpu.conda + sha256: 0b5c0839102b396f8b0ba376189562a727ebbed3c6bdab74aaf56227ee45cb73 + md5: 2893dd55f7804b9106126c2f00712ec2 + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libarrow 19.0.1 h0945df6_0_cpu + - libarrow-acero 19.0.1 hf07054f_0_cpu + - libarrow-dataset 19.0.1 hf07054f_0_cpu + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + size: 450361 + timestamp: 1739768396169 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-31_hfdb39a5_mkl.conda + build_number: 31 + sha256: 862289f2cfb84bb6001d0e3569e908b8c42d66b881bd5b03f730a3924628b978 + md5: bdf4a57254e8248222cb631db4393ff1 + depends: + - mkl >=2024.2.2,<2025.0a0 + constrains: + - liblapack =3.9.0=31*_mkl + - liblapacke =3.9.0=31*_mkl + - blas =2.131=mkl + - libcblas =3.9.0=31*_mkl + arch: x86_64 + platform: linux + track_features: + - blas_mkl + license: BSD-3-Clause + license_family: BSD + size: 17259 + timestamp: 1740087718283 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-31_h1a9f1db_openblas.conda + build_number: 31 + sha256: 67c9c81dd0444ecc712124034d9f74186ca82fd770b3df46b1a68564461c6a1a + md5: 48bd5bf15ccf3e409840be9caafc0ad5 + depends: + - libopenblas >=0.3.29,<0.3.30.0a0 + - libopenblas >=0.3.29,<1.0a0 + constrains: + - liblapack =3.9.0=31*_openblas + - blas =2.131=openblas + - libcblas =3.9.0=31*_openblas + - mkl <2025 + - liblapacke =3.9.0=31*_openblas + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 16915 + timestamp: 1740087911042 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-31_h10e41b3_openblas.conda + build_number: 31 + sha256: 369586e7688b59b4f92c709b99d847d66d4d095425db327dd32ee5e6ab74697f + md5: 39b053da5e7035c6592102280aa7612a + depends: + - libopenblas >=0.3.29,<0.3.30.0a0 + - libopenblas >=0.3.29,<1.0a0 + constrains: + - liblapacke =3.9.0=31*_openblas + - libcblas =3.9.0=31*_openblas + - blas =2.131=openblas + - mkl <2025 + - liblapack =3.9.0=31*_openblas + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 17123 + timestamp: 1740088119350 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hb9d3cd8_2.conda + sha256: d9db2de60ea917298e658143354a530e9ca5f9c63471c65cf47ab39fd2f429e3 + md5: 41b599ed2b02abcfdd84302bff174b23 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 68851 + timestamp: 1725267660471 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlicommon-1.1.0-h86ecc28_2.conda + sha256: 64112af913974b309d67fd342e065fd184347043a6387933b3db796778a28019 + md5: 3ee026955c688f551a9999840cff4c67 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 68982 + timestamp: 1725267774142 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.1.0-hd74edd7_2.conda + sha256: 839dacb741bdbb25e58f42088a2001b649f4f12195aeb700b5ddfca3267749e5 + md5: d0bf1dff146b799b319ea0434b93f779 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 68426 + timestamp: 1725267943211 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hb9d3cd8_2.conda + sha256: 2892d512cad096cb03f1b66361deeab58b64e15ba525d6592bb6d609e7045edf + md5: 9566f0bd264fbd463002e759b8a82401 + depends: + - __glibc >=2.17,<3.0.a0 + - libbrotlicommon 1.1.0 hb9d3cd8_2 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 32696 + timestamp: 1725267669305 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlidec-1.1.0-h86ecc28_2.conda + sha256: 94c808d9ca3eb6ef30976a9843e27f027cf3a1e84e8c6835cbb696b7bdb35c4c + md5: e64d0f3b59c7c4047446b97a8624a72d + depends: + - libbrotlicommon 1.1.0 h86ecc28_2 + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 31708 + timestamp: 1725267783442 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.1.0-hd74edd7_2.conda + sha256: 6c6862eb274f21a7c0b60e5345467a12e6dda8b9af4438c66d496a2c1a538264 + md5: 55e66e68ce55523a6811633dd1ac74e2 + depends: + - __osx >=11.0 + - libbrotlicommon 1.1.0 hd74edd7_2 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 28378 + timestamp: 1725267980316 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.1.0-hb9d3cd8_2.conda + sha256: 779f58174e99de3600e939fa46eddb453ec5d3c60bb46cdaa8b4c127224dbf29 + md5: 06f70867945ea6a84d35836af780f1de + depends: + - __glibc >=2.17,<3.0.a0 + - libbrotlicommon 1.1.0 hb9d3cd8_2 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 281750 + timestamp: 1725267679782 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlienc-1.1.0-h86ecc28_2.conda + sha256: 41385e17bc73834b235c5aff12d6d82eccb534acb3c30986996f9dad92a0d54c + md5: 0e9bd365480c72b25c71a448257b537d + depends: + - libbrotlicommon 1.1.0 h86ecc28_2 + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 290230 + timestamp: 1725267792697 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlienc-1.1.0-hd74edd7_2.conda + sha256: eeb1eb0d58b9d02bc1b98dc0a058f104ab168eb2f7d1c7bfa0570a12cfcdb7b7 + md5: 4f3a434504c67b2c42565c0b85c1885c + depends: + - __osx >=11.0 + - libbrotlicommon 1.1.0 hd74edd7_2 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 279644 + timestamp: 1725268003553 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-31_h372d94f_mkl.conda + build_number: 31 + sha256: 2ee3ab2b6eeb59f2d3c6f933fa0db28f1b56f0bc543ed2c0f6ec04060e4b6ec0 + md5: 2a06a6c16b45bd3d10002927ca204b67 + depends: + - libblas 3.9.0 31_hfdb39a5_mkl + constrains: + - liblapack =3.9.0=31*_mkl + - liblapacke =3.9.0=31*_mkl + - blas =2.131=mkl + arch: x86_64 + platform: linux + track_features: + - blas_mkl + license: BSD-3-Clause + license_family: BSD + size: 16724 + timestamp: 1740087727554 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-31_hab92f65_openblas.conda + build_number: 31 + sha256: f0457a1d2982f0a28bfbadaa02621677c324e88f7c8198c24fb3e3214c468dba + md5: 6b81dbae56a519f1ec2f25e0ee2f4334 + depends: + - libblas 3.9.0 31_h1a9f1db_openblas + constrains: + - liblapack =3.9.0=31*_openblas + - blas =2.131=openblas + - liblapacke =3.9.0=31*_openblas + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 16824 + timestamp: 1740087917500 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-31_hb3479ef_openblas.conda + build_number: 31 + sha256: f237486cc9118d09d0f3ff8820280de34365f98ee7b7dc5ab923b04c7cbf25a5 + md5: 7353c2bf0e90834cb70545671996d871 + depends: + - libblas 3.9.0 31_h10e41b3_openblas + constrains: + - liblapacke =3.9.0=31*_openblas + - blas =2.131=openblas + - liblapack =3.9.0=31*_openblas + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 17032 + timestamp: 1740088127097 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcrc32c-1.1.2-h9c3ff4c_0.tar.bz2 + sha256: fd1d153962764433fe6233f34a72cdeed5dcf8a883a85769e8295ce940b5b0c5 + md5: c965a5aa0d5c1c37ffc62dff36e28400 + depends: + - libgcc-ng >=9.4.0 + - libstdcxx-ng >=9.4.0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 20440 + timestamp: 1633683576494 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcrc32c-1.1.2-h01db608_0.tar.bz2 + sha256: b8b8c57a87da86b3ea24280fd6aa8efaf92f4e684b606bf2db5d3cb06ffbe2ea + md5: 268ee639c17ada0002fb04dd21816cc2 + depends: + - libgcc-ng >=9.4.0 + - libstdcxx-ng >=9.4.0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 18669 + timestamp: 1633683724891 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcrc32c-1.1.2-hbdafb3b_0.tar.bz2 + sha256: 58477b67cc719060b5b069ba57161e20ba69b8695d154a719cb4b60caf577929 + md5: 32bd82a6a625ea6ce090a81c3d34edeb + depends: + - libcxx >=11.1.0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 18765 + timestamp: 1633683992603 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.12.1-h332b0f4_0.conda + sha256: 2ebc3039af29269e4cdb858fca36265e5e400c1125a4bcd84ae73a596e0e76ca + md5: 45e9dc4e7b25e2841deb392be085500e + depends: + - __glibc >=2.17,<3.0.a0 + - krb5 >=1.21.3,<1.22.0a0 + - libgcc >=13 + - libnghttp2 >=1.64.0,<2.0a0 + - libssh2 >=1.11.1,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.1,<4.0a0 + - zstd >=1.5.6,<1.6.0a0 + arch: x86_64 + platform: linux + license: curl + license_family: MIT + size: 426675 + timestamp: 1739512336799 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcurl-8.12.1-h6702fde_0.conda + sha256: a00458a5163b9552897cdac08b273deb1b3add09e05599dfbacf0606c3b1f41f + md5: 14c340cb70867cf7953d2632f89270b5 + depends: + - krb5 >=1.21.3,<1.22.0a0 + - libgcc >=13 + - libnghttp2 >=1.64.0,<2.0a0 + - libssh2 >=1.11.1,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.1,<4.0a0 + - zstd >=1.5.6,<1.6.0a0 + arch: aarch64 + platform: linux + license: curl + license_family: MIT + size: 444118 + timestamp: 1739512317570 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.12.1-h73640d1_0.conda + sha256: 0bddd1791eb0602c8c6aa465802e9d4526d3ec1251d900b209e767753565d5df + md5: 105f0cceef753644912f42e11c1ae9cf + depends: + - __osx >=11.0 + - krb5 >=1.21.3,<1.22.0a0 + - libnghttp2 >=1.64.0,<2.0a0 + - libssh2 >=1.11.1,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.1,<4.0a0 + - zstd >=1.5.6,<1.6.0a0 + arch: arm64 + platform: osx + license: curl + license_family: MIT + size: 387893 + timestamp: 1739512564746 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda + sha256: 776092346da87a2a23502e14d91eb0c32699c4a1522b7331537bd1c3751dcff5 + md5: 5b3e1610ff8bd5443476b91d618f5b77 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + size: 523505 + timestamp: 1736877862502 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.23-h4ddbbb0_0.conda + sha256: 511d801626d02f4247a04fff957cc6e9ec4cc7e8622bd9acd076bcdc5de5fe66 + md5: 8dfae1d2e74767e9ce36d5fa0d8605db + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 72255 + timestamp: 1734373823254 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libdeflate-1.23-h5e3c512_0.conda + sha256: 959419d87cd2b789a9055db95704c614f31aeb70bef7949fa2f734122a3a2863 + md5: 7e7ca2607b11b180120cefc2354fc0cb + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 69862 + timestamp: 1734373858306 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.23-hec38601_0.conda + sha256: 887c02deaed6d583459eba6367023e36d8761085b2f7126e389424f57155da53 + md5: 1d8b9588be14e71df38c525767a1ac30 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 54132 + timestamp: 1734373971372 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda + sha256: d789471216e7aba3c184cd054ed61ce3f6dac6f87a50ec69291b9297f8c18724 + md5: c277e0a4d549b03ac1e9d6cbbe3d017b + depends: + - ncurses + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - ncurses >=6.5,<7.0a0 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + size: 134676 + timestamp: 1738479519902 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20250104-pl5321h976ea20_0.conda + sha256: c0b27546aa3a23d47919226b3a1635fccdb4f24b94e72e206a751b33f46fd8d6 + md5: fb640d776fc92b682a14e001980825b1 + depends: + - ncurses + - libgcc >=13 + - ncurses >=6.5,<7.0a0 + arch: aarch64 + platform: linux + license: BSD-2-Clause + license_family: BSD + size: 148125 + timestamp: 1738479808948 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda + sha256: 66aa216a403de0bb0c1340a88d1a06adaff66bae2cfd196731aa24db9859d631 + md5: 44083d2d2c2025afca315c7a172eab2b + depends: + - ncurses + - __osx >=11.0 + - ncurses >=6.5,<7.0a0 + arch: arm64 + platform: osx + license: BSD-2-Clause + license_family: BSD + size: 107691 + timestamp: 1738479560845 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda + sha256: 1cd6048169fa0395af74ed5d8f1716e22c19a81a8a36f934c110ca3ad4dd27b4 + md5: 172bf1cd1ff8629f2b1179945ed45055 + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + size: 112766 + timestamp: 1702146165126 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libev-4.33-h31becfc_2.conda + sha256: 973af77e297f1955dd1f69c2cbdc5ab9dfc88388a5576cd152cda178af0fd006 + md5: a9a13cb143bbaa477b1ebaefbe47a302 + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: BSD-2-Clause + license_family: BSD + size: 115123 + timestamp: 1702146237623 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libev-4.33-h93a5062_2.conda + sha256: 95cecb3902fbe0399c3a7e67a5bed1db813e5ab0e22f4023a5e0f722f2cc214f + md5: 36d33e440c31857372a72137f78bacf5 + arch: arm64 + platform: osx + license: BSD-2-Clause + license_family: BSD + size: 107458 + timestamp: 1702146414478 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libevent-2.1.12-hf998b51_1.conda + sha256: 2e14399d81fb348e9d231a82ca4d816bf855206923759b69ad006ba482764131 + md5: a1cfcc585f0c42bf8d5546bb1dfb668d + depends: + - libgcc-ng >=12 + - openssl >=3.1.1,<4.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 427426 + timestamp: 1685725977222 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libevent-2.1.12-h4ba1bb4_1.conda + sha256: 01333cc7d6e6985dd5700b43660d90e9e58049182017fd24862088ecbe1458e4 + md5: 96ae6083cd1ac9f6bc81631ac835b317 + depends: + - libgcc-ng >=12 + - openssl >=3.1.1,<4.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 438992 + timestamp: 1685726046519 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libevent-2.1.12-h2757513_1.conda + sha256: 8c136d7586259bb5c0d2b913aaadc5b9737787ae4f40e3ad1beaf96c80b919b7 + md5: 1a109764bff3bdc7bdd84088347d71dc + depends: + - openssl >=3.1.1,<4.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 368167 + timestamp: 1685726248899 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda + sha256: 56541b98447b58e52d824bd59d6382d609e11de1f8adf20b23143e353d2b8d26 + md5: db833e03127376d461e1e13e76f09b6c + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + constrains: + - expat 2.6.4.* + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 73304 + timestamp: 1730967041968 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.6.4-h5ad3122_0.conda + sha256: f42e758009ba9db90d1fe7992bc3e60d0c52f71fb20923375d2c44ae69a5a2b3 + md5: f1b3fab36861b3ce945a13f0dfdfc688 + depends: + - libgcc >=13 + constrains: + - expat 2.6.4.* + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 72345 + timestamp: 1730967203789 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.4-h286801f_0.conda + sha256: e42ab5ace927ee7c84e3f0f7d813671e1cf3529f5f06ee5899606630498c2745 + md5: 38d2656dd914feb0cab8c629370768bf + depends: + - __osx >=11.0 + constrains: + - expat 2.6.4.* + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 64693 + timestamp: 1730967175868 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_0.conda + sha256: 67a6c95e33ebc763c1adc3455b9a9ecde901850eb2fceb8e646cc05ef3a663da + md5: e3eb7806380bc8bcecba6d749ad5f026 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 53415 + timestamp: 1739260413716 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.4.6-he21f813_0.conda + sha256: 41568066beefe7b319ff27d85952242e5b77fb753d705b8716041959e17c35c2 + md5: 966084fccf3ad62a3160666cda869f28 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 51513 + timestamp: 1739260449772 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 + sha256: 41b3d13efb775e340e4dba549ab5c029611ea6918703096b2eaa9c015c0750ca + md5: 086914b672be056eb70fd4285b6783b6 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 39020 + timestamp: 1636488587153 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h767d61c_2.conda + sha256: 3a572d031cb86deb541d15c1875aaa097baefc0c580b54dc61f5edab99215792 + md5: ef504d1acbd74b7cc6849ef8af47dd03 + depends: + - __glibc >=2.17,<3.0.a0 + - _openmp_mutex >=4.5 + constrains: + - libgomp 14.2.0 h767d61c_2 + - libgcc-ng ==14.2.0=*_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 847885 + timestamp: 1740240653082 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-14.2.0-he277a41_2.conda + sha256: a57f7f9ba2a12f56eafdcd25b6d75f7be10b8fc1a802a58b76a77ca8c66f4503 + md5: 6b4268a60b10f29257b51b9b67ff8d76 + depends: + - _openmp_mutex >=4.5 + constrains: + - libgcc-ng ==14.2.0=*_2 + - libgomp 14.2.0 he277a41_2 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 535507 + timestamp: 1740241069780 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_2.conda + sha256: fb7558c328b38b2f9d2e412c48da7890e7721ba018d733ebdfea57280df01904 + md5: a2222a6ada71fb478682efe483ce0f92 + depends: + - libgcc 14.2.0 h767d61c_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 53758 + timestamp: 1740240660904 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-14.2.0-he9431aa_2.conda + sha256: 9647f75cddc18b07eebe6e1f21500eed50a6af2c43c84e831b4c7a597e10d226 + md5: 692c2bb75f32cfafb6799cf6d1c5d0e0 + depends: + - libgcc 14.2.0 he277a41_2 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 53622 + timestamp: 1740241074834 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_2.conda + sha256: 996d3c0505301901a7ab23b5e7daad21635d1c065240bb0f4faf7e4f75d7f49d + md5: d8b9d9dc0c8cd97d375b48e55947ba70 + depends: + - libgfortran5 14.2.0 hb6113d0_2 + constrains: + - libgfortran-ng ==14.2.0=*_2 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 53611 + timestamp: 1740241100147 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda + sha256: 44e541b4821c96b28b27fef5630883a60ce4fee91fd9c79f25a199f8f73f337b + md5: 4a55d9e169114b2b90d3ec4604cd7bbf + depends: + - libgfortran5 13.2.0 hf226fd6_3 + arch: arm64 + platform: osx + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 110233 + timestamp: 1707330749033 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_2.conda + sha256: 7b9e1d3666a00e5a52e5d43c003bd1c73ab472804be513c070aaedca9c4c2a9a + md5: cd754566661513808ef2408c4ab99a2f + depends: + - libgcc >=14.2.0 + constrains: + - libgfortran 14.2.0 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 1100765 + timestamp: 1740241083241 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda + sha256: bafc679eedb468a86aa4636061c55966186399ee0a04b605920d208d97ac579a + md5: 66ac81d54e95c534ae488726c1f698ea + depends: + - llvm-openmp >=8.0.0 + constrains: + - libgfortran 5.0.0 13_2_0_*_3 + arch: arm64 + platform: osx + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 997381 + timestamp: 1707330687590 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_2.conda + sha256: 4e303711fb7413bf98995beac58e731073099d7a669a3b81e49330ca8da05174 + md5: b11c09d9463daf4cae492d29806b1889 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 462783 + timestamp: 1740241005079 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.35.0-h2b5623c_0.conda + sha256: d747d14c69da512d8993a995dc2df90e857778b0a8542f12fb751544128af685 + md5: 1040ab07d7af9f23cf2466ffe4e58db1 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcurl >=8.11.1,<9.0a0 + - libgcc >=13 + - libgrpc >=1.67.1,<1.68.0a0 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + - openssl >=3.4.0,<4.0a0 + constrains: + - libgoogle-cloud 2.35.0 *_0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 1258035 + timestamp: 1738662406183 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-2.35.0-hccf9d24_0.conda + sha256: b5d323807ea699e76d9ebb829e48100446663978a1aac9adf538249864f73f97 + md5: f22720e07abb547ebce78a3aa7b97d69 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcurl >=8.11.1,<9.0a0 + - libgcc >=13 + - libgrpc >=1.67.1,<1.68.0a0 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + - openssl >=3.4.0,<4.0a0 + constrains: + - libgoogle-cloud 2.35.0 *_0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 1258015 + timestamp: 1738662706891 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-2.35.0-hdbe95d5_0.conda + sha256: 9bee9773540956d8a2ca0b317f73d94916200a4bfd8151319bf7fdcbf704d692 + md5: b1ea94282f38b142f8bc842ef7bcc18c + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcurl >=8.11.1,<9.0a0 + - libcxx >=18 + - libgrpc >=1.67.1,<1.68.0a0 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - openssl >=3.4.0,<4.0a0 + constrains: + - libgoogle-cloud 2.35.0 *_0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 877733 + timestamp: 1738662822079 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.35.0-h0121fbd_0.conda + sha256: cb1ef70e55d2c1defbfd8413dbe85b5550782470dda4f8d393f28d41b6d9b007 + md5: 34e2243e0428aac6b3e903ef99b6d57d + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil + - libcrc32c >=1.1.2,<1.2.0a0 + - libcurl + - libgcc >=13 + - libgoogle-cloud 2.35.0 h2b5623c_0 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 785777 + timestamp: 1738662565066 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-storage-2.35.0-hb9b2b65_0.conda + sha256: cf316f07d5dcc3b6669bf6d93203d435133c99d075a9f92dfa28eff1bd4def74 + md5: ae6ab5b7af1409d0eafd2b77c5d5528a + depends: + - libabseil + - libcrc32c >=1.1.2,<1.2.0a0 + - libcurl + - libgcc >=13 + - libgoogle-cloud 2.35.0 hccf9d24_0 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 739471 + timestamp: 1738662862568 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-storage-2.35.0-h7081f7f_0.conda + sha256: 52dc2d18264543b564b59fb80338fbd9cb2296f011d75f41adcd85041795201c + md5: 958beca4e16f59360e30c48ff0351e04 + depends: + - __osx >=11.0 + - libabseil + - libcrc32c >=1.1.2,<1.2.0a0 + - libcurl + - libcxx >=18 + - libgoogle-cloud 2.35.0 hdbe95d5_0 + - libzlib >=1.3.1,<2.0a0 + - openssl + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 529210 + timestamp: 1738664024959 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.67.1-h25350d4_1.conda + sha256: 014627485b3cf0ea18e04c0bab07be7fb98722a3aeeb58477acc7e1c3d2f911e + md5: 0c6497a760b99a926c7c12b74951a39c + depends: + - __glibc >=2.17,<3.0.a0 + - c-ares >=1.34.4,<2.0a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libre2-11 >=2024.7.2 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + - re2 + constrains: + - grpc-cpp =1.67.1 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 7792251 + timestamp: 1735584856826 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgrpc-1.67.1-hf7ccdd3_1.conda + sha256: 3fa173dc1d7456aac2b26937daae86a08432a31640e3d6569c62edc661fc9bbe + md5: 8fb41a425bebaeb3d0fa568503612e64 + depends: + - c-ares >=1.34.4,<2.0a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libre2-11 >=2024.7.2 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + - re2 + constrains: + - grpc-cpp =1.67.1 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 7430006 + timestamp: 1735585769731 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgrpc-1.67.1-h0a426d6_1.conda + sha256: 630edf63981818ff590367cb95fddbed0f5a390464d0952c90ec81de899e84a6 + md5: 8a3cba079d6ac985e7d73c76a678fbb4 + depends: + - __osx >=11.0 + - c-ares >=1.34.4,<2.0a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libre2-11 >=2024.7.2 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + - re2 + constrains: + - grpc-cpp =1.67.1 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + size: 5311706 + timestamp: 1735585137716 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libhwloc-2.11.2-default_h0d58e46_1001.conda + sha256: d14c016482e1409ae1c50109a9ff933460a50940d2682e745ab1c172b5282a69 + md5: 804ca9e91bcaea0824a341d55b1684f2 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + - libxml2 >=2.13.4,<3.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 2423200 + timestamp: 1731374922090 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h4ce23a2_1.conda + sha256: 18a4afe14f731bfb9cf388659994263904d20111e42f841e9eea1bb6f91f4ab4 + md5: e796ff8ddc598affdf7c173d6145f087 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: LGPL-2.1-only + size: 713084 + timestamp: 1740128065462 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libiconv-1.18-hc99b53d_1.conda + sha256: 3db14977036fe1f511a6dbecacbeff3fdb58482c5c0cf87a2ea3232f5a540836 + md5: 81541d85a45fbf4d0a29346176f1f21c + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: LGPL-2.1-only + size: 718600 + timestamp: 1740130562607 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.18-hfe07756_1.conda + sha256: d30780d24bf3a30b4f116fca74dedb4199b34d500fe6c52cced5f8cc1e926f03 + md5: 450e6bdc0c7d986acf7b8443dce87111 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: LGPL-2.1-only + size: 681804 + timestamp: 1740128227484 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda + sha256: b954e09b7e49c2f2433d6f3bb73868eda5e378278b0f8c1dd10a7ef090e14f2f + md5: ea25936bb4080d843790b586850f82b8 + depends: + - libgcc-ng >=12 + constrains: + - jpeg <0.0.0a + arch: x86_64 + platform: linux + license: IJG AND BSD-3-Clause AND Zlib + size: 618575 + timestamp: 1694474974816 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libjpeg-turbo-3.0.0-h31becfc_1.conda + sha256: 675bc1f2a8581cd34a86c412663ec29c5f90c1d9f8d11866aa1ade5cdbdf8429 + md5: ed24e702928be089d9ba3f05618515c6 + depends: + - libgcc-ng >=12 + constrains: + - jpeg <0.0.0a + arch: aarch64 + platform: linux + license: IJG AND BSD-3-Clause AND Zlib + size: 647126 + timestamp: 1694475003570 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.0.0-hb547adb_1.conda + sha256: a42054eaa38e84fc1e5ab443facac4bbc9d1b6b6f23f54b7bf4f1eb687e1d993 + md5: 3ff1e053dc3a2b8e36b9bfa4256a58d1 + constrains: + - jpeg <0.0.0a + arch: arm64 + platform: osx + license: IJG AND BSD-3-Clause AND Zlib + size: 547541 + timestamp: 1694475104253 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-31_hc41d3b0_mkl.conda + build_number: 31 + sha256: a2d20845d916ac8fba09376cd791136a9b4547afb2131bc315178adfc87bb4ca + md5: 10d012ddd7cc1c7ff9093d4974a34e53 + depends: + - libblas 3.9.0 31_hfdb39a5_mkl + constrains: + - liblapacke =3.9.0=31*_mkl + - blas =2.131=mkl + - libcblas =3.9.0=31*_mkl + arch: x86_64 + platform: linux + track_features: + - blas_mkl + license: BSD-3-Clause + license_family: BSD + size: 16760 + timestamp: 1740087736615 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-31_h411afd4_openblas.conda + build_number: 31 + sha256: 27613828ff6fb258b2e58802617df549f00089660ea8ab6c55c68f042c570162 + md5: 41dbff5eb805a75c120a7b7a1c744dc2 + depends: + - libblas 3.9.0 31_h1a9f1db_openblas + constrains: + - blas =2.131=openblas + - libcblas =3.9.0=31*_openblas + - liblapacke =3.9.0=31*_openblas + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 16845 + timestamp: 1740087923843 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-31_hc9a63f6_openblas.conda + build_number: 31 + sha256: fe55b9aaf82c6c0192c3d1fcc9b8e884f97492dda9a8de5dae29334b3135fab5 + md5: ff57a55a2cbce171ef5707fb463caf19 + depends: + - libblas 3.9.0 31_h10e41b3_openblas + constrains: + - liblapacke =3.9.0=31*_openblas + - libcblas =3.9.0=31*_openblas + - blas =2.131=openblas + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 17033 + timestamp: 1740088134988 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libllvm20-20.1.0.rc1-hb8a341e_0.conda + sha256: efd9d6646cff6e93a81a9b671fa7af683f843ad72d1a46e258720d2a639f1034 + md5: cf83972da6924c67d8fbffa222896b95 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + - libxml2 >=2.13.5,<3.0a0 + - libzlib >=1.3.1,<2.0a0 + - zstd >=1.5.6,<1.6.0a0 + arch: x86_64 + platform: linux + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + size: 42975121 + timestamp: 1738551437179 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libllvm20-20.1.0.rc1-h1ddd4b9_0.conda + sha256: 7a06b4f6656f26e0b5ff124701973fa8602f5062f211d3975f40d5239d3eb4d9 + md5: a7649551ec41c69f5361a6c596ed1ffd + depends: + - libgcc >=13 + - libstdcxx >=13 + - libxml2 >=2.13.5,<3.0a0 + - libzlib >=1.3.1,<2.0a0 + - zstd >=1.5.6,<1.6.0a0 + arch: aarch64 + platform: linux + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + size: 42134035 + timestamp: 1738491036719 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda + sha256: cad52e10319ca4585bc37f0bc7cce99ec7c15dc9168e42ccb96b741b0a27db3f + md5: 42d5b6a0f30d3c10cd88cb8584fda1cb + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: 0BSD + size: 111357 + timestamp: 1738525339684 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.4-h86ecc28_0.conda + sha256: 96413664f0fade54a4931940d18749cfc8e6308349dbb0cb83adb2394ca1f730 + md5: b88244e0a115cc34f7fbca9b11248e76 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: 0BSD + size: 124197 + timestamp: 1738528201520 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.4-h39f12f2_0.conda + sha256: 560c59d3834cc652a84fb45531bd335ad06e271b34ebc216e380a89798fe8e2c + md5: e3fd1f8320a100f2b210e690a57cd615 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: 0BSD + size: 98945 + timestamp: 1738525462560 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda + sha256: b0f2b3695b13a989f75d8fd7f4778e1c7aabe3b36db83f0fe80b2cd812c0e975 + md5: 19e57602824042dfd0446292ef90488b + depends: + - __glibc >=2.17,<3.0.a0 + - c-ares >=1.32.3,<2.0a0 + - libev >=4.33,<4.34.0a0 + - libev >=4.33,<5.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.3.2,<4.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 647599 + timestamp: 1729571887612 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnghttp2-1.64.0-hc8609a4_0.conda + sha256: c093c6d370aadbf0409c20b6c54c488ee2f6fea976181919fcc63e87ee232673 + md5: f52c614fa214a8bedece9421c771670d + depends: + - c-ares >=1.32.3,<2.0a0 + - libev >=4.33,<4.34.0a0 + - libev >=4.33,<5.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.3.2,<4.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 714610 + timestamp: 1729571912479 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.64.0-h6d7220d_0.conda + sha256: 00cc685824f39f51be5233b54e19f45abd60de5d8847f1a56906f8936648b72f + md5: 3408c02539cee5f1141f9f11450b6a51 + depends: + - __osx >=11.0 + - c-ares >=1.34.2,<2.0a0 + - libcxx >=17 + - libev >=4.33,<4.34.0a0 + - libev >=4.33,<5.0a0 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.3.2,<4.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 566719 + timestamp: 1729572385640 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda + sha256: 26d77a3bb4dceeedc2a41bd688564fe71bf2d149fdcf117049970bc02ff1add6 + md5: 30fd6e37fe21f86f4bd26d6ee73eeec7 + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: LGPL-2.1-only + license_family: GPL + size: 33408 + timestamp: 1697359010159 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda + sha256: fd18c2b75d7411096428d36a70b36b1a17e31f7b8956b6905d145792d49e97f8 + md5: c14f32510f694e3185704d89967ec422 + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: LGPL-2.1-only + license_family: GPL + size: 34501 + timestamp: 1697358973269 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.29-pthreads_h9d3fd7e_0.conda + sha256: 3a2ccf4c9098cd18a636e9b7fff947fdeb4962bcfb75c9d6fd80b8c50caf6a3c + md5: a99e2bfcb1ad6362544c71281eb617e9 + depends: + - libgcc >=14 + - libgfortran + - libgfortran5 >=14.2.0 + constrains: + - openblas >=0.3.29,<0.3.30.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 4801657 + timestamp: 1739825308974 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.29-openmp_hf332438_0.conda + sha256: 8989d9e01ec8c9b2d48dbb5efbe70b356fcd15990fb53b64fcb84798982c0343 + md5: 0cd1148c68f09027ee0b0f0179f77c30 + depends: + - __osx >=11.0 + - libgfortran 5.* + - libgfortran5 >=13.2.0 + - llvm-openmp >=18.1.8 + constrains: + - openblas >=0.3.29,<0.3.30.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 4168442 + timestamp: 1739825514918 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-1.18.0-hfcad708_1.conda + sha256: 4ea235e08676f16b0d3c3380befe1478c0fa0141512ee709b011005c55c9619f + md5: 1f5a5d66e77a39dc5bd639ec953705cf + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcurl >=8.11.1,<9.0a0 + - libgrpc >=1.67.1,<1.68.0a0 + - libopentelemetry-cpp-headers 1.18.0 ha770c72_1 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libzlib >=1.3.1,<2.0a0 + - nlohmann_json + - prometheus-cpp >=1.3.0,<1.4.0a0 + constrains: + - cpp-opentelemetry-sdk =1.18.0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 801927 + timestamp: 1735643375271 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopentelemetry-cpp-1.18.0-h60b47f9_1.conda + sha256: 160c493cd0f897955b0b6035b51c6d7255ffbaed3c8a12d43e8e8a719d405aba + md5: afe3c8c53f4b6d27d553c230d4b34038 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcurl >=8.11.1,<9.0a0 + - libgrpc >=1.67.1,<1.68.0a0 + - libopentelemetry-cpp-headers 1.18.0 h8af1aa0_1 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libzlib >=1.3.1,<2.0a0 + - nlohmann_json + - prometheus-cpp >=1.3.0,<1.4.0a0 + constrains: + - cpp-opentelemetry-sdk =1.18.0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 800896 + timestamp: 1735643533825 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopentelemetry-cpp-1.18.0-h0c05b2d_1.conda + sha256: c6bcbd53d62a9e0d8c667e560db0ca2ecb7679277cbb3c23457aabe74fcb8cba + md5: 19c46cc18825f3924251c39ec1b0d983 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcurl >=8.11.1,<9.0a0 + - libgrpc >=1.67.1,<1.68.0a0 + - libopentelemetry-cpp-headers 1.18.0 hce30654_1 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libzlib >=1.3.1,<2.0a0 + - nlohmann_json + - prometheus-cpp >=1.3.0,<1.4.0a0 + constrains: + - cpp-opentelemetry-sdk =1.18.0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + size: 529588 + timestamp: 1735643889612 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-headers-1.18.0-ha770c72_1.conda + sha256: aa1f7dea79ea8513ff77339ba7c6e9cf10dfa537143e7718b1cfb3af52b649f2 + md5: 4fb055f57404920a43b147031471e03b + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 320359 + timestamp: 1735643346175 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopentelemetry-cpp-headers-1.18.0-h8af1aa0_1.conda + sha256: 981c0b29a0789597fa8ed147b02df2d2ad0c7f863d87df74770c40cee1800228 + md5: 282193b19a19e3b5d75d18ef82713ef0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 319401 + timestamp: 1735643509251 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopentelemetry-cpp-headers-1.18.0-hce30654_1.conda + sha256: 82e5f5ba64debbaab3c601b265dfc0cdb4d2880feba9bada5fd2e67b9f91ada5 + md5: e965dad955841507549fdacd8f7f94c0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + size: 320565 + timestamp: 1735643673319 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-19.0.1-h081d1f1_0_cpu.conda + sha256: e9c4a07e79886963bfcd05894a15b5d4c7137c1122273de68845315c35d6505d + md5: 8b58c378d65b213c001f04a174a2a70e + depends: + - __glibc >=2.17,<3.0.a0 + - libarrow 19.0.1 hfa2a6e7_0_cpu + - libgcc >=13 + - libstdcxx >=13 + - libthrift >=0.21.0,<0.21.1.0a0 + - openssl >=3.4.1,<4.0a0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 1244749 + timestamp: 1739769006551 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-19.0.1-hfc78867_0_cpu.conda + sha256: 4822fcb00e97644ce74f313cd2f44fe85085c64b1481ac7e1a22ee7dd2ef772a + md5: d19e95e75e9005e712ec81409868b880 + depends: + - libarrow 19.0.1 h36213f4_0_cpu + - libgcc >=13 + - libstdcxx >=13 + - libthrift >=0.21.0,<0.21.1.0a0 + - openssl >=3.4.1,<4.0a0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 1154758 + timestamp: 1739770461892 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-19.0.1-h636d7b7_0_cpu.conda + sha256: 54e4a18493d63b7fbd5cf39fadabe665bcf462121a7bc2f394f510b0bcf22031 + md5: 0cce19e6981849babe6c73797abbfa4e + depends: + - __osx >=11.0 + - libarrow 19.0.1 h0945df6_0_cpu + - libcxx >=18 + - libthrift >=0.21.0,<0.21.1.0a0 + - openssl >=3.4.1,<4.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + size: 895659 + timestamp: 1739768176454 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.47-h943b412_0.conda + sha256: 23367d71da58c9a61c8cbd963fcffb92768d4ae5ffbef9a47cdf1f54f98c5c36 + md5: 55199e2ae2c3651f6f9b2a447b47bdc9 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux + license: zlib-acknowledgement + size: 288701 + timestamp: 1739952993639 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.47-hec79eb8_0.conda + sha256: 3861a65106a5f876eff3fc19042c3edb528216114b9f8e64b37aebf003deda11 + md5: c4b1ba0d7cef5002759d2f156722feee + depends: + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + arch: aarch64 + platform: linux + license: zlib-acknowledgement + size: 291536 + timestamp: 1739957375872 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.47-h3783ad8_0.conda + sha256: dc93cc30f59b28e7812c6f14d2c2e590b509c38092cce7ababe6b23541b7ed8f + md5: 3550e05e3af94a3fa9cef2694417ccdf + depends: + - __osx >=11.0 + - libzlib >=1.3.1,<2.0a0 + arch: arm64 + platform: osx + license: zlib-acknowledgement + size: 259332 + timestamp: 1739953032676 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda + sha256: 51125ebb8b7152e4a4e69fd2398489c4ec8473195c27cde3cbdf1cb6d18c5493 + md5: d8703f1ffe5a06356f06467f1d0b9464 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 2960815 + timestamp: 1735577210663 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.3-h44a3b7b_1.conda + sha256: ecb69f2b1668e784b41ba667493be846662d5ef702bef64fb2e013bb1364cdc4 + md5: 68f807f7cc13951652bbe048253fd405 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 2788074 + timestamp: 1735576315676 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.3-h3bd63a1_1.conda + sha256: f58a16b13ad53346903c833e266f83c3d770a43a432659b98710aed85ca885e7 + md5: bdbfea4cf45ae36652c6bbcc2e7ebe91 + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=18 + - libzlib >=1.3.1,<2.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 2271580 + timestamp: 1735576361997 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_2.conda + sha256: 4420f8362c71251892ba1eeb957c5e445e4e1596c0c651c28d0d8b415fe120c7 + md5: b2fede24428726dd867611664fb372e8 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libstdcxx >=13 + constrains: + - re2 2024.07.02.* + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 209793 + timestamp: 1735541054068 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_2.conda + sha256: 862c20de0120f802e618dcb25913d00c5b82f91f4be60b2d46a774e851adc2f6 + md5: 9a7dbbaab49f76a6f36e5c9d98e323a7 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libstdcxx >=13 + constrains: + - re2 2024.07.02.* + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 204305 + timestamp: 1735540986919 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h07bc746_2.conda + sha256: 112a73ad483353751d4c5d63648c69a4d6fcebf5e1b698a860a3f5124fc3db96 + md5: 6b1e3624d3488016ca4f1ca0c412efaa + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=18 + constrains: + - re2 2024.07.02.* + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 167155 + timestamp: 1735541067807 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsentencepiece-0.2.0-h8e10757_10.conda + sha256: dc399e0f04a09f8c1807c3b36e578eb81f81891c0ddf21de9c1fb9f048ce4031 + md5: 4f43dbcfacd3cc9a183dd3a48b94d3c0 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 823649 + timestamp: 1735627841126 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsentencepiece-0.2.0-h6164ad9_10.conda + sha256: 57074803772f65d4075b7d6dc17ff5aa40ec3a30109fa4225ca16911504c4a8b + md5: a7a192edc9cfba26a27df3283203e6a1 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 800865 + timestamp: 1735627982895 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsentencepiece-0.2.0-he13a0af_10.conda + sha256: 3347a8840d085ce1661928e736229f068d56c84312fbed90886e059023d85611 + md5: 1f67e5e30edd56e0a0bf6df6bb711a9d + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 754657 + timestamp: 1735628030895 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda + sha256: 0105bd108f19ea8e6a78d2d994a6d4a8db16d19a41212070d2d1d48a63c34161 + md5: a587892d3c13b6621a6091be690dbca2 + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: ISC + size: 205978 + timestamp: 1716828628198 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.20-h68df207_0.conda + sha256: 448df5ea3c5cf1af785aad46858d7a5be0522f4234a4dc9bb764f4d11ff3b981 + md5: 2e4a8f23bebdcb85ca8e5a0fbe75666a + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: ISC + size: 177394 + timestamp: 1716828514515 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda + sha256: fade8223e1e1004367d7101dd17261003b60aa576df6d7802191f8972f7470b1 + md5: a7ce36e284c5faaf93c220dfc39e3abd + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: ISC + size: 164972 + timestamp: 1716828607917 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.49.1-hee588c1_1.conda + sha256: 7a09eef804ef7cf4d88215c2297eabb72af8ad0bd5b012060111c289f14bbe7d + md5: 73cea06049cc4174578b432320a003b8 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux + license: Unlicense + size: 915956 + timestamp: 1739953155793 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.49.1-h5eb1b54_1.conda + sha256: 920fb3b7d3b873babf79a3e392cc82d43b8bd02a573ccaff34219efb5cf7b51e + md5: 150d64241fa27d9d35a7f421ca968a6c + depends: + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + arch: aarch64 + platform: linux + license: Unlicense + size: 915118 + timestamp: 1739953101699 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.1-h3f77e49_1.conda + sha256: 266639fb10ca92287961574b0b4d6031fa40dd9d723d64a0fcb08513a24dab03 + md5: c83357a21092bd952933c36c5cb4f4d6 + depends: + - __osx >=11.0 + - libzlib >=1.3.1,<2.0a0 + arch: arm64 + platform: osx + license: Unlicense + size: 898767 + timestamp: 1739953312379 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hf672d98_0.conda + sha256: 0407ac9fda2bb67e11e357066eff144c845801d00b5f664efbc48813af1e7bb9 + md5: be2de152d8073ef1c01b7728475f2fe7 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 304278 + timestamp: 1732349402869 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libssh2-1.11.1-ha41c0db_0.conda + sha256: 40f2af5357457546bd11cd64a3b9043d83865180f65ce602515c35f353be35c7 + md5: aeffe03c0e598f015aab08dbb04f6ee4 + depends: + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 311577 + timestamp: 1732349396421 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.1-h9cc3647_0.conda + sha256: f7047c6ed44bcaeb04432e8c74da87591940d091b0a3940c0d884b7faa8062e9 + md5: ddc7194676c285513706e5fc64f214d7 + depends: + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 279028 + timestamp: 1732349599461 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-h8f9b012_2.conda + sha256: 8f5bd92e4a24e1d35ba015c5252e8f818898478cb3bc50bd8b12ab54707dc4da + md5: a78c856b6dc6bf4ea8daeb9beaaa3fb0 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc 14.2.0 h767d61c_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 3884556 + timestamp: 1740240685253 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_2.conda + sha256: c30a74bc996013907f6d9f344da007c26d98ef9a0831151cd50aece3125c45d5 + md5: eadee2cda99697e29411c1013c187b92 + depends: + - libgcc 14.2.0 he277a41_2 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 3810779 + timestamp: 1740241094774 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_2.conda + sha256: e86f38b007cf97cc2c67cd519f2de12a313c4ee3f5ef11652ad08932a5e34189 + md5: c75da67f045c2627f59e6fcb5f4e3a9b + depends: + - libstdcxx 14.2.0 h8f9b012_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 53830 + timestamp: 1740240722530 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_2.conda + sha256: 0107886ead6f255956d8e520f8dff260f9ab3d0d51512f18c52710c406e4b2df + md5: c934c1fddad582fcc385b608eb06a70c + depends: + - libstdcxx 14.2.0 h3f4de04_2 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 53715 + timestamp: 1740241126343 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libthrift-0.21.0-h0e7cc3e_0.conda + sha256: ebb395232973c18745b86c9a399a4725b2c39293c9a91b8e59251be013db42f0 + md5: dcb95c0a98ba9ff737f7ae482aef7833 + depends: + - __glibc >=2.17,<3.0.a0 + - libevent >=2.1.12,<2.1.13.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.3.2,<4.0a0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 425773 + timestamp: 1727205853307 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libthrift-0.21.0-h154c74f_0.conda + sha256: f04ab1417aca1687edff9c30d8423ace285eb8c053dc16d595c6e47cfeefb274 + md5: c28792bf37f4ecdce8e3cb9e40750650 + depends: + - libevent >=2.1.12,<2.1.13.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.3.2,<4.0a0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 417329 + timestamp: 1727205944238 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libthrift-0.21.0-h64651cc_0.conda + sha256: 7a6c7d5f58cbbc2ccd6493b4b821639fdb0701b9b04c737a949e8cb6adf1c9ad + md5: 7ce2bd2f650f8c31ad7ba4c7bfea61b7 + depends: + - __osx >=11.0 + - libcxx >=17 + - libevent >=2.1.12,<2.1.13.0a0 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.3.2,<4.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + size: 324342 + timestamp: 1727206096912 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hd9ff511_3.conda + sha256: b224e16b88d76ea95e4af56e2bc638c603bd26a770b98d117d04541d3aafa002 + md5: 0ea6510969e1296cc19966fad481f6de + depends: + - __glibc >=2.17,<3.0.a0 + - lerc >=4.0.0,<5.0a0 + - libdeflate >=1.23,<1.24.0a0 + - libgcc >=13 + - libjpeg-turbo >=3.0.0,<4.0a0 + - liblzma >=5.6.3,<6.0a0 + - libstdcxx >=13 + - libwebp-base >=1.4.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - zstd >=1.5.6,<1.6.0a0 + arch: x86_64 + platform: linux + license: HPND + size: 428173 + timestamp: 1734398813264 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.0-h88f7998_3.conda + sha256: 5888bd66ba7606ae8596856c7dac800940ecad0aed77d6aa37db69d434c81cf0 + md5: 36a0ea4a173338c8725dc0807e99cf22 + depends: + - lerc >=4.0.0,<5.0a0 + - libdeflate >=1.23,<1.24.0a0 + - libgcc >=13 + - libjpeg-turbo >=3.0.0,<4.0a0 + - liblzma >=5.6.3,<6.0a0 + - libstdcxx >=13 + - libwebp-base >=1.4.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - zstd >=1.5.6,<1.6.0a0 + arch: aarch64 + platform: linux + license: HPND + size: 464699 + timestamp: 1734398752249 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-h551f018_3.conda + sha256: 91417846157e04992801438a496b151df89604b2e7c6775d6f701fcd0cbed5ae + md5: a5d084a957563e614ec0c0196d890654 + depends: + - __osx >=11.0 + - lerc >=4.0.0,<5.0a0 + - libcxx >=18 + - libdeflate >=1.23,<1.24.0a0 + - libjpeg-turbo >=3.0.0,<4.0a0 + - liblzma >=5.6.3,<6.0a0 + - libwebp-base >=1.4.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - zstd >=1.5.6,<1.6.0a0 + arch: arm64 + platform: osx + license: HPND + size: 370600 + timestamp: 1734398863052 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libtorch-2.5.1-cpu_mkl_h89e7157_113.conda + sha256: 70e24c9b98d24006ce3c2b27503cb2c122f78cc6f59e980db774020203835aca + md5: 0dfe6af4a27ec2372271e3703cc52e48 + depends: + - __glibc >=2.17,<3.0.a0 + - _openmp_mutex >=4.5 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libblas * *mkl + - libcblas >=3.9.0,<4.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + - libuv >=1.50.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - mkl >=2024.2.2,<2025.0a0 + - sleef >=3.8,<4.0a0 + constrains: + - pytorch-gpu ==99999999 + - pytorch-cpu ==2.5.1 + - pytorch 2.5.1 cpu_mkl_*_113 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 53568815 + timestamp: 1739239230425 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libtorch-2.5.1-cpu_generic_hb04e7f6_13.conda + sha256: 62f94d17e75cdf2f48f4a89175759449aaad05bf2a356836430c82c65a7c5f44 + md5: ad17071bfd97d24a7a83fd044ae6282c + depends: + - _openmp_mutex >=4.5 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - libgcc >=13 + - liblapack >=3.9.0,<4.0a0 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + - libuv >=1.50.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - sleef >=3.8,<4.0a0 + constrains: + - pytorch-cpu ==2.5.1 + - pytorch 2.5.1 cpu_generic_*_13 + - openblas * openmp_* + - pytorch-gpu ==99999999 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 37722765 + timestamp: 1739239246382 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtorch-2.5.1-cpu_generic_he9b55c7_13.conda + sha256: 320cca1b7dbe0506221e0fb2911838fd112d4440a5298f033b56c1a93f0cf6fa + md5: e24814d808f0cd0e130dc141af1a8efd + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - libcxx >=18 + - liblapack >=3.9.0,<4.0a0 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libuv >=1.50.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - llvm-openmp >=18.1.8 + - numpy >=1.19,<3 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - sleef >=3.8,<4.0a0 + constrains: + - pytorch-gpu ==99999999 + - pytorch 2.5.1 cpu_generic_*_13 + - pytorch-cpu ==2.5.1 + - openblas * openmp_* + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 28302663 + timestamp: 1739247703257 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.10.0-h4c51ac1_0.conda + sha256: 8e41563ee963bf8ded06da45f4e70bf42f913cb3c2e79364eb3218deffa3cd74 + md5: aeccfff2806ae38430638ffbb4be9610 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 82745 + timestamp: 1737244366901 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.10.0-ha346350_0.conda + sha256: 9c333e07b76ae1ea2c882db764be52dc82f632be66d993a50b35ca9c5475074a + md5: c5166bcfb8348e8fc31ee16ec3981a5e + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 82679 + timestamp: 1737329054400 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.10.0-hda25de7_0.conda + sha256: aca3ef31d3dff5cefd3790742a5ee6548f1cf0201d0e8cee08b01da503484eb6 + md5: 5f741aed1d8d393586a5fdcaaa87f45c + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 83628 + timestamp: 1737244450097 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda + sha256: 787eb542f055a2b3de553614b25f09eefb0a0931b0c87dbcce6efdfd92f04f18 + md5: 40b61aab5c7ba9ff276c41cfffe6b80b + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 33601 + timestamp: 1680112270483 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda + sha256: 616277b0c5f7616c2cdf36f6c316ea3f9aa5bb35f2d4476a349ab58b9b91675f + md5: 000e30b09db0b7c775b21695dff30969 + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 35720 + timestamp: 1680113474501 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.50.0-hb9d3cd8_0.conda + sha256: b4a8890023902aef9f1f33e3e35603ad9c2f16c21fdb58e968fa6c1bd3e94c0b + md5: 771ee65e13bc599b0b62af5359d80169 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 891272 + timestamp: 1737016632446 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuv-1.50.0-h86ecc28_0.conda + sha256: 67914c7f171d343059144d804c2f17fcd621a94e45f179a0fd843b8c1618823e + md5: 915db044076cbbdffb425170deb4ce38 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 621056 + timestamp: 1737016626950 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libuv-1.50.0-h5505292_0.conda + sha256: d13fb49d4c8262bf2c44ffb2c77bb2b5d0f85fc6de76bdb75208efeccb29fce6 + md5: 20717343fb30798ab7c23c2e92b748c1 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 418890 + timestamp: 1737016751326 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.5.0-h851e524_0.conda + sha256: c45283fd3e90df5f0bd3dbcd31f59cdd2b001d424cf30a07223655413b158eaf + md5: 63f790534398730f59e1b899c3644d4a + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + constrains: + - libwebp 1.5.0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 429973 + timestamp: 1734777489810 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libwebp-base-1.5.0-h0886dbf_0.conda + sha256: b3d881a0ae08bb07fff7fa8ead506c8d2e0388733182fe4f216f3ec5d61ffcf0 + md5: 95ef4a689b8cc1b7e18b53784d88f96b + depends: + - libgcc >=13 + constrains: + - libwebp 1.5.0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 362623 + timestamp: 1734779054659 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.5.0-h2471fea_0.conda + sha256: f8bdb876b4bc8cb5df47c28af29188de8911c3fea4b799a33743500149de3f4a + md5: 569466afeb84f90d5bb88c11cc23d746 + depends: + - __osx >=11.0 + constrains: + - libwebp 1.5.0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 290013 + timestamp: 1734777593617 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda + sha256: 666c0c431b23c6cec6e492840b176dde533d48b7e6fb8883f5071223433776aa + md5: 92ed62436b625154323d40d5f2f11dd7 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - pthread-stubs + - xorg-libxau >=1.0.11,<2.0a0 + - xorg-libxdmcp + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 395888 + timestamp: 1727278577118 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcb-1.17.0-h262b8f6_0.conda + sha256: 461cab3d5650ac6db73a367de5c8eca50363966e862dcf60181d693236b1ae7b + md5: cd14ee5cca2464a425b1dbfc24d90db2 + depends: + - libgcc >=13 + - pthread-stubs + - xorg-libxau >=1.0.11,<2.0a0 + - xorg-libxdmcp + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 397493 + timestamp: 1727280745441 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxcb-1.17.0-hdb1d25a_0.conda + sha256: bd3816218924b1e43b275863e21a3e13a5db4a6da74cca8e60bc3c213eb62f71 + md5: af523aae2eca6dfa1c8eec693f5b9a79 + depends: + - __osx >=11.0 + - pthread-stubs + - xorg-libxau >=1.0.11,<2.0a0 + - xorg-libxdmcp + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 323658 + timestamp: 1727278733917 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda + sha256: 6ae68e0b86423ef188196fff6207ed0c8195dd84273cb5623b85aa08033a410c + md5: 5aa797f8787fe7a17d1b0821485b5adc + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: LGPL-2.1-or-later + size: 100393 + timestamp: 1702724383534 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda + sha256: 6b46c397644091b8a26a3048636d10b989b1bf266d4be5e9474bf763f828f41f + md5: b4df5d7d4b63579d081fd3a4cf99740e + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: LGPL-2.1-or-later + size: 114269 + timestamp: 1702724369203 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.6-h8d12d68_0.conda + sha256: db8af71ea9c0ae95b7cb4a0f59319522ed2243942437a1200ceb391493018d85 + md5: 328382c0e0ca648e5c189d5ec336c604 + depends: + - __glibc >=2.17,<3.0.a0 + - icu >=75.1,<76.0a0 + - libgcc >=13 + - libiconv >=1.18,<2.0a0 + - liblzma >=5.6.4,<6.0a0 + - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 690296 + timestamp: 1739952967309 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.6-h2e0c361_0.conda + sha256: bb075df08b04b1b47e75a250f2ebbb2401c3367057d64b8d44ef1ef3f44480e1 + md5: a159a92f890f862408c951c08f13415f + depends: + - icu >=75.1,<76.0a0 + - libgcc >=13 + - libiconv >=1.18,<2.0a0 + - liblzma >=5.6.4,<6.0a0 + - libzlib >=1.3.1,<2.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 733707 + timestamp: 1739953178456 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.6-hce475f1_0.conda + sha256: 9ce429417545f7616ed528061305b3a1fc3732ff3bb24bd91cba260550879693 + md5: 8654012bd68aa48b94eee6c9faab85b6 + depends: + - __osx >=11.0 + - libiconv >=1.18,<2.0a0 + - liblzma >=5.6.4,<6.0a0 + - libzlib >=1.3.1,<2.0a0 + constrains: + - icu <0.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 582490 + timestamp: 1739953065675 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda + sha256: d4bfe88d7cb447768e31650f06257995601f89076080e76df55e3112d4e47dc4 + md5: edb0dca6bc32e4f4789199455a1dbeb8 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + constrains: + - zlib 1.3.1 *_2 + arch: x86_64 + platform: linux + license: Zlib + license_family: Other + size: 60963 + timestamp: 1727963148474 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda + sha256: 5a2c1eeef69342e88a98d1d95bff1603727ab1ff4ee0e421522acd8813439b84 + md5: 08aad7cbe9f5a6b460d0976076b6ae64 + depends: + - libgcc >=13 + constrains: + - zlib 1.3.1 *_2 + arch: aarch64 + platform: linux + license: Zlib + license_family: Other + size: 66657 + timestamp: 1727963199518 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda + sha256: ce34669eadaba351cd54910743e6a2261b67009624dbc7daeeafdef93616711b + md5: 369964e85dc26bfe78f41399b366c435 + depends: + - __osx >=11.0 + constrains: + - zlib 1.3.1 *_2 + arch: arm64 + platform: osx + license: Zlib + license_family: Other + size: 46438 + timestamp: 1727963202283 +- conda: https://conda.anaconda.org/conda-forge/linux-64/llvm-openmp-19.1.7-h024ca30_0.conda + sha256: 5383e32604e03814b6011fa01a5332057934181a7ea0e90abba7890c17cabce6 + md5: 9915f85a72472011550550623cce2d53 + depends: + - __glibc >=2.17,<3.0.a0 + constrains: + - openmp 19.1.7|19.1.7.* + arch: x86_64 + platform: linux + license: Apache-2.0 WITH LLVM-exception + license_family: APACHE + size: 3190529 + timestamp: 1736986301022 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda + sha256: b92a669f2059874ebdcb69041b6c243d68ffc3fb356ac1339cec44aeb27245d7 + md5: c4d54bfd3817313ce758aa76283b118d + depends: + - __osx >=11.0 + constrains: + - openmp 19.1.7|19.1.7.* + arch: arm64 + platform: osx + license: Apache-2.0 WITH LLVM-exception + license_family: APACHE + size: 280830 + timestamp: 1736986295869 +- conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.10.0-h5888daf_1.conda + sha256: 47326f811392a5fd3055f0f773036c392d26fdb32e4d8e7a8197eed951489346 + md5: 9de5350a85c4a20c685259b889aa6393 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + size: 167055 + timestamp: 1733741040117 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.10.0-h5ad3122_1.conda + sha256: 67e55058d275beea76c1882399640c37b5be8be4eb39354c94b610928e9a0573 + md5: 6654e411da94011e8fbe004eacb8fe11 + depends: + - libgcc >=13 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: BSD-2-Clause + license_family: BSD + size: 184953 + timestamp: 1733740984533 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.10.0-h286801f_1.conda + sha256: 94d3e2a485dab8bdfdd4837880bde3dd0d701e2b97d6134b8806b7c8e69c8652 + md5: 01511afc6cc1909c5303cf31be17b44f + depends: + - __osx >=11.0 + - libcxx >=18 + arch: arm64 + platform: osx + license: BSD-2-Clause + license_family: BSD + size: 148824 + timestamp: 1733741047892 +- conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_1.conda + sha256: 0fbacdfb31e55964152b24d5567e9a9996e1e7902fb08eb7d91b5fd6ce60803a + md5: fee3164ac23dfca50cfcc8b85ddefb81 + depends: + - mdurl >=0.1,<1 + - python >=3.9 + license: MIT + license_family: MIT + size: 64430 + timestamp: 1733250550053 +- conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_1.conda + sha256: 4a6bf68d2a2b669fecc9a4a009abd1cf8e72c2289522ff00d81b5a6e51ae78f5 + md5: eb227c3e0bf58f5bd69c0532b157975b + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - jinja2 >=3.0.0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 24604 + timestamp: 1733219911494 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.2-py312h74ce7d3_1.conda + sha256: 1d500158262f30b9c23e37d1c861fe76e127a3926d69b3b38c25d20d3faa6f9f + md5: bc8607ab678073a0441808a31465f4fb + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - jinja2 >=3.0.0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 25079 + timestamp: 1733220639175 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312h998013c_1.conda + sha256: 4aa997b244014d3707eeef54ab0ee497d12c0d0d184018960cce096169758283 + md5: 46e547061080fddf9cf95a0327e8aba6 + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - jinja2 >=3.0.0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 24048 + timestamp: 1733219945697 +- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022718-release.conda + noarch: python + sha256: f3dcb14fed5470c0fc521542cbd2f1c56ca7e46d560f46176b8f926198cb3cbd + md5: 01fe5e0cf46c84a6345e323ad1316764 + depends: + - max-core ==25.2.0.dev2025022718 release + - max-python ==25.2.0.dev2025022718 release + - mojo-jupyter ==25.2.0.dev2025022718 release + - mblack ==25.2.0.dev2025022718 release + license: LicenseRef-Modular-Proprietary + size: 9905 + timestamp: 1740680254354 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022718-release.conda + sha256: 847d5767109a305d7bcad4ac29248a74a384034692934a0c54b00a590c27094a + md5: fc5a9ae36c7805979bd58ca55a25066f + depends: + - mblack ==25.2.0.dev2025022718 release + license: LicenseRef-Modular-Proprietary + size: 249811868 + timestamp: 1740680254354 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022718-release.conda + sha256: 250c35ecccd302e6c7de836ac200a5ece92e74508c2590c585d8803d488fd650 + md5: d88728b468c85902512a0f9b99251035 + depends: + - mblack ==25.2.0.dev2025022718 release + license: LicenseRef-Modular-Proprietary + size: 252108573 + timestamp: 1740680207793 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022718-release.conda + sha256: fb28d9e61aa507ea84b470082d3dc96844a24fe672d4e4c57e832655c5d0a202 + md5: dd8734453f7276a258f3351cc5c506c3 + depends: + - mblack ==25.2.0.dev2025022718 release + license: LicenseRef-Modular-Proprietary + size: 217273450 + timestamp: 1740681819160 +- conda: https://conda.modular.com/max-nightly/noarch/max-pipelines-25.2.0.dev2025022718-release.conda + noarch: python + sha256: 1e46a465f1d8e75afa9822717e6c6ee75965c078d0cd7b217c4f8622847e9fb0 + md5: 7257078fedac4bbfb961c30a84e2c387 + depends: + - max-python ==25.2.0.dev2025022718 release + - aiohttp >=3.11.12 + - fastapi >=0.114.2 + - gguf >=0.14.0 + - hf-transfer >=0.1.9 + - httpx >=0.28.1 + - huggingface_hub >=0.24.0 + - nvitop >=1.4.1 + - opentelemetry-api >=1.29.0 + - opentelemetry-exporter-otlp-proto-http >=1.27.0 + - opentelemetry-exporter-prometheus <1.0.0 + - opentelemetry-sdk >=1.29.0,<2.0 + - pillow >=10.3.0 + - prometheus_client >=0.21.0 + - prometheus-async >=22.2.0 + - psutil >=6.1.1 + - pydantic + - pydantic-settings >=2.7.1 + - pyinstrument >=5.0.1 + - python-json-logger >=2.0.7 + - requests >=2.32.3 + - rich >=13.9.4 + - safetensors >=0.5.2 + - sentinel >=0.3.0 + - sse-starlette >=2.1.2 + - tokenizers >=0.19.0 + - pytorch >=2.2.2,<=2.5.1 + - transformers >=4.40.1 + - uvicorn >=0.34.0 + - uvloop >=0.21.0 + - xgrammar ==0.1.11 + license: LicenseRef-Modular-Proprietary + size: 10365 + timestamp: 1740680254354 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022718-release.conda + noarch: python + sha256: 831b4d62f66f0083321121c6ba25dedab3ee41d5e9f19d9752969592214af398 + md5: f828ace91aa057e4774e84ad459adccf + depends: + - max-core ==25.2.0.dev2025022718 release + - click >=8.0.0 + - numpy >=1.18,<2.0 + - sentencepiece >=0.2.0 + - tqdm >=4.67.1 + constrains: + - aiohttp >=3.11.12 + - fastapi >=0.114.2 + - gguf >=0.14.0 + - hf-transfer >=0.1.9 + - httpx >=0.28.1 + - huggingface_hub >=0.24.0 + - nvitop >=1.4.1 + - opentelemetry-api >=1.29.0 + - opentelemetry-exporter-otlp-proto-http >=1.27.0 + - opentelemetry-exporter-prometheus <1.0.0 + - opentelemetry-sdk >=1.29.0,<2.0 + - pillow >=10.3.0 + - prometheus_client >=0.21.0 + - prometheus-async >=22.2.0 + - psutil >=6.1.1 + - pydantic + - pydantic-settings >=2.7.1 + - pyinstrument >=5.0.1 + - python-json-logger >=2.0.7 + - requests >=2.32.3 + - rich >=13.9.4 + - safetensors >=0.5.2 + - sentinel >=0.3.0 + - sse-starlette >=2.1.2 + - tokenizers >=0.19.0 + - pytorch >=2.2.2,<=2.5.1 + - transformers >=4.40.1 + - uvicorn >=0.34.0 + - uvloop >=0.21.0 + - xgrammar ==0.1.11 + license: LicenseRef-Modular-Proprietary + size: 123584411 + timestamp: 1740680254354 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022718-release.conda + noarch: python + sha256: b9e5755b7bf6314a37a90ef0250c93f5e7c693954d7a6389a97ab9ef06e23cc3 + md5: bfd2e752d0fc9516b78a17169ce9cc78 + depends: + - max-core ==25.2.0.dev2025022718 release + - click >=8.0.0 + - numpy >=1.18,<2.0 + - sentencepiece >=0.2.0 + - tqdm >=4.67.1 + constrains: + - aiohttp >=3.11.12 + - fastapi >=0.114.2 + - gguf >=0.14.0 + - hf-transfer >=0.1.9 + - httpx >=0.28.1 + - huggingface_hub >=0.24.0 + - nvitop >=1.4.1 + - opentelemetry-api >=1.29.0 + - opentelemetry-exporter-otlp-proto-http >=1.27.0 + - opentelemetry-exporter-prometheus <1.0.0 + - opentelemetry-sdk >=1.29.0,<2.0 + - pillow >=10.3.0 + - prometheus_client >=0.21.0 + - prometheus-async >=22.2.0 + - psutil >=6.1.1 + - pydantic + - pydantic-settings >=2.7.1 + - pyinstrument >=5.0.1 + - python-json-logger >=2.0.7 + - requests >=2.32.3 + - rich >=13.9.4 + - safetensors >=0.5.2 + - sentinel >=0.3.0 + - sse-starlette >=2.1.2 + - tokenizers >=0.19.0 + - pytorch >=2.2.2,<=2.5.1 + - transformers >=4.40.1 + - uvicorn >=0.34.0 + - uvloop >=0.21.0 + - xgrammar ==0.1.11 + license: LicenseRef-Modular-Proprietary + size: 126004454 + timestamp: 1740680207793 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022718-release.conda + noarch: python + sha256: 7da9f4655082bb64c2b0cc996ffefa0ce5c49744854ed77a9b0d000e27cf5a55 + md5: b16d498a148aa61dca2a6bfec5cb8e46 + depends: + - max-core ==25.2.0.dev2025022718 release + - click >=8.0.0 + - numpy >=1.18,<2.0 + - sentencepiece >=0.2.0 + - tqdm >=4.67.1 + constrains: + - aiohttp >=3.11.12 + - fastapi >=0.114.2 + - gguf >=0.14.0 + - hf-transfer >=0.1.9 + - httpx >=0.28.1 + - huggingface_hub >=0.24.0 + - nvitop >=1.4.1 + - opentelemetry-api >=1.29.0 + - opentelemetry-exporter-otlp-proto-http >=1.27.0 + - opentelemetry-exporter-prometheus <1.0.0 + - opentelemetry-sdk >=1.29.0,<2.0 + - pillow >=10.3.0 + - prometheus_client >=0.21.0 + - prometheus-async >=22.2.0 + - psutil >=6.1.1 + - pydantic + - pydantic-settings >=2.7.1 + - pyinstrument >=5.0.1 + - python-json-logger >=2.0.7 + - requests >=2.32.3 + - rich >=13.9.4 + - safetensors >=0.5.2 + - sentinel >=0.3.0 + - sse-starlette >=2.1.2 + - tokenizers >=0.19.0 + - pytorch >=2.2.2,<=2.5.1 + - transformers >=4.40.1 + - uvicorn >=0.34.0 + - uvloop >=0.21.0 + - xgrammar ==0.1.11 + license: LicenseRef-Modular-Proprietary + size: 112658409 + timestamp: 1740681819160 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022718-release.conda + noarch: python + sha256: ff042a8abfed0e2e36b207e3d4f59a2b4577dea7f099b08d1aaef128ab796f09 + md5: 719ca7123d53415adcdd7f0cb8396c51 + depends: + - python >=3.9,<3.13 + - click >=8.0.0 + - mypy_extensions >=0.4.3 + - packaging >=22.0 + - pathspec >=0.9.0 + - platformdirs >=2 + - typing_extensions >=v4.12.2 + - python + license: MIT + size: 130852 + timestamp: 1740680254353 +- conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda + sha256: 78c1bbe1723449c52b7a9df1af2ee5f005209f67e40b6e1d3c7619127c43b1c7 + md5: 592132998493b3ff25fd7479396e8351 + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 14465 + timestamp: 1733255681319 +- conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-2024.2.2-ha957f24_16.conda + sha256: 77906b0acead8f86b489da46f53916e624897338770dbf70b04b8f673c9273c1 + md5: 1459379c79dda834673426504d52b319 + depends: + - _openmp_mutex * *_llvm + - _openmp_mutex >=4.5 + - llvm-openmp >=19.1.2 + - tbb 2021.* + arch: x86_64 + platform: linux + license: LicenseRef-IntelSimplifiedSoftwareOct2022 + license_family: Proprietary + size: 124718448 + timestamp: 1730231808335 +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022718-release.conda + noarch: python + sha256: 19c33e23b27e240fee0b2a1d56921802ac88558dc2da417837cd590175561e16 + md5: 6b8d00b15817db11e026f824f7f0ba14 + depends: + - max-core ==25.2.0.dev2025022718 release + - python >=3.9,<3.13 + - jupyter_client >=8.6.2,<8.7 + - python + license: LicenseRef-Modular-Proprietary + size: 22981 + timestamp: 1740680254354 +- conda: https://conda.anaconda.org/conda-forge/linux-64/mpc-1.3.1-h24ddda3_1.conda + sha256: 1bf794ddf2c8b3a3e14ae182577c624fa92dea975537accff4bc7e5fea085212 + md5: aa14b9a5196a6d8dd364164b7ce56acf + depends: + - __glibc >=2.17,<3.0.a0 + - gmp >=6.3.0,<7.0a0 + - libgcc >=13 + - mpfr >=4.2.1,<5.0a0 + arch: x86_64 + platform: linux + license: LGPL-3.0-or-later + license_family: LGPL + size: 116777 + timestamp: 1725629179524 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/mpc-1.3.1-h783934e_1.conda + sha256: b5b674f496ed28c0b2d08533c6f11eaf1840bf7d9c830655f51514f2f9d9a9c8 + md5: d3758cd24507dc1bda3483ce051d48ac + depends: + - gmp >=6.3.0,<7.0a0 + - libgcc >=13 + - mpfr >=4.2.1,<5.0a0 + arch: aarch64 + platform: linux + license: LGPL-3.0-or-later + license_family: LGPL + size: 132799 + timestamp: 1725629168783 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/mpc-1.3.1-h8f1351a_1.conda + sha256: 2700899ad03302a1751dbf2bca135407e470dd83ac897ab91dd8675d4300f158 + md5: a5635df796b71f6ca400fc7026f50701 + depends: + - __osx >=11.0 + - gmp >=6.3.0,<7.0a0 + - mpfr >=4.2.1,<5.0a0 + arch: arm64 + platform: osx + license: LGPL-3.0-or-later + license_family: LGPL + size: 104766 + timestamp: 1725629165420 +- conda: https://conda.anaconda.org/conda-forge/linux-64/mpfr-4.2.1-h90cbb55_3.conda + sha256: f25d2474dd557ca66c6231c8f5ace5af312efde1ba8290a6ea5e1732a4e669c0 + md5: 2eeb50cab6652538eee8fc0bc3340c81 + depends: + - __glibc >=2.17,<3.0.a0 + - gmp >=6.3.0,<7.0a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: LGPL-3.0-only + license_family: LGPL + size: 634751 + timestamp: 1725746740014 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/mpfr-4.2.1-h2305555_3.conda + sha256: abb35c37de2ec6c9ee89995142b1cfea9e6547202ba5578e5307834eca6d436f + md5: 65b21e8d5f0ec6a2f7e87630caed3318 + depends: + - gmp >=6.3.0,<7.0a0 + - libgcc >=13 + arch: aarch64 + platform: linux + license: LGPL-3.0-only + license_family: LGPL + size: 1841314 + timestamp: 1725746723157 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/mpfr-4.2.1-hb693164_3.conda + sha256: 4463e4e2aba7668e37a1b8532859191b4477a6f3602a5d6b4d64ad4c4baaeac5 + md5: 4e4ea852d54cc2b869842de5044662fb + depends: + - __osx >=11.0 + - gmp >=6.3.0,<7.0a0 + arch: arm64 + platform: osx + license: LGPL-3.0-only + license_family: LGPL + size: 345517 + timestamp: 1725746730583 +- conda: https://conda.anaconda.org/conda-forge/noarch/mpmath-1.3.0-pyhd8ed1ab_1.conda + sha256: 7d7aa3fcd6f42b76bd711182f3776a02bef09a68c5f117d66b712a6d81368692 + md5: 3585aa87c43ab15b167b574cd73b057b + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 439705 + timestamp: 1733302781386 +- conda: 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 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 61507 + timestamp: 1733913288935 +- conda: 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 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 63077 + timestamp: 1733913233032 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/multidict-6.1.0-py312hdb8e49c_1.conda + sha256: 482fd09fb798090dc8cce2285fa69f43b1459099122eac2fb112d9b922b9f916 + md5: 0048335516fed938e4dd2c457b4c5b9b + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + size: 55968 + timestamp: 1729065664275 +- conda: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.15-py312h98912ed_1.conda + sha256: bb612a921fafda6375a2204ffebd8811db8dd3b8f25ac9886cc9bcbff7e3664e + md5: 5a64b9f44790d9a187a85366dd0ffa8d + depends: + - dill >=0.3.6 + - libgcc-ng >=12 + - python >=3.12.0rc3,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 335666 + timestamp: 1695459025249 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.15-py312hdd3e373_1.conda + sha256: c53362cdf346f314e111faddc53061e3fd2ece0ba68ca303f5dd109976df158f + md5: 173a1692d2b3ddc265dc6afd21a869b3 + depends: + - dill >=0.3.6 + - libgcc-ng >=12 + - python >=3.12.0rc3,<3.13.0a0 + - python >=3.12.0rc3,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 336110 + timestamp: 1695459137796 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/multiprocess-0.70.15-py312h02f2b3b_1.conda + sha256: 8041371e3ec3fbc2ca13c71b0180672896e6382e62892d9f6b11a4c5dd675951 + md5: 910ef2223c71902175418d9163152788 + depends: + - dill >=0.3.6 + - python >=3.12.0rc3,<3.13.0a0 + - python >=3.12.0rc3,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 335147 + timestamp: 1695459275360 +- conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda + sha256: 1895f47b7d68581a6facde5cb13ab8c2764c2e53a76bd746f8f98910dc4e08fe + md5: 29097e7ea634a45cc5386b95cac6568f + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 10854 + timestamp: 1733230986902 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda + sha256: 3fde293232fa3fca98635e1167de6b7c7fda83caf24b9d6c91ec9eefb4f4d586 + md5: 47e340acb35de30501a76c7c799c41d7 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: X11 AND BSD-3-Clause + size: 891641 + timestamp: 1738195959188 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-ha32ae93_3.conda + sha256: 91cfb655a68b0353b2833521dc919188db3d8a7f4c64bea2c6a7557b24747468 + md5: 182afabe009dc78d8b73100255ee6868 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: X11 AND BSD-3-Clause + size: 926034 + timestamp: 1738196018799 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda + sha256: 2827ada40e8d9ca69a153a45f7fd14f32b2ead7045d3bbb5d10964898fe65733 + md5: 068d497125e4bf8a66bf707254fff5ae + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: X11 AND BSD-3-Clause + size: 797030 + timestamp: 1738196177597 +- conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda + sha256: 39625cd0c9747fa5c46a9a90683b8997d8b9649881b3dc88336b13b7bdd60117 + md5: fd40bf7f7f4bc4b647dc8512053d9873 + depends: + - python >=3.10 + - python + constrains: + - numpy >=1.24 + - scipy >=1.10,!=1.11.0,!=1.11.1 + - matplotlib >=3.7 + - pandas >=2.0 + license: BSD-3-Clause + license_family: BSD + size: 1265008 + timestamp: 1731521053408 +- conda: https://conda.anaconda.org/conda-forge/linux-64/nlohmann_json-3.11.3-he02047a_1.conda + sha256: ce4bcced4f8eea71b7cac8bc3daac097abf7a5792f278cd811dedada199500c1 + md5: e46f7ac4917215b49df2ea09a694a3fa + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 122743 + timestamp: 1723652407663 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/nlohmann_json-3.11.3-h0a1ffab_1.conda + sha256: c90b1f11fc337d90a9e4c5aeeacac1418c5ba6a195097086566d38bb2ecf0f24 + md5: f2bd10ff23ab5c87327439c4499b3f3e + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 122755 + timestamp: 1723652622631 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/nlohmann_json-3.11.3-h00cdb27_1.conda + sha256: 3f4e6a4fa074bb297855f8111ab974dab6d9f98b7d4317d4dd46f8687ee2363b + md5: d2dee849c806430eee64d3acc98ce090 + depends: + - __osx >=11.0 + - libcxx >=16 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 123250 + timestamp: 1723652704997 +- conda: https://conda.anaconda.org/conda-forge/noarch/nomkl-1.0-h5ca1d4c_0.tar.bz2 + sha256: d38542a151a90417065c1a234866f97fd1ea82a81de75ecb725955ab78f88b4b + md5: 9a66894dfd07c4510beb6b3f9672ccc0 + constrains: + - mkl <0.a0 + license: BSD-3-Clause + license_family: BSD + size: 3843 + timestamp: 1582593857545 +- conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda + sha256: fe3459c75cf84dcef6ef14efcc4adb0ade66038ddd27cadb894f34f4797687d8 + md5: d8285bea2a350f63fab23bf460221f3f + depends: + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - libgcc-ng >=12 + - liblapack >=3.9.0,<4.0a0 + - libstdcxx-ng >=12 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - numpy-base <0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 7484186 + timestamp: 1707225809722 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda + sha256: 23767677a7790bee5457d5e75ebd508b9a31c5354216f4310dd1acfca3f7a6f9 + md5: 9cebf5a06cb87d4569cd68df887af476 + depends: + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - libgcc-ng >=12 + - liblapack >=3.9.0,<4.0a0 + - libstdcxx-ng >=12 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - numpy-base <0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 6614296 + timestamp: 1707225994762 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda + sha256: c8841d6d6f61fd70ca80682efbab6bdb8606dc77c68d8acabfbd7c222054f518 + md5: d83fc83d589e2625a3451c9a7e21047c + depends: + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - libcxx >=16 + - liblapack >=3.9.0,<4.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - numpy-base <0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 6073136 + timestamp: 1707226249608 +- conda: https://conda.anaconda.org/conda-forge/noarch/nvidia-ml-py-12.570.86-pyhd8ed1ab_0.conda + sha256: 6fd70c3d5b509ef1c30cb13df877f14b04bb0e53da032950921b31d95aa5971d + md5: bc4b4177052f661da6d56838dfe57a52 + depends: + - python >=3.9 + constrains: + - nvidia-ml ==9999999999 + - pynvml ~=12.0 + license: BSD-3-Clause + license_family: BSD + size: 43543 + timestamp: 1737778765664 +- conda: https://conda.anaconda.org/conda-forge/noarch/nvitop-1.4.2-pyh707e725_0.conda + sha256: 002c17241c698ba07b0d610da0590e8c8c1e38aef13cf7bd03112b2a9ff5350d + md5: eceb58298054d6f2b7c8f8c53642c2d8 + depends: + - __unix + - nvidia-ml-py >=11.450.51,<12.571.0a0 + - psutil >=5.6.6 + - python >=3.9 + license: GPL-3.0-only + license_family: GPL + size: 143819 + timestamp: 1737914833293 +- conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.3-h5fbd93e_0.conda + sha256: 5bee706ea5ba453ed7fd9da7da8380dd88b865c8d30b5aaec14d2b6dd32dbc39 + md5: 9e5816bc95d285c115a3ebc2f8563564 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libpng >=1.6.44,<1.7.0a0 + - libstdcxx >=13 + - libtiff >=4.7.0,<4.8.0a0 + - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + size: 342988 + timestamp: 1733816638720 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openjpeg-2.5.3-h3f56577_0.conda + sha256: 92d310033e20538e896f4e4b1ea4205eb6604eee7c5c651c4965a0d8d3ca0f1d + md5: 04231368e4af50d11184b50e14250993 + depends: + - libgcc >=13 + - libpng >=1.6.44,<1.7.0a0 + - libstdcxx >=13 + - libtiff >=4.7.0,<4.8.0a0 + - libzlib >=1.3.1,<2.0a0 + arch: aarch64 + platform: linux + license: BSD-2-Clause + license_family: BSD + size: 377796 + timestamp: 1733816683252 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/openjpeg-2.5.3-h8a3d83b_0.conda + sha256: 1d59bc72ca7faac06d349c1a280f5cfb8a57ee5896f1e24225a997189d7418c7 + md5: 4b71d78648dbcf68ce8bf22bb07ff838 + depends: + - __osx >=11.0 + - libcxx >=18 + - libpng >=1.6.44,<1.7.0a0 + - libtiff >=4.7.0,<4.8.0a0 + - libzlib >=1.3.1,<2.0a0 + arch: arm64 + platform: osx + license: BSD-2-Clause + license_family: BSD + size: 319362 + timestamp: 1733816781741 +- conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.1-h7b32b05_0.conda + sha256: cbf62df3c79a5c2d113247ddea5658e9ff3697b6e741c210656e239ecaf1768f + md5: 41adf927e746dc75ecf0ef841c454e48 + depends: + - __glibc >=2.17,<3.0.a0 + - ca-certificates + - libgcc >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 2939306 + timestamp: 1739301879343 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.1-hd08dc88_0.conda + sha256: d80b52b56b2206053968270069616868cbeb289ef855cf1584b1bb0fef61b37c + md5: 09036190605c57eaecf01218e0e9542d + depends: + - ca-certificates + - libgcc >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 3476570 + timestamp: 1739303256089 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.1-h81ee809_0.conda + sha256: 4f8e2389e1b711b44182a075516d02c80fa7a3a7e25a71ff1b5ace9eae57a17a + md5: 75f9f0c7b1740017e2db83a53ab9a28e + depends: + - __osx >=11.0 + - ca-certificates + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 2934522 + timestamp: 1739301896733 +- conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.30.0-pyhd8ed1ab_0.conda + sha256: ab5b873cc2542e305236e0439d323bf880d1b49eafe7a8a04d6863a5a409059d + md5: 65caf9f399f67c1c16efc0fb76f3576c + depends: + - deprecated >=1.2.6 + - importlib-metadata <=8.5.0,>=6.0 + - python >=3.9 + license: Apache-2.0 + license_family: APACHE + size: 44649 + timestamp: 1738813183426 +- conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.30.0-pyhd8ed1ab_0.conda + sha256: 12294c0e75460bf773500d0b97d58701f6141a26ebc7507b7aefd045c3943801 + md5: 49cf930ab95d2abaabb17f0d40899628 + depends: + - backoff >=1.10.0,<3.0.0 + - opentelemetry-proto 1.30.0 + - python >=3.9 + license: Apache-2.0 + license_family: APACHE + size: 19155 + timestamp: 1738757443981 +- conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.30.0-pyhd8ed1ab_0.conda + sha256: 4bdb101663f63cd9b9c5560b40cc4441fd766885a13a130c9a0b60addc493f7d + md5: 19cd3caf8abaabe7210cb46dbde1932b + depends: + - deprecated >=1.2.6 + - googleapis-common-protos ~=1.52 + - opentelemetry-api ~=1.15 + - opentelemetry-exporter-otlp-proto-common 1.30.0 + - opentelemetry-proto 1.30.0 + - opentelemetry-sdk >=1.30.0,<1.31.dev0 + - python >=3.9 + - requests ~=2.7 + license: Apache-2.0 + license_family: APACHE + size: 17129 + timestamp: 1738881064907 +- conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-prometheus-0.51b0-pyh29332c3_0.conda + sha256: 1b7420798c2e8589ea9c03a0b9e1db64a79dfbdf6d12937ad69fd70f9b2a6ec7 + md5: cbfa34f2b05a9f916b4e255416103082 + depends: + - python >=3.9 + - opentelemetry-api >=1.12,<2.dev0 + - opentelemetry-sdk >=1.30.0,<1.31.dev0 + - prometheus_client >=0.5.0,<1.0.0 + - python + license: Apache-2.0 + license_family: APACHE + size: 22659 + timestamp: 1740444975350 +- conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.30.0-pyhd8ed1ab_0.conda + sha256: a7dfb1566daca6bd7aea78ccc69257324336fa945199081c9a9d378d1b59737b + md5: 6b2133dbe9127cd09d3c20061c8f4faa + depends: + - protobuf <6.0,>=5.0 + - python >=3.9 + license: Apache-2.0 + license_family: APACHE + size: 37366 + timestamp: 1738753488553 +- conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.30.0-pyhd8ed1ab_0.conda + sha256: 287fac5c7a0a0a565932b7a43b733036bbc08e2b11cd93fb64f29ededb89e9c6 + md5: 3667728a1b18fb9a32aef23036934d9f + depends: + - opentelemetry-api 1.30.0 + - opentelemetry-semantic-conventions 0.51b0 + - python >=3.9 + - typing-extensions >=3.7.4 + - typing_extensions >=3.7.4 + license: Apache-2.0 + license_family: APACHE + size: 77853 + timestamp: 1738855492720 +- conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.51b0-pyh3cfb1c2_0.conda + sha256: 2618877c066a6608ea57a05d260ddd805d0f59b95076f63d816df139f648f25a + md5: ff41e8547f2e7e0d0affc6c6e6e0e87f + depends: + - deprecated >=1.2.6 + - opentelemetry-api 1.30.0 + - python >=3.9 + license: Apache-2.0 + license_family: APACHE + size: 91903 + timestamp: 1738850427906 +- conda: https://conda.anaconda.org/conda-forge/linux-64/orc-2.0.3-h12ee42a_2.conda + sha256: dff5cc8023905782c86b3459055f26d4b97890e403b0698477c9fed15d8669cc + md5: 4f6f9f3f80354ad185e276c120eac3f0 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - lz4-c >=1.10.0,<1.11.0a0 + - snappy >=1.2.1,<1.3.0a0 + - tzdata + - zstd >=1.5.6,<1.6.0a0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 1188881 + timestamp: 1735630209320 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/orc-2.0.3-hdd485aa_2.conda + sha256: b6c67542352a86cdf143c3066d5cda855b74454a156eedcd8958b494c6a32a83 + md5: d19f01b42e5d6a2908b65df435aff42f + depends: + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - lz4-c >=1.10.0,<1.11.0a0 + - snappy >=1.2.1,<1.3.0a0 + - tzdata + - zstd >=1.5.6,<1.6.0a0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 1167714 + timestamp: 1735630248837 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/orc-2.0.3-h0ff2369_2.conda + sha256: cca330695f3bdb8c0e46350c29cd4af3345865544e36f1d7c9ba9190ad22f5f4 + md5: 24b1897c0d24afbb70704ba998793b78 + depends: + - __osx >=11.0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libzlib >=1.3.1,<2.0a0 + - lz4-c >=1.10.0,<1.11.0a0 + - snappy >=1.2.1,<1.3.0a0 + - tzdata + - zstd >=1.5.6,<1.6.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 438520 + timestamp: 1735630624140 +- conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + sha256: da157b19bcd398b9804c5c52fc000fcb8ab0525bdb9c70f95beaa0bb42f85af1 + md5: 3bfed7e6228ebf2f7b9eaa47f1b4e2aa + depends: + - python >=3.8 + license: Apache-2.0 + license_family: APACHE + size: 60164 + timestamp: 1733203368787 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.3-py312hf9745cd_1.conda + sha256: ad275a83bfebfa8a8fee9b0569aaf6f513ada6a246b2f5d5b85903d8ca61887e + md5: 8bce4f6caaf8c5448c7ac86d87e26b4b + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + - numpy >=1.19,<3 + - numpy >=1.22.4 + - python >=3.12,<3.13.0a0 + - python-dateutil >=2.8.1 + - python-tzdata >=2022a + - python_abi 3.12.* *_cp312 + - pytz >=2020.1,<2024.2 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 15436913 + timestamp: 1726879054912 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pandas-2.2.3-py312ha2895bd_2.conda + sha256: a34b10077de97eea72c81cb96e3ddc7d48320c0fc7d9b28ba8d9d2bead1d8297 + md5: 39a91ac336d350513de6aad56da5a920 + depends: + - libgcc >=13 + - libstdcxx >=13 + - numpy >=1.19,<3 + - numpy >=1.22.4 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python-dateutil >=2.8.1 + - python-tzdata >=2022a + - python_abi 3.12.* *_cp312 + - pytz >=2020.1,<2024.2 + constrains: + - fsspec >=2022.11.0 + - s3fs >=2022.11.0 + - fastparquet >=2022.12.0 + - pyreadstat >=1.2.0 + - qtpy >=2.3.0 + - scipy >=1.10.0 + - beautifulsoup4 >=4.11.2 + - gcsfs >=2022.11.0 + - numexpr >=2.8.4 + - sqlalchemy >=2.0.0 + - pyxlsb >=1.0.10 + - numba >=0.56.4 + - lxml >=4.9.2 + - matplotlib >=3.6.3 + - psycopg2 >=2.9.6 + - tzdata >=2022.7 + - bottleneck >=1.3.6 + - xarray >=2022.12.0 + - xlsxwriter >=3.0.5 + - zstandard >=0.19.0 + - blosc >=1.21.3 + - pytables >=3.8.0 + - openpyxl >=3.1.0 + - pyqt5 >=5.15.8 + - tabulate >=0.9.0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 15162992 + timestamp: 1736811533875 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.3-py312hcd31e36_1.conda + sha256: ff0cb54b5d058c7987b4a0984066e893642d1865a7bb695294b6172e2fcdc457 + md5: c68bfa69e6086c381c74e16fd72613a8 + depends: + - __osx >=11.0 + - libcxx >=17 + - numpy >=1.19,<3 + - numpy >=1.22.4 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python-dateutil >=2.8.1 + - python-tzdata >=2022a + - python_abi 3.12.* *_cp312 + - pytz >=2020.1,<2024.2 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 14470437 + timestamp: 1726878887799 +- conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + sha256: 9f64009cdf5b8e529995f18e03665b03f5d07c0b17445b8badef45bde76249ee + md5: 617f15191456cc6a13db418a275435e5 + depends: + - python >=3.9 + license: MPL-2.0 + license_family: MOZILLA + size: 41075 + timestamp: 1733233471940 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-11.1.0-py312h80c1187_0.conda + sha256: 5c347962202b55ae4d8a463e0555c5c6ca33396266a08284bf1384399894e541 + md5: d3894405f05b2c0f351d5de3ae26fa9c + depends: + - __glibc >=2.17,<3.0.a0 + - freetype >=2.12.1,<3.0a0 + - lcms2 >=2.16,<3.0a0 + - libgcc >=13 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libtiff >=4.7.0,<4.8.0a0 + - libwebp-base >=1.5.0,<2.0a0 + - libxcb >=1.17.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - openjpeg >=2.5.3,<3.0a0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - tk >=8.6.13,<8.7.0a0 + arch: x86_64 + platform: linux + license: HPND + size: 42749785 + timestamp: 1735929845390 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pillow-11.1.0-py312h719f0cf_0.conda + sha256: 7559556ffc44bda777f85c2e5acd6b5756fa5822c0271b329b7b9a3c6bb20349 + md5: 77e0ec0a6fc847d317f204aa15b59f6b + depends: + - freetype >=2.12.1,<3.0a0 + - lcms2 >=2.16,<3.0a0 + - libgcc >=13 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libtiff >=4.7.0,<4.8.0a0 + - libwebp-base >=1.5.0,<2.0a0 + - libxcb >=1.17.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - openjpeg >=2.5.3,<3.0a0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - tk >=8.6.13,<8.7.0a0 + arch: aarch64 + platform: linux + license: HPND + size: 41362848 + timestamp: 1735932311857 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-11.1.0-py312h50aef2c_0.conda + sha256: b29b7c915053e06a7a5b4118760202c572c9c35d23bd6ce8e73270b6a50e50ee + md5: 94d6ba8cd468668a9fb04193b0f4b36e + depends: + - __osx >=11.0 + - freetype >=2.12.1,<3.0a0 + - lcms2 >=2.16,<3.0a0 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libtiff >=4.7.0,<4.8.0a0 + - libwebp-base >=1.5.0,<2.0a0 + - libxcb >=1.17.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - openjpeg >=2.5.3,<3.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - tk >=8.6.13,<8.7.0a0 + arch: arm64 + platform: osx + license: HPND + size: 42852329 + timestamp: 1735930118976 +- conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + sha256: bb50f6499e8bc1d1a26f17716c97984671121608dc0c3ecd34858112bce59a27 + md5: 577852c7e53901ddccc7e6a9959ddebe + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 20448 + timestamp: 1733232756001 +- conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_1.conda + sha256: 122433fc5318816b8c69283aaf267c73d87aa2d09ce39f64c9805c9a3b264819 + md5: e9dcbce5f45f9ee500e728ae58b605b6 + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 23595 + timestamp: 1733222855563 +- conda: https://conda.anaconda.org/conda-forge/noarch/prometheus-async-22.2.0-pyh29332c3_0.conda + sha256: 28262575a4b0421a50983be5e898205b7315b50d3e72518fe44b2b9c368026d8 + md5: e86915350744e5a8de993f7474ca98ce + depends: + - python >=3.9 + - prometheus_client >=0.8.0 + - typing_extensions >=3.10.0 + - wrapt + - python + license: Apache-2.0 + license_family: APACHE + size: 24093 + timestamp: 1737857634308 +- conda: https://conda.anaconda.org/conda-forge/linux-64/prometheus-cpp-1.3.0-ha5d0236_0.conda + sha256: 013669433eb447548f21c3c6b16b2ed64356f726b5f77c1b39d5ba17a8a4b8bc + md5: a83f6a2fdc079e643237887a37460668 + depends: + - __glibc >=2.17,<3.0.a0 + - libcurl >=8.10.1,<9.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - zlib + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 199544 + timestamp: 1730769112346 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/prometheus-cpp-1.3.0-h7938499_0.conda + sha256: 9350d7bbc3982a732ff13a7fd17b585509e3b7d0191ac7b810cc3224868e3648 + md5: 10f4301290e51c49979ff98d1bdf2556 + depends: + - libcurl >=8.10.1,<9.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - zlib + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 211335 + timestamp: 1730769181127 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/prometheus-cpp-1.3.0-h0967b3e_0.conda + sha256: 851a77ae1a8e90db9b9f3c4466abea7afb52713c3d98ceb0d37ba6ff27df2eff + md5: 7172339b49c94275ba42fec3eaeda34f + depends: + - __osx >=11.0 + - libcurl >=8.10.1,<9.0a0 + - libcxx >=18 + - libzlib >=1.3.1,<2.0a0 + - zlib + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 173220 + timestamp: 1730769371051 +- conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda + sha256: bc8f00d5155deb7b47702cb8370f233935704100dbc23e30747c161d1b6cf3ab + md5: 3e01e386307acc60b2f89af0b2e161aa + depends: + - python >=3.9 + license: Apache-2.0 + license_family: Apache + size: 49002 + timestamp: 1733327434163 +- conda: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.1-py312h178313f_1.conda + sha256: 6d5ff6490c53e14591b70924711fe7bd70eb7fbeeeb1cbd9ed2f6d794ec8c4eb + md5: 349635694b4df27336bc15a49e9220e9 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 52947 + timestamp: 1737635699390 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.2.1-py312hcc812fe_1.conda + sha256: d759d8ab9c060b42cabf6312b9a04aa590daecabf1dd4e35731f4bc1b5c388bb + md5: 533b07e9fd835938f465225613825eee + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 52776 + timestamp: 1737635802135 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.1-py312h998013c_1.conda + sha256: 96145760baad111d7ae4213ea8f8cc035cf33b001f5ff37d92268e4d28b0941d + md5: 83678928c58c9ae76778a435b6c7a94a + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + size: 50942 + timestamp: 1737635896600 +- conda: https://conda.anaconda.org/conda-forge/linux-64/protobuf-5.28.3-py312h2ec8cdc_0.conda + sha256: acb2e0ee948e3941f8ed191cb77f654e06538638aed8ccd71cbc78a15242ebbb + md5: 9d7e427d159c1b2d516cc047ff177c48 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - libprotobuf 5.28.3 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 464794 + timestamp: 1731366525051 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/protobuf-5.28.3-py312h6f74592_0.conda + sha256: 9c575d5035c7ecb114ab9e17906c0a54087d9598dd6a2104c02fe33f0a29dd46 + md5: 06513608c94fb1c1b17136ace77063a9 + depends: + - libgcc >=13 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - libprotobuf 5.28.3 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 473242 + timestamp: 1731366577844 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/protobuf-5.28.3-py312hd8f9ff3_0.conda + sha256: 9d572a97419bdace14d7c7cc8cc8c4bf2dcb22b56965dac87a27fbdb5061b926 + md5: 5afbe52a59f04dd1fe566d0d17590d7e + depends: + - __osx >=11.0 + - libcxx >=18 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - libprotobuf 5.28.3 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 448803 + timestamp: 1731367010746 +- conda: https://conda.anaconda.org/conda-forge/linux-64/psutil-7.0.0-py312h66e93f0_0.conda + sha256: 158047d7a80e588c846437566d0df64cec5b0284c7184ceb4f3c540271406888 + md5: 8e30db4239508a538e4a3b3cdf5b9616 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 466219 + timestamp: 1740663246825 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/psutil-7.0.0-py312hb2c0f52_0.conda + sha256: 2a4f1ad69b16b9843f90adf5b39418c635835605bd2b300f55a8432c5ee22296 + md5: 1195731cd361196f9e352341a764fccb + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 467245 + timestamp: 1740663309651 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/psutil-7.0.0-py312hea69d52_0.conda + sha256: cb11dcb39b2035ef42c3df89b5a288744b5dcb5a98fb47385760843b1d4df046 + md5: 0f461bd37cb428dc20213a08766bb25d + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 476376 + timestamp: 1740663381256 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda + sha256: 9c88f8c64590e9567c6c80823f0328e58d3b1efb0e1c539c0315ceca764e0973 + md5: b3c17d95b5a10c6e64a21fa17573e70e + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 8252 + timestamp: 1726802366959 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pthread-stubs-0.4-h86ecc28_1002.conda + sha256: 977dfb0cb3935d748521dd80262fe7169ab82920afd38ed14b7fee2ea5ec01ba + md5: bb5a90c93e3bac3d5690acf76b4a6386 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 8342 + timestamp: 1726803319942 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pthread-stubs-0.4-hd74edd7_1002.conda + sha256: 8ed65e17fbb0ca944bfb8093b60086e3f9dd678c3448b5de212017394c247ee3 + md5: 415816daf82e0b23a736a069a75e9da7 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 8381 + timestamp: 1726802424786 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-19.0.1-py312h7900ff3_0.conda + sha256: 82a0b6ef00473c134ff32138a6fe1f6edc600f362f2007d33d6c6723e220a83d + md5: 972f2a7f04b117accc08a11469c2cb6e + depends: + - libarrow-acero 19.0.1.* + - libarrow-dataset 19.0.1.* + - libarrow-substrait 19.0.1.* + - libparquet 19.0.1.* + - pyarrow-core 19.0.1 *_0_* + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 25300 + timestamp: 1739792645286 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-19.0.1-py312h8025657_0.conda + sha256: d17f85be9e3c9ccdbf46a00f51a155d6c9d02837f3ff850539cc931ce149546f + md5: 0f2b788d71caa13c9e05fb4366e3b564 + depends: + - libarrow-acero 19.0.1.* + - libarrow-dataset 19.0.1.* + - libarrow-substrait 19.0.1.* + - libparquet 19.0.1.* + - pyarrow-core 19.0.1 *_0_* + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 25487 + timestamp: 1739792927040 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-19.0.1-py312h1f38498_0.conda + sha256: 212a9ef1971d69882b977a930b3e8cd9d78bb58c027119a52b92d48a5e47f9eb + md5: 4bbcfad0bfcad7ee1d617a9b6db564ee + depends: + - libarrow-acero 19.0.1.* + - libarrow-dataset 19.0.1.* + - libarrow-substrait 19.0.1.* + - libparquet 19.0.1.* + - pyarrow-core 19.0.1 *_0_* + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + size: 25462 + timestamp: 1739792876991 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-19.0.1-py312h01725c0_0_cpu.conda + sha256: b2d397ee72a8e33aa1b2bcaa525b3bfc1dad333a631e668e54bcdcf275b3d69b + md5: 227543d1eef90da786f0c63bd0787839 + depends: + - __glibc >=2.17,<3.0.a0 + - libarrow 19.0.1.* *cpu + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - numpy >=1.21,<3 + - apache-arrow-proc =*=cpu + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 5203933 + timestamp: 1739792285799 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-19.0.1-py312h66f7834_0_cpu.conda + sha256: ab25433629022236b24d35a53dbef033ef60f3cb3a71fa630392d7340791bdc7 + md5: e83aadc9635bdcf69845587c4c837fd3 + depends: + - libarrow 19.0.1.* *cpu + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - numpy >=1.21,<3 + - apache-arrow-proc =*=cpu + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 5017444 + timestamp: 1739792893195 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-19.0.1-py312hc40f475_0_cpu.conda + sha256: 50ad4d67a1a2be32c2441a945a333b5347e36f027ea629fd903e7eaae77e0ed7 + md5: 90e3c0898e229d76e4a6949f621f0f58 + depends: + - __osx >=11.0 + - libarrow 19.0.1.* *cpu + - libcxx >=18 + - libzlib >=1.3.1,<2.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - apache-arrow-proc =*=cpu + - numpy >=1.21,<3 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + size: 4398733 + timestamp: 1739792829575 +- conda: https://conda.anaconda.org/conda-forge/noarch/pybind11-2.13.6-pyh1ec8472_2.conda + sha256: 27f888492af3d5ab19553f263b0015bf3766a334668b5b3a79c7dc0416e603c1 + md5: 8088a5e7b2888c780738c3130f2a969d + depends: + - pybind11-global 2.13.6 *_2 + - python + constrains: + - pybind11-abi ==4 + license: BSD-3-Clause + license_family: BSD + size: 186375 + timestamp: 1730237816231 +- conda: https://conda.anaconda.org/conda-forge/noarch/pybind11-global-2.13.6-pyh415d2e4_2.conda + sha256: 9ff0d61d86878f81779bdb7e47656a75feaab539893462cff29b8ec353026d81 + md5: 120541563e520d12d8e39abd7de9092c + depends: + - __unix + - python + constrains: + - pybind11-abi ==4 + license: BSD-3-Clause + license_family: BSD + size: 179139 + timestamp: 1730237481227 +- conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda + sha256: 79db7928d13fab2d892592223d7570f5061c192f27b9febd1a418427b719acc6 + md5: 12c566707c80111f9799308d9e265aef + depends: + - python >=3.9 + - python + license: BSD-3-Clause + license_family: BSD + size: 110100 + timestamp: 1733195786147 +- conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.6-pyh3cfb1c2_0.conda + sha256: 9a78801a28959edeb945e8270a4e666577b52fac0cf4e35f88cf122f73d83e75 + md5: c69f87041cf24dfc8cb6bf64ca7133c7 + depends: + - annotated-types >=0.6.0 + - pydantic-core 2.27.2 + - python >=3.9 + - typing-extensions >=4.6.1 + - typing_extensions >=4.12.2 + license: MIT + license_family: MIT + size: 296841 + timestamp: 1737761472006 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.27.2-py312h12e396e_0.conda + sha256: 81602a4592ad2ac1a1cb57372fd25214e63b1c477d5818b0c21cde0f1f85c001 + md5: bae01b2563030c085f5158c518b84e86 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - typing-extensions >=4.6.0,!=4.7.0 + constrains: + - __glibc >=2.17 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 1641402 + timestamp: 1734571789895 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pydantic-core-2.27.2-py312h8cbf658_0.conda + sha256: 623e0f3846f15d035ce7ab7ae445fc8d9e547b6684ab55858b6f44510d24b097 + md5: 9677f6ab4bf27ba3c2aee70d08c7b27c + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - typing-extensions >=4.6.0,!=4.7.0 + constrains: + - __glibc >=2.17 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 1505076 + timestamp: 1734571966615 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.27.2-py312hcd83bfe_0.conda + sha256: cfa7201f890d5d08ce29ff70e65a96787d5793a1718776733666b44bbd4a1205 + md5: dcb307e02f17d38c6e1cbfbf8c602852 + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - typing-extensions >=4.6.0,!=4.7.0 + constrains: + - __osx >=11.0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 1593461 + timestamp: 1734571986644 +- conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.8.1-pyh3cfb1c2_0.conda + sha256: 84b78dcdc75d7dacd8c85df9a7fef42ff5684897217b46beef6c516afb2550dc + md5: 88715188749bfac9fa92aec9c747d62c + depends: + - pydantic >=2.7.0 + - python >=3.9 + - python-dotenv >=0.21.0 + license: MIT + size: 32632 + timestamp: 1740672054181 +- conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda + sha256: 28a3e3161390a9d23bc02b4419448f8d27679d9e2c250e29849e37749c8de86b + md5: 232fb4577b6687b2d503ef8e254270c9 + depends: + - python >=3.9 + license: BSD-2-Clause + license_family: BSD + size: 888600 + timestamp: 1736243563082 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyinstrument-5.0.1-py312h66e93f0_0.conda + sha256: 3f1c0bc95f2c46dcd107f44cf742ee1fa40ba22e244f01083654743bbbcf28f3 + md5: 9f1d7b421e4c8fd00009490613db64d4 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 182333 + timestamp: 1737774425235 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyinstrument-5.0.1-py312hb2c0f52_0.conda + sha256: 16af5db4359078bcb526291855bf1075ab035a96fe4e8d5cc4b0b5c8cba89b9a + md5: 90f5e9e04b1ecf25ad3f28b606f63742 + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 183988 + timestamp: 1737774588265 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyinstrument-5.0.1-py312hea69d52_0.conda + sha256: 5e7de2f908af22bbd8cf3562ce5ebf65ad6c0d8e40038f90b56f4db750639ce2 + md5: 07b0eb9b6bd91dfa87f95032825690dc + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 182524 + timestamp: 1737774624030 +- conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda + sha256: ba3b032fa52709ce0d9fd388f63d330a026754587a2f461117cac9ab73d8d0d8 + md5: 461219d1a5bd61342293efa2c0c90eac + depends: + - __unix + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 21085 + timestamp: 1733217331982 +- conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.4-pyhd8ed1ab_1.conda + sha256: 75245ca9d0cbd6d38bb45ec02430189a9d4c21c055c5259739d738a2298d61b3 + md5: 799ed216dc6af62520f32aa39bc1c2bb + depends: + - colorama + - exceptiongroup >=1.0.0rc8 + - iniconfig + - packaging + - pluggy <2,>=1.5 + - python >=3.9 + - tomli >=1 + constrains: + - pytest-faulthandler >=2 + license: MIT + license_family: MIT + size: 259195 + timestamp: 1733217599806 +- conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.9-h9e4cc4f_0_cpython.conda + sha256: 64fed5178f1e9c8ac0f572ac0ce37955f5dee7b2bcac665202bc14f1f7dd618a + md5: 5665f0079432f8848079c811cdb537d5 + depends: + - __glibc >=2.17,<3.0.a0 + - bzip2 >=1.0.8,<2.0a0 + - ld_impl_linux-64 >=2.36.1 + - libexpat >=2.6.4,<3.0a0 + - libffi >=3.4,<4.0a0 + - libgcc >=13 + - liblzma >=5.6.4,<6.0a0 + - libnsl >=2.0.1,<2.1.0a0 + - libsqlite >=3.48.0,<4.0a0 + - libuuid >=2.38.1,<3.0a0 + - libxcrypt >=4.4.36 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.4.1,<4.0a0 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + constrains: + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Python-2.0 + size: 31581682 + timestamp: 1739521496324 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.9-h1683364_0_cpython.conda + sha256: 0366f38918bceda8ff5917d7bbe1cea2bc8b6c74e7245eb0e4b0d3c2d37f76cf + md5: 2e7ad70254455e0508adabff10218512 + depends: + - bzip2 >=1.0.8,<2.0a0 + - ld_impl_linux-aarch64 >=2.36.1 + - libexpat >=2.6.4,<3.0a0 + - libffi >=3.4,<4.0a0 + - libgcc >=13 + - liblzma >=5.6.4,<6.0a0 + - libnsl >=2.0.1,<2.1.0a0 + - libsqlite >=3.48.0,<4.0a0 + - libuuid >=2.38.1,<3.0a0 + - libxcrypt >=4.4.36 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.4.1,<4.0a0 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + constrains: + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Python-2.0 + size: 13804161 + timestamp: 1739519531794 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.9-hc22306f_0_cpython.conda + sha256: cbf81a78d3ca6e663e827523e6ddbc28369cac488da047a28f83875eb52fe5f6 + md5: 1d105a6c46a753e3c0bab54a1ad24063 + depends: + - __osx >=11.0 + - bzip2 >=1.0.8,<2.0a0 + - libexpat >=2.6.4,<3.0a0 + - libffi >=3.4,<4.0a0 + - liblzma >=5.6.4,<6.0a0 + - libsqlite >=3.48.0,<4.0a0 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.4.1,<4.0a0 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + constrains: + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Python-2.0 + size: 12947786 + timestamp: 1739520092196 +- conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + sha256: a50052536f1ef8516ed11a844f9413661829aa083304dc624c5925298d078d79 + md5: 5ba79d7c71f03c678c8ead841f347d6e + depends: + - python >=3.9 + - six >=1.5 + license: Apache-2.0 + license_family: APACHE + size: 222505 + timestamp: 1733215763718 +- conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda + sha256: 99713f6b534fef94995c6c16fd21d59f3548784e9111775d692bdc7c44678f02 + md5: e5c6ed218664802d305e79cc2d4491de + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 24215 + timestamp: 1733243277223 +- conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda + sha256: 4790787fe1f4e8da616edca4acf6a4f8ed4e7c6967aa31b920208fc8f95efcca + md5: a61bf9ec79426938ff785eb69dbb1960 + depends: + - python >=3.6 + license: BSD-2-Clause + license_family: BSD + size: 13383 + timestamp: 1677079727691 +- conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.20-pyhff2d567_0.conda + sha256: 1b03678d145b1675b757cba165a0d9803885807792f7eb4495e48a38858c3cca + md5: a28c984e0429aff3ab7386f7de56de6f + depends: + - python >=3.9 + license: Apache-2.0 + license_family: Apache + size: 27913 + timestamp: 1734420869885 +- conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.1-pyhd8ed1ab_0.conda + sha256: 1597d6055d34e709ab8915091973552a0b8764c8032ede07c4e99670da029629 + md5: 392c91c42edd569a7ec99ed8648f597a + depends: + - python >=3.9 + license: Apache-2.0 + license_family: APACHE + size: 143794 + timestamp: 1737541204030 +- conda: https://conda.anaconda.org/conda-forge/linux-64/python-xxhash-3.5.0-py312h66e93f0_2.conda + sha256: b5950a737d200e2e3cf199ab7b474ac194fcf4d6bee13bcbdf32c5a5cca7eaf0 + md5: cc3f6c452697c1cf7e4e6e5f21861f96 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - xxhash >=0.8.3,<0.8.4.0a0 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + size: 23216 + timestamp: 1740594909669 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-xxhash-3.5.0-py312h52516f5_2.conda + sha256: b0c7528f2597e33911f179dad9852a4958683533570f8cc68976068b444461f4 + md5: c6de44ac405bf8a793c57850ea6b427a + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - xxhash >=0.8.3,<0.8.4.0a0 + arch: aarch64 + platform: linux + license: BSD-2-Clause + license_family: BSD + size: 23768 + timestamp: 1740595924431 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-xxhash-3.5.0-py312hea69d52_2.conda + sha256: 10c3df8dae696da4bd8532609999991ae1f3c4cc1a1e7f6a636cf6aa19d9eb82 + md5: b0c7097883bb4d8acfd72e7b9c6b93cd + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - xxhash >=0.8.3,<0.8.4.0a0 + arch: arm64 + platform: osx + license: BSD-2-Clause + license_family: BSD + size: 21947 + timestamp: 1740595129087 +- conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda + build_number: 5 + sha256: d10e93d759931ffb6372b45d65ff34d95c6000c61a07e298d162a3bc2accebb0 + md5: 0424ae29b104430108f5218a66db7260 + constrains: + - python 3.12.* *_cpython + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 6238 + timestamp: 1723823388266 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.12-5_cp312.conda + build_number: 5 + sha256: 5ccdad9981753cc4a2d126e356673a21c0cd5b34e209cb8d476a3947d4ad9b39 + md5: 62b20f305498284a07dc6c45fd0e5c87 + constrains: + - python 3.12.* *_cpython + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 6329 + timestamp: 1723823366253 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-5_cp312.conda + build_number: 5 + sha256: 49d624e4b809c799d2bf257b22c23cf3fc4460f5570d9a58e7ad86350aeaa1f4 + md5: b76f9b1c862128e56ac7aa8cd2333de9 + constrains: + - python 3.12.* *_cpython + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 6278 + timestamp: 1723823099686 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pytorch-2.5.1-cpu_mkl_py312_heeca0f5_113.conda + sha256: dca9058fc3fd8c7720815a60f91fbed21c96deed1862c0779cb9849010a615e0 + md5: 0d0917b3ad4dad39ee9cf2340b6913e7 + depends: + - __glibc >=2.17,<3.0.a0 + - _openmp_mutex >=4.5 + - filelock + - fsspec + - jinja2 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libblas * *mkl + - libcblas >=3.9.0,<4.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + - libtorch 2.5.1.* + - libuv >=1.50.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - mkl >=2024.2.2,<2025.0a0 + - networkx + - numpy >=1.19,<3 + - pybind11 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - setuptools + - sleef >=3.8,<4.0a0 + - sympy >=1.13.1,!=1.13.2 + - typing_extensions + constrains: + - pytorch-gpu ==99999999 + - pytorch-cpu ==2.5.1 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 27046950 + timestamp: 1739243439897 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pytorch-2.5.1-cpu_generic_py312_h819a134_13.conda + sha256: aca9f90080b41be87632b9be5c05d2d2583583cc8a88c2e4d9a755b4352443e8 + md5: 973311c703c92c0145a0ed6cd28ac1f0 + depends: + - _openmp_mutex >=4.5 + - filelock + - fsspec + - jinja2 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcblas >=3.9.0,<4.0a0 + - libgcc >=13 + - liblapack >=3.9.0,<4.0a0 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + - libtorch 2.5.1.* + - libuv >=1.50.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - networkx + - nomkl + - numpy >=1.19,<3 + - pybind11 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - setuptools + - sleef >=3.8,<4.0a0 + - sympy >=1.13.1,!=1.13.2 + - typing_extensions + constrains: + - pytorch-cpu ==2.5.1 + - pytorch-gpu ==99999999 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 26955065 + timestamp: 1739239589334 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pytorch-2.5.1-cpu_generic_py312_h49ed405_13.conda + sha256: 80ad77e98a4d91287b4c5aad62fb73c19fdcd3bf8a4c46f3630fdb3795b613ac + md5: 8a4ecdb698c36fa439757454437f44bd + depends: + - __osx >=11.0 + - filelock + - fsspec + - jinja2 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcblas >=3.9.0,<4.0a0 + - libcxx >=18 + - liblapack >=3.9.0,<4.0a0 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libtorch 2.5.1.* + - libuv >=1.50.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - llvm-openmp >=18.1.8 + - networkx + - nomkl + - numpy >=1.19,<3 + - pybind11 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - setuptools + - sleef >=3.8,<4.0a0 + - sympy >=1.13.1,!=1.13.2 + - typing_extensions + constrains: + - pytorch-gpu ==99999999 + - pytorch-cpu ==2.5.1 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 26176295 + timestamp: 1739248670305 +- conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda + sha256: 1a7d6b233f7e6e3bbcbad054c8fd51e690a67b129a899a056a5e45dd9f00cb41 + md5: 3eeeeb9e4827ace8c0c1419c85d590ad + depends: + - python >=3.7 + license: MIT + license_family: MIT + size: 188538 + timestamp: 1706886944988 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py312h178313f_2.conda + sha256: 159cba13a93b3fe084a1eb9bda0a07afc9148147647f0d437c3c3da60980503b + md5: cf2485f39740de96e2a7f2bb18ed2fee + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - yaml >=0.2.5,<0.3.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 206903 + timestamp: 1737454910324 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyyaml-6.0.2-py312hcc812fe_2.conda + sha256: dc78e41d51300722ba35ac4a10d37339ceffbe22d7501c71dfd3f633a4f8e79a + md5: 4de4a5ff81c941674e08595244e7cd61 + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - yaml >=0.2.5,<0.3.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 199172 + timestamp: 1737454840766 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py312h998013c_2.conda + sha256: ad225ad24bfd60f7719709791345042c3cb32da1692e62bd463b084cf140e00d + md5: 68149ed4d4e9e1c42d2ba1f27f08ca96 + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - yaml >=0.2.5,<0.3.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 192148 + timestamp: 1737454886351 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.1-py312hbf22597_0.conda + sha256: 90ec0da0317d3d76990a40c61e1709ef859dd3d8c63838bad2814f46a63c8a2e + md5: 7cec8d0dac15a2d9fea8e49879aa779d + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libsodium >=1.0.20,<1.0.21.0a0 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - zeromq >=4.3.5,<4.4.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 382698 + timestamp: 1738271121975 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyzmq-26.2.1-py312h2427ae1_0.conda + sha256: 9558f9330093e5c21b7c04e2e212e19b9b88ad9c808315f12c0765b244018a09 + md5: 0520da8de6870d8ff63e818e927d1524 + depends: + - libgcc >=13 + - libsodium >=1.0.20,<1.0.21.0a0 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - zeromq >=4.3.5,<4.4.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 375156 + timestamp: 1738273130727 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.1-py312hf4875e0_0.conda + sha256: 70d398b334668dc597d33e27847ede1b0829a639b9c91ee845355e52c86c2293 + md5: bfbefdb140b546a80827ff7c9d5ac7b8 + depends: + - __osx >=11.0 + - libcxx >=18 + - libsodium >=1.0.20,<1.0.21.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - zeromq >=4.3.5,<4.4.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 364649 + timestamp: 1738271263898 +- conda: https://conda.anaconda.org/conda-forge/linux-64/re2-2024.07.02-h9925aae_2.conda + sha256: d213c44958d49ce7e0d4d5b81afec23640cce5016685dbb2d23571a99caa4474 + md5: e84ddf12bde691e8ec894b00ea829ddf + depends: + - libre2-11 2024.07.02 hbbce691_2 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 26786 + timestamp: 1735541074034 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/re2-2024.07.02-haa97905_2.conda + sha256: 040848655df9119bae5a549fb5c8956a5537120859416c1d9d0712b7bac9f12e + md5: 1bf0135339b4a7419a198a795d2d4be0 + depends: + - libre2-11 2024.07.02 h18dbdb1_2 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 26830 + timestamp: 1735540999398 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/re2-2024.07.02-h6589ca4_2.conda + sha256: 4d3799c05f8f662922a0acd129d119774760a3281b883603678e128d1cb307fb + md5: 7a8b4ad8c58a3408ca89d78788c78178 + depends: + - libre2-11 2024.07.02 h07bc746_2 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 26861 + timestamp: 1735541088455 +- conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda + sha256: 2d6d0c026902561ed77cd646b5021aef2d4db22e57a5b0178dfc669231e06d2c + md5: 283b96675859b20a825f8fa30f311446 + depends: + - libgcc >=13 + - ncurses >=6.5,<7.0a0 + arch: x86_64 + platform: linux + license: GPL-3.0-only + license_family: GPL + size: 282480 + timestamp: 1740379431762 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8382b9d_2.conda + sha256: 54bed3a3041befaa9f5acde4a37b1a02f44705b7796689574bcf9d7beaad2959 + md5: c0f08fc2737967edde1a272d4bf41ed9 + depends: + - libgcc >=13 + - ncurses >=6.5,<7.0a0 + arch: aarch64 + platform: linux + license: GPL-3.0-only + license_family: GPL + size: 291806 + timestamp: 1740380591358 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda + sha256: 7db04684d3904f6151eff8673270922d31da1eea7fa73254d01c437f49702e34 + md5: 63ef3f6e6d6d5c589e64f11263dc5676 + depends: + - ncurses >=6.5,<7.0a0 + arch: arm64 + platform: osx + license: GPL-3.0-only + license_family: GPL + size: 252359 + timestamp: 1740379663071 +- conda: https://conda.anaconda.org/conda-forge/linux-64/regex-2024.11.6-py312h66e93f0_0.conda + sha256: fcb5687d3ec5fff580b64b8fb649d9d65c999a91a5c3108a313ecdd2de99f06b + md5: 647770db979b43f9c9ca25dcfa7dc4e4 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Python-2.0 + license_family: PSF + size: 402821 + timestamp: 1730952378415 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/regex-2024.11.6-py312hb2c0f52_0.conda + sha256: ec2c416860de29224e447e2031f8686a05476759c17da1f32f61d4307e540ec8 + md5: fa8b589107567f532fa1380e66f91776 + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Python-2.0 + license_family: PSF + size: 398947 + timestamp: 1730952477463 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/regex-2024.11.6-py312hea69d52_0.conda + sha256: dcdec32f2c7dd37986baa692bedf9db126ad34e92e5e9b64f707cba3d04d2525 + md5: e73cda1f18846b608284bd784f061eac + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Python-2.0 + license_family: PSF + size: 366374 + timestamp: 1730952427552 +- conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda + sha256: d701ca1136197aa121bbbe0e8c18db6b5c94acbd041c2b43c70e5ae104e1d8ad + md5: a9b9368f3701a417eac9edbcae7cb737 + depends: + - certifi >=2017.4.17 + - charset-normalizer >=2,<4 + - idna >=2.5,<4 + - python >=3.9 + - urllib3 >=1.21.1,<3 + constrains: + - chardet >=3.0.2,<6 + license: Apache-2.0 + license_family: APACHE + size: 58723 + timestamp: 1733217126197 +- conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_1.conda + sha256: 06a760c5ae572e72e865d5a87e9fe3cc171e1a9c996e63daf3db52ff1a0b4457 + md5: 7aed65d4ff222bfb7335997aa40b7da5 + depends: + - markdown-it-py >=2.2.0 + - pygments >=2.13.0,<3.0.0 + - python >=3.9 + - typing_extensions >=4.0.0,<5.0.0 + license: MIT + license_family: MIT + size: 185646 + timestamp: 1733342347277 +- conda: 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 +- conda: https://conda.anaconda.org/conda-forge/linux-64/s2n-1.5.11-h072c03f_0.conda + sha256: cfdd98c8f9a1e5b6f9abce5dac6d590cc9fe541a08466c9e4a26f90e00b569e3 + md5: 5e8060d52f676a40edef0006a75c718f + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - openssl >=3.4.0,<4.0a0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 356213 + timestamp: 1737146304079 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/s2n-1.5.11-h3caee7a_0.conda + sha256: 5a7ae66f96be24c3b2007139b6c3701ab015b4b4eb4eccfdd07be97710243a47 + md5: 1517c0518f8a06a48a15f41d94252874 + depends: + - libgcc >=13 + - openssl >=3.4.0,<4.0a0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 352811 + timestamp: 1737146319512 +- conda: https://conda.anaconda.org/conda-forge/linux-64/safetensors-0.5.3-py312h12e396e_0.conda + sha256: 23dec8105d34e51cc2269a79680a666351233e2dc171ff14c46d3455d2c22080 + md5: fd1fc1f1e6ceee16d9a58d3ff5a57c7f + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - __glibc >=2.17 + arch: x86_64 + platform: linux + license: Apache-2.0 + size: 431388 + timestamp: 1740651706122 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/safetensors-0.5.3-py312h8cbf658_0.conda + sha256: 24ca173b9f39d5e5cabc6ea7e570b500682669e5910510020549f8696e29992d + md5: eb2d82d057535f4fb3182f43df429495 + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - __glibc >=2.17 + arch: aarch64 + platform: linux + license: Apache-2.0 + size: 417509 + timestamp: 1740651719895 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/safetensors-0.5.3-py312hcd83bfe_0.conda + sha256: 1d0412be1b16df769c69d537907e690be50d06d05f757ba2451facb6883a3eb3 + md5: 68b99db908e1ec63c0cacae262a835e9 + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - __osx >=11.0 + arch: arm64 + platform: osx + license: Apache-2.0 + size: 382676 + timestamp: 1740651813281 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-0.2.0-hc8f76dd_10.conda + sha256: a1bde55ceb9dc5bd7879283d0f594a6ce65c07fda3de76230c65a4a5df47858a + md5: 480e915dfc6c592615ef6f217e615aa6 + depends: + - libsentencepiece 0.2.0 h8e10757_10 + - python_abi 3.12.* *_cp312 + - sentencepiece-python 0.2.0 py312hb6b8a2b_10 + - sentencepiece-spm 0.2.0 h8e10757_10 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 19470 + timestamp: 1735628377167 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-0.2.0-h6c1b121_10.conda + sha256: 846d885a560fbb4375b645e7caf2f756ef88bbeb441b670375da0090aaa427fb + md5: 33a89eb1dedae8eb7222b0a89856f337 + depends: + - libsentencepiece 0.2.0 h6164ad9_10 + - python_abi 3.12.* *_cp312 + - sentencepiece-python 0.2.0 py312h197ff68_10 + - sentencepiece-spm 0.2.0 h6164ad9_10 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 19686 + timestamp: 1735628718991 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-0.2.0-h22a84ea_10.conda + sha256: 526c934b897131bd274697649c3b1c492a7d66c03368885a954112468b3c1424 + md5: 346abe448f69949a65473b336856860a + depends: + - libsentencepiece 0.2.0 he13a0af_10 + - python_abi 3.12.* *_cp312 + - sentencepiece-python 0.2.0 py312h155166a_10 + - sentencepiece-spm 0.2.0 he13a0af_10 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 19759 + timestamp: 1735628533490 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-python-0.2.0-py312hb6b8a2b_10.conda + sha256: 37df7fb659564587b950b39c936769d9b5095afb7bc223f42d6248a5540c6567 + md5: 7908b7b977e2e123a5f6a29906f2ce44 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 h8e10757_10 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 2411182 + timestamp: 1735628106455 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-python-0.2.0-py312h197ff68_10.conda + sha256: a7c2c19cc397c7632e2630af49ddcff128f145c93ea493421e6f42bfa5e1d30b + md5: 5642e4545a3cf03e446fb3b3e9fd723b + depends: + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 h6164ad9_10 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 2458076 + timestamp: 1735628298246 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-python-0.2.0-py312h155166a_10.conda + sha256: 2d59614aeafbf54cc718805798c11c2d0a3b4b8d947d1bd81c87c484b4883077 + md5: 6e11367ef670296fce01fc9860be944d + depends: + - __osx >=11.0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 he13a0af_10 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 2433303 + timestamp: 1735628083958 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-spm-0.2.0-h8e10757_10.conda + sha256: 6b55e1121545357d63c3aa0766931720e8aafc52d88641ba7631c8cbaa68c52f + md5: e977b7be5ac26c55825e121e00b90493 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 h8e10757_10 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 89076 + timestamp: 1735628334078 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-spm-0.2.0-h6164ad9_10.conda + sha256: b98fc1028a8e8fbf309af383f9c837290a14e076e6c5533dc251694ea33ffc6e + md5: a4b75936c01dca3f089f02752b7ee325 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 h6164ad9_10 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 85983 + timestamp: 1735628693813 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-spm-0.2.0-he13a0af_10.conda + sha256: b760aeee02e2afbfcce3f559e8a227aa4c94139157b1702fdfb41a057dad0e52 + md5: 9b7300f23cd330da8664cd072c162e5f + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 he13a0af_10 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 83826 + timestamp: 1735628514667 +- conda: https://conda.anaconda.org/conda-forge/noarch/sentinel-1.0.0-pyh29332c3_0.conda + sha256: 87f7d70b0a29627ce7f78a463c6609156aaee638cca917b5f6c6c70828446acf + md5: 82e861633beabad680253e03918ec4a2 + depends: + - python >=3.9 + - python + constrains: + - varname >=0.1 + license: MIT + license_family: MIT + size: 13828 + timestamp: 1740445106343 +- conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.8.2-pyhff2d567_0.conda + sha256: 91d664ace7c22e787775069418daa9f232ee8bafdd0a6a080a5ed2395a6fa6b2 + md5: 9bddfdbf4e061821a1a443f93223be61 + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 777736 + timestamp: 1740654030775 +- conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda + sha256: 0557c090913aa63cdbe821dbdfa038a321b488e22bc80196c4b3b1aace4914ef + md5: 7c3c2a0f3ebdea2bbc35538d162b43bf + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 14462 + timestamp: 1733301007770 +- conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + sha256: 41db0180680cc67c3fa76544ffd48d6a5679d96f4b71d7498a759e94edc9a2db + md5: a451d576819089b0d672f18768be0f65 + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 16385 + timestamp: 1733381032766 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sleef-3.8-h1b44611_0.conda + sha256: c998d5a29848ce9ff1c53ba506e7d01bbd520c39bbe72e2fb7cdf5a53bad012f + md5: aec4dba5d4c2924730088753f6fa164b + depends: + - __glibc >=2.17,<3.0.a0 + - _openmp_mutex >=4.5 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: BSL-1.0 + size: 1920152 + timestamp: 1738089391074 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sleef-3.8-h8fb0607_0.conda + sha256: 86a19e4457bbc20d6c52a7cf0a010b2d99b704e78ae396f9fae4f4da9ae42cf3 + md5: 76647a886ead58ea5d82990117aafce2 + depends: + - _openmp_mutex >=4.5 + - libgcc >=13 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: BSL-1.0 + size: 1172391 + timestamp: 1738090891356 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sleef-3.8-h8391f65_0.conda + sha256: e8f26540b22fe2f1c9f44666a8fdf0786e7a40e8e69466d2567a53b106f6dff3 + md5: 6567410b336a7b8f775cd9157fb50d61 + depends: + - __osx >=11.0 + - libcxx >=18 + - llvm-openmp >=18.1.8 + arch: arm64 + platform: osx + license: BSL-1.0 + size: 584685 + timestamp: 1738089615902 +- conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-h8bd8927_1.conda + sha256: ec91e86eeb2c6bbf09d51351b851e945185d70661d2ada67204c9a6419d282d3 + md5: 3b3e64af585eadfb52bb90b553db5edf + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 42739 + timestamp: 1733501881851 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-hd4fb6f5_1.conda + sha256: c4a07ae5def8d55128f25a567a296ef9d7bf99a3bc79d46bd5160c076a5f50af + md5: 2fcc6cd1e5550deb509073fd2e6693e1 + depends: + - libgcc >=13 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 43032 + timestamp: 1733501964775 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-h98b9ce2_1.conda + sha256: 4242f95b215127a006eb664fe26ed5a82df87e90cbdbc7ce7ff4971f0720997f + md5: ded86dee325290da2967a3fea3800eb5 + depends: + - __osx >=11.0 + - libcxx >=18 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 35857 + timestamp: 1733502172664 +- conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda + sha256: c2248418c310bdd1719b186796ae50a8a77ce555228b6acd32768e2543a15012 + md5: bf7a226e58dfb8346c70df36065d86c9 + depends: + - python >=3.9 + license: Apache-2.0 + license_family: Apache + size: 15019 + timestamp: 1733244175724 +- conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.2.1-pyhd8ed1ab_0.conda + sha256: 3c6a476e7afb702d841e23c61a0c4cc491929d2e39376d329e67e94c40a236cc + md5: c1ef6bc13dd2caa4b406fb3cb06c2791 + depends: + - anyio >=4.7.0 + - python >=3.9 + - starlette >=0.41.3 + license: BSD-3-Clause + license_family: BSD + size: 15324 + timestamp: 1735126414893 +- conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.45.3-pyha770c72_0.conda + sha256: be48c99e6fb8e12ebee09e6fbb4d78a170b614cdaa19ab791a8f5b6caf09919a + md5: 9b3a68bc7aed7949ef86f950993261f4 + depends: + - anyio >=3.6.2,<5 + - python >=3.9 + - typing_extensions >=3.10.0 + license: BSD-3-Clause + license_family: BSD + size: 57934 + timestamp: 1737824077668 +- conda: https://conda.anaconda.org/conda-forge/noarch/sympy-1.13.3-pyh2585a3b_105.conda + sha256: 929d939c5a8bcdc10a17501890918da68cf14a5883b36fddf77b8f0fbf040be2 + md5: 254cd5083ffa04d96e3173397a3d30f4 + depends: + - __unix + - cpython + - gmpy2 >=2.0.8 + - mpmath >=0.19 + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 4523617 + timestamp: 1736248315124 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tbb-2021.13.0-hceb3a55_1.conda + sha256: 65463732129899770d54b1fbf30e1bb82fdebda9d7553caf08d23db4590cd691 + md5: ba7726b8df7b9d34ea80e82b097a4893 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libhwloc >=2.11.2,<2.11.3.0a0 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 175954 + timestamp: 1732982638805 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tiktoken-0.9.0-py312h14ff09d_0.conda + sha256: aba3affdd0f87e198185ddc0986aa59cb067832dc88ffa6dedbe127da4f8d7bf + md5: 0f116f56298be1450a9db6b45bd2d9a1 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - regex >=2022.1.18 + - requests >=2.26.0 + constrains: + - __glibc >=2.17 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 968542 + timestamp: 1739550580537 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tiktoken-0.9.0-py312h4a2a8a5_0.conda + sha256: 924de648f79b934172cbeafed35ef7413fbd9944c9a76291bbf835da1cfaa0af + md5: 2c8304aecaaced4bbcfc715a5ed16a1a + depends: + - libgcc >=13 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - regex >=2022.1.18 + - requests >=2.26.0 + constrains: + - __glibc >=2.17 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 916956 + timestamp: 1739553289605 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tiktoken-0.9.0-py312hf3e4074_0.conda + sha256: a4335c374e3af6c8ce3d0c413b7074c355e04059dca25853ef0961f4ae0ab39b + md5: ca9fecb880b6d35241324835804a98a0 + depends: + - __osx >=11.0 + - libcxx >=18 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - regex >=2022.1.18 + - requests >=2.26.0 + constrains: + - __osx >=11.0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 827008 + timestamp: 1739550849700 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda + sha256: e0569c9caa68bf476bead1bed3d79650bb080b532c64a4af7d8ca286c08dea4e + md5: d453b98d9c83e71da0741bb0ff4d76bc + depends: + - libgcc-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 + arch: x86_64 + platform: linux + license: TCL + license_family: BSD + size: 3318875 + timestamp: 1699202167581 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda + sha256: 7fa27cc512d3a783f38bd16bbbffc008807372499d5b65d089a8e43bde9db267 + md5: f75105e0585851f818e0009dd1dde4dc + depends: + - libgcc-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 + arch: aarch64 + platform: linux + license: TCL + license_family: BSD + size: 3351802 + timestamp: 1695506242997 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda + sha256: 72457ad031b4c048e5891f3f6cb27a53cb479db68a52d965f796910e71a403a8 + md5: b50a57ba89c32b62428b71a875291c9b + depends: + - libzlib >=1.2.13,<2.0.0a0 + arch: arm64 + platform: osx + license: TCL + license_family: BSD + size: 3145523 + timestamp: 1699202432999 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.21.0-py312h8360d73_0.conda + sha256: 4f504a5e9d77c6d88a8f735c4319429d8bf40b742384f908a2efe0a09acc3cc5 + md5: f953aa733207f3d37acf4a3efbedba89 + depends: + - __glibc >=2.17,<3.0.a0 + - huggingface_hub >=0.16.4,<1.0 + - libgcc >=13 + - libstdcxx >=13 + - openssl >=3.4.0,<4.0a0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - __glibc >=2.17 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 2258007 + timestamp: 1732734202127 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.21.0-py312ha0d6ea1_0.conda + sha256: ef0f4d4e2c798b1821187ea0ba4c86484e48abaa0e9a19fe68030fa7ff5dde84 + md5: 077f48c9e0c08a30d842e15c51df4143 + depends: + - huggingface_hub >=0.16.4,<1.0 + - libgcc >=13 + - libstdcxx >=13 + - openssl >=3.4.0,<4.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - __glibc >=2.17 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 2331194 + timestamp: 1732734303196 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.21.0-py312hf3e4074_0.conda + sha256: 5d395333fcb22dc611140286c1f2ea8b3fa220a4931c583587cb612238091555 + md5: 4c732c74b485ef7ac8ec1c548dd45e8e + depends: + - __osx >=11.0 + - huggingface_hub >=0.16.4,<1.0 + - libcxx >=18 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - __osx >=11.0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + size: 1931389 + timestamp: 1732734727624 +- conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda + sha256: 18636339a79656962723077df9a56c0ac7b8a864329eb8f847ee3d38495b863e + md5: ac944244f1fed2eb49bae07193ae8215 + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 19167 + timestamp: 1733256819729 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda + sha256: 062a3a3a37fa8615ce57929ba7e982c76f5a5810bcebd435950f6d6c4147c310 + md5: e417822cb989e80a0d2b1b576fdd1657 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 840414 + timestamp: 1732616043734 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py312h52516f5_0.conda + sha256: 4c19a544354172b2273553267e734795a6da3c78a04c2d19f8e9e159ca3178bc + md5: e28996d9d2d44d777b7e6fb12f63715b + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 841662 + timestamp: 1732616934923 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda + sha256: 964a2705a36c50040c967b18b45b9cc8de3c2aff4af546979a574e0b38e58e39 + md5: fb0605888a475d6a380ae1d1a819d976 + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 842549 + timestamp: 1732616081362 +- conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + sha256: 11e2c85468ae9902d24a27137b6b39b4a78099806e551d390e394a8c34b48e40 + md5: 9efbfdc37242619130ea42b1cc4ed861 + depends: + - colorama + - python >=3.9 + license: MPL-2.0 or MIT + size: 89498 + timestamp: 1735661472632 +- conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + sha256: f39a5620c6e8e9e98357507262a7869de2ae8cc07da8b7f84e517c9fd6c2b959 + md5: 019a7385be9af33791c989871317e1ed + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 110051 + timestamp: 1733367480074 +- conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.49.0-pyhd8ed1ab_0.conda + sha256: d522d7dda6ebe296b20955b1be3eccc5d5cfdfd413457c1236323b6a08fffd9e + md5: e63e78e545fcf857cac3372edeb67ea4 + depends: + - datasets !=2.5.0 + - filelock + - huggingface_hub >=0.23.0,<1.0 + - numpy >=1.17 + - packaging >=20.0 + - python >=3.9 + - pyyaml >=5.1 + - regex !=2019.12.17 + - requests + - safetensors >=0.4.1 + - tokenizers >=0.21,<0.22 + - tqdm >=4.27 + license: Apache-2.0 + license_family: APACHE + size: 3514640 + timestamp: 1739826374204 +- conda: https://conda.anaconda.org/conda-forge/linux-64/triton-3.2.0-cuda126py312h5a3d8a8_0.conda + sha256: de5ede47f60573582a3aa6dc840c91a6c2002f294df22032ca91575174d60a21 + md5: 9c6facebce2e8fd1f9559ad14dc9dced + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-cudart + - cuda-cuobjdump + - cuda-cupti >=12.6.80,<13.0a0 + - cuda-nvcc-tools + - cuda-version >=12.6,<13 + - libgcc >=13 + - libllvm20 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - setuptools + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 101169812 + timestamp: 1738676149595 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/triton-3.2.0-cuda126py312h1ed5fa8_0.conda + sha256: abd91d81df1ef4b70546da24bc3b01b1aa7a5228bb7d4b73b38abab9dac74bfe + md5: f0c67131cc86daae8adf3ac221ee3a48 + depends: + - cuda-cudart + - cuda-cuobjdump + - cuda-cupti >=12.6.80,<13.0a0 + - cuda-nvcc-tools + - cuda-version >=12.6,<13 + - libgcc >=13 + - libllvm20 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - setuptools + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 103306412 + timestamp: 1738676445445 +- conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda + sha256: ef695490e895c2ad552c77ec497b899b09fd4ad4ab07edcf5649f5994cf92a35 + md5: 170a0398946d8f5b454e592672b6fc20 + depends: + - python >=3.9 + - typer-slim-standard 0.15.1 hd8ed1ab_0 + license: MIT + license_family: MIT + size: 56175 + timestamp: 1733408582623 +- conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda + sha256: d4965516f35e0805199de6596c4ac76c4ad3d6b012be35e532102f9e53ecb860 + md5: 0218b16f5a1dd569e575a7a6415489db + depends: + - click >=8.0.0 + - python >=3.9 + - typing_extensions >=3.7.4.3 + constrains: + - rich >=10.11.0 + - typer >=0.15.1,<0.15.2.0a0 + - shellingham >=1.3.0 + license: MIT + license_family: MIT + size: 43592 + timestamp: 1733408569554 +- conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda + sha256: f31c56fe98315da8b9ce848256c17e0b9f87896b41a6ccf0c9cc74644dcef20f + md5: 4e603c43bfdfc7b533be087c3e070cc9 + depends: + - rich + - shellingham + - typer-slim 0.15.1 pyhd8ed1ab_0 + license: MIT + license_family: MIT + size: 49531 + timestamp: 1733408570063 +- conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda + noarch: python + sha256: c8e9c1c467b5f960b627d7adc1c65fece8e929a3de89967e91ef0f726422fd32 + md5: b6a408c64b78ec7b779a3e5c7a902433 + depends: + - typing_extensions 4.12.2 pyha770c72_1 + license: PSF-2.0 + license_family: PSF + size: 10075 + timestamp: 1733188758872 +- conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + sha256: 337be7af5af8b2817f115b3b68870208b30c31d3439bec07bfb2d8f4823e3568 + md5: d17f13df8b65464ca316cbc000a3cb64 + depends: + - python >=3.9 + license: PSF-2.0 + license_family: PSF + size: 39637 + timestamp: 1733188758212 +- conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + sha256: c4b1ae8a2931fe9b274c44af29c5475a85b37693999f8c792dad0f8c6734b1de + md5: dbcace4706afdfb7eb891f7b37d07c04 + license: LicenseRef-Public-Domain + size: 122921 + timestamp: 1737119101255 +- conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda + sha256: 114919ffa80c328127dab9c8e7a38f9d563c617691fb81fccb11c1e86763727e + md5: 32674f8dbfb7b26410ed580dd3c10a29 + depends: + - brotli-python >=1.0.9 + - h2 >=4,<5 + - pysocks >=1.5.6,<2.0,!=1.5.7 + - python >=3.9 + - zstandard >=0.18.0 + license: MIT + license_family: MIT + size: 100102 + timestamp: 1734859520452 +- conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.34.0-pyh31011fe_0.conda + sha256: 55c160b0cf9274e2b98bc0f7fcce548bffa8d788bc86aa02801877457040f6fa + md5: 5d448feee86e4740498ec8f8eb40e052 + depends: + - __unix + - click >=7.0 + - h11 >=0.8 + - python >=3.9 + - typing_extensions >=4.0 + license: BSD-3-Clause + license_family: BSD + size: 48643 + timestamp: 1734293057914 +- conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.34.0-h31011fe_0.conda + sha256: 87e1531e175e75122f9f37608eb953af4c977465ab0ae11283cc01fef954e4ec + md5: 32a94143a7f65d76d2d5da37dcb4ed79 + depends: + - __unix + - httptools >=0.6.3 + - python-dotenv >=0.13 + - pyyaml >=5.1 + - uvicorn 0.34.0 pyh31011fe_0 + - uvloop >=0.14.0,!=0.15.0,!=0.15.1 + - watchfiles >=0.13 + - websockets >=10.4 + license: BSD-3-Clause + license_family: BSD + size: 7203 + timestamp: 1734293058849 +- conda: https://conda.anaconda.org/conda-forge/linux-64/uvloop-0.21.0-py312h66e93f0_1.conda + sha256: 9337a80165fcf70b06b9d6ba920dad702260ca966419ae77560a15540e41ab72 + md5: 998e481e17c1b6a74572e73b06f2df08 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libuv >=1.49.2,<2.0a0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: MIT OR Apache-2.0 + size: 701355 + timestamp: 1730214506716 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/uvloop-0.21.0-py312hb2c0f52_1.conda + sha256: 807eede6698bd00a1d739a3e19ee6ae6a03a66d2ddd2ef150f2dfd198c3b0292 + md5: d83e107ba16c77aba2feec47b7b666a4 + depends: + - libgcc >=13 + - libuv >=1.49.2,<2.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: MIT OR Apache-2.0 + size: 655266 + timestamp: 1730214606664 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/uvloop-0.21.0-py312h0bf5046_1.conda + sha256: b1efa77aa4871d7bb09c8dd297fa9bd9070ba7f0f95f2d12ae9cdd31ce8b6b22 + md5: 4f5110253ba80ebf27e55c4ab333880a + depends: + - __osx >=11.0 + - libuv >=1.49.2,<2.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: MIT OR Apache-2.0 + size: 544097 + timestamp: 1730214653726 +- conda: https://conda.anaconda.org/conda-forge/linux-64/watchfiles-1.0.4-py312h12e396e_0.conda + sha256: b728f525dcae2c10524f9942255346eba62aee9c820ff269d7dd4f7caffb7ffb + md5: df87129c4cb7afc4a3cbad71a1b9e223 + depends: + - __glibc >=2.17,<3.0.a0 + - anyio >=3.0.0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - __glibc >=2.17 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 410192 + timestamp: 1736550568524 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/watchfiles-1.0.4-py312h8cbf658_0.conda + sha256: 45193910f6bafc287c784442d173745161b18f96223f0f990a9a744fda753787 + md5: ed958a27e610c31de625e167d4c11a04 + depends: + - anyio >=3.0.0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - __glibc >=2.17 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 403791 + timestamp: 1736550743174 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/watchfiles-1.0.4-py312hcd83bfe_0.conda + sha256: 84122e3712f2263e12c9d2be75d122eaf2d269801183df4b73aadcb670943b17 + md5: 946eb0208d09b811a671fad9b2831f4e + depends: + - __osx >=11.0 + - anyio >=3.0.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - __osx >=11.0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 363822 + timestamp: 1736550859472 +- conda: https://conda.anaconda.org/conda-forge/linux-64/websockets-15.0-py312h66e93f0_0.conda + sha256: 409a7a1d32e8ea23ee5233b2e95152cfaec8763aa9031f28cd8014594afc45df + md5: 5da55154de4cc82383f6bd52195db1c4 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 263350 + timestamp: 1739780619751 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/websockets-15.0-py312hb2c0f52_0.conda + sha256: 7fe6b6150410f57b442e6d130fc433959c436ada975b2f9e6352b902381ece99 + md5: 998b97a00d49748c249b749edbf27107 + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 264378 + timestamp: 1739780675487 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/websockets-15.0-py312hea69d52_0.conda + sha256: 70f511b2f9f3e0e05f2d403200a55470f9dabf87d8830b42d9ff697b9677c946 + md5: ae0c72f9ce03b54723f1cf7a4066d083 + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 264745 + timestamp: 1739780725559 +- conda: https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.17.2-py312h66e93f0_0.conda + sha256: ed3a1700ecc5d38c7e7dc7d2802df1bc1da6ba3d6f6017448b8ded0affb4ae00 + md5: 669e63af87710f8d52fdec9d4d63b404 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + size: 63590 + timestamp: 1736869574299 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/wrapt-1.17.2-py312hb2c0f52_0.conda + sha256: cc28914462a21b2f64d9b763a9733bfcbc811dd2975d0d2e6e429e35f5b6d59c + md5: 8a5c6e3f809bae085be369b62dc5d06a + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: BSD-2-Clause + license_family: BSD + size: 63967 + timestamp: 1736869675870 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/wrapt-1.17.2-py312hea69d52_0.conda + sha256: 6a3e68b57de29802e8703d1791dcacb7613bfdc17bbb087c6b2ea2796e6893ef + md5: e49608c832fcf438f70cbcae09c3adc5 + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: BSD-2-Clause + license_family: BSD + size: 61198 + timestamp: 1736869673767 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xgrammar-0.1.11-py312h6edf5ed_2.conda + sha256: ff584830ae7a0e3fb7929f1a7554ca3559c83d5e064aed717719647bcaf2189f + md5: 2e78c5fd9d1e586b0c635e02dbbaa761 + depends: + - triton + - pydantic + - python + - sentencepiece + - tiktoken + - pytorch + - transformers + - pytest + - libstdcxx >=13 + - libgcc >=13 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Apache-2.0 AND BSD-4-Clause + size: 4409669 + timestamp: 1740619132269 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xgrammar-0.1.11-py312hc94be92_2.conda + sha256: c283b9f9a73d77cfa806d276010dca62335428d11be170d61fc869b26a038b5a + md5: 1970aa1298826d9e2feb51d16368f5aa + depends: + - triton + - pydantic + - python + - sentencepiece + - tiktoken + - pytorch + - transformers + - pytest + - libgcc >=13 + - libstdcxx >=13 + - libgcc >=13 + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Apache-2.0 AND BSD-4-Clause + size: 4270904 + timestamp: 1740619375982 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/xgrammar-0.1.11-py312hd6dbf26_2.conda + sha256: a6801464fd31ddc4e87ae4b210db9cea1bd39e5b3f0d7cc48d9673d53685667b + md5: 41f1c12abe32475b267fcb349fa5f7ab + depends: + - pydantic + - python + - sentencepiece + - tiktoken + - pytorch + - transformers + - pytest + - __osx >=11.0 + - libcxx >=18 + - python 3.12.* *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Apache-2.0 AND BSD-4-Clause + size: 353403 + timestamp: 1740619156354 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-hb9d3cd8_0.conda + sha256: ed10c9283974d311855ae08a16dfd7e56241fac632aec3b92e3cfe73cff31038 + md5: f6ebe2cb3f82ba6c057dde5d9debe4f7 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 14780 + timestamp: 1734229004433 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxau-1.0.12-h86ecc28_0.conda + sha256: 7829a0019b99ba462aece7592d2d7f42e12d12ccd3b9614e529de6ddba453685 + md5: d5397424399a66d33c80b1f2345a36a6 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 15873 + timestamp: 1734230458294 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxau-1.0.12-h5505292_0.conda + sha256: f33e6f013fc36ebc200f09ddead83468544cb5c353a3b50499b07b8c34e28a8d + md5: 50901e0764b7701d8ed7343496f4f301 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 13593 + timestamp: 1734229104321 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb9d3cd8_0.conda + sha256: 6b250f3e59db07c2514057944a3ea2044d6a8cdde8a47b6497c254520fade1ee + md5: 8035c64cb77ed555e3f150b7b3972480 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 19901 + timestamp: 1727794976192 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxdmcp-1.1.5-h57736b2_0.conda + sha256: efcc150da5926cf244f757b8376d96a4db78bc15b8d90ca9f56ac6e75755971f + md5: 25a5a7b797fe6e084e04ffe2db02fc62 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 20615 + timestamp: 1727796660574 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxdmcp-1.1.5-hd74edd7_0.conda + sha256: 9939a166d780700d81023546759102b33fdc2c5f11ef09f5f66c77210fd334c8 + md5: 77c447f48cab5d3a15ac224edb86a968 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 18487 + timestamp: 1727795205022 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xxhash-0.8.3-hb9d3cd8_0.conda + sha256: 3bbc35b9ee44ffea1de441f906ba05139873a28325f8a8ed152e17af30e62232 + md5: 2ef1822d8168ed5d79ab1bf01088419a + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + size: 107794 + timestamp: 1735848927308 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xxhash-0.8.3-h86ecc28_0.conda + sha256: f210d0b6b8543acef9b73db43a557c94e695f9dfaa2f6989057c449d9c3e1239 + md5: d992916b6e4f6e7412332bbcd41c5aa2 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: BSD-2-Clause + license_family: BSD + size: 104556 + timestamp: 1735848964267 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/xxhash-0.8.3-h5505292_0.conda + sha256: 43573d504e7edc4b876a9058dc316aa9851ced1d433c2b569d583c2db22c76e2 + md5: 92a98c1bbae4729dfd0216ca22c21858 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: BSD-2-Clause + license_family: BSD + size: 98318 + timestamp: 1735849111725 +- conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 + sha256: a4e34c710eeb26945bdbdaba82d3d74f60a78f54a874ec10d373811a5d217535 + md5: 4cb3ad778ec2d5a7acbdf254eb1c42ae + depends: + - libgcc-ng >=9.4.0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 89141 + timestamp: 1641346969816 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yaml-0.2.5-hf897c2e_2.tar.bz2 + sha256: 8bc601d6dbe249eba44b3c456765265cd8f42ef1e778f8df9b0c9c88b8558d7e + md5: b853307650cb226731f653aa623936a4 + depends: + - libgcc-ng >=9.4.0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 92927 + timestamp: 1641347626613 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 + sha256: 93181a04ba8cfecfdfb162fc958436d868cc37db504c58078eab4c1a3e57fbb7 + md5: 4bb3f014845110883a3c5ee811fd84b4 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 88016 + timestamp: 1641347076660 +- conda: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.18.3-py312h178313f_1.conda + sha256: 6b054c93dd19fd7544af51b41a8eacca2ab62271f6c0c5a2a0cffe80dc37a0ce + md5: 6822c49f294d4355f19d314b8b6063d8 + depends: + - __glibc >=2.17,<3.0.a0 + - idna >=2.0 + - libgcc >=13 + - multidict >=4.0 + - propcache >=0.2.1 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 152305 + timestamp: 1737575898300 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.18.3-py312hcc812fe_1.conda + sha256: bfa211c0dd5dbb308788f055277dc428b7923ceb2de6a22ea98bc17cf306f9f5 + md5: d14c78abdd6109e2b7162f53b6cc1e77 + depends: + - idna >=2.0 + - libgcc >=13 + - multidict >=4.0 + - propcache >=0.2.1 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 149654 + timestamp: 1737576065314 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.18.3-py312h998013c_1.conda + sha256: 48821d23567ca0f853eee6f7812c74392867e123798b5b3c44f58758d8eb580e + md5: 092d3b40acc67c470f379049be343a7a + depends: + - __osx >=11.0 + - idna >=2.0 + - multidict >=4.0 + - propcache >=0.2.1 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 145543 + timestamp: 1737576074753 +- conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda + sha256: a4dc72c96848f764bb5a5176aa93dd1e9b9e52804137b99daeebba277b31ea10 + md5: 3947a35e916fcc6b9825449affbf4214 + depends: + - __glibc >=2.17,<3.0.a0 + - krb5 >=1.21.3,<1.22.0a0 + - libgcc >=13 + - libsodium >=1.0.20,<1.0.21.0a0 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: MPL-2.0 + license_family: MOZILLA + size: 335400 + timestamp: 1731585026517 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zeromq-4.3.5-h5efb499_7.conda + sha256: a6003096dc0570a86492040ba32b04ce7662b159600be2252b7a0dfb9414e21c + md5: f2f3282559a4b87b7256ecafb4610107 + depends: + - krb5 >=1.21.3,<1.22.0a0 + - libgcc >=13 + - libsodium >=1.0.20,<1.0.21.0a0 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: MPL-2.0 + license_family: MOZILLA + size: 371419 + timestamp: 1731589490850 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda + sha256: 9e585569fe2e7d3bea71972cd4b9f06b1a7ab8fa7c5139f92a31cbceecf25a8a + md5: f7e6b65943cb73bce0143737fded08f1 + depends: + - __osx >=11.0 + - krb5 >=1.21.3,<1.22.0a0 + - libcxx >=18 + - libsodium >=1.0.20,<1.0.21.0a0 + arch: arm64 + platform: osx + license: MPL-2.0 + license_family: MOZILLA + size: 281565 + timestamp: 1731585108039 +- conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + sha256: 567c04f124525c97a096b65769834b7acb047db24b15a56888a322bf3966c3e1 + md5: 0c3cc595284c5e8f0f9900a9b228a332 + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 21809 + timestamp: 1732827613585 +- conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.1-hb9d3cd8_2.conda + sha256: 5d7c0e5f0005f74112a34a7425179f4eb6e73c92f5d109e6af4ddeca407c92ab + md5: c9f075ab2f33b3bbee9e62d4ad0a6cd8 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libzlib 1.3.1 hb9d3cd8_2 + arch: x86_64 + platform: linux + license: Zlib + license_family: Other + size: 92286 + timestamp: 1727963153079 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zlib-1.3.1-h86ecc28_2.conda + sha256: b4f649aa3ecdae384d5dad7074e198bff120edd3dfb816588e31738fc6d627b1 + md5: bc230abb5d21b63ff4799b0e75204783 + depends: + - libgcc >=13 + - libzlib 1.3.1 h86ecc28_2 + arch: aarch64 + platform: linux + license: Zlib + license_family: Other + size: 95582 + timestamp: 1727963203597 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zlib-1.3.1-h8359307_2.conda + sha256: 58f8860756680a4831c1bf4f294e2354d187f2e999791d53b1941834c4b37430 + md5: e3170d898ca6cb48f1bb567afb92f775 + depends: + - __osx >=11.0 + - libzlib 1.3.1 h8359307_2 + arch: arm64 + platform: osx + license: Zlib + license_family: Other + size: 77606 + timestamp: 1727963209370 +- conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312hef9b889_1.conda + sha256: b97015e146437283f2213ff0e95abdc8e2480150634d81fbae6b96ee09f5e50b + md5: 8b7069e9792ee4e5b4919a7a306d2e67 + depends: + - __glibc >=2.17,<3.0.a0 + - cffi >=1.11 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - zstd >=1.5.6,<1.5.7.0a0 + - zstd >=1.5.6,<1.6.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 419552 + timestamp: 1725305670210 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstandard-0.23.0-py312hb698573_1.conda + sha256: 2681c2a249752bdc7978e59ee2f34fcdfcbfda80029b84b8e5fec8dbc9e3af25 + md5: ffcb8e97e62af42075e0e5f46bb9856e + depends: + - cffi >=1.11 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - zstd >=1.5.6,<1.5.7.0a0 + - zstd >=1.5.6,<1.6.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 392496 + timestamp: 1725305808244 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py312h15fbf35_1.conda + sha256: d00ca25c1e28fd31199b26a94f8c96574475704a825d244d7a6351ad3745eeeb + md5: a4cde595509a7ad9c13b1a3809bcfe51 + depends: + - __osx >=11.0 + - cffi >=1.11 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - zstd >=1.5.6,<1.5.7.0a0 + - zstd >=1.5.6,<1.6.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 330788 + timestamp: 1725305806565 +- conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda + sha256: c558b9cc01d9c1444031bd1ce4b9cff86f9085765f17627a6cd85fc623c8a02b + md5: 4d056880988120e29d75bfff282e0f45 + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 554846 + timestamp: 1714722996770 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.6-h02f22dd_0.conda + sha256: 484f9d0722c77685ae379fbff3ccd662af9ead7e59eb39cd6d0c677cdf25ff6c + md5: be8d5f8cf21aed237b8b182ea86b3dd6 + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 539937 + timestamp: 1714723130243 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.6-hb46c0d2_0.conda + sha256: 2d4fd1ff7ee79cd954ca8e81abf11d9d49954dd1fef80f27289e2402ae9c2e09 + md5: d96942c06c3e84bfcc5efb038724a7fd + depends: + - __osx >=11.0 + - libzlib >=1.2.13,<2.0.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 405089 + timestamp: 1714723101397 diff --git a/tutorials/hello-magic/local/magic.lock b/tutorials/hello-magic/local/magic.lock new file mode 100644 index 0000000000..2d7db9d728 --- /dev/null +++ b/tutorials/hello-magic/local/magic.lock @@ -0,0 +1,2333 @@ +version: 6 +environments: + default: + channels: + - url: https://conda.anaconda.org/pytorch/ + - url: https://conda.anaconda.org/conda-forge/ + - url: https://conda.modular.com/max-nightly/ + packages: + linux-64: + - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_kmp_llvm.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/blas-2.116-mkl.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/blas-devel-3.9.0-16_linux64_mkl.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2025.1.31-hbcca054_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.12.9-py312hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-cudart-12.4.127-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cuda-cudart_linux-64-12.4.127-h85509e4_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-cupti-12.4.127-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-libraries-12.4.1-ha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-nvrtc-12.4.127-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-nvtx-12.4.127-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-opencl-12.4.127-he02047a_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cuda-runtime-12.4.1-ha804496_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cuda-version-12.4-h3060b56_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gmp-6.3.0-hac33072_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gmpy2-2.1.5-py312h7201bc8_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-16_linux64_mkl.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-16_linux64_mkl.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcublas-12.4.5.8-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcufft-11.2.1.3-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcufile-1.9.1.3-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcurand-10.3.5.147-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcusolver-11.6.1.9-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcusparse-12.3.1.170-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h767d61c_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-ng-14.2.0-h69a702a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hf1ad2bd_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libhwloc-2.11.2-default_h0d58e46_1001.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h4ce23a2_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-16_linux64_mkl.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapacke-3.9.0-16_linux64_mkl.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnpp-12.2.5.30-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnvfatbin-12.4.127-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnvjitlink-12.4.127-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnvjpeg-12.3.1.117-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsentencepiece-0.2.0-h8e10757_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.49.1-hee588c1_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-h8f9b012_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.6-h8d12d68_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/llvm-openmp-15.0.7-h0cdce71_0.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-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022718-release.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-2022.1.0-h84fe81f_915.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-devel-2022.1.0-ha770c72_916.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-include-2022.1.0-h84fe81f_915.tar.bz2 + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022718-release.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/mpc-1.3.1-h24ddda3_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/mpfr-4.2.1-h90cbb55_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mpmath-1.3.0-pyhd8ed1ab_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-h2d0b736_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ocl-icd-2.3.2-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/opencl-headers-2024.10.24-h5888daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.1-h7b32b05_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.9-h9e4cc4f_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda + - conda: https://conda.anaconda.org/pytorch/linux-64/pytorch-2.5.1-py3.12_cuda12.4_cudnn9.1.0_0.tar.bz2 + - conda: https://conda.anaconda.org/pytorch/linux-64/pytorch-cuda-12.4-hc786d27_7.tar.bz2 + - conda: https://conda.anaconda.org/pytorch/noarch/pytorch-mutex-1.0-cuda.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py312h178313f_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.1-py312hbf22597_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-0.2.0-hc8f76dd_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-python-0.2.0-py312hb6b8a2b_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-spm-0.2.0-h8e10757_10.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sympy-1.13.3-pyh2585a3b_105.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tbb-2021.13.0-hceb3a55_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda + - conda: https://conda.anaconda.org/pytorch/linux-64/torchtriton-3.1.0-py312.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + osx-arm64: + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2025.1.31-hf0a4a13_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.12.9-py312hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gmp-6.3.0-h7bae524_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gmpy2-2.1.5-py312h524cf62_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_h07bc746_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-19_osxarm64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-19_osxarm64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.4-h286801f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-19_osxarm64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.4-h39f12f2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.24-openmp_hd76b1f2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.3-h3bd63a1_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsentencepiece-0.2.0-he13a0af_10.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.1-h3f77e49_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-15.0.7-h7cfbb63_0.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-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022718-release.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/mpc-1.3.1-h8f1351a_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/mpfr-4.2.1-hb693164_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mpmath-1.3.0-pyhd8ed1ab_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/osx-arm64/ncurses-6.5-h5e97a16_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.1-h81ee809_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.9-hc22306f_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-5_cp312.conda + - conda: https://conda.anaconda.org/pytorch/osx-arm64/pytorch-2.5.1-py3.12_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py312h998013c_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.1-py312hf4875e0_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-0.2.0-h22a84ea_10.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-python-0.2.0-py312h155166a_10.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-spm-0.2.0-he13a0af_10.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sympy-1.13.3-pyh2585a3b_105.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda +packages: +- conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 + sha256: fe51de6107f9edc7aa4f786a70f4a883943bc9d39b3bb7307c04c41410990726 + md5: d7c89558ba9fa0495403155b64376d81 + arch: x86_64 + platform: linux + license: None + size: 2562 + timestamp: 1578324546067 +- conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_kmp_llvm.tar.bz2 + build_number: 2 + sha256: 84a66275da3a66e3f3e70e9d8f10496d807d01a9e4ec16cd2274cc5e28c478fc + md5: 562b26ba2e19059551a811e72ab7f793 + depends: + - _libgcc_mutex 0.1 conda_forge + - llvm-openmp >=9.0.1 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 5744 + timestamp: 1650742457817 +- conda: https://conda.anaconda.org/conda-forge/linux-64/blas-2.116-mkl.tar.bz2 + build_number: 16 + sha256: 87056ebdc90b6d1ea6726d04d42b844cc302112e80508edbf7bf1f1a4fd3fed2 + md5: c196a26abf6b4f132c88828ab7c2231c + depends: + - _openmp_mutex * *_llvm + - _openmp_mutex >=4.5 + - blas-devel 3.9.0 16_linux64_mkl + - libblas 3.9.0 16_linux64_mkl + - libcblas 3.9.0 16_linux64_mkl + - libgcc-ng >=12 + - libgfortran-ng + - libgfortran5 >=10.4.0 + - liblapack 3.9.0 16_linux64_mkl + - liblapacke 3.9.0 16_linux64_mkl + - llvm-openmp >=14.0.4 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 13258 + timestamp: 1660094704275 +- conda: https://conda.anaconda.org/conda-forge/linux-64/blas-devel-3.9.0-16_linux64_mkl.tar.bz2 + build_number: 16 + sha256: a7da65ca4e0322317cbc4d387c4a5f075cdc7fcd12ad9f7f18da758c7532749a + md5: 3f92c1c9e1c0e183462c5071aa02cae1 + depends: + - libblas 3.9.0 16_linux64_mkl + - libcblas 3.9.0 16_linux64_mkl + - liblapack 3.9.0 16_linux64_mkl + - liblapacke 3.9.0 16_linux64_mkl + - mkl >=2022.1.0,<2023.0a0 + - mkl-devel 2022.1.* + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 12630 + timestamp: 1660094595212 +- conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda + sha256: 5ced96500d945fb286c9c838e54fa759aa04a7129c59800f0846b4335cee770d + md5: 62ee74e96c5ebb0af99386de58cf9553 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: bzip2-1.0.6 + license_family: BSD + size: 252783 + timestamp: 1720974456583 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda + sha256: adfa71f158cbd872a36394c56c3568e6034aa55c623634b37a4836bd036e6b91 + md5: fc6948412dbbbe9a4c9ddbbcfe0a79ab + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: bzip2-1.0.6 + license_family: BSD + size: 122909 + timestamp: 1720974522888 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2025.1.31-hbcca054_0.conda + sha256: bf832198976d559ab44d6cdb315642655547e26d826e34da67cbee6624cda189 + md5: 19f3a56f68d2fd06c516076bff482c52 + arch: x86_64 + platform: linux + license: ISC + size: 158144 + timestamp: 1738298224464 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2025.1.31-hf0a4a13_0.conda + sha256: 7e12816618173fe70f5c638b72adf4bfd4ddabf27794369bb17871c5bb75b9f9 + md5: 3569d6a9141adc64d2fe4797f3289e06 + arch: arm64 + platform: osx + license: ISC + size: 158425 + timestamp: 1738298167688 +- conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda + sha256: c920d23cd1fcf565031c679adb62d848af60d6fbb0edc2d50ba475cea4f0d8ab + md5: f22f4d4970e09d68a10b922cbb0408d3 + depends: + - __unix + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 84705 + timestamp: 1734858922844 +- conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + sha256: ab29d57dc70786c1269633ba3dff20288b81664d3ff8d21af995742e2bb03287 + md5: 962b9857ee8e7018c22f2776ffa0b2d7 + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 27011 + timestamp: 1733218222191 +- conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.12.9-py312hd8ed1ab_0.conda + noarch: generic + sha256: f5c7ad0bd23fa8645ac279d99bddba656ff61483dc6312af12aae13910dfb210 + md5: a5b10f166467fecec692abaee84d16aa + depends: + - python 3.12.9.* + - python_abi * *_cp312 + license: Python-2.0 + size: 44836 + timestamp: 1739519561557 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-cudart-12.4.127-he02047a_2.conda + sha256: d8ad0be647dad6378119c110572bbf9f6b1e8c820393ed159d45f02588979c07 + md5: a748faa52331983fc3adcc3b116fe0e4 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-cudart_linux-64 12.4.127 h85509e4_2 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + size: 22563 + timestamp: 1715710703269 +- conda: https://conda.anaconda.org/conda-forge/noarch/cuda-cudart_linux-64-12.4.127-h85509e4_2.conda + sha256: 1f1b3e0bf6b5e665860ecbdf509c1e02760c14d25e3f3893a712f90f7f8a5abc + md5: 329163110a96514802e9e64d971edf43 + depends: + - cuda-version >=12.4,<12.5.0a0 + license: LicenseRef-NVIDIA-End-User-License-Agreement + size: 186886 + timestamp: 1715710690964 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-cupti-12.4.127-he02047a_2.conda + sha256: db9ebc57fd583711bbdd12e54d00e4153a7b414f929f77fca2f44547c02204b8 + md5: 46422ef1b1161fb180027e50c598ecd0 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + size: 1918773 + timestamp: 1715665119069 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-libraries-12.4.1-ha770c72_1.conda + sha256: cb30e83f33c7480caa68a1e35e6ff4102d17ff0a94239ca18555afff1df2f70e + md5: 6bb3f998485d4344a7539e0b218b3fc1 + depends: + - cuda-cudart 12.4.127.* + - cuda-nvrtc 12.4.127.* + - cuda-opencl 12.4.127.* + - libcublas 12.4.5.8.* + - libcufft 11.2.1.3.* + - libcufile 1.9.1.3.* + - libcurand 10.3.5.147.* + - libcusolver 11.6.1.9.* + - libcusparse 12.3.1.170.* + - libnpp 12.2.5.30.* + - libnvfatbin 12.4.127.* + - libnvjitlink 12.4.127.* + - libnvjpeg 12.3.1.117.* + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + size: 20180 + timestamp: 1713304266920 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-nvrtc-12.4.127-he02047a_2.conda + sha256: c4aba5e152526db7cad7c8a5191497b0c6365c912ed845dc9c427d29893486a1 + md5: 80baf6262f4a1a0dde42d85aaa393402 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + size: 18825627 + timestamp: 1715711095870 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-nvtx-12.4.127-he02047a_2.conda + sha256: 8f499785edaec6198a934e8a9dd1f8b6f79aabcc135962d6050dd7328c76d3dc + md5: 656a004b6e44f50ce71c65cab0d429b4 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + size: 31691 + timestamp: 1715731339952 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-opencl-12.4.127-he02047a_1.conda + sha256: 75d912a70719a9d0bca9f234a79a857815d8feec3c54c145e6e41589de4ff5be + md5: 1e98deda07c14d26c80d124cf0eb011a + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - ocl-icd >=2.3.2,<3.0a0 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + size: 30406 + timestamp: 1715711329543 +- conda: https://conda.anaconda.org/conda-forge/noarch/cuda-runtime-12.4.1-ha804496_0.conda + sha256: 61a593347c91a9bcd18329f7aa780bd1fb1e20dd1b61b16a451bd4a6b60dabf0 + md5: 48829f4ef6005ae8d4867b99168ff2b8 + depends: + - __linux + - cuda-libraries 12.4.1.* + license: LicenseRef-NVIDIA-End-User-License-Agreement + size: 20034 + timestamp: 1712683445348 +- conda: https://conda.anaconda.org/conda-forge/noarch/cuda-version-12.4-h3060b56_3.conda + sha256: 571d32fbd0dc8df6e85c14d1757549927e272af9c70b935d7e3a553ab0b0b4da + md5: c9a3fe8b957176e1a8452c6f3431b0d8 + constrains: + - cudatoolkit 12.4|12.4.* + - __cuda >=12 + license: LicenseRef-NVIDIA-End-User-License-Agreement + size: 21022 + timestamp: 1709765922936 +- conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.17.0-pyhd8ed1ab_0.conda + sha256: 006d7e5a0c17a6973596dd86bfc80d74ce541144d2aee2d22d46fd41df560a63 + md5: 7f402b4a1007ee355bc50ce4d24d4a57 + depends: + - python >=3.9 + license: Unlicense + size: 17544 + timestamp: 1737517924333 +- conda: https://conda.anaconda.org/conda-forge/linux-64/gmp-6.3.0-hac33072_2.conda + sha256: 309cf4f04fec0c31b6771a5809a1909b4b3154a2208f52351e1ada006f4c750c + md5: c94a5994ef49749880a8139cf9afcbe1 + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: GPL-2.0-or-later OR LGPL-3.0-or-later + size: 460055 + timestamp: 1718980856608 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/gmp-6.3.0-h7bae524_2.conda + sha256: 76e222e072d61c840f64a44e0580c2503562b009090f55aa45053bf1ccb385dd + md5: eed7278dfbab727b56f2c0b64330814b + depends: + - __osx >=11.0 + - libcxx >=16 + arch: arm64 + platform: osx + license: GPL-2.0-or-later OR LGPL-3.0-or-later + size: 365188 + timestamp: 1718981343258 +- conda: https://conda.anaconda.org/conda-forge/linux-64/gmpy2-2.1.5-py312h7201bc8_3.conda + sha256: addd0bc226ca86c11f1223ab322d12b67501c2b3d93749bdab2068ccaedd8ef0 + md5: 673ef4d6611f5b4ca7b5c1f8c65a38dc + depends: + - __glibc >=2.17,<3.0.a0 + - gmp >=6.3.0,<7.0a0 + - libgcc >=13 + - mpc >=1.3.1,<2.0a0 + - mpfr >=4.2.1,<5.0a0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: LGPL-3.0-or-later + license_family: LGPL + size: 209631 + timestamp: 1733462668219 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/gmpy2-2.1.5-py312h524cf62_3.conda + sha256: 0ea196e4b706321951af1eebdb6a4eb9307faa1fd5361bcf49acb150e71774f7 + md5: ab7a5d10c7b4e249a9fe7bc280909803 + depends: + - __osx >=11.0 + - gmp >=6.3.0,<7.0a0 + - mpc >=1.3.1,<2.0a0 + - mpfr >=4.2.1,<5.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: LGPL-3.0-or-later + license_family: LGPL + size: 147983 + timestamp: 1733462785197 +- conda: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda + sha256: 71e750d509f5fa3421087ba88ef9a7b9be11c53174af3aa4d06aff4c18b38e8e + md5: 8b189310083baabfb622af68fd9d3ae3 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 12129203 + timestamp: 1720853576813 +- conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + sha256: 598951ebdb23e25e4cec4bbff0ae369cec65ead80b50bc08b441d8e54de5cf03 + md5: f4b39bf00c69f56ac01e020ebfac066c + depends: + - python >=3.9 + - zipp >=0.5 + license: Apache-2.0 + license_family: APACHE + size: 29141 + timestamp: 1737420302391 +- conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.5-pyhd8ed1ab_0.conda + sha256: 98977694b9ecaa3218662f843425f39501f81973c450f995eec68f1803ed71c3 + md5: 2752a6ed44105bfb18c9bef1177d9dcd + depends: + - markupsafe >=2.0 + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 112561 + timestamp: 1734824044952 +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + sha256: 19d8bd5bb2fde910ec59e081eeb59529491995ce0d653a5209366611023a0b3a + md5: 4ebae00eae9705b0c3d6d1018a81d047 + depends: + - importlib-metadata >=4.8.3 + - jupyter_core >=4.12,!=5.0.* + - python >=3.9 + - python-dateutil >=2.8.2 + - pyzmq >=23.0 + - tornado >=6.2 + - traitlets >=5.3 + license: BSD-3-Clause + license_family: BSD + size: 106342 + timestamp: 1733441040958 +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + sha256: 732b1e8536bc22a5a174baa79842d79db2f4956d90293dd82dc1b3f6099bcccd + md5: 0a2980dada0dd7fd0998f0342308b1b1 + depends: + - __unix + - platformdirs >=2.5 + - python >=3.8 + - traitlets >=5.3 + license: BSD-3-Clause + license_family: BSD + size: 57671 + timestamp: 1727163547058 +- conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 + sha256: 150c05a6e538610ca7c43beb3a40d65c90537497a4f6a5f4d15ec0451b6f5ebb + md5: 30186d27e2c9fa62b45fb1476b7200e3 + depends: + - libgcc-ng >=10.3.0 + arch: x86_64 + platform: linux + license: LGPL-2.1-or-later + size: 117831 + timestamp: 1646151697040 +- conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda + sha256: 99df692f7a8a5c27cd14b5fb1374ee55e756631b9c3d659ed3ee60830249b238 + md5: 3f43953b7d3fb3aaa1d0d0723d91e368 + depends: + - keyutils >=1.6.1,<2.0a0 + - libedit >=3.1.20191231,<3.2.0a0 + - libedit >=3.1.20191231,<4.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - openssl >=3.3.1,<4.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 1370023 + timestamp: 1719463201255 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda + sha256: 4442f957c3c77d69d9da3521268cad5d54c9033f1a73f99cde0a3658937b159b + md5: c6dc8a0fdec13a0565936655c33069a1 + depends: + - __osx >=11.0 + - libcxx >=16 + - libedit >=3.1.20191231,<3.2.0a0 + - libedit >=3.1.20191231,<4.0a0 + - openssl >=3.3.1,<4.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 1155530 + timestamp: 1719463474401 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_4.conda + sha256: db73f38155d901a610b2320525b9dd3b31e4949215c870685fd92ea61b5ce472 + md5: 01f8d123c96816249efd255a31ad7712 + depends: + - __glibc >=2.17,<3.0.a0 + constrains: + - binutils_impl_linux-64 2.43 + arch: x86_64 + platform: linux + license: GPL-3.0-only + license_family: GPL + size: 671240 + timestamp: 1740155456116 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda + sha256: 143a586aa67d50622ef703de57b9d43f44945836d6568e0e7aa174bd8c45e0d4 + md5: 488f260ccda0afaf08acb286db439c2f + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + constrains: + - libabseil-static =20240722.0=cxx17* + - abseil-cpp =20240722.0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 1311599 + timestamp: 1736008414161 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_h07bc746_4.conda + sha256: 05fa5e5e908962b9c5aba95f962e2ca81d9599c4715aebe5e4ddb72b309d1770 + md5: c2d95bd7aa8d564a9bd7eca5e571a5b3 + depends: + - __osx >=11.0 + - libcxx >=18 + constrains: + - libabseil-static =20240722.0=cxx17* + - abseil-cpp =20240722.0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 1178260 + timestamp: 1736008642885 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-16_linux64_mkl.tar.bz2 + build_number: 16 + sha256: 24e656f13b402b6fceb88df386768445ab9beb657d451a8e5a88d4b3380cf7a4 + md5: 85f61af03fd291dae33150ffe89dc09a + depends: + - mkl >=2022.1.0,<2023.0a0 + constrains: + - liblapack 3.9.0 16_linux64_mkl + - liblapacke 3.9.0 16_linux64_mkl + - libcblas 3.9.0 16_linux64_mkl + - blas * mkl + - mkl <2025 + arch: x86_64 + platform: linux + track_features: + - blas_mkl + license: BSD-3-Clause + license_family: BSD + size: 13102 + timestamp: 1660094562739 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-19_osxarm64_openblas.conda + build_number: 19 + sha256: 51e78e3c9fa57f3fec12936b760928715ba0ab5253d02815202f9ec4c2c9255d + md5: f50b1fd98593278e18319653cff9c475 + depends: + - libopenblas >=0.3.24,<0.3.25.0a0 + - libopenblas >=0.3.24,<1.0a0 + constrains: + - libcblas 3.9.0 19_osxarm64_openblas + - liblapack 3.9.0 19_osxarm64_openblas + - blas * openblas + - liblapacke 3.9.0 19_osxarm64_openblas + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 14817 + timestamp: 1697484577887 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-16_linux64_mkl.tar.bz2 + build_number: 16 + sha256: 892ba10508f22310ccfe748df1fd3b6c7f20e7b6f6b79e69ed337863551c1bd8 + md5: 361bf757b95488de76c4f123805742d3 + depends: + - libblas 3.9.0 16_linux64_mkl + constrains: + - liblapack 3.9.0 16_linux64_mkl + - liblapacke 3.9.0 16_linux64_mkl + - blas * mkl + - mkl <2025 + arch: x86_64 + platform: linux + track_features: + - blas_mkl + license: BSD-3-Clause + license_family: BSD + size: 12791 + timestamp: 1660094570921 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-19_osxarm64_openblas.conda + build_number: 19 + sha256: 19b1c5e3ddd383ec14540336f4704938218d3c1db4707ae10d5357afb22cccc1 + md5: 5460a8d1beffd7f63994d891e6a20da4 + depends: + - libblas 3.9.0 19_osxarm64_openblas + constrains: + - liblapack 3.9.0 19_osxarm64_openblas + - blas * openblas + - liblapacke 3.9.0 19_osxarm64_openblas + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 14738 + timestamp: 1697484590682 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcublas-12.4.5.8-he02047a_2.conda + sha256: 168e664423e875f7107697dfa7935399675872ea8abffa92621db98007258d66 + md5: d446adae085aa1ff37c44b69988a6f06 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-nvrtc + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + size: 240665617 + timestamp: 1715711552741 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcufft-11.2.1.3-he02047a_2.conda + sha256: 242e1ed210a85fc0dc2a4e86bf0b75120f1768ab66497502c5e6d69e801bf9dc + md5: d2641a67c207946ef96f1328c4a8e8ed + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + size: 174980358 + timestamp: 1715711515585 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcufile-1.9.1.3-he02047a_2.conda + sha256: 7fa7a608d52064b724241e4026f0e0cc244c6f725623e2c26c810be99822fa28 + md5: a051267bcb1912467c81d802a7d3465e + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + size: 924329 + timestamp: 1715720836466 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcurand-10.3.5.147-he02047a_2.conda + sha256: 7db821fc8f566dbb8d4e40dae62edb07d638db8c028d677a0063ece66872d19c + md5: 9c4886d513fd477df88d411cd274c202 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + size: 41590169 + timestamp: 1715711553620 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcusolver-11.6.1.9-he02047a_2.conda + sha256: df4f8a94bffb59dc3da28fb5a892c1ef2553f8afd49f141d3e2da8c92f276a56 + md5: 9f6877f8936be962f598db5e9b8efc51 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libcublas >=12.4.5.8,<12.5.0a0 + - libcusparse >=12.3.1.170,<12.4.0a0 + - libgcc-ng >=12 + - libnvjitlink >=12.4.127,<12.5.0a0 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + size: 81594879 + timestamp: 1715711788074 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcusparse-12.3.1.170-he02047a_2.conda + sha256: f2254e41c93a8c3529690c19350556708182ef699ca658c6554eeb7eb4b8c3de + md5: 1c4c7ff54dc5b947f2ab8f5ff8a28dae + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libnvjitlink >=12.4.127,<12.5.0a0 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + size: 117818451 + timestamp: 1715711610677 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda + sha256: 776092346da87a2a23502e14d91eb0c32699c4a1522b7331537bd1c3751dcff5 + md5: 5b3e1610ff8bd5443476b91d618f5b77 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + size: 523505 + timestamp: 1736877862502 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda + sha256: d789471216e7aba3c184cd054ed61ce3f6dac6f87a50ec69291b9297f8c18724 + md5: c277e0a4d549b03ac1e9d6cbbe3d017b + depends: + - ncurses + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - ncurses >=6.5,<7.0a0 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + size: 134676 + timestamp: 1738479519902 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda + sha256: 66aa216a403de0bb0c1340a88d1a06adaff66bae2cfd196731aa24db9859d631 + md5: 44083d2d2c2025afca315c7a172eab2b + depends: + - ncurses + - __osx >=11.0 + - ncurses >=6.5,<7.0a0 + arch: arm64 + platform: osx + license: BSD-2-Clause + license_family: BSD + size: 107691 + timestamp: 1738479560845 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda + sha256: 56541b98447b58e52d824bd59d6382d609e11de1f8adf20b23143e353d2b8d26 + md5: db833e03127376d461e1e13e76f09b6c + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + constrains: + - expat 2.6.4.* + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 73304 + timestamp: 1730967041968 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.4-h286801f_0.conda + sha256: e42ab5ace927ee7c84e3f0f7d813671e1cf3529f5f06ee5899606630498c2745 + md5: 38d2656dd914feb0cab8c629370768bf + depends: + - __osx >=11.0 + constrains: + - expat 2.6.4.* + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 64693 + timestamp: 1730967175868 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_0.conda + sha256: 67a6c95e33ebc763c1adc3455b9a9ecde901850eb2fceb8e646cc05ef3a663da + md5: e3eb7806380bc8bcecba6d749ad5f026 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 53415 + timestamp: 1739260413716 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 + sha256: 41b3d13efb775e340e4dba549ab5c029611ea6918703096b2eaa9c015c0750ca + md5: 086914b672be056eb70fd4285b6783b6 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 39020 + timestamp: 1636488587153 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h767d61c_2.conda + sha256: 3a572d031cb86deb541d15c1875aaa097baefc0c580b54dc61f5edab99215792 + md5: ef504d1acbd74b7cc6849ef8af47dd03 + depends: + - __glibc >=2.17,<3.0.a0 + - _openmp_mutex >=4.5 + constrains: + - libgomp 14.2.0 h767d61c_2 + - libgcc-ng ==14.2.0=*_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 847885 + timestamp: 1740240653082 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_2.conda + sha256: fb7558c328b38b2f9d2e412c48da7890e7721ba018d733ebdfea57280df01904 + md5: a2222a6ada71fb478682efe483ce0f92 + depends: + - libgcc 14.2.0 h767d61c_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 53758 + timestamp: 1740240660904 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_2.conda + sha256: e05263e8960da03c341650f2a3ffa4ccae4e111cb198e8933a2908125459e5a6 + md5: fb54c4ea68b460c278d26eea89cfbcc3 + depends: + - libgfortran5 14.2.0 hf1ad2bd_2 + constrains: + - libgfortran-ng ==14.2.0=*_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 53733 + timestamp: 1740240690977 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda + sha256: 44e541b4821c96b28b27fef5630883a60ce4fee91fd9c79f25a199f8f73f337b + md5: 4a55d9e169114b2b90d3ec4604cd7bbf + depends: + - libgfortran5 13.2.0 hf226fd6_3 + arch: arm64 + platform: osx + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 110233 + timestamp: 1707330749033 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-ng-14.2.0-h69a702a_2.conda + sha256: 688a5968852e677d2a64974c8869ffb120eac21997ced7d15c599f152ef6857e + md5: 4056c857af1a99ee50589a941059ec55 + depends: + - libgfortran 14.2.0 h69a702a_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 53781 + timestamp: 1740240884760 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hf1ad2bd_2.conda + sha256: c17b7cf3073a1f4e1f34d50872934fa326346e104d3c445abc1e62481ad6085c + md5: 556a4fdfac7287d349b8f09aba899693 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14.2.0 + constrains: + - libgfortran 14.2.0 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 1461978 + timestamp: 1740240671964 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda + sha256: bafc679eedb468a86aa4636061c55966186399ee0a04b605920d208d97ac579a + md5: 66ac81d54e95c534ae488726c1f698ea + depends: + - llvm-openmp >=8.0.0 + constrains: + - libgfortran 5.0.0 13_2_0_*_3 + arch: arm64 + platform: osx + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 997381 + timestamp: 1707330687590 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libhwloc-2.11.2-default_h0d58e46_1001.conda + sha256: d14c016482e1409ae1c50109a9ff933460a50940d2682e745ab1c172b5282a69 + md5: 804ca9e91bcaea0824a341d55b1684f2 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + - libxml2 >=2.13.4,<3.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 2423200 + timestamp: 1731374922090 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h4ce23a2_1.conda + sha256: 18a4afe14f731bfb9cf388659994263904d20111e42f841e9eea1bb6f91f4ab4 + md5: e796ff8ddc598affdf7c173d6145f087 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: LGPL-2.1-only + size: 713084 + timestamp: 1740128065462 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-16_linux64_mkl.tar.bz2 + build_number: 16 + sha256: d6201f860b2d76ed59027e69c2bbad6d1cb211a215ec9705cc487cde488fa1fa + md5: a2f166748917d6d6e4707841ca1f519e + depends: + - libblas 3.9.0 16_linux64_mkl + constrains: + - blas * mkl + - liblapacke 3.9.0 16_linux64_mkl + - libcblas 3.9.0 16_linux64_mkl + - mkl <2025 + arch: x86_64 + platform: linux + track_features: + - blas_mkl + license: BSD-3-Clause + license_family: BSD + size: 12791 + timestamp: 1660094578903 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-19_osxarm64_openblas.conda + build_number: 19 + sha256: f19cff537403c9feed98c7e18259022102b087f2b72a757e8a417476b9cf30c1 + md5: 3638eacb084c374f41f9efa40d20a47b + depends: + - libblas 3.9.0 19_osxarm64_openblas + constrains: + - libcblas 3.9.0 19_osxarm64_openblas + - blas * openblas + - liblapacke 3.9.0 19_osxarm64_openblas + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 14721 + timestamp: 1697484603691 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblapacke-3.9.0-16_linux64_mkl.tar.bz2 + build_number: 16 + sha256: 935036dc46c483cba8288c6de58d461ab3f42915715ffe9485105ad1dd203a0e + md5: 44ccc4d4dca6a8d57fa17442bc64b5a1 + depends: + - libblas 3.9.0 16_linux64_mkl + - libcblas 3.9.0 16_linux64_mkl + - liblapack 3.9.0 16_linux64_mkl + constrains: + - blas * mkl + - mkl <2025 + arch: x86_64 + platform: linux + track_features: + - blas_mkl + license: BSD-3-Clause + license_family: BSD + size: 12793 + timestamp: 1660094586875 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda + sha256: cad52e10319ca4585bc37f0bc7cce99ec7c15dc9168e42ccb96b741b0a27db3f + md5: 42d5b6a0f30d3c10cd88cb8584fda1cb + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: 0BSD + size: 111357 + timestamp: 1738525339684 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.4-h39f12f2_0.conda + sha256: 560c59d3834cc652a84fb45531bd335ad06e271b34ebc216e380a89798fe8e2c + md5: e3fd1f8320a100f2b210e690a57cd615 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: 0BSD + size: 98945 + timestamp: 1738525462560 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnpp-12.2.5.30-he02047a_2.conda + sha256: d8c97716825955c48681f4a3cde2f0cbbacc77c91b4cd944d4906f63385487df + md5: a96a1edd18bee676cf2dcca251d3d6a4 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + size: 99461229 + timestamp: 1715711634268 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda + sha256: 26d77a3bb4dceeedc2a41bd688564fe71bf2d149fdcf117049970bc02ff1add6 + md5: 30fd6e37fe21f86f4bd26d6ee73eeec7 + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: LGPL-2.1-only + license_family: GPL + size: 33408 + timestamp: 1697359010159 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnvfatbin-12.4.127-he02047a_2.conda + sha256: d40f37532f86cbbe63439489be0e88561819190392cc519c69365b3fc47a2c5b + md5: d746b76642b4ac6e40f1219405672beb + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + size: 792025 + timestamp: 1715711761341 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnvjitlink-12.4.127-he02047a_2.conda + sha256: 31382c8ef388a51bd2c283a239e037b8b30f9c7ecf6ec9744824445b59db39b6 + md5: 303845d6c48bf4185dc4138634650468 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + size: 16571958 + timestamp: 1715711715842 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnvjpeg-12.3.1.117-he02047a_2.conda + sha256: 49a182f8da4ba30fbfee9692976d9da349371175c9c9576768d4754a51fef326 + md5: 8f3ed0e41a4b505de40b4f96f4bfb0fa + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + size: 2491500 + timestamp: 1715711780068 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.24-openmp_hd76b1f2_0.conda + sha256: 21edfdf620ac5c93571aab452199b6b4622c445441dad88ab4d2eb326a7b91b3 + md5: aacb05989f358affe1bafd4ea7294db4 + depends: + - libgfortran 5.* + - libgfortran5 >=12.3.0 + - llvm-openmp >=15.0.7 + constrains: + - openblas >=0.3.24,<0.3.25.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 2849225 + timestamp: 1693784744674 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda + sha256: 51125ebb8b7152e4a4e69fd2398489c4ec8473195c27cde3cbdf1cb6d18c5493 + md5: d8703f1ffe5a06356f06467f1d0b9464 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 2960815 + timestamp: 1735577210663 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.3-h3bd63a1_1.conda + sha256: f58a16b13ad53346903c833e266f83c3d770a43a432659b98710aed85ca885e7 + md5: bdbfea4cf45ae36652c6bbcc2e7ebe91 + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=18 + - libzlib >=1.3.1,<2.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 2271580 + timestamp: 1735576361997 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsentencepiece-0.2.0-h8e10757_10.conda + sha256: dc399e0f04a09f8c1807c3b36e578eb81f81891c0ddf21de9c1fb9f048ce4031 + md5: 4f43dbcfacd3cc9a183dd3a48b94d3c0 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 823649 + timestamp: 1735627841126 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsentencepiece-0.2.0-he13a0af_10.conda + sha256: 3347a8840d085ce1661928e736229f068d56c84312fbed90886e059023d85611 + md5: 1f67e5e30edd56e0a0bf6df6bb711a9d + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 754657 + timestamp: 1735628030895 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda + sha256: 0105bd108f19ea8e6a78d2d994a6d4a8db16d19a41212070d2d1d48a63c34161 + md5: a587892d3c13b6621a6091be690dbca2 + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: ISC + size: 205978 + timestamp: 1716828628198 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda + sha256: fade8223e1e1004367d7101dd17261003b60aa576df6d7802191f8972f7470b1 + md5: a7ce36e284c5faaf93c220dfc39e3abd + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: ISC + size: 164972 + timestamp: 1716828607917 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.49.1-hee588c1_1.conda + sha256: 7a09eef804ef7cf4d88215c2297eabb72af8ad0bd5b012060111c289f14bbe7d + md5: 73cea06049cc4174578b432320a003b8 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux + license: Unlicense + size: 915956 + timestamp: 1739953155793 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.1-h3f77e49_1.conda + sha256: 266639fb10ca92287961574b0b4d6031fa40dd9d723d64a0fcb08513a24dab03 + md5: c83357a21092bd952933c36c5cb4f4d6 + depends: + - __osx >=11.0 + - libzlib >=1.3.1,<2.0a0 + arch: arm64 + platform: osx + license: Unlicense + size: 898767 + timestamp: 1739953312379 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-h8f9b012_2.conda + sha256: 8f5bd92e4a24e1d35ba015c5252e8f818898478cb3bc50bd8b12ab54707dc4da + md5: a78c856b6dc6bf4ea8daeb9beaaa3fb0 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc 14.2.0 h767d61c_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 3884556 + timestamp: 1740240685253 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_2.conda + sha256: e86f38b007cf97cc2c67cd519f2de12a313c4ee3f5ef11652ad08932a5e34189 + md5: c75da67f045c2627f59e6fcb5f4e3a9b + depends: + - libstdcxx 14.2.0 h8f9b012_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 53830 + timestamp: 1740240722530 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda + sha256: 787eb542f055a2b3de553614b25f09eefb0a0931b0c87dbcce6efdfd92f04f18 + md5: 40b61aab5c7ba9ff276c41cfffe6b80b + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 33601 + timestamp: 1680112270483 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda + sha256: 6ae68e0b86423ef188196fff6207ed0c8195dd84273cb5623b85aa08033a410c + md5: 5aa797f8787fe7a17d1b0821485b5adc + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: LGPL-2.1-or-later + size: 100393 + timestamp: 1702724383534 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.6-h8d12d68_0.conda + sha256: db8af71ea9c0ae95b7cb4a0f59319522ed2243942437a1200ceb391493018d85 + md5: 328382c0e0ca648e5c189d5ec336c604 + depends: + - __glibc >=2.17,<3.0.a0 + - icu >=75.1,<76.0a0 + - libgcc >=13 + - libiconv >=1.18,<2.0a0 + - liblzma >=5.6.4,<6.0a0 + - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 690296 + timestamp: 1739952967309 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda + sha256: d4bfe88d7cb447768e31650f06257995601f89076080e76df55e3112d4e47dc4 + md5: edb0dca6bc32e4f4789199455a1dbeb8 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + constrains: + - zlib 1.3.1 *_2 + arch: x86_64 + platform: linux + license: Zlib + license_family: Other + size: 60963 + timestamp: 1727963148474 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda + sha256: ce34669eadaba351cd54910743e6a2261b67009624dbc7daeeafdef93616711b + md5: 369964e85dc26bfe78f41399b366c435 + depends: + - __osx >=11.0 + constrains: + - zlib 1.3.1 *_2 + arch: arm64 + platform: osx + license: Zlib + license_family: Other + size: 46438 + timestamp: 1727963202283 +- conda: https://conda.anaconda.org/conda-forge/linux-64/llvm-openmp-15.0.7-h0cdce71_0.conda + sha256: 7c67d383a8b1f3e7bf9e046e785325c481f6868194edcfb9d78d261da4ad65d4 + md5: 589c9a3575a050b583241c3d688ad9aa + depends: + - libzlib >=1.2.13,<2.0.0a0 + constrains: + - openmp 15.0.7|15.0.7.* + arch: x86_64 + platform: linux + license: Apache-2.0 WITH LLVM-exception + license_family: APACHE + size: 3268766 + timestamp: 1673584331056 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-15.0.7-h7cfbb63_0.conda + sha256: 6cc4cf021fc1f06df3b97598bf9583fe7a04fad6a4eef9882558f7932f362bc0 + md5: 358164e15a9320f11b84a53fb8d8e446 + constrains: + - openmp 15.0.7|15.0.7.* + arch: arm64 + platform: osx + license: Apache-2.0 WITH LLVM-exception + license_family: APACHE + size: 263326 + timestamp: 1673584823527 +- conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_1.conda + sha256: 4a6bf68d2a2b669fecc9a4a009abd1cf8e72c2289522ff00d81b5a6e51ae78f5 + md5: eb227c3e0bf58f5bd69c0532b157975b + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - jinja2 >=3.0.0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 24604 + timestamp: 1733219911494 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312h998013c_1.conda + sha256: 4aa997b244014d3707eeef54ab0ee497d12c0d0d184018960cce096169758283 + md5: 46e547061080fddf9cf95a0327e8aba6 + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - jinja2 >=3.0.0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 24048 + timestamp: 1733219945697 +- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022718-release.conda + noarch: python + sha256: f3dcb14fed5470c0fc521542cbd2f1c56ca7e46d560f46176b8f926198cb3cbd + md5: 01fe5e0cf46c84a6345e323ad1316764 + depends: + - max-core ==25.2.0.dev2025022718 release + - max-python ==25.2.0.dev2025022718 release + - mojo-jupyter ==25.2.0.dev2025022718 release + - mblack ==25.2.0.dev2025022718 release + license: LicenseRef-Modular-Proprietary + size: 9905 + timestamp: 1740680254354 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022718-release.conda + sha256: 847d5767109a305d7bcad4ac29248a74a384034692934a0c54b00a590c27094a + md5: fc5a9ae36c7805979bd58ca55a25066f + depends: + - mblack ==25.2.0.dev2025022718 release + license: LicenseRef-Modular-Proprietary + size: 249811868 + timestamp: 1740680254354 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022718-release.conda + sha256: fb28d9e61aa507ea84b470082d3dc96844a24fe672d4e4c57e832655c5d0a202 + md5: dd8734453f7276a258f3351cc5c506c3 + depends: + - mblack ==25.2.0.dev2025022718 release + license: LicenseRef-Modular-Proprietary + size: 217273450 + timestamp: 1740681819160 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022718-release.conda + noarch: python + sha256: 831b4d62f66f0083321121c6ba25dedab3ee41d5e9f19d9752969592214af398 + md5: f828ace91aa057e4774e84ad459adccf + depends: + - max-core ==25.2.0.dev2025022718 release + - click >=8.0.0 + - numpy >=1.18,<2.0 + - sentencepiece >=0.2.0 + - tqdm >=4.67.1 + constrains: + - aiohttp >=3.11.12 + - fastapi >=0.114.2 + - gguf >=0.14.0 + - hf-transfer >=0.1.9 + - httpx >=0.28.1 + - huggingface_hub >=0.24.0 + - nvitop >=1.4.1 + - opentelemetry-api >=1.29.0 + - opentelemetry-exporter-otlp-proto-http >=1.27.0 + - opentelemetry-exporter-prometheus <1.0.0 + - opentelemetry-sdk >=1.29.0,<2.0 + - pillow >=10.3.0 + - prometheus_client >=0.21.0 + - prometheus-async >=22.2.0 + - psutil >=6.1.1 + - pydantic + - pydantic-settings >=2.7.1 + - pyinstrument >=5.0.1 + - python-json-logger >=2.0.7 + - requests >=2.32.3 + - rich >=13.9.4 + - safetensors >=0.5.2 + - sentinel >=0.3.0 + - sse-starlette >=2.1.2 + - tokenizers >=0.19.0 + - pytorch >=2.2.2,<=2.5.1 + - transformers >=4.40.1 + - uvicorn >=0.34.0 + - uvloop >=0.21.0 + - xgrammar ==0.1.11 + license: LicenseRef-Modular-Proprietary + size: 123584411 + timestamp: 1740680254354 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022718-release.conda + noarch: python + sha256: 7da9f4655082bb64c2b0cc996ffefa0ce5c49744854ed77a9b0d000e27cf5a55 + md5: b16d498a148aa61dca2a6bfec5cb8e46 + depends: + - max-core ==25.2.0.dev2025022718 release + - click >=8.0.0 + - numpy >=1.18,<2.0 + - sentencepiece >=0.2.0 + - tqdm >=4.67.1 + constrains: + - aiohttp >=3.11.12 + - fastapi >=0.114.2 + - gguf >=0.14.0 + - hf-transfer >=0.1.9 + - httpx >=0.28.1 + - huggingface_hub >=0.24.0 + - nvitop >=1.4.1 + - opentelemetry-api >=1.29.0 + - opentelemetry-exporter-otlp-proto-http >=1.27.0 + - opentelemetry-exporter-prometheus <1.0.0 + - opentelemetry-sdk >=1.29.0,<2.0 + - pillow >=10.3.0 + - prometheus_client >=0.21.0 + - prometheus-async >=22.2.0 + - psutil >=6.1.1 + - pydantic + - pydantic-settings >=2.7.1 + - pyinstrument >=5.0.1 + - python-json-logger >=2.0.7 + - requests >=2.32.3 + - rich >=13.9.4 + - safetensors >=0.5.2 + - sentinel >=0.3.0 + - sse-starlette >=2.1.2 + - tokenizers >=0.19.0 + - pytorch >=2.2.2,<=2.5.1 + - transformers >=4.40.1 + - uvicorn >=0.34.0 + - uvloop >=0.21.0 + - xgrammar ==0.1.11 + license: LicenseRef-Modular-Proprietary + size: 112658409 + timestamp: 1740681819160 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022718-release.conda + noarch: python + sha256: ff042a8abfed0e2e36b207e3d4f59a2b4577dea7f099b08d1aaef128ab796f09 + md5: 719ca7123d53415adcdd7f0cb8396c51 + depends: + - python >=3.9,<3.13 + - click >=8.0.0 + - mypy_extensions >=0.4.3 + - packaging >=22.0 + - pathspec >=0.9.0 + - platformdirs >=2 + - typing_extensions >=v4.12.2 + - python + license: MIT + size: 130852 + timestamp: 1740680254353 +- conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-2022.1.0-h84fe81f_915.tar.bz2 + sha256: 767318c4f2057822a7ebc238d6065ce12c6ae60df4ab892758adb79b1057ce02 + md5: b9c8f925797a93dbff45e1626b025a6b + depends: + - _openmp_mutex * *_llvm + - _openmp_mutex >=4.5 + - llvm-openmp >=14.0.3 + - tbb 2021.* + arch: x86_64 + platform: linux + license: LicenseRef-ProprietaryIntel + license_family: Proprietary + size: 209326825 + timestamp: 1652946040193 +- conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-devel-2022.1.0-ha770c72_916.tar.bz2 + sha256: 93d957608b17ada3039ff0acad2b8596451caa6829b3502fe87375e639ffc34e + md5: 69ba49e445f87aea2cba343a71a35ca2 + depends: + - mkl 2022.1.0 h84fe81f_915 + - mkl-include 2022.1.0 h84fe81f_915 + arch: x86_64 + platform: linux + license: LicenseRef-ProprietaryIntel + license_family: Proprietary + size: 25614 + timestamp: 1652946458276 +- conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-include-2022.1.0-h84fe81f_915.tar.bz2 + sha256: 63415fe64e99f8323d0191d45ea5b1ec3973317e728b9071267ffb7ff3b38364 + md5: 2dcd1acca05c11410d4494d7fc7dfa2a + arch: x86_64 + platform: linux + license: LicenseRef-ProprietaryIntel + license_family: Proprietary + size: 762563 + timestamp: 1652946186347 +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022718-release.conda + noarch: python + sha256: 19c33e23b27e240fee0b2a1d56921802ac88558dc2da417837cd590175561e16 + md5: 6b8d00b15817db11e026f824f7f0ba14 + depends: + - max-core ==25.2.0.dev2025022718 release + - python >=3.9,<3.13 + - jupyter_client >=8.6.2,<8.7 + - python + license: LicenseRef-Modular-Proprietary + size: 22981 + timestamp: 1740680254354 +- conda: https://conda.anaconda.org/conda-forge/linux-64/mpc-1.3.1-h24ddda3_1.conda + sha256: 1bf794ddf2c8b3a3e14ae182577c624fa92dea975537accff4bc7e5fea085212 + md5: aa14b9a5196a6d8dd364164b7ce56acf + depends: + - __glibc >=2.17,<3.0.a0 + - gmp >=6.3.0,<7.0a0 + - libgcc >=13 + - mpfr >=4.2.1,<5.0a0 + arch: x86_64 + platform: linux + license: LGPL-3.0-or-later + license_family: LGPL + size: 116777 + timestamp: 1725629179524 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/mpc-1.3.1-h8f1351a_1.conda + sha256: 2700899ad03302a1751dbf2bca135407e470dd83ac897ab91dd8675d4300f158 + md5: a5635df796b71f6ca400fc7026f50701 + depends: + - __osx >=11.0 + - gmp >=6.3.0,<7.0a0 + - mpfr >=4.2.1,<5.0a0 + arch: arm64 + platform: osx + license: LGPL-3.0-or-later + license_family: LGPL + size: 104766 + timestamp: 1725629165420 +- conda: https://conda.anaconda.org/conda-forge/linux-64/mpfr-4.2.1-h90cbb55_3.conda + sha256: f25d2474dd557ca66c6231c8f5ace5af312efde1ba8290a6ea5e1732a4e669c0 + md5: 2eeb50cab6652538eee8fc0bc3340c81 + depends: + - __glibc >=2.17,<3.0.a0 + - gmp >=6.3.0,<7.0a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: LGPL-3.0-only + license_family: LGPL + size: 634751 + timestamp: 1725746740014 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/mpfr-4.2.1-hb693164_3.conda + sha256: 4463e4e2aba7668e37a1b8532859191b4477a6f3602a5d6b4d64ad4c4baaeac5 + md5: 4e4ea852d54cc2b869842de5044662fb + depends: + - __osx >=11.0 + - gmp >=6.3.0,<7.0a0 + arch: arm64 + platform: osx + license: LGPL-3.0-only + license_family: LGPL + size: 345517 + timestamp: 1725746730583 +- conda: https://conda.anaconda.org/conda-forge/noarch/mpmath-1.3.0-pyhd8ed1ab_1.conda + sha256: 7d7aa3fcd6f42b76bd711182f3776a02bef09a68c5f117d66b712a6d81368692 + md5: 3585aa87c43ab15b167b574cd73b057b + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 439705 + timestamp: 1733302781386 +- conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda + sha256: 1895f47b7d68581a6facde5cb13ab8c2764c2e53a76bd746f8f98910dc4e08fe + md5: 29097e7ea634a45cc5386b95cac6568f + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 10854 + timestamp: 1733230986902 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda + sha256: 3fde293232fa3fca98635e1167de6b7c7fda83caf24b9d6c91ec9eefb4f4d586 + md5: 47e340acb35de30501a76c7c799c41d7 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: X11 AND BSD-3-Clause + size: 891641 + timestamp: 1738195959188 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda + sha256: 2827ada40e8d9ca69a153a45f7fd14f32b2ead7045d3bbb5d10964898fe65733 + md5: 068d497125e4bf8a66bf707254fff5ae + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: X11 AND BSD-3-Clause + size: 797030 + timestamp: 1738196177597 +- conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda + sha256: 39625cd0c9747fa5c46a9a90683b8997d8b9649881b3dc88336b13b7bdd60117 + md5: fd40bf7f7f4bc4b647dc8512053d9873 + depends: + - python >=3.10 + - python + constrains: + - numpy >=1.24 + - scipy >=1.10,!=1.11.0,!=1.11.1 + - matplotlib >=3.7 + - pandas >=2.0 + license: BSD-3-Clause + license_family: BSD + size: 1265008 + timestamp: 1731521053408 +- conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda + sha256: fe3459c75cf84dcef6ef14efcc4adb0ade66038ddd27cadb894f34f4797687d8 + md5: d8285bea2a350f63fab23bf460221f3f + depends: + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - libgcc-ng >=12 + - liblapack >=3.9.0,<4.0a0 + - libstdcxx-ng >=12 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - numpy-base <0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 7484186 + timestamp: 1707225809722 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda + sha256: c8841d6d6f61fd70ca80682efbab6bdb8606dc77c68d8acabfbd7c222054f518 + md5: d83fc83d589e2625a3451c9a7e21047c + depends: + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - libcxx >=16 + - liblapack >=3.9.0,<4.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - numpy-base <0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 6073136 + timestamp: 1707226249608 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ocl-icd-2.3.2-hb9d3cd8_2.conda + sha256: 96ddd13054032fabd54636f634d50bc74d10d8578bc946405c429b2d895db6f2 + md5: 2e8d2b469559d6b2cb6fd4b34f9c8d7f + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - opencl-headers >=2024.10.24 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + size: 94934 + timestamp: 1732915114536 +- conda: https://conda.anaconda.org/conda-forge/linux-64/opencl-headers-2024.10.24-h5888daf_0.conda + sha256: 7e1d3ad55d4ad3ddf826e205d4603b9ed40c5e655a9dfd66b56f459d7ba14db3 + md5: 3ba02cce423fdac1a8582bd6bb189359 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 54060 + timestamp: 1732912937444 +- conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.1-h7b32b05_0.conda + sha256: cbf62df3c79a5c2d113247ddea5658e9ff3697b6e741c210656e239ecaf1768f + md5: 41adf927e746dc75ecf0ef841c454e48 + depends: + - __glibc >=2.17,<3.0.a0 + - ca-certificates + - libgcc >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 2939306 + timestamp: 1739301879343 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.1-h81ee809_0.conda + sha256: 4f8e2389e1b711b44182a075516d02c80fa7a3a7e25a71ff1b5ace9eae57a17a + md5: 75f9f0c7b1740017e2db83a53ab9a28e + depends: + - __osx >=11.0 + - ca-certificates + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 2934522 + timestamp: 1739301896733 +- conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + sha256: da157b19bcd398b9804c5c52fc000fcb8ab0525bdb9c70f95beaa0bb42f85af1 + md5: 3bfed7e6228ebf2f7b9eaa47f1b4e2aa + depends: + - python >=3.8 + license: Apache-2.0 + license_family: APACHE + size: 60164 + timestamp: 1733203368787 +- conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + sha256: 9f64009cdf5b8e529995f18e03665b03f5d07c0b17445b8badef45bde76249ee + md5: 617f15191456cc6a13db418a275435e5 + depends: + - python >=3.9 + license: MPL-2.0 + license_family: MOZILLA + size: 41075 + timestamp: 1733233471940 +- conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + sha256: bb50f6499e8bc1d1a26f17716c97984671121608dc0c3ecd34858112bce59a27 + md5: 577852c7e53901ddccc7e6a9959ddebe + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 20448 + timestamp: 1733232756001 +- conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.9-h9e4cc4f_0_cpython.conda + sha256: 64fed5178f1e9c8ac0f572ac0ce37955f5dee7b2bcac665202bc14f1f7dd618a + md5: 5665f0079432f8848079c811cdb537d5 + depends: + - __glibc >=2.17,<3.0.a0 + - bzip2 >=1.0.8,<2.0a0 + - ld_impl_linux-64 >=2.36.1 + - libexpat >=2.6.4,<3.0a0 + - libffi >=3.4,<4.0a0 + - libgcc >=13 + - liblzma >=5.6.4,<6.0a0 + - libnsl >=2.0.1,<2.1.0a0 + - libsqlite >=3.48.0,<4.0a0 + - libuuid >=2.38.1,<3.0a0 + - libxcrypt >=4.4.36 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.4.1,<4.0a0 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + constrains: + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Python-2.0 + size: 31581682 + timestamp: 1739521496324 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.9-hc22306f_0_cpython.conda + sha256: cbf81a78d3ca6e663e827523e6ddbc28369cac488da047a28f83875eb52fe5f6 + md5: 1d105a6c46a753e3c0bab54a1ad24063 + depends: + - __osx >=11.0 + - bzip2 >=1.0.8,<2.0a0 + - libexpat >=2.6.4,<3.0a0 + - libffi >=3.4,<4.0a0 + - liblzma >=5.6.4,<6.0a0 + - libsqlite >=3.48.0,<4.0a0 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.4.1,<4.0a0 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + constrains: + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Python-2.0 + size: 12947786 + timestamp: 1739520092196 +- conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + sha256: a50052536f1ef8516ed11a844f9413661829aa083304dc624c5925298d078d79 + md5: 5ba79d7c71f03c678c8ead841f347d6e + depends: + - python >=3.9 + - six >=1.5 + license: Apache-2.0 + license_family: APACHE + size: 222505 + timestamp: 1733215763718 +- conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda + build_number: 5 + sha256: d10e93d759931ffb6372b45d65ff34d95c6000c61a07e298d162a3bc2accebb0 + md5: 0424ae29b104430108f5218a66db7260 + constrains: + - python 3.12.* *_cpython + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 6238 + timestamp: 1723823388266 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-5_cp312.conda + build_number: 5 + sha256: 49d624e4b809c799d2bf257b22c23cf3fc4460f5570d9a58e7ad86350aeaa1f4 + md5: b76f9b1c862128e56ac7aa8cd2333de9 + constrains: + - python 3.12.* *_cpython + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 6278 + timestamp: 1723823099686 +- conda: https://conda.anaconda.org/pytorch/linux-64/pytorch-2.5.1-py3.12_cuda12.4_cudnn9.1.0_0.tar.bz2 + sha256: 8183ab363b7892f67ba3660929f1c3f4f8646e4a2a02d499d387acc0509764c3 + md5: 42164c6ce8e563c20a542686a8b9b964 + depends: + - blas * mkl + - filelock + - jinja2 + - llvm-openmp <16 + - mkl >=2018 + - networkx + - python >=3.12,<3.13.0a0 + - pytorch-cuda >=12.4,<12.5 + - pytorch-mutex 1.0 cuda + - pyyaml + - sympy + - torchtriton 3.1.0 + - typing_extensions + constrains: + - cpuonly <0 + arch: x86_64 + platform: linux + license: BSD 3-Clause + license_family: BSD + size: 1571072276 + timestamp: 1729655770987 +- conda: https://conda.anaconda.org/pytorch/osx-arm64/pytorch-2.5.1-py3.12_0.tar.bz2 + sha256: 1d476688886b78f641973d1b5c1352eaece59484f4408f2c1af46e3634a6c957 + md5: a393d6275c53d5218015a23c741dc004 + depends: + - filelock + - jinja2 + - llvm-openmp <16 + - networkx + - python >=3.12,<3.13.0a0 + - pyyaml + - sympy + - typing_extensions + constrains: + - cpuonly + arch: arm64 + platform: osx + license: BSD 3-Clause + license_family: BSD + size: 62089911 + timestamp: 1729651375444 +- conda: https://conda.anaconda.org/pytorch/linux-64/pytorch-cuda-12.4-hc786d27_7.tar.bz2 + sha256: 4ce6352f6270673aaf335909da2bbdd70ad8aaae489319e1e3a5ac0aae720314 + md5: 06635b1bbf5e2fef4a8b9b282500cd7b + depends: + - cuda-cudart >=12.4,<12.5 + - cuda-cupti >=12.4,<12.5 + - cuda-libraries >=12.4,<12.5 + - cuda-nvrtc >=12.4,<12.5 + - cuda-nvtx >=12.4,<12.5 + - cuda-runtime >=12.4,<12.5 + - libcublas >=12.4.5.8,<12.5.2.13 + - libcufft >=11.2.1.3,<11.2.3.18 + - libcusolver >=11.6.1.9,<11.6.2.40 + - libcusparse >=12.3.1.170,<12.4.1.18 + - libnpp >=12.2.5.30,<12.3.0.116 + - libnvjitlink >=12.4.127,<12.5.40 + - libnvjpeg >=12.3.1.117,<12.3.2.38 + arch: x86_64 + platform: linux + size: 7189 + timestamp: 1724179791784 +- conda: https://conda.anaconda.org/pytorch/noarch/pytorch-mutex-1.0-cuda.tar.bz2 + build_number: 100 + sha256: c16316183f51b74ca5eee4dcb8631052f328c0bbf244176734a0b7d390b81ee3 + md5: a948316e36fb5b11223b3fcfa93f8358 + size: 2906 + timestamp: 1628062930777 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py312h178313f_2.conda + sha256: 159cba13a93b3fe084a1eb9bda0a07afc9148147647f0d437c3c3da60980503b + md5: cf2485f39740de96e2a7f2bb18ed2fee + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - yaml >=0.2.5,<0.3.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 206903 + timestamp: 1737454910324 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py312h998013c_2.conda + sha256: ad225ad24bfd60f7719709791345042c3cb32da1692e62bd463b084cf140e00d + md5: 68149ed4d4e9e1c42d2ba1f27f08ca96 + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - yaml >=0.2.5,<0.3.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 192148 + timestamp: 1737454886351 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.1-py312hbf22597_0.conda + sha256: 90ec0da0317d3d76990a40c61e1709ef859dd3d8c63838bad2814f46a63c8a2e + md5: 7cec8d0dac15a2d9fea8e49879aa779d + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libsodium >=1.0.20,<1.0.21.0a0 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - zeromq >=4.3.5,<4.4.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 382698 + timestamp: 1738271121975 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.1-py312hf4875e0_0.conda + sha256: 70d398b334668dc597d33e27847ede1b0829a639b9c91ee845355e52c86c2293 + md5: bfbefdb140b546a80827ff7c9d5ac7b8 + depends: + - __osx >=11.0 + - libcxx >=18 + - libsodium >=1.0.20,<1.0.21.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - zeromq >=4.3.5,<4.4.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 364649 + timestamp: 1738271263898 +- conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda + sha256: 2d6d0c026902561ed77cd646b5021aef2d4db22e57a5b0178dfc669231e06d2c + md5: 283b96675859b20a825f8fa30f311446 + depends: + - libgcc >=13 + - ncurses >=6.5,<7.0a0 + arch: x86_64 + platform: linux + license: GPL-3.0-only + license_family: GPL + size: 282480 + timestamp: 1740379431762 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda + sha256: 7db04684d3904f6151eff8673270922d31da1eea7fa73254d01c437f49702e34 + md5: 63ef3f6e6d6d5c589e64f11263dc5676 + depends: + - ncurses >=6.5,<7.0a0 + arch: arm64 + platform: osx + license: GPL-3.0-only + license_family: GPL + size: 252359 + timestamp: 1740379663071 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-0.2.0-hc8f76dd_10.conda + sha256: a1bde55ceb9dc5bd7879283d0f594a6ce65c07fda3de76230c65a4a5df47858a + md5: 480e915dfc6c592615ef6f217e615aa6 + depends: + - libsentencepiece 0.2.0 h8e10757_10 + - python_abi 3.12.* *_cp312 + - sentencepiece-python 0.2.0 py312hb6b8a2b_10 + - sentencepiece-spm 0.2.0 h8e10757_10 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 19470 + timestamp: 1735628377167 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-0.2.0-h22a84ea_10.conda + sha256: 526c934b897131bd274697649c3b1c492a7d66c03368885a954112468b3c1424 + md5: 346abe448f69949a65473b336856860a + depends: + - libsentencepiece 0.2.0 he13a0af_10 + - python_abi 3.12.* *_cp312 + - sentencepiece-python 0.2.0 py312h155166a_10 + - sentencepiece-spm 0.2.0 he13a0af_10 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 19759 + timestamp: 1735628533490 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-python-0.2.0-py312hb6b8a2b_10.conda + sha256: 37df7fb659564587b950b39c936769d9b5095afb7bc223f42d6248a5540c6567 + md5: 7908b7b977e2e123a5f6a29906f2ce44 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 h8e10757_10 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 2411182 + timestamp: 1735628106455 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-python-0.2.0-py312h155166a_10.conda + sha256: 2d59614aeafbf54cc718805798c11c2d0a3b4b8d947d1bd81c87c484b4883077 + md5: 6e11367ef670296fce01fc9860be944d + depends: + - __osx >=11.0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 he13a0af_10 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 2433303 + timestamp: 1735628083958 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-spm-0.2.0-h8e10757_10.conda + sha256: 6b55e1121545357d63c3aa0766931720e8aafc52d88641ba7631c8cbaa68c52f + md5: e977b7be5ac26c55825e121e00b90493 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 h8e10757_10 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 89076 + timestamp: 1735628334078 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-spm-0.2.0-he13a0af_10.conda + sha256: b760aeee02e2afbfcce3f559e8a227aa4c94139157b1702fdfb41a057dad0e52 + md5: 9b7300f23cd330da8664cd072c162e5f + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 he13a0af_10 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 83826 + timestamp: 1735628514667 +- conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + sha256: 41db0180680cc67c3fa76544ffd48d6a5679d96f4b71d7498a759e94edc9a2db + md5: a451d576819089b0d672f18768be0f65 + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 16385 + timestamp: 1733381032766 +- conda: https://conda.anaconda.org/conda-forge/noarch/sympy-1.13.3-pyh2585a3b_105.conda + sha256: 929d939c5a8bcdc10a17501890918da68cf14a5883b36fddf77b8f0fbf040be2 + md5: 254cd5083ffa04d96e3173397a3d30f4 + depends: + - __unix + - cpython + - gmpy2 >=2.0.8 + - mpmath >=0.19 + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 4523617 + timestamp: 1736248315124 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tbb-2021.13.0-hceb3a55_1.conda + sha256: 65463732129899770d54b1fbf30e1bb82fdebda9d7553caf08d23db4590cd691 + md5: ba7726b8df7b9d34ea80e82b097a4893 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libhwloc >=2.11.2,<2.11.3.0a0 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 175954 + timestamp: 1732982638805 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda + sha256: e0569c9caa68bf476bead1bed3d79650bb080b532c64a4af7d8ca286c08dea4e + md5: d453b98d9c83e71da0741bb0ff4d76bc + depends: + - libgcc-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 + arch: x86_64 + platform: linux + license: TCL + license_family: BSD + size: 3318875 + timestamp: 1699202167581 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda + sha256: 72457ad031b4c048e5891f3f6cb27a53cb479db68a52d965f796910e71a403a8 + md5: b50a57ba89c32b62428b71a875291c9b + depends: + - libzlib >=1.2.13,<2.0.0a0 + arch: arm64 + platform: osx + license: TCL + license_family: BSD + size: 3145523 + timestamp: 1699202432999 +- conda: https://conda.anaconda.org/pytorch/linux-64/torchtriton-3.1.0-py312.tar.bz2 + build_number: 1 + sha256: f0beb429b3834a3796626642829a7e4bb9d4fe6477c8dc614a55e5c4f15a6a05 + md5: bb4b2d07cb6b9b476e78740c08ba69fe + depends: + - filelock + - python >=3.12,<3.13.0a0 + - pytorch + arch: x86_64 + platform: linux + license: MIT + size: 244939186 + timestamp: 1727971107041 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda + sha256: 062a3a3a37fa8615ce57929ba7e982c76f5a5810bcebd435950f6d6c4147c310 + md5: e417822cb989e80a0d2b1b576fdd1657 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 840414 + timestamp: 1732616043734 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda + sha256: 964a2705a36c50040c967b18b45b9cc8de3c2aff4af546979a574e0b38e58e39 + md5: fb0605888a475d6a380ae1d1a819d976 + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 842549 + timestamp: 1732616081362 +- conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + sha256: 11e2c85468ae9902d24a27137b6b39b4a78099806e551d390e394a8c34b48e40 + md5: 9efbfdc37242619130ea42b1cc4ed861 + depends: + - colorama + - python >=3.9 + license: MPL-2.0 or MIT + size: 89498 + timestamp: 1735661472632 +- conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + sha256: f39a5620c6e8e9e98357507262a7869de2ae8cc07da8b7f84e517c9fd6c2b959 + md5: 019a7385be9af33791c989871317e1ed + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 110051 + timestamp: 1733367480074 +- conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + sha256: 337be7af5af8b2817f115b3b68870208b30c31d3439bec07bfb2d8f4823e3568 + md5: d17f13df8b65464ca316cbc000a3cb64 + depends: + - python >=3.9 + license: PSF-2.0 + license_family: PSF + size: 39637 + timestamp: 1733188758212 +- conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + sha256: c4b1ae8a2931fe9b274c44af29c5475a85b37693999f8c792dad0f8c6734b1de + md5: dbcace4706afdfb7eb891f7b37d07c04 + license: LicenseRef-Public-Domain + size: 122921 + timestamp: 1737119101255 +- conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 + sha256: a4e34c710eeb26945bdbdaba82d3d74f60a78f54a874ec10d373811a5d217535 + md5: 4cb3ad778ec2d5a7acbdf254eb1c42ae + depends: + - libgcc-ng >=9.4.0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 89141 + timestamp: 1641346969816 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 + sha256: 93181a04ba8cfecfdfb162fc958436d868cc37db504c58078eab4c1a3e57fbb7 + md5: 4bb3f014845110883a3c5ee811fd84b4 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 88016 + timestamp: 1641347076660 +- conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda + sha256: a4dc72c96848f764bb5a5176aa93dd1e9b9e52804137b99daeebba277b31ea10 + md5: 3947a35e916fcc6b9825449affbf4214 + depends: + - __glibc >=2.17,<3.0.a0 + - krb5 >=1.21.3,<1.22.0a0 + - libgcc >=13 + - libsodium >=1.0.20,<1.0.21.0a0 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: MPL-2.0 + license_family: MOZILLA + size: 335400 + timestamp: 1731585026517 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda + sha256: 9e585569fe2e7d3bea71972cd4b9f06b1a7ab8fa7c5139f92a31cbceecf25a8a + md5: f7e6b65943cb73bce0143737fded08f1 + depends: + - __osx >=11.0 + - krb5 >=1.21.3,<1.22.0a0 + - libcxx >=18 + - libsodium >=1.0.20,<1.0.21.0a0 + arch: arm64 + platform: osx + license: MPL-2.0 + license_family: MOZILLA + size: 281565 + timestamp: 1731585108039 +- conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + sha256: 567c04f124525c97a096b65769834b7acb047db24b15a56888a322bf3966c3e1 + md5: 0c3cc595284c5e8f0f9900a9b228a332 + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 21809 + timestamp: 1732827613585 diff --git a/tutorials/hello-magic/magic.lock b/tutorials/hello-magic/magic.lock new file mode 100644 index 0000000000..d2c69e5aa3 --- /dev/null +++ b/tutorials/hello-magic/magic.lock @@ -0,0 +1,2901 @@ +version: 6 +environments: + default: + channels: + - url: https://conda.anaconda.org/pytorch/ + - url: https://conda.anaconda.org/conda-forge/ + - url: https://conda.modular.com/max-nightly/ + indexes: + - https://pypi.org/simple + packages: + linux-64: + - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_kmp_llvm.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/blas-2.116-mkl.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/blas-devel-3.9.0-16_linux64_mkl.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2025.1.31-hbcca054_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.11.11-py311hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-cudart-12.4.127-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cuda-cudart_linux-64-12.4.127-h85509e4_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-cupti-12.4.127-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-libraries-12.4.1-ha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-nvrtc-12.4.127-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-nvtx-12.4.127-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-opencl-12.4.127-he02047a_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cuda-runtime-12.4.1-ha804496_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cuda-version-12.4-h3060b56_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gmp-6.3.0-hac33072_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gmpy2-2.1.5-py311h0f6cedb_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-16_linux64_mkl.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-16_linux64_mkl.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcublas-12.4.5.8-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcufft-11.2.1.3-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcufile-1.9.1.3-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcurand-10.3.5.147-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcusolver-11.6.1.9-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcusparse-12.3.1.170-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h767d61c_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-ng-14.2.0-h69a702a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hf1ad2bd_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libhwloc-2.11.2-default_h0d58e46_1001.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h4ce23a2_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-16_linux64_mkl.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapacke-3.9.0-16_linux64_mkl.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnpp-12.2.5.30-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnvfatbin-12.4.127-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnvjitlink-12.4.127-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnvjpeg-12.3.1.117-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsentencepiece-0.2.0-h8e10757_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.49.1-hee588c1_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-h8f9b012_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.6-h8d12d68_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/llvm-openmp-15.0.7-h0cdce71_0.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-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022718-release.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-2022.1.0-h84fe81f_915.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-devel-2022.1.0-ha770c72_916.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-include-2022.1.0-h84fe81f_915.tar.bz2 + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022718-release.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/mpc-1.3.1-h24ddda3_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/mpfr-4.2.1-h90cbb55_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mpmath-1.3.0-pyhd8ed1ab_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-h2d0b736_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py311h64a7726_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ocl-icd-2.3.2-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/opencl-headers-2024.10.24-h5888daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.1-h7b32b05_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.11.11-h9e4cc4f_1_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.11-5_cp311.conda + - conda: https://conda.anaconda.org/pytorch/linux-64/pytorch-2.5.1-py3.11_cuda12.4_cudnn9.1.0_0.tar.bz2 + - conda: https://conda.anaconda.org/pytorch/linux-64/pytorch-cuda-12.4-hc786d27_7.tar.bz2 + - conda: https://conda.anaconda.org/pytorch/noarch/pytorch-mutex-1.0-cuda.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py311h2dc5d0c_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.1-py311h7deb3e3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-0.2.0-h074ec65_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-python-0.2.0-py311hf886319_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-spm-0.2.0-h8e10757_10.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sympy-1.13.3-pyh2585a3b_105.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tbb-2021.13.0-hceb3a55_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda + - conda: https://conda.anaconda.org/pytorch/linux-64/torchtriton-3.1.0-py311.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py311h9ecbd09_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + - pypi: https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/46/eb/e7f063ad1fec6b3178a3cd82d1a3c4de82cccf283fc42746168188e1cdd5/anyio-4.8.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/32/b6/7517af5234378518f27ad35a7b24af9591bc500b8c1780929c1295999eb6/fastapi-0.115.9-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/76/c6/c88e154df9c4e1a2a66ccf0005a88dfb2650c1dffb6f5ce603dfbd452ce3/idna-3.10-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/f4/3c/8cc1cc84deffa6e25d2d0c688ebb80635dfdbf1dbea3e30c541c8cf4d860/pydantic-2.10.6-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/a8/7c/b860618c25678bbd6d1d99dbdfdf0510ccb50790099b963ff78a124b754f/pydantic_core-2.27.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/e9/44/75a9c9421471a6c4805dbf2356f7c181a29c1879239abab1ea2cc8f38b40/sniffio-1.3.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/d9/61/f2b52e107b1fc8944b33ef56bf6ac4ebbe16d91b94d2b87ce013bf63fb84/starlette-0.45.3-py3-none-any.whl + osx-arm64: + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2025.1.31-hf0a4a13_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.11.11-py311hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gmp-6.3.0-h7bae524_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gmpy2-2.1.5-py311hb5d9ff4_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_h07bc746_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-19_osxarm64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-19_osxarm64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.4-h286801f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-19_osxarm64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.4-h39f12f2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.24-openmp_hd76b1f2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.3-h3bd63a1_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsentencepiece-0.2.0-he13a0af_10.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.1-h3f77e49_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-15.0.7-h7cfbb63_0.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-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022718-release.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/mpc-1.3.1-h8f1351a_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/mpfr-4.2.1-hb693164_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mpmath-1.3.0-pyhd8ed1ab_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/osx-arm64/ncurses-6.5-h5e97a16_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py311h7125741_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.1-h81ee809_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.11.11-hc22306f_1_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.11-5_cp311.conda + - conda: https://conda.anaconda.org/pytorch/osx-arm64/pytorch-2.5.1-py3.11_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py311h4921393_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.1-py311h01f2145_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-0.2.0-hf736513_10.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-python-0.2.0-py311hb1a73f2_10.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-spm-0.2.0-he13a0af_10.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sympy-1.13.3-pyh2585a3b_105.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py311h917b07b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + - pypi: https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/46/eb/e7f063ad1fec6b3178a3cd82d1a3c4de82cccf283fc42746168188e1cdd5/anyio-4.8.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/32/b6/7517af5234378518f27ad35a7b24af9591bc500b8c1780929c1295999eb6/fastapi-0.115.9-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/76/c6/c88e154df9c4e1a2a66ccf0005a88dfb2650c1dffb6f5ce603dfbd452ce3/idna-3.10-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/f4/3c/8cc1cc84deffa6e25d2d0c688ebb80635dfdbf1dbea3e30c541c8cf4d860/pydantic-2.10.6-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/9e/e3/71fe85af2021f3f386da42d291412e5baf6ce7716bd7101ea49c810eda90/pydantic_core-2.27.2-cp311-cp311-macosx_11_0_arm64.whl + - pypi: https://files.pythonhosted.org/packages/e9/44/75a9c9421471a6c4805dbf2356f7c181a29c1879239abab1ea2cc8f38b40/sniffio-1.3.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/d9/61/f2b52e107b1fc8944b33ef56bf6ac4ebbe16d91b94d2b87ce013bf63fb84/starlette-0.45.3-py3-none-any.whl + test: + channels: + - url: https://conda.anaconda.org/pytorch/ + - url: https://conda.anaconda.org/conda-forge/ + - url: https://conda.modular.com/max-nightly/ + indexes: + - https://pypi.org/simple + packages: + linux-64: + - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_kmp_llvm.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/blas-2.116-mkl.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/blas-devel-3.9.0-16_linux64_mkl.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2025.1.31-hbcca054_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.11.11-py311hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-cudart-12.4.127-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cuda-cudart_linux-64-12.4.127-h85509e4_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-cupti-12.4.127-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-libraries-12.4.1-ha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-nvrtc-12.4.127-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-nvtx-12.4.127-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-opencl-12.4.127-he02047a_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cuda-runtime-12.4.1-ha804496_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cuda-version-12.4-h3060b56_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gmp-6.3.0-hac33072_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gmpy2-2.1.5-py311h0f6cedb_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-16_linux64_mkl.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-16_linux64_mkl.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcublas-12.4.5.8-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcufft-11.2.1.3-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcufile-1.9.1.3-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcurand-10.3.5.147-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcusolver-11.6.1.9-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcusparse-12.3.1.170-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h767d61c_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-ng-14.2.0-h69a702a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hf1ad2bd_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libhwloc-2.11.2-default_h0d58e46_1001.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h4ce23a2_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-16_linux64_mkl.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapacke-3.9.0-16_linux64_mkl.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnpp-12.2.5.30-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnvfatbin-12.4.127-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnvjitlink-12.4.127-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnvjpeg-12.3.1.117-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsentencepiece-0.2.0-h8e10757_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.49.1-hee588c1_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-h8f9b012_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.6-h8d12d68_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/llvm-openmp-15.0.7-h0cdce71_0.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-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022718-release.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-2022.1.0-h84fe81f_915.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-devel-2022.1.0-ha770c72_916.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-include-2022.1.0-h84fe81f_915.tar.bz2 + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022718-release.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/mpc-1.3.1-h24ddda3_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/mpfr-4.2.1-h90cbb55_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mpmath-1.3.0-pyhd8ed1ab_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-h2d0b736_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py311h64a7726_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ocl-icd-2.3.2-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/opencl-headers-2024.10.24-h5888daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.1-h7b32b05_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.11.11-h9e4cc4f_1_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.11-5_cp311.conda + - conda: https://conda.anaconda.org/pytorch/linux-64/pytorch-2.5.1-py3.11_cuda12.4_cudnn9.1.0_0.tar.bz2 + - conda: https://conda.anaconda.org/pytorch/linux-64/pytorch-cuda-12.4-hc786d27_7.tar.bz2 + - conda: https://conda.anaconda.org/pytorch/noarch/pytorch-mutex-1.0-cuda.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py311h2dc5d0c_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.1-py311h7deb3e3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-0.2.0-h074ec65_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-python-0.2.0-py311hf886319_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-spm-0.2.0-h8e10757_10.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sympy-1.13.3-pyh2585a3b_105.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tbb-2021.13.0-hceb3a55_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda + - conda: https://conda.anaconda.org/pytorch/linux-64/torchtriton-3.1.0-py311.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py311h9ecbd09_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + - pypi: https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/46/eb/e7f063ad1fec6b3178a3cd82d1a3c4de82cccf283fc42746168188e1cdd5/anyio-4.8.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/32/b6/7517af5234378518f27ad35a7b24af9591bc500b8c1780929c1295999eb6/fastapi-0.115.9-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/76/c6/c88e154df9c4e1a2a66ccf0005a88dfb2650c1dffb6f5ce603dfbd452ce3/idna-3.10-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ef/a6/62565a6e1cf69e10f5727360368e451d4b7f58beeac6173dc9db836a5b46/iniconfig-2.0.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/88/5f/e351af9a41f866ac3f1fac4ca0613908d9a41741cfcf2228f4ad853b697d/pluggy-1.5.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/f4/3c/8cc1cc84deffa6e25d2d0c688ebb80635dfdbf1dbea3e30c541c8cf4d860/pydantic-2.10.6-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/a8/7c/b860618c25678bbd6d1d99dbdfdf0510ccb50790099b963ff78a124b754f/pydantic_core-2.27.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/11/92/76a1c94d3afee238333bc0a42b82935dd8f9cf8ce9e336ff87ee14d9e1cf/pytest-8.3.4-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/e9/44/75a9c9421471a6c4805dbf2356f7c181a29c1879239abab1ea2cc8f38b40/sniffio-1.3.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/d9/61/f2b52e107b1fc8944b33ef56bf6ac4ebbe16d91b94d2b87ce013bf63fb84/starlette-0.45.3-py3-none-any.whl + osx-arm64: + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2025.1.31-hf0a4a13_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.11.11-py311hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gmp-6.3.0-h7bae524_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gmpy2-2.1.5-py311hb5d9ff4_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_h07bc746_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-19_osxarm64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-19_osxarm64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.4-h286801f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-19_osxarm64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.4-h39f12f2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.24-openmp_hd76b1f2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.3-h3bd63a1_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsentencepiece-0.2.0-he13a0af_10.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.1-h3f77e49_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-15.0.7-h7cfbb63_0.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-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022718-release.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/mpc-1.3.1-h8f1351a_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/mpfr-4.2.1-hb693164_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mpmath-1.3.0-pyhd8ed1ab_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/osx-arm64/ncurses-6.5-h5e97a16_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py311h7125741_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.1-h81ee809_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.11.11-hc22306f_1_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.11-5_cp311.conda + - conda: https://conda.anaconda.org/pytorch/osx-arm64/pytorch-2.5.1-py3.11_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py311h4921393_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.1-py311h01f2145_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-0.2.0-hf736513_10.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-python-0.2.0-py311hb1a73f2_10.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-spm-0.2.0-he13a0af_10.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sympy-1.13.3-pyh2585a3b_105.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py311h917b07b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + - pypi: https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/46/eb/e7f063ad1fec6b3178a3cd82d1a3c4de82cccf283fc42746168188e1cdd5/anyio-4.8.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/32/b6/7517af5234378518f27ad35a7b24af9591bc500b8c1780929c1295999eb6/fastapi-0.115.9-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/76/c6/c88e154df9c4e1a2a66ccf0005a88dfb2650c1dffb6f5ce603dfbd452ce3/idna-3.10-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ef/a6/62565a6e1cf69e10f5727360368e451d4b7f58beeac6173dc9db836a5b46/iniconfig-2.0.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/88/5f/e351af9a41f866ac3f1fac4ca0613908d9a41741cfcf2228f4ad853b697d/pluggy-1.5.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/f4/3c/8cc1cc84deffa6e25d2d0c688ebb80635dfdbf1dbea3e30c541c8cf4d860/pydantic-2.10.6-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/9e/e3/71fe85af2021f3f386da42d291412e5baf6ce7716bd7101ea49c810eda90/pydantic_core-2.27.2-cp311-cp311-macosx_11_0_arm64.whl + - pypi: https://files.pythonhosted.org/packages/11/92/76a1c94d3afee238333bc0a42b82935dd8f9cf8ce9e336ff87ee14d9e1cf/pytest-8.3.4-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/e9/44/75a9c9421471a6c4805dbf2356f7c181a29c1879239abab1ea2cc8f38b40/sniffio-1.3.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/d9/61/f2b52e107b1fc8944b33ef56bf6ac4ebbe16d91b94d2b87ce013bf63fb84/starlette-0.45.3-py3-none-any.whl +packages: +- conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 + sha256: fe51de6107f9edc7aa4f786a70f4a883943bc9d39b3bb7307c04c41410990726 + md5: d7c89558ba9fa0495403155b64376d81 + arch: x86_64 + platform: linux + license: None + purls: [] + size: 2562 + timestamp: 1578324546067 +- conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_kmp_llvm.tar.bz2 + build_number: 2 + sha256: 84a66275da3a66e3f3e70e9d8f10496d807d01a9e4ec16cd2274cc5e28c478fc + md5: 562b26ba2e19059551a811e72ab7f793 + depends: + - _libgcc_mutex 0.1 conda_forge + - llvm-openmp >=9.0.1 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 5744 + timestamp: 1650742457817 +- pypi: https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl + name: annotated-types + version: 0.7.0 + sha256: 1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53 + requires_dist: + - typing-extensions>=4.0.0 ; python_full_version < '3.9' + requires_python: '>=3.8' +- pypi: https://files.pythonhosted.org/packages/46/eb/e7f063ad1fec6b3178a3cd82d1a3c4de82cccf283fc42746168188e1cdd5/anyio-4.8.0-py3-none-any.whl + name: anyio + version: 4.8.0 + sha256: b5011f270ab5eb0abf13385f851315585cc37ef330dd88e27ec3d34d651fd47a + requires_dist: + - exceptiongroup>=1.0.2 ; python_full_version < '3.11' + - idna>=2.8 + - sniffio>=1.1 + - typing-extensions>=4.5 ; python_full_version < '3.13' + - trio>=0.26.1 ; extra == 'trio' + - anyio[trio] ; extra == 'test' + - coverage[toml]>=7 ; extra == 'test' + - exceptiongroup>=1.2.0 ; extra == 'test' + - hypothesis>=4.0 ; extra == 'test' + - psutil>=5.9 ; extra == 'test' + - pytest>=7.0 ; extra == 'test' + - trustme ; extra == 'test' + - truststore>=0.9.1 ; python_full_version >= '3.10' and extra == 'test' + - uvloop>=0.21 ; python_full_version < '3.14' and platform_python_implementation == 'CPython' and platform_system != 'Windows' and extra == 'test' + - packaging ; extra == 'doc' + - sphinx~=7.4 ; extra == 'doc' + - sphinx-rtd-theme ; extra == 'doc' + - sphinx-autodoc-typehints>=1.2.0 ; extra == 'doc' + requires_python: '>=3.9' +- conda: https://conda.anaconda.org/conda-forge/linux-64/blas-2.116-mkl.tar.bz2 + build_number: 16 + sha256: 87056ebdc90b6d1ea6726d04d42b844cc302112e80508edbf7bf1f1a4fd3fed2 + md5: c196a26abf6b4f132c88828ab7c2231c + depends: + - _openmp_mutex * *_llvm + - _openmp_mutex >=4.5 + - blas-devel 3.9.0 16_linux64_mkl + - libblas 3.9.0 16_linux64_mkl + - libcblas 3.9.0 16_linux64_mkl + - libgcc-ng >=12 + - libgfortran-ng + - libgfortran5 >=10.4.0 + - liblapack 3.9.0 16_linux64_mkl + - liblapacke 3.9.0 16_linux64_mkl + - llvm-openmp >=14.0.4 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 13258 + timestamp: 1660094704275 +- conda: https://conda.anaconda.org/conda-forge/linux-64/blas-devel-3.9.0-16_linux64_mkl.tar.bz2 + build_number: 16 + sha256: a7da65ca4e0322317cbc4d387c4a5f075cdc7fcd12ad9f7f18da758c7532749a + md5: 3f92c1c9e1c0e183462c5071aa02cae1 + depends: + - libblas 3.9.0 16_linux64_mkl + - libcblas 3.9.0 16_linux64_mkl + - liblapack 3.9.0 16_linux64_mkl + - liblapacke 3.9.0 16_linux64_mkl + - mkl >=2022.1.0,<2023.0a0 + - mkl-devel 2022.1.* + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 12630 + timestamp: 1660094595212 +- conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda + sha256: 5ced96500d945fb286c9c838e54fa759aa04a7129c59800f0846b4335cee770d + md5: 62ee74e96c5ebb0af99386de58cf9553 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: bzip2-1.0.6 + license_family: BSD + purls: [] + size: 252783 + timestamp: 1720974456583 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda + sha256: adfa71f158cbd872a36394c56c3568e6034aa55c623634b37a4836bd036e6b91 + md5: fc6948412dbbbe9a4c9ddbbcfe0a79ab + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: bzip2-1.0.6 + license_family: BSD + purls: [] + size: 122909 + timestamp: 1720974522888 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2025.1.31-hbcca054_0.conda + sha256: bf832198976d559ab44d6cdb315642655547e26d826e34da67cbee6624cda189 + md5: 19f3a56f68d2fd06c516076bff482c52 + arch: x86_64 + platform: linux + license: ISC + purls: [] + size: 158144 + timestamp: 1738298224464 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2025.1.31-hf0a4a13_0.conda + sha256: 7e12816618173fe70f5c638b72adf4bfd4ddabf27794369bb17871c5bb75b9f9 + md5: 3569d6a9141adc64d2fe4797f3289e06 + arch: arm64 + platform: osx + license: ISC + purls: [] + size: 158425 + timestamp: 1738298167688 +- conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda + sha256: c920d23cd1fcf565031c679adb62d848af60d6fbb0edc2d50ba475cea4f0d8ab + md5: f22f4d4970e09d68a10b922cbb0408d3 + depends: + - __unix + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/click?source=hash-mapping + size: 84705 + timestamp: 1734858922844 +- conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + sha256: ab29d57dc70786c1269633ba3dff20288b81664d3ff8d21af995742e2bb03287 + md5: 962b9857ee8e7018c22f2776ffa0b2d7 + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/colorama?source=hash-mapping + size: 27011 + timestamp: 1733218222191 +- conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.11.11-py311hd8ed1ab_1.conda + noarch: generic + sha256: b9bb4486ba7b81d7264e92f346c9fa2d4a6c9678c28b33fb5d1652ecc7f82e26 + md5: 6aab9c45010dc5ed92215f89cdafa201 + depends: + - python 3.11.11.* + - python_abi * *_cp311 + license: Python-2.0 + purls: [] + size: 46068 + timestamp: 1733407866862 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-cudart-12.4.127-he02047a_2.conda + sha256: d8ad0be647dad6378119c110572bbf9f6b1e8c820393ed159d45f02588979c07 + md5: a748faa52331983fc3adcc3b116fe0e4 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-cudart_linux-64 12.4.127 h85509e4_2 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 22563 + timestamp: 1715710703269 +- conda: https://conda.anaconda.org/conda-forge/noarch/cuda-cudart_linux-64-12.4.127-h85509e4_2.conda + sha256: 1f1b3e0bf6b5e665860ecbdf509c1e02760c14d25e3f3893a712f90f7f8a5abc + md5: 329163110a96514802e9e64d971edf43 + depends: + - cuda-version >=12.4,<12.5.0a0 + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 186886 + timestamp: 1715710690964 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-cupti-12.4.127-he02047a_2.conda + sha256: db9ebc57fd583711bbdd12e54d00e4153a7b414f929f77fca2f44547c02204b8 + md5: 46422ef1b1161fb180027e50c598ecd0 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 1918773 + timestamp: 1715665119069 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-libraries-12.4.1-ha770c72_1.conda + sha256: cb30e83f33c7480caa68a1e35e6ff4102d17ff0a94239ca18555afff1df2f70e + md5: 6bb3f998485d4344a7539e0b218b3fc1 + depends: + - cuda-cudart 12.4.127.* + - cuda-nvrtc 12.4.127.* + - cuda-opencl 12.4.127.* + - libcublas 12.4.5.8.* + - libcufft 11.2.1.3.* + - libcufile 1.9.1.3.* + - libcurand 10.3.5.147.* + - libcusolver 11.6.1.9.* + - libcusparse 12.3.1.170.* + - libnpp 12.2.5.30.* + - libnvfatbin 12.4.127.* + - libnvjitlink 12.4.127.* + - libnvjpeg 12.3.1.117.* + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 20180 + timestamp: 1713304266920 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-nvrtc-12.4.127-he02047a_2.conda + sha256: c4aba5e152526db7cad7c8a5191497b0c6365c912ed845dc9c427d29893486a1 + md5: 80baf6262f4a1a0dde42d85aaa393402 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 18825627 + timestamp: 1715711095870 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-nvtx-12.4.127-he02047a_2.conda + sha256: 8f499785edaec6198a934e8a9dd1f8b6f79aabcc135962d6050dd7328c76d3dc + md5: 656a004b6e44f50ce71c65cab0d429b4 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 31691 + timestamp: 1715731339952 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-opencl-12.4.127-he02047a_1.conda + sha256: 75d912a70719a9d0bca9f234a79a857815d8feec3c54c145e6e41589de4ff5be + md5: 1e98deda07c14d26c80d124cf0eb011a + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - ocl-icd >=2.3.2,<3.0a0 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 30406 + timestamp: 1715711329543 +- conda: https://conda.anaconda.org/conda-forge/noarch/cuda-runtime-12.4.1-ha804496_0.conda + sha256: 61a593347c91a9bcd18329f7aa780bd1fb1e20dd1b61b16a451bd4a6b60dabf0 + md5: 48829f4ef6005ae8d4867b99168ff2b8 + depends: + - __linux + - cuda-libraries 12.4.1.* + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 20034 + timestamp: 1712683445348 +- conda: https://conda.anaconda.org/conda-forge/noarch/cuda-version-12.4-h3060b56_3.conda + sha256: 571d32fbd0dc8df6e85c14d1757549927e272af9c70b935d7e3a553ab0b0b4da + md5: c9a3fe8b957176e1a8452c6f3431b0d8 + constrains: + - cudatoolkit 12.4|12.4.* + - __cuda >=12 + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 21022 + timestamp: 1709765922936 +- pypi: https://files.pythonhosted.org/packages/32/b6/7517af5234378518f27ad35a7b24af9591bc500b8c1780929c1295999eb6/fastapi-0.115.9-py3-none-any.whl + name: fastapi + version: 0.115.9 + sha256: 4a439d7923e4de796bcc88b64e9754340fcd1574673cbd865ba8a99fe0d28c56 + requires_dist: + - starlette>=0.40.0,<0.46.0 + - pydantic>=1.7.4,!=1.8,!=1.8.1,!=2.0.0,!=2.0.1,!=2.1.0,<3.0.0 + - typing-extensions>=4.8.0 + - fastapi-cli[standard]>=0.0.5 ; extra == 'standard' + - httpx>=0.23.0 ; extra == 'standard' + - jinja2>=3.1.5 ; extra == 'standard' + - python-multipart>=0.0.18 ; extra == 'standard' + - email-validator>=2.0.0 ; extra == 'standard' + - uvicorn[standard]>=0.12.0 ; extra == 'standard' + - fastapi-cli[standard]>=0.0.5 ; extra == 'all' + - httpx>=0.23.0 ; extra == 'all' + - jinja2>=3.1.5 ; extra == 'all' + - python-multipart>=0.0.18 ; extra == 'all' + - itsdangerous>=1.1.0 ; extra == 'all' + - pyyaml>=5.3.1 ; extra == 'all' + - ujson>=4.0.1,!=4.0.2,!=4.1.0,!=4.2.0,!=4.3.0,!=5.0.0,!=5.1.0 ; extra == 'all' + - orjson>=3.2.1 ; extra == 'all' + - email-validator>=2.0.0 ; extra == 'all' + - uvicorn[standard]>=0.12.0 ; extra == 'all' + - pydantic-settings>=2.0.0 ; extra == 'all' + - pydantic-extra-types>=2.0.0 ; extra == 'all' + requires_python: '>=3.8' +- conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.17.0-pyhd8ed1ab_0.conda + sha256: 006d7e5a0c17a6973596dd86bfc80d74ce541144d2aee2d22d46fd41df560a63 + md5: 7f402b4a1007ee355bc50ce4d24d4a57 + depends: + - python >=3.9 + license: Unlicense + purls: + - pkg:pypi/filelock?source=hash-mapping + size: 17544 + timestamp: 1737517924333 +- conda: https://conda.anaconda.org/conda-forge/linux-64/gmp-6.3.0-hac33072_2.conda + sha256: 309cf4f04fec0c31b6771a5809a1909b4b3154a2208f52351e1ada006f4c750c + md5: c94a5994ef49749880a8139cf9afcbe1 + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: GPL-2.0-or-later OR LGPL-3.0-or-later + purls: [] + size: 460055 + timestamp: 1718980856608 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/gmp-6.3.0-h7bae524_2.conda + sha256: 76e222e072d61c840f64a44e0580c2503562b009090f55aa45053bf1ccb385dd + md5: eed7278dfbab727b56f2c0b64330814b + depends: + - __osx >=11.0 + - libcxx >=16 + arch: arm64 + platform: osx + license: GPL-2.0-or-later OR LGPL-3.0-or-later + purls: [] + size: 365188 + timestamp: 1718981343258 +- conda: https://conda.anaconda.org/conda-forge/linux-64/gmpy2-2.1.5-py311h0f6cedb_3.conda + sha256: 27aad6269fb3fcb80170a0c9f2108644b7560c56c88ab2d6da951059593c38ca + md5: 847d4e1e49a6aec4c130b2db001c3802 + depends: + - __glibc >=2.17,<3.0.a0 + - gmp >=6.3.0,<7.0a0 + - libgcc >=13 + - mpc >=1.3.1,<2.0a0 + - mpfr >=4.2.1,<5.0a0 + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 + arch: x86_64 + platform: linux + license: LGPL-3.0-or-later + license_family: LGPL + purls: + - pkg:pypi/gmpy2?source=hash-mapping + size: 202814 + timestamp: 1733462674178 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/gmpy2-2.1.5-py311hb5d9ff4_3.conda + sha256: 72c5ac6f1c358fda23f7d68c92c9d2dd4e458b329ece1ad2c3714991c9f8f5f6 + md5: 5ebaa44b9a984799aea445996f63f002 + depends: + - __osx >=11.0 + - gmp >=6.3.0,<7.0a0 + - mpc >=1.3.1,<2.0a0 + - mpfr >=4.2.1,<5.0a0 + - python >=3.11,<3.12.0a0 + - python >=3.11,<3.12.0a0 *_cpython + - python_abi 3.11.* *_cp311 + arch: arm64 + platform: osx + license: LGPL-3.0-or-later + license_family: LGPL + purls: + - pkg:pypi/gmpy2?source=hash-mapping + size: 147171 + timestamp: 1733462769936 +- conda: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda + sha256: 71e750d509f5fa3421087ba88ef9a7b9be11c53174af3aa4d06aff4c18b38e8e + md5: 8b189310083baabfb622af68fd9d3ae3 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 12129203 + timestamp: 1720853576813 +- pypi: https://files.pythonhosted.org/packages/76/c6/c88e154df9c4e1a2a66ccf0005a88dfb2650c1dffb6f5ce603dfbd452ce3/idna-3.10-py3-none-any.whl + name: idna + version: '3.10' + sha256: 946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3 + requires_dist: + - ruff>=0.6.2 ; extra == 'all' + - mypy>=1.11.2 ; extra == 'all' + - pytest>=8.3.2 ; extra == 'all' + - flake8>=7.1.1 ; extra == 'all' + requires_python: '>=3.6' +- conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + sha256: 598951ebdb23e25e4cec4bbff0ae369cec65ead80b50bc08b441d8e54de5cf03 + md5: f4b39bf00c69f56ac01e020ebfac066c + depends: + - python >=3.9 + - zipp >=0.5 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/importlib-metadata?source=compressed-mapping + size: 29141 + timestamp: 1737420302391 +- pypi: https://files.pythonhosted.org/packages/ef/a6/62565a6e1cf69e10f5727360368e451d4b7f58beeac6173dc9db836a5b46/iniconfig-2.0.0-py3-none-any.whl + name: iniconfig + version: 2.0.0 + sha256: b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374 + requires_python: '>=3.7' +- conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.5-pyhd8ed1ab_0.conda + sha256: 98977694b9ecaa3218662f843425f39501f81973c450f995eec68f1803ed71c3 + md5: 2752a6ed44105bfb18c9bef1177d9dcd + depends: + - markupsafe >=2.0 + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/jinja2?source=hash-mapping + size: 112561 + timestamp: 1734824044952 +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + sha256: 19d8bd5bb2fde910ec59e081eeb59529491995ce0d653a5209366611023a0b3a + md5: 4ebae00eae9705b0c3d6d1018a81d047 + depends: + - importlib-metadata >=4.8.3 + - jupyter_core >=4.12,!=5.0.* + - python >=3.9 + - python-dateutil >=2.8.2 + - pyzmq >=23.0 + - tornado >=6.2 + - traitlets >=5.3 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/jupyter-client?source=hash-mapping + size: 106342 + timestamp: 1733441040958 +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + sha256: 732b1e8536bc22a5a174baa79842d79db2f4956d90293dd82dc1b3f6099bcccd + md5: 0a2980dada0dd7fd0998f0342308b1b1 + depends: + - __unix + - platformdirs >=2.5 + - python >=3.8 + - traitlets >=5.3 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/jupyter-core?source=hash-mapping + size: 57671 + timestamp: 1727163547058 +- conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 + sha256: 150c05a6e538610ca7c43beb3a40d65c90537497a4f6a5f4d15ec0451b6f5ebb + md5: 30186d27e2c9fa62b45fb1476b7200e3 + depends: + - libgcc-ng >=10.3.0 + arch: x86_64 + platform: linux + license: LGPL-2.1-or-later + purls: [] + size: 117831 + timestamp: 1646151697040 +- conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda + sha256: 99df692f7a8a5c27cd14b5fb1374ee55e756631b9c3d659ed3ee60830249b238 + md5: 3f43953b7d3fb3aaa1d0d0723d91e368 + depends: + - keyutils >=1.6.1,<2.0a0 + - libedit >=3.1.20191231,<3.2.0a0 + - libedit >=3.1.20191231,<4.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - openssl >=3.3.1,<4.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 1370023 + timestamp: 1719463201255 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda + sha256: 4442f957c3c77d69d9da3521268cad5d54c9033f1a73f99cde0a3658937b159b + md5: c6dc8a0fdec13a0565936655c33069a1 + depends: + - __osx >=11.0 + - libcxx >=16 + - libedit >=3.1.20191231,<3.2.0a0 + - libedit >=3.1.20191231,<4.0a0 + - openssl >=3.3.1,<4.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 1155530 + timestamp: 1719463474401 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_4.conda + sha256: db73f38155d901a610b2320525b9dd3b31e4949215c870685fd92ea61b5ce472 + md5: 01f8d123c96816249efd255a31ad7712 + depends: + - __glibc >=2.17,<3.0.a0 + constrains: + - binutils_impl_linux-64 2.43 + arch: x86_64 + platform: linux + license: GPL-3.0-only + license_family: GPL + purls: [] + size: 671240 + timestamp: 1740155456116 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda + sha256: 143a586aa67d50622ef703de57b9d43f44945836d6568e0e7aa174bd8c45e0d4 + md5: 488f260ccda0afaf08acb286db439c2f + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + constrains: + - libabseil-static =20240722.0=cxx17* + - abseil-cpp =20240722.0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 1311599 + timestamp: 1736008414161 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_h07bc746_4.conda + sha256: 05fa5e5e908962b9c5aba95f962e2ca81d9599c4715aebe5e4ddb72b309d1770 + md5: c2d95bd7aa8d564a9bd7eca5e571a5b3 + depends: + - __osx >=11.0 + - libcxx >=18 + constrains: + - libabseil-static =20240722.0=cxx17* + - abseil-cpp =20240722.0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 1178260 + timestamp: 1736008642885 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-16_linux64_mkl.tar.bz2 + build_number: 16 + sha256: 24e656f13b402b6fceb88df386768445ab9beb657d451a8e5a88d4b3380cf7a4 + md5: 85f61af03fd291dae33150ffe89dc09a + depends: + - mkl >=2022.1.0,<2023.0a0 + constrains: + - liblapack 3.9.0 16_linux64_mkl + - liblapacke 3.9.0 16_linux64_mkl + - libcblas 3.9.0 16_linux64_mkl + - blas * mkl + - mkl <2025 + arch: x86_64 + platform: linux + track_features: + - blas_mkl + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 13102 + timestamp: 1660094562739 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-19_osxarm64_openblas.conda + build_number: 19 + sha256: 51e78e3c9fa57f3fec12936b760928715ba0ab5253d02815202f9ec4c2c9255d + md5: f50b1fd98593278e18319653cff9c475 + depends: + - libopenblas >=0.3.24,<0.3.25.0a0 + - libopenblas >=0.3.24,<1.0a0 + constrains: + - libcblas 3.9.0 19_osxarm64_openblas + - liblapack 3.9.0 19_osxarm64_openblas + - blas * openblas + - liblapacke 3.9.0 19_osxarm64_openblas + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 14817 + timestamp: 1697484577887 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-16_linux64_mkl.tar.bz2 + build_number: 16 + sha256: 892ba10508f22310ccfe748df1fd3b6c7f20e7b6f6b79e69ed337863551c1bd8 + md5: 361bf757b95488de76c4f123805742d3 + depends: + - libblas 3.9.0 16_linux64_mkl + constrains: + - liblapack 3.9.0 16_linux64_mkl + - liblapacke 3.9.0 16_linux64_mkl + - blas * mkl + - mkl <2025 + arch: x86_64 + platform: linux + track_features: + - blas_mkl + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 12791 + timestamp: 1660094570921 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-19_osxarm64_openblas.conda + build_number: 19 + sha256: 19b1c5e3ddd383ec14540336f4704938218d3c1db4707ae10d5357afb22cccc1 + md5: 5460a8d1beffd7f63994d891e6a20da4 + depends: + - libblas 3.9.0 19_osxarm64_openblas + constrains: + - liblapack 3.9.0 19_osxarm64_openblas + - blas * openblas + - liblapacke 3.9.0 19_osxarm64_openblas + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 14738 + timestamp: 1697484590682 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcublas-12.4.5.8-he02047a_2.conda + sha256: 168e664423e875f7107697dfa7935399675872ea8abffa92621db98007258d66 + md5: d446adae085aa1ff37c44b69988a6f06 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-nvrtc + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 240665617 + timestamp: 1715711552741 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcufft-11.2.1.3-he02047a_2.conda + sha256: 242e1ed210a85fc0dc2a4e86bf0b75120f1768ab66497502c5e6d69e801bf9dc + md5: d2641a67c207946ef96f1328c4a8e8ed + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 174980358 + timestamp: 1715711515585 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcufile-1.9.1.3-he02047a_2.conda + sha256: 7fa7a608d52064b724241e4026f0e0cc244c6f725623e2c26c810be99822fa28 + md5: a051267bcb1912467c81d802a7d3465e + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 924329 + timestamp: 1715720836466 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcurand-10.3.5.147-he02047a_2.conda + sha256: 7db821fc8f566dbb8d4e40dae62edb07d638db8c028d677a0063ece66872d19c + md5: 9c4886d513fd477df88d411cd274c202 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 41590169 + timestamp: 1715711553620 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcusolver-11.6.1.9-he02047a_2.conda + sha256: df4f8a94bffb59dc3da28fb5a892c1ef2553f8afd49f141d3e2da8c92f276a56 + md5: 9f6877f8936be962f598db5e9b8efc51 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libcublas >=12.4.5.8,<12.5.0a0 + - libcusparse >=12.3.1.170,<12.4.0a0 + - libgcc-ng >=12 + - libnvjitlink >=12.4.127,<12.5.0a0 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 81594879 + timestamp: 1715711788074 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcusparse-12.3.1.170-he02047a_2.conda + sha256: f2254e41c93a8c3529690c19350556708182ef699ca658c6554eeb7eb4b8c3de + md5: 1c4c7ff54dc5b947f2ab8f5ff8a28dae + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libnvjitlink >=12.4.127,<12.5.0a0 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 117818451 + timestamp: 1715711610677 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda + sha256: 776092346da87a2a23502e14d91eb0c32699c4a1522b7331537bd1c3751dcff5 + md5: 5b3e1610ff8bd5443476b91d618f5b77 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + purls: [] + size: 523505 + timestamp: 1736877862502 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda + sha256: d789471216e7aba3c184cd054ed61ce3f6dac6f87a50ec69291b9297f8c18724 + md5: c277e0a4d549b03ac1e9d6cbbe3d017b + depends: + - ncurses + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - ncurses >=6.5,<7.0a0 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 134676 + timestamp: 1738479519902 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda + sha256: 66aa216a403de0bb0c1340a88d1a06adaff66bae2cfd196731aa24db9859d631 + md5: 44083d2d2c2025afca315c7a172eab2b + depends: + - ncurses + - __osx >=11.0 + - ncurses >=6.5,<7.0a0 + arch: arm64 + platform: osx + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 107691 + timestamp: 1738479560845 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda + sha256: 56541b98447b58e52d824bd59d6382d609e11de1f8adf20b23143e353d2b8d26 + md5: db833e03127376d461e1e13e76f09b6c + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + constrains: + - expat 2.6.4.* + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 73304 + timestamp: 1730967041968 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.4-h286801f_0.conda + sha256: e42ab5ace927ee7c84e3f0f7d813671e1cf3529f5f06ee5899606630498c2745 + md5: 38d2656dd914feb0cab8c629370768bf + depends: + - __osx >=11.0 + constrains: + - expat 2.6.4.* + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 64693 + timestamp: 1730967175868 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_0.conda + sha256: 67a6c95e33ebc763c1adc3455b9a9ecde901850eb2fceb8e646cc05ef3a663da + md5: e3eb7806380bc8bcecba6d749ad5f026 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 53415 + timestamp: 1739260413716 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 + sha256: 41b3d13efb775e340e4dba549ab5c029611ea6918703096b2eaa9c015c0750ca + md5: 086914b672be056eb70fd4285b6783b6 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 39020 + timestamp: 1636488587153 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h767d61c_2.conda + sha256: 3a572d031cb86deb541d15c1875aaa097baefc0c580b54dc61f5edab99215792 + md5: ef504d1acbd74b7cc6849ef8af47dd03 + depends: + - __glibc >=2.17,<3.0.a0 + - _openmp_mutex >=4.5 + constrains: + - libgomp 14.2.0 h767d61c_2 + - libgcc-ng ==14.2.0=*_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 847885 + timestamp: 1740240653082 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_2.conda + sha256: fb7558c328b38b2f9d2e412c48da7890e7721ba018d733ebdfea57280df01904 + md5: a2222a6ada71fb478682efe483ce0f92 + depends: + - libgcc 14.2.0 h767d61c_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 53758 + timestamp: 1740240660904 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_2.conda + sha256: e05263e8960da03c341650f2a3ffa4ccae4e111cb198e8933a2908125459e5a6 + md5: fb54c4ea68b460c278d26eea89cfbcc3 + depends: + - libgfortran5 14.2.0 hf1ad2bd_2 + constrains: + - libgfortran-ng ==14.2.0=*_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 53733 + timestamp: 1740240690977 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda + sha256: 44e541b4821c96b28b27fef5630883a60ce4fee91fd9c79f25a199f8f73f337b + md5: 4a55d9e169114b2b90d3ec4604cd7bbf + depends: + - libgfortran5 13.2.0 hf226fd6_3 + arch: arm64 + platform: osx + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 110233 + timestamp: 1707330749033 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-ng-14.2.0-h69a702a_2.conda + sha256: 688a5968852e677d2a64974c8869ffb120eac21997ced7d15c599f152ef6857e + md5: 4056c857af1a99ee50589a941059ec55 + depends: + - libgfortran 14.2.0 h69a702a_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 53781 + timestamp: 1740240884760 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hf1ad2bd_2.conda + sha256: c17b7cf3073a1f4e1f34d50872934fa326346e104d3c445abc1e62481ad6085c + md5: 556a4fdfac7287d349b8f09aba899693 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14.2.0 + constrains: + - libgfortran 14.2.0 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 1461978 + timestamp: 1740240671964 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda + sha256: bafc679eedb468a86aa4636061c55966186399ee0a04b605920d208d97ac579a + md5: 66ac81d54e95c534ae488726c1f698ea + depends: + - llvm-openmp >=8.0.0 + constrains: + - libgfortran 5.0.0 13_2_0_*_3 + arch: arm64 + platform: osx + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 997381 + timestamp: 1707330687590 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libhwloc-2.11.2-default_h0d58e46_1001.conda + sha256: d14c016482e1409ae1c50109a9ff933460a50940d2682e745ab1c172b5282a69 + md5: 804ca9e91bcaea0824a341d55b1684f2 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + - libxml2 >=2.13.4,<3.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 2423200 + timestamp: 1731374922090 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h4ce23a2_1.conda + sha256: 18a4afe14f731bfb9cf388659994263904d20111e42f841e9eea1bb6f91f4ab4 + md5: e796ff8ddc598affdf7c173d6145f087 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: LGPL-2.1-only + purls: [] + size: 713084 + timestamp: 1740128065462 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-16_linux64_mkl.tar.bz2 + build_number: 16 + sha256: d6201f860b2d76ed59027e69c2bbad6d1cb211a215ec9705cc487cde488fa1fa + md5: a2f166748917d6d6e4707841ca1f519e + depends: + - libblas 3.9.0 16_linux64_mkl + constrains: + - blas * mkl + - liblapacke 3.9.0 16_linux64_mkl + - libcblas 3.9.0 16_linux64_mkl + - mkl <2025 + arch: x86_64 + platform: linux + track_features: + - blas_mkl + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 12791 + timestamp: 1660094578903 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-19_osxarm64_openblas.conda + build_number: 19 + sha256: f19cff537403c9feed98c7e18259022102b087f2b72a757e8a417476b9cf30c1 + md5: 3638eacb084c374f41f9efa40d20a47b + depends: + - libblas 3.9.0 19_osxarm64_openblas + constrains: + - libcblas 3.9.0 19_osxarm64_openblas + - blas * openblas + - liblapacke 3.9.0 19_osxarm64_openblas + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 14721 + timestamp: 1697484603691 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblapacke-3.9.0-16_linux64_mkl.tar.bz2 + build_number: 16 + sha256: 935036dc46c483cba8288c6de58d461ab3f42915715ffe9485105ad1dd203a0e + md5: 44ccc4d4dca6a8d57fa17442bc64b5a1 + depends: + - libblas 3.9.0 16_linux64_mkl + - libcblas 3.9.0 16_linux64_mkl + - liblapack 3.9.0 16_linux64_mkl + constrains: + - blas * mkl + - mkl <2025 + arch: x86_64 + platform: linux + track_features: + - blas_mkl + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 12793 + timestamp: 1660094586875 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda + sha256: cad52e10319ca4585bc37f0bc7cce99ec7c15dc9168e42ccb96b741b0a27db3f + md5: 42d5b6a0f30d3c10cd88cb8584fda1cb + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: 0BSD + purls: [] + size: 111357 + timestamp: 1738525339684 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.4-h39f12f2_0.conda + sha256: 560c59d3834cc652a84fb45531bd335ad06e271b34ebc216e380a89798fe8e2c + md5: e3fd1f8320a100f2b210e690a57cd615 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: 0BSD + purls: [] + size: 98945 + timestamp: 1738525462560 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnpp-12.2.5.30-he02047a_2.conda + sha256: d8c97716825955c48681f4a3cde2f0cbbacc77c91b4cd944d4906f63385487df + md5: a96a1edd18bee676cf2dcca251d3d6a4 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 99461229 + timestamp: 1715711634268 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda + sha256: 26d77a3bb4dceeedc2a41bd688564fe71bf2d149fdcf117049970bc02ff1add6 + md5: 30fd6e37fe21f86f4bd26d6ee73eeec7 + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: LGPL-2.1-only + license_family: GPL + purls: [] + size: 33408 + timestamp: 1697359010159 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnvfatbin-12.4.127-he02047a_2.conda + sha256: d40f37532f86cbbe63439489be0e88561819190392cc519c69365b3fc47a2c5b + md5: d746b76642b4ac6e40f1219405672beb + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 792025 + timestamp: 1715711761341 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnvjitlink-12.4.127-he02047a_2.conda + sha256: 31382c8ef388a51bd2c283a239e037b8b30f9c7ecf6ec9744824445b59db39b6 + md5: 303845d6c48bf4185dc4138634650468 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 16571958 + timestamp: 1715711715842 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnvjpeg-12.3.1.117-he02047a_2.conda + sha256: 49a182f8da4ba30fbfee9692976d9da349371175c9c9576768d4754a51fef326 + md5: 8f3ed0e41a4b505de40b4f96f4bfb0fa + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 2491500 + timestamp: 1715711780068 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.24-openmp_hd76b1f2_0.conda + sha256: 21edfdf620ac5c93571aab452199b6b4622c445441dad88ab4d2eb326a7b91b3 + md5: aacb05989f358affe1bafd4ea7294db4 + depends: + - libgfortran 5.* + - libgfortran5 >=12.3.0 + - llvm-openmp >=15.0.7 + constrains: + - openblas >=0.3.24,<0.3.25.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 2849225 + timestamp: 1693784744674 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda + sha256: 51125ebb8b7152e4a4e69fd2398489c4ec8473195c27cde3cbdf1cb6d18c5493 + md5: d8703f1ffe5a06356f06467f1d0b9464 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 2960815 + timestamp: 1735577210663 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.3-h3bd63a1_1.conda + sha256: f58a16b13ad53346903c833e266f83c3d770a43a432659b98710aed85ca885e7 + md5: bdbfea4cf45ae36652c6bbcc2e7ebe91 + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=18 + - libzlib >=1.3.1,<2.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 2271580 + timestamp: 1735576361997 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsentencepiece-0.2.0-h8e10757_10.conda + sha256: dc399e0f04a09f8c1807c3b36e578eb81f81891c0ddf21de9c1fb9f048ce4031 + md5: 4f43dbcfacd3cc9a183dd3a48b94d3c0 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 823649 + timestamp: 1735627841126 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsentencepiece-0.2.0-he13a0af_10.conda + sha256: 3347a8840d085ce1661928e736229f068d56c84312fbed90886e059023d85611 + md5: 1f67e5e30edd56e0a0bf6df6bb711a9d + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 754657 + timestamp: 1735628030895 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda + sha256: 0105bd108f19ea8e6a78d2d994a6d4a8db16d19a41212070d2d1d48a63c34161 + md5: a587892d3c13b6621a6091be690dbca2 + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: ISC + purls: [] + size: 205978 + timestamp: 1716828628198 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda + sha256: fade8223e1e1004367d7101dd17261003b60aa576df6d7802191f8972f7470b1 + md5: a7ce36e284c5faaf93c220dfc39e3abd + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: ISC + purls: [] + size: 164972 + timestamp: 1716828607917 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.49.1-hee588c1_1.conda + sha256: 7a09eef804ef7cf4d88215c2297eabb72af8ad0bd5b012060111c289f14bbe7d + md5: 73cea06049cc4174578b432320a003b8 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux + license: Unlicense + purls: [] + size: 915956 + timestamp: 1739953155793 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.1-h3f77e49_1.conda + sha256: 266639fb10ca92287961574b0b4d6031fa40dd9d723d64a0fcb08513a24dab03 + md5: c83357a21092bd952933c36c5cb4f4d6 + depends: + - __osx >=11.0 + - libzlib >=1.3.1,<2.0a0 + arch: arm64 + platform: osx + license: Unlicense + purls: [] + size: 898767 + timestamp: 1739953312379 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-h8f9b012_2.conda + sha256: 8f5bd92e4a24e1d35ba015c5252e8f818898478cb3bc50bd8b12ab54707dc4da + md5: a78c856b6dc6bf4ea8daeb9beaaa3fb0 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc 14.2.0 h767d61c_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 3884556 + timestamp: 1740240685253 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_2.conda + sha256: e86f38b007cf97cc2c67cd519f2de12a313c4ee3f5ef11652ad08932a5e34189 + md5: c75da67f045c2627f59e6fcb5f4e3a9b + depends: + - libstdcxx 14.2.0 h8f9b012_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 53830 + timestamp: 1740240722530 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda + sha256: 787eb542f055a2b3de553614b25f09eefb0a0931b0c87dbcce6efdfd92f04f18 + md5: 40b61aab5c7ba9ff276c41cfffe6b80b + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 33601 + timestamp: 1680112270483 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda + sha256: 6ae68e0b86423ef188196fff6207ed0c8195dd84273cb5623b85aa08033a410c + md5: 5aa797f8787fe7a17d1b0821485b5adc + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: LGPL-2.1-or-later + purls: [] + size: 100393 + timestamp: 1702724383534 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.6-h8d12d68_0.conda + sha256: db8af71ea9c0ae95b7cb4a0f59319522ed2243942437a1200ceb391493018d85 + md5: 328382c0e0ca648e5c189d5ec336c604 + depends: + - __glibc >=2.17,<3.0.a0 + - icu >=75.1,<76.0a0 + - libgcc >=13 + - libiconv >=1.18,<2.0a0 + - liblzma >=5.6.4,<6.0a0 + - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 690296 + timestamp: 1739952967309 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda + sha256: d4bfe88d7cb447768e31650f06257995601f89076080e76df55e3112d4e47dc4 + md5: edb0dca6bc32e4f4789199455a1dbeb8 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + constrains: + - zlib 1.3.1 *_2 + arch: x86_64 + platform: linux + license: Zlib + license_family: Other + purls: [] + size: 60963 + timestamp: 1727963148474 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda + sha256: ce34669eadaba351cd54910743e6a2261b67009624dbc7daeeafdef93616711b + md5: 369964e85dc26bfe78f41399b366c435 + depends: + - __osx >=11.0 + constrains: + - zlib 1.3.1 *_2 + arch: arm64 + platform: osx + license: Zlib + license_family: Other + purls: [] + size: 46438 + timestamp: 1727963202283 +- conda: https://conda.anaconda.org/conda-forge/linux-64/llvm-openmp-15.0.7-h0cdce71_0.conda + sha256: 7c67d383a8b1f3e7bf9e046e785325c481f6868194edcfb9d78d261da4ad65d4 + md5: 589c9a3575a050b583241c3d688ad9aa + depends: + - libzlib >=1.2.13,<2.0.0a0 + constrains: + - openmp 15.0.7|15.0.7.* + arch: x86_64 + platform: linux + license: Apache-2.0 WITH LLVM-exception + license_family: APACHE + purls: [] + size: 3268766 + timestamp: 1673584331056 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-15.0.7-h7cfbb63_0.conda + sha256: 6cc4cf021fc1f06df3b97598bf9583fe7a04fad6a4eef9882558f7932f362bc0 + md5: 358164e15a9320f11b84a53fb8d8e446 + constrains: + - openmp 15.0.7|15.0.7.* + arch: arm64 + platform: osx + license: Apache-2.0 WITH LLVM-exception + license_family: APACHE + purls: [] + size: 263326 + timestamp: 1673584823527 +- conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py311h2dc5d0c_1.conda + sha256: 0291d90706ac6d3eea73e66cd290ef6d805da3fad388d1d476b8536ec92ca9a8 + md5: 6565a715337ae279e351d0abd8ffe88a + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 + constrains: + - jinja2 >=3.0.0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/markupsafe?source=hash-mapping + size: 25354 + timestamp: 1733219879408 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py311h4921393_1.conda + sha256: 4f738a7c80e34e5e5d558e946b06d08e7c40e3cc4bdf08140bf782c359845501 + md5: 249e2f6f5393bb6b36b3d3a3eebdcdf9 + depends: + - __osx >=11.0 + - python >=3.11,<3.12.0a0 + - python >=3.11,<3.12.0a0 *_cpython + - python_abi 3.11.* *_cp311 + constrains: + - jinja2 >=3.0.0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/markupsafe?source=hash-mapping + size: 24976 + timestamp: 1733219849253 +- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022718-release.conda + noarch: python + sha256: f3dcb14fed5470c0fc521542cbd2f1c56ca7e46d560f46176b8f926198cb3cbd + md5: 01fe5e0cf46c84a6345e323ad1316764 + depends: + - max-core ==25.2.0.dev2025022718 release + - max-python ==25.2.0.dev2025022718 release + - mojo-jupyter ==25.2.0.dev2025022718 release + - mblack ==25.2.0.dev2025022718 release + license: LicenseRef-Modular-Proprietary + size: 9905 + timestamp: 1740680254354 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022718-release.conda + sha256: 847d5767109a305d7bcad4ac29248a74a384034692934a0c54b00a590c27094a + md5: fc5a9ae36c7805979bd58ca55a25066f + depends: + - mblack ==25.2.0.dev2025022718 release + license: LicenseRef-Modular-Proprietary + size: 249811868 + timestamp: 1740680254354 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022718-release.conda + sha256: fb28d9e61aa507ea84b470082d3dc96844a24fe672d4e4c57e832655c5d0a202 + md5: dd8734453f7276a258f3351cc5c506c3 + depends: + - mblack ==25.2.0.dev2025022718 release + license: LicenseRef-Modular-Proprietary + size: 217273450 + timestamp: 1740681819160 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022718-release.conda + noarch: python + sha256: 831b4d62f66f0083321121c6ba25dedab3ee41d5e9f19d9752969592214af398 + md5: f828ace91aa057e4774e84ad459adccf + depends: + - max-core ==25.2.0.dev2025022718 release + - click >=8.0.0 + - numpy >=1.18,<2.0 + - sentencepiece >=0.2.0 + - tqdm >=4.67.1 + constrains: + - aiohttp >=3.11.12 + - fastapi >=0.114.2 + - gguf >=0.14.0 + - hf-transfer >=0.1.9 + - httpx >=0.28.1 + - huggingface_hub >=0.24.0 + - nvitop >=1.4.1 + - opentelemetry-api >=1.29.0 + - opentelemetry-exporter-otlp-proto-http >=1.27.0 + - opentelemetry-exporter-prometheus <1.0.0 + - opentelemetry-sdk >=1.29.0,<2.0 + - pillow >=10.3.0 + - prometheus_client >=0.21.0 + - prometheus-async >=22.2.0 + - psutil >=6.1.1 + - pydantic + - pydantic-settings >=2.7.1 + - pyinstrument >=5.0.1 + - python-json-logger >=2.0.7 + - requests >=2.32.3 + - rich >=13.9.4 + - safetensors >=0.5.2 + - sentinel >=0.3.0 + - sse-starlette >=2.1.2 + - tokenizers >=0.19.0 + - pytorch >=2.2.2,<=2.5.1 + - transformers >=4.40.1 + - uvicorn >=0.34.0 + - uvloop >=0.21.0 + - xgrammar ==0.1.11 + license: LicenseRef-Modular-Proprietary + size: 123584411 + timestamp: 1740680254354 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022718-release.conda + noarch: python + sha256: 7da9f4655082bb64c2b0cc996ffefa0ce5c49744854ed77a9b0d000e27cf5a55 + md5: b16d498a148aa61dca2a6bfec5cb8e46 + depends: + - max-core ==25.2.0.dev2025022718 release + - click >=8.0.0 + - numpy >=1.18,<2.0 + - sentencepiece >=0.2.0 + - tqdm >=4.67.1 + constrains: + - aiohttp >=3.11.12 + - fastapi >=0.114.2 + - gguf >=0.14.0 + - hf-transfer >=0.1.9 + - httpx >=0.28.1 + - huggingface_hub >=0.24.0 + - nvitop >=1.4.1 + - opentelemetry-api >=1.29.0 + - opentelemetry-exporter-otlp-proto-http >=1.27.0 + - opentelemetry-exporter-prometheus <1.0.0 + - opentelemetry-sdk >=1.29.0,<2.0 + - pillow >=10.3.0 + - prometheus_client >=0.21.0 + - prometheus-async >=22.2.0 + - psutil >=6.1.1 + - pydantic + - pydantic-settings >=2.7.1 + - pyinstrument >=5.0.1 + - python-json-logger >=2.0.7 + - requests >=2.32.3 + - rich >=13.9.4 + - safetensors >=0.5.2 + - sentinel >=0.3.0 + - sse-starlette >=2.1.2 + - tokenizers >=0.19.0 + - pytorch >=2.2.2,<=2.5.1 + - transformers >=4.40.1 + - uvicorn >=0.34.0 + - uvloop >=0.21.0 + - xgrammar ==0.1.11 + license: LicenseRef-Modular-Proprietary + size: 112658409 + timestamp: 1740681819160 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022718-release.conda + noarch: python + sha256: ff042a8abfed0e2e36b207e3d4f59a2b4577dea7f099b08d1aaef128ab796f09 + md5: 719ca7123d53415adcdd7f0cb8396c51 + depends: + - python >=3.9,<3.13 + - click >=8.0.0 + - mypy_extensions >=0.4.3 + - packaging >=22.0 + - pathspec >=0.9.0 + - platformdirs >=2 + - typing_extensions >=v4.12.2 + - python + license: MIT + size: 130852 + timestamp: 1740680254353 +- conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-2022.1.0-h84fe81f_915.tar.bz2 + sha256: 767318c4f2057822a7ebc238d6065ce12c6ae60df4ab892758adb79b1057ce02 + md5: b9c8f925797a93dbff45e1626b025a6b + depends: + - _openmp_mutex * *_llvm + - _openmp_mutex >=4.5 + - llvm-openmp >=14.0.3 + - tbb 2021.* + arch: x86_64 + platform: linux + license: LicenseRef-ProprietaryIntel + license_family: Proprietary + purls: [] + size: 209326825 + timestamp: 1652946040193 +- conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-devel-2022.1.0-ha770c72_916.tar.bz2 + sha256: 93d957608b17ada3039ff0acad2b8596451caa6829b3502fe87375e639ffc34e + md5: 69ba49e445f87aea2cba343a71a35ca2 + depends: + - mkl 2022.1.0 h84fe81f_915 + - mkl-include 2022.1.0 h84fe81f_915 + arch: x86_64 + platform: linux + license: LicenseRef-ProprietaryIntel + license_family: Proprietary + purls: [] + size: 25614 + timestamp: 1652946458276 +- conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-include-2022.1.0-h84fe81f_915.tar.bz2 + sha256: 63415fe64e99f8323d0191d45ea5b1ec3973317e728b9071267ffb7ff3b38364 + md5: 2dcd1acca05c11410d4494d7fc7dfa2a + arch: x86_64 + platform: linux + license: LicenseRef-ProprietaryIntel + license_family: Proprietary + purls: [] + size: 762563 + timestamp: 1652946186347 +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022718-release.conda + noarch: python + sha256: 19c33e23b27e240fee0b2a1d56921802ac88558dc2da417837cd590175561e16 + md5: 6b8d00b15817db11e026f824f7f0ba14 + depends: + - max-core ==25.2.0.dev2025022718 release + - python >=3.9,<3.13 + - jupyter_client >=8.6.2,<8.7 + - python + license: LicenseRef-Modular-Proprietary + size: 22981 + timestamp: 1740680254354 +- conda: https://conda.anaconda.org/conda-forge/linux-64/mpc-1.3.1-h24ddda3_1.conda + sha256: 1bf794ddf2c8b3a3e14ae182577c624fa92dea975537accff4bc7e5fea085212 + md5: aa14b9a5196a6d8dd364164b7ce56acf + depends: + - __glibc >=2.17,<3.0.a0 + - gmp >=6.3.0,<7.0a0 + - libgcc >=13 + - mpfr >=4.2.1,<5.0a0 + arch: x86_64 + platform: linux + license: LGPL-3.0-or-later + license_family: LGPL + purls: [] + size: 116777 + timestamp: 1725629179524 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/mpc-1.3.1-h8f1351a_1.conda + sha256: 2700899ad03302a1751dbf2bca135407e470dd83ac897ab91dd8675d4300f158 + md5: a5635df796b71f6ca400fc7026f50701 + depends: + - __osx >=11.0 + - gmp >=6.3.0,<7.0a0 + - mpfr >=4.2.1,<5.0a0 + arch: arm64 + platform: osx + license: LGPL-3.0-or-later + license_family: LGPL + purls: [] + size: 104766 + timestamp: 1725629165420 +- conda: https://conda.anaconda.org/conda-forge/linux-64/mpfr-4.2.1-h90cbb55_3.conda + sha256: f25d2474dd557ca66c6231c8f5ace5af312efde1ba8290a6ea5e1732a4e669c0 + md5: 2eeb50cab6652538eee8fc0bc3340c81 + depends: + - __glibc >=2.17,<3.0.a0 + - gmp >=6.3.0,<7.0a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: LGPL-3.0-only + license_family: LGPL + purls: [] + size: 634751 + timestamp: 1725746740014 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/mpfr-4.2.1-hb693164_3.conda + sha256: 4463e4e2aba7668e37a1b8532859191b4477a6f3602a5d6b4d64ad4c4baaeac5 + md5: 4e4ea852d54cc2b869842de5044662fb + depends: + - __osx >=11.0 + - gmp >=6.3.0,<7.0a0 + arch: arm64 + platform: osx + license: LGPL-3.0-only + license_family: LGPL + purls: [] + size: 345517 + timestamp: 1725746730583 +- conda: https://conda.anaconda.org/conda-forge/noarch/mpmath-1.3.0-pyhd8ed1ab_1.conda + sha256: 7d7aa3fcd6f42b76bd711182f3776a02bef09a68c5f117d66b712a6d81368692 + md5: 3585aa87c43ab15b167b574cd73b057b + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/mpmath?source=hash-mapping + size: 439705 + timestamp: 1733302781386 +- conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda + sha256: 1895f47b7d68581a6facde5cb13ab8c2764c2e53a76bd746f8f98910dc4e08fe + md5: 29097e7ea634a45cc5386b95cac6568f + depends: + - python >=3.9 + license: MIT + license_family: MIT + purls: + - pkg:pypi/mypy-extensions?source=hash-mapping + size: 10854 + timestamp: 1733230986902 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda + sha256: 3fde293232fa3fca98635e1167de6b7c7fda83caf24b9d6c91ec9eefb4f4d586 + md5: 47e340acb35de30501a76c7c799c41d7 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: X11 AND BSD-3-Clause + purls: [] + size: 891641 + timestamp: 1738195959188 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda + sha256: 2827ada40e8d9ca69a153a45f7fd14f32b2ead7045d3bbb5d10964898fe65733 + md5: 068d497125e4bf8a66bf707254fff5ae + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: X11 AND BSD-3-Clause + purls: [] + size: 797030 + timestamp: 1738196177597 +- conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda + sha256: 39625cd0c9747fa5c46a9a90683b8997d8b9649881b3dc88336b13b7bdd60117 + md5: fd40bf7f7f4bc4b647dc8512053d9873 + depends: + - python >=3.10 + - python + constrains: + - numpy >=1.24 + - scipy >=1.10,!=1.11.0,!=1.11.1 + - matplotlib >=3.7 + - pandas >=2.0 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 1265008 + timestamp: 1731521053408 +- conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py311h64a7726_0.conda + sha256: 3f4365e11b28e244c95ba8579942b0802761ba7bb31c026f50d1a9ea9c728149 + md5: a502d7aad449a1206efb366d6a12c52d + depends: + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - libgcc-ng >=12 + - liblapack >=3.9.0,<4.0a0 + - libstdcxx-ng >=12 + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 + constrains: + - numpy-base <0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/numpy?source=hash-mapping + size: 8065890 + timestamp: 1707225944355 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py311h7125741_0.conda + sha256: 160a52a01fea44fe9753a2ed22cf13d7b55c8a89ea0b8738546fdbf4795d6514 + md5: 3160b93669a0def35a7a8158ebb33816 + depends: + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - libcxx >=16 + - liblapack >=3.9.0,<4.0a0 + - python >=3.11,<3.12.0a0 + - python >=3.11,<3.12.0a0 *_cpython + - python_abi 3.11.* *_cp311 + constrains: + - numpy-base <0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/numpy?source=hash-mapping + size: 6652352 + timestamp: 1707226297967 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ocl-icd-2.3.2-hb9d3cd8_2.conda + sha256: 96ddd13054032fabd54636f634d50bc74d10d8578bc946405c429b2d895db6f2 + md5: 2e8d2b469559d6b2cb6fd4b34f9c8d7f + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - opencl-headers >=2024.10.24 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 94934 + timestamp: 1732915114536 +- conda: https://conda.anaconda.org/conda-forge/linux-64/opencl-headers-2024.10.24-h5888daf_0.conda + sha256: 7e1d3ad55d4ad3ddf826e205d4603b9ed40c5e655a9dfd66b56f459d7ba14db3 + md5: 3ba02cce423fdac1a8582bd6bb189359 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 54060 + timestamp: 1732912937444 +- conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.1-h7b32b05_0.conda + sha256: cbf62df3c79a5c2d113247ddea5658e9ff3697b6e741c210656e239ecaf1768f + md5: 41adf927e746dc75ecf0ef841c454e48 + depends: + - __glibc >=2.17,<3.0.a0 + - ca-certificates + - libgcc >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 2939306 + timestamp: 1739301879343 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.1-h81ee809_0.conda + sha256: 4f8e2389e1b711b44182a075516d02c80fa7a3a7e25a71ff1b5ace9eae57a17a + md5: 75f9f0c7b1740017e2db83a53ab9a28e + depends: + - __osx >=11.0 + - ca-certificates + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 2934522 + timestamp: 1739301896733 +- conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + sha256: da157b19bcd398b9804c5c52fc000fcb8ab0525bdb9c70f95beaa0bb42f85af1 + md5: 3bfed7e6228ebf2f7b9eaa47f1b4e2aa + depends: + - python >=3.8 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/packaging?source=hash-mapping + size: 60164 + timestamp: 1733203368787 +- conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + sha256: 9f64009cdf5b8e529995f18e03665b03f5d07c0b17445b8badef45bde76249ee + md5: 617f15191456cc6a13db418a275435e5 + depends: + - python >=3.9 + license: MPL-2.0 + license_family: MOZILLA + purls: + - pkg:pypi/pathspec?source=hash-mapping + size: 41075 + timestamp: 1733233471940 +- conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + sha256: bb50f6499e8bc1d1a26f17716c97984671121608dc0c3ecd34858112bce59a27 + md5: 577852c7e53901ddccc7e6a9959ddebe + depends: + - python >=3.9 + license: MIT + license_family: MIT + purls: + - pkg:pypi/platformdirs?source=hash-mapping + size: 20448 + timestamp: 1733232756001 +- pypi: https://files.pythonhosted.org/packages/88/5f/e351af9a41f866ac3f1fac4ca0613908d9a41741cfcf2228f4ad853b697d/pluggy-1.5.0-py3-none-any.whl + name: pluggy + version: 1.5.0 + sha256: 44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669 + requires_dist: + - pre-commit ; extra == 'dev' + - tox ; extra == 'dev' + - pytest ; extra == 'testing' + - pytest-benchmark ; extra == 'testing' + requires_python: '>=3.8' +- pypi: https://files.pythonhosted.org/packages/f4/3c/8cc1cc84deffa6e25d2d0c688ebb80635dfdbf1dbea3e30c541c8cf4d860/pydantic-2.10.6-py3-none-any.whl + name: pydantic + version: 2.10.6 + sha256: 427d664bf0b8a2b34ff5dd0f5a18df00591adcee7198fbd71981054cef37b584 + requires_dist: + - annotated-types>=0.6.0 + - pydantic-core==2.27.2 + - typing-extensions>=4.12.2 + - email-validator>=2.0.0 ; extra == 'email' + - tzdata ; python_full_version >= '3.9' and platform_system == 'Windows' and extra == 'timezone' + requires_python: '>=3.8' +- pypi: https://files.pythonhosted.org/packages/9e/e3/71fe85af2021f3f386da42d291412e5baf6ce7716bd7101ea49c810eda90/pydantic_core-2.27.2-cp311-cp311-macosx_11_0_arm64.whl + name: pydantic-core + version: 2.27.2 + sha256: 26f32e0adf166a84d0cb63be85c562ca8a6fa8de28e5f0d92250c6b7e9e2aff7 + requires_dist: + - typing-extensions>=4.6.0,!=4.7.0 + requires_python: '>=3.8' +- pypi: https://files.pythonhosted.org/packages/a8/7c/b860618c25678bbd6d1d99dbdfdf0510ccb50790099b963ff78a124b754f/pydantic_core-2.27.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + name: pydantic-core + version: 2.27.2 + sha256: 1c1fd185014191700554795c99b347d64f2bb637966c4cfc16998a0ca700d048 + requires_dist: + - typing-extensions>=4.6.0,!=4.7.0 + requires_python: '>=3.8' +- pypi: https://files.pythonhosted.org/packages/11/92/76a1c94d3afee238333bc0a42b82935dd8f9cf8ce9e336ff87ee14d9e1cf/pytest-8.3.4-py3-none-any.whl + name: pytest + version: 8.3.4 + sha256: 50e16d954148559c9a74109af1eaf0c945ba2d8f30f0a3d3335edde19788b6f6 + requires_dist: + - colorama ; sys_platform == 'win32' + - exceptiongroup>=1.0.0rc8 ; python_full_version < '3.11' + - iniconfig + - packaging + - pluggy>=1.5,<2 + - tomli>=1 ; python_full_version < '3.11' + - argcomplete ; extra == 'dev' + - attrs>=19.2 ; extra == 'dev' + - hypothesis>=3.56 ; extra == 'dev' + - mock ; extra == 'dev' + - pygments>=2.7.2 ; extra == 'dev' + - requests ; extra == 'dev' + - setuptools ; extra == 'dev' + - xmlschema ; extra == 'dev' + requires_python: '>=3.8' +- conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.11.11-h9e4cc4f_1_cpython.conda + build_number: 1 + sha256: b29ce0836fce55bdff8d5c5b71c4921a23f87d3b950aea89a9e75784120b06b0 + md5: 8387070aa413ce9a8cc35a509fae938b + depends: + - __glibc >=2.17,<3.0.a0 + - bzip2 >=1.0.8,<2.0a0 + - ld_impl_linux-64 >=2.36.1 + - libexpat >=2.6.4,<3.0a0 + - libffi >=3.4,<4.0a0 + - libgcc >=13 + - liblzma >=5.6.3,<6.0a0 + - libnsl >=2.0.1,<2.1.0a0 + - libsqlite >=3.47.0,<4.0a0 + - libuuid >=2.38.1,<3.0a0 + - libxcrypt >=4.4.36 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.4.0,<4.0a0 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + constrains: + - python_abi 3.11.* *_cp311 + arch: x86_64 + platform: linux + license: Python-2.0 + purls: [] + size: 30624804 + timestamp: 1733409665928 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.11.11-hc22306f_1_cpython.conda + build_number: 1 + sha256: 94e198f6a5affa1431401fca7e3b27fda68c59f5ee726083288bff1f6bed8c7f + md5: 8d81dcd0be5bdcdd98e0f2482bf63784 + depends: + - __osx >=11.0 + - bzip2 >=1.0.8,<2.0a0 + - libexpat >=2.6.4,<3.0a0 + - libffi >=3.4,<4.0a0 + - liblzma >=5.6.3,<6.0a0 + - libsqlite >=3.47.0,<4.0a0 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.4.0,<4.0a0 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + constrains: + - python_abi 3.11.* *_cp311 + arch: arm64 + platform: osx + license: Python-2.0 + purls: [] + size: 14647146 + timestamp: 1733409012105 +- conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + sha256: a50052536f1ef8516ed11a844f9413661829aa083304dc624c5925298d078d79 + md5: 5ba79d7c71f03c678c8ead841f347d6e + depends: + - python >=3.9 + - six >=1.5 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/python-dateutil?source=hash-mapping + size: 222505 + timestamp: 1733215763718 +- conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.11-5_cp311.conda + build_number: 5 + sha256: 2660b8059b3ee854bc5d3c6b1fce946e5bd2fe8fbca7827de2c5885ead6209de + md5: 139a8d40c8a2f430df31048949e450de + constrains: + - python 3.11.* *_cpython + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 6211 + timestamp: 1723823324668 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.11-5_cp311.conda + build_number: 5 + sha256: adc05729b7e0aca7b436e60a86f10822a92185dfcb48d66d6444e3629d3a1f6a + md5: 3b855e3734344134cb56c410f729c340 + constrains: + - python 3.11.* *_cpython + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 6308 + timestamp: 1723823096865 +- conda: https://conda.anaconda.org/pytorch/linux-64/pytorch-2.5.1-py3.11_cuda12.4_cudnn9.1.0_0.tar.bz2 + sha256: cc2ee559c2104436d8752182986de576d1cc697e2111045a6cc10ac3ed4fb21f + md5: 4e8e3c2f5231d79c0b3540c16d98e542 + depends: + - blas * mkl + - filelock + - jinja2 + - llvm-openmp <16 + - mkl >=2018 + - networkx + - python >=3.11,<3.12.0a0 + - pytorch-cuda >=12.4,<12.5 + - pytorch-mutex 1.0 cuda + - pyyaml + - sympy + - torchtriton 3.1.0 + - typing_extensions + constrains: + - cpuonly <0 + arch: x86_64 + platform: linux + license: BSD 3-Clause + license_family: BSD + purls: + - pkg:pypi/torch?source=hash-mapping + size: 1572203154 + timestamp: 1729655678747 +- conda: https://conda.anaconda.org/pytorch/osx-arm64/pytorch-2.5.1-py3.11_0.tar.bz2 + sha256: 8519364bc14837a5b3461d71d68688daebe332c978c1a203ee9f58ce65100e86 + md5: c1c26d3ce34cc8ad40d6b55c61852714 + depends: + - filelock + - jinja2 + - llvm-openmp <16 + - networkx + - python >=3.11,<3.12.0a0 + - pyyaml + - sympy + - typing_extensions + constrains: + - cpuonly + arch: arm64 + platform: osx + license: BSD 3-Clause + license_family: BSD + purls: + - pkg:pypi/torch?source=hash-mapping + size: 62801112 + timestamp: 1729651308831 +- conda: https://conda.anaconda.org/pytorch/linux-64/pytorch-cuda-12.4-hc786d27_7.tar.bz2 + sha256: 4ce6352f6270673aaf335909da2bbdd70ad8aaae489319e1e3a5ac0aae720314 + md5: 06635b1bbf5e2fef4a8b9b282500cd7b + depends: + - cuda-cudart >=12.4,<12.5 + - cuda-cupti >=12.4,<12.5 + - cuda-libraries >=12.4,<12.5 + - cuda-nvrtc >=12.4,<12.5 + - cuda-nvtx >=12.4,<12.5 + - cuda-runtime >=12.4,<12.5 + - libcublas >=12.4.5.8,<12.5.2.13 + - libcufft >=11.2.1.3,<11.2.3.18 + - libcusolver >=11.6.1.9,<11.6.2.40 + - libcusparse >=12.3.1.170,<12.4.1.18 + - libnpp >=12.2.5.30,<12.3.0.116 + - libnvjitlink >=12.4.127,<12.5.40 + - libnvjpeg >=12.3.1.117,<12.3.2.38 + arch: x86_64 + platform: linux + purls: [] + size: 7189 + timestamp: 1724179791784 +- conda: https://conda.anaconda.org/pytorch/noarch/pytorch-mutex-1.0-cuda.tar.bz2 + build_number: 100 + sha256: c16316183f51b74ca5eee4dcb8631052f328c0bbf244176734a0b7d390b81ee3 + md5: a948316e36fb5b11223b3fcfa93f8358 + purls: [] + size: 2906 + timestamp: 1628062930777 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py311h2dc5d0c_2.conda + sha256: d107ad62ed5c62764fba9400f2c423d89adf917d687c7f2e56c3bfed605fb5b3 + md5: 014417753f948da1f70d132b2de573be + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 + - yaml >=0.2.5,<0.3.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: + - pkg:pypi/pyyaml?source=hash-mapping + size: 213136 + timestamp: 1737454846598 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py311h4921393_2.conda + sha256: 2af6006c9f692742181f4aa2e0656eb112981ccb0b420b899d3dd42c881bd72f + md5: 250b2ee8777221153fd2de9c279a7efa + depends: + - __osx >=11.0 + - python >=3.11,<3.12.0a0 + - python >=3.11,<3.12.0a0 *_cpython + - python_abi 3.11.* *_cp311 + - yaml >=0.2.5,<0.3.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: + - pkg:pypi/pyyaml?source=hash-mapping + size: 196951 + timestamp: 1737454935552 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.1-py311h7deb3e3_0.conda + sha256: bd6309ef4629744aaaccd9b33d6389dfe879e9864386137e6e4ecc7e1b9ed0f3 + md5: 52457fbaa0aef8136d5dd7bb8a36db9e + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libsodium >=1.0.20,<1.0.21.0a0 + - libstdcxx >=13 + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 + - zeromq >=4.3.5,<4.4.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/pyzmq?source=hash-mapping + size: 392547 + timestamp: 1738271109731 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.1-py311h01f2145_0.conda + sha256: 29255e5ca9f0b50d551fce4d5b7745fa11b4e672418a6d88a4c3f1a974dd4e44 + md5: 4c5daee5a983fb515460a2714b612126 + depends: + - __osx >=11.0 + - libcxx >=18 + - libsodium >=1.0.20,<1.0.21.0a0 + - python >=3.11,<3.12.0a0 + - python >=3.11,<3.12.0a0 *_cpython + - python_abi 3.11.* *_cp311 + - zeromq >=4.3.5,<4.4.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/pyzmq?source=hash-mapping + size: 370170 + timestamp: 1738271259321 +- conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda + sha256: 2d6d0c026902561ed77cd646b5021aef2d4db22e57a5b0178dfc669231e06d2c + md5: 283b96675859b20a825f8fa30f311446 + depends: + - libgcc >=13 + - ncurses >=6.5,<7.0a0 + arch: x86_64 + platform: linux + license: GPL-3.0-only + license_family: GPL + purls: [] + size: 282480 + timestamp: 1740379431762 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda + sha256: 7db04684d3904f6151eff8673270922d31da1eea7fa73254d01c437f49702e34 + md5: 63ef3f6e6d6d5c589e64f11263dc5676 + depends: + - ncurses >=6.5,<7.0a0 + arch: arm64 + platform: osx + license: GPL-3.0-only + license_family: GPL + purls: [] + size: 252359 + timestamp: 1740379663071 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-0.2.0-h074ec65_10.conda + sha256: 1c7b8a24296bf1309f866d363a1152a796d495f97a87d0c6f35b845e6c153250 + md5: 4b2fa94e6d42231ffee6707dfe578915 + depends: + - libsentencepiece 0.2.0 h8e10757_10 + - python_abi 3.11.* *_cp311 + - sentencepiece-python 0.2.0 py311hf886319_10 + - sentencepiece-spm 0.2.0 h8e10757_10 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 19473 + timestamp: 1735628355599 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-0.2.0-hf736513_10.conda + sha256: 16826ce65b4a391990fa85dd2af7d0cd98549be9e993181f18e6d633185a0bd9 + md5: 4b55d377c0ba17934ab1515b608b8276 + depends: + - libsentencepiece 0.2.0 he13a0af_10 + - python_abi 3.11.* *_cp311 + - sentencepiece-python 0.2.0 py311hb1a73f2_10 + - sentencepiece-spm 0.2.0 he13a0af_10 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 19753 + timestamp: 1735628583443 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-python-0.2.0-py311hf886319_10.conda + sha256: 6d92d183dbe714d2b2b042542b36e1a875f307c83bde4324f24a6a1ea62400b6 + md5: 90c0c6f0d4d58d2383373e3ab7bc4d19 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 h8e10757_10 + - libstdcxx >=13 + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/sentencepiece?source=hash-mapping + size: 2350779 + timestamp: 1735627954130 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-python-0.2.0-py311hb1a73f2_10.conda + sha256: 877e5831eb93d1b18c2218284806d8e6fb623a484c368bb0de785ca8586d97bf + md5: 2c13a5b72d87bad8a5af1f4b100e6a36 + depends: + - __osx >=11.0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 he13a0af_10 + - python >=3.11,<3.12.0a0 + - python >=3.11,<3.12.0a0 *_cpython + - python_abi 3.11.* *_cp311 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/sentencepiece?source=hash-mapping + size: 2498193 + timestamp: 1735628323682 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-spm-0.2.0-h8e10757_10.conda + sha256: 6b55e1121545357d63c3aa0766931720e8aafc52d88641ba7631c8cbaa68c52f + md5: e977b7be5ac26c55825e121e00b90493 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 h8e10757_10 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 89076 + timestamp: 1735628334078 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-spm-0.2.0-he13a0af_10.conda + sha256: b760aeee02e2afbfcce3f559e8a227aa4c94139157b1702fdfb41a057dad0e52 + md5: 9b7300f23cd330da8664cd072c162e5f + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 he13a0af_10 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 83826 + timestamp: 1735628514667 +- conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + sha256: 41db0180680cc67c3fa76544ffd48d6a5679d96f4b71d7498a759e94edc9a2db + md5: a451d576819089b0d672f18768be0f65 + depends: + - python >=3.9 + license: MIT + license_family: MIT + purls: + - pkg:pypi/six?source=hash-mapping + size: 16385 + timestamp: 1733381032766 +- pypi: https://files.pythonhosted.org/packages/e9/44/75a9c9421471a6c4805dbf2356f7c181a29c1879239abab1ea2cc8f38b40/sniffio-1.3.1-py3-none-any.whl + name: sniffio + version: 1.3.1 + sha256: 2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2 + requires_python: '>=3.7' +- pypi: https://files.pythonhosted.org/packages/d9/61/f2b52e107b1fc8944b33ef56bf6ac4ebbe16d91b94d2b87ce013bf63fb84/starlette-0.45.3-py3-none-any.whl + name: starlette + version: 0.45.3 + sha256: dfb6d332576f136ec740296c7e8bb8c8a7125044e7c6da30744718880cdd059d + requires_dist: + - anyio>=3.6.2,<5 + - typing-extensions>=3.10.0 ; python_full_version < '3.10' + - httpx>=0.27.0,<0.29.0 ; extra == 'full' + - itsdangerous ; extra == 'full' + - jinja2 ; extra == 'full' + - python-multipart>=0.0.18 ; extra == 'full' + - pyyaml ; extra == 'full' + requires_python: '>=3.9' +- conda: https://conda.anaconda.org/conda-forge/noarch/sympy-1.13.3-pyh2585a3b_105.conda + sha256: 929d939c5a8bcdc10a17501890918da68cf14a5883b36fddf77b8f0fbf040be2 + md5: 254cd5083ffa04d96e3173397a3d30f4 + depends: + - __unix + - cpython + - gmpy2 >=2.0.8 + - mpmath >=0.19 + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/sympy?source=hash-mapping + size: 4523617 + timestamp: 1736248315124 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tbb-2021.13.0-hceb3a55_1.conda + sha256: 65463732129899770d54b1fbf30e1bb82fdebda9d7553caf08d23db4590cd691 + md5: ba7726b8df7b9d34ea80e82b097a4893 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libhwloc >=2.11.2,<2.11.3.0a0 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 175954 + timestamp: 1732982638805 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda + sha256: e0569c9caa68bf476bead1bed3d79650bb080b532c64a4af7d8ca286c08dea4e + md5: d453b98d9c83e71da0741bb0ff4d76bc + depends: + - libgcc-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 + arch: x86_64 + platform: linux + license: TCL + license_family: BSD + purls: [] + size: 3318875 + timestamp: 1699202167581 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda + sha256: 72457ad031b4c048e5891f3f6cb27a53cb479db68a52d965f796910e71a403a8 + md5: b50a57ba89c32b62428b71a875291c9b + depends: + - libzlib >=1.2.13,<2.0.0a0 + arch: arm64 + platform: osx + license: TCL + license_family: BSD + purls: [] + size: 3145523 + timestamp: 1699202432999 +- conda: https://conda.anaconda.org/pytorch/linux-64/torchtriton-3.1.0-py311.tar.bz2 + build_number: 1 + sha256: e07291e5dee2e59a32db462d95ebde2d137ac4cae7f71b222dbbd81fff547a0b + md5: 5fc754aece8ef7de578e4e1282df340e + depends: + - filelock + - python >=3.11,<3.12.0a0 + - pytorch + arch: x86_64 + platform: linux + license: MIT + purls: + - pkg:pypi/triton?source=hash-mapping + size: 245178453 + timestamp: 1727971110674 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py311h9ecbd09_0.conda + sha256: afa3489113154b5cb0724b0bf120b62df91f426dabfe5d02f2ba09e90d346b28 + md5: df3aee9c3e44489257a840b8354e77b9 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/tornado?source=hash-mapping + size: 855653 + timestamp: 1732616048886 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py311h917b07b_0.conda + sha256: 80b79a7d4ed8e16019b8c634cca66935d18fc98be358c76a6ead8c611306ee14 + md5: 183b74c576dc7f920dae168997dbd1dd + depends: + - __osx >=11.0 + - python >=3.11,<3.12.0a0 + - python >=3.11,<3.12.0a0 *_cpython + - python_abi 3.11.* *_cp311 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/tornado?source=hash-mapping + size: 858954 + timestamp: 1732616142626 +- conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + sha256: 11e2c85468ae9902d24a27137b6b39b4a78099806e551d390e394a8c34b48e40 + md5: 9efbfdc37242619130ea42b1cc4ed861 + depends: + - colorama + - python >=3.9 + license: MPL-2.0 or MIT + purls: + - pkg:pypi/tqdm?source=hash-mapping + size: 89498 + timestamp: 1735661472632 +- conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + sha256: f39a5620c6e8e9e98357507262a7869de2ae8cc07da8b7f84e517c9fd6c2b959 + md5: 019a7385be9af33791c989871317e1ed + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/traitlets?source=hash-mapping + size: 110051 + timestamp: 1733367480074 +- conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + sha256: 337be7af5af8b2817f115b3b68870208b30c31d3439bec07bfb2d8f4823e3568 + md5: d17f13df8b65464ca316cbc000a3cb64 + depends: + - python >=3.9 + license: PSF-2.0 + license_family: PSF + purls: + - pkg:pypi/typing-extensions?source=hash-mapping + size: 39637 + timestamp: 1733188758212 +- conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + sha256: c4b1ae8a2931fe9b274c44af29c5475a85b37693999f8c792dad0f8c6734b1de + md5: dbcace4706afdfb7eb891f7b37d07c04 + license: LicenseRef-Public-Domain + purls: [] + size: 122921 + timestamp: 1737119101255 +- conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 + sha256: a4e34c710eeb26945bdbdaba82d3d74f60a78f54a874ec10d373811a5d217535 + md5: 4cb3ad778ec2d5a7acbdf254eb1c42ae + depends: + - libgcc-ng >=9.4.0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 89141 + timestamp: 1641346969816 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 + sha256: 93181a04ba8cfecfdfb162fc958436d868cc37db504c58078eab4c1a3e57fbb7 + md5: 4bb3f014845110883a3c5ee811fd84b4 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 88016 + timestamp: 1641347076660 +- conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda + sha256: a4dc72c96848f764bb5a5176aa93dd1e9b9e52804137b99daeebba277b31ea10 + md5: 3947a35e916fcc6b9825449affbf4214 + depends: + - __glibc >=2.17,<3.0.a0 + - krb5 >=1.21.3,<1.22.0a0 + - libgcc >=13 + - libsodium >=1.0.20,<1.0.21.0a0 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: MPL-2.0 + license_family: MOZILLA + purls: [] + size: 335400 + timestamp: 1731585026517 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda + sha256: 9e585569fe2e7d3bea71972cd4b9f06b1a7ab8fa7c5139f92a31cbceecf25a8a + md5: f7e6b65943cb73bce0143737fded08f1 + depends: + - __osx >=11.0 + - krb5 >=1.21.3,<1.22.0a0 + - libcxx >=18 + - libsodium >=1.0.20,<1.0.21.0a0 + arch: arm64 + platform: osx + license: MPL-2.0 + license_family: MOZILLA + purls: [] + size: 281565 + timestamp: 1731585108039 +- conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + sha256: 567c04f124525c97a096b65769834b7acb047db24b15a56888a322bf3966c3e1 + md5: 0c3cc595284c5e8f0f9900a9b228a332 + depends: + - python >=3.9 + license: MIT + license_family: MIT + purls: + - pkg:pypi/zipp?source=hash-mapping + size: 21809 + timestamp: 1732827613585 diff --git a/tutorials/max-graph-api/magic.lock b/tutorials/max-graph-api/magic.lock new file mode 100644 index 0000000000..842de2d2f9 --- /dev/null +++ b/tutorials/max-graph-api/magic.lock @@ -0,0 +1,4414 @@ +version: 6 +environments: + default: + channels: + - url: https://conda.anaconda.org/conda-forge/ + - url: https://conda.modular.com/max-nightly/ + - url: https://conda.anaconda.org/pytorch/ + packages: + linux-64: + - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_kmp_llvm.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/alsa-lib-1.2.13-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aom-3.9.1-hac33072_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/attr-2.5.1-h166bdaf_1.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/blas-2.116-mkl.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/blas-devel-3.9.0-16_linux64_mkl.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py312h2ec8cdc_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2025.1.31-hbcca054_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.2-h3394656_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.1.31-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py312h06ac9bb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.12.9-py312hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-cudart-12.4.127-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cuda-cudart_linux-64-12.4.127-h85509e4_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-cupti-12.4.127-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-libraries-12.4.1-ha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-nvrtc-12.4.127-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-nvtx-12.4.127-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-opencl-12.4.127-he02047a_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cuda-runtime-12.4.1-ha804496_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cuda-version-12.4-h3060b56_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/dav1d-1.2.1-hd590300_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/dbus-1.13.6-h5008d03_3.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/expat-2.6.4-h5888daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ffmpeg-7.1.0-gpl_ha1cb39d_715.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/fontconfig-2.15.0-h7e30c49_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2 + - 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/fribidi-1.0.10-h36c2ea0_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/gdk-pixbuf-2.42.12-hb9ae30d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gettext-0.23.1-h5888daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gettext-tools-0.23.1-h5888daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gmp-6.3.0-hac33072_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gmpy2-2.1.5-py312h7201bc8_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.13-h59595ed_1003.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-10.3.0-h76408a6_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/jack-1.9.22-h7c63dc7_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/lame-3.100-h166bdaf_1003.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.17-h717163a_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/level-zero-1.20.6-h84d6215_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libasprintf-0.23.1-h8e693c7_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libasprintf-devel-0.23.1-h8e693c7_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libass-0.17.3-hba53ac1_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-16_linux64_mkl.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcap-2.71-h39aace5_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-16_linux64_mkl.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcublas-12.4.5.8-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcufft-11.2.1.3-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcufile-1.9.1.3-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcurand-10.3.5.147-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcusolver-11.6.1.9-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcusparse-12.3.1.170-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libdb-6.2.32-h9c3ff4c_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.23-h4ddbbb0_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libdrm-2.4.124-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libegl-1.7.0-ha4b6fd6_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libflac-1.4.3-h59595ed_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h767d61c_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcrypt-lib-1.11.0-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgettextpo-0.23.1-h5888daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgettextpo-devel-0.23.1-h5888daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-ng-14.2.0-h69a702a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hf1ad2bd_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgl-1.7.0-ha4b6fd6_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.82.2-h2ff4ddf_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libglvnd-1.7.0-ha4b6fd6_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libglx-1.7.0-ha4b6fd6_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgpg-error-1.51-hbd13f7d_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libhwloc-2.11.2-default_h0d58e46_1001.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h4ce23a2_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-16_linux64_mkl.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapacke-3.9.0-16_linux64_mkl.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnpp-12.2.5.30-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnvfatbin-12.4.127-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnvjitlink-12.4.127-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnvjpeg-12.3.1.117-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libogg-1.3.5-h4ab18f5_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-2025.0.0-hdc3f47d_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-auto-batch-plugin-2025.0.0-h4d9b6c2_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-auto-plugin-2025.0.0-h4d9b6c2_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-hetero-plugin-2025.0.0-h981d57b_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-intel-cpu-plugin-2025.0.0-hdc3f47d_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-intel-gpu-plugin-2025.0.0-hdc3f47d_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-intel-npu-plugin-2025.0.0-hdc3f47d_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-ir-frontend-2025.0.0-h981d57b_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-onnx-frontend-2025.0.0-h6363af5_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-paddle-frontend-2025.0.0-h6363af5_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-pytorch-frontend-2025.0.0-h5888daf_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-tensorflow-frontend-2025.0.0-h630ec5c_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-tensorflow-lite-frontend-2025.0.0-h5888daf_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopus-1.3.1-h7f98852_1.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libpciaccess-0.18-hd590300_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.47-h943b412_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/librsvg-2.58.4-h49af25d_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsentencepiece-0.2.0-h8e10757_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsndfile-1.2.2-hc60ed4a_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.49.1-hee588c1_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-h8f9b012_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsystemd0-257.3-h3dc2cb9_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hd9ff511_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libudev1-257.3-h9a4d06a_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libunwind-1.6.2-h9c3ff4c_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/liburing-2.9-h84d6215_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libusb-1.0.27-h520f47e_100.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libva-2.22.0-h8a09558_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libvorbis-1.3.7-h9c3ff4c_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libvpx-1.14.1-hac33072_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.5.0-h851e524_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxkbcommon-1.8.0-hc4a0caf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.6-h8d12d68_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/llvm-openmp-15.0.7-h0cdce71_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.10.0-h5888daf_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-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022718-release.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-2022.1.0-h84fe81f_915.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-devel-2022.1.0-ha770c72_916.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-include-2022.1.0-h84fe81f_915.tar.bz2 + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022718-release.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/mpc-1.3.1-h24ddda3_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/mpfr-4.2.1-h90cbb55_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/mpg123-1.32.9-hc50e24c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mpmath-1.3.0-pyhd8ed1ab_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-h2d0b736_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ocl-icd-2.3.2-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/opencl-headers-2024.10.24-h5888daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openh264-2.6.0-hc22cd8d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.3-h5fbd93e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.1-h7b32b05_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pango-1.56.1-h861ebed_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.44-hba22ea6_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-11.1.0-py312h80c1187_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.44.2-h29eaf8c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pugixml-1.15-h3f63f65_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pulseaudio-client-17.0-hb77b528_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.9-h9e4cc4f_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda + - conda: https://conda.anaconda.org/pytorch/linux-64/pytorch-2.4.0-py3.12_cuda12.4_cudnn9.1.0_0.tar.bz2 + - conda: https://conda.anaconda.org/pytorch/linux-64/pytorch-cuda-12.4-hc786d27_7.tar.bz2 + - conda: https://conda.anaconda.org/pytorch/noarch/pytorch-mutex-1.0-cuda.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py312h178313f_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.1-py312hbf22597_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sdl2-2.32.50-h9b8e6db_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sdl3-3.2.4-h3083f51_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-0.2.0-hc8f76dd_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-python-0.2.0-py312hb6b8a2b_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-spm-0.2.0-h8e10757_10.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-h8bd8927_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/svt-av1-3.0.0-h5888daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sympy-1.13.3-pyh2585a3b_105.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tbb-2021.13.0-hceb3a55_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda + - conda: https://conda.anaconda.org/pytorch/linux-64/torchtriton-3.0.0-py312.tar.bz2 + - conda: https://conda.anaconda.org/pytorch/linux-64/torchvision-0.19.0-py312_cu124.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/wayland-1.23.1-h3e06ad9_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/wayland-protocols-1.41-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/x264-1!164.3095-h166bdaf_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/x265-3.5-h924138e_3.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/xkeyboard-config-2.43-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libice-1.1.2-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libsm-1.2.5-he73a12e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libx11-1.8.11-h4f16b4b_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxcursor-1.2.3-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxext-1.3.6-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxfixes-6.0.1-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrender-0.9.12-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxscrnsaver-1.2.4-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312hef9b889_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda + osx-arm64: + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py312hde4cb15_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2025.1.31-hf0a4a13_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.1.31-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.1-py312h0fad829_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.12.9-py312hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.17.0-pyhd8ed1ab_0.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/gmp-6.3.0-h7bae524_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gmpy2-2.1.5-py312h524cf62_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.17-h7eeda09_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_h07bc746_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-19_osxarm64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-19_osxarm64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.23-hec38601_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.4-h286801f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.0.0-hb547adb_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-19_osxarm64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.4-h39f12f2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.24-openmp_hd76b1f2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.47-h3783ad8_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.3-h3bd63a1_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsentencepiece-0.2.0-he13a0af_10.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.1-h3f77e49_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-h551f018_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.5.0-h2471fea_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxcb-1.17.0-hdb1d25a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-15.0.7-h7cfbb63_0.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-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022718-release.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/mpc-1.3.1-h8f1351a_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/mpfr-4.2.1-hb693164_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mpmath-1.3.0-pyhd8ed1ab_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/osx-arm64/ncurses-6.5-h5e97a16_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openjpeg-2.5.3-h8a3d83b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.1-h81ee809_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-11.1.0-py312h50aef2c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pthread-stubs-0.4-hd74edd7_1002.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.9-hc22306f_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-5_cp312.conda + - conda: https://conda.anaconda.org/pytorch/osx-arm64/pytorch-2.4.0-py3.12_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py312h998013c_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.1-py312hf4875e0_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-0.2.0-h22a84ea_10.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-python-0.2.0-py312h155166a_10.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-spm-0.2.0-he13a0af_10.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sympy-1.13.3-pyh2585a3b_105.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda + - conda: https://conda.anaconda.org/pytorch/osx-arm64/torchvision-0.19.0-py312_cpu.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxau-1.0.12-h5505292_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxdmcp-1.1.5-hd74edd7_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py312h15fbf35_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.6-hb46c0d2_0.conda +packages: +- conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 + sha256: fe51de6107f9edc7aa4f786a70f4a883943bc9d39b3bb7307c04c41410990726 + md5: d7c89558ba9fa0495403155b64376d81 + arch: x86_64 + platform: linux + license: None + size: 2562 + timestamp: 1578324546067 +- conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_kmp_llvm.tar.bz2 + build_number: 2 + sha256: 84a66275da3a66e3f3e70e9d8f10496d807d01a9e4ec16cd2274cc5e28c478fc + md5: 562b26ba2e19059551a811e72ab7f793 + depends: + - _libgcc_mutex 0.1 conda_forge + - llvm-openmp >=9.0.1 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 5744 + timestamp: 1650742457817 +- conda: https://conda.anaconda.org/conda-forge/linux-64/alsa-lib-1.2.13-hb9d3cd8_0.conda + sha256: f507b58f77eabc0cc133723cb7fc45c053d551f234df85e70fb3ede082b0cd53 + md5: ae1370588aa6a5157c34c73e9bbb36a0 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: LGPL-2.1-or-later + license_family: GPL + size: 560238 + timestamp: 1731489643707 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aom-3.9.1-hac33072_0.conda + sha256: b08ef033817b5f9f76ce62dfcac7694e7b6b4006420372de22494503decac855 + md5: 346722a0be40f6edc53f12640d301338 + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + size: 2706396 + timestamp: 1718551242397 +- conda: https://conda.anaconda.org/conda-forge/linux-64/attr-2.5.1-h166bdaf_1.tar.bz2 + sha256: 82c13b1772c21fc4a17441734de471d3aabf82b61db9b11f4a1bd04a9c4ac324 + md5: d9c69a24ad678ffce24c6543a0176b00 + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: GPL-2.0-or-later + license_family: GPL + size: 71042 + timestamp: 1660065501192 +- conda: https://conda.anaconda.org/conda-forge/linux-64/blas-2.116-mkl.tar.bz2 + build_number: 16 + sha256: 87056ebdc90b6d1ea6726d04d42b844cc302112e80508edbf7bf1f1a4fd3fed2 + md5: c196a26abf6b4f132c88828ab7c2231c + depends: + - _openmp_mutex * *_llvm + - _openmp_mutex >=4.5 + - blas-devel 3.9.0 16_linux64_mkl + - libblas 3.9.0 16_linux64_mkl + - libcblas 3.9.0 16_linux64_mkl + - libgcc-ng >=12 + - libgfortran-ng + - libgfortran5 >=10.4.0 + - liblapack 3.9.0 16_linux64_mkl + - liblapacke 3.9.0 16_linux64_mkl + - llvm-openmp >=14.0.4 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 13258 + timestamp: 1660094704275 +- conda: https://conda.anaconda.org/conda-forge/linux-64/blas-devel-3.9.0-16_linux64_mkl.tar.bz2 + build_number: 16 + sha256: a7da65ca4e0322317cbc4d387c4a5f075cdc7fcd12ad9f7f18da758c7532749a + md5: 3f92c1c9e1c0e183462c5071aa02cae1 + depends: + - libblas 3.9.0 16_linux64_mkl + - libcblas 3.9.0 16_linux64_mkl + - liblapack 3.9.0 16_linux64_mkl + - liblapacke 3.9.0 16_linux64_mkl + - mkl >=2022.1.0,<2023.0a0 + - mkl-devel 2022.1.* + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 12630 + timestamp: 1660094595212 +- conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py312h2ec8cdc_2.conda + sha256: f2a59ccd20b4816dea9a2a5cb917eb69728271dbf1aeab4e1b7e609330a50b6f + md5: b0b867af6fc74b2a0aa206da29c0f3cf + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - libbrotlicommon 1.1.0 hb9d3cd8_2 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 349867 + timestamp: 1725267732089 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py312hde4cb15_2.conda + sha256: 254b411fa78ccc226f42daf606772972466f93e9bc6895eabb4cfda22f5178af + md5: a83c2ef76ccb11bc2349f4f17696b15d + depends: + - __osx >=11.0 + - libcxx >=17 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - libbrotlicommon 1.1.0 hd74edd7_2 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 339360 + timestamp: 1725268143995 +- conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda + sha256: 5ced96500d945fb286c9c838e54fa759aa04a7129c59800f0846b4335cee770d + md5: 62ee74e96c5ebb0af99386de58cf9553 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: bzip2-1.0.6 + license_family: BSD + size: 252783 + timestamp: 1720974456583 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda + sha256: adfa71f158cbd872a36394c56c3568e6034aa55c623634b37a4836bd036e6b91 + md5: fc6948412dbbbe9a4c9ddbbcfe0a79ab + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: bzip2-1.0.6 + license_family: BSD + size: 122909 + timestamp: 1720974522888 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2025.1.31-hbcca054_0.conda + sha256: bf832198976d559ab44d6cdb315642655547e26d826e34da67cbee6624cda189 + md5: 19f3a56f68d2fd06c516076bff482c52 + arch: x86_64 + platform: linux + license: ISC + size: 158144 + timestamp: 1738298224464 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2025.1.31-hf0a4a13_0.conda + sha256: 7e12816618173fe70f5c638b72adf4bfd4ddabf27794369bb17871c5bb75b9f9 + md5: 3569d6a9141adc64d2fe4797f3289e06 + arch: arm64 + platform: osx + license: ISC + size: 158425 + timestamp: 1738298167688 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.2-h3394656_1.conda + sha256: de7d0d094e53decc005cb13e527be2635b8f604978da497d4c0d282c7dc08385 + md5: b34c2833a1f56db610aeb27f206d800d + depends: + - __glibc >=2.17,<3.0.a0 + - fontconfig >=2.15.0,<3.0a0 + - fonts-conda-ecosystem + - freetype >=2.12.1,<3.0a0 + - icu >=75.1,<76.0a0 + - libexpat >=2.6.4,<3.0a0 + - libgcc >=13 + - libglib >=2.82.2,<3.0a0 + - libpng >=1.6.44,<1.7.0a0 + - libstdcxx >=13 + - libxcb >=1.17.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - pixman >=0.44.2,<1.0a0 + - xorg-libice >=1.1.1,<2.0a0 + - xorg-libsm >=1.2.4,<2.0a0 + - xorg-libx11 >=1.8.10,<2.0a0 + - xorg-libxext >=1.3.6,<2.0a0 + - xorg-libxrender >=0.9.11,<0.10.0a0 + arch: x86_64 + platform: linux + license: LGPL-2.1-only or MPL-1.1 + size: 978868 + timestamp: 1733790976384 +- conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.1.31-pyhd8ed1ab_0.conda + sha256: 42a78446da06a2568cb13e69be3355169fbd0ea424b00fc80b7d840f5baaacf3 + md5: c207fa5ac7ea99b149344385a9c0880d + depends: + - python >=3.9 + license: ISC + size: 162721 + timestamp: 1739515973129 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py312h06ac9bb_0.conda + sha256: cba6ea83c4b0b4f5b5dc59cb19830519b28f95d7ebef7c9c5cf1c14843621457 + md5: a861504bbea4161a9170b85d4d2be840 + depends: + - __glibc >=2.17,<3.0.a0 + - libffi >=3.4,<4.0a0 + - libgcc >=13 + - pycparser + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 294403 + timestamp: 1725560714366 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.1-py312h0fad829_0.conda + sha256: 8d91a0d01358b5c3f20297c6c536c5d24ccd3e0c2ddd37f9d0593d0f0070226f + md5: 19a5456f72f505881ba493979777b24e + depends: + - __osx >=11.0 + - libffi >=3.4,<4.0a0 + - pycparser + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 281206 + timestamp: 1725560813378 +- conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda + sha256: 4e0ee91b97e5de3e74567bdacea27f0139709fceca4db8adffbe24deffccb09b + md5: e83a31202d1c0a000fce3e9cf3825875 + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 47438 + timestamp: 1735929811779 +- conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda + sha256: c920d23cd1fcf565031c679adb62d848af60d6fbb0edc2d50ba475cea4f0d8ab + md5: f22f4d4970e09d68a10b922cbb0408d3 + depends: + - __unix + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 84705 + timestamp: 1734858922844 +- conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + sha256: ab29d57dc70786c1269633ba3dff20288b81664d3ff8d21af995742e2bb03287 + md5: 962b9857ee8e7018c22f2776ffa0b2d7 + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 27011 + timestamp: 1733218222191 +- conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.12.9-py312hd8ed1ab_0.conda + noarch: generic + sha256: f5c7ad0bd23fa8645ac279d99bddba656ff61483dc6312af12aae13910dfb210 + md5: a5b10f166467fecec692abaee84d16aa + depends: + - python 3.12.9.* + - python_abi * *_cp312 + license: Python-2.0 + size: 44836 + timestamp: 1739519561557 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-cudart-12.4.127-he02047a_2.conda + sha256: d8ad0be647dad6378119c110572bbf9f6b1e8c820393ed159d45f02588979c07 + md5: a748faa52331983fc3adcc3b116fe0e4 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-cudart_linux-64 12.4.127 h85509e4_2 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + size: 22563 + timestamp: 1715710703269 +- conda: https://conda.anaconda.org/conda-forge/noarch/cuda-cudart_linux-64-12.4.127-h85509e4_2.conda + sha256: 1f1b3e0bf6b5e665860ecbdf509c1e02760c14d25e3f3893a712f90f7f8a5abc + md5: 329163110a96514802e9e64d971edf43 + depends: + - cuda-version >=12.4,<12.5.0a0 + license: LicenseRef-NVIDIA-End-User-License-Agreement + size: 186886 + timestamp: 1715710690964 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-cupti-12.4.127-he02047a_2.conda + sha256: db9ebc57fd583711bbdd12e54d00e4153a7b414f929f77fca2f44547c02204b8 + md5: 46422ef1b1161fb180027e50c598ecd0 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + size: 1918773 + timestamp: 1715665119069 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-libraries-12.4.1-ha770c72_1.conda + sha256: cb30e83f33c7480caa68a1e35e6ff4102d17ff0a94239ca18555afff1df2f70e + md5: 6bb3f998485d4344a7539e0b218b3fc1 + depends: + - cuda-cudart 12.4.127.* + - cuda-nvrtc 12.4.127.* + - cuda-opencl 12.4.127.* + - libcublas 12.4.5.8.* + - libcufft 11.2.1.3.* + - libcufile 1.9.1.3.* + - libcurand 10.3.5.147.* + - libcusolver 11.6.1.9.* + - libcusparse 12.3.1.170.* + - libnpp 12.2.5.30.* + - libnvfatbin 12.4.127.* + - libnvjitlink 12.4.127.* + - libnvjpeg 12.3.1.117.* + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + size: 20180 + timestamp: 1713304266920 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-nvrtc-12.4.127-he02047a_2.conda + sha256: c4aba5e152526db7cad7c8a5191497b0c6365c912ed845dc9c427d29893486a1 + md5: 80baf6262f4a1a0dde42d85aaa393402 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + size: 18825627 + timestamp: 1715711095870 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-nvtx-12.4.127-he02047a_2.conda + sha256: 8f499785edaec6198a934e8a9dd1f8b6f79aabcc135962d6050dd7328c76d3dc + md5: 656a004b6e44f50ce71c65cab0d429b4 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + size: 31691 + timestamp: 1715731339952 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-opencl-12.4.127-he02047a_1.conda + sha256: 75d912a70719a9d0bca9f234a79a857815d8feec3c54c145e6e41589de4ff5be + md5: 1e98deda07c14d26c80d124cf0eb011a + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - ocl-icd >=2.3.2,<3.0a0 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + size: 30406 + timestamp: 1715711329543 +- conda: https://conda.anaconda.org/conda-forge/noarch/cuda-runtime-12.4.1-ha804496_0.conda + sha256: 61a593347c91a9bcd18329f7aa780bd1fb1e20dd1b61b16a451bd4a6b60dabf0 + md5: 48829f4ef6005ae8d4867b99168ff2b8 + depends: + - __linux + - cuda-libraries 12.4.1.* + license: LicenseRef-NVIDIA-End-User-License-Agreement + size: 20034 + timestamp: 1712683445348 +- conda: https://conda.anaconda.org/conda-forge/noarch/cuda-version-12.4-h3060b56_3.conda + sha256: 571d32fbd0dc8df6e85c14d1757549927e272af9c70b935d7e3a553ab0b0b4da + md5: c9a3fe8b957176e1a8452c6f3431b0d8 + constrains: + - cudatoolkit 12.4|12.4.* + - __cuda >=12 + license: LicenseRef-NVIDIA-End-User-License-Agreement + size: 21022 + timestamp: 1709765922936 +- conda: https://conda.anaconda.org/conda-forge/linux-64/dav1d-1.2.1-hd590300_0.conda + sha256: 22053a5842ca8ee1cf8e1a817138cdb5e647eb2c46979f84153f6ad7bde73020 + md5: 418c6ca5929a611cbd69204907a83995 + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + size: 760229 + timestamp: 1685695754230 +- conda: https://conda.anaconda.org/conda-forge/linux-64/dbus-1.13.6-h5008d03_3.tar.bz2 + sha256: 8f5f995699a2d9dbdd62c61385bfeeb57c82a681a7c8c5313c395aa0ccab68a5 + md5: ecfff944ba3960ecb334b9a2663d708d + depends: + - expat >=2.4.2,<3.0a0 + - libgcc-ng >=9.4.0 + - libglib >=2.70.2,<3.0a0 + arch: x86_64 + platform: linux + license: GPL-2.0-or-later + license_family: GPL + size: 618596 + timestamp: 1640112124844 +- conda: https://conda.anaconda.org/conda-forge/linux-64/expat-2.6.4-h5888daf_0.conda + sha256: 1848c7db9e264e3b8036ee133d570dd880422983cd20dd9585a505289606d276 + md5: 1d6afef758879ef5ee78127eb4cd2c4a + depends: + - __glibc >=2.17,<3.0.a0 + - libexpat 2.6.4 h5888daf_0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 138145 + timestamp: 1730967050578 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ffmpeg-7.1.0-gpl_ha1cb39d_715.conda + sha256: 6effcce8adc5b1d9a22e021c3121eaa6b6fbe93467956765dbebd0f6f5839469 + md5: 18046f211e7aaeae13430827b7a8d692 + depends: + - __glibc >=2.17,<3.0.a0 + - alsa-lib >=1.2.13,<1.3.0a0 + - aom >=3.9.1,<3.10.0a0 + - bzip2 >=1.0.8,<2.0a0 + - dav1d >=1.2.1,<1.2.2.0a0 + - fontconfig >=2.15.0,<3.0a0 + - fonts-conda-ecosystem + - freetype >=2.12.1,<3.0a0 + - gmp >=6.3.0,<7.0a0 + - harfbuzz >=10.3.0,<11.0a0 + - lame >=3.100,<3.101.0a0 + - libass >=0.17.3,<0.17.4.0a0 + - libexpat >=2.6.4,<3.0a0 + - libgcc >=13 + - libiconv >=1.18,<2.0a0 + - liblzma >=5.6.4,<6.0a0 + - libopenvino >=2025.0.0,<2025.0.1.0a0 + - libopenvino-auto-batch-plugin >=2025.0.0,<2025.0.1.0a0 + - libopenvino-auto-plugin >=2025.0.0,<2025.0.1.0a0 + - libopenvino-hetero-plugin >=2025.0.0,<2025.0.1.0a0 + - libopenvino-intel-cpu-plugin >=2025.0.0,<2025.0.1.0a0 + - libopenvino-intel-gpu-plugin >=2025.0.0,<2025.0.1.0a0 + - libopenvino-intel-npu-plugin >=2025.0.0,<2025.0.1.0a0 + - libopenvino-ir-frontend >=2025.0.0,<2025.0.1.0a0 + - libopenvino-onnx-frontend >=2025.0.0,<2025.0.1.0a0 + - libopenvino-paddle-frontend >=2025.0.0,<2025.0.1.0a0 + - libopenvino-pytorch-frontend >=2025.0.0,<2025.0.1.0a0 + - libopenvino-tensorflow-frontend >=2025.0.0,<2025.0.1.0a0 + - libopenvino-tensorflow-lite-frontend >=2025.0.0,<2025.0.1.0a0 + - libopus >=1.3.1,<2.0a0 + - librsvg >=2.58.4,<3.0a0 + - libstdcxx >=13 + - libva >=2.22.0,<3.0a0 + - libvorbis >=1.3.7,<1.4.0a0 + - libvpx >=1.14.1,<1.15.0a0 + - libxcb >=1.17.0,<2.0a0 + - libxml2 >=2.13.6,<3.0a0 + - libzlib >=1.3.1,<2.0a0 + - openh264 >=2.6.0,<2.6.1.0a0 + - openssl >=3.4.1,<4.0a0 + - pulseaudio-client >=17.0,<17.1.0a0 + - sdl2 >=2.32.50,<3.0a0 + - svt-av1 >=3.0.0,<3.0.1.0a0 + - x264 >=1!164.3095,<1!165 + - x265 >=3.5,<3.6.0a0 + - xorg-libx11 >=1.8.11,<2.0a0 + constrains: + - __cuda >=12.4 + arch: x86_64 + platform: linux + license: GPL-2.0-or-later + license_family: GPL + size: 10401213 + timestamp: 1740543495852 +- conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.17.0-pyhd8ed1ab_0.conda + sha256: 006d7e5a0c17a6973596dd86bfc80d74ce541144d2aee2d22d46fd41df560a63 + md5: 7f402b4a1007ee355bc50ce4d24d4a57 + depends: + - python >=3.9 + license: Unlicense + size: 17544 + timestamp: 1737517924333 +- conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 + sha256: 58d7f40d2940dd0a8aa28651239adbf5613254df0f75789919c4e6762054403b + md5: 0c96522c6bdaed4b1566d11387caaf45 + license: BSD-3-Clause + license_family: BSD + size: 397370 + timestamp: 1566932522327 +- conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 + sha256: c52a29fdac682c20d252facc50f01e7c2e7ceac52aa9817aaf0bb83f7559ec5c + md5: 34893075a5c9e55cdafac56607368fc6 + license: OFL-1.1 + license_family: Other + size: 96530 + timestamp: 1620479909603 +- conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 + sha256: 00925c8c055a2275614b4d983e1df637245e19058d79fc7dd1a93b8d9fb4b139 + md5: 4d59c254e01d9cde7957100457e2d5fb + license: OFL-1.1 + license_family: Other + size: 700814 + timestamp: 1620479612257 +- conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_3.conda + sha256: 2821ec1dc454bd8b9a31d0ed22a7ce22422c0aef163c59f49dfdf915d0f0ca14 + md5: 49023d73832ef61042f6a237cb2687e7 + license: LicenseRef-Ubuntu-Font-Licence-Version-1.0 + license_family: Other + size: 1620504 + timestamp: 1727511233259 +- conda: https://conda.anaconda.org/conda-forge/linux-64/fontconfig-2.15.0-h7e30c49_1.conda + sha256: 7093aa19d6df5ccb6ca50329ef8510c6acb6b0d8001191909397368b65b02113 + md5: 8f5b0b297b59e1ac160ad4beec99dbee + depends: + - __glibc >=2.17,<3.0.a0 + - freetype >=2.12.1,<3.0a0 + - libexpat >=2.6.3,<3.0a0 + - libgcc >=13 + - libuuid >=2.38.1,<3.0a0 + - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 265599 + timestamp: 1730283881107 +- conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 + sha256: a997f2f1921bb9c9d76e6fa2f6b408b7fa549edd349a77639c9fe7a23ea93e61 + md5: fee5683a3f04bd15cbd8318b096a27ab + depends: + - fonts-conda-forge + license: BSD-3-Clause + license_family: BSD + size: 3667 + timestamp: 1566974674465 +- conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2 + sha256: 53f23a3319466053818540bcdf2091f253cbdbab1e0e9ae7b9e509dcaa2a5e38 + md5: f766549260d6815b0c52253f1fb1bb29 + depends: + - font-ttf-dejavu-sans-mono + - font-ttf-inconsolata + - font-ttf-source-code-pro + - font-ttf-ubuntu + license: BSD-3-Clause + license_family: BSD + size: 4102 + timestamp: 1566932280397 +- conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.12.1-h267a509_2.conda + sha256: b2e3c449ec9d907dd4656cb0dc93e140f447175b125a3824b31368b06c666bb6 + md5: 9ae35c3d96db2c94ce0cef86efdfa2cb + depends: + - libgcc-ng >=12 + - libpng >=1.6.39,<1.7.0a0 + - libzlib >=1.2.13,<2.0.0a0 + arch: x86_64 + platform: linux + license: GPL-2.0-only OR FTL + size: 634972 + timestamp: 1694615932610 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/freetype-2.12.1-hadb7bae_2.conda + sha256: 791673127e037a2dc0eebe122dc4f904cb3f6e635bb888f42cbe1a76b48748d9 + md5: e6085e516a3e304ce41a8ee08b9b89ad + depends: + - libpng >=1.6.39,<1.7.0a0 + - libzlib >=1.2.13,<2.0.0a0 + arch: arm64 + platform: osx + license: GPL-2.0-only OR FTL + size: 596430 + timestamp: 1694616332835 +- conda: https://conda.anaconda.org/conda-forge/linux-64/fribidi-1.0.10-h36c2ea0_0.tar.bz2 + sha256: 5d7b6c0ee7743ba41399e9e05a58ccc1cfc903942e49ff6f677f6e423ea7a627 + md5: ac7bc6a654f8f41b352b38f4051135f8 + depends: + - libgcc-ng >=7.5.0 + arch: x86_64 + platform: linux + license: LGPL-2.1 + size: 114383 + timestamp: 1604416621168 +- conda: https://conda.anaconda.org/conda-forge/linux-64/gdk-pixbuf-2.42.12-hb9ae30d_0.conda + sha256: d5283b95a8d49dcd88d29b360d8b38694aaa905d968d156d72ab71d32b38facb + md5: 201db6c2d9a3c5e46573ac4cb2e92f4f + depends: + - libgcc-ng >=12 + - libglib >=2.80.2,<3.0a0 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libpng >=1.6.43,<1.7.0a0 + - libtiff >=4.6.0,<4.8.0a0 + arch: x86_64 + platform: linux + license: LGPL-2.1-or-later + license_family: LGPL + size: 528149 + timestamp: 1715782983957 +- conda: https://conda.anaconda.org/conda-forge/linux-64/gettext-0.23.1-h5888daf_0.conda + sha256: 9d93e75a63a8ca8f86d1be09f68f1211754e6f1e9ee4fa6d90b9d46ee0f1dabb + md5: 0754038c806eae440582da1c3af85577 + depends: + - __glibc >=2.17,<3.0.a0 + - gettext-tools 0.23.1 h5888daf_0 + - libasprintf 0.23.1 h8e693c7_0 + - libasprintf-devel 0.23.1 h8e693c7_0 + - libgcc >=13 + - libgettextpo 0.23.1 h5888daf_0 + - libgettextpo-devel 0.23.1 h5888daf_0 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: LGPL-2.1-or-later AND GPL-3.0-or-later + size: 484344 + timestamp: 1739038829530 +- conda: https://conda.anaconda.org/conda-forge/linux-64/gettext-tools-0.23.1-h5888daf_0.conda + sha256: dd2b54a823ea994c2a7908fcce40e1e612ca00cb9944f2382624ff2d3aa8db03 + md5: 2f659535feef3cfb782f7053c8775a32 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: GPL-3.0-or-later + license_family: GPL + size: 2967824 + timestamp: 1739038787800 +- conda: https://conda.anaconda.org/conda-forge/linux-64/gmp-6.3.0-hac33072_2.conda + sha256: 309cf4f04fec0c31b6771a5809a1909b4b3154a2208f52351e1ada006f4c750c + md5: c94a5994ef49749880a8139cf9afcbe1 + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: GPL-2.0-or-later OR LGPL-3.0-or-later + size: 460055 + timestamp: 1718980856608 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/gmp-6.3.0-h7bae524_2.conda + sha256: 76e222e072d61c840f64a44e0580c2503562b009090f55aa45053bf1ccb385dd + md5: eed7278dfbab727b56f2c0b64330814b + depends: + - __osx >=11.0 + - libcxx >=16 + arch: arm64 + platform: osx + license: GPL-2.0-or-later OR LGPL-3.0-or-later + size: 365188 + timestamp: 1718981343258 +- conda: https://conda.anaconda.org/conda-forge/linux-64/gmpy2-2.1.5-py312h7201bc8_3.conda + sha256: addd0bc226ca86c11f1223ab322d12b67501c2b3d93749bdab2068ccaedd8ef0 + md5: 673ef4d6611f5b4ca7b5c1f8c65a38dc + depends: + - __glibc >=2.17,<3.0.a0 + - gmp >=6.3.0,<7.0a0 + - libgcc >=13 + - mpc >=1.3.1,<2.0a0 + - mpfr >=4.2.1,<5.0a0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: LGPL-3.0-or-later + license_family: LGPL + size: 209631 + timestamp: 1733462668219 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/gmpy2-2.1.5-py312h524cf62_3.conda + sha256: 0ea196e4b706321951af1eebdb6a4eb9307faa1fd5361bcf49acb150e71774f7 + md5: ab7a5d10c7b4e249a9fe7bc280909803 + depends: + - __osx >=11.0 + - gmp >=6.3.0,<7.0a0 + - mpc >=1.3.1,<2.0a0 + - mpfr >=4.2.1,<5.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: LGPL-3.0-or-later + license_family: LGPL + size: 147983 + timestamp: 1733462785197 +- conda: https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.13-h59595ed_1003.conda + sha256: 0595b009f20f8f60f13a6398e7cdcbd2acea5f986633adcf85f5a2283c992add + md5: f87c7b7c2cb45f323ffbce941c78ab7c + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LGPL-2.0-or-later + license_family: LGPL + size: 96855 + timestamp: 1711634169756 +- conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda + sha256: 0aa1cdc67a9fe75ea95b5644b734a756200d6ec9d0dff66530aec3d1c1e9df75 + md5: b4754fb1bdcb70c8fd54f918301582c6 + depends: + - hpack >=4.1,<5 + - hyperframe >=6.1,<7 + - python >=3.9 + license: MIT + license_family: MIT + size: 53888 + timestamp: 1738578623567 +- conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-10.3.0-h76408a6_0.conda + sha256: fbccddfbbfaf139102e5513a2a053010338809348ade18bbf16cb6b92a53d294 + md5: 0a06f278e5d9242057673b1358a75e8f + depends: + - __glibc >=2.17,<3.0.a0 + - cairo >=1.18.2,<2.0a0 + - freetype >=2.12.1,<3.0a0 + - graphite2 + - icu >=75.1,<76.0a0 + - libexpat >=2.6.4,<3.0a0 + - libgcc >=13 + - libglib >=2.82.2,<3.0a0 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 1671633 + timestamp: 1740154398990 +- conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda + sha256: 6ad78a180576c706aabeb5b4c8ceb97c0cb25f1e112d76495bff23e3779948ba + md5: 0a802cb9888dd14eeefc611f05c40b6e + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 30731 + timestamp: 1737618390337 +- conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda + sha256: 77af6f5fe8b62ca07d09ac60127a30d9069fdc3c68d6b256754d0ffb1f7779f8 + md5: 8e6923fc12f1fe8f8c4e5c9f343256ac + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 17397 + timestamp: 1737618427549 +- conda: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda + sha256: 71e750d509f5fa3421087ba88ef9a7b9be11c53174af3aa4d06aff4c18b38e8e + md5: 8b189310083baabfb622af68fd9d3ae3 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 12129203 + timestamp: 1720853576813 +- conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda + sha256: d7a472c9fd479e2e8dcb83fb8d433fce971ea369d704ece380e876f9c3494e87 + md5: 39a4f67be3286c86d696df570b1201b7 + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 49765 + timestamp: 1733211921194 +- conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + sha256: 598951ebdb23e25e4cec4bbff0ae369cec65ead80b50bc08b441d8e54de5cf03 + md5: f4b39bf00c69f56ac01e020ebfac066c + depends: + - python >=3.9 + - zipp >=0.5 + license: Apache-2.0 + license_family: APACHE + size: 29141 + timestamp: 1737420302391 +- conda: https://conda.anaconda.org/conda-forge/linux-64/jack-1.9.22-h7c63dc7_2.conda + sha256: 5e44a3a4b9791d1268636811628555ad40d4a8dd5c3be3334062df75580ae25b + md5: f56277b7f079f1b13cbf7fb9b4f194c4 + depends: + - alsa-lib >=1.2.10,<1.3.0.0a0 + - libdb >=6.2.32,<6.3.0a0 + - libgcc-ng >=12 + - libopus >=1.3.1,<2.0a0 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LGPL-2.0-only + license_family: LGPL + size: 464144 + timestamp: 1693879949990 +- conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.5-pyhd8ed1ab_0.conda + sha256: 98977694b9ecaa3218662f843425f39501f81973c450f995eec68f1803ed71c3 + md5: 2752a6ed44105bfb18c9bef1177d9dcd + depends: + - markupsafe >=2.0 + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 112561 + timestamp: 1734824044952 +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + sha256: 19d8bd5bb2fde910ec59e081eeb59529491995ce0d653a5209366611023a0b3a + md5: 4ebae00eae9705b0c3d6d1018a81d047 + depends: + - importlib-metadata >=4.8.3 + - jupyter_core >=4.12,!=5.0.* + - python >=3.9 + - python-dateutil >=2.8.2 + - pyzmq >=23.0 + - tornado >=6.2 + - traitlets >=5.3 + license: BSD-3-Clause + license_family: BSD + size: 106342 + timestamp: 1733441040958 +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + sha256: 732b1e8536bc22a5a174baa79842d79db2f4956d90293dd82dc1b3f6099bcccd + md5: 0a2980dada0dd7fd0998f0342308b1b1 + depends: + - __unix + - platformdirs >=2.5 + - python >=3.8 + - traitlets >=5.3 + license: BSD-3-Clause + license_family: BSD + size: 57671 + timestamp: 1727163547058 +- conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 + sha256: 150c05a6e538610ca7c43beb3a40d65c90537497a4f6a5f4d15ec0451b6f5ebb + md5: 30186d27e2c9fa62b45fb1476b7200e3 + depends: + - libgcc-ng >=10.3.0 + arch: x86_64 + platform: linux + license: LGPL-2.1-or-later + size: 117831 + timestamp: 1646151697040 +- conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda + sha256: 99df692f7a8a5c27cd14b5fb1374ee55e756631b9c3d659ed3ee60830249b238 + md5: 3f43953b7d3fb3aaa1d0d0723d91e368 + depends: + - keyutils >=1.6.1,<2.0a0 + - libedit >=3.1.20191231,<3.2.0a0 + - libedit >=3.1.20191231,<4.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - openssl >=3.3.1,<4.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 1370023 + timestamp: 1719463201255 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda + sha256: 4442f957c3c77d69d9da3521268cad5d54c9033f1a73f99cde0a3658937b159b + md5: c6dc8a0fdec13a0565936655c33069a1 + depends: + - __osx >=11.0 + - libcxx >=16 + - libedit >=3.1.20191231,<3.2.0a0 + - libedit >=3.1.20191231,<4.0a0 + - openssl >=3.3.1,<4.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 1155530 + timestamp: 1719463474401 +- conda: https://conda.anaconda.org/conda-forge/linux-64/lame-3.100-h166bdaf_1003.tar.bz2 + sha256: aad2a703b9d7b038c0f745b853c6bb5f122988fe1a7a096e0e606d9cbec4eaab + md5: a8832b479f93521a9e7b5b743803be51 + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: LGPL-2.0-only + license_family: LGPL + size: 508258 + timestamp: 1664996250081 +- conda: https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.17-h717163a_0.conda + sha256: d6a61830a354da022eae93fa896d0991385a875c6bba53c82263a289deda9db8 + md5: 000e85703f0fd9594c81710dd5066471 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libtiff >=4.7.0,<4.8.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 248046 + timestamp: 1739160907615 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.17-h7eeda09_0.conda + sha256: 310a62c2f074ebd5aa43b3cd4b00d46385ce680fa2132ecee255a200e2d2f15f + md5: 92a61fd30b19ebd5c1621a5bfe6d8b5f + depends: + - __osx >=11.0 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libtiff >=4.7.0,<4.8.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 212125 + timestamp: 1739161108467 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_4.conda + sha256: db73f38155d901a610b2320525b9dd3b31e4949215c870685fd92ea61b5ce472 + md5: 01f8d123c96816249efd255a31ad7712 + depends: + - __glibc >=2.17,<3.0.a0 + constrains: + - binutils_impl_linux-64 2.43 + arch: x86_64 + platform: linux + license: GPL-3.0-only + license_family: GPL + size: 671240 + timestamp: 1740155456116 +- conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 + sha256: cb55f36dcd898203927133280ae1dc643368af041a48bcf7c026acb7c47b0c12 + md5: 76bbff344f0134279f225174e9064c8f + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 281798 + timestamp: 1657977462600 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 + sha256: 6f068bb53dfb6147d3147d981bb851bb5477e769407ad4e6a68edf482fdcb958 + md5: de462d5aacda3b30721b512c5da4e742 + depends: + - libcxx >=13.0.1 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 215721 + timestamp: 1657977558796 +- conda: https://conda.anaconda.org/conda-forge/linux-64/level-zero-1.20.6-h84d6215_0.conda + sha256: d91b1fcdead51bae9d4972f8105217dd29ef12dd89e5570046c752f267e0e9af + md5: 15a7a302f9a67ac83897dc3d8b5e4097 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 553269 + timestamp: 1739970787243 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda + sha256: 143a586aa67d50622ef703de57b9d43f44945836d6568e0e7aa174bd8c45e0d4 + md5: 488f260ccda0afaf08acb286db439c2f + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + constrains: + - libabseil-static =20240722.0=cxx17* + - abseil-cpp =20240722.0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 1311599 + timestamp: 1736008414161 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_h07bc746_4.conda + sha256: 05fa5e5e908962b9c5aba95f962e2ca81d9599c4715aebe5e4ddb72b309d1770 + md5: c2d95bd7aa8d564a9bd7eca5e571a5b3 + depends: + - __osx >=11.0 + - libcxx >=18 + constrains: + - libabseil-static =20240722.0=cxx17* + - abseil-cpp =20240722.0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 1178260 + timestamp: 1736008642885 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libasprintf-0.23.1-h8e693c7_0.conda + sha256: 13b863584fccbb9089de73a2442e540703ce4873e4719c9d98c98e4a8e12f9d1 + md5: 988f4937281a66ca19d1adb3b5e3f859 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: LGPL-2.1-or-later + size: 43179 + timestamp: 1739038705987 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libasprintf-devel-0.23.1-h8e693c7_0.conda + sha256: b05a859fe5a2b43574f3a5d93552061232b92d17017b27ecab1eccca1dbb2fe4 + md5: 2827e722a963b779ce878ef9b5474534 + depends: + - __glibc >=2.17,<3.0.a0 + - libasprintf 0.23.1 h8e693c7_0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: LGPL-2.1-or-later + size: 34282 + timestamp: 1739038733352 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libass-0.17.3-hba53ac1_1.conda + sha256: aaf38bcb9b78963f4eb58d882a9a6a350f500cfa162bd8a80f7f215d3831afa2 + md5: f5e75fe79d446bf4975b41d375314605 + depends: + - libgcc >=13 + - __glibc >=2.17,<3.0.a0 + - harfbuzz >=10.1.0,<11.0a0 + - freetype >=2.12.1,<3.0a0 + - fribidi >=1.0.10,<2.0a0 + - fontconfig >=2.15.0,<3.0a0 + - fonts-conda-ecosystem + - libiconv >=1.17,<2.0a0 + arch: x86_64 + platform: linux + license: ISC + size: 153294 + timestamp: 1733786555242 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-16_linux64_mkl.tar.bz2 + build_number: 16 + sha256: 24e656f13b402b6fceb88df386768445ab9beb657d451a8e5a88d4b3380cf7a4 + md5: 85f61af03fd291dae33150ffe89dc09a + depends: + - mkl >=2022.1.0,<2023.0a0 + constrains: + - liblapack 3.9.0 16_linux64_mkl + - liblapacke 3.9.0 16_linux64_mkl + - libcblas 3.9.0 16_linux64_mkl + - blas * mkl + - mkl <2025 + arch: x86_64 + platform: linux + track_features: + - blas_mkl + license: BSD-3-Clause + license_family: BSD + size: 13102 + timestamp: 1660094562739 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-19_osxarm64_openblas.conda + build_number: 19 + sha256: 51e78e3c9fa57f3fec12936b760928715ba0ab5253d02815202f9ec4c2c9255d + md5: f50b1fd98593278e18319653cff9c475 + depends: + - libopenblas >=0.3.24,<0.3.25.0a0 + - libopenblas >=0.3.24,<1.0a0 + constrains: + - libcblas 3.9.0 19_osxarm64_openblas + - liblapack 3.9.0 19_osxarm64_openblas + - blas * openblas + - liblapacke 3.9.0 19_osxarm64_openblas + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 14817 + timestamp: 1697484577887 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcap-2.71-h39aace5_0.conda + sha256: 2bbefac94f4ab8ff7c64dc843238b6c8edcc9ff1f2b5a0a48407a904dc7ccfb2 + md5: dd19e4e3043f6948bd7454b946ee0983 + depends: + - __glibc >=2.17,<3.0.a0 + - attr >=2.5.1,<2.6.0a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 102268 + timestamp: 1729940917945 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-16_linux64_mkl.tar.bz2 + build_number: 16 + sha256: 892ba10508f22310ccfe748df1fd3b6c7f20e7b6f6b79e69ed337863551c1bd8 + md5: 361bf757b95488de76c4f123805742d3 + depends: + - libblas 3.9.0 16_linux64_mkl + constrains: + - liblapack 3.9.0 16_linux64_mkl + - liblapacke 3.9.0 16_linux64_mkl + - blas * mkl + - mkl <2025 + arch: x86_64 + platform: linux + track_features: + - blas_mkl + license: BSD-3-Clause + license_family: BSD + size: 12791 + timestamp: 1660094570921 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-19_osxarm64_openblas.conda + build_number: 19 + sha256: 19b1c5e3ddd383ec14540336f4704938218d3c1db4707ae10d5357afb22cccc1 + md5: 5460a8d1beffd7f63994d891e6a20da4 + depends: + - libblas 3.9.0 19_osxarm64_openblas + constrains: + - liblapack 3.9.0 19_osxarm64_openblas + - blas * openblas + - liblapacke 3.9.0 19_osxarm64_openblas + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 14738 + timestamp: 1697484590682 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcublas-12.4.5.8-he02047a_2.conda + sha256: 168e664423e875f7107697dfa7935399675872ea8abffa92621db98007258d66 + md5: d446adae085aa1ff37c44b69988a6f06 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-nvrtc + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + size: 240665617 + timestamp: 1715711552741 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcufft-11.2.1.3-he02047a_2.conda + sha256: 242e1ed210a85fc0dc2a4e86bf0b75120f1768ab66497502c5e6d69e801bf9dc + md5: d2641a67c207946ef96f1328c4a8e8ed + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + size: 174980358 + timestamp: 1715711515585 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcufile-1.9.1.3-he02047a_2.conda + sha256: 7fa7a608d52064b724241e4026f0e0cc244c6f725623e2c26c810be99822fa28 + md5: a051267bcb1912467c81d802a7d3465e + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + size: 924329 + timestamp: 1715720836466 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcurand-10.3.5.147-he02047a_2.conda + sha256: 7db821fc8f566dbb8d4e40dae62edb07d638db8c028d677a0063ece66872d19c + md5: 9c4886d513fd477df88d411cd274c202 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + size: 41590169 + timestamp: 1715711553620 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcusolver-11.6.1.9-he02047a_2.conda + sha256: df4f8a94bffb59dc3da28fb5a892c1ef2553f8afd49f141d3e2da8c92f276a56 + md5: 9f6877f8936be962f598db5e9b8efc51 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libcublas >=12.4.5.8,<12.5.0a0 + - libcusparse >=12.3.1.170,<12.4.0a0 + - libgcc-ng >=12 + - libnvjitlink >=12.4.127,<12.5.0a0 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + size: 81594879 + timestamp: 1715711788074 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcusparse-12.3.1.170-he02047a_2.conda + sha256: f2254e41c93a8c3529690c19350556708182ef699ca658c6554eeb7eb4b8c3de + md5: 1c4c7ff54dc5b947f2ab8f5ff8a28dae + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libnvjitlink >=12.4.127,<12.5.0a0 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + size: 117818451 + timestamp: 1715711610677 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda + sha256: 776092346da87a2a23502e14d91eb0c32699c4a1522b7331537bd1c3751dcff5 + md5: 5b3e1610ff8bd5443476b91d618f5b77 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + size: 523505 + timestamp: 1736877862502 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libdb-6.2.32-h9c3ff4c_0.tar.bz2 + sha256: 21fac1012ff05b131d4b5d284003dbbe7b5c4c652aa9e401b46279ed5a784372 + md5: 3f3258d8f841fbac63b36b75bdac1afd + depends: + - libgcc-ng >=9.3.0 + - libstdcxx-ng >=9.3.0 + arch: x86_64 + platform: linux + license: AGPL-3.0-only + license_family: AGPL + size: 24409456 + timestamp: 1609539093147 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.23-h4ddbbb0_0.conda + sha256: 511d801626d02f4247a04fff957cc6e9ec4cc7e8622bd9acd076bcdc5de5fe66 + md5: 8dfae1d2e74767e9ce36d5fa0d8605db + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 72255 + timestamp: 1734373823254 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.23-hec38601_0.conda + sha256: 887c02deaed6d583459eba6367023e36d8761085b2f7126e389424f57155da53 + md5: 1d8b9588be14e71df38c525767a1ac30 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 54132 + timestamp: 1734373971372 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libdrm-2.4.124-hb9d3cd8_0.conda + sha256: f0d5ffbdf3903a7840184d14c14154b503e1a96767c328f61d99ad24b6963e52 + md5: 8bc89311041d7fcb510238cf0848ccae + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libpciaccess >=0.18,<0.19.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 242533 + timestamp: 1733424409299 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda + sha256: d789471216e7aba3c184cd054ed61ce3f6dac6f87a50ec69291b9297f8c18724 + md5: c277e0a4d549b03ac1e9d6cbbe3d017b + depends: + - ncurses + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - ncurses >=6.5,<7.0a0 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + size: 134676 + timestamp: 1738479519902 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda + sha256: 66aa216a403de0bb0c1340a88d1a06adaff66bae2cfd196731aa24db9859d631 + md5: 44083d2d2c2025afca315c7a172eab2b + depends: + - ncurses + - __osx >=11.0 + - ncurses >=6.5,<7.0a0 + arch: arm64 + platform: osx + license: BSD-2-Clause + license_family: BSD + size: 107691 + timestamp: 1738479560845 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libegl-1.7.0-ha4b6fd6_2.conda + sha256: 7fd5408d359d05a969133e47af580183fbf38e2235b562193d427bb9dad79723 + md5: c151d5eb730e9b7480e6d48c0fc44048 + depends: + - __glibc >=2.17,<3.0.a0 + - libglvnd 1.7.0 ha4b6fd6_2 + arch: x86_64 + platform: linux + license: LicenseRef-libglvnd + size: 44840 + timestamp: 1731330973553 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda + sha256: 56541b98447b58e52d824bd59d6382d609e11de1f8adf20b23143e353d2b8d26 + md5: db833e03127376d461e1e13e76f09b6c + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + constrains: + - expat 2.6.4.* + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 73304 + timestamp: 1730967041968 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.4-h286801f_0.conda + sha256: e42ab5ace927ee7c84e3f0f7d813671e1cf3529f5f06ee5899606630498c2745 + md5: 38d2656dd914feb0cab8c629370768bf + depends: + - __osx >=11.0 + constrains: + - expat 2.6.4.* + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 64693 + timestamp: 1730967175868 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_0.conda + sha256: 67a6c95e33ebc763c1adc3455b9a9ecde901850eb2fceb8e646cc05ef3a663da + md5: e3eb7806380bc8bcecba6d749ad5f026 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 53415 + timestamp: 1739260413716 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 + sha256: 41b3d13efb775e340e4dba549ab5c029611ea6918703096b2eaa9c015c0750ca + md5: 086914b672be056eb70fd4285b6783b6 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 39020 + timestamp: 1636488587153 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libflac-1.4.3-h59595ed_0.conda + sha256: 65908b75fa7003167b8a8f0001e11e58ed5b1ef5e98b96ab2ba66d7c1b822c7d + md5: ee48bf17cc83a00f59ca1494d5646869 + depends: + - gettext >=0.21.1,<1.0a0 + - libgcc-ng >=12 + - libogg 1.3.* + - libogg >=1.3.4,<1.4.0a0 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 394383 + timestamp: 1687765514062 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h767d61c_2.conda + sha256: 3a572d031cb86deb541d15c1875aaa097baefc0c580b54dc61f5edab99215792 + md5: ef504d1acbd74b7cc6849ef8af47dd03 + depends: + - __glibc >=2.17,<3.0.a0 + - _openmp_mutex >=4.5 + constrains: + - libgomp 14.2.0 h767d61c_2 + - libgcc-ng ==14.2.0=*_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 847885 + timestamp: 1740240653082 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_2.conda + sha256: fb7558c328b38b2f9d2e412c48da7890e7721ba018d733ebdfea57280df01904 + md5: a2222a6ada71fb478682efe483ce0f92 + depends: + - libgcc 14.2.0 h767d61c_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 53758 + timestamp: 1740240660904 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcrypt-lib-1.11.0-hb9d3cd8_2.conda + sha256: ffc3602f9298da248786f46b00d0594d26a18feeb1b07ce88f3d7d61075e39e6 + md5: e55712ff40a054134d51b89afca57dbc + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libgpg-error >=1.51,<2.0a0 + arch: x86_64 + platform: linux + license: LGPL-2.1-or-later + size: 586185 + timestamp: 1732523190369 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgettextpo-0.23.1-h5888daf_0.conda + sha256: 190097140d9c16637aa516757d8087f17e8c22cc844c87288da64404b81ef43c + md5: a09ce5decdef385bcce78c32809fa794 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: GPL-3.0-or-later + license_family: GPL + size: 166867 + timestamp: 1739038720211 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgettextpo-devel-0.23.1-h5888daf_0.conda + sha256: 90f29ec7a7e2d758cb61459e643dcb54933dcf92194be6c29b0a1591fcbb163e + md5: 7a5d5c245a6807deab87558e9efd3ef0 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libgettextpo 0.23.1 h5888daf_0 + arch: x86_64 + platform: linux + license: GPL-3.0-or-later + license_family: GPL + size: 36818 + timestamp: 1739038746565 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_2.conda + sha256: e05263e8960da03c341650f2a3ffa4ccae4e111cb198e8933a2908125459e5a6 + md5: fb54c4ea68b460c278d26eea89cfbcc3 + depends: + - libgfortran5 14.2.0 hf1ad2bd_2 + constrains: + - libgfortran-ng ==14.2.0=*_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 53733 + timestamp: 1740240690977 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda + sha256: 44e541b4821c96b28b27fef5630883a60ce4fee91fd9c79f25a199f8f73f337b + md5: 4a55d9e169114b2b90d3ec4604cd7bbf + depends: + - libgfortran5 13.2.0 hf226fd6_3 + arch: arm64 + platform: osx + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 110233 + timestamp: 1707330749033 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-ng-14.2.0-h69a702a_2.conda + sha256: 688a5968852e677d2a64974c8869ffb120eac21997ced7d15c599f152ef6857e + md5: 4056c857af1a99ee50589a941059ec55 + depends: + - libgfortran 14.2.0 h69a702a_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 53781 + timestamp: 1740240884760 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hf1ad2bd_2.conda + sha256: c17b7cf3073a1f4e1f34d50872934fa326346e104d3c445abc1e62481ad6085c + md5: 556a4fdfac7287d349b8f09aba899693 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14.2.0 + constrains: + - libgfortran 14.2.0 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 1461978 + timestamp: 1740240671964 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda + sha256: bafc679eedb468a86aa4636061c55966186399ee0a04b605920d208d97ac579a + md5: 66ac81d54e95c534ae488726c1f698ea + depends: + - llvm-openmp >=8.0.0 + constrains: + - libgfortran 5.0.0 13_2_0_*_3 + arch: arm64 + platform: osx + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 997381 + timestamp: 1707330687590 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgl-1.7.0-ha4b6fd6_2.conda + sha256: dc2752241fa3d9e40ce552c1942d0a4b5eeb93740c9723873f6fcf8d39ef8d2d + md5: 928b8be80851f5d8ffb016f9c81dae7a + depends: + - __glibc >=2.17,<3.0.a0 + - libglvnd 1.7.0 ha4b6fd6_2 + - libglx 1.7.0 ha4b6fd6_2 + arch: x86_64 + platform: linux + license: LicenseRef-libglvnd + size: 134712 + timestamp: 1731330998354 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.82.2-h2ff4ddf_1.conda + sha256: f0804a9e46ae7b32ca698d26c1c95aa82a91f71b6051883d4a46bea725be9ea4 + md5: 37d1af619d999ee8f1f73cf5a06f4e2f + depends: + - __glibc >=2.17,<3.0.a0 + - libffi >=3.4,<4.0a0 + - libgcc >=13 + - libiconv >=1.17,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - pcre2 >=10.44,<10.45.0a0 + constrains: + - glib 2.82.2 *_1 + arch: x86_64 + platform: linux + license: LGPL-2.1-or-later + size: 3923974 + timestamp: 1737037491054 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libglvnd-1.7.0-ha4b6fd6_2.conda + sha256: 1175f8a7a0c68b7f81962699751bb6574e6f07db4c9f72825f978e3016f46850 + md5: 434ca7e50e40f4918ab701e3facd59a0 + depends: + - __glibc >=2.17,<3.0.a0 + arch: x86_64 + platform: linux + license: LicenseRef-libglvnd + size: 132463 + timestamp: 1731330968309 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libglx-1.7.0-ha4b6fd6_2.conda + sha256: 2d35a679624a93ce5b3e9dd301fff92343db609b79f0363e6d0ceb3a6478bfa7 + md5: c8013e438185f33b13814c5c488acd5c + depends: + - __glibc >=2.17,<3.0.a0 + - libglvnd 1.7.0 ha4b6fd6_2 + - xorg-libx11 >=1.8.10,<2.0a0 + arch: x86_64 + platform: linux + license: LicenseRef-libglvnd + size: 75504 + timestamp: 1731330988898 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgpg-error-1.51-hbd13f7d_1.conda + sha256: 9e0c09c1faf2151ade3ccb64e52d3c1f2dde85c00e37c6a3e6a8bced2aba68be + md5: 168cc19c031482f83b23c4eebbb94e26 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: LGPL-2.1-only + license_family: GPL + size: 268740 + timestamp: 1731920927644 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libhwloc-2.11.2-default_h0d58e46_1001.conda + sha256: d14c016482e1409ae1c50109a9ff933460a50940d2682e745ab1c172b5282a69 + md5: 804ca9e91bcaea0824a341d55b1684f2 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + - libxml2 >=2.13.4,<3.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 2423200 + timestamp: 1731374922090 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h4ce23a2_1.conda + sha256: 18a4afe14f731bfb9cf388659994263904d20111e42f841e9eea1bb6f91f4ab4 + md5: e796ff8ddc598affdf7c173d6145f087 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: LGPL-2.1-only + size: 713084 + timestamp: 1740128065462 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda + sha256: b954e09b7e49c2f2433d6f3bb73868eda5e378278b0f8c1dd10a7ef090e14f2f + md5: ea25936bb4080d843790b586850f82b8 + depends: + - libgcc-ng >=12 + constrains: + - jpeg <0.0.0a + arch: x86_64 + platform: linux + license: IJG AND BSD-3-Clause AND Zlib + size: 618575 + timestamp: 1694474974816 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.0.0-hb547adb_1.conda + sha256: a42054eaa38e84fc1e5ab443facac4bbc9d1b6b6f23f54b7bf4f1eb687e1d993 + md5: 3ff1e053dc3a2b8e36b9bfa4256a58d1 + constrains: + - jpeg <0.0.0a + arch: arm64 + platform: osx + license: IJG AND BSD-3-Clause AND Zlib + size: 547541 + timestamp: 1694475104253 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-16_linux64_mkl.tar.bz2 + build_number: 16 + sha256: d6201f860b2d76ed59027e69c2bbad6d1cb211a215ec9705cc487cde488fa1fa + md5: a2f166748917d6d6e4707841ca1f519e + depends: + - libblas 3.9.0 16_linux64_mkl + constrains: + - blas * mkl + - liblapacke 3.9.0 16_linux64_mkl + - libcblas 3.9.0 16_linux64_mkl + - mkl <2025 + arch: x86_64 + platform: linux + track_features: + - blas_mkl + license: BSD-3-Clause + license_family: BSD + size: 12791 + timestamp: 1660094578903 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-19_osxarm64_openblas.conda + build_number: 19 + sha256: f19cff537403c9feed98c7e18259022102b087f2b72a757e8a417476b9cf30c1 + md5: 3638eacb084c374f41f9efa40d20a47b + depends: + - libblas 3.9.0 19_osxarm64_openblas + constrains: + - libcblas 3.9.0 19_osxarm64_openblas + - blas * openblas + - liblapacke 3.9.0 19_osxarm64_openblas + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 14721 + timestamp: 1697484603691 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblapacke-3.9.0-16_linux64_mkl.tar.bz2 + build_number: 16 + sha256: 935036dc46c483cba8288c6de58d461ab3f42915715ffe9485105ad1dd203a0e + md5: 44ccc4d4dca6a8d57fa17442bc64b5a1 + depends: + - libblas 3.9.0 16_linux64_mkl + - libcblas 3.9.0 16_linux64_mkl + - liblapack 3.9.0 16_linux64_mkl + constrains: + - blas * mkl + - mkl <2025 + arch: x86_64 + platform: linux + track_features: + - blas_mkl + license: BSD-3-Clause + license_family: BSD + size: 12793 + timestamp: 1660094586875 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda + sha256: cad52e10319ca4585bc37f0bc7cce99ec7c15dc9168e42ccb96b741b0a27db3f + md5: 42d5b6a0f30d3c10cd88cb8584fda1cb + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: 0BSD + size: 111357 + timestamp: 1738525339684 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.4-h39f12f2_0.conda + sha256: 560c59d3834cc652a84fb45531bd335ad06e271b34ebc216e380a89798fe8e2c + md5: e3fd1f8320a100f2b210e690a57cd615 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: 0BSD + size: 98945 + timestamp: 1738525462560 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnpp-12.2.5.30-he02047a_2.conda + sha256: d8c97716825955c48681f4a3cde2f0cbbacc77c91b4cd944d4906f63385487df + md5: a96a1edd18bee676cf2dcca251d3d6a4 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + size: 99461229 + timestamp: 1715711634268 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda + sha256: 26d77a3bb4dceeedc2a41bd688564fe71bf2d149fdcf117049970bc02ff1add6 + md5: 30fd6e37fe21f86f4bd26d6ee73eeec7 + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: LGPL-2.1-only + license_family: GPL + size: 33408 + timestamp: 1697359010159 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnvfatbin-12.4.127-he02047a_2.conda + sha256: d40f37532f86cbbe63439489be0e88561819190392cc519c69365b3fc47a2c5b + md5: d746b76642b4ac6e40f1219405672beb + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + size: 792025 + timestamp: 1715711761341 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnvjitlink-12.4.127-he02047a_2.conda + sha256: 31382c8ef388a51bd2c283a239e037b8b30f9c7ecf6ec9744824445b59db39b6 + md5: 303845d6c48bf4185dc4138634650468 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + size: 16571958 + timestamp: 1715711715842 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnvjpeg-12.3.1.117-he02047a_2.conda + sha256: 49a182f8da4ba30fbfee9692976d9da349371175c9c9576768d4754a51fef326 + md5: 8f3ed0e41a4b505de40b4f96f4bfb0fa + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + size: 2491500 + timestamp: 1715711780068 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libogg-1.3.5-h4ab18f5_0.conda + sha256: 5eda3fe92b99b25dd4737226a9485078ab405672d9f621be75edcb68f1e9026d + md5: 601bfb4b3c6f0b844443bb81a56651e0 + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 205914 + timestamp: 1719301575771 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.24-openmp_hd76b1f2_0.conda + sha256: 21edfdf620ac5c93571aab452199b6b4622c445441dad88ab4d2eb326a7b91b3 + md5: aacb05989f358affe1bafd4ea7294db4 + depends: + - libgfortran 5.* + - libgfortran5 >=12.3.0 + - llvm-openmp >=15.0.7 + constrains: + - openblas >=0.3.24,<0.3.25.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 2849225 + timestamp: 1693784744674 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-2025.0.0-hdc3f47d_1.conda + sha256: 49c22b9122d4486f0443df60aeb0abb5b9ea599e985d832a4df85d30626c49a4 + md5: ff14d34bee58e2b5f75606334974d87b + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + - pugixml >=1.15,<1.16.0a0 + - tbb >=2021.13.0 + arch: x86_64 + platform: linux + size: 5639813 + timestamp: 1738909524141 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-auto-batch-plugin-2025.0.0-h4d9b6c2_1.conda + sha256: f2b01232826000e0d92130f86458ce89c91bd809a408d4db31193d35e243f4be + md5: fc72b0f92faeb3fa78c10e78d9bf4838 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libopenvino 2025.0.0 hdc3f47d_1 + - libstdcxx >=13 + - tbb >=2021.13.0 + arch: x86_64 + platform: linux + size: 112220 + timestamp: 1738909545158 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-auto-plugin-2025.0.0-h4d9b6c2_1.conda + sha256: 8b431c4ddbce91bb1cb90af276177eaa43bf63153ffe34eb77c7049013752447 + md5: 738958195251706a5a0a6de99031ec22 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libopenvino 2025.0.0 hdc3f47d_1 + - libstdcxx >=13 + - tbb >=2021.13.0 + arch: x86_64 + platform: linux + size: 238442 + timestamp: 1738909557573 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-hetero-plugin-2025.0.0-h981d57b_1.conda + sha256: f0131b50df323c81f6310ce822e708b2498b967b74824da2f900892ef0ae3f67 + md5: 41ea2673be5ab0289ef4b577f8a85ad9 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libopenvino 2025.0.0 hdc3f47d_1 + - libstdcxx >=13 + - pugixml >=1.15,<1.16.0a0 + arch: x86_64 + platform: linux + size: 195779 + timestamp: 1738909570181 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-intel-cpu-plugin-2025.0.0-hdc3f47d_1.conda + sha256: bb84bcbf3e7db8e872fdbfb1016a1cf221b3f51ebaaa2605baeba70aca893255 + md5: 1fdc53d6075e6849ad692eb8100ace05 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libopenvino 2025.0.0 hdc3f47d_1 + - libstdcxx >=13 + - pugixml >=1.15,<1.16.0a0 + - tbb >=2021.13.0 + arch: x86_64 + platform: linux + size: 12364806 + timestamp: 1738909583182 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-intel-gpu-plugin-2025.0.0-hdc3f47d_1.conda + sha256: e3c1a36a413dfefff62210e2a65f0a50aa9ed29451f604b5ec984321e7974858 + md5: e0a14de49ba878949901305fb671022c + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libopenvino 2025.0.0 hdc3f47d_1 + - libstdcxx >=13 + - ocl-icd >=2.3.2,<3.0a0 + - pugixml >=1.15,<1.16.0a0 + - tbb >=2021.13.0 + arch: x86_64 + platform: linux + size: 10030542 + timestamp: 1738909622462 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-intel-npu-plugin-2025.0.0-hdc3f47d_1.conda + sha256: 62286505dd251573024c94dd7300e2d10452019c8e70962adfe55530995cd3c4 + md5: 33d33d9b6494ab96a0b026c549f78bee + depends: + - __glibc >=2.17,<3.0.a0 + - level-zero >=1.20.3,<2.0a0 + - libgcc >=13 + - libopenvino 2025.0.0 hdc3f47d_1 + - libstdcxx >=13 + - pugixml >=1.15,<1.16.0a0 + - tbb >=2021.13.0 + arch: x86_64 + platform: linux + size: 1087865 + timestamp: 1738909654683 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-ir-frontend-2025.0.0-h981d57b_1.conda + sha256: a05b798429eb6496f7317913ce793ebdc117ccce2fdf3c6e556d2a275ad862e7 + md5: b00858b2c5328dc5353be09742ea54d8 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libopenvino 2025.0.0 hdc3f47d_1 + - libstdcxx >=13 + - pugixml >=1.15,<1.16.0a0 + arch: x86_64 + platform: linux + size: 206167 + timestamp: 1738909668116 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-onnx-frontend-2025.0.0-h6363af5_1.conda + sha256: 89efe46f944bd58002d95784f70cb0b37a3d078dafc6eaee6b1597b2662af920 + md5: 6eb4c9e84623c749f8f1c210d1de11ae + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libopenvino 2025.0.0 hdc3f47d_1 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + arch: x86_64 + platform: linux + size: 1652945 + timestamp: 1738909681015 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-paddle-frontend-2025.0.0-h6363af5_1.conda + sha256: 1358bac09d08abe76f7f9915c3ef7b524e669b49d208b2f563b02eef07ce195e + md5: 444a64a0bbf0b83a595f3dc18dee9417 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libopenvino 2025.0.0 hdc3f47d_1 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + arch: x86_64 + platform: linux + size: 678731 + timestamp: 1738909695599 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-pytorch-frontend-2025.0.0-h5888daf_1.conda + sha256: b26726a52836441f18f40d6eeb16f7a697a40c53fbfbc3fd59b873b54e3b1c64 + md5: cfd1ea36718a47d10d2dbad9c2792f75 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libopenvino 2025.0.0 hdc3f47d_1 + - libstdcxx >=13 + arch: x86_64 + platform: linux + size: 1100691 + timestamp: 1738909709817 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-tensorflow-frontend-2025.0.0-h630ec5c_1.conda + sha256: 5cf431ab5e4eb3412757faad4698032c8427ea6ae80fdb22cf050f11890cb907 + md5: c3f2c6e29fdf509e57acd7ecd4dc95db + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libopenvino 2025.0.0 hdc3f47d_1 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + - snappy >=1.2.1,<1.3.0a0 + arch: x86_64 + platform: linux + size: 1294838 + timestamp: 1738909723984 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-tensorflow-lite-frontend-2025.0.0-h5888daf_1.conda + sha256: 355a0d5a14b6451a103531adba066ada50be21bd0d7ba53761fe578f25cab5dd + md5: af2ac1ba29a7c00a0e5fbb03f7a13ae5 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libopenvino 2025.0.0 hdc3f47d_1 + - libstdcxx >=13 + arch: x86_64 + platform: linux + size: 481998 + timestamp: 1738909737796 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libopus-1.3.1-h7f98852_1.tar.bz2 + sha256: 0e1c2740ebd1c93226dc5387461bbcf8142c518f2092f3ea7551f77755decc8f + md5: 15345e56d527b330e1cacbdf58676e8f + depends: + - libgcc-ng >=9.3.0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 260658 + timestamp: 1606823578035 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libpciaccess-0.18-hd590300_0.conda + sha256: c0a30ac74eba66ea76a4f0a39acc7833f5ed783a632ca3bb6665b2d81aabd2fb + md5: 48f4330bfcd959c3cfb704d424903c82 + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 28361 + timestamp: 1707101388552 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.47-h943b412_0.conda + sha256: 23367d71da58c9a61c8cbd963fcffb92768d4ae5ffbef9a47cdf1f54f98c5c36 + md5: 55199e2ae2c3651f6f9b2a447b47bdc9 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux + license: zlib-acknowledgement + size: 288701 + timestamp: 1739952993639 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.47-h3783ad8_0.conda + sha256: dc93cc30f59b28e7812c6f14d2c2e590b509c38092cce7ababe6b23541b7ed8f + md5: 3550e05e3af94a3fa9cef2694417ccdf + depends: + - __osx >=11.0 + - libzlib >=1.3.1,<2.0a0 + arch: arm64 + platform: osx + license: zlib-acknowledgement + size: 259332 + timestamp: 1739953032676 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda + sha256: 51125ebb8b7152e4a4e69fd2398489c4ec8473195c27cde3cbdf1cb6d18c5493 + md5: d8703f1ffe5a06356f06467f1d0b9464 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 2960815 + timestamp: 1735577210663 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.3-h3bd63a1_1.conda + sha256: f58a16b13ad53346903c833e266f83c3d770a43a432659b98710aed85ca885e7 + md5: bdbfea4cf45ae36652c6bbcc2e7ebe91 + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=18 + - libzlib >=1.3.1,<2.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 2271580 + timestamp: 1735576361997 +- conda: https://conda.anaconda.org/conda-forge/linux-64/librsvg-2.58.4-h49af25d_2.conda + sha256: 475013475a3209c24a82f9e80c545d56ccca2fa04df85952852f3d73caa38ff9 + md5: b9846db0abffb09847e2cb0fec4b4db6 + depends: + - __glibc >=2.17,<3.0.a0 + - cairo >=1.18.2,<2.0a0 + - freetype >=2.12.1,<3.0a0 + - gdk-pixbuf >=2.42.12,<3.0a0 + - harfbuzz >=10.1.0,<11.0a0 + - libgcc >=13 + - libglib >=2.82.2,<3.0a0 + - libpng >=1.6.44,<1.7.0a0 + - libxml2 >=2.13.5,<3.0a0 + - pango >=1.54.0,<2.0a0 + constrains: + - __glibc >=2.17 + arch: x86_64 + platform: linux + license: LGPL-2.1-or-later + size: 6342757 + timestamp: 1734902068235 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsentencepiece-0.2.0-h8e10757_10.conda + sha256: dc399e0f04a09f8c1807c3b36e578eb81f81891c0ddf21de9c1fb9f048ce4031 + md5: 4f43dbcfacd3cc9a183dd3a48b94d3c0 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 823649 + timestamp: 1735627841126 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsentencepiece-0.2.0-he13a0af_10.conda + sha256: 3347a8840d085ce1661928e736229f068d56c84312fbed90886e059023d85611 + md5: 1f67e5e30edd56e0a0bf6df6bb711a9d + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 754657 + timestamp: 1735628030895 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsndfile-1.2.2-hc60ed4a_1.conda + sha256: f709cbede3d4f3aee4e2f8d60bd9e256057f410bd60b8964cb8cf82ec1457573 + md5: ef1910918dd895516a769ed36b5b3a4e + depends: + - lame >=3.100,<3.101.0a0 + - libflac >=1.4.3,<1.5.0a0 + - libgcc-ng >=12 + - libogg >=1.3.4,<1.4.0a0 + - libopus >=1.3.1,<2.0a0 + - libstdcxx-ng >=12 + - libvorbis >=1.3.7,<1.4.0a0 + - mpg123 >=1.32.1,<1.33.0a0 + arch: x86_64 + platform: linux + license: LGPL-2.1-or-later + license_family: LGPL + size: 354372 + timestamp: 1695747735668 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda + sha256: 0105bd108f19ea8e6a78d2d994a6d4a8db16d19a41212070d2d1d48a63c34161 + md5: a587892d3c13b6621a6091be690dbca2 + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: ISC + size: 205978 + timestamp: 1716828628198 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda + sha256: fade8223e1e1004367d7101dd17261003b60aa576df6d7802191f8972f7470b1 + md5: a7ce36e284c5faaf93c220dfc39e3abd + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: ISC + size: 164972 + timestamp: 1716828607917 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.49.1-hee588c1_1.conda + sha256: 7a09eef804ef7cf4d88215c2297eabb72af8ad0bd5b012060111c289f14bbe7d + md5: 73cea06049cc4174578b432320a003b8 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux + license: Unlicense + size: 915956 + timestamp: 1739953155793 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.1-h3f77e49_1.conda + sha256: 266639fb10ca92287961574b0b4d6031fa40dd9d723d64a0fcb08513a24dab03 + md5: c83357a21092bd952933c36c5cb4f4d6 + depends: + - __osx >=11.0 + - libzlib >=1.3.1,<2.0a0 + arch: arm64 + platform: osx + license: Unlicense + size: 898767 + timestamp: 1739953312379 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-h8f9b012_2.conda + sha256: 8f5bd92e4a24e1d35ba015c5252e8f818898478cb3bc50bd8b12ab54707dc4da + md5: a78c856b6dc6bf4ea8daeb9beaaa3fb0 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc 14.2.0 h767d61c_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 3884556 + timestamp: 1740240685253 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_2.conda + sha256: e86f38b007cf97cc2c67cd519f2de12a313c4ee3f5ef11652ad08932a5e34189 + md5: c75da67f045c2627f59e6fcb5f4e3a9b + depends: + - libstdcxx 14.2.0 h8f9b012_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 53830 + timestamp: 1740240722530 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsystemd0-257.3-h3dc2cb9_0.conda + sha256: dd566e2ef4a83b27d2b26d988cbbed50456294892744639f30f19954d2ee3287 + md5: df057752e83bd254f6d65646eb67cd2e + depends: + - __glibc >=2.17,<3.0.a0 + - libcap >=2.71,<2.72.0a0 + - libgcc >=13 + - libgcrypt-lib >=1.11.0,<2.0a0 + - liblzma >=5.6.4,<6.0a0 + - lz4-c >=1.10.0,<1.11.0a0 + - zstd >=1.5.6,<1.6.0a0 + arch: x86_64 + platform: linux + license: LGPL-2.1-or-later + size: 487271 + timestamp: 1739569869860 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hd9ff511_3.conda + sha256: b224e16b88d76ea95e4af56e2bc638c603bd26a770b98d117d04541d3aafa002 + md5: 0ea6510969e1296cc19966fad481f6de + depends: + - __glibc >=2.17,<3.0.a0 + - lerc >=4.0.0,<5.0a0 + - libdeflate >=1.23,<1.24.0a0 + - libgcc >=13 + - libjpeg-turbo >=3.0.0,<4.0a0 + - liblzma >=5.6.3,<6.0a0 + - libstdcxx >=13 + - libwebp-base >=1.4.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - zstd >=1.5.6,<1.6.0a0 + arch: x86_64 + platform: linux + license: HPND + size: 428173 + timestamp: 1734398813264 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-h551f018_3.conda + sha256: 91417846157e04992801438a496b151df89604b2e7c6775d6f701fcd0cbed5ae + md5: a5d084a957563e614ec0c0196d890654 + depends: + - __osx >=11.0 + - lerc >=4.0.0,<5.0a0 + - libcxx >=18 + - libdeflate >=1.23,<1.24.0a0 + - libjpeg-turbo >=3.0.0,<4.0a0 + - liblzma >=5.6.3,<6.0a0 + - libwebp-base >=1.4.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - zstd >=1.5.6,<1.6.0a0 + arch: arm64 + platform: osx + license: HPND + size: 370600 + timestamp: 1734398863052 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libudev1-257.3-h9a4d06a_0.conda + sha256: 35bdafc4b02f61a327f82bb11263c31466367e50b4e5efab3d413509315cb0a7 + md5: e7817c912b25f7599a50eba270e1a463 + depends: + - __glibc >=2.17,<3.0.a0 + - libcap >=2.71,<2.72.0a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: LGPL-2.1-or-later + size: 142897 + timestamp: 1739569881116 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libunwind-1.6.2-h9c3ff4c_0.tar.bz2 + sha256: f2ac872920833960e514ce9efd8f7c08ce66dd870738d73839d1bce1ac497de6 + md5: a730b2badd586580c5752cc73842e068 + depends: + - libgcc-ng >=9.4.0 + - libstdcxx-ng >=9.4.0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 75491 + timestamp: 1638450786937 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liburing-2.9-h84d6215_0.conda + sha256: bfa34a5a929d792dfcfbbe2d9ee21bd870d73d646512e21c871dab0b80194468 + md5: ecd409e7bfcf4ee73f74d7a2cc91a4c3 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 121336 + timestamp: 1738604403935 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libusb-1.0.27-h520f47e_100.conda + sha256: c641cdf5c398441df9863291c20574c37b1e4a6113b18a41c6a43ccc1df1b92c + md5: 82e46dc001ab1ef291554ead981b0cde + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc-ng >=12 + - libudev1 >=255 + arch: x86_64 + platform: linux + license: LGPL-2.1-or-later + size: 86196 + timestamp: 1706828413450 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda + sha256: 787eb542f055a2b3de553614b25f09eefb0a0931b0c87dbcce6efdfd92f04f18 + md5: 40b61aab5c7ba9ff276c41cfffe6b80b + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 33601 + timestamp: 1680112270483 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libva-2.22.0-h8a09558_1.conda + sha256: 0bd81019e02cce8d9d4077c96b82ca03c9b0ece67831c7437f977ca1f5a924a3 + md5: 139262125a3eac8ff6eef898598745a3 + depends: + - __glibc >=2.17,<3.0.a0 + - libdrm >=2.4.123,<2.5.0a0 + - libegl >=1.7.0,<2.0a0 + - libgcc >=13 + - libgl >=1.7.0,<2.0a0 + - libglx >=1.7.0,<2.0a0 + - libxcb >=1.16,<2.0.0a0 + - wayland >=1.23.1,<2.0a0 + - wayland-protocols + - xorg-libx11 >=1.8.9,<2.0a0 + - xorg-libxext >=1.3.4,<2.0a0 + - xorg-libxfixes + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 217708 + timestamp: 1726828458441 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libvorbis-1.3.7-h9c3ff4c_0.tar.bz2 + sha256: 53080d72388a57b3c31ad5805c93a7328e46ff22fab7c44ad2a86d712740af33 + md5: 309dec04b70a3cc0f1e84a4013683bc0 + depends: + - libgcc-ng >=9.3.0 + - libogg >=1.3.4,<1.4.0a0 + - libstdcxx-ng >=9.3.0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 286280 + timestamp: 1610609811627 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libvpx-1.14.1-hac33072_0.conda + sha256: e7d2daf409c807be48310fcc8924e481b62988143f582eb3a58c5523a6763b13 + md5: cde393f461e0c169d9ffb2fc70f81c33 + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 1022466 + timestamp: 1717859935011 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.5.0-h851e524_0.conda + sha256: c45283fd3e90df5f0bd3dbcd31f59cdd2b001d424cf30a07223655413b158eaf + md5: 63f790534398730f59e1b899c3644d4a + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + constrains: + - libwebp 1.5.0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 429973 + timestamp: 1734777489810 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.5.0-h2471fea_0.conda + sha256: f8bdb876b4bc8cb5df47c28af29188de8911c3fea4b799a33743500149de3f4a + md5: 569466afeb84f90d5bb88c11cc23d746 + depends: + - __osx >=11.0 + constrains: + - libwebp 1.5.0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 290013 + timestamp: 1734777593617 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda + sha256: 666c0c431b23c6cec6e492840b176dde533d48b7e6fb8883f5071223433776aa + md5: 92ed62436b625154323d40d5f2f11dd7 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - pthread-stubs + - xorg-libxau >=1.0.11,<2.0a0 + - xorg-libxdmcp + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 395888 + timestamp: 1727278577118 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxcb-1.17.0-hdb1d25a_0.conda + sha256: bd3816218924b1e43b275863e21a3e13a5db4a6da74cca8e60bc3c213eb62f71 + md5: af523aae2eca6dfa1c8eec693f5b9a79 + depends: + - __osx >=11.0 + - pthread-stubs + - xorg-libxau >=1.0.11,<2.0a0 + - xorg-libxdmcp + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 323658 + timestamp: 1727278733917 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda + sha256: 6ae68e0b86423ef188196fff6207ed0c8195dd84273cb5623b85aa08033a410c + md5: 5aa797f8787fe7a17d1b0821485b5adc + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: LGPL-2.1-or-later + size: 100393 + timestamp: 1702724383534 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libxkbcommon-1.8.0-hc4a0caf_0.conda + sha256: 583203155abcfb03938d8473afbf129156b5b30301a0f796c8ecca8c5b7b2ed2 + md5: f1656760dbf05f47f962bfdc59fc3416 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + - libxcb >=1.17.0,<2.0a0 + - libxml2 >=2.13.5,<3.0a0 + - xkeyboard-config + - xorg-libxau >=1.0.12,<2.0a0 + arch: x86_64 + platform: linux + license: MIT/X11 Derivative + license_family: MIT + size: 642349 + timestamp: 1738735301999 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.6-h8d12d68_0.conda + sha256: db8af71ea9c0ae95b7cb4a0f59319522ed2243942437a1200ceb391493018d85 + md5: 328382c0e0ca648e5c189d5ec336c604 + depends: + - __glibc >=2.17,<3.0.a0 + - icu >=75.1,<76.0a0 + - libgcc >=13 + - libiconv >=1.18,<2.0a0 + - liblzma >=5.6.4,<6.0a0 + - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 690296 + timestamp: 1739952967309 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda + sha256: d4bfe88d7cb447768e31650f06257995601f89076080e76df55e3112d4e47dc4 + md5: edb0dca6bc32e4f4789199455a1dbeb8 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + constrains: + - zlib 1.3.1 *_2 + arch: x86_64 + platform: linux + license: Zlib + license_family: Other + size: 60963 + timestamp: 1727963148474 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda + sha256: ce34669eadaba351cd54910743e6a2261b67009624dbc7daeeafdef93616711b + md5: 369964e85dc26bfe78f41399b366c435 + depends: + - __osx >=11.0 + constrains: + - zlib 1.3.1 *_2 + arch: arm64 + platform: osx + license: Zlib + license_family: Other + size: 46438 + timestamp: 1727963202283 +- conda: https://conda.anaconda.org/conda-forge/linux-64/llvm-openmp-15.0.7-h0cdce71_0.conda + sha256: 7c67d383a8b1f3e7bf9e046e785325c481f6868194edcfb9d78d261da4ad65d4 + md5: 589c9a3575a050b583241c3d688ad9aa + depends: + - libzlib >=1.2.13,<2.0.0a0 + constrains: + - openmp 15.0.7|15.0.7.* + arch: x86_64 + platform: linux + license: Apache-2.0 WITH LLVM-exception + license_family: APACHE + size: 3268766 + timestamp: 1673584331056 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-15.0.7-h7cfbb63_0.conda + sha256: 6cc4cf021fc1f06df3b97598bf9583fe7a04fad6a4eef9882558f7932f362bc0 + md5: 358164e15a9320f11b84a53fb8d8e446 + constrains: + - openmp 15.0.7|15.0.7.* + arch: arm64 + platform: osx + license: Apache-2.0 WITH LLVM-exception + license_family: APACHE + size: 263326 + timestamp: 1673584823527 +- conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.10.0-h5888daf_1.conda + sha256: 47326f811392a5fd3055f0f773036c392d26fdb32e4d8e7a8197eed951489346 + md5: 9de5350a85c4a20c685259b889aa6393 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + size: 167055 + timestamp: 1733741040117 +- conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_1.conda + sha256: 4a6bf68d2a2b669fecc9a4a009abd1cf8e72c2289522ff00d81b5a6e51ae78f5 + md5: eb227c3e0bf58f5bd69c0532b157975b + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - jinja2 >=3.0.0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 24604 + timestamp: 1733219911494 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312h998013c_1.conda + sha256: 4aa997b244014d3707eeef54ab0ee497d12c0d0d184018960cce096169758283 + md5: 46e547061080fddf9cf95a0327e8aba6 + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - jinja2 >=3.0.0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 24048 + timestamp: 1733219945697 +- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022718-release.conda + noarch: python + sha256: f3dcb14fed5470c0fc521542cbd2f1c56ca7e46d560f46176b8f926198cb3cbd + md5: 01fe5e0cf46c84a6345e323ad1316764 + depends: + - max-core ==25.2.0.dev2025022718 release + - max-python ==25.2.0.dev2025022718 release + - mojo-jupyter ==25.2.0.dev2025022718 release + - mblack ==25.2.0.dev2025022718 release + license: LicenseRef-Modular-Proprietary + size: 9905 + timestamp: 1740680254354 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022718-release.conda + sha256: 847d5767109a305d7bcad4ac29248a74a384034692934a0c54b00a590c27094a + md5: fc5a9ae36c7805979bd58ca55a25066f + depends: + - mblack ==25.2.0.dev2025022718 release + license: LicenseRef-Modular-Proprietary + size: 249811868 + timestamp: 1740680254354 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022718-release.conda + sha256: fb28d9e61aa507ea84b470082d3dc96844a24fe672d4e4c57e832655c5d0a202 + md5: dd8734453f7276a258f3351cc5c506c3 + depends: + - mblack ==25.2.0.dev2025022718 release + license: LicenseRef-Modular-Proprietary + size: 217273450 + timestamp: 1740681819160 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022718-release.conda + noarch: python + sha256: 831b4d62f66f0083321121c6ba25dedab3ee41d5e9f19d9752969592214af398 + md5: f828ace91aa057e4774e84ad459adccf + depends: + - max-core ==25.2.0.dev2025022718 release + - click >=8.0.0 + - numpy >=1.18,<2.0 + - sentencepiece >=0.2.0 + - tqdm >=4.67.1 + constrains: + - aiohttp >=3.11.12 + - fastapi >=0.114.2 + - gguf >=0.14.0 + - hf-transfer >=0.1.9 + - httpx >=0.28.1 + - huggingface_hub >=0.24.0 + - nvitop >=1.4.1 + - opentelemetry-api >=1.29.0 + - opentelemetry-exporter-otlp-proto-http >=1.27.0 + - opentelemetry-exporter-prometheus <1.0.0 + - opentelemetry-sdk >=1.29.0,<2.0 + - pillow >=10.3.0 + - prometheus_client >=0.21.0 + - prometheus-async >=22.2.0 + - psutil >=6.1.1 + - pydantic + - pydantic-settings >=2.7.1 + - pyinstrument >=5.0.1 + - python-json-logger >=2.0.7 + - requests >=2.32.3 + - rich >=13.9.4 + - safetensors >=0.5.2 + - sentinel >=0.3.0 + - sse-starlette >=2.1.2 + - tokenizers >=0.19.0 + - pytorch >=2.2.2,<=2.5.1 + - transformers >=4.40.1 + - uvicorn >=0.34.0 + - uvloop >=0.21.0 + - xgrammar ==0.1.11 + license: LicenseRef-Modular-Proprietary + size: 123584411 + timestamp: 1740680254354 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022718-release.conda + noarch: python + sha256: 7da9f4655082bb64c2b0cc996ffefa0ce5c49744854ed77a9b0d000e27cf5a55 + md5: b16d498a148aa61dca2a6bfec5cb8e46 + depends: + - max-core ==25.2.0.dev2025022718 release + - click >=8.0.0 + - numpy >=1.18,<2.0 + - sentencepiece >=0.2.0 + - tqdm >=4.67.1 + constrains: + - aiohttp >=3.11.12 + - fastapi >=0.114.2 + - gguf >=0.14.0 + - hf-transfer >=0.1.9 + - httpx >=0.28.1 + - huggingface_hub >=0.24.0 + - nvitop >=1.4.1 + - opentelemetry-api >=1.29.0 + - opentelemetry-exporter-otlp-proto-http >=1.27.0 + - opentelemetry-exporter-prometheus <1.0.0 + - opentelemetry-sdk >=1.29.0,<2.0 + - pillow >=10.3.0 + - prometheus_client >=0.21.0 + - prometheus-async >=22.2.0 + - psutil >=6.1.1 + - pydantic + - pydantic-settings >=2.7.1 + - pyinstrument >=5.0.1 + - python-json-logger >=2.0.7 + - requests >=2.32.3 + - rich >=13.9.4 + - safetensors >=0.5.2 + - sentinel >=0.3.0 + - sse-starlette >=2.1.2 + - tokenizers >=0.19.0 + - pytorch >=2.2.2,<=2.5.1 + - transformers >=4.40.1 + - uvicorn >=0.34.0 + - uvloop >=0.21.0 + - xgrammar ==0.1.11 + license: LicenseRef-Modular-Proprietary + size: 112658409 + timestamp: 1740681819160 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022718-release.conda + noarch: python + sha256: ff042a8abfed0e2e36b207e3d4f59a2b4577dea7f099b08d1aaef128ab796f09 + md5: 719ca7123d53415adcdd7f0cb8396c51 + depends: + - python >=3.9,<3.13 + - click >=8.0.0 + - mypy_extensions >=0.4.3 + - packaging >=22.0 + - pathspec >=0.9.0 + - platformdirs >=2 + - typing_extensions >=v4.12.2 + - python + license: MIT + size: 130852 + timestamp: 1740680254353 +- conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-2022.1.0-h84fe81f_915.tar.bz2 + sha256: 767318c4f2057822a7ebc238d6065ce12c6ae60df4ab892758adb79b1057ce02 + md5: b9c8f925797a93dbff45e1626b025a6b + depends: + - _openmp_mutex * *_llvm + - _openmp_mutex >=4.5 + - llvm-openmp >=14.0.3 + - tbb 2021.* + arch: x86_64 + platform: linux + license: LicenseRef-ProprietaryIntel + license_family: Proprietary + size: 209326825 + timestamp: 1652946040193 +- conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-devel-2022.1.0-ha770c72_916.tar.bz2 + sha256: 93d957608b17ada3039ff0acad2b8596451caa6829b3502fe87375e639ffc34e + md5: 69ba49e445f87aea2cba343a71a35ca2 + depends: + - mkl 2022.1.0 h84fe81f_915 + - mkl-include 2022.1.0 h84fe81f_915 + arch: x86_64 + platform: linux + license: LicenseRef-ProprietaryIntel + license_family: Proprietary + size: 25614 + timestamp: 1652946458276 +- conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-include-2022.1.0-h84fe81f_915.tar.bz2 + sha256: 63415fe64e99f8323d0191d45ea5b1ec3973317e728b9071267ffb7ff3b38364 + md5: 2dcd1acca05c11410d4494d7fc7dfa2a + arch: x86_64 + platform: linux + license: LicenseRef-ProprietaryIntel + license_family: Proprietary + size: 762563 + timestamp: 1652946186347 +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022718-release.conda + noarch: python + sha256: 19c33e23b27e240fee0b2a1d56921802ac88558dc2da417837cd590175561e16 + md5: 6b8d00b15817db11e026f824f7f0ba14 + depends: + - max-core ==25.2.0.dev2025022718 release + - python >=3.9,<3.13 + - jupyter_client >=8.6.2,<8.7 + - python + license: LicenseRef-Modular-Proprietary + size: 22981 + timestamp: 1740680254354 +- conda: https://conda.anaconda.org/conda-forge/linux-64/mpc-1.3.1-h24ddda3_1.conda + sha256: 1bf794ddf2c8b3a3e14ae182577c624fa92dea975537accff4bc7e5fea085212 + md5: aa14b9a5196a6d8dd364164b7ce56acf + depends: + - __glibc >=2.17,<3.0.a0 + - gmp >=6.3.0,<7.0a0 + - libgcc >=13 + - mpfr >=4.2.1,<5.0a0 + arch: x86_64 + platform: linux + license: LGPL-3.0-or-later + license_family: LGPL + size: 116777 + timestamp: 1725629179524 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/mpc-1.3.1-h8f1351a_1.conda + sha256: 2700899ad03302a1751dbf2bca135407e470dd83ac897ab91dd8675d4300f158 + md5: a5635df796b71f6ca400fc7026f50701 + depends: + - __osx >=11.0 + - gmp >=6.3.0,<7.0a0 + - mpfr >=4.2.1,<5.0a0 + arch: arm64 + platform: osx + license: LGPL-3.0-or-later + license_family: LGPL + size: 104766 + timestamp: 1725629165420 +- conda: https://conda.anaconda.org/conda-forge/linux-64/mpfr-4.2.1-h90cbb55_3.conda + sha256: f25d2474dd557ca66c6231c8f5ace5af312efde1ba8290a6ea5e1732a4e669c0 + md5: 2eeb50cab6652538eee8fc0bc3340c81 + depends: + - __glibc >=2.17,<3.0.a0 + - gmp >=6.3.0,<7.0a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: LGPL-3.0-only + license_family: LGPL + size: 634751 + timestamp: 1725746740014 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/mpfr-4.2.1-hb693164_3.conda + sha256: 4463e4e2aba7668e37a1b8532859191b4477a6f3602a5d6b4d64ad4c4baaeac5 + md5: 4e4ea852d54cc2b869842de5044662fb + depends: + - __osx >=11.0 + - gmp >=6.3.0,<7.0a0 + arch: arm64 + platform: osx + license: LGPL-3.0-only + license_family: LGPL + size: 345517 + timestamp: 1725746730583 +- conda: https://conda.anaconda.org/conda-forge/linux-64/mpg123-1.32.9-hc50e24c_0.conda + sha256: 39c4700fb3fbe403a77d8cc27352fa72ba744db487559d5d44bf8411bb4ea200 + md5: c7f302fd11eeb0987a6a5e1f3aed6a21 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: LGPL-2.1-only + license_family: LGPL + size: 491140 + timestamp: 1730581373280 +- conda: https://conda.anaconda.org/conda-forge/noarch/mpmath-1.3.0-pyhd8ed1ab_1.conda + sha256: 7d7aa3fcd6f42b76bd711182f3776a02bef09a68c5f117d66b712a6d81368692 + md5: 3585aa87c43ab15b167b574cd73b057b + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 439705 + timestamp: 1733302781386 +- conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda + sha256: 1895f47b7d68581a6facde5cb13ab8c2764c2e53a76bd746f8f98910dc4e08fe + md5: 29097e7ea634a45cc5386b95cac6568f + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 10854 + timestamp: 1733230986902 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda + sha256: 3fde293232fa3fca98635e1167de6b7c7fda83caf24b9d6c91ec9eefb4f4d586 + md5: 47e340acb35de30501a76c7c799c41d7 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: X11 AND BSD-3-Clause + size: 891641 + timestamp: 1738195959188 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda + sha256: 2827ada40e8d9ca69a153a45f7fd14f32b2ead7045d3bbb5d10964898fe65733 + md5: 068d497125e4bf8a66bf707254fff5ae + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: X11 AND BSD-3-Clause + size: 797030 + timestamp: 1738196177597 +- conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda + sha256: 39625cd0c9747fa5c46a9a90683b8997d8b9649881b3dc88336b13b7bdd60117 + md5: fd40bf7f7f4bc4b647dc8512053d9873 + depends: + - python >=3.10 + - python + constrains: + - numpy >=1.24 + - scipy >=1.10,!=1.11.0,!=1.11.1 + - matplotlib >=3.7 + - pandas >=2.0 + license: BSD-3-Clause + license_family: BSD + size: 1265008 + timestamp: 1731521053408 +- conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda + sha256: fe3459c75cf84dcef6ef14efcc4adb0ade66038ddd27cadb894f34f4797687d8 + md5: d8285bea2a350f63fab23bf460221f3f + depends: + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - libgcc-ng >=12 + - liblapack >=3.9.0,<4.0a0 + - libstdcxx-ng >=12 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - numpy-base <0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 7484186 + timestamp: 1707225809722 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda + sha256: c8841d6d6f61fd70ca80682efbab6bdb8606dc77c68d8acabfbd7c222054f518 + md5: d83fc83d589e2625a3451c9a7e21047c + depends: + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - libcxx >=16 + - liblapack >=3.9.0,<4.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - numpy-base <0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 6073136 + timestamp: 1707226249608 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ocl-icd-2.3.2-hb9d3cd8_2.conda + sha256: 96ddd13054032fabd54636f634d50bc74d10d8578bc946405c429b2d895db6f2 + md5: 2e8d2b469559d6b2cb6fd4b34f9c8d7f + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - opencl-headers >=2024.10.24 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + size: 94934 + timestamp: 1732915114536 +- conda: https://conda.anaconda.org/conda-forge/linux-64/opencl-headers-2024.10.24-h5888daf_0.conda + sha256: 7e1d3ad55d4ad3ddf826e205d4603b9ed40c5e655a9dfd66b56f459d7ba14db3 + md5: 3ba02cce423fdac1a8582bd6bb189359 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 54060 + timestamp: 1732912937444 +- conda: https://conda.anaconda.org/conda-forge/linux-64/openh264-2.6.0-hc22cd8d_0.conda + sha256: 3f231f2747a37a58471c82a9a8a80d92b7fece9f3fce10901a5ac888ce00b747 + md5: b28cf020fd2dead0ca6d113608683842 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + size: 731471 + timestamp: 1739400677213 +- conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.3-h5fbd93e_0.conda + sha256: 5bee706ea5ba453ed7fd9da7da8380dd88b865c8d30b5aaec14d2b6dd32dbc39 + md5: 9e5816bc95d285c115a3ebc2f8563564 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libpng >=1.6.44,<1.7.0a0 + - libstdcxx >=13 + - libtiff >=4.7.0,<4.8.0a0 + - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + size: 342988 + timestamp: 1733816638720 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/openjpeg-2.5.3-h8a3d83b_0.conda + sha256: 1d59bc72ca7faac06d349c1a280f5cfb8a57ee5896f1e24225a997189d7418c7 + md5: 4b71d78648dbcf68ce8bf22bb07ff838 + depends: + - __osx >=11.0 + - libcxx >=18 + - libpng >=1.6.44,<1.7.0a0 + - libtiff >=4.7.0,<4.8.0a0 + - libzlib >=1.3.1,<2.0a0 + arch: arm64 + platform: osx + license: BSD-2-Clause + license_family: BSD + size: 319362 + timestamp: 1733816781741 +- conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.1-h7b32b05_0.conda + sha256: cbf62df3c79a5c2d113247ddea5658e9ff3697b6e741c210656e239ecaf1768f + md5: 41adf927e746dc75ecf0ef841c454e48 + depends: + - __glibc >=2.17,<3.0.a0 + - ca-certificates + - libgcc >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 2939306 + timestamp: 1739301879343 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.1-h81ee809_0.conda + sha256: 4f8e2389e1b711b44182a075516d02c80fa7a3a7e25a71ff1b5ace9eae57a17a + md5: 75f9f0c7b1740017e2db83a53ab9a28e + depends: + - __osx >=11.0 + - ca-certificates + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 2934522 + timestamp: 1739301896733 +- conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + sha256: da157b19bcd398b9804c5c52fc000fcb8ab0525bdb9c70f95beaa0bb42f85af1 + md5: 3bfed7e6228ebf2f7b9eaa47f1b4e2aa + depends: + - python >=3.8 + license: Apache-2.0 + license_family: APACHE + size: 60164 + timestamp: 1733203368787 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pango-1.56.1-h861ebed_0.conda + sha256: 20e5e280859a7803e8b5a09f18a7e43b56d1b8e61e4888c1a24cbb0d5b9cabd3 + md5: 59e660508a4de9401543303d5f576aeb + depends: + - __glibc >=2.17,<3.0.a0 + - cairo >=1.18.2,<2.0a0 + - fontconfig >=2.15.0,<3.0a0 + - fonts-conda-ecosystem + - freetype >=2.12.1,<3.0a0 + - fribidi >=1.0.10,<2.0a0 + - harfbuzz >=10.2.0,<11.0a0 + - libexpat >=2.6.4,<3.0a0 + - libgcc >=13 + - libglib >=2.82.2,<3.0a0 + - libpng >=1.6.45,<1.7.0a0 + - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux + license: LGPL-2.1-or-later + size: 451406 + timestamp: 1737510786003 +- conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + sha256: 9f64009cdf5b8e529995f18e03665b03f5d07c0b17445b8badef45bde76249ee + md5: 617f15191456cc6a13db418a275435e5 + depends: + - python >=3.9 + license: MPL-2.0 + license_family: MOZILLA + size: 41075 + timestamp: 1733233471940 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.44-hba22ea6_2.conda + sha256: 1087716b399dab91cc9511d6499036ccdc53eb29a288bebcb19cf465c51d7c0d + md5: df359c09c41cd186fffb93a2d87aa6f5 + depends: + - __glibc >=2.17,<3.0.a0 + - bzip2 >=1.0.8,<2.0a0 + - libgcc-ng >=12 + - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 952308 + timestamp: 1723488734144 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-11.1.0-py312h80c1187_0.conda + sha256: 5c347962202b55ae4d8a463e0555c5c6ca33396266a08284bf1384399894e541 + md5: d3894405f05b2c0f351d5de3ae26fa9c + depends: + - __glibc >=2.17,<3.0.a0 + - freetype >=2.12.1,<3.0a0 + - lcms2 >=2.16,<3.0a0 + - libgcc >=13 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libtiff >=4.7.0,<4.8.0a0 + - libwebp-base >=1.5.0,<2.0a0 + - libxcb >=1.17.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - openjpeg >=2.5.3,<3.0a0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - tk >=8.6.13,<8.7.0a0 + arch: x86_64 + platform: linux + license: HPND + size: 42749785 + timestamp: 1735929845390 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-11.1.0-py312h50aef2c_0.conda + sha256: b29b7c915053e06a7a5b4118760202c572c9c35d23bd6ce8e73270b6a50e50ee + md5: 94d6ba8cd468668a9fb04193b0f4b36e + depends: + - __osx >=11.0 + - freetype >=2.12.1,<3.0a0 + - lcms2 >=2.16,<3.0a0 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libtiff >=4.7.0,<4.8.0a0 + - libwebp-base >=1.5.0,<2.0a0 + - libxcb >=1.17.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - openjpeg >=2.5.3,<3.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - tk >=8.6.13,<8.7.0a0 + arch: arm64 + platform: osx + license: HPND + size: 42852329 + timestamp: 1735930118976 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.44.2-h29eaf8c_0.conda + sha256: 747c58db800d5583fee78e76240bf89cbaeedf7ab1ef339c2990602332b9c4be + md5: 5e2a7acfa2c24188af39e7944e1b3604 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 381072 + timestamp: 1733698987122 +- conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + sha256: bb50f6499e8bc1d1a26f17716c97984671121608dc0c3ecd34858112bce59a27 + md5: 577852c7e53901ddccc7e6a9959ddebe + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 20448 + timestamp: 1733232756001 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda + sha256: 9c88f8c64590e9567c6c80823f0328e58d3b1efb0e1c539c0315ceca764e0973 + md5: b3c17d95b5a10c6e64a21fa17573e70e + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 8252 + timestamp: 1726802366959 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pthread-stubs-0.4-hd74edd7_1002.conda + sha256: 8ed65e17fbb0ca944bfb8093b60086e3f9dd678c3448b5de212017394c247ee3 + md5: 415816daf82e0b23a736a069a75e9da7 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 8381 + timestamp: 1726802424786 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pugixml-1.15-h3f63f65_0.conda + sha256: 23c98a5000356e173568dc5c5770b53393879f946f3ace716bbdefac2a8b23d2 + md5: b11a4c6bf6f6f44e5e143f759ffa2087 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 118488 + timestamp: 1736601364156 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pulseaudio-client-17.0-hb77b528_0.conda + sha256: b27c0c8671bd95c205a61aeeac807c095b60bc76eb5021863f919036d7a964fc + md5: 07f45f1be1c25345faddb8db0de8039b + depends: + - dbus >=1.13.6,<2.0a0 + - libgcc-ng >=12 + - libglib >=2.78.3,<3.0a0 + - libsndfile >=1.2.2,<1.3.0a0 + - libsystemd0 >=255 + constrains: + - pulseaudio 17.0 *_0 + arch: x86_64 + platform: linux + license: LGPL-2.1-or-later + license_family: LGPL + size: 757633 + timestamp: 1705690081905 +- conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda + sha256: 79db7928d13fab2d892592223d7570f5061c192f27b9febd1a418427b719acc6 + md5: 12c566707c80111f9799308d9e265aef + depends: + - python >=3.9 + - python + license: BSD-3-Clause + license_family: BSD + size: 110100 + timestamp: 1733195786147 +- conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda + sha256: ba3b032fa52709ce0d9fd388f63d330a026754587a2f461117cac9ab73d8d0d8 + md5: 461219d1a5bd61342293efa2c0c90eac + depends: + - __unix + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 21085 + timestamp: 1733217331982 +- conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.9-h9e4cc4f_0_cpython.conda + sha256: 64fed5178f1e9c8ac0f572ac0ce37955f5dee7b2bcac665202bc14f1f7dd618a + md5: 5665f0079432f8848079c811cdb537d5 + depends: + - __glibc >=2.17,<3.0.a0 + - bzip2 >=1.0.8,<2.0a0 + - ld_impl_linux-64 >=2.36.1 + - libexpat >=2.6.4,<3.0a0 + - libffi >=3.4,<4.0a0 + - libgcc >=13 + - liblzma >=5.6.4,<6.0a0 + - libnsl >=2.0.1,<2.1.0a0 + - libsqlite >=3.48.0,<4.0a0 + - libuuid >=2.38.1,<3.0a0 + - libxcrypt >=4.4.36 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.4.1,<4.0a0 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + constrains: + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Python-2.0 + size: 31581682 + timestamp: 1739521496324 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.9-hc22306f_0_cpython.conda + sha256: cbf81a78d3ca6e663e827523e6ddbc28369cac488da047a28f83875eb52fe5f6 + md5: 1d105a6c46a753e3c0bab54a1ad24063 + depends: + - __osx >=11.0 + - bzip2 >=1.0.8,<2.0a0 + - libexpat >=2.6.4,<3.0a0 + - libffi >=3.4,<4.0a0 + - liblzma >=5.6.4,<6.0a0 + - libsqlite >=3.48.0,<4.0a0 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.4.1,<4.0a0 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + constrains: + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Python-2.0 + size: 12947786 + timestamp: 1739520092196 +- conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + sha256: a50052536f1ef8516ed11a844f9413661829aa083304dc624c5925298d078d79 + md5: 5ba79d7c71f03c678c8ead841f347d6e + depends: + - python >=3.9 + - six >=1.5 + license: Apache-2.0 + license_family: APACHE + size: 222505 + timestamp: 1733215763718 +- conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda + build_number: 5 + sha256: d10e93d759931ffb6372b45d65ff34d95c6000c61a07e298d162a3bc2accebb0 + md5: 0424ae29b104430108f5218a66db7260 + constrains: + - python 3.12.* *_cpython + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 6238 + timestamp: 1723823388266 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-5_cp312.conda + build_number: 5 + sha256: 49d624e4b809c799d2bf257b22c23cf3fc4460f5570d9a58e7ad86350aeaa1f4 + md5: b76f9b1c862128e56ac7aa8cd2333de9 + constrains: + - python 3.12.* *_cpython + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 6278 + timestamp: 1723823099686 +- conda: https://conda.anaconda.org/pytorch/linux-64/pytorch-2.4.0-py3.12_cuda12.4_cudnn9.1.0_0.tar.bz2 + sha256: 6e08b3195666379cecc64a4c11a2c9e40f7b77ee4ff83673d49d5290b75269c1 + md5: 9731ae9086ed66acc02e8e4aba5d9990 + depends: + - blas * mkl + - filelock + - jinja2 + - llvm-openmp <16 + - mkl >=2018 + - networkx + - python >=3.12,<3.13.0a0 + - pytorch-cuda >=12.4,<12.5 + - pytorch-mutex 1.0 cuda + - pyyaml + - sympy + - torchtriton 3.0.0 + - typing_extensions + constrains: + - cpuonly <0 + arch: x86_64 + platform: linux + license: BSD 3-Clause + license_family: BSD + size: 1441602064 + timestamp: 1720546288249 +- conda: https://conda.anaconda.org/pytorch/osx-arm64/pytorch-2.4.0-py3.12_0.tar.bz2 + sha256: 085c312a4b2b8fb86d4ec3ea427d3c5bcd708f398f4bdc053a2a1123614893c1 + md5: 6618b115b8b33e9b41b840e1ffa0ca76 + depends: + - filelock + - jinja2 + - llvm-openmp <16 + - networkx + - python >=3.12,<3.13.0a0 + - pyyaml + - sympy + - typing_extensions + constrains: + - cpuonly + arch: arm64 + platform: osx + license: BSD 3-Clause + license_family: BSD + size: 60396276 + timestamp: 1720541827975 +- conda: https://conda.anaconda.org/pytorch/linux-64/pytorch-cuda-12.4-hc786d27_7.tar.bz2 + sha256: 4ce6352f6270673aaf335909da2bbdd70ad8aaae489319e1e3a5ac0aae720314 + md5: 06635b1bbf5e2fef4a8b9b282500cd7b + depends: + - cuda-cudart >=12.4,<12.5 + - cuda-cupti >=12.4,<12.5 + - cuda-libraries >=12.4,<12.5 + - cuda-nvrtc >=12.4,<12.5 + - cuda-nvtx >=12.4,<12.5 + - cuda-runtime >=12.4,<12.5 + - libcublas >=12.4.5.8,<12.5.2.13 + - libcufft >=11.2.1.3,<11.2.3.18 + - libcusolver >=11.6.1.9,<11.6.2.40 + - libcusparse >=12.3.1.170,<12.4.1.18 + - libnpp >=12.2.5.30,<12.3.0.116 + - libnvjitlink >=12.4.127,<12.5.40 + - libnvjpeg >=12.3.1.117,<12.3.2.38 + arch: x86_64 + platform: linux + size: 7189 + timestamp: 1724179791784 +- conda: https://conda.anaconda.org/pytorch/noarch/pytorch-mutex-1.0-cuda.tar.bz2 + build_number: 100 + sha256: c16316183f51b74ca5eee4dcb8631052f328c0bbf244176734a0b7d390b81ee3 + md5: a948316e36fb5b11223b3fcfa93f8358 + size: 2906 + timestamp: 1628062930777 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py312h178313f_2.conda + sha256: 159cba13a93b3fe084a1eb9bda0a07afc9148147647f0d437c3c3da60980503b + md5: cf2485f39740de96e2a7f2bb18ed2fee + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - yaml >=0.2.5,<0.3.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 206903 + timestamp: 1737454910324 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py312h998013c_2.conda + sha256: ad225ad24bfd60f7719709791345042c3cb32da1692e62bd463b084cf140e00d + md5: 68149ed4d4e9e1c42d2ba1f27f08ca96 + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - yaml >=0.2.5,<0.3.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 192148 + timestamp: 1737454886351 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.1-py312hbf22597_0.conda + sha256: 90ec0da0317d3d76990a40c61e1709ef859dd3d8c63838bad2814f46a63c8a2e + md5: 7cec8d0dac15a2d9fea8e49879aa779d + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libsodium >=1.0.20,<1.0.21.0a0 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - zeromq >=4.3.5,<4.4.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 382698 + timestamp: 1738271121975 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.1-py312hf4875e0_0.conda + sha256: 70d398b334668dc597d33e27847ede1b0829a639b9c91ee845355e52c86c2293 + md5: bfbefdb140b546a80827ff7c9d5ac7b8 + depends: + - __osx >=11.0 + - libcxx >=18 + - libsodium >=1.0.20,<1.0.21.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - zeromq >=4.3.5,<4.4.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 364649 + timestamp: 1738271263898 +- conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda + sha256: 2d6d0c026902561ed77cd646b5021aef2d4db22e57a5b0178dfc669231e06d2c + md5: 283b96675859b20a825f8fa30f311446 + depends: + - libgcc >=13 + - ncurses >=6.5,<7.0a0 + arch: x86_64 + platform: linux + license: GPL-3.0-only + license_family: GPL + size: 282480 + timestamp: 1740379431762 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda + sha256: 7db04684d3904f6151eff8673270922d31da1eea7fa73254d01c437f49702e34 + md5: 63ef3f6e6d6d5c589e64f11263dc5676 + depends: + - ncurses >=6.5,<7.0a0 + arch: arm64 + platform: osx + license: GPL-3.0-only + license_family: GPL + size: 252359 + timestamp: 1740379663071 +- conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda + sha256: d701ca1136197aa121bbbe0e8c18db6b5c94acbd041c2b43c70e5ae104e1d8ad + md5: a9b9368f3701a417eac9edbcae7cb737 + depends: + - certifi >=2017.4.17 + - charset-normalizer >=2,<4 + - idna >=2.5,<4 + - python >=3.9 + - urllib3 >=1.21.1,<3 + constrains: + - chardet >=3.0.2,<6 + license: Apache-2.0 + license_family: APACHE + size: 58723 + timestamp: 1733217126197 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sdl2-2.32.50-h9b8e6db_1.conda + sha256: c253ddeafdc46bb53cdac722d1305a94bbbd9905e6a112e295ce7bb9e7a2f7e7 + md5: 0d27110a2f613abc268e31b3c1d5fb4f + depends: + - __glibc >=2.17,<3.0.a0 + - libegl >=1.7.0,<2.0a0 + - libgcc >=13 + - libgl >=1.7.0,<2.0a0 + - libstdcxx >=13 + - sdl3 >=3.2.4,<4.0a0 + arch: x86_64 + platform: linux + license: Zlib + size: 513266 + timestamp: 1740516135153 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sdl3-3.2.4-h3083f51_0.conda + sha256: d19f33b8c73cf461698b3f6d81aa354aed68d50f8d64f72c0cccc507d183803c + md5: c0d92f268209e0a0fd27954a5667c11d + depends: + - __glibc >=2.17,<3.0.a0 + - dbus >=1.13.6,<2.0a0 + - jack >=1.9.22,<1.10.0a0 + - libdrm >=2.4.124,<2.5.0a0 + - libegl >=1.7.0,<2.0a0 + - libgcc >=13 + - libgl >=1.7.0,<2.0a0 + - libstdcxx >=13 + - libudev1 >=256.7 + - libunwind >=1.6.2,<1.7.0a0 + - liburing >=2.9,<2.10.0a0 + - libusb >=1.0.27,<2.0a0 + - libxkbcommon >=1.8.0,<2.0a0 + - pulseaudio-client >=17.0,<17.1.0a0 + - wayland >=1.23.1,<2.0a0 + - xorg-libx11 >=1.8.11,<2.0a0 + - xorg-libxcursor >=1.2.3,<2.0a0 + - xorg-libxext >=1.3.6,<2.0a0 + - xorg-libxfixes >=6.0.1,<7.0a0 + - xorg-libxscrnsaver >=1.2.4,<2.0a0 + arch: x86_64 + platform: linux + license: Zlib + size: 1728090 + timestamp: 1739801388543 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-0.2.0-hc8f76dd_10.conda + sha256: a1bde55ceb9dc5bd7879283d0f594a6ce65c07fda3de76230c65a4a5df47858a + md5: 480e915dfc6c592615ef6f217e615aa6 + depends: + - libsentencepiece 0.2.0 h8e10757_10 + - python_abi 3.12.* *_cp312 + - sentencepiece-python 0.2.0 py312hb6b8a2b_10 + - sentencepiece-spm 0.2.0 h8e10757_10 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 19470 + timestamp: 1735628377167 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-0.2.0-h22a84ea_10.conda + sha256: 526c934b897131bd274697649c3b1c492a7d66c03368885a954112468b3c1424 + md5: 346abe448f69949a65473b336856860a + depends: + - libsentencepiece 0.2.0 he13a0af_10 + - python_abi 3.12.* *_cp312 + - sentencepiece-python 0.2.0 py312h155166a_10 + - sentencepiece-spm 0.2.0 he13a0af_10 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 19759 + timestamp: 1735628533490 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-python-0.2.0-py312hb6b8a2b_10.conda + sha256: 37df7fb659564587b950b39c936769d9b5095afb7bc223f42d6248a5540c6567 + md5: 7908b7b977e2e123a5f6a29906f2ce44 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 h8e10757_10 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 2411182 + timestamp: 1735628106455 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-python-0.2.0-py312h155166a_10.conda + sha256: 2d59614aeafbf54cc718805798c11c2d0a3b4b8d947d1bd81c87c484b4883077 + md5: 6e11367ef670296fce01fc9860be944d + depends: + - __osx >=11.0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 he13a0af_10 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 2433303 + timestamp: 1735628083958 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-spm-0.2.0-h8e10757_10.conda + sha256: 6b55e1121545357d63c3aa0766931720e8aafc52d88641ba7631c8cbaa68c52f + md5: e977b7be5ac26c55825e121e00b90493 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 h8e10757_10 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 89076 + timestamp: 1735628334078 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-spm-0.2.0-he13a0af_10.conda + sha256: b760aeee02e2afbfcce3f559e8a227aa4c94139157b1702fdfb41a057dad0e52 + md5: 9b7300f23cd330da8664cd072c162e5f + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 he13a0af_10 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 83826 + timestamp: 1735628514667 +- conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + sha256: 41db0180680cc67c3fa76544ffd48d6a5679d96f4b71d7498a759e94edc9a2db + md5: a451d576819089b0d672f18768be0f65 + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 16385 + timestamp: 1733381032766 +- conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-h8bd8927_1.conda + sha256: ec91e86eeb2c6bbf09d51351b851e945185d70661d2ada67204c9a6419d282d3 + md5: 3b3e64af585eadfb52bb90b553db5edf + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 42739 + timestamp: 1733501881851 +- conda: https://conda.anaconda.org/conda-forge/linux-64/svt-av1-3.0.0-h5888daf_0.conda + sha256: 01ae1e86f79e05b9e687ef3b963e7f4f8a7554ac9f5af4dc1e3dc11ed79548b2 + md5: d86fc7eb811593abc06b328d3d72c001 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + size: 2746763 + timestamp: 1740096577511 +- conda: https://conda.anaconda.org/conda-forge/noarch/sympy-1.13.3-pyh2585a3b_105.conda + sha256: 929d939c5a8bcdc10a17501890918da68cf14a5883b36fddf77b8f0fbf040be2 + md5: 254cd5083ffa04d96e3173397a3d30f4 + depends: + - __unix + - cpython + - gmpy2 >=2.0.8 + - mpmath >=0.19 + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 4523617 + timestamp: 1736248315124 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tbb-2021.13.0-hceb3a55_1.conda + sha256: 65463732129899770d54b1fbf30e1bb82fdebda9d7553caf08d23db4590cd691 + md5: ba7726b8df7b9d34ea80e82b097a4893 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libhwloc >=2.11.2,<2.11.3.0a0 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 175954 + timestamp: 1732982638805 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda + sha256: e0569c9caa68bf476bead1bed3d79650bb080b532c64a4af7d8ca286c08dea4e + md5: d453b98d9c83e71da0741bb0ff4d76bc + depends: + - libgcc-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 + arch: x86_64 + platform: linux + license: TCL + license_family: BSD + size: 3318875 + timestamp: 1699202167581 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda + sha256: 72457ad031b4c048e5891f3f6cb27a53cb479db68a52d965f796910e71a403a8 + md5: b50a57ba89c32b62428b71a875291c9b + depends: + - libzlib >=1.2.13,<2.0.0a0 + arch: arm64 + platform: osx + license: TCL + license_family: BSD + size: 3145523 + timestamp: 1699202432999 +- conda: https://conda.anaconda.org/pytorch/linux-64/torchtriton-3.0.0-py312.tar.bz2 + build_number: 1 + sha256: 5b6fe1e0a065ad16342daa82faff86700a4b413f7b07090b106c61ae74ce508f + md5: e53c6345daef28009cd51187a5c5af73 + depends: + - filelock + - python >=3.12,<3.13.0a0 + - pytorch + arch: x86_64 + platform: linux + license: MIT + size: 244858431 + timestamp: 1721333095180 +- conda: https://conda.anaconda.org/pytorch/linux-64/torchvision-0.19.0-py312_cu124.tar.bz2 + build_number: 0 + sha256: 100fa1adae081158dcac29149dce22942b71761f378aaa00a99a2d3ac3d9f971 + md5: 73e63c252ebd5db1cea947085d6f8e75 + depends: + - ffmpeg >=4.2 + - libjpeg-turbo + - libpng + - numpy >=1.23.5 + - pillow >=5.3.0,!=8.3.* + - python >=3.12,<3.13.0a0 + - pytorch 2.4.0 + - pytorch-cuda 12.4.* + - pytorch-mutex 1.0 cuda + - requests + constrains: + - cpuonly <0 + arch: x86_64 + platform: linux + license: BSD + size: 8820903 + timestamp: 1720563863032 +- conda: https://conda.anaconda.org/pytorch/osx-arm64/torchvision-0.19.0-py312_cpu.tar.bz2 + sha256: c08a2f63ab3a0c5d0b508a23e1c54193b8568fc471e0797ac15b69ee624880ae + md5: 555b0caf9b1cfdf1dd524974ac0ada21 + depends: + - libjpeg-turbo + - libpng + - numpy >=1.23.5 + - pillow >=5.3.0,!=8.3.* + - python >=3.12,<3.13.0a0 + - pytorch 2.4.0 + - requests + constrains: + - cpuonly + arch: arm64 + platform: osx + license: BSD + size: 7117982 + timestamp: 1720563247605 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda + sha256: 062a3a3a37fa8615ce57929ba7e982c76f5a5810bcebd435950f6d6c4147c310 + md5: e417822cb989e80a0d2b1b576fdd1657 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 840414 + timestamp: 1732616043734 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda + sha256: 964a2705a36c50040c967b18b45b9cc8de3c2aff4af546979a574e0b38e58e39 + md5: fb0605888a475d6a380ae1d1a819d976 + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 842549 + timestamp: 1732616081362 +- conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + sha256: 11e2c85468ae9902d24a27137b6b39b4a78099806e551d390e394a8c34b48e40 + md5: 9efbfdc37242619130ea42b1cc4ed861 + depends: + - colorama + - python >=3.9 + license: MPL-2.0 or MIT + size: 89498 + timestamp: 1735661472632 +- conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + sha256: f39a5620c6e8e9e98357507262a7869de2ae8cc07da8b7f84e517c9fd6c2b959 + md5: 019a7385be9af33791c989871317e1ed + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 110051 + timestamp: 1733367480074 +- conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + sha256: 337be7af5af8b2817f115b3b68870208b30c31d3439bec07bfb2d8f4823e3568 + md5: d17f13df8b65464ca316cbc000a3cb64 + depends: + - python >=3.9 + license: PSF-2.0 + license_family: PSF + size: 39637 + timestamp: 1733188758212 +- conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + sha256: c4b1ae8a2931fe9b274c44af29c5475a85b37693999f8c792dad0f8c6734b1de + md5: dbcace4706afdfb7eb891f7b37d07c04 + license: LicenseRef-Public-Domain + size: 122921 + timestamp: 1737119101255 +- conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda + sha256: 114919ffa80c328127dab9c8e7a38f9d563c617691fb81fccb11c1e86763727e + md5: 32674f8dbfb7b26410ed580dd3c10a29 + depends: + - brotli-python >=1.0.9 + - h2 >=4,<5 + - pysocks >=1.5.6,<2.0,!=1.5.7 + - python >=3.9 + - zstandard >=0.18.0 + license: MIT + license_family: MIT + size: 100102 + timestamp: 1734859520452 +- conda: https://conda.anaconda.org/conda-forge/linux-64/wayland-1.23.1-h3e06ad9_0.conda + sha256: 0884b2023a32d2620192cf2e2fc6784b8d1e31cf9f137e49e00802d4daf7d1c1 + md5: 0a732427643ae5e0486a727927791da1 + depends: + - __glibc >=2.17,<3.0.a0 + - libexpat >=2.6.2,<3.0a0 + - libffi >=3.4,<4.0a0 + - libgcc-ng >=13 + - libstdcxx-ng >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 321561 + timestamp: 1724530461598 +- conda: https://conda.anaconda.org/conda-forge/noarch/wayland-protocols-1.41-hd8ed1ab_0.conda + sha256: caabd9f067a3a7075925b50246a0d4e832062fa1f7a4f9f89392c1ae82a26163 + md5: 790080ec41dc3f081663da8e99cd233e + license: MIT + license_family: MIT + size: 130039 + timestamp: 1739890398910 +- conda: https://conda.anaconda.org/conda-forge/linux-64/x264-1!164.3095-h166bdaf_2.tar.bz2 + sha256: 175315eb3d6ea1f64a6ce470be00fa2ee59980108f246d3072ab8b977cb048a5 + md5: 6c99772d483f566d59e25037fea2c4b1 + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: GPL-2.0-or-later + license_family: GPL + size: 897548 + timestamp: 1660323080555 +- conda: https://conda.anaconda.org/conda-forge/linux-64/x265-3.5-h924138e_3.tar.bz2 + sha256: 76c7405bcf2af639971150f342550484efac18219c0203c5ee2e38b8956fe2a0 + md5: e7f6ed84d4623d52ee581325c1587a6b + depends: + - libgcc-ng >=10.3.0 + - libstdcxx-ng >=10.3.0 + arch: x86_64 + platform: linux + license: GPL-2.0-or-later + license_family: GPL + size: 3357188 + timestamp: 1646609687141 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xkeyboard-config-2.43-hb9d3cd8_0.conda + sha256: 0d89b5873515a1f05d311f37ea4e087bbccc0418afa38f2f6189e97280db3179 + md5: f725c7425d6d7c15e31f3b99a88ea02f + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - xorg-libx11 >=1.8.10,<2.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 389475 + timestamp: 1727840188958 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libice-1.1.2-hb9d3cd8_0.conda + sha256: c12396aabb21244c212e488bbdc4abcdef0b7404b15761d9329f5a4a39113c4b + md5: fb901ff28063514abb6046c9ec2c4a45 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 58628 + timestamp: 1734227592886 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libsm-1.2.5-he73a12e_0.conda + sha256: 760f43df6c2ce8cbbbcb8f2f3b7fc0f306716c011e28d1d340f3dfa8ccf29185 + md5: 4c3e9fab69804ec6077697922d70c6e2 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libuuid >=2.38.1,<3.0a0 + - xorg-libice >=1.1.2,<2.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 27198 + timestamp: 1734229639785 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libx11-1.8.11-h4f16b4b_0.conda + sha256: a0e7fca9e341dc2455b20cd320fc1655e011f7f5f28367ecf8617cccd4bb2821 + md5: b6eb6d0cb323179af168df8fe16fb0a1 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libxcb >=1.17.0,<2.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 835157 + timestamp: 1738613163812 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-hb9d3cd8_0.conda + sha256: ed10c9283974d311855ae08a16dfd7e56241fac632aec3b92e3cfe73cff31038 + md5: f6ebe2cb3f82ba6c057dde5d9debe4f7 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 14780 + timestamp: 1734229004433 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxau-1.0.12-h5505292_0.conda + sha256: f33e6f013fc36ebc200f09ddead83468544cb5c353a3b50499b07b8c34e28a8d + md5: 50901e0764b7701d8ed7343496f4f301 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 13593 + timestamp: 1734229104321 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxcursor-1.2.3-hb9d3cd8_0.conda + sha256: 832f538ade441b1eee863c8c91af9e69b356cd3e9e1350fff4fe36cc573fc91a + md5: 2ccd714aa2242315acaf0a67faea780b + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - xorg-libx11 >=1.8.10,<2.0a0 + - xorg-libxfixes >=6.0.1,<7.0a0 + - xorg-libxrender >=0.9.11,<0.10.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 32533 + timestamp: 1730908305254 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb9d3cd8_0.conda + sha256: 6b250f3e59db07c2514057944a3ea2044d6a8cdde8a47b6497c254520fade1ee + md5: 8035c64cb77ed555e3f150b7b3972480 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 19901 + timestamp: 1727794976192 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxdmcp-1.1.5-hd74edd7_0.conda + sha256: 9939a166d780700d81023546759102b33fdc2c5f11ef09f5f66c77210fd334c8 + md5: 77c447f48cab5d3a15ac224edb86a968 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 18487 + timestamp: 1727795205022 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxext-1.3.6-hb9d3cd8_0.conda + sha256: da5dc921c017c05f38a38bd75245017463104457b63a1ce633ed41f214159c14 + md5: febbab7d15033c913d53c7a2c102309d + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - xorg-libx11 >=1.8.10,<2.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 50060 + timestamp: 1727752228921 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxfixes-6.0.1-hb9d3cd8_0.conda + sha256: 2fef37e660985794617716eb915865ce157004a4d567ed35ec16514960ae9271 + md5: 4bdb303603e9821baf5fe5fdff1dc8f8 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - xorg-libx11 >=1.8.10,<2.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 19575 + timestamp: 1727794961233 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrender-0.9.12-hb9d3cd8_0.conda + sha256: 044c7b3153c224c6cedd4484dd91b389d2d7fd9c776ad0f4a34f099b3389f4a1 + md5: 96d57aba173e878a2089d5638016dc5e + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - xorg-libx11 >=1.8.10,<2.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 33005 + timestamp: 1734229037766 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxscrnsaver-1.2.4-hb9d3cd8_0.conda + sha256: 58e8fc1687534124832d22e102f098b5401173212ac69eb9fd96b16a3e2c8cb2 + md5: 303f7a0e9e0cd7d250bb6b952cecda90 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - xorg-libx11 >=1.8.10,<2.0a0 + - xorg-libxext >=1.3.6,<2.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 14412 + timestamp: 1727899730073 +- conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 + sha256: a4e34c710eeb26945bdbdaba82d3d74f60a78f54a874ec10d373811a5d217535 + md5: 4cb3ad778ec2d5a7acbdf254eb1c42ae + depends: + - libgcc-ng >=9.4.0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 89141 + timestamp: 1641346969816 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 + sha256: 93181a04ba8cfecfdfb162fc958436d868cc37db504c58078eab4c1a3e57fbb7 + md5: 4bb3f014845110883a3c5ee811fd84b4 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 88016 + timestamp: 1641347076660 +- conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda + sha256: a4dc72c96848f764bb5a5176aa93dd1e9b9e52804137b99daeebba277b31ea10 + md5: 3947a35e916fcc6b9825449affbf4214 + depends: + - __glibc >=2.17,<3.0.a0 + - krb5 >=1.21.3,<1.22.0a0 + - libgcc >=13 + - libsodium >=1.0.20,<1.0.21.0a0 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: MPL-2.0 + license_family: MOZILLA + size: 335400 + timestamp: 1731585026517 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda + sha256: 9e585569fe2e7d3bea71972cd4b9f06b1a7ab8fa7c5139f92a31cbceecf25a8a + md5: f7e6b65943cb73bce0143737fded08f1 + depends: + - __osx >=11.0 + - krb5 >=1.21.3,<1.22.0a0 + - libcxx >=18 + - libsodium >=1.0.20,<1.0.21.0a0 + arch: arm64 + platform: osx + license: MPL-2.0 + license_family: MOZILLA + size: 281565 + timestamp: 1731585108039 +- conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + sha256: 567c04f124525c97a096b65769834b7acb047db24b15a56888a322bf3966c3e1 + md5: 0c3cc595284c5e8f0f9900a9b228a332 + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 21809 + timestamp: 1732827613585 +- conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312hef9b889_1.conda + sha256: b97015e146437283f2213ff0e95abdc8e2480150634d81fbae6b96ee09f5e50b + md5: 8b7069e9792ee4e5b4919a7a306d2e67 + depends: + - __glibc >=2.17,<3.0.a0 + - cffi >=1.11 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - zstd >=1.5.6,<1.5.7.0a0 + - zstd >=1.5.6,<1.6.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 419552 + timestamp: 1725305670210 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py312h15fbf35_1.conda + sha256: d00ca25c1e28fd31199b26a94f8c96574475704a825d244d7a6351ad3745eeeb + md5: a4cde595509a7ad9c13b1a3809bcfe51 + depends: + - __osx >=11.0 + - cffi >=1.11 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - zstd >=1.5.6,<1.5.7.0a0 + - zstd >=1.5.6,<1.6.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 330788 + timestamp: 1725305806565 +- conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda + sha256: c558b9cc01d9c1444031bd1ce4b9cff86f9085765f17627a6cd85fc623c8a02b + md5: 4d056880988120e29d75bfff282e0f45 + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 554846 + timestamp: 1714722996770 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.6-hb46c0d2_0.conda + sha256: 2d4fd1ff7ee79cd954ca8e81abf11d9d49954dd1fef80f27289e2402ae9c2e09 + md5: d96942c06c3e84bfcc5efb038724a7fd + depends: + - __osx >=11.0 + - libzlib >=1.2.13,<2.0.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 405089 + timestamp: 1714723101397 From 1e5f87773b5b83c2ecfef8427c4fda0ba71a36ed Mon Sep 17 00:00:00 2001 From: Patrick Dougherty Date: Thu, 27 Feb 2025 17:02:55 -0600 Subject: [PATCH 488/509] [CI] Validating post merge (#4037) --- .github/workflows/test_pre_commit.yml | 2 +- .pre-commit-config.yaml | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/test_pre_commit.yml b/.github/workflows/test_pre_commit.yml index 99a2ddf73d..8e65864e5a 100644 --- a/.github/workflows/test_pre_commit.yml +++ b/.github/workflows/test_pre_commit.yml @@ -48,5 +48,5 @@ jobs: pre-commit install - name: Run pre-commit - run: magic run pre-commit run --all-files + run: magic run --manifest-path mojo pre-commit run --all-files diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index b04addfbb6..59ab737652 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -3,9 +3,9 @@ repos: hooks: - id: mojo-format name: mojo-format - entry: mojo format mojo + entry: mojo format language: system - files: '\.(mojo|🔥|py)$' + files: '^(mojo|examples/mojo).*\.(mojo|🔥|py)$' stages: [commit] - id: check-docstrings name: check-docstrings @@ -17,7 +17,7 @@ repos: name: check-license entry: mojo mojo/stdlib/scripts/check_licenses.mojo language: system - files: '\.(mojo|🔥|py)$' + files: '^(mojo|examples/mojo).*\.(mojo|🔥|py)$' stages: [commit] - repo: https://github.com/igorshubovych/markdownlint-cli rev: v0.40.0 From 093b209f4a47202e49af7bbc4f640ad33553928e Mon Sep 17 00:00:00 2001 From: weiwei chen Date: Thu, 27 Feb 2025 13:11:20 -0500 Subject: [PATCH 489/509] [stdlib] Enable interpreter mode for `memcpy`. - [x] Enable simplified interpreter mode for memcpy (for fast interpreting). - [x] Add test. MODULAR_ORIG_COMMIT_REV_ID: 534b00b142ebca0b294d2bf8466f3ad37b47d7b9 --- .github/workflows/test_pre_commit.yml | 2 +- .pre-commit-config.yaml | 6 +++--- mojo/stdlib/src/memory/memory.mojo | 20 +++++++++++++++----- 3 files changed, 19 insertions(+), 9 deletions(-) diff --git a/.github/workflows/test_pre_commit.yml b/.github/workflows/test_pre_commit.yml index 8e65864e5a..99a2ddf73d 100644 --- a/.github/workflows/test_pre_commit.yml +++ b/.github/workflows/test_pre_commit.yml @@ -48,5 +48,5 @@ jobs: pre-commit install - name: Run pre-commit - run: magic run --manifest-path mojo pre-commit run --all-files + run: magic run pre-commit run --all-files diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 59ab737652..b04addfbb6 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -3,9 +3,9 @@ repos: hooks: - id: mojo-format name: mojo-format - entry: mojo format + entry: mojo format mojo language: system - files: '^(mojo|examples/mojo).*\.(mojo|🔥|py)$' + files: '\.(mojo|🔥|py)$' stages: [commit] - id: check-docstrings name: check-docstrings @@ -17,7 +17,7 @@ repos: name: check-license entry: mojo mojo/stdlib/scripts/check_licenses.mojo language: system - files: '^(mojo|examples/mojo).*\.(mojo|🔥|py)$' + files: '\.(mojo|🔥|py)$' stages: [commit] - repo: https://github.com/igorshubovych/markdownlint-cli rev: v0.40.0 diff --git a/mojo/stdlib/src/memory/memory.mojo b/mojo/stdlib/src/memory/memory.mojo index eada6c0467..2d2d845f88 100644 --- a/mojo/stdlib/src/memory/memory.mojo +++ b/mojo/stdlib/src/memory/memory.mojo @@ -253,11 +253,21 @@ fn memcpy[ count: The number of elements to copy. """ var n = count * sizeof[dest.type]() - _memcpy_impl( - dest.bitcast[Byte]().origin_cast[origin=MutableAnyOrigin](), - src.bitcast[Byte]().origin_cast[origin=MutableAnyOrigin](), - n, - ) + + if __mlir_op.`kgen.is_compile_time`(): + # A fast version for the interpreter to evaluate + # this function during compile time. + llvm_intrinsic["llvm.memcpy", NoneType]( + dest.bitcast[Byte]().origin_cast[origin=MutableAnyOrigin](), + src.bitcast[Byte]().origin_cast[origin=MutableAnyOrigin](), + n, + ) + else: + _memcpy_impl( + dest.bitcast[Byte]().origin_cast[origin=MutableAnyOrigin](), + src.bitcast[Byte]().origin_cast[origin=MutableAnyOrigin](), + n, + ) # ===-----------------------------------------------------------------------===# From ea31522342dde055693c7231935cfa6e426350f4 Mon Sep 17 00:00:00 2001 From: Patrick Dougherty Date: Thu, 27 Feb 2025 12:19:53 -0600 Subject: [PATCH 490/509] [CI] Add missed license MODULAR_ORIG_COMMIT_REV_ID: 0761f1c3c4629379ce11e037d05c0047b8104986 --- .pre-commit-config.yaml | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index b04addfbb6..5e3e2ec6e2 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -1,3 +1,16 @@ +##===----------------------------------------------------------------------===## +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +##===----------------------------------------------------------------------===## + repos: - repo: local hooks: @@ -22,5 +35,5 @@ repos: - repo: https://github.com/igorshubovych/markdownlint-cli rev: v0.40.0 hooks: - - id: markdownlint - args: ['--config', 'mojo/stdlib/scripts/.markdownlint.yaml', '--fix'] + - id: markdownlint + args: ["--config", "mojo/stdlib/scripts/.markdownlint.yaml", "--fix"] From ee76f6c69062256f2f4b364aeee1f3c1c6b65a4a Mon Sep 17 00:00:00 2001 From: Katherine Wu <31663267+k-w-w@users.noreply.github.com> Date: Thu, 27 Feb 2025 11:41:11 -0800 Subject: [PATCH 491/509] [Graph] Add weight sharding strategy for Multi-GPU (#56810) The PR adds sharding strategy to `Weight`, and allow weights to be sharded with `Weight.shard(shard_idx, device)`. Also deletes `LayerV2.to`, we can add it back later but for now the API isn't fully thought out. This functionally adds sharding to the Weights, although some aspects may have unexpected behavior (like getting the `shape` of a sharded weight actually returns the `shape` of the original weight). Also, `LayerV2` needs to adapt to handling sharded weights. MODULAR_ORIG_COMMIT_REV_ID: 191c2f8dc605d2ea0765ac7a693e3f44cf968591 --- src/max/pipelines/nn/layer/layer.py | 37 ++--------------------------- 1 file changed, 2 insertions(+), 35 deletions(-) diff --git a/src/max/pipelines/nn/layer/layer.py b/src/max/pipelines/nn/layer/layer.py index 3b76c479b6..31443d97e1 100644 --- a/src/max/pipelines/nn/layer/layer.py +++ b/src/max/pipelines/nn/layer/layer.py @@ -17,7 +17,6 @@ import threading from abc import ABC, abstractmethod from collections import deque -from dataclasses import dataclass from functools import wraps from inspect import signature from typing import ( @@ -34,7 +33,7 @@ import numpy as np from max.driver import DLPackArray, Tensor from max.dtype import DType -from max.graph import DeviceRef, ShapeLike, TensorValue, Weight +from max.graph import ShapeLike, Weight from max.graph.quantization import QuantizationEncoding from max.graph.weights import WeightData @@ -43,14 +42,6 @@ DLPackCompatible = Union[DLPackArray, np.ndarray] -@dataclass -class ShardingStrategy: - """Defines how to load and shard a weight onto multiple devices.""" - - host_device: DeviceRef - shard_value: Callable[[Weight], tuple[TensorValue, ...]] - - class Layer: """Base Layer class. @@ -79,7 +70,7 @@ def __call__(self, *args, **kwargs): class LayerV2(Layer, ABC): - """(new) Base class for model layers with weight and device management. + """(new) Base class for model layers with weight management. This will be merged with the above class once all layers have been moved to V2. @@ -95,20 +86,10 @@ def __init__(self): self._weight_values: dict[str, DLPackCompatible] = {} self._shared_weights: dict[str, Weight] = {} - # Update device list and sharding strategy to a singular object - # similar to a partition spec. - self._devices: tuple[DeviceRef, ...] = () - self._sharding_strategy: ShardingStrategy | None = None - def __setattr__(self, name, value): try: if isinstance(value, LayerV2): self._sublayers[name] = value - if self._devices or self._sharding_strategy: - value.to( - *self._devices, - sharding_strategy=self._sharding_strategy, - ) elif isinstance(value, Weight): self._layer_weights[value.name] = value except AttributeError: @@ -122,20 +103,6 @@ def __repr__(self): # TODO: Make this pretty return f"{type(self).__name__}({len(self.sublayers)} layers, {len(self.layer_weights)} weights)" - def to( - self, - *devices: DeviceRef, - sharding_strategy: ShardingStrategy | None = None, - ) -> None: - if len(self._devices) > 1 and not sharding_strategy: - raise ValueError( - "Must provide a sharding strategy if multiple devices are provided." - ) - - for _, layer in recursive_named_layers(self): - layer._devices = devices - layer._sharding_strategy = sharding_strategy - @property def layer_weights(self) -> dict[str, Weight]: return self._layer_weights From 89d6288e989b70e56c76c730b60b57dfeec2d153 Mon Sep 17 00:00:00 2001 From: kcaverly Date: Thu, 27 Feb 2025 15:41:47 -0500 Subject: [PATCH 492/509] [Pipelines] Add draft_model to PipelineConfig for Speculative Decoding MODULAR_ORIG_COMMIT_REV_ID: d387534a36e5bc9a7299fef2650dee9184fab56e --- src/max/pipelines/config.py | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/max/pipelines/config.py b/src/max/pipelines/config.py index b71b604777..005915d889 100644 --- a/src/max/pipelines/config.py +++ b/src/max/pipelines/config.py @@ -688,6 +688,9 @@ class PipelineConfig: "USE_EXPERIMENTAL_KERNELS", "false" ) + draft_model: Optional[str] = None + """Draft model for use during Speculative Decoding.""" + def __post_init__(self) -> None: # Validate if a provided max_length is non-negative. if self.max_length is not None and self.max_length < 0: @@ -802,6 +805,13 @@ def __post_init__(self) -> None: ): raise ValueError("gpu_profiling must be a boolean or 'detailed'") + if self.draft_model: + if not _repo_exists_with_retry(self.draft_model): + raise ValueError( + "draft_model provided does not exist on HuggingFace." + "Only public HuggingFace draft models currently supported." + ) + def __getstate__(self) -> dict[str, Any]: """Override `__getstate__` to exclude the Hugging Face config.""" state = self.__dict__.copy() @@ -1058,6 +1068,7 @@ def help() -> dict[str, str]: "force_download": "Specify whether to forcefully download a file even if it already exists in local cache. Set this to true if you want to ensure you have the latest version.", "enable_echo": "Whether the model should be built with echo capabilities. This defaults to false.", "gpu_profiling": "Whether to enable GPU profiling of the model. This defaults to false.", + "draft_model": "Draft model for use in speculative decoding.", } def huggingface_weights_repo(self) -> HuggingFaceRepo: From 3794d427bc7bea34d7a0a4c9cf609e005620d7f9 Mon Sep 17 00:00:00 2001 From: kcaverly Date: Thu, 27 Feb 2025 15:43:35 -0500 Subject: [PATCH 493/509] [Pipelines] Load Scaffolded SpeculativeDecodingTextGenerationPipeline via PIPELINE_REGISTRY MODULAR_ORIG_COMMIT_REV_ID: a786273ce5c0890ba2ed15bc6717afee46199966 --- src/max/pipelines/__init__.py | 2 + src/max/pipelines/registry.py | 51 +++++++++++++++++++-- src/max/pipelines/speculative_decoding.py | 56 +++++++++++++++++++++++ 3 files changed, 104 insertions(+), 5 deletions(-) create mode 100644 src/max/pipelines/speculative_decoding.py diff --git a/src/max/pipelines/__init__.py b/src/max/pipelines/__init__.py index 33c02c405a..7e673e191f 100644 --- a/src/max/pipelines/__init__.py +++ b/src/max/pipelines/__init__.py @@ -50,6 +50,7 @@ upper_bounded_default, ) from .registry import PIPELINE_REGISTRY, SupportedArchitecture +from .speculative_decoding import SpeculativeDecodingTextGenerationPipeline from .tokenizer import ( IdentityPipelineTokenizer, PreTrainedPipelineTokenizer, @@ -96,5 +97,6 @@ "EmbeddingsGenerator", "EmbeddingsPipeline", "EmbeddingsResponse", + "SpeculativeDecodingTextGenerationPipeline", "upper_bounded_default", ] diff --git a/src/max/pipelines/registry.py b/src/max/pipelines/registry.py index 2e180772f2..1f8149e0fa 100644 --- a/src/max/pipelines/registry.py +++ b/src/max/pipelines/registry.py @@ -42,6 +42,7 @@ ) from .kv_cache import KVCacheStrategy from .pipeline import KVCacheMixin, PipelineModel, TextGenerationPipeline +from .speculative_decoding import SpeculativeDecodingTextGenerationPipeline from .tokenizer import TextAndVisionTokenizer, TextTokenizer logger = logging.getLogger("max.pipelines") @@ -54,10 +55,24 @@ SupportedEncoding.bfloat16: SupportedEncoding.float32, } -_PIPELINE_TASK_MAP = { - PipelineTask.TEXT_GENERATION: TextGenerationPipeline, - PipelineTask.EMBEDDINGS_GENERATION: EmbeddingsPipeline, -} + +def get_pipeline_for_task( + task: PipelineTask, pipeline_config: PipelineConfig +) -> ( + type[TextGenerationPipeline] + | type[EmbeddingsPipeline] + | type[SpeculativeDecodingTextGenerationPipeline] +): + if task == PipelineTask.TEXT_GENERATION: + if pipeline_config.draft_model is not None: + return SpeculativeDecodingTextGenerationPipeline + else: + return TextGenerationPipeline + elif task == PipelineTask.EMBEDDINGS_GENERATION: + return EmbeddingsPipeline + else: + msg = f"PipelineTask ({task}) does not have supported Pipeline" + raise ValueError(msg) _HF_PIPELINE_TASK_MAP: dict[ @@ -144,8 +159,34 @@ def architecture_details( else: return None + def _validate_pipeline_config_for_speculative_decoding( + self, pipeline_config: PipelineConfig + ) -> None: + # When `draft_model` is not provided, speculative decoding is disabled. + if not pipeline_config.draft_model: + return None + + # Assume `draft_model` is provided, and thus speculative decoding is enabled. + # We don't support running speculative decoding with the HuggingFace backend. + if pipeline_config.engine == PipelineEngine.HUGGINGFACE: + msg = ( + "Speculative Decoding not supported with the HuggingFace Engine" + ) + raise ValueError(msg) + def validate_pipeline_config( self, pipeline_config: PipelineConfig + ) -> PipelineConfig: + # Run Baseline Validation + pipeline_config = self._validate_pipeline_config(pipeline_config) + + # Run Additional Checks for Speculative Decoding + self._validate_pipeline_config_for_speculative_decoding(pipeline_config) + + return pipeline_config + + def _validate_pipeline_config( + self, pipeline_config: PipelineConfig ) -> PipelineConfig: """Update pipeline config with appropriate values if not provided. If invalid config is provided, error out with detailed reason.""" @@ -921,7 +962,7 @@ def retrieve_factory( # Keep MyPy happy. assert pipeline_config.architecture is not None - pipeline_class = _PIPELINE_TASK_MAP[task] + pipeline_class = get_pipeline_for_task(task, pipeline_config) # MAX pipeline arch = self.architectures[pipeline_config.architecture] diff --git a/src/max/pipelines/speculative_decoding.py b/src/max/pipelines/speculative_decoding.py new file mode 100644 index 0000000000..b72c1cf9f8 --- /dev/null +++ b/src/max/pipelines/speculative_decoding.py @@ -0,0 +1,56 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # +# mypy: disable-error-code="import-not-found" +"""Speculative Decoding Text Generation Pipeline""" + +from typing import Type, TypeVar + +from .config import PipelineConfig +from .context import InputContext +from .interfaces import TextGenerationResponse, TokenGenerator +from .pipeline import PipelineModel + +T = TypeVar("T", bound=InputContext) + + +class SpeculativeDecodingTextGenerationPipeline(TokenGenerator[T]): + """Generalized token generator pipeline with speculative decoding.""" + + def __init__( + self, + pipeline_config: PipelineConfig, + pipeline_model: Type[PipelineModel], + eos_token_id: int, + ) -> None: + raise NotImplementedError( + "init not yet implemented for SpeculativeDecodingTextGenerationPipeline" + ) + + def next_token( + self, batch: dict[str, T], num_steps: int + ) -> dict[str, TextGenerationResponse]: + """Provided a batch, execute both the draft model for num_steps and the target model for num_steps + 1 tokens, accepting final tokens via rejection sampling, returning the variable list of token integers.""" + raise NotImplementedError( + "next_token not yet implemented for SpeculativeDecodingTextGenerationPipeline" + ) + + def release(self, context: T) -> None: + """Releases resources associated with this context. + + Args: + context (TokenGeneratorContext): Finished context. + + """ + raise NotImplementedError( + "release not yet implemented for SpeculativeDecodingTextGenerationPipeline" + ) From fa342a77199fc6c61f1937615b779756f866308c Mon Sep 17 00:00:00 2001 From: Austin Doolittle Date: Thu, 27 Feb 2025 16:33:14 -0500 Subject: [PATCH 494/509] [KVCache] rework max_cache_length to max_context_length (#56592) We were previously passing areound the max number of encoded tokens in the cache before QKV projection. This, out, is less useful than the max context length, which is the sum of the number of encoded tokens in tthe KVCache plus the new tokens we're encoding in the active forward pass. This PR cleans this up, and is a prerequisite to work included in E2EOPT-25t l MODULAR_ORIG_COMMIT_REV_ID: 2ba4178bd602dabfce4b9fb10181b98e42e241cb --- src/max/pipelines/kv_cache/_utils.py | 3 ++- src/max/pipelines/kv_cache/continuous_batching_cache.py | 8 +++++--- src/max/pipelines/kv_cache/paged_cache.py | 8 +++++--- 3 files changed, 12 insertions(+), 7 deletions(-) diff --git a/src/max/pipelines/kv_cache/_utils.py b/src/max/pipelines/kv_cache/_utils.py index 6942ad7823..1c8389142a 100644 --- a/src/max/pipelines/kv_cache/_utils.py +++ b/src/max/pipelines/kv_cache/_utils.py @@ -28,6 +28,7 @@ def build_max_lengths_tensor( for step in range(num_steps): max_lengths_np[step, 0] = step_max_seq_length max_lengths_np[step, 1] = step_max_cache_length - step_max_cache_length += step_max_seq_length step_max_seq_length = 1 + step_max_cache_length += 1 + return Tensor.from_numpy(max_lengths_np) diff --git a/src/max/pipelines/kv_cache/continuous_batching_cache.py b/src/max/pipelines/kv_cache/continuous_batching_cache.py index b6f75e9c8a..cb7936d97a 100644 --- a/src/max/pipelines/kv_cache/continuous_batching_cache.py +++ b/src/max/pipelines/kv_cache/continuous_batching_cache.py @@ -255,7 +255,7 @@ def _fetch( cache_lengths_np = np.zeros(active_batch_size, np.uint32) max_seq_length = 0 - max_cache_length = 0 + max_context_length = 0 for i, (seq_id, prompt) in enumerate(seq_ids_and_prompts.items()): if seq_id > self.max_batch_size: @@ -281,7 +281,9 @@ def _fetch( # Update the maximum lengths seen so far. max_seq_length = max(max_seq_length, len(prompt)) - max_cache_length = max(max_cache_length, cache_len) + max_context_length = max( + max_context_length, cache_len + len(prompt) + ) cache_lengths = [ Tensor.from_numpy(cache_lengths_np).to(d) for d in self.devices @@ -294,7 +296,7 @@ def _fetch( # Build a tensor of maximum lengths. Each step slices the first row to # advance to the values for the next row. max_lengths_host = build_max_lengths_tensor( - num_steps, max_seq_length, max_cache_length + num_steps, max_seq_length, max_context_length ) result = [ diff --git a/src/max/pipelines/kv_cache/paged_cache.py b/src/max/pipelines/kv_cache/paged_cache.py index ab33d3335e..aa2c392995 100644 --- a/src/max/pipelines/kv_cache/paged_cache.py +++ b/src/max/pipelines/kv_cache/paged_cache.py @@ -542,7 +542,7 @@ def _fetch( # Determine the number of pages required for each sequence. max_seq_length = 0 - max_cache_length = 0 + max_context_length = 0 total_sequence_length = 0 total_blocks_to_allocate = 0 blocks_to_allocate_by_seq = {} @@ -557,7 +557,9 @@ def _fetch( # Update the maximum lengths seen so far. max_seq_length = max(max_seq_length, len(prompt)) - max_cache_length = max(max_cache_length, cache_length) + max_context_length = max( + max_context_length, cache_length + len(prompt) + ) # Compute the total sequence length and the number of pages required to store it. total_sequence_length += data.seq_len @@ -604,7 +606,7 @@ def _fetch( # Build a tensor of maximum lengths. Each step slices the first row to # advance to the values for the next row. max_lengths_host = build_max_lengths_tensor( - num_steps, max_seq_length, max_cache_length + num_steps, max_seq_length, max_context_length ) lut_table_host = Tensor.from_numpy(lut_table_np) From 02b4fdb828f6299f4efdc0f0ec960770e46d3de1 Mon Sep 17 00:00:00 2001 From: Zac Bowling Date: Thu, 27 Feb 2025 13:41:51 -0800 Subject: [PATCH 495/509] [build] Don't use broken opentelemetry-exporter-prometheus (#56798) We only need to avoid the broken yanked version of this for conda (temporarily), not PyPI. MODULAR_ORIG_COMMIT_REV_ID: d0ca07b068ef783717aa2fef884e717b9479f7e1 --- src/max/pipelines/requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/max/pipelines/requirements.txt b/src/max/pipelines/requirements.txt index dc050dddf6..708e101b5b 100644 --- a/src/max/pipelines/requirements.txt +++ b/src/max/pipelines/requirements.txt @@ -22,7 +22,7 @@ httpx>=0.28.1,<0.29 huggingface-hub>=0.24.0 opentelemetry-api>=1.29.0 opentelemetry-exporter-otlp-proto-http>=1.27.0 -opentelemetry-exporter-prometheus<1.0.0 +opentelemetry-exporter-prometheus>=0.48b0 opentelemetry-sdk>=1.29.0 pillow>=10.3.0 prometheus-async>=22.2.0 From aeedc3d65fb25615adbe5a750dffb54e8ce1b1bd Mon Sep 17 00:00:00 2001 From: Brian Zhang Date: Thu, 27 Feb 2025 14:13:18 -0800 Subject: [PATCH 496/509] [KVCache] Implement `query_fetch_stats` in `PagedKVCacheManager` (#56606) This new method will compute some statistics about running a fetch operation without actually running the fetch or mutating state. Such info includes - blocks reused from prefix cache - tokens to encode - new pages needed This will be needed by the scheduler when doing kvcache and prefix cache aware scheduling. To implement this, we split the prefix cache `fetch` and `fetch_cow` methods into additional smaller helper methods that also do not mutate state. To test this, I monkey patched each call to `paged_manager.fetch` to call `query_fetch_stats`. Then after running the original `fetch`, I compare the actual and predicted statistics. Towards E2EOPT-62 MODULAR_ORIG_COMMIT_REV_ID: 4f826941818a256c31455f51de548a2c78f1431e --- src/max/pipelines/kv_cache/paged_cache.py | 41 +++++ .../kv_cache/paged_cache_metadata.py | 17 ++ src/max/pipelines/kv_cache/prefix_cache.py | 158 ++++++++++++++---- 3 files changed, 186 insertions(+), 30 deletions(-) diff --git a/src/max/pipelines/kv_cache/paged_cache.py b/src/max/pipelines/kv_cache/paged_cache.py index aa2c392995..11ce2356cb 100644 --- a/src/max/pipelines/kv_cache/paged_cache.py +++ b/src/max/pipelines/kv_cache/paged_cache.py @@ -471,6 +471,47 @@ def get_num_cached_tokens(self, prompt: np.ndarray) -> int: return 0 return self.prefix_cache.get_num_cached_tokens(prompt) + def query_fetch_stats( + self, seq_id: int, prompt: np.ndarray, num_steps: int = 1 + ) -> tuple[set[int], int, int]: + """Query about the stats about running the fetch operation for a given + sequence. + + This method does not modify the state of the paged cache. + + Returns: + - prefix_blocks: Prefix cache blocks that would be reused for this seq. + - tokens_to_encode: Number of tokens in prompt we need to encode when running the fetch. + - new_pages_needed: Number of new pages we need to allocate when running the fetch. + """ + data = self.active_requests.get( + seq_id, PagedCacheMetadata(self.page_size, self.max_seq_len) + ) + data.fetch(prompt, num_steps) + prefix_blocks: set[int] = set() + cache_hit_tokens = 0 + if self.prefix_cache is not None: + # copy on write does not impact the number of new blocks needed + prefix_blocks, cache_hit_tokens = ( + self.prefix_cache.query_fetch_stats(seq_id, data) + ) + assert cache_hit_tokens >= 0 + + tokens_to_encode = len(data.prompt_tokens) - cache_hit_tokens + assert tokens_to_encode >= 1 + # recall that if we have any full cache hits, we will need to release our + # partial block as it is replaced with a full block + num_existing_pages = len(data.blocks) + num_existing_pages += len(prefix_blocks) + total_pages_needed = ceildiv(data.seq_len, self.page_size) + new_pages_needed = total_pages_needed - num_existing_pages + assert new_pages_needed >= 0 + + # reverse the fetch operation so that this method does not mutate state + data.undo_fetch(prompt, num_steps) + + return prefix_blocks, tokens_to_encode, new_pages_needed + def _fetch( self, seq_ids_and_prompts: dict[int, np.ndarray], num_steps: int = 1 ) -> List[KVCacheInputs]: diff --git a/src/max/pipelines/kv_cache/paged_cache_metadata.py b/src/max/pipelines/kv_cache/paged_cache_metadata.py index abeb8f7a40..0e1d8f6e62 100644 --- a/src/max/pipelines/kv_cache/paged_cache_metadata.py +++ b/src/max/pipelines/kv_cache/paged_cache_metadata.py @@ -169,3 +169,20 @@ def step(self, new_tokens: np.ndarray) -> None: "After step, all tokens should have a backing KV projection in the cache" ) self._validate_indices() + + def undo_fetch(self, prompt: np.ndarray, num_steps: int) -> None: + """Remove prompt from token array and release inflight tokens.""" + self._validate_indices() + assert len(self.prompt_tokens) > 0 + assert len(self.prompt_tokens) == len(prompt) + num_inflight_tokens = num_steps - 1 + assert len(self.inflight_tokens) == num_inflight_tokens + self.tokens[self.cached_idx : self.inflight_idx] = 0 + self.seq_len -= len(prompt) + num_inflight_tokens + self.inflight_idx -= len(prompt) + assert len(self.inflight_tokens) == 0 + assert len(self.prompt_tokens) == 0 + self._validate_indices() + + def __repr__(self) -> str: + return f"PagedCacheMetadata(committed_idx={self.committed_idx}, cached_idx={self.cached_idx}, inflight_idx={self.inflight_idx}, seq_len={self.seq_len}, blocks={self.blocks})" diff --git a/src/max/pipelines/kv_cache/prefix_cache.py b/src/max/pipelines/kv_cache/prefix_cache.py index 191f53ffd2..751abbd6f5 100644 --- a/src/max/pipelines/kv_cache/prefix_cache.py +++ b/src/max/pipelines/kv_cache/prefix_cache.py @@ -202,40 +202,67 @@ def _release_partial_block( data.cached_idx -= partial_tokens assert data.committed_idx == data.cached_idx - def fetch( + def _fetch_query_cache( self, seq_id: int, data: PagedCacheMetadata, - free_block_fn: Callable[[int], None], - alloc_block_fn: Callable[[], int], - ) -> list[int]: - """Extend the kv cache for given request with any cached prefixes. + ) -> tuple[TrieNode, list[int]]: + """A helper method used by `fetch` which queries the prefix cache for + full blocks which the request should reuse. - This will increment the committed_idx and cached_idx if there is a cache - hit. The prompt will be trimmed in the event that cached_idx is bumped. + This method does not modify the state of the prefix cache. + + Returns: + - node: the new position of the trie node for a given sequence once + it adds the prefix blocks to its assigned blocks + - prefix_blocks: blocks the sequence should reuse from the cache """ + node = self.active_requests.get(seq_id, self.radix_trie.root) + # If there is only one committable token, that means that the prompt # is one token. We cannot reduce the prompt length any further since # the model expects a prompt of length at least 1. committable_tokens = data.committable_tokens[:-1] if len(committable_tokens) == 0: - return [] + return node, [] # Query trie for all but last token. - node = self.active_requests[seq_id] node, prefix_blocks = self.radix_trie.match_prefix( committable_tokens, node=node ) - self.active_requests[seq_id] = node - # Mark the prefix blocks we retrieved from the radix trie cache as - # in use by this sequence so they don't get evicted prematurely. - self.radix_trie.mark_in_use_by(node, seq_id) + return node, prefix_blocks + + def fetch( + self, + seq_id: int, + data: PagedCacheMetadata, + free_block_fn: Callable[[int], None], + alloc_block_fn: Callable[[], int], + ) -> list[int]: + """Extend the kv cache for given request with any cached prefixes. + + This will increment the committed_idx and cached_idx if there is a cache + hit. The prompt will be trimmed in the event that cached_idx is bumped. + """ + node, prefix_blocks = self._fetch_query_cache(seq_id, data) # Update the cache hit rate metrics. num_cache_hit_tokens = len(prefix_blocks) * self.page_size self.cache_hit_tokens += num_cache_hit_tokens - self.all_tokens += len(committable_tokens) + self.all_tokens += len(data.committable_tokens) - 1 + + # Exit early if there are no cache hits. + if len(prefix_blocks) == 0: + if self.enable_cow: + self._fetch_cow(seq_id, data, free_block_fn, alloc_block_fn) + return [] + + self.active_requests[seq_id] = node + + # Mark the prefix blocks we retrieved from the radix trie cache as + # in use by this sequence so they don't get evicted prematurely. + self.radix_trie.mark_in_use_by(node, seq_id) # If there is a block with partially cached tokens, we should release it # if the cache hit blocks already contain these tokens and more @@ -253,6 +280,47 @@ def fetch( return prefix_blocks + def _fetch_cow_query_cache( + self, + node: TrieNode, + committable_tokens: np.ndarray, + partial_tokens: int, + ) -> tuple[Optional[int], int]: + """A helper method used by `_fetch_cow` which queries the prefix cache + for a block resident in prefix cache to copy tokens from for COW. + + This method does not modify the state of the prefix cache. + + Returns: + - partial_match_block: block to copy tokens from, this is None in + the event that performing COW is not beneficial + - num_cache_hit_tokens: tokens to copy from the block + """ + assert self.enable_cow + assert self.page_size > 1 + assert self.cow_strided_memcpy_graph is not None + assert len(committable_tokens) > 0 + assert 0 <= partial_tokens < self.page_size + + # Match page_size tokens in the radix trie + committable_tokens = committable_tokens[:-1] + if len(committable_tokens) == 0: + return None, 0 + committable_tokens_cropped = list(committable_tokens[: self.page_size]) + res = node.find_block_with_largest_common_prefix( + committable_tokens_cropped + ) + if res is None: + return None, 0 + partial_match_block, num_cache_hit_tokens = res + assert 0 < num_cache_hit_tokens < self.page_size + + # No point in performing COW if we have more cached but uncommitted tokens + # in the existing partial block than the matched prefix length. + if num_cache_hit_tokens <= partial_tokens: + return None, 0 + return partial_match_block, num_cache_hit_tokens + def _fetch_cow( self, seq_id: int, @@ -274,25 +342,16 @@ def _fetch_cow( return assert self.cow_strided_memcpy_graph is not None - # Match page_size tokens in the radix trie - committable_tokens = data.committable_tokens[:-1] - if len(committable_tokens) == 0: - return - committable_tokens_cropped = list(committable_tokens[: self.page_size]) + committable_tokens = data.committable_tokens node = self.active_requests[seq_id] - res = node.find_block_with_largest_common_prefix( - committable_tokens_cropped - ) - if res is None: - return - partial_match_block, num_cache_hit_tokens = res - assert 0 < num_cache_hit_tokens < self.page_size - - # No point in performing COW if we have more cached but uncommitted tokens - # in the existing partial block than the matched prefix length. partial_tokens = data.cached_idx - data.committed_idx - if num_cache_hit_tokens <= partial_tokens: + partial_match_block, num_cache_hit_tokens = self._fetch_cow_query_cache( + node, committable_tokens, partial_tokens + ) + if partial_match_block is None: return + assert num_cache_hit_tokens > 0 + assert num_cache_hit_tokens > partial_tokens # If we have a partially cached block, we need to release it before # appending additional blocks. @@ -314,6 +373,45 @@ def _fetch_cow( assert len(data.prompt_tokens) > 0 assert data.cached_idx < data.inflight_idx + def query_fetch_stats( + self, seq_id: int, data: PagedCacheMetadata + ) -> tuple[set[int], int]: + """Query the prefix trie for the cache hit stats for the given sequence. + + This method does not modify the state of the prefix cache. + + Returns: + - prefix_blocks: Prefix cache blocks that would be reused for this seq. + - num_cache_hit_tokens: Number of new cached tokens retrieved from prefix cache. + """ + node, prefix_blocks = self._fetch_query_cache(seq_id, data) + num_cache_hit_tokens = len(prefix_blocks) * self.page_size + + # If COW is enabled, we should consider the number of additional cache + # hits that would be incurred by performing a COW operation. + if self.enable_cow and self.page_size > 1: + committable_tokens = data.committable_tokens + committable_tokens = committable_tokens[num_cache_hit_tokens:] + partial_tokens = data.cached_idx - data.committed_idx + if len(prefix_blocks) > 0: + partial_tokens = 0 + partial_match_block, num_cow_cache_hit_tokens = ( + self._fetch_cow_query_cache( + node, committable_tokens, partial_tokens + ) + ) + if partial_match_block is not None: + num_cache_hit_tokens += num_cow_cache_hit_tokens + + # Determine the number of cache hit tokens, excluding any tokens that + # were already cached in a partial block. + new_cached_idx = max( + data.committed_idx + num_cache_hit_tokens, data.cached_idx + ) + num_cache_hit_tokens = new_cached_idx - data.cached_idx + assert num_cache_hit_tokens >= 0 + return set(prefix_blocks), num_cache_hit_tokens + def step( self, seq_id: int, From c3a576c31ee418487c2e4dc07cea3d837af67e41 Mon Sep 17 00:00:00 2001 From: Patrick Dougherty Date: Thu, 27 Feb 2025 16:37:02 -0600 Subject: [PATCH 497/509] [CI] Fix script paths MODULAR_ORIG_COMMIT_REV_ID: 88187ea34fe16c74adb8dac66d27c711c3d23b53 --- .github/workflows/test_pre_commit.yml | 5 ++--- .pre-commit-config.yaml | 6 +++--- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/.github/workflows/test_pre_commit.yml b/.github/workflows/test_pre_commit.yml index 99a2ddf73d..12ed62a50a 100644 --- a/.github/workflows/test_pre_commit.yml +++ b/.github/workflows/test_pre_commit.yml @@ -46,7 +46,6 @@ jobs: run: | pip install pre-commit pre-commit install - - - name: Run pre-commit - run: magic run pre-commit run --all-files + - name: Run pre-commit + run: magic run --manifest-path mojo pre-commit run --all-files diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 5e3e2ec6e2..0e7d167ade 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -16,9 +16,9 @@ repos: hooks: - id: mojo-format name: mojo-format - entry: mojo format mojo + entry: mojo format language: system - files: '\.(mojo|🔥|py)$' + files: '^(mojo|examples/mojo).*\.(mojo|🔥|py)$' stages: [commit] - id: check-docstrings name: check-docstrings @@ -30,7 +30,7 @@ repos: name: check-license entry: mojo mojo/stdlib/scripts/check_licenses.mojo language: system - files: '\.(mojo|🔥|py)$' + files: '^(mojo|examples/mojo).*\.(mojo|🔥|py)$' stages: [commit] - repo: https://github.com/igorshubovych/markdownlint-cli rev: v0.40.0 From 3b88d3b4129ab4c5c1bd44cae836051549f9d9d9 Mon Sep 17 00:00:00 2001 From: Brian Zhang Date: Thu, 27 Feb 2025 14:47:19 -0800 Subject: [PATCH 498/509] [KVCache][Scheduler] Remove O(ce_batch_size^2 * seqlen) loop in batch creation (#56644) Fixes very inefficient kvcache / prefix cache aware scheduling. We were previously see-ing batch creation times of upwards of 1s. This fixes the above issue. ``` // Before ce_batch = [] loop: // O(ce_batch_size) req = q.pop() if not paged_manager.can_fetch(ce_batch + res): // O(ce_batch_size * seq_len) break ce_batch += res // After ce_batch = [] free_blocks = paged_manager.avail_blocks + stale_blocks tot_new_pages_needed = 0 loop: // O(ce_batch_size) req = q.pop() cache_hit_blocks, tokens_to_encode, new_pages_needed = paged_manager.query_fetch_stats(req) // O(seq_len) if free_blocks - cache_hit_blocks < tot_new_pages_needed + new_pages_needed: break ce_batch += req tot_new_pages_needed += new_pages_needed free_blocks -= cache_hit_blocks ``` Server: ``` br //SDK/lib/API/python/max/entrypoints:pipelines --test_output=streamed --test_arg=-svv -- serve --model-path=meta-llama/Meta-Llama-3.1-8B-Instruct --quantization-encoding bfloat16 --use-gpu --cache-strategy paged --kv-cache-page-size 128 --max-batch-size 512 --max-num-steps 10 --max-length 2048 --pad-to-multiple-of 2 --enable-prefix-caching ``` Client: ``` python3 $(realpath open-source/max/benchmark/benchmark_serving.py) --backend modular --model meta-llama/Meta-Llama-3.1-8B-Instruct --dataset-name sonnet --dataset-path $(realpath utils/benchmarking/serving/sonnet_4x.txt) --endpoint /v1/completions --num-prompts 500 --sonnet-input-len 512 --sonnet-output-len 16 --sonnet-prefix 192 --request-rate inf --collect-gpu-stats --print-inputs-and-outputs ``` Results after warmup with different seed: ``` {'req_id': 498, 'output_len': 16, 'output': 'Here are the lines from the poem:\n\n1. FROM fairest creatures we desire'} {'req_id': 499, 'output_len': 16, 'output': 'Here are the lines from the poem:\n\n1. FROM fairest creatures we desire'} ============ Serving Benchmark Result ============ Successful requests: 500 Failed requests: 0 Benchmark duration (s): 12.11 Total input tokens: 232488 Total generated tokens: 8000 Request throughput (req/s): 41.28 Input token throughput (tok/s): 19192.00 Output token throughput (tok/s): 660.40 ---------------Time to First Token---------------- Mean TTFT (ms): 5806.47 Median TTFT (ms): 5896.86 P99 TTFT (ms): 10296.24 -----Time per Output Token (excl. 1st token)------ Mean TPOT (ms): 408.27 Median TPOT (ms): 402.32 P99 TPOT (ms): 725.17 ---------------Inter-token Latency---------------- Mean ITL (ms): 407.57 Median ITL (ms): 73.28 P99 ITL (ms): 8737.24 -------------------Token Stats-------------------- Max input tokens: 494 Max output tokens: 16 Max total tokens: 510 --------------------GPU Stats--------------------- GPU Utilization (%): 80.63 Peak GPU Memory Used (MiB): 76842.56 GPU Memory Available (MiB): 4313.19 ================================================== 00:39:24.134 INFO: benchmark_serving: finished benchmark run: Success. ``` Logs: ``` 3ms | KVCache usage: 0.0% of 3679 blocks, Cache hit rate: 20.1%, All Preemptions: 0 reqs Executed CE batch with 1 reqs | Terminated: 0 reqs, Pending: 0 reqs | Prompt Tput: 14.1K tok/s, Generation Tput: 29.2 tok/s | Batch creation: 574.3us, Execution: 34.2ms | KVCache usage: 0.1% of 3679 blocks, Cache hit rate: 20.1%, All Preemptions: 0 reqs Executed TG batch with 1 reqs | Terminated: 0 reqs, Pending: 0 reqs | Prompt Tput: 9.8 tok/s, Generation Tput: 97.9 tok/s | Batch creation: 90.4us, Execution: 102.2ms | KVCache usage: 0.1% of 3679 blocks, Cache hit rate: 20.1%, All Preemptions: 0 reqs Executed TG batch with 1 reqs | Terminated: 1 reqs, Pending: 0 reqs | Prompt Tput: 9.8 tok/s, Generation Tput: 97.8 tok/s | Batch creation: 87.9us, Execution: 102.2ms | KVCache usage: 0.0% of 3679 blocks, Cache hit rate: 20.1%, All Preemptions: 0 reqs Executed CE batch with 1 reqs | Terminated: 0 reqs, Pending: 20 reqs | Prompt Tput: 28.9K tok/s, Generation Tput: 59.9 tok/s | Batch creation: 463.2us, Execution: 16.7ms | KVCache usage: 0.1% of 3679 blocks, Cache hit rate: 20.2%, All Preemptions: 0 reqs Executed CE batch with 1 reqs | Terminated: 0 reqs, Pending: 69 reqs | Prompt Tput: 15.3K tok/s, Generation Tput: 33.2 tok/s | Batch creation: 312.9us, Execution: 30.1ms | KVCache usage: 0.2% of 3679 blocks, Cache hit rate: 20.2%, All Preemptions: 0 reqs Executed CE batch with 9 reqs | Terminated: 0 reqs, Pending: 489 reqs | Prompt Tput: 22.9K tok/s, Generation Tput: 49.3 tok/s | Batch creation: 1.7ms, Execution: 182.5ms | KVCache usage: 0.9% of 3679 blocks, Cache hit rate: 20.3%, All Preemptions: 0 reqs Executed CE batch with 29 reqs | Terminated: 1 reqs, Pending: 461 reqs | Prompt Tput: 25.5K tok/s, Generation Tput: 55.7 tok/s | Batch creation: 5.3ms, Execution: 520.9ms | KVCache usage: 3.3% of 3679 blocks, Cache hit rate: 20.6%, All Preemptions: 0 reqs Executed CE batch with 10 reqs | Terminated: 0 reqs, Pending: 451 reqs | Prompt Tput: 22.9K tok/s, Generation Tput: 52.6 tok/s | Batch creation: 1.8ms, Execution: 190.0ms | KVCache usage: 4.0% of 3679 blocks, Cache hit rate: 20.6%, All Preemptions: 0 reqs Executed CE batch with 29 reqs | Terminated: 1 reqs, Pending: 423 reqs | Prompt Tput: 25.5K tok/s, Generation Tput: 55.5 tok/s | Batch creation: 4.9ms, Execution: 522.4ms | KVCache usage: 6.3% of 3679 blocks, Cache hit rate: 20.9%, All Preemptions: 0 reqs Executed CE batch with 10 reqs | Terminated: 0 reqs, Pending: 413 reqs | Prompt Tput: 22.5K tok/s, Generation Tput: 50.9 tok/s | Batch creation: 1.8ms, Execution: 196.6ms | KVCache usage: 7.1% of 3679 blocks, Cache hit rate: 21.0%, All Preemptions: 0 reqs Executed CE batch with 29 reqs | Terminated: 1 reqs, Pending: 385 reqs | Prompt Tput: 25.5K tok/s, Generation Tput: 55.4 tok/s | Batch creation: 4.9ms, Execution: 523.2ms | KVCache usage: 9.5% of 3679 blocks, Cache hit rate: 21.2%, All Preemptions: 0 reqs Executed CE batch with 10 reqs | Terminated: 0 reqs, Pending: 375 reqs | Prompt Tput: 22.9K tok/s, Generation Tput: 52.9 tok/s | Batch creation: 1.9ms, Execution: 189.1ms | KVCache usage: 10.2% of 3679 blocks, Cache hit rate: 21.3%, All Preemptions: 0 reqs Executed CE batch with 29 reqs | Terminated: 1 reqs, Pending: 347 reqs | Prompt Tput: 25.5K tok/s, Generation Tput: 55.4 tok/s | Batch creation: 5.0ms, Execution: 523.3ms | KVCache usage: 12.6% of 3679 blocks, Cache hit rate: 21.5%, All Preemptions: 0 reqs Executed CE batch with 10 reqs | Terminated: 0 reqs, Pending: 337 reqs | Prompt Tput: 23.9K tok/s, Generation Tput: 54.3 tok/s | Batch creation: 1.8ms, Execution: 184.1ms | KVCache usage: 13.3% of 3679 blocks, Cache hit rate: 21.5%, All Preemptions: 0 reqs Executed CE batch with 29 reqs | Terminated: 1 reqs, Pending: 309 reqs | Prompt Tput: 25.7K tok/s, Generation Tput: 55.6 tok/s | Batch creation: 5.0ms, Execution: 521.7ms | KVCache usage: 15.7% of 3679 blocks, Cache hit rate: 21.7%, All Preemptions: 0 reqs Executed CE batch with 10 reqs | Terminated: 0 reqs, Pending: 299 reqs | Prompt Tput: 23.5K tok/s, Generation Tput: 55.5 tok/s | Batch creation: 1.7ms, Execution: 180.1ms | KVCache usage: 16.4% of 3679 blocks, Cache hit rate: 21.8%, All Preemptions: 0 reqs Executed CE batch with 29 reqs | Terminated: 1 reqs, Pending: 271 reqs | Prompt Tput: 25.5K tok/s, Generation Tput: 55.6 tok/s | Batch creation: 4.9ms, Execution: 521.8ms | KVCache usage: 18.7% of 3679 blocks, Cache hit rate: 22.0%, All Preemptions: 0 reqs Executed CE batch with 10 reqs | Terminated: 0 reqs, Pending: 261 reqs | Prompt Tput: 22.4K tok/s, Generation Tput: 50.1 tok/s | Batch creation: 1.9ms, Execution: 199.4ms | KVCache usage: 19.5% of 3679 blocks, Cache hit rate: 22.0%, All Preemptions: 0 reqs Executed CE batch with 29 reqs | Terminated: 1 reqs, Pending: 233 reqs | Prompt Tput: 25.5K tok/s, Generation Tput: 55.5 tok/s | Batch creation: 4.9ms, Execution: 522.8ms | KVCache usage: 21.9% of 3679 blocks, Cache hit rate: 22.2%, All Preemptions: 0 reqs Executed CE batch with 10 reqs | Terminated: 0 reqs, Pending: 223 reqs | Prompt Tput: 22.8K tok/s, Generation Tput: 54.1 tok/s | Batch creation: 1.8ms, Execution: 184.8ms | KVCache usage: 22.6% of 3679 blocks, Cache hit rate: 22.2%, All Preemptions: 0 reqs Executed CE batch with 29 reqs | Terminated: 1 reqs, Pending: 195 reqs | Prompt Tput: 25.4K tok/s, Generation Tput: 55.1 tok/s | Batch creation: 5.4ms, Execution: 526.8ms | KVCache usage: 25.0% of 3679 blocks, Cache hit rate: 22.4%, All Preemptions: 0 reqs Executed CE batch with 10 reqs | Terminated: 0 reqs, Pending: 185 reqs | Prompt Tput: 23.8K tok/s, Generation Tput: 55.7 tok/s | Batch creation: 1.9ms, Execution: 179.4ms | KVCache usage: 25.7% of 3679 blocks, Cache hit rate: 22.4%, All Preemptions: 0 reqs Executed CE batch with 29 reqs | Terminated: 1 reqs, Pending: 157 reqs | Prompt Tput: 25.6K tok/s, Generation Tput: 55.4 tok/s | Batch creation: 5.0ms, Execution: 523.7ms | KVCache usage: 28.1% of 3679 blocks, Cache hit rate: 22.6%, All Preemptions: 0 reqs Executed CE batch with 10 reqs | Terminated: 0 reqs, Pending: 147 reqs | Prompt Tput: 22.9K tok/s, Generation Tput: 54.2 tok/s | Batch creation: 1.8ms, Execution: 184.4ms | KVCache usage: 28.8% of 3679 blocks, Cache hit rate: 22.6%, All Preemptions: 0 reqs Executed CE batch with 29 reqs | Terminated: 1 reqs, Pending: 119 reqs | Prompt Tput: 25.5K tok/s, Generation Tput: 55.3 tok/s | Batch creation: 5.0ms, Execution: 524.2ms | KVCache usage: 31.2% of 3679 blocks, Cache hit rate: 22.8%, All Preemptions: 0 reqs Executed CE batch with 10 reqs | Terminated: 0 reqs, Pending: 109 reqs | Prompt Tput: 23.7K tok/s, Generation Tput: 55.7 tok/s | Batch creation: 1.7ms, Execution: 179.6ms | KVCache usage: 31.9% of 3679 blocks, Cache hit rate: 22.8%, All Preemptions: 0 reqs Executed CE batch with 29 reqs | Terminated: 1 reqs, Pending: 81 reqs | Prompt Tput: 25.6K tok/s, Generation Tput: 55.3 tok/s | Batch creation: 4.9ms, Execution: 524.3ms | KVCache usage: 34.3% of 3679 blocks, Cache hit rate: 22.9%, All Preemptions: 0 reqs Executed CE batch with 10 reqs | Terminated: 0 reqs, Pending: 71 reqs | Prompt Tput: 23.7K tok/s, Generation Tput: 55.9 tok/s | Batch creation: 1.9ms, Execution: 179.0ms | KVCache usage: 35.0% of 3679 blocks, Cache hit rate: 23.0%, All Preemptions: 0 reqs Executed CE batch with 29 reqs | Terminated: 1 reqs, Pending: 43 reqs | Prompt Tput: 25.7K tok/s, Generation Tput: 55.6 tok/s | Batch creation: 152.1ms, Execution: 521.8ms | KVCache usage: 37.4% of 3679 blocks, Cache hit rate: 23.1%, All Preemptions: 0 reqs Executed CE batch with 10 reqs | Terminated: 0 reqs, Pending: 33 reqs | Prompt Tput: 22.8K tok/s, Generation Tput: 53.9 tok/s | Batch creation: 2.0ms, Execution: 185.7ms | KVCache usage: 38.1% of 3679 blocks, Cache hit rate: 23.1%, All Preemptions: 0 reqs Executed CE batch with 29 reqs | Terminated: 1 reqs, Pending: 5 reqs | Prompt Tput: 25.4K tok/s, Generation Tput: 55.0 tok/s | Batch creation: 5.2ms, Execution: 527.0ms | KVCache usage: 40.4% of 3679 blocks, Cache hit rate: 23.2%, All Preemptions: 0 reqs Executed CE batch with 5 reqs | Terminated: 0 reqs, Pending: 0 reqs | Prompt Tput: 22.7K tok/s, Generation Tput: 57.7 tok/s | Batch creation: 1.1ms, Execution: 86.6ms | KVCache usage: 40.8% of 3679 blocks, Cache hit rate: 23.2%, All Preemptions: 0 reqs Executed TG batch with 500 reqs | Terminated: 0 reqs, Pending: 0 reqs | Prompt Tput: 952.5 tok/s, Generation Tput: 9.5K tok/s | Batch creation: 10.1ms, Execution: 524.9ms | KVCache usage: 40.8% of 3679 blocks, Cache hit rate: 21.7%, All Preemptions: 0 reqs Executed TG batch with 500 reqs | Terminated: 500 reqs, Pending: 0 reqs | Prompt Tput: 950.1 tok/s, Generation Tput: 9.5K tok/s | Batch creation: 10.0ms, Execution: 526.2ms | KVCache usage: 0.0% of 3679 blocks, Cache hit rate: 20.1%, All Preemptions: 0 reqs ``` Completes E2EOPT-62 Completes E2EOPT-67 Towards E2EOPT-46 MODULAR_ORIG_COMMIT_REV_ID: 25ff131ef8dc9e2ee93d5c4c1b65e91995a06695 --- src/max/pipelines/kv_cache/paged_cache.py | 51 +++++----------------- src/max/pipelines/kv_cache/prefix_cache.py | 13 ------ 2 files changed, 12 insertions(+), 52 deletions(-) diff --git a/src/max/pipelines/kv_cache/paged_cache.py b/src/max/pipelines/kv_cache/paged_cache.py index 11ce2356cb..8d3ad3663f 100644 --- a/src/max/pipelines/kv_cache/paged_cache.py +++ b/src/max/pipelines/kv_cache/paged_cache.py @@ -418,64 +418,37 @@ def can_fetch( ) -> bool: """Checks if there are sufficient KV pages to run `fetch` on given batch. - It is OK if some seq_id are not in the cache. We assume the cache lengths - are zero in those cases. + Sequences which have not been previously added to the cache can be handled + by this method. We assume the cache lengths are zero in those cases. """ - total_blocks_to_allocate = 0 + tot_new_pages_needed = 0 all_cache_hit_blocks: set[int] = set() for seq_id, prompt in seq_ids_and_prompts.items(): - data = self.active_requests.get( - seq_id, PagedCacheMetadata(self.page_size, self.max_seq_len) + prefix_blocks, _, new_pages_needed = self.query_fetch_stats( + seq_id, prompt, num_steps ) + tot_new_pages_needed += new_pages_needed + all_cache_hit_blocks.update(prefix_blocks) - # Extend the kv cache for given request with any cached prefixes. - cached_blocks: list[int] = [] - if self.prefix_cache is not None: - cached_blocks = self.prefix_cache.get_cached_blocks( - seq_id, prompt - ) - - # Compute the total sequence length and the number of pages required to store it. - total_sequence_length = ( - data.cached_idx + len(prompt) + num_steps - 1 - ) - num_pages_required = ceildiv(total_sequence_length, self.page_size) - - # Compute the number of *new* pages we need to allocate. - blocks_to_allocate = ( - num_pages_required - len(data.blocks) - len(cached_blocks) - ) - - total_blocks_to_allocate += blocks_to_allocate - all_cache_hit_blocks.update(cached_blocks) - - num_evictable_blocks = 0 + num_stale_blocks = 0 if self.prefix_cache is not None: # the blocks in the prefix cache that will be used by sequences in # this batch are no longer eligible for eviction / allocation. - num_evictable_blocks = len( + num_stale_blocks = len( self.prefix_cache.stale_blocks - all_cache_hit_blocks ) - num_free_blocks = len(self.available_blocks) + num_evictable_blocks - - return total_blocks_to_allocate <= num_free_blocks + num_free_blocks = len(self.available_blocks) + num_stale_blocks - def get_num_cached_tokens(self, prompt: np.ndarray) -> int: - """Returns the number of tokens in the CE prompt that are found in the - prefix cache. - """ - if self.prefix_cache is None: - return 0 - return self.prefix_cache.get_num_cached_tokens(prompt) + return tot_new_pages_needed <= num_free_blocks def query_fetch_stats( self, seq_id: int, prompt: np.ndarray, num_steps: int = 1 ) -> tuple[set[int], int, int]: """Query about the stats about running the fetch operation for a given - sequence. + sequence. It is OK if some seq_id are not in the cache. This method does not modify the state of the paged cache. diff --git a/src/max/pipelines/kv_cache/prefix_cache.py b/src/max/pipelines/kv_cache/prefix_cache.py index 751abbd6f5..07c2de5092 100644 --- a/src/max/pipelines/kv_cache/prefix_cache.py +++ b/src/max/pipelines/kv_cache/prefix_cache.py @@ -155,19 +155,6 @@ def validate_req_state_valid( assert (tokens == committed_tokens).all() assert blocks == committed_blocks - def get_cached_blocks(self, seq_id: int, prompt: np.ndarray) -> list[int]: - """Returns the blocks from the prefix cache that can be reused for the given prompt.""" - node = self.active_requests.get(seq_id, self.radix_trie.root) - # Attempt to match all but the last token in the prompt. This is - # because the model expects a prompt of length at least 1. - _, cached_blocks = self.radix_trie.match_prefix(prompt[:-1], node=node) - return cached_blocks - - def get_num_cached_tokens(self, prompt: np.ndarray) -> int: - """Returns the number of tokens in the CE prompt that are found in the prefix cache.""" - _, prefix_blocks = self.radix_trie.match_prefix(prompt[:-1]) - return len(prefix_blocks) * self.page_size - def evict_blocks(self, blocks_to_evict: Optional[int] = None) -> list[int]: """Evict a percentage of all blocks according to a LRU policy on the trie leaves.""" if blocks_to_evict is None: From acf5fa66a9fcf1a48170e9624f0e3288aaaaca60 Mon Sep 17 00:00:00 2001 From: Brian Zhang Date: Thu, 27 Feb 2025 15:21:48 -0800 Subject: [PATCH 499/509] [KVCache] More efficient impl of `_token_prefix_match` (#56706) The new impl of `_token_prefix_match` is faster: ``` For inputs: tokens0 = np.random.random((512,)) tokens1 = np.random.random((512,)) tokens0[:300] = tokens1[:300] Timing: old: ~20us new: ~10us ``` This gets called O(10) times per request when making a CE batch. For a CE batch with 50 requests, this can save 100-1000us for batch creation. This leads to a small (<1 RPS) boost in prefix caching benchmark. Also wow, literally trivial python operations (eg: numpy slicing or dict lookup) can take a hundred of ns to a few us. This is crazy. Server: ``` br //SDK/lib/API/python/max/entrypoints:pipelines --test_output=streamed --test_arg=-svv -- serve --model-path=meta-llama/Meta-Llama-3.1-8B-Instruct --quantization-encoding bfloat16 --use-gpu --cache-strategy paged --kv-cache-page-size 128 --max-batch-size 512 --max-num-steps 10 --max-length 2048 --pad-to-multiple-of 2 --enable-prefix-caching ``` Client: ``` python3 $(realpath open-source/max/benchmark/benchmark_serving.py) --backend modular --model meta-llama/Meta-Llama-3.1-8B-Instruct --dataset-name sonnet --dataset-path $(realpath utils/benchmarking/serving/sonnet_4x.txt) --endpoint /v1/completions --num-prompts 500 --sonnet-input-len 512 --sonnet-output-len 16 --sonnet-prefix 192 --request-rate inf --collect-gpu-stats --print-inputs-and-outputs ``` After warmup with diff seed: ``` ... {'req_id': 498, 'output_len': 16, 'output': 'Here are the lines from the poem:\n\n1. FROM fairest creatures we desire'} {'req_id': 499, 'output_len': 16, 'output': 'Here are the lines from the poem:\n\n1. FROM fairest creatures we desire'} ============ Serving Benchmark Result ============ Successful requests: 500 Failed requests: 0 Benchmark duration (s): 12.05 Total input tokens: 232488 Total generated tokens: 8000 Request throughput (req/s): 41.50 Input token throughput (tok/s): 19294.81 Output token throughput (tok/s): 663.94 ---------------Time to First Token---------------- Mean TTFT (ms): 5749.38 Median TTFT (ms): 6021.95 P99 TTFT (ms): 10313.60 -----Time per Output Token (excl. 1st token)------ Mean TPOT (ms): 408.48 Median TPOT (ms): 390.12 P99 TPOT (ms): 725.80 ---------------Inter-token Latency---------------- Mean ITL (ms): 407.90 Median ITL (ms): 84.05 P99 ITL (ms): 8566.73 -------------------Token Stats-------------------- Max input tokens: 494 Max output tokens: 16 Max total tokens: 510 --------------------GPU Stats--------------------- GPU Utilization (%): 79.73 Peak GPU Memory Used (MiB): 76714.56 GPU Memory Available (MiB): 4441.19 ================================================== 00:28:48.863 INFO: benchmark_serving: finished benchmark run: Success. ``` Logs: ``` Executed CE batch with 1 reqs | Terminated: 0 reqs, Pending: 0 reqs | Prompt Tput: 14.5K tok/s, Generation Tput: 30.0 tok/s | Batch creation: 447.1us, Execution: 33.3ms | KVCache usage: 0.1% of 3679 blocks, Cache hit rate: 20.1%, All Preemptions: 0 reqs Executed TG batch with 1 reqs | Terminated: 0 reqs, Pending: 0 reqs | Prompt Tput: 9.8 tok/s, Generation Tput: 97.6 tok/s | Batch creation: 83.0us, Execution: 102.4ms | KVCache usage: 0.1% of 3679 blocks, Cache hit rate: 20.1%, All Preemptions: 0 reqs Executed TG batch with 1 reqs | Terminated: 1 reqs, Pending: 0 reqs | Prompt Tput: 9.8 tok/s, Generation Tput: 97.6 tok/s | Batch creation: 85.5us, Execution: 102.5ms | KVCache usage: 0.0% of 3679 blocks, Cache hit rate: 20.1%, All Preemptions: 0 reqs Executed CE batch with 1 reqs | Terminated: 0 reqs, Pending: 7 reqs | Prompt Tput: 29.1K tok/s, Generation Tput: 60.2 tok/s | Batch creation: 388.0us, Execution: 16.6ms | KVCache usage: 0.1% of 3679 blocks, Cache hit rate: 20.2%, All Preemptions: 0 reqs Executed CE batch with 1 reqs | Terminated: 0 reqs, Pending: 35 reqs | Prompt Tput: 15.2K tok/s, Generation Tput: 33.1 tok/s | Batch creation: 314.0us, Execution: 30.2ms | KVCache usage: 0.2% of 3679 blocks, Cache hit rate: 20.2%, All Preemptions: 0 reqs Executed CE batch with 9 reqs | Terminated: 0 reqs, Pending: 489 reqs | Prompt Tput: 23.0K tok/s, Generation Tput: 49.7 tok/s | Batch creation: 1.7ms, Execution: 181.0ms | KVCache usage: 0.9% of 3679 blocks, Cache hit rate: 20.3%, All Preemptions: 0 reqs Executed CE batch with 29 reqs | Terminated: 1 reqs, Pending: 461 reqs | Prompt Tput: 25.6K tok/s, Generation Tput: 55.7 tok/s | Batch creation: 4.9ms, Execution: 520.5ms | KVCache usage: 3.3% of 3679 blocks, Cache hit rate: 20.6%, All Preemptions: 0 reqs Executed CE batch with 10 reqs | Terminated: 0 reqs, Pending: 451 reqs | Prompt Tput: 23.8K tok/s, Generation Tput: 54.3 tok/s | Batch creation: 1.8ms, Execution: 184.0ms | KVCache usage: 4.0% of 3679 blocks, Cache hit rate: 20.6%, All Preemptions: 0 reqs Executed CE batch with 9 reqs | Terminated: 0 reqs, Pending: 442 reqs | Prompt Tput: 22.8K tok/s, Generation Tput: 49.1 tok/s | Batch creation: 1.7ms, Execution: 183.1ms | KVCache usage: 4.8% of 3679 blocks, Cache hit rate: 20.7%, All Preemptions: 0 reqs Executed CE batch with 29 reqs | Terminated: 1 reqs, Pending: 414 reqs | Prompt Tput: 25.5K tok/s, Generation Tput: 55.7 tok/s | Batch creation: 4.8ms, Execution: 520.2ms | KVCache usage: 7.1% of 3679 blocks, Cache hit rate: 21.0%, All Preemptions: 0 reqs Executed CE batch with 10 reqs | Terminated: 0 reqs, Pending: 404 reqs | Prompt Tput: 22.6K tok/s, Generation Tput: 50.5 tok/s | Batch creation: 1.8ms, Execution: 197.9ms | KVCache usage: 7.9% of 3679 blocks, Cache hit rate: 21.0%, All Preemptions: 0 reqs Executed CE batch with 29 reqs | Terminated: 1 reqs, Pending: 376 reqs | Prompt Tput: 25.5K tok/s, Generation Tput: 55.4 tok/s | Batch creation: 4.9ms, Execution: 523.3ms | KVCache usage: 10.2% of 3679 blocks, Cache hit rate: 21.3%, All Preemptions: 0 reqs Executed CE batch with 10 reqs | Terminated: 0 reqs, Pending: 366 reqs | Prompt Tput: 23.8K tok/s, Generation Tput: 54.5 tok/s | Batch creation: 1.7ms, Execution: 183.4ms | KVCache usage: 11.0% of 3679 blocks, Cache hit rate: 21.3%, All Preemptions: 0 reqs Executed CE batch with 29 reqs | Terminated: 1 reqs, Pending: 338 reqs | Prompt Tput: 25.5K tok/s, Generation Tput: 55.4 tok/s | Batch creation: 4.9ms, Execution: 523.8ms | KVCache usage: 13.3% of 3679 blocks, Cache hit rate: 21.6%, All Preemptions: 0 reqs Executed CE batch with 10 reqs | Terminated: 0 reqs, Pending: 328 reqs | Prompt Tput: 22.4K tok/s, Generation Tput: 52.0 tok/s | Batch creation: 1.7ms, Execution: 192.4ms | KVCache usage: 14.1% of 3679 blocks, Cache hit rate: 21.6%, All Preemptions: 0 reqs Executed CE batch with 29 reqs | Terminated: 1 reqs, Pending: 300 reqs | Prompt Tput: 25.5K tok/s, Generation Tput: 55.5 tok/s | Batch creation: 4.8ms, Execution: 522.3ms | KVCache usage: 16.4% of 3679 blocks, Cache hit rate: 21.8%, All Preemptions: 0 reqs Executed CE batch with 10 reqs | Terminated: 0 reqs, Pending: 290 reqs | Prompt Tput: 22.7K tok/s, Generation Tput: 52.5 tok/s | Batch creation: 1.7ms, Execution: 190.4ms | KVCache usage: 17.2% of 3679 blocks, Cache hit rate: 21.9%, All Preemptions: 0 reqs Executed CE batch with 29 reqs | Terminated: 1 reqs, Pending: 262 reqs | Prompt Tput: 25.4K tok/s, Generation Tput: 55.1 tok/s | Batch creation: 4.8ms, Execution: 526.2ms | KVCache usage: 19.5% of 3679 blocks, Cache hit rate: 22.0%, All Preemptions: 0 reqs Executed CE batch with 10 reqs | Terminated: 0 reqs, Pending: 252 reqs | Prompt Tput: 22.3K tok/s, Generation Tput: 50.5 tok/s | Batch creation: 1.8ms, Execution: 198.0ms | KVCache usage: 20.3% of 3679 blocks, Cache hit rate: 22.1%, All Preemptions: 0 reqs Executed CE batch with 30 reqs | Terminated: 1 reqs, Pending: 223 reqs | Prompt Tput: 25.9K tok/s, Generation Tput: 57.2 tok/s | Batch creation: 5.1ms, Execution: 524.1ms | KVCache usage: 22.6% of 3679 blocks, Cache hit rate: 22.3%, All Preemptions: 0 reqs Executed CE batch with 10 reqs | Terminated: 0 reqs, Pending: 213 reqs | Prompt Tput: 23.4K tok/s, Generation Tput: 52.2 tok/s | Batch creation: 1.8ms, Execution: 191.5ms | KVCache usage: 23.4% of 3679 blocks, Cache hit rate: 22.3%, All Preemptions: 0 reqs Executed CE batch with 29 reqs | Terminated: 1 reqs, Pending: 185 reqs | Prompt Tput: 25.5K tok/s, Generation Tput: 55.2 tok/s | Batch creation: 4.8ms, Execution: 525.1ms | KVCache usage: 25.8% of 3679 blocks, Cache hit rate: 22.5%, All Preemptions: 0 reqs Executed CE batch with 10 reqs | Terminated: 0 reqs, Pending: 175 reqs | Prompt Tput: 23.8K tok/s, Generation Tput: 56.0 tok/s | Batch creation: 1.7ms, Execution: 178.5ms | KVCache usage: 26.5% of 3679 blocks, Cache hit rate: 22.5%, All Preemptions: 0 reqs Executed CE batch with 30 reqs | Terminated: 1 reqs, Pending: 146 reqs | Prompt Tput: 25.8K tok/s, Generation Tput: 57.1 tok/s | Batch creation: 4.9ms, Execution: 525.7ms | KVCache usage: 28.9% of 3679 blocks, Cache hit rate: 22.7%, All Preemptions: 0 reqs Executed CE batch with 10 reqs | Terminated: 0 reqs, Pending: 136 reqs | Prompt Tput: 22.5K tok/s, Generation Tput: 50.4 tok/s | Batch creation: 1.8ms, Execution: 198.3ms | KVCache usage: 29.7% of 3679 blocks, Cache hit rate: 22.7%, All Preemptions: 0 reqs Executed CE batch with 29 reqs | Terminated: 1 reqs, Pending: 108 reqs | Prompt Tput: 25.6K tok/s, Generation Tput: 55.3 tok/s | Batch creation: 4.8ms, Execution: 524.4ms | KVCache usage: 32.1% of 3679 blocks, Cache hit rate: 22.8%, All Preemptions: 0 reqs Executed CE batch with 10 reqs | Terminated: 0 reqs, Pending: 98 reqs | Prompt Tput: 23.8K tok/s, Generation Tput: 55.7 tok/s | Batch creation: 1.7ms, Execution: 179.5ms | KVCache usage: 32.8% of 3679 blocks, Cache hit rate: 22.9%, All Preemptions: 0 reqs Executed CE batch with 29 reqs | Terminated: 1 reqs, Pending: 70 reqs | Prompt Tput: 20.8K tok/s, Generation Tput: 45.2 tok/s | Batch creation: 4.7ms, Execution: 642.0ms | KVCache usage: 35.2% of 3679 blocks, Cache hit rate: 23.0%, All Preemptions: 0 reqs Executed CE batch with 10 reqs | Terminated: 0 reqs, Pending: 60 reqs | Prompt Tput: 23.0K tok/s, Generation Tput: 54.5 tok/s | Batch creation: 1.9ms, Execution: 183.3ms | KVCache usage: 35.9% of 3679 blocks, Cache hit rate: 23.0%, All Preemptions: 0 reqs Executed CE batch with 29 reqs | Terminated: 1 reqs, Pending: 32 reqs | Prompt Tput: 25.7K tok/s, Generation Tput: 55.5 tok/s | Batch creation: 5.0ms, Execution: 522.6ms | KVCache usage: 38.2% of 3679 blocks, Cache hit rate: 23.1%, All Preemptions: 0 reqs Executed CE batch with 10 reqs | Terminated: 0 reqs, Pending: 22 reqs | Prompt Tput: 23.7K tok/s, Generation Tput: 55.6 tok/s | Batch creation: 1.8ms, Execution: 180.0ms | KVCache usage: 39.0% of 3679 blocks, Cache hit rate: 23.2%, All Preemptions: 0 reqs Executed CE batch with 22 reqs | Terminated: 0 reqs, Pending: 0 reqs | Prompt Tput: 23.7K tok/s, Generation Tput: 50.7 tok/s | Batch creation: 3.9ms, Execution: 434.0ms | KVCache usage: 40.8% of 3679 blocks, Cache hit rate: 23.2%, All Preemptions: 0 reqs Executed TG batch with 500 reqs | Terminated: 0 reqs, Pending: 0 reqs | Prompt Tput: 949.0 tok/s, Generation Tput: 9.5K tok/s | Batch creation: 10.7ms, Execution: 526.9ms | KVCache usage: 40.8% of 3679 blocks, Cache hit rate: 21.7%, All Preemptions: 0 reqs Executed TG batch with 500 reqs | Terminated: 500 reqs, Pending: 0 reqs | Prompt Tput: 952.2 tok/s, Generation Tput: 9.5K tok/s | Batch creation: 9.6ms, Execution: 525.1ms | KVCache usage: 0.0% of 3679 blocks, Cache hit rate: 20.1%, All Preemptions: 0 reqs ``` Towards: E2EOPT-46 MODULAR_ORIG_COMMIT_REV_ID: 8424cff31060b25dc9e62a981762fb4d632290c5 --- src/max/pipelines/kv_cache/radix_trie.py | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/src/max/pipelines/kv_cache/radix_trie.py b/src/max/pipelines/kv_cache/radix_trie.py index fe848cbe9e..ac1be1b26b 100644 --- a/src/max/pipelines/kv_cache/radix_trie.py +++ b/src/max/pipelines/kv_cache/radix_trie.py @@ -25,6 +25,10 @@ from collections import OrderedDict +def align_down(x: int, y: int) -> int: + return (x // y) * y + + def _token_prefix_match_len( tokens0: np.ndarray, tokens1: np.ndarray, page_size: int ) -> int: @@ -38,10 +42,11 @@ def _token_prefix_match_len( assert len(tokens0) % page_size == 0 assert len(tokens1) % page_size == 0 shorter_len = min(len(tokens0), len(tokens1)) - for i in range(0, shorter_len, page_size): - if (tokens0[i : i + page_size] != tokens1[i : i + page_size]).any(): - return i - return shorter_len + diff = tokens0[:shorter_len] != tokens1[:shorter_len] + idx = np.nonzero(diff)[0] + if len(idx) == 0: + return shorter_len + return align_down(idx[0], page_size) def _token_to_key(tokens: np.ndarray, page_size: int) -> tuple[TokenId, ...]: @@ -106,7 +111,6 @@ def find_block_with_largest_common_prefix( if prefix_len == 0: return None assert prefix_len <= len(target) - assert target[:prefix_len] == key[:prefix_len] return self.children[tuple(key)].blocks[0], prefix_len def get_prefix_tokens_and_blocks(self) -> Tuple[np.ndarray, List[BlockId]]: @@ -316,7 +320,7 @@ def match_prefix_helper( if len(tokens) == 0: return node, [] - tokens = tokens[: len(tokens) // self.page_size * self.page_size] + tokens = tokens[: align_down(len(tokens), self.page_size)] curr = match_prefix_helper(node, tokens, blocks) return curr, blocks From b9433d746091848368bea5437dafc7b2b0797110 Mon Sep 17 00:00:00 2001 From: Ivan Posva Date: Thu, 27 Feb 2025 15:24:52 -0800 Subject: [PATCH 500/509] [SDK] Rename Mojo Device creation APIs to follow Python convention Update Mojo `Device` creation to follow Python MAX Driver APIs by dropping the `_device` suffix from `accelerator_device()` and `cpu_device()`. MODULAR_ORIG_COMMIT_REV_ID: 7d55784535e97994ac02e6a9a0eaadc37525870d --- examples/custom_ops/benchmarks.mojo | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/examples/custom_ops/benchmarks.mojo b/examples/custom_ops/benchmarks.mojo index f02bb8b731..b2f7962c05 100644 --- a/examples/custom_ops/benchmarks.mojo +++ b/examples/custom_ops/benchmarks.mojo @@ -15,7 +15,7 @@ from kernels.top_k import TopK from kernels.matrix_multiplication import MatrixMultiplication from gpu.host import DeviceContext from utils import IndexList -from max.driver.device import cpu_device +from max.driver import cpu from max.tensor import ( ManagedTensorSlice, InputTensor, @@ -67,7 +67,7 @@ def top_k(): rand(in_vals, els) - var cpu_ctx_ptr = cpu_device().unsafe_ptr() + var cpu_ctx_ptr = cpu().unsafe_ptr() @parameter @always_inline @@ -189,7 +189,7 @@ def matmul(): rand(a_ptr, a_els) rand(b_ptr, b_els) - var cpu_ctx_ptr = cpu_device().unsafe_ptr() + var cpu_ctx_ptr = cpu().unsafe_ptr() var bench = Bench() var flops = ThroughputMeasure(BenchMetric.flops, FLOPS) var elements = ThroughputMeasure(BenchMetric.elements, M * N) From 2c6a976e6a9ba1a012a23da1c97f157b24146c0b Mon Sep 17 00:00:00 2001 From: Brian Zhang Date: Thu, 27 Feb 2025 15:56:14 -0800 Subject: [PATCH 501/509] [KVCache] Reduce python memory allocations by reusing PagedCacheMetadata (#56707) Stacked PRs: * #56844 * __->__#56707 --- --- --- ### [KVCache] Reduce python memory allocations by reusing PagedCacheMetadata Server: ``` br //SDK/lib/API/python/max/entrypoints:pipelines --test_output=streamed --test_arg=-svv -- serve --model-path=meta-llama/Meta-Llama-3.1-8B-Instruct --quantization-encoding bfloat16 --use-gpu --cache-strategy paged --kv-cache-page-size 128 --max-batch-size 512 --max-num-steps 10 --max-length 2048 --pad-to-multiple-of 2 --enable-prefix-caching ``` Client: ``` python3 $(realpath open-source/max/benchmark/benchmark_serving.py) --backend modular --model meta-llama/Meta-Llama-3.1-8B-Instruct --dataset-name sonnet --dataset-path $(realpath utils/benchmarking/serving/sonnet_4x.txt) --endpoint /v1/completions --num-prompts 500 --sonnet-input-len 512 --sonnet-output-len 16 --sonnet-prefix 192 --request-rate inf --collect-gpu-stats --print-inputs-and-outputs ``` After warmup with diff seed: ``` ============ Serving Benchmark Result ============ Successful requests: 500 Failed requests: 0 Benchmark duration (s): 12.08 Total input tokens: 232488 Total generated tokens: 8000 Request throughput (req/s): 41.38 Input token throughput (tok/s): 19241.35 Output token throughput (tok/s): 662.10 ---------------Time to First Token---------------- Mean TTFT (ms): 5743.03 Median TTFT (ms): 5965.71 P99 TTFT (ms): 10296.76 -----Time per Output Token (excl. 1st token)------ Mean TPOT (ms): 410.71 Median TPOT (ms): 395.74 P99 TPOT (ms): 718.80 ---------------Inter-token Latency---------------- Mean ITL (ms): 410.06 Median ITL (ms): 78.55 P99 ITL (ms): 8588.68 -------------------Token Stats-------------------- Max input tokens: 494 Max output tokens: 16 Max total tokens: 510 --------------------GPU Stats--------------------- GPU Utilization (%): 79.88 Peak GPU Memory Used (MiB): 76682.56 GPU Memory Available (MiB): 4473.19 ================================================== 00:24:04.695 INFO: benchmark_serving: finished benchmark run: Success. ``` Logs: ``` Executed CE batch with 1 reqs | Terminated: 0 reqs, Pending: 0 reqs | Prompt Tput: 14.4K tok/s, Generation Tput: 29.7 tok/s | Batch creation: 532.3us, Execution: 33.6ms | KVCache usage: 0.1% of 3679 blocks, Cache hit rate: 20.1%, All Preemptions: 0 reqs Executed TG batch with 1 reqs | Terminated: 0 reqs, Pending: 0 reqs | Prompt Tput: 9.8 tok/s, Generation Tput: 97.5 tok/s | Batch creation: 70.3us, Execution: 102.5ms | KVCache usage: 0.1% of 3679 blocks, Cache hit rate: 20.1%, All Preemptions: 0 reqs Executed TG batch with 1 reqs | Terminated: 1 reqs, Pending: 0 reqs | Prompt Tput: 9.7 tok/s, Generation Tput: 97.5 tok/s | Batch creation: 75.2us, Execution: 102.6ms | KVCache usage: 0.0% of 3679 blocks, Cache hit rate: 20.1%, All Preemptions: 0 reqs Executed CE batch with 3 reqs | Terminated: 0 reqs, Pending: 62 reqs | Prompt Tput: 26.9K tok/s, Generation Tput: 57.6 tok/s | Batch creation: 738.5us, Execution: 52.1ms | KVCache usage: 0.3% of 3679 blocks, Cache hit rate: 20.2%, All Preemptions: 0 reqs Executed CE batch with 14 reqs | Terminated: 0 reqs, Pending: 483 reqs | Prompt Tput: 23.6K tok/s, Generation Tput: 50.9 tok/s | Batch creation: 2.3ms, Execution: 274.8ms | KVCache usage: 1.4% of 3679 blocks, Cache hit rate: 20.3%, All Preemptions: 0 reqs Executed CE batch with 29 reqs | Terminated: 1 reqs, Pending: 455 reqs | Prompt Tput: 25.6K tok/s, Generation Tput: 55.6 tok/s | Batch creation: 4.5ms, Execution: 521.2ms | KVCache usage: 3.8% of 3679 blocks, Cache hit rate: 20.6%, All Preemptions: 0 reqs Executed CE batch with 10 reqs | Terminated: 0 reqs, Pending: 445 reqs | Prompt Tput: 22.4K tok/s, Generation Tput: 51.5 tok/s | Batch creation: 1.6ms, Execution: 194.2ms | KVCache usage: 4.5% of 3679 blocks, Cache hit rate: 20.7%, All Preemptions: 0 reqs Executed CE batch with 29 reqs | Terminated: 1 reqs, Pending: 417 reqs | Prompt Tput: 25.5K tok/s, Generation Tput: 55.6 tok/s | Batch creation: 4.4ms, Execution: 521.6ms | KVCache usage: 6.8% of 3679 blocks, Cache hit rate: 21.0%, All Preemptions: 0 reqs Executed CE batch with 10 reqs | Terminated: 0 reqs, Pending: 407 reqs | Prompt Tput: 22.4K tok/s, Generation Tput: 50.2 tok/s | Batch creation: 1.7ms, Execution: 199.0ms | KVCache usage: 7.6% of 3679 blocks, Cache hit rate: 21.0%, All Preemptions: 0 reqs Executed CE batch with 29 reqs | Terminated: 1 reqs, Pending: 379 reqs | Prompt Tput: 25.5K tok/s, Generation Tput: 55.3 tok/s | Batch creation: 4.4ms, Execution: 524.6ms | KVCache usage: 9.9% of 3679 blocks, Cache hit rate: 21.3%, All Preemptions: 0 reqs Executed CE batch with 10 reqs | Terminated: 0 reqs, Pending: 369 reqs | Prompt Tput: 22.7K tok/s, Generation Tput: 52.4 tok/s | Batch creation: 1.5ms, Execution: 190.9ms | KVCache usage: 10.7% of 3679 blocks, Cache hit rate: 21.3%, All Preemptions: 0 reqs Executed CE batch with 29 reqs | Terminated: 1 reqs, Pending: 341 reqs | Prompt Tput: 25.5K tok/s, Generation Tput: 55.3 tok/s | Batch creation: 4.4ms, Execution: 524.2ms | KVCache usage: 13.0% of 3679 blocks, Cache hit rate: 21.5%, All Preemptions: 0 reqs Executed CE batch with 10 reqs | Terminated: 0 reqs, Pending: 331 reqs | Prompt Tput: 23.8K tok/s, Generation Tput: 54.3 tok/s | Batch creation: 1.6ms, Execution: 184.1ms | KVCache usage: 13.8% of 3679 blocks, Cache hit rate: 21.6%, All Preemptions: 0 reqs Executed CE batch with 29 reqs | Terminated: 1 reqs, Pending: 303 reqs | Prompt Tput: 25.6K tok/s, Generation Tput: 55.5 tok/s | Batch creation: 4.5ms, Execution: 522.8ms | KVCache usage: 16.1% of 3679 blocks, Cache hit rate: 21.8%, All Preemptions: 0 reqs Executed CE batch with 10 reqs | Terminated: 0 reqs, Pending: 293 reqs | Prompt Tput: 23.9K tok/s, Generation Tput: 55.9 tok/s | Batch creation: 1.5ms, Execution: 178.9ms | KVCache usage: 16.9% of 3679 blocks, Cache hit rate: 21.8%, All Preemptions: 0 reqs Executed CE batch with 29 reqs | Terminated: 1 reqs, Pending: 265 reqs | Prompt Tput: 25.5K tok/s, Generation Tput: 55.4 tok/s | Batch creation: 4.4ms, Execution: 523.1ms | KVCache usage: 19.2% of 3679 blocks, Cache hit rate: 22.0%, All Preemptions: 0 reqs Executed CE batch with 10 reqs | Terminated: 0 reqs, Pending: 255 reqs | Prompt Tput: 22.3K tok/s, Generation Tput: 50.6 tok/s | Batch creation: 1.5ms, Execution: 197.6ms | KVCache usage: 20.0% of 3679 blocks, Cache hit rate: 22.1%, All Preemptions: 0 reqs Executed CE batch with 29 reqs | Terminated: 1 reqs, Pending: 227 reqs | Prompt Tput: 25.5K tok/s, Generation Tput: 55.4 tok/s | Batch creation: 4.5ms, Execution: 523.7ms | KVCache usage: 22.4% of 3679 blocks, Cache hit rate: 22.2%, All Preemptions: 0 reqs Executed CE batch with 10 reqs | Terminated: 0 reqs, Pending: 217 reqs | Prompt Tput: 22.5K tok/s, Generation Tput: 54.0 tok/s | Batch creation: 1.6ms, Execution: 185.1ms | KVCache usage: 23.1% of 3679 blocks, Cache hit rate: 22.3%, All Preemptions: 0 reqs Executed CE batch with 29 reqs | Terminated: 1 reqs, Pending: 189 reqs | Prompt Tput: 25.7K tok/s, Generation Tput: 55.4 tok/s | Batch creation: 4.3ms, Execution: 523.3ms | KVCache usage: 25.4% of 3679 blocks, Cache hit rate: 22.4%, All Preemptions: 0 reqs Executed CE batch with 10 reqs | Terminated: 0 reqs, Pending: 179 reqs | Prompt Tput: 23.8K tok/s, Generation Tput: 55.5 tok/s | Batch creation: 1.6ms, Execution: 180.1ms | KVCache usage: 26.2% of 3679 blocks, Cache hit rate: 22.5%, All Preemptions: 0 reqs Executed CE batch with 9 reqs | Terminated: 0 reqs, Pending: 170 reqs | Prompt Tput: 24.8K tok/s, Generation Tput: 53.9 tok/s | Batch creation: 1.6ms, Execution: 166.9ms | KVCache usage: 26.9% of 3679 blocks, Cache hit rate: 22.5%, All Preemptions: 0 reqs Executed CE batch with 29 reqs | Terminated: 1 reqs, Pending: 142 reqs | Prompt Tput: 25.5K tok/s, Generation Tput: 55.2 tok/s | Batch creation: 4.5ms, Execution: 525.2ms | KVCache usage: 29.3% of 3679 blocks, Cache hit rate: 22.7%, All Preemptions: 0 reqs Executed CE batch with 10 reqs | Terminated: 0 reqs, Pending: 132 reqs | Prompt Tput: 23.8K tok/s, Generation Tput: 55.8 tok/s | Batch creation: 1.5ms, Execution: 179.1ms | KVCache usage: 30.0% of 3679 blocks, Cache hit rate: 22.7%, All Preemptions: 0 reqs Executed CE batch with 29 reqs | Terminated: 1 reqs, Pending: 104 reqs | Prompt Tput: 25.5K tok/s, Generation Tput: 55.4 tok/s | Batch creation: 4.4ms, Execution: 523.9ms | KVCache usage: 32.4% of 3679 blocks, Cache hit rate: 22.8%, All Preemptions: 0 reqs Executed CE batch with 10 reqs | Terminated: 0 reqs, Pending: 94 reqs | Prompt Tput: 22.8K tok/s, Generation Tput: 52.5 tok/s | Batch creation: 1.6ms, Execution: 190.5ms | KVCache usage: 33.1% of 3679 blocks, Cache hit rate: 22.9%, All Preemptions: 0 reqs Executed CE batch with 9 reqs | Terminated: 0 reqs, Pending: 85 reqs | Prompt Tput: 25.0K tok/s, Generation Tput: 53.9 tok/s | Batch creation: 1.5ms, Execution: 166.9ms | KVCache usage: 33.9% of 3679 blocks, Cache hit rate: 22.9%, All Preemptions: 0 reqs Executed CE batch with 9 reqs | Terminated: 0 reqs, Pending: 76 reqs | Prompt Tput: 25.0K tok/s, Generation Tput: 54.1 tok/s | Batch creation: 1.5ms, Execution: 166.5ms | KVCache usage: 34.6% of 3679 blocks, Cache hit rate: 22.9%, All Preemptions: 0 reqs Executed CE batch with 29 reqs | Terminated: 1 reqs, Pending: 48 reqs | Prompt Tput: 25.5K tok/s, Generation Tput: 55.2 tok/s | Batch creation: 4.5ms, Execution: 524.9ms | KVCache usage: 36.9% of 3679 blocks, Cache hit rate: 23.1%, All Preemptions: 0 reqs Executed CE batch with 10 reqs | Terminated: 0 reqs, Pending: 38 reqs | Prompt Tput: 23.7K tok/s, Generation Tput: 55.6 tok/s | Batch creation: 1.7ms, Execution: 179.9ms | KVCache usage: 37.7% of 3679 blocks, Cache hit rate: 23.1%, All Preemptions: 0 reqs Executed CE batch with 29 reqs | Terminated: 1 reqs, Pending: 10 reqs | Prompt Tput: 20.8K tok/s, Generation Tput: 45.1 tok/s | Batch creation: 4.5ms, Execution: 642.9ms | KVCache usage: 40.0% of 3679 blocks, Cache hit rate: 23.2%, All Preemptions: 0 reqs Executed CE batch with 10 reqs | Terminated: 0 reqs, Pending: 0 reqs | Prompt Tput: 24.1K tok/s, Generation Tput: 56.5 tok/s | Batch creation: 1.8ms, Execution: 177.0ms | KVCache usage: 40.8% of 3679 blocks, Cache hit rate: 23.2%, All Preemptions: 0 reqs Executed TG batch with 500 reqs | Terminated: 0 reqs, Pending: 0 reqs | Prompt Tput: 948.4 tok/s, Generation Tput: 9.5K tok/s | Batch creation: 7.4ms, Execution: 527.2ms | KVCache usage: 40.8% of 3679 blocks, Cache hit rate: 21.7%, All Preemptions: 0 reqs Executed TG batch with 500 reqs | Terminated: 500 reqs, Pending: 0 reqs | Prompt Tput: 948.6 tok/s, Generation Tput: 9.5K tok/s | Batch creation: 7.8ms, Execution: 527.1ms | KVCache usage: 0.0% of 3679 blocks, Cache hit rate: 20.1%, All Preemptions: 0 reqs ``` MODULAR_ORIG_COMMIT_REV_ID: a065e25c9c956299d6451a012665a1267b9dd08c --- src/max/pipelines/kv_cache/paged_cache.py | 17 ++++++++++++++--- .../pipelines/kv_cache/paged_cache_metadata.py | 12 +++++++++--- 2 files changed, 23 insertions(+), 6 deletions(-) diff --git a/src/max/pipelines/kv_cache/paged_cache.py b/src/max/pipelines/kv_cache/paged_cache.py index 8d3ad3663f..6e8ba7d7ee 100644 --- a/src/max/pipelines/kv_cache/paged_cache.py +++ b/src/max/pipelines/kv_cache/paged_cache.py @@ -260,6 +260,10 @@ def __init__( tensors=self.blocks, ) + # Preallocate a PagedCacheMetadata to use for sequences not in the cache. + # This is to reduce the number of allocations. This is NOT thread safe. + self.tmp_data = PagedCacheMetadata(self.page_size, self.max_seq_len) + # Whether to enable runtime correctness checks. These correctness checks # are expensive and should only be used in tests. self.enable_runtime_checks = enable_runtime_checks @@ -457,9 +461,13 @@ def query_fetch_stats( - tokens_to_encode: Number of tokens in prompt we need to encode when running the fetch. - new_pages_needed: Number of new pages we need to allocate when running the fetch. """ - data = self.active_requests.get( - seq_id, PagedCacheMetadata(self.page_size, self.max_seq_len) - ) + reusing_tmp_data = False + if seq_id in self.active_requests: + data = self.active_requests[seq_id] + else: + reusing_tmp_data = True + data = self.tmp_data + data.fetch(prompt, num_steps) prefix_blocks: set[int] = set() cache_hit_tokens = 0 @@ -483,6 +491,9 @@ def query_fetch_stats( # reverse the fetch operation so that this method does not mutate state data.undo_fetch(prompt, num_steps) + if reusing_tmp_data: + self.tmp_data.clear() + return prefix_blocks, tokens_to_encode, new_pages_needed def _fetch( diff --git a/src/max/pipelines/kv_cache/paged_cache_metadata.py b/src/max/pipelines/kv_cache/paged_cache_metadata.py index 0e1d8f6e62..28accfe316 100644 --- a/src/max/pipelines/kv_cache/paged_cache_metadata.py +++ b/src/max/pipelines/kv_cache/paged_cache_metadata.py @@ -36,7 +36,7 @@ class PagedCacheMetadata: - Committable tokens are tokens that are not yet committed but have a known value (i.e. not inflight). We can query the prefix cache for such tokens. - Inflight tokens are slots allocated for tokens that have not been generated - yet. Such tokens have a filler value of 0. After `fetch`, there should be + yet. Such tokens have a undefined values. After `fetch`, there should be `num_steps - 1` inflight tokens. They will be replaced with actual tokens in `step`. @@ -60,7 +60,7 @@ def __init__(self, page_size: int, max_seq_len: int) -> None: self.inflight_idx: int = 0 self.seq_len: int = 0 self.blocks: list[int] = [] - self.tokens: np.ndarray = np.full((max_seq_len,), 0, dtype=np.int64) + self.tokens: np.ndarray = np.empty((max_seq_len,), dtype=np.int64) @property def committed_blocks(self) -> list[int]: @@ -177,12 +177,18 @@ def undo_fetch(self, prompt: np.ndarray, num_steps: int) -> None: assert len(self.prompt_tokens) == len(prompt) num_inflight_tokens = num_steps - 1 assert len(self.inflight_tokens) == num_inflight_tokens - self.tokens[self.cached_idx : self.inflight_idx] = 0 self.seq_len -= len(prompt) + num_inflight_tokens self.inflight_idx -= len(prompt) assert len(self.inflight_tokens) == 0 assert len(self.prompt_tokens) == 0 self._validate_indices() + def clear(self) -> None: + assert len(self.blocks) == 0 + self.committed_idx = 0 + self.cached_idx = 0 + self.inflight_idx = 0 + self.seq_len = 0 + def __repr__(self) -> str: return f"PagedCacheMetadata(committed_idx={self.committed_idx}, cached_idx={self.cached_idx}, inflight_idx={self.inflight_idx}, seq_len={self.seq_len}, blocks={self.blocks})" From d8b8beb3bfcc1e6f9883979bd285b2c15e70ec47 Mon Sep 17 00:00:00 2001 From: Scott Main Date: Thu, 27 Feb 2025 16:13:07 -0800 Subject: [PATCH 502/509] Add README links to the corresponding tutorials MODULAR_ORIG_COMMIT_REV_ID: 52fe2e414e3612a4b5e42e25b292effc735ff99c --- tutorials/hello-magic/README.md | 4 ++++ tutorials/helm/max-openai-api/README.md | 4 ++++ tutorials/max-graph-python/README.md | 6 +++++- tutorials/max-serve-cloud-configs/README.md | 4 ++++ tutorials/run-embeddings-with-max-serve/README.md | 4 ++++ 5 files changed, 21 insertions(+), 1 deletion(-) create mode 100644 tutorials/hello-magic/README.md create mode 100644 tutorials/max-serve-cloud-configs/README.md diff --git a/tutorials/hello-magic/README.md b/tutorials/hello-magic/README.md new file mode 100644 index 0000000000..57d5b941e8 --- /dev/null +++ b/tutorials/hello-magic/README.md @@ -0,0 +1,4 @@ +# Hello Magic + +This code corresponds to the tutorial, +[A step-by-step guide to Magic](https://docs.modular.com/max/tutorials/magic). diff --git a/tutorials/helm/max-openai-api/README.md b/tutorials/helm/max-openai-api/README.md index 5af9a9380c..c67353afcc 100644 --- a/tutorials/helm/max-openai-api/README.md +++ b/tutorials/helm/max-openai-api/README.md @@ -7,6 +7,10 @@ NOTE: This file is generated by helm-docs: https://github.com/norwoodj/helm-docs The MAX platform unifies the leading AI development frameworks (TensorFlow, PyTorch, ONNX) and hardware backends in order to simplify deployment for AI production teams and accelerate innovation for AI developers. +For more information about using this Helm chart, see the tutorial to [Deploy +Llama 3 on GPU-powered Kubernetes +clusters](https://docs.modular.com/max/tutorials/deploy-max-serve-on-kubernetes/) + **Homepage:** ## Source Code diff --git a/tutorials/max-graph-python/README.md b/tutorials/max-graph-python/README.md index 4972b568c6..c1556efdad 100644 --- a/tutorials/max-graph-python/README.md +++ b/tutorials/max-graph-python/README.md @@ -3,6 +3,10 @@ This is an example of building a model with the MAX Graph API in Python and execute it with MAX Engine. +For more explanation about this code, see the tutorial to [Get started with MAX +Graph in +Python](https://docs.modular.com/max/tutorials/get-started-with-max-graph-in-python). + ## Usage First, install [Magic](https://docs.modular.com/magic/). @@ -37,7 +41,7 @@ You should see the following output: platform darwin -- Python 3.12.7, pytest-8.3.3, pluggy-1.5.0 rootdir: /max-repo configfile: pyproject.toml -collected 6 items +collected 6 items tests/test_addition.py ...... [100%] diff --git a/tutorials/max-serve-cloud-configs/README.md b/tutorials/max-serve-cloud-configs/README.md new file mode 100644 index 0000000000..698896c488 --- /dev/null +++ b/tutorials/max-serve-cloud-configs/README.md @@ -0,0 +1,4 @@ +# MAX Serve cloud configurations + +For usage instructions, see the tutorial to [Deploy Llama 3 on GPU with MAX +Serve](https://docs.modular.com/max/tutorials/max-serve-local-to-cloud). diff --git a/tutorials/run-embeddings-with-max-serve/README.md b/tutorials/run-embeddings-with-max-serve/README.md index 4fc60548b3..2afdea295e 100644 --- a/tutorials/run-embeddings-with-max-serve/README.md +++ b/tutorials/run-embeddings-with-max-serve/README.md @@ -14,3 +14,7 @@ search through documents semantically. ```bash python -m embeddings.kb_system ``` + +For a complete walkthrough, see the tutorial to [Deploy a text embedding model +with an +endpoint](https://docs.modular.com/max/tutorials/run-embeddings-with-max-serve) From e31b0fd5774033f43de1c1e3c78fa493599b7aca Mon Sep 17 00:00:00 2001 From: abdul dakkak Date: Thu, 27 Feb 2025 16:18:11 -0800 Subject: [PATCH 503/509] [Stdlib] Add string_literal.base64.encode/decode ops and tests. This allows one to perform base64 encode and decode StringLiteral via the compiler at compile time. MODULAR_ORIG_COMMIT_REV_ID: 90429a816e301f242830654b35a048d00b66c73a --- mojo/stdlib/src/builtin/string_literal.mojo | 18 ++++++++++++++++++ .../test/builtin/test_string_literal.mojo | 11 +++++++++++ 2 files changed, 29 insertions(+) diff --git a/mojo/stdlib/src/builtin/string_literal.mojo b/mojo/stdlib/src/builtin/string_literal.mojo index da60f9515c..6365aba14d 100644 --- a/mojo/stdlib/src/builtin/string_literal.mojo +++ b/mojo/stdlib/src/builtin/string_literal.mojo @@ -955,3 +955,21 @@ struct StringLiteral( A copy of the string with no leading whitespaces. """ return String(String(self).lstrip()) + + +fn _base64_encode[str: StringLiteral]() -> StringLiteral: + """Encode the string literal using Base64 encoding. + + Returns: + A new string literal with the Base64 encoded string. + """ + return __mlir_op.`pop.string.base64.encode`(str.value) + + +fn _base64_decode[str: StringLiteral]() -> StringLiteral: + """Decode the string literal using Base64 encoding. + + Returns: + A new string literal with the Base64 decoded string. + """ + return __mlir_op.`pop.string.base64.decode`(str.value) diff --git a/mojo/stdlib/test/builtin/test_string_literal.mojo b/mojo/stdlib/test/builtin/test_string_literal.mojo index 00ef2fec3f..de10a42d19 100644 --- a/mojo/stdlib/test/builtin/test_string_literal.mojo +++ b/mojo/stdlib/test/builtin/test_string_literal.mojo @@ -22,6 +22,7 @@ from testing import ( assert_raises, assert_true, ) +from builtin.string_literal import _base64_encode, _base64_decode def test_add(): @@ -525,6 +526,15 @@ def test_string_literal_from_stringable(): ) +def test_base64_encode_decode(): + assert_equal(_base64_encode["hello"](), "aGVsbG8=") + assert_equal(_base64_decode["aGVsbG8="](), "hello") + + alias encoded = _base64_encode["I'm a mojo string"]() + alias decoded = _base64_decode[encoded]() + assert_equal(decoded, "I'm a mojo string") + + def main(): test_add() test_iadd() @@ -558,3 +568,4 @@ def main(): test_splitlines() test_float_conversion() test_string_literal_from_stringable() + test_base64_encode_decode() From 3e034d828b1ff62edc4d30cae822f61647a29263 Mon Sep 17 00:00:00 2001 From: Brad Larson Date: Thu, 27 Feb 2025 18:33:31 -0600 Subject: [PATCH 504/509] [Examples] [Driver API] Provide an easy-to-read warning when building GPU function examples for CPUs When attempting to build the GPU function examples on a system without a MAX-supported GPU, they could provide a cryptic compilation error. This firmly gates compilation behind the presence or absence of a supported GPU and gives an easy-to-read warning if one is missing. MODULAR_ORIG_COMMIT_REV_ID: c361d392ad2f446c40d1950f539dc00b402f55df --- examples/gpu_functions/grayscale.mojo | 122 ++++++++-------- examples/gpu_functions/mandelbrot.mojo | 110 ++++++++------- .../naive_matrix_multiplication.mojo | 130 ++++++++++-------- examples/gpu_functions/vector_addition.mojo | 108 ++++++++------- 4 files changed, 252 insertions(+), 218 deletions(-) diff --git a/examples/gpu_functions/grayscale.mojo b/examples/gpu_functions/grayscale.mojo index f0bcc52566..ec8657fbba 100755 --- a/examples/gpu_functions/grayscale.mojo +++ b/examples/gpu_functions/grayscale.mojo @@ -23,6 +23,7 @@ from max.driver import ( cpu_device, ) from max.driver.accelerator import compile +from sys import has_nvidia_gpu_accelerator alias channel_dtype = DType.uint8 alias internal_float_dtype = DType.float32 @@ -65,60 +66,67 @@ fn color_to_grayscale_conversion( def main(): - # Attempt to connect to a compatible GPU. If one is not found, this will - # error out and exit. - gpu_device = accelerator_device() - host_device = cpu_device() - - alias IMAGE_WIDTH = 5 - alias IMAGE_HEIGHT = 10 - alias NUM_CHANNELS = 3 - - # Allocate the input image tensor on the host. - rgb_tensor = Tensor[channel_dtype, tensor_rank]( - (IMAGE_HEIGHT, IMAGE_WIDTH, NUM_CHANNELS), host_device - ) - - # Fill the image with initial colors. - for row in range(IMAGE_HEIGHT): - for col in range(IMAGE_WIDTH): - rgb_tensor[row, col, 0] = row + col - rgb_tensor[row, col, 1] = row + col + 20 - rgb_tensor[row, col, 2] = row + col + 40 - - # Move the image tensor to the accelerator. - rgb_tensor = rgb_tensor.move_to(gpu_device) - - # Allocate a tensor on the accelerator to host the grayscale image. - gray_tensor = Tensor[channel_dtype, tensor_rank]( - (IMAGE_HEIGHT, IMAGE_WIDTH, 1), gpu_device - ) - - # Compile the function to run across a grid on the GPU. - gpu_function = compile[color_to_grayscale_conversion](gpu_device) - - # The grid is divided up into blocks, making sure there's an extra - # full block for any remainder. This hasn't been tuned for any specific - # GPU. - alias BLOCK_SIZE = 16 - num_col_blocks = ceildiv(IMAGE_WIDTH, BLOCK_SIZE) - num_row_blocks = ceildiv(IMAGE_HEIGHT, BLOCK_SIZE) - - # Launch the compiled function on the GPU. The target device is specified - # first, followed by all function arguments. The last two named parameters - # are the dimensions of the grid in blocks, and the block dimensions. - gpu_function( - gpu_device, - IMAGE_WIDTH, - IMAGE_HEIGHT, - rgb_tensor.unsafe_slice(), - gray_tensor.unsafe_slice(), - grid_dim=Dim(num_col_blocks, num_row_blocks), - block_dim=Dim(BLOCK_SIZE, BLOCK_SIZE), - ) - - # Move the output tensor back onto the CPU so that we can read the results. - gray_tensor = gray_tensor.move_to(host_device) - - print("Resulting grayscale image:") - print_image[IMAGE_HEIGHT, IMAGE_WIDTH](gray_tensor) + @parameter + if has_nvidia_gpu_accelerator(): + # Attempt to connect to a compatible GPU. If one is not found, this will + # error out and exit. + gpu_device = accelerator_device() + host_device = cpu_device() + + alias IMAGE_WIDTH = 5 + alias IMAGE_HEIGHT = 10 + alias NUM_CHANNELS = 3 + + # Allocate the input image tensor on the host. + rgb_tensor = Tensor[channel_dtype, tensor_rank]( + (IMAGE_HEIGHT, IMAGE_WIDTH, NUM_CHANNELS), host_device + ) + + # Fill the image with initial colors. + for row in range(IMAGE_HEIGHT): + for col in range(IMAGE_WIDTH): + rgb_tensor[row, col, 0] = row + col + rgb_tensor[row, col, 1] = row + col + 20 + rgb_tensor[row, col, 2] = row + col + 40 + + # Move the image tensor to the accelerator. + rgb_tensor = rgb_tensor.move_to(gpu_device) + + # Allocate a tensor on the accelerator to host the grayscale image. + gray_tensor = Tensor[channel_dtype, tensor_rank]( + (IMAGE_HEIGHT, IMAGE_WIDTH, 1), gpu_device + ) + + # Compile the function to run across a grid on the GPU. + gpu_function = compile[color_to_grayscale_conversion](gpu_device) + + # The grid is divided up into blocks, making sure there's an extra + # full block for any remainder. This hasn't been tuned for any specific + # GPU. + alias BLOCK_SIZE = 16 + num_col_blocks = ceildiv(IMAGE_WIDTH, BLOCK_SIZE) + num_row_blocks = ceildiv(IMAGE_HEIGHT, BLOCK_SIZE) + + # Launch the compiled function on the GPU. The target device is specified + # first, followed by all function arguments. The last two named parameters + # are the dimensions of the grid in blocks, and the block dimensions. + gpu_function( + gpu_device, + IMAGE_WIDTH, + IMAGE_HEIGHT, + rgb_tensor.unsafe_slice(), + gray_tensor.unsafe_slice(), + grid_dim=Dim(num_col_blocks, num_row_blocks), + block_dim=Dim(BLOCK_SIZE, BLOCK_SIZE), + ) + + # Move the output tensor back onto the CPU so that we can read the results. + gray_tensor = gray_tensor.move_to(host_device) + + print("Resulting grayscale image:") + print_image[IMAGE_HEIGHT, IMAGE_WIDTH](gray_tensor) + else: + print( + "These examples require a MAX-compatible NVIDIA GPU and none was" + " detected." + ) diff --git a/examples/gpu_functions/mandelbrot.mojo b/examples/gpu_functions/mandelbrot.mojo index 4356e624b1..608eeea706 100755 --- a/examples/gpu_functions/mandelbrot.mojo +++ b/examples/gpu_functions/mandelbrot.mojo @@ -18,6 +18,7 @@ from gpu.id import thread_idx, block_dim, block_idx from math import ceildiv from max.driver import DynamicTensor, Tensor, accelerator_device, cpu_device from max.driver.accelerator import compile +from sys import has_nvidia_gpu_accelerator alias float_dtype = DType.float32 alias int_dtype = DType.int32 @@ -76,54 +77,61 @@ fn mandelbrot( def main(): - # Attempt to connect to a compatible GPU. If one is not found, this will - # error out and exit. - gpu_device = accelerator_device() - host_device = cpu_device() - - # Compile the function to run across a grid on the GPU. - gpu_function = compile[mandelbrot](gpu_device) - - # Set the resolution of the Mandelbrot set grid that will be calculated. - alias GRID_WIDTH = 60 - alias GRID_HEIGHT = 25 - - # The grid is divided up into blocks, making sure there's an extra - # full block for any remainder. This hasn't been tuned for any specific - # GPU. - alias BLOCK_SIZE = 16 - num_col_blocks = ceildiv(GRID_WIDTH, BLOCK_SIZE) - num_row_blocks = ceildiv(GRID_HEIGHT, BLOCK_SIZE) - - # Set the parameters for the area of the Mandelbrot set we'll be examining. - alias MIN_X: Scalar[float_dtype] = -2.0 - alias MAX_X: Scalar[float_dtype] = 0.7 - alias MIN_Y: Scalar[float_dtype] = -1.12 - alias MAX_Y: Scalar[float_dtype] = 1.12 - alias SCALE_X = (MAX_X - MIN_X) / GRID_WIDTH - alias SCALE_Y = (MAX_Y - MIN_Y) / GRID_HEIGHT - alias MAX_ITERATIONS = 100 - - # Allocate a tensor on the target device to hold the resulting set. - out_tensor = Tensor[int_dtype, 2]((GRID_HEIGHT, GRID_WIDTH), gpu_device) - - # Launch the compiled function on the GPU. The target device is specified - # first, followed by all function arguments. The last two named parameters - # are the dimensions of the grid in blocks, and the block dimensions. - gpu_function( - gpu_device, - MIN_X, - MIN_Y, - SCALE_X, - SCALE_Y, - MAX_ITERATIONS, - out_tensor.unsafe_slice(), - grid_dim=Dim(num_col_blocks, num_row_blocks), - block_dim=Dim(BLOCK_SIZE, BLOCK_SIZE), - ) - - # Move the output tensor back onto the CPU so that we can read the results. - out_tensor = out_tensor.move_to(host_device) - - # Draw the final Mandelbrot set. - draw_mandelbrot[GRID_HEIGHT, GRID_WIDTH](out_tensor, max=MAX_ITERATIONS) + @parameter + if has_nvidia_gpu_accelerator(): + # Attempt to connect to a compatible GPU. If one is not found, this will + # error out and exit. + gpu_device = accelerator_device() + host_device = cpu_device() + + # Compile the function to run across a grid on the GPU. + gpu_function = compile[mandelbrot](gpu_device) + + # Set the resolution of the Mandelbrot set grid that will be calculated. + alias GRID_WIDTH = 60 + alias GRID_HEIGHT = 25 + + # The grid is divided up into blocks, making sure there's an extra + # full block for any remainder. This hasn't been tuned for any specific + # GPU. + alias BLOCK_SIZE = 16 + num_col_blocks = ceildiv(GRID_WIDTH, BLOCK_SIZE) + num_row_blocks = ceildiv(GRID_HEIGHT, BLOCK_SIZE) + + # Set the parameters for the area of the Mandelbrot set we'll be examining. + alias MIN_X: Scalar[float_dtype] = -2.0 + alias MAX_X: Scalar[float_dtype] = 0.7 + alias MIN_Y: Scalar[float_dtype] = -1.12 + alias MAX_Y: Scalar[float_dtype] = 1.12 + alias SCALE_X = (MAX_X - MIN_X) / GRID_WIDTH + alias SCALE_Y = (MAX_Y - MIN_Y) / GRID_HEIGHT + alias MAX_ITERATIONS = 100 + + # Allocate a tensor on the target device to hold the resulting set. + out_tensor = Tensor[int_dtype, 2]((GRID_HEIGHT, GRID_WIDTH), gpu_device) + + # Launch the compiled function on the GPU. The target device is specified + # first, followed by all function arguments. The last two named parameters + # are the dimensions of the grid in blocks, and the block dimensions. + gpu_function( + gpu_device, + MIN_X, + MIN_Y, + SCALE_X, + SCALE_Y, + MAX_ITERATIONS, + out_tensor.unsafe_slice(), + grid_dim=Dim(num_col_blocks, num_row_blocks), + block_dim=Dim(BLOCK_SIZE, BLOCK_SIZE), + ) + + # Move the output tensor back onto the CPU so that we can read the results. + out_tensor = out_tensor.move_to(host_device) + + # Draw the final Mandelbrot set. + draw_mandelbrot[GRID_HEIGHT, GRID_WIDTH](out_tensor, max=MAX_ITERATIONS) + else: + print( + "These examples require a MAX-compatible NVIDIA GPU and none was" + " detected." + ) diff --git a/examples/gpu_functions/naive_matrix_multiplication.mojo b/examples/gpu_functions/naive_matrix_multiplication.mojo index 515f87e2b5..1e0d6e0dd4 100755 --- a/examples/gpu_functions/naive_matrix_multiplication.mojo +++ b/examples/gpu_functions/naive_matrix_multiplication.mojo @@ -23,6 +23,7 @@ from max.driver import ( cpu_device, ) from max.driver.accelerator import compile +from sys import has_nvidia_gpu_accelerator alias float_dtype = DType.float32 alias tensor_rank = 2 @@ -47,64 +48,71 @@ fn naive_matrix_multiplication( def main(): - # Attempt to connect to a compatible GPU. If one is not found, this will - # error out and exit. - gpu_device = accelerator_device() - host_device = cpu_device() - - alias I = 5 - alias J = 4 - alias K = 6 - - # Allocate the two input matrices on the host. - m_tensor = Tensor[float_dtype, tensor_rank]((I, J), host_device) - n_tensor = Tensor[float_dtype, tensor_rank]((J, K), host_device) - - # Fill them with initial values. - for m_row in range(I): - for m_col in range(J): - m_tensor[m_row, m_col] = m_row - m_col - - for n_row in range(J): - for n_col in range(K): - n_tensor[n_row, n_col] = n_row + n_col - - print("M matrix:", m_tensor) - print("N matrix:", n_tensor) - - # Move the input matrices to the accelerator. - m_tensor = m_tensor.move_to(gpu_device) - n_tensor = n_tensor.move_to(gpu_device) - - # Allocate a tensor on the accelerator to host the calculation results. - p_tensor = Tensor[float_dtype, tensor_rank]((I, K), gpu_device) - - # Compile the function to run across a grid on the GPU. - gpu_function = compile[naive_matrix_multiplication](gpu_device) - - # The grid is divided up into blocks, making sure there's an extra - # full block for any remainder. This hasn't been tuned for any specific - # GPU. - alias BLOCK_SIZE = 16 - num_col_blocks = ceildiv(I, BLOCK_SIZE) - num_row_blocks = ceildiv(J, BLOCK_SIZE) - - # Launch the compiled function on the GPU. The target device is specified - # first, followed by all function arguments. The last two named parameters - # are the dimensions of the grid in blocks, and the block dimensions. - gpu_function( - gpu_device, - I, - J, - K, - m_tensor.unsafe_slice(), - n_tensor.unsafe_slice(), - p_tensor.unsafe_slice(), - grid_dim=Dim(num_col_blocks, num_row_blocks), - block_dim=Dim(BLOCK_SIZE, BLOCK_SIZE), - ) - - # Move the output tensor back onto the CPU so that we can read the results. - p_tensor = p_tensor.move_to(host_device) - - print("Resulting matrix:", p_tensor) + @parameter + if has_nvidia_gpu_accelerator(): + # Attempt to connect to a compatible GPU. If one is not found, this will + # error out and exit. + gpu_device = accelerator_device() + host_device = cpu_device() + + alias I = 5 + alias J = 4 + alias K = 6 + + # Allocate the two input matrices on the host. + m_tensor = Tensor[float_dtype, tensor_rank]((I, J), host_device) + n_tensor = Tensor[float_dtype, tensor_rank]((J, K), host_device) + + # Fill them with initial values. + for m_row in range(I): + for m_col in range(J): + m_tensor[m_row, m_col] = m_row - m_col + + for n_row in range(J): + for n_col in range(K): + n_tensor[n_row, n_col] = n_row + n_col + + print("M matrix:", m_tensor) + print("N matrix:", n_tensor) + + # Move the input matrices to the accelerator. + m_tensor = m_tensor.move_to(gpu_device) + n_tensor = n_tensor.move_to(gpu_device) + + # Allocate a tensor on the accelerator to host the calculation results. + p_tensor = Tensor[float_dtype, tensor_rank]((I, K), gpu_device) + + # Compile the function to run across a grid on the GPU. + gpu_function = compile[naive_matrix_multiplication](gpu_device) + + # The grid is divided up into blocks, making sure there's an extra + # full block for any remainder. This hasn't been tuned for any specific + # GPU. + alias BLOCK_SIZE = 16 + num_col_blocks = ceildiv(I, BLOCK_SIZE) + num_row_blocks = ceildiv(J, BLOCK_SIZE) + + # Launch the compiled function on the GPU. The target device is specified + # first, followed by all function arguments. The last two named parameters + # are the dimensions of the grid in blocks, and the block dimensions. + gpu_function( + gpu_device, + I, + J, + K, + m_tensor.unsafe_slice(), + n_tensor.unsafe_slice(), + p_tensor.unsafe_slice(), + grid_dim=Dim(num_col_blocks, num_row_blocks), + block_dim=Dim(BLOCK_SIZE, BLOCK_SIZE), + ) + + # Move the output tensor back onto the CPU so that we can read the results. + p_tensor = p_tensor.move_to(host_device) + + print("Resulting matrix:", p_tensor) + else: + print( + "These examples require a MAX-compatible NVIDIA GPU and none was" + " detected." + ) diff --git a/examples/gpu_functions/vector_addition.mojo b/examples/gpu_functions/vector_addition.mojo index dd4aaa4361..951eb3ed50 100755 --- a/examples/gpu_functions/vector_addition.mojo +++ b/examples/gpu_functions/vector_addition.mojo @@ -22,6 +22,7 @@ from max.driver import ( cpu_device, ) from max.driver.accelerator import compile +from sys import has_nvidia_gpu_accelerator alias float_dtype = DType.float32 alias tensor_rank = 1 @@ -42,52 +43,61 @@ fn vector_addition( def main(): - # Attempt to connect to a compatible GPU. If one is not found, this will - # error out and exit. - gpu_device = accelerator_device() - host_device = cpu_device() - - alias VECTOR_WIDTH = 10 - - # Allocate the two input tensors on the host. - lhs_tensor = Tensor[float_dtype, 1]((VECTOR_WIDTH), host_device) - rhs_tensor = Tensor[float_dtype, 1]((VECTOR_WIDTH), host_device) - - # Fill them with initial values. - for i in range(VECTOR_WIDTH): - lhs_tensor[i] = 1.25 - rhs_tensor[i] = 2.5 - - # Move the input tensors to the accelerator. - lhs_tensor = lhs_tensor.move_to(gpu_device) - rhs_tensor = rhs_tensor.move_to(gpu_device) - - # Allocate a tensor on the accelerator to host the calculation results. - out_tensor = Tensor[float_dtype, tensor_rank]((VECTOR_WIDTH), gpu_device) - - # Compile the function to run across a grid on the GPU. - gpu_function = compile[vector_addition](gpu_device) - - # The grid is divided up into blocks, making sure there's an extra - # full block for any remainder. This hasn't been tuned for any specific - # GPU. - alias BLOCK_SIZE = 16 - var num_blocks = ceildiv(VECTOR_WIDTH, BLOCK_SIZE) - - # Launch the compiled function on the GPU. The target device is specified - # first, followed by all function arguments. The last two named parameters - # are the dimensions of the grid in blocks, and the block dimensions. - gpu_function( - gpu_device, - VECTOR_WIDTH, - lhs_tensor.unsafe_slice(), - rhs_tensor.unsafe_slice(), - out_tensor.unsafe_slice(), - grid_dim=Dim(num_blocks), - block_dim=Dim(BLOCK_SIZE), - ) - - # Move the output tensor back onto the CPU so that we can read the results. - out_tensor = out_tensor.move_to(host_device) - - print("Resulting vector:", out_tensor) + @parameter + if has_nvidia_gpu_accelerator(): + # Attempt to connect to a compatible GPU. If one is not found, this will + # error out and exit. + gpu_device = accelerator_device() + host_device = cpu_device() + + alias VECTOR_WIDTH = 10 + + # Allocate the two input tensors on the host. + lhs_tensor = Tensor[float_dtype, 1]((VECTOR_WIDTH), host_device) + rhs_tensor = Tensor[float_dtype, 1]((VECTOR_WIDTH), host_device) + + # Fill them with initial values. + for i in range(VECTOR_WIDTH): + lhs_tensor[i] = 1.25 + rhs_tensor[i] = 2.5 + + # Move the input tensors to the accelerator. + lhs_tensor = lhs_tensor.move_to(gpu_device) + rhs_tensor = rhs_tensor.move_to(gpu_device) + + # Allocate a tensor on the accelerator to host the calculation results. + out_tensor = Tensor[float_dtype, tensor_rank]( + (VECTOR_WIDTH), gpu_device + ) + + # Compile the function to run across a grid on the GPU. + gpu_function = compile[vector_addition](gpu_device) + + # The grid is divided up into blocks, making sure there's an extra + # full block for any remainder. This hasn't been tuned for any specific + # GPU. + alias BLOCK_SIZE = 16 + var num_blocks = ceildiv(VECTOR_WIDTH, BLOCK_SIZE) + + # Launch the compiled function on the GPU. The target device is specified + # first, followed by all function arguments. The last two named parameters + # are the dimensions of the grid in blocks, and the block dimensions. + gpu_function( + gpu_device, + VECTOR_WIDTH, + lhs_tensor.unsafe_slice(), + rhs_tensor.unsafe_slice(), + out_tensor.unsafe_slice(), + grid_dim=Dim(num_blocks), + block_dim=Dim(BLOCK_SIZE), + ) + + # Move the output tensor back onto the CPU so that we can read the results. + out_tensor = out_tensor.move_to(host_device) + + print("Resulting vector:", out_tensor) + else: + print( + "These examples require a MAX-compatible NVIDIA GPU and none was" + " detected." + ) From 32883bcd85999e1f1ee2589cf366b76fa3848fff Mon Sep 17 00:00:00 2001 From: Jack Clayton Date: Thu, 27 Feb 2025 19:33:49 -0500 Subject: [PATCH 505/509] [Kernels] Improve ergonomics for custom ops benchmarking Allow constructing a `ManagedTensorSlice` with random / sequential numbers using the `StaticTensorSpec` to determine the number and type of elements to initialize. This improves ergonomics when testing and benchmarking custom ops. MODULAR_ORIG_COMMIT_REV_ID: 06122a82d16097ffdf1510ba50389691b2d82e10 --- examples/custom_ops/benchmarks.mojo | 127 +++++++++++++--------------- 1 file changed, 60 insertions(+), 67 deletions(-) diff --git a/examples/custom_ops/benchmarks.mojo b/examples/custom_ops/benchmarks.mojo index b2f7962c05..67490d0c16 100644 --- a/examples/custom_ops/benchmarks.mojo +++ b/examples/custom_ops/benchmarks.mojo @@ -61,13 +61,11 @@ def top_k(): out_lambda=None, ) - var in_vals = UnsafePointer[Scalar[val_dtype]].alloc(els) - var out_vals = UnsafePointer[Scalar[val_dtype]].alloc(els) - var out_idxs = UnsafePointer[Scalar[idx_dtype]].alloc(els) + var in_vals = InputTensor[static_spec=val_spec].rand() + var out_vals = OutputTensor[static_spec=val_spec].rand() + var out_idxs = OutputTensor[static_spec=idx_spec].rand() - rand(in_vals, els) - - var cpu_ctx_ptr = cpu().unsafe_ptr() + var cpu_ctx = DeviceContext(api="cpu") @parameter @always_inline @@ -76,10 +74,7 @@ def top_k(): @always_inline fn run_bench() raises: TopK.execute[K=K, target="cpu"]( - out_vals=OutputTensor[static_spec=val_spec](out_vals, shape), - out_idxs=OutputTensor[static_spec=idx_spec](out_idxs, shape), - in_vals=InputTensor[static_spec=val_spec](in_vals, shape), - ctx=cpu_ctx_ptr, + out_vals, out_idxs, in_vals, cpu_ctx ) b.iter[run_bench]() @@ -93,44 +88,48 @@ def top_k(): @parameter if has_nvidia_gpu_accelerator() or has_amd_gpu_accelerator(): var gpu_ctx = DeviceContext() - var dev_in_vals = gpu_ctx.enqueue_create_buffer[val_dtype](els) - var dev_out_vals = gpu_ctx.enqueue_create_buffer[val_dtype](els) - var dev_out_idxs = gpu_ctx.enqueue_create_buffer[idx_dtype](els) - gpu_ctx.copy(dev_in_vals, in_vals) + + var in_vals_dev_buff = gpu_ctx.enqueue_create_buffer[val_dtype](els) + var out_vals_dev_buff = gpu_ctx.enqueue_create_buffer[val_dtype](els) + var out_idxs_dev_buff = gpu_ctx.enqueue_create_buffer[idx_dtype](els) + + gpu_ctx.enqueue_copy(in_vals_dev_buff, in_vals.unsafe_ptr()) + + var out_vals_dev = OutputTensor[static_spec=val_spec]( + out_vals_dev_buff.unsafe_ptr(), shape + ) + var out_idxs_dev = OutputTensor[static_spec=idx_spec]( + out_idxs_dev_buff.unsafe_ptr(), shape + ) + var in_vals_dev = InputTensor[static_spec=val_spec]( + in_vals_dev_buff.unsafe_ptr(), shape + ) @parameter @always_inline fn bench_gpu(mut b: Bencher) raises: @parameter @always_inline - fn kernel_launch() raises: + fn kernel_launch(gpu_ctx: DeviceContext) raises: TopK.execute[K=K, target="gpu"]( - out_vals=OutputTensor[static_spec=val_spec]( - dev_out_vals.unsafe_ptr(), shape - ), - out_idxs=OutputTensor[static_spec=idx_spec]( - dev_out_idxs.unsafe_ptr(), shape - ), - in_vals=InputTensor[static_spec=val_spec]( - dev_in_vals.unsafe_ptr(), shape - ), - ctx=gpu_ctx, + out_vals_dev, out_idxs_dev, in_vals_dev, gpu_ctx ) - b.iter[kernel_launch]() + b.iter_custom[kernel_launch](gpu_ctx) b.bench_function[bench_gpu]( BenchId("top_k_custom", "gpu"), flops, elements ) - _ = gpu_ctx + _ = in_vals_dev_buff + _ = out_vals_dev_buff + _ = out_idxs_dev_buff b.config.verbose_metric_names = False print(b) - _ = cpu_ctx_ptr - in_vals.free() - out_vals.free() - out_idxs.free() + _ = in_vals + _ = out_vals + _ = out_idxs def matmul(): @@ -178,18 +177,11 @@ def matmul(): out_lambda=None, ) - var a_ptr = UnsafePointer[Scalar[dtype]].alloc(a_els) - var b_ptr = UnsafePointer[Scalar[dtype]].alloc(b_els) - var c_ptr = UnsafePointer[Scalar[dtype]].alloc(c_els) + var a = InputTensor[static_spec=a_spec].rand() + var b = InputTensor[static_spec=b_spec].rand() + var c = OutputTensor[static_spec=c_spec].rand() - var a = InputTensor[static_spec=a_spec](a_ptr, a_shape) - var b = InputTensor[static_spec=b_spec](b_ptr, b_shape) - var c = OutputTensor[static_spec=c_spec](c_ptr, c_shape) - - rand(a_ptr, a_els) - rand(b_ptr, b_els) - - var cpu_ctx_ptr = cpu().unsafe_ptr() + var cpu_ctx = DeviceContext(api="cpu") var bench = Bench() var flops = ThroughputMeasure(BenchMetric.flops, FLOPS) var elements = ThroughputMeasure(BenchMetric.elements, M * N) @@ -201,10 +193,7 @@ def matmul(): @always_inline fn run_bench() raises: MatrixMultiplication["naive"].execute[target="cpu"]( - c, - a, - b, - cpu_ctx_ptr, + c, a, b, cpu_ctx ) bencher.iter[run_bench]() @@ -214,14 +203,22 @@ def matmul(): @parameter if has_nvidia_gpu_accelerator() or has_amd_gpu_accelerator(): var gpu_ctx = DeviceContext() - var a_dev = gpu_ctx.enqueue_create_buffer[dtype](a_els) - var b_dev = gpu_ctx.enqueue_create_buffer[dtype](b_els) - var c_dev = gpu_ctx.enqueue_create_buffer[dtype](c_els) - var c = InputTensor[static_spec=c_spec](c_dev.unsafe_ptr(), c_shape) - var a = OutputTensor[static_spec=a_spec](a_dev.unsafe_ptr(), a_shape) - var b = OutputTensor[static_spec=b_spec](b_dev.unsafe_ptr(), b_shape) - gpu_ctx.copy(a_dev, a_ptr) - gpu_ctx.copy(b_dev, b_ptr) + var a_dev_buf = gpu_ctx.enqueue_create_buffer[dtype](a_els) + var b_dev_buf = gpu_ctx.enqueue_create_buffer[dtype](b_els) + var c_dev_buf = gpu_ctx.enqueue_create_buffer[dtype](c_els) + + gpu_ctx.enqueue_copy(a_dev_buf, a.unsafe_ptr()) + gpu_ctx.enqueue_copy(b_dev_buf, b.unsafe_ptr()) + + var c_dev = InputTensor[static_spec=c_spec]( + c_dev_buf.unsafe_ptr(), c_shape + ) + var a_dev = OutputTensor[static_spec=a_spec]( + a_dev_buf.unsafe_ptr(), a_shape + ) + var b_dev = OutputTensor[static_spec=b_spec]( + b_dev_buf.unsafe_ptr(), b_shape + ) @parameter def bench_matmul_kernel[impl: StringLiteral](): @@ -232,15 +229,10 @@ def matmul(): @always_inline fn kernel_launch(gpu_ctx: DeviceContext) raises: MatrixMultiplication[impl].execute[target="gpu"]( - c, - a, - b, - gpu_ctx, + c_dev, a_dev, b_dev, gpu_ctx ) - var gpu_ctx = DeviceContext() bench.iter_custom[kernel_launch](gpu_ctx) - _ = gpu_ctx bench.bench_function[bench_gpu]( BenchId("gpu", impl), flops, elements @@ -252,17 +244,18 @@ def matmul(): bench_matmul_kernel["tiled_register"]() bench_matmul_kernel["block_tiled"]() bench_matmul_kernel["block_tiled_vectorized"]() - _ = gpu_ctx - _ = a_dev - _ = b_dev - _ = c_dev + # TODO add origin to `ManagedTensorSlice` to avoid this + _ = a_dev_buf + _ = b_dev_buf + _ = c_dev_buf bench.config.verbose_metric_names = False print(bench) - a_ptr.free() - b_ptr.free() - c_ptr.free() + # TODO add origin to `ManagedTensorSlice` to avoid this + _ = a + _ = b + _ = c # TODO: arg parsing to select benchmarks From 6470b771e16d1f7147f25537dcc65ab253731568 Mon Sep 17 00:00:00 2001 From: Laszlo Kindrat Date: Thu, 27 Feb 2025 21:15:57 -0500 Subject: [PATCH 506/509] Revert "[KVCache] rework max_cache_length to max_context_length (#56592)" (#56872) This reverts commit 2ba4178bd602dabfce4b9fb10181b98e42e241cb because it breaks the MI300 CI tests, as well as the torch compile llama3 on ROCm. See [Internal link] MODULAR_ORIG_COMMIT_REV_ID: bc34143cebe46055fbadcb3da5094f735ee82d61 --- src/max/pipelines/kv_cache/_utils.py | 3 +-- src/max/pipelines/kv_cache/continuous_batching_cache.py | 8 +++----- src/max/pipelines/kv_cache/paged_cache.py | 8 +++----- 3 files changed, 7 insertions(+), 12 deletions(-) diff --git a/src/max/pipelines/kv_cache/_utils.py b/src/max/pipelines/kv_cache/_utils.py index 1c8389142a..6942ad7823 100644 --- a/src/max/pipelines/kv_cache/_utils.py +++ b/src/max/pipelines/kv_cache/_utils.py @@ -28,7 +28,6 @@ def build_max_lengths_tensor( for step in range(num_steps): max_lengths_np[step, 0] = step_max_seq_length max_lengths_np[step, 1] = step_max_cache_length + step_max_cache_length += step_max_seq_length step_max_seq_length = 1 - step_max_cache_length += 1 - return Tensor.from_numpy(max_lengths_np) diff --git a/src/max/pipelines/kv_cache/continuous_batching_cache.py b/src/max/pipelines/kv_cache/continuous_batching_cache.py index cb7936d97a..b6f75e9c8a 100644 --- a/src/max/pipelines/kv_cache/continuous_batching_cache.py +++ b/src/max/pipelines/kv_cache/continuous_batching_cache.py @@ -255,7 +255,7 @@ def _fetch( cache_lengths_np = np.zeros(active_batch_size, np.uint32) max_seq_length = 0 - max_context_length = 0 + max_cache_length = 0 for i, (seq_id, prompt) in enumerate(seq_ids_and_prompts.items()): if seq_id > self.max_batch_size: @@ -281,9 +281,7 @@ def _fetch( # Update the maximum lengths seen so far. max_seq_length = max(max_seq_length, len(prompt)) - max_context_length = max( - max_context_length, cache_len + len(prompt) - ) + max_cache_length = max(max_cache_length, cache_len) cache_lengths = [ Tensor.from_numpy(cache_lengths_np).to(d) for d in self.devices @@ -296,7 +294,7 @@ def _fetch( # Build a tensor of maximum lengths. Each step slices the first row to # advance to the values for the next row. max_lengths_host = build_max_lengths_tensor( - num_steps, max_seq_length, max_context_length + num_steps, max_seq_length, max_cache_length ) result = [ diff --git a/src/max/pipelines/kv_cache/paged_cache.py b/src/max/pipelines/kv_cache/paged_cache.py index 6e8ba7d7ee..cc36c1bf3d 100644 --- a/src/max/pipelines/kv_cache/paged_cache.py +++ b/src/max/pipelines/kv_cache/paged_cache.py @@ -567,7 +567,7 @@ def _fetch( # Determine the number of pages required for each sequence. max_seq_length = 0 - max_context_length = 0 + max_cache_length = 0 total_sequence_length = 0 total_blocks_to_allocate = 0 blocks_to_allocate_by_seq = {} @@ -582,9 +582,7 @@ def _fetch( # Update the maximum lengths seen so far. max_seq_length = max(max_seq_length, len(prompt)) - max_context_length = max( - max_context_length, cache_length + len(prompt) - ) + max_cache_length = max(max_cache_length, cache_length) # Compute the total sequence length and the number of pages required to store it. total_sequence_length += data.seq_len @@ -631,7 +629,7 @@ def _fetch( # Build a tensor of maximum lengths. Each step slices the first row to # advance to the values for the next row. max_lengths_host = build_max_lengths_tensor( - num_steps, max_seq_length, max_context_length + num_steps, max_seq_length, max_cache_length ) lut_table_host = Tensor.from_numpy(lut_table_np) From 9116c0c43e894d0652fb662c69137f58ffa3d686 Mon Sep 17 00:00:00 2001 From: Scott Main Date: Thu, 27 Feb 2025 20:47:26 -0800 Subject: [PATCH 507/509] Update README diagram MODULAR_ORIG_COMMIT_REV_ID: c9f17deec51aaf559b4b7546100228d046a4fe6c --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 24507ed98d..dec744d018 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,7 @@ commonly fragmented AI deployment workflows. MAX accelerates time to market for the latest innovations by giving AI developers a single toolchain that unlocks full programmability, unparalleled performance, and seamless hardware portability. -![Modular Architecture Diagram](https://modular-assets.s3.amazonaws.com/images/modular_architecture_diagram_bg.png) +![](https://docs.modular.com/images/github/max-stack.png) [See here to get started with MAX](https://docs.modular.com/max/get-started) and when you want to report issues or request features, From b3dfb49827627801d2b8119ed1994edcc3fde772 Mon Sep 17 00:00:00 2001 From: abdul dakkak Date: Thu, 27 Feb 2025 20:59:45 -0800 Subject: [PATCH 508/509] [Stdlib] Add StringLiteral compress/decompress private functions This adds helper functions on StringLiteral to be able to do compile time compression/decompression. MODULAR_ORIG_COMMIT_REV_ID: a5e8b20e84e797dbab07bbb4c9b5384da63873bd --- mojo/stdlib/src/builtin/string_literal.mojo | 18 ++++++++++++++++++ .../test/builtin/test_string_literal.mojo | 17 ++++++++++++++++- 2 files changed, 34 insertions(+), 1 deletion(-) diff --git a/mojo/stdlib/src/builtin/string_literal.mojo b/mojo/stdlib/src/builtin/string_literal.mojo index 6365aba14d..f72938df4b 100644 --- a/mojo/stdlib/src/builtin/string_literal.mojo +++ b/mojo/stdlib/src/builtin/string_literal.mojo @@ -973,3 +973,21 @@ fn _base64_decode[str: StringLiteral]() -> StringLiteral: A new string literal with the Base64 decoded string. """ return __mlir_op.`pop.string.base64.decode`(str.value) + + +fn _compress[str: StringLiteral]() -> StringLiteral: + """Compress the string literal using zlib. + + Returns: + A new string literal with the compressed string. + """ + return __mlir_op.`pop.string.compress`(str.value) + + +fn _decompress[str: StringLiteral]() -> StringLiteral: + """Decompress the string literal using zlib. + + Returns: + A new string literal with the decompressed string. + """ + return __mlir_op.`pop.string.decompress`(str.value) diff --git a/mojo/stdlib/test/builtin/test_string_literal.mojo b/mojo/stdlib/test/builtin/test_string_literal.mojo index de10a42d19..a8da563eb3 100644 --- a/mojo/stdlib/test/builtin/test_string_literal.mojo +++ b/mojo/stdlib/test/builtin/test_string_literal.mojo @@ -22,7 +22,12 @@ from testing import ( assert_raises, assert_true, ) -from builtin.string_literal import _base64_encode, _base64_decode +from builtin.string_literal import ( + _base64_encode, + _base64_decode, + _compress, + _decompress, +) def test_add(): @@ -535,6 +540,15 @@ def test_base64_encode_decode(): assert_equal(decoded, "I'm a mojo string") +def test_compress_decompress(): + alias compressed = _compress["hello"]() + alias decompressed = _decompress[compressed]() + alias compressed_base64 = _base64_encode[compressed]() + assert_equal(compressed_base64, "eNrLSM3JyQcABiwCFQ==") + assert_equal(len(compressed), 13) + assert_equal(decompressed, "hello") + + def main(): test_add() test_iadd() @@ -569,3 +583,4 @@ def main(): test_float_conversion() test_string_literal_from_stringable() test_base64_encode_decode() + test_compress_decompress() From b29a1f737e33d656bfee64e856069d3c68acce90 Mon Sep 17 00:00:00 2001 From: modularbot Date: Fri, 28 Feb 2025 07:09:14 +0000 Subject: [PATCH 509/509] Update lockfiles to point to latest nightly version: 25.2.0.dev2025022805 --- examples/custom_ops/magic.lock | 146 +++++------ examples/gpu_functions/magic.lock | 146 +++++------ examples/graph-api/magic.lock | 146 +++++------ .../inference/bert-c-torchscript/magic.lock | 146 +++++------ .../bert-mojo-torchscript/magic.lock | 146 +++++------ .../bert-python-torchscript/magic.lock | 146 +++++------ .../resnet50-python-torchscript/magic.lock | 146 +++++------ .../stable-diffusion-mojo-onnx/magic.lock | 146 +++++------ .../stable-diffusion-python-onnx/magic.lock | 146 +++++------ .../inference/yolo-python-onnx/magic.lock | 146 +++++------ examples/mojo/life/magic.lock | 146 +++++------ examples/mojo/magic.lock | 146 +++++------ examples/mojo/operators/magic.lock | 146 +++++------ examples/mojo/testing/magic.lock | 146 +++++------ examples/notebooks/magic.lock | 146 +++++------ examples/offline-inference/magic.lock | 227 +++++++++--------- mojo/magic.lock | 146 +++++------ src/max/magic.lock | 227 +++++++++--------- tutorials/hello-magic/local/magic.lock | 110 ++++----- tutorials/hello-magic/magic.lock | 130 +++++----- tutorials/max-graph-api/magic.lock | 110 ++++----- 21 files changed, 1569 insertions(+), 1571 deletions(-) diff --git a/examples/custom_ops/magic.lock b/examples/custom_ops/magic.lock index 9473097321..6014677668 100644 --- a/examples/custom_ops/magic.lock +++ b/examples/custom_ops/magic.lock @@ -42,11 +42,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022805-release.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-h2d0b736_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda @@ -107,11 +107,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022805-release.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-ha32ae93_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda @@ -163,11 +163,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.1-h3f77e49_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022805-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda @@ -1301,48 +1301,48 @@ packages: license_family: APACHE size: 280830 timestamp: 1736986295869 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022718-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022805-release.conda noarch: python - sha256: f3dcb14fed5470c0fc521542cbd2f1c56ca7e46d560f46176b8f926198cb3cbd - md5: 01fe5e0cf46c84a6345e323ad1316764 + sha256: 6fe952db050b07af9045ee094df2241255d72ee0bca5663edfd2ce1c9752ec09 + md5: 8e5bdfbc3312e58ca7af7e74b4c1a62a depends: - - max-core ==25.2.0.dev2025022718 release - - max-python ==25.2.0.dev2025022718 release - - mojo-jupyter ==25.2.0.dev2025022718 release - - mblack ==25.2.0.dev2025022718 release + - max-core ==25.2.0.dev2025022805 release + - max-python ==25.2.0.dev2025022805 release + - mojo-jupyter ==25.2.0.dev2025022805 release + - mblack ==25.2.0.dev2025022805 release license: LicenseRef-Modular-Proprietary - size: 9905 - timestamp: 1740680254354 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022718-release.conda - sha256: 847d5767109a305d7bcad4ac29248a74a384034692934a0c54b00a590c27094a - md5: fc5a9ae36c7805979bd58ca55a25066f + size: 9906 + timestamp: 1740719805201 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022805-release.conda + sha256: a507f8b798257c4505a296fd1d7900bcc9695b5eaa5990d5a447f588e203ffb7 + md5: 53a62d22b682cdf446cfcbb5e07a0b4d depends: - - mblack ==25.2.0.dev2025022718 release + - mblack ==25.2.0.dev2025022805 release license: LicenseRef-Modular-Proprietary - size: 249811868 - timestamp: 1740680254354 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022718-release.conda - sha256: 250c35ecccd302e6c7de836ac200a5ece92e74508c2590c585d8803d488fd650 - md5: d88728b468c85902512a0f9b99251035 + size: 249837097 + timestamp: 1740719822740 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022805-release.conda + sha256: 2c06fc3f0a5ff31b90531e477e1bc8edcbf530a05146c9afb148819b3115d4a6 + md5: 654fe24f42ae167dd46e5858b512fd64 depends: - - mblack ==25.2.0.dev2025022718 release + - mblack ==25.2.0.dev2025022805 release license: LicenseRef-Modular-Proprietary - size: 252108573 - timestamp: 1740680207793 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022718-release.conda - sha256: fb28d9e61aa507ea84b470082d3dc96844a24fe672d4e4c57e832655c5d0a202 - md5: dd8734453f7276a258f3351cc5c506c3 + size: 252165614 + timestamp: 1740719805201 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022805-release.conda + sha256: eb316eef88826b46d84532c0cfcde6d56a875aafcfe08d140cd6b90d752f8841 + md5: efed274ef0a65e98815933cfb8b609d2 depends: - - mblack ==25.2.0.dev2025022718 release + - mblack ==25.2.0.dev2025022805 release license: LicenseRef-Modular-Proprietary - size: 217273450 - timestamp: 1740681819160 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022718-release.conda + size: 217300178 + timestamp: 1740721042829 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022805-release.conda noarch: python - sha256: 831b4d62f66f0083321121c6ba25dedab3ee41d5e9f19d9752969592214af398 - md5: f828ace91aa057e4774e84ad459adccf + sha256: 1724ba61123d73c5ae9194dddcaf61e7937123cbd49d0fb122fc78cee0673e6d + md5: 35a33686fe8cccc768034d43f604e672 depends: - - max-core ==25.2.0.dev2025022718 release + - max-core ==25.2.0.dev2025022805 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1357,7 +1357,7 @@ packages: - nvitop >=1.4.1 - opentelemetry-api >=1.29.0 - opentelemetry-exporter-otlp-proto-http >=1.27.0 - - opentelemetry-exporter-prometheus <1.0.0 + - opentelemetry-exporter-prometheus >=0.48b0,<1.1.12.0rc1 - opentelemetry-sdk >=1.29.0,<2.0 - pillow >=10.3.0 - prometheus_client >=0.21.0 @@ -1379,14 +1379,14 @@ packages: - uvloop >=0.21.0 - xgrammar ==0.1.11 license: LicenseRef-Modular-Proprietary - size: 123584411 - timestamp: 1740680254354 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022718-release.conda + size: 123624528 + timestamp: 1740719822740 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022805-release.conda noarch: python - sha256: b9e5755b7bf6314a37a90ef0250c93f5e7c693954d7a6389a97ab9ef06e23cc3 - md5: bfd2e752d0fc9516b78a17169ce9cc78 + sha256: c741ded7e064aba732999cf95e43dda28e6e9cdc59a20254fe32b8bc49739ea6 + md5: ae9b9de4204cb583f9feeb3369809182 depends: - - max-core ==25.2.0.dev2025022718 release + - max-core ==25.2.0.dev2025022805 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1401,7 +1401,7 @@ packages: - nvitop >=1.4.1 - opentelemetry-api >=1.29.0 - opentelemetry-exporter-otlp-proto-http >=1.27.0 - - opentelemetry-exporter-prometheus <1.0.0 + - opentelemetry-exporter-prometheus >=0.48b0,<1.1.12.0rc1 - opentelemetry-sdk >=1.29.0,<2.0 - pillow >=10.3.0 - prometheus_client >=0.21.0 @@ -1423,14 +1423,14 @@ packages: - uvloop >=0.21.0 - xgrammar ==0.1.11 license: LicenseRef-Modular-Proprietary - size: 126004454 - timestamp: 1740680207793 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022718-release.conda + size: 125985562 + timestamp: 1740719805201 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022805-release.conda noarch: python - sha256: 7da9f4655082bb64c2b0cc996ffefa0ce5c49744854ed77a9b0d000e27cf5a55 - md5: b16d498a148aa61dca2a6bfec5cb8e46 + sha256: c56d9f6edeb5caa166d74eefca5d472556e29b4a22a4a7e799ff9f9482af0a62 + md5: c684a1ac57d5ca9a82884bffff428154 depends: - - max-core ==25.2.0.dev2025022718 release + - max-core ==25.2.0.dev2025022805 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1445,7 +1445,7 @@ packages: - nvitop >=1.4.1 - opentelemetry-api >=1.29.0 - opentelemetry-exporter-otlp-proto-http >=1.27.0 - - opentelemetry-exporter-prometheus <1.0.0 + - opentelemetry-exporter-prometheus >=0.48b0,<1.1.12.0rc1 - opentelemetry-sdk >=1.29.0,<2.0 - pillow >=10.3.0 - prometheus_client >=0.21.0 @@ -1467,12 +1467,12 @@ packages: - uvloop >=0.21.0 - xgrammar ==0.1.11 license: LicenseRef-Modular-Proprietary - size: 112658409 - timestamp: 1740681819160 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022718-release.conda + size: 112656033 + timestamp: 1740721042829 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022805-release.conda noarch: python - sha256: ff042a8abfed0e2e36b207e3d4f59a2b4577dea7f099b08d1aaef128ab796f09 - md5: 719ca7123d53415adcdd7f0cb8396c51 + sha256: 8d5cc0e599b2ceecc816efe63442c4295304ae7b3016b42399097de4dbcf1769 + md5: 49a934446d5d99e86689f4373ecfe4c4 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -1484,19 +1484,19 @@ packages: - python license: MIT size: 130852 - timestamp: 1740680254353 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022718-release.conda + timestamp: 1740719805200 +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022805-release.conda noarch: python - sha256: 19c33e23b27e240fee0b2a1d56921802ac88558dc2da417837cd590175561e16 - md5: 6b8d00b15817db11e026f824f7f0ba14 + sha256: d0b2f5c55bb0baea04e0a76469a0106ef60ba50e13f305b653fefb4903b9da60 + md5: 5f877a177817719dfa2b616176dbc409 depends: - - max-core ==25.2.0.dev2025022718 release + - max-core ==25.2.0.dev2025022805 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22981 - timestamp: 1740680254354 + size: 22994 + timestamp: 1740719805201 - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda sha256: 1895f47b7d68581a6facde5cb13ab8c2764c2e53a76bd746f8f98910dc4e08fe md5: 29097e7ea634a45cc5386b95cac6568f diff --git a/examples/gpu_functions/magic.lock b/examples/gpu_functions/magic.lock index 9473097321..6014677668 100644 --- a/examples/gpu_functions/magic.lock +++ b/examples/gpu_functions/magic.lock @@ -42,11 +42,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022805-release.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-h2d0b736_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda @@ -107,11 +107,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022805-release.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-ha32ae93_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda @@ -163,11 +163,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.1-h3f77e49_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022805-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda @@ -1301,48 +1301,48 @@ packages: license_family: APACHE size: 280830 timestamp: 1736986295869 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022718-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022805-release.conda noarch: python - sha256: f3dcb14fed5470c0fc521542cbd2f1c56ca7e46d560f46176b8f926198cb3cbd - md5: 01fe5e0cf46c84a6345e323ad1316764 + sha256: 6fe952db050b07af9045ee094df2241255d72ee0bca5663edfd2ce1c9752ec09 + md5: 8e5bdfbc3312e58ca7af7e74b4c1a62a depends: - - max-core ==25.2.0.dev2025022718 release - - max-python ==25.2.0.dev2025022718 release - - mojo-jupyter ==25.2.0.dev2025022718 release - - mblack ==25.2.0.dev2025022718 release + - max-core ==25.2.0.dev2025022805 release + - max-python ==25.2.0.dev2025022805 release + - mojo-jupyter ==25.2.0.dev2025022805 release + - mblack ==25.2.0.dev2025022805 release license: LicenseRef-Modular-Proprietary - size: 9905 - timestamp: 1740680254354 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022718-release.conda - sha256: 847d5767109a305d7bcad4ac29248a74a384034692934a0c54b00a590c27094a - md5: fc5a9ae36c7805979bd58ca55a25066f + size: 9906 + timestamp: 1740719805201 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022805-release.conda + sha256: a507f8b798257c4505a296fd1d7900bcc9695b5eaa5990d5a447f588e203ffb7 + md5: 53a62d22b682cdf446cfcbb5e07a0b4d depends: - - mblack ==25.2.0.dev2025022718 release + - mblack ==25.2.0.dev2025022805 release license: LicenseRef-Modular-Proprietary - size: 249811868 - timestamp: 1740680254354 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022718-release.conda - sha256: 250c35ecccd302e6c7de836ac200a5ece92e74508c2590c585d8803d488fd650 - md5: d88728b468c85902512a0f9b99251035 + size: 249837097 + timestamp: 1740719822740 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022805-release.conda + sha256: 2c06fc3f0a5ff31b90531e477e1bc8edcbf530a05146c9afb148819b3115d4a6 + md5: 654fe24f42ae167dd46e5858b512fd64 depends: - - mblack ==25.2.0.dev2025022718 release + - mblack ==25.2.0.dev2025022805 release license: LicenseRef-Modular-Proprietary - size: 252108573 - timestamp: 1740680207793 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022718-release.conda - sha256: fb28d9e61aa507ea84b470082d3dc96844a24fe672d4e4c57e832655c5d0a202 - md5: dd8734453f7276a258f3351cc5c506c3 + size: 252165614 + timestamp: 1740719805201 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022805-release.conda + sha256: eb316eef88826b46d84532c0cfcde6d56a875aafcfe08d140cd6b90d752f8841 + md5: efed274ef0a65e98815933cfb8b609d2 depends: - - mblack ==25.2.0.dev2025022718 release + - mblack ==25.2.0.dev2025022805 release license: LicenseRef-Modular-Proprietary - size: 217273450 - timestamp: 1740681819160 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022718-release.conda + size: 217300178 + timestamp: 1740721042829 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022805-release.conda noarch: python - sha256: 831b4d62f66f0083321121c6ba25dedab3ee41d5e9f19d9752969592214af398 - md5: f828ace91aa057e4774e84ad459adccf + sha256: 1724ba61123d73c5ae9194dddcaf61e7937123cbd49d0fb122fc78cee0673e6d + md5: 35a33686fe8cccc768034d43f604e672 depends: - - max-core ==25.2.0.dev2025022718 release + - max-core ==25.2.0.dev2025022805 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1357,7 +1357,7 @@ packages: - nvitop >=1.4.1 - opentelemetry-api >=1.29.0 - opentelemetry-exporter-otlp-proto-http >=1.27.0 - - opentelemetry-exporter-prometheus <1.0.0 + - opentelemetry-exporter-prometheus >=0.48b0,<1.1.12.0rc1 - opentelemetry-sdk >=1.29.0,<2.0 - pillow >=10.3.0 - prometheus_client >=0.21.0 @@ -1379,14 +1379,14 @@ packages: - uvloop >=0.21.0 - xgrammar ==0.1.11 license: LicenseRef-Modular-Proprietary - size: 123584411 - timestamp: 1740680254354 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022718-release.conda + size: 123624528 + timestamp: 1740719822740 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022805-release.conda noarch: python - sha256: b9e5755b7bf6314a37a90ef0250c93f5e7c693954d7a6389a97ab9ef06e23cc3 - md5: bfd2e752d0fc9516b78a17169ce9cc78 + sha256: c741ded7e064aba732999cf95e43dda28e6e9cdc59a20254fe32b8bc49739ea6 + md5: ae9b9de4204cb583f9feeb3369809182 depends: - - max-core ==25.2.0.dev2025022718 release + - max-core ==25.2.0.dev2025022805 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1401,7 +1401,7 @@ packages: - nvitop >=1.4.1 - opentelemetry-api >=1.29.0 - opentelemetry-exporter-otlp-proto-http >=1.27.0 - - opentelemetry-exporter-prometheus <1.0.0 + - opentelemetry-exporter-prometheus >=0.48b0,<1.1.12.0rc1 - opentelemetry-sdk >=1.29.0,<2.0 - pillow >=10.3.0 - prometheus_client >=0.21.0 @@ -1423,14 +1423,14 @@ packages: - uvloop >=0.21.0 - xgrammar ==0.1.11 license: LicenseRef-Modular-Proprietary - size: 126004454 - timestamp: 1740680207793 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022718-release.conda + size: 125985562 + timestamp: 1740719805201 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022805-release.conda noarch: python - sha256: 7da9f4655082bb64c2b0cc996ffefa0ce5c49744854ed77a9b0d000e27cf5a55 - md5: b16d498a148aa61dca2a6bfec5cb8e46 + sha256: c56d9f6edeb5caa166d74eefca5d472556e29b4a22a4a7e799ff9f9482af0a62 + md5: c684a1ac57d5ca9a82884bffff428154 depends: - - max-core ==25.2.0.dev2025022718 release + - max-core ==25.2.0.dev2025022805 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1445,7 +1445,7 @@ packages: - nvitop >=1.4.1 - opentelemetry-api >=1.29.0 - opentelemetry-exporter-otlp-proto-http >=1.27.0 - - opentelemetry-exporter-prometheus <1.0.0 + - opentelemetry-exporter-prometheus >=0.48b0,<1.1.12.0rc1 - opentelemetry-sdk >=1.29.0,<2.0 - pillow >=10.3.0 - prometheus_client >=0.21.0 @@ -1467,12 +1467,12 @@ packages: - uvloop >=0.21.0 - xgrammar ==0.1.11 license: LicenseRef-Modular-Proprietary - size: 112658409 - timestamp: 1740681819160 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022718-release.conda + size: 112656033 + timestamp: 1740721042829 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022805-release.conda noarch: python - sha256: ff042a8abfed0e2e36b207e3d4f59a2b4577dea7f099b08d1aaef128ab796f09 - md5: 719ca7123d53415adcdd7f0cb8396c51 + sha256: 8d5cc0e599b2ceecc816efe63442c4295304ae7b3016b42399097de4dbcf1769 + md5: 49a934446d5d99e86689f4373ecfe4c4 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -1484,19 +1484,19 @@ packages: - python license: MIT size: 130852 - timestamp: 1740680254353 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022718-release.conda + timestamp: 1740719805200 +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022805-release.conda noarch: python - sha256: 19c33e23b27e240fee0b2a1d56921802ac88558dc2da417837cd590175561e16 - md5: 6b8d00b15817db11e026f824f7f0ba14 + sha256: d0b2f5c55bb0baea04e0a76469a0106ef60ba50e13f305b653fefb4903b9da60 + md5: 5f877a177817719dfa2b616176dbc409 depends: - - max-core ==25.2.0.dev2025022718 release + - max-core ==25.2.0.dev2025022805 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22981 - timestamp: 1740680254354 + size: 22994 + timestamp: 1740719805201 - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda sha256: 1895f47b7d68581a6facde5cb13ab8c2764c2e53a76bd746f8f98910dc4e08fe md5: 29097e7ea634a45cc5386b95cac6568f diff --git a/examples/graph-api/magic.lock b/examples/graph-api/magic.lock index 9473097321..6014677668 100644 --- a/examples/graph-api/magic.lock +++ b/examples/graph-api/magic.lock @@ -42,11 +42,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022805-release.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-h2d0b736_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda @@ -107,11 +107,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022805-release.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-ha32ae93_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda @@ -163,11 +163,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.1-h3f77e49_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022805-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda @@ -1301,48 +1301,48 @@ packages: license_family: APACHE size: 280830 timestamp: 1736986295869 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022718-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022805-release.conda noarch: python - sha256: f3dcb14fed5470c0fc521542cbd2f1c56ca7e46d560f46176b8f926198cb3cbd - md5: 01fe5e0cf46c84a6345e323ad1316764 + sha256: 6fe952db050b07af9045ee094df2241255d72ee0bca5663edfd2ce1c9752ec09 + md5: 8e5bdfbc3312e58ca7af7e74b4c1a62a depends: - - max-core ==25.2.0.dev2025022718 release - - max-python ==25.2.0.dev2025022718 release - - mojo-jupyter ==25.2.0.dev2025022718 release - - mblack ==25.2.0.dev2025022718 release + - max-core ==25.2.0.dev2025022805 release + - max-python ==25.2.0.dev2025022805 release + - mojo-jupyter ==25.2.0.dev2025022805 release + - mblack ==25.2.0.dev2025022805 release license: LicenseRef-Modular-Proprietary - size: 9905 - timestamp: 1740680254354 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022718-release.conda - sha256: 847d5767109a305d7bcad4ac29248a74a384034692934a0c54b00a590c27094a - md5: fc5a9ae36c7805979bd58ca55a25066f + size: 9906 + timestamp: 1740719805201 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022805-release.conda + sha256: a507f8b798257c4505a296fd1d7900bcc9695b5eaa5990d5a447f588e203ffb7 + md5: 53a62d22b682cdf446cfcbb5e07a0b4d depends: - - mblack ==25.2.0.dev2025022718 release + - mblack ==25.2.0.dev2025022805 release license: LicenseRef-Modular-Proprietary - size: 249811868 - timestamp: 1740680254354 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022718-release.conda - sha256: 250c35ecccd302e6c7de836ac200a5ece92e74508c2590c585d8803d488fd650 - md5: d88728b468c85902512a0f9b99251035 + size: 249837097 + timestamp: 1740719822740 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022805-release.conda + sha256: 2c06fc3f0a5ff31b90531e477e1bc8edcbf530a05146c9afb148819b3115d4a6 + md5: 654fe24f42ae167dd46e5858b512fd64 depends: - - mblack ==25.2.0.dev2025022718 release + - mblack ==25.2.0.dev2025022805 release license: LicenseRef-Modular-Proprietary - size: 252108573 - timestamp: 1740680207793 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022718-release.conda - sha256: fb28d9e61aa507ea84b470082d3dc96844a24fe672d4e4c57e832655c5d0a202 - md5: dd8734453f7276a258f3351cc5c506c3 + size: 252165614 + timestamp: 1740719805201 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022805-release.conda + sha256: eb316eef88826b46d84532c0cfcde6d56a875aafcfe08d140cd6b90d752f8841 + md5: efed274ef0a65e98815933cfb8b609d2 depends: - - mblack ==25.2.0.dev2025022718 release + - mblack ==25.2.0.dev2025022805 release license: LicenseRef-Modular-Proprietary - size: 217273450 - timestamp: 1740681819160 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022718-release.conda + size: 217300178 + timestamp: 1740721042829 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022805-release.conda noarch: python - sha256: 831b4d62f66f0083321121c6ba25dedab3ee41d5e9f19d9752969592214af398 - md5: f828ace91aa057e4774e84ad459adccf + sha256: 1724ba61123d73c5ae9194dddcaf61e7937123cbd49d0fb122fc78cee0673e6d + md5: 35a33686fe8cccc768034d43f604e672 depends: - - max-core ==25.2.0.dev2025022718 release + - max-core ==25.2.0.dev2025022805 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1357,7 +1357,7 @@ packages: - nvitop >=1.4.1 - opentelemetry-api >=1.29.0 - opentelemetry-exporter-otlp-proto-http >=1.27.0 - - opentelemetry-exporter-prometheus <1.0.0 + - opentelemetry-exporter-prometheus >=0.48b0,<1.1.12.0rc1 - opentelemetry-sdk >=1.29.0,<2.0 - pillow >=10.3.0 - prometheus_client >=0.21.0 @@ -1379,14 +1379,14 @@ packages: - uvloop >=0.21.0 - xgrammar ==0.1.11 license: LicenseRef-Modular-Proprietary - size: 123584411 - timestamp: 1740680254354 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022718-release.conda + size: 123624528 + timestamp: 1740719822740 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022805-release.conda noarch: python - sha256: b9e5755b7bf6314a37a90ef0250c93f5e7c693954d7a6389a97ab9ef06e23cc3 - md5: bfd2e752d0fc9516b78a17169ce9cc78 + sha256: c741ded7e064aba732999cf95e43dda28e6e9cdc59a20254fe32b8bc49739ea6 + md5: ae9b9de4204cb583f9feeb3369809182 depends: - - max-core ==25.2.0.dev2025022718 release + - max-core ==25.2.0.dev2025022805 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1401,7 +1401,7 @@ packages: - nvitop >=1.4.1 - opentelemetry-api >=1.29.0 - opentelemetry-exporter-otlp-proto-http >=1.27.0 - - opentelemetry-exporter-prometheus <1.0.0 + - opentelemetry-exporter-prometheus >=0.48b0,<1.1.12.0rc1 - opentelemetry-sdk >=1.29.0,<2.0 - pillow >=10.3.0 - prometheus_client >=0.21.0 @@ -1423,14 +1423,14 @@ packages: - uvloop >=0.21.0 - xgrammar ==0.1.11 license: LicenseRef-Modular-Proprietary - size: 126004454 - timestamp: 1740680207793 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022718-release.conda + size: 125985562 + timestamp: 1740719805201 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022805-release.conda noarch: python - sha256: 7da9f4655082bb64c2b0cc996ffefa0ce5c49744854ed77a9b0d000e27cf5a55 - md5: b16d498a148aa61dca2a6bfec5cb8e46 + sha256: c56d9f6edeb5caa166d74eefca5d472556e29b4a22a4a7e799ff9f9482af0a62 + md5: c684a1ac57d5ca9a82884bffff428154 depends: - - max-core ==25.2.0.dev2025022718 release + - max-core ==25.2.0.dev2025022805 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1445,7 +1445,7 @@ packages: - nvitop >=1.4.1 - opentelemetry-api >=1.29.0 - opentelemetry-exporter-otlp-proto-http >=1.27.0 - - opentelemetry-exporter-prometheus <1.0.0 + - opentelemetry-exporter-prometheus >=0.48b0,<1.1.12.0rc1 - opentelemetry-sdk >=1.29.0,<2.0 - pillow >=10.3.0 - prometheus_client >=0.21.0 @@ -1467,12 +1467,12 @@ packages: - uvloop >=0.21.0 - xgrammar ==0.1.11 license: LicenseRef-Modular-Proprietary - size: 112658409 - timestamp: 1740681819160 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022718-release.conda + size: 112656033 + timestamp: 1740721042829 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022805-release.conda noarch: python - sha256: ff042a8abfed0e2e36b207e3d4f59a2b4577dea7f099b08d1aaef128ab796f09 - md5: 719ca7123d53415adcdd7f0cb8396c51 + sha256: 8d5cc0e599b2ceecc816efe63442c4295304ae7b3016b42399097de4dbcf1769 + md5: 49a934446d5d99e86689f4373ecfe4c4 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -1484,19 +1484,19 @@ packages: - python license: MIT size: 130852 - timestamp: 1740680254353 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022718-release.conda + timestamp: 1740719805200 +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022805-release.conda noarch: python - sha256: 19c33e23b27e240fee0b2a1d56921802ac88558dc2da417837cd590175561e16 - md5: 6b8d00b15817db11e026f824f7f0ba14 + sha256: d0b2f5c55bb0baea04e0a76469a0106ef60ba50e13f305b653fefb4903b9da60 + md5: 5f877a177817719dfa2b616176dbc409 depends: - - max-core ==25.2.0.dev2025022718 release + - max-core ==25.2.0.dev2025022805 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22981 - timestamp: 1740680254354 + size: 22994 + timestamp: 1740719805201 - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda sha256: 1895f47b7d68581a6facde5cb13ab8c2764c2e53a76bd746f8f98910dc4e08fe md5: 29097e7ea634a45cc5386b95cac6568f diff --git a/examples/inference/bert-c-torchscript/magic.lock b/examples/inference/bert-c-torchscript/magic.lock index d732b1f8d7..5362cc4f1e 100644 --- a/examples/inference/bert-c-torchscript/magic.lock +++ b/examples/inference/bert-c-torchscript/magic.lock @@ -137,14 +137,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/llvm-openmp-15.0.7-h0cdce71_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.10.0-h5888daf_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-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022805-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-2022.1.0-h84fe81f_915.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-devel-2022.1.0-ha770c72_916.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-include-2022.1.0-h84fe81f_915.tar.bz2 - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022805-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/mpc-1.3.1-h24ddda3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/mpfr-4.2.1-h90cbb55_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mpmath-1.3.0-pyhd8ed1ab_1.conda @@ -310,11 +310,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.6-h2e0c361_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.10.0-h5ad3122_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022805-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.16-py312hb2c0f52_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda @@ -470,11 +470,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-15.0.7-h7cfbb63_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.10.0-h286801f_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-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022805-release.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/mpc-1.3.1-h8f1351a_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/mpfr-4.2.1-hb693164_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mpmath-1.3.0-pyhd8ed1ab_1.conda @@ -4892,48 +4892,48 @@ packages: - pkg:pypi/markupsafe?source=hash-mapping size: 24048 timestamp: 1733219945697 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022718-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022805-release.conda noarch: python - sha256: f3dcb14fed5470c0fc521542cbd2f1c56ca7e46d560f46176b8f926198cb3cbd - md5: 01fe5e0cf46c84a6345e323ad1316764 + sha256: 6fe952db050b07af9045ee094df2241255d72ee0bca5663edfd2ce1c9752ec09 + md5: 8e5bdfbc3312e58ca7af7e74b4c1a62a depends: - - max-core ==25.2.0.dev2025022718 release - - max-python ==25.2.0.dev2025022718 release - - mojo-jupyter ==25.2.0.dev2025022718 release - - mblack ==25.2.0.dev2025022718 release + - max-core ==25.2.0.dev2025022805 release + - max-python ==25.2.0.dev2025022805 release + - mojo-jupyter ==25.2.0.dev2025022805 release + - mblack ==25.2.0.dev2025022805 release license: LicenseRef-Modular-Proprietary - size: 9905 - timestamp: 1740680254354 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022718-release.conda - sha256: 847d5767109a305d7bcad4ac29248a74a384034692934a0c54b00a590c27094a - md5: fc5a9ae36c7805979bd58ca55a25066f + size: 9906 + timestamp: 1740719805201 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022805-release.conda + sha256: a507f8b798257c4505a296fd1d7900bcc9695b5eaa5990d5a447f588e203ffb7 + md5: 53a62d22b682cdf446cfcbb5e07a0b4d depends: - - mblack ==25.2.0.dev2025022718 release + - mblack ==25.2.0.dev2025022805 release license: LicenseRef-Modular-Proprietary - size: 249811868 - timestamp: 1740680254354 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022718-release.conda - sha256: 250c35ecccd302e6c7de836ac200a5ece92e74508c2590c585d8803d488fd650 - md5: d88728b468c85902512a0f9b99251035 + size: 249837097 + timestamp: 1740719822740 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022805-release.conda + sha256: 2c06fc3f0a5ff31b90531e477e1bc8edcbf530a05146c9afb148819b3115d4a6 + md5: 654fe24f42ae167dd46e5858b512fd64 depends: - - mblack ==25.2.0.dev2025022718 release + - mblack ==25.2.0.dev2025022805 release license: LicenseRef-Modular-Proprietary - size: 252108573 - timestamp: 1740680207793 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022718-release.conda - sha256: fb28d9e61aa507ea84b470082d3dc96844a24fe672d4e4c57e832655c5d0a202 - md5: dd8734453f7276a258f3351cc5c506c3 + size: 252165614 + timestamp: 1740719805201 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022805-release.conda + sha256: eb316eef88826b46d84532c0cfcde6d56a875aafcfe08d140cd6b90d752f8841 + md5: efed274ef0a65e98815933cfb8b609d2 depends: - - mblack ==25.2.0.dev2025022718 release + - mblack ==25.2.0.dev2025022805 release license: LicenseRef-Modular-Proprietary - size: 217273450 - timestamp: 1740681819160 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022718-release.conda + size: 217300178 + timestamp: 1740721042829 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022805-release.conda noarch: python - sha256: 831b4d62f66f0083321121c6ba25dedab3ee41d5e9f19d9752969592214af398 - md5: f828ace91aa057e4774e84ad459adccf + sha256: 1724ba61123d73c5ae9194dddcaf61e7937123cbd49d0fb122fc78cee0673e6d + md5: 35a33686fe8cccc768034d43f604e672 depends: - - max-core ==25.2.0.dev2025022718 release + - max-core ==25.2.0.dev2025022805 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -4948,7 +4948,7 @@ packages: - nvitop >=1.4.1 - opentelemetry-api >=1.29.0 - opentelemetry-exporter-otlp-proto-http >=1.27.0 - - opentelemetry-exporter-prometheus <1.0.0 + - opentelemetry-exporter-prometheus >=0.48b0,<1.1.12.0rc1 - opentelemetry-sdk >=1.29.0,<2.0 - pillow >=10.3.0 - prometheus_client >=0.21.0 @@ -4970,14 +4970,14 @@ packages: - uvloop >=0.21.0 - xgrammar ==0.1.11 license: LicenseRef-Modular-Proprietary - size: 123584411 - timestamp: 1740680254354 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022718-release.conda + size: 123624528 + timestamp: 1740719822740 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022805-release.conda noarch: python - sha256: b9e5755b7bf6314a37a90ef0250c93f5e7c693954d7a6389a97ab9ef06e23cc3 - md5: bfd2e752d0fc9516b78a17169ce9cc78 + sha256: c741ded7e064aba732999cf95e43dda28e6e9cdc59a20254fe32b8bc49739ea6 + md5: ae9b9de4204cb583f9feeb3369809182 depends: - - max-core ==25.2.0.dev2025022718 release + - max-core ==25.2.0.dev2025022805 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -4992,7 +4992,7 @@ packages: - nvitop >=1.4.1 - opentelemetry-api >=1.29.0 - opentelemetry-exporter-otlp-proto-http >=1.27.0 - - opentelemetry-exporter-prometheus <1.0.0 + - opentelemetry-exporter-prometheus >=0.48b0,<1.1.12.0rc1 - opentelemetry-sdk >=1.29.0,<2.0 - pillow >=10.3.0 - prometheus_client >=0.21.0 @@ -5014,14 +5014,14 @@ packages: - uvloop >=0.21.0 - xgrammar ==0.1.11 license: LicenseRef-Modular-Proprietary - size: 126004454 - timestamp: 1740680207793 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022718-release.conda + size: 125985562 + timestamp: 1740719805201 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022805-release.conda noarch: python - sha256: 7da9f4655082bb64c2b0cc996ffefa0ce5c49744854ed77a9b0d000e27cf5a55 - md5: b16d498a148aa61dca2a6bfec5cb8e46 + sha256: c56d9f6edeb5caa166d74eefca5d472556e29b4a22a4a7e799ff9f9482af0a62 + md5: c684a1ac57d5ca9a82884bffff428154 depends: - - max-core ==25.2.0.dev2025022718 release + - max-core ==25.2.0.dev2025022805 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -5036,7 +5036,7 @@ packages: - nvitop >=1.4.1 - opentelemetry-api >=1.29.0 - opentelemetry-exporter-otlp-proto-http >=1.27.0 - - opentelemetry-exporter-prometheus <1.0.0 + - opentelemetry-exporter-prometheus >=0.48b0,<1.1.12.0rc1 - opentelemetry-sdk >=1.29.0,<2.0 - pillow >=10.3.0 - prometheus_client >=0.21.0 @@ -5058,12 +5058,12 @@ packages: - uvloop >=0.21.0 - xgrammar ==0.1.11 license: LicenseRef-Modular-Proprietary - size: 112658409 - timestamp: 1740681819160 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022718-release.conda + size: 112656033 + timestamp: 1740721042829 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022805-release.conda noarch: python - sha256: ff042a8abfed0e2e36b207e3d4f59a2b4577dea7f099b08d1aaef128ab796f09 - md5: 719ca7123d53415adcdd7f0cb8396c51 + sha256: 8d5cc0e599b2ceecc816efe63442c4295304ae7b3016b42399097de4dbcf1769 + md5: 49a934446d5d99e86689f4373ecfe4c4 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -5075,7 +5075,7 @@ packages: - python license: MIT size: 130852 - timestamp: 1740680254353 + timestamp: 1740719805200 - conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-2022.1.0-h84fe81f_915.tar.bz2 sha256: 767318c4f2057822a7ebc238d6065ce12c6ae60df4ab892758adb79b1057ce02 md5: b9c8f925797a93dbff45e1626b025a6b @@ -5114,18 +5114,18 @@ packages: purls: [] size: 762563 timestamp: 1652946186347 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022718-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022805-release.conda noarch: python - sha256: 19c33e23b27e240fee0b2a1d56921802ac88558dc2da417837cd590175561e16 - md5: 6b8d00b15817db11e026f824f7f0ba14 + sha256: d0b2f5c55bb0baea04e0a76469a0106ef60ba50e13f305b653fefb4903b9da60 + md5: 5f877a177817719dfa2b616176dbc409 depends: - - max-core ==25.2.0.dev2025022718 release + - max-core ==25.2.0.dev2025022805 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22981 - timestamp: 1740680254354 + size: 22994 + timestamp: 1740719805201 - conda: https://conda.anaconda.org/conda-forge/linux-64/mpc-1.3.1-h24ddda3_1.conda sha256: 1bf794ddf2c8b3a3e14ae182577c624fa92dea975537accff4bc7e5fea085212 md5: aa14b9a5196a6d8dd364164b7ce56acf diff --git a/examples/inference/bert-mojo-torchscript/magic.lock b/examples/inference/bert-mojo-torchscript/magic.lock index 092e126f9f..e822223a82 100644 --- a/examples/inference/bert-mojo-torchscript/magic.lock +++ b/examples/inference/bert-mojo-torchscript/magic.lock @@ -139,14 +139,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/llvm-openmp-15.0.7-h0cdce71_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.10.0-h5888daf_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-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022805-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-2022.1.0-h84fe81f_915.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-devel-2022.1.0-ha770c72_916.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-include-2022.1.0-h84fe81f_915.tar.bz2 - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022805-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/mpc-1.3.1-h24ddda3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/mpfr-4.2.1-h90cbb55_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mpmath-1.3.0-pyhd8ed1ab_1.conda @@ -315,11 +315,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.6-h2e0c361_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.10.0-h5ad3122_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022805-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.16-py312hb2c0f52_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda @@ -478,11 +478,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-15.0.7-h7cfbb63_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.10.0-h286801f_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-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022805-release.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/mpc-1.3.1-h8f1351a_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/mpfr-4.2.1-hb693164_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mpmath-1.3.0-pyhd8ed1ab_1.conda @@ -4885,48 +4885,48 @@ packages: - pkg:pypi/markupsafe?source=hash-mapping size: 24048 timestamp: 1733219945697 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022718-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022805-release.conda noarch: python - sha256: f3dcb14fed5470c0fc521542cbd2f1c56ca7e46d560f46176b8f926198cb3cbd - md5: 01fe5e0cf46c84a6345e323ad1316764 + sha256: 6fe952db050b07af9045ee094df2241255d72ee0bca5663edfd2ce1c9752ec09 + md5: 8e5bdfbc3312e58ca7af7e74b4c1a62a depends: - - max-core ==25.2.0.dev2025022718 release - - max-python ==25.2.0.dev2025022718 release - - mojo-jupyter ==25.2.0.dev2025022718 release - - mblack ==25.2.0.dev2025022718 release + - max-core ==25.2.0.dev2025022805 release + - max-python ==25.2.0.dev2025022805 release + - mojo-jupyter ==25.2.0.dev2025022805 release + - mblack ==25.2.0.dev2025022805 release license: LicenseRef-Modular-Proprietary - size: 9905 - timestamp: 1740680254354 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022718-release.conda - sha256: 847d5767109a305d7bcad4ac29248a74a384034692934a0c54b00a590c27094a - md5: fc5a9ae36c7805979bd58ca55a25066f + size: 9906 + timestamp: 1740719805201 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022805-release.conda + sha256: a507f8b798257c4505a296fd1d7900bcc9695b5eaa5990d5a447f588e203ffb7 + md5: 53a62d22b682cdf446cfcbb5e07a0b4d depends: - - mblack ==25.2.0.dev2025022718 release + - mblack ==25.2.0.dev2025022805 release license: LicenseRef-Modular-Proprietary - size: 249811868 - timestamp: 1740680254354 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022718-release.conda - sha256: 250c35ecccd302e6c7de836ac200a5ece92e74508c2590c585d8803d488fd650 - md5: d88728b468c85902512a0f9b99251035 + size: 249837097 + timestamp: 1740719822740 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022805-release.conda + sha256: 2c06fc3f0a5ff31b90531e477e1bc8edcbf530a05146c9afb148819b3115d4a6 + md5: 654fe24f42ae167dd46e5858b512fd64 depends: - - mblack ==25.2.0.dev2025022718 release + - mblack ==25.2.0.dev2025022805 release license: LicenseRef-Modular-Proprietary - size: 252108573 - timestamp: 1740680207793 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022718-release.conda - sha256: fb28d9e61aa507ea84b470082d3dc96844a24fe672d4e4c57e832655c5d0a202 - md5: dd8734453f7276a258f3351cc5c506c3 + size: 252165614 + timestamp: 1740719805201 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022805-release.conda + sha256: eb316eef88826b46d84532c0cfcde6d56a875aafcfe08d140cd6b90d752f8841 + md5: efed274ef0a65e98815933cfb8b609d2 depends: - - mblack ==25.2.0.dev2025022718 release + - mblack ==25.2.0.dev2025022805 release license: LicenseRef-Modular-Proprietary - size: 217273450 - timestamp: 1740681819160 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022718-release.conda + size: 217300178 + timestamp: 1740721042829 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022805-release.conda noarch: python - sha256: 831b4d62f66f0083321121c6ba25dedab3ee41d5e9f19d9752969592214af398 - md5: f828ace91aa057e4774e84ad459adccf + sha256: 1724ba61123d73c5ae9194dddcaf61e7937123cbd49d0fb122fc78cee0673e6d + md5: 35a33686fe8cccc768034d43f604e672 depends: - - max-core ==25.2.0.dev2025022718 release + - max-core ==25.2.0.dev2025022805 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -4941,7 +4941,7 @@ packages: - nvitop >=1.4.1 - opentelemetry-api >=1.29.0 - opentelemetry-exporter-otlp-proto-http >=1.27.0 - - opentelemetry-exporter-prometheus <1.0.0 + - opentelemetry-exporter-prometheus >=0.48b0,<1.1.12.0rc1 - opentelemetry-sdk >=1.29.0,<2.0 - pillow >=10.3.0 - prometheus_client >=0.21.0 @@ -4963,14 +4963,14 @@ packages: - uvloop >=0.21.0 - xgrammar ==0.1.11 license: LicenseRef-Modular-Proprietary - size: 123584411 - timestamp: 1740680254354 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022718-release.conda + size: 123624528 + timestamp: 1740719822740 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022805-release.conda noarch: python - sha256: b9e5755b7bf6314a37a90ef0250c93f5e7c693954d7a6389a97ab9ef06e23cc3 - md5: bfd2e752d0fc9516b78a17169ce9cc78 + sha256: c741ded7e064aba732999cf95e43dda28e6e9cdc59a20254fe32b8bc49739ea6 + md5: ae9b9de4204cb583f9feeb3369809182 depends: - - max-core ==25.2.0.dev2025022718 release + - max-core ==25.2.0.dev2025022805 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -4985,7 +4985,7 @@ packages: - nvitop >=1.4.1 - opentelemetry-api >=1.29.0 - opentelemetry-exporter-otlp-proto-http >=1.27.0 - - opentelemetry-exporter-prometheus <1.0.0 + - opentelemetry-exporter-prometheus >=0.48b0,<1.1.12.0rc1 - opentelemetry-sdk >=1.29.0,<2.0 - pillow >=10.3.0 - prometheus_client >=0.21.0 @@ -5007,14 +5007,14 @@ packages: - uvloop >=0.21.0 - xgrammar ==0.1.11 license: LicenseRef-Modular-Proprietary - size: 126004454 - timestamp: 1740680207793 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022718-release.conda + size: 125985562 + timestamp: 1740719805201 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022805-release.conda noarch: python - sha256: 7da9f4655082bb64c2b0cc996ffefa0ce5c49744854ed77a9b0d000e27cf5a55 - md5: b16d498a148aa61dca2a6bfec5cb8e46 + sha256: c56d9f6edeb5caa166d74eefca5d472556e29b4a22a4a7e799ff9f9482af0a62 + md5: c684a1ac57d5ca9a82884bffff428154 depends: - - max-core ==25.2.0.dev2025022718 release + - max-core ==25.2.0.dev2025022805 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -5029,7 +5029,7 @@ packages: - nvitop >=1.4.1 - opentelemetry-api >=1.29.0 - opentelemetry-exporter-otlp-proto-http >=1.27.0 - - opentelemetry-exporter-prometheus <1.0.0 + - opentelemetry-exporter-prometheus >=0.48b0,<1.1.12.0rc1 - opentelemetry-sdk >=1.29.0,<2.0 - pillow >=10.3.0 - prometheus_client >=0.21.0 @@ -5051,12 +5051,12 @@ packages: - uvloop >=0.21.0 - xgrammar ==0.1.11 license: LicenseRef-Modular-Proprietary - size: 112658409 - timestamp: 1740681819160 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022718-release.conda + size: 112656033 + timestamp: 1740721042829 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022805-release.conda noarch: python - sha256: ff042a8abfed0e2e36b207e3d4f59a2b4577dea7f099b08d1aaef128ab796f09 - md5: 719ca7123d53415adcdd7f0cb8396c51 + sha256: 8d5cc0e599b2ceecc816efe63442c4295304ae7b3016b42399097de4dbcf1769 + md5: 49a934446d5d99e86689f4373ecfe4c4 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -5068,7 +5068,7 @@ packages: - python license: MIT size: 130852 - timestamp: 1740680254353 + timestamp: 1740719805200 - conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-2022.1.0-h84fe81f_915.tar.bz2 sha256: 767318c4f2057822a7ebc238d6065ce12c6ae60df4ab892758adb79b1057ce02 md5: b9c8f925797a93dbff45e1626b025a6b @@ -5107,18 +5107,18 @@ packages: purls: [] size: 762563 timestamp: 1652946186347 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022718-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022805-release.conda noarch: python - sha256: 19c33e23b27e240fee0b2a1d56921802ac88558dc2da417837cd590175561e16 - md5: 6b8d00b15817db11e026f824f7f0ba14 + sha256: d0b2f5c55bb0baea04e0a76469a0106ef60ba50e13f305b653fefb4903b9da60 + md5: 5f877a177817719dfa2b616176dbc409 depends: - - max-core ==25.2.0.dev2025022718 release + - max-core ==25.2.0.dev2025022805 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22981 - timestamp: 1740680254354 + size: 22994 + timestamp: 1740719805201 - conda: https://conda.anaconda.org/conda-forge/linux-64/mpc-1.3.1-h24ddda3_1.conda sha256: 1bf794ddf2c8b3a3e14ae182577c624fa92dea975537accff4bc7e5fea085212 md5: aa14b9a5196a6d8dd364164b7ce56acf diff --git a/examples/inference/bert-python-torchscript/magic.lock b/examples/inference/bert-python-torchscript/magic.lock index 092e126f9f..e822223a82 100644 --- a/examples/inference/bert-python-torchscript/magic.lock +++ b/examples/inference/bert-python-torchscript/magic.lock @@ -139,14 +139,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/llvm-openmp-15.0.7-h0cdce71_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.10.0-h5888daf_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-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022805-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-2022.1.0-h84fe81f_915.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-devel-2022.1.0-ha770c72_916.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-include-2022.1.0-h84fe81f_915.tar.bz2 - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022805-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/mpc-1.3.1-h24ddda3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/mpfr-4.2.1-h90cbb55_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mpmath-1.3.0-pyhd8ed1ab_1.conda @@ -315,11 +315,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.6-h2e0c361_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.10.0-h5ad3122_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022805-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.16-py312hb2c0f52_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda @@ -478,11 +478,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-15.0.7-h7cfbb63_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.10.0-h286801f_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-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022805-release.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/mpc-1.3.1-h8f1351a_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/mpfr-4.2.1-hb693164_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mpmath-1.3.0-pyhd8ed1ab_1.conda @@ -4885,48 +4885,48 @@ packages: - pkg:pypi/markupsafe?source=hash-mapping size: 24048 timestamp: 1733219945697 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022718-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022805-release.conda noarch: python - sha256: f3dcb14fed5470c0fc521542cbd2f1c56ca7e46d560f46176b8f926198cb3cbd - md5: 01fe5e0cf46c84a6345e323ad1316764 + sha256: 6fe952db050b07af9045ee094df2241255d72ee0bca5663edfd2ce1c9752ec09 + md5: 8e5bdfbc3312e58ca7af7e74b4c1a62a depends: - - max-core ==25.2.0.dev2025022718 release - - max-python ==25.2.0.dev2025022718 release - - mojo-jupyter ==25.2.0.dev2025022718 release - - mblack ==25.2.0.dev2025022718 release + - max-core ==25.2.0.dev2025022805 release + - max-python ==25.2.0.dev2025022805 release + - mojo-jupyter ==25.2.0.dev2025022805 release + - mblack ==25.2.0.dev2025022805 release license: LicenseRef-Modular-Proprietary - size: 9905 - timestamp: 1740680254354 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022718-release.conda - sha256: 847d5767109a305d7bcad4ac29248a74a384034692934a0c54b00a590c27094a - md5: fc5a9ae36c7805979bd58ca55a25066f + size: 9906 + timestamp: 1740719805201 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022805-release.conda + sha256: a507f8b798257c4505a296fd1d7900bcc9695b5eaa5990d5a447f588e203ffb7 + md5: 53a62d22b682cdf446cfcbb5e07a0b4d depends: - - mblack ==25.2.0.dev2025022718 release + - mblack ==25.2.0.dev2025022805 release license: LicenseRef-Modular-Proprietary - size: 249811868 - timestamp: 1740680254354 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022718-release.conda - sha256: 250c35ecccd302e6c7de836ac200a5ece92e74508c2590c585d8803d488fd650 - md5: d88728b468c85902512a0f9b99251035 + size: 249837097 + timestamp: 1740719822740 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022805-release.conda + sha256: 2c06fc3f0a5ff31b90531e477e1bc8edcbf530a05146c9afb148819b3115d4a6 + md5: 654fe24f42ae167dd46e5858b512fd64 depends: - - mblack ==25.2.0.dev2025022718 release + - mblack ==25.2.0.dev2025022805 release license: LicenseRef-Modular-Proprietary - size: 252108573 - timestamp: 1740680207793 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022718-release.conda - sha256: fb28d9e61aa507ea84b470082d3dc96844a24fe672d4e4c57e832655c5d0a202 - md5: dd8734453f7276a258f3351cc5c506c3 + size: 252165614 + timestamp: 1740719805201 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022805-release.conda + sha256: eb316eef88826b46d84532c0cfcde6d56a875aafcfe08d140cd6b90d752f8841 + md5: efed274ef0a65e98815933cfb8b609d2 depends: - - mblack ==25.2.0.dev2025022718 release + - mblack ==25.2.0.dev2025022805 release license: LicenseRef-Modular-Proprietary - size: 217273450 - timestamp: 1740681819160 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022718-release.conda + size: 217300178 + timestamp: 1740721042829 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022805-release.conda noarch: python - sha256: 831b4d62f66f0083321121c6ba25dedab3ee41d5e9f19d9752969592214af398 - md5: f828ace91aa057e4774e84ad459adccf + sha256: 1724ba61123d73c5ae9194dddcaf61e7937123cbd49d0fb122fc78cee0673e6d + md5: 35a33686fe8cccc768034d43f604e672 depends: - - max-core ==25.2.0.dev2025022718 release + - max-core ==25.2.0.dev2025022805 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -4941,7 +4941,7 @@ packages: - nvitop >=1.4.1 - opentelemetry-api >=1.29.0 - opentelemetry-exporter-otlp-proto-http >=1.27.0 - - opentelemetry-exporter-prometheus <1.0.0 + - opentelemetry-exporter-prometheus >=0.48b0,<1.1.12.0rc1 - opentelemetry-sdk >=1.29.0,<2.0 - pillow >=10.3.0 - prometheus_client >=0.21.0 @@ -4963,14 +4963,14 @@ packages: - uvloop >=0.21.0 - xgrammar ==0.1.11 license: LicenseRef-Modular-Proprietary - size: 123584411 - timestamp: 1740680254354 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022718-release.conda + size: 123624528 + timestamp: 1740719822740 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022805-release.conda noarch: python - sha256: b9e5755b7bf6314a37a90ef0250c93f5e7c693954d7a6389a97ab9ef06e23cc3 - md5: bfd2e752d0fc9516b78a17169ce9cc78 + sha256: c741ded7e064aba732999cf95e43dda28e6e9cdc59a20254fe32b8bc49739ea6 + md5: ae9b9de4204cb583f9feeb3369809182 depends: - - max-core ==25.2.0.dev2025022718 release + - max-core ==25.2.0.dev2025022805 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -4985,7 +4985,7 @@ packages: - nvitop >=1.4.1 - opentelemetry-api >=1.29.0 - opentelemetry-exporter-otlp-proto-http >=1.27.0 - - opentelemetry-exporter-prometheus <1.0.0 + - opentelemetry-exporter-prometheus >=0.48b0,<1.1.12.0rc1 - opentelemetry-sdk >=1.29.0,<2.0 - pillow >=10.3.0 - prometheus_client >=0.21.0 @@ -5007,14 +5007,14 @@ packages: - uvloop >=0.21.0 - xgrammar ==0.1.11 license: LicenseRef-Modular-Proprietary - size: 126004454 - timestamp: 1740680207793 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022718-release.conda + size: 125985562 + timestamp: 1740719805201 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022805-release.conda noarch: python - sha256: 7da9f4655082bb64c2b0cc996ffefa0ce5c49744854ed77a9b0d000e27cf5a55 - md5: b16d498a148aa61dca2a6bfec5cb8e46 + sha256: c56d9f6edeb5caa166d74eefca5d472556e29b4a22a4a7e799ff9f9482af0a62 + md5: c684a1ac57d5ca9a82884bffff428154 depends: - - max-core ==25.2.0.dev2025022718 release + - max-core ==25.2.0.dev2025022805 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -5029,7 +5029,7 @@ packages: - nvitop >=1.4.1 - opentelemetry-api >=1.29.0 - opentelemetry-exporter-otlp-proto-http >=1.27.0 - - opentelemetry-exporter-prometheus <1.0.0 + - opentelemetry-exporter-prometheus >=0.48b0,<1.1.12.0rc1 - opentelemetry-sdk >=1.29.0,<2.0 - pillow >=10.3.0 - prometheus_client >=0.21.0 @@ -5051,12 +5051,12 @@ packages: - uvloop >=0.21.0 - xgrammar ==0.1.11 license: LicenseRef-Modular-Proprietary - size: 112658409 - timestamp: 1740681819160 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022718-release.conda + size: 112656033 + timestamp: 1740721042829 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022805-release.conda noarch: python - sha256: ff042a8abfed0e2e36b207e3d4f59a2b4577dea7f099b08d1aaef128ab796f09 - md5: 719ca7123d53415adcdd7f0cb8396c51 + sha256: 8d5cc0e599b2ceecc816efe63442c4295304ae7b3016b42399097de4dbcf1769 + md5: 49a934446d5d99e86689f4373ecfe4c4 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -5068,7 +5068,7 @@ packages: - python license: MIT size: 130852 - timestamp: 1740680254353 + timestamp: 1740719805200 - conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-2022.1.0-h84fe81f_915.tar.bz2 sha256: 767318c4f2057822a7ebc238d6065ce12c6ae60df4ab892758adb79b1057ce02 md5: b9c8f925797a93dbff45e1626b025a6b @@ -5107,18 +5107,18 @@ packages: purls: [] size: 762563 timestamp: 1652946186347 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022718-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022805-release.conda noarch: python - sha256: 19c33e23b27e240fee0b2a1d56921802ac88558dc2da417837cd590175561e16 - md5: 6b8d00b15817db11e026f824f7f0ba14 + sha256: d0b2f5c55bb0baea04e0a76469a0106ef60ba50e13f305b653fefb4903b9da60 + md5: 5f877a177817719dfa2b616176dbc409 depends: - - max-core ==25.2.0.dev2025022718 release + - max-core ==25.2.0.dev2025022805 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22981 - timestamp: 1740680254354 + size: 22994 + timestamp: 1740719805201 - conda: https://conda.anaconda.org/conda-forge/linux-64/mpc-1.3.1-h24ddda3_1.conda sha256: 1bf794ddf2c8b3a3e14ae182577c624fa92dea975537accff4bc7e5fea085212 md5: aa14b9a5196a6d8dd364164b7ce56acf diff --git a/examples/inference/resnet50-python-torchscript/magic.lock b/examples/inference/resnet50-python-torchscript/magic.lock index 87999c426a..d2a25733af 100644 --- a/examples/inference/resnet50-python-torchscript/magic.lock +++ b/examples/inference/resnet50-python-torchscript/magic.lock @@ -148,14 +148,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/llvm-openmp-15.0.7-h0cdce71_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.10.0-h5888daf_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-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022805-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-2022.1.0-h84fe81f_915.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-devel-2022.1.0-ha770c72_916.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-include-2022.1.0-h84fe81f_915.tar.bz2 - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022805-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/mpc-1.3.1-h24ddda3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/mpfr-4.2.1-h90cbb55_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mpmath-1.3.0-pyhd8ed1ab_1.conda @@ -338,11 +338,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.6-h2e0c361_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.10.0-h5ad3122_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022805-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.16-py312hb2c0f52_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda @@ -515,11 +515,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-15.0.7-h7cfbb63_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.10.0-h286801f_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-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022805-release.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/mpc-1.3.1-h8f1351a_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/mpfr-4.2.1-hb693164_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mpmath-1.3.0-pyhd8ed1ab_1.conda @@ -5304,48 +5304,48 @@ packages: - pkg:pypi/markupsafe?source=hash-mapping size: 24048 timestamp: 1733219945697 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022718-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022805-release.conda noarch: python - sha256: f3dcb14fed5470c0fc521542cbd2f1c56ca7e46d560f46176b8f926198cb3cbd - md5: 01fe5e0cf46c84a6345e323ad1316764 + sha256: 6fe952db050b07af9045ee094df2241255d72ee0bca5663edfd2ce1c9752ec09 + md5: 8e5bdfbc3312e58ca7af7e74b4c1a62a depends: - - max-core ==25.2.0.dev2025022718 release - - max-python ==25.2.0.dev2025022718 release - - mojo-jupyter ==25.2.0.dev2025022718 release - - mblack ==25.2.0.dev2025022718 release + - max-core ==25.2.0.dev2025022805 release + - max-python ==25.2.0.dev2025022805 release + - mojo-jupyter ==25.2.0.dev2025022805 release + - mblack ==25.2.0.dev2025022805 release license: LicenseRef-Modular-Proprietary - size: 9905 - timestamp: 1740680254354 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022718-release.conda - sha256: 847d5767109a305d7bcad4ac29248a74a384034692934a0c54b00a590c27094a - md5: fc5a9ae36c7805979bd58ca55a25066f + size: 9906 + timestamp: 1740719805201 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022805-release.conda + sha256: a507f8b798257c4505a296fd1d7900bcc9695b5eaa5990d5a447f588e203ffb7 + md5: 53a62d22b682cdf446cfcbb5e07a0b4d depends: - - mblack ==25.2.0.dev2025022718 release + - mblack ==25.2.0.dev2025022805 release license: LicenseRef-Modular-Proprietary - size: 249811868 - timestamp: 1740680254354 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022718-release.conda - sha256: 250c35ecccd302e6c7de836ac200a5ece92e74508c2590c585d8803d488fd650 - md5: d88728b468c85902512a0f9b99251035 + size: 249837097 + timestamp: 1740719822740 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022805-release.conda + sha256: 2c06fc3f0a5ff31b90531e477e1bc8edcbf530a05146c9afb148819b3115d4a6 + md5: 654fe24f42ae167dd46e5858b512fd64 depends: - - mblack ==25.2.0.dev2025022718 release + - mblack ==25.2.0.dev2025022805 release license: LicenseRef-Modular-Proprietary - size: 252108573 - timestamp: 1740680207793 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022718-release.conda - sha256: fb28d9e61aa507ea84b470082d3dc96844a24fe672d4e4c57e832655c5d0a202 - md5: dd8734453f7276a258f3351cc5c506c3 + size: 252165614 + timestamp: 1740719805201 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022805-release.conda + sha256: eb316eef88826b46d84532c0cfcde6d56a875aafcfe08d140cd6b90d752f8841 + md5: efed274ef0a65e98815933cfb8b609d2 depends: - - mblack ==25.2.0.dev2025022718 release + - mblack ==25.2.0.dev2025022805 release license: LicenseRef-Modular-Proprietary - size: 217273450 - timestamp: 1740681819160 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022718-release.conda + size: 217300178 + timestamp: 1740721042829 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022805-release.conda noarch: python - sha256: 831b4d62f66f0083321121c6ba25dedab3ee41d5e9f19d9752969592214af398 - md5: f828ace91aa057e4774e84ad459adccf + sha256: 1724ba61123d73c5ae9194dddcaf61e7937123cbd49d0fb122fc78cee0673e6d + md5: 35a33686fe8cccc768034d43f604e672 depends: - - max-core ==25.2.0.dev2025022718 release + - max-core ==25.2.0.dev2025022805 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -5360,7 +5360,7 @@ packages: - nvitop >=1.4.1 - opentelemetry-api >=1.29.0 - opentelemetry-exporter-otlp-proto-http >=1.27.0 - - opentelemetry-exporter-prometheus <1.0.0 + - opentelemetry-exporter-prometheus >=0.48b0,<1.1.12.0rc1 - opentelemetry-sdk >=1.29.0,<2.0 - pillow >=10.3.0 - prometheus_client >=0.21.0 @@ -5382,14 +5382,14 @@ packages: - uvloop >=0.21.0 - xgrammar ==0.1.11 license: LicenseRef-Modular-Proprietary - size: 123584411 - timestamp: 1740680254354 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022718-release.conda + size: 123624528 + timestamp: 1740719822740 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022805-release.conda noarch: python - sha256: b9e5755b7bf6314a37a90ef0250c93f5e7c693954d7a6389a97ab9ef06e23cc3 - md5: bfd2e752d0fc9516b78a17169ce9cc78 + sha256: c741ded7e064aba732999cf95e43dda28e6e9cdc59a20254fe32b8bc49739ea6 + md5: ae9b9de4204cb583f9feeb3369809182 depends: - - max-core ==25.2.0.dev2025022718 release + - max-core ==25.2.0.dev2025022805 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -5404,7 +5404,7 @@ packages: - nvitop >=1.4.1 - opentelemetry-api >=1.29.0 - opentelemetry-exporter-otlp-proto-http >=1.27.0 - - opentelemetry-exporter-prometheus <1.0.0 + - opentelemetry-exporter-prometheus >=0.48b0,<1.1.12.0rc1 - opentelemetry-sdk >=1.29.0,<2.0 - pillow >=10.3.0 - prometheus_client >=0.21.0 @@ -5426,14 +5426,14 @@ packages: - uvloop >=0.21.0 - xgrammar ==0.1.11 license: LicenseRef-Modular-Proprietary - size: 126004454 - timestamp: 1740680207793 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022718-release.conda + size: 125985562 + timestamp: 1740719805201 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022805-release.conda noarch: python - sha256: 7da9f4655082bb64c2b0cc996ffefa0ce5c49744854ed77a9b0d000e27cf5a55 - md5: b16d498a148aa61dca2a6bfec5cb8e46 + sha256: c56d9f6edeb5caa166d74eefca5d472556e29b4a22a4a7e799ff9f9482af0a62 + md5: c684a1ac57d5ca9a82884bffff428154 depends: - - max-core ==25.2.0.dev2025022718 release + - max-core ==25.2.0.dev2025022805 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -5448,7 +5448,7 @@ packages: - nvitop >=1.4.1 - opentelemetry-api >=1.29.0 - opentelemetry-exporter-otlp-proto-http >=1.27.0 - - opentelemetry-exporter-prometheus <1.0.0 + - opentelemetry-exporter-prometheus >=0.48b0,<1.1.12.0rc1 - opentelemetry-sdk >=1.29.0,<2.0 - pillow >=10.3.0 - prometheus_client >=0.21.0 @@ -5470,12 +5470,12 @@ packages: - uvloop >=0.21.0 - xgrammar ==0.1.11 license: LicenseRef-Modular-Proprietary - size: 112658409 - timestamp: 1740681819160 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022718-release.conda + size: 112656033 + timestamp: 1740721042829 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022805-release.conda noarch: python - sha256: ff042a8abfed0e2e36b207e3d4f59a2b4577dea7f099b08d1aaef128ab796f09 - md5: 719ca7123d53415adcdd7f0cb8396c51 + sha256: 8d5cc0e599b2ceecc816efe63442c4295304ae7b3016b42399097de4dbcf1769 + md5: 49a934446d5d99e86689f4373ecfe4c4 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -5487,7 +5487,7 @@ packages: - python license: MIT size: 130852 - timestamp: 1740680254353 + timestamp: 1740719805200 - conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-2022.1.0-h84fe81f_915.tar.bz2 sha256: 767318c4f2057822a7ebc238d6065ce12c6ae60df4ab892758adb79b1057ce02 md5: b9c8f925797a93dbff45e1626b025a6b @@ -5526,18 +5526,18 @@ packages: purls: [] size: 762563 timestamp: 1652946186347 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022718-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022805-release.conda noarch: python - sha256: 19c33e23b27e240fee0b2a1d56921802ac88558dc2da417837cd590175561e16 - md5: 6b8d00b15817db11e026f824f7f0ba14 + sha256: d0b2f5c55bb0baea04e0a76469a0106ef60ba50e13f305b653fefb4903b9da60 + md5: 5f877a177817719dfa2b616176dbc409 depends: - - max-core ==25.2.0.dev2025022718 release + - max-core ==25.2.0.dev2025022805 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22981 - timestamp: 1740680254354 + size: 22994 + timestamp: 1740719805201 - conda: https://conda.anaconda.org/conda-forge/linux-64/mpc-1.3.1-h24ddda3_1.conda sha256: 1bf794ddf2c8b3a3e14ae182577c624fa92dea975537accff4bc7e5fea085212 md5: aa14b9a5196a6d8dd364164b7ce56acf diff --git a/examples/inference/stable-diffusion-mojo-onnx/magic.lock b/examples/inference/stable-diffusion-mojo-onnx/magic.lock index 9220a3345d..10dde0f00b 100644 --- a/examples/inference/stable-diffusion-mojo-onnx/magic.lock +++ b/examples/inference/stable-diffusion-mojo-onnx/magic.lock @@ -148,14 +148,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/llvm-openmp-15.0.7-h0cdce71_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.10.0-h5888daf_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-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022805-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-2022.1.0-h84fe81f_915.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-devel-2022.1.0-ha770c72_916.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-include-2022.1.0-h84fe81f_915.tar.bz2 - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022805-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/mpc-1.3.1-h24ddda3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/mpfr-4.2.1-h90cbb55_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mpmath-1.3.0-pyhd8ed1ab_1.conda @@ -338,11 +338,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.6-h2e0c361_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.10.0-h5ad3122_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022805-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.16-py312hb2c0f52_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda @@ -515,11 +515,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-15.0.7-h7cfbb63_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.10.0-h286801f_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-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022805-release.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/mpc-1.3.1-h8f1351a_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/mpfr-4.2.1-hb693164_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mpmath-1.3.0-pyhd8ed1ab_1.conda @@ -5350,48 +5350,48 @@ packages: - pkg:pypi/markupsafe?source=hash-mapping size: 24048 timestamp: 1733219945697 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022718-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022805-release.conda noarch: python - sha256: f3dcb14fed5470c0fc521542cbd2f1c56ca7e46d560f46176b8f926198cb3cbd - md5: 01fe5e0cf46c84a6345e323ad1316764 + sha256: 6fe952db050b07af9045ee094df2241255d72ee0bca5663edfd2ce1c9752ec09 + md5: 8e5bdfbc3312e58ca7af7e74b4c1a62a depends: - - max-core ==25.2.0.dev2025022718 release - - max-python ==25.2.0.dev2025022718 release - - mojo-jupyter ==25.2.0.dev2025022718 release - - mblack ==25.2.0.dev2025022718 release + - max-core ==25.2.0.dev2025022805 release + - max-python ==25.2.0.dev2025022805 release + - mojo-jupyter ==25.2.0.dev2025022805 release + - mblack ==25.2.0.dev2025022805 release license: LicenseRef-Modular-Proprietary - size: 9905 - timestamp: 1740680254354 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022718-release.conda - sha256: 847d5767109a305d7bcad4ac29248a74a384034692934a0c54b00a590c27094a - md5: fc5a9ae36c7805979bd58ca55a25066f + size: 9906 + timestamp: 1740719805201 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022805-release.conda + sha256: a507f8b798257c4505a296fd1d7900bcc9695b5eaa5990d5a447f588e203ffb7 + md5: 53a62d22b682cdf446cfcbb5e07a0b4d depends: - - mblack ==25.2.0.dev2025022718 release + - mblack ==25.2.0.dev2025022805 release license: LicenseRef-Modular-Proprietary - size: 249811868 - timestamp: 1740680254354 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022718-release.conda - sha256: 250c35ecccd302e6c7de836ac200a5ece92e74508c2590c585d8803d488fd650 - md5: d88728b468c85902512a0f9b99251035 + size: 249837097 + timestamp: 1740719822740 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022805-release.conda + sha256: 2c06fc3f0a5ff31b90531e477e1bc8edcbf530a05146c9afb148819b3115d4a6 + md5: 654fe24f42ae167dd46e5858b512fd64 depends: - - mblack ==25.2.0.dev2025022718 release + - mblack ==25.2.0.dev2025022805 release license: LicenseRef-Modular-Proprietary - size: 252108573 - timestamp: 1740680207793 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022718-release.conda - sha256: fb28d9e61aa507ea84b470082d3dc96844a24fe672d4e4c57e832655c5d0a202 - md5: dd8734453f7276a258f3351cc5c506c3 + size: 252165614 + timestamp: 1740719805201 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022805-release.conda + sha256: eb316eef88826b46d84532c0cfcde6d56a875aafcfe08d140cd6b90d752f8841 + md5: efed274ef0a65e98815933cfb8b609d2 depends: - - mblack ==25.2.0.dev2025022718 release + - mblack ==25.2.0.dev2025022805 release license: LicenseRef-Modular-Proprietary - size: 217273450 - timestamp: 1740681819160 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022718-release.conda + size: 217300178 + timestamp: 1740721042829 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022805-release.conda noarch: python - sha256: 831b4d62f66f0083321121c6ba25dedab3ee41d5e9f19d9752969592214af398 - md5: f828ace91aa057e4774e84ad459adccf + sha256: 1724ba61123d73c5ae9194dddcaf61e7937123cbd49d0fb122fc78cee0673e6d + md5: 35a33686fe8cccc768034d43f604e672 depends: - - max-core ==25.2.0.dev2025022718 release + - max-core ==25.2.0.dev2025022805 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -5406,7 +5406,7 @@ packages: - nvitop >=1.4.1 - opentelemetry-api >=1.29.0 - opentelemetry-exporter-otlp-proto-http >=1.27.0 - - opentelemetry-exporter-prometheus <1.0.0 + - opentelemetry-exporter-prometheus >=0.48b0,<1.1.12.0rc1 - opentelemetry-sdk >=1.29.0,<2.0 - pillow >=10.3.0 - prometheus_client >=0.21.0 @@ -5428,14 +5428,14 @@ packages: - uvloop >=0.21.0 - xgrammar ==0.1.11 license: LicenseRef-Modular-Proprietary - size: 123584411 - timestamp: 1740680254354 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022718-release.conda + size: 123624528 + timestamp: 1740719822740 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022805-release.conda noarch: python - sha256: b9e5755b7bf6314a37a90ef0250c93f5e7c693954d7a6389a97ab9ef06e23cc3 - md5: bfd2e752d0fc9516b78a17169ce9cc78 + sha256: c741ded7e064aba732999cf95e43dda28e6e9cdc59a20254fe32b8bc49739ea6 + md5: ae9b9de4204cb583f9feeb3369809182 depends: - - max-core ==25.2.0.dev2025022718 release + - max-core ==25.2.0.dev2025022805 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -5450,7 +5450,7 @@ packages: - nvitop >=1.4.1 - opentelemetry-api >=1.29.0 - opentelemetry-exporter-otlp-proto-http >=1.27.0 - - opentelemetry-exporter-prometheus <1.0.0 + - opentelemetry-exporter-prometheus >=0.48b0,<1.1.12.0rc1 - opentelemetry-sdk >=1.29.0,<2.0 - pillow >=10.3.0 - prometheus_client >=0.21.0 @@ -5472,14 +5472,14 @@ packages: - uvloop >=0.21.0 - xgrammar ==0.1.11 license: LicenseRef-Modular-Proprietary - size: 126004454 - timestamp: 1740680207793 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022718-release.conda + size: 125985562 + timestamp: 1740719805201 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022805-release.conda noarch: python - sha256: 7da9f4655082bb64c2b0cc996ffefa0ce5c49744854ed77a9b0d000e27cf5a55 - md5: b16d498a148aa61dca2a6bfec5cb8e46 + sha256: c56d9f6edeb5caa166d74eefca5d472556e29b4a22a4a7e799ff9f9482af0a62 + md5: c684a1ac57d5ca9a82884bffff428154 depends: - - max-core ==25.2.0.dev2025022718 release + - max-core ==25.2.0.dev2025022805 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -5494,7 +5494,7 @@ packages: - nvitop >=1.4.1 - opentelemetry-api >=1.29.0 - opentelemetry-exporter-otlp-proto-http >=1.27.0 - - opentelemetry-exporter-prometheus <1.0.0 + - opentelemetry-exporter-prometheus >=0.48b0,<1.1.12.0rc1 - opentelemetry-sdk >=1.29.0,<2.0 - pillow >=10.3.0 - prometheus_client >=0.21.0 @@ -5516,12 +5516,12 @@ packages: - uvloop >=0.21.0 - xgrammar ==0.1.11 license: LicenseRef-Modular-Proprietary - size: 112658409 - timestamp: 1740681819160 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022718-release.conda + size: 112656033 + timestamp: 1740721042829 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022805-release.conda noarch: python - sha256: ff042a8abfed0e2e36b207e3d4f59a2b4577dea7f099b08d1aaef128ab796f09 - md5: 719ca7123d53415adcdd7f0cb8396c51 + sha256: 8d5cc0e599b2ceecc816efe63442c4295304ae7b3016b42399097de4dbcf1769 + md5: 49a934446d5d99e86689f4373ecfe4c4 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -5533,7 +5533,7 @@ packages: - python license: MIT size: 130852 - timestamp: 1740680254353 + timestamp: 1740719805200 - conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-2022.1.0-h84fe81f_915.tar.bz2 sha256: 767318c4f2057822a7ebc238d6065ce12c6ae60df4ab892758adb79b1057ce02 md5: b9c8f925797a93dbff45e1626b025a6b @@ -5572,18 +5572,18 @@ packages: purls: [] size: 762563 timestamp: 1652946186347 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022718-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022805-release.conda noarch: python - sha256: 19c33e23b27e240fee0b2a1d56921802ac88558dc2da417837cd590175561e16 - md5: 6b8d00b15817db11e026f824f7f0ba14 + sha256: d0b2f5c55bb0baea04e0a76469a0106ef60ba50e13f305b653fefb4903b9da60 + md5: 5f877a177817719dfa2b616176dbc409 depends: - - max-core ==25.2.0.dev2025022718 release + - max-core ==25.2.0.dev2025022805 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22981 - timestamp: 1740680254354 + size: 22994 + timestamp: 1740719805201 - conda: https://conda.anaconda.org/conda-forge/linux-64/mpc-1.3.1-h24ddda3_1.conda sha256: 1bf794ddf2c8b3a3e14ae182577c624fa92dea975537accff4bc7e5fea085212 md5: aa14b9a5196a6d8dd364164b7ce56acf diff --git a/examples/inference/stable-diffusion-python-onnx/magic.lock b/examples/inference/stable-diffusion-python-onnx/magic.lock index 38419fcd65..4c5bcd186f 100644 --- a/examples/inference/stable-diffusion-python-onnx/magic.lock +++ b/examples/inference/stable-diffusion-python-onnx/magic.lock @@ -149,14 +149,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/llvm-openmp-15.0.7-h0cdce71_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.10.0-h5888daf_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-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022805-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-2022.1.0-h84fe81f_915.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-devel-2022.1.0-ha770c72_916.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-include-2022.1.0-h84fe81f_915.tar.bz2 - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022805-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/mpc-1.3.1-h24ddda3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/mpfr-4.2.1-h90cbb55_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mpmath-1.3.0-pyhd8ed1ab_1.conda @@ -339,11 +339,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.6-h2e0c361_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.10.0-h5ad3122_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022805-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.16-py312hb2c0f52_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda @@ -518,11 +518,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-15.0.7-h7cfbb63_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.10.0-h286801f_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-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022805-release.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/mpc-1.3.1-h8f1351a_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/mpfr-4.2.1-hb693164_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mpmath-1.3.0-pyhd8ed1ab_1.conda @@ -5449,48 +5449,48 @@ packages: - pkg:pypi/markupsafe?source=hash-mapping size: 24048 timestamp: 1733219945697 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022718-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022805-release.conda noarch: python - sha256: f3dcb14fed5470c0fc521542cbd2f1c56ca7e46d560f46176b8f926198cb3cbd - md5: 01fe5e0cf46c84a6345e323ad1316764 + sha256: 6fe952db050b07af9045ee094df2241255d72ee0bca5663edfd2ce1c9752ec09 + md5: 8e5bdfbc3312e58ca7af7e74b4c1a62a depends: - - max-core ==25.2.0.dev2025022718 release - - max-python ==25.2.0.dev2025022718 release - - mojo-jupyter ==25.2.0.dev2025022718 release - - mblack ==25.2.0.dev2025022718 release + - max-core ==25.2.0.dev2025022805 release + - max-python ==25.2.0.dev2025022805 release + - mojo-jupyter ==25.2.0.dev2025022805 release + - mblack ==25.2.0.dev2025022805 release license: LicenseRef-Modular-Proprietary - size: 9905 - timestamp: 1740680254354 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022718-release.conda - sha256: 847d5767109a305d7bcad4ac29248a74a384034692934a0c54b00a590c27094a - md5: fc5a9ae36c7805979bd58ca55a25066f + size: 9906 + timestamp: 1740719805201 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022805-release.conda + sha256: a507f8b798257c4505a296fd1d7900bcc9695b5eaa5990d5a447f588e203ffb7 + md5: 53a62d22b682cdf446cfcbb5e07a0b4d depends: - - mblack ==25.2.0.dev2025022718 release + - mblack ==25.2.0.dev2025022805 release license: LicenseRef-Modular-Proprietary - size: 249811868 - timestamp: 1740680254354 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022718-release.conda - sha256: 250c35ecccd302e6c7de836ac200a5ece92e74508c2590c585d8803d488fd650 - md5: d88728b468c85902512a0f9b99251035 + size: 249837097 + timestamp: 1740719822740 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022805-release.conda + sha256: 2c06fc3f0a5ff31b90531e477e1bc8edcbf530a05146c9afb148819b3115d4a6 + md5: 654fe24f42ae167dd46e5858b512fd64 depends: - - mblack ==25.2.0.dev2025022718 release + - mblack ==25.2.0.dev2025022805 release license: LicenseRef-Modular-Proprietary - size: 252108573 - timestamp: 1740680207793 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022718-release.conda - sha256: fb28d9e61aa507ea84b470082d3dc96844a24fe672d4e4c57e832655c5d0a202 - md5: dd8734453f7276a258f3351cc5c506c3 + size: 252165614 + timestamp: 1740719805201 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022805-release.conda + sha256: eb316eef88826b46d84532c0cfcde6d56a875aafcfe08d140cd6b90d752f8841 + md5: efed274ef0a65e98815933cfb8b609d2 depends: - - mblack ==25.2.0.dev2025022718 release + - mblack ==25.2.0.dev2025022805 release license: LicenseRef-Modular-Proprietary - size: 217273450 - timestamp: 1740681819160 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022718-release.conda + size: 217300178 + timestamp: 1740721042829 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022805-release.conda noarch: python - sha256: 831b4d62f66f0083321121c6ba25dedab3ee41d5e9f19d9752969592214af398 - md5: f828ace91aa057e4774e84ad459adccf + sha256: 1724ba61123d73c5ae9194dddcaf61e7937123cbd49d0fb122fc78cee0673e6d + md5: 35a33686fe8cccc768034d43f604e672 depends: - - max-core ==25.2.0.dev2025022718 release + - max-core ==25.2.0.dev2025022805 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -5505,7 +5505,7 @@ packages: - nvitop >=1.4.1 - opentelemetry-api >=1.29.0 - opentelemetry-exporter-otlp-proto-http >=1.27.0 - - opentelemetry-exporter-prometheus <1.0.0 + - opentelemetry-exporter-prometheus >=0.48b0,<1.1.12.0rc1 - opentelemetry-sdk >=1.29.0,<2.0 - pillow >=10.3.0 - prometheus_client >=0.21.0 @@ -5527,14 +5527,14 @@ packages: - uvloop >=0.21.0 - xgrammar ==0.1.11 license: LicenseRef-Modular-Proprietary - size: 123584411 - timestamp: 1740680254354 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022718-release.conda + size: 123624528 + timestamp: 1740719822740 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022805-release.conda noarch: python - sha256: b9e5755b7bf6314a37a90ef0250c93f5e7c693954d7a6389a97ab9ef06e23cc3 - md5: bfd2e752d0fc9516b78a17169ce9cc78 + sha256: c741ded7e064aba732999cf95e43dda28e6e9cdc59a20254fe32b8bc49739ea6 + md5: ae9b9de4204cb583f9feeb3369809182 depends: - - max-core ==25.2.0.dev2025022718 release + - max-core ==25.2.0.dev2025022805 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -5549,7 +5549,7 @@ packages: - nvitop >=1.4.1 - opentelemetry-api >=1.29.0 - opentelemetry-exporter-otlp-proto-http >=1.27.0 - - opentelemetry-exporter-prometheus <1.0.0 + - opentelemetry-exporter-prometheus >=0.48b0,<1.1.12.0rc1 - opentelemetry-sdk >=1.29.0,<2.0 - pillow >=10.3.0 - prometheus_client >=0.21.0 @@ -5571,14 +5571,14 @@ packages: - uvloop >=0.21.0 - xgrammar ==0.1.11 license: LicenseRef-Modular-Proprietary - size: 126004454 - timestamp: 1740680207793 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022718-release.conda + size: 125985562 + timestamp: 1740719805201 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022805-release.conda noarch: python - sha256: 7da9f4655082bb64c2b0cc996ffefa0ce5c49744854ed77a9b0d000e27cf5a55 - md5: b16d498a148aa61dca2a6bfec5cb8e46 + sha256: c56d9f6edeb5caa166d74eefca5d472556e29b4a22a4a7e799ff9f9482af0a62 + md5: c684a1ac57d5ca9a82884bffff428154 depends: - - max-core ==25.2.0.dev2025022718 release + - max-core ==25.2.0.dev2025022805 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -5593,7 +5593,7 @@ packages: - nvitop >=1.4.1 - opentelemetry-api >=1.29.0 - opentelemetry-exporter-otlp-proto-http >=1.27.0 - - opentelemetry-exporter-prometheus <1.0.0 + - opentelemetry-exporter-prometheus >=0.48b0,<1.1.12.0rc1 - opentelemetry-sdk >=1.29.0,<2.0 - pillow >=10.3.0 - prometheus_client >=0.21.0 @@ -5615,12 +5615,12 @@ packages: - uvloop >=0.21.0 - xgrammar ==0.1.11 license: LicenseRef-Modular-Proprietary - size: 112658409 - timestamp: 1740681819160 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022718-release.conda + size: 112656033 + timestamp: 1740721042829 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022805-release.conda noarch: python - sha256: ff042a8abfed0e2e36b207e3d4f59a2b4577dea7f099b08d1aaef128ab796f09 - md5: 719ca7123d53415adcdd7f0cb8396c51 + sha256: 8d5cc0e599b2ceecc816efe63442c4295304ae7b3016b42399097de4dbcf1769 + md5: 49a934446d5d99e86689f4373ecfe4c4 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -5632,7 +5632,7 @@ packages: - python license: MIT size: 130852 - timestamp: 1740680254353 + timestamp: 1740719805200 - conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-2022.1.0-h84fe81f_915.tar.bz2 sha256: 767318c4f2057822a7ebc238d6065ce12c6ae60df4ab892758adb79b1057ce02 md5: b9c8f925797a93dbff45e1626b025a6b @@ -5671,18 +5671,18 @@ packages: purls: [] size: 762563 timestamp: 1652946186347 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022718-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022805-release.conda noarch: python - sha256: 19c33e23b27e240fee0b2a1d56921802ac88558dc2da417837cd590175561e16 - md5: 6b8d00b15817db11e026f824f7f0ba14 + sha256: d0b2f5c55bb0baea04e0a76469a0106ef60ba50e13f305b653fefb4903b9da60 + md5: 5f877a177817719dfa2b616176dbc409 depends: - - max-core ==25.2.0.dev2025022718 release + - max-core ==25.2.0.dev2025022805 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22981 - timestamp: 1740680254354 + size: 22994 + timestamp: 1740719805201 - conda: https://conda.anaconda.org/conda-forge/linux-64/mpc-1.3.1-h24ddda3_1.conda sha256: 1bf794ddf2c8b3a3e14ae182577c624fa92dea975537accff4bc7e5fea085212 md5: aa14b9a5196a6d8dd364164b7ce56acf diff --git a/examples/inference/yolo-python-onnx/magic.lock b/examples/inference/yolo-python-onnx/magic.lock index 59433dc061..8f5d689f15 100644 --- a/examples/inference/yolo-python-onnx/magic.lock +++ b/examples/inference/yolo-python-onnx/magic.lock @@ -42,11 +42,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022805-release.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-h2d0b736_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda @@ -110,11 +110,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022805-release.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-ha32ae93_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda @@ -169,11 +169,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.1-h3f77e49_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022805-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda @@ -1310,48 +1310,48 @@ packages: license_family: APACHE size: 280830 timestamp: 1736986295869 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022718-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022805-release.conda noarch: python - sha256: f3dcb14fed5470c0fc521542cbd2f1c56ca7e46d560f46176b8f926198cb3cbd - md5: 01fe5e0cf46c84a6345e323ad1316764 + sha256: 6fe952db050b07af9045ee094df2241255d72ee0bca5663edfd2ce1c9752ec09 + md5: 8e5bdfbc3312e58ca7af7e74b4c1a62a depends: - - max-core ==25.2.0.dev2025022718 release - - max-python ==25.2.0.dev2025022718 release - - mojo-jupyter ==25.2.0.dev2025022718 release - - mblack ==25.2.0.dev2025022718 release + - max-core ==25.2.0.dev2025022805 release + - max-python ==25.2.0.dev2025022805 release + - mojo-jupyter ==25.2.0.dev2025022805 release + - mblack ==25.2.0.dev2025022805 release license: LicenseRef-Modular-Proprietary - size: 9905 - timestamp: 1740680254354 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022718-release.conda - sha256: 847d5767109a305d7bcad4ac29248a74a384034692934a0c54b00a590c27094a - md5: fc5a9ae36c7805979bd58ca55a25066f + size: 9906 + timestamp: 1740719805201 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022805-release.conda + sha256: a507f8b798257c4505a296fd1d7900bcc9695b5eaa5990d5a447f588e203ffb7 + md5: 53a62d22b682cdf446cfcbb5e07a0b4d depends: - - mblack ==25.2.0.dev2025022718 release + - mblack ==25.2.0.dev2025022805 release license: LicenseRef-Modular-Proprietary - size: 249811868 - timestamp: 1740680254354 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022718-release.conda - sha256: 250c35ecccd302e6c7de836ac200a5ece92e74508c2590c585d8803d488fd650 - md5: d88728b468c85902512a0f9b99251035 + size: 249837097 + timestamp: 1740719822740 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022805-release.conda + sha256: 2c06fc3f0a5ff31b90531e477e1bc8edcbf530a05146c9afb148819b3115d4a6 + md5: 654fe24f42ae167dd46e5858b512fd64 depends: - - mblack ==25.2.0.dev2025022718 release + - mblack ==25.2.0.dev2025022805 release license: LicenseRef-Modular-Proprietary - size: 252108573 - timestamp: 1740680207793 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022718-release.conda - sha256: fb28d9e61aa507ea84b470082d3dc96844a24fe672d4e4c57e832655c5d0a202 - md5: dd8734453f7276a258f3351cc5c506c3 + size: 252165614 + timestamp: 1740719805201 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022805-release.conda + sha256: eb316eef88826b46d84532c0cfcde6d56a875aafcfe08d140cd6b90d752f8841 + md5: efed274ef0a65e98815933cfb8b609d2 depends: - - mblack ==25.2.0.dev2025022718 release + - mblack ==25.2.0.dev2025022805 release license: LicenseRef-Modular-Proprietary - size: 217273450 - timestamp: 1740681819160 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022718-release.conda + size: 217300178 + timestamp: 1740721042829 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022805-release.conda noarch: python - sha256: 831b4d62f66f0083321121c6ba25dedab3ee41d5e9f19d9752969592214af398 - md5: f828ace91aa057e4774e84ad459adccf + sha256: 1724ba61123d73c5ae9194dddcaf61e7937123cbd49d0fb122fc78cee0673e6d + md5: 35a33686fe8cccc768034d43f604e672 depends: - - max-core ==25.2.0.dev2025022718 release + - max-core ==25.2.0.dev2025022805 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1366,7 +1366,7 @@ packages: - nvitop >=1.4.1 - opentelemetry-api >=1.29.0 - opentelemetry-exporter-otlp-proto-http >=1.27.0 - - opentelemetry-exporter-prometheus <1.0.0 + - opentelemetry-exporter-prometheus >=0.48b0,<1.1.12.0rc1 - opentelemetry-sdk >=1.29.0,<2.0 - pillow >=10.3.0 - prometheus_client >=0.21.0 @@ -1388,14 +1388,14 @@ packages: - uvloop >=0.21.0 - xgrammar ==0.1.11 license: LicenseRef-Modular-Proprietary - size: 123584411 - timestamp: 1740680254354 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022718-release.conda + size: 123624528 + timestamp: 1740719822740 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022805-release.conda noarch: python - sha256: b9e5755b7bf6314a37a90ef0250c93f5e7c693954d7a6389a97ab9ef06e23cc3 - md5: bfd2e752d0fc9516b78a17169ce9cc78 + sha256: c741ded7e064aba732999cf95e43dda28e6e9cdc59a20254fe32b8bc49739ea6 + md5: ae9b9de4204cb583f9feeb3369809182 depends: - - max-core ==25.2.0.dev2025022718 release + - max-core ==25.2.0.dev2025022805 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1410,7 +1410,7 @@ packages: - nvitop >=1.4.1 - opentelemetry-api >=1.29.0 - opentelemetry-exporter-otlp-proto-http >=1.27.0 - - opentelemetry-exporter-prometheus <1.0.0 + - opentelemetry-exporter-prometheus >=0.48b0,<1.1.12.0rc1 - opentelemetry-sdk >=1.29.0,<2.0 - pillow >=10.3.0 - prometheus_client >=0.21.0 @@ -1432,14 +1432,14 @@ packages: - uvloop >=0.21.0 - xgrammar ==0.1.11 license: LicenseRef-Modular-Proprietary - size: 126004454 - timestamp: 1740680207793 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022718-release.conda + size: 125985562 + timestamp: 1740719805201 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022805-release.conda noarch: python - sha256: 7da9f4655082bb64c2b0cc996ffefa0ce5c49744854ed77a9b0d000e27cf5a55 - md5: b16d498a148aa61dca2a6bfec5cb8e46 + sha256: c56d9f6edeb5caa166d74eefca5d472556e29b4a22a4a7e799ff9f9482af0a62 + md5: c684a1ac57d5ca9a82884bffff428154 depends: - - max-core ==25.2.0.dev2025022718 release + - max-core ==25.2.0.dev2025022805 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1454,7 +1454,7 @@ packages: - nvitop >=1.4.1 - opentelemetry-api >=1.29.0 - opentelemetry-exporter-otlp-proto-http >=1.27.0 - - opentelemetry-exporter-prometheus <1.0.0 + - opentelemetry-exporter-prometheus >=0.48b0,<1.1.12.0rc1 - opentelemetry-sdk >=1.29.0,<2.0 - pillow >=10.3.0 - prometheus_client >=0.21.0 @@ -1476,12 +1476,12 @@ packages: - uvloop >=0.21.0 - xgrammar ==0.1.11 license: LicenseRef-Modular-Proprietary - size: 112658409 - timestamp: 1740681819160 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022718-release.conda + size: 112656033 + timestamp: 1740721042829 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022805-release.conda noarch: python - sha256: ff042a8abfed0e2e36b207e3d4f59a2b4577dea7f099b08d1aaef128ab796f09 - md5: 719ca7123d53415adcdd7f0cb8396c51 + sha256: 8d5cc0e599b2ceecc816efe63442c4295304ae7b3016b42399097de4dbcf1769 + md5: 49a934446d5d99e86689f4373ecfe4c4 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -1493,19 +1493,19 @@ packages: - python license: MIT size: 130852 - timestamp: 1740680254353 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022718-release.conda + timestamp: 1740719805200 +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022805-release.conda noarch: python - sha256: 19c33e23b27e240fee0b2a1d56921802ac88558dc2da417837cd590175561e16 - md5: 6b8d00b15817db11e026f824f7f0ba14 + sha256: d0b2f5c55bb0baea04e0a76469a0106ef60ba50e13f305b653fefb4903b9da60 + md5: 5f877a177817719dfa2b616176dbc409 depends: - - max-core ==25.2.0.dev2025022718 release + - max-core ==25.2.0.dev2025022805 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22981 - timestamp: 1740680254354 + size: 22994 + timestamp: 1740719805201 - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda sha256: 1895f47b7d68581a6facde5cb13ab8c2764c2e53a76bd746f8f98910dc4e08fe md5: 29097e7ea634a45cc5386b95cac6568f diff --git a/examples/mojo/life/magic.lock b/examples/mojo/life/magic.lock index 1aec52b09f..585b1566bd 100644 --- a/examples/mojo/life/magic.lock +++ b/examples/mojo/life/magic.lock @@ -103,11 +103,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.6-h8d12d68_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.10.0-h5888daf_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022805-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/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda @@ -258,11 +258,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.6-h2e0c361_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.10.0-h5ad3122_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022805-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/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-ha32ae93_3.conda @@ -384,11 +384,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.5.0-h2471fea_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022805-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/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda @@ -3498,48 +3498,48 @@ packages: license_family: BSD size: 184953 timestamp: 1733740984533 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022718-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022805-release.conda noarch: python - sha256: f3dcb14fed5470c0fc521542cbd2f1c56ca7e46d560f46176b8f926198cb3cbd - md5: 01fe5e0cf46c84a6345e323ad1316764 + sha256: 6fe952db050b07af9045ee094df2241255d72ee0bca5663edfd2ce1c9752ec09 + md5: 8e5bdfbc3312e58ca7af7e74b4c1a62a depends: - - max-core ==25.2.0.dev2025022718 release - - max-python ==25.2.0.dev2025022718 release - - mojo-jupyter ==25.2.0.dev2025022718 release - - mblack ==25.2.0.dev2025022718 release + - max-core ==25.2.0.dev2025022805 release + - max-python ==25.2.0.dev2025022805 release + - mojo-jupyter ==25.2.0.dev2025022805 release + - mblack ==25.2.0.dev2025022805 release license: LicenseRef-Modular-Proprietary - size: 9905 - timestamp: 1740680254354 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022718-release.conda - sha256: 847d5767109a305d7bcad4ac29248a74a384034692934a0c54b00a590c27094a - md5: fc5a9ae36c7805979bd58ca55a25066f + size: 9906 + timestamp: 1740719805201 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022805-release.conda + sha256: a507f8b798257c4505a296fd1d7900bcc9695b5eaa5990d5a447f588e203ffb7 + md5: 53a62d22b682cdf446cfcbb5e07a0b4d depends: - - mblack ==25.2.0.dev2025022718 release + - mblack ==25.2.0.dev2025022805 release license: LicenseRef-Modular-Proprietary - size: 249811868 - timestamp: 1740680254354 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022718-release.conda - sha256: 250c35ecccd302e6c7de836ac200a5ece92e74508c2590c585d8803d488fd650 - md5: d88728b468c85902512a0f9b99251035 + size: 249837097 + timestamp: 1740719822740 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022805-release.conda + sha256: 2c06fc3f0a5ff31b90531e477e1bc8edcbf530a05146c9afb148819b3115d4a6 + md5: 654fe24f42ae167dd46e5858b512fd64 depends: - - mblack ==25.2.0.dev2025022718 release + - mblack ==25.2.0.dev2025022805 release license: LicenseRef-Modular-Proprietary - size: 252108573 - timestamp: 1740680207793 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022718-release.conda - sha256: fb28d9e61aa507ea84b470082d3dc96844a24fe672d4e4c57e832655c5d0a202 - md5: dd8734453f7276a258f3351cc5c506c3 + size: 252165614 + timestamp: 1740719805201 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022805-release.conda + sha256: eb316eef88826b46d84532c0cfcde6d56a875aafcfe08d140cd6b90d752f8841 + md5: efed274ef0a65e98815933cfb8b609d2 depends: - - mblack ==25.2.0.dev2025022718 release + - mblack ==25.2.0.dev2025022805 release license: LicenseRef-Modular-Proprietary - size: 217273450 - timestamp: 1740681819160 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022718-release.conda + size: 217300178 + timestamp: 1740721042829 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022805-release.conda noarch: python - sha256: 831b4d62f66f0083321121c6ba25dedab3ee41d5e9f19d9752969592214af398 - md5: f828ace91aa057e4774e84ad459adccf + sha256: 1724ba61123d73c5ae9194dddcaf61e7937123cbd49d0fb122fc78cee0673e6d + md5: 35a33686fe8cccc768034d43f604e672 depends: - - max-core ==25.2.0.dev2025022718 release + - max-core ==25.2.0.dev2025022805 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -3554,7 +3554,7 @@ packages: - nvitop >=1.4.1 - opentelemetry-api >=1.29.0 - opentelemetry-exporter-otlp-proto-http >=1.27.0 - - opentelemetry-exporter-prometheus <1.0.0 + - opentelemetry-exporter-prometheus >=0.48b0,<1.1.12.0rc1 - opentelemetry-sdk >=1.29.0,<2.0 - pillow >=10.3.0 - prometheus_client >=0.21.0 @@ -3576,14 +3576,14 @@ packages: - uvloop >=0.21.0 - xgrammar ==0.1.11 license: LicenseRef-Modular-Proprietary - size: 123584411 - timestamp: 1740680254354 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022718-release.conda + size: 123624528 + timestamp: 1740719822740 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022805-release.conda noarch: python - sha256: b9e5755b7bf6314a37a90ef0250c93f5e7c693954d7a6389a97ab9ef06e23cc3 - md5: bfd2e752d0fc9516b78a17169ce9cc78 + sha256: c741ded7e064aba732999cf95e43dda28e6e9cdc59a20254fe32b8bc49739ea6 + md5: ae9b9de4204cb583f9feeb3369809182 depends: - - max-core ==25.2.0.dev2025022718 release + - max-core ==25.2.0.dev2025022805 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -3598,7 +3598,7 @@ packages: - nvitop >=1.4.1 - opentelemetry-api >=1.29.0 - opentelemetry-exporter-otlp-proto-http >=1.27.0 - - opentelemetry-exporter-prometheus <1.0.0 + - opentelemetry-exporter-prometheus >=0.48b0,<1.1.12.0rc1 - opentelemetry-sdk >=1.29.0,<2.0 - pillow >=10.3.0 - prometheus_client >=0.21.0 @@ -3620,14 +3620,14 @@ packages: - uvloop >=0.21.0 - xgrammar ==0.1.11 license: LicenseRef-Modular-Proprietary - size: 126004454 - timestamp: 1740680207793 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022718-release.conda + size: 125985562 + timestamp: 1740719805201 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022805-release.conda noarch: python - sha256: 7da9f4655082bb64c2b0cc996ffefa0ce5c49744854ed77a9b0d000e27cf5a55 - md5: b16d498a148aa61dca2a6bfec5cb8e46 + sha256: c56d9f6edeb5caa166d74eefca5d472556e29b4a22a4a7e799ff9f9482af0a62 + md5: c684a1ac57d5ca9a82884bffff428154 depends: - - max-core ==25.2.0.dev2025022718 release + - max-core ==25.2.0.dev2025022805 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -3642,7 +3642,7 @@ packages: - nvitop >=1.4.1 - opentelemetry-api >=1.29.0 - opentelemetry-exporter-otlp-proto-http >=1.27.0 - - opentelemetry-exporter-prometheus <1.0.0 + - opentelemetry-exporter-prometheus >=0.48b0,<1.1.12.0rc1 - opentelemetry-sdk >=1.29.0,<2.0 - pillow >=10.3.0 - prometheus_client >=0.21.0 @@ -3664,12 +3664,12 @@ packages: - uvloop >=0.21.0 - xgrammar ==0.1.11 license: LicenseRef-Modular-Proprietary - size: 112658409 - timestamp: 1740681819160 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022718-release.conda + size: 112656033 + timestamp: 1740721042829 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022805-release.conda noarch: python - sha256: ff042a8abfed0e2e36b207e3d4f59a2b4577dea7f099b08d1aaef128ab796f09 - md5: 719ca7123d53415adcdd7f0cb8396c51 + sha256: 8d5cc0e599b2ceecc816efe63442c4295304ae7b3016b42399097de4dbcf1769 + md5: 49a934446d5d99e86689f4373ecfe4c4 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -3681,19 +3681,19 @@ packages: - python license: MIT size: 130852 - timestamp: 1740680254353 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022718-release.conda + timestamp: 1740719805200 +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022805-release.conda noarch: python - sha256: 19c33e23b27e240fee0b2a1d56921802ac88558dc2da417837cd590175561e16 - md5: 6b8d00b15817db11e026f824f7f0ba14 + sha256: d0b2f5c55bb0baea04e0a76469a0106ef60ba50e13f305b653fefb4903b9da60 + md5: 5f877a177817719dfa2b616176dbc409 depends: - - max-core ==25.2.0.dev2025022718 release + - max-core ==25.2.0.dev2025022805 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22981 - timestamp: 1740680254354 + size: 22994 + timestamp: 1740719805201 - conda: https://conda.anaconda.org/conda-forge/linux-64/mpg123-1.32.9-hc50e24c_0.conda sha256: 39c4700fb3fbe403a77d8cc27352fa72ba744db487559d5d44bf8411bb4ea200 md5: c7f302fd11eeb0987a6a5e1f3aed6a21 diff --git a/examples/mojo/magic.lock b/examples/mojo/magic.lock index c06e7e4f53..a425fa05de 100644 --- a/examples/mojo/magic.lock +++ b/examples/mojo/magic.lock @@ -42,11 +42,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022805-release.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-h2d0b736_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py311h64a7726_0.conda @@ -107,11 +107,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022805-release.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-ha32ae93_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py311h69ead2a_0.conda @@ -163,11 +163,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.1-h3f77e49_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022805-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py311h7125741_0.conda @@ -1301,48 +1301,48 @@ packages: license_family: APACHE size: 280830 timestamp: 1736986295869 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022718-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022805-release.conda noarch: python - sha256: f3dcb14fed5470c0fc521542cbd2f1c56ca7e46d560f46176b8f926198cb3cbd - md5: 01fe5e0cf46c84a6345e323ad1316764 + sha256: 6fe952db050b07af9045ee094df2241255d72ee0bca5663edfd2ce1c9752ec09 + md5: 8e5bdfbc3312e58ca7af7e74b4c1a62a depends: - - max-core ==25.2.0.dev2025022718 release - - max-python ==25.2.0.dev2025022718 release - - mojo-jupyter ==25.2.0.dev2025022718 release - - mblack ==25.2.0.dev2025022718 release + - max-core ==25.2.0.dev2025022805 release + - max-python ==25.2.0.dev2025022805 release + - mojo-jupyter ==25.2.0.dev2025022805 release + - mblack ==25.2.0.dev2025022805 release license: LicenseRef-Modular-Proprietary - size: 9905 - timestamp: 1740680254354 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022718-release.conda - sha256: 847d5767109a305d7bcad4ac29248a74a384034692934a0c54b00a590c27094a - md5: fc5a9ae36c7805979bd58ca55a25066f + size: 9906 + timestamp: 1740719805201 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022805-release.conda + sha256: a507f8b798257c4505a296fd1d7900bcc9695b5eaa5990d5a447f588e203ffb7 + md5: 53a62d22b682cdf446cfcbb5e07a0b4d depends: - - mblack ==25.2.0.dev2025022718 release + - mblack ==25.2.0.dev2025022805 release license: LicenseRef-Modular-Proprietary - size: 249811868 - timestamp: 1740680254354 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022718-release.conda - sha256: 250c35ecccd302e6c7de836ac200a5ece92e74508c2590c585d8803d488fd650 - md5: d88728b468c85902512a0f9b99251035 + size: 249837097 + timestamp: 1740719822740 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022805-release.conda + sha256: 2c06fc3f0a5ff31b90531e477e1bc8edcbf530a05146c9afb148819b3115d4a6 + md5: 654fe24f42ae167dd46e5858b512fd64 depends: - - mblack ==25.2.0.dev2025022718 release + - mblack ==25.2.0.dev2025022805 release license: LicenseRef-Modular-Proprietary - size: 252108573 - timestamp: 1740680207793 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022718-release.conda - sha256: fb28d9e61aa507ea84b470082d3dc96844a24fe672d4e4c57e832655c5d0a202 - md5: dd8734453f7276a258f3351cc5c506c3 + size: 252165614 + timestamp: 1740719805201 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022805-release.conda + sha256: eb316eef88826b46d84532c0cfcde6d56a875aafcfe08d140cd6b90d752f8841 + md5: efed274ef0a65e98815933cfb8b609d2 depends: - - mblack ==25.2.0.dev2025022718 release + - mblack ==25.2.0.dev2025022805 release license: LicenseRef-Modular-Proprietary - size: 217273450 - timestamp: 1740681819160 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022718-release.conda + size: 217300178 + timestamp: 1740721042829 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022805-release.conda noarch: python - sha256: 831b4d62f66f0083321121c6ba25dedab3ee41d5e9f19d9752969592214af398 - md5: f828ace91aa057e4774e84ad459adccf + sha256: 1724ba61123d73c5ae9194dddcaf61e7937123cbd49d0fb122fc78cee0673e6d + md5: 35a33686fe8cccc768034d43f604e672 depends: - - max-core ==25.2.0.dev2025022718 release + - max-core ==25.2.0.dev2025022805 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1357,7 +1357,7 @@ packages: - nvitop >=1.4.1 - opentelemetry-api >=1.29.0 - opentelemetry-exporter-otlp-proto-http >=1.27.0 - - opentelemetry-exporter-prometheus <1.0.0 + - opentelemetry-exporter-prometheus >=0.48b0,<1.1.12.0rc1 - opentelemetry-sdk >=1.29.0,<2.0 - pillow >=10.3.0 - prometheus_client >=0.21.0 @@ -1379,14 +1379,14 @@ packages: - uvloop >=0.21.0 - xgrammar ==0.1.11 license: LicenseRef-Modular-Proprietary - size: 123584411 - timestamp: 1740680254354 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022718-release.conda + size: 123624528 + timestamp: 1740719822740 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022805-release.conda noarch: python - sha256: b9e5755b7bf6314a37a90ef0250c93f5e7c693954d7a6389a97ab9ef06e23cc3 - md5: bfd2e752d0fc9516b78a17169ce9cc78 + sha256: c741ded7e064aba732999cf95e43dda28e6e9cdc59a20254fe32b8bc49739ea6 + md5: ae9b9de4204cb583f9feeb3369809182 depends: - - max-core ==25.2.0.dev2025022718 release + - max-core ==25.2.0.dev2025022805 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1401,7 +1401,7 @@ packages: - nvitop >=1.4.1 - opentelemetry-api >=1.29.0 - opentelemetry-exporter-otlp-proto-http >=1.27.0 - - opentelemetry-exporter-prometheus <1.0.0 + - opentelemetry-exporter-prometheus >=0.48b0,<1.1.12.0rc1 - opentelemetry-sdk >=1.29.0,<2.0 - pillow >=10.3.0 - prometheus_client >=0.21.0 @@ -1423,14 +1423,14 @@ packages: - uvloop >=0.21.0 - xgrammar ==0.1.11 license: LicenseRef-Modular-Proprietary - size: 126004454 - timestamp: 1740680207793 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022718-release.conda + size: 125985562 + timestamp: 1740719805201 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022805-release.conda noarch: python - sha256: 7da9f4655082bb64c2b0cc996ffefa0ce5c49744854ed77a9b0d000e27cf5a55 - md5: b16d498a148aa61dca2a6bfec5cb8e46 + sha256: c56d9f6edeb5caa166d74eefca5d472556e29b4a22a4a7e799ff9f9482af0a62 + md5: c684a1ac57d5ca9a82884bffff428154 depends: - - max-core ==25.2.0.dev2025022718 release + - max-core ==25.2.0.dev2025022805 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1445,7 +1445,7 @@ packages: - nvitop >=1.4.1 - opentelemetry-api >=1.29.0 - opentelemetry-exporter-otlp-proto-http >=1.27.0 - - opentelemetry-exporter-prometheus <1.0.0 + - opentelemetry-exporter-prometheus >=0.48b0,<1.1.12.0rc1 - opentelemetry-sdk >=1.29.0,<2.0 - pillow >=10.3.0 - prometheus_client >=0.21.0 @@ -1467,12 +1467,12 @@ packages: - uvloop >=0.21.0 - xgrammar ==0.1.11 license: LicenseRef-Modular-Proprietary - size: 112658409 - timestamp: 1740681819160 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022718-release.conda + size: 112656033 + timestamp: 1740721042829 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022805-release.conda noarch: python - sha256: ff042a8abfed0e2e36b207e3d4f59a2b4577dea7f099b08d1aaef128ab796f09 - md5: 719ca7123d53415adcdd7f0cb8396c51 + sha256: 8d5cc0e599b2ceecc816efe63442c4295304ae7b3016b42399097de4dbcf1769 + md5: 49a934446d5d99e86689f4373ecfe4c4 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -1484,19 +1484,19 @@ packages: - python license: MIT size: 130852 - timestamp: 1740680254353 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022718-release.conda + timestamp: 1740719805200 +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022805-release.conda noarch: python - sha256: 19c33e23b27e240fee0b2a1d56921802ac88558dc2da417837cd590175561e16 - md5: 6b8d00b15817db11e026f824f7f0ba14 + sha256: d0b2f5c55bb0baea04e0a76469a0106ef60ba50e13f305b653fefb4903b9da60 + md5: 5f877a177817719dfa2b616176dbc409 depends: - - max-core ==25.2.0.dev2025022718 release + - max-core ==25.2.0.dev2025022805 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22981 - timestamp: 1740680254354 + size: 22994 + timestamp: 1740719805201 - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda sha256: 1895f47b7d68581a6facde5cb13ab8c2764c2e53a76bd746f8f98910dc4e08fe md5: 29097e7ea634a45cc5386b95cac6568f diff --git a/examples/mojo/operators/magic.lock b/examples/mojo/operators/magic.lock index 9473097321..6014677668 100644 --- a/examples/mojo/operators/magic.lock +++ b/examples/mojo/operators/magic.lock @@ -42,11 +42,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022805-release.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-h2d0b736_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda @@ -107,11 +107,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022805-release.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-ha32ae93_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda @@ -163,11 +163,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.1-h3f77e49_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022805-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda @@ -1301,48 +1301,48 @@ packages: license_family: APACHE size: 280830 timestamp: 1736986295869 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022718-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022805-release.conda noarch: python - sha256: f3dcb14fed5470c0fc521542cbd2f1c56ca7e46d560f46176b8f926198cb3cbd - md5: 01fe5e0cf46c84a6345e323ad1316764 + sha256: 6fe952db050b07af9045ee094df2241255d72ee0bca5663edfd2ce1c9752ec09 + md5: 8e5bdfbc3312e58ca7af7e74b4c1a62a depends: - - max-core ==25.2.0.dev2025022718 release - - max-python ==25.2.0.dev2025022718 release - - mojo-jupyter ==25.2.0.dev2025022718 release - - mblack ==25.2.0.dev2025022718 release + - max-core ==25.2.0.dev2025022805 release + - max-python ==25.2.0.dev2025022805 release + - mojo-jupyter ==25.2.0.dev2025022805 release + - mblack ==25.2.0.dev2025022805 release license: LicenseRef-Modular-Proprietary - size: 9905 - timestamp: 1740680254354 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022718-release.conda - sha256: 847d5767109a305d7bcad4ac29248a74a384034692934a0c54b00a590c27094a - md5: fc5a9ae36c7805979bd58ca55a25066f + size: 9906 + timestamp: 1740719805201 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022805-release.conda + sha256: a507f8b798257c4505a296fd1d7900bcc9695b5eaa5990d5a447f588e203ffb7 + md5: 53a62d22b682cdf446cfcbb5e07a0b4d depends: - - mblack ==25.2.0.dev2025022718 release + - mblack ==25.2.0.dev2025022805 release license: LicenseRef-Modular-Proprietary - size: 249811868 - timestamp: 1740680254354 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022718-release.conda - sha256: 250c35ecccd302e6c7de836ac200a5ece92e74508c2590c585d8803d488fd650 - md5: d88728b468c85902512a0f9b99251035 + size: 249837097 + timestamp: 1740719822740 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022805-release.conda + sha256: 2c06fc3f0a5ff31b90531e477e1bc8edcbf530a05146c9afb148819b3115d4a6 + md5: 654fe24f42ae167dd46e5858b512fd64 depends: - - mblack ==25.2.0.dev2025022718 release + - mblack ==25.2.0.dev2025022805 release license: LicenseRef-Modular-Proprietary - size: 252108573 - timestamp: 1740680207793 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022718-release.conda - sha256: fb28d9e61aa507ea84b470082d3dc96844a24fe672d4e4c57e832655c5d0a202 - md5: dd8734453f7276a258f3351cc5c506c3 + size: 252165614 + timestamp: 1740719805201 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022805-release.conda + sha256: eb316eef88826b46d84532c0cfcde6d56a875aafcfe08d140cd6b90d752f8841 + md5: efed274ef0a65e98815933cfb8b609d2 depends: - - mblack ==25.2.0.dev2025022718 release + - mblack ==25.2.0.dev2025022805 release license: LicenseRef-Modular-Proprietary - size: 217273450 - timestamp: 1740681819160 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022718-release.conda + size: 217300178 + timestamp: 1740721042829 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022805-release.conda noarch: python - sha256: 831b4d62f66f0083321121c6ba25dedab3ee41d5e9f19d9752969592214af398 - md5: f828ace91aa057e4774e84ad459adccf + sha256: 1724ba61123d73c5ae9194dddcaf61e7937123cbd49d0fb122fc78cee0673e6d + md5: 35a33686fe8cccc768034d43f604e672 depends: - - max-core ==25.2.0.dev2025022718 release + - max-core ==25.2.0.dev2025022805 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1357,7 +1357,7 @@ packages: - nvitop >=1.4.1 - opentelemetry-api >=1.29.0 - opentelemetry-exporter-otlp-proto-http >=1.27.0 - - opentelemetry-exporter-prometheus <1.0.0 + - opentelemetry-exporter-prometheus >=0.48b0,<1.1.12.0rc1 - opentelemetry-sdk >=1.29.0,<2.0 - pillow >=10.3.0 - prometheus_client >=0.21.0 @@ -1379,14 +1379,14 @@ packages: - uvloop >=0.21.0 - xgrammar ==0.1.11 license: LicenseRef-Modular-Proprietary - size: 123584411 - timestamp: 1740680254354 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022718-release.conda + size: 123624528 + timestamp: 1740719822740 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022805-release.conda noarch: python - sha256: b9e5755b7bf6314a37a90ef0250c93f5e7c693954d7a6389a97ab9ef06e23cc3 - md5: bfd2e752d0fc9516b78a17169ce9cc78 + sha256: c741ded7e064aba732999cf95e43dda28e6e9cdc59a20254fe32b8bc49739ea6 + md5: ae9b9de4204cb583f9feeb3369809182 depends: - - max-core ==25.2.0.dev2025022718 release + - max-core ==25.2.0.dev2025022805 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1401,7 +1401,7 @@ packages: - nvitop >=1.4.1 - opentelemetry-api >=1.29.0 - opentelemetry-exporter-otlp-proto-http >=1.27.0 - - opentelemetry-exporter-prometheus <1.0.0 + - opentelemetry-exporter-prometheus >=0.48b0,<1.1.12.0rc1 - opentelemetry-sdk >=1.29.0,<2.0 - pillow >=10.3.0 - prometheus_client >=0.21.0 @@ -1423,14 +1423,14 @@ packages: - uvloop >=0.21.0 - xgrammar ==0.1.11 license: LicenseRef-Modular-Proprietary - size: 126004454 - timestamp: 1740680207793 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022718-release.conda + size: 125985562 + timestamp: 1740719805201 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022805-release.conda noarch: python - sha256: 7da9f4655082bb64c2b0cc996ffefa0ce5c49744854ed77a9b0d000e27cf5a55 - md5: b16d498a148aa61dca2a6bfec5cb8e46 + sha256: c56d9f6edeb5caa166d74eefca5d472556e29b4a22a4a7e799ff9f9482af0a62 + md5: c684a1ac57d5ca9a82884bffff428154 depends: - - max-core ==25.2.0.dev2025022718 release + - max-core ==25.2.0.dev2025022805 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1445,7 +1445,7 @@ packages: - nvitop >=1.4.1 - opentelemetry-api >=1.29.0 - opentelemetry-exporter-otlp-proto-http >=1.27.0 - - opentelemetry-exporter-prometheus <1.0.0 + - opentelemetry-exporter-prometheus >=0.48b0,<1.1.12.0rc1 - opentelemetry-sdk >=1.29.0,<2.0 - pillow >=10.3.0 - prometheus_client >=0.21.0 @@ -1467,12 +1467,12 @@ packages: - uvloop >=0.21.0 - xgrammar ==0.1.11 license: LicenseRef-Modular-Proprietary - size: 112658409 - timestamp: 1740681819160 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022718-release.conda + size: 112656033 + timestamp: 1740721042829 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022805-release.conda noarch: python - sha256: ff042a8abfed0e2e36b207e3d4f59a2b4577dea7f099b08d1aaef128ab796f09 - md5: 719ca7123d53415adcdd7f0cb8396c51 + sha256: 8d5cc0e599b2ceecc816efe63442c4295304ae7b3016b42399097de4dbcf1769 + md5: 49a934446d5d99e86689f4373ecfe4c4 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -1484,19 +1484,19 @@ packages: - python license: MIT size: 130852 - timestamp: 1740680254353 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022718-release.conda + timestamp: 1740719805200 +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022805-release.conda noarch: python - sha256: 19c33e23b27e240fee0b2a1d56921802ac88558dc2da417837cd590175561e16 - md5: 6b8d00b15817db11e026f824f7f0ba14 + sha256: d0b2f5c55bb0baea04e0a76469a0106ef60ba50e13f305b653fefb4903b9da60 + md5: 5f877a177817719dfa2b616176dbc409 depends: - - max-core ==25.2.0.dev2025022718 release + - max-core ==25.2.0.dev2025022805 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22981 - timestamp: 1740680254354 + size: 22994 + timestamp: 1740719805201 - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda sha256: 1895f47b7d68581a6facde5cb13ab8c2764c2e53a76bd746f8f98910dc4e08fe md5: 29097e7ea634a45cc5386b95cac6568f diff --git a/examples/mojo/testing/magic.lock b/examples/mojo/testing/magic.lock index 9473097321..6014677668 100644 --- a/examples/mojo/testing/magic.lock +++ b/examples/mojo/testing/magic.lock @@ -42,11 +42,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022805-release.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-h2d0b736_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda @@ -107,11 +107,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022805-release.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-ha32ae93_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda @@ -163,11 +163,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.1-h3f77e49_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022805-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda @@ -1301,48 +1301,48 @@ packages: license_family: APACHE size: 280830 timestamp: 1736986295869 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022718-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022805-release.conda noarch: python - sha256: f3dcb14fed5470c0fc521542cbd2f1c56ca7e46d560f46176b8f926198cb3cbd - md5: 01fe5e0cf46c84a6345e323ad1316764 + sha256: 6fe952db050b07af9045ee094df2241255d72ee0bca5663edfd2ce1c9752ec09 + md5: 8e5bdfbc3312e58ca7af7e74b4c1a62a depends: - - max-core ==25.2.0.dev2025022718 release - - max-python ==25.2.0.dev2025022718 release - - mojo-jupyter ==25.2.0.dev2025022718 release - - mblack ==25.2.0.dev2025022718 release + - max-core ==25.2.0.dev2025022805 release + - max-python ==25.2.0.dev2025022805 release + - mojo-jupyter ==25.2.0.dev2025022805 release + - mblack ==25.2.0.dev2025022805 release license: LicenseRef-Modular-Proprietary - size: 9905 - timestamp: 1740680254354 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022718-release.conda - sha256: 847d5767109a305d7bcad4ac29248a74a384034692934a0c54b00a590c27094a - md5: fc5a9ae36c7805979bd58ca55a25066f + size: 9906 + timestamp: 1740719805201 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022805-release.conda + sha256: a507f8b798257c4505a296fd1d7900bcc9695b5eaa5990d5a447f588e203ffb7 + md5: 53a62d22b682cdf446cfcbb5e07a0b4d depends: - - mblack ==25.2.0.dev2025022718 release + - mblack ==25.2.0.dev2025022805 release license: LicenseRef-Modular-Proprietary - size: 249811868 - timestamp: 1740680254354 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022718-release.conda - sha256: 250c35ecccd302e6c7de836ac200a5ece92e74508c2590c585d8803d488fd650 - md5: d88728b468c85902512a0f9b99251035 + size: 249837097 + timestamp: 1740719822740 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022805-release.conda + sha256: 2c06fc3f0a5ff31b90531e477e1bc8edcbf530a05146c9afb148819b3115d4a6 + md5: 654fe24f42ae167dd46e5858b512fd64 depends: - - mblack ==25.2.0.dev2025022718 release + - mblack ==25.2.0.dev2025022805 release license: LicenseRef-Modular-Proprietary - size: 252108573 - timestamp: 1740680207793 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022718-release.conda - sha256: fb28d9e61aa507ea84b470082d3dc96844a24fe672d4e4c57e832655c5d0a202 - md5: dd8734453f7276a258f3351cc5c506c3 + size: 252165614 + timestamp: 1740719805201 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022805-release.conda + sha256: eb316eef88826b46d84532c0cfcde6d56a875aafcfe08d140cd6b90d752f8841 + md5: efed274ef0a65e98815933cfb8b609d2 depends: - - mblack ==25.2.0.dev2025022718 release + - mblack ==25.2.0.dev2025022805 release license: LicenseRef-Modular-Proprietary - size: 217273450 - timestamp: 1740681819160 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022718-release.conda + size: 217300178 + timestamp: 1740721042829 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022805-release.conda noarch: python - sha256: 831b4d62f66f0083321121c6ba25dedab3ee41d5e9f19d9752969592214af398 - md5: f828ace91aa057e4774e84ad459adccf + sha256: 1724ba61123d73c5ae9194dddcaf61e7937123cbd49d0fb122fc78cee0673e6d + md5: 35a33686fe8cccc768034d43f604e672 depends: - - max-core ==25.2.0.dev2025022718 release + - max-core ==25.2.0.dev2025022805 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1357,7 +1357,7 @@ packages: - nvitop >=1.4.1 - opentelemetry-api >=1.29.0 - opentelemetry-exporter-otlp-proto-http >=1.27.0 - - opentelemetry-exporter-prometheus <1.0.0 + - opentelemetry-exporter-prometheus >=0.48b0,<1.1.12.0rc1 - opentelemetry-sdk >=1.29.0,<2.0 - pillow >=10.3.0 - prometheus_client >=0.21.0 @@ -1379,14 +1379,14 @@ packages: - uvloop >=0.21.0 - xgrammar ==0.1.11 license: LicenseRef-Modular-Proprietary - size: 123584411 - timestamp: 1740680254354 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022718-release.conda + size: 123624528 + timestamp: 1740719822740 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022805-release.conda noarch: python - sha256: b9e5755b7bf6314a37a90ef0250c93f5e7c693954d7a6389a97ab9ef06e23cc3 - md5: bfd2e752d0fc9516b78a17169ce9cc78 + sha256: c741ded7e064aba732999cf95e43dda28e6e9cdc59a20254fe32b8bc49739ea6 + md5: ae9b9de4204cb583f9feeb3369809182 depends: - - max-core ==25.2.0.dev2025022718 release + - max-core ==25.2.0.dev2025022805 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1401,7 +1401,7 @@ packages: - nvitop >=1.4.1 - opentelemetry-api >=1.29.0 - opentelemetry-exporter-otlp-proto-http >=1.27.0 - - opentelemetry-exporter-prometheus <1.0.0 + - opentelemetry-exporter-prometheus >=0.48b0,<1.1.12.0rc1 - opentelemetry-sdk >=1.29.0,<2.0 - pillow >=10.3.0 - prometheus_client >=0.21.0 @@ -1423,14 +1423,14 @@ packages: - uvloop >=0.21.0 - xgrammar ==0.1.11 license: LicenseRef-Modular-Proprietary - size: 126004454 - timestamp: 1740680207793 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022718-release.conda + size: 125985562 + timestamp: 1740719805201 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022805-release.conda noarch: python - sha256: 7da9f4655082bb64c2b0cc996ffefa0ce5c49744854ed77a9b0d000e27cf5a55 - md5: b16d498a148aa61dca2a6bfec5cb8e46 + sha256: c56d9f6edeb5caa166d74eefca5d472556e29b4a22a4a7e799ff9f9482af0a62 + md5: c684a1ac57d5ca9a82884bffff428154 depends: - - max-core ==25.2.0.dev2025022718 release + - max-core ==25.2.0.dev2025022805 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1445,7 +1445,7 @@ packages: - nvitop >=1.4.1 - opentelemetry-api >=1.29.0 - opentelemetry-exporter-otlp-proto-http >=1.27.0 - - opentelemetry-exporter-prometheus <1.0.0 + - opentelemetry-exporter-prometheus >=0.48b0,<1.1.12.0rc1 - opentelemetry-sdk >=1.29.0,<2.0 - pillow >=10.3.0 - prometheus_client >=0.21.0 @@ -1467,12 +1467,12 @@ packages: - uvloop >=0.21.0 - xgrammar ==0.1.11 license: LicenseRef-Modular-Proprietary - size: 112658409 - timestamp: 1740681819160 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022718-release.conda + size: 112656033 + timestamp: 1740721042829 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022805-release.conda noarch: python - sha256: ff042a8abfed0e2e36b207e3d4f59a2b4577dea7f099b08d1aaef128ab796f09 - md5: 719ca7123d53415adcdd7f0cb8396c51 + sha256: 8d5cc0e599b2ceecc816efe63442c4295304ae7b3016b42399097de4dbcf1769 + md5: 49a934446d5d99e86689f4373ecfe4c4 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -1484,19 +1484,19 @@ packages: - python license: MIT size: 130852 - timestamp: 1740680254353 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022718-release.conda + timestamp: 1740719805200 +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022805-release.conda noarch: python - sha256: 19c33e23b27e240fee0b2a1d56921802ac88558dc2da417837cd590175561e16 - md5: 6b8d00b15817db11e026f824f7f0ba14 + sha256: d0b2f5c55bb0baea04e0a76469a0106ef60ba50e13f305b653fefb4903b9da60 + md5: 5f877a177817719dfa2b616176dbc409 depends: - - max-core ==25.2.0.dev2025022718 release + - max-core ==25.2.0.dev2025022805 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22981 - timestamp: 1740680254354 + size: 22994 + timestamp: 1740719805201 - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda sha256: 1895f47b7d68581a6facde5cb13ab8c2764c2e53a76bd746f8f98910dc4e08fe md5: 29097e7ea634a45cc5386b95cac6568f diff --git a/examples/notebooks/magic.lock b/examples/notebooks/magic.lock index ee529cc1e2..274f502b9a 100644 --- a/examples/notebooks/magic.lock +++ b/examples/notebooks/magic.lock @@ -93,12 +93,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.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-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022805-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022805-release.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.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.6-pyh29332c3_0.conda @@ -260,12 +260,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.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-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022805-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022805-release.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.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.6-pyh29332c3_0.conda @@ -419,12 +419,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.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-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022805-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022805-release.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.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.6-pyh29332c3_0.conda @@ -2460,48 +2460,48 @@ packages: license_family: BSD size: 14467 timestamp: 1733417051523 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022718-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022805-release.conda noarch: python - sha256: f3dcb14fed5470c0fc521542cbd2f1c56ca7e46d560f46176b8f926198cb3cbd - md5: 01fe5e0cf46c84a6345e323ad1316764 + sha256: 6fe952db050b07af9045ee094df2241255d72ee0bca5663edfd2ce1c9752ec09 + md5: 8e5bdfbc3312e58ca7af7e74b4c1a62a depends: - - max-core ==25.2.0.dev2025022718 release - - max-python ==25.2.0.dev2025022718 release - - mojo-jupyter ==25.2.0.dev2025022718 release - - mblack ==25.2.0.dev2025022718 release + - max-core ==25.2.0.dev2025022805 release + - max-python ==25.2.0.dev2025022805 release + - mojo-jupyter ==25.2.0.dev2025022805 release + - mblack ==25.2.0.dev2025022805 release license: LicenseRef-Modular-Proprietary - size: 9905 - timestamp: 1740680254354 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022718-release.conda - sha256: 847d5767109a305d7bcad4ac29248a74a384034692934a0c54b00a590c27094a - md5: fc5a9ae36c7805979bd58ca55a25066f + size: 9906 + timestamp: 1740719805201 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022805-release.conda + sha256: a507f8b798257c4505a296fd1d7900bcc9695b5eaa5990d5a447f588e203ffb7 + md5: 53a62d22b682cdf446cfcbb5e07a0b4d depends: - - mblack ==25.2.0.dev2025022718 release + - mblack ==25.2.0.dev2025022805 release license: LicenseRef-Modular-Proprietary - size: 249811868 - timestamp: 1740680254354 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022718-release.conda - sha256: 250c35ecccd302e6c7de836ac200a5ece92e74508c2590c585d8803d488fd650 - md5: d88728b468c85902512a0f9b99251035 + size: 249837097 + timestamp: 1740719822740 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022805-release.conda + sha256: 2c06fc3f0a5ff31b90531e477e1bc8edcbf530a05146c9afb148819b3115d4a6 + md5: 654fe24f42ae167dd46e5858b512fd64 depends: - - mblack ==25.2.0.dev2025022718 release + - mblack ==25.2.0.dev2025022805 release license: LicenseRef-Modular-Proprietary - size: 252108573 - timestamp: 1740680207793 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022718-release.conda - sha256: fb28d9e61aa507ea84b470082d3dc96844a24fe672d4e4c57e832655c5d0a202 - md5: dd8734453f7276a258f3351cc5c506c3 + size: 252165614 + timestamp: 1740719805201 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022805-release.conda + sha256: eb316eef88826b46d84532c0cfcde6d56a875aafcfe08d140cd6b90d752f8841 + md5: efed274ef0a65e98815933cfb8b609d2 depends: - - mblack ==25.2.0.dev2025022718 release + - mblack ==25.2.0.dev2025022805 release license: LicenseRef-Modular-Proprietary - size: 217273450 - timestamp: 1740681819160 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022718-release.conda + size: 217300178 + timestamp: 1740721042829 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022805-release.conda noarch: python - sha256: 831b4d62f66f0083321121c6ba25dedab3ee41d5e9f19d9752969592214af398 - md5: f828ace91aa057e4774e84ad459adccf + sha256: 1724ba61123d73c5ae9194dddcaf61e7937123cbd49d0fb122fc78cee0673e6d + md5: 35a33686fe8cccc768034d43f604e672 depends: - - max-core ==25.2.0.dev2025022718 release + - max-core ==25.2.0.dev2025022805 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -2516,7 +2516,7 @@ packages: - nvitop >=1.4.1 - opentelemetry-api >=1.29.0 - opentelemetry-exporter-otlp-proto-http >=1.27.0 - - opentelemetry-exporter-prometheus <1.0.0 + - opentelemetry-exporter-prometheus >=0.48b0,<1.1.12.0rc1 - opentelemetry-sdk >=1.29.0,<2.0 - pillow >=10.3.0 - prometheus_client >=0.21.0 @@ -2538,14 +2538,14 @@ packages: - uvloop >=0.21.0 - xgrammar ==0.1.11 license: LicenseRef-Modular-Proprietary - size: 123584411 - timestamp: 1740680254354 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022718-release.conda + size: 123624528 + timestamp: 1740719822740 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022805-release.conda noarch: python - sha256: b9e5755b7bf6314a37a90ef0250c93f5e7c693954d7a6389a97ab9ef06e23cc3 - md5: bfd2e752d0fc9516b78a17169ce9cc78 + sha256: c741ded7e064aba732999cf95e43dda28e6e9cdc59a20254fe32b8bc49739ea6 + md5: ae9b9de4204cb583f9feeb3369809182 depends: - - max-core ==25.2.0.dev2025022718 release + - max-core ==25.2.0.dev2025022805 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -2560,7 +2560,7 @@ packages: - nvitop >=1.4.1 - opentelemetry-api >=1.29.0 - opentelemetry-exporter-otlp-proto-http >=1.27.0 - - opentelemetry-exporter-prometheus <1.0.0 + - opentelemetry-exporter-prometheus >=0.48b0,<1.1.12.0rc1 - opentelemetry-sdk >=1.29.0,<2.0 - pillow >=10.3.0 - prometheus_client >=0.21.0 @@ -2582,14 +2582,14 @@ packages: - uvloop >=0.21.0 - xgrammar ==0.1.11 license: LicenseRef-Modular-Proprietary - size: 126004454 - timestamp: 1740680207793 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022718-release.conda + size: 125985562 + timestamp: 1740719805201 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022805-release.conda noarch: python - sha256: 7da9f4655082bb64c2b0cc996ffefa0ce5c49744854ed77a9b0d000e27cf5a55 - md5: b16d498a148aa61dca2a6bfec5cb8e46 + sha256: c56d9f6edeb5caa166d74eefca5d472556e29b4a22a4a7e799ff9f9482af0a62 + md5: c684a1ac57d5ca9a82884bffff428154 depends: - - max-core ==25.2.0.dev2025022718 release + - max-core ==25.2.0.dev2025022805 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -2604,7 +2604,7 @@ packages: - nvitop >=1.4.1 - opentelemetry-api >=1.29.0 - opentelemetry-exporter-otlp-proto-http >=1.27.0 - - opentelemetry-exporter-prometheus <1.0.0 + - opentelemetry-exporter-prometheus >=0.48b0,<1.1.12.0rc1 - opentelemetry-sdk >=1.29.0,<2.0 - pillow >=10.3.0 - prometheus_client >=0.21.0 @@ -2626,12 +2626,12 @@ packages: - uvloop >=0.21.0 - xgrammar ==0.1.11 license: LicenseRef-Modular-Proprietary - size: 112658409 - timestamp: 1740681819160 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022718-release.conda + size: 112656033 + timestamp: 1740721042829 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022805-release.conda noarch: python - sha256: ff042a8abfed0e2e36b207e3d4f59a2b4577dea7f099b08d1aaef128ab796f09 - md5: 719ca7123d53415adcdd7f0cb8396c51 + sha256: 8d5cc0e599b2ceecc816efe63442c4295304ae7b3016b42399097de4dbcf1769 + md5: 49a934446d5d99e86689f4373ecfe4c4 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -2643,7 +2643,7 @@ packages: - python license: MIT size: 130852 - timestamp: 1740680254353 + timestamp: 1740719805200 - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.2-pyhd8ed1ab_0.conda sha256: 63d5308ac732b2f8130702c83ee40ce31c5451ebcb6e70075b771cc8f7df0156 md5: 0982b0f06168fe3421d09f70596ca1f0 @@ -2654,18 +2654,18 @@ packages: license_family: BSD size: 68903 timestamp: 1739952304731 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022718-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022805-release.conda noarch: python - sha256: 19c33e23b27e240fee0b2a1d56921802ac88558dc2da417837cd590175561e16 - md5: 6b8d00b15817db11e026f824f7f0ba14 + sha256: d0b2f5c55bb0baea04e0a76469a0106ef60ba50e13f305b653fefb4903b9da60 + md5: 5f877a177817719dfa2b616176dbc409 depends: - - max-core ==25.2.0.dev2025022718 release + - max-core ==25.2.0.dev2025022805 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22981 - timestamp: 1740680254354 + size: 22994 + timestamp: 1740719805201 - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda sha256: 1895f47b7d68581a6facde5cb13ab8c2764c2e53a76bd746f8f98910dc4e08fe md5: 29097e7ea634a45cc5386b95cac6568f diff --git a/examples/offline-inference/magic.lock b/examples/offline-inference/magic.lock index c7344b5c98..3c530fd9ab 100644 --- a/examples/offline-inference/magic.lock +++ b/examples/offline-inference/magic.lock @@ -150,14 +150,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-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-pipelines-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-pipelines-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022805-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-2024.2.2-ha957f24_16.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022805-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/mpc-1.3.1-h24ddda3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/mpfr-4.2.1-h90cbb55_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mpmath-1.3.0-pyhd8ed1ab_1.conda @@ -248,9 +248,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.49.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/triton-3.2.0-cuda126py312h5a3d8a8_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.2-pyhff008b6_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.2-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.2-h801b22e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda @@ -418,13 +418,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-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-pipelines-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-pipelines-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022805-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-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022805-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/mpc-1.3.1-h783934e_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/mpfr-4.2.1-h2305555_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mpmath-1.3.0-pyhd8ed1ab_1.conda @@ -515,9 +515,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.49.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/triton-3.2.0-cuda126py312h1ed5fa8_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.2-pyhff008b6_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.2-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.2-h801b22e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda @@ -665,13 +665,13 @@ 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-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-pipelines-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-pipelines-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022805-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-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022805-release.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/mpc-1.3.1-h8f1351a_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/mpfr-4.2.1-hb693164_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mpmath-1.3.0-pyhd8ed1ab_1.conda @@ -760,9 +760,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.49.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.2-pyhff008b6_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.2-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.2-h801b22e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda @@ -5502,48 +5502,48 @@ packages: license_family: BSD size: 24048 timestamp: 1733219945697 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022718-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022805-release.conda noarch: python - sha256: f3dcb14fed5470c0fc521542cbd2f1c56ca7e46d560f46176b8f926198cb3cbd - md5: 01fe5e0cf46c84a6345e323ad1316764 + sha256: 6fe952db050b07af9045ee094df2241255d72ee0bca5663edfd2ce1c9752ec09 + md5: 8e5bdfbc3312e58ca7af7e74b4c1a62a depends: - - max-core ==25.2.0.dev2025022718 release - - max-python ==25.2.0.dev2025022718 release - - mojo-jupyter ==25.2.0.dev2025022718 release - - mblack ==25.2.0.dev2025022718 release + - max-core ==25.2.0.dev2025022805 release + - max-python ==25.2.0.dev2025022805 release + - mojo-jupyter ==25.2.0.dev2025022805 release + - mblack ==25.2.0.dev2025022805 release license: LicenseRef-Modular-Proprietary - size: 9905 - timestamp: 1740680254354 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022718-release.conda - sha256: 847d5767109a305d7bcad4ac29248a74a384034692934a0c54b00a590c27094a - md5: fc5a9ae36c7805979bd58ca55a25066f + size: 9906 + timestamp: 1740719805201 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022805-release.conda + sha256: a507f8b798257c4505a296fd1d7900bcc9695b5eaa5990d5a447f588e203ffb7 + md5: 53a62d22b682cdf446cfcbb5e07a0b4d depends: - - mblack ==25.2.0.dev2025022718 release + - mblack ==25.2.0.dev2025022805 release license: LicenseRef-Modular-Proprietary - size: 249811868 - timestamp: 1740680254354 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022718-release.conda - sha256: 250c35ecccd302e6c7de836ac200a5ece92e74508c2590c585d8803d488fd650 - md5: d88728b468c85902512a0f9b99251035 + size: 249837097 + timestamp: 1740719822740 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022805-release.conda + sha256: 2c06fc3f0a5ff31b90531e477e1bc8edcbf530a05146c9afb148819b3115d4a6 + md5: 654fe24f42ae167dd46e5858b512fd64 depends: - - mblack ==25.2.0.dev2025022718 release + - mblack ==25.2.0.dev2025022805 release license: LicenseRef-Modular-Proprietary - size: 252108573 - timestamp: 1740680207793 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022718-release.conda - sha256: fb28d9e61aa507ea84b470082d3dc96844a24fe672d4e4c57e832655c5d0a202 - md5: dd8734453f7276a258f3351cc5c506c3 + size: 252165614 + timestamp: 1740719805201 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022805-release.conda + sha256: eb316eef88826b46d84532c0cfcde6d56a875aafcfe08d140cd6b90d752f8841 + md5: efed274ef0a65e98815933cfb8b609d2 depends: - - mblack ==25.2.0.dev2025022718 release + - mblack ==25.2.0.dev2025022805 release license: LicenseRef-Modular-Proprietary - size: 217273450 - timestamp: 1740681819160 -- conda: https://conda.modular.com/max-nightly/noarch/max-pipelines-25.2.0.dev2025022718-release.conda + size: 217300178 + timestamp: 1740721042829 +- conda: https://conda.modular.com/max-nightly/noarch/max-pipelines-25.2.0.dev2025022805-release.conda noarch: python - sha256: 1e46a465f1d8e75afa9822717e6c6ee75965c078d0cd7b217c4f8622847e9fb0 - md5: 7257078fedac4bbfb961c30a84e2c387 + sha256: 3d909e8fd23a5e058ab59ad760423a0ecd55f51ac474a282cd00f698dd958c33 + md5: f511490d5e1d505c3df07f17c3b6d1e6 depends: - - max-python ==25.2.0.dev2025022718 release + - max-python ==25.2.0.dev2025022805 release - aiohttp >=3.11.12 - fastapi >=0.114.2 - gguf >=0.14.0 @@ -5553,7 +5553,7 @@ packages: - nvitop >=1.4.1 - opentelemetry-api >=1.29.0 - opentelemetry-exporter-otlp-proto-http >=1.27.0 - - opentelemetry-exporter-prometheus <1.0.0 + - opentelemetry-exporter-prometheus >=0.48b0,<1.1.12.0rc1 - opentelemetry-sdk >=1.29.0,<2.0 - pillow >=10.3.0 - prometheus_client >=0.21.0 @@ -5575,14 +5575,14 @@ packages: - uvloop >=0.21.0 - xgrammar ==0.1.11 license: LicenseRef-Modular-Proprietary - size: 10365 - timestamp: 1740680254354 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022718-release.conda + size: 10380 + timestamp: 1740719805201 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022805-release.conda noarch: python - sha256: 831b4d62f66f0083321121c6ba25dedab3ee41d5e9f19d9752969592214af398 - md5: f828ace91aa057e4774e84ad459adccf + sha256: 1724ba61123d73c5ae9194dddcaf61e7937123cbd49d0fb122fc78cee0673e6d + md5: 35a33686fe8cccc768034d43f604e672 depends: - - max-core ==25.2.0.dev2025022718 release + - max-core ==25.2.0.dev2025022805 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -5597,7 +5597,7 @@ packages: - nvitop >=1.4.1 - opentelemetry-api >=1.29.0 - opentelemetry-exporter-otlp-proto-http >=1.27.0 - - opentelemetry-exporter-prometheus <1.0.0 + - opentelemetry-exporter-prometheus >=0.48b0,<1.1.12.0rc1 - opentelemetry-sdk >=1.29.0,<2.0 - pillow >=10.3.0 - prometheus_client >=0.21.0 @@ -5619,14 +5619,14 @@ packages: - uvloop >=0.21.0 - xgrammar ==0.1.11 license: LicenseRef-Modular-Proprietary - size: 123584411 - timestamp: 1740680254354 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022718-release.conda + size: 123624528 + timestamp: 1740719822740 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022805-release.conda noarch: python - sha256: b9e5755b7bf6314a37a90ef0250c93f5e7c693954d7a6389a97ab9ef06e23cc3 - md5: bfd2e752d0fc9516b78a17169ce9cc78 + sha256: c741ded7e064aba732999cf95e43dda28e6e9cdc59a20254fe32b8bc49739ea6 + md5: ae9b9de4204cb583f9feeb3369809182 depends: - - max-core ==25.2.0.dev2025022718 release + - max-core ==25.2.0.dev2025022805 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -5641,7 +5641,7 @@ packages: - nvitop >=1.4.1 - opentelemetry-api >=1.29.0 - opentelemetry-exporter-otlp-proto-http >=1.27.0 - - opentelemetry-exporter-prometheus <1.0.0 + - opentelemetry-exporter-prometheus >=0.48b0,<1.1.12.0rc1 - opentelemetry-sdk >=1.29.0,<2.0 - pillow >=10.3.0 - prometheus_client >=0.21.0 @@ -5663,14 +5663,14 @@ packages: - uvloop >=0.21.0 - xgrammar ==0.1.11 license: LicenseRef-Modular-Proprietary - size: 126004454 - timestamp: 1740680207793 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022718-release.conda + size: 125985562 + timestamp: 1740719805201 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022805-release.conda noarch: python - sha256: 7da9f4655082bb64c2b0cc996ffefa0ce5c49744854ed77a9b0d000e27cf5a55 - md5: b16d498a148aa61dca2a6bfec5cb8e46 + sha256: c56d9f6edeb5caa166d74eefca5d472556e29b4a22a4a7e799ff9f9482af0a62 + md5: c684a1ac57d5ca9a82884bffff428154 depends: - - max-core ==25.2.0.dev2025022718 release + - max-core ==25.2.0.dev2025022805 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -5685,7 +5685,7 @@ packages: - nvitop >=1.4.1 - opentelemetry-api >=1.29.0 - opentelemetry-exporter-otlp-proto-http >=1.27.0 - - opentelemetry-exporter-prometheus <1.0.0 + - opentelemetry-exporter-prometheus >=0.48b0,<1.1.12.0rc1 - opentelemetry-sdk >=1.29.0,<2.0 - pillow >=10.3.0 - prometheus_client >=0.21.0 @@ -5707,12 +5707,12 @@ packages: - uvloop >=0.21.0 - xgrammar ==0.1.11 license: LicenseRef-Modular-Proprietary - size: 112658409 - timestamp: 1740681819160 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022718-release.conda + size: 112656033 + timestamp: 1740721042829 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022805-release.conda noarch: python - sha256: ff042a8abfed0e2e36b207e3d4f59a2b4577dea7f099b08d1aaef128ab796f09 - md5: 719ca7123d53415adcdd7f0cb8396c51 + sha256: 8d5cc0e599b2ceecc816efe63442c4295304ae7b3016b42399097de4dbcf1769 + md5: 49a934446d5d99e86689f4373ecfe4c4 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -5724,7 +5724,7 @@ packages: - python license: MIT size: 130852 - timestamp: 1740680254353 + timestamp: 1740719805200 - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda sha256: 78c1bbe1723449c52b7a9df1af2ee5f005209f67e40b6e1d3c7619127c43b1c7 md5: 592132998493b3ff25fd7479396e8351 @@ -5748,18 +5748,18 @@ packages: license_family: Proprietary size: 124718448 timestamp: 1730231808335 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022718-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022805-release.conda noarch: python - sha256: 19c33e23b27e240fee0b2a1d56921802ac88558dc2da417837cd590175561e16 - md5: 6b8d00b15817db11e026f824f7f0ba14 + sha256: d0b2f5c55bb0baea04e0a76469a0106ef60ba50e13f305b653fefb4903b9da60 + md5: 5f877a177817719dfa2b616176dbc409 depends: - - max-core ==25.2.0.dev2025022718 release + - max-core ==25.2.0.dev2025022805 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22981 - timestamp: 1740680254354 + size: 22994 + timestamp: 1740719805201 - conda: https://conda.anaconda.org/conda-forge/linux-64/mpc-1.3.1-h24ddda3_1.conda sha256: 1bf794ddf2c8b3a3e14ae182577c624fa92dea975537accff4bc7e5fea085212 md5: aa14b9a5196a6d8dd364164b7ce56acf @@ -8294,42 +8294,41 @@ packages: license_family: MIT size: 103306412 timestamp: 1738676445445 -- conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda - sha256: ef695490e895c2ad552c77ec497b899b09fd4ad4ab07edcf5649f5994cf92a35 - md5: 170a0398946d8f5b454e592672b6fc20 +- conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.2-pyhff008b6_0.conda + sha256: fa6eeb42e3bddff74126dd61b01b21a3f4f4791368e93bc5a5775563542b2d4e + md5: 1152565b06e3dc27794c3c11f1050005 depends: + - typer-slim-standard ==0.15.2 h801b22e_0 - python >=3.9 - - typer-slim-standard 0.15.1 hd8ed1ab_0 + - python license: MIT - license_family: MIT - size: 56175 - timestamp: 1733408582623 -- conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda - sha256: d4965516f35e0805199de6596c4ac76c4ad3d6b012be35e532102f9e53ecb860 - md5: 0218b16f5a1dd569e575a7a6415489db + size: 76158 + timestamp: 1740697495168 +- conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.2-pyh29332c3_0.conda + sha256: c094713560bfacab0539c863010a5223171d9980cbd419cc799e474ae15aca08 + md5: 7c8d9609e2cfe08dd7672e10fe7e7de9 depends: - - click >=8.0.0 - python >=3.9 + - click >=8.0.0 - typing_extensions >=3.7.4.3 + - python constrains: + - typer 0.15.2.* - rich >=10.11.0 - - typer >=0.15.1,<0.15.2.0a0 - shellingham >=1.3.0 license: MIT - license_family: MIT - size: 43592 - timestamp: 1733408569554 -- conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda - sha256: f31c56fe98315da8b9ce848256c17e0b9f87896b41a6ccf0c9cc74644dcef20f - md5: 4e603c43bfdfc7b533be087c3e070cc9 + size: 45866 + timestamp: 1740697495167 +- conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.2-h801b22e_0.conda + sha256: 79b6b34e90e50e041908939d53053f69285714b0082a0370fba6ab3b38315c8d + md5: ea164fc4e03f61f7ff3c1166001969af depends: + - typer-slim ==0.15.2 pyh29332c3_0 - rich - shellingham - - typer-slim 0.15.1 pyhd8ed1ab_0 license: MIT - license_family: MIT - size: 49531 - timestamp: 1733408570063 + size: 5409 + timestamp: 1740697495168 - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda noarch: python sha256: c8e9c1c467b5f960b627d7adc1c65fece8e929a3de89967e91ef0f726422fd32 diff --git a/mojo/magic.lock b/mojo/magic.lock index 7c733a088a..d586b02bb2 100644 --- a/mojo/magic.lock +++ b/mojo/magic.lock @@ -43,11 +43,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/lit-19.1.7-pyhd8ed1ab_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022805-release.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-h2d0b736_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda @@ -109,11 +109,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/lit-19.1.7-pyhd8ed1ab_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022805-release.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-ha32ae93_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda @@ -166,11 +166,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/lit-19.1.7-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022805-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda @@ -1313,48 +1313,48 @@ packages: license_family: APACHE size: 280830 timestamp: 1736986295869 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022718-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022805-release.conda noarch: python - sha256: f3dcb14fed5470c0fc521542cbd2f1c56ca7e46d560f46176b8f926198cb3cbd - md5: 01fe5e0cf46c84a6345e323ad1316764 + sha256: 6fe952db050b07af9045ee094df2241255d72ee0bca5663edfd2ce1c9752ec09 + md5: 8e5bdfbc3312e58ca7af7e74b4c1a62a depends: - - max-core ==25.2.0.dev2025022718 release - - max-python ==25.2.0.dev2025022718 release - - mojo-jupyter ==25.2.0.dev2025022718 release - - mblack ==25.2.0.dev2025022718 release + - max-core ==25.2.0.dev2025022805 release + - max-python ==25.2.0.dev2025022805 release + - mojo-jupyter ==25.2.0.dev2025022805 release + - mblack ==25.2.0.dev2025022805 release license: LicenseRef-Modular-Proprietary - size: 9905 - timestamp: 1740680254354 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022718-release.conda - sha256: 847d5767109a305d7bcad4ac29248a74a384034692934a0c54b00a590c27094a - md5: fc5a9ae36c7805979bd58ca55a25066f + size: 9906 + timestamp: 1740719805201 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022805-release.conda + sha256: a507f8b798257c4505a296fd1d7900bcc9695b5eaa5990d5a447f588e203ffb7 + md5: 53a62d22b682cdf446cfcbb5e07a0b4d depends: - - mblack ==25.2.0.dev2025022718 release + - mblack ==25.2.0.dev2025022805 release license: LicenseRef-Modular-Proprietary - size: 249811868 - timestamp: 1740680254354 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022718-release.conda - sha256: 250c35ecccd302e6c7de836ac200a5ece92e74508c2590c585d8803d488fd650 - md5: d88728b468c85902512a0f9b99251035 + size: 249837097 + timestamp: 1740719822740 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022805-release.conda + sha256: 2c06fc3f0a5ff31b90531e477e1bc8edcbf530a05146c9afb148819b3115d4a6 + md5: 654fe24f42ae167dd46e5858b512fd64 depends: - - mblack ==25.2.0.dev2025022718 release + - mblack ==25.2.0.dev2025022805 release license: LicenseRef-Modular-Proprietary - size: 252108573 - timestamp: 1740680207793 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022718-release.conda - sha256: fb28d9e61aa507ea84b470082d3dc96844a24fe672d4e4c57e832655c5d0a202 - md5: dd8734453f7276a258f3351cc5c506c3 + size: 252165614 + timestamp: 1740719805201 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022805-release.conda + sha256: eb316eef88826b46d84532c0cfcde6d56a875aafcfe08d140cd6b90d752f8841 + md5: efed274ef0a65e98815933cfb8b609d2 depends: - - mblack ==25.2.0.dev2025022718 release + - mblack ==25.2.0.dev2025022805 release license: LicenseRef-Modular-Proprietary - size: 217273450 - timestamp: 1740681819160 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022718-release.conda + size: 217300178 + timestamp: 1740721042829 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022805-release.conda noarch: python - sha256: 831b4d62f66f0083321121c6ba25dedab3ee41d5e9f19d9752969592214af398 - md5: f828ace91aa057e4774e84ad459adccf + sha256: 1724ba61123d73c5ae9194dddcaf61e7937123cbd49d0fb122fc78cee0673e6d + md5: 35a33686fe8cccc768034d43f604e672 depends: - - max-core ==25.2.0.dev2025022718 release + - max-core ==25.2.0.dev2025022805 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1369,7 +1369,7 @@ packages: - nvitop >=1.4.1 - opentelemetry-api >=1.29.0 - opentelemetry-exporter-otlp-proto-http >=1.27.0 - - opentelemetry-exporter-prometheus <1.0.0 + - opentelemetry-exporter-prometheus >=0.48b0,<1.1.12.0rc1 - opentelemetry-sdk >=1.29.0,<2.0 - pillow >=10.3.0 - prometheus_client >=0.21.0 @@ -1391,14 +1391,14 @@ packages: - uvloop >=0.21.0 - xgrammar ==0.1.11 license: LicenseRef-Modular-Proprietary - size: 123584411 - timestamp: 1740680254354 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022718-release.conda + size: 123624528 + timestamp: 1740719822740 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022805-release.conda noarch: python - sha256: b9e5755b7bf6314a37a90ef0250c93f5e7c693954d7a6389a97ab9ef06e23cc3 - md5: bfd2e752d0fc9516b78a17169ce9cc78 + sha256: c741ded7e064aba732999cf95e43dda28e6e9cdc59a20254fe32b8bc49739ea6 + md5: ae9b9de4204cb583f9feeb3369809182 depends: - - max-core ==25.2.0.dev2025022718 release + - max-core ==25.2.0.dev2025022805 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1413,7 +1413,7 @@ packages: - nvitop >=1.4.1 - opentelemetry-api >=1.29.0 - opentelemetry-exporter-otlp-proto-http >=1.27.0 - - opentelemetry-exporter-prometheus <1.0.0 + - opentelemetry-exporter-prometheus >=0.48b0,<1.1.12.0rc1 - opentelemetry-sdk >=1.29.0,<2.0 - pillow >=10.3.0 - prometheus_client >=0.21.0 @@ -1435,14 +1435,14 @@ packages: - uvloop >=0.21.0 - xgrammar ==0.1.11 license: LicenseRef-Modular-Proprietary - size: 126004454 - timestamp: 1740680207793 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022718-release.conda + size: 125985562 + timestamp: 1740719805201 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022805-release.conda noarch: python - sha256: 7da9f4655082bb64c2b0cc996ffefa0ce5c49744854ed77a9b0d000e27cf5a55 - md5: b16d498a148aa61dca2a6bfec5cb8e46 + sha256: c56d9f6edeb5caa166d74eefca5d472556e29b4a22a4a7e799ff9f9482af0a62 + md5: c684a1ac57d5ca9a82884bffff428154 depends: - - max-core ==25.2.0.dev2025022718 release + - max-core ==25.2.0.dev2025022805 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1457,7 +1457,7 @@ packages: - nvitop >=1.4.1 - opentelemetry-api >=1.29.0 - opentelemetry-exporter-otlp-proto-http >=1.27.0 - - opentelemetry-exporter-prometheus <1.0.0 + - opentelemetry-exporter-prometheus >=0.48b0,<1.1.12.0rc1 - opentelemetry-sdk >=1.29.0,<2.0 - pillow >=10.3.0 - prometheus_client >=0.21.0 @@ -1479,12 +1479,12 @@ packages: - uvloop >=0.21.0 - xgrammar ==0.1.11 license: LicenseRef-Modular-Proprietary - size: 112658409 - timestamp: 1740681819160 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022718-release.conda + size: 112656033 + timestamp: 1740721042829 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022805-release.conda noarch: python - sha256: ff042a8abfed0e2e36b207e3d4f59a2b4577dea7f099b08d1aaef128ab796f09 - md5: 719ca7123d53415adcdd7f0cb8396c51 + sha256: 8d5cc0e599b2ceecc816efe63442c4295304ae7b3016b42399097de4dbcf1769 + md5: 49a934446d5d99e86689f4373ecfe4c4 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -1496,19 +1496,19 @@ packages: - python license: MIT size: 130852 - timestamp: 1740680254353 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022718-release.conda + timestamp: 1740719805200 +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022805-release.conda noarch: python - sha256: 19c33e23b27e240fee0b2a1d56921802ac88558dc2da417837cd590175561e16 - md5: 6b8d00b15817db11e026f824f7f0ba14 + sha256: d0b2f5c55bb0baea04e0a76469a0106ef60ba50e13f305b653fefb4903b9da60 + md5: 5f877a177817719dfa2b616176dbc409 depends: - - max-core ==25.2.0.dev2025022718 release + - max-core ==25.2.0.dev2025022805 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22981 - timestamp: 1740680254354 + size: 22994 + timestamp: 1740719805201 - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda sha256: 1895f47b7d68581a6facde5cb13ab8c2764c2e53a76bd746f8f98910dc4e08fe md5: 29097e7ea634a45cc5386b95cac6568f diff --git a/src/max/magic.lock b/src/max/magic.lock index c7344b5c98..3c530fd9ab 100644 --- a/src/max/magic.lock +++ b/src/max/magic.lock @@ -150,14 +150,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-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-pipelines-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-pipelines-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022805-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-2024.2.2-ha957f24_16.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022805-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/mpc-1.3.1-h24ddda3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/mpfr-4.2.1-h90cbb55_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mpmath-1.3.0-pyhd8ed1ab_1.conda @@ -248,9 +248,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.49.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/triton-3.2.0-cuda126py312h5a3d8a8_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.2-pyhff008b6_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.2-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.2-h801b22e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda @@ -418,13 +418,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-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-pipelines-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-pipelines-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022805-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-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022805-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/mpc-1.3.1-h783934e_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/mpfr-4.2.1-h2305555_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mpmath-1.3.0-pyhd8ed1ab_1.conda @@ -515,9 +515,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.49.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/triton-3.2.0-cuda126py312h1ed5fa8_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.2-pyhff008b6_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.2-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.2-h801b22e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda @@ -665,13 +665,13 @@ 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-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-pipelines-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-pipelines-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022805-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-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022805-release.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/mpc-1.3.1-h8f1351a_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/mpfr-4.2.1-hb693164_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mpmath-1.3.0-pyhd8ed1ab_1.conda @@ -760,9 +760,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.49.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.2-pyhff008b6_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.2-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.2-h801b22e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda @@ -5502,48 +5502,48 @@ packages: license_family: BSD size: 24048 timestamp: 1733219945697 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022718-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022805-release.conda noarch: python - sha256: f3dcb14fed5470c0fc521542cbd2f1c56ca7e46d560f46176b8f926198cb3cbd - md5: 01fe5e0cf46c84a6345e323ad1316764 + sha256: 6fe952db050b07af9045ee094df2241255d72ee0bca5663edfd2ce1c9752ec09 + md5: 8e5bdfbc3312e58ca7af7e74b4c1a62a depends: - - max-core ==25.2.0.dev2025022718 release - - max-python ==25.2.0.dev2025022718 release - - mojo-jupyter ==25.2.0.dev2025022718 release - - mblack ==25.2.0.dev2025022718 release + - max-core ==25.2.0.dev2025022805 release + - max-python ==25.2.0.dev2025022805 release + - mojo-jupyter ==25.2.0.dev2025022805 release + - mblack ==25.2.0.dev2025022805 release license: LicenseRef-Modular-Proprietary - size: 9905 - timestamp: 1740680254354 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022718-release.conda - sha256: 847d5767109a305d7bcad4ac29248a74a384034692934a0c54b00a590c27094a - md5: fc5a9ae36c7805979bd58ca55a25066f + size: 9906 + timestamp: 1740719805201 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022805-release.conda + sha256: a507f8b798257c4505a296fd1d7900bcc9695b5eaa5990d5a447f588e203ffb7 + md5: 53a62d22b682cdf446cfcbb5e07a0b4d depends: - - mblack ==25.2.0.dev2025022718 release + - mblack ==25.2.0.dev2025022805 release license: LicenseRef-Modular-Proprietary - size: 249811868 - timestamp: 1740680254354 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022718-release.conda - sha256: 250c35ecccd302e6c7de836ac200a5ece92e74508c2590c585d8803d488fd650 - md5: d88728b468c85902512a0f9b99251035 + size: 249837097 + timestamp: 1740719822740 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022805-release.conda + sha256: 2c06fc3f0a5ff31b90531e477e1bc8edcbf530a05146c9afb148819b3115d4a6 + md5: 654fe24f42ae167dd46e5858b512fd64 depends: - - mblack ==25.2.0.dev2025022718 release + - mblack ==25.2.0.dev2025022805 release license: LicenseRef-Modular-Proprietary - size: 252108573 - timestamp: 1740680207793 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022718-release.conda - sha256: fb28d9e61aa507ea84b470082d3dc96844a24fe672d4e4c57e832655c5d0a202 - md5: dd8734453f7276a258f3351cc5c506c3 + size: 252165614 + timestamp: 1740719805201 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022805-release.conda + sha256: eb316eef88826b46d84532c0cfcde6d56a875aafcfe08d140cd6b90d752f8841 + md5: efed274ef0a65e98815933cfb8b609d2 depends: - - mblack ==25.2.0.dev2025022718 release + - mblack ==25.2.0.dev2025022805 release license: LicenseRef-Modular-Proprietary - size: 217273450 - timestamp: 1740681819160 -- conda: https://conda.modular.com/max-nightly/noarch/max-pipelines-25.2.0.dev2025022718-release.conda + size: 217300178 + timestamp: 1740721042829 +- conda: https://conda.modular.com/max-nightly/noarch/max-pipelines-25.2.0.dev2025022805-release.conda noarch: python - sha256: 1e46a465f1d8e75afa9822717e6c6ee75965c078d0cd7b217c4f8622847e9fb0 - md5: 7257078fedac4bbfb961c30a84e2c387 + sha256: 3d909e8fd23a5e058ab59ad760423a0ecd55f51ac474a282cd00f698dd958c33 + md5: f511490d5e1d505c3df07f17c3b6d1e6 depends: - - max-python ==25.2.0.dev2025022718 release + - max-python ==25.2.0.dev2025022805 release - aiohttp >=3.11.12 - fastapi >=0.114.2 - gguf >=0.14.0 @@ -5553,7 +5553,7 @@ packages: - nvitop >=1.4.1 - opentelemetry-api >=1.29.0 - opentelemetry-exporter-otlp-proto-http >=1.27.0 - - opentelemetry-exporter-prometheus <1.0.0 + - opentelemetry-exporter-prometheus >=0.48b0,<1.1.12.0rc1 - opentelemetry-sdk >=1.29.0,<2.0 - pillow >=10.3.0 - prometheus_client >=0.21.0 @@ -5575,14 +5575,14 @@ packages: - uvloop >=0.21.0 - xgrammar ==0.1.11 license: LicenseRef-Modular-Proprietary - size: 10365 - timestamp: 1740680254354 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022718-release.conda + size: 10380 + timestamp: 1740719805201 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022805-release.conda noarch: python - sha256: 831b4d62f66f0083321121c6ba25dedab3ee41d5e9f19d9752969592214af398 - md5: f828ace91aa057e4774e84ad459adccf + sha256: 1724ba61123d73c5ae9194dddcaf61e7937123cbd49d0fb122fc78cee0673e6d + md5: 35a33686fe8cccc768034d43f604e672 depends: - - max-core ==25.2.0.dev2025022718 release + - max-core ==25.2.0.dev2025022805 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -5597,7 +5597,7 @@ packages: - nvitop >=1.4.1 - opentelemetry-api >=1.29.0 - opentelemetry-exporter-otlp-proto-http >=1.27.0 - - opentelemetry-exporter-prometheus <1.0.0 + - opentelemetry-exporter-prometheus >=0.48b0,<1.1.12.0rc1 - opentelemetry-sdk >=1.29.0,<2.0 - pillow >=10.3.0 - prometheus_client >=0.21.0 @@ -5619,14 +5619,14 @@ packages: - uvloop >=0.21.0 - xgrammar ==0.1.11 license: LicenseRef-Modular-Proprietary - size: 123584411 - timestamp: 1740680254354 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022718-release.conda + size: 123624528 + timestamp: 1740719822740 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022805-release.conda noarch: python - sha256: b9e5755b7bf6314a37a90ef0250c93f5e7c693954d7a6389a97ab9ef06e23cc3 - md5: bfd2e752d0fc9516b78a17169ce9cc78 + sha256: c741ded7e064aba732999cf95e43dda28e6e9cdc59a20254fe32b8bc49739ea6 + md5: ae9b9de4204cb583f9feeb3369809182 depends: - - max-core ==25.2.0.dev2025022718 release + - max-core ==25.2.0.dev2025022805 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -5641,7 +5641,7 @@ packages: - nvitop >=1.4.1 - opentelemetry-api >=1.29.0 - opentelemetry-exporter-otlp-proto-http >=1.27.0 - - opentelemetry-exporter-prometheus <1.0.0 + - opentelemetry-exporter-prometheus >=0.48b0,<1.1.12.0rc1 - opentelemetry-sdk >=1.29.0,<2.0 - pillow >=10.3.0 - prometheus_client >=0.21.0 @@ -5663,14 +5663,14 @@ packages: - uvloop >=0.21.0 - xgrammar ==0.1.11 license: LicenseRef-Modular-Proprietary - size: 126004454 - timestamp: 1740680207793 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022718-release.conda + size: 125985562 + timestamp: 1740719805201 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022805-release.conda noarch: python - sha256: 7da9f4655082bb64c2b0cc996ffefa0ce5c49744854ed77a9b0d000e27cf5a55 - md5: b16d498a148aa61dca2a6bfec5cb8e46 + sha256: c56d9f6edeb5caa166d74eefca5d472556e29b4a22a4a7e799ff9f9482af0a62 + md5: c684a1ac57d5ca9a82884bffff428154 depends: - - max-core ==25.2.0.dev2025022718 release + - max-core ==25.2.0.dev2025022805 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -5685,7 +5685,7 @@ packages: - nvitop >=1.4.1 - opentelemetry-api >=1.29.0 - opentelemetry-exporter-otlp-proto-http >=1.27.0 - - opentelemetry-exporter-prometheus <1.0.0 + - opentelemetry-exporter-prometheus >=0.48b0,<1.1.12.0rc1 - opentelemetry-sdk >=1.29.0,<2.0 - pillow >=10.3.0 - prometheus_client >=0.21.0 @@ -5707,12 +5707,12 @@ packages: - uvloop >=0.21.0 - xgrammar ==0.1.11 license: LicenseRef-Modular-Proprietary - size: 112658409 - timestamp: 1740681819160 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022718-release.conda + size: 112656033 + timestamp: 1740721042829 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022805-release.conda noarch: python - sha256: ff042a8abfed0e2e36b207e3d4f59a2b4577dea7f099b08d1aaef128ab796f09 - md5: 719ca7123d53415adcdd7f0cb8396c51 + sha256: 8d5cc0e599b2ceecc816efe63442c4295304ae7b3016b42399097de4dbcf1769 + md5: 49a934446d5d99e86689f4373ecfe4c4 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -5724,7 +5724,7 @@ packages: - python license: MIT size: 130852 - timestamp: 1740680254353 + timestamp: 1740719805200 - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda sha256: 78c1bbe1723449c52b7a9df1af2ee5f005209f67e40b6e1d3c7619127c43b1c7 md5: 592132998493b3ff25fd7479396e8351 @@ -5748,18 +5748,18 @@ packages: license_family: Proprietary size: 124718448 timestamp: 1730231808335 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022718-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022805-release.conda noarch: python - sha256: 19c33e23b27e240fee0b2a1d56921802ac88558dc2da417837cd590175561e16 - md5: 6b8d00b15817db11e026f824f7f0ba14 + sha256: d0b2f5c55bb0baea04e0a76469a0106ef60ba50e13f305b653fefb4903b9da60 + md5: 5f877a177817719dfa2b616176dbc409 depends: - - max-core ==25.2.0.dev2025022718 release + - max-core ==25.2.0.dev2025022805 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22981 - timestamp: 1740680254354 + size: 22994 + timestamp: 1740719805201 - conda: https://conda.anaconda.org/conda-forge/linux-64/mpc-1.3.1-h24ddda3_1.conda sha256: 1bf794ddf2c8b3a3e14ae182577c624fa92dea975537accff4bc7e5fea085212 md5: aa14b9a5196a6d8dd364164b7ce56acf @@ -8294,42 +8294,41 @@ packages: license_family: MIT size: 103306412 timestamp: 1738676445445 -- conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda - sha256: ef695490e895c2ad552c77ec497b899b09fd4ad4ab07edcf5649f5994cf92a35 - md5: 170a0398946d8f5b454e592672b6fc20 +- conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.2-pyhff008b6_0.conda + sha256: fa6eeb42e3bddff74126dd61b01b21a3f4f4791368e93bc5a5775563542b2d4e + md5: 1152565b06e3dc27794c3c11f1050005 depends: + - typer-slim-standard ==0.15.2 h801b22e_0 - python >=3.9 - - typer-slim-standard 0.15.1 hd8ed1ab_0 + - python license: MIT - license_family: MIT - size: 56175 - timestamp: 1733408582623 -- conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda - sha256: d4965516f35e0805199de6596c4ac76c4ad3d6b012be35e532102f9e53ecb860 - md5: 0218b16f5a1dd569e575a7a6415489db + size: 76158 + timestamp: 1740697495168 +- conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.2-pyh29332c3_0.conda + sha256: c094713560bfacab0539c863010a5223171d9980cbd419cc799e474ae15aca08 + md5: 7c8d9609e2cfe08dd7672e10fe7e7de9 depends: - - click >=8.0.0 - python >=3.9 + - click >=8.0.0 - typing_extensions >=3.7.4.3 + - python constrains: + - typer 0.15.2.* - rich >=10.11.0 - - typer >=0.15.1,<0.15.2.0a0 - shellingham >=1.3.0 license: MIT - license_family: MIT - size: 43592 - timestamp: 1733408569554 -- conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda - sha256: f31c56fe98315da8b9ce848256c17e0b9f87896b41a6ccf0c9cc74644dcef20f - md5: 4e603c43bfdfc7b533be087c3e070cc9 + size: 45866 + timestamp: 1740697495167 +- conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.2-h801b22e_0.conda + sha256: 79b6b34e90e50e041908939d53053f69285714b0082a0370fba6ab3b38315c8d + md5: ea164fc4e03f61f7ff3c1166001969af depends: + - typer-slim ==0.15.2 pyh29332c3_0 - rich - shellingham - - typer-slim 0.15.1 pyhd8ed1ab_0 license: MIT - license_family: MIT - size: 49531 - timestamp: 1733408570063 + size: 5409 + timestamp: 1740697495168 - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda noarch: python sha256: c8e9c1c467b5f960b627d7adc1c65fece8e929a3de89967e91ef0f726422fd32 diff --git a/tutorials/hello-magic/local/magic.lock b/tutorials/hello-magic/local/magic.lock index 2d7db9d728..db19c74a8c 100644 --- a/tutorials/hello-magic/local/magic.lock +++ b/tutorials/hello-magic/local/magic.lock @@ -75,14 +75,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/llvm-openmp-15.0.7-h0cdce71_0.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-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022805-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-2022.1.0-h84fe81f_915.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-devel-2022.1.0-ha770c72_916.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-include-2022.1.0-h84fe81f_915.tar.bz2 - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022805-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/mpc-1.3.1-h24ddda3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/mpfr-4.2.1-h90cbb55_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mpmath-1.3.0-pyhd8ed1ab_1.conda @@ -154,11 +154,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-15.0.7-h7cfbb63_0.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-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022805-release.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/mpc-1.3.1-h8f1351a_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/mpfr-4.2.1-hb693164_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mpmath-1.3.0-pyhd8ed1ab_1.conda @@ -1400,40 +1400,40 @@ packages: license_family: BSD size: 24048 timestamp: 1733219945697 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022718-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022805-release.conda noarch: python - sha256: f3dcb14fed5470c0fc521542cbd2f1c56ca7e46d560f46176b8f926198cb3cbd - md5: 01fe5e0cf46c84a6345e323ad1316764 + sha256: 6fe952db050b07af9045ee094df2241255d72ee0bca5663edfd2ce1c9752ec09 + md5: 8e5bdfbc3312e58ca7af7e74b4c1a62a depends: - - max-core ==25.2.0.dev2025022718 release - - max-python ==25.2.0.dev2025022718 release - - mojo-jupyter ==25.2.0.dev2025022718 release - - mblack ==25.2.0.dev2025022718 release + - max-core ==25.2.0.dev2025022805 release + - max-python ==25.2.0.dev2025022805 release + - mojo-jupyter ==25.2.0.dev2025022805 release + - mblack ==25.2.0.dev2025022805 release license: LicenseRef-Modular-Proprietary - size: 9905 - timestamp: 1740680254354 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022718-release.conda - sha256: 847d5767109a305d7bcad4ac29248a74a384034692934a0c54b00a590c27094a - md5: fc5a9ae36c7805979bd58ca55a25066f + size: 9906 + timestamp: 1740719805201 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022805-release.conda + sha256: a507f8b798257c4505a296fd1d7900bcc9695b5eaa5990d5a447f588e203ffb7 + md5: 53a62d22b682cdf446cfcbb5e07a0b4d depends: - - mblack ==25.2.0.dev2025022718 release + - mblack ==25.2.0.dev2025022805 release license: LicenseRef-Modular-Proprietary - size: 249811868 - timestamp: 1740680254354 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022718-release.conda - sha256: fb28d9e61aa507ea84b470082d3dc96844a24fe672d4e4c57e832655c5d0a202 - md5: dd8734453f7276a258f3351cc5c506c3 + size: 249837097 + timestamp: 1740719822740 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022805-release.conda + sha256: eb316eef88826b46d84532c0cfcde6d56a875aafcfe08d140cd6b90d752f8841 + md5: efed274ef0a65e98815933cfb8b609d2 depends: - - mblack ==25.2.0.dev2025022718 release + - mblack ==25.2.0.dev2025022805 release license: LicenseRef-Modular-Proprietary - size: 217273450 - timestamp: 1740681819160 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022718-release.conda + size: 217300178 + timestamp: 1740721042829 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022805-release.conda noarch: python - sha256: 831b4d62f66f0083321121c6ba25dedab3ee41d5e9f19d9752969592214af398 - md5: f828ace91aa057e4774e84ad459adccf + sha256: 1724ba61123d73c5ae9194dddcaf61e7937123cbd49d0fb122fc78cee0673e6d + md5: 35a33686fe8cccc768034d43f604e672 depends: - - max-core ==25.2.0.dev2025022718 release + - max-core ==25.2.0.dev2025022805 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1448,7 +1448,7 @@ packages: - nvitop >=1.4.1 - opentelemetry-api >=1.29.0 - opentelemetry-exporter-otlp-proto-http >=1.27.0 - - opentelemetry-exporter-prometheus <1.0.0 + - opentelemetry-exporter-prometheus >=0.48b0,<1.1.12.0rc1 - opentelemetry-sdk >=1.29.0,<2.0 - pillow >=10.3.0 - prometheus_client >=0.21.0 @@ -1470,14 +1470,14 @@ packages: - uvloop >=0.21.0 - xgrammar ==0.1.11 license: LicenseRef-Modular-Proprietary - size: 123584411 - timestamp: 1740680254354 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022718-release.conda + size: 123624528 + timestamp: 1740719822740 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022805-release.conda noarch: python - sha256: 7da9f4655082bb64c2b0cc996ffefa0ce5c49744854ed77a9b0d000e27cf5a55 - md5: b16d498a148aa61dca2a6bfec5cb8e46 + sha256: c56d9f6edeb5caa166d74eefca5d472556e29b4a22a4a7e799ff9f9482af0a62 + md5: c684a1ac57d5ca9a82884bffff428154 depends: - - max-core ==25.2.0.dev2025022718 release + - max-core ==25.2.0.dev2025022805 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1492,7 +1492,7 @@ packages: - nvitop >=1.4.1 - opentelemetry-api >=1.29.0 - opentelemetry-exporter-otlp-proto-http >=1.27.0 - - opentelemetry-exporter-prometheus <1.0.0 + - opentelemetry-exporter-prometheus >=0.48b0,<1.1.12.0rc1 - opentelemetry-sdk >=1.29.0,<2.0 - pillow >=10.3.0 - prometheus_client >=0.21.0 @@ -1514,12 +1514,12 @@ packages: - uvloop >=0.21.0 - xgrammar ==0.1.11 license: LicenseRef-Modular-Proprietary - size: 112658409 - timestamp: 1740681819160 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022718-release.conda + size: 112656033 + timestamp: 1740721042829 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022805-release.conda noarch: python - sha256: ff042a8abfed0e2e36b207e3d4f59a2b4577dea7f099b08d1aaef128ab796f09 - md5: 719ca7123d53415adcdd7f0cb8396c51 + sha256: 8d5cc0e599b2ceecc816efe63442c4295304ae7b3016b42399097de4dbcf1769 + md5: 49a934446d5d99e86689f4373ecfe4c4 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -1531,7 +1531,7 @@ packages: - python license: MIT size: 130852 - timestamp: 1740680254353 + timestamp: 1740719805200 - conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-2022.1.0-h84fe81f_915.tar.bz2 sha256: 767318c4f2057822a7ebc238d6065ce12c6ae60df4ab892758adb79b1057ce02 md5: b9c8f925797a93dbff45e1626b025a6b @@ -1567,18 +1567,18 @@ packages: license_family: Proprietary size: 762563 timestamp: 1652946186347 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022718-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022805-release.conda noarch: python - sha256: 19c33e23b27e240fee0b2a1d56921802ac88558dc2da417837cd590175561e16 - md5: 6b8d00b15817db11e026f824f7f0ba14 + sha256: d0b2f5c55bb0baea04e0a76469a0106ef60ba50e13f305b653fefb4903b9da60 + md5: 5f877a177817719dfa2b616176dbc409 depends: - - max-core ==25.2.0.dev2025022718 release + - max-core ==25.2.0.dev2025022805 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22981 - timestamp: 1740680254354 + size: 22994 + timestamp: 1740719805201 - conda: https://conda.anaconda.org/conda-forge/linux-64/mpc-1.3.1-h24ddda3_1.conda sha256: 1bf794ddf2c8b3a3e14ae182577c624fa92dea975537accff4bc7e5fea085212 md5: aa14b9a5196a6d8dd364164b7ce56acf diff --git a/tutorials/hello-magic/magic.lock b/tutorials/hello-magic/magic.lock index d2c69e5aa3..eafcc2a768 100644 --- a/tutorials/hello-magic/magic.lock +++ b/tutorials/hello-magic/magic.lock @@ -77,14 +77,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/llvm-openmp-15.0.7-h0cdce71_0.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-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022805-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-2022.1.0-h84fe81f_915.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-devel-2022.1.0-ha770c72_916.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-include-2022.1.0-h84fe81f_915.tar.bz2 - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022805-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/mpc-1.3.1-h24ddda3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/mpfr-4.2.1-h90cbb55_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mpmath-1.3.0-pyhd8ed1ab_1.conda @@ -164,11 +164,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-15.0.7-h7cfbb63_0.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-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022805-release.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/mpc-1.3.1-h8f1351a_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/mpfr-4.2.1-hb693164_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mpmath-1.3.0-pyhd8ed1ab_1.conda @@ -286,14 +286,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/llvm-openmp-15.0.7-h0cdce71_0.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-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022805-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-2022.1.0-h84fe81f_915.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-devel-2022.1.0-ha770c72_916.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-include-2022.1.0-h84fe81f_915.tar.bz2 - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022805-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/mpc-1.3.1-h24ddda3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/mpfr-4.2.1-h90cbb55_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mpmath-1.3.0-pyhd8ed1ab_1.conda @@ -376,11 +376,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-15.0.7-h7cfbb63_0.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-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022805-release.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/mpc-1.3.1-h8f1351a_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/mpfr-4.2.1-hb693164_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mpmath-1.3.0-pyhd8ed1ab_1.conda @@ -1809,40 +1809,40 @@ packages: - pkg:pypi/markupsafe?source=hash-mapping size: 24976 timestamp: 1733219849253 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022718-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022805-release.conda noarch: python - sha256: f3dcb14fed5470c0fc521542cbd2f1c56ca7e46d560f46176b8f926198cb3cbd - md5: 01fe5e0cf46c84a6345e323ad1316764 + sha256: 6fe952db050b07af9045ee094df2241255d72ee0bca5663edfd2ce1c9752ec09 + md5: 8e5bdfbc3312e58ca7af7e74b4c1a62a depends: - - max-core ==25.2.0.dev2025022718 release - - max-python ==25.2.0.dev2025022718 release - - mojo-jupyter ==25.2.0.dev2025022718 release - - mblack ==25.2.0.dev2025022718 release + - max-core ==25.2.0.dev2025022805 release + - max-python ==25.2.0.dev2025022805 release + - mojo-jupyter ==25.2.0.dev2025022805 release + - mblack ==25.2.0.dev2025022805 release license: LicenseRef-Modular-Proprietary - size: 9905 - timestamp: 1740680254354 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022718-release.conda - sha256: 847d5767109a305d7bcad4ac29248a74a384034692934a0c54b00a590c27094a - md5: fc5a9ae36c7805979bd58ca55a25066f + size: 9906 + timestamp: 1740719805201 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022805-release.conda + sha256: a507f8b798257c4505a296fd1d7900bcc9695b5eaa5990d5a447f588e203ffb7 + md5: 53a62d22b682cdf446cfcbb5e07a0b4d depends: - - mblack ==25.2.0.dev2025022718 release + - mblack ==25.2.0.dev2025022805 release license: LicenseRef-Modular-Proprietary - size: 249811868 - timestamp: 1740680254354 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022718-release.conda - sha256: fb28d9e61aa507ea84b470082d3dc96844a24fe672d4e4c57e832655c5d0a202 - md5: dd8734453f7276a258f3351cc5c506c3 + size: 249837097 + timestamp: 1740719822740 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022805-release.conda + sha256: eb316eef88826b46d84532c0cfcde6d56a875aafcfe08d140cd6b90d752f8841 + md5: efed274ef0a65e98815933cfb8b609d2 depends: - - mblack ==25.2.0.dev2025022718 release + - mblack ==25.2.0.dev2025022805 release license: LicenseRef-Modular-Proprietary - size: 217273450 - timestamp: 1740681819160 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022718-release.conda + size: 217300178 + timestamp: 1740721042829 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022805-release.conda noarch: python - sha256: 831b4d62f66f0083321121c6ba25dedab3ee41d5e9f19d9752969592214af398 - md5: f828ace91aa057e4774e84ad459adccf + sha256: 1724ba61123d73c5ae9194dddcaf61e7937123cbd49d0fb122fc78cee0673e6d + md5: 35a33686fe8cccc768034d43f604e672 depends: - - max-core ==25.2.0.dev2025022718 release + - max-core ==25.2.0.dev2025022805 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1857,7 +1857,7 @@ packages: - nvitop >=1.4.1 - opentelemetry-api >=1.29.0 - opentelemetry-exporter-otlp-proto-http >=1.27.0 - - opentelemetry-exporter-prometheus <1.0.0 + - opentelemetry-exporter-prometheus >=0.48b0,<1.1.12.0rc1 - opentelemetry-sdk >=1.29.0,<2.0 - pillow >=10.3.0 - prometheus_client >=0.21.0 @@ -1879,14 +1879,14 @@ packages: - uvloop >=0.21.0 - xgrammar ==0.1.11 license: LicenseRef-Modular-Proprietary - size: 123584411 - timestamp: 1740680254354 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022718-release.conda + size: 123624528 + timestamp: 1740719822740 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022805-release.conda noarch: python - sha256: 7da9f4655082bb64c2b0cc996ffefa0ce5c49744854ed77a9b0d000e27cf5a55 - md5: b16d498a148aa61dca2a6bfec5cb8e46 + sha256: c56d9f6edeb5caa166d74eefca5d472556e29b4a22a4a7e799ff9f9482af0a62 + md5: c684a1ac57d5ca9a82884bffff428154 depends: - - max-core ==25.2.0.dev2025022718 release + - max-core ==25.2.0.dev2025022805 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1901,7 +1901,7 @@ packages: - nvitop >=1.4.1 - opentelemetry-api >=1.29.0 - opentelemetry-exporter-otlp-proto-http >=1.27.0 - - opentelemetry-exporter-prometheus <1.0.0 + - opentelemetry-exporter-prometheus >=0.48b0,<1.1.12.0rc1 - opentelemetry-sdk >=1.29.0,<2.0 - pillow >=10.3.0 - prometheus_client >=0.21.0 @@ -1923,12 +1923,12 @@ packages: - uvloop >=0.21.0 - xgrammar ==0.1.11 license: LicenseRef-Modular-Proprietary - size: 112658409 - timestamp: 1740681819160 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022718-release.conda + size: 112656033 + timestamp: 1740721042829 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022805-release.conda noarch: python - sha256: ff042a8abfed0e2e36b207e3d4f59a2b4577dea7f099b08d1aaef128ab796f09 - md5: 719ca7123d53415adcdd7f0cb8396c51 + sha256: 8d5cc0e599b2ceecc816efe63442c4295304ae7b3016b42399097de4dbcf1769 + md5: 49a934446d5d99e86689f4373ecfe4c4 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -1940,7 +1940,7 @@ packages: - python license: MIT size: 130852 - timestamp: 1740680254353 + timestamp: 1740719805200 - conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-2022.1.0-h84fe81f_915.tar.bz2 sha256: 767318c4f2057822a7ebc238d6065ce12c6ae60df4ab892758adb79b1057ce02 md5: b9c8f925797a93dbff45e1626b025a6b @@ -1979,18 +1979,18 @@ packages: purls: [] size: 762563 timestamp: 1652946186347 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022718-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022805-release.conda noarch: python - sha256: 19c33e23b27e240fee0b2a1d56921802ac88558dc2da417837cd590175561e16 - md5: 6b8d00b15817db11e026f824f7f0ba14 + sha256: d0b2f5c55bb0baea04e0a76469a0106ef60ba50e13f305b653fefb4903b9da60 + md5: 5f877a177817719dfa2b616176dbc409 depends: - - max-core ==25.2.0.dev2025022718 release + - max-core ==25.2.0.dev2025022805 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22981 - timestamp: 1740680254354 + size: 22994 + timestamp: 1740719805201 - conda: https://conda.anaconda.org/conda-forge/linux-64/mpc-1.3.1-h24ddda3_1.conda sha256: 1bf794ddf2c8b3a3e14ae182577c624fa92dea975537accff4bc7e5fea085212 md5: aa14b9a5196a6d8dd364164b7ce56acf diff --git a/tutorials/max-graph-api/magic.lock b/tutorials/max-graph-api/magic.lock index 842de2d2f9..dd772b0a5b 100644 --- a/tutorials/max-graph-api/magic.lock +++ b/tutorials/max-graph-api/magic.lock @@ -160,14 +160,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/llvm-openmp-15.0.7-h0cdce71_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.10.0-h5888daf_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-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022805-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-2022.1.0-h84fe81f_915.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-devel-2022.1.0-ha770c72_916.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-include-2022.1.0-h84fe81f_915.tar.bz2 - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022805-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/mpc-1.3.1-h24ddda3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/mpfr-4.2.1-h90cbb55_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/mpg123-1.32.9-hc50e24c_0.conda @@ -292,11 +292,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-15.0.7-h7cfbb63_0.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-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022718-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022718-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022805-release.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/mpc-1.3.1-h8f1351a_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/mpfr-4.2.1-hb693164_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mpmath-1.3.0-pyhd8ed1ab_1.conda @@ -2851,40 +2851,40 @@ packages: license_family: BSD size: 24048 timestamp: 1733219945697 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022718-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022805-release.conda noarch: python - sha256: f3dcb14fed5470c0fc521542cbd2f1c56ca7e46d560f46176b8f926198cb3cbd - md5: 01fe5e0cf46c84a6345e323ad1316764 + sha256: 6fe952db050b07af9045ee094df2241255d72ee0bca5663edfd2ce1c9752ec09 + md5: 8e5bdfbc3312e58ca7af7e74b4c1a62a depends: - - max-core ==25.2.0.dev2025022718 release - - max-python ==25.2.0.dev2025022718 release - - mojo-jupyter ==25.2.0.dev2025022718 release - - mblack ==25.2.0.dev2025022718 release + - max-core ==25.2.0.dev2025022805 release + - max-python ==25.2.0.dev2025022805 release + - mojo-jupyter ==25.2.0.dev2025022805 release + - mblack ==25.2.0.dev2025022805 release license: LicenseRef-Modular-Proprietary - size: 9905 - timestamp: 1740680254354 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022718-release.conda - sha256: 847d5767109a305d7bcad4ac29248a74a384034692934a0c54b00a590c27094a - md5: fc5a9ae36c7805979bd58ca55a25066f + size: 9906 + timestamp: 1740719805201 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022805-release.conda + sha256: a507f8b798257c4505a296fd1d7900bcc9695b5eaa5990d5a447f588e203ffb7 + md5: 53a62d22b682cdf446cfcbb5e07a0b4d depends: - - mblack ==25.2.0.dev2025022718 release + - mblack ==25.2.0.dev2025022805 release license: LicenseRef-Modular-Proprietary - size: 249811868 - timestamp: 1740680254354 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022718-release.conda - sha256: fb28d9e61aa507ea84b470082d3dc96844a24fe672d4e4c57e832655c5d0a202 - md5: dd8734453f7276a258f3351cc5c506c3 + size: 249837097 + timestamp: 1740719822740 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022805-release.conda + sha256: eb316eef88826b46d84532c0cfcde6d56a875aafcfe08d140cd6b90d752f8841 + md5: efed274ef0a65e98815933cfb8b609d2 depends: - - mblack ==25.2.0.dev2025022718 release + - mblack ==25.2.0.dev2025022805 release license: LicenseRef-Modular-Proprietary - size: 217273450 - timestamp: 1740681819160 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022718-release.conda + size: 217300178 + timestamp: 1740721042829 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022805-release.conda noarch: python - sha256: 831b4d62f66f0083321121c6ba25dedab3ee41d5e9f19d9752969592214af398 - md5: f828ace91aa057e4774e84ad459adccf + sha256: 1724ba61123d73c5ae9194dddcaf61e7937123cbd49d0fb122fc78cee0673e6d + md5: 35a33686fe8cccc768034d43f604e672 depends: - - max-core ==25.2.0.dev2025022718 release + - max-core ==25.2.0.dev2025022805 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -2899,7 +2899,7 @@ packages: - nvitop >=1.4.1 - opentelemetry-api >=1.29.0 - opentelemetry-exporter-otlp-proto-http >=1.27.0 - - opentelemetry-exporter-prometheus <1.0.0 + - opentelemetry-exporter-prometheus >=0.48b0,<1.1.12.0rc1 - opentelemetry-sdk >=1.29.0,<2.0 - pillow >=10.3.0 - prometheus_client >=0.21.0 @@ -2921,14 +2921,14 @@ packages: - uvloop >=0.21.0 - xgrammar ==0.1.11 license: LicenseRef-Modular-Proprietary - size: 123584411 - timestamp: 1740680254354 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022718-release.conda + size: 123624528 + timestamp: 1740719822740 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022805-release.conda noarch: python - sha256: 7da9f4655082bb64c2b0cc996ffefa0ce5c49744854ed77a9b0d000e27cf5a55 - md5: b16d498a148aa61dca2a6bfec5cb8e46 + sha256: c56d9f6edeb5caa166d74eefca5d472556e29b4a22a4a7e799ff9f9482af0a62 + md5: c684a1ac57d5ca9a82884bffff428154 depends: - - max-core ==25.2.0.dev2025022718 release + - max-core ==25.2.0.dev2025022805 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -2943,7 +2943,7 @@ packages: - nvitop >=1.4.1 - opentelemetry-api >=1.29.0 - opentelemetry-exporter-otlp-proto-http >=1.27.0 - - opentelemetry-exporter-prometheus <1.0.0 + - opentelemetry-exporter-prometheus >=0.48b0,<1.1.12.0rc1 - opentelemetry-sdk >=1.29.0,<2.0 - pillow >=10.3.0 - prometheus_client >=0.21.0 @@ -2965,12 +2965,12 @@ packages: - uvloop >=0.21.0 - xgrammar ==0.1.11 license: LicenseRef-Modular-Proprietary - size: 112658409 - timestamp: 1740681819160 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022718-release.conda + size: 112656033 + timestamp: 1740721042829 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022805-release.conda noarch: python - sha256: ff042a8abfed0e2e36b207e3d4f59a2b4577dea7f099b08d1aaef128ab796f09 - md5: 719ca7123d53415adcdd7f0cb8396c51 + sha256: 8d5cc0e599b2ceecc816efe63442c4295304ae7b3016b42399097de4dbcf1769 + md5: 49a934446d5d99e86689f4373ecfe4c4 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -2982,7 +2982,7 @@ packages: - python license: MIT size: 130852 - timestamp: 1740680254353 + timestamp: 1740719805200 - conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-2022.1.0-h84fe81f_915.tar.bz2 sha256: 767318c4f2057822a7ebc238d6065ce12c6ae60df4ab892758adb79b1057ce02 md5: b9c8f925797a93dbff45e1626b025a6b @@ -3018,18 +3018,18 @@ packages: license_family: Proprietary size: 762563 timestamp: 1652946186347 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022718-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022805-release.conda noarch: python - sha256: 19c33e23b27e240fee0b2a1d56921802ac88558dc2da417837cd590175561e16 - md5: 6b8d00b15817db11e026f824f7f0ba14 + sha256: d0b2f5c55bb0baea04e0a76469a0106ef60ba50e13f305b653fefb4903b9da60 + md5: 5f877a177817719dfa2b616176dbc409 depends: - - max-core ==25.2.0.dev2025022718 release + - max-core ==25.2.0.dev2025022805 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22981 - timestamp: 1740680254354 + size: 22994 + timestamp: 1740719805201 - conda: https://conda.anaconda.org/conda-forge/linux-64/mpc-1.3.1-h24ddda3_1.conda sha256: 1bf794ddf2c8b3a3e14ae182577c624fa92dea975537accff4bc7e5fea085212 md5: aa14b9a5196a6d8dd364164b7ce56acf